diff -Nrcpad gcc-7.3.0/ChangeLog gcc-8.1.0/ChangeLog
*** gcc-7.3.0/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-8.1.0/ChangeLog	Wed May  2 08:07:22 2018
***************
*** 1,14 ****
! 2018-01-25  Release Manager
  
! 	* GCC 7.3.0 released.
  
! 2017-08-14  Release Manager
  
! 	* GCC 7.2.0 released.
  
! 2017-05-02  Release Manager
  
! 	* GCC 7.1.0 released.
  
  2017-04-19  Thomas Koenig  <tkoenig@gcc.gnu.org>
  	Tobias Burnus  <tobias.burnus@physik.fu-berlin.de>
--- 1,313 ----
! 2018-05-02  Release Manager
  
! 	* GCC 8.1.0 released.
  
! 2018-04-18  Paul Clarke  <pc@us.ibm.com>
  
! 	* MAINTAINERS (write after approval): Add myself.
  
! 2018-04-10  Aaron Sawdey  <acsawdey@linux.ibm.com>
  
! 	* MAINTAINERS: Update my email address.
! 
! 2018-04-02  Bill Schmidt  <wschmidt@linux.ibm.com>
! 
! 	* MAINTAINERS: Remove redundant Write-After-Approval entry.
! 
! 2018-03-30  Bill Schmidt  <wschmidt@linux.ibm.com>
! 
! 	* MAINTAINERS: Update my email address and disambiguate myself
! 	a bit from Will Schmidt.
! 
! 2018-03-21  Nathan Sidwell  <nathan@acm.org>
! 
! 	* MAINTAINERS: Move maintainers of now-removed picochip and score
! 	ports to write after approval.
! 
! 2018-03-13  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	* MAINTAINERS: Add entry for SVE maintainership.
! 
! 2018-02-13  Maciej W. Rozycki  <macro@mips.com>
! 
! 	* configure.ac <wasm32-*-*> (noconfigdirs): Add `ld'.
! 	* configure: Regenerate.
! 
! 2018-01-18  Boris Kolpackov  <boris@codesynthesis.com>
! 
! 	* MAINTAINERS (write after approval): Add myself.
! 
! 2018-01-18  Siddhesh Poyarekar  <siddhesh@sourceware.org>
! 
! 	* MAINTAINERS (write after approval): Add myself.
! 
! 2018-01-16  Sebastian Perta  <sebastian.perta@renesas.com>
! 
! 	* MAINTAINERS (write after approval): Add myself.
! 
! 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
! 
! 	Update copyright years.
! 
! 2018-01-03  Ben Elliston  <bje@gnu.org>
! 
! 	* config.guess: Import latest version.
! 	* config.sub: Likewise.
! 
! 2017-12-12  Stafford Horne  <shorne@gmail.com>
! 
! 	* configure.ac: Remove logic adding gdb to noconfigsdirs for or1k.
! 	* configure: Regenerate.
! 
! 2017-11-29  Qing Zhao  <qing.zhao@oracle.com>
! 
! 	* MAINTAINERS (Write After Approval): Add myself.
! 
! 2017-11-28  Julia Koval  <julia.koval@intel.com>
! 	    Sebastian Peryt  <sebastian.peryt@intel.com>
! 
! 	* Makefile.def (target_modules): Remove libcilkrts.
! 	* Makefile.in: Ditto.
! 	* configure: Ditto.
! 	* configure.ac: Ditto.
! 
! 2017-11-28  Julia Koval  <julia.koval@intel.com>
! 
! 	* MAINTAINERS (Write After Approval): Add myself.
! 
! 2017-11-22  Sudakshina Das  <sudi.das@arm.com>
! 
! 	* MAINTAINERS (Write After Approval): Add myself.
! 
! 2017-11-06  Palmer Dabbelt  <palmer@sifive.com>
! 
! 	* MAINTAINERS (RISC-V): Add Jim Wilson as a maintainer.
! 	Use my SiFive email address.
! 
! 2017-11-15  Sebastian Peryt  <sebastian.peryt@intel.com>
! 
! 	* MAINTAINERS (write after approval): Add myself.
! 
! 2017-10-27  Martin Liska  <mliska@suse.cz>
! 
! 	* Makefile.tpl: Use proper name of folder as it was renamed
! 	during transition to 4 stages.
! 	* Makefile.in: Regenerate.
! 
! 2017-10-16  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
! 
! 	* MAINTAINERS (write after approval): Add myself.
! 
! 2017-10-01  Gerald Pfeifer  <gerald@pfeifer.com>
! 
! 	* MAINTAINERS: Add a note that maintainership also includes web
! 	pages, docs, and testsuite related to that area.
! 
! 2017-09-25  Tom de Vries  <tom@codesourcery.com>
! 
! 	* MAINTAINERS (CPU Port Maintainers): Add myself as nvptx maintainer.
! 
! 2017-09-18  Pierre-Marie de Rodat  <derodat@adacore.com>
! 
! 	* MAINTAINERS: Add myself as a maintainer for the Ada front end.
! 
! 2017-09-15  Nathan Sidwell  <nathan@acm.org>
! 
! 	* MAINTAINERS: Remove myself as a vxworks maintainer.
! 
! 2017-09-13  Thomas Schwinge  <thomas@codesourcery.com>
! 
! 	* MAINTAINERS: Remove email address of Jim Norris.
! 
! 2017-09-11  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
! 
! 	* MAINTAINERS (Reviewers): Move myself from here...
! 	(CPU Port Maintainers): ... to here.
! 
! 2017-09-09  James Greenhalgh  <james.greenhalgh@arm.com>
! 
! 	* MAINTAINERS (James Greenhalgh): Move to AArch64 maintainers.
! 
! 2017-07-31  Robin Dapp  <rdapp@linux.vnet.ibm.com>
! 
! 	* MAINTAINERS (write after approval): Add myself.
! 
! 2017-07-28  Tony Reix  <tony.reix@atos.net>
! 
! 	* configure.ac (target-libffi): Don't disable for AIX.
! 	(go): Don't add to unsupported_languages on AIX.
! 	(target-libgo): Don't disable for AIX.
! 	* configure: Regenerate.
! 
! 2017-07-19  Yury Gribov  <tetra2005@gmail.com>
! 
! 	* MAINTAINERS: Add myself.
! 
! 2017-07-18  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
! 
! 	* MAINTAINERS: Update my email address.
! 
! 2017-07-04  Richard Earnshaw  <rearnsha@arm.com>
! 
! 	* contrib/gcc_update (files_and_dependencies): Remove stamp rules for
! 	arm-specific auto-generated header files.
! 
! 2017-07-03  Nathan Sidwell  <nathan@acm.org>
! 
! 	* configure.ac: Set srcdir when sourcing config-lang.in fragments.
! 	* configure: Rebuilt.
! 
! 2017-07-03  Bernd Schmidt  <bschmidt@redhat.com>
! 
! 	* MAINTAINERS: Readd myself for c6x.
! 
! 2017-06-28  Martin Liska  <mliska@suse.cz>
! 
! 	PR bootstrap/81217
! 	* Makefile.def: Remove superfluous bootstrap_target from
! 	bootstrap_stage.
! 	* Makefile.in: Re-generate the file.
! 
! 2017-06-26  Maxim Ostapenko  <m.ostapenko@samsung.com>
! 
! 	* MAINTAINERS: Add myself to Write After Approval
! 
! 2017-06-21  Andrew Jenner  <andrew@codesourcery.com>
! 
! 	* MAINTAINERS: Add myself as maintainer for PowerPC SPE port.
! 
! 2017-06-19  Martin Liska  <mliska@suse.cz>
! 
! 	* Makefile.def: Define 4 stages PGO bootstrap.
! 	* Makefile.tpl: Define FLAGS.
! 	* Makefile.in: Regenerate.
! 
! 2017-06-14  Ian Lance Taylor  <iant@golang.org>
! 
! 	* Makefile.def: Add check-gotools to go check targets.
! 	* Makefile.in: Rebuild.
! 
! 2017-06-12  Segher Boessenkool  <segher@kernel.crashing.org>
! 
! 	* config.gcc: Remove rs6000/e500.h from tm_file for all targets.
! 
! 2017-06-03  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* configure.ac (*-*-linux-android*): Set target_makefile_frag.
! 	* configure: Regenerate.
! 
! 2017-05-31  Martin Liska  <mliska@suse.cz>
! 
! 	* configure.ac: Add handling of stage2_werror_flags to
! 	action-if-given and to action-if-not-given.
! 	* configure: Regenerate.
! 
! 2017-05-31  Prakhar Bahuguna  <prakhar.bahuguna@arm.com>
! 
! 	* MAINTAINERS: Add self to Write After Approval
! 
! 2017-05-27  Bernd Schmidt  <bschmidt@redhat.com>
! 
! 	* MAINTAINERS: Update my email address, and remove myself as
! 	maintainer in some areas.
! 
! 2017-05-25  Eric Gallager  <egall@gwmail.gwu.edu>
! 
! 	* MAINTAINERS: Add self to Write After Approval
! 
! 2017-05-25  Nathan Sidwell  <nathan@acm.org>
! 
! 	* configure.ac: Add --enable-languages=default to mean default and
! 	make --enable-languages=all mean all supported languages.
! 	* configure: Regenerated.
! 
! 2017-05-24  Segher Boessenkool  <segher@kernel.crashing.org>
! 
! 	* config.gcc (powerpc*-*-*spe*): New.
! 	(powerpc-*-eabispe*): Use ${cpu_type} instead of hardcoded pathnames.
! 	(powerpc-*-rtems*spe*): New.
! 	(powerpc*-*-linux*spe*): New.
! 	(powerpc-wrs-vxworksspe): New.
! 	(powerpc*-*-*, rs6000-*-*): Use ${cpu_type}.
! 	(misc flags) [powerpc*-*-*, rs6000-*-*): Use ${cpu_type}.
! 	* config.host (powerpc*-*-*spe*): New.
! 
! 2017-05-19  Martin Liska  <mliska@suse.cz>
! 
! 	* configure.ac: Add --enable-werror-always just for
! 	bootstrap-debug (or none build config) and do not add it
! 	when we are on a release branch.
! 	* configure: Regenerated.
! 
! 2017-05-18  Sheldon Lobo  <sheldon.lobo@oracle.com>
! 
! 	* MAINTAINERS: Add self to Write After Approval
! 
! 2017-05-09  Kaz Kojima  <kkojima@gcc.gnu.org>
! 
! 	* MAINTAINERS: Move myself to Write After Approval section.
! 
! 2017-05-09  Claudiu Zissulescu  <claziss@synopsys.com>
! 
! 	* config/arc/arc.c (arc_conditional_register_usage): Handle ACCL,
! 	ACCH registers.
! 	* config/arc/arc.md (mulsidi3): Use advanced mpy instructions when
! 	available.
! 	(umulsidi3): Likewise.
! 	(mulsidi3_700): Disable this pattern when we have advanced mpy
! 	instructions.
! 	(umulsidi3_700): Likewise.
! 	(maddsidi4): New pattern.
! 	(macd, mac, mac_r, umaddsidi4, macdu, macu, macu_r): Likewise.
! 	(mpyd_arcv2hs, mpyd_imm_arcv2hs, mpydu_arcv2hs): Likewise.
! 	(mpydu_imm_arcv2hs): Likewise.
! 	* config/arc/predicates.md (accl_operand): New predicate.
! 
! 2017-05-09  Claudiu Zissulescu  <claziss@synopsys.com>
! 	    Andrew Burgess <andrew.burgess@embecosm.com>
! 
! 	* config/arc/arc.c (ARC_AUTOBLINK_IRQ_P): Consider fast interrupts
! 	case.
! 	(ARC_AUTOFP_IRQ_P): Likewise.
! 	(ARC_AUTO_IRQ_P): Likewise.
! 	(rgf_banked_register_count): New variable.
! 	(parse_mrgf_banked_regs_option): New function.
! 	(arc_override_options): Handle rgf_banked_regs option.
! 	(arc_handle_interrupt_attribute): Add firq option.
! 	(arc_compute_function_type): Return fast irq type when required.
! 	(arc_must_save_register): Handle fast interrupts.
! 	(arc_expand_prologue): Do not emit dwarf info for fast interrupts.
! 	(arc_return_address_regs): Update.
! 	* config/arc/arc.h (arc_return_address_regs): Update.
! 	(arc_function_type): Add fast interrupt type.
! 	(ARC_INTERRUPT_P): Update.
! 	(RC_FAST_INTERRUPT_P): Define.
! 	* config/arc/arc.md (simple_return): Update for fast interrupts.
! 	(p_return_i): Likewise.
! 	* config/arc/arc.opt (mrgf-banked-regs): New option.
! 	* doc/invoke.texi (mrgf-banked-regs): Document.
! 
! 2017-05-09  Claudiu Zissulescu  <claziss@synopsys.com>
! 
! 	* config/arc/arc.c (irq_ctrl_saved): New variable.
! 	(ARC_AUTOBLINK_IRQ_P): Define.
! 	(ARC_AUTOFP_IRQ_P): Likewise.
! 	(ARC_AUTO_IRQ_P): Likewise.
! 	(irq_range): New function.
! 	(arc_must_save_register): Likewise.
! 	(arc_must_save_return_addr): Likewise.
! 	(arc_dwarf_emit_irq_save_regs): Likewise.
! 	(arc_override_options): Handle deferred options.
! 	(MUST_SAVE_REGISTER): Deleted, replaced by arc_must_save_register.
! 	(MUST_SAVE_RETURN_ADDR): Deleted, replaced by
! 	arc_must_save_return_addr.
! 	(arc_compute_frame_size): Handle automated save and restore of
! 	registers.
! 	(arc_expand_prologue): Likewise.
! 	(arc_expand_epilogue): Likewise.
! 	* config/arc/arc.md (stack_irq_dwarf): New unspec instruction.
! 	* config/arc/arc.opt (mirq-ctrl-saved): New option.
! 	* doc/invoke.texi (mirq-ctrl-saved): Document option.
  
  2017-04-19  Thomas Koenig  <tkoenig@gcc.gnu.org>
  	Tobias Burnus  <tobias.burnus@physik.fu-berlin.de>
***************
*** 73,81 ****
  
  2017-02-03  John David Anglin  <danglin@gcc.gnu.org>
  
!         * configure.ac: Add gcc/function-tests.o to compare_exclusions for
  	32-bit hppa*-*-hpux*.
!         * configure: Regenerate.
  
  2017-01-27  Pekka Jääskeläinen  <pekka.jaaskelainen@parmance.com>
  
--- 372,380 ----
  
  2017-02-03  John David Anglin  <danglin@gcc.gnu.org>
  
! 	* configure.ac: Add gcc/function-tests.o to compare_exclusions for
  	32-bit hppa*-*-hpux*.
! 	* configure: Regenerate.
  
  2017-01-27  Pekka Jääskeläinen  <pekka.jaaskelainen@parmance.com>
  
diff -Nrcpad gcc-7.3.0/INSTALL/binaries.html gcc-8.1.0/INSTALL/binaries.html
*** gcc-7.3.0/INSTALL/binaries.html	Thu Jan 25 08:17:55 2018
--- gcc-8.1.0/INSTALL/binaries.html	Wed May  2 08:20:01 2018
***************
*** 1,98 ****
! <html lang="en">
! <head>
! <title>Installing GCC: Binaries</title>
! <meta http-equiv="Content-Type" content="text/html">
! <meta name="description" content="Installing GCC: Binaries">
! <meta name="generator" content="makeinfo 4.13">
! <link title="Top" rel="top" href="#Top">
! <link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
! <!--
! Copyright (C) 1988-2017 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
  any later version published by the Free Software Foundation; with no
  Invariant Sections, the Front-Cover texts being (a) (see below), and
  with the Back-Cover Texts being (b) (see below).  A copy of the
! license is included in the section entitled "GNU Free Documentation License".
  
  (a) The FSF's Front-Cover Text is:
  
!      A GNU Manual
  
  (b) The FSF's Back-Cover Text is:
  
!      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.-->
! <meta http-equiv="Content-Style-Type" content="text/css">
! <style type="text/css"><!--
!   pre.display { font-family:inherit }
!   pre.format  { font-family:inherit }
!   pre.smalldisplay { font-family:inherit; font-size:smaller }
!   pre.smallformat  { font-family:inherit; font-size:smaller }
!   pre.smallexample { font-size:smaller }
!   pre.smalllisp    { font-size:smaller }
!   span.sc    { font-variant:small-caps }
!   span.roman { font-family:serif; font-weight:normal; } 
!   span.sansserif { font-family:sans-serif; font-weight:normal; } 
! --></style>
  </head>
! <body>
! <h1 class="settitle">Installing GCC: Binaries</h1>
! <a name="index-Binaries-1"></a><a name="index-Installing-GCC_003a-Binaries-2"></a>
! We are often asked about pre-compiled versions of GCC.  While we cannot
! provide these for all platforms, below you'll find links to binaries for
  various platforms where creating them by yourself is not easy due to various
  reasons.
! 
!    <p>Please note that we did not create these binaries, nor do we
  support them.  If you have any problems installing them, please
  contact their makers.
  
!      <ul>
! <li>AIX:
!           <ul>
! <li><a href="http://www.bullfreeware.com">Bull's Open Source Software Archive for for AIX 5L and AIX 6</a>;
  
!           <li><a href="http://www.perzl.org/aix/">AIX Open Source Packages (AIX5L AIX 6.1 AIX 7.1)</a>. 
! </ul>
  
!      <li>DOS&mdash;<a href="http://www.delorie.com/djgpp/">DJGPP</a>.
  
!      <li>HP-UX:
!           <ul>
! <li><a href="http://hpux.connect.org.uk/">HP-UX Porting Center</a>;
! </ul>
  
!      <li>Solaris 2 (SPARC, Intel):
!           <ul>
! <li><a href="https://www.opencsw.org/">OpenCSW</a>
  
!           <li><a href="http://jupiterrise.com/tgcware/">TGCware</a>
! </ul>
  
!      <li>Microsoft Windows:
!           <ul>
! <li>The <a href="https://sourceware.org/cygwin/">Cygwin</a> project;
! <li>The <a href="http://www.mingw.org/">MinGW</a> and
! <a href="http://mingw-w64.org/doku.php">mingw-w64</a> projects. 
! </ul>
  
!      <li><a href="http://www.openpkg.org/">OpenPKG</a> offers binaries for quite a
  number of platforms.
  
!      <li>The <a href="http://gcc.gnu.org/wiki/GFortranBinaries">GFortran Wiki</a> has
! links to GNU Fortran binaries for several platforms. 
! </ul>
  
!    <p><hr />
  <p><a href="./index.html">Return to the GCC Installation page</a>
  
- <!-- ***Specific**************************************************************** -->
- <!-- ***Old documentation****************************************************** -->
- <!-- ***GFDL******************************************************************** -->
- <!-- *************************************************************************** -->
- <!-- Part 6 The End of the Document -->
- </body></html>
  
--- 1,156 ----
! <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
! <html>
! <!-- Copyright (C) 1988-2018 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
  any later version published by the Free Software Foundation; with no
  Invariant Sections, the Front-Cover texts being (a) (see below), and
  with the Back-Cover Texts being (b) (see below).  A copy of the
! license is included in the section entitled "GNU
! Free Documentation License".
  
  (a) The FSF's Front-Cover Text is:
  
! A GNU Manual
  
  (b) The FSF's Back-Cover Text is:
  
! 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.4, http://www.gnu.org/software/texinfo/ -->
! <head>
! <title>Installing GCC</title>
! 
! <meta name="description" content="Installing GCC">
! <meta name="keywords" content="Installing GCC">
! <meta name="resource-type" content="document">
! <meta name="distribution" content="global">
! <meta name="Generator" content="makeinfo">
! <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
! <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>
! 
! 
  </head>
! 
! <body lang="en">
! <h1 class="settitle" align="center">Installing GCC</h1>
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! <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
  various platforms where creating them by yourself is not easy due to various
  reasons.
! </p>
! <p>Please note that we did not create these binaries, nor do we
  support them.  If you have any problems installing them, please
  contact their makers.
+ </p>
+ <ul>
+ <li> AIX:
+ <ul>
+ <li> <a href="http://www.bullfreeware.com">Bull&rsquo;s Open Source Software Archive for
+ for AIX 5L and AIX 6</a>;
  
! </li><li> <a href="http://www.perzl.org/aix/">AIX Open Source Packages (AIX5L AIX 6.1
! AIX 7.1)</a>.
! </li></ul>
  
! </li><li> DOS&mdash;<a href="http://www.delorie.com/djgpp/">DJGPP</a>.
  
! </li><li> HP-UX:
! <ul>
! <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><li> <a href="http://jupiterrise.com/tgcware/">TGCware</a>
! </li></ul>
  
! </li><li> macOS:
! <ul>
! <li> The <a href="https://brew.sh">Homebrew</a> package manager;
! </li><li> <a href="https://www.macports.org">MacPorts</a>.
! </li></ul>
  
! </li><li> Microsoft Windows:
! <ul>
! <li> The <a href="https://sourceware.org/cygwin/">Cygwin</a> project;
! </li><li> The <a href="http://www.mingw.org/">MinGW</a> and
! <a href="http://mingw-w64.org/doku.php">mingw-w64</a> projects.
! </li></ul>
  
! </li><li> <a href="http://www.openpkg.org/">OpenPKG</a> offers binaries for quite a
  number of platforms.
  
! </li><li> The <a href="http://gcc.gnu.org/wiki/GFortranBinaries">GFortran Wiki</a> has
! links to GNU Fortran binaries for several platforms.
! </li></ul>
  
! <hr />
! <p>
  <p><a href="./index.html">Return to the GCC Installation page</a>
+ </p>
+ 
  
  
+ 
+ 
+ 
+ 
+ </body>
+ </html>
diff -Nrcpad gcc-7.3.0/INSTALL/build.html gcc-8.1.0/INSTALL/build.html
*** gcc-7.3.0/INSTALL/build.html	Thu Jan 25 08:17:55 2018
--- gcc-8.1.0/INSTALL/build.html	Wed May  2 08:20:01 2018
***************
*** 1,389 ****
! <html lang="en">
! <head>
! <title>Installing GCC: Building</title>
! <meta http-equiv="Content-Type" content="text/html">
! <meta name="description" content="Installing GCC: Building">
! <meta name="generator" content="makeinfo 4.13">
! <link title="Top" rel="top" href="#Top">
! <link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
! <!--
! Copyright (C) 1988-2017 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
  any later version published by the Free Software Foundation; with no
  Invariant Sections, the Front-Cover texts being (a) (see below), and
  with the Back-Cover Texts being (b) (see below).  A copy of the
! license is included in the section entitled "GNU Free Documentation License".
  
  (a) The FSF's Front-Cover Text is:
  
!      A GNU Manual
  
  (b) The FSF's Back-Cover Text is:
  
!      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.-->
! <meta http-equiv="Content-Style-Type" content="text/css">
! <style type="text/css"><!--
!   pre.display { font-family:inherit }
!   pre.format  { font-family:inherit }
!   pre.smalldisplay { font-family:inherit; font-size:smaller }
!   pre.smallformat  { font-family:inherit; font-size:smaller }
!   pre.smallexample { font-size:smaller }
!   pre.smalllisp    { font-size:smaller }
!   span.sc    { font-variant:small-caps }
!   span.roman { font-family:serif; font-weight:normal; } 
!   span.sansserif { font-family:sans-serif; font-weight:normal; } 
! --></style>
  </head>
- <body>
- <h1 class="settitle">Installing GCC: Building</h1>
- <a name="index-Installing-GCC_003a-Building-1"></a>
- Now that GCC is configured, you are ready to build the compiler and
- runtime libraries.
  
!    <p>Some commands executed when making the compiler may fail (return a
! nonzero status) and be ignored by <samp><span class="command">make</span></samp>.  These failures, which
  are often due to files that were not found, are expected, and can safely
  be ignored.
! 
!    <p>It is normal to have compiler warnings when compiling certain files. 
  Unless you are a GCC developer, you can generally ignore these warnings
  unless they cause compilation to fail.  Developers should attempt to fix
  any warnings encountered, however they can temporarily continue past
  warnings-as-errors by specifying the configure flag
! <samp><span class="option">--disable-werror</span></samp>.
! 
!    <p>On certain old systems, defining certain environment variables such as
! <samp><span class="env">CC</span></samp> can interfere with the functioning of <samp><span class="command">make</span></samp>.
! 
!    <p>If you encounter seemingly strange errors when trying to build the
  compiler in a directory other than the source directory, it could be
  because you have previously configured the compiler in the source
  directory.  Make sure you have done all the necessary preparations.
! 
!    <p>If you build GCC on a BSD system using a directory stored in an old System
! V file system, problems may occur in running <samp><span class="command">fixincludes</span></samp> if the
! System V file system doesn't support symbolic links.  These problems
  result in a failure to fix the declaration of <code>size_t</code> in
! <samp><span class="file">sys/types.h</span></samp>.  If you find that <code>size_t</code> is a signed type and
  that type mismatches occur, this could be the cause.
! 
!    <p>The solution is not to use such a directory for building GCC.
! 
!    <p>Similarly, when building from SVN or snapshots, or if you modify
! <samp><span class="file">*.l</span></samp> files, you need the Flex lexical analyzer generator
! installed.  If you do not modify <samp><span class="file">*.l</span></samp> files, releases contain
  the Flex-generated files and you do not need Flex installed to build
  them.  There is still one Flex-based lexical analyzer (part of the
  build machinery, not of GCC itself) that is used even if you only
  build the C front end.
! 
!    <p>When building from SVN or snapshots, or if you modify Texinfo
  documentation, you need version 4.7 or later of Texinfo installed if you
  want Info documentation to be regenerated.  Releases contain Info
  documentation pre-built for the unmodified documentation in the release.
! 
! <h3 class="section"><a name="TOC0"></a>Building a native compiler</h3>
  
  <p>For a native build, the default configuration is to perform
! a 3-stage bootstrap of the compiler when &lsquo;<samp><span class="samp">make</span></samp>&rsquo; is invoked. 
  This will build the entire GCC system and ensure that it compiles
! itself correctly.  It can be disabled with the <samp><span class="option">--disable-bootstrap</span></samp>
! parameter to &lsquo;<samp><span class="samp">configure</span></samp>&rsquo;, but bootstrapping is suggested because
  the compiler will be tested more completely and could also have
  better performance.
  
!    <p>The bootstrapping process will complete the following steps:
! 
!      <ul>
! <li>Build tools necessary to build the compiler.
! 
!      <li>Perform a 3-stage bootstrap of the compiler.  This includes building
  three times the target tools for use by the compiler such as binutils
  (bfd, binutils, gas, gprof, ld, and opcodes) if they have been
  individually linked or moved into the top level GCC source tree before
  configuring.
  
!      <li>Perform a comparison test of the stage2 and stage3 compilers.
  
!      <li>Build runtime libraries using the stage3 compiler from the previous step.
  
!    </ul>
  
!    <p>If you are short on disk space you might consider &lsquo;<samp><span class="samp">make
! bootstrap-lean</span></samp>&rsquo; instead.  The sequence of compilation is the
  same described above, but object files from the stage1 and
  stage2 of the 3-stage bootstrap of the compiler are deleted as
  soon as they are no longer needed.
! 
!    <p>If you wish to use non-default GCC flags when compiling the stage2
  and stage3 compilers, set <code>BOOT_CFLAGS</code> on the command line when
! doing &lsquo;<samp><span class="samp">make</span></samp>&rsquo;.  For example, if you want to save additional space
  during the bootstrap and in the final installation as well, you can
  build the compiler binaries without debugging information as in the
  following example.  This will save roughly 40% of disk space both for
  the bootstrap and the final installation.  (Libraries will still contain
  debugging information.)
  
! <pre class="smallexample">     make BOOT_CFLAGS='-O' bootstrap
! </pre>
!    <p>You can place non-default optimization flags into <code>BOOT_CFLAGS</code>; they
! are less well tested here than the default of &lsquo;<samp><span class="samp">-g -O2</span></samp>&rsquo;, but should
  still work.  In a few cases, you may find that you need to specify special
! flags such as <samp><span class="option">-msoft-float</span></samp> here to complete the bootstrap; or,
  if the native compiler miscompiles the stage1 compiler, you may need
  to work around this, by choosing <code>BOOT_CFLAGS</code> to avoid the parts
! of the stage1 compiler that were miscompiled, or by using &lsquo;<samp><span class="samp">make
! bootstrap4</span></samp>&rsquo; to increase the number of stages of bootstrap.
! 
!    <p><code>BOOT_CFLAGS</code> does not apply to bootstrapped target libraries. 
  Since these are always compiled with the compiler currently being
  bootstrapped, you can use <code>CFLAGS_FOR_TARGET</code> to modify their
! compilation flags, as for non-bootstrapped target libraries. 
  Again, if the native compiler miscompiles the stage1 compiler, you may
  need to work around this by avoiding non-working parts of the stage1
  compiler.  Use <code>STAGE1_TFLAGS</code> to this end.
! 
!    <p>If you used the flag <samp><span class="option">--enable-languages=...</span></samp> to restrict
! the compilers to be built, only those you've actually enabled will be
  built.  This will of course only build those runtime libraries, for
  which the particular compiler has been built.  Please note,
! that re-defining <samp><span class="env">LANGUAGES</span></samp> when calling &lsquo;<samp><span class="samp">make</span></samp>&rsquo;
  <strong>does not</strong> work anymore!
! 
!    <p>If the comparison of stage2 and stage3 fails, this normally indicates
  that the stage2 compiler has compiled GCC incorrectly, and is therefore
  a potentially serious bug which you should investigate and report.  (On
  a few systems, meaningful comparison of object files is impossible; they
  always appear &ldquo;different&rdquo;.  If you encounter this problem, you will
! need to disable comparison in the <samp><span class="file">Makefile</span></samp>.)
! 
!    <p>If you do not want to bootstrap your compiler, you can configure with
! <samp><span class="option">--disable-bootstrap</span></samp>.  In particular cases, you may want to
  bootstrap your compiler even if the target system is not the same as
  the one you are building on: for example, you could build a
  <code>powerpc-unknown-linux-gnu</code> toolchain on a
  <code>powerpc64-unknown-linux-gnu</code> host.  In this case, pass
! <samp><span class="option">--enable-bootstrap</span></samp> to the configure script.
! 
!    <p><code>BUILD_CONFIG</code> can be used to bring in additional customization
! to the build.  It can be set to a whitespace-separated list of names. 
! For each such <code>NAME</code>, top-level <samp><span class="file">config/</span><code>NAME</code><span class="file">.mk</span></samp> will
! be included by the top-level <samp><span class="file">Makefile</span></samp>, bringing in any settings
  it contains.  The default <code>BUILD_CONFIG</code> can be set using the
! configure option <samp><span class="option">--with-build-config=</span><code>NAME</code><span class="option">...</span></samp>.  Some
  examples of supported build configurations are:
! 
!      <dl>
! <dt>&lsquo;<samp><span class="samp">bootstrap-O1</span></samp>&rsquo;<dd>Removes any <samp><span class="option">-O</span></samp>-started option from <code>BOOT_CFLAGS</code>, and adds
! <samp><span class="option">-O1</span></samp> to it.  &lsquo;<samp><span class="samp">BUILD_CONFIG=bootstrap-O1</span></samp>&rsquo; is equivalent to
! &lsquo;<samp><span class="samp">BOOT_CFLAGS='-g -O1'</span></samp>&rsquo;.
! 
!      <br><dt>&lsquo;<samp><span class="samp">bootstrap-O3</span></samp>&rsquo;<dd>Analogous to <code>bootstrap-O1</code>.
! 
!      <br><dt>&lsquo;<samp><span class="samp">bootstrap-lto</span></samp>&rsquo;<dd>Enables Link-Time Optimization for host tools during bootstrapping. 
! &lsquo;<samp><span class="samp">BUILD_CONFIG=bootstrap-lto</span></samp>&rsquo; is equivalent to adding
! <samp><span class="option">-flto</span></samp> to &lsquo;<samp><span class="samp">BOOT_CFLAGS</span></samp>&rsquo;.  This option assumes that the host
  supports the linker plugin (e.g. GNU ld version 2.21 or later or GNU gold
  version 2.21 or later).
! 
!      <br><dt>&lsquo;<samp><span class="samp">bootstrap-lto-noplugin</span></samp>&rsquo;<dd>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 <samp><span class="file">libbackend.a</span></samp> this means
  that only the front end is actually LTO optimized.
! 
!      <br><dt>&lsquo;<samp><span class="samp">bootstrap-debug</span></samp>&rsquo;<dd>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
! <samp><span class="file">contrib/compare-debug</span></samp> to compare them with the stripped stage3
  object files.  If <code>BOOT_CFLAGS</code> is overridden so as to not enable
! debug information, stage2 will have it, and stage3 won't.  This option
  is enabled by default when GCC bootstrapping is enabled, if
  <code>strip</code> can turn object files compiled with and without debug
  info into identical object files.  In addition to better test
  coverage, this option makes default bootstraps faster and leaner.
! 
!      <br><dt>&lsquo;<samp><span class="samp">bootstrap-debug-big</span></samp>&rsquo;<dd>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 great cost in terms of disk
! space.  It can be specified in addition to &lsquo;<samp><span class="samp">bootstrap-debug</span></samp>&rsquo;.
! 
!      <br><dt>&lsquo;<samp><span class="samp">bootstrap-debug-lean</span></samp>&rsquo;<dd>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
! <samp><span class="option">-fcompare-debug</span></samp> to generate, compare and remove the dumps
  during stage3, repeating the compilation that already took place in
  stage2, whose dumps were not saved.
! 
!      <br><dt>&lsquo;<samp><span class="samp">bootstrap-debug-lib</span></samp>&rsquo;<dd>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
! <samp><span class="option">-fcompare-debug</span></samp>, and it can be used along with any of the
  <code>bootstrap-debug</code> options above.
! 
!      <p>There aren't <code>-lean</code> or <code>-big</code> counterparts to this option
  because most libraries are only build in stage3, so bootstrap compares
  would not get significant coverage.  Moreover, the few libraries built
! in stage2 are used in stage3 host programs, so we wouldn't want to
  compile stage2 libraries with different options for comparison purposes.
! 
!      <br><dt>&lsquo;<samp><span class="samp">bootstrap-debug-ckovw</span></samp>&rsquo;<dd>Arranges for error messages to be issued if the compiler built on any
! stage is run without the option <samp><span class="option">-fcompare-debug</span></samp>.  This is
! useful to verify the full <samp><span class="option">-fcompare-debug</span></samp> testing coverage.  It
  must be used along with <code>bootstrap-debug-lean</code> and
  <code>bootstrap-debug-lib</code>.
! 
!      <br><dt>&lsquo;<samp><span class="samp">bootstrap-time</span></samp>&rsquo;<dd>Arranges for the run time of each program started by the GCC driver,
! built in any stage, to be logged to <samp><span class="file">time.log</span></samp>, in the top level of
  the build tree.
  
!    </dl>
! 
! <h3 class="section"><a name="TOC1"></a>Building a cross compiler</h3>
  
  <p>When building a cross compiler, it is not generally possible to do a
  3-stage bootstrap of the compiler.  This makes for an interesting problem
  as parts of GCC can only be built with GCC.
! 
!    <p>To build a cross compiler, we recommend first building and installing a
  native compiler.  You can then use the native GCC compiler to build the
  cross compiler.  The installed native compiler needs to be GCC version
  2.95 or later.
! 
!    <p>Assuming you have already installed a native copy of GCC and configured
! your cross compiler, issue the command <samp><span class="command">make</span></samp>, which performs the
  following steps:
  
!      <ul>
! <li>Build host tools necessary to build the compiler.
! 
!      <li>Build target tools for use by the compiler such as binutils (bfd,
  binutils, gas, gprof, ld, and opcodes)
  if they have been individually linked or moved into the top level GCC source
  tree before configuring.
  
!      <li>Build the compiler (single stage only).
! 
!      <li>Build runtime libraries using the compiler from the previous step. 
! </ul>
  
!    <p>Note that if an error occurs in any step the make process will exit.
  
!    <p>If you are not building GNU binutils in the same source tree as GCC,
  you will need a cross-assembler and cross-linker installed before
  configuring GCC.  Put them in the directory
! <samp><var>prefix</var><span class="file">/</span><var>target</var><span class="file">/bin</span></samp>.  Here is a table of the tools
  you should put in this directory:
! 
!      <dl>
! <dt><samp><span class="file">as</span></samp><dd>This should be the cross-assembler.
! 
!      <br><dt><samp><span class="file">ld</span></samp><dd>This should be the cross-linker.
! 
!      <br><dt><samp><span class="file">ar</span></samp><dd>This should be the cross-archiver: a program which can manipulate
! archive files (linker libraries) in the target machine's format.
! 
!      <br><dt><samp><span class="file">ranlib</span></samp><dd>This should be a program to construct a symbol table in an archive file. 
  </dl>
  
!    <p>The installation of GCC will find these programs in that directory,
  and copy or link them to the proper place to for the cross-compiler to
  find them when run later.
! 
!    <p>The easiest way to provide these files is to build the Binutils package. 
! Configure it with the same <samp><span class="option">--host</span></samp> and <samp><span class="option">--target</span></samp>
  options that you use for configuring GCC, then build and install
  them.  They install their executables automatically into the proper
  directory.  Alas, they do not support all the targets that GCC
  supports.
! 
!    <p>If you are not building a C library in the same source tree as GCC,
  you should also provide the target libraries and headers before
  configuring GCC, specifying the directories with
! <samp><span class="option">--with-sysroot</span></samp> or <samp><span class="option">--with-headers</span></samp> and
! <samp><span class="option">--with-libs</span></samp>.  Many targets also require &ldquo;start files&rdquo; such
! as <samp><span class="file">crt0.o</span></samp> and
! <samp><span class="file">crtn.o</span></samp> which are linked into each executable.  There may be several
! alternatives for <samp><span class="file">crt0.o</span></samp>, for use with profiling or other
! compilation options.  Check your target's definition of
  <code>STARTFILE_SPEC</code> to find out what start files it uses.
! 
! <h3 class="section"><a name="TOC2"></a>Building in parallel</h3>
  
  <p>GNU Make 3.80 and above, which is necessary to build GCC, support
! building in parallel.  To activate this, you can use &lsquo;<samp><span class="samp">make -j 2</span></samp>&rsquo;
! instead of &lsquo;<samp><span class="samp">make</span></samp>&rsquo;.  You can also specify a bigger number, and
  in most cases using a value greater than the number of processors in
  your machine will result in fewer and shorter I/O latency hits, thus
  improving overall throughput; this is especially true for slow drives
  and network filesystems.
! 
! <h3 class="section"><a name="TOC3"></a>Building the Ada compiler</h3>
  
  <p>In order to build GNAT, the Ada compiler, you need a working GNAT
! compiler (GCC version 4.0 or later). 
! This includes GNAT tools such as <samp><span class="command">gnatmake</span></samp> and
! <samp><span class="command">gnatlink</span></samp>, since the Ada front end is written in Ada and
  uses some GNAT-specific extensions.
! 
!    <p>In order to build a cross compiler, it is suggested to install
  the new compiler as native first, and then use it to build the cross
  compiler.
! 
!    <p><samp><span class="command">configure</span></samp> does not test whether the GNAT installation works
  and has a sufficiently recent version; if too old a GNAT version is
! installed, the build will fail unless <samp><span class="option">--enable-languages</span></samp> is
  used to disable building the Ada front end.
! 
!    <p><samp><span class="env">ADA_INCLUDE_PATH</span></samp> and <samp><span class="env">ADA_OBJECT_PATH</span></samp> environment variables
  must not be set when building the Ada compiler, the Ada tools, or the
  Ada runtime libraries. You can check that your build environment is clean
! by verifying that &lsquo;<samp><span class="samp">gnatls -v</span></samp>&rsquo; lists only one explicit path in each
  section.
! 
! <h3 class="section"><a name="TOC4"></a>Building with profile feedback</h3>
  
  <p>It is possible to use profile feedback to optimize the compiler itself.  This
  should result in a faster compiler binary.  Experiments done on x86 using gcc
  3.3 showed approximately 7 percent speedup on compiling C programs.  To
  bootstrap the compiler with profile feedback, use <code>make profiledbootstrap</code>.
! 
!    <p>When &lsquo;<samp><span class="samp">make profiledbootstrap</span></samp>&rsquo; is run, it will first build a <code>stage1</code>
  compiler.  This compiler is used to build a <code>stageprofile</code> compiler
  instrumented to collect execution counts of instruction and branch
! probabilities.  Then runtime libraries are compiled with profile collected. 
! Finally a <code>stagefeedback</code> compiler is built using the information collected.
! 
!    <p>Unlike standard bootstrap, several additional restrictions apply.  The
! compiler used to build <code>stage1</code> needs to support a 64-bit integral type. 
  It is recommended to only use GCC for this.
! 
!    <p>On Linux/x86_64 hosts with some restrictions (no virtualization) it is
! also possible to do autofdo build with &lsquo;<samp><span class="samp">make
! autoprofiledback</span></samp>&rsquo;. This uses Linux perf to sample branches in the
! binary and then rebuild it with feedback derived from the profile. 
  Linux perf and the <code>autofdo</code> toolkit needs to be installed for
  this.
! 
!    <p>Only the profile from the current build is used, so when an error
  occurs it is recommended to clean before restarting. Otherwise
  the code quality may be much worse.
! 
!    <p><hr />
  <p><a href="./index.html">Return to the GCC Installation page</a>
  
- <!-- ***Testing***************************************************************** -->
- <!-- ***Final install*********************************************************** -->
- <!-- ***Binaries**************************************************************** -->
- <!-- ***Specific**************************************************************** -->
- <!-- ***Old documentation****************************************************** -->
- <!-- ***GFDL******************************************************************** -->
- <!-- *************************************************************************** -->
- <!-- Part 6 The End of the Document -->
- </body></html>
  
--- 1,480 ----
! <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
! <html>
! <!-- Copyright (C) 1988-2018 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
  any later version published by the Free Software Foundation; with no
  Invariant Sections, the Front-Cover texts being (a) (see below), and
  with the Back-Cover Texts being (b) (see below).  A copy of the
! license is included in the section entitled "GNU
! Free Documentation License".
  
  (a) The FSF's Front-Cover Text is:
  
! A GNU Manual
  
  (b) The FSF's Back-Cover Text is:
  
! 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.4, http://www.gnu.org/software/texinfo/ -->
! <head>
! <title>Installing GCC</title>
! 
! <meta name="description" content="Installing GCC">
! <meta name="keywords" content="Installing GCC">
! <meta name="resource-type" content="document">
! <meta name="distribution" content="global">
! <meta name="Generator" content="makeinfo">
! <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
! <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>
! 
! 
  </head>
  
! <body lang="en">
! <h1 class="settitle" align="center">Installing GCC</h1>
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! <a name="index-Installing-GCC_003a-Building"></a>
! 
! <p>Now that GCC is configured, you are ready to build the compiler and
! runtime libraries.
! </p>
! <p>Some commands executed when making the compiler may fail (return a
! nonzero status) and be ignored by <code>make</code>.  These failures, which
  are often due to files that were not found, are expected, and can safely
  be ignored.
! </p>
! <p>It is normal to have compiler warnings when compiling certain files.
  Unless you are a GCC developer, you can generally ignore these warnings
  unless they cause compilation to fail.  Developers should attempt to fix
  any warnings encountered, however they can temporarily continue past
  warnings-as-errors by specifying the configure flag
! <samp>--disable-werror</samp>.
! </p>
! <p>On certain old systems, defining certain environment variables such as
! <code>CC</code> can interfere with the functioning of <code>make</code>.
! </p>
! <p>If you encounter seemingly strange errors when trying to build the
  compiler in a directory other than the source directory, it could be
  because you have previously configured the compiler in the source
  directory.  Make sure you have done all the necessary preparations.
! </p>
! <p>If you build GCC on a BSD system using a directory stored in an old System
! V file system, problems may occur in running <code>fixincludes</code> if the
! System V file system doesn&rsquo;t support symbolic links.  These problems
  result in a failure to fix the declaration of <code>size_t</code> in
! <samp>sys/types.h</samp>.  If you find that <code>size_t</code> is a signed type and
  that type mismatches occur, this could be the cause.
! </p>
! <p>The solution is not to use such a directory for building GCC.
! </p>
! <p>Similarly, when building from SVN or snapshots, or if you modify
! <samp>*.l</samp> files, you need the Flex lexical analyzer generator
! installed.  If you do not modify <samp>*.l</samp> files, releases contain
  the Flex-generated files and you do not need Flex installed to build
  them.  There is still one Flex-based lexical analyzer (part of the
  build machinery, not of GCC itself) that is used even if you only
  build the C front end.
! </p>
! <p>When building from SVN or snapshots, or if you modify Texinfo
  documentation, you need version 4.7 or later of Texinfo installed if you
  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
! a 3-stage bootstrap of the compiler when &lsquo;<samp>make</samp>&rsquo; is invoked.
  This will build the entire GCC system and ensure that it compiles
! itself correctly.  It can be disabled with the <samp>--disable-bootstrap</samp>
! parameter to &lsquo;<samp>configure</samp>&rsquo;, but bootstrapping is suggested because
  the compiler will be tested more completely and could also have
  better performance.
+ </p>
+ <p>The bootstrapping process will complete the following steps:
+ </p>
+ <ul>
+ <li> Build tools necessary to build the compiler.
  
! </li><li> Perform a 3-stage bootstrap of the compiler.  This includes building
  three times the target tools for use by the compiler such as binutils
  (bfd, binutils, gas, gprof, ld, and opcodes) if they have been
  individually linked or moved into the top level GCC source tree before
  configuring.
  
! </li><li> Perform a comparison test of the stage2 and stage3 compilers.
  
! </li><li> Build runtime libraries using the stage3 compiler from the previous step.
  
! </li></ul>
  
! <p>If you are short on disk space you might consider &lsquo;<samp>make
! bootstrap-lean</samp>&rsquo; instead.  The sequence of compilation is the
  same described above, but object files from the stage1 and
  stage2 of the 3-stage bootstrap of the compiler are deleted as
  soon as they are no longer needed.
! </p>
! <p>If you wish to use non-default GCC flags when compiling the stage2
  and stage3 compilers, set <code>BOOT_CFLAGS</code> on the command line when
! doing &lsquo;<samp>make</samp>&rsquo;.  For example, if you want to save additional space
  during the bootstrap and in the final installation as well, you can
  build the compiler binaries without debugging information as in the
  following example.  This will save roughly 40% of disk space both for
  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
! are less well tested here than the default of &lsquo;<samp>-g -O2</samp>&rsquo;, but should
  still work.  In a few cases, you may find that you need to specify special
! flags such as <samp>-msoft-float</samp> here to complete the bootstrap; or,
  if the native compiler miscompiles the stage1 compiler, you may need
  to work around this, by choosing <code>BOOT_CFLAGS</code> to avoid the parts
! of the stage1 compiler that were miscompiled, or by using &lsquo;<samp>make
! bootstrap4</samp>&rsquo; to increase the number of stages of bootstrap.
! </p>
! <p><code>BOOT_CFLAGS</code> does not apply to bootstrapped target libraries.
  Since these are always compiled with the compiler currently being
  bootstrapped, you can use <code>CFLAGS_FOR_TARGET</code> to modify their
! compilation flags, as for non-bootstrapped target libraries.
  Again, if the native compiler miscompiles the stage1 compiler, you may
  need to work around this by avoiding non-working parts of the stage1
  compiler.  Use <code>STAGE1_TFLAGS</code> to this end.
! </p>
! <p>If you used the flag <samp>--enable-languages=&hellip;</samp> to restrict
! the compilers to be built, only those you&rsquo;ve actually enabled will be
  built.  This will of course only build those runtime libraries, for
  which the particular compiler has been built.  Please note,
! that re-defining <code>LANGUAGES</code> when calling &lsquo;<samp>make</samp>&rsquo;
  <strong>does not</strong> work anymore!
! </p>
! <p>If the comparison of stage2 and stage3 fails, this normally indicates
  that the stage2 compiler has compiled GCC incorrectly, and is therefore
  a potentially serious bug which you should investigate and report.  (On
  a few systems, meaningful comparison of object files is impossible; they
  always appear &ldquo;different&rdquo;.  If you encounter this problem, you will
! need to disable comparison in the <samp>Makefile</samp>.)
! </p>
! <p>If you do not want to bootstrap your compiler, you can configure with
! <samp>--disable-bootstrap</samp>.  In particular cases, you may want to
  bootstrap your compiler even if the target system is not the same as
  the one you are building on: for example, you could build a
  <code>powerpc-unknown-linux-gnu</code> toolchain on a
  <code>powerpc64-unknown-linux-gnu</code> host.  In this case, pass
! <samp>--enable-bootstrap</samp> to the configure script.
! </p>
! <p><code>BUILD_CONFIG</code> can be used to bring in additional customization
! to the build.  It can be set to a whitespace-separated list of names.
! For each such <code>NAME</code>, top-level <samp>config/<code>NAME</code>.mk</samp> will
! be included by the top-level <samp>Makefile</samp>, bringing in any settings
  it contains.  The default <code>BUILD_CONFIG</code> can be set using the
! configure option <samp>--with-build-config=<code>NAME</code>...</samp>.  Some
  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>
! <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
  supports the linker plugin (e.g. GNU ld version 2.21 or later or GNU gold
  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 
! the GCC middle end and back end are in <samp>libbackend.a</samp> this means
  that only the front end is actually LTO optimized.
! </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
! <samp>contrib/compare-debug</samp> to compare them with the stripped stage3
  object files.  If <code>BOOT_CFLAGS</code> is overridden so as to not enable
! debug information, stage2 will have it, and stage3 won&rsquo;t.  This option
  is enabled by default when GCC bootstrapping is enabled, if
  <code>strip</code> can turn object files compiled with and without debug
  info into identical object files.  In addition to better test
  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
  additional potential problems, but at a great cost in terms of disk
! 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
! <samp>-fcompare-debug</samp> to generate, compare and remove the dumps
  during stage3, repeating the compilation that already took place in
  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
! <samp>-fcompare-debug</samp>, and it can be used along with any of the
  <code>bootstrap-debug</code> options above.
! </p>
! <p>There aren&rsquo;t <code>-lean</code> or <code>-big</code> counterparts to this option
  because most libraries are only build in stage3, so bootstrap compares
  would not get significant coverage.  Moreover, the few libraries built
! in stage2 are used in stage3 host programs, so we wouldn&rsquo;t want to
  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
  must be used along with <code>bootstrap-debug-lean</code> and
  <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
! assumes that the host supports Intel CET (e.g. GNU assembler version
! 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>
+ </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
  3-stage bootstrap of the compiler.  This makes for an interesting problem
  as parts of GCC can only be built with GCC.
! </p>
! <p>To build a cross compiler, we recommend first building and installing a
  native compiler.  You can then use the native GCC compiler to build the
  cross compiler.  The installed native compiler needs to be GCC version
  2.95 or later.
! </p>
! <p>Assuming you have already installed a native copy of GCC and configured
! your cross compiler, issue the command <code>make</code>, which performs the
  following steps:
+ </p>
+ <ul>
+ <li> Build host tools necessary to build the compiler.
  
! </li><li> Build target tools for use by the compiler such as binutils (bfd,
  binutils, gas, gprof, ld, and opcodes)
  if they have been individually linked or moved into the top level GCC source
  tree before configuring.
  
! </li><li> Build the compiler (single stage only).
  
! </li><li> Build runtime libraries using the compiler from the previous step.
! </li></ul>
  
! <p>Note that if an error occurs in any step the make process will exit.
! </p>
! <p>If you are not building GNU binutils in the same source tree as GCC,
  you will need a cross-assembler and cross-linker installed before
  configuring GCC.  Put them in the directory
! <samp><var>prefix</var>/<var>target</var>/bin</samp>.  Here is a table of the tools
  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>
  
! <p>The installation of GCC will find these programs in that directory,
  and copy or link them to the proper place to for the cross-compiler to
  find them when run later.
! </p>
! <p>The easiest way to provide these files is to build the Binutils package.
! Configure it with the same <samp>--host</samp> and <samp>--target</samp>
  options that you use for configuring GCC, then build and install
  them.  They install their executables automatically into the proper
  directory.  Alas, they do not support all the targets that GCC
  supports.
! </p>
! <p>If you are not building a C library in the same source tree as GCC,
  you should also provide the target libraries and headers before
  configuring GCC, specifying the directories with
! <samp>--with-sysroot</samp> or <samp>--with-headers</samp> and
! <samp>--with-libs</samp>.  Many targets also require &ldquo;start files&rdquo; such
! as <samp>crt0.o</samp> and
! <samp>crtn.o</samp> which are linked into each executable.  There may be several
! alternatives for <samp>crt0.o</samp>, for use with profiling or other
! 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
! building in parallel.  To activate this, you can use &lsquo;<samp>make -j 2</samp>&rsquo;
! instead of &lsquo;<samp>make</samp>&rsquo;.  You can also specify a bigger number, and
  in most cases using a value greater than the number of processors in
  your machine will result in fewer and shorter I/O latency hits, thus
  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>In order to build GNAT, the Ada compiler, you need a working GNAT
! compiler (GCC version 4.0 or later).
! This includes GNAT tools such as <code>gnatmake</code> and
! <code>gnatlink</code>, since the Ada front end is written in Ada and
  uses some GNAT-specific extensions.
! </p>
! <p>In order to build a cross compiler, it is suggested to install
  the new compiler as native first, and then use it to build the cross
  compiler.
! </p>
! <p><code>configure</code> does not test whether the GNAT installation works
  and has a sufficiently recent version; if too old a GNAT version is
! installed, the build will fail unless <samp>--enable-languages</samp> is
  used to disable building the Ada front end.
! </p>
! <p><code>ADA_INCLUDE_PATH</code> and <code>ADA_OBJECT_PATH</code> environment variables
  must not be set when building the Ada compiler, the Ada tools, or the
  Ada runtime libraries. You can check that your build environment is clean
! by verifying that &lsquo;<samp>gnatls -v</samp>&rsquo; lists only one explicit path in each
  section.
! </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
  should result in a faster compiler binary.  Experiments done on x86 using gcc
  3.3 showed approximately 7 percent speedup on compiling C programs.  To
  bootstrap the compiler with profile feedback, use <code>make profiledbootstrap</code>.
! </p>
! <p>When &lsquo;<samp>make profiledbootstrap</samp>&rsquo; is run, it will first build a <code>stage1</code>
  compiler.  This compiler is used to build a <code>stageprofile</code> compiler
  instrumented to collect execution counts of instruction and branch
! probabilities.  Training run is done by building <code>stagetrain</code>
! compiler.  Finally a <code>stagefeedback</code> compiler is built
! using the information collected.
! </p>
! <p>Unlike standard bootstrap, several additional restrictions apply.  The
! compiler used to build <code>stage1</code> needs to support a 64-bit integral type.
  It is recommended to only use GCC for this.
! </p>
! <p>On Linux/x86_64 hosts with some restrictions (no virtualization) it is
! also possible to do autofdo build with &lsquo;<samp>make
! autoprofiledback</samp>&rsquo;. This uses Linux perf to sample branches in the
! binary and then rebuild it with feedback derived from the profile.
  Linux perf and the <code>autofdo</code> toolkit needs to be installed for
  this.
! </p>
! <p>Only the profile from the current build is used, so when an error
  occurs it is recommended to clean before restarting. Otherwise
  the code quality may be much worse.
! </p>
! <hr />
! <p>
  <p><a href="./index.html">Return to the GCC Installation page</a>
+ </p>
+ 
+ 
+ 
  
  
+ 
+ 
+ <hr>
+ 
+ 
+ 
+ </body>
+ </html>
diff -Nrcpad gcc-7.3.0/INSTALL/configure.html gcc-8.1.0/INSTALL/configure.html
*** gcc-7.3.0/INSTALL/configure.html	Thu Jan 25 08:17:55 2018
--- gcc-8.1.0/INSTALL/configure.html	Wed May  2 08:20:01 2018
***************
*** 1,726 ****
! <html lang="en">
! <head>
! <title>Installing GCC: Configuration</title>
! <meta http-equiv="Content-Type" content="text/html">
! <meta name="description" content="Installing GCC: Configuration">
! <meta name="generator" content="makeinfo 4.13">
! <link title="Top" rel="top" href="#Top">
! <link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
! <!--
! Copyright (C) 1988-2017 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
  any later version published by the Free Software Foundation; with no
  Invariant Sections, the Front-Cover texts being (a) (see below), and
  with the Back-Cover Texts being (b) (see below).  A copy of the
! license is included in the section entitled "GNU Free Documentation License".
  
  (a) The FSF's Front-Cover Text is:
  
!      A GNU Manual
  
  (b) The FSF's Back-Cover Text is:
  
!      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.-->
! <meta http-equiv="Content-Style-Type" content="text/css">
! <style type="text/css"><!--
!   pre.display { font-family:inherit }
!   pre.format  { font-family:inherit }
!   pre.smalldisplay { font-family:inherit; font-size:smaller }
!   pre.smallformat  { font-family:inherit; font-size:smaller }
!   pre.smallexample { font-size:smaller }
!   pre.smalllisp    { font-size:smaller }
!   span.sc    { font-variant:small-caps }
!   span.roman { font-family:serif; font-weight:normal; } 
!   span.sansserif { font-family:sans-serif; font-weight:normal; } 
! --></style>
  </head>
- <body>
- <h1 class="settitle">Installing GCC: Configuration</h1>
- <a name="index-Configuration-1"></a><a name="index-Installing-GCC_003a-Configuration-2"></a>
- Like most GNU software, GCC must be configured before it can be built. 
- This document describes the recommended configuration procedure
- for both native and cross targets.
  
!    <p>We use <var>srcdir</var> to refer to the toplevel source directory for
! GCC; we use <var>objdir</var> to refer to the toplevel build/object directory.
  
-    <p>If you obtained the sources via SVN, <var>srcdir</var> must refer to the top
- <samp><span class="file">gcc</span></samp> directory, the one where the <samp><span class="file">MAINTAINERS</span></samp> file can be
- found, and not its <samp><span class="file">gcc</span></samp> subdirectory, otherwise the build will fail.
  
!    <p>If either <var>srcdir</var> or <var>objdir</var> is located on an automounted NFS
! file system, the shell's built-in <samp><span class="command">pwd</span></samp> command will return
  temporary pathnames.  Using these can lead to various sorts of build
! problems.  To avoid this issue, set the <samp><span class="env">PWDCMD</span></samp> environment
! variable to an automounter-aware <samp><span class="command">pwd</span></samp> command, e.g.,
! <samp><span class="command">pawd</span></samp> or &lsquo;<samp><span class="samp">amq -w</span></samp>&rsquo;, during the configuration and build
  phases.
! 
!    <p>First, we <strong>highly</strong> recommend that GCC be built into a
  separate directory from the sources which does <strong>not</strong> reside
  within the source tree.  This is how we generally build GCC; building
! where <var>srcdir</var> == <var>objdir</var> should still work, but doesn't
  get extensive testing; building where <var>objdir</var> is a subdirectory
  of <var>srcdir</var> is unsupported.
! 
!    <p>If you have previously built GCC in the same directory for a
! different target machine, do &lsquo;<samp><span class="samp">make distclean</span></samp>&rsquo; to delete all files
! that might be invalid.  One of the files this deletes is <samp><span class="file">Makefile</span></samp>;
! if &lsquo;<samp><span class="samp">make distclean</span></samp>&rsquo; complains that <samp><span class="file">Makefile</span></samp> does not exist
! or issues a message like &ldquo;don't know how to make distclean&rdquo; it probably
  means that the directory is already suitably clean.  However, with the
  recommended method of building in a separate <var>objdir</var>, you should
  simply use a different <var>objdir</var> for each target.
! 
!    <p>Second, when configuring a native system, either <samp><span class="command">cc</span></samp> or
! <samp><span class="command">gcc</span></samp> must be in your path or you must set <samp><span class="env">CC</span></samp> in
  your environment before running configure.  Otherwise the configuration
  scripts may fail.
  
!    <p>To configure GCC:
  
! <pre class="smallexample">     % mkdir <var>objdir</var>
!      % cd <var>objdir</var>
!      % <var>srcdir</var>/configure [<var>options</var>] [<var>target</var>]
! </pre>
!    <h3 class="heading"><a name="TOC0"></a>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.
! 
!      <dl>
! <dt><code>--with-pkgversion=</code><var>version</var><dd>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 <samp><span class="command">gcc --version</span></samp>.  This suffix does
! not replace the default version string, only the &lsquo;<samp><span class="samp">GCC</span></samp>&rsquo; part.
! 
!      <p>The default value is &lsquo;<samp><span class="samp">GCC</span></samp>&rsquo;.
! 
!      <br><dt><code>--with-bugurl=</code><var>url</var><dd>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.
  
!      <p>The default value refers to the FSF's GCC bug tracker.
! 
!    </dl>
! 
! <h3 class="heading"><a name="TOC1"></a>Target specification</h3>
! 
!      <ul>
! <li>GCC has code to correctly determine the correct value for <var>target</var>
  for nearly all native systems.  Therefore, we highly recommend you do
  not provide a configure target when configuring a native compiler.
  
!      <li><var>target</var> must be specified as <samp><span class="option">--target=</span><var>target</var></samp>
  when configuring a cross compiler; examples of valid targets would be
  m68k-elf, sh-elf, etc.
  
!      <li>Specifying just <var>target</var> instead of <samp><span class="option">--target=</span><var>target</var></samp>
! implies that the host defaults to <var>target</var>. 
! </ul>
  
! <h3 class="heading"><a name="TOC2"></a>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><span class="samp">configure
! --help</span></samp>&rsquo; may list other options, but those not listed below may not
  work and should not normally be used.
! 
!    <p>Note that each <samp><span class="option">--enable</span></samp> option has a corresponding
! <samp><span class="option">--disable</span></samp> option and that each <samp><span class="option">--with</span></samp> option has a
! corresponding <samp><span class="option">--without</span></samp> option.
! 
!      <dl>
! <dt><code>--prefix=</code><var>dirname</var><dd>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
! <samp><span class="file">/usr/local</span></samp>.
! 
!      <p>We <strong>highly</strong> recommend against <var>dirname</var> being the same or a
  subdirectory of <var>objdir</var> or vice versa.  If specifying a directory
! beneath a user's home directory tree, some shells will not expand
! <var>dirname</var> correctly if it contains the &lsquo;<samp><span class="samp">~</span></samp>&rsquo; metacharacter; use
! <samp><span class="env">$HOME</span></samp> instead.
! 
!      <p>The following standard <samp><span class="command">autoconf</span></samp> options are supported.  Normally you
  should not need to use these options.
!           <dl>
! <dt><code>--exec-prefix=</code><var>dirname</var><dd>Specify the toplevel installation directory for architecture-dependent
  files.  The default is <samp><var>prefix</var></samp>.
! 
!           <br><dt><code>--bindir=</code><var>dirname</var><dd>Specify the installation directory for the executables called by users
! (such as <samp><span class="command">gcc</span></samp> and <samp><span class="command">g++</span></samp>).  The default is
! <samp><var>exec-prefix</var><span class="file">/bin</span></samp>.
! 
!           <br><dt><code>--libdir=</code><var>dirname</var><dd>Specify the installation directory for object code libraries and
! internal data files of GCC.  The default is <samp><var>exec-prefix</var><span class="file">/lib</span></samp>.
! 
!           <br><dt><code>--libexecdir=</code><var>dirname</var><dd>Specify the installation directory for internal executables of GCC. 
! The default is <samp><var>exec-prefix</var><span class="file">/libexec</span></samp>.
! 
!           <br><dt><code>--with-slibdir=</code><var>dirname</var><dd>Specify the installation directory for the shared libgcc library.  The
  default is <samp><var>libdir</var></samp>.
! 
!           <br><dt><code>--datarootdir=</code><var>dirname</var><dd>Specify the root of the directory tree for read-only architecture-independent
! data files referenced by GCC.  The default is <samp><var>prefix</var><span class="file">/share</span></samp>.
! 
!           <br><dt><code>--infodir=</code><var>dirname</var><dd>Specify the installation directory for documentation in info format. 
! The default is <samp><var>datarootdir</var><span class="file">/info</span></samp>.
! 
!           <br><dt><code>--datadir=</code><var>dirname</var><dd>Specify the installation directory for some architecture-independent
  data files referenced by GCC.  The default is <samp><var>datarootdir</var></samp>.
! 
!           <br><dt><code>--docdir=</code><var>dirname</var><dd>Specify the installation directory for documentation files (other
! than Info) for GCC.  The default is <samp><var>datarootdir</var><span class="file">/doc</span></samp>.
! 
!           <br><dt><code>--htmldir=</code><var>dirname</var><dd>Specify the installation directory for HTML documentation files. 
  The default is <samp><var>docdir</var></samp>.
! 
!           <br><dt><code>--pdfdir=</code><var>dirname</var><dd>Specify the installation directory for PDF documentation files. 
  The default is <samp><var>docdir</var></samp>.
! 
!           <br><dt><code>--mandir=</code><var>dirname</var><dd>Specify the installation directory for manual pages.  The default is
! <samp><var>datarootdir</var><span class="file">/man</span></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 process from parts of the full
  manual.)
! 
!           <br><dt><code>--with-gxx-include-dir=</code><var>dirname</var><dd>Specify
  the installation directory for G++ header files.  The default depends
  on other configuration options, and differs between cross and native
  configurations.
! 
!           <br><dt><code>--with-specs=</code><var>specs</var><dd>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's source code, for instance
! <samp><span class="option">--with-specs=%{!fcommon:%{!fno-common:-fno-common}}</span></samp>. 
  See &ldquo;Spec Files&rdquo; in the main manual
  
!      </dl>
! 
!      <br><dt><code>--program-prefix=</code><var>prefix</var><dd>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
! <samp><span class="option">--program-prefix=foo-</span></samp> would result in &lsquo;<samp><span class="samp">gcc</span></samp>&rsquo;
! being installed as <samp><span class="file">/usr/local/bin/foo-gcc</span></samp>.
! 
!      <br><dt><code>--program-suffix=</code><var>suffix</var><dd>Appends <var>suffix</var> to the names of programs to install in <var>bindir</var>
! (see above).  For example, specifying <samp><span class="option">--program-suffix=-3.1</span></samp>
! would result in &lsquo;<samp><span class="samp">gcc</span></samp>&rsquo; being installed as
! <samp><span class="file">/usr/local/bin/gcc-3.1</span></samp>.
! 
!      <br><dt><code>--program-transform-name=</code><var>pattern</var><dd>Applies the &lsquo;<samp><span class="samp">sed</span></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><span class="samp">sed</span></samp>&rsquo; editing commands, separated by
! semicolons.  For example, if you want the &lsquo;<samp><span class="samp">gcc</span></samp>&rsquo; program name to be
! transformed to the installed program <samp><span class="file">/usr/local/bin/myowngcc</span></samp> and
! the &lsquo;<samp><span class="samp">g++</span></samp>&rsquo; program name to be transformed to
! <samp><span class="file">/usr/local/bin/gspecial++</span></samp> without changing other program names,
  you could use the pattern
! <samp><span class="option">--program-transform-name='s/^gcc$/myowngcc/; s/^g++$/gspecial++/'</span></samp>
  to achieve this effect.
! 
!      <p>All three options can be combined and used together, resulting in more
  complex conversion patterns.  As a basic rule, <var>prefix</var> (and
  <var>suffix</var>) are prepended (appended) before further transformations
  can happen with a special transformation script <var>pattern</var>.
! 
!      <p>As currently implemented, this option only takes effect for native
! builds; cross compiler binaries' names are not transformed even when a
  transformation is explicitly asked for by one of these options.
! 
!      <p>For native builds, some of the installed programs are also installed
  with the target alias in front of their name, as in
! &lsquo;<samp><span class="samp">i686-pc-linux-gnu-gcc</span></samp>&rsquo;.  All of the above transformations happen
  before the target alias is prepended to the name&mdash;so, specifying
! <samp><span class="option">--program-prefix=foo-</span></samp> and <samp><span class="option">program-suffix=-3.1</span></samp>, the
  resulting binary would be installed as
! <samp><span class="file">/usr/local/bin/i686-pc-linux-gnu-foo-gcc-3.1</span></samp>.
! 
!      <p>As a last shortcoming, none of the installed Ada programs are
  transformed yet, which will be fixed in some time.
! 
!      <br><dt><code>--with-local-prefix=</code><var>dirname</var><dd>Specify the
  installation directory for local include files.  The default is
! <samp><span class="file">/usr/local</span></samp>.  Specify this option if you want the compiler to
! search directory <samp><var>dirname</var><span class="file">/include</span></samp> for locally installed
! header files <em>instead</em> of <samp><span class="file">/usr/local/include</span></samp>.
! 
!      <p>You should specify <samp><span class="option">--with-local-prefix</span></samp> <strong>only</strong> if your
! site has a different convention (not <samp><span class="file">/usr/local</span></samp>) for where to put
  site-specific files.
! 
!      <p>The default value for <samp><span class="option">--with-local-prefix</span></samp> is <samp><span class="file">/usr/local</span></samp>
! regardless of the value of <samp><span class="option">--prefix</span></samp>.  Specifying
! <samp><span class="option">--prefix</span></samp> has no effect on which directory GCC searches for
  local header files.  This may seem counterintuitive, but actually it is
  logical.
! 
!      <p>The purpose of <samp><span class="option">--prefix</span></samp> is to specify where to <em>install
! GCC</em>.  The local header files in <samp><span class="file">/usr/local/include</span></samp>&mdash;if you put
  any in that directory&mdash;are not part of GCC.  They are part of other
  programs&mdash;perhaps many others.  (GCC installs its own header files in
! another directory which is based on the <samp><span class="option">--prefix</span></samp> value.)
! 
!      <p>Both the local-prefix include directory and the GCC-prefix include
! directory are part of GCC's &ldquo;system include&rdquo; directories.  Although these
  two directories are not fixed, they need to be searched in the proper
  order for the correct processing of the include_next directive.  The
  local-prefix include directory is searched before the GCC-prefix
  include directory.  Another characteristic of system include directories
  is that pedantic warnings are turned off for headers in these directories.
! 
!      <p>Some autoconf macros add <samp><span class="option">-I </span><var>directory</var></samp> options to the
  compiler command line, to ensure that directories containing installed
! packages' headers are searched.  When <var>directory</var> is one of GCC's
  system include directories, GCC will ignore the option so that system
  directories continue to be processed in the correct order.  This
  may result in a search order different from what was specified but the
  directory will still be searched.
! 
!      <p>GCC automatically searches for ordinary libraries using
! <samp><span class="env">GCC_EXEC_PREFIX</span></samp>.  Thus, when the same installation prefix is
  used for both GCC and packages, GCC will automatically search for
  both headers and libraries.  This provides a configuration that is
  easy to use.  GCC behaves in a manner similar to that when it is
! installed as a system compiler in <samp><span class="file">/usr</span></samp>.
! 
!      <p>Sites that need to install multiple versions of GCC may not want to
  use the above simple configuration.  It is possible to use the
! <samp><span class="option">--program-prefix</span></samp>, <samp><span class="option">--program-suffix</span></samp> and
! <samp><span class="option">--program-transform-name</span></samp> options to install multiple versions
  into a single directory, but it may be simpler to use different prefixes
! and the <samp><span class="option">--with-local-prefix</span></samp> option to specify the location of the
  site-specific files for each version.  It will then be necessary for
  users to specify explicitly the location of local site libraries
! (e.g., with <samp><span class="env">LIBRARY_PATH</span></samp>).
! 
!      <p>The same value can be used for both <samp><span class="option">--with-local-prefix</span></samp> and
! <samp><span class="option">--prefix</span></samp> provided it is not <samp><span class="file">/usr</span></samp>.  This can be used
! to avoid the default search of <samp><span class="file">/usr/local/include</span></samp>.
! 
!      <p><strong>Do not</strong> specify <samp><span class="file">/usr</span></samp> as the <samp><span class="option">--with-local-prefix</span></samp>! 
! The directory you use for <samp><span class="option">--with-local-prefix</span></samp> <strong>must not</strong>
! contain any of the system's standard header files.  If it did contain
  them, certain programs would be miscompiled (including GNU Emacs, on
  certain targets), because this would override and nullify the header
! file corrections made by the <samp><span class="command">fixincludes</span></samp> script.
! 
!      <p>Indications are that people who use this option use it based on mistaken
  ideas of what it is for.  People use it as if it specified where to
  install part of GCC.  Perhaps they make this assumption because
  installing GCC creates the directory.
! 
!      <br><dt><code>--with-gcc-major-version-only</code><dd>Specifies that GCC should use only the major number rather than
  <var>major</var>.<var>minor</var>.<var>patchlevel</var> in filesystem paths.
! 
!      <br><dt><code>--with-native-system-header-dir=</code><var>dirname</var><dd>Specifies that <var>dirname</var> is the directory that contains native system
! header files, rather than <samp><span class="file">/usr/include</span></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 commonly used with the
! <samp><span class="option">--with-sysroot</span></samp> option and will cause GCC to search
  <var>dirname</var> inside the system root specified by that option.
! 
!      <br><dt><code>--enable-shared[=</code><var>package</var><code>[,...]]</code><dd>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.
! 
!      <p>If a list of packages is given as an argument, build shared libraries
  only for the listed packages.  For other packages, only static libraries
  will be built.  Package names currently recognized in the GCC tree are
! &lsquo;<samp><span class="samp">libgcc</span></samp>&rsquo; (also known as &lsquo;<samp><span class="samp">gcc</span></samp>&rsquo;), &lsquo;<samp><span class="samp">libstdc++</span></samp>&rsquo; (not
! &lsquo;<samp><span class="samp">libstdc++-v3</span></samp>&rsquo;), &lsquo;<samp><span class="samp">libffi</span></samp>&rsquo;, &lsquo;<samp><span class="samp">zlib</span></samp>&rsquo;, &lsquo;<samp><span class="samp">boehm-gc</span></samp>&rsquo;,
! &lsquo;<samp><span class="samp">ada</span></samp>&rsquo;, &lsquo;<samp><span class="samp">libada</span></samp>&rsquo;, &lsquo;<samp><span class="samp">libgo</span></samp>&rsquo;, and &lsquo;<samp><span class="samp">libobjc</span></samp>&rsquo;. 
! Note &lsquo;<samp><span class="samp">libiberty</span></samp>&rsquo; does not support shared libraries at all.
! 
!      <p>Use <samp><span class="option">--disable-shared</span></samp> to build only static libraries.  Note that
! <samp><span class="option">--disable-shared</span></samp> does not accept a list of package names as
! argument, only <samp><span class="option">--enable-shared</span></samp> does.
! 
!      <p>Contrast with <samp><span class="option">--enable-host-shared</span></samp>, which affects <em>host</em>
  code.
! 
!      <br><dt><code>--enable-host-shared</code><dd>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.
! 
!      <p>This option is required when building the libgccjit.so library.
! 
!      <p>Contrast with <samp><span class="option">--enable-shared</span></samp>, which affects <em>target</em>
  libraries.
! 
!      <br><dt><code><a name="with_002dgnu_002das"></a>--with-gnu-as</code><dd>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
  assembler found is not actually the GNU assembler.  (Confusion may also
  result if the compiler finds the GNU assembler but has not been
! configured with <samp><span class="option">--with-gnu-as</span></samp>.)  If you have more than one
  assembler installed on your system, you may want to use this option in
! connection with <samp><span class="option">--with-as=</span><var>pathname</var></samp> or
! <samp><span class="option">--with-build-time-tools=</span><var>pathname</var></samp>.
! 
!      <p>The following systems are the only ones where it makes a difference
  whether you use the GNU assembler.  On any other system,
! <samp><span class="option">--with-gnu-as</span></samp> has no effect.
! 
!           <ul>
! <li>&lsquo;<samp><span class="samp">hppa1.0-</span><var>any</var><span class="samp">-</span><var>any</var></samp>&rsquo;
! <li>&lsquo;<samp><span class="samp">hppa1.1-</span><var>any</var><span class="samp">-</span><var>any</var></samp>&rsquo;
! <li>&lsquo;<samp><span class="samp">sparc-sun-solaris2.</span><var>any</var></samp>&rsquo;
! <li>&lsquo;<samp><span class="samp">sparc64-</span><var>any</var><span class="samp">-solaris2.</span><var>any</var></samp>&rsquo;
! </ul>
  
!      <br><dt><code><a name="with_002das"></a>--with-as=</code><var>pathname</var><dd>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:
!           <ul>
! <li>Unless GCC is being built with a cross compiler, check the
! <samp><var>libexec</var><span class="file">/gcc/</span><var>target</var><span class="file">/</span><var>version</var></samp> directory. 
! <var>libexec</var> defaults to <samp><var>exec-prefix</var><span class="file">/libexec</span></samp>;
  <var>exec-prefix</var> defaults to <var>prefix</var>, which
! defaults to <samp><span class="file">/usr/local</span></samp> unless overridden by the
! <samp><span class="option">--prefix=</span><var>pathname</var></samp> switch described above.  <var>target</var>
! is the target system triple, such as &lsquo;<samp><span class="samp">sparc-sun-solaris2.7</span></samp>&rsquo;, and
  <var>version</var> denotes the GCC version, such as 3.0.
  
!           <li>If the target system is the same that you are building on, check
! operating system specific directories (e.g. <samp><span class="file">/usr/ccs/bin</span></samp> on
  Sun Solaris 2).
  
!           <li>Check in the <samp><span class="env">PATH</span></samp> for a tool whose name is prefixed by the
  target system triple.
  
!           <li>Check in the <samp><span class="env">PATH</span></samp> for a tool whose name is not prefixed by the
  target system triple, if the host and target system triple are
  the same (in other words, we use a host tool if it can be used for
! the target as well). 
! </ul>
  
!      <p>You may want to use <samp><span class="option">--with-as</span></samp> if no assembler
  is installed in the directories listed above, or if you have multiple
  assemblers installed and want to choose one that is not found by the
  above rules.
! 
!      <br><dt><code><a name="with_002dgnu_002dld"></a>--with-gnu-ld</code><dd>Same as <a href="#with-gnu-as"><samp><span class="option">--with-gnu-as</span></samp></a>
  but for the linker.
! 
!      <br><dt><code>--with-ld=</code><var>pathname</var><dd>Same as <a href="#with-as"><samp><span class="option">--with-as</span></samp></a>
  but for the linker.
! 
!      <br><dt><code>--with-stabs</code><dd>Specify that stabs debugging
  information should be used instead of whatever format the host normally
  uses.  Normally GCC uses the same debug format as the host system.
! 
!      <p>On MIPS based systems and on Alphas, you must specify whether you want
! GCC to create the normal ECOFF debugging format, or to use BSD-style
! stabs passed through the ECOFF symbol table.  The normal ECOFF debug
! format cannot fully handle languages other than C.  BSD stabs format can
! handle other languages, but it only works with the GNU debugger GDB.
! 
!      <p>Normally, GCC uses the ECOFF debugging format by default; if you
! prefer BSD stabs, specify <samp><span class="option">--with-stabs</span></samp> when you configure GCC.
! 
!      <p>No matter which default you choose when you configure GCC, the user
! can use the <samp><span class="option">-gcoff</span></samp> and <samp><span class="option">-gstabs+</span></samp> options to specify explicitly
! the debug format for a particular compilation.
! 
!      <p><samp><span class="option">--with-stabs</span></samp> is meaningful on the ISC system on the 386, also, if
! <samp><span class="option">--with-gas</span></samp> is used.  It selects use of stabs debugging
! information embedded in COFF output.  This kind of debugging information
! supports C++ well; ordinary COFF debugging information does not.
! 
!      <p><samp><span class="option">--with-stabs</span></samp> is also meaningful on 386 systems running SVR4.  It
! selects use of stabs debugging information embedded in ELF output.  The
! C++ compiler currently (2.6.0) does not support the DWARF debugging
! information normally used on 386 SVR4 platforms; stabs provide a
! workable alternative.  This requires gas and gdb, as the normal SVR4
! tools can not generate or interpret stabs.
! 
!      <br><dt><code>--with-tls=</code><var>dialect</var><dd>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.
! 
!      <br><dt><code>--enable-multiarch</code><dd>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,
! and for cross builds configured with <samp><span class="option">--with-sysroot</span></samp>, and without
! <samp><span class="option">--with-native-system-header-dir</span></samp>. 
  More documentation about multiarch can be found at
  <a href="https://wiki.debian.org/Multiarch">https://wiki.debian.org/Multiarch</a>.
! 
!      <br><dt><code>--enable-sjlj-exceptions</code><dd>Force use of the <code>setjmp</code>/<code>longjmp</code>-based scheme for exceptions. 
! &lsquo;<samp><span class="samp">configure</span></samp>&rsquo; ordinarily picks the correct value based on the platform. 
  Only use this option if you are sure you need a different setting.
! 
!      <br><dt><code>--enable-vtable-verify</code><dd>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
  virtual call in libstdc++ will verify the vtable pointer through which the
  call will be made before actually making the call.  If not linked with libvtv,
! the verifier will call stub functions (in libstdc++ itself) and do nothing. 
  If vtable verification is disabled, then libstdc++ is not built with its
  virtual calls in verifiable mode at all.  However the libvtv library will
! still be built (see <samp><span class="option">--disable-libvtv</span></samp> to turn off building libvtv). 
! <samp><span class="option">--disable-vtable-verify</span></samp> is the default.
! 
!      <br><dt><code>--disable-multilib</code><dd>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.
! 
!      <p>Some targets provide finer-grained control over which multilibs are built
! (e.g., <samp><span class="option">--disable-softfloat</span></samp>):
!           <dl>
! <dt><code>arm-*-*</code><dd>fpu, 26bit, underscore, interwork, biendian, nofmult.
! 
!           <br><dt><code>m68*-*-*</code><dd>softfloat, m68881, m68000, m68020.
! 
!           <br><dt><code>mips*-*-*</code><dd>single-float, biendian, softfloat.
! 
!           <br><dt><code>powerpc*-*-*, rs6000*-*-*</code><dd>aix64, pthread, softfloat, powercpu, powerpccpu, powerpcos, biendian,
  sysv, aix.
  
!      </dl>
! 
!      <br><dt><code>--with-multilib-list=</code><var>list</var><dt><code>--without-multilib-list</code><dd>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 arm*-*-*, sh*-*-* and x86-64-*-linux*.  The accepted values and meaning
  for each target is given below.
! 
!           <dl>
! <dt><code>arm*-*-*</code><dd><var>list</var> is one of<code>default</code>, <code>aprofile</code> or <code>rmprofile</code>. 
! Specifying <code>default</code> is equivalent to omitting this option, ie. only the
! default runtime library will be enabled.  Specifying <code>aprofile</code> or
! <code>rmprofile</code> builds multilibs for a combination of ISA, architecture,
! FPU available and floating-point ABI.
! 
!           <p>The table below gives the combination of ISAs, architectures, FPUs and
  floating-point ABIs for which multilibs are built for each accepted value.
! 
!           <p><table summary=""><tr align="left"><td valign="top" width="15%">Option </td><td valign="top" width="28%">aprofile </td><td valign="top" width="30%">rmprofile
! <br></td></tr><tr align="left"><td valign="top" width="15%">ISAs
! </td><td valign="top" width="28%"><code>-marm</code> and <code>-mthumb</code>
! </td><td valign="top" width="30%"><code>-mthumb</code>
! <br></td></tr><tr align="left"><td valign="top" width="15%">Architectures<br><br><br><br><br><br>
! </td><td valign="top" width="28%">default architecture<br>
  <code>-march=armv7-a</code><br>
  <code>-march=armv7ve</code><br>
! <code>-march=armv8-a</code><br><br><br>
! </td><td valign="top" width="30%">default architecture<br>
  <code>-march=armv6s-m</code><br>
  <code>-march=armv7-m</code><br>
  <code>-march=armv7e-m</code><br>
  <code>-march=armv8-m.base</code><br>
  <code>-march=armv8-m.main</code><br>
! <code>-march=armv7</code>
! <br></td></tr><tr align="left"><td valign="top" width="15%">FPUs<br><br><br><br><br>
! </td><td valign="top" width="28%">none<br>
  <code>-mfpu=vfpv3-d16</code><br>
  <code>-mfpu=neon</code><br>
  <code>-mfpu=vfpv4-d16</code><br>
  <code>-mfpu=neon-vfpv4</code><br>
! <code>-mfpu=neon-fp-armv8</code>
! </td><td valign="top" width="30%">none<br>
  <code>-mfpu=vfpv3-d16</code><br>
  <code>-mfpu=fpv4-sp-d16</code><br>
  <code>-mfpu=fpv5-sp-d16</code><br>
! <code>-mfpu=fpv5-d16</code><br>
! <br></td></tr><tr align="left"><td valign="top" width="15%">floating-point ABIs<br><br>
! </td><td valign="top" width="28%"><code>-mfloat-abi=soft</code><br>
  <code>-mfloat-abi=softfp</code><br>
! <code>-mfloat-abi=hard</code>
! </td><td valign="top" width="30%"><code>-mfloat-abi=soft</code><br>
  <code>-mfloat-abi=softfp</code><br>
! <code>-mfloat-abi=hard</code>
!           <br></td></tr></table>
  
!           <br><dt><code>sh*-*-*</code><dd><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 -
! these are handled by <samp><span class="option">--with-endian</span></samp>.
! 
!           <p>If <var>list</var> is empty, then there will be no multilibs for extra
  processors.  The multilib for the secondary endian remains enabled.
! 
!           <p>As a special case, if an entry in the list starts with a <code>!</code>
! (exclamation point), then it is added to the list of excluded multilibs. 
! Entries of this sort should be compatible with &lsquo;<samp><span class="samp">MULTILIB_EXCLUDES</span></samp>&rsquo;
  (once the leading <code>!</code> has been stripped).
! 
!           <p>If <samp><span class="option">--with-multilib-list</span></samp> is not given, then a default set of
! multilibs is selected based on the value of <samp><span class="option">--target</span></samp>.  This is
  usually the complete set of libraries, but some targets imply a more
  specialized subset.
! 
!           <p>Example 1: to configure a compiler for SH4A only, but supporting both
  endians, with little endian being the default:
!           <pre class="smallexample">               --with-cpu=sh4a --with-endian=little,big --with-multilib-list=
! </pre>
!           <p>Example 2: to configure a compiler for both SH4A and SH4AL-DSP, but with
  only little endian SH4AL:
!           <pre class="smallexample">               --with-cpu=sh4a --with-endian=little,big \
!                --with-multilib-list=sh4al,!mb/m4al
! </pre>
!           <br><dt><code>x86-64-*-linux*</code><dd><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 will be enabled.
! 
!           <p>If <samp><span class="option">--with-multilib-list</span></samp> is not given, then only 32-bit and
! 64-bit run-time libraries will be enabled. 
  </dl>
  
!      <br><dt><code>--with-endian=</code><var>endians</var><dd>Specify what endians to use. 
  Currently only implemented for sh*-*-*.
! 
!      <p><var>endians</var> may be one of the following:
!           <dl>
! <dt><code>big</code><dd>Use big endian exclusively. 
! <br><dt><code>little</code><dd>Use little endian exclusively. 
! <br><dt><code>big,little</code><dd>Use big endian by default.  Provide a multilib for little endian. 
! <br><dt><code>little,big</code><dd>Use little endian by default.  Provide a multilib for big endian. 
  </dl>
  
!      <br><dt><code>--enable-threads</code><dd>Specify that the target
  supports threads.  This affects the Objective-C compiler and runtime
! library, and exception handling for other languages like C++. 
  On some systems, this is the default.
! 
!      <p>In general, the best (and, in many cases, the only known) threading
  model available will be configured for use.  Beware that on some
  systems, GCC has not been taught what threading models are generally
! available for the system.  In this case, <samp><span class="option">--enable-threads</span></samp> is an
! alias for <samp><span class="option">--enable-threads=single</span></samp>.
! 
!      <br><dt><code>--disable-threads</code><dd>Specify that threading support should be disabled for the system. 
! This is an alias for <samp><span class="option">--enable-threads=single</span></samp>.
! 
!      <br><dt><code>--enable-threads=</code><var>lib</var><dd>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:
! 
!           <dl>
! <dt><code>aix</code><dd>AIX thread support. 
! <br><dt><code>dce</code><dd>DCE thread support. 
! <br><dt><code>lynx</code><dd>LynxOS thread support. 
! <br><dt><code>mipssde</code><dd>MIPS SDE thread support. 
! <br><dt><code>no</code><dd>This is an alias for &lsquo;<samp><span class="samp">single</span></samp>&rsquo;. 
! <br><dt><code>posix</code><dd>Generic POSIX/Unix98 thread support. 
! <br><dt><code>rtems</code><dd>RTEMS thread support. 
! <br><dt><code>single</code><dd>Disable thread support, should work for all platforms. 
! <br><dt><code>tpf</code><dd>TPF thread support. 
! <br><dt><code>vxworks</code><dd>VxWorks thread support. 
! <br><dt><code>win32</code><dd>Microsoft Win32 API thread support. 
  </dl>
  
!      <br><dt><code>--enable-tls</code><dd>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
! <samp><span class="option">--enable-tls</span></samp> or <samp><span class="option">--disable-tls</span></samp>.  This can happen if
  the assembler supports TLS but the C library does not, or if the
  assumptions made by the configure test are incorrect.
! 
!      <br><dt><code>--disable-tls</code><dd>Specify that the target does not support TLS. 
! This is an alias for <samp><span class="option">--enable-tls=no</span></samp>.
! 
!      <br><dt><code>--with-cpu=</code><var>cpu</var><dt><code>--with-cpu-32=</code><var>cpu</var><dt><code>--with-cpu-64=</code><var>cpu</var><dd>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><span class="option">-mcpu=</span></samp> switch. 
  This option is only supported on some targets, including ARC, ARM, i386, M68k,
! PowerPC, and SPARC.  It is mandatory for ARC.  The <samp><span class="option">--with-cpu-32</span></samp> and
! <samp><span class="option">--with-cpu-64</span></samp> options specify separate default CPUs for
  32-bit and 64-bit modes; these options are only supported for i386,
  x86-64, PowerPC, and SPARC.
! 
!      <br><dt><code>--with-schedule=</code><var>cpu</var><dt><code>--with-arch=</code><var>cpu</var><dt><code>--with-arch-32=</code><var>cpu</var><dt><code>--with-arch-64=</code><var>cpu</var><dt><code>--with-tune=</code><var>cpu</var><dt><code>--with-tune-32=</code><var>cpu</var><dt><code>--with-tune-64=</code><var>cpu</var><dt><code>--with-abi=</code><var>abi</var><dt><code>--with-fpu=</code><var>type</var><dt><code>--with-float=</code><var>type</var><dd>These configure options provide default values for the <samp><span class="option">-mschedule=</span></samp>,
! <samp><span class="option">-march=</span></samp>, <samp><span class="option">-mtune=</span></samp>, <samp><span class="option">-mabi=</span></samp>, and <samp><span class="option">-mfpu=</span></samp>
! options and for <samp><span class="option">-mhard-float</span></samp> or <samp><span class="option">-msoft-float</span></samp>.  As with
! <samp><span class="option">--with-cpu</span></samp>, which switches will be accepted and acceptable values
  of the arguments depend on the target.
! 
!      <br><dt><code>--with-mode=</code><var>mode</var><dd>Specify if the compiler should default to <samp><span class="option">-marm</span></samp> or <samp><span class="option">-mthumb</span></samp>. 
  This option is only supported on ARM targets.
! 
!      <br><dt><code>--with-stack-offset=</code><var>num</var><dd>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.
! 
!      <br><dt><code>--with-fpmath=</code><var>isa</var><dd>This options sets <samp><span class="option">-mfpmath=sse</span></samp> by default and specifies the default
! ISA for floating-point arithmetics.  You can select either &lsquo;<samp><span class="samp">sse</span></samp>&rsquo; which
! enables <samp><span class="option">-msse2</span></samp> or &lsquo;<samp><span class="samp">avx</span></samp>&rsquo; which enables <samp><span class="option">-mavx</span></samp> by default. 
  This option is only supported on i386 and x86-64 targets.
! 
!      <br><dt><code>--with-fp-32=</code><var>mode</var><dd>On MIPS targets, set the default value for the <samp><span class="option">-mfp</span></samp> option when using
  the o32 ABI.  The possibilities for <var>mode</var> are:
!           <dl>
! <dt><code>32</code><dd>Use the o32 FP32 ABI extension, as with the <samp><span class="option">-mfp32</span></samp> command-line
! option. 
! <br><dt><code>xx</code><dd>Use the o32 FPXX ABI extension, as with the <samp><span class="option">-mfpxx</span></samp> command-line
! option. 
! <br><dt><code>64</code><dd>Use the o32 FP64 ABI extension, as with the <samp><span class="option">-mfp64</span></samp> command-line
! option. 
  </dl>
!      In the absence of this configuration option the default is to use the o32
  FP32 ABI extension.
! 
!      <br><dt><code>--with-odd-spreg-32</code><dd>On MIPS targets, set the <samp><span class="option">-modd-spreg</span></samp> option by default when using
  the o32 ABI.
! 
!      <br><dt><code>--without-odd-spreg-32</code><dd>On MIPS targets, set the <samp><span class="option">-mno-odd-spreg</span></samp> option by default when using
  the o32 ABI.  This is normally used in conjunction with
! <samp><span class="option">--with-fp-32=64</span></samp> in order to target the o32 FP64A ABI extension.
! 
!      <br><dt><code>--with-nan=</code><var>encoding</var><dd>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:
!           <dl>
! <dt><code>legacy</code><dd>Use the legacy encoding, as with the <samp><span class="option">-mnan=legacy</span></samp> command-line
! option. 
! <br><dt><code>2008</code><dd>Use the 754-2008 encoding, as with the <samp><span class="option">-mnan=2008</span></samp> command-line
! option. 
  </dl>
!      To use this configuration option you must have an assembler version
! installed that supports the <samp><span class="option">-mnan=</span></samp> command-line option too. 
  In the absence of this configuration option the default convention is
! the legacy encoding, as when neither of the <samp><span class="option">-mnan=2008</span></samp> and
! <samp><span class="option">-mnan=legacy</span></samp> command-line options has been used.
! 
!      <br><dt><code>--with-divide=</code><var>type</var><dd>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:
!           <dl>
! <dt><code>traps</code><dd>Division by zero checks use conditional traps (this is the default on
! systems that support conditional traps). 
! <br><dt><code>breaks</code><dd>Division by zero checks use the break instruction. 
  </dl>
  
!      <!-- If you make -with-llsc the default for additional targets, -->
!      <!-- update the -with-llsc description in the MIPS section below. -->
!      <br><dt><code>--with-llsc</code><dd>On MIPS targets, make <samp><span class="option">-mllsc</span></samp> the default when no
! <samp><span class="option">-mno-llsc</span></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.
! 
!      <br><dt><code>--without-llsc</code><dd>On MIPS targets, make <samp><span class="option">-mno-llsc</span></samp> the default when no
! <samp><span class="option">-mllsc</span></samp> option is passed.
! 
!      <br><dt><code>--with-synci</code><dd>On MIPS targets, make <samp><span class="option">-msynci</span></samp> the default when no
! <samp><span class="option">-mno-synci</span></samp> option is passed.
! 
!      <br><dt><code>--without-synci</code><dd>On MIPS targets, make <samp><span class="option">-mno-synci</span></samp> the default when no
! <samp><span class="option">-msynci</span></samp> option is passed.  This is the default.
! 
!      <br><dt><code>--with-lxc1-sxc1</code><dd>On MIPS targets, make <samp><span class="option">-mlxc1-sxc1</span></samp> the default when no
! <samp><span class="option">-mno-lxc1-sxc1</span></samp> option is passed.  This is the default.
! 
!      <br><dt><code>--without-lxc1-sxc1</code><dd>On MIPS targets, make <samp><span class="option">-mno-lxc1-sxc1</span></samp> the default when no
! <samp><span class="option">-mlxc1-sxc1</span></samp> option is passed.  The indexed load/store
  instructions are not directly a problem but can lead to unexpected
  behaviour when deployed in an application intended for a 32-bit address
  space but run on a 64-bit processor.  The issue is seen because all
--- 1,935 ----
! <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
! <html>
! <!-- Copyright (C) 1988-2018 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
  any later version published by the Free Software Foundation; with no
  Invariant Sections, the Front-Cover texts being (a) (see below), and
  with the Back-Cover Texts being (b) (see below).  A copy of the
! license is included in the section entitled "GNU
! Free Documentation License".
  
  (a) The FSF's Front-Cover Text is:
  
! A GNU Manual
  
  (b) The FSF's Back-Cover Text is:
  
! 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.4, http://www.gnu.org/software/texinfo/ -->
! <head>
! <title>Installing GCC</title>
! 
! <meta name="description" content="Installing GCC">
! <meta name="keywords" content="Installing GCC">
! <meta name="resource-type" content="document">
! <meta name="distribution" content="global">
! <meta name="Generator" content="makeinfo">
! <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
! <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>
! 
! 
  </head>
  
! <body lang="en">
! <h1 class="settitle" align="center">Installing GCC</h1>
  
  
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! <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
! for both native and cross targets.
! </p>
! <p>We use <var>srcdir</var> to refer to the toplevel source directory for
! GCC; we use <var>objdir</var> to refer to the toplevel build/object directory.
! </p>
! <p>If you obtained the sources via SVN, <var>srcdir</var> must refer to the top
! <samp>gcc</samp> directory, the one where the <samp>MAINTAINERS</samp> file can be
! found, and not its <samp>gcc</samp> subdirectory, otherwise the build will fail.
! </p>
! <p>If either <var>srcdir</var> or <var>objdir</var> is located on an automounted NFS
! file system, the shell&rsquo;s built-in <code>pwd</code> command will return
  temporary pathnames.  Using these can lead to various sorts of build
! problems.  To avoid this issue, set the <code>PWDCMD</code> environment
! variable to an automounter-aware <code>pwd</code> command, e.g.,
! <code>pawd</code> or &lsquo;<samp>amq -w</samp>&rsquo;, during the configuration and build
  phases.
! </p>
! <p>First, we <strong>highly</strong> recommend that GCC be built into a
  separate directory from the sources which does <strong>not</strong> reside
  within the source tree.  This is how we generally build GCC; building
! where <var>srcdir</var> == <var>objdir</var> should still work, but doesn&rsquo;t
  get extensive testing; building where <var>objdir</var> is a subdirectory
  of <var>srcdir</var> is unsupported.
! </p>
! <p>If you have previously built GCC in the same directory for a
! different target machine, do &lsquo;<samp>make distclean</samp>&rsquo; to delete all files
! that might be invalid.  One of the files this deletes is <samp>Makefile</samp>;
! if &lsquo;<samp>make distclean</samp>&rsquo; complains that <samp>Makefile</samp> does not exist
! or issues a message like &ldquo;don&rsquo;t know how to make distclean&rdquo; it probably
  means that the directory is already suitably clean.  However, with the
  recommended method of building in a separate <var>objdir</var>, you should
  simply use a different <var>objdir</var> for each target.
! </p>
! <p>Second, when configuring a native system, either <code>cc</code> or
! <code>gcc</code> must be in your path or you must set <code>CC</code> in
  your environment before running configure.  Otherwise the configuration
  scripts may fail.
+ </p>
  
! <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
! not replace the default version string, only the &lsquo;<samp>GCC</samp>&rsquo; part.
! </p>
! <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.
+ </p>
+ <p>The default value refers to the FSF&rsquo;s GCC bug tracker.
+ </p>
+ </dd>
+ </dl>
  
! <a name="Target-specification"></a>
! <h3 class="heading">Target specification</h3>
! <ul>
! <li> GCC has code to correctly determine the correct value for <var>target</var>
  for nearly all native systems.  Therefore, we highly recommend you do
  not provide a configure target when configuring a native compiler.
  
! </li><li> <var>target</var> must be specified as <samp>--target=<var>target</var></samp>
  when configuring a cross compiler; examples of valid targets would be
  m68k-elf, sh-elf, etc.
  
! </li><li> Specifying just <var>target</var> instead of <samp>--target=<var>target</var></samp>
! implies that the host defaults to <var>target</var>.
! </li></ul>
  
! 
! <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
! --help</samp>&rsquo; may list other options, but those not listed below may not
  work and should not normally be used.
! </p>
! <p>Note that each <samp>--enable</samp> option has a corresponding
! <samp>--disable</samp> option and that each <samp>--with</samp> option has a
! 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
! <samp>/usr/local</samp>.
! </p>
! <p>We <strong>highly</strong> recommend against <var>dirname</var> being the same or a
  subdirectory of <var>objdir</var> or vice versa.  If specifying a directory
! beneath a user&rsquo;s home directory tree, some shells will not expand
! <var>dirname</var> correctly if it contains the &lsquo;<samp>~</samp>&rsquo; metacharacter; use
! <code>$HOME</code> instead.
! </p>
! <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
  are derived by an automatic conversion process from parts of the full
  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
! <samp>--with-specs=%{!fcommon:%{!fno-common:-fno-common}}</samp>.
  See &ldquo;Spec Files&rdquo; in the main manual
+ </p>
+ </dd>
+ </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
! <samp>--program-prefix=foo-</samp> would result in &lsquo;<samp>gcc</samp>&rsquo;
! 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
! semicolons.  For example, if you want the &lsquo;<samp>gcc</samp>&rsquo; program name to be
! transformed to the installed program <samp>/usr/local/bin/myowngcc</samp> and
! the &lsquo;<samp>g++</samp>&rsquo; program name to be transformed to
! <samp>/usr/local/bin/gspecial++</samp> without changing other program names,
  you could use the pattern
! <samp>--program-transform-name='s/^gcc$/myowngcc/; s/^g++$/gspecial++/'</samp>
  to achieve this effect.
! </p>
! <p>All three options can be combined and used together, resulting in more
  complex conversion patterns.  As a basic rule, <var>prefix</var> (and
  <var>suffix</var>) are prepended (appended) before further transformations
  can happen with a special transformation script <var>pattern</var>.
! </p>
! <p>As currently implemented, this option only takes effect for native
! builds; cross compiler binaries&rsquo; names are not transformed even when a
  transformation is explicitly asked for by one of these options.
! </p>
! <p>For native builds, some of the installed programs are also installed
  with the target alias in front of their name, as in
! &lsquo;<samp>i686-pc-linux-gnu-gcc</samp>&rsquo;.  All of the above transformations happen
  before the target alias is prepended to the name&mdash;so, specifying
! <samp>--program-prefix=foo-</samp> and <samp>program-suffix=-3.1</samp>, the
  resulting binary would be installed as
! <samp>/usr/local/bin/i686-pc-linux-gnu-foo-gcc-3.1</samp>.
! </p>
! <p>As a last shortcoming, none of the installed Ada programs are
  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
! search directory <samp><var>dirname</var>/include</samp> for locally installed
! header files <em>instead</em> of <samp>/usr/local/include</samp>.
! </p>
! <p>You should specify <samp>--with-local-prefix</samp> <strong>only</strong> if your
! site has a different convention (not <samp>/usr/local</samp>) for where to put
  site-specific files.
! </p>
! <p>The default value for <samp>--with-local-prefix</samp> is <samp>/usr/local</samp>
! regardless of the value of <samp>--prefix</samp>.  Specifying
! <samp>--prefix</samp> has no effect on which directory GCC searches for
  local header files.  This may seem counterintuitive, but actually it is
  logical.
! </p>
! <p>The purpose of <samp>--prefix</samp> is to specify where to <em>install
! GCC</em>.  The local header files in <samp>/usr/local/include</samp>&mdash;if you put
  any in that directory&mdash;are not part of GCC.  They are part of other
  programs&mdash;perhaps many others.  (GCC installs its own header files in
! another directory which is based on the <samp>--prefix</samp> value.)
! </p>
! <p>Both the local-prefix include directory and the GCC-prefix include
! directory are part of GCC&rsquo;s &ldquo;system include&rdquo; directories.  Although these
  two directories are not fixed, they need to be searched in the proper
  order for the correct processing of the include_next directive.  The
  local-prefix include directory is searched before the GCC-prefix
  include directory.  Another characteristic of system include directories
  is that pedantic warnings are turned off for headers in these directories.
! </p>
! <p>Some autoconf macros add <samp>-I <var>directory</var></samp> options to the
  compiler command line, to ensure that directories containing installed
! packages&rsquo; headers are searched.  When <var>directory</var> is one of GCC&rsquo;s
  system include directories, GCC will ignore the option so that system
  directories continue to be processed in the correct order.  This
  may result in a search order different from what was specified but the
  directory will still be searched.
! </p>
! <p>GCC automatically searches for ordinary libraries using
! <code>GCC_EXEC_PREFIX</code>.  Thus, when the same installation prefix is
  used for both GCC and packages, GCC will automatically search for
  both headers and libraries.  This provides a configuration that is
  easy to use.  GCC behaves in a manner similar to that when it is
! installed as a system compiler in <samp>/usr</samp>.
! </p>
! <p>Sites that need to install multiple versions of GCC may not want to
  use the above simple configuration.  It is possible to use the
! <samp>--program-prefix</samp>, <samp>--program-suffix</samp> and
! <samp>--program-transform-name</samp> options to install multiple versions
  into a single directory, but it may be simpler to use different prefixes
! and the <samp>--with-local-prefix</samp> option to specify the location of the
  site-specific files for each version.  It will then be necessary for
  users to specify explicitly the location of local site libraries
! (e.g., with <code>LIBRARY_PATH</code>).
! </p>
! <p>The same value can be used for both <samp>--with-local-prefix</samp> and
! <samp>--prefix</samp> provided it is not <samp>/usr</samp>.  This can be used
! to avoid the default search of <samp>/usr/local/include</samp>.
! </p>
! <p><strong>Do not</strong> specify <samp>/usr</samp> as the <samp>--with-local-prefix</samp>!
! The directory you use for <samp>--with-local-prefix</samp> <strong>must not</strong>
! contain any of the system&rsquo;s standard header files.  If it did contain
  them, certain programs would be miscompiled (including GNU Emacs, on
  certain targets), because this would override and nullify the header
! file corrections made by the <code>fixincludes</code> script.
! </p>
! <p>Indications are that people who use this option use it based on mistaken
  ideas of what it is for.  People use it as if it specified where to
  install part of GCC.  Perhaps they make this assumption because
  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
  as much as possible.  It is most commonly used with the
! <samp>--with-sysroot</samp> option and will cause GCC to search
  <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.
! </p>
! <p>If a list of packages is given as an argument, build shared libraries
  only for the listed packages.  For other packages, only static libraries
  will be built.  Package names currently recognized in the GCC tree are
! &lsquo;<samp>libgcc</samp>&rsquo; (also known as &lsquo;<samp>gcc</samp>&rsquo;), &lsquo;<samp>libstdc++</samp>&rsquo; (not
! &lsquo;<samp>libstdc++-v3</samp>&rsquo;), &lsquo;<samp>libffi</samp>&rsquo;, &lsquo;<samp>zlib</samp>&rsquo;, &lsquo;<samp>boehm-gc</samp>&rsquo;,
! &lsquo;<samp>ada</samp>&rsquo;, &lsquo;<samp>libada</samp>&rsquo;, &lsquo;<samp>libgo</samp>&rsquo;, and &lsquo;<samp>libobjc</samp>&rsquo;.
! Note &lsquo;<samp>libiberty</samp>&rsquo; does not support shared libraries at all.
! </p>
! <p>Use <samp>--disable-shared</samp> to build only static libraries.  Note that
! <samp>--disable-shared</samp> does not accept a list of package names as
! argument, only <samp>--enable-shared</samp> does.
! </p>
! <p>Contrast with <samp>--enable-host-shared</samp>, which affects <em>host</em>
  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.
! </p>
! <p>This option is required when building the libgccjit.so library.
! </p>
! <p>Contrast with <samp>--enable-shared</samp>, which affects <em>target</em>
  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
  assembler found is not actually the GNU assembler.  (Confusion may also
  result if the compiler finds the GNU assembler but has not been
! configured with <samp>--with-gnu-as</samp>.)  If you have more than one
  assembler installed on your system, you may want to use this option in
! connection with <samp>--with-as=<var>pathname</var></samp> or
! <samp>--with-build-time-tools=<var>pathname</var></samp>.
! </p>
! <p>The following systems are the only ones where it makes a difference
  whether you use the GNU assembler.  On any other system,
! <samp>--with-gnu-as</samp> has no effect.
! </p>
! <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:
! </p><ul>
! <li> Unless GCC is being built with a cross compiler, check the
! <samp><var>libexec</var>/gcc/<var>target</var>/<var>version</var></samp> directory.
! <var>libexec</var> defaults to <samp><var>exec-prefix</var>/libexec</samp>;
  <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
  Sun Solaris 2).
  
! </li><li> Check in the <code>PATH</code> for a tool whose name is prefixed by the
  target system triple.
  
! </li><li> Check in the <code>PATH</code> for a tool whose name is not prefixed by the
  target system triple, if the host and target system triple are
  the same (in other words, we use a host tool if it can be used for
! the target as well).
! </li></ul>
  
! <p>You may want to use <samp>--with-as</samp> if no assembler
  is installed in the directories listed above, or if you have multiple
  assemblers installed and want to choose one that is not found by the
  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-stabs</code></dt>
! <dd><p>Specify that stabs debugging
  information should be used instead of whatever format the host normally
  uses.  Normally GCC uses the same debug format as the host system.
! </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,
! and for cross builds configured with <samp>--with-sysroot</samp>, and without
! <samp>--with-native-system-header-dir</samp>.
  More documentation about multiarch can be found at
  <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
  virtual call in libstdc++ will verify the vtable pointer through which the
  call will be made before actually making the call.  If not linked with libvtv,
! the verifier will call stub functions (in libstdc++ itself) and do nothing.
  If vtable verification is disabled, then libstdc++ is not built with its
  virtual calls in verifiable mode at all.  However the libvtv library will
! still be built (see <samp>--disable-libvtv</samp> to turn off building libvtv).
! <samp>--disable-vtable-verify</samp> is the default.
! </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
  predefined set of them.
! </p>
! <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>powerpc*-*-*, rs6000*-*-*</code></dt>
! <dd><p>aix64, pthread, softfloat, powercpu, powerpccpu, powerpcos, biendian,
  sysv, aix.
+ </p>
+ </dd>
+ </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 arm*-*-*, sh*-*-* and x86-64-*-linux*.  The accepted values and meaning
  for each target is given below.
! </p>
! <dl compact="compact">
! <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 multilib framework, using the
! combined <code>aprofile,rmprofile</code> multilibs selects in some cases a less
! optimal multilib than when using the multilib profile for the architecture
! targetted.  The special value <code>default</code> is also accepted and is equivalent
! to omitting the option, ie. only the default run-time library will be enabled.
! </p>
! <p>The table below gives the combination of ISAs, architectures, FPUs and
  floating-point ABIs for which multilibs are built for each accepted value.
! The union of these options is considered when specifying both <code>aprofile</code>
! and <code>rmprofile</code>.
! </p>
! <table>
! <tr><td width="15%">Option</td><td width="28%">aprofile</td><td width="30%">rmprofile</td></tr>
! <tr><td width="15%">ISAs</td><td width="28%"><code>-marm</code> and <code>-mthumb</code></td><td width="30%"><code>-mthumb</code></td></tr>
! <tr><td width="15%">Architectures<br><br><br><br><br><br></td><td width="28%">default architecture<br>
  <code>-march=armv7-a</code><br>
  <code>-march=armv7ve</code><br>
! <code>-march=armv8-a</code><br><br><br></td><td width="30%">default architecture<br>
  <code>-march=armv6s-m</code><br>
  <code>-march=armv7-m</code><br>
  <code>-march=armv7e-m</code><br>
  <code>-march=armv8-m.base</code><br>
  <code>-march=armv8-m.main</code><br>
! <code>-march=armv7</code></td></tr>
! <tr><td width="15%">FPUs<br><br><br><br><br></td><td width="28%">none<br>
  <code>-mfpu=vfpv3-d16</code><br>
  <code>-mfpu=neon</code><br>
  <code>-mfpu=vfpv4-d16</code><br>
  <code>-mfpu=neon-vfpv4</code><br>
! <code>-mfpu=neon-fp-armv8</code></td><td width="30%">none<br>
  <code>-mfpu=vfpv3-d16</code><br>
  <code>-mfpu=fpv4-sp-d16</code><br>
  <code>-mfpu=fpv5-sp-d16</code><br>
! <code>-mfpu=fpv5-d16</code><br></td></tr>
! <tr><td width="15%">floating-point ABIs<br><br></td><td width="28%"><code>-mfloat-abi=soft</code><br>
  <code>-mfloat-abi=softfp</code><br>
! <code>-mfloat-abi=hard</code></td><td width="30%"><code>-mfloat-abi=soft</code><br>
  <code>-mfloat-abi=softfp</code><br>
! <code>-mfloat-abi=hard</code></td></tr>
! </table>
  
! </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 -
! these are handled by <samp>--with-endian</samp>.
! </p>
! <p>If <var>list</var> is empty, then there will be no multilibs for extra
  processors.  The multilib for the secondary endian remains enabled.
! </p>
! <p>As a special case, if an entry in the list starts with a <code>!</code>
! (exclamation point), then it is added to the list of excluded multilibs.
! Entries of this sort should be compatible with &lsquo;<samp>MULTILIB_EXCLUDES</samp>&rsquo;
  (once the leading <code>!</code> has been stripped).
! </p>
! <p>If <samp>--with-multilib-list</samp> is not given, then a default set of
! multilibs is selected based on the value of <samp>--target</samp>.  This is
  usually the complete set of libraries, but some targets imply a more
  specialized subset.
! </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
  and only the default run-time library will be enabled.
! </p>
! <p>If <samp>--with-multilib-list</samp> is not given, then only 32-bit and
! 64-bit run-time libraries will be enabled.
! </p></dd>
  </dl>
  
! </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++.
  On some systems, this is the default.
! </p>
! <p>In general, the best (and, in many cases, the only known) threading
  model available will be configured for use.  Beware that on some
  systems, GCC has not been taught what threading models are generally
! available for the system.  In this case, <samp>--enable-threads</samp> is an
! 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
! <samp>--enable-tls</samp> or <samp>--disable-tls</samp>.  This can happen if
  the assembler supports TLS but the C library does not, or if the
  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>--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,
! PowerPC, and SPARC.  It is mandatory for ARC.  The <samp>--with-cpu-32</samp> and
! <samp>--with-cpu-64</samp> options specify separate default CPUs for
  32-bit and 64-bit modes; these options are only supported for i386,
  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
! <samp>--with-cpu</samp>, which switches will be accepted and acceptable values
  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>
  </dl>
! <p>In the absence of this configuration option the default is to use the o32
  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>
  </dl>
! <p>To use this configuration option you must have an assembler version
! installed that supports the <samp>-mnan=</samp> command-line option too.
  In the absence of this configuration option the default convention is
! the legacy encoding, as when neither of the <samp>-mnan=2008</samp> and
! <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
  behaviour when deployed in an application intended for a 32-bit address
  space but run on a 64-bit processor.  The issue is seen because all
*************** as an <code>addu</code> instruction or a
*** 732,1448 ****
  in <code>lwxc1</code> type instructions.  This assumption holds true in a
  pure 32-bit environment and can hold true in a 64-bit environment if
  the address space is accurately set to be 32-bit for o32 and n32.
! 
!      <br><dt><code>--with-madd4</code><dd>On MIPS targets, make <samp><span class="option">-mmadd4</span></samp> the default when no
! <samp><span class="option">-mno-madd4</span></samp> option is passed.  This is the default.
! 
!      <br><dt><code>--without-madd4</code><dd>On MIPS targets, make <samp><span class="option">-mno-madd4</span></samp> the default when no
! <samp><span class="option">-mmadd4</span></samp> option is passed.  The <code>madd4</code> instruction
  family can be problematic when targeting a combination of cores that
  implement these instructions differently.  There are two known cores
  that implement these as fused operations instead of unfused (where
  unfused is normally expected).  Disabling these instructions is the
  only way to ensure compatible code is generated; this will incur
  a performance penalty.
! 
!      <br><dt><code>--with-mips-plt</code><dd>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.
! 
!      <br><dt><code>--enable-__cxa_atexit</code><dd>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
  destructors, but requires __cxa_atexit in libc.  This option is currently
  only available on systems with GNU libc.  When enabled, this will cause
! <samp><span class="option">-fuse-cxa-atexit</span></samp> to be passed by default.
! 
!      <br><dt><code>--enable-gnu-indirect-function</code><dd>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.
! 
!      <br><dt><code>--enable-target-optspace</code><dd>Specify that target
! libraries should be optimized for code space instead of code speed. 
  This is the default for the m32r platform.
! 
!      <br><dt><code>--with-cpp-install-dir=</code><var>dirname</var><dd>Specify that the user visible <samp><span class="command">cpp</span></samp> program should be installed
! in <samp><var>prefix</var><span class="file">/</span><var>dirname</var><span class="file">/cpp</span></samp>, in addition to <var>bindir</var>.
! 
!      <br><dt><code>--enable-comdat</code><dd>Enable COMDAT group support.  This is primarily used to override the
  automatically detected value.
! 
!      <br><dt><code>--enable-initfini-array</code><dd>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><span class="option">--disable-initfini-array</span></samp> has the
  opposite effect.  If neither option is specified, the configure script
  will try to guess whether the <code>.init_array</code> and
  <code>.fini_array</code> sections are supported and, if they are, use them.
! 
!      <br><dt><code>--enable-link-mutex</code><dd>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.
! 
!      <br><dt><code>--enable-maintainer-mode</code><dd>The build rules that regenerate the Autoconf and Automake output files as
! well as the GCC master message catalog <samp><span class="file">gcc.pot</span></samp> are normally
  disabled.  This is because it can only be rebuilt if the complete source
  tree is present.  If you have changed the sources and want to rebuild the
! catalog, configuring with <samp><span class="option">--enable-maintainer-mode</span></samp> will enable
  this.  Note that you need a recent version of the <code>gettext</code> tools
  to do so.
! 
!      <br><dt><code>--disable-bootstrap</code><dd>For a native build, the default configuration is to perform
! a 3-stage bootstrap of the compiler when &lsquo;<samp><span class="samp">make</span></samp>&rsquo; is invoked,
  testing that GCC can compile itself correctly.  If you want to disable
! this process, you can configure with <samp><span class="option">--disable-bootstrap</span></samp>.
! 
!      <br><dt><code>--enable-bootstrap</code><dd>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
! the target (e.g. host is i686-linux, target is i486-linux). 
  Starting from GCC 4.2, to do this you have to configure explicitly
! with <samp><span class="option">--enable-bootstrap</span></samp>.
! 
!      <br><dt><code>--enable-generated-files-in-srcdir</code><dd>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 SVN development tree.  When building GCC from that development tree,
  or from one of our snapshots, those generated files are placed in your
  build directory, which allows for the source to be in a readonly
  directory.
! 
!      <p>If you configure with <samp><span class="option">--enable-generated-files-in-srcdir</span></samp> then those
  generated files will go into the source directory.  This is mainly intended
  for generating release or prerelease tarballs of the GCC sources, since it
  is not a requirement that the users of source releases to have flex, Bison,
  or makeinfo.
! 
!      <br><dt><code>--enable-version-specific-runtime-libs</code><dd>Specify
  that runtime libraries should be installed in the compiler specific
! subdirectory (<samp><var>libdir</var><span class="file">/gcc</span></samp>) rather than the usual places.  In
! addition, &lsquo;<samp><span class="samp">libstdc++</span></samp>&rsquo;'s include files will be installed into
  <samp><var>libdir</var></samp> unless you overruled it by using
! <samp><span class="option">--with-gxx-include-dir=</span><var>dirname</var></samp>.  Using this option is
  particularly useful if you intend to use several versions of GCC in
! parallel.  This is currently supported by &lsquo;<samp><span class="samp">libgfortran</span></samp>&rsquo;,
! &lsquo;<samp><span class="samp">libstdc++</span></samp>&rsquo;, and &lsquo;<samp><span class="samp">libobjc</span></samp>&rsquo;.
! 
!      <br><dt><code><a name="WithAixSoname"></a>--with-aix-soname=&lsquo;</code><samp><span class="samp">aix</span></samp><code>&rsquo;, &lsquo;</code><samp><span class="samp">svr4</span></samp><code>&rsquo; or &lsquo;</code><samp><span class="samp">both</span></samp><code>&rsquo;</code><dd>Traditional AIX shared library versioning (versioned <code>Shared Object</code>
  files as members of unversioned <code>Archive Library</code> files named
! &lsquo;<samp><span class="samp">lib.a</span></samp>&rsquo;) causes numerous headaches for package managers. However,
  <code>Import Files</code> as members of <code>Archive Library</code> files allow for
  <strong>filename-based versioning</strong> of shared libraries as seen on Linux/SVR4,
! where this is called the "SONAME". But as they prevent static linking,
  <code>Import Files</code> may be used with <code>Runtime Linking</code> only, where the
! linker does search for &lsquo;<samp><span class="samp">libNAME.so</span></samp>&rsquo; before &lsquo;<samp><span class="samp">libNAME.a</span></samp>&rsquo; library
! filenames with the &lsquo;<samp><span class="samp">-lNAME</span></samp>&rsquo; linker flag.
! 
!      <p><a name="AixLdCommand"></a>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>As long as shared library creation is enabled, upon:
!           <dl>
! <dt><code>--with-aix-soname=aix</code><br><dt><code>--with-aix-soname=both</code><dd> A (traditional AIX) <code>Shared Archive Library</code> file is created:
!                <ul>
!   <li>using the &lsquo;<samp><span class="samp">libNAME.a</span></samp>&rsquo; filename scheme
!   <li>with the <code>Shared Object</code> file as archive member named
!   &lsquo;<samp><span class="samp">libNAME.so.V</span></samp>&rsquo; (except for &lsquo;<samp><span class="samp">libgcc_s</span></samp>&rsquo;, where the <code>Shared
!   Object</code> file is named &lsquo;<samp><span class="samp">shr.o</span></samp>&rsquo; for backwards compatibility), which
!                     <ul>
!    <li>is used for runtime loading from inside the &lsquo;<samp><span class="samp">libNAME.a</span></samp>&rsquo; file
!    <li>is used for dynamic loading via
!    <code>dlopen("libNAME.a(libNAME.so.V)", RTLD_MEMBER)</code>
!    <li>is used for shared linking
!    <li>is used for static linking, so no separate <code>Static Archive
     Library</code> file is needed
!   </ul>
!                 </ul>
!           <br><dt><code>--with-aix-soname=both</code><br><dt><code>--with-aix-soname=svr4</code><dd> A (second) <code>Shared Archive Library</code> file is created:
!                <ul>
!  <li>using the &lsquo;<samp><span class="samp">libNAME.so.V</span></samp>&rsquo; filename scheme
!  <li>with the <code>Shared Object</code> file as archive member named
!  &lsquo;<samp><span class="samp">shr.o</span></samp>&rsquo;, which
!                     <ul>
!    <li>is created with the <code>-G linker flag</code>
!    <li>has the <code>F_LOADONLY</code> flag set
!    <li>is used for runtime loading from inside the &lsquo;<samp><span class="samp">libNAME.so.V</span></samp>&rsquo; file
!    <li>is used for dynamic loading via <code>dlopen("libNAME.so.V(shr.o)",
     RTLD_MEMBER)</code>
!   </ul>
!                 <li>with the <code>Import File</code> as archive member named &lsquo;<samp><span class="samp">shr.imp</span></samp>&rsquo;,
   which
!                     <ul>
!    <li>refers to &lsquo;<samp><span class="samp">libNAME.so.V(shr.o)</span></samp>&rsquo; as the "SONAME", to be recorded
     in the <code>Loader Section</code> of subsequent binaries
!    <li>indicates whether &lsquo;<samp><span class="samp">libNAME.so.V(shr.o)</span></samp>&rsquo; is 32 or 64 bit
!    <li>lists all the public symbols exported by &lsquo;<samp><span class="samp">lib.so.V(shr.o)</span></samp>&rsquo;,
!    eventually decorated with the <code>&lsquo;</code><samp><span class="samp">weak</span></samp><code>&rsquo; Keyword</code>
!    <li>is necessary for shared linking against &lsquo;<samp><span class="samp">lib.so.V(shr.o)</span></samp>&rsquo;
!    </ul>
!                  </ul>
!             A symbolic link using the &lsquo;<samp><span class="samp">libNAME.so</span></samp>&rsquo; filename scheme is created:
!                <ul>
!   <li>pointing to the &lsquo;<samp><span class="samp">libNAME.so.V</span></samp>&rsquo; <code>Shared Archive Library</code> file
!   <li>to permit the <code>ld Command</code> to find &lsquo;<samp><span class="samp">lib.so.V(shr.imp)</span></samp>&rsquo; via
!   the &lsquo;<samp><span class="samp">-lNAME</span></samp>&rsquo; argument (requires <code>Runtime Linking</code> to be enabled)
!   <li>to permit dynamic loading of &lsquo;<samp><span class="samp">lib.so.V(shr.o)</span></samp>&rsquo; without the need
!   to specify the version number via <code>dlopen("libNAME.so(shr.o)",
    RTLD_MEMBER)</code>
!   </ul>
!           </dl>
  
!      <p>As long as static library creation is enabled, upon:
!           <dl>
! <dt><code>--with-aix-soname=svr4</code><dd> A <code>Static Archive Library</code> is created:
!                <ul>
!  <li>using the &lsquo;<samp><span class="samp">libNAME.a</span></samp>&rsquo; filename scheme
!  <li>with all the <code>Static Object</code> files as archive members, which
!                     <ul>
!    <li>are used for static linking
!   </ul>
!                 </ul>
!           </dl>
  
!      <p>While the aix-soname=&lsquo;<samp><span class="samp">svr4</span></samp>&rsquo; option does not create <code>Shared Object</code>
  files as members of unversioned <code>Archive Library</code> files any more, package
  managers still are responsible to
  <a href="./specific.html#TransferAixShobj">transfer</a> <code>Shared Object</code> files
  found as member of a previously installed unversioned <code>Archive Library</code>
  file into the newly installed <code>Archive Library</code> file with the same
  filename.
! 
!      <p><em>WARNING:</em> Creating <code>Shared Object</code> files with <code>Runtime Linking</code>
  enabled may bloat the TOC, eventually leading to <code>TOC overflow</code> errors,
! requiring the use of either the <samp><span class="option">-Wl,-bbigtoc</span></samp> linker flag (seen to
  break with the <code>GDB</code> debugger) or some of the TOC-related compiler flags,
  see &ldquo;RS/6000 and PowerPC Options&rdquo; in the main manual.
! 
!      <p><samp><span class="option">--with-aix-soname</span></samp> is currently supported by &lsquo;<samp><span class="samp">libgcc_s</span></samp>&rsquo; only, so
  this option is still experimental and not for normal use yet.
! 
!      <p>Default is the traditional behavior <samp><span class="option">--with-aix-soname=&lsquo;</span><samp><span class="samp">aix</span></samp><span class="option">&rsquo;</span></samp>.
! 
!      <br><dt><code>--enable-languages=</code><var>lang1</var><code>,</code><var>lang2</var><code>,...</code><dd>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><span class="file">gcc</span></samp> directory of your GCC source tree:<br>
!      <pre class="smallexample">          grep ^language= */config-lang.in
! </pre>
!      <p>Currently, you can use any of the following:
! <code>all</code>, <code>ada</code>, <code>c</code>, <code>c++</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>all</code>, then all
! default languages available in the <samp><span class="file">gcc</span></samp> sub-tree will be configured. 
  Ada, Go, Jit, and Objective-C++ are not default languages.  LTO is not a
! default language, but is built by default because <samp><span class="option">--enable-lto</span></samp> is
! enabled by default.  The other languages are default languages.
! 
!      <br><dt><code>--enable-stage1-languages=</code><var>lang1</var><code>,</code><var>lang2</var><code>,...</code><dd>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
  bootstrapped C compiler.  The list of valid values is the same as for
! <samp><span class="option">--enable-languages</span></samp>, and the option <code>all</code> will select all
! of the languages enabled by <samp><span class="option">--enable-languages</span></samp>.  This option is
  primarily useful for GCC development; for instance, when a development
  version of the compiler cannot bootstrap due to compiler bugs, or when
  one is debugging front ends other than the C front end.  When this
  option is used, one can then build the target libraries for the
! specified languages with the stage-1 compiler by using <samp><span class="command">make
! stage1-bubble all-target</span></samp>, or run the testsuite on the stage-1 compiler
! for the specified languages using <samp><span class="command">make stage1-start check-gcc</span></samp>.
! 
!      <br><dt><code>--disable-libada</code><dd>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><span class="samp">make -C gcc gnatlib_and_tools</span></samp>&rsquo;.
! 
!      <br><dt><code>--disable-libsanitizer</code><dd>Specify that the run-time libraries for the various sanitizers should
  not be built.
! 
!      <br><dt><code>--disable-libssp</code><dd>Specify that the run-time libraries for stack smashing protection
! should not be built.
! 
!      <br><dt><code>--disable-libquadmath</code><dd>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><span class="option">--disable-libquadmath-support</span></samp>
  is used.
! 
!      <br><dt><code>--disable-libquadmath-support</code><dd>Specify that the Fortran front end and <code>libgfortran</code> do not add
  support for <code>libquadmath</code> on systems supporting it.
! 
!      <br><dt><code>--disable-libgomp</code><dd>Specify that the GNU Offloading and Multi Processing Runtime Library
  should not be built.
! 
!      <br><dt><code>--disable-libvtv</code><dd>Specify that the run-time libraries used by vtable verification
  should not be built.
! 
!      <br><dt><code>--with-dwarf2</code><dd>Specify that the compiler should
  use DWARF 2 debugging information as the default.
! 
!      <br><dt><code>--with-advance-toolchain=</code><var>at</var><dd>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
  provided by the Linux distribution.  In general, this option is
  intended for the developers of GCC, and it is not intended for general
  use.
! 
!      <br><dt><code>--enable-targets=all</code><dt><code>--enable-targets=</code><var>target_list</var><dd>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. 
  powerpc-linux for powerpc64-linux, only generates 32-bit code.  This
  option enables the 32-bit target to be a bi-arch compiler, which is
  useful when you want a bi-arch compiler that defaults to 32-bit, and
! you are building a bi-arch or multi-arch binutils in a combined tree. 
  On mips-linux, this will build a tri-arch compiler (ABI o32/n32/64),
! defaulted to o32. 
  Currently, this option only affects sparc-linux, powerpc-linux, x86-linux,
  mips-linux and s390-linux.
! 
!      <br><dt><code>--enable-default-pie</code><dd>Turn on <samp><span class="option">-fPIE</span></samp> and <samp><span class="option">-pie</span></samp> by default.
! 
!      <br><dt><code>--enable-secureplt</code><dd>This option enables <samp><span class="option">-msecure-plt</span></samp> by default for powerpc-linux. 
  See &ldquo;RS/6000 and PowerPC Options&rdquo; in the main manual
! 
!      <br><dt><code>--enable-default-ssp</code><dd>Turn on <samp><span class="option">-fstack-protector-strong</span></samp> by default.
! 
!      <br><dt><code>--enable-cld</code><dd>This option enables <samp><span class="option">-mcld</span></samp> by default for 32-bit x86 targets. 
  See &ldquo;i386 and x86-64 Options&rdquo; in the main manual
! 
!      <br><dt><code>--enable-win32-registry</code><dt><code>--enable-win32-registry=</code><var>key</var><dt><code>--disable-win32-registry</code><dd>The <samp><span class="option">--enable-win32-registry</span></samp> option enables Microsoft Windows-hosted GCC
  to look up installations paths in the registry using the following key:
  
!      <pre class="smallexample">          <code>HKEY_LOCAL_MACHINE\SOFTWARE\Free Software Foundation\</code><var>key</var>
! </pre>
!      <p><var>key</var> defaults to GCC version number, and can be overridden by the
! <samp><span class="option">--enable-win32-registry=</span><var>key</var></samp> option.  Vendors and distributors
  who use custom installers are encouraged to provide a different key,
  perhaps one comprised of vendor name and GCC version number, to
  avoid conflict with existing installations.  This feature is enabled
! by default, and can be disabled by <samp><span class="option">--disable-win32-registry</span></samp>
  option.  This option has no effect on the other hosts.
! 
!      <br><dt><code>--nfp</code><dd>Specify that the machine does not have a floating point unit.  This
! option only applies to &lsquo;<samp><span class="samp">m68k-sun-sunos</span><var>n</var></samp>&rsquo;.  On any other
! system, <samp><span class="option">--nfp</span></samp> has no effect.
! 
!      <br><dt><code>--enable-werror</code><dt><code>--disable-werror</code><dt><code>--enable-werror=yes</code><dt><code>--enable-werror=no</code><dd>When you specify this option, it controls whether certain files in the
! compiler are built with <samp><span class="option">-Werror</span></samp> in bootstrap stage2 and later. 
! If you don't specify it, <samp><span class="option">-Werror</span></samp> is turned on for the main
  development trunk.  However it defaults to off for release branches and
! final releases.  The specific files which get <samp><span class="option">-Werror</span></samp> are
  controlled by the Makefiles.
! 
!      <br><dt><code>--enable-checking</code><dt><code>--enable-checking=</code><var>list</var><dd>When you specify this option, the compiler is built to perform internal
  consistency checks of the requested complexity.  This does not change the
  generated code, but adds error checking within the compiler.  This will
  slow down the compiler and may only work properly if you are building
! the compiler with GCC.  This is &lsquo;<samp><span class="samp">yes,extra</span></samp>&rsquo; by default when building
! from SVN or snapshots, but &lsquo;<samp><span class="samp">release</span></samp>&rsquo; for releases.  The default
! for building the stage1 compiler is &lsquo;<samp><span class="samp">yes</span></samp>&rsquo;.  More control
  over the checks may be had by specifying <var>list</var>.  The categories of
! checks available are &lsquo;<samp><span class="samp">yes</span></samp>&rsquo; (most common checks
! &lsquo;<samp><span class="samp">assert,misc,tree,gc,rtlflag,runtime</span></samp>&rsquo;), &lsquo;<samp><span class="samp">no</span></samp>&rsquo; (no checks at
! all), &lsquo;<samp><span class="samp">all</span></samp>&rsquo; (all but &lsquo;<samp><span class="samp">valgrind</span></samp>&rsquo;), &lsquo;<samp><span class="samp">release</span></samp>&rsquo; (cheapest
! checks &lsquo;<samp><span class="samp">assert,runtime</span></samp>&rsquo;) or &lsquo;<samp><span class="samp">none</span></samp>&rsquo; (same as &lsquo;<samp><span class="samp">no</span></samp>&rsquo;). 
! Individual checks can be enabled with these flags &lsquo;<samp><span class="samp">assert</span></samp>&rsquo;,
! &lsquo;<samp><span class="samp">df</span></samp>&rsquo;, &lsquo;<samp><span class="samp">fold</span></samp>&rsquo;, &lsquo;<samp><span class="samp">gc</span></samp>&rsquo;, &lsquo;<samp><span class="samp">gcac</span></samp>&rsquo;, &lsquo;<samp><span class="samp">misc</span></samp>&rsquo;, &lsquo;<samp><span class="samp">rtl</span></samp>&rsquo;,
! &lsquo;<samp><span class="samp">rtlflag</span></samp>&rsquo;, &lsquo;<samp><span class="samp">runtime</span></samp>&rsquo;, &lsquo;<samp><span class="samp">tree</span></samp>&rsquo;, &lsquo;<samp><span class="samp">extra</span></samp>&rsquo; and &lsquo;<samp><span class="samp">valgrind</span></samp>&rsquo;. 
! &lsquo;<samp><span class="samp">extra</span></samp>&rsquo; adds for &lsquo;<samp><span class="samp">misc</span></samp>&rsquo; checking extra checks that might affect
  code generation and should therefore not differ between stage1 and later
  stages.
! 
!      <p>The &lsquo;<samp><span class="samp">valgrind</span></samp>&rsquo; check requires the external <samp><span class="command">valgrind</span></samp>
  simulator, available from <a href="http://valgrind.org/">http://valgrind.org/</a>.  The
! &lsquo;<samp><span class="samp">df</span></samp>&rsquo;, &lsquo;<samp><span class="samp">rtl</span></samp>&rsquo;, &lsquo;<samp><span class="samp">gcac</span></samp>&rsquo; and &lsquo;<samp><span class="samp">valgrind</span></samp>&rsquo; checks are very expensive. 
! To disable all checking, &lsquo;<samp><span class="samp">--disable-checking</span></samp>&rsquo; or
! &lsquo;<samp><span class="samp">--enable-checking=none</span></samp>&rsquo; must be explicitly requested.  Disabling
  assertions will make the compiler and runtime slightly faster but
  increase the risk of undetected internal errors causing wrong code to be
  generated.
! 
!      <br><dt><code>--disable-stage1-checking</code><dt><code>--enable-stage1-checking</code><dt><code>--enable-stage1-checking=</code><var>list</var><dd>If no <samp><span class="option">--enable-checking</span></samp> option is specified the stage1
! compiler will be built with &lsquo;<samp><span class="samp">yes</span></samp>&rsquo; checking enabled, otherwise
  the stage1 checking flags are the same as specified by
! <samp><span class="option">--enable-checking</span></samp>.  To build the stage1 compiler with
! different checking options use <samp><span class="option">--enable-stage1-checking</span></samp>. 
! The list of checking options is the same as for <samp><span class="option">--enable-checking</span></samp>. 
  If your system is too slow or too small to bootstrap a released compiler
! with checking for stage1 enabled, you can use &lsquo;<samp><span class="samp">--disable-stage1-checking</span></samp>&rsquo;
  to disable checking for the stage1 compiler.
! 
!      <br><dt><code>--enable-coverage</code><dt><code>--enable-coverage=</code><var>level</var><dd>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
  <var>level</var> argument controls whether the compiler is built optimized or
! not, values are &lsquo;<samp><span class="samp">opt</span></samp>&rsquo; and &lsquo;<samp><span class="samp">noopt</span></samp>&rsquo;.  For coverage analysis you
  want to disable optimization, for performance analysis you want to
  enable optimization.  When coverage is enabled, the default level is
  without optimization.
! 
!      <br><dt><code>--enable-gather-detailed-mem-stats</code><dd>When this option is specified more detailed information on memory
  allocation is gathered.  This information is printed when using
! <samp><span class="option">-fmem-report</span></samp>.
! 
!      <br><dt><code>--enable-valgrind-annotations</code><dd>Mark selected memory related operations in the compiler when run under
  valgrind to suppress false positives.
! 
!      <br><dt><code>--enable-nls</code><dt><code>--disable-nls</code><dd>The <samp><span class="option">--enable-nls</span></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><span class="option">--disable-nls</span></samp> option disables NLS.
! 
!      <br><dt><code>--with-included-gettext</code><dd>If NLS is enabled, the <samp><span class="option">--with-included-gettext</span></samp> option causes the build
! procedure to prefer its copy of GNU <samp><span class="command">gettext</span></samp>.
! 
!      <br><dt><code>--with-catgets</code><dd>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's copy of the GNU
! <code>gettext</code> library.  The <samp><span class="option">--with-catgets</span></samp> option causes the
! build procedure to use the host's <code>catgets</code> in this situation.
! 
!      <br><dt><code>--with-libiconv-prefix=</code><var>dir</var><dd>Search for libiconv header files in <samp><var>dir</var><span class="file">/include</span></samp> and
! libiconv library files in <samp><var>dir</var><span class="file">/lib</span></samp>.
! 
!      <br><dt><code>--enable-obsolete</code><dd>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
  error message.
! 
!      <p>All support for systems which have been obsoleted in one release of GCC
  is removed entirely in the next major release, unless someone steps
  forward to maintain the port.
! 
!      <br><dt><code>--enable-decimal-float</code><dt><code>--enable-decimal-float=yes</code><dt><code>--enable-decimal-float=no</code><dt><code>--enable-decimal-float=bid</code><dt><code>--enable-decimal-float=dpd</code><dt><code>--disable-decimal-float</code><dd>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><span class="samp">bid</span></samp>&rsquo; or &lsquo;<samp><span class="samp">dpd</span></samp>&rsquo;).  The &lsquo;<samp><span class="samp">bid</span></samp>&rsquo; (binary integer decimal)
! format is default on i386 and x86_64 systems, and the &lsquo;<samp><span class="samp">dpd</span></samp>&rsquo;
  (densely packed decimal) format is default on PowerPC systems.
! 
!      <br><dt><code>--enable-fixed-point</code><dt><code>--disable-fixed-point</code><dd>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.
! 
!      <br><dt><code>--with-long-double-128</code><dd>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 are used, the default will be
  128-bit <code>long double</code> when built against GNU C Library 2.4 and later,
  64-bit <code>long double</code> otherwise.
! 
!      <br><dt><code>--enable-fdpic</code><dd>On SH Linux systems, generate ELF FDPIC code.
! 
!      <br><dt><code>--with-gmp=</code><var>pathname</var><dt><code>--with-gmp-include=</code><var>pathname</var><dt><code>--with-gmp-lib=</code><var>pathname</var><dt><code>--with-mpfr=</code><var>pathname</var><dt><code>--with-mpfr-include=</code><var>pathname</var><dt><code>--with-mpfr-lib=</code><var>pathname</var><dt><code>--with-mpc=</code><var>pathname</var><dt><code>--with-mpc-include=</code><var>pathname</var><dt><code>--with-mpc-lib=</code><var>pathname</var><dd>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
  can explicitly specify the directory where they are installed
! (&lsquo;<samp><span class="samp">--with-gmp=</span><var>gmpinstalldir</var></samp>&rsquo;,
! &lsquo;<samp><span class="samp">--with-mpfr=</span><var>mpfrinstalldir</var></samp>&rsquo;,
! &lsquo;<samp><span class="samp">--with-mpc=</span><var>mpcinstalldir</var></samp>&rsquo;).  The
! <samp><span class="option">--with-gmp=</span><var>gmpinstalldir</var></samp> option is shorthand for
! <samp><span class="option">--with-gmp-lib=</span><var>gmpinstalldir</var><span class="option">/lib</span></samp> and
! <samp><span class="option">--with-gmp-include=</span><var>gmpinstalldir</var><span class="option">/include</span></samp>.  Likewise the
! <samp><span class="option">--with-mpfr=</span><var>mpfrinstalldir</var></samp> option is shorthand for
! <samp><span class="option">--with-mpfr-lib=</span><var>mpfrinstalldir</var><span class="option">/lib</span></samp> and
! <samp><span class="option">--with-mpfr-include=</span><var>mpfrinstalldir</var><span class="option">/include</span></samp>, also the
! <samp><span class="option">--with-mpc=</span><var>mpcinstalldir</var></samp> option is shorthand for
! <samp><span class="option">--with-mpc-lib=</span><var>mpcinstalldir</var><span class="option">/lib</span></samp> and
! <samp><span class="option">--with-mpc-include=</span><var>mpcinstalldir</var><span class="option">/include</span></samp>.  If these
  shorthand assumptions are not correct, you can use the explicit
  include and lib options directly.  You might also need to ensure the
  shared libraries can be found by the dynamic linker when building and
  using GCC, for example by setting the runtime shared library path
! variable (<samp><span class="env">LD_LIBRARY_PATH</span></samp> on GNU/Linux and Solaris systems).
! 
!      <p>These flags are applicable to the host platform only.  When building
  a cross compiler, they will not be used to configure target libraries.
! 
!      <br><dt><code>--with-isl=</code><var>pathname</var><dt><code>--with-isl-include=</code><var>pathname</var><dt><code>--with-isl-lib=</code><var>pathname</var><dd>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><span class="samp">--with-isl=</span><var>islinstalldir</var></samp>&rsquo;). The
! <samp><span class="option">--with-isl=</span><var>islinstalldir</var></samp> option is shorthand for
! <samp><span class="option">--with-isl-lib=</span><var>islinstalldir</var><span class="option">/lib</span></samp> and
! <samp><span class="option">--with-isl-include=</span><var>islinstalldir</var><span class="option">/include</span></samp>. If this
  shorthand assumption is not correct, you can use the explicit
  include and lib options directly.
! 
!      <p>These flags are applicable to the host platform only.  When building
  a cross compiler, they will not be used to configure target libraries.
! 
!      <br><dt><code>--with-stage1-ldflags=</code><var>flags</var><dd>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><span class="option">--disable-bootstrap</span></samp>.  If <samp><span class="option">--with-stage1-libs</span></samp> is not set to a
! value, then the default is &lsquo;<samp><span class="samp">-static-libstdc++ -static-libgcc</span></samp>&rsquo;, if
  supported.
! 
!      <br><dt><code>--with-stage1-libs=</code><var>libs</var><dd>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><span class="option">--disable-bootstrap</span></samp>.
! 
!      <br><dt><code>--with-boot-ldflags=</code><var>flags</var><dd>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><span class="samp">-static-libstdc++ -static-libgcc</span></samp>&rsquo;.
! 
!      <br><dt><code>--with-boot-libs=</code><var>libs</var><dd>This option may be used to set libraries to be used when linking stage 2
  and later when bootstrapping GCC.
! 
!      <br><dt><code>--with-debug-prefix-map=</code><var>map</var><dd>Convert source directory names using <samp><span class="option">-fdebug-prefix-map</span></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><span class="samp">=</span><var>new</var></samp>&rsquo;.
! 
!      <br><dt><code>--enable-linker-build-id</code><dd>Tells GCC to pass <samp><span class="option">--build-id</span></samp> option to the linker for all final
! links (links performed without the <samp><span class="option">-r</span></samp> or <samp><span class="option">--relocatable</span></samp>
  option), if the linker supports it.  If you specify
! <samp><span class="option">--enable-linker-build-id</span></samp>, but your linker does not
! support <samp><span class="option">--build-id</span></samp> option, a warning is issued and the
! <samp><span class="option">--enable-linker-build-id</span></samp> option is ignored.  The default is off.
! 
!      <br><dt><code>--with-linker-hash-style=</code><var>choice</var><dd>Tells GCC to pass <samp><span class="option">--hash-style=</span><var>choice</var></samp> option to the
  linker for all final links. <var>choice</var> can be one of
! &lsquo;<samp><span class="samp">sysv</span></samp>&rsquo;, &lsquo;<samp><span class="samp">gnu</span></samp>&rsquo;, and &lsquo;<samp><span class="samp">both</span></samp>&rsquo; where &lsquo;<samp><span class="samp">sysv</span></samp>&rsquo; is the default.
! 
!      <br><dt><code>--enable-gnu-unique-object</code><dt><code>--disable-gnu-unique-object</code><dd>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.
! 
!      <br><dt><code>--with-diagnostics-color=</code><var>choice</var><dd>Tells GCC to use <var>choice</var> as the default for <samp><span class="option">-fdiagnostics-color=</span></samp>
  option (if not used explicitly on the command line).  <var>choice</var>
! can be one of &lsquo;<samp><span class="samp">never</span></samp>&rsquo;, &lsquo;<samp><span class="samp">auto</span></samp>&rsquo;, &lsquo;<samp><span class="samp">always</span></samp>&rsquo;, and &lsquo;<samp><span class="samp">auto-if-env</span></samp>&rsquo;
! where &lsquo;<samp><span class="samp">auto</span></samp>&rsquo; is the default.  &lsquo;<samp><span class="samp">auto-if-env</span></samp>&rsquo; means that
! <samp><span class="option">-fdiagnostics-color=auto</span></samp> will be the default if <code>GCC_COLORS</code>
  is present and non-empty in the environment, and
! <samp><span class="option">-fdiagnostics-color=never</span></samp> otherwise.
! 
!      <br><dt><code>--enable-lto</code><dt><code>--disable-lto</code><dd>Enable support for link-time optimization (LTO).  This is enabled by
! default, and may be disabled using <samp><span class="option">--disable-lto</span></samp>.
! 
!      <br><dt><code>--enable-linker-plugin-configure-flags=FLAGS</code><dt><code>--enable-linker-plugin-flags=FLAGS</code><dd>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
  specified to build plugins that are compatible to the linker.  For
  example, if you are building GCC for a 64-bit x86_64
! (&lsquo;<samp><span class="samp">x86_64-unknown-linux-gnu</span></samp>&rsquo;) host system, but have a 32-bit x86
! GNU/Linux (&lsquo;<samp><span class="samp">i686-pc-linux-gnu</span></samp>&rsquo;) linker executable (which is
  executable on the former system), you can configure GCC as follows for
  getting compatible linker plugins:
  
!      <pre class="smallexample">          % <var>srcdir</var>/configure \
!               --host=x86_64-unknown-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>
!      <br><dt><code>--with-plugin-ld=</code><var>pathname</var><dd>Enable an alternate linker to be used at link-time optimization (LTO)
! link time when <samp><span class="option">-fuse-linker-plugin</span></samp> is enabled. 
  This linker should have plugin support such as gold starting with
! version 2.20 or GNU ld starting with version 2.21. 
! See <samp><span class="option">-fuse-linker-plugin</span></samp> for details.
! 
!      <br><dt><code>--enable-canonical-system-headers</code><dt><code>--disable-canonical-system-headers</code><dd>Enable system header path canonicalization for <samp><span class="file">libcpp</span></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 may be disabled using
! <samp><span class="option">--disable-canonical-system-headers</span></samp>.
! 
!      <br><dt><code>--with-glibc-version=</code><var>major</var><code>.</code><var>minor</var><dd>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's header files, but this option may be
  needed when bootstrapping a cross toolchain without the header files
  available for building the initial bootstrap compiler.
! 
!      <p>If GCC is configured with some multilibs that use glibc and some that
! do not, this option applies only to the multilibs that use glibc. 
  However, such configurations may not work well as not all the relevant
  configuration in GCC is on a per-multilib basis.
! 
!      <br><dt><code>--enable-as-accelerator-for=</code><var>target</var><dd>Build as offload target compiler. Specify offload host triple by <var>target</var>.
! 
!      <br><dt><code>--enable-offload-targets=</code><var>target1</var><code>[=</code><var>path1</var><code>],...,</code><var>targetN</var><code>[=</code><var>pathN</var><code>]</code><dd>Enable offloading to targets <var>target1</var>, <small class="dots">...</small>, <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>, <small class="dots">...</small>, <var>pathN</var>.
  
!      <pre class="smallexample">          % <var>srcdir</var>/configure \
!               --enable-offload-target=i686-unknown-linux-gnu=/path/to/i686/compiler,x86_64-pc-linux-gnu
! </pre>
!      <p>If &lsquo;<samp><span class="samp">hsa</span></samp>&rsquo; is specified as one of the targets, the compiler will be
  built with support for HSA GPU accelerators.  Because the same
  compiler will emit the accelerator code, no path should be specified.
! 
!      <br><dt><code>--with-hsa-runtime=</code><var>pathname</var><dt><code>--with-hsa-runtime-include=</code><var>pathname</var><dt><code>--with-hsa-runtime-lib=</code><var>pathname</var><dd>
! If you configure GCC with HSA offloading 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><span class="option">--with-hsa-runtime=</span><var>hsainstalldir</var></samp> option is a
  shorthand for
! <samp><span class="option">--with-hsa-runtime-lib=</span><var>hsainstalldir</var><span class="option">/lib</span></samp> and
! <samp><span class="option">--with-hsa-runtime-include=</span><var>hsainstalldir</var><span class="option">/include</span></samp>. 
  </dl>
  
! <h4 class="subheading"><a name="TOC3"></a>Cross-Compiler-Specific Options</h4>
! 
  <p>The following options only apply to building cross compilers.
! 
!      <dl>
! <dt><code>--with-sysroot</code><dt><code>--with-sysroot=</code><var>dir</var><dd>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
  searched for in there.  More specifically, this acts as if
! <samp><span class="option">--sysroot=</span><var>dir</var></samp> was added to the default options of the built
  compiler.  The specified directory is not copied into the
! install tree, unlike the options <samp><span class="option">--with-headers</span></samp> and
! <samp><span class="option">--with-libs</span></samp> that this option obsoletes.  The default value,
! in case <samp><span class="option">--with-sysroot</span></samp> is not given an argument, is
! <samp><span class="option">${gcc_tooldir}/sys-root</span></samp>.  If the specified directory is a
! subdirectory of <samp><span class="option">${exec_prefix}</span></samp>, then it will be found relative to
  the GCC binaries if the installation tree is moved.
! 
!      <p>This option affects the system root for the compiler used to build
  target libraries (which runs on the build system) and the compiler newly
  installed with <code>make install</code>; it does not affect the compiler which is
  used to build GCC itself.
! 
!      <p>If you specify the <samp><span class="option">--with-native-system-header-dir=</span><var>dirname</var></samp>
  option then the compiler will search that directory within <var>dirname</var> for
! native system headers rather than the default <samp><span class="file">/usr/include</span></samp>.
! 
!      <br><dt><code>--with-build-sysroot</code><dt><code>--with-build-sysroot=</code><var>dir</var><dd>Tells GCC to consider <var>dir</var> as the system root (see
! <samp><span class="option">--with-sysroot</span></samp>) while building target libraries, instead of
! the directory specified with <samp><span class="option">--with-sysroot</span></samp>.  This option is
! only useful when you are already using <samp><span class="option">--with-sysroot</span></samp>.  You
! can use <samp><span class="option">--with-build-sysroot</span></samp> when you are configuring with
! <samp><span class="option">--prefix</span></samp> set to a directory that is different from the one in
  which you are installing GCC and your target libraries.
! 
!      <p>This option affects the system root for the compiler used to build
  target libraries (which runs on the build system); it does not affect
  the compiler which is used to build GCC itself.
! 
!      <p>If you specify the <samp><span class="option">--with-native-system-header-dir=</span><var>dirname</var></samp>
  option then the compiler will search that directory within <var>dirname</var> for
! native system headers rather than the default <samp><span class="file">/usr/include</span></samp>.
! 
!      <br><dt><code>--with-headers</code><dt><code>--with-headers=</code><var>dir</var><dd>Deprecated in favor of <samp><span class="option">--with-sysroot</span></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
! files.  These include files will be copied into the <samp><span class="file">gcc</span></samp> install
! directory.  <em>This option with the </em><var>dir</var><em> argument is required</em> when
! building a cross compiler, if <samp><var>prefix</var><span class="file">/</span><var>target</var><span class="file">/sys-include</span></samp>
! doesn't pre-exist.  If <samp><var>prefix</var><span class="file">/</span><var>target</var><span class="file">/sys-include</span></samp> does
! pre-exist, the <var>dir</var> argument may be omitted.  <samp><span class="command">fixincludes</span></samp>
  will be run on these files to make them compatible with GCC.
! 
!      <br><dt><code>--without-headers</code><dd>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.
! 
!      <br><dt><code>--with-libs</code><dt><code>--with-libs="</code><var>dir1</var> <var>dir2</var><code> ... </code><var>dirN</var><code>"</code><dd>Deprecated in favor of <samp><span class="option">--with-sysroot</span></samp>. 
  Specifies a list of directories which contain the target runtime
! libraries.  These libraries will be copied into the <samp><span class="file">gcc</span></samp> install
  directory.  If the directory list is omitted, this option has no
  effect.
! 
!      <br><dt><code>--with-newlib</code><dd>Specifies that &lsquo;<samp><span class="samp">newlib</span></samp>&rsquo; is
  being used as the target C library.  This causes <code>__eprintf</code> to be
! omitted from <samp><span class="file">libgcc.a</span></samp> on the assumption that it will be provided by
! &lsquo;<samp><span class="samp">newlib</span></samp>&rsquo;.
! 
!      <br><dt><code>--with-avrlibc</code><dd>Specifies that &lsquo;<samp><span class="samp">AVR-Libc</span></samp>&rsquo; is
  being used as the target C library.  This causes float support
! functions like <code>__addsf3</code> to be omitted from <samp><span class="file">libgcc.a</span></samp> on
! the assumption that it will be provided by <samp><span class="file">libm.a</span></samp>.  For more
! technical details, cf. <a href="http://gcc.gnu.org/PR54461">PR54461</a>. 
  This option is only supported for the AVR target.  It is not supported for
  RTEMS configurations, which currently use newlib.  The option is
  supported since version 4.7.2 and is the default in 4.8.0 and newer.
! 
!      <br><dt><code>--with-nds32-lib=</code><var>library</var><dd>Specifies that <var>library</var> setting is used for building <samp><span class="file">libgcc.a</span></samp>. 
! Currently, the valid <var>library</var> is &lsquo;<samp><span class="samp">newlib</span></samp>&rsquo; or &lsquo;<samp><span class="samp">mculib</span></samp>&rsquo;. 
  This option is only supported for the NDS32 target.
! 
!      <br><dt><code>--with-build-time-tools=</code><var>dir</var><dd>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
  GCC on, and the system where you will deploy it.
! 
!      <p>For example, on an &lsquo;<samp><span class="samp">ia64-hp-hpux</span></samp>&rsquo; system, you may have the GNU
! assembler and linker in <samp><span class="file">/usr/bin</span></samp>, and the native tools in a
  different path, and build a toolchain that expects to find the
! native tools in <samp><span class="file">/usr/bin</span></samp>.
! 
!      <p>When you use this option, you should ensure that <var>dir</var> includes
! <samp><span class="command">ar</span></samp>, <samp><span class="command">as</span></samp>, <samp><span class="command">ld</span></samp>, <samp><span class="command">nm</span></samp>,
! <samp><span class="command">ranlib</span></samp> and <samp><span class="command">strip</span></samp> if necessary, and possibly
! <samp><span class="command">objdump</span></samp>.  Otherwise, GCC may use an inconsistent set of
! tools. 
  </dl>
  
! <h5 class="subsubheading"><a name="TOC4"></a>Overriding <samp><span class="command">configure</span></samp> test results</h5>
  
  <p>Sometimes, it might be necessary to override the result of some
! <samp><span class="command">configure</span></samp> test, for example in order to ease porting to a new
! system or work around a bug in a test.  The toplevel <samp><span class="command">configure</span></samp>
  script provides three variables for this:
! 
!      <dl>
! <dt><code>build_configargs</code><dd><a name="index-g_t_0040code_007bbuild_005fconfigargs_007d-3"></a>The contents of this variable is passed to all build <samp><span class="command">configure</span></samp>
  scripts.
! 
!      <br><dt><code>host_configargs</code><dd><a name="index-g_t_0040code_007bhost_005fconfigargs_007d-4"></a>The contents of this variable is passed to all host <samp><span class="command">configure</span></samp>
  scripts.
! 
!      <br><dt><code>target_configargs</code><dd><a name="index-g_t_0040code_007btarget_005fconfigargs_007d-5"></a>The contents of this variable is passed to all target <samp><span class="command">configure</span></samp>
  scripts.
  
!    </dl>
! 
!    <p>In order to avoid shell and <samp><span class="command">make</span></samp> quoting issues for complex
! overrides, you can pass a setting for <samp><span class="env">CONFIG_SITE</span></samp> and set
  variables in the site file.
! 
! <h4 class="subheading"><a name="TOC5"></a>Objective-C-Specific Options</h4>
  
  <p>The following options apply to the build of the Objective-C runtime library.
! 
!      <dl>
! <dt><code>--enable-objc-gc</code><dd>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="http://www.hboehm.info/gc/">http://www.hboehm.info/gc/</a>).  This library needs to be
  available for each multilib variant, unless configured with
! <samp><span class="option">--enable-objc-gc=&lsquo;</span><samp><span class="samp">auto</span></samp><span class="option">&rsquo;</span></samp> in which case the build of the
  additional runtime library is skipped when not available and the build
  continues.
! 
!      <br><dt><code>--with-target-bdw-gc=</code><var>list</var><dt><code>--with-target-bdw-gc-include=</code><var>list</var><dt><code>--with-target-bdw-gc-lib=</code><var>list</var><dd>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><span class="samp">=</span><var>path</var></samp>&rsquo;, where the default multilib key
! is named as &lsquo;<samp><span class="samp">.</span></samp>&rsquo; (dot), or is omitted (e.g. 
! &lsquo;<samp><span class="samp">--with-target-bdw-gc=/opt/bdw-gc,32=/opt-bdw-gc32</span></samp>&rsquo;).
! 
!      <p>The options <samp><span class="option">--with-target-bdw-gc-include</span></samp> and
! <samp><span class="option">--with-target-bdw-gc-lib</span></samp> must always be specified together
  for each multilib variant and they take precedence over
! <samp><span class="option">--with-target-bdw-gc</span></samp>.  If <samp><span class="option">--with-target-bdw-gc-include</span></samp>
  is missing values for a multilib, then the value for the default
! multilib is used (e.g. &lsquo;<samp><span class="samp">--with-target-bdw-gc-include=/opt/bdw-gc/include</span></samp>&rsquo;
! &lsquo;<samp><span class="samp">--with-target-bdw-gc-lib=/opt/bdw-gc/lib64,32=/opt-bdw-gc/lib32</span></samp>&rsquo;). 
  If none of these options are specified, the library is assumed in
! default locations. 
  </dl>
  
!    <p><hr />
  <p><a href="./index.html">Return to the GCC Installation page</a>
  
- <!-- ***Building**************************************************************** -->
- <!-- ***Testing***************************************************************** -->
- <!-- ***Final install*********************************************************** -->
- <!-- ***Binaries**************************************************************** -->
- <!-- ***Specific**************************************************************** -->
- <!-- ***Old documentation****************************************************** -->
- <!-- ***GFDL******************************************************************** -->
- <!-- *************************************************************************** -->
- <!-- Part 6 The End of the Document -->
- </body></html>
  
--- 941,1934 ----
  in <code>lwxc1</code> type instructions.  This assumption holds true in a
  pure 32-bit environment and can hold true in a 64-bit environment if
  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
  implement these instructions differently.  There are two known cores
  that implement these as fused operations instead of unfused (where
  unfused is normally expected).  Disabling these instructions is the
  only way to ensure compatible code is generated; this will incur
  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>--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
  destructors, but requires __cxa_atexit in libc.  This option is currently
  only available on systems with GNU libc.  When enabled, this will cause
! <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
  opposite effect.  If neither option is specified, the configure script
  will try to guess whether the <code>.init_array</code> and
  <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-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
  tree is present.  If you have changed the sources and want to rebuild the
! catalog, configuring with <samp>--enable-maintainer-mode</samp> will enable
  this.  Note that you need a recent version of the <code>gettext</code> tools
  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
! the target (e.g. host is i686-linux, target is i486-linux).
  Starting from GCC 4.2, to do this you have to configure explicitly
! 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 SVN development tree.  When building GCC from that development tree,
  or from one of our snapshots, those generated files are placed in your
  build directory, which allows for the source to be in a readonly
  directory.
! </p>
! <p>If you configure with <samp>--enable-generated-files-in-srcdir</samp> then those
  generated files will go into the source directory.  This is mainly intended
  for generating release or prerelease tarballs of the GCC sources, since it
  is not a requirement that the users of source releases to have flex, Bison,
  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
! addition, &lsquo;<samp>libstdc++</samp>&rsquo;&rsquo;s include files will be installed into
  <samp><var>libdir</var></samp> unless you overruled it by using
! <samp>--with-gxx-include-dir=<var>dirname</var></samp>.  Using this option is
  particularly useful if you intend to use several versions of GCC in
! parallel.  This is currently supported by &lsquo;<samp>libgfortran</samp>&rsquo;,
! &lsquo;<samp>libstdc++</samp>&rsquo;, and &lsquo;<samp>libobjc</samp>&rsquo;.
! </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,
  <code>Import Files</code> as members of <code>Archive Library</code> files allow for
  <strong>filename-based versioning</strong> of shared libraries as seen on Linux/SVR4,
! where this is called the &quot;SONAME&quot;. But as they prevent static linking,
  <code>Import Files</code> may be used with <code>Runtime Linking</code> only, where the
! 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
!   </li><li> with the <code>Shared Object</code> file as archive member named
!   &lsquo;<samp>libNAME.so.V</samp>&rsquo; (except for &lsquo;<samp>libgcc_s</samp>&rsquo;, where the <code>Shared
!   Object</code> file is named &lsquo;<samp>shr.o</samp>&rsquo; for backwards compatibility), which
!   <ul class="no-bullet">
! <li>- is used for runtime loading from inside the &lsquo;<samp>libNAME.a</samp>&rsquo; file
!    </li><li>- is used for dynamic loading via
!    <code>dlopen(&quot;libNAME.a(libNAME.so.V)&quot;, RTLD_MEMBER)</code>
!    </li><li>- is used for shared linking
!    </li><li>- is used for static linking, so no separate <code>Static Archive
     Library</code> file is needed
!   </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
!  </li><li> with the <code>Shared Object</code> file as archive member named
!  &lsquo;<samp>shr.o</samp>&rsquo;, which
!   <ul class="no-bullet">
! <li>- is created with the <code>-G linker flag</code>
!    </li><li>- has the <code>F_LOADONLY</code> flag set
!    </li><li>- is used for runtime loading from inside the &lsquo;<samp>libNAME.so.V</samp>&rsquo; file
!    </li><li>- is used for dynamic loading via <code>dlopen(&quot;libNAME.so.V(shr.o)&quot;,
     RTLD_MEMBER)</code>
!   </li></ul>
! </li><li> with the <code>Import File</code> as archive member named &lsquo;<samp>shr.imp</samp>&rsquo;,
   which
!   <ul class="no-bullet">
! <li>- refers to &lsquo;<samp>libNAME.so.V(shr.o)</samp>&rsquo; as the &quot;SONAME&quot;, to be recorded
     in the <code>Loader Section</code> of subsequent binaries
!    </li><li>- indicates whether &lsquo;<samp>libNAME.so.V(shr.o)</samp>&rsquo; is 32 or 64 bit
!    </li><li>- lists all the public symbols exported by &lsquo;<samp>lib.so.V(shr.o)</samp>&rsquo;,
!    eventually decorated with the <code>&lsquo;<samp>weak</samp>&rsquo; Keyword</code>
!    </li><li>- is necessary for shared linking against &lsquo;<samp>lib.so.V(shr.o)</samp>&rsquo;
!    </li></ul>
! </li></ul>
! <p>A symbolic link using the &lsquo;<samp>libNAME.so</samp>&rsquo; filename scheme is created:
!   </p><ul>
! <li> pointing to the &lsquo;<samp>libNAME.so.V</samp>&rsquo; <code>Shared Archive Library</code> file
!   </li><li> to permit the <code>ld Command</code> to find &lsquo;<samp>lib.so.V(shr.imp)</samp>&rsquo; via
!   the &lsquo;<samp>-lNAME</samp>&rsquo; argument (requires <code>Runtime Linking</code> to be enabled)
!   </li><li> to permit dynamic loading of &lsquo;<samp>lib.so.V(shr.o)</samp>&rsquo; without the need
!   to specify the version number via <code>dlopen(&quot;libNAME.so(shr.o)&quot;,
    RTLD_MEMBER)</code>
!   </li></ul>
! </dd>
! </dl>
  
! <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
!  </li><li> with all the <code>Static Object</code> files as archive members, which
!   <ul class="no-bullet">
! <li>- are used for static linking
!   </li></ul>
! </li></ul>
! </dd>
! </dl>
  
! <p>While the aix-soname=&lsquo;<samp>svr4</samp>&rsquo; option does not create <code>Shared Object</code>
  files as members of unversioned <code>Archive Library</code> files any more, package
  managers still are responsible to
  <a href="./specific.html#TransferAixShobj">transfer</a> <code>Shared Object</code> files
  found as member of a previously installed unversioned <code>Archive Library</code>
  file into the newly installed <code>Archive Library</code> file with the same
  filename.
! </p>
! <p><em>WARNING:</em> Creating <code>Shared Object</code> files with <code>Runtime Linking</code>
  enabled may bloat the TOC, eventually leading to <code>TOC overflow</code> errors,
! requiring the use of either the <samp>-Wl,-bbigtoc</samp> linker flag (seen to
  break with the <code>GDB</code> debugger) or some of the TOC-related compiler flags,
  see &ldquo;RS/6000 and PowerPC Options&rdquo; in the main manual.
! </p>
! <p><samp>--with-aix-soname</samp> is currently supported by &lsquo;<samp>libgcc_s</samp>&rsquo; only, so
  this option is still experimental and not for normal use yet.
! </p>
! <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>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, 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
! exception is <code>jit</code> language, which requires
! <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
  bootstrapped C compiler.  The list of valid values is the same as for
! <samp>--enable-languages</samp>, and the option <code>all</code> will select all
! of the languages enabled by <samp>--enable-languages</samp>.  This option is
  primarily useful for GCC development; for instance, when a development
  version of the compiler cannot bootstrap due to compiler bugs, or when
  one is debugging front ends other than the C front end.  When this
  option is used, one can then build the target libraries for the
! specified languages with the stage-1 compiler by using <code>make
! stage1-bubble all-target</code>, or run the testsuite on the stage-1 compiler
! 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
  provided by the Linux distribution.  In general, this option is
  intended for the developers of GCC, and it is not intended for general
  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.
  powerpc-linux for powerpc64-linux, only generates 32-bit code.  This
  option enables the 32-bit target to be a bi-arch compiler, which is
  useful when you want a bi-arch compiler that defaults to 32-bit, and
! you are building a bi-arch or multi-arch binutils in a combined tree.
  On mips-linux, this will build a tri-arch compiler (ABI o32/n32/64),
! defaulted to o32.
  Currently, this option only affects sparc-linux, powerpc-linux, x86-linux,
  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-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
! <samp>--enable-win32-registry=<var>key</var></samp> option.  Vendors and distributors
  who use custom installers are encouraged to provide a different key,
  perhaps one comprised of vendor name and GCC version number, to
  avoid conflict with existing installations.  This feature is enabled
! by default, and can be disabled by <samp>--disable-win32-registry</samp>
  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
  development trunk.  However it defaults to off for release branches and
! final releases.  The specific files which get <samp>-Werror</samp> are
  controlled by the Makefiles.
! </p>
! </dd>
! <dt><code>--enable-checking</code></dt>
! <dt><code>--enable-checking=<var>list</var></code></dt>
! <dd><p>When you specify this option, the compiler is built to perform internal
  consistency checks of the requested complexity.  This does not change the
  generated code, but adds error checking within the compiler.  This will
  slow down the compiler and may only work properly if you are building
! the compiler with GCC.  This is &lsquo;<samp>yes,extra</samp>&rsquo; by default when building
! from SVN or snapshots, but &lsquo;<samp>release</samp>&rsquo; for releases.  The default
! for building the stage1 compiler is &lsquo;<samp>yes</samp>&rsquo;.  More control
  over the checks may be had by specifying <var>list</var>.  The categories of
! checks available are &lsquo;<samp>yes</samp>&rsquo; (most common checks
! &lsquo;<samp>assert,misc,tree,gc,rtlflag,runtime</samp>&rsquo;), &lsquo;<samp>no</samp>&rsquo; (no checks at
! all), &lsquo;<samp>all</samp>&rsquo; (all but &lsquo;<samp>valgrind</samp>&rsquo;), &lsquo;<samp>release</samp>&rsquo; (cheapest
! checks &lsquo;<samp>assert,runtime</samp>&rsquo;) or &lsquo;<samp>none</samp>&rsquo; (same as &lsquo;<samp>no</samp>&rsquo;).
! Individual checks can be enabled with these flags &lsquo;<samp>assert</samp>&rsquo;,
! &lsquo;<samp>df</samp>&rsquo;, &lsquo;<samp>fold</samp>&rsquo;, &lsquo;<samp>gc</samp>&rsquo;, &lsquo;<samp>gcac</samp>&rsquo;, &lsquo;<samp>misc</samp>&rsquo;, &lsquo;<samp>rtl</samp>&rsquo;,
! &lsquo;<samp>rtlflag</samp>&rsquo;, &lsquo;<samp>runtime</samp>&rsquo;, &lsquo;<samp>tree</samp>&rsquo;, &lsquo;<samp>extra</samp>&rsquo; and &lsquo;<samp>valgrind</samp>&rsquo;.
! &lsquo;<samp>extra</samp>&rsquo; adds for &lsquo;<samp>misc</samp>&rsquo; checking extra checks that might affect
  code generation and should therefore not differ between stage1 and later
  stages.
! </p>
! <p>The &lsquo;<samp>valgrind</samp>&rsquo; check requires the external <code>valgrind</code>
  simulator, available from <a href="http://valgrind.org/">http://valgrind.org/</a>.  The
! &lsquo;<samp>df</samp>&rsquo;, &lsquo;<samp>rtl</samp>&rsquo;, &lsquo;<samp>gcac</samp>&rsquo; and &lsquo;<samp>valgrind</samp>&rsquo; checks are very expensive.
! To disable all checking, &lsquo;<samp>--disable-checking</samp>&rsquo; or
! &lsquo;<samp>--enable-checking=none</samp>&rsquo; must be explicitly requested.  Disabling
  assertions will make the compiler and runtime slightly faster but
  increase the risk of undetected internal errors causing wrong code to be
  generated.
! </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>If no <samp>--enable-checking</samp> option is specified the stage1
! compiler will be built with &lsquo;<samp>yes</samp>&rsquo; checking enabled, otherwise
  the stage1 checking flags are the same as specified by
! <samp>--enable-checking</samp>.  To build the stage1 compiler with
! different checking options use <samp>--enable-stage1-checking</samp>.
! The list of checking options is the same as for <samp>--enable-checking</samp>.
  If your system is too slow or too small to bootstrap a released compiler
! with checking for stage1 enabled, you can use &lsquo;<samp>--disable-stage1-checking</samp>&rsquo;
  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
  <var>level</var> argument controls whether the compiler is built optimized or
! not, values are &lsquo;<samp>opt</samp>&rsquo; and &lsquo;<samp>noopt</samp>&rsquo;.  For coverage analysis you
  want to disable optimization, for performance analysis you want to
  enable optimization.  When coverage is enabled, the default level is
  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
! <code>gettext</code> library.  The <samp>--with-catgets</samp> option causes the
! 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
  error message.
! </p>
! <p>All support for systems which have been obsoleted in one release of GCC
  is removed entirely in the next major release, unless someone steps
  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.
  When neither of these configure options are used, the default will be
  128-bit <code>long double</code> when built against GNU C Library 2.4 and later,
  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
! Linux systems and on big endian 64-bit systems where the default cpu
! is at least power7 (i.e. <samp>--with-cpu=power7</samp>,
! <samp>--with-cpu=power8</samp>, or <samp>--with-cpu=power9</samp> is used).
! </p>
! <p>If you use the <samp>--with-long-double-64</samp> configuration option,
! the <samp>--with-long-double-format=ibm</samp> and
! <samp>--with-long-double-format=ieee</samp> options are ignored.
! </p>
! <p>The default <code>long double</code> format is to use IBM extended double.
! Until all of the libraries are converted to use IEEE 128-bit floating
! point, it is not recommended to use
! <samp>--with-long-double-format=ieee</samp>.
! </p>
! <p>On little endian PowerPC Linux systems, if you explicitly set the
! <code>long double</code> type, it will build multilibs to allow you to
! select either <code>long double</code> format, unless you disable multilibs
! with the <code>--disable-multilib</code> option.  At present,
! <code>long double</code> multilibs are not built on big endian PowerPC Linux
! systems.  If you are building multilibs, you will need to configure
! the compiler using the <samp>--with-system-zlib</samp> option.
! </p>
! <p>If you do not set the <code>long double</code> type explicitly, no multilibs
! will be generated.
! </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
  can explicitly specify the directory where they are installed
! (&lsquo;<samp>--with-gmp=<var>gmpinstalldir</var></samp>&rsquo;,
! &lsquo;<samp>--with-mpfr=<var>mpfrinstalldir</var></samp>&rsquo;,
! &lsquo;<samp>--with-mpc=<var>mpcinstalldir</var></samp>&rsquo;).  The
! <samp>--with-gmp=<var>gmpinstalldir</var></samp> option is shorthand for
! <samp>--with-gmp-lib=<var>gmpinstalldir</var>/lib</samp> and
! <samp>--with-gmp-include=<var>gmpinstalldir</var>/include</samp>.  Likewise the
! <samp>--with-mpfr=<var>mpfrinstalldir</var></samp> option is shorthand for
! <samp>--with-mpfr-lib=<var>mpfrinstalldir</var>/lib</samp> and
! <samp>--with-mpfr-include=<var>mpfrinstalldir</var>/include</samp>, also the
! <samp>--with-mpc=<var>mpcinstalldir</var></samp> option is shorthand for
! <samp>--with-mpc-lib=<var>mpcinstalldir</var>/lib</samp> and
! <samp>--with-mpc-include=<var>mpcinstalldir</var>/include</samp>.  If these
  shorthand assumptions are not correct, you can use the explicit
  include and lib options directly.  You might also need to ensure the
  shared libraries can be found by the dynamic linker when building and
  using GCC, for example by setting the runtime shared library path
! variable (<code>LD_LIBRARY_PATH</code> on GNU/Linux and Solaris systems).
! </p>
! <p>These flags are applicable to the host platform only.  When building
  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
! <samp>--with-isl=<var>islinstalldir</var></samp> option is shorthand for
! <samp>--with-isl-lib=<var>islinstalldir</var>/lib</samp> and
! <samp>--with-isl-include=<var>islinstalldir</var>/include</samp>. If this
  shorthand assumption is not correct, you can use the explicit
  include and lib options directly.
! </p>
! <p>These flags are applicable to the host platform only.  When building
  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
! value, then the default is &lsquo;<samp>-static-libstdc++ -static-libgcc</samp>&rsquo;, if
  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
! <samp>--enable-linker-build-id</samp>, but your linker does not
! support <samp>--build-id</samp> option, a warning is issued and the
! <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;
! where &lsquo;<samp>auto</samp>&rsquo; is the default.  &lsquo;<samp>auto-if-env</samp>&rsquo; means that
! <samp>-fdiagnostics-color=auto</samp> will be the default if <code>GCC_COLORS</code>
  is present and non-empty in the environment, and
! <samp>-fdiagnostics-color=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
  specified to build plugins that are compatible to the linker.  For
  example, if you are building GCC for a 64-bit x86_64
! (&lsquo;<samp>x86_64-unknown-linux-gnu</samp>&rsquo;) host system, but have a 32-bit x86
! GNU/Linux (&lsquo;<samp>i686-pc-linux-gnu</samp>&rsquo;) linker executable (which is
  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-unknown-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
! version 2.20 or GNU ld starting with version 2.21.
! 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
  environments.  Enabled by default, and may be disabled using
! <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
  needed when bootstrapping a cross toolchain without the header files
  available for building the initial bootstrap compiler.
! </p>
! <p>If GCC is configured with some multilibs that use glibc and some that
! do not, this option applies only to the multilibs that use glibc.
  However, such configurations may not work well as not all the relevant
  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-target=i686-unknown-linux-gnu=/path/to/i686/compiler,x86_64-pc-linux-gnu
! </pre></div>
  
! <p>If &lsquo;<samp>hsa</samp>&rsquo; is specified as one of the targets, the compiler will be
  built with support for HSA GPU accelerators.  Because the same
  compiler will emit the accelerator code, no path should be specified.
! </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 HSA offloading 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
! to add <samp>-fcf-protection</samp> and, if needed, other target
! specific options to a set of building options.
! </p>
! <p>The option is disabled by default.  When <code>--enable-cet=auto</code>
! is used, it is enabled on Linux/x86 if target binutils
! supports <code>Intel CET</code> instructions and disabled otherwise.
! In this case the target libraries are configured to get additional
! <samp>-fcf-protection</samp> option.
! </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-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
  searched for in there.  More specifically, this acts as if
! <samp>--sysroot=<var>dir</var></samp> was added to the default options of the built
  compiler.  The specified directory is not copied into the
! install tree, unlike the options <samp>--with-headers</samp> and
! <samp>--with-libs</samp> that this option obsoletes.  The default value,
! in case <samp>--with-sysroot</samp> is not given an argument, is
! <samp>${gcc_tooldir}/sys-root</samp>.  If the specified directory is a
! subdirectory of <samp>${exec_prefix}</samp>, then it will be found relative to
  the GCC binaries if the installation tree is moved.
! </p>
! <p>This option affects the system root for the compiler used to build
  target libraries (which runs on the build system) and the compiler newly
  installed with <code>make install</code>; it does not affect the compiler which is
  used to build GCC itself.
! </p>
! <p>If you specify the <samp>--with-native-system-header-dir=<var>dirname</var></samp>
  option then the compiler will search that directory within <var>dirname</var> for
! 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
! only useful when you are already using <samp>--with-sysroot</samp>.  You
! can use <samp>--with-build-sysroot</samp> when you are configuring with
! <samp>--prefix</samp> set to a directory that is different from the one in
  which you are installing GCC and your target libraries.
! </p>
! <p>This option affects the system root for the compiler used to build
  target libraries (which runs on the build system); it does not affect
  the compiler which is used to build GCC itself.
! </p>
! <p>If you specify the <samp>--with-native-system-header-dir=<var>dirname</var></samp>
  option then the compiler will search that directory within <var>dirname</var> for
! 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
! files.  These include files will be copied into the <samp>gcc</samp> install
! directory.  <em>This option with the <var>dir</var> argument is required</em> when
! building a cross compiler, if <samp><var>prefix</var>/<var>target</var>/sys-include</samp>
! doesn&rsquo;t pre-exist.  If <samp><var>prefix</var>/<var>target</var>/sys-include</samp> does
! pre-exist, the <var>dir</var> argument may be omitted.  <code>fixincludes</code>
  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
  directory.  If the directory list is omitted, this option has no
  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
! &lsquo;<samp>newlib</samp>&rsquo;.
! </p>
! </dd>
! <dt><code>--with-avrlibc</code></dt>
! <dd><p>Specifies that &lsquo;<samp>AVR-Libc</samp>&rsquo; is
  being used as the target C library.  This causes float support
! functions like <code>__addsf3</code> to be omitted from <samp>libgcc.a</samp> on
! the assumption that it will be provided by <samp>libm.a</samp>.  For more
! technical details, cf. <a href="http://gcc.gnu.org/PR54461">PR54461</a>.
  This option is only supported for the AVR target.  It is not supported for
  RTEMS configurations, which currently use newlib.  The option is
  supported since version 4.7.2 and is the default in 4.8.0 and newer.
! </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
  GCC on, and the system where you will deploy it.
! </p>
! <p>For example, on an &lsquo;<samp>ia64-hp-hpux</samp>&rsquo; system, you may have the GNU
! assembler and linker in <samp>/usr/bin</samp>, and the native tools in a
  different path, and build a toolchain that expects to find the
! native tools in <samp>/usr/bin</samp>.
! </p>
! <p>When you use this option, you should ensure that <var>dir</var> includes
! <code>ar</code>, <code>as</code>, <code>ld</code>, <code>nm</code>,
! <code>ranlib</code> and <code>strip</code> if necessary, and possibly
! <code>objdump</code>.  Otherwise, GCC may use an inconsistent set of
! tools.
! </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
! system or work around a bug in a test.  The toplevel <code>configure</code>
  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>
+ </dl>
  
! <p>In order to avoid shell and <code>make</code> quoting issues for complex
! 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="http://www.hboehm.info/gc/">http://www.hboehm.info/gc/</a>).  This library needs to be
  available for each multilib variant, unless configured with
! <samp>--enable-objc-gc=&lsquo;<samp>auto</samp>&rsquo;</samp> in which case the build of the
  additional runtime library is skipped when not available and the build
  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
! is named as &lsquo;<samp>.</samp>&rsquo; (dot), or is omitted (e.g.
! &lsquo;<samp>--with-target-bdw-gc=/opt/bdw-gc,32=/opt-bdw-gc32</samp>&rsquo;).
! </p>
! <p>The options <samp>--with-target-bdw-gc-include</samp> and
! <samp>--with-target-bdw-gc-lib</samp> must always be specified together
  for each multilib variant and they take precedence over
! <samp>--with-target-bdw-gc</samp>.  If <samp>--with-target-bdw-gc-include</samp>
  is missing values for a multilib, then the value for the default
! multilib is used (e.g. &lsquo;<samp>--with-target-bdw-gc-include=/opt/bdw-gc/include</samp>&rsquo;
! &lsquo;<samp>--with-target-bdw-gc-lib=/opt/bdw-gc/lib64,32=/opt-bdw-gc/lib32</samp>&rsquo;).
  If none of these options are specified, the library is assumed in
! default locations.
! </p></dd>
  </dl>
  
! <hr />
! <p>
  <p><a href="./index.html">Return to the GCC Installation page</a>
+ </p>
+ 
+ 
  
  
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ </body>
+ </html>
diff -Nrcpad gcc-7.3.0/INSTALL/download.html gcc-8.1.0/INSTALL/download.html
*** gcc-7.3.0/INSTALL/download.html	Thu Jan 25 08:17:55 2018
--- gcc-8.1.0/INSTALL/download.html	Wed May  2 08:20:00 2018
***************
*** 1,90 ****
! <html lang="en">
! <head>
! <title>Downloading GCC</title>
! <meta http-equiv="Content-Type" content="text/html">
! <meta name="description" content="Downloading GCC">
! <meta name="generator" content="makeinfo 4.13">
! <link title="Top" rel="top" href="#Top">
! <link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
! <!--
! Copyright (C) 1988-2017 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
  any later version published by the Free Software Foundation; with no
  Invariant Sections, the Front-Cover texts being (a) (see below), and
  with the Back-Cover Texts being (b) (see below).  A copy of the
! license is included in the section entitled "GNU Free Documentation License".
  
  (a) The FSF's Front-Cover Text is:
  
!      A GNU Manual
  
  (b) The FSF's Back-Cover Text is:
  
!      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.-->
! <meta http-equiv="Content-Style-Type" content="text/css">
! <style type="text/css"><!--
!   pre.display { font-family:inherit }
!   pre.format  { font-family:inherit }
!   pre.smalldisplay { font-family:inherit; font-size:smaller }
!   pre.smallformat  { font-family:inherit; font-size:smaller }
!   pre.smallexample { font-size:smaller }
!   pre.smalllisp    { font-size:smaller }
!   span.sc    { font-variant:small-caps }
!   span.roman { font-family:serif; font-weight:normal; } 
!   span.sansserif { font-family:sans-serif; font-weight:normal; } 
! --></style>
  </head>
- <body>
- <h1 class="settitle">Downloading GCC</h1>
- <a name="index-Downloading-GCC-1"></a><a name="index-Downloading-the-Source-2"></a>
- GCC is distributed via <a href="http://gcc.gnu.org/svn.html">SVN</a> and FTP
- tarballs compressed with <samp><span class="command">gzip</span></samp> or
- <samp><span class="command">bzip2</span></samp>.
  
!    <p>Please refer to the <a href="http://gcc.gnu.org/releases.html">releases web page</a>
! for information on how to obtain GCC.
  
!    <p>The source distribution includes the C, C++, Objective-C, Fortran,
  and Ada (in the case of GCC 3.1 and later) compilers, as well as
! runtime libraries for C++, Objective-C, and Fortran. 
  For previous versions these were downloadable as separate components such
  as the core GCC distribution, which included the C language front end and
  shared components, and language-specific distributions including the
  language front end and the language runtime (where appropriate).
! 
!    <p>If you also intend to build binutils (either to upgrade an existing
  installation or for use in place of the corresponding tools of your
  OS), unpack the binutils distribution either in the same directory or
  a separate one.  In the latter case, add symbolic links to any
  components of the binutils you intend to build alongside the compiler
! (<samp><span class="file">bfd</span></samp>, <samp><span class="file">binutils</span></samp>, <samp><span class="file">gas</span></samp>, <samp><span class="file">gprof</span></samp>, <samp><span class="file">ld</span></samp>,
! <samp><span class="file">opcodes</span></samp>, <small class="dots">...</small>) to the directory containing the GCC sources.
! 
!    <p>Likewise the GMP, MPFR and MPC libraries can be automatically built
  together with GCC.  You may simply run the
! <samp><span class="command">contrib/download_prerequisites</span></samp> script in the GCC source directory
! to set up everything. 
  Otherwise unpack the GMP, MPFR and/or MPC source
  distributions in the directory containing the GCC sources and rename
! their directories to <samp><span class="file">gmp</span></samp>, <samp><span class="file">mpfr</span></samp> and <samp><span class="file">mpc</span></samp>,
  respectively (or use symbolic links with the same name).
! 
!    <p><hr />
  <p><a href="./index.html">Return to the GCC Installation page</a>
  
- <!-- ***Configuration*********************************************************** -->
- <!-- ***Building**************************************************************** -->
- <!-- ***Testing***************************************************************** -->
- <!-- ***Final install*********************************************************** -->
- <!-- ***Binaries**************************************************************** -->
- <!-- ***Specific**************************************************************** -->
- <!-- ***Old documentation****************************************************** -->
- <!-- ***GFDL******************************************************************** -->
- <!-- *************************************************************************** -->
- <!-- Part 6 The End of the Document -->
- </body></html>
  
--- 1,135 ----
! <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
! <html>
! <!-- Copyright (C) 1988-2018 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
  any later version published by the Free Software Foundation; with no
  Invariant Sections, the Front-Cover texts being (a) (see below), and
  with the Back-Cover Texts being (b) (see below).  A copy of the
! license is included in the section entitled "GNU
! Free Documentation License".
  
  (a) The FSF's Front-Cover Text is:
  
! A GNU Manual
  
  (b) The FSF's Back-Cover Text is:
  
! 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.4, http://www.gnu.org/software/texinfo/ -->
! <head>
! <title>Installing GCC</title>
! 
! <meta name="description" content="Installing GCC">
! <meta name="keywords" content="Installing GCC">
! <meta name="resource-type" content="document">
! <meta name="distribution" content="global">
! <meta name="Generator" content="makeinfo">
! <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
! <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>
! 
! 
  </head>
  
! <body lang="en">
! <h1 class="settitle" align="center">Installing GCC</h1>
  
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! <a name="index-Downloading-GCC"></a>
! <a name="index-Downloading-the-Source"></a>
! 
! <p>GCC is distributed via <a href="http://gcc.gnu.org/svn.html">SVN</a> and FTP
! tarballs compressed with <code>gzip</code> or
! <code>bzip2</code>.
! </p>
! <p>Please refer to the <a href="http://gcc.gnu.org/releases.html">releases web page</a>
! for information on how to obtain GCC.
! </p>
! <p>The source distribution includes the C, C++, Objective-C, Fortran,
  and Ada (in the case of GCC 3.1 and later) compilers, as well as
! runtime libraries for C++, Objective-C, and Fortran.
  For previous versions these were downloadable as separate components such
  as the core GCC distribution, which included the C language front end and
  shared components, and language-specific distributions including the
  language front end and the language runtime (where appropriate).
! </p>
! <p>If you also intend to build binutils (either to upgrade an existing
  installation or for use in place of the corresponding tools of your
  OS), unpack the binutils distribution either in the same directory or
  a separate one.  In the latter case, add symbolic links to any
  components of the binutils you intend to build alongside the compiler
! (<samp>bfd</samp>, <samp>binutils</samp>, <samp>gas</samp>, <samp>gprof</samp>, <samp>ld</samp>,
! <samp>opcodes</samp>, &hellip;) to the directory containing the GCC sources.
! </p>
! <p>Likewise the GMP, MPFR and MPC libraries can be automatically built
  together with GCC.  You may simply run the
! <code>contrib/download_prerequisites</code> script in the GCC source directory
! to set up everything.
  Otherwise unpack the GMP, MPFR and/or MPC source
  distributions in the directory containing the GCC sources and rename
! their directories to <samp>gmp</samp>, <samp>mpfr</samp> and <samp>mpc</samp>,
  respectively (or use symbolic links with the same name).
! </p>
! <hr />
! <p>
  <p><a href="./index.html">Return to the GCC Installation page</a>
+ </p>
+ 
+ 
  
  
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ </body>
+ </html>
diff -Nrcpad gcc-7.3.0/INSTALL/finalinstall.html gcc-8.1.0/INSTALL/finalinstall.html
*** gcc-7.3.0/INSTALL/finalinstall.html	Thu Jan 25 08:17:55 2018
--- gcc-8.1.0/INSTALL/finalinstall.html	Wed May  2 08:20:01 2018
***************
*** 1,172 ****
! <html lang="en">
! <head>
! <title>Installing GCC: Final installation</title>
! <meta http-equiv="Content-Type" content="text/html">
! <meta name="description" content="Installing GCC: Final installation">
! <meta name="generator" content="makeinfo 4.13">
! <link title="Top" rel="top" href="#Top">
! <link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
! <!--
! Copyright (C) 1988-2017 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
  any later version published by the Free Software Foundation; with no
  Invariant Sections, the Front-Cover texts being (a) (see below), and
  with the Back-Cover Texts being (b) (see below).  A copy of the
! license is included in the section entitled "GNU Free Documentation License".
  
  (a) The FSF's Front-Cover Text is:
  
!      A GNU Manual
  
  (b) The FSF's Back-Cover Text is:
  
!      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.-->
! <meta http-equiv="Content-Style-Type" content="text/css">
! <style type="text/css"><!--
!   pre.display { font-family:inherit }
!   pre.format  { font-family:inherit }
!   pre.smalldisplay { font-family:inherit; font-size:smaller }
!   pre.smallformat  { font-family:inherit; font-size:smaller }
!   pre.smallexample { font-size:smaller }
!   pre.smalllisp    { font-size:smaller }
!   span.sc    { font-variant:small-caps }
!   span.roman { font-family:serif; font-weight:normal; } 
!   span.sansserif { font-family:sans-serif; font-weight:normal; } 
! --></style>
  </head>
! <body>
! <h1 class="settitle">Installing GCC: Final installation</h1>
! Now that GCC has been built (and optionally tested), you can install it with
! <pre class="smallexample">     cd <var>objdir</var> &amp;&amp; make install
! </pre>
!    <p>We strongly recommend to install into a target directory where there is
  no previous version of GCC present.  Also, the GNAT runtime should not
  be stripped, as this would break certain features of the debugger that
  depend on this debugging information (catching Ada exceptions for
  instance).
! 
!    <p>That step completes the installation of GCC; user level binaries can
! be found in <samp><var>prefix</var><span class="file">/bin</span></samp> where <var>prefix</var> is the value
! you specified with the <samp><span class="option">--prefix</span></samp> to configure (or
! <samp><span class="file">/usr/local</span></samp> by default).  (If you specified <samp><span class="option">--bindir</span></samp>,
  that directory will be used instead; otherwise, if you specified
! <samp><span class="option">--exec-prefix</span></samp>, <samp><var>exec-prefix</var><span class="file">/bin</span></samp> will be used.) 
  Headers for the C++ library are installed in
! <samp><var>prefix</var><span class="file">/include</span></samp>; libraries in <samp><var>libdir</var></samp>
! (normally <samp><var>prefix</var><span class="file">/lib</span></samp>); internal parts of the compiler in
! <samp><var>libdir</var><span class="file">/gcc</span></samp> and <samp><var>libexecdir</var><span class="file">/gcc</span></samp>; documentation
  in info format in <samp><var>infodir</var></samp> (normally
! <samp><var>prefix</var><span class="file">/info</span></samp>).
! 
!    <p>When installing cross-compilers, GCC's executables
  are not only installed into <samp><var>bindir</var></samp>, that
! is, <samp><var>exec-prefix</var><span class="file">/bin</span></samp>, but additionally into
! <samp><var>exec-prefix</var><span class="file">/</span><var>target-alias</var><span class="file">/bin</span></samp>, if that directory
! exists.  Typically, such <dfn>tooldirs</dfn> hold target-specific
  binutils, including assembler and linker.
! 
!    <p>Installation into a temporary staging area or into a <samp><span class="command">chroot</span></samp>
  jail can be achieved with the command
  
! <pre class="smallexample">     make DESTDIR=<var>path-to-rootdir</var> install
! </pre>
!    <p class="noindent">where <var>path-to-rootdir</var> is the absolute path of
  a directory relative to which all installation paths will be
  interpreted.  Note that the directory specified by <code>DESTDIR</code>
  need not exist yet; it will be created if necessary.
! 
!    <p>There is a subtle point with tooldirs and <code>DESTDIR</code>:
  If you relocate a cross-compiler installation with
! e.g. &lsquo;<samp><span class="samp">DESTDIR=</span><var>rootdir</var></samp>&rsquo;, then the directory
! <samp><var>rootdir</var><span class="file">/</span><var>exec-prefix</var><span class="file">/</span><var>target-alias</var><span class="file">/bin</span></samp> will
  be filled with duplicated GCC executables only if it already exists,
  it will not be created otherwise.  This is regarded as a feature,
  not as a bug, because it gives slightly more control to the packagers
  using the <code>DESTDIR</code> feature.
  
!    <p>You can install stripped programs and libraries with
! 
! <pre class="smallexample">     make install-strip
! </pre>
!    <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="http://gcc.gnu.org/buildstat.html">http://gcc.gnu.org/buildstat.html</a>. 
  If your system is not listed for the version of GCC that you built,
  send a note to
  <a href="mailto:gcc@gcc.gnu.org">gcc@gcc.gnu.org</a> indicating
! that you successfully built and installed GCC. 
  Include the following information:
! 
!      <ul>
! <li>Output from running <samp><var>srcdir</var><span class="file">/config.guess</span></samp>.  Do not send
  that file itself, just the one-line output from running it.
  
!      <li>The output of &lsquo;<samp><span class="samp">gcc -v</span></samp>&rsquo; for your newly installed <samp><span class="command">gcc</span></samp>. 
  This tells us which version of GCC you built and the options you passed to
  configure.
  
!      <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><span class="samp">gcc -v</span></samp>&rsquo;, but if you downloaded the
! &ldquo;core&rdquo; compiler plus additional front ends then it isn't apparent
  which ones you built unless you tell us about it.
  
!      <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);
! this information should be available from <samp><span class="file">/etc/issue</span></samp>.
  
!           <li>The version of the Linux kernel, available from &lsquo;<samp><span class="samp">uname --version</span></samp>&rsquo;
! or &lsquo;<samp><span class="samp">uname -a</span></samp>&rsquo;.
  
!           <li>The version of glibc you used; for RPM-based systems like Red Hat,
! Mandrake, and SuSE type &lsquo;<samp><span class="samp">rpm -q glibc</span></samp>&rsquo; to get the glibc version,
! and on systems like Debian and Progeny use &lsquo;<samp><span class="samp">dpkg -l libc6</span></samp>&rsquo;. 
! </ul>
!      For other systems, you can include similar information if you think it is
  relevant.
! 
!      <li>Any other information that you think would be useful to people building
  GCC on the same configuration.  The new entry in the build status list
! will include a link to the archived copy of your message. 
! </ul>
  
!    <p>We'd also like to know if the
  <a href="specific.html">host/target specific installation notes</a>
! didn't include your host/target information or if that information is
  incomplete or out of date.  Send a note to
  <a href="mailto:gcc@gcc.gnu.org">gcc@gcc.gnu.org</a> detailing how the information should be changed.
! 
!    <p>If you find a bug, please report it following the
  <a href="../bugs/">bug reporting guidelines</a>.
! 
!    <p>If you want to print the GCC manuals, do &lsquo;<samp><span class="samp">cd </span><var>objdir</var><span class="samp">; make
! dvi</span></samp>&rsquo;.  You will need to have <samp><span class="command">texi2dvi</span></samp> (version at least 4.7)
! and TeX installed.  This creates a number of <samp><span class="file">.dvi</span></samp> files in
  subdirectories of <samp><var>objdir</var></samp>; these may be converted for
! printing with programs such as <samp><span class="command">dvips</span></samp>.  Alternately, by using
! &lsquo;<samp><span class="samp">make pdf</span></samp>&rsquo; in place of &lsquo;<samp><span class="samp">make dvi</span></samp>&rsquo;, you can create documentation
! in the form of <samp><span class="file">.pdf</span></samp> files; this requires <samp><span class="command">texi2pdf</span></samp>, 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>If you would like to generate online HTML documentation, do &lsquo;<samp><span class="samp">cd
- </span><var>objdir</var><span class="samp">; make html</span></samp>&rsquo; and HTML will be generated for the gcc manuals in
- <samp><var>objdir</var><span class="file">/gcc/HTML</span></samp>.
  
-    <p><hr />
- <p><a href="./index.html">Return to the GCC Installation page</a>
  
- <!-- ***Binaries**************************************************************** -->
- <!-- ***Specific**************************************************************** -->
- <!-- ***Old documentation****************************************************** -->
- <!-- ***GFDL******************************************************************** -->
- <!-- *************************************************************************** -->
- <!-- Part 6 The End of the Document -->
- </body></html>
  
--- 1,227 ----
! <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
! <html>
! <!-- Copyright (C) 1988-2018 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
  any later version published by the Free Software Foundation; with no
  Invariant Sections, the Front-Cover texts being (a) (see below), and
  with the Back-Cover Texts being (b) (see below).  A copy of the
! license is included in the section entitled "GNU
! Free Documentation License".
  
  (a) The FSF's Front-Cover Text is:
  
! A GNU Manual
  
  (b) The FSF's Back-Cover Text is:
  
! 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.4, http://www.gnu.org/software/texinfo/ -->
! <head>
! <title>Installing GCC</title>
! 
! <meta name="description" content="Installing GCC">
! <meta name="keywords" content="Installing GCC">
! <meta name="resource-type" content="document">
! <meta name="distribution" content="global">
! <meta name="Generator" content="makeinfo">
! <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
! <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>
! 
! 
  </head>
! 
! <body lang="en">
! <h1 class="settitle" align="center">Installing GCC</h1>
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! <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
  no previous version of GCC present.  Also, the GNAT runtime should not
  be stripped, as this would break certain features of the debugger that
  depend on this debugging information (catching Ada exceptions for
  instance).
! </p>
! <p>That step completes the installation of GCC; user level binaries can
! be found in <samp><var>prefix</var>/bin</samp> where <var>prefix</var> is the value
! you specified with the <samp>--prefix</samp> to configure (or
! <samp>/usr/local</samp> by default).  (If you specified <samp>--bindir</samp>,
  that directory will be used instead; otherwise, if you specified
! <samp>--exec-prefix</samp>, <samp><var>exec-prefix</var>/bin</samp> will be used.)
  Headers for the C++ library are installed in
! <samp><var>prefix</var>/include</samp>; libraries in <samp><var>libdir</var></samp>
! (normally <samp><var>prefix</var>/lib</samp>); internal parts of the compiler in
! <samp><var>libdir</var>/gcc</samp> and <samp><var>libexecdir</var>/gcc</samp>; documentation
  in info format in <samp><var>infodir</var></samp> (normally
! <samp><var>prefix</var>/info</samp>).
! </p>
! <p>When installing cross-compilers, GCC&rsquo;s executables
  are not only installed into <samp><var>bindir</var></samp>, that
! is, <samp><var>exec-prefix</var>/bin</samp>, but additionally into
! <samp><var>exec-prefix</var>/<var>target-alias</var>/bin</samp>, if that directory
! exists.  Typically, such <em>tooldirs</em> hold target-specific
  binutils, including assembler and linker.
! </p>
! <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
  a directory relative to which all installation paths will be
  interpreted.  Note that the directory specified by <code>DESTDIR</code>
  need not exist yet; it will be created if necessary.
! </p>
! <p>There is a subtle point with tooldirs and <code>DESTDIR</code>:
  If you relocate a cross-compiler installation with
! e.g. &lsquo;<samp>DESTDIR=<var>rootdir</var></samp>&rsquo;, then the directory
! <samp><var>rootdir</var>/<var>exec-prefix</var>/<var>target-alias</var>/bin</samp> will
  be filled with duplicated GCC executables only if it already exists,
  it will not be created otherwise.  This is regarded as a feature,
  not as a bug, because it gives slightly more control to the packagers
  using the <code>DESTDIR</code> feature.
+ </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="http://gcc.gnu.org/buildstat.html">http://gcc.gnu.org/buildstat.html</a>.
  If your system is not listed for the version of GCC that you built,
  send a note to
  <a href="mailto:gcc@gcc.gnu.org">gcc@gcc.gnu.org</a> indicating
! that you successfully built and installed GCC.
  Include the following information:
! </p>
! <ul>
! <li> Output from running <samp><var>srcdir</var>/config.guess</samp>.  Do not send
  that file itself, just the one-line output from running it.
  
! </li><li> The output of &lsquo;<samp>gcc -v</samp>&rsquo; for your newly installed <code>gcc</code>.
  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);
! this information should be available from <samp>/etc/issue</samp>.
  
! </li><li> The version of the Linux kernel, available from &lsquo;<samp>uname --version</samp>&rsquo;
! or &lsquo;<samp>uname -a</samp>&rsquo;.
  
! </li><li> The version of glibc you used; for RPM-based systems like Red Hat,
! Mandrake, and SuSE type &lsquo;<samp>rpm -q glibc</samp>&rsquo; to get the glibc version,
! and on systems like Debian and Progeny use &lsquo;<samp>dpkg -l libc6</samp>&rsquo;.
! </li></ul>
! <p>For other systems, you can include similar information if you think it is
  relevant.
! </p>
! </li><li> Any other information that you think would be useful to people building
  GCC on the same configuration.  The new entry in the build status list
! will include a link to the archived copy of your message.
! </li></ul>
  
! <p>We&rsquo;d also like to know if the
  <a href="specific.html">host/target specific installation notes</a>
! didn&rsquo;t include your host/target information or if that information is
  incomplete or out of date.  Send a note to
  <a href="mailto:gcc@gcc.gnu.org">gcc@gcc.gnu.org</a> detailing how the information should be changed.
! </p>
! <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>
+ </p>
+ 
+ 
  
  
  
  
+ 
+ 
+ </body>
+ </html>
diff -Nrcpad gcc-7.3.0/INSTALL/gfdl.html gcc-8.1.0/INSTALL/gfdl.html
*** gcc-7.3.0/INSTALL/gfdl.html	Thu Jan 25 08:17:55 2018
--- gcc-8.1.0/INSTALL/gfdl.html	Wed May  2 08:20:02 2018
***************
*** 1,82 ****
! <html lang="en">
! <head>
! <title>Installing GCC: GNU Free Documentation License</title>
! <meta http-equiv="Content-Type" content="text/html">
! <meta name="description" content="Installing GCC: GNU Free Documentation License">
! <meta name="generator" content="makeinfo 4.13">
! <link title="Top" rel="top" href="#Top">
! <link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
! <!--
! Copyright (C) 1988-2017 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
  any later version published by the Free Software Foundation; with no
  Invariant Sections, the Front-Cover texts being (a) (see below), and
  with the Back-Cover Texts being (b) (see below).  A copy of the
! license is included in the section entitled "GNU Free Documentation License".
  
  (a) The FSF's Front-Cover Text is:
  
!      A GNU Manual
  
  (b) The FSF's Back-Cover Text is:
  
!      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.-->
! <meta http-equiv="Content-Style-Type" content="text/css">
! <style type="text/css"><!--
!   pre.display { font-family:inherit }
!   pre.format  { font-family:inherit }
!   pre.smalldisplay { font-family:inherit; font-size:smaller }
!   pre.smallformat  { font-family:inherit; font-size:smaller }
!   pre.smallexample { font-size:smaller }
!   pre.smalllisp    { font-size:smaller }
!   span.sc    { font-variant:small-caps }
!   span.roman { font-family:serif; font-weight:normal; } 
!   span.sansserif { font-family:sans-serif; font-weight:normal; } 
! --></style>
  </head>
- <body>
- <h1 class="settitle">Installing GCC: GNU Free Documentation License</h1>
- <h1 align="center">Installing GCC: GNU Free Documentation License</h1><!-- man begin DESCRIPTION -->
  
!    <p><a name="index-FDL_002c-GNU-Free-Documentation-License-1"></a><div align="center">Version 1.3, 3 November 2008</div>
  
- <pre class="display">     Copyright &copy; 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
-      <a href="http://fsf.org/">http://fsf.org/</a>
-      
-      Everyone is permitted to copy and distribute verbatim copies
-      of this license document, but changing it is not allowed.
- </pre>
-      <ol type=1 start=0>
- <li>PREAMBLE
  
!      <p>The purpose of this License is to make a manual, textbook, or other
! functional and useful document <dfn>free</dfn> in the sense of freedom: to
  assure everyone the effective freedom to copy and redistribute it,
! with or without modifying it, either commercially or noncommercially. 
  Secondarily, this License preserves for the author and publisher a way
  to get credit for their work, while not being considered responsible
  for modifications made by others.
! 
!      <p>This License is a kind of &ldquo;copyleft&rdquo;, which means that derivative
  works of the document must themselves be free in the same sense.  It
  complements the GNU General Public License, which is a copyleft
  license designed for free software.
! 
!      <p>We have designed this License in order to use it for manuals for free
  software, because free software needs free documentation: a free
  program should come with manuals providing the same freedoms that the
  software does.  But this License is not limited to software manuals;
  it can be used for any textual work, regardless of subject matter or
  whether it is published as a printed book.  We recommend this License
  principally for works whose purpose is instruction or reference.
  
!      <li>APPLICABILITY AND DEFINITIONS
! 
!      <p>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
--- 1,133 ----
! <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
! <html>
! <!-- Copyright (C) 1988-2018 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
  any later version published by the Free Software Foundation; with no
  Invariant Sections, the Front-Cover texts being (a) (see below), and
  with the Back-Cover Texts being (b) (see below).  A copy of the
! license is included in the section entitled "GNU
! Free Documentation License".
  
  (a) The FSF's Front-Cover Text is:
  
! A GNU Manual
  
  (b) The FSF's Back-Cover Text is:
  
! 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.4, http://www.gnu.org/software/texinfo/ -->
! <head>
! <title>Installing GCC</title>
! 
! <meta name="description" content="Installing GCC">
! <meta name="keywords" content="Installing GCC">
! <meta name="resource-type" content="document">
! <meta name="distribution" content="global">
! <meta name="Generator" content="makeinfo">
! <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
! <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>
! 
! 
  </head>
  
! <body lang="en">
! <h1 class="settitle" align="center">Installing GCC</h1>
  
  
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! <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="http://fsf.org/">http://fsf.org/</a>
! 
! Everyone is permitted to copy and distribute verbatim copies
! of this license document, but changing it is not allowed.
! </pre></div>
! 
! <ol start="0">
! <li> PREAMBLE
! 
! <p>The purpose of this License is to make a manual, textbook, or other
! functional and useful document <em>free</em> in the sense of freedom: to
  assure everyone the effective freedom to copy and redistribute it,
! with or without modifying it, either commercially or noncommercially.
  Secondarily, this License preserves for the author and publisher a way
  to get credit for their work, while not being considered responsible
  for modifications made by others.
! </p>
! <p>This License is a kind of &ldquo;copyleft&rdquo;, which means that derivative
  works of the document must themselves be free in the same sense.  It
  complements the GNU General Public License, which is a copyleft
  license designed for free software.
! </p>
! <p>We have designed this License in order to use it for manuals for free
  software, because free software needs free documentation: a free
  program should come with manuals providing the same freedoms that the
  software does.  But this License is not limited to software manuals;
  it can be used for any textual work, regardless of subject matter or
  whether it is published as a printed book.  We recommend this License
  principally for works whose purpose is instruction or reference.
+ </p>
+ </li><li> APPLICABILITY AND DEFINITIONS
  
! <p>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
*************** refers to any such manual or work.  Any
*** 85,98 ****
  licensee, and is addressed as &ldquo;you&rdquo;.  You accept the license if you
  copy, modify or distribute the work in a way requiring permission
  under copyright law.
! 
!      <p>A &ldquo;Modified Version&rdquo; 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.
! 
!      <p>A &ldquo;Secondary Section&rdquo; 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 within that overall subject.  (Thus, if the Document is in
  part a textbook of mathematics, a Secondary Section may not explain
--- 136,149 ----
  licensee, and is addressed as &ldquo;you&rdquo;.  You accept the license if you
  copy, modify or distribute the work in a way requiring permission
  under copyright law.
! </p>
! <p>A &ldquo;Modified Version&rdquo; 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.
! </p>
! <p>A &ldquo;Secondary Section&rdquo; 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&rsquo;s overall
  subject (or to related matters) and contains nothing that could fall
  directly within that overall subject.  (Thus, if the Document is in
  part a textbook of mathematics, a Secondary Section may not explain
*************** any mathematics.)  The relationship coul
*** 100,120 ****
  connection with the subject or with related matters, or of legal,
  commercial, philosophical, ethical or political position regarding
  them.
! 
!      <p>The &ldquo;Invariant Sections&rdquo; 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.  The Document may contain zero
  Invariant Sections.  If the Document does not identify any Invariant
  Sections then there are none.
! 
!      <p>The &ldquo;Cover Texts&rdquo; 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.
! 
!      <p>A &ldquo;Transparent&rdquo; 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
--- 151,171 ----
  connection with the subject or with related matters, or of legal,
  commercial, philosophical, ethical or political position regarding
  them.
! </p>
! <p>The &ldquo;Invariant Sections&rdquo; 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.  The Document may contain zero
  Invariant Sections.  If the Document does not identify any Invariant
  Sections then there are none.
! </p>
! <p>The &ldquo;Cover Texts&rdquo; 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.
! </p>
! <p>A &ldquo;Transparent&rdquo; 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
*************** drawing editor, and that is suitable for
*** 123,134 ****
  for automatic translation to a variety of formats suitable for input
  to text formatters.  A copy made in an otherwise Transparent file
  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 &ldquo;Transparent&rdquo; is called &ldquo;Opaque&rdquo;.
! 
!      <p>Examples of suitable formats for Transparent copies include plain
! <span class="sc">ascii</span> without markup, Texinfo input format, LaTeX input
  format, <acronym>SGML</acronym> or <acronym>XML</acronym> using a publicly available
  <acronym>DTD</acronym>, and standard-conforming simple <acronym>HTML</acronym>,
  PostScript or <acronym>PDF</acronym> designed for human modification.  Examples
--- 174,185 ----
  for automatic translation to a variety of formats suitable for input
  to text formatters.  A copy made in an otherwise Transparent file
  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 &ldquo;Transparent&rdquo; is called &ldquo;Opaque&rdquo;.
! </p>
! <p>Examples of suitable formats for Transparent copies include plain
! <small>ASCII</small> without markup, Texinfo input format, LaTeX input
  format, <acronym>SGML</acronym> or <acronym>XML</acronym> using a publicly available
  <acronym>DTD</acronym>, and standard-conforming simple <acronym>HTML</acronym>,
  PostScript or <acronym>PDF</acronym> designed for human modification.  Examples
*************** read and edited only by proprietary word
*** 139,173 ****
  not generally available, and the machine-generated <acronym>HTML</acronym>,
  PostScript or <acronym>PDF</acronym> produced by some word processors for
  output purposes only.
! 
!      <p>The &ldquo;Title Page&rdquo; 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, &ldquo;Title Page&rdquo; means
! the text near the most prominent appearance of the work's title,
  preceding the beginning of the body of the text.
! 
!      <p>The &ldquo;publisher&rdquo; means any person or entity that distributes copies
  of the Document to the public.
! 
!      <p>A section &ldquo;Entitled XYZ&rdquo; 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 &ldquo;Acknowledgements&rdquo;,
  &ldquo;Dedications&rdquo;, &ldquo;Endorsements&rdquo;, or &ldquo;History&rdquo;.)  To &ldquo;Preserve the Title&rdquo;
  of such a section when you modify the Document means that it remains a
  section &ldquo;Entitled XYZ&rdquo; according to this definition.
! 
!      <p>The Document may include Warranty Disclaimers next to the notice which
  states that this License applies to the Document.  These Warranty
  Disclaimers are considered to be included by reference in this
  License, but only as regards disclaiming warranties: any other
  implication that these Warranty Disclaimers may have is void and has
  no effect on the meaning of this License.
  
!      <li>VERBATIM COPYING
! 
!      <p>You may copy and distribute the Document in any medium, either
  commercially or noncommercially, provided that this License, the
  copyright notices, and the license notice saying this License applies
  to the Document are reproduced in all copies, and that you add no other
--- 190,224 ----
  not generally available, and the machine-generated <acronym>HTML</acronym>,
  PostScript or <acronym>PDF</acronym> produced by some word processors for
  output purposes only.
! </p>
! <p>The &ldquo;Title Page&rdquo; 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, &ldquo;Title Page&rdquo; means
! the text near the most prominent appearance of the work&rsquo;s title,
  preceding the beginning of the body of the text.
! </p>
! <p>The &ldquo;publisher&rdquo; means any person or entity that distributes copies
  of the Document to the public.
! </p>
! <p>A section &ldquo;Entitled XYZ&rdquo; 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 &ldquo;Acknowledgements&rdquo;,
  &ldquo;Dedications&rdquo;, &ldquo;Endorsements&rdquo;, or &ldquo;History&rdquo;.)  To &ldquo;Preserve the Title&rdquo;
  of such a section when you modify the Document means that it remains a
  section &ldquo;Entitled XYZ&rdquo; according to this definition.
! </p>
! <p>The Document may include Warranty Disclaimers next to the notice which
  states that this License applies to the Document.  These Warranty
  Disclaimers are considered to be included by reference in this
  License, but only as regards disclaiming warranties: any other
  implication that these Warranty Disclaimers may have is void and has
  no effect on the meaning of this License.
+ </p>
+ </li><li> VERBATIM COPYING
  
! <p>You may copy and distribute the Document in any medium, either
  commercially or noncommercially, provided that this License, the
  copyright notices, and the license notice saying this License applies
  to the Document are reproduced in all copies, and that you add no other
*************** technical measures to obstruct or contro
*** 176,262 ****
  copying of the copies you make or distribute.  However, you may accept
  compensation in exchange for copies.  If you distribute a large enough
  number of copies you must also follow the conditions in section 3.
! 
!      <p>You may also lend copies, under the same conditions stated above, and
  you may publicly display copies.
  
!      <li>COPYING IN QUANTITY
! 
!      <p>If you publish printed copies (or copies in media that commonly have
  printed covers) of the Document, numbering more than 100, and the
! Document's license notice requires Cover Texts, you must enclose the
  copies in covers that carry, clearly and legibly, all these Cover
  Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
  the back cover.  Both covers must also clearly and legibly identify
  you as the publisher of these copies.  The front cover must present
  the full title with all words of the title equally prominent and
! visible.  You may add other material on the covers in addition. 
  Copying with changes limited to the covers, as long as they preserve
  the title of the Document and satisfy these conditions, can be treated
  as verbatim copying in other respects.
! 
!      <p>If the required texts for either cover are too voluminous to fit
  legibly, you should put the first ones listed (as many as fit
  reasonably) on the actual cover, and continue the rest onto adjacent
  pages.
! 
!      <p>If you publish or distribute Opaque copies of the Document numbering
  more than 100, you must either include a machine-readable Transparent
  copy along with each Opaque copy, or state in or with each Opaque copy
  a computer-network location from which the general network-using
  public has access to download using public-standard network protocols
! a complete Transparent copy of the Document, free of added material. 
  If you use the latter option, you must take reasonably prudent steps,
  when you begin distribution of Opaque copies in quantity, to ensure
  that this Transparent copy will remain thus accessible at the stated
  location until at least one year after the last time you distribute an
  Opaque copy (directly or through your agents or retailers) of that
  edition to the public.
! 
!      <p>It is requested, but not required, that you contact the authors of the
  Document well before redistributing any large number of copies, to give
  them a chance to provide you with an updated version of the Document.
  
!      <li>MODIFICATIONS
! 
!      <p>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 Modified Version under precisely this License, with the Modified
  Version filling the role of the Document, thus licensing distribution
  and modification of the Modified Version to whoever possesses a copy
  of it.  In addition, you must do these things in the Modified Version:
! 
!           <ol type=A start=1>
! <li>Use in the Title Page (and on the covers, if any) a title distinct
  from that of the Document, and from those of previous versions
  (which should, if there were any, be listed in the History section
  of the Document).  You may use the same title as a previous version
  if the original publisher of that version gives permission.
  
!           <li>List on the Title Page, as authors, one or more persons or entities
  responsible for authorship of the modifications in the Modified
  Version, together with at least five of the principal authors of the
  Document (all of its principal authors, if it has fewer than five),
  unless they release you from this requirement.
  
!           <li>State on the Title page the name of the publisher of the
  Modified Version, as the publisher.
  
!           <li>Preserve all the copyright notices of the Document.
  
!           <li>Add an appropriate copyright notice for your modifications
  adjacent to the other copyright notices.
  
!           <li>Include, immediately after the copyright notices, a license notice
  giving the public permission to use the Modified Version under the
  terms of this License, in the form shown in the Addendum below.
  
!           <li>Preserve in that license notice the full lists of Invariant Sections
! and required Cover Texts given in the Document's license notice.
  
!           <li>Include an unaltered copy of this License.
  
!           <li>Preserve the section Entitled &ldquo;History&rdquo;, Preserve its Title, and add
  to it an item stating at least the title, year, new authors, and
  publisher of the Modified Version as given on the Title Page.  If
  there is no section Entitled &ldquo;History&rdquo; in the Document, create one
--- 227,313 ----
  copying of the copies you make or distribute.  However, you may accept
  compensation in exchange for copies.  If you distribute a large enough
  number of copies you must also follow the conditions in section 3.
! </p>
! <p>You may also lend copies, under the same conditions stated above, and
  you may publicly display copies.
+ </p>
+ </li><li> COPYING IN QUANTITY
  
! <p>If you publish printed copies (or copies in media that commonly have
  printed covers) of the Document, numbering more than 100, and the
! Document&rsquo;s license notice requires Cover Texts, you must enclose the
  copies in covers that carry, clearly and legibly, all these Cover
  Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
  the back cover.  Both covers must also clearly and legibly identify
  you as the publisher of these copies.  The front cover must present
  the full title with all words of the title equally prominent and
! visible.  You may add other material on the covers in addition.
  Copying with changes limited to the covers, as long as they preserve
  the title of the Document and satisfy these conditions, can be treated
  as verbatim copying in other respects.
! </p>
! <p>If the required texts for either cover are too voluminous to fit
  legibly, you should put the first ones listed (as many as fit
  reasonably) on the actual cover, and continue the rest onto adjacent
  pages.
! </p>
! <p>If you publish or distribute Opaque copies of the Document numbering
  more than 100, you must either include a machine-readable Transparent
  copy along with each Opaque copy, or state in or with each Opaque copy
  a computer-network location from which the general network-using
  public has access to download using public-standard network protocols
! a complete Transparent copy of the Document, free of added material.
  If you use the latter option, you must take reasonably prudent steps,
  when you begin distribution of Opaque copies in quantity, to ensure
  that this Transparent copy will remain thus accessible at the stated
  location until at least one year after the last time you distribute an
  Opaque copy (directly or through your agents or retailers) of that
  edition to the public.
! </p>
! <p>It is requested, but not required, that you contact the authors of the
  Document well before redistributing any large number of copies, to give
  them a chance to provide you with an updated version of the Document.
+ </p>
+ </li><li> MODIFICATIONS
  
! <p>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 Modified Version under precisely this License, with the Modified
  Version filling the role of the Document, thus licensing distribution
  and modification of the Modified Version to whoever possesses a copy
  of it.  In addition, you must do these things in the Modified Version:
! </p>
! <ol type="A" start="1">
! <li> Use in the Title Page (and on the covers, if any) a title distinct
  from that of the Document, and from those of previous versions
  (which should, if there were any, be listed in the History section
  of the Document).  You may use the same title as a previous version
  if the original publisher of that version gives permission.
  
! </li><li> List on the Title Page, as authors, one or more persons or entities
  responsible for authorship of the modifications in the Modified
  Version, together with at least five of the principal authors of the
  Document (all of its principal authors, if it has fewer than five),
  unless they release you from this requirement.
  
! </li><li> State on the Title page the name of the publisher of the
  Modified Version, as the publisher.
  
! </li><li> Preserve all the copyright notices of the Document.
  
! </li><li> Add an appropriate copyright notice for your modifications
  adjacent to the other copyright notices.
  
! </li><li> Include, immediately after the copyright notices, a license notice
  giving the public permission to use the Modified Version under the
  terms of this License, in the form shown in the Addendum below.
  
! </li><li> Preserve in that license notice the full lists of Invariant Sections
! and required Cover Texts given in the Document&rsquo;s license notice.
  
! </li><li> Include an unaltered copy of this License.
  
! </li><li> Preserve the section Entitled &ldquo;History&rdquo;, Preserve its Title, and add
  to it an item stating at least the title, year, new authors, and
  publisher of the Modified Version as given on the Title Page.  If
  there is no section Entitled &ldquo;History&rdquo; in the Document, create one
*************** stating the title, year, authors, and pu
*** 264,309 ****
  given on its Title Page, then add an item describing the Modified
  Version as stated in the previous sentence.
  
!           <li>Preserve the network location, if any, given in the Document for
  public access to a Transparent copy of the Document, and likewise
  the network locations given in the Document for previous versions
! it was based on.  These may be placed in the &ldquo;History&rdquo; section. 
  You may omit a network location for a work that was published at
  least four years before the Document itself, or if the original
  publisher of the version it refers to gives permission.
  
!           <li>For any section Entitled &ldquo;Acknowledgements&rdquo; or &ldquo;Dedications&rdquo;, Preserve
  the Title of the section, and preserve in the section all the
  substance and tone of each of the contributor acknowledgements and/or
  dedications given therein.
  
!           <li>Preserve all the Invariant Sections of the Document,
  unaltered in their text and in their titles.  Section numbers
  or the equivalent are not considered part of the section titles.
  
!           <li>Delete any section Entitled &ldquo;Endorsements&rdquo;.  Such a section
  may not be included in the Modified Version.
  
!           <li>Do not retitle any existing section to be Entitled &ldquo;Endorsements&rdquo; or
  to conflict in title with any Invariant Section.
  
!           <li>Preserve any Warranty Disclaimers.
!           </ol>
  
!      <p>If the Modified Version includes new front-matter sections or
  appendices that qualify as Secondary Sections and contain no material
  copied from the Document, you may at your option designate some or all
  of these sections as invariant.  To do this, add their titles to the
! list of Invariant Sections in the Modified Version's license notice. 
  These titles must be distinct from any other section titles.
! 
!      <p>You may add a section Entitled &ldquo;Endorsements&rdquo;, provided it contains
  nothing but endorsements of your Modified Version by various
  parties&mdash;for example, statements of peer review or that the text has
  been approved by an organization as the authoritative definition of a
  standard.
! 
!      <p>You may add a passage of up to five words as a Front-Cover Text, and a
  passage of up to 25 words as a Back-Cover Text, to the end of the list
  of Cover Texts in the Modified Version.  Only one passage of
  Front-Cover Text and one of Back-Cover Text may be added by (or
--- 315,360 ----
  given on its Title Page, then add an item describing the Modified
  Version as stated in the previous sentence.
  
! </li><li> Preserve the network location, if any, given in the Document for
  public access to a Transparent copy of the Document, and likewise
  the network locations given in the Document for previous versions
! it was based on.  These may be placed in the &ldquo;History&rdquo; section.
  You may omit a network location for a work that was published at
  least four years before the Document itself, or if the original
  publisher of the version it refers to gives permission.
  
! </li><li> For any section Entitled &ldquo;Acknowledgements&rdquo; or &ldquo;Dedications&rdquo;, Preserve
  the Title of the section, and preserve in the section all the
  substance and tone of each of the contributor acknowledgements and/or
  dedications given therein.
  
! </li><li> Preserve all the Invariant Sections of the Document,
  unaltered in their text and in their titles.  Section numbers
  or the equivalent are not considered part of the section titles.
  
! </li><li> Delete any section Entitled &ldquo;Endorsements&rdquo;.  Such a section
  may not be included in the Modified Version.
  
! </li><li> Do not retitle any existing section to be Entitled &ldquo;Endorsements&rdquo; or
  to conflict in title with any Invariant Section.
  
! </li><li> Preserve any Warranty Disclaimers.
! </li></ol>
  
! <p>If the Modified Version includes new front-matter sections or
  appendices that qualify as Secondary Sections and contain no material
  copied from the Document, you may at your option designate some or all
  of these sections as invariant.  To do this, add their titles to the
! list of Invariant Sections in the Modified Version&rsquo;s license notice.
  These titles must be distinct from any other section titles.
! </p>
! <p>You may add a section Entitled &ldquo;Endorsements&rdquo;, provided it contains
  nothing but endorsements of your Modified Version by various
  parties&mdash;for example, statements of peer review or that the text has
  been approved by an organization as the authoritative definition of a
  standard.
! </p>
! <p>You may add a passage of up to five words as a Front-Cover Text, and a
  passage of up to 25 words as a Back-Cover Text, to the end of the list
  of Cover Texts in the Modified Version.  Only one passage of
  Front-Cover Text and one of Back-Cover Text may be added by (or
*************** includes a cover text for the same cover
*** 312,382 ****
  by arrangement made by the same entity you are acting on behalf of,
  you may not add another; but you may replace the old one, on explicit
  permission from the previous publisher that added the old one.
! 
!      <p>The author(s) and publisher(s) of the Document do not by this License
  give permission to use their names for publicity for or to assert or
  imply endorsement of any Modified Version.
  
!      <li>COMBINING DOCUMENTS
! 
!      <p>You may combine the Document with other documents released under this
  License, under the terms defined in section 4 above for modified
  versions, provided that you include in the combination all of the
  Invariant Sections of all of the original documents, unmodified, and
  list them all as Invariant Sections of your combined work in its
  license notice, and that you preserve all their Warranty Disclaimers.
! 
!      <p>The combined work need only contain one copy of this License, and
  multiple identical Invariant Sections may be replaced with a single
  copy.  If there are multiple Invariant Sections with the same name but
  different contents, make the title of each such section unique by
  adding at the end of it, in parentheses, the name of the original
! author or publisher of that section if known, or else a unique number. 
  Make the same adjustment to the section titles in the list of
  Invariant Sections in the license notice of the combined work.
! 
!      <p>In the combination, you must combine any sections Entitled &ldquo;History&rdquo;
  in the various original documents, forming one section Entitled
  &ldquo;History&rdquo;; likewise combine any sections Entitled &ldquo;Acknowledgements&rdquo;,
  and any sections Entitled &ldquo;Dedications&rdquo;.  You must delete all
  sections Entitled &ldquo;Endorsements.&rdquo;
  
!      <li>COLLECTIONS OF DOCUMENTS
! 
!      <p>You may make a collection consisting of the Document and other documents
  released under this License, and replace the individual copies of this
  License in the various documents with a single copy that is included in
  the collection, provided that you follow the rules of this License for
  verbatim copying of each of the documents in all other respects.
! 
!      <p>You may extract a single document from such a collection, and distribute
  it individually under this License, provided you insert a copy of this
  License into the extracted document, and follow this License in all
  other respects regarding verbatim copying of that document.
  
!      <li>AGGREGATION WITH INDEPENDENT WORKS
! 
!      <p>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
  distribution medium, is called an &ldquo;aggregate&rdquo; if the copyright
  resulting from the compilation is not used to limit the legal rights
! of the compilation's users beyond what the individual works permit. 
  When the Document is included in an aggregate, this License does not
  apply to the other works in the aggregate which are not themselves
  derivative works of the Document.
! 
!      <p>If the Cover Text requirement of section 3 is applicable to these
  copies of the Document, then if the Document is less than one half of
! the entire aggregate, the Document's Cover Texts may be placed on
  covers that bracket the Document within the aggregate, or the
! electronic equivalent of covers if the Document is in electronic form. 
  Otherwise they must appear on printed covers that bracket the whole
  aggregate.
  
!      <li>TRANSLATION
! 
!      <p>Translation is considered a kind of modification, so you may
! distribute translations of the Document under the terms of section 4. 
  Replacing Invariant Sections with translations requires special
  permission from their copyright holders, but you may include
  translations of some or all Invariant Sections in addition to the
--- 363,433 ----
  by arrangement made by the same entity you are acting on behalf of,
  you may not add another; but you may replace the old one, on explicit
  permission from the previous publisher that added the old one.
! </p>
! <p>The author(s) and publisher(s) of the Document do not by this License
  give permission to use their names for publicity for or to assert or
  imply endorsement of any Modified Version.
+ </p>
+ </li><li> COMBINING DOCUMENTS
  
! <p>You may combine the Document with other documents released under this
  License, under the terms defined in section 4 above for modified
  versions, provided that you include in the combination all of the
  Invariant Sections of all of the original documents, unmodified, and
  list them all as Invariant Sections of your combined work in its
  license notice, and that you preserve all their Warranty Disclaimers.
! </p>
! <p>The combined work need only contain one copy of this License, and
  multiple identical Invariant Sections may be replaced with a single
  copy.  If there are multiple Invariant Sections with the same name but
  different contents, make the title of each such section unique by
  adding at the end of it, in parentheses, the name of the original
! author or publisher of that section if known, or else a unique number.
  Make the same adjustment to the section titles in the list of
  Invariant Sections in the license notice of the combined work.
! </p>
! <p>In the combination, you must combine any sections Entitled &ldquo;History&rdquo;
  in the various original documents, forming one section Entitled
  &ldquo;History&rdquo;; likewise combine any sections Entitled &ldquo;Acknowledgements&rdquo;,
  and any sections Entitled &ldquo;Dedications&rdquo;.  You must delete all
  sections Entitled &ldquo;Endorsements.&rdquo;
+ </p>
+ </li><li> COLLECTIONS OF DOCUMENTS
  
! <p>You may make a collection consisting of the Document and other documents
  released under this License, and replace the individual copies of this
  License in the various documents with a single copy that is included in
  the collection, provided that you follow the rules of this License for
  verbatim copying of each of the documents in all other respects.
! </p>
! <p>You may extract a single document from such a collection, and distribute
  it individually under this License, provided you insert a copy of this
  License into the extracted document, and follow this License in all
  other respects regarding verbatim copying of that document.
+ </p>
+ </li><li> AGGREGATION WITH INDEPENDENT WORKS
  
! <p>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
  distribution medium, is called an &ldquo;aggregate&rdquo; if the copyright
  resulting from the compilation is not used to limit the legal rights
! of the compilation&rsquo;s users beyond what the individual works permit.
  When the Document is included in an aggregate, this License does not
  apply to the other works in the aggregate which are not themselves
  derivative works of the Document.
! </p>
! <p>If the Cover Text requirement of section 3 is applicable to these
  copies of the Document, then if the Document is less than one half of
! the entire aggregate, the Document&rsquo;s Cover Texts may be placed on
  covers that bracket the Document within the aggregate, or the
! electronic equivalent of covers if the Document is in electronic form.
  Otherwise they must appear on printed covers that bracket the whole
  aggregate.
+ </p>
+ </li><li> TRANSLATION
  
! <p>Translation is considered a kind of modification, so you may
! distribute translations of the Document under the terms of section 4.
  Replacing Invariant Sections with translations requires special
  permission from their copyright holders, but you may include
  translations of some or all Invariant Sections in addition to the
*************** the original English version of this Lic
*** 387,434 ****
  of those notices and disclaimers.  In case of a disagreement between
  the translation and the original version of this License or a notice
  or disclaimer, the original version will prevail.
! 
!      <p>If a section in the Document is Entitled &ldquo;Acknowledgements&rdquo;,
  &ldquo;Dedications&rdquo;, or &ldquo;History&rdquo;, the requirement (section 4) to Preserve
  its Title (section 1) will typically require changing the actual
  title.
  
!      <li>TERMINATION
! 
!      <p>You may not copy, modify, sublicense, or distribute the Document
  except as expressly provided under this License.  Any attempt
  otherwise to copy, modify, sublicense, or distribute it is void, and
  will automatically terminate your rights under this License.
! 
!      <p>However, if you cease all violation of this License, then your license
  from a particular copyright holder is reinstated (a) provisionally,
  unless and until the copyright holder explicitly and finally
  terminates your license, and (b) permanently, if the copyright holder
  fails to notify you of the violation by some reasonable means prior to
  60 days after the cessation.
! 
!      <p>Moreover, your license from a particular copyright holder is
  reinstated permanently if the copyright holder notifies you of the
  violation by some reasonable means, this is the first time you have
  received notice of violation of this License (for any work) from that
  copyright holder, and you cure the violation prior to 30 days after
  your receipt of the notice.
! 
!      <p>Termination of your rights under this section does not terminate the
  licenses of parties who have received copies or rights from you under
  this License.  If your rights have been terminated and not permanently
  reinstated, receipt of a copy of some or all of the same material does
  not give you any rights to use it.
  
!      <li>FUTURE REVISIONS OF THIS LICENSE
! 
!      <p>The Free Software Foundation may publish new, revised versions
  of the GNU Free Documentation License from time to time.  Such new
  versions will be similar in spirit to the present version, but may
  differ in detail to address new problems or concerns.  See
  <a href="http://www.gnu.org/copyleft/">http://www.gnu.org/copyleft/</a>.
! 
!      <p>Each version of the License is given a distinguishing version number. 
  If the Document specifies that a particular numbered version of this
  License &ldquo;or any later version&rdquo; applies to it, you have the option of
  following the terms and conditions either of that specified version or
--- 438,485 ----
  of those notices and disclaimers.  In case of a disagreement between
  the translation and the original version of this License or a notice
  or disclaimer, the original version will prevail.
! </p>
! <p>If a section in the Document is Entitled &ldquo;Acknowledgements&rdquo;,
  &ldquo;Dedications&rdquo;, or &ldquo;History&rdquo;, the requirement (section 4) to Preserve
  its Title (section 1) will typically require changing the actual
  title.
+ </p>
+ </li><li> TERMINATION
  
! <p>You may not copy, modify, sublicense, or distribute the Document
  except as expressly provided under this License.  Any attempt
  otherwise to copy, modify, sublicense, or distribute it is void, and
  will automatically terminate your rights under this License.
! </p>
! <p>However, if you cease all violation of this License, then your license
  from a particular copyright holder is reinstated (a) provisionally,
  unless and until the copyright holder explicitly and finally
  terminates your license, and (b) permanently, if the copyright holder
  fails to notify you of the violation by some reasonable means prior to
  60 days after the cessation.
! </p>
! <p>Moreover, your license from a particular copyright holder is
  reinstated permanently if the copyright holder notifies you of the
  violation by some reasonable means, this is the first time you have
  received notice of violation of this License (for any work) from that
  copyright holder, and you cure the violation prior to 30 days after
  your receipt of the notice.
! </p>
! <p>Termination of your rights under this section does not terminate the
  licenses of parties who have received copies or rights from you under
  this License.  If your rights have been terminated and not permanently
  reinstated, receipt of a copy of some or all of the same material does
  not give you any rights to use it.
+ </p>
+ </li><li> FUTURE REVISIONS OF THIS LICENSE
  
! <p>The Free Software Foundation may publish new, revised versions
  of the GNU Free Documentation License from time to time.  Such new
  versions will be similar in spirit to the present version, but may
  differ in detail to address new problems or concerns.  See
  <a href="http://www.gnu.org/copyleft/">http://www.gnu.org/copyleft/</a>.
! </p>
! <p>Each version of the License is given a distinguishing version number.
  If the Document specifies that a particular numbered version of this
  License &ldquo;or any later version&rdquo; applies to it, you have the option of
  following the terms and conditions either of that specified version or
*************** Free Software Foundation.  If the Docume
*** 437,515 ****
  number of this License, you may choose any version ever published (not
  as a draft) by the Free Software Foundation.  If the Document
  specifies that a proxy can decide which future versions of this
! License can be used, that proxy's public statement of acceptance of a
  version permanently authorizes you to choose that version for the
  Document.
  
!      <li>RELICENSING
! 
!      <p>&ldquo;Massive Multiauthor Collaboration Site&rdquo; (or &ldquo;MMC Site&rdquo;) means any
  World Wide Web server that publishes copyrightable works and also
  provides prominent facilities for anybody to edit those works.  A
  public wiki that anybody can edit is an example of such a server.  A
  &ldquo;Massive Multiauthor Collaboration&rdquo; (or &ldquo;MMC&rdquo;) contained in the
  site means any set of copyrightable works thus published on the MMC
  site.
! 
!      <p>&ldquo;CC-BY-SA&rdquo; means the Creative Commons Attribution-Share Alike 3.0
  license published by Creative Commons Corporation, a not-for-profit
  corporation with a principal place of business in San Francisco,
  California, as well as future copyleft versions of that license
  published by that same organization.
! 
!      <p>&ldquo;Incorporate&rdquo; means to publish or republish a Document, in whole or
  in part, as part of another Document.
! 
!      <p>An MMC is &ldquo;eligible for relicensing&rdquo; if it is licensed under this
  License, and if all works that were first published under this License
  somewhere other than this MMC, and subsequently incorporated in whole
  or in part into the MMC, (1) had no cover texts or invariant sections,
  and (2) were thus incorporated prior to November 1, 2008.
! 
!      <p>The operator of an MMC Site may republish an MMC contained in the site
  under CC-BY-SA on the same site at any time before August 1, 2009,
  provided the MMC is eligible for relicensing.
  
!         </ol>
! 
! <h3 class="unnumberedsec"><a name="TOC0"></a>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:
  
! <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;
!        with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
!        Texts.  A copy of the license is included in the section entitled ``GNU
!        Free Documentation License''.
! </pre>
!    <p>If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
  replace the &ldquo;with...Texts.&rdquo; line with this:
  
! <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>
!    <p>If you have Invariant Sections without Cover Texts, or some other
  combination of the three, merge those two alternatives to suit the
  situation.
! 
!    <p>If your document contains nontrivial examples of program code, we
  recommend releasing these examples in parallel under your choice of
  free software license, such as the GNU General Public License,
  to permit their use in free software.
  
! <!-- Local Variables: -->
! <!-- ispell-local-pdict: "ispell-dict" -->
! <!-- End: -->
! <!-- man end -->
!    <p><hr />
  <p><a href="./index.html">Return to the GCC Installation page</a>
  
- <!-- *************************************************************************** -->
- <!-- Part 6 The End of the Document -->
- </body></html>
  
--- 488,572 ----
  number of this License, you may choose any version ever published (not
  as a draft) by the Free Software Foundation.  If the Document
  specifies that a proxy can decide which future versions of this
! License can be used, that proxy&rsquo;s public statement of acceptance of a
  version permanently authorizes you to choose that version for the
  Document.
+ </p>
+ </li><li> RELICENSING
  
! <p>&ldquo;Massive Multiauthor Collaboration Site&rdquo; (or &ldquo;MMC Site&rdquo;) means any
  World Wide Web server that publishes copyrightable works and also
  provides prominent facilities for anybody to edit those works.  A
  public wiki that anybody can edit is an example of such a server.  A
  &ldquo;Massive Multiauthor Collaboration&rdquo; (or &ldquo;MMC&rdquo;) contained in the
  site means any set of copyrightable works thus published on the MMC
  site.
! </p>
! <p>&ldquo;CC-BY-SA&rdquo; means the Creative Commons Attribution-Share Alike 3.0
  license published by Creative Commons Corporation, a not-for-profit
  corporation with a principal place of business in San Francisco,
  California, as well as future copyleft versions of that license
  published by that same organization.
! </p>
! <p>&ldquo;Incorporate&rdquo; means to publish or republish a Document, in whole or
  in part, as part of another Document.
! </p>
! <p>An MMC is &ldquo;eligible for relicensing&rdquo; if it is licensed under this
  License, and if all works that were first published under this License
  somewhere other than this MMC, and subsequently incorporated in whole
  or in part into the MMC, (1) had no cover texts or invariant sections,
  and (2) were thus incorporated prior to November 1, 2008.
! </p>
! <p>The operator of an MMC Site may republish an MMC contained in the site
  under CC-BY-SA on the same site at any time before August 1, 2009,
  provided the MMC is eligible for relicensing.
+ </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;
+   with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+   Texts.  A copy of the license is included in the section entitled ``GNU
+   Free Documentation License''.
+ </pre></div>
  
! <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>
  
! <p>If you have Invariant Sections without Cover Texts, or some other
  combination of the three, merge those two alternatives to suit the
  situation.
! </p>
! <p>If your document contains nontrivial examples of program code, we
  recommend releasing these examples in parallel under your choice of
  free software license, such as the GNU General Public License,
  to permit their use in free software.
+ </p>
  
! <hr />
! <p>
  <p><a href="./index.html">Return to the GCC Installation page</a>
+ </p>
+ 
+ <hr>
  
  
+ 
+ </body>
+ </html>
diff -Nrcpad gcc-7.3.0/INSTALL/index.html gcc-8.1.0/INSTALL/index.html
*** gcc-7.3.0/INSTALL/index.html	Thu Jan 25 08:17:55 2018
--- gcc-8.1.0/INSTALL/index.html	Wed May  2 08:19:59 2018
***************
*** 1,123 ****
! <html lang="en">
! <head>
! <title>Installing GCC</title>
! <meta http-equiv="Content-Type" content="text/html">
! <meta name="description" content="Installing GCC">
! <meta name="generator" content="makeinfo 4.13">
! <link title="Top" rel="top" href="#Top">
! <link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
! <!--
! Copyright (C) 1988-2017 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
  any later version published by the Free Software Foundation; with no
  Invariant Sections, the Front-Cover texts being (a) (see below), and
  with the Back-Cover Texts being (b) (see below).  A copy of the
! license is included in the section entitled "GNU Free Documentation License".
  
  (a) The FSF's Front-Cover Text is:
  
!      A GNU Manual
  
  (b) The FSF's Back-Cover Text is:
  
!      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.-->
! <meta http-equiv="Content-Style-Type" content="text/css">
! <style type="text/css"><!--
!   pre.display { font-family:inherit }
!   pre.format  { font-family:inherit }
!   pre.smalldisplay { font-family:inherit; font-size:smaller }
!   pre.smallformat  { font-family:inherit; font-size:smaller }
!   pre.smallexample { font-size:smaller }
!   pre.smalllisp    { font-size:smaller }
!   span.sc    { font-variant:small-caps }
!   span.roman { font-family:serif; font-weight:normal; } 
!   span.sansserif { font-family:sans-serif; font-weight:normal; } 
! --></style>
  </head>
! <body>
! <h1 class="settitle">Installing GCC</h1>
! The latest version of this document is always available at
! <a href="http://gcc.gnu.org/install/">http://gcc.gnu.org/install/</a>. 
  It refers to the current development sources, instructions for
  specific released versions are included with the sources.
! 
!    <p>This document describes the generic installation procedure for GCC as well
  as detailing some target specific installation instructions.
! 
!    <p>GCC includes several components that previously were separate distributions
  with their own installation instructions.  This document supersedes all
  package-specific installation instructions.
! 
!    <p><em>Before</em> starting the build/install procedure please check the
! <a href="specific.html">host/target specific installation notes</a>. 
  We recommend you browse the entire generic installation instructions before
  you proceed.
! 
!    <p>Lists of successful builds for released versions of GCC are
! available at <a href="http://gcc.gnu.org/buildstat.html">http://gcc.gnu.org/buildstat.html</a>. 
  These lists are updated as new information becomes available.
  
!    <p>The installation procedure itself is broken into five steps.
! 
!      <ol type=1 start=1>
! <li><a href="prerequisites.html">Prerequisites</a>
! <li><a href="download.html">Downloading the source</a>
! <li><a href="configure.html">Configuration</a>
! <li><a href="build.html">Building</a>
! <li><a href="test.html">Testing</a> (optional)
! <li><a href="finalinstall.html">Final install</a>
!         </ol>
! 
!    <p>Please note that GCC does not support &lsquo;<samp><span class="samp">make uninstall</span></samp>&rsquo; and probably
! won't do so in the near future as this would open a can of worms.  Instead,
  we suggest that you install GCC into a directory of its own and simply
  remove that directory when you do not need that specific version of GCC
  any longer, and, if shared libraries are installed there as well, no
  more binaries exist that use them.
! 
!    <p>There are also some <a href="old.html">old installation instructions</a>,
  which are mostly obsolete but still contain some information which has
  not yet been merged into the main part of this manual.
! 
!    <p><hr />
  <p><a href="./index.html">Return to the GCC Installation page</a>
! 
!    <p>Copyright &copy; 1988-2017 Free Software Foundation, Inc.
!    <pre class="sp">
! 
! </pre>
! 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; with no
  Invariant Sections, the Front-Cover texts being (a) (see below), and
  with the Back-Cover Texts being (b) (see below).  A copy of the
! license is included in the section entitled &ldquo;<a href="./gfdl.html">GNU Free Documentation License</a>&rdquo;.
  
-    <p>(a) The FSF's Front-Cover Text is:
  
-    <p>A GNU Manual
  
-    <p>(b) The FSF's Back-Cover Text is:
  
-    <p>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.
  
- <!-- ***Prerequisites************************************************** -->
- <!-- ***Downloading the source************************************************** -->
- <!-- ***Configuration*********************************************************** -->
- <!-- ***Building**************************************************************** -->
- <!-- ***Testing***************************************************************** -->
- <!-- ***Final install*********************************************************** -->
- <!-- ***Binaries**************************************************************** -->
- <!-- ***Specific**************************************************************** -->
- <!-- ***Old documentation****************************************************** -->
- <!-- ***GFDL******************************************************************** -->
- <!-- *************************************************************************** -->
- <!-- Part 6 The End of the Document -->
- </body></html>
  
--- 1,165 ----
! <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
! <html>
! <!-- Copyright (C) 1988-2018 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
  any later version published by the Free Software Foundation; with no
  Invariant Sections, the Front-Cover texts being (a) (see below), and
  with the Back-Cover Texts being (b) (see below).  A copy of the
! license is included in the section entitled "GNU
! Free Documentation License".
  
  (a) The FSF's Front-Cover Text is:
  
! A GNU Manual
  
  (b) The FSF's Back-Cover Text is:
  
! 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.4, http://www.gnu.org/software/texinfo/ -->
! <head>
! <title>Installing GCC</title>
! 
! <meta name="description" content="Installing GCC">
! <meta name="keywords" content="Installing GCC">
! <meta name="resource-type" content="document">
! <meta name="distribution" content="global">
! <meta name="Generator" content="makeinfo">
! <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
! <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>
! 
! 
  </head>
! 
! <body lang="en">
! <h1 class="settitle" align="center">Installing GCC</h1>
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! <p>The latest version of this document is always available at
! <a href="http://gcc.gnu.org/install/">http://gcc.gnu.org/install/</a>.
  It refers to the current development sources, instructions for
  specific released versions are included with the sources.
! </p>
! <p>This document describes the generic installation procedure for GCC as well
  as detailing some target specific installation instructions.
! </p>
! <p>GCC includes several components that previously were separate distributions
  with their own installation instructions.  This document supersedes all
  package-specific installation instructions.
! </p>
! <p><em>Before</em> starting the build/install procedure please check the
! <a href="specific.html">host/target specific installation notes</a>.
  We recommend you browse the entire generic installation instructions before
  you proceed.
! </p>
! <p>Lists of successful builds for released versions of GCC are
! available at <a href="http://gcc.gnu.org/buildstat.html">http://gcc.gnu.org/buildstat.html</a>.
  These lists are updated as new information becomes available.
+ </p>
+ <p>The installation procedure itself is broken into five steps.
+ </p>
+ <ol>
+ <li> <a href="prerequisites.html">Prerequisites</a>
+ </li><li> <a href="download.html">Downloading the source</a>
+ </li><li> <a href="configure.html">Configuration</a>
+ </li><li> <a href="build.html">Building</a>
+ </li><li> <a href="test.html">Testing</a> (optional)
+ </li><li> <a href="finalinstall.html">Final install</a>
+ </li></ol>
  
! <p>Please note that GCC does not support &lsquo;<samp>make uninstall</samp>&rsquo; and probably
! won&rsquo;t do so in the near future as this would open a can of worms.  Instead,
  we suggest that you install GCC into a directory of its own and simply
  remove that directory when you do not need that specific version of GCC
  any longer, and, if shared libraries are installed there as well, no
  more binaries exist that use them.
! </p>
! <p>There are also some <a href="old.html">old installation instructions</a>,
  which are mostly obsolete but still contain some information which has
  not yet been merged into the main part of this manual.
! </p>
! <hr />
! <p>
  <p><a href="./index.html">Return to the GCC Installation page</a>
! </p>
! <p>Copyright &copy; 1988-2018 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
  any later version published by the Free Software Foundation; with no
  Invariant Sections, the Front-Cover texts being (a) (see below), and
  with the Back-Cover Texts being (b) (see below).  A copy of the
! license is included in the section entitled &ldquo;<a href="./gfdl.html">GNU
! Free Documentation License</a>&rdquo;.
! </p>
! <p>(a) The FSF&rsquo;s Front-Cover Text is:
! </p>
! <p>A GNU Manual
! </p>
! <p>(b) The FSF&rsquo;s Back-Cover Text is:
! </p>
! <p>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.
! </p>
! 
! 
! 
! 
! 
  
  
  
  
  
  
+ 
+ 
+ 
+ 
+ </body>
+ </html>
diff -Nrcpad gcc-7.3.0/INSTALL/old.html gcc-8.1.0/INSTALL/old.html
*** gcc-7.3.0/INSTALL/old.html	Thu Jan 25 08:17:55 2018
--- gcc-8.1.0/INSTALL/old.html	Wed May  2 08:20:02 2018
***************
*** 1,181 ****
! <html lang="en">
! <head>
! <title>Installing GCC: Old documentation</title>
! <meta http-equiv="Content-Type" content="text/html">
! <meta name="description" content="Installing GCC: Old documentation">
! <meta name="generator" content="makeinfo 4.13">
! <link title="Top" rel="top" href="#Top">
! <link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
! <!--
! Copyright (C) 1988-2017 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
  any later version published by the Free Software Foundation; with no
  Invariant Sections, the Front-Cover texts being (a) (see below), and
  with the Back-Cover Texts being (b) (see below).  A copy of the
! license is included in the section entitled "GNU Free Documentation License".
  
  (a) The FSF's Front-Cover Text is:
  
!      A GNU Manual
  
  (b) The FSF's Back-Cover Text is:
  
!      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.-->
! <meta http-equiv="Content-Style-Type" content="text/css">
! <style type="text/css"><!--
!   pre.display { font-family:inherit }
!   pre.format  { font-family:inherit }
!   pre.smalldisplay { font-family:inherit; font-size:smaller }
!   pre.smallformat  { font-family:inherit; font-size:smaller }
!   pre.smallexample { font-size:smaller }
!   pre.smalllisp    { font-size:smaller }
!   span.sc    { font-variant:small-caps }
!   span.roman { font-family:serif; font-weight:normal; } 
!   span.sansserif { font-family:sans-serif; font-weight:normal; } 
! --></style>
  </head>
! <body>
! <h1 class="settitle">Installing GCC: Old documentation</h1>
  <h1 align="center">Old installation documentation</h1>
  
!    <p>Note most of this information is out of date and superseded by the
  previous chapters of this manual.  It is provided for historical
  reference only, because of a lack of volunteers to merge it into the
  main manual.
  
!    <p>Here is the procedure for installing GCC on a GNU or Unix system.
! 
!      <ol type=1 start=1>
! <li>If you have chosen a configuration for GCC which requires other GNU
  tools (such as GAS or the GNU linker) instead of the standard system
  tools, install the required tools in the build directory under the names
! <samp><span class="file">as</span></samp>, <samp><span class="file">ld</span></samp> or whatever is appropriate.
  
!      <p>Alternatively, you can do subsequent compilation using a value of the
  <code>PATH</code> environment variable such that the necessary GNU tools come
  before the standard system tools.
  
!      <li>Specify the host, build and target machine configurations.  You do this
! when you run the <samp><span class="file">configure</span></samp> script.
! 
!      <p>The <dfn>build</dfn> machine is the system which you are using, the
! <dfn>host</dfn> machine is the system where you want to run the resulting
! compiler (normally the build machine), and the <dfn>target</dfn> machine is
  the system for which you want the compiler to generate code.
! 
!      <p>If you are building a compiler to produce code for the machine it runs
  on (a native compiler), you normally do not need to specify any operands
! to <samp><span class="file">configure</span></samp>; it will try to guess the type of machine you are on
! and use that as the build, host and target machines.  So you don't need
  to specify a configuration when building a native compiler unless
! <samp><span class="file">configure</span></samp> cannot figure out what your configuration is or guesses
  wrong.
! 
!      <p>In those cases, specify the build machine's <dfn>configuration name</dfn>
! with the <samp><span class="option">--host</span></samp> option; the host and target will default to be
  the same as the host machine.
  
!      <p>Here is an example:
! 
!      <pre class="smallexample">          ./configure --host=sparc-sun-sunos4.1
! </pre>
!      <p>A configuration name may be canonical or it may be more or less
  abbreviated.
! 
!      <p>A canonical configuration name has three parts, separated by dashes. 
! It looks like this: &lsquo;<samp><var>cpu</var><span class="samp">-</span><var>company</var><span class="samp">-</span><var>system</var></samp>&rsquo;. 
! (The three parts may themselves contain dashes; <samp><span class="file">configure</span></samp>
  can figure out which dashes serve which purpose.)  For example,
! &lsquo;<samp><span class="samp">m68k-sun-sunos4.1</span></samp>&rsquo; specifies a Sun 3.
! 
!      <p>You can also replace parts of the configuration by nicknames or aliases. 
! For example, &lsquo;<samp><span class="samp">sun3</span></samp>&rsquo; stands for &lsquo;<samp><span class="samp">m68k-sun</span></samp>&rsquo;, so
! &lsquo;<samp><span class="samp">sun3-sunos4.1</span></samp>&rsquo; is another way to specify a Sun 3.
! 
!      <p>You can specify a version number after any of the system types, and some
  of the CPU types.  In most cases, the version is irrelevant, and will be
  ignored.  So you might as well specify the version if you know it.
! 
!      <p>See <a href="#Configurations">Configurations</a>, for a list of supported configuration names and
  notes on many of the configurations.  You should check the notes in that
  section before proceeding any further with the installation of GCC.
  
!         </ol>
! 
!    <p><h2><a name="Configurations"></a>Configurations Supported by GCC</h2><a name="index-configurations-supported-by-GCC-1"></a>
! Here are the possible CPU types:
  
!    <blockquote>
! <!-- gmicro, fx80, spur and tahoe omitted since they don't work. -->
! 1750a, a29k, alpha, arm, avr, c<var>n</var>, clipper, dsp16xx, elxsi, fr30, h8300,
  hppa1.0, hppa1.1, i370, i386, i486, i586, i686, i786, i860, i960, ip2k, m32r,
  m68000, m68k, m88k, mcore, mips, mipsel, mips64, mips64el,
  mn10200, mn10300, ns32k, pdp11, powerpc, powerpcle, romp, rs6000, sh, sparc,
! sparclite, sparc64, v850, vax, we32k. 
! </blockquote>
  
!    <p>Here are the recognized company names.  As you can see, customary
  abbreviations are used rather than the longer official names.
! 
! <!-- What should be done about merlin, tek*, dolphin? -->
!    <blockquote>
! acorn, alliant, altos, apollo, apple, att, bull,
  cbm, convergent, convex, crds, dec, dg, dolphin,
  elxsi, encore, harris, hitachi, hp, ibm, intergraph, isi,
  mips, motorola, ncr, next, ns, omron, plexus,
! sequent, sgi, sony, sun, tti, unicom, wrs. 
! </blockquote>
  
!    <p>The company name is meaningful only to disambiguate when the rest of
  the information supplied is insufficient.  You can omit it, writing
! just &lsquo;<samp><var>cpu</var><span class="samp">-</span><var>system</var></samp>&rsquo;, if it is not needed.  For example,
! &lsquo;<samp><span class="samp">vax-ultrix4.2</span></samp>&rsquo; is equivalent to &lsquo;<samp><span class="samp">vax-dec-ultrix4.2</span></samp>&rsquo;.
! 
!    <p>Here is a list of system types:
! 
!    <blockquote>
! 386bsd, aix, acis, amigaos, aos, aout, aux, bosx, bsd, clix, coff, ctix, cxux,
  dgux, dynix, ebmon, ecoff, elf, esix, freebsd, hms, genix, gnu, linux,
  linux-gnu, hiux, hpux, iris, irix, isc, luna, lynxos, mach, minix, msdos, mvs,
  netbsd, newsos, nindy, ns, osf, osfrose, ptx, riscix, riscos, rtu, sco, sim,
  solaris, sunos, sym, sysv, udi, ultrix, unicos, uniplus, unos, vms, vsta,
! vxworks, winnt, xenix. 
! </blockquote>
  
! <p class="noindent">You can omit the system type; then <samp><span class="file">configure</span></samp> guesses the
  operating system from the CPU and company.
! 
!    <p>You can add a version number to the system type; this may or may not
! make a difference.  For example, you can write &lsquo;<samp><span class="samp">bsd4.3</span></samp>&rsquo; or
! &lsquo;<samp><span class="samp">bsd4.4</span></samp>&rsquo; to distinguish versions of BSD.  In practice, the version
! number is most needed for &lsquo;<samp><span class="samp">sysv3</span></samp>&rsquo; and &lsquo;<samp><span class="samp">sysv4</span></samp>&rsquo;, which are often
  treated differently.
! 
!    <p>&lsquo;<samp><span class="samp">linux-gnu</span></samp>&rsquo; is the canonical name for the GNU/Linux target; however
! GCC will also accept &lsquo;<samp><span class="samp">linux</span></samp>&rsquo;.  The version of the kernel in use is
! not relevant on these systems.  A suffix such as &lsquo;<samp><span class="samp">libc1</span></samp>&rsquo; or &lsquo;<samp><span class="samp">aout</span></samp>&rsquo;
  distinguishes major versions of the C library; all of the suffixed versions
  are obsolete.
! 
!    <p>If you specify an impossible combination such as &lsquo;<samp><span class="samp">i860-dg-vms</span></samp>&rsquo;,
! then you may get an error message from <samp><span class="file">configure</span></samp>, or it may
! ignore part of the information and do the best it can with the rest. 
! <samp><span class="file">configure</span></samp> always prints the canonical name for the alternative
  that it used.  GCC does not support all possible alternatives.
! 
!    <p>Often a particular model of machine has a name.  Many machine names are
  recognized as aliases for CPU/company combinations.  Thus, the machine
! name &lsquo;<samp><span class="samp">sun3</span></samp>&rsquo;, mentioned above, is an alias for &lsquo;<samp><span class="samp">m68k-sun</span></samp>&rsquo;. 
  Sometimes we accept a company name as a machine name, when the name is
  popularly used for a particular machine.  Here is a table of the known
  machine names:
! 
!    <blockquote>
! 3300, 3b1, 3b<var>n</var>, 7300, altos3068, altos,
  apollo68, att-7300, balance,
  convex-c<var>n</var>, crds, decstation-3100,
  decstation, delta, encore,
--- 1,232 ----
! <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
! <html>
! <!-- Copyright (C) 1988-2018 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
  any later version published by the Free Software Foundation; with no
  Invariant Sections, the Front-Cover texts being (a) (see below), and
  with the Back-Cover Texts being (b) (see below).  A copy of the
! license is included in the section entitled "GNU
! Free Documentation License".
  
  (a) The FSF's Front-Cover Text is:
  
! A GNU Manual
  
  (b) The FSF's Back-Cover Text is:
  
! 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.4, http://www.gnu.org/software/texinfo/ -->
! <head>
! <title>Installing GCC</title>
! 
! <meta name="description" content="Installing GCC">
! <meta name="keywords" content="Installing GCC">
! <meta name="resource-type" content="document">
! <meta name="distribution" content="global">
! <meta name="Generator" content="makeinfo">
! <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
! <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>
! 
! 
  </head>
! 
! <body lang="en">
! <h1 class="settitle" align="center">Installing GCC</h1>
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
  <h1 align="center">Old installation documentation</h1>
  
! <p>Note most of this information is out of date and superseded by the
  previous chapters of this manual.  It is provided for historical
  reference only, because of a lack of volunteers to merge it into the
  main manual.
+ </p>
  
! <p>Here is the procedure for installing GCC on a GNU or Unix system.
! </p>
! <ol>
! <li> If you have chosen a configuration for GCC which requires other GNU
  tools (such as GAS or the GNU linker) instead of the standard system
  tools, install the required tools in the build directory under the names
! <samp>as</samp>, <samp>ld</samp> or whatever is appropriate.
  
! <p>Alternatively, you can do subsequent compilation using a value of the
  <code>PATH</code> environment variable such that the necessary GNU tools come
  before the standard system tools.
+ </p>
+ </li><li> Specify the host, build and target machine configurations.  You do this
+ when you run the <samp>configure</samp> script.
  
! <p>The <em>build</em> machine is the system which you are using, the
! <em>host</em> machine is the system where you want to run the resulting
! compiler (normally the build machine), and the <em>target</em> machine is
  the system for which you want the compiler to generate code.
! </p>
! <p>If you are building a compiler to produce code for the machine it runs
  on (a native compiler), you normally do not need to specify any operands
! to <samp>configure</samp>; it will try to guess the type of machine you are on
! and use that as the build, host and target machines.  So you don&rsquo;t need
  to specify a configuration when building a native compiler unless
! <samp>configure</samp> cannot figure out what your configuration is or guesses
  wrong.
! </p>
! <p>In those cases, specify the build machine&rsquo;s <em>configuration name</em>
! with the <samp>--host</samp> option; the host and target will default to be
  the same as the host machine.
+ </p>
+ <p>Here is an example:
+ </p>
+ <div class="smallexample">
+ <pre class="smallexample">./configure --host=sparc-sun-sunos4.1
+ </pre></div>
  
! <p>A configuration name may be canonical or it may be more or less
  abbreviated.
! </p>
! <p>A canonical configuration name has three parts, separated by dashes.
! It looks like this: &lsquo;<samp><var>cpu</var>-<var>company</var>-<var>system</var></samp>&rsquo;.
! (The three parts may themselves contain dashes; <samp>configure</samp>
  can figure out which dashes serve which purpose.)  For example,
! &lsquo;<samp>m68k-sun-sunos4.1</samp>&rsquo; specifies a Sun 3.
! </p>
! <p>You can also replace parts of the configuration by nicknames or aliases.
! For example, &lsquo;<samp>sun3</samp>&rsquo; stands for &lsquo;<samp>m68k-sun</samp>&rsquo;, so
! &lsquo;<samp>sun3-sunos4.1</samp>&rsquo; is another way to specify a Sun 3.
! </p>
! <p>You can specify a version number after any of the system types, and some
  of the CPU types.  In most cases, the version is irrelevant, and will be
  ignored.  So you might as well specify the version if you know it.
! </p>
! <p>See <a href="#Configurations">Configurations</a>, for a list of supported configuration names and
  notes on many of the configurations.  You should check the notes in that
  section before proceeding any further with the installation of GCC.
+ </p>
+ </li></ol>
  
! <h2><a name="Configurations"></a>Configurations Supported by GCC</h2>
! <a name="index-configurations-supported-by-GCC"></a>
  
! <p>Here are the possible CPU types:
! </p>
! <blockquote>
! <p>1750a, a29k, alpha, arm, avr, c<var>n</var>, clipper, dsp16xx, elxsi, fr30, h8300,
  hppa1.0, hppa1.1, i370, i386, i486, i586, i686, i786, i860, i960, ip2k, m32r,
  m68000, m68k, m88k, mcore, mips, mipsel, mips64, mips64el,
  mn10200, mn10300, ns32k, pdp11, powerpc, powerpcle, romp, rs6000, sh, sparc,
! sparclite, sparc64, v850, vax, we32k.
! </p></blockquote>
  
! <p>Here are the recognized company names.  As you can see, customary
  abbreviations are used rather than the longer official names.
! </p>
! <blockquote>
! <p>acorn, alliant, altos, apollo, apple, att, bull,
  cbm, convergent, convex, crds, dec, dg, dolphin,
  elxsi, encore, harris, hitachi, hp, ibm, intergraph, isi,
  mips, motorola, ncr, next, ns, omron, plexus,
! sequent, sgi, sony, sun, tti, unicom, wrs.
! </p></blockquote>
  
! <p>The company name is meaningful only to disambiguate when the rest of
  the information supplied is insufficient.  You can omit it, writing
! just &lsquo;<samp><var>cpu</var>-<var>system</var></samp>&rsquo;, if it is not needed.  For example,
! &lsquo;<samp>vax-ultrix4.2</samp>&rsquo; is equivalent to &lsquo;<samp>vax-dec-ultrix4.2</samp>&rsquo;.
! </p>
! <p>Here is a list of system types:
! </p>
! <blockquote>
! <p>386bsd, aix, acis, amigaos, aos, aout, aux, bosx, bsd, clix, coff, ctix, cxux,
  dgux, dynix, ebmon, ecoff, elf, esix, freebsd, hms, genix, gnu, linux,
  linux-gnu, hiux, hpux, iris, irix, isc, luna, lynxos, mach, minix, msdos, mvs,
  netbsd, newsos, nindy, ns, osf, osfrose, ptx, riscix, riscos, rtu, sco, sim,
  solaris, sunos, sym, sysv, udi, ultrix, unicos, uniplus, unos, vms, vsta,
! vxworks, winnt, xenix.
! </p></blockquote>
  
! <p>You can omit the system type; then <samp>configure</samp> guesses the
  operating system from the CPU and company.
! </p>
! <p>You can add a version number to the system type; this may or may not
! make a difference.  For example, you can write &lsquo;<samp>bsd4.3</samp>&rsquo; or
! &lsquo;<samp>bsd4.4</samp>&rsquo; to distinguish versions of BSD.  In practice, the version
! number is most needed for &lsquo;<samp>sysv3</samp>&rsquo; and &lsquo;<samp>sysv4</samp>&rsquo;, which are often
  treated differently.
! </p>
! <p>&lsquo;<samp>linux-gnu</samp>&rsquo; is the canonical name for the GNU/Linux target; however
! GCC will also accept &lsquo;<samp>linux</samp>&rsquo;.  The version of the kernel in use is
! not relevant on these systems.  A suffix such as &lsquo;<samp>libc1</samp>&rsquo; or &lsquo;<samp>aout</samp>&rsquo;
  distinguishes major versions of the C library; all of the suffixed versions
  are obsolete.
! </p>
! <p>If you specify an impossible combination such as &lsquo;<samp>i860-dg-vms</samp>&rsquo;,
! then you may get an error message from <samp>configure</samp>, or it may
! ignore part of the information and do the best it can with the rest.
! <samp>configure</samp> always prints the canonical name for the alternative
  that it used.  GCC does not support all possible alternatives.
! </p>
! <p>Often a particular model of machine has a name.  Many machine names are
  recognized as aliases for CPU/company combinations.  Thus, the machine
! name &lsquo;<samp>sun3</samp>&rsquo;, mentioned above, is an alias for &lsquo;<samp>m68k-sun</samp>&rsquo;.
  Sometimes we accept a company name as a machine name, when the name is
  popularly used for a particular machine.  Here is a table of the known
  machine names:
! </p>
! <blockquote>
! <p>3300, 3b1, 3b<var>n</var>, 7300, altos3068, altos,
  apollo68, att-7300, balance,
  convex-c<var>n</var>, crds, decstation-3100,
  decstation, delta, encore,
*************** m3230, magnum, merlin, miniframe,
*** 186,201 ****
  mmax, news-3600, news800, news, next,
  pbd, pc532, pmax, powerpc, powerpcle, ps2, risc-news,
  rtpc, sun2, sun386i, sun386, sun3,
! sun4, symmetry, tower-32, tower. 
! </blockquote>
  
! <p class="noindent">Remember that a machine name specifies both the cpu type and the company
! name. 
  <hr />
! <p><a href="./index.html">Return to the GCC Installation page</a>
  
- <!-- ***GFDL******************************************************************** -->
- <!-- *************************************************************************** -->
- <!-- Part 6 The End of the Document -->
- </body></html>
  
--- 237,255 ----
  mmax, news-3600, news800, news, next,
  pbd, pc532, pmax, powerpc, powerpcle, ps2, risc-news,
  rtpc, sun2, sun386i, sun386, sun3,
! sun4, symmetry, tower-32, tower.
! </p></blockquote>
  
! <p>Remember that a machine name specifies both the cpu type and the company
! name.
  <hr />
! <p>
! <a href="./index.html">Return to the GCC Installation page</a>
! </p>
! 
  
  
+ 
+ 
+ </body>
+ </html>
diff -Nrcpad gcc-7.3.0/INSTALL/prerequisites.html gcc-8.1.0/INSTALL/prerequisites.html
*** gcc-7.3.0/INSTALL/prerequisites.html	Thu Jan 25 08:17:55 2018
--- gcc-8.1.0/INSTALL/prerequisites.html	Wed May  2 08:20:00 2018
***************
*** 1,295 ****
! <html lang="en">
! <head>
! <title>Prerequisites for GCC</title>
! <meta http-equiv="Content-Type" content="text/html">
! <meta name="description" content="Prerequisites for GCC">
! <meta name="generator" content="makeinfo 4.13">
! <link title="Top" rel="top" href="#Top">
! <link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
! <!--
! Copyright (C) 1988-2017 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
  any later version published by the Free Software Foundation; with no
  Invariant Sections, the Front-Cover texts being (a) (see below), and
  with the Back-Cover Texts being (b) (see below).  A copy of the
! license is included in the section entitled "GNU Free Documentation License".
  
  (a) The FSF's Front-Cover Text is:
  
!      A GNU Manual
  
  (b) The FSF's Back-Cover Text is:
  
!      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.-->
! <meta http-equiv="Content-Style-Type" content="text/css">
! <style type="text/css"><!--
!   pre.display { font-family:inherit }
!   pre.format  { font-family:inherit }
!   pre.smalldisplay { font-family:inherit; font-size:smaller }
!   pre.smallformat  { font-family:inherit; font-size:smaller }
!   pre.smallexample { font-size:smaller }
!   pre.smalllisp    { font-size:smaller }
!   span.sc    { font-variant:small-caps }
!   span.roman { font-family:serif; font-weight:normal; } 
!   span.sansserif { font-family:sans-serif; font-weight:normal; } 
! --></style>
  </head>
- <body>
- <h1 class="settitle">Prerequisites for GCC</h1>
- <a name="index-Prerequisites-1"></a>
- GCC requires that various tools and packages be available for use in the
- build procedure.  Modifying GCC sources requires additional tools
- described below.
  
! <h3 class="heading"><a name="TOC0"></a>Tools/packages necessary for building GCC</h3>
  
!      <dl>
! <dt>ISO C++98 compiler<dd>Necessary to bootstrap GCC, although versions of GCC prior
  to 4.8 also allow bootstrapping with a ISO C89 compiler and versions
  of GCC prior to 3.4 also allow bootstrapping with a traditional
  (K&amp;R) C compiler.
! 
!      <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 3.4 or later) because source code for language
  frontends other than C might use GCC extensions.
! 
!      <p>Note that to bootstrap GCC with versions of GCC earlier than 3.4, you
! may need to use <samp><span class="option">--disable-stage1-checking</span></samp>, though
  bootstrapping the compiler with such earlier compilers is strongly
  discouraged.
! 
!      <br><dt>C standard library and headers<dd>
! 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
  only the variant of the host C++ compiler).
! 
!      <p>This affects the popular &lsquo;<samp><span class="samp">x86_64-unknown-linux-gnu</span></samp>&rsquo; platform (among
! other multilib targets), for which 64-bit (&lsquo;<samp><span class="samp">x86_64</span></samp>&rsquo;) and 32-bit
! (&lsquo;<samp><span class="samp">i386</span></samp>&rsquo;) libc headers are usually packaged separately. If you do a
! build of a native compiler on &lsquo;<samp><span class="samp">x86_64-unknown-linux-gnu</span></samp>&rsquo;, make sure you
  either have the 32-bit libc developer package properly installed (the exact
  name of the package depends on your distro) or you must build GCC as a
  64-bit only compiler by configuring with the option
! <samp><span class="option">--disable-multilib</span></samp>.  Otherwise, you may encounter an error such as
! &lsquo;<samp><span class="samp">fatal error: gnu/stubs-32.h: No such file</span></samp>&rsquo;
! 
!      <br><dt>GNAT<dd>
! In order to build the Ada compiler (GNAT) you must already have GNAT
  installed because portions of the Ada frontend are written in Ada (with
  GNAT extensions.)  Refer to the Ada installation instructions for more
  specific information.
! 
!      <br><dt>A &ldquo;working&rdquo; POSIX compatible shell, or GNU bash<dd>
! Necessary when running <samp><span class="command">configure</span></samp> because some
! <samp><span class="command">/bin/sh</span></samp> shells have bugs and may crash when configuring the
! target libraries.  In other cases, <samp><span class="command">/bin/sh</span></samp> or <samp><span class="command">ksh</span></samp>
  have disastrous corner-case performance problems.  This
! can cause target <samp><span class="command">configure</span></samp> runs to literally take days to
  complete in some cases.
! 
!      <p>So on some platforms <samp><span class="command">/bin/ksh</span></samp> is sufficient, on others it
! isn't.  See the host/target specific instructions for your platform, or
! use <samp><span class="command">bash</span></samp> to be sure.  Then set <samp><span class="env">CONFIG_SHELL</span></samp> in your
  environment to your &ldquo;good&rdquo; shell prior to running
! <samp><span class="command">configure</span></samp>/<samp><span class="command">make</span></samp>.
! 
!      <p><samp><span class="command">zsh</span></samp> is not a fully compliant POSIX shell and will not
  work when configuring GCC.
! 
!      <br><dt>A POSIX or SVR4 awk<dd>
! 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.
! 
!      <br><dt>GNU binutils<dd>
! Necessary in some circumstances, optional in others.  See the
  host/target specific instructions for your platform for the exact
  requirements.
! 
!      <br><dt>gzip version 1.2.4 (or later) or<dt>bzip2 version 1.0.2 (or later)<dd>
! Necessary to uncompress GCC <samp><span class="command">tar</span></samp> files when source code is
  obtained via FTP mirror sites.
! 
!      <br><dt>GNU make version 3.80 (or later)<dd>
! You must have GNU make installed to build GCC.
! 
!      <br><dt>GNU tar version 1.14 (or later)<dd>
! Necessary (only on some platforms) to untar the source code.  Many
! systems' <samp><span class="command">tar</span></samp> programs will also work, only try GNU
! <samp><span class="command">tar</span></samp> if you have problems.
! 
!      <br><dt>Perl version 5.6.1 (or later)<dd>
! Necessary when targeting Darwin, building &lsquo;<samp><span class="samp">libstdc++</span></samp>&rsquo;,
! and not using <samp><span class="option">--disable-symvers</span></samp>. 
! Necessary when targeting Solaris 2 with Sun <samp><span class="command">ld</span></samp> and not using
! <samp><span class="option">--disable-symvers</span></samp>.  The bundled <samp><span class="command">perl</span></samp> in Solaris&nbsp;8
  and up works.
! 
!      <p>Necessary when regenerating <samp><span class="file">Makefile</span></samp> dependencies in libiberty. 
! Necessary when regenerating <samp><span class="file">libiberty/functions.texi</span></samp>. 
! Necessary when generating manpages from Texinfo manuals. 
  Used by various scripts to generate some files included in SVN (mainly
  Unicode-related and rarely changing) from source tables.
! 
  </dl>
  
!    <p>Several support libraries are necessary to build GCC, some are required,
  others optional.  While any sufficiently new version of required tools
  usually work, library requirements are generally stricter.  Newer
! versions may work in some cases, but it's safer to use the exact
  versions documented.  We appreciate bug reports about problems with
  newer versions, though.  If your OS vendor provides packages for the
  support libraries then using those packages may be the simplest way to
  install the libraries.
! 
!      <dl>
! <dt>GNU Multiple Precision Library (GMP) version 4.3.2 (or later)<dd>
! Necessary to build GCC.  If a GMP source distribution is found in a
! subdirectory of your GCC sources named <samp><span class="file">gmp</span></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
! <samp><span class="option">--with-gmp</span></samp> configure option.  See also <samp><span class="option">--with-gmp-lib</span></samp>
! and <samp><span class="option">--with-gmp-include</span></samp>. 
  The in-tree build is only supported with the GMP version that
  download_prerequisites installs.
! 
!      <br><dt>MPFR Library version 2.4.2 (or later)<dd>
! Necessary to build GCC.  It can be downloaded from
  <a href="http://www.mpfr.org/">http://www.mpfr.org/</a>.  If an MPFR source distribution is found
! in a subdirectory of your GCC sources named <samp><span class="file">mpfr</span></samp>, it will be
  built together with GCC.  Alternatively, if MPFR is already installed
  but it is not in your default library search path, the
! <samp><span class="option">--with-mpfr</span></samp> configure option should be used.  See also
! <samp><span class="option">--with-mpfr-lib</span></samp> and <samp><span class="option">--with-mpfr-include</span></samp>. 
  The in-tree build is only supported with the MPFR version that
  download_prerequisites installs.
! 
!      <br><dt>MPC Library version 0.8.1 (or later)<dd>
! Necessary to build GCC.  It can be downloaded from
  <a href="http://www.multiprecision.org/">http://www.multiprecision.org/</a>.  If an MPC source distribution
! is found in a subdirectory of your GCC sources named <samp><span class="file">mpc</span></samp>, it
  will be built together with GCC.  Alternatively, if MPC is already
  installed but it is not in your default library search path, the
! <samp><span class="option">--with-mpc</span></samp> configure option should be used.  See also
! <samp><span class="option">--with-mpc-lib</span></samp> and <samp><span class="option">--with-mpc-include</span></samp>. 
  The in-tree build is only supported with the MPC version that
  download_prerequisites installs.
! 
!      <br><dt>isl Library version 0.15 or later.<dd>
! Necessary to build GCC with the Graphite loop optimizations. 
! It can be downloaded from <a href="ftp://gcc.gnu.org/pub/gcc/infrastructure/">ftp://gcc.gnu.org/pub/gcc/infrastructure/</a>. 
  If an isl source distribution is found
! in a subdirectory of your GCC sources named <samp><span class="file">isl</span></samp>, it will be
! built together with GCC.  Alternatively, the <samp><span class="option">--with-isl</span></samp> configure
  option should be used if isl is not installed in your default library
  search path.
  
!    </dl>
! 
! <h3 class="heading"><a name="TOC1"></a>Tools/packages necessary for modifying GCC</h3>
! 
!      <dl>
! <dt>autoconf version 2.64<dt>GNU m4 version 1.4.6 (or later)<dd>
! Necessary when modifying <samp><span class="file">configure.ac</span></samp>, <samp><span class="file">aclocal.m4</span></samp>, etc. 
! to regenerate <samp><span class="file">configure</span></samp> and <samp><span class="file">config.in</span></samp> files.
! 
!      <br><dt>automake version 1.11.6<dd>
! Necessary when modifying a <samp><span class="file">Makefile.am</span></samp> file to regenerate its
! associated <samp><span class="file">Makefile.in</span></samp>.
! 
!      <p>Much of GCC does not use automake, so directly edit the <samp><span class="file">Makefile.in</span></samp>
! file.  Specifically this applies to the <samp><span class="file">gcc</span></samp>, <samp><span class="file">intl</span></samp>,
! <samp><span class="file">libcpp</span></samp>, <samp><span class="file">libiberty</span></samp>, <samp><span class="file">libobjc</span></samp> directories as well
  as any of their subdirectories.
! 
!      <p>For directories that use automake, GCC requires the latest release in
  the 1.11 series, which is currently 1.11.6.  When regenerating a directory
  to a newer version, please update all the directories using an older 1.11
  to the latest released version.
! 
!      <br><dt>gettext version 0.14.5 (or later)<dd>
! Needed to regenerate <samp><span class="file">gcc.pot</span></samp>.
! 
!      <br><dt>gperf version 2.7.2 (or later)<dd>
! Necessary when modifying <samp><span class="command">gperf</span></samp> input files, e.g. 
! <samp><span class="file">gcc/cp/cfns.gperf</span></samp> to regenerate its associated header file, e.g. 
! <samp><span class="file">gcc/cp/cfns.h</span></samp>.
! 
!      <br><dt>DejaGnu 1.4.4<dt>Expect<dt>Tcl<dd>
! Necessary to run the GCC testsuite; see the section on testing for
  details.  Tcl 8.6 has a known regression in RE pattern handling that
  make parts of the testsuite fail.  See
  <a href="http://core.tcl.tk/tcl/tktview/267b7e2334ee2e9de34c4b00d6e72e2f1997085f">http://core.tcl.tk/tcl/tktview/267b7e2334ee2e9de34c4b00d6e72e2f1997085f</a>
  for more information.  This bug has been fixed in 8.6.1.
! 
!      <br><dt>autogen version 5.5.4 (or later) and<dt>guile version 1.4.1 (or later)<dd>
! Necessary to regenerate <samp><span class="file">fixinc/fixincl.x</span></samp> from
! <samp><span class="file">fixinc/inclhack.def</span></samp> and <samp><span class="file">fixinc/*.tpl</span></samp>.
! 
!      <p>Necessary to run &lsquo;<samp><span class="samp">make check</span></samp>&rsquo; for <samp><span class="file">fixinc</span></samp>.
! 
!      <p>Necessary to regenerate the top level <samp><span class="file">Makefile.in</span></samp> file from
! <samp><span class="file">Makefile.tpl</span></samp> and <samp><span class="file">Makefile.def</span></samp>.
! 
!      <br><dt>Flex version 2.5.4 (or later)<dd>
! Necessary when modifying <samp><span class="file">*.l</span></samp> files.
! 
!      <p>Necessary to build GCC during development because the generated output
  files are not included in the SVN repository.  They are included in
  releases.
! 
!      <br><dt>Texinfo version 4.7 (or later)<dd>
! Necessary for running <samp><span class="command">makeinfo</span></samp> when modifying <samp><span class="file">*.texi</span></samp>
  files to test your changes.
! 
!      <p>Necessary for running <samp><span class="command">make dvi</span></samp> or <samp><span class="command">make pdf</span></samp> to
  create printable documentation in DVI or PDF format.  Texinfo version
! 4.8 or later is required for <samp><span class="command">make pdf</span></samp>.
! 
!      <p>Necessary to build GCC documentation during development because the
  generated output files are not included in the SVN repository.  They are
  included in releases.
! 
!      <br><dt>TeX (any working version)<dd>
! Necessary for running <samp><span class="command">texi2dvi</span></samp> and <samp><span class="command">texi2pdf</span></samp>, which
! are used when running <samp><span class="command">make dvi</span></samp> or <samp><span class="command">make pdf</span></samp> to create
  DVI or PDF files, respectively.
  
!      <br><dt>Sphinx version 1.0 (or later)<dd>
! Necessary to regenerate <samp><span class="file">jit/docs/_build/texinfo</span></samp> from the <samp><span class="file">.rst</span></samp>
! files in the directories below <samp><span class="file">jit/docs</span></samp>.
  
-      <br><dt>SVN (any version)<dt>SSH (any version)<dd>
- Necessary to access the SVN repository.  Public releases and weekly
- snapshots of the development sources are also available via FTP.
  
-      <br><dt>GNU diffutils version 2.7 (or later)<dd>
- Useful when submitting patches for the GCC source code.
  
-      <br><dt>patch version 2.5.4 (or later)<dd>
- Necessary when applying patches, created with <samp><span class="command">diff</span></samp>, to one's
- own sources.
  
- </dl>
  
-    <p><hr />
- <p><a href="./index.html">Return to the GCC Installation page</a>
  
- <!-- ***Downloading the source************************************************** -->
- <!-- ***Configuration*********************************************************** -->
- <!-- ***Building**************************************************************** -->
- <!-- ***Testing***************************************************************** -->
- <!-- ***Final install*********************************************************** -->
- <!-- ***Binaries**************************************************************** -->
- <!-- ***Specific**************************************************************** -->
- <!-- ***Old documentation****************************************************** -->
- <!-- ***GFDL******************************************************************** -->
- <!-- *************************************************************************** -->
- <!-- Part 6 The End of the Document -->
- </body></html>
  
--- 1,403 ----
! <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
! <html>
! <!-- Copyright (C) 1988-2018 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
  any later version published by the Free Software Foundation; with no
  Invariant Sections, the Front-Cover texts being (a) (see below), and
  with the Back-Cover Texts being (b) (see below).  A copy of the
! license is included in the section entitled "GNU
! Free Documentation License".
  
  (a) The FSF's Front-Cover Text is:
  
! A GNU Manual
  
  (b) The FSF's Back-Cover Text is:
  
! 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.4, http://www.gnu.org/software/texinfo/ -->
! <head>
! <title>Installing GCC</title>
! 
! <meta name="description" content="Installing GCC">
! <meta name="keywords" content="Installing GCC">
! <meta name="resource-type" content="document">
! <meta name="distribution" content="global">
! <meta name="Generator" content="makeinfo">
! <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
! <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>
! 
! 
  </head>
  
! <body lang="en">
! <h1 class="settitle" align="center">Installing GCC</h1>
  
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! <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++98 compiler</dt>
! <dd><p>Necessary to bootstrap GCC, although versions of GCC prior
  to 4.8 also allow bootstrapping with a ISO C89 compiler and versions
  of GCC prior to 3.4 also allow bootstrapping with a traditional
  (K&amp;R) C compiler.
! </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 3.4 or later) because source code for language
  frontends other than C might use GCC extensions.
! </p>
! <p>Note that to bootstrap GCC with versions of GCC earlier than 3.4, you
! may need to use <samp>--disable-stage1-checking</samp>, though
  bootstrapping the compiler with such earlier compilers is strongly
  discouraged.
! </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
  only the variant of the host C++ compiler).
! </p>
! <p>This affects the popular &lsquo;<samp>x86_64-unknown-linux-gnu</samp>&rsquo; platform (among
! other multilib targets), for which 64-bit (&lsquo;<samp>x86_64</samp>&rsquo;) and 32-bit
! (&lsquo;<samp>i386</samp>&rsquo;) libc headers are usually packaged separately. If you do a
! build of a native compiler on &lsquo;<samp>x86_64-unknown-linux-gnu</samp>&rsquo;, make sure you
  either have the 32-bit libc developer package properly installed (the exact
  name of the package depends on your distro) or you must build GCC as a
  64-bit only compiler by configuring with the option
! <samp>--disable-multilib</samp>.  Otherwise, you may encounter an error such as
! &lsquo;<samp>fatal error: gnu/stubs-32.h: No such file</samp>&rsquo;
! </p>
! </dd>
! <dt>GNAT</dt>
! <dd>
! <p>In order to build the Ada compiler (GNAT) you must already have GNAT
  installed because portions of the Ada frontend are written in Ada (with
  GNAT extensions.)  Refer to the Ada installation instructions for more
  specific information.
! </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
! target libraries.  In other cases, <code>/bin/sh</code> or <code>ksh</code>
  have disastrous corner-case performance problems.  This
! can cause target <code>configure</code> runs to literally take days to
  complete in some cases.
! </p>
! <p>So on some platforms <code>/bin/ksh</code> is sufficient, on others it
! isn&rsquo;t.  See the host/target specific instructions for your platform, or
! use <code>bash</code> to be sure.  Then set <code>CONFIG_SHELL</code> in your
  environment to your &ldquo;good&rdquo; shell prior to running
! <code>configure</code>/<code>make</code>.
! </p>
! <p><code>zsh</code> is not a fully compliant POSIX shell and will not
  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
  requirements.
! </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 FTP 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 Sun <code>ld</code> and not using
! <samp>--disable-symvers</samp>.  The bundled <code>perl</code> in Solaris&nbsp;8
  and up works.
! </p>
! <p>Necessary when regenerating <samp>Makefile</samp> dependencies in libiberty.
! Necessary when regenerating <samp>libiberty/functions.texi</samp>.
! Necessary when generating manpages from Texinfo manuals.
  Used by various scripts to generate some files included in SVN (mainly
  Unicode-related and rarely changing) from source tables.
! </p>
! <p>Used by <code>automake</code>.
! </p>
! </dd>
  </dl>
  
! <p>Several support libraries are necessary to build GCC, some are required,
  others optional.  While any sufficiently new version of required tools
  usually work, library requirements are generally stricter.  Newer
! versions may work in some cases, but it&rsquo;s safer to use the exact
  versions documented.  We appreciate bug reports about problems with
  newer versions, though.  If your OS vendor provides packages for the
  support libraries then using those packages may be the simplest way to
  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
! <samp>--with-gmp</samp> configure option.  See also <samp>--with-gmp-lib</samp>
! and <samp>--with-gmp-include</samp>.
  The in-tree build is only supported with the GMP version that
  download_prerequisites installs.
! </p>
! </dd>
! <dt>MPFR Library version 2.4.2 (or later)</dt>
! <dd>
! <p>Necessary to build GCC.  It can be downloaded from
  <a href="http://www.mpfr.org/">http://www.mpfr.org/</a>.  If an MPFR source distribution is found
! in a subdirectory of your GCC sources named <samp>mpfr</samp>, it will be
  built together with GCC.  Alternatively, if MPFR is already installed
  but it is not in your default library search path, the
! <samp>--with-mpfr</samp> configure option should be used.  See also
! <samp>--with-mpfr-lib</samp> and <samp>--with-mpfr-include</samp>.
  The in-tree build is only supported with the MPFR version that
  download_prerequisites installs.
! </p>
! </dd>
! <dt>MPC Library version 0.8.1 (or later)</dt>
! <dd>
! <p>Necessary to build GCC.  It can be downloaded from
  <a href="http://www.multiprecision.org/">http://www.multiprecision.org/</a>.  If an MPC source distribution
! is found in a subdirectory of your GCC sources named <samp>mpc</samp>, it
  will be built together with GCC.  Alternatively, if MPC is already
  installed but it is not in your default library search path, the
! <samp>--with-mpc</samp> configure option should be used.  See also
! <samp>--with-mpc-lib</samp> and <samp>--with-mpc-include</samp>.
  The in-tree build is only supported with the MPC version that
  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="ftp://gcc.gnu.org/pub/gcc/infrastructure/">ftp://gcc.gnu.org/pub/gcc/infrastructure/</a>.
  If an isl source distribution is found
! in a subdirectory of your GCC sources named <samp>isl</samp>, it will be
! built together with GCC.  Alternatively, the <samp>--with-isl</samp> configure
  option should be used if isl is not installed in your default library
  search path.
+ </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.64</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.11.6</dt>
! <dd>
! <p>Necessary when modifying a <samp>Makefile.am</samp> file to regenerate its
! associated <samp>Makefile.in</samp>.
! </p>
! <p>Much of GCC does not use automake, so directly edit the <samp>Makefile.in</samp>
! file.  Specifically this applies to the <samp>gcc</samp>, <samp>intl</samp>,
! <samp>libcpp</samp>, <samp>libiberty</samp>, <samp>libobjc</samp> directories as well
  as any of their subdirectories.
! </p>
! <p>For directories that use automake, GCC requires the latest release in
  the 1.11 series, which is currently 1.11.6.  When regenerating a directory
  to a newer version, please update all the directories using an older 1.11
  to the latest released version.
! </p>
! <p>Note that <code>automake</code> 1.11.6 is incompatible with
! <code>perl</code> version 5.6.26.
! </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 1.4.4</dt>
! <dt>Expect</dt>
! <dt>Tcl</dt>
! <dd>
! <p>Necessary to run the GCC testsuite; see the section on testing for
  details.  Tcl 8.6 has a known regression in RE pattern handling that
  make parts of the testsuite fail.  See
  <a href="http://core.tcl.tk/tcl/tktview/267b7e2334ee2e9de34c4b00d6e72e2f1997085f">http://core.tcl.tk/tcl/tktview/267b7e2334ee2e9de34c4b00d6e72e2f1997085f</a>
  for more information.  This bug has been fixed in 8.6.1.
! </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>.
! </p>
! <p>Necessary to run &lsquo;<samp>make check</samp>&rsquo; for <samp>fixinc</samp>.
! </p>
! <p>Necessary to regenerate the top level <samp>Makefile.in</samp> file from
! <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>
! <p>Necessary to build GCC during development because the generated output
  files are not included in the SVN repository.  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 SVN 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>SVN (any version)</dt>
+ <dt>SSH (any version)</dt>
+ <dd>
+ <p>Necessary to access the SVN repository.  Public releases and weekly
+ snapshots of the development sources are also available via FTP.
+ </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.
+ </p>
+ </dd>
+ </dl>
  
! <hr />
! <p>
! <p><a href="./index.html">Return to the GCC Installation page</a>
! </p>
  
  
  
  
  
  
  
+ 
+ 
+ 
+ 
+ 
+ 
+ </body>
+ </html>
diff -Nrcpad gcc-7.3.0/INSTALL/specific.html gcc-8.1.0/INSTALL/specific.html
*** gcc-7.3.0/INSTALL/specific.html	Thu Jan 25 08:17:55 2018
--- gcc-8.1.0/INSTALL/specific.html	Wed May  2 08:20:00 2018
***************
*** 1,689 ****
! <html lang="en">
! <head>
! <title>Host/Target specific installation notes for GCC</title>
! <meta http-equiv="Content-Type" content="text/html">
! <meta name="description" content="Host/Target specific installation notes for GCC">
! <meta name="generator" content="makeinfo 4.13">
! <link title="Top" rel="top" href="#Top">
! <link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
! <!--
! Copyright (C) 1988-2017 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
  any later version published by the Free Software Foundation; with no
  Invariant Sections, the Front-Cover texts being (a) (see below), and
  with the Back-Cover Texts being (b) (see below).  A copy of the
! license is included in the section entitled "GNU Free Documentation License".
  
  (a) The FSF's Front-Cover Text is:
  
!      A GNU Manual
  
  (b) The FSF's Back-Cover Text is:
  
!      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.-->
! <meta http-equiv="Content-Style-Type" content="text/css">
! <style type="text/css"><!--
!   pre.display { font-family:inherit }
!   pre.format  { font-family:inherit }
!   pre.smalldisplay { font-family:inherit; font-size:smaller }
!   pre.smallformat  { font-family:inherit; font-size:smaller }
!   pre.smallexample { font-size:smaller }
!   pre.smalllisp    { font-size:smaller }
!   span.sc    { font-variant:small-caps }
!   span.roman { font-family:serif; font-weight:normal; } 
!   span.sansserif { font-family:sans-serif; font-weight:normal; } 
! --></style>
! </head>
! <body>
! <h1 class="settitle">Host/Target specific installation notes for GCC</h1>
! <a name="index-Specific-1"></a><a name="index-Specific-installation-notes-2"></a><a name="index-Target-specific-installation-3"></a><a name="index-Host-specific-installation-4"></a><a name="index-Target-specific-installation-notes-5"></a>
! Please read this document carefully <em>before</em> installing the
! GNU Compiler Collection on your machine.
  
!    <p>Note that this list of install notes is <em>not</em> a list of supported
! hosts or targets.  Not all supported hosts and targets are listed
! here, only the ones that require host-specific or target-specific
! information have to.
  
-      <ul>
- <li><a href="#aarch64-x-x">aarch64*-*-*</a>
- <li><a href="#alpha-x-x">alpha*-*-*</a>
- <li><a href="#alpha-dec-osf51">alpha*-dec-osf5.1</a>
- <li><a href="#amd64-x-solaris210">amd64-*-solaris2.10</a>
- <li><a href="#arm-x-eabi">arm-*-eabi</a>
- <li><a href="#avr">avr</a>
- <li><a href="#bfin">Blackfin</a>
- <li><a href="#dos">DOS</a>
- <li><a href="#x-x-freebsd">*-*-freebsd*</a>
- <li><a href="#h8300-hms">h8300-hms</a>
- <li><a href="#hppa-hp-hpux">hppa*-hp-hpux*</a>
- <li><a href="#hppa-hp-hpux10">hppa*-hp-hpux10</a>
- <li><a href="#hppa-hp-hpux11">hppa*-hp-hpux11</a>
- <li><a href="#x-x-linux-gnu">*-*-linux-gnu</a>
- <li><a href="#ix86-x-linux">i?86-*-linux*</a>
- <li><a href="#ix86-x-solaris210">i?86-*-solaris2.10</a>
- <li><a href="#ia64-x-linux">ia64-*-linux</a>
- <li><a href="#ia64-x-hpux">ia64-*-hpux*</a>
- <li><a href="#x-ibm-aix">*-ibm-aix*</a>
- <li><a href="#iq2000-x-elf">iq2000-*-elf</a>
- <li><a href="#lm32-x-elf">lm32-*-elf</a>
- <li><a href="#lm32-x-uclinux">lm32-*-uclinux</a>
- <li><a href="#m32c-x-elf">m32c-*-elf</a>
- <li><a href="#m32r-x-elf">m32r-*-elf</a>
- <li><a href="#m68k-x-x">m68k-*-*</a>
- <li><a href="#m68k-uclinux">m68k-uclinux</a>
- <li><a href="#microblaze-x-elf">microblaze-*-elf</a>
- <li><a href="#mips-x-x">mips-*-*</a>
- <li><a href="#mips-sgi-irix5">mips-sgi-irix5</a>
- <li><a href="#mips-sgi-irix6">mips-sgi-irix6</a>
- <li><a href="#nds32le-x-elf">nds32le-*-elf</a>
- <li><a href="#nds32be-x-elf">nds32be-*-elf</a>
- <li><a href="#nvptx-x-none">nvptx-*-none</a>
- <li><a href="#powerpc-x-x">powerpc*-*-*</a>
- <li><a href="#powerpc-x-darwin">powerpc-*-darwin*</a>
- <li><a href="#powerpc-x-elf">powerpc-*-elf</a>
- <li><a href="#powerpc-x-linux-gnu">powerpc*-*-linux-gnu*</a>
- <li><a href="#powerpc-x-netbsd">powerpc-*-netbsd*</a>
- <li><a href="#powerpc-x-eabisim">powerpc-*-eabisim</a>
- <li><a href="#powerpc-x-eabi">powerpc-*-eabi</a>
- <li><a href="#powerpcle-x-elf">powerpcle-*-elf</a>
- <li><a href="#powerpcle-x-eabisim">powerpcle-*-eabisim</a>
- <li><a href="#powerpcle-x-eabi">powerpcle-*-eabi</a>
- <li><a href="#riscv32-x-elf">riscv32-*-elf</a>
- <li><a href="#riscv32-x-linux">riscv32-*-linux</a>
- <li><a href="#riscv64-x-elf">riscv64-*-elf</a>
- <li><a href="#riscv64-x-linux">riscv64-*-linux</a>
- <li><a href="#s390-x-linux">s390-*-linux*</a>
- <li><a href="#s390x-x-linux">s390x-*-linux*</a>
- <li><a href="#s390x-ibm-tpf">s390x-ibm-tpf*</a>
- <li><a href="#x-x-solaris2">*-*-solaris2*</a>
- <li><a href="#sparc-x-x">sparc*-*-*</a>
- <li><a href="#sparc-sun-solaris2">sparc-sun-solaris2*</a>
- <li><a href="#sparc-sun-solaris210">sparc-sun-solaris2.10</a>
- <li><a href="#sparc-x-linux">sparc-*-linux*</a>
- <li><a href="#sparc64-x-solaris2">sparc64-*-solaris2*</a>
- <li><a href="#sparcv9-x-solaris2">sparcv9-*-solaris2*</a>
- <li><a href="#c6x-x-x">c6x-*-*</a>
- <li><a href="#tilegx-x-linux">tilegx-*-linux*</a>
- <li><a href="#tilegxbe-x-linux">tilegxbe-*-linux*</a>
- <li><a href="#tilepro-x-linux">tilepro-*-linux*</a>
- <li><a href="#visium-x-elf">visium-*-elf</a>
- <li><a href="#x-x-vxworks">*-*-vxworks*</a>
- <li><a href="#x86-64-x-x">x86_64-*-*</a> amd64-*-*
- <li><a href="#x86-64-x-solaris210">x86_64-*-solaris2.1[0-9]*</a>
- <li><a href="#xtensa-x-elf">xtensa*-*-elf</a>
- <li><a href="#xtensa-x-linux">xtensa*-*-linux*</a>
- <li><a href="#windows">Microsoft Windows</a>
- <li><a href="#x-x-cygwin">*-*-cygwin</a>
- <li><a href="#x-x-mingw32">*-*-mingw32</a>
- <li><a href="#os2">OS/2</a>
- <li><a href="#older">Older systems</a>
- </ul>
  
!      <ul>
! <li><a href="#elf">all ELF targets</a> (SVR4, Solaris 2, etc.) 
! </ul>
  
!    <p><!-- -------- host/target specific issues start here ---------------- -->
! <hr /><a name="aarch64_002dx_002dx"></a>
  
- <h3 class="heading"><a name="TOC0"></a>aarch64*-*-*</h3>
  
- <p>Binutils pre 2.24 does not have support for selecting <samp><span class="option">-mabi</span></samp> and
- does not support ILP32.  If it is used to build GCC 4.9 or later, GCC will
- not support option <samp><span class="option">-mabi=ilp32</span></samp>.
  
-    <p>To enable a workaround for the Cortex-A53 erratum number 835769 by default
- (for all CPUs regardless of -mcpu option given) at configure time use the
- <samp><span class="option">--enable-fix-cortex-a53-835769</span></samp> option.  This will enable the fix by
- default and can be explicitly disabled during compilation by passing the
- <samp><span class="option">-mno-fix-cortex-a53-835769</span></samp> option.  Conversely,
- <samp><span class="option">--disable-fix-cortex-a53-835769</span></samp> will disable the workaround by
- default.  The workaround is disabled by default if neither of
- <samp><span class="option">--enable-fix-cortex-a53-835769</span></samp> or
- <samp><span class="option">--disable-fix-cortex-a53-835769</span></samp> is given at configure time.
  
-    <p>To enable a workaround for the Cortex-A53 erratum number 843419 by default
- (for all CPUs regardless of -mcpu option given) at configure time use the
- <samp><span class="option">--enable-fix-cortex-a53-843419</span></samp> option.  This workaround is applied at
- link time.  Enabling the workaround will cause GCC to pass the relevant option
- to the linker.  It can be explicitly disabled during compilation by passing the
- <samp><span class="option">-mno-fix-cortex-a53-843419</span></samp> option.  Conversely,
- <samp><span class="option">--disable-fix-cortex-a53-843419</span></samp> will disable the workaround by default. 
- The workaround is disabled by default if neither of
- <samp><span class="option">--enable-fix-cortex-a53-843419</span></samp> or
- <samp><span class="option">--disable-fix-cortex-a53-843419</span></samp> is given at configure time.
  
-    <p><hr /><a name="alpha_002dx_002dx"></a>
  
- <h3 class="heading"><a name="TOC1"></a>alpha*-*-*</h3>
  
- <p>This section contains general configuration information for all
- alpha-based platforms using ELF (in particular, ignore this section for
- DEC OSF/1, Digital UNIX and Tru64 UNIX).  In addition to reading this
- section, please read all other sections that match your target.
  
-    <p>We require binutils 2.11.2 or newer. 
- Previous binutils releases had a number of problems with DWARF 2
- debugging information, not the least of which is incorrect linking of
- shared libraries.
  
-    <p><hr /><a name="alpha_002ddec_002dosf51"></a>
  
- <h3 class="heading"><a name="TOC2"></a>alpha*-dec-osf5.1</h3>
  
- <p>Systems using processors that implement the DEC Alpha architecture and
- are running the DEC/Compaq/HP Unix (DEC OSF/1, Digital UNIX, or Compaq/HP
- Tru64 UNIX) operating system, for example the DEC Alpha AXP systems.
  
-    <p>Support for Tru64 UNIX V5.1 has been removed in GCC 4.8.  As of GCC 4.6,
- support for Tru64 UNIX V4.0 and V5.0 has been removed.  As of GCC 3.2,
- versions before <code>alpha*-dec-osf4</code> are no longer supported.  (These
- are the versions which identify themselves as DEC OSF/1.)
  
-    <p><hr /><a name="amd64_002dx_002dsolaris210"></a>
  
- <h3 class="heading"><a name="TOC3"></a>amd64-*-solaris2.1[0-9]*</h3>
  
- <p>This is a synonym for &lsquo;<samp><span class="samp">x86_64-*-solaris2.1[0-9]*</span></samp>&rsquo;.
  
-    <p><hr /><a name="arc_002dx_002delf32"></a>
  
- <h3 class="heading"><a name="TOC4"></a>arc-*-elf32</h3>
  
- <p>Use &lsquo;<samp><span class="samp">configure --target=arc-elf32 --with-cpu=</span><var>cpu</var><span class="samp"> --enable-languages="c,c++"</span></samp>&rsquo;
- to configure GCC, with <var>cpu</var> being one of &lsquo;<samp><span class="samp">arc600</span></samp>&rsquo;, &lsquo;<samp><span class="samp">arc601</span></samp>&rsquo;,
- or &lsquo;<samp><span class="samp">arc700</span></samp>&rsquo;.
  
-    <p><hr /><a name="arc_002dlinux_002duclibc"></a>
  
- <h3 class="heading"><a name="TOC5"></a>arc-linux-uclibc</h3>
  
- <p>Use &lsquo;<samp><span class="samp">configure --target=arc-linux-uclibc --with-cpu=arc700 --enable-languages="c,c++"</span></samp>&rsquo; to configure GCC.
  
-    <p><hr /><a name="arm_002dx_002deabi"></a>
  
- <h3 class="heading"><a name="TOC6"></a>arm-*-eabi</h3>
  
! <p>ARM-family processors.
  
!    <p>Building the Ada frontend commonly fails (an infinite loop executing
! <code>xsinfo</code>) if the host compiler is GNAT 4.8.  Host compilers built from the
! GNAT 4.6, 4.9 or 5 release branches are known to succeed.
  
!    <p><hr /><a name="avr"></a>
  
- <h3 class="heading"><a name="TOC7"></a>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
  for the list of supported MCU types.
! 
!    <p>Use &lsquo;<samp><span class="samp">configure --target=avr --enable-languages="c"</span></samp>&rsquo; to configure GCC.
! 
!    <p>Further installation notes and other useful information about AVR tools
  can also be obtained from:
  
!      <ul>
! <li><a href="http://www.nongnu.org/avr/">http://www.nongnu.org/avr/</a>
! <li><a href="http://www.amelek.gda.pl/avr/">http://www.amelek.gda.pl/avr/</a>
! </ul>
! 
!    <p>The following error:
! <pre class="smallexample">     Error: register required
! </pre>
!    <p>indicates that you should upgrade to a newer version of the binutils.
! 
!    <p><hr /><a name="bfin"></a>
! 
! <h3 class="heading"><a name="TOC8"></a>Blackfin</h3>
  
! <p>The Blackfin processor, an Analog Devices DSP. 
  See &ldquo;Blackfin Options&rdquo; in the main manual
! 
!    <p>More information, and a version of binutils with support for this processor,
  is available at <a href="https://blackfin.uclinux.org">https://blackfin.uclinux.org</a>
! 
!    <p><hr /><a name="cr16"></a>
! 
! <h3 class="heading"><a name="TOC9"></a>CR16</h3>
! 
  <p>The CR16 CompactRISC architecture is a 16-bit architecture. This
  architecture is used in embedded applications.
  
!    <p>See &ldquo;CR16 Options&rdquo; in the main manual for a list of CR16-specific options.
! 
!    <p>Use &lsquo;<samp><span class="samp">configure --target=cr16-elf --enable-languages=c,c++</span></samp>&rsquo; to configure
! GCC for building a CR16 elf cross-compiler.
! 
!    <p>Use &lsquo;<samp><span class="samp">configure --target=cr16-uclinux --enable-languages=c,c++</span></samp>&rsquo; to
! configure GCC for building a CR16 uclinux cross-compiler.
! 
!    <p><hr /><a name="cris"></a>
! 
! <h3 class="heading"><a name="TOC10"></a>CRIS</h3>
! 
  <p>CRIS is the CPU architecture in Axis Communications ETRAX system-on-a-chip
  series.  These are used in embedded applications.
! 
!    <p>See &ldquo;CRIS Options&rdquo; in the main manual
  for a list of CRIS-specific options.
! 
!    <p>There are a few different CRIS targets:
!      <dl>
! <dt><code>cris-axis-elf</code><dd>Mainly for monolithic embedded systems.  Includes a multilib for the
! &lsquo;<samp><span class="samp">v10</span></samp>&rsquo; core used in &lsquo;<samp><span class="samp">ETRAX 100 LX</span></samp>&rsquo;. 
! <br><dt><code>cris-axis-linux-gnu</code><dd>A GNU/Linux port for the CRIS architecture, currently targeting
! &lsquo;<samp><span class="samp">ETRAX 100 LX</span></samp>&rsquo; by default. 
  </dl>
  
!    <p>Pre-packaged tools can be obtained from
  <a href="ftp://ftp.axis.com/pub/axis/tools/cris/compiler-kit/">ftp://ftp.axis.com/pub/axis/tools/cris/compiler-kit/</a>.  More
  information about this platform is available at
  <a href="http://developer.axis.com/">http://developer.axis.com/</a>.
! 
!    <p><hr /><a name="dos"></a>
! 
! <h3 class="heading"><a name="TOC11"></a>DOS</h3>
! 
  <p>Please have a look at the <a href="binaries.html">binaries page</a>.
! 
!    <p>You cannot install GCC by itself on MSDOS; it will not compile under
  any MSDOS compiler except itself.  You need to get the complete
  compilation package DJGPP, which includes binaries as well as sources,
  and includes all the necessary compilation tools and libraries.
! 
!    <p><hr /><a name="epiphany_002dx_002delf"></a>
! 
! <h3 class="heading"><a name="TOC12"></a>epiphany-*-elf</h3>
! 
! <p>Adapteva Epiphany. 
  This configuration is intended for embedded systems.
! 
!    <p><hr /><a name="x_002dx_002dfreebsd"></a>
! 
! <h3 class="heading"><a name="TOC13"></a>*-*-freebsd*</h3>
! 
  <p>Support for FreeBSD 1 was discontinued in GCC 3.2.  Support for
  FreeBSD 2 (and any mutant a.out variants of FreeBSD 3) was
  discontinued in GCC 4.0.
! 
!    <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 <code>__cxa_atexit</code> by default
  (on FreeBSD 6 or later).  The use of <code>dl_iterate_phdr</code> inside
! <samp><span class="file">libgcc_s.so.1</span></samp> and boehm-gc (on FreeBSD 7 or later) is enabled
  by GCC 4.5 and above.
! 
!    <p>We support FreeBSD using the ELF file format with DWARF 2 debugging
! for all CPU architectures.  You may use <samp><span class="option">-gstabs</span></samp> instead of
! <samp><span class="option">-g</span></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
! GCC.  In particular, <samp><span class="option">--enable-threads</span></samp> is now configured by
  default.  However, as a general user, do not attempt to replace the
  system compiler with this release.  Known to bootstrap and check with
  good results on FreeBSD 7.2-STABLE.  In the past, known to bootstrap
  and check with good results on FreeBSD 3.0, 3.4, 4.0, 4.2, 4.3, 4.4,
  4.5, 4.8, 4.9 and 5-CURRENT.
! 
!    <p>The version of binutils installed in <samp><span class="file">/usr/bin</span></samp> probably works
  with this release of GCC.  Bootstrapping against the latest GNU
! binutils and/or the version found in <samp><span class="file">/usr/ports/devel/binutils</span></samp> has
  been known to enable additional features and improve overall testsuite
  results.  However, it is currently known that boehm-gc may not configure
  properly on FreeBSD prior to the FreeBSD 7.0 release with GNU binutils
  after 2.16.1.
! 
!    <p><hr /><a name="ft32_002dx_002delf"></a>
! 
! <h3 class="heading"><a name="TOC14"></a>ft32-*-elf</h3>
! 
! <p>The FT32 processor. 
  This configuration is intended for embedded systems.
! 
!    <p><hr /><a name="h8300_002dhms"></a>
! 
! <h3 class="heading"><a name="TOC15"></a>h8300-hms</h3>
! 
  <p>Renesas H8/300 series of processors.
! 
!    <p>Please have a look at the <a href="binaries.html">binaries page</a>.
! 
!    <p>The calling convention and structure layout has changed in release 2.6. 
  All code must be recompiled.  The calling convention now passes the
  first three arguments in function calls in registers.  Structures are no
  longer a multiple of 2 bytes.
! 
!    <p><hr /><a name="hppa_002dhp_002dhpux"></a>
! 
! <h3 class="heading"><a name="TOC16"></a>hppa*-hp-hpux*</h3>
! 
  <p>Support for HP-UX version 9 and older was discontinued in GCC 3.4.
! 
!    <p>We require using gas/binutils on all hppa platforms.  Version 2.19 or
  later is recommended.
! 
!    <p>It may be helpful to configure GCC with the
! <a href="./configure.html#with-gnu-as"><samp><span class="option">--with-gnu-as</span></samp></a> and
! <samp><span class="option">--with-as=...</span></samp> options to ensure that GCC can find GAS.
! 
!    <p>The HP assembler should not be used with GCC.  It is rarely tested and may
! not work.  It shouldn't be used with any languages other than C due to its
  many limitations.
! 
!    <p>Specifically, <samp><span class="option">-g</span></samp> does not work (HP-UX uses a peculiar debugging
  format which GCC does not know about).  It also inserts timestamps
  into each object file it creates, causing the 3-stage comparison test to
  fail during a bootstrap.  You should be able to continue by saying
! &lsquo;<samp><span class="samp">make all-host all-target</span></samp>&rsquo; after getting the failure from &lsquo;<samp><span class="samp">make</span></samp>&rsquo;.
! 
!    <p>Various GCC features are not supported.  For example, it does not support weak
  symbols or alias definitions.  As a result, explicit template instantiations
  are required when using C++.  This makes it difficult if not impossible to
  build many C++ applications.
! 
!    <p>There are two default scheduling models for instructions.  These are
  PROCESSOR_7100LC and PROCESSOR_8000.  They are selected from the pa-risc
! architecture specified for the target machine when configuring. 
  PROCESSOR_8000 is the default.  PROCESSOR_7100LC is selected when
! the target is a &lsquo;<samp><span class="samp">hppa1*</span></samp>&rsquo; machine.
! 
!    <p>The PROCESSOR_8000 model is not well suited to older processors.  Thus,
  it is important to completely specify the machine architecture when
  configuring if you want a model other than PROCESSOR_8000.  The macro
  TARGET_SCHED_DEFAULT can be defined in BOOT_CFLAGS if a different
  default scheduling model is desired.
! 
!    <p>As of GCC 4.0, GCC uses the UNIX 95 namespace for HP-UX 10.10
! through 11.00, and the UNIX 98 namespace for HP-UX 11.11 and later. 
  This namespace change might cause problems when bootstrapping with
  an earlier version of GCC or the HP compiler as essentially the same
  namespace is required for an entire build.  This problem can be avoided
! in a number of ways.  With HP cc, <samp><span class="env">UNIX_STD</span></samp> can be set to &lsquo;<samp><span class="samp">95</span></samp>&rsquo;
! or &lsquo;<samp><span class="samp">98</span></samp>&rsquo;.  Another way is to add an appropriate set of predefines
! to <samp><span class="env">CC</span></samp>.  The description for the <samp><span class="option">munix=</span></samp> option contains
  a list of the predefines used with each standard.
! 
!    <p>More specific information to &lsquo;<samp><span class="samp">hppa*-hp-hpux*</span></samp>&rsquo; targets follows.
! 
!    <p><hr /><a name="hppa_002dhp_002dhpux10"></a>
! 
! <h3 class="heading"><a name="TOC17"></a>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>The C++ ABI has changed incompatibly in GCC 4.0.  COMDAT subspaces are
  used for one-only code and data.  This resolves many of the previous
  problems in using C++ on this target.  However, the ABI is not compatible
  with the one implemented under HP-UX 11 using secondary definitions.
! 
!    <p><hr /><a name="hppa_002dhp_002dhpux11"></a>
! 
! <h3 class="heading"><a name="TOC18"></a>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>The libffi library haven't been ported to 64-bit HP-UX and doesn't build.
! 
!    <p>Refer to <a href="binaries.html">binaries</a> for information about obtaining
  precompiled GCC binaries for HP-UX.  Precompiled binaries must be obtained
  to build the Ada language as it cannot be bootstrapped using C.  Ada is
  only available for the 32-bit PA-RISC runtime.
! 
!    <p>Starting with GCC 3.4 an ISO C compiler is required to bootstrap.  The
! bundled compiler supports only traditional C; you will need either HP's
  unbundled compiler, or a binary distribution of GCC.
! 
!    <p>It is possible to build GCC 3.3 starting with the bundled HP compiler,
  but the process requires several steps.  GCC 3.3 can then be used to
  build later versions.
! 
!    <p>There are several possible approaches to building the distribution. 
  Binutils can be built first using the HP tools.  Then, the GCC
  distribution can be built.  The second approach is to build GCC
! first using the HP tools, then build binutils, then rebuild GCC. 
  There have been problems with various binary distributions, so it
  is best not to start from a binary distribution.
! 
!    <p>On 64-bit capable systems, there are two distinct targets.  Different
  installation prefixes must be used if both are to be installed on
! the same system.  The &lsquo;<samp><span class="samp">hppa[1-2]*-hp-hpux11*</span></samp>&rsquo; target generates code
! for the 32-bit PA-RISC runtime architecture and uses the HP linker. 
! The &lsquo;<samp><span class="samp">hppa64-hp-hpux11*</span></samp>&rsquo; target generates 64-bit code for the
  PA-RISC 2.0 architecture.
! 
!    <p>The script config.guess now selects the target type based on the compiler
! detected during configuration.  You must define <samp><span class="env">PATH</span></samp> or <samp><span class="env">CC</span></samp> so
! that configure finds an appropriate compiler for the initial bootstrap. 
! When <samp><span class="env">CC</span></samp> is used, the definition should contain the options that are
! needed whenever <samp><span class="env">CC</span></samp> is used.
! 
!    <p>Specifically, options that determine the runtime architecture must be
! in <samp><span class="env">CC</span></samp> to correctly select the target for the build.  It is also
! convenient to place many other compiler options in <samp><span class="env">CC</span></samp>.  For example,
! <samp><span class="env">CC="cc -Ac +DA2.0W -Wp,-H16376 -D_CLASSIC_TYPES -D_HPUX_SOURCE"</span></samp>
  can be used to bootstrap the GCC 3.3 branch with the HP compiler in
! 64-bit K&amp;R/bundled mode.  The <samp><span class="option">+DA2.0W</span></samp> option will result in
! the automatic selection of the &lsquo;<samp><span class="samp">hppa64-hp-hpux11*</span></samp>&rsquo; target.  The
  macro definition table of cpp needs to be increased for a successful
  build with the HP compiler.  _CLASSIC_TYPES and _HPUX_SOURCE need to
  be defined when building with the bundled compiler, or when using the
! <samp><span class="option">-Ac</span></samp> option.  These defines aren't necessary with <samp><span class="option">-Ae</span></samp>.
! 
!    <p>It is best to explicitly configure the &lsquo;<samp><span class="samp">hppa64-hp-hpux11*</span></samp>&rsquo; target
! with the <samp><span class="option">--with-ld=...</span></samp> option.  This overrides the standard
  search for ld.  The two linkers supported on this target require different
  commands.  The default linker is determined during configuration.  As a
! result, it's not possible to switch linkers in the middle of a GCC build. 
  This has been reported to sometimes occur in unified builds of binutils
  and GCC.
! 
!    <p>A recent linker patch must be installed for the correct operation of
  GCC 3.3 and later.  <code>PHSS_26559</code> and <code>PHSS_24304</code> are the
  oldest linker patches that are known to work.  They are for HP-UX
  11.00 and 11.11, respectively.  <code>PHSS_24303</code>, the companion to
! <code>PHSS_24304</code>, might be usable but it hasn't been tested.  These
  patches have been superseded.  Consult the HP patch database to obtain
  the currently recommended linker patch for your system.
! 
!    <p>The patches are necessary for the support of weak symbols on the
  32-bit port, and for the running of initializers and finalizers.  Weak
  symbols are implemented using SOM secondary definition symbols.  Prior
! to HP-UX 11, there are bugs in the linker support for secondary symbols. 
  The patches correct a problem of linker core dumps creating shared
  libraries containing secondary symbols, as well as various other
  linking issues involving secondary symbols.
! 
!    <p>GCC 3.3 uses the ELF DT_INIT_ARRAY and DT_FINI_ARRAY capabilities to
  run initializers and finalizers on the 64-bit port.  The 32-bit port
! uses the linker <samp><span class="option">+init</span></samp> and <samp><span class="option">+fini</span></samp> options for the same
  purpose.  The patches correct various problems with the +init/+fini
  options, including program core dumps.  Binutils 2.14 corrects a
! problem on the 64-bit port resulting from HP's non-standard use of
  the .init and .fini sections for array initializers and finalizers.
! 
!    <p>Although the HP and GNU linkers are both supported for the
! &lsquo;<samp><span class="samp">hppa64-hp-hpux11*</span></samp>&rsquo; target, it is strongly recommended that the
  HP linker be used for link editing on this target.
! 
!    <p>At this time, the GNU linker does not support the creation of long
  branch stubs.  As a result, it cannot successfully link binaries
  containing branch offsets larger than 8 megabytes.  In addition,
  there are problems linking shared libraries, linking executables
! with <samp><span class="option">-static</span></samp>, and with dwarf2 unwind and exception support. 
! It also doesn't provide stubs for internal calls to global functions
  in shared libraries, so these calls cannot be overloaded.
! 
!    <p>The HP dynamic loader does not support GNU symbol versioning, so symbol
  versioning is not supported.  It may be necessary to disable symbol
! versioning with <samp><span class="option">--disable-symvers</span></samp> when using GNU ld.
! 
!    <p>POSIX threads are the default.  The optional DCE thread library is not
! supported, so <samp><span class="option">--enable-threads=dce</span></samp> does not work.
! 
!    <p><hr /><a name="x_002dx_002dlinux_002dgnu"></a>
! 
! <h3 class="heading"><a name="TOC19"></a>*-*-linux-gnu</h3>
! 
  <p>Versions of libstdc++-v3 starting with 3.2.1 require bug fixes present
  in glibc 2.2.5 and later.  More information is available in the
  libstdc++-v3 documentation.
! 
!    <p><hr /><a name="ix86_002dx_002dlinux"></a>
! 
! <h3 class="heading"><a name="TOC20"></a>i?86-*-linux*</h3>
! 
! <p>As of GCC 3.3, binutils 2.13.1 or later is required for this platform. 
  See <a href="http://gcc.gnu.org/PR10877">bug 10877</a> for more information.
! 
!    <p>If you receive Signal 11 errors when building on GNU/Linux, then it is
  possible you have a hardware problem.  Further information on this can be
  found on <a href="http://www.bitwizard.nl/sig11/">www.bitwizard.nl</a>.
! 
!    <p><hr /><a name="ix86_002dx_002dsolaris210"></a>
! 
! <h3 class="heading"><a name="TOC21"></a>i?86-*-solaris2.10</h3>
! 
  <p>Use this for Solaris 10 or later on x86 and x86-64 systems.  Starting
! with GCC 4.7, there is also a 64-bit &lsquo;<samp><span class="samp">amd64-*-solaris2.1[0-9]*</span></samp>&rsquo; or
! &lsquo;<samp><span class="samp">x86_64-*-solaris2.1[0-9]*</span></samp>&rsquo; configuration that corresponds to
! &lsquo;<samp><span class="samp">sparcv9-sun-solaris2*</span></samp>&rsquo;.
! 
!    <p>It is recommended that you configure GCC to use the GNU assembler.  The
  versions included in Solaris 10, from GNU binutils 2.15 (in
! <samp><span class="file">/usr/sfw/bin/gas</span></samp>), and Solaris 11, from GNU binutils 2.19 or
! newer (also available as <samp><span class="file">/usr/bin/gas</span></samp> and
! <samp><span class="file">/usr/gnu/bin/as</span></samp>), work fine.  Please note that the current
! version, from GNU binutils 2.26, only works on Solaris 12 when using the
! Solaris linker.  On Solaris 10 and 11, you either have to wait for GNU
! binutils 2.26.1 or newer, or stay with GNU binutils 2.25.1.  Recent
! versions of the Solaris assembler in <samp><span class="file">/usr/ccs/bin/as</span></samp> work almost
! as well, though. 
! <!-- FIXME: as patch requirements? -->
! 
!    <p>For linking, the Solaris linker, is preferred.  If you want to use the GNU
  linker instead, note that due to a packaging bug the version in Solaris
! 10, from GNU binutils 2.15 (in <samp><span class="file">/usr/sfw/bin/gld</span></samp>), cannot be used,
  while the version in Solaris 11, from GNU binutils 2.19 or newer (also
! in <samp><span class="file">/usr/gnu/bin/ld</span></samp> and <samp><span class="file">/usr/bin/gld</span></samp>), works, as does the
! latest version, from GNU binutils 2.26.
! 
!    <p>To use GNU <samp><span class="command">as</span></samp>, configure with the options
! <samp><span class="option">--with-gnu-as --with-as=/usr/sfw/bin/gas</span></samp>.  It may be necessary
! to configure with <samp><span class="option">--without-gnu-ld --with-ld=/usr/ccs/bin/ld</span></samp> to
! guarantee use of Sun <samp><span class="command">ld</span></samp>. 
! <!-- FIXME: why -without-gnu-ld -with-ld? -->
! 
!    <p><hr /><a name="ia64_002dx_002dlinux"></a>
! 
! <h3 class="heading"><a name="TOC22"></a>ia64-*-linux</h3>
! 
  <p>IA-64 processor (also known as IPF, or Itanium Processor Family)
  running GNU/Linux.
! 
!    <p>If you are using the installed system libunwind library with
! <samp><span class="option">--with-system-libunwind</span></samp>, then you must use libunwind 0.98 or
  later.
! 
!    <p>None of the following versions of GCC has an ABI that is compatible
  with any of the other versions in this list, with the exception that
  Red Hat 2.96 and Trillian 000171 are compatible with each other:
! 3.1, 3.0.2, 3.0.1, 3.0, Red Hat 2.96, and Trillian 000717. 
! This primarily affects C++ programs and programs that create shared libraries. 
! GCC 3.1 or later is recommended for compiling linux, the kernel. 
  As of version 3.1 GCC is believed to be fully ABI compliant, and hence no
  more major ABI changes are expected.
! 
!    <p><hr /><a name="ia64_002dx_002dhpux"></a>
! 
! <h3 class="heading"><a name="TOC23"></a>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><span class="option">--with-gnu-as</span></samp> may be necessary.
! 
!    <p>The GCC libunwind library has not been ported to HPUX.  This means that for
! GCC versions 3.2.3 and earlier, <samp><span class="option">--enable-libunwind-exceptions</span></samp>
! is required to build GCC.  For GCC 3.3 and later, this is the default. 
! For gcc 3.4.3 and later, <samp><span class="option">--enable-libunwind-exceptions</span></samp> is
  removed and the system libunwind library will always be used.
! 
!    <p><hr />
! <!-- rs6000-ibm-aix*, powerpc-ibm-aix* --><a name="x_002dibm_002daix"></a>
! 
! <h3 class="heading"><a name="TOC24"></a>*-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>&ldquo;out of memory&rdquo; bootstrap failures may indicate a problem with
  process resource limits (ulimit).  Hard limits are configured in the
! <samp><span class="file">/etc/security/limits</span></samp> system configuration file.
! 
!    <p>GCC 4.9 and above require a C++ compiler for bootstrap.  IBM VAC++ / xlC
  cannot bootstrap GCC.  xlc can bootstrap an older version of GCC and
  G++ can bootstrap recent releases of GCC.
! 
!    <p>GCC can bootstrap with recent versions of IBM XLC, but bootstrapping
  with an earlier release of GCC is recommended.  Bootstrapping with XLC
  requires a larger data segment, which can be enabled through the
  <var>LDR_CNTRL</var> environment variable, e.g.,
  
! <pre class="smallexample">     % LDR_CNTRL=MAXDATA=0x50000000
!      % export LDR_CNTRL
! </pre>
!    <p>One can start with a pre-compiled version of GCC to build from
! sources.  One may delete GCC's &ldquo;fixed&rdquo; header files when starting
  with a version of GCC built for an earlier release of AIX.
  
!    <p>To speed up the configuration phases of bootstrapping and installing GCC,
! one may use GNU Bash instead of AIX <samp><span class="command">/bin/sh</span></samp>, e.g.,
! 
! <pre class="smallexample">     % CONFIG_SHELL=/opt/freeware/bin/bash
!      % export CONFIG_SHELL
! </pre>
!    <p>and then proceed as described in <a href="build.html">the build instructions</a>, where we strongly recommend specifying an absolute path
  to invoke <var>srcdir</var>/configure.
! 
!    <p>Because GCC on AIX is built as a 32-bit executable by default,
  (although it can generate 64-bit programs) the GMP and MPFR libraries
  required by gfortran must be 32-bit libraries.  Building GMP and MPFR
  as static archive libraries works better than shared libraries.
! 
!    <p>Errors involving <code>alloca</code> when building GCC generally are due
  to an incorrect definition of <code>CC</code> in the Makefile or mixing files
  compiled with the native C compiler and GCC.  During the stage1 phase of
! the build, the native AIX compiler <strong>must</strong> be invoked as <samp><span class="command">cc</span></samp>
! (not <samp><span class="command">xlc</span></samp>).  Once <samp><span class="command">configure</span></samp> has been informed of
! <samp><span class="command">xlc</span></samp>, one needs to use &lsquo;<samp><span class="samp">make distclean</span></samp>&rsquo; to remove the
! configure cache files and ensure that <samp><span class="env">CC</span></samp> environment variable
! does not provide a definition that will confuse <samp><span class="command">configure</span></samp>. 
  If this error occurs during stage2 or later, then the problem most likely
  is the version of Make (see above).
! 
!    <p>The native <samp><span class="command">as</span></samp> and <samp><span class="command">ld</span></samp> are recommended for
  bootstrapping on AIX.  The GNU Assembler, GNU Linker, and GNU
  Binutils version 2.20 is the minimum level that supports bootstrap on
! AIX 5.  The GNU Assembler has not been updated to support AIX 6 or
  AIX 7.  The native AIX tools do interoperate with GCC.
! 
!    <p>AIX 7.1 added partial support for DWARF debugging, but full support
  requires AIX 7.1 TL03 SP7 that supports additional DWARF sections and
  fixes a bug in the assembler.  AIX 7.1 TL03 SP5 distributed a version
  of libm.a missing important symbols; a fix for IV77796 will be
  included in SP6.
! 
!    <p>AIX 5.3 TL10, AIX 6.1 TL05 and AIX 7.1 TL00 introduced an AIX
  assembler change that sometimes produces corrupt assembly files
  causing AIX linker errors.  The bug breaks GCC bootstrap on AIX and
  can cause compilation failures with existing GCC installations.  An
--- 1,710 ----
! <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
! <html>
! <!-- Copyright (C) 1988-2018 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
  any later version published by the Free Software Foundation; with no
  Invariant Sections, the Front-Cover texts being (a) (see below), and
  with the Back-Cover Texts being (b) (see below).  A copy of the
! license is included in the section entitled "GNU
! Free Documentation License".
  
  (a) The FSF's Front-Cover Text is:
  
! A GNU Manual
  
  (b) The FSF's Back-Cover Text is:
  
! 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.4, http://www.gnu.org/software/texinfo/ -->
! <head>
! <title>Installing GCC</title>
  
! <meta name="description" content="Installing GCC">
! <meta name="keywords" content="Installing GCC">
! <meta name="resource-type" content="document">
! <meta name="distribution" content="global">
! <meta name="Generator" content="makeinfo">
! <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
! <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>
  
  
! </head>
  
! <body lang="en">
! <h1 class="settitle" align="center">Installing GCC</h1>
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
! <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.
! </p>
! <p>Note that this list of install notes is <em>not</em> a list of supported
! hosts or targets.  Not all supported hosts and targets are listed
! here, only the ones that require host-specific or target-specific
! information have to. 
! </p>
! <ul>
! <li> <a href="#aarch64-x-x">aarch64*-*-*</a>
! </li><li> <a href="#alpha-x-x">alpha*-*-*</a>
! </li><li> <a href="#amd64-x-solaris210">amd64-*-solaris2.10</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="#dos">DOS</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>
! </li><li> <a href="#hppa-hp-hpux10">hppa*-hp-hpux10</a>
! </li><li> <a href="#hppa-hp-hpux11">hppa*-hp-hpux11</a>
! </li><li> <a href="#x-x-linux-gnu">*-*-linux-gnu</a>
! </li><li> <a href="#ix86-x-linux">i?86-*-linux*</a>
! </li><li> <a href="#ix86-x-solaris210">i?86-*-solaris2.10</a>
! </li><li> <a href="#ia64-x-linux">ia64-*-linux</a>
! </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>
! </li><li> <a href="#powerpc-x-x">powerpc*-*-*</a>
! </li><li> <a href="#powerpc-x-darwin">powerpc-*-darwin*</a>
! </li><li> <a href="#powerpc-x-elf">powerpc-*-elf</a>
! </li><li> <a href="#powerpc-x-linux-gnu">powerpc*-*-linux-gnu*</a>
! </li><li> <a href="#powerpc-x-netbsd">powerpc-*-netbsd*</a>
! </li><li> <a href="#powerpc-x-eabisim">powerpc-*-eabisim</a>
! </li><li> <a href="#powerpc-x-eabi">powerpc-*-eabi</a>
! </li><li> <a href="#powerpcle-x-elf">powerpcle-*-elf</a>
! </li><li> <a href="#powerpcle-x-eabisim">powerpcle-*-eabisim</a>
! </li><li> <a href="#powerpcle-x-eabi">powerpcle-*-eabi</a>
! </li><li> <a href="#riscv32-x-elf">riscv32-*-elf</a>
! </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="#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>
! </li><li> <a href="#x-x-solaris2">*-*-solaris2*</a>
! </li><li> <a href="#sparc-x-x">sparc*-*-*</a>
! </li><li> <a href="#sparc-sun-solaris2">sparc-sun-solaris2*</a>
! </li><li> <a href="#sparc-sun-solaris210">sparc-sun-solaris2.10</a>
! </li><li> <a href="#sparc-x-linux">sparc-*-linux*</a>
! </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>
! </li><li> <a href="#x86-64-x-solaris210">x86_64-*-solaris2.1[0-9]*</a>
! </li><li> <a href="#xtensa-x-elf">xtensa*-*-elf</a>
! </li><li> <a href="#xtensa-x-linux">xtensa*-*-linux*</a>
! </li><li> <a href="#windows">Microsoft Windows</a>
! </li><li> <a href="#x-x-cygwin">*-*-cygwin</a>
! </li><li> <a href="#x-x-mingw32">*-*-mingw32</a>
! </li><li> <a href="#os2">OS/2</a>
! </li><li> <a href="#older">Older systems</a>
! </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>.
+ </p>
+ <p>To enable a workaround for the Cortex-A53 erratum number 835769 by default
+ (for all CPUs regardless of -mcpu option given) at configure time use the
+ <samp>--enable-fix-cortex-a53-835769</samp> option.  This will enable the fix by
+ default and can be explicitly disabled during compilation by passing the
+ <samp>-mno-fix-cortex-a53-835769</samp> option.  Conversely,
+ <samp>--disable-fix-cortex-a53-835769</samp> will disable the workaround by
+ default.  The workaround is disabled by default if neither of
+ <samp>--enable-fix-cortex-a53-835769</samp> or
+ <samp>--disable-fix-cortex-a53-835769</samp> is given at configure time.
+ </p>
+ <p>To enable a workaround for the Cortex-A53 erratum number 843419 by default
+ (for all CPUs regardless of -mcpu option given) at configure time use the
+ <samp>--enable-fix-cortex-a53-843419</samp> option.  This workaround is applied at
+ link time.  Enabling the workaround will cause GCC to pass the relevant option
+ to the linker.  It can be explicitly disabled during compilation by passing the
+ <samp>-mno-fix-cortex-a53-843419</samp> option.  Conversely,
+ <samp>--disable-fix-cortex-a53-843419</samp> will disable the workaround by default.
+ The workaround is disabled by default if neither of
+ <samp>--enable-fix-cortex-a53-843419</samp> or
+ <samp>--disable-fix-cortex-a53-843419</samp> is 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>
+ <p>We require binutils 2.11.2 or newer.
+ Previous binutils releases had a number of problems with DWARF 2
+ debugging information, not the least of which is incorrect linking of
+ shared libraries.
+ </p>
+ <hr />
+ <a name="amd64-x-solaris210"></a><a name="amd64-*-solaris2_002e1_005b0-9_005d*"></a>
+ <h3 class="heading">amd64-*-solaris2.1[0-9]*</h3>
+ <p>This is a synonym for &lsquo;<samp>x86_64-*-solaris2.1[0-9]*</samp>&rsquo;.
+ </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
+ <code>xsinfo</code>) if the host compiler is GNAT 4.8.  Host compilers built from the
+ 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
  for the list of supported MCU types.
! </p>
! <p>Use &lsquo;<samp>configure --target=avr --enable-languages=&quot;c&quot;</samp>&rsquo; to configure GCC.
! </p>
! <p>Further installation notes and other useful information about AVR tools
  can also be obtained from:
+ </p>
+ <ul>
+ <li> <a href="http://www.nongnu.org/avr/">http://www.nongnu.org/avr/</a>
+ </li><li> <a href="http://www.amelek.gda.pl/avr/">http://www.amelek.gda.pl/avr/</a>
+ </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>
! <p>More information, and a version of binutils with support for this processor,
  is available at <a href="https://blackfin.uclinux.org">https://blackfin.uclinux.org</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 the CPU architecture in Axis Communications ETRAX system-on-a-chip
  series.  These are used in embedded applications.
! </p>
! <p>See &ldquo;CRIS Options&rdquo; in the main manual
  for a list of CRIS-specific options.
! </p>
! <p>There are a few different CRIS targets:
! </p><dl compact="compact">
! <dt><code>cris-axis-elf</code></dt>
! <dd><p>Mainly for monolithic embedded systems.  Includes a multilib for the
! &lsquo;<samp>v10</samp>&rsquo; core used in &lsquo;<samp>ETRAX 100 LX</samp>&rsquo;.
! </p></dd>
! <dt><code>cris-axis-linux-gnu</code></dt>
! <dd><p>A GNU/Linux port for the CRIS architecture, currently targeting
! &lsquo;<samp>ETRAX 100 LX</samp>&rsquo; by default.
! </p></dd>
  </dl>
  
! <p>Pre-packaged tools can be obtained from
  <a href="ftp://ftp.axis.com/pub/axis/tools/cris/compiler-kit/">ftp://ftp.axis.com/pub/axis/tools/cris/compiler-kit/</a>.  More
  information about this platform is available at
  <a href="http://developer.axis.com/">http://developer.axis.com/</a>.
! </p>
! <hr />
! <a name="dos"></a><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
  any MSDOS compiler except itself.  You need to get the complete
  compilation package DJGPP, which includes binaries as well as sources,
  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>Support for FreeBSD 1 was discontinued in GCC 3.2.  Support for
  FreeBSD 2 (and any mutant a.out variants of FreeBSD 3) was
  discontinued in GCC 4.0.
! </p>
! <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 <code>__cxa_atexit</code> by default
  (on FreeBSD 6 or later).  The use of <code>dl_iterate_phdr</code> inside
! <samp>libgcc_s.so.1</samp> and boehm-gc (on FreeBSD 7 or later) is enabled
  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
! GCC.  In particular, <samp>--enable-threads</samp> is now configured by
  default.  However, as a general user, do not attempt to replace the
  system compiler with this release.  Known to bootstrap and check with
  good results on FreeBSD 7.2-STABLE.  In the past, known to bootstrap
  and check with good results on FreeBSD 3.0, 3.4, 4.0, 4.2, 4.3, 4.4,
  4.5, 4.8, 4.9 and 5-CURRENT.
! </p>
! <p>The version of binutils installed in <samp>/usr/bin</samp> probably works
  with this release of GCC.  Bootstrapping against the latest GNU
! binutils and/or the version found in <samp>/usr/ports/devel/binutils</samp> has
  been known to enable additional features and improve overall testsuite
  results.  However, it is currently known that boehm-gc may not configure
  properly on FreeBSD prior to the FreeBSD 7.0 release with GNU binutils
  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>.
! </p>
! <p>The calling convention and structure layout has changed in release 2.6.
  All code must be recompiled.  The calling convention now passes the
  first three arguments in function calls in registers.  Structures are no
  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
  later is recommended.
! </p>
! <p>It may be helpful to configure GCC with the
! <a href="./configure.html#with-gnu-as"><samp>--with-gnu-as</samp></a> and
! <samp>--with-as=&hellip;</samp> options to ensure that GCC can find GAS.
! </p>
! <p>The HP assembler should not be used with GCC.  It is rarely tested and may
! not work.  It shouldn&rsquo;t be used with any languages other than C due to its
  many limitations.
! </p>
! <p>Specifically, <samp>-g</samp> does not work (HP-UX uses a peculiar debugging
  format which GCC does not know about).  It also inserts timestamps
  into each object file it creates, causing the 3-stage comparison test to
  fail during a bootstrap.  You should be able to continue by saying
! &lsquo;<samp>make all-host all-target</samp>&rsquo; after getting the failure from &lsquo;<samp>make</samp>&rsquo;.
! </p>
! <p>Various GCC features are not supported.  For example, it does not support weak
  symbols or alias definitions.  As a result, explicit template instantiations
  are required when using C++.  This makes it difficult if not impossible to
  build many C++ applications.
! </p>
! <p>There are two default scheduling models for instructions.  These are
  PROCESSOR_7100LC and PROCESSOR_8000.  They are selected from the pa-risc
! architecture specified for the target machine when configuring.
  PROCESSOR_8000 is the default.  PROCESSOR_7100LC is selected when
! the target is a &lsquo;<samp>hppa1*</samp>&rsquo; machine.
! </p>
! <p>The PROCESSOR_8000 model is not well suited to older processors.  Thus,
  it is important to completely specify the machine architecture when
  configuring if you want a model other than PROCESSOR_8000.  The macro
  TARGET_SCHED_DEFAULT can be defined in BOOT_CFLAGS if a different
  default scheduling model is desired.
! </p>
! <p>As of GCC 4.0, GCC uses the UNIX 95 namespace for HP-UX 10.10
! through 11.00, and the UNIX 98 namespace for HP-UX 11.11 and later.
  This namespace change might cause problems when bootstrapping with
  an earlier version of GCC or the HP compiler as essentially the same
  namespace is required for an entire build.  This problem can be avoided
! in a number of ways.  With HP cc, <code>UNIX_STD</code> can be set to &lsquo;<samp>95</samp>&rsquo;
! or &lsquo;<samp>98</samp>&rsquo;.  Another way is to add an appropriate set of predefines
! to <code>CC</code>.  The description for the <samp>munix=</samp> option contains
  a list of the predefines used with each standard.
! </p>
! <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>
! <p>The C++ ABI has changed incompatibly in GCC 4.0.  COMDAT subspaces are
  used for one-only code and data.  This resolves many of the previous
  problems in using C++ on this target.  However, the ABI is not compatible
  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>
! <p>The libffi library haven&rsquo;t been ported to 64-bit HP-UX&nbsp;and doesn&rsquo;t build.
! </p>
! <p>Refer to <a href="binaries.html">binaries</a> for information about obtaining
  precompiled GCC binaries for HP-UX.  Precompiled binaries must be obtained
  to build the Ada language as it cannot be bootstrapped using C.  Ada is
  only available for the 32-bit PA-RISC runtime.
! </p>
! <p>Starting with GCC 3.4 an ISO C compiler is required to bootstrap.  The
! bundled compiler supports only traditional C; you will need either HP&rsquo;s
  unbundled compiler, or a binary distribution of GCC.
! </p>
! <p>It is possible to build GCC 3.3 starting with the bundled HP compiler,
  but the process requires several steps.  GCC 3.3 can then be used to
  build later versions.
! </p>
! <p>There are several possible approaches to building the distribution.
  Binutils can be built first using the HP tools.  Then, the GCC
  distribution can be built.  The second approach is to build GCC
! first using the HP tools, then build binutils, then rebuild GCC.
  There have been problems with various binary distributions, so it
  is best not to start from a binary distribution.
! </p>
! <p>On 64-bit capable systems, there are two distinct targets.  Different
  installation prefixes must be used if both are to be installed on
! the same system.  The &lsquo;<samp>hppa[1-2]*-hp-hpux11*</samp>&rsquo; target generates code
! for the 32-bit PA-RISC runtime architecture and uses the HP linker.
! The &lsquo;<samp>hppa64-hp-hpux11*</samp>&rsquo; target generates 64-bit code for the
  PA-RISC 2.0 architecture.
! </p>
! <p>The script config.guess now selects the target type based on the compiler
! detected during configuration.  You must define <code>PATH</code> or <code>CC</code> so
! that configure finds an appropriate compiler for the initial bootstrap.
! When <code>CC</code> is used, the definition should contain the options that are
! needed whenever <code>CC</code> is used.
! </p>
! <p>Specifically, options that determine the runtime architecture must be
! in <code>CC</code> to correctly select the target for the build.  It is also
! convenient to place many other compiler options in <code>CC</code>.  For example,
! <code>CC=&quot;cc -Ac +DA2.0W -Wp,-H16376 -D_CLASSIC_TYPES -D_HPUX_SOURCE&quot;</code>
  can be used to bootstrap the GCC 3.3 branch with the HP compiler in
! 64-bit K&amp;R/bundled mode.  The <samp>+DA2.0W</samp> option will result in
! the automatic selection of the &lsquo;<samp>hppa64-hp-hpux11*</samp>&rsquo; target.  The
  macro definition table of cpp needs to be increased for a successful
  build with the HP compiler.  _CLASSIC_TYPES and _HPUX_SOURCE need to
  be defined when building with the bundled compiler, or when using the
! <samp>-Ac</samp> option.  These defines aren&rsquo;t necessary with <samp>-Ae</samp>.
! </p>
! <p>It is best to explicitly configure the &lsquo;<samp>hppa64-hp-hpux11*</samp>&rsquo; target
! with the <samp>--with-ld=&hellip;</samp> option.  This overrides the standard
  search for ld.  The two linkers supported on this target require different
  commands.  The default linker is determined during configuration.  As a
! result, it&rsquo;s not possible to switch linkers in the middle of a GCC build.
  This has been reported to sometimes occur in unified builds of binutils
  and GCC.
! </p>
! <p>A recent linker patch must be installed for the correct operation of
  GCC 3.3 and later.  <code>PHSS_26559</code> and <code>PHSS_24304</code> are the
  oldest linker patches that are known to work.  They are for HP-UX
  11.00 and 11.11, respectively.  <code>PHSS_24303</code>, the companion to
! <code>PHSS_24304</code>, might be usable but it hasn&rsquo;t been tested.  These
  patches have been superseded.  Consult the HP patch database to obtain
  the currently recommended linker patch for your system.
! </p>
! <p>The patches are necessary for the support of weak symbols on the
  32-bit port, and for the running of initializers and finalizers.  Weak
  symbols are implemented using SOM secondary definition symbols.  Prior
! to HP-UX 11, there are bugs in the linker support for secondary symbols.
  The patches correct a problem of linker core dumps creating shared
  libraries containing secondary symbols, as well as various other
  linking issues involving secondary symbols.
! </p>
! <p>GCC 3.3 uses the ELF DT_INIT_ARRAY and DT_FINI_ARRAY capabilities to
  run initializers and finalizers on the 64-bit port.  The 32-bit port
! uses the linker <samp>+init</samp> and <samp>+fini</samp> options for the same
  purpose.  The patches correct various problems with the +init/+fini
  options, including program core dumps.  Binutils 2.14 corrects a
! problem on the 64-bit port resulting from HP&rsquo;s non-standard use of
  the .init and .fini sections for array initializers and finalizers.
! </p>
! <p>Although the HP and GNU linkers are both supported for the
! &lsquo;<samp>hppa64-hp-hpux11*</samp>&rsquo; target, it is strongly recommended that the
  HP linker be used for link editing on this target.
! </p>
! <p>At this time, the GNU linker does not support the creation of long
  branch stubs.  As a result, it cannot successfully link binaries
  containing branch offsets larger than 8 megabytes.  In addition,
  there are problems linking shared libraries, linking executables
! with <samp>-static</samp>, and with dwarf2 unwind and exception support.
! It also doesn&rsquo;t provide stubs for internal calls to global functions
  in shared libraries, so these calls cannot be overloaded.
! </p>
! <p>The HP dynamic loader does not support GNU symbol versioning, so symbol
  versioning is not supported.  It may be necessary to disable symbol
! versioning with <samp>--disable-symvers</samp> when using GNU ld.
! </p>
! <p>POSIX threads are the default.  The optional DCE thread library is not
! 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>Versions of libstdc++-v3 starting with 3.2.1 require bug fixes present
  in glibc 2.2.5 and later.  More information is available in the
  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="http://gcc.gnu.org/PR10877">bug 10877</a> for more information.
! </p>
! <p>If you receive Signal 11 errors when building on GNU/Linux, then it is
  possible you have a hardware problem.  Further information on this can be
  found on <a href="http://www.bitwizard.nl/sig11/">www.bitwizard.nl</a>.
! </p>
! <hr />
! <a name="ix86-x-solaris210"></a><a name="i_003f86-*-solaris2_002e10"></a>
! <h3 class="heading">i?86-*-solaris2.10</h3>
  <p>Use this for Solaris 10 or later on x86 and x86-64 systems.  Starting
! with GCC 4.7, there is also a 64-bit &lsquo;<samp>amd64-*-solaris2.1[0-9]*</samp>&rsquo; or
! &lsquo;<samp>x86_64-*-solaris2.1[0-9]*</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 10, from GNU binutils 2.15 (in
! <samp>/usr/sfw/bin/gas</samp>), and Solaris 11, from GNU binutils 2.19 or
! newer (also available as <samp>/usr/bin/gas</samp> and
! <samp>/usr/gnu/bin/as</samp>), work fine.  The current version, from GNU
! binutils 2.29, is known to work, but the version from GNU binutils 2.26
! must be avoided.  Recent versions of the Solaris assembler in
! <samp>/usr/ccs/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, note that due to a packaging bug the version in Solaris
! 10, from GNU binutils 2.15 (in <samp>/usr/sfw/bin/gld</samp>), cannot be used,
  while the version in Solaris 11, from GNU binutils 2.19 or newer (also
! in <samp>/usr/gnu/bin/ld</samp> and <samp>/usr/bin/gld</samp>), works, as does the
! latest version, from GNU binutils 2.29.
! </p>
! <p>To use GNU <code>as</code>, configure with the options
! <samp>--with-gnu-as --with-as=/usr/sfw/bin/gas</samp>.  It may be necessary
! to configure with <samp>--without-gnu-ld --with-ld=/usr/ccs/bin/ld</samp> to
! guarantee use of Sun <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>
! <p>If you are using the installed system libunwind library with
! <samp>--with-system-libunwind</samp>, then you must use libunwind 0.98 or
  later.
! </p>
! <p>None of the following versions of GCC has an ABI that is compatible
  with any of the other versions in this list, with the exception that
  Red Hat 2.96 and Trillian 000171 are compatible with each other:
! 3.1, 3.0.2, 3.0.1, 3.0, Red Hat 2.96, and Trillian 000717.
! This primarily affects C++ programs and programs that create shared libraries.
! GCC 3.1 or later is recommended for compiling linux, the kernel.
  As of version 3.1 GCC is believed to be fully ABI compliant, and hence no
  more major ABI changes are expected.
! </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.
! </p>
! <p>The GCC libunwind library has not been ported to HPUX.  This means that for
! GCC versions 3.2.3 and earlier, <samp>--enable-libunwind-exceptions</samp>
! is required to build GCC.  For GCC 3.3 and later, this is the default.
! For gcc 3.4.3 and later, <samp>--enable-libunwind-exceptions</samp> is
  removed and the system libunwind library will always be used.
! </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>
! <p>&ldquo;out of memory&rdquo; bootstrap failures may indicate a problem with
  process resource limits (ulimit).  Hard limits are configured in the
! <samp>/etc/security/limits</samp> system configuration file.
! </p>
! <p>GCC 4.9 and above require a C++ compiler for bootstrap.  IBM VAC++ / xlC
  cannot bootstrap GCC.  xlc can bootstrap an older version of GCC and
  G++ can bootstrap recent releases of GCC.
! </p>
! <p>GCC can bootstrap with recent versions of IBM XLC, but bootstrapping
  with an earlier release of GCC is recommended.  Bootstrapping with XLC
  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>
  
! <p>One can start with a pre-compiled version of GCC to build from
! sources.  One may delete GCC&rsquo;s &ldquo;fixed&rdquo; header files when starting
  with a version of GCC built for an earlier release of AIX.
+ </p>
+ <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>
  
! <p>and then proceed as described in <a href="build.html">the build
! instructions</a>, where we strongly recommend specifying an absolute path
  to invoke <var>srcdir</var>/configure.
! </p>
! <p>Because GCC on AIX is built as a 32-bit executable by default,
  (although it can generate 64-bit programs) the GMP and MPFR libraries
  required by gfortran must be 32-bit libraries.  Building GMP and MPFR
  as static archive libraries works better than shared libraries.
! </p>
! <p>Errors involving <code>alloca</code> when building GCC generally are due
  to an incorrect definition of <code>CC</code> in the Makefile or mixing files
  compiled with the native C compiler and GCC.  During the stage1 phase of
! the build, the native AIX compiler <strong>must</strong> be invoked as <code>cc</code>
! (not <code>xlc</code>).  Once <code>configure</code> has been informed of
! <code>xlc</code>, one needs to use &lsquo;<samp>make distclean</samp>&rsquo; to remove the
! configure cache files and ensure that <code>CC</code> environment variable
! does not provide a definition that will confuse <code>configure</code>.
  If this error occurs during stage2 or later, then the problem most likely
  is the version of Make (see above).
! </p>
! <p>The native <code>as</code> and <code>ld</code> are recommended for
  bootstrapping on AIX.  The GNU Assembler, GNU Linker, and GNU
  Binutils version 2.20 is the minimum level that supports bootstrap on
! AIX 5.  The GNU Assembler has not been updated to support AIX 6&nbsp;or
  AIX 7.  The native AIX tools do interoperate with GCC.
! </p>
! <p>AIX 7.1 added partial support for DWARF debugging, but full support
  requires AIX 7.1 TL03 SP7 that supports additional DWARF sections and
  fixes a bug in the assembler.  AIX 7.1 TL03 SP5 distributed a version
  of libm.a missing important symbols; a fix for IV77796 will be
  included in SP6.
! </p>
! <p>AIX 5.3 TL10, AIX 6.1 TL05 and AIX 7.1 TL00 introduced an AIX
  assembler change that sometimes produces corrupt assembly files
  causing AIX linker errors.  The bug breaks GCC bootstrap on AIX and
  can cause compilation failures with existing GCC installations.  An
*************** AIX iFix for AIX 5.3 is available (APAR
*** 691,1490 ****
  IZ98477 for AIX 5.3 TL11 and IZ98134 for AIX 5.3 TL12). AIX 5.3 TL11 SP8,
  AIX 5.3 TL12 SP5, AIX 6.1 TL04 SP11, AIX 6.1 TL05 SP7, AIX 6.1 TL06 SP6,
  AIX 6.1 TL07 and AIX 7.1 TL01 should include the fix.
! 
!    <p>Building <samp><span class="file">libstdc++.a</span></samp> requires a fix for an AIX Assembler bug
  APAR IY26685 (AIX 4.3) or APAR IY25528 (AIX 5.1).  It also requires a
  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>&lsquo;<samp><span class="samp">libstdc++</span></samp>&rsquo; in GCC 3.4 increments the major version number of the
! shared object and GCC installation places the <samp><span class="file">libstdc++.a</span></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
  re-linked against the new shared library or the GCC 3.1 and GCC 3.3
! versions of the &lsquo;<samp><span class="samp">libstdc++</span></samp>&rsquo; shared object needs to be available
! to the AIX runtime loader.  The GCC 3.1 &lsquo;<samp><span class="samp">libstdc++.so.4</span></samp>&rsquo;, if
! present, and GCC 3.3 &lsquo;<samp><span class="samp">libstdc++.so.5</span></samp>&rsquo; shared objects can be
  installed for runtime dynamic loading using the following steps to set
! the &lsquo;<samp><span class="samp">F_LOADONLY</span></samp>&rsquo; flag in the shared object for <em>each</em>
! multilib <samp><span class="file">libstdc++.a</span></samp> installed:
  
!    <p>Extract the shared objects from the currently installed
! <samp><span class="file">libstdc++.a</span></samp> archive:
! <pre class="smallexample">     % ar -x libstdc++.a libstdc++.so.4 libstdc++.so.5
! </pre>
!    <p>Enable the &lsquo;<samp><span class="samp">F_LOADONLY</span></samp>&rsquo; flag so that the shared object will be
  available for runtime dynamic loading, but not linking:
! <pre class="smallexample">     % strip -e libstdc++.so.4 libstdc++.so.5
! </pre>
!    <p>Archive the runtime-only shared object in the GCC 3.4
! <samp><span class="file">libstdc++.a</span></samp> archive:
! <pre class="smallexample">     % ar -q libstdc++.a libstdc++.so.4 libstdc++.so.5
! </pre>
!    <p>Eventually, the
! <a href="./configure.html#WithAixSoname"><samp><span class="option">--with-aix-soname=svr4</span></samp></a>
  configure option may drop the need for this procedure for libraries that
  support it.
! 
!    <p>Linking executables and shared libraries may produce warnings of
  duplicate symbols.  The assembly files generated by GCC for AIX always
  have included multiple symbol definitions for certain global variable
  and function declarations in the original program.  The warnings should
  not prevent the linker from producing a correct library or runnable
  executable.
! 
!    <p>AIX 4.3 utilizes a &ldquo;large format&rdquo; archive to support both 32-bit and
  64-bit object modules.  The routines provided in AIX 4.3.0 and AIX 4.3.1
! to parse archive libraries did not handle the new format correctly. 
  These routines are used by GCC and result in error messages during
  linking such as &ldquo;not a COFF file&rdquo;.  The version of the routines shipped
! with AIX 4.3.1 should work for a 32-bit environment.  The <samp><span class="option">-g</span></samp>
  option of the archive command may be used to create archives of 32-bit
  objects using the original &ldquo;small format&rdquo;.  A correct version of the
  routines is shipped with AIX 4.3.2 and above.
! 
!    <p>Some versions of the AIX binder (linker) can fail with a relocation
! overflow severe error when the <samp><span class="option">-bbigtoc</span></samp> option is used to link
  GCC-produced object files into an executable that overflows the TOC.  A fix
  for APAR IX75823 (OVERFLOW DURING LINK WHEN USING GCC AND -BBIGTOC) is
  available from IBM Customer Support and from its
  <a href="http://techsupport.services.ibm.com/">techsupport.services.ibm.com</a>
  website as PTF U455193.
! 
!    <p>The AIX 4.3.2.1 linker (bos.rte.bind_cmds Level 4.3.2.1) will dump core
  with a segmentation fault when invoked by any version of GCC.  A fix for
  APAR IX87327 is available from IBM Customer Support and from its
  <a href="http://techsupport.services.ibm.com/">techsupport.services.ibm.com</a>
  website as PTF U461879.  This fix is incorporated in AIX 4.3.3 and above.
! 
!    <p>The initial assembler shipped with AIX 4.3.0 generates incorrect object
  files.  A fix for APAR IX74254 (64BIT DISASSEMBLED OUTPUT FROM COMPILER FAILS
  TO ASSEMBLE/BIND) is available from IBM Customer Support and from its
  <a href="http://techsupport.services.ibm.com/">techsupport.services.ibm.com</a>
  website as PTF U453956.  This fix is incorporated in AIX 4.3.1 and above.
! 
!    <p>AIX provides National Language Support (NLS).  Compilers and assemblers
  use NLS to support locale-specific representations of various data
! formats including floating-point numbers (e.g., &lsquo;<samp><span class="samp">.</span></samp>&rsquo;  vs &lsquo;<samp><span class="samp">,</span></samp>&rsquo; for
  separating decimal fractions).  There have been problems reported where
  GCC does not produce the same floating-point formats that the assembler
! expects.  If one encounters this problem, set the <samp><span class="env">LANG</span></samp>
! environment variable to &lsquo;<samp><span class="samp">C</span></samp>&rsquo; or &lsquo;<samp><span class="samp">En_US</span></samp>&rsquo;.
! 
!    <p>A default can be specified with the <samp><span class="option">-mcpu=</span><var>cpu_type</var></samp>
! switch and using the configure option <samp><span class="option">--with-cpu-</span><var>cpu_type</var></samp>.
! 
!    <p><hr /><a name="iq2000_002dx_002delf"></a>
! 
! <h3 class="heading"><a name="TOC25"></a>iq2000-*-elf</h3>
! 
  <p>Vitesse IQ2000 processors.  These are used in embedded
  applications.  There are no standard Unix configurations.
! 
!    <p><hr /><a name="lm32_002dx_002delf"></a>
! 
! <h3 class="heading"><a name="TOC26"></a>lm32-*-elf</h3>
! 
! <p>Lattice Mico32 processor. 
  This configuration is intended for embedded systems.
! 
!    <p><hr /><a name="lm32_002dx_002duclinux"></a>
! 
! <h3 class="heading"><a name="TOC27"></a>lm32-*-uclinux</h3>
! 
! <p>Lattice Mico32 processor. 
  This configuration is intended for embedded systems running uClinux.
! 
!    <p><hr /><a name="m32c_002dx_002delf"></a>
! 
! <h3 class="heading"><a name="TOC28"></a>m32c-*-elf</h3>
! 
! <p>Renesas M32C processor. 
  This configuration is intended for embedded systems.
! 
!    <p><hr /><a name="m32r_002dx_002delf"></a>
! 
! <h3 class="heading"><a name="TOC29"></a>m32r-*-elf</h3>
! 
! <p>Renesas M32R processor. 
  This configuration is intended for embedded systems.
! 
!    <p><hr /><a name="m68k_002dx_002dx"></a>
! 
! <h3 class="heading"><a name="TOC30"></a>m68k-*-*</h3>
! 
  <p>By default,
! &lsquo;<samp><span class="samp">m68k-*-elf*</span></samp>&rsquo;, &lsquo;<samp><span class="samp">m68k-*-rtems</span></samp>&rsquo;,  &lsquo;<samp><span class="samp">m68k-*-uclinux</span></samp>&rsquo; and
! &lsquo;<samp><span class="samp">m68k-*-linux</span></samp>&rsquo;
  build libraries for both M680x0 and ColdFire processors.  If you only
  need the M680x0 libraries, you can omit the ColdFire ones by passing
! <samp><span class="option">--with-arch=m68k</span></samp> to <samp><span class="command">configure</span></samp>.  Alternatively, you
! can omit the M680x0 libraries by passing <samp><span class="option">--with-arch=cf</span></samp> to
! <samp><span class="command">configure</span></samp>.  These targets default to 5206 or 5475 code as
  appropriate for the target system when
! configured with <samp><span class="option">--with-arch=cf</span></samp> and 68020 code otherwise.
! 
!    <p>The &lsquo;<samp><span class="samp">m68k-*-netbsd</span></samp>&rsquo; and
! &lsquo;<samp><span class="samp">m68k-*-openbsd</span></samp>&rsquo; targets also support the <samp><span class="option">--with-arch</span></samp>
  option.  They will generate ColdFire CFV4e code when configured with
! <samp><span class="option">--with-arch=cf</span></samp> and 68020 code otherwise.
! 
!    <p>You can override the default processors listed above by configuring
! with <samp><span class="option">--with-cpu=</span><var>target</var></samp>.  This <var>target</var> can either
! be a <samp><span class="option">-mcpu</span></samp> argument or one of the following values:
! &lsquo;<samp><span class="samp">m68000</span></samp>&rsquo;, &lsquo;<samp><span class="samp">m68010</span></samp>&rsquo;, &lsquo;<samp><span class="samp">m68020</span></samp>&rsquo;, &lsquo;<samp><span class="samp">m68030</span></samp>&rsquo;,
! &lsquo;<samp><span class="samp">m68040</span></samp>&rsquo;, &lsquo;<samp><span class="samp">m68060</span></samp>&rsquo;, &lsquo;<samp><span class="samp">m68020-40</span></samp>&rsquo; and &lsquo;<samp><span class="samp">m68020-60</span></samp>&rsquo;.
! 
!    <p>GCC requires at least binutils version 2.17 on these targets.
! 
!    <p><hr /><a name="m68k_002dx_002duclinux"></a>
! 
! <h3 class="heading"><a name="TOC31"></a>m68k-*-uclinux</h3>
! 
  <p>GCC 4.3 changed the uClinux configuration so that it uses the
! &lsquo;<samp><span class="samp">m68k-linux-gnu</span></samp>&rsquo; ABI rather than the &lsquo;<samp><span class="samp">m68k-elf</span></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_002dx_002delf"></a>
! 
! <h3 class="heading"><a name="TOC32"></a>microblaze-*-elf</h3>
! 
! <p>Xilinx MicroBlaze processor. 
  This configuration is intended for embedded systems.
! 
!    <p><hr /><a name="mips_002dx_002dx"></a>
! 
! <h3 class="heading"><a name="TOC33"></a>mips-*-*</h3>
! 
  <p>If on a MIPS system you get an error message saying &ldquo;does not have gp
! sections for all it's [sic] sectons [sic]&rdquo;, don't worry about it.  This
  happens whenever you use GAS with the MIPS linker, but there is not
  really anything wrong, and it is okay to use the output file.  You can
  stop such warnings by installing the GNU linker.
! 
!    <p>It would be nice to extend GAS to produce the gp tables, but they are
  optional, and there should not be a warning about their absence.
! 
!    <p>The libstdc++ atomic locking routines for MIPS targets requires MIPS II
  and later.  A patch went in just after the GCC 3.3 release to
! make &lsquo;<samp><span class="samp">mips*-*-*</span></samp>&rsquo; use the generic implementation instead.  You can also
! configure for &lsquo;<samp><span class="samp">mipsel-elf</span></samp>&rsquo; as a workaround.  The
! &lsquo;<samp><span class="samp">mips*-*-linux*</span></samp>&rsquo; target continues to use the MIPS II routines.  More
  work on this is expected in future releases.
  
! <!-- If you make -with-llsc the default for another target, please also -->
! <!-- update the description of the -with-llsc option. -->
!    <p>The built-in <code>__sync_*</code> functions are available on MIPS II and
! later systems and others that support the &lsquo;<samp><span class="samp">ll</span></samp>&rsquo;, &lsquo;<samp><span class="samp">sc</span></samp>&rsquo; and
! &lsquo;<samp><span class="samp">sync</span></samp>&rsquo; instructions.  This can be overridden by passing
! <samp><span class="option">--with-llsc</span></samp> or <samp><span class="option">--without-llsc</span></samp> when configuring GCC. 
  Since the Linux kernel emulates these instructions if they are
! missing, the default for &lsquo;<samp><span class="samp">mips*-*-linux*</span></samp>&rsquo; targets is
! <samp><span class="option">--with-llsc</span></samp>.  The <samp><span class="option">--with-llsc</span></samp> and
! <samp><span class="option">--without-llsc</span></samp> configure options may be overridden at compile
! time by passing the <samp><span class="option">-mllsc</span></samp> or <samp><span class="option">-mno-llsc</span></samp> options to
  the compiler.
! 
!    <p>MIPS systems check for division by zero (unless
! <samp><span class="option">-mno-check-zero-division</span></samp> is passed to the compiler) by
  generating either a conditional trap or a break instruction.  Using
  trap results in smaller code, but is only supported on MIPS II and
  later.  Also, some versions of the Linux kernel have a bug that
  prevents trap from generating the proper signal (<code>SIGFPE</code>).  To enable
! the use of break, use the <samp><span class="option">--with-divide=breaks</span></samp>
! <samp><span class="command">configure</span></samp> option when configuring GCC.  The default is to
  use traps on systems that support them.
! 
!    <p><hr /><a name="mips_002dsgi_002dirix5"></a>
! 
! <h3 class="heading"><a name="TOC34"></a>mips-sgi-irix5</h3>
! 
! <p>Support for IRIX 5 has been removed in GCC 4.6.
! 
!    <p><hr /><a name="mips_002dsgi_002dirix6"></a>
! 
! <h3 class="heading"><a name="TOC35"></a>mips-sgi-irix6</h3>
! 
! <p>Support for IRIX 6.5 has been removed in GCC 4.8.  Support for IRIX 6
! releases before 6.5 has been removed in GCC 4.6, as well as support for
! the O32 ABI.
! 
!    <p><hr /><a name="moxie_002dx_002delf"></a>
! 
! <h3 class="heading"><a name="TOC36"></a>moxie-*-elf</h3>
! 
  <p>The moxie processor.
! 
!    <p><hr /><a name="msp430_002dx_002delf"></a>
! 
! <h3 class="heading"><a name="TOC37"></a>msp430-*-elf</h3>
! 
! <p>TI MSP430 processor. 
  This configuration is intended for embedded systems.
! 
!    <p><hr /><a name="nds32le_002dx_002delf"></a>
! 
! <h3 class="heading"><a name="TOC38"></a>nds32le-*-elf</h3>
! 
  <p>Andes NDS32 target in little endian mode.
! 
!    <p><hr /><a name="nds32be_002dx_002delf"></a>
! 
! <h3 class="heading"><a name="TOC39"></a>nds32be-*-elf</h3>
! 
  <p>Andes NDS32 target in big endian mode.
! 
!    <p><hr /><a name="nvptx_002dx_002dnone"></a>
! 
! <h3 class="heading"><a name="TOC40"></a>nvptx-*-none</h3>
! 
  <p>Nvidia PTX target.
! 
!    <p>Instead of GNU binutils, you will need to install
! <a href="https://github.com/MentorEmbedded/nvptx-tools/">nvptx-tools</a>. 
  Tell GCC where to find it:
! <samp><span class="option">--with-build-time-tools=[install-nvptx-tools]/nvptx-none/bin</span></samp>.
! 
!    <p>A nvptx port of newlib is available at
! <a href="https://github.com/MentorEmbedded/nvptx-newlib/">nvptx-newlib</a>. 
! It can be automatically built together with GCC.  For this, add a
! symbolic link to nvptx-newlib's <samp><span class="file">newlib</span></samp> directory to the
! directory containing the GCC sources.
! 
!    <p>Use the <samp><span class="option">--disable-sjlj-exceptions</span></samp> and
! <samp><span class="option">--enable-newlib-io-long-long</span></samp> options when configuring.
! 
!    <p><hr /><a name="powerpc_002dx_002dx"></a>
! 
! <h3 class="heading"><a name="TOC41"></a>powerpc-*-*</h3>
! 
! <p>You can specify a default version for the <samp><span class="option">-mcpu=</span><var>cpu_type</var></samp>
! switch by using the configure option <samp><span class="option">--with-cpu-</span><var>cpu_type</var></samp>.
! 
!    <p>You will need GNU binutils 2.15 or newer.
! 
!    <p><hr /><a name="powerpc_002dx_002ddarwin"></a>
! 
! <h3 class="heading"><a name="TOC42"></a>powerpc-*-darwin*</h3>
! 
  <p>PowerPC running Darwin (Mac OS X kernel).
! 
!    <p>Pre-installed versions of Mac OS X may not include any developer tools,
  meaning that you will not be able to build GCC from source.  Tool
  binaries are available at
  <a href="https://opensource.apple.com">https://opensource.apple.com</a>.
! 
!    <p>This version of GCC requires at least cctools-590.36.  The
  cctools-590.36 package referenced from
  <a href="http://gcc.gnu.org/ml/gcc/2006-03/msg00507.html">http://gcc.gnu.org/ml/gcc/2006-03/msg00507.html</a> will not work
  on systems older than 10.3.9 (aka darwin7.9.0).
! 
!    <p><hr /><a name="powerpc_002dx_002delf"></a>
! 
! <h3 class="heading"><a name="TOC43"></a>powerpc-*-elf</h3>
! 
  <p>PowerPC system in big endian mode, running System V.4.
! 
!    <p><hr /><a name="powerpc_002dx_002dlinux_002dgnu"></a>
! 
! <h3 class="heading"><a name="TOC44"></a>powerpc*-*-linux-gnu*</h3>
! 
  <p>PowerPC system in big endian mode running Linux.
! 
!    <p><hr /><a name="powerpc_002dx_002dnetbsd"></a>
! 
! <h3 class="heading"><a name="TOC45"></a>powerpc-*-netbsd*</h3>
! 
  <p>PowerPC system in big endian mode running NetBSD.
! 
!    <p><hr /><a name="powerpc_002dx_002deabisim"></a>
! 
! <h3 class="heading"><a name="TOC46"></a>powerpc-*-eabisim</h3>
! 
  <p>Embedded PowerPC system in big endian mode for use in running under the
  PSIM simulator.
! 
!    <p><hr /><a name="powerpc_002dx_002deabi"></a>
! 
! <h3 class="heading"><a name="TOC47"></a>powerpc-*-eabi</h3>
! 
  <p>Embedded PowerPC system in big endian mode.
! 
!    <p><hr /><a name="powerpcle_002dx_002delf"></a>
! 
! <h3 class="heading"><a name="TOC48"></a>powerpcle-*-elf</h3>
! 
  <p>PowerPC system in little endian mode, running System V.4.
! 
!    <p><hr /><a name="powerpcle_002dx_002deabisim"></a>
! 
! <h3 class="heading"><a name="TOC49"></a>powerpcle-*-eabisim</h3>
! 
  <p>Embedded PowerPC system in little endian mode for use in running under
  the PSIM simulator.
! 
!    <p><hr /><a name="powerpcle_002dx_002deabi"></a>
! 
! <h3 class="heading"><a name="TOC50"></a>powerpcle-*-eabi</h3>
! 
  <p>Embedded PowerPC system in little endian mode.
! 
!    <p><hr /><a name="rl78_002dx_002delf"></a>
! 
! <h3 class="heading"><a name="TOC51"></a>rl78-*-elf</h3>
! 
! <p>The Renesas RL78 processor. 
  This configuration is intended for embedded systems.
- 
-    <p><hr /><a name="riscv32_002dx_002delf"></a>
- 
- <h3 class="heading"><a name="TOC52"></a>riscv32-*-elf</h3>
- 
- <p>The RISC-V RV32 instruction set. 
- This configuration is intended for embedded systems. 
  This (and all other RISC-V) targets are supported upstream as of the
  binutils 2.28 release.
! 
!    <p><hr /><a name="riscv32_002dx_002dlinux"></a>
! 
! <h3 class="heading"><a name="TOC53"></a>riscv32-*-linux</h3>
! 
! <p>The RISC-V RV32 instruction set running GNU/Linux. 
  This (and all other RISC-V) targets are supported upstream as of the
  binutils 2.28 release.
! 
!    <p><hr /><a name="riscv64_002dx_002delf"></a>
! 
! <h3 class="heading"><a name="TOC54"></a>riscv64-*-elf</h3>
! 
! <p>The RISC-V RV64 instruction set. 
! This configuration is intended for embedded systems. 
  This (and all other RISC-V) targets are supported upstream as of the
  binutils 2.28 release.
! 
!    <p><hr /><a name="riscv64_002dx_002dlinux"></a>
! 
! <h3 class="heading"><a name="TOC55"></a>riscv64-*-linux</h3>
! 
! <p>The RISC-V RV64 instruction set running GNU/Linux. 
  This (and all other RISC-V) targets are supported upstream as of the
  binutils 2.28 release.
! 
!    <p><hr /><a name="rx_002dx_002delf"></a>
! 
! <h3 class="heading"><a name="TOC56"></a>rx-*-elf</h3>
! 
  <p>The Renesas RX processor.
! 
!    <p><hr /><a name="s390_002dx_002dlinux"></a>
! 
! <h3 class="heading"><a name="TOC57"></a>s390-*-linux*</h3>
! 
  <p>S/390 system running GNU/Linux for S/390.
! 
!    <p><hr /><a name="s390x_002dx_002dlinux"></a>
! 
! <h3 class="heading"><a name="TOC58"></a>s390x-*-linux*</h3>
! 
  <p>zSeries system (64-bit) running GNU/Linux for zSeries.
! 
!    <p><hr /><a name="s390x_002dibm_002dtpf"></a>
! 
! <h3 class="heading"><a name="TOC59"></a>s390x-ibm-tpf*</h3>
! 
  <p>zSeries system (64-bit) running TPF.  This platform is
  supported as cross-compilation target only.
! 
!    <p><hr /><!-- Please use Solaris 2 to refer to all release of Solaris, starting -->
! <!-- with 2.0 until 2.6, 7, 8, etc.  Solaris 1 was a marketing name for -->
! <!-- SunOS 4 releases which we don't use to avoid confusion.  Solaris -->
! <!-- alone is too unspecific and must be avoided. -->
! <a name="x_002dx_002dsolaris2"></a>
! 
! <h3 class="heading"><a name="TOC60"></a>*-*-solaris2*</h3>
! 
  <p>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>Sun does not ship a C compiler with Solaris 2 before Solaris 10, though
  you can download the Sun Studio compilers for free.  In Solaris 10 and
! 11, GCC 3.4.3 is available as <samp><span class="command">/usr/sfw/bin/gcc</span></samp>.  Solaris 11
  also provides GCC 4.5.2, 4.7.3, and 4.8.2 as
! <samp><span class="command">/usr/gcc/4.5/bin/gcc</span></samp> or similar.  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>The Solaris 2 <samp><span class="command">/bin/sh</span></samp> will often fail to configure
! &lsquo;<samp><span class="samp">libstdc++-v3</span></samp>&rsquo;or &lsquo;<samp><span class="samp">boehm-gc</span></samp>&rsquo;.  We therefore recommend using the
  following initial sequence of commands
  
! <pre class="smallexample">     % CONFIG_SHELL=/bin/ksh
!      % export CONFIG_SHELL
! </pre>
!    <p class="noindent">and proceed as described in <a href="configure.html">the configure instructions</a>. 
  In addition we strongly recommend specifying an absolute path to invoke
! <samp><var>srcdir</var><span class="command">/configure</span></samp>.
! 
!    <p>Solaris 10 comes with a number of optional OS packages.  Some of these
  are needed to use GCC fully, namely <code>SUNWarc</code>,
  <code>SUNWbtool</code>, <code>SUNWesu</code>, <code>SUNWhea</code>, <code>SUNWlibm</code>,
  <code>SUNWsprot</code>, and <code>SUNWtoo</code>.  If you did not install all
  optional packages when installing Solaris 10, you will need to verify that
! the packages that GCC needs are installed. 
  To check whether an optional package is installed, use
! the <samp><span class="command">pkginfo</span></samp> command.  To add an optional package, use the
! <samp><span class="command">pkgadd</span></samp> command.  For further details, see the Solaris 10
  documentation.
! 
!    <p>Starting with Solaris 11, the package management has changed, so you
  need to check for <code>system/header</code>, <code>system/linker</code>, and
  <code>developer/assembler</code> packages.  Checking for and installing
! packages is done with the <samp><span class="command">pkg</span></samp> command now.
! 
!    <p>Trying to use the linker and other tools in
! <samp><span class="file">/usr/ucb</span></samp> to install GCC has been observed to cause trouble. 
  For example, the linker may hang indefinitely.  The fix is to remove
! <samp><span class="file">/usr/ucb</span></samp> from your <samp><span class="env">PATH</span></samp>.
! 
!    <p>The build process works more smoothly with the legacy Sun tools so, if you
! have <samp><span class="file">/usr/xpg4/bin</span></samp> in your <samp><span class="env">PATH</span></samp>, we recommend that you place
! <samp><span class="file">/usr/bin</span></samp> before <samp><span class="file">/usr/xpg4/bin</span></samp> for the duration of the build.
! 
!    <p>We recommend the use of the Solaris assembler or the GNU assembler, in
! conjunction with the Solaris linker.  The GNU <samp><span class="command">as</span></samp>
  versions included in Solaris 10, from GNU binutils 2.15 (in
! <samp><span class="file">/usr/sfw/bin/gas</span></samp>), and Solaris 11,
! from GNU binutils 2.19 or newer (also in <samp><span class="file">/usr/bin/gas</span></samp> and
! <samp><span class="file">/usr/gnu/bin/as</span></samp>), are known to work. 
! Current versions of GNU binutils (2.26)
! are known to work as well, with the caveat mentioned in
! <a href="#ix86-x-solaris210">i?86-*-solaris2.10</a> .  Note that your mileage may vary
  if you use a combination of the GNU tools and the Solaris tools: while the
! combination GNU <samp><span class="command">as</span></samp> + Sun <samp><span class="command">ld</span></samp> should reasonably work,
! the reverse combination Sun <samp><span class="command">as</span></samp> + GNU <samp><span class="command">ld</span></samp> may fail to
! build or cause memory corruption at runtime in some cases for C++ programs. 
! <!-- FIXME: still? -->
! GNU <samp><span class="command">ld</span></samp> usually works as well, although the version included in
  Solaris 10 cannot be used due to several bugs.  Again, the current
! version (2.26) is known to work, but generally lacks platform specific
! features, so better stay with Solaris <samp><span class="command">ld</span></samp>.  To use the LTO linker
! plugin (<samp><span class="option">-fuse-linker-plugin</span></samp>) with GNU <samp><span class="command">ld</span></samp>, GNU
! binutils <em>must</em> be configured with <samp><span class="option">--enable-largefile</span></samp>.
! 
!    <p>To enable symbol versioning in &lsquo;<samp><span class="samp">libstdc++</span></samp>&rsquo; with the Solaris linker,
! you need to have any version of GNU <samp><span class="command">c++filt</span></samp>, which is part of
! GNU binutils.  &lsquo;<samp><span class="samp">libstdc++</span></samp>&rsquo; symbol versioning will be disabled if no
! appropriate version is found.  Solaris <samp><span class="command">c++filt</span></samp> from the Solaris
  Studio compilers does <em>not</em> work.
! 
!    <p>Sun bug 4927647 sometimes causes random spurious testsuite failures
! related to missing diagnostic output.  This bug doesn't affect GCC
! itself, rather it is a kernel bug triggered by the <samp><span class="command">expect</span></samp>
  program which is used only by the GCC testsuite driver.  When the bug
! causes the <samp><span class="command">expect</span></samp> program to miss anticipated output, extra
  testsuite failures appear.
! 
!    <p><hr /><a name="sparc_002dx_002dx"></a>
! 
! <h3 class="heading"><a name="TOC61"></a>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.
! 
!    <p>Newer versions of the GNU Multiple Precision Library (GMP), the MPFR
  library and the MPC library are known to be miscompiled by earlier
  versions of GCC on these platforms.  We therefore recommend the use
  of the exact versions of these libraries listed as minimal versions
  in <a href="prerequisites.html">the prerequisites</a>.
! 
!    <p><hr /><a name="sparc_002dsun_002dsolaris2"></a>
! 
! <h3 class="heading"><a name="TOC62"></a>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 Sun's native tools;
  this difference is quite significant for binaries containing debugging
  information.
! 
!    <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><span class="option">-m64</span></samp> option enables 64-bit code generation. 
  However, if all you want is code tuned for the UltraSPARC CPU, you
! should try the <samp><span class="option">-mtune=ultrasparc</span></samp> option instead, which produces
  code that, unlike full 64-bit code, can still run on non-UltraSPARC
  machines.
! 
!    <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 <samp><span class="command">build</span></samp> parameter on the
! configure line.  This target triplet can be obtained by invoking <samp><span class="command">./config.guess</span></samp> in the toplevel source directory of GCC (and
  not that of GMP or MPFR or MPC).  For example on a Solaris 9 system:
  
! <pre class="smallexample">     % ./configure --build=sparc-sun-solaris2.9 --prefix=xxx
! </pre>
!    <p><hr /><a name="sparc_002dsun_002dsolaris210"></a>
! 
! <h3 class="heading"><a name="TOC63"></a>sparc-sun-solaris2.10</h3>
! 
  <p>There is a bug in older versions of the Sun assembler which breaks
  thread-local storage (TLS).  A typical error message is
  
! <pre class="smallexample">     ld: fatal: relocation error: R_SPARC_TLS_LE_HIX22: file /var/tmp//ccamPA1v.o:
!        symbol &lt;unknown&gt;: bad symbol type SECT: symbol type must be TLS
! </pre>
!    <p class="noindent">This bug is fixed in Sun patch 118683-03 or later.
! 
!    <p><hr /><a name="sparc_002dx_002dlinux"></a>
! 
! <h3 class="heading"><a name="TOC64"></a>sparc-*-linux*</h3>
! 
! <p><hr /><a name="sparc64_002dx_002dsolaris2"></a>
! 
! <h3 class="heading"><a name="TOC65"></a>sparc64-*-solaris2*</h3>
  
  <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 <samp><span class="command">build</span></samp> parameter on the configure line.  For example
  on a Solaris 9 system:
  
! <pre class="smallexample">     % ./configure --build=sparc64-sun-solaris2.9 --prefix=xxx
! </pre>
!    <p><hr /><a name="sparcv9_002dx_002dsolaris2"></a>
! 
! <h3 class="heading"><a name="TOC66"></a>sparcv9-*-solaris2*</h3>
! 
! <p>This is a synonym for &lsquo;<samp><span class="samp">sparc64-*-solaris2*</span></samp>&rsquo;.
! 
!    <p><hr /><a name="c6x_002dx_002dx"></a>
! 
! <h3 class="heading"><a name="TOC67"></a>c6x-*-*</h3>
! 
  <p>The C6X family of processors. This port requires binutils-2.22 or newer.
! 
!    <p><hr /><a name="tilegx_002d_002a_002dlinux"></a>
! 
! <h3 class="heading"><a name="TOC68"></a>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_002d_002a_002dlinux"></a>
! 
! <h3 class="heading"><a name="TOC69"></a>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_002d_002a_002dlinux"></a>
! 
! <h3 class="heading"><a name="TOC70"></a>tilepro-*-linux*</h3>
! 
  <p>The TILEPro processor running GNU/Linux.  This port requires
  binutils-2.22 or newer.
! 
!    <p><hr /><a name="visium_002dx_002delf"></a>
! 
! <h3 class="heading"><a name="TOC71"></a>visium-*-elf</h3>
! 
! <p>CDS VISIUMcore processor. 
  This configuration is intended for embedded systems.
! 
!    <p><hr /><a name="x_002dx_002dvxworks"></a>
! 
! <h3 class="heading"><a name="TOC72"></a>*-*-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. 
  Support for VxWorks AE would also be welcome; we believe this is merely
  a matter of writing an appropriate &ldquo;configlette&rdquo; (see below).  We are
  not interested in supporting older, a.out or COFF-based, versions of
  VxWorks in GCC 3.
! 
!    <p>VxWorks comes with an older version of GCC installed in
! <samp><var>$WIND_BASE</var><span class="file">/host</span></samp>; we recommend you do not overwrite it. 
! Choose an installation <var>prefix</var> entirely outside <var>$WIND_BASE</var>. 
! Before running <samp><span class="command">configure</span></samp>, create the directories <samp><var>prefix</var></samp>
! and <samp><var>prefix</var><span class="file">/bin</span></samp>.  Link or copy the appropriate assembler,
! linker, etc. into <samp><var>prefix</var><span class="file">/bin</span></samp>, and set your <var>PATH</var> to
! include that directory while running both <samp><span class="command">configure</span></samp> and
! <samp><span class="command">make</span></samp>.
! 
!    <p>You must give <samp><span class="command">configure</span></samp> the
! <samp><span class="option">--with-headers=</span><var>$WIND_BASE</var><span class="option">/target/h</span></samp> switch so that it can
  find the VxWorks system headers.  Since VxWorks is a cross compilation
! target only, you must also specify <samp><span class="option">--target=</span><var>target</var></samp>. 
! <samp><span class="command">configure</span></samp> will attempt to create the directory
! <samp><var>prefix</var><span class="file">/</span><var>target</var><span class="file">/sys-include</span></samp> and copy files into it;
! make sure the user running <samp><span class="command">configure</span></samp> has sufficient privilege
  to do so.
! 
!    <p>GCC's exception handling runtime requires a special &ldquo;configlette&rdquo;
! module, <samp><span class="file">contrib/gthr_supp_vxw_5x.c</span></samp>.  Follow the instructions in
  that file to add the module to your kernel build.  (Future versions of
  VxWorks will incorporate this module.)
! 
!    <p><hr /><a name="x86_002d64_002dx_002dx"></a>
! 
! <h3 class="heading"><a name="TOC73"></a>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><span class="option">-m32</span></samp> switch).
! 
!    <p><hr /><a name="x86_002d64_002dx_002dsolaris210"></a>
! 
! <h3 class="heading"><a name="TOC74"></a>x86_64-*-solaris2.1[0-9]*</h3>
! 
  <p>GCC also supports the x86-64 architecture implemented by the AMD64
! processor (&lsquo;<samp><span class="samp">amd64-*-*</span></samp>&rsquo; is an alias for &lsquo;<samp><span class="samp">x86_64-*-*</span></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><span class="option">-m64</span></samp> switch.  Since
  GCC 4.7, there is also a configuration that defaults to 64-bit code, but
! can generate 32-bit code with <samp><span class="option">-m32</span></samp>.  To configure and build
! this way, you have to provide all support libraries like <samp><span class="file">libgmp</span></samp>
! as 64-bit code, configure with <samp><span class="option">--target=x86_64-pc-solaris2.1x</span></samp>
! and &lsquo;<samp><span class="samp">CC=gcc -m64</span></samp>&rsquo;.
! 
!    <p><hr /><a name="xtensa_002dx_002delf"></a>
! 
! <h3 class="heading"><a name="TOC75"></a>xtensa*-*-elf</h3>
! 
  <p>This target is intended for embedded Xtensa systems using the
! &lsquo;<samp><span class="samp">newlib</span></samp>&rsquo; C library.  It uses ELF but does not support shared
  objects.  Designed-defined instructions specified via the
  Tensilica Instruction Extension (TIE) language are only supported
  through inline assembly.
! 
!    <p>The Xtensa configuration information must be specified prior to
! building GCC.  The <samp><span class="file">include/xtensa-config.h</span></samp> header
  file contains the configuration information.  If you created your
  own Xtensa configuration with the Xtensa Processor Generator, the
  downloaded files include a customized copy of this header file,
  which you can use to replace the default header file.
! 
!    <p><hr /><a name="xtensa_002dx_002dlinux"></a>
! 
! <h3 class="heading"><a name="TOC76"></a>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
! <samp><span class="option">-fpic</span></samp> or <samp><span class="option">-fPIC</span></samp> options are used.  In other
  respects, this target is the same as the
! <a href="#xtensa*-*-elf">&lsquo;<samp><span class="samp">xtensa*-*-elf</span></samp>&rsquo;</a> target.
! 
!    <p><hr /><a name="windows"></a>
! 
! <h3 class="heading"><a name="TOC77"></a>Microsoft Windows</h3>
! 
! <h4 class="subheading"><a name="TOC78"></a>Intel 16-bit versions</h4>
  
  <p>The 16-bit versions of Microsoft Windows, such as Windows 3.1, are not
  supported.
! 
!    <p>However, the 32-bit port has limited support for Microsoft
  Windows 3.11 in the Win32s environment, as a target only.  See below.
! 
! <h4 class="subheading"><a name="TOC79"></a>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
  and which C libraries are used.
  
!      <ul>
! <li>Cygwin <a href="#x-x-cygwin">*-*-cygwin</a>: Cygwin provides a user-space
! Linux API emulation layer in the Win32 subsystem. 
! <li>MinGW <a href="#x-x-mingw32">*-*-mingw32</a>: MinGW is a native GCC port for
! the Win32 subsystem that provides a subset of POSIX. 
! <li>MKS i386-pc-mks: NuTCracker from MKS.  See
! <a href="http://www.mkssoftware.com/">http://www.mkssoftware.com/</a> for more information. 
! </ul>
! 
! <h4 class="subheading"><a name="TOC80"></a>Intel 64-bit versions</h4>
! 
  <p>GCC contains support for x86-64 using the mingw-w64
! runtime library, available from <a href="http://mingw-w64.org/doku.php">http://mingw-w64.org/doku.php</a>. 
  This library should be used with the target triple x86_64-pc-mingw32.
! 
!    <p>Presently Windows for Itanium is not supported.
! 
! <h4 class="subheading"><a name="TOC81"></a>Windows CE</h4>
! 
  <p>Windows CE is supported as a target only on Hitachi
  SuperH (sh-wince-pe), and MIPS (mips-wince-pe).
! 
! <h4 class="subheading"><a name="TOC82"></a>Other Windows Platforms</h4>
! 
  <p>GCC no longer supports Windows NT on the Alpha or PowerPC.
! 
!    <p>GCC no longer supports the Windows POSIX subsystem.  However, it does
  support the Interix subsystem.  See above.
! 
!    <p>Old target names including *-*-winnt and *-*-windowsnt are no longer used.
! 
!    <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>UWIN support has been removed due to a lack of maintenance.
! 
!    <p><hr /><a name="x_002dx_002dcygwin"></a>
! 
! <h3 class="heading"><a name="TOC83"></a>*-*-cygwin</h3>
! 
  <p>Ports of GCC are included with the
  <a href="http://www.cygwin.com/">Cygwin environment</a>.
! 
!    <p>GCC will build under Cygwin without modification; it does not build
! with Microsoft's C++ compiler and there are no plans to make it do so.
! 
!    <p>The Cygwin native compiler can be configured to target any 32-bit x86
  cpu architecture desired; the default is i686-pc-cygwin.  It should be
  used with as up-to-date a version of binutils as possible; use either
  the latest official GNU binutils release in the Cygwin distribution,
  or version 2.20 or above if building your own.
! 
!    <p><hr /><a name="x_002dx_002dmingw32"></a>
! 
! <h3 class="heading"><a name="TOC84"></a>*-*-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.
! 
!    <p><hr /><a name="older"></a>
! 
! <h3 class="heading"><a name="TOC85"></a>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
  several years and may suffer from bitrot.
! 
!    <p>Starting with GCC 3.1, each release has a list of &ldquo;obsoleted&rdquo; systems. 
  Support for these systems is still present in that release, but
! <samp><span class="command">configure</span></samp> will fail unless the <samp><span class="option">--enable-obsolete</span></samp>
  option is given.  Unless a maintainer steps forward, support for these
  systems will be removed from the next release of GCC.
! 
!    <p>Support for old systems as hosts for GCC can cause problems if the
  workarounds for compiler, library and operating system bugs affect the
  cleanliness or maintainability of the rest of GCC.  In some cases, to
  bring GCC up on such a system, if still possible with current GCC, may
  require first installing an old version of GCC which did work on that
  system, and using it to compile a more recent GCC, to avoid bugs in the
  vendor compiler.  Old releases of GCC 1 and GCC 2 are available in the
! <samp><span class="file">old-releases</span></samp> directory on the <a href="../mirrors.html">GCC mirror sites</a>.  Header bugs may generally be avoided using
! <samp><span class="command">fixincludes</span></samp>, but bugs or deficiencies in libraries and the
  operating system may still cause problems.
! 
!    <p>Support for older systems as targets for cross-compilation is less
  problematic than support for them as hosts for GCC; if an enthusiast
  wishes to make such a target work again (including resurrecting any of
  the targets that never worked with GCC 2, starting from the last
--- 712,1453 ----
  IZ98477 for AIX 5.3 TL11 and IZ98134 for AIX 5.3 TL12). AIX 5.3 TL11 SP8,
  AIX 5.3 TL12 SP5, AIX 6.1 TL04 SP11, AIX 6.1 TL05 SP7, AIX 6.1 TL06 SP6,
  AIX 6.1 TL07 and AIX 7.1 TL01 should include the fix.
! </p>
! <p>Building <samp>libstdc++.a</samp> requires a fix for an AIX Assembler bug
  APAR IY26685 (AIX 4.3) or APAR IY25528 (AIX 5.1).  It also requires a
  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
  re-linked against the new shared library or the GCC 3.1 and GCC 3.3
! versions of the &lsquo;<samp>libstdc++</samp>&rsquo; shared object needs to be available
! to the AIX runtime loader.  The GCC 3.1 &lsquo;<samp>libstdc++.so.4</samp>&rsquo;, if
! present, and GCC 3.3 &lsquo;<samp>libstdc++.so.5</samp>&rsquo; shared objects can be
  installed for runtime dynamic loading using the following steps to set
! the &lsquo;<samp>F_LOADONLY</samp>&rsquo; flag in the shared object for <em>each</em>
! multilib <samp>libstdc++.a</samp> installed:
! </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
! <a href="./configure.html#WithAixSoname"><samp>--with-aix-soname=svr4</samp></a>
  configure option may drop the need for this procedure for libraries that
  support it.
! </p>
! <p>Linking executables and shared libraries may produce warnings of
  duplicate symbols.  The assembly files generated by GCC for AIX always
  have included multiple symbol definitions for certain global variable
  and function declarations in the original program.  The warnings should
  not prevent the linker from producing a correct library or runnable
  executable.
! </p>
! <p>AIX 4.3 utilizes a &ldquo;large format&rdquo; archive to support both 32-bit and
  64-bit object modules.  The routines provided in AIX 4.3.0 and AIX 4.3.1
! to parse archive libraries did not handle the new format correctly.
  These routines are used by GCC and result in error messages during
  linking such as &ldquo;not a COFF file&rdquo;.  The version of the routines shipped
! with AIX 4.3.1 should work for a 32-bit environment.  The <samp>-g</samp>
  option of the archive command may be used to create archives of 32-bit
  objects using the original &ldquo;small format&rdquo;.  A correct version of the
  routines is shipped with AIX 4.3.2 and above.
! </p>
! <p>Some versions of the AIX binder (linker) can fail with a relocation
! overflow severe error when the <samp>-bbigtoc</samp> option is used to link
  GCC-produced object files into an executable that overflows the TOC.  A fix
  for APAR IX75823 (OVERFLOW DURING LINK WHEN USING GCC AND -BBIGTOC) is
  available from IBM Customer Support and from its
  <a href="http://techsupport.services.ibm.com/">techsupport.services.ibm.com</a>
  website as PTF U455193.
! </p>
! <p>The AIX 4.3.2.1 linker (bos.rte.bind_cmds Level 4.3.2.1) will dump core
  with a segmentation fault when invoked by any version of GCC.  A fix for
  APAR IX87327 is available from IBM Customer Support and from its
  <a href="http://techsupport.services.ibm.com/">techsupport.services.ibm.com</a>
  website as PTF U461879.  This fix is incorporated in AIX 4.3.3 and above.
! </p>
! <p>The initial assembler shipped with AIX 4.3.0 generates incorrect object
  files.  A fix for APAR IX74254 (64BIT DISASSEMBLED OUTPUT FROM COMPILER FAILS
  TO ASSEMBLE/BIND) is available from IBM Customer Support and from its
  <a href="http://techsupport.services.ibm.com/">techsupport.services.ibm.com</a>
  website as PTF U453956.  This fix is incorporated in AIX 4.3.1 and above.
! </p>
! <p>AIX provides National Language Support (NLS).  Compilers and assemblers
  use NLS to support locale-specific representations of various data
! formats including floating-point numbers (e.g., &lsquo;<samp>.</samp>&rsquo;  vs &lsquo;<samp>,</samp>&rsquo; for
  separating decimal fractions).  There have been problems reported where
  GCC does not produce the same floating-point formats that the assembler
! expects.  If one encounters this problem, set the <code>LANG</code>
! environment variable to &lsquo;<samp>C</samp>&rsquo; or &lsquo;<samp>En_US</samp>&rsquo;.
! </p>
! <p>A default can be specified with the <samp>-mcpu=<var>cpu_type</var></samp>
! 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="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;
  build libraries for both M680x0 and ColdFire processors.  If you only
  need the M680x0 libraries, you can omit the ColdFire ones by passing
! <samp>--with-arch=m68k</samp> to <code>configure</code>.  Alternatively, you
! can omit the M680x0 libraries by passing <samp>--with-arch=cf</samp> to
! <code>configure</code>.  These targets default to 5206 or 5475 code as
  appropriate for the target system when
! configured with <samp>--with-arch=cf</samp> and 68020 code otherwise.
! </p>
! <p>The &lsquo;<samp>m68k-*-netbsd</samp>&rsquo; and
! &lsquo;<samp>m68k-*-openbsd</samp>&rsquo; targets also support the <samp>--with-arch</samp>
  option.  They will generate ColdFire CFV4e code when configured with
! <samp>--with-arch=cf</samp> and 68020 code otherwise.
! </p>
! <p>You can override the default processors listed above by configuring
! with <samp>--with-cpu=<var>target</var></samp>.  This <var>target</var> can either
! be a <samp>-mcpu</samp> argument or one of the following values:
! &lsquo;<samp>m68000</samp>&rsquo;, &lsquo;<samp>m68010</samp>&rsquo;, &lsquo;<samp>m68020</samp>&rsquo;, &lsquo;<samp>m68030</samp>&rsquo;,
! &lsquo;<samp>m68040</samp>&rsquo;, &lsquo;<samp>m68060</samp>&rsquo;, &lsquo;<samp>m68020-40</samp>&rsquo; and &lsquo;<samp>m68020-60</samp>&rsquo;.
! </p>
! <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
  really anything wrong, and it is okay to use the output file.  You can
  stop such warnings by installing the GNU linker.
! </p>
! <p>It would be nice to extend GAS to produce the gp tables, but they are
  optional, and there should not be a warning about their absence.
! </p>
! <p>The libstdc++ atomic locking routines for MIPS targets requires MIPS II
  and later.  A patch went in just after the GCC 3.3 release to
! make &lsquo;<samp>mips*-*-*</samp>&rsquo; use the generic implementation instead.  You can also
! configure for &lsquo;<samp>mipsel-elf</samp>&rsquo; as a workaround.  The
! &lsquo;<samp>mips*-*-linux*</samp>&rsquo; target continues to use the MIPS II routines.  More
  work on this is expected in future releases.
+ </p>
  
! <p>The built-in <code>__sync_*</code> functions are available on MIPS II and
! later systems and others that support the &lsquo;<samp>ll</samp>&rsquo;, &lsquo;<samp>sc</samp>&rsquo; and
! &lsquo;<samp>sync</samp>&rsquo; instructions.  This can be overridden by passing
! <samp>--with-llsc</samp> or <samp>--without-llsc</samp> when configuring GCC.
  Since the Linux kernel emulates these instructions if they are
! missing, the default for &lsquo;<samp>mips*-*-linux*</samp>&rsquo; targets is
! <samp>--with-llsc</samp>.  The <samp>--with-llsc</samp> and
! <samp>--without-llsc</samp> configure options may be overridden at compile
! time by passing the <samp>-mllsc</samp> or <samp>-mno-llsc</samp> options to
  the compiler.
! </p>
! <p>MIPS systems check for division by zero (unless
! <samp>-mno-check-zero-division</samp> is passed to the compiler) by
  generating either a conditional trap or a break instruction.  Using
  trap results in smaller code, but is only supported on MIPS II and
  later.  Also, some versions of the Linux kernel have a bug that
  prevents trap from generating the proper signal (<code>SIGFPE</code>).  To enable
! the use of break, use the <samp>--with-divide=breaks</samp>
! <code>configure</code> option when configuring GCC.  The default is to
  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>
! <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
! <a href="https://github.com/MentorEmbedded/nvptx-tools/">nvptx-tools</a>.
  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.
! </p>
! <p>Use the <samp>--disable-sjlj-exceptions</samp> and
! <samp>--enable-newlib-io-long-long</samp> options when configuring.
! </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.15 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,
  meaning that you will not be able to build GCC from source.  Tool
  binaries are available at
  <a href="https://opensource.apple.com">https://opensource.apple.com</a>.
! </p>
! <p>This version of GCC requires at least cctools-590.36.  The
  cctools-590.36 package referenced from
  <a href="http://gcc.gnu.org/ml/gcc/2006-03/msg00507.html">http://gcc.gnu.org/ml/gcc/2006-03/msg00507.html</a> will not work
  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 are supported upstream as of the
  binutils 2.28 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 are supported upstream as of the
  binutils 2.28 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 are supported upstream as of the
  binutils 2.28 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 are supported upstream as of the
  binutils 2.28 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 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>Sun does not ship a C compiler with Solaris 2 before Solaris 10, though
  you can download the Sun Studio compilers for free.  In Solaris 10 and
! 11, GCC 3.4.3 is available as <code>/usr/sfw/bin/gcc</code>.  Solaris 11
  also provides GCC 4.5.2, 4.7.3, and 4.8.2 as
! <code>/usr/gcc/4.5/bin/gcc</code> or similar.  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;or &lsquo;<samp>boehm-gc</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>Solaris 10 comes with a number of optional OS packages.  Some of these
  are needed to use GCC fully, namely <code>SUNWarc</code>,
  <code>SUNWbtool</code>, <code>SUNWesu</code>, <code>SUNWhea</code>, <code>SUNWlibm</code>,
  <code>SUNWsprot</code>, and <code>SUNWtoo</code>.  If you did not install all
  optional packages when installing Solaris 10, you will need to verify that
! the packages that GCC needs are installed.
  To check whether an optional package is installed, use
! the <code>pkginfo</code> command.  To add an optional package, use the
! <code>pkgadd</code> command.  For further details, see the Solaris 10
  documentation.
! </p>
! <p>Starting with Solaris 11, the package management has changed, so you
  need to check for <code>system/header</code>, <code>system/linker</code>, and
  <code>developer/assembler</code> packages.  Checking for and installing
! packages is done with the <code>pkg</code> command now.
! </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 Sun 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 10, from GNU binutils 2.15 (in
! <samp>/usr/sfw/bin/gas</samp>), and Solaris 11,
! from GNU binutils 2.19 or newer (also in <samp>/usr/bin/gas</samp> and
! <samp>/usr/gnu/bin/as</samp>), are known to work.
! The current version, from GNU binutils 2.29,
! 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> + Sun <code>ld</code> should reasonably work,
! the reverse combination Sun <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, although the version included in
  Solaris 10 cannot be used due to several bugs.  Again, the current
! version (2.29) 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>Sun bug 4927647 sometimes causes random spurious testsuite failures
! related to missing diagnostic output.  This bug doesn&rsquo;t affect GCC
! itself, rather it is a kernel bug triggered by the <code>expect</code>
  program which is used only by the GCC testsuite driver.  When the bug
! causes the <code>expect</code> program to miss anticipated output, extra
  testsuite failures appear.
! </p>
! <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.
! </p>
! <p>Newer versions of the GNU Multiple Precision Library (GMP), the MPFR
  library and the MPC library are known to be miscompiled by earlier
  versions of GCC on these platforms.  We therefore recommend the use
  of the exact versions of these libraries listed as minimal versions
  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 Sun&rsquo;s native tools;
  this difference is quite significant for binaries containing debugging
  information.
! </p>
! <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 9 system:
+ </p>
+ <div class="smallexample">
+ <pre class="smallexample">% ./configure --build=sparc-sun-solaris2.9 --prefix=xxx
+ </pre></div>
  
! <hr />
! <a name="sparc-sun-solaris210"></a><a name="sparc-sun-solaris2_002e10"></a>
! <h3 class="heading">sparc-sun-solaris2.10</h3>
  <p>There is a bug in older versions of the Sun assembler which breaks
  thread-local storage (TLS).  A typical error message is
+ </p>
+ <div class="smallexample">
+ <pre class="smallexample">ld: fatal: relocation error: R_SPARC_TLS_LE_HIX22: file /var/tmp//ccamPA1v.o:
+   symbol &lt;unknown&gt;: bad symbol type SECT: symbol type must be TLS
+ </pre></div>
  
! <p>This bug is fixed in Sun patch 118683-03 or later.
! </p>
! <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 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 9 system:
+ </p>
+ <div class="smallexample">
+ <pre class="smallexample">% ./configure --build=sparc64-sun-solaris2.9 --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.
  Support for VxWorks AE would also be welcome; we believe this is merely
  a matter of writing an appropriate &ldquo;configlette&rdquo; (see below).  We are
  not interested in supporting older, a.out or COFF-based, versions of
  VxWorks in GCC 3.
! </p>
! <p>VxWorks comes with an older version of GCC installed in
! <samp><var>$WIND_BASE</var>/host</samp>; we recommend you do not overwrite it.
! Choose an installation <var>prefix</var> entirely outside <var>$WIND_BASE</var>.
! Before running <code>configure</code>, create the directories <samp><var>prefix</var></samp>
! and <samp><var>prefix</var>/bin</samp>.  Link or copy the appropriate assembler,
! linker, etc. into <samp><var>prefix</var>/bin</samp>, and set your <var>PATH</var> to
! include that directory while running both <code>configure</code> and
! <code>make</code>.
! </p>
! <p>You must give <code>configure</code> the
! <samp>--with-headers=<var>$WIND_BASE</var>/target/h</samp> switch so that it can
  find the VxWorks system headers.  Since VxWorks is a cross compilation
! target only, you must also specify <samp>--target=<var>target</var></samp>.
! <code>configure</code> will attempt to create the directory
! <samp><var>prefix</var>/<var>target</var>/sys-include</samp> and copy files into it;
! make sure the user running <code>configure</code> has sufficient privilege
  to do so.
! </p>
! <p>GCC&rsquo;s exception handling runtime requires a special &ldquo;configlette&rdquo;
! module, <samp>contrib/gthr_supp_vxw_5x.c</samp>.  Follow the instructions in
  that file to add the module to your kernel build.  (Future versions of
  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-solaris210"></a><a name="x86_005f64-*-solaris2_002e1_005b0-9_005d*"></a>
! <h3 class="heading">x86_64-*-solaris2.1[0-9]*</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
! can generate 32-bit code with <samp>-m32</samp>.  To configure and build
! this way, you have to provide all support libraries like <samp>libgmp</samp>
! as 64-bit code, configure with <samp>--target=x86_64-pc-solaris2.1x</samp>
! 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
  Tensilica Instruction Extension (TIE) language are only supported
  through inline assembly.
! </p>
! <p>The Xtensa configuration information must be specified prior to
! building GCC.  The <samp>include/xtensa-config.h</samp> header
  file contains the configuration information.  If you created your
  own Xtensa configuration with the Xtensa Processor Generator, the
  downloaded files include a customized copy of this header file,
  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
! <samp>-fpic</samp> or <samp>-fPIC</samp> options are used.  In other
  respects, this target is the same as the
! <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
  and which C libraries are used.
+ </p>
+ <ul>
+ <li> Cygwin <a href="#x-x-cygwin">*-*-cygwin</a>: Cygwin provides a user-space
+ Linux API emulation layer in the Win32 subsystem.
+ </li><li> MinGW <a href="#x-x-mingw32">*-*-mingw32</a>: MinGW is a native GCC port for
+ the Win32 subsystem that provides a subset of POSIX.
+ </li><li> MKS i386-pc-mks: NuTCracker from MKS.  See
+ <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="http://mingw-w64.org/doku.php">http://mingw-w64.org/doku.php</a>.
  This library should be used with the target triple x86_64-pc-mingw32.
! </p>
! <p>Presently Windows for Itanium is not supported.
! </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
  support the Interix subsystem.  See above.
! </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>
! <p>GCC will build under Cygwin without modification; it does not build
! with Microsoft&rsquo;s C++ compiler and there are no plans to make it do so.
! </p>
! <p>The Cygwin native compiler can be configured to target any 32-bit x86
  cpu architecture desired; the default is i686-pc-cygwin.  It should be
  used with as up-to-date a version of binutils as possible; use either
  the latest official GNU binutils release in the Cygwin distribution,
  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.
! </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
  several years and may suffer from bitrot.
! </p>
! <p>Starting with GCC 3.1, each release has a list of &ldquo;obsoleted&rdquo; systems.
  Support for these systems is still present in that release, but
! <code>configure</code> will fail unless the <samp>--enable-obsolete</samp>
  option is given.  Unless a maintainer steps forward, support for these
  systems will be removed from the next release of GCC.
! </p>
! <p>Support for old systems as hosts for GCC can cause problems if the
  workarounds for compiler, library and operating system bugs affect the
  cleanliness or maintainability of the rest of GCC.  In some cases, to
  bring GCC up on such a system, if still possible with current GCC, may
  require first installing an old version of GCC which did work on that
  system, and using it to compile a more recent GCC, to avoid bugs in the
  vendor compiler.  Old releases of GCC 1 and GCC 2 are available in the
! <samp>old-releases</samp> directory on the <a href="../mirrors.html">GCC mirror
! sites</a>.  Header bugs may generally be avoided using
! <code>fixincludes</code>, but bugs or deficiencies in libraries and the
  operating system may still cause problems.
! </p>
! <p>Support for older systems as targets for cross-compilation is less
  problematic than support for them as hosts for GCC; if an enthusiast
  wishes to make such a target work again (including resurrecting any of
  the targets that never worked with GCC 2, starting from the last
*************** version before they were removed), patch
*** 1492,1522 ****
  <a href="../contribute.html">following the usual requirements</a> would be
  likely to be accepted, since they should not affect the support for more
  modern targets.
! 
!    <p>For some systems, old versions of GNU binutils may also be useful,
! and are available from <samp><span class="file">pub/binutils/old-releases</span></samp> on
  <a href="https://sourceware.org/mirrors.html">sourceware.org mirror sites</a>.
! 
!    <p>Some of the information on specific systems above relates to
  such older systems, but much of the information
  about GCC on such systems (which may no longer be applicable to
  current GCC) is to be found in the GCC texinfo manual.
! 
!    <p><hr /><a name="elf"></a>
! 
! <h3 class="heading"><a name="TOC86"></a>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
  automatically.
  
!    <p><hr />
  <p><a href="./index.html">Return to the GCC Installation page</a>
  
- <!-- ***Old documentation****************************************************** -->
- <!-- ***GFDL******************************************************************** -->
- <!-- *************************************************************************** -->
- <!-- Part 6 The End of the Document -->
- </body></html>
  
--- 1455,1488 ----
  <a href="../contribute.html">following the usual requirements</a> would be
  likely to be accepted, since they should not affect the support for more
  modern targets.
! </p>
! <p>For some systems, old versions of GNU binutils may also be useful,
! and are available from <samp>pub/binutils/old-releases</samp> on
  <a href="https://sourceware.org/mirrors.html">sourceware.org mirror sites</a>.
! </p>
! <p>Some of the information on specific systems above relates to
  such older systems, but much of the information
  about GCC on such systems (which may no longer be applicable to
  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
  automatically.
+ </p>
  
! <hr />
! <p>
  <p><a href="./index.html">Return to the GCC Installation page</a>
+ </p>
+ 
+ 
  
  
+ 
+ 
+ </body>
+ </html>
diff -Nrcpad gcc-7.3.0/INSTALL/test.html gcc-8.1.0/INSTALL/test.html
*** gcc-7.3.0/INSTALL/test.html	Thu Jan 25 08:17:55 2018
--- gcc-8.1.0/INSTALL/test.html	Wed May  2 08:20:01 2018
***************
*** 1,224 ****
! <html lang="en">
! <head>
! <title>Installing GCC: Testing</title>
! <meta http-equiv="Content-Type" content="text/html">
! <meta name="description" content="Installing GCC: Testing">
! <meta name="generator" content="makeinfo 4.13">
! <link title="Top" rel="top" href="#Top">
! <link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
! <!--
! Copyright (C) 1988-2017 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
  any later version published by the Free Software Foundation; with no
  Invariant Sections, the Front-Cover texts being (a) (see below), and
  with the Back-Cover Texts being (b) (see below).  A copy of the
! license is included in the section entitled "GNU Free Documentation License".
  
  (a) The FSF's Front-Cover Text is:
  
!      A GNU Manual
  
  (b) The FSF's Back-Cover Text is:
  
!      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.-->
! <meta http-equiv="Content-Style-Type" content="text/css">
! <style type="text/css"><!--
!   pre.display { font-family:inherit }
!   pre.format  { font-family:inherit }
!   pre.smalldisplay { font-family:inherit; font-size:smaller }
!   pre.smallformat  { font-family:inherit; font-size:smaller }
!   pre.smallexample { font-size:smaller }
!   pre.smalllisp    { font-size:smaller }
!   span.sc    { font-variant:small-caps }
!   span.roman { font-family:serif; font-weight:normal; } 
!   span.sansserif { font-family:sans-serif; font-weight:normal; } 
! --></style>
  </head>
! <body>
! <h1 class="settitle">Installing GCC: Testing</h1>
! <a name="index-Testing-1"></a><a name="index-Installing-GCC_003a-Testing-2"></a><a name="index-Testsuite-3"></a>
! Before you install GCC, we encourage you to run the testsuites and to
  compare your results with results from a similar configuration that have
  been submitted to the
! <a href="http://gcc.gnu.org/ml/gcc-testresults/">gcc-testresults mailing list</a>. 
  Some of these archived results are linked from the build status lists
  at <a href="http://gcc.gnu.org/buildstat.html">http://gcc.gnu.org/buildstat.html</a>, although not everyone who
! reports a successful build runs the testsuites and submits the results. 
  This step is optional and may require you to download additional software,
  but it can give you confidence in your new GCC installation or point out
  problems before you install and start using your new GCC.
! 
!    <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>Second, you must have the testing tools installed.  This includes
  <a href="http://www.gnu.org/software/dejagnu/">DejaGnu</a>, Tcl, and Expect;
  the DejaGnu site has links to these. For running the BRIG frontend
  tests, a tool to assemble the binary BRIGs from HSAIL text,
  <a href="https://github.com/HSAFoundation/HSAIL-Tools/">HSAILasm</a> must
  be installed.
! 
!    <p>If the directories where <samp><span class="command">runtest</span></samp> and <samp><span class="command">expect</span></samp> were
! installed are not in the <samp><span class="env">PATH</span></samp>, you may need to set the following
  environment variables appropriately, as in the following example (which
! assumes that DejaGnu has been installed under <samp><span class="file">/usr/local</span></samp>):
  
! <pre class="smallexample">     TCL_LIBRARY = /usr/local/share/tcl8.0
!      DEJAGNULIBS = /usr/local/share/dejagnu
! </pre>
!    <p>(On systems such as Cygwin, these paths are required to be actual
  paths, not mounts or links; presumably this is due to some lack of
  portability in the DejaGnu code.)
  
!    <p>Finally, you can run the testsuite (which may take a long time):
! <pre class="smallexample">     cd <var>objdir</var>; make -k check
! </pre>
!    <p>This will test various components of GCC, such as compiler
  front ends and runtime libraries.  While running the testsuite, DejaGnu
  might emit some harmless messages resembling
! &lsquo;<samp><span class="samp">WARNING: Couldn't find the global config file.</span></samp>&rsquo; or
! &lsquo;<samp><span class="samp">WARNING: Couldn't find tool init file</span></samp>&rsquo; that can be ignored.
! 
!    <p>If you are testing a cross-compiler, you may want to run the testsuite
  on a simulator as described at <a href="http://gcc.gnu.org/simtest-howto.html">http://gcc.gnu.org/simtest-howto.html</a>.
! 
! <h3 class="section"><a name="TOC0"></a>How can you run the testsuite on selected tests?</h3>
  
  <p>In order to run sets of tests selectively, there are targets
! &lsquo;<samp><span class="samp">make check-gcc</span></samp>&rsquo; and language specific &lsquo;<samp><span class="samp">make check-c</span></samp>&rsquo;,
! &lsquo;<samp><span class="samp">make check-c++</span></samp>&rsquo;, &lsquo;<samp><span class="samp">make check-fortran</span></samp>&rsquo;,
! &lsquo;<samp><span class="samp">make check-ada</span></samp>&rsquo;, &lsquo;<samp><span class="samp">make check-objc</span></samp>&rsquo;, &lsquo;<samp><span class="samp">make check-obj-c++</span></samp>&rsquo;,
! &lsquo;<samp><span class="samp">make check-lto</span></samp>&rsquo;
! in the <samp><span class="file">gcc</span></samp> subdirectory of the object directory.  You can also
! just run &lsquo;<samp><span class="samp">make check</span></samp>&rsquo; in a subdirectory of the object directory.
  
!    <p>A more selective way to just run all <samp><span class="command">gcc</span></samp> execute tests in the
  testsuite is to use
  
! <pre class="smallexample">     make check-gcc RUNTESTFLAGS="execute.exp <var>other-options</var>"
! </pre>
!    <p>Likewise, in order to run only the <samp><span class="command">g++</span></samp> &ldquo;old-deja&rdquo; tests in
! the testsuite with filenames matching &lsquo;<samp><span class="samp">9805*</span></samp>&rsquo;, you would use
  
! <pre class="smallexample">     make check-g++ RUNTESTFLAGS="old-deja.exp=9805* <var>other-options</var>"
! </pre>
!    <p>The <samp><span class="file">*.exp</span></samp> files are located in the testsuite directories of the GCC
! source, the most important ones being <samp><span class="file">compile.exp</span></samp>,
! <samp><span class="file">execute.exp</span></samp>, <samp><span class="file">dg.exp</span></samp> and <samp><span class="file">old-deja.exp</span></samp>. 
! To get a list of the possible <samp><span class="file">*.exp</span></samp> files, pipe the
! output of &lsquo;<samp><span class="samp">make check</span></samp>&rsquo; into a file and look at the
! &lsquo;<samp><span class="samp">Running ...  .exp</span></samp>&rsquo; lines.
  
! <h3 class="section"><a name="TOC1"></a>Passing options and running multiple testsuites</h3>
  
  <p>You can pass multiple options to the testsuite using the
! &lsquo;<samp><span class="samp">--target_board</span></samp>&rsquo; option of DejaGNU, either passed as part of
! &lsquo;<samp><span class="samp">RUNTESTFLAGS</span></samp>&rsquo;, or directly to <samp><span class="command">runtest</span></samp> if you prefer to
  work outside the makefiles.  For example,
  
! <pre class="smallexample">     make check-g++ RUNTESTFLAGS="--target_board=unix/-O3/-fmerge-constants"
! </pre>
!    <p>will run the standard <samp><span class="command">g++</span></samp> testsuites (&ldquo;unix&rdquo; is the target name
  for a standard native testsuite situation), passing
! &lsquo;<samp><span class="samp">-O3 -fmerge-constants</span></samp>&rsquo; to the compiler on every test, i.e.,
  slashes separate options.
! 
!    <p>You can run the testsuites multiple times using combinations of options
  with a syntax similar to the brace expansion of popular shells:
  
! <pre class="smallexample">     ..."--target_board=arm-sim\{-mhard-float,-msoft-float\}\{-O1,-O2,-O3,\}"
! </pre>
!    <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><span class="samp">arm-sim</span></samp>&rsquo;
  target, as if you had specified all possible combinations yourself:
  
! <pre class="smallexample">     --target_board='arm-sim/-mhard-float/-O1 \
!                      arm-sim/-mhard-float/-O2 \
!                      arm-sim/-mhard-float/-O3 \
!                      arm-sim/-mhard-float \
!                      arm-sim/-msoft-float/-O1 \
!                      arm-sim/-msoft-float/-O2 \
!                      arm-sim/-msoft-float/-O3 \
!                      arm-sim/-msoft-float'
! </pre>
!    <p>They can be combined as many times as you wish, in arbitrary ways.  This
  list:
  
! <pre class="smallexample">     ..."--target_board=unix/-Wextra\{-O3,-fno-strength\}\{-fomit-frame,\}"
! </pre>
!    <p>will generate four combinations, all involving &lsquo;<samp><span class="samp">-Wextra</span></samp>&rsquo;.
! 
!    <p>The disadvantage to this method is that the testsuites are run in serial,
  which is a waste on multiprocessor systems.  For users with GNU Make and
  a shell which performs brace expansion, you can run the testsuites in
! parallel by having the shell perform the combinations and <samp><span class="command">make</span></samp>
! do the parallel runs.  Instead of using &lsquo;<samp><span class="samp">--target_board</span></samp>&rsquo;, use a
  special makefile target:
  
! <pre class="smallexample">     make -j<var>N</var> check-<var>testsuite</var>//<var>test-target</var>/<var>option1</var>/<var>option2</var>/...
! </pre>
!    <p>For example,
  
! <pre class="smallexample">     make -j3 check-gcc//sh-hms-sim/{-m1,-m2,-m3,-m3e,-m4}/{,-nofpu}
! </pre>
!    <p>will run three concurrent &ldquo;make-gcc&rdquo; testsuites, eventually testing all
  ten combinations as described above.  Note that this is currently only
! supported in the <samp><span class="file">gcc</span></samp> subdirectory.  (To see how this works, try
! typing <samp><span class="command">echo</span></samp> before the example given here.)
  
! <h3 class="section"><a name="TOC2"></a>How to interpret test results</h3>
  
! <p>The result of running the testsuite are various <samp><span class="file">*.sum</span></samp> and <samp><span class="file">*.log</span></samp>
! files in the testsuite subdirectories.  The <samp><span class="file">*.log</span></samp> files contain a
  detailed log of the compiler invocations and the corresponding
! results, the <samp><span class="file">*.sum</span></samp> files summarize the results.  These summaries
  contain status codes for all tests:
  
!      <ul>
! <li>PASS: the test passed as expected
! <li>XPASS: the test unexpectedly passed
! <li>FAIL: the test unexpectedly failed
! <li>XFAIL: the test failed as expected
! <li>UNSUPPORTED: the test is not supported on this platform
! <li>ERROR: the testsuite detected an error
! <li>WARNING: the testsuite detected a possible problem
! </ul>
! 
!    <p>It is normal for some tests to report unexpected failures.  At the
  current time the testing harness does not allow fine grained control
  over whether or not a test is expected to fail.  This problem should
  be fixed in future releases.
  
! <h3 class="section"><a name="TOC3"></a>Submitting test results</h3>
  
  <p>If you want to report the results to the GCC project, use the
! <samp><span class="file">contrib/test_summary</span></samp> shell script.  Start it in the <var>objdir</var> with
  
! <pre class="smallexample">     <var>srcdir</var>/contrib/test_summary -p your_commentary.txt \
!          -m gcc-testresults@gcc.gnu.org |sh
! </pre>
!    <p>This script uses the <samp><span class="command">Mail</span></samp> program to send the results, so
! make sure it is in your <samp><span class="env">PATH</span></samp>.  The file <samp><span class="file">your_commentary.txt</span></samp> is
  prepended to the testsuite summary and should contain any special
  remarks you have on your results or your build environment.  Please
  do not edit the testsuite result block or the subject line, as these
  messages may be automatically processed.
! 
!    <p><hr />
  <p><a href="./index.html">Return to the GCC Installation page</a>
  
- <!-- ***Final install*********************************************************** -->
- <!-- ***Binaries**************************************************************** -->
- <!-- ***Specific**************************************************************** -->
- <!-- ***Old documentation****************************************************** -->
- <!-- ***GFDL******************************************************************** -->
- <!-- *************************************************************************** -->
- <!-- Part 6 The End of the Document -->
- </body></html>
  
--- 1,314 ----
! <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
! <html>
! <!-- Copyright (C) 1988-2018 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
  any later version published by the Free Software Foundation; with no
  Invariant Sections, the Front-Cover texts being (a) (see below), and
  with the Back-Cover Texts being (b) (see below).  A copy of the
! license is included in the section entitled "GNU
! Free Documentation License".
  
  (a) The FSF's Front-Cover Text is:
  
! A GNU Manual
  
  (b) The FSF's Back-Cover Text is:
  
! 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.4, http://www.gnu.org/software/texinfo/ -->
! <head>
! <title>Installing GCC</title>
! 
! <meta name="description" content="Installing GCC">
! <meta name="keywords" content="Installing GCC">
! <meta name="resource-type" content="document">
! <meta name="distribution" content="global">
! <meta name="Generator" content="makeinfo">
! <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
! <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>
! 
! 
  </head>
! 
! <body lang="en">
! <h1 class="settitle" align="center">Installing GCC</h1>
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! <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
  been submitted to the
! <a href="http://gcc.gnu.org/ml/gcc-testresults/">gcc-testresults mailing list</a>.
  Some of these archived results are linked from the build status lists
  at <a href="http://gcc.gnu.org/buildstat.html">http://gcc.gnu.org/buildstat.html</a>, although not everyone who
! reports a successful build runs the testsuites and submits the results.
  This step is optional and may require you to download additional software,
  but it can give you confidence in your new GCC installation or point out
  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="http://www.gnu.org/software/dejagnu/">DejaGnu</a>, Tcl, and Expect;
  the DejaGnu site has links to these. For running the BRIG frontend
  tests, a tool to assemble the binary BRIGs from HSAIL text,
  <a href="https://github.com/HSAFoundation/HSAIL-Tools/">HSAILasm</a> must
  be installed.
! </p>
! <p>If the directories where <code>runtest</code> and <code>expect</code> were
! installed are not in the <code>PATH</code>, you may need to set the following
  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>
  
! <p>(On systems such as Cygwin, these paths are required to be actual
  paths, not mounts or links; presumably this is due to some lack of
  portability in the DejaGnu code.)
+ </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
  front ends and runtime libraries.  While running the testsuite, DejaGnu
  might emit some harmless messages resembling
! &lsquo;<samp>WARNING: Couldn't find the global config file.</samp>&rsquo; or
! &lsquo;<samp>WARNING: Couldn't find tool init file</samp>&rsquo; that can be ignored.
! </p>
! <p>If you are testing a cross-compiler, you may want to run the testsuite
  on a simulator as described at <a href="http://gcc.gnu.org/simtest-howto.html">http://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-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
! as a series of whitespace-delimited glob expressions so that multiple patterns
! 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>
  
! <p>The <samp>*.exp</samp> files are located in the testsuite directories of the GCC
! source, the most important ones being <samp>compile.exp</samp>,
! <samp>execute.exp</samp>, <samp>dg.exp</samp> and <samp>old-deja.exp</samp>.
! To get a list of the possible <samp>*.exp</samp> files, pipe the
! 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
! &lsquo;<samp>--target_board</samp>&rsquo; option of DejaGNU, either passed as part of
! &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
  for a standard native testsuite situation), passing
! &lsquo;<samp>-O3 -fmerge-constants</samp>&rsquo; to the compiler on every test, i.e.,
  slashes separate options.
! </p>
! <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 \
+                 arm-sim/-msoft-float/-O1 \
+                 arm-sim/-msoft-float/-O2 \
+                 arm-sim/-msoft-float/-O3 \
+                 arm-sim/-msoft-float'
+ </pre></div>
  
! <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;.
! </p>
! <p>The disadvantage to this method is that the testsuites are run in serial,
  which is a waste on multiprocessor systems.  For users with GNU Make and
  a shell which performs brace expansion, you can run the testsuites in
! parallel by having the shell perform the combinations and <code>make</code>
! 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
  ten combinations as described above.  Note that this is currently only
! supported in the <samp>gcc</samp> subdirectory.  (To see how this works, try
! 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>
! files in the testsuite subdirectories.  The <samp>*.log</samp> files contain a
  detailed log of the compiler invocations and the corresponding
! results, the <samp>*.sum</samp> files summarize the results.  These summaries
  contain status codes for all tests:
+ </p>
+ <ul>
+ <li> PASS: the test passed as expected
+ </li><li> XPASS: the test unexpectedly passed
+ </li><li> FAIL: the test unexpectedly failed
+ </li><li> XFAIL: the test failed as expected
+ </li><li> UNSUPPORTED: the test is not supported on this platform
+ </li><li> ERROR: the testsuite detected an error
+ </li><li> WARNING: the testsuite detected a possible problem
+ </li></ul>
  
! <p>It is normal for some tests to report unexpected failures.  At the
  current time the testing harness does not allow fine grained control
  over whether or not a test is expected to fail.  This problem should
  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>
  
! <p>This script uses the <code>Mail</code> program to send the results, so
! make sure it is in your <code>PATH</code>.  The file <samp>your_commentary.txt</samp> is
  prepended to the testsuite summary and should contain any special
  remarks you have on your results or your build environment.  Please
  do not edit the testsuite result block or the subject line, as these
  messages may be automatically processed.
! </p>
! <hr />
! <p>
  <p><a href="./index.html">Return to the GCC Installation page</a>
+ </p>
+ 
+ 
  
  
+ 
+ 
+ <hr>
+ 
+ 
+ 
+ </body>
+ </html>
diff -Nrcpad gcc-7.3.0/LAST_UPDATED gcc-8.1.0/LAST_UPDATED
*** gcc-7.3.0/LAST_UPDATED	Thu Jan 25 08:17:55 2018
--- gcc-8.1.0/LAST_UPDATED	Wed May  2 08:19:59 2018
***************
*** 1 ****
! Obtained from SVN: tags/gcc_7_3_0_release revision 257042
--- 1 ----
! Obtained from SVN: tags/gcc_8_1_0_release revision 259830
diff -Nrcpad gcc-7.3.0/MAINTAINERS gcc-8.1.0/MAINTAINERS
*** gcc-7.3.0/MAINTAINERS	Mon Mar 20 16:11:32 2017
--- gcc-8.1.0/MAINTAINERS	Mon Apr 23 18:53:34 2018
*************** Maintainers
*** 22,28 ****
  
  Richard Earnshaw				<richard.earnshaw@arm.com>
  Richard Biener					<rguenther@suse.de>
- Richard Henderson				<rth@redhat.com>
  Jakub Jelinek					<jakub@redhat.com>
  Richard Kenner					<kenner@nyu.edu>
  Jeff Law					<law@redhat.com>
--- 22,27 ----
*************** Michael Meissner				<gnu@the-meissners.o
*** 30,36 ****
  Jason Merrill					<jason@redhat.com>
  David S. Miller					<davem@redhat.com>
  Joseph Myers					<joseph@codesourcery.com>
! Bernd Schmidt					<bschmidt@redhat.com>
  Ian Lance Taylor				<ian@airs.com>
  Jim Wilson					<wilson@tuliptree.org>
  
--- 29,35 ----
  Jason Merrill					<jason@redhat.com>
  David S. Miller					<davem@redhat.com>
  Joseph Myers					<joseph@codesourcery.com>
! Bernd Schmidt					<bernds_cb1@t-online.de>
  Ian Lance Taylor				<ian@airs.com>
  Jim Wilson					<wilson@tuliptree.org>
  
*************** Note that while global reviewers can app
*** 38,56 ****
  the compiler or associated libraries, they still need approval for
  their own patches from other maintainers or reviewers.
  
  			CPU Port Maintainers	(CPU alphabetical order)
  
- aarch64 port		Marcus Shawcroft	<marcus.shawcroft@arm.com>
  aarch64 port		Richard Earnshaw	<richard.earnshaw@arm.com>
! alpha port		Richard Henderson	<rth@redhat.com>
  arc port		Joern Rennecke		<gnu@amylaar.uk>
  arm port		Nick Clifton		<nickc@redhat.com>
  arm port		Richard Earnshaw	<richard.earnshaw@arm.com>
  arm port		Ramana Radhakrishnan	<ramana.radhakrishnan@arm.com>
  avr port		Denis Chertykov		<chertykov@gmail.com>
- bfin port		Bernd Schmidt		<bschmidt@redhat.com>
  bfin port		Jie Zhang		<jzhang918@gmail.com>
! c6x port		Bernd Schmidt		<bschmidt@redhat.com>
  cris port		Hans-Peter Nilsson	<hp@axis.com>
  epiphany port		Joern Rennecke		<gnu@amylaar.uk>
  fr30 port		Nick Clifton		<nickc@redhat.com>
--- 37,60 ----
  the compiler or associated libraries, they still need approval for
  their own patches from other maintainers or reviewers.
  
+ Also note that maintainership of any area covers changes to web pages,
+ docs, and the testsuite related to that.
+ 
  			CPU Port Maintainers	(CPU alphabetical order)
  
  aarch64 port		Richard Earnshaw	<richard.earnshaw@arm.com>
! aarch64 port		James Greenhalgh	<james.greenhalgh@arm.com>
! aarch64 port		Marcus Shawcroft	<marcus.shawcroft@arm.com>
! aarch64 SVE port	Richard Sandiford	<richard.sandiford@arm.com>
! alpha port		Richard Henderson	<rth@twiddle.net>
  arc port		Joern Rennecke		<gnu@amylaar.uk>
  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>
! c6x port		Bernd Schmidt		<bernds_cb1@t-online.de>
  cris port		Hans-Peter Nilsson	<hp@axis.com>
  epiphany port		Joern Rennecke		<gnu@amylaar.uk>
  fr30 port		Nick Clifton		<nickc@redhat.com>
*************** nds32 port		Chung-Ju Wu		<jasonwucj@gmai
*** 85,96 ****
  nds32 port		Shiva Chen		<shiva0217@gmail.com>
  nios2 port		Chung-Lin Tang		<cltang@codesourcery.com>
  nios2 port		Sandra Loosemore	<sandra@codesourcery.com>
! nvptx port		Bernd Schmidt		<bschmidt@redhat.com>
  pdp11 port		Paul Koning		<ni1d@arrl.net>
! picochip port		Daniel Towner		<dant@picochip.com>
  riscv port		Kito Cheng		<kito.cheng@gmail.com>
! riscv port		Palmer Dabbelt		<palmer@dabbelt.com>
  riscv port		Andrew Waterman		<andrew@sifive.com>
  rl78 port		DJ Delorie		<dj@redhat.com>
  rs6000/powerpc port	David Edelsohn		<dje.gcc@gmail.com>
  rs6000/powerpc port	Segher Boessenkool	<segher@kernel.crashing.org>
--- 89,101 ----
  nds32 port		Shiva Chen		<shiva0217@gmail.com>
  nios2 port		Chung-Lin Tang		<cltang@codesourcery.com>
  nios2 port		Sandra Loosemore	<sandra@codesourcery.com>
! nvptx port		Tom de Vries		<tom@codesourcery.com>
  pdp11 port		Paul Koning		<ni1d@arrl.net>
! powerpcspe port		Andrew Jenner		<andrew@codesourcery.com>
  riscv port		Kito Cheng		<kito.cheng@gmail.com>
! riscv port		Palmer Dabbelt		<palmer@sifive.com>
  riscv port		Andrew Waterman		<andrew@sifive.com>
+ riscv port		Jim Wilson		<jimw@sifive.com>
  rl78 port		DJ Delorie		<dj@redhat.com>
  rs6000/powerpc port	David Edelsohn		<dje.gcc@gmail.com>
  rs6000/powerpc port	Segher Boessenkool	<segher@kernel.crashing.org>
*************** rx port			Nick Clifton		<nickc@redhat.co
*** 99,109 ****
  s390 port		Hartmut Penner		<hepenner@us.ibm.com>
  s390 port		Ulrich Weigand		<uweigand@de.ibm.com>
  s390 port		Andreas Krebbel		<Andreas.Krebbel@de.ibm.com>
- score port		Chen Liqin		<liqin.gcc@gmail.com>
  sh port			Alexandre Oliva		<aoliva@redhat.com>
- sh port			Kaz Kojima		<kkojima@gcc.gnu.org>
  sh port			Oleg Endo		<olegendo@gcc.gnu.org>
- sparc port		Richard Henderson	<rth@redhat.com>
  sparc port		David S. Miller		<davem@redhat.com>
  sparc port		Eric Botcazou		<ebotcazou@libertysurf.fr>
  spu port		Trevor Smigiel		<trevor_smigiel@playstation.sony.com>
--- 104,111 ----
*************** RTEMS Ports		Ralf Corsepius		<ralf.corse
*** 136,151 ****
  RTEMS Ports		Sebastian Huber		<sebastian.huber@embedded-brains.de>
  VMS			Douglas Rupp		<douglas.b.rupp@gmail.com>
  VMS			Tristan Gingold		<tgingold@free.fr>
- VxWorks ports		Nathan Sidwell		<nathan@acm.org>
  VxWorks ports		Olivier Hainque		<hainque@adacore.com>
  cygwin, mingw-w64	Jonathan Yong		<10walls@gmail.com>
  
  			Language Front Ends Maintainers
  
  C front end/ISO C99	Joseph Myers		<joseph@codesourcery.com>
- C front end/ISO C99	Richard Henderson	<rth@redhat.com>
  Ada front end		Arnaud Charlet		<charlet@adacore.com>
  Ada front end		Eric Botcazou		<ebotcazou@libertysurf.fr>
  BRIG (HSAIL) front end	Pekka Jääskeläinen	<pekka.jaaskelainen@parmance.com>
  BRIG (HSAIL) front end 	Martin Jambor		<mjambor@suse.cz>
  c++			Jason Merrill		<jason@redhat.com>
--- 138,152 ----
  RTEMS Ports		Sebastian Huber		<sebastian.huber@embedded-brains.de>
  VMS			Douglas Rupp		<douglas.b.rupp@gmail.com>
  VMS			Tristan Gingold		<tgingold@free.fr>
  VxWorks ports		Olivier Hainque		<hainque@adacore.com>
  cygwin, mingw-w64	Jonathan Yong		<10walls@gmail.com>
  
  			Language Front Ends Maintainers
  
  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		Pierre-Marie de Rodat	<derodat@adacore.com>
  BRIG (HSAIL) front end	Pekka Jääskeläinen	<pekka.jaaskelainen@parmance.com>
  BRIG (HSAIL) front end 	Martin Jambor		<mjambor@suse.cz>
  c++			Jason Merrill		<jason@redhat.com>
*************** fp-bit			Ian Lance Taylor	<ian@airs.com>
*** 164,170 ****
  libdecnumber		Ben Elliston		<bje@gnu.org>
  libgcc			Ian Lance Taylor	<ian@airs.com>
  libgo			Ian Lance Taylor	<ian@airs.com>
- libgomp			Richard Henderson	<rth@redhat.com>
  libgomp			Jakub Jelinek		<jakub@redhat.com>
  libiberty		DJ Delorie		<dj@redhat.com>
  libiberty		Ian Lance Taylor	<ian@airs.com>
--- 165,170 ----
*************** tree browser/unparser	Sebastian Pop		<se
*** 232,238 ****
  scev, data dependence	Sebastian Pop		<sebpop@gmail.com>
  profile feedback	Jan Hubicka		<hubicka@ucw.cz>
  reload			Ulrich Weigand		<uweigand@de.ibm.com>
- reload			Bernd Schmidt		<bschmidt@redhat.com>
  dfp.c, related		Ben Elliston		<bje@gnu.org>
  RTL optimizers		Eric Botcazou		<ebotcazou@libertysurf.fr>
  instruction combiner	Segher Boessenkool	<segher@kernel.crashing.org>
--- 232,237 ----
*************** testsuite		Rainer Orth		<ro@CeBiTec.Uni-
*** 245,251 ****
  testsuite		Mike Stump		<mikestump@comcast.net>
  register allocation	Vladimir Makarov	<vmakarov@redhat.com>
  gdbhooks.py		David Malcolm		<dmalcolm@redhat.com>
! SLSR			Bill Schmidt		<wschmidt@linux.vnet.ibm.com>
  jit			David Malcolm		<dmalcolm@redhat.com>
  pointer bounds checker	Ilya Enkovich		<enkovich.gnu@gmail.com>
  i386 MPX		Ilya Enkovich		<enkovich.gnu@gmail.com>
--- 244,250 ----
  testsuite		Mike Stump		<mikestump@comcast.net>
  register allocation	Vladimir Makarov	<vmakarov@redhat.com>
  gdbhooks.py		David Malcolm		<dmalcolm@redhat.com>
! SLSR			Bill Schmidt		<wschmidt@linux.ibm.com>
  jit			David Malcolm		<dmalcolm@redhat.com>
  pointer bounds checker	Ilya Enkovich		<enkovich.gnu@gmail.com>
  i386 MPX		Ilya Enkovich		<enkovich.gnu@gmail.com>
*************** check in changes outside of the parts of
*** 256,265 ****
  
  			Reviewers
  
- aarch64 port		James Greenhalgh	<james.greenhalgh@arm.com>
  arc port		Andrew Burgess		<andrew.burgess@embecosm.com>
  arc port		Claudiu Zissulescu	<claziss@synopsys.com>
- arm port		Kyrylo Tkachov		<kyrylo.tkachov@arm.com>
  C front end		Marek Polacek		<polacek@redhat.com>
  dataflow		Paolo Bonzini		<bonzini@gnu.org>
  dataflow		Seongbae Park		<seongbae.park@gmail.com>
--- 255,262 ----
*************** Pedro Alves					<palves@redhat.com>
*** 309,314 ****
--- 306,312 ----
  Raksit Ashok					<raksit@google.com>
  Matt Austern					<austern@google.com>
  David Ayers					<ayers@fsfe.org>
+ Prakhar Bahuguna				<prakhar.bahuguna@arm.com>
  Giovanni Bajo					<giovannibajo@gcc.gnu.org>
  Simon Baldwin					<simonb@google.com>
  Scott Bambrough					<scottb@netwinder.org>
*************** Bin Cheng					<bin.cheng@arm.com>
*** 349,354 ****
--- 347,353 ----
  Harshit Chopra					<harshit@google.com>
  Tamar Christina					<tamar.christina@arm.com>
  Eric Christopher				<echristo@gmail.com>
+ Paul Clarke					<pc@us.ibm.com>
  William Cohen					<wcohen@redhat.com>
  Michael Collison				<michael.collison@arm.com>
  Josh Conner					<joshconner@google.com>
*************** Ludovic Courtès					<ludo@gnu.org>
*** 358,364 ****
--- 357,365 ----
  Lawrence Crowl					<crowl@google.com>
  Ian Dall					<ian@beware.dropbear.id.au>
  David Daney					<david.daney@caviumnetworks.com>
+ Robin Dapp					<rdapp@linux.vnet.ibm.com>
  Simon Dardis					<simon.dardis@imgtec.com>
+ Sudakshina Das					<sudi.das@arm.com>
  Bud Davis					<jmdavis@link.com>
  Chris Demetriou					<cgd@google.com>
  Sameera Deshpande				<sameera.deshpande@arm.com>
*************** Nathan Froyd					<froydnj@gcc.gnu.org>
*** 388,393 ****
--- 389,395 ----
  Chao-ying Fu					<fu@mips.com>
  Gary Funck					<gary@intrepid.com>
  Pompapathi V Gadad				<Pompapathi.V.Gadad@nsc.com>
+ Eric Gallager					<egall@gwmail.gwu.edu>
  Gopalasubramanian Ganesh			<Ganesh.Gopalasubramanian@amd.com>
  Kaveh Ghazi					<ghazi@gcc.gnu.org>
  Doug Gilmore					<Doug.Gilmore@imgtec.com>
*************** Torbjorn Granlund				<tege@swox.com>
*** 400,405 ****
--- 402,408 ----
  Anthony Green					<green@redhat.com>
  Doug Gregor					<doug.gregor@gmail.com>
  Matthew Gretton-Dann				<matthew.gretton-dann@arm.com>
+ Yury Gribov					<tetra2005@gmail.com>
  Jon Grimm					<jgrimm2@us.ibm.com>
  Laurent Guerby					<laurent@guerby.net>
  Xuepeng Guo					<terry.guo@arm.com>
*************** Mark Heffernan					<meheff@google.com>
*** 416,421 ****
--- 419,425 ----
  George Helffrich				<george@gcc.gnu.org>
  Daniel Hellstrom				<daniel@gaisler.com>
  Fergus Henderson				<fjh@cs.mu.oz.au>
+ Richard Henderson				<rth@twiddle.net>
  Stuart Henderson				<shenders@gcc.gnu.org>
  Matthew Hiller					<hiller@redhat.com>
  Kazu Hirata					<kazu@codesourcery.com>
*************** Andi Kleen					<andi@firstfloor.org>
*** 449,455 ****
--- 453,462 ----
  Jeff Knaggs					<jknaggs@redhat.com>
  Michael Koch					<konqueror@gmx.de>
  Nicolas Koenig					<koenigni@student.ethz.ch>
+ Kaz Kojima					<kkojima@gcc.gnu.org>
+ Boris Kolpackov                                 <boris@codesynthesis.com>
  Dave Korn					<dave.korn.cygwin@gmail.com>
+ Julia Koval					<julia.koval@intel.com>
  Matt Kraai					<kraai@ftbfs.org>
  Jan Kratochvil					<jan.kratochvil@redhat.com>
  Louis Krupp					<louis.krupp@zoho.com>
*************** James Lemke					<jim@lemke.org>
*** 472,481 ****
--- 479,490 ----
  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>
+ Sheldon Lobo					<sheldon.lobo@oracle.com
  Gabor Loki					<loki@inf.u-szeged.hu>
  Sandra Loosemore				<sandra@codesourcery.com>
  Manuel López-Ibáñez				<manu@gcc.gnu.org>
*************** James A. Morrison				<phython@gcc.gnu.or
*** 508,520 ****
  Brooks Moses					<bmoses@google.com>
  Dirk Mueller					<dmueller@suse.de>
  Phil Muldoon					<pmuldoon@redhat.com>
  Szabolcs Nagy					<szabolcs.nagy@arm.com>
  Quentin Neill					<quentin.neill.gnu@gmail.com>
  Adam Nemet					<adambnemet@gmail.com>
  Thomas Neumann					<tneumann@users.sourceforge.net>
  Dan Nicolaescu					<dann@ics.uci.edu>
  Kelvin Nilsen					<kdnilsen@linux.vnet.ibm.com>
! James Norris					<jnorris@codesourcery.com>
  Diego Novillo					<dnovillo@google.com>
  Dorit Nuzman					<dorit@il.ibm.com>
  David O'Brien					<obrien@FreeBSD.org>
--- 517,530 ----
  Brooks Moses					<bmoses@google.com>
  Dirk Mueller					<dmueller@suse.de>
  Phil Muldoon					<pmuldoon@redhat.com>
+ Steven Munroe					<munroesj52@gmail.com>
  Szabolcs Nagy					<szabolcs.nagy@arm.com>
  Quentin Neill					<quentin.neill.gnu@gmail.com>
  Adam Nemet					<adambnemet@gmail.com>
  Thomas Neumann					<tneumann@users.sourceforge.net>
  Dan Nicolaescu					<dann@ics.uci.edu>
  Kelvin Nilsen					<kdnilsen@linux.vnet.ibm.com>
! James Norris
  Diego Novillo					<dnovillo@google.com>
  Dorit Nuzman					<dorit@il.ibm.com>
  David O'Brien					<obrien@FreeBSD.org>
*************** Braden Obrzut					<admin@maniacsvault.ne
*** 522,535 ****
--- 532,549 ----
  Carlos O'Donell					<carlos@redhat.com>
  Peter O'Gorman					<pogma@thewrittenword.com>
  Andrea Ornstein					<andrea.ornstein@st.com>
+ Maxim Ostapenko					<m.ostapenko@samsung.com>
  Patrick Palka					<ppalka@gcc.gnu.org>
  Devang Patel					<dpatel@apple.com>
  Andris Pavenis					<andris.pavenis@iki.fi>
  Fernando Pereira				<pronesto@gmail.com>
+ Sebastian Perta					<sebastian.perta@renesas.com>
+ Sebastian Peryt					<sebastian.peryt@intel.com>
  Kaushik Phatak					<kaushik.phatak@kpitcummins.com>
  Nicolas Pitre					<nico@cam.org>
  Paul Pluzhnikov					<ppluzhnikov@google.com>
  Antoniu Pop					<antoniu.pop@gmail.com>
+ Siddhesh Poyarekar				<siddhesh@sourceware.org>
  Vidya Praveen					<vidyapraveen@arm.com>
  Thomas Preud'homme				<thomas.preudhomme@arm.com>
  Vladimir Prus					<vladimir@codesourcery.com>
*************** Hariharan Sandanagobalane			<hariharan.g
*** 554,564 ****
  Iain Sandoe					<iain@codesourcery.com>
  Duncan Sands					<baldrick@gcc.gnu.org>
  Sujoy Saraswati					<sujoy.saraswati@hpe.com>
! Trevor Saunders					<tsaunders@mozilla.com>
! Aaron Sawdey					<acsawdey@linux.vnet.ibm.com>
  Roger Sayle					<roger@eyesopen.com>
  Will Schmidt					<will_schmidt@vnet.ibm.com>
- William Schmidt					<wschmidt@linux.vnet.ibm.com>
  Tilo Schwarz					<tilo@tilo-schwarz.de>
  Martin Sebor					<msebor@gcc.gnu.org>
  Svein Seldal					<svein@dev.seldal.com>
--- 568,577 ----
  Iain Sandoe					<iain@codesourcery.com>
  Duncan Sands					<baldrick@gcc.gnu.org>
  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>
  Tilo Schwarz					<tilo@tilo-schwarz.de>
  Martin Sebor					<msebor@gcc.gnu.org>
  Svein Seldal					<svein@dev.seldal.com>
*************** Caroline Tice					<cmtice@google.com>
*** 595,602 ****
--- 608,617 ----
  Kai Tietz					<ktietz70@googlemail.com>
  Ilya Tocar					<tocarip@gmail.com>
  Philipp Tomsich					<philipp.tomsich@theobroma-systems.com>
+ Daniel Towner					<dant@picochip.com>
  Konrad Trifunovic				<konrad.trifunovic@inria.fr>
  Markus Trippelsdorf				<markus@trippelsdorf.de>
+ Igor Tsimbalist					<igor.v.tsimbalist@intel.com>
  Martin Uecker					<uecker@eecs.berkeley.edu>
  David Ung					<davidu@mips.com>
  Neil Vachharajani				<nvachhar@gmail.com>
*************** David Yuste					<david.yuste@gmail.com>
*** 633,638 ****
--- 648,654 ----
  Kirill Yukhin					<kirill.yukhin@gmail.com>
  Adhemerval Zanella				<azanella@linux.vnet.ibm.com>
  Yufeng Zhang					<yufeng.zhang@arm.com>
+ Qing Zhao					<qing.zhao@oracle.com>
  Shujing Zhao					<pearly.zhao@oracle.com>
  Jon Ziegler					<jonz@apple.com>
  Roman Zippel					<zippel@linux-m68k.org>
diff -Nrcpad gcc-7.3.0/MD5SUMS gcc-8.1.0/MD5SUMS
*** gcc-7.3.0/MD5SUMS	Thu Jan 25 08:49:33 2018
--- gcc-8.1.0/MD5SUMS	Wed May  2 08:46:01 2018
***************
*** 1,5 ****
  # This file contains the MD5 checksums of the files in the 
! # gcc-7.3.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-8.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
*************** e399c6eed967a5699498feb798da61ee  .gitat
*** 17,68 ****
  fe60d87048567d4fe8c8a0ed2448bcc8  COPYING.RUNTIME
  d32239bcb673463ab874e80d47fae504  COPYING3
  6a6a8e020838b23406c81b19c1d46df6  COPYING3.LIB
! 39d8e9d7c99bd16667b246685a1cf73c  ChangeLog
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! b61a488919c46f3d85d5632b7822144f  INSTALL/binaries.html
! f31c9b7e2c6b5c9036d2585c89212669  INSTALL/build.html
! 389768a39e48dac67ac477e6ec089bf0  INSTALL/configure.html
! c006991610497e0d1e2eb3ddbae3abc0  INSTALL/download.html
! 25ac1b699f90536f5a5366fbb4c9cce6  INSTALL/finalinstall.html
! 6cd4943d3fd0a684344aa9501c1f6a92  INSTALL/gfdl.html
! 990bc554f2ec342c9c2e7ee8d2214836  INSTALL/index.html
! 5298546b61e638e7afdea2f506a9c6a6  INSTALL/old.html
! af9fd8189c1230a90586b250985c4b4b  INSTALL/prerequisites.html
! 213df43fe2cf1e44974b6e79782df83a  INSTALL/specific.html
! 46d726564091e71e397f3cb6cf879bac  INSTALL/test.html
! 462df5a60f72bc71d76c1b3b10d4ba39  LAST_UPDATED
! b7046438c5076ff5c22da3f713c55819  MAINTAINERS
! cf9f2757ce84b3623a2c25cd96e2630f  Makefile.def
! 38d4e84f45aef7dc5e4cce9befc6252d  Makefile.in
! 2233eb495f622e1cbca6f0e111f96048  Makefile.tpl
! 972c92d6308b2dac738cde26cd967669  NEWS
  80d26bc3b1ad4f6969a96a24c9181bf5  README
  500b9244caa7a7ab23ece1db37efa76d  compile
  cb74b6c8a93f1e46388212f44c60afed  config-ml.in
! 07fc7c2000154cc8d5bd1211bad7a65b  config.guess
  040359150cf11493f973a46d8a25b06b  config.rpath
! 3e5a5bd82d324a14f895209750e785b8  config.sub
! 6bf19c8f0c03861768d542b3d36649b4  config/ChangeLog
  0fcd4badfe2a2191778bdf5ab94aa40c  config/acinclude.m4
! 4e07b66e4e4b3c6e35ba2a752e1cd95d  config/acx.m4
  6b030f5cf640bdd401ea739f54a667f8  config/asmcfi.m4
  a6bf9c39c62222092ea6d5d8551c077f  config/ax_check_define.m4
  596c2296c23cda1b6445427d6c3ce3ad  config/bitfields.m4
  5c6a030699353abe2ff69294a495e4cd  config/bootstrap-O1.mk
  4d3304310a9b7b17872d6f644e1dd7c8  config/bootstrap-O3.mk
  f0d17f3362caa1926e231994168f1e8d  config/bootstrap-asan.mk
  3be755875df9da02eb4b0a9badd414f1  config/bootstrap-debug-big.mk
  1999cda4a81e667104bc146b3968eb4d  config/bootstrap-debug-ckovw.mk
! 57284952a449963da5b91c52608abc15  config/bootstrap-debug-lean.mk
  babb6167c05386834412652e8b27239e  config/bootstrap-debug-lib.mk
  9a194b56c06b616528d1e76306aa78e6  config/bootstrap-debug.mk
! 51f11c855db796505d386091d0a62f3a  config/bootstrap-lto-noplugin.mk
! bab664262307d9a6f3caa3dd468bf53e  config/bootstrap-lto.mk
  d4c12184dc04d16ce8f4e846810b7d43  config/bootstrap-mpx.mk
  f466ea6022e6627a2e3d94bb0cc7eeb9  config/bootstrap-time.mk
  dd28266897efa211a681c66b97d43927  config/bootstrap-ubsan.mk
  04bdbef77f5fd2e282f7dee0bde60444  config/codeset.m4
  b5a5c394536a15e50be1998bd341fd02  config/depstand.m4
  de7f31c1daa932fa37c9415df986d97e  config/dfp.m4
--- 17,70 ----
  fe60d87048567d4fe8c8a0ed2448bcc8  COPYING.RUNTIME
  d32239bcb673463ab874e80d47fae504  COPYING3
  6a6a8e020838b23406c81b19c1d46df6  COPYING3.LIB
! af3fb9fb958c3b14a027534355db23d7  ChangeLog
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 5b14196f81e49f53d8f96aeb90162bab  INSTALL/binaries.html
! 1061c278432164b24d20b5881aee3ba3  INSTALL/build.html
! 0d5d2a4a5f9133d648981b298d110c1c  INSTALL/configure.html
! 5037ddfa8d1cf71e90be9a512bc5cb56  INSTALL/download.html
! fadef6983666ddba1a39fb3379dd56d5  INSTALL/finalinstall.html
! 9ab8dc698dcdcdbb1a887c5b9683dc53  INSTALL/gfdl.html
! 89937b68520a0d251ef06f3bc57e46e9  INSTALL/index.html
! 79991aa70caefc471970c9624fdeacb9  INSTALL/old.html
! 35cc15019d78870b0c98b3031e213add  INSTALL/prerequisites.html
! 8f93c80c88b1cfbf6b4f3c4ff15fb5a2  INSTALL/specific.html
! 02bd4c3d370be708fbd4fd88305ca643  INSTALL/test.html
! aafbc2dcdc94146837467b3028920443  LAST_UPDATED
! 9dd9f840026a28fd2ac8f123aa287829  MAINTAINERS
! 620a4fc4c5e9dcffd0bafd38536651e2  Makefile.def
! a07d40fad9f7fe5dfc303895a00a1bbe  Makefile.in
! c810f503e2367f1389bb607f999d4239  Makefile.tpl
! 6011b39249068fffc2621c2edb46bfb8  NEWS
  80d26bc3b1ad4f6969a96a24c9181bf5  README
  500b9244caa7a7ab23ece1db37efa76d  compile
  cb74b6c8a93f1e46388212f44c60afed  config-ml.in
! 0f6ce63fd3db85c1f6cefec2bb848b41  config.guess
  040359150cf11493f973a46d8a25b06b  config.rpath
! 0b16e97e0e2c87cb5ed8832950caf27e  config.sub
! 977e5d7216547502a4f0e14d70df9845  config/ChangeLog
  0fcd4badfe2a2191778bdf5ab94aa40c  config/acinclude.m4
! 2ea0edfde0ce5ce69b49317a5650f048  config/acx.m4
  6b030f5cf640bdd401ea739f54a667f8  config/asmcfi.m4
  a6bf9c39c62222092ea6d5d8551c077f  config/ax_check_define.m4
  596c2296c23cda1b6445427d6c3ce3ad  config/bitfields.m4
  5c6a030699353abe2ff69294a495e4cd  config/bootstrap-O1.mk
  4d3304310a9b7b17872d6f644e1dd7c8  config/bootstrap-O3.mk
  f0d17f3362caa1926e231994168f1e8d  config/bootstrap-asan.mk
+ 696b71cc336927f298a69c5b9321910b  config/bootstrap-cet.mk
  3be755875df9da02eb4b0a9badd414f1  config/bootstrap-debug-big.mk
  1999cda4a81e667104bc146b3968eb4d  config/bootstrap-debug-ckovw.mk
! 5b51c3ad4e0286a41fe1020cf7e252f0  config/bootstrap-debug-lean.mk
  babb6167c05386834412652e8b27239e  config/bootstrap-debug-lib.mk
  9a194b56c06b616528d1e76306aa78e6  config/bootstrap-debug.mk
! 5241ed32e4a458c787fa154423b5409f  config/bootstrap-lto-noplugin.mk
! e2fb31179c5098c59479b3420b138d44  config/bootstrap-lto.mk
  d4c12184dc04d16ce8f4e846810b7d43  config/bootstrap-mpx.mk
  f466ea6022e6627a2e3d94bb0cc7eeb9  config/bootstrap-time.mk
  dd28266897efa211a681c66b97d43927  config/bootstrap-ubsan.mk
+ 197020547d9441bc0fed105dd9ad7822  config/cet.m4
  04bdbef77f5fd2e282f7dee0bde60444  config/codeset.m4
  b5a5c394536a15e50be1998bd341fd02  config/depstand.m4
  de7f31c1daa932fa37c9415df986d97e  config/dfp.m4
*************** de7f31c1daa932fa37c9415df986d97e  config
*** 71,77 ****
  15b8d5adf53ad5ec75f055b193a6b1c2  config/extensions.m4
  8e54553a2c063659a749e0ef9e5348e4  config/futex.m4
  d3eafe382a46e6747e3644cf4a55d5cc  config/gc++filt.m4
! e953493530563ba52fc172006a172b8d  config/gcc-plugin.m4
  1282ef4331970c26224afd363968e276  config/gettext-sister.m4
  1a627bc39dc12ae705bd4136731da428  config/gettext.m4
  29c9c3d57667bc9e6f14d625b2cd5894  config/glibc21.m4
--- 73,79 ----
  15b8d5adf53ad5ec75f055b193a6b1c2  config/extensions.m4
  8e54553a2c063659a749e0ef9e5348e4  config/futex.m4
  d3eafe382a46e6747e3644cf4a55d5cc  config/gc++filt.m4
! 9495055af79ee43819009a4faf0df96b  config/gcc-plugin.m4
  1282ef4331970c26224afd363968e276  config/gettext-sister.m4
  1a627bc39dc12ae705bd4136731da428  config/gettext.m4
  29c9c3d57667bc9e6f14d625b2cd5894  config/glibc21.m4
*************** cd7034dccd04e50150b14c597dd545a5  config
*** 104,109 ****
--- 106,112 ----
  76d638a67d840715b2de89afee8ef49a  config/mh-ppc-aix
  bd6855445bd58ae7e066221ade8cc55d  config/mmap.m4
  59bd17b0aad6631e55578865d5828d70  config/mt-alphaieee
+ 0aeb00868c61b9095b7a4553c9637221  config/mt-android
  96289d06809692c31d71e69c4bedb6d7  config/mt-d30v
  5886463c7411d3bf8e57fcfa560b904d  config/mt-gnu
  1d7419534d43fda437ce0a4f0719ee5f  config/mt-mips-elfoabi
*************** c950e3234da1eb9ad5f29bc1c2d2ae74  config
*** 118,124 ****
  fa22f7e8f43ef5b6e9ab94ec570c2327  config/no-executables.m4
  33dbb41025b077c6a60f21ee9a6b6d7e  config/override.m4
  d31260ea4a04e5fe935a240278d5d02b  config/picflag.m4
! e545c5305bfa9d0f0f273281fd4c18bc  config/plugins.m4
  5413d2cdbde706860854a69f6fc12f81  config/po.m4
  b2d511a8a77414eda79bdee0daccfea8  config/proginstall.m4
  d3cecf02bb97035177818aefbb0e0833  config/progtest.m4
--- 121,127 ----
  fa22f7e8f43ef5b6e9ab94ec570c2327  config/no-executables.m4
  33dbb41025b077c6a60f21ee9a6b6d7e  config/override.m4
  d31260ea4a04e5fe935a240278d5d02b  config/picflag.m4
! a155332d4af74bcf3f4c52b4dbadca34  config/plugins.m4
  5413d2cdbde706860854a69f6fc12f81  config/po.m4
  b2d511a8a77414eda79bdee0daccfea8  config/proginstall.m4
  d3cecf02bb97035177818aefbb0e0833  config/progtest.m4
*************** e2dc6b4fd62b77bff96b7951ef74f78f  config
*** 134,176 ****
  5cabffc02a90bd9698105b9eef507f11  config/warnings.m4
  7ef51b0adb98e5c5f7aba46d2c7293f1  config/weakref.m4
  0163b672c888aaf1c8ad3e867a0ec9f1  config/zlib.m4
! d6ddde030a4686d740140dc1f5ed9952  configure
! 278ffc6b756f6d7bbb6520b724a3a37d  configure.ac
! 0fbbc88f666b4ad7a6424521daa61fb9  contrib/ChangeLog
  5fc435c7928f858246df931ea3f3ece7  contrib/ChangeLog.jit
  7af8d2979bf1a7cfa88e30d05fa22be2  contrib/ChangeLog.tree-ssa
! 41c532dfc353377dce9eb2fbaa3179fd  contrib/analyze_brprob.py
! fb95f3dda9fe5ee4b76c84c8377bd7b0  contrib/analyze_brprob_spec.py
  998cf407b76e1f4efe6919a56b59cd9f  contrib/check_GNU_style.sh
  c3763df74b9b0ad3498815e6a77dc5b4  contrib/check_makefile_deps.sh
  debdf0b8904f5982062eef19a66b07dd  contrib/check_warning_flags.sh
  52667bcf9571134b34a2f1cc392fa688  contrib/clang-format
  2bbe2a04b9be01a5ef657b844f2c5780  contrib/compare-all-tests
  52ddcac68b5afa5af892813e2c6d2b49  contrib/compare-debug
  bc8bc1290a409ac41a763005f95b5758  contrib/compareSumTests3
! 39210d5d4c4e80820721a202d38c7e7c  contrib/compare_tests
  e2e52abbbb307e16e160946e13bbe530  contrib/compare_two_ftime_report_sets
! f3ea265806bbdb70821acebfc41e6585  contrib/config-list.mk
! f2ca7b2fcab4618447996996322c174f  contrib/dg-cmp-results.sh
  ce104581c03173eafb628441d5aed070  contrib/dg-extract-results.py
  8d2e2d50ec10ae553290a34df9c9c297  contrib/dg-extract-results.sh
  87ae17b353cdce921324af084ec6dcb1  contrib/dglib.pm
! 3908d27b537a5b2412ebecdbe29740b4  contrib/download_prerequisites
! 1630984090f8c7ed66e5a977c20664cf  contrib/filter_gcc_for_doxygen
  db03e57377f9eb202b7b783eb81fe40d  contrib/filter_knr2ansi.pl
! 2e831f673656f3052f95930c3203cce9  contrib/filter_params.pl
! 480dbaa133b74e68d41762d6596bd034  contrib/gcc.doxy
  55236e85d8087042189b701cd05d84be  contrib/gcc_build
! 958f0f7983eacfca31ec1636c6b0f416  contrib/gcc_update
! 8db75b60045749d54e598598d8883638  contrib/gen_autofdo_event.py
! 8d5fd6a30a05940f4fb9383e2ea15a97  contrib/gennews
  2d35f147fc45f270eb169156cf7550e0  contrib/gimple.vim
  59304fc08afa489baa6b920cc76dc625  contrib/gthr_supp_vxw_5x.c
! e62be1387abc131961dc94e9bcd0cd9f  contrib/header-tools/ChangeLog
  1ba821a1e480c2f8ac33b68ca1097770  contrib/header-tools/README
  05ef7fb87e90ba93ee04659be072a357  contrib/header-tools/count-headers
  ba0485a3c721bce9e32407ef996d2a9d  contrib/header-tools/gcc-order-headers
! bd8fa1f929df7c21bfe191427fa5142e  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
--- 137,181 ----
  5cabffc02a90bd9698105b9eef507f11  config/warnings.m4
  7ef51b0adb98e5c5f7aba46d2c7293f1  config/weakref.m4
  0163b672c888aaf1c8ad3e867a0ec9f1  config/zlib.m4
! a2a274a8ee83e34774f7a8974c23e0cf  configure
! d6c493da635718ff62d768fc8ab5111f  configure.ac
! 702df5c7aa0fd398382ee9b5642993ec  contrib/ChangeLog
  5fc435c7928f858246df931ea3f3ece7  contrib/ChangeLog.jit
  7af8d2979bf1a7cfa88e30d05fa22be2  contrib/ChangeLog.tree-ssa
! 8498c0cdfe3f444ad6f540ec9e11cbec  contrib/analyze_brprob.py
! 70c4cbdda692e5a2727a91c4c9b64046  contrib/analyze_brprob_spec.py
! 5e2ff01f3f3129b3e9ca90a9d0043b05  contrib/check_GNU_style.py
  998cf407b76e1f4efe6919a56b59cd9f  contrib/check_GNU_style.sh
+ d70618932080216b97002e7e2301153c  contrib/check_GNU_style_lib.py
  c3763df74b9b0ad3498815e6a77dc5b4  contrib/check_makefile_deps.sh
  debdf0b8904f5982062eef19a66b07dd  contrib/check_warning_flags.sh
  52667bcf9571134b34a2f1cc392fa688  contrib/clang-format
  2bbe2a04b9be01a5ef657b844f2c5780  contrib/compare-all-tests
  52ddcac68b5afa5af892813e2c6d2b49  contrib/compare-debug
  bc8bc1290a409ac41a763005f95b5758  contrib/compareSumTests3
! f0592c1e8e696f48102d6210e19aa57b  contrib/compare_tests
  e2e52abbbb307e16e160946e13bbe530  contrib/compare_two_ftime_report_sets
! b612ff447f0565ffb4e11132b61c9ab9  contrib/config-list.mk
! 9ca3a626f46a9c208cb763b9eeac9ecd  contrib/dg-cmp-results.sh
  ce104581c03173eafb628441d5aed070  contrib/dg-extract-results.py
  8d2e2d50ec10ae553290a34df9c9c297  contrib/dg-extract-results.sh
  87ae17b353cdce921324af084ec6dcb1  contrib/dglib.pm
! 959d4f4ded446c5271f703fd607d1ff2  contrib/download_prerequisites
! 080dea8d6b4a4c8c6bf8ae7b8ecf15a6  contrib/filter_gcc_for_doxygen
  db03e57377f9eb202b7b783eb81fe40d  contrib/filter_knr2ansi.pl
! b038940be99369232106ef9e9b15bee3  contrib/filter_params.py
! dfceb883caf21f3071f7309ee0ac8a6b  contrib/gcc.doxy
  55236e85d8087042189b701cd05d84be  contrib/gcc_build
! 348fbf0368812a48cf6f92e113b771cc  contrib/gcc_update
! 61ad7a180a7895f83d32ef7b15cb8386  contrib/gen_autofdo_event.py
! 81de5df29d666c99588d7fe2e7559687  contrib/gennews
  2d35f147fc45f270eb169156cf7550e0  contrib/gimple.vim
  59304fc08afa489baa6b920cc76dc625  contrib/gthr_supp_vxw_5x.c
! 1ed70a52605657d3f7755ff734e24d3c  contrib/header-tools/ChangeLog
  1ba821a1e480c2f8ac33b68ca1097770  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
*************** a7318fa2f0580c3a0d5dd4b14e4d0e0d  contri
*** 182,194 ****
  43e3d77ae19b5c6304d6d6846792c173  contrib/make-obstacks-texi.pl
  652b57f03f525e02ceac3dee8f672204  contrib/make_sunver.pl
  bd49fb9eed9f0a5344158e834dd6f468  contrib/mark_spam.py
! 582e8acc7043c6d0a6563f49bcc63e5a  contrib/mklog
  0fb5c8c3cd465d8bd57b55b2548c683a  contrib/paranoia.cc
  a34668cfad9dec733354503fbc67fb24  contrib/patch_tester.sh
  87a19b40fbd220938cf6c23c42c255e2  contrib/prepare_patch.sh
! 959cb8ef692d41f5b4e0bb200810e0c6  contrib/prerequisites.md5
! 422c59c5fe9228a3dec0f7c819d63fc1  contrib/prerequisites.sha512
! 6dc4332e8cfbafbf1a3f974db35c27bc  contrib/reghunt/ChangeLog
  cf247a580e49d212518de409793db0a8  contrib/reghunt/bin/gcc-build-full
  724e70ea3e80f87f2a201bbe2f1eef37  contrib/reghunt/bin/gcc-build-simple
  3f2318bae7562a4ad1639e686916a545  contrib/reghunt/bin/gcc-cleanup
--- 187,200 ----
  43e3d77ae19b5c6304d6d6846792c173  contrib/make-obstacks-texi.pl
  652b57f03f525e02ceac3dee8f672204  contrib/make_sunver.pl
  bd49fb9eed9f0a5344158e834dd6f468  contrib/mark_spam.py
! 7a124bf663a49de275cd27683e958c43  contrib/mklog
! fc4965b52fd7de27941bf5183aa1ece9  contrib/mklog.pl
  0fb5c8c3cd465d8bd57b55b2548c683a  contrib/paranoia.cc
  a34668cfad9dec733354503fbc67fb24  contrib/patch_tester.sh
  87a19b40fbd220938cf6c23c42c255e2  contrib/prepare_patch.sh
! a6f2829359f65be5c182fd414e30fe8a  contrib/prerequisites.md5
! 663d159a25cdcd62d1182f124f0dae82  contrib/prerequisites.sha512
! d2ec20bff0af0db86ea52cb2668998f4  contrib/reghunt/ChangeLog
  cf247a580e49d212518de409793db0a8  contrib/reghunt/bin/gcc-build-full
  724e70ea3e80f87f2a201bbe2f1eef37  contrib/reghunt/bin/gcc-build-simple
  3f2318bae7562a4ad1639e686916a545  contrib/reghunt/bin/gcc-cleanup
*************** f251d49dd87647250fcd74dd50b7835f  contri
*** 247,253 ****
  e2829fc4af4f433a6a328a62d5ce8066  contrib/reghunt/examples/reg-watch
  afd863c2ec84c906e20f9b9787b1f0fe  contrib/reghunt/examples/reg-watch.awk
  8955535523d4b5f48006bcb851ba9b4b  contrib/reghunt/examples/testall
! 96db372721f47dc0f79a329894664886  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
--- 253,259 ----
  e2829fc4af4f433a6a328a62d5ce8066  contrib/reghunt/examples/reg-watch
  afd863c2ec84c906e20f9b9787b1f0fe  contrib/reghunt/examples/reg-watch.awk
  8955535523d4b5f48006bcb851ba9b4b  contrib/reghunt/examples/testall
! c197c916d1bce3f6b2896d830d671023  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
*************** dc562ddb86567c65e82953825713dc4b  contri
*** 263,297 ****
  7f6418948396f8250447e3e6182322d8  contrib/repro_fail
  39442479834f1c02d6ce11eab6889b6e  contrib/test_installed
  2c2a06a23394c548bb4afba3c25aacce  contrib/test_recheck
! c619e84bad79c6103190d13e243e923e  contrib/test_summary
  45bd745cf293127fa6b729c7b58cf11f  contrib/testsuite-management/validate_failures.py
  0202e4875fa43ec09cf5e8442c873a56  contrib/testsuite-management/x86_64-unknown-linux-gnu.xfail
  2c5264fb1400a0a2408fd44a4e345fc6  contrib/texi2pod.pl
  13955dc4ee3f74718a3869155e474db6  contrib/uninclude
! db934a41ee73c66dbdde7290d85e547d  contrib/update-copyright.py
  45d4839f2ac702761b88d502311d47ef  contrib/vimrc
! 52ed3669ef691d1606b2d8849f05cc6e  contrib/warn_summary
  8b59f0d0a2dcdced14765c514fbad719  depcomp
! 5bdfb0fdb873c68aeea26c094463ce00  fixincludes/ChangeLog
  6de190723745dc3f75080144dfa2215e  fixincludes/Makefile.in
  b6e3f4950abc6e254b467063381f6473  fixincludes/README
  455903ad4ff71fa5c5340ef7ae41a0e6  fixincludes/README-fixinc
  d7d8848cf7aae26a8e84536be1613e96  fixincludes/aclocal.m4
  06c68af3013771f49738a0ade1579050  fixincludes/check.tpl
  4f0cff44689cac00e5599c785c1be9f4  fixincludes/config.h.in
! 78147b7eb0f603ee5a49696c2d18497d  fixincludes/configure
  860f2cdd7712f7adc848cb2407e15c94  fixincludes/configure.ac
  541ba3a63f9359f14ac2b35151ba18db  fixincludes/fixfixes.c
! 7aba8b93c5233bc3247ff32e0e7cfe03  fixincludes/fixinc.in
  1582ffd94ecc91318eebfb3b81e0bcb1  fixincludes/fixincl.c
  adf245e3714f799eafba40af16be8eb5  fixincludes/fixincl.tpl
! c5143fb72444bda3dfd3d044d2465eac  fixincludes/fixincl.x
  545875b4fe1c26bc3e1befc75b34e9f5  fixincludes/fixlib.c
  620c770139fc32c75b975b614d3156e8  fixincludes/fixlib.h
  5b2c1fd3ef9d44fb6beb1a0d45ddd533  fixincludes/fixopts.c
  ed1415e9dbc8f421fd9288bde0d90ad1  fixincludes/fixtests.c
  6df145c7cea1e2099cf97a0d83564aca  fixincludes/genfixes
! e9bd4e9ed0967747e932abfab34c8f48  fixincludes/inclhack.def
  44bfe955e0fad29af749b16cd12fa743  fixincludes/mkfixinc.sh
  5f9960cfe65b2e6bef658f770e52dfef  fixincludes/mkheaders.in
  3aa0563cd682ee61ecd9eb6eea0b0bce  fixincludes/procopen.c
--- 269,303 ----
  7f6418948396f8250447e3e6182322d8  contrib/repro_fail
  39442479834f1c02d6ce11eab6889b6e  contrib/test_installed
  2c2a06a23394c548bb4afba3c25aacce  contrib/test_recheck
! d4cd6e25d218d26c1eb5aca9e7b82de3  contrib/test_summary
  45bd745cf293127fa6b729c7b58cf11f  contrib/testsuite-management/validate_failures.py
  0202e4875fa43ec09cf5e8442c873a56  contrib/testsuite-management/x86_64-unknown-linux-gnu.xfail
  2c5264fb1400a0a2408fd44a4e345fc6  contrib/texi2pod.pl
  13955dc4ee3f74718a3869155e474db6  contrib/uninclude
! a215e6682085a99499f7caeb741d06e5  contrib/update-copyright.py
  45d4839f2ac702761b88d502311d47ef  contrib/vimrc
! da7aeedeb5a86ee6f5982e559a2d6dcc  contrib/warn_summary
  8b59f0d0a2dcdced14765c514fbad719  depcomp
! 6c9f30b3078fc8f116fdb1b2b1448a21  fixincludes/ChangeLog
  6de190723745dc3f75080144dfa2215e  fixincludes/Makefile.in
  b6e3f4950abc6e254b467063381f6473  fixincludes/README
  455903ad4ff71fa5c5340ef7ae41a0e6  fixincludes/README-fixinc
  d7d8848cf7aae26a8e84536be1613e96  fixincludes/aclocal.m4
  06c68af3013771f49738a0ade1579050  fixincludes/check.tpl
  4f0cff44689cac00e5599c785c1be9f4  fixincludes/config.h.in
! a047119816700b0c31847ca6f4f52aab  fixincludes/configure
  860f2cdd7712f7adc848cb2407e15c94  fixincludes/configure.ac
  541ba3a63f9359f14ac2b35151ba18db  fixincludes/fixfixes.c
! 8a18294371ee69da33042b874d27b77e  fixincludes/fixinc.in
  1582ffd94ecc91318eebfb3b81e0bcb1  fixincludes/fixincl.c
  adf245e3714f799eafba40af16be8eb5  fixincludes/fixincl.tpl
! 221997491bff1cbeda6e439cb37e2bdb  fixincludes/fixincl.x
  545875b4fe1c26bc3e1befc75b34e9f5  fixincludes/fixlib.c
  620c770139fc32c75b975b614d3156e8  fixincludes/fixlib.h
  5b2c1fd3ef9d44fb6beb1a0d45ddd533  fixincludes/fixopts.c
  ed1415e9dbc8f421fd9288bde0d90ad1  fixincludes/fixtests.c
  6df145c7cea1e2099cf97a0d83564aca  fixincludes/genfixes
! d4f06d1dd56dee1976b145a88c0da74a  fixincludes/inclhack.def
  44bfe955e0fad29af749b16cd12fa743  fixincludes/mkfixinc.sh
  5f9960cfe65b2e6bef658f770e52dfef  fixincludes/mkheaders.in
  3aa0563cd682ee61ecd9eb6eea0b0bce  fixincludes/procopen.c
*************** cc3783f241fa992a305aced8e1195ee9  fixinc
*** 378,384 ****
  1ee4e2b61ae5781d35271f3181927037  fixincludes/tests/base/stdint.h
  d47412644cdea4f030ba2744eca6d8ad  fixincludes/tests/base/stdio.h
  1887d8bc1711dae9922852cda6027877  fixincludes/tests/base/stdio_tag.h
! 6b842aa18e09c73db745cbffa3cb34cf  fixincludes/tests/base/stdlib.h
  42a7de17fb8f2ac74bc30c7029199637  fixincludes/tests/base/string.h
  6931e261dc1cecb7983279cf909bd784  fixincludes/tests/base/strings.h
  127183621f8b29d6912c683be6102135  fixincludes/tests/base/sundev/vuid_event.h
--- 384,390 ----
  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
  6931e261dc1cecb7983279cf909bd784  fixincludes/tests/base/strings.h
  127183621f8b29d6912c683be6102135  fixincludes/tests/base/sundev/vuid_event.h
*************** a5e817d35ded04a0fb03999b50c0e89e  fixinc
*** 408,420 ****
  7dc68f10756f3c5df014326605fe9efe  fixincludes/tests/base/tinfo.h
  955462b555900ecd3934223c64e21fa7  fixincludes/tests/base/types/vxTypesBase.h
  c78e762f2c91f2af991feda7d3d7f4b2  fixincludes/tests/base/unistd.h
! fe8b9c2159f95655fcb76d514f36eaf1  gcc/ABOUT-GCC-NLS
! e1c4c580d0872637d2f7907b6395953e  gcc/BASE-VER
  59530bdf33659b29e73d4adb9f9f6552  gcc/COPYING
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! b85fa887c5bd7b99d7def78e968007d3  gcc/ChangeLog
  a3b63c675afa7a655cc2bfa8a907af79  gcc/ChangeLog-1997
  d9a88529352a010253c2e8fb1ed6023b  gcc/ChangeLog-1998
  240f08f81cb4699e8b49347db38233db  gcc/ChangeLog-1999
--- 414,426 ----
  7dc68f10756f3c5df014326605fe9efe  fixincludes/tests/base/tinfo.h
  955462b555900ecd3934223c64e21fa7  fixincludes/tests/base/types/vxTypesBase.h
  c78e762f2c91f2af991feda7d3d7f4b2  fixincludes/tests/base/unistd.h
! 1ee24522c0ca412fe52e980d97a14e74  gcc/ABOUT-GCC-NLS
! 676bfdc669e6352db41115b26b85e024  gcc/BASE-VER
  59530bdf33659b29e73d4adb9f9f6552  gcc/COPYING
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! 8d62ef828c2bd9f4daa2ebacd7e761d3  gcc/ChangeLog
  a3b63c675afa7a655cc2bfa8a907af79  gcc/ChangeLog-1997
  d9a88529352a010253c2e8fb1ed6023b  gcc/ChangeLog-1998
  240f08f81cb4699e8b49347db38233db  gcc/ChangeLog-1999
*************** e0b37ac47f082beb219cbc022f0f4ce3  gcc/Ch
*** 435,440 ****
--- 441,447 ----
  db5115f7e54850a9706e0354d5ae08d4  gcc/ChangeLog-2014
  9bfd535494a96a30af71a461055b49b2  gcc/ChangeLog-2015
  df9c831b1f0d6bde02941728f8f12da3  gcc/ChangeLog-2016
+ 8408f6bd975442a883c83a26f9d7f260  gcc/ChangeLog-2017
  99fbd9e13a4133855332bf21b0e8fc4c  gcc/ChangeLog.dataflow
  e36816ca56b2bbc8bfc358e0185fc1d3  gcc/ChangeLog.gimple-classes
  fb3fadb88e1d2b3b640cfaaa5ff11780  gcc/ChangeLog.graphite
*************** fb3fadb88e1d2b3b640cfaaa5ff11780  gcc/Ch
*** 443,461 ****
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! 37e1081e5d2b3e273dd2dfe3cdb46d47  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
  36698274bb69e2ada20f5cc434f3caa5  gcc/FSFChangeLog.11
! 6065e94f731578f1c9312bb93b2d306e  gcc/LANGUAGES
! 4a7cbe56579b6c39a7520798bc5e91b4  gcc/Makefile.in
  ec6799501b2eb2923d5de6a66169dbd2  gcc/ONEWS
! e582560d0bf728d88aed7e8d4a281453  gcc/README.Portability
! 3aab1d8a09402a2cfff7275fdfb6a31e  gcc/acinclude.m4
  9545fe83576dc99e441c64e268711730  gcc/aclocal.m4
! 9063d23e571fcde20283b9f34d5e3422  gcc/ada/9drpc.adb
! 968f2f977651b4d056b7cb62dc72b41f  gcc/ada/ChangeLog
  683be0b07dc4f64f118fd5e8ae9cb30d  gcc/ada/ChangeLog-2001
  7aff25efb203be4136b8776cdc812956  gcc/ada/ChangeLog-2002
  cd2379152000f40157d349018fb9364d  gcc/ada/ChangeLog-2003
--- 450,467 ----
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! 5abd30fa72f4df1eb53f0a313a33f739  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
  36698274bb69e2ada20f5cc434f3caa5  gcc/FSFChangeLog.11
! fd3c8bf53697d338b119daffaa28a665  gcc/LANGUAGES
! 3d61823af3fbda5cc7534bc7c5c27781  gcc/Makefile.in
  ec6799501b2eb2923d5de6a66169dbd2  gcc/ONEWS
! 4bf0c70e571b9a6a48471723c6fd95c7  gcc/README.Portability
! 4e17445717b172d487a1caa2f8300407  gcc/acinclude.m4
  9545fe83576dc99e441c64e268711730  gcc/aclocal.m4
! 514ac84a5fecf9afce218e5a2690fb01  gcc/ada/ChangeLog
  683be0b07dc4f64f118fd5e8ae9cb30d  gcc/ada/ChangeLog-2001
  7aff25efb203be4136b8776cdc812956  gcc/ada/ChangeLog-2002
  cd2379152000f40157d349018fb9364d  gcc/ada/ChangeLog-2003
*************** cb98e18d4548238540bce953ec52f828  gcc/ad
*** 472,4297 ****
  883cd0dde6c0eb2faf9b5b324feed782  gcc/ada/ChangeLog-2014
  6fc01d1be81d26290529db4473ee527f  gcc/ada/ChangeLog-2015
  6abffd5f75304a3ab87659193c8422f7  gcc/ada/ChangeLog-2016
  5598cfcecd6612ea21efddabbbe1ecc0  gcc/ada/ChangeLog.ptr
  2cf41efa2dee24b2dda73018b855edd3  gcc/ada/ChangeLog.tree-ssa
  a2eeb36cd2de35ce6a808c67a61edb7e  gcc/ada/Make-generated.in
  6c9c3b4249e781ed48c7ae55e8ef9999  gcc/ada/Makefile.in
! 00f421a4890f5d87c5a31c22c066b218  gcc/ada/Makefile.rtl
! ce4b0f7e58a7bbd41d461bc785435b71  gcc/ada/a-assert.adb
! 5b01c242c11b698b1f1dd1b90403746c  gcc/ada/a-assert.ads
! 7af841ab6305d1c05c72c6de96fc1d9f  gcc/ada/a-astaco.adb
! c13d27ec688dfebb1965a8e9eaf55c2c  gcc/ada/a-astaco.ads
! 504d54713c0816812d7c7630163b1512  gcc/ada/a-btgbso.adb
! 81b834f6b0cf08b1fa8f395258d9e91c  gcc/ada/a-btgbso.ads
! 5bcd441d2aac4d537ddc277ae6529d86  gcc/ada/a-calari.adb
! e685b95b8df306298a3177f5352d7cec  gcc/ada/a-calari.ads
! 4c42e7cf0ac974e9e24fa96f7d7a8d77  gcc/ada/a-calcon.adb
! 11e9d60774dace1c9e4822164c6725a0  gcc/ada/a-calcon.ads
! 99d80f15f36a97fa15bdaa8c2aebd0e1  gcc/ada/a-caldel.adb
! 6e3377e4cfa8ee6be7168c5b8246bc01  gcc/ada/a-caldel.ads
! 55f814470872b9bd37cc4f9360c7e2db  gcc/ada/a-calend.adb
! bffdd733c18cce1289333919ebd2470c  gcc/ada/a-calend.ads
! b14527e2d37beb7477c826f208e7db62  gcc/ada/a-calfor.adb
! dd1f42a5dcddedd5e2720b51f9412f44  gcc/ada/a-calfor.ads
! bab191f7df6b89bd647af328a3789ba4  gcc/ada/a-catizo.adb
! 521308dc456e94f0a96a6e4d2161a6cf  gcc/ada/a-catizo.ads
! 647d2538410aefc4d3f47524bcedf9a0  gcc/ada/a-cbdlli.adb
! 586f3897e35166b1fd7d509d772ffddc  gcc/ada/a-cbdlli.ads
! d494c1dcff82186b30449252bb41cf96  gcc/ada/a-cbhama.adb
! ee8a45e690be59661516c93fae45a7a5  gcc/ada/a-cbhama.ads
! d4e1170e9ead9158c860d883bea1fff5  gcc/ada/a-cbhase.adb
! a5f2823377e7a06f6415026618434c78  gcc/ada/a-cbhase.ads
! 1572b288956f0bd6f2fe03fb8f691a42  gcc/ada/a-cbmutr.adb
! e73ef08991555fe4ca51c0d968abfd10  gcc/ada/a-cbmutr.ads
! 4f9ad82350b88b968d038a75de13b58b  gcc/ada/a-cborma.adb
! f7dc50b3974c40203300859988ed3906  gcc/ada/a-cborma.ads
! 898db78811e92df7cff1102f48180da3  gcc/ada/a-cborse.adb
! d8eb22f6f08f349cdaa30822c489e66b  gcc/ada/a-cborse.ads
! 394a4ad651a91cf29f4db2c49ae0e69c  gcc/ada/a-cbprqu.adb
! 57fb1c8d1e4d30b2de9323ac2e3aff94  gcc/ada/a-cbprqu.ads
! 52ee82c6878c075d7196d0210e7ab50e  gcc/ada/a-cbsyqu.adb
! cf0fc17f9495c1a321a4cd2ce226b121  gcc/ada/a-cbsyqu.ads
! aec30dd10e8816c17de1637e18d7ab14  gcc/ada/a-cdlili.adb
! 938e24d7616ddb70d3bc173381e42402  gcc/ada/a-cdlili.ads
! 3d159f9c61bce7860be0b35a0e1f0507  gcc/ada/a-cfdlli.adb
! b544b9ceae7e1cb17d1f356d7efe455c  gcc/ada/a-cfdlli.ads
! b8eff5e6e083fd7cea5e607a2c25a2b0  gcc/ada/a-cfhama.adb
! 8a40e6f262727a68198996306eaeb214  gcc/ada/a-cfhama.ads
! e3c3e8487cbffb6866efb1910fb9a780  gcc/ada/a-cfhase.adb
! 583d7a57312ecbe304b666f138489656  gcc/ada/a-cfhase.ads
! 111a9c7b1548abcae9dc80503b7c33bb  gcc/ada/a-cfinve.adb
! 0f4e780d749b9510ad5e1495ae7e788b  gcc/ada/a-cfinve.ads
! 85927ad11ca5671de91b2745c560af95  gcc/ada/a-cforma.adb
! 196dfb31ea33fae7d6c1a63d21c70254  gcc/ada/a-cforma.ads
! 7c8376195735968083516149c6f6d0c3  gcc/ada/a-cforse.adb
! 4370648583763bd947ed90d26e0da74e  gcc/ada/a-cforse.ads
! 1a951be667825d7319a867ac0a17a914  gcc/ada/a-cgaaso.adb
! 3d824faf3cb548fbc47fb3ef827efd3b  gcc/ada/a-cgaaso.ads
! 76165eff1495fc6cd85dd522b8ed8ad7  gcc/ada/a-cgarso.adb
! c228c68b02c13bfba83a7b996edb1114  gcc/ada/a-cgarso.ads
! ed03d2284d0e141bc8aaa1c47c96b463  gcc/ada/a-cgcaso.adb
! 68226484befc5e389cd3dafaab608090  gcc/ada/a-cgcaso.ads
! ec513d9d31223cbb962c8dfe3bff645b  gcc/ada/a-chacon.adb
! 8de9c73987c9fe1a7577278acc23a759  gcc/ada/a-chacon.ads
! a668a61d71af06ac3cc48efeddf7b263  gcc/ada/a-chahan.adb
! 3e592ce4d9226834bdd979129e1059e7  gcc/ada/a-chahan.ads
! 00b37c98f6f96d2b5499c1f98cb503f0  gcc/ada/a-charac.ads
! afa2e1575497c9ce53cef7122846df58  gcc/ada/a-chlat1.ads
! 8c1f1ecf189ed29efec610cc0753a522  gcc/ada/a-chlat9.ads
! 099ea8a5740ba7d1f295635308ea3903  gcc/ada/a-chtgbk.adb
! 2bee7f4b44a7345967ba6807d8ef4717  gcc/ada/a-chtgbk.ads
! 5a24c81fc221b93a78e7cdc148545d86  gcc/ada/a-chtgbo.adb
! 6c1b4ee8210188223f11e95b438c648e  gcc/ada/a-chtgbo.ads
! 236833c31135410e5d806c22c182a474  gcc/ada/a-chtgke.adb
! fb5e8b7f6728e43c2a0d32f40b7f4376  gcc/ada/a-chtgke.ads
! 53588d382bd68efadcdf0a6612d1860d  gcc/ada/a-chtgop.adb
! 7071dc243a5433fbca7384238e9fd599  gcc/ada/a-chtgop.ads
! 313d4b6a767280d5f2e2e6cce9e8ad57  gcc/ada/a-chzla1.ads
! 6cac3e957d119d6dbfe46667c2a35b77  gcc/ada/a-chzla9.ads
! 329c33cd9cc4fb93ef5aaefab11b4d92  gcc/ada/a-cidlli.adb
! f1d022a6f5342a207e142c81abc23e14  gcc/ada/a-cidlli.ads
! 57e805e0f61645d53a232e4d6ec0460b  gcc/ada/a-cihama.adb
! 0de614773261cdc6b664a072134524a5  gcc/ada/a-cihama.ads
! fd8c7f1d9bb2a9207b2718b51c9f4546  gcc/ada/a-cihase.adb
! 1c537da48867b6ce40ba6fb2e2d4b3b8  gcc/ada/a-cihase.ads
! dc53a6b0a9f0d36f3d2fa825dafd7f77  gcc/ada/a-cimutr.adb
! 56113c0afe8702ecb607c66f3b68c317  gcc/ada/a-cimutr.ads
! 992496f6ee7f6fd6904bb02392a1145d  gcc/ada/a-ciorma.adb
! 83eb8aabad86b8881f5691441c63a19f  gcc/ada/a-ciorma.ads
! d1ba49e07016662dc8062fb6d6c698f0  gcc/ada/a-ciormu.adb
! b8dfb684b9ca2627bc6f38c0ca516d24  gcc/ada/a-ciormu.ads
! a5579f6954ed536b0f4bf04b20a93e5e  gcc/ada/a-ciorse.adb
! 994ea8dc04c04a0f22d7df4eb5218e8b  gcc/ada/a-ciorse.ads
! 3ff38ec298958101ab272f85b77b75ea  gcc/ada/a-clrefi.adb
! 1f77c82f8976e5c89c6b49d44fe080dc  gcc/ada/a-clrefi.ads
! f7a2ae9bc612b12d098efc291c28fa6f  gcc/ada/a-coboho.adb
! 7899631b60680165f67056d414ca2041  gcc/ada/a-coboho.ads
! 2f0161512e2f419735c4b45276ef8208  gcc/ada/a-cobove.adb
! c096860516106e8049cebf0c230c24d5  gcc/ada/a-cobove.ads
! ee0a5c21820969a799b7596cb318cfb9  gcc/ada/a-cofove.adb
! cc57492a18c69dfc74ceccfce5d8fe60  gcc/ada/a-cofove.ads
! 275140cb75c25850a864f65f6839c918  gcc/ada/a-cogeso.adb
! 3dd55adf78fc8ae64490ed2d8ceb5b46  gcc/ada/a-cogeso.ads
! 6b8ffada469858332a90089e3c657c4b  gcc/ada/a-cohama.adb
! 6c02089867dd124a07c2edfded3a51b1  gcc/ada/a-cohama.ads
! 75be14feae6e36ad455080d1676e7610  gcc/ada/a-cohase.adb
! ee146c21885f77eff9d54c07f0a4cfff  gcc/ada/a-cohase.ads
! d1b26eb9c8169fed9238c486eda9be0b  gcc/ada/a-cohata.ads
! ddf4bc5600b1622663004a9b46dc900b  gcc/ada/a-coinho-shared.adb
! bb8118a3177653283f0d7f3512823530  gcc/ada/a-coinho-shared.ads
! 5db577f8e874a900be82e91adb9cb60a  gcc/ada/a-coinho.adb
! c60e7f1d8f853f8d15666818c79a9964  gcc/ada/a-coinho.ads
! 9be7393a808dae375a1c43db3cbbfcf2  gcc/ada/a-coinve.adb
! 05920dd9d26f96a5b04ff37eb8c12613  gcc/ada/a-coinve.ads
! c0b111bdb8592f613a0a4a5079d2e184  gcc/ada/a-colien.adb
! 4ac15f08df9ca654dcaa20be3f815dbb  gcc/ada/a-colien.ads
! 8eaaea02d88535571302fa881840f46b  gcc/ada/a-colire.adb
! 1abde6f863051094c14835cf4f74dae9  gcc/ada/a-colire.ads
! dbe8f97a91c8ca8af4dfe80cd2878e14  gcc/ada/a-comlin.adb
! 513145549ba2c758d9c66ea1309ac3ad  gcc/ada/a-comlin.ads
! 17bc67f4ee33dd95d2bf26be34d019ad  gcc/ada/a-comutr.adb
! ad47de79171c6bf70405994887135451  gcc/ada/a-comutr.ads
! 64f7efc9d00ce4f960e36b85b2e66525  gcc/ada/a-conhel.adb
! 05a06ea1cc20a4bb77d4e49fc4bb878f  gcc/ada/a-conhel.ads
! 68936f8f1ee9f0396348cadc777cd446  gcc/ada/a-contai.ads
! 562304cbaf5bf8f94d860af38a3bcf79  gcc/ada/a-convec.adb
! d535111efcc05c07c447c002b43e5be4  gcc/ada/a-convec.ads
! d3d1e83d247cf05c4714193432b413cc  gcc/ada/a-coorma.adb
! ba276776d618eab19c6dbb42df5f1792  gcc/ada/a-coorma.ads
! 812bdc8b340c1a58b00f58b66e476283  gcc/ada/a-coormu.adb
! 9a07026bae0e3e888d9a272aaf22e29b  gcc/ada/a-coormu.ads
! ee52196ff22aadeacb063b42c30bc1fa  gcc/ada/a-coorse.adb
! 7b472886fb546aab0386acca90c93d69  gcc/ada/a-coorse.ads
! 96dcaafbbb8852d8b7585a1e0899386e  gcc/ada/a-coprnu.adb
! 58f24159bdb9682c946b552c2bc2343e  gcc/ada/a-coprnu.ads
! 2399731eabd6e0bbc0a8f28a60d3c3c8  gcc/ada/a-coteio.ads
! 4f9897313b1098a5027d8e0183c45fec  gcc/ada/a-crbltr.ads
! 7591c9e6bc8a51e16061d7d3ecd4dfdc  gcc/ada/a-crbtgk.adb
! 93c8b5afec7e9caa8478f8669242214b  gcc/ada/a-crbtgk.ads
! d6e04119190382893be2a1b6e5a6c7e5  gcc/ada/a-crbtgo.adb
! 9527c7856419daf208fad2159436e7ea  gcc/ada/a-crbtgo.ads
! 0e685a4df90a4e0e20368d3b323c2aa0  gcc/ada/a-crdlli.adb
! 7ff3c525a427229dea87d2f3cb62501e  gcc/ada/a-crdlli.ads
! 2b5caeee52032237eafe390ba96a4e6f  gcc/ada/a-csquin.ads
! 05ce4ce50c03f46f70acaea3a48f4b7a  gcc/ada/a-cuprqu.adb
! 25d4de048efeead3191113e676d694f4  gcc/ada/a-cuprqu.ads
! 0fbeb1186b7c29628e013d8383936a3f  gcc/ada/a-cusyqu.adb
! 1481d9790b52e8ab4b7305eae1e2278d  gcc/ada/a-cusyqu.ads
! 3dca459a95c59c4ef38558f6b88c1e22  gcc/ada/a-cwila1.ads
! 4b75c1fb15149a48193fe8e3f104eb2d  gcc/ada/a-cwila9.ads
! 8fd6e33a6b569e25095032fe27e15b57  gcc/ada/a-decima.adb
! e95a5ec742c17545ed02f0db4675dc2f  gcc/ada/a-decima.ads
! 89c83d2d9807d1e8ab3a19cb73761dba  gcc/ada/a-dhfina.ads
! 66247d074eecb4270e7cf01d16e0cfce  gcc/ada/a-dinopr.ads
! 083ba4a3a3ade0a5b43b08cc900ddc5b  gcc/ada/a-diocst.adb
! 2d24401ced5fa6836ac71d9168e13166  gcc/ada/a-diocst.ads
! e623c37968e5e0d0dfb41eb20efeaed9  gcc/ada/a-direct.adb
! 5fd8abb84673c8e9bea1bf951a2899e1  gcc/ada/a-direct.ads
! f9dda671a974fc57479294cf58187393  gcc/ada/a-direio.adb
! ca242173146bfe154b399c9dfd81ca5d  gcc/ada/a-direio.ads
! c4e9620896065355c1895fb26186b8d2  gcc/ada/a-diroro.ads
! 94281314cef2b3150ca79a72450c1d09  gcc/ada/a-dirval-mingw.adb
! f05b40dfd9242299e01d174de64be216  gcc/ada/a-dirval.adb
! cecfc2ce47c960f9dfa9c38d12bafb4c  gcc/ada/a-dirval.ads
! d33d03640fb0fae0a821bbeb1be518f7  gcc/ada/a-disedf.ads
! 98c12f050fe803db4fde13fe96cc6b73  gcc/ada/a-dispat.adb
! ffc38182643c9a3ca51ec7b39bd9fc55  gcc/ada/a-dispat.ads
! 6afc4e12301b2cfcecef22bbd0e716ad  gcc/ada/a-dynpri.adb
! a2784499cf21750d8840eeaf03b9e700  gcc/ada/a-dynpri.ads
! 21d9c0bb664a4e0dbc53882345ed8c3b  gcc/ada/a-einuoc.adb
! a8dc989d9d99b1fe50c060a67b4d0f04  gcc/ada/a-einuoc.ads
! abf008845a921ae6da636b55c2fa3010  gcc/ada/a-elchha.adb
! ff130090cc92a7c49e1e257daa104801  gcc/ada/a-elchha.ads
! 41d68571ec8daeaaa5c06070c9dbd19f  gcc/ada/a-envvar.adb
! e77a221e76c3e19394bf433277f04c0f  gcc/ada/a-envvar.ads
! 01228b27236e4018e8c11ed5e541a1a8  gcc/ada/a-etgrbu.ads
! 029e8d48d93098db4089777eec4f2742  gcc/ada/a-excach.adb
! ea47400898a8aa5cc3df98c35abaa521  gcc/ada/a-except-2005.adb
! 7846fa4e2debf7b61fb93058a2de6eb7  gcc/ada/a-except-2005.ads
! 9a81588af1805cef371590865f64018f  gcc/ada/a-except.adb
! a612d55a457dc3fb45cd33dc0fad4025  gcc/ada/a-except.ads
! d12c87b70730e921c7d05328394722f1  gcc/ada/a-excpol-abort.adb
! 8d11be00523851d45113698a5b602c90  gcc/ada/a-excpol.adb
! 6e292697a18f45163143bdfe3a929889  gcc/ada/a-exctra.adb
! e63f4fd9c1816e7117dc306b4b797c6e  gcc/ada/a-exctra.ads
! f8c8b2b4316de41de4cece9b414477e3  gcc/ada/a-exetim-darwin.adb
! 7b354bf8b9f3cb53328a0e28042e6458  gcc/ada/a-exetim-default.ads
! e696f529e2cebfbee2cc73afdc3f93e6  gcc/ada/a-exetim-mingw.adb
! 23c868b3d390a822b004a231dbcfedc3  gcc/ada/a-exetim-mingw.ads
! d258c6b8597ee8b627f37131f568a391  gcc/ada/a-exetim-posix.adb
! 3e60794a02e6ff3380c0daf20c7c6bc2  gcc/ada/a-exetim.ads
! 01eb2d8f4cb6170a383d89371a505570  gcc/ada/a-exexda.adb
! 2951561f525460bfaf4cb2424f785428  gcc/ada/a-exexpr-gcc.adb
! 93bfa7788d801f7c5a673539286cc1df  gcc/ada/a-exexpr.adb
! 1350c2a56c266ac08066bf72734e7a75  gcc/ada/a-exextr.adb
! de01360bd37427c023ca714077701cd1  gcc/ada/a-exstat.adb
! 8a70e70c5d53efd2ae8de2a025db3217  gcc/ada/a-extiin.ads
! 66ba8470ba07e36d23031779e1ebee31  gcc/ada/a-extiti.ads
! 8515e8e20cc76203e7e4a150c0daa38c  gcc/ada/a-finali.adb
! 8346e3dc45e0afbc899b34d528a8583f  gcc/ada/a-finali.ads
! b6ba93109a253e15591b1eefa685bc24  gcc/ada/a-flteio.ads
! f7e337bf223b3a491d58fb6db81ef7b1  gcc/ada/a-fwteio.ads
! 2bf5d12193c278c4a482ae0dda1129a9  gcc/ada/a-fzteio.ads
! 195c855e8e96de38bc292de9a4544754  gcc/ada/a-inteio.ads
! deb5dd5ea8797acb38f539339a6894a0  gcc/ada/a-interr.adb
! 965aa432d838abaf6205b1bcb61b619f  gcc/ada/a-interr.ads
! 2b90ba7041432b8b6b52855155f70e25  gcc/ada/a-intnam-aix.ads
! d1517e0e4102d0b5db5dc3ead42ee443  gcc/ada/a-intnam-darwin.ads
! 7bd11f43fd894e0dfdd60557e0788315  gcc/ada/a-intnam-dragonfly.ads
! 19623acb4880af9b70fe3fb25696533c  gcc/ada/a-intnam-dummy.ads
! 1a8d1cd8a0fb1c9206b7ea15d9f21bf4  gcc/ada/a-intnam-freebsd.ads
! 4ba1737eb44b64f307a7611c68e669c5  gcc/ada/a-intnam-hpux.ads
! 8c9c981f3ee3791a0a028a13b02640c4  gcc/ada/a-intnam-linux.ads
! b29035e533e7501078166d295d863efc  gcc/ada/a-intnam-mingw.ads
! 8aa383b2a51ea891b302c3cb3a6252c5  gcc/ada/a-intnam-rtems.ads
! eef01f885598b3ecb95ad48e6f537e22  gcc/ada/a-intnam-solaris.ads
! 59915271bca5fc5930503c7a905eeb39  gcc/ada/a-intnam-vxworks.ads
! 831f0550c767d195bf917d6a86fe2cf5  gcc/ada/a-intnam.ads
! f5cead0a0f9422214238f41f7aaa23f7  gcc/ada/a-ioexce.ads
! acc89489d76f468d41b8773192282dba  gcc/ada/a-iteint.ads
! 39b8821573ea224defa1f1b9b1a5248e  gcc/ada/a-iwteio.ads
! b237e9ea879dc91ffa87b41e0d78b2c2  gcc/ada/a-izteio.ads
! 6a6cf739ac25eff18ec7bded73be1862  gcc/ada/a-lcteio.ads
! e5522949af329f522f7d5ebe5482060c  gcc/ada/a-lfteio.ads
! 1c50d32a4380ca9cdb764792f18c0524  gcc/ada/a-lfwtio.ads
! 5c37ae1e15081be2b83c51ab12dbca08  gcc/ada/a-lfztio.ads
! 529f66f8bd35529868a54d8055a37dc8  gcc/ada/a-liteio.ads
! 875cce59f97627deccd3ab293d066775  gcc/ada/a-liwtio.ads
! c85d4e023cecae32f419a1d837ecd5bc  gcc/ada/a-liztio.ads
! a0b713490d7990a16271d723a2ffc358  gcc/ada/a-llctio.ads
! c1b0652df739806cc66f6509266b7f2f  gcc/ada/a-llftio.ads
! de36bb3500d42e22590ce1501e11ef70  gcc/ada/a-llfwti.ads
! 127f827481c8b320789bc1adb7b3e72c  gcc/ada/a-llfzti.ads
! e0dd600379e462e3991feecefb0505c7  gcc/ada/a-llitio.ads
! 1f58cac87b9546727c792ea430084a50  gcc/ada/a-lliwti.ads
! efa823912da5d16e6f8d4aa6f78b768a  gcc/ada/a-llizti.ads
! 2bb872fb9fb0d7e5e77b27b58b9e2493  gcc/ada/a-locale.adb
! ea4993e1e8d6ef2cd4fef3c85bbc4748  gcc/ada/a-locale.ads
! 4952f183ce545e6e57497b9147f05dd5  gcc/ada/a-ncelfu.ads
! a70c45e416b7f034f478d9053b9b080e  gcc/ada/a-ngcefu.adb
! 2e229d27b615410dbc242fd1d7d4bd98  gcc/ada/a-ngcefu.ads
! e6f34f805610e324cbc1b6365a97e636  gcc/ada/a-ngcoar.adb
! a26d13d8c2030d72490c9b3c42f94f28  gcc/ada/a-ngcoar.ads
! ceacaffd435a90c66fc065485821a1ce  gcc/ada/a-ngcoty.adb
! fde5ec5260e84f12ee1aa47d9393f9d7  gcc/ada/a-ngcoty.ads
! 9f65969d9885a534f9c15086d2a34bcd  gcc/ada/a-ngelfu.adb
! 427eb24c4d1ebad539930c83e651aad6  gcc/ada/a-ngelfu.ads
! 7a38396a020dd4443fceb34d66b9f9ce  gcc/ada/a-ngrear.adb
! 69296ed8b079bba3cfa0121072d63799  gcc/ada/a-ngrear.ads
! 7f894c161f872e68b50172715a8a311e  gcc/ada/a-nlcefu.ads
! 307582c16af8c2d164031fd8dfb72581  gcc/ada/a-nlcoar.ads
! 2341d761d1df9c74f5d4396b2a243874  gcc/ada/a-nlcoty.ads
! ab84950480ebd62289e41d3ec50b400b  gcc/ada/a-nlelfu.ads
! 44394b04703b7121f6dafb77b7eb7dda  gcc/ada/a-nllcar.ads
! b1c1bbccd0e624d2b5753adeaa355876  gcc/ada/a-nllcef.ads
! 4b51dc5d67f507aed187528008aa427d  gcc/ada/a-nllcty.ads
! c4df697bfe43f078325051bf17f2462c  gcc/ada/a-nllefu.ads
! dd270955ac40f18eb7ef0bb7122fbc06  gcc/ada/a-nllrar.ads
! dc556e736d290554bf97bb7153c2e96b  gcc/ada/a-nlrear.ads
! ed8c8d1cff975d8128d8a34e6fa60333  gcc/ada/a-nscefu.ads
! ae6657265a333ec061d886c2e0a9be47  gcc/ada/a-nscoty.ads
! c7bddd6abb488c8cd0d9982769254df5  gcc/ada/a-nselfu.ads
! 22a793d6936415ee70b725c6d2b2020a  gcc/ada/a-nucoar.ads
! bda677b507deb699333f9baa2c37a694  gcc/ada/a-nucoty.ads
! 41effd8b3e370a92822ef7999b16287d  gcc/ada/a-nudira.adb
! 79e5ed9d46c55255501085676e67d8e8  gcc/ada/a-nudira.ads
! bd9eed0e40585ba218b0badca225b64c  gcc/ada/a-nuelfu.ads
! f2a898c92f7daad148ad853736735722  gcc/ada/a-nuflra.adb
! 6119d04b3b43822889461bd7301124f5  gcc/ada/a-nuflra.ads
! cb2094ab0162a67c98d78fb65d6d4d6c  gcc/ada/a-numaux-darwin.adb
! a4bd36be6cd172b72f4448dad2798189  gcc/ada/a-numaux-darwin.ads
! f3fae7ea5a0de78883e952b0b4465076  gcc/ada/a-numaux-libc-x86.ads
! a1250458f4887af6bb0b39f8db602c79  gcc/ada/a-numaux-vxworks.ads
! 6296c83aab610a8cc573d29f03ab26b9  gcc/ada/a-numaux-x86.adb
! fc870c35058c86752ec51b4e68cb2f92  gcc/ada/a-numaux-x86.ads
! dc770a0d87641466c14499142452dc50  gcc/ada/a-numaux.ads
! 9f619edc4ba691a0be947731d8134f51  gcc/ada/a-numeri.ads
! 88b948f6713b009c76e8b3b7b75a22c9  gcc/ada/a-nurear.ads
! 64d0d1f2e869955eeea53cceb64503e4  gcc/ada/a-rbtgbk.adb
! 226c63899d28df3ec3e3954209f5fb9d  gcc/ada/a-rbtgbk.ads
! 670cac796576a72adeef96c8012c641d  gcc/ada/a-rbtgbo.adb
! 9e09dd5ea37e2dc804c1d7670c3ba810  gcc/ada/a-rbtgbo.ads
! 91f9138529ca5b9a9e479378aafb7c98  gcc/ada/a-rbtgso.adb
! f73aa9fe576635771fe640a2f397cac6  gcc/ada/a-rbtgso.ads
! d64e4ed6ce9da27c44dc3228f191d9c0  gcc/ada/a-reatim.adb
! 61836de50331b82d01d459196f9a1ce1  gcc/ada/a-reatim.ads
! 4b9a1241eaf6d64d8d1260a4a7082aac  gcc/ada/a-retide.adb
! a144011ba5fc77f9ace7325041beaaad  gcc/ada/a-retide.ads
! 860a328a5da3f7dfa2d6f8fe2976c769  gcc/ada/a-rttiev.adb
! 636e5dba1fda94fbea21df3bb3aea2b6  gcc/ada/a-rttiev.ads
! 98e36c26a0182f4febe5349fa5b548f8  gcc/ada/a-sbecin.adb
! 126b6f89d0b50f0880cd9371006a27df  gcc/ada/a-sbecin.ads
! ec68e8b74232018022d85ce3e4777555  gcc/ada/a-sbhcin.adb
! 5db6f4dadb20202b26b02929ea782e89  gcc/ada/a-sbhcin.ads
! 15a92eefc079908046cb55815a79e9bf  gcc/ada/a-sblcin.adb
! e49d6c889764828d2b5be3af928c1abb  gcc/ada/a-sblcin.ads
! 67b280f23d76be962783b397ef7e60c7  gcc/ada/a-scteio.ads
! ade90f107b9cc33884b037074b35733f  gcc/ada/a-secain.adb
! 46fa80e462cf93254ac217368fb7231e  gcc/ada/a-secain.ads
! e58b8c76219dba00c75ac3f1a78ba858  gcc/ada/a-sequio.adb
! 5d04f9e40d23d3c82206b97a475bc0db  gcc/ada/a-sequio.ads
! 6df606306b1766e7edc642c0e3e21d67  gcc/ada/a-sfecin.ads
! 3cd806e1a8362d8ae41f1537622460cd  gcc/ada/a-sfhcin.ads
! 62661ea8a384d0933ca74bf887ce2e20  gcc/ada/a-sflcin.ads
! 43123af888cd4637ee6a1eaf9dde9e34  gcc/ada/a-sfteio.ads
! 63d0f0f0aed733a972873cb3a4b767ea  gcc/ada/a-sfwtio.ads
! 7207d517b5474be90def505e3a2be187  gcc/ada/a-sfztio.ads
! a159605f8308d32480d50aeb42e04a78  gcc/ada/a-shcain.adb
! 70bbcc866a59015111d2ac6420c9950b  gcc/ada/a-shcain.ads
! bf7a2211f772998674833ca506bc0343  gcc/ada/a-siocst.adb
! 0f0f394f6c91ee9e77363760f27b5962  gcc/ada/a-siocst.ads
! 6fce3ea5eecdf93f2ec7d0446ebd14af  gcc/ada/a-siteio.ads
! 9330fbe80fe3844d3bf5aeb4946381f6  gcc/ada/a-siwtio.ads
! c816a5bc136362b2468801e67deb9ae9  gcc/ada/a-siztio.ads
! 662c5b499230a08e33bc59b1d5922e12  gcc/ada/a-slcain.adb
! 75a1aae95f3b4f5d5e5437c21e8e6325  gcc/ada/a-slcain.ads
! 8f479e9db8f72f84c29d7f74c47c1dbf  gcc/ada/a-ssicst.adb
! 5ef5d1f8e292113d139bf7d2503ca73a  gcc/ada/a-ssicst.ads
! 3ec2f925719d14de3a80c38042157f78  gcc/ada/a-ssitio.ads
! 387afdf3ceb85d07a14d8ae4e2f0eeec  gcc/ada/a-ssiwti.ads
! 366683e8278e7e71bc63a8c7a3f2238f  gcc/ada/a-ssizti.ads
! 74958f8d8cac4f33093a6d62340d7b3a  gcc/ada/a-stboha.adb
! 8274f77970c3b1ed9a51aa8ddf6a4d0f  gcc/ada/a-stboha.ads
! c04bb8934366f43faa60d914e7ebea7a  gcc/ada/a-stcoed.ads
! 756f44b0c7f4483ecd7302aee8bc110a  gcc/ada/a-stfiha.ads
! eb8882588afbc644d67cc96ace50d544  gcc/ada/a-stmaco.ads
! 5105b9e0cd49a64bcc4f9f720214a1b5  gcc/ada/a-storio.adb
! 34175bb2f712422ab4cfd24b3e452b0d  gcc/ada/a-storio.ads
! 7c793c9ac8eb274a528f50c42c87e1e0  gcc/ada/a-strbou.adb
! 3f561312ecbf299b12a0add4818a942d  gcc/ada/a-strbou.ads
! fc2fba7ecca0a757cbe84b721a76d80d  gcc/ada/a-stream.adb
! f92bb2baa3498592029eee1bf660b260  gcc/ada/a-stream.ads
! 10c951dbb0bc22a03e58f4193ae47a65  gcc/ada/a-strfix.adb
! 9006699bea6bd78b99bc62baadc65e25  gcc/ada/a-strfix.ads
! 5a03e36bb0e9aa36eef89be8821c38d9  gcc/ada/a-strhas.adb
! 930f541d2f838554d072231b1bcb510a  gcc/ada/a-strhas.ads
! de0f93afe5feaf6819d5a9a2e09172e6  gcc/ada/a-string.ads
! 400e0c9486347fe63d0a1d88d4bf224a  gcc/ada/a-strmap.adb
! 1d79473d6cd5b2763d6756618776feef  gcc/ada/a-strmap.ads
! a2c9526a7974af6b4b8fc60c851737c4  gcc/ada/a-strsea.adb
! a40403bce862e17432947aea0be2c896  gcc/ada/a-strsea.ads
! 9b81d3fe8857d409460dedabd4be1bc3  gcc/ada/a-strsup.adb
! e9253c52554535a0c3e5b0907ad961ce  gcc/ada/a-strsup.ads
! a5975a78228bf3e2e60af8d01ea6b060  gcc/ada/a-strunb-shared.adb
! 6c44a99021f02d594764f0311095085e  gcc/ada/a-strunb-shared.ads
! 3bd5b90b5d150282f994fd5ecd864f3c  gcc/ada/a-strunb.adb
! 112075330a6489f354491df487aa396d  gcc/ada/a-strunb.ads
! 7271a74f0626db7abb718201e1042805  gcc/ada/a-ststio.adb
! 1ff5e54ba40ecef7ac1755e30e524357  gcc/ada/a-ststio.ads
! e31c4b9d274b961d3eada0af2417dcd4  gcc/ada/a-stunau-shared.adb
! 6a7ced4630e8e62a5ff53a119ee59dd3  gcc/ada/a-stunau.adb
! f1ba5169693aa680a9af3ec26bdba80d  gcc/ada/a-stunau.ads
! 774efdb0c954bb3cf3fbbcbc498cc5bb  gcc/ada/a-stunha.adb
! da4a8d13f76850d714a8213ada7477d2  gcc/ada/a-stunha.ads
! f1ee7137951c8bbaa23ea5e5535fd703  gcc/ada/a-stuten.adb
! 91801320eab187501cb48bd0c74a06b0  gcc/ada/a-stuten.ads
! ea02a4648cd6389785fdd719fe71da1c  gcc/ada/a-stwibo.adb
! 6c3027d9a856002aae1ae70491ad836c  gcc/ada/a-stwibo.ads
! a714b91c576e369e39f1d701fe90260d  gcc/ada/a-stwifi.adb
! b0cf3f05e49e1640bf231034269cb951  gcc/ada/a-stwifi.ads
! 463ba7e728b5e99bb3661ec0237faa71  gcc/ada/a-stwiha.adb
! 3255ad19d07346032c9d005d6a27475f  gcc/ada/a-stwiha.ads
! c6c9859d9cd1e70578954eff8a06a83a  gcc/ada/a-stwima.adb
! 63eba5ca00e0696e5d89d4c489acfd03  gcc/ada/a-stwima.ads
! 6ad788f97d5568aa4a20e6703c2ecb84  gcc/ada/a-stwise.adb
! cf859861d2dcc40664dd26f85e7a30a6  gcc/ada/a-stwise.ads
! 61052264b61c84395d65f4eccf5d6490  gcc/ada/a-stwisu.adb
! 3f621eb30a391d1b1040150941e8e9f9  gcc/ada/a-stwisu.ads
! 6168be076148cebbc957851cf808bd8e  gcc/ada/a-stwiun-shared.adb
! b0e5f042bff72f7857def259049d223f  gcc/ada/a-stwiun-shared.ads
! e9be744a4bc274e98bc063e3209b46f3  gcc/ada/a-stwiun.adb
! 82e509b8c7d335cf852f93fd2f78e1d2  gcc/ada/a-stwiun.ads
! f2e39f7825ce991ec888440d88b5e699  gcc/ada/a-stzbou.adb
! 1db5898f6863e991e9992d994f61b3fe  gcc/ada/a-stzbou.ads
! cf6de4f9960ac4ab08fdd940ae68104e  gcc/ada/a-stzfix.adb
! f3ddc25c20b07c4072918c6c0ea20ff9  gcc/ada/a-stzfix.ads
! e824959e8e41e4bb8b70feb6adde17e4  gcc/ada/a-stzhas.adb
! 3df83f23d7cac52e295edff333f62d18  gcc/ada/a-stzhas.ads
! e1674ea73bcfbd255ee9d85b6a862296  gcc/ada/a-stzmap.adb
! 823969b8221976db71f47c60c6ffee63  gcc/ada/a-stzmap.ads
! 70ad27689fee50341ddcb634dc623f9a  gcc/ada/a-stzsea.adb
! 565f9496e4b5909e2353ef8bc1aaf400  gcc/ada/a-stzsea.ads
! a5dc324e0d9221edf71ba033fe820ebc  gcc/ada/a-stzsup.adb
! 93f4ec579f32895330e9d827d2cf25f2  gcc/ada/a-stzsup.ads
! b674d4de125f625d50c2d498e010ad47  gcc/ada/a-stzunb-shared.adb
! 7fb21b1e7118327276c44ec53053bca3  gcc/ada/a-stzunb-shared.ads
! 8440bdad4115588d48114b43c33f49ba  gcc/ada/a-stzunb.adb
! b7a6299ca5815d1b43b1710e1b3491f4  gcc/ada/a-stzunb.ads
! f65f76d289e3c8bcacefef5566a759c6  gcc/ada/a-suecin.adb
! 1ec4af25b5b979be340a7a04ce0fcb8a  gcc/ada/a-suecin.ads
! 7b56c05b7b84bd8a2c50aa4a31b4225f  gcc/ada/a-suenco.adb
! 24c625ef90e191bc1baa69c58ae2600f  gcc/ada/a-suenco.ads
! 6967d53c47de8ec43fff7011ca40585c  gcc/ada/a-suenst.adb
! 5a81ae9196b241db71c16198169dbed7  gcc/ada/a-suenst.ads
! f01e0d921440dc57c137027389279fb6  gcc/ada/a-suewst.adb
! 88073629f5531c7f6fba98820112cd02  gcc/ada/a-suewst.ads
! 395975958d3da7a4095a96e4906fb5ac  gcc/ada/a-suezst.adb
! 5aaf32a65e951f050f1cbb5adf5af9d2  gcc/ada/a-suezst.ads
! 2bf57f2e35c378096483c2ca6b9cf46d  gcc/ada/a-suhcin.adb
! 3c4a0d562b56b505d0b87c3ad927c95e  gcc/ada/a-suhcin.ads
! 5c8b87b780d00b9d6394b717e17130f5  gcc/ada/a-sulcin.adb
! bace0b4725226781a627c0f14e359e45  gcc/ada/a-sulcin.ads
! 986755a0b0ead80da102685c8eb0dc28  gcc/ada/a-suteio-shared.adb
! 54cc3bedada359eedd132776d7ae6e97  gcc/ada/a-suteio.adb
! 63d75c9487433ea5088c9cf07e4e313d  gcc/ada/a-suteio.ads
! a68ea367ee3ff2a3862ca1c25f22afda  gcc/ada/a-swbwha.adb
! 65f3f68c6718760b4c2b0beba2af9f82  gcc/ada/a-swbwha.ads
! aaf273ef9a113dedcab8fb87b71b7365  gcc/ada/a-swfwha.ads
! 0538e34808324bd3ee7c81338ab9ce57  gcc/ada/a-swmwco.ads
! 3f5021577f94931a56b1259393e9c672  gcc/ada/a-swunau-shared.adb
! 1ba41d6b2bca361a769543147d7337c9  gcc/ada/a-swunau.adb
! 5cf679dc5c2f9676b91d29473abc89f0  gcc/ada/a-swunau.ads
! 5e783eb57264b53f7a63686fddbbef2b  gcc/ada/a-swuwha.adb
! 45d76b5b911889e181b3717ab6c91651  gcc/ada/a-swuwha.ads
! 8f16a12cb4936c3f3a6c330dd77d0193  gcc/ada/a-swuwti-shared.adb
! c813497bdd3ed9e3f77c351c0b3c743a  gcc/ada/a-swuwti.adb
! a79f75fb4afb9f328adec4f93e01006b  gcc/ada/a-swuwti.ads
! 2e2b657814551d9d79325df11fc2973d  gcc/ada/a-synbar-posix.adb
! 704e15a15af0e3022175a66a063db41b  gcc/ada/a-synbar-posix.ads
! eecff4ca7c64e95dc11b3b83029fbabc  gcc/ada/a-synbar.adb
! c8cc953f72d232196e55fd81f73c25dd  gcc/ada/a-synbar.ads
! ea7d0e121ee92930b523ea3495fc2772  gcc/ada/a-sytaco.adb
! 95e21226982783440aecbd959bdb5e6a  gcc/ada/a-sytaco.ads
! c94af75e273f87d0645f96fee1e50295  gcc/ada/a-szbzha.adb
! 18b9cf476495930cec4ac3eb881257db  gcc/ada/a-szbzha.ads
! 32bb3b01e46ff7648c862537bd77aa0d  gcc/ada/a-szfzha.ads
! a5484c5729bf5f08ae58cbccc458ae36  gcc/ada/a-szmzco.ads
! 547c3e4ac149ace0d4e9ee970514f8bc  gcc/ada/a-szunau-shared.adb
! 7ecfbf5f574b826400faa139ef2ea1fc  gcc/ada/a-szunau.adb
! c4f94ccd557dd1c2a8e859f5d7c785c1  gcc/ada/a-szunau.ads
! 984742e517e885531edea71a9e081bdc  gcc/ada/a-szuzha.adb
! 01cf107c9e66d7e5284c9b7ce2e2ed7e  gcc/ada/a-szuzha.ads
! 4f18a2fdab077cf5f6099a2d3943c444  gcc/ada/a-szuzti-shared.adb
! cd657807363cd94333fdf291a3ac2e7e  gcc/ada/a-szuzti.adb
! d4bb641623d3733c1f25a83d99ab98b9  gcc/ada/a-szuzti.ads
! 1e3bdf088a14a50cc7c17445b99b6f20  gcc/ada/a-tags.adb
! 4e2e767d5862fe2fea9fe4fcbbd89164  gcc/ada/a-tags.ads
! e5b7eb92f158164922f42b4785ec98c0  gcc/ada/a-tasatt.adb
! 43f7be4794a3268ed8286b4070df8365  gcc/ada/a-tasatt.ads
! fd342674c197210a90cfcf69abd092b8  gcc/ada/a-taside.adb
! de23e2b8d6ddf7aa9bf8c2eb4f32022d  gcc/ada/a-taside.ads
! 4cdeba821a37b1b5cd8f4bba9eabeb45  gcc/ada/a-taster.adb
! 281fc9a014bf9c5a3677f1dd38cc9d5d  gcc/ada/a-taster.ads
! 833571747d02e30847e8c66cfeed2e4d  gcc/ada/a-teioed.adb
! 4eb0094120306451664ed73cdafe1d74  gcc/ada/a-teioed.ads
! 175c06ee85fa2c6d9f150187860b4bce  gcc/ada/a-textio.adb
! 8f8b52b35860a106600945520fa91ee6  gcc/ada/a-textio.ads
! c74a673b222c3d0037a22fb766c67488  gcc/ada/a-tgdico.ads
! e52f158e88867c99b27268762d9506b4  gcc/ada/a-tiboio.adb
! 7b163db9f1467e9392f347bee1400136  gcc/ada/a-tiboio.ads
! 0b85322f7f2e0bd0c05e4a6304561bbb  gcc/ada/a-ticoau.adb
! a60cebaccbbde6ddd7e521de347b01c2  gcc/ada/a-ticoau.ads
! c42fdf0e8ee053a9088137f45319460d  gcc/ada/a-ticoio.adb
! 4be35c77f0ca61509933e74d816078ce  gcc/ada/a-ticoio.ads
! 7eb74de04dcdc66dbfbe623621d28404  gcc/ada/a-tideau.adb
! 967c7a320c1a18d96d4c9bf5cbf94a9c  gcc/ada/a-tideau.ads
! 5bca4651071a5344d63d5cbc45a7640f  gcc/ada/a-tideio.adb
! cb6f506724a7f340f130cdc21d0f8241  gcc/ada/a-tideio.ads
! 92f5e1ef45d12a90ec215792ef19b8b6  gcc/ada/a-tienau.adb
! 273f1114c33768aa3d9632bcfd617e74  gcc/ada/a-tienau.ads
! 1fef0db8c1a41262bb3f3b11d20d0b07  gcc/ada/a-tienio.adb
! ede7e998f99538fd676bc9971ca93315  gcc/ada/a-tienio.ads
! 802818dd0e27062c7fc3c61ead502b92  gcc/ada/a-tifiio.adb
! bc8cbff50079d894d4b781acc5e187dd  gcc/ada/a-tifiio.ads
! 720fdd0547faaab36606b6a9597b0f8d  gcc/ada/a-tiflau.adb
! 294d48482fe7200d217db54e29e40439  gcc/ada/a-tiflau.ads
! 9b2d701327a1a460d8dc961a895f7858  gcc/ada/a-tiflio.adb
! 5b048f1a72872f34de0b324803d82f61  gcc/ada/a-tiflio.ads
! 7ad33f242ad063a2224894fb839adca2  gcc/ada/a-tigeau.adb
! 12b39d7a62ad3e4919f5a1b58fbac604  gcc/ada/a-tigeau.ads
! c969fb4caef788f8a918ccf16a9f825c  gcc/ada/a-tigeli.adb
! 9240cee98a269891aa0d251558f931b1  gcc/ada/a-tiinau.adb
! 4b1703587ee1ea348b99edd17caa9196  gcc/ada/a-tiinau.ads
! a3a0657a25d55c90267d74ba51540d38  gcc/ada/a-tiinio.adb
! dcf7cd3385c77dddce3391d5a2d9a3a3  gcc/ada/a-tiinio.ads
! c77bae9ee6b33d1fa1d2f9a8267b0143  gcc/ada/a-timoau.adb
! ad874aefc60a5e34f45e0e4bd4f7c257  gcc/ada/a-timoau.ads
! 4214ef88ddffa08f0fd052b8592579d6  gcc/ada/a-timoio.adb
! 16d4da56882e48cf78c545f6f89f9ba9  gcc/ada/a-timoio.ads
! af408fd123e8407326fe729e9b186ea8  gcc/ada/a-tiocst.adb
! 4ee99a143691602327a60146eebd9887  gcc/ada/a-tiocst.ads
! 057b536a1680a120f357cd65bb997e40  gcc/ada/a-tirsfi.adb
! 4ce37c5ea28a1b29497526ef41aa2087  gcc/ada/a-tirsfi.ads
! 9bcda2172364ce5cfc4a7d9cf9b5433c  gcc/ada/a-titest.adb
! 7b71ac41d87e6c43f98663d1d110846c  gcc/ada/a-titest.ads
! 1a5a51a7ff392f1819e96c8c7b6ba50b  gcc/ada/a-tiunio.ads
! cc3cdde92910b2df2b27716f68aaa9df  gcc/ada/a-unccon.ads
! 056c48fcf2a331290a0e91a94716d8b3  gcc/ada/a-uncdea.ads
! 13a991585b986246d495d37ae646bfa2  gcc/ada/a-undesu.adb
! 82a804005be52b8d315b11082ce952d4  gcc/ada/a-undesu.ads
! 4bb16249a985ecb346909fb8f7776804  gcc/ada/a-wichha.adb
! e8ccd16de3768e5094001fd7b5f77080  gcc/ada/a-wichha.ads
! c2a47bfc275cba2f19dcb3bb8593af6c  gcc/ada/a-wichun.adb
! abb115a569ac44163213f80921cf2573  gcc/ada/a-wichun.ads
! 495dc144d91ae1388ae48ceb32e47f91  gcc/ada/a-widcha.ads
! be2c3f0200df53acd727d07dd4fbf76c  gcc/ada/a-witeio.adb
! a3bb099bf9f4c59f390a938e50d6e28c  gcc/ada/a-witeio.ads
! bed4a3a0fe5a70084b45887d0e8ebe69  gcc/ada/a-wrstfi.adb
! 9a4e56da0afb7c0d46d87b1846ac8e35  gcc/ada/a-wrstfi.ads
! 800c329e27cdea6df6b6805d37abfca9  gcc/ada/a-wtcoau.adb
! 88998216a8e3da25eacb3986d9ee3f64  gcc/ada/a-wtcoau.ads
! 007bb9186a012ab244d6265d987f6f95  gcc/ada/a-wtcoio.adb
! 57e4b04385112ab5656169d352e2fefb  gcc/ada/a-wtcoio.ads
! b4a584cb12c01b75a04000ee1877ad8f  gcc/ada/a-wtcstr.adb
! 2e8b2b0ff91d31ada0d35d26464affe6  gcc/ada/a-wtcstr.ads
! 5e2456345002d961bd4f694c543725de  gcc/ada/a-wtdeau.adb
! 0164ad58b7ee17c041690bc21b66bb01  gcc/ada/a-wtdeau.ads
! 71fb56dbd61bfd5d254c0f8350aeed1f  gcc/ada/a-wtdeio.adb
! 20d4a8b1dbec170436bce906004aaac8  gcc/ada/a-wtdeio.ads
! 3265a746cdefe4647d6b8318f7f1be25  gcc/ada/a-wtedit.adb
! 8140587a01de9029452c0a3093c2d9e1  gcc/ada/a-wtedit.ads
! e54d98287f25149d515ead42833b39f0  gcc/ada/a-wtenau.adb
! eb9218c06ec1715e35493050dcabb7a6  gcc/ada/a-wtenau.ads
! 9ed429ee3a43e373fb5fc1fbf8382e3b  gcc/ada/a-wtenio.adb
! fa13b730a5c90ff293982415bf7bcecb  gcc/ada/a-wtenio.ads
! 55a4e2aae30aa03853e56e289d4be642  gcc/ada/a-wtfiio.adb
! 495444487be476924785b4b8eff6b910  gcc/ada/a-wtfiio.ads
! af70ef1f83c58cf3eac4716679927e48  gcc/ada/a-wtflau.adb
! 59136bcadc0c1688261ccec4dd62b63b  gcc/ada/a-wtflau.ads
! 80c0075e47a3088e8e02b44b82806868  gcc/ada/a-wtflio.adb
! bb57e8648d7de30496bb43f8a849fc3f  gcc/ada/a-wtflio.ads
! 4a2c710955b18736def02e65de03af56  gcc/ada/a-wtgeau.adb
! bcf951706f2d45184478d5339ffa4854  gcc/ada/a-wtgeau.ads
! 0876ecef82259565b5551925f5338fcb  gcc/ada/a-wtinau.adb
! 57addb61ef83b7a6dca47b38350e14b8  gcc/ada/a-wtinau.ads
! 39d4db61dd3f2a61937122ad0b7f05b4  gcc/ada/a-wtinio.adb
! 62a64f1715aaaa145cf2b6d360381363  gcc/ada/a-wtinio.ads
! 8411068bc7f65f40b9bd491c43cb63c5  gcc/ada/a-wtmoau.adb
! 823ff1e635f522b8f9d4f42fcd2e5b3d  gcc/ada/a-wtmoau.ads
! 76b868d409496c113e4500faba10d7c8  gcc/ada/a-wtmoio.adb
! 0f9fcfda95098dc442bfbe68914e095b  gcc/ada/a-wtmoio.ads
! 9720edc44c44b1636cc1cb19c25aee57  gcc/ada/a-wttest.adb
! 53d3d301f9afb69992013f55fe363511  gcc/ada/a-wttest.ads
! a91a339eb8b3d02a95458da090bb0fdd  gcc/ada/a-wwboio.adb
! 899e14502ec4dedbf4fdb28f8cecfa35  gcc/ada/a-wwboio.ads
! 1c2480c111fa5b71fca7c67f21525f8f  gcc/ada/a-wwunio.ads
! 107d2989204d28e32923acc02d444f67  gcc/ada/a-zchara.ads
! 072c0fe7d0f4e3bbbf394e1dcc1d7f6e  gcc/ada/a-zchhan.adb
! 851207a7fa656182af6f5be4e1b7ef3e  gcc/ada/a-zchhan.ads
! d7540c6c1865cb7e1a119bd4789fc554  gcc/ada/a-zchuni.adb
! b8a62642f07df9ceea1188a5010d412f  gcc/ada/a-zchuni.ads
! 714021005edd568f4a0f99074fe6487e  gcc/ada/a-zrstfi.adb
! 5388ec55028cbb33c95d1ae8f254ee3c  gcc/ada/a-zrstfi.ads
! e92e3450a4f66c43dabb0862738c445b  gcc/ada/a-ztcoau.adb
! 6fac1d159f432f92bf0b00b806c7bf35  gcc/ada/a-ztcoau.ads
! a44b25e19a1d6b35a139710a6558744c  gcc/ada/a-ztcoio.adb
! dc648cdd3ab33803386dbd6d2bf8b8d6  gcc/ada/a-ztcoio.ads
! 166340c4140d6ded8e2f06ec2f821469  gcc/ada/a-ztcstr.adb
! b8e9175b31f51e5909d25ed61c561958  gcc/ada/a-ztcstr.ads
! a9caec9a2b89e2fd822ceb46f410f4a5  gcc/ada/a-ztdeau.adb
! c278c832ddc7f1aa6dc89fcc32de764c  gcc/ada/a-ztdeau.ads
! 49c75d31d9e1c8806e2cdaa46ea5cfcb  gcc/ada/a-ztdeio.adb
! a1457649e626ebf32915696e5afd2ac0  gcc/ada/a-ztdeio.ads
! 04f30a9926591e661cc39048f8f6fbea  gcc/ada/a-ztedit.adb
! 9bfac4429696d3202be8a587d6febd6d  gcc/ada/a-ztedit.ads
! f1269ce213ce1e70d35777c4e1747656  gcc/ada/a-ztenau.adb
! f119232b23040318d5789b8bf59ae73f  gcc/ada/a-ztenau.ads
! 2a522dce6d13c089fe333e4476f0fc1a  gcc/ada/a-ztenio.adb
! 33aa889d92f43b14a348a444135fc992  gcc/ada/a-ztenio.ads
! 1a553f8d19f07f9c18225f0512ebbe6a  gcc/ada/a-ztexio.adb
! 414fcd7f0abccad83cab3a4cd390221b  gcc/ada/a-ztexio.ads
! b6e6351b5eb3c88452e0add505a23702  gcc/ada/a-ztfiio.adb
! 9e2efe8c1c2d6658a575fbecb5ab1418  gcc/ada/a-ztfiio.ads
! 2b8d6f858cdbdffb552358fdbaa3b9a2  gcc/ada/a-ztflau.adb
! 3ac4b44c1d840784ed0bf9813e69f512  gcc/ada/a-ztflau.ads
! d61ac37e07820389b6aa0c29aca8d35d  gcc/ada/a-ztflio.adb
! 7aae0945e67f16f4f77aa54a65552f3e  gcc/ada/a-ztflio.ads
! bc15514950ad10a56e94f596d1799345  gcc/ada/a-ztgeau.adb
! 5be27dc72d355ebff8adcd1108f56b4a  gcc/ada/a-ztgeau.ads
! 5fcaf08b85263bdb96f23196b24852e2  gcc/ada/a-ztinau.adb
! e3d5cf65802191cbd4867884ca85f9b8  gcc/ada/a-ztinau.ads
! 4050fb256e8d8e5d369181347f14b486  gcc/ada/a-ztinio.adb
! f0456d31ec0aa6f6786e1b635f8023cb  gcc/ada/a-ztinio.ads
! 55223110ddfbe40032be5ec23a5fe1f9  gcc/ada/a-ztmoau.adb
! a2851c63d23bc2610b3e8b2077c52942  gcc/ada/a-ztmoau.ads
! c26c506abed630ff234b69c718ba4fe8  gcc/ada/a-ztmoio.adb
! 9831d312ef279fc55e5e051745be05d2  gcc/ada/a-ztmoio.ads
! b179fec560600f5286bd170c62b3e6af  gcc/ada/a-zttest.adb
! 2caf047380f684add2bd5a35dc4e1091  gcc/ada/a-zttest.ads
! 08223105fdddd34383b56c547b59372d  gcc/ada/a-zzboio.adb
! a80428bcd2bf9ab7214609e68ff1651c  gcc/ada/a-zzboio.ads
! a6d7b54a7a1a401188cfe54d1c2bad3b  gcc/ada/a-zzunio.ads
! aad41855092e5648dbc6e7ab9d94cda3  gcc/ada/ada.ads
! e187997138ad030fe8b97464559009fd  gcc/ada/adabkend.adb
! dc7fa6c2738b8e726e9cb4c8fd75f505  gcc/ada/adabkend.ads
! cfdc319ef3cac7d05d6e055b6d57b965  gcc/ada/adadecode.c
! f24eddc6e6b6955059731ac35c3ecc39  gcc/ada/adadecode.h
! c572e573bb19c8a99dc70b7ec7e30f18  gcc/ada/adaint.c
! 2ba7ea4535dc44da0d10df6dc8f45963  gcc/ada/adaint.h
! 013e861f617d7421fd534f705d9e0bcc  gcc/ada/affinity.c
! 08ae3c97ba4d8154c279431725d7eb22  gcc/ada/ali-util.adb
! 1bf03ddd0c3510af237b0d339cabc3dd  gcc/ada/ali-util.ads
! 11f9e8e52136f2868768896e2bc2f517  gcc/ada/ali.adb
! f70eccae1df4a63284fe29f4fdb47f20  gcc/ada/ali.ads
! dd8a3ec68e51f268ebe4497d8e479e17  gcc/ada/alloc.ads
! 5ab7f6b15d77bc283b50a97d4fe6d323  gcc/ada/argv.c
! 405eacfd6468fcb58fe8f724d19a5b59  gcc/ada/aspects.adb
! f10ddc103d71614a162a09278cace093  gcc/ada/aspects.ads
! 9d02ae6628d704e9a1087d04e9ab5c52  gcc/ada/atree.adb
! 3d00fcb6946b2e49814cf94649f5d5c9  gcc/ada/atree.ads
! c7bf98ff8e565c3d6333d4bee0b9e5cc  gcc/ada/atree.h
! 32be50d674a4fb546a7e63ae09a84ac3  gcc/ada/aux-io.c
! ae8799f21adeaf5cf15eb22654d2f961  gcc/ada/back_end.adb
! ca6d76df751ee16fe7f08540a40c3d9e  gcc/ada/back_end.ads
! e20579719bcf5a5806dd35f5a3c5ac37  gcc/ada/bcheck.adb
! 98cd146fde62237f7d4d21fe1b9765c5  gcc/ada/bcheck.ads
! 71181b7f8b49411b4c5dcf342e23230b  gcc/ada/binde.adb
! ef0d00d74c084b62c7b9d22fc11210b7  gcc/ada/binde.ads
! 70b22adb7e26c62276de5554d1869fa1  gcc/ada/binderr.adb
! 0da854a1741139995e279b6037859f2c  gcc/ada/binderr.ads
! f94fa08a96107462a2f42223fe90af33  gcc/ada/bindgen.adb
! 70ade0ed9a75d10952927118be726d08  gcc/ada/bindgen.ads
! 3b59dec21ccf337652d445da57bb1bf1  gcc/ada/bindusg.adb
! 5e9431aebb23ef27f2820cd97c42748b  gcc/ada/bindusg.ads
! d9f00e3ca883b25b98fd4dee36d53349  gcc/ada/butil.adb
! 2fc18c92e72afdd1c6a20e0eef767ace  gcc/ada/butil.ads
! 82743a56bcb3dc8bb7cdb4c60e0f21c9  gcc/ada/cal.c
! 71c71bcd90c113e366bf720c3d886660  gcc/ada/calendar.ads
! d683244cc4c8e837cad9871393482acb  gcc/ada/casing.adb
! c5e4abacc980b3f8ed73db276cee0ce5  gcc/ada/casing.ads
! 153139814fd2593e53ee4361696874c6  gcc/ada/ceinfo.adb
! ca22c7b98090c2309a03df131ab65c4b  gcc/ada/checks.adb
! 9673b4d7799c332becf6e1a70a8151ac  gcc/ada/checks.ads
! 58f41b80dbd19d6c281fe307d9f63cdc  gcc/ada/cio.c
! cef5663a52cb43e9315b21a58023ac35  gcc/ada/clean.adb
! 9a36d574098d976ee0279592d026b972  gcc/ada/clean.ads
! 3257def807a67872f37b7cb655387437  gcc/ada/comperr.adb
! 1ad3f00ba3288ec56abed700e8fe5eff  gcc/ada/comperr.ads
  fbd23958a6d5c4207e39317e708436ac  gcc/ada/config-lang.in
! 1d4818efddd8cf1e06495b610a297c66  gcc/ada/contracts.adb
! 992e69d7dd05c32c6e3b102c437da751  gcc/ada/contracts.ads
! 6e05548d8d2fbb2b63a0f07476437fb3  gcc/ada/csets.adb
! 4e4a23a69754d2ec7a8951a8570fe5b0  gcc/ada/csets.ads
! 00b3159bd154361d88cd7ed3f6673057  gcc/ada/csinfo.adb
! 58f0d9e5c3910fd4c5ab37c695a211b8  gcc/ada/cstand.adb
! 0626c2b2827a691f6919c4f32956b44d  gcc/ada/cstand.ads
! ef3916b00d35612c4e3f0256c44b1624  gcc/ada/cstreams.c
! ca20a5b0ceaf05752d35f22f4802e9da  gcc/ada/ctrl_c.c
! 62dcaa288fb6cdae33653a160cd5998d  gcc/ada/debug.adb
! c549717d52aadbbd991840bc6bd8fee0  gcc/ada/debug.ads
! dae35aa125a15b7b7ec60ba08134a7a5  gcc/ada/debug_a.adb
! a19c3281e8f31638bd41b092668f7229  gcc/ada/debug_a.ads
! cc7c9e5bb0c5d89e3e20c510245c7dcd  gcc/ada/dec.ads
! 7b8780ee0efd7cf9b76a1db1ad4ee931  gcc/ada/directio.ads
! 81edd6f89d1a1ecd186d006b039af4c3  gcc/ada/doc/Makefile
! bea04c3af09726f1d9587c3a5ba4404a  gcc/ada/doc/gnat_rm.rst
! f8d5b15c9ba8719954e24ece8770ec81  gcc/ada/doc/gnat_rm/about_this_guide.rst
! 21b110398d54a32c1159f7f2f6a608bc  gcc/ada/doc/gnat_rm/compatibility_and_porting_guide.rst
! 7d9094d6287f702a2d2d56057c380777  gcc/ada/doc/gnat_rm/implementation_advice.rst
! 9e2417fdf2a299bb3c82b9579bdfdca0  gcc/ada/doc/gnat_rm/implementation_defined_aspects.rst
! dac7806d926d0e0ed817aad8b9d85e90  gcc/ada/doc/gnat_rm/implementation_defined_attributes.rst
! 8abce8a287a97989221d5af3ca90111d  gcc/ada/doc/gnat_rm/implementation_defined_characteristics.rst
! 2d450e8e5b6a862a2cb16ca7a7a86de1  gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst
! fbad629ff296f6bd40923bb82fc880da  gcc/ada/doc/gnat_rm/implementation_of_ada_2012_features.rst
! fff98ad4b96c0b0b3f87ef50b391e1ad  gcc/ada/doc/gnat_rm/implementation_of_specific_ada_features.rst
! 30fc741cc921f7fc733446578927c299  gcc/ada/doc/gnat_rm/interfacing_to_other_languages.rst
! a37fe770a61488da7ed229346b7e6f8f  gcc/ada/doc/gnat_rm/intrinsic_subprograms.rst
! b947505d67213843cfc9cdec7d39896d  gcc/ada/doc/gnat_rm/obsolescent_features.rst
! 724f772d400cf827b591e9de745627df  gcc/ada/doc/gnat_rm/representation_clauses_and_pragmas.rst
  03676be4f649629e37041b8c849c7825  gcc/ada/doc/gnat_rm/specialized_needs_annexes.rst
! d10ae54538e5a8e6029793013616bd36  gcc/ada/doc/gnat_rm/standard_and_implementation_defined_restrictions.rst
! e42b1711be35f373830f239a67983852  gcc/ada/doc/gnat_rm/standard_library_routines.rst
! 66a9fca0dd0fd2e63aa1457df17eb2a7  gcc/ada/doc/gnat_rm/the_gnat_library.rst
! 7088260896abcf9c3d0f442ae00077df  gcc/ada/doc/gnat_rm/the_implementation_of_standard_i_o.rst
! 5f16ab18f54ec72c7897a605b1e286b5  gcc/ada/doc/gnat_ugn.rst
! 89f5a27f7694c574f69e45002f9b7507  gcc/ada/doc/gnat_ugn/about_this_guide.rst
! 0149fed85ee92e8dabdf0c4a888fc2b2  gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst
! 39b5e78d023080767690346f582db884  gcc/ada/doc/gnat_ugn/elaboration_order_handling_in_gnat.rst
! b72c2b7cc09165daaea0c8c5619867a1  gcc/ada/doc/gnat_ugn/example_of_binder_output.rst
! bad7b4b4585b9a27761e22123a86c779  gcc/ada/doc/gnat_ugn/getting_started_with_gnat.rst
! 1575a194a836f23add42ba99eb475b8b  gcc/ada/doc/gnat_ugn/gnat_and_program_execution.rst
! 361fe4903df4c49c8bf632cf146964ab  gcc/ada/doc/gnat_ugn/gnat_utility_programs.rst
! 500e57d86369d7809dfc12dec3599a19  gcc/ada/doc/gnat_ugn/inline_assembler.rst
! 997147ffc879a647493287e664f9b3cc  gcc/ada/doc/gnat_ugn/platform_specific_information.rst
  8e1de4b36a20872c09a28a30336fbe11  gcc/ada/doc/gnat_ugn/project-manager-figure.png
  062c912e168e9f97d4b4ae9c766300b8  gcc/ada/doc/gnat_ugn/rtlibrary-structure.png
! 5524cc8a97eee3130bbb10605cc5f7df  gcc/ada/doc/gnat_ugn/the_gnat_compilation_model.rst
! 8ededb732b6a710d3d4fd350ff5158b6  gcc/ada/doc/share/ada_pygments.py
! 42f6bf22b58f62b902aa1efbd25a8833  gcc/ada/doc/share/conf.py
  9f43695687d6ab9372dfe236a9829279  gcc/ada/doc/share/gnu_free_documentation_license.rst
! 51df132ed68286cb9a7b1b4f0b779731  gcc/ada/doc/share/latex_elements.py
  90adfcde2feb6d6c090c2b18a1578145  gcc/ada/doc/share/sphinx.sty
! 8a8a027c7d53bc26c272bf2b0e91a068  gcc/ada/einfo.adb
! 644dee0526ccb0ad78c39849400e0aae  gcc/ada/einfo.ads
! 3b8912f571dc091b6589e93c7cf6fd59  gcc/ada/elists.adb
! cbf744b15f91c7e2f5e5beff027518e8  gcc/ada/elists.ads
! 75d1c84540bd0c0de2a40a583d9710d3  gcc/ada/elists.h
! 644e76eeeda20b6f53022294f85ea025  gcc/ada/env.c
! 0bd19481cccaa16bdef296dc8c6dbb41  gcc/ada/env.h
! 09cd9190a48a024ac26a198da7ceedf0  gcc/ada/err_vars.ads
! ff4f065bd3a33e13c55fc4a583b4e098  gcc/ada/errno.c
! 1fb7e5b3a375785a93cfa4e25803161b  gcc/ada/errout.adb
! 655a5aa6f59dc6fa1e0aa900c5cda828  gcc/ada/errout.ads
! ba28c805f9f8e333216b630a1f06d61e  gcc/ada/erroutc.adb
! 7d8834ff72a6bfabdc685c4f08b92384  gcc/ada/erroutc.ads
! a0e5b6345b9c64c44c58dd94c28e94b3  gcc/ada/errutil.adb
! ecedcb5ea2f415e4cb95a20610fac247  gcc/ada/errutil.ads
! b7bafdc98c6ccad45ac3a981286f0bec  gcc/ada/eval_fat.adb
! 6f70f898adf9597e3e251e9c98b6539e  gcc/ada/eval_fat.ads
! 95a9afe01e28870af36a064161a37a76  gcc/ada/exit.c
! 916918f9c7b19951fa4994661885f2d9  gcc/ada/exp_aggr.adb
! a2b2b87b3c75e46f5f3babe79f855a3c  gcc/ada/exp_aggr.ads
! 7a4dbe8417e7737cb57d5e26ee6a8724  gcc/ada/exp_atag.adb
! f768c6b870ebc746874cc73fcdbdf7ab  gcc/ada/exp_atag.ads
! 6c7a20b678e9b658aa9d76394d9ad246  gcc/ada/exp_attr.adb
! 5702351fe63e0743b3814a1800c30ed2  gcc/ada/exp_attr.ads
! 47f473b5c4602ac1bb03108dba91a1d3  gcc/ada/exp_cg.adb
! 4eabed8d6501ce1ad40758d4710a9831  gcc/ada/exp_cg.ads
! 5ccfa8aff821d4ddb7a383357ddb3724  gcc/ada/exp_ch10.ads
! 07c9087ff8d04b8ef81ab55f2dc3ecd5  gcc/ada/exp_ch11.adb
! 682ec48bbc3e20fbe35675b9fa4c6752  gcc/ada/exp_ch11.ads
! 9aac3c4e7304324f562f470a258a0160  gcc/ada/exp_ch12.adb
! 1cc30a7c9c86259e0688c642c253d652  gcc/ada/exp_ch12.ads
! db490c2781f3974e6d837c134babc359  gcc/ada/exp_ch13.adb
! d7b66ac1aaeea0be7a33b6412aa727b9  gcc/ada/exp_ch13.ads
! e930ddb7068625407d6da8234052844c  gcc/ada/exp_ch2.adb
! d0515cdb4252eb70d972b70426c649ac  gcc/ada/exp_ch2.ads
! 16ee89bc3ee6a2bc2945ca2fd84eb2d5  gcc/ada/exp_ch3.adb
! 6a0e34c2eb56d3eb433a3c7e9bac4115  gcc/ada/exp_ch3.ads
! 1b0eeab38f731dc303bfa81b3512b981  gcc/ada/exp_ch4.adb
! e5d12abbc5b0b1ed7f257c85b2414be3  gcc/ada/exp_ch4.ads
! 002da4e43860c01d6f39e49ca2efb0a4  gcc/ada/exp_ch5.adb
! 467bebd2c76c4fd5a500f3e53e9b6b4a  gcc/ada/exp_ch5.ads
! de5c9eda2654f978cd49c9042a718857  gcc/ada/exp_ch6.adb
! 4b1071b03ddc151660c032228db0615c  gcc/ada/exp_ch6.ads
! ce1c6a9c150476cc1e2171b4c937a3ae  gcc/ada/exp_ch7.adb
! 59398e070dd9896a33e08a26df85b3de  gcc/ada/exp_ch7.ads
! 238b6abcc5c6ce466d26a08f9ea64839  gcc/ada/exp_ch8.adb
! 1d240d5954ea7e84bf5fc1dd5a619f16  gcc/ada/exp_ch8.ads
! b906d2f35bb705820b8b2934a7483f30  gcc/ada/exp_ch9.adb
! d2b05375ea363ca6541db733fdc906cf  gcc/ada/exp_ch9.ads
! 2e7d2d92ffde4e79c230f749ad21a0e2  gcc/ada/exp_code.adb
! d2e1249b6b65db4c78621b52c7dc14fc  gcc/ada/exp_code.ads
! ac2d76efb55d697c54e5117fc52307ff  gcc/ada/exp_dbug.adb
! a08399e4356f39b630fac3363438f012  gcc/ada/exp_dbug.ads
! 44c3e091a61d7573dd65be1636c556ec  gcc/ada/exp_disp.adb
! 6b8ad24f7c35c3a6e9964f0bc44696b1  gcc/ada/exp_disp.ads
! 3d949ef4bfcf3b6eb99bc62d7b567a66  gcc/ada/exp_dist.adb
! 8982dea7c140f9bfdc3269a605ba06ad  gcc/ada/exp_dist.ads
! b8deafde49cfa8d9c22385fa3022a613  gcc/ada/exp_fixd.adb
! 575f3ef6702c0aa428b865d71e811219  gcc/ada/exp_fixd.ads
! 0972a2c6142d3d120234f584b51c4640  gcc/ada/exp_imgv.adb
! e756b1cfdc4376a54092d75868b1b7d4  gcc/ada/exp_imgv.ads
! cca3941d4d36d50e384a0ef89e197b8c  gcc/ada/exp_intr.adb
! 4e1ff309767b6c702458fef9a62a6ced  gcc/ada/exp_intr.ads
! 154d1d8f0036cca33eb548b4dfdf18ad  gcc/ada/exp_pakd.adb
! e68fa3b3e17a96e18ce8262d7ce34c7f  gcc/ada/exp_pakd.ads
! 91624fbb291c12510462b1210c9eed69  gcc/ada/exp_prag.adb
! 79b4da9408e51b7c740b7442b0a0754d  gcc/ada/exp_prag.ads
! 6aaf8db099fc95854b7c14334e818be0  gcc/ada/exp_sel.adb
! c5c937a97ea29f828adffb209a19f7da  gcc/ada/exp_sel.ads
! f96358f0239771ec54196713fc937b8b  gcc/ada/exp_smem.adb
! ff33721bb37fa48e8fa9ffd4f1f42201  gcc/ada/exp_smem.ads
! 0234d2dec5fa36f43d0ac9f5e961ed0a  gcc/ada/exp_spark.adb
! 3fb2931d2bb607f58fab37da7474140a  gcc/ada/exp_spark.ads
! 6cacf1ffcd903e191838ad22066d9f64  gcc/ada/exp_strm.adb
! 1833a64c7d9d543a5ec80127124ca06d  gcc/ada/exp_strm.ads
! 77f5a9e31e44883a119f667af8bff5fa  gcc/ada/exp_tss.adb
! 62147022093a4fa93a306ab80bd6d85d  gcc/ada/exp_tss.ads
! 719bf38cf1ca283c63f0272bf2d4ae26  gcc/ada/exp_unst.adb
! e480dd7aa946c540a2418db8dac6391a  gcc/ada/exp_unst.ads
! 13e4e87c6080088476d06c7d89362c65  gcc/ada/exp_util.adb
! ae3d76934bd3d337810fdfe2a6241a57  gcc/ada/exp_util.ads
! 8007a42cdc460accacc052ed81042c47  gcc/ada/expander.adb
! 856cf1514fa6e098c62b2213757c16bd  gcc/ada/expander.ads
! e044a3fffd1fd8033aeb0ad8c19e78bd  gcc/ada/expect.c
! 47a90f16125b780c219d015f09f94551  gcc/ada/fe.h
! 9f7f07b76ab6bb41a0c8c16bc4652374  gcc/ada/final.c
! d01403851a5364d53fe4e42045ee1780  gcc/ada/fmap.adb
! c1521c6e3b4d7465c7d7c52c05cba906  gcc/ada/fmap.ads
! 4261bbcb61251f9e29c308c8389dad26  gcc/ada/fname-sf.adb
! 165276eb84be5a3651614b7e88a8da27  gcc/ada/fname-sf.ads
! 3905c035ea64a0d3996e20cd8df7d3b8  gcc/ada/fname-uf.adb
! babfbe7293bbf09e7c3f8ea4687c63d1  gcc/ada/fname-uf.ads
! 29f50c99fe193e4151614304ca23a430  gcc/ada/fname.adb
! 7c7db30d1cb29817071224b5483a73bb  gcc/ada/fname.ads
! 8eef36501705b896a2bf87a2e3408ed1  gcc/ada/freeze.adb
! 8f84a5572dec4b7daffdb0798b39c27d  gcc/ada/freeze.ads
! 95bc3289df90fd8e01c5198d51ae03da  gcc/ada/frontend.adb
! 56468471df6a80fe2353783a41e2e00c  gcc/ada/frontend.ads
! 310a6a2295146d75b06d3e18d23b2191  gcc/ada/g-allein.ads
! 98c681d56044a17cecefc78b71bbaf9e  gcc/ada/g-alleve.adb
! 53299c5104c4dc90dee9512d5225bbd2  gcc/ada/g-alleve.ads
! 09ad7347b163fb5dcf182c255d014e32  gcc/ada/g-altcon.adb
! f3f793f8161149798ed5d7d4f2d79c63  gcc/ada/g-altcon.ads
! 3b865f733cb2f2d008ba2c9d4df179ef  gcc/ada/g-altive.ads
! b0a2b741b93a1bbaa725a260e13c09d6  gcc/ada/g-alveop.adb
! 17a1d885b345dea8cc154720f70b7d2c  gcc/ada/g-alveop.ads
! f35fd06854a109afd8ccc29d90322af4  gcc/ada/g-alvety.ads
! 6049ce338bb03ec2a57e5a5ea435c884  gcc/ada/g-alvevi.ads
! e044c85067b421ca1e517263682e136b  gcc/ada/g-arrspl.adb
! be5656406ae98ec2b454bb4c8c6afb9c  gcc/ada/g-arrspl.ads
! dd345defc374006f5ac2c9fa7733176e  gcc/ada/g-awk.adb
! 3aed3e4a5e86817c9100d3c8f3b7ac58  gcc/ada/g-awk.ads
! 21ede09529694e8263aa6b442fb352fa  gcc/ada/g-binenv.adb
! b0df1c700e87475114473f3251b55b26  gcc/ada/g-binenv.ads
! fbe629dbc5c66798e9c33b1fdf59f3f1  gcc/ada/g-boubuf.adb
! 01b43b4d503bc73c6ccea546b92fd526  gcc/ada/g-boubuf.ads
! e54d0bfc0424af8270349ada673f6c15  gcc/ada/g-boumai.ads
! 43d5f601363e8364c0dce9201ce0b296  gcc/ada/g-bubsor.adb
! b495cffb8422cfcdedac08df85ba1432  gcc/ada/g-bubsor.ads
! 81a5128b0069801331121a466d5d8b15  gcc/ada/g-busora.adb
! 7f736932426ca01bb7d80f142bf59732  gcc/ada/g-busora.ads
! dc585478283768cb9b2882ca519aa775  gcc/ada/g-busorg.adb
! 900029affbf0b2edb3f9efaff510e5a7  gcc/ada/g-busorg.ads
! c000b7bdf924911d4060ff4779de1232  gcc/ada/g-byorma.adb
! 8a4e2c08d7bdb85628add2b16505b11f  gcc/ada/g-byorma.ads
! 3c8d291f7791b34efda7a681eae87432  gcc/ada/g-bytswa.adb
! 5b946b69865b84b69c693e49dcf334d5  gcc/ada/g-bytswa.ads
! 6dd1dfbe5a5a9c05b3a397d4817b4511  gcc/ada/g-calend.adb
! 93d3aced13cdbb841671eb253622cb51  gcc/ada/g-calend.ads
! fc7662a34e933d67593ad236e6bb999d  gcc/ada/g-casuti.adb
! 4db2ed94cea15f06e3ce4e8eb28247c7  gcc/ada/g-casuti.ads
! 73a161353c14548c3e7c1be2d8373c9f  gcc/ada/g-catiio.adb
! 1a6f099ffb0786f58d1831491dadeadd  gcc/ada/g-catiio.ads
! 24e905d41d03017a7c3e0ced70a41225  gcc/ada/g-cgi.adb
! 6e5bb2eee96662fce1b6cb098ea91206  gcc/ada/g-cgi.ads
! 4261d4a1455686e9c548596591b489a7  gcc/ada/g-cgicoo.adb
! ffd0bc766345dd140e2b58fd781d013f  gcc/ada/g-cgicoo.ads
! 8f1d7bbecdcc4526e6981f20b2c6aa3c  gcc/ada/g-cgideb.adb
! 774b86530311360b01e1e5f5919cbbf2  gcc/ada/g-cgideb.ads
! 0f101e7a6d084c30da172d9e1c698c73  gcc/ada/g-comlin.adb
! be1945cefc4615ed9323ca11dd37e8e5  gcc/ada/g-comlin.ads
! 810166883e82bd21c4358dc3983518f0  gcc/ada/g-comver.adb
! ca3c61abdfe3cd9da8902dc86e3f6ee5  gcc/ada/g-comver.ads
! 6387be0cce18ddb87c79a3123dc011cb  gcc/ada/g-cppexc.adb
! 8362158ed59d68ff8b44f148a39175d5  gcc/ada/g-cppexc.ads
! 7b91fc3af18b42eddb2f39e4a28bb936  gcc/ada/g-crc32.adb
! 5cda39c6c71cf86a1555bd1f32004ef4  gcc/ada/g-crc32.ads
! 7cd11a0de727458ea74194f4dba4416f  gcc/ada/g-ctrl_c.adb
! b37d0d9ac5a58e463682df53eef443b4  gcc/ada/g-ctrl_c.ads
! 958d15527c5f8c53d6afeeeafc74c74a  gcc/ada/g-curexc.ads
! c272afd98012aaef832703dcee0f839f  gcc/ada/g-debpoo.adb
! 7b8a3973d8362c1987974ff1c8df0a9c  gcc/ada/g-debpoo.ads
! eff0565319b376d26065cdfbe4b06f4f  gcc/ada/g-debuti.adb
! d222db9e39e562727cfc489235f5b89a  gcc/ada/g-debuti.ads
! da89c93ae62390c1958097694073e616  gcc/ada/g-decstr.adb
! d502f0ef1b410fec97bf3180f8ae44ee  gcc/ada/g-decstr.ads
! 0f6b625477f8da11da94228215586af1  gcc/ada/g-deutst.ads
! 4a54a6fe56111b742426487e7bc396d2  gcc/ada/g-diopit.adb
! 7084b5aec58ca158db51fef17c70bfb4  gcc/ada/g-diopit.ads
! c534e8d1f3567eb6ec29ae0f82d84b21  gcc/ada/g-dirope.adb
! ca435feb346b5196cfe4649a45b64f24  gcc/ada/g-dirope.ads
! 31ba7841c313b15e170b2ab3f6257dbc  gcc/ada/g-dynhta.adb
! 607cd737eab6a4083aebfa763693ff70  gcc/ada/g-dynhta.ads
! 5d668c451135784d37700ab67ad875ca  gcc/ada/g-dyntab.adb
! f5479dcd9b9d72c266913ca9f89bacfa  gcc/ada/g-dyntab.ads
! d4c0b20517212adc2e6252fab56c2f57  gcc/ada/g-eacodu.adb
! 678670dd45c1218eec4b6bc521422232  gcc/ada/g-encstr.adb
! 9d359cf392225a0662bf5388db81b1be  gcc/ada/g-encstr.ads
! ea58e87e1005e6d8293d9b606cac73ad  gcc/ada/g-enutst.ads
! 2bf777d0fc2beb3c58c31d058c89981c  gcc/ada/g-excact.adb
! 110db219f644665f19c647017f904fa0  gcc/ada/g-excact.ads
! eaece65cee8dd44e5c2a9552b6b86d9b  gcc/ada/g-except.ads
! b2a0b0c6fdb2db8a26592698bd055028  gcc/ada/g-exctra.adb
! 5e2b09b8366f8cbda8f95dd9621c1b78  gcc/ada/g-exctra.ads
! e0d609bbe87dbce04d5ae18a06a35678  gcc/ada/g-expect.adb
! f3b30673b4ba42a7ddf8ad6a35dc6a8d  gcc/ada/g-expect.ads
! 9130a1e353ddd3827ef06cabf31c8edf  gcc/ada/g-exptty.adb
! d52c16067dfdceb3c1c69f0ad71dd098  gcc/ada/g-exptty.ads
! f36f0daf10f34ef0902fd4ea56f8be62  gcc/ada/g-flocon.ads
! f45f088cbd677e1ebf241960b73a7a78  gcc/ada/g-forstr.adb
! 2d983e409576ed74e0873e07fc876ddb  gcc/ada/g-forstr.ads
! 35807a5a4b3f9b3b416eceef1df15bcf  gcc/ada/g-heasor.adb
! 0ce1a3efef64975b3985871ef2a928fa  gcc/ada/g-heasor.ads
! 53a09037ff9f85cc172342e86bd23636  gcc/ada/g-hesora.adb
! 84ca1f1ec4216b56c5b9d4988011e52d  gcc/ada/g-hesora.ads
! 400d7c46a615c1bfef0e1b0db0f72fc2  gcc/ada/g-hesorg.adb
! e3e40094ad4b1a093109d2c931d5af0c  gcc/ada/g-hesorg.ads
! 32dcf7d0e062fe7f420f38c7ac91aac9  gcc/ada/g-htable.adb
! caf25df43b227bcf7a9248cef2e7093e  gcc/ada/g-htable.ads
! 14fc72071832c7a62ade6203e20b0ac4  gcc/ada/g-io-put-vxworks.adb
! f34a261e42e97cfaf363345f38bb9df0  gcc/ada/g-io-put.adb
! dd312faf034e7c8591d157bf25d08c83  gcc/ada/g-io.adb
! 5e1866cff39dfcfafa3dedcc8a9590ea  gcc/ada/g-io.ads
! 5aa3e36295815f02eb29ce6d8cb61ea7  gcc/ada/g-io_aux.adb
! 280094973786557f28c3b3afdceab1fb  gcc/ada/g-io_aux.ads
! a4c9b1990ec63ebe13d6de35547eb796  gcc/ada/g-locfil.adb
! 981fce00bf76ec8697a2263c6d375992  gcc/ada/g-locfil.ads
! eee5cb4cc73e90638280e75c8d0f36dd  gcc/ada/g-mbdira.adb
! 0388a798415c704fcedce453cf23864e  gcc/ada/g-mbdira.ads
! 31bd07ba122ead2d8c8ced190052ede0  gcc/ada/g-mbflra.adb
! fd8d7ea8f1db29845b52fcd222b58a2a  gcc/ada/g-mbflra.ads
! 67d36605efac6a3feb8b6216453d8adb  gcc/ada/g-md5.adb
! e1af5e0f2527965298ae08ab5fa867d4  gcc/ada/g-md5.ads
! 951f162c0ec04a8f542d52ea9defeaf7  gcc/ada/g-memdum.adb
! b74ec0ad6d0ccce0cf1ac5f03cf2316b  gcc/ada/g-memdum.ads
! 8550c2f962e6c7e3408db220791a1484  gcc/ada/g-moreex.adb
! 5a938c52047132d7f21e42f12ed84de6  gcc/ada/g-moreex.ads
! 8eb9fdd383030c225fa960029ef9cbcb  gcc/ada/g-os_lib.adb
! fbf60307a5813f96df01274172b67ab5  gcc/ada/g-os_lib.ads
! af15648cd0dd339f7e93dc566f9df63e  gcc/ada/g-pehage.adb
! 04157a6948dd01510b8178f770aed913  gcc/ada/g-pehage.ads
! 1d26f48caeabaea159409b583551c648  gcc/ada/g-rannum.adb
! ab02f70461fdf7e5d1b88fa9b18d276e  gcc/ada/g-rannum.ads
! ac7d7301a758c003435a8637a7d77887  gcc/ada/g-regexp.adb
! 0d0e807220dd15c9798d6a0738995bcd  gcc/ada/g-regexp.ads
! 2f02c5bc9e08bdf8df32241f92c8b819  gcc/ada/g-regist.adb
! 4567d96a56497c5b2fb2d5705d2c2b59  gcc/ada/g-regist.ads
! 24d03e159c9b3cfd9931bb67a0392da8  gcc/ada/g-regpat.adb
! 06e0238080c9c6767869cfcbf8bd20ce  gcc/ada/g-regpat.ads
! dadaa81c66317367e5d3a8e02efb382f  gcc/ada/g-rewdat.adb
! c9d2f4e5d5b537a424da56008ff35729  gcc/ada/g-rewdat.ads
! e15d486ca6feab49319d66ca405df1b5  gcc/ada/g-sechas.adb
! 546b6d7e3f18f253a6d70f6694f45f25  gcc/ada/g-sechas.ads
! beb7df069cfdaf0bd380f1afbe4bc22f  gcc/ada/g-sehamd.adb
! 5860043d1f3d372798a9368644966245  gcc/ada/g-sehamd.ads
! 3a6fcc9b4fb0e1fcbb5e293baf20ab26  gcc/ada/g-sehash.adb
! 2f71070781617b0026d70cb562723cd5  gcc/ada/g-sehash.ads
! dfe2b479084dcb1e050205f6bc048f6e  gcc/ada/g-semaph.adb
! d1ddf19b43e1755381ba8ec92da6bcb6  gcc/ada/g-semaph.ads
! d7d9279ce8c48f8c63c161f091bdb5b7  gcc/ada/g-sercom-linux.adb
! 993a3e7cf4f79c86a9d885f070298078  gcc/ada/g-sercom-mingw.adb
! 12ee5e9d1774272208bd3ae3f91496e2  gcc/ada/g-sercom.adb
! 62035bdb8427ab6e3fc505057e6ca087  gcc/ada/g-sercom.ads
! 162a3c6ced0f2ce0e49fadb7c4714822  gcc/ada/g-sestin.ads
! e6a207be499202d050f25ead045d3a84  gcc/ada/g-sha1.adb
! c43b0ed7c0bf854dbaa4ec554a0df8a8  gcc/ada/g-sha1.ads
! 1947447727b7a615e266db41a6847bc8  gcc/ada/g-sha224.ads
! 83a8b69aed65ce19d2e312d15f706462  gcc/ada/g-sha256.ads
! 40947c2e13143fce2cab76e58c085dfb  gcc/ada/g-sha384.ads
! 3be471d835d57f1b83ed1333b779a7bf  gcc/ada/g-sha512.ads
! 2c62bf34fd93be1a43d3a92615279aa9  gcc/ada/g-shsh32.adb
! 0233d1952e2f6ee74ede7f7e57b407cb  gcc/ada/g-shsh32.ads
! 50b074d0d5676b2897875f5bd0388e44  gcc/ada/g-shsh64.adb
! 100e13125915ddc4b6be86d3c4e00cb0  gcc/ada/g-shsh64.ads
! 762ba3cc0da5f0a8bd9111cfb82d2218  gcc/ada/g-shshco.adb
! f4ef0191dd0908d481a339df13ed432c  gcc/ada/g-shshco.ads
! 94e4abc630c0e6a7739cd60540b1ba43  gcc/ada/g-signal.adb
! 2d96ddbe87b7bbb10d81ae80e1663ee4  gcc/ada/g-signal.ads
! 4bd1891c30f1b4bdd0d348640813022b  gcc/ada/g-soccon.ads
! edf6ce5c5c10943897bf39a8ec95f48a  gcc/ada/g-socket-dummy.adb
! 153879fd416b8e1671f8f91f9a813fe4  gcc/ada/g-socket-dummy.ads
! a48995950f4e1465793f14ca7bd87ace  gcc/ada/g-socket.adb
! d7983ee46f86b4524c7f4c88d9ecea8a  gcc/ada/g-socket.ads
! ee9de6562604be7aade21e548888eb96  gcc/ada/g-socthi-dummy.adb
! 7c14f1a2a8e697de7f602d93e81560de  gcc/ada/g-socthi-dummy.ads
! 69bf9c6b275162be4c5a6f5ff325f8a8  gcc/ada/g-socthi-mingw.adb
! e05dae7f03bfe5d156768031e87f23c0  gcc/ada/g-socthi-mingw.ads
! 01abb92985f1bba58b4a5765716f6191  gcc/ada/g-socthi-vxworks.adb
! d67ac093286171a68b37fe3f59887169  gcc/ada/g-socthi-vxworks.ads
! 039f240fa483f4a2500d71e8217334f9  gcc/ada/g-socthi.adb
! 24efef8691fd7219f68aa0d3c712a06b  gcc/ada/g-socthi.ads
! dce8064a017fdaaa9d553de1d0c34b97  gcc/ada/g-soliop-mingw.ads
! a346b23dcfa5d2f1bf3c03e4635318f2  gcc/ada/g-soliop-solaris.ads
! 34f62a7d1958d52974cb58792e621b67  gcc/ada/g-soliop.ads
! 1438aa90a9fcebee439dd284fbc8f83b  gcc/ada/g-sothco-dummy.adb
! 5ea9f53033eeee516b16496f500d0611  gcc/ada/g-sothco-dummy.ads
! 3c74461278581a11620162ccf913a316  gcc/ada/g-sothco.adb
! 575cfd9ff114c915cd0001ba6728bf5e  gcc/ada/g-sothco.ads
! eb4eab79dfc8fd0a614137c861c0813b  gcc/ada/g-souinf.ads
! 4f0e9e0360ce1a44dfc49a4efba6fcfb  gcc/ada/g-spchge.adb
! 56a0723815f752d7c375326c1bfbff95  gcc/ada/g-spchge.ads
! 514ab954fe556effd93ad94c6365133b  gcc/ada/g-speche.adb
! 8c14ec54aed93405f685fed70f94931c  gcc/ada/g-speche.ads
! 8b112eaf99d006ddde30f169e5c0cf84  gcc/ada/g-spipat.adb
! c28d75f998f9c9abc6a30348ce14d1f0  gcc/ada/g-spipat.ads
! 4f6d01ff200909c3b067463ab1957118  gcc/ada/g-spitbo.adb
! f23e0b270cb536e03bd40867e3ebe97b  gcc/ada/g-spitbo.ads
! 1a993052d280f1f327594d4b53bdda8e  gcc/ada/g-sptabo.ads
! 09e5e4204cd66b67c028f6d38f6b6cb9  gcc/ada/g-sptain.ads
! 6435b1bf4e91a3b054656763290fe803  gcc/ada/g-sptavs.ads
! 48818ab854bc1b6e63cb8bbb7a1c83af  gcc/ada/g-sse.ads
! ed5164f7a2fc8b4d8fd5f70ceeaa88cd  gcc/ada/g-ssvety.ads
! fe1fa635e2f5e1020beb6e18a0145748  gcc/ada/g-stheme.adb
! 0a805c2220efed9ea99303e08645a6f1  gcc/ada/g-strhas.ads
! 59ba3b7065e7344ed810227f5cc6a7fd  gcc/ada/g-string.adb
! 89136ff93e7fea8272f6d15a06439567  gcc/ada/g-string.ads
! 01bcdb571d414632be0e89f83a4e5f3b  gcc/ada/g-strspl.ads
! ac89a46a4a58db1fa1568344017ef5b8  gcc/ada/g-stseme.adb
! 5298b7f56509dde7776a7b6f6f49017c  gcc/ada/g-stsifd-sockets.adb
! ca6bb9556bf99fae3c60370b4f5a4392  gcc/ada/g-table.adb
! 806cf46671ae0d99e603f8115ad478fa  gcc/ada/g-table.ads
! cd2bd2cccc4d46ec3dc0dc9b128d32a9  gcc/ada/g-tasloc.adb
! 013f5c54066e5c0b19d88b614c261329  gcc/ada/g-tasloc.ads
! 5a2c1aaa2fd5936bc1135572bc465212  gcc/ada/g-tastus.ads
! cd79891c6c8939e630728812ecbddb92  gcc/ada/g-thread.adb
! ed61ca1a939a809224494ac3d3d48b8a  gcc/ada/g-thread.ads
! 682f83be33312602f967a0cf65333217  gcc/ada/g-timsta.adb
! 3e9c681b6d927601536ac9b956f6f494  gcc/ada/g-timsta.ads
! 7634fcc0c42208afa08c2948caea39c1  gcc/ada/g-traceb.adb
! b4a136754bd40f655540aefedf4e8b88  gcc/ada/g-traceb.ads
! 458751d3cf4688e4f4c6d4558d7db423  gcc/ada/g-trasym.adb
! c66313c516dbf7ce2fe1d0f47a35c7e7  gcc/ada/g-trasym.ads
! 5b78a571c28ff764f1af496fd43242c4  gcc/ada/g-tty.adb
! 517b7242dbbfb698eaebc73f23c6cc5d  gcc/ada/g-tty.ads
! 1aa11b5773687596aea31fbd7f8f823b  gcc/ada/g-u3spch.adb
! 98b630b6b00c033d071cc006430af759  gcc/ada/g-u3spch.ads
! fe9726bbd84ea4d647b142adfb113871  gcc/ada/g-utf_32.adb
! c093a055bf86896986afda710f309dc3  gcc/ada/g-utf_32.ads
! f459c88852baf5a8d82a6acef1473c32  gcc/ada/g-wispch.adb
! 22f184087d5fd885eeff7ad869c041ec  gcc/ada/g-wispch.ads
! b2c8517ffdfa5ed42812bba69004f6f2  gcc/ada/g-wistsp.ads
! d7eca93022b3adc8f4a61dbe910e95d2  gcc/ada/g-zspche.adb
! b45654446bc74bb68ae4adef78906e9b  gcc/ada/g-zspche.ads
! c97edf7ce39a908dcaec55eb49d0abee  gcc/ada/g-zstspl.ads
! 03f505d0c5a108b347698645d923a2bb  gcc/ada/gcc-interface/Make-lang.in
! 6f4fbe2ce7958fc0afcfd85bc1ca33e8  gcc/ada/gcc-interface/Makefile.in
  055be3d11fa6ccb53ffe7f8970a005ce  gcc/ada/gcc-interface/ada-tree.def
! cb9de0fea640e1eb0cb786f98b60263d  gcc/ada/gcc-interface/ada-tree.h
  51c95420b5900990141d2e5705582197  gcc/ada/gcc-interface/ada.h
  4cbfd794461da0feb1b8661ec623b6c6  gcc/ada/gcc-interface/config-lang.in
  9779c4debc13c6f1cfa1e4e6a6e6c638  gcc/ada/gcc-interface/cuintp.c
! abb812a5ed2b2de77f15f562821a631b  gcc/ada/gcc-interface/decl.c
  c413d4d50e9563859f4d751a4404b705  gcc/ada/gcc-interface/gadaint.h
! c7117c67e2102857d70e286a82985bc0  gcc/ada/gcc-interface/gigi.h
  f2528ece7aa7e2ed8123de8fe434252a  gcc/ada/gcc-interface/lang-specs.h
! 1bba4d8f118cd8b82ada60fb44393339  gcc/ada/gcc-interface/lang.opt
! bc6f86c4a773c1bcb6a433ee6463059a  gcc/ada/gcc-interface/misc.c
  7bd3630f35c5ac7b5c6cfaf8b16e5723  gcc/ada/gcc-interface/targtyps.c
! 9537a7f80ce82240be8e627f9cacfff2  gcc/ada/gcc-interface/trans.c
! fc98ad29d5c383124659e37a88ffdab9  gcc/ada/gcc-interface/utils.c
! d550c79030f34117a03a70132b6afe32  gcc/ada/gcc-interface/utils2.c
! 7441478a743eff5837846723eca81135  gcc/ada/get_scos.adb
! baa8fdaf8d693eb6c5a7e42944887584  gcc/ada/get_scos.ads
! f6a7006266db36877395136cfcb77e37  gcc/ada/get_spark_xrefs.adb
! 403ff61e74dcc44841866a1ca2315fd0  gcc/ada/get_spark_xrefs.ads
! 84fc90750645b047f14fe1dbbbc7a5c3  gcc/ada/get_targ.adb
! d8b8056c6ecfffcd97b9a5bae03b19c6  gcc/ada/get_targ.ads
! e168932707630954e8e308a369d36a8f  gcc/ada/ghost.adb
! e32aa810fd4521b88acf5c11f2c70ed4  gcc/ada/ghost.ads
  c39e2928a111b0037c2dc63f22527cb4  gcc/ada/gnat-style.texi
! 2ff4c924368ad90076de564801c94d53  gcc/ada/gnat.ads
! 255a22afb670ac5e22bb540bdce1c99b  gcc/ada/gnat1drv.adb
! beefe04ac280b78e5132623eae11e65c  gcc/ada/gnat1drv.ads
! 6d7caf294ffefd7e7b23ef79b97f0531  gcc/ada/gnat_rm.texi
! 89f094a0e6ab6d501b3a06873b36f5d7  gcc/ada/gnat_ugn.texi
! d16967b423156d5a5c65df1c3b94b0b3  gcc/ada/gnatbind.adb
! 966a668cd3b0e1c15164248e254f1831  gcc/ada/gnatbind.ads
! 1bef12825ecf0862711b52bcf3a55f10  gcc/ada/gnatchop.adb
! be6a6eeb976a7f3190c6061c1cc2fc22  gcc/ada/gnatclean.adb
! 2c23455e4aadbc9e7d667f9eae7297c7  gcc/ada/gnatcmd.adb
! 5cc2b5db98e33e286c25dadc4fefcf6b  gcc/ada/gnatcmd.ads
! 9dcff040cb55a2a6dbff8edd5545eb95  gcc/ada/gnatdll.adb
! 8f62a39eb5fca9938272a7909fdf7885  gcc/ada/gnatfind.adb
  670cd3e724c6b64c7b322c6e75a0e7c4  gcc/ada/gnathtml.pl
! 667d7cc541b70b2b4632bc5d0ff6846c  gcc/ada/gnatkr.adb
! 2428e9de656711a7c02be62a174ad769  gcc/ada/gnatkr.ads
! df5a85bb6f16b35569dcee8bff51edb3  gcc/ada/gnatlink.adb
! 21b97ef81d719d883e1fafb414a00dbe  gcc/ada/gnatlink.ads
! 947b78aada64b34e6431dbc66c14d896  gcc/ada/gnatls.adb
! c823c85d34148eeef9296d1dee1ad846  gcc/ada/gnatls.ads
! da6c6df59228a7e209b44428562190af  gcc/ada/gnatmake.adb
! 99a8d2e0a63cfbb91ac222e1e1528797  gcc/ada/gnatmake.ads
! 674c0c1dee4c2f30c75d53cd11a852fa  gcc/ada/gnatname.adb
! fa65e464c343823cefed3e35495a3bce  gcc/ada/gnatname.ads
! 6cbe9326362c2c78b08b32872c211e57  gcc/ada/gnatprep.adb
! 9751bfdb2ab379d7f0d17190378ceae8  gcc/ada/gnatprep.ads
  fb9fef5712ae1a7dfd425f14332d9bc7  gcc/ada/gnatvsn.adb
! eb56a3e885c5ecfc0444704cbf104e1d  gcc/ada/gnatvsn.ads
! ebe196153dd326c181d913ed6052dc82  gcc/ada/gnatxref.adb
! dd7236087a0fa2cda4f5ef57299d1014  gcc/ada/gprep.adb
! 8c8e913f544c9ce673df23f0decbdc42  gcc/ada/gprep.ads
! a008cc6238fababfd3dcab50b0908160  gcc/ada/gsocket.h
! 01b40c501dc73d4db7932d1b4b584526  gcc/ada/hostparm.ads
! 350360e3afc0f4a220883c5b3c5ec9b7  gcc/ada/i-c.adb
! a17d5545d513857737a1a94ec5e33532  gcc/ada/i-c.ads
! 421ea5ecf99485a748646116fd7197f5  gcc/ada/i-cexten.ads
! 2a74a194290d3a6f2aee4af7cd816683  gcc/ada/i-cobol.adb
! 04d61e8078afd58f81c62b9caec8da5f  gcc/ada/i-cobol.ads
! 5c07c78c03abbf2fa2ef6843d0dca767  gcc/ada/i-cpoint.adb
! 7ff1b65a3a2be51a789d3528c3987a65  gcc/ada/i-cpoint.ads
! 2ebf69b6ad57234b3d0bb1e429ba7d3d  gcc/ada/i-cstrea.adb
! 531e849390edfe29cabc191191497451  gcc/ada/i-cstrea.ads
! afded467c03e2a77464cd58df17418d8  gcc/ada/i-cstrin.adb
! f5df0a038e19227899b54fcf9225f433  gcc/ada/i-cstrin.ads
! c411e7eece03bea019ad9e39747d0de9  gcc/ada/i-fortra.adb
! fe08792d30f40125dd75d63c7bcd68fe  gcc/ada/i-fortra.ads
! 2518ec0533d14347ba5860746461444f  gcc/ada/i-pacdec.adb
! 73c853dd8cd2652a51e38c0f28ee1a1c  gcc/ada/i-pacdec.ads
! 73d1f84f91a1ba57c4092b3c959742de  gcc/ada/i-vxinco.adb
! 135f5a3601f53811db581d480fe4cb56  gcc/ada/i-vxinco.ads
! 1d33703de1320df628c3094070605c76  gcc/ada/i-vxwoio.adb
! 4c756d2c337af97b10b97aba4d98b447  gcc/ada/i-vxwoio.ads
! 275a889a9cf9915ba127ac2307a551f6  gcc/ada/i-vxwork-x86.ads
! fab16e7fe32df1ed8893dd0108bf2c8f  gcc/ada/i-vxwork.ads
! b4a47f10b61210b6788a2fd6ec965503  gcc/ada/impunit.adb
! a8e6e3ab96d04a8aad8e61f2e1ee5ded  gcc/ada/impunit.ads
! 59cd84220548ed44c4efa61e50559897  gcc/ada/indepsw-aix.adb
! c40aa5991541ff9c1916c95c822ae607  gcc/ada/indepsw-darwin.adb
! 01877942c2919adf0ea31294a9e9e547  gcc/ada/indepsw-gnu.adb
! 57936ea546d755e3d138838afaeebd0a  gcc/ada/indepsw-mingw.adb
! ccbbecdb50c95959b2cb1fd3491179ab  gcc/ada/indepsw.adb
! 5b85c73b60202d26b3cccad29575fd6a  gcc/ada/indepsw.ads
! 4316eea2a30d27d5335ef2efca4f8af1  gcc/ada/init.c
! 94727f16dba8454826d657eacaf91a68  gcc/ada/initialize.c
! 4e04c8b4e84490027f07b5b28bb1e462  gcc/ada/inline.adb
! fb4269d76b5523267a39735547178245  gcc/ada/inline.ads
! cac1de408c79fa916de10e3a8c2d4dc8  gcc/ada/interfac.ads
! fa9653a862ec6532089e6258af8d9fb5  gcc/ada/ioexcept.ads
! 1acd2f15253a004d86ba44a4d6bb90e3  gcc/ada/itypes.adb
! 013ecc35cea9a08a1b47fdbe1900dbb8  gcc/ada/itypes.ads
! 0362340184324b39d57910fa2f05d35a  gcc/ada/krunch.adb
! c2a32f5c60fdb1f167f0db3ede9bbf54  gcc/ada/krunch.ads
! 43bc96a00b80b46ff3e5fc6d431a9b6f  gcc/ada/layout.adb
! 687c4dc0af98d0c1dd6dd387d3c8215d  gcc/ada/layout.ads
! a003abd425c07652f7cd572c5ced3cae  gcc/ada/lib-list.adb
! 374a251a3c1fd0311957cf883a46daeb  gcc/ada/lib-load.adb
! 6473dc35363ebdecc5a7e1b248162f2a  gcc/ada/lib-load.ads
! f9686c10c55d3ccc49472348b320a160  gcc/ada/lib-sort.adb
! c81e07ff8a9abdec9e240df434a16b76  gcc/ada/lib-util.adb
! e7b235bf4356dcd97624fff62bc387cf  gcc/ada/lib-util.ads
! ecab5af153c085d8ef5d70d1a2814529  gcc/ada/lib-writ.adb
! cb2cda76e39a8f973e6e6203f159664e  gcc/ada/lib-writ.ads
! 0f3eeeeee1e1db547cfefdcc5a850dcc  gcc/ada/lib-xref-spark_specific.adb
! e58e59981274ea5d291c7764d8ed1b80  gcc/ada/lib-xref.adb
! 9b1a597d3e44c30de0c9df621ded0f98  gcc/ada/lib-xref.ads
! 54056b4c4c0b9eb272c59fba35989352  gcc/ada/lib.adb
! e525daf44b7827adf68c36544e7e9c95  gcc/ada/lib.ads
! c697a25dadc2deaf42117f1f36ae9418  gcc/ada/link.c
! 25b1b55a9fdcf2b7ec05eb2962ae6c57  gcc/ada/live.adb
! 711d2dc52675407384f615cb5b25f3d8  gcc/ada/live.ads
! a7f7a622ceeb6723fabf2b82ab74be00  gcc/ada/locales.c
! 38f101ad4a6eba55ef694b1ab6315683  gcc/ada/machcode.ads
! f78967a6818d2200a6a93709cbee9bf3  gcc/ada/make.adb
! 38dc802787c5bd1884e3f17dac59e24c  gcc/ada/make.ads
! 2310627c35db23d2a710eb13b14b1c92  gcc/ada/makeusg.adb
! e6f86b69ea1103bbd957ed4b656b0519  gcc/ada/makeusg.ads
! 084e9208c5bf5bf70c53d9d77287f46b  gcc/ada/makeutl.adb
! 79eb387196f713de84c63b756b75d947  gcc/ada/makeutl.ads
! aa3d6c1f73ec8a3657735f2031a25573  gcc/ada/math_lib.adb
! d4295a7ff0a22f2c2f8ed927503290ff  gcc/ada/mdll-fil.adb
! 7a2f68072999dc7e2d63486ace738e15  gcc/ada/mdll-fil.ads
! 252333f442169b852236f2685973c281  gcc/ada/mdll-utl.adb
! e06fa8bd7fd54c0006e3960c81b7a495  gcc/ada/mdll-utl.ads
! 85c5042548b68febdcf0b894c6756bdb  gcc/ada/mdll.adb
! 1a30059a65684f577354ab54bc9ef275  gcc/ada/mdll.ads
! 527af59205abef26289c5c195c15ef66  gcc/ada/memtrack.adb
! 9ac2b3fea54e21080c2fde869b0ef659  gcc/ada/mingw32.h
! ac8392b5fda7d6d3938e45ae392cb0b2  gcc/ada/mkdir.c
! 2db2bb2a53e6b2a42f218a419fd061f8  gcc/ada/mlib-fil.adb
! fce82b6f8d7e669dfe343cfbad9152eb  gcc/ada/mlib-fil.ads
! 09bd15631da6240bc949519e705af37c  gcc/ada/mlib-prj.adb
! 09b121d079d4cf2c5e847aed3f60f1f0  gcc/ada/mlib-prj.ads
! a0302823fb5c039aaceb728d998f5b98  gcc/ada/mlib-tgt-specific-aix.adb
! 6d862fcd801d711b707afc8e78832e5f  gcc/ada/mlib-tgt-specific-darwin.adb
! c28a08eb282ebb172f14ef04e14f7e63  gcc/ada/mlib-tgt-specific-hpux.adb
! 04b87a44c81606718db983702c64a32d  gcc/ada/mlib-tgt-specific-linux.adb
! 28b8c64b6df1cfdac271f93b5780ea34  gcc/ada/mlib-tgt-specific-mingw.adb
! f544341bce4d7d764420f558d289b545  gcc/ada/mlib-tgt-specific-solaris.adb
! 927c937eef2617d97187f9acbf7c69a1  gcc/ada/mlib-tgt-specific-vxworks.adb
! 77d99cc07e42fbf4d111494ca9bf9e7c  gcc/ada/mlib-tgt-specific-xi.adb
! e7c5e27656cb69c5a6a992974c053a01  gcc/ada/mlib-tgt-specific.adb
! 32aa7c82eb9da1566c6e065459ddbc18  gcc/ada/mlib-tgt-specific.ads
! 5b2a31fd8905162dfd6378350a9c5cc5  gcc/ada/mlib-tgt.adb
! 6005bf085cb33c328c71f5cbe07c5764  gcc/ada/mlib-tgt.ads
! 118a309c9a0c71df4ab8ab22715f8959  gcc/ada/mlib-utl.adb
! 9c02336e2d6dcce14ecb552fdf2ab0a8  gcc/ada/mlib-utl.ads
! e738a62c8c84a6841d35ca8c1ae359bb  gcc/ada/mlib.adb
! a2d2b29cf37e06ccaa40b81b7bbdcca5  gcc/ada/mlib.ads
! 18bf3978fc73e858dc564ce7bf0c2635  gcc/ada/namet-sp.adb
! f88b8f4e445a236c9dabc3fd8c6f22d3  gcc/ada/namet-sp.ads
! 26460afb820425f8c67442866a0edb4c  gcc/ada/namet.adb
! ee47b6dea9bbc7273621fd5ed57b48f9  gcc/ada/namet.ads
! f2a4b1fe3ea2ae090e63f1a7d7ae9f4e  gcc/ada/namet.h
! e3d712e275cf4ce49dea1c00666db066  gcc/ada/nlists.adb
! cb7e225d6dd83d801079332a53919040  gcc/ada/nlists.ads
! 8f3244ba43f3f2ae1efa29b0943b6648  gcc/ada/nlists.h
  349f0f4aeff5f96eb16ad78474248af9  gcc/ada/nmake.adt
! 475bfa99acfed50e7aa519c049f83492  gcc/ada/opt.adb
! 93b7c632bf808adca039801fa75d3110  gcc/ada/opt.ads
! 78aa3e8278514b018a3672bd91c94e88  gcc/ada/osint-b.adb
! 5568b0b4db1c880d3b1500472d320566  gcc/ada/osint-b.ads
! 1ed6f688b7c813043fd40471ab708141  gcc/ada/osint-c.adb
! 8042d444266100adbc78ac835eabbf96  gcc/ada/osint-c.ads
! 1065c04a2a594513591432b48430aee9  gcc/ada/osint-l.adb
! 5fccc37a875a7cda3822c5408778ccef  gcc/ada/osint-l.ads
! 72eadf47beb55b211d557f61f4f4c6f0  gcc/ada/osint-m.adb
! 764b020a10bbfa6b544f12e767719130  gcc/ada/osint-m.ads
! 577236834b9c567ed5bdd68877682106  gcc/ada/osint.adb
! 196d24696300077855b1f5b9061ebae3  gcc/ada/osint.ads
! 78dd2c9f47fbf63a2a1199e5704af844  gcc/ada/output.adb
! ad1c741fe7869e13ac4c619c22638f85  gcc/ada/output.ads
! 61d7df958e5bed246fefeb33eeb76cb7  gcc/ada/par-ch10.adb
! 587f9f28e027d4ec9bc6ff100bf691df  gcc/ada/par-ch11.adb
! 7f8257b262fc8ea8aa21e5abb66acd9c  gcc/ada/par-ch12.adb
! 76fb6021679af12fc5c7fc4046c22e72  gcc/ada/par-ch13.adb
! 16600d7176b1b70f78e07c3d1a024847  gcc/ada/par-ch2.adb
! a9e2bca2cc72e9a9575e85937deacbcb  gcc/ada/par-ch3.adb
! 7cbcea093ceeb931b13290548cdc9dbe  gcc/ada/par-ch4.adb
! 3c7f79a1dfbf5e3c36c9805974623f31  gcc/ada/par-ch5.adb
! 1b316bb3a0bfa2e5eec3639af62a6f6c  gcc/ada/par-ch6.adb
! d7cde1a18f98be27f86d5d6cdcb01b64  gcc/ada/par-ch7.adb
! 4db4eacfdd577296296c147fa58dc714  gcc/ada/par-ch8.adb
! 70802a6eda1fa5ca2549232b598b7279  gcc/ada/par-ch9.adb
! 2b002ed037b2451f9b584060649e9332  gcc/ada/par-endh.adb
! 0aea8a32a75c36418d86bba5e31168f4  gcc/ada/par-labl.adb
! 3e759fe33a5f3d2a2c19919ed19bec85  gcc/ada/par-load.adb
! 88e6d3034ffc9221c9a58efbdbb25605  gcc/ada/par-prag.adb
! a824d35a1e988fc1fe38501e5a8e1683  gcc/ada/par-sync.adb
! 1a8e0bffa872bb17facb3bf3f8e46ed0  gcc/ada/par-tchk.adb
! c6d873cfbc38a4dcf428a3922ad7d61a  gcc/ada/par-util.adb
! 2d32321230dab0e47332967a586c11df  gcc/ada/par.adb
! db764e5eaa7444c0e7a3223c9c8a9380  gcc/ada/par.ads
! 095c3d210d2c9c8a8ff30081e6d91e1b  gcc/ada/par_sco.adb
! c4a75db1aa91a6344e2af81f97bd56d0  gcc/ada/par_sco.ads
! b1cd96d8f7bd203a1af820259c18a295  gcc/ada/pprint.adb
! 96a954193acbbdf1dc3b67280d084c64  gcc/ada/pprint.ads
! 8363f4bbf83b0a133962e6f1198e6b02  gcc/ada/prep.adb
! 555345afd198b04d46d40904ec266851  gcc/ada/prep.ads
! 0ff93dd248ffe63434c2058e80568c39  gcc/ada/prepcomp.adb
! c626806071146725980ed37d208c52c6  gcc/ada/prepcomp.ads
! 7baa149123a04a4843150c3b88b1173f  gcc/ada/prj-attr-pm.adb
! eb13af2f3b2e6009060d73f56c031a74  gcc/ada/prj-attr-pm.ads
! 7542c2e6f2f211971cca243a5e23fa95  gcc/ada/prj-attr.adb
! 7449aa2072dfc419cf0e250a2b9f77b8  gcc/ada/prj-attr.ads
! 91e632b677056f55b62517f99973bfa3  gcc/ada/prj-com.ads
! 6e1167ff5c573e969205ee4bd76ee805  gcc/ada/prj-conf.adb
! 13baff8a50d31382889bf0699d520a4a  gcc/ada/prj-conf.ads
! a9611a941384a8e06f02657a719b37d1  gcc/ada/prj-dect.adb
! cbc768ed1d8b3d39d6b29654d4cdd6ce  gcc/ada/prj-dect.ads
! 4ad9feca824378883033bd88b652ab9a  gcc/ada/prj-env.adb
! 9ca7577a0b67e33e1046c7a2811fdc31  gcc/ada/prj-env.ads
! 2eaa63605e6f78a328a7f9c26879b26c  gcc/ada/prj-err.adb
! b1c3be97b33bb2ca2911cd4ade31f3b3  gcc/ada/prj-err.ads
! 6108dae04cac5edcb70a86142a6fba38  gcc/ada/prj-ext.adb
! da23beb8c024bdce6d4261d5d8922c9c  gcc/ada/prj-ext.ads
! c4e6892971c25c8398e9a888ad85f6d6  gcc/ada/prj-makr.adb
! 425d9e0310e05c6e86973284b96f76de  gcc/ada/prj-makr.ads
! 12468785cbf1028a22a5b9ec63268db7  gcc/ada/prj-nmsc.adb
! bc37c98866af8b8ee7d9a0af41a8425e  gcc/ada/prj-nmsc.ads
! c51815f90872b9c591da65f15fca401e  gcc/ada/prj-pars.adb
! fe155594330745225f0d28c98a6ae6db  gcc/ada/prj-pars.ads
! cffad8a1706a46c0a92c81f852ff7328  gcc/ada/prj-part.adb
! 5b050d62a1e745f67aec9dc96e8ce063  gcc/ada/prj-part.ads
! 63ff792a3a9a8f87d78b24dffdb71695  gcc/ada/prj-pp.adb
! bbc774a7263e721596209487fad20562  gcc/ada/prj-pp.ads
! 22456d8cd4c38d45c838327d36189e3c  gcc/ada/prj-proc.adb
! d534faa37cf4f20b58236541b5f12643  gcc/ada/prj-proc.ads
! 9bcdce782aebb0d09dec3d6a6bbdd37a  gcc/ada/prj-strt.adb
! 43acf0b768665d482a400a52a37d388a  gcc/ada/prj-strt.ads
! 8b0986c0dbd02f32f8fc057a28a0c2e0  gcc/ada/prj-tree.adb
! cbcc57702fcc7bb9aa2f7cb812a3bd47  gcc/ada/prj-tree.ads
! ae7c79f70ce727e2e52dc66b453237d1  gcc/ada/prj-util.adb
! 3500ef4e90cfb2a0303176d66e7c1a80  gcc/ada/prj-util.ads
! cc7d18705bd6c57135b3c068937e5eac  gcc/ada/prj.adb
! 2d2fb44b7d76f948043964e537e6e741  gcc/ada/prj.ads
! 58f489c2740849ea5b27504fdb02ad09  gcc/ada/put_scos.adb
! 323fb4b66e3d91e27f99ae0c69983aa4  gcc/ada/put_scos.ads
! d09dde44c52ff7cfbc567e0606f239d8  gcc/ada/put_spark_xrefs.adb
! dc3cf23f11ab7d937eb401213899a66a  gcc/ada/put_spark_xrefs.ads
! 0ea41fc4d7538fe6362ab8ca40c7cfcf  gcc/ada/raise-gcc.c
! 084440db1d4ef86eead74f7bfc31f527  gcc/ada/raise.c
! 9652896e639d52fde0458b1e2b0fe41a  gcc/ada/raise.h
! b2b1f9314c2102fc634a44a9f0fd037c  gcc/ada/repinfo.adb
! 9e67f73a04d0d70ca2b912747ea1cb1b  gcc/ada/repinfo.ads
! e2ba43d96fe12efa78f305d77b26aa0d  gcc/ada/repinfo.h
! e3911f7b0a3cd4489f9097b83c81f99d  gcc/ada/restrict.adb
! 32b9bfb8947ee60c166aaf9fe671cca8  gcc/ada/restrict.ads
! e9beea72e4b5a28185b96095ec1a2995  gcc/ada/rident.ads
! 7d3043184228a3aa6aa92c778c41a809  gcc/ada/rtfinal.c
! 69d5e4b8c8f929c39c656ef0712ecd90  gcc/ada/rtinit.c
! 78d541839afadf5d60ef18a81335af2e  gcc/ada/rtsfind.adb
! 00ecd53b4c80e2248cc62b2ef1b52226  gcc/ada/rtsfind.ads
! 7764f13c1eaf5b6c684c4bd1994f194e  gcc/ada/s-addima.adb
! e45fcd0601a10bcea232968c899c885d  gcc/ada/s-addima.ads
! 9183a9e63a34e579d06c8e309d7ee81e  gcc/ada/s-addope.adb
! 386c6130da8f827e2505689d96ed5965  gcc/ada/s-addope.ads
! fe8f8b31b5d0195c3e72423d9009eddc  gcc/ada/s-arit64.adb
! d488c8325e032e8677938f5460ce76de  gcc/ada/s-arit64.ads
! 35c24579c29b6dfb83f84b5f533cdb50  gcc/ada/s-assert.adb
! 53399b380f8ca47c60f859e570439f8c  gcc/ada/s-assert.ads
! 169d6e62a3512dda7a531728267406f6  gcc/ada/s-atacco.adb
! b95b4cd57fc6eaa9fee8ec29f0c976d1  gcc/ada/s-atacco.ads
! ab8b83ab6d4c6e5a5926a16de93c33ad  gcc/ada/s-atocou-builtin.adb
! f3c789e65af77b5541deb6ad7139bddf  gcc/ada/s-atocou-x86.adb
! 1167c0108218f2220440cb6c6e5c1f5b  gcc/ada/s-atocou.adb
! 394642aa5ff4548abb23b0d2aeef93bd  gcc/ada/s-atocou.ads
! 7efb2145cc958594b36898c7aebe2947  gcc/ada/s-atopri.adb
! 0a9fdc453c0735b45332b924799bcb58  gcc/ada/s-atopri.ads
! 00c3319311933cd27e4f50ac1863a4b5  gcc/ada/s-auxdec-empty.adb
! 87463dd2e8ed2bec9c9bd4771fe040b9  gcc/ada/s-auxdec-empty.ads
! 03b141174821d35e91b2cf9bb9a3f41d  gcc/ada/s-auxdec.adb
! 54871d510198655a26b77ba370481dd0  gcc/ada/s-auxdec.ads
! 3c97f17afbc4d6aaa3795bb7d30a2028  gcc/ada/s-bignum.adb
! e2da622f6dc5658b158b075ea020f9e9  gcc/ada/s-bignum.ads
! d697dbec75f26f76f77b59919d533686  gcc/ada/s-bitops.adb
! 9d57bf197759cfcf08dd316b232716ed  gcc/ada/s-bitops.ads
! 6f099fbeea654e1fc7339ec7732841b3  gcc/ada/s-boarop.ads
! 22f3ee7d518fd1cd8cb5177d3f23ff57  gcc/ada/s-boustr.adb
! d8ca35c5d73182d5fe70f6ee420402a1  gcc/ada/s-boustr.ads
! 6c2b495d0c3fe061daf1c99d06373bc2  gcc/ada/s-bytswa.ads
! a06599145f95a2b7d76f702760eb1dff  gcc/ada/s-carsi8.adb
! ff0ea0ddc5194869e11b6f21324d6f1e  gcc/ada/s-carsi8.ads
! 52dd97049ac942a767ee83f34539e8a7  gcc/ada/s-carun8.adb
! 4a623bfa7a4b4b9276735a14af55b78c  gcc/ada/s-carun8.ads
! b7e4c72b929eeef23dd5315756b92097  gcc/ada/s-casi16.adb
! c8f6a22cc308d1b24d88391140e7cb61  gcc/ada/s-casi16.ads
! 3deaded80d377740336ab9d10ddb90ba  gcc/ada/s-casi32.adb
! 91e671ae7ae95aed89a629f2f4fb457d  gcc/ada/s-casi32.ads
! 3dd8236fe9579b880be54792e108acc8  gcc/ada/s-casi64.adb
! 0efb30ebe1dbe15ab2c07213cd41ec76  gcc/ada/s-casi64.ads
! 0810de263373359262af1f127ed12af8  gcc/ada/s-casuti.adb
! e04705da0c6d1b41af28df01141da0e4  gcc/ada/s-casuti.ads
! 2874c12d42028191f811ce50fad20b4b  gcc/ada/s-caun16.adb
! ebad06631ab149022c6d95d9854d9f4c  gcc/ada/s-caun16.ads
! bd848d0e29423114055aab6369fcab2d  gcc/ada/s-caun32.adb
! a14e0eb852630a8b5f72272761b7e4ca  gcc/ada/s-caun32.ads
! f4699e5ae2a4bfa838ae67ed1ff8c320  gcc/ada/s-caun64.adb
! a7a35a5d5cc10729017530b11c838fc8  gcc/ada/s-caun64.ads
! 5a9c28303c24b42227f9ccb09448c416  gcc/ada/s-chepoo.ads
! 1852a2be975917596055975e0f0b5ca5  gcc/ada/s-commun.adb
! d7698adee8eccd398240af994eedf90c  gcc/ada/s-commun.ads
! 6a30b9ff1985fd6d50395d4ae6ffef5a  gcc/ada/s-conca2.adb
! 1ef0061322c2d6c6e1fd4ac46e31c3b4  gcc/ada/s-conca2.ads
! 207860e1cf9cbf89ab8725103d758530  gcc/ada/s-conca3.adb
! 604fbd3c6eaf08b18ec3d8af3766275b  gcc/ada/s-conca3.ads
! 19e392666ac4d8f74600d31adf1944bf  gcc/ada/s-conca4.adb
! f8f21607ed40664240058d1c0cf67477  gcc/ada/s-conca4.ads
! bec9ec0366338aab90409e78c4a78388  gcc/ada/s-conca5.adb
! 37da9c30750171dfe5f60568fc8fd382  gcc/ada/s-conca5.ads
! a5914c4a6c9df93aa94fb0e4157387a8  gcc/ada/s-conca6.adb
! 604a1dbddaa20052879a569d4af3b051  gcc/ada/s-conca6.ads
! 8db1da923b915650615b79e4fa6b7000  gcc/ada/s-conca7.adb
! 6e0ccc109367782fd542e235d92efdc6  gcc/ada/s-conca7.ads
! be54f178a446446de1e41d2079023bff  gcc/ada/s-conca8.adb
! 1b1643ea8c9f8392bf3fcd4856732d7c  gcc/ada/s-conca8.ads
! 2f9bfa1c5fe981da3c83916517a00ba1  gcc/ada/s-conca9.adb
! f7ef62b57a583890adc9c648c35d240f  gcc/ada/s-conca9.ads
! 3c58a2f8bf5eecd615da5d4eec87b913  gcc/ada/s-crc32.adb
! 54292463a5339afd5f0fe2a720dd0eed  gcc/ada/s-crc32.ads
! ee05b88fa23e398cd9faefd3fa02e3d7  gcc/ada/s-crtl.ads
! 66ab0bc1f7a1a34c80ac2d2e21169a0e  gcc/ada/s-diflio.adb
! 13305e56f014e546c6cd08d927f6ca5e  gcc/ada/s-diflio.ads
! 6a3e742cef4d7cb814d657ba15f41998  gcc/ada/s-diinio.adb
! f0b656245a153373fc211604f5a69484  gcc/ada/s-diinio.ads
! f71ab5c7665e6f930327eb472c6530bd  gcc/ada/s-dim.ads
! efd2c37ee55721993c27c0a268d51fe2  gcc/ada/s-dimkio.ads
! b38173f4fe530763c18289f31ba28f62  gcc/ada/s-dimmks.ads
! 61774ce1e200750c2df929bee4022591  gcc/ada/s-direio.adb
! ce1458a7278cb2154f497e68d580c36e  gcc/ada/s-direio.ads
! 11d847d6d96fc41bddaf76843b3be7a8  gcc/ada/s-dmotpr.ads
! 025b07d66a6c90dc80113487596cf826  gcc/ada/s-dsaser.ads
! 41756f2293112e206a3831053bbe0d61  gcc/ada/s-elaall.adb
! 42bbdb383f5d1e4e2525098343f3c9f2  gcc/ada/s-elaall.ads
! 0ebd6b8eceaecb449264298f71851de9  gcc/ada/s-excdeb.adb
! 3afe58e79eff67f15cb0b23dcc205393  gcc/ada/s-excdeb.ads
! 5af1e240ac6203fac55064c76e27667e  gcc/ada/s-except.adb
! a13638b6049063a8b65153fb25bb919b  gcc/ada/s-except.ads
! 5932189536a633f5b5d486176cad2819  gcc/ada/s-excmac-arm.ads
! a6fae6ca21039c97da2f6ce7d8e22574  gcc/ada/s-excmac-gcc.ads
! ba351f7b10caf639020ff1bf8c51f5cb  gcc/ada/s-exctab.adb
! d408de96ec1abdde61cb7de03a64cd79  gcc/ada/s-exctab.ads
! 3fb2b51e9811f19d870bc624e7610e76  gcc/ada/s-exctra.adb
! a7f2414c598170509b4f63a53129b10c  gcc/ada/s-exctra.ads
! 2db09a60ea8ec87cbcafd4bdd7184d3d  gcc/ada/s-exnint.adb
! 33a43a4d145cef5661113c2dde8ceadf  gcc/ada/s-exnint.ads
! 9f01e09e7d7667532bcfc0dd24c29e20  gcc/ada/s-exnllf.adb
! ae830ae5d7f7ec3a599316f1a4b6c252  gcc/ada/s-exnllf.ads
! 21a50e9b8ca936b521391de93ab21d5d  gcc/ada/s-exnlli.adb
! 2615dcb544a79b86543cfb394925fb5a  gcc/ada/s-exnlli.ads
! 21ec4959a09f87afa12c04af40a182cb  gcc/ada/s-expint.adb
! 21020a195db6552435b4b47e11c99778  gcc/ada/s-expint.ads
! 39bc04c7a79222aa75864fd7f92630d8  gcc/ada/s-explli.adb
! f462dc5e78d55078c19a26f78109d1d5  gcc/ada/s-explli.ads
! 73b5f8b8a688b873760ac585d8a562fd  gcc/ada/s-expllu.adb
! 258cb8b56bc0274e3ccbbc0ff904f668  gcc/ada/s-expllu.ads
! 7cd11984a468d6f0d72715166a860bf8  gcc/ada/s-expmod.adb
! f6102daf46beca40938c5747c1a0735c  gcc/ada/s-expmod.ads
! e3dca22f12976f3059ce53cd7e47ef44  gcc/ada/s-expuns.adb
! db0573680676d8a600a912c55a552f3f  gcc/ada/s-expuns.ads
! 88ef7ca6c8c50d623dfeadfda5fe70f0  gcc/ada/s-fatflt.ads
! ccf05ee5fdc3f8ebbc728c6a4fe2f173  gcc/ada/s-fatgen.adb
! ca8eba88fb0a626310ef4a0ed5cc8fb3  gcc/ada/s-fatgen.ads
! a007dc08e6298bcc94c2869b10e76b75  gcc/ada/s-fatlfl.ads
! f546497accc8745e19fd60ea1d627647  gcc/ada/s-fatllf.ads
! 80e6425e6292065eda16cb6853d85804  gcc/ada/s-fatsfl.ads
! aad52ecb5d1f7070a95b0bd202413c55  gcc/ada/s-ficobl.ads
! ec58d5e1735aa1d42313f3f1690e3aab  gcc/ada/s-filatt.ads
! 19f67a9208162277c4d4dd922911eb60  gcc/ada/s-fileio.adb
! a3492b2b160dc7b6706b1162669eb96d  gcc/ada/s-fileio.ads
! 4df30c27048a05eb4e9cb451f0dd0cb7  gcc/ada/s-finmas.adb
! 467d4ff215818c472cfdc70891df1865  gcc/ada/s-finmas.ads
! 497cd8b7404e9ba86a5b2414606d1aa6  gcc/ada/s-finroo.adb
! ac666090f264024382baa70468552892  gcc/ada/s-finroo.ads
! b6915d8dc1697e40680450a6b5376de2  gcc/ada/s-flocon-none.adb
! b1391b21f314fbe121191df2a27aaf12  gcc/ada/s-flocon.adb
! 1ab1fd34632ef7f420ebccfe055ef505  gcc/ada/s-flocon.ads
! 4eabe8bae64dd314b4abfb1f90871574  gcc/ada/s-fore.adb
! 019fa13e9f0d66b85522a004ee8376a7  gcc/ada/s-fore.ads
! b14576d8dac86aaec16e03d3bd07541c  gcc/ada/s-gearop.adb
! cc51c6c73d7892411fb7810227a42c43  gcc/ada/s-gearop.ads
! c86a0808a27ce9abe00379e4d33e4900  gcc/ada/s-geveop.adb
! ebf98bdfb1c25b91d4acdb8b5433c06b  gcc/ada/s-geveop.ads
! 07c27fbd75868b5a1af5582d9518555d  gcc/ada/s-gloloc-mingw.adb
! 6fec097692ad7abcf029966a7b0d2892  gcc/ada/s-gloloc.adb
! 132f5799ab7cf6d9c960cd98e4cf33f7  gcc/ada/s-gloloc.ads
! f272e2169a4b16659de604bdae3054fa  gcc/ada/s-hibaen.ads
! ff4814dcff1defaa9e5b4e3a6f491c79  gcc/ada/s-htable.adb
! 8c75bb16e4b8816f7edd435cc23690ab  gcc/ada/s-htable.ads
! 74ed0ee3b94977a7058a557d8f61f2be  gcc/ada/s-imenne.adb
! e8414b23bcf545f19284333684303231  gcc/ada/s-imenne.ads
! ac8213a149f5399cfad951af1393f3d9  gcc/ada/s-imgbiu.adb
! 84487ff36077087f7dfce9dd20e87b96  gcc/ada/s-imgbiu.ads
! 247cd743a0669ead74269f0cfd5a16c9  gcc/ada/s-imgboo.adb
! 2329c0affafe98ae3804a0bd691946cc  gcc/ada/s-imgboo.ads
! 6fd5f56d6599ca2365e25da9d2122d5a  gcc/ada/s-imgcha.adb
! 6ba84ad637e60e6f215ed94e05c21cce  gcc/ada/s-imgcha.ads
! 1b585765cbdf6824fcb1d375ed5be1b1  gcc/ada/s-imgdec.adb
! adb69ad20f830606f0c97f94cf414f4d  gcc/ada/s-imgdec.ads
! 3d3e37728a6a4c6f52c845492c0c0150  gcc/ada/s-imgenu.adb
! 7abb13d37ad61f6c2e2e59c904dd47bf  gcc/ada/s-imgenu.ads
! 1146441bb75266dab6d0bf42a5ef2ce5  gcc/ada/s-imgint.adb
! a9b1c42a2097cafafc530c3e66bcf163  gcc/ada/s-imgint.ads
! 4e1f28a8c0d24af7e57d3fa470207a74  gcc/ada/s-imgllb.adb
! dd4eb24f0478b27e8991d121b0f658b8  gcc/ada/s-imgllb.ads
! e81ec39b08283a3f21973ddba21131bf  gcc/ada/s-imglld.adb
! bb57f4bea83cc211c8f0d3654a350123  gcc/ada/s-imglld.ads
! 3a2b94e636940949b20655b2fb578e0b  gcc/ada/s-imglli.adb
! 544f54506af88a2dd54c25de5085720a  gcc/ada/s-imglli.ads
! 11b35ef8c66fb57451b3a6cbb0f29e98  gcc/ada/s-imgllu.adb
! cbac86c0beb68b004a492b5de57f1fcf  gcc/ada/s-imgllu.ads
! 520e34fb159a31b7f52bfc58b8b01538  gcc/ada/s-imgllw.adb
! 25883d419794ecfb9469c836cd75f18f  gcc/ada/s-imgllw.ads
! 59c541167f4bb111c241468ec873f5e1  gcc/ada/s-imgrea.adb
! 6a182586a76eb8eb5c74496f9a8f07cf  gcc/ada/s-imgrea.ads
! 425c1ea3f037110aa6b221fbf7a36e4b  gcc/ada/s-imguns.adb
! 6bd67a1191142371dd99566c9cfa8e90  gcc/ada/s-imguns.ads
! c9afae809ff28448baeb3151c09d849a  gcc/ada/s-imgwch.adb
! 2ecd7b9161b55cbf3cb7463e9adc1f3c  gcc/ada/s-imgwch.ads
! a58d14344b111ce6989d754bc9b6582d  gcc/ada/s-imgwiu.adb
! 8994e7ff3f81ada3bdfda62d80bef065  gcc/ada/s-imgwiu.ads
! 1eea4ffff959e0b05c32d62f1866eaf6  gcc/ada/s-inmaop-dummy.adb
! 679bf9cfe0e2b35ecaccc49fc5d37dc8  gcc/ada/s-inmaop-posix.adb
! db5f67776dfb980f9b798f41a1a2bb2d  gcc/ada/s-inmaop-vxworks.adb
! e4902a50e4693a02f5418d84ed1da645  gcc/ada/s-inmaop.ads
! e1e3d44213db7aa76153bcd07300ea23  gcc/ada/s-interr-dummy.adb
! 53d2ea8892d8eeadb4917a0c4863fef7  gcc/ada/s-interr-hwint.adb
! 812f51ae8a9767274c68f9d4460c6cc6  gcc/ada/s-interr-sigaction.adb
! 43265de4b9c87bd09eb5435f410d8cbb  gcc/ada/s-interr-vxworks.adb
! f6373dfa5b05a4e48cbe4031625964ef  gcc/ada/s-interr.adb
! e8c74221a223607638f13de550ae0539  gcc/ada/s-interr.ads
! 064085c7b749e8641520e220b01af296  gcc/ada/s-intman-android.adb
! 8b6161cab6771423c23d82778b2847fb  gcc/ada/s-intman-dummy.adb
! ee993ec9d3c70ca257fcd30d8c3ef86b  gcc/ada/s-intman-mingw.adb
! bd8c78a2242acc219e652166d6a950c0  gcc/ada/s-intman-posix.adb
! 9671feac0826368ad796bf991dc6ea59  gcc/ada/s-intman-solaris.adb
! 781bba41644037a9d1ff013f470a0341  gcc/ada/s-intman-susv3.adb
! 15955fd5e621509d52a8e3aec2c6123d  gcc/ada/s-intman-vxworks.adb
! 91c490df7b68be72cdeaabc1e5d8675d  gcc/ada/s-intman-vxworks.ads
! 71df54dcd0cc64c8ecda27f8697e4b51  gcc/ada/s-intman.ads
! fe2a0954a73c629d9430b3db3af64471  gcc/ada/s-io.adb
! bd039f39f035e21abe750fd487ecf673  gcc/ada/s-io.ads
! dac9f15c34e718440504f6a84e3b90fe  gcc/ada/s-linux-alpha.ads
! 36ed71acd5fef67cce98e342a56efe17  gcc/ada/s-linux-android.ads
! 75c59fbe8f8b14c3d4aad6210dbb0950  gcc/ada/s-linux-hppa.ads
! 6adfef17ec8f141f5ec054c8534db88f  gcc/ada/s-linux-mips.ads
! cd8b1ba1c36bffad664702deac69f614  gcc/ada/s-linux-sparc.ads
! d6aa080ae00db52b752a7f3b55073bb5  gcc/ada/s-linux-x32.ads
! 3417549515728ff263f2a244d0fc942c  gcc/ada/s-linux.ads
! 9b3fc2492706d5faf1b6da45c05be453  gcc/ada/s-llflex.ads
! 0656ec2d015d63c0bf70439cbbefea9b  gcc/ada/s-maccod.ads
! a7f78e102ffb52aebe9bc54343e5b4dc  gcc/ada/s-mantis.adb
! a039e0015dd9ab4c412a88997bd2f1e6  gcc/ada/s-mantis.ads
! 4731f1435557295d47e0a7f1764ab6dd  gcc/ada/s-mastop.adb
! 344117bcf6927027bb3c05bd42d95290  gcc/ada/s-mastop.ads
! eca5e7191fb4d3830e6c3d1f71cadacb  gcc/ada/s-memcop.ads
! 1072014ff9c36d667255f45063b8a9bf  gcc/ada/s-memory-mingw.adb
! 8e06314d719d0b53efa7dcfd180f853d  gcc/ada/s-memory.adb
! b322d52ccbeb9b8554ab645392887507  gcc/ada/s-memory.ads
! e8d452cce3f85460af6d288ade07b9cc  gcc/ada/s-mmap.adb
! c39454cf23dea798c4d9f5f08e51a46d  gcc/ada/s-mmap.ads
! 63b6106b2933a0a40afafcecadb2431c  gcc/ada/s-mmauni-long.ads
! 1c3290c1c1ea07753857ccc0392d9c8b  gcc/ada/s-mmosin-mingw.adb
! 3d64ba08ac0ec9179dc011ebcf7ec052  gcc/ada/s-mmosin-mingw.ads
! d0b29c3b560114ae7f0cad57a2b949aa  gcc/ada/s-mmosin-unix.adb
! 42a7c2771d8d2fcf2d8df2df8c809ef2  gcc/ada/s-mmosin-unix.ads
! 913727fcb61f6c15be5a434fec97ff62  gcc/ada/s-mudido-affinity.adb
! c3c16356b9651f59311a1e0be71d8bb9  gcc/ada/s-mudido.adb
! e6304ab8465d5bc7fadbcaf1933a0980  gcc/ada/s-mudido.ads
! 7cd730adff0f0ab7760b2ad0046554df  gcc/ada/s-multip.adb
! c4045ad22005510940d70e1a445db431  gcc/ada/s-multip.ads
! bcbece6425b44b750d432aa001a0b7fa  gcc/ada/s-os_lib.adb
! 345ca1d6c1b657525d53f2f2ce22f198  gcc/ada/s-os_lib.ads
! 377f92f204d84e36c73eba6983cf1880  gcc/ada/s-oscons-tmplt.c
! f45382176206d1e0b4098d842fbd1790  gcc/ada/s-osinte-aix.adb
! 1cfeaae2c1a91c261f02edc9feefde4e  gcc/ada/s-osinte-aix.ads
! 65159cd5882f693f5d5c2ec79a7f153d  gcc/ada/s-osinte-android.adb
! 52d846481074ee3c6f1f98c7715766da  gcc/ada/s-osinte-android.ads
! 9f67aabbd3ad0ec8930c2c8ded56d5fa  gcc/ada/s-osinte-darwin.adb
! 14452824381c244c2a46c0b7840ef0dd  gcc/ada/s-osinte-darwin.ads
! 30181731a8d959c08f02a2d17c7c3380  gcc/ada/s-osinte-dragonfly.adb
! 43477633e27c62cd95db7c2d6d422ea0  gcc/ada/s-osinte-dragonfly.ads
! b2153a6d0429ecf2d94b05b9d09e6160  gcc/ada/s-osinte-dummy.ads
! c444097cce82db9effcdd4c9c5a96b4a  gcc/ada/s-osinte-freebsd.adb
! e9bd5d8bc9bd1a613082cb3fdf78d0d4  gcc/ada/s-osinte-freebsd.ads
! 94d967aaee13bf49e5e0e154e579871c  gcc/ada/s-osinte-gnu.adb
! d92a6b091106c7dc15302b2da5f8f385  gcc/ada/s-osinte-gnu.ads
! 7f1f83f2b78279e17d374e171c1da3b2  gcc/ada/s-osinte-hpux-dce.adb
! e0c8077ba5d78f82edb8990863741a5e  gcc/ada/s-osinte-hpux-dce.ads
! 1b3ed31d0914d80bf259b7ee627bd948  gcc/ada/s-osinte-hpux.ads
! 335bc179fd59062a542c5d745fe2a8b5  gcc/ada/s-osinte-kfreebsd-gnu.ads
! fee77cbb25c211ed337724dac13cc16f  gcc/ada/s-osinte-linux.ads
! f147ed363aba7bfd5210a6c9bad98d22  gcc/ada/s-osinte-mingw.ads
! e0ccc12265d7031072307fee72e66441  gcc/ada/s-osinte-posix.adb
! 95d33f38d09b64c6ddbdf6ca9013a19a  gcc/ada/s-osinte-rtems.adb
! eefe6d5048eed3735e14321d40ba8458  gcc/ada/s-osinte-rtems.ads
! 8e43cb0ee20789269fc8a03e909f1a98  gcc/ada/s-osinte-solaris-posix.ads
! 4b79cc58a1b73b941681456c8abba9f5  gcc/ada/s-osinte-solaris.adb
! 5d8bb4d19a51168c31b3c222912bdd69  gcc/ada/s-osinte-solaris.ads
! 71b0f97b376aa1713bae743eaf97044b  gcc/ada/s-osinte-vxworks.adb
! 6368c30dad213864537600fa307950ac  gcc/ada/s-osinte-vxworks.ads
! 0f8f33b5307babd0397eb1ea464b88d4  gcc/ada/s-osinte-x32.adb
! 3ca20e76ed40d36def876d8045b583df  gcc/ada/s-osprim-darwin.adb
! 04df8b3e983ea646cb9fd7db1add9679  gcc/ada/s-osprim-mingw.adb
! 83f4664ac4c1f0d525953e7ed404bc56  gcc/ada/s-osprim-posix.adb
! 599d2063da60595b32c64cd4b66338cd  gcc/ada/s-osprim-rtems.adb
! 1e419a3f6f2fa74c838df783069a8c60  gcc/ada/s-osprim-solaris.adb
! d18827b3491e6b29f50495c078dd78c4  gcc/ada/s-osprim-unix.adb
! ce66b90a2b73ea79796e48662f0de68e  gcc/ada/s-osprim-vxworks.adb
! 3d7f511cf0a8dade83a474eeb6451c70  gcc/ada/s-osprim-x32.adb
! ca9e2b33da41f20653934ad622c9d4bd  gcc/ada/s-osprim.ads
! 6f8ffb5bdfaa9c92d451321d64542e7b  gcc/ada/s-pack03.adb
! 89660dc0fd08cae3959311be5b6fae48  gcc/ada/s-pack03.ads
! 41e4da0c12a7ce4693e34d37eae24e2d  gcc/ada/s-pack05.adb
! b9c2086e3946a86490330f224c6c012e  gcc/ada/s-pack05.ads
! eebfca8120443836d3534e75e4243e1c  gcc/ada/s-pack06.adb
! 3b972d8b5c380e7b6009236853ee5e3d  gcc/ada/s-pack06.ads
! 1abdbac7157a4243da2564328070bf57  gcc/ada/s-pack07.adb
! 3218e3956797159ddefefc0c04bc6bff  gcc/ada/s-pack07.ads
! 6903e4bc73410dcd0d2b1328626c488b  gcc/ada/s-pack09.adb
! 8b64a1c8fde2bd1662d4ee1bc421dfb8  gcc/ada/s-pack09.ads
! 96505559c3e8ce93cafbf41f74ae47a2  gcc/ada/s-pack10.adb
! 03ac74b4283d743599ff8dd90bb6840a  gcc/ada/s-pack10.ads
! aab95f5accb221aeb717ea57eeba57d4  gcc/ada/s-pack11.adb
! d00163e909e75643bd9fa048354af06f  gcc/ada/s-pack11.ads
! 0518da6a2da8877c33535eff8c6fb90a  gcc/ada/s-pack12.adb
! d2daf78b647657b4dd245bc8cf43710c  gcc/ada/s-pack12.ads
! bd7e0ddc551d640ec564d17cafe86150  gcc/ada/s-pack13.adb
! 7e3741e85d211e22415be9412e3be5b6  gcc/ada/s-pack13.ads
! ca58cfe8f4555c7db0890c8ce0835781  gcc/ada/s-pack14.adb
! b8301906a2783ac2623dc30fbfb1c51f  gcc/ada/s-pack14.ads
! 85d8ff614bf2818f17e6793392291d9b  gcc/ada/s-pack15.adb
! fecfcc3caf70d6c77111042fd16ef112  gcc/ada/s-pack15.ads
! df097b2ad26786803120c5a6a319d098  gcc/ada/s-pack17.adb
! 84534924d390bfc9a4b68d4d3b8d2cc3  gcc/ada/s-pack17.ads
! b1f20ee449e8e74efce44077cbf990d3  gcc/ada/s-pack18.adb
! 565e5c13ad531fc4c43ebd674a05dc7c  gcc/ada/s-pack18.ads
! f18fb5a53cd4d97089b76557dbe17513  gcc/ada/s-pack19.adb
! e2ea965cd669be14b4a3c4e01b4558fb  gcc/ada/s-pack19.ads
! 8679371d1fcfadabca1c6961a1796b63  gcc/ada/s-pack20.adb
! a6540ec3ee2c4f786ce3524c6c002359  gcc/ada/s-pack20.ads
! 706535156f093d57533232034a2003cc  gcc/ada/s-pack21.adb
! e4f7186a25e8913b223b65c6439f16f4  gcc/ada/s-pack21.ads
! f0e9547005fc6f5a8afbf842c39b56ea  gcc/ada/s-pack22.adb
! 0eb9dbf7e74b93b4aab703ee23c04569  gcc/ada/s-pack22.ads
! fae227650fa303dcbf3993f2f0696312  gcc/ada/s-pack23.adb
! 15d0cb622675b7dfb12b989191a00510  gcc/ada/s-pack23.ads
! 4381d101a516741766a793850f4e3f58  gcc/ada/s-pack24.adb
! adcdb64029e1b5093684b9f3a50e02f0  gcc/ada/s-pack24.ads
! fdbc742609f90aeaf2f31fdcd538780f  gcc/ada/s-pack25.adb
! 199d2efec193142b307a15306d69af4a  gcc/ada/s-pack25.ads
! e3e0aeb85df3d09cbf76d72bfbb88b67  gcc/ada/s-pack26.adb
! 38190838685f26acb76baf1b241af4bf  gcc/ada/s-pack26.ads
! 5dfeee9b378451cd6d51daee35d1cca1  gcc/ada/s-pack27.adb
! f5d60b0596b0d8e297d031996494fa56  gcc/ada/s-pack27.ads
! bb1a0bd22e5a1ca48f379cbeff617e4d  gcc/ada/s-pack28.adb
! e194cdaf814732656be99fed9381b862  gcc/ada/s-pack28.ads
! 7c13fd848de8b5f15df4a0dc207a49d1  gcc/ada/s-pack29.adb
! 206d5833243efb4f6f26c6727e3ea155  gcc/ada/s-pack29.ads
! bf8b911df23643b5ddbe401b1c8b09c9  gcc/ada/s-pack30.adb
! 2aea00412142e80d4ee8d392d7eaecf2  gcc/ada/s-pack30.ads
! eb04b48b0a223ef603f108f7c0327425  gcc/ada/s-pack31.adb
! b2f29f5e3c8159950a4bab95026d42aa  gcc/ada/s-pack31.ads
! 6069872448abed2e69a883de013d5448  gcc/ada/s-pack33.adb
! ac6959d674fccb237cbd8cb9aaa8c231  gcc/ada/s-pack33.ads
! fba72947af8bcd9b27befca254c76d41  gcc/ada/s-pack34.adb
! ae29e89e3f7517335fb8f3add6dd4e5e  gcc/ada/s-pack34.ads
! 2ad3d24f04bb9a093219bc486d3694eb  gcc/ada/s-pack35.adb
! 81ca12f426e46699cca99de49bffaf87  gcc/ada/s-pack35.ads
! 2b36e0ca07a5d07862933b8ad56a5530  gcc/ada/s-pack36.adb
! 12f71ad5f0923809a195d0505764d840  gcc/ada/s-pack36.ads
! 8b0ecbc94fc2163fced2596cf8a47698  gcc/ada/s-pack37.adb
! b20dd07d6b42b7e071e7fa94c34b3f00  gcc/ada/s-pack37.ads
! ce9d3bad5e50443598995501f6ad07c3  gcc/ada/s-pack38.adb
! 8db6727775079f0e2faedb72c99ad254  gcc/ada/s-pack38.ads
! 7086a018fc461e6f7de52c3b1320189f  gcc/ada/s-pack39.adb
! 83541095e3bdd6b31f8b908a2db4c368  gcc/ada/s-pack39.ads
! 512e41f8b3f27077f5069be86e1ee995  gcc/ada/s-pack40.adb
! 7cf0c3ef2bb27b9845212c84d6ac6ee1  gcc/ada/s-pack40.ads
! 5a974f3b965c80a853ef4eccaaade9e2  gcc/ada/s-pack41.adb
! 697d447f1dcb341a4a20eab07e50d985  gcc/ada/s-pack41.ads
! f6cd884764a405c245c1cba1ae0abca3  gcc/ada/s-pack42.adb
! 7332a26246af909839bbad702425c369  gcc/ada/s-pack42.ads
! 49df6516dea42bb80440ddbad908bff5  gcc/ada/s-pack43.adb
! 3cdb369cd94e94c75ade1f6949fc7272  gcc/ada/s-pack43.ads
! dec626411175e5fdf422fd277b7dc9ab  gcc/ada/s-pack44.adb
! 8b86d8dcf75ca7afe5875d67c1c5494a  gcc/ada/s-pack44.ads
! 94adc6f62817eed31b4ce559316ba9a4  gcc/ada/s-pack45.adb
! 6e3220dba3fb616f827485f73eac51e7  gcc/ada/s-pack45.ads
! a31dc366ecd08d445fe93c88816fb5bd  gcc/ada/s-pack46.adb
! 2045a4abc41d0321fef3159700a384a3  gcc/ada/s-pack46.ads
! cf1a2a50aa5b48dc2cfa21b60795045b  gcc/ada/s-pack47.adb
! 0c41ee3a56ed754d0dcf8eee876897ae  gcc/ada/s-pack47.ads
! 1ed8d3897948b7e7850dcc6420127f2e  gcc/ada/s-pack48.adb
! 398cb7c535bc5b281d04d206eb3bf5d6  gcc/ada/s-pack48.ads
! 50760d4a27d8cd1560ca8a38d0a054db  gcc/ada/s-pack49.adb
! 8a6a8597a1ca2f7432953c9633dede3b  gcc/ada/s-pack49.ads
! 3d5394a80afc7a972f12bc0bb7059c06  gcc/ada/s-pack50.adb
! aaebc23b3ad55077a7a7e96f252488bf  gcc/ada/s-pack50.ads
! 7d51a96a0f5ad56f7f2c124d940a7ae7  gcc/ada/s-pack51.adb
! 6220657eba5b0859fd23e0490d31aacb  gcc/ada/s-pack51.ads
! d2e7a966168aa02f1ec7dc242200986c  gcc/ada/s-pack52.adb
! d64736ee4f5ce80959ec201e1c88b278  gcc/ada/s-pack52.ads
! 2aff4fed1eb8f8f47a59f346460c5868  gcc/ada/s-pack53.adb
! 5b6f8d5c83b6b1ac71be61c00892483d  gcc/ada/s-pack53.ads
! 5f09a57290e5efae93e8d5a525169064  gcc/ada/s-pack54.adb
! aa3063dc2d09f4694f88ada32680532e  gcc/ada/s-pack54.ads
! 9ba6cf790fb94368c233630c6564fa72  gcc/ada/s-pack55.adb
! b0165897a25cf66e7f6535a78938f92d  gcc/ada/s-pack55.ads
! 06150120fba6d80803379ff64c3701b1  gcc/ada/s-pack56.adb
! c8365d26a16aeacbe040bcb48d6447dd  gcc/ada/s-pack56.ads
! a8abc10f618d3d72a05ca6d09bf52dbc  gcc/ada/s-pack57.adb
! 5a745883536db9f22ae3c350ebb6df3f  gcc/ada/s-pack57.ads
! f793f701217c858fba6d1ee1fd453c80  gcc/ada/s-pack58.adb
! 1f33fbc7698595f8dd1c8a266526fc11  gcc/ada/s-pack58.ads
! 0aefd32ebb1f7d0fd399ba049ad6cbde  gcc/ada/s-pack59.adb
! 74bd9d272ea5926e56c27f5e6a6d5b82  gcc/ada/s-pack59.ads
! 555343f3d4c67a934f231032bbe7e26b  gcc/ada/s-pack60.adb
! 739ba61687c3c18de3b274dc25a66cd5  gcc/ada/s-pack60.ads
! 3ac36ec6215b9eb3a9330e405d542947  gcc/ada/s-pack61.adb
! fb6f183b478bd1e252b435c3c6209d41  gcc/ada/s-pack61.ads
! 1606162fa80dc1ce0b88a9e073022bd9  gcc/ada/s-pack62.adb
! b0674fa6143302dbed29873db02870a8  gcc/ada/s-pack62.ads
! 039b75267e02747d47d4773ed10cd806  gcc/ada/s-pack63.adb
! 2cfa8a1e5ed227ecd0a602adc687cebe  gcc/ada/s-pack63.ads
! aa1ee5a643c53b4d28142e8da69c0071  gcc/ada/s-parame-ae653.ads
! 1fa56a1b5f8434bfe3eacc514397ce72  gcc/ada/s-parame-hpux.ads
! a5904e2b6ca7a4c2b5ed88c9d4dedad6  gcc/ada/s-parame-rtems.adb
! 5d8c29201d659f07891e620de3441a68  gcc/ada/s-parame-vxworks.adb
! 1fc66ddc67df54f708b13710f0335093  gcc/ada/s-parame-vxworks.ads
! ea3e91ea07321ef5a95bd771e7a6b84c  gcc/ada/s-parame.adb
! e4d20581be329ca1a473e54024a550a4  gcc/ada/s-parame.ads
! 49be3a7f48e013e7d589ea7973961fb1  gcc/ada/s-parint.adb
! 2fa23c014d46f00d55894c0489abc9a1  gcc/ada/s-parint.ads
! af855a75a8e3552a117f8cc7907e4494  gcc/ada/s-pooglo.adb
! 430f52c7c93e7f64843cb7b3b22aeac7  gcc/ada/s-pooglo.ads
! 5faf2d781d3be78d1a689fe1690643dd  gcc/ada/s-pooloc.adb
! 9a34966d048d91316b30018ae5fa0feb  gcc/ada/s-pooloc.ads
! 8caad41f5ccee90f32d7ed015b8d9165  gcc/ada/s-poosiz.adb
! fc03333e525aec898c803e65b986da27  gcc/ada/s-poosiz.ads
! 9482e42a9a580ceb1167c7f1d1b2d66a  gcc/ada/s-powtab.ads
! 8c488b22749e52c40a5e5be45cf1fd88  gcc/ada/s-proinf.adb
! 37194558cef16358fd75ca2a91716bb2  gcc/ada/s-proinf.ads
! aacc5854e8d90f7e8170ec74df59672b  gcc/ada/s-purexc.ads
! 3f03ad3b22cf362dc11631c0e6a7a058  gcc/ada/s-rannum.adb
! 2b0edd6d1e4e1dd1bdf6506b80c450e0  gcc/ada/s-rannum.ads
! edabe85605253e96f4969485a6355921  gcc/ada/s-ransee.adb
! 4029797ef34e70bf7fef7d5b54ffa383  gcc/ada/s-ransee.ads
! 66e7a959f16571e8a7f9a23522658ecb  gcc/ada/s-regexp.adb
! 9f30262ae0d28b0339a3d81aa4327e77  gcc/ada/s-regexp.ads
! c3decd6a69cb1c0e88d5a4291587b60c  gcc/ada/s-regpat.adb
! fbac118eb74b31cbc1201561d336c963  gcc/ada/s-regpat.ads
! 7fdaf3ca4fb4fe0af7b0a9118e007b58  gcc/ada/s-restri.adb
! 0a644fea3259d36f945a93a7b36e381b  gcc/ada/s-restri.ads
! 8ab8257d0bd04342f1409ab29078849f  gcc/ada/s-rident.ads
! 21f2b90fc5102b6bed2d9b118791b218  gcc/ada/s-rpc.adb
! be72fc6bf0c148c9e254be445624f473  gcc/ada/s-rpc.ads
! 2e2cd47a683b80289c74edb70558de53  gcc/ada/s-scaval.adb
! 8e66f08962dd59a5dd1cbb0e90fe9026  gcc/ada/s-scaval.ads
! 6172c0e4e2ac3c02cbfd58b0655041eb  gcc/ada/s-secsta.adb
! 279a25ad481338d6dd5425d31fddca05  gcc/ada/s-secsta.ads
! 4ed9a1edbf594d02be150ce16976fb7f  gcc/ada/s-sequio.adb
! 621c97b7657c5f2bd8c34fd29ea69b12  gcc/ada/s-sequio.ads
! 38ec7ac7e8e54cfc827d0c61d9abae03  gcc/ada/s-shasto.adb
! b13ba24556183bc0389740d91046b67e  gcc/ada/s-shasto.ads
! 788849fb289cc56821d847d7ee0f7750  gcc/ada/s-soflin.adb
! 17533fe8cf4d72cb8e8071e04d2ec66f  gcc/ada/s-soflin.ads
! 4ebadd35accd8694c4366cd84b594917  gcc/ada/s-solita.adb
! 22ec67b1e4843c4b937bc713ab95e57d  gcc/ada/s-solita.ads
! eea82bee095f352a5954b9a7bd63c5ef  gcc/ada/s-sopco3.adb
! 5e420f3b6fd131c828fde5f0a8ba0258  gcc/ada/s-sopco3.ads
! 8eedcfc3f2d3a7e2918c31ea8d814085  gcc/ada/s-sopco4.adb
! 581c1134621870e6703b7cd521073981  gcc/ada/s-sopco4.ads
! b2f980f5ef0ff5f95663c081ed8b2116  gcc/ada/s-sopco5.adb
! bacd339c16f6e80fd939cc23c3fac647  gcc/ada/s-sopco5.ads
! 1074333c4a37fc17c7a33d9509f298a2  gcc/ada/s-spsufi.adb
! cf310d279645c087b3daa91e8517c907  gcc/ada/s-spsufi.ads
! 7f0c788511561848318ebadf91796154  gcc/ada/s-stache.adb
! e7efc8ff8f7eafe219f89cf757ca562a  gcc/ada/s-stache.ads
! be573c76dbc3f57740b49e5e86422ab3  gcc/ada/s-stalib.adb
! 01799658703234c2dd19b296780ea604  gcc/ada/s-stalib.ads
! 66a91f7d9f45e74fcfae5439c925e234  gcc/ada/s-stausa.adb
! b88188bbc9a578830dff2d109d1e9217  gcc/ada/s-stausa.ads
! 4691807cfa3dbd2d513ec22b32cf9528  gcc/ada/s-stchop-limit.ads
! 7c036f48b151c557051f29725482e033  gcc/ada/s-stchop-rtems.adb
! 706847ed72b6ba378d81cffbda29587e  gcc/ada/s-stchop-vxworks.adb
! 7167640347040e8b0edf04b1166a29be  gcc/ada/s-stchop.adb
! af5d3a49f29694ceec912e8bdc4ba467  gcc/ada/s-stchop.ads
! 652d66a664847fe9b2ea8e6f65f1c653  gcc/ada/s-stoele.adb
! 3ed892b007660be36e5599c2b7c59c04  gcc/ada/s-stoele.ads
! dcfb69f791f9b1a4755381d3fd56340d  gcc/ada/s-stopoo.adb
! 4115ba78c0f431a29aa02cbd344f9cf3  gcc/ada/s-stopoo.ads
! b27d4d1dd1a667e48c0063b3ef4e8997  gcc/ada/s-stposu.adb
! 23ff53eb117044c2a1af2709d42188c2  gcc/ada/s-stposu.ads
! 65459854d618a681ea85fb18fe84cc36  gcc/ada/s-stratt-xdr.adb
! 926eb5a3de6c69364ec74d09fed2f4d9  gcc/ada/s-stratt.adb
! 458262898acc4ecc685b2f4a1e034fcd  gcc/ada/s-stratt.ads
! 734d55a20566bef5041d3cac4b7a5097  gcc/ada/s-strcom.adb
! 8ca72432604161ac21f009224057c132  gcc/ada/s-strcom.ads
! 0b9d6718b5d442eeeade170aab644824  gcc/ada/s-strhas.adb
! 8b40e1f731385b8da79acee4f8fc5ecc  gcc/ada/s-strhas.ads
! d119cffc36f07a5fc39d4eab8f3fc5dc  gcc/ada/s-string.adb
! 89e57662b80e0942a2cd774c1c1ac1bd  gcc/ada/s-string.ads
! be0868d25d80e1df571eb845dae240fb  gcc/ada/s-strops.adb
! bdf127994cae14669a813c46203600b1  gcc/ada/s-strops.ads
! a96a52bbe0ee7638d2c9859a8d1d6907  gcc/ada/s-ststop.adb
! d11dde25c8e782530e8984c7cb30f167  gcc/ada/s-ststop.ads
! 12badbdcdc366dc40ae6fd5fd9d63a11  gcc/ada/s-stusta.adb
! a81974818d072ba5828cb5e79e75cf62  gcc/ada/s-stusta.ads
! 8e5a7c45587b65d4c74c44978128cdc8  gcc/ada/s-taasde.adb
! 75fbaf8d422451551050ad6b1bbaa855  gcc/ada/s-taasde.ads
! 3b47110c2c2502698e983b3497cc249e  gcc/ada/s-tadeca.adb
! 267821e01f32503d3dc41c28ce97c800  gcc/ada/s-tadeca.ads
! 262416bcf292fb6d18f3a16e5a2fd1c1  gcc/ada/s-tadert.adb
! 1b09ab4c9161279f2e1bc8d09e43b2f0  gcc/ada/s-tadert.ads
! 48d0c33261b09d0d8d8a950761fc8419  gcc/ada/s-taenca.adb
! be414b8065b125dadc24d979dd03f247  gcc/ada/s-taenca.ads
! 2802ca1ed41f0ea5f5af778d4abe3a6a  gcc/ada/s-taprob.adb
! f6c20592547a5136dc0ab52c005b53df  gcc/ada/s-taprob.ads
! b8d6800506a97e8546e484f6f8dde0b4  gcc/ada/s-taprop-dummy.adb
! 4656d79b20897060b18f341d629c5bf3  gcc/ada/s-taprop-hpux-dce.adb
! 3266e8f53a42d03a4bbeb15a713a363c  gcc/ada/s-taprop-linux.adb
! 8ae2289f7c25d4dff6087de5f1071ca8  gcc/ada/s-taprop-mingw.adb
! a2107e826ce03164715a170388775231  gcc/ada/s-taprop-posix.adb
! 91bdf9a5f97fb214b3ead1c821223c14  gcc/ada/s-taprop-solaris.adb
! 11ac4f707c5bd3a696676ccaa29005e0  gcc/ada/s-taprop-vxworks.adb
! 5c2a35bbc654fe7b8ce69052d3ce7990  gcc/ada/s-taprop.ads
! 9f836505225493f473700d4a3e51d02a  gcc/ada/s-tarest.adb
! 975c3424ff8dedb50d79fc5d6387753e  gcc/ada/s-tarest.ads
! c7682f1c0c23d63fe692a21e9b593936  gcc/ada/s-tasdeb.adb
! a29bf78ab35ca2d40734c1a4c42db0ad  gcc/ada/s-tasdeb.ads
! 5ec246602695eadfddb619f37411d4c5  gcc/ada/s-tasinf-linux.adb
! 2c1603a6d94a9230250a49aed416b290  gcc/ada/s-tasinf-linux.ads
! cc28b59c67779c06421634e24aa77bc7  gcc/ada/s-tasinf-mingw.adb
! af01d7a20a38cb35ebf70432c2de8fcb  gcc/ada/s-tasinf-mingw.ads
! 3631b0de33fe76ea191c87fdfae1ee66  gcc/ada/s-tasinf-solaris.adb
! 72db547f09d3c4db2fc1bc197ce7eed5  gcc/ada/s-tasinf-solaris.ads
! 42c707263b8f4d5a69391ab405e67ee8  gcc/ada/s-tasinf-vxworks.ads
! 31248d3c8b9914dcae83842bed05136c  gcc/ada/s-tasinf.adb
! 627f8037e3cff1d4a78e27a5c081c54b  gcc/ada/s-tasinf.ads
! 30071becc0cd5dda34012c078e9acf8b  gcc/ada/s-tasini.adb
! bc968f8e7f4a749c24ffd5ccf25685be  gcc/ada/s-tasini.ads
! 6b9ca549dbd24eae3371d9643027325b  gcc/ada/s-taskin.adb
! 04e1cb48b41027e26af49ae3d4b05463  gcc/ada/s-taskin.ads
! 90947d5b567c582f25a9baa6fda6eff3  gcc/ada/s-tasloc.adb
! 436728194d864ebaf324478b4dddad51  gcc/ada/s-tasloc.ads
! 64a82e15816bcc9823419fa933107533  gcc/ada/s-taspri-dummy.ads
! 229b3d44e883f645ee4f177b4b768eb7  gcc/ada/s-taspri-hpux-dce.ads
! 5e3bca436e594387a2a0209c11e27953  gcc/ada/s-taspri-mingw.ads
! dad1989448b3bda3f2cd674a6a21d76f  gcc/ada/s-taspri-posix-noaltstack.ads
! 00af2bfe83eca120a0041ab19821dab6  gcc/ada/s-taspri-posix.ads
! b270d0a742f5a4db76466100c314407f  gcc/ada/s-taspri-solaris.ads
! a51b6f97118f6266dbc59cb592a5c1b3  gcc/ada/s-taspri-vxworks.ads
! 3c9e938571b800dbc8b58e80a49303e2  gcc/ada/s-tasque.adb
! 1b93e463ab1196bfc592e865115287e5  gcc/ada/s-tasque.ads
! adbc786517ffa13ed9948e632350a571  gcc/ada/s-tasren.adb
! 4d53f72568d2f83c377fbf72d8410315  gcc/ada/s-tasren.ads
! 099d5a5ad01314cb3d5756f6ea8ab8dd  gcc/ada/s-tasres.ads
! 938bc3e7f70dca89f6b5f5ae6df7e114  gcc/ada/s-tassta.adb
! b34006a3b46e88c9c3ad99996af6dbab  gcc/ada/s-tassta.ads
! 0b74951f7ea8c773f3dd6f8e22521e70  gcc/ada/s-tasuti.adb
! 9af522ba4defc0d06027e2d73e50fa43  gcc/ada/s-tasuti.ads
! 146a4712a488942156c393b25f2f9c11  gcc/ada/s-tataat.adb
! 931cb30b4bf10c333ce41254eb41b71b  gcc/ada/s-tataat.ads
! 66654c6e55f88f3f08d530fcbdb30a8c  gcc/ada/s-tfsetr-default.adb
! 2030d74745aa70343f7d0761fdfd6c32  gcc/ada/s-tfsetr-vxworks.adb
! b16bab0279f4f03199851123549f8e17  gcc/ada/s-tpinop.adb
! 3fe4a16880f9f8c0dc9d045b18061af0  gcc/ada/s-tpinop.ads
! 70dac95b8f4fe7e3721759446a85b539  gcc/ada/s-tpoaal.adb
! fcabd8082554febd36e09e3bc945bbda  gcc/ada/s-tpoben.adb
! 3267357c00436fd59c8e9f5205c1d11d  gcc/ada/s-tpoben.ads
! 7b1a417d252efb88f18401d76288f987  gcc/ada/s-tpobop.adb
! b071b7f589bbafd86513b9bcf2a2c15b  gcc/ada/s-tpobop.ads
! 1471ba444100176038c49ac530e19860  gcc/ada/s-tpopsp-posix-foreign.adb
! dfc822a4e03160069b5f1dc35f64b9f2  gcc/ada/s-tpopsp-posix.adb
! 72cd8faeb67e5bf7ea491b58fe02dd35  gcc/ada/s-tpopsp-solaris.adb
! 954c913d41b1d76a8399d2ba3656031c  gcc/ada/s-tpopsp-tls.adb
! 9027e9fe418b96085070ece7a24c92a4  gcc/ada/s-tpopsp-vxworks.adb
! 6094c725073aae5b9c9ec81bbd229940  gcc/ada/s-tporft.adb
! f7099a9021f681e7e093bf754f80b430  gcc/ada/s-tposen.adb
! 03b05e6e2b0199c81ab369596b6d4ed7  gcc/ada/s-tposen.ads
! 6ddaef055acc09477295fd970ceb5288  gcc/ada/s-traceb-hpux.adb
! 5a9884bf55d86bd6b648118685c9d1a7  gcc/ada/s-traceb-mastop.adb
! 1875cd6c3cf7eb845c177d161751b66f  gcc/ada/s-traceb.adb
! bf98f8617c7019c61c91414210c767c2  gcc/ada/s-traceb.ads
! ea0f175d6d7bbad6ec0a238fc16079f0  gcc/ada/s-traces-default.adb
! 838cb0e130480dad051af6ea28bff5e6  gcc/ada/s-traces.adb
! d34f27ecbe06eb9123ffc40cfccc5290  gcc/ada/s-traces.ads
! 20fe0d658017bc652730fd87760508a7  gcc/ada/s-traent.adb
! ae27e3b21c4818c7a0c6a847319091c3  gcc/ada/s-traent.ads
! 320ebdece910265f6f8a9285f43cd8fb  gcc/ada/s-trafor-default.adb
! e7a37f3d369cce1e91445f4c44a8fc7b  gcc/ada/s-trafor-default.ads
! 2999eeff82b0fc10c3164a6f8d1f8fca  gcc/ada/s-trasym.adb
! 640695ec8fada375862edaec60a55eac  gcc/ada/s-trasym.ads
! 4ec2ba8f469cfb8aceb04659ac51c57a  gcc/ada/s-tratas-default.adb
! c5e77b08067618fb87288466af29cf38  gcc/ada/s-tratas.adb
! 48d0676df88d5df5ee0b7e2c86309069  gcc/ada/s-tratas.ads
! 645843f3990f43301133080ccf2dc44c  gcc/ada/s-unstyp.ads
! 097ebfcd375f43b0563265858a88e319  gcc/ada/s-utf_32.adb
! 866e3fed64758908acb9494c12eb1b09  gcc/ada/s-utf_32.ads
! fe2605cbb29df9e9526dd74464ddff31  gcc/ada/s-valboo.adb
! 62c70b6bcad216275432135804c7620b  gcc/ada/s-valboo.ads
! e8136057b9e22f2814b6206bb2d1a2f4  gcc/ada/s-valcha.adb
! 4a605583606738210944ec0e110fb844  gcc/ada/s-valcha.ads
! 331f9f557a6bfc82b140248f0caef202  gcc/ada/s-valdec.adb
! 0b838689e99a1078c67c25b3ba4887b1  gcc/ada/s-valdec.ads
! c64230e5331a8b94cdb5525b1a450457  gcc/ada/s-valenu.adb
! 85578547a2bb023040f6481ffbb9c730  gcc/ada/s-valenu.ads
! e8963de02d852359f7ef02e1bb9d48f8  gcc/ada/s-valint.adb
! dc76a1163cad674b0c1bc6f87598fae9  gcc/ada/s-valint.ads
! 48cefa239c95fec386cbc7d927b9e7dd  gcc/ada/s-vallld.adb
! 8d345bddb9e1aa89fff65860b3337a39  gcc/ada/s-vallld.ads
! 9261b555e5c0523de4d2c359b7975b30  gcc/ada/s-vallli.adb
! 7c3ecd6c12f06ebfa9d0eb7cc4b3000f  gcc/ada/s-vallli.ads
! ede1a39b0598d9335dba64c0b31a3518  gcc/ada/s-valllu.adb
! e6afe2f7f1f3a317cd6f203c572452f9  gcc/ada/s-valllu.ads
! cc81696800afa87a524da2465cb54446  gcc/ada/s-valrea.adb
! e72d999bf2da88e1abd5645943a2455b  gcc/ada/s-valrea.ads
! d8a4924073490112d1fbf43720e19a32  gcc/ada/s-valuns.adb
! a3ff8dac7ca32859e1bd77bde45cf6f7  gcc/ada/s-valuns.ads
! b85bc5f7a43ff87d4816c30e36f52d67  gcc/ada/s-valuti.adb
! 7e5c01f49cbd39c07f232f358c187810  gcc/ada/s-valuti.ads
! c3b96b2f547fa16b1198f5b832131fef  gcc/ada/s-valwch.adb
! 2ffadd27844139efcf4ea1209a54da22  gcc/ada/s-valwch.ads
! 3d86183b495b6dd0b0bdea014b2c874a  gcc/ada/s-veboop.adb
! 7b0fd2831a6428f3a041f2265141fcd8  gcc/ada/s-veboop.ads
! 384ce61715ae7db50a859d5aa9ed869d  gcc/ada/s-vector.ads
! a1fae710f69b341399fc71843be126ee  gcc/ada/s-vercon.adb
! c93adab3f11d834774871fde3bfd0320  gcc/ada/s-vercon.ads
! 39b09f74db8ab8093a79cfd7a5c0dd74  gcc/ada/s-vxwext-kernel.adb
! 8c99e38bb6f7e59d298a56231badeebf  gcc/ada/s-vxwext-kernel.ads
! 710ab7e9fa88c863fa43546ce553fc79  gcc/ada/s-vxwext-rtp.adb
! ca136e63189df58462f4b821920c95c1  gcc/ada/s-vxwext-rtp.ads
! 5575a5f6cdf111fdf4c2c2c0b793087c  gcc/ada/s-vxwext.adb
! 353deec2e34fd4dec68d96174e320a25  gcc/ada/s-vxwext.ads
! 337f018beb259652aefd4450474b0e27  gcc/ada/s-vxwork-arm.ads
! 011cfdbc5ce04bf03549781db06dc54a  gcc/ada/s-vxwork-m68k.ads
! 6b7a4a2bff20721ec4aea405938c53db  gcc/ada/s-vxwork-mips.ads
! 87c015d7ccd1833959e1b0bbc97a4d5c  gcc/ada/s-vxwork-ppc.ads
! 0bf5e3071f650673eb4c7e4be4e40e7a  gcc/ada/s-vxwork-sparcv9.ads
! b631dc218a6f0a35e8db3e8593cd9821  gcc/ada/s-vxwork-x86.ads
! fb9e9c7d396815b6aaccda13aba31de9  gcc/ada/s-wchcnv.adb
! 6593b2f43cd16d64a7ab4f8f312663a9  gcc/ada/s-wchcnv.ads
! a29cd623b8814c32bb6f4e83b2aeda67  gcc/ada/s-wchcon.adb
! a2e41ef00473987a75c1c623da5227a9  gcc/ada/s-wchcon.ads
! 75706853eba94c0d975a0a6348e171db  gcc/ada/s-wchjis.adb
! 588815a49c05c993adb2666df1464ef3  gcc/ada/s-wchjis.ads
! 962948aa4de506c706980c3fc10a4bdc  gcc/ada/s-wchstw.adb
! e2304f5f8d2ee06c937d63d841eb6a94  gcc/ada/s-wchstw.ads
! c4767880c241dc689d4b5ed9ca5ea50d  gcc/ada/s-wchwts.adb
! f20de14ad746fab11f203f78e8513cf2  gcc/ada/s-wchwts.ads
! 82103727e3f863a9b4f5afb553ec68c4  gcc/ada/s-widboo.adb
! b1839e144aed120127643adcaeaf55dd  gcc/ada/s-widboo.ads
! c5224730061e4bef7b302e491954e816  gcc/ada/s-widcha.adb
! 84f71f2735dffb1238e01946e4706126  gcc/ada/s-widcha.ads
! d55f205cd6ee8bf0882bbc9520623ed3  gcc/ada/s-widenu.adb
! d819dbf09782c24f85b79ba135461efb  gcc/ada/s-widenu.ads
! 9f5d85d8f82becbb4adeaac8d27c0750  gcc/ada/s-widlli.adb
! e20e4d2621786af63710392f1638563e  gcc/ada/s-widlli.ads
! 41f652183a1598801b7b7725a5de63af  gcc/ada/s-widllu.adb
! c47257cb6a8811264bcbfe820ee65d76  gcc/ada/s-widllu.ads
! 5f957105f61180698de2788c4c992549  gcc/ada/s-widwch.adb
! a7bf1aeada0156e4fd76210d158d2aa2  gcc/ada/s-widwch.ads
! 91598bd522bccef83d7ef26a7aad8215  gcc/ada/s-win32.ads
! c90a78ee43619a93037b58106732de57  gcc/ada/s-winext.ads
! 04426993e470555818de0a95585a841d  gcc/ada/s-wwdcha.adb
! 867b1768c16e588885557fc3cc56042e  gcc/ada/s-wwdcha.ads
! a9fd1de233b34bb74bf9aa9cd40cce78  gcc/ada/s-wwdenu.adb
! c12347f52151bce5361e2b559d2ee97e  gcc/ada/s-wwdenu.ads
! 067595b9116f5d61bffa3a823293232e  gcc/ada/s-wwdwch.adb
! e020831ef67fa65e434d5865695ebd15  gcc/ada/s-wwdwch.ads
! c797e2c5153a722dbe577c84c1e0159a  gcc/ada/scans.adb
! ba7f1106211703c9f60d73fd2bcac435  gcc/ada/scans.ads
! a6ded4355fcc7214f51d77aa14eeed65  gcc/ada/scil_ll.adb
! df4f9b86688780a8ee72b301b0073200  gcc/ada/scil_ll.ads
! f95652ca22542a3fcd573ef6707cc0c5  gcc/ada/scn.adb
! bc7fc4aefb5f020216f7bdd4a06761bc  gcc/ada/scn.ads
! a94fa71a6e14e1df7da476e8dd42d5a8  gcc/ada/scng.adb
! 1af4bb116c54bc08e9483d37ea402b42  gcc/ada/scng.ads
! 049ec93dae1a8b29ff3477f7589238e9  gcc/ada/scos.adb
! a5013b20801adc9f59229e83c9b1d885  gcc/ada/scos.ads
! 87e40df6833e6289e6c1048829fa225f  gcc/ada/scos.h
! 0eeb202bec7ea126aa0dbc985c3e0b7d  gcc/ada/sdefault.ads
! 6c5d65c7ad85ec8ad8b5a816606419de  gcc/ada/seh_init.c
! 977d9dc1b69153a4e4685fa494138536  gcc/ada/sem.adb
! f247ecc2b4fdc32ee4c3dad2388bd1b0  gcc/ada/sem.ads
! 42a04b3dea357689a11f7ae8e681bf9f  gcc/ada/sem_aggr.adb
! bfb147742c43dd6e81b5efacaaea2359  gcc/ada/sem_aggr.ads
! 1338a0fb3da35eee2d8d2a7baf579104  gcc/ada/sem_attr.adb
! fc6d782c3b6287132a76545edf8d0f0d  gcc/ada/sem_attr.ads
! 9dad9b5a4be54c23f922142122478e5f  gcc/ada/sem_aux.adb
! ff0dc57518a745da5b15874fcabb2398  gcc/ada/sem_aux.ads
! 6c7542f9f112c3aade2a74babe18b1fe  gcc/ada/sem_case.adb
! 4f1df868faf06573356e0d65eeb086b3  gcc/ada/sem_case.ads
! f58b2bc9565b7a98fd4a7cdeeddc0331  gcc/ada/sem_cat.adb
! 65eb3c5d2b702afa8bbba1d3032d2021  gcc/ada/sem_cat.ads
! d653faa608c55f1a751a55f95ff8d543  gcc/ada/sem_ch10.adb
! b986c8463f948977b12a4447d719a134  gcc/ada/sem_ch10.ads
! ba80e21f0577644aa652ec5931d032d8  gcc/ada/sem_ch11.adb
! 6f8254b65329ff2677e7b66cbae92860  gcc/ada/sem_ch11.ads
! 4d08c82418a228a69508cf6d18d9370c  gcc/ada/sem_ch12.adb
! 92062a804c90811ca9c799f4f69ae53a  gcc/ada/sem_ch12.ads
! 08caa0975347d09632f51640f5c5e70b  gcc/ada/sem_ch13.adb
! 8fb30b82a2dade4e46d116fbad4c8085  gcc/ada/sem_ch13.ads
! c2d795651aeb34bdccbee2cbbcaba315  gcc/ada/sem_ch2.adb
! 2503e79ed6a55f6fcd86271accd9b9e2  gcc/ada/sem_ch2.ads
! 9aeb1c7c7d07df2a31afc1e4300fe2c4  gcc/ada/sem_ch3.adb
! 378872bb9c8c138da57aced4c5bd65b3  gcc/ada/sem_ch3.ads
! 7c6c75a7347298c12f266084210ee4db  gcc/ada/sem_ch4.adb
! 4369e8974d1d9ff87d45432644a5f8b6  gcc/ada/sem_ch4.ads
! 9505f94c7226ea7583437cb002434524  gcc/ada/sem_ch5.adb
! 941300afa9d098437035baaec3ac4984  gcc/ada/sem_ch5.ads
! c18c94bb467dbcdae3f2e2fd6945f016  gcc/ada/sem_ch6.adb
! 7c7eb14caa439292a02e37acfd8d2c1f  gcc/ada/sem_ch6.ads
! fbebd954c12ebff26b7f18b36d4fd1b8  gcc/ada/sem_ch7.adb
! 3809bde1ee1875e6d28cf93896b7e4e9  gcc/ada/sem_ch7.ads
! ae471fe5325f053707420ed75762e971  gcc/ada/sem_ch8.adb
! 061a92402d328fa3dc192cbfeac7695c  gcc/ada/sem_ch8.ads
! 8a45130b63781448896cc469d6794045  gcc/ada/sem_ch9.adb
! dd1ce93f318fc3b81470ace11c392f71  gcc/ada/sem_ch9.ads
! 5572d15f3f946ed014ab4867b6cf5419  gcc/ada/sem_dim.adb
! 1eae63ce4cd94505970efd63ad0b33e9  gcc/ada/sem_dim.ads
! e077b92626b58be094e024af5da95a37  gcc/ada/sem_disp.adb
! a0aaa45ec72322ee4a5e7c918cb3837b  gcc/ada/sem_disp.ads
! 32319f94748d04a051968bcc34f4981e  gcc/ada/sem_dist.adb
! 4fdccc35f87d1e4973c94d6941ae5832  gcc/ada/sem_dist.ads
! d48f3eefee182973ba035061130be3a1  gcc/ada/sem_elab.adb
! 13afaeb0498228f0436d5a8ac83f85b4  gcc/ada/sem_elab.ads
! c5d8cf7cc2c9e59b301a7e45ec812b1f  gcc/ada/sem_elim.adb
! e19ac019be3200b635b53ebc149d10f5  gcc/ada/sem_elim.ads
! b495d667193048573fd02b4b3f3cea1a  gcc/ada/sem_eval.adb
! 0b2b01f6cdb8e43c4c2f41aa8ef1af35  gcc/ada/sem_eval.ads
! 03d22b338e861f786d6cab21b1e071ad  gcc/ada/sem_intr.adb
! acf018ee9554ad9cadfd26e2ebf6816c  gcc/ada/sem_intr.ads
! 41bef98bbf3aeb6804301f0923e92208  gcc/ada/sem_mech.adb
! c3ccfc5a2a0de0ff7d1c17602f34d6a9  gcc/ada/sem_mech.ads
! 1d8f86c8e93a836d10a0774b8bc3e46c  gcc/ada/sem_prag.adb
! 4d41b3d2c695ac50f37954dfb7191f78  gcc/ada/sem_prag.ads
! 222b13031a773dbc5b5f9f3b542d204f  gcc/ada/sem_res.adb
! f49fb908b3e1b95e51b603504d1bfa24  gcc/ada/sem_res.ads
! 57ce1ccbf61708d59ee66af25d562fcc  gcc/ada/sem_scil.adb
! 847605137772b90887f488e5567ebc7b  gcc/ada/sem_scil.ads
! 27ab9cc1bf24a3790921d81259ce2a45  gcc/ada/sem_smem.adb
! 88bf0e6b791759354e8ae81ef7507ff9  gcc/ada/sem_smem.ads
! ef47f0af7fa11e2fce10a7fb20c98511  gcc/ada/sem_type.adb
! 9176639d909025d92b4e8912af77b041  gcc/ada/sem_type.ads
! 36d2e90b172ff0febb7c32072363cea8  gcc/ada/sem_util.adb
! 0339d45576425b8235f546296887dcc1  gcc/ada/sem_util.ads
! 1db799c9a140af9fb155a327f3a6e49b  gcc/ada/sem_warn.adb
! 1b7d4036a641085606704eb68e9e7557  gcc/ada/sem_warn.ads
! b4fdbe835ffe56d072094daac548065e  gcc/ada/sequenio.ads
! 73dc9abd14136de412464f81d458a638  gcc/ada/set_targ.adb
! e5534dbb65aa745adc2c3e794982a229  gcc/ada/set_targ.ads
! 6aa6746aef1bd639619d9d8c1467226c  gcc/ada/sfn_scan.adb
! 10fc436484f66d04e4245f019d6b6c27  gcc/ada/sfn_scan.ads
! ac6a1b0d045eb6e3abfe7323d7640e2b  gcc/ada/sigtramp-armdroid.c
! a0c1bcf45c4fd1497abc931998cb5421  gcc/ada/sigtramp-ios.c
! 985b56db29dd78b08f3afe3bd3c79a1a  gcc/ada/sigtramp-vxworks-target.inc
! 9853976436766ddff3d574088ac6419c  gcc/ada/sigtramp-vxworks.c
! 53a387a011725fc32c65921e2b99d1aa  gcc/ada/sigtramp.h
! 5098dd5ed9d1cfa7eefb391e3e12f4b0  gcc/ada/sinfo-cn.adb
! 01d7818c1debfdda506b79722a76da77  gcc/ada/sinfo-cn.ads
! 00d40b308d6b6adf972bfb1ac10f9cd0  gcc/ada/sinfo.adb
! df28df7ee33f25c8f9f92ddbdbfa8abe  gcc/ada/sinfo.ads
! 166eb092ff0d5fe906a8cbc35034fb55  gcc/ada/sinput-c.adb
! a22eabaec5d1140d5550c053250a9e36  gcc/ada/sinput-c.ads
! fa0c6f6e183553cc0cea99acd5a6f97c  gcc/ada/sinput-d.adb
! b23eb0a8d1382c62c2155ebc88e3083f  gcc/ada/sinput-d.ads
! 7affa12beb14e7e64f7ab6a11bb7620b  gcc/ada/sinput-l.adb
! f189d36361a191e810b65e9d7e635c6e  gcc/ada/sinput-l.ads
! d5e3f9b4c87bc7d4e22ac46d3bb5c13d  gcc/ada/sinput-p.adb
! c39300ff29503cedabd135fea15fe825  gcc/ada/sinput-p.ads
! 5a382045cc4a0c630cc6565932e22429  gcc/ada/sinput.adb
! 31cb929be5e4ec4d0e3548c12408faaf  gcc/ada/sinput.ads
! b8b7fbab822a7e98a2489bd73bc65ec3  gcc/ada/snames.adb-tmpl
! f6caad5beaa5b4e188e20f019d828e20  gcc/ada/snames.ads-tmpl
  1d0f0a946dfb952f009ada43305106dd  gcc/ada/snames.h-tmpl
! b684ef5a44004c6c8fffe33a1bd28809  gcc/ada/socket.c
! 510b559762b99126a7c808edd42db540  gcc/ada/spark_xrefs.adb
! 0475dc35783a6a3984f4743fb46881f7  gcc/ada/spark_xrefs.ads
! 06c27709b5f440d91ae501e950a94fc8  gcc/ada/spark_xrefs_test.adb
! 870528bc78ae55b4b861e85752a12720  gcc/ada/sprint.adb
! 4a1af890cac055c98c597eec9d13943c  gcc/ada/sprint.ads
! ba9c54f6c5dae1c0e9b9b220ba3e4394  gcc/ada/stand.adb
! eb31782d318eda9e9652fd0e2c7569be  gcc/ada/stand.ads
! 31198b3c3b59d9a0ace8d7e7c0cdcc58  gcc/ada/stringt.adb
! 4daed6224bd757bf5c9d1e68635d01f3  gcc/ada/stringt.ads
! 9e86f0addafed2ca03d02548b842de38  gcc/ada/stringt.h
! 5dd41206e46da8cfaaee085b50e48b13  gcc/ada/style.adb
! 5d702a62efe8dec0afa33b776c2f0d9d  gcc/ada/style.ads
! f9009b97d9a59f3adea1282c1506c8f8  gcc/ada/styleg.adb
! 8addaec82cb2a08fdd25dda508a3fb08  gcc/ada/styleg.ads
! 7c4e977488b72637e3b4131e074b80ff  gcc/ada/stylesw.adb
! 010c1ebb4592092ccc05287811e97b32  gcc/ada/stylesw.ads
! 9a34dfb67222b376721f9e4159257121  gcc/ada/switch-b.adb
! ecc601b455da3fadb98c3a62f6d5e601  gcc/ada/switch-b.ads
! 5a84fc8a0039b7b1a27c2d91b83d5677  gcc/ada/switch-c.adb
! eb4c8837635c9eb468f723f079536a7c  gcc/ada/switch-c.ads
! eee21dbcf5f2e92e21d5f65e79ef467e  gcc/ada/switch-m.adb
! 3753298579334313d7fd54a4a195f5d0  gcc/ada/switch-m.ads
! 13656f9e4d4d30820bbc2a2d969e9fa2  gcc/ada/switch.adb
! 1f62c36d939ca81abdc3777380548854  gcc/ada/switch.ads
! d36e0605a7f68f541648e49af4e5d6ef  gcc/ada/symbols.adb
! 28a22b1808efb5a1733162bd32c60ad3  gcc/ada/symbols.ads
! 0ca0b7f7e7cd60b6a255f096abaac886  gcc/ada/sysdep.c
! 7a47a8649f22534b1b04aba2637f1f6f  gcc/ada/system-aix.ads
! 99b95c46db21c0b39ab2eecb4f0ef1b2  gcc/ada/system-darwin-arm.ads
! fbca9c41faf338a0943d70dc66018cf4  gcc/ada/system-darwin-ppc.ads
! a99459ca9e7f8c2f8138819b0c12dad1  gcc/ada/system-darwin-x86.ads
! 45100986a7c499055374837259a70dbd  gcc/ada/system-djgpp.ads
! f3529cf7e308b1c2f88769fece799df1  gcc/ada/system-dragonfly-x86_64.ads
! eced7242c23b6e688f2d90d7c4bbdeca  gcc/ada/system-freebsd.ads
! 5b2822ecc8b2fdb73d25e0c1a84ff1d1  gcc/ada/system-hpux-ia64.ads
! b6cc08525531d1f3982d9c75f478b398  gcc/ada/system-hpux.ads
! 37a17e31fab615984999f9c9ba469fa5  gcc/ada/system-linux-alpha.ads
! 0c48eb73fc22cb1dd5e580ec5e852f23  gcc/ada/system-linux-arm.ads
! 9b25060b45903af4c1eba7c3df3677a7  gcc/ada/system-linux-hppa.ads
! b9c935b28aa1f615229b2de609214b9e  gcc/ada/system-linux-ia64.ads
! 8b50051a638865b9c04ba58430a01e4f  gcc/ada/system-linux-m68k.ads
! 4fb63e21c3d2c92b301a1f03409aac03  gcc/ada/system-linux-mips.ads
! 233e3a6e4eb191151c93069ff6506cf3  gcc/ada/system-linux-ppc.ads
! 7170b88dae15567ac7c1d4077146dc3f  gcc/ada/system-linux-s390.ads
! 97fd7cce986b18ba9ba777a6e8fe4bf9  gcc/ada/system-linux-sh4.ads
! e282c054ce61076a569dc22cda7c609c  gcc/ada/system-linux-sparc.ads
! 75baeb9027c284ed9b6473b6868727c7  gcc/ada/system-linux-x86.ads
! 5b8a44da2d50daa1508ae3d0c4704703  gcc/ada/system-mingw.ads
! ad44a5328ce047a607ff0a75d73029bd  gcc/ada/system-rtems.ads
! 46fe127f500943c73633dfeadc0e0884  gcc/ada/system-solaris-sparc.ads
! 42a22acb8f48ad6ce32c0cc8dc916469  gcc/ada/system-solaris-x86.ads
! ef22650bc227d1e4218fbb71fe7e8891  gcc/ada/system-vxworks-arm.ads
! 2f82a308833765773102ff466b7d67d5  gcc/ada/system-vxworks-m68k.ads
! 42659647a9e00d5e959e61b1c7187d95  gcc/ada/system-vxworks-mips.ads
! e2308957526eaa57d4c40fa473631297  gcc/ada/system-vxworks-ppc.ads
! a7d4845a6e9a8afc97caed8d03a575b2  gcc/ada/system-vxworks-sparcv9.ads
! 4cbebcd92a0f71e94bb9b008bfc796b2  gcc/ada/system-vxworks-x86.ads
! 7a9d697ad044cff7ddfe307063a25da6  gcc/ada/system.ads
! c277d9e10be6d2cd4ca7d91db387e2c8  gcc/ada/table.adb
! e4364dee8301c692e38cdee3fdb3eee7  gcc/ada/table.ads
! 5c87a77d480930c745acf8222d7934bc  gcc/ada/targext.c
! 252cc9fac858e3bcc1e4b163b314eb36  gcc/ada/targparm.adb
! 8805ece0c59f8b80615349345b954d86  gcc/ada/targparm.ads
! 7a238acfa7f13f0ebba35928cb42056e  gcc/ada/tb-gcc.c
! e64bbf73b05fb49f56d577a158d32263  gcc/ada/tbuild.adb
! b8ed649dc515384c892c28962caf7513  gcc/ada/tbuild.ads
! 1f2b794bda68bd1585adfdc384e9113b  gcc/ada/tempdir.adb
! f72ea3e6716200dbc5fc2f763a9bf1d4  gcc/ada/tempdir.ads
! 60ea30b85abff07f9298c8c2ec25bc00  gcc/ada/terminals.c
! 63b975bbe31d6cdd85dd7334283b758d  gcc/ada/text_io.ads
! 9d23c27784cd7ff1b81cab4242f8ff6d  gcc/ada/thread.c
! 3400eff2c46a1112a3a7a98ecb3e0ce0  gcc/ada/tracebak.c
! d716b4e0b7cfdf3282fe8c1fe881aa8b  gcc/ada/tree_gen.adb
! 482de4c511e9e081dcf48bf3f9c96cc7  gcc/ada/tree_gen.ads
! 0f928b8a27ae6818fb9e41b3682bddda  gcc/ada/tree_in.adb
! 238adc544b150ec7a0275ce941511466  gcc/ada/tree_in.ads
! bb4b35f341a3d55eada540e5e3d3844d  gcc/ada/tree_io.adb
! 48e6f1473451f8c51a31a6ccc810dded  gcc/ada/tree_io.ads
! f6d18a9e80128a535737d6af2456c0e6  gcc/ada/treepr.adb
! e0ae1f94bb15a9ecd92436d46f73b535  gcc/ada/treepr.ads
  b1a12d53199396f327ddecc980e710d1  gcc/ada/treeprs.adt
! ae03b893025a924b0a5b5f32e4af3ffa  gcc/ada/ttypes.ads
! c1c3d4f005776c6449677479c9b4d3dc  gcc/ada/types.adb
! baf222d8b8649c46296e0196159dcd2a  gcc/ada/types.ads
! dad8222bf21f50fcd8f09cb892302334  gcc/ada/types.h
! 8869bc37836eb12c729d721c22816879  gcc/ada/uintp.adb
! dd68910a38c7d9ef062e59f57f15fac8  gcc/ada/uintp.ads
! 2c661a5d368ae74a8f01549d3705f607  gcc/ada/uintp.h
! 673bbef1d00fd36bf74cdd663a784f37  gcc/ada/uname.adb
! 62c9665083a2af34527c13d8d639ab17  gcc/ada/uname.ads
! 9a646eb97c6840de5d4bbb081dd2031a  gcc/ada/unchconv.ads
! b8b0f9c3471d18ee5ac33521fe6f6d31  gcc/ada/unchdeal.ads
! 9a52aac9e02778b27624e0df5c110436  gcc/ada/urealp.adb
! 5f4a52645e39bd854c0d38e14fd95118  gcc/ada/urealp.ads
! 9c2da3b8b49296931bca0da270673dba  gcc/ada/urealp.h
! d4d8052a5faa192a226cc6336c948a2f  gcc/ada/usage.adb
! 079b8a31eacee5a24dc1371643456229  gcc/ada/usage.ads
! 97b3459dff091f857ec08643fe7bbfbd  gcc/ada/validsw.adb
! 390eee70c88819a4e856a4dec26f73de  gcc/ada/validsw.ads
  49ef8bc97a344f91b927f23054ade642  gcc/ada/vx_stack_info.c
! cc99fbc2d64374242b04e007b15c8ae3  gcc/ada/vxaddr2line.adb
  230f0a2f69b8ad56cc0d730f9fe0964b  gcc/ada/vxworks-ppc-link.spec
  cf24e76097812a932a26f6600d193208  gcc/ada/vxworks-x86-link.spec
! 92e3eac9322531717117fd3fab19f827  gcc/ada/warnsw.adb
! e6f600d5513ac00119d1f73fe317a8c3  gcc/ada/warnsw.ads
! 8dec4b654d687c25430aea2ccb8aeb31  gcc/ada/widechar.adb
! d9c38d33db67c9149438de63b488e3de  gcc/ada/widechar.ads
! d2615b7c2b7e18579ae08d362a3762d0  gcc/ada/xeinfo.adb
! 520aee142363a25a9f984fb39f8a12da  gcc/ada/xnmake.adb
! 7c4a81f4bd6b5a4cc9f75c12abaa1a9c  gcc/ada/xoscons.adb
! a5a0de839d83f901d3dcdc9bb7a8de50  gcc/ada/xr_tabls.adb
! b518f8a49f1f6271a9b99fc6ce4441f3  gcc/ada/xr_tabls.ads
! 8ffabef50b6feda5a6adc248a8f5b038  gcc/ada/xref_lib.adb
! 3b102e66a6ae94fe2e428f6886ccd4d6  gcc/ada/xref_lib.ads
! 854745fe07d93fb18809e685e19ac88b  gcc/ada/xsinfo.adb
! fc7be41f48bbad07a07baf3e27fc889b  gcc/ada/xsnamest.adb
! 0ec2bbcc7104400d00fbf91282c45f9e  gcc/ada/xtreeprs.adb
! 0493a7ed666c4b102be665a8e328be35  gcc/ada/xutil.adb
! 2c8b2f1975e4e064d3803db6dbd516cb  gcc/ada/xutil.ads
! 395d0f1ab41fadeec5b2da345caaa7d1  gcc/addresses.h
! 6bcdfa81bbd03eaee9ef1a87563137ca  gcc/alias.c
! 55bf22e5d4bffd386a14aa43b2a2ec63  gcc/alias.h
! 36e6104a99f85da5d16b7e261a9a9860  gcc/alloc-pool.c
! bbf80e664bc2c1a3d3bebb5f508373d6  gcc/alloc-pool.h
! 1b48d603378cf55d627de024a1ac6748  gcc/asan.c
! d48810be996f39fd38606d5a591b6694  gcc/asan.h
! 3d5b256ddac71f2191b9b666524d70cb  gcc/attribs.c
! 0397e511a7dd5384fedb769d059e8980  gcc/attribs.h
! 68d7693d2f8dbeafefb3fdda921adf6b  gcc/auto-inc-dec.c
! 2dd746cb756237566b839dd81e6a7800  gcc/auto-profile.c
! f3282c1b7f1b32e3de33eda069384b12  gcc/auto-profile.h
! 3d8045c90d665003a18932230be6c044  gcc/backend.h
! 0a421582477510a20899554a971fd3b8  gcc/basic-block.h
! 8d9e80090a25e83ba2ac6311f5df0dea  gcc/bb-reorder.c
! e011891e7101cbf08438851847b50380  gcc/bb-reorder.h
! 4f13f945a546e96933494f65cd937763  gcc/bitmap.c
! 87a6abe81f5dcb21d241c1b9166c420d  gcc/bitmap.h
! a3e1bd92ba9bdedb8c7153c6e72090c4  gcc/brig-builtins.def
! 28f1df523efa10bddabc844bbfb2c076  gcc/brig/ChangeLog
! 2351e5f1fffd7af8d29270a899e85c47  gcc/brig/Make-lang.in
! ee6dd4618f856ac83d7067ce9254d85e  gcc/brig/brig-builtins.h
! 729008055685d12fc1ca05008df01aef  gcc/brig/brig-c.h
! 4ad49c86248cb9f1f76e31b09d8d47e1  gcc/brig/brig-lang.c
! 9a410bebb66d3580943eecee633a2e3b  gcc/brig/brigfrontend/brig-arg-block-handler.cc
! c82a975e903acd60ac7ca696222ac211  gcc/brig/brigfrontend/brig-atomic-inst-handler.cc
! 2f31b3be9941df041829acabc084c198  gcc/brig/brigfrontend/brig-basic-inst-handler.cc
! 298c5a7722f1a0cc6f036c170d340142  gcc/brig/brigfrontend/brig-branch-inst-handler.cc
! b13fd74fd207d4b8c0f857c77665c92a  gcc/brig/brigfrontend/brig-cmp-inst-handler.cc
! 38f25bce2eb480e25979793bfdeb9fee  gcc/brig/brigfrontend/brig-code-entry-handler.cc
! 7431cb75b7716540ab81d0371fb3dc8f  gcc/brig/brigfrontend/brig-code-entry-handler.h
! c5cba8f94101d122de1378ba853aa35d  gcc/brig/brigfrontend/brig-comment-handler.cc
! 488734f13f9b19d087ad93608128d982  gcc/brig/brigfrontend/brig-control-handler.cc
! 1acbce0a1e718770bcf19a1363a748f7  gcc/brig/brigfrontend/brig-copy-move-inst-handler.cc
! 5359ec11f2d7594e8faa41c430bb069f  gcc/brig/brigfrontend/brig-cvt-inst-handler.cc
! fa6598a7d7e476d7a5eac2648ecf1995  gcc/brig/brigfrontend/brig-fbarrier-handler.cc
! 73e4d70d058b82597011a5ad43e3e0dc  gcc/brig/brigfrontend/brig-function-handler.cc
! 6f732a5f53889b49e60bb8f939ee6d7b  gcc/brig/brigfrontend/brig-function.cc
! b1fe256f559f2e614852b3d0a348d88e  gcc/brig/brigfrontend/brig-function.h
! c31bd037012748a5db35a029b677d7a2  gcc/brig/brigfrontend/brig-inst-mod-handler.cc
! 60acd611183a2926b22dd248abbe3034  gcc/brig/brigfrontend/brig-label-handler.cc
! ea29fe3ab3e220cba643e222c62eafa2  gcc/brig/brigfrontend/brig-lane-inst-handler.cc
! dbeb377724ae7d334513638d2223caa3  gcc/brig/brigfrontend/brig-machine.c
! 7bf4f9ae3d6009cb24361493499c580a  gcc/brig/brigfrontend/brig-machine.h
! 4e3a0788ff5df28a6926c6191fa067ce  gcc/brig/brigfrontend/brig-mem-inst-handler.cc
! e1fb6b16608cffdfa938495df8f121af  gcc/brig/brigfrontend/brig-module-handler.cc
! e1326f4e665ba161a8f5989187d60af3  gcc/brig/brigfrontend/brig-queue-inst-handler.cc
! 75728cb3b8ce3333188bab3fc72d7b2a  gcc/brig/brigfrontend/brig-seg-inst-handler.cc
! 753027013ef66f31f53ea90c34fc7b69  gcc/brig/brigfrontend/brig-signal-inst-handler.cc
! c932e557915cfae64ec3fb8a8841183d  gcc/brig/brigfrontend/brig-to-generic.cc
! 5347e19d2a1d30d45404fd655254a209  gcc/brig/brigfrontend/brig-to-generic.h
! f8660ec1522fc0a8482c3813109fc89f  gcc/brig/brigfrontend/brig-util.cc
! 793faecb8482bbe2505959f45971b861  gcc/brig/brigfrontend/brig-util.h
! d3d912757f3bf764185dd59ee025accc  gcc/brig/brigfrontend/brig-variable-handler.cc
! 3638b34e67bed3cc6468569375a7e86f  gcc/brig/brigfrontend/phsa.h
! bee513b2167c326e657a757cafd956dc  gcc/brig/brigspec.c
! 96ad6f845f38d69507b72c84ebeadb5c  gcc/brig/config-lang.in
! 929b2f43a1c6b48ae0924c8f5df4f25c  gcc/brig/lang-specs.h
! 8fe7fa114974617dd0e2670467bf9c99  gcc/brig/lang.opt
! f47f3a5be286bb97d5b3ded0c77a7fc8  gcc/bt-load.c
! dbcb21d679fd944b98405b15f3e90057  gcc/builtin-attrs.def
! 57157f190b35a47dd4b683d398e513d6  gcc/builtin-types.def
! 31925965bb248a40786a82a829ca1722  gcc/builtins.c
! a97a907640298b1073edbcf6a02fe334  gcc/builtins.def
! afb31ef0129abddff28f552ef1c65626  gcc/builtins.h
! cb611bd6525f7285fd9bcb3e5d361719  gcc/c-family/ChangeLog
  ea3fa1f4d7390a105fa3caab4f79aaf7  gcc/c-family/ChangeLog.gimple-classes
! 181b99ff0153386a9f37e991e4b564f0  gcc/c-family/array-notation-common.c
! 3750c2b07473ca2dc6e49f0032885798  gcc/c-family/c-ada-spec.c
! c6bcfcd3eaa0f226f1b049b0baf0927d  gcc/c-family/c-ada-spec.h
! 296ec2c0af128cc96ed7b508af99f62a  gcc/c-family/c-attribs.c
! 61fca19f206b15614354104326f63123  gcc/c-family/c-cilkplus.c
! e3a0ce72fabbe8e421211c93d9c26840  gcc/c-family/c-common.c
! b68399180567cc41ebcb0458faf3cd81  gcc/c-family/c-common.def
! 296adc79008883f988ea2e468a9c61c1  gcc/c-family/c-common.h
! 8531c78dad8d5dfb40f260a38277b622  gcc/c-family/c-cppbuiltin.c
! 8cf9afd0b571ce2d5e202f034d27edfc  gcc/c-family/c-dump.c
! 51c6e9bee3aec18b8579f570f9678796  gcc/c-family/c-format.c
! 2bf149a0136a2ee50e3f488422f73dc8  gcc/c-family/c-format.h
! 8a49a60b7a83ac349a317fe8703966e4  gcc/c-family/c-gimplify.c
! bdad430142d2d171b7e0ff950149b1f4  gcc/c-family/c-indentation.c
! b62245f957f1827f7b297664d5990121  gcc/c-family/c-indentation.h
! 0f4bfa70fe388beb66af314607b99b51  gcc/c-family/c-lex.c
! 30c2e467779eff504f1b83a1652e9234  gcc/c-family/c-objc.h
! 433130a5ff7873dc4e18292ab24788fd  gcc/c-family/c-omp.c
! 888bce9474894d8263924b464cd6ae49  gcc/c-family/c-opts.c
! 2427ba79f7f92bcf1a9869e8f7feda00  gcc/c-family/c-pch.c
! 1c58be1245dc21a8b0fdb511ee8536cd  gcc/c-family/c-ppoutput.c
! c2bed27b68f5b5898e5a954bf2e8940e  gcc/c-family/c-pragma.c
! 6e17797774de4c42415f1892665f2cf5  gcc/c-family/c-pragma.h
! 449e75ed38edeac1b1b2250c23b06d84  gcc/c-family/c-pretty-print.c
! b2c1c10d1362a795090b542d5f7c622c  gcc/c-family/c-pretty-print.h
! 68a74ead1e8cf490b87c1b0c7ed12631  gcc/c-family/c-semantics.c
! 339c2ac6b60fea06efed76d57f43b2f2  gcc/c-family/c-target-def.h
! 9cfbdb7a2122d8cc0e4c93a2246b9604  gcc/c-family/c-target.def
! 18c4f50d3f704bee9c2cfb04c3f4fb1b  gcc/c-family/c-target.h
! fe4c5f6b4662d6fc36d84a1f19c8fa16  gcc/c-family/c-ubsan.c
! 1eceeca7e21810146d46e7e6ba115d17  gcc/c-family/c-ubsan.h
! 5b76528a4892a3fbff2f24a5be66d3ba  gcc/c-family/c-warn.c
! 4c592db51545b15d74685a9d659ba0da  gcc/c-family/c.opt
! 3e076faabcb0bb95377ef8f357eced38  gcc/c-family/cilk.c
! 8916e2707114e23b2dccbbc6bc001a97  gcc/c-family/cppspec.c
! 82e6854ad3f227c85d7f08a6196d6f70  gcc/c-family/stub-objc.c
! 311742733b737423255d6824e84ee55e  gcc/c/ChangeLog
! 0caf43c9d9c18279169e7f43ad0c19b6  gcc/c/Make-lang.in
! 5e6eb0dd85447b36231477f9e3e4b5c0  gcc/c/c-array-notation.c
! a8003032dc7218cccd4aff44dede772d  gcc/c/c-aux-info.c
! e2a3330e4218f15575ab43d04deaeb26  gcc/c/c-convert.c
! 85406841cb0c62a68382f1fed1e4eee8  gcc/c/c-decl.c
! c714615507e2f0981003d338ff5abc8a  gcc/c/c-errors.c
! 838b541c23f280c0d43fad87bb59e9a9  gcc/c/c-fold.c
! f3cb7d70adefcf45917f39f56bad0180  gcc/c/c-lang.c
! fa65b6fcb253804c399bd8d1d14b079f  gcc/c/c-lang.h
! 2c444e8873646b1237057e728c0cf46b  gcc/c/c-objc-common.c
! 658c3e81020fbec498195f368198c7a7  gcc/c/c-objc-common.h
! 91488846efba891fa43f8ab34a7bf2a0  gcc/c/c-parser.c
! 2b62fc38332a49a6e5e8c09fb1afcef8  gcc/c/c-parser.h
! 67191d1deea476b99b33dab25437bb17  gcc/c/c-tree.h
! ff8e26b9ae235f43dd3d1b42f3683ad7  gcc/c/c-typeck.c
! 4d84ee6bcba7c90929c18ce81304349c  gcc/c/config-lang.in
! e9ca602eaa8766cf8ac30f86c84ead30  gcc/c/gccspec.c
! acb5ca82086acf009acea002766ece25  gcc/c/gimple-parser.c
! 8b7596ca25fb10eb5fb2576c3693786f  gcc/c/gimple-parser.h
! 275667cbf114b5ac38093284c7c10051  gcc/caller-save.c
! cd6d8698b4023b95e7797474dc9a3396  gcc/calls.c
! 35a3f0d9b1c58a5d06adb4e8d1d9439e  gcc/calls.h
! 356f998e062811877195df2f08ba60ad  gcc/ccmp.c
! 3b6db7d568f86900dcff15eabd20f2fb  gcc/ccmp.h
! 96e42858bed7bb01772aa534c37f9fc8  gcc/cfg-flags.def
! 934587a915408293c2e714e6b4dde92e  gcc/cfg.c
! f2a3f561ff6a49bb0ecc811ec6512d3b  gcc/cfg.h
! 89fba2fbf793e38b120e04b9a57eb22c  gcc/cfganal.c
! cac33857c3d0eefa09bf0986ab7427ca  gcc/cfganal.h
! 5618a7a96d31e6d07af20a0a0fd0b453  gcc/cfgbuild.c
! a73f90584530bcb1b885fd43355d274e  gcc/cfgbuild.h
! 6fa961e30423e314c23201638fea498a  gcc/cfgcleanup.c
! a0c5d611e8d6e95f00ae5b4b63785d88  gcc/cfgcleanup.h
! 7c13c532e4077280d53e06b1dabb83f1  gcc/cfgexpand.c
! 2896de1d1de317927f1fd7ef47720163  gcc/cfgexpand.h
! 98a9a74183a281c3e70f469edcdb04fc  gcc/cfghooks.c
! 6e4c878dc845eb2cc277b094af0aec76  gcc/cfghooks.h
! 4e9b85f96d06a7583bf6983e8770f010  gcc/cfgloop.c
! 0dd354c560fe64209c350ea54b4e0041  gcc/cfgloop.h
! 219f05d9984823c68ab76e19c309b156  gcc/cfgloopanal.c
! 55922f3bde8bb3dcbea5f03a5c9344d6  gcc/cfgloopmanip.c
! 0ba518027b3b1192d34ce4e3df414309  gcc/cfgloopmanip.h
! a1354db5bf8c1fb78a9871c75eee5580  gcc/cfgrtl.c
! 3ec8969e6ab20b3d4ce26552909629a0  gcc/cfgrtl.h
! 8a1684de97893f6d8c81a3abb1b05a4e  gcc/cgraph.c
! 2c32272d18a449f82be44c54e800ee85  gcc/cgraph.h
! 06d4fcc1c803e967bc7bfdca53122d8c  gcc/cgraphbuild.c
! b43331b3393b3512486372b11d9dc355  gcc/cgraphclones.c
! fe5290115faaf21f4964dfef0c8cc1e2  gcc/cgraphunit.c
! c956d15a21eb642d9cedd70c494af3ab  gcc/chkp-builtins.def
! 97b819ab629c4d063ab6b0814f0d03a1  gcc/cif-code.def
! c530a128ebcadb0602eb6ae3637c2391  gcc/cilk-builtins.def
! 64655edf5e7fc2db89f0f78f86b7321e  gcc/cilk-common.c
! f9e550cfcb683744b7ec2e18a4f3f25b  gcc/cilk.h
! 40bc51dd53693f0c55bbf69b27ba4d59  gcc/cilkplus.def
! 6901b93e225805a7f4304a14a3499bd2  gcc/collect-utils.c
! 5a37417ea42ec3511c35b46f3eff360b  gcc/collect-utils.h
! f2ef0b7a04a3fb57b185556cf3c47432  gcc/collect2-aix.c
! 03f3d336064cce1a4892007b2a6dea80  gcc/collect2-aix.h
! 44b66023fcc1502d4ed7d5db4fbf4de3  gcc/collect2.c
! 68f9782519956a31e5010bdeb531abac  gcc/collect2.h
! 5c20f36eb198b4f82e0a6a10a6232468  gcc/combine-stack-adj.c
! 579668ea48c71835ac4d1fb241e7fd01  gcc/combine.c
! 68373a9634c81023ca3245072f1cc05d  gcc/common.md
! 57b6709b50ab53883091e6546b464a2f  gcc/common.opt
! eeb9d016bece096753f8a59a733ee114  gcc/common/common-target-def.h
! cc5ef21ccfb764c02fca03436f5f1f60  gcc/common/common-target.def
! fc38112c7b90908953567c7359fb8191  gcc/common/common-target.h
! cc180def59bee4729df6ad650e5f990f  gcc/common/common-targhooks.c
! 594f23b6dd2d49f5e42f56bed2eff496  gcc/common/common-targhooks.h
! 30ea1a6d243ae99e941087296cb8de17  gcc/common/config/aarch64/aarch64-common.c
! 0a0393b521a5c74b8fd00ea73af093f5  gcc/common/config/alpha/alpha-common.c
! 23a6bbd473df9d966b31e07e7f77ea43  gcc/common/config/arc/arc-common.c
! e2cf5be91ed0e0d8395bd98e9f3da13a  gcc/common/config/arm/arm-common.c
! dc52c17b4e2ac0917d80e3055b89b408  gcc/common/config/avr/avr-common.c
! a044d01f17e614c0c6df8804d444783e  gcc/common/config/bfin/bfin-common.c
! 8d56977673f087f86db9aeba9ad01e04  gcc/common/config/c6x/c6x-common.c
! 807ff2616ebff450c0e5582d49731dfa  gcc/common/config/cr16/cr16-common.c
! daa5f43d6a9029dcf3ed84ca518957d0  gcc/common/config/cris/cris-common.c
! cc46d4dec689e29e45ae8d04e85733a9  gcc/common/config/default-common.c
! c86176abbb8cab967adbad19fc7e2ac8  gcc/common/config/epiphany/epiphany-common.c
! cc121dae0fc93ead16ba5ffc0c31829b  gcc/common/config/fr30/fr30-common.c
! a6d2b4315f75285ba5a97e93d952f1af  gcc/common/config/frv/frv-common.c
! 1ec47aa63ee9ab221889fd9cf3fb7dc5  gcc/common/config/h8300/h8300-common.c
! 4b04134206642279ab03e5a1d2ab6c37  gcc/common/config/i386/i386-common.c
! 93f0fcd570e0797dc0dbf5e09104d315  gcc/common/config/ia64/ia64-common.c
! b92a1f3cda8b2fb2262443bdd234df19  gcc/common/config/iq2000/iq2000-common.c
! 568f023c3e3f7953ad390cf173b31259  gcc/common/config/lm32/lm32-common.c
! e8f393e9924153202ff1bd459196a374  gcc/common/config/m32r/m32r-common.c
! 8d7b4951fd70ab0f1ceaad93514aecd5  gcc/common/config/m68k/m68k-common.c
! 8b339df2bdbf34637a4e9769eababd75  gcc/common/config/mcore/mcore-common.c
! 5743827c2202430916df7478fabfbb6c  gcc/common/config/microblaze/microblaze-common.c
! 62bb4c61605e8f3ad0bb752f9b5e46cf  gcc/common/config/mips/mips-common.c
! d08cfc6bc2874295ade87180155f534a  gcc/common/config/mmix/mmix-common.c
! 9664a73e40fe8d82dcb5339d4d62c2ba  gcc/common/config/mn10300/mn10300-common.c
! 6895176cccd5c9686ce927696135e0b4  gcc/common/config/msp430/msp430-common.c
! 1f49876932e44bd16a072eaa3ac5cd43  gcc/common/config/nds32/nds32-common.c
! c1a5b6a467318c970ef3f82ac33df8e9  gcc/common/config/nios2/nios2-common.c
! 62e374a9c82c71a5b9e8101ab19aabb8  gcc/common/config/nvptx/nvptx-common.c
! e9fc038f9eb2e135d65f16cd3c495c68  gcc/common/config/pa/pa-common.c
! fd613088bdd1e1661ee71c485ec082e0  gcc/common/config/pdp11/pdp11-common.c
! 18869c29af13db53b40ffdcaec35dd7a  gcc/common/config/riscv/riscv-common.c
! 30454f8a8a1e1d5e32e75981e7d4afbc  gcc/common/config/rs6000/rs6000-common.c
! 590b1b22f7256dfe42ca61e3aa18d5e3  gcc/common/config/rx/rx-common.c
! 47b321ee2d75d6099d7853b66305b695  gcc/common/config/s390/s390-common.c
! fb4806a72150187db949efcadcae9d56  gcc/common/config/sh/sh-common.c
! dc63047e3a99fdb4dd59292a55d498f8  gcc/common/config/sparc/sparc-common.c
! 9a38b176770066bc79b7f4f58b62e98d  gcc/common/config/spu/spu-common.c
! 1ce9f811caea72422d357836d21d9a01  gcc/common/config/tilegx/tilegx-common.c
! 7a631c8a38213aa5346a4e3896011a60  gcc/common/config/tilepro/tilepro-common.c
! c0b84a1aada31c20b7ae188e8d812b3b  gcc/common/config/v850/v850-common.c
! 81151fb340de32d872795d2c87881609  gcc/common/config/vax/vax-common.c
! afe5939e4f1b16cd0cb5ba7459f2dc3e  gcc/common/config/visium/visium-common.c
! b0c22a32616d64c099ef851ddf261b23  gcc/common/config/xstormy16/xstormy16-common.c
! 709ebe3e5c97fd1d60eb20ff7ad80157  gcc/common/config/xtensa/xtensa-common.c
! 0d28f0ed0102c01397140daaf2614e83  gcc/compare-elim.c
! e7193667066e1926cc342fa433d763b4  gcc/conditions.h
! 452e1826a3cf7c2cfa4bfa44b511cb77  gcc/config.build
! a01160a55c00234a9d6f07fcaaccfdfd  gcc/config.gcc
! dc4da52535cb76a4fa50c43fdea4ad61  gcc/config.host
! f2bce35bd9333a67114b7fbcb937af31  gcc/config.in
  8e697813dc96ca90f5d0f4c196efe2cc  gcc/config/README
! 3d4a14b8dc018b17cce2ea4585f41b55  gcc/config/aarch64/aarch64-arches.def
! c8327f0a78ae111247d01aa8b7076386  gcc/config/aarch64/aarch64-builtins.c
! 6557e3cc247d5d577c91bfdcdc753c76  gcc/config/aarch64/aarch64-c.c
! 74bec66163a554a0553a367cc947ee3d  gcc/config/aarch64/aarch64-cores.def
! 5134dfc28e546cd69e75fd9e68f6ccac  gcc/config/aarch64/aarch64-cost-tables.h
! c71b8ebda07ac7ffc59588249415e60a  gcc/config/aarch64/aarch64-elf-raw.h
! 882b146d4d55238558e9ba42f1b59d50  gcc/config/aarch64/aarch64-elf.h
! c107fe312939ec6f04e3e951ef5d6d43  gcc/config/aarch64/aarch64-freebsd.h
! 48a5386a6fcf7a856704784a2d554035  gcc/config/aarch64/aarch64-fusion-pairs.def
! 17d0b19f6bb2f0d15177bb44b2a865d9  gcc/config/aarch64/aarch64-ldpstp.md
! e036708496529c26c310d0620cd17a4a  gcc/config/aarch64/aarch64-linux.h
! d1df10b7f192f422bd9fc9c7091507c5  gcc/config/aarch64/aarch64-modes.def
! 8a0a8ee208e647d29bdb48a70755cfec  gcc/config/aarch64/aarch64-option-extensions.def
! 4b9a15e37f0afbba8a04fb7b5eeee87e  gcc/config/aarch64/aarch64-opts.h
! 744e6124d0d2db999d5beb8745468f46  gcc/config/aarch64/aarch64-passes.def
! 6e3a08394352982fce6484b70850d7a1  gcc/config/aarch64/aarch64-protos.h
! d1b68cf22ba52c10ff35d140df4e1f7b  gcc/config/aarch64/aarch64-simd-builtin-types.def
! ac44bc673be92d1af8fe47341f7ad037  gcc/config/aarch64/aarch64-simd-builtins.def
! 822161a87a372e97985f19687555efb2  gcc/config/aarch64/aarch64-simd.md
! fbc9d22ea16726e8c5404ba63b95fbe6  gcc/config/aarch64/aarch64-tune.md
! 415934c7a49166288d8a84565c8cb662  gcc/config/aarch64/aarch64-tuning-flags.def
! 20f5cdb6ced2790ddc6e5b28aaf412ff  gcc/config/aarch64/aarch64.c
! d5a307c9e239b9b43d95a400462d115d  gcc/config/aarch64/aarch64.h
! dd5e78a9961bf9550b32b849393e9f16  gcc/config/aarch64/aarch64.md
! 46f1fa1446f50465ca061865c266d649  gcc/config/aarch64/aarch64.opt
! d72956fc0e5700efa6411099266daa61  gcc/config/aarch64/arm_acle.h
! e3714cfb03cb0cc67153b18a56b70fb9  gcc/config/aarch64/arm_fp16.h
! 2f7c5b5a09e989fb2527af71f2050403  gcc/config/aarch64/arm_neon.h
! 0b3e6e8363cdf8a7df439a628ba51b76  gcc/config/aarch64/atomics.md
! 632d0d3a05731c4cf2402d75c66874c6  gcc/config/aarch64/biarchilp32.h
! 99fe31aa198c89dcf315521d31181507  gcc/config/aarch64/biarchlp64.h
! 8227c4ff680a9a573b61021ef1c13675  gcc/config/aarch64/constraints.md
! 9d522374c3a50d409fa8ee710d7eb013  gcc/config/aarch64/cortex-a57-fma-steering.c
! 39fe2e7252888d355e17b84cb84058de  gcc/config/aarch64/driver-aarch64.c
! 9b66fdb3ecb5aa5807621bc85a313c31  gcc/config/aarch64/geniterators.sh
! d039909a32343a370a779c05475fde10  gcc/config/aarch64/gentune.sh
! 677e2b2d13f885d12d53a52eda1e830b  gcc/config/aarch64/iterators.md
! 8e624d2cc2d41dc33908bb4638c3a91f  gcc/config/aarch64/predicates.md
! 2fe3615af21214e60e300791ade96a8a  gcc/config/aarch64/rtems.h
! 4e14eab4bea8de0a9a549bafadf4d0dd  gcc/config/aarch64/t-aarch64
! 0009b53648df6aa7d54ca692f1ee21e7  gcc/config/aarch64/t-aarch64-freebsd
! 764bc347681f37814405f89c5ca61356  gcc/config/aarch64/t-aarch64-linux
! 0dd4889a21d42b0285024234b26136b9  gcc/config/aarch64/thunderx.md
! e031a28eab206d4b53d4b26c206c7814  gcc/config/aarch64/thunderx2t99.md
  8b41b511cae4a5eda35cf19755875d5a  gcc/config/aarch64/x-aarch64
! 142d74b958b77819754a86f22ec262c9  gcc/config/alpha/alpha-modes.def
! 91ae6e87d45c468297b61a2fd5c22f17  gcc/config/alpha/alpha-passes.def
! f33be94fa0f75c3f386a7cbe19e29c53  gcc/config/alpha/alpha-protos.h
! 64a94d89945b0d2a64625dbef3597b6f  gcc/config/alpha/alpha.c
! 4a740bb1133406c1582bbf646f54a28a  gcc/config/alpha/alpha.h
! c14529a0230b1d7e1d2419380f8529b5  gcc/config/alpha/alpha.md
! 36e48c7783afb4c7537a33dad0d9734d  gcc/config/alpha/alpha.opt
! 49d08204e0dbf16116a281b38f5e94be  gcc/config/alpha/constraints.md
! f9c485887fefec5e01222d26a952b37c  gcc/config/alpha/driver-alpha.c
! 21c70f375a72c03e98a32dcedc261297  gcc/config/alpha/elf.h
! 9774da57b0012e355591fbd2455fb3b0  gcc/config/alpha/elf.opt
! 321e50aadcc84e5541ce93e252bec55e  gcc/config/alpha/ev4.md
! 22c8ae74d50100b13bce98a66e49ec4c  gcc/config/alpha/ev5.md
! 9c35939b2dae056eee181a4875a592bb  gcc/config/alpha/ev6.md
! 07b69aa3a16be4e78dd7b03f01d7dd76  gcc/config/alpha/freebsd.h
! 79f013aa878192b72287eadb3b4ade8c  gcc/config/alpha/linux-elf.h
! 6f786e9baf1665b86858b28a8853a9bf  gcc/config/alpha/linux.h
! a6a98d2d8c3c5ee54e4713803aa9a1b6  gcc/config/alpha/netbsd.h
! 4c423619e0fb850e98c0261005dc394e  gcc/config/alpha/openbsd.h
! 0777330a1145a5be1a663649d71e2d94  gcc/config/alpha/predicates.md
! a6e5cdf010cd354b779dc12db65aa268  gcc/config/alpha/sync.md
! f970f66450dc3aa7e0fb2d4522f1a31f  gcc/config/alpha/t-alpha
  6e8dd648b9668f18b1dfd9f1203c9885  gcc/config/alpha/t-linux
! 8f7e8148ee17d780676ad6c66e7ee446  gcc/config/alpha/t-vms
! e85da4271aa1a289e3d0f177d31da20f  gcc/config/alpha/vms.h
  1fd9a45b4f2b1e546182ce0fe35ac6d1  gcc/config/alpha/x-alpha
! 3d89968f7624f06323c2d6b0718e4c59  gcc/config/arc/arc-arch.h
! 4eb35c4a53abbe4c141d38a7be73bdfd  gcc/config/arc/arc-arches.def
! cd41fc786fed7a051ebf809ec6783e5e  gcc/config/arc/arc-c.c
! 7a183ab6117ff5241a458e756c0ef849  gcc/config/arc/arc-c.def
! c8fe7fd270cf977626ca9df61a631f22  gcc/config/arc/arc-cpus.def
! 64c7f199220dd1cea7a7a8fe495bd806  gcc/config/arc/arc-modes.def
! 7f65158667851fca71619e26d8a08cd7  gcc/config/arc/arc-options.def
! 567fa2a33b6a3409d3af47a8e7ad31da  gcc/config/arc/arc-opts.h
! 2dffc976360b776203855ade7b175e48  gcc/config/arc/arc-protos.h
! 29add9e22cc48a606e839ec70112eb11  gcc/config/arc/arc-simd.h
! 254f541831f12ff31c8e412ca12ee8e3  gcc/config/arc/arc-tables.opt
! 963ece3cddcd97c049bbaf910e962048  gcc/config/arc/arc.c
! cbf470364ce10f89ec702c360e4017ff  gcc/config/arc/arc.h
! 9385b1b0adbb6713653215e32dcadd9b  gcc/config/arc/arc.md
! 6dfec1055a96019c17a45eca11334708  gcc/config/arc/arc.opt
! 980ec9374d90a6355bd700cd11aa974d  gcc/config/arc/arc600.md
! a18122931937447e83f11f97b7ac6257  gcc/config/arc/arc700.md
! 784c49852cc356c97f46f12c04942e3d  gcc/config/arc/arcEM.md
! 03fe30649ecebc7095c5f2b4527279e2  gcc/config/arc/arcHS.md
! 761ae672b732ce2085e1ddf828e24db7  gcc/config/arc/atomic.md
! 6a2342acc91da8db5fe91a0979cfb683  gcc/config/arc/big.h
! dcccf45e8f17b5b81ee96f64422ccd0d  gcc/config/arc/builtins.def
! 97a200b1f47b0f34715cada2db6a8ccc  gcc/config/arc/constraints.md
! a9e54701483d5bfdf2fed1427a0275bd  gcc/config/arc/driver-arc.c
! 339f49493eebd82085f9b24095183937  gcc/config/arc/elf.h
  b42e597b37ec6ec700bb14149bda3c87  gcc/config/arc/fpu.md
! aee387033dcca9944e08497e61b2995d  gcc/config/arc/fpx.md
! 4b8ad3a21a56121383537f2896d64367  gcc/config/arc/genmultilib.awk
! 354407e460794365924bd009aedcef30  gcc/config/arc/genoptions.awk
! e606a6a5e8ecdab8ba27939772857092  gcc/config/arc/linux.h
! e1571e08f5157ce5aac6a4029a970392  gcc/config/arc/predicates.md
! 4cc5a97a2a2a3f3ab702c776d92c8de0  gcc/config/arc/simdext.md
! e3253d76cfdc8d58a6517d8bde601fb2  gcc/config/arc/t-arc
! 2e8cf104402ea6a9d2189fdfe56efb67  gcc/config/arc/t-multilib
! c07bbacb2c04ddab9a3379537d7ba9f1  gcc/config/arm/README-interworking
! f24c587afe334f17a24ec0f7bb5523ec  gcc/config/arm/aarch-common-protos.h
! 38ac4bb201d5ded35e32ff6fe390f6e7  gcc/config/arm/aarch-common.c
! a23b9a9af8d78fd18ba8361ed172410d  gcc/config/arm/aarch-cost-tables.h
! 44d600357e20dd68663d6d734aac45d5  gcc/config/arm/aout.h
! 6446f27b0ba662e0d71ea5e332e96314  gcc/config/arm/arm-builtins.c
! 62a864400862f1a3b4d04b28601fcb71  gcc/config/arm/arm-c.c
! 8a88c008994501d4b65dc434247d9a84  gcc/config/arm/arm-cpu-cdata.h
! 072bebf7f60b972f483f8f12c94b466a  gcc/config/arm/arm-cpu-data.h
! e75f564c941c7e24c849ece9d6f415ae  gcc/config/arm/arm-cpu.h
! 6be8211ad2f1dee142d70a3979297722  gcc/config/arm/arm-cpus.in
! 89a459c13fe8c6c6b9688c4e82133f36  gcc/config/arm/arm-fixed.md
! 0bc6697bc8724ccd327169b1b322ac34  gcc/config/arm/arm-flags.h
! 2155eb2fb4903a54ac89b742b3546173  gcc/config/arm/arm-generic.md
! 6c3f1b8ae13438eb291792abbadb4f3b  gcc/config/arm/arm-isa.h
! 2c43c87c671b4781d34cdd1e14b22b76  gcc/config/arm/arm-ldmstm.ml
! d0f4a8e84b903577fdc4b4c653595682  gcc/config/arm/arm-modes.def
! 111a93294609f3a8279aac51c7c1e808  gcc/config/arm/arm-opts.h
! 438c12878382e1a750930e68bdfe080a  gcc/config/arm/arm-protos.h
! 9fc296c38dbb9315478bd6a567c72cf7  gcc/config/arm/arm-simd-builtin-types.def
! d7ce5229b2c13c9f817d2b467a8fa208  gcc/config/arm/arm-tables.opt
! 632479ba42ec730b66ece345a4b6fa69  gcc/config/arm/arm-tune.md
! 147e142eec2e26f4acf7b570c8cb2689  gcc/config/arm/arm.c
! be5ace49118723556bd504c20581de47  gcc/config/arm/arm.h
! c10f43d9000ddb048c40f33afba47e70  gcc/config/arm/arm.md
! 402607c37d1e8d5a3d9559e6079f902d  gcc/config/arm/arm.opt
! 24f38580cc601b8d52e906038d175b22  gcc/config/arm/arm1020e.md
! ef11d6991cb00c5691ac3dd69e916725  gcc/config/arm/arm1026ejs.md
! dae688835cef0f0c69b826157b873ca5  gcc/config/arm/arm1136jfs.md
! 3b6e311dffc00930cdb6e8f7b4542016  gcc/config/arm/arm926ejs.md
! a793f51c702900ec1d9c60ff65f2d2ff  gcc/config/arm/arm_acle.h
! c0de0dc1dec5fa20908f8790426b9cdd  gcc/config/arm/arm_acle_builtins.def
! cf57cafd934f4ba3352102000af2d3c4  gcc/config/arm/arm_cmse.h
! b824c88f58431b50ebd0dce7cbead65f  gcc/config/arm/arm_fp16.h
! 8d11e4375e5d83f0fb77d1798d16b46a  gcc/config/arm/arm_neon.h
! 4afdde754ee1a54e42e255422b6372ab  gcc/config/arm/arm_neon_builtins.def
! 5b29dea4bb7c4a0916cc671e8c79e749  gcc/config/arm/arm_vfp_builtins.def
! a67036a0ecfa194787e9c9e9907f903e  gcc/config/arm/bpabi.h
! b5ac0f5a764fb8f45065cc86be7cdcec  gcc/config/arm/constraints.md
! 51aeda377b0022e7a615de7c3ab9c356  gcc/config/arm/cortex-a15-neon.md
! 91c92202094678c0824439a69d7d89ad  gcc/config/arm/cortex-a15.md
! 244bcf796f744cb938e7b277c620a0a6  gcc/config/arm/cortex-a17-neon.md
! 0d0976864eb9f4d55ea52e0f852afd22  gcc/config/arm/cortex-a17.md
! c1246fd6bc28e2eb53bb7b29f417459a  gcc/config/arm/cortex-a5.md
! ca678d236aa3098edfb553dc2b3f646c  gcc/config/arm/cortex-a53.md
! b6368d3f580dc14fdbbdbf690e533e7d  gcc/config/arm/cortex-a57.md
! ddbd120d1b6c279ea47523f592e1ba2d  gcc/config/arm/cortex-a7.md
! 2f8a1ce985c77fc401bd09c0ed37e9b7  gcc/config/arm/cortex-a8-neon.md
! a29d981b7d8d89ad5143c643591df78b  gcc/config/arm/cortex-a8.md
! 76cfd05af01de57f833f1f3c7a7ac13f  gcc/config/arm/cortex-a9-neon.md
! 0230ddfcff8a62ad83ef86466a0c4f99  gcc/config/arm/cortex-a9.md
! 2057e23615c9047e2f33811e2b1037a8  gcc/config/arm/cortex-m4-fpu.md
! 09082ee8f3b90fe86ed28f0cc18f378e  gcc/config/arm/cortex-m4.md
! 08017ad29138e3736c7e0944b5925ac3  gcc/config/arm/cortex-m7.md
! 74d52bec61ed53af6a124eca5b7b2c54  gcc/config/arm/cortex-r4.md
! 9550c40c18ed06474bab59e4e5143a36  gcc/config/arm/cortex-r4f.md
! eb66fc5f323f696662c1a04cfe159f77  gcc/config/arm/crypto.def
! b1ac53d6e9e1303dc83564ee995bbef0  gcc/config/arm/crypto.md
! bdfffc8cfa24d26dca4e03893b114edb  gcc/config/arm/driver-arm.c
! dee9ee9c8fd963ad39357daac7df6dc1  gcc/config/arm/elf.h
! a4cf062308337e9cca4038fb97a90164  gcc/config/arm/exynos-m1.md
! 7d9fb71142463ccfb310663c627aaf43  gcc/config/arm/fa526.md
! b944217720c98a660cdb285b647f7531  gcc/config/arm/fa606te.md
! 5916b5aa429697e15c24dea6e088e4c3  gcc/config/arm/fa626te.md
! a0cec19bad640564226c7d98d5233a87  gcc/config/arm/fa726te.md
! ad3c8b5f4ad23814f012d3bab7fdaba2  gcc/config/arm/fmp626.md
! 8fee74ab049dbf3bf62e4b46e02a17fd  gcc/config/arm/freebsd.h
! 40ea8945438a059a4775a05d8019d6e6  gcc/config/arm/fuchsia-elf.h
! d6548cb1229403677474b9f76e6a82e7  gcc/config/arm/iterators.md
! f64c87de0e61f9baf01f52b1076c58ca  gcc/config/arm/iwmmxt.md
! fd716e7e338c9853015251c58b381417  gcc/config/arm/iwmmxt2.md
! 43860172efd13ad5abdb3d79b63f45ca  gcc/config/arm/ldmstm.md
! ccc339f396a88f130643d0164399a701  gcc/config/arm/ldrdstrd.md
! c389b07d58010999ea286fe8604dcfc9  gcc/config/arm/linux-eabi.h
! 3ea088a93fb26f4ffdf06d141f6004f9  gcc/config/arm/linux-elf.h
! b904d27c5271b122a49d456478249b63  gcc/config/arm/linux-gas.h
! ae7f63fcc1707b4a22775f5ef6b4bc30  gcc/config/arm/marvell-f-iwmmxt.md
! 23c5005c8404d6b49376e62ddb72464b  gcc/config/arm/marvell-pj4.md
! e7bd025c0a8b6c147154451f2ac26962  gcc/config/arm/mmintrin.h
! 2588d7cca19421378b8efdea05e285f6  gcc/config/arm/neon.md
! 272ea0edb113be6f1106776f9d26af46  gcc/config/arm/netbsd-elf.h
! 4ca7f197762ae09faad8ee458dee5091  gcc/config/arm/parsecpu.awk
! 1238b1cb0060064bcc0aaf1f32c91a26  gcc/config/arm/predicates.md
! 6e481d52b4a2039398c798a81370f7e9  gcc/config/arm/rtems.h
! dc29bc14f4ec1c18d73c0a68b0ef03fd  gcc/config/arm/semi.h
! 5d598fbe7ed7496a55c8f164c00954bf  gcc/config/arm/symbian.h
! d607a8057a15be6b50d1c7b67e10c105  gcc/config/arm/sync.md
! 48d219e0e27f86911b898c1b079eda99  gcc/config/arm/t-aprofile
! c69d24e5f1fc01c4953b7918068d029b  gcc/config/arm/t-arm
! 52c2a04f9cb0d25361304fe50387282a  gcc/config/arm/t-arm-elf
  4dc427c456af5e56b1ac39bda8969af6  gcc/config/arm/t-bpabi
  e3950ec6bd159734835f8f8fb143efc6  gcc/config/arm/t-linux-androideabi
! f65e32ade75647d28299317c685923d9  gcc/config/arm/t-linux-eabi
! 6563e710a3fd04730093adc7eb149568  gcc/config/arm/t-phoenix
! 378df15e3883554c3dfce4f23692c31c  gcc/config/arm/t-rmprofile
! 7635e6786e20753798ce1cd1cda5ff17  gcc/config/arm/t-rtems
! 4943fbef522585ab850f79aba907546d  gcc/config/arm/t-symbian
! 9f0145d02d3aa24832a9dab5809c90e8  gcc/config/arm/t-vxworks
! 1ccbb3a35ced4f3fd933a078bc385319  gcc/config/arm/thumb1.md
! 89c0b5ed6c82e82ea0ccca576bee28fc  gcc/config/arm/thumb2.md
! bd65ff7f66d3269ac18e871c51e38a8d  gcc/config/arm/types.md
! 2fb445f2fcca33268ad2bb48250885b8  gcc/config/arm/uclinux-eabi.h
! 336c0f452f3280c0c5ffc36ffc1e2702  gcc/config/arm/uclinux-elf.h
! 3559547380d1c2adb53426be79b2ccbe  gcc/config/arm/unknown-elf.h
! 2a9bd2ecfbbff5480c8c9bdf1ed4edba  gcc/config/arm/unspecs.md
! a4a361c27029ddfc0d0f3eaf409debf6  gcc/config/arm/vec-common.md
! 38100c2e73fb4ee84a6fcf31020476f0  gcc/config/arm/vfp.md
! 9c11cb4c0e06934766e0c280b9309571  gcc/config/arm/vfp11.md
! 4208fe785394b6e82e88db5bf117c411  gcc/config/arm/vxworks.h
! baec31a658a567471285650931d03b15  gcc/config/arm/vxworks.opt
  a17a638dc98f3f18b0e13448c69e1e65  gcc/config/arm/x-arm
! e8e9b41d43d0598ca48d205b053e809e  gcc/config/arm/xgene1.md
! 28bf5c56f2970e50536c743fd1e7bfc3  gcc/config/avr/avr-arch.h
! 34fb8a3d97bf1ab8c6784c593825bc9b  gcc/config/avr/avr-c.c
! a742cb87db79512108ff5c0181f628b5  gcc/config/avr/avr-devices.c
! ca9eb756ed0868fc6327dae89d24dfd1  gcc/config/avr/avr-dimode.md
! ccf39bce7e1105ed98c168aefe2486b6  gcc/config/avr/avr-fixed.md
! a8b0daa164f32ba1e8276cf787899c6c  gcc/config/avr/avr-log.c
! 8837943499f20f8a034d4525ebb46d8d  gcc/config/avr/avr-mcus.def
! 08f454137290f23a449bb0f3d75e2192  gcc/config/avr/avr-modes.def
! 5b3a9cfaad388c30ccb64f8c22ae8434  gcc/config/avr/avr-passes.def
! d058fa65ae6b3fa1bca9d75e9afd3df6  gcc/config/avr/avr-protos.h
! 3425f429a345e1eecd51bcad4d3ab1bd  gcc/config/avr/avr-stdint.h
! 4cce7957a71f16ac576e7aa68e790fb1  gcc/config/avr/avr.c
! 8eaf3731bd955db07fddd895cde25917  gcc/config/avr/avr.h
! 43ebc4e25bd014ae225aa676bcfd0880  gcc/config/avr/avr.md
! 3be9837418a7860773b4a1a189853b1c  gcc/config/avr/avr.opt
! 774be0db253100a595dff6cdeaf01b75  gcc/config/avr/avrlibc.h
! af29b19e3346b78f3d90597a3c6954d2  gcc/config/avr/builtins.def
! 55a40978f91a4c7871b32d67f30e2d54  gcc/config/avr/constraints.md
! 2ee907b52038db3dcbe863112034ad19  gcc/config/avr/driver-avr.c
! 67d2cca0766df13e30082cf42e8dd41e  gcc/config/avr/elf.h
! 0da12c3fad82c06f62d5a94a8876f90a  gcc/config/avr/gen-avr-mmcu-specs.c
! 32160d66dc6f7ddac49e97db453e0060  gcc/config/avr/gen-avr-mmcu-texi.c
! 7045a2a4ca705e17f457411ca2315f93  gcc/config/avr/genmultilib.awk
! 0702172e7529c9b13b9014df1af6220c  gcc/config/avr/predicates.md
! 747dbe51bcc68bfcf6c7f04c13142a09  gcc/config/avr/specs.h
! b2c382d251d5288fc7d956c0bdec5fa0  gcc/config/avr/stdfix.h
! f8bda4d95d5a3052f8c76ff2553c8d22  gcc/config/avr/t-avr
! 25044e376363b300e6e928acddf5b19e  gcc/config/avr/t-multilib
! 202c7e1e7d9149ea6e2e06d0ea6f4783  gcc/config/bfin/bfin-modes.def
! 3b99ce768577de2adea136ebc1f80f15  gcc/config/bfin/bfin-opts.h
! 484e9f7e1e5568ad487e55ce0d0e84d8  gcc/config/bfin/bfin-protos.h
! 0a371363fcabfcf7e3cd10743dab022c  gcc/config/bfin/bfin.c
! d5911d9df1000811dd86da8378e8ee92  gcc/config/bfin/bfin.h
! 2cd06150c0f88b689b2fe6045e5a953b  gcc/config/bfin/bfin.md
! af4d4b740e01444c3b626d18175b7606  gcc/config/bfin/bfin.opt
! 3de1e86c989d8b5ab82fc468f5a409a5  gcc/config/bfin/constraints.md
! 47269ebb3844b1b7f0c45cb6efc75a14  gcc/config/bfin/elf.h
! 253776a18949068179f4d2bc160a0c98  gcc/config/bfin/linux.h
! f7a0399fcac6a460160127cc8b4f4d32  gcc/config/bfin/predicates.md
! 0736965d033ea4ec0cf4196a538295b9  gcc/config/bfin/print-sysroot-suffix.sh
! 9a9c4d6804405fcd1e8acb32303cc149  gcc/config/bfin/rtems.h
! 55360a16fe67844d2921b9028337bd88  gcc/config/bfin/sync.md
! 7af6a80415e1e91405463d970f471502  gcc/config/bfin/t-bfin-elf
! 6a590bd03db378581d520f469d896902  gcc/config/bfin/t-bfin-linux
! e34cc011f6b8f14769ecb03eb1ca5407  gcc/config/bfin/t-bfin-uclinux
  6f4817f759fcac5ac27233ee451780a6  gcc/config/bfin/t-rtems
! a7a324561cd47c49daa42200e540f344  gcc/config/bfin/uclinux.h
! 307d9bd000c29b422bb4786314e87185  gcc/config/c6x/c6x-isas.def
! a946517f115ab06511a57ddbc18a6546  gcc/config/c6x/c6x-modes.def
! babface8c66578ddaf800955f287de9a  gcc/config/c6x/c6x-mult.md
! fbee5487c59d0d70416d1f7920fbd3a0  gcc/config/c6x/c6x-mult.md.in
! af20649b24afb58eae656d42948f466e  gcc/config/c6x/c6x-opts.h
! 4300f29a0d8720dbb41ae3146fc510b9  gcc/config/c6x/c6x-protos.h
! 762500b383f85f498bb497e1aa9916db  gcc/config/c6x/c6x-sched.md
! 70325bc7a56377c109cdf951091ddbb0  gcc/config/c6x/c6x-sched.md.in
! afe343efa1d11f3f83b6996dd95efee1  gcc/config/c6x/c6x-tables.opt
! 2ee9abf95a6ca0e853c9f9e837f5770c  gcc/config/c6x/c6x.c
! 6a73691028bbdd07a4e3c8af6329e90e  gcc/config/c6x/c6x.h
! bd01480fc6a5da4cf0b851b3eaad9000  gcc/config/c6x/c6x.md
! 42c2fc54fb2a1c85160de8a4b7a23140  gcc/config/c6x/c6x.opt
! a10257cffd49cdc6e0d5b5ce340f522c  gcc/config/c6x/c6x_intrinsics.h
! 09d212601462afc819f24a6550df64fa  gcc/config/c6x/constraints.md
! a39878a58de686c6a7959597914f2ae7  gcc/config/c6x/elf-common.h
! 6c1dc539bc22448219a0d1ae1b64967c  gcc/config/c6x/elf.h
! 299176b825bdf1dc69a11cfe7f2e63e2  gcc/config/c6x/genmult.sh
! 60234e7a1b39ee7c8eae85a38c63b1bb  gcc/config/c6x/genopt.sh
! fff15c54f968cb99c7289f999efb06be  gcc/config/c6x/gensched.sh
! 5d01bf5f242372fc0ac4643e008e83e6  gcc/config/c6x/predicates.md
! a5e84ee6a5a0ce11e60f5cbbee13dec4  gcc/config/c6x/sync.md
! 0b01eba1ae01297ef2ec28e06a89a55c  gcc/config/c6x/t-c6x
! 768557ee799d1b89383cfd192b666504  gcc/config/c6x/t-c6x-elf
  428034a210600b6b423dfadb06636e03  gcc/config/c6x/t-c6x-uclinux
! f123f49ee08c831375d5ec1ea075dc93  gcc/config/c6x/uclinux-elf.h
! 1d91403fc4efed85a82f1f36bcc898c6  gcc/config/cr16/constraints.md
! 930baf9aa88c154eadb1860898fb3190  gcc/config/cr16/cr16-protos.h
! 4cb97e889665e9722c586cdb3af40c46  gcc/config/cr16/cr16.c
! 21784c333f2180c749666f3b3ef0fd8b  gcc/config/cr16/cr16.h
! 459facd0a3281c0f90afddc7a77ab3cf  gcc/config/cr16/cr16.md
! da78fceba7e7a0cbf07f0a401d4c4567  gcc/config/cr16/cr16.opt
! b6e936201775fa5bab2e55284fdf3f76  gcc/config/cr16/predicates.md
! ed0429cd3b64ce2750d3cb7b4919b14c  gcc/config/cr16/t-cr16
! 8aeb92cdab77e4313fe4eae4ecfafaf8  gcc/config/cris/constraints.md
! b5069637033df9ebe7bd5022c7edda0a  gcc/config/cris/cris-protos.h
! 6b5a7734d894baa6b08227d671ee34e2  gcc/config/cris/cris.c
! 6cecc0d8960b54d3c4c8988996340c02  gcc/config/cris/cris.h
! da49c189c7af3a5320f08d3096104330  gcc/config/cris/cris.md
! 80076596ffcaaf00d9680a80340fa1ea  gcc/config/cris/cris.opt
! e9182b5483e11b454e0d7cadf7849a1e  gcc/config/cris/elf.opt
! 32c370ed9470ae9e579d960b3af38c78  gcc/config/cris/linux.h
! 7b0d256ec42ac477c03f91278a47bbe8  gcc/config/cris/linux.opt
! 6f11a3ee404c456d09997a508286477b  gcc/config/cris/predicates.md
! b04e5c20797e72eedf069e05e435d9d1  gcc/config/cris/sync.md
! a9b0f21667fd1395c9d1ba7a25d64ef0  gcc/config/cris/t-cris
! 05528bc8bd9dc14ca45cc8af478acc93  gcc/config/cris/t-elfmulti
  5657034355d2720466dad6b98f794a8f  gcc/config/cris/t-linux
! 3c50e8169741e2ca3edd4ac90756e1f8  gcc/config/darwin-c.c
! 296a294042c185964ef738edd9af6508  gcc/config/darwin-driver.c
! 4b4dd81e2edf3c6062378c2c342e070a  gcc/config/darwin-f.c
! ff8874544a9c5e305c4592eeaa0ca02d  gcc/config/darwin-ppc-ldouble-patch.def
! d6acd429ff1600c49ccc0b3aceb4247e  gcc/config/darwin-protos.h
! 5cb72a6936fb3c9254091b5cc7639be5  gcc/config/darwin-sections.def
! e3ca31803bb47a4c6cf1c147ea8336f0  gcc/config/darwin.c
! de8dc085f6eef6b3a804c9984e29ea84  gcc/config/darwin.h
! 8b9419092068348e657dcae282a6a3f7  gcc/config/darwin.opt
! 101024c77063e77198ed701f9f28e16a  gcc/config/darwin10.h
! 36fb2780494fc147291656b8ded57bf3  gcc/config/darwin12.h
! efa44741c3bd8204720f8980452d3b20  gcc/config/darwin9.h
! 37caa63015b7c98ec9ffeda384e9e869  gcc/config/dbx.h
! e2e1cb01e0cf4853349146b0e45c5dad  gcc/config/dbxcoff.h
! 96cf4c3121f2e418fd757787edfa8e41  gcc/config/dbxelf.h
! 54648f4f8990c2cc83ee21c7dac104de  gcc/config/default-c.c
! dcb897ce4c3d851dbbf8cc774f16535a  gcc/config/dragonfly-stdint.h
! 06a6cf587d6f1b40e8c9d3053eab418e  gcc/config/dragonfly.h
! cbc5c1012325216c5cb9c7a94a886539  gcc/config/dragonfly.opt
! 705a5f057942f6074c69349519527154  gcc/config/elfos.h
! 676f69498910bca0644198e36972639f  gcc/config/epiphany/constraints.md
! 485ed3eceb2bfa8f56da67e059331f01  gcc/config/epiphany/epiphany-modes.def
! a1705aff1e47eaf281e7abf4709ab634  gcc/config/epiphany/epiphany-protos.h
! 7cc5688ddc6680f1a5f8fd34c09e3749  gcc/config/epiphany/epiphany-sched.md
! 6208cf8273c2c9aaec959306716a7811  gcc/config/epiphany/epiphany.c
! e20a38d571085785ed2b5f1a2d4a2666  gcc/config/epiphany/epiphany.h
! 36bd71ef5b20741c35ef50812911e22e  gcc/config/epiphany/epiphany.md
! 2b44ce89355551fde9d18a2e10ca4617  gcc/config/epiphany/epiphany.opt
! e0597aeef0df7d8e852c545863b14f16  gcc/config/epiphany/epiphany_intrinsics.h
! 6241a2fcb12d5e92801c64954bc80f70  gcc/config/epiphany/mode-switch-use.c
! 04b7b2136391bece909c5d1426c85d16  gcc/config/epiphany/predicates.md
! 944f1ff116f007892c88846acafc70b6  gcc/config/epiphany/resolve-sw-modes.c
  ae148490dc68d3586af1ffd2b1c6da03  gcc/config/epiphany/rtems.h
! 8b232d81d46746de0d4529d8b389aa4c  gcc/config/epiphany/t-epiphany
! aa1cf61bc18107f1da005917c54f3a42  gcc/config/flat.h
! 2eeb5eefca65ec53b112c7795484e1b1  gcc/config/fr30/constraints.md
! b0da9bf726fa894cfe15e7679defbe2c  gcc/config/fr30/fr30-protos.h
! 429e8ad55b0108fbd7adb4a440c881d1  gcc/config/fr30/fr30.c
! 74006db6bc3428d8c8744833eb4102c9  gcc/config/fr30/fr30.h
! f65b02e36262b83f09ae969bfe230321  gcc/config/fr30/fr30.md
! 9ff825512bc99e4c43970d2ece95e8a7  gcc/config/fr30/fr30.opt
! b9abd7ae060de43c5d5563d4343bbd31  gcc/config/fr30/predicates.md
! f211abe8f9fbac1c919dbbe161aa0f54  gcc/config/freebsd-nthr.h
! 57c3ce88cd7bde53a256f7aa7c91a0ed  gcc/config/freebsd-spec.h
! e65ed4a0d3c41aade5b31e6b2c3b2dfd  gcc/config/freebsd-stdint.h
! 0fce139a59ecdef47e342e997b615b21  gcc/config/freebsd.h
! 32835b3250ea6bc12f2c6efc0c44c698  gcc/config/freebsd.opt
! 0cb309a7ff16e1ddf27be03d6bb87962  gcc/config/frv/constraints.md
! 98e2f398e568096cd4463410914257be  gcc/config/frv/frv-asm.h
! c73591315b82d45485fbc59d3a2a7aad  gcc/config/frv/frv-modes.def
! 1cbb9ee1a0856e49e90c5868e2345272  gcc/config/frv/frv-opts.h
! 01e4857d5254c82668369df095d950c8  gcc/config/frv/frv-protos.h
! 3091f6a4bf2ecfa3ce39da3cd799b258  gcc/config/frv/frv.c
! 5b4620fa79a869c5ec48db537bb92eb4  gcc/config/frv/frv.h
! f7298f8b9ad87a9f43da5682e1b7aae8  gcc/config/frv/frv.md
! 9413ed69c18f4c0aaf61a41d5b75b80f  gcc/config/frv/frv.opt
! ad9fc93f0d5fb1608ce0ef0df628f18f  gcc/config/frv/linux.h
! 3d85082092c5aa0927c3539aa64a950a  gcc/config/frv/predicates.md
! 33dee33a655880929232c691f28d54ab  gcc/config/frv/t-frv
! 6875a228e1842516f7e2fe72bd27d992  gcc/config/frv/t-linux
! 1af4cb3472444157d8f8f8e911b7c546  gcc/config/ft32/constraints.md
! ea365ae237281f97cba6047f5e0dda91  gcc/config/ft32/ft32-protos.h
! 6f227d171c006f9188ccd00f92483b9b  gcc/config/ft32/ft32.c
! 30fc59f446ff66085dc3ebe9560f77ff  gcc/config/ft32/ft32.h
! 7b7dc14ce4db4127aab258ad1ccba881  gcc/config/ft32/ft32.md
! 3958fefab60ca334355e3b28913e3064  gcc/config/ft32/ft32.opt
! 3911e3a236e25b20c60c0fbc6c851ea2  gcc/config/ft32/predicates.md
! 2c1694dddcfd2cd6f3fe277018ecf11a  gcc/config/ft32/t-ft32
! 325a4c16333a86d700d491ef99e78b2e  gcc/config/fuchsia.h
! 2977c7781a2b8b22a1a658e5f0492ddc  gcc/config/fused-madd.opt
! c72407b0b8426f2f0334aaac63539613  gcc/config/g.opt
! 47a846c61261dd0d18b34b4fc54383d4  gcc/config/glibc-c.c
! 51f7545eaebbd0fb8bcaf539462a86e3  gcc/config/glibc-stdint.h
! a47e831843a160a2ffc8572822b3ab23  gcc/config/gnu-user.h
! 11b98ff00816ec85a4c64c14f75d55d8  gcc/config/gnu-user.opt
! 20d8721de1b2b9987ec6e72ab8dc9fd9  gcc/config/gnu.h
! 962660c7f18af646566959e5ec76b51b  gcc/config/h8300/constraints.md
! a20e010b8397be339267513f07ff8224  gcc/config/h8300/elf.h
! fd4e8e3a37d065c1f0a3582f12e15b1d  gcc/config/h8300/genmova.sh
! a72d35fe73e923d6d1b2121f75ad511e  gcc/config/h8300/h8300-protos.h
! 72483cf7d67cc0fc4c7d8db8d460c385  gcc/config/h8300/h8300.c
! eb883c8b1424deac62bbcd2b952e7058  gcc/config/h8300/h8300.h
! 0c829ca94e1e34694e730a7de472c70f  gcc/config/h8300/h8300.md
! 484823b12efdaacd8b4d370d6ffebf8f  gcc/config/h8300/h8300.opt
! fe4d6b63f13d657b7ef38e62dc637f81  gcc/config/h8300/linux.h
! 816ffb7267ac87aaa46f1bc17b45507a  gcc/config/h8300/mova.md
! b287b238f8baae9492a4dfc4a99d820e  gcc/config/h8300/predicates.md
! fa539f0c92b09088c2a8b15172ba726b  gcc/config/h8300/t-h8300
! b9aa8808dd586a6cc86a2acccdb76a8c  gcc/config/h8300/t-linux
! 3a56f9b940a2c2b65b3098cd4a15670c  gcc/config/host-darwin.c
! 7dfd115a680e4f0ed08ae254d9f0fdac  gcc/config/host-darwin.h
! 432b134b9b9865da324a118df78ab382  gcc/config/host-hpux.c
! 85164f00a904a291b80d8bb8de6a9791  gcc/config/host-linux.c
! 48b4e5aa9e69888d3facf8e8f3cc5782  gcc/config/host-openbsd.c
! 20c99754203042dfd1d92aa00a55f56b  gcc/config/host-solaris.c
  2c191e2d8d033611c6fccc8362d9e8f0  gcc/config/hpux-stdint.h
! 23521295efa96105f53cef6c344e433a  gcc/config/hpux11.opt
! 647659d6dafcc6e82fd0ea06d682b287  gcc/config/i386/adxintrin.h
! e115a0990f79835bb8dbf2365b78df76  gcc/config/i386/ammintrin.h
! 23b680d8385994e8046590bd5f06750d  gcc/config/i386/athlon.md
! 74385587c3e4f5d94833643091ecfccc  gcc/config/i386/atom.md
! 180209868729c893ee8304e2fbe152a3  gcc/config/i386/att.h
! bc7981d211a35635d4d9239eb87bc009  gcc/config/i386/avx2intrin.h
! 750be139720f8920d23f30f421c5601f  gcc/config/i386/avx5124fmapsintrin.h
! 4b98522ce733b50b13c082cc7adea669  gcc/config/i386/avx5124vnniwintrin.h
! b60ce9f5056a8b2d3e02be7709099937  gcc/config/i386/avx512bwintrin.h
! 19ed0370d68c06ed580f74e0c59e901e  gcc/config/i386/avx512cdintrin.h
! 3d5d965a552cf3c7eb1e98dfbc2547e3  gcc/config/i386/avx512dqintrin.h
! a44afd35ed44ab2ce2a3dc72edf3edd2  gcc/config/i386/avx512erintrin.h
! d95408cc0ca0770850b7e67a647d5405  gcc/config/i386/avx512fintrin.h
! c0040fb4c52e2ccd2f171678cd5cb9c0  gcc/config/i386/avx512ifmaintrin.h
! 709ea5913faf6d14b25941920bfe8a8d  gcc/config/i386/avx512ifmavlintrin.h
! d67308f297fbc2a4771f7a408c5c6809  gcc/config/i386/avx512pfintrin.h
! bcac886f1b96ce469c84ea6f3e042d4d  gcc/config/i386/avx512vbmiintrin.h
! f910e57d3ed22cc94bd0a24470f1bc7c  gcc/config/i386/avx512vbmivlintrin.h
! cb658ab64800dc93ff9d5f2808f958ae  gcc/config/i386/avx512vlbwintrin.h
! 0703bacc33f4079c87c52eb336565c95  gcc/config/i386/avx512vldqintrin.h
! 40da9e354ab8756c0fe31ba09cacc1d1  gcc/config/i386/avx512vlintrin.h
! 0e25fd1bd9e4a1b6101596cc480db933  gcc/config/i386/avx512vpopcntdqintrin.h
! 09eeee007c733ce05e205ae1af926882  gcc/config/i386/avxintrin.h
! 3044158b72545cd77bdaf0af75d23cc4  gcc/config/i386/avxmath.h
! 0c049f8ce11f381b7df0c79dc3d358f5  gcc/config/i386/bdver1.md
! 813e599df64196c20812ebfdbd3d145a  gcc/config/i386/bdver3.md
! 21099c5c870b38442c4849366b3756ca  gcc/config/i386/biarch64.h
! 1c5165a7cbe1dfa143c154b6adb7fef6  gcc/config/i386/biarchx32.h
! fd05bd52c934486950398132340b8f9d  gcc/config/i386/bmi2intrin.h
! c9966ec568ce1d9afae1212a43c2552a  gcc/config/i386/bmiintrin.h
! a3fdca97f68835a7fe64bb36537946c2  gcc/config/i386/bmmintrin.h
! 93a26cd5d240d72aba249cf39cda7c06  gcc/config/i386/bsd.h
! 18119f2c946631196759d96ef12c2d8a  gcc/config/i386/btver2.md
! e5755082352ee97d90427b199539c657  gcc/config/i386/clflushoptintrin.h
! 7e1002bbf7ff7cbbf3484a56a1bdda37  gcc/config/i386/clwbintrin.h
! f275e0cb1c06e9be383ee2830742eabc  gcc/config/i386/clzerointrin.h
! e98e4f9bd96bb13bf122daa5ffb532f7  gcc/config/i386/constraints.md
! 51916b5cfd29cd81ccf6e9e61c1f668d  gcc/config/i386/core2.md
! 4c008dd80df596b0deae5e181737543c  gcc/config/i386/cpuid.h
! 3005ca522302d379f11519de60d8f8fa  gcc/config/i386/cross-stdarg.h
! 27869bbc83c2dadbf6eda2d3c15245c9  gcc/config/i386/crtdll.h
! 6a69fbd4f050e39bf29f86e4dc178de7  gcc/config/i386/cygming.h
! ed7bac240af8b09916271be40230256d  gcc/config/i386/cygming.opt
! 98d23389cef30c303ff56da5c9ee7c8d  gcc/config/i386/cygwin-stdint.h
! 1342de078b9ef883588f75f5aed134e9  gcc/config/i386/cygwin-w64.h
! e8234781b4c21eb0988db82e86cc7267  gcc/config/i386/cygwin.h
! 849a37486371a7ea92478c1bd902a1d8  gcc/config/i386/cygwin.opt
! 5b4cb8bfae8d754afb7d95b6537ccaa3  gcc/config/i386/darwin.h
! b63a31daedb78da6857de5dc44890ac5  gcc/config/i386/darwin64.h
! 5628990ccbc26c3d8a83cab8c8eea3b9  gcc/config/i386/djgpp-stdint.h
! 737dede75d620d8918f97e224f27b465  gcc/config/i386/djgpp.c
! 49544a59d3358fdb338ca2b49921e43b  gcc/config/i386/djgpp.h
! 2b7e4c6815831e8c7031184e02f30c83  gcc/config/i386/djgpp.opt
! e643535bf612674f78a8ccba59bfe7f2  gcc/config/i386/dragonfly.h
! 541053d78505778d82a708fb43be377b  gcc/config/i386/driver-i386.c
! 66f6e0a9ecddc3b2959bd3c32b8ef80b  gcc/config/i386/emmintrin.h
! 6f09fa82ef1421be137d2767fdcc7f2c  gcc/config/i386/f16cintrin.h
! 67e8f732c8aab028c2667fee5cd0b42e  gcc/config/i386/fma4intrin.h
! 8f861c333b4f4e35c0345c56295b8567  gcc/config/i386/fmaintrin.h
! 06560118b01d97f7a1547c9ce558d4a1  gcc/config/i386/freebsd.h
! 748fba6d260aba47415a9e3249b73a00  gcc/config/i386/freebsd64.h
! 6365d05b6ee17b6d075f4e6744e8c816  gcc/config/i386/fxsrintrin.h
! 7396787a12c6d930225726f59e474ba1  gcc/config/i386/gas.h
  d87f5906e5cee04c568119528636e1c2  gcc/config/i386/gcc-auto-profile
! 6b21d9e28df1dbff2abbd3961ecde5fd  gcc/config/i386/geode.md
! b2ee042704ad5e14ac724dea041fb3bd  gcc/config/i386/gmm_malloc.h
! 2f45030e4ace039b1c1ceb004885566b  gcc/config/i386/gnu-user-common.h
! a884553590188a3074f90c3486312eca  gcc/config/i386/gnu-user.h
! cdbd8ecb887e8638f07c793f5848a990  gcc/config/i386/gnu-user64.h
! a33fe9fbc74d3bcaee3b69e019e91648  gcc/config/i386/gnu.h
! 3349498ec85e12ac7055f4802239086c  gcc/config/i386/gstabs.h
! f23d8a342d218fda7a0259450202ee9b  gcc/config/i386/haswell.md
! 991b510f55e56a7be2af821dfaf224d8  gcc/config/i386/host-cygwin.c
! 665fc48c497f5e40a63dfb3c475def53  gcc/config/i386/host-i386-darwin.c
! a2a96ce7ed0be4a979baf51b72a4e1ed  gcc/config/i386/host-mingw32.c
! 323aab772ea45dd79401d5317da8bc0f  gcc/config/i386/i386-builtin-types.awk
! d5238835384061cdbddd924882e89c6e  gcc/config/i386/i386-builtin-types.def
! 2a251c3dbcab569d7c442a3f9ae6c091  gcc/config/i386/i386-builtin.def
! 54c767a1819a987fb859eaa5b1e265b2  gcc/config/i386/i386-c.c
! 79f95578ad42bafa17a9a1f3c09514c3  gcc/config/i386/i386-modes.def
! fd4a0dcde60c7daf09fe3b9ef6b3ee08  gcc/config/i386/i386-opts.h
! 80b43deb5c1fc5fc0938a942fd33af10  gcc/config/i386/i386-passes.def
! 99f3ec64842b3c7b16cb2c6417fadf1d  gcc/config/i386/i386-protos.h
! 749a9a009cef9d1658433ff81c4c85ad  gcc/config/i386/i386.c
! 607a4c0be95bd337919c6e8d571de2a9  gcc/config/i386/i386.h
! 2d75b28e31d055f2b2a25f83fe6165a7  gcc/config/i386/i386.md
! ca0d03ffdb381f643e5cf347dd93191b  gcc/config/i386/i386.opt
! 7ba0fe66f8e16b1b88672d1a6a6214e4  gcc/config/i386/i386elf.h
! 5d53d7bc9e564ebfaa7161e7fbb38fe8  gcc/config/i386/ia32intrin.h
! ff7697afc6890c3f8bfa85a93e514d93  gcc/config/i386/iamcu.h
! c211cc29678c0f465f0a19b7985188a0  gcc/config/i386/immintrin.h
! 044128771cb451f5dd64efab601e8532  gcc/config/i386/intelmic-mkoffload.c
! f003f8be520a86d0280beceb77b8fa0a  gcc/config/i386/intelmic-offload.h
! 697096adc9493963515a950160b68047  gcc/config/i386/k6.md
! 0c280e97b827b0c3296ca5d7213b5494  gcc/config/i386/kfreebsd-gnu.h
! 087169e7f14a6d2e2ae660d0ee7b2fcc  gcc/config/i386/kfreebsd-gnu64.h
! 4cc5e6debb979111ee22a053da4b83f7  gcc/config/i386/kopensolaris-gnu.h
! 6701712a9cee21d671d113fefa4fec30  gcc/config/i386/linux-common.h
! 118d472744df2905f67e2921d32b6331  gcc/config/i386/linux.h
! 53dd99cac3d2cd836a63deca0aeb6874  gcc/config/i386/linux64.h
! a63001e9b5e1a8d3d8c04f7ae3f8efd7  gcc/config/i386/lwpintrin.h
! e31b61b6f340baa68d1875616e81000c  gcc/config/i386/lynx.h
! 2477b8262ef00905d865da0c7cfe8383  gcc/config/i386/lzcntintrin.h
! abd46a501b9e080f10442e15d1cd9b93  gcc/config/i386/mingw-pthread.h
! 05528089bcfa084100d40e440d9c8cd5  gcc/config/i386/mingw-stdint.h
! ff6ba4b1d65cbc02bc87dd81a4f24da3  gcc/config/i386/mingw-w64.h
! 826e57bfed5caf04e6bbf2c9272fb440  gcc/config/i386/mingw-w64.opt
! 6a7cb776f3aa71b4df18670831166255  gcc/config/i386/mingw.opt
! 6abfe2055c77da8f803d5f0c7090561b  gcc/config/i386/mingw32.h
! c01bd9c9ad7189f0b2395355e3f6797a  gcc/config/i386/mm3dnow.h
! d7ae7d889aee957d0f5644f1bb498bf2  gcc/config/i386/mmintrin.h
! ab533f7ddf1360a5d3ec2f2855d18468  gcc/config/i386/mmx.md
! e79bebd98b886c66b302da227083798c  gcc/config/i386/msformat-c.c
! 460eeaded85bba10a414f8d02b8570b5  gcc/config/i386/mwaitxintrin.h
! 50cda2669a15577373765c92ae89a283  gcc/config/i386/netbsd-elf.h
! 0f82defcbe3d6fb87b2147d34d107bb3  gcc/config/i386/netbsd64.h
! 59a2826a15cecf1dd73e482c7445c37e  gcc/config/i386/nmmintrin.h
! ac3f05bead6263b1224544bd3a6e8eb6  gcc/config/i386/nto.h
! 13adcb98f2a1373177faace812fa35ca  gcc/config/i386/nto.opt
! 969b4d4b6367291db4b3a35286ea6c2c  gcc/config/i386/openbsd.h
! b9904cff99368d8e1de059bd8e2cb9db  gcc/config/i386/openbsdelf.h
! daf844157ce264ac007d0603d307b220  gcc/config/i386/pentium.md
! e731504985e5d769a421ede565db826b  gcc/config/i386/pkuintrin.h
! e73745071cc8d04859f3a5b1bfe0c185  gcc/config/i386/pmm_malloc.h
! 821ea9449f7b83c9ddb0fe9125206cc4  gcc/config/i386/pmmintrin.h
! 23f74d16ca6bad836ea7420f1532f523  gcc/config/i386/popcntintrin.h
! cbfcdb12765f75157ac2dc7fad0cf074  gcc/config/i386/ppro.md
! c9c374d5bbe7257b9014287b3e4f69f8  gcc/config/i386/predicates.md
! ea1eafcd9f62ad8a5977836d0cd67695  gcc/config/i386/prfchwintrin.h
! 8d6edac06a5766274664fd5bb80ebde9  gcc/config/i386/rdos.h
! 762c0cd418230a8c5df0e0ab5d8c6d99  gcc/config/i386/rdos64.h
! 02e38873ab1dae0da9fb414dbcf55c83  gcc/config/i386/rdseedintrin.h
! bb517021abbc597ce3af626a337de29f  gcc/config/i386/rtemself.h
! a8aed88b8bbf38fdb6166cf2d0051cf1  gcc/config/i386/rtmintrin.h
! 431901c938e114cb62b3ad846f72ecc2  gcc/config/i386/sgxintrin.h
! 649897741fe2cca4f04c0c0b518afa61  gcc/config/i386/shaintrin.h
! 8be24cf09776d77cfca4a86b3442fbce  gcc/config/i386/slm.md
! 655421e4471519d6655c892afcec20c5  gcc/config/i386/smmintrin.h
! b5bce0d903bc159066cd8fefe933e6af  gcc/config/i386/sol2.h
! b6748c5753b398e598adfa0623ba209d  gcc/config/i386/sse.md
! 18427fe6cb074752acb8f48048eaf104  gcc/config/i386/ssemath.h
! aed767217d43c89b3e9f7ba6f4c213a2  gcc/config/i386/stringop.def
! 6d07cea9e3242e05941de0140745843b  gcc/config/i386/subst.md
! a3f25e79f8f7d67dc93801fe6004c715  gcc/config/i386/sync.md
! 138a11dfc6cd317eb9e6ce0126d15287  gcc/config/i386/sysv4.h
! 3012f8fe17631be71507b44d3733ffa9  gcc/config/i386/t-cygming
  d5339d6e5a09a02383903f617230e19e  gcc/config/i386/t-cygwin-w64
  98d94861be252f8541038afee279417f  gcc/config/i386/t-darwin
  8f92133cb94c59e2939cd65dc5fc8cb4  gcc/config/i386/t-darwin64
  4c5d6e2fe993d41a182cdd83904065d4  gcc/config/i386/t-djgpp
  3a1c0dac7740fd9ef48c7bdf5f313c9d  gcc/config/i386/t-gmm_malloc
  d5939c6bccbf8957206c63308ce628a6  gcc/config/i386/t-gnu
! 083e9486b6effa94ab1c31e70c2e9e07  gcc/config/i386/t-i386
  c3fde04ef47ddd6ec0a60c98d7f55224  gcc/config/i386/t-intelmic
  51dcf9826007c01cfd67be11d5f0d538  gcc/config/i386/t-kfreebsd
  39ad69cb2a2e67aa8d46664a75b02789  gcc/config/i386/t-linux
! 6e00d51b52f042f6435622f81ed6c08e  gcc/config/i386/t-linux64
  cd662e746e08a18749e8272fa759278e  gcc/config/i386/t-mingw-w32
  67bcf41f125bbec93a13ad3bd98abaee  gcc/config/i386/t-mingw-w64
- 813c980909a4848e5aed5faeca6fe2bd  gcc/config/i386/t-openbsd
  12a68576d3577a8da82089f18d60c613  gcc/config/i386/t-pmm_malloc
! f46f9dd0de8463eb5d2a7b98d9065f94  gcc/config/i386/t-rtems
! eea8d325348091b08e8b11e853678ddd  gcc/config/i386/t-sol2
  af24a4211ecc5bef39097e175d346788  gcc/config/i386/t-vxworks
  b80a5a4a8c8fc32ca318158abc98dc20  gcc/config/i386/t-vxworksae
! 6361b4c3a7140e2cb2c6a78ac8e2fb44  gcc/config/i386/tbmintrin.h
! 0a7faf8253fa82d578c4259d8b917455  gcc/config/i386/tmmintrin.h
! 6a24978f65cbfe4fbcf82f0595d34f50  gcc/config/i386/unix.h
! f219a56ae20bad10488074fc4ec0624a  gcc/config/i386/vxworks.h
! 5d22204a76b17c000a99f5ba5b890cc3  gcc/config/i386/vxworksae.h
! f8130648941bcc7f4bcfa3c6cc6c88bb  gcc/config/i386/winnt-cxx.c
! 902cc9f445a1b1b0ceba019c34ff93ef  gcc/config/i386/winnt-stubs.c
! 7142390c41f2310444f51409ae304f9d  gcc/config/i386/winnt.c
! 304621abc646ca0b071f305968dec387  gcc/config/i386/wmmintrin.h
  627c3e925a142fb6d2a14368fb637f28  gcc/config/i386/x-cygwin
  bae69273c5e47d61e99558ca73c4fabd  gcc/config/i386/x-darwin
  12e09c6fa27c603c6db59fbfc2a6b089  gcc/config/i386/x-i386
! 113b1e1346489b0650778429b2872c71  gcc/config/i386/x-mingw32
! 065f6691976a9ae60ef58cefe691036d  gcc/config/i386/x86-64.h
! 93b057aef17bfabe5a6a28a6add27408  gcc/config/i386/x86-tune.def
! 2477256739bbf2eb85722211b13d6e46  gcc/config/i386/x86intrin.h
! 4f6768af1ae8fe5a38ada3fa1436f42f  gcc/config/i386/xm-cygwin.h
! aaad93820bb64b5fc315a6bae94768a9  gcc/config/i386/xm-djgpp.h
! 0c06e0e3d61fecb2fada86eb366ac83f  gcc/config/i386/xm-mingw32.h
! dc8ec8d98ef95efcf73d30e3a46bb77d  gcc/config/i386/xmmintrin.h
! 8a527454cea62bb597701fc42aad834c  gcc/config/i386/xopintrin.h
! 29b667a4509201433194d81bbed83af0  gcc/config/i386/xsavecintrin.h
! 7734a8fc410c6ff7a0ad6778b08d5ff3  gcc/config/i386/xsaveintrin.h
! b2c696a7e05ea43461847479c0618d9b  gcc/config/i386/xsaveoptintrin.h
! ed0c2d6b9a5b593f21b7f0d5bb4a86d4  gcc/config/i386/xsavesintrin.h
! 98d50a0ccb48b06f967268ae95334514  gcc/config/i386/xtestintrin.h
! b82d1f68f6cc01a09d7cdbdee0392273  gcc/config/i386/znver1.md
! 162d41b65d86a753f6ce37347aa722b9  gcc/config/ia64/constraints.md
! 6fafd8ab2c9388489742d9ff9e8ee7c6  gcc/config/ia64/div.md
! 0223713ffb84a2a3ab56d6ff5ca6ce71  gcc/config/ia64/elf.h
! b020eb747d070acbc53d66bcc5cbc190  gcc/config/ia64/freebsd.h
  89edd175b4bfe583ec3ee965092fd5d0  gcc/config/ia64/hpux-unix2003.h
! 62203b86fc3fd01fc8bea91a600ced04  gcc/config/ia64/hpux.h
! 32333c9f3318a13fdea7b8a722cb46c6  gcc/config/ia64/ia64-c.c
! a38f6f5a782d8a879ce6759410ef0886  gcc/config/ia64/ia64-modes.def
! 15b6f399e2cfe5997c8a21357f881d00  gcc/config/ia64/ia64-opts.h
! c4389099b57b9946e17fa545c2dbc329  gcc/config/ia64/ia64-protos.h
! e8fac9423aea6f034bdae8f0828b3137  gcc/config/ia64/ia64.c
! cc502b95d642edb5ed2309a5d8d4d2fe  gcc/config/ia64/ia64.h
! 92ccfe76395351e6d15af853ed321485  gcc/config/ia64/ia64.md
! ca33be4b1cb0a5f22eae07eae3ead0b2  gcc/config/ia64/ia64.opt
  dcc77d7023d20b64688bf213c2d327b5  gcc/config/ia64/ia64intrin.h
  79bb509f9c530854593158558d5ce90e  gcc/config/ia64/ilp32.opt
! e094a4b535c51d4a8a996497a8ac0af6  gcc/config/ia64/itanium2.md
! b2f620ab3ded2317d936c1ba492c3b71  gcc/config/ia64/linux.h
! 1313853c0d138480d32fc41dcf718a5c  gcc/config/ia64/predicates.md
! 1412d813b899acb9232aec4b39f9d1b0  gcc/config/ia64/sync.md
! eb0615e0bb114b13a4862dd8624018d6  gcc/config/ia64/sysv4.h
! e358333caea271a2c5266caf711a0270  gcc/config/ia64/t-hpux
! 0c2eed06f97e142ae6b9c0da676912ec  gcc/config/ia64/t-ia64
  67736f64800d10923b58be4e448620d6  gcc/config/ia64/t-linux
! fc35ae1a51e123a0fa7b63006e20c1fe  gcc/config/ia64/vect.md
! 37f4505e4f9c84b786aa79f4514512ab  gcc/config/ia64/vms.h
! 1ee823e80b603541bbc24e771ae6e428  gcc/config/ia64/vms.opt
! c699ea5c4e0be9eb5c66f3ee79f967c3  gcc/config/initfini-array.h
! 3480c83f66dd9c329c36bff9b74ccbb8  gcc/config/iq2000/abi
! aa6991c7a25edd20395211114be94345  gcc/config/iq2000/constraints.md
! 52f1d85a2501b2f8d2d8b001bd4b7fa0  gcc/config/iq2000/iq2000-opts.h
! a6fd5ddb0113dfc0759028056693ae76  gcc/config/iq2000/iq2000-protos.h
! a52fd0c594bef983d1b43c38e30fdcba  gcc/config/iq2000/iq2000.c
! b6cae48ff0215d278b40382eae20a6f2  gcc/config/iq2000/iq2000.h
! 2722dd9fdc2413263a42603e53b3b081  gcc/config/iq2000/iq2000.md
! 9e460d7ac566f458c24a53c7a8e2444a  gcc/config/iq2000/iq2000.opt
! ad81e662f748bb7f0a9302a153b0ccd2  gcc/config/iq2000/predicates.md
! 5312956c9bfd0c2e0baa5647db6c3198  gcc/config/kfreebsd-gnu.h
! c2a205d6c087f80044d5d3e9151f69c2  gcc/config/kopensolaris-gnu.h
! ecfe33b73fcc1ad94a1253d3280f0382  gcc/config/linux-android.h
! 08ecd8e4d50e0b0315af251bf2ce2836  gcc/config/linux-android.opt
! 3ae5bccbbdc76cec6e65d78bb084f736  gcc/config/linux-protos.h
! 88e1355b63c68ca7532413ceb6d70e9f  gcc/config/linux.c
! c241e0c563e5aa40286fe641267af566  gcc/config/linux.h
! d964e30acd2b1942b348b38c839eabbf  gcc/config/linux.opt
! adc6b9a4fb90d0bf37cbdd9bc99b7d87  gcc/config/lm32/constraints.md
! a856040b9fc58587de5a235d2a962ea7  gcc/config/lm32/lm32-protos.h
! 68c509e07a5f4a0d8202f6f1ade18edf  gcc/config/lm32/lm32.c
! 0772c68d9dfd1fabda914431afb74c85  gcc/config/lm32/lm32.h
! c651720d806a3f1f33823fab94358075  gcc/config/lm32/lm32.md
! b2f8d9d831f798a5115e6e2ff660077a  gcc/config/lm32/lm32.opt
! 7ca6d50f76c617c479a87c2c7cad3682  gcc/config/lm32/predicates.md
! 5561518540d2efb12aa440c74acdfb12  gcc/config/lm32/rtems.h
  a9d1d80c40cc6eb8e9a32d54f82dae43  gcc/config/lm32/t-lm32
  660559cdac2b08e91486a9db7b4a2872  gcc/config/lm32/t-rtems
! d89a95144d3fe422f7f3362ab28146e5  gcc/config/lm32/uclinux-elf.h
! 90b54d1a9578af9dedc297c49f3a91b5  gcc/config/lynx.h
! 4cd94bbfa0df8b430946fbb42bbc549b  gcc/config/lynx.opt
! e428a90946204716e80ce22a4b560372  gcc/config/m32c/addsub.md
! 47f0b445a5e693a0b54544542e1571b8  gcc/config/m32c/bitops.md
! 54fc9e7852c3ea5e1c36b1b08b6fa0e0  gcc/config/m32c/blkmov.md
! 674d7bab7320e8d528e2eccbb1ac0042  gcc/config/m32c/cond.md
! c7674796c75d8ad9cd40d39ed3b50a55  gcc/config/m32c/constraints.md
! 9c311f6d17208eab7af02c00e3701939  gcc/config/m32c/jump.md
! d6d2cafc026b61b1defe20fecc9220f3  gcc/config/m32c/m32c-modes.def
! 84f49b5f6101faa487a46a9903bf8095  gcc/config/m32c/m32c-pragma.c
! 7ac47b862385023a753130f1741385c8  gcc/config/m32c/m32c-protos.h
! 4bf0cc6630d7a27550ef2ad373005d4a  gcc/config/m32c/m32c.abi
! 369ed63e743f2e6dc5c57163c77b8266  gcc/config/m32c/m32c.c
! 547ab96cdb3fccd3036a7f8910c09ec3  gcc/config/m32c/m32c.h
! f89a9fc7d96e7c7f102c4151532ebeae  gcc/config/m32c/m32c.md
! d5ed2262ed393b81770d71113b6a9884  gcc/config/m32c/m32c.opt
! bf8377ef3cb1560a11180e400cb57287  gcc/config/m32c/minmax.md
! d3427c9cb9392447d18f97f5a0faae32  gcc/config/m32c/mov.md
! 4343b3e027e275240e0b8fea39f1cc64  gcc/config/m32c/muldiv.md
! f1367f2bdb36a818fef6c90045d213f6  gcc/config/m32c/predicates.md
! 2d5172cdf18e7b37c50ecfc51970cb0f  gcc/config/m32c/prologue.md
! adfcf706fdcdb2258b606f14b4983e3c  gcc/config/m32c/rtems.h
! 1789133f097f7755832003086669923c  gcc/config/m32c/shift.md
! f547db56014794de7b828c9e4cbb716e  gcc/config/m32c/t-m32c
! ac109a8952f74dafe7a33f47281a96e4  gcc/config/m32r/constraints.md
! a669ce2332bed7fc87390074fa4655c6  gcc/config/m32r/linux.h
! 3afa51467fd3db4a20572a39e9cd849f  gcc/config/m32r/little.h
! 7b99f2129c49b0e0949d8fdb82dd22d4  gcc/config/m32r/m32r-opts.h
! bd9ff15232144f12eba7b9cc0203b8b7  gcc/config/m32r/m32r-protos.h
! d4d2af0884a7f52ad1420e8bd6bfe4bb  gcc/config/m32r/m32r.c
! 7e08acfc413e1fab8e39499ba22a8cf2  gcc/config/m32r/m32r.h
! 1610a82df8226ec8e5aed17cc2ee0e8a  gcc/config/m32r/m32r.md
! c0e15c2f4aef500051a7d69cee96230d  gcc/config/m32r/m32r.opt
! 1610d4e4ed0054c0b1b281ed45eea167  gcc/config/m32r/predicates.md
! 23837cd72451619be5524ed926746088  gcc/config/m32r/t-linux
! 2ba142891be06df624e282dacd3dbe9e  gcc/config/m32r/t-m32r
! 6e8f1ee69340828cd87acc7338798a34  gcc/config/m68k/cf.md
! 4d3a41bd6b43dbb6c7f2e9e80ec15459  gcc/config/m68k/constraints.md
! 3910eec4358e72d8979c7e165be0f92f  gcc/config/m68k/genopt.sh
! 8b9c586059a93b289e2dee790686d8e1  gcc/config/m68k/ieee.opt
! 7e0ffe1320f3072609474a49df88d077  gcc/config/m68k/linux.h
! 028f741927f79cd2837558cf14d61769  gcc/config/m68k/m68020-elf.h
! 58efa2b67f7203fa48844062b06e66e0  gcc/config/m68k/m68k-devices.def
! b1db06979b224600819cfbcb20cd518b  gcc/config/m68k/m68k-isas.def
! 913fec9fdbc877572813aaeb9471dd3e  gcc/config/m68k/m68k-microarchs.def
! 4926649f1a0d92da3a6ef4263fd55585  gcc/config/m68k/m68k-modes.def
! 3bc391f6d1e14710768e4c7a7e1c95ab  gcc/config/m68k/m68k-none.h
! 9fed04119ea51bf696a0d144d70a2723  gcc/config/m68k/m68k-opts.h
! 217212b0a691f1e564cd0dd8ee294033  gcc/config/m68k/m68k-protos.h
! 4173ac9a3fe95be35cd7be6eb1d8a91c  gcc/config/m68k/m68k-tables.opt
! f08e5acd9abc8fc2a7e62ebfde4ab9dc  gcc/config/m68k/m68k.c
! 4aeae0f1e5976e432e616efde63222ca  gcc/config/m68k/m68k.h
! fbab0b5694c481b2a9c5e24032e28f01  gcc/config/m68k/m68k.md
! 565309f5eb9bdf5f3d9d4b99309203f5  gcc/config/m68k/m68k.opt
! 331a39941ef2a5d63ca2081fd786bab5  gcc/config/m68k/m68kelf.h
! 6c1079c191ba9f61909753a73ce87fbc  gcc/config/m68k/m68kemb.h
  c0472199959f16fcb58702880954da6e  gcc/config/m68k/math-68881.h
! c3272b7ef61869d216e3195e22776955  gcc/config/m68k/netbsd-elf.h
! a5d6738c619e454815898cdbe556c95f  gcc/config/m68k/openbsd.h
! bb816eac42d5d0617c95cb66556f7470  gcc/config/m68k/predicates.md
! 81f19a6363c9a64e145850ad9ac2bf57  gcc/config/m68k/print-sysroot-suffix.sh
! d054539d389aaf83237a6dd192c215c6  gcc/config/m68k/rtemself.h
! 47cd682ccdcc38f2c84471bc58d080ac  gcc/config/m68k/sync.md
  19d5ed41f3394c9423ff3afe64804076  gcc/config/m68k/t-cf
! 6275b1ef3dc06455d9e890528410d92e  gcc/config/m68k/t-linux
  baa4595148bafa6426b8d665881ced45  gcc/config/m68k/t-m68k
  c8278c25339f71d746d91a193efd6cea  gcc/config/m68k/t-m68kbare
! 6ef63b25b33ef0450db837713d723fc6  gcc/config/m68k/t-mlibs
  0fd519d41689e5af998ca53a2f11e7d2  gcc/config/m68k/t-openbsd
  2919d876e31e6c4e0955d8cd4be5ce28  gcc/config/m68k/t-opts
  2899d62cd61c46fe504594a232959581  gcc/config/m68k/t-rtems
! d0586d5bd498dee957f5043085cdc9e8  gcc/config/m68k/t-uclinux
! a427cd9703782966dc6f8400062afd3d  gcc/config/m68k/uclinux.h
! e8f97619211aaf64aec98e048c678e1a  gcc/config/m68k/uclinux.opt
! 77e710eabf01e18ef202af401259c0cc  gcc/config/mcore/constraints.md
! d17938e09255a2ac891b243312d4d204  gcc/config/mcore/mcore-elf.h
! 466eedf425cb70cddd3e37061143f366  gcc/config/mcore/mcore-protos.h
! 0b3cb0198c72fee734a3658d662aa415  gcc/config/mcore/mcore.c
! c9ce8343b0564c937778f6df0462fdce  gcc/config/mcore/mcore.h
! 55a7346a3a20bd1f6c7c9892a0095beb  gcc/config/mcore/mcore.md
! d98efb3aa4b0e65c7e73f3081dfc90b4  gcc/config/mcore/mcore.opt
! cce6b84f7d00ec51db0815b44273df5a  gcc/config/mcore/predicates.md
! bc013a1bc286b75d10ff7ba0137bcc74  gcc/config/mcore/t-mcore
! 1d1cf0d2d7e8c8a712c22e4e37f0fdd4  gcc/config/microblaze/constraints.md
! 963ec8555d7563a69f6e048eaba71b8d  gcc/config/microblaze/linux.h
! c746f80a4a55321d24ab30a7b13fffa4  gcc/config/microblaze/microblaze-c.c
! 5b0d23a260859ac512e7e84052c26702  gcc/config/microblaze/microblaze-protos.h
! 5f2f7454e396e29d25793d0c24650709  gcc/config/microblaze/microblaze.c
! 3ee4b1ebff70754549b930ea2e7cf113  gcc/config/microblaze/microblaze.h
! ee8a1232a7d066c2f40fb3bf01f2cee2  gcc/config/microblaze/microblaze.md
! 17c0f30b7486d260824baf8ff500ca45  gcc/config/microblaze/microblaze.opt
! 7eb8db8a0e797275d2d317ad28ff4a60  gcc/config/microblaze/predicates.md
! f04249f22d863c97e3b30defcb4223d7  gcc/config/microblaze/rtems.h
! dd7a4dee379bb579bf0535a58b00480c  gcc/config/microblaze/sync.md
  17818a25ae3112098cd91d698e37f0f7  gcc/config/microblaze/t-microblaze
  63ccba4e7f745d36609d7c129bac6288  gcc/config/microblaze/t-microblaze-linux
  a8b08640136e3e7712d2278eb84c21d9  gcc/config/microblaze/t-rtems
! 94a7ca3235dfb2004e22ded3c5bcecec  gcc/config/mips/10000.md
! 853dd7145a5eff6b9e59e045f5dd4975  gcc/config/mips/20kc.md
! 73e05ae993306cb26d46005100c8d40e  gcc/config/mips/24k.md
! cbaffe173244c00ceb3cee26daec1661  gcc/config/mips/3000.md
! bd8b2d9bb2d5dbbabe120230da05b180  gcc/config/mips/4000.md
! 8b3b5d422844492f208cffe1a37e2225  gcc/config/mips/4100.md
! 2045483f9742deed0eed7ad05d875de8  gcc/config/mips/4130.md
! 898ff797a1e2213cc81558d2d426f2fc  gcc/config/mips/4300.md
! 84f5e7ef223cc494c7880912beec0081  gcc/config/mips/4600.md
! 91bb7e6a232f15452b1aaa1e0f6d5988  gcc/config/mips/4k.md
! 17aa373d9a4714e8b8389272b1f4538e  gcc/config/mips/5000.md
! 58a5b5509a8cf81e78dfdd9386b740b8  gcc/config/mips/5400.md
! f6c7e0792b22eaddc4390e8f5ee3cb62  gcc/config/mips/5500.md
! a8aa0362ef10c7a6aa7247b7304df21a  gcc/config/mips/5k.md
! e19a6ada28e694b0a2062e2b93c7308f  gcc/config/mips/6000.md
! 4723d8edc91147fdfd94034bf87bfed0  gcc/config/mips/7000.md
! ed15db403cce0fc1265d4a93224447b9  gcc/config/mips/74k.md
! bf7471202aa365f5a574abe423b48590  gcc/config/mips/9000.md
! 0e3b7d8ea60ec875399cb5a7b3d61ee8  gcc/config/mips/constraints.md
! e06c959e697156c2cf4b80449f29e3d1  gcc/config/mips/driver-native.c
! d816ce88e7311c9e9cb60abcd0995bc7  gcc/config/mips/elf.h
! 43938fef21cfb86413bf0963df846c76  gcc/config/mips/elfoabi.h
! ba0a583e4c5dbb6e78f552010f72e2f1  gcc/config/mips/elforion.h
! 0a22502227e836d747f04b698af57276  gcc/config/mips/frame-header-opt.c
! d169694e040fec2d904dfdcf7ee2248e  gcc/config/mips/generic.md
! f135adb6b04858214ea18f00c07195a5  gcc/config/mips/genopt.sh
! 3fe4cd1db15e4cb09b618f2f2f6fdb90  gcc/config/mips/gnu-user.h
! f6a6aae7c06897d84bff2ec92018746c  gcc/config/mips/i6400.md
! 2764edeaa855247eb97dfe78283efb8f  gcc/config/mips/linux-common.h
! e9a07575921aa25a35b88757b1bd0201  gcc/config/mips/linux.h
! 8f065df74cce6c9ca7cfda9d598d7854  gcc/config/mips/loongson.h
! 19821fdd1c38971323030663fbb62001  gcc/config/mips/loongson.md
! c95dfbcec372b61ab3a9d39fc333b5de  gcc/config/mips/loongson2ef.md
! 7d7cf2348e8a44b685ecf777555684e0  gcc/config/mips/loongson3a.md
! 1b6f3d890d930b5d75000cecafb1233c  gcc/config/mips/m5100.md
! 0bb16ea791740d158e0e898595e4f357  gcc/config/mips/micromips.md
! b19971f76915548ca70197a402492815  gcc/config/mips/mips-cpus.def
! 5b4649dddc7159b849a35ec8b2e8faf4  gcc/config/mips/mips-dsp.md
! 99104728b61321a882546da27d058b64  gcc/config/mips/mips-dspr2.md
! 1037487cce39582a00daa0f65a124a99  gcc/config/mips/mips-fixed.md
! a7aef357bc39e57289a6b34d4421ec58  gcc/config/mips/mips-ftypes.def
! 560034e45feb20f0014e8c6ccc600fe5  gcc/config/mips/mips-modes.def
! ceb028ea889ad54c1668c2760ed3da99  gcc/config/mips/mips-msa.md
! e445b9085b34bfb8ac7340c8b0100222  gcc/config/mips/mips-opts.h
! 1f1dfc30a2b4d9b3da1c1ff3d5005c93  gcc/config/mips/mips-protos.h
! b7b24d1c6d46542dc69db38f51eb9a0f  gcc/config/mips/mips-ps-3d.md
! 71c13cd785a0bfc66da7520a29acf928  gcc/config/mips/mips-tables.opt
! bba12ac54a16e2dbc9d8aafd76b0221f  gcc/config/mips/mips.c
! b3421a778139c0bfdc79eef8f3195b22  gcc/config/mips/mips.h
! 039c5b2368c2459b0d3ce61ff2cfea14  gcc/config/mips/mips.md
! aa23ed139e99f8d48ce446491d3975d2  gcc/config/mips/mips.opt
! 9481be22d8a0fa4d22e4bcd5b748ddb3  gcc/config/mips/msa.h
! 44b8260beeb37f5949afeb7b0d5e3550  gcc/config/mips/mti-elf.h
! 29606dcf629dfe0453beb7c774c09bb2  gcc/config/mips/mti-linux.h
! e25caf6e5a093c74ce32e986ee8194ce  gcc/config/mips/n32-elf.h
! cfd1b17cac95f717566ecbfbfdc60540  gcc/config/mips/netbsd.h
! 6368af6e5705968ca3618c1681e4a73e  gcc/config/mips/octeon.md
! 84bb13902644c97884ceae4cf4af110c  gcc/config/mips/p5600.md
! 2076d628b9e45cca66581ea97818ec9f  gcc/config/mips/predicates.md
! ef7fba05f9e47489b7eda9a362fbc494  gcc/config/mips/r3900.h
! 62918225178e24d113ae89e203e39a3d  gcc/config/mips/rtems.h
! 6c5f0bb3d58f419549896243bbc289b1  gcc/config/mips/sb1.md
! aba562f27263283c91d59b1c0dad9db7  gcc/config/mips/sde.h
! d2213a61ad5190bea82c33a5ac9dde75  gcc/config/mips/sde.opt
! e29fb1dd09113b3ff7d482a2c48b6f79  gcc/config/mips/sdemtk.h
! 8918d84d98ec0a66d2fdfd6fec297235  gcc/config/mips/sr71k.md
! 65a0a16fbd6176e2030dce6966ad2f64  gcc/config/mips/st.h
! 2e4c39e9b86879914cdbafdaff406a0c  gcc/config/mips/sync.md
! 4709eb5f1a14c5f6e1d3f5ac8394e4a0  gcc/config/mips/t-elf
! a68fc2fbaa736c207058acfca2f38ddd  gcc/config/mips/t-img-elf
! 083315ff3f17a25491b479b37c396947  gcc/config/mips/t-img-linux
  f99fd825138aaee60804b8915e20d22e  gcc/config/mips/t-irix6
! 348e044a452b57655210642173aa8773  gcc/config/mips/t-isa3264
! e7c35507e2052bb8fefafb37c699a37c  gcc/config/mips/t-linux64
! 82a1bcfbcba1531fc72f2573a6340ae9  gcc/config/mips/t-mips
! 68b7f0905d1e48acd0ca2916848f44bd  gcc/config/mips/t-mti-elf
! f2d509089d784a26acbc344683f86e06  gcc/config/mips/t-mti-linux
! 873f0de79be20b2e321965195b6e97fc  gcc/config/mips/t-r3900
! 7caa1904eb35fb14a2c16bde86e87cc7  gcc/config/mips/t-rtems
! 46831a125ffabb1ab2cd2ba17ba66943  gcc/config/mips/t-sb1
! e860b94ae51120483c84d56496f77252  gcc/config/mips/t-sde
! 6b52bce5e5579b32c082d995de868e59  gcc/config/mips/t-sdemtk
! 3e3a9f9f386ba55acc7f2096522e9a45  gcc/config/mips/t-sr71k
! 4cffa03af284a2dced96b098e36e8c70  gcc/config/mips/t-st
! 95da4cc5706b3d68e4bf1f29c0c59c8c  gcc/config/mips/t-vr
! a53ef2084c187095d7942b8ccf6f2f41  gcc/config/mips/t-vxworks
! 2a53dcfe9e859cbacffdb96f846eb1b8  gcc/config/mips/vr.h
! 9166145ce8dbbf8b7f9d8fcc29adea3c  gcc/config/mips/vxworks.h
  28d4de1043946a571cca5f03b486aafe  gcc/config/mips/x-native
! 61a888ead8f3ede62b0537a3fa73d853  gcc/config/mips/xlp.md
! 32e8084f9348067d418ed35c2a9d52f9  gcc/config/mips/xlr.md
! 387fad4b295a950f1fa365928b6547d8  gcc/config/mmix/constraints.md
! db53dfb558ba8472017e4c5e70f7deec  gcc/config/mmix/mmix-modes.def
! d79d29df580ed53488173a6f355583a4  gcc/config/mmix/mmix-protos.h
! 8c79c089cea8849b2994f7c4b737ad4d  gcc/config/mmix/mmix.c
! e3038e7b848e7efa8c4bda18398db729  gcc/config/mmix/mmix.h
! a97dd605b8309a4c0cb7272e84cf8b1b  gcc/config/mmix/mmix.md
! a5f6d08d6b544175217773bf23536462  gcc/config/mmix/mmix.opt
! d900972d449a06f77cb85d4606050f3c  gcc/config/mmix/predicates.md
! fb5335232a72544b57a74cf20fce4e86  gcc/config/mmix/t-mmix
! 60e1a466b937f0559f61f8ea2a63785b  gcc/config/mn10300/constraints.md
! 22cd3fd444254ced6f448bf05850892e  gcc/config/mn10300/linux.h
! 36fd3dc9fe51cb7def7d816a937701cb  gcc/config/mn10300/mn10300-modes.def
! ea244314671d0f48ced43b14f2837d4a  gcc/config/mn10300/mn10300-opts.h
! 075c1d58b8c0af737bf9741868b86eb4  gcc/config/mn10300/mn10300-protos.h
! 5eb5fa293f06958c90851bb4ea268c64  gcc/config/mn10300/mn10300.c
! 385f693f30d8ac5d556c084c1ed26ce8  gcc/config/mn10300/mn10300.h
! 0719d93bb54892ea1c494c8e6cee15d1  gcc/config/mn10300/mn10300.md
! 8003870c48fab103940f97174a588055  gcc/config/mn10300/mn10300.opt
! 820320dc8e852c83d635047f577ad378  gcc/config/mn10300/predicates.md
! 0993a1b28e3ad738d6b76b8312d84054  gcc/config/mn10300/t-mn10300
! c941cbff85a24231be9e64b6670a293e  gcc/config/moxie/constraints.md
! bc6065161d0a2ffb692dcbc3e4105c8f  gcc/config/moxie/moxie-protos.h
! 99f77e80fa49e59ee91da3e2e7e339c1  gcc/config/moxie/moxie.c
! adaedd5bbbabad90c2321705f60a5f6d  gcc/config/moxie/moxie.h
! 23eec872dec34fe1ad2c17e8e534d9a3  gcc/config/moxie/moxie.md
! 5e1461441d6a74c6847810b55ed7adc0  gcc/config/moxie/moxie.opt
! a20a3162279483fdb4a7e6c877323078  gcc/config/moxie/moxiebox.h
! 97591d3ff849c421c9d7129acaec0cae  gcc/config/moxie/predicates.md
! 10c6b0d67861deff8c806f3c9e5f033b  gcc/config/moxie/rtems.h
! 83c522ff1e24358778969bbed49ba8c3  gcc/config/moxie/t-moxie
! 06a2af6cf1920a27ff258d7a2eff3b3a  gcc/config/moxie/uclinux.h
  f276505b774e975b88b6c90362783e73  gcc/config/msp430/README.txt
! 5795537a23f1435ff3d13c810b625980  gcc/config/msp430/constraints.md
! 7fd2dfc1d32a4879fae70d59d79fe70e  gcc/config/msp430/driver-msp430.c
! 95191b1e4b2c53baceb044b4aa9d4404  gcc/config/msp430/msp430-c.c
  e081143def3cf3a59cd1181fc9162d41  gcc/config/msp430/msp430-modes.def
! d726d631d2bc7f637eb31b84e89b6a4f  gcc/config/msp430/msp430-opts.h
! 0557b7169bcfc35739235121d06d2bdb  gcc/config/msp430/msp430-protos.h
! 927589d2b536021e5652d318b232473f  gcc/config/msp430/msp430.c
! b449799389faf2d4f5189e7a23abc554  gcc/config/msp430/msp430.h
! 45aaefde9827e530c98e26f531cd993b  gcc/config/msp430/msp430.md
  9d06cb84c3cb0394a1611444eafc29a8  gcc/config/msp430/msp430.opt
! 5d678975740e3e9cafbcf0df3031d7a6  gcc/config/msp430/predicates.md
! fa7beda0c681e5ccd731acb9caf518dd  gcc/config/msp430/t-msp430
! 10796851d5488fa139c8d9adf564ca61  gcc/config/nds32/constants.md
! 5eaeacb5ed5f95e350840656e202242e  gcc/config/nds32/constraints.md
! 2e9561f0a08e9132a005179c7634dfbb  gcc/config/nds32/iterators.md
! 545385b1ca050d7259b19764c983fbda  gcc/config/nds32/nds32-cost.c
! c09bde92bcc25055a095fc7c44f769f3  gcc/config/nds32/nds32-doubleword.md
! a88893d4639a86c2d282220aee973c6b  gcc/config/nds32/nds32-fp-as-gp.c
! aad93762e6f7349c935a2a43cba10203  gcc/config/nds32/nds32-intrinsic.c
! 2dec79abd3c8b29b87ea6c7e6a8b4909  gcc/config/nds32/nds32-intrinsic.md
! e9b9615056d7236d73b4666dad1c67a6  gcc/config/nds32/nds32-isr.c
! fdf6af98277ca05dd021779532dcd75a  gcc/config/nds32/nds32-md-auxiliary.c
! 6e96456dd9963e18398eeea581241693  gcc/config/nds32/nds32-memory-manipulation.c
! 229a9653a2493de663ef826c31919114  gcc/config/nds32/nds32-modes.def
! a215f346fde6431d8cbc2a97f4ab4c9d  gcc/config/nds32/nds32-multiple.md
! cc211c2ff8cb7bc83363aec4387ef3ca  gcc/config/nds32/nds32-opts.h
! 8cc4703bae46d1bd6ab1dbc379d053bf  gcc/config/nds32/nds32-peephole2.md
! b0c0b0b6c3cb3cd24f16f543810ef661  gcc/config/nds32/nds32-pipelines-auxiliary.c
! fff75a19a1402e8288eb4a9a9a98e8f1  gcc/config/nds32/nds32-predicates.c
! 09db1d06810c3af272ad4b1acf4a18ce  gcc/config/nds32/nds32-protos.h
! 3798cf16542eaa058f9f27466bef32e7  gcc/config/nds32/nds32.c
! c9c022e109a01aab7ec6791952114ad6  gcc/config/nds32/nds32.h
! 1668882cc7e511ac87437fe386f52adb  gcc/config/nds32/nds32.md
! 3d5e3f9934556ef25a89aa6cf75f9c1f  gcc/config/nds32/nds32.opt
! 475a0432f8369854a14db10e6714677d  gcc/config/nds32/nds32_intrinsic.h
! 207137b8870648bfcb7c98ccc05f1f69  gcc/config/nds32/pipelines.md
! ceb2ca3fc3e9d3ff85474e68683d4d1b  gcc/config/nds32/predicates.md
! 7bda2b9ba856ef35bacabf9106d7fe27  gcc/config/nds32/t-mlibs
! d24587b0c06c913cc589590f58da9f33  gcc/config/nds32/t-nds32
! 33e4807e8c585e2a9bbbc4c5364dbc5d  gcc/config/netbsd-elf.h
! a93d7f5748efd9df34afe2e04357243b  gcc/config/netbsd-elf.opt
! d8b38030a960e0e756336943c56fccd4  gcc/config/netbsd-protos.h
! cae7d314173afb859eed801ace5420be  gcc/config/netbsd-stdint.h
! d297f70e7803a48a5f20d47af06bf306  gcc/config/netbsd.c
! ac8069101e31177773da5444d4602f1c  gcc/config/netbsd.h
! 67ff693223ac2acc4ed38ffd0503e0e0  gcc/config/netbsd.opt
! 904f8fc1b202c498bdb0b974717b3034  gcc/config/newlib-stdint.h
! 7f3b9de9d0045cf761af9a3f1a77096d  gcc/config/nios2/constraints.md
! c76162a84efc263caad24a0728920caa  gcc/config/nios2/elf.h
! abb68e63e8149a746ae8a8e7fe6a8356  gcc/config/nios2/elf.opt
! 05d41cde9dd373cf44145590c9eea8dd  gcc/config/nios2/ldstwm.md
! 97522c36ea7907665023cc701af64e9a  gcc/config/nios2/linux.h
! 41e87b4efee8e74c4f86bb94e797be28  gcc/config/nios2/nios2-ldstwm.sml
! 10a836948db968e5e7e0a1a6bf23b35f  gcc/config/nios2/nios2-opts.h
! 177bd0b8e9cc1f29831d0d23b972b0db  gcc/config/nios2/nios2-protos.h
! 9b945f57f30a31d8f732e46f564a7b0b  gcc/config/nios2/nios2.c
! 56a45bed6c232d1cd22ea18b13a56187  gcc/config/nios2/nios2.h
! 1fba4a4092c09d585fc3f6f905ba7f59  gcc/config/nios2/nios2.md
! dd160b61f47da73fbcfe274247ad51a6  gcc/config/nios2/nios2.opt
! bdca0d17af48e0661b1ca78a70e8eab3  gcc/config/nios2/predicates.md
! bbccdcf812f8a0570b91878c40a1ac35  gcc/config/nios2/rtems.h
! 4cebd225fc493f046c198ec07a60099d  gcc/config/nios2/sync.md
! 20ad2e31a626e572bd886b05ce9f9b1b  gcc/config/nios2/t-nios2
  d835d08884a2846e70bef505767bd3f1  gcc/config/nios2/t-rtems
! 1a77021617fa509b4193a0173cc0db80  gcc/config/nvptx/mkoffload.c
! 0528c01cacf3d6d78c2d572ddce1acd2  gcc/config/nvptx/nvptx-protos.h
! 1139522105141d95713526d0237b4b20  gcc/config/nvptx/nvptx.c
! eb1454b59c8b5e977859ef9a164f30d7  gcc/config/nvptx/nvptx.h
! 33ff98eff43db716166e6eb7701d7444  gcc/config/nvptx/nvptx.md
! 581897eccb2823f57fe3e4d7f48dfc99  gcc/config/nvptx/nvptx.opt
! a1f3680cd90c0f5d8cb791a5c562a2a4  gcc/config/nvptx/offload.h
  161bfe9f99d4d18fdb67553220ba175a  gcc/config/nvptx/t-nvptx
! 3ad948b0b5c10bc313a92ad9bf615428  gcc/config/openbsd-libpthread.h
  3d4a70d0decf61f1fba17df545cea7f5  gcc/config/openbsd-stdint.h
! efe1065ec9cadd5ca35c4d5e1842146a  gcc/config/openbsd.h
! 7fff0f2703428d6c34993b1c0b479788  gcc/config/openbsd.opt
! 92606529c2abffc26a2861e6f3fd6738  gcc/config/pa/constraints.md
! 65ab22d7a8dddb4e4509315c6ad1fdf6  gcc/config/pa/elf.h
! e040b9b9ce66a2bb73cdeda3186567ec  gcc/config/pa/pa-64.h
! 8890cf800fe13906d81420e08458c284  gcc/config/pa/pa-hpux.h
! 4282a3593024aa0613576db68270ed1b  gcc/config/pa/pa-hpux.opt
! 82b1583ed4dce4c1fe012f775e1a3f2a  gcc/config/pa/pa-hpux10.h
! d13aac27f7874129c1169fd3587041d4  gcc/config/pa/pa-hpux10.opt
! 47bbc72c975d78e220ebc95fdfa73e6a  gcc/config/pa/pa-hpux1010.h
! e1487e88f64a5ef4dec06a122ef61c44  gcc/config/pa/pa-hpux1010.opt
! 2161b66892d8eefb94cc1ae58cfb222d  gcc/config/pa/pa-hpux11.h
! 26f883517a32cfef4e1aab1b7fe79f6d  gcc/config/pa/pa-hpux1111.h
! 7603ebcef3b5cd37f92612db464046df  gcc/config/pa/pa-hpux1111.opt
! a56c0b661e5d14c15b187b6f7f98c380  gcc/config/pa/pa-hpux1131.h
! c8bdb898ad4d089b888a6817f5d2c2d7  gcc/config/pa/pa-hpux1131.opt
! f9eb8215e990039206aca7d2674044dd  gcc/config/pa/pa-linux.h
! 1a0c819921642abbf707dea8f98cd627  gcc/config/pa/pa-modes.def
! d4df9eb3c1cf138edc94444846091689  gcc/config/pa/pa-openbsd.h
! 7bc5229cf1c43545830a2c4703b2368e  gcc/config/pa/pa-opts.h
! 946b59b66fba818b8c8b48d21d19f78c  gcc/config/pa/pa-protos.h
! e9fa6ba5edde00fefb905b0b190a2f68  gcc/config/pa/pa.c
! 2ad9edafd8324971bb2304a432029e16  gcc/config/pa/pa.h
! d8c2dd8006ef24c121cb8487f5e847a0  gcc/config/pa/pa.md
! 8bd9cf9ffd45cd39f633111f1c7a35c2  gcc/config/pa/pa.opt
! 2273f41fcab737d5874659b113de7dd6  gcc/config/pa/pa32-linux.h
! eb52a472e9a1cd97e8c83b89c65a6b84  gcc/config/pa/pa32-openbsd.h
! 2bac80d704e012f9734f2fb7fdc70770  gcc/config/pa/pa32-regs.h
! f30ba8cf955f527b29cd6c1f71e2a880  gcc/config/pa/pa64-hpux.h
! 8c9fe7c6a1af3d40fc79cb2993b1d68a  gcc/config/pa/pa64-hpux.opt
! 971d298330b45b46f447b588dc366b76  gcc/config/pa/pa64-linux.h
! 2a03755ea31cf0f1898661edab261715  gcc/config/pa/pa64-regs.h
  a9a6afd79b827565ffb8de8330b4cfe6  gcc/config/pa/pa64-start.h
! 2e3efb1d182abb8a14ef786dbd1cf44c  gcc/config/pa/predicates.md
! cd300ab1097ed3e527087725bcb30929  gcc/config/pa/som.h
  4104beb84cb7f3a8a5915652c3da66c5  gcc/config/pa/t-dce-thr
  6fd25f8c665d2d7390ea94c01dcb8e34  gcc/config/pa/t-linux
! 8ce3c01d0c21a0323103f1ae3af16d82  gcc/config/pdp11/constraints.md
! fc3f77d7827082cde1e4ab54596f9181  gcc/config/pdp11/pdp11-modes.def
! e63cc4b8bd6cc34494218261a50bec15  gcc/config/pdp11/pdp11-protos.h
! 164050f5a3d851d76553a50f4e57e08c  gcc/config/pdp11/pdp11.c
! bd56747043139fb468b8b39532bb6c1f  gcc/config/pdp11/pdp11.h
! 9853aaf3f0608691c55b61ca425cc4bb  gcc/config/pdp11/pdp11.md
! d5da5298cf68acaabee5e1af4fc09a72  gcc/config/pdp11/pdp11.opt
! d375d5d5a3ff9d492094874d61dd032f  gcc/config/pdp11/predicates.md
! 093e0cd6260364c6a3d828ab904ae82c  gcc/config/pdp11/t-pdp11
! 9f05e2e25addda2636bc8fda4a89fe1b  gcc/config/phoenix.h
! a068510ec9a28048681e78b9f613e1b3  gcc/config/print-sysroot-suffix.sh
! c5879488e4025f0306739cb8a7f2e17e  gcc/config/riscv/constraints.md
! 246648c72057b83cee3bca67721dc0f7  gcc/config/riscv/elf.h
! d45b22a8b6d427c1f1f1d6033877c69e  gcc/config/riscv/generic.md
! 3c2a77c271439e18cc6ed65e7643fd23  gcc/config/riscv/linux.h
! 2552259963f9ef19a088eae3912e9a24  gcc/config/riscv/multilib-generator
! f1a59ba1de4c68bd22c730bbb7f4e6f2  gcc/config/riscv/peephole.md
! e5b950e2ba93a9abed5eae7ea6d7f65d  gcc/config/riscv/pic.md
! 46a064db725287b4715bc45ee31cd292  gcc/config/riscv/predicates.md
! e090e9344fdb28abde9dcb58ff70edd1  gcc/config/riscv/riscv-builtins.c
! 83c301cf1a48e519076d1bd0a805e071  gcc/config/riscv/riscv-c.c
! ea32e9af748a55f08da5b1a986507ff3  gcc/config/riscv/riscv-ftypes.def
! c258c856bbdcb2c03c099045727b3bce  gcc/config/riscv/riscv-modes.def
! 1c01dcde782026e75e42b703830e26a6  gcc/config/riscv/riscv-opts.h
! afcb0b6bd11e75463251812bc095b764  gcc/config/riscv/riscv-protos.h
! a00bc06ce07c569dac40cdf99f4944bb  gcc/config/riscv/riscv.c
! 5ce20e6e882bed3371be9de601dfc929  gcc/config/riscv/riscv.h
! f106e4f9b06d939a4dc948ade4ad0de8  gcc/config/riscv/riscv.md
! a4b78c217510867188e733a0bf929792  gcc/config/riscv/riscv.opt
! db6e4e3dccff20c5a085d7f7eb68f39a  gcc/config/riscv/rtems.h
! 5ed01b941d66d7daebb31051be917524  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
  976dd460f5afbd591b0d2e626d74eb51  gcc/config/riscv/t-riscv
! 99eaa2a250ec3bf386702d662da2e347  gcc/config/rl78/constraints.md
! e52f25dc42c914225c40de5102189ae9  gcc/config/rl78/predicates.md
! c536706c2f65f56a934ee9f8ca786dba  gcc/config/rl78/rl78-c.c
! 627c8e29901fa7af5b750205e753725b  gcc/config/rl78/rl78-expand.md
! 342f927ef6796d318f9e60f30fdcabda  gcc/config/rl78/rl78-opts.h
! aff83a0a1f236e155fd75a57c4de878a  gcc/config/rl78/rl78-protos.h
! 76eb51c14569f90d0023739f7d37433a  gcc/config/rl78/rl78-real.md
! 0a4cbc7ecbeac0b3771caeefd1774953  gcc/config/rl78/rl78-virt.md
! a51386822c55299daa30cef1c23f5414  gcc/config/rl78/rl78.c
! f4277a40a87d7b281942c26c5922465e  gcc/config/rl78/rl78.h
! cb9b47251c982dad238166bc2f3a8e73  gcc/config/rl78/rl78.md
! ae52b2d447d7c1fe422431aa50c84ee9  gcc/config/rl78/rl78.opt
! 7d10f934bd5d570a7f64d1ee2002f91c  gcc/config/rl78/t-rl78
! 5ffec4553c5cf6977a1fdb083c915eaf  gcc/config/rpath.opt
! e2630f6f98d89d7e35910099fb869e70  gcc/config/rs6000/40x.md
! a436e277d8b69a8a4aa230063c4de7c3  gcc/config/rs6000/440.md
! 0c46f6b621970dcf34190ebad62a8acc  gcc/config/rs6000/476.h
! a5544b86844ad4c5eabcbd24f3635c29  gcc/config/rs6000/476.md
! 0dd49215854bf29c94d5aa1f733aea98  gcc/config/rs6000/476.opt
! 1de305ea1f983a5bfa1b067f3046a365  gcc/config/rs6000/601.md
! 17bcfde3d0a7f6370c12120f1cf0c5e2  gcc/config/rs6000/603.md
! 8243872f79af45b7977d9987414bbecb  gcc/config/rs6000/6xx.md
! ae45a5ee63e8dd4282218d03f736aef8  gcc/config/rs6000/7450.md
! ef79533c805adef63da74d9f764a3e07  gcc/config/rs6000/750cl.h
! 39f02140e89d4ed5fed581f03134f59c  gcc/config/rs6000/7xx.md
! 8fcc982e9163cf1378fe3ddec367166e  gcc/config/rs6000/8540.md
! c340d17e4840c30ed7ff85acc2208213  gcc/config/rs6000/a2.md
! f62cdb87cd499b10ef101810311bc7c2  gcc/config/rs6000/aix-stdint.h
! f7e4153819e3af4b3e0e53a22244b5c9  gcc/config/rs6000/aix.h
! d13c2da4db56aa2b22d164716edf47d9  gcc/config/rs6000/aix43.h
! 4f49e43e089783cf19457bbd62993313  gcc/config/rs6000/aix51.h
! 11b5b1f2822225b0b347fd74fe507087  gcc/config/rs6000/aix52.h
! 1fd6c513e262d578c4c588e75b2d4dee  gcc/config/rs6000/aix53.h
! c1fd5ce3265227f742dd7b50a4d4e860  gcc/config/rs6000/aix61.h
! c04eafaf5bcb98ef729029677f468111  gcc/config/rs6000/aix64.opt
! 9e37dfb2cfc128801986fe38da434059  gcc/config/rs6000/aix71.h
! 5b930da199cdf0fe45e6c13b194d3b09  gcc/config/rs6000/altivec.h
! 61f68216e0bfebd7e03d81fc2aca9ab7  gcc/config/rs6000/altivec.md
! d93efc51b48185e307aea24e46c4eff1  gcc/config/rs6000/biarch64.h
! 03512609c1d7d657e1fa9d336feaf3f2  gcc/config/rs6000/cell.md
! aae8b48d17c545633f55e8f1f6eb9152  gcc/config/rs6000/constraints.md
! ed845034a74aa76eba70cf51c5fbbe69  gcc/config/rs6000/crypto.md
! 8797ca2bcbcf839761b9d3259b4a6eaa  gcc/config/rs6000/darwin.h
! be03b51e2a326cffe7f46ad456aca0b2  gcc/config/rs6000/darwin.md
! 3a653fa4deb3dbcf0c18f756e27d0229  gcc/config/rs6000/darwin.opt
! 06cbeeac6e757925c70f07f04770bd9f  gcc/config/rs6000/darwin64.h
! efec264b3f79ef8045fa9c62522b81b5  gcc/config/rs6000/darwin7.h
! c5d09b685dc06366de0472e5ed5fa397  gcc/config/rs6000/darwin8.h
! eced47c9f0f77449e1dfd44057cd5d0f  gcc/config/rs6000/default64.h
! af67d5fc20f3c5695c275e364482816c  gcc/config/rs6000/dfp.md
! 91cabc9c3eb568b15e5ce6ca72a5ac5b  gcc/config/rs6000/driver-rs6000.c
! 31af9fd0d8567d00d33e55b29cb4cfe9  gcc/config/rs6000/e300c2c3.md
! fa145648a6e566ed4e8c2512fa6e5145  gcc/config/rs6000/e500.h
! a29385a64c177591ad91f740496897b7  gcc/config/rs6000/e500mc.md
! e3edb740b53c01953496192846ebc563  gcc/config/rs6000/e500mc64.md
! 7f4da771883fdbc34c70fc1106194fee  gcc/config/rs6000/e5500.md
! 621f8445e0bac047a8f00f707d62df69  gcc/config/rs6000/e6500.md
! 12edc6f9f0f5b173a90fc95e43bdd859  gcc/config/rs6000/eabi.h
! 259633d9f005f85badc15a4d48d123d6  gcc/config/rs6000/eabialtivec.h
! d036cedea2286411013c6a9c7d1ade43  gcc/config/rs6000/eabisim.h
! d99fd270461ce7b8acf8510a7bcff961  gcc/config/rs6000/eabispe.h
! 61421c62cf5c2bc8a80119e1bfc7cd35  gcc/config/rs6000/freebsd.h
! 08d1c154000f7b08ccc73b9d4c822cf7  gcc/config/rs6000/freebsd64.h
! 553e25fe1b82f2ddbe3b68e6be08ecb4  gcc/config/rs6000/genopt.sh
! 4ff4684772cc400d2814fcbd27ffa87a  gcc/config/rs6000/host-darwin.c
! 4ccbc7b3cdff34a26c50a0d9fe82d680  gcc/config/rs6000/host-ppc64-darwin.c
! 6d22d58ee59ec0ea22eeef8de6036628  gcc/config/rs6000/htm.md
! 56bd387fde1d81ab68d1fbdfe366d93d  gcc/config/rs6000/htmintrin.h
! ba76afeeb3262a4238ba83afcb24e4b9  gcc/config/rs6000/htmxlintrin.h
! 296bb597b64ec1a5d48bea5d654b7d29  gcc/config/rs6000/linux.h
! cd773f76dbe13aff955bff7fbb6785bf  gcc/config/rs6000/linux64.h
! 5cd4c702e244eaad6934f432f879a4ab  gcc/config/rs6000/linux64.opt
! c07e3938cea5c1e2c4e3b606c455c65b  gcc/config/rs6000/linuxaltivec.h
! e570be4fd78b195edcb6fc1e7e1664e1  gcc/config/rs6000/linuxspe.h
! 9d8f52aa30b3afaf5343c746fd64044e  gcc/config/rs6000/lynx.h
  0cc3c5f9101501b8253ce3176c3ffce4  gcc/config/rs6000/milli.exp
! e050a2983e674dab80507075be00488a  gcc/config/rs6000/mpc.md
! 78e355340e49057576cfc30477fe2672  gcc/config/rs6000/netbsd.h
! b627499bac4bff6eade814494d296567  gcc/config/rs6000/option-defaults.h
! 5d35b743048ef774bfddabdf711e5286  gcc/config/rs6000/paired.h
! 9a6b1a1ff8e887d34edbdf0fc483ea51  gcc/config/rs6000/paired.md
! 21bd98216fa5dbbf5af23457c6d1a688  gcc/config/rs6000/power4.md
! 8a0b9fe5532f1ddcbdf2d7ae91870564  gcc/config/rs6000/power5.md
! dd869cc9b425b4538a4a7af0426f208a  gcc/config/rs6000/power6.md
! be26c92327257b7174b227abbedfc38e  gcc/config/rs6000/power7.md
! 3f7daf2bc14d5b44ee4627a036ad89dd  gcc/config/rs6000/power8.md
! d72d32ce10b6b2d9d2b6c5c805ed926f  gcc/config/rs6000/power9.md
! 4e2bdc3bc17b2e623ca22dc682e8d765  gcc/config/rs6000/ppc-asm.h
! b5f65d5db893cf3ca33e181b35cae0f3  gcc/config/rs6000/ppc-auxv.h
! 526c8b9296818a28a1cd31ac9a1aa109  gcc/config/rs6000/ppu_intrinsics.h
! 7ece436730a2913c3f5980fe64a72454  gcc/config/rs6000/predicates.md
! 8487b3f36ba6463ad32647e69e060c6b  gcc/config/rs6000/rs6000-builtin.def
! 310ad712f43c44ae14112300fe48c9f8  gcc/config/rs6000/rs6000-c.c
! 9c6ba7f9ee5978eee63cfee9d7ee9c3a  gcc/config/rs6000/rs6000-cpus.def
! a46ae50924a00ed57cfdf730ebdb4237  gcc/config/rs6000/rs6000-linux.c
! 2824bf79a0d9619e1952e8d0a90aef04  gcc/config/rs6000/rs6000-modes.def
! f69e381c5811309d05da2313dfcec4de  gcc/config/rs6000/rs6000-opts.h
! 845709f631fc1fa80de2bbaf192bff40  gcc/config/rs6000/rs6000-passes.def
! 6484637023cec7e3ee43814bac0db0d5  gcc/config/rs6000/rs6000-protos.h
! 914f1dcbd8cea8da94281c72be417b47  gcc/config/rs6000/rs6000-tables.opt
! b9c0234d5772fef2080cb445f72297f9  gcc/config/rs6000/rs6000.c
! c461457c1525c2fb211d80801c9eef95  gcc/config/rs6000/rs6000.h
! d503be8617ff5f10f8cac13cf53d7234  gcc/config/rs6000/rs6000.md
! afd7ce6de7b3cecc76e6b46016989da4  gcc/config/rs6000/rs6000.opt
! 77b278cec2d9c926b955ebfc7075c240  gcc/config/rs6000/rs64.md
! d83c81edf739619fad01bf4449b95fcf  gcc/config/rs6000/rtems.h
! 608da58845a3fb30439833d8eaf211a4  gcc/config/rs6000/secureplt.h
! f5a43dfbd624a504c3556f91f9fa63c2  gcc/config/rs6000/si2vmx.h
! eb790531e65dd00658657ac8f5095bf0  gcc/config/rs6000/singlefp.h
! 437104517320979db11ecb88189f7c34  gcc/config/rs6000/spe.h
! 0f10b04b9473366a0aa02a94b4268cc9  gcc/config/rs6000/spe.md
! 6aea2d3f4c7f9feda711f14159b5db6b  gcc/config/rs6000/spu2vmx.h
! b855f9d150b04ab26a568aeae119621a  gcc/config/rs6000/sync.md
! 8ca53d428fb23f756564e17614d74193  gcc/config/rs6000/sysv4.h
! 71532a23e8bb814c2631d92ccd79d8ea  gcc/config/rs6000/sysv4.opt
! f0120a33d63c5afb74adb0c42642ac8d  gcc/config/rs6000/sysv4le.h
! 3b0a83e6efece3becf37788b124982fa  gcc/config/rs6000/t-aix43
! 4e5e62fc9ca79e8be6334a36d02423cd  gcc/config/rs6000/t-aix52
  f3250b9720d1149346f1ef8e21b52ea9  gcc/config/rs6000/t-darwin64
  636250eb91fc5dada4804efcd525fc02  gcc/config/rs6000/t-darwin8
! ed7a0e6c85b878f7685d4bb2622fd76f  gcc/config/rs6000/t-fprules
! 9ca620cc07b70b3e81304b66589f5916  gcc/config/rs6000/t-freebsd64
! 91ab90cceeb86332e94d0767b0e4d5f7  gcc/config/rs6000/t-linux
! 4cf21115558f0f90c10db918b0981b67  gcc/config/rs6000/t-linux64
  71c0a0470047f0171a3bb4c483eb2b72  gcc/config/rs6000/t-linux64bele
  489699b655594f05bae0b429fd261edb  gcc/config/rs6000/t-linux64le
  60f26523152f6a061a12cb17e987de12  gcc/config/rs6000/t-linux64lebe
! 5fea1d7afc4f592e48cd212c3372d023  gcc/config/rs6000/t-lynx
! e9f7e81634504696e91d09fcb679e70e  gcc/config/rs6000/t-netbsd
! b3a6d50652efdc2df7cda6c50ca133e7  gcc/config/rs6000/t-ppccomm
! 0fc4edcd9607402a78259eaf8ed62cda  gcc/config/rs6000/t-ppcendian
! 8653ebe1ded2158732c997c1b8e71181  gcc/config/rs6000/t-ppcgas
  1b8aba690a39464c4ea9c647d73d6983  gcc/config/rs6000/t-ppcos
! c4ea9dee3824134ac4714286e8799f50  gcc/config/rs6000/t-rs6000
! 497b48409619708eed5d475932305d9a  gcc/config/rs6000/t-rtems
! 538baa9071c5f649e985043f1eab9b5b  gcc/config/rs6000/t-spe
! 18fb072a76b179eb23d0e6339e892030  gcc/config/rs6000/t-vxworks
  f11925c88524d2fd457bf77944da1302  gcc/config/rs6000/t-vxworksae
  3f0601a68de7a0aee8264b538228d943  gcc/config/rs6000/t-vxworksmils
! 057a5ee9af5d10aec165aecb7b36e50e  gcc/config/rs6000/t-xilinx
! bf04bdab00faa0daebcc1114606fa4d3  gcc/config/rs6000/titan.md
! 245d1070b026f6c6557c6c7a5cca5166  gcc/config/rs6000/vec_types.h
! 6da3f51a86613143db6f52ff5feaa04e  gcc/config/rs6000/vector.md
! 8bac59f78d205a1de6e1d0fca09aee66  gcc/config/rs6000/vsx.md
! 58217d7c0d865013cdfc9ca30ba14670  gcc/config/rs6000/vxworks.h
! bf3883463c961f7b50a8f9809b6244ee  gcc/config/rs6000/vxworksae.h
! f0bd85bb4b12651513a250e3a8b690bc  gcc/config/rs6000/vxworksmils.h
  44a93bbae0ad5aba424ba7b97cc6914d  gcc/config/rs6000/x-aix
  af875b9bcb1ec1da1f33d5e34df8ca7b  gcc/config/rs6000/x-darwin
  9ffcc92667a16102520a017eabc7d7d2  gcc/config/rs6000/x-darwin64
  3f42272f4bcf66031ebf71a6c876adb8  gcc/config/rs6000/x-linux-relax
  1aff8cb3714b63b6c3367f552dae743f  gcc/config/rs6000/x-rs6000
! ce08413dbe80270635f8524bb45e4dd8  gcc/config/rs6000/xcoff.h
! 627cf68dda4733fe91c4fa5009766601  gcc/config/rs6000/xfpu.h
! 8f7b551f284f01ac11cb04642bf32184  gcc/config/rs6000/xfpu.md
! 9815d575c4b9c5164b7c71ebb9131aea  gcc/config/rs6000/xilinx.h
! 3b0f5bbcf190043c7d5e54450468e5f2  gcc/config/rs6000/xilinx.opt
! faa282f38a57aa842e478a82a58ccf8c  gcc/config/rtems.h
! 1ca508a55c58ccc9cabc5e8c00182c86  gcc/config/rtems.opt
! 494db96412be169420a8ecf32dfee742  gcc/config/rx/constraints.md
! a078bb5956c9dd698ed9fa963506351b  gcc/config/rx/predicates.md
! 92859e46f689b2f0a302db52083090c0  gcc/config/rx/rx-modes.def
! a994e8b76eb99cbd7d47a21ccafdf987  gcc/config/rx/rx-opts.h
! cffd323df4d31d4d52bcfc81e87f5cfc  gcc/config/rx/rx-protos.h
! ce579e3f87f37741b7bb1e43ff144a7c  gcc/config/rx/rx.c
! 49407a79a3a866efc08042244786ce38  gcc/config/rx/rx.h
! 46b2f0adf1ae963b441bf197696c4297  gcc/config/rx/rx.md
! 4778e7c2ee5bedb69c75b7e4d209087d  gcc/config/rx/rx.opt
! 0b4e015e9d3ae862ed5dde2d6c8a0e46  gcc/config/rx/t-rx
! ea36919fc1adc15812c1e6759392ae02  gcc/config/s390/2064.md
! 0d46cd6ea4c3979d3fd98f49dcb67272  gcc/config/s390/2084.md
! c6440f88ac1661989c93de30c18d5156  gcc/config/s390/2097.md
! d62ef488f16903bda4abc90e8c09515a  gcc/config/s390/2817.md
! ea53d84d4c9e61067f91b809a468a680  gcc/config/s390/2827.md
! d6871b79b0d694b4e73c33682729f7e3  gcc/config/s390/2964.md
! fcfb5cfc58bac6685db6cb3d362d1e67  gcc/config/s390/constraints.md
! 08aa720c56c6b3d6fcd7235619519984  gcc/config/s390/driver-native.c
! c0b9a0bc1f70d5ff5cb2a1cec3fc0258  gcc/config/s390/htmintrin.h
! e2667ed5190f6c4cb2e2350ab53a3cad  gcc/config/s390/htmxlintrin.h
! e36e51db72c306ef71e637f4e421160a  gcc/config/s390/linux.h
! 2aabb23688b1bb372881fa33dac4bade  gcc/config/s390/predicates.md
! b1b722b7a004b166861385320d7b4756  gcc/config/s390/s390-builtin-types.def
! cd00757fe6b2a3e89f34e4c54bf98bc1  gcc/config/s390/s390-builtins.def
! f86d5ba68c64df7a6369bb3154996154  gcc/config/s390/s390-builtins.h
! 7c0e57ec187dda594a17e31ae79e98a3  gcc/config/s390/s390-c.c
! 4029a4a0e90624e1410585d6c8779c73  gcc/config/s390/s390-modes.def
! 3fc693c2c78b5ae3ac47b83823d71e47  gcc/config/s390/s390-opts.h
! fea7bf517d90bc3af915876db1be6bc6  gcc/config/s390/s390-protos.h
! 02db24d0fe20c8e1299c5d38e2f98e69  gcc/config/s390/s390.c
! 1f016404836bb16935ea059303fbe284  gcc/config/s390/s390.h
! b111b16c513245fe1d03c2a0328b9f5f  gcc/config/s390/s390.md
! 1fdd1937d19d2004ae1f23f64c32a72f  gcc/config/s390/s390.opt
! e580143b15c5efe0617806579ed04d21  gcc/config/s390/s390intrin.h
! 5d6d963c9d4546945dca3d4a0d7b346a  gcc/config/s390/s390x.h
! e5a6754465a646cdb25c7b46c091aad5  gcc/config/s390/subst.md
  551847ee4c38fa1a7e95fd93cdb32f17  gcc/config/s390/t-linux64
! 2be65f9c741a6d443f53fed7f2f19b8b  gcc/config/s390/t-s390
! ffe46eb25789e819383f7056319db192  gcc/config/s390/tpf.h
! aa1f20f0bdb28e082598bf25da60508a  gcc/config/s390/tpf.md
! a873487658859e09e9e2e0ac52066baa  gcc/config/s390/tpf.opt
! 52b26b411e453a64d4e9020f558e55d6  gcc/config/s390/vecintrin.h
! c5d231958d155be87b6d3eab27d7dc70  gcc/config/s390/vector.md
! 686cc4ff3834a715aebc60686c6bb2d2  gcc/config/s390/vx-builtins.md
  19876f77a242921272972ac5b8bd32d0  gcc/config/s390/x-native
! a7b4d1de0afdeb90c5b326f9cd36c92b  gcc/config/sh/constraints.md
! ead9ac841ca8c61008b97e54b028e0b5  gcc/config/sh/divcost-analysis
! 445c317f6daa8af3623d3e3668876a22  gcc/config/sh/divtab-sh4-300.c
! c0d8ea8dcd54b26d959ce3a64d2354a4  gcc/config/sh/divtab-sh4.c
! c433ac8978c1a38736a1df07d16106e0  gcc/config/sh/divtab.c
! 74c0b91f0cb4a6c1acb886fe9043e97d  gcc/config/sh/elf.h
! 27d631c55e8ca07fd76616ccd930c8e6  gcc/config/sh/embed-elf.h
! 57d8513aaf08367d3717dbc1c8824629  gcc/config/sh/iterators.md
! a0a4c40591ac6d08f4e0e5de8a5a80ad  gcc/config/sh/linux.h
! c31ffac63b4400ac8631d00e76f00896  gcc/config/sh/little.h
! 377fd4dd5b8bfd80d2aabcd295bd5fb4  gcc/config/sh/netbsd-elf.h
! 00c67fe3859bdea4d171504425c7635d  gcc/config/sh/newlib.h
! 4a7fa03986ba924352a42beae30b8238  gcc/config/sh/predicates.md
! 4a1188fe4b98662fe76b48fb1ed86902  gcc/config/sh/rtems.h
! 742e7ce9c334146ec562d13a6b4764e4  gcc/config/sh/rtemself.h
! 562c197d8dd3c18257ff90a4b86996c2  gcc/config/sh/sh-c.c
! d6df61b65eb3b34c88a763b504b2f797  gcc/config/sh/sh-mem.cc
! b042490c8fd0ce0aa1a3023af990b37e  gcc/config/sh/sh-modes.def
! bc92a4402e9ac7d9b1698969038d5794  gcc/config/sh/sh-protos.h
! 22c3feaa663686845f0f718699785b52  gcc/config/sh/sh.c
! cf0ad69c78666c14af5fce0f52f58e26  gcc/config/sh/sh.h
! f2278c4d2452cfad51aeffea01dc6888  gcc/config/sh/sh.md
! e2e257f666c9bf9ff1b7e5e0d2ccf358  gcc/config/sh/sh.opt
! e3c3a7d65ca18d2dc6c6316e6934bffa  gcc/config/sh/sh1.md
! f83ceb056a0ff31082e63450847a0a02  gcc/config/sh/sh4-300.md
! d477d76e37e02f71be26cb55f57fb37d  gcc/config/sh/sh4.md
! 82fde7e0537588159e1dd3758bd46940  gcc/config/sh/sh4a.md
! cd0614651555b215c1d77a234e99e569  gcc/config/sh/sh_optimize_sett_clrt.cc
! ee30c2c8790c291f66228775baf58c65  gcc/config/sh/sh_treg_combine.cc
! ef869a69324522960db2c3e1e53c5e4b  gcc/config/sh/superh.h
  06158b0f1e33501120db330d7734228d  gcc/config/sh/superh.opt
! 26cd76777d319c3d236c8d261451f479  gcc/config/sh/sync.md
  d136f788a5f1c0fd4a8cf495f33aabd8  gcc/config/sh/t-linux
  ad88281b142c81e6c7017a842c281d5f  gcc/config/sh/t-rtems
! c56cd14f6ae85c473c2c36fb7732ca8c  gcc/config/sh/t-sh
  9f0e9638f478c08d204c5dce468c95ce  gcc/config/sh/t-vxworks
! bff3b57b9561f7bed58f9cb3e4703d64  gcc/config/sh/vxworks.h
! 289ac0b06c4d180e109bb20e95bd2c2c  gcc/config/sol2-c.c
  5c26c2321d68d4724b0d0076803c6b89  gcc/config/sol2-clearcap.map
  73dd11dea23019ab25cbbd70968694e7  gcc/config/sol2-clearcapv2.map
! f391291e3b23065001be3b77c1c4b139  gcc/config/sol2-cxx.c
! 200ca0a99baed6e4eee80d9c909cb7ea  gcc/config/sol2-protos.h
! 0ce5b7164d44372fcb1b5ebb8d873d01  gcc/config/sol2-stubs.c
! 10427205f9e908896bb603b89ea10a7a  gcc/config/sol2.c
! e198781b95015324afc49cafdb5bb2d1  gcc/config/sol2.h
! ed9b8fdac94d44f4ad4f07567a6ae8c2  gcc/config/sol2.opt
! 2a8a79970ec03c931d43b719e12f6268  gcc/config/sparc/biarch64.h
! cda33eade13d321e424800344f31bb05  gcc/config/sparc/constraints.md
! a011e2b44d1d8123361ba045d461b340  gcc/config/sparc/cypress.md
! b7c8adead6a21a00fd9587a51f5f1890  gcc/config/sparc/default64.h
! 92306ae32ed5f76fb7c5fb28f5026a5d  gcc/config/sparc/driver-sparc.c
! c4ac155f5f9fa794653d5eaf5aef40fe  gcc/config/sparc/freebsd.h
! 2007d05000137566baa4b2f8640457b4  gcc/config/sparc/hypersparc.md
! 88455c9c338dfcf64dd915e2b59bb452  gcc/config/sparc/leon.md
! f20356ed2377f09b3f3ed44e6d079ce3  gcc/config/sparc/linux.h
! 3871bfb8bd5f8d51c77b7c425228c7ce  gcc/config/sparc/linux64.h
! 7c7221bd73d31fc4e8b9d72b2f37d270  gcc/config/sparc/long-double-switch.opt
! d57520acaa81bbdc202490df14e024a2  gcc/config/sparc/m8.md
! 4b5c1259b2115f8682457fc957ddeb9b  gcc/config/sparc/netbsd-elf.h
! 36cbea702fc1c7a5dbb282a5e3a8c6d9  gcc/config/sparc/niagara.md
! f7f8bd7dfe277b232f0a893903e57e02  gcc/config/sparc/niagara2.md
! 367040cd1d1676f0d5fb094aba2070f1  gcc/config/sparc/niagara4.md
! 75b9c55ba8434711231d0cd59945d495  gcc/config/sparc/niagara7.md
! 5250485bcd9b127116efd6c1d512306a  gcc/config/sparc/openbsd1-64.h
! 7afb34b2e803426fdf6a1660aeed1b81  gcc/config/sparc/openbsd64.h
! 0b8901bce0e7287a7db07b27bfc1acf2  gcc/config/sparc/predicates.md
! c51103f41f66bb8b699075ef46543793  gcc/config/sparc/rtemself.h
! 4c23b8e2190203cdd41422257d0b684e  gcc/config/sparc/sol2.h
! 3fe86727489e335f4b59e94820f64441  gcc/config/sparc/sp-elf.h
! b4758aaf3ffd414be514529098b2fb31  gcc/config/sparc/sp64-elf.h
! ebbdcebbe1adce348931a4c7274c7c51  gcc/config/sparc/sparc-c.c
! 4633e9ef402682cc69036b91d4654cf9  gcc/config/sparc/sparc-modes.def
! 8716c31870255b84a448762c1c3f81c7  gcc/config/sparc/sparc-opts.h
! f7b50c68732f0e443b61cc30aafcdf2b  gcc/config/sparc/sparc-passes.def
! c9f7a8357767f05db3064cf1cc649b67  gcc/config/sparc/sparc-protos.h
! e59635de5be3ba3b8665efb32600f02b  gcc/config/sparc/sparc.c
! d22b6f70252e19940f3fdf0364e2c312  gcc/config/sparc/sparc.h
! 79022cdd249b67e87687638f1166924e  gcc/config/sparc/sparc.md
! 7ed2f6fc79160fe9d611d2b3b0c23d1a  gcc/config/sparc/sparc.opt
! 0ce5501d01413f5bf8569648d53f026b  gcc/config/sparc/sparclet.md
! 7b3ac0af0debfa3fc3e038c25d775e49  gcc/config/sparc/supersparc.md
! 88d08b7afdc62d1c901e533085b00016  gcc/config/sparc/sync.md
! 7c37152816c6ceeb1109dfa173329d8f  gcc/config/sparc/sysv4.h
! 1d1fae7cebb6040f80099604647cafed  gcc/config/sparc/t-elf
! acbd843cea02b141e7862dcc2b2854d3  gcc/config/sparc/t-leon
! 48bc5ea13537f74ebb6f7f1d1137c048  gcc/config/sparc/t-leon3
  4a7d3f368a24d549fabaafbe44fcb134  gcc/config/sparc/t-linux
! 0e18307b04426c5ab3ad25537267452b  gcc/config/sparc/t-linux64
  75987b7fdc6fa9c9ff2108ff1003e6d2  gcc/config/sparc/t-netbsd64
! 341097c5512271c2fab0be9cfbe0a2c1  gcc/config/sparc/t-rtems
! 4c80b4c56072a38aed82f6191ae2b1e1  gcc/config/sparc/t-rtems-64
  511770bb20c2707fabd4f231ce8b83cf  gcc/config/sparc/t-sol2
! 3b3e9702a274b74d961eeea759eca145  gcc/config/sparc/t-sparc
  b04597637b0c08dd3e6d1a40c43e76b4  gcc/config/sparc/t-vxworks
! 1940ff1c7bb41eb88d2ef5b261d86e95  gcc/config/sparc/tso.h
! c91aac769d09b8f216fc6961c72e014e  gcc/config/sparc/ultra1_2.md
! 90e1c13e95135c6060fa5eaca5767cfb  gcc/config/sparc/ultra3.md
! 6f40e12195009aa16e51dca7e38d0b21  gcc/config/sparc/visintrin.h
! b64bd859465780d47bc58b2cd35c9cb3  gcc/config/sparc/vxworks.h
  9b2ddc345afcea4f415dd0c8bc2d2ed3  gcc/config/sparc/x-sparc
! 359354c29f6b187beaf8c2ae0f79e1d1  gcc/config/spu/constraints.md
! 57199bae5e1b4fc80f9b4e824dd9be20  gcc/config/spu/predicates.md
! 2b00e2830fea546084684f5e5f52f4f7  gcc/config/spu/spu-builtins.def
! d04b8b24db275435ce2c9fa6ed350828  gcc/config/spu/spu-builtins.md
! 1bc56f956bdf4afb77ce24e2d22d9a29  gcc/config/spu/spu-c.c
! ac43fb35360c4a8c68fc15af3eecbbc3  gcc/config/spu/spu-elf.h
! c0c377144feeb83f3045545fbfb90421  gcc/config/spu/spu-modes.def
! 0f8a313b41ad5927f1c6deabb6ca586b  gcc/config/spu/spu-protos.h
! 05c967a024b34602479f8d9d352d573c  gcc/config/spu/spu.c
! 3e7d72f6a1cc72622eb1daeb475b09ad  gcc/config/spu/spu.h
! 9bae061039a4dd88f1a7b280065e9ad3  gcc/config/spu/spu.md
! 126d8c9c8b292061bc80ea1b7bc4f503  gcc/config/spu/spu.opt
! 9c266dd07da348367261251f68d4dfb7  gcc/config/spu/spu_cache.h
! 3afacccafb40323ec16c0a415dc958e4  gcc/config/spu/spu_internals.h
! 66ed1762d852c35798f1b808b5d6c3c3  gcc/config/spu/spu_intrinsics.h
! 6a098bb24f9d3087e59572497ffd26d9  gcc/config/spu/spu_mfcio.h
! 9b799e83f9f8d23c995adff12e845b87  gcc/config/spu/t-spu-elf
! 22034c46d02fff600aaf58e5c1c3189a  gcc/config/spu/vec_types.h
! ebe1bbb695c3e995e8f40b1f3aab7ac6  gcc/config/spu/vmx2spu.h
! 3c8a7984fd660f5e9015a9d13347cec0  gcc/config/stormy16/constraints.md
! e5f1312f19d468ef597b8fc5e403603b  gcc/config/stormy16/predicates.md
! 6a5a8d1ecb2848eae6e4eff51810d8b3  gcc/config/stormy16/stormy-abi
! ed0b386b9d9c5300fca0a2cdcb527222  gcc/config/stormy16/stormy16-protos.h
! d4e5f461aeaefbf915a86fe183a8bc6f  gcc/config/stormy16/stormy16.c
! 2d786a95c8db645b1af563a42b1d369d  gcc/config/stormy16/stormy16.h
! e2183a295e6a89d4d899f93afd7596fc  gcc/config/stormy16/stormy16.md
! 385a7a8b9659b7dd7ff7fd3debb458ae  gcc/config/stormy16/stormy16.opt
! a54e70e63498de41b8e030de06165c24  gcc/config/t-darwin
! e6094534c4fe7d322c1753519fb0e409  gcc/config/t-glibc
! 5a627af36427af5d7a662e254721033f  gcc/config/t-libunwind
! 548a7228d471586260538728d5a76276  gcc/config/t-linux
! 6a0dbfc374b62252ece0d69c04b3cf67  gcc/config/t-lynx
! c7b25b385c4a8c877ef2f3f4924a84c6  gcc/config/t-netbsd
  4b382926844dd76c21046df37b41105c  gcc/config/t-openbsd
! 661df4b203463c04ca8661136ee2eab5  gcc/config/t-pnt16-warn
  501751f2be56698ed1c9cf18358b67ac  gcc/config/t-rtems
  51d3678acb41d4448cc332f7a8e8cb2e  gcc/config/t-slibgcc
! b11cf3aecd9953b5b1c0855c8008dc33  gcc/config/t-sol2
  94b3e10150e75899d2fc1410cf218e3f  gcc/config/t-sysroot-suffix
! 5697e73b17302ceae51b9212f6289ebf  gcc/config/t-vxworks
! b8b1b4d69be86ea4a1684de7a568dd90  gcc/config/t-winnt
! c49338a838a0890bb19f651c7e4f340d  gcc/config/tilegx/constraints.md
  f62347fb17ffdccf93a30b860f9f4dc2  gcc/config/tilegx/feedback.h
! 92b62761f56a27f9d8a98b64fc61c0bf  gcc/config/tilegx/linux.h
! 117232b51b85074c6b3ccf77cfedf240  gcc/config/tilegx/mul-tables.c
! 92e57c1e0fa34c8c00579d6a2d93250f  gcc/config/tilegx/predicates.md
! b9093d19203f93a5beaf7d113bc72b40  gcc/config/tilegx/sync.md
  94847c7229d625be28df740c61698b73  gcc/config/tilegx/t-tilegx
! cf353e8a454bab92e459d642665349bc  gcc/config/tilegx/tilegx-builtins.h
! abfbdafb375bc9c50b0ff2689352f9d6  gcc/config/tilegx/tilegx-c.c
! 75713e7fd5fc98e4efaa534258fe4b5d  gcc/config/tilegx/tilegx-generic.md
! 68dbfc4bf08f11f845ecf4fe98fdaa96  gcc/config/tilegx/tilegx-modes.def
! 6f79961e3ec3096ad0bccbf38c7f0538  gcc/config/tilegx/tilegx-multiply.h
! d8c95c59279e9ec3f6847d91ac5dfe90  gcc/config/tilegx/tilegx-opts.h
! af7da4280f9820cb06b695fbe3e9d053  gcc/config/tilegx/tilegx-protos.h
! a47f8530905df0b472b858d8794f0dac  gcc/config/tilegx/tilegx.c
! 200d5c89eb1b9fdfe936357449787e80  gcc/config/tilegx/tilegx.h
! 7e3e4026b64871ea9840e524386407b4  gcc/config/tilegx/tilegx.md
! a8247d2bcf1459fca54e1002de28011b  gcc/config/tilegx/tilegx.opt
! 08c2dee99cdbf1d6f82fe5d80eecd531  gcc/config/tilepro/constraints.md
  f62347fb17ffdccf93a30b860f9f4dc2  gcc/config/tilepro/feedback.h
! b0561d021521bcf4f9a139f42f11e466  gcc/config/tilepro/gen-mul-tables.cc
! 7da56538ccef05051e5b26f751f4cb01  gcc/config/tilepro/linux.h
! 7c8242583134e7bc93860a322491a160  gcc/config/tilepro/mul-tables.c
! 5ac588e3d449df5dd3a1349b1b64dce7  gcc/config/tilepro/predicates.md
  3f18cdd00997ddf3552919159dbe4bbb  gcc/config/tilepro/t-tilepro
! 5cebeb599178ee8856bd3ea912a3aa20  gcc/config/tilepro/tilepro-builtins.h
! f97590cf9d842543c2746a2875be8202  gcc/config/tilepro/tilepro-c.c
! f2c57447b7eeec0a67f5628476cc05fb  gcc/config/tilepro/tilepro-generic.md
! 3ee6d08ae93f0846aedc9e2d8daadf05  gcc/config/tilepro/tilepro-modes.def
! 39051e36b474b4163884665f6735ace5  gcc/config/tilepro/tilepro-multiply.h
! 988e69254e08ae245ba4e07176ab0acd  gcc/config/tilepro/tilepro-protos.h
! a4406610dcd45e2b1c7fd3693c880d2e  gcc/config/tilepro/tilepro.c
! 4631f8571c55bf04c359e89aa62970ae  gcc/config/tilepro/tilepro.h
! 602a8a7260e3dcd29599a99119dcef8c  gcc/config/tilepro/tilepro.md
! 3ee068660c5c2f4870a6e03d09a95178  gcc/config/tilepro/tilepro.opt
  17fd5cabcc31b720b23bad47cf7fe84c  gcc/config/tm-dwarf2.h
! 7ca3ef0db62b23b1abaeb800d36ee4bb  gcc/config/usegas.h
  a6ae71a556271cc116214b3e9e87d867  gcc/config/usegld.h
! ba41d2017b15368ed8476c0e4f5401ad  gcc/config/v850/constraints.md
! 989c5db2802e5628f4cc4404d253bee3  gcc/config/v850/predicates.md
! cb10f0556f314315af1a8309f12bc425  gcc/config/v850/rtems.h
  41b5d5e91cc905b1e3ba5de47db5f9c6  gcc/config/v850/t-rtems
! 6ba0e2ab2380c36e4279deababedaa9d  gcc/config/v850/t-v850
! d7632714f5c62afc8f6abd31f3f834e5  gcc/config/v850/v850-c.c
! a3805a5f4b6f85eb843bd2821aae8193  gcc/config/v850/v850-modes.def
! d56d78aa851731310f2403b854873ac0  gcc/config/v850/v850-opts.h
! 20b86552b97ca933a44235b9d9367493  gcc/config/v850/v850-protos.h
! f32ceb9051bdcb97252bf0807fcc5711  gcc/config/v850/v850.c
! 551ab2008c596d20bde4a1737476ae2f  gcc/config/v850/v850.h
! d4de0e6a1fe6c3ba5de08a3da75e7941  gcc/config/v850/v850.md
! afeb2600b18a33b363ec622a45d49c70  gcc/config/v850/v850.opt
! 7c4d0a10f8260848d171cf445267fd38  gcc/config/vax/builtins.md
! 6a7468a4485c38d90ae033b238e2e4bd  gcc/config/vax/constraints.md
! 30de4e1bf58715c8061576d911ea72d8  gcc/config/vax/elf.h
! 79edbbc26936588caf0e6de5fb4c2658  gcc/config/vax/elf.opt
! 99dfea1d0cebe368319d20a9d0c20aa0  gcc/config/vax/linux.h
! 5541c68e553c6e0abe4ca0619657df65  gcc/config/vax/netbsd-elf.h
! bbd09c5da95e5128a8b98c29adc6a7ef  gcc/config/vax/openbsd.h
! 02828d180f62332054231aa6133e5679  gcc/config/vax/openbsd1.h
! 4a4d2e8db544272f75c95916eb4b3873  gcc/config/vax/predicates.md
! fe4c732bb879b6bae5c4fbb4538dd5ce  gcc/config/vax/vax-modes.def
! 4e445ca68e6463dccaeb6cee299c9eb6  gcc/config/vax/vax-protos.h
! 595cc5b922d67ace1dcf601a5de17b1b  gcc/config/vax/vax.c
! 8a93f74857c30c5649ba77960ea9d5ee  gcc/config/vax/vax.h
! 66c5facce6cbd2d81a9f77c5ae17e0fa  gcc/config/vax/vax.md
! bef264859596aaabe0e3bb7fa50acd5e  gcc/config/vax/vax.opt
! a6a6033c536aa0f6238dbc5ab6586461  gcc/config/visium/constraints.md
! 860b1831cd94f22af53fd41dd8ee36b0  gcc/config/visium/elf.h
! 524e721eeb2085d86a070fdfc7fd93a3  gcc/config/visium/gr5.md
! 3ace4d91905a53d9b6952f4056f3c139  gcc/config/visium/gr6.md
! 081b0d586866f57b916625a1fad11bdc  gcc/config/visium/predicates.md
! 24ba78645869853c33264e54b439801f  gcc/config/visium/t-visium
! 6e15060a65bb4d835ac8d3723c915a22  gcc/config/visium/visium-modes.def
! 125bd382db2e3a3d236525926ddc8350  gcc/config/visium/visium-opts.h
! cce48b6fb867b703c81a572def923b46  gcc/config/visium/visium-protos.h
! a031d42178c99716decc9cd986816d76  gcc/config/visium/visium.c
! 8198eee2bdfffddc87b2abcce4a66a76  gcc/config/visium/visium.h
! a706a00cd702022912624e33119b1de5  gcc/config/visium/visium.md
! 44adcb7364599873feaab5f963f87712  gcc/config/visium/visium.opt
! 07438d6f50b7bfd8d14c586366ff1dd2  gcc/config/vms/make-crtlmap.awk
! e307867c5f38fd6b8dd5fc2cc395a2bc  gcc/config/vms/t-vms
! d9b49039b0ba269f38499a9173a21ece  gcc/config/vms/t-vmsnative
! 6c0bcf3390842d4aa86c21faaccd38e3  gcc/config/vms/vms-ar.c
! 4d81b8a3873e34004603fca4e22e8883  gcc/config/vms/vms-c.c
  88a072da5fbb7828331d88720c03679d  gcc/config/vms/vms-crtlmap.map
! 78244d8280bba9e5af88c9b17d1c3f54  gcc/config/vms/vms-f.c
! 74ba16b9ca1b165616194c4cf965abfa  gcc/config/vms/vms-ld.c
! 6c61c841d5300ea34ce48d82ab94a931  gcc/config/vms/vms-opts.h
! 4031ce99b39aa7569c9319b8f158120c  gcc/config/vms/vms-protos.h
! d77cd548464f66d3375e98db26ec76e6  gcc/config/vms/vms-stdint.h
! abc503edf70d517603ce29c1cba8ff53  gcc/config/vms/vms.c
! 92933c926fa579439235c8362ebdde9e  gcc/config/vms/vms.h
! 949bab6e1e82d107c146880dd27420f3  gcc/config/vms/vms.opt
! 45e8055ba415e75b869acc06235158b9  gcc/config/vms/x-vms
! 694a5c40cf3a5f532bcc7b29c50a1d98  gcc/config/vms/xm-vms.h
! 8a9cbe190eafe411a6fc804ab4c20893  gcc/config/vx-common.h
! 2cfc4d6770e3fbb922328607752b7f4d  gcc/config/vxworks-dummy.h
! b49e565243af64699ab65d6e4a844297  gcc/config/vxworks.c
! 4d30302fcd5a45b07bed45a0400e81db  gcc/config/vxworks.h
! 815773dda18fb78b1dce0ab6eb698793  gcc/config/vxworks.opt
! 5d9710ba4c748130f786beb1026f160c  gcc/config/vxworksae.h
! dbe5015f3ff29150bff52d902a6435e8  gcc/config/winnt-c.c
  5cc0a69d6149e22cb7ea38c2206a2af3  gcc/config/x-cflags-O1
  e039340cbf1639956ac7be2a90852c1b  gcc/config/x-darwin
  70a634635eff456ffab3bc53b2a81690  gcc/config/x-hpux
  be8a6e9a94bd2fa1d41af513297364dc  gcc/config/x-linux
  2a6ad432bb06a41ba76f613b392d784b  gcc/config/x-openbsd
  6ad0b39a7daae38439d6d8cfd23c3ba5  gcc/config/x-solaris
! e9e997471976cdab2230283066669f13  gcc/config/xtensa/constraints.md
! c73f3c6631d04a934d59056378f53a6a  gcc/config/xtensa/elf.h
! 8db9af6c69017f15ea54f64f1cdb0a8d  gcc/config/xtensa/elf.opt
! da0c5a9aba24111956e86a5007dd39a6  gcc/config/xtensa/linux.h
! 646aba699b87522d1f4abac28a0e8b50  gcc/config/xtensa/predicates.md
! ec846689d23cece17a1e173a290d1bc2  gcc/config/xtensa/t-xtensa
! cd3f530ea95922564e1c6760e6fdf034  gcc/config/xtensa/uclinux.h
! 19c527eb9ebf583239c86ce3bf541dec  gcc/config/xtensa/uclinux.opt
! db7ecf40e8ff19197f922f4f71de8864  gcc/config/xtensa/xtensa-protos.h
! e85b8143fc7a173b74eb80c640d68832  gcc/config/xtensa/xtensa.c
! 93e6af33ce49627c14b7a69098b99cd7  gcc/config/xtensa/xtensa.h
! 3a904fae76ea41a5ac0cd3f169afb129  gcc/config/xtensa/xtensa.md
! 1e4b738829612b4836067eb92c840ee7  gcc/config/xtensa/xtensa.opt
! dff44b79b2e1ec9b505672e19ed7b1fb  gcc/configure
! 648800c90903b1407d8d2e546662f225  gcc/configure.ac
! 75059ca0d9a4c904710ca39560b641e9  gcc/context.c
! 9544972a69766328e0ef70c98997c4e7  gcc/context.h
! 9b619bc52057ca0815749b39e7204101  gcc/convert.c
! 7af1b46eb0a148348d5903c595cfb58b  gcc/convert.h
! 5e83fce2aab1937b6e6565f1c0262e8e  gcc/coretypes.h
! 26c55904a2afbcf2aa43236db5fddcb8  gcc/coverage.c
! 1078685a2ff587f89142f3c631f04c82  gcc/coverage.h
! d9d22a883e60bfc46494b5b4a2253445  gcc/cp/ChangeLog
  d271e3663538ba1f3281cab3838e92cd  gcc/cp/ChangeLog-1993
  f5a44adbc05521162350ca409d1d95ce  gcc/cp/ChangeLog-1994
  ac55db48d964cb5469ff03c1cd3ee04d  gcc/cp/ChangeLog-1995
--- 478,4491 ----
  883cd0dde6c0eb2faf9b5b324feed782  gcc/ada/ChangeLog-2014
  6fc01d1be81d26290529db4473ee527f  gcc/ada/ChangeLog-2015
  6abffd5f75304a3ab87659193c8422f7  gcc/ada/ChangeLog-2016
+ 6d0ffa28bd6b6f7eb48826cc418b1033  gcc/ada/ChangeLog-2017
  5598cfcecd6612ea21efddabbbe1ecc0  gcc/ada/ChangeLog.ptr
  2cf41efa2dee24b2dda73018b855edd3  gcc/ada/ChangeLog.tree-ssa
  a2eeb36cd2de35ce6a808c67a61edb7e  gcc/ada/Make-generated.in
  6c9c3b4249e781ed48c7ae55e8ef9999  gcc/ada/Makefile.in
! 214f1296056154e7b3757e7f11a8d2d4  gcc/ada/Makefile.rtl
! e238b1c45d1f7fe94257424aae177d91  gcc/ada/ada_get_targ.adb
! e2cdb2537074402fac72ff4b146ec3ad  gcc/ada/adabkend.adb
! e88684966caa09723020edbc3a482cf0  gcc/ada/adabkend.ads
! 66cc470c41071e9287ef8ef2b7bdd202  gcc/ada/adadecode.c
! e436697802657dcfe3e274e5732af8bf  gcc/ada/adadecode.h
! 4772720fa5fa2ef1072dfd0fa5ca7089  gcc/ada/adaint.c
! 4006abb7baf98f7000450817385f1247  gcc/ada/adaint.h
! 0d1d9e3701a0b2a8d79d4937e94c0430  gcc/ada/affinity.c
! d4e8af7660324f0012021cee44cba35f  gcc/ada/ali-util.adb
! a1d5829df1178edf65a98583bf9ee937  gcc/ada/ali-util.ads
! 00ebd83d7e31836e9d154e20d584a904  gcc/ada/ali.adb
! 28f260c2c64f9180e54940dde65f5a4d  gcc/ada/ali.ads
! a8e400833601b5f143d9ebae21b7812d  gcc/ada/alloc.ads
! e1690ca1936d02d3692e7dc5ff76659d  gcc/ada/argv.c
! dabf58a7d813bb31ddb3f150bf501cc7  gcc/ada/aspects.adb
! e87f54c525b2d5e4dab6cc89edcee71e  gcc/ada/aspects.ads
! a76383d308b0e0740f7632173f77d5a1  gcc/ada/atree.adb
! e9d39c1ad0564a5f084b325e40962e99  gcc/ada/atree.ads
! 3c4fc8dc9711974ed4ed4140ea462c00  gcc/ada/atree.h
! af198ce7656a90e376b8cda488900c00  gcc/ada/aux-io.c
! a02e749178fb4113b9b211cbb416306f  gcc/ada/back_end.adb
! e05274b0f9c5991875148cbcbb7b2d71  gcc/ada/back_end.ads
! 91a220015d57e91be345b815bfcc37bc  gcc/ada/bcheck.adb
! 58b61a3426f7f5b549f4df624928c132  gcc/ada/bcheck.ads
! 8d969737ee36f6338d40e94039d33443  gcc/ada/binde.adb
! 304bdf77f2205253f4f9ad386fc64434  gcc/ada/binde.ads
! 7be88c88ece9593539dd13b1df4895fc  gcc/ada/binderr.adb
! ad9676f010b5c325d89eeb9698d37b2e  gcc/ada/binderr.ads
! 8b6a9624880000662428916f65ee459a  gcc/ada/bindgen.adb
! a618ff3fe495dd82cb79455d933ea90f  gcc/ada/bindgen.ads
! 4a617d5d65a2e042e3359bc5593fad4e  gcc/ada/bindusg.adb
! 81e3635e97e03c2e4da2833d23e5ad91  gcc/ada/bindusg.ads
! acf19406da26971be038383610dc6661  gcc/ada/butil.adb
! 89d26cc85edb805c08794a09a538cfc7  gcc/ada/butil.ads
! b84681655319e8dfc76dc0155a1e370c  gcc/ada/cal.c
! 7e95e406a412e95ef9d9a8ac3e5fa22a  gcc/ada/casing.adb
! c30690c2bac080ed4d3315ef78f5b5e2  gcc/ada/casing.ads
! 8454102ac8b39c726a4945e8b019fded  gcc/ada/ceinfo.adb
! 0f2b632169c4c67839e6a8a2a119831c  gcc/ada/checks.adb
! 0b8583fb535ffa8f23fa093dcabe5b3d  gcc/ada/checks.ads
! a1a84b32080b64aa34259952334eae20  gcc/ada/cio.c
! 5c66188beb59f100f34d521924959bd2  gcc/ada/clean.adb
! c8124cddd548d93580b34bf23585ac96  gcc/ada/clean.ads
! 4cc8c1653839dfb3f4d08555c53cc0cd  gcc/ada/comperr.adb
! 1deb474118a3dcd79010a20522268883  gcc/ada/comperr.ads
  fbd23958a6d5c4207e39317e708436ac  gcc/ada/config-lang.in
! bbaab4c34d4d4006185a4a253487bdd6  gcc/ada/contracts.adb
! fffd6176496200998a6aa053eff7f8bd  gcc/ada/contracts.ads
! 9ba023ecab60735128900b8eb1214129  gcc/ada/csets.adb
! b3cc8cd205314e88ebdbe992a770bbc1  gcc/ada/csets.ads
! b2dff2c3d8efd0f80d400c432f956982  gcc/ada/csinfo.adb
! ec309b664f76a3009070710080bde97f  gcc/ada/cstand.adb
! 6554a450de9a94a712898a81827c8063  gcc/ada/cstand.ads
! e5f7f70d17aa63eb3733ed7b5251424a  gcc/ada/cstreams.c
! 6c8ad505db31b1bf41fcff86339ab9e8  gcc/ada/ctrl_c.c
! b0799545d9755694db7b7efccbe3b9f1  gcc/ada/debug.adb
! ab6709d4e56f9a539f635e9ba3e08ce9  gcc/ada/debug.ads
! ec7f64bdb70788013e080f775a0a7049  gcc/ada/debug_a.adb
! 770baf40626cbf546fb867283878e3c1  gcc/ada/debug_a.ads
! 0eebac872219fd8f2b2407f79d41b541  gcc/ada/doc/Makefile
! 15daa7f78634cc6b96c3f288b301863c  gcc/ada/doc/gnat_rm.rst
! 2333c6ac6129e29e589b44fba5bdb9ed  gcc/ada/doc/gnat_rm/about_this_guide.rst
! e183e323bf87ac50a5767106862fef97  gcc/ada/doc/gnat_rm/compatibility_and_porting_guide.rst
! 70d8ff8c8d1fbc035278dbcfbdc500e0  gcc/ada/doc/gnat_rm/implementation_advice.rst
! d0152c0b49677892ae60b9462636e781  gcc/ada/doc/gnat_rm/implementation_defined_aspects.rst
! 2d6172f632de179dfa9b4b3ef06cd368  gcc/ada/doc/gnat_rm/implementation_defined_attributes.rst
! 4461c1d1d88579540571da13c3ef3d95  gcc/ada/doc/gnat_rm/implementation_defined_characteristics.rst
! fff2bf01201406961ffa031e602c8e21  gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst
! 4c8f34f9d69c20b677b885ec36ef9844  gcc/ada/doc/gnat_rm/implementation_of_ada_2012_features.rst
! 7ac5b736cad92d3d7515e2fea2bfaa70  gcc/ada/doc/gnat_rm/implementation_of_specific_ada_features.rst
! 0b90d6c7f679a1477c699cb4b6ace53f  gcc/ada/doc/gnat_rm/interfacing_to_other_languages.rst
! 44bd6806b785d75512baa2bd4af9511d  gcc/ada/doc/gnat_rm/intrinsic_subprograms.rst
! 9cfb4794591137e950afea9d4dbc3e9b  gcc/ada/doc/gnat_rm/obsolescent_features.rst
! 336c6123cb462fdc33efdf1bee529963  gcc/ada/doc/gnat_rm/representation_clauses_and_pragmas.rst
  03676be4f649629e37041b8c849c7825  gcc/ada/doc/gnat_rm/specialized_needs_annexes.rst
! 63de645e521575a538b370014488e399  gcc/ada/doc/gnat_rm/standard_and_implementation_defined_restrictions.rst
! f4dbacbdfaf4bfc2291efc4557eebc3d  gcc/ada/doc/gnat_rm/standard_library_routines.rst
! 770c34e4264395bd3de09e225d8ab2b7  gcc/ada/doc/gnat_rm/the_gnat_library.rst
! 8b68d207a54ca14c6fe2d33005ece437  gcc/ada/doc/gnat_rm/the_implementation_of_standard_i_o.rst
! 2f459a7916291691ecbbe20ff30043ba  gcc/ada/doc/gnat_ugn.rst
! a364696765bbb9a15bfdd0a4d4789cb7  gcc/ada/doc/gnat_ugn/about_this_guide.rst
! 287e32a9429b3877e5529901e7041027  gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst
! 6bc80b5bd81229e0f7657052a6f2579d  gcc/ada/doc/gnat_ugn/elaboration_order_handling_in_gnat.rst
! c8c5cebc5a8966a6a0b278b30b2f5738  gcc/ada/doc/gnat_ugn/example_of_binder_output.rst
! 39cd330634f080758900f84a3bd80f3f  gcc/ada/doc/gnat_ugn/getting_started_with_gnat.rst
! c3a01106f082864bff5142f93874ecc6  gcc/ada/doc/gnat_ugn/gnat_and_program_execution.rst
! 5b591d4d646c64798baf5945e76c2116  gcc/ada/doc/gnat_ugn/gnat_utility_programs.rst
! 996c912f607538e32d01140682b88ff2  gcc/ada/doc/gnat_ugn/inline_assembler.rst
! 2949e4c8aa47bcd13931cab43de398a1  gcc/ada/doc/gnat_ugn/platform_specific_information.rst
  8e1de4b36a20872c09a28a30336fbe11  gcc/ada/doc/gnat_ugn/project-manager-figure.png
  062c912e168e9f97d4b4ae9c766300b8  gcc/ada/doc/gnat_ugn/rtlibrary-structure.png
! 4cbeafc4f6bccda5de9b1dbdd2e807fe  gcc/ada/doc/gnat_ugn/the_gnat_compilation_model.rst
! caf064904358a8a1d6029b136176ff9d  gcc/ada/doc/share/ada_pygments.py
! 072a6de1fa85aa471593edbd11db5cc9  gcc/ada/doc/share/conf.py
! c7da61a05156d50b4888cdfaae4241d0  gcc/ada/doc/share/copyright.tex
  9f43695687d6ab9372dfe236a9829279  gcc/ada/doc/share/gnu_free_documentation_license.rst
! f1c71b64e1c84e240c7b5aea7331a32a  gcc/ada/doc/share/latex_elements.py
  90adfcde2feb6d6c090c2b18a1578145  gcc/ada/doc/share/sphinx.sty
! 3f1b5c617f2bde917b07f07c74a6b7d9  gcc/ada/einfo.adb
! 370a25c34b18b45d1fec298a0e17ffc1  gcc/ada/einfo.ads
! 9883a4150960edc35089b5a87b531cec  gcc/ada/elists.adb
! e969df52f279f817aa9e763c31686438  gcc/ada/elists.ads
! 4fb0673a646a8a8517d601ae76e5da29  gcc/ada/elists.h
! f39ec097a7862462ae1521d98458d65e  gcc/ada/env.c
! 5f4d1079ebc1b6454ec8a59660661082  gcc/ada/env.h
! 8388091843ecf7025fbe9994979d0b5f  gcc/ada/err_vars.ads
! 824e6738a79c5b2103f81e24fd4459b5  gcc/ada/errno.c
! 0fda3a3b9cc393a5873d7a16a0ae4423  gcc/ada/errout.adb
! 5fb21351d48805939b9bec1f0cbed39f  gcc/ada/errout.ads
! 5f6b5803eb6c2935fca7c472f3bb6e8a  gcc/ada/erroutc.adb
! d743a04a78c545d8fbbc27eb581c5bb9  gcc/ada/erroutc.ads
! 0c93de99e88c9cc4aa3a0de7908dc333  gcc/ada/errutil.adb
! 86709a532f9b6ec6f5800ce990e4b782  gcc/ada/errutil.ads
! 93ef97f8d4a16854f1e910ffb307ee2d  gcc/ada/eval_fat.adb
! 06b9030011b5f3f758d7c0cf160cca66  gcc/ada/eval_fat.ads
! 483104414ff3ae79775abd3531795f83  gcc/ada/exit.c
! 3cec3eda131d72c615606168efda7813  gcc/ada/exp_aggr.adb
! f9232d875e21c621d8fa6586837e3c5f  gcc/ada/exp_aggr.ads
! 16e3db4a3eba25c26243522021784246  gcc/ada/exp_atag.adb
! c10c86bcb4756545b1d9bdf501ad7b18  gcc/ada/exp_atag.ads
! 419ed5257dc01474163210237a78c7ca  gcc/ada/exp_attr.adb
! 9c8251b49d25c58d78cb8aa2c7fc8dda  gcc/ada/exp_attr.ads
! 5a1da2cf2977b426f0a96771cbdff88a  gcc/ada/exp_cg.adb
! ab05b5ec311318fdfd5371dd886b4a79  gcc/ada/exp_cg.ads
! 8a49648f2321af4654c7dd6e2c3577a5  gcc/ada/exp_ch10.ads
! 6b2a7b042b41fd63903fd1022d8138e8  gcc/ada/exp_ch11.adb
! 2f3d59c3859da7d4ee3a9e29fcd424e6  gcc/ada/exp_ch11.ads
! 47dbf53392ba42ff5232729ae1619c7f  gcc/ada/exp_ch12.adb
! b6e8b25204d39db936ff7aba8cf50ed1  gcc/ada/exp_ch12.ads
! b1005e6a8cb77b4c487d3fcb6bc2d6f3  gcc/ada/exp_ch13.adb
! 7b4b4130baf9285fe9ac1fc56748e550  gcc/ada/exp_ch13.ads
! b6ee9dde2e076ef689f4950857b842e1  gcc/ada/exp_ch2.adb
! 68b9e59f488bb5628a0f458a72fe4a0f  gcc/ada/exp_ch2.ads
! c59eb9460c3e8e03cf37c21679534b6c  gcc/ada/exp_ch3.adb
! a8c58e6bc5892e52f93e8e7e7500934e  gcc/ada/exp_ch3.ads
! 1b9facd5085645c40384932a60f4be4e  gcc/ada/exp_ch4.adb
! 74fabe665a77f8d93137bd7624b3c0df  gcc/ada/exp_ch4.ads
! 0208c0a4894442aaad75192202c3c6f1  gcc/ada/exp_ch5.adb
! 2cd951b46c02abb3f882cadf003db5fb  gcc/ada/exp_ch5.ads
! 95daaa555290c0aef963a7e8e2868382  gcc/ada/exp_ch6.adb
! 17b4ae81f58dfd5996bfaa25475814a6  gcc/ada/exp_ch6.ads
! 34be61206fa3d6ff79b6d7325662ecc1  gcc/ada/exp_ch7.adb
! afee0bb5efcf10a2f9c8259a744da8b1  gcc/ada/exp_ch7.ads
! c0922097479555efdd0e41d0dbf56856  gcc/ada/exp_ch8.adb
! f3821bfe0f70be56c8a1aaf9f6723fda  gcc/ada/exp_ch8.ads
! 04898354035768d8f14a42f3759343e2  gcc/ada/exp_ch9.adb
! 54e06f0e61cb6235041a417eb633e41b  gcc/ada/exp_ch9.ads
! a251e48041ce930f07fe60d4daec9a2b  gcc/ada/exp_code.adb
! 46f17915b902ec2a2b643453d03e1676  gcc/ada/exp_code.ads
! e5310f31d387f83e012a8d7abed6af65  gcc/ada/exp_dbug.adb
! 73083970f3d9da1686cb6a7556bda94b  gcc/ada/exp_dbug.ads
! 707f5bb8bb4a3607f6b5628f5dc820d8  gcc/ada/exp_disp.adb
! 95dd31f65e3810ff552bd4f70ad6ade0  gcc/ada/exp_disp.ads
! 714ffa6e9de90bb3355e5b56cbf77aca  gcc/ada/exp_dist.adb
! fe3ca18214b14c037779ec2730e7e720  gcc/ada/exp_dist.ads
! 76b087f7b19197e3126fc23c9e8e04ca  gcc/ada/exp_fixd.adb
! 83ae0aad72933cd13c73992adcb67d4f  gcc/ada/exp_fixd.ads
! d8e6718ccaf388dd12ee5fef571458f0  gcc/ada/exp_imgv.adb
! d4748eba80df3666a14622d80d6f36f3  gcc/ada/exp_imgv.ads
! 635847726dc5ddc4ad0f7bfb0d4abef6  gcc/ada/exp_intr.adb
! f22135c5b0c62b9d8328c97a5a959465  gcc/ada/exp_intr.ads
! f9903ac81d6d7ed29e78bcea613a0108  gcc/ada/exp_pakd.adb
! 2fbfa1c314abb6ff2cdd6c5088cb5ae4  gcc/ada/exp_pakd.ads
! 243e0dd3a35fe20881f2896b6830ca67  gcc/ada/exp_prag.adb
! 7a3b485667e10a1f07626695edc1a635  gcc/ada/exp_prag.ads
! dc4f5334619f83a1799d552fe63cbc23  gcc/ada/exp_sel.adb
! 8d233e09b1e59be9f58ad2a8c2101f77  gcc/ada/exp_sel.ads
! 7e6af59523c20da3b68a36f71ac275e1  gcc/ada/exp_smem.adb
! c21c1423406451b0d5563e07a17ae4f0  gcc/ada/exp_smem.ads
! 86473636132ca37c10e5ff4871bbbf7d  gcc/ada/exp_spark.adb
! 95da7713738e362c4f1df1c58e30b19e  gcc/ada/exp_spark.ads
! 10c0dbe99cc3d008f7023bdfec50c730  gcc/ada/exp_strm.adb
! a2c71e3870089fb184e3328aa19c235b  gcc/ada/exp_strm.ads
! d97e5de5120295e54dc3c2f7c9ac590e  gcc/ada/exp_tss.adb
! cb8cb767e4eddff00f2a230590dd251a  gcc/ada/exp_tss.ads
! f4d7aedee9c8cf8ef64ca6a1b3b11cb3  gcc/ada/exp_unst.adb
! 0dd77ac9cfe545a1e268172a97d23bdc  gcc/ada/exp_unst.ads
! 53eed1019ba86ee1372e24ad514941ca  gcc/ada/exp_util.adb
! e4cf3b07fc834a03762c5b935586576a  gcc/ada/exp_util.ads
! ddf62c6849c389d453e5707a77ea44b0  gcc/ada/expander.adb
! f4807c67eb4f47f6f7c056b7f2f79977  gcc/ada/expander.ads
! b6421b6545cea43d0781412fd87f7d21  gcc/ada/expect.c
! 1af6adcd9e4acea1647413d11527ae54  gcc/ada/fe.h
! e15366c453255f8f4d84e1caa1fb0614  gcc/ada/final.c
! 80361954f6f11ae34c8de3ccdbd2881c  gcc/ada/fmap.adb
! 0e9665f5f715a93793808544e6cec5dc  gcc/ada/fmap.ads
! 39ff131972c8f0a20f929e674d6f2bd0  gcc/ada/fname-sf.adb
! bae5a9173b077d1893c1a69504dcb163  gcc/ada/fname-sf.ads
! 4a9560654c91ee5d070cc11d73696d82  gcc/ada/fname-uf.adb
! 57df25bb3b14e731a5c07585ba9f221a  gcc/ada/fname-uf.ads
! 43b652e3a4af9f9a5ca95764fb418c61  gcc/ada/fname.adb
! 4466c415904c1dee1ed0207cc95c23b9  gcc/ada/fname.ads
! 065a0131763f22a26bdf1e6c5b698ff5  gcc/ada/freeze.adb
! afc4e22f2d981249d5da16dd5480c9a8  gcc/ada/freeze.ads
! 8c12f4e44d89584927ba1b596ca6555e  gcc/ada/frontend.adb
! 873b04d6a203fcb76a7e6b7c2114e484  gcc/ada/frontend.ads
! 71c402028086d8495d1c055f64892297  gcc/ada/gcc-interface/Make-lang.in
! e2fc2e586c98ee94cabd0eff35fe08c3  gcc/ada/gcc-interface/Makefile.in
  055be3d11fa6ccb53ffe7f8970a005ce  gcc/ada/gcc-interface/ada-tree.def
! 192861ed32d7952c7f3bad3459996a0a  gcc/ada/gcc-interface/ada-tree.h
  51c95420b5900990141d2e5705582197  gcc/ada/gcc-interface/ada.h
  4cbfd794461da0feb1b8661ec623b6c6  gcc/ada/gcc-interface/config-lang.in
  9779c4debc13c6f1cfa1e4e6a6e6c638  gcc/ada/gcc-interface/cuintp.c
! b9d542f04ad12145505689161f30c19b  gcc/ada/gcc-interface/decl.c
  c413d4d50e9563859f4d751a4404b705  gcc/ada/gcc-interface/gadaint.h
! 42c433fe464e9d5982c9d79d043e3935  gcc/ada/gcc-interface/gigi.h
  f2528ece7aa7e2ed8123de8fe434252a  gcc/ada/gcc-interface/lang-specs.h
! 86e28c1ab2be02440b174f984633984c  gcc/ada/gcc-interface/lang.opt
! 2dc5129e5682363023b212bff0f2e360  gcc/ada/gcc-interface/misc.c
  7bd3630f35c5ac7b5c6cfaf8b16e5723  gcc/ada/gcc-interface/targtyps.c
! 2f4f0025e8e88226611b904eb79dbf35  gcc/ada/gcc-interface/trans.c
! 093d3f14bdb0594da00c3098fd658f3b  gcc/ada/gcc-interface/utils.c
! 4776e3332d5b10a5915f26a92697aaa1  gcc/ada/gcc-interface/utils2.c
! a45c219685ae6ac76a079cae99c36c20  gcc/ada/get_scos.adb
! 4e460bb021c0b86d52e8fc3557dedbd6  gcc/ada/get_scos.ads
! 376e1e43bf3a1b8d57e3d21a944f88dc  gcc/ada/get_targ.adb
! 67ce168859b46fd69fd6d2a38a8b3c5d  gcc/ada/get_targ.ads
! 6fa83a326f4bbac81d52683f4ac395da  gcc/ada/ghost.adb
! a1dc4384b71c9c1f6a521549c9fefc5c  gcc/ada/ghost.ads
  c39e2928a111b0037c2dc63f22527cb4  gcc/ada/gnat-style.texi
! d69248f2d1beb765e8cdedb4020a0172  gcc/ada/gnat1drv.adb
! 8ab766c89416bf5f5b34a436fdbcfdd6  gcc/ada/gnat1drv.ads
! bbbe6a8ae4b2245000953af58e90c6e0  gcc/ada/gnat_rm.texi
! 4d0bbf9d786dbf9c3d737e7b435e69f5  gcc/ada/gnat_ugn.texi
! 13c9697fc75da8ff5db36fd750ac0e66  gcc/ada/gnatbind.adb
! 21b638913de662438e3233bc2a4ff0fc  gcc/ada/gnatbind.ads
! 9703ef1627ecbb7f5be2aabc9f714a78  gcc/ada/gnatchop.adb
! f202eac0fe58728d025773bd04937b82  gcc/ada/gnatclean.adb
! 2c0228eafae77c3f1506564133d86ee4  gcc/ada/gnatcmd.adb
! 12766aa227c56f7ec9f7b5d1fc500243  gcc/ada/gnatcmd.ads
! 9a42662c4d7f6606ccde48749b9041ae  gcc/ada/gnatdll.adb
! 95c899f221253a31f6dfdb359c0afeb8  gcc/ada/gnatfind.adb
  670cd3e724c6b64c7b322c6e75a0e7c4  gcc/ada/gnathtml.pl
! 6fcef43a4eedf15f9c669aaf97c14961  gcc/ada/gnatkr.adb
! ea90549092c26c261b89b034c438b34f  gcc/ada/gnatkr.ads
! b7fa7a1a70254152b6ba51d235179d63  gcc/ada/gnatlink.adb
! 2cfddc30e8732370a3afce2cf6d51a3b  gcc/ada/gnatlink.ads
! 7f23839006e1d5c4bc2b1ade04d2a5a1  gcc/ada/gnatls.adb
! cbb111e0d378d94142c3b7ba1e9a91e3  gcc/ada/gnatls.ads
! 5e42db727f0c6a24c45f62246755f406  gcc/ada/gnatmake.adb
! 1e8bebbf582a7f77d1a83580399851c9  gcc/ada/gnatmake.ads
! df20c7f2166a2e6d00f77a4e8dc80d48  gcc/ada/gnatname.adb
! 07a5a3c4ef6ce0baa6449bc36cdfd0ea  gcc/ada/gnatname.ads
! 1fd574e6232562331f6bdacfd89e0bed  gcc/ada/gnatprep.adb
! c4b86dfdcfdd1094468f6997f05f43a5  gcc/ada/gnatprep.ads
  fb9fef5712ae1a7dfd425f14332d9bc7  gcc/ada/gnatvsn.adb
! 5894ccd55c7c7440d0d7581f4a06251f  gcc/ada/gnatvsn.ads
! e4867d363c5a4c9684acc23bc87f92ea  gcc/ada/gnatxref.adb
! 0d132b9c95b25479b9ffe51ee4f415e6  gcc/ada/gprep.adb
! fb81e1cbd0694e5d07e2a38b682d57dc  gcc/ada/gprep.ads
! c1c089866678ac8a2b4064ab0a51beca  gcc/ada/gsocket.h
! f044687e59a421944be0627c903921d4  gcc/ada/hostparm.ads
! 955f25582f6a8aba55520ca378b90f63  gcc/ada/impunit.adb
! e84cee3124f04fa3735450c74c293748  gcc/ada/impunit.ads
! 6461c262e9887befc13f8e2a1d726b86  gcc/ada/indepsw-aix.adb
! 01d0109efe8b49824c817159fce36235  gcc/ada/indepsw-darwin.adb
! de371a2684ddec4d1c37df8bc46b5e55  gcc/ada/indepsw-gnu.adb
! 31bba3d35455d25f48eeb2ae3b326c21  gcc/ada/indepsw.adb
! d5de03309bffade72080139c04ccb517  gcc/ada/indepsw.ads
! e44ce986028b6450502074a33f03ebd7  gcc/ada/init.c
! ff4117d195e314edd4604dcf121a2fba  gcc/ada/initialize.c
! 0441731b3b86ccde1cc95a8a99b030a7  gcc/ada/inline.adb
! bdc7727a12d72dffe93921a6d42de417  gcc/ada/inline.ads
! 635d90cc574236ccc45ece81a3a314c3  gcc/ada/itypes.adb
! 45b15b1989e59b522c724edbddd0b006  gcc/ada/itypes.ads
! 478d3adc5a0d0b7cb728dc44ebd043d8  gcc/ada/krunch.adb
! 7e0b4703bcf56367d6e616e45a3ceb80  gcc/ada/krunch.ads
! 70dffb28b9102be5f617d69fefd53e6b  gcc/ada/layout.adb
! 9e1a66cedc7616a76f62054e6c1119fa  gcc/ada/layout.ads
! 491296bf2fbd2e9d2b51e3674eb49db1  gcc/ada/lib-list.adb
! a2ae2d3762408e01563fcb0f46012d6c  gcc/ada/lib-load.adb
! c8a353dd5906bc8ce25992e053c14e23  gcc/ada/lib-load.ads
! 8fc3029951d85fe99a1a000349657962  gcc/ada/lib-sort.adb
! 08594e3bf215e7d76fc7e239c10d801a  gcc/ada/lib-util.adb
! 737aaa7d1702fc0eb2ff321b408ffddc  gcc/ada/lib-util.ads
! 6ceadfea4f20a803bd53ff5c119f3f36  gcc/ada/lib-writ.adb
! 9222a3fac3acaae0ed80ff8b512826e0  gcc/ada/lib-writ.ads
! 4901b574a0cf596350c8a155bacc616b  gcc/ada/lib-xref-spark_specific.adb
! 76762b9bebefaed5d8d74877df222ad7  gcc/ada/lib-xref.adb
! 7cdec152a5f092ab968c6562e4ee4491  gcc/ada/lib-xref.ads
! 69615657642089d8daec5847a967a415  gcc/ada/lib.adb
! 1bde84f79286459277846d43c958ce1e  gcc/ada/lib.ads
! 63e86127ada67e78880f03740ecc6670  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
! beb4254b6f4d5d7145f62f7c5c6c611a  gcc/ada/libgnarl/a-dispat.adb
! ffc38182643c9a3ca51ec7b39bd9fc55  gcc/ada/libgnarl/a-dispat.ads
! 77138eee91222859baf3f6320674b55c  gcc/ada/libgnarl/a-dynpri.adb
! a2784499cf21750d8840eeaf03b9e700  gcc/ada/libgnarl/a-dynpri.ads
! 1f20f56d19453dfa70c3a391035e9172  gcc/ada/libgnarl/a-etgrbu.ads
! 3e60794a02e6ff3380c0daf20c7c6bc2  gcc/ada/libgnarl/a-exetim.ads
! 315fee7ca0a94c7992f79cc049b26a0e  gcc/ada/libgnarl/a-exetim__darwin.adb
! 0506520d3c14f77e5e3f650bc6a40fcb  gcc/ada/libgnarl/a-exetim__default.ads
! 80272e99db094adcdc96791d3572393b  gcc/ada/libgnarl/a-exetim__mingw.adb
! 50ca5eb4ce68b3657ed6f3e4a4d7fadf  gcc/ada/libgnarl/a-exetim__mingw.ads
! 4e04b43de493b57e4202454a318fd0ca  gcc/ada/libgnarl/a-exetim__posix.adb
! 8a70e70c5d53efd2ae8de2a025db3217  gcc/ada/libgnarl/a-extiin.ads
! 66ba8470ba07e36d23031779e1ebee31  gcc/ada/libgnarl/a-extiti.ads
! d40b300fa54e4420b26133489f34a8fa  gcc/ada/libgnarl/a-interr.adb
! 33af89e87a64e586c2cf3ac4a93d4fd9  gcc/ada/libgnarl/a-interr.ads
! 6effdecd78673008e03f5e0c116633db  gcc/ada/libgnarl/a-intnam.ads
! 78235fdbebca82d150ea2d5e58f2a06c  gcc/ada/libgnarl/a-intnam__aix.ads
! 086d0e1fbbbb018faada6a01f75fb66c  gcc/ada/libgnarl/a-intnam__darwin.ads
! 7bd11f43fd894e0dfdd60557e0788315  gcc/ada/libgnarl/a-intnam__dragonfly.ads
! 9a8604679057fd17765174daf5944624  gcc/ada/libgnarl/a-intnam__dummy.ads
! 4ef8c38fb9f6d322e548b1bdc7154622  gcc/ada/libgnarl/a-intnam__freebsd.ads
! bb611fa80cfe155a48ae584cb155189c  gcc/ada/libgnarl/a-intnam__hpux.ads
! 915d4b24fefc34f4cc8796e27bfd3ccc  gcc/ada/libgnarl/a-intnam__linux.ads
! 43bbfc089c9db5dc6b7fe81f0d02afb4  gcc/ada/libgnarl/a-intnam__lynxos.ads
! 284da2e2a44dcf7b6833d3671632fa24  gcc/ada/libgnarl/a-intnam__mingw.ads
! 914e980d535f8108a9163d4c5b819a3f  gcc/ada/libgnarl/a-intnam__qnx.ads
! b3a60f5e995e78fbe344bb053688ed83  gcc/ada/libgnarl/a-intnam__rtems.ads
! 586ee7e12593ee099d1401a4d779aa38  gcc/ada/libgnarl/a-intnam__solaris.ads
! a324ba32d2717dad7b7040bc0b52310d  gcc/ada/libgnarl/a-intnam__vxworks.ads
! 48e392f3cb86f487106717834bd10c3e  gcc/ada/libgnarl/a-reatim.adb
! 16df90333afd0d41a4314b2014fd1ea4  gcc/ada/libgnarl/a-reatim.ads
! a684b703eb60586ae325bce96e4126c6  gcc/ada/libgnarl/a-retide.adb
! 5fc561f42b0fcd784bc98aab6b56db00  gcc/ada/libgnarl/a-retide.ads
! bd5520fd6f1b4b42a0eff929701e5ff5  gcc/ada/libgnarl/a-rttiev.adb
! 911d0f569b265360a6e836512eda2771  gcc/ada/libgnarl/a-rttiev.ads
! c04bb8934366f43faa60d914e7ebea7a  gcc/ada/libgnarl/a-stcoed.ads
! 51a33d5dc48bd08019cd7f950a12a424  gcc/ada/libgnarl/a-synbar.adb
! 271825372adccc920cd1b44898d9120b  gcc/ada/libgnarl/a-synbar.ads
! 45b942570527851d922cc6fd624286c5  gcc/ada/libgnarl/a-synbar__posix.adb
! fb3e119320e5c579bad83215d608903a  gcc/ada/libgnarl/a-synbar__posix.ads
! 8d869f3d0e4868028331e0d09cd0fe9d  gcc/ada/libgnarl/a-sytaco.adb
! 6efb637db5d2c18935e39a12625637f2  gcc/ada/libgnarl/a-sytaco.ads
! 4c88088f0cbc7a2ce2e4283e47b91f21  gcc/ada/libgnarl/a-tasatt.adb
! faeaef5229b60565263ccce143c60745  gcc/ada/libgnarl/a-tasatt.ads
! 8690c375ab59c18d270479f5e55a02e4  gcc/ada/libgnarl/a-taside.adb
! e89a5acb4a009e3b8b1f252d902d9c37  gcc/ada/libgnarl/a-taside.ads
! 9c8616dba4e96ea8110dca541a49eec9  gcc/ada/libgnarl/a-taster.adb
! 281fc9a014bf9c5a3677f1dd38cc9d5d  gcc/ada/libgnarl/a-taster.ads
! 2b070fd8d430d4f05e3c03ff5defd031  gcc/ada/libgnarl/g-boubuf.adb
! 8441ff564ae9e534578344b448d7c157  gcc/ada/libgnarl/g-boubuf.ads
! b4956b882723fc18cf622c570f084d8a  gcc/ada/libgnarl/g-boumai.ads
! 3f9411d4af20536e40c2116468c7a0c4  gcc/ada/libgnarl/g-semaph.adb
! 4419768902d5bf7a5cfb8d603624e2a0  gcc/ada/libgnarl/g-semaph.ads
! b4d25112f4e6be2666b35f39125d63b2  gcc/ada/libgnarl/g-signal.adb
! 0cc894d3af39b230bac54ecfc79fb438  gcc/ada/libgnarl/g-signal.ads
! 27892469fd26574335cf5d6574a645cc  gcc/ada/libgnarl/g-tastus.ads
! ddc18ff34abe8e327e52a29cbc19bf99  gcc/ada/libgnarl/g-thread.adb
! 4997aa58d0ea5d8d0eca6327e09b030c  gcc/ada/libgnarl/g-thread.ads
! a90be0a49b0afc352de5ab5496a14507  gcc/ada/libgnarl/i-vxinco.adb
! af97079870fd5c7701a75e82f3a00064  gcc/ada/libgnarl/i-vxinco.ads
! 39c875f72ec56f61e754b9c7e403a4da  gcc/ada/libgnarl/s-inmaop.ads
! 3bc3c7fd2af917d8393d239d6bc3a779  gcc/ada/libgnarl/s-inmaop__dummy.adb
! cf9b696399968f0fad8ac448c7696a60  gcc/ada/libgnarl/s-inmaop__posix.adb
! bc87e5bfe17d190627c3531417d4e3db  gcc/ada/libgnarl/s-inmaop__vxworks.adb
! 929ee625ac0b7997e967c1a5db780197  gcc/ada/libgnarl/s-interr.adb
! d94b348ad04379bda774294c710adccd  gcc/ada/libgnarl/s-interr.ads
! 69e28039ca2aa242517360bfc190b240  gcc/ada/libgnarl/s-interr__dummy.adb
! 4d02beefa3855e050178da3336820bc5  gcc/ada/libgnarl/s-interr__hwint.adb
! 01f98067896d98254a371a5312416e8c  gcc/ada/libgnarl/s-interr__sigaction.adb
! b26700ae531a4cda13438b93df54f838  gcc/ada/libgnarl/s-interr__vxworks.adb
! 4bdaa789331c6a72b116eade78b6f99a  gcc/ada/libgnarl/s-intman.ads
! 45d41756933028986b8eaf4100a73dfe  gcc/ada/libgnarl/s-intman__android.adb
! b5e7612be3a5079aa6838251e3245681  gcc/ada/libgnarl/s-intman__dummy.adb
! 70df2b814ef13f59a7466e89ec96d8df  gcc/ada/libgnarl/s-intman__lynxos.adb
! 5a163359d6dd27e2437c111aae15ef11  gcc/ada/libgnarl/s-intman__mingw.adb
! 742867cf899acda5c67fb27d5848178f  gcc/ada/libgnarl/s-intman__posix.adb
! 0af33c179cb2e4b76029ea2ece55c7b3  gcc/ada/libgnarl/s-intman__qnx.adb
! 23cd5565265bcec34536d3c38888b3f0  gcc/ada/libgnarl/s-intman__solaris.adb
! 97e9d15fab175d00dbc23d7c62fe88bd  gcc/ada/libgnarl/s-intman__susv3.adb
! 7f2ce182add9bbe035851924c62253b8  gcc/ada/libgnarl/s-intman__vxworks.adb
! 6cc4930b1234ee6a1e91eca10b3dcfce  gcc/ada/libgnarl/s-intman__vxworks.ads
! e57acfa3f60bd546061e36687c8ffbed  gcc/ada/libgnarl/s-linux.ads
! 5f8728050b581ed815517cd607074b6f  gcc/ada/libgnarl/s-linux__alpha.ads
! 359330a0402fb6245c7a6972610980fd  gcc/ada/libgnarl/s-linux__android.ads
! 2c266b83fa486cb8d4b82ee365087a07  gcc/ada/libgnarl/s-linux__hppa.ads
! 18b6daf2c0a960280d8144ba833f251e  gcc/ada/libgnarl/s-linux__mips.ads
! b48edb16abafada7f9ed7929f5bea1cf  gcc/ada/libgnarl/s-linux__sparc.ads
! 838ed76dfc761b458ab3d11d0cad21c3  gcc/ada/libgnarl/s-linux__x32.ads
! 29a1c3f43187191d5d018ff09e72a2ba  gcc/ada/libgnarl/s-mudido.adb
! e6304ab8465d5bc7fadbcaf1933a0980  gcc/ada/libgnarl/s-mudido.ads
! 64bea4bdaf55c83081256b95986699ee  gcc/ada/libgnarl/s-mudido__affinity.adb
! bf72498364a4a70d09f677cdd5f196c6  gcc/ada/libgnarl/s-osinte__aix.adb
! e3a7c2b316b7eea1b0c49838f66fcd4a  gcc/ada/libgnarl/s-osinte__aix.ads
! 40d3b94281d4d785441ccec72a3d6544  gcc/ada/libgnarl/s-osinte__android.adb
! 43d6fe84ed0248499a65fc0c3c5f9767  gcc/ada/libgnarl/s-osinte__android.ads
! f3915e0e10c4c0efb5c5364347a3380a  gcc/ada/libgnarl/s-osinte__darwin.adb
! 854726035098dc23b9f5ee651194092b  gcc/ada/libgnarl/s-osinte__darwin.ads
! 30181731a8d959c08f02a2d17c7c3380  gcc/ada/libgnarl/s-osinte__dragonfly.adb
! 43477633e27c62cd95db7c2d6d422ea0  gcc/ada/libgnarl/s-osinte__dragonfly.ads
! 5322488e3cd2523d766644b15369a4a5  gcc/ada/libgnarl/s-osinte__dummy.ads
! 0653752449b8e6b891089aadd51bd2e4  gcc/ada/libgnarl/s-osinte__freebsd.adb
! 5fcd49033ec5be126fcf9eec4cd44a07  gcc/ada/libgnarl/s-osinte__freebsd.ads
! 94d967aaee13bf49e5e0e154e579871c  gcc/ada/libgnarl/s-osinte__gnu.adb
! d92a6b091106c7dc15302b2da5f8f385  gcc/ada/libgnarl/s-osinte__gnu.ads
! 7f1f83f2b78279e17d374e171c1da3b2  gcc/ada/libgnarl/s-osinte__hpux-dce.adb
! e0c8077ba5d78f82edb8990863741a5e  gcc/ada/libgnarl/s-osinte__hpux-dce.ads
! 61ba002d24a1898139d57c6659f7a467  gcc/ada/libgnarl/s-osinte__hpux.ads
! 20b0eac91a67176c6480c2b58394db01  gcc/ada/libgnarl/s-osinte__kfreebsd-gnu.ads
! c2dc31bfe78e2be23b7b2d535f11baaa  gcc/ada/libgnarl/s-osinte__linux.ads
! 0bba0723b2fa1a78b0cfb64b585c3768  gcc/ada/libgnarl/s-osinte__lynxos178.adb
! 6a783fe163cc1c134e01ffaf55f01ffc  gcc/ada/libgnarl/s-osinte__lynxos178e.ads
! b2f475724b00f4a2723878197580326f  gcc/ada/libgnarl/s-osinte__mingw.ads
! b216730c54c5e828ca5b7dac2b417e05  gcc/ada/libgnarl/s-osinte__posix.adb
! 43b654b24a2938805355cc67536f8e84  gcc/ada/libgnarl/s-osinte__qnx.adb
! 7659307fe6f4fd8e8b0955e83d501337  gcc/ada/libgnarl/s-osinte__qnx.ads
! 11a4c6c0c3a746adce0cdbebcb7f422f  gcc/ada/libgnarl/s-osinte__rtems.adb
! a149bb427add9b42e7150916efcc553e  gcc/ada/libgnarl/s-osinte__rtems.ads
! e8139136e67181d207a4bc0e21bca3d4  gcc/ada/libgnarl/s-osinte__solaris.adb
! 2a42053d3365e271d293c77be4acef7b  gcc/ada/libgnarl/s-osinte__solaris.ads
! 9614444f9144e68496f9a8e1e8538a7b  gcc/ada/libgnarl/s-osinte__vxworks.adb
! 1c651ebe5e67b1e21133bc5a09eb547b  gcc/ada/libgnarl/s-osinte__vxworks.ads
! 64841bb86f6b969e11af1fcefa2454c3  gcc/ada/libgnarl/s-osinte__x32.adb
! 58ef31f584db3c9502a3da184e2add28  gcc/ada/libgnarl/s-proinf.adb
! e9f28e02cc9d23357f9ec7506b68e249  gcc/ada/libgnarl/s-proinf.ads
! 31d33405b0cfe77961ef35a906bd4693  gcc/ada/libgnarl/s-qnx.ads
! 6789d16eb66fcb2eaad7647be05d498a  gcc/ada/libgnarl/s-solita.adb
! e08b5261eb0ac9d72b3775c7125f08a0  gcc/ada/libgnarl/s-solita.ads
! 5f3e16fd20c42b3bbb0aa85f4e3f8a9e  gcc/ada/libgnarl/s-stusta.adb
! 43023046957c35d5420a3a4718eb3200  gcc/ada/libgnarl/s-stusta.ads
! 9aa881790166c8c54872708ab8fe901e  gcc/ada/libgnarl/s-taasde.adb
! 8deff7d48b682baee69c7809d6c9d704  gcc/ada/libgnarl/s-taasde.ads
! d05f3a9efa71e83cb835b27efadf72bc  gcc/ada/libgnarl/s-tadeca.adb
! f7eaf2791f9b49aba1fd3d5c6a416ded  gcc/ada/libgnarl/s-tadeca.ads
! c1e39acc92a2cd47ee3b346dd794c136  gcc/ada/libgnarl/s-tadert.adb
! 32b517dbfa28be8866726f2359bdf8c5  gcc/ada/libgnarl/s-tadert.ads
! cc4bd12da716b848652abb349988fbd4  gcc/ada/libgnarl/s-taenca.adb
! 669df20e0e4587d9c34cfbd65f466353  gcc/ada/libgnarl/s-taenca.ads
! 7db93883326fc39efe583995996f33e6  gcc/ada/libgnarl/s-taprob.adb
! 8c7b71e7768a2faea1da1264e8f11328  gcc/ada/libgnarl/s-taprob.ads
! 8311a16e6b9e026dde866d703f4d5fba  gcc/ada/libgnarl/s-taprop.ads
! d05a42683b14ad030cbf5980d8bd99d2  gcc/ada/libgnarl/s-taprop__dummy.adb
! 4656d79b20897060b18f341d629c5bf3  gcc/ada/libgnarl/s-taprop__hpux-dce.adb
! f5b9a5c2afdfd0e78eb9e0f2ce2ec016  gcc/ada/libgnarl/s-taprop__linux.adb
! b3ead933b250c3f98463efc7d0b1c2e5  gcc/ada/libgnarl/s-taprop__mingw.adb
! 8d9b02987ff2afa737e5e73b2f40ba14  gcc/ada/libgnarl/s-taprop__posix.adb
! 0e6815244a0c6f43bc372f8b2cc3a88b  gcc/ada/libgnarl/s-taprop__qnx.adb
! 67243b274ba3b4fa4c31ab936514991e  gcc/ada/libgnarl/s-taprop__solaris.adb
! 25d69db7bd29c299f77c859e944e021d  gcc/ada/libgnarl/s-taprop__vxworks.adb
! 3cd307266d421d79233689e9bdd9c9dc  gcc/ada/libgnarl/s-tarest.adb
! 383efc4895b241c000db671dc71a65cc  gcc/ada/libgnarl/s-tarest.ads
! 4a5e96c9ae150786a9f65f1b9a7a1111  gcc/ada/libgnarl/s-tasdeb.adb
! 19eebbcdb49dc01704df96bbb0fdd3b3  gcc/ada/libgnarl/s-tasdeb.ads
! 5ea51780154765468c309d0dde801545  gcc/ada/libgnarl/s-tasinf.adb
! ce084f07015a52290532a02fc53c981e  gcc/ada/libgnarl/s-tasinf.ads
! 8a9db5715a745a0b757cc22aa56b4863  gcc/ada/libgnarl/s-tasinf__linux.adb
! 25d621fe2fede082b5118f3f5cd634d6  gcc/ada/libgnarl/s-tasinf__linux.ads
! 1c6961c6fbdd8ca49010386358fc4bf9  gcc/ada/libgnarl/s-tasinf__mingw.adb
! 0a79006c32660a51938e645771362489  gcc/ada/libgnarl/s-tasinf__mingw.ads
! dcf282209cdcee9a29e3d7e6ee981d80  gcc/ada/libgnarl/s-tasinf__solaris.adb
! b0d7dfa825d47875d5ca5f8ccd121655  gcc/ada/libgnarl/s-tasinf__solaris.ads
! 472bb9a46eb949b79f2adeca3e510f61  gcc/ada/libgnarl/s-tasinf__vxworks.ads
! d5efd3dbf1cb3f48c36696856ca6619b  gcc/ada/libgnarl/s-tasini.adb
! 4141e989cb7742dae8052c002c1f7f0e  gcc/ada/libgnarl/s-tasini.ads
! 347e7976d5be7aa84673e0376e7fc253  gcc/ada/libgnarl/s-taskin.adb
! 2fbe7a8f76effe5bce49127d9fdfb499  gcc/ada/libgnarl/s-taskin.ads
! fc490f978d6424add0cfaea5e5c159bd  gcc/ada/libgnarl/s-taspri__dummy.ads
! 229b3d44e883f645ee4f177b4b768eb7  gcc/ada/libgnarl/s-taspri__hpux-dce.ads
! 6cfeeaa4b8705a96605283622ffa68fd  gcc/ada/libgnarl/s-taspri__lynxos.ads
! 783aec1775cde14dff2331f69d169f81  gcc/ada/libgnarl/s-taspri__mingw.ads
! 0c38cdd9f53af48348d52dcffbd81970  gcc/ada/libgnarl/s-taspri__posix-noaltstack.ads
! 90d4c33d09452921d7b03677c4a57cbb  gcc/ada/libgnarl/s-taspri__posix.ads
! e757d301cabb69e639adb899f7cd39a0  gcc/ada/libgnarl/s-taspri__solaris.ads
! e6579b728efe55fb67467b8c7ab2d3d0  gcc/ada/libgnarl/s-taspri__vxworks.ads
! 07bc650cde6681ed9c610efa4dd9de78  gcc/ada/libgnarl/s-tasque.adb
! 8581797fb88ba8bbd0270d712afa229b  gcc/ada/libgnarl/s-tasque.ads
! 82229a5d857d136c05ebf85db7dd9753  gcc/ada/libgnarl/s-tasren.adb
! 423009143e4cb131718bd5f21c980b43  gcc/ada/libgnarl/s-tasren.ads
! 83b3c57f64eefcbcec38637e81710c25  gcc/ada/libgnarl/s-tasres.ads
! e2abff9eecb63d39e2b6469d5866fb74  gcc/ada/libgnarl/s-tassta.adb
! 21e26c2702bed3a4e27ac2b9308084b9  gcc/ada/libgnarl/s-tassta.ads
! 6e549acddc6b59aae3c48455f96f5278  gcc/ada/libgnarl/s-tasuti.adb
! 54625bb0adf7c8f9edc8746a282943bd  gcc/ada/libgnarl/s-tasuti.ads
! 6e2944e24bd927853f0aa4014a6e3ded  gcc/ada/libgnarl/s-tataat.adb
! 172d6e1d8a39bf4021399aef7436c406  gcc/ada/libgnarl/s-tataat.ads
! de52d52fe09795bbc91d02d03a883439  gcc/ada/libgnarl/s-tpinop.adb
! cf5a89f1eaa96f50458ba197b76bb6fb  gcc/ada/libgnarl/s-tpinop.ads
! 9e748d99e01d0ef30470531e34556550  gcc/ada/libgnarl/s-tpoaal.adb
! 2c17c733388e6b2445f4587d353c4102  gcc/ada/libgnarl/s-tpoben.adb
! b61899c6ba3fa23cab6ea2c7b3d0f402  gcc/ada/libgnarl/s-tpoben.ads
! fd6fc55ede0d1a7e099c5fad697af5dd  gcc/ada/libgnarl/s-tpobmu.adb
! 7babd0cbbdbf86ee14fbfa274add3b02  gcc/ada/libgnarl/s-tpobmu.ads
! 71786a7aa393d33c4ce6c45c18f50e7c  gcc/ada/libgnarl/s-tpobop.adb
! 1de9c5d5963642343c38dacba67d98a8  gcc/ada/libgnarl/s-tpobop.ads
! d3977babbca06376fe469769e3176393  gcc/ada/libgnarl/s-tpopmo.adb
! dc12e7750f71ee8f76db8835f64b2ef4  gcc/ada/libgnarl/s-tpopsp__posix-foreign.adb
! 168302aadadf844f8ae04cc1673d562b  gcc/ada/libgnarl/s-tpopsp__posix.adb
! 5318c4a1289e3d83310c4cb5807bdffb  gcc/ada/libgnarl/s-tpopsp__solaris.adb
! 9e612b8bb61df68117ed24dd505404b2  gcc/ada/libgnarl/s-tpopsp__tls.adb
! c96707701658b05e01b0024e42d7f0e5  gcc/ada/libgnarl/s-tpopsp__vxworks-rtp.adb
! 15ff4953f666507839b9141e439985ed  gcc/ada/libgnarl/s-tpopsp__vxworks-tls.adb
! a7fd0b5b3432440804c5b6aa4ad9cc65  gcc/ada/libgnarl/s-tpopsp__vxworks.adb
! b3bfc8cff43e55ebdc14d64c7ac61d19  gcc/ada/libgnarl/s-tporft.adb
! 8131b25ee17593fea0546607d4b34f1d  gcc/ada/libgnarl/s-tposen.adb
! 707a474ba747e6017c46d3d088a6759a  gcc/ada/libgnarl/s-tposen.ads
! 5d3b5f48ed6c5fc687b1f8cefb13e970  gcc/ada/libgnarl/s-vxwext.adb
! 11d13bf94a6aa12c7c72d787f93a275b  gcc/ada/libgnarl/s-vxwext.ads
! 8b61e60567ea66db6871dfae868a0504  gcc/ada/libgnarl/s-vxwext__kernel-smp.adb
! 55796f171afb1b6c56f706b9cc498367  gcc/ada/libgnarl/s-vxwext__kernel.adb
! 73dcc67a5ab2b47710e1e9108d51ba1a  gcc/ada/libgnarl/s-vxwext__kernel.ads
! d789876f3fd6a817a170f81bcb758d2a  gcc/ada/libgnarl/s-vxwext__noints.adb
! bc240e4af6d484cbc95eec653b275b75  gcc/ada/libgnarl/s-vxwext__rtp-smp.adb
! a4491dede9c41439a44340df80b70973  gcc/ada/libgnarl/s-vxwext__rtp.adb
! 7c902fd4053ae7b98b54704459d0161b  gcc/ada/libgnarl/s-vxwext__rtp.ads
! 1906bd72a7cd50c6b3c2349741923490  gcc/ada/libgnarl/s-vxwext__vthreads.ads
! 24017e9e4c241d41afced92b67301e73  gcc/ada/libgnarl/s-vxwork__aarch64.ads
! 8d3db91253498775e676889c1958c2ac  gcc/ada/libgnarl/s-vxwork__arm.ads
! 1428f5fe02478c6408483b5f366bca62  gcc/ada/libgnarl/s-vxwork__ppc.ads
! 4eeef39190f215568543c957c9501983  gcc/ada/libgnarl/s-vxwork__x86.ads
! c824c560100bc5e3b4af12ac9195b130  gcc/ada/libgnarl/thread.c
! f3e11c10ce7db141efe8286bdacf8b4f  gcc/ada/libgnat/a-assert.adb
! 1d08488e80ecd5aefb100a1746dfe580  gcc/ada/libgnat/a-assert.ads
! f673c01c841c9bf2c2720d3b3db185e3  gcc/ada/libgnat/a-btgbso.adb
! 00e5fd73a7e8ce9a1cda4d03d489a7db  gcc/ada/libgnat/a-btgbso.ads
! 8143949cc94e4578c8d40a1419980104  gcc/ada/libgnat/a-calari.adb
! 2431aaaeb6cd6111e9eb9f6badc963ef  gcc/ada/libgnat/a-calari.ads
! 9581d59f01f15a069c489f0261ca2c2f  gcc/ada/libgnat/a-calcon.adb
! 0b3d29c0d8123eb24022924d4c5e710d  gcc/ada/libgnat/a-calcon.ads
! eb606ebb3dbe16ce0cb2c59df0e3ae57  gcc/ada/libgnat/a-caldel.adb
! 012e615d9cfe8be150f77cb9c2036bc8  gcc/ada/libgnat/a-caldel.ads
! 1b2f7589968a4bc3001053c0c977000f  gcc/ada/libgnat/a-calend.adb
! 0a81cb7e460bfc4279517aea70e9b9cb  gcc/ada/libgnat/a-calend.ads
! 4954d0bdc0c0ffb1e4bc0211b1647d10  gcc/ada/libgnat/a-calfor.adb
! cbe056b3ed27951cb1dc45961d57b50c  gcc/ada/libgnat/a-calfor.ads
! 8b4db0244ed998a0826cb546f6dce9a3  gcc/ada/libgnat/a-catizo.adb
! 521308dc456e94f0a96a6e4d2161a6cf  gcc/ada/libgnat/a-catizo.ads
! eb4026ac2f50933a655ee17ab6c3f660  gcc/ada/libgnat/a-cbdlli.adb
! f055e631c31fcc4502ed67cb8ad3d241  gcc/ada/libgnat/a-cbdlli.ads
! 5176d1cab4bafa57abe9e6ca3e6d13ce  gcc/ada/libgnat/a-cbhama.adb
! 69100dd9e17b3dc4de417ceb8033d966  gcc/ada/libgnat/a-cbhama.ads
! ae83ab383e98e5ba46af06537ed9cb0e  gcc/ada/libgnat/a-cbhase.adb
! a9ca20b9b527fedecdbabfd02d5e753d  gcc/ada/libgnat/a-cbhase.ads
! a2ca7ffff540f69a2528f159c745cf8b  gcc/ada/libgnat/a-cbmutr.adb
! 89cf22bbf9ca65dc44950e7d069478e5  gcc/ada/libgnat/a-cbmutr.ads
! d8ad6b7a508c492fbb8a5b18d5db9a8e  gcc/ada/libgnat/a-cborma.adb
! fc45e92c3c5506f35ea2978225910666  gcc/ada/libgnat/a-cborma.ads
! e7e5c05a894f093bb1eab569375a77d7  gcc/ada/libgnat/a-cborse.adb
! 046e3e6fe9c993752288b74c1bed54a0  gcc/ada/libgnat/a-cborse.ads
! 35131a9bf99e2f60f0dd91645b7fb358  gcc/ada/libgnat/a-cbprqu.adb
! c960e3957ea5d2e3fb8cf370c613ce88  gcc/ada/libgnat/a-cbprqu.ads
! 9ada3197869a0093ab28913a3f488939  gcc/ada/libgnat/a-cbsyqu.adb
! ef5c35a0034b5a8c48c0dc27f882b13c  gcc/ada/libgnat/a-cbsyqu.ads
! a50cbd1e3fcefe9a042ab293e486b98a  gcc/ada/libgnat/a-cdlili.adb
! 5534ac3d339142904d02ecf0d478e8ed  gcc/ada/libgnat/a-cdlili.ads
! 6a49085c4dbddb6f9406f02ea64eb728  gcc/ada/libgnat/a-cfdlli.adb
! 78ae112110a9ef2acbb70a075340dfff  gcc/ada/libgnat/a-cfdlli.ads
! 703a76a892f3206315156a203616c692  gcc/ada/libgnat/a-cfhama.adb
! f116e12c715b04483ffad887a0b6dc01  gcc/ada/libgnat/a-cfhama.ads
! 00af67d4a62baedd536143aa31439457  gcc/ada/libgnat/a-cfhase.adb
! 31db9e5ea05ea37d6a2c1c6e6618d4c8  gcc/ada/libgnat/a-cfhase.ads
! 58c606b2c7e87b40a27f90de807d2b16  gcc/ada/libgnat/a-cfinve.adb
! 2dd311833e51ef635b7f2858c0530b11  gcc/ada/libgnat/a-cfinve.ads
! 4a887ee2321b7753c800c8385da0e7ca  gcc/ada/libgnat/a-cforma.adb
! 24b140912e35dbe822c90a97203a2f11  gcc/ada/libgnat/a-cforma.ads
! 7c1c10f1403860b16a4f8f9d87a3ff13  gcc/ada/libgnat/a-cforse.adb
! 580751be3b74c35144a44eaeb823a30d  gcc/ada/libgnat/a-cforse.ads
! 3328f515b8260a456ecf69d4752bc2ad  gcc/ada/libgnat/a-cgaaso.adb
! 0f451d80be76fba2d3622f3c14304fa7  gcc/ada/libgnat/a-cgaaso.ads
! 69ee77763906557fd2cc8413055dfaae  gcc/ada/libgnat/a-cgarso.adb
! c228c68b02c13bfba83a7b996edb1114  gcc/ada/libgnat/a-cgarso.ads
! 3608eb45e3bc4b38cef4f50a5b02dfff  gcc/ada/libgnat/a-cgcaso.adb
! 68226484befc5e389cd3dafaab608090  gcc/ada/libgnat/a-cgcaso.ads
! 7ff5f094e9abb38a7be3c6568db7d9a1  gcc/ada/libgnat/a-chacon.adb
! 0a0c7679d76a7233376ffaed3fb8b73e  gcc/ada/libgnat/a-chacon.ads
! 837d0623b93a85a84990e1ba0cc55bad  gcc/ada/libgnat/a-chahan.adb
! 7c290b16330acf8d2728a18f6c3735d8  gcc/ada/libgnat/a-chahan.ads
! 00b37c98f6f96d2b5499c1f98cb503f0  gcc/ada/libgnat/a-charac.ads
! afa2e1575497c9ce53cef7122846df58  gcc/ada/libgnat/a-chlat1.ads
! f64eabd233a0f52b3be33288c33a0d18  gcc/ada/libgnat/a-chlat9.ads
! 3ebbafc2ff8b9129b77f3b9e5072a722  gcc/ada/libgnat/a-chtgbk.adb
! 8ebf76e7f27c638887ec1b01b88b2895  gcc/ada/libgnat/a-chtgbk.ads
! 0a50b6fa44f0bcd636105c017e176532  gcc/ada/libgnat/a-chtgbo.adb
! 6cc941dc490aa79482b11d9b981a8cc1  gcc/ada/libgnat/a-chtgbo.ads
! 4aff570f3c729345e8d054ed8b35e3cd  gcc/ada/libgnat/a-chtgke.adb
! da8faae94d54da20199d7d62ced030c3  gcc/ada/libgnat/a-chtgke.ads
! 593e44cefe3688de4bef4091519518b1  gcc/ada/libgnat/a-chtgop.adb
! 18d575f9fa52c11b1c8aeadf13e87ee9  gcc/ada/libgnat/a-chtgop.ads
! abf6a9e03a2c0b656c50f9c1b6f1a7f5  gcc/ada/libgnat/a-chzla1.ads
! a28099e3b905cc0c0db8aab176655467  gcc/ada/libgnat/a-chzla9.ads
! ebfd59d48227fdfcb474928123415475  gcc/ada/libgnat/a-cidlli.adb
! 7a98b87fdce43ce395f1ebba64426f54  gcc/ada/libgnat/a-cidlli.ads
! b48cd67bca75ba5ddb10c6fe14700a80  gcc/ada/libgnat/a-cihama.adb
! 9364850a2cfd927b995a154af1eb41e6  gcc/ada/libgnat/a-cihama.ads
! dd08b38ba6731bc793fac80fe3600e3f  gcc/ada/libgnat/a-cihase.adb
! cdaa6417b6a809e152f2d8e27574fe0b  gcc/ada/libgnat/a-cihase.ads
! f82436c1543024b9de6a668bb1493285  gcc/ada/libgnat/a-cimutr.adb
! e5fa880c326f000ade67b23c7695543d  gcc/ada/libgnat/a-cimutr.ads
! 3123f719a362d03f618cd3b175ae4a12  gcc/ada/libgnat/a-ciorma.adb
! 7a4200e118bca98955a6a9199f7a69eb  gcc/ada/libgnat/a-ciorma.ads
! 2e89501087ff204a998be2b46d2ad5f3  gcc/ada/libgnat/a-ciormu.adb
! 8a7def0917d9b947c9bfc74d6fa628e8  gcc/ada/libgnat/a-ciormu.ads
! d4ecf94112968d11607f545d455c9ce8  gcc/ada/libgnat/a-ciorse.adb
! d214a216ffd976b5c5de421a6dbd2cf8  gcc/ada/libgnat/a-ciorse.ads
! 3158e57aa66486942183f803a7dc0c8a  gcc/ada/libgnat/a-clrefi.adb
! f7c1b3997dc3372053c7a3bdde7fce8e  gcc/ada/libgnat/a-clrefi.ads
! b753eba46554c3ca8fefbb07546b75b5  gcc/ada/libgnat/a-coboho.adb
! a29319bf30d702a80e00bd0f6b2c1ed4  gcc/ada/libgnat/a-coboho.ads
! 08e17c60c61c85275fca7c77525bf5d7  gcc/ada/libgnat/a-cobove.adb
! 658d9abebb8d53d9c3ff84634de9cfde  gcc/ada/libgnat/a-cobove.ads
! cb7df9f0df5cda0185821efb44df3ea8  gcc/ada/libgnat/a-cofove.adb
! 1e074261142bb6896c4a8cebe8c6679f  gcc/ada/libgnat/a-cofove.ads
! ae155359e58e84e1d2b78a8382dbd5e5  gcc/ada/libgnat/a-cofuba.adb
! 582f759a54538a8d0f179f30d619af02  gcc/ada/libgnat/a-cofuba.ads
! 012267aa116bb4ef84f9cb7d39c4bc29  gcc/ada/libgnat/a-cofuma.adb
! 747e72641f7170db90f293811a1da261  gcc/ada/libgnat/a-cofuma.ads
! 3ef6ac94de40df8826a4c4d4a6bc6a58  gcc/ada/libgnat/a-cofuse.adb
! 5f12d5bd1976b93d9a1b3e4b13047563  gcc/ada/libgnat/a-cofuse.ads
! b9bff54ed4a8f4fcc3a4dee3d47dcb3e  gcc/ada/libgnat/a-cofuve.adb
! 3806d675c2b92b0605fce3309e7a4e90  gcc/ada/libgnat/a-cofuve.ads
! 50c6c4288c53dfa17ccbf02a40ec43ad  gcc/ada/libgnat/a-cogeso.adb
! e987fd3ed5bb90a258804d24dfa1bbec  gcc/ada/libgnat/a-cogeso.ads
! 12782ed68544596f8b96d073d33d9015  gcc/ada/libgnat/a-cohama.adb
! f697166988fd8b69691b114087300fc6  gcc/ada/libgnat/a-cohama.ads
! f4aa26d86979c7af4f66c0ef611728f0  gcc/ada/libgnat/a-cohase.adb
! 3f01c9b38243e8f83c3af6394fe1af14  gcc/ada/libgnat/a-cohase.ads
! da68bee6f3e45109cca73bdd88ac995e  gcc/ada/libgnat/a-cohata.ads
! acbacbd3f2259204386c72f01e42134a  gcc/ada/libgnat/a-coinho.adb
! dc4463d1141328401d1a69a45d9efcf2  gcc/ada/libgnat/a-coinho.ads
! ef5f4cb0decb3e5b9328769950a92c6e  gcc/ada/libgnat/a-coinho__shared.adb
! 9dbefc2c7091d79fde0dc02f53b61a81  gcc/ada/libgnat/a-coinho__shared.ads
! f409439bc0ea9c11c0d023abc79dfb46  gcc/ada/libgnat/a-coinve.adb
! 404516dc8ab8055d1c9079ae1e9ab6bd  gcc/ada/libgnat/a-coinve.ads
! 06bc87a53ac0730a1a59ca5b57965487  gcc/ada/libgnat/a-colien.adb
! 50ea4df88f25e3200aa8d8a5305a9904  gcc/ada/libgnat/a-colien.ads
! ecd7b9a52de9632883f9a698a721b14b  gcc/ada/libgnat/a-colire.adb
! 561d958501aef8cc71ee9e8b036ceacb  gcc/ada/libgnat/a-colire.ads
! e80e5e3543543752e147a331f9454b6e  gcc/ada/libgnat/a-comlin.adb
! f43aa06bf7da7afbbe536423c5bcf5b2  gcc/ada/libgnat/a-comlin.ads
! 299e8d9f5c2bf7e2da7f2dc6465fc013  gcc/ada/libgnat/a-comutr.adb
! e41401298573d6bf86c8327078c404fb  gcc/ada/libgnat/a-comutr.ads
! a0262e0c99e65c873e7f6b6a52e893ff  gcc/ada/libgnat/a-conhel.adb
! 42b5896f31c0a38976bbc7a46c99c72d  gcc/ada/libgnat/a-conhel.ads
! 68936f8f1ee9f0396348cadc777cd446  gcc/ada/libgnat/a-contai.ads
! 45eb78d95d507f3b59ffd64359b8cd41  gcc/ada/libgnat/a-convec.adb
! 5a427c63eee6c5fbf17fbe3b06beaa1c  gcc/ada/libgnat/a-convec.ads
! aa072460edf05680f97c7c49bb6e981c  gcc/ada/libgnat/a-coorma.adb
! ac8961187f021816b6dee083de5719d5  gcc/ada/libgnat/a-coorma.ads
! e1751084764223fa8e8b4063a64f58f0  gcc/ada/libgnat/a-coormu.adb
! 9cc28350eb525c3448860fd53410cb8c  gcc/ada/libgnat/a-coormu.ads
! 3474e3855ea0eee1cedfc2698191eea7  gcc/ada/libgnat/a-coorse.adb
! ac7f48215af0e98fe25ec831c3daafb6  gcc/ada/libgnat/a-coorse.ads
! 7ec62ca9221f62e238c9cc1a8e5f2b1a  gcc/ada/libgnat/a-coprnu.adb
! 132abb4d48aef6fb522e9ae8ab25bd9c  gcc/ada/libgnat/a-coprnu.ads
! 2399731eabd6e0bbc0a8f28a60d3c3c8  gcc/ada/libgnat/a-coteio.ads
! 53ecd5747f1bb456796acdee4577bf30  gcc/ada/libgnat/a-crbltr.ads
! e6c0f0d113df9aa84bc12a78ea40a6d0  gcc/ada/libgnat/a-crbtgk.adb
! 99b7d060adb2cca25b378a9dc6f31b2e  gcc/ada/libgnat/a-crbtgk.ads
! 110826d1d0026754f0800ae15c4dd705  gcc/ada/libgnat/a-crbtgo.adb
! f45751c4702532cb077879eaea08c64f  gcc/ada/libgnat/a-crbtgo.ads
! 677766959ae51eb1b3c4b50729e3c6c1  gcc/ada/libgnat/a-crdlli.adb
! 9ce1835c86f45a6ef982fb29cc9c2005  gcc/ada/libgnat/a-crdlli.ads
! 1a27dd60798056b8fed51b27421b883d  gcc/ada/libgnat/a-csquin.ads
! c49a4dc8d28b0faad6a3b8193123e785  gcc/ada/libgnat/a-cuprqu.adb
! c5b24c5e1b541e6c8ef0157619af9e88  gcc/ada/libgnat/a-cuprqu.ads
! 80e15d54fb6934084001db0c26f298b6  gcc/ada/libgnat/a-cusyqu.adb
! b4ffdbeeb4a98dc08d4de04a8d2a5f36  gcc/ada/libgnat/a-cusyqu.ads
! b2f29201bce57f5dd4e817409f40f135  gcc/ada/libgnat/a-cwila1.ads
! 563b422d542abba29b6fe4b3890ce850  gcc/ada/libgnat/a-cwila9.ads
! 5ae7499364d3db72c2382872ed8abdfa  gcc/ada/libgnat/a-decima.adb
! acae0d751d7493397546bd3134a10fdf  gcc/ada/libgnat/a-decima.ads
! 89c83d2d9807d1e8ab3a19cb73761dba  gcc/ada/libgnat/a-dhfina.ads
! 30bea64547fbd9cfc26311d5682396a0  gcc/ada/libgnat/a-diocst.adb
! 3a0cb8d539485ecbf9b4e9811c384c23  gcc/ada/libgnat/a-diocst.ads
! 76127dc0aeb1500b6981d32b62b29ef6  gcc/ada/libgnat/a-direct.adb
! b6cd49b1662d2d5a660241dfbd1d5b5f  gcc/ada/libgnat/a-direct.ads
! 7c16637bc988854df77ce896ff406743  gcc/ada/libgnat/a-direio.adb
! b9ee9665a06f28853ebeff873bf27468  gcc/ada/libgnat/a-direio.ads
! 7f12536fcc22bd736c0a270cebb02dfd  gcc/ada/libgnat/a-dirval.adb
! 438e6b25f164df48785ccb0008b4faee  gcc/ada/libgnat/a-dirval.ads
! aef1a688bc805796e9828a3c4aceabae  gcc/ada/libgnat/a-dirval__mingw.adb
! 895cb6847604ab921b8eea7fccf57139  gcc/ada/libgnat/a-einuoc.adb
! 07c3a765a07da564d030b3a60b55bc76  gcc/ada/libgnat/a-einuoc.ads
! e040195ae0836667035ce61c901a671c  gcc/ada/libgnat/a-elchha.adb
! db4707bcae9a1a1b3b2ba871a47d4aa9  gcc/ada/libgnat/a-elchha.ads
! cdd3c64112d401eaf7994ac01d266f75  gcc/ada/libgnat/a-elchha__vxworks-ppc-full.adb
! cf5b7472d528f8fcc6fccc80393b7b19  gcc/ada/libgnat/a-envvar.adb
! e77a221e76c3e19394bf433277f04c0f  gcc/ada/libgnat/a-envvar.ads
! 96ae4a3841033cafdb2a5414aefd5af8  gcc/ada/libgnat/a-excach.adb
! 4e58ed64bf1cb2227f35e01067908346  gcc/ada/libgnat/a-except.adb
! f8a3d9083d0037eb271a2e323feec96c  gcc/ada/libgnat/a-except.ads
! 8752bfba8a14416619cce913ef811e20  gcc/ada/libgnat/a-excpol.adb
! 57b3da033f0bbdecd7a1e51d606a2125  gcc/ada/libgnat/a-excpol__abort.adb
! d240db18c5f0a2495bda72ebe31a4b72  gcc/ada/libgnat/a-exctra.adb
! b8ae0517aa3568d1af7d1b4a5b46028d  gcc/ada/libgnat/a-exctra.ads
! 0582af29cbfb9cd9938844536cfd03de  gcc/ada/libgnat/a-exexda.adb
! eaafca63e5563e81aa942a5cf14b145d  gcc/ada/libgnat/a-exexpr.adb
! 16374d1910fd3cb78b18846388490802  gcc/ada/libgnat/a-exextr.adb
! bd111ecaa8d24375b8e67e760a189821  gcc/ada/libgnat/a-exstat.adb
! 46477817a9a2b763fc8339865dda2da4  gcc/ada/libgnat/a-finali.adb
! 9b380e50a23b2d03011cc1e96e1892f8  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
! 195c855e8e96de38bc292de9a4544754  gcc/ada/libgnat/a-inteio.ads
! f5cead0a0f9422214238f41f7aaa23f7  gcc/ada/libgnat/a-ioexce.ads
! acc89489d76f468d41b8773192282dba  gcc/ada/libgnat/a-iteint.ads
! 39b8821573ea224defa1f1b9b1a5248e  gcc/ada/libgnat/a-iwteio.ads
! b237e9ea879dc91ffa87b41e0d78b2c2  gcc/ada/libgnat/a-izteio.ads
! 6a6cf739ac25eff18ec7bded73be1862  gcc/ada/libgnat/a-lcteio.ads
! e5522949af329f522f7d5ebe5482060c  gcc/ada/libgnat/a-lfteio.ads
! 1c50d32a4380ca9cdb764792f18c0524  gcc/ada/libgnat/a-lfwtio.ads
! 5c37ae1e15081be2b83c51ab12dbca08  gcc/ada/libgnat/a-lfztio.ads
! 529f66f8bd35529868a54d8055a37dc8  gcc/ada/libgnat/a-liteio.ads
! 875cce59f97627deccd3ab293d066775  gcc/ada/libgnat/a-liwtio.ads
! c85d4e023cecae32f419a1d837ecd5bc  gcc/ada/libgnat/a-liztio.ads
! a0b713490d7990a16271d723a2ffc358  gcc/ada/libgnat/a-llctio.ads
! c1b0652df739806cc66f6509266b7f2f  gcc/ada/libgnat/a-llftio.ads
! de36bb3500d42e22590ce1501e11ef70  gcc/ada/libgnat/a-llfwti.ads
! 127f827481c8b320789bc1adb7b3e72c  gcc/ada/libgnat/a-llfzti.ads
! e0dd600379e462e3991feecefb0505c7  gcc/ada/libgnat/a-llitio.ads
! 1f58cac87b9546727c792ea430084a50  gcc/ada/libgnat/a-lliwti.ads
! efa823912da5d16e6f8d4aa6f78b768a  gcc/ada/libgnat/a-llizti.ads
! 1fd10b360115dffdf718a9a639791467  gcc/ada/libgnat/a-locale.adb
! eb3637c58f5856867145b583e568b808  gcc/ada/libgnat/a-locale.ads
! 4952f183ce545e6e57497b9147f05dd5  gcc/ada/libgnat/a-ncelfu.ads
! 28a8bc6ce9b11ea2b5d5701a0aea2fb0  gcc/ada/libgnat/a-ngcefu.adb
! 2e229d27b615410dbc242fd1d7d4bd98  gcc/ada/libgnat/a-ngcefu.ads
! c5be391f6c861b5a57088102cb2ebf32  gcc/ada/libgnat/a-ngcoar.adb
! a26d13d8c2030d72490c9b3c42f94f28  gcc/ada/libgnat/a-ngcoar.ads
! 76650ef23ac0ea7e4a8bfb8549e86c67  gcc/ada/libgnat/a-ngcoty.adb
! 39ca35728a47b7ca299e2df4e6b50225  gcc/ada/libgnat/a-ngcoty.ads
! 67b8263ef46f4ddb2d147da1040de0c6  gcc/ada/libgnat/a-ngelfu.adb
! 4391a2c5b49e3e81d7ec745a53898170  gcc/ada/libgnat/a-ngelfu.ads
! 3eda53598ea0bef17200145ca17c4eed  gcc/ada/libgnat/a-ngrear.adb
! 2b272b59d5c89d110654864b6a8f7b64  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
! 22a793d6936415ee70b725c6d2b2020a  gcc/ada/libgnat/a-nucoar.ads
! bda677b507deb699333f9baa2c37a694  gcc/ada/libgnat/a-nucoty.ads
! dddf30f5daef87c34c9649f1e353b5b9  gcc/ada/libgnat/a-nudira.adb
! b19be1841e04df53b6a53e8262dc9a11  gcc/ada/libgnat/a-nudira.ads
! bd9eed0e40585ba218b0badca225b64c  gcc/ada/libgnat/a-nuelfu.ads
! 44152b149cb56afc25dc42560ad894ef  gcc/ada/libgnat/a-nuflra.adb
! 71c43268210439e177940f91b57a2e91  gcc/ada/libgnat/a-nuflra.ads
! 4a31b49eb09013cf3d1ebac936daf11f  gcc/ada/libgnat/a-numaux.ads
! cdcddc697871eeffe509f05038a3ab63  gcc/ada/libgnat/a-numaux__darwin.adb
! 3c3fb2a38b30489225ef6a8b3cbe6651  gcc/ada/libgnat/a-numaux__darwin.ads
! 4e9a97d021caf3a30f2b991e4820f1d8  gcc/ada/libgnat/a-numaux__libc-x86.ads
! e6c704aa04047ffcceb4b5b4d7d224a6  gcc/ada/libgnat/a-numaux__vxworks.ads
! c6146084b772f5b7dcb6d243fb1d0b57  gcc/ada/libgnat/a-numaux__x86.adb
! def68640311aabd8fc32fea224e4e433  gcc/ada/libgnat/a-numaux__x86.ads
! 9f619edc4ba691a0be947731d8134f51  gcc/ada/libgnat/a-numeri.ads
! 88b948f6713b009c76e8b3b7b75a22c9  gcc/ada/libgnat/a-nurear.ads
! cc636e3bbf3332a3a846bc1b2f4e9565  gcc/ada/libgnat/a-rbtgbk.adb
! dd626fba6f2bf9dfef6607f0bb347082  gcc/ada/libgnat/a-rbtgbk.ads
! 1e14c1ee1ed8c60ad08235703d46f133  gcc/ada/libgnat/a-rbtgbo.adb
! fe10c28e8a606640746efcd2e28a6d77  gcc/ada/libgnat/a-rbtgbo.ads
! 6ecb2861747c7293290fa4915b5efc51  gcc/ada/libgnat/a-rbtgso.adb
! 2841b0b1145678d44e9d0dd2ee8946b8  gcc/ada/libgnat/a-rbtgso.ads
! 8ab4494f3dab72068fd5a891383221a6  gcc/ada/libgnat/a-sbecin.adb
! 156810da7923788e12a5d89c007da7d4  gcc/ada/libgnat/a-sbecin.ads
! d61e1077f33e7a8a743f958e7cb86b78  gcc/ada/libgnat/a-sbhcin.adb
! 234f521379d6e4cb47ce46102a874f89  gcc/ada/libgnat/a-sbhcin.ads
! 07af22599dffed94845173a45330ba3f  gcc/ada/libgnat/a-sblcin.adb
! 675737b57bbbc6578c1124e1fee6e8d0  gcc/ada/libgnat/a-sblcin.ads
! 67b280f23d76be962783b397ef7e60c7  gcc/ada/libgnat/a-scteio.ads
! 9d50817cc0a9f38fc4d3d49f8abbe1e9  gcc/ada/libgnat/a-secain.adb
! d9d752252968820545454bed4a3b5b52  gcc/ada/libgnat/a-secain.ads
! 18c38b669c8d87c05868e68375638f1f  gcc/ada/libgnat/a-sequio.adb
! 94225bd570810a9212f73471b700bd5b  gcc/ada/libgnat/a-sequio.ads
! 6ce0018ba407cb904303b07d121a01b4  gcc/ada/libgnat/a-sfecin.ads
! c42f532cf271812a1d7909af0391477b  gcc/ada/libgnat/a-sfhcin.ads
! f3fcc6bf37c52e2a542044b3ac381cc5  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
! 1bfc97f83935344bf8c507dd757bceda  gcc/ada/libgnat/a-shcain.adb
! 2ce622f65b48dcfac41ff73cddcc3bcd  gcc/ada/libgnat/a-shcain.ads
! f6c93f142d7c73b6516aedec0751bb33  gcc/ada/libgnat/a-siocst.adb
! 9c058a6f2854284d432764feca57986d  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
! 7a93121261594b9be1dd08a5866f8ea2  gcc/ada/libgnat/a-slcain.adb
! 6d36750808edf2d28016ed875db2d717  gcc/ada/libgnat/a-slcain.ads
! 3a01ad6f64ff4bb3f9bfd0ac608152bf  gcc/ada/libgnat/a-ssicst.adb
! 39a013a845d42a1d5a923ffe301c2eb0  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
! 658b93fb20c80997e899849865dd3359  gcc/ada/libgnat/a-stboha.adb
! 8274f77970c3b1ed9a51aa8ddf6a4d0f  gcc/ada/libgnat/a-stboha.ads
! 756f44b0c7f4483ecd7302aee8bc110a  gcc/ada/libgnat/a-stfiha.ads
! aa04b9b1be73a474c6568906b22166ab  gcc/ada/libgnat/a-stmaco.ads
! 8a20fb76d0c1e6c2032fd5ae07c1c171  gcc/ada/libgnat/a-storio.adb
! 34175bb2f712422ab4cfd24b3e452b0d  gcc/ada/libgnat/a-storio.ads
! e0b95571a0c93936d57ffd029b6d514b  gcc/ada/libgnat/a-strbou.adb
! 62d9950d9644d5a7ffbdef7526f4e338  gcc/ada/libgnat/a-strbou.ads
! 0b0b5b8651e5021b4e12e2e77e72068d  gcc/ada/libgnat/a-stream.adb
! be86a6a041e2bc8627ee2fb0966b06ec  gcc/ada/libgnat/a-stream.ads
! 3e53eb7cbacbaf8750b0f61ac78e03a3  gcc/ada/libgnat/a-strfix.adb
! 9006699bea6bd78b99bc62baadc65e25  gcc/ada/libgnat/a-strfix.ads
! 1c8c4b29f98dcd5642c478b397eccc2a  gcc/ada/libgnat/a-strhas.adb
! 930f541d2f838554d072231b1bcb510a  gcc/ada/libgnat/a-strhas.ads
! de0f93afe5feaf6819d5a9a2e09172e6  gcc/ada/libgnat/a-string.ads
! a039fcce1304a53c3395cb042cc90e30  gcc/ada/libgnat/a-strmap.adb
! 306e40bdc46ccc28248e02dc45d103b0  gcc/ada/libgnat/a-strmap.ads
! e3be58f6bd4c051218924c0b90ac1016  gcc/ada/libgnat/a-strsea.adb
! 6a83c0e89e4da028af6f323907e5ddb3  gcc/ada/libgnat/a-strsea.ads
! 026fa86fd8fea23ebb8317381006cdef  gcc/ada/libgnat/a-strsup.adb
! c3a64bec3b8d8a86f77b656133c26706  gcc/ada/libgnat/a-strsup.ads
! 8d0d9bed76b962298c24ec08fb9e32e1  gcc/ada/libgnat/a-strunb.adb
! f183214b109f9ba63075b6523412c512  gcc/ada/libgnat/a-strunb.ads
! 07932ee81451f0a21a08867b3e2c4efa  gcc/ada/libgnat/a-strunb__shared.adb
! 403367e8d5e5cdcfceb1060cc39b4f27  gcc/ada/libgnat/a-strunb__shared.ads
! de7a86f82842d16eae83a8f7f28a1c1a  gcc/ada/libgnat/a-ststio.adb
! 314f76cb6baaa9225a59699033debaea  gcc/ada/libgnat/a-ststio.ads
! 403b5ba5bfdd6443556cc6b1e90cd069  gcc/ada/libgnat/a-stunau.adb
! eedbbbbd37badcb0a21a46621e0c0e88  gcc/ada/libgnat/a-stunau.ads
! 7dd8fab3471e6af56b4012eb6ad4213a  gcc/ada/libgnat/a-stunau__shared.adb
! a2289d76b998c053afcbf4c4f11f91f9  gcc/ada/libgnat/a-stunha.adb
! da4a8d13f76850d714a8213ada7477d2  gcc/ada/libgnat/a-stunha.ads
! 0fc05fba22083005cbf683c8662bb36c  gcc/ada/libgnat/a-stuten.adb
! 91801320eab187501cb48bd0c74a06b0  gcc/ada/libgnat/a-stuten.ads
! 1571a04def0d4413092c0544c9bec775  gcc/ada/libgnat/a-stwibo.adb
! 8d301e18595f8eb38415239f46989ebb  gcc/ada/libgnat/a-stwibo.ads
! de1ed32adb48294a38b14dd89369353d  gcc/ada/libgnat/a-stwifi.adb
! b0cf3f05e49e1640bf231034269cb951  gcc/ada/libgnat/a-stwifi.ads
! 8866fd5995eb969ab50210c2433d1add  gcc/ada/libgnat/a-stwiha.adb
! 3255ad19d07346032c9d005d6a27475f  gcc/ada/libgnat/a-stwiha.ads
! a0a260a46562f4889f06ef1a400a0411  gcc/ada/libgnat/a-stwima.adb
! 56a16edf70c92a2905f785900617c4af  gcc/ada/libgnat/a-stwima.ads
! 9c0077f927141d54f848c3693d74962a  gcc/ada/libgnat/a-stwise.adb
! cbc243e0b089f7850b01c2a38e5ed7a2  gcc/ada/libgnat/a-stwise.ads
! df65b20c685bedda89198c2dcfd99105  gcc/ada/libgnat/a-stwisu.adb
! 97dfce69b212dba340a25a18a7efce57  gcc/ada/libgnat/a-stwisu.ads
! 6a490a4ca55deaf11586e149fae5b827  gcc/ada/libgnat/a-stwiun.adb
! 73c3f223b1986843270e1fa0bab52ac6  gcc/ada/libgnat/a-stwiun.ads
! d49316e5b1d9f4a3d7739df9dceb6dad  gcc/ada/libgnat/a-stwiun__shared.adb
! 83eecce397d57a2d78c801699009ac3b  gcc/ada/libgnat/a-stwiun__shared.ads
! 274265c859503134255269da4a8eaef1  gcc/ada/libgnat/a-stzbou.adb
! b7fbc3ba5345f7ac23a47343be168aa2  gcc/ada/libgnat/a-stzbou.ads
! 2ead6230ef45effb3517a31492d2de91  gcc/ada/libgnat/a-stzfix.adb
! f3ddc25c20b07c4072918c6c0ea20ff9  gcc/ada/libgnat/a-stzfix.ads
! 7b037ecb8856ef9d8210027d95052d25  gcc/ada/libgnat/a-stzhas.adb
! 3df83f23d7cac52e295edff333f62d18  gcc/ada/libgnat/a-stzhas.ads
! 787f19bbb96d3eb05713a2b2838c7c94  gcc/ada/libgnat/a-stzmap.adb
! b18dec7239c776e03b0d9a7bac88193a  gcc/ada/libgnat/a-stzmap.ads
! c1b1f8d8d78d62eb9a9e4d1d63f70dee  gcc/ada/libgnat/a-stzsea.adb
! ffd019c94df31bc8eac0e02b8d70af93  gcc/ada/libgnat/a-stzsea.ads
! b86eea1a019deef8dcc8a785a4fdbd96  gcc/ada/libgnat/a-stzsup.adb
! 356e0124112b957a6c65d2ab629dcc3b  gcc/ada/libgnat/a-stzsup.ads
! 92093363506a21cdfe6d801050bf4e98  gcc/ada/libgnat/a-stzunb.adb
! a85b59095114cfffb1e3faf9433fbbc9  gcc/ada/libgnat/a-stzunb.ads
! 1e0801c0ff12b5312bd3fb47862c7498  gcc/ada/libgnat/a-stzunb__shared.adb
! cd9ccde2b413feaaa46d17dba7889735  gcc/ada/libgnat/a-stzunb__shared.ads
! b4047a0d8f61610aa201dc6648345d72  gcc/ada/libgnat/a-suecin.adb
! 011d225006692b0c3b246a46fb135faa  gcc/ada/libgnat/a-suecin.ads
! 28a6c9864c3eb3a498e507c83b869eef  gcc/ada/libgnat/a-suenco.adb
! 24c625ef90e191bc1baa69c58ae2600f  gcc/ada/libgnat/a-suenco.ads
! 825655a47f02f637550431986956ae67  gcc/ada/libgnat/a-suenst.adb
! 5a81ae9196b241db71c16198169dbed7  gcc/ada/libgnat/a-suenst.ads
! c8bbd0ade98ad8acde3118a4d877608f  gcc/ada/libgnat/a-suewst.adb
! 88073629f5531c7f6fba98820112cd02  gcc/ada/libgnat/a-suewst.ads
! 83f9733ef23c902801db6d9b187f3078  gcc/ada/libgnat/a-suezst.adb
! 5aaf32a65e951f050f1cbb5adf5af9d2  gcc/ada/libgnat/a-suezst.ads
! 2ff3bca089392aa16fa015cb4677c599  gcc/ada/libgnat/a-suhcin.adb
! 7824626f1c9463d5e4c4a40164f321dd  gcc/ada/libgnat/a-suhcin.ads
! 7369369015ec6b322d83a41dc9ce8156  gcc/ada/libgnat/a-sulcin.adb
! cba5cdfc66a1c568ab4b557d943acf0a  gcc/ada/libgnat/a-sulcin.ads
! 1656cf9ccb08c95ff8bbed63a2d1727a  gcc/ada/libgnat/a-suteio.adb
! 3b1329cf5850bfc4ca699c791456251b  gcc/ada/libgnat/a-suteio.ads
! 106dced9bdaf1577b3e25f63fcf195f1  gcc/ada/libgnat/a-suteio__shared.adb
! 7f0b4cb8955cc34ae41cca6f63f5eef9  gcc/ada/libgnat/a-swbwha.adb
! 65f3f68c6718760b4c2b0beba2af9f82  gcc/ada/libgnat/a-swbwha.ads
! aaf273ef9a113dedcab8fb87b71b7365  gcc/ada/libgnat/a-swfwha.ads
! 0fbf7a46259416a7cc8023071e782254  gcc/ada/libgnat/a-swmwco.ads
! 17d538825e8f67f0af6228585326a3ac  gcc/ada/libgnat/a-swunau.adb
! ba4a1eed7a8333068395edece313d243  gcc/ada/libgnat/a-swunau.ads
! 6288bfba907b6e32ff4c6dca9b36b24a  gcc/ada/libgnat/a-swunau__shared.adb
! 1646114e2047a1fff08664e45db067f2  gcc/ada/libgnat/a-swuwha.adb
! 45d76b5b911889e181b3717ab6c91651  gcc/ada/libgnat/a-swuwha.ads
! 0b898ba863fd8f96036e868b20bff368  gcc/ada/libgnat/a-swuwti.adb
! f31948f373952d18dca53587140cdaa6  gcc/ada/libgnat/a-swuwti.ads
! a2ce530c8bdf23129ef0bb1620b3b820  gcc/ada/libgnat/a-swuwti__shared.adb
! 02798b0ce887d85451ed1f74c006cee3  gcc/ada/libgnat/a-szbzha.adb
! 18b9cf476495930cec4ac3eb881257db  gcc/ada/libgnat/a-szbzha.ads
! 32bb3b01e46ff7648c862537bd77aa0d  gcc/ada/libgnat/a-szfzha.ads
! eff62cf7cb8d5b9e6b56e9df51b6f0fc  gcc/ada/libgnat/a-szmzco.ads
! 0376137b25d70184d9e3593de71ca01e  gcc/ada/libgnat/a-szunau.adb
! 2647be4e9a3a66c88838427ac96e1a2b  gcc/ada/libgnat/a-szunau.ads
! af01dc672df26e8d6b251d358ede984a  gcc/ada/libgnat/a-szunau__shared.adb
! e7c36df69b366616088c7c66792f027e  gcc/ada/libgnat/a-szuzha.adb
! 01cf107c9e66d7e5284c9b7ce2e2ed7e  gcc/ada/libgnat/a-szuzha.ads
! f0e32aec3f90bea6bdd878ad94f88291  gcc/ada/libgnat/a-szuzti.adb
! 841ea576341715c340da24d667e71705  gcc/ada/libgnat/a-szuzti.ads
! 6b7fbd6b7819e3eca1ea6a2c559ad893  gcc/ada/libgnat/a-szuzti__shared.adb
! 8b5e9af4ff0ddd33a93cde35f6d3de36  gcc/ada/libgnat/a-tags.adb
! f7aacdcca781dd7e171faf8aa74adc12  gcc/ada/libgnat/a-tags.ads
! e39f5e7050d1c107adecea2a1cc84248  gcc/ada/libgnat/a-teioed.adb
! 36a64ff5f965d2e854ded998bde3a2b5  gcc/ada/libgnat/a-teioed.ads
! 68c3cfb15a304aff293691ca764807ca  gcc/ada/libgnat/a-textio.adb
! adedfc301122dbaec67014225f069c83  gcc/ada/libgnat/a-textio.ads
! c74a673b222c3d0037a22fb766c67488  gcc/ada/libgnat/a-tgdico.ads
! 46d3e274a5f204ee1fe18b9fed07840c  gcc/ada/libgnat/a-tiboio.adb
! 7b163db9f1467e9392f347bee1400136  gcc/ada/libgnat/a-tiboio.ads
! 12be0ef4023ffca17a7ce35ad5d7de4b  gcc/ada/libgnat/a-ticoau.adb
! b47dd073b9278210810261c824ba0c0c  gcc/ada/libgnat/a-ticoau.ads
! cacd923568b1766a22fef09a725ed14b  gcc/ada/libgnat/a-ticoio.adb
! 1f4ec26654300bf9cac018b4206174c6  gcc/ada/libgnat/a-ticoio.ads
! 39daa525c1fc2addcec0fd1caa424adf  gcc/ada/libgnat/a-tideau.adb
! 504363579397d2bae6bf8910c762e4d1  gcc/ada/libgnat/a-tideau.ads
! a982a02ea61a5e5f236825076f03e27f  gcc/ada/libgnat/a-tideio.adb
! 7e334123e587da39eb26bed4609299bf  gcc/ada/libgnat/a-tideio.ads
! 47d15ee6bbb0ec7d69dd70ea458c3220  gcc/ada/libgnat/a-tienau.adb
! f05bba7bc8793c0cadebdbb65ba7fc7d  gcc/ada/libgnat/a-tienau.ads
! 29db44f0058b3a6450bb7c4a2252c588  gcc/ada/libgnat/a-tienio.adb
! ede7e998f99538fd676bc9971ca93315  gcc/ada/libgnat/a-tienio.ads
! 54e7f80208c789d89a671c1318e8ef53  gcc/ada/libgnat/a-tifiio.adb
! bc8cbff50079d894d4b781acc5e187dd  gcc/ada/libgnat/a-tifiio.ads
! a1765c8120b35c3d3305ecdba6d53752  gcc/ada/libgnat/a-tiflau.adb
! 6f47086f17a558ceb460675b66a094e4  gcc/ada/libgnat/a-tiflau.ads
! b54770a2d64e50d360dd015c485f2905  gcc/ada/libgnat/a-tiflio.adb
! f315ded4dd96b28c621f7eeebf496941  gcc/ada/libgnat/a-tiflio.ads
! 7af5f941da055d9ea5ace008133c23e1  gcc/ada/libgnat/a-tigeau.adb
! 18ba1cf9982a027e0ed29635ebf241f6  gcc/ada/libgnat/a-tigeau.ads
! 7348bb0adba43b97457a58b85167e1e4  gcc/ada/libgnat/a-tigeli.adb
! 1d6304ab7e28eba17091bea8d66d27a7  gcc/ada/libgnat/a-tiinau.adb
! 13b74478a876d03a9262a1f63ed22d8d  gcc/ada/libgnat/a-tiinau.ads
! 48a6aa6115cc716c14592d2e6f108cba  gcc/ada/libgnat/a-tiinio.adb
! cc2d90fbe61892143ea1311d99f12a0c  gcc/ada/libgnat/a-tiinio.ads
! 82a1079516ec3e11515990e3ac927d0f  gcc/ada/libgnat/a-timoau.adb
! 5d49c4112ee76e9d66d9507b575e5d7c  gcc/ada/libgnat/a-timoau.ads
! d2e665d5c4ef6bcb904df1f4de954559  gcc/ada/libgnat/a-timoio.adb
! 1fbb7f68d52dbbe0db4bef48f487dd9a  gcc/ada/libgnat/a-timoio.ads
! 7395dbe8726e2a050a97a6c662d66b7f  gcc/ada/libgnat/a-tiocst.adb
! 9b8a7f850d1af2efb450811576facb51  gcc/ada/libgnat/a-tiocst.ads
! 913f48cba8e117744f29c7690e0762f5  gcc/ada/libgnat/a-tirsfi.adb
! 5278fc682e3c2f3b3735f6fa1c0d7532  gcc/ada/libgnat/a-tirsfi.ads
! 8d02485d58b7be4175d6c80555602868  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
! f5bc02683fdb56d97621e0a91a7452b9  gcc/ada/libgnat/a-uncdea.ads
! c7c67c4cfa608aa01accfd856e6799c1  gcc/ada/libgnat/a-undesu.adb
! 82a804005be52b8d315b11082ce952d4  gcc/ada/libgnat/a-undesu.ads
! 7987c3998241ddcc51e5fcb8141e7af8  gcc/ada/libgnat/a-wichha.adb
! e8ccd16de3768e5094001fd7b5f77080  gcc/ada/libgnat/a-wichha.ads
! 7fabe6707c67965b346c6603bd8f0c84  gcc/ada/libgnat/a-wichun.adb
! 114ace3101f6e1846f599aa8c086dfa0  gcc/ada/libgnat/a-wichun.ads
! 495dc144d91ae1388ae48ceb32e47f91  gcc/ada/libgnat/a-widcha.ads
! 1eed30c501f395a2e9aa3a5fa09a676d  gcc/ada/libgnat/a-witeio.adb
! 0bac11b91eef3d1e556c7ec2f19285bc  gcc/ada/libgnat/a-witeio.ads
! 03f0a53888e232e0bae47b2402e7f448  gcc/ada/libgnat/a-wrstfi.adb
! c457c03d9edffdeb8434cbab5d30d856  gcc/ada/libgnat/a-wrstfi.ads
! b680dc9fbc81e4f48bc0bd3831d73198  gcc/ada/libgnat/a-wtcoau.adb
! 48121d0e54b7368ce2e3cbdc3e2e7b0a  gcc/ada/libgnat/a-wtcoau.ads
! d5394214cf04aed363e91feb6f4992d5  gcc/ada/libgnat/a-wtcoio.adb
! 57e4b04385112ab5656169d352e2fefb  gcc/ada/libgnat/a-wtcoio.ads
! d0240e5b4a9a56ed70686ea02ad76bf5  gcc/ada/libgnat/a-wtcstr.adb
! a2f5ff49d6bad048216e5ea9a44d1e24  gcc/ada/libgnat/a-wtcstr.ads
! 2d6a50d08bf95bdbf9bece739e45c0cf  gcc/ada/libgnat/a-wtdeau.adb
! 481a00bed3062b7723709a1d6c140c8f  gcc/ada/libgnat/a-wtdeau.ads
! 98856569fab11e4a2106f6dc650334f9  gcc/ada/libgnat/a-wtdeio.adb
! 20d4a8b1dbec170436bce906004aaac8  gcc/ada/libgnat/a-wtdeio.ads
! 8a72d8aa5634217dcd5d8f23b84d3767  gcc/ada/libgnat/a-wtedit.adb
! 05f4254698e77f3563298a9b7ed60ad8  gcc/ada/libgnat/a-wtedit.ads
! 7e742dd4bbc2fb90c9d374867b94d318  gcc/ada/libgnat/a-wtenau.adb
! 6b6670dd97fa90f9858c131160ebeac4  gcc/ada/libgnat/a-wtenau.ads
! 9d4e16a23a66891df2fcee48a234292b  gcc/ada/libgnat/a-wtenio.adb
! fa13b730a5c90ff293982415bf7bcecb  gcc/ada/libgnat/a-wtenio.ads
! aa7687944dd2b4998f05e567657e766d  gcc/ada/libgnat/a-wtfiio.adb
! 495444487be476924785b4b8eff6b910  gcc/ada/libgnat/a-wtfiio.ads
! d4319dbbf6051fcfabfadcae1244494b  gcc/ada/libgnat/a-wtflau.adb
! 8c37c4fd5a2a2ff973af521e85d41c58  gcc/ada/libgnat/a-wtflau.ads
! 914609e5d2653ed61a1fb9c406a7a9df  gcc/ada/libgnat/a-wtflio.adb
! bb57e8648d7de30496bb43f8a849fc3f  gcc/ada/libgnat/a-wtflio.ads
! 53c5ab088a914fdc99b01c3435571735  gcc/ada/libgnat/a-wtgeau.adb
! e78e0f6c121aa79b3a5fda29d29c780d  gcc/ada/libgnat/a-wtgeau.ads
! c997d495bad42bbd5dafcb122024cb6c  gcc/ada/libgnat/a-wtinau.adb
! a7744cfaf40d064c4e74cbc6473ea050  gcc/ada/libgnat/a-wtinau.ads
! 6cf0ca2ef21366e597721c89721c6371  gcc/ada/libgnat/a-wtinio.adb
! 62a64f1715aaaa145cf2b6d360381363  gcc/ada/libgnat/a-wtinio.ads
! c352a89f1a1c02b86822aeece60cb1c7  gcc/ada/libgnat/a-wtmoau.adb
! a9b65a729ce802323e0f741e5e0e9bcb  gcc/ada/libgnat/a-wtmoau.ads
! a9e6bd9ac548c781610d464bb7bfa5d1  gcc/ada/libgnat/a-wtmoio.adb
! eec0d5ed51b161ae147c1397b1e75b07  gcc/ada/libgnat/a-wtmoio.ads
! 7e8c5b9da388bddb6b6f3a9a068286a9  gcc/ada/libgnat/a-wttest.adb
! 53d3d301f9afb69992013f55fe363511  gcc/ada/libgnat/a-wttest.ads
! 6a1fbb3d81995effa68d3235d2e23e7c  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
! b0fc7edf7ccb2b6e912da2599f98406c  gcc/ada/libgnat/a-zchhan.adb
! 851207a7fa656182af6f5be4e1b7ef3e  gcc/ada/libgnat/a-zchhan.ads
! eb981df945506e8751b6153b5198ff72  gcc/ada/libgnat/a-zchuni.adb
! 962bc90ba486983f67cc322d90d6d519  gcc/ada/libgnat/a-zchuni.ads
! 0b83f3212b6899d09f7044a6cce04d2a  gcc/ada/libgnat/a-zrstfi.adb
! 76be307e6cb504b1a6f4b86cf667469b  gcc/ada/libgnat/a-zrstfi.ads
! 91e0e9f282a0f2e624e3cc5790dbfb7e  gcc/ada/libgnat/a-ztcoau.adb
! 6fac1d159f432f92bf0b00b806c7bf35  gcc/ada/libgnat/a-ztcoau.ads
! 3b612da305f387d5252450615630632d  gcc/ada/libgnat/a-ztcoio.adb
! dc648cdd3ab33803386dbd6d2bf8b8d6  gcc/ada/libgnat/a-ztcoio.ads
! f3072b300db5897a91ba0c82cbc14393  gcc/ada/libgnat/a-ztcstr.adb
! ea07c665b9ecb3f303d7668672bb4812  gcc/ada/libgnat/a-ztcstr.ads
! f7a97441492f1873ec244c99d1462b68  gcc/ada/libgnat/a-ztdeau.adb
! 51184d166cb0fbb859dcf88bb5c4630f  gcc/ada/libgnat/a-ztdeau.ads
! 85bbce726dd1854b74b2688796aa6e1c  gcc/ada/libgnat/a-ztdeio.adb
! a1457649e626ebf32915696e5afd2ac0  gcc/ada/libgnat/a-ztdeio.ads
! 5c333bdd7d0df5d5b25e3bf67415666b  gcc/ada/libgnat/a-ztedit.adb
! 51d9e3981893141fe9c6446e03ec5430  gcc/ada/libgnat/a-ztedit.ads
! f9ff2728e8124f31623c947bed65a16b  gcc/ada/libgnat/a-ztenau.adb
! 1ebc0990e2d50b7fb1aefcb3aeb99123  gcc/ada/libgnat/a-ztenau.ads
! 0052f4c32a76d47039518468a6413bc5  gcc/ada/libgnat/a-ztenio.adb
! 33aa889d92f43b14a348a444135fc992  gcc/ada/libgnat/a-ztenio.ads
! e579712833e0f6a791138c1b7a2c0f62  gcc/ada/libgnat/a-ztexio.adb
! b85e0ddf38a54a4b03dbddc5b7b970cf  gcc/ada/libgnat/a-ztexio.ads
! 4c219de1d66bcc2d4d6a9aef56703514  gcc/ada/libgnat/a-ztfiio.adb
! 9e2efe8c1c2d6658a575fbecb5ab1418  gcc/ada/libgnat/a-ztfiio.ads
! c58f53546148acd5b47fd5bc7fd263d2  gcc/ada/libgnat/a-ztflau.adb
! 17bae7a7cc833fe0f1de338bc31e56fe  gcc/ada/libgnat/a-ztflau.ads
! 0a0b2f99d96e97516baa1d79030c8c63  gcc/ada/libgnat/a-ztflio.adb
! 7aae0945e67f16f4f77aa54a65552f3e  gcc/ada/libgnat/a-ztflio.ads
! c9ab662439eededd2a9ff184820ab2d7  gcc/ada/libgnat/a-ztgeau.adb
! 7cba72d91a3356607e7fbbdf90d5c534  gcc/ada/libgnat/a-ztgeau.ads
! 50748f43bd10f96e720f6fe9454ffd9d  gcc/ada/libgnat/a-ztinau.adb
! 2e5a486a0920d48ec89c36866245a04e  gcc/ada/libgnat/a-ztinau.ads
! f4452b4f4f6233cf656dcd76afb10bbb  gcc/ada/libgnat/a-ztinio.adb
! f0456d31ec0aa6f6786e1b635f8023cb  gcc/ada/libgnat/a-ztinio.ads
! fc477f37d26bc3689a88e5d07bb00930  gcc/ada/libgnat/a-ztmoau.adb
! 5ca209ceb89567be2c4e741b0ca65a15  gcc/ada/libgnat/a-ztmoau.ads
! d235b6f261da4f881efc2ba1dd44a6c0  gcc/ada/libgnat/a-ztmoio.adb
! 9831d312ef279fc55e5e051745be05d2  gcc/ada/libgnat/a-ztmoio.ads
! 90cb9c4f15d4b0053af6f28d86688feb  gcc/ada/libgnat/a-zttest.adb
! 2caf047380f684add2bd5a35dc4e1091  gcc/ada/libgnat/a-zttest.ads
! 9360c8d47b0b50ad040838799504e778  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
! 073c14cf3940c53fb25aae14abfa089f  gcc/ada/libgnat/g-allein.ads
! 29631f7f7da1f9ec5eeb12c85b332af7  gcc/ada/libgnat/g-alleve.adb
! 1a1fe59e6cee4f21cb66174718bffcf0  gcc/ada/libgnat/g-alleve.ads
! e6fca7214b9a260117a36ba3a2e3a95d  gcc/ada/libgnat/g-alleve__hard.adb
! 481d3706ca47f0c8e9412c1651724488  gcc/ada/libgnat/g-alleve__hard.ads
! 348066e53f7238527f8a82d2fe51d47a  gcc/ada/libgnat/g-altcon.adb
! f16d9b3109260ad650173df3a888e28c  gcc/ada/libgnat/g-altcon.ads
! 7bca9286509a2d968bb13e97c54194ff  gcc/ada/libgnat/g-altive.ads
! 34d123f627ced12623c7059cd0351ae5  gcc/ada/libgnat/g-alveop.adb
! b5be144701d331163a6881cb9f4e801c  gcc/ada/libgnat/g-alveop.ads
! c23982b0d77a62d53bed7722bd8430cc  gcc/ada/libgnat/g-alvety.ads
! 0a09d1f068fed4ad0796b79ad7893aaa  gcc/ada/libgnat/g-alvevi.ads
! ae1a3e55b5b87f58c02e97a87675cc71  gcc/ada/libgnat/g-arrspl.adb
! bda27165a2adbe84524e3e7706c3be75  gcc/ada/libgnat/g-arrspl.ads
! 66005c47a101d786512150dcd7fcc6b5  gcc/ada/libgnat/g-awk.adb
! deef9040a887bd172126e4100d6ac6c3  gcc/ada/libgnat/g-awk.ads
! feaf9ba550883a64c12a526e77dbc524  gcc/ada/libgnat/g-binenv.adb
! 59013f579ec01a7f48e6f1acc4bfc43e  gcc/ada/libgnat/g-binenv.ads
! 888b066d66e6b429944115b2bca4df32  gcc/ada/libgnat/g-bubsor.adb
! 1a16ea7b757409b36aa295dc7f90289c  gcc/ada/libgnat/g-bubsor.ads
! 5664bdfd6f9d9dd98fd1392ff8e51ae7  gcc/ada/libgnat/g-busora.adb
! 4f5cbc32e47fb7a24c8977a3918b4c85  gcc/ada/libgnat/g-busora.ads
! cdc4ce286061f31ec7a2626d4012f4a0  gcc/ada/libgnat/g-busorg.adb
! 5738900c4244413d1720eaee40f33190  gcc/ada/libgnat/g-busorg.ads
! 0b06c799374b0234609bebe4531914e4  gcc/ada/libgnat/g-byorma.adb
! 09a4baf2a244b5aa07f6977c9318c8fc  gcc/ada/libgnat/g-byorma.ads
! 05a17f0dd8a07b097e81d7bae4609c94  gcc/ada/libgnat/g-bytswa.adb
! 4888d2a669931dbfcf15e7e18448c53f  gcc/ada/libgnat/g-bytswa.ads
! 7889c4c37961fe540ce6ff7ce15b3722  gcc/ada/libgnat/g-calend.adb
! cdc32ff53fce88377130ab88dba4b09f  gcc/ada/libgnat/g-calend.ads
! 708a042f72893794c55d6a3ddd1e0bf1  gcc/ada/libgnat/g-casuti.adb
! 31279e7aea73440b593b5f8679f73795  gcc/ada/libgnat/g-casuti.ads
! 7cb056b0a045d6b8a213ec5e5454d340  gcc/ada/libgnat/g-catiio.adb
! 6a86d85a22c17622e7fd4887535d61f2  gcc/ada/libgnat/g-catiio.ads
! 2cdb30c8cec6f1b42055818daa6672d9  gcc/ada/libgnat/g-cgi.adb
! 231a67749bdafd191fb9b5c1cf697353  gcc/ada/libgnat/g-cgi.ads
! 968c4450aa3ec84f2b67fe174cfda25e  gcc/ada/libgnat/g-cgicoo.adb
! e55d00e81d03826c907080de7d18310f  gcc/ada/libgnat/g-cgicoo.ads
! b16770fb135b61a19b0119bea5dc3d3a  gcc/ada/libgnat/g-cgideb.adb
! b216f206ff6d1c06558af8b07f287b23  gcc/ada/libgnat/g-cgideb.ads
! 568aa4dc0fcd7bd22ad70e8376b9e9d9  gcc/ada/libgnat/g-comlin.adb
! 9d556055bfdf54157b06c1f83e6dd78a  gcc/ada/libgnat/g-comlin.ads
! 9e355ce742df353bcbb4ace4e3efd1b5  gcc/ada/libgnat/g-comver.adb
! 06af06ff41568d8bac2f2cafd7296b1f  gcc/ada/libgnat/g-comver.ads
! 4fc9e921991d58a0a59dbea169ff1eac  gcc/ada/libgnat/g-cppexc.adb
! ae3957d9ff2f2e6449a96c89242223c1  gcc/ada/libgnat/g-cppexc.ads
! 4ec83d3fff5c80f6c48631d51bdf3c37  gcc/ada/libgnat/g-crc32.adb
! 0d04809d0d2624fd2a2eee4c303dee5f  gcc/ada/libgnat/g-crc32.ads
! 526b069c056ad69cf1b4b1f21a7f502b  gcc/ada/libgnat/g-ctrl_c.adb
! 6148b1f63b5dea8f9b0fb40339d5eac3  gcc/ada/libgnat/g-ctrl_c.ads
! fde49bae106b32c39a958ab48022dd3d  gcc/ada/libgnat/g-curexc.ads
! d3a534a97c28528d50858b355d814dfb  gcc/ada/libgnat/g-debpoo.adb
! 803e91c85f9a8e21b8d6cabde9c4efbe  gcc/ada/libgnat/g-debpoo.ads
! 4662c97f32490dd2257ebf4cc3c3b5af  gcc/ada/libgnat/g-debuti.adb
! d65911acc2130f04a7c8ae4908658b8d  gcc/ada/libgnat/g-debuti.ads
! 063b7157fc790a36f3bf8450711aab7c  gcc/ada/libgnat/g-decstr.adb
! ea376ebe73910fc9dbe83d75beac360a  gcc/ada/libgnat/g-decstr.ads
! ba5649bffde2572b64ffcefd510d8d1a  gcc/ada/libgnat/g-deutst.ads
! 244a0a05e98d714edba2f5d68059673b  gcc/ada/libgnat/g-diopit.adb
! 60c5fcb32e7b3408a2cb9188c6716979  gcc/ada/libgnat/g-diopit.ads
! 6f974209fdbc34ebefc7ff49147d6df3  gcc/ada/libgnat/g-dirope.adb
! 4ed4e9fe966aaeee4643e018fda09517  gcc/ada/libgnat/g-dirope.ads
! f1932214d3559296ee4fb155708f4d0d  gcc/ada/libgnat/g-dynhta.adb
! 318bcf5707729d47a89e87ef320d4470  gcc/ada/libgnat/g-dynhta.ads
! b35f445484769eb8cc0a08664b667ec4  gcc/ada/libgnat/g-dyntab.adb
! d619d4a900ba1520dec39b59175d98b0  gcc/ada/libgnat/g-dyntab.ads
! b57c40a60aaf3ecc3c3ca5f26794ad2e  gcc/ada/libgnat/g-eacodu.adb
! ddc218986c2765fb4243ba7c02433b80  gcc/ada/libgnat/g-encstr.adb
! 53c22637187bf025ddfeee68653c7447  gcc/ada/libgnat/g-encstr.ads
! 57cca15c15c821aef3166193628964cd  gcc/ada/libgnat/g-enutst.ads
! 1fc89f184a17271ba825bca91a1673fe  gcc/ada/libgnat/g-excact.adb
! c7f9a804083f883d58179c4f565ca582  gcc/ada/libgnat/g-excact.ads
! 8a979c8a2237e7b23c70460851d57a53  gcc/ada/libgnat/g-except.ads
! d250b3131539d151c046f369a9c4a5fd  gcc/ada/libgnat/g-exctra.adb
! 061c64e8277eaba49913f581e1748dc6  gcc/ada/libgnat/g-exctra.ads
! 7858236bb80d64b5864c867113cab7ac  gcc/ada/libgnat/g-expect.adb
! 53e376979efe894ae8ff8dbafcc8c2be  gcc/ada/libgnat/g-expect.ads
! 9eaf4ba48c9d9235f02e8c691583c38b  gcc/ada/libgnat/g-exptty.adb
! 86f1185baa891c009528569c731a4b59  gcc/ada/libgnat/g-exptty.ads
! 67d3dcdfad9f3fc30992a1a97924f6eb  gcc/ada/libgnat/g-flocon.ads
! d94535c0fbeaa376fdde0bbdaa3bba66  gcc/ada/libgnat/g-forstr.adb
! b6fec06807ef42ad4dbb6d74a5279e30  gcc/ada/libgnat/g-forstr.ads
! 82f8d4cb93f7480d0fc89c51e88b4dce  gcc/ada/libgnat/g-heasor.adb
! a37ab8ede7c57815d65cbcf542f95d18  gcc/ada/libgnat/g-heasor.ads
! 56b26b5b5051b0597c42b0d9520d9b9a  gcc/ada/libgnat/g-hesora.adb
! 7b9bd748199ac28b29920b978af4cc52  gcc/ada/libgnat/g-hesora.ads
! 690850269f363c5da5fcb7e2dfa742d1  gcc/ada/libgnat/g-hesorg.adb
! 080c5b008a0053843dbb8eaeaa80c87b  gcc/ada/libgnat/g-hesorg.ads
! 995a58dbb77e737e18358f6f1e6d11c6  gcc/ada/libgnat/g-htable.adb
! 9dbc11bad2c6baab5bbc171e549023a5  gcc/ada/libgnat/g-htable.ads
! c45837b3a03e6500b3dc90a769a93d01  gcc/ada/libgnat/g-io-put__vxworks.adb
! b8c26924fe220922942f445caa7d375c  gcc/ada/libgnat/g-io.adb
! 94c9d4395d64cf80779cc203879933a7  gcc/ada/libgnat/g-io.ads
! 38a3a365ec34cbea6d2924db72ebd806  gcc/ada/libgnat/g-io_aux.adb
! 58847a7e8de3e895e5b448727efdac6e  gcc/ada/libgnat/g-io_aux.ads
! 07a267001a31558f2d03722d6c6ed6dc  gcc/ada/libgnat/g-locfil.adb
! be53fac25ce9629a49f5c41de3389913  gcc/ada/libgnat/g-locfil.ads
! 570fa6821017dd65767ccfb41d9f1806  gcc/ada/libgnat/g-mbdira.adb
! 6a94203336aea4892e634fdce4b30fbd  gcc/ada/libgnat/g-mbdira.ads
! 8f70a9929453cb6a2d30a0ec63e8ff29  gcc/ada/libgnat/g-mbflra.adb
! 6e08669cc72a1589f401284413a8cad5  gcc/ada/libgnat/g-mbflra.ads
! a2dfb74b499a2d69302aafcfc053aa26  gcc/ada/libgnat/g-md5.adb
! fdcbd0f421c6d14bb6932917661ebf32  gcc/ada/libgnat/g-md5.ads
! 10bb05a0217fbfefe9f05ee941976a89  gcc/ada/libgnat/g-memdum.adb
! 265f151933c3f373c219923d1dbdeaee  gcc/ada/libgnat/g-memdum.ads
! 4cabc178e931d0b1eb9916b5be2dcff1  gcc/ada/libgnat/g-moreex.adb
! b8bd23af93938e5fa9a6bfdaebe8e3da  gcc/ada/libgnat/g-moreex.ads
! dd19efc660ae48a37525c40aa1108652  gcc/ada/libgnat/g-os_lib.adb
! 93bb515075234287cb490ece7bf9856e  gcc/ada/libgnat/g-os_lib.ads
! b5cdafa8ff18987e2cd8ac3ac06d34fa  gcc/ada/libgnat/g-pehage.adb
! dff0721053a090234ed2428bd27b3df0  gcc/ada/libgnat/g-pehage.ads
! 2c07b64a3d4d3802448bc635c939be07  gcc/ada/libgnat/g-rannum.adb
! 4b3482d012e44ee1740049fb562297db  gcc/ada/libgnat/g-rannum.ads
! 48bc2f03a1ec6a267b139e07c336eb4d  gcc/ada/libgnat/g-regexp.adb
! 07d6e86d709b962d624bf35fd0d6bc4e  gcc/ada/libgnat/g-regexp.ads
! d175ab0886b613211af1ec9e115198d3  gcc/ada/libgnat/g-regist.adb
! 8f4095887d88a1dceded69fa7e2ff09b  gcc/ada/libgnat/g-regist.ads
! 944363c7dbf5d35cc3d57eb51a8460cc  gcc/ada/libgnat/g-regpat.adb
! a43549f9657a4e19aae9343547b08bf8  gcc/ada/libgnat/g-regpat.ads
! 5fe99a16a26bee36cf911137428e58e0  gcc/ada/libgnat/g-rewdat.adb
! cb33f95eebff3cc2bc8719b9725ebef6  gcc/ada/libgnat/g-rewdat.ads
! 0658812f882342d7a13da5d1478313a3  gcc/ada/libgnat/g-sechas.adb
! 9278d133249141418352551579b9e03c  gcc/ada/libgnat/g-sechas.ads
! dc2f0054bd49fca2132d7246aeab7df2  gcc/ada/libgnat/g-sehamd.adb
! 3ce5b711b0a6645f2a91a7ef1b83dc2b  gcc/ada/libgnat/g-sehamd.ads
! 4b855c4ca747ea80c6d3156e451f6144  gcc/ada/libgnat/g-sehash.adb
! e3bdf00f4b5d36ec45ddf9bb284589d0  gcc/ada/libgnat/g-sehash.ads
! 2aa5f5a99f593c457f3259cd494a43b0  gcc/ada/libgnat/g-sercom.adb
! dfce7cb8421c75d2f6042d72736dddeb  gcc/ada/libgnat/g-sercom.ads
! 065063819e08c95955ae355edb37c0de  gcc/ada/libgnat/g-sercom__linux.adb
! 61206a0336be63017bf1f4e2d1fdd8f3  gcc/ada/libgnat/g-sercom__mingw.adb
! 03f08e9428c5c509ac0ad3d1275b3226  gcc/ada/libgnat/g-sestin.ads
! 83400306474338e8ddb98e4e402e0301  gcc/ada/libgnat/g-sha1.adb
! 76070aa4b0f66599605f01a719ba5aed  gcc/ada/libgnat/g-sha1.ads
! 2d467c4b584c6d24cdaad0856966e5a2  gcc/ada/libgnat/g-sha224.ads
! be6ef628cbd2c9096b5f8e0011cb6488  gcc/ada/libgnat/g-sha256.ads
! 23d2e88b6ac1be42086532be77abbb01  gcc/ada/libgnat/g-sha384.ads
! 91e9936e2db0ab76665c6d9deab6a873  gcc/ada/libgnat/g-sha512.ads
! bd3609b39834dd974ef4da7d060d5132  gcc/ada/libgnat/g-shsh32.adb
! 8cb348e0e752e76a2307acca159c5f6b  gcc/ada/libgnat/g-shsh32.ads
! a29253de68265a377404e6cee2c12ac6  gcc/ada/libgnat/g-shsh64.adb
! 4e740c49bde23dd88c9f06d4b9e58038  gcc/ada/libgnat/g-shsh64.ads
! 2ae58023120f7b0910fda8fb3fcc132b  gcc/ada/libgnat/g-shshco.adb
! d430bd09f1b00b785c6c0bab3999a15d  gcc/ada/libgnat/g-shshco.ads
! 6b66b96bed9c9e872fbb7e3db415d875  gcc/ada/libgnat/g-soccon.ads
! cb0caffe7b1f5832de53f4dcdd131a9a  gcc/ada/libgnat/g-socket.adb
! 767a5f7cbc7ea46acd0d1de94ff14be5  gcc/ada/libgnat/g-socket.ads
! b0466a08681b6fce328df36687d1630b  gcc/ada/libgnat/g-socket__dummy.adb
! a84cb9e4e49b91411a65459701c5d90c  gcc/ada/libgnat/g-socket__dummy.ads
! afc262512f1f40cdfa99dd0836e601a0  gcc/ada/libgnat/g-socthi.adb
! 876d7f0ddb6bcb8d374c6b827ca36f22  gcc/ada/libgnat/g-socthi.ads
! 6b3f7636f3d3f870fe09545d8663ee8d  gcc/ada/libgnat/g-socthi__dummy.adb
! 2cf9f3d9c2052458a310ebb8f8753c0d  gcc/ada/libgnat/g-socthi__dummy.ads
! 83d78f0596f30a831e9c2fabea2ce26a  gcc/ada/libgnat/g-socthi__mingw.adb
! fa64982d46b95b066545b18156373714  gcc/ada/libgnat/g-socthi__mingw.ads
! 8814fb4409ef878e3f97f2ae6c6ce097  gcc/ada/libgnat/g-socthi__vxworks.adb
! bb9b3c45b64ffaee0d26561e206d0a52  gcc/ada/libgnat/g-socthi__vxworks.ads
! f84e7a8163b124bea1cd51e362e881bf  gcc/ada/libgnat/g-soliop.ads
! d95335ae73d722a88a52548404054c93  gcc/ada/libgnat/g-soliop__lynxos.ads
! 545e3a80d30671221931bef269d1687c  gcc/ada/libgnat/g-soliop__mingw.ads
! 41fa020d613bd7fe128ecfc82d21d986  gcc/ada/libgnat/g-soliop__qnx.ads
! 10640cba469be3399f689a4b18e5e2a5  gcc/ada/libgnat/g-soliop__solaris.ads
! cea3a601b7d20bab8012469d066a42aa  gcc/ada/libgnat/g-sothco.adb
! 1278b7256b919422d9638893b1a16ed4  gcc/ada/libgnat/g-sothco.ads
! 79af0470823f6b04558b1337b86dbfe3  gcc/ada/libgnat/g-sothco__dummy.adb
! d9ef0b851f6139948995aa640d8f7772  gcc/ada/libgnat/g-sothco__dummy.ads
! dd47568ba86a7cbeeaf42d4fe01aafe6  gcc/ada/libgnat/g-souinf.ads
! 236b14beafb8f2fa7fd2117bd429f0da  gcc/ada/libgnat/g-spchge.adb
! 754a12734f347d8baff4bf6c69d10bed  gcc/ada/libgnat/g-spchge.ads
! 40dd864e71e5260381f8706b31a53048  gcc/ada/libgnat/g-speche.adb
! 529197e7ec3efff8d42cb2336f3e0889  gcc/ada/libgnat/g-speche.ads
! c676f3032d59a5125c99700d089fd095  gcc/ada/libgnat/g-spipat.adb
! 98bf90f1d3d861a751508f0130671616  gcc/ada/libgnat/g-spipat.ads
! 06d08271f3a39d1eebcd21c0bf338327  gcc/ada/libgnat/g-spitbo.adb
! 3a089fe3f41efe53b6426b45ba01743d  gcc/ada/libgnat/g-spitbo.ads
! f55c01d6677410af713508987d976be1  gcc/ada/libgnat/g-sptabo.ads
! 2b9623102f61ed76c866b419e12d99ec  gcc/ada/libgnat/g-sptain.ads
! 0a39cefff13515170e5acef754555b19  gcc/ada/libgnat/g-sptavs.ads
! 9eb14bafedd4996b3d90874327e582a4  gcc/ada/libgnat/g-sse.ads
! 67c3df3718f02b92cec628d9a3ee2f32  gcc/ada/libgnat/g-ssvety.ads
! 593b1020c237f077277f14d567e56fc6  gcc/ada/libgnat/g-stheme.adb
! 1bd48a06aab135ede01a18f3e27da7bb  gcc/ada/libgnat/g-strhas.ads
! 272e6c5acf2a084401990eda7fd9ea34  gcc/ada/libgnat/g-string.adb
! 37e353dbb1e3734fe5b12284fac608e7  gcc/ada/libgnat/g-string.ads
! f0c586882dea3e19ea58bef36af90d95  gcc/ada/libgnat/g-strspl.ads
! cef369a4031ba48bbbc7bf8506ed82b6  gcc/ada/libgnat/g-stseme.adb
! 3b3f8cf3df26e9e7f98077faf9e04c3b  gcc/ada/libgnat/g-stsifd__sockets.adb
! a01f7a25379bdaefe3bc34f40c53eac1  gcc/ada/libgnat/g-table.adb
! f5ff724800c03e3c3e4aaf5e1884e163  gcc/ada/libgnat/g-table.ads
! edfe28efa62aeec06d7f02b065030c32  gcc/ada/libgnat/g-tasloc.adb
! 5e39813aed1c919197e7ab26914d5157  gcc/ada/libgnat/g-tasloc.ads
! fef450d6721c442d21e7ca552f4f5486  gcc/ada/libgnat/g-timsta.adb
! bead2f0e19e1c77d4878fe783557997e  gcc/ada/libgnat/g-timsta.ads
! 42e152b035605675b078409da1570dc8  gcc/ada/libgnat/g-traceb.adb
! a2261c024ca0509560c3e991849c6f3e  gcc/ada/libgnat/g-traceb.ads
! 513762370aa5aca18a9741d40ed99206  gcc/ada/libgnat/g-trasym.adb
! 2d72f7dc58b4b8022d2320b091612d1d  gcc/ada/libgnat/g-trasym.ads
! 522cc9bc05b7ebc3b9e9d9b880190ef0  gcc/ada/libgnat/g-tty.adb
! e6d748c03fd769f82b13a5a10db3bdc5  gcc/ada/libgnat/g-tty.ads
! 1e298ac451ef3794bc3e738e58b4243a  gcc/ada/libgnat/g-u3spch.adb
! d5a5a8fc76d277d09fbafb674636e472  gcc/ada/libgnat/g-u3spch.ads
! 399fca6cb9a83437c12e4e70d920d4aa  gcc/ada/libgnat/g-utf_32.adb
! 5ebf02f6e65afef68e252862c65e928d  gcc/ada/libgnat/g-utf_32.ads
! 85483438dcf87c4e9c57ac24afc389b7  gcc/ada/libgnat/g-wispch.adb
! 0fe8dc051cce889b7d9d02a4731e3344  gcc/ada/libgnat/g-wispch.ads
! 60c5d696a99bb7b99e8ff229faa7bfb5  gcc/ada/libgnat/g-wistsp.ads
! 43ac20acf872fa4c25a337ccdc2c62e1  gcc/ada/libgnat/g-zspche.adb
! 8ec4695bb309b2642fcc3356ba4c413d  gcc/ada/libgnat/g-zspche.ads
! c803d17b871e8f39b61e58f4fc6bec94  gcc/ada/libgnat/g-zstspl.ads
! 572418b1f2aef9b81fe18fb0629bc50b  gcc/ada/libgnat/gnat.ads
! c8226fdffa005ddb34c3d1af040e597b  gcc/ada/libgnat/i-c.adb
! a17d5545d513857737a1a94ec5e33532  gcc/ada/libgnat/i-c.ads
! 4dca80f37cec86379dec879d6f666cfe  gcc/ada/libgnat/i-cexten.ads
! a6aab4b36dd2161734aae18b8d235fcf  gcc/ada/libgnat/i-cobol.adb
! 821a60484baa2f3ae77e4648ef16f436  gcc/ada/libgnat/i-cobol.ads
! 3b9f32971b70b25030d82e866b3ad26f  gcc/ada/libgnat/i-cpoint.adb
! 13b25d97316014e4f3d69df5aff313df  gcc/ada/libgnat/i-cpoint.ads
! 1eb79014aab569ab0968e3cd28331878  gcc/ada/libgnat/i-cstrea.adb
! 3ec307d4fe3bd8099ea77caca040f652  gcc/ada/libgnat/i-cstrea.ads
! 4236b309ead026a62d3fb0ee731898fd  gcc/ada/libgnat/i-cstrin.adb
! 663b9a9704ae49bb3ed4612caab51369  gcc/ada/libgnat/i-cstrin.ads
! acfeae8cc5288f9ec7ceb08f9cca60ed  gcc/ada/libgnat/i-fortra.adb
! fe08792d30f40125dd75d63c7bcd68fe  gcc/ada/libgnat/i-fortra.ads
! 68bea6ce04ba9a3795a0937330299758  gcc/ada/libgnat/i-pacdec.adb
! d3e10cd6aa89a0ea104c5bca7818c9c8  gcc/ada/libgnat/i-pacdec.ads
! 5c0a974f90ac9c5804bc770dbf7e518c  gcc/ada/libgnat/i-vxwoio.adb
! dde68e8bd89d769525920ea030868633  gcc/ada/libgnat/i-vxwoio.ads
! 86b3d6ab3ef59f5097a5b4f296be6008  gcc/ada/libgnat/i-vxwork.ads
! dd41615af25e1556fc5420a47f18204a  gcc/ada/libgnat/i-vxwork__x86.ads
! f9a1f38a38c41050487c45420558deb9  gcc/ada/libgnat/interfac.ads
! c2121d458a346c0b9d83825c544b9516  gcc/ada/libgnat/ioexcept.ads
! 38f101ad4a6eba55ef694b1ab6315683  gcc/ada/libgnat/machcode.ads
! 89ab1d06a31dd1c1533752975c81387b  gcc/ada/libgnat/memtrack.adb
! d51894f5c1c4de0c87dc07c012c0b6bb  gcc/ada/libgnat/s-addima.adb
! 186700d6c4d93568b9346020cfe2c685  gcc/ada/libgnat/s-addima.ads
! 88f612f0f8fd6f47b49a4b515d76a31a  gcc/ada/libgnat/s-addope.adb
! 6bfcdce28a8786ce4e1e8e5f2424ee04  gcc/ada/libgnat/s-addope.ads
! ecd425ad3e5fef9a859db9f0b9d6b974  gcc/ada/libgnat/s-arit64.adb
! 2d17c4fde536d13a97f8e1d9371440f1  gcc/ada/libgnat/s-arit64.ads
! 01e340df5741bf3f7ebf425b54da236f  gcc/ada/libgnat/s-assert.adb
! ab02a6d80fee080805675dd4b6f967a6  gcc/ada/libgnat/s-assert.ads
! fe2c987fdd6329957ff4ee1b62b12a74  gcc/ada/libgnat/s-atacco.adb
! 5925aeb4ca7c4c8fdb5c7e9cdcb7e3c6  gcc/ada/libgnat/s-atacco.ads
! 849ac06b2a0454f0ed7fb02d5253c84a  gcc/ada/libgnat/s-atocou.adb
! 728c222e2d902029c1c76c21178ff52e  gcc/ada/libgnat/s-atocou.ads
! da99c4777e4dde103dfb7d718c398129  gcc/ada/libgnat/s-atocou__builtin.adb
! 3437da93a7d12d89328c9b8e8ee16997  gcc/ada/libgnat/s-atocou__x86.adb
! abd8545323db9625df35d0ec6a9125d8  gcc/ada/libgnat/s-atopri.adb
! 703e11d8653e87a7018b4b701f86561c  gcc/ada/libgnat/s-atopri.ads
! a0a44d0cae8cb714f1f76a144efe323e  gcc/ada/libgnat/s-auxdec.adb
! 6b5165f4248e8c66f440fa5e5f084166  gcc/ada/libgnat/s-auxdec.ads
! a89b29a63c4d1c43d172e5c8d8176dfa  gcc/ada/libgnat/s-bignum.adb
! 4706b1233d4958fcdd51e4d6ce416471  gcc/ada/libgnat/s-bignum.ads
! 29f66eb26c139224fe8b05e4d2f70ee0  gcc/ada/libgnat/s-bitops.adb
! 75ee698e69d6de7c63065b74dd7da444  gcc/ada/libgnat/s-bitops.ads
! ef7142b2f1c2f3decc0418b1dcf54107  gcc/ada/libgnat/s-boarop.ads
! b79fa2190b0a3f279cdebb8e68bbb160  gcc/ada/libgnat/s-boustr.adb
! 288fe656eac507f103717ba08bc87bfb  gcc/ada/libgnat/s-boustr.ads
! 1264f1263b20153b74c99c7aa5555eb3  gcc/ada/libgnat/s-bytswa.ads
! 039dff1173299c27a79e5b085d28389a  gcc/ada/libgnat/s-carsi8.adb
! 5256275db787e1d2734d309faa3b042b  gcc/ada/libgnat/s-carsi8.ads
! 9a5f6e8b4677ca565622b86627f0964a  gcc/ada/libgnat/s-carun8.adb
! b738df8f8359238c69fe9dca80e727d5  gcc/ada/libgnat/s-carun8.ads
! 054d956ee82f7f1b26a24ea096358b68  gcc/ada/libgnat/s-casi16.adb
! 59c29222820157eaa6412d7ffd0331c6  gcc/ada/libgnat/s-casi16.ads
! eae0a29ed34ae3960c2f5bb6da75fedb  gcc/ada/libgnat/s-casi32.adb
! 59ba7349a67e2c363aff1ac9d41d2f38  gcc/ada/libgnat/s-casi32.ads
! 4e9b10694d0b11e5b4210ca961188456  gcc/ada/libgnat/s-casi64.adb
! 78038a7761c5395a489e1c421772223e  gcc/ada/libgnat/s-casi64.ads
! 7b1f330188b42a5f9457d3b7573a292d  gcc/ada/libgnat/s-casuti.adb
! f42b466e2c636102cd8072cbd4c79249  gcc/ada/libgnat/s-casuti.ads
! 46b3dee20c61ccf8a66f9569adf8d5e6  gcc/ada/libgnat/s-caun16.adb
! 7c195fcfb82c31e493592272503efaf4  gcc/ada/libgnat/s-caun16.ads
! d3ffcfe2c056d4f73a845f9a3780a59d  gcc/ada/libgnat/s-caun32.adb
! ebedcd2f40a2e16ddf7e3816967acf8c  gcc/ada/libgnat/s-caun32.ads
! ce3ecdeebc19e037b51a8b75b7fcf9c5  gcc/ada/libgnat/s-caun64.adb
! bb9085c5a6ac0bb1baa757e1462930d8  gcc/ada/libgnat/s-caun64.ads
! 5227cd58b1ba7dd252742c6c779dc9eb  gcc/ada/libgnat/s-chepoo.ads
! 72977c96f496593eec754a63261daf10  gcc/ada/libgnat/s-commun.adb
! 32f096638ee32663fbb53dff6f8faf83  gcc/ada/libgnat/s-commun.ads
! 0ca82b2fe46688cf8126afb2cc5aa077  gcc/ada/libgnat/s-conca2.adb
! f7d054f5d8d9e1c558989c92935f6919  gcc/ada/libgnat/s-conca2.ads
! 7249877834b428df93da55fcab3400d3  gcc/ada/libgnat/s-conca3.adb
! af96e56ce233b4530475502d06313123  gcc/ada/libgnat/s-conca3.ads
! 1acc4700e1dac25caaed8d6efd0fe6e0  gcc/ada/libgnat/s-conca4.adb
! 4d50d0f1515e72ec5cb0a0fb564eda03  gcc/ada/libgnat/s-conca4.ads
! b1bd09c8ec94b2734c57fe2ea3fda1a1  gcc/ada/libgnat/s-conca5.adb
! 0b209ff609af85d96f1e694965f8bac5  gcc/ada/libgnat/s-conca5.ads
! 1d83c118b36cdf109b6e1eaf47fe1464  gcc/ada/libgnat/s-conca6.adb
! eb0b71a5897cad1e3a3a895edadcdce1  gcc/ada/libgnat/s-conca6.ads
! 4ca4a3ff82e087c88e1e244fe55dea7e  gcc/ada/libgnat/s-conca7.adb
! a6d333e3356284e5f53b97dfd02a536d  gcc/ada/libgnat/s-conca7.ads
! 7e8b6754ee0964e0ef2ce97302552e1e  gcc/ada/libgnat/s-conca8.adb
! 5277b496e54dfde038bc4d2c845478ae  gcc/ada/libgnat/s-conca8.ads
! 2aa86b857581da5e7b5e0e20ba85d905  gcc/ada/libgnat/s-conca9.adb
! 9e35cad0565f49c4433a3174e7a8c1b8  gcc/ada/libgnat/s-conca9.ads
! d1848e3f7d4d9ef251f75aa64133f9f2  gcc/ada/libgnat/s-crc32.adb
! d205b3dc7a16f36810324e15183c5223  gcc/ada/libgnat/s-crc32.ads
! 7f6bc16c7a2dbb4814fee44a964aff13  gcc/ada/libgnat/s-crtl.ads
! 2d11e5baeb781d449867e700636306f8  gcc/ada/libgnat/s-diflio.adb
! 87bb8911234853192d3104434355aa2d  gcc/ada/libgnat/s-diflio.ads
! 3561269dd7955f75a7581a3b7a60eaf1  gcc/ada/libgnat/s-diinio.adb
! d430dca9315fff4b45bf9056b73065ae  gcc/ada/libgnat/s-diinio.ads
! 1581b63496da76179a73eb4c75351608  gcc/ada/libgnat/s-dim.ads
! 9e8b4ac0e4817ca643bdf33223a5e768  gcc/ada/libgnat/s-dimkio.ads
! 490a2a8c74a1ba851087935bbf39a8c8  gcc/ada/libgnat/s-dimmks.ads
! 6e147c7d105d356ef7629d60701c7fec  gcc/ada/libgnat/s-direio.adb
! b25e0bd78229a2b67a18e5fd509d3ab4  gcc/ada/libgnat/s-direio.ads
! 7978bfdc5f85ef369a7131ef7535f3b8  gcc/ada/libgnat/s-dmotpr.ads
! d7a4c270ed9b8632e35971f32e050bad  gcc/ada/libgnat/s-dsaser.ads
! c1c60c8a0f5a5927a6f1bfae6a054904  gcc/ada/libgnat/s-dwalin.adb
! 7f8feb2a8e5969cd3c3730a5fbe41005  gcc/ada/libgnat/s-dwalin.ads
! 077940916f368159a4cc0a7359f0a408  gcc/ada/libgnat/s-elaall.adb
! 3d7f9ab343871186ee7f816b090c3e65  gcc/ada/libgnat/s-elaall.ads
! 0d751a93c53ee1840b2affcbc6c6ef07  gcc/ada/libgnat/s-excdeb.adb
! 8053df4c4b282a9351cf7a6bff26590b  gcc/ada/libgnat/s-excdeb.ads
! 20b9e1723eb386f2db65a8255d031e3d  gcc/ada/libgnat/s-except.adb
! 0b2e46303becc3cd2d4d1ad175cf3047  gcc/ada/libgnat/s-except.ads
! 9f88aed010abba46e119aed4544929df  gcc/ada/libgnat/s-excmac__arm.adb
! 83738cc6da5bf3f31194196cb8b76ab9  gcc/ada/libgnat/s-excmac__arm.ads
! 10f3906e72bfb7605114e348ebe8e3e1  gcc/ada/libgnat/s-excmac__gcc.adb
! cb98de7dc8565d0532feb2f218a8b398  gcc/ada/libgnat/s-excmac__gcc.ads
! 9a7dfbb1e43de7db31b90db800bf610d  gcc/ada/libgnat/s-exctab.adb
! 5c204f5715460278c7824ac13072d0fa  gcc/ada/libgnat/s-exctab.ads
! 6bb01ca512a28248ed1916174aa5749c  gcc/ada/libgnat/s-exctra.adb
! 25aef992c9d7bba695be840acdc548b3  gcc/ada/libgnat/s-exctra.ads
! a5cbe5b171e07f8ce32138abe6fc8ed2  gcc/ada/libgnat/s-exnint.adb
! e9eaf3a771bbca231f900d48fc86b515  gcc/ada/libgnat/s-exnint.ads
! 8be7ef918957f869cd78ef55a2f6d431  gcc/ada/libgnat/s-exnllf.adb
! 92d4e45c4905640343d54b0c0f09a292  gcc/ada/libgnat/s-exnllf.ads
! 1f7be80aa278b99e713749d6b3316432  gcc/ada/libgnat/s-exnlli.adb
! 0b5bdd64b8a281cf7abde95dbf4e0163  gcc/ada/libgnat/s-exnlli.ads
! a6d9361fc8964d7bb635b980da86d8a8  gcc/ada/libgnat/s-expint.adb
! eb1d815d436bb0d4658fd25d9437a09b  gcc/ada/libgnat/s-expint.ads
! b81241c7f257fb93c773358bca559a8b  gcc/ada/libgnat/s-explli.adb
! 4f79f43006aed56159c947a2fdc1b2d4  gcc/ada/libgnat/s-explli.ads
! 5d83bb8e9083cc780ac16ff49b022da1  gcc/ada/libgnat/s-expllu.adb
! d65ceaa329ff7a7e158d0a5adc089a40  gcc/ada/libgnat/s-expllu.ads
! 4e31d33c8618b623e4b7bd21de960f05  gcc/ada/libgnat/s-expmod.adb
! 776b1410c893cfd8fefbd247328075a8  gcc/ada/libgnat/s-expmod.ads
! fffd749f1086d48cc5a2755b6b16f4d6  gcc/ada/libgnat/s-expuns.adb
! 01dd7e3469829bc4d3764606c58d4ed1  gcc/ada/libgnat/s-expuns.ads
! 6dd172da55f8d1ba8e3fa4f767494a4f  gcc/ada/libgnat/s-fatflt.ads
! 1cdc640577bfc12f0fd6e4a29df88f89  gcc/ada/libgnat/s-fatgen.adb
! ecc2d5040548ea57ed251af792fda6b1  gcc/ada/libgnat/s-fatgen.ads
! a842cd4b9ff7d1538f8de67776583d81  gcc/ada/libgnat/s-fatlfl.ads
! f649d0cbb9dbcdcd784276bf9fd9080c  gcc/ada/libgnat/s-fatllf.ads
! 5e1e6111f9887ad7e14dc7e5e781c93c  gcc/ada/libgnat/s-fatsfl.ads
! 581cdedb83b61d67d3f58c9e39af3c7e  gcc/ada/libgnat/s-ficobl.ads
! ff9a0265cf3f68682d4cca3995513240  gcc/ada/libgnat/s-filatt.ads
! 0440cac608033480a12d7f41cf329371  gcc/ada/libgnat/s-fileio.adb
! 2aa8788bae39d12a23002138fcfc34e7  gcc/ada/libgnat/s-fileio.ads
! db3afd12a546908cf37657084fa28e35  gcc/ada/libgnat/s-finmas.adb
! 76442fc20bd29a7395c99a24e52a9f66  gcc/ada/libgnat/s-finmas.ads
! f05a6a8d7d7a50cb9cd673ea704be462  gcc/ada/libgnat/s-finroo.adb
! adfb89df9df573bf6b46aae594a72fd6  gcc/ada/libgnat/s-finroo.ads
! b813d58546d730a061780da8c8cb795f  gcc/ada/libgnat/s-flocon.adb
! 0a15ec8223dcea9f3fbe7c8a7436de63  gcc/ada/libgnat/s-flocon.ads
! 67afecc312b4aaff09aabd27328ecaf8  gcc/ada/libgnat/s-flocon__none.adb
! 98973878ede2062a633c058f97564145  gcc/ada/libgnat/s-fore.adb
! 9989319311124971229b1fffe2b5d6fd  gcc/ada/libgnat/s-fore.ads
! eab362c6c2f5db05cabd36c5caf48e70  gcc/ada/libgnat/s-gearop.adb
! 6775c337c5d114668c7011a251bde375  gcc/ada/libgnat/s-gearop.ads
! 7f25a14269efd0ab0e4ad9abc79fcad2  gcc/ada/libgnat/s-geveop.adb
! 41c79db9f206d391094c456c149d0491  gcc/ada/libgnat/s-geveop.ads
! 4dc0e69b63be1f1b508b990c7bb70201  gcc/ada/libgnat/s-gloloc.adb
! 2d60d8e0fe0edb2f55667d33820aa1e2  gcc/ada/libgnat/s-gloloc.ads
! 10838c4dc296eb3ccc622beabc9fd41a  gcc/ada/libgnat/s-gloloc__mingw.adb
! 00cead93dd95547298e5f3768ba450a1  gcc/ada/libgnat/s-htable.adb
! 255402920f3cdbe6ed3e40f46ddd939d  gcc/ada/libgnat/s-htable.ads
! c7438b9885cea98a80f3077adeba224c  gcc/ada/libgnat/s-imenne.adb
! 393f1ab644092e6c1600ed59bb7de35a  gcc/ada/libgnat/s-imenne.ads
! 736e06ac63e9500b956237c6bd2d9ebf  gcc/ada/libgnat/s-imgbiu.adb
! b1648de71b19a2f0e17486d33f223941  gcc/ada/libgnat/s-imgbiu.ads
! dac7550ebee7e9332e25206807c6d0fa  gcc/ada/libgnat/s-imgboo.adb
! bce81b5d0f8cef83ba71ab17f0560f07  gcc/ada/libgnat/s-imgboo.ads
! 1ac115ddfbcc035e1a56794b9651121a  gcc/ada/libgnat/s-imgcha.adb
! bd6e539aedb62ecdebe0642169ef083b  gcc/ada/libgnat/s-imgcha.ads
! acd3205be0be168699289c9119b78f9b  gcc/ada/libgnat/s-imgdec.adb
! 11cb73fa9a860dc67ff4ebaa7aa4b232  gcc/ada/libgnat/s-imgdec.ads
! e6ea448c4913a84f1199148f302f475e  gcc/ada/libgnat/s-imgenu.adb
! 1f532080c5791c115bbf16fd447d0271  gcc/ada/libgnat/s-imgenu.ads
! 71bb28d0c075baaff7a4ed2ccca99f7f  gcc/ada/libgnat/s-imgint.adb
! ea9584c164f93137d6121317d53eff53  gcc/ada/libgnat/s-imgint.ads
! b874ce65ce7c8a7532b18dcf2bc03d04  gcc/ada/libgnat/s-imgllb.adb
! 4e5e0e116527d21e7c63920adb4cedfe  gcc/ada/libgnat/s-imgllb.ads
! 9506cd8c5936a6413703287515e81cde  gcc/ada/libgnat/s-imglld.adb
! e1217a346d935163fce823c9bc73ef6d  gcc/ada/libgnat/s-imglld.ads
! 2b30e6eb73401ef524519886928b1a65  gcc/ada/libgnat/s-imglli.adb
! 679465a89398ede03dc2a76f589e1e8f  gcc/ada/libgnat/s-imglli.ads
! 8619b967ebd5da68e2f298c3b137af0e  gcc/ada/libgnat/s-imgllu.adb
! 613df55c9827e44c06c4b4ac19ff0bc4  gcc/ada/libgnat/s-imgllu.ads
! d14ece441a6a12adf951cf2fc8c0847c  gcc/ada/libgnat/s-imgllw.adb
! 5dd06cf7600b6fe8948568066a2ba4ba  gcc/ada/libgnat/s-imgllw.ads
! 1cd374f012fb5ca4fd19c22ee1432631  gcc/ada/libgnat/s-imgrea.adb
! 5ff0cfd835127bead38b2dcc60131276  gcc/ada/libgnat/s-imgrea.ads
! ea603688fe4933c27ac11c9fca3cb8c1  gcc/ada/libgnat/s-imguns.adb
! a93b36fad10a89b0a0dede30593c7a5b  gcc/ada/libgnat/s-imguns.ads
! bc2098f5eb870bd248b0d9d2236aaeb4  gcc/ada/libgnat/s-imgwch.adb
! 7b28aabe005cd68b819e16f45b0d8a27  gcc/ada/libgnat/s-imgwch.ads
! a4d9314bed7877b759db13e06e333d7c  gcc/ada/libgnat/s-imgwiu.adb
! 443440fdcc75a5079a84c457d7992fb7  gcc/ada/libgnat/s-imgwiu.ads
! fc28ee058e8037a28a81a2299f2da8e1  gcc/ada/libgnat/s-io.adb
! 91d64ac530427ee3341ef7229074730c  gcc/ada/libgnat/s-io.ads
! 155a73da603cb9fc842f21d398a8cf09  gcc/ada/libgnat/s-llflex.ads
! ee785586011bacc02a714a9263584980  gcc/ada/libgnat/s-maccod.ads
! 13825afd9668b3d3bddac1a965d1c9e5  gcc/ada/libgnat/s-mantis.adb
! 07feffc6226bffe3954cb05eec1e0f38  gcc/ada/libgnat/s-mantis.ads
! 37a440b41050430c49b505b68c7e7d4b  gcc/ada/libgnat/s-mastop.adb
! ebf3b3c0e980a823f4e115ed5c5dcb0a  gcc/ada/libgnat/s-mastop.ads
! dbc5fbc7cea30592e6ec4721c8eadf31  gcc/ada/libgnat/s-memcop.ads
! c3c7bff10fbda871a2a6f51bf9aff99a  gcc/ada/libgnat/s-memory.adb
! 04ae9b692110ba7ed5b734acdbbe44c7  gcc/ada/libgnat/s-memory.ads
! 5346dd1f89389d3fb9c109691e7334dc  gcc/ada/libgnat/s-memory__mingw.adb
! c5cb88efb8ac65f6aeb20c8003e76323  gcc/ada/libgnat/s-mmap.adb
! 2e20e7b628b6cdc156b599497295180e  gcc/ada/libgnat/s-mmap.ads
! 9a5db7ed430abe6ca55d0de3d34c0537  gcc/ada/libgnat/s-mmauni__long.ads
! 1e73a35ac2a448722752f419388b6180  gcc/ada/libgnat/s-mmosin__mingw.adb
! cbd984bb84a9c4cd19f306d82ff8c4f8  gcc/ada/libgnat/s-mmosin__mingw.ads
! e1b8f102312d50029e0a67e69309a184  gcc/ada/libgnat/s-mmosin__unix.adb
! b16403a60182bdc0c2559916b859d264  gcc/ada/libgnat/s-mmosin__unix.ads
! 88956e4af2d26b5aacd8fe6238501a30  gcc/ada/libgnat/s-multip.adb
! c4045ad22005510940d70e1a445db431  gcc/ada/libgnat/s-multip.ads
! 67603cb93cad8315133bfd54c89e95fc  gcc/ada/libgnat/s-objrea.adb
! 932c78d41c32e317a3111ca8a6fa645f  gcc/ada/libgnat/s-objrea.ads
! f387b62f18303feb3fe5ed75a6ef6794  gcc/ada/libgnat/s-os_lib.adb
! 6a5e2836ee6620fb015657b688e4e2ff  gcc/ada/libgnat/s-os_lib.ads
! 7c65ca7c332261659cd0096ff9f9e8c1  gcc/ada/libgnat/s-osprim.ads
! ef91a95531e9d87df1e418a6e32240d2  gcc/ada/libgnat/s-osprim__darwin.adb
! 77e6e79c623a904270a1f995d5e08600  gcc/ada/libgnat/s-osprim__lynxos.ads
! d9bffaa63cf1ec29a7354a5ceb4d930a  gcc/ada/libgnat/s-osprim__mingw.adb
! 055d3a75f694f31938926528dc93e6d6  gcc/ada/libgnat/s-osprim__posix.adb
! 4b7fbfa97c8706efcddd0eca2b649558  gcc/ada/libgnat/s-osprim__posix2008.adb
! 181e89d746f471abaa0dbaae07ed7540  gcc/ada/libgnat/s-osprim__rtems.adb
! 8003516139a63433471f72d469a70519  gcc/ada/libgnat/s-osprim__solaris.adb
! f776eccad2a4b63e9439af1eefdb10bb  gcc/ada/libgnat/s-osprim__unix.adb
! 9e72744dc7e18cd1d9969e9228fe102e  gcc/ada/libgnat/s-osprim__vxworks.adb
! 0f37fdf7c3e3dde7fa44187381f10e24  gcc/ada/libgnat/s-osprim__x32.adb
! 6e7ff7567936fc5f6586ef253562f184  gcc/ada/libgnat/s-osvers__vxworks-653.ads
! 66ce1aaa570762c1531863c2de65c475  gcc/ada/libgnat/s-pack03.adb
! 95dba0b1c1a1d3a76c2cd33b59b5d2e6  gcc/ada/libgnat/s-pack03.ads
! 59d63ad0577cfdc3e276535b68c071db  gcc/ada/libgnat/s-pack05.adb
! dbfac6a27fe55447dadf67b3b7e6a0d2  gcc/ada/libgnat/s-pack05.ads
! e3aa7746d30beb419c364cc9f3ba5c4b  gcc/ada/libgnat/s-pack06.adb
! e3c29221464fe17dd1a1fe06c0d4bb50  gcc/ada/libgnat/s-pack06.ads
! 6dd2e9653f619dc1361614650b573806  gcc/ada/libgnat/s-pack07.adb
! 2bbb07658434b4e1d91d840a1bc4d985  gcc/ada/libgnat/s-pack07.ads
! 21f465b502da8b76c4a2a5080f118eea  gcc/ada/libgnat/s-pack09.adb
! bf99b2ead8f2f81ea7af59cb7b6d8e8d  gcc/ada/libgnat/s-pack09.ads
! 60e4db6f7c2e71c1522a2a26f78e1f2c  gcc/ada/libgnat/s-pack10.adb
! ae30642bafd7cdd5fadfa4f0a846a6f6  gcc/ada/libgnat/s-pack10.ads
! 70c8a4d62632fbcf10430382995396b1  gcc/ada/libgnat/s-pack11.adb
! 94264d192f2e02918931b504b861d94c  gcc/ada/libgnat/s-pack11.ads
! d90bddbde9366769feeabd2fcefda213  gcc/ada/libgnat/s-pack12.adb
! 4278ffbc683c3aa3be2c8901199414fa  gcc/ada/libgnat/s-pack12.ads
! 88fda246db708be43d3a508fa0d360e5  gcc/ada/libgnat/s-pack13.adb
! 25e304d8e2aa458b093c01d06e4262ac  gcc/ada/libgnat/s-pack13.ads
! 356bc44ecd90ad443902d01dc6196b80  gcc/ada/libgnat/s-pack14.adb
! cba0f88813d0f2e79fe239a13c717e16  gcc/ada/libgnat/s-pack14.ads
! efdabe15992ddc4b0b2acd6186ef1b3d  gcc/ada/libgnat/s-pack15.adb
! 206022498e11f4124ccd8e438bd49bbd  gcc/ada/libgnat/s-pack15.ads
! 5c0cd57119f6b23e2ab4e543c2648de4  gcc/ada/libgnat/s-pack17.adb
! 48fe6ea1d1eb9708c3107a5c86453fc6  gcc/ada/libgnat/s-pack17.ads
! b346c273ac7e265c20d4907a803f7279  gcc/ada/libgnat/s-pack18.adb
! ac032259216961af1d3ff074258bd6fa  gcc/ada/libgnat/s-pack18.ads
! 4c5bbb141d8c4bcf95ec9c49ab2a40c1  gcc/ada/libgnat/s-pack19.adb
! 3de67ae4dea7d3388b93c74c90c812ca  gcc/ada/libgnat/s-pack19.ads
! 531850a11d4ef1e6e4d9849b3804def4  gcc/ada/libgnat/s-pack20.adb
! 7ae278d3bf50e76636d915b7153c4f78  gcc/ada/libgnat/s-pack20.ads
! 69fa5e17f1a53dcd5a1bc98cd1d344ce  gcc/ada/libgnat/s-pack21.adb
! 8614ac9395db7c3415258562715e5fa1  gcc/ada/libgnat/s-pack21.ads
! efc8bd1c38b6709c5081f1971fcff70b  gcc/ada/libgnat/s-pack22.adb
! 1d8eb43debfb1c9e47090b09315de2ee  gcc/ada/libgnat/s-pack22.ads
! 77ebc1de28c3de91af7c50adf4b1e75b  gcc/ada/libgnat/s-pack23.adb
! 9edb14675dfbc8898df4d4b38f0b9915  gcc/ada/libgnat/s-pack23.ads
! 54d1095a0f4e4479744de45219e32aa6  gcc/ada/libgnat/s-pack24.adb
! 61805911e4645c186f298e4b9224b852  gcc/ada/libgnat/s-pack24.ads
! fdf55363c724fcab95c4541204d209fe  gcc/ada/libgnat/s-pack25.adb
! d02d3a254de223c79e30487425a93c06  gcc/ada/libgnat/s-pack25.ads
! 61194ea20f194df20ed7ffbe2887987f  gcc/ada/libgnat/s-pack26.adb
! bcfc97eefee009ed62668e1af8ca7ac1  gcc/ada/libgnat/s-pack26.ads
! be59b4d483a10698dd427a9917c10c50  gcc/ada/libgnat/s-pack27.adb
! d31ed34042c407f7126804a7c0d0191e  gcc/ada/libgnat/s-pack27.ads
! 313c2f470db6bd39861ae516a33eb48b  gcc/ada/libgnat/s-pack28.adb
! 16f247c67e7125b10691f5477a6811c0  gcc/ada/libgnat/s-pack28.ads
! 613f19f02dafa9327e37b4de2e2e2112  gcc/ada/libgnat/s-pack29.adb
! 7f6d6a9aa2888fc73bc6917683d3d641  gcc/ada/libgnat/s-pack29.ads
! 593d42effc4453daa3bd229e43e6c861  gcc/ada/libgnat/s-pack30.adb
! ac84125ed53518a83898115cf752181b  gcc/ada/libgnat/s-pack30.ads
! 268a473bb7abf65c92eca2fad7593978  gcc/ada/libgnat/s-pack31.adb
! e6523d44b3dbc22b7c82eed7c15b2a89  gcc/ada/libgnat/s-pack31.ads
! 53daac3354084f3d0c255c11296954eb  gcc/ada/libgnat/s-pack33.adb
! 452dcaf99b863c40e0f6f1a9d4f2dfb4  gcc/ada/libgnat/s-pack33.ads
! a950447c3ff8c58d53eb1d98b6929140  gcc/ada/libgnat/s-pack34.adb
! 4bebbb5da196e492b2d0e8f768015b01  gcc/ada/libgnat/s-pack34.ads
! 5bf8122b59caf0febbbba72e77e1eb1b  gcc/ada/libgnat/s-pack35.adb
! 5545d03de0e21794b2cfba475f1dba7c  gcc/ada/libgnat/s-pack35.ads
! bc9fcfff9209ad0b5a58b188fe3437cc  gcc/ada/libgnat/s-pack36.adb
! e930854f87faf267c6fe34bdfb88ed5f  gcc/ada/libgnat/s-pack36.ads
! 87bf65eef0105f9eab9ab8d14a8d08e9  gcc/ada/libgnat/s-pack37.adb
! 4057f02cbead6e4e282b84fceed43c2d  gcc/ada/libgnat/s-pack37.ads
! 4f961bfd5834789a0b6e6f7301d8d258  gcc/ada/libgnat/s-pack38.adb
! 162af667ee1c11314cd72fd0651c2478  gcc/ada/libgnat/s-pack38.ads
! 11040eecf249261b1a120cce235eda69  gcc/ada/libgnat/s-pack39.adb
! 2ae7a0727d2b6ef9cc676ef8c41e2e38  gcc/ada/libgnat/s-pack39.ads
! 64ca08b62dcc0fd30f1708429beeb9d2  gcc/ada/libgnat/s-pack40.adb
! 7d31ae89d08fb05696dd7d60dfc2c2e2  gcc/ada/libgnat/s-pack40.ads
! da0db6262eefb71c9679d43d8bc0a5fd  gcc/ada/libgnat/s-pack41.adb
! cbc6691b6ef884228d8dd108024b74de  gcc/ada/libgnat/s-pack41.ads
! 8b83d21a13a9875174a61f38cb759237  gcc/ada/libgnat/s-pack42.adb
! 3944d1fd489426f866b69fa0c49e73a2  gcc/ada/libgnat/s-pack42.ads
! 601450111c0c2add662c8e3f28719e09  gcc/ada/libgnat/s-pack43.adb
! 1620239796cc633dc381faa9f67de1e8  gcc/ada/libgnat/s-pack43.ads
! c08d077d5e4417ea9f2b64e85505d8e3  gcc/ada/libgnat/s-pack44.adb
! afafb8bb4941942c499027f0fd77446e  gcc/ada/libgnat/s-pack44.ads
! 906103c9066ac052b11496f02cf6f08e  gcc/ada/libgnat/s-pack45.adb
! fc925b36b26fa7aa16242b9670c1e99c  gcc/ada/libgnat/s-pack45.ads
! d0c7816ccdb0535dd66f4ebc00df7f98  gcc/ada/libgnat/s-pack46.adb
! d90466902dbff83d034ade7bc11b7cdc  gcc/ada/libgnat/s-pack46.ads
! 22b6a81815991fea064c13531c5d7e85  gcc/ada/libgnat/s-pack47.adb
! 84a53b664f4f600483ce811db33d24cc  gcc/ada/libgnat/s-pack47.ads
! f6077b1e3a3c76dc488e95cd63d01dc8  gcc/ada/libgnat/s-pack48.adb
! bf831f776796db959e3e7883dc7c6176  gcc/ada/libgnat/s-pack48.ads
! ba85dc64175c04bee18a414cbff3b18b  gcc/ada/libgnat/s-pack49.adb
! 83f3c02e7f73f86c6ca56ebcff085228  gcc/ada/libgnat/s-pack49.ads
! b34dd54f7553f3c1a6bce71574622f51  gcc/ada/libgnat/s-pack50.adb
! 8f4fed640034d55045e3005c4c406ccf  gcc/ada/libgnat/s-pack50.ads
! 7994a033265f3ef8f12b1192e2375de3  gcc/ada/libgnat/s-pack51.adb
! 4e88a56880d682059d0d6d69a5f44464  gcc/ada/libgnat/s-pack51.ads
! 66605c8e969faccd2f3b38aed8373dfb  gcc/ada/libgnat/s-pack52.adb
! d60a31e965634f48b1acb54d88e1b933  gcc/ada/libgnat/s-pack52.ads
! 6203437e28e392aa5d33965a5fa8696e  gcc/ada/libgnat/s-pack53.adb
! 3c7f045f109ba3dac25ac81c60fb0cf3  gcc/ada/libgnat/s-pack53.ads
! 9077a513fe43531c8b2faf4a44b328fb  gcc/ada/libgnat/s-pack54.adb
! b1f13cf795e6efad581ae678c66c2b7a  gcc/ada/libgnat/s-pack54.ads
! dc881976672ef601d0cfb964d470b36b  gcc/ada/libgnat/s-pack55.adb
! 0ba6ffb7b3be95812139273dd71fa11b  gcc/ada/libgnat/s-pack55.ads
! efbf07abcce3e0b13ec67bae2cfd1260  gcc/ada/libgnat/s-pack56.adb
! 150b434d9a699d87c71ed6728e35ac56  gcc/ada/libgnat/s-pack56.ads
! c3851de32b7f42213fb34b0d99e61066  gcc/ada/libgnat/s-pack57.adb
! 6dc5a4dd0d2fe4025bfd776261a6b178  gcc/ada/libgnat/s-pack57.ads
! 1638578b7ad31f0830c46eb15e588098  gcc/ada/libgnat/s-pack58.adb
! 0fc1230e0862bd5311d2afcb5ac37c46  gcc/ada/libgnat/s-pack58.ads
! b793cc2260e6d970760e74590ebe1caf  gcc/ada/libgnat/s-pack59.adb
! c93c766540f06ebc73a6988ad6c3618a  gcc/ada/libgnat/s-pack59.ads
! 73a3df82deef082274d571c4de347fa9  gcc/ada/libgnat/s-pack60.adb
! df14dd39853f66f180ef829e6df40351  gcc/ada/libgnat/s-pack60.ads
! 46057ac779276c372d68288cbd0bf7d1  gcc/ada/libgnat/s-pack61.adb
! 962b012eba016158f84cb3497a6a2318  gcc/ada/libgnat/s-pack61.ads
! 7f201778c3a419f34b6267f2e1d652f6  gcc/ada/libgnat/s-pack62.adb
! 17ba5428c6e2e1272b7d4c12acaef2bc  gcc/ada/libgnat/s-pack62.ads
! 06addd04a9aab83ab486cf6531246227  gcc/ada/libgnat/s-pack63.adb
! 07043a829dcbe3ebb61a03dc2373a2ad  gcc/ada/libgnat/s-pack63.ads
! 22e4bad038eebca02db8acb557c746ec  gcc/ada/libgnat/s-parame.adb
! 7454bc8c310cc139c99eeae04257e8b3  gcc/ada/libgnat/s-parame.ads
! f2e8b210263e44e3481ce9c38eb78708  gcc/ada/libgnat/s-parame__ae653.ads
! 5d098a01ed668a3f420bb0a635b785ae  gcc/ada/libgnat/s-parame__hpux.ads
! 9f70583926b089b9acb986916a0e8aae  gcc/ada/libgnat/s-parame__rtems.adb
! 2de3128772cdd37a25715b6b7a176fea  gcc/ada/libgnat/s-parame__vxworks.adb
! 070f6b8dfdb8020521caf670756e2849  gcc/ada/libgnat/s-parame__vxworks.ads
! cdbfe4415d5644296a522e8ec573d97f  gcc/ada/libgnat/s-parint.adb
! bd9fabf22757eca53591758f5d613fbd  gcc/ada/libgnat/s-parint.ads
! a012c2b24ba40e360cf53e2328339d36  gcc/ada/libgnat/s-pooglo.adb
! 8d5ae0ec502c8d892879d42f57d9092d  gcc/ada/libgnat/s-pooglo.ads
! 1aae4aa603028e3845b81a09ee9f341b  gcc/ada/libgnat/s-pooloc.adb
! b189c7282848dcb2d2e3a6f099402e8b  gcc/ada/libgnat/s-pooloc.ads
! cd4aca07d967f0d4015026a804df3cbf  gcc/ada/libgnat/s-poosiz.adb
! 30a1dcdee4dd3fbba8f065f65ea07d4c  gcc/ada/libgnat/s-poosiz.ads
! f33c962a02e0d2533f589c9519fb271f  gcc/ada/libgnat/s-powtab.ads
! 568f63f8ec1193b43a7ac9469a521e61  gcc/ada/libgnat/s-purexc.ads
! 828ffa9252c6d37beaa7212158f96588  gcc/ada/libgnat/s-rannum.adb
! 0c9099ed74f93097dbb5479a0cbf9195  gcc/ada/libgnat/s-rannum.ads
! 17b15a11409f82443d684a4990e20964  gcc/ada/libgnat/s-ransee.adb
! 5cc9438685fd55396325f14e7502b79f  gcc/ada/libgnat/s-ransee.ads
! 6e4ba228e0a5998dcfa104cc0ca6b601  gcc/ada/libgnat/s-regexp.adb
! e5bb7e98dd95b7c0633bba51e7dab999  gcc/ada/libgnat/s-regexp.ads
! 69f42120b278bbef271098ff9a9f8adb  gcc/ada/libgnat/s-regpat.adb
! b3be13fba9a624635dd5783d7a5d7105  gcc/ada/libgnat/s-regpat.ads
! 75bbaae5daeff32e61262dbf55e39bef  gcc/ada/libgnat/s-resfil.adb
! e0d935d54cd5aee702dbdbfe099b175f  gcc/ada/libgnat/s-resfil.ads
! 5ef3b14af4589ecb5bfde70fbf66279e  gcc/ada/libgnat/s-restri.adb
! f3080516aa55f7e57abace7f6df2491f  gcc/ada/libgnat/s-restri.ads
! cda7f2981078aa6751ccc4658fd96d1a  gcc/ada/libgnat/s-rident.ads
! 1959e94a1b938c0a2745f5411f0f32b6  gcc/ada/libgnat/s-rpc.adb
! 76fea96ce36d9cf1fe6445ab51c0d64b  gcc/ada/libgnat/s-rpc.ads
! 0a084f4ecfee1cb258510714cc1043fb  gcc/ada/libgnat/s-scaval.adb
! ce2a4a878af40e0bf0440141d71cfcf7  gcc/ada/libgnat/s-scaval.ads
! ad1dbd21600fb6f73ba4a023e766ae82  gcc/ada/libgnat/s-secsta.adb
! 31c94090d171220c213959d5ecfe2fba  gcc/ada/libgnat/s-secsta.ads
! fae2f2e2cb38bf01646aa3f6dde34ea0  gcc/ada/libgnat/s-sequio.adb
! 47734d137655fee3ffd02e7c89bd3519  gcc/ada/libgnat/s-sequio.ads
! 2eb2d21225454c028eb788024bb139ab  gcc/ada/libgnat/s-shasto.adb
! f4bda00d7ab431152c2f45e76a2e0045  gcc/ada/libgnat/s-shasto.ads
! a26178496ea6624fd3cfa581fed65361  gcc/ada/libgnat/s-soflin.adb
! 8b59c7aa087f9daab52cf3702cae882c  gcc/ada/libgnat/s-soflin.ads
! 75f75ccab18ab23956bdb5b90687b332  gcc/ada/libgnat/s-soliin.adb
! 59832e9b9adc725d3fd0db949885ad85  gcc/ada/libgnat/s-soliin.ads
! c757a21cd8a3fec50670162a82903c02  gcc/ada/libgnat/s-sopco3.adb
! 973e5786b9c42c6c40fa35b9ff39a1e6  gcc/ada/libgnat/s-sopco3.ads
! cd2c54ce7d3ad6a6bc006893de288482  gcc/ada/libgnat/s-sopco4.adb
! 085346bcb76d456ae88779c03d11ff26  gcc/ada/libgnat/s-sopco4.ads
! cdd1d60ebe2bb6593a3de7d10930c20b  gcc/ada/libgnat/s-sopco5.adb
! 70e9a1a073cceb61d330263ba573aabd  gcc/ada/libgnat/s-sopco5.ads
! eaf2a50ebb4c9613285631595857c580  gcc/ada/libgnat/s-spsufi.adb
! 1d87f3bc5a9c8b5b7a069c8a67ebfddf  gcc/ada/libgnat/s-spsufi.ads
! ab897b3e8010803f784dfc2fd9d69a7e  gcc/ada/libgnat/s-stache.adb
! 3c84939b7a95c99a93669416051f550d  gcc/ada/libgnat/s-stache.ads
! fc05639972691b7b968b9fc731a25483  gcc/ada/libgnat/s-stalib.adb
! 1180cdc49e2c371cc8ec6f690048dc61  gcc/ada/libgnat/s-stalib.ads
! 071e92ceb3e0091d19b91e6b10d16e66  gcc/ada/libgnat/s-stausa.adb
! 70026eef808878acfe5b92742dfae279  gcc/ada/libgnat/s-stausa.ads
! 30834966c08698fbaf3d2d9d92f19917  gcc/ada/libgnat/s-stchop.adb
! 8cd3b5b502ca5fb1c2e1e3baf4bb3154  gcc/ada/libgnat/s-stchop.ads
! 861e9f712bfa8bfa1f6d5822f3b805b2  gcc/ada/libgnat/s-stchop__limit.ads
! 19a8d058b0f64c049a28f7c39f8ef053  gcc/ada/libgnat/s-stchop__rtems.adb
! a5d759a89206ed0cf983818c995684ed  gcc/ada/libgnat/s-stchop__vxworks.adb
! 57f1f627aaaa59db01b89868dfc55c75  gcc/ada/libgnat/s-stoele.adb
! dba0634f82dfe73aed637aab6e0f43e4  gcc/ada/libgnat/s-stoele.ads
! 7ae90f62f51b5eec23903e5b0987ab29  gcc/ada/libgnat/s-stopoo.adb
! de86edea2b40207c1cb29c88e97f9d39  gcc/ada/libgnat/s-stopoo.ads
! 9f1def374c1a95c195ac7286002748e7  gcc/ada/libgnat/s-stposu.adb
! 7067dab8c52b81925c723cfb13fc4d34  gcc/ada/libgnat/s-stposu.ads
! 9d0bf4ecc986bf9eae86a358ff8bef89  gcc/ada/libgnat/s-stratt.adb
! 861ebf429baba5c0bdbe7df034bdd8c5  gcc/ada/libgnat/s-stratt.ads
! 481f88e7ef67363184798026493e5dcb  gcc/ada/libgnat/s-stratt__xdr.adb
! 95c541703b2dd8dfb9bbdfab7a380b94  gcc/ada/libgnat/s-strcom.adb
! 7f3a42b99ebab7ff8c26e31cbc5adb8a  gcc/ada/libgnat/s-strcom.ads
! 5df9007550eb9af71b930d8727a30d3f  gcc/ada/libgnat/s-strhas.adb
! 06ae38fb1f3fbdd3c29b636d01e0d24b  gcc/ada/libgnat/s-strhas.ads
! ad87fc72637d2843e79bac2c7dac4dd7  gcc/ada/libgnat/s-string.adb
! 308b3e0b14011b60970bcb7392d25fa9  gcc/ada/libgnat/s-string.ads
! 4108f38f3c7a94e3177f5ee34cbf8c5f  gcc/ada/libgnat/s-strops.adb
! bb321a95e7dbfe8077e3c7300d9f14f9  gcc/ada/libgnat/s-strops.ads
! 2e1916f2a2a183c746fb1f6002e42cc7  gcc/ada/libgnat/s-ststop.adb
! e5ca56fd30cd1eec3946272994170eff  gcc/ada/libgnat/s-ststop.ads
! b89f4b9a0ad75603fc2accc4e58c64e0  gcc/ada/libgnat/s-tasloc.adb
! dcdb221e77588e5f47034a93db597cbb  gcc/ada/libgnat/s-tasloc.ads
! 4ae1931efa30eefca2351a3c823ddd33  gcc/ada/libgnat/s-thread.ads
! 2ec5e56dee36f33cf98ec214cf197c58  gcc/ada/libgnat/s-thread__ae653.adb
! 4815078af22263becdb18178e49748e1  gcc/ada/libgnat/s-traceb.adb
! 68819891845d3eb772e19013bab9a2b7  gcc/ada/libgnat/s-traceb.ads
! c3df7e912c6974925cef2fb535fbcad1  gcc/ada/libgnat/s-traceb__hpux.adb
! b6adfc168e32223954cc15e91880ab9c  gcc/ada/libgnat/s-traceb__mastop.adb
! d1228aee0b1043abc20031c4be61cd28  gcc/ada/libgnat/s-traent.adb
! 9b8b11a6c394ed7241e5ab12658a21dc  gcc/ada/libgnat/s-traent.ads
! ee5f1c3bc34279d741655d3713afb579  gcc/ada/libgnat/s-trasym.adb
! 79a4df8be950a9d6537013ba81533f68  gcc/ada/libgnat/s-trasym.ads
! f4d9fa1b030dbfd0ba2d6ba8dda00b14  gcc/ada/libgnat/s-trasym__dwarf.adb
! 64ee310785645714f3ec39f8e9a5da02  gcc/ada/libgnat/s-tsmona.adb
! fb43bd7a547f4223d6fbab9e377e4dce  gcc/ada/libgnat/s-tsmona__linux.adb
! db57a456d9bb5bbedc62cabc3d0a9e9e  gcc/ada/libgnat/s-tsmona__mingw.adb
! 3972d38b2542fcd8fe3eac999e4643a8  gcc/ada/libgnat/s-unstyp.ads
! 88d45b234dfd10f6389a7d10c1ed244f  gcc/ada/libgnat/s-utf_32.adb
! 6c7eecb44979c6aa5860fa2fff49a7e8  gcc/ada/libgnat/s-utf_32.ads
! bb00028bacbb34269041af3156d3ddad  gcc/ada/libgnat/s-valboo.adb
! 92a38df06ef5b2b04d5811b2c8ebce8a  gcc/ada/libgnat/s-valboo.ads
! b09cfe8e057f2c454a597e72c5589b69  gcc/ada/libgnat/s-valcha.adb
! c1ee5bf1123a7e6eea84758e6b3c4267  gcc/ada/libgnat/s-valcha.ads
! 1eb39e836801955eb13efbd651d8f0f9  gcc/ada/libgnat/s-valdec.adb
! bc317e4f9ac411390c9d03f483560aef  gcc/ada/libgnat/s-valdec.ads
! ce405e149566d0a1089404ba42c893ca  gcc/ada/libgnat/s-valenu.adb
! 1447d65d5ce3593fb77d9a33da1f209a  gcc/ada/libgnat/s-valenu.ads
! a092895efbb5c99aead426464691f99c  gcc/ada/libgnat/s-valint.adb
! 87c36b3ee8afd71bcbbe86290d535d7e  gcc/ada/libgnat/s-valint.ads
! 1e39b948882a83e5af428ec83584f2b9  gcc/ada/libgnat/s-vallld.adb
! a02a73ca72e9f078bf0c4e5d1d218df9  gcc/ada/libgnat/s-vallld.ads
! fd5ccea91c9f4544d6c97615f830977c  gcc/ada/libgnat/s-vallli.adb
! 03cac8b9b4ab35a3ae322c34a3ecacb6  gcc/ada/libgnat/s-vallli.ads
! 8c742547ebb0adda895a30dcf1cd09d6  gcc/ada/libgnat/s-valllu.adb
! e1619059b5ce4345e5d87b74aa753b3b  gcc/ada/libgnat/s-valllu.ads
! 5b7bdbb32295a09ca68d40b63bf7d10c  gcc/ada/libgnat/s-valrea.adb
! 1c451aa19ca645e652fbce4ed6f5ded5  gcc/ada/libgnat/s-valrea.ads
! b78a54ae6383929790234080f5e39cfc  gcc/ada/libgnat/s-valuns.adb
! c0582fab2ad0b1443ddd70f272596f0f  gcc/ada/libgnat/s-valuns.ads
! 7e529871435b53bf17df13d980962bc0  gcc/ada/libgnat/s-valuti.adb
! 42e7469a3910a39364d9a3da724c5a7a  gcc/ada/libgnat/s-valuti.ads
! 59557073ae23de42d9b13686864fc0f1  gcc/ada/libgnat/s-valwch.adb
! a59577ac83daf2a89f18ef8eaa65412d  gcc/ada/libgnat/s-valwch.ads
! cb758f6f3bccfeae0c9884034b7f243a  gcc/ada/libgnat/s-veboop.adb
! ce22f37a5b7552f93b4fa2a6bd6288f1  gcc/ada/libgnat/s-veboop.ads
! 85ed915a1267c25d643f5db26a58cc22  gcc/ada/libgnat/s-vector.ads
! fb3c985bbf4507032aaa7e9cc7ee1608  gcc/ada/libgnat/s-vercon.adb
! 4154e228ef586958036dc9493f24daff  gcc/ada/libgnat/s-vercon.ads
! e9e95c62fdf9ee14d44ad25248ee5e1d  gcc/ada/libgnat/s-wchcnv.adb
! 884636ddb7e11050028aaa26d9be3c8b  gcc/ada/libgnat/s-wchcnv.ads
! 5bc3f38d46ce109d9bb142820a35a5d5  gcc/ada/libgnat/s-wchcon.adb
! 8ac19e4c82093718bae7d53be5da3c35  gcc/ada/libgnat/s-wchcon.ads
! 3d827cf0470fdc518e4d306d7e646967  gcc/ada/libgnat/s-wchjis.adb
! b84768d62f513c9322e34d21edb85f91  gcc/ada/libgnat/s-wchjis.ads
! 3d3dbcde8674655ae91f77c5d55b604b  gcc/ada/libgnat/s-wchstw.adb
! ce7d3ca2103b19045fc05bb2a0e87e11  gcc/ada/libgnat/s-wchstw.ads
! 06a4c653616ebbd8341c03de2af622fc  gcc/ada/libgnat/s-wchwts.adb
! d09bff8ecb858c930c9ab21f72d74459  gcc/ada/libgnat/s-wchwts.ads
! fd65d7706cbcfdbe6c8cf977b7319478  gcc/ada/libgnat/s-widboo.adb
! 3eeb304c9d3fca5392756f249fe1c8af  gcc/ada/libgnat/s-widboo.ads
! e42af2ca28df814ef1ddd0cd1f0507e6  gcc/ada/libgnat/s-widcha.adb
! f5bfbacdf4397faf46ef2307b6bb3b2b  gcc/ada/libgnat/s-widcha.ads
! 29012d024920ef71c1b460bfbce2f85d  gcc/ada/libgnat/s-widenu.adb
! ae204da450b23db17753a7a835d4b5e1  gcc/ada/libgnat/s-widenu.ads
! 2993705abe5d9ce5d04e41110775f489  gcc/ada/libgnat/s-widlli.adb
! a704ad126ef304a80651a668df9e7935  gcc/ada/libgnat/s-widlli.ads
! 2494ca0ba7a0f69bcddc3bf4726eba3f  gcc/ada/libgnat/s-widllu.adb
! fcbec3e2e6746e40a516b39c3e7f73a6  gcc/ada/libgnat/s-widllu.ads
! 4f8c22d26207ab77b02a96a74447a889  gcc/ada/libgnat/s-widwch.adb
! f5ada4893ea93125d8ac57e5696ec125  gcc/ada/libgnat/s-widwch.ads
! 34ed2657c2b35d151257599df378913c  gcc/ada/libgnat/s-win32.ads
! 7fba14acc7cacfdc59861185554114ac  gcc/ada/libgnat/s-winext.ads
! dc9bcf0d23e819f28eb0636c651b893e  gcc/ada/libgnat/s-wwdcha.adb
! 9f4cbfd951f23103cf64955e25112e61  gcc/ada/libgnat/s-wwdcha.ads
! 97b4fa66f1cd0ed7a5f683d03635fed3  gcc/ada/libgnat/s-wwdenu.adb
! 4b2441035974639008568cc865c35950  gcc/ada/libgnat/s-wwdenu.ads
! 0ae6f45a808b6644c64611388a86c3e8  gcc/ada/libgnat/s-wwdwch.adb
! 86f4af40296a6e687221357c874fb578  gcc/ada/libgnat/s-wwdwch.ads
! 0f4c21401ad2531f8c5d4010537dc6d2  gcc/ada/libgnat/sequenio.ads
! c7ea319b29245129911a221db181e9e5  gcc/ada/libgnat/system-aix.ads
! 40c25fa0de20aeeaa00288848dc307d9  gcc/ada/libgnat/system-darwin-arm.ads
! 58e0046a6ae4e6b77bc8da33ed0c38de  gcc/ada/libgnat/system-darwin-ppc.ads
! 04080cfd1852dac606d6512bdd9b99d7  gcc/ada/libgnat/system-darwin-x86.ads
! 40991badbee93e63146414baf49559e6  gcc/ada/libgnat/system-djgpp.ads
! 7fcff2401f4d192d290adbb99539fd2f  gcc/ada/libgnat/system-dragonfly-x86_64.ads
! 7b428894f14589b0450e338328d302ac  gcc/ada/libgnat/system-freebsd.ads
! 001f0f008d74f534a5e58b2124bb7eea  gcc/ada/libgnat/system-hpux-ia64.ads
! 6ae3e0441bf9bb0ca640dd692575b873  gcc/ada/libgnat/system-hpux.ads
! 02ac3c26a2ad24f9ed84a783c55a421e  gcc/ada/libgnat/system-linux-alpha.ads
! 2ce15279895ab22da2466f3cdbcc2ba1  gcc/ada/libgnat/system-linux-arm.ads
! 6798c7cdcd8764fed43b77467e11ef11  gcc/ada/libgnat/system-linux-hppa.ads
! 513d583cd113e572bab579aed66e1cc3  gcc/ada/libgnat/system-linux-ia64.ads
! 2aa35df36c53100e7f540f55fa39d359  gcc/ada/libgnat/system-linux-m68k.ads
! 372f72a48567e392818bc7d9b49033e3  gcc/ada/libgnat/system-linux-mips.ads
! 6ef8a556f4a3a9fbdaa44822858e1f56  gcc/ada/libgnat/system-linux-ppc.ads
! 46a4edaf2eb5e2fff627eb3abfe711b2  gcc/ada/libgnat/system-linux-s390.ads
! c7ac57498bcd8cc319a421bf066dfc80  gcc/ada/libgnat/system-linux-sh4.ads
! ca7fc40b32afd299604aaf5142f3bef9  gcc/ada/libgnat/system-linux-sparc.ads
! ae0a27077aa8f5071b39bf07ec17075e  gcc/ada/libgnat/system-linux-x86.ads
! 05a4cfa15b47a69866c3560893707f39  gcc/ada/libgnat/system-lynxos178-ppc.ads
! 1755570ec8cb9c78669c65fac9fc5dfc  gcc/ada/libgnat/system-mingw.ads
! 7ec2cd1e3badd048875f8389e67d5750  gcc/ada/libgnat/system-qnx-aarch64.ads
! ad44a5328ce047a607ff0a75d73029bd  gcc/ada/libgnat/system-rtems.ads
! 3a8bc9fbbbb0a7648615cc1f10877926  gcc/ada/libgnat/system-solaris-sparc.ads
! 3f6c4716ca5378fb34c21a401938975f  gcc/ada/libgnat/system-solaris-x86.ads
! 954e39232edf16f347c107ce46396cb7  gcc/ada/libgnat/system-vxworks-arm-rtp-smp.ads
! 39249a6d42b6319d6cbc8ed8d069751e  gcc/ada/libgnat/system-vxworks-arm-rtp.ads
! efc007afc15c897b4a672d5eb853762e  gcc/ada/libgnat/system-vxworks-arm.ads
! dfd40968eda420e1238f138a8e0bfcd1  gcc/ada/libgnat/system-vxworks-e500-kernel.ads
! 39fb4e8d83fa6a51c9aaf2c370ff47b6  gcc/ada/libgnat/system-vxworks-e500-rtp-smp.ads
! 652aafde7bc0491f4b0c4a9a4545d52b  gcc/ada/libgnat/system-vxworks-e500-rtp.ads
! 1be54c70d8e27c605a52f7b783c1b478  gcc/ada/libgnat/system-vxworks-e500-vthread.ads
! fe61f4b6876d2e0e7e5139dcf807b4db  gcc/ada/libgnat/system-vxworks-ppc-kernel.ads
! eefb651a801576d4d59ecebab4535958  gcc/ada/libgnat/system-vxworks-ppc-ravenscar.ads
! fa5d715b3d5f8e9c9587f4351203885c  gcc/ada/libgnat/system-vxworks-ppc-rtp-smp.ads
! 223a9e7809648c5d88d8e4474eb7f861  gcc/ada/libgnat/system-vxworks-ppc-rtp.ads
! 562caee3f44f9d13c5582925f83d0d68  gcc/ada/libgnat/system-vxworks-ppc-vthread.ads
! 9d553d9227afd3e63266132507933ff4  gcc/ada/libgnat/system-vxworks-ppc.ads
! d13e9f0a6f2390d6166a67a0afff8259  gcc/ada/libgnat/system-vxworks-ppc64-kernel.ads
! d38d605ba0f2ed7143c4efb3bb7a69a5  gcc/ada/libgnat/system-vxworks-x86-kernel.ads
! 35210e3b921b77adc36826a85f90752f  gcc/ada/libgnat/system-vxworks-x86-rtp-smp.ads
! f4cbb9300910354683ebf015c51e168b  gcc/ada/libgnat/system-vxworks-x86-rtp.ads
! 7b334c4191f7c38c6992aef60875347d  gcc/ada/libgnat/system-vxworks-x86-vthread.ads
! 496981f8c66eefd347c7b03686be5833  gcc/ada/libgnat/system-vxworks-x86.ads
! 620368b7262d52ae324d3a88c10f3ab1  gcc/ada/libgnat/system-vxworks7-aarch64-rtp-smp.ads
! 3c96bc4cc8d557098dc779a7f726a6a5  gcc/ada/libgnat/system-vxworks7-aarch64.ads
! 0b6b84dd7d7167349b12d589dddef0ba  gcc/ada/libgnat/system-vxworks7-arm-rtp-smp.ads
! 1884248bf389ba5d228ba2d297e53727  gcc/ada/libgnat/system-vxworks7-arm.ads
! 544aecad3e4119d4a0aa446b08ba8225  gcc/ada/libgnat/system-vxworks7-e500-rtp-smp.ads
! 1c199af9eed8097a984b1be4f343d564  gcc/ada/libgnat/system-vxworks7-ppc-rtp-smp.ads
! 4eb88ae6692830c1d37dab18831e46b3  gcc/ada/libgnat/system-vxworks7-ppc64-rtp-smp.ads
! 4afe778c04e37f39228400b12498a953  gcc/ada/libgnat/system-vxworks7-x86-kernel.ads
! 5730fe892936cb6facc724cc98b7f3e2  gcc/ada/libgnat/system-vxworks7-x86-rtp-smp.ads
! 600005a5fa305193584ed72ed5a89243  gcc/ada/libgnat/system-vxworks7-x86_64-kernel.ads
! 9c61eba9b285052ed8f8e2edcf407e7b  gcc/ada/libgnat/system-vxworks7-x86_64-rtp-smp.ads
! da79f639a6e7c0fe14c3dd35bac18aff  gcc/ada/libgnat/system.ads
! 2dc890e2791f7e9d6e1e9ca1cfb55c71  gcc/ada/libgnat/text_io.ads
! 9a646eb97c6840de5d4bbb081dd2031a  gcc/ada/libgnat/unchconv.ads
! b8b0f9c3471d18ee5ac33521fe6f6d31  gcc/ada/libgnat/unchdeal.ads
! db197cef3c77d05363f230600747ad34  gcc/ada/link.c
! 955ed088f552d067e15fee45cf2669be  gcc/ada/live.adb
! a111f047a98dde1a1d56c8f13ae9a214  gcc/ada/live.ads
! 22ba064bd637369bc593c7d4f99d882e  gcc/ada/locales.c
! 57e4fc37f22d79fd16d9674befd7b367  gcc/ada/make.adb
! a966a734b1cfb867d4cedc32b2b7bd44  gcc/ada/make.ads
! 5457e95dff53ad4278eac5566607eb4b  gcc/ada/make_util.adb
! 24c000b0c627012d5afc753c59253db2  gcc/ada/make_util.ads
! 79c8075e3969bd108bebf73fec7d7660  gcc/ada/makeusg.adb
! 51c079ff4256808bcb7b7e8d60753e75  gcc/ada/makeusg.ads
! 4b839c6bcdda010d9497d87671e14cda  gcc/ada/mdll-fil.adb
! ce7ba970d0c5edf0b340000216c41763  gcc/ada/mdll-fil.ads
! b048426135fe5d4148adc1ad533ee159  gcc/ada/mdll-utl.adb
! c4ada40143873e9f88f6963bbc358758  gcc/ada/mdll-utl.ads
! 5d0caf010762ad71653a2365cd535346  gcc/ada/mdll.adb
! d5628e6074e070d586a1a2a30dad8a34  gcc/ada/mdll.ads
! b1dafd53c199dd00ef29e2bbab248e58  gcc/ada/mingw32.h
! 333bb15464d40eeaf85ac4e573e6e083  gcc/ada/mkdir.c
! ca2a372b30b4dc5be7b2be6767f6bf76  gcc/ada/namet-sp.adb
! 4949cee1ec9e540427ae1f8614d12b57  gcc/ada/namet-sp.ads
! 0baf9b9645d452853b7827d123751e8c  gcc/ada/namet.adb
! b45dfbbce975fe14fb8a4806f46cde93  gcc/ada/namet.ads
! 8bcb510ab964886922895f42ce2856a7  gcc/ada/namet.h
! a0729efacacf55572c01ddb3440cc049  gcc/ada/nlists.adb
! 3c3956582eaba899b7217cea2d532aaf  gcc/ada/nlists.ads
! b872c25eb063b3b6a8a045d23cf95c6f  gcc/ada/nlists.h
  349f0f4aeff5f96eb16ad78474248af9  gcc/ada/nmake.adt
! 6ddeea39276bfb3a3f41164915a5936a  gcc/ada/opt.adb
! 13a511ff7b6383bde0572383a9fce200  gcc/ada/opt.ads
! 12f4e28b3e55f9898d0e05c98f2d8d92  gcc/ada/osint-b.adb
! c4f51e0319afd5f8ff638ad565c30767  gcc/ada/osint-b.ads
! bddff8ef880c337b7fbdc59b59ae739b  gcc/ada/osint-c.adb
! 35bb56aa0b55652dfbd3e60275102dd3  gcc/ada/osint-c.ads
! 23a120c3b70838c93cd2bf47052d5ecd  gcc/ada/osint-l.adb
! 1adbc160ea82fcbf5ad0247744eaafd4  gcc/ada/osint-l.ads
! 52b218492d360505c0bda6a48ee117b1  gcc/ada/osint-m.adb
! 3eae9e3edfb598a8817ad58f45b9198a  gcc/ada/osint-m.ads
! 052c08f48303e8391318232c56b9137c  gcc/ada/osint.adb
! b1f07448b33754ab54b8515a5457bc79  gcc/ada/osint.ads
! 3be5fdc94e483fa86af57b5b6230549f  gcc/ada/output.adb
! 956252bff10e71f2011c3e2b23ad3039  gcc/ada/output.ads
! 389d8babf840660f42ba2f7c9591b7d6  gcc/ada/par-ch10.adb
! 7647545b7a67cdd743be8fd66beebc0a  gcc/ada/par-ch11.adb
! ecba3688587d6c17dc3ee09f385c7c84  gcc/ada/par-ch12.adb
! 9e92b2e74ca0a26bdf1030c02d1b530f  gcc/ada/par-ch13.adb
! af041deb86737aedcdbd47747c8dae42  gcc/ada/par-ch2.adb
! 1729aeb2d6628b90b4d7626bd3d6d74d  gcc/ada/par-ch3.adb
! dfea4a6f2733d71b2e10080b71ce5af3  gcc/ada/par-ch4.adb
! a40495592c955c931be32bcb9cf6c8fb  gcc/ada/par-ch5.adb
! 876c26d243863b9187c8158b473eb2b4  gcc/ada/par-ch6.adb
! e4c9864bb7f073c801f17bcd72073f86  gcc/ada/par-ch7.adb
! 8247fb660a24abab57bfcabeb155e74e  gcc/ada/par-ch8.adb
! cd7a4bba364c961678407738a55a246d  gcc/ada/par-ch9.adb
! 3666417b88fdb52c0074bdfce66066fa  gcc/ada/par-endh.adb
! 684928de76cfa483b4a8c4f63423391a  gcc/ada/par-labl.adb
! 01431f774c748ea3b73cd97bc4542c6a  gcc/ada/par-load.adb
! 07060522fa3b8a68dd56171c9be60695  gcc/ada/par-prag.adb
! eb442fbbf805737d5787aee3b22ab402  gcc/ada/par-sync.adb
! 8cb6a6e8a5fda44c315fc4db7559f385  gcc/ada/par-tchk.adb
! 6ea057d4324438aec9d0210cf50e6b78  gcc/ada/par-util.adb
! 27066887a161e3e3a5970dd8847b96cb  gcc/ada/par.adb
! ea1f90c5391ae7db811d41642386f332  gcc/ada/par.ads
! 4b321dee4de55c094fbe053cecaa77c3  gcc/ada/par_sco.adb
! 2da8f7e7b13422d644ae6be5aba9a9a6  gcc/ada/par_sco.ads
! 5f9f6e262b35cb861f24912aa6fc25f7  gcc/ada/pprint.adb
! 0d2c40b48461640453e35632281ebf79  gcc/ada/pprint.ads
! 816b27eed7dbe73b22139a72eb435485  gcc/ada/prep.adb
! 22e273b1ee02bb498d68e2094ca607e6  gcc/ada/prep.ads
! 12a357119759b93a87a2b852244a5cf6  gcc/ada/prepcomp.adb
! b53882f549d072a8ed88d691170e7254  gcc/ada/prepcomp.ads
! 73fa69531c025aacfdc85bed5e5fb8ba  gcc/ada/put_scos.adb
! 8a33e8e6bee2beee4a605694c617a69b  gcc/ada/put_scos.ads
! 1a52bd144f50dc4cc0554dae1ad079dd  gcc/ada/raise-gcc.c
! f46e8eb1e3f2c8e55700b0b529da38f7  gcc/ada/raise.c
! 1de4b4e6ecfa5c2446138fe4a063067c  gcc/ada/raise.h
! 7296ca104adb085e7dc3ef4b0e98c145  gcc/ada/repinfo.adb
! 6510f7c6851077f3f5c620698ffd3504  gcc/ada/repinfo.ads
! 127a392aaa6c904847791ddcadd8c506  gcc/ada/repinfo.h
! 2c9a39a856dc744d4bbc9b58a707addc  gcc/ada/restrict.adb
! added364a6397e7e0f682e0931469b4e  gcc/ada/restrict.ads
! 0c59a251093da57c19a74e15455d98ae  gcc/ada/rident.ads
! 9bb506e8e998d71e36034c1b0585c33b  gcc/ada/rtfinal.c
! 39212b018115c17c1ab3369f2c4dbc84  gcc/ada/rtinit.c
! ab66f31b03dedd63e6600a145d7ea46b  gcc/ada/rtsfind.adb
! 76bf113e0ae6fc408029fc9ce5a5d8f8  gcc/ada/rtsfind.ads
! feaec552419f352934dce6d669de26e1  gcc/ada/s-oscons-tmplt.c
! e84927790960c76ae42867d3559aedb8  gcc/ada/scans.adb
! 9b9bb648a5936600974190c682a2c416  gcc/ada/scans.ads
! ce19b99bdc0376b4846ca31ceea2332d  gcc/ada/scil_ll.adb
! 110f1454b4c63e5651cef2d058119121  gcc/ada/scil_ll.ads
! b3b80abeb55ebd391b5b2a3550b6a6ad  gcc/ada/scn.adb
! a639be4f8cdc244c80be49983d0d2640  gcc/ada/scn.ads
! f57d065ee1f1b1d57eeb91ebb2cfc932  gcc/ada/scng.adb
! 13356f49f744e30b72045ecfb7439be5  gcc/ada/scng.ads
! a35a27e84760761a3c84378dd5e9e932  gcc/ada/scos.adb
! b8f390d861ffbbfa52fa72b0624dbdb0  gcc/ada/scos.ads
! a6c1e6d5980ac2be2de7601b02d7c484  gcc/ada/scos.h
! ebc2017e5f6709557adb65e4022b7820  gcc/ada/sdefault.ads
! 33ef3f666c591f64873cd05ef23556fa  gcc/ada/seh_init.c
! b6848b95d4d23433e5732aff305bd84c  gcc/ada/sem.adb
! 6a086604b9a883895cc19e0bd2f96829  gcc/ada/sem.ads
! 43c5876dde88dfb26f02c21de6cad530  gcc/ada/sem_aggr.adb
! ab5b7ec047b3a4d128fc9939489c9384  gcc/ada/sem_aggr.ads
! 570410816414d64cd60d445b6dc61711  gcc/ada/sem_attr.adb
! 0267fecc50d72cc0bf08f6234c1f79d9  gcc/ada/sem_attr.ads
! 860460e99672a05a9143ed252801e5dc  gcc/ada/sem_aux.adb
! ad66053d081ffb1658abece2269ea11f  gcc/ada/sem_aux.ads
! ef65f8cf91080acbe034b67fa54aaad4  gcc/ada/sem_case.adb
! 1f97475991aaa610dd735761ec1d25f6  gcc/ada/sem_case.ads
! 4d2d74f06ed948e51c6f65d16ed44f84  gcc/ada/sem_cat.adb
! 68e0f5a8acd4b7ff5c18432eeb323e83  gcc/ada/sem_cat.ads
! c7ae6d816828498286b4d5ee0c4de6da  gcc/ada/sem_ch10.adb
! 0c80f2d7ee7964a51d9542c06d244f4f  gcc/ada/sem_ch10.ads
! 314e9add3a2ec18313f228d9e99b1073  gcc/ada/sem_ch11.adb
! a41303d596564c8c7927b592c2f21f94  gcc/ada/sem_ch11.ads
! 299f44294898d2555aee4ce776cfed68  gcc/ada/sem_ch12.adb
! be07e77519b5b9f73f01ad89f8fb5a91  gcc/ada/sem_ch12.ads
! 6db34f7199cd5af1d4f3ae5f32cc64ed  gcc/ada/sem_ch13.adb
! 8a4e2ff3acf4f79db4d2bb3580fa271c  gcc/ada/sem_ch13.ads
! 1b79de853cfb09afff34d747a2fba97d  gcc/ada/sem_ch2.adb
! c5745397b07f10fa5464be4d9354f538  gcc/ada/sem_ch2.ads
! 9f23bd79e18e053b5f9238c60d17cdc4  gcc/ada/sem_ch3.adb
! 3f5ddd84cb9ae96846220795d4758801  gcc/ada/sem_ch3.ads
! 073128cadeb30b91d79aeeae66c300c5  gcc/ada/sem_ch4.adb
! 39e5e18af46be12f50cd03296e7f7748  gcc/ada/sem_ch4.ads
! 422a54881a54f4510b79139fe218d395  gcc/ada/sem_ch5.adb
! 8bcafe70cf16b1d5623988bc0412eba2  gcc/ada/sem_ch5.ads
! 5845d1be4373c7e530e8ba7d87ee35ff  gcc/ada/sem_ch6.adb
! 8d79ab188ecf8a9394c53603deeb71c9  gcc/ada/sem_ch6.ads
! 7d2fc1e15396c9cd17dc7b038f67fe62  gcc/ada/sem_ch7.adb
! fa7bc8a457629b9e98171db9110a99ec  gcc/ada/sem_ch7.ads
! cbc442cbe0f0cde03fd79b4d3213ea5d  gcc/ada/sem_ch8.adb
! c766e01f41ff6fb17a55390250ca0342  gcc/ada/sem_ch8.ads
! b2a1b25562913c20071ce580132df31f  gcc/ada/sem_ch9.adb
! cb6ebb33d2db706c3ff65265c929a9a2  gcc/ada/sem_ch9.ads
! d51fece626cc19463cbd55ba9769d7b9  gcc/ada/sem_dim.adb
! 70544c563ecae8b0d24ee5455941be68  gcc/ada/sem_dim.ads
! 0b34aa3278b44bc740796f9a125ce979  gcc/ada/sem_disp.adb
! f5cf815dcd3de98742a2ac49c2929567  gcc/ada/sem_disp.ads
! 56ee042f98391d71cd117cd7a1be909d  gcc/ada/sem_dist.adb
! 3fe2e28ea1e92978704c4a2e408ebb51  gcc/ada/sem_dist.ads
! 9f90116e4c31e55046c06a9f038fa7b6  gcc/ada/sem_elab.adb
! c07c35a4a0cf8de9258b77bb435a0cd9  gcc/ada/sem_elab.ads
! 02cf3a296155d51e7f6fb4f0813e5c8c  gcc/ada/sem_elim.adb
! 194aa5ab139949b2f92a70a2a7a4a38c  gcc/ada/sem_elim.ads
! ab98410b5a1ec92b9502a13f161d832d  gcc/ada/sem_eval.adb
! 4c834f4a3abb97a84eaf7229eab0d9a8  gcc/ada/sem_eval.ads
! cb650e8fb98459c4580ba02ea018e2fa  gcc/ada/sem_intr.adb
! 2a48ce8f7468537dae3cca8f86b8f7be  gcc/ada/sem_intr.ads
! 370448644a2f02b935f0429db35ac5d0  gcc/ada/sem_mech.adb
! 55e760f480f815b7ebc7ce59b5e78003  gcc/ada/sem_mech.ads
! 6598a9c9c3895c367f8ce91eaf6fed89  gcc/ada/sem_prag.adb
! e22fa549d93a0ebcbbd8e5dc76987344  gcc/ada/sem_prag.ads
! 95af0e727e873fe13e74578e1158b7eb  gcc/ada/sem_res.adb
! 73ce35f9d476679d27b14ff5f418f664  gcc/ada/sem_res.ads
! 129791643e8f58dd5c5ebf25d7f2f4da  gcc/ada/sem_scil.adb
! 16fab00ddb444a8d9993da314eb5e63e  gcc/ada/sem_scil.ads
! 2d56888604f862cac74888844f6a1707  gcc/ada/sem_smem.adb
! 7541ea89ec886fcb260d39ceaaf654e0  gcc/ada/sem_smem.ads
! 9fb353e3ab3b277b8d5d7f5c0a3b7cb0  gcc/ada/sem_spark.adb
! 21d0d7b3347ef38a811200511a006c03  gcc/ada/sem_spark.ads
! cbb4ace58822e09cde57bfe26f2654d6  gcc/ada/sem_type.adb
! 7db89f9e5e9f6ad281619641e4c29d21  gcc/ada/sem_type.ads
! 8be382ebb52e2121d5c8cb24def1c934  gcc/ada/sem_util.adb
! 7e31aa6b59f770e4a1d568ce6e9609e0  gcc/ada/sem_util.ads
! abf0651cccb1a746bdf2e22bdeb506ba  gcc/ada/sem_warn.adb
! 4a9f9d4da59001608e956c77a11b5fa3  gcc/ada/sem_warn.ads
! 60cec7e313c26824acef72ef58ecd7fb  gcc/ada/set_targ.adb
! ddbab43012420a32f684a6cc3911163d  gcc/ada/set_targ.ads
! b6056496955497e51abc6a1a6b218bd1  gcc/ada/sfn_scan.adb
! dbd32d73a11b79954b0bb029530a215a  gcc/ada/sfn_scan.ads
! 650fea1db73c934476b9cc07ba44a1b0  gcc/ada/sigtramp-armdroid.c
! 6d7a993c7b05598b4af9bc1d85946a6b  gcc/ada/sigtramp-ios.c
! 6471c6361dc05f567fda6b33aa72ab05  gcc/ada/sigtramp-qnx.c
! d752705eaa48976ee35a638ed8ffbc54  gcc/ada/sigtramp-vxworks-target.inc
! a2f9552f3efab068947a7cfb23a41cf5  gcc/ada/sigtramp-vxworks.c
! 6b2592c079ae11aef4ca3a009e22eba9  gcc/ada/sigtramp.h
! 73983c6820a9a54fec37a3e9a968b245  gcc/ada/sinfo-cn.adb
! f556a3abde856daf05ed5611d90d0388  gcc/ada/sinfo-cn.ads
! 63d7e7f176b7a9f5cd81268081b714ea  gcc/ada/sinfo.adb
! b38d575c2c7e7612fee59124b3727e95  gcc/ada/sinfo.ads
! e2045a9b6cd52ec3506c1b1f7da756ab  gcc/ada/sinput-c.adb
! a5fe544b20d42a6332d8c9335b5250de  gcc/ada/sinput-c.ads
! 87f125530672e93f7de70cfde79ab15e  gcc/ada/sinput-d.adb
! 9931200844590152e5989f19860c295a  gcc/ada/sinput-d.ads
! 272d1358213e249bc7658dc7fc2a65b2  gcc/ada/sinput-l.adb
! 44bfe8882a97ed53cad2cf1a5f75604f  gcc/ada/sinput-l.ads
! e7bf9bbe62eb8635f024e0c71b9750ad  gcc/ada/sinput.adb
! 0640e984534af2ce958d89ee9d333503  gcc/ada/sinput.ads
! c2cb7998d90db14a7d03081370f0acf7  gcc/ada/snames.adb-tmpl
! 9b07477efd23d4b9bdbc02f2c0cfb47c  gcc/ada/snames.ads-tmpl
  1d0f0a946dfb952f009ada43305106dd  gcc/ada/snames.h-tmpl
! c1bf429757d0c0a5a2988896cd001d94  gcc/ada/socket.c
! 708a89009d9197b1b9cbde8cd086c632  gcc/ada/spark_xrefs.adb
! d60abc408d4176ea22c15e1666ae26bb  gcc/ada/spark_xrefs.ads
! 43e7c12f60a37dae64d86358c04a945c  gcc/ada/sprint.adb
! 04e5580e8fe5d3a55f85fa73e4657728  gcc/ada/sprint.ads
! ff3864d85d01fbb84f3b79738a825b65  gcc/ada/stand.adb
! 6634c01f860fd8fba5c25f4e006df958  gcc/ada/stand.ads
! f2ffca7d0a0caa80a61e0c08772fccba  gcc/ada/stringt.adb
! 969eb3897961935f359c3f02c63e2271  gcc/ada/stringt.ads
! 940df0f4fed078d86fa5394eb61dbb12  gcc/ada/stringt.h
! 32b052ece14651335cf0e7ee9a5133cf  gcc/ada/style.adb
! e13bfc487f93de5bad498b6901dd22c9  gcc/ada/style.ads
! fdc33b18c4b84dc4b1b0fbeedde7da2f  gcc/ada/styleg.adb
! 9619859c63d784d73b009faf2a5c94d5  gcc/ada/styleg.ads
! e283d62e1e3fa97e80bf9ad023b0b8f0  gcc/ada/stylesw.adb
! b2d7a95de6efe843d38ebc8f32d6ae24  gcc/ada/stylesw.ads
! e805272316d9875de0dd888e26b28d5d  gcc/ada/switch-b.adb
! 3e45db445b355c3b838e636b66fb15f3  gcc/ada/switch-b.ads
! 605035e278a2b88789f48c00d33cbbb6  gcc/ada/switch-c.adb
! 420fd1c44e151632102d993e970fb204  gcc/ada/switch-c.ads
! b4564de2ee6c359d867a9ded686238cd  gcc/ada/switch-m.adb
! ed11a99e07540757810a434fdfb34999  gcc/ada/switch-m.ads
! 07d8c0d9006b521257aa8b80b2d3aac2  gcc/ada/switch.adb
! baf4d8269083361597441367e4799fdd  gcc/ada/switch.ads
! 80ce3759cb60f88066f402ff5350c016  gcc/ada/symbols.adb
! 641e16e1313cde07cdd18f79df09877c  gcc/ada/symbols.ads
! dfffb0e5c14ab0ab89ee0d06699fe551  gcc/ada/sysdep.c
! 89331cf6659d907ef6cd706eb243f6b6  gcc/ada/table.adb
! a74311c489fe9bd1ddaf77d3a4b38eb6  gcc/ada/table.ads
! 709c2879aece768874521d9b78580504  gcc/ada/targext.c
! 422cb8bd31ed5b467f6d729c2fd1c2bd  gcc/ada/targparm.adb
! e2ecdd93b7b906b21ae1fc1784570759  gcc/ada/targparm.ads
! 5fdd9f553b06e30d504d6e0e646539b2  gcc/ada/tb-gcc.c
! 2d38a249b00ffd53841cc0ac781e6a62  gcc/ada/tbuild.adb
! a4a63e2188ffa740f4715afb5ca13b89  gcc/ada/tbuild.ads
! 478d569b56c8e6079e17e14b0bc91e68  gcc/ada/tempdir.adb
! 41528824005e52ef8385ee891f3092ba  gcc/ada/tempdir.ads
! e1e93a46df35949d282edf0bfa5db270  gcc/ada/terminals.c
! ebf5d08797c272e0a008672e22bb5268  gcc/ada/tracebak.c
! 8651da104df18e192a369e2143c976ee  gcc/ada/tree_gen.adb
! 2600a1eb6b40635891b5fdeaba136175  gcc/ada/tree_gen.ads
! 126505bf6af859ddb75ceb6ec72d75c9  gcc/ada/tree_in.adb
! 52ed266379fbb759bf79bbb16f146a9e  gcc/ada/tree_in.ads
! 3a263cf2cd319f15028e9cef2da91084  gcc/ada/tree_io.adb
! 731e20468b71ebbbb8c40d014498b4e9  gcc/ada/tree_io.ads
! 3f313c98932624a57c68328cf8d66f56  gcc/ada/treepr.adb
! 7466d797d622358ae1e2e6a16157d9f7  gcc/ada/treepr.ads
  b1a12d53199396f327ddecc980e710d1  gcc/ada/treeprs.adt
! c095fc794c361df858fecd0f964d964e  gcc/ada/ttypes.ads
! 171acf5302b9ef9d0205fc164f21e566  gcc/ada/types.adb
! b4bb054652840abd0590cc9c5f0b66e0  gcc/ada/types.ads
! 14b72c61a45b7ee09e77f3bca58a6766  gcc/ada/types.h
! 1a2f78dd47b01d275402f8d3ffe8fc90  gcc/ada/uintp.adb
! 292a68a73fe1caedbdf269a465411a9f  gcc/ada/uintp.ads
! 8ccdb6541a6d0f6ff54d8307fd6dd742  gcc/ada/uintp.h
! 6c64f47dc1d269570926a22fe7034f64  gcc/ada/uname.adb
! 6840aa7b6d88b7acf6f2b08a81a96adb  gcc/ada/uname.ads
! 7691a98ef5840bae232dcb15980ca593  gcc/ada/urealp.adb
! b2b401ae97e2adee88e4ccfde8143513  gcc/ada/urealp.ads
! 967561d2829ccfc96ec1925b97e1dad7  gcc/ada/urealp.h
! 7a0515ed98dcf858b9c9910f4e8df8ba  gcc/ada/usage.adb
! 6093bad4fe59b302c345da403ec33d64  gcc/ada/usage.ads
! c3e0576c8502f8e25c20c3f0f80a501b  gcc/ada/validsw.adb
! 4e17143af4f334c2fbd08ebe839a52c1  gcc/ada/validsw.ads
! d19075d74b47dd62885d10f7bec5efef  gcc/ada/vx_crtbegin.c
! c09627590e4aee58f18cd439fc285660  gcc/ada/vx_crtbegin.inc
! c8a4ecb66c40d7a3ba434d6bacfb4a1d  gcc/ada/vx_crtbegin_auto.c
! dd232f9efc19006a6224df490a5e54ad  gcc/ada/vx_crtend.c
  49ef8bc97a344f91b927f23054ade642  gcc/ada/vx_stack_info.c
! 5de432c0a4e4c6d84c06039e87a09331  gcc/ada/vxaddr2line.adb
  230f0a2f69b8ad56cc0d730f9fe0964b  gcc/ada/vxworks-ppc-link.spec
  cf24e76097812a932a26f6600d193208  gcc/ada/vxworks-x86-link.spec
! 2659946d581af918b61bfacc4e4a1568  gcc/ada/warnsw.adb
! c772dd9b8aae0b051657525434fbeae1  gcc/ada/warnsw.ads
! 449e06d4ffe4ddc1cedef5a4864e44f1  gcc/ada/widechar.adb
! 24ccea113c2fd40658750a7e3b416af4  gcc/ada/widechar.ads
! 95e63d54cded095160d39b84a917ec54  gcc/ada/xeinfo.adb
! 6efdbd50b5b91a1bc76046550cef83f3  gcc/ada/xnmake.adb
! cd6dbbde48aacccbe8a4ed7119ce0d60  gcc/ada/xoscons.adb
! bfbb79357fcc9b3d9c619b6ffaea300f  gcc/ada/xr_tabls.adb
! 6cc6922c03ba83cfab64881fb018411f  gcc/ada/xr_tabls.ads
! 9b55ab17b82a7f378ac08ca85e3dfb43  gcc/ada/xref_lib.adb
! 2386f7bfa377124ba7ec564bb0ca048c  gcc/ada/xref_lib.ads
! 9b29e5dd72171268767adb4be6ade709  gcc/ada/xsinfo.adb
! f09d0e1901806d94fa47377e4b8d86b9  gcc/ada/xsnamest.adb
! c3dae1859d21f7c2f01b0f2510d20b64  gcc/ada/xtreeprs.adb
! 289f9bd83af4724202e19c996d488139  gcc/ada/xutil.adb
! ee408c7af74a39cebe1a5a960b5398ad  gcc/ada/xutil.ads
! ccc8a6c89c70316fbf743387ad7e88b1  gcc/addresses.h
! 8853e2cddaaf5369714a2a3151746fd4  gcc/alias.c
! d87be372e6413268b6df997b6fbbecd9  gcc/alias.h
! 43077afd2c2c7b5548033af6eff2ef37  gcc/alloc-pool.c
! c3d6da057bb08042c82e74bfe2691f41  gcc/alloc-pool.h
! 7805f7ac9dfd4c8cfad6c31b46f206a0  gcc/asan.c
! b73b944181980602d735a7780d29d600  gcc/asan.h
! eb7d5fc65f1efc927e0a18d856b2bdcc  gcc/attribs.c
! 6ec93b9c82f4f7c005de1809013859b5  gcc/attribs.h
! 55ff3d7e690bdd078013434e72d9e5d9  gcc/auto-inc-dec.c
! 32c5a204e510e5e4d08ae1d4e9920cc8  gcc/auto-profile.c
! 553eeb5db1fadb33f7e7274d05e95203  gcc/auto-profile.h
! ba0d84f63462e7fa1eb4be685de54623  gcc/backend.h
! cf5cc84d6c8708c6b98fc5347eeaf9f5  gcc/basic-block.h
! 852b3dbc46bef018e9198fc4d3a2e705  gcc/bb-reorder.c
! 3e0bcc3801342d32d8da93a0acb2de76  gcc/bb-reorder.h
! 3e2d1891aaf9c07b6f94d69355650960  gcc/bitmap.c
! 0fc68a130796238f7c1d2cbf5c87d1e5  gcc/bitmap.h
! d434ffd5b0b9fcb3f672655d68c932e9  gcc/brig-builtins.def
! 7477359e81a1f75cbeaccf0ba7908d8e  gcc/brig/ChangeLog
! e9589323cddde4505a26ed229a211ab4  gcc/brig/Make-lang.in
! e9fc01abc2e20427439c8df6e6da27fa  gcc/brig/brig-builtins.h
! fa6cff5049ae5807635cc0da6db14c7f  gcc/brig/brig-c.h
! 55f51f16c24e7dcda276f5382ae90fe2  gcc/brig/brig-lang.c
! 91880752992227d4c662dc68ffb59f38  gcc/brig/brigfrontend/brig-arg-block-handler.cc
! d8e870613e02dac46810edfabed9266a  gcc/brig/brigfrontend/brig-atomic-inst-handler.cc
! 3e818e4486f395ecfee994262f513aeb  gcc/brig/brigfrontend/brig-basic-inst-handler.cc
! 756c65ce56ade7bc4693a7b89cc00f6d  gcc/brig/brigfrontend/brig-branch-inst-handler.cc
! aacfa7760b0559130f0543c1649fd0b5  gcc/brig/brigfrontend/brig-cmp-inst-handler.cc
! 82366969b5f10f88da77a90c55eda049  gcc/brig/brigfrontend/brig-code-entry-handler.cc
! 7a3b102dc1db3171ae5370ba4137f4d8  gcc/brig/brigfrontend/brig-code-entry-handler.h
! 397dbc1abb7799acce753daf3116e6d1  gcc/brig/brigfrontend/brig-comment-handler.cc
! 168585a4df842660cffd7705a0868829  gcc/brig/brigfrontend/brig-control-handler.cc
! 834da761aa06a256ba891c47b5dd77d8  gcc/brig/brigfrontend/brig-copy-move-inst-handler.cc
! 8119ccd15aa7d9496b027b1fc37f3235  gcc/brig/brigfrontend/brig-cvt-inst-handler.cc
! 16e87b4166c77eefbc98a954ee768fca  gcc/brig/brigfrontend/brig-fbarrier-handler.cc
! 8d2813cfda86c1726bb179b6555045e3  gcc/brig/brigfrontend/brig-function-handler.cc
! 31c8124162c2d7d04a331bc52c2fe6fa  gcc/brig/brigfrontend/brig-function.cc
! ab2efe7934166bc6a4c0d6a29d9c7283  gcc/brig/brigfrontend/brig-function.h
! a3ddfa43c3f26c33a759e0ad820a7a91  gcc/brig/brigfrontend/brig-inst-mod-handler.cc
! 161d8ffd1cb5aecca635b9287af180e4  gcc/brig/brigfrontend/brig-label-handler.cc
! 61a57b220fff31a0d718e4c1a4473d8d  gcc/brig/brigfrontend/brig-lane-inst-handler.cc
! 5249a3a49d7c6dcfa6a860857160aeaf  gcc/brig/brigfrontend/brig-machine.c
! d9ced1c1d39fbf3a911c5e779231890a  gcc/brig/brigfrontend/brig-machine.h
! 25c802a38a7d5e3dd2c680a595cdd55b  gcc/brig/brigfrontend/brig-mem-inst-handler.cc
! 8388972f2d534836444fca22e31ce7de  gcc/brig/brigfrontend/brig-module-handler.cc
! 9bf3b87e9d38b7a913f4affd701784ff  gcc/brig/brigfrontend/brig-queue-inst-handler.cc
! e0eccef2308f26af2e7b315e09948a66  gcc/brig/brigfrontend/brig-seg-inst-handler.cc
! 429faccc5c43af04ee9073d63212cab0  gcc/brig/brigfrontend/brig-signal-inst-handler.cc
! cd3a13658dc9a5b2e30583dcaf3ab02c  gcc/brig/brigfrontend/brig-to-generic.cc
! 13f00bb58d0961027eab98168786371d  gcc/brig/brigfrontend/brig-to-generic.h
! 1bf4a163a7cf10b8062ec6fb2c1d4621  gcc/brig/brigfrontend/brig-util.cc
! 1e73f5f9609b6226c8d89a36f4d5b9b5  gcc/brig/brigfrontend/brig-util.h
! b49f39ac1340eb7b8c6344c1eec6bfc1  gcc/brig/brigfrontend/brig-variable-handler.cc
! 75ff8c2361cf5c18c5a40ee5c4f7f4ff  gcc/brig/brigfrontend/phsa.h
! 1896ddc722b9565090f6f63c368711f6  gcc/brig/brigspec.c
! 198ffc91b572d95ecef0652e203475f2  gcc/brig/config-lang.in
! 6e30a98c40dcf3d26b12e8097c1c05f8  gcc/brig/gccbrig.texi
! 8863a49e699cb9d8b4c66c877c22ce9a  gcc/brig/lang-specs.h
! c0e66ae3f84286dbfd11fb1be986c7c7  gcc/brig/lang.opt
! 8d7d6d76f9bfaf43c295c94555cc3164  gcc/bt-load.c
! 03a22772afa5699b769bede62b7b174e  gcc/builtin-attrs.def
! 15372509e52613bd16188d9dd1ca63e3  gcc/builtin-types.def
! ef7b23b2cbcd738fd11b28c42c741403  gcc/builtins.c
! 2a1b8021943e4daa431587f1471de494  gcc/builtins.def
! 9bcb391dae5002d8996cf5045dd11878  gcc/builtins.h
! 90cef70ab0d234131c54776f72923a4c  gcc/c-family/ChangeLog
  ea3fa1f4d7390a105fa3caab4f79aaf7  gcc/c-family/ChangeLog.gimple-classes
! 8c9041ee833e621fda39113db5d873ed  gcc/c-family/c-ada-spec.c
! b33c816f5ee940653cb0b68d462eef83  gcc/c-family/c-ada-spec.h
! 66e9ce25202d9f27128e27f6ad6516f7  gcc/c-family/c-attribs.c
! e48c373e864f15c18fe79f5c3b238a46  gcc/c-family/c-common.c
! 40eb08cd95b3fc27115b899947f61b13  gcc/c-family/c-common.def
! cebba85237214f56fad3cfcfabd7b1d2  gcc/c-family/c-common.h
! fa0230e3c21f02131d91308dcca5f85c  gcc/c-family/c-cppbuiltin.c
! a78c125312fd1a0a646b4fff13ec0eb3  gcc/c-family/c-dump.c
! 945c4a3006965d1b022d167e0be3bf12  gcc/c-family/c-format.c
! 134b09ccb40e2ed37593073c6bfbd672  gcc/c-family/c-format.h
! f51dc5f31e37316a12af131fb404419a  gcc/c-family/c-gimplify.c
! 32af1d89296e1700ec42ec18f59ab5fe  gcc/c-family/c-indentation.c
! 03e17dd1c0a412af6173d0a7d8dd9e89  gcc/c-family/c-indentation.h
! b3fca1704741e75e8d979f3836e1cda7  gcc/c-family/c-lex.c
! 1c1ec9bdcfa8a2968d6e3112bada0d1c  gcc/c-family/c-objc.h
! b3feef2cba887b01994684bf4fbddfac  gcc/c-family/c-omp.c
! ecd7468ac12345c619b49ac2e48a4bea  gcc/c-family/c-opts.c
! 7bdc8173b6e53053a7f661920d64550a  gcc/c-family/c-pch.c
! e43080a556d7887ec3dc20e1d2c6f1ef  gcc/c-family/c-ppoutput.c
! 05115919e310b145f4f0be014cd3e820  gcc/c-family/c-pragma.c
! 13b050f95f12c081ee86c600b847ca2c  gcc/c-family/c-pragma.h
! 75f7912cab4339fd522ccbf3aeb89ddd  gcc/c-family/c-pretty-print.c
! 1eb0a2a62fa0de9ca2c3b1509492e77f  gcc/c-family/c-pretty-print.h
! 83156c12f98bb2109f64f0214308f86f  gcc/c-family/c-semantics.c
! 0c521a83547d971f69462ad3f6a32cb7  gcc/c-family/c-spellcheck.cc
! 78c1aa97253d00ac9a33d3c2704aca44  gcc/c-family/c-spellcheck.h
! 3fef4ae67c57f886128fc95c45b6f834  gcc/c-family/c-target-def.h
! dc31dea5105a716f23782df3b423b085  gcc/c-family/c-target.def
! dde14f758a917a3ddb05b1e2508d1a1e  gcc/c-family/c-target.h
! 376cfac7cd18471b5b846d02aa2bae6e  gcc/c-family/c-ubsan.c
! 5c12f52d9e825d472b7145be82257667  gcc/c-family/c-ubsan.h
! dd4df4d29b87e33d820920445ee73789  gcc/c-family/c-warn.c
! b300c2e4ff998901edd7db040bdc66d5  gcc/c-family/c.opt
! dd1bbbd86496f36b545e0da0cbf6ad06  gcc/c-family/cppspec.c
! 97d71bc47181e16ae44a73256beb2e8a  gcc/c-family/known-headers.cc
! e5b1bb6f1ff65e7e00f9d027cd10f4c4  gcc/c-family/known-headers.h
! 79a7dfe635c1dd847d9ddea3eea8bea6  gcc/c-family/name-hint.h
! 6d2f8a9ee35c08c8901516bff5a43a2e  gcc/c-family/stub-objc.c
! b917f720d9926d92df031b658ecb0098  gcc/c/ChangeLog
! d1ceae32515e69250a6935d030517330  gcc/c/Make-lang.in
! e1f5e7fe13ac52360bb6f9e248f9d127  gcc/c/c-aux-info.c
! 1103a36014eec5e177bcab9936ba6ba0  gcc/c/c-convert.c
! dde08e21049abc78c160a0dc990aa729  gcc/c/c-decl.c
! 6a28a334a8d75e8f92fc278c54453d18  gcc/c/c-errors.c
! 592967304378f4f7c61a7b91b941b6bc  gcc/c/c-fold.c
! 6da033df357d25300bc215aced589b65  gcc/c/c-lang.c
! 3cd4cbec82f1e50b679d9f0071551fa4  gcc/c/c-lang.h
! 42fb711802a72f7bc3b2b3369131397f  gcc/c/c-objc-common.c
! b3aff9ee2e2aac84ae2c2249ddd34789  gcc/c/c-objc-common.h
! a86998bf69768560fbb4fdcc9eb0d14b  gcc/c/c-parser.c
! 824f36e75f8c378fe7ff07003330d845  gcc/c/c-parser.h
! 575a8ea921d7d9f4bf1afe6f16e38942  gcc/c/c-tree.h
! 031c5d484504eb4497ff8c3051e4f25f  gcc/c/c-typeck.c
! 7a54ef0822f5aac7800544dc084125a5  gcc/c/config-lang.in
! beac53471d0c7d0ea03adbda52d55cc7  gcc/c/gccspec.c
! 4f1a884061f261846dbd7ddfb2af9cf1  gcc/c/gimple-parser.c
! 9e299596ee007475dac537a212f8a1ff  gcc/c/gimple-parser.h
! 42ca269ba8c51f829c2d82b7f774d150  gcc/caller-save.c
! d3cab0831ada99b87d3eb61460c30dae  gcc/calls.c
! 0dc3f2ca4f804ba8afb5fb67963b3a03  gcc/calls.h
! b3bcce62b541c99b6b0ec2edd16ff296  gcc/ccmp.c
! 1e02efcbe838558db1033ca2ef0f04ae  gcc/ccmp.h
! 989480d88ccc471a6c08d332f6e227a8  gcc/cfg-flags.def
! 5806b443a0d6732bc778a2cd2453899d  gcc/cfg.c
! 107cc96023e703c91f7118c5f9c5655a  gcc/cfg.h
! 93d689ec2f355ba361b50c029f126689  gcc/cfganal.c
! 8d8987ab58fe69913b12464570e9a42a  gcc/cfganal.h
! 53dd3acf3b71350592b478b262fc3112  gcc/cfgbuild.c
! 616fd63db83602c971a38b93ad7b09d7  gcc/cfgbuild.h
! 5c0e6120b390ec5ac392951616005f9d  gcc/cfgcleanup.c
! 81b37889d5c16bcb22fc34f33c0a0d68  gcc/cfgcleanup.h
! dec3b324102e003f3db1e3c8525d32bc  gcc/cfgexpand.c
! 8458a678b3c43ee10a3cac7a01b3e1d3  gcc/cfgexpand.h
! ff7e45f1691ba973adbaf1616de70b99  gcc/cfghooks.c
! 995f6c5b7812276302a7635a7aefe152  gcc/cfghooks.h
! 369c423b9ec828081c4b1a121b7057c4  gcc/cfgloop.c
! b04e52386ccef8053e33a987bb18566c  gcc/cfgloop.h
! 5d265ebd20f3ebb24c8aca790d9b73e7  gcc/cfgloopanal.c
! 5898d0e99b11ce056c4aee0308ad9b8c  gcc/cfgloopmanip.c
! 1512a9003560020ff76f56e7b55e4c99  gcc/cfgloopmanip.h
! 6bd48ec4a47b17cc59a3581202fd93df  gcc/cfgrtl.c
! b0488edb95f2f9416f652f3e9198ee63  gcc/cfgrtl.h
! 8f8fe31becf7602a14b110c561738045  gcc/cgraph.c
! 5b5b4a680044101cdd5876e0612ff282  gcc/cgraph.h
! 13da26ea1e52a364f3f300aeea228f31  gcc/cgraphbuild.c
! 49ed7b4847148610dff63404b9b2f245  gcc/cgraphclones.c
! c0220d9242b15e893d88f9a6feaa419d  gcc/cgraphunit.c
! 7f09e99e0c5f489619266c8ad7306fcd  gcc/chkp-builtins.def
! 1ff9eb4acc4ab109b0f07e15d065a0a8  gcc/cif-code.def
! ab69f866d1de3862080089a8bf154d3a  gcc/collect-utils.c
! b5774884834cfb021336f603b4cce3e6  gcc/collect-utils.h
! 254e5c4c2639dbe63559a601815e3158  gcc/collect2-aix.c
! 3bc1b6721859af7ec49445e97d91fc8d  gcc/collect2-aix.h
! 5c6dc3911ad0a2acc1604cc8247ee303  gcc/collect2.c
! 171384e9891a99c6b5466ef0e270b9f7  gcc/collect2.h
! fd50d1c887135b80f3e968669d527eb7  gcc/color-macros.h
! 88536e4ce55a7a74e7c2ed05aef98fe7  gcc/combine-stack-adj.c
! 18cafe41726c87ab3afd68edd50ba35f  gcc/combine.c
! 40809202743de319b1df2912dc2a38eb  gcc/common.md
! 155308308bda14924010ba1338d784c9  gcc/common.opt
! 61e2129e35e61d795f8842966dcd1b87  gcc/common/common-target-def.h
! 63f5a565901e26e9206a1cedf9ef956a  gcc/common/common-target.def
! b616a6f6a8f3737014ff0a3455a00a36  gcc/common/common-target.h
! b8d83d8dcc1f442950f472eb350b9dde  gcc/common/common-targhooks.c
! 5967c243c19a77cd76c1c4f327579130  gcc/common/common-targhooks.h
! e717913475f04542862cdfbb2515187d  gcc/common/config/aarch64/aarch64-common.c
! fe4095b9869f3711a3b1b375f4246cab  gcc/common/config/alpha/alpha-common.c
! 7aea4f39daf8cdd777ce8ac31173a70f  gcc/common/config/arc/arc-common.c
! fd1ca8a352ecd787c6facfaf51237b5a  gcc/common/config/arm/arm-common.c
! 6b191635e6bfa63b1a5d70b01eb65b5b  gcc/common/config/avr/avr-common.c
! b368291f7b3fe4484c18f79fa141f88a  gcc/common/config/bfin/bfin-common.c
! 0f3a90489ed8dde58934922ef22fa9b9  gcc/common/config/c6x/c6x-common.c
! f707c8fc7a499aac773398683a5b8a30  gcc/common/config/cr16/cr16-common.c
! d99fc0caeaf2fa7f4d24071eb9d80312  gcc/common/config/cris/cris-common.c
! e17bacf27acfcb1bf1122a8d0d70519c  gcc/common/config/default-common.c
! 59cfef5b8e9c7b8745925de0b0adb965  gcc/common/config/epiphany/epiphany-common.c
! 77d2d6f4d3d84877c5645e5b7f9ab147  gcc/common/config/fr30/fr30-common.c
! 035ebccac6a72d3b6744b9b6bd84222a  gcc/common/config/frv/frv-common.c
! 93b2a3fae7f97dab723c8460bf7210fa  gcc/common/config/h8300/h8300-common.c
! c4f912dfe63e3e83edb26247c0d26bf6  gcc/common/config/i386/i386-common.c
! 3543c11c6a03a1e7a9336b3509cd66b5  gcc/common/config/ia64/ia64-common.c
! efa5b5865327a785717eb4630ee7a92a  gcc/common/config/iq2000/iq2000-common.c
! 35d89100e35344fcf59de76a48a36486  gcc/common/config/lm32/lm32-common.c
! 298561cf9448c4d3bf18044caa015f28  gcc/common/config/m32r/m32r-common.c
! 7ce59ce57b42e6d4284b02d14e53c821  gcc/common/config/m68k/m68k-common.c
! b9d7fd1507c6f10369963115b7727275  gcc/common/config/mcore/mcore-common.c
! f90af0c9df0554e305a4d0f1a5457db9  gcc/common/config/microblaze/microblaze-common.c
! 96dbbaad403f7416854ce4e1f6a1271d  gcc/common/config/mips/mips-common.c
! 2008ac4d662b1fae9fa508b333b003e1  gcc/common/config/mmix/mmix-common.c
! 1463e0cf9ce289d301e1541cd5d3c675  gcc/common/config/mn10300/mn10300-common.c
! b3d706d9f6e4df23b5bbd370f88f8b50  gcc/common/config/msp430/msp430-common.c
! 4a121b0e83242e8bdf81fccf4fd92948  gcc/common/config/nds32/nds32-common.c
! 4721051d3ccfc1d787809db59d3072aa  gcc/common/config/nios2/nios2-common.c
! b40c47a439819d8f3082f249949de285  gcc/common/config/nvptx/nvptx-common.c
! 5e01848a9fb940111222fd43b58d25d5  gcc/common/config/pa/pa-common.c
! 0ffeaaa70169ec13a06aa58e97983d8a  gcc/common/config/pdp11/pdp11-common.c
! 78620b25265ee440c28f9fbfea08b8fc  gcc/common/config/powerpcspe/powerpcspe-common.c
! 6e4807a5b5d3dc9e7b550a3e654df9b7  gcc/common/config/riscv/riscv-common.c
! 42fb042a7d786a9d2e21dc8f76746b09  gcc/common/config/rs6000/rs6000-common.c
! 03b55e866fd0927c67749fdbbd47c900  gcc/common/config/rx/rx-common.c
! 5e478d35cba8dac6896e0206b432f5ca  gcc/common/config/s390/s390-common.c
! 7c43a19c7f685c87cfe903077297d8b8  gcc/common/config/sh/sh-common.c
! d5c5395a265e12ef512017596026b5dc  gcc/common/config/sparc/sparc-common.c
! b2c565c304fa79c0aee95d5740fff99a  gcc/common/config/spu/spu-common.c
! 3e6b7fff4e6f35bf63f53c76fd7a9cbd  gcc/common/config/tilegx/tilegx-common.c
! d5a4e89d0de230a05c92a31991a8c98d  gcc/common/config/tilepro/tilepro-common.c
! 6d9c55278eb538c4beb37215e1b36dd6  gcc/common/config/v850/v850-common.c
! 6bad590f1fd6dc0b098a4978f155a225  gcc/common/config/vax/vax-common.c
! 77784785f05c77264e1685020408cba6  gcc/common/config/visium/visium-common.c
! 0915726e1ca37e07fe39d9a41dec393f  gcc/common/config/xstormy16/xstormy16-common.c
! 284b5769a9d1d8cc3462c5911b380935  gcc/common/config/xtensa/xtensa-common.c
! 2e45b1421aca10361d488ef0bb6bf8cc  gcc/compare-elim.c
! fbfc5111d02e0a6cc644a2810b62a99f  gcc/conditions.h
! 00815cec4a75bce05124c9658560119c  gcc/config.build
! fc8512964c5965ead9c47f5726346012  gcc/config.gcc
! 8bed6e3e2c0a7b75810c4e8d8b05d3fd  gcc/config.host
! f32000a92132a8f7af2a7b087e7b0a16  gcc/config.in
  8e697813dc96ca90f5d0f4c196efe2cc  gcc/config/README
! 14f6549de29c5c79a27aa255075f5dbf  gcc/config/aarch64/aarch64-arches.def
! 143289c4e32b49113e80d6e0bb2b7019  gcc/config/aarch64/aarch64-builtins.c
! e63d2ba5218ee62518fe9b93518cce41  gcc/config/aarch64/aarch64-c.c
! f7a8865576385a8f5c9f578b92b96716  gcc/config/aarch64/aarch64-cores.def
! 29958c7b76c2964568d13ec211beb90e  gcc/config/aarch64/aarch64-cost-tables.h
! 174f20ea3dd373eada9c28d735443d6d  gcc/config/aarch64/aarch64-elf-raw.h
! 5236c224bc0df3af3cbb09caf75e7e17  gcc/config/aarch64/aarch64-elf.h
! cf3b14279409694f8613348a3be70c78  gcc/config/aarch64/aarch64-freebsd.h
! 76fcdba93b571372857cc310a9b33219  gcc/config/aarch64/aarch64-fusion-pairs.def
! fb01001116b72130a60f94ba02fa3d4d  gcc/config/aarch64/aarch64-ldpstp.md
! 8a331b7d1c3e1de0393d1d2085bbccd5  gcc/config/aarch64/aarch64-linux.h
! 61fb789a696699d679ce64b7ddde416a  gcc/config/aarch64/aarch64-modes.def
! 4aa0b756bdc3191c1c6d4df20aa45394  gcc/config/aarch64/aarch64-option-extensions.def
! 60133697bf62ad16676eb0334c1fe2ae  gcc/config/aarch64/aarch64-opts.h
! 3b0d0f78993d2ed66cf6fa6a1673ccf3  gcc/config/aarch64/aarch64-passes.def
! 45ea6b62cb1cbac24ce349e5fb24b0f6  gcc/config/aarch64/aarch64-protos.h
! cedc4b0bdc01c8aeb01ef6c9841d7d2c  gcc/config/aarch64/aarch64-simd-builtin-types.def
! 9559baeeca4962c3477cc96e9e3a728e  gcc/config/aarch64/aarch64-simd-builtins.def
! c3e4296f82ba8c62eb5c8a53bf67db53  gcc/config/aarch64/aarch64-simd.md
! 9d065c8e8d282f60bfd9123e10459729  gcc/config/aarch64/aarch64-sve.md
! 250bb83c199ee2685847641cc9ccc166  gcc/config/aarch64/aarch64-tune.md
! 0ad444cd45c64bed6960af6fb54f127a  gcc/config/aarch64/aarch64-tuning-flags.def
! c747ed79ee39eac743c47a3b97376991  gcc/config/aarch64/aarch64.c
! 915d4b38b8a1691c5937c591aa7f5cc3  gcc/config/aarch64/aarch64.h
! 88d6bd30ba9f2efa104db396966882e2  gcc/config/aarch64/aarch64.md
! 9d058125f171acf3cb6b04cd49d94788  gcc/config/aarch64/aarch64.opt
! 52218ac875d05428dd85f4c73747afe9  gcc/config/aarch64/arm_acle.h
! 7ffaae1ad0bb75dd0041b0214c8f92c6  gcc/config/aarch64/arm_fp16.h
! 6237d6945680786d77576a6cdb2186d2  gcc/config/aarch64/arm_neon.h
! 51e69bbea20585d35d87898d99edfb10  gcc/config/aarch64/atomics.md
! 538ad119d3978762bbee8f6bf1a743de  gcc/config/aarch64/biarchilp32.h
! b2b35f0c3bd669e9d87cb7fd18350eb4  gcc/config/aarch64/biarchlp64.h
! d614e4af5b11e061be442e64b3c48568  gcc/config/aarch64/constraints.md
! e3c9dd3caa2493bc9c7367fa97d75eb4  gcc/config/aarch64/cortex-a57-fma-steering.c
! 2d0dd82dd70fcae4332325735f79d573  gcc/config/aarch64/driver-aarch64.c
! a1f263a333d29c442e36ca5c76217387  gcc/config/aarch64/falkor.md
! a3ae0821ff69ebbfc3bfd2453aae4532  gcc/config/aarch64/geniterators.sh
! 45bab55b2dc9947f3fe8f8214897d5ad  gcc/config/aarch64/gentune.sh
! 68be3dd1a5252e4f46b81bf08c126cf5  gcc/config/aarch64/iterators.md
! 9f0eefcb8488434bac00d3ac8803e79a  gcc/config/aarch64/predicates.md
! e461310d614c1d7e19a3c21dbaa72def  gcc/config/aarch64/rtems.h
! 5e166d8b922621d3d2d62126930b8afc  gcc/config/aarch64/t-aarch64
! d36a8eba0ff043ac2956749f5229515c  gcc/config/aarch64/t-aarch64-freebsd
! ce57ad6e88434447920464af1dac5a4c  gcc/config/aarch64/t-aarch64-linux
! acac73e7d119c52ce4bce78b6f449250  gcc/config/aarch64/thunderx.md
! e0c8643013b4df655b43cb06031dfdb4  gcc/config/aarch64/thunderx2t99.md
  8b41b511cae4a5eda35cf19755875d5a  gcc/config/aarch64/x-aarch64
! 6c526972dd15e95f81a61aaa7188fc45  gcc/config/alpha/alpha-modes.def
! 8db8da471eccbfd9935f0938a9152e46  gcc/config/alpha/alpha-passes.def
! 33520ef4cf023103bc34deb03b6384de  gcc/config/alpha/alpha-protos.h
! 8c2e44f201eaa75e5ba2d38167880c4d  gcc/config/alpha/alpha.c
! 0e97f0bafe0a326fcf5566323fd0faa8  gcc/config/alpha/alpha.h
! e156d49ac0196170f95915709c18fc27  gcc/config/alpha/alpha.md
! 8a683a5789f890567bd34d9909c8a616  gcc/config/alpha/alpha.opt
! d9f1ab5f2e20f0fdb971e6b835ef5119  gcc/config/alpha/constraints.md
! 2477ac746136410dc114aa44c3d8397a  gcc/config/alpha/driver-alpha.c
! 46b2d8029ed1eb0170febd879d843fa1  gcc/config/alpha/elf.h
! 9d6ab7db42adc727acfb6d1f03a7233b  gcc/config/alpha/elf.opt
! 6058a42121014f1d285576a62831abe0  gcc/config/alpha/ev4.md
! b0763404268e250f1efa973d74f9b2d4  gcc/config/alpha/ev5.md
! e9ab77650a00f1797e1e274b77cd0965  gcc/config/alpha/ev6.md
! 50a9cb2c5aba5433bda09f320b740ab6  gcc/config/alpha/freebsd.h
! 44b559d8e724dcb84cfc3afef36b0426  gcc/config/alpha/linux-elf.h
! 07736448add2cbb73b5961fbe3b2e7ef  gcc/config/alpha/linux.h
! ed73110ffb4b972bd4c2e59267fcd873  gcc/config/alpha/netbsd.h
! 30834455f35a203e1025f8a5164686ec  gcc/config/alpha/openbsd.h
! 914aefdb3f19023c7041a27e1370c493  gcc/config/alpha/predicates.md
! e4cc6d370805d4a361886184e365f6e9  gcc/config/alpha/sync.md
! 5ca84ddf82c9559de0af9014c6e62d97  gcc/config/alpha/t-alpha
  6e8dd648b9668f18b1dfd9f1203c9885  gcc/config/alpha/t-linux
! 4631aa38dd5c1cb705f03be8feb7989b  gcc/config/alpha/t-vms
! 96969ad870720b65a25625e59ce416ec  gcc/config/alpha/vms.h
  1fd9a45b4f2b1e546182ce0fe35ac6d1  gcc/config/alpha/x-alpha
! 753c2cd6b9f15dca62fcfc5ae39cc9de  gcc/config/arc/arc-arch.h
! b9d86e624ab8accb4c2499f196d221cf  gcc/config/arc/arc-arches.def
! e141603d48cbc092b13757bc2998cf6f  gcc/config/arc/arc-c.c
! 1bb8da77c4986c72b729dbe44e06dd94  gcc/config/arc/arc-c.def
! 0c35ab58cf2f469deea29ae61c8bdac1  gcc/config/arc/arc-cpus.def
! 033581e35ee9b17b4b726c6907bd4d62  gcc/config/arc/arc-modes.def
! aaeb77e81679acebf747ff8a6496a3e4  gcc/config/arc/arc-options.def
! b1a53170aeadbf458b377b34c0887cfd  gcc/config/arc/arc-opts.h
! 800980ed42b054749b75ea3347517cfc  gcc/config/arc/arc-protos.h
! e891252fa86a0db64ff2fbaaba0f2ad5  gcc/config/arc/arc-simd.h
! 983c8c476d61e6e572338584f58e6a82  gcc/config/arc/arc-tables.opt
! 595445cec2e2f74eaec5ec314e51aaf5  gcc/config/arc/arc.c
! 9ebb8e59f5b37ace9f584199b1ee81e2  gcc/config/arc/arc.h
! c36d6bcd92cbd34c643c51252efeed95  gcc/config/arc/arc.md
! 96ec0aa10e793489e01a69c9d22d8993  gcc/config/arc/arc.opt
! 9c1408f08fcf135abdde012d84898720  gcc/config/arc/arc600.md
! cb92bcd9c7736753a1bc9889cb7694a9  gcc/config/arc/arc700.md
! fa95de39402b68f0d0e5344f706391f4  gcc/config/arc/arcEM.md
! 1642730ababd0c54b8f9805ca383c2c9  gcc/config/arc/arcHS.md
! 6cf923417460cc4c69a2c8fd60fee976  gcc/config/arc/atomic.md
! 41ffc98e1a4f96f41aacf0a87c933ed5  gcc/config/arc/big.h
! 9c47f3ffed0189e0d9bb8a6d56aa8a19  gcc/config/arc/builtins.def
! 3634a22a1c03a0adf66d4d06ef2e4c10  gcc/config/arc/constraints.md
! 0fab183ea7e5e9c0afdb8cd0e15baa52  gcc/config/arc/driver-arc.c
! c30e70910e0e1ce8cbbb2013939b7301  gcc/config/arc/elf.h
  b42e597b37ec6ec700bb14149bda3c87  gcc/config/arc/fpu.md
! e4d8c3ac3da840f41f6eab86fc65f390  gcc/config/arc/fpx.md
! f2729176578ea31535f18d3e76751621  gcc/config/arc/genmultilib.awk
! 9bc42e175295f0d1efa95a52180efea8  gcc/config/arc/genoptions.awk
! 181862099610d18e16bc678bd679869f  gcc/config/arc/linux.h
! cae2cd2564a274561e354f42c79a59ba  gcc/config/arc/predicates.md
! d504f52a7bc686dde5bff322955b2121  gcc/config/arc/simdext.md
! a392705bfd4529a2e18f4f9d52d05e62  gcc/config/arc/t-arc
! 322fd9925723832dd32f93a0dec8ab64  gcc/config/arc/t-multilib
! d01722dd02bd262bf40d0496cf31d3ac  gcc/config/arm/README-interworking
! af5153ad704c6e4a78247048796b0133  gcc/config/arm/aarch-common-protos.h
! 0e87493201220ec760dd30a87c6c914f  gcc/config/arm/aarch-common.c
! 3ca8882d89eda4043cb655d11b7b3f5f  gcc/config/arm/aarch-cost-tables.h
! 75692d0fbdb8dc4fbfbb02ec457f1680  gcc/config/arm/aout.h
! 5f48be6c640ebac32d76f435d58692ac  gcc/config/arm/arm-builtins.c
! 2ca31683e91ff9bc7ae6d6e40b5a367e  gcc/config/arm/arm-c.c
! 036cd117c1d6c0099aed70b303f63306  gcc/config/arm/arm-cpus.in
! 0e027b9db6ca8ea40459e2099afa2295  gcc/config/arm/arm-fixed.md
! 0e70948534a51916951bbd5b909d0f7e  gcc/config/arm/arm-flags.h
! c0ac55c64ccfe04fb67d5c2730882842  gcc/config/arm/arm-generic.md
! e4f3a77e7cfd4f59c2bc29511a55eeba  gcc/config/arm/arm-ldmstm.ml
! 33eab71420001bf050ce01099f8b3de8  gcc/config/arm/arm-modes.def
! 4bbc93c00102b567e92cc217b1d8d461  gcc/config/arm/arm-opts.h
! 12ec3db0955de3e8535ef7bed392e916  gcc/config/arm/arm-protos.h
! 76635bca9b02cbd4848e4de564c70524  gcc/config/arm/arm-simd-builtin-types.def
! 3f5e3c37f748717e24ad4994e5020bde  gcc/config/arm/arm-tables.opt
! 14dcd4986fb7d9cc87718686d40e3256  gcc/config/arm/arm-tune.md
! 0548b440cb3643756fb67ef7f24f7f69  gcc/config/arm/arm.c
! fc82d7450ab7fdd2f43d8d9d910168ad  gcc/config/arm/arm.h
! e74102224656633c0c6c2a80d65e1856  gcc/config/arm/arm.md
! 4b6807c98827e06bdc055b281bfcbfaa  gcc/config/arm/arm.opt
! afe78ae658ff4942c2605b0f557d67e4  gcc/config/arm/arm1020e.md
! 7ae508721eef81f7ecdc77c6149d1277  gcc/config/arm/arm1026ejs.md
! 2f3f1706468be20a230fb9e63695ac4f  gcc/config/arm/arm1136jfs.md
! e1b7260aa6f7705db298a50ff015f3c5  gcc/config/arm/arm926ejs.md
! 25306b8e579e797a49c316cba8058b8a  gcc/config/arm/arm_acle.h
! 69ba0680bd9a4364320cd5cbee68d755  gcc/config/arm/arm_acle_builtins.def
! 789b08a1c5a04d3856a77eba71dc38a0  gcc/config/arm/arm_cmse.h
! 614c8f14707a08f9d2819021921882f1  gcc/config/arm/arm_fp16.h
! 0177a3c670f0e830a55386dc2d358629  gcc/config/arm/arm_neon.h
! a18d8b003ebe0bf3c79b58e965ee8a15  gcc/config/arm/arm_neon_builtins.def
! 85b0e6bf02c30940b4e46621351f1e6a  gcc/config/arm/arm_vfp_builtins.def
! 8a36a9a593f44a992294173004f00bf4  gcc/config/arm/bpabi.h
! 0daa8f3b0e1eba2794bdac0e6ac0cd3a  gcc/config/arm/constraints.md
! 2a1cbdea73f86f95a8213df3f5f461de  gcc/config/arm/cortex-a15-neon.md
! c2e46ffc490899b8f8132e6d79fb7b39  gcc/config/arm/cortex-a15.md
! 026ab48825201a31822ef51c6602b8e7  gcc/config/arm/cortex-a17-neon.md
! d7a51a89547a46428392156239513cac  gcc/config/arm/cortex-a17.md
! 049819b3fff7320f47b1af897b7ea02d  gcc/config/arm/cortex-a5.md
! c4668c046f2ab113d664ccb967aa8e6c  gcc/config/arm/cortex-a53.md
! 0826c5ea98b522f3e5357dc918776d3d  gcc/config/arm/cortex-a57.md
! f99eb2e2075158f3dd20da336a2af12c  gcc/config/arm/cortex-a7.md
! 265028426187779b0f813b23814664f2  gcc/config/arm/cortex-a8-neon.md
! 09ff34c6000b7da9ce33c972fdc7e02a  gcc/config/arm/cortex-a8.md
! 5e9dd060a7180a4eb8b6d111373e7fb5  gcc/config/arm/cortex-a9-neon.md
! 105fd02948be79047729ff255e99ca45  gcc/config/arm/cortex-a9.md
! 910b471cac48faf0c10e4cb6535ac0df  gcc/config/arm/cortex-m4-fpu.md
! 0c183276c483c824b8e854138e5c4487  gcc/config/arm/cortex-m4.md
! f0517fd0908365d19a03fbf17f40bef9  gcc/config/arm/cortex-m7.md
! 4d81ef71ef8fb6f17f9ac305dfe60347  gcc/config/arm/cortex-r4.md
! bbbbb12cf460a1de0e554862fef09bd2  gcc/config/arm/cortex-r4f.md
! 340e148cca74c9d8f67b775d9e7bb02b  gcc/config/arm/crypto.def
! 793a7a09930faaf17ccfbad2531b02dc  gcc/config/arm/crypto.md
! 53cec068880716eb17380dcea191cc5b  gcc/config/arm/driver-arm.c
! e0d91b93a422f7f373e5bbd12325da75  gcc/config/arm/elf.h
! 59b83bf49c041d8f1d91bce612416b94  gcc/config/arm/exynos-m1.md
! 8c4a22b73e53af1d238bfbc079143a45  gcc/config/arm/fa526.md
! e9b30dac318359d743cbedec92466e41  gcc/config/arm/fa606te.md
! ec182a8dfaf7829cb886273dba98d61c  gcc/config/arm/fa626te.md
! fb364e52e65ede9ce4a20a291b812fa3  gcc/config/arm/fa726te.md
! 0c11075e995b2085eafcedd377ac5573  gcc/config/arm/fmp626.md
! 76603735a1f834638b4f7db1dc0db83a  gcc/config/arm/freebsd.h
! cf8563d2942942ff0c6ffc99dbb70896  gcc/config/arm/fuchsia-elf.h
! 44d87cd17de368e95f87e922a59a0d92  gcc/config/arm/iterators.md
! 842e8b8887b79d9895f7e22e17bd41e5  gcc/config/arm/iwmmxt.md
! 93cf20fc6d85aa1089d60defc82294da  gcc/config/arm/iwmmxt2.md
! dd8e05a65003b8307afa9b4b33da1275  gcc/config/arm/ldmstm.md
! 98684f387eab5f682290ff2dcae2dc01  gcc/config/arm/ldrdstrd.md
! d2ac1b4218d0d55db510891267c2c14d  gcc/config/arm/linux-eabi.h
! 11924bfac9169c879f540dbf70a426fd  gcc/config/arm/linux-elf.h
! 38d583355d1f98fc7224db4260b0e2f6  gcc/config/arm/linux-gas.h
! 192846730ddf7042b30b71e5029093d5  gcc/config/arm/marvell-f-iwmmxt.md
! db7a4c97570d7fa5ca6b6e8b26c37ed9  gcc/config/arm/marvell-pj4.md
! 03035888f43cedef25723a3f7a06023b  gcc/config/arm/mmintrin.h
! eb8cb9bcfd12f3d9e084e20048a7e6e2  gcc/config/arm/neon.md
! 30acc3bfdec5d353ce2a0daf96f427db  gcc/config/arm/netbsd-elf.h
! d1ba6365da468edd553a7d1c3c882059  gcc/config/arm/parsecpu.awk
! 1ab8597247341cc25bc4fbc22ddee4e5  gcc/config/arm/predicates.md
! 00bd29408de6a60fb678ff70cb0bc732  gcc/config/arm/rtems.h
! ffd3a1a20b27c58131c3183dd83d0466  gcc/config/arm/semi.h
! 01179a4c5f5c765ea40b1c61a2727756  gcc/config/arm/symbian.h
! 1ab42323f3531c32c3a25bf8fc922998  gcc/config/arm/sync.md
! 55c30a83339017ba15bf7871d97091a8  gcc/config/arm/t-aprofile
! e75543da21f14119c64ca2572540edde  gcc/config/arm/t-arm
! a7c14f99e3f2ba819f6e1fe5c928a799  gcc/config/arm/t-arm-elf
  4dc427c456af5e56b1ac39bda8969af6  gcc/config/arm/t-bpabi
+ 44f44f8a9976781d4484241061330296  gcc/config/arm/t-fuchsia
  e3950ec6bd159734835f8f8fb143efc6  gcc/config/arm/t-linux-androideabi
! 9d44eb35e2768d21074644b1319b5a80  gcc/config/arm/t-linux-eabi
! c54a97bf9f20bd6f05250e8e2f8e3b19  gcc/config/arm/t-multilib
! f4f2c51d925cf702d3c93f8dd6485fb1  gcc/config/arm/t-phoenix
! 7c616045b2ccfb95fa3ff3b1d330bbfc  gcc/config/arm/t-rmprofile
! 97a51b616111594a4ecfb7b12d4757d9  gcc/config/arm/t-rtems
! 774ac8d84b670b5ac91aa324884f4223  gcc/config/arm/t-symbian
! 447f96fe8feb3c85ebc3c830e1fc2eb7  gcc/config/arm/t-vxworks
! 4b60295cc55f16e4cfdfce2bc88271d8  gcc/config/arm/thumb1.md
! 5d4fb00431733436f8ab8e4e857fdf7f  gcc/config/arm/thumb2.md
! 37fcbac8540d3b94c6a7f1106483b14d  gcc/config/arm/types.md
! 0609f966e354375f81db5a0f3fe4a1f5  gcc/config/arm/uclinux-eabi.h
! 340dd12660dae7098deae5b2c157552e  gcc/config/arm/uclinux-elf.h
! 8217e39592bbb77435cb0ee23f2c9f30  gcc/config/arm/unknown-elf.h
! 2c33f89244b7f798a6e72528d5863561  gcc/config/arm/unspecs.md
! ac96e4cdf8d9a13b2b764b6f57bdca73  gcc/config/arm/vec-common.md
! 8d7117812e28f944079133f8e447eaa3  gcc/config/arm/vfp.md
! f1552cfb276d6fafa6ec1e099453f559  gcc/config/arm/vfp11.md
! 4c1f6fcd124edceb1a5051da93b561a4  gcc/config/arm/vxworks.h
! cceeb61ac82458920e6ee47d642291fb  gcc/config/arm/vxworks.opt
  a17a638dc98f3f18b0e13448c69e1e65  gcc/config/arm/x-arm
! 0214a4f048a9f9c98e29d44feec81b58  gcc/config/arm/xgene1.md
! 52a3e7ac93f38de1f45e559953ccb076  gcc/config/avr/avr-arch.h
! 82e2526dacaf7ecee31a536867115876  gcc/config/avr/avr-c.c
! 53eb668025e9f275b97ec0913279bfb5  gcc/config/avr/avr-devices.c
! a8f891a4ed13d01b288e3189d7158380  gcc/config/avr/avr-dimode.md
! e8f8ab1d6052482d392bf158ad13f54f  gcc/config/avr/avr-fixed.md
! 9a3b299496f88e558bfb235a25e00957  gcc/config/avr/avr-log.c
! 5c64793fded4b3e321540f594b66bca0  gcc/config/avr/avr-mcus.def
! 2577cd5c96201deecdd584b55a89fe9d  gcc/config/avr/avr-modes.def
! e3c604736a61df8e21d5acc2baf1a8a6  gcc/config/avr/avr-passes.def
! 2bc10c858cf40e0c09d4f5ba230c360e  gcc/config/avr/avr-protos.h
! 60fbcc1c156ff6d87815e3dfb9e944c4  gcc/config/avr/avr-stdint.h
! 1cdd60c92f0191d3d5c1480e2f9243ca  gcc/config/avr/avr.c
! 7c74e9264ceb208ac97aa8d519711d65  gcc/config/avr/avr.h
! 9a9539fd7208754c699c9fade26624db  gcc/config/avr/avr.md
! 717736dc35a8a003246a394e430dbfee  gcc/config/avr/avr.opt
! 8e727a6d8aecf20fe626ba560f501a6c  gcc/config/avr/avrlibc.h
! b4ced6c7db3c36bf284c0d20d0232d0a  gcc/config/avr/builtins.def
! 990866e2797f00152b8249f5e14df89b  gcc/config/avr/constraints.md
! 0281b3baa435acaaa6bbe2c9cab2f23f  gcc/config/avr/driver-avr.c
! 17d34e9142b588f6ed0fbb66d2effef9  gcc/config/avr/elf.h
! 4759d11aca88ca4dbd46bdfb9ca4fce5  gcc/config/avr/gen-avr-mmcu-specs.c
! 9da00015bf60872e47c4ebf44c57c151  gcc/config/avr/gen-avr-mmcu-texi.c
! e3e6aa5c6f6a497b8c8b4e2635471713  gcc/config/avr/genmultilib.awk
! b13b13f0a479f51bd1414a6ee802f49d  gcc/config/avr/predicates.md
! b4111308eb62fb86aaa8e520d2ff397f  gcc/config/avr/specs.h
! b1d3e37c2e55624da62b1f494a1b8c17  gcc/config/avr/stdfix.h
! 66feb800e8c171fb809ed30a3c370dc8  gcc/config/avr/t-avr
! ebca6d52663500e681f7b8b314846fe2  gcc/config/avr/t-multilib
! 4b986dc345cf33d0523458d491397382  gcc/config/bfin/bfin-modes.def
! cf7abf2e1b5122eb1a2d21eaf483efd3  gcc/config/bfin/bfin-opts.h
! 7166d1fb7a2e10ac1f108096e5b3bc05  gcc/config/bfin/bfin-protos.h
! bdc4a81f3e43c56661f4f4fdb882471b  gcc/config/bfin/bfin.c
! fb2bbb7383defd0d945ebcf08faf8b93  gcc/config/bfin/bfin.h
! b17fbb3601b3bb819f02872a393b5cc2  gcc/config/bfin/bfin.md
! cd6b9be8e7552d9f758d841e4d175d4d  gcc/config/bfin/bfin.opt
! ed0867624f60a706eb35d2c2a2d6cbf8  gcc/config/bfin/constraints.md
! 6b75e3e94f1615d461e5acca539c34d1  gcc/config/bfin/elf.h
! 2d991915909466eedb562fef3107151a  gcc/config/bfin/linux.h
! 0fc41c17b9e0214923ed81d4b3e629bc  gcc/config/bfin/predicates.md
! c0ee7a2f448fda0615ad4f8e44bd7b32  gcc/config/bfin/print-sysroot-suffix.sh
! 10b1b844e81c83eec6318631347cb504  gcc/config/bfin/rtems.h
! c5f067337f7a9a56a52171e1b3949dbc  gcc/config/bfin/sync.md
! fffeb6f6bc39712df6c7b6b9b23e7311  gcc/config/bfin/t-bfin-elf
! d504f2bdaaf91b2ae3b1e3e3914b897d  gcc/config/bfin/t-bfin-linux
! 4cb5a8f26c085aa1c3db79f3d86b6419  gcc/config/bfin/t-bfin-uclinux
  6f4817f759fcac5ac27233ee451780a6  gcc/config/bfin/t-rtems
! 5a677eff0fc56cc25de94cff57bb3d41  gcc/config/bfin/uclinux.h
! 60fa8e74d25f4aa91d650fadd9bd10eb  gcc/config/c6x/c6x-isas.def
! 5eeeb684341ae6b69a20e8432251e4f2  gcc/config/c6x/c6x-modes.def
! c029581b11488ceaa79e667813e4e7b0  gcc/config/c6x/c6x-mult.md
! 1150effb7240fa0b36b8e52945dd1abe  gcc/config/c6x/c6x-mult.md.in
! 03913c283140aadf434d0a9801f27e47  gcc/config/c6x/c6x-opts.h
! 6d19393a25ae134b9af1127f7769de44  gcc/config/c6x/c6x-protos.h
! cadfb0a191072483ee699eba639a338d  gcc/config/c6x/c6x-sched.md
! 26fa3e1b56377aa0328782d68174b897  gcc/config/c6x/c6x-sched.md.in
! 9e96f55161c2527812a5c463dccb8936  gcc/config/c6x/c6x-tables.opt
! 6f4f82d211f1b4271ab36506cddccc7e  gcc/config/c6x/c6x.c
! 4e526cb2760c740f7dfc3bb2a672d733  gcc/config/c6x/c6x.h
! 0a78ca9ec7a72ee8b381fc74e57c8593  gcc/config/c6x/c6x.md
! 11ac5d4bba7cac62ff81d537b1f069ec  gcc/config/c6x/c6x.opt
! 42c067960208b640908ddb0ae1485b76  gcc/config/c6x/c6x_intrinsics.h
! c7289cb1ae07c9c1d7374b8acdc03a41  gcc/config/c6x/constraints.md
! 3e13c7be7482efd4821eeec9a6384bda  gcc/config/c6x/elf-common.h
! 375691145aa676753d9eb4a6b94c6163  gcc/config/c6x/elf.h
! 96a57e65e25195fca33901d4c2a6c909  gcc/config/c6x/genmult.sh
! 7cfe5ea5284e36fc9594a9c51cca7c23  gcc/config/c6x/genopt.sh
! 9818b124ca075a73c1313c2fc9758f1d  gcc/config/c6x/gensched.sh
! 2fc7581035dc02a9cc1efb2286127275  gcc/config/c6x/predicates.md
! 4331804e2cee1a865d36f15f382ef4c8  gcc/config/c6x/sync.md
! 8342c3fa898b24a2284bbba3ff5f81e4  gcc/config/c6x/t-c6x
! f67a54ef87e37b7b9955ecbb36107970  gcc/config/c6x/t-c6x-elf
  428034a210600b6b423dfadb06636e03  gcc/config/c6x/t-c6x-uclinux
! 389b84bcbd608ac0adea5f85a90b47c5  gcc/config/c6x/uclinux-elf.h
! a49497625a7a39c207e95ae3f0473d30  gcc/config/cr16/constraints.md
! 2f4310b40be1b30f37b45c5386b4d7e8  gcc/config/cr16/cr16-protos.h
! 89b37c07ce509199911f2472e692800c  gcc/config/cr16/cr16.c
! 6ea58c06d7eb9fbc2dd7ad8ab8fb163f  gcc/config/cr16/cr16.h
! d065f8b4b7199eb2360a524d8870541d  gcc/config/cr16/cr16.md
! e270541134893c7327dec0fc98f1d5ef  gcc/config/cr16/cr16.opt
! 92a7c236eecb11e74bad487ab0b6a6d0  gcc/config/cr16/predicates.md
! 1a51c46021da7003dbdf40d2cc0f74d7  gcc/config/cr16/t-cr16
! 873fbae50eb35de54851183d323622a4  gcc/config/cris/constraints.md
! b0f4be68f6dbdd62df19416f0e29ee9d  gcc/config/cris/cris-protos.h
! f28446a2f53836bd40f9ec91a3f6ff3e  gcc/config/cris/cris.c
! c5a036750365744e3a8c9d524c26f9ff  gcc/config/cris/cris.h
! c0b587dd94eab122f75f86ded2771210  gcc/config/cris/cris.md
! 21a17bfa935935a469952823e4b868b0  gcc/config/cris/cris.opt
! 8463b18fb0407dfb8d1443d6a59992f2  gcc/config/cris/elf.opt
! 46aa684509475712fbe954955d44869d  gcc/config/cris/linux.h
! 9bb0108a12b0f51a81ae018e8a7d9ed7  gcc/config/cris/linux.opt
! 4bbfe8f90daafd843570fe82da1e1fcf  gcc/config/cris/predicates.md
! 5384a284db5d1c66a94f555243bdcd0d  gcc/config/cris/sync.md
! ac5a39c723254ca092ef409cb4a76b20  gcc/config/cris/t-cris
! 540f72cd9c3369cac8c6090158bd3454  gcc/config/cris/t-elfmulti
  5657034355d2720466dad6b98f794a8f  gcc/config/cris/t-linux
! e57403738d6206360237f487bda629e6  gcc/config/darwin-c.c
! d7a57a644431fc24e3ac8ba4a699352f  gcc/config/darwin-driver.c
! 6917dc4379d905e365c33f0df44d948b  gcc/config/darwin-f.c
! 830ae6aecd271b468c7c4f6060484c54  gcc/config/darwin-ppc-ldouble-patch.def
! 42ab3b6faaf7ca0beac47a6f387bcc7a  gcc/config/darwin-protos.h
! 5ce3a62ccb092afbae3b17b6b8f4f156  gcc/config/darwin-sections.def
! 49ef641b9e90e0c72d9c2823f1954b04  gcc/config/darwin.c
! 4d3381e2c3c099917a4af89ee8c5a29d  gcc/config/darwin.h
! 7d8e26ef51b64708c1b6d74bb51a05d8  gcc/config/darwin.opt
! 251bc516b1b1a62f7a7b53cf7560991f  gcc/config/darwin10.h
! 5412cfe6ac1da6d87f89bcc4e00a036c  gcc/config/darwin12.h
! b3f5c7ab2128a2e63f6eec2e13ddb97b  gcc/config/darwin9.h
! 259694c85979612db8ed70a4541ec78f  gcc/config/dbx.h
! 8ff63e80b316c6bc99c62e1e2b81c144  gcc/config/dbxcoff.h
! 1f3bd29e7e9de13099a3658e64cc47a4  gcc/config/dbxelf.h
! 960b98d118cadda275b20d7c94b7ff6d  gcc/config/default-c.c
! 7f8293424456e7f4401b92b7b8bb6cc9  gcc/config/dragonfly-stdint.h
! 9c50e113a1507026c720eb18cffd82b8  gcc/config/dragonfly.h
! e730f26c6b083581477b527b0cd00276  gcc/config/dragonfly.opt
! 316d5510503f998cd4540ad68e31a336  gcc/config/elfos.h
! 834cdc1e96eb51a61a98409fbe75019f  gcc/config/epiphany/constraints.md
! 52f3e963091b2ceb4ee9ad3e9f6c336d  gcc/config/epiphany/epiphany-modes.def
! b2b7427fe2ce4b6eee02921f024a99b1  gcc/config/epiphany/epiphany-protos.h
! 2fdb73f1902b610026ec7da7fae5f4a8  gcc/config/epiphany/epiphany-sched.md
! 21d477f0b7b91410724b4dcfa16c265b  gcc/config/epiphany/epiphany.c
! 3e90de2f3432b9b7c130a5abaf07751b  gcc/config/epiphany/epiphany.h
! 7a519328db39359b3a5a5d9f26ec4dac  gcc/config/epiphany/epiphany.md
! d7231e1021f9e66affc3131cfd3146d5  gcc/config/epiphany/epiphany.opt
! 29d57d11bccf199186868b553faa915e  gcc/config/epiphany/epiphany_intrinsics.h
! 1d6d35bcf32f1179f54ca21541212513  gcc/config/epiphany/mode-switch-use.c
! df8d498f330b47931010a531b2f58407  gcc/config/epiphany/predicates.md
! f222a2243da85f3e1a9b9b0c8b7fb420  gcc/config/epiphany/resolve-sw-modes.c
  ae148490dc68d3586af1ffd2b1c6da03  gcc/config/epiphany/rtems.h
! 3dc057e2f9fc0f23cffae135be9d9ff8  gcc/config/epiphany/t-epiphany
! 84d7886316730b33a474927a2a7ea695  gcc/config/flat.h
! 417665fbd29fb3b0fe98426b178b7468  gcc/config/fr30/constraints.md
! c927dc4052b07b150f37f70f25f20b9e  gcc/config/fr30/fr30-protos.h
! c5dc4bfd3789a54073d84195ca62bbf1  gcc/config/fr30/fr30.c
! ca4f1decc20a40a43238f3d5de579273  gcc/config/fr30/fr30.h
! 8fc13c74c28a34ce1115641156618869  gcc/config/fr30/fr30.md
! df2acb4bdde578c09f2996b330b78704  gcc/config/fr30/fr30.opt
! cfc974b22e1453534650293defd1cfef  gcc/config/fr30/predicates.md
! fe79ec2a1b43d1d3c4967a16acf549ef  gcc/config/freebsd-nthr.h
! 097598fac42306b8de155d6b6a960515  gcc/config/freebsd-spec.h
! 0ac594b41cb882b08574149b2ac588d5  gcc/config/freebsd-stdint.h
! f19fec81761544d249427c5585969df5  gcc/config/freebsd.h
! 0cc7a69d9eac4b42d15efcb27c93ff25  gcc/config/freebsd.opt
! 09e70afcb44abf5a2b5e153590eeecc3  gcc/config/frv/constraints.md
! 8ebeeef437e001e680a8e6fa241301d7  gcc/config/frv/frv-asm.h
! 177844e2eef080fda7f52177e71a13f4  gcc/config/frv/frv-modes.def
! 21599522e6a3df1987ddd6922841dd94  gcc/config/frv/frv-opts.h
! 7b805b2f0b26bf81cfc6719f2154a3b1  gcc/config/frv/frv-protos.h
! c31f2fce6f1c47516afd62236192aeec  gcc/config/frv/frv.c
! 55a84c61e8e416bff4e8026a075ca40b  gcc/config/frv/frv.h
! 6906a0447cdec21b1f0640e721edaafa  gcc/config/frv/frv.md
! 6316eb0e7dfad77d089e20a53e899199  gcc/config/frv/frv.opt
! 4698da61867ea735b64612f92c10d197  gcc/config/frv/linux.h
! 7b7c1a3f54a17ac03d8cee4bbccee867  gcc/config/frv/predicates.md
! 9d2cfc1b15cf0b43fbf3092789681058  gcc/config/frv/t-frv
! d28e3eba1e8623a9f0b6da053840b821  gcc/config/frv/t-linux
! 4e0a7ba20cdc41f89331fdf5e5814005  gcc/config/ft32/constraints.md
! 0cb5e807db77647634e99d378135cae7  gcc/config/ft32/ft32-protos.h
! 36b34eb62c9aab8f8096cf9040aeaba1  gcc/config/ft32/ft32.c
! 6db99b9ef4760f1ae4672026f133cb5c  gcc/config/ft32/ft32.h
! 4fd3af21ead92116771ca7b027dafee8  gcc/config/ft32/ft32.md
! e1872fea7a1f932229ce3bf9883cf333  gcc/config/ft32/ft32.opt
! 01926939032a1f724abfb404a9c01fca  gcc/config/ft32/predicates.md
! 8ed6ed746f758373834f05f3a8b68127  gcc/config/ft32/t-ft32
! 2806725c58d43600dce5e40b495b7091  gcc/config/fuchsia.h
! d27347912d83febe812fdb041141539a  gcc/config/fused-madd.opt
! 994d4fc44d483c0e4a89c72d89fd93de  gcc/config/g.opt
! 191721adfe442e5c38c70dce950e1c64  gcc/config/glibc-c.c
! 2187b0d180b0bc520f8fae559276ad8d  gcc/config/glibc-stdint.h
! 34db705a3f07c123709bb730721ddfb7  gcc/config/gnu-user.h
! 072e780cbb83c096c2caa4666a554abb  gcc/config/gnu-user.opt
! d782fa46ae656c82615368df49c839b2  gcc/config/gnu.h
! 725ec5542f472baefc73c54425248fd3  gcc/config/h8300/constraints.md
! e00c95eb186259e3d5582406cc0192b8  gcc/config/h8300/elf.h
! 27b97b53992145cf6a827bb621a05f56  gcc/config/h8300/genmova.sh
! 16bd1686b36233413c623330a4426948  gcc/config/h8300/h8300-protos.h
! dd1a9a9fc054ad2e4f327303cf9d7689  gcc/config/h8300/h8300.c
! 7a27b232709b846553762e7ab45cffac  gcc/config/h8300/h8300.h
! 5ab62401bbec4951655e5e0691265186  gcc/config/h8300/h8300.md
! c26c1017f307df6578ccc9dfb95800b3  gcc/config/h8300/h8300.opt
! 44e701ee503d72eb98ad05b4abc22385  gcc/config/h8300/linux.h
! 24694b1609e4e213cafb6ea09c26b00e  gcc/config/h8300/mova.md
! 2f45bacf3811b0e1e63be9d8d73a303a  gcc/config/h8300/predicates.md
! 5baeba46f320f6dd009112b27a0bfdee  gcc/config/h8300/t-h8300
! 34e6602584c5ced3910c458807f26ef7  gcc/config/h8300/t-linux
! 85538e95b6dac73ea97107d42527afce  gcc/config/host-darwin.c
! a29577fda6a70af775e90d8e9632b3df  gcc/config/host-darwin.h
! 4b7fdb057f7442ae948d70d11c0565cd  gcc/config/host-hpux.c
! 83e3d13c5c8880e4613c6a533603888f  gcc/config/host-linux.c
! 1cd6719aa188fd6b77711d535a515797  gcc/config/host-openbsd.c
! 9bdf6210f2b74bba769fe570e65eea47  gcc/config/host-solaris.c
  2c191e2d8d033611c6fccc8362d9e8f0  gcc/config/hpux-stdint.h
! 5c3b53d057516813df20094837469d7b  gcc/config/hpux11.opt
! 5bc1d72fe6c108c4c1f2a821132555ea  gcc/config/i386/adxintrin.h
! 998fdec922379860a717b3f105c314b2  gcc/config/i386/ammintrin.h
! f3be3ee5181359209c74ace46d5f05ea  gcc/config/i386/athlon.md
! 255d08915845ffd0e0bac05bbcfb006c  gcc/config/i386/atom.md
! 81cbc6b11b5b0b6f52e0a10aba993b2f  gcc/config/i386/att.h
! f4693321823871c4dee7eec22f5fca28  gcc/config/i386/avx2intrin.h
! eb8ed620824417d2c7958d76c605b2c8  gcc/config/i386/avx5124fmapsintrin.h
! 442ba84d1964652112ceaeadd65fb1bb  gcc/config/i386/avx5124vnniwintrin.h
! 52c3eb11a66213dba80f9c97cf624862  gcc/config/i386/avx512bitalgintrin.h
! 34ff22aa119afc2097c4e285b02117ff  gcc/config/i386/avx512bwintrin.h
! bb5d8573766a03ad02abbecae8af2732  gcc/config/i386/avx512cdintrin.h
! 041a3b27ffb1d36cdb52ec57fd54991d  gcc/config/i386/avx512dqintrin.h
! 02e0125c03cd6c8b0b83284f5b4a1cd2  gcc/config/i386/avx512erintrin.h
! e1b72574511a91540032d573d099996a  gcc/config/i386/avx512fintrin.h
! 75a8d02b8eed76602ffdc82633dafcd4  gcc/config/i386/avx512ifmaintrin.h
! 964a5aaff516c4c87140133b5afec6ed  gcc/config/i386/avx512ifmavlintrin.h
! 3a98d3531f48bbd9684b74570a11cc83  gcc/config/i386/avx512pfintrin.h
! fe1ceddb654c20987eb59a3d5642907f  gcc/config/i386/avx512vbmi2intrin.h
! cce950a441da22c0b321f47c5d8be16b  gcc/config/i386/avx512vbmi2vlintrin.h
! b6fb5740d167285152e08dfaf4b79cd9  gcc/config/i386/avx512vbmiintrin.h
! 2d89a8cbd411da65e4de3b06715acfd7  gcc/config/i386/avx512vbmivlintrin.h
! 738cffb530d2b73c24fdc0292aceca55  gcc/config/i386/avx512vlbwintrin.h
! b5b9bb00324fe7966ea0fa8f098f020b  gcc/config/i386/avx512vldqintrin.h
! 15da10e38fd277f3473ec0293bacd906  gcc/config/i386/avx512vlintrin.h
! 6d0970d382ca4120a4eb992cd8872544  gcc/config/i386/avx512vnniintrin.h
! 243143dca2ce0575bd58ee17b8906354  gcc/config/i386/avx512vnnivlintrin.h
! a9268adb7f0513e13971021eb302760c  gcc/config/i386/avx512vpopcntdqintrin.h
! c4f33f51ef65ff15593c78cd9682301f  gcc/config/i386/avx512vpopcntdqvlintrin.h
! 1fa9fcd7fdde602c4ef8ba7f48aa93de  gcc/config/i386/avxintrin.h
! 0b92d1c8eaccd4fd3c7a3f5df2b6b40b  gcc/config/i386/avxmath.h
! 9982bfd94cd89aa48752e8f8164c837c  gcc/config/i386/bdver1.md
! 241362e4b90e08a688ddbdefce7267f3  gcc/config/i386/bdver3.md
! a284afea5c6f0993ea27a4ae47389904  gcc/config/i386/biarch64.h
! 9e3c979ec1c0e229e1c2b34e4dcc3516  gcc/config/i386/biarchx32.h
! 5b91207435495ee07784e88ad7846cd4  gcc/config/i386/bmi2intrin.h
! 6f022f8814f6b631092e780c2eb418b0  gcc/config/i386/bmiintrin.h
! f55cedd95ae6c261ae43144b0eda5f80  gcc/config/i386/bmmintrin.h
! d3770cf57370c0e0f54d70974a47b8af  gcc/config/i386/bsd.h
! d01f74f980432bc789a234c37a9c857b  gcc/config/i386/btver2.md
! 0d0ea2ebb3c05d3cbef3f9df4ff9058e  gcc/config/i386/cet.c
! 0976e8ca3c182d3d458c74093141e623  gcc/config/i386/cet.h
! 737a76836ffddf082ba366ce47de154d  gcc/config/i386/cetintrin.h
! ff52f6b9b2d55604de41a23aa06081d7  gcc/config/i386/clflushoptintrin.h
! b1d49e4485027cab9bbecc6f21a72cdb  gcc/config/i386/clwbintrin.h
! 85d0f7cd0abb5196ad436b4be8b5245e  gcc/config/i386/clzerointrin.h
! 002a13f0bfc874d7e9da37289d56d87b  gcc/config/i386/constraints.md
! b733b5cf79894c920d2ee1e128f8aca7  gcc/config/i386/core2.md
! 83264babd4a1ed63f6258823a1a33ab5  gcc/config/i386/cpuid.h
! 5b1bfee52590196c940b0e2013d0fb02  gcc/config/i386/cross-stdarg.h
! 375e6e8e8704949687afcc319a60226b  gcc/config/i386/crtdll.h
! f6b238d1a78347ee7b86ca034f3df31f  gcc/config/i386/cygming.h
! ad8afcdfb159e221a13ae5b4ac0c90cc  gcc/config/i386/cygming.opt
! 1e7d91edb0ff94ffa22c7977b1824f4e  gcc/config/i386/cygwin-stdint.h
! 267105275d60e8e2beb4c562cacd474c  gcc/config/i386/cygwin-w64.h
! 60a98b6c5ea78ab3fe27bfc9e35b1d00  gcc/config/i386/cygwin.h
! 822dcd0ea36bc4391fcecfdcb8e8683f  gcc/config/i386/cygwin.opt
! 3ae6f261a15b8aa5295b10bb409c977d  gcc/config/i386/darwin.h
! 33bb82a955dc6baf3e4f0f13e18a0700  gcc/config/i386/darwin64.h
! 7539a1a18dad410589dc81def9e9eecc  gcc/config/i386/djgpp-stdint.h
! 59d4c221933878a29e259b8495bc61e2  gcc/config/i386/djgpp.c
! 77c9fab198269da2c581d4e3e4dcd99f  gcc/config/i386/djgpp.h
! 1cfd20b74e675df363ea121a0a870748  gcc/config/i386/djgpp.opt
! 618f3c3a515ea355387b5126cc7479a6  gcc/config/i386/dragonfly.h
! da49a228f6a114545dd359590600bb15  gcc/config/i386/driver-i386.c
! f43004343ae4ffae7df4b8b541465c6d  gcc/config/i386/driver-mingw32.c
! 533673dd897c7b1f1492a6e61661a25f  gcc/config/i386/emmintrin.h
! 2856a76a7205b8395b39096c05adb056  gcc/config/i386/f16cintrin.h
! 269d5c806a761a10898d44ffd5f608d8  gcc/config/i386/fma4intrin.h
! 261de8a6de123a87e0a9f6a3de8f57e5  gcc/config/i386/fmaintrin.h
! cf25ae8b13672c4cf7cb2a92fbdb40ad  gcc/config/i386/freebsd.h
! 295845c13e80cda19ed75abbaa80d24d  gcc/config/i386/freebsd64.h
! cfbf44938d72b85fc77aeebd9f7fc612  gcc/config/i386/fxsrintrin.h
! 3412e498955cd03fdacbc5f4393af04a  gcc/config/i386/gas.h
  d87f5906e5cee04c568119528636e1c2  gcc/config/i386/gcc-auto-profile
! 9385a0a2efe5dc812cf4671a0eca5032  gcc/config/i386/geode.md
! 0f93fff31fd835d519c0fffb66acb503  gcc/config/i386/gfniintrin.h
! 6050ddadb049c9ed39a059139be3895b  gcc/config/i386/gmm_malloc.h
! 146f08c369b19ecf865d26c97a7ca68e  gcc/config/i386/gnu-user-common.h
! 1f093eee8b2212b558c157556d02773d  gcc/config/i386/gnu-user.h
! 6f89a8f2cda391f7b33da0bbf19b4a6a  gcc/config/i386/gnu-user64.h
! 07b3610c117b1e06a7e2c5d39505b3e3  gcc/config/i386/gnu.h
! ac053142b683377c63e37ea32eac0b49  gcc/config/i386/haswell.md
! fcc4e84abb760f447c59660d15cb4094  gcc/config/i386/host-cygwin.c
! 9be543f17af3061d1c985df407b61bc7  gcc/config/i386/host-i386-darwin.c
! 1e836a821b3c47ed7a17d401c8fcfdc1  gcc/config/i386/host-mingw32.c
! 4c7303a05532c22c898cd100aff04da2  gcc/config/i386/i386-builtin-types.awk
! 2fd1e39abb43aba80fe53c72da353aca  gcc/config/i386/i386-builtin-types.def
! f85b2735ebf24b46c2d9e4d6da2ab118  gcc/config/i386/i386-builtin.def
! 28c1709c39edb6c6d98757be65d6714b  gcc/config/i386/i386-c.c
! 69c87e6daa81bb738dbd8f554c77b592  gcc/config/i386/i386-modes.def
! 5bafb9d86cd0531b346e4639efc86356  gcc/config/i386/i386-opts.h
! 585a48de3fb8cf98c23ebac00c2238a5  gcc/config/i386/i386-passes.def
! e7f855ddccfb8128c224798748386a63  gcc/config/i386/i386-protos.h
! 26d74633f1b337f9e7080caf419f0796  gcc/config/i386/i386.c
! 4d8020179450983318e14f35fe0585e0  gcc/config/i386/i386.h
! 5e917c0b0384930e5138990ddd288d62  gcc/config/i386/i386.md
! fedeca0d943923d2b1e8a23dac70402e  gcc/config/i386/i386.opt
! 64cf08bf31bf2f4dc57c5612fbf545cb  gcc/config/i386/i386elf.h
! f750ed2033bbe36f306b115907b76b57  gcc/config/i386/ia32intrin.h
! 6782ac930a259e666c7152a4e32eb686  gcc/config/i386/iamcu.h
! eeab54f2bf97fae2a0af1cf9b037ccea  gcc/config/i386/immintrin.h
! 164c868bea724e5992522a74f1a5f185  gcc/config/i386/intelmic-mkoffload.c
! 9bfe0e611910a8e53992edc7cfb23ce0  gcc/config/i386/intelmic-offload.h
! 0a2c437fc8d98c80b876dba7f26931e3  gcc/config/i386/k6.md
! 3cb0c3eae259b179d9a51eed273d041b  gcc/config/i386/kfreebsd-gnu.h
! 54698cac0654f6610b6d0b2cbd688c06  gcc/config/i386/kfreebsd-gnu64.h
! 4dc75eda2d6d5bb03d1154a7e4adafe2  gcc/config/i386/kopensolaris-gnu.h
! 006ad10513b0fc530100b183ae4424e4  gcc/config/i386/linux-common.h
! 371860b7dc7a2bac5a02aba052244d45  gcc/config/i386/linux.h
! 72600bee9f19d8322cea728a05d676bc  gcc/config/i386/linux64.h
! 756cf2e486210e7f2283529781327f0f  gcc/config/i386/lwpintrin.h
! ede1c8d95e8e05476d07a9d96e27d7c5  gcc/config/i386/lynx.h
! 60ef378b0e694417726122c462bbc985  gcc/config/i386/lzcntintrin.h
! 1a3769633d5da27c1ff8f5f406670434  gcc/config/i386/mingw-pthread.h
! a5fc9ad01c5815b6e5c4242c246953f4  gcc/config/i386/mingw-stdint.h
! 3119da411cb05ebde8424ce228323f50  gcc/config/i386/mingw-w64.h
! cd3d60d3dbd2d1a6a99e9d152b5363f0  gcc/config/i386/mingw-w64.opt
! f86373165daed8a9aa27e68d587ec642  gcc/config/i386/mingw.opt
! b6501938462cb4b80d19b3512b0f0235  gcc/config/i386/mingw32.h
! 6687f6843381ac40aa88f5e4387bf0f1  gcc/config/i386/mm3dnow.h
! c623eb248c8a9342e0ed39a96fb0c6e1  gcc/config/i386/mmintrin.h
! d0aeed93f731e458f74a8659e8f87432  gcc/config/i386/mmx.md
! 8f5ad56d4106f7cd5a44445baf71a0e6  gcc/config/i386/movdirintrin.h
! 6fc1236da27f836d925b4559deae34b1  gcc/config/i386/msformat-c.c
! c00c0f388b18bfc68c1367570ac21c13  gcc/config/i386/mwaitxintrin.h
! ebe271e2a81fb6c26014c1e33071f379  gcc/config/i386/netbsd-elf.h
! 5e443a96b07f798cd855d99a218400e4  gcc/config/i386/netbsd64.h
! 4a7dbea7658829d52f59bd882cc96c75  gcc/config/i386/nmmintrin.h
! 13eb463f08f38048b14089034e418f35  gcc/config/i386/nto.h
! 0a7181052eff8d257a537fbb49333163  gcc/config/i386/nto.opt
! e9e0eb27ce8d54811eb1654c6c7cdc72  gcc/config/i386/openbsdelf.h
! fff2714d9d59c106e2556413ebc29af9  gcc/config/i386/pconfigintrin.h
! 09c76c81fcb37af9a57ed3c969c2b6df  gcc/config/i386/pentium.md
! 7b154309b90f6d8b92236d8ca61cdf10  gcc/config/i386/pkuintrin.h
! 54562506560ed71d1acfc90d12c136c6  gcc/config/i386/pmm_malloc.h
! 197ac373751d4a057c91bcaece5c9326  gcc/config/i386/pmmintrin.h
! 0c248d6007255907984e1c0de9c2177f  gcc/config/i386/popcntintrin.h
! 2f62ed6bac14a4c224f2a3b731b0b5f7  gcc/config/i386/ppro.md
! 2810c2cc16c14bc0b3ce927ada37e238  gcc/config/i386/predicates.md
! 6bb99a047e58402f03a957bc1a559e4b  gcc/config/i386/prfchwintrin.h
! da862db85fe511a55f82d20f9981bda5  gcc/config/i386/rdos.h
! c037a80d0a083f041a1a2ad6f1133d26  gcc/config/i386/rdos64.h
! db56df3af9e5c90ebc32b0a8204a4164  gcc/config/i386/rdseedintrin.h
! ef8890ab5009549b7f4a9d0a11c0b5e1  gcc/config/i386/rtemself.h
! 975653bd850908b34f7fbe64944ad703  gcc/config/i386/rtmintrin.h
! 36e960fabd14abd6c47de9e77be68384  gcc/config/i386/sgxintrin.h
! 726f96e7164960af9fea1acf954440f6  gcc/config/i386/shaintrin.h
! 1450602f2a26403ed2ddc18e73a0abcd  gcc/config/i386/slm.md
! 428436d4157bf13d814afdcf184d8b7d  gcc/config/i386/smmintrin.h
! d8b958f9693a38b339292afdde58d673  gcc/config/i386/sol2.h
! 1c5c24bb5991e25ed5e15c51b09fc4e1  gcc/config/i386/sse.md
! fc3b94b276976b0fe533ac436414f6bc  gcc/config/i386/ssemath.h
! ae961d16d446d661830906f88c08f196  gcc/config/i386/stringop.def
! 05a37b469e0de5f550131f2f43046252  gcc/config/i386/subst.md
! 4ddc7f529185fcca418fac9d1b74a2ca  gcc/config/i386/sync.md
! ef660aa614157434780cef171fc42c55  gcc/config/i386/sysv4.h
! 6efd2b81feecd9d4b75ddf5b9c142127  gcc/config/i386/t-cet
! 0876fe4a21d4ada33787b86aaa13145b  gcc/config/i386/t-cygming
  d5339d6e5a09a02383903f617230e19e  gcc/config/i386/t-cygwin-w64
  98d94861be252f8541038afee279417f  gcc/config/i386/t-darwin
  8f92133cb94c59e2939cd65dc5fc8cb4  gcc/config/i386/t-darwin64
  4c5d6e2fe993d41a182cdd83904065d4  gcc/config/i386/t-djgpp
  3a1c0dac7740fd9ef48c7bdf5f313c9d  gcc/config/i386/t-gmm_malloc
  d5939c6bccbf8957206c63308ce628a6  gcc/config/i386/t-gnu
! cd837ed161f1e869c697ad12ac345674  gcc/config/i386/t-i386
  c3fde04ef47ddd6ec0a60c98d7f55224  gcc/config/i386/t-intelmic
  51dcf9826007c01cfd67be11d5f0d538  gcc/config/i386/t-kfreebsd
  39ad69cb2a2e67aa8d46664a75b02789  gcc/config/i386/t-linux
! 52dd6dfadc18a4b5e17f8f441e41864e  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
! fad39470adafadf622d0045c316f2fbb  gcc/config/i386/t-rtems
! 13b375c0e870b85a529e271b0c3f0baf  gcc/config/i386/t-sol2
  af24a4211ecc5bef39097e175d346788  gcc/config/i386/t-vxworks
  b80a5a4a8c8fc32ca318158abc98dc20  gcc/config/i386/t-vxworksae
! 5be10161ecd99a81be3fddf23b241d36  gcc/config/i386/tbmintrin.h
! d5291e116c443018e1216030feafdee8  gcc/config/i386/tmmintrin.h
! f0fc386eee6a4b1af7ac401b5953d7ca  gcc/config/i386/unix.h
! ca19bd2f3cd9e927a570a200c65b36cd  gcc/config/i386/vaesintrin.h
! 7114ff0996b0a54c2dac7ec1669390c0  gcc/config/i386/vpclmulqdqintrin.h
! 93dde80363f19f185da8d889a0911e27  gcc/config/i386/vxworks.h
! b30e48a45bdab627baf64c95406d6fd0  gcc/config/i386/vxworksae.h
! 5c7cc6337b41c31e519503ed1540d676  gcc/config/i386/wbnoinvdintrin.h
! 80fbe31a793273da3e0ab3193694b427  gcc/config/i386/winnt-cxx.c
! 3604f5e12a9c4f673ed83f7faeb072e8  gcc/config/i386/winnt-stubs.c
! 042a9ea0519058d57fe5c1f2916c0f59  gcc/config/i386/winnt.c
! a97f04e41321cf74328896db94e666d7  gcc/config/i386/wmmintrin.h
  627c3e925a142fb6d2a14368fb637f28  gcc/config/i386/x-cygwin
  bae69273c5e47d61e99558ca73c4fabd  gcc/config/i386/x-darwin
  12e09c6fa27c603c6db59fbfc2a6b089  gcc/config/i386/x-i386
! 7e6f7aa43053648a7da6e48996e80fd6  gcc/config/i386/x-mingw32
! e26e7e537f178b8651bf5fc1e1c6d99f  gcc/config/i386/x86-64.h
! f5031169f2b9079c298e48889447d9c3  gcc/config/i386/x86-tune-costs.h
! e29bad8882dfb63855f16e0eedb33719  gcc/config/i386/x86-tune-sched-atom.c
! 06f1b0a732977d2b0ca13878ea0b8fb8  gcc/config/i386/x86-tune-sched-bd.c
! 5e261e9f185547138b8a40979c98f2fa  gcc/config/i386/x86-tune-sched-core.c
! ada167b10e9882aac1fc974886765ef4  gcc/config/i386/x86-tune-sched.c
! 65ed755239f3a2aad7e1712779a787eb  gcc/config/i386/x86-tune.def
! f9560c967a8f5066fce51b512ecb3c39  gcc/config/i386/x86intrin.h
! b69f598a03f55b45103f842a6b9f3b8e  gcc/config/i386/xm-cygwin.h
! 1abcef7a7a2a44954e4f82e1e46ef874  gcc/config/i386/xm-djgpp.h
! 463613556d058ea76edecaebcddf2261  gcc/config/i386/xm-mingw32.h
! aae36c66ad5b5d20ec7bc1387579c5fb  gcc/config/i386/xmmintrin.h
! 6eb13e6dd0bad07a7d34d9208472fcc9  gcc/config/i386/xopintrin.h
! 5b10c125060ffa3c27550a2337f74eef  gcc/config/i386/xsavecintrin.h
! ea881d9949de59c92f2ce094d8d8175a  gcc/config/i386/xsaveintrin.h
! 1dffe80b09cee8128a11c7e387005848  gcc/config/i386/xsaveoptintrin.h
! 158f59c67f4e0a45fa3675b5465a4c24  gcc/config/i386/xsavesintrin.h
! 2915151178d5c447a728c3d9b41b9476  gcc/config/i386/xtestintrin.h
! 8c9c8784c5e0b417253408135b840200  gcc/config/i386/znver1.md
! d8cbdb89950b6e82671abbc9c7858d3b  gcc/config/ia64/constraints.md
! 746090e0a3f2553eb4348c679f597685  gcc/config/ia64/div.md
! 9e708b87b1cb293baf1f1a61c208dbd3  gcc/config/ia64/elf.h
! 2d66081a75bdaeab673f7765fc8406e9  gcc/config/ia64/freebsd.h
  89edd175b4bfe583ec3ee965092fd5d0  gcc/config/ia64/hpux-unix2003.h
! ed44ae7174633635e00db5c97366828a  gcc/config/ia64/hpux.h
! f0092b179fe8ee8f745274ce368503e1  gcc/config/ia64/ia64-c.c
! ec26b69dd9e7b95c80d416ef87562125  gcc/config/ia64/ia64-modes.def
! c2122814fbb8b6c3f957cc1f36addcce  gcc/config/ia64/ia64-opts.h
! 5a11ca44b462c1cd59dca4349fe07824  gcc/config/ia64/ia64-protos.h
! 394102c28adb4a185d846a09abe9f1c7  gcc/config/ia64/ia64.c
! f3990d607025d571a6c34ee6847ad67d  gcc/config/ia64/ia64.h
! 498c26ec0c8c98f212bce8638ca04ad9  gcc/config/ia64/ia64.md
! 736915b36ac3aa443ea1b735df1b3771  gcc/config/ia64/ia64.opt
  dcc77d7023d20b64688bf213c2d327b5  gcc/config/ia64/ia64intrin.h
  79bb509f9c530854593158558d5ce90e  gcc/config/ia64/ilp32.opt
! 2d072483f529900493ebb9a72859a8a4  gcc/config/ia64/itanium2.md
! cfd90ae0a0925c5cb2f08f543c34176f  gcc/config/ia64/linux.h
! ce23a9559ab35dfe01cc530ce1539aeb  gcc/config/ia64/predicates.md
! 4429bc360ed1e6269d0164af04744231  gcc/config/ia64/sync.md
! fff6c32b13fb8783102c2c66756c46fb  gcc/config/ia64/sysv4.h
! ed7e65f48a8879c197b96505b3e06433  gcc/config/ia64/t-hpux
! dc728ec00d3e89ec9327ed2427e9fba9  gcc/config/ia64/t-ia64
  67736f64800d10923b58be4e448620d6  gcc/config/ia64/t-linux
! 39ab139da9075cc2103f2d4b6bc2dfae  gcc/config/ia64/vect.md
! 3674465dd1066f7700683415fa2a5db7  gcc/config/ia64/vms.h
! 7ff5bb8c93691c449358ef243131b9d8  gcc/config/ia64/vms.opt
! a61bcdfd679ecbc290db9be44eed3409  gcc/config/initfini-array.h
! a639546f80d6404241131d93aa447f34  gcc/config/iq2000/abi
! fd82c8840236ba28364c5fd361b04a33  gcc/config/iq2000/constraints.md
! 494397d5db658e1ca8a562bed193cf25  gcc/config/iq2000/iq2000-opts.h
! f607cf08142d4c3c5963b436e94bf61f  gcc/config/iq2000/iq2000-protos.h
! 3d064ed588f4e5ed410206ffe3a4ace1  gcc/config/iq2000/iq2000.c
! 5aaab72669ce994ec49e565ebc51d15a  gcc/config/iq2000/iq2000.h
! a1a584261f3b5339595f34bb145a06c8  gcc/config/iq2000/iq2000.md
! 897972bf53e38546dcad290da3e653d4  gcc/config/iq2000/iq2000.opt
! d5c291edb3a8dd1cc4fbc7c0276b9fea  gcc/config/iq2000/predicates.md
! 99f0e48e9f40cb681714162c0bd47636  gcc/config/kfreebsd-gnu.h
! 48a2cacb357e10a06f3759372a7bab3f  gcc/config/kopensolaris-gnu.h
! fc9ed853e159ec5fdbee507b73cf65b4  gcc/config/linux-android.h
! dd343f31b5d05fd1bee5068883e9c848  gcc/config/linux-android.opt
! 4e86a0d07e19f92277a735208a416988  gcc/config/linux-protos.h
! c58166cc1b3d8bb26fdbde2698f7a1a0  gcc/config/linux.c
! a81fd12a2cff8aff504bce3e50d93c40  gcc/config/linux.h
! 0239615b64869ff86e975ea3156c567b  gcc/config/linux.opt
! 174a32856984a8021ed96747703015de  gcc/config/lm32/constraints.md
! 5b2b35047f7a4d509e316ea396f4c2c9  gcc/config/lm32/lm32-protos.h
! 9a9d7b2d1c58362412bd13ce802d536f  gcc/config/lm32/lm32.c
! 9fc2437f5ea0c6198103a098899e8c2a  gcc/config/lm32/lm32.h
! 848d753d4e0b274cbdb0ae355d4e88e4  gcc/config/lm32/lm32.md
! 4a2bebeb417bacec7908aa45d5563088  gcc/config/lm32/lm32.opt
! 12c6013e27ad90ab95864a785eb7c24c  gcc/config/lm32/predicates.md
! 7851d6868bac65182d3c5441efd43ead  gcc/config/lm32/rtems.h
  a9d1d80c40cc6eb8e9a32d54f82dae43  gcc/config/lm32/t-lm32
  660559cdac2b08e91486a9db7b4a2872  gcc/config/lm32/t-rtems
! 8118db3904941fa87a019b90231ec172  gcc/config/lm32/uclinux-elf.h
! 462dc32f41c7af383d94e6d595f6cbc8  gcc/config/lynx.h
! 6131c3b485cecce04b52f5afde5eb0d1  gcc/config/lynx.opt
! 08c82cff0807b3ab6a4091fb5f34603e  gcc/config/m32c/addsub.md
! 6a0475cc4263b471b642463e45aa23b8  gcc/config/m32c/bitops.md
! ca4b0dde38bb116e41ce838cf188d43b  gcc/config/m32c/blkmov.md
! caba4b7653aa402b2e15df04c5137fd3  gcc/config/m32c/cond.md
! 592355d9c94921042cb2b472963029cf  gcc/config/m32c/constraints.md
! 022adf8b375ad17567c1c8966572dfe4  gcc/config/m32c/jump.md
! bd60a71d6503f570d6609dcb787b02c6  gcc/config/m32c/m32c-modes.def
! e40dcc596787e0a745ebaa20d28b77b7  gcc/config/m32c/m32c-pragma.c
! ac71d3bb7ae7c818ece107baaec7554c  gcc/config/m32c/m32c-protos.h
! 5fa450bffbb436abf7df019ae859f632  gcc/config/m32c/m32c.abi
! 05fc45ef6d2826cbde2de8cb7847ab50  gcc/config/m32c/m32c.c
! 91eae7159aca2ddbdc6bdb70fdc4748d  gcc/config/m32c/m32c.h
! d63bedc8e5c93d0bec1cf19810311328  gcc/config/m32c/m32c.md
! 97d44396b7d4387a7816bb4e79936699  gcc/config/m32c/m32c.opt
! 1cbace078cddba3c1c8b06a08d10fa92  gcc/config/m32c/minmax.md
! fb4998edd4bfc6bb4491bbc9980abbfa  gcc/config/m32c/mov.md
! 5cb67686dd45cd460fb42e34ba5aa5f7  gcc/config/m32c/muldiv.md
! 119861ff7fd34b406a3c1f3c81d8461a  gcc/config/m32c/predicates.md
! ab112317d439d92d58a9234db59034e9  gcc/config/m32c/prologue.md
! 4526879a6599b2846745ddfe401dae46  gcc/config/m32c/rtems.h
! 8d1402824658f7980957f14168fa527e  gcc/config/m32c/shift.md
! 3df69004b8042c82e77603488aa19849  gcc/config/m32c/t-m32c
! 166d4d96e237ae7d1f70febabbb89419  gcc/config/m32r/constraints.md
! 75b1f91c315c405a4aac00a1398c7daa  gcc/config/m32r/linux.h
! 80d9cb50f7a395489d75d13e15ff7d85  gcc/config/m32r/little.h
! bdda127af531275d2a4e9aaba5412aff  gcc/config/m32r/m32r-opts.h
! 442d7b34d4b393535fdda053411f07ea  gcc/config/m32r/m32r-protos.h
! 5c415b83dcb57998fa4d2934c5a436ed  gcc/config/m32r/m32r.c
! 549f47359b815ba2571d5f9f96347038  gcc/config/m32r/m32r.h
! 54fa3eb06fb845063c95473f98552c5f  gcc/config/m32r/m32r.md
! 24e010cce9fd248845958a7bcc9b6e67  gcc/config/m32r/m32r.opt
! 11a8b3b89620e8125f197fd02cec6b92  gcc/config/m32r/predicates.md
! a9cfe0a7ff02678c40ae2fe8d03543e6  gcc/config/m32r/t-linux
! ec85e1e53d4d8ed06984fd613fb7d704  gcc/config/m32r/t-m32r
! 8e439f826c46c5d5e79a4aadc34e3447  gcc/config/m68k/cf.md
! 822bac95914c5ed72cdfc923f59160ec  gcc/config/m68k/constraints.md
! 9b97314b726c36037fae2c30ee93f7f2  gcc/config/m68k/genopt.sh
! 3372b8d08ebf4ec4e76a78b6b39987f9  gcc/config/m68k/ieee.opt
! 5857e37bab263ad636f8e1615788da21  gcc/config/m68k/linux.h
! e22dc54e45e8aab19e7c9a0a1a8855e4  gcc/config/m68k/m68020-elf.h
! fe2c9705a37967b52d778353c330441a  gcc/config/m68k/m68k-devices.def
! b121528a608e88d8db87fcdaba4ef27b  gcc/config/m68k/m68k-isas.def
! 407b2497d057e1932c4b69d90adc0ee0  gcc/config/m68k/m68k-microarchs.def
! 084f467ba14cb9991b2768bc29f31e52  gcc/config/m68k/m68k-modes.def
! fbc329acb40670cdba2996e517f6395b  gcc/config/m68k/m68k-none.h
! e350ed35ea321ab9503e7be7bec48f77  gcc/config/m68k/m68k-opts.h
! 440e308fb27660bb6db78f2de45c9689  gcc/config/m68k/m68k-protos.h
! f14c3387e266087caf28a28fc2953657  gcc/config/m68k/m68k-tables.opt
! f6c8f2c82cdf10e7a882e46d2557467e  gcc/config/m68k/m68k.c
! d57400c1898698286ae49edc8481b8d2  gcc/config/m68k/m68k.h
! 818ebd4eacd315102925ce086691f49b  gcc/config/m68k/m68k.md
! 427c6de2c460e01552c83d9acabfd8ec  gcc/config/m68k/m68k.opt
! 25cb4246da2904373e23977554341c2f  gcc/config/m68k/m68kelf.h
! a017ccceb5b72e9a294f7aa51d0dc981  gcc/config/m68k/m68kemb.h
  c0472199959f16fcb58702880954da6e  gcc/config/m68k/math-68881.h
! b848146ac3965b8bf729f54ef3b28338  gcc/config/m68k/netbsd-elf.h
! 6b6d7ba64e99a548df82075fc2393fce  gcc/config/m68k/openbsd.h
! 45ff97e98a566ebe0dca2ec90b6b7cf2  gcc/config/m68k/predicates.md
! c2ff0abc3ac0c076bd173c7731758a03  gcc/config/m68k/print-sysroot-suffix.sh
! 670676be7905d1c94cbc57e229195612  gcc/config/m68k/rtemself.h
! fe2934fd26da4b42e5e64503d91827c2  gcc/config/m68k/sync.md
  19d5ed41f3394c9423ff3afe64804076  gcc/config/m68k/t-cf
! 16ba32f1f18d329c72242df155f6624c  gcc/config/m68k/t-linux
  baa4595148bafa6426b8d665881ced45  gcc/config/m68k/t-m68k
  c8278c25339f71d746d91a193efd6cea  gcc/config/m68k/t-m68kbare
! 43efb508cf4297d06381cec1ca9ca0c4  gcc/config/m68k/t-mlibs
  0fd519d41689e5af998ca53a2f11e7d2  gcc/config/m68k/t-openbsd
  2919d876e31e6c4e0955d8cd4be5ce28  gcc/config/m68k/t-opts
  2899d62cd61c46fe504594a232959581  gcc/config/m68k/t-rtems
! fd887cf37be83719b23d5c8f3983bb45  gcc/config/m68k/t-uclinux
! 022b871eb529ae883e7c5e70c760db68  gcc/config/m68k/uclinux.h
! 1fcaa16e654cb0e0f3303ece68ec5929  gcc/config/m68k/uclinux.opt
! 304bd303c35f635dc0a4c380daed5802  gcc/config/mcore/constraints.md
! 74b6f9835467b26da020f0b5f91ee739  gcc/config/mcore/mcore-elf.h
! 2c920b7c593f8585d1673b6a0cd2df90  gcc/config/mcore/mcore-protos.h
! 7ea3ef152723b7ea92c2d0ae47197800  gcc/config/mcore/mcore.c
! 554e90f416d329481aaf2350be1acd32  gcc/config/mcore/mcore.h
! ef5fb593c62160b2bce44988a8775ac5  gcc/config/mcore/mcore.md
! 819ddcf99b4ad74c73db6e2e45fd89cd  gcc/config/mcore/mcore.opt
! b2f55c84cd3cc650ad565a1bbc0dc189  gcc/config/mcore/predicates.md
! 35db97201d9fa652c2e5e525a67fd270  gcc/config/mcore/t-mcore
! 6974a811155d136582485bce1a3910e0  gcc/config/microblaze/constraints.md
! 0cbd8849f592883927457a4485d8ca50  gcc/config/microblaze/linux.h
! 45f8cd6304cde98283f35e5bd0b4dc69  gcc/config/microblaze/microblaze-c.c
! 2ea22fe41ce08d5be533ef39a345e767  gcc/config/microblaze/microblaze-protos.h
! 6a13d7f2816c38dadb05f697d167467e  gcc/config/microblaze/microblaze.c
! 6f15b084c839d3d363190ae5e33b42b7  gcc/config/microblaze/microblaze.h
! 06bac99a3669950d6d4d06d13f58a98e  gcc/config/microblaze/microblaze.md
! d46cc7b6bf50626a18b013cf91b95980  gcc/config/microblaze/microblaze.opt
! 4774e593532c00e5db9f4bd664748cc5  gcc/config/microblaze/predicates.md
! 6967a6138c09c4f797387e284c49027c  gcc/config/microblaze/rtems.h
! 546448321c05e68d7ea37549170b9660  gcc/config/microblaze/sync.md
  17818a25ae3112098cd91d698e37f0f7  gcc/config/microblaze/t-microblaze
  63ccba4e7f745d36609d7c129bac6288  gcc/config/microblaze/t-microblaze-linux
  a8b08640136e3e7712d2278eb84c21d9  gcc/config/microblaze/t-rtems
! 3e2d3519544a3e508c31efa521c8c727  gcc/config/mips/10000.md
! 02514249008b2610bc5f6062eea507d0  gcc/config/mips/20kc.md
! 72f9bce19239841818f9919e2611e6f5  gcc/config/mips/24k.md
! 19f6ef12785d574d02fecf92cb0b6da6  gcc/config/mips/3000.md
! 791079a216212137d796a5bbb81e29ff  gcc/config/mips/4000.md
! c903f0aa09ea4b606e151f12a0488e07  gcc/config/mips/4100.md
! c99da04fa4acff4300487994bc45a8ba  gcc/config/mips/4130.md
! 09c94d99fc4eb45a813c93ea93083aca  gcc/config/mips/4300.md
! ea6b55d37380559ee2954a939aecfef7  gcc/config/mips/4600.md
! 68589164d83b1b3b39cea9d484335538  gcc/config/mips/4k.md
! b7ccb582a545bb1a1a8a2a933cf0d5b7  gcc/config/mips/5000.md
! 6ba2109ce6ab7b7aa699b52c4a153519  gcc/config/mips/5400.md
! 99f60a68990e257ce07655584ffdbf94  gcc/config/mips/5500.md
! 56567cb49626f8fe4ee95520fcc5f36f  gcc/config/mips/5k.md
! 462a7d97d8fff8161e60ba62151321ad  gcc/config/mips/6000.md
! 549fa6b37c8ba4e2722f3adca74c6553  gcc/config/mips/7000.md
! 67d4d5b7b1d5cf0923b0bec0003ddf18  gcc/config/mips/74k.md
! c030964375d718e8a4e8b6a464021516  gcc/config/mips/9000.md
! ec6e9cbded595f5822d86ad9d797d5ae  gcc/config/mips/constraints.md
! 24d987577a74c9948982a32676c32a43  gcc/config/mips/driver-native.c
! 73ac9c21905f3cdb026d750655947923  gcc/config/mips/elf.h
! f0177c0dd11091231685cece7776386b  gcc/config/mips/elfoabi.h
! 23a296be55427a1aa3043e19a16023cc  gcc/config/mips/elforion.h
! 5a62256a78954ba3026e3982cfcb8a85  gcc/config/mips/frame-header-opt.c
! 7c885bf20ae6634a8b15a4be261bf80c  gcc/config/mips/generic.md
! 707136b4f9c5f3b64096b716b61b8a8c  gcc/config/mips/genopt.sh
! 14a6adef11c23a5385add7b7e445cdb8  gcc/config/mips/gnu-user.h
! ad1165399d305ddedc71bbb658cab33d  gcc/config/mips/i6400.md
! cca83e031747b7db0c1eba4f5d763778  gcc/config/mips/linux-common.h
! e3b9f32258bb915b483ca9221931f6a7  gcc/config/mips/linux.h
! cf972a38e8a55ce313795261d1968515  gcc/config/mips/loongson.h
! 07a0126bcfcbeb0f5a9a4aec9da01532  gcc/config/mips/loongson.md
! dc0827c98528bb131751ae9d2603294f  gcc/config/mips/loongson2ef.md
! 9f22e478ab529fdab61a2e3f1f93ee56  gcc/config/mips/loongson3a.md
! c8137e404aef168f6466427b4cfad4f8  gcc/config/mips/m5100.md
! 2a625054040d8588867ebae043288029  gcc/config/mips/micromips.md
! d3bafaf1862b555af722f654b783b244  gcc/config/mips/mips-cpus.def
! c693bad8967c6a974916339316c7668a  gcc/config/mips/mips-dsp.md
! 06e1ee4b3a1cbd682e2cfcc37461ac0b  gcc/config/mips/mips-dspr2.md
! d7671591e593eeffa68782d039dab8e0  gcc/config/mips/mips-fixed.md
! 97be5f644aa20eb5cb2b0d4c19f98c82  gcc/config/mips/mips-ftypes.def
! a408470a3ee55d897ba31a2adeec99a3  gcc/config/mips/mips-modes.def
! 5ad1cde84ff9ab54e2f84033d7e2f80d  gcc/config/mips/mips-msa.md
! d3970ea90839dc5e5f82de5e2464e84c  gcc/config/mips/mips-opts.h
! 977c4f62ae50ceafb5866f0df04ecbd2  gcc/config/mips/mips-protos.h
! 4460cfa5c224c98a10dd966058b273c7  gcc/config/mips/mips-ps-3d.md
! 7eebc68d59fccfedc66378c88af82988  gcc/config/mips/mips-tables.opt
! 60908653841dc264d1b60e94ae90180c  gcc/config/mips/mips.c
! f6570a77acd7612e32159fa659e0d834  gcc/config/mips/mips.h
! 459492919c9ce92760004ceef67ecd50  gcc/config/mips/mips.md
! 0bf4e4b4917fb943cc94b1fc1516793b  gcc/config/mips/mips.opt
! 0b607da461fe0e2553f8961acfca2603  gcc/config/mips/msa.h
! 34601028461e6dc96f72bcdce4cc91df  gcc/config/mips/mti-elf.h
! dc267a702f8a347aa000fe8afa4fbb27  gcc/config/mips/mti-linux.h
! a66b0be3a601f303a942cb4d72784675  gcc/config/mips/n32-elf.h
! 31df82d7d07ce4a848b6e74a535a4187  gcc/config/mips/netbsd.h
! 324d0d1c0bac417f2abba12aa9961229  gcc/config/mips/octeon.md
! 583e8ac9fb9c92a5a30fa6f8b926c2b2  gcc/config/mips/p5600.md
! 129cf3204e8517e362771b4275a12103  gcc/config/mips/predicates.md
! 2e851bef33ae1e09c10d160fb53a4563  gcc/config/mips/r3900.h
! 150cd875516ad55869754ecdfad4e007  gcc/config/mips/rtems.h
! c8108f6f3bef563171f89d9688ed4eb9  gcc/config/mips/sb1.md
! e73a195fa45190a7af3ed287616d35b5  gcc/config/mips/sde.h
! caf761cb7b5770b8cb19b884cbe99f46  gcc/config/mips/sde.opt
! aea49a6ce1d07d749a7f371668867da6  gcc/config/mips/sdemtk.h
! 49f70f3fbdd22cc0975ddd97dfe23982  gcc/config/mips/sr71k.md
! 2582f9dca84d0b5343758b5f179e31a9  gcc/config/mips/st.h
! 62b075bdb562c1945c23cc2055c56b1a  gcc/config/mips/sync.md
! b8829b896fb04eced084b45c0906e360  gcc/config/mips/t-elf
! c0c27d06d9adee22c73b4d8b54339f95  gcc/config/mips/t-img-elf
! 3cd973124f2252537716a33c3dc564a8  gcc/config/mips/t-img-linux
  f99fd825138aaee60804b8915e20d22e  gcc/config/mips/t-irix6
! 9fed189614c9d608861c0bdd50366a18  gcc/config/mips/t-isa3264
! dc60bbd6c7b8a5df0819a5363ca9ce66  gcc/config/mips/t-linux64
! a1c3d50b248aff19a2a4b0ecd8f384e2  gcc/config/mips/t-mips
! 700a31c09eee42083114c9053b9fe7d9  gcc/config/mips/t-mti-elf
! 22224e076e3d516a700e6687db228fd9  gcc/config/mips/t-mti-linux
! 5faa75032766679db26737e48237d163  gcc/config/mips/t-r3900
! d78b7c6e650c0bfa3ebca64bff807680  gcc/config/mips/t-rtems
! 3ce87234da2bdff13be0a743d59f6d12  gcc/config/mips/t-sb1
! 723dd876cb7ba00f06867be99f7de1ec  gcc/config/mips/t-sde
! 2b3cae70797cfea30d8f9727a69c1ac6  gcc/config/mips/t-sdemtk
! 80230e7376a150021d429b7bcef4ccde  gcc/config/mips/t-sr71k
! e38d4fe9396bb9fc254ffdb3b89471ea  gcc/config/mips/t-st
! 98d97927af8ea86ac20e688cd9971e8a  gcc/config/mips/t-vr
! 5a57ead63f001c5285d8d655fface89f  gcc/config/mips/t-vxworks
! 2b3c52e15b757af3dea8a8afea47e5b0  gcc/config/mips/vr.h
! 107ad74f44c8fb49c283ac1843dd1835  gcc/config/mips/vxworks.h
  28d4de1043946a571cca5f03b486aafe  gcc/config/mips/x-native
! 43dea0304da583380ef5bef38a77b5df  gcc/config/mips/xlp.md
! 27f0d309a4d0fe26eb748d270868d7b7  gcc/config/mips/xlr.md
! f8f16c778f2b0ea297f792dea68beb65  gcc/config/mmix/constraints.md
! c8b7bb47b5a7e634ac80a609aca7035f  gcc/config/mmix/mmix-modes.def
! dd08dc51177f66d29dc7b40117f91098  gcc/config/mmix/mmix-protos.h
! aa495e8c4b1843f00cb80559711a7b32  gcc/config/mmix/mmix.c
! fe283d80b640e987a161775bd5a3600a  gcc/config/mmix/mmix.h
! 1d1c6662d19ed01a26d90a0a26865514  gcc/config/mmix/mmix.md
! c8e1f5b862da3f51b5dde9cb04b3a170  gcc/config/mmix/mmix.opt
! 29a28773d84eb8da3471d8a538e40e8c  gcc/config/mmix/predicates.md
! 51c4cbaa97e138f2abdf881cb03ea188  gcc/config/mmix/t-mmix
! b92b2a467409e30a28393a703711d076  gcc/config/mn10300/constraints.md
! 17b4f354c21535e8cc4f2082f3410c3d  gcc/config/mn10300/linux.h
! e582156dda8f851496fe95fb0eed2770  gcc/config/mn10300/mn10300-modes.def
! fe9f49eb32acdcc98336595e292dacfa  gcc/config/mn10300/mn10300-opts.h
! 4b9cc186a410dccd350136a43acf1aaa  gcc/config/mn10300/mn10300-protos.h
! b89e6c6d9659280536d53972806c1340  gcc/config/mn10300/mn10300.c
! cdbaff467d8db988bb072c905cae17a9  gcc/config/mn10300/mn10300.h
! feb378d3026035074dde07101fa962a8  gcc/config/mn10300/mn10300.md
! 9783b1cef7f76fcc7ba6f8cbe3bd93e0  gcc/config/mn10300/mn10300.opt
! 3a69ef1a14a118f756e2b9193c22959d  gcc/config/mn10300/predicates.md
! d7cbda767d42b922928adef4cc90eb45  gcc/config/mn10300/t-mn10300
! 51afa2076e144264b7943bf429ef8be2  gcc/config/moxie/constraints.md
! 8937cff6778def8dbae5ec986cdff71c  gcc/config/moxie/moxie-protos.h
! 9682e7dc1ac30e737210cccbac9a8707  gcc/config/moxie/moxie.c
! 8d6e2cf81430289738a08d68b555c09d  gcc/config/moxie/moxie.h
! 2a65ac587173968a31aa9f2f4497b0eb  gcc/config/moxie/moxie.md
! ca7c2edbcc5e0e90c6aa76bb97e65e0c  gcc/config/moxie/moxie.opt
! b110c3ebcfc83fde2891d71ba4736ddc  gcc/config/moxie/moxiebox.h
! a42f5aa29dd31e2583f5b5f1c1aa20cc  gcc/config/moxie/predicates.md
! dd7af32ac72c67ec37560a347272da7a  gcc/config/moxie/rtems.h
! 11d6afc1dfafaddfbe78d810bcd1858d  gcc/config/moxie/t-moxie
! 2953484de892032500e250ea6bf87f1a  gcc/config/moxie/uclinux.h
  f276505b774e975b88b6c90362783e73  gcc/config/msp430/README.txt
! e7578036df845d8f781165cb21aa1c16  gcc/config/msp430/constraints.md
! 855314d029d30ad4c8c0f78f6ab094f2  gcc/config/msp430/driver-msp430.c
! 57c7f5e4279fb452b82778740787ed79  gcc/config/msp430/msp430-c.c
  e081143def3cf3a59cd1181fc9162d41  gcc/config/msp430/msp430-modes.def
! 8878f1ddec78abdda73654f5d17154e5  gcc/config/msp430/msp430-opts.h
! 7badc81f4dbcb1a998b653574498a495  gcc/config/msp430/msp430-protos.h
! d05d2358f4bcbb14417487a53eea159a  gcc/config/msp430/msp430.c
! 0c6a824d2d6dd154ef0c22e1694b3cd2  gcc/config/msp430/msp430.h
! a1e2bcd4d972417a960fbc60a7706cce  gcc/config/msp430/msp430.md
  9d06cb84c3cb0394a1611444eafc29a8  gcc/config/msp430/msp430.opt
! f8a874759fde9394bed9b6c5abd022c8  gcc/config/msp430/predicates.md
! 3f712d0a446dd2f894c5705d7f7bb6da  gcc/config/msp430/t-msp430
! ecf992dc03abe68735e1644368df2fbc  gcc/config/nds32/constants.md
! 78c2ba313b148d77d7a1c2351824427a  gcc/config/nds32/constraints.md
! bc7558ec01be9caa08df84fbaaabb267  gcc/config/nds32/iterators.md
! fab125337980645f4f8d74c68bc587e7  gcc/config/nds32/nds32-cost.c
! b81feffed2580d61f578049c94376778  gcc/config/nds32/nds32-doubleword.md
! b325a564c9283cd8b48f924ed8a96d8c  gcc/config/nds32/nds32-e8.md
! 50ca414eb16348c0e8863f8de4c518d2  gcc/config/nds32/nds32-fp-as-gp.c
! 93e494da06bac7f0141248527c360472  gcc/config/nds32/nds32-fpu.md
! e000080e867b6767ea8d7dd0a037eb1d  gcc/config/nds32/nds32-intrinsic.c
! 209a331b877d87c269b234a5b63a7e2b  gcc/config/nds32/nds32-intrinsic.md
! efdc2f196f73ada07eb875a3d34c9847  gcc/config/nds32/nds32-isr.c
! 4df98585a9980b1bc5017241941876e3  gcc/config/nds32/nds32-md-auxiliary.c
! 50d5454bcfedca38bc3da7a74c05d85f  gcc/config/nds32/nds32-memory-manipulation.c
! 4f25d88c6c189e1a8a44d36fcffd3321  gcc/config/nds32/nds32-modes.def
! 3c3020c7a0e8a47291a4a17753519816  gcc/config/nds32/nds32-multiple.md
! d46e4cc67c9f53d693a2972d98c70503  gcc/config/nds32/nds32-n7.md
! a3f10ac7f958c8bbd0aaccb479ef8d38  gcc/config/nds32/nds32-n8.md
! ee212f2c16ea9c6985d325c20fadcb8b  gcc/config/nds32/nds32-n9-2r1w.md
! 97ec913b601e8271c0b6e8c349ebffa4  gcc/config/nds32/nds32-n9-3r2w.md
! faa1c468d3b5d36339dcc334f5f28525  gcc/config/nds32/nds32-opts.h
! 36245435da695d7337c9bba98b0977ee  gcc/config/nds32/nds32-peephole2.md
! 65239021860a4f8eeb54f1d4e25b0ce5  gcc/config/nds32/nds32-pipelines-auxiliary.c
! b93457f24daa45d4497164ebb1449d38  gcc/config/nds32/nds32-predicates.c
! 50b4338fc950d30a7408e9375a53ee60  gcc/config/nds32/nds32-protos.h
! 42d99ad0db11d4c46094c7437698d086  gcc/config/nds32/nds32-relax-opt.c
! f15eceee1e73a381ea225e9dc417070e  gcc/config/nds32/nds32-utils.c
! 46e3096f48cc740b82ce89b59759359c  gcc/config/nds32/nds32.c
! 3e88b776092bac7ce7ec1b5b15de54bf  gcc/config/nds32/nds32.h
! 94e0547ac1ea5328dce2c572b08e54a5  gcc/config/nds32/nds32.md
! 44a6507ab606b8c2eff170fb963f93a7  gcc/config/nds32/nds32.opt
! 75d2730aac1c4b62b002a6f47e5b9747  gcc/config/nds32/nds32_intrinsic.h
! 34824023df4098270621f511441b7189  gcc/config/nds32/pipelines.md
! b23e710e9e863beb0508c41e9483f6c4  gcc/config/nds32/predicates.md
! 31224824cc0dae336677c1b08aa2aa8c  gcc/config/nds32/t-mlibs
! 02fd7461eed7429e544b81833d2bb8a3  gcc/config/nds32/t-nds32
! 9637554707adbe0281aadf2a209d3f3c  gcc/config/netbsd-elf.h
! e9eb3c3423a5c26b92e25433eda5a589  gcc/config/netbsd-elf.opt
! aa3fd9fa8274241cb74f84ac740d10bd  gcc/config/netbsd-protos.h
! 6de76bba1a683c013316108a58eea701  gcc/config/netbsd-stdint.h
! d6a578275d7200f79c3fd438f268794d  gcc/config/netbsd.c
! 5a20e131780560adb2aff666492c9931  gcc/config/netbsd.h
! 1e3ed0c0b4029e62aa6ae952bcf940fc  gcc/config/netbsd.opt
! 023c371c4b564e2f31af9d4a281c097a  gcc/config/newlib-stdint.h
! 667818869169777e62f2583a73652d21  gcc/config/nios2/constraints.md
! 7cd7ef1a5fc62f7e55f469a613f8392e  gcc/config/nios2/elf.h
! 6251d08001c2d0c0b60f6b4ff86d2b74  gcc/config/nios2/elf.opt
! 86ec7bacbda0efb3a1007e08dc9f38b3  gcc/config/nios2/ldstwm.md
! b3eb9648a68642546e45d87fe706bceb  gcc/config/nios2/linux.h
! d4e55140c0205e07ae8fa4a78f88a83b  gcc/config/nios2/nios2-ldstwm.sml
! 572b9871f51d6d11d7127229a912dbdc  gcc/config/nios2/nios2-opts.h
! c276dcb0066eb8dda51c63bb309911a3  gcc/config/nios2/nios2-protos.h
! 0fcebbcaa767f3e7c962b7e979d50458  gcc/config/nios2/nios2.c
! 470f24d5d613595c70a944edd289ce90  gcc/config/nios2/nios2.h
! 3e3e2e27bf5b1931e91a5c5000a3d681  gcc/config/nios2/nios2.md
! 074a516300d973b8b84b30106912bdc4  gcc/config/nios2/nios2.opt
! eb7ff346859c91686790feb8b0f3af36  gcc/config/nios2/predicates.md
! 584f13570ccea1e30d6a03c1a4630aa2  gcc/config/nios2/rtems.h
! 402aaf769784fc67a2b1b7f8cf0db15d  gcc/config/nios2/sync.md
! 65dd7973a5b3d1b9b5af0543b5e16d34  gcc/config/nios2/t-nios2
  d835d08884a2846e70bef505767bd3f1  gcc/config/nios2/t-rtems
! 9999e0f5e040c506a656b88182bfe128  gcc/config/nvptx/mkoffload.c
! c2aabf1e8738380511a66426506fe906  gcc/config/nvptx/nvptx-modes.def
! cf6afd6e66196a63cff72f8f4103f2e3  gcc/config/nvptx/nvptx-protos.h
! de3e2635aaa7a4d8f2d5b89f8518aa01  gcc/config/nvptx/nvptx.c
! 9c28d59833b8c66542a24c37928678a2  gcc/config/nvptx/nvptx.h
! ebc715cb9ed58ce18cd0925fd8cdc6f0  gcc/config/nvptx/nvptx.md
! 4c5703010962b9b7aa29775f7cdc7b8d  gcc/config/nvptx/nvptx.opt
! 46f767d99633cd4dd41b5480d7bd74a8  gcc/config/nvptx/offload.h
  161bfe9f99d4d18fdb67553220ba175a  gcc/config/nvptx/t-nvptx
! e536f4aca67831e6e9ed3c88f6284662  gcc/config/openbsd-libpthread.h
  3d4a70d0decf61f1fba17df545cea7f5  gcc/config/openbsd-stdint.h
! bf47379eb4fcf0f1a7cf7a262211ec1a  gcc/config/openbsd.h
! 57cda714d162609695c7bb8f78201a74  gcc/config/openbsd.opt
! 91515c3ede069bdc47bcbf8cfac93b66  gcc/config/pa/constraints.md
! 911482f20af714010db69e0c2e14ee9f  gcc/config/pa/elf.h
! 071f8c2f6576cec7a502039a6a49568a  gcc/config/pa/pa-64.h
! 4fe637faf3be1d6f1a350c30cdd2f64e  gcc/config/pa/pa-hpux.h
! 345d85e7d12e601050d507282be42b9d  gcc/config/pa/pa-hpux.opt
! 1499b6c73a6cc794b13a943ff8c778f4  gcc/config/pa/pa-hpux10.h
! b34b7dc91a3c5351134da179392ffd84  gcc/config/pa/pa-hpux10.opt
! 9bc52efb2e806857f25d6c65cee59705  gcc/config/pa/pa-hpux1010.h
! 05faaca227bc75b3b11382b1672ae9a6  gcc/config/pa/pa-hpux1010.opt
! c3da988d413c0bc649636fa7a67b78e2  gcc/config/pa/pa-hpux11.h
! b618c9b884f78ed041a9000a7e2848fa  gcc/config/pa/pa-hpux1111.h
! a7a18454ea8e20abea0987299b179374  gcc/config/pa/pa-hpux1111.opt
! 3d2ee56c35ff78d7dfcd41ba3cb89051  gcc/config/pa/pa-hpux1131.h
! 9b5dcd7f3770f0cb685743e52c1a5285  gcc/config/pa/pa-hpux1131.opt
! c3c2f001a611377392194353cc0b4b69  gcc/config/pa/pa-linux.h
! 7792b9b6c6fb4714e27d72c171139650  gcc/config/pa/pa-modes.def
! 2f447d057c80970e98a0e5bff4156264  gcc/config/pa/pa-openbsd.h
! 878fe335d079c0655b69d2d053f2045b  gcc/config/pa/pa-opts.h
! 425639b4b75ab27417ae117721b1e6b8  gcc/config/pa/pa-protos.h
! 9585481ad4948f8e38783e0d07be9afc  gcc/config/pa/pa.c
! 65d64c2f16f7133685b071261e34ea34  gcc/config/pa/pa.h
! d617c9d269c12c71db0750263bab9324  gcc/config/pa/pa.md
! 492d54774394fa0ab4ac0c026eaebaac  gcc/config/pa/pa.opt
! edceee819d952203ca91a851382557c3  gcc/config/pa/pa32-linux.h
! 3de55e8c03212e88b39a5c5049f268fc  gcc/config/pa/pa32-openbsd.h
! c3efbff4395d6048661485fbd826a9cd  gcc/config/pa/pa32-regs.h
! 17c1add7a56fcb3b6e34dfc754bd0fe8  gcc/config/pa/pa64-hpux.h
! d68eeb6f936b9e4f7780448d8a3cf6e4  gcc/config/pa/pa64-hpux.opt
! 0c22f63b1a5050b2893817db5a60880d  gcc/config/pa/pa64-linux.h
! c6570b2163bffc07668c71eeab8950a5  gcc/config/pa/pa64-regs.h
  a9a6afd79b827565ffb8de8330b4cfe6  gcc/config/pa/pa64-start.h
! 0552d7b225011009ca6e4001f87be0bf  gcc/config/pa/predicates.md
! 5129f15576b7cf477572623664be3f60  gcc/config/pa/som.h
  4104beb84cb7f3a8a5915652c3da66c5  gcc/config/pa/t-dce-thr
  6fd25f8c665d2d7390ea94c01dcb8e34  gcc/config/pa/t-linux
! 307714ce1ea688eab99afac964472807  gcc/config/pdp11/constraints.md
! 782f85b0f3974247428e10fb95046ff5  gcc/config/pdp11/pdp11-modes.def
! 1bb2d54c7c807058eff6301e21ded9f2  gcc/config/pdp11/pdp11-protos.h
! 94709c50d41cae2be002acb04ffe3a58  gcc/config/pdp11/pdp11.c
! 2c13c3f61b3179c5cf790c3d42d0e4a1  gcc/config/pdp11/pdp11.h
! 284cfb28bc9419caae3d3cf12171f2cf  gcc/config/pdp11/pdp11.md
! ec2f9f22e371d7047f74545dd9c7a812  gcc/config/pdp11/pdp11.opt
! e5ed624c4483cd5981279f94fcf52438  gcc/config/pdp11/predicates.md
! 91424b5ecb18b9e0a1be6e1d77398b75  gcc/config/pdp11/t-pdp11
! 59a1bd04e0930196d05d05a2da085cf5  gcc/config/phoenix.h
! aef64703adcaaecc1abe254757d9a9fe  gcc/config/powerpcspe/40x.md
! 908770472fdc9b01a1690ca0b3e82796  gcc/config/powerpcspe/440.md
! 70dd42f878ddf939763fe8c7d7134620  gcc/config/powerpcspe/476.h
! 6e77d3efd86ade858be44e92e4daa1fd  gcc/config/powerpcspe/476.md
! 53297879f8d7224ef490523235c4d401  gcc/config/powerpcspe/476.opt
! 6201867b9e4ed0100dde24f8c2b9f589  gcc/config/powerpcspe/601.md
! 02f96a863f03179e8b451571350e4fcb  gcc/config/powerpcspe/603.md
! de58072215adaca453af7ad6dd069847  gcc/config/powerpcspe/6xx.md
! 7127692fc3d15e64f05e4c68bf16bd96  gcc/config/powerpcspe/7450.md
! b7298dd581a2c86875b8ff540efcf05c  gcc/config/powerpcspe/750cl.h
! e0041423c0a8674c4aae6fe623dad37b  gcc/config/powerpcspe/7xx.md
! 4d29816007b6ff4ee28ba1cc75994eb5  gcc/config/powerpcspe/8540.md
! c53b7109f18245563ea125f5b277d23b  gcc/config/powerpcspe/a2.md
! f9d7fead7b0af957b6771c65b7111b44  gcc/config/powerpcspe/aix-stdint.h
! ec2444a4d3d5f43be9d1a92642c67add  gcc/config/powerpcspe/aix.h
! f71df4dcd128ff24119871ce798b64b9  gcc/config/powerpcspe/aix43.h
! 96403f34fce4ef97357e7a79ce7877a2  gcc/config/powerpcspe/aix51.h
! a740672e11194097b7079bc14f770029  gcc/config/powerpcspe/aix52.h
! 6713a06371184f2d5be0e826ee569fcb  gcc/config/powerpcspe/aix53.h
! 409ecd3c847af5adcf0bf6180d0afeeb  gcc/config/powerpcspe/aix61.h
! dcae54b5112b4a35de3fee24152c08b6  gcc/config/powerpcspe/aix64.opt
! df4c72ca639cebff8a6d37332f7c0134  gcc/config/powerpcspe/aix71.h
! 3ab6bc8e099dac21ebecb1f5d5e13182  gcc/config/powerpcspe/altivec.h
! 1ddc654b1438b538832a0a1b73a681b2  gcc/config/powerpcspe/altivec.md
! b5c0d31db75d05e19a5a74e12deee5c2  gcc/config/powerpcspe/biarch64.h
! d24bfc688852ea2817f920c09cc312e0  gcc/config/powerpcspe/bmi2intrin.h
! 33a5f4f7292b1bb3ad8f66a4e3773c7e  gcc/config/powerpcspe/bmiintrin.h
! e02660970c8553d4280b3a5368a38b3a  gcc/config/powerpcspe/cell.md
! 6bdc2b3f07ed0adb0d140b7f6ba6aece  gcc/config/powerpcspe/constraints.md
! ff5233f615d6c5818780f20b908405f7  gcc/config/powerpcspe/crypto.md
! 6f69baba6d95bc0c59c9284dada56f53  gcc/config/powerpcspe/darwin.h
! 68c5ac4620de9a301f23da8bf0cb977d  gcc/config/powerpcspe/darwin.md
! 4ca90b03f871f9f94d714b3f7de5c299  gcc/config/powerpcspe/darwin.opt
! 02cde662e31624a94372cd3f24ff9c2a  gcc/config/powerpcspe/darwin64.h
! 2e190fdb5c98f026a07f3d6b7e16d5b4  gcc/config/powerpcspe/darwin7.h
! 4ab65ef9b15ad703cff18793652a4ceb  gcc/config/powerpcspe/darwin8.h
! d21b5b5b85a33095db1d7b774c71b610  gcc/config/powerpcspe/default64.h
! ee624f05558cb1a752c5c717f62898cc  gcc/config/powerpcspe/dfp.md
! efbcd292f2030e6ee2f2640a45c038d9  gcc/config/powerpcspe/driver-powerpcspe.c
! 44673a4fe02ebdd8ba8c7c538bcb6c0c  gcc/config/powerpcspe/e300c2c3.md
! a4d6fb8b1456d73891417c571dc1fad1  gcc/config/powerpcspe/e500.h
! 87a06844a2baf7aafee99a0dbaf357bd  gcc/config/powerpcspe/e500mc.md
! e015cc9858b8ab73aa4933a4c8652690  gcc/config/powerpcspe/e500mc64.md
! 284d5cdc9b2ff7b521b4ebe30fda9cc3  gcc/config/powerpcspe/e5500.md
! beba9a216d9a289d1c2c2f0568854209  gcc/config/powerpcspe/e6500.md
! 0e7c1a1e4c93cafd35684b21a20078c1  gcc/config/powerpcspe/eabi.h
! 8a7bb2cde1174595cfe3c49dad88548c  gcc/config/powerpcspe/eabialtivec.h
! caa8d36ab8d41a393dec0cc2a027719d  gcc/config/powerpcspe/eabisim.h
! ac6ec97a402c13c16f645e9e7a776ae5  gcc/config/powerpcspe/eabispe.h
! d5bf09cce396907ec38e3454b4a64d4d  gcc/config/powerpcspe/freebsd.h
! e5002abe4b00c1553b90fdc41731574f  gcc/config/powerpcspe/freebsd64.h
! 47859e64a7cf07710790d3caaf26c44b  gcc/config/powerpcspe/genopt.sh
! 87a444dbedd8198d68c636aa883ab054  gcc/config/powerpcspe/host-darwin.c
! b2b4a14ee19e5479a407cd7d891091f4  gcc/config/powerpcspe/host-ppc64-darwin.c
! 92e44d9f2093d7613dd3fa93be1c6bab  gcc/config/powerpcspe/htm.md
! ae8054933a0fe405ccb5ca88b6d82e20  gcc/config/powerpcspe/htmintrin.h
! cfa910812fa0658d89bd0bd0574e0a55  gcc/config/powerpcspe/htmxlintrin.h
! 3b65d0ee341bb5746a2eda6191f2ddf0  gcc/config/powerpcspe/linux.h
! 91dfe527914694baf6c22dd21cee960f  gcc/config/powerpcspe/linux64.h
! 3b0a9c590719c486ec897a34e9ce1184  gcc/config/powerpcspe/linux64.opt
! 799efe10ab55ec176ca10bc169bf0266  gcc/config/powerpcspe/linuxaltivec.h
! fb810581ccb4a9cd92481c40eabacafb  gcc/config/powerpcspe/linuxspe.h
! 56e7905cd5d58cdaa4e54fa40dc3e354  gcc/config/powerpcspe/lynx.h
! 0cc3c5f9101501b8253ce3176c3ffce4  gcc/config/powerpcspe/milli.exp
! b296450d9c83a30a90be93cd867661fc  gcc/config/powerpcspe/mpc.md
! ea90cbc50976c4e72a24cb87e8083dc1  gcc/config/powerpcspe/netbsd.h
! 3cb692c6d6947ea872988e948aa1b96c  gcc/config/powerpcspe/option-defaults.h
! 626be273b5530307d5031247053133de  gcc/config/powerpcspe/paired.h
! 23491bdda25cf1d52e33670d3351ea8e  gcc/config/powerpcspe/paired.md
! 5d96fa8e881d2389131654296a57d53c  gcc/config/powerpcspe/power4.md
! cd035a2857a5f4f19918442de10760aa  gcc/config/powerpcspe/power5.md
! 90dbc62364e5becc01e5e67b687598a8  gcc/config/powerpcspe/power6.md
! 9417c696b8bf545c9802e12f3b5ba3ed  gcc/config/powerpcspe/power7.md
! c7c2e1302b2aa10af0586ce0f1bd3d3d  gcc/config/powerpcspe/power8.md
! d1a86e8e715c825f545e04a79bbdc683  gcc/config/powerpcspe/power9.md
! 2030330d31bf3008ae41f6ee684c5499  gcc/config/powerpcspe/powerpcspe-builtin.def
! 86c02e221fefbde11894ad74fb8ef78e  gcc/config/powerpcspe/powerpcspe-c.c
! 6edfcac5b8bc91ea4651193b4ab137c1  gcc/config/powerpcspe/powerpcspe-cpus.def
! 8ec6d7b8eabe3794bf1ab38f06e84cfc  gcc/config/powerpcspe/powerpcspe-linux.c
! 19081b677bc43d66fc116ddfca06acc1  gcc/config/powerpcspe/powerpcspe-modes.def
! 601af2c50bee02c3091990bf1c51721d  gcc/config/powerpcspe/powerpcspe-opts.h
! 5f7c6215ba96134b2dc6ca6179606f8e  gcc/config/powerpcspe/powerpcspe-passes.def
! c455043d336614110f716809b5570f5e  gcc/config/powerpcspe/powerpcspe-protos.h
! f11662155e694ec91248b20af8962d16  gcc/config/powerpcspe/powerpcspe-tables.opt
! 31215490ee61e7356616e7630065057c  gcc/config/powerpcspe/powerpcspe.c
! 7a296753ed129a3590bfcbd0cdda6d60  gcc/config/powerpcspe/powerpcspe.h
! 224340e1a27bd1469ab897a13c550e45  gcc/config/powerpcspe/powerpcspe.md
! 210ba97c01cc6741c27e6cae820a2964  gcc/config/powerpcspe/powerpcspe.opt
! b1031f356815af17dfe6c35485de1dc3  gcc/config/powerpcspe/ppc-asm.h
! 52b2cf4477f8994c94452259d5e230c3  gcc/config/powerpcspe/ppc-auxv.h
! 342969245a87fc2fa15e020a788bcb14  gcc/config/powerpcspe/ppu_intrinsics.h
! fb2fed36a649b675b6064fd90e0322d4  gcc/config/powerpcspe/predicates.md
! 2e7cde4dbcb1e79d1ca80bb94694388b  gcc/config/powerpcspe/rs64.md
! 77dcbea99237168221d66d5e28d94b8f  gcc/config/powerpcspe/rtems.h
! f9d1e30c3a4ecafd9023b44f03a49fc8  gcc/config/powerpcspe/secureplt.h
! 0768452d77090937b75fe2a418328312  gcc/config/powerpcspe/si2vmx.h
! 5c0e21f13b9b00c57e532ba4c087ccec  gcc/config/powerpcspe/singlefp.h
! f2db9abd90e24dcfea7172b17ff182b6  gcc/config/powerpcspe/spe.h
! 6cfb36b63f195835f7b246a434b8a3c2  gcc/config/powerpcspe/spe.md
! 631712ae53debb9880f02833fae87371  gcc/config/powerpcspe/spu2vmx.h
! 557ddcbe2d418c3925a108736e36c434  gcc/config/powerpcspe/sync.md
! 22bf08d30b5bcef83323e916f69cfb07  gcc/config/powerpcspe/sysv4.h
! bd2774bdd75a8570bdbbc310006f6124  gcc/config/powerpcspe/sysv4.opt
! f053f8229694372d55ea78dd4f0c5c28  gcc/config/powerpcspe/sysv4le.h
! 56aec008c6e4a879c06afbe3660efdae  gcc/config/powerpcspe/t-aix43
! c059d4a16085cad58f34946aabe2cc11  gcc/config/powerpcspe/t-aix52
! f3250b9720d1149346f1ef8e21b52ea9  gcc/config/powerpcspe/t-darwin64
! 636250eb91fc5dada4804efcd525fc02  gcc/config/powerpcspe/t-darwin8
! 0f970d99602398f4e297682f8a2bc0f7  gcc/config/powerpcspe/t-fprules
! 52a22f94153362807c445e9976a570a5  gcc/config/powerpcspe/t-freebsd64
! c6862fa22502dccb9b918519c1ac7c9c  gcc/config/powerpcspe/t-linux
! 09074da98601bede52aaa47efaad11a5  gcc/config/powerpcspe/t-linux64
! 71c0a0470047f0171a3bb4c483eb2b72  gcc/config/powerpcspe/t-linux64bele
! 489699b655594f05bae0b429fd261edb  gcc/config/powerpcspe/t-linux64le
! 60f26523152f6a061a12cb17e987de12  gcc/config/powerpcspe/t-linux64lebe
! 842c9f08473c37545bbd5dadc2c7a693  gcc/config/powerpcspe/t-lynx
! df20065581cc7ba7c99f5862666e2bf7  gcc/config/powerpcspe/t-netbsd
! eeae5ddc3491c0ccdb2efe31d25060ba  gcc/config/powerpcspe/t-powerpcspe
! cbd329e4bf58f31678edc54214ef4eb0  gcc/config/powerpcspe/t-ppccomm
! 062913b73d6742fb5695d276e58480d3  gcc/config/powerpcspe/t-ppcendian
! 210757245ed12dc2cd9f1997f7c20e45  gcc/config/powerpcspe/t-ppcgas
! 1b8aba690a39464c4ea9c647d73d6983  gcc/config/powerpcspe/t-ppcos
! b5177febbd7ece716f09551ead462d1f  gcc/config/powerpcspe/t-rtems
! 5575e36b194d65f2a31c39aa0328efdd  gcc/config/powerpcspe/t-spe
! cd2ddaf036150fd49c6513d5549dfad7  gcc/config/powerpcspe/t-vxworks
! f11925c88524d2fd457bf77944da1302  gcc/config/powerpcspe/t-vxworksae
! 3f0601a68de7a0aee8264b538228d943  gcc/config/powerpcspe/t-vxworksmils
! b64a846190ec96ed1399a0ff634abb57  gcc/config/powerpcspe/t-xilinx
! 0cb61bcae5f607744ac6f02eb8e457c3  gcc/config/powerpcspe/titan.md
! c46036b4cccd7f4737b8b30dbe9c479e  gcc/config/powerpcspe/vec_types.h
! 975cc1ce075510559265da0d9655e4b0  gcc/config/powerpcspe/vector.md
! 5e0565c12f224a425a65bf14099a4fff  gcc/config/powerpcspe/vsx.md
! 684278a5ebb7fe9973f9611265c2dcd1  gcc/config/powerpcspe/vxworks.h
! d88795f5a8009be1cea8cfda1c8d93c0  gcc/config/powerpcspe/vxworksae.h
! bb3b5ea9708eace134d94781e2d2c8db  gcc/config/powerpcspe/vxworksmils.h
! 44a93bbae0ad5aba424ba7b97cc6914d  gcc/config/powerpcspe/x-aix
! cd7d459f2dec1f8acfce0bfad93df047  gcc/config/powerpcspe/x-darwin
! eb2e2e94920feea043b226ad9edd9c95  gcc/config/powerpcspe/x-darwin64
! 3f42272f4bcf66031ebf71a6c876adb8  gcc/config/powerpcspe/x-linux-relax
! 13e74033a456e04c06dd89817362c7ba  gcc/config/powerpcspe/x-powerpcspe
! 32c95b9381bf178c6a0b18f4b0184267  gcc/config/powerpcspe/x86intrin.h
! f11421cac89d13b6e5faa8133a966ee0  gcc/config/powerpcspe/xcoff.h
! e0486532b80c8f9f8828b024c866a1e3  gcc/config/powerpcspe/xfpu.h
! 9da7544b9de266457ad4a30776ef6ce4  gcc/config/powerpcspe/xfpu.md
! 28e42d7b4f869be8fc2acbcf64d10a57  gcc/config/powerpcspe/xilinx.h
! 21b86f937f1e16da0e6fa4598f90a284  gcc/config/powerpcspe/xilinx.opt
! 0c418ed9fb0a2e0566621240515bc385  gcc/config/print-sysroot-suffix.sh
! 08db1a5f1a18390f252c245f50580811  gcc/config/riscv/constraints.md
! 9b5b80230556df9f8daf6e94f0a25d87  gcc/config/riscv/elf.h
! 2859f88c84c9bc5e0632809b4a98afb5  gcc/config/riscv/freebsd.h
! 172e35c65f1db7b48b695593ada76e0e  gcc/config/riscv/generic.md
! e6ccc4363b47e0e0dcb6929c8ab50a49  gcc/config/riscv/linux.h
! 4d5cf22d4d7de4018d7a9df132b8b172  gcc/config/riscv/multilib-generator
! fe23351e218cdb25d0aa5bcabb0e82e0  gcc/config/riscv/peephole.md
! 2c101a764bbe1eda42b56c9abc53e397  gcc/config/riscv/pic.md
! 235da8a3ec63e664506b46a88a3166fb  gcc/config/riscv/predicates.md
! 166e4660335555b367744aa64d6a54cd  gcc/config/riscv/riscv-builtins.c
! 62c37cd2f0fce2212b66b78f80f32bc5  gcc/config/riscv/riscv-c.c
! cc71bd4920e54f5b2c8d0594399bfaac  gcc/config/riscv/riscv-ftypes.def
! c1293b5c74cf0466a0c151f9669eaef1  gcc/config/riscv/riscv-modes.def
! c1d836d57d2c1d5b906302aaa5bf4b93  gcc/config/riscv/riscv-opts.h
! 54ec65225abe3f20c7c39b8e1a1ef18d  gcc/config/riscv/riscv-protos.h
! 1fea9e30d4830f1b30fd8c21546520e4  gcc/config/riscv/riscv.c
! 919b02a0567628ccdfe1097e2116ba4a  gcc/config/riscv/riscv.h
! 90318599fedfc7f7c8324f1e8f273b0b  gcc/config/riscv/riscv.md
! ad6308b0af4d5ad16c571cd25bf22b4d  gcc/config/riscv/riscv.opt
! 1d8729ec7f2cac2f3a236f054a841096  gcc/config/riscv/rtems.h
! 0903e6de96087df0a7ca63a2895cf5c1  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
  976dd460f5afbd591b0d2e626d74eb51  gcc/config/riscv/t-riscv
! c9a40160ddc6b7cc763910ace7715569  gcc/config/rl78/constraints.md
! 97a95f910dd4ee4d1dd19d4683ea59b5  gcc/config/rl78/predicates.md
! 6f3ae31485b2afa8c9072ec2569a61d2  gcc/config/rl78/rl78-c.c
! e08455dcc4352d2faaeb7ecb70fbd688  gcc/config/rl78/rl78-expand.md
! 98fe543adfe9b8640d9866eeabfd4320  gcc/config/rl78/rl78-opts.h
! 445451595229308b249cafbffde44518  gcc/config/rl78/rl78-protos.h
! 2287f301b51152fb17701689d34ed96c  gcc/config/rl78/rl78-real.md
! 82f5ab76b0d8a07e94a57e292991cb05  gcc/config/rl78/rl78-virt.md
! 65579e518b4e5cc818958adb558979fa  gcc/config/rl78/rl78.c
! 254c8be9afa8e97555f5fae13a1a3492  gcc/config/rl78/rl78.h
! 5fd86492cc0ec8d5014103d17cb162f3  gcc/config/rl78/rl78.md
! a318944b57d5764cf959d705326f0d1b  gcc/config/rl78/rl78.opt
! 48612e2e4f827a9556fbff539f605890  gcc/config/rl78/t-rl78
! 5ae6b35479a5a81879489f4076452a78  gcc/config/rpath.opt
! 02eaf14b8b9479a73ad4f492275e42c9  gcc/config/rs6000/40x.md
! 420303f8c126397a9acdb5d6c727317a  gcc/config/rs6000/440.md
! 70dd42f878ddf939763fe8c7d7134620  gcc/config/rs6000/476.h
! 4b4c93685930e8999a6d6b96fb0b2f88  gcc/config/rs6000/476.md
! 53297879f8d7224ef490523235c4d401  gcc/config/rs6000/476.opt
! b67671e023a8cf76ee76318227fe85c3  gcc/config/rs6000/601.md
! bb2afc89088ad6f9cf7bb5909f16f011  gcc/config/rs6000/603.md
! 4c9ff844c0e4299177e009f4d7b64937  gcc/config/rs6000/6xx.md
! f971aafb6b0de7f183dab87dc37fb030  gcc/config/rs6000/7450.md
! b7298dd581a2c86875b8ff540efcf05c  gcc/config/rs6000/750cl.h
! ddb60c1dcdc4f34e404e74cd0875df80  gcc/config/rs6000/7xx.md
! 9e1bd8b1bc20174d1db5cf44ecd3710e  gcc/config/rs6000/8540.md
! c53b7109f18245563ea125f5b277d23b  gcc/config/rs6000/a2.md
! f9d7fead7b0af957b6771c65b7111b44  gcc/config/rs6000/aix-stdint.h
! bfd47bc3f456ad61d3e0d5ab5aae9e3e  gcc/config/rs6000/aix.h
! f71df4dcd128ff24119871ce798b64b9  gcc/config/rs6000/aix43.h
! 96403f34fce4ef97357e7a79ce7877a2  gcc/config/rs6000/aix51.h
! a740672e11194097b7079bc14f770029  gcc/config/rs6000/aix52.h
! 6713a06371184f2d5be0e826ee569fcb  gcc/config/rs6000/aix53.h
! 409ecd3c847af5adcf0bf6180d0afeeb  gcc/config/rs6000/aix61.h
! dcae54b5112b4a35de3fee24152c08b6  gcc/config/rs6000/aix64.opt
! 6de3e4e157ade9ff0333b8e956d4539c  gcc/config/rs6000/aix71.h
! 71e6a687bca5495bca460bdd25e28c7c  gcc/config/rs6000/aix72.h
! 4d2fa3ecc3644ed539775b751a9b197c  gcc/config/rs6000/altivec.h
! bb8c856c9d0ff6489125845e382b4fd4  gcc/config/rs6000/altivec.md
! 9f9485a0668e9f02dd1ddd921e8db540  gcc/config/rs6000/amo.h
! b5c0d31db75d05e19a5a74e12deee5c2  gcc/config/rs6000/biarch64.h
! d24bfc688852ea2817f920c09cc312e0  gcc/config/rs6000/bmi2intrin.h
! 33a5f4f7292b1bb3ad8f66a4e3773c7e  gcc/config/rs6000/bmiintrin.h
! 7292692fc7483600be11240cb2a1c118  gcc/config/rs6000/cell.md
! 6bdc2b3f07ed0adb0d140b7f6ba6aece  gcc/config/rs6000/constraints.md
! ff5233f615d6c5818780f20b908405f7  gcc/config/rs6000/crypto.md
! 46e2b9d544973e8ffc805f838d51505a  gcc/config/rs6000/darwin.h
! 3f74f48326d9253c04d38910eb754fcb  gcc/config/rs6000/darwin.md
! 4ca90b03f871f9f94d714b3f7de5c299  gcc/config/rs6000/darwin.opt
! 02cde662e31624a94372cd3f24ff9c2a  gcc/config/rs6000/darwin64.h
! 2e190fdb5c98f026a07f3d6b7e16d5b4  gcc/config/rs6000/darwin7.h
! 4ab65ef9b15ad703cff18793652a4ceb  gcc/config/rs6000/darwin8.h
! d21b5b5b85a33095db1d7b774c71b610  gcc/config/rs6000/default64.h
! e6b5bf289afa34aed094bc109fe6a25b  gcc/config/rs6000/dfp.md
! 955ab00ede97d71f2322c2cb6d5c6549  gcc/config/rs6000/driver-rs6000.c
! 3bd10bef33b984af50443e7752e2ef84  gcc/config/rs6000/e300c2c3.md
! 7ee622ac4b0d7c0322d125ecd4f4a00f  gcc/config/rs6000/e500mc.md
! 9c130378d87389984d38f24b9bf6b00f  gcc/config/rs6000/e500mc64.md
! e2897dd12a7adbd450ee33d4e16390bf  gcc/config/rs6000/e5500.md
! 60378e93133f526dcb58de16d133b2e1  gcc/config/rs6000/e6500.md
! 0e7c1a1e4c93cafd35684b21a20078c1  gcc/config/rs6000/eabi.h
! 8a7bb2cde1174595cfe3c49dad88548c  gcc/config/rs6000/eabialtivec.h
! caa8d36ab8d41a393dec0cc2a027719d  gcc/config/rs6000/eabisim.h
! 6bdc08eb4fc7bd17c3cce341a58d25cf  gcc/config/rs6000/emmintrin.h
! d5bf09cce396907ec38e3454b4a64d4d  gcc/config/rs6000/freebsd.h
! e5002abe4b00c1553b90fdc41731574f  gcc/config/rs6000/freebsd64.h
! 8a17f57c8fdb2b7b16494356e333599a  gcc/config/rs6000/genopt.sh
! 87a444dbedd8198d68c636aa883ab054  gcc/config/rs6000/host-darwin.c
! b2b4a14ee19e5479a407cd7d891091f4  gcc/config/rs6000/host-ppc64-darwin.c
! 92e44d9f2093d7613dd3fa93be1c6bab  gcc/config/rs6000/htm.md
! ae8054933a0fe405ccb5ca88b6d82e20  gcc/config/rs6000/htmintrin.h
! cfa910812fa0658d89bd0bd0574e0a55  gcc/config/rs6000/htmxlintrin.h
! f102133fe8b1cb3e10e11814814cded4  gcc/config/rs6000/linux.h
! 9a492eb4cc59c99150a68a92c67a91cc  gcc/config/rs6000/linux64.h
! 3b0a9c590719c486ec897a34e9ce1184  gcc/config/rs6000/linux64.opt
! 799efe10ab55ec176ca10bc169bf0266  gcc/config/rs6000/linuxaltivec.h
! 56e7905cd5d58cdaa4e54fa40dc3e354  gcc/config/rs6000/lynx.h
  0cc3c5f9101501b8253ce3176c3ffce4  gcc/config/rs6000/milli.exp
! 92042d90d894f0691bc6844d63191748  gcc/config/rs6000/mm_malloc.h
! 3839b136fcb75590b540609bbc23b537  gcc/config/rs6000/mmintrin.h
! aee964d61fb1cbb5db2240e07d7dd96b  gcc/config/rs6000/mpc.md
! ea90cbc50976c4e72a24cb87e8083dc1  gcc/config/rs6000/netbsd.h
! 3cb692c6d6947ea872988e948aa1b96c  gcc/config/rs6000/option-defaults.h
! 626be273b5530307d5031247053133de  gcc/config/rs6000/paired.h
! f4064b210a87a045c51f702da5727b1b  gcc/config/rs6000/paired.md
! de6d25a053b9994a26e8ecc7f8bcfeba  gcc/config/rs6000/power4.md
! 75045d05a1d07cdfca02724d76e1f568  gcc/config/rs6000/power5.md
! 8a578e104cee146ba9a310e94fa808ba  gcc/config/rs6000/power6.md
! 4fc18c5f5a51b83b90b58a40b447c35d  gcc/config/rs6000/power7.md
! abb23b23f2af6700d170086290f9c573  gcc/config/rs6000/power8.md
! 7b5379645b265c19ce58c23337ed48bc  gcc/config/rs6000/power9.md
! 58b4ce015d00b9f5a28de026ae54cc7b  gcc/config/rs6000/ppc-asm.h
! 0f9854421ac50b66adc14397f453bbe9  gcc/config/rs6000/ppc-auxv.h
! 342969245a87fc2fa15e020a788bcb14  gcc/config/rs6000/ppu_intrinsics.h
! f5977a893ce90afe80a8ec3f3b558096  gcc/config/rs6000/predicates.md
! 67ac4b15669a4b4819cc06c6554824b6  gcc/config/rs6000/rs6000-builtin.def
! 91ea690a6d9705599c09875fb10b23f7  gcc/config/rs6000/rs6000-c.c
! 74e1470f36d1513602e0d9ed52cf1e01  gcc/config/rs6000/rs6000-cpus.def
! 8ec6d7b8eabe3794bf1ab38f06e84cfc  gcc/config/rs6000/rs6000-linux.c
! 8a862622dc51487c4cb22e63f02e6f45  gcc/config/rs6000/rs6000-modes.def
! 4fe4357d2b59d1f1209721000b626cfd  gcc/config/rs6000/rs6000-opts.h
! a2eb09a57e0113267a500e881c8b6652  gcc/config/rs6000/rs6000-p8swap.c
! 5f7c6215ba96134b2dc6ca6179606f8e  gcc/config/rs6000/rs6000-passes.def
! 8d838167331b51f25ad138b4eb70004f  gcc/config/rs6000/rs6000-protos.h
! 65615a7ec4ab83e72f08caa249037681  gcc/config/rs6000/rs6000-string.c
! 643b9b3fa5815b6fbb2dc9b4458a3bdd  gcc/config/rs6000/rs6000-tables.opt
! 3b51a8a0d47ed169af26b7d065d28ce6  gcc/config/rs6000/rs6000.c
! 183cc25c1987779f07fd0fa7f208a614  gcc/config/rs6000/rs6000.h
! 3ae09b89282d4218b5c406326a122ceb  gcc/config/rs6000/rs6000.md
! 824001b2d686a4122decd64938e7f46d  gcc/config/rs6000/rs6000.opt
! 3a5a1641a5dd900f925b623e02fca183  gcc/config/rs6000/rs64.md
! cc2ed391efb97e77a30227662d8dfc38  gcc/config/rs6000/rtems.h
! f9d1e30c3a4ecafd9023b44f03a49fc8  gcc/config/rs6000/secureplt.h
! 0768452d77090937b75fe2a418328312  gcc/config/rs6000/si2vmx.h
! 5c0e21f13b9b00c57e532ba4c087ccec  gcc/config/rs6000/singlefp.h
! 631712ae53debb9880f02833fae87371  gcc/config/rs6000/spu2vmx.h
! 362d69fd9c0ba72251732199c9ee5405  gcc/config/rs6000/sync.md
! 9af68dd6fee257eb461e99c99b6e9272  gcc/config/rs6000/sysv4.h
! 7a9b95b6f783e50181bde43c8d9d1506  gcc/config/rs6000/sysv4.opt
! f053f8229694372d55ea78dd4f0c5c28  gcc/config/rs6000/sysv4le.h
! 56aec008c6e4a879c06afbe3660efdae  gcc/config/rs6000/t-aix43
! c059d4a16085cad58f34946aabe2cc11  gcc/config/rs6000/t-aix52
  f3250b9720d1149346f1ef8e21b52ea9  gcc/config/rs6000/t-darwin64
  636250eb91fc5dada4804efcd525fc02  gcc/config/rs6000/t-darwin8
! 0f970d99602398f4e297682f8a2bc0f7  gcc/config/rs6000/t-fprules
! 52a22f94153362807c445e9976a570a5  gcc/config/rs6000/t-freebsd64
! f2570b52a01afa832451a9f9c7cfe5f9  gcc/config/rs6000/t-ldouble-linux64le-ibm
! 1f68efdb46e6211d0f96ebfea41c0d77  gcc/config/rs6000/t-ldouble-linux64le-ieee
! ff51a8b999a109af125ed5678ca7cc91  gcc/config/rs6000/t-linux
! 2b84eba4ca3f13506e28ddc14d567433  gcc/config/rs6000/t-linux64
  71c0a0470047f0171a3bb4c483eb2b72  gcc/config/rs6000/t-linux64bele
  489699b655594f05bae0b429fd261edb  gcc/config/rs6000/t-linux64le
  60f26523152f6a061a12cb17e987de12  gcc/config/rs6000/t-linux64lebe
! 842c9f08473c37545bbd5dadc2c7a693  gcc/config/rs6000/t-lynx
! df20065581cc7ba7c99f5862666e2bf7  gcc/config/rs6000/t-netbsd
! cbd329e4bf58f31678edc54214ef4eb0  gcc/config/rs6000/t-ppccomm
! 062913b73d6742fb5695d276e58480d3  gcc/config/rs6000/t-ppcendian
! 210757245ed12dc2cd9f1997f7c20e45  gcc/config/rs6000/t-ppcgas
  1b8aba690a39464c4ea9c647d73d6983  gcc/config/rs6000/t-ppcos
! dbdf25e1b5af21bf6a48f11847f2d7b7  gcc/config/rs6000/t-rs6000
! 948ce8a97d921e30430098f51070f732  gcc/config/rs6000/t-rtems
! cd2ddaf036150fd49c6513d5549dfad7  gcc/config/rs6000/t-vxworks
  f11925c88524d2fd457bf77944da1302  gcc/config/rs6000/t-vxworksae
  3f0601a68de7a0aee8264b538228d943  gcc/config/rs6000/t-vxworksmils
! b64a846190ec96ed1399a0ff634abb57  gcc/config/rs6000/t-xilinx
! dcf9f40ff97e1293f070b8dc3aa06400  gcc/config/rs6000/titan.md
! c46036b4cccd7f4737b8b30dbe9c479e  gcc/config/rs6000/vec_types.h
! 62e755c1d65b4a0bf915d6cb1ab048f7  gcc/config/rs6000/vector.md
! 7ab625abc51dae2a4626d709d08c91b9  gcc/config/rs6000/vsx.md
! c1f29e5cdd95b234ed30fff197797c5a  gcc/config/rs6000/vxworks.h
! 5e707e69636b23d3f1076bb71fb1bc99  gcc/config/rs6000/vxworksae.h
! 565d57378339556706f36508c7ca8916  gcc/config/rs6000/vxworksmils.h
  44a93bbae0ad5aba424ba7b97cc6914d  gcc/config/rs6000/x-aix
  af875b9bcb1ec1da1f33d5e34df8ca7b  gcc/config/rs6000/x-darwin
  9ffcc92667a16102520a017eabc7d7d2  gcc/config/rs6000/x-darwin64
  3f42272f4bcf66031ebf71a6c876adb8  gcc/config/rs6000/x-linux-relax
  1aff8cb3714b63b6c3367f552dae743f  gcc/config/rs6000/x-rs6000
! acea6474299e57ec97e647e04a99959f  gcc/config/rs6000/x86intrin.h
! f11421cac89d13b6e5faa8133a966ee0  gcc/config/rs6000/xcoff.h
! e0486532b80c8f9f8828b024c866a1e3  gcc/config/rs6000/xfpu.h
! 9da7544b9de266457ad4a30776ef6ce4  gcc/config/rs6000/xfpu.md
! 28e42d7b4f869be8fc2acbcf64d10a57  gcc/config/rs6000/xilinx.h
! 21b86f937f1e16da0e6fa4598f90a284  gcc/config/rs6000/xilinx.opt
! a807f93d678f45d68f0f8e081e5b65f2  gcc/config/rs6000/xmmintrin.h
! 0c68bba94531358e2f1fdd8b886a26bc  gcc/config/rtems.h
! d0bd526a151bd69537e49297604bd300  gcc/config/rtems.opt
! 1a91fb34d264f5941db3c24aaaaacd92  gcc/config/rx/constraints.md
! 811aec4a7a8f9b227d0bbc0866a9c075  gcc/config/rx/predicates.md
! a74fbffed9d2b465ec10646778a7109b  gcc/config/rx/rx-modes.def
! d3ca8ecb355bb01abe78553dd6299a0d  gcc/config/rx/rx-opts.h
! b6680a137e19cb59796c809ffcc2b4f1  gcc/config/rx/rx-protos.h
! 32d44935a941ef9d02ee434813788c2b  gcc/config/rx/rx.c
! 9fd2e2932c217695b56f7cb39e7b8d8f  gcc/config/rx/rx.h
! d8a9be0689ac8645445a70fe34f669ec  gcc/config/rx/rx.md
! 7e547519c560b22eb4e1aa4578459b30  gcc/config/rx/rx.opt
! 6c977182623b66c56da1265eb0aa657c  gcc/config/rx/t-rx
! 8afb5f3be539fe68ec2fe5ff176b98d0  gcc/config/s390/2064.md
! f84e0bf81161545cf16a80a7345a4ec4  gcc/config/s390/2084.md
! b6ab7de267c521268f76baca64aaf6c8  gcc/config/s390/2097.md
! 2cb4ba61d7a1a66c2b6af54236ebfdb9  gcc/config/s390/2817.md
! 7c003682245ab598d24eb145f012e072  gcc/config/s390/2827.md
! 07ef37e756e3e41f97e85e9320eddc88  gcc/config/s390/2964.md
! 3801b86ea95af1195a139d2547707200  gcc/config/s390/constraints.md
! d7bac9c32038aa1a14b9a4834bdb2153  gcc/config/s390/driver-native.c
! 61c2766e399dc0dc25981718f3eec4f8  gcc/config/s390/htmintrin.h
! 106230506016171b71ab07ecbcdddd8a  gcc/config/s390/htmxlintrin.h
! 342e7ff485f151fe5b55406594f4be39  gcc/config/s390/linux.h
! 2d669e9dff9320233b7f216038499af2  gcc/config/s390/predicates.md
! e4a9afa135dccb1b4e03b41d9ae3ed52  gcc/config/s390/s390-builtin-types.def
! 4e69c5a2f149151f12e112d394f4dfcb  gcc/config/s390/s390-builtins.def
! 2e5820f6c953cd38503c01405236734a  gcc/config/s390/s390-builtins.h
! 94bb9801f7c21b9abfbf99383d7911de  gcc/config/s390/s390-c.c
! 8ffd07333cf5c87efee0637e396bd149  gcc/config/s390/s390-modes.def
! dd581ffe9a17b11126b5923183e1b110  gcc/config/s390/s390-opts.h
! 74939e1d57f01659100c31d3d3943788  gcc/config/s390/s390-protos.h
! 9eb096a05279c20d5ea9842a85b2efaf  gcc/config/s390/s390.c
! ddfae99c91c07d17c6e5cc6a7ecea743  gcc/config/s390/s390.h
! a1332af110b3ada54b07b1db80abe808  gcc/config/s390/s390.md
! f991258a0a930bd79a1d406221cecf17  gcc/config/s390/s390.opt
! 10fda52203b00dc27bfee80662bb9fe2  gcc/config/s390/s390intrin.h
! 3e470ed4fe56aa18ff05dc55239d55ba  gcc/config/s390/s390x.h
! 6b6212af2488e82b09eac653c42e47cb  gcc/config/s390/subst.md
  551847ee4c38fa1a7e95fd93cdb32f17  gcc/config/s390/t-linux64
! 5284dd1ba959e1ca8c233ee7b18a04a1  gcc/config/s390/t-s390
! 91db2f6e6612d3ce1c226a288e3ff3fb  gcc/config/s390/tpf.h
! f17c7212b2cbc12f07ec94830f8b7eac  gcc/config/s390/tpf.md
! bf78833b73ed4695a1e55fbb94967b66  gcc/config/s390/tpf.opt
! f1dea21d1255ead60a637fbe52e1274f  gcc/config/s390/vecintrin.h
! f0a8abd792b2744828da6315571d6b25  gcc/config/s390/vector.md
! 9584eec11472b4839795b67decc77093  gcc/config/s390/vx-builtins.md
  19876f77a242921272972ac5b8bd32d0  gcc/config/s390/x-native
! 962dc9c4a3dad735e979eefee574c450  gcc/config/sh/constraints.md
! 80c4ccf685fc5a3a4025652dd0124886  gcc/config/sh/divcost-analysis
! ff57daece4955a6f5da25782bd474c1a  gcc/config/sh/divtab-sh4-300.c
! 394eb64a9708bb5cc5aed4f5d618ea3f  gcc/config/sh/divtab-sh4.c
! 9d7eca0220374400d5ef6d4a2d0d6802  gcc/config/sh/divtab.c
! 89387dc281a0a7a84e87945ae9cd9ee4  gcc/config/sh/elf.h
! e60c11102da3006a2ea94f6c6770389e  gcc/config/sh/embed-elf.h
! 771cb25ee912864515750773febf6a65  gcc/config/sh/iterators.md
! 561c92bd8866183fd85d6fd4c0e15d03  gcc/config/sh/linux.h
! 94341239061d0a99ac5a8b39dc2d9706  gcc/config/sh/little.h
! 064777eb6e11a036da8ed93546e460dd  gcc/config/sh/netbsd-elf.h
! 980c1cccfda714ef7a4a99d404622a11  gcc/config/sh/newlib.h
! 892ca3caea33e6ccec9f903445d02d8e  gcc/config/sh/predicates.md
! 58198a2eeaa9585da09cca36e131f8d2  gcc/config/sh/rtems.h
! 735ffa6ad432cf6fd5bbdf28935b2d72  gcc/config/sh/rtemself.h
! 01a937fd55a0140dde38986bc0dc93bf  gcc/config/sh/sh-c.c
! 79155b89b25ea22f9edff508c0d58027  gcc/config/sh/sh-mem.cc
! 8bf2b464e12ab2e2af256628ffb2bb3c  gcc/config/sh/sh-modes.def
! 506cac6fb163e58099b09e43cc4a0a8d  gcc/config/sh/sh-protos.h
! 41d5b9902dc8da9038c24195a4bb27df  gcc/config/sh/sh.c
! 0cad9562ee917168d4e6b83a90bfc118  gcc/config/sh/sh.h
! e9407274d6a21c2a652a9c6ea84c2f73  gcc/config/sh/sh.md
! 2d2a751ad14145bcff8c4c7f1039880a  gcc/config/sh/sh.opt
! a0e95d3c3f266053c6934b12b145dae8  gcc/config/sh/sh1.md
! a2f4d0437330a0164fce4cfa3d795db0  gcc/config/sh/sh4-300.md
! fbec9f6342297a2d85b2985c53317d4a  gcc/config/sh/sh4.md
! 4c7c704486518b50ba4ac4f0a8ae7b8f  gcc/config/sh/sh4a.md
! 613f9cd7da0ccc4af639f3fe23481432  gcc/config/sh/sh_optimize_sett_clrt.cc
! c0168c85e1da62c641014e9141f860c4  gcc/config/sh/sh_treg_combine.cc
! 5df0e1657194e414b7c85652650a093c  gcc/config/sh/superh.h
  06158b0f1e33501120db330d7734228d  gcc/config/sh/superh.opt
! f79476b2b6824835a27d24bf162a1d2a  gcc/config/sh/sync.md
  d136f788a5f1c0fd4a8cf495f33aabd8  gcc/config/sh/t-linux
  ad88281b142c81e6c7017a842c281d5f  gcc/config/sh/t-rtems
! 3412ee08d4717157c98326a4adabb00c  gcc/config/sh/t-sh
  9f0e9638f478c08d204c5dce468c95ce  gcc/config/sh/t-vxworks
! 583f4b692f0db4c44d04ee6651126d95  gcc/config/sh/vxworks.h
! 6478903b7a5f6a717a3ae213e834c095  gcc/config/sol2-c.c
  5c26c2321d68d4724b0d0076803c6b89  gcc/config/sol2-clearcap.map
  73dd11dea23019ab25cbbd70968694e7  gcc/config/sol2-clearcapv2.map
! eb8319e5ddc427bd8162d727fcef764b  gcc/config/sol2-cxx.c
! c1b202d49f4777479d5ed69a690cf223  gcc/config/sol2-protos.h
! e8886fe3cb7ceb6197b438fd3e7f131b  gcc/config/sol2-stubs.c
! 25a8559d87f7bff3cc2cdbb52f810497  gcc/config/sol2.c
! 684a030d6c46aa09abd2029f614fcdef  gcc/config/sol2.h
! f8be9b6ba43e345c409b54647db86ead  gcc/config/sol2.opt
! 7bdd4cdfe0aab32b677a9e36e07fa7fa  gcc/config/sparc/biarch64.h
! 5191a3f9fe5f037a62a22a11c7db3147  gcc/config/sparc/constraints.md
! 15148e583b8d50259fc8a17030969a3f  gcc/config/sparc/cypress.md
! 240c59cc55da505a933779edc7ca06dc  gcc/config/sparc/default64.h
! 43d0220b925e5767b7e494b03e4179fd  gcc/config/sparc/driver-sparc.c
! eb40ec25a708eba81687b74c2fa10c7f  gcc/config/sparc/freebsd.h
! 5ac21a4084416fa05960099b6c2b877d  gcc/config/sparc/hypersparc.md
! 71baa74e84da9eb745346e1e45b932e2  gcc/config/sparc/leon.md
! 792659c428025cebc851e49d7b875acf  gcc/config/sparc/linux.h
! 718e1f77f3790e72d5df47dc5d89d578  gcc/config/sparc/linux64.h
! 80521aec4cae36bfab6004147b13d52a  gcc/config/sparc/long-double-switch.opt
! 2a4ec7ac986e61d4ef40af31bc7c6b72  gcc/config/sparc/m8.md
! bca9cc2bb4f217317849b0ded11d2dcc  gcc/config/sparc/netbsd-elf.h
! b46ef623aeb38b63b2f165e761e92712  gcc/config/sparc/niagara.md
! a318d268b84f342dc5130c3a79c5e537  gcc/config/sparc/niagara2.md
! 44666f1fc6260355cd64cce4d89e59cf  gcc/config/sparc/niagara4.md
! b247e654453ed4065eaef2b0a02c7394  gcc/config/sparc/niagara7.md
! 36a1ddf6b1a32b856cfa931ed93401ab  gcc/config/sparc/openbsd1-64.h
! a9fa5f7d95d8181361403b5ff5124fbf  gcc/config/sparc/openbsd64.h
! a3342c90183597b87ca9d6c38ec817a5  gcc/config/sparc/predicates.md
! e30f26412bfe086e0550625e7dcdaa9e  gcc/config/sparc/rtemself.h
! 8c0c0b80a591eaadfe4163c54cf6cee7  gcc/config/sparc/sol2.h
! 9c8eab6ba240320ea970e4a252b74e81  gcc/config/sparc/sp-elf.h
! d2d75159dbb3673877a99dbb45a730e8  gcc/config/sparc/sp64-elf.h
! 4482585b0c13a351e01da254ee80e4be  gcc/config/sparc/sparc-c.c
! 3e73f3b298504f4739c6a005c86bfa94  gcc/config/sparc/sparc-modes.def
! 7ce792f7bc14ea47fe92381d8b7b7400  gcc/config/sparc/sparc-opts.h
! c05adeef9d811893755284314d7e5f31  gcc/config/sparc/sparc-passes.def
! f50ca0df113a1d1486d71588af1f34c9  gcc/config/sparc/sparc-protos.h
! 0b7e9ab80c5ada59d89f7a5dfafbdc90  gcc/config/sparc/sparc.c
! 1c9470ab1e400794337037c920817c36  gcc/config/sparc/sparc.h
! 26331abd73823ce9a0bb6c9d8240e7ba  gcc/config/sparc/sparc.md
! 497f3da0646b51525092463f232911fb  gcc/config/sparc/sparc.opt
! 1fb3c7f03aa54b786f780eb9c9ed005e  gcc/config/sparc/sparclet.md
! 4191c81a0c4b3020ec97f61a9bd952b1  gcc/config/sparc/supersparc.md
! 6ceee91b4e67a1c951249a9b49449828  gcc/config/sparc/sync.md
! 819ecdf96a48199084c12d33afbafcac  gcc/config/sparc/sysv4.h
! e2493f212c9cc94a57f38131c35c875c  gcc/config/sparc/t-elf
! fad2983ee112bfb831c282515d08c66f  gcc/config/sparc/t-leon
! 6a3d00f3dd0b866f8eee007d267acfd7  gcc/config/sparc/t-leon3
  4a7d3f368a24d549fabaafbe44fcb134  gcc/config/sparc/t-linux
! c97b133f0c1d714b443ef209fbd71329  gcc/config/sparc/t-linux64
  75987b7fdc6fa9c9ff2108ff1003e6d2  gcc/config/sparc/t-netbsd64
! c5dde8273f01383e5685859fd0e74202  gcc/config/sparc/t-rtems
! b8d99f3f9ba9cd5da86fc9e3cccfefe3  gcc/config/sparc/t-rtems-64
  511770bb20c2707fabd4f231ce8b83cf  gcc/config/sparc/t-sol2
! 4c81ee034da281d5b18011245a888e63  gcc/config/sparc/t-sparc
  b04597637b0c08dd3e6d1a40c43e76b4  gcc/config/sparc/t-vxworks
! 771a24813059409ebc046615bda0814c  gcc/config/sparc/tso.h
! c075f835b32d9f9b9faa2738ac88732f  gcc/config/sparc/ultra1_2.md
! a829411c9a09a6322703b43426dfa97e  gcc/config/sparc/ultra3.md
! 2264a199c3bcf25f626dbacacaa9197c  gcc/config/sparc/visintrin.h
! 698371397930fc32fc84c53a8632ac82  gcc/config/sparc/vxworks.h
  9b2ddc345afcea4f415dd0c8bc2d2ed3  gcc/config/sparc/x-sparc
! 8fd3cf4d572ae949157cb440ac8324c5  gcc/config/spu/constraints.md
! fcd4f9539cf05dcd8e4073b86e50cb41  gcc/config/spu/predicates.md
! aec4a7c076421ff9f1ced56094c85ce6  gcc/config/spu/spu-builtins.def
! 518e175047392799b8eecd4f03b6afdc  gcc/config/spu/spu-builtins.md
! acb48e70a02011eadb6a5a9fc43de7e2  gcc/config/spu/spu-c.c
! 950ab0fc97e3b52d3fb09b5b01278a3f  gcc/config/spu/spu-elf.h
! a0fb76bad3037147d517321ab6bd7332  gcc/config/spu/spu-modes.def
! d6294412dc736974ea22e7fe09e10095  gcc/config/spu/spu-protos.h
! f36c5dcbd6bf1606a0818227951c10b2  gcc/config/spu/spu.c
! 44f8f84d09aa24818d5fc3818173be51  gcc/config/spu/spu.h
! 3d5931e032758e06e38f59656515b258  gcc/config/spu/spu.md
! d8aef0a6c37e63db95a57ca3c0b3393f  gcc/config/spu/spu.opt
! 14e7fa92873bfe930a73c7ca0f4a3504  gcc/config/spu/spu_cache.h
! ef110ee27691cde5d8eaca6d69e99b9f  gcc/config/spu/spu_internals.h
! 2521ee374527c22dfd3cceddb7cbcc77  gcc/config/spu/spu_intrinsics.h
! f2c3721d33b5ff9012ee7a8542fad0d2  gcc/config/spu/spu_mfcio.h
! f1731dfae64ee8fe65e23e44e6920bf9  gcc/config/spu/t-spu-elf
! 6be810ad9688085669d3d388d6ee613e  gcc/config/spu/vec_types.h
! 297cfac0e937edad177de0a3d7f2c675  gcc/config/spu/vmx2spu.h
! bce3a3d9f8db448709ba60ffdc48627c  gcc/config/stormy16/constraints.md
! 041ea5d182273d88d38c124032a6fa20  gcc/config/stormy16/predicates.md
! 632b36881a0c2635ecf3b7767d9d7dd3  gcc/config/stormy16/stormy-abi
! 7cf1aca7a1309855b25ba9dd7e6f56b5  gcc/config/stormy16/stormy16-protos.h
! e1174e6c75dddbb76917e18f8ade5310  gcc/config/stormy16/stormy16.c
! 12c4bfb78baff1c0430fd0e2e174c87c  gcc/config/stormy16/stormy16.h
! 1314397cf4a2efe821f30e40be55e8b9  gcc/config/stormy16/stormy16.md
! 44a47454dbf180ec3286f414860ad890  gcc/config/stormy16/stormy16.opt
! 3d111edbe244a2dd21575944c882aaa6  gcc/config/t-darwin
! b301a9d369f3f4cf6bdc2fb65359bfd3  gcc/config/t-glibc
! 65333c517edd3b97d4e178367a9edea8  gcc/config/t-libunwind
! 1de554a2297cab19fc1254d9dcb81ffb  gcc/config/t-linux
! b0fa3fe92db84f246ff990a3f7786a5b  gcc/config/t-lynx
! 5dad674732908a1c6e62e627e047929e  gcc/config/t-musl
! a0af64d81231dc746c8b59dfb17a3d63  gcc/config/t-netbsd
  4b382926844dd76c21046df37b41105c  gcc/config/t-openbsd
! 9abea8c8886c6b807bbd2e2fe20890f6  gcc/config/t-pnt16-warn
  501751f2be56698ed1c9cf18358b67ac  gcc/config/t-rtems
  51d3678acb41d4448cc332f7a8e8cb2e  gcc/config/t-slibgcc
! 200ae4b564d44397b872c4b0ebdb37be  gcc/config/t-sol2
  94b3e10150e75899d2fc1410cf218e3f  gcc/config/t-sysroot-suffix
! 6f78c5decbfb4b465e7c289b60109023  gcc/config/t-uclibc
! 5f50c569cd2448857ca5094ed2fbdeee  gcc/config/t-vxworks
! b2a70a7c4713ad472fcb6b0641966d6d  gcc/config/t-winnt
! 0559b40cbaafd0d860b94886561f57ce  gcc/config/tilegx/constraints.md
  f62347fb17ffdccf93a30b860f9f4dc2  gcc/config/tilegx/feedback.h
! c150ca7d1df525eaf993bea401176bb3  gcc/config/tilegx/linux.h
! b5038b0a1f73937f4ebfccdbca13bf09  gcc/config/tilegx/mul-tables.c
! fb36607c830c287a8b3ef89b3aae7ea3  gcc/config/tilegx/predicates.md
! cca4cb8d533addf55f8bf48c2dd10c28  gcc/config/tilegx/sync.md
  94847c7229d625be28df740c61698b73  gcc/config/tilegx/t-tilegx
! 5bf3bb507d18433694816d9350168089  gcc/config/tilegx/tilegx-builtins.h
! fa501fdb44941f7c87facd61d71d55cc  gcc/config/tilegx/tilegx-c.c
! 4fecae35131746648d72387808571102  gcc/config/tilegx/tilegx-generic.md
! f36169f3a4ca6c250ac2e3fa1cfa65a3  gcc/config/tilegx/tilegx-modes.def
! 00355b405ab46219cbf7186f8d4128a0  gcc/config/tilegx/tilegx-multiply.h
! 9f9788171c6a681888ed034783785d2d  gcc/config/tilegx/tilegx-opts.h
! e38964d15716fb055c823779fa1bffc2  gcc/config/tilegx/tilegx-protos.h
! f486c869b3875c81671686f73b41c61c  gcc/config/tilegx/tilegx.c
! fc9ebb127beeaa2312b636b5f3b91d39  gcc/config/tilegx/tilegx.h
! a85085208e4e51c7d81b408d31c4f0af  gcc/config/tilegx/tilegx.md
! 2174fb39d24267f4aff0976fe0d12e7e  gcc/config/tilegx/tilegx.opt
! 1152b6ecf302d8cee9a79ebfe9ca7f74  gcc/config/tilepro/constraints.md
  f62347fb17ffdccf93a30b860f9f4dc2  gcc/config/tilepro/feedback.h
! 6865ca8c9d08f6ed47ac5f89ff8768fb  gcc/config/tilepro/gen-mul-tables.cc
! 9a11941ef00a31543632e6277fec3f33  gcc/config/tilepro/linux.h
! 50646ae162217bde38eea9fbf004124d  gcc/config/tilepro/mul-tables.c
! 64c605e4e4814c295ae65c1727f76c23  gcc/config/tilepro/predicates.md
  3f18cdd00997ddf3552919159dbe4bbb  gcc/config/tilepro/t-tilepro
! a6af6a663b0e0f0708114848596bcd02  gcc/config/tilepro/tilepro-builtins.h
! 917a5878e084dac9a5ae447c4f901079  gcc/config/tilepro/tilepro-c.c
! 37b8c68ac8729f979fe8e64bcfa4720a  gcc/config/tilepro/tilepro-generic.md
! 6e45432487515cd02b6eb173fc9dd4e3  gcc/config/tilepro/tilepro-modes.def
! 439fb4ed690100a5ed1948ba29746176  gcc/config/tilepro/tilepro-multiply.h
! 9132f5790e46e5df513e1c842f7e1f54  gcc/config/tilepro/tilepro-protos.h
! 9a7c39965ccd688160e582c70848c018  gcc/config/tilepro/tilepro.c
! 86b922fd2cfc99c263279ea4f886d65d  gcc/config/tilepro/tilepro.h
! 950af39bf0236140272d6b255ea23f23  gcc/config/tilepro/tilepro.md
! aa9bb841273d06e1848b75da5303f349  gcc/config/tilepro/tilepro.opt
  17fd5cabcc31b720b23bad47cf7fe84c  gcc/config/tm-dwarf2.h
! 036ef016c780425f44083a1f4d52a0f7  gcc/config/usegas.h
  a6ae71a556271cc116214b3e9e87d867  gcc/config/usegld.h
! 0e83fe1a9243d61c08efd44bb7d6e55d  gcc/config/v850/constraints.md
! cc2c498adb2207c6af3cb66c321bae21  gcc/config/v850/predicates.md
! aceb8e7472b7de8582fb65312472c4c8  gcc/config/v850/rtems.h
  41b5d5e91cc905b1e3ba5de47db5f9c6  gcc/config/v850/t-rtems
! d278d7b1f0bcfb4de1893799c4015058  gcc/config/v850/t-v850
! 32b4094bd1684dffc85399a8e753fe0e  gcc/config/v850/v850-c.c
! 5b4b0208445edf11688b3a055571638f  gcc/config/v850/v850-modes.def
! b163a9701c478e3ab325d959d67ca462  gcc/config/v850/v850-opts.h
! a35e6a47eb2ecf227b1bb203951b5eb6  gcc/config/v850/v850-protos.h
! eaae70b1360b6d1289075c1167bce452  gcc/config/v850/v850.c
! 5fa6bb28ce3166d2e69f7c1ca07676ce  gcc/config/v850/v850.h
! 0553247e3ab25e04cb0e9278bb990f11  gcc/config/v850/v850.md
! 8e849eb25fa659ad3ba363be056e113d  gcc/config/v850/v850.opt
! 0735f08046ec01419555866d35b1189e  gcc/config/vax/builtins.md
! 23673daa196536e94697cad06e655d5e  gcc/config/vax/constraints.md
! f449fe93a08792dba37b80167cd65c3f  gcc/config/vax/elf.h
! 1de6b13b0cc06ed927803d945f5211b8  gcc/config/vax/elf.opt
! cb0c45a774ebbaa7bd61054f08190e4e  gcc/config/vax/linux.h
! f50df7e7b8b12cada75bd2f82f41dbc5  gcc/config/vax/netbsd-elf.h
! eba5621c9642dda734667366c5a3ea93  gcc/config/vax/openbsd.h
! 68ea6784a6a83df6b85013c7e717585b  gcc/config/vax/openbsd1.h
! 9ad56cd95a18b7eb7cd347e165446445  gcc/config/vax/predicates.md
! 1766f06616cf18ee95e82d08e80418ff  gcc/config/vax/vax-modes.def
! 928b7286dc5ed95af889794dd178be39  gcc/config/vax/vax-protos.h
! d272be385a327f98a166ccc3519c680c  gcc/config/vax/vax.c
! c1aa41300505f9464ce01e59fd1b89b7  gcc/config/vax/vax.h
! 04a99bdd6049d1255b89633426fb6341  gcc/config/vax/vax.md
! cba76e8f9c85cfe0582f7d746fcd8d0c  gcc/config/vax/vax.opt
! b2a6b897db44f58b6ae0c560bf9fd911  gcc/config/visium/constraints.md
! 98194de7b3c3f3650d0e8416bc4fbdca  gcc/config/visium/elf.h
! 1c3955c895617a726ca9ce6f30cfa32a  gcc/config/visium/gr5.md
! 947148ac7828c4add2752421fe1f720c  gcc/config/visium/gr6.md
! ec08e3b6427be09da95d266c0454f60c  gcc/config/visium/predicates.md
! 44c913b685cd954cb87df602ffa459fa  gcc/config/visium/t-visium
! fbbf67e479f15fb96a4faa9600855ba3  gcc/config/visium/visium-modes.def
! a034bcc4ae102d08c54226b290179cd5  gcc/config/visium/visium-opts.h
! 8c9a5ddb995e16709101cd1739bdc2cd  gcc/config/visium/visium-protos.h
! 7c1119d7386dc0ff623c0ded52e882c1  gcc/config/visium/visium.c
! bdc5367c2eb766c89d07c43d57e85005  gcc/config/visium/visium.h
! 0d3c60a0381f55f5e0aacbb7f5416103  gcc/config/visium/visium.md
! e535d1124f35c9d47d9e57d375aaf1dd  gcc/config/visium/visium.opt
! 9b998fecdebe0184a64dc7617888f68e  gcc/config/vms/make-crtlmap.awk
! ad0d5334bb863a8b1d89213225f9e9a5  gcc/config/vms/t-vms
! d918bcf40b8ce7eac254c5e0bf16a8e7  gcc/config/vms/t-vmsnative
! 4d58a8d909119dad857042191ee51514  gcc/config/vms/vms-ar.c
! 081193079ba9244fcdf9445a6ee5c83c  gcc/config/vms/vms-c.c
  88a072da5fbb7828331d88720c03679d  gcc/config/vms/vms-crtlmap.map
! bd632903a5583d65c6138c7c2a7f7b39  gcc/config/vms/vms-f.c
! 2dba62a9b1147c42e91eb813d97db7e8  gcc/config/vms/vms-ld.c
! c54b88553b6e1b1b0ed5b520b4e1ca0f  gcc/config/vms/vms-opts.h
! 9826660cd917e9f06955de0eacbf180e  gcc/config/vms/vms-protos.h
! f4d58e2ae7d6b93aac00887fed360210  gcc/config/vms/vms-stdint.h
! bfa8eee975c7e4c028d1a218a25ec3eb  gcc/config/vms/vms.c
! e023e436a8c736841523064e8eca3ab7  gcc/config/vms/vms.h
! cf011c0f31b2b66ca983b2fd66f2a25a  gcc/config/vms/vms.opt
! 23a7d36f59cb5ff52cf43b7070eadfc5  gcc/config/vms/x-vms
! 47e8b413f2ffef12292e099888a3f604  gcc/config/vms/xm-vms.h
! ee25b4feda0eb337fde7516b7c8d86b9  gcc/config/vx-common.h
! d5e90e4add9423dcfd3bc4c6761d99da  gcc/config/vxworks-dummy.h
! 8348812ab45c5b479e2f6b0c391916b2  gcc/config/vxworks-stdint.h
! f22e05985e61c016c1b3139e6c894d67  gcc/config/vxworks.c
! d46d80ccc5c41f68c49c5e816c873d10  gcc/config/vxworks.h
! 7eeb25fbaac38e734fe35ad7f17eb55c  gcc/config/vxworks.opt
! babd2d1d5f19d476722ba974a8731aa8  gcc/config/vxworksae.h
! 22a9ebfa852486af33302c2222915b23  gcc/config/winnt-c.c
  5cc0a69d6149e22cb7ea38c2206a2af3  gcc/config/x-cflags-O1
  e039340cbf1639956ac7be2a90852c1b  gcc/config/x-darwin
  70a634635eff456ffab3bc53b2a81690  gcc/config/x-hpux
  be8a6e9a94bd2fa1d41af513297364dc  gcc/config/x-linux
  2a6ad432bb06a41ba76f613b392d784b  gcc/config/x-openbsd
  6ad0b39a7daae38439d6d8cfd23c3ba5  gcc/config/x-solaris
! 74334c3136cb87d70639e4bd51bb9898  gcc/config/xtensa/constraints.md
! 84f5291fb688cbd13d3d688ae7a64fc9  gcc/config/xtensa/elf.h
! d35f1b957789c0d4bc771636d0bf76a1  gcc/config/xtensa/elf.opt
! c2f41d409d10f10c06a0de4501553910  gcc/config/xtensa/linux.h
! 06cf8dd86e52bdd2c3960d5ff49cf4bd  gcc/config/xtensa/predicates.md
! 20f9e7e12235a6cc7817921c89d10f02  gcc/config/xtensa/t-xtensa
! 1cf6d89bf87c93180d82f413b92f80ae  gcc/config/xtensa/uclinux.h
! 469a9a76ba51e0f1b25fbf760a831c7a  gcc/config/xtensa/uclinux.opt
! 63481accf82403836ce83a79185b9226  gcc/config/xtensa/xtensa-protos.h
! 37a7d302adf40b6c64f6088738d6aa10  gcc/config/xtensa/xtensa.c
! 97c2e5f153dabd85c063122e7c2912db  gcc/config/xtensa/xtensa.h
! 44daf76d7656ff18a7b2c50412d554d2  gcc/config/xtensa/xtensa.md
! be32e55d84ad27ad2692d9d344b8cf12  gcc/config/xtensa/xtensa.opt
! 81831aef763d745ed90dc500e423aee0  gcc/configure
! 0805205386bf8688f9fbb5de8c35a433  gcc/configure.ac
! f9c1a015d346b30fdc7192725778646b  gcc/context.c
! 09941917d194790bc9f86359ea14cd47  gcc/context.h
! 13ed0366356631a4d59eb7f945040428  gcc/convert.c
! 9fe3da26819f2429b0e35192b8962054  gcc/convert.h
! c0c049d064942d75d95822a6849d16fe  gcc/coretypes.h
! 895863666655dc2efb109556b79dad9e  gcc/coverage.c
! 7019a0a1a14eb1207414a6e0be21131b  gcc/coverage.h
! f7da31bdd464db9a84f7fc31394454f6  gcc/cp/ChangeLog
  d271e3663538ba1f3281cab3838e92cd  gcc/cp/ChangeLog-1993
  f5a44adbc05521162350ca409d1d95ce  gcc/cp/ChangeLog-1994
  ac55db48d964cb5469ff03c1cd3ee04d  gcc/cp/ChangeLog-1995
*************** abf2d28a341385ffa71ccdd523c8fb03  gcc/cp
*** 4316,4540 ****
  c9813fd83e5dfd5ed375b072a52db2c4  gcc/cp/ChangeLog-2014
  495bafb167a5715b4a53a1134343fd92  gcc/cp/ChangeLog-2015
  c70c873ca0345be312457bdc551e3636  gcc/cp/ChangeLog-2016
  c1c7801b9b0f379e702a4f6cb83972e7  gcc/cp/ChangeLog.ptr
  9aa3cd9f75c785de9f51446e3f295515  gcc/cp/ChangeLog.tree-ssa
! 52380899f9da4a59c3b99da38218f81a  gcc/cp/Make-lang.in
! a664e5da3668f808636e156b4e59d16c  gcc/cp/NEWS
! 1d013f2765f88f5c7c8063330a543e38  gcc/cp/call.c
! e370fe34672df8201043ba1a2e1104b6  gcc/cp/cfns.gperf
! c4d6f3b7d0a505fbe74e29774d11cfe9  gcc/cp/cfns.h
! 29ff42a2b71d6da2f092abec2933e31a  gcc/cp/class.c
! d7ab06410b296f55856425add1bfd26d  gcc/cp/config-lang.in
! e72dfd54ec9365a5080e85532d979c94  gcc/cp/constexpr.c
! 307f99a8e6084326c45980647f02b7e1  gcc/cp/constraint.cc
! 56aa0140f84f897feeb4ce54bd6e6f46  gcc/cp/cp-array-notation.c
! 38146ed098d4c26f2e487034266adf13  gcc/cp/cp-cilkplus.c
! c6462a1b73c2a072af8c94f300264afc  gcc/cp/cp-cilkplus.h
! b3093ec10e8a31385127f98513f3d2e1  gcc/cp/cp-gimplify.c
! 5d9014a008fea03abd2bc8c93422b14c  gcc/cp/cp-lang.c
! 4b50cb9e09af605dfd2618a77668ba27  gcc/cp/cp-objcp-common.c
! 329495300d80f28020460da01bd495f3  gcc/cp/cp-objcp-common.h
! aa36e3e3dbb56aa91e4c9c7b03774b50  gcc/cp/cp-tree.def
! d9b628b4366ce37bc9092e7b70cde79a  gcc/cp/cp-tree.h
! 41d94f2c081c6ecf6c7c7780b061d7ce  gcc/cp/cp-ubsan.c
! ceb7718cd5e3462095095448e2809c63  gcc/cp/cvt.c
! ffc3a23e271c5e11d25ac613e8d2f152  gcc/cp/cxx-pretty-print.c
! 546dc862de2fc3919db2d2985e101844  gcc/cp/cxx-pretty-print.h
! 4f5b1bdfda08f3a226f937e8309549b4  gcc/cp/decl.c
! c6b416fb9f920b607825dba7ef8d1a48  gcc/cp/decl.h
! 25ede544cff7d350b4ba23729a563d18  gcc/cp/decl2.c
! aa98548ee09751a5b70c5eb31f1c6417  gcc/cp/dump.c
! a3585afb1a25f599d06e94ece6af3451  gcc/cp/error.c
! 9006009bbe03dc24d4dd97bd9dd4235a  gcc/cp/except.c
! 64d885b72c1c50ab9956e994bd7157a4  gcc/cp/expr.c
! da79ddc6be4fafc84a957cfd070a5c24  gcc/cp/friend.c
! 21ab402dce77246d6a7766b067b429c8  gcc/cp/g++spec.c
! f43eb6c4c3a45387f529ef9e17f6f709  gcc/cp/init.c
! be48106ba86457ede68167384be9e1f3  gcc/cp/lambda.c
! bca5f8c2bd65c2ffd939d16f089e49dc  gcc/cp/lang-specs.h
! 78263a37da49248fcffe573ed7d84534  gcc/cp/lex.c
! fbfb6bc61d27f625485f113193c8bc76  gcc/cp/logic.cc
! 9f433533e64ec9891980cf6cecd72c90  gcc/cp/mangle.c
! 7cfe06010124becb935cb216a131abe6  gcc/cp/method.c
! 7105e71d644a11468e16a343f976a810  gcc/cp/name-lookup.c
! 3c91f835c3688bb59986de0664d535eb  gcc/cp/name-lookup.h
! f0eccfb2b6cc10b6838fc80d7d6cd1e4  gcc/cp/operators.def
! adcc567eaf279137fc92a3f633597e7f  gcc/cp/optimize.c
! 822e3b5c8c51b8682fb9ac3c70185861  gcc/cp/parser.c
! 80b4f9350fbe5bd90898e0758266098c  gcc/cp/parser.h
! 07ad9d18f730f930340367a486a10c83  gcc/cp/pt.c
! ee5df732d6ad1d51078b5d0f67a784b9  gcc/cp/ptree.c
! db936b1b0b3f9a6d128c05631887c312  gcc/cp/repo.c
! b78204514ca7ae7bce11a6af84ab55ce  gcc/cp/rtti.c
! 5a02e3a5ee3953172c8f104d31c8de51  gcc/cp/search.c
! 5d5ddae3ed007ae0f0bf89a2faddcdb4  gcc/cp/semantics.c
! e01586d00327e7e49b631df9c67fd4d2  gcc/cp/tree.c
! 9e5151a4798c91f91d0e0b4415324a77  gcc/cp/type-utils.h
! 4878e5fa9bf6651fdc4515443e3702fc  gcc/cp/typeck.c
! 994a68c01c54a110a148128644fc40f9  gcc/cp/typeck2.c
! c706912cef452d7ab9a54976efc128e5  gcc/cp/vtable-class-hierarchy.c
! b51155275074539477f71e8e53c46d2d  gcc/cppbuiltin.c
! a55eaea7c2160d3b2cb87ad7366a67b6  gcc/cppbuiltin.h
! 68b7c81784975dda5f426be9dcd17b45  gcc/cppdefault.c
! f57a9e1e431b8e0b02ed435273347abe  gcc/cppdefault.h
! ea308f10a24361fd80a48230bce90c8a  gcc/cprop.c
! e0b508928e96e85697f37e780bcbaea9  gcc/cse.c
! 1f60166b6e2c8415c3bfc0ef9fef6b7c  gcc/cselib.c
! 010ae219253ea51585f3d777d6f983b3  gcc/cselib.h
  1ded054093de910d9786c62bc4fe8cc6  gcc/cstamp-h.in
! 5cd9eb97e94d6bfb4f785e966ff401f7  gcc/data-streamer-in.c
! 9c1f7117a4c6069c024819c7e92a5dc6  gcc/data-streamer-out.c
! 464b9e0fae487e89eef1cf28ba588508  gcc/data-streamer.c
! 72871d7f485405c0419174cb540c8f20  gcc/data-streamer.h
! 4e72bfde2d1f2268b42a6e4b0eeaf3ba  gcc/dbgcnt.c
! afeedee11208d03a5103efee41fb41b2  gcc/dbgcnt.def
! e353eaa0cbb9c1669a29d1c1b1f87b1e  gcc/dbgcnt.h
! 26e8fcbaefe1467cb976012b7cf29983  gcc/dbxout.c
! 37f4371fdda11b2c37dc0497b272a958  gcc/dbxout.h
! 5de162a45be40f5c8d514177f9d3d725  gcc/dce.c
! 0da8020721677130afbad8bd7cb89e79  gcc/dce.h
! 8cb5580f92d380a1fd1f5268116e34c2  gcc/ddg.c
! f8909b74975d73c1a18507a15c0c2384  gcc/ddg.h
! c3268c71b43e48a8d40f7d5bd251ae36  gcc/debug.c
! 1729dad25a1ad59fb6a0a5c9dfb1eb47  gcc/debug.h
! 6f45ae58d7c9f3dfa61ea12d76962163  gcc/defaults.h
! 484f1feceb510df735d12cec5df4df44  gcc/df-core.c
! 94a63ea3deeac1bd2bceebcdafe5e7ca  gcc/df-problems.c
! efd8fee823a721c81494884cc7fcd474  gcc/df-scan.c
! 89a96926ab1cc41d1a07ab739a9d3e92  gcc/df.h
! 365cc5c1195aa9f70ca53e111f0b8879  gcc/dfp.c
! d4d8105c826adb8e2870f82fe4fde34a  gcc/dfp.h
! bdd843f78ce6770a9c6d8192cc95ad5f  gcc/diagnostic-color.c
! b31ca809de41dac206548ae23901ff73  gcc/diagnostic-color.h
! 9db669197bc4e7806fcf15e80172c381  gcc/diagnostic-core.h
! 578bfb4177e1ef675697513d24e2e607  gcc/diagnostic-show-locus.c
! 201cdb1ae3e05527a9891cc45f412b49  gcc/diagnostic.c
! cead64e2025b95a49fe6eef81410781e  gcc/diagnostic.def
! fa3e3a71b05debe785657fa85e6d1fba  gcc/diagnostic.h
! 3b7395596d883400b1cb0a17cec0ec12  gcc/doc/avr-mmcu.texi
! 3b6efe79ea75b9372c18c08e6f61f307  gcc/doc/bugreport.texi
! cd0de302fd839f6719b932da4484273b  gcc/doc/cfg.texi
! 428ab05412ea82913fdef07f37d8ec53  gcc/doc/collect2.texi
! ebc01257daa0725663692c5283f9066d  gcc/doc/compat.texi
! 7d014d60b2dcfbc92d7d7b9cf3f81ad4  gcc/doc/configfiles.texi
! 0e9464bec47974f6c152e2f7fcdd7c54  gcc/doc/configterms.texi
! 4d2e260f57c2a56aab4b7539aa8ea7a9  gcc/doc/contrib.texi
! d2ab741503a5629e8b4a70a0e5335637  gcc/doc/contribute.texi
! 23a346751c8bf07ab4a0479ef665abc9  gcc/doc/cpp.1
! 788d307c1c70c5f8bd3fe0e9c40ce543  gcc/doc/cpp.info
! 265e1f73a91ecf4f8c0fec7d753f3a5d  gcc/doc/cpp.texi
! e260807f252068741e2ebfdaa0e84349  gcc/doc/cppdiropts.texi
! 35e9afd06835a4037daf73de3e364d81  gcc/doc/cppenv.texi
! c542ea717cc4724b94e16e2b0e7b2360  gcc/doc/cppinternals.info
! 1f296e408d348921b3ca6959d5cdfe5b  gcc/doc/cppinternals.texi
! 3229dc0c44fab51cc291566148d79e6e  gcc/doc/cppopts.texi
! 13eb634c50488bcf40424e0890a26326  gcc/doc/cppwarnopts.texi
! 84242499b84147a584efe5d3dc52c817  gcc/doc/extend.texi
! 198def664e7cfe4a4cc79c8cae55175d  gcc/doc/fragments.texi
! 0f2077f3962ccb1d6c5c55cac48e1695  gcc/doc/frontends.texi
! 881469f635c3748fa6449cafae9328f8  gcc/doc/fsf-funding.7
! 97e93265e9976430adeba6fbb3e249b4  gcc/doc/g++.1
! 97e93265e9976430adeba6fbb3e249b4  gcc/doc/gcc.1
! b311802b0d721f5557a9173405af3172  gcc/doc/gcc.info
! 82943cac2e651592a301c2081eda9666  gcc/doc/gcc.texi
! 992deb880da4c2148a7e77a2c582470c  gcc/doc/gccinstall.info
! 117bf597587be9f2be09436afd5032a2  gcc/doc/gccint.info
! 1baadd71cb074eb858078e79360a7f7a  gcc/doc/gccint.texi
! 9789b171ee7c77676b478c231405db4a  gcc/doc/gcov-dump.1
! b8d24f76649917a88a4a7b21cd032a0f  gcc/doc/gcov-dump.texi
! 65211b8e0dc25bd3e5ac8cb5b422d822  gcc/doc/gcov-tool.1
! 800ae82031d4de3b2a6fd13cb2b0a48e  gcc/doc/gcov-tool.texi
! 5ca793a43c4919988fc227e9d93790fe  gcc/doc/gcov.1
! 8b2b8c2ffabc034dcf9b102f8b3063e5  gcc/doc/gcov.texi
! 43a3b8154dcc4ca459ea567f9060b4d4  gcc/doc/generic.texi
! f5f68f5ed92ee3c959fabcffa38896a8  gcc/doc/gfdl.7
! 2408a362bec40baffd7aa2f31cb7935c  gcc/doc/gfortran.1
! 30559f39145bc73dde9cee3dd7ac9d3d  gcc/doc/gimple.texi
  290370669f02bef1502ada9273e5261f  gcc/doc/gnu.texi
! 95b3d33d6450425626a0507850e737f6  gcc/doc/gpl.7
! 2581b3abd7f482fed6c88e2989a1339d  gcc/doc/gty.texi
! aedde02cf24a26a69cabaf5846321364  gcc/doc/headerdirs.texi
! f197b98dd6f8c45086532f4a26a50328  gcc/doc/hostconfig.texi
! 8cadb97d449262518b889d716a0c216c  gcc/doc/implement-c.texi
! 3d6fbe029d65ee9bf6b4fe4926259f14  gcc/doc/implement-cxx.texi
  b82b1143f78f373e3c76f6958d830869  gcc/doc/include/fdl.texi
  8787976f426cd52da24a856cd41d87be  gcc/doc/include/funding.texi
! 222ce6214403b4aefc07744ca71fd039  gcc/doc/include/gcc-common.texi
  5f5adc2c6c4ebdcf03cc0125250f5995  gcc/doc/include/gpl_v3.texi
  73819b3930a3d4be5d6234070d02386a  gcc/doc/include/texinfo.tex
! 43de8299a21f1b994c840001ed26cb7a  gcc/doc/install-old.texi
! ca9e57f076db155a030af10d129119f7  gcc/doc/install.texi
! 5d2ea6ff26e6e0a2b6e17e4d477e8385  gcc/doc/install.texi2html
! 8742acc0c4a46ac5075fbd7d6e95db10  gcc/doc/interface.texi
! 6f8adf56e58058c1354250b4c1caf05b  gcc/doc/invoke.texi
! 90ac7735caa268a14f96ad68d78372aa  gcc/doc/languages.texi
! 084981d596106acaf75844a1d5d7d3a0  gcc/doc/libgcc.texi
! 67bc388db0ea8fcd11e555283d08546a  gcc/doc/loop.texi
! 1ff28be695c3648b2a3334a2146972a0  gcc/doc/lto.texi
! 802b4822f3af055ade71632cf1a1f01a  gcc/doc/makefile.texi
! 02aa4a6f54107f731afe5b95003b1e50  gcc/doc/match-and-simplify.texi
! 8bdfdad7a013f10279a08fbafd612c62  gcc/doc/md.texi
! 1a3e94e53997ef4b63ae343796db3077  gcc/doc/objc.texi
! a09721396e9815323356f0ce0b28fcf9  gcc/doc/optinfo.texi
! 49e1f63f833c929b28d8ea7934eee92e  gcc/doc/options.texi
! b4c05b523f1b3f1736e962a6224a007e  gcc/doc/passes.texi
! 55bbb47b3476a4054517e4afd7b1a9b4  gcc/doc/plugins.texi
! b96e0a15eff3d07f71b395d59f799798  gcc/doc/portability.texi
! 63fb4c48868dc673014ddce99883e75f  gcc/doc/rtl.texi
! fad65170a3811a78b6146dd2d3f6e93c  gcc/doc/service.texi
! c6c1fabb7733f32f532abad39f392b4b  gcc/doc/sourcebuild.texi
! 415434ff17f5a40c97dc2202dbc0d5aa  gcc/doc/standards.texi
! 49b59b2b3ae5cfc0c364a51e0de720e3  gcc/doc/tm.texi
! 629f92035aaa2a20c09ebc6971a24841  gcc/doc/tm.texi.in
! b774c6ee0d4e224ec129702426c5e428  gcc/doc/tree-ssa.texi
! d38fa1e575d131ba18493ab2b1a17386  gcc/doc/trouble.texi
! 2ec94069ccaceb227d3307427440c855  gcc/dojump.c
! 3d5e259eec8938a61f62e72e0c8a1408  gcc/dojump.h
! 9198bacfb85759eafaf1bb802650fe85  gcc/dominance.c
! 4f7785690a9752acf22914ddaeed19f7  gcc/dominance.h
! 9271777b2a8031d1143884103231aae6  gcc/domwalk.c
! c9c017c1a6d182db465e420a401dc5e4  gcc/domwalk.h
! fc595b2b68f9d9e19805b1a15e37c623  gcc/double-int.c
! d3c114e68e1cb29ad92ba50115cb0882  gcc/double-int.h
! 5de50b008cb62bdfeeb30fcb5333aa35  gcc/dse.c
! 46a8e04aace8f43c10dc450d21d70288  gcc/dumpfile.c
! 746d14943c5f560f556cc6ba9aaf7715  gcc/dumpfile.h
! 1c23aca7ebd5e78682c77a10e92740d1  gcc/dwarf2asm.c
! f7caa5023e329cc7eb3c06fd9ceb9bed  gcc/dwarf2asm.h
! 6cddd6e1d295b0dab3d3303ce424838b  gcc/dwarf2cfi.c
! 948778957e9432b3e35f59614dc69742  gcc/dwarf2out.c
! 3759ab65f22dade947ac51b51aeda4b3  gcc/dwarf2out.h
! efca4a45c30ac633725951382e487ebb  gcc/edit-context.c
! 7f9fbe6415299ef034385a7ab3cfabd3  gcc/edit-context.h
! 30021d565098e276a0b5d187837e292a  gcc/emit-rtl.c
! 361060e51c272bdb80495bb2e228487f  gcc/emit-rtl.h
! 1a5c8e034b1ea3e445563860d8fc02a0  gcc/errors.c
! cf1e025818ca472f9a1c116e67ef4cc3  gcc/errors.h
! 4e6a38bef0b4a58dcbba54f83aa33877  gcc/et-forest.c
! 1e361eb1654178076a228080dd608bb6  gcc/et-forest.h
! ded527f19a4233b5404c3d551f9d29e2  gcc/except.c
! d0a7dc02daccbdcdd63a1d0f877c6af5  gcc/except.h
! 2ea49737d7b49d3ecee03ec6ba2dfd2e  gcc/exec-tool.in
! f20130a1d04970609f42de8b3c8aed6a  gcc/explow.c
! d252cd5dd9657304bdc0002539b65a19  gcc/explow.h
! 29b1f4ad5319703451634c14a24279ad  gcc/expmed.c
! b583afc565dc4b1f111f4cc1731bef2a  gcc/expmed.h
! b6eda19313836239ab67d0cbe7d1a286  gcc/expr.c
! c86cc2531fcf8b1ada0373572b1b7acf  gcc/expr.h
! f6f78aeb7c8ce93cfb147c8f3168a779  gcc/fibonacci_heap.c
! 3ade009fde9a4924090332142873a749  gcc/fibonacci_heap.h
! 1b56f5236cd854fd307e3ded0653ddab  gcc/file-find.c
! 895775a7ab087cc00a99bc0b23c6ec6d  gcc/file-find.h
! 238e8daf5f59662ab41997c30b651363  gcc/final.c
! 4d6d0d3ed9459bd59fb8b34e3f732bd7  gcc/fixed-value.c
! 719b77e854e9ffae1cb86430cd68de4e  gcc/fixed-value.h
! 397b3c43b5f2649a6c9ca5816cb18f4a  gcc/flag-types.h
! cd76e0eb7ed6b4f0486461f0d1948045  gcc/flags.h
! 6927943dca40ac5f7ae356c063919105  gcc/fold-const-call.c
! 0da9f50d2a25c495dd6e295346612b51  gcc/fold-const-call.h
! 228f1b0262deda42667d79941c43df40  gcc/fold-const.c
! 3dee9f07878a132cee302c04066982f0  gcc/fold-const.h
! 82032cbe84ed909417d5ae3b7b6b439f  gcc/fortran/ChangeLog
  3330102ad3a0217cba963be6b5eefd58  gcc/fortran/ChangeLog-2002
  d000ab985b1eeb1ad5749f98b8fef99f  gcc/fortran/ChangeLog-2003
  bf42f94f0c51dcc7d8051cc7fda1efdc  gcc/fortran/ChangeLog-2004
--- 4510,4736 ----
  c9813fd83e5dfd5ed375b072a52db2c4  gcc/cp/ChangeLog-2014
  495bafb167a5715b4a53a1134343fd92  gcc/cp/ChangeLog-2015
  c70c873ca0345be312457bdc551e3636  gcc/cp/ChangeLog-2016
+ 965f4de4d6e16d776ab9b1a3e169c08e  gcc/cp/ChangeLog-2017
  c1c7801b9b0f379e702a4f6cb83972e7  gcc/cp/ChangeLog.ptr
  9aa3cd9f75c785de9f51446e3f295515  gcc/cp/ChangeLog.tree-ssa
! 44c35d63af02e8fa5641989b2f0820f9  gcc/cp/Make-lang.in
! a13b72c2be1f0d58cf692cafb78ff106  gcc/cp/NEWS
! ce728009ccda0659022aa29ebff878c3  gcc/cp/call.c
! 9abe2d1b127f2761a9b52b97fbdb9ec1  gcc/cp/cfns.gperf
! 5389e5fd89452259352383e7f7ce3fff  gcc/cp/cfns.h
! c0f393e00737a020753fc6b7eedba4c8  gcc/cp/class.c
! f6634d3dd25b744d80b6463d153f29ac  gcc/cp/config-lang.in
! f32ff79ecb8a4d32d10459c715f7f715  gcc/cp/constexpr.c
! 89f593e8c98278d8ad700aee95665a89  gcc/cp/constraint.cc
! bdcd7365a29ccfb8dcd53feaf97a6579  gcc/cp/cp-gimplify.c
! 8d11cb46ceb32e0717a862a5ec754374  gcc/cp/cp-lang.c
! 1171638dfce063f3a25c42780e2b2c1f  gcc/cp/cp-objcp-common.c
! a913da461b6f1a49b31023d0ebbdf67b  gcc/cp/cp-objcp-common.h
! ad49e45ec2343c757ed3b1ea1069d661  gcc/cp/cp-tree.def
! c5225752e52d00f84c241bf18b8102f6  gcc/cp/cp-tree.h
! 33972c71f6c6035e636c350ae6e6e5fd  gcc/cp/cp-ubsan.c
! d90d91f0ff8767929c0553b5a00402f9  gcc/cp/cvt.c
! ef76fbbf5f9d145103970055ffd84d01  gcc/cp/cxx-pretty-print.c
! 13262d34ab67984f1c386024e953d217  gcc/cp/cxx-pretty-print.h
! f90c584f86124d8b1b7549b341097e94  gcc/cp/decl.c
! 5501a00d10aa487d402cc2f1afd87c18  gcc/cp/decl.h
! 309825738aacb04502836a67eb8de391  gcc/cp/decl2.c
! 91ecc2454d3e0d78bff70abecff1d521  gcc/cp/dump.c
! db2a59199edeae0d1372fd75a22d1fd7  gcc/cp/error.c
! 0174f4e12f4f7e6c2639ee79e26dd503  gcc/cp/except.c
! bda49c38a0c9e8bd2405b3d50a5b8941  gcc/cp/expr.c
! 9f7faeecf3bf945c3786f3edf962c580  gcc/cp/friend.c
! 5d579a9172a514e43539f964dee83eba  gcc/cp/g++spec.c
! 3563e8ef7b8309d8a526ae970414e08a  gcc/cp/init.c
! 16194a5b700eafbd131aea8c581b82e7  gcc/cp/lambda.c
! 233a5981c3f13caa280c5bba26cfbe28  gcc/cp/lang-specs.h
! 22372b2ef4cf97357a48de1a73244743  gcc/cp/lex.c
! eca62cf53f871aa6913e2c734fc94bfb  gcc/cp/logic.cc
! 866237c3e8e5327884ce528fddba5db1  gcc/cp/mangle.c
! a4e1bef7863bf880dd90bdc1178cd0e2  gcc/cp/method.c
! 5f2b2b73b67ffc2b2eb354070b3fa1fd  gcc/cp/name-lookup.c
! 7aca3f7e71336fb86bb9397fe5c98fd0  gcc/cp/name-lookup.h
! 7999d8537059142826bf293be832a171  gcc/cp/operators.def
! 6feeb702b3ccdbc403cef4c8d64a907c  gcc/cp/optimize.c
! 117708c84a45cc7b3b7868db325a1f5e  gcc/cp/parser.c
! 4bb2c293d71dc0d59b6363d58c197b7b  gcc/cp/parser.h
! 419bdadbc74d4f4a7a7da40b6d0abb95  gcc/cp/pt.c
! eac77f6c1d074e5e5e5d94962b8e03de  gcc/cp/ptree.c
! e1f9d5051218958fa8b08dedb3510c09  gcc/cp/repo.c
! 1caf25d6209863e9f6bae25615b7835a  gcc/cp/rtti.c
! 7bf537f84b33ec91706a4804ec99bd05  gcc/cp/search.c
! 446db7c915855509c7f6a4ba44f28693  gcc/cp/semantics.c
! 2b4a1546d018c8886b538009ec0c37c4  gcc/cp/tree.c
! 6936db73722ddbe991df180715229427  gcc/cp/type-utils.h
! 82f2a36b7341fc48bd7c403cd237a47c  gcc/cp/typeck.c
! e8eaf95f9d6b8e2d5894056626e18ac4  gcc/cp/typeck2.c
! 5136c07637d5ae7fd14f5e96253c9258  gcc/cp/vtable-class-hierarchy.c
! a2eabba8fbb748371d4bbab5a475552d  gcc/cppbuiltin.c
! 5d962b5c9c79b2351c67f54a8b0c870d  gcc/cppbuiltin.h
! 61d20262bb57f6ca88b1cf254a5d174c  gcc/cppdefault.c
! 4678f450942f9161d8fec415c7b4b3cc  gcc/cppdefault.h
! 42674efc40d89ee02720273941d39855  gcc/cprop.c
! 0575e15cdcb2c150c8839fa3a55dc427  gcc/cse.c
! d5cffe97b986419da4430a46c33efe31  gcc/cselib.c
! ea14cd0c15ae3420a91e8b5f93c389da  gcc/cselib.h
  1ded054093de910d9786c62bc4fe8cc6  gcc/cstamp-h.in
! e0e1066ba4229b84e2786315f277f607  gcc/data-streamer-in.c
! 3e92ccd8455c84f9aa5711363da592c8  gcc/data-streamer-out.c
! 57141a88b3774ee3de0596add43abaeb  gcc/data-streamer.c
! 9100dd3fc5ed8997a72d77034c277695  gcc/data-streamer.h
! 332f63edb1866f56f48abb43b8551177  gcc/dbgcnt.c
! e856dbd81fa4a9ecce4e761d62767738  gcc/dbgcnt.def
! 9b39ff7c950a2d234633560242b8fb78  gcc/dbgcnt.h
! b019ee858ac23dc8956f07d217189fc3  gcc/dbxout.c
! cb156d97d13532b0c6274979bb48a21b  gcc/dbxout.h
! f00b457e27cf37a988cac3052c0ca720  gcc/dce.c
! 6ff53f1bd0646a9f82c69d21bab36f45  gcc/dce.h
! f8a2cd292b30e2a2de3c6e69756f0a2a  gcc/ddg.c
! 43fc774c972174af68c11a16a97854ab  gcc/ddg.h
! 96742d983b626db85a7ee70c6d9c4ea5  gcc/debug.c
! a7513661cee5f0fe6d12aeb65f39c67b  gcc/debug.h
! 8d977bb0cf3307f016f4d109b3b68b62  gcc/defaults.h
! e6291d6003e187efe72d90b1650526ba  gcc/df-core.c
! b9ccf22b2d893950319cd090bf8d9850  gcc/df-problems.c
! 05c8a7b23cbf21a241e3ee788184083d  gcc/df-scan.c
! 1ecf7570d635a072ee254435a51c5138  gcc/df.h
! cbf416363319e328b37c8de115604d99  gcc/dfp.c
! 552a566c8d06ea5478653f4677fbe4d1  gcc/dfp.h
! 3a861165e604139843b41559dfa0567f  gcc/diagnostic-color.c
! dd1154890ea1589e8ee55b179c3cba7a  gcc/diagnostic-color.h
! 4295836c8fd70c6b3d7cfe7348358929  gcc/diagnostic-core.h
! 79d3517271e51e581cc4e0a3b318e697  gcc/diagnostic-show-locus.c
! a2e2bb52f6580de37f48b21481326eb5  gcc/diagnostic.c
! 34ff34e70ee21994b32ed6f8797dbb70  gcc/diagnostic.def
! a50eb519ba69860eee90586f0554cfa4  gcc/diagnostic.h
! 5cba0d3fc5a052bd2241bfef8a593757  gcc/doc/avr-mmcu.texi
! a03612cca367b5ecbb5192f605e806f1  gcc/doc/bugreport.texi
! 1fe0ba7429ac86615aa75bf6815612f3  gcc/doc/cfg.texi
! b7905f4ade67d1968ab1fcce3bad3480  gcc/doc/collect2.texi
! a23535c7db0c6f475054ba2cb1d438c1  gcc/doc/compat.texi
! 700782ba93176aa1ac7dfee603911bcb  gcc/doc/configfiles.texi
! cff2e685f1a9f6f4ce0070fb9c1a0620  gcc/doc/configterms.texi
! 12de3a3dd491517501344c465ad0ef84  gcc/doc/contrib.texi
! e199d603e49f05735eee3939926e7cd6  gcc/doc/contribute.texi
! d6e20575004d0ee0e140d46a6d5e35f6  gcc/doc/cpp.1
! d1748ee0354d77e15e94e2f312170ddf  gcc/doc/cpp.info
! 1e3db4df621db13a0b39f924c8f278eb  gcc/doc/cpp.texi
! 7c02324cc006f220459805063014518a  gcc/doc/cppdiropts.texi
! b2084efddf7328253f4224f392c92a4c  gcc/doc/cppenv.texi
! e78fb9ce2cb25beb53a6bd110c4a8540  gcc/doc/cppinternals.info
! 556b73e670042539fbdc022a731bb105  gcc/doc/cppinternals.texi
! db073af8991f4e1229389381b3d6dd85  gcc/doc/cppopts.texi
! 82446e76de3ab1bef723ebd97912a632  gcc/doc/cppwarnopts.texi
! 9c4c5012e628da3e55172b3ecb553755  gcc/doc/extend.texi
! c1e11bb67ed686b1affe2cc477f70550  gcc/doc/fragments.texi
! cf06864101b61455759a16faca3e70cd  gcc/doc/frontends.texi
! dfdf84a0b9d411a9078c163f44ab21e9  gcc/doc/fsf-funding.7
! 3ff505b5a5eccbb80fd6158aff7e0b62  gcc/doc/g++.1
! 3ff505b5a5eccbb80fd6158aff7e0b62  gcc/doc/gcc.1
! b8efd786e012bd9a2f2499d671a905f2  gcc/doc/gcc.info
! 71873939d138f16b52e7053f4d7d3f77  gcc/doc/gcc.texi
! f3894bfea885aed785d1f9e9c708ee90  gcc/doc/gccinstall.info
! 5706c731a7278043aa8aaf5803720f6c  gcc/doc/gccint.info
! 8cf490d8be79f659c8ba8c27dada6c8d  gcc/doc/gccint.texi
! 9062c2fd3d6a48b3df4322f11b4bf88d  gcc/doc/gcov-dump.1
! ce533f1bf4a49f9eb606882e58f0a414  gcc/doc/gcov-dump.texi
! 12d13b807e02cf0b16887999e5128990  gcc/doc/gcov-tool.1
! ecc3e7352f48a2b6553e89c1c0f6b9bc  gcc/doc/gcov-tool.texi
! 53756446a50d50a2fd4e8d22a4aad20d  gcc/doc/gcov.1
! 4e31e6b57c8e9af4d8491f7d29fecf3c  gcc/doc/gcov.texi
! 8b699a7b687444171cc61644be51e3e0  gcc/doc/generic.texi
! 87d5f240ea1703388e805dace39c1ee0  gcc/doc/gfdl.7
! 885a1d1dd34238d619d48ed8c0fb8c9b  gcc/doc/gfortran.1
! b3610e4a79ea6cdf06f44fccf1f934af  gcc/doc/gimple.texi
  290370669f02bef1502ada9273e5261f  gcc/doc/gnu.texi
! 09ea3dd647e987b3b8831abec5d699ad  gcc/doc/gpl.7
! 0d41af709032cd77cccb7972c03fa712  gcc/doc/gty.texi
! 317e73b5e45097060cfe6be2186b531a  gcc/doc/headerdirs.texi
! f5b492a2f1fb4916502cc396c21ee275  gcc/doc/hostconfig.texi
! da9235cc39a457316a4d753c7b5dbf91  gcc/doc/implement-c.texi
! a5f4dfb750dd19004b5ce2d7206f5d2e  gcc/doc/implement-cxx.texi
  b82b1143f78f373e3c76f6958d830869  gcc/doc/include/fdl.texi
  8787976f426cd52da24a856cd41d87be  gcc/doc/include/funding.texi
! b476484399f312392032b166c2e042bf  gcc/doc/include/gcc-common.texi
  5f5adc2c6c4ebdcf03cc0125250f5995  gcc/doc/include/gpl_v3.texi
  73819b3930a3d4be5d6234070d02386a  gcc/doc/include/texinfo.tex
! a8ef8aaffff076cac48e316bf7a1719a  gcc/doc/install-old.texi
! e2d60aecfbb21db60539efb68c9d2a0c  gcc/doc/install.texi
! 1ab54698a1001c2304a579a19b2aa1a3  gcc/doc/install.texi2html
! 607379a18f52f449cac65d16265a9076  gcc/doc/interface.texi
! ca5e7d1b3eb81e5f527cb25f933976ad  gcc/doc/invoke.texi
! 99ffcf94b1906902e750ad39db855775  gcc/doc/languages.texi
! f13c954a47504e1577bb0e79be3db556  gcc/doc/libgcc.texi
! b66f6bc3378f4edaf1851c2c46f26d65  gcc/doc/loop.texi
! 4d3e7bc856d2aecaad7786848e0806c5  gcc/doc/lto.texi
! b19d360bcce7bf2aff8a335a11efdcef  gcc/doc/makefile.texi
! beb96df4321f5cbef95821074798b6ca  gcc/doc/match-and-simplify.texi
! 71490555d6f2621a75e1a468d9864d0d  gcc/doc/md.texi
! 9893d33f34132bdb792d592d1df70111  gcc/doc/objc.texi
! a4f6e07928e13a6c410f7e8b39ec5eb8  gcc/doc/optinfo.texi
! 685eb978dc4b9a4361c062631100142d  gcc/doc/options.texi
! 8207848e83460c00fe7b9aa187494d54  gcc/doc/passes.texi
! 358b4fecafc91f90a3a955feb1385303  gcc/doc/plugins.texi
! c825c5e517716c7916155d22dd536600  gcc/doc/poly-int.texi
! 21edc61590a5bc59767f56d6f52d3a02  gcc/doc/portability.texi
! f5d1723626f2b5dbe0cb58f17213a858  gcc/doc/rtl.texi
! cb2ab85ac7b44ac5fb4b2b20cecacdb2  gcc/doc/service.texi
! be0f3a48ab251a49568197982c0e6f88  gcc/doc/sourcebuild.texi
! d1c9cbcf75c6fe057d997439a97d7920  gcc/doc/standards.texi
! cc364ed3dbd939003e3139b473bb0556  gcc/doc/tm.texi
! 0871c111b04d5ede16fcd2264769f1da  gcc/doc/tm.texi.in
! 84587f3a624060c5230e479ac1d3a0f0  gcc/doc/tree-ssa.texi
! 7ae487067762c6aaa8aa7ce119916054  gcc/doc/trouble.texi
! aa5b22fc70f4c4d582bf31eb7d0e3820  gcc/dojump.c
! 2475b0b7a40afa2fca3ce5152467b10b  gcc/dojump.h
! 86c2081c15e8c6ae618864960f6cc7ad  gcc/dominance.c
! 4086b85ab88aa338862e12048ac0a5c8  gcc/dominance.h
! 8a1df2e4de8940cbb9fa679369c53f9d  gcc/domwalk.c
! e3159104bcf8fa02d17ebd8fdef1d601  gcc/domwalk.h
! e46a0678cd58056e1ad2bccc1f1767a9  gcc/double-int.c
! 3014d385a35cb8c0f86f4c8d55ed9c7c  gcc/double-int.h
! d14581702e7f559a575f2c2dd54b25cb  gcc/dse.c
! 27d2c31d370f7348c76c3e0d1e104abd  gcc/dumpfile.c
! a6ac033ab207e2db558b953e2b86f763  gcc/dumpfile.h
! 5180a42afcab61545fa230784fe1a143  gcc/dwarf2asm.c
! a3b5fe42438f913189aa4613c0f0f2d9  gcc/dwarf2asm.h
! 4394f733fed8a69985296868cc4f6c12  gcc/dwarf2cfi.c
! a4a7c79179c3511b9336b54253364960  gcc/dwarf2out.c
! 0101e0a5ea82db816cd96a515204bf62  gcc/dwarf2out.h
! 14418ad02a37c7f769973c7f8bf2d390  gcc/early-remat.c
! a3ebe63cea199a03023109bc8d558db4  gcc/edit-context.c
! 0d19d40813a11f9fe3a1139fa5d44b52  gcc/edit-context.h
! 96dceb72f62035c2527f79cff10075d1  gcc/emit-rtl.c
! 1547fc041ebc5c1ae718a3fb86379f48  gcc/emit-rtl.h
! 025bf76a01355414d0a9a80594bd870d  gcc/errors.c
! cb73326ed478016ad34331dbdf8ca68a  gcc/errors.h
! de6560abcac90b6c2b6390150efde7a6  gcc/et-forest.c
! 347d60bd0a0d34141ff51e44aecb9732  gcc/et-forest.h
! 7e3010b7cb70312882892002e97e4a56  gcc/except.c
! 47ff89ab5845c8bd353b51040c08dc2c  gcc/except.h
! f4f32d5d7df51a89d6ad7806abb093b8  gcc/exec-tool.in
! 766208a1d9661cbd7241f536dec0f908  gcc/explow.c
! fad9690ce289d164035f3edb225a2691  gcc/explow.h
! 53b22c6858840ff63fd9e0d2134f22bf  gcc/expmed.c
! 343179acb2dc99a656f3b7df79d1523a  gcc/expmed.h
! feaf5f4d3b2b40b8935271e3d5f3a1c0  gcc/expr.c
! 57e6cb651aaa3cba43cfd5a641a75bad  gcc/expr.h
! c4b60a613a78dc2f2c8ecd587d9ed598  gcc/fibonacci_heap.c
! a7a89c2476c5141b06d51d92b607e5bd  gcc/fibonacci_heap.h
! cfd1d2053717201ca19daf5a14d9fdc9  gcc/file-find.c
! 89e41b552551c61ef121d2304954da58  gcc/file-find.h
! 2275a451ad48a8fd788e234c99f63785  gcc/file-prefix-map.c
! 1ee3d557eac6688aa5497db997529c14  gcc/file-prefix-map.h
! 834397f574207f8f1e1e0f4fad86fff3  gcc/final.c
! 1e9d38c6fac060da56d2e2ea81e5ecc7  gcc/fixed-value.c
! ea4967d664354ef3cebedc39957ec403  gcc/fixed-value.h
! a3d5d540b846b06a0ac04a444d49591e  gcc/flag-types.h
! c21cc83079a7c945decf177bc2f6fb77  gcc/flags.h
! 5f39cb799fd3316c3c09575a766d9c5f  gcc/fold-const-call.c
! a35f203fc68fd7cc82e04c0bafb0de01  gcc/fold-const-call.h
! a86334790af65f27f8912e32eb358660  gcc/fold-const.c
! 3b871f8513fcc4a84fd9fb9d6596dccb  gcc/fold-const.h
! 64d6096ec6e18cb35ab6156e55bea240  gcc/fortran/ChangeLog
  3330102ad3a0217cba963be6b5eefd58  gcc/fortran/ChangeLog-2002
  d000ab985b1eeb1ad5749f98b8fef99f  gcc/fortran/ChangeLog-2003
  bf42f94f0c51dcc7d8051cc7fda1efdc  gcc/fortran/ChangeLog-2004
*************** f851636001c3cc77afa05855758aa841  gcc/fo
*** 4550,5314 ****
  b378eb9df97ed252ce2624646d05df15  gcc/fortran/ChangeLog-2014
  a71efd3e199a80ee07c7f350cc8fcf91  gcc/fortran/ChangeLog-2015
  87a1607d67d7b571432a0e83b1e4aabf  gcc/fortran/ChangeLog-2016
  9e0636f92243fb9b3480e27cefc96749  gcc/fortran/ChangeLog.ptr
! f118c66e409492da0bfe1c57a83276c2  gcc/fortran/Make-lang.in
! edbdfa68f3d51964c5ebc63a2bf4b60b  gcc/fortran/arith.c
! 9e52ef7b47604fcff001ed312efc53b5  gcc/fortran/arith.h
! 8b0ae138dc03675da0db94570552db8e  gcc/fortran/array.c
! f32f20357bba1a9cc926911dc98c1cfc  gcc/fortran/bbt.c
! 73f93ef51da06d68256d5dfea4605ae8  gcc/fortran/check.c
! 132d0ed0514568cbb856ba1f5a68317e  gcc/fortran/class.c
! bb0ee5873d155869e95ebb483458cb8e  gcc/fortran/config-lang.in
! 1ed808fc4a4d991803dfde347ddce84a  gcc/fortran/constructor.c
! 1593dbd0a6495b5ebd71396758aacf2b  gcc/fortran/constructor.h
! 7a87d91055bcfd9e8ccd9cecdb995330  gcc/fortran/convert.c
! 6431cf61d7ee860834d71b17dad47cbf  gcc/fortran/cpp.c
! fa144458c4bca9ea098fcc49e69c20cc  gcc/fortran/cpp.h
! 5078e96177b0c85581c22c0d40a396e7  gcc/fortran/data.c
! 5d6574d0968f27afb4f3f41972e5f971  gcc/fortran/data.h
! c59b54f13e2dd2eec1574728f1b17d87  gcc/fortran/decl.c
! f8486e9dde69b3b606bbc76192b374ab  gcc/fortran/dependency.c
! 6933dfd689c80beb5bb29d30026a34a1  gcc/fortran/dependency.h
! c3fed47839886fe87dd3656caa11c7e5  gcc/fortran/dump-parse-tree.c
! 14ccfb214cc78c6632e78ebc5d43e4f2  gcc/fortran/error.c
! 76703a4c94b2ca424a4367442e87150a  gcc/fortran/expr.c
! 05f704e72952b3ef3b591809d8bb33cd  gcc/fortran/f95-lang.c
! 0158e26a82ec42b8f9cb9d6c94759857  gcc/fortran/frontend-passes.c
! 1aa4f0a9593c4082dfc8a446a8021662  gcc/fortran/gfc-diagnostic.def
! ae757ab385911de35e92e949d47d76d9  gcc/fortran/gfc-internals.texi
! 56c1939f1b1a0f73ee6268ef407a6c83  gcc/fortran/gfortran.h
! f8e4894a8c77d4db71304f39ed221449  gcc/fortran/gfortran.info
! 2c8f2a8e4a156cc2c60a93eed11d1a78  gcc/fortran/gfortran.texi
! 258ff078d7fd588b1db5276e388b42d3  gcc/fortran/gfortranspec.c
! 93a26ba55a9d506f10783cb832724d71  gcc/fortran/interface.c
! 81504f550fc73cbddec9f7ce09c9db54  gcc/fortran/intrinsic.c
! f5a621f4d92bd975f19fa58c09b9e6db  gcc/fortran/intrinsic.h
! ba1407cb79153040295068873f19ccc1  gcc/fortran/intrinsic.texi
! a349d8cead3c7c976d6e938e97cf3c66  gcc/fortran/invoke.texi
! 276b063b9f15c5fdde418b089100ba90  gcc/fortran/io.c
! b75de9ab8d416c7abd953e5b7b3f3993  gcc/fortran/ioparm.def
! 2188c509e492d35bc0022016b1e92f20  gcc/fortran/iresolve.c
! 8093b2b38a01c2e488976f991dd1f954  gcc/fortran/iso-c-binding.def
! a84b351eca744eb4326cdcf48ed2d447  gcc/fortran/iso-fortran-env.def
! b6a48d929dc4bab485565b69477b39ba  gcc/fortran/lang-specs.h
! 143689d60ddc29b5aceba7f734381371  gcc/fortran/lang.opt
! 645bd6455816a65c53807b5362dfec6f  gcc/fortran/libgfortran.h
! da4850dc618f5aec7ece1748c9944105  gcc/fortran/match.c
! 00a03b372a4378e1c07376ecf0602940  gcc/fortran/match.h
! d7e915937eda00d735c03407c30c147a  gcc/fortran/matchexp.c
! 87a743f124dd99426032cc7ad19284bb  gcc/fortran/mathbuiltins.def
! 9d431851867d6a83a9328224ab69473f  gcc/fortran/misc.c
! ca57cb2a2d0c28803299174636bb8c7c  gcc/fortran/module.c
! 72e9eb1f6f16e2794401854d4c90f425  gcc/fortran/openmp.c
! e8210239d0ae38ef26cbcec563bb173a  gcc/fortran/options.c
! cd92ca4dfa37306a53dad87d839f8d6e  gcc/fortran/parse.c
! e19e43330242c8950da01afa94a4f04b  gcc/fortran/parse.h
! 1e9be7262aaffda5b49993434c6d3665  gcc/fortran/primary.c
! 8a3d3c547e67d7248027bcab9dab69a9  gcc/fortran/resolve.c
! 7ada4167f5cb66e95dc80a102e6c3b7a  gcc/fortran/scanner.c
! 6761df883b8094d737206a8ba1c9f089  gcc/fortran/scanner.h
! 9c48e89d25ace2aa7d92c8858cbc803e  gcc/fortran/simplify.c
! 764d2fa05e4399ec39d47288d3bf78be  gcc/fortran/st.c
! 3e76a7ace0e498c23235cc55bf9ba4ac  gcc/fortran/symbol.c
! 04454a5aa04e742aa88cf053d40e0357  gcc/fortran/target-memory.c
! 1a603863c873416a3e2a080510768dd2  gcc/fortran/target-memory.h
! d9648912e83e0fb0f62e827d1f38e636  gcc/fortran/trans-array.c
! ab7472b590e1c49b9167f2f0516f3aea  gcc/fortran/trans-array.h
! f982772425e7d9a65cbb819062be79e3  gcc/fortran/trans-common.c
! a2301830f80d9a2d2fa804e044559cf1  gcc/fortran/trans-const.c
! f3cd9953e1d7b41f8b4340256b01d9db  gcc/fortran/trans-const.h
! 0a9f66e2694f4ed4fdba13d6f2baab6f  gcc/fortran/trans-decl.c
! fa6219a646b4f37b9eae101942496e1a  gcc/fortran/trans-expr.c
! 03565f51bc2795d46675b2338c5f2089  gcc/fortran/trans-intrinsic.c
! cafc1a1e5c27843235689aca4b4445be  gcc/fortran/trans-io.c
! bcc5f8fcacb73d3f17e324477dfa974e  gcc/fortran/trans-openmp.c
! b03423f1367c96e2e4559fd981bfae96  gcc/fortran/trans-stmt.c
! 09ff062ad8cb2da1edf2aefc8fec0dd0  gcc/fortran/trans-stmt.h
! 38dc288b225507fea2e53ebac49344c3  gcc/fortran/trans-types.c
! 8afb8a4ba30f131571e5bbd641342396  gcc/fortran/trans-types.h
! 530cdb5146a0273fc8d75438e976c9d5  gcc/fortran/trans.c
! 596d0ef11ab5ee083f7de6987eac3907  gcc/fortran/trans.h
! 9d4b686857ace1c80925708b17d45124  gcc/fortran/types.def
! 35369c9f7b73348c0b6b15b8bc83e317  gcc/fp-test.c
! 4283b513d2c30438a7f09915c9a82423  gcc/function-tests.c
! 41ffcc0bd97f117d29338597d6405282  gcc/function.c
! dd500d77758f3dca71ae1b2251bfcd63  gcc/function.h
! 06a221444dd61295a4de421f6bde7091  gcc/fwprop.c
! a3f2a611478af96e6ff01e90ca40e114  gcc/gcc-ar.c
! 08da5fe7fa92be26d66951727049c163  gcc/gcc-main.c
! 8e25dd9fc9c725f1623a9ca950e0f6d1  gcc/gcc-plugin.h
! 7c9fd2e11b34b851cf28dbd84544a4f0  gcc/gcc-rich-location.c
! dc7ef3b4c8953b4d7e41e69edb146c23  gcc/gcc-rich-location.h
! faa0d6ea88042246ed13a328764e8f56  gcc/gcc-symtab.h
! 38d678611dc3b0c6bce0a2dddad152fc  gcc/gcc.c
! bddd9d7c109f1e414177fae896a92969  gcc/gcc.h
! d41b63516043eba8422eddcae6f35ae2  gcc/gcov-counter.def
! d8b2bd39803fbdfd289883b9eb7615ca  gcc/gcov-dump.c
! f81d5d200e671ca11b3c77daa61e138b  gcc/gcov-io.c
! c82adc9702c2427ee9c9b43ed895690b  gcc/gcov-io.h
! 968da89f86b438931717052246d5eb75  gcc/gcov-iov.c
! 035f45b2e618430dd495ec4254aea26a  gcc/gcov-tool.c
! 009a5588d34d2c697e51557671a52207  gcc/gcov.c
! ce19b5288593648402ea8145810d6048  gcc/gcse-common.c
! d50367250c6353a0bd6adad0c572f209  gcc/gcse-common.h
! 3cf1e474b24bd138960a515e216a4920  gcc/gcse.c
! 3906cc4c5e98688892893c74860cb0c7  gcc/gcse.h
  af83e4b4719ee065872080b713d24c2f  gcc/gdbasan.in
! de6f9b8eed02e4d50b470ca2c9888e68  gcc/gdbhooks.py
! 8c99d0fc2510d22d63979580d608a427  gcc/gdbinit.in
! 0c8a0ff760716b1a9363bbbf532f75ba  gcc/gen-pass-instances.awk
! 2420531478d7f9ff1336a64ca9035c2c  gcc/genattr-common.c
! f6d495f2da90cc2d9f03d4dff6949840  gcc/genattr.c
! 369ae511b13bf654d6a638cefd7834ae  gcc/genattrtab.c
! 1a764ce61ac92965c54743dbb96d4f22  gcc/genautomata.c
! faaeeaf4ac319821781cbac23efeeb82  gcc/gencfn-macros.c
! c098fa31991119215bd522545a8339d1  gcc/gencheck.c
! 8d801aa508245f89b07c645ccff456dd  gcc/genchecksum.c
! 8546fd11d7a2606177199ed9f56583e6  gcc/gencodes.c
! 5dd94ee1a6202942a2496f4851b085d3  gcc/genconditions.c
! fd25de54ae5b28348f3b89f8aa04f281  gcc/genconfig.c
! 21455e560386d57d97fc1088ba0e72fb  gcc/genconstants.c
! 224140375c99aaff59cf11cd3e6bab3b  gcc/genemit.c
! 9e0470e9ec68803adf7831be8601f4de  gcc/genenums.c
! 3c9c1b5db17791eb903c083fee80eb13  gcc/generic-match-head.c
! b017f09085f160e6758c885175c13f1a  gcc/generic-match.h
! 731a497572872b12a5e3033eae88f526  gcc/genextract.c
! 7981be4a9ace01c934486bb5c1e95cc0  gcc/genflags.c
! 28e8319538fae25e84df456e12da4263  gcc/gengenrtl.c
! 47abdf1edd30c78f68647b8e10d048ca  gcc/gengtype-lex.c
! 1dce49f1d97b1589c77b1b1da4da18b1  gcc/gengtype-lex.l
! bfc1a73017fd55933f7d460769140fc4  gcc/gengtype-parse.c
! b838ec3819011b0b60e60df47a827ffb  gcc/gengtype-state.c
! 9e15789d8fea5e89493097cae51e6e10  gcc/gengtype.c
! 1e0d927a64dc865d5b09664b7b1918e6  gcc/gengtype.h
! dea6550eb4370726b57909023c165244  gcc/genhooks.c
! 82ed0b33ec4b396a2003ade0a6abd4fe  gcc/genmatch.c
! 2c6451dfbf4b679e9a4a5c013024b3b6  gcc/genmddeps.c
! 959a8ca13d1ad96a45c15bdc08f2b34d  gcc/genmddump.c
! 2154f61970ca4711d8978bd9d60eb57e  gcc/genmodes.c
! d7c94c0e07720cf0667154d1882de736  gcc/genmultilib
! 65cb867cac52d060dd9e6234ae07b145  gcc/genopinit.c
! c1aac6259099bbd098da3939617c198e  gcc/genoutput.c
! 8617cc6d51fb7e2baa92957cd5b6d3df  gcc/genpeep.c
! 8fcd902a945d29d81d3c28bb6efd7d66  gcc/genpreds.c
! 8a440f401c70586c3743e4cc50caea1c  gcc/genrecog.c
! 3a7652142e0e6138577fcb95f5c326b9  gcc/gensupport.c
! c24f9caff3845aa4a3440de7cd21c2e4  gcc/gensupport.h
! 239525c9e604b10cc28cb0f9a47cf60f  gcc/gentarget-def.c
! 9cbea8781c62395cff613f4ea5209892  gcc/ggc-common.c
! f7cb56e2b894ce112c7d922775b20ed7  gcc/ggc-internal.h
! c8adee440c05c0f377828e736f4e897a  gcc/ggc-none.c
! 5727d7ef4e582d6398c2a06d8fa7fcf4  gcc/ggc-page.c
! aab5e8605b6acfd5563fd8fb857c475d  gcc/ggc-tests.c
! cfab7b96bd884f95292f1774f45e4a59  gcc/ggc.h
! 2a14701570fbcd746ae6fa4486a6b26b  gcc/gimple-builder.c
! ff046f8e9938dae0178a152ed191e19a  gcc/gimple-builder.h
! c2d0730fb01b5369cf897eccf86f847a  gcc/gimple-expr.c
! 98d8920ea5059b3d165e57222d891ccd  gcc/gimple-expr.h
! 27ce61d208c576b518d1a85a08d12ec4  gcc/gimple-fold.c
! ee21230993c156d1d5cb56fc92916e7d  gcc/gimple-fold.h
! a283a81bd4a03a8d46ce24a68e29ad46  gcc/gimple-iterator.c
! 37f5e8d0d297bd9e9f53fa013dbd7dfb  gcc/gimple-iterator.h
! b98da5beedf98696ea9fec7256a9a4d7  gcc/gimple-laddress.c
! 8c15d61c2f8501ea08f81c0fcdd45853  gcc/gimple-low.c
! 8f9f53f79ecbb0d0c08169a2d2ec7f8d  gcc/gimple-low.h
! 6684a9a19672f962756dedd96b468b0e  gcc/gimple-match-head.c
! 344986053544f24eadf6b22cd9cbed69  gcc/gimple-match.h
! 50a983e0d86c88e7d0a035949d68d5e4  gcc/gimple-predict.h
! 018c91dec808cde7ac4152f806fff9b8  gcc/gimple-pretty-print.c
! e216dc6f5e58a21dcbbfba370d8afc7c  gcc/gimple-pretty-print.h
! e094054b2bcf25e28ef9f11cc00f61a8  gcc/gimple-ssa-backprop.c
! 4cb92049e81898a878aeed277acf78c4  gcc/gimple-ssa-isolate-paths.c
! a67525d6b8a482efd66447bd638e8dd0  gcc/gimple-ssa-nonnull-compare.c
! 177901a9b94a05ea75be63da13c83847  gcc/gimple-ssa-split-paths.c
! 1334430abaa2d5de56780eb997026e2c  gcc/gimple-ssa-sprintf.c
! 39a67287a8826a634021934eaad399a8  gcc/gimple-ssa-store-merging.c
! e8d77595538dba087b837fd35086ec08  gcc/gimple-ssa-strength-reduction.c
! c56b2f9074833a8c8795067b1f5aea14  gcc/gimple-ssa-warn-alloca.c
! 4eb4658c5c649ef8a222e5ce7169fafd  gcc/gimple-ssa.h
! 8f1fc05fa70d62ef0550eb40f55e141e  gcc/gimple-streamer-in.c
! 13241bb756af09bd0a127cbcb4dd944a  gcc/gimple-streamer-out.c
! 6149b34a9b8dc9a3ac22452cfd258211  gcc/gimple-streamer.h
! a2c9a435958195c47f7a7ff098a5c002  gcc/gimple-walk.c
! e2faae5a93c606b2a7b67703c796e0ac  gcc/gimple-walk.h
! 0f87653a3855d5db7af3632500bf286b  gcc/gimple.c
! f7247836b1345633d1912927939e811c  gcc/gimple.def
! 25418f3de22a04a9d3a4bce8ea7f8233  gcc/gimple.h
! 3226b367822a6cecd929bc8d88435e00  gcc/gimplify-me.c
! 0614c0dbeca81e25b0e2a8ec8670bfdf  gcc/gimplify-me.h
! ebcba6937f86e9c0ee13c0a2907c7e04  gcc/gimplify.c
! 0d655a1b36bd393358a60ae37468a057  gcc/gimplify.h
! 8a65435af2eced0ca67f6f9271c997ad  gcc/ginclude/float.h
! b9721cc1f3c6349bcfe9d162a36d0eb9  gcc/ginclude/iso646.h
! 983879fe679fb1d6122b0267120cdb7b  gcc/ginclude/stdalign.h
! 313a08994d9a526bcfa13ab10e83ca64  gcc/ginclude/stdarg.h
! 511744885c55f455ada2ae2ebff91584  gcc/ginclude/stdatomic.h
! 020ae0ea0906040fb7749bbdb96b5f30  gcc/ginclude/stdbool.h
! c7b19d3e7b0c1d663cc6ee7336ed80ad  gcc/ginclude/stddef.h
! 8e9ea6fd5e38c92ba283e84ff2a7ec63  gcc/ginclude/stdfix.h
! 91e3fd68d13a9be0115a944266e53d4d  gcc/ginclude/stdint-gcc.h
  f85aa0745c3e9e0d32fa64753089b2f1  gcc/ginclude/stdint-wrap.h
! d746684d29b8d20028a12a81001820e5  gcc/ginclude/stdnoreturn.h
! a21c48eb0ebeb4a73c0889fd3f42e12b  gcc/ginclude/tgmath.h
! e67de778552fcefca7289ac8daa55fe9  gcc/ginclude/unwind-arm-common.h
  8d9ecf0d6ef93c79623ce1d27a32a2cb  gcc/ginclude/varargs.h
! 39fd87607b25c8f948dcf70c2f36b206  gcc/glimits.h
! 3e1c530ec9715d2b5f8d28f1808d88e2  gcc/go/ChangeLog
! 4ff99cd3f2073d7c092cb2d42ca47e44  gcc/go/Make-lang.in
  60ea054548c83c7f66170073f9f3e74c  gcc/go/README.gcc
! 4b9cbe6a30dbc7039c55993611934ad7  gcc/go/config-lang.in
! c8422bf39477fc9fa97c43900d362fac  gcc/go/gccgo.texi
! 66797136e110e1a9c77b6a513465b2fa  gcc/go/go-backend.c
! 41d6ad41d51bd0732d23b7a2b3d01d9b  gcc/go/go-c.h
! 95a39a7d298ca9b6c021e0887e8a4113  gcc/go/go-gcc-diagnostics.cc
! 6ff159112bdf24adc6c8073db6968750  gcc/go/go-gcc.cc
! 5a40a2757191c46ccce6a187fd4db0ca  gcc/go/go-gcc.h
! 042f0961fb8fce848070b76a7c09e6af  gcc/go/go-lang.c
  e7de0e353b3ad578aac63ba754ad94e5  gcc/go/go-linemap.cc
  ea0968c143d7402d91b2b1301c76e5be  gcc/go/go-location.h
! 915bf35e56ea20ddb1378ad61015c2c9  gcc/go/go-sha1.cc
! 37893c19ce56de74688871b227e9cf56  gcc/go/go-system.h
  5d4950ecb7b26d2c5e4e7b4e0dd74707  gcc/go/gofrontend/LICENSE
! 9fb0afb695f8c22cda33fcf360dc360b  gcc/go/gofrontend/MERGE
  3a55d95595a6f9e37dee53826b4daff2  gcc/go/gofrontend/PATENTS
  09b47be9ee44cac640658e346eb568be  gcc/go/gofrontend/README
  3bf1a811c650cbc3399ee6382306c38a  gcc/go/gofrontend/ast-dump.cc
  456b6d4cc785176b6e3eb0c685a93b39  gcc/go/gofrontend/ast-dump.h
! d6c5730a6500ae456b09b0db1fd59482  gcc/go/gofrontend/backend.h
! 0f7749639e47eaa2afc99f6b38a1523a  gcc/go/gofrontend/escape.cc
! c4117539cd81adf6c803f8e311fbbb2d  gcc/go/gofrontend/escape.h
! be21e16a86d8bc6eecedb1121d5303ca  gcc/go/gofrontend/export.cc
! d303dd41ad0f82336b3d7562b9ea7943  gcc/go/gofrontend/export.h
! 0a6e605fad230200588a2294bdc670d3  gcc/go/gofrontend/expressions.cc
! c6a90c6c77a655d1882ab8ccf2597a88  gcc/go/gofrontend/expressions.h
  7d753b8578fa638c2da1c3f27cae2878  gcc/go/gofrontend/go-diagnostics.cc
  6018d89190ca6202e5dd86b2f81f6c42  gcc/go/gofrontend/go-diagnostics.h
  19e66447fa803385274b4e1a7501a4d5  gcc/go/gofrontend/go-dump.cc
  e3f005ccc40000dcaf14ab6eec979f69  gcc/go/gofrontend/go-dump.h
! 552da9f52cedaae99953ef877e2225e1  gcc/go/gofrontend/go-encode-id.cc
! dd0c5d81352d945862d63bd617b0e126  gcc/go/gofrontend/go-encode-id.h
  aa47b5ec42c70a6c61773990b70599e0  gcc/go/gofrontend/go-linemap.h
! a9976cefc0150a7132d127b093292abb  gcc/go/gofrontend/go-optimize.cc
! 6d061113313f445cd9a8a626d8138a43  gcc/go/gofrontend/go-optimize.h
  5b59619fab7e543c5bb28dd8a6d62793  gcc/go/gofrontend/go-sha1.h
! 98d172d47ec31b7e7d1f06de95fd873b  gcc/go/gofrontend/go.cc
! b642c00c59ba4c9e958b085f7888f5e8  gcc/go/gofrontend/gogo.cc
! 10bebae2fa665523ac373d6aa1bcd48f  gcc/go/gofrontend/gogo.h
! 1421569a09dc250099f8fd6e75b48197  gcc/go/gofrontend/import-archive.cc
! 60dd6839aa8612eb32b58fe40f424afb  gcc/go/gofrontend/import.cc
  b2b71935c39637f3c2650761617a4574  gcc/go/gofrontend/import.h
! 3a1b40cdab2c591098d2b8289c03d260  gcc/go/gofrontend/lex.cc
! 122aadffd7ee990a52e6c81a8d1b6444  gcc/go/gofrontend/lex.h
! ef25d820a0b488dc12de44c0804605d3  gcc/go/gofrontend/operator.h
! 5de59df2e9caca312a6e1be742ed2b78  gcc/go/gofrontend/parse.cc
! 9a262c5631114c91cb8f486ec63bbbb8  gcc/go/gofrontend/parse.h
! 29c36360b9c3ccc4ba10922777356256  gcc/go/gofrontend/runtime.cc
! 29b8a95ca195039b56f7ae4f096765da  gcc/go/gofrontend/runtime.def
  978a7b1924ca7f696fa5d0da3c9ccf60  gcc/go/gofrontend/runtime.h
! 1c076b12716978f43d60e7bbf2173ca0  gcc/go/gofrontend/statements.cc
! 4cd97f857d13133fa9505655a0758737  gcc/go/gofrontend/statements.h
  0ba1a11b029f92c6795e4c940c966f48  gcc/go/gofrontend/string-dump.h
! 1a868522cbcc52679f63a05c96fc5d91  gcc/go/gofrontend/types.cc
! b461bd5146f1ee54c1fa744e78fc4da1  gcc/go/gofrontend/types.h
  3662dad559a197b0771d9930d494949d  gcc/go/gofrontend/unsafe.cc
! c8a26f86b3419a9e83dec9db72d0d9d9  gcc/go/gospec.c
! 2fc199ecede87ddfd0510945f49141cc  gcc/go/lang-specs.h
! eb1a2cf0586dd31dd85da1878e516d56  gcc/go/lang.opt
! 14119afa730f173c2d060ff67aa0e4ee  gcc/godump.c
! 12ca6b478e2c870d1b44cab965b5c085  gcc/graph.c
! b047fc4996e0d444cadcb549cbdd9937  gcc/graph.h
! b8b89f9b7cf6050423e74403b8e2dc52  gcc/graphds.c
! d1fc3f168d944e64ca6b0f0a8927b301  gcc/graphds.h
! 5b0a272db8ff06d95782dacbd8e6a7cf  gcc/graphite-dependences.c
! 7484de7d78a34c5f3717af71957b2ccf  gcc/graphite-isl-ast-to-gimple.c
! dc7486b5ffc901f582556a20dd651c1b  gcc/graphite-optimize-isl.c
! ee94063780779dbd8f397ba53e5b3cb7  gcc/graphite-poly.c
! a53fc55fef65985e128c29c719a48eab  gcc/graphite-scop-detection.c
! 08fcd67515ab1b26b0760c7d824be781  gcc/graphite-sese-to-poly.c
! 311105d7f1fe56dba43e194502491cd8  gcc/graphite.c
! 332f45971dac5a70bf90453d286c6b25  gcc/graphite.h
! b3a140246533ef99b7824a6af6a7b14e  gcc/gsstruct.def
! 9e06f32792d2ffc3b55756d38963a9a2  gcc/gstab.h
! c4d46e8c286712ee803541fc8a507165  gcc/gsyms.h
  c32a1d882e7039afe158bb9e59b65223  gcc/gsyslimits.h
  053ee4a84e4593c88c088f25e153d1a5  gcc/gtm-builtins.def
! 20f70d47e63108d1903ab7ce4d32e111  gcc/haifa-sched.c
! df27a8bfc48c02b9be96aabc286d586d  gcc/hard-reg-set.h
! 69c5b22359c5ebf761dd0f60a5f3aeb7  gcc/hash-map-tests.c
! a4855d6f8d70004e7bf0084564da9481  gcc/hash-map-traits.h
! ee542bc3e64dd394043cc0123dcc9494  gcc/hash-map.h
! dffd1bbed43a1393d725f30ff9fe606d  gcc/hash-set-tests.c
! d1a5656ea5313f8c9019e9d8ca50723f  gcc/hash-set.h
! 54eae07ab5474355fea421636b86cf83  gcc/hash-table.c
! 0d074bd1a621e6d2c608b3a7cc9152bd  gcc/hash-table.h
! f010d66b66dde98e7cb6f87b249c20c8  gcc/hash-traits.h
! 919603b4c2dd3440cde09020fdf09cde  gcc/highlev-plugin-common.h
! 70768209107fa89b5b24eb5176a84b92  gcc/hooks.c
! 90c561f68879125957c4729966cbc326  gcc/hooks.h
! 7c72296f706bb487120b98817ad79366  gcc/host-default.c
! 4931aa92b8eb6eedd2a4f0684c965293  gcc/hosthooks-def.h
! 0899cf3ab1774c6da1627c69fcec9c47  gcc/hosthooks.h
! a89fda35d892160883509306fd5ff9f4  gcc/hsa-brig-format.h
! 678ab3ec31dae0fce3b93c5980a5d2be  gcc/hsa-brig.c
! a2097f186d1a4ba3d6672e84286b3b65  gcc/hsa-builtins.def
! 4191b7c164be29f9f80b73d694681376  gcc/hsa-common.c
! e271c12f50ef2f84f9d68c3e47aa3546  gcc/hsa-common.h
! ee237b6a93599fa3e0a203fb6b35ede8  gcc/hsa-dump.c
! 54c9ab6b10a1c42ecf9003a14b818cf2  gcc/hsa-gen.c
! 58f9e67b4fae99bd0667f2467a8f937b  gcc/hsa-regalloc.c
! 6aa3d3add5653e8a3019dd556b31bc06  gcc/hw-doloop.c
! 218d881540980f810bcf492d62b29317  gcc/hw-doloop.h
! e15050f58e206d13ab391869e8f786de  gcc/hwint.c
! a4f4cae6c046bf453ee32ccd8f872d11  gcc/hwint.h
! 90f8959f685e1d24f7386d5b9bd569f4  gcc/ifcvt.c
! 5c19ca7a0c904f96444f9076305cd7fb  gcc/ifcvt.h
! e0d220b38d0af33eeee074108ff90167  gcc/inchash.c
! d08a41c44b2057a601ca472d8d7aba83  gcc/inchash.h
! 6c700f907711db07006eaae3c698e48d  gcc/incpath.c
! d9cd763073cfcc84a261cc22db84e3c5  gcc/incpath.h
! 391837c132e851e7c7c1bbeebb516c90  gcc/init-regs.c
! 090822c8cc7cb44eeeb8114deab64d45  gcc/input.c
! 3afe31ad8024a1a3fa2ef613bf72aeaf  gcc/input.h
! 2014e898d755c5f081f63cab42dba047  gcc/insn-addr.h
! b5b40a72ca0dc9c233b0a85133cf9023  gcc/insn-notes.def
! 8f9b42bec7f5e0256d074ab679e88d00  gcc/internal-fn.c
! 4da4cd5d23e7edda93fdf5fde7294840  gcc/internal-fn.def
! 9ce613eef2e1b9c6f221cbc1bb973967  gcc/internal-fn.h
! fdf64d7f98647f8f0d1bcf3b8a828aa8  gcc/intl.c
! 6255901e73c6bc2c71a2703cdacfd77f  gcc/intl.h
! 48525c51108ac26cb1d6058cb495d847  gcc/ipa-chkp.c
! e54d40e1ec53e0400607ff09c2a536dc  gcc/ipa-chkp.h
! f1b7ee4df60044997d39d57d6c22993c  gcc/ipa-comdats.c
! f4cfc9c9997672b885ead74b33b9876b  gcc/ipa-cp.c
! 17dc594ca5c1827e32f8d1b147e84724  gcc/ipa-devirt.c
! d13a7631f21372dd7785d58258d8653a  gcc/ipa-hsa.c
! 2e220ffa1afa788d5e90c334c992320b  gcc/ipa-icf-gimple.c
! 73e820ad96c398d3c582d46305f4a886  gcc/ipa-icf-gimple.h
! 1dc1860610c078bd9c54fa84f89bc64f  gcc/ipa-icf.c
! 0a874446f2c1c01e9e44724e5a14c125  gcc/ipa-icf.h
! 56741052fd5a89044ea5a5f7bc52ad3b  gcc/ipa-inline-analysis.c
! 13c7778f9a4420ca43a2b5935fc2f296  gcc/ipa-inline-transform.c
! 4381721dbfd945748e9d7f2b16c4e5f2  gcc/ipa-inline.c
! 91c2b100a6c4c5566296ce9bdeea1246  gcc/ipa-inline.h
! a77ae1d6734f2e873ab6390a3a330a48  gcc/ipa-polymorphic-call.c
! 20726f67378e6ff4631de06b111579c8  gcc/ipa-profile.c
! cbd077b7ee78afc0b2d550f0c61e9bea  gcc/ipa-prop.c
! f8fe111b3871fed63edbfc32fdb0e203  gcc/ipa-prop.h
! 5116913d55547de6de68fbf22b19d80d  gcc/ipa-pure-const.c
! 5b0dd9b55d2b0ea9cb7f0ca4549e1a10  gcc/ipa-ref.c
! 2bf874519c2c4adedbc9d9f704713620  gcc/ipa-ref.h
! 38233da4b2ac3fb60647e29ae3bfdbc3  gcc/ipa-reference.c
! e0da2ee6910ab8686a5910bc4a76afe0  gcc/ipa-reference.h
! 4407b063d08bdd9fd0725de1c0e12486  gcc/ipa-split.c
! 465da077a88900d47929ac8fb1865e1f  gcc/ipa-utils.c
! 658313d4d5d2feb69ed6f69a2c3cf571  gcc/ipa-utils.h
! 02f4b9ae1b45439a547f909b5361d4d5  gcc/ipa-visibility.c
! ef56d9ed82e1d34beae03896413d206e  gcc/ipa.c
! 543028744e2f9e24cb5293e3a38b4013  gcc/ira-build.c
! 6fe6fbcada992f0dd5cac1e8e401f657  gcc/ira-color.c
! 576c000f3813929505341841101e4513  gcc/ira-conflicts.c
! a19ba21929bb5efca3651c1bd91d0556  gcc/ira-costs.c
! 0cc90612f655f9553234b41c691dd045  gcc/ira-emit.c
! de81556308e4a1f61a5d691b42a31a77  gcc/ira-int.h
! 44c6dac0c625045cb04076642e5b0c66  gcc/ira-lives.c
! caacb2e7c13ccab0fb6efa70d96bbab3  gcc/ira.c
! 0e98da5359d5b8452a426452b3166e5e  gcc/ira.h
! 98d0dd78e50aed7d6d4f69e533b99340  gcc/is-a.h
! 3c6d75905af14adc0598e1a7507cf472  gcc/jit/ChangeLog
  6071bdf04fb356c5ac99a99ec00c9a12  gcc/jit/ChangeLog.jit
! 2415ade78b2b648edf37df515cc36c21  gcc/jit/Make-lang.in
  fd0d76b6467c987f813d430a35d4760a  gcc/jit/TODO.rst
! 06bbe7ef902995912ff49e60d10fcdf4  gcc/jit/config-lang.in
  df53fb6b84c435b56ac2cb2727b62b27  gcc/jit/docs/Makefile
  deb386a5d39ee1488e2412e40b3b28fd  gcc/jit/docs/_build/texinfo/Makefile
  40d770c0fff5fdb135c9832c697a6e05  gcc/jit/docs/_build/texinfo/factorial.png
  40d770c0fff5fdb135c9832c697a6e05  gcc/jit/docs/_build/texinfo/factorial1.png
! 67bc4c0f08fe27ae53a04c4a3a63dc63  gcc/jit/docs/_build/texinfo/libgccjit.texi
  11b13c2e317ff217420ed928ce4ba00e  gcc/jit/docs/_build/texinfo/sum-of-squares.png
  11b13c2e317ff217420ed928ce4ba00e  gcc/jit/docs/_build/texinfo/sum-of-squares1.png
! 4f4aaafcec07ea6d49ff227c5a3a23ea  gcc/jit/docs/conf.py
! 90cd170573dc43f95ac6e8bb80c7893e  gcc/jit/docs/cp/index.rst
! 1e526b7ed3b5b79a793f0df32ff44648  gcc/jit/docs/cp/intro/index.rst
! 431d3f19ba55537187b39459a7920619  gcc/jit/docs/cp/intro/tutorial01.rst
! abf3eec5cebd356714b4b7073ff45616  gcc/jit/docs/cp/intro/tutorial02.rst
! 4d36dbdbf076eb40dfb9fdc1c6802208  gcc/jit/docs/cp/intro/tutorial03.rst
! 07513d8d31a8cf040bd1348543847903  gcc/jit/docs/cp/intro/tutorial04.rst
! 6fdb98e37bc73c9db9737ec9d246857f  gcc/jit/docs/cp/topics/compilation.rst
! 248386b31afb834a6c857929ad0b3d2e  gcc/jit/docs/cp/topics/contexts.rst
! 4bdc762d178163c0126af4ce75ce1e7f  gcc/jit/docs/cp/topics/expressions.rst
! 1bcf43fc1bf42b0dee97583f0e7eb70c  gcc/jit/docs/cp/topics/functions.rst
! 44a1323fedc4e68584ebf782340d706c  gcc/jit/docs/cp/topics/index.rst
! d1dc10bb2b9ecf1f7f6971fa7b3f5f39  gcc/jit/docs/cp/topics/locations.rst
! d018e3dd8b7056b6eacc92d7873187ca  gcc/jit/docs/cp/topics/objects.rst
! b3b4bfd6f9ff90b1d71926658eafedc8  gcc/jit/docs/cp/topics/types.rst
  98a4c0efa41e5eb7177483e4cd99a81e  gcc/jit/docs/examples/emit-alphabet.bf
! 0da1a0be4779ff07ab3a319e9e5cb468  gcc/jit/docs/examples/tut01-hello-world.c
! d517f069290c377f91630a9d273d9e9f  gcc/jit/docs/examples/tut01-hello-world.cc
! 83b7c49c775294f4d5082f902454466b  gcc/jit/docs/examples/tut02-square.c
! a8db220799d02375a6fc0aad38071472  gcc/jit/docs/examples/tut02-square.cc
! 92c368a733e13bc802243dfdba872e4b  gcc/jit/docs/examples/tut03-sum-of-squares.c
! c420eaf3cbc0f14eb5bae82a3fdd5148  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
! 6bc3fec69b2e3d256d0e86cf9a93c6d1  gcc/jit/docs/examples/tut04-toyvm/toyvm.c
! 129e16adde1dd11b1ba754a4cf68c505  gcc/jit/docs/examples/tut04-toyvm/toyvm.cc
  3cbe9daf70398730ee60aa4caf2fc200  gcc/jit/docs/examples/tut05-bf.c
! 9135c1cc6ff68f2553a934281ce988ff  gcc/jit/docs/index.rst
! ec11ed4e4d55956a3ae90bab4ab8b371  gcc/jit/docs/internals/index.rst
  d72502d68617b68873d385bcee6e9c4b  gcc/jit/docs/internals/test-hello-world.exe.log.txt
  40d770c0fff5fdb135c9832c697a6e05  gcc/jit/docs/intro/factorial.png
! 3eb924031387336ae7740ed0b8942a30  gcc/jit/docs/intro/index.rst
  11b13c2e317ff217420ed928ce4ba00e  gcc/jit/docs/intro/sum-of-squares.png
! 614991982ce65476d2825cc4ccbaa285  gcc/jit/docs/intro/tutorial01.rst
! 9692295cc8f51f8728cb4fa4c38c893b  gcc/jit/docs/intro/tutorial02.rst
! 7f8a54b85ff937a96f14d138d63050f0  gcc/jit/docs/intro/tutorial03.rst
! e1034324be96461f6f277958dd1435f4  gcc/jit/docs/intro/tutorial04.rst
! 7f9d2d93f3aa8d6370a4fb1956612f92  gcc/jit/docs/intro/tutorial05.rst
! 2f66da5e86cfb1b9e05871e6bcf06f5d  gcc/jit/docs/topics/compatibility.rst
! 277db430c0ac9efd86bb583cbc1b3a0f  gcc/jit/docs/topics/compilation.rst
! 574b9ab00cd7e710041663281faa4616  gcc/jit/docs/topics/contexts.rst
! 92933e47bfed5663f5de662c6681b8d6  gcc/jit/docs/topics/expressions.rst
! 83667894c45154e3feeaf24b200a5c1f  gcc/jit/docs/topics/functions.rst
! b2c80bc55ac76a06458db18d976c3e09  gcc/jit/docs/topics/index.rst
! 1a48fcac0df5de27b0b2adc7ef6d2c1f  gcc/jit/docs/topics/locations.rst
! 4ce180f0caa465a3d5dc8c4a423c70b7  gcc/jit/docs/topics/objects.rst
! d762ab4369ed2dc9a1a5b48574f9957e  gcc/jit/docs/topics/performance.rst
! 59e8fee5d1c51160bbbb13eb6a09ad75  gcc/jit/docs/topics/types.rst
! e50af0ad2e899bd56aefec7cfd5471a0  gcc/jit/dummy-frontend.c
! 8a8190186ec0c0220eb5df4d456cb0ac  gcc/jit/jit-builtins.c
! 3d8231694fe73ad70d00e0bd4b68d927  gcc/jit/jit-builtins.h
! 76d5fb82dc522942510a9ff86cbbd051  gcc/jit/jit-common.h
! aa16b64a3836d4424b03f6b97c9e5acd  gcc/jit/jit-logging.c
! 86dc69f25421384cc2ddf0229e466aef  gcc/jit/jit-logging.h
! dfc148f94bed19e3a718578087f166a6  gcc/jit/jit-playback.c
! bd9f0c31ad8bbbcb927ad384ab18084b  gcc/jit/jit-playback.h
! 68433f30d6a3d3aed4210fb9096d9067  gcc/jit/jit-recording.c
! 038f5ffd81ac75808e4a7b05b5e6c74b  gcc/jit/jit-recording.h
! 61407da3fb3a0b9594c29e3c1cc16e44  gcc/jit/jit-result.c
! 6fd9b098a03635059748580b51ff6e83  gcc/jit/jit-result.h
! ce2b88bc74a9640865c647f16ffbe1fb  gcc/jit/jit-spec.c
! c152f3a9ce854926fe8290459c47f6e5  gcc/jit/jit-tempdir.c
! 793c1ee12e7952511280488015054bf7  gcc/jit/jit-tempdir.h
! b7890d5c99f51fe6faffbf11fb83aec8  gcc/jit/libgccjit++.h
! e0fbb1fecebb956c6607590106d57b59  gcc/jit/libgccjit.c
! efb189f8aa7e372458025bbcf9f04903  gcc/jit/libgccjit.h
! 997b9bf62690f63089c5ff6269f2d00b  gcc/jit/libgccjit.map
  aaaa50e3d4a7c60cc413faccb2d831c6  gcc/jit/notes.txt
! e30eea6dab135f3804a31be4cc278a80  gcc/jump.c
! 1608bb06475544e565849a28d80094f7  gcc/langhooks-def.h
! e2ac37626ab2613755dfada02841a33e  gcc/langhooks.c
! 3e074c928934adba7d7eb2b1aeca4e48  gcc/langhooks.h
! e6c027362553eaf5c6f46fc4f69db21e  gcc/lcm.c
! 99a426b25e15411d0bd50462810a54f9  gcc/lcm.h
! 1abc9f88e0cb49e9a4bfad147c84199d  gcc/libfuncs.h
! 1dda0833616d6e4d11ec8e8ae2e8764a  gcc/limitx.h
  83de5c6450456e215a5484083afcd32a  gcc/limity.h
! 98de744ceadfc8407a1627ff3364dfd8  gcc/lists.c
  16086d64468975aa4ba54f78d2a7b542  gcc/lock-and-run.sh
! 3e2f05e81befbd691d09e7db9bb1c7a8  gcc/loop-doloop.c
! 85dc07e9f0cd6bf7ca0391b3439fd9f7  gcc/loop-init.c
! 6960cfbb5f2f0ece41b0fb024292fc56  gcc/loop-invariant.c
! d00eb3c22c3d758014a13a9c09849822  gcc/loop-iv.c
! 0812f2f5e3901a7fd0b1a5091c48a39e  gcc/loop-unroll.c
! 952e6c6741e7cc74734d8f7e375d0ce7  gcc/loop-unroll.h
! de7e5cd06b39169b643ab6ad28481a91  gcc/lower-subreg.c
! baa6304ac17d60ea1de9cd389561fbc6  gcc/lower-subreg.h
! 968303eba3eb836c06ffcc0c51525814  gcc/lra-assigns.c
! 09ce513b6a920eb59b5e4f682f9ed312  gcc/lra-coalesce.c
! f5b73ced9e982e87cebb4c133b96420f  gcc/lra-constraints.c
! 2e5e171a1ba31e8815f2d10c5572f6ff  gcc/lra-eliminations.c
! 50b7f737498cca3e2bddc9de57fce790  gcc/lra-int.h
! 9cecb559d637884863172d614ba72107  gcc/lra-lives.c
! a99263cf5a04d19dfbf3b8602665a19c  gcc/lra-remat.c
! 2b4fca08d55674b0e30afe94176ede8c  gcc/lra-spills.c
! c60276500434e7561d841dcce306ed93  gcc/lra.c
! 1bfb8d5c5c3f87c38b435e60129e5025  gcc/lra.h
! a0b668d25b2b3a5038eb0b1489b34ffb  gcc/lto-cgraph.c
! 87ee293171e06e77ed29cc7e1e4df966  gcc/lto-compress.c
! bdb839d1119e305569cc0381b49171ef  gcc/lto-compress.h
! 4aeaf9cedd7c397f3e147adb426158c2  gcc/lto-opts.c
! 23f5d4b3f3519ea92d0ea4ff7651f2c6  gcc/lto-section-in.c
! bf0ddd1d4c06ede718cd6c9d68d66a79  gcc/lto-section-names.h
! 1dfeb5b8bc8b8ef92eeaf44f80f4e6d7  gcc/lto-section-out.c
! cb0e052e6d99847359297ec3639e7494  gcc/lto-streamer-in.c
! 5c0b5fda69e1b039af5782de7c7b5db5  gcc/lto-streamer-out.c
! f7413cc95127c24fbfbca57399cc405e  gcc/lto-streamer.c
! ac5af855d3af9e53bc7934819d845353  gcc/lto-streamer.h
! 32646f4b325ab40e02065344c8179008  gcc/lto-wrapper.c
! 9f664d49107a7e2206551ae1ae401c0e  gcc/lto/ChangeLog
! ced02ce6ebb471e6f0707b1098d059f9  gcc/lto/Make-lang.in
! 4df36a5baf5c564626eda96177fa5c33  gcc/lto/common.c
! dc83390218daebe5ba0cc15e5d0ef4f2  gcc/lto/common.h
! 7c3135d9769daba9cfea23393ff28b03  gcc/lto/config-lang.in
! 81d25800a28c00313fa919de8bfc1c42  gcc/lto/lang-specs.h
! 4da9d9b85a26f6d61d0fa3c50bccd8b9  gcc/lto/lang.opt
! 3645a597f25f745dbee578e3de67bf90  gcc/lto/lto-lang.c
! c52c7f3c5ad749732397612a7d6809e4  gcc/lto/lto-object.c
! eaa6488c89eff5aed51b3c7bed2df541  gcc/lto/lto-partition.c
! a5808083f1b69a57681f2a5672ee4ad1  gcc/lto/lto-partition.h
! c037e9ec9c27f66996083cfaa959222a  gcc/lto/lto-symtab.c
! 4b4c87f51ea89a539020c164b457c756  gcc/lto/lto-symtab.h
! e647bcb6f853f2020a69bd125fba4c2d  gcc/lto/lto-tree.h
! a0ba0668b6acb3db683b8ed4350304f4  gcc/lto/lto.c
! 23c61f57e706b6a95693277dd8b42f91  gcc/lto/lto.h
! 591ddd69c8ba434f64f79521736d1920  gcc/machmode.def
! f7ad77889393cf493f1262771d70d953  gcc/machmode.h
! 4ceeedac880cc5287574b380950589b2  gcc/main.c
! afa4a7ba77526c9761f874d77d357f77  gcc/match.pd
! 18e3456c1e7d2132e422198943304c3b  gcc/mcf.c
! c281c4f8369da7724070f49c9fe97512  gcc/mem-stats-traits.h
! 0588309a92b9b0bc147e0e3f8977dcad  gcc/mem-stats.h
! 0977dad25d16e834162c32e8ff8cd111  gcc/memmodel.h
! 7cd43d42660226e2f7e2b854e2463fc1  gcc/memory-block.cc
! fd6e96ffac0fe9122fec17f57f0f888f  gcc/memory-block.h
! ac2a441b236321b828165bc61f84e45a  gcc/mkconfig.sh
! 18eb111157287a0799469b16f245a5b0  gcc/mode-classes.def
! f3bb81dc9fe0c7b25dbb89202fb9fedb  gcc/mode-switching.c
! 8b38296cb48aac7025e957d0eb2e0beb  gcc/modulo-sched.c
! ab99ec689b35d3782d0d6c9673e8a80c  gcc/multiple_target.c
! 9af4b62b73a477a73437b6561c08c696  gcc/objc/ChangeLog
! 52fb9c112577eef989bc43e36f696692  gcc/objc/Make-lang.in
! 07963422f6222392a9f1d56d0cbc53ae  gcc/objc/config-lang.in
! cf8e0bb9d548e2c3d720f5c4ebc5bb9c  gcc/objc/lang-specs.h
! 6497ac77d7736d6d98f9c5723745511c  gcc/objc/objc-act.c
! a25092d4f4fe28a245de31f2f1511ff4  gcc/objc/objc-act.h
! 7ee25cf44832e5313ee3fc7db192be9c  gcc/objc/objc-encoding.c
! b163ce4192cb6eb54634165d0ac4af49  gcc/objc/objc-encoding.h
! a8773d77127fbc00fe25eff818943e6d  gcc/objc/objc-gnu-runtime-abi-01.c
! 1d1b3387e8688004c7fd14a887fe6b22  gcc/objc/objc-lang.c
! c14acf8a1dab7d0c2adef37ade287b05  gcc/objc/objc-map.c
! 05047f3a5e137efa7b0aefd1eafa6e8e  gcc/objc/objc-map.h
! 50c6ee6ba9dd8fe090f3a760e3afa030  gcc/objc/objc-next-metadata-tags.h
! 9cc62e8fb451ea7762d680bf9e15d278  gcc/objc/objc-next-runtime-abi-01.c
! 4114cba84cebf905d9e4a711e65ffd2f  gcc/objc/objc-next-runtime-abi-02.c
! 3bc0b908c2f43076baa9c04f13190015  gcc/objc/objc-runtime-hooks.h
! 796e40d4a426f2ba961cb7b03597697b  gcc/objc/objc-runtime-shared-support.c
! cc66abe3f07d32de5c77248e82f02dbe  gcc/objc/objc-runtime-shared-support.h
! ef63c61988d20447a799378fa1f25022  gcc/objc/objc-tree.def
! 8c2f481f85631e20647f28e48d82f65a  gcc/objcp/ChangeLog
! afdfeea4c2028aa5b15e0355f8cade93  gcc/objcp/Make-lang.in
! c74e423b803cf4446b16c17243b63e5a  gcc/objcp/config-lang.in
! eef32d7df29581d83432d58d9cb2cd94  gcc/objcp/lang-specs.h
! b8840e5f3e0b48eef202eebe67f8506d  gcc/objcp/objcp-decl.c
! db17a97fa0c8d9e96cf691936d987f01  gcc/objcp/objcp-decl.h
! 8edee735611b099133f17e56cef4dc46  gcc/objcp/objcp-lang.c
! b4f4aff7ed47834bd4bfcf2dfba20395  gcc/omp-builtins.def
! e0d54a683db51813f4a10e219fc087cd  gcc/omp-expand.c
! d177ce89d1052ec1caeecdc3b6376077  gcc/omp-expand.h
! 101508bef954bca7004e675270e17636  gcc/omp-general.c
! f5c582e7b207e6818eb3ba0c0b992872  gcc/omp-general.h
! 8cba34fb20f0481e5ffbfb4e1694a907  gcc/omp-grid.c
! fc6b582c9cf11cb29fcf672e5b78c7ba  gcc/omp-grid.h
! 46661f0c99229a6a7dbfda0b1b64ccad  gcc/omp-low.c
! d68f234609f652e17b2b917374726838  gcc/omp-low.h
! c3c2cd5ff8c4eadd8d9e432e16cf092c  gcc/omp-offload.c
! cf7b95c9f21a4b2fa6826b529e3ce596  gcc/omp-offload.h
! 4be4d81923461b377d0bb0bef5b0749c  gcc/omp-simd-clone.c
! d41de71d486a8be28201d75094263299  gcc/opt-functions.awk
! 141229a2685dddd4b6da38f50de9d465  gcc/opt-gather.awk
! 7a11f4a94c0bd345d3423bb0cef7c896  gcc/opt-include.awk
! f68ba043f541ae1e246db3284271e578  gcc/opt-read.awk
! 1856dee12dbc1f7691c33b1f28f30791  gcc/optabs-libfuncs.c
! 2c6217a12320462a3222ee1778dd9009  gcc/optabs-libfuncs.h
! b028c7a9c90208c6a41c251a754a8b18  gcc/optabs-query.c
! d3cedc015b66305d40274f90a8e197cc  gcc/optabs-query.h
! 3d905dc67e605c37e0eedb76c5caef04  gcc/optabs-tree.c
! 3e6875e4d6f2dbe3ed60c448551f5e86  gcc/optabs-tree.h
! d7ecbb42fa1c096d32d7ea83243e8194  gcc/optabs.c
! 4e124c742e2a5d3ee49599f3e9b976dc  gcc/optabs.def
! ad27afe318db2ba35c962089be2a6753  gcc/optabs.h
! 12965c68fb5394ce2ff713f9a02ce532  gcc/optc-gen.awk
! 3334035d4ed123a15511a538ff552d38  gcc/optc-save-gen.awk
! b36f15821f233758c3731307d8f6245f  gcc/opth-gen.awk
! 39c48c6db3bf6ad12a2ceac33cf9a4b1  gcc/opts-common.c
! dceccf26e9f4521217455d25b4df27b7  gcc/opts-diagnostic.h
! 62023174447e1a21cc36cd138c59eb03  gcc/opts-global.c
! 5053cdd3f934046225644519eb2935c7  gcc/opts.c
! f93e8648abf396fa77c25dcdd03f9869  gcc/opts.h
! ff7abf43af46428f2896e4b55240035b  gcc/output.h
! 389afec912a480acd35b8d978ee26f92  gcc/params-enum.h
! ba0be5f247d604afb6ee7210019c8aee  gcc/params-list.h
! d83044eb7f8f2515a53b8d3b7955f597  gcc/params-options.h
! 9266007c7ca1bac4033b34aea1898a1a  gcc/params.c
! ec3ff8932822048e98a76810cfe3b913  gcc/params.def
! 678b527f9a75fd32abff5f2f6f0a57b6  gcc/params.h
! c490583bda8d2476104bf6c5ac32ed8d  gcc/pass_manager.h
! ef2437b69bda70f2c8201e9a0f2ff766  gcc/passes.c
! c2783219174c8fa71e584ddcd27d47fb  gcc/passes.def
! 5398ce30fca85a2ac1d00ce91b14f146  gcc/plugin.c
! 2746c4de7c7d517bb42a495e1dd8740d  gcc/plugin.def
! 6940e44bf30362e059cceb844a043e4f  gcc/plugin.h
! bd49c356e94296a6428a36707f9267e1  gcc/po/ChangeLog
! 28b130f4b67c51e48b2b431b12ee9bc3  gcc/po/EXCLUDES
! 91c634ac61c253e979dd99a24560ca02  gcc/po/be.gmo
! 77877776122e6719ab1d793423a871c2  gcc/po/be.po
! 359b556d24b21490ee05965a7e823437  gcc/po/da.gmo
! 2455b468eb37e9436e304ae064c08aa0  gcc/po/da.po
! 5eb9acdb9d72e07d1d4659550f9bd159  gcc/po/de.gmo
! f0e09d057f27e39989acbe88dabfc253  gcc/po/de.po
! 7ac8fd6f5dd2c2db80d9b6588e1ed3f9  gcc/po/el.gmo
! 2e88553cbb8c03fb37d5e502341ed385  gcc/po/el.po
! b43aa6df8840a5e395232d6944083730  gcc/po/es.gmo
! dd2c79fe2c0478eaa91c2333386d6123  gcc/po/es.po
! 806334e97e5115b06b067f08ccb1b004  gcc/po/exgettext
! 015ee7ea3ad9c1ae351beb87d2a746f2  gcc/po/fi.gmo
! 87885e32d117107407b101f4d77dcdb6  gcc/po/fi.po
! ffd97c5c88301759ccc7bc1f1c2f723e  gcc/po/fr.gmo
! d9e8dc4f2aafa16f3a80e6e5a3fea6ec  gcc/po/fr.po
! c1aa601f2783d6074092c3f46094b9c5  gcc/po/gcc.pot
! b389782c5ba437b31d5aeed0686a05d0  gcc/po/hr.gmo
! c4ae2890c80fc8b7c929cf16de6f4a18  gcc/po/hr.po
! 2f02c0a89d9d97b72ca97dccba78f051  gcc/po/id.gmo
! b7f7722dce7ec9f021d98dcf554ec32c  gcc/po/id.po
! 43fec322e950e76cdf0c265a78f795f8  gcc/po/ja.gmo
! 118f044512348f46866d0520a9b98403  gcc/po/ja.po
! 1d4fee09161a32e8aa70d4f589d881f4  gcc/po/nl.gmo
! e3ed47180506e0fb9ac3840b429d0346  gcc/po/nl.po
! de34b170b65270c97a1adc3f8ec08f14  gcc/po/ru.gmo
! d844bbe4ab351826c4a68c294faecabe  gcc/po/ru.po
! 5542dada2f9d457b56ab7d53897db960  gcc/po/sr.gmo
! c710d0d0812006b44d571cda66daee59  gcc/po/sr.po
! 576c1b54569f5a873cd0262712ff25e3  gcc/po/sv.gmo
! 057cedffa9a48645c9a0716f0532a779  gcc/po/sv.po
! 9f7f762cb3e90204899d29e661f2406a  gcc/po/tr.gmo
! e05d71635487b21d555b08d29de818b1  gcc/po/tr.po
! cf1572d9b957ce6e70cfcc68b8f8bdec  gcc/po/uk.gmo
! 2d32daa2a4ad63bb20a62d5a23addf48  gcc/po/uk.po
! 8fc176d0b7f819e398f0f5a1cf60eb14  gcc/po/vi.gmo
! 0a4cb43fb26f5f6afbca86754ddadd4e  gcc/po/vi.po
! 5d0e4526b5fc27c392702e95ccf1f2d7  gcc/po/zh_CN.gmo
! 4c7d7bd1d8d5b2cd6b3ceb46981586b8  gcc/po/zh_CN.po
! e23be30f66a4902142705d4f6878186b  gcc/po/zh_TW.gmo
! 52a27ef0e59cfb3c35b7bd1d684f3c62  gcc/po/zh_TW.po
! 6b8cad60cb1fe8062b27293ab5fe96dc  gcc/postreload-gcse.c
! 86e3fd69c9d87ec0c4e3ead4ad133f18  gcc/postreload.c
! f9baabdb7cb7fec90597eb9230423bfd  gcc/predict.c
! d5381b74a5defcfca3ca95e1f8d44c4d  gcc/predict.def
! ecd8d2fe2a72e889df4f7ff2e9a6688c  gcc/predict.h
! e5e2181512a71e96d67d33f0be142e54  gcc/prefix.c
! 20adcc5e0447f31d257943303be0e1af  gcc/prefix.h
! b5a9532603997e731258aaada1c88050  gcc/pretty-print.c
! 96fbf61f2f5e5a70f02560c43eb6eb88  gcc/pretty-print.h
! da338ecccc33ef3e06cedd48f44c2a84  gcc/print-rtl-function.c
! 57fa240f2ce7c5a06a70bd97b1e66346  gcc/print-rtl.c
! 8703a655732a51bf3ff12eb1be5c9f0a  gcc/print-rtl.h
! 7b48bba535b920b2f8bd22d2ea83902e  gcc/print-tree.c
! ccf6fbbf65df8c9ba959fc9a65477f38  gcc/print-tree.h
! 7d140dc279a2be60bfe0f8a272158862  gcc/profile.c
! 3e468037291c2f94bd07bf588efebf2f  gcc/profile.h
! af54f8ad5eb41c2c6725acd1c3ff1e8f  gcc/read-md.c
! ad51d3da6e6ea25f419eb2b5cbaadbcd  gcc/read-md.h
! 995d5048aa0a9093d9f9502df10f245d  gcc/read-rtl-function.c
! b1cfeb70a45f54b6d7d015db43dbf2c7  gcc/read-rtl-function.h
! 9521656bc0b302604bb87556322de007  gcc/read-rtl.c
! 326c3657f309511ffe8dbd769e0b412b  gcc/real.c
! 28d983de338add887431955ebd4db924  gcc/real.h
! 930faaadcf6c2854e606ef2be1dddc32  gcc/realmpfr.c
! 9b56756ed3d42790cc85d4ea9181e014  gcc/realmpfr.h
! 049f0860767561074f61ae815c529e2f  gcc/recog.c
! df6d40ffe1b94af5d8e180609b3eb65d  gcc/recog.h
! 006e3808b553ab307c4b8cd12f5cf1db  gcc/ree.c
! c06a657084d5551f6e7922054ae98719  gcc/reg-notes.def
! b3c27e6ae27310d247b829196369c673  gcc/reg-stack.c
! 70ddf340cde828c72539941241c68ea3  gcc/regcprop.c
! 8ea4f5b1f7e31a2e47797982b1462ec4  gcc/regcprop.h
! a834bfdb65110702c75fa572bd4c829b  gcc/reginfo.c
! 198f8f26d8bca6f4836076e60bdbc80d  gcc/regrename.c
! 4d6b24f3b930b82f498c76a9af36902d  gcc/regrename.h
! dd41c821b8625e4697bf17679a151555  gcc/regs.h
! 656c0d2ef706df3f8e3e0d73ece3e333  gcc/regset.h
! 4cdb486cb6914160e6c9d689104963b0  gcc/regstat.c
! 39d5072041b35920c2926392129ce2e4  gcc/reload.c
! ac60869ad50176108b2582f282b56d68  gcc/reload.h
! 0103c2cc15d45b633b0f4ff2fce69c43  gcc/reload1.c
! f5f7516a258b6367d22f5cf3c97326bb  gcc/reorg.c
! 90997bd67acc28dbd0956e47a4be7d0e  gcc/resource.c
! 012e3a805df645a90a2453dd0b9b37d3  gcc/resource.h
! 4c5f8660ff1d2252d0b26c1f2d988d43  gcc/rtl-chkp.c
! ce51ae5d10f5cb8b145a4ff0699046e2  gcc/rtl-chkp.h
! 799a5911fdad4fc68ea3d7f011ba3420  gcc/rtl-error.c
! 728f9fa6d6d831468f96752ef3e06001  gcc/rtl-error.h
! d76ca39349983cb0b54c6ad134f61920  gcc/rtl-iter.h
! d2bb5073ea343a1ae4939771412b63e0  gcc/rtl-tests.c
! 908701aba46db9a1a44393e99d07c6e6  gcc/rtl.c
! 7e78287e5749d4be4bc0c862b05f140c  gcc/rtl.def
! 76922ec0c9f43addece65e6d4a7a893f  gcc/rtl.h
! 8ac8532996718d2160c5f3629a192f1c  gcc/rtlanal.c
! 5c77db4ff466d7c8384d3007c09e56d0  gcc/rtlhash.c
! cb5fb683f24857f0ab9551a7e86100f2  gcc/rtlhash.h
! f541ab154aeea10a302aeac4bb8a22b1  gcc/rtlhooks-def.h
! f26ab5acb07dc845e9c54bbd52c169fe  gcc/rtlhooks.c
! 64c1d5a3c62a16e55c400bec4c5e0ddc  gcc/run-rtl-passes.c
! 43d372590f415925f9c636eef95efbfe  gcc/run-rtl-passes.h
! da190488fa2f02c76c8f58a1d0330414  gcc/sancov.c
! 5a2154686a21af0a2a3eb09496ecac7a  gcc/sanitizer.def
! f9c51422b911561e2dbe74b86c179989  gcc/sanopt.c
! 031f67a5fc61f2ead64dbd3606199c4c  gcc/sbitmap.c
! 11ceae5c154051f959b40d43418751cb  gcc/sbitmap.h
! 983c5abbb40ee0804d8aa3404e204908  gcc/sched-deps.c
! bc2cdd934cc25969850f307ee699cda5  gcc/sched-ebb.c
! cc2c27a29c37bdf43fe18aaa80d8639f  gcc/sched-int.h
! 5e8f08093ead857df7b6081c37d89ebb  gcc/sched-rgn.c
! 2226918563a6bb43dcd9f76069014989  gcc/sdbout.c
! e196557bc12b5e4aa89cd6e83a52bd5f  gcc/sdbout.h
! c1ff4c843a3c48f2f525778b6c0d5cf5  gcc/sel-sched-dump.c
! 9d262660fa4ca20880630fb1b5facce4  gcc/sel-sched-dump.h
! acf98d6fe50de85fb54fe720c5c83ba8  gcc/sel-sched-ir.c
! fdf9a579bdc31c47d6ee8badd12f2e6c  gcc/sel-sched-ir.h
! 6e8442728bd4a1cd28bbd660939c1166  gcc/sel-sched.c
! d6d77ee92d00b4eaf26b9de573080b83  gcc/sel-sched.h
! 676b24f635805b5265c80006605b876d  gcc/selftest-rtl.c
! 3d2f2c11ae427fe5681287248915ee60  gcc/selftest-rtl.h
! 1b0c3bbe14badc941b8356f912439c62  gcc/selftest-run-tests.c
! c0e70487ac6c563b18c999487bf5bd1b  gcc/selftest.c
! 2fb91fd80adbf8475258a996f5c6d9ec  gcc/selftest.h
! dffcbc242af3b5ae86b50e3972675593  gcc/sese.c
! 658c410884b61ff14c3227571d956a2d  gcc/sese.h
! 470d4a9ed8353cf6cb2be23d9b083b80  gcc/shrink-wrap.c
! 48ed9b4096ed4cea04dc58eef6feba03  gcc/shrink-wrap.h
! a4bcd5fe1b67e43fbe491ab8f67e4e9a  gcc/signop.h
! aaf0b4d538fc2dbc8aad55fb92389056  gcc/simplify-rtx.c
! 08a839007ca3175ac49c421b71cb4936  gcc/sparseset.c
! 3bab1d474e71a3caf57cd7f96fbd3b42  gcc/sparseset.h
! d7678840bc8ba8c9bf38d47667143ebb  gcc/spellcheck-tree.c
! 39bc1eb69f90cc5a59f418e635ed413d  gcc/spellcheck-tree.h
! 8f0850ea5c3c72ba5647af1f4ddcceb3  gcc/spellcheck.c
! 2912bc769c82dc17f3324b8c159542dc  gcc/spellcheck.h
! 04e057b497182be35aa38c17bfd5f09b  gcc/sreal.c
! be6b9c9b75b67b613ebc3952a49fc6d6  gcc/sreal.h
! bee28ea7d06368aec80c4f1ad7686e85  gcc/ssa-iterators.h
! aaf3f90d21af2b5897868be436b8b843  gcc/ssa.h
! 13fa72c3453c4a91bc52ca064878247d  gcc/stab.def
! ef59b71f37b9ee5f108521f8e0713995  gcc/stack-ptr-mod.c
! 024f0374fa42bd4bd59bda64fcb840aa  gcc/statistics.c
! acfd89a99214448406e007b8b47be709  gcc/statistics.h
! 40a28c460f172dd1d61a5085d3c0cb8e  gcc/stmt.c
! 6241bf746244c38ee2b5bb2f50700720  gcc/stmt.h
! b9d96f26da759fb9923974eeffa2453c  gcc/stor-layout.c
! 1c7daba8028822e5b94a2153155ad602  gcc/stor-layout.h
! 8e1d62fd4e94be5e6ca36846b1aa8c50  gcc/store-motion.c
! f8d66329a1a49cc3f918ca0cc8dabe29  gcc/streamer-hooks.c
! 44fc77a08ef845e26d7b98a41e81567d  gcc/streamer-hooks.h
! 99939e3eae08d6ec0e2ee9a8efefdeca  gcc/stringpool.c
! 2ce55b7c2f4c9b01638e84a2c0e71ddc  gcc/stringpool.h
! 363bf9610ccd5a07e44e4a6f3eb6dc71  gcc/substring-locations.c
! 9878badb619687340998bcf3640b3cbd  gcc/substring-locations.h
! b7b5a00a031835983125f2937db4804a  gcc/symbol-summary.h
! 9cac484e9987d13642b3be0d459aad25  gcc/symtab.c
! bd271aa5ad96d6349cf5b502f6c1f5c4  gcc/sync-builtins.def
! 4b3a7a754c52da9ef683b6f7294a8617  gcc/system.h
! 08334c3b5c7914017c1b60360c0a1ff3  gcc/target-def.h
! d0a64ebacc78d33ea6032353718cce4e  gcc/target-globals.c
! 830ba5e91b247647e69083b2e7428f88  gcc/target-globals.h
! a5230b8dcb383af422699201be435e7b  gcc/target-hooks-macros.h
! 278636527b3f0a8901e85c0a52a8443b  gcc/target-insns.def
! 713e6e048bbf7460cbec1c056fb666ad  gcc/target.def
! a05a444f8043177dc60812bbde449eda  gcc/target.h
! 130ded7300d8bd75644b06dd136911c9  gcc/targhooks.c
! 0aab1bb3e79d26285582376c20aeb077  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 3e7a5fb2136327be4ac63f0bbf054046  gcc/testsuite/ChangeLog
  862f04afbd87da2cc6bc432c3f28430f  gcc/testsuite/ChangeLog-1993-2007
  029a5d8dacd25eb5d4711452ac448e5b  gcc/testsuite/ChangeLog-2008
  13ac28c41d51b66b4ec40dba6bd50f39  gcc/testsuite/ChangeLog-2009
--- 4746,5535 ----
  b378eb9df97ed252ce2624646d05df15  gcc/fortran/ChangeLog-2014
  a71efd3e199a80ee07c7f350cc8fcf91  gcc/fortran/ChangeLog-2015
  87a1607d67d7b571432a0e83b1e4aabf  gcc/fortran/ChangeLog-2016
+ 1ee95f47d9685043c09a7b41933d263b  gcc/fortran/ChangeLog-2017
  9e0636f92243fb9b3480e27cefc96749  gcc/fortran/ChangeLog.ptr
! b09b9dd0a6487a5cc7c24c368ef23324  gcc/fortran/Make-lang.in
! 48cbfa8a455f552184e13c367d4854ae  gcc/fortran/arith.c
! aa8d69581095289ab399d7918671b1e5  gcc/fortran/arith.h
! a0e02320e4b1bf7f66bbfbd9bc64e038  gcc/fortran/array.c
! d615344312412ebd7dc61d519ef3ec5e  gcc/fortran/bbt.c
! 16462b611c1461e2b94c6644763d11e0  gcc/fortran/check.c
! 3cd85b099dc60ad560d99686bb5c6a27  gcc/fortran/class.c
! 20fb365ff3aae3dd5dd1bc5609bcb216  gcc/fortran/config-lang.in
! 8ffccc64b1dc0ee747167a692d6a921b  gcc/fortran/constructor.c
! 8b30afec649d4328c8c1286ffd99f281  gcc/fortran/constructor.h
! 2e21d71db28111b1b291395efac738b9  gcc/fortran/convert.c
! bc309294f544921aa641807107fd57af  gcc/fortran/cpp.c
! d4f427b9efe267b545337325c27a4893  gcc/fortran/cpp.h
! 2fdb7621d52db262b12b9ad9dd30717a  gcc/fortran/data.c
! d5b5f00f5c8a84a40bbba39841db18cf  gcc/fortran/data.h
! f18b26e8ab774f2f76e0321bb4116558  gcc/fortran/decl.c
! 41c8477736e5d56f3c6791cdb3556160  gcc/fortran/dependency.c
! 05ec93c9bdaabcca73284894c616ba09  gcc/fortran/dependency.h
! e3dee91ab219979c305ba36b745488d0  gcc/fortran/dump-parse-tree.c
! d0348f441ed81aa75649d1f553e01b0a  gcc/fortran/error.c
! 0faa568ebccb2d2286eb17a68b90e168  gcc/fortran/expr.c
! 33a998bb76f277bd3a0787f05532a487  gcc/fortran/f95-lang.c
! 3e0526eddc36033bd35c03cb7d9d5f68  gcc/fortran/frontend-passes.c
! 28798906693f1520c4d4379c9fc6782b  gcc/fortran/gfc-diagnostic.def
! 5de5695bff65d5964be1401432f63785  gcc/fortran/gfc-internals.texi
! 148fc30678d093613c7f6acc7da9c0c5  gcc/fortran/gfortran.h
! 72e587f8e48760f215479d6dbc8f76c5  gcc/fortran/gfortran.info
! 73f39740f85d3bc5073c7b67359c35bd  gcc/fortran/gfortran.texi
! 1e357492be9d4ed58ca379e6fe1cab80  gcc/fortran/gfortranspec.c
! 888537cd845212d4b314700a17f27cbf  gcc/fortran/interface.c
! a4521ebe6f6b862c169e845115125c95  gcc/fortran/intrinsic.c
! 6a6a8cf6a58da021aa3f6d50121e5dce  gcc/fortran/intrinsic.h
! 3972b5e867799c7ba3b9d3d68a381b64  gcc/fortran/intrinsic.texi
! 1e7074d5c2db29b0218f86ca351119b9  gcc/fortran/invoke.texi
! 7b6bb74ccf46997ccb88f241a7dd1ae9  gcc/fortran/io.c
! ac973a8ce27833cbfd1a3303f29fc342  gcc/fortran/ioparm.def
! ba0904334200ab6288538051dd45f10a  gcc/fortran/iresolve.c
! 23f4daf3c2cba1374556fee61f403e11  gcc/fortran/iso-c-binding.def
! 6b2d8be92136037049db739735220da1  gcc/fortran/iso-fortran-env.def
! b7f1acea296ac135f718fdf3ad9a9f88  gcc/fortran/lang-specs.h
! 2bab1ea90ced392079eed5ff0a1e3803  gcc/fortran/lang.opt
! 985ea603e7ad50000d307d5ff4105658  gcc/fortran/libgfortran.h
! 8053417bdade8db9b9ea8470c02fbf1f  gcc/fortran/match.c
! a16faa9094c5d5858efc6ecb52acec74  gcc/fortran/match.h
! 8689bb8258e5dbc3a0cc25f65c5a8085  gcc/fortran/matchexp.c
! 510536be0c63050f8b7cd5808c699f5a  gcc/fortran/mathbuiltins.def
! 622fcbcc760c0d714be13a3cd82ba88f  gcc/fortran/misc.c
! c84891821453483396160129abf6b8a4  gcc/fortran/module.c
! 6a301670c1cb19184ee508715cde4bc7  gcc/fortran/openmp.c
! 37006b7cb2eb9504e8ff5c68cf871ca8  gcc/fortran/options.c
! 900313aa49a16633398cbf5e39c038a0  gcc/fortran/parse.c
! db6cbb81135a427023887b2bfea92dd3  gcc/fortran/parse.h
! 99765d7088f859511a25d1fe94255f59  gcc/fortran/primary.c
! f2758ee4a62c69e3731a14792d3b36b4  gcc/fortran/resolve.c
! 552b4507d3c688303c7eab6a39c6e0e8  gcc/fortran/scanner.c
! e4b095e58e67805737af0ad040a5d5ca  gcc/fortran/scanner.h
! e8de13d3466f546b8ac3f7951510dfaf  gcc/fortran/simplify.c
! ea668bc8c5f2d6f9fd47f633f5a28881  gcc/fortran/st.c
! a862c85fbd40425aac74b81ed66adc95  gcc/fortran/symbol.c
! cf8f27fa40866d96bdbc979152f20597  gcc/fortran/target-memory.c
! eb6fc82bfe5fe7d340c04ca0cb0ad54e  gcc/fortran/target-memory.h
! 362415863496648fb073e1f157b52ea8  gcc/fortran/trans-array.c
! 1e1f3f180c46004f84694cd43c99977b  gcc/fortran/trans-array.h
! 517ba40f58618eb2c3b62ab5c6831d36  gcc/fortran/trans-common.c
! db451afc134c956148dc69030b5db653  gcc/fortran/trans-const.c
! ceefba4f9055aa156f0f42c030e08208  gcc/fortran/trans-const.h
! 3bea2b3f7cf85c6c3814b7af3e37c074  gcc/fortran/trans-decl.c
! 01a36ab02a33de5a4cf156bbe639d614  gcc/fortran/trans-expr.c
! 16da713a0616084d46c4d89c00ea9b58  gcc/fortran/trans-intrinsic.c
! 93cb594dcc588a98371f709ddad27bd3  gcc/fortran/trans-io.c
! bc2b568888a6ceef99d69072fbb7d71e  gcc/fortran/trans-openmp.c
! 378dfdd2ad52c3ffacb120c6dcef703c  gcc/fortran/trans-stmt.c
! d19cc5b6923723784e9b631f618ee61f  gcc/fortran/trans-stmt.h
! f427e72dd06b92a9c3143afe1caf8daa  gcc/fortran/trans-types.c
! 7e8ab5c526d85a6852efb786e598ddfb  gcc/fortran/trans-types.h
! 266f07429219b421baa6e90125f6cf5d  gcc/fortran/trans.c
! c087b507496f29828792e64fe285e28b  gcc/fortran/trans.h
! 8d03eab72b0ce9c8fdf2489dc4f6e4bf  gcc/fortran/types.def
! 7e3386bd2b915caa7677cda411c9d836  gcc/fp-test.c
! b7935b269bc6695414c8b26b3d0fe343  gcc/function-tests.c
! b0ace21aa2333018817148cd2aabb5bc  gcc/function.c
! 58fb1f54e423018cbc2a9456e83aaffa  gcc/function.h
! 1aceb05c089c01e5c0c72c2a5b28da19  gcc/fwprop.c
! 8e19055be3c6435d916a651f6c59ef38  gcc/gcc-ar.c
! 96209d93cbf3d8de5609f4540d9a7907  gcc/gcc-main.c
! 30b56eb036498b85225f5987985064b8  gcc/gcc-plugin.h
! c788644be98d5a2a1a11b272cfab1241  gcc/gcc-rich-location.c
! 96d6902ea55c3b6cb127750ec5792995  gcc/gcc-rich-location.h
! 89028a58e5faa3c20e3643de6c8f8b3b  gcc/gcc-symtab.h
! 1cc93784ac78ba68ec6312b065a31806  gcc/gcc.c
! 11e9ddec8c221d118f4cbc7893c4af98  gcc/gcc.h
! c079ac6a190ec8df02108e8e8c0d6f4c  gcc/gcov-counter.def
! af843170035d689d110c04da707cf8aa  gcc/gcov-dump.c
! 8f2c53a81f3449d3aa85b8e189a38fed  gcc/gcov-io.c
! 684f64d8b5a5676b5c1bfc339a108788  gcc/gcov-io.h
! 0c88bd339d2e52b298a33052248884b2  gcc/gcov-iov.c
! e811693e591ca37f156560117f6121a1  gcc/gcov-tool.c
! 3937fc15ced5ce570c2b25ca01de0773  gcc/gcov.c
! 71a73b0546631aa618b3c00677d57650  gcc/gcse-common.c
! e6bc6d5304282a4cf05a626941fed245  gcc/gcse-common.h
! 17211ea8edfdbff83c84d1d9c1c1f051  gcc/gcse.c
! 4a3b79b37639c436dfccdbfca76e1476  gcc/gcse.h
  af83e4b4719ee065872080b713d24c2f  gcc/gdbasan.in
! 99bcf12968c4344883d815f1b65517ef  gcc/gdbhooks.py
! 03dff151ee4166cc491b946db0d5d9c4  gcc/gdbinit.in
! 8a7015a44da541a5f6ee145d70504319  gcc/gen-pass-instances.awk
! 31a4fae2ba1750d2b867f939cb26676c  gcc/genattr-common.c
! 794f2c018d2711645a610282bb95a119  gcc/genattr.c
! 87c5a716aa9f461a81cd3d06542eb8e9  gcc/genattrtab.c
! d77180bdba5c8dd66c2dff819069f2a1  gcc/genautomata.c
! 0efb08b03b2680580c90a2547f41778c  gcc/gencfn-macros.c
! 6278c150721ee248fcdb6b86793b50ac  gcc/gencheck.c
! 992cb27371c4b97cd70a46ef9a958ac6  gcc/genchecksum.c
! e2262ac6907bb1b98e990945df6d1558  gcc/gencodes.c
! 56916be09ba5208fbbc1bcaf343b64e1  gcc/genconditions.c
! 45017b10117a395da3877275237fba05  gcc/genconfig.c
! 79a9eb017c6e58f0e9bf8ce783557866  gcc/genconstants.c
! 614a93678d8157720c842acba5113e25  gcc/genemit.c
! 4ba1daf72059a651e6e1394946d8646d  gcc/genenums.c
! 29d75e6115c62b17469b7b93fe297c4e  gcc/generic-match-head.c
! ca498ebfbf5575a37f9642593487f6bf  gcc/generic-match.h
! b01b6419766d41c25d38794d4f32dfb7  gcc/genextract.c
! 92f953de889d59c02d7c25c238be540e  gcc/genflags.c
! 7b30ae499731e8256998caf0912209a9  gcc/gengenrtl.c
! d7f9b6ec14671c4eaeb8a3ec8d3ee833  gcc/gengtype-lex.c
! 3d4c619fadb5870852dbc187182c474c  gcc/gengtype-lex.l
! d6a29975bf7d91bd496e075f5e470e75  gcc/gengtype-parse.c
! 64e6e992a250fb71e455de19cd155c53  gcc/gengtype-state.c
! 34004dd31914da7127d8aa7f4fcbb38c  gcc/gengtype.c
! 6c021ac413fbe1c8ea48ce746dbf2364  gcc/gengtype.h
! 283f3a61c60cc0af8cda29271012e299  gcc/genhooks.c
! 1c12dfcecd22e66367c6d551e8bb49da  gcc/genmatch.c
! 17962ba47584e57e0b9e33c35e77d24e  gcc/genmddeps.c
! b0a279df34588aa6a37e789855d1ee30  gcc/genmddump.c
! 4a99292daec1f619a38273cc2ae89d8c  gcc/genmodes.c
! f1e4682650481955971921e78bc4c346  gcc/genmultilib
! e69a33787947fcb1d3ae048e1a6e6098  gcc/genopinit.c
! e2c15ce75083203dcb1196b076d65911  gcc/genoutput.c
! df9bf6e47826e29c4f3c01acf3afcb98  gcc/genpeep.c
! 116ae62413064af609f6f490f5c06878  gcc/genpreds.c
! 2ad7e548334c9fba44cc165e5689e7e5  gcc/genrecog.c
! 0bbfefcb423805238ce2235f3d116d15  gcc/gensupport.c
! 4dd5d676d573ece106f8239f892287b2  gcc/gensupport.h
! 3841480d5fffbf2f5c69f7d1ef80c6a9  gcc/gentarget-def.c
! 3c88215e14c083e4c5d4237418c17031  gcc/ggc-common.c
! 4c614192cb18bbdaaacdd0aa977d8975  gcc/ggc-internal.h
! 109284dad98a29c2f241c0cc3be8e160  gcc/ggc-none.c
! 5b5840ac61ae815fef0ca90fbba15b0e  gcc/ggc-page.c
! f539fa97e3352bb2713159d7cd57f6d9  gcc/ggc-tests.c
! e0cc73b3b635f520872a6c9d21588338  gcc/ggc.h
! 9bfb81e5206c1ccc9f090f2f6be9d991  gcc/gimple-builder.c
! cdf7412c306a686af61815bb09b2f94c  gcc/gimple-builder.h
! e4c51cb35fd3db8dbf8b9d6b7e7f2b9d  gcc/gimple-expr.c
! 8efde36a406c63492e1a2b9a0699ae2b  gcc/gimple-expr.h
! 256e8526b6065a9587009a1040fb10ab  gcc/gimple-fold.c
! e6788267702b4eb503be8a95ff28a071  gcc/gimple-fold.h
! cbde4efda211952b48286a1b80a48175  gcc/gimple-iterator.c
! 59063f384ac4735d4c342e7834b5080f  gcc/gimple-iterator.h
! f99ef5c13d1f3be0e36c7e8e1be88b0e  gcc/gimple-laddress.c
! 05b5b93d03cab554dd02b235aa0d1f0e  gcc/gimple-loop-interchange.cc
! d588729e224a2df44f4e0f5fe41bdd68  gcc/gimple-loop-jam.c
! 331bd9e3c0cac403bad1cc781bb6723a  gcc/gimple-low.c
! 9fba340191e35061bf32c2b9bb9e37e8  gcc/gimple-low.h
! a59c6213493db4d23ca5c7f137ce0c11  gcc/gimple-match-head.c
! eb675fb009524ef451bafff90b647f21  gcc/gimple-match.h
! c8d3934e6ae25e241acc11c3d306d715  gcc/gimple-predict.h
! 6118048654d340de91ca04517ca0ad31  gcc/gimple-pretty-print.c
! 99c087c4edae2fa9a0502024cd238cc8  gcc/gimple-pretty-print.h
! 6b6f0e869193eecbef624d44bd28fb42  gcc/gimple-ssa-backprop.c
! dae5e9c6621b54063936ca15a3ba82b8  gcc/gimple-ssa-evrp-analyze.c
! c6da6341b260e9f0b1d352e7a2e9741d  gcc/gimple-ssa-evrp-analyze.h
! d8fbec638f57c0e32ab16d9e67cd405b  gcc/gimple-ssa-evrp.c
! c227644af61693fec81eeec48d43d93f  gcc/gimple-ssa-isolate-paths.c
! 9db0b33d53d43c87b61d647656104c46  gcc/gimple-ssa-nonnull-compare.c
! f2472ffd84e5b86a567ef9c22b6632ff  gcc/gimple-ssa-split-paths.c
! 9c9d0f16fccdeedfa98837b61b6f2e4a  gcc/gimple-ssa-sprintf.c
! f4bc87137be7247e6139a4dc02497761  gcc/gimple-ssa-store-merging.c
! 619df086d40ca3c3936bbb12c5135f03  gcc/gimple-ssa-strength-reduction.c
! ca4f38a646ec11265518d84d6b545dab  gcc/gimple-ssa-warn-alloca.c
! 260f32c57c8d2fd4a2eae667f1331a65  gcc/gimple-ssa-warn-restrict.c
! 33e880297fd86716c672015df29aee60  gcc/gimple-ssa-warn-restrict.h
! 537dd4de148064ea689f70411462b123  gcc/gimple-ssa.h
! adb4cdab775bf6f318a329cf112733b3  gcc/gimple-streamer-in.c
! d318f9d2ac70f338716718fd5ec8f54d  gcc/gimple-streamer-out.c
! d856406eede78dc6a692f574b42315e0  gcc/gimple-streamer.h
! 1eba8e8d82b525491418cd55e15d2275  gcc/gimple-walk.c
! 35b03e882daaeefaf5db9f9eec16ab78  gcc/gimple-walk.h
! 330228523109ab9f913ddd25f8ee76e0  gcc/gimple.c
! eefeab2028f35136e03ee18d9d9a52c4  gcc/gimple.def
! 6b1687c7fcf7b3ee3b13dc17546c01e1  gcc/gimple.h
! a3409b3a9f07d554a4e49de168d23381  gcc/gimplify-me.c
! eeab737071f7239590a9e9896cdc455c  gcc/gimplify-me.h
! 3d35c63cb0adcc0ed043f4fa91cf0ae1  gcc/gimplify.c
! a9c1ef55b88bbc9e436f843a238a4e86  gcc/gimplify.h
! 7265d2e58f2002e04e053312f11a735d  gcc/ginclude/float.h
! b584400b5dbd7c7b3f37550824c71361  gcc/ginclude/iso646.h
! 3a2e9334e4717f54d0379207e614dc81  gcc/ginclude/stdalign.h
! 8119d06cd31ba3d19224161638c762ea  gcc/ginclude/stdarg.h
! ce2a0322249162ce8c0d0753d5664187  gcc/ginclude/stdatomic.h
! 57a00816d111b3545dd08beaf618e597  gcc/ginclude/stdbool.h
! 63a2a3c438c2b20a118b7290c636f47d  gcc/ginclude/stddef.h
! 54fa904b3bef067b87ca813e9853c908  gcc/ginclude/stdfix.h
! 3bd9c3d81c7e9fc0160ff4083a9ad370  gcc/ginclude/stdint-gcc.h
  f85aa0745c3e9e0d32fa64753089b2f1  gcc/ginclude/stdint-wrap.h
! 91276ead0c7c937bb7f5c1fa39283039  gcc/ginclude/stdnoreturn.h
! 7a45d9f735da259d495673092b0115b6  gcc/ginclude/tgmath.h
! 29c8cf010fb2ecbb7d1554bb5f52e0e1  gcc/ginclude/unwind-arm-common.h
  8d9ecf0d6ef93c79623ce1d27a32a2cb  gcc/ginclude/varargs.h
! 51980eb50d09b511cfa8524ab5361e81  gcc/glimits.h
! caa1a4d6f44f7842f21aaa8c6a2f0788  gcc/go/ChangeLog
! 69470ddce8bb4e9d25ba9e5e9ed6d4a8  gcc/go/Make-lang.in
  60ea054548c83c7f66170073f9f3e74c  gcc/go/README.gcc
! 3985883511f27b692b1243c7f6b52dc2  gcc/go/config-lang.in
! 11cb320ca56e56afd0976ffa164c7d63  gcc/go/gccgo.texi
! 38aed6ecfdb209c6b61d38a10b160da2  gcc/go/go-backend.c
! b2d0c2897fb0d708e2065f319e28511e  gcc/go/go-c.h
! bdcb82f7d64c6b4b127bfeae6a4afc59  gcc/go/go-gcc-diagnostics.cc
! 40b5bafc44595b943e1a07d30e0580d6  gcc/go/go-gcc.cc
! 01af4e37580cfba0f534e5b623cd55b1  gcc/go/go-gcc.h
! d57f4f5b20b3996288306b08fcf36a89  gcc/go/go-lang.c
  e7de0e353b3ad578aac63ba754ad94e5  gcc/go/go-linemap.cc
  ea0968c143d7402d91b2b1301c76e5be  gcc/go/go-location.h
! c639e80d1c582ae190f0d3ccbb60ac8d  gcc/go/go-sha1.cc
! 529e1a1d79b0377ec4384328e95f5dfe  gcc/go/go-system.h
  5d4950ecb7b26d2c5e4e7b4e0dd74707  gcc/go/gofrontend/LICENSE
! 24d96760a723d6cf0baedcd0884435c7  gcc/go/gofrontend/MERGE
  3a55d95595a6f9e37dee53826b4daff2  gcc/go/gofrontend/PATENTS
  09b47be9ee44cac640658e346eb568be  gcc/go/gofrontend/README
  3bf1a811c650cbc3399ee6382306c38a  gcc/go/gofrontend/ast-dump.cc
  456b6d4cc785176b6e3eb0c685a93b39  gcc/go/gofrontend/ast-dump.h
! 93c75ff468d4a4228348b8468c2d7b10  gcc/go/gofrontend/backend.h
! 2006b97ea0ea180eab77ae04ec9536ef  gcc/go/gofrontend/escape.cc
! 83bba961b0c49d06a0bd58b0b2b5ed44  gcc/go/gofrontend/escape.h
! b33c8f4d7025687462381305b2ab5d57  gcc/go/gofrontend/export.cc
! 5e631ffc78a3c861bdc83d000a787f9e  gcc/go/gofrontend/export.h
! 5a04bf3c9d431f74d96a4b7ded96e5f7  gcc/go/gofrontend/expressions.cc
! 172fd7c4551aa08ac44d1d7ac65b4f2c  gcc/go/gofrontend/expressions.h
  7d753b8578fa638c2da1c3f27cae2878  gcc/go/gofrontend/go-diagnostics.cc
  6018d89190ca6202e5dd86b2f81f6c42  gcc/go/gofrontend/go-diagnostics.h
  19e66447fa803385274b4e1a7501a4d5  gcc/go/gofrontend/go-dump.cc
  e3f005ccc40000dcaf14ab6eec979f69  gcc/go/gofrontend/go-dump.h
! cac901174584a4d06170d9ad8ac47a63  gcc/go/gofrontend/go-encode-id.cc
! 3e2e1ebe12916df3bb8aa77d48490253  gcc/go/gofrontend/go-encode-id.h
  aa47b5ec42c70a6c61773990b70599e0  gcc/go/gofrontend/go-linemap.h
! c08c0bc386a3e50faacf99daf94c080f  gcc/go/gofrontend/go-optimize.cc
! ead5ac25b7b99d361225e0fd940e286a  gcc/go/gofrontend/go-optimize.h
  5b59619fab7e543c5bb28dd8a6d62793  gcc/go/gofrontend/go-sha1.h
! 5d709689b48fa1b161f21849305d28d9  gcc/go/gofrontend/go.cc
! 92ecb2c02b2eba2e2b9188ff4ebdd073  gcc/go/gofrontend/gogo.cc
! 3810001b6d5dd16ed70ab913da574cb1  gcc/go/gofrontend/gogo.h
! 94f856658355b74d6334372c9b6b95e9  gcc/go/gofrontend/import-archive.cc
! cb0c8248906954a19f6fec413e6c8257  gcc/go/gofrontend/import.cc
  b2b71935c39637f3c2650761617a4574  gcc/go/gofrontend/import.h
! 64804f5fbd72686de45922d2525d08e9  gcc/go/gofrontend/lex.cc
! 479741801f2ef2dc29dd5c2e188565f4  gcc/go/gofrontend/lex.h
! 50294b8450cb1f768daa58ce0efe8586  gcc/go/gofrontend/names.cc
! 98235b1a736055cd6a130337a9ee8e8e  gcc/go/gofrontend/operator.h
! 4ea5036de767c6e71acc36a7c347003c  gcc/go/gofrontend/parse.cc
! 5beddc413d430de848ee0f15a5194b0e  gcc/go/gofrontend/parse.h
! 8c2f1dd7eb6a2a829ea5fd42f5e808aa  gcc/go/gofrontend/runtime.cc
! be51098b38b4cec9f0c3d9be71400d3b  gcc/go/gofrontend/runtime.def
  978a7b1924ca7f696fa5d0da3c9ccf60  gcc/go/gofrontend/runtime.h
! 5a41b2b7a4db75df8c4c2f1a193961dd  gcc/go/gofrontend/statements.cc
! 4357c644f01399ebf62467dc7eecd627  gcc/go/gofrontend/statements.h
  0ba1a11b029f92c6795e4c940c966f48  gcc/go/gofrontend/string-dump.h
! 8dc128ad9e0706db8e89a99bc60b7241  gcc/go/gofrontend/types.cc
! 7408550f72674b00a119a88f6557abc6  gcc/go/gofrontend/types.h
  3662dad559a197b0771d9930d494949d  gcc/go/gofrontend/unsafe.cc
! 9f561939d800352917a0669ef889119a  gcc/go/gofrontend/wb.cc
! 8a28f0402b7f9dc2b43070a35f79570f  gcc/go/gospec.c
! 4eb4de68f72e9a9e967b813e5e3c554d  gcc/go/lang-specs.h
! a9735020d41e71ede2e62ad9d0a4cd1d  gcc/go/lang.opt
! 987624ed27b310d42001893806965468  gcc/godump.c
! ee0e0b5991f9abe75f127323b94e16e3  gcc/graph.c
! 9e58ee8b28ea4e0e76923242133c2567  gcc/graph.h
! 0a32a26f35506438254ba060451c5b73  gcc/graphds.c
! 8efc23e031d684f5f0f6989574949cb3  gcc/graphds.h
! 113dcd0b0b26f543fe9a506db1db816b  gcc/graphite-dependences.c
! 3cc6eec261eb72566ededf9fd083a097  gcc/graphite-isl-ast-to-gimple.c
! 271fe345ee1fd9fcaad3f7ad97ad60b8  gcc/graphite-optimize-isl.c
! b171596b4a17472b436376a2d650f411  gcc/graphite-poly.c
! 915eb551c3f4ed1fd7e13c4380c015c4  gcc/graphite-scop-detection.c
! 135c03be2cbbe6e4e3a9740a69a591b9  gcc/graphite-sese-to-poly.c
! c82692a490fd707b9399965cef16498e  gcc/graphite.c
! adfe66b7e286f52b35170ffaba0d47cc  gcc/graphite.h
! 665140b2c9efff26797cee1b3bd6cb7a  gcc/gsstruct.def
! 2971b66dc6d899d0da0ce5e3e770df10  gcc/gstab.h
! 583844ada13079423d5a5e0ba019d7ec  gcc/gsyms.h
  c32a1d882e7039afe158bb9e59b65223  gcc/gsyslimits.h
  053ee4a84e4593c88c088f25e153d1a5  gcc/gtm-builtins.def
! b9608541687f2845ec930be3fadbbe88  gcc/haifa-sched.c
! 3bdd15276d4a69aca7b2585228296f99  gcc/hard-reg-set.h
! 32d33fd89168bc47be324d3c6af75968  gcc/hash-map-tests.c
! ca7bdddc3f40cc04d2b564f2146f22f6  gcc/hash-map-traits.h
! 43a83dbabd52258d477183bc1a283b57  gcc/hash-map.h
! ed3ff416c5fd2a72674ff96ba6f7bbb3  gcc/hash-set-tests.c
! 3e2f0d3a8cb046d720bfefefc6af6a18  gcc/hash-set.h
! 2d19a6a15736eb1a5dd35d0ce7175349  gcc/hash-table.c
! 0686136c486e41b08d9afd9a048be6cb  gcc/hash-table.h
! 1cb6d9ae88465fdec655c600a5e9ea8c  gcc/hash-traits.h
! 1b6a9af3b5dbb3cf128f3c65ab6bdacd  gcc/highlev-plugin-common.h
! 51484018aa7c38bdb40f8099fa43e2b8  gcc/hooks.c
! 354b1442965f7a6aeab37e3d8465c0ce  gcc/hooks.h
! 8d4188deb970e7c6952ca7480ca8707d  gcc/host-default.c
! f84aaf25e4f37caea69ae7ee902d68e1  gcc/hosthooks-def.h
! f3d56df023cce3e443a848305b52343b  gcc/hosthooks.h
! 55a2427108c6ccbaa6524ef872e97d6e  gcc/hsa-brig-format.h
! aa2358fa3a28004040aaa29f79da051c  gcc/hsa-brig.c
! 85728982915d9b5ab4d7b46593907f38  gcc/hsa-builtins.def
! 8c303034641d93266ff61848091ec0fa  gcc/hsa-common.c
! 39a903604bd80e6125a5a799bff60161  gcc/hsa-common.h
! 833bb6f546f2d033aa0fbb9f99ec13cd  gcc/hsa-dump.c
! 6022208f9e3283b0f6c36949452d017a  gcc/hsa-gen.c
! 718a5cf23ee1193a490c826d4adeb654  gcc/hsa-regalloc.c
! 2b88bc3c92b75f434eac0c735dd80694  gcc/hw-doloop.c
! ea3655e7fec77b721fcccf32d463af91  gcc/hw-doloop.h
! 3872e57d03816491f7036646e9542c80  gcc/hwint.c
! df5ae621e5bf708c452e14e15f9bbf68  gcc/hwint.h
! a0f5aa1d04c8f316654b2f865f9322ae  gcc/ifcvt.c
! 0cd50d5c06e7a8c06a8d5f0274730092  gcc/ifcvt.h
! 62a226be414f977f3289888b7232454b  gcc/inchash.c
! 94e5436d00cf61020b2359bdedb90a98  gcc/inchash.h
! b72d87256e9793f4d47a39119a05f84d  gcc/incpath.c
! aba818adc10872877c0338c3fb1ac173  gcc/incpath.h
! 8c18efc3f17744b0fbd836215598d0bc  gcc/init-regs.c
! f18e487b8c7d2d33dbceb9f3363366d4  gcc/input.c
! 04bbc03b5a88cc646d62baa9e14e229a  gcc/input.h
! 988835d6024129010f6580aa5c3e58b8  gcc/insn-addr.h
! db96beaba15bfca80c0ae7546e42e1e0  gcc/insn-notes.def
! 91c55ce3a2a4fd174698683409ff2c60  gcc/int-vector-builder.h
! 976490125760d4d56f97eb4ca3b87cce  gcc/internal-fn.c
! c426900e96f23c462ea7a1b0c08f736e  gcc/internal-fn.def
! 6032695cd61ea774005116e71fd89337  gcc/internal-fn.h
! ccd1d030cc4ed26a30d07e0a2704cd30  gcc/intl.c
! e7fa3524a21ce210ce70d873ccf22a97  gcc/intl.h
! 7e829ae2ed1916867ab7430cad2f0796  gcc/ipa-chkp.c
! 7f523ce336e249e14e7f7ea5a18570c1  gcc/ipa-chkp.h
! 7e49c4f8182f1a45e8fbdcb6643d7ffc  gcc/ipa-comdats.c
! d8bb6866f22eee8ca85ac88518ec54ed  gcc/ipa-cp.c
! 477e816e9089de12b3057cbafb0c54e2  gcc/ipa-devirt.c
! e7184f5168bdb30dfa982fc98184be7a  gcc/ipa-fnsummary.c
! 98840f956dd8a4d690458e1c33d988a5  gcc/ipa-fnsummary.h
! 9608b3b6cf0ecf1eafa4893b289b109c  gcc/ipa-hsa.c
! d50bcaa25c0573d280c912b0c18ec738  gcc/ipa-icf-gimple.c
! 31f67b40e4f965533240d0c82200b0e6  gcc/ipa-icf-gimple.h
! 8daef770ee1eaeb2e1dc3067c74929c6  gcc/ipa-icf.c
! 18643b93608f7d0046d392d6e8bd1d6e  gcc/ipa-icf.h
! fa2ec5ea3a944009aac9d16187d04d4f  gcc/ipa-inline-analysis.c
! 2b2f0a3781a3baa66db358e30058709f  gcc/ipa-inline-transform.c
! ef9aa1907278cbea1bffb0907cf81ce6  gcc/ipa-inline.c
! 239c96ce2398f468263785772a6f24c9  gcc/ipa-inline.h
! 6988b66c3a7f5f02c1d5054aa189a6d3  gcc/ipa-param-manipulation.c
! 8716743b8aa02f1b36950be473f2fad5  gcc/ipa-param-manipulation.h
! 4a9d74cabb254d713df68cfeecbfa020  gcc/ipa-polymorphic-call.c
! 392ee5a0d5c11824308f605d5574f008  gcc/ipa-predicate.c
! 6d30cf0cfd4ac42f0c7e55390f21a224  gcc/ipa-predicate.h
! 02f6a5bbd992c4e5fb4a8f9b471ff1c2  gcc/ipa-profile.c
! ee488b6fce1d549825ca66e5277e8735  gcc/ipa-prop.c
! c76998fde8e1e02e5630b7803369d25e  gcc/ipa-prop.h
! 2cf56559a25cfe37af9cfa55ef75ccd9  gcc/ipa-pure-const.c
! ed3e44c3b30c7779482bbfea44bdcb50  gcc/ipa-ref.c
! 3e0811c1242738a09d66c6f45ab63f3b  gcc/ipa-ref.h
! 74376157d8dcc647ba42e3daf31203ad  gcc/ipa-reference.c
! e9e8bdc7a4e6caf80d08366ace6b0807  gcc/ipa-reference.h
! 853a155dfe7c9e56ca84aaff0641b452  gcc/ipa-split.c
! 62a51e916fc6b38257afdd95f94b0167  gcc/ipa-utils.c
! 6a261a3e39a331068983de9387faa364  gcc/ipa-utils.h
! 7e1061a62d1489be648b7247d53625f5  gcc/ipa-visibility.c
! 33fc7df51930ca16a8bbf19593c38fe6  gcc/ipa.c
! a1cd88fca30bd778a696834ed8948d66  gcc/ira-build.c
! a0863afe9fd27fa348f515640cc1b62e  gcc/ira-color.c
! ab1746426a64e774e8d6a14996bcf831  gcc/ira-conflicts.c
! 279a1c534c793dff05c52b703d114a67  gcc/ira-costs.c
! 7f0b3d4f28c7f425f923ae90c05491cf  gcc/ira-emit.c
! 7efef313f4693ce6537940ab2310c94f  gcc/ira-int.h
! f99b3f41d9f867a42836ea77d67dd901  gcc/ira-lives.c
! 887b2a08a3c2f1e8bdfafff3cfa9a647  gcc/ira.c
! a9d565530cf1514d9b397a45fc03cfac  gcc/ira.h
! a48f2108e340e17830e681a3f37bcc9c  gcc/is-a.h
! c2561299d2ab5bbc6f6d14fda881bba1  gcc/jit/ChangeLog
  6071bdf04fb356c5ac99a99ec00c9a12  gcc/jit/ChangeLog.jit
! 94ae6c9e47796f7471226d32f12068da  gcc/jit/Make-lang.in
  fd0d76b6467c987f813d430a35d4760a  gcc/jit/TODO.rst
! afacf062dfd9a36ece3400957e32a410  gcc/jit/config-lang.in
  df53fb6b84c435b56ac2cb2727b62b27  gcc/jit/docs/Makefile
  deb386a5d39ee1488e2412e40b3b28fd  gcc/jit/docs/_build/texinfo/Makefile
  40d770c0fff5fdb135c9832c697a6e05  gcc/jit/docs/_build/texinfo/factorial.png
  40d770c0fff5fdb135c9832c697a6e05  gcc/jit/docs/_build/texinfo/factorial1.png
! 1f1e3df88c31c05cc12e20f6a82794e2  gcc/jit/docs/_build/texinfo/libgccjit.texi
  11b13c2e317ff217420ed928ce4ba00e  gcc/jit/docs/_build/texinfo/sum-of-squares.png
  11b13c2e317ff217420ed928ce4ba00e  gcc/jit/docs/_build/texinfo/sum-of-squares1.png
! ec221e1dc19b172cbe03ac321b3c9398  gcc/jit/docs/conf.py
! 54f9a90c150b4a340db3468083d70153  gcc/jit/docs/cp/index.rst
! 239d070a660934796fecf3ab9fcb592c  gcc/jit/docs/cp/intro/index.rst
! 069fa7383476a063a94b092e3e08204e  gcc/jit/docs/cp/intro/tutorial01.rst
! f610e3d93cc60738ab38e68f80690eb8  gcc/jit/docs/cp/intro/tutorial02.rst
! fa76e984f613ba502b89209bd06b7c96  gcc/jit/docs/cp/intro/tutorial03.rst
! d440cb71c4223a675cb79e867f4a1064  gcc/jit/docs/cp/intro/tutorial04.rst
! cd3c449bb06627704e84ccf47b14d6fb  gcc/jit/docs/cp/topics/compilation.rst
! 9284ba3e54a522c95c3010fabfa04de7  gcc/jit/docs/cp/topics/contexts.rst
! 4e0aba0996020254697df8116105d378  gcc/jit/docs/cp/topics/expressions.rst
! dd62c4c0c79b9c37986bc704feeddb2c  gcc/jit/docs/cp/topics/functions.rst
! 500d2777c6b30888720fbba8b18a987f  gcc/jit/docs/cp/topics/index.rst
! 17d44f8534bea950f02411b1cab304b7  gcc/jit/docs/cp/topics/locations.rst
! 06fcdbdb5394f4fc490c163f02c7e932  gcc/jit/docs/cp/topics/objects.rst
! b7733ecd3d886109d60cd7bcb6165d91  gcc/jit/docs/cp/topics/types.rst
  98a4c0efa41e5eb7177483e4cd99a81e  gcc/jit/docs/examples/emit-alphabet.bf
! b5f68e148e03f60709b936c450f156c0  gcc/jit/docs/examples/tut01-hello-world.c
! 88c8dd90dc2d8fc262ef61820814a59f  gcc/jit/docs/examples/tut01-hello-world.cc
! 576cde7b7a3cceeb65c590e8174b2fe0  gcc/jit/docs/examples/tut02-square.c
! 95855ba686ad17dd5a86e709f24b5349  gcc/jit/docs/examples/tut02-square.cc
! 5ab586f5d4bacb017b9e71598189b8fb  gcc/jit/docs/examples/tut03-sum-of-squares.c
! e9839006d4c74f291864d4efbf41f0f3  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
! 75d7458657c8495083d62051453ede89  gcc/jit/docs/examples/tut04-toyvm/toyvm.c
! 91bfd3d59c3cc330379fb4084da15392  gcc/jit/docs/examples/tut04-toyvm/toyvm.cc
  3cbe9daf70398730ee60aa4caf2fc200  gcc/jit/docs/examples/tut05-bf.c
! 7233be82917aa56e01608da558231ce7  gcc/jit/docs/index.rst
! 1a8fd1176742d8f17fc28357dc84aaff  gcc/jit/docs/internals/index.rst
  d72502d68617b68873d385bcee6e9c4b  gcc/jit/docs/internals/test-hello-world.exe.log.txt
  40d770c0fff5fdb135c9832c697a6e05  gcc/jit/docs/intro/factorial.png
! ecd46837e239fdcfd6e775e0d0d8968e  gcc/jit/docs/intro/index.rst
  11b13c2e317ff217420ed928ce4ba00e  gcc/jit/docs/intro/sum-of-squares.png
! af09f996c7a5604537cdb0accfeb8bbc  gcc/jit/docs/intro/tutorial01.rst
! 54a20576ffb4eb970dbfe162f61aee70  gcc/jit/docs/intro/tutorial02.rst
! 588408b837169515491eebfbb91b45d4  gcc/jit/docs/intro/tutorial03.rst
! e67f872bb3331da1f9072926ed419c65  gcc/jit/docs/intro/tutorial04.rst
! 3f5046e8ca1f950e4466204efbdb3b5e  gcc/jit/docs/intro/tutorial05.rst
! d56bb0082ae9665fa7b78f9563688368  gcc/jit/docs/topics/compatibility.rst
! a555402c05793f95db10b3289c4d22a4  gcc/jit/docs/topics/compilation.rst
! c82eadb9043bb9ba929f09a9f3c85c8e  gcc/jit/docs/topics/contexts.rst
! cae5cae5dd1c4adcfa793168080957e2  gcc/jit/docs/topics/expressions.rst
! 3d6d9bbc3f14c796e3016328e16d1a2c  gcc/jit/docs/topics/function-pointers.rst
! e7651e1166645548acc3fe54615aa222  gcc/jit/docs/topics/functions.rst
! 5e1deaa9430cc81846ff00940babef72  gcc/jit/docs/topics/index.rst
! 4ca4cd7b26485de3f399f372ef4bf012  gcc/jit/docs/topics/locations.rst
! 0fc3fe17346fea10b133798040915cfc  gcc/jit/docs/topics/objects.rst
! 07a773b1487689edee58c543bd9cd7e0  gcc/jit/docs/topics/performance.rst
! b737cfd101980652fef75909f49dfc3e  gcc/jit/docs/topics/types.rst
! 5f518fa7244f649f472c4a32a5019229  gcc/jit/dummy-frontend.c
! 61da7efe7292c19ed714570dc84d7ecf  gcc/jit/jit-builtins.c
! 10c7c7a7f3fb28a931a5f695013ce190  gcc/jit/jit-builtins.h
! b3a3ca3c56a55cd132dfa2b8c5455607  gcc/jit/jit-common.h
! 3084c46ef885b30d7b324e1108dafb85  gcc/jit/jit-logging.c
! 8701af7d74fc686be3ac2aca84c20c77  gcc/jit/jit-logging.h
! 94de9a21505c326ca06e6337437242b3  gcc/jit/jit-playback.c
! aab4a5cf48b5ee0bc9c72c70318faddf  gcc/jit/jit-playback.h
! 719238dd61fe0c36e553be5d8118a847  gcc/jit/jit-recording.c
! e31a37dcfeb0b7249c6e78e45c084a9f  gcc/jit/jit-recording.h
! de0c24f3bdf97fe86756cec5c44726bf  gcc/jit/jit-result.c
! 475f9339dd03c03d425d88b44d19c1a9  gcc/jit/jit-result.h
! 0e10220fcef51b90c94fae049bbe588c  gcc/jit/jit-spec.c
! c04b164c4b93f084de1d7ce7a58a19b5  gcc/jit/jit-tempdir.c
! 36fecfe9ac939e5eacf35b4c6b9ea62b  gcc/jit/jit-tempdir.h
! 272af0077e2ad72ac4d7b393debb9ca4  gcc/jit/libgccjit++.h
! c55047c3f327b6ea8b4ebd15fd347b6e  gcc/jit/libgccjit.c
! 49c2b6680ef543133c9d414eefa440d7  gcc/jit/libgccjit.h
! 8c16c79fd80f69657c239e692219ce01  gcc/jit/libgccjit.map
  aaaa50e3d4a7c60cc413faccb2d831c6  gcc/jit/notes.txt
! 2321af50f26cd0e077e1dbbf2cc1b5b4  gcc/jump.c
! 0f3d35b60ec5dfeb77d0a3dbf6f0bf2e  gcc/langhooks-def.h
! 4d98688a7f522749078f6f13ad13d4a2  gcc/langhooks.c
! 6569630fe1385d6819de2db2f519bad3  gcc/langhooks.h
! f06577c0ba6823789b98b44f4b12d09a  gcc/lcm.c
! a67d3d96827ff1f252f4e41bd958eeb5  gcc/lcm.h
! dd538e213c44a20daad62f04104c22a6  gcc/libfuncs.h
! b54fed7a4dbb260e1a598c03018f3f8f  gcc/limitx.h
  83de5c6450456e215a5484083afcd32a  gcc/limity.h
! fce9c00d6b7085e4e7bb1194f69b2beb  gcc/lists.c
  16086d64468975aa4ba54f78d2a7b542  gcc/lock-and-run.sh
! f53331e9f2fcea566bc74708ebbcf3c8  gcc/loop-doloop.c
! 71452a012bc0c2080ac4ace5a71fa156  gcc/loop-init.c
! f1de8935201298bf17886aaa387f8186  gcc/loop-invariant.c
! 594d05ef8872b15d948b0fa80f449450  gcc/loop-iv.c
! 996dfe136c99e00b3194b032df057387  gcc/loop-unroll.c
! d7a0d6904a47108de988a265c07d63bf  gcc/loop-unroll.h
! 82cdf4eb9b29c794564523f9e67d30c6  gcc/lower-subreg.c
! c8298ce3bbb3f4f5bb1332dd1de09cce  gcc/lower-subreg.h
! 4658afd5f0ea375fb8263ea039459c23  gcc/lra-assigns.c
! 6f6fd77e8d6a80dd8d1401aa4aedfdb8  gcc/lra-coalesce.c
! 4d56b66f1662240a7878f7ff7e343660  gcc/lra-constraints.c
! 8c74af79fba26085a09ab8d0d22c84ad  gcc/lra-eliminations.c
! 51b3b7475fd0363a1b023171975ecee3  gcc/lra-int.h
! b0ac46a1505ca96454945e8c5970d70d  gcc/lra-lives.c
! 3fef9b7a8d86c5a71e71a1766ee8f24a  gcc/lra-remat.c
! 7b4f3a337783fd23728a4bbe185285be  gcc/lra-spills.c
! 527847f22af321117b717bee9c917cd5  gcc/lra.c
! d3980d38d5a47af4f60a9f87d4cac4d6  gcc/lra.h
! 57e7d361e2e40d363fa01d5b2647ec7a  gcc/lto-cgraph.c
! 2a5b04b5bb0ce7c3c8acf1078ccecd22  gcc/lto-compress.c
! 3a64ebf3e60023d80c691b9f8914b611  gcc/lto-compress.h
! 913051be7c74b294f1f098384dba90b7  gcc/lto-opts.c
! e3444504a7d7dd430026a817ab64e425  gcc/lto-section-in.c
! 51590d4e0f13ef88377437a8f774c3b2  gcc/lto-section-names.h
! e86ce5e5d57f90d296240495fab89e22  gcc/lto-section-out.c
! 040e0076e9dd5a136396bc9812b70e42  gcc/lto-streamer-in.c
! 01e478149e11be16ff80d07e78c067d2  gcc/lto-streamer-out.c
! c5ada85e0bfb88cbdd6343e3685fdf4f  gcc/lto-streamer.c
! 841c135522a7e6a33b2a2f1e8fd8ec49  gcc/lto-streamer.h
! d7d6c93c7b91588c47dc92e69917cc49  gcc/lto-wrapper.c
! 48646aa7b26250fbb7f121be6a4ce967  gcc/lto/ChangeLog
! c100ca118b97aa3676e0ae80be4287fe  gcc/lto/Make-lang.in
! 2fcf46751e702c8806c469fdd3584f2c  gcc/lto/common.c
! a0f65246494606de47d9399031438ab2  gcc/lto/common.h
! f1ccf9f08c43ecc0fe76fb502a1a2615  gcc/lto/config-lang.in
! 0ed0cf5499f397b95e73d76d7e12b647  gcc/lto/lang-specs.h
! 5456839d016211e9dbf3cede58f87a81  gcc/lto/lang.opt
! be03e1dd9392839315e0c578a8aa4496  gcc/lto/lto-lang.c
! e706590c2974472759c9d179f4448d6d  gcc/lto/lto-object.c
! 119789e7190dd8590c0622ccf4131793  gcc/lto/lto-partition.c
! 77cbebb668a50387e2410ed330e671c5  gcc/lto/lto-partition.h
! 53834c8bc26193a9f8e86f70028915d1  gcc/lto/lto-symtab.c
! 55924d14fc01a82880c00ffb878443ca  gcc/lto/lto-symtab.h
! 624714a1ab3ba8c9e77c9e3f9afe7c02  gcc/lto/lto-tree.h
! 266b682b05d68bc25a63f7549e1beb2f  gcc/lto/lto.c
! 285e33c0ea7c3ae2104a316ba1e5f220  gcc/lto/lto.h
! de5fcb6d56fc59c226e5c30242f86e7f  gcc/machmode.def
! 425619ccbc843f2a48dc8b559fcf7cab  gcc/machmode.h
! acf0ce479337b4f1e009a9d329581511  gcc/main.c
! e6ff4fa66d1f0fc1402fd3825afef984  gcc/match.pd
! 0c1a6785da8f95da222414a0e2caf187  gcc/mcf.c
! 456aa4d0ab10d4a066ec39f7dde4bd0b  gcc/mem-stats-traits.h
! 09762f57bfd2d7653084bacf22695c8d  gcc/mem-stats.h
! 958f0d608e1f13849b93eaee5546a44b  gcc/memmodel.h
! 95c55f3a79d8b910cf64f24c01c2b970  gcc/memory-block.cc
! 6f90d3678da3bc49478e4e59a0315aba  gcc/memory-block.h
! 7c3b33908cab20d9621bab8a1c3d35b0  gcc/mkconfig.sh
! ee39e45872ee082b56e91223b89b8df8  gcc/mode-classes.def
! fcc116f5ff9f3d1a3294a3c82a165f6e  gcc/mode-switching.c
! a4bfa8b17c0f795c1cf22b01a9480924  gcc/modulo-sched.c
! 44b936defcd6ba38fd4bf79ddb2c8d76  gcc/multiple_target.c
! 40612a142fd5576150f1fbde859e4e73  gcc/objc/ChangeLog
! 35e45bc127ee449a9796f843be9c5f7b  gcc/objc/Make-lang.in
! 9d4a1e66a211fddc1a81b04d8a787ceb  gcc/objc/config-lang.in
! 63f143bcb1007a2074d0256cac38800f  gcc/objc/lang-specs.h
! 7dbaa931cf40fe184bb41cf5762bdf8e  gcc/objc/objc-act.c
! 5902618f49981dbdded08672deb40f3a  gcc/objc/objc-act.h
! 340b2d017a7f9d76238fa6b01fc6f477  gcc/objc/objc-encoding.c
! 8b530eec962e5197a50cffbf61f0a691  gcc/objc/objc-encoding.h
! 1a5cfc3f9653866828ea5cc9e76bd5b0  gcc/objc/objc-gnu-runtime-abi-01.c
! d5d3b8b2d7ce83cd3a057d5d63ad8630  gcc/objc/objc-lang.c
! 2cfc9245e508d73c346d780f990d7b05  gcc/objc/objc-map.c
! 467b931406dced84a478cc0a7e06359d  gcc/objc/objc-map.h
! 654539463f55e6161416abe767b36e39  gcc/objc/objc-next-metadata-tags.h
! dae66873a220a7d18be9680ee05bc275  gcc/objc/objc-next-runtime-abi-01.c
! fcdfa3cd64002b1017d0e294cc34d073  gcc/objc/objc-next-runtime-abi-02.c
! fc6f6e92841d9985d9bb7c3ce823f02e  gcc/objc/objc-runtime-hooks.h
! 3e557d003008fa294daa574c357160de  gcc/objc/objc-runtime-shared-support.c
! afc5ae9ef4254422edd7ffcfe7a26082  gcc/objc/objc-runtime-shared-support.h
! 28429bd18002a297a27bcf03272c9840  gcc/objc/objc-tree.def
! ec8618f56daff076a84458773319f348  gcc/objcp/ChangeLog
! 65f07f31679d06fe762d7467b59b187b  gcc/objcp/Make-lang.in
! 3f99dfd7cececb63c5e5a737e4666c44  gcc/objcp/config-lang.in
! 6602972a151675c8ad48c315b019646b  gcc/objcp/lang-specs.h
! 15ef21b7b185a24d6a73e698cd2e7bd1  gcc/objcp/objcp-decl.c
! 39d36c314f11b3244daab01d5b2398c5  gcc/objcp/objcp-decl.h
! 5ea51e258f09ed4e978047d7345d98a1  gcc/objcp/objcp-lang.c
! b527c5fa5194b425859272aa5f02cae7  gcc/omp-builtins.def
! 02e123d6b315a95a06cf3f48f40522ac  gcc/omp-expand.c
! d15f233c6c1134061bf55cb451a0e2de  gcc/omp-expand.h
! faabc3808f86fc151774a3e8af083a10  gcc/omp-general.c
! c4d1e61b2f77ded40154ce164f5c3d76  gcc/omp-general.h
! a1e554aec189439ebffbec0d24b1d3ef  gcc/omp-grid.c
! a5a2fc0324364bf0a63e19a0d1e1ead2  gcc/omp-grid.h
! e600650904a80a0bd2d917f5eb0d4c5f  gcc/omp-low.c
! 3cf200229ea30af09f6e72b183998f96  gcc/omp-low.h
! a4f6b56a23c5dd4373a0cf327c2b64b6  gcc/omp-offload.c
! 6c96501b610155a6b54ac03b9f066fdd  gcc/omp-offload.h
! c21868107153707023955fc0466e2d1b  gcc/omp-simd-clone.c
! 402d090e0c04fcf94d2a4933c7e86443  gcc/omp-simd-clone.h
! 5d58b35b91749d460b1aa2ab50aeb899  gcc/opt-functions.awk
! 7ccc756c6d6cf3084ffc6702de74bee0  gcc/opt-gather.awk
! 4a80a10b20ae39ac17df559cbf317cf4  gcc/opt-include.awk
! bf9a7aa26f95633149ef0eccadcffbac  gcc/opt-read.awk
! cdcba0b46b5dd4c9e0b576bccc1f5fb2  gcc/optabs-libfuncs.c
! e8452fe9c25ca89a638a972a7ee3be3b  gcc/optabs-libfuncs.h
! e9793114e7bf06a153982a7215b2fa4e  gcc/optabs-query.c
! 6669b55a2cd078e949e41b684ece33c2  gcc/optabs-query.h
! c55ce782ec7a1ce8683de08d8321d06e  gcc/optabs-tree.c
! e4c9576e05a2a68e556aab1a537e3806  gcc/optabs-tree.h
! 070d5cbbb9d9f3bb435b2b54a9fc6c2e  gcc/optabs.c
! d05ea873de00ee1f0a941b26381b1297  gcc/optabs.def
! e2787dba22a13e294c76baa24b9c20dd  gcc/optabs.h
! a3e0f5f8aaa108bbb1dd37afa9125c6d  gcc/optc-gen.awk
! 7caca59f6b2e225f06f71af09138b8a0  gcc/optc-save-gen.awk
! e0ecebc84ab44387cbb4a354ae22472a  gcc/opth-gen.awk
! 0e53a8c9fad83722888ac7fdc0af2183  gcc/opts-common.c
! f1cd5c18dbc48acc800192603e7f2ec2  gcc/opts-diagnostic.h
! 23628cbc354b07114b6b8b3bec44936a  gcc/opts-global.c
! 0c137513f0638d05e98270c9484f5d44  gcc/opts.c
! af1e0965e0a0ff84ae52b775504e5d96  gcc/opts.h
! a513d08e439b3b1d1508f787e52a557c  gcc/output.h
! 071b2537e274f7db48460f504bb23634  gcc/params-enum.h
! 39a1f9519ee6b037a25ab78d5d2ddcda  gcc/params-list.h
! 259fb5636295fd6991544437ccfb8ece  gcc/params-options.h
! e28346c3e80a345ccd93b5a8fa59fdcf  gcc/params.c
! bce04177cb1b2eb4a55347fe8877f865  gcc/params.def
! ecc8347dea37e5c9153c4b4afc6ade77  gcc/params.h
! e0fc4322b29c4ade9e39c9f9ed68ba37  gcc/pass_manager.h
! 0049a5f9acef85a8ac3bcb5f450fe6cd  gcc/passes.c
! eaa38d986ba4b10a32a67386d1c4656d  gcc/passes.def
! 35b9710c0e7f0039335811ee7db12931  gcc/plugin.c
! a7891cb08b863d20f462a50157af100b  gcc/plugin.def
! ddc3805db022265eeec39c0a7c053023  gcc/plugin.h
! 71e9e78b253485c4524a8378b6988ad3  gcc/po/ChangeLog
! 266bd63edb966ab311a785e397e940e3  gcc/po/EXCLUDES
! e13bf15acba466ba110b5207f7ef70a2  gcc/po/be.gmo
! a8a8eb589bcfaae8636bc61430f925bb  gcc/po/be.po
! 37c3803ef759888e60e252f0d5f00791  gcc/po/da.gmo
! abd0095203a2526fe7101fa5411a69d9  gcc/po/da.po
! ae288f421fc65e03413460be5f20634c  gcc/po/de.gmo
! 5fb87603c5b081b7df6ebe932adeb9af  gcc/po/de.po
! e3ad5872ccaf54aec4e1dd1cc5f2c68e  gcc/po/el.gmo
! acb7fcd8409f9a649ab833458af7e7f8  gcc/po/el.po
! 9a67ddaa464eb8588531b61f1873c991  gcc/po/es.gmo
! 2dae0eb9397ca66718564aac8c3c213c  gcc/po/es.po
! 9dcc0132893fbb069b569a41dbf879fb  gcc/po/exgettext
! ead98b22bd3856bd81a881f382ffd941  gcc/po/fi.gmo
! 14d699d2c5b161c51ea68117f66b63e3  gcc/po/fi.po
! 55ebe79173b47b74a4106fab07ff4e88  gcc/po/fr.gmo
! 2f52dce673f6fd6353ba25e30500f3c4  gcc/po/fr.po
! 5cb91fc46cca9913da699dd87a00dcc3  gcc/po/gcc.pot
! c8e9a390fbb788097cc733cf717d0c21  gcc/po/hr.gmo
! 024c7ff571ce8dcb5f5072add2ea5e42  gcc/po/hr.po
! d6f34da9ef861fa9fe1ec5af902d9f47  gcc/po/id.gmo
! 84a69cda9d6d33b8d5c9c9b95a463948  gcc/po/id.po
! c4fa2f0631456a106c99d77cb4db1920  gcc/po/ja.gmo
! d12592d55a3218434e0deee00449959c  gcc/po/ja.po
! 28c6b204a7615e4c41c8ba3aae6fd31a  gcc/po/nl.gmo
! 59b528cf5132482c68509c6f4a146cc2  gcc/po/nl.po
! 08bfa44d9d217d9b600a48b24bdb39ae  gcc/po/ru.gmo
! 1acd9d1e87592d23317bc64620e2b11d  gcc/po/ru.po
! d8b382b1c2453edc3b3cfdfb4cf63595  gcc/po/sr.gmo
! 37922f6e9b94f83b14cb352bd6bd604e  gcc/po/sr.po
! 38e1f8e8b6ebc27e82b3e706c0cf7506  gcc/po/sv.gmo
! 9ee39e5f0a54f69dc0043efe63b22432  gcc/po/sv.po
! 81fe1116b0208fd59d18cdb8e2a7d4a9  gcc/po/tr.gmo
! 64af03ccdb7ec4c4c7558c4cf6c5d344  gcc/po/tr.po
! 52a59aaa135d6e248c045f738032a36e  gcc/po/uk.gmo
! 0a751b73835d08be57d0eca876437111  gcc/po/uk.po
! d95cbe1c98c56f924f0eb315388353fb  gcc/po/vi.gmo
! 7f6a33be7960f40daff8449fa9106216  gcc/po/vi.po
! ddf4954ee3f7e16dc3e645b9c9e313a5  gcc/po/zh_CN.gmo
! f29e88899365f17601d8af5c0343df56  gcc/po/zh_CN.po
! 1868a42bb26317ebca885cddb047c8c1  gcc/po/zh_TW.gmo
! 7bfcd42a36441b05376a9c9171261e5e  gcc/po/zh_TW.po
! f0ed183fc5c3468fceba81e4f18e6066  gcc/poly-int-types.h
! 580d3c0c17366e11266f68310046cbe2  gcc/poly-int.h
! 900b7438df18a900152e2f6060285c39  gcc/postreload-gcse.c
! b80ac229bfa91ea56d105767788e51fb  gcc/postreload.c
! 6ec724d52f167b182dd487128f077999  gcc/predict.c
! c818d54a2aa1ed0ff7fb93285b171e78  gcc/predict.def
! d0af584e90882df1a6e78b4abd4f59b1  gcc/predict.h
! dc1824edf0b28ea95ecc1f084e02c589  gcc/prefix.c
! bd69561eaeeaa5663cb3612356590ed3  gcc/prefix.h
! 5d1752b6f0d46533cf794e08e4621304  gcc/pretty-print.c
! abf878c0adf348501814c24fee588571  gcc/pretty-print.h
! 1a2bd4fb176a63bb77b616d7e23f0a4c  gcc/print-rtl-function.c
! 10ed18696d307d08f3450319725895c0  gcc/print-rtl.c
! 4b30fc97138e2c480c7a1da4ffda877d  gcc/print-rtl.h
! 826db23f3a63ee175b95cc8512513bd4  gcc/print-tree.c
! 2f233746d8e2483957034a6ec7ca623c  gcc/print-tree.h
! c04fb76dbc2f6f2db6ee47f400391f8f  gcc/profile-count.c
! 4f2b5245d9d5063aefcbb43091b34234  gcc/profile-count.h
! ebb898282558467e96a29fb605796d5a  gcc/profile.c
! e0869d38f65e7fc254a60e7fc29361ee  gcc/profile.h
! f149851da1b8a49ef9028bde274f671c  gcc/read-md.c
! c29cf51b74b8ea75fe0d9b5084312e55  gcc/read-md.h
! fd2e9c6b2a0d3912ff45e1d93924941f  gcc/read-rtl-function.c
! e75f10d09d503895ec11beb3f92f6290  gcc/read-rtl-function.h
! 245b3ccce924048a235eef681af5cb9c  gcc/read-rtl.c
! 0a20cce800f0672c51f144b9936966a8  gcc/real.c
! c4aa9a13ee42f1eb90a5f6f5e5b93a69  gcc/real.h
! a78d12d3a543b348277164842f19f8d0  gcc/realmpfr.c
! 71528fd9abd82151dd525f1bec7fc4ed  gcc/realmpfr.h
! 90c4076b39019ee6e37fabd2e190d036  gcc/recog.c
! 8e0f463959ef781c3db86b7fd9ff9dcb  gcc/recog.h
! e76e517157e0e62f336b3a58aaed3e67  gcc/ree.c
! 9c8ebe3c1dff17cce37518e7827ebe9b  gcc/reg-notes.def
! 761e6301d8c97ec99a99e6fa5c9c53d5  gcc/reg-stack.c
! d32df0b26a047fd94df9bf49981ca27d  gcc/regcprop.c
! 7a8edf8f6bfadfcf2d34bc6c947388f5  gcc/regcprop.h
! f4d0df89154e67eaa5dffb715e02a638  gcc/reginfo.c
! 97874df8a4d5c1fc075f7f8b4d0c25a6  gcc/regrename.c
! 5a19aad6eaeabbeaffb7b379e3cd332f  gcc/regrename.h
! e4be4c704a5852b2cbf7d90191187a5a  gcc/regs.h
! 41bfd1e5587e1b28c25eb4f048eec34b  gcc/regset.h
! 5d280279e88f12bf8149f72bfd00349a  gcc/regstat.c
! a191718c1267681e36c4a2963ad82a8a  gcc/reload.c
! f31aa3e641466312a43761513e5fc05a  gcc/reload.h
! bc68c04532350167e2c21e732c5be4a7  gcc/reload1.c
! 55bd3c3713f007122039c2b3256f4900  gcc/reorg.c
! 50d247ea6e7417dce9aeba6f99c903e4  gcc/resource.c
! 6a5cecc7cf91a44666555a3080e9905f  gcc/resource.h
! 6e255900b6beaf03c37e2f1df202e689  gcc/rtl-chkp.c
! c7cdece4d7dd199ec5faa811199c4422  gcc/rtl-chkp.h
! 70528ebba7228c8851b5f63ad2a819b0  gcc/rtl-error.c
! 119cbe9ea65ecaf5bcfa3b3d96b87ec8  gcc/rtl-error.h
! df9d5c768b58d0b5efc362d2bd2de6df  gcc/rtl-iter.h
! 681d93b19f2a0a0ab1917d9b3d76d8e6  gcc/rtl-tests.c
! 50bf08f78ca518f3cd93b3d8c03ad9cc  gcc/rtl.c
! 85a88e38668f579e5486f97b80527cca  gcc/rtl.def
! 52b0e4b6705ff72c129ede66db1e9b97  gcc/rtl.h
! e957cfa9c7a4db524e359ecbac003b87  gcc/rtlanal.c
! e5a0044d503b95956e5aaaa6c1458430  gcc/rtlhash.c
! c3c64677cacd32a881cff6a6fa3e7af3  gcc/rtlhash.h
! 228e8f18a4ac8458ad4b2f80198cef6a  gcc/rtlhooks-def.h
! 095451fe0dbffbbf6daa7073ff2fe8bd  gcc/rtlhooks.c
! 44244f3ac663f957ae480d38fad3209f  gcc/rtx-vector-builder.c
! 970ba23e0285b8d0546410b8fab2d558  gcc/rtx-vector-builder.h
! 550a966aa50ff81844055244d046fea8  gcc/run-rtl-passes.c
! c462b6f14a631963d93586787860fb19  gcc/run-rtl-passes.h
! e54ad1736137ee60f93779a86a73c5f9  gcc/sancov.c
! 74d0f70b48f781473336328ba9c39c06  gcc/sanitizer.def
! 374723a309b3e35c0134ec8c893d6ab9  gcc/sanopt.c
! 393c266c265b5ed1169883d9b452653f  gcc/sbitmap.c
! bcf54e9c769f49df263dfee1c2e09a7a  gcc/sbitmap.h
! ce2720a96d86ff6fc7d53b3260fb868b  gcc/sched-deps.c
! 1f0d8623050e8cd8c6daffccaf592ee0  gcc/sched-ebb.c
! b6e543dab28de5f9e55bc6574570c606  gcc/sched-int.h
! 602630a1d2d4ac87eea1e6e050fee3b9  gcc/sched-rgn.c
! 7005973e29b5013a2d12a5e9ea894a6e  gcc/sel-sched-dump.c
! 306426c223a1a73dd3a340241398c72f  gcc/sel-sched-dump.h
! 5362cb9116a031a18a756cfacfc6d1e9  gcc/sel-sched-ir.c
! 7101b20f054a205a43461ac92e9a33e7  gcc/sel-sched-ir.h
! 411c056343fa03f746041933504735fd  gcc/sel-sched.c
! fa2c0cf492b3b2ad0a836e659700a554  gcc/sel-sched.h
! 943824563c3f4a5d5d8607d304b09d62  gcc/selftest-diagnostic.c
! 87734d57721e99a962c1f901f0a27bb6  gcc/selftest-diagnostic.h
! a2ef85663168c25741e8252833b07ab8  gcc/selftest-rtl.c
! 76d39bc7847a368a200e7cef2703ff79  gcc/selftest-rtl.h
! 3ed18cbcdb11d9a3aef073e644441fb9  gcc/selftest-run-tests.c
! f609d038b34fdb07acdb3e2ac9cea42b  gcc/selftest.c
! c77c3a3c36441362cbe2fb3b030cdf53  gcc/selftest.h
! 0ad737987900d41e04357533d695b383  gcc/sese.c
! 41fdeb8e30cdddde72ecf88e8e904394  gcc/sese.h
! a24cc2b2df035a5b1c0761a7b92c43db  gcc/shrink-wrap.c
! 11cfe9516e14a93933c61823dc6202c7  gcc/shrink-wrap.h
! c6328327f9a84bf940ef73f8b27cff45  gcc/signop.h
! d3339c339f9af158401d2d969e28a48c  gcc/simplify-rtx.c
! cc044483cfd26a2ea67b8606a160de41  gcc/sparseset.c
! e72909468e44c4dcea74f0dafd02a899  gcc/sparseset.h
! ea490e9542a0b4161f740096538a6742  gcc/spellcheck-tree.c
! fab09dc194a10d02aec35b73b89411d3  gcc/spellcheck-tree.h
! cddd83671bd9e2b011363eb5a023daa6  gcc/spellcheck.c
! e77d630bee5248cb1de07e2d6ffe3ae4  gcc/spellcheck.h
! c9b0a5c0c56ce51d9376bac65222ba88  gcc/sreal.c
! e203c9580a84599e06167f9f9d02d49e  gcc/sreal.h
! 7a9cb26b165a87dd5b8d8777cd843656  gcc/ssa-iterators.h
! 4f8a6138ccaeb38966ecc6a592dd7bab  gcc/ssa.h
! 87bbd8d8a3a045cad49b3f0738d48eb1  gcc/stab.def
! e10fffde9f1988ae4f9f881b19cd57bf  gcc/stack-ptr-mod.c
! 0140b1bfdcfaa3e5beafbe15e999259e  gcc/statistics.c
! 596f6591a57e60c040b7f92562b791d4  gcc/statistics.h
! f08df4d23259cc9069441c0b4b895c45  gcc/stmt.c
! b01d0085b0245e2bcf1157414b8f8177  gcc/stmt.h
! 4c572ff74538bd7312b4efe8c1eeddf2  gcc/stor-layout.c
! 44d3a63f873847cf0362822bb1c650fd  gcc/stor-layout.h
! 549bb1dfcc31fab436b4573de6e8e759  gcc/store-motion.c
! 9acb48a1283139ba5b101e1a80890aa2  gcc/streamer-hooks.c
! 415e80b2b7fe5b1507d61c1a9baf9600  gcc/streamer-hooks.h
! 2b0ca4f6e6db7bc6ce25c7c725894bb7  gcc/stringpool.c
! c90803df9587aeb074b01235ac6774f2  gcc/stringpool.h
! 1a291d870b5080a3186aa7e93fb0f2d7  gcc/substring-locations.c
! 3b61b5fb283dd13ef1a117f6f374b2f3  gcc/substring-locations.h
! 32d525220375e660512fe10b0c322520  gcc/symbol-summary.h
! 7a613939215db234ef07b330e8ce9954  gcc/symtab.c
! 721707584123181d137da368325233b4  gcc/sync-builtins.def
! afb6577e6d5a55183d04a9bc6548b8f2  gcc/system.h
! 1f36a64d8dcab5629094e37694070cfc  gcc/target-def.h
! 7e567c9a739a3c48f93ad61a52c309c7  gcc/target-globals.c
! b5b54c250d56d3a220d7f8f8e9e3d5ab  gcc/target-globals.h
! 6a9979b263fc764d7a070859b1863318  gcc/target-hooks-macros.h
! 176d8c496aa36f0132232307e9c23e77  gcc/target-insns.def
! b45dadea296bdb45700498c3a2128119  gcc/target.def
! b3e64547e95a1dd3c4adaef33cc7e53c  gcc/target.h
! 775b4e1193b7fef4fc3a57eb9c80a4f7  gcc/targhooks.c
! fe1fa4a32e1e589e64a4e99002d678d9  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 37c43ff55b9e65737ece7a185336fbf8  gcc/testsuite/ChangeLog
  862f04afbd87da2cc6bc432c3f28430f  gcc/testsuite/ChangeLog-1993-2007
  029a5d8dacd25eb5d4711452ac448e5b  gcc/testsuite/ChangeLog-2008
  13ac28c41d51b66b4ec40dba6bd50f39  gcc/testsuite/ChangeLog-2009
*************** a5de7448e557b97d2e98fd8e18e9188d  gcc/te
*** 5319,5331 ****
  1572fb02f16ad37c4e102f5d36d946da  gcc/testsuite/ChangeLog-2014
  c9ec5aa19ca3c027fb99e61cbe7aff7a  gcc/testsuite/ChangeLog-2015
  0e51c0fd7a2107402889ad1706e7aa88  gcc/testsuite/ChangeLog-2016
  e7518ff11c24876171978acda7f03080  gcc/testsuite/ChangeLog.graphite
  ec409caa3f1727e7dbe6b65dd8df068c  gcc/testsuite/ChangeLog.jit
  4e315f3ead950078f8af109b2d771220  gcc/testsuite/ChangeLog.ptr
  b2adb3e6b3129c9473b7e401edb63a71  gcc/testsuite/ChangeLog.tree-ssa
! ffea602f05c02d5439ceec4816f75cd1  gcc/testsuite/README
! 1455935bdfe404f5f3be78234d182a50  gcc/testsuite/README.compat
! 5589f76e89f6ad9a78c7d1018a8682d3  gcc/testsuite/README.gcc
  2ad7c00ea00d78f6d6ee090f7894dadc  gcc/testsuite/ada/.gitignore
  4004844198395fe50ecb798ed5d30f4b  gcc/testsuite/ada/acats/elabd.lst
  b32871a59b0c07cb4eda259b98fa6aab  gcc/testsuite/ada/acats/floatstore.lst
--- 5540,5553 ----
  1572fb02f16ad37c4e102f5d36d946da  gcc/testsuite/ChangeLog-2014
  c9ec5aa19ca3c027fb99e61cbe7aff7a  gcc/testsuite/ChangeLog-2015
  0e51c0fd7a2107402889ad1706e7aa88  gcc/testsuite/ChangeLog-2016
+ 56d86aa0407680dda8cd96fe85221770  gcc/testsuite/ChangeLog-2017
  e7518ff11c24876171978acda7f03080  gcc/testsuite/ChangeLog.graphite
  ec409caa3f1727e7dbe6b65dd8df068c  gcc/testsuite/ChangeLog.jit
  4e315f3ead950078f8af109b2d771220  gcc/testsuite/ChangeLog.ptr
  b2adb3e6b3129c9473b7e401edb63a71  gcc/testsuite/ChangeLog.tree-ssa
! b4aaa651ee84ca35f82a3c9acccd1672  gcc/testsuite/README
! f8fbd7f7abbd0f8e043f1530d7ef4090  gcc/testsuite/README.compat
! 88a27038b8709b1e050a2a1b2302e577  gcc/testsuite/README.gcc
  2ad7c00ea00d78f6d6ee090f7894dadc  gcc/testsuite/ada/.gitignore
  4004844198395fe50ecb798ed5d30f4b  gcc/testsuite/ada/acats/elabd.lst
  b32871a59b0c07cb4eda259b98fa6aab  gcc/testsuite/ada/acats/floatstore.lst
*************** b886a43ab960ee3b74b75b1a1895e692  gcc/te
*** 7923,7958 ****
  004386b31584ba3e3f7171f7674e4137  gcc/testsuite/ada/acats/tests/l/la140272.am
  9c63871113de9b518e90c90fe8e20f28  gcc/testsuite/ada/acats/tests/l/la140273.a
  7dbb3fe0d397fe7a60736cb608563ac7  gcc/testsuite/brig.dg/README
! 4b3963a67f19092ddae7bcaf5b184d06  gcc/testsuite/brig.dg/dg.exp
  d7b27695da6c28d237451b4f5ae5af57  gcc/testsuite/brig.dg/test/gimple/alloca.hsail
  1f502a10b337d4d5d3cc57c4fd0d0f06  gcc/testsuite/brig.dg/test/gimple/atomics.hsail
  d837592f24865f99386ab68c6917abc5  gcc/testsuite/brig.dg/test/gimple/branches.hsail
! 604d2a162a9c5a84559a7d3eaf97422b  gcc/testsuite/brig.dg/test/gimple/fbarrier.hsail
! a01b09016c06161fca2328e110280a31  gcc/testsuite/brig.dg/test/gimple/function_calls.hsail
  314cacaffe0535c7e1dab5e7cf00868f  gcc/testsuite/brig.dg/test/gimple/kernarg.hsail
  9d8377687de37d3501d4060cba204c55  gcc/testsuite/brig.dg/test/gimple/mem.hsail
  5847a2f69238995faccc83b042397536  gcc/testsuite/brig.dg/test/gimple/mulhi.hsail
! f20faf738404049eb4ef7e481cfa78fd  gcc/testsuite/brig.dg/test/gimple/packed.hsail
! dc6b2ddf7cbf7bf844de9056c2f91170  gcc/testsuite/brig.dg/test/gimple/smoke_test.hsail
! 261f3bf1876a18ba622a1db63c884590  gcc/testsuite/brig.dg/test/gimple/variables.hsail
! 84c5dab2300f74c2bf53f2e7f496e949  gcc/testsuite/brig.dg/test/gimple/vector.hsail
  f3d12fe0f55fdd03d519dfdabf5873da  gcc/testsuite/c-c++-common/Waddress-1.c
  81e4d27a297a7ce6fddf1ac2a8961317  gcc/testsuite/c-c++-common/Waddress-2.c
  714425fa09f1458ac9dd7cad4ad33ed2  gcc/testsuite/c-c++-common/Wbool-compare-1.c
  2137f66b6bcfc9d19df56b2f3ea80f8e  gcc/testsuite/c-c++-common/Wbool-compare-2.c
  da6daa27c49af7ff04e05ae804b39498  gcc/testsuite/c-c++-common/Wbool-compare-3.c
  8735de0ca2833a2203dacecff87ac8e8  gcc/testsuite/c-c++-common/Wbool-operation-1.c
  ca0f9328a3d035930d143d8a411eac87  gcc/testsuite/c-c++-common/Wcast-qual-1.c
! 9f5e22233cca02ead80783162f3b5036  gcc/testsuite/c-c++-common/Wconversion-real.c
  bb6692f219b1f0fff84900944e5cbbb4  gcc/testsuite/c-c++-common/Wdangling-else-1.c
  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
! c290711220e4a5ad44b0ea36b8df77a0  gcc/testsuite/c-c++-common/Wduplicated-branches-1.c
  36747e99be11c2fa6022dbb012b5e657  gcc/testsuite/c-c++-common/Wduplicated-branches-10.c
  ab46b28ebe1588d3da5a24b1ba47c9dc  gcc/testsuite/c-c++-common/Wduplicated-branches-11.c
  3d6ea0597eb0a1b1b935837de16a8173  gcc/testsuite/c-c++-common/Wduplicated-branches-12.c
  fca6e5f273133ee6617fb0a82ba4bf1a  gcc/testsuite/c-c++-common/Wduplicated-branches-13.c
  a9148fdc62aa5500700fdbd7bf8c06d2  gcc/testsuite/c-c++-common/Wduplicated-branches-2.c
  fd06760c164e43598b6a89def0a7452a  gcc/testsuite/c-c++-common/Wduplicated-branches-3.c
  2738bcffd08a822ee8535306b0a0877b  gcc/testsuite/c-c++-common/Wduplicated-branches-4.c
--- 8145,8193 ----
  004386b31584ba3e3f7171f7674e4137  gcc/testsuite/ada/acats/tests/l/la140272.am
  9c63871113de9b518e90c90fe8e20f28  gcc/testsuite/ada/acats/tests/l/la140273.a
  7dbb3fe0d397fe7a60736cb608563ac7  gcc/testsuite/brig.dg/README
! d43038650efe0846db999fff67d4a5e2  gcc/testsuite/brig.dg/dg.exp
  d7b27695da6c28d237451b4f5ae5af57  gcc/testsuite/brig.dg/test/gimple/alloca.hsail
  1f502a10b337d4d5d3cc57c4fd0d0f06  gcc/testsuite/brig.dg/test/gimple/atomics.hsail
  d837592f24865f99386ab68c6917abc5  gcc/testsuite/brig.dg/test/gimple/branches.hsail
! ae90c21f583f2b6a421fc30804d8899d  gcc/testsuite/brig.dg/test/gimple/fbarrier.hsail
! 97bec0e903a934e2b294ff999c9c57e0  gcc/testsuite/brig.dg/test/gimple/function_calls.hsail
! 02a476935fe7863c4679efb2b4906db2  gcc/testsuite/brig.dg/test/gimple/internal-casts.hsail
  314cacaffe0535c7e1dab5e7cf00868f  gcc/testsuite/brig.dg/test/gimple/kernarg.hsail
  9d8377687de37d3501d4060cba204c55  gcc/testsuite/brig.dg/test/gimple/mem.hsail
  5847a2f69238995faccc83b042397536  gcc/testsuite/brig.dg/test/gimple/mulhi.hsail
! 968cdbd1656d2af0a0943141ebbcb789  gcc/testsuite/brig.dg/test/gimple/packed.hsail
! b1d581eabac062c87bc61c1f774274ac  gcc/testsuite/brig.dg/test/gimple/priv-array-offset-access.hsail
! 8fa955fde387e87019bbd00f6c0eb7ba  gcc/testsuite/brig.dg/test/gimple/smoke_test.hsail
! 1dc6e95345fe36c7fa2a0733cb0ad9dd  gcc/testsuite/brig.dg/test/gimple/variables.hsail
! 58a44273e0caa3895dd39c85e67ec453  gcc/testsuite/brig.dg/test/gimple/vector.hsail
  f3d12fe0f55fdd03d519dfdabf5873da  gcc/testsuite/c-c++-common/Waddress-1.c
  81e4d27a297a7ce6fddf1ac2a8961317  gcc/testsuite/c-c++-common/Waddress-2.c
+ 242665222b40e90800c90375e7f06658  gcc/testsuite/c-c++-common/Warray-bounds-2.c
+ 7d8574ca1d4ed88f34baa120d58a2bc8  gcc/testsuite/c-c++-common/Warray-bounds-3.c
+ ac10ee85accf487bad5215dc57ea41d7  gcc/testsuite/c-c++-common/Warray-bounds-4.c
+ c51902099b5071373c02eb23d9a61aab  gcc/testsuite/c-c++-common/Warray-bounds-5.c
+ f79b5855c5db09326cd9eab0c793bf7a  gcc/testsuite/c-c++-common/Warray-bounds.c
+ fe25f03fdb469ad245f6cae14480ddad  gcc/testsuite/c-c++-common/Wattributes-2.c
+ c9780baad1622a7d74d04a7e08e2fc7b  gcc/testsuite/c-c++-common/Wattributes.c
  714425fa09f1458ac9dd7cad4ad33ed2  gcc/testsuite/c-c++-common/Wbool-compare-1.c
  2137f66b6bcfc9d19df56b2f3ea80f8e  gcc/testsuite/c-c++-common/Wbool-compare-2.c
  da6daa27c49af7ff04e05ae804b39498  gcc/testsuite/c-c++-common/Wbool-compare-3.c
  8735de0ca2833a2203dacecff87ac8e8  gcc/testsuite/c-c++-common/Wbool-operation-1.c
+ f2f147da469690b30dd805170ff61ecc  gcc/testsuite/c-c++-common/Wbuiltin-declaration-mismatch-1.c
+ f0e839d6cca829f16e55359c5889d67e  gcc/testsuite/c-c++-common/Wcast-align.c
+ 9a58584453562ca58937634ad8c05bb1  gcc/testsuite/c-c++-common/Wcast-function-type.c
  ca0f9328a3d035930d143d8a411eac87  gcc/testsuite/c-c++-common/Wcast-qual-1.c
! 87ff034a68de26fe8371313b477f3ea7  gcc/testsuite/c-c++-common/Wconversion-real.c
  bb6692f219b1f0fff84900944e5cbbb4  gcc/testsuite/c-c++-common/Wdangling-else-1.c
  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
! df5ffd2746b9c571dd4ecaec40584254  gcc/testsuite/c-c++-common/Wduplicated-branches-1.c
  36747e99be11c2fa6022dbb012b5e657  gcc/testsuite/c-c++-common/Wduplicated-branches-10.c
  ab46b28ebe1588d3da5a24b1ba47c9dc  gcc/testsuite/c-c++-common/Wduplicated-branches-11.c
  3d6ea0597eb0a1b1b935837de16a8173  gcc/testsuite/c-c++-common/Wduplicated-branches-12.c
  fca6e5f273133ee6617fb0a82ba4bf1a  gcc/testsuite/c-c++-common/Wduplicated-branches-13.c
+ 462caec7e63757a76ecab2ca7cdcdebf  gcc/testsuite/c-c++-common/Wduplicated-branches-14.c
  a9148fdc62aa5500700fdbd7bf8c06d2  gcc/testsuite/c-c++-common/Wduplicated-branches-2.c
  fd06760c164e43598b6a89def0a7452a  gcc/testsuite/c-c++-common/Wduplicated-branches-3.c
  2738bcffd08a822ee8535306b0a0877b  gcc/testsuite/c-c++-common/Wduplicated-branches-4.c
*************** fff3d649531c83150863cb9215b5f6e0  gcc/te
*** 7965,7971 ****
  9246803a1a536b65ac1b96c74152e81b  gcc/testsuite/c-c++-common/Wduplicated-cond-2.c
  95f2572fa60b98e2330727d451042922  gcc/testsuite/c-c++-common/Wduplicated-cond-3.c
  ef4f4b5de989d9dc5bddbdc69330bc75  gcc/testsuite/c-c++-common/Wduplicated-cond-4.c
! 40e3aee812c1eb4952e552ffd4f85641  gcc/testsuite/c-c++-common/Wfloat-conversion.c
  55160ccf08a9b1444b32deb900dac569  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-1.c
  9954ed8dee26e5b5fa02ab1f16163f1e  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-10.c
  0f8e0df13f6d9cf6ae7fd7f44107fce1  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-11.c
--- 8200,8206 ----
  9246803a1a536b65ac1b96c74152e81b  gcc/testsuite/c-c++-common/Wduplicated-cond-2.c
  95f2572fa60b98e2330727d451042922  gcc/testsuite/c-c++-common/Wduplicated-cond-3.c
  ef4f4b5de989d9dc5bddbdc69330bc75  gcc/testsuite/c-c++-common/Wduplicated-cond-4.c
! 59751b3dc53f63d60e7442231719d920  gcc/testsuite/c-c++-common/Wfloat-conversion.c
  55160ccf08a9b1444b32deb900dac569  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-1.c
  9954ed8dee26e5b5fa02ab1f16163f1e  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-10.c
  0f8e0df13f6d9cf6ae7fd7f44107fce1  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-11.c
*************** e49739c56246e045bba6beac885f45f6  gcc/te
*** 7995,8005 ****
  99864ba561720784a99ad8b4450273cc  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-33.c
  a74182327fe0e8b068f3e993e5896f7b  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-34.c
  c302c1a4893711fc86a172f63f8bd9dc  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-35.c
  209de9c779ee1c2bb93781cd743aa8e7  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-4.c
  006c2c882c026a00e907e95f539d0817  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-5.c
! 656a4088ec33abeec19e1cdc491f54b3  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-6.c
! 1d2d961955d2d994cd927f45ee312578  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-7.c
! 45f1b467f4644623f1305e544f2c7027  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
--- 8230,8241 ----
  99864ba561720784a99ad8b4450273cc  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-33.c
  a74182327fe0e8b068f3e993e5896f7b  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-34.c
  c302c1a4893711fc86a172f63f8bd9dc  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-35.c
+ cda3bb9ca57e369084621185346974dc  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-36.c
  209de9c779ee1c2bb93781cd743aa8e7  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-4.c
  006c2c882c026a00e907e95f539d0817  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-5.c
! f0bf64bc19e536120d0c8506bd78b88b  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-6.c
! 390b371eb66b3e4f5fd4b3109671cc40  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
*************** e3f03b6f70b694a8d144551310c275d3  gcc/te
*** 8011,8036 ****
  a02c709f77ada1bf7c11b66f87adf20d  gcc/testsuite/c-c++-common/Wlogical-not-parentheses-2.c
  a4097e11dbd186a4a835f4b4cc1bdc2e  gcc/testsuite/c-c++-common/Wlogical-not-parentheses-3.c
  3277c11ec455a773b2173ff2d0cfc44e  gcc/testsuite/c-c++-common/Wlogical-op-1.c
  08d80a26cd87293b0cceea7312a3a880  gcc/testsuite/c-c++-common/Wlogical-op-3.c
  558f0b8bf1c54b3b90220ccb25c98cf0  gcc/testsuite/c-c++-common/Wmemset-transposed-args1.c
  e19dad747a19c74fc5083f841ecaf657  gcc/testsuite/c-c++-common/Wmemset-transposed-args2.c
  1d01a5f65df63425868edba223b37272  gcc/testsuite/c-c++-common/Wmisleading-indentation-2.c
  d17ae32a38b973bb1e30dfe6eedbd3b8  gcc/testsuite/c-c++-common/Wmisleading-indentation-2.md
! 44af89c66db479a8f697b6fb1b57fef4  gcc/testsuite/c-c++-common/Wmisleading-indentation-3.c
  336ca93b175f135bba95e9e1462d761f  gcc/testsuite/c-c++-common/Wmisleading-indentation-4.c
  d9091ba345f1ee07c6637a19dad991e5  gcc/testsuite/c-c++-common/Wmisleading-indentation.c
  b935c2a58d7f731bf0cccb6a7d11766c  gcc/testsuite/c-c++-common/Wparentheses-1.c
  ccb8ce6afa2243d9aec47e26a1e585f2  gcc/testsuite/c-c++-common/Wpointer-arith-1.c
  ec5ec31a0614d6762df2a4f03ada7bac  gcc/testsuite/c-c++-common/Wpointer-compare-1.c
  d57f0b6d660c8299b95ba02b346d2d76  gcc/testsuite/c-c++-common/Wsequence-point-1.c
  fc393bd66715c29dc1e10b0c545a89de  gcc/testsuite/c-c++-common/Wshift-count-negative-1.c
  30f55184465e5031498ef7eb0d2b75e4  gcc/testsuite/c-c++-common/Wshift-count-negative-2.c
  289a216514c6f7948e7c944ac1ff49e0  gcc/testsuite/c-c++-common/Wshift-count-overflow-1.c
  7f7dfe9827844964aa5913a0df77bfda  gcc/testsuite/c-c++-common/Wshift-count-overflow-2.c
! d22b9cfb879fceb9bab29cd4c333741b  gcc/testsuite/c-c++-common/Wshift-negative-value-1.c
! fe1ca968caf11e25d961b2b70ea84523  gcc/testsuite/c-c++-common/Wshift-negative-value-2.c
! 54aafcc58629a7edd892d705063d96a3  gcc/testsuite/c-c++-common/Wshift-negative-value-3.c
! 8fcdff90f627e462a8badd3f7c8e8a46  gcc/testsuite/c-c++-common/Wshift-negative-value-4.c
  bce3d116ad042543d8deca59891335d8  gcc/testsuite/c-c++-common/Wshift-negative-value-5.c
  2ec4a0079f61044cd2556d10f9086c01  gcc/testsuite/c-c++-common/Wshift-negative-value-6.c
  23215ac7f9da39dedf899636af7edacc  gcc/testsuite/c-c++-common/Wshift-overflow-1.c
--- 8247,8290 ----
  a02c709f77ada1bf7c11b66f87adf20d  gcc/testsuite/c-c++-common/Wlogical-not-parentheses-2.c
  a4097e11dbd186a4a835f4b4cc1bdc2e  gcc/testsuite/c-c++-common/Wlogical-not-parentheses-3.c
  3277c11ec455a773b2173ff2d0cfc44e  gcc/testsuite/c-c++-common/Wlogical-op-1.c
+ 4be7fd77e046019dc2fec1faaef036a6  gcc/testsuite/c-c++-common/Wlogical-op-2.c
  08d80a26cd87293b0cceea7312a3a880  gcc/testsuite/c-c++-common/Wlogical-op-3.c
  558f0b8bf1c54b3b90220ccb25c98cf0  gcc/testsuite/c-c++-common/Wmemset-transposed-args1.c
  e19dad747a19c74fc5083f841ecaf657  gcc/testsuite/c-c++-common/Wmemset-transposed-args2.c
  1d01a5f65df63425868edba223b37272  gcc/testsuite/c-c++-common/Wmisleading-indentation-2.c
  d17ae32a38b973bb1e30dfe6eedbd3b8  gcc/testsuite/c-c++-common/Wmisleading-indentation-2.md
! 06bf63ac4f267a19987a293dd3d978dc  gcc/testsuite/c-c++-common/Wmisleading-indentation-3.c
  336ca93b175f135bba95e9e1462d761f  gcc/testsuite/c-c++-common/Wmisleading-indentation-4.c
  d9091ba345f1ee07c6637a19dad991e5  gcc/testsuite/c-c++-common/Wmisleading-indentation.c
+ b884f1ec71306f73d1b3a258e4b09926  gcc/testsuite/c-c++-common/Wmultistatement-macros-1.c
+ f11643259ba4e19e4611a961f1bd9817  gcc/testsuite/c-c++-common/Wmultistatement-macros-10.c
+ a1ec261a39e03b21a59823121e95d874  gcc/testsuite/c-c++-common/Wmultistatement-macros-11.c
+ fb5198ba2247ec5f953ef5b56f7150d1  gcc/testsuite/c-c++-common/Wmultistatement-macros-12.c
+ b794107bbc1482c03d849a06b299f999  gcc/testsuite/c-c++-common/Wmultistatement-macros-13.c
+ b37fa64c8558bb3f17e646ad005bd9f0  gcc/testsuite/c-c++-common/Wmultistatement-macros-2.c
+ da1604f16fb592744548cae8c6d90f09  gcc/testsuite/c-c++-common/Wmultistatement-macros-3.c
+ b9e75edcf569571358a30637151c8236  gcc/testsuite/c-c++-common/Wmultistatement-macros-4.c
+ 6c4a1978126fac6dee639ae3ee0feda6  gcc/testsuite/c-c++-common/Wmultistatement-macros-5.c
+ 51f167a476e2127bdbe53e93631099f5  gcc/testsuite/c-c++-common/Wmultistatement-macros-6.c
+ b44bd876d38f53dd6df2b7c2310e6f0a  gcc/testsuite/c-c++-common/Wmultistatement-macros-7.c
+ 87dd29da5f0461953e627efaf0e5921d  gcc/testsuite/c-c++-common/Wmultistatement-macros-8.c
+ a0bc51d5990da2df457fd68c965179a2  gcc/testsuite/c-c++-common/Wmultistatement-macros-9.c
+ 4f6ad8cac6b84de53049a5eea97fab49  gcc/testsuite/c-c++-common/Wno-builtin-declaration-mismatch-1.c
  b935c2a58d7f731bf0cccb6a7d11766c  gcc/testsuite/c-c++-common/Wparentheses-1.c
  ccb8ce6afa2243d9aec47e26a1e585f2  gcc/testsuite/c-c++-common/Wpointer-arith-1.c
  ec5ec31a0614d6762df2a4f03ada7bac  gcc/testsuite/c-c++-common/Wpointer-compare-1.c
+ ad3eeb12441e027fd9bf58eca2c4ace0  gcc/testsuite/c-c++-common/Wrestrict-2.c
+ 444583f2170154222066726b97ff69ff  gcc/testsuite/c-c++-common/Wrestrict-3.c
+ ccf712145e9f82e3b560dd024fedb4a5  gcc/testsuite/c-c++-common/Wrestrict.c
  d57f0b6d660c8299b95ba02b346d2d76  gcc/testsuite/c-c++-common/Wsequence-point-1.c
  fc393bd66715c29dc1e10b0c545a89de  gcc/testsuite/c-c++-common/Wshift-count-negative-1.c
  30f55184465e5031498ef7eb0d2b75e4  gcc/testsuite/c-c++-common/Wshift-count-negative-2.c
  289a216514c6f7948e7c944ac1ff49e0  gcc/testsuite/c-c++-common/Wshift-count-overflow-1.c
  7f7dfe9827844964aa5913a0df77bfda  gcc/testsuite/c-c++-common/Wshift-count-overflow-2.c
! 615b9696cc389bf238ee92d8aa94732a  gcc/testsuite/c-c++-common/Wshift-negative-value-1.c
! df797fee4aa298224d59315abfc9a9f7  gcc/testsuite/c-c++-common/Wshift-negative-value-2.c
! 9cde469967b17467bf200952edf9872c  gcc/testsuite/c-c++-common/Wshift-negative-value-3.c
! 26642fe2d9af413debdae5db59b1f3ff  gcc/testsuite/c-c++-common/Wshift-negative-value-4.c
  bce3d116ad042543d8deca59891335d8  gcc/testsuite/c-c++-common/Wshift-negative-value-5.c
  2ec4a0079f61044cd2556d10f9086c01  gcc/testsuite/c-c++-common/Wshift-negative-value-6.c
  23215ac7f9da39dedf899636af7edacc  gcc/testsuite/c-c++-common/Wshift-overflow-1.c
*************** ccf9803376f18fed70c0b2b90633ddb4  gcc/te
*** 8040,8047 ****
  ba76c2340f7c7f9d54120447cf44b260  gcc/testsuite/c-c++-common/Wshift-overflow-5.c
  f8b8dcb9f64cd4f1158a36e44cdf76b7  gcc/testsuite/c-c++-common/Wshift-overflow-6.c
  d2ebf4f8689ab32e5be23f1ebf97667f  gcc/testsuite/c-c++-common/Wshift-overflow-7.c
! 5c500ba154c50e701fceb87d4564d6cd  gcc/testsuite/c-c++-common/Wsizeof-pointer-memaccess1.c
! 9ab6e603a4c9df1be0e9279f01dfcefb  gcc/testsuite/c-c++-common/Wsizeof-pointer-memaccess2.c
  99ac388cc01e6685268df2541e341b35  gcc/testsuite/c-c++-common/Wswitch-unreachable-1.c
  29d1bf983b396d52416eb729f211b026  gcc/testsuite/c-c++-common/Wswitch-unreachable-2.c
  10961c472b3ef7a9066ef56ea7bb58d9  gcc/testsuite/c-c++-common/Wswitch-unreachable-3.c
--- 8294,8309 ----
  ba76c2340f7c7f9d54120447cf44b260  gcc/testsuite/c-c++-common/Wshift-overflow-5.c
  f8b8dcb9f64cd4f1158a36e44cdf76b7  gcc/testsuite/c-c++-common/Wshift-overflow-6.c
  d2ebf4f8689ab32e5be23f1ebf97667f  gcc/testsuite/c-c++-common/Wshift-overflow-7.c
! 2095424b6b86a7ddbae9c94c16fa2157  gcc/testsuite/c-c++-common/Wsign-compare-1.c
! de15cabafc30a00e81c083c9a9428ac8  gcc/testsuite/c-c++-common/Wsizeof-pointer-div.c
! 32df34b1472bcfdea6e41e9ce2f31d7c  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
! 2dc81fc124460cc2ec5d7aef6b94b6f3  gcc/testsuite/c-c++-common/Wstringop-overflow.c
! b9163d26f5124adacd165e32f8b32a62  gcc/testsuite/c-c++-common/Wstringop-truncation-2.c
! e43106fc454dedd36c41a975a04be5e3  gcc/testsuite/c-c++-common/Wstringop-truncation-3.c
! ca1309cdddeac332d3eecfb8a1684b9d  gcc/testsuite/c-c++-common/Wstringop-truncation-4.c
! 5e2ff0b86f9bb219402641fe811fc023  gcc/testsuite/c-c++-common/Wstringop-truncation.c
  99ac388cc01e6685268df2541e341b35  gcc/testsuite/c-c++-common/Wswitch-unreachable-1.c
  29d1bf983b396d52416eb729f211b026  gcc/testsuite/c-c++-common/Wswitch-unreachable-2.c
  10961c472b3ef7a9066ef56ea7bb58d9  gcc/testsuite/c-c++-common/Wswitch-unreachable-3.c
*************** f4a17800a60f5156c58d6534cf3acd64  gcc/te
*** 8050,8055 ****
--- 8312,8320 ----
  0db66ea46d8a31a7da0b064929b77900  gcc/testsuite/c-c++-common/Wtautological-compare-2.c
  d92682d7170159e697a1e85d7da6c88a  gcc/testsuite/c-c++-common/Wtautological-compare-3.c
  2ad67120ef51776a6446e2e480425acb  gcc/testsuite/c-c++-common/Wtautological-compare-4.c
+ 7134544b2dcf86838f8d004c44e6199c  gcc/testsuite/c-c++-common/Wtautological-compare-5.c
+ 60dcedee054855bea89fc84c595a23d0  gcc/testsuite/c-c++-common/Wtautological-compare-6.c
+ 70086d2986f27f678a4a62dbc2584749  gcc/testsuite/c-c++-common/Wtautological-compare-7.c
  faf99b6b0a20a061a95d9af7dbeea418  gcc/testsuite/c-c++-common/Wunused-function-1.c
  f79bc4a80b6890a56ed93a450311aa3f  gcc/testsuite/c-c++-common/Wunused-local-typedefs.c
  7f0011fe4d80291b412d4a643ab94cc8  gcc/testsuite/c-c++-common/Wunused-var-1.c
*************** f79bc4a80b6890a56ed93a450311aa3f  gcc/te
*** 8068,8078 ****
  3acd34af9a98cb4913d6b6310f170f6c  gcc/testsuite/c-c++-common/Wunused-var-7.c
  955505dd1a7bcb4ea846ce40b428a43d  gcc/testsuite/c-c++-common/Wunused-var-8.c
  521676114b454f97187cc76d533621e6  gcc/testsuite/c-c++-common/Wunused-var-9.c
! 377eec9131797ff1c810ef39880e5b97  gcc/testsuite/c-c++-common/Wvarargs-2.c
! 919eae31fb11998353a540fbec365549  gcc/testsuite/c-c++-common/Wvarargs.c
  e104bcfe21abe9fcad2b191ce9dee6c6  gcc/testsuite/c-c++-common/addrtmp.c
  f788e347baea0a1034ced9e1a15247e4  gcc/testsuite/c-c++-common/array-lit.c
  cc33621f0af40932dc13ca0bff4d3557  gcc/testsuite/c-c++-common/asan/aggressive-opts.c
  83eb03dd0d4fe6c522bc215fca0bc0a3  gcc/testsuite/c-c++-common/asan/asan-interface-1.c
  966c2b8ee203d9d76e0a1b80b23e46ea  gcc/testsuite/c-c++-common/asan/attrib-1.c
  328bc4f2618808b8aed2a1e944810a42  gcc/testsuite/c-c++-common/asan/bitfield-1.c
--- 8333,8351 ----
  3acd34af9a98cb4913d6b6310f170f6c  gcc/testsuite/c-c++-common/Wunused-var-7.c
  955505dd1a7bcb4ea846ce40b428a43d  gcc/testsuite/c-c++-common/Wunused-var-8.c
  521676114b454f97187cc76d533621e6  gcc/testsuite/c-c++-common/Wunused-var-9.c
! a50d762e53776af1cdd4faaa0f858285  gcc/testsuite/c-c++-common/Wvarargs-2.c
! f86e3374bdfa46067438564a7eae6a71  gcc/testsuite/c-c++-common/Wvarargs.c
  e104bcfe21abe9fcad2b191ce9dee6c6  gcc/testsuite/c-c++-common/addrtmp.c
  f788e347baea0a1034ced9e1a15247e4  gcc/testsuite/c-c++-common/array-lit.c
  cc33621f0af40932dc13ca0bff4d3557  gcc/testsuite/c-c++-common/asan/aggressive-opts.c
+ 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
+ 2d4e8e172f5b209be2e50c4daa051fdb  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/testsuite/c-c++-common/asan/alloca_underflow_left.c
  83eb03dd0d4fe6c522bc215fca0bc0a3  gcc/testsuite/c-c++-common/asan/asan-interface-1.c
  966c2b8ee203d9d76e0a1b80b23e46ea  gcc/testsuite/c-c++-common/asan/attrib-1.c
  328bc4f2618808b8aed2a1e944810a42  gcc/testsuite/c-c++-common/asan/bitfield-1.c
*************** cc33621f0af40932dc13ca0bff4d3557  gcc/te
*** 8082,8101 ****
  a19feeb74b26953ebaaf91c93429fd81  gcc/testsuite/c-c++-common/asan/bitfield-5.c
  4bd67b0d36532dc2480c1d573a461e0f  gcc/testsuite/c-c++-common/asan/clone-test-1.c
  2b7a63d20c047f64c3e1caa408ba593b  gcc/testsuite/c-c++-common/asan/force-inline-opt0-1.c
! 9802f02662b4236e099417257f3677f7  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
! 7753f555ba638d5cf9d28449a72fdd82  gcc/testsuite/c-c++-common/asan/heap-overflow-1.c
  915db5fd3e96749605b646bc5e5e0a5a  gcc/testsuite/c-c++-common/asan/inc.c
  c5ea8dd9bf7600304dc54e7f49427fc6  gcc/testsuite/c-c++-common/asan/instrument-with-calls-1.c
  e9ac694e62021365bb12134eac0ea1b3  gcc/testsuite/c-c++-common/asan/instrument-with-calls-2.c
  09cec4772e57416c636d606886d98e21  gcc/testsuite/c-c++-common/asan/instrument-with-calls-3.c
  7d6a8668da9be8e1c34c69f4cbea9508  gcc/testsuite/c-c++-common/asan/kasan-recover-1.c
  b6fba65be56233636391b792d7776a15  gcc/testsuite/c-c++-common/asan/kasan-recover-2.c
  9b634a25e0edb8bec2cce9224f04e230  gcc/testsuite/c-c++-common/asan/memcmp-1.c
  1607b2f88b8139c3bc2645aebffbe6bf  gcc/testsuite/c-c++-common/asan/memcmp-2.c
! 925fc7e5df679b66c862e6f64b84a1a7  gcc/testsuite/c-c++-common/asan/misalign-1.c
! 73fd2b412c4dcb4aee794562c7382ecd  gcc/testsuite/c-c++-common/asan/misalign-2.c
  8f1c6f5ef60541210633d5a1071d4a56  gcc/testsuite/c-c++-common/asan/no-asan-check-glob.c
  a5e083f102b9aa8e451588e7e265474b  gcc/testsuite/c-c++-common/asan/no-asan-globals.c
  f4c8bd1fd7322a794b8155bf56b32c57  gcc/testsuite/c-c++-common/asan/no-asan-stack.c
--- 8355,8376 ----
  a19feeb74b26953ebaaf91c93429fd81  gcc/testsuite/c-c++-common/asan/bitfield-5.c
  4bd67b0d36532dc2480c1d573a461e0f  gcc/testsuite/c-c++-common/asan/clone-test-1.c
  2b7a63d20c047f64c3e1caa408ba593b  gcc/testsuite/c-c++-common/asan/force-inline-opt0-1.c
! b2db2d3e56743cf6e27e5b5285ce58c8  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
  c5ea8dd9bf7600304dc54e7f49427fc6  gcc/testsuite/c-c++-common/asan/instrument-with-calls-1.c
  e9ac694e62021365bb12134eac0ea1b3  gcc/testsuite/c-c++-common/asan/instrument-with-calls-2.c
  09cec4772e57416c636d606886d98e21  gcc/testsuite/c-c++-common/asan/instrument-with-calls-3.c
+ 0b021fa5e69dd9e90c3763fcda0014cd  gcc/testsuite/c-c++-common/asan/kasan-alloca-1.c
+ 9d719540480f24017a08403b775b3ccd  gcc/testsuite/c-c++-common/asan/kasan-alloca-2.c
  7d6a8668da9be8e1c34c69f4cbea9508  gcc/testsuite/c-c++-common/asan/kasan-recover-1.c
  b6fba65be56233636391b792d7776a15  gcc/testsuite/c-c++-common/asan/kasan-recover-2.c
  9b634a25e0edb8bec2cce9224f04e230  gcc/testsuite/c-c++-common/asan/memcmp-1.c
  1607b2f88b8139c3bc2645aebffbe6bf  gcc/testsuite/c-c++-common/asan/memcmp-2.c
! adf309525e465d7e5b11d6480e8d11ea  gcc/testsuite/c-c++-common/asan/misalign-1.c
! f7b2363413591a49826917a35891b5a4  gcc/testsuite/c-c++-common/asan/misalign-2.c
  8f1c6f5ef60541210633d5a1071d4a56  gcc/testsuite/c-c++-common/asan/no-asan-check-glob.c
  a5e083f102b9aa8e451588e7e265474b  gcc/testsuite/c-c++-common/asan/no-asan-globals.c
  f4c8bd1fd7322a794b8155bf56b32c57  gcc/testsuite/c-c++-common/asan/no-asan-stack.c
*************** f331676357e0c5aeca5e80d429de4a40  gcc/te
*** 8116,8122 ****
  f040c23b54cf32adff7b8ed8f739fb60  gcc/testsuite/c-c++-common/asan/no-redundant-instrumentation-8.c
  db4942fb1e6237d8999cbd7befad36c5  gcc/testsuite/c-c++-common/asan/no-redundant-odr-indicators-1.c
  d96e86e0b770414e72de009b6c7afadd  gcc/testsuite/c-c++-common/asan/no-use-after-return.c
! 2c95d0d8b36f83fcd80253bb42b15120  gcc/testsuite/c-c++-common/asan/null-deref-1.c
  9a0dd3dcef02945c8967f40a29316496  gcc/testsuite/c-c++-common/asan/pr56330.c
  202bae43b2843228776d43c8d07c92c8  gcc/testsuite/c-c++-common/asan/pr59029.c
  0e87bd931ae1ab52ea5326305fe87bbf  gcc/testsuite/c-c++-common/asan/pr59063-1.c
--- 8391,8404 ----
  f040c23b54cf32adff7b8ed8f739fb60  gcc/testsuite/c-c++-common/asan/no-redundant-instrumentation-8.c
  db4942fb1e6237d8999cbd7befad36c5  gcc/testsuite/c-c++-common/asan/no-redundant-odr-indicators-1.c
  d96e86e0b770414e72de009b6c7afadd  gcc/testsuite/c-c++-common/asan/no-use-after-return.c
! 869ef47c74f02e648046301bafcd185b  gcc/testsuite/c-c++-common/asan/null-deref-1.c
! 3e857d6ff4535c06a4b5ec02097ee920  gcc/testsuite/c-c++-common/asan/pointer-compare-1.c
! 7b3d7827b76153028c59412c76979a9a  gcc/testsuite/c-c++-common/asan/pointer-compare-2.c
! 9c368a814bd51803559b20c95cbb2ca4  gcc/testsuite/c-c++-common/asan/pointer-compare-3.c
! 3d53127b19faa90799f41b902bed87ab  gcc/testsuite/c-c++-common/asan/pointer-subtract-1.c
! c8e34a9a26867d8e55d6f7b2f75c5ea0  gcc/testsuite/c-c++-common/asan/pointer-subtract-2.c
! f1a7e3ce3146ff218f3579b9f0743925  gcc/testsuite/c-c++-common/asan/pointer-subtract-3.c
! 8182b88e14597c18a31156cc7ab142d7  gcc/testsuite/c-c++-common/asan/pointer-subtract-4.c
  9a0dd3dcef02945c8967f40a29316496  gcc/testsuite/c-c++-common/asan/pr56330.c
  202bae43b2843228776d43c8d07c92c8  gcc/testsuite/c-c++-common/asan/pr59029.c
  0e87bd931ae1ab52ea5326305fe87bbf  gcc/testsuite/c-c++-common/asan/pr59063-1.c
*************** d96e86e0b770414e72de009b6c7afadd  gcc/te
*** 8126,8132 ****
  10127067cac44d34f08d701d26036156  gcc/testsuite/c-c++-common/asan/pr62140-1.c
  95c8d7268fe5e09ae687af76e9576dcc  gcc/testsuite/c-c++-common/asan/pr62140-2.c
  e2f486b0dd43e40b8a43561b9dd25b7f  gcc/testsuite/c-c++-common/asan/pr63316.c
! ae5400233bb23dafe56f543cc5bb1ba6  gcc/testsuite/c-c++-common/asan/pr63638.c
  0a221c339accacadef51e91e2f07b9ba  gcc/testsuite/c-c++-common/asan/pr63888.c
  2a794af8b446f3413fe5b973ea309b7b  gcc/testsuite/c-c++-common/asan/pr64820.c
  430079f735bd0792e25216b9c0862dae  gcc/testsuite/c-c++-common/asan/pr70541.c
--- 8408,8414 ----
  10127067cac44d34f08d701d26036156  gcc/testsuite/c-c++-common/asan/pr62140-1.c
  95c8d7268fe5e09ae687af76e9576dcc  gcc/testsuite/c-c++-common/asan/pr62140-2.c
  e2f486b0dd43e40b8a43561b9dd25b7f  gcc/testsuite/c-c++-common/asan/pr63316.c
! 272a8a4b4eb62045f13f25163fae08ca  gcc/testsuite/c-c++-common/asan/pr63638.c
  0a221c339accacadef51e91e2f07b9ba  gcc/testsuite/c-c++-common/asan/pr63888.c
  2a794af8b446f3413fe5b973ea309b7b  gcc/testsuite/c-c++-common/asan/pr64820.c
  430079f735bd0792e25216b9c0862dae  gcc/testsuite/c-c++-common/asan/pr70541.c
*************** dee6718aa031ca364c15580524cba02b  gcc/te
*** 8134,8139 ****
--- 8416,8422 ----
  597319c6e2a780b5c408db133cfae42c  gcc/testsuite/c-c++-common/asan/pr71480.c
  d4cafd1e2a02428237d07dbd1a042e54  gcc/testsuite/c-c++-common/asan/pr79944.c
  539617749d0b98796e7a5d47d58ce4ad  gcc/testsuite/c-c++-common/asan/pr80308.c
+ cbc001fdbd160c2b35cb6fbce99eec06  gcc/testsuite/c-c++-common/asan/pr81697.c
  53382ff9da47e361b5e5dc525d26e518  gcc/testsuite/c-c++-common/asan/red-align-1.c
  40dc4b3092482d9427dfbc9415f0b0a8  gcc/testsuite/c-c++-common/asan/red-align-2.c
  8940936501084c6e4d7f6d110ba612d8  gcc/testsuite/c-c++-common/asan/rlimit-mmap-test-1.c
*************** d4cafd1e2a02428237d07dbd1a042e54  gcc/te
*** 8141,8152 ****
  a21b32c9f479778db8395e7fac76837f  gcc/testsuite/c-c++-common/asan/sanity-check-pure-c-1.c
  53415ea63fb9592d7d201b142430f580  gcc/testsuite/c-c++-common/asan/shadow-offset-1.c
  a9fb6d989eff5e97f0875a8f4a6476df  gcc/testsuite/c-c++-common/asan/sleep-before-dying-1.c
! a1dd3d99c0f48296a0d1112c92c3c968  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
! 8f3f055158c0d9c0aa2815fcac7d7684  gcc/testsuite/c-c++-common/asan/strncpy-overflow-1.c
  ba231380f930c8e385536084b126f8a6  gcc/testsuite/c-c++-common/asan/swapcontext-test-1.c
! 3e8f8f9ba369be705d568a473f97e439  gcc/testsuite/c-c++-common/asan/use-after-free-1.c
  f45435e593110147ca703c598db2ad4f  gcc/testsuite/c-c++-common/asan/use-after-return-1.c
  ca3a4e630befd762fc8576e74160a5a4  gcc/testsuite/c-c++-common/asan/user-section-1.c
  0a2e4001b6ac2328ef0e29cfc0519941  gcc/testsuite/c-c++-common/asan/user-section-2.c
--- 8424,8435 ----
  a21b32c9f479778db8395e7fac76837f  gcc/testsuite/c-c++-common/asan/sanity-check-pure-c-1.c
  53415ea63fb9592d7d201b142430f580  gcc/testsuite/c-c++-common/asan/shadow-offset-1.c
  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
! 0aadb432697de767222b2c19dac84fa8  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
  f45435e593110147ca703c598db2ad4f  gcc/testsuite/c-c++-common/asan/use-after-return-1.c
  ca3a4e630befd762fc8576e74160a5a4  gcc/testsuite/c-c++-common/asan/user-section-1.c
  0a2e4001b6ac2328ef0e29cfc0519941  gcc/testsuite/c-c++-common/asan/user-section-2.c
*************** ca3a4e630befd762fc8576e74160a5a4  gcc/te
*** 8155,8168 ****
  0ae07bead2631c8edcb00032badf04af  gcc/testsuite/c-c++-common/asmgoto-2.c
  23fd6d68a2d88cbcf8cd954faf8fb296  gcc/testsuite/c-c++-common/asmgoto-3.c
  dcd81f0d6cf4d767d2d3f42f805b143b  gcc/testsuite/c-c++-common/asmgoto-4.c
! d26a7355a7d9b80b06a536b9d9354796  gcc/testsuite/c-c++-common/attr-aligned-1.c
  7013572d9ddd96911ba5c9684a120afa  gcc/testsuite/c-c++-common/attr-fallthrough-1.c
  d74ec118aa5c7b9d1779b844850d814b  gcc/testsuite/c-c++-common/attr-fallthrough-2.c
  ecc5351c14d6a9924c9ba3fe13409d1d  gcc/testsuite/c-c++-common/attr-may-alias-1.c
  38e52e11c86808356af8a92c21eed6fb  gcc/testsuite/c-c++-common/attr-may-alias-2.c
  98687838cf46c8c28ee0ab7af818dc38  gcc/testsuite/c-c++-common/attr-opt-1.c
  5ad24543b6d83246f7cebf2bed5c2379  gcc/testsuite/c-c++-common/attr-simd-2.c
- 32040e9f645b10359b2621b15144875c  gcc/testsuite/c-c++-common/attr-simd-3.c
  ba228dab53d862be27c7036d86f735eb  gcc/testsuite/c-c++-common/attr-simd-4.c
  8a1a222d75843dbe3f9d7834834cefa3  gcc/testsuite/c-c++-common/attr-simd-5.c
  1cafca2ba73fd84aa440894e83542ca4  gcc/testsuite/c-c++-common/attr-simd.c
--- 8438,8458 ----
  0ae07bead2631c8edcb00032badf04af  gcc/testsuite/c-c++-common/asmgoto-2.c
  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
  7013572d9ddd96911ba5c9684a120afa  gcc/testsuite/c-c++-common/attr-fallthrough-1.c
  d74ec118aa5c7b9d1779b844850d814b  gcc/testsuite/c-c++-common/attr-fallthrough-2.c
  ecc5351c14d6a9924c9ba3fe13409d1d  gcc/testsuite/c-c++-common/attr-may-alias-1.c
  38e52e11c86808356af8a92c21eed6fb  gcc/testsuite/c-c++-common/attr-may-alias-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
+ 6e74d4217acfc4ff85814de60a3f7e75  gcc/testsuite/c-c++-common/attr-nonstring-1.c
+ 8121851e9adc24f2cb9196e1c2dab2ab  gcc/testsuite/c-c++-common/attr-nonstring-2.c
+ f251d178dc503f7dedf03b86c009f83e  gcc/testsuite/c-c++-common/attr-nonstring-3.c
+ 4adf572d673067e3c62ca2406309f1cb  gcc/testsuite/c-c++-common/attr-nonstring-4.c
+ aecf8808dcce2f2171e6ff35d91b4e01  gcc/testsuite/c-c++-common/attr-nonstring-5.c
  98687838cf46c8c28ee0ab7af818dc38  gcc/testsuite/c-c++-common/attr-opt-1.c
  5ad24543b6d83246f7cebf2bed5c2379  gcc/testsuite/c-c++-common/attr-simd-2.c
  ba228dab53d862be27c7036d86f735eb  gcc/testsuite/c-c++-common/attr-simd-4.c
  8a1a222d75843dbe3f9d7834834cefa3  gcc/testsuite/c-c++-common/attr-simd-5.c
  1cafca2ba73fd84aa440894e83542ca4  gcc/testsuite/c-c++-common/attr-simd.c
*************** e123297fccae243c537f91e155c74a71  gcc/te
*** 8171,8177 ****
  c16cfe2fc05f8ec7fa89428b9e32fef6  gcc/testsuite/c-c++-common/attr-warn-unused-result.c
  d47f9d30519f143879e00d5ca8e04421  gcc/testsuite/c-c++-common/attributes-1.c
  6d7e356a55667553550e9cd33323e1f5  gcc/testsuite/c-c++-common/attributes-2.c
! 6f918e3bc482ee35e14246b52993679a  gcc/testsuite/c-c++-common/attributes-3.c
  debeca168f3a9a432da9b7fe19f105d0  gcc/testsuite/c-c++-common/attributes-enum-1.c
  05e6e3f334bd062d9e932f51ca25a73d  gcc/testsuite/c-c++-common/attributes-enum-2.c
  e1214c78ebce01448d71917e783e66f3  gcc/testsuite/c-c++-common/builtin-arith-overflow-1.c
--- 8461,8467 ----
  c16cfe2fc05f8ec7fa89428b9e32fef6  gcc/testsuite/c-c++-common/attr-warn-unused-result.c
  d47f9d30519f143879e00d5ca8e04421  gcc/testsuite/c-c++-common/attributes-1.c
  6d7e356a55667553550e9cd33323e1f5  gcc/testsuite/c-c++-common/attributes-2.c
! 7737d14ff3ce9417fd73b9e37262ef58  gcc/testsuite/c-c++-common/attributes-3.c
  debeca168f3a9a432da9b7fe19f105d0  gcc/testsuite/c-c++-common/attributes-enum-1.c
  05e6e3f334bd062d9e932f51ca25a73d  gcc/testsuite/c-c++-common/attributes-enum-2.c
  e1214c78ebce01448d71917e783e66f3  gcc/testsuite/c-c++-common/builtin-arith-overflow-1.c
*************** e1214c78ebce01448d71917e783e66f3  gcc/te
*** 8180,8301 ****
  41df51bc4faa62cf4b0a5b0f48fd7eda  gcc/testsuite/c-c++-common/builtin-offsetof.c
  ef95b2391ac4310fde10257ba4f7463b  gcc/testsuite/c-c++-common/builtin-shuffle-1.c
  3a349fcc5db93dcaf44a93c32735f04a  gcc/testsuite/c-c++-common/builtin_location.c
! 94e0997cf81cbdd15ec782295af1edc7  gcc/testsuite/c-c++-common/cilk-plus/AN/an-if.c
! a888b5e17123e676b54fca597cbc0a44  gcc/testsuite/c-c++-common/cilk-plus/AN/array_test1.c
! 08ef5fb4ef025ebba5f7a5d3f5d23e36  gcc/testsuite/c-c++-common/cilk-plus/AN/array_test2.c
! 8287feeb33cfc54a2830fa16175eac8e  gcc/testsuite/c-c++-common/cilk-plus/AN/array_test_ND.c
! a774f9277d798bfd53d2bb5ad39c6afb  gcc/testsuite/c-c++-common/cilk-plus/AN/builtin_fn_custom.c
! 3886229ef5cfa897aa4a1042a358c50f  gcc/testsuite/c-c++-common/cilk-plus/AN/builtin_fn_mutating.c
! 77adca875df4767b9b66d52db1e597ac  gcc/testsuite/c-c++-common/cilk-plus/AN/builtin_func_double.c
! 3292fdd85f4eeda6ea36586e8629fd0b  gcc/testsuite/c-c++-common/cilk-plus/AN/builtin_func_double2.c
! ea351fa5e84fff9b737019bb67e10070  gcc/testsuite/c-c++-common/cilk-plus/AN/comma_exp.c
! ce3ca1a7736afc8fe6407a40a1099d7b  gcc/testsuite/c-c++-common/cilk-plus/AN/conditional.c
! d7ffdc5cceff3a6f1e90f4f7110ae20d  gcc/testsuite/c-c++-common/cilk-plus/AN/decl-ptr-colon.c
! 0016354718a711fce3ebb96dd81d0583  gcc/testsuite/c-c++-common/cilk-plus/AN/dimensionless-arrays.c
! bbf632f329bcc7b95fecbb073abea732  gcc/testsuite/c-c++-common/cilk-plus/AN/exec-once.c
! b5de8dc68d51e59df3eaa31433b393cd  gcc/testsuite/c-c++-common/cilk-plus/AN/exec-once2.c
! bb5daaf6ab998d2b0e0a8c152c921915  gcc/testsuite/c-c++-common/cilk-plus/AN/fn_ptr-2.c
! a7e731e5a96334b8408600ed342f2d66  gcc/testsuite/c-c++-common/cilk-plus/AN/fn_ptr.c
! 2bdf87a75d8fedfc6789d9b614bebb3d  gcc/testsuite/c-c++-common/cilk-plus/AN/fp_triplet_values.c
! 8a5fe58799b0e9432227d0f67b47019c  gcc/testsuite/c-c++-common/cilk-plus/AN/gather-scatter-errors.c
! 87906023908d3e65a645b2e280152bcf  gcc/testsuite/c-c++-common/cilk-plus/AN/gather_scatter.c
! f8c7a81ed9457f78e2924266edfd32ef  gcc/testsuite/c-c++-common/cilk-plus/AN/if_test.c
! ca8d46890c8e916fb1005383d27951c3  gcc/testsuite/c-c++-common/cilk-plus/AN/if_test_errors.c
! 80ffbe106f72d8fe59afc3192d8ea846  gcc/testsuite/c-c++-common/cilk-plus/AN/misc.c
! fe7576f9c18340d27e91547b5718fd49  gcc/testsuite/c-c++-common/cilk-plus/AN/n-ptr-test.c
! 69a3069ca51d696752e1cb82afc00a06  gcc/testsuite/c-c++-common/cilk-plus/AN/parser_errors.c
! 2a7b589edd5a81e117490a51293eed57  gcc/testsuite/c-c++-common/cilk-plus/AN/parser_errors2.c
! 683110330b95eaeed03bfe0290aba2c5  gcc/testsuite/c-c++-common/cilk-plus/AN/parser_errors3.c
! 7c46a767cb14958e873c2c10bcde7211  gcc/testsuite/c-c++-common/cilk-plus/AN/parser_errors4.c
! 2c088e019fefc928fe277ef1f4fb7d33  gcc/testsuite/c-c++-common/cilk-plus/AN/pr57457-2.c
! bba6114b4cfe4a3376c77f125d594f06  gcc/testsuite/c-c++-common/cilk-plus/AN/pr57457.c
! 953c3a0fd51c86c993a221c31e5211ec  gcc/testsuite/c-c++-common/cilk-plus/AN/pr57490.c
! 43824703e1a03545ac36b780d6e1942a  gcc/testsuite/c-c++-common/cilk-plus/AN/pr57541-2.c
! a3f5fc8ddb22402540a7884bec069d00  gcc/testsuite/c-c++-common/cilk-plus/AN/pr57541.c
! a36b3974157c0833a64435f6ab921c63  gcc/testsuite/c-c++-common/cilk-plus/AN/pr57577.c
! 18b9ecb01f318e46e1b1618d51b65ecf  gcc/testsuite/c-c++-common/cilk-plus/AN/pr58942.c
! 42a791ac52ea8a48463eb326d8d0b49e  gcc/testsuite/c-c++-common/cilk-plus/AN/pr61191.c
! 4d37818a4810494aa54c0eff9557ef88  gcc/testsuite/c-c++-common/cilk-plus/AN/pr61455-2.c
! b6908f89f94988c572f51a2ef7e54bb3  gcc/testsuite/c-c++-common/cilk-plus/AN/pr61455.c
! d9a244172d4eb23327f5f7ff4ed6cbdb  gcc/testsuite/c-c++-common/cilk-plus/AN/pr61962.c
! 106f92b7102ff55f7b58be11c20170a7  gcc/testsuite/c-c++-common/cilk-plus/AN/pr61963.c
! 741f016ad6f44053f76bd0cd02058e08  gcc/testsuite/c-c++-common/cilk-plus/AN/pr62008.c
! b5d20934dbb6e6d580afbc4995572bb4  gcc/testsuite/c-c++-common/cilk-plus/AN/pr63884.c
! 98746bc5b6b6bbd2beaa2dd9c7ba6476  gcc/testsuite/c-c++-common/cilk-plus/AN/rank_mismatch.c
! 4dfe5bd9bbbf2b8f4fd4e8f2929b2810  gcc/testsuite/c-c++-common/cilk-plus/AN/rank_mismatch2.c
! 4cbb8c454d5869ef6fd39d428da765a0  gcc/testsuite/c-c++-common/cilk-plus/AN/rank_mismatch3.c
! 36e60badbadbe4f6895b758c9ad6f326  gcc/testsuite/c-c++-common/cilk-plus/AN/sec_implicit.c
! 0b1b8e736cfb70ff20b81c5fdc5c8c83  gcc/testsuite/c-c++-common/cilk-plus/AN/sec_implicit2.c
! 1525a5ac1d768d673fa4e4d7c8c7a5a2  gcc/testsuite/c-c++-common/cilk-plus/AN/sec_implicit_ex.c
! ded381db324d5595f69d74a01d5d0f0e  gcc/testsuite/c-c++-common/cilk-plus/AN/sec_reduce_ind_same_value.c
! f441cdf54d7875c577c85033db4e6b96  gcc/testsuite/c-c++-common/cilk-plus/AN/sec_reduce_max_min_ind.c
! 8ba5189cea824a671da8b4ac4c8fa986  gcc/testsuite/c-c++-common/cilk-plus/AN/sec_reduce_return.c
! c65437bfa5fd8a69ecc828c902c85678  gcc/testsuite/c-c++-common/cilk-plus/AN/side-effects-1.c
! 01fd9514cd1bcc15a1709d088c53e10f  gcc/testsuite/c-c++-common/cilk-plus/AN/test_builtin_return.c
! 0088eeea4095eab32cc73f5ae94a63f1  gcc/testsuite/c-c++-common/cilk-plus/AN/test_sec_limits.c
! f127369431942d51dcc9bcdc520d8e33  gcc/testsuite/c-c++-common/cilk-plus/AN/tst_lngth.c
! ef0d0c971bad41a313b87776cadd1f1c  gcc/testsuite/c-c++-common/cilk-plus/AN/vla.c
! 9071ea0d571710117415b7c86596164a  gcc/testsuite/c-c++-common/cilk-plus/CK/Wparentheses-1.c
! 15030b71487b0ff4ef8f01a494cd9066  gcc/testsuite/c-c++-common/cilk-plus/CK/cilk-for-2.c
! ac743e593a0124614f4874ae368356e1  gcc/testsuite/c-c++-common/cilk-plus/CK/cilk-for-3.c
! 83c4a05082b17a90b91da1545209f432  gcc/testsuite/c-c++-common/cilk-plus/CK/cilk-fors.c
! c396c21c0300fb573795c6a13c3cdf27  gcc/testsuite/c-c++-common/cilk-plus/CK/cilk_for_errors.c
! d1a26cc35f6af1e103cfb59c696d0c7b  gcc/testsuite/c-c++-common/cilk-plus/CK/cilk_for_grain.c
! f1ff452bc0314afa4c254b72ac96939e  gcc/testsuite/c-c++-common/cilk-plus/CK/cilk_for_grain_errors.c
! f6c6adbf46897270acb90a822a294399  gcc/testsuite/c-c++-common/cilk-plus/CK/cilk_for_ptr_iter.c
! 6b14112bac0a1bf31146727381463b49  gcc/testsuite/c-c++-common/cilk-plus/CK/compound_cilk_spawn.c
! 71102d817dc131be15922272a406f269  gcc/testsuite/c-c++-common/cilk-plus/CK/concec_cilk_spawn.c
! fce2ed51cf756e7ab69dcea10f45ff2f  gcc/testsuite/c-c++-common/cilk-plus/CK/errors.c
! 74031ea7012a6390978d7b5fb2c7a83c  gcc/testsuite/c-c++-common/cilk-plus/CK/fib.c
! aca977bdfbbc1fbd9dfa480ecbd93e91  gcc/testsuite/c-c++-common/cilk-plus/CK/fib_init_expr_xy.c
! ddd576fcb876fe2cdfbc89113443cf93  gcc/testsuite/c-c++-common/cilk-plus/CK/fib_no_return.c
! de9fdbca767c6320764a85d51c34d247  gcc/testsuite/c-c++-common/cilk-plus/CK/fib_no_sync.c
! 3c1aba27f563b43e7496044a67a04215  gcc/testsuite/c-c++-common/cilk-plus/CK/invalid_spawns.c
! e30e70e0f3ee94bd63ee8448c326b114  gcc/testsuite/c-c++-common/cilk-plus/CK/invalid_sync.cc
! ab78af986545b558b3fd374165d9523d  gcc/testsuite/c-c++-common/cilk-plus/CK/nested_cilk_for.c
! 9851ad6fbae31ec812896e55387b04e9  gcc/testsuite/c-c++-common/cilk-plus/CK/no_args_error.c
! baaa8dcaf89f3b8cd67c3c385d275b85  gcc/testsuite/c-c++-common/cilk-plus/CK/pr59631.c
! 0fdcd72893b4a82aea59579baa2dfba1  gcc/testsuite/c-c++-common/cilk-plus/CK/pr60197-2.c
! ecca8d71b5552be604bf2d6bd89edba4  gcc/testsuite/c-c++-common/cilk-plus/CK/pr60197.c
! fc773eb7f157bca78ec3ec3b690651cd  gcc/testsuite/c-c++-common/cilk-plus/CK/pr60469.c
! 48b8ac53d2583481851f1bb1288a3677  gcc/testsuite/c-c++-common/cilk-plus/CK/pr60586.c
! 7b3741f5d0310883e63b687bb3768eb2  gcc/testsuite/c-c++-common/cilk-plus/CK/pr63307.c
! 4b433bc930aa18859ba5bef5854ef46b  gcc/testsuite/c-c++-common/cilk-plus/CK/pr69826-1.c
! 394efb43128bee36d8d47eb2e4a957ee  gcc/testsuite/c-c++-common/cilk-plus/CK/pr69826-2.c
! daa59a813ddb2262898d719bbf406aa1  gcc/testsuite/c-c++-common/cilk-plus/CK/pr79428-4.c
! 77910ab2d274097e490925fbe44b6523  gcc/testsuite/c-c++-common/cilk-plus/CK/pr79428-7.c
! 8a70f2db9dba5ac2c7d4b6e8c09349cc  gcc/testsuite/c-c++-common/cilk-plus/CK/spawn_in_return.c
! 47c1733c34cc01fe174e6c70cdd0eff4  gcc/testsuite/c-c++-common/cilk-plus/CK/spawnee_inline.c
! 08d2f67932beea6a76884f2cb92e410a  gcc/testsuite/c-c++-common/cilk-plus/CK/spawner_inline.c
! 73f75af73c7a6863c83c4660759b9592  gcc/testsuite/c-c++-common/cilk-plus/CK/spawning_arg.c
! d961492611bf4efe5d3cc729572b305e  gcc/testsuite/c-c++-common/cilk-plus/CK/steal_check.c
! 9e40dc4dd487222b7a5772fcb5ae1427  gcc/testsuite/c-c++-common/cilk-plus/CK/sync_wo_spawn.c
! b6bed103b79ac0c8325aec7cb8252aeb  gcc/testsuite/c-c++-common/cilk-plus/CK/test__cilk.c
! ab2daf390811ead1d4f2310819872b8e  gcc/testsuite/c-c++-common/cilk-plus/CK/varargs_test.c
! a91e2bedfc5fba57f250393ad22a4226  gcc/testsuite/c-c++-common/cilk-plus/PS/Wparentheses-1.c
! 2a9f0f5f9ce3fa980d45367fa5e831b3  gcc/testsuite/c-c++-common/cilk-plus/PS/body.c
! 99151e3ad21987280474c82b0b74d5a6  gcc/testsuite/c-c++-common/cilk-plus/PS/clauses1.c
! aab4c2b99cd544835aa0268413fad2ee  gcc/testsuite/c-c++-common/cilk-plus/PS/clauses2.c
! 2bf9820064aee4e73ab2bda29734fb79  gcc/testsuite/c-c++-common/cilk-plus/PS/clauses3.c
! 42858da49a30b3930c40e4fbe7b9a45e  gcc/testsuite/c-c++-common/cilk-plus/PS/clauses4.c
! 49b40a08be7d20477b49e02e27330259  gcc/testsuite/c-c++-common/cilk-plus/PS/for1.c
! b2a08232b4f9d79d1015d32c14a35c64  gcc/testsuite/c-c++-common/cilk-plus/PS/for2.c
! 03d4a135fd9570c554a539be9e76150a  gcc/testsuite/c-c++-common/cilk-plus/PS/for3.c
! 9f0a1e0af55f7b10c585b3ed12b866ad  gcc/testsuite/c-c++-common/cilk-plus/PS/pr69363.c
! 3ae90f6b39b6d6194ffa3a081ab4027b  gcc/testsuite/c-c++-common/cilk-plus/PS/reduction-1.c
! c1884c7ee9ce32e44aa78587d2181a09  gcc/testsuite/c-c++-common/cilk-plus/PS/reduction-2.c
! 26f54dc3c306ea4ee123c51a55501734  gcc/testsuite/c-c++-common/cilk-plus/PS/reduction-3.c
! 3257e49f38bfc37f363f21e44461f7e9  gcc/testsuite/c-c++-common/cilk-plus/PS/run-1.c
! bb77dca7e8b5eba897fe28c2498e9ccf  gcc/testsuite/c-c++-common/cilk-plus/PS/safelen.c
! 0271cc2e8edff6630895aad6744b2d2c  gcc/testsuite/c-c++-common/cilk-plus/PS/vectorlength-2.c
! 89d03f08763fabf58b4cb437ca0f38ea  gcc/testsuite/c-c++-common/cilk-plus/PS/vectorlength-3.c
! 35f34fb4071db7b0d15f440d2fcf7443  gcc/testsuite/c-c++-common/cilk-plus/PS/vectorlength.c
! 759d0e9b239143a7f2e8ff07d4a448f5  gcc/testsuite/c-c++-common/cilk-plus/SE/ef_error.c
! 0cbc4dccc2868cf762e4806e44fd49f4  gcc/testsuite/c-c++-common/cilk-plus/SE/ef_error2.c
! 28273977faf3529ba07a4282234fcdc5  gcc/testsuite/c-c++-common/cilk-plus/SE/ef_error3.c
! e3adab633f53981dc623e319dc1c1cbb  gcc/testsuite/c-c++-common/cilk-plus/SE/ef_test.c
! f8b22997032fb6aecc35e3d08c719688  gcc/testsuite/c-c++-common/cilk-plus/SE/ef_test2.c
! 5dd071266a4e986ec64e4b0617ad96fc  gcc/testsuite/c-c++-common/cilk-plus/SE/vlength_errors.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
--- 8470,8476 ----
  41df51bc4faa62cf4b0a5b0f48fd7eda  gcc/testsuite/c-c++-common/builtin-offsetof.c
  ef95b2391ac4310fde10257ba4f7463b  gcc/testsuite/c-c++-common/builtin-shuffle-1.c
  3a349fcc5db93dcaf44a93c32735f04a  gcc/testsuite/c-c++-common/builtin_location.c
! 2341b1258f7e71f5aeb2fc1ac6a17b27  gcc/testsuite/c-c++-common/builtins.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
*************** fe9ba880903f66a472e33ffd221fe3ee  gcc/te
*** 8309,8314 ****
--- 8484,8491 ----
  60862ce07b266f605ac33d7ec3a6ab37  gcc/testsuite/c-c++-common/conflict-markers-9.c
  9d9c46947813115ec77f53871be955d1  gcc/testsuite/c-c++-common/convert-vec-1.c
  7df2c1d437a437ae20fe8cd33d071a1a  gcc/testsuite/c-c++-common/cpp/diagnostic-pragma-1.c
+ 80917e73eda1f9f63bafbcc4d94a0927  gcc/testsuite/c-c++-common/cpp/ffile-prefix-map.c
+ 040be3c971d2d342750c402c54b9b869  gcc/testsuite/c-c++-common/cpp/fmacro-prefix-map.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
*************** c9229fff2e95406401ff0e77f9e25e9b  gcc/te
*** 8318,8342 ****
  88fdfa7ad0dd8169a90963238ee1847e  gcc/testsuite/c-c++-common/cpp/openmp-define-3.c
  c85025f0def783f70f9bb6a4ea9a23f3  gcc/testsuite/c-c++-common/cpp/pr45457.c
  50c40c5b8912ad75a2e46fd06778339d  gcc/testsuite/c-c++-common/cpp/pr57580.c
! eff73d3df17e8342527c47aee668fc90  gcc/testsuite/c-c++-common/cpp/pr58844-1.c
! cc15eb517954aa29a1c57133705ca83b  gcc/testsuite/c-c++-common/cpp/pr58844-2.c
  4bb69916f59c91d0c3c7583ed1c0eb97  gcc/testsuite/c-c++-common/cpp/pr60400-1.h
  87d0240913bd5df7fe5938e4ab645f1f  gcc/testsuite/c-c++-common/cpp/pr60400-2.h
! 21a90e49fc0287311c756b774010fdb0  gcc/testsuite/c-c++-common/cpp/pr60400.c
  5e5bc603cb54f22e303862dd47211ded  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
  791d43cbbb9115404405c22be44e4ae7  gcc/testsuite/c-c++-common/cpp/ucnid-2011-1.c
  7444806716b3bae848d518d64de74d70  gcc/testsuite/c-c++-common/cpp/warning-directive-1.c
  0bc290b1fdfa6458aec0ec7a0e16ca76  gcc/testsuite/c-c++-common/cpp/warning-directive-2.c
  b15ede4348fb88921443e477ccfed8c5  gcc/testsuite/c-c++-common/cpp/warning-directive-3.c
  94618958f4d9ed49970c723e5aed9ffd  gcc/testsuite/c-c++-common/cpp/warning-directive-4.c
  9f26ab0e1663587353727208a8b1fe9e  gcc/testsuite/c-c++-common/cpp/warning-zero-in-literals-1.c
  36dd0a2ab7ef169ecc90eb0e12535005  gcc/testsuite/c-c++-common/cpp/warning-zero-location-2.c
! 47bdd5543fe2f2a8481c91bfd4bcc2c5  gcc/testsuite/c-c++-common/cpp/warning-zero-location.c
  a0486a5f7c8ccac781c350a259d1d10a  gcc/testsuite/c-c++-common/cxxbitfields-3.c
  41b7167c10caf062116cc33d0f57a9ca  gcc/testsuite/c-c++-common/cxxbitfields-6.c
! ed2e805aa861485e13bc24ce8c1a6f17  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
--- 8495,8524 ----
  88fdfa7ad0dd8169a90963238ee1847e  gcc/testsuite/c-c++-common/cpp/openmp-define-3.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
! 3315fddcc8176022dc266610d79f3ba4  gcc/testsuite/c-c++-common/cpp/pr58844-2.c
  4bb69916f59c91d0c3c7583ed1c0eb97  gcc/testsuite/c-c++-common/cpp/pr60400-1.h
  87d0240913bd5df7fe5938e4ab645f1f  gcc/testsuite/c-c++-common/cpp/pr60400-2.h
! 6256ffd73a1cef9163b3da9b062f1310  gcc/testsuite/c-c++-common/cpp/pr60400.c
  5e5bc603cb54f22e303862dd47211ded  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
  791d43cbbb9115404405c22be44e4ae7  gcc/testsuite/c-c++-common/cpp/ucnid-2011-1.c
+ 0f93514d0ad79c03edfd672fb354e619  gcc/testsuite/c-c++-common/cpp/va-opt-2.c
+ d4400c02e16c9ce8399bebed26d20e37  gcc/testsuite/c-c++-common/cpp/va-opt-3.c
+ 111311014e0b7d3088a84587438910e7  gcc/testsuite/c-c++-common/cpp/va-opt-error.c
+ eea6a019e69d78eae4d98554090253c2  gcc/testsuite/c-c++-common/cpp/va-opt-pedantic.c
+ 170aae082482e5179e2b24f5f07b815a  gcc/testsuite/c-c++-common/cpp/va-opt.c
  7444806716b3bae848d518d64de74d70  gcc/testsuite/c-c++-common/cpp/warning-directive-1.c
  0bc290b1fdfa6458aec0ec7a0e16ca76  gcc/testsuite/c-c++-common/cpp/warning-directive-2.c
  b15ede4348fb88921443e477ccfed8c5  gcc/testsuite/c-c++-common/cpp/warning-directive-3.c
  94618958f4d9ed49970c723e5aed9ffd  gcc/testsuite/c-c++-common/cpp/warning-directive-4.c
  9f26ab0e1663587353727208a8b1fe9e  gcc/testsuite/c-c++-common/cpp/warning-zero-in-literals-1.c
  36dd0a2ab7ef169ecc90eb0e12535005  gcc/testsuite/c-c++-common/cpp/warning-zero-location-2.c
! f517ccd69d4612259fd415543074a1e1  gcc/testsuite/c-c++-common/cpp/warning-zero-location.c
  a0486a5f7c8ccac781c350a259d1d10a  gcc/testsuite/c-c++-common/cxxbitfields-3.c
  41b7167c10caf062116cc33d0f57a9ca  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
*************** e2e9daad46396f221aba14c404f30440  gcc/te
*** 8356,8362 ****
  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
! 5d1c0ccb794125bf36bde1de7e9f415a  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
  a0ffa308727c3b63f0b0706ba7c4f2be  gcc/testsuite/c-c++-common/dfp/convert-bfp-14.c
--- 8538,8544 ----
  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
! b05320ab810c5ff302f1bf25671bacec  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
  a0ffa308727c3b63f0b0706ba7c4f2be  gcc/testsuite/c-c++-common/dfp/convert-bfp-14.c
*************** a0ffa308727c3b63f0b0706ba7c4f2be  gcc/te
*** 8364,8373 ****
  902025341544d8a0d5a5838aed1fe034  gcc/testsuite/c-c++-common/dfp/convert-bfp-3.c
  6cdec5247aaecd7bbe5b416c6c0b6c63  gcc/testsuite/c-c++-common/dfp/convert-bfp-4.c
  210ede8b553dfdfa059416bada136862  gcc/testsuite/c-c++-common/dfp/convert-bfp-5.c
! 965d1e0a7df9a704b7f983b41ea9ede7  gcc/testsuite/c-c++-common/dfp/convert-bfp-6.c
  e04254f7f49e5f838c868bf8cf153cbd  gcc/testsuite/c-c++-common/dfp/convert-bfp-7.c
  42ea3b77e629def0b8ba5f1b37e3cd3f  gcc/testsuite/c-c++-common/dfp/convert-bfp-8.c
! 66db314a22f107a7bf9edc1893b9fa21  gcc/testsuite/c-c++-common/dfp/convert-bfp-9.c
  ce5673dba0e9f2ce13028e0e951ae3d7  gcc/testsuite/c-c++-common/dfp/convert-bfp-fold.c
  2d12bfcda70a8049178fcdb4da01c0fb  gcc/testsuite/c-c++-common/dfp/convert-bfp.c
  5928c81e14e3e17eda23dd41e57049b0  gcc/testsuite/c-c++-common/dfp/convert-dfp-2.c
--- 8546,8555 ----
  902025341544d8a0d5a5838aed1fe034  gcc/testsuite/c-c++-common/dfp/convert-bfp-3.c
  6cdec5247aaecd7bbe5b416c6c0b6c63  gcc/testsuite/c-c++-common/dfp/convert-bfp-4.c
  210ede8b553dfdfa059416bada136862  gcc/testsuite/c-c++-common/dfp/convert-bfp-5.c
! 3694fffb131506647f233cc9d9990047  gcc/testsuite/c-c++-common/dfp/convert-bfp-6.c
  e04254f7f49e5f838c868bf8cf153cbd  gcc/testsuite/c-c++-common/dfp/convert-bfp-7.c
  42ea3b77e629def0b8ba5f1b37e3cd3f  gcc/testsuite/c-c++-common/dfp/convert-bfp-8.c
! 8341e4004b3d346c17b3b49c80ea216c  gcc/testsuite/c-c++-common/dfp/convert-bfp-9.c
  ce5673dba0e9f2ce13028e0e951ae3d7  gcc/testsuite/c-c++-common/dfp/convert-bfp-fold.c
  2d12bfcda70a8049178fcdb4da01c0fb  gcc/testsuite/c-c++-common/dfp/convert-bfp.c
  5928c81e14e3e17eda23dd41e57049b0  gcc/testsuite/c-c++-common/dfp/convert-dfp-2.c
*************** aacf4e026933c0a823e92fc29b27b046  gcc/te
*** 8377,8383 ****
  da3ca94222542571b50c1a531b1963ed  gcc/testsuite/c-c++-common/dfp/convert-int-fold.c
  91313c291d096beb1f07eca5be877ce0  gcc/testsuite/c-c++-common/dfp/convert-int-max-fold.c
  a464be40794f49d894033605c111f996  gcc/testsuite/c-c++-common/dfp/convert-int-max.c
! f748483ab1ee20fc934a3e3d7104a9c4  gcc/testsuite/c-c++-common/dfp/convert-int-saturate.c
  9469e7fb4da999ec35bd9d69463e50b2  gcc/testsuite/c-c++-common/dfp/convert-int.c
  9a5d41a12f9e914ea3f0b850a3259acf  gcc/testsuite/c-c++-common/dfp/convert.h
  1af0b887011ee85c060e64568403fb9b  gcc/testsuite/c-c++-common/dfp/dfp-dbg.h
--- 8559,8565 ----
  da3ca94222542571b50c1a531b1963ed  gcc/testsuite/c-c++-common/dfp/convert-int-fold.c
  91313c291d096beb1f07eca5be877ce0  gcc/testsuite/c-c++-common/dfp/convert-int-max-fold.c
  a464be40794f49d894033605c111f996  gcc/testsuite/c-c++-common/dfp/convert-int-max.c
! 55b144de1427c27ee4c070bfbe7cfb4e  gcc/testsuite/c-c++-common/dfp/convert-int-saturate.c
  9469e7fb4da999ec35bd9d69463e50b2  gcc/testsuite/c-c++-common/dfp/convert-int.c
  9a5d41a12f9e914ea3f0b850a3259acf  gcc/testsuite/c-c++-common/dfp/convert.h
  1af0b887011ee85c060e64568403fb9b  gcc/testsuite/c-c++-common/dfp/dfp-dbg.h
*************** b55d67c31827320a4218c9bfa118857d  gcc/te
*** 8421,8437 ****
  48d67f7f36d890f8419440d99f232731  gcc/testsuite/c-c++-common/dfp/usual-arith-conv-const.c
  c0e0d2f46bf19ec2b6f3291f97a1ac27  gcc/testsuite/c-c++-common/dfp/usual-arith-conv.c
  d5d9e4636806cc2c21ba5269905d360d  gcc/testsuite/c-c++-common/dump-ada-spec-1.c
  b7ca570ac280601076a28194f31ba77a  gcc/testsuite/c-c++-common/dump-ada-spec-2.c
  ec450dea19e4d8bdd513fcf03b8610a9  gcc/testsuite/c-c++-common/dump-ada-spec-3.c
  1b20a222264c2ed9a3f7ea7fa6848b21  gcc/testsuite/c-c++-common/dump-ada-spec-4.c
  bb50610ee429c9597dbc214b97c58267  gcc/testsuite/c-c++-common/dump-ada-spec-5.c
  b402d83321951214957997b5dc7304fe  gcc/testsuite/c-c++-common/dump-ada-spec-6.c
  022f27c0791fa6cda422c4471a77b995  gcc/testsuite/c-c++-common/dwarf2/pr43190.c
  ec4d1b894c02e9b5b427541048ae2fae  gcc/testsuite/c-c++-common/dwarf2/pr83550.c
! 97429dd130e2a831a3f5643ed92516ef  gcc/testsuite/c-c++-common/dwarf2/vla1.c
! 47ae62c911af83398df67c85719b8fe3  gcc/testsuite/c-c++-common/fmax-errors.c
  f4eb480d84c0d74ec37a6a42e4f034f6  gcc/testsuite/c-c++-common/fold-bitand-4.c
  544a4510279395ddb73ab2bcddd62404  gcc/testsuite/c-c++-common/fold-divmul-1.c
  1d12f3305ca06a823562f0fccea56f16  gcc/testsuite/c-c++-common/goacc-gomp/nesting-1.c
  25018148b12e7e9ba0bb52c882a3c39b  gcc/testsuite/c-c++-common/goacc-gomp/nesting-fail-1.c
  318406ae2dc40af036abc40c46d96836  gcc/testsuite/c-c++-common/goacc/Wparentheses-1.c
--- 8603,8638 ----
  48d67f7f36d890f8419440d99f232731  gcc/testsuite/c-c++-common/dfp/usual-arith-conv-const.c
  c0e0d2f46bf19ec2b6f3291f97a1ac27  gcc/testsuite/c-c++-common/dfp/usual-arith-conv.c
  d5d9e4636806cc2c21ba5269905d360d  gcc/testsuite/c-c++-common/dump-ada-spec-1.c
+ 4e1eb848dd5329ff9c951118474783d5  gcc/testsuite/c-c++-common/dump-ada-spec-10.c
+ 8814d397a23c89c3297e65f3682e9915  gcc/testsuite/c-c++-common/dump-ada-spec-11.c
+ 8827eb74f0cafa02e7ac44673f062550  gcc/testsuite/c-c++-common/dump-ada-spec-12.c
+ 1ed2cdeec0479de57049ec71f84e59ad  gcc/testsuite/c-c++-common/dump-ada-spec-13.c
  b7ca570ac280601076a28194f31ba77a  gcc/testsuite/c-c++-common/dump-ada-spec-2.c
  ec450dea19e4d8bdd513fcf03b8610a9  gcc/testsuite/c-c++-common/dump-ada-spec-3.c
  1b20a222264c2ed9a3f7ea7fa6848b21  gcc/testsuite/c-c++-common/dump-ada-spec-4.c
  bb50610ee429c9597dbc214b97c58267  gcc/testsuite/c-c++-common/dump-ada-spec-5.c
  b402d83321951214957997b5dc7304fe  gcc/testsuite/c-c++-common/dump-ada-spec-6.c
+ 52b0190fdffe815d5a577c82fa3f470b  gcc/testsuite/c-c++-common/dump-ada-spec-7.c
+ 949aa0a68a7d58861579ce42098799b0  gcc/testsuite/c-c++-common/dump-ada-spec-8.c
+ 8114046594c3886d46da8021b7ebf46a  gcc/testsuite/c-c++-common/dump-ada-spec-9.c
  022f27c0791fa6cda422c4471a77b995  gcc/testsuite/c-c++-common/dwarf2/pr43190.c
  ec4d1b894c02e9b5b427541048ae2fae  gcc/testsuite/c-c++-common/dwarf2/pr83550.c
! 0b4cca49ee429e207515197a5e44ab19  gcc/testsuite/c-c++-common/dwarf2/vla1.c
! a2904e36f4beedc148948a7e131c1ad8  gcc/testsuite/c-c++-common/fcf-protection-1.c
! d96b46ab8b01f2a0b9a494f5465a7bcc  gcc/testsuite/c-c++-common/fcf-protection-2.c
! a9d134cf51ea89bfa1cddf566cef9719  gcc/testsuite/c-c++-common/fcf-protection-3.c
! e2b40bf7849aef62ef510d4f0dcb9333  gcc/testsuite/c-c++-common/fcf-protection-4.c
! 90cfa05722a9b8b6cda701a01a6d5d76  gcc/testsuite/c-c++-common/fcf-protection-5.c
! d96b46ab8b01f2a0b9a494f5465a7bcc  gcc/testsuite/c-c++-common/fcf-protection-6.c
! a9d134cf51ea89bfa1cddf566cef9719  gcc/testsuite/c-c++-common/fcf-protection-7.c
! 974779861f664167d947e1c8442c6959  gcc/testsuite/c-c++-common/ffile-prefix-map.c
! 3c5ce3494ca363652252f8ad6c6a1eb8  gcc/testsuite/c-c++-common/fmacro-prefix-map.c
! 2c5d9deba5caa0aecc0b9e862249f455  gcc/testsuite/c-c++-common/fmax-errors.c
  f4eb480d84c0d74ec37a6a42e4f034f6  gcc/testsuite/c-c++-common/fold-bitand-4.c
  544a4510279395ddb73ab2bcddd62404  gcc/testsuite/c-c++-common/fold-divmul-1.c
+ a485c2cf2b8fb5018ff6ffa1d09b0291  gcc/testsuite/c-c++-common/fold-masked-cmp-1.c
+ 6e779ad03a964087cf36696c444f20e2  gcc/testsuite/c-c++-common/fold-masked-cmp-2.c
+ 9b3df6f3fe1425a3c20ed01eae079f75  gcc/testsuite/c-c++-common/fold-masked-cmp-3.c
  1d12f3305ca06a823562f0fccea56f16  gcc/testsuite/c-c++-common/goacc-gomp/nesting-1.c
  25018148b12e7e9ba0bb52c882a3c39b  gcc/testsuite/c-c++-common/goacc-gomp/nesting-fail-1.c
  318406ae2dc40af036abc40c46d96836  gcc/testsuite/c-c++-common/goacc/Wparentheses-1.c
*************** f4eb480d84c0d74ec37a6a42e4f034f6  gcc/te
*** 8439,8461 ****
  c96674525248db5e1528cfe98af70e1b  gcc/testsuite/c-c++-common/goacc/asyncwait-1.c
  f2b008762a25069d1c4d34ad85325ccc  gcc/testsuite/c-c++-common/goacc/cache-1.c
  77ab75781f4f1f78ff6f1875f808f817  gcc/testsuite/c-c++-common/goacc/cache-2.c
  ed0df84115a0f8b333602804bdee2a95  gcc/testsuite/c-c++-common/goacc/clauses-fail.c
  8bfd01f209498815723e71000488572c  gcc/testsuite/c-c++-common/goacc/collapse-1.c
  ca2517a3cc3cd3ae7a63df0a68ad4598  gcc/testsuite/c-c++-common/goacc/combined-directives-2.c
  6a3920d3728f9ade384ff4fd7f3a5d2c  gcc/testsuite/c-c++-common/goacc/combined-directives.c
  c68fccfb3ff8b00b01d51396677c6d59  gcc/testsuite/c-c++-common/goacc/combined-reduction.c
  6ff2b7486e948a4634adb071ea7906c0  gcc/testsuite/c-c++-common/goacc/data-1.c
! decb861550116488af6f8fbf2a0f8c29  gcc/testsuite/c-c++-common/goacc/data-2.c
  84f08e112686de908716edd944c7dc5b  gcc/testsuite/c-c++-common/goacc/data-clause-duplicate-1.c
- 6a85f98b13c5f09cf2675a917d29222c  gcc/testsuite/c-c++-common/goacc/data-default-1.c
  8aa8af9ef5e15f8669a1ccc33b3d1fbf  gcc/testsuite/c-c++-common/goacc/declare-1.c
  c0f9bd299a92df1676aa9eccfa10b21b  gcc/testsuite/c-c++-common/goacc/declare-2.c
  791c407a38c6166f9b89d51f465e88af  gcc/testsuite/c-c++-common/goacc/deviceptr-1.c
  1e678e7e2c101c79192a640cd4d2e407  gcc/testsuite/c-c++-common/goacc/deviceptr-2.c
  b2061cbe48e6c36be03418229b1e6c1c  gcc/testsuite/c-c++-common/goacc/deviceptr-3.c
  6645aa455bee82b9f65beedd82a8f916  gcc/testsuite/c-c++-common/goacc/executeables-1.c
  14f1d49aa2ebd030b7b411a4d94e4f5e  gcc/testsuite/c-c++-common/goacc/host_data-1.c
! dbc4557fa23e8f3acc232999057eb1b9  gcc/testsuite/c-c++-common/goacc/host_data-2.c
  f5740839231c8e8304cea75d03b7fb0b  gcc/testsuite/c-c++-common/goacc/if-clause-1.c
  da99712686fe793685ab6055e56491ed  gcc/testsuite/c-c++-common/goacc/if-clause-2.c
  3562d541b55248dec549e58714404d21  gcc/testsuite/c-c++-common/goacc/kernels-1.c
--- 8640,8670 ----
  c96674525248db5e1528cfe98af70e1b  gcc/testsuite/c-c++-common/goacc/asyncwait-1.c
  f2b008762a25069d1c4d34ad85325ccc  gcc/testsuite/c-c++-common/goacc/cache-1.c
  77ab75781f4f1f78ff6f1875f808f817  gcc/testsuite/c-c++-common/goacc/cache-2.c
+ 27604a72601eb970560b179873376e83  gcc/testsuite/c-c++-common/goacc/classify-kernels-unparallelized.c
+ 5e2ac2f32c7a48614cb13383bdc4dd85  gcc/testsuite/c-c++-common/goacc/classify-kernels.c
+ 0207717b386bf5dc557cf5d752e15186  gcc/testsuite/c-c++-common/goacc/classify-parallel.c
+ 1e22e54b21f4890104e5f179dab063a0  gcc/testsuite/c-c++-common/goacc/classify-routine.c
  ed0df84115a0f8b333602804bdee2a95  gcc/testsuite/c-c++-common/goacc/clauses-fail.c
  8bfd01f209498815723e71000488572c  gcc/testsuite/c-c++-common/goacc/collapse-1.c
  ca2517a3cc3cd3ae7a63df0a68ad4598  gcc/testsuite/c-c++-common/goacc/combined-directives-2.c
  6a3920d3728f9ade384ff4fd7f3a5d2c  gcc/testsuite/c-c++-common/goacc/combined-directives.c
  c68fccfb3ff8b00b01d51396677c6d59  gcc/testsuite/c-c++-common/goacc/combined-reduction.c
  6ff2b7486e948a4634adb071ea7906c0  gcc/testsuite/c-c++-common/goacc/data-1.c
! 3723e03d13b0b843a30211fff8a058f5  gcc/testsuite/c-c++-common/goacc/data-2.c
  84f08e112686de908716edd944c7dc5b  gcc/testsuite/c-c++-common/goacc/data-clause-duplicate-1.c
  8aa8af9ef5e15f8669a1ccc33b3d1fbf  gcc/testsuite/c-c++-common/goacc/declare-1.c
  c0f9bd299a92df1676aa9eccfa10b21b  gcc/testsuite/c-c++-common/goacc/declare-2.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
+ ca219f8162c044979e76b553a0b86fc2  gcc/testsuite/c-c++-common/goacc/default-4.c
+ 9beacbe9e9851f3ce9072a448d99e521  gcc/testsuite/c-c++-common/goacc/default-5.c
  791c407a38c6166f9b89d51f465e88af  gcc/testsuite/c-c++-common/goacc/deviceptr-1.c
  1e678e7e2c101c79192a640cd4d2e407  gcc/testsuite/c-c++-common/goacc/deviceptr-2.c
  b2061cbe48e6c36be03418229b1e6c1c  gcc/testsuite/c-c++-common/goacc/deviceptr-3.c
  6645aa455bee82b9f65beedd82a8f916  gcc/testsuite/c-c++-common/goacc/executeables-1.c
  14f1d49aa2ebd030b7b411a4d94e4f5e  gcc/testsuite/c-c++-common/goacc/host_data-1.c
! d77fd6ebff8fb0a959f82a4fb9de022e  gcc/testsuite/c-c++-common/goacc/host_data-2.c
  f5740839231c8e8304cea75d03b7fb0b  gcc/testsuite/c-c++-common/goacc/if-clause-1.c
  da99712686fe793685ab6055e56491ed  gcc/testsuite/c-c++-common/goacc/if-clause-2.c
  3562d541b55248dec549e58714404d21  gcc/testsuite/c-c++-common/goacc/kernels-1.c
*************** e2a9cbb19ee091825a6c272813098029  gcc/te
*** 8471,8490 ****
  2b543c4509b9dd121b87fc6367d41f78  gcc/testsuite/c-c++-common/goacc/kernels-alias-ipa-pta-4.c
  f1bd4ad94cca5ee4c2501e86381ac528  gcc/testsuite/c-c++-common/goacc/kernels-alias-ipa-pta.c
  3548c299b20385f9ccc0cfcbf3d7d5cd  gcc/testsuite/c-c++-common/goacc/kernels-alias.c
! d46ae51431d895adda460f2243a5374f  gcc/testsuite/c-c++-common/goacc/kernels-counter-vars-function-scope.c
  af37b31b976b1c0c41e3db72c626d179  gcc/testsuite/c-c++-common/goacc/kernels-default-2.c
  375d0db26deebb908509391d770e8db4  gcc/testsuite/c-c++-common/goacc/kernels-default.c
! 88c3bc2854527d94a48a001b535e0096  gcc/testsuite/c-c++-common/goacc/kernels-double-reduction-n.c
! e63e5c1e79eebb523d6b2f843260487b  gcc/testsuite/c-c++-common/goacc/kernels-double-reduction.c
! a0b53d7bb21cf1679507dc3823ca1ff3  gcc/testsuite/c-c++-common/goacc/kernels-loop-2.c
! c147d5c2ab8ed53067dd908510655afc  gcc/testsuite/c-c++-common/goacc/kernels-loop-3.c
! 07e612656e90334199ddb615159a6da0  gcc/testsuite/c-c++-common/goacc/kernels-loop-g.c
! 3dda9c3a0297b6bd9bd98db8cb596d3b  gcc/testsuite/c-c++-common/goacc/kernels-loop-mod-not-zero.c
! a3224bcaa47cc445434ba4cd1cad12de  gcc/testsuite/c-c++-common/goacc/kernels-loop-n.c
! 78747842c0f790c2f7c81fd126c6ce5d  gcc/testsuite/c-c++-common/goacc/kernels-loop-nest.c
! 8fb99989500afa6042d07013326bf178  gcc/testsuite/c-c++-common/goacc/kernels-loop.c
! 9b9a7ff250d5e41aaba4307ac7ef584e  gcc/testsuite/c-c++-common/goacc/kernels-one-counter-var.c
! 9db27e25b93e5d28c5a9951ed8efd32d  gcc/testsuite/c-c++-common/goacc/kernels-reduction.c
  45793754c2adf529b0a269c466ed2761  gcc/testsuite/c-c++-common/goacc/loop-1.c
  95e8c72a7f47c8b9d60c75ac73cb6d9b  gcc/testsuite/c-c++-common/goacc/loop-2-kernels.c
  432fb1b05014e29244b548b90842aa94  gcc/testsuite/c-c++-common/goacc/loop-2-parallel.c
--- 8680,8699 ----
  2b543c4509b9dd121b87fc6367d41f78  gcc/testsuite/c-c++-common/goacc/kernels-alias-ipa-pta-4.c
  f1bd4ad94cca5ee4c2501e86381ac528  gcc/testsuite/c-c++-common/goacc/kernels-alias-ipa-pta.c
  3548c299b20385f9ccc0cfcbf3d7d5cd  gcc/testsuite/c-c++-common/goacc/kernels-alias.c
! dc5878971e2c2137e5f435ee5228012f  gcc/testsuite/c-c++-common/goacc/kernels-counter-vars-function-scope.c
  af37b31b976b1c0c41e3db72c626d179  gcc/testsuite/c-c++-common/goacc/kernels-default-2.c
  375d0db26deebb908509391d770e8db4  gcc/testsuite/c-c++-common/goacc/kernels-default.c
! 0381ac05cb66d5fdffabb91b910503f7  gcc/testsuite/c-c++-common/goacc/kernels-double-reduction-n.c
! f1243df37be992d8fb46d343cf0ce314  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
! ae42fe022b27230c2bd27dfbc93e5b37  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
! ad44e931e1431a554772eeb05bb98d85  gcc/testsuite/c-c++-common/goacc/kernels-reduction.c
  45793754c2adf529b0a269c466ed2761  gcc/testsuite/c-c++-common/goacc/loop-1.c
  95e8c72a7f47c8b9d60c75ac73cb6d9b  gcc/testsuite/c-c++-common/goacc/loop-2-kernels.c
  432fb1b05014e29244b548b90842aa94  gcc/testsuite/c-c++-common/goacc/loop-2-parallel.c
*************** c433ed40537345c26ace448f210a1463  gcc/te
*** 8497,8503 ****
  8670ca5eb3bccd05d00cc1698ea1ff01  gcc/testsuite/c-c++-common/goacc/nesting-1.c
  1bbc8c8f2872cd7f133d840900d4d0d1  gcc/testsuite/c-c++-common/goacc/nesting-data-1.c
  5edfd501d11a61e005f7ad74e86b8631  gcc/testsuite/c-c++-common/goacc/nesting-fail-1.c
! d6dd0697ba90e2a27df67513b9b744b5  gcc/testsuite/c-c++-common/goacc/parallel-1.c
  abf2f06821ef83fd68a177bc03b2f19d  gcc/testsuite/c-c++-common/goacc/pcopy.c
  24874d772e438b20ebcc2ae6aede4234  gcc/testsuite/c-c++-common/goacc/pcopyin.c
  1d90abbfb13aaf9003e6882afdf09ae2  gcc/testsuite/c-c++-common/goacc/pcopyout.c
--- 8706,8714 ----
  8670ca5eb3bccd05d00cc1698ea1ff01  gcc/testsuite/c-c++-common/goacc/nesting-1.c
  1bbc8c8f2872cd7f133d840900d4d0d1  gcc/testsuite/c-c++-common/goacc/nesting-data-1.c
  5edfd501d11a61e005f7ad74e86b8631  gcc/testsuite/c-c++-common/goacc/nesting-fail-1.c
! 8c7a33093e4b8a8b716fde5f62882b6a  gcc/testsuite/c-c++-common/goacc/parallel-1.c
! 1994a28c1697281b5e4019f4e2bea2c8  gcc/testsuite/c-c++-common/goacc/parallel-dims-1.c
! ac7ad09e55c590bef58c1ff5ce565a72  gcc/testsuite/c-c++-common/goacc/parallel-dims-2.c
  abf2f06821ef83fd68a177bc03b2f19d  gcc/testsuite/c-c++-common/goacc/pcopy.c
  24874d772e438b20ebcc2ae6aede4234  gcc/testsuite/c-c++-common/goacc/pcopyin.c
  1d90abbfb13aaf9003e6882afdf09ae2  gcc/testsuite/c-c++-common/goacc/pcopyout.c
*************** e01bc16654eb70269f569e503d5a0905  gcc/te
*** 8505,8510 ****
--- 8716,8722 ----
  8813fa952a39d7fcd8c338a20bbf1a30  gcc/testsuite/c-c++-common/goacc/pr69916.c
  8e1c43f24e2ef7b983cdb547f2f410a7  gcc/testsuite/c-c++-common/goacc/pr70688.c
  091ae7cbab8ef2ea646aa972e71bd3fe  gcc/testsuite/c-c++-common/goacc/pr79428-1.c
+ d398b6a88925d39ad550f7a21e489047  gcc/testsuite/c-c++-common/goacc/pr84217.c
  77856d506d7addd81bc68f380358627f  gcc/testsuite/c-c++-common/goacc/pragma_context.c
  d76b8ed3ade6794cf7f243b5df9b41cb  gcc/testsuite/c-c++-common/goacc/present-1.c
  4331391e656c6687b80ca7ee79b21e73  gcc/testsuite/c-c++-common/goacc/reduction-1.c
*************** d76b8ed3ade6794cf7f243b5df9b41cb  gcc/te
*** 8514,8523 ****
  87d6fc53480ffc48b9bcc5dbec279543  gcc/testsuite/c-c++-common/goacc/reduction-5.c
  257a77aee12af0f943094c1039f93f8b  gcc/testsuite/c-c++-common/goacc/reduction-6.c
  56a2b01609c03c4779369ba70942e140  gcc/testsuite/c-c++-common/goacc/reduction-promotions.c
! 0bd62657396262ef45b34f6c10086ce2  gcc/testsuite/c-c++-common/goacc/routine-1.c
  44e375e77afcb7cef15cc49bdc9479e8  gcc/testsuite/c-c++-common/goacc/routine-2.c
! fc4bb4965b37102e00a6e49ea769b66d  gcc/testsuite/c-c++-common/goacc/routine-3.c
! 141eac360bff1210ab8c2b192a33a455  gcc/testsuite/c-c++-common/goacc/routine-4.c
  dcee40ba28568f3ad302624ac23e8332  gcc/testsuite/c-c++-common/goacc/routine-5.c
  71ff1b7541d8c733624f242976e1b747  gcc/testsuite/c-c++-common/goacc/sb-1.c
  1dde0d0d526302b12c8c22cfe846ddc1  gcc/testsuite/c-c++-common/goacc/sb-2.c
--- 8726,8735 ----
  87d6fc53480ffc48b9bcc5dbec279543  gcc/testsuite/c-c++-common/goacc/reduction-5.c
  257a77aee12af0f943094c1039f93f8b  gcc/testsuite/c-c++-common/goacc/reduction-6.c
  56a2b01609c03c4779369ba70942e140  gcc/testsuite/c-c++-common/goacc/reduction-promotions.c
! 31851b706d47bb66e2b8de98b7f8934c  gcc/testsuite/c-c++-common/goacc/routine-1.c
  44e375e77afcb7cef15cc49bdc9479e8  gcc/testsuite/c-c++-common/goacc/routine-2.c
! 52eb307151a037a2951729fff9245d95  gcc/testsuite/c-c++-common/goacc/routine-3.c
! 4a5db6ea363ecf20dc19dd54bac7f2b6  gcc/testsuite/c-c++-common/goacc/routine-4.c
  dcee40ba28568f3ad302624ac23e8332  gcc/testsuite/c-c++-common/goacc/routine-5.c
  71ff1b7541d8c733624f242976e1b747  gcc/testsuite/c-c++-common/goacc/sb-1.c
  1dde0d0d526302b12c8c22cfe846ddc1  gcc/testsuite/c-c++-common/goacc/sb-2.c
*************** dcee40ba28568f3ad302624ac23e8332  gcc/te
*** 8525,8531 ****
  5109f14e1fb05cda829d216ab6c5a02f  gcc/testsuite/c-c++-common/goacc/tile-2.c
  a140f15e3d552040b8f3c805cd73f542  gcc/testsuite/c-c++-common/goacc/tile.c
  4f12915b0be66791d61798f30094289c  gcc/testsuite/c-c++-common/goacc/uninit-copy-clause.c
! cad3ad70df14aa5289f8566ef1437416  gcc/testsuite/c-c++-common/goacc/uninit-dim-clause.c
  02aac19701241a7e121ea309b5db974f  gcc/testsuite/c-c++-common/goacc/uninit-firstprivate-clause.c
  c277c821e8dab2b986f74cffbac26f2e  gcc/testsuite/c-c++-common/goacc/uninit-if-clause.c
  00b3a6624d2c759ac9f1d1531ee37791  gcc/testsuite/c-c++-common/goacc/uninit-use-device-clause.c
--- 8737,8743 ----
  5109f14e1fb05cda829d216ab6c5a02f  gcc/testsuite/c-c++-common/goacc/tile-2.c
  a140f15e3d552040b8f3c805cd73f542  gcc/testsuite/c-c++-common/goacc/tile.c
  4f12915b0be66791d61798f30094289c  gcc/testsuite/c-c++-common/goacc/uninit-copy-clause.c
! 24f0eb8713a279c75419581844e98bd8  gcc/testsuite/c-c++-common/goacc/uninit-dim-clause.c
  02aac19701241a7e121ea309b5db974f  gcc/testsuite/c-c++-common/goacc/uninit-firstprivate-clause.c
  c277c821e8dab2b986f74cffbac26f2e  gcc/testsuite/c-c++-common/goacc/uninit-if-clause.c
  00b3a6624d2c759ac9f1d1531ee37791  gcc/testsuite/c-c++-common/goacc/uninit-use-device-clause.c
*************** d8d78230b698b1427515ae7b473eaf5f  gcc/te
*** 8536,8544 ****
  f2eeacd8e01fce5f98daff2393115250  gcc/testsuite/c-c++-common/gomp/Wparentheses-4.c
  450622eac3970da63e43723374af5da7  gcc/testsuite/c-c++-common/gomp/atomic-1.c
  ca9adc82afaa4bfe9afab3d0c83d5427  gcc/testsuite/c-c++-common/gomp/atomic-10.c
! d7e5d5f2dcbf11d987a3540e86c5e6a3  gcc/testsuite/c-c++-common/gomp/atomic-12.c
! 1a302ad3e6eee4a495f344a91960d5e1  gcc/testsuite/c-c++-common/gomp/atomic-13.c
! 7d455dd894d839b741d62a9e681faf28  gcc/testsuite/c-c++-common/gomp/atomic-14.c
  ea35c8898a66194ddfd4052e95c9b78c  gcc/testsuite/c-c++-common/gomp/atomic-15.c
  0129f6c1e124f845d12d0e1105a1272a  gcc/testsuite/c-c++-common/gomp/atomic-16.c
  02a1665574401bc7491c754880894569  gcc/testsuite/c-c++-common/gomp/atomic-2.c
--- 8748,8756 ----
  f2eeacd8e01fce5f98daff2393115250  gcc/testsuite/c-c++-common/gomp/Wparentheses-4.c
  450622eac3970da63e43723374af5da7  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
! 9234fa00d24e1c055ac2a9759e31f513  gcc/testsuite/c-c++-common/gomp/atomic-13.c
! 23b8ae462d6ee9320e3a0721f73e3c9f  gcc/testsuite/c-c++-common/gomp/atomic-14.c
  ea35c8898a66194ddfd4052e95c9b78c  gcc/testsuite/c-c++-common/gomp/atomic-15.c
  0129f6c1e124f845d12d0e1105a1272a  gcc/testsuite/c-c++-common/gomp/atomic-16.c
  02a1665574401bc7491c754880894569  gcc/testsuite/c-c++-common/gomp/atomic-2.c
*************** defbe62797ed1363de67a60914b29aa7  gcc/te
*** 8601,8607 ****
  5a77df631a4cbd5ca518a8d11dea1c5c  gcc/testsuite/c-c++-common/gomp/pr61486-1.c
  c27da319ecbe03bbb4e6920e22fc86c0  gcc/testsuite/c-c++-common/gomp/pr61486-2.c
  2b6ae32069c2763c6ff2b173604cf38c  gcc/testsuite/c-c++-common/gomp/pr63249.c
! 848d5e8d3b64fa407747de67b93cd212  gcc/testsuite/c-c++-common/gomp/pr63326.c
  8c7b7ac1e0fde7a3111b8d330d0914d2  gcc/testsuite/c-c++-common/gomp/pr63328.c
  30dce45d7575c95b65d5773d81737750  gcc/testsuite/c-c++-common/gomp/pr64769.c
  9847fa21aef2357ee2b4d8dcdb931ce8  gcc/testsuite/c-c++-common/gomp/pr66429.c
--- 8813,8819 ----
  5a77df631a4cbd5ca518a8d11dea1c5c  gcc/testsuite/c-c++-common/gomp/pr61486-1.c
  c27da319ecbe03bbb4e6920e22fc86c0  gcc/testsuite/c-c++-common/gomp/pr61486-2.c
  2b6ae32069c2763c6ff2b173604cf38c  gcc/testsuite/c-c++-common/gomp/pr63249.c
! 62348e7da5ae6308200d9dbbfa1c187e  gcc/testsuite/c-c++-common/gomp/pr63326.c
  8c7b7ac1e0fde7a3111b8d330d0914d2  gcc/testsuite/c-c++-common/gomp/pr63328.c
  30dce45d7575c95b65d5773d81737750  gcc/testsuite/c-c++-common/gomp/pr64769.c
  9847fa21aef2357ee2b4d8dcdb931ce8  gcc/testsuite/c-c++-common/gomp/pr66429.c
*************** d4234712e8b6ad1706a38530b6e6d890  gcc/te
*** 8620,8625 ****
--- 8832,8842 ----
  aef2bdc20ca665badeb6ae399bf1d7e0  gcc/testsuite/c-c++-common/gomp/pr79431.c
  a1d1201800784f60e84899ae25155f9b  gcc/testsuite/c-c++-common/gomp/pr79512.c
  61e2ab40aa3cda7576749f11b6037c39  gcc/testsuite/c-c++-common/gomp/pr81006.c
+ 7fcacaaefa9f2c7cfe81a0b52e82cebc  gcc/testsuite/c-c++-common/gomp/pr81887.c
+ f518663bb6d3fa214257a2306172d690  gcc/testsuite/c-c++-common/gomp/pr83977-1.c
+ 2f7e224eea72eb9533c2b8dc9b23926c  gcc/testsuite/c-c++-common/gomp/pr83977-2.c
+ 5ed693b15605c7a6113e875ba1444a17  gcc/testsuite/c-c++-common/gomp/pr83977-3.c
+ 5c98b968b8b8fa3dcda75ece1f760d12  gcc/testsuite/c-c++-common/gomp/pr84341.c
  5d522e2f1f7455bc45f6c1f230d5a5b0  gcc/testsuite/c-c++-common/gomp/priority-1.c
  1dc7bbbafb91e179ac43fa3959ab125f  gcc/testsuite/c-c++-common/gomp/reduction-1.c
  8af1ef16f27f56d5d687ed958b671d57  gcc/testsuite/c-c++-common/gomp/schedule-1.c
*************** a73d7c3b3886856e6621c6e5854c3333  gcc/te
*** 8629,8639 ****
  c7cb982e272572b3d42948b23c3c6229  gcc/testsuite/c-c++-common/gomp/simd1.c
  3ffb158d7db65691583ca6ff7330457a  gcc/testsuite/c-c++-common/gomp/simd2.c
  117ad281591bd59a2efbf98a38c512cc  gcc/testsuite/c-c++-common/gomp/simd3.c
! bb04771aecf8ae8e4b1ba21288614152  gcc/testsuite/c-c++-common/gomp/simd4.c
  68f58a04efd13ae6f69dbef6e23cec6d  gcc/testsuite/c-c++-common/gomp/simd5.c
  dee5af747bd0ddc9371dcb5f4acebedc  gcc/testsuite/c-c++-common/gomp/simd6.c
  4763c84e6c50d72fa161297e3be84c0c  gcc/testsuite/c-c++-common/gomp/single1.c
! 61d98a13d45cbac048b37277817470a0  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
--- 8846,8856 ----
  c7cb982e272572b3d42948b23c3c6229  gcc/testsuite/c-c++-common/gomp/simd1.c
  3ffb158d7db65691583ca6ff7330457a  gcc/testsuite/c-c++-common/gomp/simd2.c
  117ad281591bd59a2efbf98a38c512cc  gcc/testsuite/c-c++-common/gomp/simd3.c
! 8099372a07c173c3bcba9c5663e42ae8  gcc/testsuite/c-c++-common/gomp/simd4.c
  68f58a04efd13ae6f69dbef6e23cec6d  gcc/testsuite/c-c++-common/gomp/simd5.c
  dee5af747bd0ddc9371dcb5f4acebedc  gcc/testsuite/c-c++-common/gomp/simd6.c
  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
*************** ed31996e3dda298f798652d482bc4224  gcc/te
*** 8645,8663 ****
  d4e3dc1aa87409198ff78d00e3448b7a  gcc/testsuite/c-c++-common/int128-2.c
  de3dd2daeb344b4e1fbcc4551d6441bc  gcc/testsuite/c-c++-common/int128-types-1.c
  37e6e8dd79b2c2f2bb37230ea9a57ccd  gcc/testsuite/c-c++-common/memset-array.c
  713fea9d9874d11292e4a767484540db  gcc/testsuite/c-c++-common/missing-header-1.c
  a26cac5f6c3bf19d27815db147fb6b76  gcc/testsuite/c-c++-common/missing-header-2.c
  28fa0dc109db1913bd5f6088442c8b67  gcc/testsuite/c-c++-common/missing-header-3.c
  22d0401be580cc821a107ff58ba0adf4  gcc/testsuite/c-c++-common/missing-header-4.c
  01e056c68731cbfbfaba142a85c7d93a  gcc/testsuite/c-c++-common/nonnull-1.c
  c173ff464a71a0767592505ad9027cfe  gcc/testsuite/c-c++-common/nonnull-2.c
  b5ecd0643340dd5cbd091366ced73bd5  gcc/testsuite/c-c++-common/nonnull-3.c
  a7f92f1077c23eb293a388ad0c9418d7  gcc/testsuite/c-c++-common/opaque-vector.c
  f5dce8e27cfb8a6bfffe57596fecb796  gcc/testsuite/c-c++-common/pr19807-1.c
! dda3b229732eb4779648a0fa1e75b2ed  gcc/testsuite/c-c++-common/pr20000.c
  84cc81e8de7fc76ea0c59bd53658e880  gcc/testsuite/c-c++-common/pr20318.c
  f0489cb54e76bdf3ff2834cf07ec2162  gcc/testsuite/c-c++-common/pr27336.c
! 03893c0c4f66153aa898b08886692eb7  gcc/testsuite/c-c++-common/pr28656.c
  255e51279bc61c31135265871f548ae6  gcc/testsuite/c-c++-common/pr30020.c
  b26d0787722b770e1bedb29da6ca65db  gcc/testsuite/c-c++-common/pr33193.c
  19a0263d13d2e33c9a7e8aeaa26cf684  gcc/testsuite/c-c++-common/pr33763.c
--- 8862,8885 ----
  d4e3dc1aa87409198ff78d00e3448b7a  gcc/testsuite/c-c++-common/int128-2.c
  de3dd2daeb344b4e1fbcc4551d6441bc  gcc/testsuite/c-c++-common/int128-types-1.c
  37e6e8dd79b2c2f2bb37230ea9a57ccd  gcc/testsuite/c-c++-common/memset-array.c
+ 16e78eb051bc8429084bad4220c47a8c  gcc/testsuite/c-c++-common/missing-close-symbol.c
  713fea9d9874d11292e4a767484540db  gcc/testsuite/c-c++-common/missing-header-1.c
  a26cac5f6c3bf19d27815db147fb6b76  gcc/testsuite/c-c++-common/missing-header-2.c
  28fa0dc109db1913bd5f6088442c8b67  gcc/testsuite/c-c++-common/missing-header-3.c
  22d0401be580cc821a107ff58ba0adf4  gcc/testsuite/c-c++-common/missing-header-4.c
+ 43b0969da91f5c38b8fb0ee512205d1f  gcc/testsuite/c-c++-common/missing-symbol.c
  01e056c68731cbfbfaba142a85c7d93a  gcc/testsuite/c-c++-common/nonnull-1.c
  c173ff464a71a0767592505ad9027cfe  gcc/testsuite/c-c++-common/nonnull-2.c
  b5ecd0643340dd5cbd091366ced73bd5  gcc/testsuite/c-c++-common/nonnull-3.c
  a7f92f1077c23eb293a388ad0c9418d7  gcc/testsuite/c-c++-common/opaque-vector.c
+ 75a19a56a03735421b7af35748b76234  gcc/testsuite/c-c++-common/patchable_function_entry-decl.c
+ 419f388b60a6f4ca5e1d1d62e08e44fc  gcc/testsuite/c-c++-common/patchable_function_entry-default.c
+ 7549aebc54ae14e393e8ea402a6642cb  gcc/testsuite/c-c++-common/patchable_function_entry-definition.c
  f5dce8e27cfb8a6bfffe57596fecb796  gcc/testsuite/c-c++-common/pr19807-1.c
! a369d890b3c8a2c5aefbfa5a42a6d9f8  gcc/testsuite/c-c++-common/pr20000.c
  84cc81e8de7fc76ea0c59bd53658e880  gcc/testsuite/c-c++-common/pr20318.c
  f0489cb54e76bdf3ff2834cf07ec2162  gcc/testsuite/c-c++-common/pr27336.c
! 925a1a843ad1e0d85ac747d8e0cedf62  gcc/testsuite/c-c++-common/pr28656.c
  255e51279bc61c31135265871f548ae6  gcc/testsuite/c-c++-common/pr30020.c
  b26d0787722b770e1bedb29da6ca65db  gcc/testsuite/c-c++-common/pr33193.c
  19a0263d13d2e33c9a7e8aeaa26cf684  gcc/testsuite/c-c++-common/pr33763.c
*************** a35a58b3b493f052b0bf4ba74eefead5  gcc/te
*** 8668,8689 ****
  34cf6e3a3ee13163cf912fe7228fe32f  gcc/testsuite/c-c++-common/pr36282-2.c
  3066c34876746e18bc19dfa90edf3930  gcc/testsuite/c-c++-common/pr36282-3.c
  af25df4aa640eae33159416614e7be0e  gcc/testsuite/c-c++-common/pr36282-4.c
! b44f1a2b8f8186510fb3c16515aa210b  gcc/testsuite/c-c++-common/pr36513-2.c
! b7b47baf0eefc44ea18b3fd4f3ec1f7a  gcc/testsuite/c-c++-common/pr36513.c
  2d231290c51129fd7985cf8d86b66bd3  gcc/testsuite/c-c++-common/pr37743.c
! 2c3af839412250d33eb646eb6b2fae8f  gcc/testsuite/c-c++-common/pr41779.c
  26c78741b77cfef13280be97946c1113  gcc/testsuite/c-c++-common/pr41935.c
  87edf7a633ed33acea1114b550edc33b  gcc/testsuite/c-c++-common/pr42674.c
! ea15a33a5e79d19b579f6c3729ecc73f  gcc/testsuite/c-c++-common/pr43395.c
! 8dbc3891adbb8c401bc580982af3d5d7  gcc/testsuite/c-c++-common/pr43690.c
  5ed184bdc44bd7286743fe315d9e21d5  gcc/testsuite/c-c++-common/pr43772.c
  120b592aa97ef9bb93a55a83c6706437  gcc/testsuite/c-c++-common/pr43942.c
  aadf03d86632dc2c5d8b990a20395ac4  gcc/testsuite/c-c++-common/pr44832.c
  6fded49b3b911303ba8ed16b1c3d1b79  gcc/testsuite/c-c++-common/pr46562-2.c
  d8239263162d96344888c161406c0381  gcc/testsuite/c-c++-common/pr46562.c
  46691ad64c68f1639445378b6e85f4ce  gcc/testsuite/c-c++-common/pr48418.c
! f363889e6422d340ecef47b2311ddbae  gcc/testsuite/c-c++-common/pr49706-2.c
! 77bc01ca07210d9ace2ff2fa3f4f4a21  gcc/testsuite/c-c++-common/pr49706.c
  1aadfcf1bc4a0abbcbd275cc5c109a2d  gcc/testsuite/c-c++-common/pr50459-2.c
  90597a18edc232eefe8c41031ec9f42c  gcc/testsuite/c-c++-common/pr50459.c
  7dcec6e8a29cd24d961bfcb5fe4112d6  gcc/testsuite/c-c++-common/pr51294.c
--- 8890,8912 ----
  34cf6e3a3ee13163cf912fe7228fe32f  gcc/testsuite/c-c++-common/pr36282-2.c
  3066c34876746e18bc19dfa90edf3930  gcc/testsuite/c-c++-common/pr36282-3.c
  af25df4aa640eae33159416614e7be0e  gcc/testsuite/c-c++-common/pr36282-4.c
! 999859dc0856f32f0ffec2abd7a7dcc3  gcc/testsuite/c-c++-common/pr36513-2.c
! 861827b51b87f66f3b263d984a144d0c  gcc/testsuite/c-c++-common/pr36513.c
  2d231290c51129fd7985cf8d86b66bd3  gcc/testsuite/c-c++-common/pr37743.c
! 1c3d407cc2df0a108d456c948fef0915  gcc/testsuite/c-c++-common/pr41779.c
  26c78741b77cfef13280be97946c1113  gcc/testsuite/c-c++-common/pr41935.c
  87edf7a633ed33acea1114b550edc33b  gcc/testsuite/c-c++-common/pr42674.c
! 92b83a1638ea2a68a315e37e1f5d5dd0  gcc/testsuite/c-c++-common/pr43395.c
! bfa72c1cf31152ed06d824cd89601afe  gcc/testsuite/c-c++-common/pr43690.c
  5ed184bdc44bd7286743fe315d9e21d5  gcc/testsuite/c-c++-common/pr43772.c
  120b592aa97ef9bb93a55a83c6706437  gcc/testsuite/c-c++-common/pr43942.c
+ 1ffddab3c0d7ca0a4469f3cd5842a859  gcc/testsuite/c-c++-common/pr44515.c
  aadf03d86632dc2c5d8b990a20395ac4  gcc/testsuite/c-c++-common/pr44832.c
  6fded49b3b911303ba8ed16b1c3d1b79  gcc/testsuite/c-c++-common/pr46562-2.c
  d8239263162d96344888c161406c0381  gcc/testsuite/c-c++-common/pr46562.c
  46691ad64c68f1639445378b6e85f4ce  gcc/testsuite/c-c++-common/pr48418.c
! 351f6d41b6b48bd87e1a012a18ace4be  gcc/testsuite/c-c++-common/pr49706-2.c
! 87900ecbe4cff94e78f0edc1fe288e56  gcc/testsuite/c-c++-common/pr49706.c
  1aadfcf1bc4a0abbcbd275cc5c109a2d  gcc/testsuite/c-c++-common/pr50459-2.c
  90597a18edc232eefe8c41031ec9f42c  gcc/testsuite/c-c++-common/pr50459.c
  7dcec6e8a29cd24d961bfcb5fe4112d6  gcc/testsuite/c-c++-common/pr51294.c
*************** f363889e6422d340ecef47b2311ddbae  gcc/te
*** 8691,8699 ****
  18b60e1f921ff729a499063148e1ac35  gcc/testsuite/c-c++-common/pr51768.c
  19c5c8c6c4a09bd9d296a28e8078a301  gcc/testsuite/c-c++-common/pr52177.c
  e9ab7e8194d7254751245044f83dc8be  gcc/testsuite/c-c++-common/pr52181.c
  2fca24cd74390d29df3e15f43b52216b  gcc/testsuite/c-c++-common/pr53633.c
  562b5a3674683ddc3dcd8273868470ff  gcc/testsuite/c-c++-common/pr53874.c
! caf425d291c32e42708e1312d4b4b7c8  gcc/testsuite/c-c++-common/pr54486.c
  6012f2d96fa48601b12db2a55f910316  gcc/testsuite/c-c++-common/pr54988.c
  f1d943c48a18ca5c666d26543205d144  gcc/testsuite/c-c++-common/pr55619.c
  3db0ead60e4a73b927872aff202102be  gcc/testsuite/c-c++-common/pr55771.c
--- 8914,8923 ----
  18b60e1f921ff729a499063148e1ac35  gcc/testsuite/c-c++-common/pr51768.c
  19c5c8c6c4a09bd9d296a28e8078a301  gcc/testsuite/c-c++-common/pr52177.c
  e9ab7e8194d7254751245044f83dc8be  gcc/testsuite/c-c++-common/pr52181.c
+ 9cecc063b60fd542510c334a50694aed  gcc/testsuite/c-c++-common/pr53037-5.c
  2fca24cd74390d29df3e15f43b52216b  gcc/testsuite/c-c++-common/pr53633.c
  562b5a3674683ddc3dcd8273868470ff  gcc/testsuite/c-c++-common/pr53874.c
! 6b9b24f3111a851cf90729b67b060a3c  gcc/testsuite/c-c++-common/pr54486.c
  6012f2d96fa48601b12db2a55f910316  gcc/testsuite/c-c++-common/pr54988.c
  f1d943c48a18ca5c666d26543205d144  gcc/testsuite/c-c++-common/pr55619.c
  3db0ead60e4a73b927872aff202102be  gcc/testsuite/c-c++-common/pr55771.c
*************** f1d943c48a18ca5c666d26543205d144  gcc/te
*** 8701,8706 ****
--- 8925,8934 ----
  9afa40540f5027b00cbd573193c0f4f0  gcc/testsuite/c-c++-common/pr56493.c
  a83a3dfeb8c2e989fe3570117b3eacd4  gcc/testsuite/c-c++-common/pr56566.c
  e257567d3e45108aa92c38c2756f8082  gcc/testsuite/c-c++-common/pr56607.c
+ 93039c44a01737b0dc6ca34eeea375fc  gcc/testsuite/c-c++-common/pr57371-1.c
+ 8c2934a57bb4816da09dfa097c9df702  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
  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
*************** b17181f1ae9ea03f7f0ca44c69ace2b6  gcc/te
*** 8718,8724 ****
  f5d1a9e6fab6db3e1bec0de1d868fccf  gcc/testsuite/c-c++-common/pr60226.c
  cd7e50f03dc613081f0f08f682d73a23  gcc/testsuite/c-c++-common/pr60439.c
  ab61337b42c3bf4f5a41d815a9fcd323  gcc/testsuite/c-c++-common/pr60689.c
! 22d7164ea0454bc26459b5ef2bc5f926  gcc/testsuite/c-c++-common/pr61405.c
  b46464ade1af3722279c73b6dc5799e7  gcc/testsuite/c-c++-common/pr61534-1.c
  3db5d6e67944ed357e5152e1f1d72db0  gcc/testsuite/c-c++-common/pr61553.c
  271daf926eb73a35b2dec755336f46b6  gcc/testsuite/c-c++-common/pr62199-2.c
--- 8946,8952 ----
  f5d1a9e6fab6db3e1bec0de1d868fccf  gcc/testsuite/c-c++-common/pr60226.c
  cd7e50f03dc613081f0f08f682d73a23  gcc/testsuite/c-c++-common/pr60439.c
  ab61337b42c3bf4f5a41d815a9fcd323  gcc/testsuite/c-c++-common/pr60689.c
! 587f3a26af8ec426a48dd0a7f701df98  gcc/testsuite/c-c++-common/pr61405.c
  b46464ade1af3722279c73b6dc5799e7  gcc/testsuite/c-c++-common/pr61534-1.c
  3db5d6e67944ed357e5152e1f1d72db0  gcc/testsuite/c-c++-common/pr61553.c
  271daf926eb73a35b2dec755336f46b6  gcc/testsuite/c-c++-common/pr62199-2.c
*************** b46464ade1af3722279c73b6dc5799e7  gcc/te
*** 8726,8732 ****
  26a34d68da76c8eeb30d35a888b1d46c  gcc/testsuite/c-c++-common/pr63764-1.c
  e45c80d629228a224b619758f4298be9  gcc/testsuite/c-c++-common/pr63764-2.c
  ad768f900ccd45a1c88b7d0f9d0a7317  gcc/testsuite/c-c++-common/pr65040.c
! bdd2f53e6604f7a83c21f8709ce5ecac  gcc/testsuite/c-c++-common/pr65120.c
  2cd83f4e65f35f2fe2cc8fc9a3fd8394  gcc/testsuite/c-c++-common/pr65556.c
  e87e517ca2da472a85acb598c8be252a  gcc/testsuite/c-c++-common/pr65830.c
  a9a485258f83c69df2db1edbc1b8da25  gcc/testsuite/c-c++-common/pr66208.c
--- 8954,8960 ----
  26a34d68da76c8eeb30d35a888b1d46c  gcc/testsuite/c-c++-common/pr63764-1.c
  e45c80d629228a224b619758f4298be9  gcc/testsuite/c-c++-common/pr63764-2.c
  ad768f900ccd45a1c88b7d0f9d0a7317  gcc/testsuite/c-c++-common/pr65040.c
! 53e0beba2fc0ed51f72b8c45e804dfb3  gcc/testsuite/c-c++-common/pr65120.c
  2cd83f4e65f35f2fe2cc8fc9a3fd8394  gcc/testsuite/c-c++-common/pr65556.c
  e87e517ca2da472a85acb598c8be252a  gcc/testsuite/c-c++-common/pr65830.c
  a9a485258f83c69df2db1edbc1b8da25  gcc/testsuite/c-c++-common/pr66208.c
*************** e827ebe372e4239bd1ec76051f4882f1  gcc/te
*** 8735,8741 ****
  7399efb952d306383053d5e268f89c04  gcc/testsuite/c-c++-common/pr67653.c
  5454de0e9e08836d6657d0173e8874e8  gcc/testsuite/c-c++-common/pr68107.c
  dfd653501b778d81153304f2a3d6efbb  gcc/testsuite/c-c++-common/pr68582.c
! 589e7401424e64bda85ea44a6592b2ea  gcc/testsuite/c-c++-common/pr68657-1.c
  f8c480ba5c235c1fc398cf936ad92e5e  gcc/testsuite/c-c++-common/pr68657-2.c
  68bdf6dbe246bad1af4d32bc979a36dd  gcc/testsuite/c-c++-common/pr68657-3.c
  aee8f27dda45445c84990281a54fb657  gcc/testsuite/c-c++-common/pr68833-1.c
--- 8963,8969 ----
  7399efb952d306383053d5e268f89c04  gcc/testsuite/c-c++-common/pr67653.c
  5454de0e9e08836d6657d0173e8874e8  gcc/testsuite/c-c++-common/pr68107.c
  dfd653501b778d81153304f2a3d6efbb  gcc/testsuite/c-c++-common/pr68582.c
! 95f642fc06dfe4b461e01735b1815fa2  gcc/testsuite/c-c++-common/pr68657-1.c
  f8c480ba5c235c1fc398cf936ad92e5e  gcc/testsuite/c-c++-common/pr68657-2.c
  68bdf6dbe246bad1af4d32bc979a36dd  gcc/testsuite/c-c++-common/pr68657-3.c
  aee8f27dda45445c84990281a54fb657  gcc/testsuite/c-c++-common/pr68833-1.c
*************** dc7d9d40dac973e012fc8b7b6f54d784  gcc/te
*** 8759,8765 ****
  f4386df5fa5c32d56388c75bdf15c9d4  gcc/testsuite/c-c++-common/pr69797.c
  65bc4d5f65c8acc789b20b18a397a09c  gcc/testsuite/c-c++-common/pr70144-1.c
  0bb9d8ed56991f7a3858d98c907408a9  gcc/testsuite/c-c++-common/pr70144-2.c
! f5e5dd43d1a7da6d0ef4315447808bb8  gcc/testsuite/c-c++-common/pr70264.c
  25c6ea4844eb15010d49a3780fb6bb37  gcc/testsuite/c-c++-common/pr70297.c
  ccc164356d4817396e516749bf924ce8  gcc/testsuite/c-c++-common/pr70336.c
  ddcfc64c63208f870fb7e0fe0276319d  gcc/testsuite/c-c++-common/pr70651.c
--- 8987,8993 ----
  f4386df5fa5c32d56388c75bdf15c9d4  gcc/testsuite/c-c++-common/pr69797.c
  65bc4d5f65c8acc789b20b18a397a09c  gcc/testsuite/c-c++-common/pr70144-1.c
  0bb9d8ed56991f7a3858d98c907408a9  gcc/testsuite/c-c++-common/pr70144-2.c
! bfa8357ccbf9a46957ef3e053daf77fb  gcc/testsuite/c-c++-common/pr70264.c
  25c6ea4844eb15010d49a3780fb6bb37  gcc/testsuite/c-c++-common/pr70297.c
  ccc164356d4817396e516749bf924ce8  gcc/testsuite/c-c++-common/pr70336.c
  ddcfc64c63208f870fb7e0fe0276319d  gcc/testsuite/c-c++-common/pr70651.c
*************** ee387176acb2650d09f446c7722b79b9  gcc/te
*** 8779,8785 ****
  419f389745d95caa13ce51a02e5a2abf  gcc/testsuite/c-c++-common/pr80162-3.c
  23a387907d550f4d99b8e38b9154c710  gcc/testsuite/c-c++-common/pr81052.c
  29c7ff6eb5caca1dd6391410ce6c69e4  gcc/testsuite/c-c++-common/pr82112.c
! 21015038ab7179791a8c873570bdcb3c  gcc/testsuite/c-c++-common/pr83059.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
--- 9007,9020 ----
  419f389745d95caa13ce51a02e5a2abf  gcc/testsuite/c-c++-common/pr80162-3.c
  23a387907d550f4d99b8e38b9154c710  gcc/testsuite/c-c++-common/pr81052.c
  29c7ff6eb5caca1dd6391410ce6c69e4  gcc/testsuite/c-c++-common/pr82112.c
! 49fab2d699364fd497a4ea99d034dd39  gcc/testsuite/c-c++-common/pr82872.c
! 331f0a8981efa3c9d46048548df29cb7  gcc/testsuite/c-c++-common/pr83059.c
! bd3f72430a07d0b5e231d78def646e60  gcc/testsuite/c-c++-common/pr84293.c
! 0addab8483a2751fe42aeb39bb3e48eb  gcc/testsuite/c-c++-common/pr84293.h
! 9dba97555bca18ab93f6efcd421e0a52  gcc/testsuite/c-c++-common/pr84873.c
! 2ba643064634a79819ce4effedd1fdd3  gcc/testsuite/c-c++-common/pr84982.c
! 2f717264a94f69b645aabceb21aa58e5  gcc/testsuite/c-c++-common/pr84999.c
! f3cef6e9a9aa2cd42daabd8901f27dcd  gcc/testsuite/c-c++-common/pr85156.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
*************** a5a8317b861fa6a66f1e91e6067a3712  gcc/te
*** 8810,8816 ****
  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
! e5d07141a06e139e3b6dc67029bb182c  gcc/testsuite/c-c++-common/rotate-5.c
  bee589250233b6532ec2092706139b87  gcc/testsuite/c-c++-common/scal-to-vec1.c
  56185c5eccbe01ad46244faa1da60110  gcc/testsuite/c-c++-common/scal-to-vec2.c
  3c2fa8dfd083c62e12d99765cea7f5e6  gcc/testsuite/c-c++-common/simulate-thread/bitfields-1.c
--- 9045,9056 ----
  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
! 3ff26a577e7ac5b6a13c19b77733939d  gcc/testsuite/c-c++-common/rotate-7.c
! 00dd44fe0ccdd0863230695dfb0f07d4  gcc/testsuite/c-c++-common/rotate-7a.c
! bc1b21f1b1af26d6dde787d148061b03  gcc/testsuite/c-c++-common/rotate-8.c
  bee589250233b6532ec2092706139b87  gcc/testsuite/c-c++-common/scal-to-vec1.c
  56185c5eccbe01ad46244faa1da60110  gcc/testsuite/c-c++-common/scal-to-vec2.c
  3c2fa8dfd083c62e12d99765cea7f5e6  gcc/testsuite/c-c++-common/simulate-thread/bitfields-1.c
*************** bee589250233b6532ec2092706139b87  gcc/te
*** 8818,8823 ****
--- 9058,9064 ----
  adb50709ddcf8583700615ea9a6ffcdd  gcc/testsuite/c-c++-common/simulate-thread/bitfields-3.c
  9c19c1df6348e12b2ba128f16ed0297b  gcc/testsuite/c-c++-common/simulate-thread/bitfields-4.c
  44e124b6efbd861ac0aa2c9196131cd3  gcc/testsuite/c-c++-common/sizeof-array-argument.c
+ b5a0c58d0326714558e4f4da1d83973e  gcc/testsuite/c-c++-common/spellcheck-reserved.c
  993f3902900220d0ab605caf29f79d05  gcc/testsuite/c-c++-common/taskloop-1.c
  e3aa84ea02008121366d37e9c2eba817  gcc/testsuite/c-c++-common/tm/20100127.c
  b5356bca8211268199a255b3416bce8b  gcc/testsuite/c-c++-common/tm/20111206.c
*************** f99192805adee98751aaf370a2fc3af0  gcc/te
*** 8843,8852 ****
  76b4e04d7d40be0a96c7c1edf63449c0  gcc/testsuite/c-c++-common/tm/trxn-expr-2.c
  e6b8806ad0c5451ea3a2026279567203  gcc/testsuite/c-c++-common/tm/trxn-expr-3.c
  5fd633620b57d8f9514eddc68014f07c  gcc/testsuite/c-c++-common/tm/trxn-expr.c
! e1bf0eadfe0faa636f8ac8a16f0eeccd  gcc/testsuite/c-c++-common/tm/volatile-1.c
  7bca2da5972cb85245dd77174723b039  gcc/testsuite/c-c++-common/tm/wrap-1.c
  c1e50a7071b6999a8895b383c899231c  gcc/testsuite/c-c++-common/torture/aarch64-vect-lane-1.c
! 1edeec204eca5114343b0dd1c1b0540e  gcc/testsuite/c-c++-common/torture/aarch64-vect-lane-2.c
  44b670d0aec741e3503143d1fd81cfa5  gcc/testsuite/c-c++-common/torture/builtin-arith-overflow-1.c
  465154bc8a7a51c9299788073fd630ec  gcc/testsuite/c-c++-common/torture/builtin-arith-overflow-1.h
  070fcd634c88f93e465c85d1f83bd66a  gcc/testsuite/c-c++-common/torture/builtin-arith-overflow-10.c
--- 9084,9093 ----
  76b4e04d7d40be0a96c7c1edf63449c0  gcc/testsuite/c-c++-common/tm/trxn-expr-2.c
  e6b8806ad0c5451ea3a2026279567203  gcc/testsuite/c-c++-common/tm/trxn-expr-3.c
  5fd633620b57d8f9514eddc68014f07c  gcc/testsuite/c-c++-common/tm/trxn-expr.c
! 0be2a21ad8cc895096a63b0b41046768  gcc/testsuite/c-c++-common/tm/volatile-1.c
  7bca2da5972cb85245dd77174723b039  gcc/testsuite/c-c++-common/tm/wrap-1.c
  c1e50a7071b6999a8895b383c899231c  gcc/testsuite/c-c++-common/torture/aarch64-vect-lane-1.c
! e71883f492cebf8129478eb15f05b834  gcc/testsuite/c-c++-common/torture/aarch64-vect-lane-2.c
  44b670d0aec741e3503143d1fd81cfa5  gcc/testsuite/c-c++-common/torture/builtin-arith-overflow-1.c
  465154bc8a7a51c9299788073fd630ec  gcc/testsuite/c-c++-common/torture/builtin-arith-overflow-1.h
  070fcd634c88f93e465c85d1f83bd66a  gcc/testsuite/c-c++-common/torture/builtin-arith-overflow-10.c
*************** d6a230e22444b633319bb1e309e0641c  gcc/te
*** 8901,8907 ****
  9f1ae2fa915c5159ec134a1894ad5cf1  gcc/testsuite/c-c++-common/torture/pr42834.c
  675e839574d99a5e8a0446f66b3520ca  gcc/testsuite/c-c++-common/torture/pr46137.c
  dad442c09041500a2c414da240f49b82  gcc/testsuite/c-c++-common/torture/pr53505.c
! 4a62cf60f7a9a68da1f231772353b380  gcc/testsuite/c-c++-common/torture/pr57945.c
  baa15b278da5bb4b2b348d4043f1c97e  gcc/testsuite/c-c++-common/torture/pr58794-1.c
  c816e733ed428f32e49d50b564aaef54  gcc/testsuite/c-c++-common/torture/pr58794-2.c
  51789b713733d1d6693238c2ca4e9b85  gcc/testsuite/c-c++-common/torture/pr60026.c
--- 9142,9148 ----
  9f1ae2fa915c5159ec134a1894ad5cf1  gcc/testsuite/c-c++-common/torture/pr42834.c
  675e839574d99a5e8a0446f66b3520ca  gcc/testsuite/c-c++-common/torture/pr46137.c
  dad442c09041500a2c414da240f49b82  gcc/testsuite/c-c++-common/torture/pr53505.c
! 2a0a632267b1c6bbd281da3dafef63e8  gcc/testsuite/c-c++-common/torture/pr57945.c
  baa15b278da5bb4b2b348d4043f1c97e  gcc/testsuite/c-c++-common/torture/pr58794-1.c
  c816e733ed428f32e49d50b564aaef54  gcc/testsuite/c-c++-common/torture/pr58794-2.c
  51789b713733d1d6693238c2ca4e9b85  gcc/testsuite/c-c++-common/torture/pr60026.c
*************** d6a020309f3771e59e357ca318d8b648  gcc/te
*** 8912,8917 ****
--- 9153,9159 ----
  98b9e5efd75f8d7411aa7620d489399f  gcc/testsuite/c-c++-common/torture/pr77544.c
  3ff9da542bfec1dd8c51f3260ffc51db  gcc/testsuite/c-c++-common/torture/pr79731.c
  575b9ac121d105d972c0a1d0cc759e1e  gcc/testsuite/c-c++-common/torture/pr83553.c
+ 10f3f13910c6235a4bbd08a729ec637b  gcc/testsuite/c-c++-common/torture/pr85022.c
  fdeec1e5ecb339bf68961fab033b606e  gcc/testsuite/c-c++-common/torture/vector-compare-1.c
  e098360b3686787abea6589b13d9e806  gcc/testsuite/c-c++-common/torture/vector-compare-2.c
  26c13a49130d1f2d291bea112073585f  gcc/testsuite/c-c++-common/torture/vector-shift.c
*************** da953592b5918925210396862fda7319  gcc/te
*** 8950,8958 ****
  695efb40d461078d61105c562aeff7de  gcc/testsuite/c-c++-common/tsan/pr65400-2.c
  5a0d8871e2454b025935b73f908b9ea9  gcc/testsuite/c-c++-common/tsan/pr65400-3.c
  94a3ce6b0420494c8401106bec4aeff5  gcc/testsuite/c-c++-common/tsan/pr68260.c
  9651a827618e2399b209ed88d7c818cb  gcc/testsuite/c-c++-common/tsan/race_on_barrier.c
  c17ef9001f4d2a242d6818763dfa63ff  gcc/testsuite/c-c++-common/tsan/race_on_barrier2.c
! e67a39a2873754e03375bb55c452b32a  gcc/testsuite/c-c++-common/tsan/race_on_mutex.c
  0ca9b01051b9780acc43786d24c00a88  gcc/testsuite/c-c++-common/tsan/race_on_mutex2.c
  ce3ab87d530c18dea4f17e7144d048f6  gcc/testsuite/c-c++-common/tsan/sanitize-thread-macro.c
  06947c1efb0e54a370c6a8645033c300  gcc/testsuite/c-c++-common/tsan/simple_race.c
--- 9192,9201 ----
  695efb40d461078d61105c562aeff7de  gcc/testsuite/c-c++-common/tsan/pr65400-2.c
  5a0d8871e2454b025935b73f908b9ea9  gcc/testsuite/c-c++-common/tsan/pr65400-3.c
  94a3ce6b0420494c8401106bec4aeff5  gcc/testsuite/c-c++-common/tsan/pr68260.c
+ 4f975186434778f8bf66e8a6bc2155d8  gcc/testsuite/c-c++-common/tsan/pr81275.c
  9651a827618e2399b209ed88d7c818cb  gcc/testsuite/c-c++-common/tsan/race_on_barrier.c
  c17ef9001f4d2a242d6818763dfa63ff  gcc/testsuite/c-c++-common/tsan/race_on_barrier2.c
! 25a7f92de8e03951b0b62b8b9c7241ae  gcc/testsuite/c-c++-common/tsan/race_on_mutex.c
  0ca9b01051b9780acc43786d24c00a88  gcc/testsuite/c-c++-common/tsan/race_on_mutex2.c
  ce3ab87d530c18dea4f17e7144d048f6  gcc/testsuite/c-c++-common/tsan/sanitize-thread-macro.c
  06947c1efb0e54a370c6a8645033c300  gcc/testsuite/c-c++-common/tsan/simple_race.c
*************** d61adffa4e34a837a6cb7feea1530906  gcc/te
*** 8967,8972 ****
--- 9210,9216 ----
  1048d0e6a3ca80d3b4720a445847e7cb  gcc/testsuite/c-c++-common/tsan/tsan_barrier.h
  3e2de6169eb53b32bfe7a21d0500e2f7  gcc/testsuite/c-c++-common/tsan/write_in_reader_lock.c
  8d737655fe783ab4170cda3a8b41a7f2  gcc/testsuite/c-c++-common/ubsan/align-1.c
+ ddedc652e48f104631e8ae0d8520e5ad  gcc/testsuite/c-c++-common/ubsan/align-10.c
  acdf5d994b162a36d85ebd0209b7d5eb  gcc/testsuite/c-c++-common/ubsan/align-2.c
  fff9a866ffaa3beb1d96455b3c496362  gcc/testsuite/c-c++-common/ubsan/align-3.c
  21641dbe3ef420bf6b744082088a430e  gcc/testsuite/c-c++-common/ubsan/align-4.c
*************** ddb1fd7f59c673b8451fd29094e566fc  gcc/te
*** 8976,8984 ****
  502bae7a8f9e68f884f9ba33462a7492  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
! 7b19698e2965d03bd4d16e88b955b2ae  gcc/testsuite/c-c++-common/ubsan/attrib-2.c
  3887eb3b39d6bb827c5b762941936069  gcc/testsuite/c-c++-common/ubsan/attrib-3.c
  572cbd8ec273eb277857a0fdb277eb0b  gcc/testsuite/c-c++-common/ubsan/attrib-4.c
  5faaf84c5345dab6d3aa98bf476cc4dc  gcc/testsuite/c-c++-common/ubsan/bounds-1.c
  f7ac21b5467fdafd31e4d63c13bba697  gcc/testsuite/c-c++-common/ubsan/bounds-10.c
  8a79b5ac2324b237d4b97f40d8caef20  gcc/testsuite/c-c++-common/ubsan/bounds-11.c
--- 9220,9229 ----
  502bae7a8f9e68f884f9ba33462a7492  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
  3887eb3b39d6bb827c5b762941936069  gcc/testsuite/c-c++-common/ubsan/attrib-3.c
  572cbd8ec273eb277857a0fdb277eb0b  gcc/testsuite/c-c++-common/ubsan/attrib-4.c
+ 5f4e50ead0786cb399ccba0b485eff07  gcc/testsuite/c-c++-common/ubsan/attrib-5.c
  5faaf84c5345dab6d3aa98bf476cc4dc  gcc/testsuite/c-c++-common/ubsan/bounds-1.c
  f7ac21b5467fdafd31e4d63c13bba697  gcc/testsuite/c-c++-common/ubsan/bounds-10.c
  8a79b5ac2324b237d4b97f40d8caef20  gcc/testsuite/c-c++-common/ubsan/bounds-11.c
*************** c16185cce86267ea0c9dd646ac8e24fe  gcc/te
*** 8994,8999 ****
--- 9239,9245 ----
  285be4698e434bd18f676b331d6e34cd  gcc/testsuite/c-c++-common/ubsan/bounds-7.c
  90f168a5463aa68099056b91e086d976  gcc/testsuite/c-c++-common/ubsan/bounds-8.c
  3a43b387bf697f31598729640684400c  gcc/testsuite/c-c++-common/ubsan/bounds-9.c
+ ea241630b0a3aed6153f59337a91f543  gcc/testsuite/c-c++-common/ubsan/builtin-1.c
  70def46beb46626b6c3e1f45c5df351a  gcc/testsuite/c-c++-common/ubsan/const-char-1.c
  1b7d27b069201b0a663821b3643c112b  gcc/testsuite/c-c++-common/ubsan/const-expr-1.c
  17e0db17e3d0a29a2dcec179bfe160fb  gcc/testsuite/c-c++-common/ubsan/div-by-zero-1.c
*************** e421ddf2d69b41e79c4238d86ca23e02  gcc/te
*** 9003,9019 ****
  701ee447bdcb3bdd63f4e19e0aa275c7  gcc/testsuite/c-c++-common/ubsan/div-by-zero-5.c
  f1d5ba00cab5b6e91752dc500c497bad  gcc/testsuite/c-c++-common/ubsan/div-by-zero-6.c
  be42c7c0119ada6c8b75859883b7947d  gcc/testsuite/c-c++-common/ubsan/div-by-zero-7.c
! 6726dc6b32348d286beda628454d50b9  gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-1.c
! c85488cb77ea23f35746344adcda5a8b  gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-10.c
! b089faa4c8cfdb57b56ef700c240d0a9  gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-2.c
! 32890d6e68882ccf1b8ee07e61d91f10  gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-3.c
! ecd645c60cd12c475c89babdc7d3ca11  gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-4.c
! 7bbe9a59435701ae2725d18dd049a0f4  gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-5.c
! fdaa3ef3502b69ca26e7f48ad53f4824  gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-6.c
  ad0210bfe2c0bf78466fbeb232c7f222  gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-7.c
  5558ba3689475a129a6886a645f998ef  gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-7.h
! e6e50a02aa69667ccec796a3aee3a4bc  gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-8.c
! eaba783e9ea6ca3adc085db5b60ab8ff  gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-9.c
  2474ecce86d8ab1d663e5a060e9ae5ee  gcc/testsuite/c-c++-common/ubsan/float-cast.h
  edf61d9eda5f13ef6802aeed6ada88f8  gcc/testsuite/c-c++-common/ubsan/float-div-by-zero-1.c
  ff2685208629414a89fbb3161f228476  gcc/testsuite/c-c++-common/ubsan/load-bool-enum.c
--- 9249,9265 ----
  701ee447bdcb3bdd63f4e19e0aa275c7  gcc/testsuite/c-c++-common/ubsan/div-by-zero-5.c
  f1d5ba00cab5b6e91752dc500c497bad  gcc/testsuite/c-c++-common/ubsan/div-by-zero-6.c
  be42c7c0119ada6c8b75859883b7947d  gcc/testsuite/c-c++-common/ubsan/div-by-zero-7.c
! d07c65cd2e8a1d0ef1dee133476f0011  gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-1.c
! 96159bb28961f7d226730c47d4f46b1c  gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-10.c
! d8a1f7454571a008b04fa6c1291f6438  gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-2.c
! 9f26f2597db64bf07c0305c3e561422c  gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-3.c
! da122df61cc25a538786852631e2414d  gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-4.c
! f1056f3f61f4c10747448d20be20be58  gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-5.c
! 5f549a8ec9aa4eb9f413c32a4603f3a1  gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-6.c
  ad0210bfe2c0bf78466fbeb232c7f222  gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-7.c
  5558ba3689475a129a6886a645f998ef  gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-7.h
! 5a723666b5f36d61bcc21fc8d783d1d1  gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-8.c
! a6690a3246008f2c5cea6ca866063155  gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-9.c
  2474ecce86d8ab1d663e5a060e9ae5ee  gcc/testsuite/c-c++-common/ubsan/float-cast.h
  edf61d9eda5f13ef6802aeed6ada88f8  gcc/testsuite/c-c++-common/ubsan/float-div-by-zero-1.c
  ff2685208629414a89fbb3161f228476  gcc/testsuite/c-c++-common/ubsan/load-bool-enum.c
*************** e2015df970a997f64cabe4a791c7016c  gcc/te
*** 9025,9030 ****
--- 9271,9278 ----
  6842fa0a5074224e7bfc1fa8476e9101  gcc/testsuite/c-c++-common/ubsan/null-1.c
  980109fa8241a757eeaa7dd86f275f3c  gcc/testsuite/c-c++-common/ubsan/null-10.c
  18d25a0147190f384aa027237ca4a444  gcc/testsuite/c-c++-common/ubsan/null-11.c
+ 9f45a5a434335f481ae98879695b3fd0  gcc/testsuite/c-c++-common/ubsan/null-12.c
+ 06648bb2d9fa73aa53fb9b73a550b2bc  gcc/testsuite/c-c++-common/ubsan/null-13.c
  4febc286da85e99025798396084cdd4a  gcc/testsuite/c-c++-common/ubsan/null-2.c
  b489b4205284d903090793dc501bdbc2  gcc/testsuite/c-c++-common/ubsan/null-3.c
  095d594dacc46713e99181191fb6a559  gcc/testsuite/c-c++-common/ubsan/null-4.c
*************** df9c5bc9c36ab4ef37bf567237397939  gcc/te
*** 9035,9040 ****
--- 9283,9289 ----
  e312920b7ffd476c78054efe85a06a91  gcc/testsuite/c-c++-common/ubsan/null-9.c
  d7e7e1f8ee37f2bb3354f505694b1e28  gcc/testsuite/c-c++-common/ubsan/object-size-1.c
  ff518288ae9456cb45c23143120ce391  gcc/testsuite/c-c++-common/ubsan/object-size-10.c
+ 41ec38f80436552fbb130ca7a39b7108  gcc/testsuite/c-c++-common/ubsan/object-size-11.c
  702485ed4844237ef8004854e7eb54c1  gcc/testsuite/c-c++-common/ubsan/object-size-2.c
  9da79940216d11d0776c0614205c2ffd  gcc/testsuite/c-c++-common/ubsan/object-size-3.c
  2719eeba5d818811416bd309943d2505  gcc/testsuite/c-c++-common/ubsan/object-size-4.c
*************** b61c8d67fc16a4a400c244d8171acbc1  gcc/te
*** 9090,9095 ****
--- 9339,9345 ----
  0278447631e1e7661d0dc1c45df16b8a  gcc/testsuite/c-c++-common/ubsan/pr65081.c
  84e6340179dbdb8d0683b92ea0ba82db  gcc/testsuite/c-c++-common/ubsan/pr65367.c
  e448ddddec48e19348734e1bc0fa2581  gcc/testsuite/c-c++-common/ubsan/pr65984.c
+ 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
*************** abaaaa855dd108b8d327718c2416ad01  gcc/te
*** 9101,9135 ****
  e4685fe961dc8035bb3aeb035964e128  gcc/testsuite/c-c++-common/ubsan/pr78858.c
  746f2c87b02736e24041ad1b220c4868  gcc/testsuite/c-c++-common/ubsan/pr79897.c
  e1459a9d2ab7107fd299c7de6b46f17a  gcc/testsuite/c-c++-common/ubsan/pr80310.c
  c2f3b3be31f310c27528d1ee4cc38bb9  gcc/testsuite/c-c++-common/ubsan/pr80350.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
  02f7c7e113837b0933f7c0a1178985ca  gcc/testsuite/c-c++-common/ubsan/pr81604.c
  dab28cca030f6a4bc8dd3c11ed677fff  gcc/testsuite/c-c++-common/ubsan/recovery-1.c
  5bb4d0c13ed60e4d8054523bc5e48304  gcc/testsuite/c-c++-common/ubsan/recovery-2.c
  aafe603ef0d928ea5f8241acd3077f5c  gcc/testsuite/c-c++-common/ubsan/recovery-3.c
  1fe2be82f71006c58e951c6bbe1ffbd3  gcc/testsuite/c-c++-common/ubsan/recovery-common.inc
! febc6b656eb822a5d85b1a9cf5e79c19  gcc/testsuite/c-c++-common/ubsan/sanitize-all-1.c
  598c2cb4aa9702e242217f2dcd7e1d2d  gcc/testsuite/c-c++-common/ubsan/sanitize-all-2.c
  5aad25002a53f02efcee26de2490d6c0  gcc/testsuite/c-c++-common/ubsan/sanitize-all-3.c
  80072531ebd37b6b22a79e393b473220  gcc/testsuite/c-c++-common/ubsan/sanitize-all-4.c
! efbaba97a2462bb11a03134ad0bd8e5d  gcc/testsuite/c-c++-common/ubsan/sanitize-recover-1.c
! 939e9d3df3f09dfe560d3635caa8c4cf  gcc/testsuite/c-c++-common/ubsan/sanitize-recover-2.c
  518a7d52a0ac5ef354b4c529baef6d96  gcc/testsuite/c-c++-common/ubsan/sanitize-recover-3.c
  8af001e8ff983bfd84b0a936ff9befb9  gcc/testsuite/c-c++-common/ubsan/sanitize-recover-4.c
! 5c18b4102f4553be47eda562190dc60c  gcc/testsuite/c-c++-common/ubsan/sanitize-recover-5.c
  baef423cb5f61aa5a3319edd2f7175a4  gcc/testsuite/c-c++-common/ubsan/sanitize-recover-6.c
! 204e52a19de506bf19cee4b3617bba10  gcc/testsuite/c-c++-common/ubsan/sanitize-recover-7.c
! cb64a42a6deafeb0b144391f68c093d3  gcc/testsuite/c-c++-common/ubsan/sanitize-recover-8.c
! 7808192a1eeb6af3e380109b38a00879  gcc/testsuite/c-c++-common/ubsan/sanitize-recover-9.c
  e556d95fc8d53f6631375ea8b85d3075  gcc/testsuite/c-c++-common/ubsan/save-expr-1.c
  044faaef76bb17bfc9f9a33e6a27325a  gcc/testsuite/c-c++-common/ubsan/save-expr-2.c
  82afee71f72fbf21412e2924f47ea4b8  gcc/testsuite/c-c++-common/ubsan/save-expr-3.c
  6c0e99e114699e240db660fc574febe9  gcc/testsuite/c-c++-common/ubsan/save-expr-4.c
  4a5186270de56b794677e64699b4db69  gcc/testsuite/c-c++-common/ubsan/shift-1.c
  edd4fcff5550bbc876ceb98d62be3b21  gcc/testsuite/c-c++-common/ubsan/shift-10.c
  a18c6c5812c92fe7ae6c0d748ca4d92b  gcc/testsuite/c-c++-common/ubsan/shift-2.c
  0b6048e0bae5c56479d7ad8db84f1080  gcc/testsuite/c-c++-common/ubsan/shift-3.c
  0583cbb89a0ca9b82aa6f779422b4f5e  gcc/testsuite/c-c++-common/ubsan/shift-4.c
--- 9351,9398 ----
  e4685fe961dc8035bb3aeb035964e128  gcc/testsuite/c-c++-common/ubsan/pr78858.c
  746f2c87b02736e24041ad1b220c4868  gcc/testsuite/c-c++-common/ubsan/pr79897.c
  e1459a9d2ab7107fd299c7de6b46f17a  gcc/testsuite/c-c++-common/ubsan/pr80310.c
+ 97329208fd0892b92679fa5579882c44  gcc/testsuite/c-c++-common/ubsan/pr80349.c
  c2f3b3be31f310c27528d1ee4cc38bb9  gcc/testsuite/c-c++-common/ubsan/pr80350.c
+ 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
+ a55f82635f39282e5a6df541601c4ccc  gcc/testsuite/c-c++-common/ubsan/pr81148.c
  02f7c7e113837b0933f7c0a1178985ca  gcc/testsuite/c-c++-common/ubsan/pr81604.c
+ 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
+ ed6772b373b6f56a159b87f88582ef1a  gcc/testsuite/c-c++-common/ubsan/ptr-overflow-1.c
+ 130b8e4c44c6b9730f42609fcfcd0c0b  gcc/testsuite/c-c++-common/ubsan/ptr-overflow-2.c
+ 04c1164b217e389d12b509fb96d8b31f  gcc/testsuite/c-c++-common/ubsan/ptr-overflow-sanitization-1.c
  dab28cca030f6a4bc8dd3c11ed677fff  gcc/testsuite/c-c++-common/ubsan/recovery-1.c
  5bb4d0c13ed60e4d8054523bc5e48304  gcc/testsuite/c-c++-common/ubsan/recovery-2.c
  aafe603ef0d928ea5f8241acd3077f5c  gcc/testsuite/c-c++-common/ubsan/recovery-3.c
  1fe2be82f71006c58e951c6bbe1ffbd3  gcc/testsuite/c-c++-common/ubsan/recovery-common.inc
! c962eb5650005b79998810435b1e82d1  gcc/testsuite/c-c++-common/ubsan/sanitize-all-1.c
  598c2cb4aa9702e242217f2dcd7e1d2d  gcc/testsuite/c-c++-common/ubsan/sanitize-all-2.c
  5aad25002a53f02efcee26de2490d6c0  gcc/testsuite/c-c++-common/ubsan/sanitize-all-3.c
  80072531ebd37b6b22a79e393b473220  gcc/testsuite/c-c++-common/ubsan/sanitize-all-4.c
! 64c0f7bcea78af4dd312c00cf7815278  gcc/testsuite/c-c++-common/ubsan/sanitize-recover-1.c
! 143edfc338c320c42a495c0bed417928  gcc/testsuite/c-c++-common/ubsan/sanitize-recover-2.c
  518a7d52a0ac5ef354b4c529baef6d96  gcc/testsuite/c-c++-common/ubsan/sanitize-recover-3.c
  8af001e8ff983bfd84b0a936ff9befb9  gcc/testsuite/c-c++-common/ubsan/sanitize-recover-4.c
! 9c807e811e70e221cd998e1b72f70b62  gcc/testsuite/c-c++-common/ubsan/sanitize-recover-5.c
  baef423cb5f61aa5a3319edd2f7175a4  gcc/testsuite/c-c++-common/ubsan/sanitize-recover-6.c
! 75b1bb4cf31787a3a75efd68fd959196  gcc/testsuite/c-c++-common/ubsan/sanitize-recover-7.c
! 75b6300bdccd71b7db2032bdc7508f00  gcc/testsuite/c-c++-common/ubsan/sanitize-recover-8.c
! 311c1943d328360a8fbfb5f0fa51de97  gcc/testsuite/c-c++-common/ubsan/sanitize-recover-9.c
  e556d95fc8d53f6631375ea8b85d3075  gcc/testsuite/c-c++-common/ubsan/save-expr-1.c
  044faaef76bb17bfc9f9a33e6a27325a  gcc/testsuite/c-c++-common/ubsan/save-expr-2.c
  82afee71f72fbf21412e2924f47ea4b8  gcc/testsuite/c-c++-common/ubsan/save-expr-3.c
  6c0e99e114699e240db660fc574febe9  gcc/testsuite/c-c++-common/ubsan/save-expr-4.c
  4a5186270de56b794677e64699b4db69  gcc/testsuite/c-c++-common/ubsan/shift-1.c
  edd4fcff5550bbc876ceb98d62be3b21  gcc/testsuite/c-c++-common/ubsan/shift-10.c
+ b00ade4adb75264ec9a1990208881b1d  gcc/testsuite/c-c++-common/ubsan/shift-11.c
  a18c6c5812c92fe7ae6c0d748ca4d92b  gcc/testsuite/c-c++-common/ubsan/shift-2.c
  0b6048e0bae5c56479d7ad8db84f1080  gcc/testsuite/c-c++-common/ubsan/shift-3.c
  0583cbb89a0ca9b82aa6f779422b4f5e  gcc/testsuite/c-c++-common/ubsan/shift-4.c
*************** a9431f9dc63f136cd7b87acbc9209f71  gcc/te
*** 9158,9166 ****
  85d196bebea2c4def45d8c6e63870e6c  gcc/testsuite/c-c++-common/uninit-G-O0.c
  4cfe4b2e4f92f6209a95e39f22388d47  gcc/testsuite/c-c++-common/uninit-G.c
  fc07508abc561415843db1779595ba31  gcc/testsuite/c-c++-common/uninit-pr51010.c
  3edfb8e43acf0371b1e3540d91872172  gcc/testsuite/c-c++-common/va-arg-va-list-type.c
! 000046e88cfec14287f2fb572df5a25f  gcc/testsuite/c-c++-common/vector-1.c
! a762b6bd97faadf1c7c4e9c8168ef73a  gcc/testsuite/c-c++-common/vector-2.c
  899d453ef37273ceef880f8d7731327b  gcc/testsuite/c-c++-common/vector-3.c
  8ed24f63fe194926f15c7a2b4c47a2ca  gcc/testsuite/c-c++-common/vector-4.c
  6ecac8feb023aa9a744a4ae8793c2e21  gcc/testsuite/c-c++-common/vector-compare-1.c
--- 9421,9434 ----
  85d196bebea2c4def45d8c6e63870e6c  gcc/testsuite/c-c++-common/uninit-G-O0.c
  4cfe4b2e4f92f6209a95e39f22388d47  gcc/testsuite/c-c++-common/uninit-G.c
  fc07508abc561415843db1779595ba31  gcc/testsuite/c-c++-common/uninit-pr51010.c
+ 3b0ce0f374e0cc51dde2cd5e0f99c69f  gcc/testsuite/c-c++-common/unroll-1.c
+ 87b4c3dcd603c5d1e38d6e750129c64a  gcc/testsuite/c-c++-common/unroll-2.c
+ d57818e59897be634a5f9646a690ac2e  gcc/testsuite/c-c++-common/unroll-3.c
+ f509b765bb71e26ecb02da59033037fd  gcc/testsuite/c-c++-common/unroll-4.c
+ 1abb6f03aeb9905751f402a81480ea52  gcc/testsuite/c-c++-common/unroll-5.c
  3edfb8e43acf0371b1e3540d91872172  gcc/testsuite/c-c++-common/va-arg-va-list-type.c
! a2f9e4a5e93a4fc852e7a5b3b175f349  gcc/testsuite/c-c++-common/vector-1.c
! d1da790bdc62173381a0a8e7a3f3e2eb  gcc/testsuite/c-c++-common/vector-2.c
  899d453ef37273ceef880f8d7731327b  gcc/testsuite/c-c++-common/vector-3.c
  8ed24f63fe194926f15c7a2b4c47a2ca  gcc/testsuite/c-c++-common/vector-4.c
  6ecac8feb023aa9a744a4ae8793c2e21  gcc/testsuite/c-c++-common/vector-compare-1.c
*************** da7bc9dcd40ac600af35b90c5e88a919  gcc/te
*** 9175,9181 ****
  8b2999f6afe37faaf73a0cf1acf96b34  gcc/testsuite/c-c++-common/vector-shift1.c
  b1e83f9bc6b530b7ddd4f0c20c53a9a8  gcc/testsuite/c-c++-common/vector-shift3.c
  5d6acca78d6032eb97f3a93fe9febcae  gcc/testsuite/c-c++-common/vector-subscript-1.c
! b2fe8ab562cffceb4ff280d3040d501d  gcc/testsuite/c-c++-common/vector-subscript-2.c
  ef6e9b2c8a7a001bedcb5c3faa994f8f  gcc/testsuite/c-c++-common/vector-subscript-3.c
  ae35afb456cb68c41f5a93059dc60fb2  gcc/testsuite/c-c++-common/vector-subscript-4.c
  d5979c8f01afa0543858e79b38631193  gcc/testsuite/c-c++-common/vector-subscript-5.c
--- 9443,9449 ----
  8b2999f6afe37faaf73a0cf1acf96b34  gcc/testsuite/c-c++-common/vector-shift1.c
  b1e83f9bc6b530b7ddd4f0c20c53a9a8  gcc/testsuite/c-c++-common/vector-shift3.c
  5d6acca78d6032eb97f3a93fe9febcae  gcc/testsuite/c-c++-common/vector-subscript-1.c
! 2511a738607e1d446a6d9703c3ef3b38  gcc/testsuite/c-c++-common/vector-subscript-2.c
  ef6e9b2c8a7a001bedcb5c3faa994f8f  gcc/testsuite/c-c++-common/vector-subscript-3.c
  ae35afb456cb68c41f5a93059dc60fb2  gcc/testsuite/c-c++-common/vector-subscript-4.c
  d5979c8f01afa0543858e79b38631193  gcc/testsuite/c-c++-common/vector-subscript-5.c
*************** f05c0689692cbede80befe82de25dc21  gcc/te
*** 9184,9206 ****
  5d6889d4089a1f4aaf45e435f0eb55bf  gcc/testsuite/c-c++-common/vla-1.c
  f692b95d21d9a595194cabd09b94759b  gcc/testsuite/c-c++-common/warn-ommitted-condop.c
  4047fbaa76a1a5d41ea12f6f27df3243  gcc/testsuite/c-c++-common/wdate-time.c
! bbbbccc77d47ec4a11e3c4237a599acf  gcc/testsuite/config/default.exp
  58dc5a5cf5db074f93f28ff8913eed25  gcc/testsuite/g++.dg/20090107-1.C
  e530347ad81371c3d469f2a1d1245735  gcc/testsuite/g++.dg/20090121-1.C
  c78a7d0e0f56139db13df05e5557054a  gcc/testsuite/g++.dg/DRs/dr1511-1.C
  a8a423a0388215f96cf72d6abf415d72  gcc/testsuite/g++.dg/DRs/dr1511-2.C
  b76a9cedbf2dc42cfc090cc116dd5b23  gcc/testsuite/g++.dg/DRs/dr2137-1.C
  c34c077c14a731c1e76b55760a45595e  gcc/testsuite/g++.dg/DRs/dr2137-2.C
! 41bf22500dc01395d2667ecb2e34e03f  gcc/testsuite/g++.dg/README
! d01d41709a31d1f9ecd82b107689b81b  gcc/testsuite/g++.dg/Walloca1.C
  35b2001cf691ecf0a90121735a12e0ac  gcc/testsuite/g++.dg/Wattributes.C
  5ae126d2bd8ea7c9e7da7c0f0bf249a8  gcc/testsuite/g++.dg/Wframe-address-in-Wall.C
  5ba575936ea99c0ac6a33f32f31ed443  gcc/testsuite/g++.dg/Wframe-address.C
  68377ab735ce4a76277625363ef5d36a  gcc/testsuite/g++.dg/Wno-frame-address.C
  f0d27e546f279d0c350c8d8c55b73eb0  gcc/testsuite/g++.dg/Wshadow.C
  952ad896725d7a1839a51e1e1d74c981  gcc/testsuite/g++.dg/abi/Wabi-2-2.C
! 941d3381c6b3a875c74481c78bca9585  gcc/testsuite/g++.dg/abi/Wabi-2-3.C
! 385473a0576e1b08fcd4b4fa4545770a  gcc/testsuite/g++.dg/abi/Wabi-3-2.C
  574703d25d6a95232b33ae31235c3fc3  gcc/testsuite/g++.dg/abi/Wabi-3-3.C
  356c7d791515345821b1b32ece2618b7  gcc/testsuite/g++.dg/abi/aarch64_guard1.C
  be61c6f12a575ac7df8fd4895b15db59  gcc/testsuite/g++.dg/abi/abi-tag1.C
--- 9452,9484 ----
  5d6889d4089a1f4aaf45e435f0eb55bf  gcc/testsuite/c-c++-common/vla-1.c
  f692b95d21d9a595194cabd09b94759b  gcc/testsuite/c-c++-common/warn-ommitted-condop.c
  4047fbaa76a1a5d41ea12f6f27df3243  gcc/testsuite/c-c++-common/wdate-time.c
! eea131f403564c47d431a31db8548ed0  gcc/testsuite/config/default.exp
  58dc5a5cf5db074f93f28ff8913eed25  gcc/testsuite/g++.dg/20090107-1.C
  e530347ad81371c3d469f2a1d1245735  gcc/testsuite/g++.dg/20090121-1.C
  c78a7d0e0f56139db13df05e5557054a  gcc/testsuite/g++.dg/DRs/dr1511-1.C
  a8a423a0388215f96cf72d6abf415d72  gcc/testsuite/g++.dg/DRs/dr1511-2.C
  b76a9cedbf2dc42cfc090cc116dd5b23  gcc/testsuite/g++.dg/DRs/dr2137-1.C
  c34c077c14a731c1e76b55760a45595e  gcc/testsuite/g++.dg/DRs/dr2137-2.C
! 990671aa84afa8873819d58d467d3ce8  gcc/testsuite/g++.dg/README
! 046946b37875b4bd55949429fb7eb1f3  gcc/testsuite/g++.dg/Walloca1.C
! a41465f245515983bde6bb1167545c97  gcc/testsuite/g++.dg/Wattributes-2.C
! 3f58e05f1808533d471f82f542d1e98d  gcc/testsuite/g++.dg/Wattributes-3.C
! 6eca350a065a90ffa5fe1016ff56b35b  gcc/testsuite/g++.dg/Wattributes-4.C
! 3ff207592dbb65eecb677a29243ae42b  gcc/testsuite/g++.dg/Wattributes-5.C
  35b2001cf691ecf0a90121735a12e0ac  gcc/testsuite/g++.dg/Wattributes.C
+ 2687fa5e702b8432b772f5fa0cfaaf80  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
+ e7be090526ab0685dbe517c0c94e47bf  gcc/testsuite/g++.dg/Wclass-memaccess-4.C
+ 0c3f9ec615c7fb98f24e74081dfa3a73  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
+ 8c0d0fa0bf8f3a3120d9b417967af343  gcc/testsuite/g++.dg/Wmissing-attributes.C
  68377ab735ce4a76277625363ef5d36a  gcc/testsuite/g++.dg/Wno-frame-address.C
  f0d27e546f279d0c350c8d8c55b73eb0  gcc/testsuite/g++.dg/Wshadow.C
  952ad896725d7a1839a51e1e1d74c981  gcc/testsuite/g++.dg/abi/Wabi-2-2.C
! c2151925a09ce551a1fc4a4261176377  gcc/testsuite/g++.dg/abi/Wabi-2-3.C
! 44a81e321d0797fcd773cbcdabe945bc  gcc/testsuite/g++.dg/abi/Wabi-3-2.C
  574703d25d6a95232b33ae31235c3fc3  gcc/testsuite/g++.dg/abi/Wabi-3-3.C
  356c7d791515345821b1b32ece2618b7  gcc/testsuite/g++.dg/abi/aarch64_guard1.C
  be61c6f12a575ac7df8fd4895b15db59  gcc/testsuite/g++.dg/abi/abi-tag1.C
*************** be61c6f12a575ac7df8fd4895b15db59  gcc/te
*** 9208,9220 ****
  cd93919c065004ea490003c672cd7104  gcc/testsuite/g++.dg/abi/abi-tag11.C
  47aa3ff16bf0c894cfb515ddcdbda392  gcc/testsuite/g++.dg/abi/abi-tag12.C
  ff8a45946e2084ced45599c7eec2938e  gcc/testsuite/g++.dg/abi/abi-tag13.C
! 5b590f2118e820551c78283fb1c45e64  gcc/testsuite/g++.dg/abi/abi-tag14.C
  245aef31a343de9e715f99683f6d1ead  gcc/testsuite/g++.dg/abi/abi-tag15.C
  26733022710d5bb032d5d2eb72f1896d  gcc/testsuite/g++.dg/abi/abi-tag16.C
  d6a3dec90d15ab2e54cbca93322da7ed  gcc/testsuite/g++.dg/abi/abi-tag16a.C
  585a58c93973b99a7cd1f0eb6cfce127  gcc/testsuite/g++.dg/abi/abi-tag17.C
! 42635c8f5c14d61ac1b192196ac98c5d  gcc/testsuite/g++.dg/abi/abi-tag18.C
! f5a3d3210be8af10d0b5c5ca8dc816c7  gcc/testsuite/g++.dg/abi/abi-tag18a.C
  403b13e4e8f4f1a53472f6656f4e9953  gcc/testsuite/g++.dg/abi/abi-tag19.C
  064eba36c22e1b67e37a8c95a5698520  gcc/testsuite/g++.dg/abi/abi-tag2.C
  f19a797248af01c5d5f5921e6516c19a  gcc/testsuite/g++.dg/abi/abi-tag20.C
--- 9486,9498 ----
  cd93919c065004ea490003c672cd7104  gcc/testsuite/g++.dg/abi/abi-tag11.C
  47aa3ff16bf0c894cfb515ddcdbda392  gcc/testsuite/g++.dg/abi/abi-tag12.C
  ff8a45946e2084ced45599c7eec2938e  gcc/testsuite/g++.dg/abi/abi-tag13.C
! d5f2ec3f68f58a172b795a7f5deae99f  gcc/testsuite/g++.dg/abi/abi-tag14.C
  245aef31a343de9e715f99683f6d1ead  gcc/testsuite/g++.dg/abi/abi-tag15.C
  26733022710d5bb032d5d2eb72f1896d  gcc/testsuite/g++.dg/abi/abi-tag16.C
  d6a3dec90d15ab2e54cbca93322da7ed  gcc/testsuite/g++.dg/abi/abi-tag16a.C
  585a58c93973b99a7cd1f0eb6cfce127  gcc/testsuite/g++.dg/abi/abi-tag17.C
! 1f631f103e18b0ae6b6b4b7825a48b7a  gcc/testsuite/g++.dg/abi/abi-tag18.C
! e1025b8a4836b30b592bfdc17e9fb3bb  gcc/testsuite/g++.dg/abi/abi-tag18a.C
  403b13e4e8f4f1a53472f6656f4e9953  gcc/testsuite/g++.dg/abi/abi-tag19.C
  064eba36c22e1b67e37a8c95a5698520  gcc/testsuite/g++.dg/abi/abi-tag2.C
  f19a797248af01c5d5f5921e6516c19a  gcc/testsuite/g++.dg/abi/abi-tag20.C
*************** ca73148875a91af2bf6269af5f3d881e  gcc/te
*** 9233,9238 ****
--- 9511,9517 ----
  f564d0148a08a312e7e15ffb1de694d1  gcc/testsuite/g++.dg/abi/abi-tag8.C
  4abed4043e768a5054f965fe816ae8ea  gcc/testsuite/g++.dg/abi/abi-tag9.C
  c7c251f16058a4d4f1db8e0df28385ff  gcc/testsuite/g++.dg/abi/align1.C
+ 53fac1fa94eb44628f1a30c989aa1635  gcc/testsuite/g++.dg/abi/align2.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
*************** dfa3e514ddbfea694774f9c287f40215  gcc/te
*** 9247,9253 ****
  9966069a163a3254b4d24ab2f38965c2  gcc/testsuite/g++.dg/abi/bitfield10.C
  e5e5ef8164ac7b43c7f20df7cfcd9b99  gcc/testsuite/g++.dg/abi/bitfield11.C
  5e02907f2e56c04ec78ba7b8ce16b583  gcc/testsuite/g++.dg/abi/bitfield2.C
! c099e813ae28a3b2fe5a62d1aa26266a  gcc/testsuite/g++.dg/abi/bitfield3.C
  b8aaec32a77e9927231c6c5f3237432f  gcc/testsuite/g++.dg/abi/bitfield4.C
  9c87e70c80da00c75493118cabefc7f7  gcc/testsuite/g++.dg/abi/bitfield6.C
  20c8af1b6abeb0a339e5fd9c3edbde57  gcc/testsuite/g++.dg/abi/bitfield8.C
--- 9526,9532 ----
  9966069a163a3254b4d24ab2f38965c2  gcc/testsuite/g++.dg/abi/bitfield10.C
  e5e5ef8164ac7b43c7f20df7cfcd9b99  gcc/testsuite/g++.dg/abi/bitfield11.C
  5e02907f2e56c04ec78ba7b8ce16b583  gcc/testsuite/g++.dg/abi/bitfield2.C
! a1e301bb8103d5df5e17ee7b2e56671c  gcc/testsuite/g++.dg/abi/bitfield3.C
  b8aaec32a77e9927231c6c5f3237432f  gcc/testsuite/g++.dg/abi/bitfield4.C
  9c87e70c80da00c75493118cabefc7f7  gcc/testsuite/g++.dg/abi/bitfield6.C
  20c8af1b6abeb0a339e5fd9c3edbde57  gcc/testsuite/g++.dg/abi/bitfield8.C
*************** b8aaec32a77e9927231c6c5f3237432f  gcc/te
*** 9255,9262 ****
  104feb47499ce7e6125b3ef0a9ee49f3  gcc/testsuite/g++.dg/abi/comdat1.C
  b587f170bbc6f95ef287e408bcafe1e3  gcc/testsuite/g++.dg/abi/cookie1.C
  06ad90a0554de61d87d60dab2a30bf3e  gcc/testsuite/g++.dg/abi/covariant1.C
! dad843e79ded2bf5c0fd0c65f41b64f8  gcc/testsuite/g++.dg/abi/covariant2.C
! 836325701db2acafab5dfd4a8eea9e11  gcc/testsuite/g++.dg/abi/covariant3.C
  a65da95a628d80d93aad25db51b4e19c  gcc/testsuite/g++.dg/abi/covariant4.C
  488e3869493233b0552a676aa01a7912  gcc/testsuite/g++.dg/abi/covariant5.C
  6a1a75e32b0bce4b89b1e513bd694466  gcc/testsuite/g++.dg/abi/covariant6.C
--- 9534,9541 ----
  104feb47499ce7e6125b3ef0a9ee49f3  gcc/testsuite/g++.dg/abi/comdat1.C
  b587f170bbc6f95ef287e408bcafe1e3  gcc/testsuite/g++.dg/abi/cookie1.C
  06ad90a0554de61d87d60dab2a30bf3e  gcc/testsuite/g++.dg/abi/covariant1.C
! bdf3fc666277f2c88c021f366a0b3886  gcc/testsuite/g++.dg/abi/covariant2.C
! 3ecc320bb6bfa3248e487f5918b9a259  gcc/testsuite/g++.dg/abi/covariant3.C
  a65da95a628d80d93aad25db51b4e19c  gcc/testsuite/g++.dg/abi/covariant4.C
  488e3869493233b0552a676aa01a7912  gcc/testsuite/g++.dg/abi/covariant5.C
  6a1a75e32b0bce4b89b1e513bd694466  gcc/testsuite/g++.dg/abi/covariant6.C
*************** ae8183ac34cf252335be257cff5018dc  gcc/te
*** 9264,9269 ****
--- 9543,9588 ----
  9b5fe1eda32f4e6ddea3106ea8d9f1da  gcc/testsuite/g++.dg/abi/dtor1.C
  9d59f34907d1d9588084fc4da7772c02  gcc/testsuite/g++.dg/abi/empty10.C
  5ce11bfa25802ab713c346269c112592  gcc/testsuite/g++.dg/abi/empty11.C
+ d83fd47aaca9d94d6980cfbba538c905  gcc/testsuite/g++.dg/abi/empty12.C
+ a67351c73c174a85fd80c1312ec10944  gcc/testsuite/g++.dg/abi/empty12.h
+ 1630e6d5985ef065e5f89a09e1ad7de2  gcc/testsuite/g++.dg/abi/empty12a.c
+ 2691548ce45d764d941d235be1ee2edc  gcc/testsuite/g++.dg/abi/empty13.C
+ a67351c73c174a85fd80c1312ec10944  gcc/testsuite/g++.dg/abi/empty13.h
+ 783bc42becbccf0d7968fd3bab1ba325  gcc/testsuite/g++.dg/abi/empty13a.c
+ ffa4b143f0018d4184dfad1521abf8c5  gcc/testsuite/g++.dg/abi/empty14.C
+ 2d8a973f4693f0c2599c71d4bd75970d  gcc/testsuite/g++.dg/abi/empty14.h
+ d8ba2e9e7eb3d27c8b4a48aa1856c030  gcc/testsuite/g++.dg/abi/empty14a.c
+ c61b6e16786b5a5d57d5a58e52e62e91  gcc/testsuite/g++.dg/abi/empty15.C
+ 68930f11b25b2f12499752ed5cfe247c  gcc/testsuite/g++.dg/abi/empty15.h
+ 8ce25fbdb0f027f2b0b568ee1c7639b1  gcc/testsuite/g++.dg/abi/empty15a.c
+ ebe429908b6dd1932f65a7e7368056fb  gcc/testsuite/g++.dg/abi/empty16.C
+ 83c1bcb566ddcd409f40c31b6c8e0983  gcc/testsuite/g++.dg/abi/empty16.h
+ bf743a5f82f85d43f667e969ff6ff1fe  gcc/testsuite/g++.dg/abi/empty16a.c
+ 7c5a711af4e57f967d178b84406f31f1  gcc/testsuite/g++.dg/abi/empty17.C
+ adb63dc33cd067de7bd5aff45cb6d595  gcc/testsuite/g++.dg/abi/empty17.h
+ c32cd8bf7607a12f3a4538c5b0ecc54d  gcc/testsuite/g++.dg/abi/empty17a.c
+ 8c7d1d499f5f9cefb49a38582312cdc2  gcc/testsuite/g++.dg/abi/empty18.C
+ d39b28b357ba923c05422cd19c59e3e5  gcc/testsuite/g++.dg/abi/empty18.h
+ 5c07acbda0be0c2cc075d7cb857d3a34  gcc/testsuite/g++.dg/abi/empty18a.c
+ 58ac4319f6767ff1793b4ec8abdf038d  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
+ 578f6801eec84e75ad4a54b3726791aa  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
+ 64bd965d7cebc647161332822fb38de7  gcc/testsuite/g++.dg/abi/empty25.C
+ 55bee7b1c82d91987e3cd6b7bdb38113  gcc/testsuite/g++.dg/abi/empty25.h
+ e7af2f0a6c31f4aee9fb356be3c25cd1  gcc/testsuite/g++.dg/abi/empty25a.c
+ e783dc972183ffc0ca87d5fc8daef0cb  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
+ f07ecb2c96198bf16a1aa3d6b70a6b5f  gcc/testsuite/g++.dg/abi/empty28.C
+ 439cb06f574d525a195f08b4a22195a1  gcc/testsuite/g++.dg/abi/empty29.C
  47c3d191ca7e599a86988d8cfdf3dfce  gcc/testsuite/g++.dg/abi/empty4.C
  b3ca6b59f60c246ebf1e969e6120765f  gcc/testsuite/g++.dg/abi/empty5.C
  d3abb8f9307b552b4063b456bfe2f213  gcc/testsuite/g++.dg/abi/empty7.C
*************** bbab6b1f77eed09d3a2c4f07991cdb40  gcc/te
*** 9275,9289 ****
  670e84a04b4051967e333717ccd35f48  gcc/testsuite/g++.dg/abi/guard2.C
  aeaf70ac2113165664ca8c8208320777  gcc/testsuite/g++.dg/abi/guard3.C
  111786b8402b8dd840adfb9a53cf3aac  gcc/testsuite/g++.dg/abi/inline1.C
  7b495c695618e4f19335c4fb222ac39e  gcc/testsuite/g++.dg/abi/key1.C
  b1c18c2e751640b698ec28b9c9090b38  gcc/testsuite/g++.dg/abi/key2.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
! 0c96cf04a5cda9fec935a6f962994805  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
--- 9594,9611 ----
  670e84a04b4051967e333717ccd35f48  gcc/testsuite/g++.dg/abi/guard2.C
  aeaf70ac2113165664ca8c8208320777  gcc/testsuite/g++.dg/abi/guard3.C
  111786b8402b8dd840adfb9a53cf3aac  gcc/testsuite/g++.dg/abi/inline1.C
+ 0da487653363b2d57b4be53f3c1e584f  gcc/testsuite/g++.dg/abi/invisiref1.C
+ f567a6076697b72a2d4da2d5f3d44e24  gcc/testsuite/g++.dg/abi/invisiref1a.C
  7b495c695618e4f19335c4fb222ac39e  gcc/testsuite/g++.dg/abi/key1.C
  b1c18c2e751640b698ec28b9c9090b38  gcc/testsuite/g++.dg/abi/key2.C
+ d06c8255efe2bb66e4bb6606d9fb8b0c  gcc/testsuite/g++.dg/abi/lambda-capture1.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
! 9da1480cb0ddbd19638c7d7cd751be69  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
*************** cce4c67a841bd521be785fa4162dbefb  gcc/te
*** 9321,9327 ****
  52b5969f6eb98652bd1d145e64b3b0e8  gcc/testsuite/g++.dg/abi/mangle37.C
  7722a7d911a308b93e12f3b4757df135  gcc/testsuite/g++.dg/abi/mangle39.C
  23e63119eba8ad650d1474e7e724b972  gcc/testsuite/g++.dg/abi/mangle40.C
! 96e8ccc78d7bbbb180a74ecfa05723c2  gcc/testsuite/g++.dg/abi/mangle41.C
  b3b6730af33c92c56cb913746c0fd666  gcc/testsuite/g++.dg/abi/mangle42.C
  87d68b4c27a09a6b273d53fd1ac67be2  gcc/testsuite/g++.dg/abi/mangle43.C
  9c988f84715431366d71a7c072196e1b  gcc/testsuite/g++.dg/abi/mangle44.C
--- 9643,9649 ----
  52b5969f6eb98652bd1d145e64b3b0e8  gcc/testsuite/g++.dg/abi/mangle37.C
  7722a7d911a308b93e12f3b4757df135  gcc/testsuite/g++.dg/abi/mangle39.C
  23e63119eba8ad650d1474e7e724b972  gcc/testsuite/g++.dg/abi/mangle40.C
! 4d733eb555077176700ed4afac5f073b  gcc/testsuite/g++.dg/abi/mangle41.C
  b3b6730af33c92c56cb913746c0fd666  gcc/testsuite/g++.dg/abi/mangle42.C
  87d68b4c27a09a6b273d53fd1ac67be2  gcc/testsuite/g++.dg/abi/mangle43.C
  9c988f84715431366d71a7c072196e1b  gcc/testsuite/g++.dg/abi/mangle44.C
*************** cd207cce9213418d57092b0421db04a0  gcc/te
*** 9351,9357 ****
  3dcc065de55f8fca0dfe6700c69d01a3  gcc/testsuite/g++.dg/abi/mangle65.C
  0a42e1f025b2e8b96ace7e0c9fcda449  gcc/testsuite/g++.dg/abi/mangle66.C
  23d654790fab8d07b451df46dadd0b3e  gcc/testsuite/g++.dg/abi/mangle67.C
! 3ca84e7c044b9a2c08f1b773db1d5f4f  gcc/testsuite/g++.dg/abi/mangle7.C
  cc6afae4c242d6e5a9083cec1a9a9907  gcc/testsuite/g++.dg/abi/mangle8.C
  7e14b0353ae53e5a5a8bcf850c4fcbc9  gcc/testsuite/g++.dg/abi/mangle9.C
  0cccf158230e7bf1d438169164c8020a  gcc/testsuite/g++.dg/abi/no-weak1.C
--- 9673,9679 ----
  3dcc065de55f8fca0dfe6700c69d01a3  gcc/testsuite/g++.dg/abi/mangle65.C
  0a42e1f025b2e8b96ace7e0c9fcda449  gcc/testsuite/g++.dg/abi/mangle66.C
  23d654790fab8d07b451df46dadd0b3e  gcc/testsuite/g++.dg/abi/mangle67.C
! 0cdd24a1b15598b312927e271f3f773e  gcc/testsuite/g++.dg/abi/mangle7.C
  cc6afae4c242d6e5a9083cec1a9a9907  gcc/testsuite/g++.dg/abi/mangle8.C
  7e14b0353ae53e5a5a8bcf850c4fcbc9  gcc/testsuite/g++.dg/abi/mangle9.C
  0cccf158230e7bf1d438169164c8020a  gcc/testsuite/g++.dg/abi/no-weak1.C
*************** fe56cd912c0f058bb4436bed7ee10cea  gcc/te
*** 9374,9395 ****
  a63cefdf2683d4aa005634e3368984ba  gcc/testsuite/g++.dg/abi/pr39188-3.h
  afd0ff2e30705970415e4aa6ca6e1468  gcc/testsuite/g++.dg/abi/pr39188-3a.C
  98c00465484f65e4b1d1c30fbbb31e23  gcc/testsuite/g++.dg/abi/pr39188-3b.C
  0f7096a6305ff4b02fefa008d96ba4d5  gcc/testsuite/g++.dg/abi/pr70182.C
  833ef57d999f2ad0dbd719c6b016506d  gcc/testsuite/g++.dg/abi/pr77489.C
  fb1d0cb0e1212195f80165239ff17d68  gcc/testsuite/g++.dg/abi/pr77728-1.C
  0490de6e9f4893c0f7a8d1ec6d802ab8  gcc/testsuite/g++.dg/abi/pr77728-2.C
  4a1543932abd77ea1cfba28eecdeeef4  gcc/testsuite/g++.dg/abi/pragma-pack1.C
  758c2fd81af2f42665b56b5d21b15e9f  gcc/testsuite/g++.dg/abi/regparm1.C
  d90943e976dded1f4182aeb500d1f2c7  gcc/testsuite/g++.dg/abi/rtti1.C
  8deae0db66776c34c77f2551c9679b7c  gcc/testsuite/g++.dg/abi/rtti2.C
! 37ac4c9d8a5289321ce1fddf4be64f94  gcc/testsuite/g++.dg/abi/rtti3.C
  6f2a71b6b0932c6186e1dbd588a2df57  gcc/testsuite/g++.dg/abi/scoped1.C
  6411485049218cb0255b44f1daecc4cd  gcc/testsuite/g++.dg/abi/spec1.C
! 51349b3acb94d1dc1909aec6ba384dae  gcc/testsuite/g++.dg/abi/structret1.C
  0a188cd301551f22c8ddc09030b2eb28  gcc/testsuite/g++.dg/abi/thunk1.C
  8c08a43b9a6c3a1ec099f45dedd4965e  gcc/testsuite/g++.dg/abi/thunk2.C
  64d1aa038d30ffe9d535aa3f5ea90c51  gcc/testsuite/g++.dg/abi/thunk3.C
! f0658daee1d193d4845d285a04d20406  gcc/testsuite/g++.dg/abi/thunk4.C
  0ec5c22fec9ed33618612b880a806f5c  gcc/testsuite/g++.dg/abi/thunk5.C
  d006595d8896499470f7ce1245a5e20f  gcc/testsuite/g++.dg/abi/thunk6.C
  9266f22cfbaad15702320f26c3b6c146  gcc/testsuite/g++.dg/abi/vague1.C
--- 9696,9732 ----
  a63cefdf2683d4aa005634e3368984ba  gcc/testsuite/g++.dg/abi/pr39188-3.h
  afd0ff2e30705970415e4aa6ca6e1468  gcc/testsuite/g++.dg/abi/pr39188-3a.C
  98c00465484f65e4b1d1c30fbbb31e23  gcc/testsuite/g++.dg/abi/pr39188-3b.C
+ 445ba3cf014559cbbe08c567d0fbbbfb  gcc/testsuite/g++.dg/abi/pr60336-1.C
+ 7a943406045dd276fae390465af20983  gcc/testsuite/g++.dg/abi/pr60336-10.C
+ a2cdb0169288d3de881b593ced78d85c  gcc/testsuite/g++.dg/abi/pr60336-11.C
+ bd9c0fde9dccf621670ef786d1dcee44  gcc/testsuite/g++.dg/abi/pr60336-12.C
+ 7d86823885b3c9459e60dc2d7a92f0dc  gcc/testsuite/g++.dg/abi/pr60336-2.C
+ 21180aa14fb787e7301cbca63762708e  gcc/testsuite/g++.dg/abi/pr60336-3.C
+ 90592b13b610961c581d704cfc195137  gcc/testsuite/g++.dg/abi/pr60336-4.C
+ 7b65f2388bdc97fda181b11ec5543e49  gcc/testsuite/g++.dg/abi/pr60336-5.C
+ b4d1753efd5208c2231f059ddbb39eca  gcc/testsuite/g++.dg/abi/pr60336-6.C
+ 916ce59421f5bddf0aab3a88745f21ed  gcc/testsuite/g++.dg/abi/pr60336-7.C
+ 95dcf6344996ed801623583100203b45  gcc/testsuite/g++.dg/abi/pr60336-8.C
+ 44a5b608387eb18b8ef0247620da3020  gcc/testsuite/g++.dg/abi/pr60336-9.C
+ a31c4f8195ac1b72fe05754f188d263f  gcc/testsuite/g++.dg/abi/pr68355.C
  0f7096a6305ff4b02fefa008d96ba4d5  gcc/testsuite/g++.dg/abi/pr70182.C
  833ef57d999f2ad0dbd719c6b016506d  gcc/testsuite/g++.dg/abi/pr77489.C
  fb1d0cb0e1212195f80165239ff17d68  gcc/testsuite/g++.dg/abi/pr77728-1.C
  0490de6e9f4893c0f7a8d1ec6d802ab8  gcc/testsuite/g++.dg/abi/pr77728-2.C
+ dc506d93d81e95fa999dc2dd977c180a  gcc/testsuite/g++.dg/abi/pr83487.C
+ 26a819eeee805095b85b58724b7e391d  gcc/testsuite/g++.dg/abi/pr83489.C
  4a1543932abd77ea1cfba28eecdeeef4  gcc/testsuite/g++.dg/abi/pragma-pack1.C
  758c2fd81af2f42665b56b5d21b15e9f  gcc/testsuite/g++.dg/abi/regparm1.C
  d90943e976dded1f4182aeb500d1f2c7  gcc/testsuite/g++.dg/abi/rtti1.C
  8deae0db66776c34c77f2551c9679b7c  gcc/testsuite/g++.dg/abi/rtti2.C
! 29332af8c5e95e4a72ba540bd8b29ec0  gcc/testsuite/g++.dg/abi/rtti3.C
  6f2a71b6b0932c6186e1dbd588a2df57  gcc/testsuite/g++.dg/abi/scoped1.C
  6411485049218cb0255b44f1daecc4cd  gcc/testsuite/g++.dg/abi/spec1.C
! 70e68bc55fe1945f2a8504c05b72996b  gcc/testsuite/g++.dg/abi/structret1.C
  0a188cd301551f22c8ddc09030b2eb28  gcc/testsuite/g++.dg/abi/thunk1.C
  8c08a43b9a6c3a1ec099f45dedd4965e  gcc/testsuite/g++.dg/abi/thunk2.C
  64d1aa038d30ffe9d535aa3f5ea90c51  gcc/testsuite/g++.dg/abi/thunk3.C
! 5b6a0316dbe4fce596a6f75a2cfd6a20  gcc/testsuite/g++.dg/abi/thunk4.C
  0ec5c22fec9ed33618612b880a806f5c  gcc/testsuite/g++.dg/abi/thunk5.C
  d006595d8896499470f7ce1245a5e20f  gcc/testsuite/g++.dg/abi/thunk6.C
  9266f22cfbaad15702320f26c3b6c146  gcc/testsuite/g++.dg/abi/vague1.C
*************** a3ef49aa5fa035e0eaa1fb23c589fe61  gcc/te
*** 9409,9434 ****
  6881f6a907aed22e3604db9a81d71753  gcc/testsuite/g++.dg/abi/vthunk3.C
  59cdef1c2f5ac26231205b723cb9ea52  gcc/testsuite/g++.dg/abi/vtt1.C
  aece1a85935e170705a9a2b313e11661  gcc/testsuite/g++.dg/addr_builtin-1.C
! 30757ee71aef83da328c33cb709e8bb9  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
  5d600a839a3fba7983d9dbffb0089811  gcc/testsuite/g++.dg/asan/asan_oob_test.cc
  a21e7d58f33bd86c0ccf7a0bac1f06bf  gcc/testsuite/g++.dg/asan/asan_str_test.cc
! d2870573dad76cb117740b8ccad682bc  gcc/testsuite/g++.dg/asan/asan_test.C
  0fcc90e0914494e1fd2869f9e48e49da  gcc/testsuite/g++.dg/asan/asan_test.cc
  7b5f694f7ad9cbae4aab558727eaceaf  gcc/testsuite/g++.dg/asan/asan_test_config.h
  6398e6ad4dd068bfb5be8cc034d1ade0  gcc/testsuite/g++.dg/asan/asan_test_utils.h
  5e2fbdaa2b9b39d6bf1f290e581722f4  gcc/testsuite/g++.dg/asan/deep-stack-uaf-1.C
  0acf775bdbd67ca675dda4934aeacb5b  gcc/testsuite/g++.dg/asan/deep-tail-call-1.C
  b2988101c810da55bd5189f442c038b7  gcc/testsuite/g++.dg/asan/deep-thread-stack-1.C
! a045d33e536e1afe6e34897f94dedfc4  gcc/testsuite/g++.dg/asan/default-options-1.C
  cba693f7c65e49b071bfcdb59c312200  gcc/testsuite/g++.dg/asan/dejagnu-gtest.h
  b12b848862ca9a5a126f8b4e8792dc16  gcc/testsuite/g++.dg/asan/dlclose-test-1-so.cc
  6a60061a97076056217dbb01be7089e7  gcc/testsuite/g++.dg/asan/interception-failure-test-1.C
  c109f79c447a9f4bd35cac5dbc643adb  gcc/testsuite/g++.dg/asan/interception-malloc-test-1.C
  5ec947b9e800038195a332828bd0637b  gcc/testsuite/g++.dg/asan/interception-test-1.C
! 830e0193a5b07878b22a733c00a173fd  gcc/testsuite/g++.dg/asan/large-func-test-1.C
  e472f2ce37f2b55b1358ec08717d9f08  gcc/testsuite/g++.dg/asan/pr55617.C
  74a04a20e12a8acd0fd7d05742cf8d63  gcc/testsuite/g++.dg/asan/pr62017.C
  505943436d80a41b5e95bf0b67db97cd  gcc/testsuite/g++.dg/asan/pr64937.C
--- 9746,9774 ----
  6881f6a907aed22e3604db9a81d71753  gcc/testsuite/g++.dg/abi/vthunk3.C
  59cdef1c2f5ac26231205b723cb9ea52  gcc/testsuite/g++.dg/abi/vtt1.C
  aece1a85935e170705a9a2b313e11661  gcc/testsuite/g++.dg/addr_builtin-1.C
! 56c5a4e5c8184676385137e40daa7ce7  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
  5d600a839a3fba7983d9dbffb0089811  gcc/testsuite/g++.dg/asan/asan_oob_test.cc
  a21e7d58f33bd86c0ccf7a0bac1f06bf  gcc/testsuite/g++.dg/asan/asan_str_test.cc
! 53d7db0db315b5324f6dc211cb85a394  gcc/testsuite/g++.dg/asan/asan_test.C
  0fcc90e0914494e1fd2869f9e48e49da  gcc/testsuite/g++.dg/asan/asan_test.cc
  7b5f694f7ad9cbae4aab558727eaceaf  gcc/testsuite/g++.dg/asan/asan_test_config.h
  6398e6ad4dd068bfb5be8cc034d1ade0  gcc/testsuite/g++.dg/asan/asan_test_utils.h
  5e2fbdaa2b9b39d6bf1f290e581722f4  gcc/testsuite/g++.dg/asan/deep-stack-uaf-1.C
  0acf775bdbd67ca675dda4934aeacb5b  gcc/testsuite/g++.dg/asan/deep-tail-call-1.C
  b2988101c810da55bd5189f442c038b7  gcc/testsuite/g++.dg/asan/deep-thread-stack-1.C
! ee1b98debb605b03b682941dfc965c77  gcc/testsuite/g++.dg/asan/default-options-1.C
  cba693f7c65e49b071bfcdb59c312200  gcc/testsuite/g++.dg/asan/dejagnu-gtest.h
  b12b848862ca9a5a126f8b4e8792dc16  gcc/testsuite/g++.dg/asan/dlclose-test-1-so.cc
+ ce8ca8e99e5790b2ad4854b92d9565e5  gcc/testsuite/g++.dg/asan/function-argument-1.C
+ 89727bb1c3b70fe6f645266764a78acb  gcc/testsuite/g++.dg/asan/function-argument-2.C
+ c56da5e38071bf300c559b628a1e6296  gcc/testsuite/g++.dg/asan/function-argument-3.C
  6a60061a97076056217dbb01be7089e7  gcc/testsuite/g++.dg/asan/interception-failure-test-1.C
  c109f79c447a9f4bd35cac5dbc643adb  gcc/testsuite/g++.dg/asan/interception-malloc-test-1.C
  5ec947b9e800038195a332828bd0637b  gcc/testsuite/g++.dg/asan/interception-test-1.C
! 280404310b225d80bc4ec71addcc10a9  gcc/testsuite/g++.dg/asan/large-func-test-1.C
  e472f2ce37f2b55b1358ec08717d9f08  gcc/testsuite/g++.dg/asan/pr55617.C
  74a04a20e12a8acd0fd7d05742cf8d63  gcc/testsuite/g++.dg/asan/pr62017.C
  505943436d80a41b5e95bf0b67db97cd  gcc/testsuite/g++.dg/asan/pr64937.C
*************** b4933e6257ffe7874c63bb5463f4ee98  gcc/te
*** 9437,9446 ****
  86c19e1b42266f9002fd92e21d16f1d7  gcc/testsuite/g++.dg/asan/pr77396-2.C
  68963853257ccf17297ec53bb77fa2bf  gcc/testsuite/g++.dg/asan/pr77396.C
  5ce2469706c2beff887e6cb5f8d929aa  gcc/testsuite/g++.dg/asan/pr78201.C
  b8f9375cf24299f4663d8538c4856b28  gcc/testsuite/g++.dg/asan/pr79783.C
! cf71b3ff337eb4d37f2f83d7dd92b137  gcc/testsuite/g++.dg/asan/pr81021.C
! 665dc0ebb74dfcb4c784209cc38aea33  gcc/testsuite/g++.dg/asan/pr81715.C
  103ce786588ede05a2ab378b3f167132  gcc/testsuite/g++.dg/asan/pr82792.C
  9c127ef1a489fa3066b519905bbcd4df  gcc/testsuite/g++.dg/asan/sanitizer_pthread_wrappers.h
  ec57ce9e20b59de0ebec29f657a688f0  gcc/testsuite/g++.dg/asan/sanitizer_test_config.h
  55a37a27a50226341bc745f47d1908c5  gcc/testsuite/g++.dg/asan/sanitizer_test_utils.h
--- 9777,9788 ----
  86c19e1b42266f9002fd92e21d16f1d7  gcc/testsuite/g++.dg/asan/pr77396-2.C
  68963853257ccf17297ec53bb77fa2bf  gcc/testsuite/g++.dg/asan/pr77396.C
  5ce2469706c2beff887e6cb5f8d929aa  gcc/testsuite/g++.dg/asan/pr78201.C
+ 3fd5156b223b5cc79b69a1d371787ddf  gcc/testsuite/g++.dg/asan/pr78651.C
  b8f9375cf24299f4663d8538c4856b28  gcc/testsuite/g++.dg/asan/pr79783.C
! e0c61fc1ff04506222ad9ce3d489202f  gcc/testsuite/g++.dg/asan/pr81021.C
! 31c09ca90e33cf7f86afffa97e2b07e4  gcc/testsuite/g++.dg/asan/pr81340.C
  103ce786588ede05a2ab378b3f167132  gcc/testsuite/g++.dg/asan/pr82792.C
+ 46004f51a9fbd56fbbea9088e6a2d1af  gcc/testsuite/g++.dg/asan/pr85081.C
  9c127ef1a489fa3066b519905bbcd4df  gcc/testsuite/g++.dg/asan/sanitizer_pthread_wrappers.h
  ec57ce9e20b59de0ebec29f657a688f0  gcc/testsuite/g++.dg/asan/sanitizer_test_config.h
  55a37a27a50226341bc745f47d1908c5  gcc/testsuite/g++.dg/asan/sanitizer_test_utils.h
*************** a86987a20e9cedd0388c3b5602a4458c  gcc/te
*** 9456,9465 ****
  c97655a29a37d7897f9edc7f3201eab3  gcc/testsuite/g++.dg/asan/use-after-scope-types-4.C
  d2d4ea16490b45388c168c416c6640d5  gcc/testsuite/g++.dg/asan/use-after-scope-types-5.C
  e20a12eb6455f420adb919299f6e8991  gcc/testsuite/g++.dg/asan/use-after-scope-types.h
! 2b91ca979d1cd0ba3142812068d73796  gcc/testsuite/g++.dg/bprob/bprob.exp
! 232269dc2a9b913c19e49f1e7a29bf08  gcc/testsuite/g++.dg/bprob/g++-bprob-1.C
  91292dc36de1287d9de59661dd0c8c78  gcc/testsuite/g++.dg/bprob/g++-bprob-2.C
  a3c9197457f42abb097a9b8dc03b0393  gcc/testsuite/g++.dg/cdce3.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
--- 9798,9808 ----
  c97655a29a37d7897f9edc7f3201eab3  gcc/testsuite/g++.dg/asan/use-after-scope-types-4.C
  d2d4ea16490b45388c168c416c6640d5  gcc/testsuite/g++.dg/asan/use-after-scope-types-5.C
  e20a12eb6455f420adb919299f6e8991  gcc/testsuite/g++.dg/asan/use-after-scope-types.h
! 3cd7eb41bad4a2b8a88bf2906f0ddb7c  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
  a3c9197457f42abb097a9b8dc03b0393  gcc/testsuite/g++.dg/cdce3.C
+ b80fe63ebbdbc8044ea34bdb0d376eb1  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
*** 9467,9516 ****
  13aa9df754ce327f35901d755310d167  gcc/testsuite/g++.dg/charset/asm5.c
  188e64ef71cd1832cf590f89eb899d5b  gcc/testsuite/g++.dg/charset/attribute1.c
  5ec905da0c5303d292f6f23f2befdd9b  gcc/testsuite/g++.dg/charset/attribute2.c
! b52a14baa71a6373e90d6de662d6f3c5  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
  5314225894f8ef8a8d8249f4a0973380  gcc/testsuite/g++.dg/charset/function.cc
  122b5789950fb2cc8284f2db10681c51  gcc/testsuite/g++.dg/charset/string.c
- 0c859e89a52fd294870dc22b98d199c8  gcc/testsuite/g++.dg/cilk-plus/AN/array_function.cc
- 481ec1946f87d006fafdf048c534708e  gcc/testsuite/g++.dg/cilk-plus/AN/array_test1_tplt.cc
- 5ee243996fb5ab09c1cf44cb269b10c3  gcc/testsuite/g++.dg/cilk-plus/AN/array_test2_tplt.cc
- 47c85ba76491ac04d1ec391a5e46d894  gcc/testsuite/g++.dg/cilk-plus/AN/array_test_ND_tplt.cc
- b2d9da1f040ed3afbcdd23f415519bdb  gcc/testsuite/g++.dg/cilk-plus/AN/braced_list.cc
- 2877c2c8ec96be97d053b30af17638e6  gcc/testsuite/g++.dg/cilk-plus/AN/builtin_fn_custom_tplt.cc
- a66a750d3455a8835bc0ea22d6acda65  gcc/testsuite/g++.dg/cilk-plus/AN/builtin_fn_mutating_tplt.cc
- fe978027195d06aeea3c7e0c24d982e1  gcc/testsuite/g++.dg/cilk-plus/AN/fp_triplet_values_tplt.c
- 4277af77b929e7f5958d4bd97b3d6112  gcc/testsuite/g++.dg/cilk-plus/AN/postincr_test.cc
- 090f9b085e238c8cc82540a9e190a4e8  gcc/testsuite/g++.dg/cilk-plus/AN/preincr_test.cc
- 518c92c54486742e62b14a274f745395  gcc/testsuite/g++.dg/cilk-plus/CK/catch_exc.cc
- aa6277e634f556c3acbb1b55f54f8e4a  gcc/testsuite/g++.dg/cilk-plus/CK/cf3.cc
- b1834bc0efcf0e79c2c11eb4d750f6ee  gcc/testsuite/g++.dg/cilk-plus/CK/cilk-for-tplt.cc
- d6bd1db2f526233748af6cd3ba247f2f  gcc/testsuite/g++.dg/cilk-plus/CK/const_spawn.cc
- 643d9264676a0adbc34901c4d337dc7c  gcc/testsuite/g++.dg/cilk-plus/CK/fib-opr-overload.cc
- bad3a74e947515618ef6891dcfa2ac63  gcc/testsuite/g++.dg/cilk-plus/CK/fib-tplt.cc
- 442ad9f9d7b2b538e21a6e32eb73438e  gcc/testsuite/g++.dg/cilk-plus/CK/for1.cc
- 39f46b625e34f658c72514544252f383  gcc/testsuite/g++.dg/cilk-plus/CK/lambda_spawns.cc
- 4633042a5e1423aa69f50e355050ce01  gcc/testsuite/g++.dg/cilk-plus/CK/lambda_spawns_tplt.cc
- 6206eec0ec1e5bf64e91c5ec61e111c6  gcc/testsuite/g++.dg/cilk-plus/CK/pr60586.cc
- d08f01f154c49cbe4b1ee60042063f71  gcc/testsuite/g++.dg/cilk-plus/CK/pr66326.cc
- 5c201f717b8b040bd8cd7f6374f9595c  gcc/testsuite/g++.dg/cilk-plus/CK/pr68001.cc
- 3634d3446572fa5615e3d7abab21999a  gcc/testsuite/g++.dg/cilk-plus/CK/pr68997.cc
- 82a2f6f74279e76db7d808f2ff7e1ff3  gcc/testsuite/g++.dg/cilk-plus/CK/pr69024.cc
- e6870385f9b181530e0830b605fbce7b  gcc/testsuite/g++.dg/cilk-plus/CK/pr69048.cc
- 78f3a2b09321676034559c2a6a252169  gcc/testsuite/g++.dg/cilk-plus/CK/pr69267.cc
- 757ad904ab484fc4b10c4ea465b5b30e  gcc/testsuite/g++.dg/cilk-plus/CK/stl_iter.cc
- 62ee13bf664d53169c61996096cfa18e  gcc/testsuite/g++.dg/cilk-plus/CK/stl_rev_iter.cc
- 8138791ef9d53de5d0df311d108b63aa  gcc/testsuite/g++.dg/cilk-plus/CK/stl_test.cc
- 5ffaf6bc57ad9aa3ef94367370aa2af4  gcc/testsuite/g++.dg/cilk-plus/cilk-plus.exp
- a58834f859442ba31d151cfeb191a901  gcc/testsuite/g++.dg/cilk-plus/ef_test.C
- f58699ded6009584b8858731f49bd826  gcc/testsuite/g++.dg/cilk-plus/for.C
- c4ff210b2769634505b0f862e57713cd  gcc/testsuite/g++.dg/cilk-plus/for2.C
- c0d65f62061db17b009f51f0196f9cf8  gcc/testsuite/g++.dg/cilk-plus/for3.C
- e329c2f412390ab80573c152ff1e9bb1  gcc/testsuite/g++.dg/cilk-plus/for4.C
- 8a14b1a54cbd90a720a260deeafd384b  gcc/testsuite/g++.dg/cilk-plus/pr60967.C
- ba54671dd86700353162567ccfc45c38  gcc/testsuite/g++.dg/cilk-plus/pr69028.C
- 48156089017391bd3a0b342efdd132c0  gcc/testsuite/g++.dg/cilk-plus/pr70565.C
  dbea3647effe634bcbcb88089a4a098e  gcc/testsuite/g++.dg/compat/abi/bitfield1.h
  21616e05ed3fb5bd1464080bb4c76c90  gcc/testsuite/g++.dg/compat/abi/bitfield1_main.C
  ed9a4f7264b3108ca35a2e480c7d2881  gcc/testsuite/g++.dg/compat/abi/bitfield1_x.C
--- 9810,9821 ----
  13aa9df754ce327f35901d755310d167  gcc/testsuite/g++.dg/charset/asm5.c
  188e64ef71cd1832cf590f89eb899d5b  gcc/testsuite/g++.dg/charset/attribute1.c
  5ec905da0c5303d292f6f23f2befdd9b  gcc/testsuite/g++.dg/charset/attribute2.c
! 4d150f2cc7ccafcce08ebc7831608d98  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
  5314225894f8ef8a8d8249f4a0973380  gcc/testsuite/g++.dg/charset/function.cc
  122b5789950fb2cc8284f2db10681c51  gcc/testsuite/g++.dg/charset/string.c
  dbea3647effe634bcbcb88089a4a098e  gcc/testsuite/g++.dg/compat/abi/bitfield1.h
  21616e05ed3fb5bd1464080bb4c76c90  gcc/testsuite/g++.dg/compat/abi/bitfield1_main.C
  ed9a4f7264b3108ca35a2e480c7d2881  gcc/testsuite/g++.dg/compat/abi/bitfield1_x.C
*************** ca927b45e57657ab38123c3f1c679b45  gcc/te
*** 9522,9527 ****
--- 9827,9838 ----
  3d9b6388219f5a45fa63acac27d1e965  gcc/testsuite/g++.dg/compat/abi/pr38736_main.C
  8f20c43d31513b2af00eae22d51e49ba  gcc/testsuite/g++.dg/compat/abi/pr38736_x.C
  599c06e1056a46b13703177d9964c3c1  gcc/testsuite/g++.dg/compat/abi/pr38736_y.C
+ e5d9cffaa45e21c36c23000e37644a6c  gcc/testsuite/g++.dg/compat/abi/pr83487-1_main.C
+ 52348a68ba63a94314513686a03ac864  gcc/testsuite/g++.dg/compat/abi/pr83487-1_x.C
+ 70c19efb810355909ad56a771187c1d1  gcc/testsuite/g++.dg/compat/abi/pr83487-1_y.C
+ e5d9cffaa45e21c36c23000e37644a6c  gcc/testsuite/g++.dg/compat/abi/pr83487-2_main.C
+ 02aafafd4615415d36980f2abe0cd78b  gcc/testsuite/g++.dg/compat/abi/pr83487-2_x.C
+ e2419887d40ddd04edb45a52cac93765  gcc/testsuite/g++.dg/compat/abi/pr83487-2_y.C
  269313799df998b2c69c0aeb5d190354  gcc/testsuite/g++.dg/compat/abi/vbase8-10.h
  e8b6009fc697fcc6695a9d76a85e4a1c  gcc/testsuite/g++.dg/compat/abi/vbase8-10_main.C
  a60cb5dbd750fbb5c363dec1bc7a0a2b  gcc/testsuite/g++.dg/compat/abi/vbase8-10_x.C
*************** f21dc1eb54ea34814c912bb958cc243b  gcc/te
*** 9538,9544 ****
  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
! c16bdcf9dcd862d29a7b3fc95e395039  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
--- 9849,9855 ----
  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
! 1cae983d82120aedecc9ffa3d42cea26  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
*** 9559,9565 ****
  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
! 102d1628a90eb908b4485fadca386044  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
--- 9870,9876 ----
  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
! 0603203b2c71b59e1445907f10fa2461  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
*** 9657,9813 ****
  7099b2ccdbe9faffb91a1279b3d9c958  gcc/testsuite/g++.dg/compat/init/init-ref2_main.C
  6599bf4c55d10d3d74d35fd52dc68f6c  gcc/testsuite/g++.dg/compat/init/init-ref2_x.C
  75bddd0f3c0ceb101b0c3111cedc4fb4  gcc/testsuite/g++.dg/compat/init/init-ref2_y.C
! 9b45439fe5a2a942d4f239d169080ede  gcc/testsuite/g++.dg/compat/struct-layout-1.exp
  b3150d6e06b56824040f5b2dadcf18ce  gcc/testsuite/g++.dg/compat/struct-layout-1.h
  5764db95d85b972fac8494daae7c161b  gcc/testsuite/g++.dg/compat/struct-layout-1_generate.c
  ba9b2b011bb6d65e0f78322916048095  gcc/testsuite/g++.dg/compat/struct-layout-1_x1.h
  7d588bff78cea94dd3152a4c181ee8c9  gcc/testsuite/g++.dg/compat/struct-layout-1_x2.h
  540c5c4712244b57919a4e690783e793  gcc/testsuite/g++.dg/compat/struct-layout-1_y1.h
  7dc3e674ef2752731b6cd90ebd1aeb0a  gcc/testsuite/g++.dg/compat/struct-layout-1_y2.h
! 53b1793b40fa9636da7458a9ab80a649  gcc/testsuite/g++.dg/concepts/alias1.C
! 4f143d45b222a6354d663807aae07e23  gcc/testsuite/g++.dg/concepts/alias2.C
! 9e07acf847864cdb1b3012a5ff5480eb  gcc/testsuite/g++.dg/concepts/alias3.C
! f0dc277282e16a103ff36a6a075b7d0c  gcc/testsuite/g++.dg/concepts/alias4.C
! ee8941140e1cf436afcdf4f949bee7b3  gcc/testsuite/g++.dg/concepts/auto1.C
! ac5f78ce350a804e2ba4bbf8a23cd430  gcc/testsuite/g++.dg/concepts/auto3.C
! 04f860c5fa2f862fd9748219341c975f  gcc/testsuite/g++.dg/concepts/class-deduction1.C
! c06e7269e2ed07889423a837d3b0e6d4  gcc/testsuite/g++.dg/concepts/class.C
! 7fa072a884181e736c3eb1792393ffd9  gcc/testsuite/g++.dg/concepts/class1.C
! 3d0fb775d80af8a04881f9f7651353d4  gcc/testsuite/g++.dg/concepts/class2.C
! e32c09cc2debf9e45bbd45899898439f  gcc/testsuite/g++.dg/concepts/class3.C
! 82194d9c8744be7ae3f535d37bb788f7  gcc/testsuite/g++.dg/concepts/class4.C
! 749fa14ce072f5c39ef8d38692008f4c  gcc/testsuite/g++.dg/concepts/class5.C
! 86d252c20a49aeea54be3734114004e2  gcc/testsuite/g++.dg/concepts/class6.C
! 0f37e29f62414944ff8ae0b75a77f2c0  gcc/testsuite/g++.dg/concepts/constrained-parm.C
! 67e1f761224a76f5a3883a8666e61e5e  gcc/testsuite/g++.dg/concepts/decl-diagnose.C
! 391bcf94c298040bce05a2bc3c1fe6a6  gcc/testsuite/g++.dg/concepts/deduction-constraint1.C
! ef831b23357717a1194aabd267da39eb  gcc/testsuite/g++.dg/concepts/diagnostic1.C
! d8f521f37e4f01ddd0581d00a83a9be0  gcc/testsuite/g++.dg/concepts/disjunction1.C
! eca2e51caee3cfce80ec8e3714c464f4  gcc/testsuite/g++.dg/concepts/dr1430.C
! 5088c07f3bb6eeb91fa790bf5e35ac12  gcc/testsuite/g++.dg/concepts/equiv.C
! 8d8c066843ef43dad83d062249b81c9e  gcc/testsuite/g++.dg/concepts/equiv2.C
! 1952696facfb66a6315b0d4f4705c4ee  gcc/testsuite/g++.dg/concepts/explicit-inst1.C
! 293687e66c9017bcf0f165578a6818c2  gcc/testsuite/g++.dg/concepts/explicit-inst2.C
! 8b68b1f9bf8c161ffdfd278fc03c91df  gcc/testsuite/g++.dg/concepts/explicit-inst3.C
! c54d31b80a13bc1b1f94dab044ce8220  gcc/testsuite/g++.dg/concepts/explicit-inst4.C
! cf802c45d5207b50b661ccdb6f59ecc3  gcc/testsuite/g++.dg/concepts/explicit-spec1.C
! d446f1819f176188d93d04c29e899b42  gcc/testsuite/g++.dg/concepts/explicit-spec2.C
! 7cf07050777a32fc5161ac164fdb6cb3  gcc/testsuite/g++.dg/concepts/explicit-spec3.C
! 8001d9738c38cddc9978b960c128d39c  gcc/testsuite/g++.dg/concepts/explicit-spec4.C
! 501c4dfeab8ff32a18f46ad605b6546d  gcc/testsuite/g++.dg/concepts/explicit-spec5.C
! 8119a7faeb5616c44ff49d2bd334eac9  gcc/testsuite/g++.dg/concepts/explicit-spec6.C
! 96104c437a91a0fb547269950a1e36f4  gcc/testsuite/g++.dg/concepts/expression.C
! 9cd0bdf0163dc59d13bb259276c6ae5e  gcc/testsuite/g++.dg/concepts/expression2.C
! 87c2debb21e393a5ad7cace00e6e3ebc  gcc/testsuite/g++.dg/concepts/expression3.C
! 1014808baa24324e788c7dd8365e1ce3  gcc/testsuite/g++.dg/concepts/feature-macro.C
! b7abb47c2caa2a79fd16fab511bb2732  gcc/testsuite/g++.dg/concepts/fn-concept1.C
! ee505056d2e844d42c2d8c9fe0a49489  gcc/testsuite/g++.dg/concepts/fn-concept2.C
! f3772c917bd00b3b70bb5a2dbb3da4a2  gcc/testsuite/g++.dg/concepts/fn1.C
! e2b8352451222f1f97fe5afe32338063  gcc/testsuite/g++.dg/concepts/fn10.C
! 59236277797c270c711301fc4c1ee08f  gcc/testsuite/g++.dg/concepts/fn2.C
! 32c0f4f929affb36acdeb442833c4f7b  gcc/testsuite/g++.dg/concepts/fn3.C
! 615dd1037687078d542a89a55d25c873  gcc/testsuite/g++.dg/concepts/fn4.C
! 13e8129f12ffda59e90e1f8b5c6a90fe  gcc/testsuite/g++.dg/concepts/fn5.C
! a2394aa9313c589886187dd8586db1a8  gcc/testsuite/g++.dg/concepts/fn6.C
! b654735c5f97135d6128807522f7437e  gcc/testsuite/g++.dg/concepts/fn7.C
! 11d1100ec3e2dc216478b9ca2cedc63a  gcc/testsuite/g++.dg/concepts/fn8.C
! 52d74f55186dad98683f96d09c39d9bc  gcc/testsuite/g++.dg/concepts/fn9.C
! 27324a45a2072b2d5f0534d2860545ed  gcc/testsuite/g++.dg/concepts/friend1.C
! 27345fcdd11315f58e4b8b4a7c16d69a  gcc/testsuite/g++.dg/concepts/friend2.C
! bf83333823e78927974bde9680b29979  gcc/testsuite/g++.dg/concepts/generic-fn-err.C
! 6cfcfd8608706418cb7c05e222c511d6  gcc/testsuite/g++.dg/concepts/generic-fn.C
! 326801857410fca4387324be0c384e84  gcc/testsuite/g++.dg/concepts/iconv1.C
! 57fc936ea7fe6bdbd1a8e092be66457b  gcc/testsuite/g++.dg/concepts/inherit-ctor1.C
! 0538a774ea629906176be9855a877504  gcc/testsuite/g++.dg/concepts/inherit-ctor2.C
! bf057c8475fe19c0663090c300a0f3f5  gcc/testsuite/g++.dg/concepts/inherit-ctor3.C
! 0b5198640dc05ba63aafb5fe97b06aa3  gcc/testsuite/g++.dg/concepts/inherit-ctor4.C
! 5fec3e56e7a586a2348a559fdec2f933  gcc/testsuite/g++.dg/concepts/intro1.C
! 0b020a2fbecf0f7a7c8ac6c10ac149d8  gcc/testsuite/g++.dg/concepts/intro2.C
! 5797841f1d53e793be19a04b4bf09448  gcc/testsuite/g++.dg/concepts/intro3.C
! 2675137565ff825fea0f8dc3c9816c69  gcc/testsuite/g++.dg/concepts/intro4.C
! 968b6e0989b205cd158c7efc9d58480b  gcc/testsuite/g++.dg/concepts/intro5.C
! 9d1253af0b065ceb96ab13675808f4d6  gcc/testsuite/g++.dg/concepts/intro6.C
! 3a021fa1f7d0c98cd3ec4c4d25178aba  gcc/testsuite/g++.dg/concepts/intro7.C
! eaa61831c2b9a231d99c85e25f51cf99  gcc/testsuite/g++.dg/concepts/member-concept.C
! e81ec8be2bbd8f56b03bdb54260bf83b  gcc/testsuite/g++.dg/concepts/memfun-err.C
! 887c3c2ca2a2428871de420db032de58  gcc/testsuite/g++.dg/concepts/memfun.C
! 3ed020998769c30c0f60c0766a71a548  gcc/testsuite/g++.dg/concepts/memfun2.C
! 11b4ba74b93c51e95da6e91d4ab98dbd  gcc/testsuite/g++.dg/concepts/memtmpl1.C
! 505cf5fc8b73c9e1c3fc49011ee6ae9a  gcc/testsuite/g++.dg/concepts/partial-concept-id1.C
! 6a7b96c3baba6ff4ed491c59c12c4cc6  gcc/testsuite/g++.dg/concepts/partial-concept-id2.C
! edcd831888b13e03765c8d7c866fcf36  gcc/testsuite/g++.dg/concepts/partial-spec.C
! 6de5160d1dda06759cd99b36d713c680  gcc/testsuite/g++.dg/concepts/partial-spec2.C
! 78eb3a4c61b414742b844cdcefacb44a  gcc/testsuite/g++.dg/concepts/partial-spec3.C
! 5358db532476ba499626dd48030eaab1  gcc/testsuite/g++.dg/concepts/partial-spec4.C
! dc55030df78052a07de1bbd75523dfb0  gcc/testsuite/g++.dg/concepts/partial-spec5.C
! 500fb339280885232f6918a89cce1a57  gcc/testsuite/g++.dg/concepts/partial-spec6.C
! 1d8e335bcc9cda3a478f14c43fa90f62  gcc/testsuite/g++.dg/concepts/placeholder1.C
! 5445826f9083e40ae753388306820f36  gcc/testsuite/g++.dg/concepts/placeholder2.C
! 87aa24a7411fd8186c2236e5bec9c08a  gcc/testsuite/g++.dg/concepts/placeholder3.C
! 3d70f99456f36b3a614515d90c64dfc4  gcc/testsuite/g++.dg/concepts/placeholder4.C
! b13fb7d38063d8e81beb3b94a16f65f5  gcc/testsuite/g++.dg/concepts/placeholder5.C
! ee2ab7436df7fa74d385a056d980c624  gcc/testsuite/g++.dg/concepts/placeholder6.C
! c6c012af786fe14233fbbe177f783c3c  gcc/testsuite/g++.dg/concepts/pr65552.C
! eb90795450a18f5bc171db38e8e78dfc  gcc/testsuite/g++.dg/concepts/pr65575.C
! 69822dc8976217ca5d893e0c7d9024b7  gcc/testsuite/g++.dg/concepts/pr65634.C
! 52cb5c9f509742aca258098d0868b041  gcc/testsuite/g++.dg/concepts/pr65636.C
! 1b4775ce50e186188781cf70a55cf3ab  gcc/testsuite/g++.dg/concepts/pr65681.C
! dbdeb4c90ebc3725c0c7d73ca9a068cd  gcc/testsuite/g++.dg/concepts/pr65848.C
! bd7ab59892afe0e5cb326a74e57a5f5d  gcc/testsuite/g++.dg/concepts/pr65854.C
! 7ba46c00831aa1d10ff57df3e00de996  gcc/testsuite/g++.dg/concepts/pr66091.C
! 7acd91d2b64bdeaeb9f3cf5f06bebeda  gcc/testsuite/g++.dg/concepts/pr67249.C
! 98e0d0a5404e81343b3aa3b65e9afe81  gcc/testsuite/g++.dg/concepts/pr68434.C
! 0de2308bc25805272fe2205fe8510a0e  gcc/testsuite/g++.dg/concepts/pr68683.C
! 2b905950c28559ce6d255a24ff8fa164  gcc/testsuite/g++.dg/concepts/regress/alias-decl-42.C
! 9b5361aa673aced62cf102d0701c1943  gcc/testsuite/g++.dg/concepts/req-neg1.C
! 7d76afa922e1e3bec10dd68710d9cb8b  gcc/testsuite/g++.dg/concepts/req1.C
! 8e951c432b29d6943cbcbead1600a6db  gcc/testsuite/g++.dg/concepts/req10.C
! 2908ff5935c8bf0f2cfce9b3d48b6712  gcc/testsuite/g++.dg/concepts/req11.C
! 961e51703fe7850e42ce3b3f0a357701  gcc/testsuite/g++.dg/concepts/req12.C
! 534882733855add7840179cfe0598b56  gcc/testsuite/g++.dg/concepts/req13.C
! 306c02e9da8be5d2392a3317d3b07469  gcc/testsuite/g++.dg/concepts/req14.C
! b5d74c772024fd3683292e37622bf702  gcc/testsuite/g++.dg/concepts/req15.C
! 027f2c7c0ad7e093a74f28f9d0d7d647  gcc/testsuite/g++.dg/concepts/req16.C
! 561f41b46177b2306d20376cbf26d558  gcc/testsuite/g++.dg/concepts/req17.C
! 8af4e2969556c6e997e15e5f597d1321  gcc/testsuite/g++.dg/concepts/req18.C
! 9ffd899c33f7220af9323a4c2742bd97  gcc/testsuite/g++.dg/concepts/req19.C
! fc37b1d1ffeb8646c92ec29e5dedb414  gcc/testsuite/g++.dg/concepts/req2.C
! 9c20a5b8ef4e5750357bf26281727129  gcc/testsuite/g++.dg/concepts/req20.C
! 9240432b308eb3d01848b9219bf54574  gcc/testsuite/g++.dg/concepts/req3.C
! 1bdb8c23a97fc02dc59b0fca6be8514d  gcc/testsuite/g++.dg/concepts/req4.C
! a847d33fd2714f5bc1c7bf82c0176102  gcc/testsuite/g++.dg/concepts/req5.C
! 9553bc47ec33281c4ec07de996a4989b  gcc/testsuite/g++.dg/concepts/req6.C
! cf1a1cf4f90160b4b86afb8e6484459d  gcc/testsuite/g++.dg/concepts/req7.C
! 16d982b507ffee80be5a1bc873fff0ea  gcc/testsuite/g++.dg/concepts/req8.C
! 8280cb973b01ac7880086901d73a394e  gcc/testsuite/g++.dg/concepts/req9.C
! 8e89d455b37ac51939ea06781abc93ad  gcc/testsuite/g++.dg/concepts/template-parm1.C
! 6e4d58e372fe14bda418c157fbb59a4b  gcc/testsuite/g++.dg/concepts/template-parm10.C
! 546f576f9c7b8a51d8235c261b013732  gcc/testsuite/g++.dg/concepts/template-parm11.C
! 3a7a9b368c858431a8a9035ce1b79a45  gcc/testsuite/g++.dg/concepts/template-parm12.C
! 44787a4526e517de2214fd4730804515  gcc/testsuite/g++.dg/concepts/template-parm2.C
! c20b843081a6b444147c33be25399e86  gcc/testsuite/g++.dg/concepts/template-parm3.C
! 505eda30cca34f1a3ff0ae6128bb7de0  gcc/testsuite/g++.dg/concepts/template-parm4.C
! 2b41d4b1f392ae82a6c4667067615dda  gcc/testsuite/g++.dg/concepts/template-parm5.C
! cd6157902547f99167843c98fa5c6632  gcc/testsuite/g++.dg/concepts/template-parm6.C
! 1b97f17f1a30c5877c8cb22a6e6adec5  gcc/testsuite/g++.dg/concepts/template-parm7.C
! 8efeb601d065cc9ab0633506e6b7e23d  gcc/testsuite/g++.dg/concepts/template-parm8.C
! 5f4eab5df8f29ff8840ea37b03ba4e31  gcc/testsuite/g++.dg/concepts/template-parm9.C
! d9b071d5b8f494f9af4041a28b45d70d  gcc/testsuite/g++.dg/concepts/template-template-parm1.C
! c4fdb13ab305393df3390aa11e3b3760  gcc/testsuite/g++.dg/concepts/traits1.C
! 282bbf2ce445f0e3acba1f5e5c356d65  gcc/testsuite/g++.dg/concepts/traits2.C
! 3a7fd10487f2f23992f97e4c3a6ea507  gcc/testsuite/g++.dg/concepts/var-concept1.C
! d5ed2ad9786621410aa2140412b4adc3  gcc/testsuite/g++.dg/concepts/var-concept2.C
! 2778a5dac9baf0e70105d377896642f5  gcc/testsuite/g++.dg/concepts/var-concept3.C
! 28cce2ca57d1f29a0d0eade359d3c202  gcc/testsuite/g++.dg/concepts/var-concept4.C
! d07861d643e4f95af3361f9a0ebabe0f  gcc/testsuite/g++.dg/concepts/var-concept5.C
! c0a0dd84a577ada307b7869dc3ea7612  gcc/testsuite/g++.dg/concepts/var-concept6.C
! d686009ae0430347493849435d065149  gcc/testsuite/g++.dg/concepts/var-templ1.C
! e943848fb59fdc24e521fa408a8d7684  gcc/testsuite/g++.dg/concepts/var-templ2.C
! 328963e1bb6b992aeb7de0ce9998eaf6  gcc/testsuite/g++.dg/concepts/var-templ3.C
! 55d37ce4725b2bb2562b6bf081fb2d6e  gcc/testsuite/g++.dg/concepts/variadic1.C
! 49188af171efd3fc7a4910e5f4c2ed79  gcc/testsuite/g++.dg/concepts/variadic2.C
  b090b7633124e41a8ed5f692e4b2bdef  gcc/testsuite/g++.dg/concepts/variadic3.C
! 14c17bbec4b3230600709517aa9565e9  gcc/testsuite/g++.dg/concepts/variadic4.C
  47d50ea9841dfff2e1add4fe21d8cdd8  gcc/testsuite/g++.dg/conflict-markers-1.C
  f25f03bef75b49b3242b2b981a26687a  gcc/testsuite/g++.dg/constexpr-null1.C
  f0aed431ce3357281e21fdd3e10a7644  gcc/testsuite/g++.dg/conversion/access1.C
--- 9968,10154 ----
  7099b2ccdbe9faffb91a1279b3d9c958  gcc/testsuite/g++.dg/compat/init/init-ref2_main.C
  6599bf4c55d10d3d74d35fd52dc68f6c  gcc/testsuite/g++.dg/compat/init/init-ref2_x.C
  75bddd0f3c0ceb101b0c3111cedc4fb4  gcc/testsuite/g++.dg/compat/init/init-ref2_y.C
! e5340ba697192688326e64905e7df744  gcc/testsuite/g++.dg/compat/struct-layout-1.exp
  b3150d6e06b56824040f5b2dadcf18ce  gcc/testsuite/g++.dg/compat/struct-layout-1.h
  5764db95d85b972fac8494daae7c161b  gcc/testsuite/g++.dg/compat/struct-layout-1_generate.c
  ba9b2b011bb6d65e0f78322916048095  gcc/testsuite/g++.dg/compat/struct-layout-1_x1.h
  7d588bff78cea94dd3152a4c181ee8c9  gcc/testsuite/g++.dg/compat/struct-layout-1_x2.h
  540c5c4712244b57919a4e690783e793  gcc/testsuite/g++.dg/compat/struct-layout-1_y1.h
  7dc3e674ef2752731b6cd90ebd1aeb0a  gcc/testsuite/g++.dg/compat/struct-layout-1_y2.h
! 7d6e46af1d90aeac247ba7174a61e45e  gcc/testsuite/g++.dg/concepts/abbrev1.C
! bbe257fc7d17e04ac4c36e490e7b696c  gcc/testsuite/g++.dg/concepts/abbrev2.C
! 1f37ac9e432f9ee0edde619b67673d1c  gcc/testsuite/g++.dg/concepts/alias1.C
! ee19bb6d219249fd7e560080f22fa0f0  gcc/testsuite/g++.dg/concepts/alias2.C
! ed21066d867983b609859123b5f9402b  gcc/testsuite/g++.dg/concepts/alias3.C
! 1183d32d14a238937e09c725fbd98d88  gcc/testsuite/g++.dg/concepts/alias4.C
! 2d1afa5f555cad886e9e34daee74fcfa  gcc/testsuite/g++.dg/concepts/auto1.C
! e5c896f3ace48022f6d1d00cb6cc6522  gcc/testsuite/g++.dg/concepts/auto3.C
! 76566f6465a549a7b9af92fb585faad5  gcc/testsuite/g++.dg/concepts/auto4.C
! e5eedd3d1be87388ddaf7d8e5723a4b1  gcc/testsuite/g++.dg/concepts/class-deduction1.C
! 19ff251b660d9f360ab38f41ae18bc80  gcc/testsuite/g++.dg/concepts/class.C
! d4ea7463600b76972a4b761ab4e41603  gcc/testsuite/g++.dg/concepts/class1.C
! 4aad999a25d6f9f3c29822b51a5e6ae9  gcc/testsuite/g++.dg/concepts/class2.C
! 3f5d6b5580567f77190753425a70512f  gcc/testsuite/g++.dg/concepts/class3.C
! 117ec991fbc69d0b700cb5596d1bef9f  gcc/testsuite/g++.dg/concepts/class4.C
! 0d2e6e5a43e82b2ee5855c735286efc7  gcc/testsuite/g++.dg/concepts/class5.C
! 8c0a12fadca2e32b1e481ec19530796a  gcc/testsuite/g++.dg/concepts/class6.C
! 1d5fb414074627e01a619c5c8e807550  gcc/testsuite/g++.dg/concepts/constrained-parm.C
! d0d2a4fc8b2fe3a1ce00907c5ed8448c  gcc/testsuite/g++.dg/concepts/debug1.C
! fdbfde54bb9b5df65ab1a8803fbd4a33  gcc/testsuite/g++.dg/concepts/decl-diagnose.C
! 935ad26138f3d7c706537cd9f18d37f0  gcc/testsuite/g++.dg/concepts/deduction-constraint1.C
! dd71981ed37c6f926862aca303fb558a  gcc/testsuite/g++.dg/concepts/diagnostic1.C
! 2ae70a7a6a5b9d2d2d3523c98db65497  gcc/testsuite/g++.dg/concepts/disjunction1.C
! 1fbafe059e0ba54fbffa92cbd6d1ec4f  gcc/testsuite/g++.dg/concepts/dr1430.C
! 9604e3e8af7c68b659fd1cfaa4179db0  gcc/testsuite/g++.dg/concepts/equiv.C
! fbbbc62f3e6bf1da3715689cb2e21786  gcc/testsuite/g++.dg/concepts/equiv2.C
! 4edb3935497cffbaa149230fca59b449  gcc/testsuite/g++.dg/concepts/explicit-inst1.C
! fc74d147be5c5c541b509ba35e49d9d2  gcc/testsuite/g++.dg/concepts/explicit-inst2.C
! e8a0594e4cac9ab65921c579d41c8a0e  gcc/testsuite/g++.dg/concepts/explicit-inst3.C
! 0ecc1b3888e15714acbe30856de88236  gcc/testsuite/g++.dg/concepts/explicit-inst4.C
! 542239094219f9544933f55fce3a802b  gcc/testsuite/g++.dg/concepts/explicit-spec1.C
! 548cf370a1446f77e4950fb0264986c0  gcc/testsuite/g++.dg/concepts/explicit-spec2.C
! 106033bc3289896f24ca67f51487accf  gcc/testsuite/g++.dg/concepts/explicit-spec3.C
! b5874044d0f8da74774ea529af586e79  gcc/testsuite/g++.dg/concepts/explicit-spec4.C
! 1fbd79772f021878a1c1edd029a1a4c9  gcc/testsuite/g++.dg/concepts/explicit-spec5.C
! 3c7cf2ee1968dcccd5ca807c408c4dc8  gcc/testsuite/g++.dg/concepts/explicit-spec6.C
! 1000c2d18f8ecc2412d91445f94f7e5b  gcc/testsuite/g++.dg/concepts/expression.C
! 29e7df291430fcb20cb76f390fccfd0a  gcc/testsuite/g++.dg/concepts/expression2.C
! 592520a3a590068b5fbaf9dcaae799ae  gcc/testsuite/g++.dg/concepts/expression3.C
! ee6f482fc1f22fc777f9247f04c80079  gcc/testsuite/g++.dg/concepts/feature-macro.C
! 86737b124222478dba63811ebceb9e47  gcc/testsuite/g++.dg/concepts/fn-concept1.C
! 53deaac5410c500c6ba56d3b44604883  gcc/testsuite/g++.dg/concepts/fn-concept2.C
! f89bf39a98bae51b2998f862f85588ee  gcc/testsuite/g++.dg/concepts/fn-generic-member-ool.C
! 8ab22436239160fc61f91d2fcf624a16  gcc/testsuite/g++.dg/concepts/fn1.C
! b021a3ec6b337b18e84ef2704e6f495e  gcc/testsuite/g++.dg/concepts/fn10.C
! 830fbe77c8eddfa9a659575fda4e7063  gcc/testsuite/g++.dg/concepts/fn2.C
! 296447baa41cad7f0c05afc009730dd6  gcc/testsuite/g++.dg/concepts/fn3.C
! adc57839d693f47381ae79a7dd401a43  gcc/testsuite/g++.dg/concepts/fn4.C
! fbb12807df55e991910ffc9076db2a02  gcc/testsuite/g++.dg/concepts/fn5.C
! 964adb3b018262675e2a6a6bc4300ee2  gcc/testsuite/g++.dg/concepts/fn6.C
! d6810ccb8e51f385db749b7754bc7497  gcc/testsuite/g++.dg/concepts/fn7.C
! 2a13258e2628b0ef5d345b6864cd9d59  gcc/testsuite/g++.dg/concepts/fn8.C
! 5879c66ce834d712d6f06dd6c91c6f18  gcc/testsuite/g++.dg/concepts/fn9.C
! 58d3c822a8fad0c0af7b931f1eb4e89d  gcc/testsuite/g++.dg/concepts/friend1.C
! 9f5479b72ee78b7f0f89c5efa31a88ce  gcc/testsuite/g++.dg/concepts/friend2.C
! 9aef5950f86c8b7fdfd1da901932ce82  gcc/testsuite/g++.dg/concepts/generic-fn-err.C
! ab893ac4604749ba791cca10c80e1b2e  gcc/testsuite/g++.dg/concepts/generic-fn.C
! 3c4fe4061259068451949f11fd503cab  gcc/testsuite/g++.dg/concepts/iconv1.C
! 21c482caf57d64081f61694d3c8aaef8  gcc/testsuite/g++.dg/concepts/inherit-ctor1.C
! 6152684664564d79bd3b7ce58f569637  gcc/testsuite/g++.dg/concepts/inherit-ctor2.C
! 5dfcbf30949851d3fe94b15545f9572d  gcc/testsuite/g++.dg/concepts/inherit-ctor3.C
! 4b909d34952e7fb5577276bd62a544dd  gcc/testsuite/g++.dg/concepts/inherit-ctor4.C
! 96c1f6f820bb3c627577f9b0a82c7813  gcc/testsuite/g++.dg/concepts/intro1.C
! fa887a85b9a1ac136a751373fd59aa3b  gcc/testsuite/g++.dg/concepts/intro2.C
! 09581805ee0b18c07f280c6f16bb9018  gcc/testsuite/g++.dg/concepts/intro3.C
! f852c7db0785d5397c526fe43cb91e2c  gcc/testsuite/g++.dg/concepts/intro4.C
! d0a6338b58b034b039d8f9d666363134  gcc/testsuite/g++.dg/concepts/intro5.C
! 7b3521eaf0f450b4618abb42b2c7d4b9  gcc/testsuite/g++.dg/concepts/intro6.C
! a4bb1d5b8b533ac474c78d11d49f13ad  gcc/testsuite/g++.dg/concepts/intro7.C
! e67744c794ffa3ff5cad89ff1d1cbd16  gcc/testsuite/g++.dg/concepts/lambda1.C
! 2777378f0e5aba527599bb9a757ff0f8  gcc/testsuite/g++.dg/concepts/member-concept.C
! 9fd7b05198a710fab4fca64410c5e08d  gcc/testsuite/g++.dg/concepts/memfun-err.C
! 22e77d6db2a565e80f4539983dc47671  gcc/testsuite/g++.dg/concepts/memfun.C
! 5b07f491b98af9f7044dccfcde3a858b  gcc/testsuite/g++.dg/concepts/memfun2.C
! 0e303596d767a3e47f9da11e89365a40  gcc/testsuite/g++.dg/concepts/memtmpl1.C
! ef647397c9fe4c3fa5a88ed55e787cc2  gcc/testsuite/g++.dg/concepts/partial-concept-id1.C
! fe6ec6b3b5d4d4ef2fe4ee1a988f0880  gcc/testsuite/g++.dg/concepts/partial-concept-id2.C
! 7b1941fe6794cf886a8cc1d0394ba431  gcc/testsuite/g++.dg/concepts/partial-spec.C
! 464b58c06caf1d44dca6927e878a4df9  gcc/testsuite/g++.dg/concepts/partial-spec2.C
! 2365c8a05fb3f08967c29b3c7c9caaa5  gcc/testsuite/g++.dg/concepts/partial-spec3.C
! d9235cef4e1d7a390a31c35338cca1f9  gcc/testsuite/g++.dg/concepts/partial-spec4.C
! 9f9b6160ae5b1864dfb7d9379f083723  gcc/testsuite/g++.dg/concepts/partial-spec5.C
! 41b58958fa539795d652968837df4320  gcc/testsuite/g++.dg/concepts/partial-spec6.C
! 9f3b53cdba6f2d4b24427403f8731510  gcc/testsuite/g++.dg/concepts/placeholder1.C
! d70ed381bb26dd195186d849ef39cb6d  gcc/testsuite/g++.dg/concepts/placeholder2.C
! 3706662e80cbc022574ada3dcd5925e3  gcc/testsuite/g++.dg/concepts/placeholder3.C
! 63544fff9f9192d032a1d7b482d4638e  gcc/testsuite/g++.dg/concepts/placeholder4.C
! 0c0c46dff4ac1bc51913be5e761db0fa  gcc/testsuite/g++.dg/concepts/placeholder5.C
! 656e49e2cd9510922002966daf9d08c3  gcc/testsuite/g++.dg/concepts/placeholder6.C
! 2e23f19968091d773a47c43a32a784ae  gcc/testsuite/g++.dg/concepts/pr58500.C
! 07c6a4dff1357ef61c0d30b12db5c948  gcc/testsuite/g++.dg/concepts/pr58534.C
! b6ba42db630bfd3259d65662fc03aaa0  gcc/testsuite/g++.dg/concepts/pr58535.C
! e4f13c677b25c36378e209a5491edfb1  gcc/testsuite/g++.dg/concepts/pr58536.C
! d246ca1de4b992a92c083e98a5ee83ee  gcc/testsuite/g++.dg/concepts/pr58548.C
! 6d6f4f8095b74e9d8fc06bc55cfcc346  gcc/testsuite/g++.dg/concepts/pr58549.C
! f8524e5cfdfad382df020242fdc55a8a  gcc/testsuite/g++.dg/concepts/pr60052.C
! e39ee16eeab2a77ec7b432c96ef0dc7b  gcc/testsuite/g++.dg/concepts/pr60053.C
! 0d21d40abe984e137873b0017f4c1dba  gcc/testsuite/g++.dg/concepts/pr60064.C
! a25d60ba8cfc4f8fff17fe07b085bb59  gcc/testsuite/g++.dg/concepts/pr60065.C
! cb815d3a7525bf862890051adf239ce3  gcc/testsuite/g++.dg/concepts/pr60377.C
! a6017b5415fc2bcf7a3df910703e0137  gcc/testsuite/g++.dg/concepts/pr60390.C
! 19ab34c3acffcfac10237d280b6846a3  gcc/testsuite/g++.dg/concepts/pr60391.C
! 83b38cf0f64980649bbc30ae8d5cb3d3  gcc/testsuite/g++.dg/concepts/pr60573.C
! 0924b74b8d8aa2b6c1252e7402691ac3  gcc/testsuite/g++.dg/concepts/pr65552.C
! 3839a81da796ee83b4b2f761ca36e529  gcc/testsuite/g++.dg/concepts/pr65575.C
! d9595801d48cd03b92441dae82ef6842  gcc/testsuite/g++.dg/concepts/pr65634.C
! 3df5c121d74331a21db9b47ca6844411  gcc/testsuite/g++.dg/concepts/pr65636.C
! ef8dff1147698cbc3639c2ce650f3542  gcc/testsuite/g++.dg/concepts/pr65681.C
! c3699425a59f3528815d87dd95b7da90  gcc/testsuite/g++.dg/concepts/pr65848.C
! 5e9288dbfc367662edf3908c18736717  gcc/testsuite/g++.dg/concepts/pr65854.C
! 3cd3a79332644b87b8093c417beea48f  gcc/testsuite/g++.dg/concepts/pr66091.C
! c18d1ef842139ba4f143a08c5975ef8f  gcc/testsuite/g++.dg/concepts/pr67249.C
! cef7ad7ca606908d4cbf663eb6044519  gcc/testsuite/g++.dg/concepts/pr67595.C
! ee82754fd3e1598099810b89c2e6a08c  gcc/testsuite/g++.dg/concepts/pr68434.C
! c9fa929a88e11fc847b4e613a98615f0  gcc/testsuite/g++.dg/concepts/pr68683.C
! c53fbacb9306537c0ac0c916d0907266  gcc/testsuite/g++.dg/concepts/pr71368.C
! 0c638369dae8c36620c27133c722d3b8  gcc/testsuite/g++.dg/concepts/pr71385.C
! e085098087940a0609cfb0754a91c57d  gcc/testsuite/g++.dg/concepts/pr71965.C
! 511f0362dfde69f86823060f6e2a9501  gcc/testsuite/g++.dg/concepts/pr80471.C
! f6f9e887363211cd8941a3ac9096edaf  gcc/testsuite/g++.dg/concepts/pr84330.C
! 0dccbf3a01d3f1c9df08b877b6072ccc  gcc/testsuite/g++.dg/concepts/pr84979-2.C
! c21f9519cee58f2375bcd67c88d916ca  gcc/testsuite/g++.dg/concepts/pr84979-3.C
! abd2cd5422360b442518ae562be25146  gcc/testsuite/g++.dg/concepts/pr84979.C
! 565723f5ed54b9a865cc0e340f3cbd7b  gcc/testsuite/g++.dg/concepts/regress/alias-decl-42.C
! f4bda68f2ff9e51654436b0541fe4122  gcc/testsuite/g++.dg/concepts/req-neg1.C
! 154da73c0e31f19b6f4aa83f54bfc855  gcc/testsuite/g++.dg/concepts/req1.C
! 7ec52c9cc1b5289f70430924f31b7c7d  gcc/testsuite/g++.dg/concepts/req10.C
! d02a23b546f2dd269b0ad3a2743dc410  gcc/testsuite/g++.dg/concepts/req11.C
! c6aa85f88082e364667f79975aaed3e7  gcc/testsuite/g++.dg/concepts/req12.C
! 2e9f213717d0242f2b5b3b0f1c5937e6  gcc/testsuite/g++.dg/concepts/req13.C
! bb10538858d95004e5b3a01ee5b2d089  gcc/testsuite/g++.dg/concepts/req14.C
! 348e32b9d02b59412bb34cf689f9721d  gcc/testsuite/g++.dg/concepts/req15.C
! 4d5e3869a1571d99ee87583c701aa005  gcc/testsuite/g++.dg/concepts/req16.C
! db3469372fe661d102f2dfcf098ad603  gcc/testsuite/g++.dg/concepts/req17.C
! 7d98fda2b033ab4a7dc1e6a84a42ad3a  gcc/testsuite/g++.dg/concepts/req18.C
! a3afcf79532c2074c09c769f88db1a4b  gcc/testsuite/g++.dg/concepts/req19.C
! b068c2db4d693e73535efc95d1c16174  gcc/testsuite/g++.dg/concepts/req2.C
! 13b14fb94e44c1559934f101ab765483  gcc/testsuite/g++.dg/concepts/req20.C
! d66ba96072b9a7f9d2380338549fc303  gcc/testsuite/g++.dg/concepts/req3.C
! fed4fe51a22021e3fb600dbce0041cfb  gcc/testsuite/g++.dg/concepts/req4.C
! 587443a8fc5e29171227aae8b0c7ce3e  gcc/testsuite/g++.dg/concepts/req5.C
! b44dcd38b09d81f68bec12c138fd02af  gcc/testsuite/g++.dg/concepts/req6.C
! de124293b163e2b8ca4955e7834fd830  gcc/testsuite/g++.dg/concepts/req7.C
! 63d53d0120b541868896bbcb88d92572  gcc/testsuite/g++.dg/concepts/req8.C
! ae4a1677f6bb7f549ec4b78db74159b5  gcc/testsuite/g++.dg/concepts/req9.C
! cfc4f08e8ebb154908542e9c05d9d3ff  gcc/testsuite/g++.dg/concepts/template-parm1.C
! 74173941f10ad2ab1212ccc8ca418ade  gcc/testsuite/g++.dg/concepts/template-parm10.C
! 222490a2bec1d1f4a6aafd10db987f32  gcc/testsuite/g++.dg/concepts/template-parm11.C
! 167ac50f5673341d12e0e5773b6008a5  gcc/testsuite/g++.dg/concepts/template-parm12.C
! ba09829bc322301074d2ea89a7255ef0  gcc/testsuite/g++.dg/concepts/template-parm2.C
! c210822f95e3bafe941703fbcf4cb62e  gcc/testsuite/g++.dg/concepts/template-parm3.C
! beba75c41fc249324bab04195c50721a  gcc/testsuite/g++.dg/concepts/template-parm4.C
! 8da3fb17d9af4613108a9e9a52850114  gcc/testsuite/g++.dg/concepts/template-parm5.C
! 954efdd349a82211d14c5eb2506e6298  gcc/testsuite/g++.dg/concepts/template-parm6.C
! b61c0501160b965f6fe16dd5b182d310  gcc/testsuite/g++.dg/concepts/template-parm7.C
! aa43b2d1c151ff2b58791c159d571812  gcc/testsuite/g++.dg/concepts/template-parm8.C
! 6b1fd8f33b3d8fc3714aea978f12e2d2  gcc/testsuite/g++.dg/concepts/template-parm9.C
! ce3af3e8172b137cda092b66871643f7  gcc/testsuite/g++.dg/concepts/template-template-parm1.C
! aaf5695ddea9cae54fe6bcbe3ecf14e8  gcc/testsuite/g++.dg/concepts/traits1.C
! 6f78be30f2be1429711d164ae8ba5573  gcc/testsuite/g++.dg/concepts/traits2.C
! f1ca2a1938a2d66c33dab38fd749b1d0  gcc/testsuite/g++.dg/concepts/var-concept1.C
! a3e7df7ff41e08ee221d9c69a044a3a1  gcc/testsuite/g++.dg/concepts/var-concept2.C
! 827a235fa211b1592bf507b9728587f3  gcc/testsuite/g++.dg/concepts/var-concept3.C
! 168f1dc920d07058583b9bf0c5a1cce2  gcc/testsuite/g++.dg/concepts/var-concept4.C
! b826d0f3405d043dc3a339bb669a045f  gcc/testsuite/g++.dg/concepts/var-concept5.C
! 92d7e82f438bb15b5c9a6d43a9bcefd4  gcc/testsuite/g++.dg/concepts/var-concept6.C
! 84c99740747347422a84a54cc84ea9b1  gcc/testsuite/g++.dg/concepts/var-concept7.C
! 82a2ae899004853046565b7967e55b43  gcc/testsuite/g++.dg/concepts/var-templ1.C
! 89927e801bb32cfe93ab1b9ab55ad9d2  gcc/testsuite/g++.dg/concepts/var-templ2.C
! 4608ee1e6f6673b3c0fc8cd972b406db  gcc/testsuite/g++.dg/concepts/var-templ3.C
! a4d0a09be6544896eef802d4fde62510  gcc/testsuite/g++.dg/concepts/variadic1.C
! bd81d280097a812051738c8bb918aaeb  gcc/testsuite/g++.dg/concepts/variadic2.C
  b090b7633124e41a8ed5f692e4b2bdef  gcc/testsuite/g++.dg/concepts/variadic3.C
! eecc831fd98b375fe8c3cbfcdf932a98  gcc/testsuite/g++.dg/concepts/variadic4.C
  47d50ea9841dfff2e1add4fe21d8cdd8  gcc/testsuite/g++.dg/conflict-markers-1.C
  f25f03bef75b49b3242b2b981a26687a  gcc/testsuite/g++.dg/constexpr-null1.C
  f0aed431ce3357281e21fdd3e10a7644  gcc/testsuite/g++.dg/conversion/access1.C
*************** da146cc2c8fcbbcd080e02f0e3f733df  gcc/te
*** 9837,9844 ****
  b0e427443037919ee45a88d886f4f4f9  gcc/testsuite/g++.dg/conversion/const1.C
  cd42b5b37923de04f2f1d946dfbd433c  gcc/testsuite/g++.dg/conversion/const2.C
  8dae0b4264c4a22a22f3c8abe5fbdf3b  gcc/testsuite/g++.dg/conversion/const3.C
! 424f02c389b9f1fb60fa25d7cda32717  gcc/testsuite/g++.dg/conversion/dr195-1.C
! a28da06fab215220e6800b44c5ac69b4  gcc/testsuite/g++.dg/conversion/dr195.C
  eb10fe6db1351b178c1c1068e9806fed  gcc/testsuite/g++.dg/conversion/dynamic1.C
  2e281007b9998371bac78412c4e9f5c0  gcc/testsuite/g++.dg/conversion/enum1.C
  1af7439d2aa92f90bfe261e157a512ad  gcc/testsuite/g++.dg/conversion/err-recover1.C
--- 10178,10185 ----
  b0e427443037919ee45a88d886f4f4f9  gcc/testsuite/g++.dg/conversion/const1.C
  cd42b5b37923de04f2f1d946dfbd433c  gcc/testsuite/g++.dg/conversion/const2.C
  8dae0b4264c4a22a22f3c8abe5fbdf3b  gcc/testsuite/g++.dg/conversion/const3.C
! 3e2c85388cdaff4d183898e00778907d  gcc/testsuite/g++.dg/conversion/dr195-1.C
! 676de82daa3fe655c491562969e4b11e  gcc/testsuite/g++.dg/conversion/dr195.C
  eb10fe6db1351b178c1c1068e9806fed  gcc/testsuite/g++.dg/conversion/dynamic1.C
  2e281007b9998371bac78412c4e9f5c0  gcc/testsuite/g++.dg/conversion/enum1.C
  1af7439d2aa92f90bfe261e157a512ad  gcc/testsuite/g++.dg/conversion/err-recover1.C
*************** cfc6f872912e76a50e7ec021f1ab09be  gcc/te
*** 9851,9857 ****
  abda548f6cf197b5d004afe0b4fa5557  gcc/testsuite/g++.dg/conversion/op3.C
  d2f8b00fe7704fadb91c180a46ed5fa9  gcc/testsuite/g++.dg/conversion/op4.C
  c0f35a8e0a449b69b0039186b48a3942  gcc/testsuite/g++.dg/conversion/op5.C
! a8c7731865b3dd81b8ffe44b8b058d57  gcc/testsuite/g++.dg/conversion/op6.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
--- 10192,10198 ----
  abda548f6cf197b5d004afe0b4fa5557  gcc/testsuite/g++.dg/conversion/op3.C
  d2f8b00fe7704fadb91c180a46ed5fa9  gcc/testsuite/g++.dg/conversion/op4.C
  c0f35a8e0a449b69b0039186b48a3942  gcc/testsuite/g++.dg/conversion/op5.C
! 4abc5f18f6f8a1f4d436b8a6b3150df3  gcc/testsuite/g++.dg/conversion/op6.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
*************** e9e3011043a9faa30c42b61fa3bdb8a8  gcc/te
*** 9890,9901 ****
  5e10de393d1872d51958157aa6257743  gcc/testsuite/g++.dg/cpp/pedantic-errors.C
  ead0211c86f0bdd9b5ba312b097e6661  gcc/testsuite/g++.dg/cpp/pr23827_cxx11.C
  e8c9f921aabceacddf429e950c792f1d  gcc/testsuite/g++.dg/cpp/pr23827_cxx98.C
! 66b703b71d6ee2e119eb91eafd8de9ac  gcc/testsuite/g++.dg/cpp/pr23827_cxx98_neg.C
  2b0b21d8b2fe290be2917f151d4a5783  gcc/testsuite/g++.dg/cpp/pr53690.C
  aa5ec21136e18dfcb8f14dc88ae5e9c2  gcc/testsuite/g++.dg/cpp/pr64127.C
  3913be0d35b0c2d704cda15ffc55701e  gcc/testsuite/g++.dg/cpp/pragma-float-const-decimal64-1.C
  ead0ed22e4b6b79f8450b4a030173cbc  gcc/testsuite/g++.dg/cpp/string-1.C
  f84dfddf756951bbf37a1a9e3972a445  gcc/testsuite/g++.dg/cpp/string-2.C
  9b49b49677814c73da8c0db6d2d2811c  gcc/testsuite/g++.dg/cpp/stringop-1.C
  7f78c2a96f75c80605950b24c40f72bf  gcc/testsuite/g++.dg/cpp/syshdr3.C
  57c7663de020fb8be24c6eb80efeda0b  gcc/testsuite/g++.dg/cpp/syshdr3.h
--- 10231,10244 ----
  5e10de393d1872d51958157aa6257743  gcc/testsuite/g++.dg/cpp/pedantic-errors.C
  ead0211c86f0bdd9b5ba312b097e6661  gcc/testsuite/g++.dg/cpp/pr23827_cxx11.C
  e8c9f921aabceacddf429e950c792f1d  gcc/testsuite/g++.dg/cpp/pr23827_cxx98.C
! b087a7523d0c72cdc440e2fb7cbd71f7  gcc/testsuite/g++.dg/cpp/pr23827_cxx98_neg.C
  2b0b21d8b2fe290be2917f151d4a5783  gcc/testsuite/g++.dg/cpp/pr53690.C
  aa5ec21136e18dfcb8f14dc88ae5e9c2  gcc/testsuite/g++.dg/cpp/pr64127.C
+ 1918c3e74bdfae76dc033786056b6c75  gcc/testsuite/g++.dg/cpp/pr83602.C
  3913be0d35b0c2d704cda15ffc55701e  gcc/testsuite/g++.dg/cpp/pragma-float-const-decimal64-1.C
  ead0ed22e4b6b79f8450b4a030173cbc  gcc/testsuite/g++.dg/cpp/string-1.C
  f84dfddf756951bbf37a1a9e3972a445  gcc/testsuite/g++.dg/cpp/string-2.C
+ bd0549c40900a8f050eb69c787548ddf  gcc/testsuite/g++.dg/cpp/string-3.C
  9b49b49677814c73da8c0db6d2d2811c  gcc/testsuite/g++.dg/cpp/stringop-1.C
  7f78c2a96f75c80605950b24c40f72bf  gcc/testsuite/g++.dg/cpp/syshdr3.C
  57c7663de020fb8be24c6eb80efeda0b  gcc/testsuite/g++.dg/cpp/syshdr3.h
*************** e17f4f7218a49c4d8a14211f32d8e747  gcc/te
*** 9914,9927 ****
  24c57c9d07145952c5515888f1ebb983  gcc/testsuite/g++.dg/cpp0x/Wnarrowing2.C
  74bb2cd707774dcc79b45b939b21d2a8  gcc/testsuite/g++.dg/cpp0x/Wnarrowing3.C
  98f5997ac53fff61b85f99bfe358a506  gcc/testsuite/g++.dg/cpp0x/Wnarrowing4.C
  6ae3451e0c7b222e73c985a0c76a4253  gcc/testsuite/g++.dg/cpp0x/Wunused-parm.C
! c9c65f2ce729014de1f8d5a02bf08a2a  gcc/testsuite/g++.dg/cpp0x/Wunused-variable-1.C
  948a776d6405969529e65e69911b6f98  gcc/testsuite/g++.dg/cpp0x/Wzero-as-null-pointer-constant-1.C
  1821a76c969bbe9fe98225106370d360  gcc/testsuite/g++.dg/cpp0x/Wzero-as-null-pointer-constant-2.C
  1388db9b52c8fb258faed2c95049bb99  gcc/testsuite/g++.dg/cpp0x/__func__.C
! 044001b13dc877ab537bdf972c319071  gcc/testsuite/g++.dg/cpp0x/access01.C
  40b47ed7e2a4054550c2b4f2cace869b  gcc/testsuite/g++.dg/cpp0x/access02.C
! 39e3515793ecc773f35fef2222d0a47e  gcc/testsuite/g++.dg/cpp0x/addressof1.C
  266a9cfa7fd685e79b2f36b271262bbd  gcc/testsuite/g++.dg/cpp0x/addressof2.C
  5df83218679f6fa5aa280fbad3c76810  gcc/testsuite/g++.dg/cpp0x/addressof3.C
  498fe7a6c30a47a98f161493ae606d95  gcc/testsuite/g++.dg/cpp0x/aggr1.C
--- 10257,10273 ----
  24c57c9d07145952c5515888f1ebb983  gcc/testsuite/g++.dg/cpp0x/Wnarrowing2.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
  6ae3451e0c7b222e73c985a0c76a4253  gcc/testsuite/g++.dg/cpp0x/Wunused-parm.C
! 55786f3aa688ed102bd0cfac7a240204  gcc/testsuite/g++.dg/cpp0x/Wunused-variable-1.C
  948a776d6405969529e65e69911b6f98  gcc/testsuite/g++.dg/cpp0x/Wzero-as-null-pointer-constant-1.C
  1821a76c969bbe9fe98225106370d360  gcc/testsuite/g++.dg/cpp0x/Wzero-as-null-pointer-constant-2.C
+ ba390f0baffc64985277221eab5182a0  gcc/testsuite/g++.dg/cpp0x/Wzero-as-null-pointer-constant-3.C
  1388db9b52c8fb258faed2c95049bb99  gcc/testsuite/g++.dg/cpp0x/__func__.C
! 86d3b4073e833363539a914f0800c51d  gcc/testsuite/g++.dg/cpp0x/abstract-default1.C
! 54225a7e008ae03600dfc119bb16f732  gcc/testsuite/g++.dg/cpp0x/access01.C
  40b47ed7e2a4054550c2b4f2cace869b  gcc/testsuite/g++.dg/cpp0x/access02.C
! 7c0e4aefff78b0a97384375c5bc64bd6  gcc/testsuite/g++.dg/cpp0x/addressof1.C
  266a9cfa7fd685e79b2f36b271262bbd  gcc/testsuite/g++.dg/cpp0x/addressof2.C
  5df83218679f6fa5aa280fbad3c76810  gcc/testsuite/g++.dg/cpp0x/addressof3.C
  498fe7a6c30a47a98f161493ae606d95  gcc/testsuite/g++.dg/cpp0x/aggr1.C
*************** ff3cdd35e9b74954a4247257ac643335  gcc/te
*** 9984,9989 ****
--- 10330,10339 ----
  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
+ 16258c0de6e69d69fbd3a8085284d69f  gcc/testsuite/g++.dg/cpp0x/alias-decl-62.C
+ 9cb8b7dfaf2c0f22e2d57a7a90b72f67  gcc/testsuite/g++.dg/cpp0x/alias-decl-63.C
  816dbf372a71890f9515376534ec312b  gcc/testsuite/g++.dg/cpp0x/alias-decl-7.C
  77aa48fcd9f9b9ffab08fa7ebc5d52e2  gcc/testsuite/g++.dg/cpp0x/alias-decl-8.C
  0fea677a266ad89646463d41e4df0566  gcc/testsuite/g++.dg/cpp0x/alias-decl-80296.C
*************** ef369c9d8dbd4b3ba5c764f92fc53a46  gcc/te
*** 9998,10006 ****
  3160c52a8ac131b03192a1bc86ef7a35  gcc/testsuite/g++.dg/cpp0x/alignas1.C
  4866e3b93b878ee0244a039b009071ca  gcc/testsuite/g++.dg/cpp0x/alignas10.C
  cda964826837ac50113537351c4b8f2b  gcc/testsuite/g++.dg/cpp0x/alignas11.C
  f1354435b9e53f5c5d923994edebb49f  gcc/testsuite/g++.dg/cpp0x/alignas2.C
! f441b8f61e57b375afffc578a0ab410b  gcc/testsuite/g++.dg/cpp0x/alignas3.C
! 842d4bc39d9ce4591190d72ce324a6a8  gcc/testsuite/g++.dg/cpp0x/alignas4.C
  2490568ef637fae72e27c31a035040f2  gcc/testsuite/g++.dg/cpp0x/alignas5.C
  98d93af53a0530bbccdcc33479419fbd  gcc/testsuite/g++.dg/cpp0x/alignas6.C
  28d7e98b1fb09b72287dd79211925768  gcc/testsuite/g++.dg/cpp0x/alignas7.C
--- 10348,10361 ----
  3160c52a8ac131b03192a1bc86ef7a35  gcc/testsuite/g++.dg/cpp0x/alignas1.C
  4866e3b93b878ee0244a039b009071ca  gcc/testsuite/g++.dg/cpp0x/alignas10.C
  cda964826837ac50113537351c4b8f2b  gcc/testsuite/g++.dg/cpp0x/alignas11.C
+ 5dc574243b6bd967a468cc95db6946b1  gcc/testsuite/g++.dg/cpp0x/alignas12.C
+ aebe00f4a175042412bb35a0e940886a  gcc/testsuite/g++.dg/cpp0x/alignas13.C
+ 4481ae71257b80b484816097254a7ecb  gcc/testsuite/g++.dg/cpp0x/alignas14.C
+ ff12be74ca1ae28c77d541ad1dc53873  gcc/testsuite/g++.dg/cpp0x/alignas15.C
+ 6b919a388a7f6ff57c7976486c409fb7  gcc/testsuite/g++.dg/cpp0x/alignas16.C
  f1354435b9e53f5c5d923994edebb49f  gcc/testsuite/g++.dg/cpp0x/alignas2.C
! af0c02bf93d49e5385b61d3e59a21e28  gcc/testsuite/g++.dg/cpp0x/alignas3.C
! 931d9bc562ab99a0d8853329e5a2298b  gcc/testsuite/g++.dg/cpp0x/alignas4.C
  2490568ef637fae72e27c31a035040f2  gcc/testsuite/g++.dg/cpp0x/alignas5.C
  98d93af53a0530bbccdcc33479419fbd  gcc/testsuite/g++.dg/cpp0x/alignas6.C
  28d7e98b1fb09b72287dd79211925768  gcc/testsuite/g++.dg/cpp0x/alignas7.C
*************** f6ed96119608d817c8a36a47de91e2bc  gcc/te
*** 10011,10020 ****
  a341935f38f4b4581206e23c9027c975  gcc/testsuite/g++.dg/cpp0x/alignof3.C
  49ca0981579359ddb45186db7cc1d8cc  gcc/testsuite/g++.dg/cpp0x/alignof4.C
  e679c3ff5560017984a9332e3cd8e485  gcc/testsuite/g++.dg/cpp0x/anon-union1.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
! d6b8228e103f94d72e6a708fde32a706  gcc/testsuite/g++.dg/cpp0x/auto1.C
  d131ba46fa4bcaa7d35a00572aeccee4  gcc/testsuite/g++.dg/cpp0x/auto10.C
  1542c32ebbd7abdc32de3a250e383558  gcc/testsuite/g++.dg/cpp0x/auto11.C
  73468f1855a41f415ce4bb0b0d6ac5d1  gcc/testsuite/g++.dg/cpp0x/auto14.C
--- 10366,10378 ----
  a341935f38f4b4581206e23c9027c975  gcc/testsuite/g++.dg/cpp0x/alignof3.C
  49ca0981579359ddb45186db7cc1d8cc  gcc/testsuite/g++.dg/cpp0x/alignof4.C
  e679c3ff5560017984a9332e3cd8e485  gcc/testsuite/g++.dg/cpp0x/anon-union1.C
+ 7b2ba02a276836f1d780b2c828e8dca5  gcc/testsuite/g++.dg/cpp0x/anon-union2.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
! 3c0401d0c967c2be023b9a9ea58bbf4a  gcc/testsuite/g++.dg/cpp0x/auto-60626.C
! 10834eb27fb21338ba1d129c1e0f8639  gcc/testsuite/g++.dg/cpp0x/auto-84662.C
! 2a20fa20736db7b66194cc49b7649588  gcc/testsuite/g++.dg/cpp0x/auto1.C
  d131ba46fa4bcaa7d35a00572aeccee4  gcc/testsuite/g++.dg/cpp0x/auto10.C
  1542c32ebbd7abdc32de3a250e383558  gcc/testsuite/g++.dg/cpp0x/auto11.C
  73468f1855a41f415ce4bb0b0d6ac5d1  gcc/testsuite/g++.dg/cpp0x/auto14.C
*************** f4db78e3cc49c260449419b9cc6acbbf  gcc/te
*** 10023,10031 ****
  e704b624ce374dc37104f7479db8fe94  gcc/testsuite/g++.dg/cpp0x/auto17.C
  fd8b4313cac23b2447fb99a794640ade  gcc/testsuite/g++.dg/cpp0x/auto18.C
  3f62281e4ace1fbe729122b650fd301f  gcc/testsuite/g++.dg/cpp0x/auto19.C
! c3b17f280e93f3b62594467d32d87662  gcc/testsuite/g++.dg/cpp0x/auto2.C
  7aef3687fe07f4e8e9048f15e1fd1da8  gcc/testsuite/g++.dg/cpp0x/auto20.C
! 125f26bba75bf498f5de0e78401f3d4c  gcc/testsuite/g++.dg/cpp0x/auto21.C
  833e733e541c0f1404c9bebc10fc45b7  gcc/testsuite/g++.dg/cpp0x/auto22.C
  e96a936d84bcdee82b6373ca3666d8e3  gcc/testsuite/g++.dg/cpp0x/auto23.C
  853aef3053fbd59823ede3d7e849d6bf  gcc/testsuite/g++.dg/cpp0x/auto24.C
--- 10381,10389 ----
  e704b624ce374dc37104f7479db8fe94  gcc/testsuite/g++.dg/cpp0x/auto17.C
  fd8b4313cac23b2447fb99a794640ade  gcc/testsuite/g++.dg/cpp0x/auto18.C
  3f62281e4ace1fbe729122b650fd301f  gcc/testsuite/g++.dg/cpp0x/auto19.C
! 4f202d0f8608d728235e240b5c99b66f  gcc/testsuite/g++.dg/cpp0x/auto2.C
  7aef3687fe07f4e8e9048f15e1fd1da8  gcc/testsuite/g++.dg/cpp0x/auto20.C
! bad0e410f23dcdb0acee4e8365284563  gcc/testsuite/g++.dg/cpp0x/auto21.C
  833e733e541c0f1404c9bebc10fc45b7  gcc/testsuite/g++.dg/cpp0x/auto22.C
  e96a936d84bcdee82b6373ca3666d8e3  gcc/testsuite/g++.dg/cpp0x/auto23.C
  853aef3053fbd59823ede3d7e849d6bf  gcc/testsuite/g++.dg/cpp0x/auto24.C
*************** d9b716e1c070d979f6ba213732af91c4  gcc/te
*** 10055,10063 ****
  19479e39ea80e3649e4b4b41c4c2abeb  gcc/testsuite/g++.dg/cpp0x/auto46.C
  44db23ed368948ddb9b1a48f48c7bdaa  gcc/testsuite/g++.dg/cpp0x/auto47.C
  a9475f77c4033a39fd7cae71ded2db91  gcc/testsuite/g++.dg/cpp0x/auto48.C
  7abd7f6467fdec05adaab6e23e984bfb  gcc/testsuite/g++.dg/cpp0x/auto5.C
  7051782825f2720fd5eee3be6f2027e9  gcc/testsuite/g++.dg/cpp0x/auto7.C
! 06343ab290491cfe5141709b74ee2c2c  gcc/testsuite/g++.dg/cpp0x/auto9.C
  4a89b70ea75ae6415ffb0149eed4dc01  gcc/testsuite/g++.dg/cpp0x/bad_array_new1.C
  a8491f3e4ee92a8454ad6b7d6c1e4429  gcc/testsuite/g++.dg/cpp0x/bad_array_new2.C
  1ea60b441f8073714f5b0d7662a304e9  gcc/testsuite/g++.dg/cpp0x/bind.C
--- 10413,10424 ----
  19479e39ea80e3649e4b4b41c4c2abeb  gcc/testsuite/g++.dg/cpp0x/auto46.C
  44db23ed368948ddb9b1a48f48c7bdaa  gcc/testsuite/g++.dg/cpp0x/auto47.C
  a9475f77c4033a39fd7cae71ded2db91  gcc/testsuite/g++.dg/cpp0x/auto48.C
+ e737c0b34a3d5c19f425eb66805b856e  gcc/testsuite/g++.dg/cpp0x/auto49.C
  7abd7f6467fdec05adaab6e23e984bfb  gcc/testsuite/g++.dg/cpp0x/auto5.C
+ 978f33e2982a63835b9b2d5b666c19c7  gcc/testsuite/g++.dg/cpp0x/auto50.C
+ a7a713ea7071d14dc175b795f443d1b0  gcc/testsuite/g++.dg/cpp0x/auto51.C
  7051782825f2720fd5eee3be6f2027e9  gcc/testsuite/g++.dg/cpp0x/auto7.C
! e1c7e78195168ae0ec18ede3f0afc64d  gcc/testsuite/g++.dg/cpp0x/auto9.C
  4a89b70ea75ae6415ffb0149eed4dc01  gcc/testsuite/g++.dg/cpp0x/bad_array_new1.C
  a8491f3e4ee92a8454ad6b7d6c1e4429  gcc/testsuite/g++.dg/cpp0x/bad_array_new2.C
  1ea60b441f8073714f5b0d7662a304e9  gcc/testsuite/g++.dg/cpp0x/bind.C
*************** b35867f02e7caf046836737e0d4b667e  gcc/te
*** 10067,10073 ****
  0e5d753f1eb3b3a9d595137ba68b25de  gcc/testsuite/g++.dg/cpp0x/bracket4.C
  6642c72ead137f2bb8a517db00fdeee3  gcc/testsuite/g++.dg/cpp0x/bracket5.C
  60c9e4061e9464e18b501e582a2d19cc  gcc/testsuite/g++.dg/cpp0x/cast-bug.C
! 187570e3c22a8b653586c0634ca8ae03  gcc/testsuite/g++.dg/cpp0x/cast.C
  c11fb9d024f89aea2e027172cee4bda2  gcc/testsuite/g++.dg/cpp0x/catch1.C
  9a0377c9d1c995200cbed48fa160d8a6  gcc/testsuite/g++.dg/cpp0x/collapse-bug.C
  00e99c6cae64f722f78b0f72a5209b78  gcc/testsuite/g++.dg/cpp0x/collapse.C
--- 10428,10434 ----
  0e5d753f1eb3b3a9d595137ba68b25de  gcc/testsuite/g++.dg/cpp0x/bracket4.C
  6642c72ead137f2bb8a517db00fdeee3  gcc/testsuite/g++.dg/cpp0x/bracket5.C
  60c9e4061e9464e18b501e582a2d19cc  gcc/testsuite/g++.dg/cpp0x/cast-bug.C
! f8373b05e3cb679fdfff8bcc4791646b  gcc/testsuite/g++.dg/cpp0x/cast.C
  c11fb9d024f89aea2e027172cee4bda2  gcc/testsuite/g++.dg/cpp0x/catch1.C
  9a0377c9d1c995200cbed48fa160d8a6  gcc/testsuite/g++.dg/cpp0x/collapse-bug.C
  00e99c6cae64f722f78b0f72a5209b78  gcc/testsuite/g++.dg/cpp0x/collapse.C
*************** c11fb9d024f89aea2e027172cee4bda2  gcc/te
*** 10075,10084 ****
  d079e67f3b2be485ac7aed93b70984d2  gcc/testsuite/g++.dg/cpp0x/constexpr-46420.C
  329a82a822423273c0c0256fd27a6d52  gcc/testsuite/g++.dg/cpp0x/constexpr-47570.C
  bcd0410c29a78e0ee79d4da979f86289  gcc/testsuite/g++.dg/cpp0x/constexpr-47969.C
! f1303eb6bbb57aeb035f6835571cb9f4  gcc/testsuite/g++.dg/cpp0x/constexpr-48089.C
  d9d702874a2d6a626dbf6482342407ef  gcc/testsuite/g++.dg/cpp0x/constexpr-48324.C
  82f2c8f0f5c7475480d4139049080a32  gcc/testsuite/g++.dg/cpp0x/constexpr-49776.C
! 0eace9d6550aa76cccd17e61da2b1eec  gcc/testsuite/g++.dg/cpp0x/constexpr-50060.C
  69387d7c268c12f5a7c3abe522df05bf  gcc/testsuite/g++.dg/cpp0x/constexpr-51369.C
  ae50dcd26c1db9c21ab23c7c6fd3e728  gcc/testsuite/g++.dg/cpp0x/constexpr-51707.C
  96317097d82b7260177af2929bb7e881  gcc/testsuite/g++.dg/cpp0x/constexpr-52282-1.C
--- 10436,10445 ----
  d079e67f3b2be485ac7aed93b70984d2  gcc/testsuite/g++.dg/cpp0x/constexpr-46420.C
  329a82a822423273c0c0256fd27a6d52  gcc/testsuite/g++.dg/cpp0x/constexpr-47570.C
  bcd0410c29a78e0ee79d4da979f86289  gcc/testsuite/g++.dg/cpp0x/constexpr-47969.C
! e981df042a28ce01d06c01014e80178d  gcc/testsuite/g++.dg/cpp0x/constexpr-48089.C
  d9d702874a2d6a626dbf6482342407ef  gcc/testsuite/g++.dg/cpp0x/constexpr-48324.C
  82f2c8f0f5c7475480d4139049080a32  gcc/testsuite/g++.dg/cpp0x/constexpr-49776.C
! ac98415dcf1478783865ded48b802514  gcc/testsuite/g++.dg/cpp0x/constexpr-50060.C
  69387d7c268c12f5a7c3abe522df05bf  gcc/testsuite/g++.dg/cpp0x/constexpr-51369.C
  ae50dcd26c1db9c21ab23c7c6fd3e728  gcc/testsuite/g++.dg/cpp0x/constexpr-51707.C
  96317097d82b7260177af2929bb7e881  gcc/testsuite/g++.dg/cpp0x/constexpr-52282-1.C
*************** b32eae8c9ccf574b6deb708c674273b2  gcc/te
*** 10096,10115 ****
  8e53de6c9b1d404bae439167b0aedfa6  gcc/testsuite/g++.dg/cpp0x/constexpr-56302.C
  bba173777ca4b2aff7fbffb7147bb9df  gcc/testsuite/g++.dg/cpp0x/constexpr-56991.C
  93577e0b8e886e9e19a854913aa6095f  gcc/testsuite/g++.dg/cpp0x/constexpr-57764.C
  a43b6847cd7fcc00f55daae03b8c2628  gcc/testsuite/g++.dg/cpp0x/constexpr-59686.C
  6c8795cdeae5c2fa4016b7b3ca3458d8  gcc/testsuite/g++.dg/cpp0x/constexpr-59937-1.C
  f5065c98f86839cc592c525cc9d11353  gcc/testsuite/g++.dg/cpp0x/constexpr-59937-2.C
  ca8ea28ced04ec6891bc72e7cc4bed0f  gcc/testsuite/g++.dg/cpp0x/constexpr-59938.C
! 6aeeb3d3c14acf229245d3206cd42b7e  gcc/testsuite/g++.dg/cpp0x/constexpr-60049.C
  7a71e9be2885cf1da8a96fde783192a2  gcc/testsuite/g++.dg/cpp0x/constexpr-60199.C
  dc37afc7e6bcc97a9ab69e0da83c8657  gcc/testsuite/g++.dg/cpp0x/constexpr-60245.C
  8b289e8cd7c3705992883143233b415b  gcc/testsuite/g++.dg/cpp0x/constexpr-60432.C
  350c3006f6bf4fe7ab0296eb00b27122  gcc/testsuite/g++.dg/cpp0x/constexpr-61484.C
  7af50e5fd6105967ed29406e175316af  gcc/testsuite/g++.dg/cpp0x/constexpr-63241.C
  b78047226f0990dcef2a33c9ae385550  gcc/testsuite/g++.dg/cpp0x/constexpr-63265.C
! ca75b69cc4bc5b9f62303cd9ef654841  gcc/testsuite/g++.dg/cpp0x/constexpr-64462.C
  11143a44ac7914805121ae6192ce49dd  gcc/testsuite/g++.dg/cpp0x/constexpr-65080.C
  d5611e2fce29fd70d832ad1caeacb2bf  gcc/testsuite/g++.dg/cpp0x/constexpr-67376.C
  9d889c590c21552a82c4176e20c4be44  gcc/testsuite/g++.dg/cpp0x/constexpr-69315.C
  a723d744b819b77f155d66488ce1a623  gcc/testsuite/g++.dg/cpp0x/constexpr-70001-1.C
  c31c54ee094906f9917e908e31bbf1b5  gcc/testsuite/g++.dg/cpp0x/constexpr-70001-2.C
--- 10457,10479 ----
  8e53de6c9b1d404bae439167b0aedfa6  gcc/testsuite/g++.dg/cpp0x/constexpr-56302.C
  bba173777ca4b2aff7fbffb7147bb9df  gcc/testsuite/g++.dg/cpp0x/constexpr-56991.C
  93577e0b8e886e9e19a854913aa6095f  gcc/testsuite/g++.dg/cpp0x/constexpr-57764.C
+ 1f6fd874e526ea6ecfdfb9174a442828  gcc/testsuite/g++.dg/cpp0x/constexpr-58541.C
  a43b6847cd7fcc00f55daae03b8c2628  gcc/testsuite/g++.dg/cpp0x/constexpr-59686.C
  6c8795cdeae5c2fa4016b7b3ca3458d8  gcc/testsuite/g++.dg/cpp0x/constexpr-59937-1.C
  f5065c98f86839cc592c525cc9d11353  gcc/testsuite/g++.dg/cpp0x/constexpr-59937-2.C
  ca8ea28ced04ec6891bc72e7cc4bed0f  gcc/testsuite/g++.dg/cpp0x/constexpr-59938.C
! c7bc49cc0ab88e66b09f58adea7a9594  gcc/testsuite/g++.dg/cpp0x/constexpr-60049.C
  7a71e9be2885cf1da8a96fde783192a2  gcc/testsuite/g++.dg/cpp0x/constexpr-60199.C
  dc37afc7e6bcc97a9ab69e0da83c8657  gcc/testsuite/g++.dg/cpp0x/constexpr-60245.C
  8b289e8cd7c3705992883143233b415b  gcc/testsuite/g++.dg/cpp0x/constexpr-60432.C
+ 55a175060cbda48a222ac9478adb572c  gcc/testsuite/g++.dg/cpp0x/constexpr-61323.C
  350c3006f6bf4fe7ab0296eb00b27122  gcc/testsuite/g++.dg/cpp0x/constexpr-61484.C
  7af50e5fd6105967ed29406e175316af  gcc/testsuite/g++.dg/cpp0x/constexpr-63241.C
  b78047226f0990dcef2a33c9ae385550  gcc/testsuite/g++.dg/cpp0x/constexpr-63265.C
! 7779b1d5f375c552bf8837132f60da73  gcc/testsuite/g++.dg/cpp0x/constexpr-64462.C
  11143a44ac7914805121ae6192ce49dd  gcc/testsuite/g++.dg/cpp0x/constexpr-65080.C
  d5611e2fce29fd70d832ad1caeacb2bf  gcc/testsuite/g++.dg/cpp0x/constexpr-67376.C
+ 946afd138ffa02d03047727df00be72b  gcc/testsuite/g++.dg/cpp0x/constexpr-68754.C
  9d889c590c21552a82c4176e20c4be44  gcc/testsuite/g++.dg/cpp0x/constexpr-69315.C
  a723d744b819b77f155d66488ce1a623  gcc/testsuite/g++.dg/cpp0x/constexpr-70001-1.C
  c31c54ee094906f9917e908e31bbf1b5  gcc/testsuite/g++.dg/cpp0x/constexpr-70001-2.C
*************** bf6a1a2ec9530a412bf9a3f7e95df3c8  gcc/te
*** 10117,10129 ****
  0f8db74a4f4db29acf48fd0a0cf80732  gcc/testsuite/g++.dg/cpp0x/constexpr-70001-4.C
  f7b8a5ff4283fd43f4dffd9d5fafd5c9  gcc/testsuite/g++.dg/cpp0x/constexpr-70204a.C
  6d2a7bdbddfaf87d584b814bf1961f04  gcc/testsuite/g++.dg/cpp0x/constexpr-70204b.C
! 4b441a48b11747fe319801157a36c4a6  gcc/testsuite/g++.dg/cpp0x/constexpr-70323.C
! afb210848d078a6555666048b75692fb  gcc/testsuite/g++.dg/cpp0x/constexpr-70323a.C
  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
  8a9f91865ab6d92e00b1d78f32c26682  gcc/testsuite/g++.dg/cpp0x/constexpr-79822.C
  6aa74413b4ef74580a0a5da7abf23914  gcc/testsuite/g++.dg/cpp0x/constexpr-98.C
  1bc1c995533b047ed8df6f6f24905cd1  gcc/testsuite/g++.dg/cpp0x/constexpr-99.C
  3ccc1912e7827aae6b55936a3bf3bb24  gcc/testsuite/g++.dg/cpp0x/constexpr-__func__.C
--- 10481,10496 ----
  0f8db74a4f4db29acf48fd0a0cf80732  gcc/testsuite/g++.dg/cpp0x/constexpr-70001-4.C
  f7b8a5ff4283fd43f4dffd9d5fafd5c9  gcc/testsuite/g++.dg/cpp0x/constexpr-70204a.C
  6d2a7bdbddfaf87d584b814bf1961f04  gcc/testsuite/g++.dg/cpp0x/constexpr-70204b.C
! 1e08fff2b2aecd8d981d3bc9bdec86a2  gcc/testsuite/g++.dg/cpp0x/constexpr-70323.C
! aa41699e56a27b02170cc57be10b3a5e  gcc/testsuite/g++.dg/cpp0x/constexpr-70323a.C
  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
  8a9f91865ab6d92e00b1d78f32c26682  gcc/testsuite/g++.dg/cpp0x/constexpr-79822.C
+ 1e7c8ba8ab02820df5254f7b652cafd5  gcc/testsuite/g++.dg/cpp0x/constexpr-84449.C
+ c5c31ddd271a1ea41e1cc0115e3e4305  gcc/testsuite/g++.dg/cpp0x/constexpr-84463.C
+ 4eed899a9b9206ac736245fb5b88c93e  gcc/testsuite/g++.dg/cpp0x/constexpr-85553.C
  6aa74413b4ef74580a0a5da7abf23914  gcc/testsuite/g++.dg/cpp0x/constexpr-98.C
  1bc1c995533b047ed8df6f6f24905cd1  gcc/testsuite/g++.dg/cpp0x/constexpr-99.C
  3ccc1912e7827aae6b55936a3bf3bb24  gcc/testsuite/g++.dg/cpp0x/constexpr-__func__.C
*************** baedeb1b9236f89f03d2fe34e0f45576  gcc/te
*** 10152,10158 ****
  c674590e5f0bbd6aa35938ccaa364818  gcc/testsuite/g++.dg/cpp0x/constexpr-array13.C
  a3fe89999694d5e28c05f50283b43674  gcc/testsuite/g++.dg/cpp0x/constexpr-array14.C
  9a2ca70ccd537baf9a32359fd8f4b890  gcc/testsuite/g++.dg/cpp0x/constexpr-array15.C
! b67bdded4c1fdae8a63fc397fa97f855  gcc/testsuite/g++.dg/cpp0x/constexpr-array17.C
  8b3cdd4f7cd1165cdb6c78c54ac301a5  gcc/testsuite/g++.dg/cpp0x/constexpr-array18.C
  687c6e77d4af3cd918c0ff421773a66c  gcc/testsuite/g++.dg/cpp0x/constexpr-array2.C
  8b7c8e7c1b64cfa0626f7f2311c9fef5  gcc/testsuite/g++.dg/cpp0x/constexpr-array3.C
--- 10519,10525 ----
  c674590e5f0bbd6aa35938ccaa364818  gcc/testsuite/g++.dg/cpp0x/constexpr-array13.C
  a3fe89999694d5e28c05f50283b43674  gcc/testsuite/g++.dg/cpp0x/constexpr-array14.C
  9a2ca70ccd537baf9a32359fd8f4b890  gcc/testsuite/g++.dg/cpp0x/constexpr-array15.C
! 88d00e3c57ca7ad033af5159ca7736ff  gcc/testsuite/g++.dg/cpp0x/constexpr-array17.C
  8b3cdd4f7cd1165cdb6c78c54ac301a5  gcc/testsuite/g++.dg/cpp0x/constexpr-array18.C
  687c6e77d4af3cd918c0ff421773a66c  gcc/testsuite/g++.dg/cpp0x/constexpr-array2.C
  8b7c8e7c1b64cfa0626f7f2311c9fef5  gcc/testsuite/g++.dg/cpp0x/constexpr-array3.C
*************** e4e15e959aaae288fa7a722d7abb7509  gcc/te
*** 10178,10184 ****
  49ef21a2036978e291dda3cfdd0db015  gcc/testsuite/g++.dg/cpp0x/constexpr-builtin2.C
  9b79d9e139bdca82ac944985ea038aa0  gcc/testsuite/g++.dg/cpp0x/constexpr-builtin3.C
  a3e1dfa48f53c341c8fd1fed39d39593  gcc/testsuite/g++.dg/cpp0x/constexpr-cache1.C
! b4cb852d98a3dfe14b6f40e361a83c7e  gcc/testsuite/g++.dg/cpp0x/constexpr-cast.C
  c69a3f036aa1a3b23cdbaaea842e210b  gcc/testsuite/g++.dg/cpp0x/constexpr-cleanup.C
  80367967b9445fd60f61c8e306a887c1  gcc/testsuite/g++.dg/cpp0x/constexpr-complex.C
  81e19679cf444654f916ddfdba9dddbb  gcc/testsuite/g++.dg/cpp0x/constexpr-complex2.C
--- 10545,10551 ----
  49ef21a2036978e291dda3cfdd0db015  gcc/testsuite/g++.dg/cpp0x/constexpr-builtin2.C
  9b79d9e139bdca82ac944985ea038aa0  gcc/testsuite/g++.dg/cpp0x/constexpr-builtin3.C
  a3e1dfa48f53c341c8fd1fed39d39593  gcc/testsuite/g++.dg/cpp0x/constexpr-cache1.C
! f2e2a8c3c4cd4ae3cee3b8d9d00cde28  gcc/testsuite/g++.dg/cpp0x/constexpr-cast.C
  c69a3f036aa1a3b23cdbaaea842e210b  gcc/testsuite/g++.dg/cpp0x/constexpr-cleanup.C
  80367967b9445fd60f61c8e306a887c1  gcc/testsuite/g++.dg/cpp0x/constexpr-complex.C
  81e19679cf444654f916ddfdba9dddbb  gcc/testsuite/g++.dg/cpp0x/constexpr-complex2.C
*************** c69a3f036aa1a3b23cdbaaea842e210b  gcc/te
*** 10187,10192 ****
--- 10554,10560 ----
  8581fb1eeb620cb25e1a416019fc44de  gcc/testsuite/g++.dg/cpp0x/constexpr-condition2.C
  d0cf4047a18cf95475f57cf96be3f551  gcc/testsuite/g++.dg/cpp0x/constexpr-const1.C
  75d9efefe5bb3dfe5b0f05252db79aa0  gcc/testsuite/g++.dg/cpp0x/constexpr-conv1.C
+ 7e8f9774868e4f214b17e146d6344110  gcc/testsuite/g++.dg/cpp0x/constexpr-conv2.C
  bcc83a93ce0107eccc68dc9df9f5d9ab  gcc/testsuite/g++.dg/cpp0x/constexpr-ctor.C
  bd0e47c4798e97d978b3655d4617973c  gcc/testsuite/g++.dg/cpp0x/constexpr-ctor10.C
  209a19455d0ca9a2da35009fb3340aec  gcc/testsuite/g++.dg/cpp0x/constexpr-ctor11.C
*************** dfc43f4a6c6619f77e2370dc3ac7c5bd  gcc/te
*** 10200,10205 ****
--- 10568,10575 ----
  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
  fe03ae0923ec0f159b32d4c95a97afbb  gcc/testsuite/g++.dg/cpp0x/constexpr-ctor4.C
  a15ac39628455598191a6c7526c0ea4b  gcc/testsuite/g++.dg/cpp0x/constexpr-ctor5.C
*************** a259b7f32c3d335c69d177ab19112031  gcc/te
*** 10213,10219 ****
  982f09c738563707c799bb936672cdef  gcc/testsuite/g++.dg/cpp0x/constexpr-decltype1.C
  c7765e8d6215ac706fbd0fd3b189155d  gcc/testsuite/g++.dg/cpp0x/constexpr-decltype2.C
  2aca1fb114aea81a9c27b98c5caa23bc  gcc/testsuite/g++.dg/cpp0x/constexpr-defarg.C
! 5c903382221907648240624e2d83cc2f  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
--- 10583,10589 ----
  982f09c738563707c799bb936672cdef  gcc/testsuite/g++.dg/cpp0x/constexpr-decltype1.C
  c7765e8d6215ac706fbd0fd3b189155d  gcc/testsuite/g++.dg/cpp0x/constexpr-decltype2.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
*************** b9f62d1adc6b6e0fe01886a17a69c102  gcc/te
*** 10221,10229 ****
  5b017b9ac3b68833449b967e43cba950  gcc/testsuite/g++.dg/cpp0x/constexpr-delete.C
  28d2bb8bbc72ff16672fb97c7fb878c5  gcc/testsuite/g++.dg/cpp0x/constexpr-delete2.C
  4f2e7c33f09e5b0c1d98c13b7f990e4a  gcc/testsuite/g++.dg/cpp0x/constexpr-deref.C
! c68a3bc43de7730c6ce3d0ae71900290  gcc/testsuite/g++.dg/cpp0x/constexpr-diag1.C
  262bf0368b4b07acdfe79a5a0de00e78  gcc/testsuite/g++.dg/cpp0x/constexpr-diag2.C
! 5bf0d34a4667079b48915c77d9eea44d  gcc/testsuite/g++.dg/cpp0x/constexpr-diag3.C
  33a3321b91b5bea229044ac073d4dab2  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
--- 10591,10599 ----
  5b017b9ac3b68833449b967e43cba950  gcc/testsuite/g++.dg/cpp0x/constexpr-delete.C
  28d2bb8bbc72ff16672fb97c7fb878c5  gcc/testsuite/g++.dg/cpp0x/constexpr-delete2.C
  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
! ebaa69f0c207975cc4dc985dff337650  gcc/testsuite/g++.dg/cpp0x/constexpr-diag3.C
  33a3321b91b5bea229044ac073d4dab2  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
*************** cf5dbf6e27520dc069362029f5cb0540  gcc/te
*** 10242,10248 ****
  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
! 86a987518dedec33f8e294732925ef83  gcc/testsuite/g++.dg/cpp0x/constexpr-ex1.C
  87f3e8546ec4dc26b3f8d02b7e14d019  gcc/testsuite/g++.dg/cpp0x/constexpr-ex2.C
  e6644795e323db4ec4f3b171e831e2f6  gcc/testsuite/g++.dg/cpp0x/constexpr-ex3.C
  ce75146a9a51521a3b4ff82cc14225c3  gcc/testsuite/g++.dg/cpp0x/constexpr-ex4.C
--- 10612,10618 ----
  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
! 4570544b4f85e2fcc79cdc49cab6983d  gcc/testsuite/g++.dg/cpp0x/constexpr-ex1.C
  87f3e8546ec4dc26b3f8d02b7e14d019  gcc/testsuite/g++.dg/cpp0x/constexpr-ex2.C
  e6644795e323db4ec4f3b171e831e2f6  gcc/testsuite/g++.dg/cpp0x/constexpr-ex3.C
  ce75146a9a51521a3b4ff82cc14225c3  gcc/testsuite/g++.dg/cpp0x/constexpr-ex4.C
*************** b8767312f53e8514f3313a50a2077696  gcc/te
*** 10258,10264 ****
  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
! 726026758db1a8482393c7ab18852b04  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
--- 10628,10634 ----
  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
*************** b8767312f53e8514f3313a50a2077696  gcc/te
*** 10266,10282 ****
  e008ea9800190f5aa711844cfa51e22a  gcc/testsuite/g++.dg/cpp0x/constexpr-ice13.C
  110e9b1c0a4293275ee1db249d4bf74c  gcc/testsuite/g++.dg/cpp0x/constexpr-ice14.C
  c0f1a3ef9d971f6d79f1dd03f5a9d4dd  gcc/testsuite/g++.dg/cpp0x/constexpr-ice15.C
! f19aadb513aa65e32668e51f27240fd8  gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C
  b9f6048a90a69c192d74f1909302134b  gcc/testsuite/g++.dg/cpp0x/constexpr-ice2.C
  8338efcd83a2b6552bc4ad1d47c18171  gcc/testsuite/g++.dg/cpp0x/constexpr-ice3.C
  a2444cbecc90b8c642eeb0fb89f00654  gcc/testsuite/g++.dg/cpp0x/constexpr-ice4.C
! d5945150e3038eedad0a850dff4851e1  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
  436d84a87112b4df7028d15367f662ab  gcc/testsuite/g++.dg/cpp0x/constexpr-incomplete1.C
! b1ca54a833e99909323572bbe2ac4c22  gcc/testsuite/g++.dg/cpp0x/constexpr-incomplete2.C
  5f8ea4d699883534fc470b2a2d74c3aa  gcc/testsuite/g++.dg/cpp0x/constexpr-incomplete3.C
  3a6eb5a62fbc60ea133029fb288f7075  gcc/testsuite/g++.dg/cpp0x/constexpr-inhctor1.C
  c9e05e81b17b9625dcde91ea2746794d  gcc/testsuite/g++.dg/cpp0x/constexpr-initlist.C
--- 10636,10655 ----
  e008ea9800190f5aa711844cfa51e22a  gcc/testsuite/g++.dg/cpp0x/constexpr-ice13.C
  110e9b1c0a4293275ee1db249d4bf74c  gcc/testsuite/g++.dg/cpp0x/constexpr-ice14.C
  c0f1a3ef9d971f6d79f1dd03f5a9d4dd  gcc/testsuite/g++.dg/cpp0x/constexpr-ice15.C
! cd2f3fede73e657ca2464928cf75258b  gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C
! cad4897b69a9dcbf2accb6f76dc6142a  gcc/testsuite/g++.dg/cpp0x/constexpr-ice17.C
! 50d8cd0efe85812d15921b8d64e4a9a9  gcc/testsuite/g++.dg/cpp0x/constexpr-ice18.C
! be7aa57f13a113b8a0987f04572807c9  gcc/testsuite/g++.dg/cpp0x/constexpr-ice19.C
  b9f6048a90a69c192d74f1909302134b  gcc/testsuite/g++.dg/cpp0x/constexpr-ice2.C
  8338efcd83a2b6552bc4ad1d47c18171  gcc/testsuite/g++.dg/cpp0x/constexpr-ice3.C
  a2444cbecc90b8c642eeb0fb89f00654  gcc/testsuite/g++.dg/cpp0x/constexpr-ice4.C
! 25e7b5480798a573cd8c5ee6185e0e93  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
  436d84a87112b4df7028d15367f662ab  gcc/testsuite/g++.dg/cpp0x/constexpr-incomplete1.C
! d1cc67ebbaf225027d63dadf52226cb5  gcc/testsuite/g++.dg/cpp0x/constexpr-incomplete2.C
  5f8ea4d699883534fc470b2a2d74c3aa  gcc/testsuite/g++.dg/cpp0x/constexpr-incomplete3.C
  3a6eb5a62fbc60ea133029fb288f7075  gcc/testsuite/g++.dg/cpp0x/constexpr-inhctor1.C
  c9e05e81b17b9625dcde91ea2746794d  gcc/testsuite/g++.dg/cpp0x/constexpr-initlist.C
*************** eaac16fcdf22c3bbc12d42310c8808c0  gcc/te
*** 10294,10306 ****
  683db5db98fc74d6eadc7aa9954bdb28  gcc/testsuite/g++.dg/cpp0x/constexpr-invisiref1.C
  37f592a6d675c9e237fe68fa9fdf71ca  gcc/testsuite/g++.dg/cpp0x/constexpr-is_literal.C
  78f36282c1b77dbf3aea60391389914d  gcc/testsuite/g++.dg/cpp0x/constexpr-list1.C
  25358bf087f99e99f8fbfc8bcd9f01be  gcc/testsuite/g++.dg/cpp0x/constexpr-main.C
  795a9ff23653541832d521a034128e3d  gcc/testsuite/g++.dg/cpp0x/constexpr-memchr.C
! 92eaaefb7f4d4e3e3d50a13597ae0b88  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
! 7aa4842f1d755f541fa8786d19c8349a  gcc/testsuite/g++.dg/cpp0x/constexpr-neg1.C
  e02963b07b48f6e88a5b755a616555ce  gcc/testsuite/g++.dg/cpp0x/constexpr-neg2.C
  57ffb63082d5ee0a0b3b7fdf424bff83  gcc/testsuite/g++.dg/cpp0x/constexpr-neg3.C
  6f7be3b3080e0dd97535cb517cf8b2fe  gcc/testsuite/g++.dg/cpp0x/constexpr-noexcept.C
--- 10667,10680 ----
  683db5db98fc74d6eadc7aa9954bdb28  gcc/testsuite/g++.dg/cpp0x/constexpr-invisiref1.C
  37f592a6d675c9e237fe68fa9fdf71ca  gcc/testsuite/g++.dg/cpp0x/constexpr-is_literal.C
  78f36282c1b77dbf3aea60391389914d  gcc/testsuite/g++.dg/cpp0x/constexpr-list1.C
+ 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
! eadd7fb5df730440e565cdf877d0c66f  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
! 5d0e68ae69b140a3f3d6c28f50471b7d  gcc/testsuite/g++.dg/cpp0x/constexpr-neg1.C
  e02963b07b48f6e88a5b755a616555ce  gcc/testsuite/g++.dg/cpp0x/constexpr-neg2.C
  57ffb63082d5ee0a0b3b7fdf424bff83  gcc/testsuite/g++.dg/cpp0x/constexpr-neg3.C
  6f7be3b3080e0dd97535cb517cf8b2fe  gcc/testsuite/g++.dg/cpp0x/constexpr-noexcept.C
*************** d1ec0d16df219b4574614b6f4fa3b9b6  gcc/te
*** 10316,10330 ****
  7984f830cb12240213de4cb699fc0fad  gcc/testsuite/g++.dg/cpp0x/constexpr-nonlit.C
  be8f4e5fcb1c587cafceedac941319f3  gcc/testsuite/g++.dg/cpp0x/constexpr-nonlit2.C
  e30db9bfd86140e4533c65e96fcc3879  gcc/testsuite/g++.dg/cpp0x/constexpr-nonstatic.C
! 52726a96be5f6b2305f7f16df85b3049  gcc/testsuite/g++.dg/cpp0x/constexpr-nullptr-1.C
! 4feb765658c4afa6f2e726a8d4068c3d  gcc/testsuite/g++.dg/cpp0x/constexpr-nullptr-2.C
  d4c1a5cc0803346fbc25f7a4d5748fd8  gcc/testsuite/g++.dg/cpp0x/constexpr-nullptr.C
  9234777336f797ed877671569794ca38  gcc/testsuite/g++.dg/cpp0x/constexpr-object1.C
  a3363a18129aba2537ab6af225e19a74  gcc/testsuite/g++.dg/cpp0x/constexpr-object2.C
  b0f3e3a129a29b94607b7667c179da90  gcc/testsuite/g++.dg/cpp0x/constexpr-overflow.C
  49a55dd7856ddc68e96fae9181b210ee  gcc/testsuite/g++.dg/cpp0x/constexpr-overflow2.C
  9b22329501cdc0c04eb177944b0b9482  gcc/testsuite/g++.dg/cpp0x/constexpr-pedantic.C
! cd5e0f32a5cab209c1d65da09ec00a33  gcc/testsuite/g++.dg/cpp0x/constexpr-pmf1.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
--- 10690,10704 ----
  7984f830cb12240213de4cb699fc0fad  gcc/testsuite/g++.dg/cpp0x/constexpr-nonlit.C
  be8f4e5fcb1c587cafceedac941319f3  gcc/testsuite/g++.dg/cpp0x/constexpr-nonlit2.C
  e30db9bfd86140e4533c65e96fcc3879  gcc/testsuite/g++.dg/cpp0x/constexpr-nonstatic.C
! 990beb043ae4d800be378b30e8be4884  gcc/testsuite/g++.dg/cpp0x/constexpr-nullptr-1.C
! 3623c3968c6c158956f2321675d38aad  gcc/testsuite/g++.dg/cpp0x/constexpr-nullptr-2.C
  d4c1a5cc0803346fbc25f7a4d5748fd8  gcc/testsuite/g++.dg/cpp0x/constexpr-nullptr.C
  9234777336f797ed877671569794ca38  gcc/testsuite/g++.dg/cpp0x/constexpr-object1.C
  a3363a18129aba2537ab6af225e19a74  gcc/testsuite/g++.dg/cpp0x/constexpr-object2.C
  b0f3e3a129a29b94607b7667c179da90  gcc/testsuite/g++.dg/cpp0x/constexpr-overflow.C
  49a55dd7856ddc68e96fae9181b210ee  gcc/testsuite/g++.dg/cpp0x/constexpr-overflow2.C
  9b22329501cdc0c04eb177944b0b9482  gcc/testsuite/g++.dg/cpp0x/constexpr-pedantic.C
! 21cafe90c117f963b0c4d2102a2109a0  gcc/testsuite/g++.dg/cpp0x/constexpr-pmf1.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
*************** e36688d452f93f851f133220f8cfd8b0  gcc/te
*** 10336,10342 ****
  bdbdee9b8211644ca4eaf7ef1be48857  gcc/testsuite/g++.dg/cpp0x/constexpr-ptrmem6.C
  32da508b62d5ba45ac51680a9a5638a4  gcc/testsuite/g++.dg/cpp0x/constexpr-ptrsub.C
  c893e2388f9acef593b874b1e6b02071  gcc/testsuite/g++.dg/cpp0x/constexpr-pure.C
! 3d462eb6b34feb0c1cf9349c9e6e976c  gcc/testsuite/g++.dg/cpp0x/constexpr-recursion.C
  d0613cd67d583f80a028bb4816e6c9e8  gcc/testsuite/g++.dg/cpp0x/constexpr-recursion2.C
  8df497f4a921feee2cc5153489dcd088  gcc/testsuite/g++.dg/cpp0x/constexpr-recursion3.C
  5e160a188aef7805034f272bd43d2ab7  gcc/testsuite/g++.dg/cpp0x/constexpr-redeclaration1.C
--- 10710,10716 ----
  bdbdee9b8211644ca4eaf7ef1be48857  gcc/testsuite/g++.dg/cpp0x/constexpr-ptrmem6.C
  32da508b62d5ba45ac51680a9a5638a4  gcc/testsuite/g++.dg/cpp0x/constexpr-ptrsub.C
  c893e2388f9acef593b874b1e6b02071  gcc/testsuite/g++.dg/cpp0x/constexpr-pure.C
! 301175b1db937e1f73fbe85f81fd00e9  gcc/testsuite/g++.dg/cpp0x/constexpr-recursion.C
  d0613cd67d583f80a028bb4816e6c9e8  gcc/testsuite/g++.dg/cpp0x/constexpr-recursion2.C
  8df497f4a921feee2cc5153489dcd088  gcc/testsuite/g++.dg/cpp0x/constexpr-recursion3.C
  5e160a188aef7805034f272bd43d2ab7  gcc/testsuite/g++.dg/cpp0x/constexpr-redeclaration1.C
*************** db629678a3f266682c3a566dd37c8b81  gcc/te
*** 10351,10360 ****
  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
! 02f423870cc066c968bec15fba98cde1  gcc/testsuite/g++.dg/cpp0x/constexpr-reinterpret1.C
  c40c8e60c51460a8c4576cf7e9487ce3  gcc/testsuite/g++.dg/cpp0x/constexpr-rom.C
  0243ed8d6dc6cc84334b7250ce7437cc  gcc/testsuite/g++.dg/cpp0x/constexpr-sassert.C
! da29d3469baa976ba2562688c9a69d8d  gcc/testsuite/g++.dg/cpp0x/constexpr-shift1.C
  7a36f88a96eb3ed09cffef0f69eabd70  gcc/testsuite/g++.dg/cpp0x/constexpr-sizeof1.C
  dd4700728489bec2565506d830e467d8  gcc/testsuite/g++.dg/cpp0x/constexpr-specialization.C
  0ad13d3b95df07add5489b194d0a0c30  gcc/testsuite/g++.dg/cpp0x/constexpr-static.C
--- 10725,10735 ----
  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
  c40c8e60c51460a8c4576cf7e9487ce3  gcc/testsuite/g++.dg/cpp0x/constexpr-rom.C
  0243ed8d6dc6cc84334b7250ce7437cc  gcc/testsuite/g++.dg/cpp0x/constexpr-sassert.C
! 707c661c266e778c1084c105e9d93852  gcc/testsuite/g++.dg/cpp0x/constexpr-self1.C
! 53af11fbe59037fb2f5c0de935371cce  gcc/testsuite/g++.dg/cpp0x/constexpr-shift1.C
  7a36f88a96eb3ed09cffef0f69eabd70  gcc/testsuite/g++.dg/cpp0x/constexpr-sizeof1.C
  dd4700728489bec2565506d830e467d8  gcc/testsuite/g++.dg/cpp0x/constexpr-specialization.C
  0ad13d3b95df07add5489b194d0a0c30  gcc/testsuite/g++.dg/cpp0x/constexpr-static.C
*************** b72a638cfe9f75108dd3de08b22b4715  gcc/te
*** 10376,10387 ****
  6eb82ff153e81bcd77b89c565cfd5a74  gcc/testsuite/g++.dg/cpp0x/constexpr-switch.C
  6c91ba87eea37f77b9dbfcbf6c0b805b  gcc/testsuite/g++.dg/cpp0x/constexpr-switch2.C
  e5015fd9f0623f977ee75ae8cbde2169  gcc/testsuite/g++.dg/cpp0x/constexpr-synth1.C
! a7f4af1fe8847d9c43e0d0d6095088b5  gcc/testsuite/g++.dg/cpp0x/constexpr-targ.C
  f3d2db606274ae9c9c0d830bbb7ebb27  gcc/testsuite/g++.dg/cpp0x/constexpr-targ2.C
  ba638c2a427eedfb5bf4ec41ae37ed36  gcc/testsuite/g++.dg/cpp0x/constexpr-targ3.C
  4b2c8215ad8bda62399e4c6ea49cb25b  gcc/testsuite/g++.dg/cpp0x/constexpr-temp1.C
  c715cc77c59c08b4178c8df94944f49a  gcc/testsuite/g++.dg/cpp0x/constexpr-template1.C
  56e1285a24a4fbdb11978e8af54953ca  gcc/testsuite/g++.dg/cpp0x/constexpr-template10.C
  3acad53c5375a99271f7531125add841  gcc/testsuite/g++.dg/cpp0x/constexpr-template2.C
  0bcbbb5fdaa0906b82119d032554061e  gcc/testsuite/g++.dg/cpp0x/constexpr-template3.C
  a05dfbf634e5313455c47b794057b288  gcc/testsuite/g++.dg/cpp0x/constexpr-template4.C
--- 10751,10763 ----
  6eb82ff153e81bcd77b89c565cfd5a74  gcc/testsuite/g++.dg/cpp0x/constexpr-switch.C
  6c91ba87eea37f77b9dbfcbf6c0b805b  gcc/testsuite/g++.dg/cpp0x/constexpr-switch2.C
  e5015fd9f0623f977ee75ae8cbde2169  gcc/testsuite/g++.dg/cpp0x/constexpr-synth1.C
! dfa9a2bd24b6233f964b6be3f2c4ffce  gcc/testsuite/g++.dg/cpp0x/constexpr-targ.C
  f3d2db606274ae9c9c0d830bbb7ebb27  gcc/testsuite/g++.dg/cpp0x/constexpr-targ2.C
  ba638c2a427eedfb5bf4ec41ae37ed36  gcc/testsuite/g++.dg/cpp0x/constexpr-targ3.C
  4b2c8215ad8bda62399e4c6ea49cb25b  gcc/testsuite/g++.dg/cpp0x/constexpr-temp1.C
  c715cc77c59c08b4178c8df94944f49a  gcc/testsuite/g++.dg/cpp0x/constexpr-template1.C
  56e1285a24a4fbdb11978e8af54953ca  gcc/testsuite/g++.dg/cpp0x/constexpr-template10.C
+ cf1b5ea6542ce4e4c53d713d22353179  gcc/testsuite/g++.dg/cpp0x/constexpr-template11.C
  3acad53c5375a99271f7531125add841  gcc/testsuite/g++.dg/cpp0x/constexpr-template2.C
  0bcbbb5fdaa0906b82119d032554061e  gcc/testsuite/g++.dg/cpp0x/constexpr-template3.C
  a05dfbf634e5313455c47b794057b288  gcc/testsuite/g++.dg/cpp0x/constexpr-template4.C
*************** fac54481719d52997e799f9f5944ce10  gcc/te
*** 10392,10398 ****
  e95760da3e98d263ace1fe8f57c6a5eb  gcc/testsuite/g++.dg/cpp0x/constexpr-template9.C
  53ba7c64d852ccf921166074b871f796  gcc/testsuite/g++.dg/cpp0x/constexpr-throw.C
  b7bf8a1d982f3cd7c0d65d88c6ff540e  gcc/testsuite/g++.dg/cpp0x/constexpr-trivial1.C
! 5541883c1a2777cb838c896a60f88921  gcc/testsuite/g++.dg/cpp0x/constexpr-trivial2.C
  107fd26cb01aa76763af3eb13fd91d91  gcc/testsuite/g++.dg/cpp0x/constexpr-trivial3.C
  77e5599180280cec4988ec1ddb372b25  gcc/testsuite/g++.dg/cpp0x/constexpr-tuple.C
  01613b042d6bb34a74608a402efa8c1d  gcc/testsuite/g++.dg/cpp0x/constexpr-tuple2.C
--- 10768,10774 ----
  e95760da3e98d263ace1fe8f57c6a5eb  gcc/testsuite/g++.dg/cpp0x/constexpr-template9.C
  53ba7c64d852ccf921166074b871f796  gcc/testsuite/g++.dg/cpp0x/constexpr-throw.C
  b7bf8a1d982f3cd7c0d65d88c6ff540e  gcc/testsuite/g++.dg/cpp0x/constexpr-trivial1.C
! 84e0e6cb7a446e49a36a296402d9eb94  gcc/testsuite/g++.dg/cpp0x/constexpr-trivial2.C
  107fd26cb01aa76763af3eb13fd91d91  gcc/testsuite/g++.dg/cpp0x/constexpr-trivial3.C
  77e5599180280cec4988ec1ddb372b25  gcc/testsuite/g++.dg/cpp0x/constexpr-tuple.C
  01613b042d6bb34a74608a402efa8c1d  gcc/testsuite/g++.dg/cpp0x/constexpr-tuple2.C
*************** f3a7fc3332c19e012de9958a5131ac30  gcc/te
*** 10427,10443 ****
  70dc080523c40a07cec30261f6f7007a  gcc/testsuite/g++.dg/cpp0x/conv-tmpl1.C
  38cf671e2c9af718ef5149c2d09c8383  gcc/testsuite/g++.dg/cpp0x/cplusplus.C
  61947bc3307a11bf874ab41c139e4d41  gcc/testsuite/g++.dg/cpp0x/cplusplus_0x.C
! 785a499e3417eea504fae30dbd16a77f  gcc/testsuite/g++.dg/cpp0x/dc1.C
  2316af8e56dcf8aca79100a06b89fffa  gcc/testsuite/g++.dg/cpp0x/dc2.C
! 6d0686aef8f8f3d43ec6437c137f6981  gcc/testsuite/g++.dg/cpp0x/dc3.C
  86a73804c5d75cd770c1b8d72949a84b  gcc/testsuite/g++.dg/cpp0x/dc4.C
  677f54601e79fdc0353d4b7835f02857  gcc/testsuite/g++.dg/cpp0x/dc5.C
  fc05398acf4b63071f73ac571828a634  gcc/testsuite/g++.dg/cpp0x/dc6.C
  bc4346829b56020609cc74488154f418  gcc/testsuite/g++.dg/cpp0x/dc7.C
  8305b7b7dfca623e4a99cb58ae840958  gcc/testsuite/g++.dg/cpp0x/dc8.C
  1772402035ea86d1426eefecdfae9712  gcc/testsuite/g++.dg/cpp0x/decl-loc1.C
  d20073ca1009509271524d321aea63b7  gcc/testsuite/g++.dg/cpp0x/decltype-1212.C
! ae3bba7fda613fe3a5a34c24f853d36d  gcc/testsuite/g++.dg/cpp0x/decltype-33837.C
  f00b922129e053cd1f5ed688a35ee5f3  gcc/testsuite/g++.dg/cpp0x/decltype-33838.C
  51bee11248b9515ebb07cbd465c4fc47  gcc/testsuite/g++.dg/cpp0x/decltype-38655.C
  b42a56c36f2871854befe2c275e21536  gcc/testsuite/g++.dg/cpp0x/decltype-54581.C
--- 10803,10820 ----
  70dc080523c40a07cec30261f6f7007a  gcc/testsuite/g++.dg/cpp0x/conv-tmpl1.C
  38cf671e2c9af718ef5149c2d09c8383  gcc/testsuite/g++.dg/cpp0x/cplusplus.C
  61947bc3307a11bf874ab41c139e4d41  gcc/testsuite/g++.dg/cpp0x/cplusplus_0x.C
! 450d9ea3c6d9042a0f4898432bc9c749  gcc/testsuite/g++.dg/cpp0x/dc1.C
  2316af8e56dcf8aca79100a06b89fffa  gcc/testsuite/g++.dg/cpp0x/dc2.C
! c560a5c9ccf40d9f553aca2c54cdbc91  gcc/testsuite/g++.dg/cpp0x/dc3.C
  86a73804c5d75cd770c1b8d72949a84b  gcc/testsuite/g++.dg/cpp0x/dc4.C
  677f54601e79fdc0353d4b7835f02857  gcc/testsuite/g++.dg/cpp0x/dc5.C
  fc05398acf4b63071f73ac571828a634  gcc/testsuite/g++.dg/cpp0x/dc6.C
  bc4346829b56020609cc74488154f418  gcc/testsuite/g++.dg/cpp0x/dc7.C
  8305b7b7dfca623e4a99cb58ae840958  gcc/testsuite/g++.dg/cpp0x/dc8.C
+ 57de5b9f42f6d62b749bc1faa80d815d  gcc/testsuite/g++.dg/cpp0x/dc9.C
  1772402035ea86d1426eefecdfae9712  gcc/testsuite/g++.dg/cpp0x/decl-loc1.C
  d20073ca1009509271524d321aea63b7  gcc/testsuite/g++.dg/cpp0x/decltype-1212.C
! c2a9b59fdf83e881c9a8f6677ffa2654  gcc/testsuite/g++.dg/cpp0x/decltype-33837.C
  f00b922129e053cd1f5ed688a35ee5f3  gcc/testsuite/g++.dg/cpp0x/decltype-33838.C
  51bee11248b9515ebb07cbd465c4fc47  gcc/testsuite/g++.dg/cpp0x/decltype-38655.C
  b42a56c36f2871854befe2c275e21536  gcc/testsuite/g++.dg/cpp0x/decltype-54581.C
*************** f1c16eae211724928eb3908ca78a9906  gcc/te
*** 10452,10463 ****
  346bf8f6597611bdb1098a12ad2eb4c7  gcc/testsuite/g++.dg/cpp0x/decltype1.C
  0e5a3836bf22c03696252480b80064b6  gcc/testsuite/g++.dg/cpp0x/decltype10.C
  dab751c0d217002893d6d2cce32516a6  gcc/testsuite/g++.dg/cpp0x/decltype11.C
! 7b78eb928548d9c6e93c3e43466a99b7  gcc/testsuite/g++.dg/cpp0x/decltype12.C
  1d189249b7e9ebf527c0d549b552ef29  gcc/testsuite/g++.dg/cpp0x/decltype13.C
  4ec2723baddfc9d905467688b0a93e32  gcc/testsuite/g++.dg/cpp0x/decltype14.C
  0a8ff98944201305d96cad72ab6c34d0  gcc/testsuite/g++.dg/cpp0x/decltype15.C
  8a9766dbcc0cb4d41d6a3ebb14e369ee  gcc/testsuite/g++.dg/cpp0x/decltype16.C
! 559c97a99220e8084d7a6188f0ade9dc  gcc/testsuite/g++.dg/cpp0x/decltype17.C
  3017900b92ec943c19254d1e6f09417a  gcc/testsuite/g++.dg/cpp0x/decltype18.C
  e86f2566a0428c2818b33bdb0b6a0984  gcc/testsuite/g++.dg/cpp0x/decltype19.C
  ad9d85d4500ad557c6ff5d638338e37f  gcc/testsuite/g++.dg/cpp0x/decltype2.C
--- 10829,10840 ----
  346bf8f6597611bdb1098a12ad2eb4c7  gcc/testsuite/g++.dg/cpp0x/decltype1.C
  0e5a3836bf22c03696252480b80064b6  gcc/testsuite/g++.dg/cpp0x/decltype10.C
  dab751c0d217002893d6d2cce32516a6  gcc/testsuite/g++.dg/cpp0x/decltype11.C
! be8fea74b105bfefc165d375173728c7  gcc/testsuite/g++.dg/cpp0x/decltype12.C
  1d189249b7e9ebf527c0d549b552ef29  gcc/testsuite/g++.dg/cpp0x/decltype13.C
  4ec2723baddfc9d905467688b0a93e32  gcc/testsuite/g++.dg/cpp0x/decltype14.C
  0a8ff98944201305d96cad72ab6c34d0  gcc/testsuite/g++.dg/cpp0x/decltype15.C
  8a9766dbcc0cb4d41d6a3ebb14e369ee  gcc/testsuite/g++.dg/cpp0x/decltype16.C
! 262715468d4254719a00ef7b15261c23  gcc/testsuite/g++.dg/cpp0x/decltype17.C
  3017900b92ec943c19254d1e6f09417a  gcc/testsuite/g++.dg/cpp0x/decltype18.C
  e86f2566a0428c2818b33bdb0b6a0984  gcc/testsuite/g++.dg/cpp0x/decltype19.C
  ad9d85d4500ad557c6ff5d638338e37f  gcc/testsuite/g++.dg/cpp0x/decltype2.C
*************** ad9d85d4500ad557c6ff5d638338e37f  gcc/te
*** 10471,10477 ****
  36fe3ea3f2239bc457e9ecfbbf2b8b79  gcc/testsuite/g++.dg/cpp0x/decltype27.C
  cf4a89f6a97febee3af4a5464d4376e2  gcc/testsuite/g++.dg/cpp0x/decltype28.C
  c2f6b0368e7faea893818dbfe1543040  gcc/testsuite/g++.dg/cpp0x/decltype29.C
! 3d559c5e51382a9832c6c0c38cdf05ad  gcc/testsuite/g++.dg/cpp0x/decltype3.C
  3ffe9a4bd265e99a11cdc602b9903250  gcc/testsuite/g++.dg/cpp0x/decltype30.C
  a66c63b98b7a52091279ca1dd1553df9  gcc/testsuite/g++.dg/cpp0x/decltype31.C
  8edd915327ee2c7fd329d8c4d9132dc2  gcc/testsuite/g++.dg/cpp0x/decltype32.C
--- 10848,10854 ----
  36fe3ea3f2239bc457e9ecfbbf2b8b79  gcc/testsuite/g++.dg/cpp0x/decltype27.C
  cf4a89f6a97febee3af4a5464d4376e2  gcc/testsuite/g++.dg/cpp0x/decltype28.C
  c2f6b0368e7faea893818dbfe1543040  gcc/testsuite/g++.dg/cpp0x/decltype29.C
! 053d92936273b14717e2ea463e58e849  gcc/testsuite/g++.dg/cpp0x/decltype3.C
  3ffe9a4bd265e99a11cdc602b9903250  gcc/testsuite/g++.dg/cpp0x/decltype30.C
  a66c63b98b7a52091279ca1dd1553df9  gcc/testsuite/g++.dg/cpp0x/decltype31.C
  8edd915327ee2c7fd329d8c4d9132dc2  gcc/testsuite/g++.dg/cpp0x/decltype32.C
*************** a3ba35bd21a746eed5c781d96b7ac1b4  gcc/te
*** 10484,10492 ****
  5c5a2ca8e170bf1af59a6323bf4acb8b  gcc/testsuite/g++.dg/cpp0x/decltype39.C
  d19f09ec1e20cf899925e0ef73d57180  gcc/testsuite/g++.dg/cpp0x/decltype4.C
  6ecda3200d1e3dc5bcc9f1d705d4288d  gcc/testsuite/g++.dg/cpp0x/decltype40.C
! 72998cd64ca70f08cf0e10c26977ba53  gcc/testsuite/g++.dg/cpp0x/decltype41.C
  a62748c335775c13524854a1863cb205  gcc/testsuite/g++.dg/cpp0x/decltype42.C
! c5cb522e38159dab988d464557385ee9  gcc/testsuite/g++.dg/cpp0x/decltype43.C
  30af567d196c3316244215ca2ff212d7  gcc/testsuite/g++.dg/cpp0x/decltype44.C
  54dcc9841c374062b51b3eb83ed44320  gcc/testsuite/g++.dg/cpp0x/decltype45.C
  b6860c73cefcae60eb68cf0330f2aa17  gcc/testsuite/g++.dg/cpp0x/decltype46.C
--- 10861,10869 ----
  5c5a2ca8e170bf1af59a6323bf4acb8b  gcc/testsuite/g++.dg/cpp0x/decltype39.C
  d19f09ec1e20cf899925e0ef73d57180  gcc/testsuite/g++.dg/cpp0x/decltype4.C
  6ecda3200d1e3dc5bcc9f1d705d4288d  gcc/testsuite/g++.dg/cpp0x/decltype40.C
! dbb3477aeefe07ee68f38b1836c1f4a2  gcc/testsuite/g++.dg/cpp0x/decltype41.C
  a62748c335775c13524854a1863cb205  gcc/testsuite/g++.dg/cpp0x/decltype42.C
! 26f780adec93249509ab39510259b2e8  gcc/testsuite/g++.dg/cpp0x/decltype43.C
  30af567d196c3316244215ca2ff212d7  gcc/testsuite/g++.dg/cpp0x/decltype44.C
  54dcc9841c374062b51b3eb83ed44320  gcc/testsuite/g++.dg/cpp0x/decltype45.C
  b6860c73cefcae60eb68cf0330f2aa17  gcc/testsuite/g++.dg/cpp0x/decltype46.C
*************** e0815b98196aea0739acd0b3e2b6b78f  gcc/te
*** 10512,10520 ****
  d1cca64c7d07feb94e9c8e864770cb6d  gcc/testsuite/g++.dg/cpp0x/decltype64.C
  55f881ad7708a2a5bbec53f3c555b54a  gcc/testsuite/g++.dg/cpp0x/decltype65.C
  ed578aa82f9f891f97537571406ae86e  gcc/testsuite/g++.dg/cpp0x/decltype66.C
  c3626f3b26fbb53bd234a4e39649b63f  gcc/testsuite/g++.dg/cpp0x/decltype7.C
  bbdff105c665351973aaa6a25eaa0940  gcc/testsuite/g++.dg/cpp0x/decltype8.C
! 4b13c00f57a3a7cb225369c29f8fd6f6  gcc/testsuite/g++.dg/cpp0x/decltype9.C
  3b20b1750b2ca6ed0f61eed98be9416e  gcc/testsuite/g++.dg/cpp0x/deduce.C
  0327ff6cdc6919e44dedf6e971a56e1d  gcc/testsuite/g++.dg/cpp0x/defaulted1.C
  ed0b7799626b31c5a32ff2aa85aca02b  gcc/testsuite/g++.dg/cpp0x/defaulted10.C
--- 10889,10898 ----
  d1cca64c7d07feb94e9c8e864770cb6d  gcc/testsuite/g++.dg/cpp0x/decltype64.C
  55f881ad7708a2a5bbec53f3c555b54a  gcc/testsuite/g++.dg/cpp0x/decltype65.C
  ed578aa82f9f891f97537571406ae86e  gcc/testsuite/g++.dg/cpp0x/decltype66.C
+ dcfc19d4fbe83e8d2caf4e63c094ac05  gcc/testsuite/g++.dg/cpp0x/decltype67.C
  c3626f3b26fbb53bd234a4e39649b63f  gcc/testsuite/g++.dg/cpp0x/decltype7.C
  bbdff105c665351973aaa6a25eaa0940  gcc/testsuite/g++.dg/cpp0x/decltype8.C
! fc3deb1155e05bed411171f339f83abb  gcc/testsuite/g++.dg/cpp0x/decltype9.C
  3b20b1750b2ca6ed0f61eed98be9416e  gcc/testsuite/g++.dg/cpp0x/deduce.C
  0327ff6cdc6919e44dedf6e971a56e1d  gcc/testsuite/g++.dg/cpp0x/defaulted1.C
  ed0b7799626b31c5a32ff2aa85aca02b  gcc/testsuite/g++.dg/cpp0x/defaulted10.C
*************** c4548cdcae10e7c07a50154babf56f56  gcc/te
*** 10527,10542 ****
  cd8d340770589ccf4b186d2235b652d0  gcc/testsuite/g++.dg/cpp0x/defaulted18.C
  06b4b5f3e4775bbcad5ef3d2f9697ff0  gcc/testsuite/g++.dg/cpp0x/defaulted19.C
  c6c23dba60439877ea9d4ecd95b6716b  gcc/testsuite/g++.dg/cpp0x/defaulted19a.C
! ff0975b78a3fa3e103fac2518d1c1a72  gcc/testsuite/g++.dg/cpp0x/defaulted2.C
  402df00ef452a091463327eb186f03fe  gcc/testsuite/g++.dg/cpp0x/defaulted20.C
  ab2ec53e6f43a87c7a2ce0dc95e5e40e  gcc/testsuite/g++.dg/cpp0x/defaulted21.C
  761773e20736e514dc3f9f126c6b1284  gcc/testsuite/g++.dg/cpp0x/defaulted22.C
! 1f24c41651236ae42a693bfcf349300e  gcc/testsuite/g++.dg/cpp0x/defaulted23.C
  9b830e70f4bd9e8040d06907198842e0  gcc/testsuite/g++.dg/cpp0x/defaulted24.C
  6f73d994ec6b567f3086494c830b9ddc  gcc/testsuite/g++.dg/cpp0x/defaulted25.C
  6c1b7b2d94aac6ba3656a0418fe2026c  gcc/testsuite/g++.dg/cpp0x/defaulted26.C
  fe14766ad327b4eaee90f7608f477476  gcc/testsuite/g++.dg/cpp0x/defaulted27.C
! c90e26dee11c719bee35e8eb3ee87a2a  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
--- 10905,10920 ----
  cd8d340770589ccf4b186d2235b652d0  gcc/testsuite/g++.dg/cpp0x/defaulted18.C
  06b4b5f3e4775bbcad5ef3d2f9697ff0  gcc/testsuite/g++.dg/cpp0x/defaulted19.C
  c6c23dba60439877ea9d4ecd95b6716b  gcc/testsuite/g++.dg/cpp0x/defaulted19a.C
! cddec9076a722e1e3b2245c4e6e95fbf  gcc/testsuite/g++.dg/cpp0x/defaulted2.C
  402df00ef452a091463327eb186f03fe  gcc/testsuite/g++.dg/cpp0x/defaulted20.C
  ab2ec53e6f43a87c7a2ce0dc95e5e40e  gcc/testsuite/g++.dg/cpp0x/defaulted21.C
  761773e20736e514dc3f9f126c6b1284  gcc/testsuite/g++.dg/cpp0x/defaulted22.C
! 168937275ffa129760d711c8e7227295  gcc/testsuite/g++.dg/cpp0x/defaulted23.C
  9b830e70f4bd9e8040d06907198842e0  gcc/testsuite/g++.dg/cpp0x/defaulted24.C
  6f73d994ec6b567f3086494c830b9ddc  gcc/testsuite/g++.dg/cpp0x/defaulted25.C
  6c1b7b2d94aac6ba3656a0418fe2026c  gcc/testsuite/g++.dg/cpp0x/defaulted26.C
  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
*************** c7e6cc6230f1d5b6c871906050eb4a8e  gcc/te
*** 10562,10567 ****
--- 10940,10946 ----
  f43c03a4784f2f2c60f5f1a33fb05baa  gcc/testsuite/g++.dg/cpp0x/defaulted49.C
  f850ce13cb38dd65e14979303082c6cf  gcc/testsuite/g++.dg/cpp0x/defaulted5.C
  758c3a05ba6b04dec3e4f589bacba06c  gcc/testsuite/g++.dg/cpp0x/defaulted50.C
+ 098b49c022529d4c990c1910200506c2  gcc/testsuite/g++.dg/cpp0x/defaulted51.C
  1983e4823fae7dc43730a329ff221148  gcc/testsuite/g++.dg/cpp0x/defaulted6.C
  bbb1e584edf09356b8623f522ff03019  gcc/testsuite/g++.dg/cpp0x/defaulted7.C
  cbe0ba147a1df371f25c8ab8623476ef  gcc/testsuite/g++.dg/cpp0x/defaulted8.C
*************** eb4634d27d5a5c365fd14baf4c66848f  gcc/te
*** 10580,10591 ****
  18070f931a0da2efa8ca9b80ac6bf71c  gcc/testsuite/g++.dg/cpp0x/deleted8.C
  cfa749d587e9ffe675ffde4ecd146469  gcc/testsuite/g++.dg/cpp0x/deleted9.C
  ca26ad5278a2ac2347db2c2a451bdddf  gcc/testsuite/g++.dg/cpp0x/dependent1.C
! 37f865a98047a62dda277db6890170ab  gcc/testsuite/g++.dg/cpp0x/desig1.C
  e111c1f4739203185f9d6294ebadcc5f  gcc/testsuite/g++.dg/cpp0x/diag1.C
  56b051f9e6f8f51d106fe800ef06e54a  gcc/testsuite/g++.dg/cpp0x/diag2.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
  5c711968979f97af62f871b9ff96e097  gcc/testsuite/g++.dg/cpp0x/elision_conv.C
  3370bb8bb4d3cb46e73b821ac6785756  gcc/testsuite/g++.dg/cpp0x/elision_neg.C
  af521f07a34d29e505189640746f3ea0  gcc/testsuite/g++.dg/cpp0x/elision_weak.C
--- 10959,10976 ----
  18070f931a0da2efa8ca9b80ac6bf71c  gcc/testsuite/g++.dg/cpp0x/deleted8.C
  cfa749d587e9ffe675ffde4ecd146469  gcc/testsuite/g++.dg/cpp0x/deleted9.C
  ca26ad5278a2ac2347db2c2a451bdddf  gcc/testsuite/g++.dg/cpp0x/dependent1.C
! 5de6edcb8f5c4a1b19557e4fe1234ec8  gcc/testsuite/g++.dg/cpp0x/desig1.C
! bbac96f234fa44dfc7175446cf573528  gcc/testsuite/g++.dg/cpp0x/desig2.C
! 2270461b06f25a4e26eb23e1b3a995c9  gcc/testsuite/g++.dg/cpp0x/desig3.C
! e19b1884115cbf11b34984ce19905aba  gcc/testsuite/g++.dg/cpp0x/desig4.C
  e111c1f4739203185f9d6294ebadcc5f  gcc/testsuite/g++.dg/cpp0x/diag1.C
  56b051f9e6f8f51d106fe800ef06e54a  gcc/testsuite/g++.dg/cpp0x/diag2.C
+ be2f327033fbf2bb4c287d571b817102  gcc/testsuite/g++.dg/cpp0x/dr2061.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
  3370bb8bb4d3cb46e73b821ac6785756  gcc/testsuite/g++.dg/cpp0x/elision_neg.C
  af521f07a34d29e505189640746f3ea0  gcc/testsuite/g++.dg/cpp0x/elision_weak.C
*************** debb7cdd47e6b29dab60a0c1c616a2a9  gcc/te
*** 10617,10622 ****
--- 11002,11010 ----
  aa85c0553f87574847d97be55cc90542  gcc/testsuite/g++.dg/cpp0x/enum31.C
  24a1cf067e2c2f223e24528a9c725d15  gcc/testsuite/g++.dg/cpp0x/enum32.C
  9b9f33835db7e9e3c1180e39a1e2002a  gcc/testsuite/g++.dg/cpp0x/enum33.C
+ cd13bec4a277695c3f0d055601e86cec  gcc/testsuite/g++.dg/cpp0x/enum34.C
+ b1410081d8b18a483605fea34ded714b  gcc/testsuite/g++.dg/cpp0x/enum35.C
+ 948a96ff04f2a9966e35400fe5a0ae86  gcc/testsuite/g++.dg/cpp0x/enum36.C
  4314a939d182c8ee315404a2d9cf3ec3  gcc/testsuite/g++.dg/cpp0x/enum4.C
  771003df84c0886c950718b7f6d81033  gcc/testsuite/g++.dg/cpp0x/enum5.C
  67ec15297186c0dc5b419618c460a2f2  gcc/testsuite/g++.dg/cpp0x/enum6.C
*************** abc44eb22da72a23ff5cdc8dc068d0e0  gcc/te
*** 10625,10637 ****
  93c84144d7315544bcdba227b8f91255  gcc/testsuite/g++.dg/cpp0x/enum9.C
  bdc5d7cd7be42204d0e03646eed23b02  gcc/testsuite/g++.dg/cpp0x/enum_base.C
  f55b557f4964b9a55a6419d83ef1aef3  gcc/testsuite/g++.dg/cpp0x/enum_base2.C
! 54a06363351a202ee9aa7f04362e9d07  gcc/testsuite/g++.dg/cpp0x/enum_base3.C
  e7c84c63ead58305d6411cb0d3c78c80  gcc/testsuite/g++.dg/cpp0x/enum_base_warn.C
! 690ef4d51c0bd47dc17b9270913d2838  gcc/testsuite/g++.dg/cpp0x/error1.C
  64639657f60c12134229fb047d181d85  gcc/testsuite/g++.dg/cpp0x/error2.C
  f62a97fe793cbb758f511e602db308aa  gcc/testsuite/g++.dg/cpp0x/error3.C
  03e85bfe79a36b0943412c8d86cc8b0a  gcc/testsuite/g++.dg/cpp0x/error4.C
! 12f96fc2b86b6c053315c8da91c78f3d  gcc/testsuite/g++.dg/cpp0x/error5.C
  225f7337cc65089cb4dbd094cb84c9c2  gcc/testsuite/g++.dg/cpp0x/error6.C
  f75f41e0c1359b56dd9a9190d3b7dbfc  gcc/testsuite/g++.dg/cpp0x/error7.C
  013461f339aafa92beaf749d69a672d1  gcc/testsuite/g++.dg/cpp0x/error8.C
--- 11013,11025 ----
  93c84144d7315544bcdba227b8f91255  gcc/testsuite/g++.dg/cpp0x/enum9.C
  bdc5d7cd7be42204d0e03646eed23b02  gcc/testsuite/g++.dg/cpp0x/enum_base.C
  f55b557f4964b9a55a6419d83ef1aef3  gcc/testsuite/g++.dg/cpp0x/enum_base2.C
! 154448b43e164debdce11a9ebc7b4030  gcc/testsuite/g++.dg/cpp0x/enum_base3.C
  e7c84c63ead58305d6411cb0d3c78c80  gcc/testsuite/g++.dg/cpp0x/enum_base_warn.C
! 1d7dcb56751b766d0b400f8472c4bd2f  gcc/testsuite/g++.dg/cpp0x/error1.C
  64639657f60c12134229fb047d181d85  gcc/testsuite/g++.dg/cpp0x/error2.C
  f62a97fe793cbb758f511e602db308aa  gcc/testsuite/g++.dg/cpp0x/error3.C
  03e85bfe79a36b0943412c8d86cc8b0a  gcc/testsuite/g++.dg/cpp0x/error4.C
! 86f522a545bee30850aaa68973292430  gcc/testsuite/g++.dg/cpp0x/error5.C
  225f7337cc65089cb4dbd094cb84c9c2  gcc/testsuite/g++.dg/cpp0x/error6.C
  f75f41e0c1359b56dd9a9190d3b7dbfc  gcc/testsuite/g++.dg/cpp0x/error7.C
  013461f339aafa92beaf749d69a672d1  gcc/testsuite/g++.dg/cpp0x/error8.C
*************** be032bb4361dd11f064d960f788b56ae  gcc/te
*** 10651,10669 ****
--- 11039,11064 ----
  17b14634dec8aeb365371418aa64cddf  gcc/testsuite/g++.dg/cpp0x/extern_template-1.C
  4c3a1b08c781a6bc64801d804be82d89  gcc/testsuite/g++.dg/cpp0x/extern_template-2.C
  a90d02344ce471556a85a9970c53f219  gcc/testsuite/g++.dg/cpp0x/extern_template-3.C
+ e69d01a320a7471c0585ac2d75efcac2  gcc/testsuite/g++.dg/cpp0x/extern_template-4.C
  592cc710524d5d21c28b065dd6c6de7c  gcc/testsuite/g++.dg/cpp0x/fallthrough1.C
  c2982fdb85366105719171be7bb04eb0  gcc/testsuite/g++.dg/cpp0x/fallthrough2.C
  e719fc0782c02fa926744188563c8722  gcc/testsuite/g++.dg/cpp0x/fntmpdefarg1.C
  8b46fc26c58195fd05de5a6953f25c49  gcc/testsuite/g++.dg/cpp0x/fntmpdefarg2.C
+ 65b3e6cf5d9cfb22620f647f7ad53258  gcc/testsuite/g++.dg/cpp0x/fntmpdefarg2a.C
  e59d3f76627bf31bf8cc43a2fe4b6df9  gcc/testsuite/g++.dg/cpp0x/fntmpdefarg3.C
  cf1da5498725899c52629122a71d79b9  gcc/testsuite/g++.dg/cpp0x/fntmpdefarg4.C
+ 7b535da3b72239919548aadb2187179f  gcc/testsuite/g++.dg/cpp0x/fntmpdefarg4a.C
  addea0686f679f28f9e10317665cb558  gcc/testsuite/g++.dg/cpp0x/fntmpdefarg5.C
  9cd5747227de9f575a1c66c4c948ad10  gcc/testsuite/g++.dg/cpp0x/fntmpdefarg6.C
+ f2921819772371874c8b1c629700331e  gcc/testsuite/g++.dg/cpp0x/fntmpdefarg7.C
+ 27091ff6260b20eed4a8f25bb15a6a89  gcc/testsuite/g++.dg/cpp0x/fntmpdefarg8.C
  345ce7592fe1c32e330c2d3d26949440  gcc/testsuite/g++.dg/cpp0x/forw_enum1.C
  1a0224c800121a670c310137cf3bd67d  gcc/testsuite/g++.dg/cpp0x/forw_enum10.C
  2239f6a9c812e24f922b1e66f627e481  gcc/testsuite/g++.dg/cpp0x/forw_enum11.C
  f05e4f658ae1db4e8a9a44d160718471  gcc/testsuite/g++.dg/cpp0x/forw_enum12.C
  9e09f62ad5729c4827814d5a06b19c09  gcc/testsuite/g++.dg/cpp0x/forw_enum13.C
+ ad203ee3143fc82a9b5b3f4ac898c003  gcc/testsuite/g++.dg/cpp0x/forw_enum14.C
+ cfb939d8de68b1ee21f8bee910a8ba08  gcc/testsuite/g++.dg/cpp0x/forw_enum15.C
  88ce88296a2ec531e4cd30c6840d0e0b  gcc/testsuite/g++.dg/cpp0x/forw_enum2.C
  1dbb72d7cb864fd82bbd03dc412332fe  gcc/testsuite/g++.dg/cpp0x/forw_enum3.C
  c71bc1457d9f8a2ca50c42db66dafbc6  gcc/testsuite/g++.dg/cpp0x/forw_enum4.C
*************** c71bc1457d9f8a2ca50c42db66dafbc6  gcc/te
*** 10671,10677 ****
  2711f500a43899398b3a1a20fd3a2f2b  gcc/testsuite/g++.dg/cpp0x/forw_enum6.C
  48754cc55a4af947b24920104ba53fdf  gcc/testsuite/g++.dg/cpp0x/forw_enum7.C
  8c8730ed9433753996f9f7ace139449c  gcc/testsuite/g++.dg/cpp0x/forw_enum8.C
! 6f64520612f591c08d6cb2e31cebdb29  gcc/testsuite/g++.dg/cpp0x/forw_enum9.C
  ecd97721b0f99e76604083c732504cf2  gcc/testsuite/g++.dg/cpp0x/friend1.C
  d4322d3a60ab9276cc1264c288db974f  gcc/testsuite/g++.dg/cpp0x/friend2.C
  5142fbd8e81f930faa6dbc67f841e158  gcc/testsuite/g++.dg/cpp0x/gen-attrs-1.C
--- 11066,11072 ----
  2711f500a43899398b3a1a20fd3a2f2b  gcc/testsuite/g++.dg/cpp0x/forw_enum6.C
  48754cc55a4af947b24920104ba53fdf  gcc/testsuite/g++.dg/cpp0x/forw_enum7.C
  8c8730ed9433753996f9f7ace139449c  gcc/testsuite/g++.dg/cpp0x/forw_enum8.C
! ac8f3048ea079a2656d1cea357ae796d  gcc/testsuite/g++.dg/cpp0x/forw_enum9.C
  ecd97721b0f99e76604083c732504cf2  gcc/testsuite/g++.dg/cpp0x/friend1.C
  d4322d3a60ab9276cc1264c288db974f  gcc/testsuite/g++.dg/cpp0x/friend2.C
  5142fbd8e81f930faa6dbc67f841e158  gcc/testsuite/g++.dg/cpp0x/gen-attrs-1.C
*************** cb97cb3c29926aede38017aa01da015d  gcc/te
*** 10679,10685 ****
  7de2f3d73363a0558cd75484e381dcca  gcc/testsuite/g++.dg/cpp0x/gen-attrs-11.C
  7de2f3d73363a0558cd75484e381dcca  gcc/testsuite/g++.dg/cpp0x/gen-attrs-12.C
  26cfeb86b211f4560fefec372d117218  gcc/testsuite/g++.dg/cpp0x/gen-attrs-13.C
! 4f4629fb27ecf013f83e46d3022bbc0b  gcc/testsuite/g++.dg/cpp0x/gen-attrs-14.C
  74244e62676b5bf2159f695b7a73f055  gcc/testsuite/g++.dg/cpp0x/gen-attrs-15.C
  aa97e3d1f293c6ba70681149783f1e75  gcc/testsuite/g++.dg/cpp0x/gen-attrs-16.C
  3d0e74994e5655dc1d4142a3c2938ea4  gcc/testsuite/g++.dg/cpp0x/gen-attrs-17.2.C
--- 11074,11080 ----
  7de2f3d73363a0558cd75484e381dcca  gcc/testsuite/g++.dg/cpp0x/gen-attrs-11.C
  7de2f3d73363a0558cd75484e381dcca  gcc/testsuite/g++.dg/cpp0x/gen-attrs-12.C
  26cfeb86b211f4560fefec372d117218  gcc/testsuite/g++.dg/cpp0x/gen-attrs-13.C
! 107767f67fc933bfee67c216bd7a8bc7  gcc/testsuite/g++.dg/cpp0x/gen-attrs-14.C
  74244e62676b5bf2159f695b7a73f055  gcc/testsuite/g++.dg/cpp0x/gen-attrs-15.C
  aa97e3d1f293c6ba70681149783f1e75  gcc/testsuite/g++.dg/cpp0x/gen-attrs-16.C
  3d0e74994e5655dc1d4142a3c2938ea4  gcc/testsuite/g++.dg/cpp0x/gen-attrs-17.2.C
*************** bcd108fab23ce4022e3dec63114c9ff3  gcc/te
*** 10711,10717 ****
  bb1fc6dd579b1a618936a4dadc14db97  gcc/testsuite/g++.dg/cpp0x/gen-attrs-38.C
  98100318c81e01be9cde3359f29d785e  gcc/testsuite/g++.dg/cpp0x/gen-attrs-39-1.C
  1e9f1592b1b32cddbd98886cee9b568e  gcc/testsuite/g++.dg/cpp0x/gen-attrs-39.C
! 4be5538ac4364de53c2b5a38ab5c0137  gcc/testsuite/g++.dg/cpp0x/gen-attrs-4.C
  07d8ce7aa1bb54786d8dcfb173bcb392  gcc/testsuite/g++.dg/cpp0x/gen-attrs-40.C
  77126c882ae6b13b5eaf6bdda66c4f26  gcc/testsuite/g++.dg/cpp0x/gen-attrs-41.C
  97507133ec7407e6a8b7f3a4fc369b12  gcc/testsuite/g++.dg/cpp0x/gen-attrs-42.C
--- 11106,11112 ----
  bb1fc6dd579b1a618936a4dadc14db97  gcc/testsuite/g++.dg/cpp0x/gen-attrs-38.C
  98100318c81e01be9cde3359f29d785e  gcc/testsuite/g++.dg/cpp0x/gen-attrs-39-1.C
  1e9f1592b1b32cddbd98886cee9b568e  gcc/testsuite/g++.dg/cpp0x/gen-attrs-39.C
! f3e00699c57e131796be4cd7ccb023cb  gcc/testsuite/g++.dg/cpp0x/gen-attrs-4.C
  07d8ce7aa1bb54786d8dcfb173bcb392  gcc/testsuite/g++.dg/cpp0x/gen-attrs-40.C
  77126c882ae6b13b5eaf6bdda66c4f26  gcc/testsuite/g++.dg/cpp0x/gen-attrs-41.C
  97507133ec7407e6a8b7f3a4fc369b12  gcc/testsuite/g++.dg/cpp0x/gen-attrs-42.C
*************** a5d7e64856d35c4f9d4fe7a1a1d99cab  gcc/te
*** 10740,10753 ****
  7b0e99b02e7789690f20d9d1114188d0  gcc/testsuite/g++.dg/cpp0x/gen-attrs-61.C
  b151953ee723cc3bd3afc60e2ad0e6ad  gcc/testsuite/g++.dg/cpp0x/gen-attrs-62.C
  c157a52995fc54c0b46c8795dea13ada  gcc/testsuite/g++.dg/cpp0x/gen-attrs-63.C
  f55fa66c82d267feca5db82dc835210a  gcc/testsuite/g++.dg/cpp0x/gen-attrs-7.C
  e0b4f953ad274eb8ec84b8e630f87d3a  gcc/testsuite/g++.dg/cpp0x/gen-attrs-8.C
  5dd92815927177080853d47a890f5439  gcc/testsuite/g++.dg/cpp0x/gen-attrs-9.C
! cccfb274675e49b52431558eb1db75ae  gcc/testsuite/g++.dg/cpp0x/gnu_fext-numeric-literals.C
  2e2788f974b88f56ceecc2b764d701db  gcc/testsuite/g++.dg/cpp0x/gnu_fno-ext-numeric-literals.C
  9efada2e8cbcac32c0257fef01bf08a7  gcc/testsuite/g++.dg/cpp0x/implicit-copy.C
  0c0f3b4146bc156fd3b22332c0e3393f  gcc/testsuite/g++.dg/cpp0x/implicit-trivial1.C
! 93b2425d5cbf4f126089bef4834729fb  gcc/testsuite/g++.dg/cpp0x/implicit1.C
  0ec3816b51b6f7dc7ac0ca065da5908e  gcc/testsuite/g++.dg/cpp0x/implicit10.C
  2bbdbc1c9ea5f4a91659bc89f8ad6822  gcc/testsuite/g++.dg/cpp0x/implicit11.C
  bba825da84a7cef5052a899c9f1158f3  gcc/testsuite/g++.dg/cpp0x/implicit12.C
--- 11135,11149 ----
  7b0e99b02e7789690f20d9d1114188d0  gcc/testsuite/g++.dg/cpp0x/gen-attrs-61.C
  b151953ee723cc3bd3afc60e2ad0e6ad  gcc/testsuite/g++.dg/cpp0x/gen-attrs-62.C
  c157a52995fc54c0b46c8795dea13ada  gcc/testsuite/g++.dg/cpp0x/gen-attrs-63.C
+ 5ac484eaba19c794225110a11b48ef2a  gcc/testsuite/g++.dg/cpp0x/gen-attrs-64.C
  f55fa66c82d267feca5db82dc835210a  gcc/testsuite/g++.dg/cpp0x/gen-attrs-7.C
  e0b4f953ad274eb8ec84b8e630f87d3a  gcc/testsuite/g++.dg/cpp0x/gen-attrs-8.C
  5dd92815927177080853d47a890f5439  gcc/testsuite/g++.dg/cpp0x/gen-attrs-9.C
! 5b7126443554bc736a19b8a950170b30  gcc/testsuite/g++.dg/cpp0x/gnu_fext-numeric-literals.C
  2e2788f974b88f56ceecc2b764d701db  gcc/testsuite/g++.dg/cpp0x/gnu_fno-ext-numeric-literals.C
  9efada2e8cbcac32c0257fef01bf08a7  gcc/testsuite/g++.dg/cpp0x/implicit-copy.C
  0c0f3b4146bc156fd3b22332c0e3393f  gcc/testsuite/g++.dg/cpp0x/implicit-trivial1.C
! b75de7247039fab91b2a6820138ddc45  gcc/testsuite/g++.dg/cpp0x/implicit1.C
  0ec3816b51b6f7dc7ac0ca065da5908e  gcc/testsuite/g++.dg/cpp0x/implicit10.C
  2bbdbc1c9ea5f4a91659bc89f8ad6822  gcc/testsuite/g++.dg/cpp0x/implicit11.C
  bba825da84a7cef5052a899c9f1158f3  gcc/testsuite/g++.dg/cpp0x/implicit12.C
*************** baf0ca575018768eef366236d48b8fdb  gcc/te
*** 10784,10790 ****
  3dd2cbce9f770ed128820376bcfc0ea3  gcc/testsuite/g++.dg/cpp0x/inh-ctor27.C
  4c4ae18e25ac45da8c988754866e6e46  gcc/testsuite/g++.dg/cpp0x/inh-ctor28.C
  a7a3abf33b10ca007c7fa43b9a1b4c19  gcc/testsuite/g++.dg/cpp0x/inh-ctor29.C
! c3eec0e197692faa6172feb3b5b4c58b  gcc/testsuite/g++.dg/cpp0x/inh-ctor3.C
  47ad482b069988147c4dcac60c026f4d  gcc/testsuite/g++.dg/cpp0x/inh-ctor3a.C
  071eafda7f7d2d4bff42921fbd048a45  gcc/testsuite/g++.dg/cpp0x/inh-ctor4.C
  972640c006b3bcd568fc760f06817f9f  gcc/testsuite/g++.dg/cpp0x/inh-ctor5.C
--- 11180,11188 ----
  3dd2cbce9f770ed128820376bcfc0ea3  gcc/testsuite/g++.dg/cpp0x/inh-ctor27.C
  4c4ae18e25ac45da8c988754866e6e46  gcc/testsuite/g++.dg/cpp0x/inh-ctor28.C
  a7a3abf33b10ca007c7fa43b9a1b4c19  gcc/testsuite/g++.dg/cpp0x/inh-ctor29.C
! bbc63910b25c6f98c35fc2a38455ffe0  gcc/testsuite/g++.dg/cpp0x/inh-ctor3.C
! ef58cfd45b994e29a5ffb11ea1d0cd8b  gcc/testsuite/g++.dg/cpp0x/inh-ctor30.C
! d07f1b6155878998e554213d7b63dd95  gcc/testsuite/g++.dg/cpp0x/inh-ctor31.C
  47ad482b069988147c4dcac60c026f4d  gcc/testsuite/g++.dg/cpp0x/inh-ctor3a.C
  071eafda7f7d2d4bff42921fbd048a45  gcc/testsuite/g++.dg/cpp0x/inh-ctor4.C
  972640c006b3bcd568fc760f06817f9f  gcc/testsuite/g++.dg/cpp0x/inh-ctor5.C
*************** c3eec0e197692faa6172feb3b5b4c58b  gcc/te
*** 10796,10808 ****
--- 11194,11210 ----
  2689261b6dbe2bf5875e915ce8a31a53  gcc/testsuite/g++.dg/cpp0x/initlist-array3.C
  6c1907913d332611dd16d03002d759f9  gcc/testsuite/g++.dg/cpp0x/initlist-array4.C
  8758d8464674d29f4276f8d3ebc899c3  gcc/testsuite/g++.dg/cpp0x/initlist-array5.C
+ 46821fed8cc048872c88fe4b51e84963  gcc/testsuite/g++.dg/cpp0x/initlist-array6.C
  75dbdd73972da9a369980925ff477d9d  gcc/testsuite/g++.dg/cpp0x/initlist-arrray1.C
  110edad11491436d7ef19ef7a8517bf0  gcc/testsuite/g++.dg/cpp0x/initlist-base1.C
  56c081b4510fd319fae6d0ce40b10398  gcc/testsuite/g++.dg/cpp0x/initlist-base2.C
  3bd8f8e03e5ae6051554dde874bf03f6  gcc/testsuite/g++.dg/cpp0x/initlist-base3.C
+ 68f886cb4e912d3c297c2a92ab92832f  gcc/testsuite/g++.dg/cpp0x/initlist-cast1.C
  994605127bf908d7a5b9745b9991101e  gcc/testsuite/g++.dg/cpp0x/initlist-ctor1.C
+ 8d42dd7607b094785c2cd3a8c2078180  gcc/testsuite/g++.dg/cpp0x/initlist-ctor2.C
  8642aa67406b008384f59447a05a884c  gcc/testsuite/g++.dg/cpp0x/initlist-deduce.C
  164cef62ad37c1cf80ca6128f56094b2  gcc/testsuite/g++.dg/cpp0x/initlist-defarg1.C
+ be08dc99a94b7b3278c8c66a5274c415  gcc/testsuite/g++.dg/cpp0x/initlist-defarg2.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
*************** e3ec7ab89d20e6ccf50aa92954896f07  gcc/te
*** 10815,10826 ****
  1b5c7e432be89c3edcbfaad424a2e353  gcc/testsuite/g++.dg/cpp0x/initlist-protected.C
  fd02e573e3be3d0a146192cd840840a1  gcc/testsuite/g++.dg/cpp0x/initlist-pure.C
  b981bb775821a5230961a162ba38ff43  gcc/testsuite/g++.dg/cpp0x/initlist-template1.C
! c292a6f438d5f7daca1b9898620a5b7f  gcc/testsuite/g++.dg/cpp0x/initlist-template2.C
  742c772ced8eedc3c0511b94b8410082  gcc/testsuite/g++.dg/cpp0x/initlist-value.C
  fab23eb9efdcf1b8c0f8393aa5ad7913  gcc/testsuite/g++.dg/cpp0x/initlist-value2.C
  93763afe3eb7edb5553f76daf0ed0de3  gcc/testsuite/g++.dg/cpp0x/initlist-vect.C
  bc81668e2b4c77a6a8c52350eb5f9bc7  gcc/testsuite/g++.dg/cpp0x/initlist1.C
  56eb446b9a79a3e01433eed6090a0b6d  gcc/testsuite/g++.dg/cpp0x/initlist10.C
  f787403dc64b99be9c0c9b763121c4d7  gcc/testsuite/g++.dg/cpp0x/initlist11.C
  540183723223acf529878183682623fb  gcc/testsuite/g++.dg/cpp0x/initlist12.C
  a5e64985a46db12492fa03d5e7dfd347  gcc/testsuite/g++.dg/cpp0x/initlist13.C
--- 11217,11230 ----
  1b5c7e432be89c3edcbfaad424a2e353  gcc/testsuite/g++.dg/cpp0x/initlist-protected.C
  fd02e573e3be3d0a146192cd840840a1  gcc/testsuite/g++.dg/cpp0x/initlist-pure.C
  b981bb775821a5230961a162ba38ff43  gcc/testsuite/g++.dg/cpp0x/initlist-template1.C
! 2c5adc68213f17b3f69e8102a8f14f45  gcc/testsuite/g++.dg/cpp0x/initlist-template2.C
  742c772ced8eedc3c0511b94b8410082  gcc/testsuite/g++.dg/cpp0x/initlist-value.C
  fab23eb9efdcf1b8c0f8393aa5ad7913  gcc/testsuite/g++.dg/cpp0x/initlist-value2.C
  93763afe3eb7edb5553f76daf0ed0de3  gcc/testsuite/g++.dg/cpp0x/initlist-vect.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
+ 65994e02b86022c95b64f705b9c16b14  gcc/testsuite/g++.dg/cpp0x/initlist101.C
  f787403dc64b99be9c0c9b763121c4d7  gcc/testsuite/g++.dg/cpp0x/initlist11.C
  540183723223acf529878183682623fb  gcc/testsuite/g++.dg/cpp0x/initlist12.C
  a5e64985a46db12492fa03d5e7dfd347  gcc/testsuite/g++.dg/cpp0x/initlist13.C
*************** bd9a289d0125621da4bc499b31e3f4dc  gcc/te
*** 10910,10949 ****
  8ac4b7fda1afbabe884fb435e50058e7  gcc/testsuite/g++.dg/cpp0x/initlist90.C
  2246fe95f3db3abaf2aef16782aad4aa  gcc/testsuite/g++.dg/cpp0x/initlist91.C
  7e36dd916d221f5250944ac9bf993c93  gcc/testsuite/g++.dg/cpp0x/initlist92.C
! efc2f221b3ae75a1d4c0ccf4a3e021a9  gcc/testsuite/g++.dg/cpp0x/initlist93.C
  45d64991bc424279411d7f51c978e541  gcc/testsuite/g++.dg/cpp0x/initlist94.C
  c27ca98c8a89c6bae88c1f75ab92d8f2  gcc/testsuite/g++.dg/cpp0x/initlist95.C
! bf2d775556971465a6aa220a09a606b0  gcc/testsuite/g++.dg/cpp0x/initlist96.C
  42af5338e0155a7ff301fc045e4cf139  gcc/testsuite/g++.dg/cpp0x/initlist97.C
  2bd94659e18571416ec707555f61b80d  gcc/testsuite/g++.dg/cpp0x/inline-ns1.C
  3e2f011d130eb1b8b8c5b45e6f650dfb  gcc/testsuite/g++.dg/cpp0x/inline-ns2.C
  9ac74ab89dc8edcde76b2e7628340a13  gcc/testsuite/g++.dg/cpp0x/inline-ns3.C
  b0c5ed66fb6bc8597e3d516e4ce3f396  gcc/testsuite/g++.dg/cpp0x/inline-ns4.C
  868d9c1bbed4bb85f1cbb3ad116f6eb1  gcc/testsuite/g++.dg/cpp0x/inline-ns5.C
  2b1b09d91910d20eece0379cd7533859  gcc/testsuite/g++.dg/cpp0x/inline-ns6.C
! 9cf5f616cd7d12356a4b60ef67aaf1e1  gcc/testsuite/g++.dg/cpp0x/inline-ns7.C
  7da1d317c0e74ab901f17a10189784da  gcc/testsuite/g++.dg/cpp0x/inline-ns8.C
  81170031ad2a38d5f6c077134ed385f1  gcc/testsuite/g++.dg/cpp0x/inline-ns9.C
! 21f4f71849033f886423eb33a84fe501  gcc/testsuite/g++.dg/cpp0x/iop.C
  9162d8fc6d7cb877ccad37a220cff3e3  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-50220.C
! 2185658a84e3db04460f0aa74ec8d8d3  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-58566.C
  0d04db583ca02925777a135fa0e718a2  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-59483.C
  66d6e5f1041a69f32d22d1272fc73448  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-61148.C
! 112e708857e8266a6dcc39c5a6da0a29  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-62155.C
  a4422d3b2c45e633b2f920703704dc07  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-70218.C
  ceb7f4150c22dd913fba136b01402e52  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-77791.C
  d9b3b9597d3bf51088b71abd8f440104  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-98.C
  220829872340dbf04070c457af860d3c  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-__func__.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
  187afac210e9e3812bc885dc82b852c9  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-auto1.C
  c6b435df2e057f17565b118504b3c651  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-auto2.C
  c5dc01d7b5c6d100481180d9a0f8ce62  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-auto3.C
  cd0880983dc32cb469f470728ae8b22b  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C
  02227477a33ea3dd52eb99ed93d89ca7  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref.C
  713beed8c11f2a617eb961a3f4b5fee1  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-neg.C
! b8f5e644f92e53096f2cac6fa2abc634  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-redundancy.C
  15981f001a14c3bb6bb126912c9383e1  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-cast1.C
  22fc25fa709265abbae77ff5d72e72f8  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C
  504844e7fd889b359443ec73677a9d2d  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-this.C
--- 11314,11366 ----
  8ac4b7fda1afbabe884fb435e50058e7  gcc/testsuite/g++.dg/cpp0x/initlist90.C
  2246fe95f3db3abaf2aef16782aad4aa  gcc/testsuite/g++.dg/cpp0x/initlist91.C
  7e36dd916d221f5250944ac9bf993c93  gcc/testsuite/g++.dg/cpp0x/initlist92.C
! cf8755fd15f43cbec418f59193dc9a93  gcc/testsuite/g++.dg/cpp0x/initlist93.C
  45d64991bc424279411d7f51c978e541  gcc/testsuite/g++.dg/cpp0x/initlist94.C
  c27ca98c8a89c6bae88c1f75ab92d8f2  gcc/testsuite/g++.dg/cpp0x/initlist95.C
! bf4548567b9b369e7f63db818c6a1013  gcc/testsuite/g++.dg/cpp0x/initlist96.C
  42af5338e0155a7ff301fc045e4cf139  gcc/testsuite/g++.dg/cpp0x/initlist97.C
+ 9dce1e7cf82bbdd6de947810fcefa39b  gcc/testsuite/g++.dg/cpp0x/initlist98.C
+ 65eb8edae8e5d98c8436657e2016b854  gcc/testsuite/g++.dg/cpp0x/initlist99.C
  2bd94659e18571416ec707555f61b80d  gcc/testsuite/g++.dg/cpp0x/inline-ns1.C
+ 57b4a568e93e32302910fcf3e2ae8660  gcc/testsuite/g++.dg/cpp0x/inline-ns10.C
  3e2f011d130eb1b8b8c5b45e6f650dfb  gcc/testsuite/g++.dg/cpp0x/inline-ns2.C
  9ac74ab89dc8edcde76b2e7628340a13  gcc/testsuite/g++.dg/cpp0x/inline-ns3.C
  b0c5ed66fb6bc8597e3d516e4ce3f396  gcc/testsuite/g++.dg/cpp0x/inline-ns4.C
  868d9c1bbed4bb85f1cbb3ad116f6eb1  gcc/testsuite/g++.dg/cpp0x/inline-ns5.C
  2b1b09d91910d20eece0379cd7533859  gcc/testsuite/g++.dg/cpp0x/inline-ns6.C
! da8580feb725981b1da24c49345d0739  gcc/testsuite/g++.dg/cpp0x/inline-ns7.C
  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
  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
+ 10b0c2aecf02c566bc24b463aef006be  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-61135.C
  66d6e5f1041a69f32d22d1272fc73448  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-61148.C
! c2991c285ecceb606deea59772537c6b  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-61358.C
! d15d912c6a4ded5722187680fde5ac6b  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-62155.C
! f8f3a5627173092ad25ef344cb14cf90  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-67370.C
! c0bdfb942e1dd39836d1db925f77694a  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-68177.C
  a4422d3b2c45e633b2f920703704dc07  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-70218.C
+ 5a71a489a54888aedb6c00632018df1d  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-70343.C
+ a70715b9acb588398172feea8881cd92  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-70383.C
  ceb7f4150c22dd913fba136b01402e52  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-77791.C
+ e0545c70049537c8e08f8314027f7d92  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-80947.C
  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
  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
+ de587add0ca42e32537302826d4176cd  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-asm1.C
  187afac210e9e3812bc885dc82b852c9  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-auto1.C
  c6b435df2e057f17565b118504b3c651  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-auto2.C
  c5dc01d7b5c6d100481180d9a0f8ce62  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-auto3.C
  cd0880983dc32cb469f470728ae8b22b  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C
  02227477a33ea3dd52eb99ed93d89ca7  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref.C
  713beed8c11f2a617eb961a3f4b5fee1  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-neg.C
! 5daa5ce8205d71991f60575fd7e83dd4  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-redundancy.C
  15981f001a14c3bb6bb126912c9383e1  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-cast1.C
  22fc25fa709265abbae77ff5d72e72f8  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C
  504844e7fd889b359443ec73677a9d2d  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-this.C
*************** b8f5e644f92e53096f2cac6fa2abc634  gcc/te
*** 10952,10961 ****
  e513b4dcc45e6063745c03c7c99151fa  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const3.C
  1ced7b3231f38cc9948cc247893ffec1  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const4.C
  fc87adf1aa8763a35e80b1067faf9948  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const5.C
  db7bc02fc98b9ea2b1ac747f9c1b93fc  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-conv.C
! 862ed5b4e67a8a0e32b42b5792ae7fff  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-conv10.C
  522c3e9a3e7905c1f6e87fc6ce263930  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-conv11.C
! 6ae899ba5dad4551770e52eb79fca6a8  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-conv12.C
  299fbfde279f22ba6cf7e79d7e17f49b  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-conv2.C
  13859d1112ce3900c792dcdc2e8ae085  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-conv3.C
  b91c55a7472ec7a8d2f35a01f04cc387  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-conv4.C
--- 11369,11380 ----
  e513b4dcc45e6063745c03c7c99151fa  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const3.C
  1ced7b3231f38cc9948cc247893ffec1  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const4.C
  fc87adf1aa8763a35e80b1067faf9948  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const5.C
+ f130e737443b7a01f91ec2fe01f62eff  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const6.C
+ 2e57b10c1463ef9819d08221f0daa540  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const7.C
  db7bc02fc98b9ea2b1ac747f9c1b93fc  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-conv.C
! 59ff738b6c6f39d1085d9586f3b2460e  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-conv10.C
  522c3e9a3e7905c1f6e87fc6ce263930  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-conv11.C
! e68f0f2940c3cb9d879b66d1c30fa709  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-conv12.C
  299fbfde279f22ba6cf7e79d7e17f49b  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-conv2.C
  13859d1112ce3900c792dcdc2e8ae085  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-conv3.C
  b91c55a7472ec7a8d2f35a01f04cc387  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-conv4.C
*************** e0fcc12ea86ca07e002f0dd4599d71b4  gcc/te
*** 10981,10994 ****
  d6d48de10340b22d46f7610d0d311ac9  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce3.C
  ed0e57a851ca002b92664b37ce17502b  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-defarg.C
  be7d5784718fa8841e1936204f404bd8  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-defarg2.C
! 665983bbedede39286c33bef3b65d920  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-defarg3.C
  ffc39c5b4c152803a184a9a8a8a77a77  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-defarg4.C
  0ee6fa2440a52fd8a86025d3704e8fc8  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-defarg5.C
  988889814e57352cbe162cc5e748cfd3  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-defarg6.C
  e8dd4784bd328df4e1de1999906f386b  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-diag1.C
  e4baead2918480aa1e47e55ecfdaef26  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-direct-init.C
  608222e5fa9681660b33f435a7788d0a  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-eh.C
! 1b6ac3f75e562e3f65bf1271ae0ad549  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-eh2.C
  0ab2ed931f43d51b53e363fe32167ff6  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-eh3.C
  9d4fde9cfb96267081f1aa77d2deeb36  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-err1.C
  eb6effb9eb957ed45362f2cd4c444d24  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-err2.C
--- 11400,11414 ----
  d6d48de10340b22d46f7610d0d311ac9  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce3.C
  ed0e57a851ca002b92664b37ce17502b  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-defarg.C
  be7d5784718fa8841e1936204f404bd8  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-defarg2.C
! 22fec09efea51d124875d060379b4035  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-defarg3.C
  ffc39c5b4c152803a184a9a8a8a77a77  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-defarg4.C
  0ee6fa2440a52fd8a86025d3704e8fc8  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-defarg5.C
  988889814e57352cbe162cc5e748cfd3  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-defarg6.C
+ 7ab0268329db6592a8597fa7bede419d  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-defarg7.C
  e8dd4784bd328df4e1de1999906f386b  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-diag1.C
  e4baead2918480aa1e47e55ecfdaef26  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-direct-init.C
  608222e5fa9681660b33f435a7788d0a  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-eh.C
! 648328393aca4082788e0744e52e3e04  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-eh2.C
  0ab2ed931f43d51b53e363fe32167ff6  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-eh3.C
  9d4fde9cfb96267081f1aa77d2deeb36  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-err1.C
  eb6effb9eb957ed45362f2cd4c444d24  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-err2.C
*************** d2f0042eab3739e1bd09f52de25d0071  gcc/te
*** 11003,11015 ****
  a2ff0e65a2311577d1f595af7795c694  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice12.C
  c4dbb33289335abfc0e81ecec97d4f05  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice13.C
  dc3a51c8d29b09710666fc488cca027c  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice14.C
! 1042a4840f48bd0952ae8bb7b25b0885  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice15.C
  01d210b650cccb575b53d9122e5451ee  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice16.C
! 3d457a07abda35f31a1d8b12ba9f82a0  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice17.C
  f7f1dbbd136c0efa4e64ac7431acecd4  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice2.C
! 32e4ddab4dbbba84634a9be94759430d  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice3.C
  47226bea0ac5dc3c286fd8fe05473a80  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice4.C
! e1f400fc51cc1aaffff974a4b7d5faac  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice5.C
  f2b207bd10e310348b2b28879e217fd4  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice6.C
  84fb395ea0ce708429d5e46ad6a040b7  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice7.C
  60560b2d57aa4869d76f15699e0c0e71  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice8.C
--- 11423,11447 ----
  a2ff0e65a2311577d1f595af7795c694  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice12.C
  c4dbb33289335abfc0e81ecec97d4f05  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice13.C
  dc3a51c8d29b09710666fc488cca027c  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice14.C
! c2d78e84af425e510bfce6e34c7a751c  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice15.C
  01d210b650cccb575b53d9122e5451ee  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice16.C
! 924892be39ba41b5eff9d58a922142cb  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice17.C
! 341f6a3895d958cb9aeaf9c56f52203a  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice18.C
! 3f5fb58264ef82ae44987f70a0d93766  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice19.C
  f7f1dbbd136c0efa4e64ac7431acecd4  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice2.C
! d50a36f3de40902d956b998d5462d302  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice20.C
! d19dad7883179ec6381e01cd9310d425  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice21.C
! 1d862ad20d50563d5e9d723cdc77273d  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice22.C
! b346fd74e3befae8800ac1f051a798bb  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice23.C
! bc138d4a025349e56859a3470648d3a5  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice24.C
! bd61a64850a53981780c02a87f9f1dca  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice25.C
! 50bcf95217c5a2c5b00d93676739f94a  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice26.C
! 603c5caf5c727c8ec8132c09124da8ff  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice27.C
! c9399095e908bfb2c338755b0557db76  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice28.C
! 3818f1aaa373b0a184b4836fac169bab  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice29.C
! 8163be06d8cb83f18060b0f809886f54  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice3.C
  47226bea0ac5dc3c286fd8fe05473a80  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice4.C
! 08db2d244c01eaf3577fdfbf5896e831  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice5.C
  f2b207bd10e310348b2b28879e217fd4  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice6.C
  84fb395ea0ce708429d5e46ad6a040b7  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice7.C
  60560b2d57aa4869d76f15699e0c0e71  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice8.C
*************** f2b207bd10e310348b2b28879e217fd4  gcc/te
*** 11020,11040 ****
  5bdf6cd7650988d6462347629c7424df  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-initlist2.C
  f33b3ea62d84fcfc133c8244474d4e53  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-initlist3.C
  35991a38498aa38210830132f5fa17c2  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-intname.C
  3d5fac660854c02a5bec76cbbd0ba95d  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-lookup-neg.C
  92fefb85a61373d151ed5d5b0e5c14aa  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mangle.C
  bc4834e829a567ab458b88513efb0adc  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mangle2.C
  a3babe4a5a450c501c6d3daf88a2a741  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mangle3.C
  9dc008f9d5045d3deab89ba4ac3a1544  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mangle4.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
  13ea6602fce9f939217197c80120c4fd  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-names1.C
  e441f7a8895e83d53f40d4ca21836ee2  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C
! 648ed79b7cd5b57d3c53372eb90deb3f  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested2.C
  404693fec002449e01019ebc66a762f7  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested3.C
  b4ee4e860077c15b5f446a344ee80eb1  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested4.C
  61ec239111bc86f289d1bee48e0c8003  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested5.C
  5fbb17b854d8fd1a54b7633e8347d839  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested6.C
  473ec19f81d0003cf47717bbb9c67549  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C
  fc0cbc487d6a1b6d02de8cbeb0f06f70  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C
  45c8811455b2ff67d0b834d61c336d54  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ns-scope.C
--- 11452,11476 ----
  5bdf6cd7650988d6462347629c7424df  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-initlist2.C
  f33b3ea62d84fcfc133c8244474d4e53  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-initlist3.C
  35991a38498aa38210830132f5fa17c2  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-intname.C
+ bc00a977840d32643b8a79c194a24b04  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-local1.C
  3d5fac660854c02a5bec76cbbd0ba95d  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-lookup-neg.C
  92fefb85a61373d151ed5d5b0e5c14aa  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mangle.C
  bc4834e829a567ab458b88513efb0adc  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mangle2.C
  a3babe4a5a450c501c6d3daf88a2a741  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mangle3.C
  9dc008f9d5045d3deab89ba4ac3a1544  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mangle4.C
+ 543ea50ea09345cb7118e5bb0639b733  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mangle5.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
  13ea6602fce9f939217197c80120c4fd  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-names1.C
  e441f7a8895e83d53f40d4ca21836ee2  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C
! c2e13e2fd32e6c9b78dd012726df223a  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested2.C
  404693fec002449e01019ebc66a762f7  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested3.C
  b4ee4e860077c15b5f446a344ee80eb1  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested4.C
  61ec239111bc86f289d1bee48e0c8003  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested5.C
  5fbb17b854d8fd1a54b7633e8347d839  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested6.C
+ 2afcec0e454c28a93482d36c07cd282d  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested7.C
+ 39c02f2dc9c62660fbcbb8626a08e194  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested8.C
  473ec19f81d0003cf47717bbb9c67549  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C
  fc0cbc487d6a1b6d02de8cbeb0f06f70  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C
  45c8811455b2ff67d0b834d61c336d54  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ns-scope.C
*************** d2325a6665eff9c4ec0ee3926899f7f2  gcc/te
*** 11046,11051 ****
--- 11482,11488 ----
  ca45ca9d8a4655eee0db3216e32b0aa0  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nsdmi6.C
  eb2276f9d1b9a9784472833cd48eeadc  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nsdmi7.C
  e03fa071c95266e097b8e9d8a862d405  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nsdmi8.C
+ 44734208c0e6db46e8b1c46e4ef5dbcd  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nsdmi9.C
  d99567b8456dc927600ebf819b5a5619  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C
  8ce61ab8af52090769c40889bd8cdc23  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C
  44fde19ba94c21c85d066294323940c1  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-qualified.C
*************** d26dd6e9d8da70310f300c4796fd2653  gcc/te
*** 11059,11073 ****
  b91279d49de21edd13a5e72ad91a5008  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-shadow1.C
  63aa45acf8523f89e051425dc0837732  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-shadow2.C
  adb1d2fb2d918c692d644ded0dc5f428  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-std-function.C
! 6448209e651c2e3261a57873508d5a3c  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-switch.C
  435ee00e9c56e1b0748b8cde4e05e6f2  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-syntax1.C
! 35e854501d3752a9e30feff193a3875d  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template.C
  06d36011a13482624806d2ac0b6cc62c  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template10.C
  0480ccf1db57a209026d61f347f2558b  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template11.C
! 5a2e25e55c03b3d576cbd41cd3919157  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template12.C
! f0093af5ec80e8b5dec3639cfeec2bc5  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template13.C
  bd42363d4165a48ad99bfda7142b3178  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template14.C
! ba1b33731a2a8e72850872d9f2918923  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template2.C
  94cfc36278ab817fd2df7010aa3c83ba  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template3.C
  e099bfa2ff82527ea9b86eaaab9acb43  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template4.C
  cc240edecfa185c81fe9195ec050c0ef  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template5.C
--- 11496,11513 ----
  b91279d49de21edd13a5e72ad91a5008  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-shadow1.C
  63aa45acf8523f89e051425dc0837732  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-shadow2.C
  adb1d2fb2d918c692d644ded0dc5f428  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-std-function.C
! b8cc2b4775f53161af6fb5ad8dd9aec9  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-stmtexpr1.C
! 6b1b26afb40c5b2d2ebfcb3cb099bcc2  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-switch.C
! 86e977ceaeb59c6acfa35d4a54405c92  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-switch2.C
  435ee00e9c56e1b0748b8cde4e05e6f2  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-syntax1.C
! 0b50e569431704571ea619200252f236  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template.C
  06d36011a13482624806d2ac0b6cc62c  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template10.C
  0480ccf1db57a209026d61f347f2558b  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template11.C
! 4f0eb6fcfe2cffb80b67426a65f70b59  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template12.C
! 377519bbfa40d471fa240ad2fabdc7b4  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template13.C
  bd42363d4165a48ad99bfda7142b3178  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template14.C
! 60815d14466a48a5c352df28f6455161  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template15.C
! dbe71301a1e8df7942fe34c5beb4c73e  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template2.C
  94cfc36278ab817fd2df7010aa3c83ba  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template3.C
  e099bfa2ff82527ea9b86eaaab9acb43  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template4.C
  cc240edecfa185c81fe9195ec050c0ef  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template5.C
*************** cc240edecfa185c81fe9195ec050c0ef  gcc/te
*** 11078,11084 ****
  2278db2eb935a617fc50c44c129f2b45  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this.C
  d4e9dac6031bcd226df7a64f6ef6050d  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this10.C
  cbd8945f63833759828ccb6fa2d21623  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this11.C
! b1cf3c7f70d9c9184c2d8a1f8323555b  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this12.C
  bde8c4c4c753e9d6da1e9bf4d5eeb363  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this13.C
  798a478717676cc7c36492ab1c6e684d  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this14.C
  cb3b2650a080bd9c7acfa0a46c317afe  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this15.C
--- 11518,11524 ----
  2278db2eb935a617fc50c44c129f2b45  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this.C
  d4e9dac6031bcd226df7a64f6ef6050d  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this10.C
  cbd8945f63833759828ccb6fa2d21623  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this11.C
! 9f7a09f17f62530e940de04ac4774d81  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this12.C
  bde8c4c4c753e9d6da1e9bf4d5eeb363  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this13.C
  798a478717676cc7c36492ab1c6e684d  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this14.C
  cb3b2650a080bd9c7acfa0a46c317afe  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this15.C
*************** bb6feb4793b61fdd7abfa89b1284d0ab  gcc/te
*** 11104,11109 ****
--- 11544,11555 ----
  18c978d671e4db891b45910e69c90461  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-variadic1.C
  4207a17bd687f925ffa814b5967e6fad  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-variadic2.C
  4aceadd2b246ab66ad033bf33c21e79a  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-variadic3.C
+ f834269fe12aa32c10b9a1ccedad58d6  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-variadic4.C
+ f9bfdf92390383acadb7e459c1d392b8  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-variadic5.C
+ ad61d0dd81ce64e7dd902f8cbf0238b7  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-variadic6.C
+ a667f158c89a42014e4ccc192862b932  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-vla1.C
+ 9da68ff6b459e7ba59b9ed131bcd5fa5  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-vla2.C
+ d1d6585012ce959c2cfe7d34a8d32f1f  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-vla3.C
  8c9e7ce9968698440f1e47686a929bb1  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-warn1.C
  1af236773511fe3a7320590aa6d59e45  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-warn2.C
  1721b206a34146aec4acd108fcd04b6c  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-warn3.C
*************** ceadcf043cb7e277e03b4160aab8102e  gcc/te
*** 11113,11133 ****
  2fc41c677c8e84c030121c0ae006b699  gcc/testsuite/g++.dg/cpp0x/local-type1.C
  41600003230a22f3cbcc4e6fac3dde3d  gcc/testsuite/g++.dg/cpp0x/long_long.C
  c994f9d97744ab8028b2b30365d6830e  gcc/testsuite/g++.dg/cpp0x/mem-init-aggr1.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
! 5ccbd38ed47b195447b9e41d8df03bb9  gcc/testsuite/g++.dg/cpp0x/named_refs.C
  fe526337c46e51da61277e503a425d3c  gcc/testsuite/g++.dg/cpp0x/new-auto1.C
  4c9fa986dc7f6deef6a257359aa5e2ca  gcc/testsuite/g++.dg/cpp0x/new1.C
  981a1b52d13a4061d8e2bfcbe9c0fba0  gcc/testsuite/g++.dg/cpp0x/no-weak1.C
  ed2c46be3ce8712f09fcd7a4cc944efd  gcc/testsuite/g++.dg/cpp0x/noexcept01.C
! 2f2f5d062cb03ece636a5629f7d4d18b  gcc/testsuite/g++.dg/cpp0x/noexcept02.C
  e8f93e01da9927cda13331fc519bc797  gcc/testsuite/g++.dg/cpp0x/noexcept03.C
  2a0c2baa8007810de477502a427981b6  gcc/testsuite/g++.dg/cpp0x/noexcept04.C
  089ec1d7518156a5d6a94f2652816ae4  gcc/testsuite/g++.dg/cpp0x/noexcept05.C
  a92beb6dbe320fc85e5fa38d109d550d  gcc/testsuite/g++.dg/cpp0x/noexcept06.C
  e4e4ad572dd98eec19762cbc9b5cad9f  gcc/testsuite/g++.dg/cpp0x/noexcept07.C
! 85ed3682f2dcfc6b1d7fc085be065c98  gcc/testsuite/g++.dg/cpp0x/noexcept08.C
  a02244173a5ffde409598767c4b61095  gcc/testsuite/g++.dg/cpp0x/noexcept09.C
  41709bd79f8c59f70e3a34cf743752de  gcc/testsuite/g++.dg/cpp0x/noexcept10.C
  f3a3c7fcffaa25563f84559c4cd9da4d  gcc/testsuite/g++.dg/cpp0x/noexcept11.C
--- 11559,11582 ----
  2fc41c677c8e84c030121c0ae006b699  gcc/testsuite/g++.dg/cpp0x/local-type1.C
  41600003230a22f3cbcc4e6fac3dde3d  gcc/testsuite/g++.dg/cpp0x/long_long.C
  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
  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
  fe526337c46e51da61277e503a425d3c  gcc/testsuite/g++.dg/cpp0x/new-auto1.C
  4c9fa986dc7f6deef6a257359aa5e2ca  gcc/testsuite/g++.dg/cpp0x/new1.C
+ 5103d8a889c20932b4c0d1f36f771d88  gcc/testsuite/g++.dg/cpp0x/new2.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
  e8f93e01da9927cda13331fc519bc797  gcc/testsuite/g++.dg/cpp0x/noexcept03.C
  2a0c2baa8007810de477502a427981b6  gcc/testsuite/g++.dg/cpp0x/noexcept04.C
  089ec1d7518156a5d6a94f2652816ae4  gcc/testsuite/g++.dg/cpp0x/noexcept05.C
  a92beb6dbe320fc85e5fa38d109d550d  gcc/testsuite/g++.dg/cpp0x/noexcept06.C
  e4e4ad572dd98eec19762cbc9b5cad9f  gcc/testsuite/g++.dg/cpp0x/noexcept07.C
! 665481fa567941e2d63f5c077850b637  gcc/testsuite/g++.dg/cpp0x/noexcept08.C
  a02244173a5ffde409598767c4b61095  gcc/testsuite/g++.dg/cpp0x/noexcept09.C
  41709bd79f8c59f70e3a34cf743752de  gcc/testsuite/g++.dg/cpp0x/noexcept10.C
  f3a3c7fcffaa25563f84559c4cd9da4d  gcc/testsuite/g++.dg/cpp0x/noexcept11.C
*************** db2a149a605aefe6c3ec1ff014c718e1  gcc/te
*** 11138,11144 ****
  ae7b9d7f58a9bc802bcf7ffd5e196b3b  gcc/testsuite/g++.dg/cpp0x/noexcept16.C
  caa747f6ad498163168e3ed8c746b9d2  gcc/testsuite/g++.dg/cpp0x/noexcept17.C
  720a77ff1704acced122db257cb746bd  gcc/testsuite/g++.dg/cpp0x/noexcept18.C
! fb8e1523f1284a21ba168356b2a014b8  gcc/testsuite/g++.dg/cpp0x/noexcept19.C
  ac7acbf5f862552298b34e84a650d5fa  gcc/testsuite/g++.dg/cpp0x/noexcept20.C
  2b6c095cbaee8a1afa6ee4b8efb3eca6  gcc/testsuite/g++.dg/cpp0x/noexcept21.C
  8a1b4a9dc941644e560680d40bba31d3  gcc/testsuite/g++.dg/cpp0x/noexcept22.C
--- 11587,11593 ----
  ae7b9d7f58a9bc802bcf7ffd5e196b3b  gcc/testsuite/g++.dg/cpp0x/noexcept16.C
  caa747f6ad498163168e3ed8c746b9d2  gcc/testsuite/g++.dg/cpp0x/noexcept17.C
  720a77ff1704acced122db257cb746bd  gcc/testsuite/g++.dg/cpp0x/noexcept18.C
! 46df38ceb39af752b760ce7396508b22  gcc/testsuite/g++.dg/cpp0x/noexcept19.C
  ac7acbf5f862552298b34e84a650d5fa  gcc/testsuite/g++.dg/cpp0x/noexcept20.C
  2b6c095cbaee8a1afa6ee4b8efb3eca6  gcc/testsuite/g++.dg/cpp0x/noexcept21.C
  8a1b4a9dc941644e560680d40bba31d3  gcc/testsuite/g++.dg/cpp0x/noexcept22.C
*************** a7ce890814702f4e47accec9c16c9a87  gcc/te
*** 11149,11157 ****
  8a14caa5e693140f84b5e595cc4a5bcd  gcc/testsuite/g++.dg/cpp0x/noexcept27.C
  312e5911742d260a76aa347c139166f2  gcc/testsuite/g++.dg/cpp0x/noexcept28.C
  e72e3f7b7460146d789bd2377c71d5d0  gcc/testsuite/g++.dg/cpp0x/noexcept29.C
! 9a44c4b3694c2695584bf19a10b2844f  gcc/testsuite/g++.dg/cpp0x/nolinkage1.C
  6b7c91b931bbdacbbffbf9b90a79bc6a  gcc/testsuite/g++.dg/cpp0x/nolinkage1.h
! 84840c32c28b1c181ccc33aecc2459a7  gcc/testsuite/g++.dg/cpp0x/nolinkage1a.cc
  c5f62c7fa81e1238df655c66dcf256b6  gcc/testsuite/g++.dg/cpp0x/nontype1.C
  cb5b10af278fbafac78a6d53829b3d37  gcc/testsuite/g++.dg/cpp0x/not_special.C
  e950526c0d7127f5718072cb9366641e  gcc/testsuite/g++.dg/cpp0x/nsdmi-aggr1.C
--- 11598,11609 ----
  8a14caa5e693140f84b5e595cc4a5bcd  gcc/testsuite/g++.dg/cpp0x/noexcept27.C
  312e5911742d260a76aa347c139166f2  gcc/testsuite/g++.dg/cpp0x/noexcept28.C
  e72e3f7b7460146d789bd2377c71d5d0  gcc/testsuite/g++.dg/cpp0x/noexcept29.C
! 5a4de85244de2950600a72a38947410f  gcc/testsuite/g++.dg/cpp0x/noexcept30.C
! a1bfa16a893d783dac2fb16b310309aa  gcc/testsuite/g++.dg/cpp0x/noexcept31.C
! 561d9b65f7315d6bab3a710ec4347c9c  gcc/testsuite/g++.dg/cpp0x/noexcept32.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
  c5f62c7fa81e1238df655c66dcf256b6  gcc/testsuite/g++.dg/cpp0x/nontype1.C
  cb5b10af278fbafac78a6d53829b3d37  gcc/testsuite/g++.dg/cpp0x/not_special.C
  e950526c0d7127f5718072cb9366641e  gcc/testsuite/g++.dg/cpp0x/nsdmi-aggr1.C
*************** e950526c0d7127f5718072cb9366641e  gcc/te
*** 11162,11170 ****
  1090d38c6d41caae2a45643a1fdb45f5  gcc/testsuite/g++.dg/cpp0x/nsdmi-defer3.C
  038b57fc82284f2499013b6711bc0a8e  gcc/testsuite/g++.dg/cpp0x/nsdmi-defer4.C
  171384a7319ac1870302b512ac8be270  gcc/testsuite/g++.dg/cpp0x/nsdmi-defer5.C
! 75662f6c054f03b468701521fd3078f1  gcc/testsuite/g++.dg/cpp0x/nsdmi-defer6.C
  9a72677ce49b64f4a0e186df8902abff  gcc/testsuite/g++.dg/cpp0x/nsdmi-dr1397.C
  5af761999024cb836ca412ed02230774  gcc/testsuite/g++.dg/cpp0x/nsdmi-eh1.C
  b8706c4b353788bfe037cbbf67877a76  gcc/testsuite/g++.dg/cpp0x/nsdmi-list1.C
  28861172743173b9d509ef8324377edf  gcc/testsuite/g++.dg/cpp0x/nsdmi-list2.C
  ef20e3e0e53b4fb3163e5066efb89b64  gcc/testsuite/g++.dg/cpp0x/nsdmi-list3.C
--- 11614,11623 ----
  1090d38c6d41caae2a45643a1fdb45f5  gcc/testsuite/g++.dg/cpp0x/nsdmi-defer3.C
  038b57fc82284f2499013b6711bc0a8e  gcc/testsuite/g++.dg/cpp0x/nsdmi-defer4.C
  171384a7319ac1870302b512ac8be270  gcc/testsuite/g++.dg/cpp0x/nsdmi-defer5.C
! 01f9c6930a387a0b45cb4220fc7ec298  gcc/testsuite/g++.dg/cpp0x/nsdmi-defer6.C
  9a72677ce49b64f4a0e186df8902abff  gcc/testsuite/g++.dg/cpp0x/nsdmi-dr1397.C
  5af761999024cb836ca412ed02230774  gcc/testsuite/g++.dg/cpp0x/nsdmi-eh1.C
+ a10475b2a54810b2909ccfef2102f693  gcc/testsuite/g++.dg/cpp0x/nsdmi-empty1.C
  b8706c4b353788bfe037cbbf67877a76  gcc/testsuite/g++.dg/cpp0x/nsdmi-list1.C
  28861172743173b9d509ef8324377edf  gcc/testsuite/g++.dg/cpp0x/nsdmi-list2.C
  ef20e3e0e53b4fb3163e5066efb89b64  gcc/testsuite/g++.dg/cpp0x/nsdmi-list3.C
*************** bb52d0707dea46cd2224e8f36c397c29  gcc/te
*** 11176,11188 ****
  c56f71db72e83d4f4135a61f033eddbb  gcc/testsuite/g++.dg/cpp0x/nsdmi-template11.C
  c940c3cdcc9e65954a0f9746a214bc21  gcc/testsuite/g++.dg/cpp0x/nsdmi-template12.C
  b10aa26824c27a87b56ae1ff32b2a84b  gcc/testsuite/g++.dg/cpp0x/nsdmi-template13.C
! 6f15a6ce9635f96448f63a33a09a11f3  gcc/testsuite/g++.dg/cpp0x/nsdmi-template14.C
  de8f6bc0c1c0ee4d4af6662950dc9f48  gcc/testsuite/g++.dg/cpp0x/nsdmi-template15.C
  3c00d9222274c65ab423d76b0d32f706  gcc/testsuite/g++.dg/cpp0x/nsdmi-template16.C
  d83133afa9fe5d533ed8b6cecc90cc44  gcc/testsuite/g++.dg/cpp0x/nsdmi-template2.C
  a4838f227c782d1dc8cc894a19deb0d1  gcc/testsuite/g++.dg/cpp0x/nsdmi-template3.C
  ecc55c2acf604366d5eab66ebf6a29dd  gcc/testsuite/g++.dg/cpp0x/nsdmi-template4.C
! bbce95e97ae41e0f3fe3ba83781deb99  gcc/testsuite/g++.dg/cpp0x/nsdmi-template5.C
  3a5b1755ff3b8f25bdc5d3343ec58d7e  gcc/testsuite/g++.dg/cpp0x/nsdmi-template6.C
  bca364bb7be51173c515446b467d101b  gcc/testsuite/g++.dg/cpp0x/nsdmi-template7.C
  8228a8cc4123378699db41bb692816a8  gcc/testsuite/g++.dg/cpp0x/nsdmi-template8.C
--- 11629,11641 ----
  c56f71db72e83d4f4135a61f033eddbb  gcc/testsuite/g++.dg/cpp0x/nsdmi-template11.C
  c940c3cdcc9e65954a0f9746a214bc21  gcc/testsuite/g++.dg/cpp0x/nsdmi-template12.C
  b10aa26824c27a87b56ae1ff32b2a84b  gcc/testsuite/g++.dg/cpp0x/nsdmi-template13.C
! 8e44d51e8562a587c9e03dd7c1dedc0a  gcc/testsuite/g++.dg/cpp0x/nsdmi-template14.C
  de8f6bc0c1c0ee4d4af6662950dc9f48  gcc/testsuite/g++.dg/cpp0x/nsdmi-template15.C
  3c00d9222274c65ab423d76b0d32f706  gcc/testsuite/g++.dg/cpp0x/nsdmi-template16.C
  d83133afa9fe5d533ed8b6cecc90cc44  gcc/testsuite/g++.dg/cpp0x/nsdmi-template2.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
  3a5b1755ff3b8f25bdc5d3343ec58d7e  gcc/testsuite/g++.dg/cpp0x/nsdmi-template6.C
  bca364bb7be51173c515446b467d101b  gcc/testsuite/g++.dg/cpp0x/nsdmi-template7.C
  8228a8cc4123378699db41bb692816a8  gcc/testsuite/g++.dg/cpp0x/nsdmi-template8.C
*************** f0f98ba44284a2706cf64a46abbded75  gcc/te
*** 11196,11205 ****
  54a77ab9cbeaf8802273eefd6e7a3c55  gcc/testsuite/g++.dg/cpp0x/nsdmi-virtual1.C
  f9a95403a108b26b2de03038d43da14f  gcc/testsuite/g++.dg/cpp0x/nsdmi-virtual2.C
  377e2e1b16dfc68982483f5462e7a1b0  gcc/testsuite/g++.dg/cpp0x/nsdmi1.C
! 91a43b77eb14e3bcc8e25996943b3d03  gcc/testsuite/g++.dg/cpp0x/nsdmi10.C
  ef00b2c2beb9680889aec5881ac6e71e  gcc/testsuite/g++.dg/cpp0x/nsdmi11.C
  73f3d24b7fde9a7bfe33075395c0b3db  gcc/testsuite/g++.dg/cpp0x/nsdmi12.C
  efbe4509f010d6478960eb76bc669dd0  gcc/testsuite/g++.dg/cpp0x/nsdmi13.C
  6441ebb320eb7cce0916b770b17635d3  gcc/testsuite/g++.dg/cpp0x/nsdmi2.C
  b49a256b7d52d077f75204867f7c282e  gcc/testsuite/g++.dg/cpp0x/nsdmi3.C
  5f65bb87e42c6ccb9b5a2788ce979bcf  gcc/testsuite/g++.dg/cpp0x/nsdmi4.C
--- 11649,11659 ----
  54a77ab9cbeaf8802273eefd6e7a3c55  gcc/testsuite/g++.dg/cpp0x/nsdmi-virtual1.C
  f9a95403a108b26b2de03038d43da14f  gcc/testsuite/g++.dg/cpp0x/nsdmi-virtual2.C
  377e2e1b16dfc68982483f5462e7a1b0  gcc/testsuite/g++.dg/cpp0x/nsdmi1.C
! 89839a6cc97a927eda8799f3b3b7c1fc  gcc/testsuite/g++.dg/cpp0x/nsdmi10.C
  ef00b2c2beb9680889aec5881ac6e71e  gcc/testsuite/g++.dg/cpp0x/nsdmi11.C
  73f3d24b7fde9a7bfe33075395c0b3db  gcc/testsuite/g++.dg/cpp0x/nsdmi12.C
  efbe4509f010d6478960eb76bc669dd0  gcc/testsuite/g++.dg/cpp0x/nsdmi13.C
+ 4d72e716873de669b52b72c5b41d93a3  gcc/testsuite/g++.dg/cpp0x/nsdmi14.C
  6441ebb320eb7cce0916b770b17635d3  gcc/testsuite/g++.dg/cpp0x/nsdmi2.C
  b49a256b7d52d077f75204867f7c282e  gcc/testsuite/g++.dg/cpp0x/nsdmi3.C
  5f65bb87e42c6ccb9b5a2788ce979bcf  gcc/testsuite/g++.dg/cpp0x/nsdmi4.C
*************** a5272f2b141b976a80585ef6cded80e8  gcc/te
*** 11245,11250 ****
--- 11699,11705 ----
  91777fbbf4cb10f1f75d9506659be8cc  gcc/testsuite/g++.dg/cpp0x/nullptr35.C
  144f3d38455ae2812361d567d48b6c4e  gcc/testsuite/g++.dg/cpp0x/nullptr36.C
  038bcc314ee0faed559e148dcdc87aa0  gcc/testsuite/g++.dg/cpp0x/nullptr37.C
+ a752e6374a9b016d0db3cc3d89cb1994  gcc/testsuite/g++.dg/cpp0x/nullptr38.C
  dd2e11db6d41e95dd646b54bb5547277  gcc/testsuite/g++.dg/cpp0x/nullptr39.C
  9ac544c85b4718bef7e0acbc03dd004f  gcc/testsuite/g++.dg/cpp0x/overflow1.C
  fb7661df85ad6b415b31574c67fa4ee0  gcc/testsuite/g++.dg/cpp0x/overload-conv-1.C
*************** e1598f2c9f261104495d9e7d921f8264  gcc/te
*** 11253,11263 ****
  15b4148c92763edcf90b0fe0cb6f7742  gcc/testsuite/g++.dg/cpp0x/overload2.C
  e51fa7b3953a97711f4b666480bad308  gcc/testsuite/g++.dg/cpp0x/overload3.C
  c03c417198197c4ba3676deef5492d64  gcc/testsuite/g++.dg/cpp0x/overloadn.C
! 6064001963a8da3b974684c939b4a11d  gcc/testsuite/g++.dg/cpp0x/override1.C
  7b0edd2d71ca32e524d6ff808a7ab0b7  gcc/testsuite/g++.dg/cpp0x/override2.C
  d2a1963e44488193e2d5ae183c548b2d  gcc/testsuite/g++.dg/cpp0x/override3.C
  ec3fccada021f17376f5255d71d5545b  gcc/testsuite/g++.dg/cpp0x/override4.C
! 26d0ef7670ffa957c631afcafc36a903  gcc/testsuite/g++.dg/cpp0x/parse1.C
  a174690fe306aaf345b02df91c3ddebe  gcc/testsuite/g++.dg/cpp0x/parse2.C
  26dea799d49ce223a0c4130a3c955271  gcc/testsuite/g++.dg/cpp0x/pr31431-2.C
  4d1da29b669bf3178b3987abce4d58b1  gcc/testsuite/g++.dg/cpp0x/pr31431.C
--- 11708,11718 ----
  15b4148c92763edcf90b0fe0cb6f7742  gcc/testsuite/g++.dg/cpp0x/overload2.C
  e51fa7b3953a97711f4b666480bad308  gcc/testsuite/g++.dg/cpp0x/overload3.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
  d2a1963e44488193e2d5ae183c548b2d  gcc/testsuite/g++.dg/cpp0x/override3.C
  ec3fccada021f17376f5255d71d5545b  gcc/testsuite/g++.dg/cpp0x/override4.C
! 63a98616cfbc7aecbf849404acae0e55  gcc/testsuite/g++.dg/cpp0x/parse1.C
  a174690fe306aaf345b02df91c3ddebe  gcc/testsuite/g++.dg/cpp0x/parse2.C
  26dea799d49ce223a0c4130a3c955271  gcc/testsuite/g++.dg/cpp0x/pr31431-2.C
  4d1da29b669bf3178b3987abce4d58b1  gcc/testsuite/g++.dg/cpp0x/pr31431.C
*************** be18d05a4a250bf242ba8f7cef911418  gcc/te
*** 11284,11290 ****
  ecd74345edbbcb8ad0e45ac4416e08b6  gcc/testsuite/g++.dg/cpp0x/pr33930.C
  408ef1f980b7138348a97aa5b521747b  gcc/testsuite/g++.dg/cpp0x/pr33955.C
  71d9f5e83b8c5cb685bd17eef206a7b1  gcc/testsuite/g++.dg/cpp0x/pr33996.C
! 4dd232ab66207cb5e950cede456ed93b  gcc/testsuite/g++.dg/cpp0x/pr34054.C
  033a2fba0e5bbfdf3113d3497d30d5fd  gcc/testsuite/g++.dg/cpp0x/pr34056.C
  d2b8cb652ab68b15ccd485a4246d7d02  gcc/testsuite/g++.dg/cpp0x/pr34057.C
  b5f4aef18b560b7280f82fd482d125c3  gcc/testsuite/g++.dg/cpp0x/pr34058.C
--- 11739,11745 ----
  ecd74345edbbcb8ad0e45ac4416e08b6  gcc/testsuite/g++.dg/cpp0x/pr33930.C
  408ef1f980b7138348a97aa5b521747b  gcc/testsuite/g++.dg/cpp0x/pr33955.C
  71d9f5e83b8c5cb685bd17eef206a7b1  gcc/testsuite/g++.dg/cpp0x/pr33996.C
! 1e5cf1c209b0b9bada398147562090df  gcc/testsuite/g++.dg/cpp0x/pr34054.C
  033a2fba0e5bbfdf3113d3497d30d5fd  gcc/testsuite/g++.dg/cpp0x/pr34056.C
  d2b8cb652ab68b15ccd485a4246d7d02  gcc/testsuite/g++.dg/cpp0x/pr34057.C
  b5f4aef18b560b7280f82fd482d125c3  gcc/testsuite/g++.dg/cpp0x/pr34058.C
*************** ba5cd480c0e4153959f48a06c316daf0  gcc/te
*** 11295,11301 ****
  3493537648da560f707109e667ef5360  gcc/testsuite/g++.dg/cpp0x/pr39639.C
  6f97c3d60bd0c567e3e9f13442ffc8f7  gcc/testsuite/g++.dg/cpp0x/pr42844-2.C
  aa52ef81c64f86ab036596abd37f9763  gcc/testsuite/g++.dg/cpp0x/pr45908.C
! de5bd9e7b6ec39ff73bf46962cdebe07  gcc/testsuite/g++.dg/cpp0x/pr47416.C
  4a1a8e5102e4cf4f1f2452ab499ac012  gcc/testsuite/g++.dg/cpp0x/pr47476.C
  d1c739425392ffcd8a21fd26a2e072bc  gcc/testsuite/g++.dg/cpp0x/pr48453.C
  193be9cc434dd7e3d92f02940743b292  gcc/testsuite/g++.dg/cpp0x/pr48522.C
--- 11750,11756 ----
  3493537648da560f707109e667ef5360  gcc/testsuite/g++.dg/cpp0x/pr39639.C
  6f97c3d60bd0c567e3e9f13442ffc8f7  gcc/testsuite/g++.dg/cpp0x/pr42844-2.C
  aa52ef81c64f86ab036596abd37f9763  gcc/testsuite/g++.dg/cpp0x/pr45908.C
! 345a78d1020eb7a48632bfc0fa9ebc37  gcc/testsuite/g++.dg/cpp0x/pr47416.C
  4a1a8e5102e4cf4f1f2452ab499ac012  gcc/testsuite/g++.dg/cpp0x/pr47476.C
  d1c739425392ffcd8a21fd26a2e072bc  gcc/testsuite/g++.dg/cpp0x/pr48453.C
  193be9cc434dd7e3d92f02940743b292  gcc/testsuite/g++.dg/cpp0x/pr48522.C
*************** d1c739425392ffcd8a21fd26a2e072bc  gcc/te
*** 11304,11310 ****
  9d6b716912d96dc72e473570455cb17a  gcc/testsuite/g++.dg/cpp0x/pr50901.C
  88c87171426f9e6d28da0206d5474e85  gcc/testsuite/g++.dg/cpp0x/pr51150.C
  0826580203443f6140fcf59428ad5352  gcc/testsuite/g++.dg/cpp0x/pr51216.C
! e25e46ac1ef482a94e8d4ce2b47bc9e7  gcc/testsuite/g++.dg/cpp0x/pr51225.C
  52c3fa4409093be55a0c3a1cd28b559c  gcc/testsuite/g++.dg/cpp0x/pr51226.C
  a93d73088837f8413d8c2a2507d41245  gcc/testsuite/g++.dg/cpp0x/pr51313.C
  a132521cad5155ed515916f0b862677e  gcc/testsuite/g++.dg/cpp0x/pr51420.C
--- 11759,11765 ----
  9d6b716912d96dc72e473570455cb17a  gcc/testsuite/g++.dg/cpp0x/pr50901.C
  88c87171426f9e6d28da0206d5474e85  gcc/testsuite/g++.dg/cpp0x/pr51150.C
  0826580203443f6140fcf59428ad5352  gcc/testsuite/g++.dg/cpp0x/pr51216.C
! eb4c601755974a6e7e889481cbeb1264  gcc/testsuite/g++.dg/cpp0x/pr51225.C
  52c3fa4409093be55a0c3a1cd28b559c  gcc/testsuite/g++.dg/cpp0x/pr51226.C
  a93d73088837f8413d8c2a2507d41245  gcc/testsuite/g++.dg/cpp0x/pr51313.C
  a132521cad5155ed515916f0b862677e  gcc/testsuite/g++.dg/cpp0x/pr51420.C
*************** fde4df725e337b433baf1bd5c4490563  gcc/te
*** 11338,11344 ****
  99345be72ff580dd3de1858994530c51  gcc/testsuite/g++.dg/cpp0x/pr58563.C
  b2c6b8e617bc163eb317b7668652e006  gcc/testsuite/g++.dg/cpp0x/pr58674.C
  135956a1794cb24e32c252e833402edb  gcc/testsuite/g++.dg/cpp0x/pr58707.C
! c2caeb92016de47392b35fa937c864f8  gcc/testsuite/g++.dg/cpp0x/pr58781.C
  0015dc46694c26453738cf6d0f1ff9f1  gcc/testsuite/g++.dg/cpp0x/pr58871.C
  967bdfde8ed047b9a14d9e22d993a643  gcc/testsuite/g++.dg/cpp0x/pr59111.C
  97725be33d84460ca43942d2adc95953  gcc/testsuite/g++.dg/cpp0x/pr59641.C
--- 11793,11799 ----
  99345be72ff580dd3de1858994530c51  gcc/testsuite/g++.dg/cpp0x/pr58563.C
  b2c6b8e617bc163eb317b7668652e006  gcc/testsuite/g++.dg/cpp0x/pr58674.C
  135956a1794cb24e32c252e833402edb  gcc/testsuite/g++.dg/cpp0x/pr58707.C
! 5128897699b4df2cf89b2c1fcc525ed0  gcc/testsuite/g++.dg/cpp0x/pr58781.C
  0015dc46694c26453738cf6d0f1ff9f1  gcc/testsuite/g++.dg/cpp0x/pr58871.C
  967bdfde8ed047b9a14d9e22d993a643  gcc/testsuite/g++.dg/cpp0x/pr59111.C
  97725be33d84460ca43942d2adc95953  gcc/testsuite/g++.dg/cpp0x/pr59641.C
*************** c2caeb92016de47392b35fa937c864f8  gcc/te
*** 11348,11353 ****
--- 11803,11809 ----
  a4d3796e26e4be4195bf46b19a76adeb  gcc/testsuite/g++.dg/cpp0x/pr60209.C
  b183a4e80609d3b7c1a96a71d68c8355  gcc/testsuite/g++.dg/cpp0x/pr60215.C
  17a7d3331efe07a3a8ad8feaefd13408  gcc/testsuite/g++.dg/cpp0x/pr60249.C
+ ca73bec7f65810c088cc8d85f61a544c  gcc/testsuite/g++.dg/cpp0x/pr60430.C
  afadc39839ba83cfae01b237f8ccdcc8  gcc/testsuite/g++.dg/cpp0x/pr61019.C
  eeb523f167581f8351c6d531dca2372c  gcc/testsuite/g++.dg/cpp0x/pr61038.C
  c1ef2b1e3f9c5996571cb4f587bfb4b0  gcc/testsuite/g++.dg/cpp0x/pr61924.C
*************** e1e37c782e8544f0f2bd4a0a8c3d6b56  gcc/te
*** 11362,11368 ****
  a99edb64d229a865dee699085d485722  gcc/testsuite/g++.dg/cpp0x/pr65327.C
  3b11d27f9ec6ae594f5bfe44a2630c07  gcc/testsuite/g++.dg/cpp0x/pr65398-2.C
  15a18c8ec6bc66fe94b289311d90d95b  gcc/testsuite/g++.dg/cpp0x/pr65398.C
! 160058bb6f5ebfd48ad7cd413243f751  gcc/testsuite/g++.dg/cpp0x/pr65558.C
  ddca64f77cad71506384979bf848526b  gcc/testsuite/g++.dg/cpp0x/pr65736.C
  0f7446a2894c38929808894540047207  gcc/testsuite/g++.dg/cpp0x/pr65954.C
  8f16a54ebc97f3c45987b2994dba9e96  gcc/testsuite/g++.dg/cpp0x/pr66130.C
--- 11818,11824 ----
  a99edb64d229a865dee699085d485722  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
  ddca64f77cad71506384979bf848526b  gcc/testsuite/g++.dg/cpp0x/pr65736.C
  0f7446a2894c38929808894540047207  gcc/testsuite/g++.dg/cpp0x/pr65954.C
  8f16a54ebc97f3c45987b2994dba9e96  gcc/testsuite/g++.dg/cpp0x/pr66130.C
*************** dd42864765b66d682b2b12e5b3b2f9bd  gcc/te
*** 11370,11375 ****
--- 11826,11832 ----
  40878c8a7625b377cbb8eb4edec51375  gcc/testsuite/g++.dg/cpp0x/pr66443-cxx11-2.C
  e3798eda72e850294e15fe5d76637811  gcc/testsuite/g++.dg/cpp0x/pr66443-cxx11.C
  1a55a13ca1303ae99767edfc388e92ed  gcc/testsuite/g++.dg/cpp0x/pr67238.C
+ 3b88c30421b7a9c8c19087b6b6deacb1  gcc/testsuite/g++.dg/cpp0x/pr67625.C
  e85408993e6b3f61f5073e187d03547d  gcc/testsuite/g++.dg/cpp0x/pr67767.C
  0962e3a6b5951296548ed3ba38744cf9  gcc/testsuite/g++.dg/cpp0x/pr68116.C
  448bc36042e9d013ec7bfb4a8df5c4ca  gcc/testsuite/g++.dg/cpp0x/pr68348.C
*************** d584417478a609ab589447aa7e173812  gcc/te
*** 11379,11400 ****
--- 11836,11866 ----
  72ddfeb4cc0f740fe85e9fb11ecf08c6  gcc/testsuite/g++.dg/cpp0x/pr69481.C
  0986c11825f9b8bd879f039e6c19c442  gcc/testsuite/g++.dg/cpp0x/pr69637-1.C
  2617bc1446b0ad928a5375880ac05132  gcc/testsuite/g++.dg/cpp0x/pr69637-2.C
+ bd60fe836072299f061fcfbe1692e691  gcc/testsuite/g++.dg/cpp0x/pr70338.C
  735a44cb9485ae979ab8eb92ccba3536  gcc/testsuite/g++.dg/cpp0x/pr70448.C
  4ca96cbe7b69845eba2cf016007957a4  gcc/testsuite/g++.dg/cpp0x/pr70528.C
+ e3123e5c3b5b9dd201c7d3cbd878dc2c  gcc/testsuite/g++.dg/cpp0x/pr70538.C
  cf9cf154014255688dedeb39cfe8e73b  gcc/testsuite/g++.dg/cpp0x/pr70869.C
+ 3e877be2b896ecc6ed739098ed9b76b9  gcc/testsuite/g++.dg/cpp0x/pr70887.C
  c69896dc2fac3243e492d5e8acf8d0b8  gcc/testsuite/g++.dg/cpp0x/pr71054.C
+ 9e100f27b95d86b13b775f610f5df142  gcc/testsuite/g++.dg/cpp0x/pr71169-2.C
+ e1a511421f654ec5c35e3c8489aa5739  gcc/testsuite/g++.dg/cpp0x/pr71169.C
  8cd9ca1dc7d8e3ad63d64b194e06d6ca  gcc/testsuite/g++.dg/cpp0x/pr71182.C
  afca605574c143b03c1edfd550c08235  gcc/testsuite/g++.dg/cpp0x/pr71225.C
  e80694696d83142a842fc2bdd0453052  gcc/testsuite/g++.dg/cpp0x/pr71248.C
+ be17dca9a4c8044dba443db03aceec85  gcc/testsuite/g++.dg/cpp0x/pr71251.C
  176a7b31bec2b0bf184f8d3c71271abc  gcc/testsuite/g++.dg/cpp0x/pr71450-1.C
  b87e3c0a6f2d6658ad83136af49d4fe8  gcc/testsuite/g++.dg/cpp0x/pr71450-2.C
+ 171f3097d738179a183f6ba795fef66f  gcc/testsuite/g++.dg/cpp0x/pr71577.C
  6864a753377cb3d6484bff0cb2d65f98  gcc/testsuite/g++.dg/cpp0x/pr71665-1.C
  69b2f8ac05fe6650c239006fe454c7e9  gcc/testsuite/g++.dg/cpp0x/pr71665-2.C
  9a83fea4bf11ecca2a0cc35932a712af  gcc/testsuite/g++.dg/cpp0x/pr71737.C
  bf28b34cff6af29465046bf24b9bff82  gcc/testsuite/g++.dg/cpp0x/pr71739.C
+ 365cf7fa12b2da81dee2602bcb88b608  gcc/testsuite/g++.dg/cpp0x/pr71832.C
  7db8fb53d27b6b42dae28b06ce6a13b4  gcc/testsuite/g++.dg/cpp0x/pr71966-1.C
  9dae907b573bb7f0f113030c36daaf73  gcc/testsuite/g++.dg/cpp0x/pr71966-2.C
  9bd8c8b9fffb67d664242b90316ba3c6  gcc/testsuite/g++.dg/cpp0x/pr71979.C
+ 5a54bfbcb8cbe882d221539896d0ee69  gcc/testsuite/g++.dg/cpp0x/pr77655.C
  26ea08e9b4f6ddd2f8b2d8c726065478  gcc/testsuite/g++.dg/cpp0x/pr77907.C
  5bb2e44a798fbbbc91ed0f5de57211bf  gcc/testsuite/g++.dg/cpp0x/pr77948-1.C
  0c74d3ae9a94916f1b5da5f0a58bfc62  gcc/testsuite/g++.dg/cpp0x/pr77948-2.C
*************** cd99ffd2dd5d16ea3eda3778014b17cf  gcc/te
*** 11416,11434 ****
  6cef64c2476ef0d34f1295562a595936  gcc/testsuite/g++.dg/cpp0x/pr79296.C
  d34b0013209051900b8114802ea89d6d  gcc/testsuite/g++.dg/cpp0x/pr79361-1.C
  082b887aa1f2c8f001a0beace0ba3331  gcc/testsuite/g++.dg/cpp0x/pr79361-2.C
  a5009c71493536f14c34f935f9b9d0a3  gcc/testsuite/g++.dg/cpp0x/pr79457.C
  0b13b84af448e02075acf50ed59b222c  gcc/testsuite/g++.dg/cpp0x/pr80259.C
! 56dff682c68971fd9a5e4c2cbca5e8db  gcc/testsuite/g++.dg/cpp0x/pr81325.C
  b0aef9b4e29c1c639c49513dd20eddaa  gcc/testsuite/g++.dg/cpp0x/pr82299.C
  5b2b43024e2826cfb8352cc9a3af7a5c  gcc/testsuite/g++.dg/cpp0x/pr82560.C
  22640f58e38b3f775918e32eb89ae1c5  gcc/testsuite/g++.dg/cpp0x/pr83556.C
  53428f69a6d0153074c9b06ee9fbe9e7  gcc/testsuite/g++.dg/cpp0x/ptrmem-cst-arg1.C
  6e8e648c26d9bf237cc152180e88c2c2  gcc/testsuite/g++.dg/cpp0x/range-for1.C
! 5c7a98d8ca2f0f427c081bf6902aa831  gcc/testsuite/g++.dg/cpp0x/range-for10.C
  5eec4a19463d582cbc114d93dbff246a  gcc/testsuite/g++.dg/cpp0x/range-for11.C
  22acc783be03cde2f30fafef0d50d9a2  gcc/testsuite/g++.dg/cpp0x/range-for12.C
! 85bac76bf4cf7eb5b1307ab57058151e  gcc/testsuite/g++.dg/cpp0x/range-for13.C
! 3982df26cef9ee27d82b753ea7cc8d36  gcc/testsuite/g++.dg/cpp0x/range-for14.C
  6744db312d947b21c87f772cadc96f8a  gcc/testsuite/g++.dg/cpp0x/range-for15.C
  e52b898f780ed4b01b2040fda37a40e1  gcc/testsuite/g++.dg/cpp0x/range-for16.C
  0e454e1ec2555139c4421d867fea9ce8  gcc/testsuite/g++.dg/cpp0x/range-for17.C
--- 11882,11930 ----
  6cef64c2476ef0d34f1295562a595936  gcc/testsuite/g++.dg/cpp0x/pr79296.C
  d34b0013209051900b8114802ea89d6d  gcc/testsuite/g++.dg/cpp0x/pr79361-1.C
  082b887aa1f2c8f001a0beace0ba3331  gcc/testsuite/g++.dg/cpp0x/pr79361-2.C
+ c20676c0ea9414db47138c5a34d0d20f  gcc/testsuite/g++.dg/cpp0x/pr79369.C
  a5009c71493536f14c34f935f9b9d0a3  gcc/testsuite/g++.dg/cpp0x/pr79457.C
+ 3d1d584dec389d0b247f2bb60b8805d6  gcc/testsuite/g++.dg/cpp0x/pr79652.C
  0b13b84af448e02075acf50ed59b222c  gcc/testsuite/g++.dg/cpp0x/pr80259.C
! 44672ad65ba62004ce19b12000a5ee61  gcc/testsuite/g++.dg/cpp0x/pr80805.C
! 63fa3a3c744dd4ece36f781334417c5d  gcc/testsuite/g++.dg/cpp0x/pr81060.C
! 8610bcce3b940f764e90b97cb24b8e55  gcc/testsuite/g++.dg/cpp0x/pr81167.C
! d2cc68f28cd5fe75d6cff2b41782fb3c  gcc/testsuite/g++.dg/cpp0x/pr81325.C
  b0aef9b4e29c1c639c49513dd20eddaa  gcc/testsuite/g++.dg/cpp0x/pr82299.C
+ ae82fe5e053fc4946915e74822cff52e  gcc/testsuite/g++.dg/cpp0x/pr82401.C
  5b2b43024e2826cfb8352cc9a3af7a5c  gcc/testsuite/g++.dg/cpp0x/pr82560.C
+ 9b5e473aa459638d56a9dbb1edd0222b  gcc/testsuite/g++.dg/cpp0x/pr82725.C
+ 5208394efee72c1ca97c50c956e0cc45  gcc/testsuite/g++.dg/cpp0x/pr82878.C
+ 84487682cabf4527f27a94d9d9c2661f  gcc/testsuite/g++.dg/cpp0x/pr82882.C
+ ce317b0879de92313ef6b7d499d12986  gcc/testsuite/g++.dg/cpp0x/pr83160.C
  22640f58e38b3f775918e32eb89ae1c5  gcc/testsuite/g++.dg/cpp0x/pr83556.C
+ 4fe064623be9835d942eb333b5ceb6bf  gcc/testsuite/g++.dg/cpp0x/pr83734.C
+ 0e513eaf320aa9c504e7cd59d73bb3ea  gcc/testsuite/g++.dg/cpp0x/pr83824.C
+ 30981c40dc31fe90ed90a038b55d90e0  gcc/testsuite/g++.dg/cpp0x/pr83897.C
+ 662c2eb0632332c0375729eb9c9f926e  gcc/testsuite/g++.dg/cpp0x/pr83919.C
+ 70a182b3dddc113e81b5322b16298fe4  gcc/testsuite/g++.dg/cpp0x/pr83978.C
+ 71d60efef3e782a1d320da23ac44744e  gcc/testsuite/g++.dg/cpp0x/pr83993.C
+ bd4e8cb0df7cafc2bf9c6508da8c910a  gcc/testsuite/g++.dg/cpp0x/pr84497.C
+ 3357d765c2a248307f8a2822fc51cdf5  gcc/testsuite/g++.dg/cpp0x/pr84606.C
+ 4645cdc10faa1c61c439188409dd5b38  gcc/testsuite/g++.dg/cpp0x/pr84609.C
+ 8ad683b7769fad28d118622160fbe8d4  gcc/testsuite/g++.dg/cpp0x/pr84610.C
+ 820ed4071fe24e095cbca9c7cb169a60  gcc/testsuite/g++.dg/cpp0x/pr84630.C
+ c340da8892c614858df3de778cf44493  gcc/testsuite/g++.dg/cpp0x/pr84642.C
+ 88046ad6a8410e2d0f776eb549cf76c8  gcc/testsuite/g++.dg/cpp0x/pr85015.C
+ 49c3a5dd9d0d26115234efcfe79bf7e1  gcc/testsuite/g++.dg/cpp0x/pr85112.C
+ e220051a1789469e32d70224f27f40f1  gcc/testsuite/g++.dg/cpp0x/pr85147.C
+ d443a2f727fe9f7c945ca225877f4250  gcc/testsuite/g++.dg/cpp0x/pr85437-1.C
+ 3447254b7a712723ad3d936bef523ce1  gcc/testsuite/g++.dg/cpp0x/pr85437-2.C
+ 15624ebfd846ed0d6db088d7b22ae5ed  gcc/testsuite/g++.dg/cpp0x/pr85437-3.C
+ b29d09f2850527adc7623c72769dd875  gcc/testsuite/g++.dg/cpp0x/pr85437-4.C
+ 3e4876a6956406603a6b329738b1377d  gcc/testsuite/g++.dg/cpp0x/pr85462.C
  53428f69a6d0153074c9b06ee9fbe9e7  gcc/testsuite/g++.dg/cpp0x/ptrmem-cst-arg1.C
  6e8e648c26d9bf237cc152180e88c2c2  gcc/testsuite/g++.dg/cpp0x/range-for1.C
! 0575c153beb764d50309dc02ebd221c1  gcc/testsuite/g++.dg/cpp0x/range-for10.C
  5eec4a19463d582cbc114d93dbff246a  gcc/testsuite/g++.dg/cpp0x/range-for11.C
  22acc783be03cde2f30fafef0d50d9a2  gcc/testsuite/g++.dg/cpp0x/range-for12.C
! 7fca70f7d238abc1bdf073e027cc68e4  gcc/testsuite/g++.dg/cpp0x/range-for13.C
! 751901c309c48a87a9251424b6ff4124  gcc/testsuite/g++.dg/cpp0x/range-for14.C
  6744db312d947b21c87f772cadc96f8a  gcc/testsuite/g++.dg/cpp0x/range-for15.C
  e52b898f780ed4b01b2040fda37a40e1  gcc/testsuite/g++.dg/cpp0x/range-for16.C
  0e454e1ec2555139c4421d867fea9ce8  gcc/testsuite/g++.dg/cpp0x/range-for17.C
*************** c0e5ee89c913d75b3174c2833d03f665  gcc/te
*** 11453,11459 ****
  f6fdcf88436a7c2de904550e31de7cea  gcc/testsuite/g++.dg/cpp0x/range-for34.C
  cf3faabae812bd6f8ade13f3c1d36871  gcc/testsuite/g++.dg/cpp0x/range-for4.C
  9d70da20463079b62be580867a3e6601  gcc/testsuite/g++.dg/cpp0x/range-for5.C
! bf09a13cfe61445a898ea383c44bc795  gcc/testsuite/g++.dg/cpp0x/range-for6.C
  cf6c66c2c1f26f78f53b3a006d996662  gcc/testsuite/g++.dg/cpp0x/range-for7.C
  b111f953ff16a99ffc3ad09a151f0958  gcc/testsuite/g++.dg/cpp0x/range-for8.C
  68a9925bd047631ad89890587ebf286d  gcc/testsuite/g++.dg/cpp0x/range-for9.C
--- 11949,11955 ----
  f6fdcf88436a7c2de904550e31de7cea  gcc/testsuite/g++.dg/cpp0x/range-for34.C
  cf3faabae812bd6f8ade13f3c1d36871  gcc/testsuite/g++.dg/cpp0x/range-for4.C
  9d70da20463079b62be580867a3e6601  gcc/testsuite/g++.dg/cpp0x/range-for5.C
! 552d6f24d3e88cb9880ea25f37817a81  gcc/testsuite/g++.dg/cpp0x/range-for6.C
  cf6c66c2c1f26f78f53b3a006d996662  gcc/testsuite/g++.dg/cpp0x/range-for7.C
  b111f953ff16a99ffc3ad09a151f0958  gcc/testsuite/g++.dg/cpp0x/range-for8.C
  68a9925bd047631ad89890587ebf286d  gcc/testsuite/g++.dg/cpp0x/range-for9.C
*************** bf679e1b75877f28dc4d57155f61bcb1  gcc/te
*** 11468,11473 ****
--- 11964,11970 ----
  baf0dc0526b9c7116fa5e5cbccbe2286  gcc/testsuite/g++.dg/cpp0x/ref-qual15.C
  0a3150042efce88e411aee61e7fe784f  gcc/testsuite/g++.dg/cpp0x/ref-qual16.C
  0abe32df36a729d72295ed31565b5f9e  gcc/testsuite/g++.dg/cpp0x/ref-qual17.C
+ 406a665e1cf18ab29d627440010b6614  gcc/testsuite/g++.dg/cpp0x/ref-qual18.C
  17d77d3ef6cc0e1cfd53228f15a40017  gcc/testsuite/g++.dg/cpp0x/ref-qual2.C
  68b27ec15231994ad0330625660d2720  gcc/testsuite/g++.dg/cpp0x/ref-qual3.C
  1bb06529f586a3e77263290dd006534e  gcc/testsuite/g++.dg/cpp0x/ref-qual4.C
*************** ea513230550307f5df4e85eacd7d581c  gcc/te
*** 11502,11527 ****
  2a81ce678792db63349c1f40f691b226  gcc/testsuite/g++.dg/cpp0x/rv-reinterpret.C
  57ca627add7fb3090157211ed3ea80fd  gcc/testsuite/g++.dg/cpp0x/rv-restrict.C
  66a6ae714e2694ad87aa5a2e51b9c52c  gcc/testsuite/g++.dg/cpp0x/rv-return.C
  5b6ef7b6e035ce04da4a7a9ed3f09464  gcc/testsuite/g++.dg/cpp0x/rv-template1.C
  4cf744a9856d8f6620980a3a442fe6b3  gcc/testsuite/g++.dg/cpp0x/rv-this.C
  779fd2d42bfb701a65f0e9552cb88d65  gcc/testsuite/g++.dg/cpp0x/rv-this2.C
! d9a4a919f8bc77e8525de663e8f23115  gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C
  ce88e86fef9026207a379023cb8c2d11  gcc/testsuite/g++.dg/cpp0x/rv10.C
  c259a71550b325c7c9b7d034c638a1a1  gcc/testsuite/g++.dg/cpp0x/rv1n.C
! 2c917430742362b844152b82b42dd37a  gcc/testsuite/g++.dg/cpp0x/rv1p.C
! 9abf7a34aff7507577192dc7ef1f0795  gcc/testsuite/g++.dg/cpp0x/rv2n.C
! e0447830998322d311c6dae7bcf22e59  gcc/testsuite/g++.dg/cpp0x/rv2p.C
! 199f4fc61c5c6078b7b8f5589a8059d4  gcc/testsuite/g++.dg/cpp0x/rv3n.C
! f270bd56f7e949e1d547e8da3bcb5428  gcc/testsuite/g++.dg/cpp0x/rv3p.C
  34f1fb070d5e0bd43119e5e95813923f  gcc/testsuite/g++.dg/cpp0x/rv4n.C
! de33eb6368fe9d352b73fa59215f32a5  gcc/testsuite/g++.dg/cpp0x/rv4p.C
  ea5c980652a3d4cec9716f209b73dcce  gcc/testsuite/g++.dg/cpp0x/rv5n.C
! c22897158fbf4b61febeae7dea548c9c  gcc/testsuite/g++.dg/cpp0x/rv5p.C
  f8932d821196cd4ff1253ded7abfe6f3  gcc/testsuite/g++.dg/cpp0x/rv6n.C
! cc8a2a7204c0e96da76accbe0459f841  gcc/testsuite/g++.dg/cpp0x/rv6p.C
  5a9623af46a6b62c5e1dcb85686268d7  gcc/testsuite/g++.dg/cpp0x/rv7n.C
! b7c216a64b313886be5ab92f5be27607  gcc/testsuite/g++.dg/cpp0x/rv7p.C
! 40b10e2a2f81d881e2ce664b540bcd1a  gcc/testsuite/g++.dg/cpp0x/rv8p.C
  8568feb0868ae4989d6f1e0f0816198b  gcc/testsuite/g++.dg/cpp0x/rv9p.C
  9328b0378950a77e4d83178cdca07ca6  gcc/testsuite/g++.dg/cpp0x/rvo.C
  d2a48680a52815fe32ccc773a43bfb6d  gcc/testsuite/g++.dg/cpp0x/scoped_enum.C
--- 11999,12025 ----
  2a81ce678792db63349c1f40f691b226  gcc/testsuite/g++.dg/cpp0x/rv-reinterpret.C
  57ca627add7fb3090157211ed3ea80fd  gcc/testsuite/g++.dg/cpp0x/rv-restrict.C
  66a6ae714e2694ad87aa5a2e51b9c52c  gcc/testsuite/g++.dg/cpp0x/rv-return.C
+ ddee5e1bf0ce08cff4566375599c67f1  gcc/testsuite/g++.dg/cpp0x/rv-targ1.C
  5b6ef7b6e035ce04da4a7a9ed3f09464  gcc/testsuite/g++.dg/cpp0x/rv-template1.C
  4cf744a9856d8f6620980a3a442fe6b3  gcc/testsuite/g++.dg/cpp0x/rv-this.C
  779fd2d42bfb701a65f0e9552cb88d65  gcc/testsuite/g++.dg/cpp0x/rv-this2.C
! 35f5356c301b8d554b6ddb747601f71f  gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C
  ce88e86fef9026207a379023cb8c2d11  gcc/testsuite/g++.dg/cpp0x/rv10.C
  c259a71550b325c7c9b7d034c638a1a1  gcc/testsuite/g++.dg/cpp0x/rv1n.C
! 22f5c176e19df95d176c87ec1d8d0ed8  gcc/testsuite/g++.dg/cpp0x/rv1p.C
! 1f6b8fee55af59e66affa85399eb566c  gcc/testsuite/g++.dg/cpp0x/rv2n.C
! 2f84602e59d796139880cb7b6873abf6  gcc/testsuite/g++.dg/cpp0x/rv2p.C
! efbb06ae1752341ac888db26198eadad  gcc/testsuite/g++.dg/cpp0x/rv3n.C
! 352f21c5ee38f37b10364d14c0b73b3c  gcc/testsuite/g++.dg/cpp0x/rv3p.C
  34f1fb070d5e0bd43119e5e95813923f  gcc/testsuite/g++.dg/cpp0x/rv4n.C
! 0a41d5a05a2bf97019094d11b5ca06a6  gcc/testsuite/g++.dg/cpp0x/rv4p.C
  ea5c980652a3d4cec9716f209b73dcce  gcc/testsuite/g++.dg/cpp0x/rv5n.C
! d74e0f701c9e3b5d05ecb524827d76b8  gcc/testsuite/g++.dg/cpp0x/rv5p.C
  f8932d821196cd4ff1253ded7abfe6f3  gcc/testsuite/g++.dg/cpp0x/rv6n.C
! cb2efb2a6d22a06df03c6f7bd0f7e016  gcc/testsuite/g++.dg/cpp0x/rv6p.C
  5a9623af46a6b62c5e1dcb85686268d7  gcc/testsuite/g++.dg/cpp0x/rv7n.C
! ad995236b5e567490bd4aac3abe61317  gcc/testsuite/g++.dg/cpp0x/rv7p.C
! dbfcfd86642ca2356dc24ed9700c2fbe  gcc/testsuite/g++.dg/cpp0x/rv8p.C
  8568feb0868ae4989d6f1e0f0816198b  gcc/testsuite/g++.dg/cpp0x/rv9p.C
  9328b0378950a77e4d83178cdca07ca6  gcc/testsuite/g++.dg/cpp0x/rvo.C
  d2a48680a52815fe32ccc773a43bfb6d  gcc/testsuite/g++.dg/cpp0x/scoped_enum.C
*************** edc3b5f5ab7edd4f234396d4f8b04d63  gcc/te
*** 11530,11535 ****
--- 12028,12035 ----
  1e24d1d0ae7f073e1479225d241dc5e1  gcc/testsuite/g++.dg/cpp0x/scoped_enum4.C
  541718d6d9b25fbccc234f6947261aa4  gcc/testsuite/g++.dg/cpp0x/scoped_enum5.C
  3f236d1e4bfadb8a02c1a7289b23bad2  gcc/testsuite/g++.dg/cpp0x/scoped_enum6.C
+ 8d757b1b8b2bb07f96bcaba2a77354dd  gcc/testsuite/g++.dg/cpp0x/scoped_enum7.C
+ b3ee3166a5741307088b2339967053fe  gcc/testsuite/g++.dg/cpp0x/scoped_enum8.C
  fd6131462c6e3edcb0e1d2d7c01ff384  gcc/testsuite/g++.dg/cpp0x/scoped_enum_98.C
  6685ec50d52d3887bdc0a886cae9ec64  gcc/testsuite/g++.dg/cpp0x/scoped_enum_examples.C
  8127b3be0d9d5dd0589006e9bbc74bc4  gcc/testsuite/g++.dg/cpp0x/sfinae-nullptr1.C
*************** e7599b82884a92ce0157f46542b0cac0  gcc/te
*** 11587,11611 ****
  c0fee994e880e6032fe6c1fa1a6efa69  gcc/testsuite/g++.dg/cpp0x/sfinae56.C
  2628399b955cc58affa3be676427e085  gcc/testsuite/g++.dg/cpp0x/sfinae57.C
  a5e6ed91f0f646eb02d06d6e7670053e  gcc/testsuite/g++.dg/cpp0x/sfinae58.C
  7d2a515d9dca41b0e82b2e6ea54bd2d3  gcc/testsuite/g++.dg/cpp0x/sfinae6.C
  ec1a51ea3fd41e6e61c8f425bde1fd0b  gcc/testsuite/g++.dg/cpp0x/sfinae7.C
  547894832b1452d5f513938e0cb8a166  gcc/testsuite/g++.dg/cpp0x/sfinae8.C
  03177ceac1dca2efe41bd4b603c2a79e  gcc/testsuite/g++.dg/cpp0x/sfinae9.C
  e3c4cd6748b5a83f7b2c14889d2c4590  gcc/testsuite/g++.dg/cpp0x/static_assert1.C
! 69b8c0715bcd57e4fe3c98ebfc4292fb  gcc/testsuite/g++.dg/cpp0x/static_assert10.C
! 0ea0b0e18907f61140575a772dd41be0  gcc/testsuite/g++.dg/cpp0x/static_assert11.C
! 9f1124a816963efe95c7ed14e29330fb  gcc/testsuite/g++.dg/cpp0x/static_assert12.C
! eb10cf93ec1573c3c3c6e291a8bfab31  gcc/testsuite/g++.dg/cpp0x/static_assert13.C
  7c94507411d8f0fcd4964618204cd929  gcc/testsuite/g++.dg/cpp0x/static_assert2.C
  f24eae3c4070d37d2bbcb3f45a386807  gcc/testsuite/g++.dg/cpp0x/static_assert3.C
  09c6459c722f7fda152e22ef59d4e30c  gcc/testsuite/g++.dg/cpp0x/static_assert4.C
  b6e1adef2dde113019ef4fea0f82078b  gcc/testsuite/g++.dg/cpp0x/static_assert5.C
  be87eb6f527a213d6b73c8a9a9d444f5  gcc/testsuite/g++.dg/cpp0x/static_assert6.C
  10b488e73e6cc35cd83a7ed1625b7f03  gcc/testsuite/g++.dg/cpp0x/static_assert7.C
! da5be6fe3e6b041be633fe944e6ef040  gcc/testsuite/g++.dg/cpp0x/static_assert8.C
  4e2bbb9a59c90b11ad60255050db8632  gcc/testsuite/g++.dg/cpp0x/static_assert9.C
  0d886197bcd772f2eff3bcdb10bdc464  gcc/testsuite/g++.dg/cpp0x/std-layout1.C
! 8ad594629424d36b76265642e775265b  gcc/testsuite/g++.dg/cpp0x/std_fext-numeric-literals.C
  7ba1d7418fff81a8372f9fe612fc02a2  gcc/testsuite/g++.dg/cpp0x/std_fno-ext-numeric-literals.C
  c8339a090dcd3866e3bcee3adaa249a3  gcc/testsuite/g++.dg/cpp0x/stddef.C
  271ca147c68e58fb493c98645f047765  gcc/testsuite/g++.dg/cpp0x/stdint.C
--- 12087,12116 ----
  c0fee994e880e6032fe6c1fa1a6efa69  gcc/testsuite/g++.dg/cpp0x/sfinae56.C
  2628399b955cc58affa3be676427e085  gcc/testsuite/g++.dg/cpp0x/sfinae57.C
  a5e6ed91f0f646eb02d06d6e7670053e  gcc/testsuite/g++.dg/cpp0x/sfinae58.C
+ 088ca4437702919a57d2ad72f181184f  gcc/testsuite/g++.dg/cpp0x/sfinae59.C
  7d2a515d9dca41b0e82b2e6ea54bd2d3  gcc/testsuite/g++.dg/cpp0x/sfinae6.C
+ 0cc7cf7d0ec0400e4be4d1ae2087c83f  gcc/testsuite/g++.dg/cpp0x/sfinae60.C
+ 131acf6a69dc715be311411cf0fefa3e  gcc/testsuite/g++.dg/cpp0x/sfinae61.C
  ec1a51ea3fd41e6e61c8f425bde1fd0b  gcc/testsuite/g++.dg/cpp0x/sfinae7.C
  547894832b1452d5f513938e0cb8a166  gcc/testsuite/g++.dg/cpp0x/sfinae8.C
  03177ceac1dca2efe41bd4b603c2a79e  gcc/testsuite/g++.dg/cpp0x/sfinae9.C
  e3c4cd6748b5a83f7b2c14889d2c4590  gcc/testsuite/g++.dg/cpp0x/static_assert1.C
! b37ccc1795a94faef1d66ac5782dcc39  gcc/testsuite/g++.dg/cpp0x/static_assert10.C
! 7aecd80cc0e41c35763816d27e4f0304  gcc/testsuite/g++.dg/cpp0x/static_assert11.C
! facce48609424ece7368b1854cae226b  gcc/testsuite/g++.dg/cpp0x/static_assert12.C
! e884bf1c365eb117bddb8cf25bb61944  gcc/testsuite/g++.dg/cpp0x/static_assert13.C
! 51637c7e4d8745c6a05dd4de2ac799bc  gcc/testsuite/g++.dg/cpp0x/static_assert14.C
! ef0f59d78fc1f37751b79acad3704989  gcc/testsuite/g++.dg/cpp0x/static_assert15.C
  7c94507411d8f0fcd4964618204cd929  gcc/testsuite/g++.dg/cpp0x/static_assert2.C
  f24eae3c4070d37d2bbcb3f45a386807  gcc/testsuite/g++.dg/cpp0x/static_assert3.C
  09c6459c722f7fda152e22ef59d4e30c  gcc/testsuite/g++.dg/cpp0x/static_assert4.C
  b6e1adef2dde113019ef4fea0f82078b  gcc/testsuite/g++.dg/cpp0x/static_assert5.C
  be87eb6f527a213d6b73c8a9a9d444f5  gcc/testsuite/g++.dg/cpp0x/static_assert6.C
  10b488e73e6cc35cd83a7ed1625b7f03  gcc/testsuite/g++.dg/cpp0x/static_assert7.C
! d78d11d532c9c101f2e38bd019cd103b  gcc/testsuite/g++.dg/cpp0x/static_assert8.C
  4e2bbb9a59c90b11ad60255050db8632  gcc/testsuite/g++.dg/cpp0x/static_assert9.C
  0d886197bcd772f2eff3bcdb10bdc464  gcc/testsuite/g++.dg/cpp0x/std-layout1.C
! 1cefd35c610a1852c545036b179427ea  gcc/testsuite/g++.dg/cpp0x/std_fext-numeric-literals.C
  7ba1d7418fff81a8372f9fe612fc02a2  gcc/testsuite/g++.dg/cpp0x/std_fno-ext-numeric-literals.C
  c8339a090dcd3866e3bcee3adaa249a3  gcc/testsuite/g++.dg/cpp0x/stddef.C
  271ca147c68e58fb493c98645f047765  gcc/testsuite/g++.dg/cpp0x/stdint.C
*************** c8339a090dcd3866e3bcee3adaa249a3  gcc/te
*** 11615,11634 ****
  e2c30c506c227664a12cede2fc526492  gcc/testsuite/g++.dg/cpp0x/temp_default1.C
  b64243df23e4a2b648985cc8fb7842c6  gcc/testsuite/g++.dg/cpp0x/temp_default2.C
  95e548cc9dd00733a2cce9a2b36b4fe4  gcc/testsuite/g++.dg/cpp0x/temp_default3.C
! 5d890c91dd1b1cce9f4ebf0285e6cc41  gcc/testsuite/g++.dg/cpp0x/temp_default4.C
  266c3dbde2e16a0e728fe8ba86f06698  gcc/testsuite/g++.dg/cpp0x/temp_default5.C
  f130c799f5624997275657362cbc155f  gcc/testsuite/g++.dg/cpp0x/temp_default6.C
  09bf4c9ea4be9a78430f128693f12e1b  gcc/testsuite/g++.dg/cpp0x/temp_default7.C
  3b5dc721d5f8945d257645537b85505e  gcc/testsuite/g++.dg/cpp0x/template_deduction.C
! 1e260a414b39eb610b00bef01f161f8e  gcc/testsuite/g++.dg/cpp0x/trailing1.C
  b3ffcd3fe45fdfaefdabb2511bf9b313  gcc/testsuite/g++.dg/cpp0x/trailing10.C
  876e96d0eed6375333af80e688e23863  gcc/testsuite/g++.dg/cpp0x/trailing11.C
  f178110e8a5769a1841d717a00deee31  gcc/testsuite/g++.dg/cpp0x/trailing12.C
  2781b15beed8210d1827b068b5ac9a01  gcc/testsuite/g++.dg/cpp0x/trailing13.C
  d9a7202320cdc4b0e6d20b3fe24edad1  gcc/testsuite/g++.dg/cpp0x/trailing2.C
  112aba2c9def0d824c652cc9ddf0ff39  gcc/testsuite/g++.dg/cpp0x/trailing3.C
  7dc0503315e6109d214036deeaad3329  gcc/testsuite/g++.dg/cpp0x/trailing4.C
! d76f7f4bbe8f5f32122b4fff6b20d2e1  gcc/testsuite/g++.dg/cpp0x/trailing5.C
  f3e1f3a23dff31653517cc48d206fafb  gcc/testsuite/g++.dg/cpp0x/trailing6.C
  9905affdadeb6d7631a01a291484c542  gcc/testsuite/g++.dg/cpp0x/trailing7.C
  f36e89f1ae30b44f8903af9195861ef2  gcc/testsuite/g++.dg/cpp0x/trailing8.C
--- 12120,12140 ----
  e2c30c506c227664a12cede2fc526492  gcc/testsuite/g++.dg/cpp0x/temp_default1.C
  b64243df23e4a2b648985cc8fb7842c6  gcc/testsuite/g++.dg/cpp0x/temp_default2.C
  95e548cc9dd00733a2cce9a2b36b4fe4  gcc/testsuite/g++.dg/cpp0x/temp_default3.C
! 23f62233537fe4a187da91120a2147ac  gcc/testsuite/g++.dg/cpp0x/temp_default4.C
  266c3dbde2e16a0e728fe8ba86f06698  gcc/testsuite/g++.dg/cpp0x/temp_default5.C
  f130c799f5624997275657362cbc155f  gcc/testsuite/g++.dg/cpp0x/temp_default6.C
  09bf4c9ea4be9a78430f128693f12e1b  gcc/testsuite/g++.dg/cpp0x/temp_default7.C
  3b5dc721d5f8945d257645537b85505e  gcc/testsuite/g++.dg/cpp0x/template_deduction.C
! 488528fbea12aa95fa338d2a320f5fb0  gcc/testsuite/g++.dg/cpp0x/trailing1.C
  b3ffcd3fe45fdfaefdabb2511bf9b313  gcc/testsuite/g++.dg/cpp0x/trailing10.C
  876e96d0eed6375333af80e688e23863  gcc/testsuite/g++.dg/cpp0x/trailing11.C
  f178110e8a5769a1841d717a00deee31  gcc/testsuite/g++.dg/cpp0x/trailing12.C
  2781b15beed8210d1827b068b5ac9a01  gcc/testsuite/g++.dg/cpp0x/trailing13.C
+ 57e80133013d7d8b083771c915cf7ac5  gcc/testsuite/g++.dg/cpp0x/trailing14.C
  d9a7202320cdc4b0e6d20b3fe24edad1  gcc/testsuite/g++.dg/cpp0x/trailing2.C
  112aba2c9def0d824c652cc9ddf0ff39  gcc/testsuite/g++.dg/cpp0x/trailing3.C
  7dc0503315e6109d214036deeaad3329  gcc/testsuite/g++.dg/cpp0x/trailing4.C
! 60241c7e10a77c9d7f52be1882fe0577  gcc/testsuite/g++.dg/cpp0x/trailing5.C
  f3e1f3a23dff31653517cc48d206fafb  gcc/testsuite/g++.dg/cpp0x/trailing6.C
  9905affdadeb6d7631a01a291484c542  gcc/testsuite/g++.dg/cpp0x/trailing7.C
  f36e89f1ae30b44f8903af9195861ef2  gcc/testsuite/g++.dg/cpp0x/trailing8.C
*************** ed0ef4952555cafa9be322b45527bce5  gcc/te
*** 11647,11657 ****
--- 12153,12165 ----
  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
+ 05e4b2d5a62e49076e5083ffe2438790  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
  76afb8e2d3b0d7f6b2be2134335c3519  gcc/testsuite/g++.dg/cpp0x/udlit-implicit-conv-neg.C
  326b4054126136857eb96ed0001c43f7  gcc/testsuite/g++.dg/cpp0x/udlit-inline.C
  6d05f0ca69e3af1248dac02fe71e5c37  gcc/testsuite/g++.dg/cpp0x/udlit-linkage-neg.C
+ 945c01fdb5a4d662e7d47c170e5fd430  gcc/testsuite/g++.dg/cpp0x/udlit-macros.C
  06ed91853a7b8dc3279cd4ec50e37629  gcc/testsuite/g++.dg/cpp0x/udlit-mangle.C
  476da256c26eded84ac301587f183598  gcc/testsuite/g++.dg/cpp0x/udlit-member-neg.C
  965c8fdc0d5cc8cc39876fdca4e84c0a  gcc/testsuite/g++.dg/cpp0x/udlit-namespace-ambiguous.C
*************** c0bba2c546aa3f650d69e738211a7b4e  gcc/te
*** 11679,11685 ****
  572f7345c42c7ed224892d8baec59dbd  gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.h
  8feb854c21c731e45800e46f10b09d5b  gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C
  ff425f0355a54d312eec6e5a8f284e41  gcc/testsuite/g++.dg/cpp0x/udlit-systemheader.C
! 117eb1a5d0b43e757e32af6c01bcf93f  gcc/testsuite/g++.dg/cpp0x/udlit-template.C
  b0d09c427406afa79404ae6e27aa438a  gcc/testsuite/g++.dg/cpp0x/udlit-tmpl-arg-neg.C
  7bd7e4170ca9c92aef40d4a3bd4a35fd  gcc/testsuite/g++.dg/cpp0x/udlit-tmpl-arg-neg2.C
  ebbb3f1b85b16c5be2a25964d8017ab6  gcc/testsuite/g++.dg/cpp0x/udlit-tmpl-arg.C
--- 12187,12193 ----
  572f7345c42c7ed224892d8baec59dbd  gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.h
  8feb854c21c731e45800e46f10b09d5b  gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C
  ff425f0355a54d312eec6e5a8f284e41  gcc/testsuite/g++.dg/cpp0x/udlit-systemheader.C
! 4860e031a9a55de24fce24715763a3aa  gcc/testsuite/g++.dg/cpp0x/udlit-template.C
  b0d09c427406afa79404ae6e27aa438a  gcc/testsuite/g++.dg/cpp0x/udlit-tmpl-arg-neg.C
  7bd7e4170ca9c92aef40d4a3bd4a35fd  gcc/testsuite/g++.dg/cpp0x/udlit-tmpl-arg-neg2.C
  ebbb3f1b85b16c5be2a25964d8017ab6  gcc/testsuite/g++.dg/cpp0x/udlit-tmpl-arg.C
*************** c2935d37441711e00030dd4962af84b5  gcc/te
*** 11702,11709 ****
--- 12210,12221 ----
  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
+ c0422b5906ec9f754211435f9c08f8dd  gcc/testsuite/g++.dg/cpp0x/variadic-crash3.C
+ b6f531b83989cd62725f0bfeb30ad7fe  gcc/testsuite/g++.dg/cpp0x/variadic-crash4.C
+ 10ac54e6a2408dc79bbc43e024c85267  gcc/testsuite/g++.dg/cpp0x/variadic-crash5.C
  838c74313216e798999fa2b5ad006175  gcc/testsuite/g++.dg/cpp0x/variadic-default.C
  a959853b4b06b6225bb508d5c51f1e43  gcc/testsuite/g++.dg/cpp0x/variadic-diag1.C
+ 0003aba91393fc647d2838d6751a02bb  gcc/testsuite/g++.dg/cpp0x/variadic-empty1.C
  10787c5a005ffb94e37ae36cd41a7ab0  gcc/testsuite/g++.dg/cpp0x/variadic-ex1.C
  1df61c6607f98b1dfa80aa2b50f5dc0e  gcc/testsuite/g++.dg/cpp0x/variadic-ex10.C
  331d7c95c5740090d7cb92978b8aaa2b  gcc/testsuite/g++.dg/cpp0x/variadic-ex11.C
*************** efdeb5b65b79fc6ff926b12f711edcb1  gcc/te
*** 11734,11739 ****
--- 12246,12253 ----
  6c67e276177a53a05508b5e974504d12  gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C
  b043a7c3881a23960f0e2b05e750d94c  gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn2.C
  08d2bff6abb7f96f072898cb08f80fbc  gcc/testsuite/g++.dg/cpp0x/variadic-nested1.C
+ 7932640fecd96fc5ff03d9f94a7cf005  gcc/testsuite/g++.dg/cpp0x/variadic-nested2.C
+ e47543bd9482646c5c0d1023519e7eb1  gcc/testsuite/g++.dg/cpp0x/variadic-nested3.C
  7d2b8191fa109fd1786f979fbfa18b4e  gcc/testsuite/g++.dg/cpp0x/variadic-new.C
  5ad1db01bdd9d87f2a8276b08cff8db7  gcc/testsuite/g++.dg/cpp0x/variadic-new2.C
  9965da4f62ae847ce666120789b29c79  gcc/testsuite/g++.dg/cpp0x/variadic-nondeduce1.C
*************** ab8ba157633a4a130772607a4ddbd4ef  gcc/te
*** 11746,11752 ****
  2d72d61260d803144b2ca621612a92f5  gcc/testsuite/g++.dg/cpp0x/variadic-sizeof3.C
  f4a1c23cad6c805e4e4e5c8c08127632  gcc/testsuite/g++.dg/cpp0x/variadic-sizeof4.C
  45160d8cbeadf923db07c829de9daa69  gcc/testsuite/g++.dg/cpp0x/variadic-sizeof4a.C
! e91831146edbcb7d7e5f44f4bc3a7bad  gcc/testsuite/g++.dg/cpp0x/variadic-throw.C
  b8b4ef414480ac8cc610a96093ab666f  gcc/testsuite/g++.dg/cpp0x/variadic-ttp.C
  4c834898f96a0a8ec9b0016b63e4ef06  gcc/testsuite/g++.dg/cpp0x/variadic-ttp2.C
  feabdb5410f13d9af3c546cdd6fa6423  gcc/testsuite/g++.dg/cpp0x/variadic-ttp3.C
--- 12260,12266 ----
  2d72d61260d803144b2ca621612a92f5  gcc/testsuite/g++.dg/cpp0x/variadic-sizeof3.C
  f4a1c23cad6c805e4e4e5c8c08127632  gcc/testsuite/g++.dg/cpp0x/variadic-sizeof4.C
  45160d8cbeadf923db07c829de9daa69  gcc/testsuite/g++.dg/cpp0x/variadic-sizeof4a.C
! e68943ebcbd58e1188ffea289ff32a07  gcc/testsuite/g++.dg/cpp0x/variadic-throw.C
  b8b4ef414480ac8cc610a96093ab666f  gcc/testsuite/g++.dg/cpp0x/variadic-ttp.C
  4c834898f96a0a8ec9b0016b63e4ef06  gcc/testsuite/g++.dg/cpp0x/variadic-ttp2.C
  feabdb5410f13d9af3c546cdd6fa6423  gcc/testsuite/g++.dg/cpp0x/variadic-ttp3.C
*************** edf9e45ed1a17b392fa9f15f8a7cce75  gcc/te
*** 11769,11775 ****
  9d9ee7aaa467f492c2292179fe2acd9a  gcc/testsuite/g++.dg/cpp0x/variadic101.C
  84aabd8e9e1df8f148f869596c49e721  gcc/testsuite/g++.dg/cpp0x/variadic102.C
  869ca8cc860ecb0dad26b26a3590f536  gcc/testsuite/g++.dg/cpp0x/variadic103.C
! fa8cc9c3ebd62862dce97edb027a7769  gcc/testsuite/g++.dg/cpp0x/variadic105.C
  905fe01bdbc2e97450d3f9f1d066487d  gcc/testsuite/g++.dg/cpp0x/variadic106.C
  06886fc75d2f17e53471a5d398aa1830  gcc/testsuite/g++.dg/cpp0x/variadic107.C
  d4c4e703f1f09c25127848d83a5a9328  gcc/testsuite/g++.dg/cpp0x/variadic108.C
--- 12283,12289 ----
  9d9ee7aaa467f492c2292179fe2acd9a  gcc/testsuite/g++.dg/cpp0x/variadic101.C
  84aabd8e9e1df8f148f869596c49e721  gcc/testsuite/g++.dg/cpp0x/variadic102.C
  869ca8cc860ecb0dad26b26a3590f536  gcc/testsuite/g++.dg/cpp0x/variadic103.C
! 5e1796968b51c925f89b358a0deaf3be  gcc/testsuite/g++.dg/cpp0x/variadic105.C
  905fe01bdbc2e97450d3f9f1d066487d  gcc/testsuite/g++.dg/cpp0x/variadic106.C
  06886fc75d2f17e53471a5d398aa1830  gcc/testsuite/g++.dg/cpp0x/variadic107.C
  d4c4e703f1f09c25127848d83a5a9328  gcc/testsuite/g++.dg/cpp0x/variadic108.C
*************** d3da542d29d0002dfd8f000179afbbc0  gcc/te
*** 11779,11785 ****
  d04407d8de2d86d3cd126d23c323da2f  gcc/testsuite/g++.dg/cpp0x/variadic111.C
  290a38244de57f600be52a5f3feed7a6  gcc/testsuite/g++.dg/cpp0x/variadic112.C
  9e521030f6848afc11055264f33c4983  gcc/testsuite/g++.dg/cpp0x/variadic113.C
! 70a3d15bd2eb39b3a2e2344b4d64ff03  gcc/testsuite/g++.dg/cpp0x/variadic114.C
  b872155b4ce3f1a8adbd7af4bcf9666d  gcc/testsuite/g++.dg/cpp0x/variadic115.C
  630d070698ca622a456acbda4935d02a  gcc/testsuite/g++.dg/cpp0x/variadic116.C
  523979f9335472cb7431b7565fc31f64  gcc/testsuite/g++.dg/cpp0x/variadic117.C
--- 12293,12299 ----
  d04407d8de2d86d3cd126d23c323da2f  gcc/testsuite/g++.dg/cpp0x/variadic111.C
  290a38244de57f600be52a5f3feed7a6  gcc/testsuite/g++.dg/cpp0x/variadic112.C
  9e521030f6848afc11055264f33c4983  gcc/testsuite/g++.dg/cpp0x/variadic113.C
! 40198dcf4e8c1abacf4582112814a72f  gcc/testsuite/g++.dg/cpp0x/variadic114.C
  b872155b4ce3f1a8adbd7af4bcf9666d  gcc/testsuite/g++.dg/cpp0x/variadic115.C
  630d070698ca622a456acbda4935d02a  gcc/testsuite/g++.dg/cpp0x/variadic116.C
  523979f9335472cb7431b7565fc31f64  gcc/testsuite/g++.dg/cpp0x/variadic117.C
*************** dde7a4f94fd2f85ccf0ba3cc25781017  gcc/te
*** 11838,11844 ****
--- 12352,12364 ----
  d3fd316df69021643c9c08dc4c093e40  gcc/testsuite/g++.dg/cpp0x/variadic168.C
  a28c1ab6cd8292afea0a610ae4fdedcf  gcc/testsuite/g++.dg/cpp0x/variadic169.C
  3bff3422f4558e688cb85c201d29da39  gcc/testsuite/g++.dg/cpp0x/variadic17.C
+ 84b1488344a831e41eed0626d0f5ab8d  gcc/testsuite/g++.dg/cpp0x/variadic170.C
  c597501b32c00762874bad3052d9f18d  gcc/testsuite/g++.dg/cpp0x/variadic171.C
+ b6c10f547ba95724b8657987c0cf6e0e  gcc/testsuite/g++.dg/cpp0x/variadic172.C
+ 2ae336c202a1761a5a29701c719312ee  gcc/testsuite/g++.dg/cpp0x/variadic173.C
+ 4542cc2cf2067f1bc159847df2d9b1dc  gcc/testsuite/g++.dg/cpp0x/variadic174.C
+ 8326be80d48cd2c98e36a5c4855c5efa  gcc/testsuite/g++.dg/cpp0x/variadic175.C
+ 02221935a5f98b35845a02fb90c8168e  gcc/testsuite/g++.dg/cpp0x/variadic176.C
  716318ff1db2bdd640b1c6835c0659e3  gcc/testsuite/g++.dg/cpp0x/variadic18.C
  d07d2dff70e4403857f709c6f88dd0d9  gcc/testsuite/g++.dg/cpp0x/variadic19.C
  2fa72711afa172c723554cf582b008c8  gcc/testsuite/g++.dg/cpp0x/variadic2.C
*************** b52fb58305cb931378dd597785b6d811  gcc/te
*** 11882,11888 ****
  d8b97750712e10c76c87f95f2605c4e2  gcc/testsuite/g++.dg/cpp0x/variadic54.C
  2308a07a86e678b41b5d3b36ee013a12  gcc/testsuite/g++.dg/cpp0x/variadic55.C
  9bc7a5eebc44711f15bece140355fae7  gcc/testsuite/g++.dg/cpp0x/variadic56.C
! 633b1508d94129309321ab40c30919d3  gcc/testsuite/g++.dg/cpp0x/variadic57.C
  89f59283c2637d5a81bd41017970c117  gcc/testsuite/g++.dg/cpp0x/variadic58.C
  e32611a8be61f49167659877c30e7c1e  gcc/testsuite/g++.dg/cpp0x/variadic59.C
  9323e65b6948cfbe0e54fdeeb9c1e134  gcc/testsuite/g++.dg/cpp0x/variadic6.C
--- 12402,12408 ----
  d8b97750712e10c76c87f95f2605c4e2  gcc/testsuite/g++.dg/cpp0x/variadic54.C
  2308a07a86e678b41b5d3b36ee013a12  gcc/testsuite/g++.dg/cpp0x/variadic55.C
  9bc7a5eebc44711f15bece140355fae7  gcc/testsuite/g++.dg/cpp0x/variadic56.C
! f78241dcedacebada5242f73958694ac  gcc/testsuite/g++.dg/cpp0x/variadic57.C
  89f59283c2637d5a81bd41017970c117  gcc/testsuite/g++.dg/cpp0x/variadic58.C
  e32611a8be61f49167659877c30e7c1e  gcc/testsuite/g++.dg/cpp0x/variadic59.C
  9323e65b6948cfbe0e54fdeeb9c1e134  gcc/testsuite/g++.dg/cpp0x/variadic6.C
*************** fc2fc2c87d783c7e4469a5ddeec5b902  gcc/te
*** 11891,11898 ****
  71d58bebb24f823b96a6f96fcdba12d7  gcc/testsuite/g++.dg/cpp0x/variadic62.C
  97a9704141740712fd031adf9ea4a9e2  gcc/testsuite/g++.dg/cpp0x/variadic63.C
  3b1d4a7dc69b3a2a4681d7d538330e00  gcc/testsuite/g++.dg/cpp0x/variadic64.C
! 1fbe39ae1da7fe47a33025b7cc390e55  gcc/testsuite/g++.dg/cpp0x/variadic65.C
! 7722304fe5105a9234fdc8e9af1c29c4  gcc/testsuite/g++.dg/cpp0x/variadic66.C
  075eca9dd35fe91d9cca94cbab0d92a3  gcc/testsuite/g++.dg/cpp0x/variadic67.C
  cbf0606e23f91aeddb437ce331a056d4  gcc/testsuite/g++.dg/cpp0x/variadic68.C
  080fbb2e4a74f8bd15d05faa165b16f1  gcc/testsuite/g++.dg/cpp0x/variadic69.C
--- 12411,12418 ----
  71d58bebb24f823b96a6f96fcdba12d7  gcc/testsuite/g++.dg/cpp0x/variadic62.C
  97a9704141740712fd031adf9ea4a9e2  gcc/testsuite/g++.dg/cpp0x/variadic63.C
  3b1d4a7dc69b3a2a4681d7d538330e00  gcc/testsuite/g++.dg/cpp0x/variadic64.C
! 3f36b4498f211911133e51837306baa3  gcc/testsuite/g++.dg/cpp0x/variadic65.C
! 2aa95b3ee6a1ddf1be49bdaa2b7fd59e  gcc/testsuite/g++.dg/cpp0x/variadic66.C
  075eca9dd35fe91d9cca94cbab0d92a3  gcc/testsuite/g++.dg/cpp0x/variadic67.C
  cbf0606e23f91aeddb437ce331a056d4  gcc/testsuite/g++.dg/cpp0x/variadic68.C
  080fbb2e4a74f8bd15d05faa165b16f1  gcc/testsuite/g++.dg/cpp0x/variadic69.C
*************** b57d433ff6861deeea42dc39e9d48cc2  gcc/te
*** 11900,11906 ****
  5213174a9ca6c4c9e4d70550c9612eb3  gcc/testsuite/g++.dg/cpp0x/variadic70.C
  df1724948cff2ef496b805fb76373296  gcc/testsuite/g++.dg/cpp0x/variadic71.C
  00da5cc622c7da92fca6cad428b91af7  gcc/testsuite/g++.dg/cpp0x/variadic72.C
! 7e5f477865d86ec9d22c3110701c4ef7  gcc/testsuite/g++.dg/cpp0x/variadic73.C
  5d3a78a3816a898e36c9bb28ef13807a  gcc/testsuite/g++.dg/cpp0x/variadic74.C
  e4f8dfd0aa613faabae60d8f99e8e498  gcc/testsuite/g++.dg/cpp0x/variadic75.C
  9ae68224072da4a2723e2c666742afdf  gcc/testsuite/g++.dg/cpp0x/variadic76.C
--- 12420,12426 ----
  5213174a9ca6c4c9e4d70550c9612eb3  gcc/testsuite/g++.dg/cpp0x/variadic70.C
  df1724948cff2ef496b805fb76373296  gcc/testsuite/g++.dg/cpp0x/variadic71.C
  00da5cc622c7da92fca6cad428b91af7  gcc/testsuite/g++.dg/cpp0x/variadic72.C
! c709704d530daa80748259ccf3033a31  gcc/testsuite/g++.dg/cpp0x/variadic73.C
  5d3a78a3816a898e36c9bb28ef13807a  gcc/testsuite/g++.dg/cpp0x/variadic74.C
  e4f8dfd0aa613faabae60d8f99e8e498  gcc/testsuite/g++.dg/cpp0x/variadic75.C
  9ae68224072da4a2723e2c666742afdf  gcc/testsuite/g++.dg/cpp0x/variadic76.C
*************** bec976764c0429757ab4b269a15af3d3  gcc/te
*** 11928,11935 ****
  09fa738be8b9509b60cfab30f03340c3  gcc/testsuite/g++.dg/cpp0x/variadic94.C
  6e58380176a6436d1efd8ba69f04b70f  gcc/testsuite/g++.dg/cpp0x/variadic95.C
  c102f0d85fd6376a485fdc9c34b693bb  gcc/testsuite/g++.dg/cpp0x/variadic96.C
! 499f5fa9105857e2d0b1ac67e1a15abf  gcc/testsuite/g++.dg/cpp0x/variadic97.C
! 961385cfacfb0d84fbeb98cc6fe5d5ca  gcc/testsuite/g++.dg/cpp0x/variadic98.C
  59afc7eeb0a82f753a0f0856b9198ba8  gcc/testsuite/g++.dg/cpp0x/variadic99.C
  e0bac3d7aa1877d61d0060b5ab51070a  gcc/testsuite/g++.dg/cpp0x/vt-33964.C
  969a83a6dfa95bb86bce932ed8d47004  gcc/testsuite/g++.dg/cpp0x/vt-34050.C
--- 12448,12455 ----
  09fa738be8b9509b60cfab30f03340c3  gcc/testsuite/g++.dg/cpp0x/variadic94.C
  6e58380176a6436d1efd8ba69f04b70f  gcc/testsuite/g++.dg/cpp0x/variadic95.C
  c102f0d85fd6376a485fdc9c34b693bb  gcc/testsuite/g++.dg/cpp0x/variadic96.C
! ea442e97957726fe8c0d1140c2aa795e  gcc/testsuite/g++.dg/cpp0x/variadic97.C
! a744c22a317467ee400758a7531d00e1  gcc/testsuite/g++.dg/cpp0x/variadic98.C
  59afc7eeb0a82f753a0f0856b9198ba8  gcc/testsuite/g++.dg/cpp0x/variadic99.C
  e0bac3d7aa1877d61d0060b5ab51070a  gcc/testsuite/g++.dg/cpp0x/vt-33964.C
  969a83a6dfa95bb86bce932ed8d47004  gcc/testsuite/g++.dg/cpp0x/vt-34050.C
*************** fb2e417a364945cb8149b9526292009b  gcc/te
*** 11987,12000 ****
  7dee7c173ea24d639c1b37774d37d9b4  gcc/testsuite/g++.dg/cpp1y/auto-dtor1.C
  dc5451a9ff24848e54d61818d52a6d94  gcc/testsuite/g++.dg/cpp1y/auto-fn1.C
  7f87375ea759512b1c52f02744bd144b  gcc/testsuite/g++.dg/cpp1y/auto-fn10.C
! d9e204b686e935e2ba4d30c1beb43a8f  gcc/testsuite/g++.dg/cpp1y/auto-fn11.C
  6950bbb2c8ef00d1a36cb08f2d608d53  gcc/testsuite/g++.dg/cpp1y/auto-fn12.C
  7b669827bea28277027a523e33b45f0e  gcc/testsuite/g++.dg/cpp1y/auto-fn13.C
  e44b3597936dd6f357553246a242335d  gcc/testsuite/g++.dg/cpp1y/auto-fn14.C
! c96afb2d4b433301082146842acbbc39  gcc/testsuite/g++.dg/cpp1y/auto-fn15.C
  1c94ff8201633772ca24c7b73d52889a  gcc/testsuite/g++.dg/cpp1y/auto-fn16.C
  29063a9d63b2cd6b35f7dc888fef5b9c  gcc/testsuite/g++.dg/cpp1y/auto-fn17.C
! b168208fc9fda97713a46df6dd4d88f1  gcc/testsuite/g++.dg/cpp1y/auto-fn18.C
  81403dc5ce41958e527caff9546f8513  gcc/testsuite/g++.dg/cpp1y/auto-fn19.C
  88ef9523ceb7f9fd808e09124fb3bffc  gcc/testsuite/g++.dg/cpp1y/auto-fn2.C
  bbe5db57b5ad80f6dba45ded13dc4c7a  gcc/testsuite/g++.dg/cpp1y/auto-fn20.C
--- 12507,12520 ----
  7dee7c173ea24d639c1b37774d37d9b4  gcc/testsuite/g++.dg/cpp1y/auto-dtor1.C
  dc5451a9ff24848e54d61818d52a6d94  gcc/testsuite/g++.dg/cpp1y/auto-fn1.C
  7f87375ea759512b1c52f02744bd144b  gcc/testsuite/g++.dg/cpp1y/auto-fn10.C
! d9026dcf90b4d54bee061436620287a9  gcc/testsuite/g++.dg/cpp1y/auto-fn11.C
  6950bbb2c8ef00d1a36cb08f2d608d53  gcc/testsuite/g++.dg/cpp1y/auto-fn12.C
  7b669827bea28277027a523e33b45f0e  gcc/testsuite/g++.dg/cpp1y/auto-fn13.C
  e44b3597936dd6f357553246a242335d  gcc/testsuite/g++.dg/cpp1y/auto-fn14.C
! 12bb503f3f6cd0861f245adc2f63e35e  gcc/testsuite/g++.dg/cpp1y/auto-fn15.C
  1c94ff8201633772ca24c7b73d52889a  gcc/testsuite/g++.dg/cpp1y/auto-fn16.C
  29063a9d63b2cd6b35f7dc888fef5b9c  gcc/testsuite/g++.dg/cpp1y/auto-fn17.C
! 3259e76ca9f468837b84cab818b36906  gcc/testsuite/g++.dg/cpp1y/auto-fn18.C
  81403dc5ce41958e527caff9546f8513  gcc/testsuite/g++.dg/cpp1y/auto-fn19.C
  88ef9523ceb7f9fd808e09124fb3bffc  gcc/testsuite/g++.dg/cpp1y/auto-fn2.C
  bbe5db57b5ad80f6dba45ded13dc4c7a  gcc/testsuite/g++.dg/cpp1y/auto-fn20.C
*************** bbe5db57b5ad80f6dba45ded13dc4c7a  gcc/te
*** 12006,12012 ****
  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
! c62290c3433fd946afe248d80f2f0e63  gcc/testsuite/g++.dg/cpp1y/auto-fn29.C
  c4e86a95bc6b38f69a4a30b1b1cf1e4e  gcc/testsuite/g++.dg/cpp1y/auto-fn3.C
  51f8ba9d1f0f20256658a6298e611261  gcc/testsuite/g++.dg/cpp1y/auto-fn30.C
  2166d3092f2a511f64d91ad91795c1ac  gcc/testsuite/g++.dg/cpp1y/auto-fn31.C
--- 12526,12532 ----
  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
  51f8ba9d1f0f20256658a6298e611261  gcc/testsuite/g++.dg/cpp1y/auto-fn30.C
  2166d3092f2a511f64d91ad91795c1ac  gcc/testsuite/g++.dg/cpp1y/auto-fn31.C
*************** f475a3e97ef5d08fb361f8070d183611  gcc/te
*** 12015,12041 ****
  de05027ddc900988928c8d04e3e6ac7d  gcc/testsuite/g++.dg/cpp1y/auto-fn34.C
  0e16ca7061512c9a1e0bf4dcd3bc93e8  gcc/testsuite/g++.dg/cpp1y/auto-fn35.C
  be0d5f10eb69b210aef36d86a139ae03  gcc/testsuite/g++.dg/cpp1y/auto-fn36.C
  d04c5adeadd690fc018c565b461f431a  gcc/testsuite/g++.dg/cpp1y/auto-fn39.C
  a87641c12e6bf65af1e8d592973cba76  gcc/testsuite/g++.dg/cpp1y/auto-fn4.C
  eaab8c47716923537d6580ede6fbe3ae  gcc/testsuite/g++.dg/cpp1y/auto-fn5.C
  3861eed28323480e4913eea3d9c0ec00  gcc/testsuite/g++.dg/cpp1y/auto-fn6.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
  252d5e23574d814692eda27da0d3490e  gcc/testsuite/g++.dg/cpp1y/auto-mangle1.C
  74303a8348f1ee9cdd9f827d5ae03cee  gcc/testsuite/g++.dg/cpp1y/auto-neg1.C
  2fff80acd4abc211f58b325601c3ee03  gcc/testsuite/g++.dg/cpp1y/builtin_location.C
  f3e3d98fcbe616df26f26eb779c66c1f  gcc/testsuite/g++.dg/cpp1y/complex_literals.h
  2d72668eefa5659edd32ef8dabc1c48e  gcc/testsuite/g++.dg/cpp1y/constexpr-50060.C
  4549cd7ef9ad61651767a36edd2f8190  gcc/testsuite/g++.dg/cpp1y/constexpr-71537.C
  ff3e876f73b9e207bc74cebb8f681b24  gcc/testsuite/g++.dg/cpp1y/constexpr-77467.C
  3703fe85dbf973a8e792adfb4de7f0fc  gcc/testsuite/g++.dg/cpp1y/constexpr-77553.C
  6a70d295fb8547b7bab12d8cc05b1df4  gcc/testsuite/g++.dg/cpp1y/constexpr-79379.C
  cfc19422b140639fdc2dc2bf7ca295b6  gcc/testsuite/g++.dg/cpp1y/constexpr-79639.C
! a704b3ce8270e6f8437ab87445750058  gcc/testsuite/g++.dg/cpp1y/constexpr-79655.C
  87e6acf3f9570693090bc9744174253b  gcc/testsuite/g++.dg/cpp1y/constexpr-79681-1.C
  c31b3bbd5d5198b87b168be79f7471eb  gcc/testsuite/g++.dg/cpp1y/constexpr-79681-2.C
  e4f44ba83e70dc31ae39e2b7a5451b57  gcc/testsuite/g++.dg/cpp1y/constexpr-83116.C
  c410a0259982426fcc8bf751139fbcd3  gcc/testsuite/g++.dg/cpp1y/constexpr-arith-overflow.C
  8ca7fb9e44e526f77542eaa59593c544  gcc/testsuite/g++.dg/cpp1y/constexpr-array1.C
  10c765e5671de39fd3d751b2e3a5408b  gcc/testsuite/g++.dg/cpp1y/constexpr-array2.C
--- 12535,12590 ----
  de05027ddc900988928c8d04e3e6ac7d  gcc/testsuite/g++.dg/cpp1y/auto-fn34.C
  0e16ca7061512c9a1e0bf4dcd3bc93e8  gcc/testsuite/g++.dg/cpp1y/auto-fn35.C
  be0d5f10eb69b210aef36d86a139ae03  gcc/testsuite/g++.dg/cpp1y/auto-fn36.C
+ a931c023c7c6abf899bf6106d1e5d95d  gcc/testsuite/g++.dg/cpp1y/auto-fn37.C
+ 22714476faed30cd3a8124b97eb7af29  gcc/testsuite/g++.dg/cpp1y/auto-fn38.C
  d04c5adeadd690fc018c565b461f431a  gcc/testsuite/g++.dg/cpp1y/auto-fn39.C
  a87641c12e6bf65af1e8d592973cba76  gcc/testsuite/g++.dg/cpp1y/auto-fn4.C
+ e301f1e1935905abefe3b24b50252da4  gcc/testsuite/g++.dg/cpp1y/auto-fn40.C
+ 01fd8c37a461e70dd046d084a28295c1  gcc/testsuite/g++.dg/cpp1y/auto-fn41.C
+ bfd95cceb44d8c47db7bf1a36a86322d  gcc/testsuite/g++.dg/cpp1y/auto-fn42.C
+ 820221d75273b01d35f807e36bc12523  gcc/testsuite/g++.dg/cpp1y/auto-fn43.C
+ 9eb7dfe1e7ebd445e055643332f3d209  gcc/testsuite/g++.dg/cpp1y/auto-fn44.C
+ 9a22a1737cf17a0ff1bc955329844867  gcc/testsuite/g++.dg/cpp1y/auto-fn45.C
+ 1559f78df9382ec0e0b1c2f4e7bfbf7d  gcc/testsuite/g++.dg/cpp1y/auto-fn46.C
+ dd80de1b70fc9fb6f96337aa98d878ed  gcc/testsuite/g++.dg/cpp1y/auto-fn47.C
+ 9c209f027427ac6a65af30b753bfd4b7  gcc/testsuite/g++.dg/cpp1y/auto-fn48.C
+ 4e4a5ed56f7431474c3769bf5f8ba8c3  gcc/testsuite/g++.dg/cpp1y/auto-fn49.C
  eaab8c47716923537d6580ede6fbe3ae  gcc/testsuite/g++.dg/cpp1y/auto-fn5.C
+ d8b3f03cf98450675631471e52432e53  gcc/testsuite/g++.dg/cpp1y/auto-fn50.C
+ da8b691c486f119146bd69dc1d417757  gcc/testsuite/g++.dg/cpp1y/auto-fn51.C
  3861eed28323480e4913eea3d9c0ec00  gcc/testsuite/g++.dg/cpp1y/auto-fn6.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
  252d5e23574d814692eda27da0d3490e  gcc/testsuite/g++.dg/cpp1y/auto-mangle1.C
  74303a8348f1ee9cdd9f827d5ae03cee  gcc/testsuite/g++.dg/cpp1y/auto-neg1.C
+ 637930aa51b16c9a514c1e2843645f75  gcc/testsuite/g++.dg/cpp1y/builtin_FUNCTION.C
  2fff80acd4abc211f58b325601c3ee03  gcc/testsuite/g++.dg/cpp1y/builtin_location.C
  f3e3d98fcbe616df26f26eb779c66c1f  gcc/testsuite/g++.dg/cpp1y/complex_literals.h
+ 22aa7b94d36d9e158c5c52dd546a0e7c  gcc/testsuite/g++.dg/cpp1y/complex_literals1.C
+ 99847692cf2ccd072e419199625ee070  gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C
+ 5f47973cdaddb1d27f6ea767e7275723  gcc/testsuite/g++.dg/cpp1y/complex_literals2.C
+ a1995c633dded5a3445bad4fcc3b55cf  gcc/testsuite/g++.dg/cpp1y/complex_literals2a.C
  2d72668eefa5659edd32ef8dabc1c48e  gcc/testsuite/g++.dg/cpp1y/constexpr-50060.C
+ d3ca7557e59bd6b82fae38b637088145  gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C
+ 9ecc58eab147adafbf3780c51ed706fc  gcc/testsuite/g++.dg/cpp1y/constexpr-70265-1.C
+ b67f208a0f5bbefd4fb98abbbec1d09e  gcc/testsuite/g++.dg/cpp1y/constexpr-70265-2.C
  4549cd7ef9ad61651767a36edd2f8190  gcc/testsuite/g++.dg/cpp1y/constexpr-71537.C
  ff3e876f73b9e207bc74cebb8f681b24  gcc/testsuite/g++.dg/cpp1y/constexpr-77467.C
  3703fe85dbf973a8e792adfb4de7f0fc  gcc/testsuite/g++.dg/cpp1y/constexpr-77553.C
  6a70d295fb8547b7bab12d8cc05b1df4  gcc/testsuite/g++.dg/cpp1y/constexpr-79379.C
  cfc19422b140639fdc2dc2bf7ca295b6  gcc/testsuite/g++.dg/cpp1y/constexpr-79639.C
! 34973e61aafaf8ad8d1c9dc1d6468aa3  gcc/testsuite/g++.dg/cpp1y/constexpr-79655.C
  87e6acf3f9570693090bc9744174253b  gcc/testsuite/g++.dg/cpp1y/constexpr-79681-1.C
  c31b3bbd5d5198b87b168be79f7471eb  gcc/testsuite/g++.dg/cpp1y/constexpr-79681-2.C
+ 0e229f72c4a6ba1d2879bc40d887b2ad  gcc/testsuite/g++.dg/cpp1y/constexpr-80739.C
+ 22f0a06df1af77be3f2c6efb46b840d4  gcc/testsuite/g++.dg/cpp1y/constexpr-82218.C
  e4f44ba83e70dc31ae39e2b7a5451b57  gcc/testsuite/g++.dg/cpp1y/constexpr-83116.C
+ 0a22dbeb49c9df6cba648ed043c987fe  gcc/testsuite/g++.dg/cpp1y/constexpr-83921-1.C
+ 89c250c04581764fb43ea62b9fbb5271  gcc/testsuite/g++.dg/cpp1y/constexpr-83921-2.C
+ 9f43448c1339971a0f4defedbe40a7bc  gcc/testsuite/g++.dg/cpp1y/constexpr-83921-3.C
+ f6c53aebab36b7a80efb88c7c97a2b51  gcc/testsuite/g++.dg/cpp1y/constexpr-84192.C
+ b9e6a245bf8b000527fce6b59f4f31f8  gcc/testsuite/g++.dg/cpp1y/constexpr-84808.C
  c410a0259982426fcc8bf751139fbcd3  gcc/testsuite/g++.dg/cpp1y/constexpr-arith-overflow.C
  8ca7fb9e44e526f77542eaa59593c544  gcc/testsuite/g++.dg/cpp1y/constexpr-array1.C
  10c765e5671de39fd3d751b2e3a5408b  gcc/testsuite/g++.dg/cpp1y/constexpr-array2.C
*************** e6815ab618d6af99025ddeacf6ab0545  gcc/te
*** 12052,12061 ****
  9b6ce1c2202c1ce9ea82fda5f060499b  gcc/testsuite/g++.dg/cpp1y/constexpr-empty1.C
  9e871814c326197a59b4ae1738313788  gcc/testsuite/g++.dg/cpp1y/constexpr-empty2.C
  d4fc72d059e047077b1d6033d4c13026  gcc/testsuite/g++.dg/cpp1y/constexpr-empty3.C
  995873768089d805df939c03d2be8b1c  gcc/testsuite/g++.dg/cpp1y/constexpr-hana1.C
  f4f6c3d1cdaf2aa67bfa2b8c851853d5  gcc/testsuite/g++.dg/cpp1y/constexpr-incr1.C
  3e9dd485a2a6d99132c92a6d04b96ee9  gcc/testsuite/g++.dg/cpp1y/constexpr-initlist1.C
! a6428fa228040ab555ce7219eff76ffa  gcc/testsuite/g++.dg/cpp1y/constexpr-instantiate.C
  14b35cb8a87b121f413f22b600d19592  gcc/testsuite/g++.dg/cpp1y/constexpr-local-compound1.C
  3a3d744ee7d9f610351075218538740d  gcc/testsuite/g++.dg/cpp1y/constexpr-local1.C
  b9802763e15bc5d3383abb6baf492f9a  gcc/testsuite/g++.dg/cpp1y/constexpr-local2.C
--- 12601,12611 ----
  9b6ce1c2202c1ce9ea82fda5f060499b  gcc/testsuite/g++.dg/cpp1y/constexpr-empty1.C
  9e871814c326197a59b4ae1738313788  gcc/testsuite/g++.dg/cpp1y/constexpr-empty2.C
  d4fc72d059e047077b1d6033d4c13026  gcc/testsuite/g++.dg/cpp1y/constexpr-empty3.C
+ f1a863bb06163b628459fbc6a355ec3f  gcc/testsuite/g++.dg/cpp1y/constexpr-empty4.C
  995873768089d805df939c03d2be8b1c  gcc/testsuite/g++.dg/cpp1y/constexpr-hana1.C
  f4f6c3d1cdaf2aa67bfa2b8c851853d5  gcc/testsuite/g++.dg/cpp1y/constexpr-incr1.C
  3e9dd485a2a6d99132c92a6d04b96ee9  gcc/testsuite/g++.dg/cpp1y/constexpr-initlist1.C
! ab56709d31a56066e2a96779bd194779  gcc/testsuite/g++.dg/cpp1y/constexpr-instantiate.C
  14b35cb8a87b121f413f22b600d19592  gcc/testsuite/g++.dg/cpp1y/constexpr-local-compound1.C
  3a3d744ee7d9f610351075218538740d  gcc/testsuite/g++.dg/cpp1y/constexpr-local1.C
  b9802763e15bc5d3383abb6baf492f9a  gcc/testsuite/g++.dg/cpp1y/constexpr-local2.C
*************** b7ba36048381eed51408ea95cc97cab5  gcc/te
*** 12067,12084 ****
  492f6cac7562b468e917e717a4a042ae  gcc/testsuite/g++.dg/cpp1y/constexpr-loop5.C
  521dc899a08f28cc384d6ecb466fe37e  gcc/testsuite/g++.dg/cpp1y/constexpr-loop6.C
  f242782c248016f2816bbc2f83f9233a  gcc/testsuite/g++.dg/cpp1y/constexpr-neg1.C
! 292e422dfd60b2ba1e74366f422cf6c7  gcc/testsuite/g++.dg/cpp1y/constexpr-new.C
  3ebd2f678927c3d6b60ebc749680a96e  gcc/testsuite/g++.dg/cpp1y/constexpr-recursion1.C
  777febedb9b77383ec600e70a1668eb9  gcc/testsuite/g++.dg/cpp1y/constexpr-ref1.C
  6688f378d2b0f24307bbda6bfb45a808  gcc/testsuite/g++.dg/cpp1y/constexpr-return1.C
! 39cd321ce6d1b65ed302f5028ba89116  gcc/testsuite/g++.dg/cpp1y/constexpr-return2.C
  2b3be651759737646c7a0b061b9bb029  gcc/testsuite/g++.dg/cpp1y/constexpr-sfinae.C
! 336b211f871fa4c2d4850e373cb51e3e  gcc/testsuite/g++.dg/cpp1y/constexpr-shift1.C
  f705c3231fd3394bbd8e1f6d3c18f870  gcc/testsuite/g++.dg/cpp1y/constexpr-switch1.C
  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
! 22b61366f4596d14c34e375513b50c2c  gcc/testsuite/g++.dg/cpp1y/constexpr-throw.C
  0338099a8b7545e92dbe09d98b8c671d  gcc/testsuite/g++.dg/cpp1y/constexpr-type-def-compound1.C
  f869695e4081f7115b13ec5e36fddb37  gcc/testsuite/g++.dg/cpp1y/constexpr-type-def1.C
  165186eea0291986cb116c6366c5d09c  gcc/testsuite/g++.dg/cpp1y/constexpr-union1.C
--- 12617,12635 ----
  492f6cac7562b468e917e717a4a042ae  gcc/testsuite/g++.dg/cpp1y/constexpr-loop5.C
  521dc899a08f28cc384d6ecb466fe37e  gcc/testsuite/g++.dg/cpp1y/constexpr-loop6.C
  f242782c248016f2816bbc2f83f9233a  gcc/testsuite/g++.dg/cpp1y/constexpr-neg1.C
! d2082ebd393b33dabcc0dc4c7f46db2c  gcc/testsuite/g++.dg/cpp1y/constexpr-new.C
  3ebd2f678927c3d6b60ebc749680a96e  gcc/testsuite/g++.dg/cpp1y/constexpr-recursion1.C
  777febedb9b77383ec600e70a1668eb9  gcc/testsuite/g++.dg/cpp1y/constexpr-ref1.C
  6688f378d2b0f24307bbda6bfb45a808  gcc/testsuite/g++.dg/cpp1y/constexpr-return1.C
! 6e50f37c1a0a8d3872910b9dac070f5d  gcc/testsuite/g++.dg/cpp1y/constexpr-return2.C
! 0158e9ac9fca9d7aa70811273fb72c2c  gcc/testsuite/g++.dg/cpp1y/constexpr-return3.C
  2b3be651759737646c7a0b061b9bb029  gcc/testsuite/g++.dg/cpp1y/constexpr-sfinae.C
! 8da09b0f23d52a1a1f622c7910168332  gcc/testsuite/g++.dg/cpp1y/constexpr-shift1.C
  f705c3231fd3394bbd8e1f6d3c18f870  gcc/testsuite/g++.dg/cpp1y/constexpr-switch1.C
  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
  0338099a8b7545e92dbe09d98b8c671d  gcc/testsuite/g++.dg/cpp1y/constexpr-type-def-compound1.C
  f869695e4081f7115b13ec5e36fddb37  gcc/testsuite/g++.dg/cpp1y/constexpr-type-def1.C
  165186eea0291986cb116c6366c5d09c  gcc/testsuite/g++.dg/cpp1y/constexpr-union1.C
*************** f9177d17a8e7ca1cf52d2e3f3738490b  gcc/te
*** 12088,12094 ****
  382c88b3557d1313cf8ea52c3a5c5e11  gcc/testsuite/g++.dg/cpp1y/cplusplus.C
  f8cacc42b6d0ee02c4ec28b4871b946c  gcc/testsuite/g++.dg/cpp1y/cplusplus_1y.C
  516d0cef75f4267f67d755a810807bc2  gcc/testsuite/g++.dg/cpp1y/digit-sep-cxx11-neg.C
! 695cc86426b24103c2a80eda00cf2189  gcc/testsuite/g++.dg/cpp1y/digit-sep-neg.C
  2ccf049767734b973a90dea30576d8a8  gcc/testsuite/g++.dg/cpp1y/digit-sep.C
  f76edece5ff5aa3ce9cb5508f587b65c  gcc/testsuite/g++.dg/cpp1y/feat-cxx11-neg.C
  144ddec296f95158abf3660366239e78  gcc/testsuite/g++.dg/cpp1y/feat-cxx11.C
--- 12639,12645 ----
  382c88b3557d1313cf8ea52c3a5c5e11  gcc/testsuite/g++.dg/cpp1y/cplusplus.C
  f8cacc42b6d0ee02c4ec28b4871b946c  gcc/testsuite/g++.dg/cpp1y/cplusplus_1y.C
  516d0cef75f4267f67d755a810807bc2  gcc/testsuite/g++.dg/cpp1y/digit-sep-cxx11-neg.C
! 72e5ba540e8106a24b1c940578366f90  gcc/testsuite/g++.dg/cpp1y/digit-sep-neg.C
  2ccf049767734b973a90dea30576d8a8  gcc/testsuite/g++.dg/cpp1y/digit-sep.C
  f76edece5ff5aa3ce9cb5508f587b65c  gcc/testsuite/g++.dg/cpp1y/feat-cxx11-neg.C
  144ddec296f95158abf3660366239e78  gcc/testsuite/g++.dg/cpp1y/feat-cxx11.C
*************** a67b06ec09d1fe75fc3dfff582b19cac  gcc/te
*** 12100,12146 ****
  018149928d964ce66689bf4960400c07  gcc/testsuite/g++.dg/cpp1y/feat-sized-dealloc-neg.C
  b7edad357bb503949f49802295729019  gcc/testsuite/g++.dg/cpp1y/feat-sized-dealloc.C
  fc5875e8af08d0f9488344e80bf6f764  gcc/testsuite/g++.dg/cpp1y/feat-vla.C
- f4be44f045dc9cb6f8b7acd5e3193c1d  gcc/testsuite/g++.dg/cpp1y/fn-generic-member-ool.C
  019035e3ac24c4aef8fcd1f1af1590ae  gcc/testsuite/g++.dg/cpp1y/func_constexpr.C
  2cf8b2b7a7dc5ba828766c37a54e2315  gcc/testsuite/g++.dg/cpp1y/lambda-conv1.C
  4734b77212418e40ce4f8965c6017a39  gcc/testsuite/g++.dg/cpp1y/lambda-conv2.C
  5f112fcc57ff57c8e803342bde4e9c25  gcc/testsuite/g++.dg/cpp1y/lambda-deduce-mult-neg.C
  a5fcad1d0708a6218c6fe69c1871df02  gcc/testsuite/g++.dg/cpp1y/lambda-deduce-mult.C
! 583b55f04d55c9ec0ee10c8c39f1d628  gcc/testsuite/g++.dg/cpp1y/lambda-generic-77914.C
  87f3d5397981cf431912aae6490ea63a  gcc/testsuite/g++.dg/cpp1y/lambda-generic-auto1.C
  18a2431f49a5d003b8c4af0ee1ee26fb  gcc/testsuite/g++.dg/cpp1y/lambda-generic-cfun.C
  043e19917f87f2b2acd754fc6d7db469  gcc/testsuite/g++.dg/cpp1y/lambda-generic-const1.C
  565bd59fb2dca8cbcfbfa5b7e1e94368  gcc/testsuite/g++.dg/cpp1y/lambda-generic-const2.C
  c1704c3068b9b801f6fca80634fa3d1c  gcc/testsuite/g++.dg/cpp1y/lambda-generic-const3.C
! 8b8abbef301e37ea9718834ddb4c32ec  gcc/testsuite/g++.dg/cpp1y/lambda-generic-const4.C
  6e8fc19c227503a364053713d7456972  gcc/testsuite/g++.dg/cpp1y/lambda-generic-const5.C
  2e80b291e01a2cfa45ff49e595eefeb5  gcc/testsuite/g++.dg/cpp1y/lambda-generic-conv1.C
  4826d92e5c4d99fa506ff2e846ff01a4  gcc/testsuite/g++.dg/cpp1y/lambda-generic-conv2.C
  78cdb2dc3c8d671d96c375fa61f96dc5  gcc/testsuite/g++.dg/cpp1y/lambda-generic-conv3.C
! 24c12380de7497f70201cd689e494352  gcc/testsuite/g++.dg/cpp1y/lambda-generic-dep.C
  82fea772a2540cf9ab702c17cc2cdb54  gcc/testsuite/g++.dg/cpp1y/lambda-generic-ice1.C
  767d5be8b02f5e7228313580ecdc27bf  gcc/testsuite/g++.dg/cpp1y/lambda-generic-ice2.C
  fd449c2760b279bd0767e28da8a563bf  gcc/testsuite/g++.dg/cpp1y/lambda-generic-ice3.C
  2d18bbc76edb8b7a9ae068d833d222fb  gcc/testsuite/g++.dg/cpp1y/lambda-generic-ice4.C
! a72b2bd09fb408a27f64449e8b8d9040  gcc/testsuite/g++.dg/cpp1y/lambda-generic-ice5.C
  a5e1f08b66165b58419bbab37da9a962  gcc/testsuite/g++.dg/cpp1y/lambda-generic-mixed.C
  db3760d317d0220aeddc9a1ce4072105  gcc/testsuite/g++.dg/cpp1y/lambda-generic-static1.C
  c6cfff44332b8bfb7c52ace4e1af76c5  gcc/testsuite/g++.dg/cpp1y/lambda-generic-static2.C
  47327f13bcf8bd47595b03a1a51d80b1  gcc/testsuite/g++.dg/cpp1y/lambda-generic-this1.C
  714b0ec0672f03bb83435eb7e8946993  gcc/testsuite/g++.dg/cpp1y/lambda-generic-this1a.C
  06ba6684e3759115ec5098f38667687b  gcc/testsuite/g++.dg/cpp1y/lambda-generic-trailing1.C
  e947551033232c5abe95cce5adfd22aa  gcc/testsuite/g++.dg/cpp1y/lambda-generic-udt.C
  7515a5372d247dd5a94ef0626c25c2ae  gcc/testsuite/g++.dg/cpp1y/lambda-generic-uneval1.C
  5ef24452c90a0becdfa786ec05bfd5b8  gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic.C
  723f502d3b40be6c90106e7124cc9e69  gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic2.C
  93fa62fac80c2db40c8540dcc1bb3cb1  gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic3.C
  3b97ac4e949f2c389ffb4065dc536705  gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic4.C
! 9acd765f36c9f3266dd3a67243059b14  gcc/testsuite/g++.dg/cpp1y/lambda-generic-vla1.C
! deffe0390cd727bd13545fe2b8efc067  gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C
  cc6586d67eedf5854ebc2931fb7d47a3  gcc/testsuite/g++.dg/cpp1y/lambda-generic-xcfun.C
  436f8b79fa87285922038177587ab157  gcc/testsuite/g++.dg/cpp1y/lambda-generic-xudt.C
! c8bc073988d4f75d4dedbbecb5ce8f3a  gcc/testsuite/g++.dg/cpp1y/lambda-generic.C
  ca76d1cf09a7e8a0d6dcf484103a301f  gcc/testsuite/g++.dg/cpp1y/lambda-ice1.C
  cd4be222672b195ed8554a2e99c88e68  gcc/testsuite/g++.dg/cpp1y/lambda-init.C
  92794dd2e4beab250816493d67c15717  gcc/testsuite/g++.dg/cpp1y/lambda-init1.C
  fe118321a9f7ae6d0b7db3dea8fea392  gcc/testsuite/g++.dg/cpp1y/lambda-init10.C
--- 12651,12730 ----
  018149928d964ce66689bf4960400c07  gcc/testsuite/g++.dg/cpp1y/feat-sized-dealloc-neg.C
  b7edad357bb503949f49802295729019  gcc/testsuite/g++.dg/cpp1y/feat-sized-dealloc.C
  fc5875e8af08d0f9488344e80bf6f764  gcc/testsuite/g++.dg/cpp1y/feat-vla.C
  019035e3ac24c4aef8fcd1f1af1590ae  gcc/testsuite/g++.dg/cpp1y/func_constexpr.C
  2cf8b2b7a7dc5ba828766c37a54e2315  gcc/testsuite/g++.dg/cpp1y/lambda-conv1.C
  4734b77212418e40ce4f8965c6017a39  gcc/testsuite/g++.dg/cpp1y/lambda-conv2.C
  5f112fcc57ff57c8e803342bde4e9c25  gcc/testsuite/g++.dg/cpp1y/lambda-deduce-mult-neg.C
  a5fcad1d0708a6218c6fe69c1871df02  gcc/testsuite/g++.dg/cpp1y/lambda-deduce-mult.C
! 613f8f1a0e37b58fd3edbb783043189f  gcc/testsuite/g++.dg/cpp1y/lambda-defarg7.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
! a7934d89f8791f62bbbf0b9d7fa7ece6  gcc/testsuite/g++.dg/cpp1y/lambda-generic-70570.C
! 06f1db80f8f19768fce87da177cfc400  gcc/testsuite/g++.dg/cpp1y/lambda-generic-77914.C
! 73439253dac676f4f5d981dc912a1a83  gcc/testsuite/g++.dg/cpp1y/lambda-generic-78018.C
! f257a2d5d1384a750676e55da76dca2e  gcc/testsuite/g++.dg/cpp1y/lambda-generic-79005.C
! 5209bc3f1d48d6d7100a438fe34ed022  gcc/testsuite/g++.dg/cpp1y/lambda-generic-84125.C
  87f3d5397981cf431912aae6490ea63a  gcc/testsuite/g++.dg/cpp1y/lambda-generic-auto1.C
  18a2431f49a5d003b8c4af0ee1ee26fb  gcc/testsuite/g++.dg/cpp1y/lambda-generic-cfun.C
  043e19917f87f2b2acd754fc6d7db469  gcc/testsuite/g++.dg/cpp1y/lambda-generic-const1.C
  565bd59fb2dca8cbcfbfa5b7e1e94368  gcc/testsuite/g++.dg/cpp1y/lambda-generic-const2.C
  c1704c3068b9b801f6fca80634fa3d1c  gcc/testsuite/g++.dg/cpp1y/lambda-generic-const3.C
! a429d84bc7f4132705bbe16ebbde7773  gcc/testsuite/g++.dg/cpp1y/lambda-generic-const4.C
! 0b815c50b036a29c2e101866d80ae539  gcc/testsuite/g++.dg/cpp1y/lambda-generic-const4a.C
  6e8fc19c227503a364053713d7456972  gcc/testsuite/g++.dg/cpp1y/lambda-generic-const5.C
  2e80b291e01a2cfa45ff49e595eefeb5  gcc/testsuite/g++.dg/cpp1y/lambda-generic-conv1.C
  4826d92e5c4d99fa506ff2e846ff01a4  gcc/testsuite/g++.dg/cpp1y/lambda-generic-conv2.C
  78cdb2dc3c8d671d96c375fa61f96dc5  gcc/testsuite/g++.dg/cpp1y/lambda-generic-conv3.C
! 10531fe45da275dc1869ac9e617de99d  gcc/testsuite/g++.dg/cpp1y/lambda-generic-dep.C
! 82b03b4626aa950dab28dc141638ae81  gcc/testsuite/g++.dg/cpp1y/lambda-generic-dep2.C
  82fea772a2540cf9ab702c17cc2cdb54  gcc/testsuite/g++.dg/cpp1y/lambda-generic-ice1.C
  767d5be8b02f5e7228313580ecdc27bf  gcc/testsuite/g++.dg/cpp1y/lambda-generic-ice2.C
  fd449c2760b279bd0767e28da8a563bf  gcc/testsuite/g++.dg/cpp1y/lambda-generic-ice3.C
  2d18bbc76edb8b7a9ae068d833d222fb  gcc/testsuite/g++.dg/cpp1y/lambda-generic-ice4.C
! 1458aad4c6bf99190e8ddba456ce364a  gcc/testsuite/g++.dg/cpp1y/lambda-generic-ice5.C
! 4be354a55f23022a80d19fa0965a196c  gcc/testsuite/g++.dg/cpp1y/lambda-generic-ice6.C
! 6481e5c27cf4d02abca8974e663bd61d  gcc/testsuite/g++.dg/cpp1y/lambda-generic-ice7.C
! 8efe65d95bbc02645dd6c2656587135e  gcc/testsuite/g++.dg/cpp1y/lambda-generic-ice8.C
! cbe44bb553e043d66e5399d7f388dabf  gcc/testsuite/g++.dg/cpp1y/lambda-generic-ice9.C
  a5e1f08b66165b58419bbab37da9a962  gcc/testsuite/g++.dg/cpp1y/lambda-generic-mixed.C
+ 230ab773acec47b7efe832181c6c4972  gcc/testsuite/g++.dg/cpp1y/lambda-generic-nested1.C
+ fcdbf299db7426d40d79e7ce91bbbc1e  gcc/testsuite/g++.dg/cpp1y/lambda-generic-nested2.C
+ 79b0200bf1646b28e5d82c30cae3557d  gcc/testsuite/g++.dg/cpp1y/lambda-generic-noexcept1.C
+ 52a13a3c9f86f7ceca034afb60b8f785  gcc/testsuite/g++.dg/cpp1y/lambda-generic-nsdmi1.C
  db3760d317d0220aeddc9a1ce4072105  gcc/testsuite/g++.dg/cpp1y/lambda-generic-static1.C
  c6cfff44332b8bfb7c52ace4e1af76c5  gcc/testsuite/g++.dg/cpp1y/lambda-generic-static2.C
+ d91a981f54ab2a15c0e9427ccb338f24  gcc/testsuite/g++.dg/cpp1y/lambda-generic-targ1.C
+ 73bb1a3877df4117a7cf2036dedc3ac8  gcc/testsuite/g++.dg/cpp1y/lambda-generic-targ2.C
  47327f13bcf8bd47595b03a1a51d80b1  gcc/testsuite/g++.dg/cpp1y/lambda-generic-this1.C
  714b0ec0672f03bb83435eb7e8946993  gcc/testsuite/g++.dg/cpp1y/lambda-generic-this1a.C
  06ba6684e3759115ec5098f38667687b  gcc/testsuite/g++.dg/cpp1y/lambda-generic-trailing1.C
  e947551033232c5abe95cce5adfd22aa  gcc/testsuite/g++.dg/cpp1y/lambda-generic-udt.C
  7515a5372d247dd5a94ef0626c25c2ae  gcc/testsuite/g++.dg/cpp1y/lambda-generic-uneval1.C
  5ef24452c90a0becdfa786ec05bfd5b8  gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic.C
+ e42e0cda4c8fab5269624886a776962a  gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic10.C
+ 7f7a1aa40cffd88e5ec4f302b7c12365  gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic11.C
+ c3bd380fa2e677aa4ad933772a502bd8  gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic12.C
+ 1151700861b5879b293290e50e8a7fea  gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic13.C
+ ea28e7c282edd48828404251cc6bab36  gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic14.C
+ 7e6ba3bc9245d4583eee9743c364c54b  gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic15.C
+ c0a147006244a6b57ce3f875f94e64bc  gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic16.C
+ 6646d8e79cf76118d275f7a8c0a7f36a  gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic17.C
  723f502d3b40be6c90106e7124cc9e69  gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic2.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
! cbfee1b0e8fcb0b13c5522590bdee561  gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic6.C
! ce17689f148f7788b7ec7df9e8d690b7  gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic7.C
! e54efd0318ddcbe724e0d704c7d885ed  gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic8.C
! 7931e0c4d7613530b24732e5c7c85d2a  gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic9.C
! 27c0cfb757a137595bb2bce8e13878a3  gcc/testsuite/g++.dg/cpp1y/lambda-generic-vla1.C
! 684ac1c6a7943c840757384c975d02a1  gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C
  cc6586d67eedf5854ebc2931fb7d47a3  gcc/testsuite/g++.dg/cpp1y/lambda-generic-xcfun.C
  436f8b79fa87285922038177587ab157  gcc/testsuite/g++.dg/cpp1y/lambda-generic-xudt.C
! 946f59c2dd9c3a634f4e09b219af302c  gcc/testsuite/g++.dg/cpp1y/lambda-generic.C
  ca76d1cf09a7e8a0d6dcf484103a301f  gcc/testsuite/g++.dg/cpp1y/lambda-ice1.C
+ cf53809dddf10444ecf4edb30fe8fb83  gcc/testsuite/g++.dg/cpp1y/lambda-ice2.C
  cd4be222672b195ed8554a2e99c88e68  gcc/testsuite/g++.dg/cpp1y/lambda-init.C
  92794dd2e4beab250816493d67c15717  gcc/testsuite/g++.dg/cpp1y/lambda-init1.C
  fe118321a9f7ae6d0b7db3dea8fea392  gcc/testsuite/g++.dg/cpp1y/lambda-init10.C
*************** fe118321a9f7ae6d0b7db3dea8fea392  gcc/te
*** 12150,12169 ****
  fabb2b807c750e9106c4bf0957c73eb5  gcc/testsuite/g++.dg/cpp1y/lambda-init14.C
  ca7e8735db99f7f5fd14ba8748118d88  gcc/testsuite/g++.dg/cpp1y/lambda-init15.C
  94541d9e486223ed3e08f03421566a99  gcc/testsuite/g++.dg/cpp1y/lambda-init15a.C
  8ed9afde76486ea02c03ca491cadf017  gcc/testsuite/g++.dg/cpp1y/lambda-init2.C
  2cd05217a3f9f694b94c428a478c4d15  gcc/testsuite/g++.dg/cpp1y/lambda-init3.C
  f2fd3b3d96f31c07233bb82ba0c0f2f5  gcc/testsuite/g++.dg/cpp1y/lambda-init4.C
  111fa5824efc658c838dda25e7968d0c  gcc/testsuite/g++.dg/cpp1y/lambda-init5.C
  fa5d36139114d3424b46d4a35fdcc931  gcc/testsuite/g++.dg/cpp1y/lambda-init6.C
! e43ff67655440de1b6368e3cd5e04a52  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
! c855a0af7a9feddb90220f60a1622833  gcc/testsuite/g++.dg/cpp1y/lambda-mangle-1.C
  d13aa7a67136b0f4d673be5df541a2ab  gcc/testsuite/g++.dg/cpp1y/lambda-var-templ1.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
  4707396951c53026c3f457ecd9db5312  gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr1.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
--- 12734,12757 ----
  fabb2b807c750e9106c4bf0957c73eb5  gcc/testsuite/g++.dg/cpp1y/lambda-init14.C
  ca7e8735db99f7f5fd14ba8748118d88  gcc/testsuite/g++.dg/cpp1y/lambda-init15.C
  94541d9e486223ed3e08f03421566a99  gcc/testsuite/g++.dg/cpp1y/lambda-init15a.C
+ be21e9afd5b9562ecdf4950349fa5936  gcc/testsuite/g++.dg/cpp1y/lambda-init16.C
+ e0f5a695e9604ed19c20c1e333da6015  gcc/testsuite/g++.dg/cpp1y/lambda-init17.C
  8ed9afde76486ea02c03ca491cadf017  gcc/testsuite/g++.dg/cpp1y/lambda-init2.C
  2cd05217a3f9f694b94c428a478c4d15  gcc/testsuite/g++.dg/cpp1y/lambda-init3.C
  f2fd3b3d96f31c07233bb82ba0c0f2f5  gcc/testsuite/g++.dg/cpp1y/lambda-init4.C
  111fa5824efc658c838dda25e7968d0c  gcc/testsuite/g++.dg/cpp1y/lambda-init5.C
  fa5d36139114d3424b46d4a35fdcc931  gcc/testsuite/g++.dg/cpp1y/lambda-init6.C
! 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
  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
  4707396951c53026c3f457ecd9db5312  gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr1.C
+ 5326d1798f69e0f75031ab294cf8dd21  gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr10.C
+ c9dde900e1dd03846724a7195332d8ea  gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr11.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
*************** f487f4137e5fa352c9bff3ababd18d3c  gcc/te
*** 12171,12176 ****
--- 12759,12765 ----
  2b0eb9826a6868b6c3240485258d8645  gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr6.C
  e757c9e5123a47b020592e157d39abbf  gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr7.C
  bdeca5af0e55118e69f4737603161a50  gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr8.C
+ 977f379532a7d04c5460403b4511a64c  gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr9.C
  59f7206fe6aeb01f4af1e60faed2a55a  gcc/testsuite/g++.dg/cpp1y/nsdmi-union1.C
  e9688e421c4569dce79ed59081112e1b  gcc/testsuite/g++.dg/cpp1y/nsdmi-union2.C
  842c48da3392c67af5a3e57320ee750f  gcc/testsuite/g++.dg/cpp1y/parameter-pack-1.C
*************** e8c6da7fb812f06074a9399c95d62136  gcc/te
*** 12182,12194 ****
  a59e5fd28eae5235838080483b6939a6  gcc/testsuite/g++.dg/cpp1y/phoobhar.h
  7d18afb36bcaa55af2030c6546d5df38  gcc/testsuite/g++.dg/cpp1y/pr57640.C
  c4165eafc91468f7acbe5ba99603b2e7  gcc/testsuite/g++.dg/cpp1y/pr57644.C
- 8ae50d53e7ce6a94ca2319000afda312  gcc/testsuite/g++.dg/cpp1y/pr58500.C
  247d52471516e4b902d29d652eae1a51  gcc/testsuite/g++.dg/cpp1y/pr58533.C
- bd92b328e85f779283b0b3e174519b54  gcc/testsuite/g++.dg/cpp1y/pr58534.C
- eaa9859e566519f2b389cff20adc3e3c  gcc/testsuite/g++.dg/cpp1y/pr58535.C
- a7701c72b305a90f375bbe6c12c747b5  gcc/testsuite/g++.dg/cpp1y/pr58536.C
- c1b582f84cb6e36dbf0ad20cda461ce8  gcc/testsuite/g++.dg/cpp1y/pr58548.C
- 0f93273df62171c2e999dc22981bcea6  gcc/testsuite/g++.dg/cpp1y/pr58549.C
  fcd7af7fef98efaa8babe7825f41330a  gcc/testsuite/g++.dg/cpp1y/pr58637.C
  c0d2bf7c677f2bb607524286bf1d172d  gcc/testsuite/g++.dg/cpp1y/pr58708.C
  6d8ef9261aa9862835db3bee13b6cd54  gcc/testsuite/g++.dg/cpp1y/pr59110.C
--- 12771,12777 ----
*************** b1e9ba9fa637eed063b4c011ab1e7cc0  gcc/te
*** 12200,12244 ****
  43aaa4ff9a2dee14ecb92be853dd1a29  gcc/testsuite/g++.dg/cpp1y/pr59638.C
  1c619055757062ca3e5060ef01f7d721  gcc/testsuite/g++.dg/cpp1y/pr59867.C
  0f216d35e00b88ff8d654b3497f3afdd  gcc/testsuite/g++.dg/cpp1y/pr60033.C
- d630af3be7440b197c1ab5b61ab16b3e  gcc/testsuite/g++.dg/cpp1y/pr60052.C
- b5f741f43129c3ffc61e9e93aa845ecf  gcc/testsuite/g++.dg/cpp1y/pr60053.C
  7099ae5675f3cf252a848317dcd61e0f  gcc/testsuite/g++.dg/cpp1y/pr60054.C
- 57b3cd520856c0b4f9afd43e02a9d1a5  gcc/testsuite/g++.dg/cpp1y/pr60064.C
- c6352418315616cd37a733490bfa2baf  gcc/testsuite/g++.dg/cpp1y/pr60065.C
  fd4301fd2844bd03569ca727f83a92f9  gcc/testsuite/g++.dg/cpp1y/pr60190.C
  29dadd5c2626936723a7403fa5dfe8e2  gcc/testsuite/g++.dg/cpp1y/pr60311.C
  77581530c256daf1a2c75e681f5f201b  gcc/testsuite/g++.dg/cpp1y/pr60332.C
  40acec3ac1a454f56e383b48fc8ebae2  gcc/testsuite/g++.dg/cpp1y/pr60376.C
- 0c5d1ded791b2530e474f848f8b6d0c7  gcc/testsuite/g++.dg/cpp1y/pr60377.C
  33d4af5c44499231ca7101f70157f6d2  gcc/testsuite/g++.dg/cpp1y/pr60384.C
! 89e823196ea2797ff0cdd8c41652d3c8  gcc/testsuite/g++.dg/cpp1y/pr60390.C
! 578fb427264064fa9d0060547416a691  gcc/testsuite/g++.dg/cpp1y/pr60391.C
! 0c0d31c6cb5ac21b50dc1bca72dba1da  gcc/testsuite/g++.dg/cpp1y/pr60393.C
! 52d100d1dbf5bb7aaa6e6bec63667dba  gcc/testsuite/g++.dg/cpp1y/pr60573.C
! e870b2124044ac1320cf992f181773a4  gcc/testsuite/g++.dg/cpp1y/pr60626.C
  ccdf243ad72b9b0a028429d373468fef  gcc/testsuite/g++.dg/cpp1y/pr60627.C
  57a0dc24fb99fbd479aab82399935d96  gcc/testsuite/g++.dg/cpp1y/pr60943.C
  36ea8d632059da318eba95db916a7d67  gcc/testsuite/g++.dg/cpp1y/pr61636-1.C
  9b956ed4d6ed5d2856ccf34af41742c3  gcc/testsuite/g++.dg/cpp1y/pr61636-2.C
  8b18feb5bcdddcab93132675568377e3  gcc/testsuite/g++.dg/cpp1y/pr61636-3.C
! 80145d35968f0308732f07fb457345f2  gcc/testsuite/g++.dg/cpp1y/pr63996.C
  c91c86f8ba8e5170ec88398fddfe71c1  gcc/testsuite/g++.dg/cpp1y/pr64382.C
  2bf768dd7e19ea1f0872089c05d29aeb  gcc/testsuite/g++.dg/cpp1y/pr64626-1.C
  b82fb5e4a473d7355f2d603a5f9c0809  gcc/testsuite/g++.dg/cpp1y/pr64626-2.C
! 70418b269a270e6b88690c1eade8c25b  gcc/testsuite/g++.dg/cpp1y/pr65202.C
  d5c5f62de8cf97d34f282f05a28fd8c3  gcc/testsuite/g++.dg/cpp1y/pr65340.C
  8b86bdc4bfeb8e4d82a1740a397c43fb  gcc/testsuite/g++.dg/cpp1y/pr66443-cxx14-2.C
  588f6aed05a30eafdb7e7d6c69a5c995  gcc/testsuite/g++.dg/cpp1y/pr66443-cxx14-3.C
! 7411983f341741ab3262b6005130fb3d  gcc/testsuite/g++.dg/cpp1y/pr66443-cxx14.C
  5cb74801fd077c8935ddf3dee726e194  gcc/testsuite/g++.dg/cpp1y/pr66735.C
  5638089c538cc7cfb68d5ad4be23754c  gcc/testsuite/g++.dg/cpp1y/pr67273.C
  41b527c8a9e4efc39a17ac2ae08fe27f  gcc/testsuite/g++.dg/cpp1y/pr67980.C
! 38c326b247f84810897607ece742c695  gcc/testsuite/g++.dg/cpp1y/pr68180.C
  0b713438d71229ec0d7fbc8d6beb65d5  gcc/testsuite/g++.dg/cpp1y/pr68278.C
  66407b019be3ad24d7c8b0a10c4ec4ec  gcc/testsuite/g++.dg/cpp1y/pr68388.C
  165032b8d9d8145284b0a64c372765ec  gcc/testsuite/g++.dg/cpp1y/pr68396.C
  86afb9921518e8277bc8224c588a770e  gcc/testsuite/g++.dg/cpp1y/pr69066.C
  1d13e596981d58f9b60198cf74b31224  gcc/testsuite/g++.dg/cpp1y/pr70001.C
  349a60e47349360ddd62a8bcc5e96309  gcc/testsuite/g++.dg/cpp1y/pr72759.C
  1e1d4639866302ab049166b69696e990  gcc/testsuite/g++.dg/cpp1y/pr77321.C
  cfda3f0fd7c7e2780a1c69a24a5dd8ca  gcc/testsuite/g++.dg/cpp1y/pr77446.C
--- 12783,12821 ----
  43aaa4ff9a2dee14ecb92be853dd1a29  gcc/testsuite/g++.dg/cpp1y/pr59638.C
  1c619055757062ca3e5060ef01f7d721  gcc/testsuite/g++.dg/cpp1y/pr59867.C
  0f216d35e00b88ff8d654b3497f3afdd  gcc/testsuite/g++.dg/cpp1y/pr60033.C
  7099ae5675f3cf252a848317dcd61e0f  gcc/testsuite/g++.dg/cpp1y/pr60054.C
  fd4301fd2844bd03569ca727f83a92f9  gcc/testsuite/g++.dg/cpp1y/pr60190.C
  29dadd5c2626936723a7403fa5dfe8e2  gcc/testsuite/g++.dg/cpp1y/pr60311.C
  77581530c256daf1a2c75e681f5f201b  gcc/testsuite/g++.dg/cpp1y/pr60332.C
  40acec3ac1a454f56e383b48fc8ebae2  gcc/testsuite/g++.dg/cpp1y/pr60376.C
  33d4af5c44499231ca7101f70157f6d2  gcc/testsuite/g++.dg/cpp1y/pr60384.C
! 99c763cd99f25e862a2e2810898e21f2  gcc/testsuite/g++.dg/cpp1y/pr60393.C
  ccdf243ad72b9b0a028429d373468fef  gcc/testsuite/g++.dg/cpp1y/pr60627.C
  57a0dc24fb99fbd479aab82399935d96  gcc/testsuite/g++.dg/cpp1y/pr60943.C
  36ea8d632059da318eba95db916a7d67  gcc/testsuite/g++.dg/cpp1y/pr61636-1.C
  9b956ed4d6ed5d2856ccf34af41742c3  gcc/testsuite/g++.dg/cpp1y/pr61636-2.C
  8b18feb5bcdddcab93132675568377e3  gcc/testsuite/g++.dg/cpp1y/pr61636-3.C
! f97e07fe4185e8d2e6f43db2656d1ebb  gcc/testsuite/g++.dg/cpp1y/pr63996.C
  c91c86f8ba8e5170ec88398fddfe71c1  gcc/testsuite/g++.dg/cpp1y/pr64382.C
  2bf768dd7e19ea1f0872089c05d29aeb  gcc/testsuite/g++.dg/cpp1y/pr64626-1.C
  b82fb5e4a473d7355f2d603a5f9c0809  gcc/testsuite/g++.dg/cpp1y/pr64626-2.C
! c4d4008e57b846a8f10168eea5d8c311  gcc/testsuite/g++.dg/cpp1y/pr65202.C
  d5c5f62de8cf97d34f282f05a28fd8c3  gcc/testsuite/g++.dg/cpp1y/pr65340.C
  8b86bdc4bfeb8e4d82a1740a397c43fb  gcc/testsuite/g++.dg/cpp1y/pr66443-cxx14-2.C
  588f6aed05a30eafdb7e7d6c69a5c995  gcc/testsuite/g++.dg/cpp1y/pr66443-cxx14-3.C
! 8e1dcbd08baa1ec4a3bc393fef54bcfe  gcc/testsuite/g++.dg/cpp1y/pr66443-cxx14.C
! 5228792fcbf6ecdb872a5d5d10e1aaec  gcc/testsuite/g++.dg/cpp1y/pr66690.C
  5cb74801fd077c8935ddf3dee726e194  gcc/testsuite/g++.dg/cpp1y/pr66735.C
  5638089c538cc7cfb68d5ad4be23754c  gcc/testsuite/g++.dg/cpp1y/pr67273.C
  41b527c8a9e4efc39a17ac2ae08fe27f  gcc/testsuite/g++.dg/cpp1y/pr67980.C
! cc303b3b2d7233ccfd58467de3214ada  gcc/testsuite/g++.dg/cpp1y/pr68180.C
  0b713438d71229ec0d7fbc8d6beb65d5  gcc/testsuite/g++.dg/cpp1y/pr68278.C
  66407b019be3ad24d7c8b0a10c4ec4ec  gcc/testsuite/g++.dg/cpp1y/pr68388.C
  165032b8d9d8145284b0a64c372765ec  gcc/testsuite/g++.dg/cpp1y/pr68396.C
+ d922a51336a9dacf3c4cea341b942c52  gcc/testsuite/g++.dg/cpp1y/pr68578.C
  86afb9921518e8277bc8224c588a770e  gcc/testsuite/g++.dg/cpp1y/pr69066.C
  1d13e596981d58f9b60198cf74b31224  gcc/testsuite/g++.dg/cpp1y/pr70001.C
+ fcbcd555635fe6701df362a0faf73cb3  gcc/testsuite/g++.dg/cpp1y/pr71875.C
  349a60e47349360ddd62a8bcc5e96309  gcc/testsuite/g++.dg/cpp1y/pr72759.C
  1e1d4639866302ab049166b69696e990  gcc/testsuite/g++.dg/cpp1y/pr77321.C
  cfda3f0fd7c7e2780a1c69a24a5dd8ca  gcc/testsuite/g++.dg/cpp1y/pr77446.C
*************** b1dd0e1128f26d2c0df901543e326c60  gcc/te
*** 12246,12267 ****
  c008d1c5e0d0e13a914b30aa87836359  gcc/testsuite/g++.dg/cpp1y/pr77585.C
  92c269996326b748fcdb2ef28c400a0b  gcc/testsuite/g++.dg/cpp1y/pr77591.C
  3659f5cca5d2a047549f78c4735d3374  gcc/testsuite/g++.dg/cpp1y/pr77739.C
! 62a83753016f383cc761527e3f324768  gcc/testsuite/g++.dg/cpp1y/pr77830.C
  29d67e262203e2ec874f3cd169d02d57  gcc/testsuite/g++.dg/cpp1y/pr78550.C
  94c88f192b02f065413ec82735d9e520  gcc/testsuite/g++.dg/cpp1y/pr78551.C
  869002c18609fc85dfc92e7dd21b6648  gcc/testsuite/g++.dg/cpp1y/pr78774.C
! 89b1f11eb72d98cb267f9bf5eb20d433  gcc/testsuite/g++.dg/cpp1y/pr79253.C
  46883c65d30eff2156a2c0d80de33f0d  gcc/testsuite/g++.dg/cpp1y/pr79393-2.C
  e498e8a1a8fb8d59ced1bf84781af0c9  gcc/testsuite/g++.dg/cpp1y/pr79393.C
  78f7b6310d849e70f4c919b5ac315cb8  gcc/testsuite/g++.dg/cpp1y/pr79435.C
  9b667c9d516823999474daebc2f8ea26  gcc/testsuite/g++.dg/cpp1y/pr79463.C
  d7dcd3f45ee6c394c4e684f054bf67ae  gcc/testsuite/g++.dg/cpp1y/pr82373.C
  ac3a3cc471361b1fc9f3e55ad12dd7a8  gcc/testsuite/g++.dg/cpp1y/regress1.C
  9a759de4b7ac375d3c274acdf73c4fbe  gcc/testsuite/g++.dg/cpp1y/sized-dealloc1.C
  aeb199bf9a897359b6d538b5bce4e5ef  gcc/testsuite/g++.dg/cpp1y/sized-dealloc2.C
  8ba5dbf42040b5bdb3d7ce7954bd5e81  gcc/testsuite/g++.dg/cpp1y/sized-dealloc3.C
! 722ec8a33f18e5ce10702e81a55f6b4c  gcc/testsuite/g++.dg/cpp1y/static_assert1.C
! 7de5a0b7a413d401689b386b735e22b2  gcc/testsuite/g++.dg/cpp1y/static_assert2.C
  cb697dbebf15777f13401f1c939461d2  gcc/testsuite/g++.dg/cpp1y/system-binary-constants-1.C
  d41d8cd98f00b204e9800998ecf8427e  gcc/testsuite/g++.dg/cpp1y/testinc/phoobhar.h
  fe2a8f15402c2461ce8bc4033d873df3  gcc/testsuite/g++.dg/cpp1y/udlit-char-template-neg.C
--- 12823,12863 ----
  c008d1c5e0d0e13a914b30aa87836359  gcc/testsuite/g++.dg/cpp1y/pr77585.C
  92c269996326b748fcdb2ef28c400a0b  gcc/testsuite/g++.dg/cpp1y/pr77591.C
  3659f5cca5d2a047549f78c4735d3374  gcc/testsuite/g++.dg/cpp1y/pr77739.C
! cda4d418155a1ac5ba05c018629e6bc3  gcc/testsuite/g++.dg/cpp1y/pr77786.C
! d60bb4b02083a732e55ff4c255e32a88  gcc/testsuite/g++.dg/cpp1y/pr77830.C
! 84325df3395b9dd4bfb519eb8c6d5b7c  gcc/testsuite/g++.dg/cpp1y/pr78523.C
  29d67e262203e2ec874f3cd169d02d57  gcc/testsuite/g++.dg/cpp1y/pr78550.C
  94c88f192b02f065413ec82735d9e520  gcc/testsuite/g++.dg/cpp1y/pr78551.C
  869002c18609fc85dfc92e7dd21b6648  gcc/testsuite/g++.dg/cpp1y/pr78774.C
! d391ba31f4534302c039c9af6be215f5  gcc/testsuite/g++.dg/cpp1y/pr79253.C
  46883c65d30eff2156a2c0d80de33f0d  gcc/testsuite/g++.dg/cpp1y/pr79393-2.C
  e498e8a1a8fb8d59ced1bf84781af0c9  gcc/testsuite/g++.dg/cpp1y/pr79393.C
  78f7b6310d849e70f4c919b5ac315cb8  gcc/testsuite/g++.dg/cpp1y/pr79435.C
  9b667c9d516823999474daebc2f8ea26  gcc/testsuite/g++.dg/cpp1y/pr79463.C
+ 1560a0b48c310366da3e0aa9e50072d9  gcc/testsuite/g++.dg/cpp1y/pr79937-1.C
+ 7ba1a7095d85e93ae6a794f361e10e20  gcc/testsuite/g++.dg/cpp1y/pr79937-2.C
+ 72ea86a680e93f569f2360134a6abd63  gcc/testsuite/g++.dg/cpp1y/pr79937-3.C
+ ef85b0877a37d48d718e93274d150a12  gcc/testsuite/g++.dg/cpp1y/pr79937-4.C
+ 8b7bd0b9195eec19b92301cfbb17cebc  gcc/testsuite/g++.dg/cpp1y/pr80194.C
+ 511f51be2efe86fc6a25d6a6d5423518  gcc/testsuite/g++.dg/cpp1y/pr81574.C
  d7dcd3f45ee6c394c4e684f054bf67ae  gcc/testsuite/g++.dg/cpp1y/pr82373.C
+ 4161eaee48d8957a412b3dcbf79f45df  gcc/testsuite/g++.dg/cpp1y/pr82410.C
+ 9a351ce086af7e219baab4f27bbe80d8  gcc/testsuite/g++.dg/cpp1y/pr83406.C
+ e2b85c2e8f04e3d4815b867dd924f3b8  gcc/testsuite/g++.dg/cpp1y/pr83739.C
+ 5e7643db30c8d709c4ece3d86dcf091f  gcc/testsuite/g++.dg/cpp1y/pr83817.C
+ dbace3f995d674f58bab880f12a9759b  gcc/testsuite/g++.dg/cpp1y/pr84496.C
+ 940fc182569446c043306bfa0393ad5d  gcc/testsuite/g++.dg/cpp1y/pr84558.C
+ 5eb9aa972e7e4cde87e8a949a32f937d  gcc/testsuite/g++.dg/cpp1y/pr84593.C
+ eed72e4e3c9aec24d904cb1baa5f2711  gcc/testsuite/g++.dg/cpp1y/pr84835.C
+ 9c7ee77059363808e261d90cf939ce59  gcc/testsuite/g++.dg/cpp1y/pr84942.C
+ 11abcca649e7c260d96b20dd2bb71bc7  gcc/testsuite/g++.dg/cpp1y/pr85076.C
  ac3a3cc471361b1fc9f3e55ad12dd7a8  gcc/testsuite/g++.dg/cpp1y/regress1.C
  9a759de4b7ac375d3c274acdf73c4fbe  gcc/testsuite/g++.dg/cpp1y/sized-dealloc1.C
  aeb199bf9a897359b6d538b5bce4e5ef  gcc/testsuite/g++.dg/cpp1y/sized-dealloc2.C
  8ba5dbf42040b5bdb3d7ce7954bd5e81  gcc/testsuite/g++.dg/cpp1y/sized-dealloc3.C
! 60a86453cec145463457c1cb89bab0bd  gcc/testsuite/g++.dg/cpp1y/static_assert1.C
! eace14ba5140fc5831e3fd2fb3549387  gcc/testsuite/g++.dg/cpp1y/static_assert2.C
! e1e32726206acc805d1033f978255136  gcc/testsuite/g++.dg/cpp1y/static_assert3.C
  cb697dbebf15777f13401f1c939461d2  gcc/testsuite/g++.dg/cpp1y/system-binary-constants-1.C
  d41d8cd98f00b204e9800998ecf8427e  gcc/testsuite/g++.dg/cpp1y/testinc/phoobhar.h
  fe2a8f15402c2461ce8bc4033d873df3  gcc/testsuite/g++.dg/cpp1y/udlit-char-template-neg.C
*************** a82697cf228f6c067aa7a0fdefbfe94c  gcc/te
*** 12310,12316 ****
  bb4283f25d1a9ee27311f1ab54256222  gcc/testsuite/g++.dg/cpp1y/var-templ40.C
  97a88f991a43115b826c1da3bd102d68  gcc/testsuite/g++.dg/cpp1y/var-templ42.C
  a993ff7d133c102704948fe5282c51e1  gcc/testsuite/g++.dg/cpp1y/var-templ43.C
! ced2cfc9e16cac7b5bf507f1a63b428b  gcc/testsuite/g++.dg/cpp1y/var-templ44.C
  78c0fd59914253b2e79c0b0d1764b88c  gcc/testsuite/g++.dg/cpp1y/var-templ45.C
  56c46be1bc1585a49aae9a5951624730  gcc/testsuite/g++.dg/cpp1y/var-templ46.C
  ffde32febe1810ce3df7e034c7d427c5  gcc/testsuite/g++.dg/cpp1y/var-templ47.C
--- 12906,12912 ----
  bb4283f25d1a9ee27311f1ab54256222  gcc/testsuite/g++.dg/cpp1y/var-templ40.C
  97a88f991a43115b826c1da3bd102d68  gcc/testsuite/g++.dg/cpp1y/var-templ42.C
  a993ff7d133c102704948fe5282c51e1  gcc/testsuite/g++.dg/cpp1y/var-templ43.C
! 2f854373ca136d848fd84adcbe545474  gcc/testsuite/g++.dg/cpp1y/var-templ44.C
  78c0fd59914253b2e79c0b0d1764b88c  gcc/testsuite/g++.dg/cpp1y/var-templ45.C
  56c46be1bc1585a49aae9a5951624730  gcc/testsuite/g++.dg/cpp1y/var-templ46.C
  ffde32febe1810ce3df7e034c7d427c5  gcc/testsuite/g++.dg/cpp1y/var-templ47.C
*************** ffde32febe1810ce3df7e034c7d427c5  gcc/te
*** 12324,12408 ****
  9008b4693cb1fe4b406e549765a2cc71  gcc/testsuite/g++.dg/cpp1y/var-templ54.C
  f47aed01d0a8d51c841d31adce366f2f  gcc/testsuite/g++.dg/cpp1y/var-templ55.C
  62a40ed13d8ec5a53669a5c03be0d97a  gcc/testsuite/g++.dg/cpp1y/var-templ56.C
  46f96806c3f041172407dd6ff7943dc8  gcc/testsuite/g++.dg/cpp1y/var-templ6.C
  3c670164f1a7f8f91ef1db2f80526182  gcc/testsuite/g++.dg/cpp1y/var-templ7.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
! 4804988f5ca1de7a49a58e20c70fc457  gcc/testsuite/g++.dg/cpp1y/vla10.C
! 16fc38725d5d3406fffa4c6da4f5df21  gcc/testsuite/g++.dg/cpp1y/vla2.C
  f578ef92ec8a79f6e9dc1a030af56203  gcc/testsuite/g++.dg/cpp1y/vla4.C
  3d4e6365785548d4e5835010e60e49e1  gcc/testsuite/g++.dg/cpp1y/vla5.C
! 0991f484e4d12dc3bf62bad573411bc2  gcc/testsuite/g++.dg/cpp1y/vla6.C
! c76033bace37fe8344dd999290834128  gcc/testsuite/g++.dg/cpp1y/vla7.C
! 2df0c8d477cf83c2d77f93f7a00e04a8  gcc/testsuite/g++.dg/cpp1y/vla8.C
! 12dab84cbb3e4e9a5305d64823bb8d76  gcc/testsuite/g++.dg/cpp1y/vla9.C
! 2d61a926f8b18e6d956d7fbc00b58e8d  gcc/testsuite/g++.dg/cpp1z/abbrev1.C
! 87e28b8d91cdca54118621d517c2f9aa  gcc/testsuite/g++.dg/cpp1z/abbrev2.C
! d694d2cb78fbd00bcc80a50037664c54  gcc/testsuite/g++.dg/cpp1z/aggr-base1.C
  e149ab5ecfa10339d5771953be185fa8  gcc/testsuite/g++.dg/cpp1z/aggr-base1a.C
! e1caaee13ffe58fe99dbb1fbb8a147c0  gcc/testsuite/g++.dg/cpp1z/aggr-base2.C
! 1656f51a85b625064dfb93a9f037a1c1  gcc/testsuite/g++.dg/cpp1z/aggr-base2a.C
! 4842a559cf1bf7797b3ced477d44047b  gcc/testsuite/g++.dg/cpp1z/aggr-base3.C
! ed282f1de5660fa4521bd08c0c9de8cf  gcc/testsuite/g++.dg/cpp1z/aggr-base4.C
! b1ddbc63dd27781c882641ccc72ba6d1  gcc/testsuite/g++.dg/cpp1z/aggr-base5.C
! e3be4a4e1e49632c875947825aac9d32  gcc/testsuite/g++.dg/cpp1z/aggr-base6.C
! 7af1a26c37f429e72e6e96ba816b0f34  gcc/testsuite/g++.dg/cpp1z/aligned-new1.C
! ba97a7fee01e2888fd4b3c986754cda2  gcc/testsuite/g++.dg/cpp1z/aligned-new2.C
! 776374b489673600cfc1b43f1d9d267e  gcc/testsuite/g++.dg/cpp1z/aligned-new3.C
  ef7495e58b04450ecb727d071ddfecfa  gcc/testsuite/g++.dg/cpp1z/aligned-new4.C
  ca10f046e47ea09ba5b87084372f1ce2  gcc/testsuite/g++.dg/cpp1z/aligned-new4a.C
  15779dfebe4d18986ed2044d4ec8287b  gcc/testsuite/g++.dg/cpp1z/aligned-new5.C
  4dbddfffb31fb9d4ab9b40b6ac489d84  gcc/testsuite/g++.dg/cpp1z/aligned-new6.C
! 1957f865b2d8e66095269c8639342132  gcc/testsuite/g++.dg/cpp1z/aligned-new7.C
  ff30eadf611dec50050d08bb1852fd65  gcc/testsuite/g++.dg/cpp1z/aligned-new8.C
! 68f716938002307e7dcda9d5dc357f14  gcc/testsuite/g++.dg/cpp1z/attributes-enum-1.C
! c0f76eabaeee19f702ca129c32355700  gcc/testsuite/g++.dg/cpp1z/attributes-enum-1a.C
! 124fb3a84a8213bf4c06abdb4d0fddeb  gcc/testsuite/g++.dg/cpp1z/bool-increment1.C
! 3091f883aaa3f83f30b0508d18f33cfb  gcc/testsuite/g++.dg/cpp1z/byte1.C
! 7cd768761b21bbd31c39adec105d1ec4  gcc/testsuite/g++.dg/cpp1z/class-deduction1.C
! 790b8c86b3c57869fc8ba34a7b9fd8f3  gcc/testsuite/g++.dg/cpp1z/class-deduction10.C
! 646efdd4f0395f50e7a99259cf16d323  gcc/testsuite/g++.dg/cpp1z/class-deduction11.C
! 032833bce7373e27e9ae2092c797cd78  gcc/testsuite/g++.dg/cpp1z/class-deduction12.C
! 6807c2e327ef340e9eaefb91da8e196c  gcc/testsuite/g++.dg/cpp1z/class-deduction13.C
! 3e437e52c2ff30da25b53e2986b42a7b  gcc/testsuite/g++.dg/cpp1z/class-deduction14.C
! 2c83edb498e5e97a3c224c5a99a04c6d  gcc/testsuite/g++.dg/cpp1z/class-deduction15.C
! a7593be0235860f1775a427e22170924  gcc/testsuite/g++.dg/cpp1z/class-deduction16.C
! 7ecfec721706385854714b5105972194  gcc/testsuite/g++.dg/cpp1z/class-deduction17.C
! d30201af0a985cad70da89c169ce5d39  gcc/testsuite/g++.dg/cpp1z/class-deduction18.C
! 0e8be65b2831b4356d31daf3e1a6ccda  gcc/testsuite/g++.dg/cpp1z/class-deduction19.C
! d9f95e4f12f65a92e0d31476307fd609  gcc/testsuite/g++.dg/cpp1z/class-deduction2.C
! 94f40d0e61f691ab7074fb39bf4213c0  gcc/testsuite/g++.dg/cpp1z/class-deduction20.C
! 255eac985c48b76a354c387e1769d747  gcc/testsuite/g++.dg/cpp1z/class-deduction21.C
! 4426e20c90f8a7b9e148f95050872b41  gcc/testsuite/g++.dg/cpp1z/class-deduction22.C
! 6de84552958702c177e1ea81f519cccc  gcc/testsuite/g++.dg/cpp1z/class-deduction23.C
! 9c221b9e095c44964efcf272822cf23c  gcc/testsuite/g++.dg/cpp1z/class-deduction24.C
! 6b6b7dce16afe7d42916a8e931a61471  gcc/testsuite/g++.dg/cpp1z/class-deduction25.C
! 9f118d64bc915f35897e568330021c5f  gcc/testsuite/g++.dg/cpp1z/class-deduction26.C
! 2f65a590a6039401dda14398ccfe649c  gcc/testsuite/g++.dg/cpp1z/class-deduction27.C
! 273f787fe98ad6802a388349afc6e94c  gcc/testsuite/g++.dg/cpp1z/class-deduction28.C
! 34c7386e4c20687bb2a431dfca7a7463  gcc/testsuite/g++.dg/cpp1z/class-deduction29.C
! eee9f73a962859b6b8a9c3433d0516b1  gcc/testsuite/g++.dg/cpp1z/class-deduction3.C
! 9a5a0fec953f7fab22efe1718ad5f2b6  gcc/testsuite/g++.dg/cpp1z/class-deduction30.C
! 6fe0f5489bbc5254df01399c2b77676b  gcc/testsuite/g++.dg/cpp1z/class-deduction31.C
! d45de29dfc3914c9b1d6ffffb8bd8b99  gcc/testsuite/g++.dg/cpp1z/class-deduction32.C
! 5dff436f8c67777041243a598168c375  gcc/testsuite/g++.dg/cpp1z/class-deduction33.C
! 8309e5a8101ed64d8123c4c7f2b33a25  gcc/testsuite/g++.dg/cpp1z/class-deduction34.C
! cc51737f453e5163caf83cd8196fd539  gcc/testsuite/g++.dg/cpp1z/class-deduction35.C
! e86adbdfc2a88c6fd1414e48d84967e6  gcc/testsuite/g++.dg/cpp1z/class-deduction36.C
! 8aff83a5d4681169998cae7e72736be9  gcc/testsuite/g++.dg/cpp1z/class-deduction38.C
! f8fdfc7dec6e57f80913a999f1028494  gcc/testsuite/g++.dg/cpp1z/class-deduction4.C
! 28091b915d174f79aadbce8f9f2aac08  gcc/testsuite/g++.dg/cpp1z/class-deduction40.C
! 3667d12b987e4941e8e8777d151d7521  gcc/testsuite/g++.dg/cpp1z/class-deduction5.C
! d791376e845f74e3cbe4a5cb5901b290  gcc/testsuite/g++.dg/cpp1z/class-deduction6.C
! 8fa13e275a126cab5828334c0381a23f  gcc/testsuite/g++.dg/cpp1z/class-deduction7.C
! 3e1851805813e2dfccfde4d6edbd9d87  gcc/testsuite/g++.dg/cpp1z/class-deduction8.C
! 25081122404d22b2c035aa2ea1b948b3  gcc/testsuite/g++.dg/cpp1z/class-deduction9.C
  b70f4276933d24cd68ae2e047a954ece  gcc/testsuite/g++.dg/cpp1z/constexpr-if1.C
! b6d2c8a0f6effa43adb2b3c812b242c8  gcc/testsuite/g++.dg/cpp1z/constexpr-if10.C
! df4fdf3872dad139c769015c77a3a509  gcc/testsuite/g++.dg/cpp1z/constexpr-if11.C
! 56fcb4172bdc5b93179f6f6e94b04945  gcc/testsuite/g++.dg/cpp1z/constexpr-if12.C
  2dc8e63803073fb37ce116457bb896f8  gcc/testsuite/g++.dg/cpp1z/constexpr-if2.C
  dd7cc15292a815c35ae2ba8f10f74b83  gcc/testsuite/g++.dg/cpp1z/constexpr-if3.C
  a02c2b6b67d061c35cdb50fa03569637  gcc/testsuite/g++.dg/cpp1z/constexpr-if4.C
  63578861f15440823cca35ea07a0f65f  gcc/testsuite/g++.dg/cpp1z/constexpr-if5.C
--- 12920,13033 ----
  9008b4693cb1fe4b406e549765a2cc71  gcc/testsuite/g++.dg/cpp1y/var-templ54.C
  f47aed01d0a8d51c841d31adce366f2f  gcc/testsuite/g++.dg/cpp1y/var-templ55.C
  62a40ed13d8ec5a53669a5c03be0d97a  gcc/testsuite/g++.dg/cpp1y/var-templ56.C
+ 5dcd01499be513f5cd5662a4a6528fc2  gcc/testsuite/g++.dg/cpp1y/var-templ57.C
+ 51a2667f777cf036c412dece4706f6a2  gcc/testsuite/g++.dg/cpp1y/var-templ58.C
+ 2d80dca3b1754f5129c41c3e12947ca9  gcc/testsuite/g++.dg/cpp1y/var-templ58a.C
+ d02a4d5b691aff1357a5f77cf5774190  gcc/testsuite/g++.dg/cpp1y/var-templ59.C
  46f96806c3f041172407dd6ff7943dc8  gcc/testsuite/g++.dg/cpp1y/var-templ6.C
  3c670164f1a7f8f91ef1db2f80526182  gcc/testsuite/g++.dg/cpp1y/var-templ7.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
! f82f70352e70742cc985b48be0774ebe  gcc/testsuite/g++.dg/cpp1y/vla10.C
! e2f6d00be9a775652e1cdb9a3155981c  gcc/testsuite/g++.dg/cpp1y/vla2.C
  f578ef92ec8a79f6e9dc1a030af56203  gcc/testsuite/g++.dg/cpp1y/vla4.C
  3d4e6365785548d4e5835010e60e49e1  gcc/testsuite/g++.dg/cpp1y/vla5.C
! 4afdbc457b568a33cc23a10e3e847f5b  gcc/testsuite/g++.dg/cpp1y/vla6.C
! 8e58021161b1a211a4a425dac65708b1  gcc/testsuite/g++.dg/cpp1y/vla7.C
! 3f4d64f9b145e0e7a5baaf745f3c0783  gcc/testsuite/g++.dg/cpp1y/vla8.C
! 680fb504e87de1198474240e9f5b0573  gcc/testsuite/g++.dg/cpp1y/vla9.C
! 9dcfc50350e46e8eb28951aeab9f88e7  gcc/testsuite/g++.dg/cpp1z/aggr-base1.C
  e149ab5ecfa10339d5771953be185fa8  gcc/testsuite/g++.dg/cpp1z/aggr-base1a.C
! 6b95b658442ca58a26e0969c1df2ec4b  gcc/testsuite/g++.dg/cpp1z/aggr-base2.C
! ef50bbb4c11914c6ab62d883d9099377  gcc/testsuite/g++.dg/cpp1z/aggr-base2a.C
! d1268092500c38ed9254643995a3c603  gcc/testsuite/g++.dg/cpp1z/aggr-base3.C
! 47ebc10e0900a7f3c3a5ba9f7d2d00f7  gcc/testsuite/g++.dg/cpp1z/aggr-base4.C
! 7452bc52d89e5c766a6d55cf22417a18  gcc/testsuite/g++.dg/cpp1z/aggr-base5.C
! 46609bf5a7d692e0ea71016a54461add  gcc/testsuite/g++.dg/cpp1z/aggr-base6.C
! 35366cd075be843e2cc0c308db8282e3  gcc/testsuite/g++.dg/cpp1z/aligned-new1.C
! e690214edbc75455debe7f454f603dad  gcc/testsuite/g++.dg/cpp1z/aligned-new2.C
! 1d6d9a7a997b26c48483d2162c7910fc  gcc/testsuite/g++.dg/cpp1z/aligned-new3.C
  ef7495e58b04450ecb727d071ddfecfa  gcc/testsuite/g++.dg/cpp1z/aligned-new4.C
  ca10f046e47ea09ba5b87084372f1ce2  gcc/testsuite/g++.dg/cpp1z/aligned-new4a.C
  15779dfebe4d18986ed2044d4ec8287b  gcc/testsuite/g++.dg/cpp1z/aligned-new5.C
  4dbddfffb31fb9d4ab9b40b6ac489d84  gcc/testsuite/g++.dg/cpp1z/aligned-new6.C
! 984181f58a50dbdebdd86b631a1a5465  gcc/testsuite/g++.dg/cpp1z/aligned-new7.C
  ff30eadf611dec50050d08bb1852fd65  gcc/testsuite/g++.dg/cpp1z/aligned-new8.C
! 8913b17e7d688456e46bd351eeb63126  gcc/testsuite/g++.dg/cpp1z/attributes-enum-1.C
! e474313e7bab15f973c71282c2c16e26  gcc/testsuite/g++.dg/cpp1z/attributes-enum-1a.C
! 0a9bef485c12caa5b0da26992683b32c  gcc/testsuite/g++.dg/cpp1z/bool-increment1.C
! 71c1635635e66f9c61cefdeee4bcbe52  gcc/testsuite/g++.dg/cpp1z/byte1.C
! 4f6bf5733bddaf980da87e4d69efe564  gcc/testsuite/g++.dg/cpp1z/byte2.C
! 388df96dc29ecabc705e330036faabb7  gcc/testsuite/g++.dg/cpp1z/class-deduction1.C
! a51729ce0bb52fb7faf21ba959ff55f4  gcc/testsuite/g++.dg/cpp1z/class-deduction10.C
! 9b8fa19f259cff450c3e9d0613d53fff  gcc/testsuite/g++.dg/cpp1z/class-deduction11.C
! 3278a8cafad720c49dd099493ef53224  gcc/testsuite/g++.dg/cpp1z/class-deduction12.C
! d78194c55c6dc57a5e2214572a0e4656  gcc/testsuite/g++.dg/cpp1z/class-deduction13.C
! 6f02b35f3ccac683ed26c71281b493bb  gcc/testsuite/g++.dg/cpp1z/class-deduction14.C
! 134a94d5b2506e21bb2a0b16735ea061  gcc/testsuite/g++.dg/cpp1z/class-deduction15.C
! a2e681529de319ed1dd1a9e291467abc  gcc/testsuite/g++.dg/cpp1z/class-deduction16.C
! 036adf7dafb819862f095bda6bd83a03  gcc/testsuite/g++.dg/cpp1z/class-deduction17.C
! 9b7b411a0ffba894013fc6df10ca5e04  gcc/testsuite/g++.dg/cpp1z/class-deduction18.C
! 96706ecb341b36bb4981665f88c56357  gcc/testsuite/g++.dg/cpp1z/class-deduction19.C
! 0f7c9a9ec7d6fb529e9d02f9ba8ed107  gcc/testsuite/g++.dg/cpp1z/class-deduction2.C
! 19cb31b1c1b282d605e4944351071850  gcc/testsuite/g++.dg/cpp1z/class-deduction20.C
! 1d085d20991618674cfc40775c87d0e5  gcc/testsuite/g++.dg/cpp1z/class-deduction21.C
! 7459360beb2554052e54616be1c767be  gcc/testsuite/g++.dg/cpp1z/class-deduction22.C
! ab48f31e1ac7c0a6d2084a79edbe7e64  gcc/testsuite/g++.dg/cpp1z/class-deduction23.C
! 0ac0cbb8cf17df7ecd1f4dc261252418  gcc/testsuite/g++.dg/cpp1z/class-deduction24.C
! 74e16f19489c884de3dbd88f672c4694  gcc/testsuite/g++.dg/cpp1z/class-deduction25.C
! 25ca591495f09616572e95699535a49c  gcc/testsuite/g++.dg/cpp1z/class-deduction26.C
! df2f9a9363f389555ff95006bb730430  gcc/testsuite/g++.dg/cpp1z/class-deduction27.C
! cef0eddc6383809996fc919e6645a758  gcc/testsuite/g++.dg/cpp1z/class-deduction28.C
! c2d40b066cdb42f2369111ce945dc174  gcc/testsuite/g++.dg/cpp1z/class-deduction29.C
! 39018b94c9a093cbc769e2ec8768caef  gcc/testsuite/g++.dg/cpp1z/class-deduction3.C
! 9697c171a77d3c688c6e6def814e992e  gcc/testsuite/g++.dg/cpp1z/class-deduction30.C
! 051457dd837684062687b8ead47c1646  gcc/testsuite/g++.dg/cpp1z/class-deduction31.C
! 4651491a24ccefba418ec4fcfa842606  gcc/testsuite/g++.dg/cpp1z/class-deduction32.C
! 9e5b49eff4c8e70e39a0060add5e7fc3  gcc/testsuite/g++.dg/cpp1z/class-deduction33.C
! b5aeb9087675d7e02bd17e1ab09f10db  gcc/testsuite/g++.dg/cpp1z/class-deduction34.C
! 527128bf0fd880278ba4389a9e5cc539  gcc/testsuite/g++.dg/cpp1z/class-deduction35.C
! 45b46e813a514d1d36f16fce90ea7888  gcc/testsuite/g++.dg/cpp1z/class-deduction36.C
! 3b4f0517e4a39f2b725f70b4a04b5a82  gcc/testsuite/g++.dg/cpp1z/class-deduction38.C
! b0a009ed6e9cafd516da00e57357dde4  gcc/testsuite/g++.dg/cpp1z/class-deduction39.C
! aa07192431c882aa6a8f656154b08923  gcc/testsuite/g++.dg/cpp1z/class-deduction4.C
! a4adf70618d32b03334fcf4face6dc2c  gcc/testsuite/g++.dg/cpp1z/class-deduction40.C
! 40c2c75863fb9df05d5e131279107a4c  gcc/testsuite/g++.dg/cpp1z/class-deduction41.C
! 66d783b12d79e85e1c546531e8dee525  gcc/testsuite/g++.dg/cpp1z/class-deduction42.C
! c88095e33b1ebd074c4b14685ed4138f  gcc/testsuite/g++.dg/cpp1z/class-deduction43.C
! 34c453dd231fb56b924cfed76df28559  gcc/testsuite/g++.dg/cpp1z/class-deduction44.C
! 079367cd96344652c5126770f1e80c74  gcc/testsuite/g++.dg/cpp1z/class-deduction45.C
! 681f66fbb296b296d26ea7653cd14086  gcc/testsuite/g++.dg/cpp1z/class-deduction46.C
! 289cb125cb6fac3235f631d21e0318a8  gcc/testsuite/g++.dg/cpp1z/class-deduction47.C
! 13918e6caae5f4ae611d44e55f2fefe2  gcc/testsuite/g++.dg/cpp1z/class-deduction48.C
! d7a266361d7550d868f92df5cece8c62  gcc/testsuite/g++.dg/cpp1z/class-deduction49.C
! 27cc5b6b2c347b1f67ee3789864ee799  gcc/testsuite/g++.dg/cpp1z/class-deduction5.C
! 2549753c3429a9203a9489db4ca7b4ba  gcc/testsuite/g++.dg/cpp1z/class-deduction50.C
! f1683a9e2fc77cfa2ecf5b1a917b5bff  gcc/testsuite/g++.dg/cpp1z/class-deduction51.C
! e7263966dbf9182442f935b5f1cbf617  gcc/testsuite/g++.dg/cpp1z/class-deduction52.C
! 69a873359fe2d745f88b120b41848709  gcc/testsuite/g++.dg/cpp1z/class-deduction53.C
! 22015d7dca3e418d189fb05288811fe5  gcc/testsuite/g++.dg/cpp1z/class-deduction54.C
! 61268c3079f0b6d7fae43d7fbcb00d0a  gcc/testsuite/g++.dg/cpp1z/class-deduction6.C
! b0ba58b3ee1aac0f4695ad92e7e28a32  gcc/testsuite/g++.dg/cpp1z/class-deduction7.C
! a9583f9d358ed621849b8a8cca70fd78  gcc/testsuite/g++.dg/cpp1z/class-deduction8.C
! 8957e06a84199b978d95b6726d556763  gcc/testsuite/g++.dg/cpp1z/class-deduction9.C
! a88eeaf31ef8a3766654ae2017698f3a  gcc/testsuite/g++.dg/cpp1z/constexpr-83692.C
! caf699efc26c388e3126ad559c847c02  gcc/testsuite/g++.dg/cpp1z/constexpr-84684.C
  b70f4276933d24cd68ae2e047a954ece  gcc/testsuite/g++.dg/cpp1z/constexpr-if1.C
! 6a681be355022ba999aaa30145307b84  gcc/testsuite/g++.dg/cpp1z/constexpr-if10.C
! ef2fd47c85bbcb660e752cb5d81a058a  gcc/testsuite/g++.dg/cpp1z/constexpr-if11.C
! 977d7b67e3917e18ecdb8938ff1c14cc  gcc/testsuite/g++.dg/cpp1z/constexpr-if12.C
! f41bfbd68883c6d9701aad2287e13dd1  gcc/testsuite/g++.dg/cpp1z/constexpr-if13.C
! 1e3caf84c541c30c533653226faa8834  gcc/testsuite/g++.dg/cpp1z/constexpr-if14.C
! 3810e4ee0ea0f14d611dd0db1a2ac837  gcc/testsuite/g++.dg/cpp1z/constexpr-if15.C
! 7fe96a41f415de168b3d989e62559528  gcc/testsuite/g++.dg/cpp1z/constexpr-if16.C
! 8898a0169cf7b9c0388250fac8b7a25e  gcc/testsuite/g++.dg/cpp1z/constexpr-if17.C
! 62b0eb7b3e8d5e1e7c3687658b7c23b9  gcc/testsuite/g++.dg/cpp1z/constexpr-if18.C
! a352de0d529cce8c6fefe6cb3c538224  gcc/testsuite/g++.dg/cpp1z/constexpr-if19.C
  2dc8e63803073fb37ce116457bb896f8  gcc/testsuite/g++.dg/cpp1z/constexpr-if2.C
+ 779ea8a24af910440a05378cd3a5023b  gcc/testsuite/g++.dg/cpp1z/constexpr-if20.C
+ 9c7d1992447bded1d03df7d86e9a7fb7  gcc/testsuite/g++.dg/cpp1z/constexpr-if21.C
  dd7cc15292a815c35ae2ba8f10f74b83  gcc/testsuite/g++.dg/cpp1z/constexpr-if3.C
  a02c2b6b67d061c35cdb50fa03569637  gcc/testsuite/g++.dg/cpp1z/constexpr-if4.C
  63578861f15440823cca35ea07a0f65f  gcc/testsuite/g++.dg/cpp1z/constexpr-if5.C
*************** dd3fed7a614d71be04ab2475cca10561  gcc/te
*** 12410,12487 ****
  4a86c6469ec58cb4335c35ec53b0ac26  gcc/testsuite/g++.dg/cpp1z/constexpr-if7.C
  47362a3bc4d5e9b2c3dfa25cfd8f6c3d  gcc/testsuite/g++.dg/cpp1z/constexpr-if8.C
  774f8c49c808e1931407ed969942bde2  gcc/testsuite/g++.dg/cpp1z/constexpr-if9.C
! 2a4edadf40a69bb5320c88cdd8c58c31  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda1.C
! 27e39139d24f7c55bca0046e9dbbf0fb  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda10.C
! a71fc75b45080987241b28ab4683572e  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda11.C
! c1ef33459902e42cd165b7eb63d19fe6  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda12.C
! ff76ead5dbe779d603923b1aa5d1b43c  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda13.C
  c249422d923bfc189a9579b50b33bfe4  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda14.C
! 491235f42bd798b8e3c60fb2eccf6388  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda15.C
! 5e07a7746510ad907fa95618828e141b  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda16.C
! 03a8e9063346531269a71975339c3f32  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda2.C
! f890981653d131fc0b72c0309a9a22a2  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda3.C
! cdc6495b4d03cc385cdccc46ec2c57ea  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda4.C
! df7b6693f80cc359b58c9865bda8e739  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda5.C
! c1f4d3a54bd146545d4c8030e16b5e06  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda6.C
! e7764e1ce18fffdfa1f503babdc19dc1  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda7.C
! efbbb53ecbb605f5a50202d0813f9d89  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda8.C
! 81291f3416c20e5fa00d5fc5d8a777fb  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda9.C
! 98b1106ed209b91da77baabfe32a0221  gcc/testsuite/g++.dg/cpp1z/cplusplus.C
! 7d7a3a96969595696f9ac8a41581e13f  gcc/testsuite/g++.dg/cpp1z/decomp-bitfield1.C
! 5a342aee9595ee7e0002406be439a897  gcc/testsuite/g++.dg/cpp1z/decomp-constexpr1.C
! 0907046abd4eeb3337565765eec941bf  gcc/testsuite/g++.dg/cpp1z/decomp1.C
! 31250390e49779e31cbb8ea9125a2de9  gcc/testsuite/g++.dg/cpp1z/decomp10.C
! 57f93ca9cbdea95f7230f5a5e0f0c972  gcc/testsuite/g++.dg/cpp1z/decomp11.C
! eb8f6f6cb3f16d3b3e4fd69222e115dc  gcc/testsuite/g++.dg/cpp1z/decomp12.C
! 2c966c0ab01d199b88a37c9e6ff47082  gcc/testsuite/g++.dg/cpp1z/decomp13.C
! 91148eed47eafcbee96bec8a4760f65f  gcc/testsuite/g++.dg/cpp1z/decomp14.C
! 569bd66b714127c80467a01ac64b6190  gcc/testsuite/g++.dg/cpp1z/decomp15.C
! 4d422cbe9376704ce9c0e728414c2cbb  gcc/testsuite/g++.dg/cpp1z/decomp16.C
! f08ab10d9e372d02865474f62f358aad  gcc/testsuite/g++.dg/cpp1z/decomp17.C
! 2e9f86c6c25078cf000e4b5ceb830e8c  gcc/testsuite/g++.dg/cpp1z/decomp18.C
! 54670cce93e1b3e445f0c53280937629  gcc/testsuite/g++.dg/cpp1z/decomp19.C
! 55d0ea4015147a9771a7617917f1b2db  gcc/testsuite/g++.dg/cpp1z/decomp2.C
! 44d603bb52daf7398135ace1d46fec11  gcc/testsuite/g++.dg/cpp1z/decomp20.C
! c2d751bdf7b136ae17e81690ac97ed59  gcc/testsuite/g++.dg/cpp1z/decomp21.C
! 9bf563184ca1786b134bdcacd94040a7  gcc/testsuite/g++.dg/cpp1z/decomp22.C
! 791ddfe631aa3a5950c281b004d106ef  gcc/testsuite/g++.dg/cpp1z/decomp23.C
! 7c8d8c033d0fb8beb162236afe2c3262  gcc/testsuite/g++.dg/cpp1z/decomp24.C
! 151d51316b8068785df80f8cdf240345  gcc/testsuite/g++.dg/cpp1z/decomp25.C
! 7580a0d414ed44475e618679c3d78713  gcc/testsuite/g++.dg/cpp1z/decomp26.C
! 83b44fd4caa3ffe9b3888fdd7e2e6951  gcc/testsuite/g++.dg/cpp1z/decomp27.C
! fc5576294193885316afcf14620177fb  gcc/testsuite/g++.dg/cpp1z/decomp28.C
! 92d23ab351de03cd847e2aad1f190207  gcc/testsuite/g++.dg/cpp1z/decomp3.C
! c86c55c9032280f9cfb72b179e788a3b  gcc/testsuite/g++.dg/cpp1z/decomp30.C
! d1091dea4099fea8102a725df71218b5  gcc/testsuite/g++.dg/cpp1z/decomp31.C
! 91635ccf848dc8ca3989cfc2ddc2b4ef  gcc/testsuite/g++.dg/cpp1z/decomp32.C
! 181a153149999adbeb8f1bf93ee23049  gcc/testsuite/g++.dg/cpp1z/decomp33.C
! f79ee70d40dffe40ad6203cc06b4e714  gcc/testsuite/g++.dg/cpp1z/decomp34.C
! 3d58d019b7f76fa2253655658f40d9d6  gcc/testsuite/g++.dg/cpp1z/decomp4.C
! f98a9feae4ead80bf6fea589d0978072  gcc/testsuite/g++.dg/cpp1z/decomp5.C
! 94932c496662eac8e1fca1974af2185e  gcc/testsuite/g++.dg/cpp1z/decomp6.C
! 6d3336af679ac74615e17a984a46d36e  gcc/testsuite/g++.dg/cpp1z/decomp7.C
! 40a5735da2979ca0c51c734812daacc9  gcc/testsuite/g++.dg/cpp1z/decomp8.C
! b9eb638ba921c83a5b40a1c0fe229796  gcc/testsuite/g++.dg/cpp1z/decomp9.C
! ffe44a45e298c0e32a10bc0c78a8aa35  gcc/testsuite/g++.dg/cpp1z/direct-enum-init1.C
! f387d749fd22d2b2a196632ba393e6f8  gcc/testsuite/g++.dg/cpp1z/elide1.C
  6b57844cae97efac146accbaaa00449b  gcc/testsuite/g++.dg/cpp1z/elide2.C
! 673fa8a5ae15813ce8d3af3d664eeea1  gcc/testsuite/g++.dg/cpp1z/eval-order2.C
! cdeec54a27247a22e5efa65e70d7de00  gcc/testsuite/g++.dg/cpp1z/eval-order3.C
  6d8d378fedaf65b4cb89952060799280  gcc/testsuite/g++.dg/cpp1z/eval-order4.C
! 794ee250f2c5b1f7f592eb1c6095ba9e  gcc/testsuite/g++.dg/cpp1z/fallthrough1.C
! c1e2f8558bb2ecb4f797f51488d5dc75  gcc/testsuite/g++.dg/cpp1z/feat-cxx1z.C
! f6bf72fc22cf2e0b2625b0da029798a4  gcc/testsuite/g++.dg/cpp1z/fold-ice1.C
! 5bd148af998c8fa056675b86fcbceddf  gcc/testsuite/g++.dg/cpp1z/fold-mangle.C
! 31887e84574fe8c28417b43ab6292361  gcc/testsuite/g++.dg/cpp1z/fold1.C
! ec8f049d9f6e3cc6a0a94adeaf70a315  gcc/testsuite/g++.dg/cpp1z/fold2.C
! 402016faa295175165f8ebd8f741b826  gcc/testsuite/g++.dg/cpp1z/fold3.C
! f838f6c4b21ffc91f013e7b0603640e5  gcc/testsuite/g++.dg/cpp1z/fold4.C
! 5d3098286776a794fe39a1e06b494c92  gcc/testsuite/g++.dg/cpp1z/fold5.C
! 0cebc243d69971edb9b597588ff3bec9  gcc/testsuite/g++.dg/cpp1z/fold6.C
! f46f698064594ac39d762f37d8678000  gcc/testsuite/g++.dg/cpp1z/fold7.C
! 8e1edb916ef398b09b46ebfa9ae72196  gcc/testsuite/g++.dg/cpp1z/fold7a.C
! f68f5f4737ac98a847f76c9b8b4332c6  gcc/testsuite/g++.dg/cpp1z/fold8.C
! 55971c0361f602939a2017ecda3a6148  gcc/testsuite/g++.dg/cpp1z/fold9.C
  fade45a91157c646e6940a215501f1c9  gcc/testsuite/g++.dg/cpp1z/gen-attrs1.C
  9ddc49873b16b2c3950e26d04616329e  gcc/testsuite/g++.dg/cpp1z/has-unique-obj-representations1.C
  0b6df99ef4c5cde87675e86fff8ee1b9  gcc/testsuite/g++.dg/cpp1z/has-unique-obj-representations2.C
--- 13035,13134 ----
  4a86c6469ec58cb4335c35ec53b0ac26  gcc/testsuite/g++.dg/cpp1z/constexpr-if7.C
  47362a3bc4d5e9b2c3dfa25cfd8f6c3d  gcc/testsuite/g++.dg/cpp1z/constexpr-if8.C
  774f8c49c808e1931407ed969942bde2  gcc/testsuite/g++.dg/cpp1z/constexpr-if9.C
! a3fefbe880fb48b7bfa7139d2250e7d2  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda1.C
! 33bfe900912c63542b5f08775ec24f7b  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda10.C
! 4131ba089f9a23ac276c4b609cba3fce  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda11.C
! 943f6f258469d45f2472837df51fb9f4  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda12.C
! c12c03082dec72eceb42d0b4e5fa262f  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda13.C
  c249422d923bfc189a9579b50b33bfe4  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda14.C
! 0fceafd0dd7ab07c6de0a374d033e97c  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda15.C
! 6b919b4bc8eff80c3ad88bbd2928eb21  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda16.C
! 66ca2b8c516a0af4a9b9f3a7d7560690  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda17.C
! 20bf22cccf56f7ec6883598a92af3f02  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda18.C
! 04496131ad2ed6aa6a6de690a437b0cc  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda19.C
! 2bb0dd2aac4de456d29bb08aaee75db3  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda2.C
! aee3fc565742135f774d7e3e6370e6dc  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda20.C
! 67b42bcb57649e412852809762a049d4  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda21.C
! f553da6006f8912f7476ae4a29c88839  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda3.C
! 7ead2356ec8abee16155b198fb017164  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda4.C
! c7e2fe47c521164eaf234ff1d633bce5  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda5.C
! 74dff09169130326eaaa891162d5f119  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda6.C
! 138564a7c1813c9929ae7bbce2013309  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda7.C
! 073486ee94d8f83b589ae8957aeeff13  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda8.C
! 379aec434f94a1fd64e6acacd5c83003  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda9.C
! d31e52fe58abe5f111d69994edcf864b  gcc/testsuite/g++.dg/cpp1z/cplusplus.C
! ba5e9d24245e572b3aebcc78d67fa0ac  gcc/testsuite/g++.dg/cpp1z/cplusplus_1z.C
! 385434d6897c701a7a284d714a678f6d  gcc/testsuite/g++.dg/cpp1z/decomp-bitfield1.C
! 760eae0f95a3d414b431beb7f61db061  gcc/testsuite/g++.dg/cpp1z/decomp-constexpr1.C
! 2de75216ee9d6467b8caa151da892d3f  gcc/testsuite/g++.dg/cpp1z/decomp-lambda1.C
! 84bc152455f2541db49df06bc811b1f3  gcc/testsuite/g++.dg/cpp1z/decomp1.C
! 8f1b7ca0d31a2caa088aa7a9a5396f62  gcc/testsuite/g++.dg/cpp1z/decomp10.C
! 2a8d566dcdba46835545766b1ad7cbf5  gcc/testsuite/g++.dg/cpp1z/decomp11.C
! b55b36504d45b060064d0e938c2e2c70  gcc/testsuite/g++.dg/cpp1z/decomp12.C
! 3fceb1dad7da2cc8d70fe589c21d3987  gcc/testsuite/g++.dg/cpp1z/decomp13.C
! 72b6de75b1c8712c69b2d76eab343f88  gcc/testsuite/g++.dg/cpp1z/decomp14.C
! 02d550aa7e970a6b0c29b524cfd93a6b  gcc/testsuite/g++.dg/cpp1z/decomp15.C
! 002bc6b67a688b3dd0419fe6ea5181d1  gcc/testsuite/g++.dg/cpp1z/decomp16.C
! 5dc31ffe8c1dcd10b0ff8e6accb9abae  gcc/testsuite/g++.dg/cpp1z/decomp17.C
! dcc3da5b7257635a1066ddf60a82414c  gcc/testsuite/g++.dg/cpp1z/decomp18.C
! 3a83541c5c9cc3f15c6c2a174976bc66  gcc/testsuite/g++.dg/cpp1z/decomp19.C
! 074c2dba7fea0aad8a00c8923b6357d7  gcc/testsuite/g++.dg/cpp1z/decomp2.C
! 48e759bd7e84b0056f216e8f4bf17bc5  gcc/testsuite/g++.dg/cpp1z/decomp20.C
! 8fcf1a57e63d3ec8c244ecb10ebb4427  gcc/testsuite/g++.dg/cpp1z/decomp21.C
! 6717adfcd2e5fdff7fade7bec61a0c33  gcc/testsuite/g++.dg/cpp1z/decomp22.C
! 74471be6dd17a9a40b6ed5347c70eafd  gcc/testsuite/g++.dg/cpp1z/decomp23.C
! 5acfab0241c9bfdfc7bfe8c86f3411ff  gcc/testsuite/g++.dg/cpp1z/decomp24.C
! b1566ae83044f7544348c6d9cf9042ac  gcc/testsuite/g++.dg/cpp1z/decomp25.C
! b4ce61356e5a800bbe8625a2fcfb6c47  gcc/testsuite/g++.dg/cpp1z/decomp26.C
! bc6e8df36276546021826e5b43d3830a  gcc/testsuite/g++.dg/cpp1z/decomp27.C
! d169701ab44605d3af4e8903c4fcbb83  gcc/testsuite/g++.dg/cpp1z/decomp28.C
! 29a58537889ee28cb7abb41e21f73496  gcc/testsuite/g++.dg/cpp1z/decomp29.C
! bf788bccdf7b4f82fd9b25cd59f4b184  gcc/testsuite/g++.dg/cpp1z/decomp3.C
! 09f8b34b5abbf286e87fc0adf44407cb  gcc/testsuite/g++.dg/cpp1z/decomp30.C
! 276d2090ec892a3c8ac250318230fe0a  gcc/testsuite/g++.dg/cpp1z/decomp31.C
! cb0c2e23c983029bef65f71444baf22a  gcc/testsuite/g++.dg/cpp1z/decomp32.C
! d8c2f79ead6e45085eeacf1de30df780  gcc/testsuite/g++.dg/cpp1z/decomp33.C
! f9ec1fdcaaff771e6753dd6b6d909db8  gcc/testsuite/g++.dg/cpp1z/decomp34.C
! ba06c8a3bf8f2e52f493aceba693bb93  gcc/testsuite/g++.dg/cpp1z/decomp35.C
! 9a1493475a47a1652d3c7e30fe570be4  gcc/testsuite/g++.dg/cpp1z/decomp36.C
! a0b1b80cd241f9f881d8620db4841d7b  gcc/testsuite/g++.dg/cpp1z/decomp37.C
! 394e261e46f25de0d0959a6e07772804  gcc/testsuite/g++.dg/cpp1z/decomp38.C
! e0e8000ecd4d352d72b4c6f2f4c59fda  gcc/testsuite/g++.dg/cpp1z/decomp39.C
! b42c588be11716210f779f29348702f3  gcc/testsuite/g++.dg/cpp1z/decomp4.C
! 162fa9c14d9ce3d85a09063f499e7a61  gcc/testsuite/g++.dg/cpp1z/decomp40.C
! 33d1997c5ded9a3233aea09723699851  gcc/testsuite/g++.dg/cpp1z/decomp41.C
! e0ac003400b6f2cd563ab1868956bf22  gcc/testsuite/g++.dg/cpp1z/decomp42.C
! a18b7478f644ae247581774c061bb7fd  gcc/testsuite/g++.dg/cpp1z/decomp43.C
! e9c7fbaf7f29d339a6196f6a2f1af9b4  gcc/testsuite/g++.dg/cpp1z/decomp44.C
! f87d01b79438c980c4a021d7024c707c  gcc/testsuite/g++.dg/cpp1z/decomp45.C
! af1e704cf45a12bb8c7e2865e6b7debc  gcc/testsuite/g++.dg/cpp1z/decomp5.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
! dbab0c4eff2fbaef0e4bdad34d106dbe  gcc/testsuite/g++.dg/cpp1z/decomp9.C
! cc9d33d5f8ef079bb7d667ee06e73fda  gcc/testsuite/g++.dg/cpp1z/direct-enum-init1.C
! bb80552b47c4d46b3400512a6ca45bad  gcc/testsuite/g++.dg/cpp1z/dr393.C
! 1b8592430befd78c097be9ed5b7a3f21  gcc/testsuite/g++.dg/cpp1z/elide1.C
  6b57844cae97efac146accbaaa00449b  gcc/testsuite/g++.dg/cpp1z/elide2.C
! bafa3ed0da0c14fc9337428032934f0f  gcc/testsuite/g++.dg/cpp1z/elide3.C
! 6445e93e901862c51fb69c4ea7a666f0  gcc/testsuite/g++.dg/cpp1z/eval-order2.C
! 972d2af3fffd0f9c742c7b6e92b1a61c  gcc/testsuite/g++.dg/cpp1z/eval-order3.C
  6d8d378fedaf65b4cb89952060799280  gcc/testsuite/g++.dg/cpp1z/eval-order4.C
! 651c38ec103541212cf0b619936c5236  gcc/testsuite/g++.dg/cpp1z/fallthrough1.C
! 3fdc5195ae72bfd57d4b7026dbe9766b  gcc/testsuite/g++.dg/cpp1z/feat-cxx1z.C
! 2758f3317d6a6567b51f32f559f26c6d  gcc/testsuite/g++.dg/cpp1z/fold-ice1.C
! a93e4e8f8071a336f43698a3b75b695d  gcc/testsuite/g++.dg/cpp1z/fold-lambda.C
! 84fe300be5af6e523e86a9d048f2a272  gcc/testsuite/g++.dg/cpp1z/fold-mangle.C
! 54e23ba84623ce3381ec34485124e8d7  gcc/testsuite/g++.dg/cpp1z/fold1.C
! 55994e6d04d31ccc2a8ae8e3882e4942  gcc/testsuite/g++.dg/cpp1z/fold2.C
! 0fb9d6676d02877e497b21293e4f788f  gcc/testsuite/g++.dg/cpp1z/fold3.C
! 9e6d7ed50960e25ae16efdc0b823f537  gcc/testsuite/g++.dg/cpp1z/fold4.C
! efd0a9cc44fe0ceb7d84ee3bef5c3930  gcc/testsuite/g++.dg/cpp1z/fold5.C
! 79845f69279d7dd085ef615caf9f134c  gcc/testsuite/g++.dg/cpp1z/fold6.C
! 9ba4989f7bde174c1cd73743bae12428  gcc/testsuite/g++.dg/cpp1z/fold7.C
! d5097890520de2a85ebd837650f33a25  gcc/testsuite/g++.dg/cpp1z/fold7a.C
! cfa28eea7f6b8bc9be669d33118f6138  gcc/testsuite/g++.dg/cpp1z/fold8.C
! 6a9038d7378772d262f0f794c889b4f8  gcc/testsuite/g++.dg/cpp1z/fold9.C
  fade45a91157c646e6940a215501f1c9  gcc/testsuite/g++.dg/cpp1z/gen-attrs1.C
  9ddc49873b16b2c3950e26d04616329e  gcc/testsuite/g++.dg/cpp1z/has-unique-obj-representations1.C
  0b6df99ef4c5cde87675e86fff8ee1b9  gcc/testsuite/g++.dg/cpp1z/has-unique-obj-representations2.C
*************** effb1d8f526c3097004c94008e207544  gcc/te
*** 12503,12527 ****
  f69ee0a615bde7dfd06a3b48e0303b4a  gcc/testsuite/g++.dg/cpp1z/inh-ctor35a.C
  d95a7954c2fb5882e812dea5447bc8e2  gcc/testsuite/g++.dg/cpp1z/inh-ctor36.C
  e00bd522f82d2142164143e052a19333  gcc/testsuite/g++.dg/cpp1z/inh-ctor37.C
! 39b560dfa035bf7b634e086850dc401b  gcc/testsuite/g++.dg/cpp1z/inh-ctor38.C
  73bc70a4a9270cd9a335fe4c011dfa67  gcc/testsuite/g++.dg/cpp1z/init-statement1.C
! 70237dd5f262d78110ecadc73c173f6e  gcc/testsuite/g++.dg/cpp1z/init-statement2.C
! 7efe39a7622ac59c0b25cf4901ff2c83  gcc/testsuite/g++.dg/cpp1z/init-statement3.C
! 6e77632fbf4af44c8d41ebb3d3e7a0fc  gcc/testsuite/g++.dg/cpp1z/init-statement4.C
! af1a843a892edf7027d051f01973d9ee  gcc/testsuite/g++.dg/cpp1z/init-statement5.C
! eab6e9e33bf78069d20708acceeefa0f  gcc/testsuite/g++.dg/cpp1z/init-statement6.C
! a79c9a92f7cccc19423b8c95166e5e3d  gcc/testsuite/g++.dg/cpp1z/init-statement7.C
! 7e4fb6b6cf4b28fbbeddb0d52d464f7c  gcc/testsuite/g++.dg/cpp1z/init-statement8.C
! d986891cdcec1b4f21ef2a3a1c8a75fb  gcc/testsuite/g++.dg/cpp1z/init-statement9.C
! 83923be61f4b3f6edc5a9d842e98af58  gcc/testsuite/g++.dg/cpp1z/inline-var1.C
  5fdda464ad6962839138592830f7ad8b  gcc/testsuite/g++.dg/cpp1z/inline-var1.h
! 0e78f877b2403a6e51ebb111e491464f  gcc/testsuite/g++.dg/cpp1z/inline-var1a.C
! 606b3991d450b3a2b2c4b84694446b2e  gcc/testsuite/g++.dg/cpp1z/inline-var2.C
  e087f098ba0891b5b8c20970b5e1f9a3  gcc/testsuite/g++.dg/cpp1z/inline-var3.C
  0e7def4e0e7458614022b79a25311135  gcc/testsuite/g++.dg/cpp1z/lambda-inherit1.C
! 61e377cc1c9c09c3b465bffd64cf0d3f  gcc/testsuite/g++.dg/cpp1z/lambda-this1.C
  609eb26dcf3d0a8892bb6850060fed51  gcc/testsuite/g++.dg/cpp1z/lambda-this2.C
! 3ea0673f11a85bc82c752fdebff48865  gcc/testsuite/g++.dg/cpp1z/lambda-this3.C
  5e200a2d5bf3f215cbed7959057efae1  gcc/testsuite/g++.dg/cpp1z/launder1.C
  53bc478df6abc05a4afccaa39805cab4  gcc/testsuite/g++.dg/cpp1z/launder2.C
  ac1986fd8c7fe4bed9f3610b5c780124  gcc/testsuite/g++.dg/cpp1z/launder3.C
--- 13150,13176 ----
  f69ee0a615bde7dfd06a3b48e0303b4a  gcc/testsuite/g++.dg/cpp1z/inh-ctor35a.C
  d95a7954c2fb5882e812dea5447bc8e2  gcc/testsuite/g++.dg/cpp1z/inh-ctor36.C
  e00bd522f82d2142164143e052a19333  gcc/testsuite/g++.dg/cpp1z/inh-ctor37.C
! be0b9dc11980180485123e93ea184fee  gcc/testsuite/g++.dg/cpp1z/inh-ctor38.C
  73bc70a4a9270cd9a335fe4c011dfa67  gcc/testsuite/g++.dg/cpp1z/init-statement1.C
! bfb9c812ca9e6b9288d2aaf0473dee98  gcc/testsuite/g++.dg/cpp1z/init-statement2.C
! 3bfed0bf20000a25d4f5f93bf6a96630  gcc/testsuite/g++.dg/cpp1z/init-statement3.C
! 572df536ded95c415545d04aee8c5958  gcc/testsuite/g++.dg/cpp1z/init-statement4.C
! 05e00430d3151c05eb55d5e227e9e068  gcc/testsuite/g++.dg/cpp1z/init-statement5.C
! 890930640430d442d5df20bc4b9f8303  gcc/testsuite/g++.dg/cpp1z/init-statement6.C
! 48f5210d46ea77371344bd4773925427  gcc/testsuite/g++.dg/cpp1z/init-statement7.C
! dcbd7ddf25d83a56d67276817547fa5f  gcc/testsuite/g++.dg/cpp1z/init-statement8.C
! b1ad198a7406b907c64499cd029697d8  gcc/testsuite/g++.dg/cpp1z/init-statement9.C
! 7132ee7ff4884f3b3e5a1a128f3ad84c  gcc/testsuite/g++.dg/cpp1z/inline-var1.C
  5fdda464ad6962839138592830f7ad8b  gcc/testsuite/g++.dg/cpp1z/inline-var1.h
! 5ac7f38c684d35de9fb5d02338f6e08c  gcc/testsuite/g++.dg/cpp1z/inline-var1a.C
! 7cb7e5cbc212cca707d142d97c9b95d1  gcc/testsuite/g++.dg/cpp1z/inline-var2.C
  e087f098ba0891b5b8c20970b5e1f9a3  gcc/testsuite/g++.dg/cpp1z/inline-var3.C
+ e32ed1e5e30f242801e2dce55e0d59d5  gcc/testsuite/g++.dg/cpp1z/inline-var4.C
+ 1921ffb3bfdded5b9f5e2991397818f9  gcc/testsuite/g++.dg/cpp1z/lambda-__func__.C
  0e7def4e0e7458614022b79a25311135  gcc/testsuite/g++.dg/cpp1z/lambda-inherit1.C
! af889024357d1e759a5f6936d5b50828  gcc/testsuite/g++.dg/cpp1z/lambda-this1.C
  609eb26dcf3d0a8892bb6850060fed51  gcc/testsuite/g++.dg/cpp1z/lambda-this2.C
! bbb4662dce77c2d79808b1fe37930fb4  gcc/testsuite/g++.dg/cpp1z/lambda-this3.C
  5e200a2d5bf3f215cbed7959057efae1  gcc/testsuite/g++.dg/cpp1z/launder1.C
  53bc478df6abc05a4afccaa39805cab4  gcc/testsuite/g++.dg/cpp1z/launder2.C
  ac1986fd8c7fe4bed9f3610b5c780124  gcc/testsuite/g++.dg/cpp1z/launder3.C
*************** bf2c1740cfc229b7a47742a39c42151b  gcc/te
*** 12532,12599 ****
  e0b73494f7b91982a1836c4e948f3eea  gcc/testsuite/g++.dg/cpp1z/launder6.C
  3a812eb8b588d2b291e6a6ba0289d8b3  gcc/testsuite/g++.dg/cpp1z/launder6.cc
  fc7418031e26a28172ef21ddc7c912c4  gcc/testsuite/g++.dg/cpp1z/launder6.h
  9dcadfa9d20011f3e066495703f8c81a  gcc/testsuite/g++.dg/cpp1z/maybe_unused1.C
! e0309339d9cc8a24acb2c60a93ceef26  gcc/testsuite/g++.dg/cpp1z/namespace-attribs.C
! 66309e5c6cf29618dbd8d7539e8d8d47  gcc/testsuite/g++.dg/cpp1z/nested-namespace-def1.C
  4470f18a10da3760c7723a622fd0befa  gcc/testsuite/g++.dg/cpp1z/nested-namespace-def2.C
  db6d80bc5f29d89b66dc0f6ca5cdfd89  gcc/testsuite/g++.dg/cpp1z/nested-namespace-def3.C
  9cc897dec6c8c32e56bf70ab8cf299d0  gcc/testsuite/g++.dg/cpp1z/nodiscard1.C
  2def7bc32a45c8e255ae51bd62878f9d  gcc/testsuite/g++.dg/cpp1z/nodiscard2.C
! 819f987bf1f0e21e6815c4a11cb4028e  gcc/testsuite/g++.dg/cpp1z/nodiscard3.C
  83dfccee6bbfeb66341cd2d47be20334  gcc/testsuite/g++.dg/cpp1z/nodiscard4.C
! 5f4a7312e4f99c41ac8b2e87e1d208d0  gcc/testsuite/g++.dg/cpp1z/noexcept-type1.C
  8fbb465fc69c13a4894d2eb47d00e941  gcc/testsuite/g++.dg/cpp1z/noexcept-type11.C
  1caccdf4e16515c79981341c1b7a9d86  gcc/testsuite/g++.dg/cpp1z/noexcept-type11a.C
! 6afddac8331cf783b1c0f09cd30e0458  gcc/testsuite/g++.dg/cpp1z/noexcept-type12.C
! f87faeb2982523eb21d5a76f834e642b  gcc/testsuite/g++.dg/cpp1z/noexcept-type13.C
  35cd663d7fd0b608edfe71468072da31  gcc/testsuite/g++.dg/cpp1z/noexcept-type14.C
  c97d9f51dd4c26b3ec2425a165a6310d  gcc/testsuite/g++.dg/cpp1z/noexcept-type15.C
! a57f9fa4a6d53699eb96b792afff1ac8  gcc/testsuite/g++.dg/cpp1z/noexcept-type16.C
! 8fbde3d440dd8be42092f9ad3ebda48d  gcc/testsuite/g++.dg/cpp1z/noexcept-type17.C
! 14281105c789c8c4ade960f8b6416e9d  gcc/testsuite/g++.dg/cpp1z/noexcept-type2.C
! 9ca1a972213d8d43ce70d96650351299  gcc/testsuite/g++.dg/cpp1z/noexcept-type3.C
! cf63743589e80c4e4a015c49bce3ebd0  gcc/testsuite/g++.dg/cpp1z/noexcept-type4.C
! 39ff0198cba3126bc47b9d190cae18f5  gcc/testsuite/g++.dg/cpp1z/noexcept-type5.C
! 89aefac48a05f2fd7f319a7a4975ae9b  gcc/testsuite/g++.dg/cpp1z/noexcept-type6.C
! ca82508c6b0812efd86161c2593edc37  gcc/testsuite/g++.dg/cpp1z/noexcept-type7.C
! 1bb5b145f3980b84315d44d5be6ab5c8  gcc/testsuite/g++.dg/cpp1z/noexcept-type8.C
! d5dd733c77f5f8286892d69dbc47be6e  gcc/testsuite/g++.dg/cpp1z/noexcept-type9.C
! 98b99e11c5307773ec9a5a8e6c317678  gcc/testsuite/g++.dg/cpp1z/nontype-auto1.C
! 72447efb2979475911485537f504946a  gcc/testsuite/g++.dg/cpp1z/nontype-auto10.C
  dc0a0df7a781ac72bdcb6003f2c5b858  gcc/testsuite/g++.dg/cpp1z/nontype-auto13.C
! 21927ecccf6ef113fcd58fd210e003e4  gcc/testsuite/g++.dg/cpp1z/nontype-auto2.C
! 80d9719881e2d887fc9152bb464e018e  gcc/testsuite/g++.dg/cpp1z/nontype-auto3.C
! e6dd33b060958f261700bebd2d6042c0  gcc/testsuite/g++.dg/cpp1z/nontype-auto4.C
! d33b3bb4b7bf7727b1b9dcf30621666f  gcc/testsuite/g++.dg/cpp1z/nontype-auto5.C
! e2db78fb5721aa1f2b782c229308098a  gcc/testsuite/g++.dg/cpp1z/nontype-auto6.C
! 5753e4af1cfefb3a76926e2943f085ef  gcc/testsuite/g++.dg/cpp1z/nontype-auto7.C
! ce1beee87a6195ee306e1763e07437e8  gcc/testsuite/g++.dg/cpp1z/nontype-auto8.C
! 77adf5520b7c25a7889ef0818c861571  gcc/testsuite/g++.dg/cpp1z/nontype-auto9.C
! fb282ac0c229a92f6c0f8147dae9c68f  gcc/testsuite/g++.dg/cpp1z/nontype1.C
! edfbb21d946fdc0a5a33314c1a592958  gcc/testsuite/g++.dg/cpp1z/nontype2.C
! c5e5dc099aefea8174c1b1737a03e370  gcc/testsuite/g++.dg/cpp1z/nontype3.C
! 699e7e02c26f3b64a2487508c49d8afe  gcc/testsuite/g++.dg/cpp1z/nontype3a.C
! 5ccb512a6d946d002a7fbcd72cf9114f  gcc/testsuite/g++.dg/cpp1z/pr78771.C
! 4be969ea1ad6b6d346901fd0284c55ff  gcc/testsuite/g++.dg/cpp1z/pr79143.C
! ad57840e6176126ac1d26074e6ca2ddc  gcc/testsuite/g++.dg/cpp1z/range-for1.C
! 265a7769365e4343164d116f772838ce  gcc/testsuite/g++.dg/cpp1z/register1.C
! c032138a4c05b58a17de219adf6e67a3  gcc/testsuite/g++.dg/cpp1z/register2.C
  cef2ad2ba8657a6edcfb63e77992b0be  gcc/testsuite/g++.dg/cpp1z/register3.C
! fb688e38a9affae6c5a12be73cd25a98  gcc/testsuite/g++.dg/cpp1z/regress1.C
! 09da97c1bcbaa26010522b65ee268a75  gcc/testsuite/g++.dg/cpp1z/regress2.C
! bd67bf57cc0d41c3e6d2de285205bdfd  gcc/testsuite/g++.dg/cpp1z/static_assert-nomsg.C
  7dd3448d4722a9ee0446db6aa3c7a0b0  gcc/testsuite/g++.dg/cpp1z/ttp1.C
  64b3f9e4e9d3f04ac339e1f86e353e9b  gcc/testsuite/g++.dg/cpp1z/typename-tmpl-tmpl-parm-neg.C
  784869f1e71b786f8f21d9ec4de31fa0  gcc/testsuite/g++.dg/cpp1z/typename-tmpl-tmpl-parm-ped-neg.C
  df4eaf51ddd73d7721c81b9a43f313c1  gcc/testsuite/g++.dg/cpp1z/typename-tmpl-tmpl-parm.C
! 62ab7c52d6d5d0cecc9bade0ec136377  gcc/testsuite/g++.dg/cpp1z/udlit-utf8char.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
! b0e342626019db62cd2f10e82d5c735c  gcc/testsuite/g++.dg/cpp1z/utf8-2.C
! 97036dbed4f0ebbfe413a58d04c84b96  gcc/testsuite/g++.dg/cpp1z/utf8-2a.C
! bba9c1be0d55f178c48b77471de9df9d  gcc/testsuite/g++.dg/cpp1z/utf8-neg.C
! fcc95222a46a41d5938de001465ccf20  gcc/testsuite/g++.dg/cpp1z/utf8.C
  e71a3440857a0df24410cbe91e45c678  gcc/testsuite/g++.dg/debug/anonunion1.C
  e4aee91d21a8cdbd286094f893319c70  gcc/testsuite/g++.dg/debug/const1.C
  2e4398a10938bba8e5fd13cd2d12e691  gcc/testsuite/g++.dg/debug/const2.C
--- 13181,13285 ----
  e0b73494f7b91982a1836c4e948f3eea  gcc/testsuite/g++.dg/cpp1z/launder6.C
  3a812eb8b588d2b291e6a6ba0289d8b3  gcc/testsuite/g++.dg/cpp1z/launder6.cc
  fc7418031e26a28172ef21ddc7c912c4  gcc/testsuite/g++.dg/cpp1z/launder6.h
+ 487d661499bb066b39b803e765439022  gcc/testsuite/g++.dg/cpp1z/launder7.C
+ 8c00bb45a9c85ed9405a729bd816a035  gcc/testsuite/g++.dg/cpp1z/launder8.C
  9dcadfa9d20011f3e066495703f8c81a  gcc/testsuite/g++.dg/cpp1z/maybe_unused1.C
! f84645d032b43a2b9951d54601570b30  gcc/testsuite/g++.dg/cpp1z/namespace-attribs.C
! 396d437f9e9d4090b707324fd4c6a330  gcc/testsuite/g++.dg/cpp1z/nested-namespace-def1.C
  4470f18a10da3760c7723a622fd0befa  gcc/testsuite/g++.dg/cpp1z/nested-namespace-def2.C
  db6d80bc5f29d89b66dc0f6ca5cdfd89  gcc/testsuite/g++.dg/cpp1z/nested-namespace-def3.C
  9cc897dec6c8c32e56bf70ab8cf299d0  gcc/testsuite/g++.dg/cpp1z/nodiscard1.C
  2def7bc32a45c8e255ae51bd62878f9d  gcc/testsuite/g++.dg/cpp1z/nodiscard2.C
! 76a346c48dda60668b4671ca53932ac6  gcc/testsuite/g++.dg/cpp1z/nodiscard3.C
  83dfccee6bbfeb66341cd2d47be20334  gcc/testsuite/g++.dg/cpp1z/nodiscard4.C
! 549516884facf6ccae16b7de38b2931d  gcc/testsuite/g++.dg/cpp1z/nodiscard5.C
! 113065f5e1e135230f2df9ba1961da03  gcc/testsuite/g++.dg/cpp1z/noexcept-type1.C
  8fbb465fc69c13a4894d2eb47d00e941  gcc/testsuite/g++.dg/cpp1z/noexcept-type11.C
  1caccdf4e16515c79981341c1b7a9d86  gcc/testsuite/g++.dg/cpp1z/noexcept-type11a.C
! 3f69165e30ba8c1c7ca0ecd1558e79b1  gcc/testsuite/g++.dg/cpp1z/noexcept-type12.C
! e8a13f1ce8e4affd062fe3d20183d9c3  gcc/testsuite/g++.dg/cpp1z/noexcept-type13.C
  35cd663d7fd0b608edfe71468072da31  gcc/testsuite/g++.dg/cpp1z/noexcept-type14.C
  c97d9f51dd4c26b3ec2425a165a6310d  gcc/testsuite/g++.dg/cpp1z/noexcept-type15.C
! 7baafcfdf866f8473868da477e2e5e0a  gcc/testsuite/g++.dg/cpp1z/noexcept-type16.C
! 20e99001548c7ab24f45c0a8cb2cadb7  gcc/testsuite/g++.dg/cpp1z/noexcept-type17.C
! 30ce79f1e20eeae55911cd055c8293fe  gcc/testsuite/g++.dg/cpp1z/noexcept-type18.C
! 68cbcc7cbbdd08882ed44e8fb3af49d7  gcc/testsuite/g++.dg/cpp1z/noexcept-type19.C
! 33ce675622544b3ea51091070fed1e79  gcc/testsuite/g++.dg/cpp1z/noexcept-type19.h
! f69ca8dab704dcbce2a60fb3f0903e08  gcc/testsuite/g++.dg/cpp1z/noexcept-type2.C
! ea136dd2a55c27c679f155770577b429  gcc/testsuite/g++.dg/cpp1z/noexcept-type20.C
! 3904a7ffeaea8ef400110e95b836efb1  gcc/testsuite/g++.dg/cpp1z/noexcept-type3.C
! e54ad8b22476a08cc05dff020ce78422  gcc/testsuite/g++.dg/cpp1z/noexcept-type4.C
! df7d8dcb61b2f6e063739f85c31b5b55  gcc/testsuite/g++.dg/cpp1z/noexcept-type5.C
! 6cae288a6fe31e1a4d9f7cd54364ba2c  gcc/testsuite/g++.dg/cpp1z/noexcept-type6.C
! 3a42fe7739e093592cdbcd31cb9a1506  gcc/testsuite/g++.dg/cpp1z/noexcept-type7.C
! 7d5fe12ac95874943bc0645eef9be2ee  gcc/testsuite/g++.dg/cpp1z/noexcept-type8.C
! a1d9aaf3509f6dce4d4174ef05de52cd  gcc/testsuite/g++.dg/cpp1z/noexcept-type9.C
! e9ba9209a5f508a9904805136ec71319  gcc/testsuite/g++.dg/cpp1z/nontype-auto1.C
! e57461d69913f1324cd1cd5f98bb281a  gcc/testsuite/g++.dg/cpp1z/nontype-auto10.C
! baa03d7258d20d4b9ab40c9db7bbc6b5  gcc/testsuite/g++.dg/cpp1z/nontype-auto11.C
! e681e161dd5070a5dd67847540db0c2f  gcc/testsuite/g++.dg/cpp1z/nontype-auto12.C
  dc0a0df7a781ac72bdcb6003f2c5b858  gcc/testsuite/g++.dg/cpp1z/nontype-auto13.C
! c0f5cc83601fec874a7670514644794f  gcc/testsuite/g++.dg/cpp1z/nontype-auto14.C
! 4848b98a7fc82817b3b93124f4c84c72  gcc/testsuite/g++.dg/cpp1z/nontype-auto2.C
! 1db0bd82ff9796c57b5685008adb630b  gcc/testsuite/g++.dg/cpp1z/nontype-auto3.C
! ac59d0305796b46b13822440cac9e6e1  gcc/testsuite/g++.dg/cpp1z/nontype-auto4.C
! cfb7137e37a748d85f82b0aca2522955  gcc/testsuite/g++.dg/cpp1z/nontype-auto5.C
! 1126560f14c9ac76930eefae35fad50c  gcc/testsuite/g++.dg/cpp1z/nontype-auto6.C
! 6dd9385479c26c1fb58246fe644e4b19  gcc/testsuite/g++.dg/cpp1z/nontype-auto7.C
! 0f4ca597bf62569e3a3878a1c7b01a72  gcc/testsuite/g++.dg/cpp1z/nontype-auto8.C
! 9cc067892fbc35bf566be61eb3b0724c  gcc/testsuite/g++.dg/cpp1z/nontype-auto9.C
! 95273893f5984968f7f98e955fad4d51  gcc/testsuite/g++.dg/cpp1z/nontype1.C
! be4e5a41aa6835de3a6023a49ad5c485  gcc/testsuite/g++.dg/cpp1z/nontype2.C
! 266948bd2fc327742836dd6f6c56136f  gcc/testsuite/g++.dg/cpp1z/nontype3.C
! 5479076752989317d16e52a175be48d1  gcc/testsuite/g++.dg/cpp1z/nontype3a.C
! f6d82ccaeaa2aa0dab84341c952b7ae9  gcc/testsuite/g++.dg/cpp1z/pr78771.C
! 410d263be4db790f5130e369ea13c390  gcc/testsuite/g++.dg/cpp1z/pr79143.C
! 48dea5b68dc6fac409bcc3b38ae166d6  gcc/testsuite/g++.dg/cpp1z/pr81016.C
! 9d024f8b0579c7649f170b040a9004c8  gcc/testsuite/g++.dg/cpp1z/pr83020.C
! 6cd39a2a6b2d5a4dff2986df1b77afa4  gcc/testsuite/g++.dg/cpp1z/pr83644.C
! a62d3a0778d2b88d364622055ecedeb7  gcc/testsuite/g++.dg/cpp1z/pr83918.C
! 3569e288903cc239e6b823ff56bafb87  gcc/testsuite/g++.dg/cpp1z/pr84325.C
! 21c066d2491061da99cf1ac51fe44d68  gcc/testsuite/g++.dg/cpp1z/pr84533.C
! 72fda56eb807a6a616e6969f63b6bf55  gcc/testsuite/g++.dg/cpp1z/range-for1.C
! 9232c1c4270f108f4f9dcdf731864332  gcc/testsuite/g++.dg/cpp1z/register1.C
! 25a793be6474b42c1143f1be56f897a9  gcc/testsuite/g++.dg/cpp1z/register2.C
  cef2ad2ba8657a6edcfb63e77992b0be  gcc/testsuite/g++.dg/cpp1z/register3.C
! f3435ea6c9132fc6c36ac85414d5c3b5  gcc/testsuite/g++.dg/cpp1z/regress1.C
! b3512c4ea142145163230e4e58c31d18  gcc/testsuite/g++.dg/cpp1z/regress2.C
! 74a884e41135ec589d959b0dff3a3163  gcc/testsuite/g++.dg/cpp1z/static1.C
! 24a85a8e93edbe97841994dbb3d1559a  gcc/testsuite/g++.dg/cpp1z/static_assert-nomsg.C
  7dd3448d4722a9ee0446db6aa3c7a0b0  gcc/testsuite/g++.dg/cpp1z/ttp1.C
  64b3f9e4e9d3f04ac339e1f86e353e9b  gcc/testsuite/g++.dg/cpp1z/typename-tmpl-tmpl-parm-neg.C
  784869f1e71b786f8f21d9ec4de31fa0  gcc/testsuite/g++.dg/cpp1z/typename-tmpl-tmpl-parm-ped-neg.C
  df4eaf51ddd73d7721c81b9a43f313c1  gcc/testsuite/g++.dg/cpp1z/typename-tmpl-tmpl-parm.C
! 2bec51b3707bbd35d2842de389fe2a4d  gcc/testsuite/g++.dg/cpp1z/udlit-utf8char.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
! 5b90a3e7bf85bbb16668ab5871d95b4c  gcc/testsuite/g++.dg/cpp1z/utf8-2.C
! 3603315f9eaa807813fd71a585596d9d  gcc/testsuite/g++.dg/cpp1z/utf8-2a.C
! 0390f6b15337fa2df056ac76a7697239  gcc/testsuite/g++.dg/cpp1z/utf8-neg.C
! df5bd51ca3ec69bebfb861198262ba3d  gcc/testsuite/g++.dg/cpp1z/utf8.C
! efde6c8c1860e6796275cd76c0810b5d  gcc/testsuite/g++.dg/cpp2a/bitfield1.C
! 6459f6af0671a76d588568648ec2536c  gcc/testsuite/g++.dg/cpp2a/bitfield2.C
! ef57257e408e06d58bf2de60513b468b  gcc/testsuite/g++.dg/cpp2a/bitfield3.C
! 7126b921087cb1629e4184935766b627  gcc/testsuite/g++.dg/cpp2a/cplusplus.C
! 9e5b823284742c68e17318ea0110e785  gcc/testsuite/g++.dg/cpp2a/desig1.C
! 660e750ca110e87932946efeee331317  gcc/testsuite/g++.dg/cpp2a/desig2.C
! 9f489d7f3f58294a91f5e5ea62989f5c  gcc/testsuite/g++.dg/cpp2a/desig3.C
! a1e304613b1097092d10ed459e46fe0c  gcc/testsuite/g++.dg/cpp2a/desig4.C
! bf71e77b18ad9c10b7e9f64f07ee9d28  gcc/testsuite/g++.dg/cpp2a/desig5.C
! c9656baaa09fe4a7d5bf855b0e825993  gcc/testsuite/g++.dg/cpp2a/desig6.C
! 7982e2341bf3fb4a35f33c5b3d4265d7  gcc/testsuite/g++.dg/cpp2a/desig7.C
! 959c102bf551d6792d067544e06b6b06  gcc/testsuite/g++.dg/cpp2a/desig8.C
! e4e06994c2abc2f0b15bad63bc84687d  gcc/testsuite/g++.dg/cpp2a/desig9.C
! f3d333d9133ccc3fed58f15dd1e6c1c1  gcc/testsuite/g++.dg/cpp2a/lambda-generic1.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
! 4aeeac8ebcb51044cd9c82d45ee9a511  gcc/testsuite/g++.dg/cpp2a/lambda-generic5.C
! 0b76f09e4e3095958613ee48842ded89  gcc/testsuite/g++.dg/cpp2a/ptrmem1.C
! da15d1527c3c507a9553f42e04caab59  gcc/testsuite/g++.dg/cpp2a/ptrmem1a.C
  e71a3440857a0df24410cbe91e45c678  gcc/testsuite/g++.dg/debug/anonunion1.C
  e4aee91d21a8cdbd286094f893319c70  gcc/testsuite/g++.dg/debug/const1.C
  2e4398a10938bba8e5fd13cd2d12e691  gcc/testsuite/g++.dg/debug/const2.C
*************** e4aee91d21a8cdbd286094f893319c70  gcc/te
*** 12601,12617 ****
  b196cb4af4d539f545ae961b8905ba24  gcc/testsuite/g++.dg/debug/const4.C
  8c7b9540eb6278b6bd197c3c55ae7945  gcc/testsuite/g++.dg/debug/const5.C
  36f088b22dca6ab78668e7d505839fbd  gcc/testsuite/g++.dg/debug/crash1.C
! b9e18cc8c4d84a5fe6ad6b8b3845d771  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
  aaa5bddbbd1e77e4f951cd3e1e37f5f5  gcc/testsuite/g++.dg/debug/debug4.C
! d8a635e6af7e5d8a716c4330769d87a8  gcc/testsuite/g++.dg/debug/debug5.C
! aae7d3d75005a60ab912ae1b3feefdd9  gcc/testsuite/g++.dg/debug/debug6.C
  fa08fe949e7e3b814b4413eb1c2e0b1e  gcc/testsuite/g++.dg/debug/debug7.C
  f3e5e740f9e7210ccece705c6d548267  gcc/testsuite/g++.dg/debug/debug8.C
  21cf4d633ed522aaeda6d51af07ab604  gcc/testsuite/g++.dg/debug/debug9.C
! a1416e769375c4aeb3b2203169f153e6  gcc/testsuite/g++.dg/debug/dwarf-eh-personality-1.C
  f00c28023dea45fb37e147045583baca  gcc/testsuite/g++.dg/debug/dwarf2/accessibility1.C
  9d9776c0c7cab69306c3fde6f15fbe2c  gcc/testsuite/g++.dg/debug/dwarf2/align-1.C
  18655fdc7297c68ef51ff932fc44e0bf  gcc/testsuite/g++.dg/debug/dwarf2/align-2.C
--- 13287,13303 ----
  b196cb4af4d539f545ae961b8905ba24  gcc/testsuite/g++.dg/debug/const4.C
  8c7b9540eb6278b6bd197c3c55ae7945  gcc/testsuite/g++.dg/debug/const5.C
  36f088b22dca6ab78668e7d505839fbd  gcc/testsuite/g++.dg/debug/crash1.C
! 784c9a4b8fd3394eac08448923edd7e2  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
  aaa5bddbbd1e77e4f951cd3e1e37f5f5  gcc/testsuite/g++.dg/debug/debug4.C
! 9003eeba884903fdf7a27d7b65357020  gcc/testsuite/g++.dg/debug/debug5.C
! b7caea13113bd3088703cc54a7f61b52  gcc/testsuite/g++.dg/debug/debug6.C
  fa08fe949e7e3b814b4413eb1c2e0b1e  gcc/testsuite/g++.dg/debug/debug7.C
  f3e5e740f9e7210ccece705c6d548267  gcc/testsuite/g++.dg/debug/debug8.C
  21cf4d633ed522aaeda6d51af07ab604  gcc/testsuite/g++.dg/debug/debug9.C
! e25f237fd34799fd718d0e101e5f81ab  gcc/testsuite/g++.dg/debug/dwarf-eh-personality-1.C
  f00c28023dea45fb37e147045583baca  gcc/testsuite/g++.dg/debug/dwarf2/accessibility1.C
  9d9776c0c7cab69306c3fde6f15fbe2c  gcc/testsuite/g++.dg/debug/dwarf2/align-1.C
  18655fdc7297c68ef51ff932fc44e0bf  gcc/testsuite/g++.dg/debug/dwarf2/align-2.C
*************** a9c705db2bb888c55e2017779a9efedd  gcc/te
*** 12624,12642 ****
  35cfadb8c5470e8c9b783b410b1ff4ca  gcc/testsuite/g++.dg/debug/dwarf2/block.C
  d04df262b14869ca10ac8a82668b5b5e  gcc/testsuite/g++.dg/debug/dwarf2/cdtor-1.C
  e70f88144abfc6a69a1241301a9b5e68  gcc/testsuite/g++.dg/debug/dwarf2/const2.C
! 2d24d844a24f965b21c1790720011113  gcc/testsuite/g++.dg/debug/dwarf2/const2b.C
  5bc0695b9e25d8bd7ab40bb846cfe645  gcc/testsuite/g++.dg/debug/dwarf2/constexpr-var-1.C
  ab8980eae15554e92e57b8e4ddfc3d38  gcc/testsuite/g++.dg/debug/dwarf2/deallocator.C
  ec3e87dcf0160896056ee89e02f65e4c  gcc/testsuite/g++.dg/debug/dwarf2/defaulted-member-function-1.C
  3023638816f901c7099b7645a6353f40  gcc/testsuite/g++.dg/debug/dwarf2/defaulted-member-function-2.C
  495af04c35194cc1d015c2a93765a073  gcc/testsuite/g++.dg/debug/dwarf2/defaulted-member-function-3.C
  b60cdd725e03d3b1d9c56248e0f623f0  gcc/testsuite/g++.dg/debug/dwarf2/deleted-member-function.C
! b9804c2122292a900b8c10c3d3541826  gcc/testsuite/g++.dg/debug/dwarf2/dwarf2-1.C
! a08e653c3df1c3a04697c7da32c35a06  gcc/testsuite/g++.dg/debug/dwarf2/dwarf2-2.C
! 7205dc9de24ce32939672103322438a2  gcc/testsuite/g++.dg/debug/dwarf2/dwarf2.exp
  626624da3f5685a0850aad1b683ac3d4  gcc/testsuite/g++.dg/debug/dwarf2/dwarf4-nested.C
! 7d243774fd484c21df580e90592667d0  gcc/testsuite/g++.dg/debug/dwarf2/dwarf4-typedef.C
  1b130ad10876bc9db6cf83c8fa07435f  gcc/testsuite/g++.dg/debug/dwarf2/enum1.C
  f744a20fb6a786108f6e1bd8a6331ed5  gcc/testsuite/g++.dg/debug/dwarf2/explicit-constructor.C
  2853ac7b025c77719bcb8d67c97d88d0  gcc/testsuite/g++.dg/debug/dwarf2/fesd-any.C
  9b015014257af56d73a48e0f2e546d29  gcc/testsuite/g++.dg/debug/dwarf2/fesd-any.h
--- 13310,13330 ----
  35cfadb8c5470e8c9b783b410b1ff4ca  gcc/testsuite/g++.dg/debug/dwarf2/block.C
  d04df262b14869ca10ac8a82668b5b5e  gcc/testsuite/g++.dg/debug/dwarf2/cdtor-1.C
  e70f88144abfc6a69a1241301a9b5e68  gcc/testsuite/g++.dg/debug/dwarf2/const2.C
! ca2ac84548661b688ffb6b85749aa364  gcc/testsuite/g++.dg/debug/dwarf2/const2b.C
  5bc0695b9e25d8bd7ab40bb846cfe645  gcc/testsuite/g++.dg/debug/dwarf2/constexpr-var-1.C
  ab8980eae15554e92e57b8e4ddfc3d38  gcc/testsuite/g++.dg/debug/dwarf2/deallocator.C
+ 6239637f8dd625e114ae1c449f66f431  gcc/testsuite/g++.dg/debug/dwarf2/default-arg1.C
  ec3e87dcf0160896056ee89e02f65e4c  gcc/testsuite/g++.dg/debug/dwarf2/defaulted-member-function-1.C
  3023638816f901c7099b7645a6353f40  gcc/testsuite/g++.dg/debug/dwarf2/defaulted-member-function-2.C
  495af04c35194cc1d015c2a93765a073  gcc/testsuite/g++.dg/debug/dwarf2/defaulted-member-function-3.C
  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
! 428ced369f8ec3942e5898c525486010  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
+ 5e41539f76d0ea42725ce29ed3697281  gcc/testsuite/g++.dg/debug/dwarf2/enum2.C
  f744a20fb6a786108f6e1bd8a6331ed5  gcc/testsuite/g++.dg/debug/dwarf2/explicit-constructor.C
  2853ac7b025c77719bcb8d67c97d88d0  gcc/testsuite/g++.dg/debug/dwarf2/fesd-any.C
  9b015014257af56d73a48e0f2e546d29  gcc/testsuite/g++.dg/debug/dwarf2/fesd-any.h
*************** a26a24dcac8fa1d56d36002c9551d274  gcc/te
*** 12650,12670 ****
  9b015014257af56d73a48e0f2e546d29  gcc/testsuite/g++.dg/debug/dwarf2/fesd-sys.h
  34941d0e46c36878c4c08a907bcce93f  gcc/testsuite/g++.dg/debug/dwarf2/fesd.h
  ecc49cbd0f2be0ca43c3bc117a7a1a9d  gcc/testsuite/g++.dg/debug/dwarf2/global-used-types-1.C
! 5f527b1d5db3338320735cddde309293  gcc/testsuite/g++.dg/debug/dwarf2/icf.C
  94ab24c4c92e0025c8c21c00e7088ab9  gcc/testsuite/g++.dg/debug/dwarf2/imported-decl-1.C
  97bacdb8feb1e4e7440a1a145ddd85eb  gcc/testsuite/g++.dg/debug/dwarf2/imported-decl-2.C
  6d59cceea7760f461015879ca9dbb87f  gcc/testsuite/g++.dg/debug/dwarf2/imported-module-2.C
  4a98c1ea2d46117d2863ebe7a7f74b4b  gcc/testsuite/g++.dg/debug/dwarf2/imported-module-3.C
  d6a23e0e5a6ec9b1682a91b30d778f71  gcc/testsuite/g++.dg/debug/dwarf2/imported-module-4.C
  93bfc5990594c4c0244151f6fdc98bc7  gcc/testsuite/g++.dg/debug/dwarf2/imported-module.C
! 218063e08f18c6afec3c441ca9c26eca  gcc/testsuite/g++.dg/debug/dwarf2/inline-var-1.C
! 86ee05f773bdff3496346b7cce5accdc  gcc/testsuite/g++.dg/debug/dwarf2/inline-var-2.C
  b35aef275e8c1cc68e99f8801dc846e4  gcc/testsuite/g++.dg/debug/dwarf2/inline1.C
  b2bca0913e4135c3359c9933520119f6  gcc/testsuite/g++.dg/debug/dwarf2/integer-typedef.C
  160222ca46523a932828616d1c7b60e0  gcc/testsuite/g++.dg/debug/dwarf2/lambda1.C
! b328f7c7320b7183d0921a77a9eb5c60  gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp11.C
! 68870d561dca3bae7649a05f542bbd20  gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp14.C
! dd76fb1f66abaf04039c26b8fe9db508  gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp98.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
--- 13338,13360 ----
  9b015014257af56d73a48e0f2e546d29  gcc/testsuite/g++.dg/debug/dwarf2/fesd-sys.h
  34941d0e46c36878c4c08a907bcce93f  gcc/testsuite/g++.dg/debug/dwarf2/fesd.h
  ecc49cbd0f2be0ca43c3bc117a7a1a9d  gcc/testsuite/g++.dg/debug/dwarf2/global-used-types-1.C
! 9d00d99a68f540d7c3487112c18fdce0  gcc/testsuite/g++.dg/debug/dwarf2/icf.C
  94ab24c4c92e0025c8c21c00e7088ab9  gcc/testsuite/g++.dg/debug/dwarf2/imported-decl-1.C
  97bacdb8feb1e4e7440a1a145ddd85eb  gcc/testsuite/g++.dg/debug/dwarf2/imported-decl-2.C
  6d59cceea7760f461015879ca9dbb87f  gcc/testsuite/g++.dg/debug/dwarf2/imported-module-2.C
  4a98c1ea2d46117d2863ebe7a7f74b4b  gcc/testsuite/g++.dg/debug/dwarf2/imported-module-3.C
  d6a23e0e5a6ec9b1682a91b30d778f71  gcc/testsuite/g++.dg/debug/dwarf2/imported-module-4.C
  93bfc5990594c4c0244151f6fdc98bc7  gcc/testsuite/g++.dg/debug/dwarf2/imported-module.C
! 73ac452cd11b5b9c8e3a8e8d4201a15a  gcc/testsuite/g++.dg/debug/dwarf2/inline-ns-1.C
! 41510ffdf4c706ab9c8121d8f4485647  gcc/testsuite/g++.dg/debug/dwarf2/inline-ns-2.C
! 0c55015b6c11ba7f67b488e2cf20633a  gcc/testsuite/g++.dg/debug/dwarf2/inline-var-1.C
! 01812a32e039b79fd5f6f02abdea115b  gcc/testsuite/g++.dg/debug/dwarf2/inline-var-2.C
  b35aef275e8c1cc68e99f8801dc846e4  gcc/testsuite/g++.dg/debug/dwarf2/inline1.C
  b2bca0913e4135c3359c9933520119f6  gcc/testsuite/g++.dg/debug/dwarf2/integer-typedef.C
  160222ca46523a932828616d1c7b60e0  gcc/testsuite/g++.dg/debug/dwarf2/lambda1.C
! 6a93b393353d5a24a6567767109c6898  gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp11.C
! 8bbd68c3c61392b207b0d11f93104cec  gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp14.C
! 9528ad1e140eff24c9bcff8ebae30d9f  gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp98.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
*************** a2902062928f471ffa45a51645443671  gcc/te
*** 12675,12681 ****
  a8938842da2693d07166352ba6838e8f  gcc/testsuite/g++.dg/debug/dwarf2/nested-1.C
  edbc6bb86a7ee8f81e1b5853b74c2352  gcc/testsuite/g++.dg/debug/dwarf2/nested-2.C
  e64fec6e11d681323560675ce433a296  gcc/testsuite/g++.dg/debug/dwarf2/nested-3.C
! 7ad705a10a6c61c091af3c2feaecec2d  gcc/testsuite/g++.dg/debug/dwarf2/nested-4.C
  c7ffd1dd0ae40378732be3ac8729a37c  gcc/testsuite/g++.dg/debug/dwarf2/non-virtual-thunk.C
  804b19b7b58e86e4e92d0018c08cf7b7  gcc/testsuite/g++.dg/debug/dwarf2/noreturn-function.C
  b3cbbd79d5ff077a6732280d76b2284e  gcc/testsuite/g++.dg/debug/dwarf2/omp-fesdr.C
--- 13365,13371 ----
  a8938842da2693d07166352ba6838e8f  gcc/testsuite/g++.dg/debug/dwarf2/nested-1.C
  edbc6bb86a7ee8f81e1b5853b74c2352  gcc/testsuite/g++.dg/debug/dwarf2/nested-2.C
  e64fec6e11d681323560675ce433a296  gcc/testsuite/g++.dg/debug/dwarf2/nested-3.C
! 9caca590d0b2747d8553259a98ef571f  gcc/testsuite/g++.dg/debug/dwarf2/nested-4.C
  c7ffd1dd0ae40378732be3ac8729a37c  gcc/testsuite/g++.dg/debug/dwarf2/non-virtual-thunk.C
  804b19b7b58e86e4e92d0018c08cf7b7  gcc/testsuite/g++.dg/debug/dwarf2/noreturn-function.C
  b3cbbd79d5ff077a6732280d76b2284e  gcc/testsuite/g++.dg/debug/dwarf2/omp-fesdr.C
*************** b3cbbd79d5ff077a6732280d76b2284e  gcc/te
*** 12683,12704 ****
  e9f4d52036740c7a6fa51c597a6dd04b  gcc/testsuite/g++.dg/debug/dwarf2/pr44641.C
  90028c65be83718cb8e154df1b502d99  gcc/testsuite/g++.dg/debug/dwarf2/pr45997-1.C
  443ec5817865fbd9af98771a74a1c93c  gcc/testsuite/g++.dg/debug/dwarf2/pr45997-2.C
! 8f2e965b67b1e2b4a8b3778b6f9abb8f  gcc/testsuite/g++.dg/debug/dwarf2/pr46123-2.C
  0b06a651bd88729cd5005f63297ed8ff  gcc/testsuite/g++.dg/debug/dwarf2/pr46123.C
  61d7e2de1732fd9c25378d4c85a4bb53  gcc/testsuite/g++.dg/debug/dwarf2/pr46527.C
  77d7e1ad341ac6addc71df4dbb8ec2e2  gcc/testsuite/g++.dg/debug/dwarf2/pr52260.C
  bec26218174ce021c4d89096b9f0c537  gcc/testsuite/g++.dg/debug/dwarf2/pr54508.C
! bed8d123852d255e811f9196daf3eaba  gcc/testsuite/g++.dg/debug/dwarf2/pr61433.C
  3dc0f561c3ebaf29a4f14ee6f25555c1  gcc/testsuite/g++.dg/debug/dwarf2/pr67764.C
! 402705af4ba2631ab3fdcbf9221d957e  gcc/testsuite/g++.dg/debug/dwarf2/pr77363.C
  5530d5c25216033510bd314f7bccbcca  gcc/testsuite/g++.dg/debug/dwarf2/pr78835.C
  c97b36f101808a4d1b88e966d08df228  gcc/testsuite/g++.dg/debug/dwarf2/pr79129.C
  3ab0da15d5f47d7a8b827b5c7757e2f0  gcc/testsuite/g++.dg/debug/dwarf2/pr80234-1.C
  97746fde88b3156e4e9704f6bad8eb65  gcc/testsuite/g++.dg/debug/dwarf2/pr80234-2.C
  48e69b012a6da8a3f37c0eea7d671389  gcc/testsuite/g++.dg/debug/dwarf2/ptrdmem-1.C
  5d8f03fa19703b37b960eccf4cdd64b6  gcc/testsuite/g++.dg/debug/dwarf2/pubnames-1.C
! 69071f2ae478f0d1d78f2bcbfbd97e32  gcc/testsuite/g++.dg/debug/dwarf2/pubnames-2.C
! c3042eb0127d8472d84c8bf005f69eca  gcc/testsuite/g++.dg/debug/dwarf2/pubnames-3.C
  5ee5136319eb2e380c30aea5cdd61634  gcc/testsuite/g++.dg/debug/dwarf2/redeclaration-1.C
  2059d1611fd4125683228bd68f4312ee  gcc/testsuite/g++.dg/debug/dwarf2/ref-1.C
  bdde1e24a294c024b9b2adf45e0760a5  gcc/testsuite/g++.dg/debug/dwarf2/ref-2.C
--- 13373,13395 ----
  e9f4d52036740c7a6fa51c597a6dd04b  gcc/testsuite/g++.dg/debug/dwarf2/pr44641.C
  90028c65be83718cb8e154df1b502d99  gcc/testsuite/g++.dg/debug/dwarf2/pr45997-1.C
  443ec5817865fbd9af98771a74a1c93c  gcc/testsuite/g++.dg/debug/dwarf2/pr45997-2.C
! 2467bf91081d7210e5e3eaec5f48c1f3  gcc/testsuite/g++.dg/debug/dwarf2/pr46123-2.C
  0b06a651bd88729cd5005f63297ed8ff  gcc/testsuite/g++.dg/debug/dwarf2/pr46123.C
  61d7e2de1732fd9c25378d4c85a4bb53  gcc/testsuite/g++.dg/debug/dwarf2/pr46527.C
  77d7e1ad341ac6addc71df4dbb8ec2e2  gcc/testsuite/g++.dg/debug/dwarf2/pr52260.C
  bec26218174ce021c4d89096b9f0c537  gcc/testsuite/g++.dg/debug/dwarf2/pr54508.C
! 55eb4256b24817046cf5777db4afece0  gcc/testsuite/g++.dg/debug/dwarf2/pr61433.C
  3dc0f561c3ebaf29a4f14ee6f25555c1  gcc/testsuite/g++.dg/debug/dwarf2/pr67764.C
! 3cfcb26c02f6e51b53e2490df47fc140  gcc/testsuite/g++.dg/debug/dwarf2/pr77363.C
  5530d5c25216033510bd314f7bccbcca  gcc/testsuite/g++.dg/debug/dwarf2/pr78835.C
  c97b36f101808a4d1b88e966d08df228  gcc/testsuite/g++.dg/debug/dwarf2/pr79129.C
  3ab0da15d5f47d7a8b827b5c7757e2f0  gcc/testsuite/g++.dg/debug/dwarf2/pr80234-1.C
  97746fde88b3156e4e9704f6bad8eb65  gcc/testsuite/g++.dg/debug/dwarf2/pr80234-2.C
+ fed1a43a96ee9569f3f35cd0d3611bcd  gcc/testsuite/g++.dg/debug/dwarf2/pr85302.C
  48e69b012a6da8a3f37c0eea7d671389  gcc/testsuite/g++.dg/debug/dwarf2/ptrdmem-1.C
  5d8f03fa19703b37b960eccf4cdd64b6  gcc/testsuite/g++.dg/debug/dwarf2/pubnames-1.C
! 76d02e352aba879b4ba37be3e5443ee8  gcc/testsuite/g++.dg/debug/dwarf2/pubnames-2.C
! 332f87c00059cf860922539ea58fc908  gcc/testsuite/g++.dg/debug/dwarf2/pubnames-3.C
  5ee5136319eb2e380c30aea5cdd61634  gcc/testsuite/g++.dg/debug/dwarf2/redeclaration-1.C
  2059d1611fd4125683228bd68f4312ee  gcc/testsuite/g++.dg/debug/dwarf2/ref-1.C
  bdde1e24a294c024b9b2adf45e0760a5  gcc/testsuite/g++.dg/debug/dwarf2/ref-2.C
*************** f9af9d5a34157b52dcb1eb1b1f046d89  gcc/te
*** 12712,12725 ****
  271c1d766718423671ed43b92f7e7a78  gcc/testsuite/g++.dg/debug/dwarf2/static-data-member1.C
  6fe81ebc2b1b5af959934857597f7d83  gcc/testsuite/g++.dg/debug/dwarf2/static-data-member2.C
  339883417d996727b91c60bd511d3d39  gcc/testsuite/g++.dg/debug/dwarf2/static-local-var-in-ctor.C
! a167179f3c5464eb0d8976e860f72757  gcc/testsuite/g++.dg/debug/dwarf2/template-func-params-1.C
! 65ce0ab3a207f8b9d7c6424f836811d0  gcc/testsuite/g++.dg/debug/dwarf2/template-func-params-2.C
! 8cd535099ecd79e855c00be4fe9e3742  gcc/testsuite/g++.dg/debug/dwarf2/template-func-params-3.C
  7367296324dfab1d94f3d89a91363216  gcc/testsuite/g++.dg/debug/dwarf2/template-func-params-4.C
! 5d9d7170070d06d3ea32cbcca4e9743b  gcc/testsuite/g++.dg/debug/dwarf2/template-func-params-5.C
  243d1a9770a9a3b276eb304fca89368d  gcc/testsuite/g++.dg/debug/dwarf2/template-func-params-6.C
  3bf8ff280d64dd94e229687de6feb4e5  gcc/testsuite/g++.dg/debug/dwarf2/template-func-params-7.C
! 74901f8de88675ce0842925ac2fe20f2  gcc/testsuite/g++.dg/debug/dwarf2/template-params-1.C
  f025828d45ecf1da050946f91e12467e  gcc/testsuite/g++.dg/debug/dwarf2/template-params-10.C
  d8801026a3c21d4f9b3876cd5658db4a  gcc/testsuite/g++.dg/debug/dwarf2/template-params-11.C
  3c9e3b4421a3603017be32e7f9365ff4  gcc/testsuite/g++.dg/debug/dwarf2/template-params-12.H
--- 13403,13416 ----
  271c1d766718423671ed43b92f7e7a78  gcc/testsuite/g++.dg/debug/dwarf2/static-data-member1.C
  6fe81ebc2b1b5af959934857597f7d83  gcc/testsuite/g++.dg/debug/dwarf2/static-data-member2.C
  339883417d996727b91c60bd511d3d39  gcc/testsuite/g++.dg/debug/dwarf2/static-local-var-in-ctor.C
! b4f03dbf34d36476b7a06c85d4c817c1  gcc/testsuite/g++.dg/debug/dwarf2/template-func-params-1.C
! 147131f2b2326850c501a34658c129c2  gcc/testsuite/g++.dg/debug/dwarf2/template-func-params-2.C
! 9902bda09994f9cd19dfc61b8745d503  gcc/testsuite/g++.dg/debug/dwarf2/template-func-params-3.C
  7367296324dfab1d94f3d89a91363216  gcc/testsuite/g++.dg/debug/dwarf2/template-func-params-4.C
! 9b06528a77baecf09f08d8a55b87d05c  gcc/testsuite/g++.dg/debug/dwarf2/template-func-params-5.C
  243d1a9770a9a3b276eb304fca89368d  gcc/testsuite/g++.dg/debug/dwarf2/template-func-params-6.C
  3bf8ff280d64dd94e229687de6feb4e5  gcc/testsuite/g++.dg/debug/dwarf2/template-func-params-7.C
! c5fcf3615db17768fdb6c2db296fac81  gcc/testsuite/g++.dg/debug/dwarf2/template-params-1.C
  f025828d45ecf1da050946f91e12467e  gcc/testsuite/g++.dg/debug/dwarf2/template-params-10.C
  d8801026a3c21d4f9b3876cd5658db4a  gcc/testsuite/g++.dg/debug/dwarf2/template-params-11.C
  3c9e3b4421a3603017be32e7f9365ff4  gcc/testsuite/g++.dg/debug/dwarf2/template-params-12.H
*************** b8e78f473bc7a27c3c0c0933c34b9e70  gcc/te
*** 12730,12739 ****
  8614641cd64c775db6b79324f2384fd3  gcc/testsuite/g++.dg/debug/dwarf2/template-params-12u.C
  c321d99ebd34d2763fe24012c597c978  gcc/testsuite/g++.dg/debug/dwarf2/template-params-12v.C
  c321d99ebd34d2763fe24012c597c978  gcc/testsuite/g++.dg/debug/dwarf2/template-params-12w.C
! 4c6fbbed5b5bfd267ddd9cca6a0e99ec  gcc/testsuite/g++.dg/debug/dwarf2/template-params-2.C
! 478ea657b1967d2225d7132615f182a2  gcc/testsuite/g++.dg/debug/dwarf2/template-params-3.C
  260d75a6cb33e83072b8a6e178793c59  gcc/testsuite/g++.dg/debug/dwarf2/template-params-4.C
! 7e761ebae2a978955901ff8f73e519e5  gcc/testsuite/g++.dg/debug/dwarf2/template-params-5.C
  e4cd628bc74b802e5ef61bf5b45301b6  gcc/testsuite/g++.dg/debug/dwarf2/template-params-6.C
  ce44ef2b904437251c681893d6f5cb25  gcc/testsuite/g++.dg/debug/dwarf2/template-params-7.C
  9c4f65cb61856d695e096ad964429449  gcc/testsuite/g++.dg/debug/dwarf2/template-params-8.C
--- 13421,13431 ----
  8614641cd64c775db6b79324f2384fd3  gcc/testsuite/g++.dg/debug/dwarf2/template-params-12u.C
  c321d99ebd34d2763fe24012c597c978  gcc/testsuite/g++.dg/debug/dwarf2/template-params-12v.C
  c321d99ebd34d2763fe24012c597c978  gcc/testsuite/g++.dg/debug/dwarf2/template-params-12w.C
! 7b73f301446e11752511338ad0d46999  gcc/testsuite/g++.dg/debug/dwarf2/template-params-13.C
! d65832cebbd5bccdfaf0ea930072f0d3  gcc/testsuite/g++.dg/debug/dwarf2/template-params-2.C
! 8d9a5daf67fb0f756c0d08adaa021dcd  gcc/testsuite/g++.dg/debug/dwarf2/template-params-3.C
  260d75a6cb33e83072b8a6e178793c59  gcc/testsuite/g++.dg/debug/dwarf2/template-params-4.C
! 29d3dad11acc2e91fede611f057b301f  gcc/testsuite/g++.dg/debug/dwarf2/template-params-5.C
  e4cd628bc74b802e5ef61bf5b45301b6  gcc/testsuite/g++.dg/debug/dwarf2/template-params-6.C
  ce44ef2b904437251c681893d6f5cb25  gcc/testsuite/g++.dg/debug/dwarf2/template-params-7.C
  9c4f65cb61856d695e096ad964429449  gcc/testsuite/g++.dg/debug/dwarf2/template-params-8.C
*************** a79b4fb3cb7873c05364c263058a7f1a  gcc/te
*** 12744,12760 ****
  6b5d09bc99bd841b7abcf35e8b572968  gcc/testsuite/g++.dg/debug/dwarf2/typedef2.C
  0fa9bf8e343761a65b3bdc44215383a0  gcc/testsuite/g++.dg/debug/dwarf2/typedef3.C
  32c2c4afd9960daa839e702a7ad2b0ed  gcc/testsuite/g++.dg/debug/dwarf2/typedef4.C
! 9696719d1a73b16977034a687365d445  gcc/testsuite/g++.dg/debug/dwarf2/typedef5.C
! 23771d062c83810837609e88bff31733  gcc/testsuite/g++.dg/debug/dwarf2/typedef6.C
  479930fb5faf8196de02f2765efd234d  gcc/testsuite/g++.dg/debug/enum-1.C
  7ca1d4c7ad1e18f7eebfa4742477778c  gcc/testsuite/g++.dg/debug/enum-2.C
  a0ac13a0885ee162c972f58ffbd934e7  gcc/testsuite/g++.dg/debug/localclass1.C
  475a95279bcd0b4ccd6e118ead65e106  gcc/testsuite/g++.dg/debug/minimal1.C
  8d1c97a9b811ba8c9a789baf97c48ce4  gcc/testsuite/g++.dg/debug/namespace1.C
  98d1fa8a42200722f612a8f915bb9673  gcc/testsuite/g++.dg/debug/namespace2.C
! bc952ac61b0480c09984f1fb17075c8b  gcc/testsuite/g++.dg/debug/nullptr01.C
  fcdc9d29f34ff56d1b7de0d55a1eaed7  gcc/testsuite/g++.dg/debug/pr15736.cc
! ee0ec04c39cca9bd75fd40da91daaab0  gcc/testsuite/g++.dg/debug/pr16792.C
  91880dfb66fda0db4ddabf486346b755  gcc/testsuite/g++.dg/debug/pr22514.C
  a9cf363ccde67638eed4148103577d18  gcc/testsuite/g++.dg/debug/pr27657.C
  fa240b5916a88de396432f0b952489b3  gcc/testsuite/g++.dg/debug/pr29906.C
--- 13436,13452 ----
  6b5d09bc99bd841b7abcf35e8b572968  gcc/testsuite/g++.dg/debug/dwarf2/typedef2.C
  0fa9bf8e343761a65b3bdc44215383a0  gcc/testsuite/g++.dg/debug/dwarf2/typedef3.C
  32c2c4afd9960daa839e702a7ad2b0ed  gcc/testsuite/g++.dg/debug/dwarf2/typedef4.C
! ddbacc1f20aaa6efbe151f3f8d8b9aa9  gcc/testsuite/g++.dg/debug/dwarf2/typedef5.C
! 1bac29a975fef390435bcddbc2f1112b  gcc/testsuite/g++.dg/debug/dwarf2/typedef6.C
  479930fb5faf8196de02f2765efd234d  gcc/testsuite/g++.dg/debug/enum-1.C
  7ca1d4c7ad1e18f7eebfa4742477778c  gcc/testsuite/g++.dg/debug/enum-2.C
  a0ac13a0885ee162c972f58ffbd934e7  gcc/testsuite/g++.dg/debug/localclass1.C
  475a95279bcd0b4ccd6e118ead65e106  gcc/testsuite/g++.dg/debug/minimal1.C
  8d1c97a9b811ba8c9a789baf97c48ce4  gcc/testsuite/g++.dg/debug/namespace1.C
  98d1fa8a42200722f612a8f915bb9673  gcc/testsuite/g++.dg/debug/namespace2.C
! c805656a195d9a98cc7141e7db52d9ef  gcc/testsuite/g++.dg/debug/nullptr01.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
  a9cf363ccde67638eed4148103577d18  gcc/testsuite/g++.dg/debug/pr27657.C
  fa240b5916a88de396432f0b952489b3  gcc/testsuite/g++.dg/debug/pr29906.C
*************** bf050d057433140d0ed2aeeab122c5be  gcc/te
*** 12765,12789 ****
  20fe827262881d91cf4f447c1af56cd7  gcc/testsuite/g++.dg/debug/pr44182.C
  5a5294abaaa02cbee89edeef4322e392  gcc/testsuite/g++.dg/debug/pr45660.C
  6331b60f5ff086abdb1990391e6b4fa9  gcc/testsuite/g++.dg/debug/pr46240.cc
! 2a6db67bb06a2af57cbd8a77d80a74e2  gcc/testsuite/g++.dg/debug/pr46241.C
! 7f8f717196eec3c8c2e12b8525a3baa3  gcc/testsuite/g++.dg/debug/pr46338.C
! 505d230c3e88dcfe556c16329cc19145  gcc/testsuite/g++.dg/debug/pr46583.C
! 3abaf4526cf8f9d1c1372f2a5a9526ab  gcc/testsuite/g++.dg/debug/pr47106.C
  a864ac9ace6ee08b0ae00899e67445f0  gcc/testsuite/g++.dg/debug/pr47209.C
  3982c90f2cbd3107c17140c0b6d8f6b3  gcc/testsuite/g++.dg/debug/pr47283.C
! 35213a3348223f6129c0a22fa47b3006  gcc/testsuite/g++.dg/debug/pr53466.C
  92838deb61f844cfa8f771fbd40cea5f  gcc/testsuite/g++.dg/debug/pr53860.C
  3a8f6ee436933eb1c17b19d1645af355  gcc/testsuite/g++.dg/debug/pr54499.C
! 4926044cdcc2787b340e6d8bc2ed9ca4  gcc/testsuite/g++.dg/debug/pr54828.C
  5dc7cab98a90e4bc7730b184635619bd  gcc/testsuite/g++.dg/debug/pr54831.C
! 576767a84c6996b5b2023170e0bb7edf  gcc/testsuite/g++.dg/debug/pr56294.C
! 5c1e2db64783ad9531a0a03f6e23da46  gcc/testsuite/g++.dg/debug/pr56819.C
  41269ba367aaa19e5abac5932fdc247c  gcc/testsuite/g++.dg/debug/pr65678.C
  ccda43f2f659360264083e64ebc66d22  gcc/testsuite/g++.dg/debug/pr70271.C
! 441b2b85c00e5fb81636a85d6732eb55  gcc/testsuite/g++.dg/debug/pr71057.C
! cbfed194d2ff10e85931bbec759ed626  gcc/testsuite/g++.dg/debug/pr71432.C
  271f75e481615831453a65f49baedcd5  gcc/testsuite/g++.dg/debug/pr72808.C
! 5199aaaf442cc3d08fba7ecd3483d537  gcc/testsuite/g++.dg/debug/pr80461.C
  a5e8d546d53a780cc3eb41574ea9f263  gcc/testsuite/g++.dg/debug/ra1.C
  c3f392076ad11f8768ef0321b89abd5f  gcc/testsuite/g++.dg/debug/static1.C
  7e13d86d33b17cfb7cdf61b7b8cca961  gcc/testsuite/g++.dg/debug/template1.C
--- 13457,13483 ----
  20fe827262881d91cf4f447c1af56cd7  gcc/testsuite/g++.dg/debug/pr44182.C
  5a5294abaaa02cbee89edeef4322e392  gcc/testsuite/g++.dg/debug/pr45660.C
  6331b60f5ff086abdb1990391e6b4fa9  gcc/testsuite/g++.dg/debug/pr46240.cc
! d3a83dca3a3bea04d76b4bb4e2f85a43  gcc/testsuite/g++.dg/debug/pr46241.C
! 8dd40f232ebc9ee935e0a2aa00cf5950  gcc/testsuite/g++.dg/debug/pr46338.C
! b3573c733f86249cc395f17e7bc0d087  gcc/testsuite/g++.dg/debug/pr46583.C
! 0ea6ad627f09eeede6e4c5952caf350c  gcc/testsuite/g++.dg/debug/pr47106.C
  a864ac9ace6ee08b0ae00899e67445f0  gcc/testsuite/g++.dg/debug/pr47209.C
  3982c90f2cbd3107c17140c0b6d8f6b3  gcc/testsuite/g++.dg/debug/pr47283.C
! 388712728ce94b3a3628533d73b93f94  gcc/testsuite/g++.dg/debug/pr53466.C
  92838deb61f844cfa8f771fbd40cea5f  gcc/testsuite/g++.dg/debug/pr53860.C
  3a8f6ee436933eb1c17b19d1645af355  gcc/testsuite/g++.dg/debug/pr54499.C
! 21517e22d71d412b5fe08293b2081097  gcc/testsuite/g++.dg/debug/pr54828.C
  5dc7cab98a90e4bc7730b184635619bd  gcc/testsuite/g++.dg/debug/pr54831.C
! 9d78da5e6dec6c0c05e25b98489fe8be  gcc/testsuite/g++.dg/debug/pr56294.C
! 0d1b1a30de5ef0c52bd95f99e1177bf0  gcc/testsuite/g++.dg/debug/pr56819.C
  41269ba367aaa19e5abac5932fdc247c  gcc/testsuite/g++.dg/debug/pr65678.C
  ccda43f2f659360264083e64ebc66d22  gcc/testsuite/g++.dg/debug/pr70271.C
! a3a11fbcbd0dfec7af753731b7dd95a1  gcc/testsuite/g++.dg/debug/pr71057.C
! cbcb3ca2d193fd2869909396fd350d4c  gcc/testsuite/g++.dg/debug/pr71432.C
  271f75e481615831453a65f49baedcd5  gcc/testsuite/g++.dg/debug/pr72808.C
! cb620ecdcf5127492c630c4b2400bbd6  gcc/testsuite/g++.dg/debug/pr80461.C
! dcf67ead0fe2bb68fc518e4789e519f2  gcc/testsuite/g++.dg/debug/pr84704.C
! 423c814771cf96308127152a6e56b792  gcc/testsuite/g++.dg/debug/pr84813.C
  a5e8d546d53a780cc3eb41574ea9f263  gcc/testsuite/g++.dg/debug/ra1.C
  c3f392076ad11f8768ef0321b89abd5f  gcc/testsuite/g++.dg/debug/static1.C
  7e13d86d33b17cfb7cdf61b7b8cca961  gcc/testsuite/g++.dg/debug/template1.C
*************** d4f839df58fe0f7f95cc2bf558eee2ff  gcc/te
*** 12807,12816 ****
  322399341fd8c6e34affaac64c72f457  gcc/testsuite/g++.dg/delayedfold/fwrapv1.C
  99f358e7fe81af5363dbf7c9db912938  gcc/testsuite/g++.dg/delayedfold/switch-1.C
  826d6a64cf151baeb4f6abc6b3e40e75  gcc/testsuite/g++.dg/delayedfold/unary-plus1.C
! 8fa7fae0969ea145d6ebdf95f4553797  gcc/testsuite/g++.dg/dfp/44473-1.C
! f7911d011adf83fd1a3094b207cc374e  gcc/testsuite/g++.dg/dfp/44473-2.C
  694614d4f71e398dcda11523059a774e  gcc/testsuite/g++.dg/dfp/base.C
! 1f1bbdfe483f38d8ed856319b582652f  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
--- 13501,13510 ----
  322399341fd8c6e34affaac64c72f457  gcc/testsuite/g++.dg/delayedfold/fwrapv1.C
  99f358e7fe81af5363dbf7c9db912938  gcc/testsuite/g++.dg/delayedfold/switch-1.C
  826d6a64cf151baeb4f6abc6b3e40e75  gcc/testsuite/g++.dg/delayedfold/unary-plus1.C
! 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
! de59c011a58a31914917c81eb112809b  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
*** 12819,12851 ****
  8b4d16a77a1edab85ee4c99fda03eb79  gcc/testsuite/g++.dg/dfp/mangle-mode.C
  3a865b01c504023d0b90b1f055163c6a  gcc/testsuite/g++.dg/dfp/nofields.C
  cd0133a632a541db051ef84d53754ac6  gcc/testsuite/g++.dg/dfp/typeid1.C
! c102701014fc1129be43b8db5e962ec7  gcc/testsuite/g++.dg/dg.exp
! 74a973a9bb2225ddd4f1d24ed76803df  gcc/testsuite/g++.dg/diagnostic/aka1.C
  cd7fb1e3d2bf20f2da89f2cb7951f644  gcc/testsuite/g++.dg/diagnostic/bad-binary-ops.C
  d7dcca6cdb24ff15a17be482e130bf4e  gcc/testsuite/g++.dg/diagnostic/bindings1.C
  424dce5e3d57a2b34afe27e7bbf2592d  gcc/testsuite/g++.dg/diagnostic/bitfld1.C
  f3c789df79994ad5c2e7bf06c592e5aa  gcc/testsuite/g++.dg/diagnostic/bitfld2.C
  4a4ed8a805a81f8726e0ba889c68ff19  gcc/testsuite/g++.dg/diagnostic/disable.C
  3127905a449847bc27a84d6b88588e2a  gcc/testsuite/g++.dg/diagnostic/expr1.C
  35450697df4db69677623dcc4bc44bf5  gcc/testsuite/g++.dg/diagnostic/inhibit-warn-1.C
  52261a78171046d8af667baa598b3996  gcc/testsuite/g++.dg/diagnostic/inhibit-warn-2.C
  f3b416e81c428ee9582715ac61d2b3d7  gcc/testsuite/g++.dg/diagnostic/method1.C
  87d8d501c7c4afd85a94fca95720d273  gcc/testsuite/g++.dg/diagnostic/parm1.C
  b925bc078075ee65909b19494337263e  gcc/testsuite/g++.dg/diagnostic/pr13981.C
  88fee03436512dbcf1e58122fba64aea  gcc/testsuite/g++.dg/diagnostic/pr58979.C
  7447a4913a5c3f623216b378589bebc7  gcc/testsuite/g++.dg/diagnostic/pr59838.C
  4a1d7e4cbcc6e8b23b2be621ad06aef0  gcc/testsuite/g++.dg/diagnostic/pr60862.C
  540fd9b471715b3b82276d5894381428  gcc/testsuite/g++.dg/diagnostic/pr61004.C
! b6ec792b4df38e4ceafea9af152538c0  gcc/testsuite/g++.dg/diagnostic/pr70105.C
  e663fed110055823719b26030cda69ac  gcc/testsuite/g++.dg/diagnostic/pr71075.C
  f1fa5cf0ff0d4ecdd2e636f162a3a570  gcc/testsuite/g++.dg/diagnostic/pr72803.C
! 91df374c8aee5a90dd28fd3ee9193d32  gcc/testsuite/g++.dg/diagnostic/pr77949.C
  29ed80e4986945b87f11fecaa93456ba  gcc/testsuite/g++.dg/diagnostic/pr79304.C
  70f43920199e24ee81a25dfafae68a98  gcc/testsuite/g++.dg/diagnostic/pr80473.C
  bb193b240fa78433d956d57357da2858  gcc/testsuite/g++.dg/diagnostic/ref1.C
  b70b854343c43b4b0eac609476ee8fc1  gcc/testsuite/g++.dg/diagnostic/ref2.C
  c5118b2b3d40ad89746624615a874180  gcc/testsuite/g++.dg/diagnostic/string-literal-concat.C
! 377fd16303af15e64634bcf5a5f91ddc  gcc/testsuite/g++.dg/diagnostic/variadic1.C
  c7f8ff703c53611ffdb66eccc4747879  gcc/testsuite/g++.dg/diagnostic/wrong-tag-1.C
  99f14d5ed8c140b0a7c970bb12a4c5f0  gcc/testsuite/g++.dg/eh/080514-1.C
  562ca7c694e89bb3ac76711c239d5c5e  gcc/testsuite/g++.dg/eh/alias1.C
--- 13513,13561 ----
  8b4d16a77a1edab85ee4c99fda03eb79  gcc/testsuite/g++.dg/dfp/mangle-mode.C
  3a865b01c504023d0b90b1f055163c6a  gcc/testsuite/g++.dg/dfp/nofields.C
  cd0133a632a541db051ef84d53754ac6  gcc/testsuite/g++.dg/dfp/typeid1.C
! c5532905744f20714886fc7734454289  gcc/testsuite/g++.dg/dg.exp
! acfb4c292cab52af7c96437dfeb91332  gcc/testsuite/g++.dg/diagnostic/aka1.C
! 6daf9c84b004ad38b36ca9e885175631  gcc/testsuite/g++.dg/diagnostic/aka2.C
  cd7fb1e3d2bf20f2da89f2cb7951f644  gcc/testsuite/g++.dg/diagnostic/bad-binary-ops.C
  d7dcca6cdb24ff15a17be482e130bf4e  gcc/testsuite/g++.dg/diagnostic/bindings1.C
  424dce5e3d57a2b34afe27e7bbf2592d  gcc/testsuite/g++.dg/diagnostic/bitfld1.C
  f3c789df79994ad5c2e7bf06c592e5aa  gcc/testsuite/g++.dg/diagnostic/bitfld2.C
  4a4ed8a805a81f8726e0ba889c68ff19  gcc/testsuite/g++.dg/diagnostic/disable.C
+ 526efa2a8771e0409f39701dd3fc5953  gcc/testsuite/g++.dg/diagnostic/duplicate1.C
  3127905a449847bc27a84d6b88588e2a  gcc/testsuite/g++.dg/diagnostic/expr1.C
+ dd6972e7b92113e6456388c099d1d0fc  gcc/testsuite/g++.dg/diagnostic/friend1.C
  35450697df4db69677623dcc4bc44bf5  gcc/testsuite/g++.dg/diagnostic/inhibit-warn-1.C
  52261a78171046d8af667baa598b3996  gcc/testsuite/g++.dg/diagnostic/inhibit-warn-2.C
+ 7e99ff48e79d6755cb527f36673cd061  gcc/testsuite/g++.dg/diagnostic/macro-arg-count.C
+ f75c82dfbdf0eea67c71d62ca274e22b  gcc/testsuite/g++.dg/diagnostic/member-decl-1.C
  f3b416e81c428ee9582715ac61d2b3d7  gcc/testsuite/g++.dg/diagnostic/method1.C
+ a57099362f24a92fdb8ee593039405ff  gcc/testsuite/g++.dg/diagnostic/nested-name-1.C
+ 443c7f6be6a87f3eac92c0be536133fe  gcc/testsuite/g++.dg/diagnostic/param-type-mismatch-2.C
+ 1989f2458c64b264815561b77b209329  gcc/testsuite/g++.dg/diagnostic/param-type-mismatch.C
  87d8d501c7c4afd85a94fca95720d273  gcc/testsuite/g++.dg/diagnostic/parm1.C
  b925bc078075ee65909b19494337263e  gcc/testsuite/g++.dg/diagnostic/pr13981.C
  88fee03436512dbcf1e58122fba64aea  gcc/testsuite/g++.dg/diagnostic/pr58979.C
  7447a4913a5c3f623216b378589bebc7  gcc/testsuite/g++.dg/diagnostic/pr59838.C
  4a1d7e4cbcc6e8b23b2be621ad06aef0  gcc/testsuite/g++.dg/diagnostic/pr60862.C
  540fd9b471715b3b82276d5894381428  gcc/testsuite/g++.dg/diagnostic/pr61004.C
! ea253ea1b6f786b57caf50f6d2752f95  gcc/testsuite/g++.dg/diagnostic/pr65923.C
! ced8e4f0eaa35fe2ce541d08b43e8097  gcc/testsuite/g++.dg/diagnostic/pr70105.C
  e663fed110055823719b26030cda69ac  gcc/testsuite/g++.dg/diagnostic/pr71075.C
  f1fa5cf0ff0d4ecdd2e636f162a3a570  gcc/testsuite/g++.dg/diagnostic/pr72803.C
! 3991530d258901456aa9f46c176e3156  gcc/testsuite/g++.dg/diagnostic/pr77949.C
! 9708862150e6af526a7566a30ec2fdd1  gcc/testsuite/g++.dg/diagnostic/pr79300.C
  29ed80e4986945b87f11fecaa93456ba  gcc/testsuite/g++.dg/diagnostic/pr79304.C
  70f43920199e24ee81a25dfafae68a98  gcc/testsuite/g++.dg/diagnostic/pr80473.C
+ 40d624f4e54935ff78f9b721cbb67401  gcc/testsuite/g++.dg/diagnostic/pr84138.C
+ 57b92c115e79109cf96eddc39b98af38  gcc/testsuite/g++.dg/diagnostic/pr85464.C
  bb193b240fa78433d956d57357da2858  gcc/testsuite/g++.dg/diagnostic/ref1.C
  b70b854343c43b4b0eac609476ee8fc1  gcc/testsuite/g++.dg/diagnostic/ref2.C
  c5118b2b3d40ad89746624615a874180  gcc/testsuite/g++.dg/diagnostic/string-literal-concat.C
! 0afd8f1b85bcfcca0e1fc015e51c70df  gcc/testsuite/g++.dg/diagnostic/unclosed-extern-c.C
! b7f5e1f6b72f1264ce2e8730582cc334  gcc/testsuite/g++.dg/diagnostic/unclosed-function.C
! ba6469f1b782e19346b02d71b3bc296e  gcc/testsuite/g++.dg/diagnostic/unclosed-namespace.C
! 570dbb042fd573648e202e46e6f691a3  gcc/testsuite/g++.dg/diagnostic/unclosed-struct.C
! 242539537e0b01ca558d91adcac7cb35  gcc/testsuite/g++.dg/diagnostic/variadic1.C
  c7f8ff703c53611ffdb66eccc4747879  gcc/testsuite/g++.dg/diagnostic/wrong-tag-1.C
  99f14d5ed8c140b0a7c970bb12a4c5f0  gcc/testsuite/g++.dg/eh/080514-1.C
  562ca7c694e89bb3ac76711c239d5c5e  gcc/testsuite/g++.dg/eh/alias1.C
*************** d6a2edbc35caa25cec47fb759e313e04  gcc/te
*** 12856,12865 ****
  7a789c5f5b392854e4bcc712122b232c  gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
  d4e8a0fe46920b2021613a1a745597e4  gcc/testsuite/g++.dg/eh/array1.C
  88ca3337a1391414cccfd8e3f11d8b42  gcc/testsuite/g++.dg/eh/async-unwind1.C
! 19d6742126b0e7e460dacf12c618df37  gcc/testsuite/g++.dg/eh/async-unwind2.C
! d328d30f0e0d0580bc6b86d63a2722e6  gcc/testsuite/g++.dg/eh/builtin1.C
! 25ad58c89497df097439f38260763d0b  gcc/testsuite/g++.dg/eh/builtin2.C
! 2d59aedceea832b594a3dbe333becfcf  gcc/testsuite/g++.dg/eh/builtin3.C
  d600e61118e165a8544e4a21e24396b0  gcc/testsuite/g++.dg/eh/builtin4.C
  98cf19968cec5fc832747640edb98eee  gcc/testsuite/g++.dg/eh/cast1.C
  396745d0c48e93d18fd067292d72181d  gcc/testsuite/g++.dg/eh/catch1.C
--- 13566,13575 ----
  7a789c5f5b392854e4bcc712122b232c  gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
  d4e8a0fe46920b2021613a1a745597e4  gcc/testsuite/g++.dg/eh/array1.C
  88ca3337a1391414cccfd8e3f11d8b42  gcc/testsuite/g++.dg/eh/async-unwind1.C
! 8c15167347f9d4cc57635e5a972d90ef  gcc/testsuite/g++.dg/eh/async-unwind2.C
! b9f64f18eca81e96e3ebd977319e1b79  gcc/testsuite/g++.dg/eh/builtin1.C
! cf2ee83accf5b8bc32948deeccb20e4c  gcc/testsuite/g++.dg/eh/builtin2.C
! 5f8f99eaafc1e0281b960d70d150372a  gcc/testsuite/g++.dg/eh/builtin3.C
  d600e61118e165a8544e4a21e24396b0  gcc/testsuite/g++.dg/eh/builtin4.C
  98cf19968cec5fc832747640edb98eee  gcc/testsuite/g++.dg/eh/cast1.C
  396745d0c48e93d18fd067292d72181d  gcc/testsuite/g++.dg/eh/catch1.C
*************** b6cd2e012197b87e353240d0e17623e0  gcc/te
*** 12872,12883 ****
  39018f18e1fc86801376affc388c0539  gcc/testsuite/g++.dg/eh/cleanup2.C
  a779539302385f915a13ecb1283ac58c  gcc/testsuite/g++.dg/eh/cleanup3.C
  fdfb8828613e7c687d87d7facb0e2135  gcc/testsuite/g++.dg/eh/cleanup4.C
! aa6038fb3f955b6019e1a056cca60f0c  gcc/testsuite/g++.dg/eh/cleanup5.C
  5a4cb3c8d739e6d9bde39ba9bebd19e2  gcc/testsuite/g++.dg/eh/comdat1.C
  bd6bd3cc57144658b6137dc9123743ed  gcc/testsuite/g++.dg/eh/cond1.C
  9218246502a1a48c13f74d67b4b19c2d  gcc/testsuite/g++.dg/eh/cond2.C
  a52fa6cd93c130963df8e930451d74a1  gcc/testsuite/g++.dg/eh/cond3.C
! 05fe7bf79ca3dff16638b3938d08508e  gcc/testsuite/g++.dg/eh/cond4.C
  8d0d0d1daa7ce211b24bfa05d2bcc16c  gcc/testsuite/g++.dg/eh/cond5.C
  e2de0bdd91c75a83e86d8e423986c99d  gcc/testsuite/g++.dg/eh/cond6.C
  43098e3dd291c59e61245771f6e306d0  gcc/testsuite/g++.dg/eh/crash1.C
--- 13582,13593 ----
  39018f18e1fc86801376affc388c0539  gcc/testsuite/g++.dg/eh/cleanup2.C
  a779539302385f915a13ecb1283ac58c  gcc/testsuite/g++.dg/eh/cleanup3.C
  fdfb8828613e7c687d87d7facb0e2135  gcc/testsuite/g++.dg/eh/cleanup4.C
! 374e1d6aca3b77423c5ac592a57b451a  gcc/testsuite/g++.dg/eh/cleanup5.C
  5a4cb3c8d739e6d9bde39ba9bebd19e2  gcc/testsuite/g++.dg/eh/comdat1.C
  bd6bd3cc57144658b6137dc9123743ed  gcc/testsuite/g++.dg/eh/cond1.C
  9218246502a1a48c13f74d67b4b19c2d  gcc/testsuite/g++.dg/eh/cond2.C
  a52fa6cd93c130963df8e930451d74a1  gcc/testsuite/g++.dg/eh/cond3.C
! 64c6e29e15ac61c617a159b4cc7dc043  gcc/testsuite/g++.dg/eh/cond4.C
  8d0d0d1daa7ce211b24bfa05d2bcc16c  gcc/testsuite/g++.dg/eh/cond5.C
  e2de0bdd91c75a83e86d8e423986c99d  gcc/testsuite/g++.dg/eh/cond6.C
  43098e3dd291c59e61245771f6e306d0  gcc/testsuite/g++.dg/eh/crash1.C
*************** e2de0bdd91c75a83e86d8e423986c99d  gcc/te
*** 12888,12899 ****
  e917a91ae5be207defc427d0a079f7e9  gcc/testsuite/g++.dg/eh/dead1.C
  87d9e27b3716eabb3dabd6b8b1a837e7  gcc/testsuite/g++.dg/eh/defarg1.C
  6d24a241b37d9461b161f8ce01317ab8  gcc/testsuite/g++.dg/eh/delayslot1.C
! 15945473bb73120eee9f8f8d5c6e42f5  gcc/testsuite/g++.dg/eh/delete1.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
! 4e49eae1c3bdf441d04c758b8d07644b  gcc/testsuite/g++.dg/eh/ehopt1.C
  b0ccd0dda5f78bbdc113e7d64bcbde3c  gcc/testsuite/g++.dg/eh/elide1.C
  4a5da75795bd16f83ee0a55370fa4396  gcc/testsuite/g++.dg/eh/elide2.C
  c6ed6afa9f180a60e542789d58e23a4a  gcc/testsuite/g++.dg/eh/filter1.C
--- 13598,13609 ----
  e917a91ae5be207defc427d0a079f7e9  gcc/testsuite/g++.dg/eh/dead1.C
  87d9e27b3716eabb3dabd6b8b1a837e7  gcc/testsuite/g++.dg/eh/defarg1.C
  6d24a241b37d9461b161f8ce01317ab8  gcc/testsuite/g++.dg/eh/delayslot1.C
! f030d79186c78f39f9a09e546ff44eab  gcc/testsuite/g++.dg/eh/delete1.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
! 577a8bcc0bf6327d41fd9c88307c7746  gcc/testsuite/g++.dg/eh/ehopt1.C
  b0ccd0dda5f78bbdc113e7d64bcbde3c  gcc/testsuite/g++.dg/eh/elide1.C
  4a5da75795bd16f83ee0a55370fa4396  gcc/testsuite/g++.dg/eh/elide2.C
  c6ed6afa9f180a60e542789d58e23a4a  gcc/testsuite/g++.dg/eh/filter1.C
*************** c6ed6afa9f180a60e542789d58e23a4a  gcc/te
*** 12901,12907 ****
  b9e40a9f396b0f5897d9a01a383448d0  gcc/testsuite/g++.dg/eh/forced1.C
  c57d00c7e2509174eb67af39ca23acc8  gcc/testsuite/g++.dg/eh/forced2.C
  5b5d48b7cc0c97e55932d8c409fcc8b5  gcc/testsuite/g++.dg/eh/forced3.C
! 711a108f64683b2a8b1bb91fd86e6d70  gcc/testsuite/g++.dg/eh/forced4.C
  2fa97d2eb1070b8ff9ed142189631d04  gcc/testsuite/g++.dg/eh/fp-regs.C
  08684655cbbdb7a5f4f96546c22535c1  gcc/testsuite/g++.dg/eh/gcsec1.C
  fa7c4733d09d80ea62bb08bcfe896fbb  gcc/testsuite/g++.dg/eh/goto1.C
--- 13611,13617 ----
  b9e40a9f396b0f5897d9a01a383448d0  gcc/testsuite/g++.dg/eh/forced1.C
  c57d00c7e2509174eb67af39ca23acc8  gcc/testsuite/g++.dg/eh/forced2.C
  5b5d48b7cc0c97e55932d8c409fcc8b5  gcc/testsuite/g++.dg/eh/forced3.C
! 59ef26e9718a21aaef4d713fbc8eebec  gcc/testsuite/g++.dg/eh/forced4.C
  2fa97d2eb1070b8ff9ed142189631d04  gcc/testsuite/g++.dg/eh/fp-regs.C
  08684655cbbdb7a5f4f96546c22535c1  gcc/testsuite/g++.dg/eh/gcsec1.C
  fa7c4733d09d80ea62bb08bcfe896fbb  gcc/testsuite/g++.dg/eh/goto1.C
*************** acb5eb6224971a20cf58d918cf380331  gcc/te
*** 12910,12916 ****
  83a9a4f114479e6635dd508a4994d73d  gcc/testsuite/g++.dg/eh/ia64-1.C
  770672d287d134821ae3d85a07f18e95  gcc/testsuite/g++.dg/eh/ia64-2.C
  c0abaf19bc6ccea1ddcd7d45a062e6f7  gcc/testsuite/g++.dg/eh/init-temp1.C
! 4da6f22d19b0a3ed8880acda3ff3833a  gcc/testsuite/g++.dg/eh/init-temp2.C
  8c375c2c927706fd09f5bb467654b648  gcc/testsuite/g++.dg/eh/loop1.C
  741a6b9a2519e96d9a6a3d7503d9cdfa  gcc/testsuite/g++.dg/eh/loop2.C
  c8f6f4459095bf15bd799a6d96061277  gcc/testsuite/g++.dg/eh/nested-try.C
--- 13620,13626 ----
  83a9a4f114479e6635dd508a4994d73d  gcc/testsuite/g++.dg/eh/ia64-1.C
  770672d287d134821ae3d85a07f18e95  gcc/testsuite/g++.dg/eh/ia64-2.C
  c0abaf19bc6ccea1ddcd7d45a062e6f7  gcc/testsuite/g++.dg/eh/init-temp1.C
! 1eb1116bf9154b81f997a84fe1ad053a  gcc/testsuite/g++.dg/eh/init-temp2.C
  8c375c2c927706fd09f5bb467654b648  gcc/testsuite/g++.dg/eh/loop1.C
  741a6b9a2519e96d9a6a3d7503d9cdfa  gcc/testsuite/g++.dg/eh/loop2.C
  c8f6f4459095bf15bd799a6d96061277  gcc/testsuite/g++.dg/eh/nested-try.C
*************** dfa0fe611ce9682e5de477f908c0b5c0  gcc/te
*** 12921,12972 ****
  b0149e5a2fbd5ae0fa0d1eb763a1f18e  gcc/testsuite/g++.dg/eh/partial1.C
  bafc15005abdfe9131f6074efde175eb  gcc/testsuite/g++.dg/eh/ppc64-sighandle-cr.C
  339f1ef3219aace218fecaa5c9b19c83  gcc/testsuite/g++.dg/eh/pr29166.C
! c34bb5cebc301b9d0f984c88e95977ca  gcc/testsuite/g++.dg/eh/pr38662.C
! 981e08e5c99b4920bd4bebf834b57f31  gcc/testsuite/g++.dg/eh/pr41819.C
  a081cebee3412cc144c315a53ce4d824  gcc/testsuite/g++.dg/eh/pr42859.C
  6b7a6fb9b5bb6227cd79629a94634556  gcc/testsuite/g++.dg/eh/pr43365.C
! 37a2850c4da2ab3228838db96491ed2b  gcc/testsuite/g++.dg/eh/pr45569.C
  a9ed8d0335c982c533cb9ab886ed3a49  gcc/testsuite/g++.dg/eh/registers1.C
  10cee1522872b7a635448041c93abb77  gcc/testsuite/g++.dg/eh/scope1.C
! d1baa8bde3e90f63f2fbac2c73adc2c0  gcc/testsuite/g++.dg/eh/shadow1.C
! 903ed37f1eb9c9dc4416168976ee3c8b  gcc/testsuite/g++.dg/eh/sighandle.C
  83a7ff2264ae46e51ffcca7ca6a7cf8c  gcc/testsuite/g++.dg/eh/simd-1.C
  8ca9b346be7f84c368ac74fd74ad5bbf  gcc/testsuite/g++.dg/eh/simd-2.C
  55e1817e6d2f866b9cd25ef5751e2b9c  gcc/testsuite/g++.dg/eh/simd-3.C
  d46aab23b9e76d1da7631a4184db1622  gcc/testsuite/g++.dg/eh/simd-4.C
  7bbbffa771c48a85ca22cc69554f7cc4  gcc/testsuite/g++.dg/eh/simd-5.C
! bec91ba8094ad48a689833e630aa2025  gcc/testsuite/g++.dg/eh/spbp.C
  82939fb6cdaf944681687fca28788638  gcc/testsuite/g++.dg/eh/spec1.C
  3d659e64086eab4c277f68cb3479ada7  gcc/testsuite/g++.dg/eh/spec10.C
  45bfdfe42eb7ac9675e33aa8fc84d845  gcc/testsuite/g++.dg/eh/spec11.C
! 22231a414307488d717cd5a883de3f36  gcc/testsuite/g++.dg/eh/spec2.C
! 7427deac8c50ec95f13ea7fbe03e76ff  gcc/testsuite/g++.dg/eh/spec3.C
  0d3eff3638fb4e06c734bdd63bc0e2e9  gcc/testsuite/g++.dg/eh/spec4.C
  d2956b622b8ec40e59157a07ef994ee1  gcc/testsuite/g++.dg/eh/spec5.C
  ea6e56fc5adfc29c16abb3088bd6d20c  gcc/testsuite/g++.dg/eh/spec6.C
! 80e2acb912a3b34f7917037d20e11ad0  gcc/testsuite/g++.dg/eh/spec7.C
! 9894887cc7b978c37e38c3f31f1d2e17  gcc/testsuite/g++.dg/eh/spec8.C
! 7e84236c32684ca3e880f30defed2cd1  gcc/testsuite/g++.dg/eh/spec9.C
  7c9d2a4fef98319bfc85567c627c041c  gcc/testsuite/g++.dg/eh/stabilize.C
  a7779dbda71e0e114b0807d5656ee400  gcc/testsuite/g++.dg/eh/stdarg1.C
  0293d33cc6e81e9a845dd2e5cbbbe43d  gcc/testsuite/g++.dg/eh/subreg-1.C
  f51a05dd556d82ff2c27ab64681114bb  gcc/testsuite/g++.dg/eh/synth1.C
  f0d76e8f2c70435a893be36ce22b7b72  gcc/testsuite/g++.dg/eh/synth2.C
  22d4b256b3f06b5f0d589c600aba29e4  gcc/testsuite/g++.dg/eh/table.C
! eb357ff54e0c8d94207c2b7ca6534054  gcc/testsuite/g++.dg/eh/template1.C
  919151216cf8524a1a108c5d27a7f3d1  gcc/testsuite/g++.dg/eh/template2.C
  fd9d6b2aeb10f429dd19c2675cd7ac03  gcc/testsuite/g++.dg/eh/terminate1.C
  7549d75346531f9c6ff9ee0763a142b5  gcc/testsuite/g++.dg/eh/throw1.C
  7f4aab5cdb2954060fab6ebdbf157a33  gcc/testsuite/g++.dg/eh/throw2.C
  45cea983dcee48d4c249758ac270c782  gcc/testsuite/g++.dg/eh/throw3.C
! c7d37e91415ca637d75ff50b8ef9cfe1  gcc/testsuite/g++.dg/eh/uncaught1.C
! c77f4b5da310cb17818365cde0e153dd  gcc/testsuite/g++.dg/eh/uncaught2.C
! 794cca1303d30d70c6d5c47c972e23a7  gcc/testsuite/g++.dg/eh/uncaught3.C
! fcfb3b280dbfcc3f1855c13475f2e865  gcc/testsuite/g++.dg/eh/uncaught4.C
  517827300493efe68758475aed8cb79f  gcc/testsuite/g++.dg/eh/unexpected1.C
  0dd221086ed06eda43a00693a7ba5e7a  gcc/testsuite/g++.dg/eh/unwind-direct.C
  75e632be1251d6094d2cf9147ed3621d  gcc/testsuite/g++.dg/eh/unwind1.C
! a758dbc649ac4070d4dbe5fa7130d1e5  gcc/testsuite/g++.dg/eh/unwind2.C
  03f11e36f8513bd32a5ba62702e7fb8b  gcc/testsuite/g++.dg/eh/weak1-a.cc
  6cee1c23f0666712b8cdd5e226b7e4c7  gcc/testsuite/g++.dg/eh/weak1.C
  4cf16a5e56e9a805e8cab8129d3ec12c  gcc/testsuite/g++.dg/expr/anew1.C
--- 13631,13683 ----
  b0149e5a2fbd5ae0fa0d1eb763a1f18e  gcc/testsuite/g++.dg/eh/partial1.C
  bafc15005abdfe9131f6074efde175eb  gcc/testsuite/g++.dg/eh/ppc64-sighandle-cr.C
  339f1ef3219aace218fecaa5c9b19c83  gcc/testsuite/g++.dg/eh/pr29166.C
! fa076f7aee99ba9138c0541bc50c2e01  gcc/testsuite/g++.dg/eh/pr38662.C
! 3c71b722751263d1baefa007004a90bb  gcc/testsuite/g++.dg/eh/pr41819.C
  a081cebee3412cc144c315a53ce4d824  gcc/testsuite/g++.dg/eh/pr42859.C
  6b7a6fb9b5bb6227cd79629a94634556  gcc/testsuite/g++.dg/eh/pr43365.C
! 6eb9d68250f630420d0fdb982047fe17  gcc/testsuite/g++.dg/eh/pr45569.C
! d38795dc5765c85251d1b51d2837fa65  gcc/testsuite/g++.dg/eh/pr84968.C
  a9ed8d0335c982c533cb9ab886ed3a49  gcc/testsuite/g++.dg/eh/registers1.C
  10cee1522872b7a635448041c93abb77  gcc/testsuite/g++.dg/eh/scope1.C
! 547af1555e324b8b3d2a1f0c78b1cb44  gcc/testsuite/g++.dg/eh/shadow1.C
! 0b7f44b1f10ab4162620a92c10798166  gcc/testsuite/g++.dg/eh/sighandle.C
  83a7ff2264ae46e51ffcca7ca6a7cf8c  gcc/testsuite/g++.dg/eh/simd-1.C
  8ca9b346be7f84c368ac74fd74ad5bbf  gcc/testsuite/g++.dg/eh/simd-2.C
  55e1817e6d2f866b9cd25ef5751e2b9c  gcc/testsuite/g++.dg/eh/simd-3.C
  d46aab23b9e76d1da7631a4184db1622  gcc/testsuite/g++.dg/eh/simd-4.C
  7bbbffa771c48a85ca22cc69554f7cc4  gcc/testsuite/g++.dg/eh/simd-5.C
! 07d357aaf982eecae2e6b5376bfd4a08  gcc/testsuite/g++.dg/eh/spbp.C
  82939fb6cdaf944681687fca28788638  gcc/testsuite/g++.dg/eh/spec1.C
  3d659e64086eab4c277f68cb3479ada7  gcc/testsuite/g++.dg/eh/spec10.C
  45bfdfe42eb7ac9675e33aa8fc84d845  gcc/testsuite/g++.dg/eh/spec11.C
! 79d3c7d1e2e8a3fb1d4e288c9eb4805f  gcc/testsuite/g++.dg/eh/spec2.C
! 84a85e53bf73e424f425d8e19700d42b  gcc/testsuite/g++.dg/eh/spec3.C
  0d3eff3638fb4e06c734bdd63bc0e2e9  gcc/testsuite/g++.dg/eh/spec4.C
  d2956b622b8ec40e59157a07ef994ee1  gcc/testsuite/g++.dg/eh/spec5.C
  ea6e56fc5adfc29c16abb3088bd6d20c  gcc/testsuite/g++.dg/eh/spec6.C
! 41baa90f169a63158582c183728e709d  gcc/testsuite/g++.dg/eh/spec7.C
! ec4f32430abb0de91bc3c7e60858537e  gcc/testsuite/g++.dg/eh/spec8.C
! 321cafdf0db23eec5dea620c22b1223b  gcc/testsuite/g++.dg/eh/spec9.C
  7c9d2a4fef98319bfc85567c627c041c  gcc/testsuite/g++.dg/eh/stabilize.C
  a7779dbda71e0e114b0807d5656ee400  gcc/testsuite/g++.dg/eh/stdarg1.C
  0293d33cc6e81e9a845dd2e5cbbbe43d  gcc/testsuite/g++.dg/eh/subreg-1.C
  f51a05dd556d82ff2c27ab64681114bb  gcc/testsuite/g++.dg/eh/synth1.C
  f0d76e8f2c70435a893be36ce22b7b72  gcc/testsuite/g++.dg/eh/synth2.C
  22d4b256b3f06b5f0d589c600aba29e4  gcc/testsuite/g++.dg/eh/table.C
! 773aa78f730481cb5e0d0287d9ef2d10  gcc/testsuite/g++.dg/eh/template1.C
  919151216cf8524a1a108c5d27a7f3d1  gcc/testsuite/g++.dg/eh/template2.C
  fd9d6b2aeb10f429dd19c2675cd7ac03  gcc/testsuite/g++.dg/eh/terminate1.C
  7549d75346531f9c6ff9ee0763a142b5  gcc/testsuite/g++.dg/eh/throw1.C
  7f4aab5cdb2954060fab6ebdbf157a33  gcc/testsuite/g++.dg/eh/throw2.C
  45cea983dcee48d4c249758ac270c782  gcc/testsuite/g++.dg/eh/throw3.C
! d949616391e9201fe80327c74d26daf0  gcc/testsuite/g++.dg/eh/uncaught1.C
! 0a4a6e449503f9ebd41b838472d08e86  gcc/testsuite/g++.dg/eh/uncaught2.C
! 9d1aa5beb1fa132e80d87d15ad2b9c90  gcc/testsuite/g++.dg/eh/uncaught3.C
! 99e4a259aad973b217052ad01fc8c886  gcc/testsuite/g++.dg/eh/uncaught4.C
  517827300493efe68758475aed8cb79f  gcc/testsuite/g++.dg/eh/unexpected1.C
  0dd221086ed06eda43a00693a7ba5e7a  gcc/testsuite/g++.dg/eh/unwind-direct.C
  75e632be1251d6094d2cf9147ed3621d  gcc/testsuite/g++.dg/eh/unwind1.C
! d0664ba773ff7e78659033ad657627df  gcc/testsuite/g++.dg/eh/unwind2.C
  03f11e36f8513bd32a5ba62702e7fb8b  gcc/testsuite/g++.dg/eh/weak1-a.cc
  6cee1c23f0666712b8cdd5e226b7e4c7  gcc/testsuite/g++.dg/eh/weak1.C
  4cf16a5e56e9a805e8cab8129d3ec12c  gcc/testsuite/g++.dg/expr/anew1.C
*************** c272c27e69863d4ba063be24a228ce5f  gcc/te
*** 12974,13003 ****
  88cfba5bf8bdd95998bb48be16446076  gcc/testsuite/g++.dg/expr/anew3.C
  bfeb38eba4e729358fcc5f4cb5c9dd13  gcc/testsuite/g++.dg/expr/anew4.C
  39cb0859475193884781cf1fe587c70e  gcc/testsuite/g++.dg/expr/assign1.C
  4e0c5b60b2779b95727ec7ec01b7d7c7  gcc/testsuite/g++.dg/expr/bitfield1.C
  bb9514ef20edb3b33f02c8b92b8a3e1a  gcc/testsuite/g++.dg/expr/bitfield10.C
! 9b500f05b28e7530fa125946e8e1b76a  gcc/testsuite/g++.dg/expr/bitfield11.C
  ac65084e9b69975292ff758f7f35b1c0  gcc/testsuite/g++.dg/expr/bitfield12.C
  38db662a9b8573d4e2269a76f0f370f9  gcc/testsuite/g++.dg/expr/bitfield2.C
  f37354f67dc8551d3eed61816f470391  gcc/testsuite/g++.dg/expr/bitfield3.C
! 3a781d3ecda40c26589fe6fb93e0b714  gcc/testsuite/g++.dg/expr/bitfield4.C
! f8f323e92b4bf00738c20b5f06dee872  gcc/testsuite/g++.dg/expr/bitfield5.C
! ee5ee24b66a3867d9d3086c707b308ec  gcc/testsuite/g++.dg/expr/bitfield6.C
  d7b50316002a163842608f185be9c7a2  gcc/testsuite/g++.dg/expr/bitfield7.C
  781063f5a0d1ba5f19965b3dec7d3ee0  gcc/testsuite/g++.dg/expr/bitfield8.C
  f7feef6eca2fd890a8914fedc2a62ddf  gcc/testsuite/g++.dg/expr/bitfield9.C
! 57f98174bbd3c62249042e46ca72c41a  gcc/testsuite/g++.dg/expr/bool1.C
  863ab5de11960b6302468e16665e31ec  gcc/testsuite/g++.dg/expr/bool2.C
! 1f8c33fb12e56ebcbafe78bb1a14b517  gcc/testsuite/g++.dg/expr/bool3.C
  207aa1057e3c1166054d2119be784a50  gcc/testsuite/g++.dg/expr/bool4.C
  a0495659bbf83abd2458f325006b8a92  gcc/testsuite/g++.dg/expr/bound-mem-fun.C
  ce7b6234ca0490c5f395644574322ca2  gcc/testsuite/g++.dg/expr/call1.C
! 11d589082fe10f4614aafaae41200569  gcc/testsuite/g++.dg/expr/call2.C
  48f5a43ff1e5828fea7abe0f02a4d13e  gcc/testsuite/g++.dg/expr/call3.C
  262e2a044016a13ee93fb310eff38bd2  gcc/testsuite/g++.dg/expr/call4.C
  47ee2e9f4d1f4caaa66273c534a05700  gcc/testsuite/g++.dg/expr/call5.C
  03136626af9595581e4d641695d4fae4  gcc/testsuite/g++.dg/expr/cast1.C
  234b04abbf4ba798c38bda66394b82a7  gcc/testsuite/g++.dg/expr/cast10.C
  12be7dc45a455eddda5ccfa91904739c  gcc/testsuite/g++.dg/expr/cast2.C
  43b3f0cf8dc0665f8a82af5379392da1  gcc/testsuite/g++.dg/expr/cast3.C
  ed8e65f6a9fb8340f4d8881b00bc8a62  gcc/testsuite/g++.dg/expr/cast4.C
--- 13685,13716 ----
  88cfba5bf8bdd95998bb48be16446076  gcc/testsuite/g++.dg/expr/anew3.C
  bfeb38eba4e729358fcc5f4cb5c9dd13  gcc/testsuite/g++.dg/expr/anew4.C
  39cb0859475193884781cf1fe587c70e  gcc/testsuite/g++.dg/expr/assign1.C
+ 1723ce2e07d2ea83eb69de8e2f9b8023  gcc/testsuite/g++.dg/expr/assign2.C
  4e0c5b60b2779b95727ec7ec01b7d7c7  gcc/testsuite/g++.dg/expr/bitfield1.C
  bb9514ef20edb3b33f02c8b92b8a3e1a  gcc/testsuite/g++.dg/expr/bitfield10.C
! dead63becb6af5adc9b2b0b82b42e2e2  gcc/testsuite/g++.dg/expr/bitfield11.C
  ac65084e9b69975292ff758f7f35b1c0  gcc/testsuite/g++.dg/expr/bitfield12.C
  38db662a9b8573d4e2269a76f0f370f9  gcc/testsuite/g++.dg/expr/bitfield2.C
  f37354f67dc8551d3eed61816f470391  gcc/testsuite/g++.dg/expr/bitfield3.C
! aa2e528f83fad09599d1e8b1b6919c65  gcc/testsuite/g++.dg/expr/bitfield4.C
! 6be96efb3bccd20287ffd4e7b82817f4  gcc/testsuite/g++.dg/expr/bitfield5.C
! df85b74698c5875d42fdc7b04d0265c2  gcc/testsuite/g++.dg/expr/bitfield6.C
  d7b50316002a163842608f185be9c7a2  gcc/testsuite/g++.dg/expr/bitfield7.C
  781063f5a0d1ba5f19965b3dec7d3ee0  gcc/testsuite/g++.dg/expr/bitfield8.C
  f7feef6eca2fd890a8914fedc2a62ddf  gcc/testsuite/g++.dg/expr/bitfield9.C
! 1bd1513c00b12bf0ae840209e0a4782d  gcc/testsuite/g++.dg/expr/bool1.C
  863ab5de11960b6302468e16665e31ec  gcc/testsuite/g++.dg/expr/bool2.C
! 9018e7b3b6139d03c4b8c9fea630edcc  gcc/testsuite/g++.dg/expr/bool3.C
  207aa1057e3c1166054d2119be784a50  gcc/testsuite/g++.dg/expr/bool4.C
  a0495659bbf83abd2458f325006b8a92  gcc/testsuite/g++.dg/expr/bound-mem-fun.C
  ce7b6234ca0490c5f395644574322ca2  gcc/testsuite/g++.dg/expr/call1.C
! 512b0d2bfbf76a594b90cac6c74cc5c1  gcc/testsuite/g++.dg/expr/call2.C
  48f5a43ff1e5828fea7abe0f02a4d13e  gcc/testsuite/g++.dg/expr/call3.C
  262e2a044016a13ee93fb310eff38bd2  gcc/testsuite/g++.dg/expr/call4.C
  47ee2e9f4d1f4caaa66273c534a05700  gcc/testsuite/g++.dg/expr/call5.C
  03136626af9595581e4d641695d4fae4  gcc/testsuite/g++.dg/expr/cast1.C
  234b04abbf4ba798c38bda66394b82a7  gcc/testsuite/g++.dg/expr/cast10.C
+ ac55f5f9fbcb01e9dc59e3d52a0a6de8  gcc/testsuite/g++.dg/expr/cast11.C
  12be7dc45a455eddda5ccfa91904739c  gcc/testsuite/g++.dg/expr/cast2.C
  43b3f0cf8dc0665f8a82af5379392da1  gcc/testsuite/g++.dg/expr/cast3.C
  ed8e65f6a9fb8340f4d8881b00bc8a62  gcc/testsuite/g++.dg/expr/cast4.C
*************** b27e986bef1cb10bc8c753783a8faee7  gcc/te
*** 13010,13016 ****
  3c180246d5162c05266af924ad6ac090  gcc/testsuite/g++.dg/expr/cond1.C
  20edede9a48ddc0bc93fb7444a1a8b69  gcc/testsuite/g++.dg/expr/cond10.C
  f131cd45dc233c5c2aea409de5326ad9  gcc/testsuite/g++.dg/expr/cond11.C
! 7c1069325007e7f4f7b1bb018727d4b6  gcc/testsuite/g++.dg/expr/cond12.C
  272c38f396728c93b39e428a306ee6a7  gcc/testsuite/g++.dg/expr/cond13.C
  9db946164c5356f1aa05faa2587c4a26  gcc/testsuite/g++.dg/expr/cond14.C
  9940c2a62890f4870b29a68d36aee007  gcc/testsuite/g++.dg/expr/cond2.C
--- 13723,13729 ----
  3c180246d5162c05266af924ad6ac090  gcc/testsuite/g++.dg/expr/cond1.C
  20edede9a48ddc0bc93fb7444a1a8b69  gcc/testsuite/g++.dg/expr/cond10.C
  f131cd45dc233c5c2aea409de5326ad9  gcc/testsuite/g++.dg/expr/cond11.C
! 79679fc1de2104f294f557096237605d  gcc/testsuite/g++.dg/expr/cond12.C
  272c38f396728c93b39e428a306ee6a7  gcc/testsuite/g++.dg/expr/cond13.C
  9db946164c5356f1aa05faa2587c4a26  gcc/testsuite/g++.dg/expr/cond14.C
  9940c2a62890f4870b29a68d36aee007  gcc/testsuite/g++.dg/expr/cond2.C
*************** b3b79503c02a3a734c756531304f5413  gcc/te
*** 13024,13029 ****
--- 13737,13744 ----
  40c29dc173bf365777a7de4d0970b286  gcc/testsuite/g++.dg/expr/copy1.C
  5943e958df776a88c39dc200ec5d291c  gcc/testsuite/g++.dg/expr/crash-1.C
  4ddfe508094ae855749b3a8b63fd8063  gcc/testsuite/g++.dg/expr/crash2.C
+ bf843c3a893bca0f49e83ea875e4b654  gcc/testsuite/g++.dg/expr/delete1.C
+ 1f37b2765fe7aeb4489ba4ddbe60eb27  gcc/testsuite/g++.dg/expr/div-by-zero1.C
  9d5cf39c983c84a125f2f1b0260eaca0  gcc/testsuite/g++.dg/expr/dtor1.C
  111307fdacdc039c0f0f30a644b1949d  gcc/testsuite/g++.dg/expr/dtor2.C
  bf7f67a5fc1bd44b05d5e417998e5219  gcc/testsuite/g++.dg/expr/dtor3.C
*************** cd7f4946b61f298e733a92601139e8ef  gcc/te
*** 13034,13045 ****
  a7b2ff0b7e3eb33ae39f51b9c2436899  gcc/testsuite/g++.dg/expr/incomplete1.C
  e9c430238d4efd57c1f944c12443406d  gcc/testsuite/g++.dg/expr/lval1.C
  512351301e4c678c8c359d27dd7ef411  gcc/testsuite/g++.dg/expr/lval2.C
! 9d80cb7e78511d3a35242f9637c8dbb5  gcc/testsuite/g++.dg/expr/lval3.C
! 4e49ce91e49c18cf0e6f8acab8fe2d61  gcc/testsuite/g++.dg/expr/lval4.C
! 0b5e348c921017780a4e80249591b84c  gcc/testsuite/g++.dg/expr/member-of-incomplete-type-1.C
  d8f214b2a524317298593b987cbb3087  gcc/testsuite/g++.dg/expr/minmax.C
  c58cd83dba14fdd69d32822d58dce947  gcc/testsuite/g++.dg/expr/overflow1.C
! 7d19686935c937ce519bfed87a168709  gcc/testsuite/g++.dg/expr/pmf-1.C
  b1bfb08b8dd0886fd13d34d4e48087cc  gcc/testsuite/g++.dg/expr/pmf-2.C
  e0ba8ce6144da0b9ed7164d2baac70c5  gcc/testsuite/g++.dg/expr/pr19355-1.C
  60bb03281297f707f9874467907ac6cf  gcc/testsuite/g++.dg/expr/pr29066.C
--- 13749,13760 ----
  a7b2ff0b7e3eb33ae39f51b9c2436899  gcc/testsuite/g++.dg/expr/incomplete1.C
  e9c430238d4efd57c1f944c12443406d  gcc/testsuite/g++.dg/expr/lval1.C
  512351301e4c678c8c359d27dd7ef411  gcc/testsuite/g++.dg/expr/lval2.C
! 8170c37ebaca18b78db20179b171f615  gcc/testsuite/g++.dg/expr/lval3.C
! 13884d0b2891cbb86afdcbc48d875d62  gcc/testsuite/g++.dg/expr/lval4.C
! 71e09d9a65ee6b00e80e78fcb1d9585b  gcc/testsuite/g++.dg/expr/member-of-incomplete-type-1.C
  d8f214b2a524317298593b987cbb3087  gcc/testsuite/g++.dg/expr/minmax.C
  c58cd83dba14fdd69d32822d58dce947  gcc/testsuite/g++.dg/expr/overflow1.C
! 5a2c6b276e9a66529949e5d4483f8dab  gcc/testsuite/g++.dg/expr/pmf-1.C
  b1bfb08b8dd0886fd13d34d4e48087cc  gcc/testsuite/g++.dg/expr/pmf-2.C
  e0ba8ce6144da0b9ed7164d2baac70c5  gcc/testsuite/g++.dg/expr/pr19355-1.C
  60bb03281297f707f9874467907ac6cf  gcc/testsuite/g++.dg/expr/pr29066.C
*************** b39edf0129c7b02d40dd1f8360666a7c  gcc/te
*** 13062,13068 ****
  3768ee52241cd5c440a86d1ecde9f029  gcc/testsuite/g++.dg/expr/static_cast4.C
  10a6604802b4ce916144cdc9ac8a3fc0  gcc/testsuite/g++.dg/expr/static_cast5.C
  b908cbd89626f67c64bd034d95994258  gcc/testsuite/g++.dg/expr/static_cast6.C
! b8bfe8def8203e08665d966c83e2738c  gcc/testsuite/g++.dg/expr/static_cast7.C
  d48c1940b3fda25f577c09c3d5b15f9c  gcc/testsuite/g++.dg/expr/stdarg1.C
  e24b5173fba586d4b40f5feb0d41bcf8  gcc/testsuite/g++.dg/expr/stdarg2.C
  0b7ae4a9368f3acb41b0a07584ddc2f9  gcc/testsuite/g++.dg/expr/stdarg3.C
--- 13777,13783 ----
  3768ee52241cd5c440a86d1ecde9f029  gcc/testsuite/g++.dg/expr/static_cast4.C
  10a6604802b4ce916144cdc9ac8a3fc0  gcc/testsuite/g++.dg/expr/static_cast5.C
  b908cbd89626f67c64bd034d95994258  gcc/testsuite/g++.dg/expr/static_cast6.C
! e8e93b32b872ea41d7d71e0ad3b52dd6  gcc/testsuite/g++.dg/expr/static_cast7.C
  d48c1940b3fda25f577c09c3d5b15f9c  gcc/testsuite/g++.dg/expr/stdarg1.C
  e24b5173fba586d4b40f5feb0d41bcf8  gcc/testsuite/g++.dg/expr/stdarg2.C
  0b7ae4a9368f3acb41b0a07584ddc2f9  gcc/testsuite/g++.dg/expr/stdarg3.C
*************** a2cb6541b849d8c33282f342e26447ca  gcc/te
*** 13073,13078 ****
--- 13788,13794 ----
  61339fcff4901b417b1fa8ede6e4a521  gcc/testsuite/g++.dg/expr/unary2.C
  50101473c07e54911f512727ba7f6cd4  gcc/testsuite/g++.dg/expr/unary3.C
  e639e926667ce8f9dee4e94ea0269323  gcc/testsuite/g++.dg/expr/volatile1.C
+ 5f6dc90ecc1bf243ae69988679b96ec4  gcc/testsuite/g++.dg/ext/80654.C
  7dfd2972b1402d4103976b061d5cbcd3  gcc/testsuite/g++.dg/ext/alias-canon.C
  d36f9d49ee39bbdeb5dec24146dbdc1d  gcc/testsuite/g++.dg/ext/alias-canon2.C
  d34fa2166247314c56eb1b0cb616d3b4  gcc/testsuite/g++.dg/ext/alias-canon3.C
*************** b7f5975e22585a2f3d80be63f70dccc8  gcc/te
*** 13084,13096 ****
  8086207ba3911ed58a971e642fbfdd29  gcc/testsuite/g++.dg/ext/align1.C
  9b72806f0ff8dd6bff6e2ef84f0ce102  gcc/testsuite/g++.dg/ext/align2.C
  ae6df71fd3bee2754f2c1b710ca23b88  gcc/testsuite/g++.dg/ext/alignof1.C
! e151939f5adf47a2bc58124b53a4606f  gcc/testsuite/g++.dg/ext/alignof2.C
  f94bcd708feb1a029065a7503b545f54  gcc/testsuite/g++.dg/ext/altivec-1.C
  11c64f0deba1e4621429dc584ee88ae4  gcc/testsuite/g++.dg/ext/altivec-10.C
  11e05978299d38b5d2b835ef7303988d  gcc/testsuite/g++.dg/ext/altivec-11.C
  ce4ff2095f5aadd1429d75f9964e3068  gcc/testsuite/g++.dg/ext/altivec-12.C
  8269af4690723c041adba936c4db6226  gcc/testsuite/g++.dg/ext/altivec-13.C
! 35f5233dc3266b57653c840644e9cbd2  gcc/testsuite/g++.dg/ext/altivec-14.C
  05aa93a27032c47400c1728d165f6aeb  gcc/testsuite/g++.dg/ext/altivec-15.C
  1f347fa1c57370132e750e4fb8b77f9d  gcc/testsuite/g++.dg/ext/altivec-16.C
  e7b8730e35adae22637664edfdba084d  gcc/testsuite/g++.dg/ext/altivec-17.C
--- 13800,13812 ----
  8086207ba3911ed58a971e642fbfdd29  gcc/testsuite/g++.dg/ext/align1.C
  9b72806f0ff8dd6bff6e2ef84f0ce102  gcc/testsuite/g++.dg/ext/align2.C
  ae6df71fd3bee2754f2c1b710ca23b88  gcc/testsuite/g++.dg/ext/alignof1.C
! eab7bc114d4867ceb8d4e9a258d67045  gcc/testsuite/g++.dg/ext/alignof2.C
  f94bcd708feb1a029065a7503b545f54  gcc/testsuite/g++.dg/ext/altivec-1.C
  11c64f0deba1e4621429dc584ee88ae4  gcc/testsuite/g++.dg/ext/altivec-10.C
  11e05978299d38b5d2b835ef7303988d  gcc/testsuite/g++.dg/ext/altivec-11.C
  ce4ff2095f5aadd1429d75f9964e3068  gcc/testsuite/g++.dg/ext/altivec-12.C
  8269af4690723c041adba936c4db6226  gcc/testsuite/g++.dg/ext/altivec-13.C
! 12b4431d53d79d271888051ac7a6c837  gcc/testsuite/g++.dg/ext/altivec-14.C
  05aa93a27032c47400c1728d165f6aeb  gcc/testsuite/g++.dg/ext/altivec-15.C
  1f347fa1c57370132e750e4fb8b77f9d  gcc/testsuite/g++.dg/ext/altivec-16.C
  e7b8730e35adae22637664edfdba084d  gcc/testsuite/g++.dg/ext/altivec-17.C
*************** dd9c52efe2c8d9b6297333f40984600a  gcc/te
*** 13107,13116 ****
  ee8876bb4c7e26216a124a7d6118d4ed  gcc/testsuite/g++.dg/ext/altivec-cell-2.C
  141d17972ddb9632037c663fb3999e80  gcc/testsuite/g++.dg/ext/altivec-cell-3.C
  a187c6adacfe593dd505a2340e53e439  gcc/testsuite/g++.dg/ext/altivec-cell-4.C
! 29cab7a77633102be8f79fea8bd692b1  gcc/testsuite/g++.dg/ext/altivec-cell-5.C
! 1db04504ce004854aaca0a08822acd51  gcc/testsuite/g++.dg/ext/altivec-types-1.C
! 388ac873a0dd6cda0acbd564876dc2e9  gcc/testsuite/g++.dg/ext/altivec-types-2.C
! 30a07083e6958ecd6a518b18392c201d  gcc/testsuite/g++.dg/ext/altivec-types-3.C
  44353ecc66faa31e60f8e0a690173f56  gcc/testsuite/g++.dg/ext/altivec-types-4.C
  644c5b82757cda2bb4ab9658b9dff77a  gcc/testsuite/g++.dg/ext/always_inline-1.C
  44b18dc394b2fe02bfec7111c89c3315  gcc/testsuite/g++.dg/ext/always_inline-2.C
--- 13823,13832 ----
  ee8876bb4c7e26216a124a7d6118d4ed  gcc/testsuite/g++.dg/ext/altivec-cell-2.C
  141d17972ddb9632037c663fb3999e80  gcc/testsuite/g++.dg/ext/altivec-cell-3.C
  a187c6adacfe593dd505a2340e53e439  gcc/testsuite/g++.dg/ext/altivec-cell-4.C
! cc9ef742610f22a59244e4dadcfabb8e  gcc/testsuite/g++.dg/ext/altivec-cell-5.C
! 772eadd4242b243e5e5a0efb88bedd97  gcc/testsuite/g++.dg/ext/altivec-types-1.C
! 7263da6aee0d862b959ff54189189998  gcc/testsuite/g++.dg/ext/altivec-types-2.C
! af5ab077811439033f9383ef557968f9  gcc/testsuite/g++.dg/ext/altivec-types-3.C
  44353ecc66faa31e60f8e0a690173f56  gcc/testsuite/g++.dg/ext/altivec-types-4.C
  644c5b82757cda2bb4ab9658b9dff77a  gcc/testsuite/g++.dg/ext/always_inline-1.C
  44b18dc394b2fe02bfec7111c89c3315  gcc/testsuite/g++.dg/ext/always_inline-2.C
*************** ffdb526972a39c85890c287c92939515  gcc/te
*** 13122,13128 ****
  5f70b0d4a3b1e3b8a10d06d54d63f427  gcc/testsuite/g++.dg/ext/anon-struct3.C
  3326283e48652640c3c66982c9b8d0ef  gcc/testsuite/g++.dg/ext/anon-struct4.C
  a883399d4251a031b0d761ef41a67f52  gcc/testsuite/g++.dg/ext/anon-struct5.C
! ee218be24254fe546d1263e5a6c1c644  gcc/testsuite/g++.dg/ext/anon-struct6.C
  2792f1c8cc3327e23d859e893eac1679  gcc/testsuite/g++.dg/ext/anon-struct7.C
  9ad9eafed83197342bcdbe7afa3a727f  gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-1.C
  888dbd717f5ba09e01e62616168dedf1  gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-2.C
--- 13838,13844 ----
  5f70b0d4a3b1e3b8a10d06d54d63f427  gcc/testsuite/g++.dg/ext/anon-struct3.C
  3326283e48652640c3c66982c9b8d0ef  gcc/testsuite/g++.dg/ext/anon-struct4.C
  a883399d4251a031b0d761ef41a67f52  gcc/testsuite/g++.dg/ext/anon-struct5.C
! 279d428f16d7874a83fa68c87e922993  gcc/testsuite/g++.dg/ext/anon-struct6.C
  2792f1c8cc3327e23d859e893eac1679  gcc/testsuite/g++.dg/ext/anon-struct7.C
  9ad9eafed83197342bcdbe7afa3a727f  gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-1.C
  888dbd717f5ba09e01e62616168dedf1  gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-2.C
*************** d377fb4f9ef6d1ed2029c1551ddf7e3b  gcc/te
*** 13144,13150 ****
  82e001dc60a8f36b8affdc7210de5b60  gcc/testsuite/g++.dg/ext/asm10.C
  25fbbf0ac13b6baebc40ebabaedfe317  gcc/testsuite/g++.dg/ext/asm11.C
  e44c9c980378260d4b601d86e9cc1197  gcc/testsuite/g++.dg/ext/asm12.C
! 0262e403551bf2b3da1b5f7349d74e00  gcc/testsuite/g++.dg/ext/asm13.C
  80a3695697c7262c931be9b1380fa283  gcc/testsuite/g++.dg/ext/asm2.C
  d79d3809a45ef739f741819f3a0e3979  gcc/testsuite/g++.dg/ext/asm3.C
  f8da779ccf232ebdb2dee94530a1bf48  gcc/testsuite/g++.dg/ext/asm4.C
--- 13860,13866 ----
  82e001dc60a8f36b8affdc7210de5b60  gcc/testsuite/g++.dg/ext/asm10.C
  25fbbf0ac13b6baebc40ebabaedfe317  gcc/testsuite/g++.dg/ext/asm11.C
  e44c9c980378260d4b601d86e9cc1197  gcc/testsuite/g++.dg/ext/asm12.C
! 8a1c270f6e9e5f738069b9ac0cb76038  gcc/testsuite/g++.dg/ext/asm13.C
  80a3695697c7262c931be9b1380fa283  gcc/testsuite/g++.dg/ext/asm2.C
  d79d3809a45ef739f741819f3a0e3979  gcc/testsuite/g++.dg/ext/asm3.C
  f8da779ccf232ebdb2dee94530a1bf48  gcc/testsuite/g++.dg/ext/asm4.C
*************** e5f9fb7d1c25afe2ab0823f495d251e5  gcc/te
*** 13160,13182 ****
  50fb8b6924b95bd4f52f0db40ed5d5ec  gcc/testsuite/g++.dg/ext/atomic-1.C
  7c55adab57f8900b7952c724d9d1ac37  gcc/testsuite/g++.dg/ext/atomic-2.C
  08df1b213d9eeb12775360e53eec043b  gcc/testsuite/g++.dg/ext/atomic-3.C
  f48f0952142f3f8ed8f9b4eb6628059f  gcc/testsuite/g++.dg/ext/attr-alias-1.C
  c21af9dbc94718fc298b5a372185c516  gcc/testsuite/g++.dg/ext/attr-alias-2.C
  c539a731f1a6de3f18f5433e194cc609  gcc/testsuite/g++.dg/ext/attr-alias-3.C
  b44f615c77cfca3c4f6dcb0aea852534  gcc/testsuite/g++.dg/ext/attr-aligned01.C
  c4d592607823e7f7c77865976b6361e7  gcc/testsuite/g++.dg/ext/attr-constructor1.C
  ad620f3309b132f76780e1b18d9ccf44  gcc/testsuite/g++.dg/ext/attr-deprecated-1.C
! 4cfeaac64b2b6474968c108ee206bc37  gcc/testsuite/g++.dg/ext/attr-ifunc-1.C
! 620342cf7dd87891e3a40fc63c98d22a  gcc/testsuite/g++.dg/ext/attr-ifunc-2.C
! 83efbf34de5241ab0549d1572e2ca5f8  gcc/testsuite/g++.dg/ext/attr-ifunc-3.C
! bd27697247540ba2feb467794ccaa56d  gcc/testsuite/g++.dg/ext/attr-ifunc-4.C
  5c2088defb983e68f4b6df2ee178d499  gcc/testsuite/g++.dg/ext/attr-used-1.C
  6ce972d5686790fe9c2f5bbd08661b2f  gcc/testsuite/g++.dg/ext/attrib1.C
  7e9f8e5acd7da503c63f6342955e1873  gcc/testsuite/g++.dg/ext/attrib10.C
  7d199628520ab2d84e8e00fc3200e683  gcc/testsuite/g++.dg/ext/attrib11.C
  c460ffd02f4c4ad800649b58a60f30e1  gcc/testsuite/g++.dg/ext/attrib12.C
  3c5631b027ef64c7af2375ff8239a83f  gcc/testsuite/g++.dg/ext/attrib13.C
! cad6da8a3195139936efb7226304caa3  gcc/testsuite/g++.dg/ext/attrib14.C
  39e052366a96099f26b671796340eb37  gcc/testsuite/g++.dg/ext/attrib15.C
  1feb907828c5492b83a6bb325e5a8f9c  gcc/testsuite/g++.dg/ext/attrib16.C
  5ce9613d48cc00994b9fa919e8cc1293  gcc/testsuite/g++.dg/ext/attrib17.C
--- 13876,13921 ----
  50fb8b6924b95bd4f52f0db40ed5d5ec  gcc/testsuite/g++.dg/ext/atomic-1.C
  7c55adab57f8900b7952c724d9d1ac37  gcc/testsuite/g++.dg/ext/atomic-2.C
  08df1b213d9eeb12775360e53eec043b  gcc/testsuite/g++.dg/ext/atomic-3.C
+ 3bd94d186fb606881384da59e8f70e70  gcc/testsuite/g++.dg/ext/atomic-4.C
  f48f0952142f3f8ed8f9b4eb6628059f  gcc/testsuite/g++.dg/ext/attr-alias-1.C
  c21af9dbc94718fc298b5a372185c516  gcc/testsuite/g++.dg/ext/attr-alias-2.C
  c539a731f1a6de3f18f5433e194cc609  gcc/testsuite/g++.dg/ext/attr-alias-3.C
  b44f615c77cfca3c4f6dcb0aea852534  gcc/testsuite/g++.dg/ext/attr-aligned01.C
+ 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
  ad620f3309b132f76780e1b18d9ccf44  gcc/testsuite/g++.dg/ext/attr-deprecated-1.C
! 4f52cf13191aac1dca2c63c401a89783  gcc/testsuite/g++.dg/ext/attr-deprecated-2.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
! 4c9a4160295d6aa1d9a41d5c3becda3d  gcc/testsuite/g++.dg/ext/attr-ifunc-4.C
! 96583150f525c2a86425aaae07be2f00  gcc/testsuite/g++.dg/ext/attr-ifunc-5.C
! e3fe48ccf2f2186a6de86a682b12e6c3  gcc/testsuite/g++.dg/ext/attr-malloc-2.C
! f05c94bbaabc6b13a21ceeeed4b48220  gcc/testsuite/g++.dg/ext/attr-malloc-3.C
! a30107bfcab6efaa41ebcfe3f43992ae  gcc/testsuite/g++.dg/ext/attr-malloc.C
! e838465650dcaf4ebfc99419e88cbd0d  gcc/testsuite/g++.dg/ext/attr-noinline-2.C
! b37c917c3a9e6449d44ee2d37a652ed1  gcc/testsuite/g++.dg/ext/attr-noinline-3.C
! c0753527e7e02acfc0eb52c0c85b43ad  gcc/testsuite/g++.dg/ext/attr-noinline-4.C
! ac8e92acc4020cb32c1c3e0a9dff5a30  gcc/testsuite/g++.dg/ext/attr-noinline.C
! 414cd616e0fbb3c53d2f8fa18c8a214d  gcc/testsuite/g++.dg/ext/attr-nonnull.C
! 6affbaf478378161ae232fe636e1999a  gcc/testsuite/g++.dg/ext/attr-noreturn-2.C
! 261c636a0b72a6f3c392a97843be46fd  gcc/testsuite/g++.dg/ext/attr-noreturn-3.C
! 4e6f03229f7a2fb9e6f4db04b2cc9ab7  gcc/testsuite/g++.dg/ext/attr-noreturn.C
! 098d13293a9865c0b49a859bb48903d1  gcc/testsuite/g++.dg/ext/attr-nothrow-2.C
! f3c9079f1057c4b34602ed3a7b2671f9  gcc/testsuite/g++.dg/ext/attr-nothrow-3.C
! 405e734c8da7e57f8e9ed4c91a2af6e5  gcc/testsuite/g++.dg/ext/attr-nothrow.C
! a087d8abbea086449d9ff285e2638cb8  gcc/testsuite/g++.dg/ext/attr-optimize.C
! 6c46559e7142685ab641751fe1177b7e  gcc/testsuite/g++.dg/ext/attr-pure.C
! c60919dcf9a8db1ecea88f410d733147  gcc/testsuite/g++.dg/ext/attr-returns-nonnull.C
  5c2088defb983e68f4b6df2ee178d499  gcc/testsuite/g++.dg/ext/attr-used-1.C
+ 758b042dd0d19638f99e51139b65df3d  gcc/testsuite/g++.dg/ext/attr-warning.C
  6ce972d5686790fe9c2f5bbd08661b2f  gcc/testsuite/g++.dg/ext/attrib1.C
  7e9f8e5acd7da503c63f6342955e1873  gcc/testsuite/g++.dg/ext/attrib10.C
  7d199628520ab2d84e8e00fc3200e683  gcc/testsuite/g++.dg/ext/attrib11.C
  c460ffd02f4c4ad800649b58a60f30e1  gcc/testsuite/g++.dg/ext/attrib12.C
  3c5631b027ef64c7af2375ff8239a83f  gcc/testsuite/g++.dg/ext/attrib13.C
! 7feb46d58e4a3f9443c9adaee646851c  gcc/testsuite/g++.dg/ext/attrib14.C
  39e052366a96099f26b671796340eb37  gcc/testsuite/g++.dg/ext/attrib15.C
  1feb907828c5492b83a6bb325e5a8f9c  gcc/testsuite/g++.dg/ext/attrib16.C
  5ce9613d48cc00994b9fa919e8cc1293  gcc/testsuite/g++.dg/ext/attrib17.C
*************** af25a0593501f973025a5ff65b1951fd  gcc/te
*** 13221,13226 ****
--- 13960,13967 ----
  6136f2f1b69139124690d5ee0b4696f9  gcc/testsuite/g++.dg/ext/attrib52.C
  d5961701242d16e54b0c0b02ea93c28f  gcc/testsuite/g++.dg/ext/attrib53.C
  cd699f5674b89b0d8312893e0921e784  gcc/testsuite/g++.dg/ext/attrib54.C
+ ee2835de4392f4a966affa761b794015  gcc/testsuite/g++.dg/ext/attrib55.C
+ 0a783da5db70479d5370ad342d74e1a2  gcc/testsuite/g++.dg/ext/attrib56.C
  76284b29c6fce52f56ddbcc04acd3a97  gcc/testsuite/g++.dg/ext/attrib6.C
  7af1e9265de26187b4a3a3880f99ac11  gcc/testsuite/g++.dg/ext/attrib7.C
  23c4a640241391acec5a1fd2c3fa5f25  gcc/testsuite/g++.dg/ext/attrib8.C
*************** e2de938850cd9962c18c0007baaec934  gcc/te
*** 13235,13246 ****
  6ed72516e9f4d78a022f1835bdb61857  gcc/testsuite/g++.dg/ext/attribute-test-3.C
  fc54da8c09474e6aa630170df92c6131  gcc/testsuite/g++.dg/ext/attribute-test-4.C
  eaf75750cddfa9e45aeb6ff3b41b6de2  gcc/testsuite/g++.dg/ext/bases.C
! 83e5a42081115e5b701e9a785f83deaa  gcc/testsuite/g++.dg/ext/bases2.C
  923b176668f5084b5c9e372d30ecd044  gcc/testsuite/g++.dg/ext/bitfield1.C
  c96e03b84c7e1cbbeb5d28b361467e3f  gcc/testsuite/g++.dg/ext/bitfield2.C
  7f576a1821fbfcaac12d0427c7c95262  gcc/testsuite/g++.dg/ext/bitfield3.C
  27e7f277d640d9764e58437f0345ad9d  gcc/testsuite/g++.dg/ext/bitfield4.C
  63134a6f65156e17a7ff7c98dfcea812  gcc/testsuite/g++.dg/ext/bitfield5.C
  1371f46aed56d32c7b6433596ea7eacf  gcc/testsuite/g++.dg/ext/boolcomplex-1.c
  f858ebd95b83f4b214a9ef94ced0beb5  gcc/testsuite/g++.dg/ext/builtin-arith-overflow-1.C
  85ec4b83c9e5b2bc81e40e73aa3f129b  gcc/testsuite/g++.dg/ext/builtin-arith-overflow-2.C
--- 13976,13992 ----
  6ed72516e9f4d78a022f1835bdb61857  gcc/testsuite/g++.dg/ext/attribute-test-3.C
  fc54da8c09474e6aa630170df92c6131  gcc/testsuite/g++.dg/ext/attribute-test-4.C
  eaf75750cddfa9e45aeb6ff3b41b6de2  gcc/testsuite/g++.dg/ext/bases.C
! 04ec7dfbe34b1cf4d456d6205af4fb8f  gcc/testsuite/g++.dg/ext/bases2.C
! d50bde0e4438bca5f499291e8e266e7c  gcc/testsuite/g++.dg/ext/bases3.C
  923b176668f5084b5c9e372d30ecd044  gcc/testsuite/g++.dg/ext/bitfield1.C
  c96e03b84c7e1cbbeb5d28b361467e3f  gcc/testsuite/g++.dg/ext/bitfield2.C
  7f576a1821fbfcaac12d0427c7c95262  gcc/testsuite/g++.dg/ext/bitfield3.C
  27e7f277d640d9764e58437f0345ad9d  gcc/testsuite/g++.dg/ext/bitfield4.C
  63134a6f65156e17a7ff7c98dfcea812  gcc/testsuite/g++.dg/ext/bitfield5.C
+ dcb61316c0f1ade91e6e2073e223bb73  gcc/testsuite/g++.dg/ext/bitfield6.C
+ 0bb7d7fb8e7941c2b887e97c4e4eaeee  gcc/testsuite/g++.dg/ext/bitfield7.C
+ 2a578b0c3d2d59e741cf5ff41b1559a2  gcc/testsuite/g++.dg/ext/bitfield8.C
+ aee0568fa7f966a2398438c01e48d5d8  gcc/testsuite/g++.dg/ext/bitfield9.C
  1371f46aed56d32c7b6433596ea7eacf  gcc/testsuite/g++.dg/ext/boolcomplex-1.c
  f858ebd95b83f4b214a9ef94ced0beb5  gcc/testsuite/g++.dg/ext/builtin-arith-overflow-1.C
  85ec4b83c9e5b2bc81e40e73aa3f129b  gcc/testsuite/g++.dg/ext/builtin-arith-overflow-2.C
*************** fff9b32833bf9b9b7bbcc10ac630a0d9  gcc/te
*** 13248,13258 ****
  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
! 6cb327b0406f485f5974d4853b2280b5  gcc/testsuite/g++.dg/ext/builtin-object-size3.C
! e84d64a7fbea15d590f3a2780abeffe4  gcc/testsuite/g++.dg/ext/builtin-offsetof1.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
  4b79f0ca012fab75e5085a3acc4d333d  gcc/testsuite/g++.dg/ext/builtin2.C
  3fe483f5be2f7d7e3d26cd0d4864ba98  gcc/testsuite/g++.dg/ext/builtin3.C
  7c883048f0ed19d3dcbf405e1cf70cd0  gcc/testsuite/g++.dg/ext/builtin30.C
--- 13994,14008 ----
  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
! 03868b51a83cebe5d5cb047444c07075  gcc/testsuite/g++.dg/ext/builtin-offsetof3.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
+ 37c90bd75d238839255f0ee41d62aaab  gcc/testsuite/g++.dg/ext/builtin12.C
+ 37b1b92015b909a10a6517be87a9172f  gcc/testsuite/g++.dg/ext/builtin13.C
  4b79f0ca012fab75e5085a3acc4d333d  gcc/testsuite/g++.dg/ext/builtin2.C
  3fe483f5be2f7d7e3d26cd0d4864ba98  gcc/testsuite/g++.dg/ext/builtin3.C
  7c883048f0ed19d3dcbf405e1cf70cd0  gcc/testsuite/g++.dg/ext/builtin30.C
*************** b3ade7e70b55fd412f8cc8c612a00fac  gcc/te
*** 13273,13279 ****
  b225423f348683bb99a438ddffd8532e  gcc/testsuite/g++.dg/ext/cleanup-2.C
  8947a9ede099a6adc4fdf950293341b9  gcc/testsuite/g++.dg/ext/cleanup-3.C
  95a700f1b361b8b7247dd036428905d7  gcc/testsuite/g++.dg/ext/cleanup-4.C
! 5163d55058f3e9b1c2787f0e8f021dff  gcc/testsuite/g++.dg/ext/cleanup-5.C
  d9e45b781a97ee5ac71b788011eae52c  gcc/testsuite/g++.dg/ext/cleanup-6.C
  2c0a040f8982fab55d7fb8cb41b02b30  gcc/testsuite/g++.dg/ext/cleanup-8.C
  a953d4d67799b505e0722567b09482a7  gcc/testsuite/g++.dg/ext/cleanup-9.C
--- 14023,14029 ----
  b225423f348683bb99a438ddffd8532e  gcc/testsuite/g++.dg/ext/cleanup-2.C
  8947a9ede099a6adc4fdf950293341b9  gcc/testsuite/g++.dg/ext/cleanup-3.C
  95a700f1b361b8b7247dd036428905d7  gcc/testsuite/g++.dg/ext/cleanup-4.C
! 1309e668249e2122a3a61a96dc4db3dd  gcc/testsuite/g++.dg/ext/cleanup-5.C
  d9e45b781a97ee5ac71b788011eae52c  gcc/testsuite/g++.dg/ext/cleanup-6.C
  2c0a040f8982fab55d7fb8cb41b02b30  gcc/testsuite/g++.dg/ext/cleanup-8.C
  a953d4d67799b505e0722567b09482a7  gcc/testsuite/g++.dg/ext/cleanup-9.C
*************** fc4c3dfc15df590705add4def1833513  gcc/te
*** 13287,13293 ****
  a2e70aa0695a209f89997a3a585cda4e  gcc/testsuite/g++.dg/ext/complex7.C
  2e8503f2c902483c4d675ad10faaf1b6  gcc/testsuite/g++.dg/ext/complex8.C
  98da94d26821375de5aaa405c1b2a98a  gcc/testsuite/g++.dg/ext/complex9.C
! 5163e6d885c069c6cf53f4a8afd5e3c8  gcc/testsuite/g++.dg/ext/complit1.C
  3cf8f5d118ccef5a3e2d44a12df39f35  gcc/testsuite/g++.dg/ext/complit10.C
  ad9b04984e82c2e0e1fb2025de8f9a23  gcc/testsuite/g++.dg/ext/complit11.C
  ab6acb4a7c8c1d0b3e7717da4ac42983  gcc/testsuite/g++.dg/ext/complit12.C
--- 14037,14043 ----
  a2e70aa0695a209f89997a3a585cda4e  gcc/testsuite/g++.dg/ext/complex7.C
  2e8503f2c902483c4d675ad10faaf1b6  gcc/testsuite/g++.dg/ext/complex8.C
  98da94d26821375de5aaa405c1b2a98a  gcc/testsuite/g++.dg/ext/complex9.C
! 3170200144716632520449ad8a63dce2  gcc/testsuite/g++.dg/ext/complit1.C
  3cf8f5d118ccef5a3e2d44a12df39f35  gcc/testsuite/g++.dg/ext/complit10.C
  ad9b04984e82c2e0e1fb2025de8f9a23  gcc/testsuite/g++.dg/ext/complit11.C
  ab6acb4a7c8c1d0b3e7717da4ac42983  gcc/testsuite/g++.dg/ext/complit12.C
*************** e710a424682710a7b643aeb0875d892d  gcc/te
*** 13305,13324 ****
  cfb1e3d3e6cedd5cd651ea51248b3822  gcc/testsuite/g++.dg/ext/cond1.C
  b619a632f099ce3dab4b1867824fb8ba  gcc/testsuite/g++.dg/ext/cond2.C
  6f06936a70e143d2d4010948b821e19a  gcc/testsuite/g++.dg/ext/constexpr-pr82781.C
! e2d0f79e10c42a058fadb33dbc7e385e  gcc/testsuite/g++.dg/ext/constexpr-vla1.C
! 62632ebe8674e206cc6d2b853b566885  gcc/testsuite/g++.dg/ext/constexpr-vla2.C
! 683cd918ca0fceda3fa2547d2b8f259b  gcc/testsuite/g++.dg/ext/constexpr-vla3.C
  b1566206f932f28f1735fbaf347ef172  gcc/testsuite/g++.dg/ext/constexpr-vla4.C
  10abc828e1142ff735666c5c8f9d280f  gcc/testsuite/g++.dg/ext/construct1.C
  356f009d32e7c4d124b9aff9f08aa85b  gcc/testsuite/g++.dg/ext/conv1.C
  739dd1176941bfc4e49f4d7f144da1d3  gcc/testsuite/g++.dg/ext/desig1.C
! a3a3ed9db90b671ac74a4c8ad63238bd  gcc/testsuite/g++.dg/ext/desig2.C
  6aa84e0888c3e522be50c83f640eb04f  gcc/testsuite/g++.dg/ext/desig3.C
! afa06d112f4da44d8346101b535c599a  gcc/testsuite/g++.dg/ext/desig4.C
! b239fd6089caa55c13edcf0be7c6740c  gcc/testsuite/g++.dg/ext/desig5.C
  8d6356542b4a9a08cbf58a3a62006a65  gcc/testsuite/g++.dg/ext/desig6.C
  48f719a1cde6dc4d7533b144d13a3e7f  gcc/testsuite/g++.dg/ext/desig7.C
! 8a9cbaa2a7ad8232d1150cd41f87321c  gcc/testsuite/g++.dg/ext/desig8.C
  074eff0b52262e8cadfc7165db4809ad  gcc/testsuite/g++.dg/ext/dll-MI1.h
  b599bb18b6845feb89174012bf64bcf1  gcc/testsuite/g++.dg/ext/dllexport-MI1.C
  5941af8a426305b84a6c76756f6dd8f7  gcc/testsuite/g++.dg/ext/dllexport1.C
--- 14055,14080 ----
  cfb1e3d3e6cedd5cd651ea51248b3822  gcc/testsuite/g++.dg/ext/cond1.C
  b619a632f099ce3dab4b1867824fb8ba  gcc/testsuite/g++.dg/ext/cond2.C
  6f06936a70e143d2d4010948b821e19a  gcc/testsuite/g++.dg/ext/constexpr-pr82781.C
! 95dfcb8e89d2fa084984e81e3f62b2bf  gcc/testsuite/g++.dg/ext/constexpr-vla1.C
! ba878aa75a253b145058dbc00d19f0e0  gcc/testsuite/g++.dg/ext/constexpr-vla2.C
! f8121f8695bad95db22d9209cbbb40da  gcc/testsuite/g++.dg/ext/constexpr-vla3.C
  b1566206f932f28f1735fbaf347ef172  gcc/testsuite/g++.dg/ext/constexpr-vla4.C
+ 014f0710fa74daee4f733280392123e4  gcc/testsuite/g++.dg/ext/constexpr-vla5.C
  10abc828e1142ff735666c5c8f9d280f  gcc/testsuite/g++.dg/ext/construct1.C
  356f009d32e7c4d124b9aff9f08aa85b  gcc/testsuite/g++.dg/ext/conv1.C
+ 23a3636722151d503a22f1be497277f0  gcc/testsuite/g++.dg/ext/deprecate-1.C
+ d7e31c37139238d965ce29bfb25cd3ce  gcc/testsuite/g++.dg/ext/deprecate-2.C
  739dd1176941bfc4e49f4d7f144da1d3  gcc/testsuite/g++.dg/ext/desig1.C
! 501a09c28c6401b7eecb049ba7088ea6  gcc/testsuite/g++.dg/ext/desig10.C
! 621fa452bcd6171fb15478213e76defe  gcc/testsuite/g++.dg/ext/desig11.C
! f27fbfcb6cc0abd71969d8836702e9aa  gcc/testsuite/g++.dg/ext/desig2.C
  6aa84e0888c3e522be50c83f640eb04f  gcc/testsuite/g++.dg/ext/desig3.C
! 12b2924e4a711fa1185700309cca4310  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
! 3516c9408fd233cf8a25c9a86df0bb6a  gcc/testsuite/g++.dg/ext/desig8.C
! 73bab273b0f3b0fb036287b21d48980a  gcc/testsuite/g++.dg/ext/desig9.C
  074eff0b52262e8cadfc7165db4809ad  gcc/testsuite/g++.dg/ext/dll-MI1.h
  b599bb18b6845feb89174012bf64bcf1  gcc/testsuite/g++.dg/ext/dllexport-MI1.C
  5941af8a426305b84a6c76756f6dd8f7  gcc/testsuite/g++.dg/ext/dllexport1.C
*************** c0dc41d4a72302e0ac9ef29725c83d30  gcc/te
*** 13353,13359 ****
  d8230ac963e113856e88d27e0ac95a94  gcc/testsuite/g++.dg/ext/flexary10.C
  c11d1aea470fde74897641e193eb72ce  gcc/testsuite/g++.dg/ext/flexary11.C
  1d094bc73be36491ce42d5de9da0b306  gcc/testsuite/g++.dg/ext/flexary12.C
! 53628223a07c6bbfb1cd7aef3f2b93cf  gcc/testsuite/g++.dg/ext/flexary13.C
  00bb7e441b1983a9f308fadab543e4ca  gcc/testsuite/g++.dg/ext/flexary14.C
  aaba8fe44d3e6fec2f01feeb83885ba8  gcc/testsuite/g++.dg/ext/flexary15.C
  19e84e6d2abc3ebbbde103ece88f5699  gcc/testsuite/g++.dg/ext/flexary16.C
--- 14109,14115 ----
  d8230ac963e113856e88d27e0ac95a94  gcc/testsuite/g++.dg/ext/flexary10.C
  c11d1aea470fde74897641e193eb72ce  gcc/testsuite/g++.dg/ext/flexary11.C
  1d094bc73be36491ce42d5de9da0b306  gcc/testsuite/g++.dg/ext/flexary12.C
! 3d06b78baca8a3300b599dc413d4643b  gcc/testsuite/g++.dg/ext/flexary13.C
  00bb7e441b1983a9f308fadab543e4ca  gcc/testsuite/g++.dg/ext/flexary14.C
  aaba8fe44d3e6fec2f01feeb83885ba8  gcc/testsuite/g++.dg/ext/flexary15.C
  19e84e6d2abc3ebbbde103ece88f5699  gcc/testsuite/g++.dg/ext/flexary16.C
*************** fa0fdbfe242e37c8962c867f656e7e36  gcc/te
*** 13365,13371 ****
--- 14121,14133 ----
  3348bb484eb10054eb07c59ba6c7b9e5  gcc/testsuite/g++.dg/ext/flexary22.C
  f1c4a8c29985318295579ac9077ee176  gcc/testsuite/g++.dg/ext/flexary23.C
  799928c572de3a0a1d8c1318932df135  gcc/testsuite/g++.dg/ext/flexary24.C
+ 7996826fbbb7332f788ffb8160006745  gcc/testsuite/g++.dg/ext/flexary25.C
+ 967df104068cdddac62509ac55984039  gcc/testsuite/g++.dg/ext/flexary26.C
+ c64fd3174346cc184f28fe7254d9fb3c  gcc/testsuite/g++.dg/ext/flexary27.C
+ c1e635c954030e7a49c5a15d469f0933  gcc/testsuite/g++.dg/ext/flexary28.C
+ 119df814ca2920e1cbbb76f8378f4897  gcc/testsuite/g++.dg/ext/flexary29.C
  21926590c31816347bbb7ba438127f63  gcc/testsuite/g++.dg/ext/flexary3.C
+ 4a3b7f4deda6d57018846db88d1d2c1e  gcc/testsuite/g++.dg/ext/flexary30.C
  3d3772048887cc532cac316c5dfc3727  gcc/testsuite/g++.dg/ext/flexary4.C
  0cdb8ed93bc6d926326dda41fc92d614  gcc/testsuite/g++.dg/ext/flexary5.C
  57643e50a930f6d1e7ea68411e707a26  gcc/testsuite/g++.dg/ext/flexary6.C
*************** b00280f53981a2f30c8d4b894c33962c  gcc/te
*** 13376,13406 ****
  a06d181d1f37ed4bbf17112c988f9608  gcc/testsuite/g++.dg/ext/fnname2.C
  9e62aa095a73cd8f1f5e3c31669594cd  gcc/testsuite/g++.dg/ext/fnname3.C
  7201a84abcaa3ac89c91328b3625f57d  gcc/testsuite/g++.dg/ext/fnname4.C
! ddff3d312dcb75275526c22a8eb2891b  gcc/testsuite/g++.dg/ext/forscope1.C
! fdf2778d6820c63532a48a3f3fcbd906  gcc/testsuite/g++.dg/ext/forscope2.C
  60898b718df5cec3ef7222e3b1257e0f  gcc/testsuite/g++.dg/ext/fpreg1.C
  653367c82c3f5a9a42dfc8ce52f23ec3  gcc/testsuite/g++.dg/ext/gnu-inline-anon-namespace.C
  3b39aa1a4010d4127a39b9443b421c4c  gcc/testsuite/g++.dg/ext/gnu-inline-class-static.C
  3e9228fd78fc3a72b584e4e2eaab7d3f  gcc/testsuite/g++.dg/ext/gnu-inline-class.C
  b861e559b4d837b0c6576827bfaf08ec  gcc/testsuite/g++.dg/ext/gnu-inline-common.h
  83baade7989ec401bd49db5363e07e77  gcc/testsuite/g++.dg/ext/gnu-inline-global-redecl.C
! 250e029dc522f4bb52e990f182b032d6  gcc/testsuite/g++.dg/ext/gnu-inline-global-reject.C
  3e78535e0258846fa466a40475303131  gcc/testsuite/g++.dg/ext/gnu-inline-global.C
  b4a8192e545a20f5b7dea0d9fb8a6f63  gcc/testsuite/g++.dg/ext/gnu-inline-namespace.C
  58f8a0136cdff73766d2255387d3090e  gcc/testsuite/g++.dg/ext/gnu-inline-template-class.C
  df8bb001c84f32307c935ddafd4b28e1  gcc/testsuite/g++.dg/ext/gnu-inline-template-func.C
! a201ea5779fd653b995ccdd9e43c862a  gcc/testsuite/g++.dg/ext/has_nothrow_assign.C
! 0c4a4d6a159a48a564551033ebb89c18  gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C
  03de00c47fa1299568fc9448844b0a4a  gcc/testsuite/g++.dg/ext/has_nothrow_constructor-2.C
! d4b9babfe3dd82672b63883c974a927a  gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C
  9ab0d0de30743cb9e3866cc5d6e0bea8  gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C
! 2fee753475787547e277f7408ebe0628  gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C
! 38f3f900d39d3c59c5efdfd2140a063d  gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C
  342fa7cf8c1da3204825904ac42f1aaa  gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C
! 447516956a264e1ca0644099919d7cc4  gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C
! bcd0e3084bdb8d040f466687c4773d50  gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C
! c968fd1240d09f66a52537ec60d38bde  gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C
! d8350ed44871348d342aa0e7dd2727c0  gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C
  957a747dcb57b75abba668e22763b617  gcc/testsuite/g++.dg/ext/has_nothrow_copy-8.C
  326f3135872905cc190039b1e9eb418b  gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C
  c6f0545bc1364e6c2ba02db17185d224  gcc/testsuite/g++.dg/ext/has_trivial_assign.C
--- 14138,14168 ----
  a06d181d1f37ed4bbf17112c988f9608  gcc/testsuite/g++.dg/ext/fnname2.C
  9e62aa095a73cd8f1f5e3c31669594cd  gcc/testsuite/g++.dg/ext/fnname3.C
  7201a84abcaa3ac89c91328b3625f57d  gcc/testsuite/g++.dg/ext/fnname4.C
! de5bafbc50abc6a5d18af82d5bfd6a6b  gcc/testsuite/g++.dg/ext/forscope1.C
! 211556c817b22c01d11369eb30f00388  gcc/testsuite/g++.dg/ext/forscope2.C
  60898b718df5cec3ef7222e3b1257e0f  gcc/testsuite/g++.dg/ext/fpreg1.C
  653367c82c3f5a9a42dfc8ce52f23ec3  gcc/testsuite/g++.dg/ext/gnu-inline-anon-namespace.C
  3b39aa1a4010d4127a39b9443b421c4c  gcc/testsuite/g++.dg/ext/gnu-inline-class-static.C
  3e9228fd78fc3a72b584e4e2eaab7d3f  gcc/testsuite/g++.dg/ext/gnu-inline-class.C
  b861e559b4d837b0c6576827bfaf08ec  gcc/testsuite/g++.dg/ext/gnu-inline-common.h
  83baade7989ec401bd49db5363e07e77  gcc/testsuite/g++.dg/ext/gnu-inline-global-redecl.C
! 76d50df4b93f3e23ae1ac19f717e8364  gcc/testsuite/g++.dg/ext/gnu-inline-global-reject.C
  3e78535e0258846fa466a40475303131  gcc/testsuite/g++.dg/ext/gnu-inline-global.C
  b4a8192e545a20f5b7dea0d9fb8a6f63  gcc/testsuite/g++.dg/ext/gnu-inline-namespace.C
  58f8a0136cdff73766d2255387d3090e  gcc/testsuite/g++.dg/ext/gnu-inline-template-class.C
  df8bb001c84f32307c935ddafd4b28e1  gcc/testsuite/g++.dg/ext/gnu-inline-template-func.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
! e1009bf7ec139384e0396f856671e51c  gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C
  9ab0d0de30743cb9e3866cc5d6e0bea8  gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C
! c2ef1d78f8bd6d3f4d6940f28560390c  gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C
! 9cf7a87c649f33881c217d698d9d9061  gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C
  342fa7cf8c1da3204825904ac42f1aaa  gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C
! 768c0c47cc83179eab559400c5f2ac62  gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C
! 6f223fd77a02d3939dc0532ea8126007  gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C
! 477c808823454790150abda5b3fb0fb7  gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C
! c7646ae93a88290c62a299a4d43c4250  gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C
  957a747dcb57b75abba668e22763b617  gcc/testsuite/g++.dg/ext/has_nothrow_copy-8.C
  326f3135872905cc190039b1e9eb418b  gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C
  c6f0545bc1364e6c2ba02db17185d224  gcc/testsuite/g++.dg/ext/has_trivial_assign.C
*************** f2cf0baaaf489aa15f22210e07d052d1  gcc/te
*** 13421,13426 ****
--- 14183,14191 ----
  8313f3d030293501382bb11536a8919a  gcc/testsuite/g++.dg/ext/int128-3.C
  3b33306d69b3ca18d4baf8c0846a03a3  gcc/testsuite/g++.dg/ext/int128-4.C
  754d9cd2dfd66632200e26d330e6b4a6  gcc/testsuite/g++.dg/ext/int128-5.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
  3a16bb49d1e751989bc6c5980e68cc41  gcc/testsuite/g++.dg/ext/interface1.C
  a6025f300298ca27e5d4454172592895  gcc/testsuite/g++.dg/ext/interface1.h
  0530572db926ff489aea49718a5eabe8  gcc/testsuite/g++.dg/ext/interface1a.cc
*************** f15c22cabbedb731c2f01e04c0fc9309  gcc/te
*** 13444,13449 ****
--- 14209,14215 ----
  ed1c6dd1affd38da6f57f4982d15f9ec  gcc/testsuite/g++.dg/ext/is_class.C
  00827fb723064c984bd82e533710599b  gcc/testsuite/g++.dg/ext/is_class_error1.C
  77e0f39e9ec441d0aa71b257a152ee9f  gcc/testsuite/g++.dg/ext/is_class_error2.C
+ b579998c84a7b6c9374dbdc81f28e45a  gcc/testsuite/g++.dg/ext/is_constructible1.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
*************** f316c6cb603f1746eab7e3d67e84b5c4  gcc/te
*** 13456,13486 ****
  27bbb5a6652af10bc63d2ec1a4616b6e  gcc/testsuite/g++.dg/ext/is_polymorphic.C
  578a4e7811cefb840ecbd9c4f1370bc8  gcc/testsuite/g++.dg/ext/is_std_layout1.C
  764f4648656c7054afda53727428cb2b  gcc/testsuite/g++.dg/ext/is_std_layout2.C
! 3600369694aff53e4d6cb860b995237b  gcc/testsuite/g++.dg/ext/is_trivially_constructible1.C
  a9c9c773110bfd7f4dab4894b851f80d  gcc/testsuite/g++.dg/ext/is_trivially_constructible2.C
  c8b5af558a67cf874bb7bd69c49e93fb  gcc/testsuite/g++.dg/ext/is_trivially_constructible3.C
  76b226bf6ae177c81d4a2cf611add294  gcc/testsuite/g++.dg/ext/is_trivially_constructible4.C
  f68f695366fe576aaf12aeac3127a68d  gcc/testsuite/g++.dg/ext/is_union.C
  db0b295df95be25a97d67c002c45679e  gcc/testsuite/g++.dg/ext/ivdep-1.C
  81d5dcb570c603e51795c99355ec35f2  gcc/testsuite/g++.dg/ext/label1.C
  aba3b9f72e43fac970dec17314bc0e4e  gcc/testsuite/g++.dg/ext/label10.C
  416b5c7eddab17750318ee4dec3372e4  gcc/testsuite/g++.dg/ext/label11.C
  0c4dee38ff36603320c2d05c89f20b89  gcc/testsuite/g++.dg/ext/label12.C
! 4e86ec3bb4f304de182ac66cef85c061  gcc/testsuite/g++.dg/ext/label13.C
! d3aeedea1101e7feea80793b4ae4f37f  gcc/testsuite/g++.dg/ext/label13a.C
! 5fcb8b661da167170f88e74541df18b0  gcc/testsuite/g++.dg/ext/label14.C
! 4f5a16939771bbd392025ca98b00ad61  gcc/testsuite/g++.dg/ext/label2.C
! 2f937b0172f68361eedae818d69b598b  gcc/testsuite/g++.dg/ext/label3.C
  745640ccb4853caedd76af8799204a4b  gcc/testsuite/g++.dg/ext/label4.C
  6881241a80cf2f92c168d25abb14af2c  gcc/testsuite/g++.dg/ext/label5.C
  ee824ccb1d507856d211f7e019df9eb0  gcc/testsuite/g++.dg/ext/label6.C
! 895ee2546695c14f3c38c7a1b79fbac1  gcc/testsuite/g++.dg/ext/label7.C
! 2028776db2296e4738fb6927ced8ac18  gcc/testsuite/g++.dg/ext/label8.C
  c510e07acd289ccbf9cf0ca2264c4ad7  gcc/testsuite/g++.dg/ext/label9.C
  92a7056cf4009e7b4513a036edcef967  gcc/testsuite/g++.dg/ext/lvaddr.C
  4d2204ac6e2ce03af82e6431536be376  gcc/testsuite/g++.dg/ext/lvalue1.C
  fc916d98d36fed4d9da40614102d5fdd  gcc/testsuite/g++.dg/ext/max.C
! 76dc6abfdf7c1982462bb0cc9c44fb6f  gcc/testsuite/g++.dg/ext/member-attr.C
  8d8589b0df08fd0ae97cc680893df8f1  gcc/testsuite/g++.dg/ext/ms-1.C
  b15c4a54b35713e848071222fc879d29  gcc/testsuite/g++.dg/ext/mv1.C
  6146d7776788bf2e3abb4675eb20c010  gcc/testsuite/g++.dg/ext/mv10.C
--- 14222,14254 ----
  27bbb5a6652af10bc63d2ec1a4616b6e  gcc/testsuite/g++.dg/ext/is_polymorphic.C
  578a4e7811cefb840ecbd9c4f1370bc8  gcc/testsuite/g++.dg/ext/is_std_layout1.C
  764f4648656c7054afda53727428cb2b  gcc/testsuite/g++.dg/ext/is_std_layout2.C
! 7ba5e20835778377af1511cdce2fa5b9  gcc/testsuite/g++.dg/ext/is_trivially_constructible1.C
  a9c9c773110bfd7f4dab4894b851f80d  gcc/testsuite/g++.dg/ext/is_trivially_constructible2.C
  c8b5af558a67cf874bb7bd69c49e93fb  gcc/testsuite/g++.dg/ext/is_trivially_constructible3.C
  76b226bf6ae177c81d4a2cf611add294  gcc/testsuite/g++.dg/ext/is_trivially_constructible4.C
+ d78a2d4cf0d25d5c41563a855f2655c8  gcc/testsuite/g++.dg/ext/is_trivially_constructible5.C
+ 274ba6a4204132602ce81bb35c3ad2c9  gcc/testsuite/g++.dg/ext/is_trivially_constructible6.C
  f68f695366fe576aaf12aeac3127a68d  gcc/testsuite/g++.dg/ext/is_union.C
  db0b295df95be25a97d67c002c45679e  gcc/testsuite/g++.dg/ext/ivdep-1.C
  81d5dcb570c603e51795c99355ec35f2  gcc/testsuite/g++.dg/ext/label1.C
  aba3b9f72e43fac970dec17314bc0e4e  gcc/testsuite/g++.dg/ext/label10.C
  416b5c7eddab17750318ee4dec3372e4  gcc/testsuite/g++.dg/ext/label11.C
  0c4dee38ff36603320c2d05c89f20b89  gcc/testsuite/g++.dg/ext/label12.C
! 15f88f2e3d13546e90dbf305fb553da2  gcc/testsuite/g++.dg/ext/label13.C
! 6300ef311a2c956b58d4d08549489eae  gcc/testsuite/g++.dg/ext/label13a.C
! 86a98cbefdcb66dd3ccb4b6645bf4cab  gcc/testsuite/g++.dg/ext/label14.C
! 93d49880cc7e06074d40ba2b4a790426  gcc/testsuite/g++.dg/ext/label2.C
! 83fe2d77626fcd185f084ed649485bec  gcc/testsuite/g++.dg/ext/label3.C
  745640ccb4853caedd76af8799204a4b  gcc/testsuite/g++.dg/ext/label4.C
  6881241a80cf2f92c168d25abb14af2c  gcc/testsuite/g++.dg/ext/label5.C
  ee824ccb1d507856d211f7e019df9eb0  gcc/testsuite/g++.dg/ext/label6.C
! f3862d15932174698cc55a947f22cbd0  gcc/testsuite/g++.dg/ext/label7.C
! 407a7da0e26625b94263eadd6b23c00e  gcc/testsuite/g++.dg/ext/label8.C
  c510e07acd289ccbf9cf0ca2264c4ad7  gcc/testsuite/g++.dg/ext/label9.C
  92a7056cf4009e7b4513a036edcef967  gcc/testsuite/g++.dg/ext/lvaddr.C
  4d2204ac6e2ce03af82e6431536be376  gcc/testsuite/g++.dg/ext/lvalue1.C
  fc916d98d36fed4d9da40614102d5fdd  gcc/testsuite/g++.dg/ext/max.C
! 795ae1f208cf45eeb1332079f2cd73d6  gcc/testsuite/g++.dg/ext/member-attr.C
  8d8589b0df08fd0ae97cc680893df8f1  gcc/testsuite/g++.dg/ext/ms-1.C
  b15c4a54b35713e848071222fc879d29  gcc/testsuite/g++.dg/ext/mv1.C
  6146d7776788bf2e3abb4675eb20c010  gcc/testsuite/g++.dg/ext/mv10.C
*************** d7d81744846ecefe8f7677db1eb870be  gcc/te
*** 13491,13497 ****
  14e24cf7cd5ef306dd63dde81e792643  gcc/testsuite/g++.dg/ext/mv13.C
  f89de69b7a2471dd13bdfa3f538026f3  gcc/testsuite/g++.dg/ext/mv14.C
  4d979edee07b2aa4c03cacfea214755c  gcc/testsuite/g++.dg/ext/mv15.C
! 981d86432de31a779ad039f2d3954e94  gcc/testsuite/g++.dg/ext/mv16.C
  52c6121bd0dcb71ff07b7a3b2ff68a13  gcc/testsuite/g++.dg/ext/mv17.C
  86351bc247d8b3d2ef6b7ef85c995ab3  gcc/testsuite/g++.dg/ext/mv18.C
  73125ff09b85e6ba6339c1a0691b046b  gcc/testsuite/g++.dg/ext/mv19.C
--- 14259,14265 ----
  14e24cf7cd5ef306dd63dde81e792643  gcc/testsuite/g++.dg/ext/mv13.C
  f89de69b7a2471dd13bdfa3f538026f3  gcc/testsuite/g++.dg/ext/mv14.C
  4d979edee07b2aa4c03cacfea214755c  gcc/testsuite/g++.dg/ext/mv15.C
! 014c816d4337fbc7f1a19689ff4a5977  gcc/testsuite/g++.dg/ext/mv16.C
  52c6121bd0dcb71ff07b7a3b2ff68a13  gcc/testsuite/g++.dg/ext/mv17.C
  86351bc247d8b3d2ef6b7ef85c995ab3  gcc/testsuite/g++.dg/ext/mv18.C
  73125ff09b85e6ba6339c1a0691b046b  gcc/testsuite/g++.dg/ext/mv19.C
*************** e7267f3b0ef839e4a2d835556d472a34  gcc/te
*** 13502,13507 ****
--- 14270,14277 ----
  1a95854113fb218ac2615cac21a0b4f7  gcc/testsuite/g++.dg/ext/mv23.C
  20a16e280be7af4803abefdb9c4fd5ab  gcc/testsuite/g++.dg/ext/mv24.C
  8170c70a533ca3738503220fce497a32  gcc/testsuite/g++.dg/ext/mv25.C
+ d7aa02271563ab04510fa3ee4d1f42ee  gcc/testsuite/g++.dg/ext/mv26.C
+ e30548176c8905c3178a14e9d95b1518  gcc/testsuite/g++.dg/ext/mv27.C
  2b4e2d15e1832a5dbed5e118061271d2  gcc/testsuite/g++.dg/ext/mv3.C
  0325cf2cc1aeb1a8da1bbfea76b78c02  gcc/testsuite/g++.dg/ext/mv4.C
  0b7e6be63f874371a065af141e94dc40  gcc/testsuite/g++.dg/ext/mv5.C
*************** d7e6a6acfdeef8fa4231626fa3e68f99  gcc/te
*** 13510,13517 ****
  22f6018c14234b209b6a01da44b2ea85  gcc/testsuite/g++.dg/ext/mv8.C
  7610da3ac7479053e5453edaa297546d  gcc/testsuite/g++.dg/ext/mv9.C
  d55fd7b81ee99b5c87c27d2c23053a32  gcc/testsuite/g++.dg/ext/mvc1.C
! fb55d0e97756a33733f9bed9c07f8d0c  gcc/testsuite/g++.dg/ext/mvc2.C
! 32974cd71425b40109a4a6a70ab4b479  gcc/testsuite/g++.dg/ext/mvc3.C
  8eb4a28f2ccb072867ae52a33962c7fb  gcc/testsuite/g++.dg/ext/mvc4.C
  54b6adacac34d621ab04c7aa0c6b3bbc  gcc/testsuite/g++.dg/ext/no-asm-1.C
  65500604aa4619c879e00b15d9af5814  gcc/testsuite/g++.dg/ext/no-asm-2.C
--- 14280,14287 ----
  22f6018c14234b209b6a01da44b2ea85  gcc/testsuite/g++.dg/ext/mv8.C
  7610da3ac7479053e5453edaa297546d  gcc/testsuite/g++.dg/ext/mv9.C
  d55fd7b81ee99b5c87c27d2c23053a32  gcc/testsuite/g++.dg/ext/mvc1.C
! 5f1fcd648e1f305e26ea2135fa1ba0e5  gcc/testsuite/g++.dg/ext/mvc2.C
! 7b1cc8e2ca5f2ff2a75baf1794dbdf21  gcc/testsuite/g++.dg/ext/mvc3.C
  8eb4a28f2ccb072867ae52a33962c7fb  gcc/testsuite/g++.dg/ext/mvc4.C
  54b6adacac34d621ab04c7aa0c6b3bbc  gcc/testsuite/g++.dg/ext/no-asm-1.C
  65500604aa4619c879e00b15d9af5814  gcc/testsuite/g++.dg/ext/no-asm-2.C
*************** bcf9b6873e48870b8f6014b5da708cd3  gcc/te
*** 13527,13545 ****
  16a931c57f92231bf11258bf8610b8ca  gcc/testsuite/g++.dg/ext/packed5.C
  54fc351826d44abec62c9c7f09228d06  gcc/testsuite/g++.dg/ext/packed6.C
  2e29b33d9b093b6a30a0e49d1b42c6c8  gcc/testsuite/g++.dg/ext/packed7.C
! 92e127333ad0ef733158621f0c931974  gcc/testsuite/g++.dg/ext/packed8.C
  0932ad5ce3e0455a61e5bd35e5ed587a  gcc/testsuite/g++.dg/ext/packed9.C
  210171cdbd9571de1bfd894e6c809efa  gcc/testsuite/g++.dg/ext/pr17577.C
  d017f3273bbed79c882146d070c763a4  gcc/testsuite/g++.dg/ext/pr17577.h
! f5e4ea70b45a11c5323da18215d95112  gcc/testsuite/g++.dg/ext/pr27019.C
  120e689afda3dc7576257e6a7ec0d8ae  gcc/testsuite/g++.dg/ext/pr28291.C
  188a8d2b9be2004a264afef6a0d937cb  gcc/testsuite/g++.dg/ext/pr47213.C
  098b8140ebbd429d9c2b2419717ce9d6  gcc/testsuite/g++.dg/ext/pr53605.C
  30704e7822be1016e413ad1fb6c2e830  gcc/testsuite/g++.dg/ext/pr56790-1.C
! 28722fa3c13492c8ff0657f2b54d3fab  gcc/testsuite/g++.dg/ext/pr57362.C
  5c17b84b7378b1cb037b186e3716adc2  gcc/testsuite/g++.dg/ext/pr57509.C
  9ca439cc6a120d7874cee5183ed8750c  gcc/testsuite/g++.dg/ext/pr57548.C
! da9f4d40914a62f10cfc08d681f84fe6  gcc/testsuite/g++.dg/ext/pr57735.C
  4775bf0d01f776786eed6bd280ef69e1  gcc/testsuite/g++.dg/ext/pr58834.C
  866a91381ea9110f2679a3242dd39d16  gcc/testsuite/g++.dg/ext/pr59378.C
  8a247c6260aa77bd5f5f10a05e13a5eb  gcc/testsuite/g++.dg/ext/pr59706.C
--- 14297,14315 ----
  16a931c57f92231bf11258bf8610b8ca  gcc/testsuite/g++.dg/ext/packed5.C
  54fc351826d44abec62c9c7f09228d06  gcc/testsuite/g++.dg/ext/packed6.C
  2e29b33d9b093b6a30a0e49d1b42c6c8  gcc/testsuite/g++.dg/ext/packed7.C
! 065cff376c58bb925a16845eb3c01ced  gcc/testsuite/g++.dg/ext/packed8.C
  0932ad5ce3e0455a61e5bd35e5ed587a  gcc/testsuite/g++.dg/ext/packed9.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
  120e689afda3dc7576257e6a7ec0d8ae  gcc/testsuite/g++.dg/ext/pr28291.C
  188a8d2b9be2004a264afef6a0d937cb  gcc/testsuite/g++.dg/ext/pr47213.C
  098b8140ebbd429d9c2b2419717ce9d6  gcc/testsuite/g++.dg/ext/pr53605.C
  30704e7822be1016e413ad1fb6c2e830  gcc/testsuite/g++.dg/ext/pr56790-1.C
! 4a3216b6bfe1bf4ae3c5c6203984cc8a  gcc/testsuite/g++.dg/ext/pr57362.C
  5c17b84b7378b1cb037b186e3716adc2  gcc/testsuite/g++.dg/ext/pr57509.C
  9ca439cc6a120d7874cee5183ed8750c  gcc/testsuite/g++.dg/ext/pr57548.C
! 6a2361cc50a51b407384607368aa4fa9  gcc/testsuite/g++.dg/ext/pr57735.C
  4775bf0d01f776786eed6bd280ef69e1  gcc/testsuite/g++.dg/ext/pr58834.C
  866a91381ea9110f2679a3242dd39d16  gcc/testsuite/g++.dg/ext/pr59378.C
  8a247c6260aa77bd5f5f10a05e13a5eb  gcc/testsuite/g++.dg/ext/pr59706.C
*************** f59cca37bcf6bf005672f72a4f1ab0c0  gcc/te
*** 13551,13556 ****
--- 14321,14338 ----
  4aeb2e30aa754c46467f5ee8c0d127ba  gcc/testsuite/g++.dg/ext/pr71290.C
  d56b3b186d74ce2abcc3c8de6c92aa7e  gcc/testsuite/g++.dg/ext/pr77496.C
  e7effb51effd21039f6a2279ef9eceb0  gcc/testsuite/g++.dg/ext/pr80363.C
+ 1b3ffc0732f44537886c801745c94ae1  gcc/testsuite/g++.dg/ext/pr81706.C
+ 71fb749805ae577817f89bff35879fdd  gcc/testsuite/g++.dg/ext/pr83996.C
+ f98308f5f6f065948a3528650a514bb8  gcc/testsuite/g++.dg/ext/pr84683.C
+ 34e0b268c0bb5c955827493d3be37c00  gcc/testsuite/g++.dg/ext/pr84724-1.C
+ 74c347613ec3c25e4da991429d6dcfc0  gcc/testsuite/g++.dg/ext/pr84724-2.C
+ d814f6f0836684a40f5b18c632f31b13  gcc/testsuite/g++.dg/ext/pr84724-3.C
+ ddac7a382afa64bc6fab7d0e2248ed55  gcc/testsuite/g++.dg/ext/pr84828.C
+ fca1fb7faa22e3e4acb26bac8f67ef7a  gcc/testsuite/g++.dg/ext/pr84843-1.C
+ 33703c3d719b8109639f48b141e6c0d7  gcc/testsuite/g++.dg/ext/pr84843-2.C
+ 5c11ef874d10cd86176ef03b42ff7604  gcc/testsuite/g++.dg/ext/pr85329-2.C
+ d28894461ef17a0168d8c19ebb70b286  gcc/testsuite/g++.dg/ext/pr85329.C
+ f70d6dc3a1a4426b96fa02bbb196e0a2  gcc/testsuite/g++.dg/ext/pr85503.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
*************** fe03ec285c8ec98dfe8ce3f8fe391cf8  gcc/te
*** 13560,13566 ****
  9b5ee55248ed64a182e8649894580ade  gcc/testsuite/g++.dg/ext/selectany1.C
  6503e14c7a74af0da6a05c74e7a4ca55  gcc/testsuite/g++.dg/ext/selectany2.C
  e0be742fef2cac09f63674d981302b5c  gcc/testsuite/g++.dg/ext/sizeof-complit.C
! 7b2492885bdb495f9b56b0ffe57b987a  gcc/testsuite/g++.dg/ext/spe1.C
  0cc2b837a96214f4ba420513a4d610a8  gcc/testsuite/g++.dg/ext/static1.C
  40ecbac4d27075e4005c73ce57fc001d  gcc/testsuite/g++.dg/ext/stmtexpr1.C
  b1f2237b354111a738a7ac26e40fca77  gcc/testsuite/g++.dg/ext/stmtexpr10.C
--- 14342,14348 ----
  9b5ee55248ed64a182e8649894580ade  gcc/testsuite/g++.dg/ext/selectany1.C
  6503e14c7a74af0da6a05c74e7a4ca55  gcc/testsuite/g++.dg/ext/selectany2.C
  e0be742fef2cac09f63674d981302b5c  gcc/testsuite/g++.dg/ext/sizeof-complit.C
! 8edc398347e6e2ab2c7984f05aee328d  gcc/testsuite/g++.dg/ext/spe1.C
  0cc2b837a96214f4ba420513a4d610a8  gcc/testsuite/g++.dg/ext/static1.C
  40ecbac4d27075e4005c73ce57fc001d  gcc/testsuite/g++.dg/ext/stmtexpr1.C
  b1f2237b354111a738a7ac26e40fca77  gcc/testsuite/g++.dg/ext/stmtexpr10.C
*************** a3c7886e27f3c3227c55814be00ca890  gcc/te
*** 13574,13579 ****
--- 14356,14364 ----
  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
+ 0bfeeb17aa6e6edaae1c69c78d0b534c  gcc/testsuite/g++.dg/ext/stmtexpr21.C
+ 4d09ca3f75571211a1af55640503553d  gcc/testsuite/g++.dg/ext/stmtexpr22.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
*************** d104145185fba3180b02bfff96944804  gcc/te
*** 13581,13602 ****
  7e2b298f25a70913e3a563f97e4cf5b7  gcc/testsuite/g++.dg/ext/stmtexpr7.C
  c24c0fb32082543dfc7b57bd392ba008  gcc/testsuite/g++.dg/ext/stmtexpr8.C
  1a8af85002e8ca32cf0c099dd5920e54  gcc/testsuite/g++.dg/ext/stmtexpr9.C
! de012dba14bc48d236b469793d5ca899  gcc/testsuite/g++.dg/ext/strncpy-chk1.C
  e4a78d4631d98dda8d34b1baf828c158  gcc/testsuite/g++.dg/ext/sync-1.C
  7d2ab13d9258d8fc570367eacc626bf6  gcc/testsuite/g++.dg/ext/sync-2.C
  96d325d0b1cb729ac3fd1b3d32a6b67b  gcc/testsuite/g++.dg/ext/sync-3.C
  25e688901e0b995b22374a4e20633531  gcc/testsuite/g++.dg/ext/sync-4.C
! f9fa49961395404e1860aeb9a8b78208  gcc/testsuite/g++.dg/ext/timevar1.C
! 01c68a4ad6501d5104065731b3cf67c4  gcc/testsuite/g++.dg/ext/timevar2.C
  b0c4b5418bbb0cea1304a888bae68465  gcc/testsuite/g++.dg/ext/tmplattr1.C
  089638758b33bf99338184db0181179c  gcc/testsuite/g++.dg/ext/tmplattr2.C
  ff67a3df89d9e5bed9e2259c840fd1c3  gcc/testsuite/g++.dg/ext/tmplattr3.C
  13a9bd280c5578a4d3a70a4e930438d1  gcc/testsuite/g++.dg/ext/tmplattr4.C
  0675b180ea1558119008645720d1da58  gcc/testsuite/g++.dg/ext/tmplattr5.C
  b2cbeefe0b660f19695decd8817dfef1  gcc/testsuite/g++.dg/ext/tmplattr6.C
! 3ebac9950d9d5de5060e8a708e6c45b8  gcc/testsuite/g++.dg/ext/tmplattr7.C
  bcdc198bba142d390818f427b8129565  gcc/testsuite/g++.dg/ext/tmplattr8.C
! 025a5972f75731b8e82a3214589eeedc  gcc/testsuite/g++.dg/ext/tmplattr9.C
  5c82bcad933c856bb7bc2222cad5ff0f  gcc/testsuite/g++.dg/ext/traits1.C
  1b8acb86eb35f02c108334294530bd02  gcc/testsuite/g++.dg/ext/transparent-union.C
  c2ab0a5977a08b46134ba61eb8b22222  gcc/testsuite/g++.dg/ext/typedef-init.C
--- 14366,14387 ----
  7e2b298f25a70913e3a563f97e4cf5b7  gcc/testsuite/g++.dg/ext/stmtexpr7.C
  c24c0fb32082543dfc7b57bd392ba008  gcc/testsuite/g++.dg/ext/stmtexpr8.C
  1a8af85002e8ca32cf0c099dd5920e54  gcc/testsuite/g++.dg/ext/stmtexpr9.C
! e044d983bce8db606bbd21120cc6a77d  gcc/testsuite/g++.dg/ext/strncpy-chk1.C
  e4a78d4631d98dda8d34b1baf828c158  gcc/testsuite/g++.dg/ext/sync-1.C
  7d2ab13d9258d8fc570367eacc626bf6  gcc/testsuite/g++.dg/ext/sync-2.C
  96d325d0b1cb729ac3fd1b3d32a6b67b  gcc/testsuite/g++.dg/ext/sync-3.C
  25e688901e0b995b22374a4e20633531  gcc/testsuite/g++.dg/ext/sync-4.C
! fd488da65b9de81be655103cb823fd46  gcc/testsuite/g++.dg/ext/timevar1.C
! c24cf794da85348840a86c5ccf862b83  gcc/testsuite/g++.dg/ext/timevar2.C
  b0c4b5418bbb0cea1304a888bae68465  gcc/testsuite/g++.dg/ext/tmplattr1.C
  089638758b33bf99338184db0181179c  gcc/testsuite/g++.dg/ext/tmplattr2.C
  ff67a3df89d9e5bed9e2259c840fd1c3  gcc/testsuite/g++.dg/ext/tmplattr3.C
  13a9bd280c5578a4d3a70a4e930438d1  gcc/testsuite/g++.dg/ext/tmplattr4.C
  0675b180ea1558119008645720d1da58  gcc/testsuite/g++.dg/ext/tmplattr5.C
  b2cbeefe0b660f19695decd8817dfef1  gcc/testsuite/g++.dg/ext/tmplattr6.C
! 9decda5ea28390f320c0667cbd5b3b8f  gcc/testsuite/g++.dg/ext/tmplattr7.C
  bcdc198bba142d390818f427b8129565  gcc/testsuite/g++.dg/ext/tmplattr8.C
! 6ff796acf64e692b00f5a28e734a6328  gcc/testsuite/g++.dg/ext/tmplattr9.C
  5c82bcad933c856bb7bc2222cad5ff0f  gcc/testsuite/g++.dg/ext/traits1.C
  1b8acb86eb35f02c108334294530bd02  gcc/testsuite/g++.dg/ext/transparent-union.C
  c2ab0a5977a08b46134ba61eb8b22222  gcc/testsuite/g++.dg/ext/typedef-init.C
*************** a55635b999e217d4900dcb3975178408  gcc/te
*** 13604,13609 ****
--- 14389,14395 ----
  797d2045e8822a50b44635725cab1028  gcc/testsuite/g++.dg/ext/typeof1.C
  428a557c7b31bfbb8d1d1ff9a0f74017  gcc/testsuite/g++.dg/ext/typeof10.C
  4d1f0cfba2837e6c477d300cc30990c4  gcc/testsuite/g++.dg/ext/typeof11.C
+ a61b757903156b1ad9a921870478f8b0  gcc/testsuite/g++.dg/ext/typeof12.C
  d4a84aa4c28cc592a1e9f2cc414b0de8  gcc/testsuite/g++.dg/ext/typeof2.C
  72bb88847c07dea00da2dd0ccfca39ac  gcc/testsuite/g++.dg/ext/typeof3.C
  bb35b4ce331483ff19b91d62234fac6b  gcc/testsuite/g++.dg/ext/typeof4.C
*************** cac7810767ae23faa6823a798e9c3cea  gcc/te
*** 13613,13618 ****
--- 14399,14405 ----
  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
+ 7b042b4eb820fa7d1a9bc713f37c33fc  gcc/testsuite/g++.dg/ext/undef-bool-1.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
*************** b7a8ecf75070cdd4647856d3d7028b3d  gcc/te
*** 13625,13630 ****
--- 14412,14420 ----
  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
+ acd7b01b4f8baa1e400479391148d010  gcc/testsuite/g++.dg/ext/unroll-1.C
+ 17722f214817dcd7832fcf5c425054d6  gcc/testsuite/g++.dg/ext/unroll-2.C
+ c85131b2c832595150b93692f292a064  gcc/testsuite/g++.dg/ext/unroll-3.C
  28679c5e259c2a169fa3381ab32688b9  gcc/testsuite/g++.dg/ext/uow-1.C
  56fb8e2b89ccd1554be150dc21820262  gcc/testsuite/g++.dg/ext/uow-2.C
  ff4b76f68e947fcc25cacffe86927e92  gcc/testsuite/g++.dg/ext/uow-3.C
*************** e1560d761bf56acc26f3ab91d3231b46  gcc/te
*** 13633,13639 ****
  b25f5b285a9c203d959991246b44aa0d  gcc/testsuite/g++.dg/ext/utf-array.C
  8489bdb85e5446c128b69c25e8731e24  gcc/testsuite/g++.dg/ext/utf-badconcat.C
  4d3e1e2d76aabbc270bb762c8b9aab48  gcc/testsuite/g++.dg/ext/utf-badconcat2.C
! 3edab8d8e139ac7de3fd3eae66bfb5fe  gcc/testsuite/g++.dg/ext/utf-cvt.C
  bb128ce7c4aa022f8046c469bbe3faa3  gcc/testsuite/g++.dg/ext/utf-cxx0x.C
  a48d76439b8fcf9e146d77edce5ced44  gcc/testsuite/g++.dg/ext/utf-cxx98.C
  05d08cc3bcdff43b34792fac2bc3368c  gcc/testsuite/g++.dg/ext/utf-dflt.C
--- 14423,14429 ----
  b25f5b285a9c203d959991246b44aa0d  gcc/testsuite/g++.dg/ext/utf-array.C
  8489bdb85e5446c128b69c25e8731e24  gcc/testsuite/g++.dg/ext/utf-badconcat.C
  4d3e1e2d76aabbc270bb762c8b9aab48  gcc/testsuite/g++.dg/ext/utf-badconcat2.C
! 2a1ac787634fd59c24b901511b971a46  gcc/testsuite/g++.dg/ext/utf-cvt.C
  bb128ce7c4aa022f8046c469bbe3faa3  gcc/testsuite/g++.dg/ext/utf-cxx0x.C
  a48d76439b8fcf9e146d77edce5ced44  gcc/testsuite/g++.dg/ext/utf-cxx98.C
  05d08cc3bcdff43b34792fac2bc3368c  gcc/testsuite/g++.dg/ext/utf-dflt.C
*************** bb128ce7c4aa022f8046c469bbe3faa3  gcc/te
*** 13649,13655 ****
  6686b865a1c599be2e092145038169cf  gcc/testsuite/g++.dg/ext/utf16-1.C
  1f262acf2497c4af664d97e90a6ac7d2  gcc/testsuite/g++.dg/ext/utf16-2.C
  3d413c1a115fc49a6eed047d62327241  gcc/testsuite/g++.dg/ext/utf16-3.C
! 951a506cfea7c978228426b6c74278db  gcc/testsuite/g++.dg/ext/utf16-4.C
  354a8b4e8e26ca1df2d8e1c4cd4aec1b  gcc/testsuite/g++.dg/ext/utf32-1.C
  0118e635abdac5b319fea36581048d3a  gcc/testsuite/g++.dg/ext/utf32-2.C
  5b7134f50579f9686c1ed0a58b8d936f  gcc/testsuite/g++.dg/ext/utf32-3.C
--- 14439,14445 ----
  6686b865a1c599be2e092145038169cf  gcc/testsuite/g++.dg/ext/utf16-1.C
  1f262acf2497c4af664d97e90a6ac7d2  gcc/testsuite/g++.dg/ext/utf16-2.C
  3d413c1a115fc49a6eed047d62327241  gcc/testsuite/g++.dg/ext/utf16-3.C
! f91f3dd72591e9076b8e07576b305909  gcc/testsuite/g++.dg/ext/utf16-4.C
  354a8b4e8e26ca1df2d8e1c4cd4aec1b  gcc/testsuite/g++.dg/ext/utf32-1.C
  0118e635abdac5b319fea36581048d3a  gcc/testsuite/g++.dg/ext/utf32-2.C
  5b7134f50579f9686c1ed0a58b8d936f  gcc/testsuite/g++.dg/ext/utf32-3.C
*************** be5f35b51bfbfb360923dc0be613c0d6  gcc/te
*** 13668,13674 ****
  86631ce973fe08bf3f9ad84e595fb594  gcc/testsuite/g++.dg/ext/vector11.C
  173dc80ba2834a9afdc07f599ac08c74  gcc/testsuite/g++.dg/ext/vector12.C
  0b89905c123e9d47c7e0b5514f4c50e2  gcc/testsuite/g++.dg/ext/vector13.C
! 44fd57e1c00243ca06f806db95d2e223  gcc/testsuite/g++.dg/ext/vector14.C
  609de4a1bd102907e8c94926e720e269  gcc/testsuite/g++.dg/ext/vector15.C
  35d5e735933a2ee8c67c9520df4ac250  gcc/testsuite/g++.dg/ext/vector16.C
  59cf8ffe4e1021dbdaf3ab1660eb5357  gcc/testsuite/g++.dg/ext/vector17.C
--- 14458,14464 ----
  86631ce973fe08bf3f9ad84e595fb594  gcc/testsuite/g++.dg/ext/vector11.C
  173dc80ba2834a9afdc07f599ac08c74  gcc/testsuite/g++.dg/ext/vector12.C
  0b89905c123e9d47c7e0b5514f4c50e2  gcc/testsuite/g++.dg/ext/vector13.C
! b25be754df2b277615138df2ad28381b  gcc/testsuite/g++.dg/ext/vector14.C
  609de4a1bd102907e8c94926e720e269  gcc/testsuite/g++.dg/ext/vector15.C
  35d5e735933a2ee8c67c9520df4ac250  gcc/testsuite/g++.dg/ext/vector16.C
  59cf8ffe4e1021dbdaf3ab1660eb5357  gcc/testsuite/g++.dg/ext/vector17.C
*************** abdeb34b11f4d994523c72c30c39e053  gcc/te
*** 13690,13717 ****
  c3b38049951f0b2eddec58e423441ed3  gcc/testsuite/g++.dg/ext/vector31.C
  f2e6795ff798b5625687e21de0a778df  gcc/testsuite/g++.dg/ext/vector32.C
  f2e6795ff798b5625687e21de0a778df  gcc/testsuite/g++.dg/ext/vector32a.C
  1d6b45dce331a414b31b64c5104ab383  gcc/testsuite/g++.dg/ext/vector4.C
  3231264b4b96091ab8a2351e76707e8d  gcc/testsuite/g++.dg/ext/vector5.C
  9dca9632e59d179ee1b85a181a34cae7  gcc/testsuite/g++.dg/ext/vector6.C
  499980717843a208168505a264f263e3  gcc/testsuite/g++.dg/ext/vector7.C
! 2eae796d26829372d14224527a39750b  gcc/testsuite/g++.dg/ext/vector8.C
  fffe88367e13ff0ced20543de6b299e6  gcc/testsuite/g++.dg/ext/vector9.C
! 87269a36e3152700af8f91c8e816a933  gcc/testsuite/g++.dg/ext/visibility/anon1.C
  a584d24c7f0c42d5d7b9adeaab7e6e35  gcc/testsuite/g++.dg/ext/visibility/anon10.C
  369bf591deaf5f4fbb8bbc60afb36331  gcc/testsuite/g++.dg/ext/visibility/anon11.C
! e263706f6d3daf3e981e329325fc2698  gcc/testsuite/g++.dg/ext/visibility/anon2.C
  251258dca8835128a261b3557e780874  gcc/testsuite/g++.dg/ext/visibility/anon3.C
  a9ac9686caa2bc8878f0912bbd23359a  gcc/testsuite/g++.dg/ext/visibility/anon4.C
  78ae1691e214193d8b3ffd248e757842  gcc/testsuite/g++.dg/ext/visibility/anon5.C
  d5b695e5eb904357886d0bfb4f220465  gcc/testsuite/g++.dg/ext/visibility/anon6.C
! e1c2943fcd69519a02a5ea02557eb1a3  gcc/testsuite/g++.dg/ext/visibility/anon7.C
  9eeaf3d81bc897ecd4a9796596ed8747  gcc/testsuite/g++.dg/ext/visibility/anon8.C
  42860d01e474344b2b2c19b124253c3c  gcc/testsuite/g++.dg/ext/visibility/anon9.C
  5d2c9ba65a63a9bb5e8e5e892d721545  gcc/testsuite/g++.dg/ext/visibility/arm1.C
  90d3e45964c29900bfe38562827deef3  gcc/testsuite/g++.dg/ext/visibility/arm2.C
  2046276fa675e9a04694f687558405f8  gcc/testsuite/g++.dg/ext/visibility/arm3.C
  8f362e9514ed23f575b695f7bbed54e6  gcc/testsuite/g++.dg/ext/visibility/assign1.C
! a8317da9e00ddec3e791760e8c323a20  gcc/testsuite/g++.dg/ext/visibility/class1.C
  9f6874b06aea35e844ab40f0f69550c5  gcc/testsuite/g++.dg/ext/visibility/fvisibility-inlines-hidden-2.C
  5c8d17e33f840c89b8d56a22d680b9d1  gcc/testsuite/g++.dg/ext/visibility/fvisibility-inlines-hidden-3.C
  bc5e3935f9fd3f5f54ca89ee581b2c03  gcc/testsuite/g++.dg/ext/visibility/fvisibility-inlines-hidden-4.C
--- 14480,14510 ----
  c3b38049951f0b2eddec58e423441ed3  gcc/testsuite/g++.dg/ext/vector31.C
  f2e6795ff798b5625687e21de0a778df  gcc/testsuite/g++.dg/ext/vector32.C
  f2e6795ff798b5625687e21de0a778df  gcc/testsuite/g++.dg/ext/vector32a.C
+ c8cc6b1ac116455433fc79d5403b3693  gcc/testsuite/g++.dg/ext/vector33.C
+ 693cec9bf931df45af9b2d331ac48159  gcc/testsuite/g++.dg/ext/vector34.C
+ bc898cae3bed874536a1bd98580d68a7  gcc/testsuite/g++.dg/ext/vector35.C
  1d6b45dce331a414b31b64c5104ab383  gcc/testsuite/g++.dg/ext/vector4.C
  3231264b4b96091ab8a2351e76707e8d  gcc/testsuite/g++.dg/ext/vector5.C
  9dca9632e59d179ee1b85a181a34cae7  gcc/testsuite/g++.dg/ext/vector6.C
  499980717843a208168505a264f263e3  gcc/testsuite/g++.dg/ext/vector7.C
! a92b9bb3a1d4737563cf1b160cd4ebd5  gcc/testsuite/g++.dg/ext/vector8.C
  fffe88367e13ff0ced20543de6b299e6  gcc/testsuite/g++.dg/ext/vector9.C
! faecccf7afe1650c8f216acae84252f7  gcc/testsuite/g++.dg/ext/visibility/anon1.C
  a584d24c7f0c42d5d7b9adeaab7e6e35  gcc/testsuite/g++.dg/ext/visibility/anon10.C
  369bf591deaf5f4fbb8bbc60afb36331  gcc/testsuite/g++.dg/ext/visibility/anon11.C
! b238d9d1d8bfc55ab80032d2a9c5e8b2  gcc/testsuite/g++.dg/ext/visibility/anon2.C
  251258dca8835128a261b3557e780874  gcc/testsuite/g++.dg/ext/visibility/anon3.C
  a9ac9686caa2bc8878f0912bbd23359a  gcc/testsuite/g++.dg/ext/visibility/anon4.C
  78ae1691e214193d8b3ffd248e757842  gcc/testsuite/g++.dg/ext/visibility/anon5.C
  d5b695e5eb904357886d0bfb4f220465  gcc/testsuite/g++.dg/ext/visibility/anon6.C
! f898972c4719f3058c25c921c50c6487  gcc/testsuite/g++.dg/ext/visibility/anon7.C
  9eeaf3d81bc897ecd4a9796596ed8747  gcc/testsuite/g++.dg/ext/visibility/anon8.C
  42860d01e474344b2b2c19b124253c3c  gcc/testsuite/g++.dg/ext/visibility/anon9.C
  5d2c9ba65a63a9bb5e8e5e892d721545  gcc/testsuite/g++.dg/ext/visibility/arm1.C
  90d3e45964c29900bfe38562827deef3  gcc/testsuite/g++.dg/ext/visibility/arm2.C
  2046276fa675e9a04694f687558405f8  gcc/testsuite/g++.dg/ext/visibility/arm3.C
  8f362e9514ed23f575b695f7bbed54e6  gcc/testsuite/g++.dg/ext/visibility/assign1.C
! 39853e4e9f2fbdad2560ca7d53bb3626  gcc/testsuite/g++.dg/ext/visibility/class1.C
  9f6874b06aea35e844ab40f0f69550c5  gcc/testsuite/g++.dg/ext/visibility/fvisibility-inlines-hidden-2.C
  5c8d17e33f840c89b8d56a22d680b9d1  gcc/testsuite/g++.dg/ext/visibility/fvisibility-inlines-hidden-3.C
  bc5e3935f9fd3f5f54ca89ee581b2c03  gcc/testsuite/g++.dg/ext/visibility/fvisibility-inlines-hidden-4.C
*************** e803713a7240f84bdbab19c61f163d46  gcc/te
*** 13723,13729 ****
  f6ac3f034af2478f3ae3854a6b304cdb  gcc/testsuite/g++.dg/ext/visibility/local1.C
  d7e8086561549b3830b812ca5fcd9dd6  gcc/testsuite/g++.dg/ext/visibility/memfuncts.C
  7fbb869ca12df2407fdf22d0ba22baac  gcc/testsuite/g++.dg/ext/visibility/ms-compat-1.C
! 47546be923a94711f1c67844ab30b6b5  gcc/testsuite/g++.dg/ext/visibility/namespace1.C
  eb42889d7ff5930cf589d7b103805b82  gcc/testsuite/g++.dg/ext/visibility/namespace2.C
  add25a0c0d2bcb8abe77dc78d0e41452  gcc/testsuite/g++.dg/ext/visibility/namespace3.C
  9a8d2d6de4dd65f8d370f81892ab674c  gcc/testsuite/g++.dg/ext/visibility/new1.C
--- 14516,14522 ----
  f6ac3f034af2478f3ae3854a6b304cdb  gcc/testsuite/g++.dg/ext/visibility/local1.C
  d7e8086561549b3830b812ca5fcd9dd6  gcc/testsuite/g++.dg/ext/visibility/memfuncts.C
  7fbb869ca12df2407fdf22d0ba22baac  gcc/testsuite/g++.dg/ext/visibility/ms-compat-1.C
! dcac6e7499baa3b9fea9a820caf32bd6  gcc/testsuite/g++.dg/ext/visibility/namespace1.C
  eb42889d7ff5930cf589d7b103805b82  gcc/testsuite/g++.dg/ext/visibility/namespace2.C
  add25a0c0d2bcb8abe77dc78d0e41452  gcc/testsuite/g++.dg/ext/visibility/namespace3.C
  9a8d2d6de4dd65f8d370f81892ab674c  gcc/testsuite/g++.dg/ext/visibility/new1.C
*************** b9dc9fa8adc27f38cdd6d69f47df7504  gcc/te
*** 13761,13788 ****
  9915a08c47035d39990d7918773f9236  gcc/testsuite/g++.dg/ext/visibility/visibility-4.C
  29732097fb76e25fb0f4f81cb768aa61  gcc/testsuite/g++.dg/ext/visibility/visibility-5.C
  f810d8d490c2163100b8092bb733b17d  gcc/testsuite/g++.dg/ext/visibility/visibility-6.C
! 63f6c6e58634b5306026fcd6c5bb7d53  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
  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
  40de40133f2bc2f79491601ee0e6ed42  gcc/testsuite/g++.dg/ext/visibility/warn5.C
  d03b9a9d68a2b0f690c9be93cf0abc56  gcc/testsuite/g++.dg/ext/vla1.C
! 1449869695dee3efea51f4669b837c49  gcc/testsuite/g++.dg/ext/vla10.C
! a727bde8a8bab1594c631e013263e598  gcc/testsuite/g++.dg/ext/vla11.C
! e301c29c014339ad81955e68811b25cf  gcc/testsuite/g++.dg/ext/vla12.C
  29d6caf5110470674c8b7228eb8626f3  gcc/testsuite/g++.dg/ext/vla13.C
  d064d37eab722d0bbe6af95ae3d5c12d  gcc/testsuite/g++.dg/ext/vla14.C
! 360895db3c1d93f3058f39a26cbf8a66  gcc/testsuite/g++.dg/ext/vla15.C
! 79eef5be10ddbbef5af56947e2564ee0  gcc/testsuite/g++.dg/ext/vla16.C
! 812eb35a45a954f99a0c5977b99a8174  gcc/testsuite/g++.dg/ext/vla17.C
! 0764dadafc6c8278bbdc750a46f94ca8  gcc/testsuite/g++.dg/ext/vla2.C
! f603634b7e2ab93b87e602f38ebcc397  gcc/testsuite/g++.dg/ext/vla3.C
  ed33dc2d9d15f2684fe9377a6ae1b33d  gcc/testsuite/g++.dg/ext/vla4.C
  cd0140e3425e97d1c4b919a0ef8b54c3  gcc/testsuite/g++.dg/ext/vla5.C
! 4cff2904bf7edbed976d3dd3f67c25ba  gcc/testsuite/g++.dg/ext/vla6.C
! f339c929810ba11885868c48c99722f6  gcc/testsuite/g++.dg/ext/vla7.C
  ce18ce908630287c7dc7c4377eadc1b0  gcc/testsuite/g++.dg/ext/vla8.C
  9bb5caf7c99329edf52d7e4bc97626a1  gcc/testsuite/g++.dg/ext/vla9.C
  11bcf00b0a6402fad7b9569e02318690  gcc/testsuite/g++.dg/ext/vlm1.C
--- 14554,14584 ----
  9915a08c47035d39990d7918773f9236  gcc/testsuite/g++.dg/ext/visibility/visibility-4.C
  29732097fb76e25fb0f4f81cb768aa61  gcc/testsuite/g++.dg/ext/visibility/visibility-5.C
  f810d8d490c2163100b8092bb733b17d  gcc/testsuite/g++.dg/ext/visibility/visibility-6.C
! 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
  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
  40de40133f2bc2f79491601ee0e6ed42  gcc/testsuite/g++.dg/ext/visibility/warn5.C
+ 4082034db0092dc3aa5494bbab342da6  gcc/testsuite/g++.dg/ext/visibility/warn6.C
  d03b9a9d68a2b0f690c9be93cf0abc56  gcc/testsuite/g++.dg/ext/vla1.C
! 7967571bc95c3a621226952301d1fbee  gcc/testsuite/g++.dg/ext/vla10.C
! c5bcafe042901a792f46e18883b76b80  gcc/testsuite/g++.dg/ext/vla11.C
! d6ec4274cb64a4db7ca0c60b6cd380b0  gcc/testsuite/g++.dg/ext/vla12.C
  29d6caf5110470674c8b7228eb8626f3  gcc/testsuite/g++.dg/ext/vla13.C
  d064d37eab722d0bbe6af95ae3d5c12d  gcc/testsuite/g++.dg/ext/vla14.C
! 262b0d85a04b82cf3b0203b4b399b507  gcc/testsuite/g++.dg/ext/vla15.C
! 3906162597e70fb55c58c873cfd6d1e2  gcc/testsuite/g++.dg/ext/vla16.C
! 27174f17bf4ed6dc2e7cfe6b2ac58bda  gcc/testsuite/g++.dg/ext/vla17.C
! f964b5b8563862b3b5de4077cc1fb8e4  gcc/testsuite/g++.dg/ext/vla18.C
! 1fd16437142527242ed46024008b3c50  gcc/testsuite/g++.dg/ext/vla19.C
! 83bf1823c9e81467f20ea26043a713e9  gcc/testsuite/g++.dg/ext/vla2.C
! 6aaa10f349349a2417e726c48cb7e61e  gcc/testsuite/g++.dg/ext/vla3.C
  ed33dc2d9d15f2684fe9377a6ae1b33d  gcc/testsuite/g++.dg/ext/vla4.C
  cd0140e3425e97d1c4b919a0ef8b54c3  gcc/testsuite/g++.dg/ext/vla5.C
! d79825729049ae3b1dcd9d8d0f86a9c1  gcc/testsuite/g++.dg/ext/vla6.C
! 6ccbf45d9e21a406e0533379ab46ed68  gcc/testsuite/g++.dg/ext/vla7.C
  ce18ce908630287c7dc7c4377eadc1b0  gcc/testsuite/g++.dg/ext/vla8.C
  9bb5caf7c99329edf52d7e4bc97626a1  gcc/testsuite/g++.dg/ext/vla9.C
  11bcf00b0a6402fad7b9569e02318690  gcc/testsuite/g++.dg/ext/vlm1.C
*************** a90a1ccb44e24f11ce27ee962f1c9c2d  gcc/te
*** 13794,13800 ****
  3966d7feec90bb7ef5f1b9dd00c1f2fb  gcc/testsuite/g++.dg/ext/weak5.C
  5d1e81961259215cfac58aeb10409f5d  gcc/testsuite/g++.dg/fstack-protector-strong.C
  165f4d1a12237b9ed8273a7db5e4299e  gcc/testsuite/g++.dg/func-args-1.C
! ed8a6c94f1bc2e70a324d73a77190040  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
  8db03c21164b6fdca1cc2722dde24a47  gcc/testsuite/g++.dg/gcov/gcov-12.C
--- 14590,14596 ----
  3966d7feec90bb7ef5f1b9dd00c1f2fb  gcc/testsuite/g++.dg/ext/weak5.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
  8db03c21164b6fdca1cc2722dde24a47  gcc/testsuite/g++.dg/gcov/gcov-12.C
*************** be0288522b31602de2c7b3eeb2fb4b18  gcc/te
*** 13808,13830 ****
  a7c093e32d8e0cc08e02c3253748979c  gcc/testsuite/g++.dg/gcov/gcov-4.C
  8ade32db1de614a89b3775d4d1d03415  gcc/testsuite/g++.dg/gcov/gcov-5.C
  0db2a2956de58970834889c74f43082d  gcc/testsuite/g++.dg/gcov/gcov-6.C
! 627195b7b4d7d5beba2cffb45f410c00  gcc/testsuite/g++.dg/gcov/gcov-7.C
  d8cdfe2265b912fe59c4b829ba5b85f0  gcc/testsuite/g++.dg/gcov/gcov-8.C
  1daf1c411209223b51591e3ac9090bfb  gcc/testsuite/g++.dg/gcov/gcov-dump-1.C
  7def4ed5b129018a31fbca4ad8fd6300  gcc/testsuite/g++.dg/gcov/gcov-dump-2.C
! d1eae0fc9007ab702478f6de3cc99b0b  gcc/testsuite/g++.dg/gcov/gcov-threads-1.C
! 831e98c6ca97a4a3897a673f4bab9b09  gcc/testsuite/g++.dg/gcov/gcov.exp
  28167c93ffea74cb328ff3cd087d643a  gcc/testsuite/g++.dg/gcov/gcovpart-12b.C
  7d9eee67c3f8041f2ddace387e1df1c2  gcc/testsuite/g++.dg/gcov/pr16855-priority.C
  6a00a42444ecfc55fcc35215a85e8a01  gcc/testsuite/g++.dg/gcov/pr16855.C
! eb61f760d343ff5c713477f9b4bd1edd  gcc/testsuite/g++.dg/goacc-gomp/goacc-gomp.exp
! 480677ba2b0c1444ca7f51a2bf4efd71  gcc/testsuite/g++.dg/goacc/data-1.C
  2b70bd2b15144e92ee104c07a8e2bc13  gcc/testsuite/g++.dg/goacc/deviceptr-1.C
! a535a9ab6d126ff941a205e39ee60e11  gcc/testsuite/g++.dg/goacc/goacc.exp
! 53b536e5a5cf8a556fabc2868f0fa8c2  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
! 1135334a2ca6d22a6b0ec5c2a845940b  gcc/testsuite/g++.dg/goacc/template.C
  63c7a5fb86ca9e170a766952f0dda797  gcc/testsuite/g++.dg/goacc/tile-1.C
  0f8c6d06e1f378355b0404338dbd037b  gcc/testsuite/g++.dg/gomp/atomic-14.C
  4c00b09b19e9a90c9f90d361477d4f07  gcc/testsuite/g++.dg/gomp/atomic-17.C
--- 14604,14629 ----
  a7c093e32d8e0cc08e02c3253748979c  gcc/testsuite/g++.dg/gcov/gcov-4.C
  8ade32db1de614a89b3775d4d1d03415  gcc/testsuite/g++.dg/gcov/gcov-5.C
  0db2a2956de58970834889c74f43082d  gcc/testsuite/g++.dg/gcov/gcov-6.C
! 6f3a3736784c0de448d6416b0d8f64d8  gcc/testsuite/g++.dg/gcov/gcov-7.C
  d8cdfe2265b912fe59c4b829ba5b85f0  gcc/testsuite/g++.dg/gcov/gcov-8.C
  1daf1c411209223b51591e3ac9090bfb  gcc/testsuite/g++.dg/gcov/gcov-dump-1.C
  7def4ed5b129018a31fbca4ad8fd6300  gcc/testsuite/g++.dg/gcov/gcov-dump-2.C
! 7c98164def1e3b4af2573a0cde4a581e  gcc/testsuite/g++.dg/gcov/gcov-threads-1.C
! 3f322687f8a882d207841d61bbf8fee4  gcc/testsuite/g++.dg/gcov/gcov.exp
  28167c93ffea74cb328ff3cd087d643a  gcc/testsuite/g++.dg/gcov/gcovpart-12b.C
+ 7e1f7719f890c2991e041935a008aba6  gcc/testsuite/g++.dg/gcov/loop.C
  7d9eee67c3f8041f2ddace387e1df1c2  gcc/testsuite/g++.dg/gcov/pr16855-priority.C
  6a00a42444ecfc55fcc35215a85e8a01  gcc/testsuite/g++.dg/gcov/pr16855.C
! c764fcf65d843c003c08c0004637752d  gcc/testsuite/g++.dg/gcov/pr84548.C
! 4c21cbbbe2984b7d61d49eba4051903e  gcc/testsuite/g++.dg/gcov/ternary.C
! 1c887c770c88adeae5ffa972d4fd8427  gcc/testsuite/g++.dg/goacc-gomp/goacc-gomp.exp
! 820844228685ed372375612618b6a716  gcc/testsuite/g++.dg/goacc/data-1.C
  2b70bd2b15144e92ee104c07a8e2bc13  gcc/testsuite/g++.dg/goacc/deviceptr-1.C
! d01a71d018e4254c32537e5d593e872f  gcc/testsuite/g++.dg/goacc/goacc.exp
! 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
! 7bab0568599d23653552cdf18f7e591d  gcc/testsuite/g++.dg/goacc/template.C
  63c7a5fb86ca9e170a766952f0dda797  gcc/testsuite/g++.dg/goacc/tile-1.C
  0f8c6d06e1f378355b0404338dbd037b  gcc/testsuite/g++.dg/gomp/atomic-14.C
  4c00b09b19e9a90c9f90d361477d4f07  gcc/testsuite/g++.dg/gomp/atomic-17.C
*************** bcce5f289dacd7e032453729bf06e161  gcc/te
*** 13883,13889 ****
  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
! e6be88782f0e60ae056fe40845979bf7  gcc/testsuite/g++.dg/gomp/gomp.exp
  7f682781cd88149270eb73eb44f419f7  gcc/testsuite/g++.dg/gomp/linear-1.C
  2fe09fbd7df28122d262deb35faa2ae9  gcc/testsuite/g++.dg/gomp/linear-2.C
  6dcaf2b099c377baab33fe0ad0e0e268  gcc/testsuite/g++.dg/gomp/loop-1.C
--- 14682,14688 ----
  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
! 066da8e4c36f6d0013f731bd6971e9b1  gcc/testsuite/g++.dg/gomp/gomp.exp
  7f682781cd88149270eb73eb44f419f7  gcc/testsuite/g++.dg/gomp/linear-1.C
  2fe09fbd7df28122d262deb35faa2ae9  gcc/testsuite/g++.dg/gomp/linear-2.C
  6dcaf2b099c377baab33fe0ad0e0e268  gcc/testsuite/g++.dg/gomp/loop-1.C
*************** af9aa00aecd9c08bb1bacab6e47db24c  gcc/te
*** 13892,13898 ****
  a4271cf7824f2a837486e7951ee23884  gcc/testsuite/g++.dg/gomp/macro-1.C
  eabb0107af4ef893414bb3cef506ad03  gcc/testsuite/g++.dg/gomp/macro-2.C
  942f8defe03c25bf08f780cf22c0a1e5  gcc/testsuite/g++.dg/gomp/macro-3.C
! c2ebaa7c44ef37277d6c3aa03239cbee  gcc/testsuite/g++.dg/gomp/macro-4.C
  9dff449fe2d97c4b3ade07b982e69364  gcc/testsuite/g++.dg/gomp/master-1.C
  c6830eca56ca17885a14ffa21aeb16c4  gcc/testsuite/g++.dg/gomp/master-2.C
  aec913fefeac6132003dfcbe3fd035eb  gcc/testsuite/g++.dg/gomp/master-3.C
--- 14691,14697 ----
  a4271cf7824f2a837486e7951ee23884  gcc/testsuite/g++.dg/gomp/macro-1.C
  eabb0107af4ef893414bb3cef506ad03  gcc/testsuite/g++.dg/gomp/macro-2.C
  942f8defe03c25bf08f780cf22c0a1e5  gcc/testsuite/g++.dg/gomp/macro-3.C
! 3f271d462d27f65afbe5003c58002787  gcc/testsuite/g++.dg/gomp/macro-4.C
  9dff449fe2d97c4b3ade07b982e69364  gcc/testsuite/g++.dg/gomp/master-1.C
  c6830eca56ca17885a14ffa21aeb16c4  gcc/testsuite/g++.dg/gomp/master-2.C
  aec913fefeac6132003dfcbe3fd035eb  gcc/testsuite/g++.dg/gomp/master-3.C
*************** d46338a7410c19cbd15f9efd722b9908  gcc/te
*** 13965,13981 ****
  d5c35e5654a02e8ad174423696e22106  gcc/testsuite/g++.dg/gomp/pr35751.C
  dd4eb5e80956a45eedd66b6fb53f1803  gcc/testsuite/g++.dg/gomp/pr36237.C
  497971a699945003d6d10ae56cf83e58  gcc/testsuite/g++.dg/gomp/pr36790.C
! 83cb9676918875c129b338a6b3d1c8b6  gcc/testsuite/g++.dg/gomp/pr37189.C
  a52eb0d9901d234bc49fc8ba0a8c6dc3  gcc/testsuite/g++.dg/gomp/pr37346.C
  7420b3d69e206086951fd7d3a9284cf5  gcc/testsuite/g++.dg/gomp/pr37533.C
  680adc575515d539496b844b663da838  gcc/testsuite/g++.dg/gomp/pr38633.C
  5d0228d3f358f580c4b61943d8e8da50  gcc/testsuite/g++.dg/gomp/pr38639.C
! ed3154b5303e779fa2c64b81f958a2e3  gcc/testsuite/g++.dg/gomp/pr39495-1.C
! 7fb7abae05ae63fbbc795d7511b4ddfb  gcc/testsuite/g++.dg/gomp/pr39495-2.C
  563250d5632f5800d6723ea9c97b5396  gcc/testsuite/g++.dg/gomp/pr41429.C
  260a1218e23280a02ec7cf21e4dace07  gcc/testsuite/g++.dg/gomp/pr41967.C
  e8fba76fb565aa431ad94feb9ee84f58  gcc/testsuite/g++.dg/gomp/pr42234.C
! 12a218093eab4418a13751050a655efc  gcc/testsuite/g++.dg/gomp/pr47963.C
  2604432f7488b0db190cbd09f93a970d  gcc/testsuite/g++.dg/gomp/pr48632.C
  d26dc16e551e9c50eaca4ea300e37bd2  gcc/testsuite/g++.dg/gomp/pr48716.C
  4b7bfb76d5ef344805effc657aaaeb68  gcc/testsuite/g++.dg/gomp/pr49223-1.C
--- 14764,14780 ----
  d5c35e5654a02e8ad174423696e22106  gcc/testsuite/g++.dg/gomp/pr35751.C
  dd4eb5e80956a45eedd66b6fb53f1803  gcc/testsuite/g++.dg/gomp/pr36237.C
  497971a699945003d6d10ae56cf83e58  gcc/testsuite/g++.dg/gomp/pr36790.C
! ce753e3fac29b4b5f21a1aa8e1fc65b7  gcc/testsuite/g++.dg/gomp/pr37189.C
  a52eb0d9901d234bc49fc8ba0a8c6dc3  gcc/testsuite/g++.dg/gomp/pr37346.C
  7420b3d69e206086951fd7d3a9284cf5  gcc/testsuite/g++.dg/gomp/pr37533.C
  680adc575515d539496b844b663da838  gcc/testsuite/g++.dg/gomp/pr38633.C
  5d0228d3f358f580c4b61943d8e8da50  gcc/testsuite/g++.dg/gomp/pr38639.C
! 2ebf43b280220a2aac6f38380b07a21e  gcc/testsuite/g++.dg/gomp/pr39495-1.C
! 2681104fc53c94d9f6603ea8e1158276  gcc/testsuite/g++.dg/gomp/pr39495-2.C
  563250d5632f5800d6723ea9c97b5396  gcc/testsuite/g++.dg/gomp/pr41429.C
  260a1218e23280a02ec7cf21e4dace07  gcc/testsuite/g++.dg/gomp/pr41967.C
  e8fba76fb565aa431ad94feb9ee84f58  gcc/testsuite/g++.dg/gomp/pr42234.C
! 3e4dc49e972a3ff5479d194f7473fd92  gcc/testsuite/g++.dg/gomp/pr47963.C
  2604432f7488b0db190cbd09f93a970d  gcc/testsuite/g++.dg/gomp/pr48632.C
  d26dc16e551e9c50eaca4ea300e37bd2  gcc/testsuite/g++.dg/gomp/pr48716.C
  4b7bfb76d5ef344805effc657aaaeb68  gcc/testsuite/g++.dg/gomp/pr49223-1.C
*************** ac4d6ed4fa7dd3fbe3400c186a7c46d8  gcc/te
*** 14001,14006 ****
--- 14800,14806 ----
  1c935120e3c1e7d165ea068f57519a6e  gcc/testsuite/g++.dg/gomp/pr67523.C
  1e46e97dc4fca9257e078353e30f0add  gcc/testsuite/g++.dg/gomp/pr71910.C
  79e222486ea33d87026b4ecac4bb3593  gcc/testsuite/g++.dg/gomp/pr71941.C
+ 5e66dc6a8c97cb2d52f6d3a0491d0e75  gcc/testsuite/g++.dg/gomp/pr77578.C
  e517132ae674bc848e5ee4b0da030545  gcc/testsuite/g++.dg/gomp/pr78363-1.C
  d525d430781e40ebeb254a8efceedd72  gcc/testsuite/g++.dg/gomp/pr78363-2.C
  f0ca29d7ad7cbea99e20dbbd47fccc3a  gcc/testsuite/g++.dg/gomp/pr78363-3.C
*************** b818df42e2e83be27f8843cc160f0681  gcc/te
*** 14009,14014 ****
--- 14809,14821 ----
  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
+ d43c7636f8d004a836e8c8543a39d4aa  gcc/testsuite/g++.dg/gomp/pr84556.C
+ 509552ea6a4e3381b95cf49447f0217f  gcc/testsuite/g++.dg/gomp/pr84557.C
+ f4af350e7c840b674d4df142d3432e80  gcc/testsuite/g++.dg/gomp/pr84791.C
+ 40d17ee1d08ee279cba091bb133935cf  gcc/testsuite/g++.dg/gomp/pr85134.C
  adbfca0228fdb71a91ae227ecc88afab  gcc/testsuite/g++.dg/gomp/predetermined-1.C
  edac71d2b358ecd6e646fece69c5426d  gcc/testsuite/g++.dg/gomp/private-1.C
  d447246d410ae61ed9f733998e77b958  gcc/testsuite/g++.dg/gomp/reference-1.C
*************** d647e97b4f8477aa549f4f2f6eb6daa1  gcc/te
*** 14053,14070 ****
  9e724e74b65abd98b17d7ce93dd59b9e  gcc/testsuite/g++.dg/gomp/tpl-target-update.C
  9eefc3427fb4944cb8f6e6894beed6b0  gcc/testsuite/g++.dg/gomp/udr-1.C
  d23c7fcb3b560b7b7a925d5ca6fa6100  gcc/testsuite/g++.dg/gomp/udr-2.C
! 33f4fb95a7c8794ea21a28ee005fe079  gcc/testsuite/g++.dg/gomp/udr-3.C
  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
! e9ef11cab1d05a088417809cd7faf1c2  gcc/testsuite/g++.dg/graphite/graphite.exp
  de81689ffe7845348fd7504b61336c82  gcc/testsuite/g++.dg/graphite/id-1.C
  5c6a1178f4fd620e8792644c534c29f8  gcc/testsuite/g++.dg/graphite/pr39447.C
! 8b5bc8519c7a0bd3c7d9c018b0e608ea  gcc/testsuite/g++.dg/graphite/pr41305.C
! e5bf55fca0fdd72d0227e8f96a248045  gcc/testsuite/g++.dg/graphite/pr41562.C
  dcecc8a81073a9824c153ff083f81a4a  gcc/testsuite/g++.dg/graphite/pr42130.C
  012194f3f4441fc0dc8fb4ba94a8882b  gcc/testsuite/g++.dg/graphite/pr42681.C
! 0d9af772788367ff2013140aaacad333  gcc/testsuite/g++.dg/graphite/pr42930.C
  4cf735ba9e5b65e201dbbd4ec916b359  gcc/testsuite/g++.dg/graphite/pr43026.C
  eee43d821eddc990c3c1e71480186ee2  gcc/testsuite/g++.dg/guality/guality.exp
  2e0a2ac35d8a11426ad1e59f818a5d03  gcc/testsuite/g++.dg/guality/guality.h
--- 14860,14877 ----
  9e724e74b65abd98b17d7ce93dd59b9e  gcc/testsuite/g++.dg/gomp/tpl-target-update.C
  9eefc3427fb4944cb8f6e6894beed6b0  gcc/testsuite/g++.dg/gomp/udr-1.C
  d23c7fcb3b560b7b7a925d5ca6fa6100  gcc/testsuite/g++.dg/gomp/udr-2.C
! 8f936f92e4618f6d92d63d32189ab5d4  gcc/testsuite/g++.dg/gomp/udr-3.C
  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
! b4e26adeb8be470d0bbeb37187121191  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
! fd544ccfba918ae9d4f2fae95e8a9d6f  gcc/testsuite/g++.dg/graphite/pr41562.C
  dcecc8a81073a9824c153ff083f81a4a  gcc/testsuite/g++.dg/graphite/pr42130.C
  012194f3f4441fc0dc8fb4ba94a8882b  gcc/testsuite/g++.dg/graphite/pr42681.C
! dfe63b7d52f6d97e04da25f267ac330c  gcc/testsuite/g++.dg/graphite/pr42930.C
  4cf735ba9e5b65e201dbbd4ec916b359  gcc/testsuite/g++.dg/graphite/pr43026.C
  eee43d821eddc990c3c1e71480186ee2  gcc/testsuite/g++.dg/guality/guality.exp
  2e0a2ac35d8a11426ad1e59f818a5d03  gcc/testsuite/g++.dg/guality/guality.h
*************** eee43d821eddc990c3c1e71480186ee2  gcc/te
*** 14072,14081 ****
  be57153d0806c5827262dfc205d1ddd5  gcc/testsuite/g++.dg/guality/pr55541.C
  09c7cb75ec3ba3ba9c29f5a1956f9e7c  gcc/testsuite/g++.dg/guality/pr55665.C
  1f6434a711b21741e7f18945125f326d  gcc/testsuite/g++.dg/guality/pr67192.C
  8773744d52f1fedc9192c4b6b54678d9  gcc/testsuite/g++.dg/guality/redeclaration1.C
  d4b1aa612cf9b628d986d19617ad2770  gcc/testsuite/g++.dg/header.C
  176e66df5d6aa9dd76c8fe406b78a370  gcc/testsuite/g++.dg/inherit/access1.C
! 6b97e7f34bed3048a23d0a8e86c3e497  gcc/testsuite/g++.dg/inherit/access2.C
  782f289a8885743348299a4efef52f20  gcc/testsuite/g++.dg/inherit/access3.C
  2ef6c26071aeff4bfc7114533bcbb6dc  gcc/testsuite/g++.dg/inherit/access4.C
  c2411e6f8a0da7e3d67e7b6f69f5a766  gcc/testsuite/g++.dg/inherit/access5.C
--- 14879,14889 ----
  be57153d0806c5827262dfc205d1ddd5  gcc/testsuite/g++.dg/guality/pr55541.C
  09c7cb75ec3ba3ba9c29f5a1956f9e7c  gcc/testsuite/g++.dg/guality/pr55665.C
  1f6434a711b21741e7f18945125f326d  gcc/testsuite/g++.dg/guality/pr67192.C
+ 0c2592ea712ffdd8518c042cf08c44f6  gcc/testsuite/g++.dg/guality/pr82630.C
  8773744d52f1fedc9192c4b6b54678d9  gcc/testsuite/g++.dg/guality/redeclaration1.C
  d4b1aa612cf9b628d986d19617ad2770  gcc/testsuite/g++.dg/header.C
  176e66df5d6aa9dd76c8fe406b78a370  gcc/testsuite/g++.dg/inherit/access1.C
! 06874da0f9322a8d8220986c9c167391  gcc/testsuite/g++.dg/inherit/access2.C
  782f289a8885743348299a4efef52f20  gcc/testsuite/g++.dg/inherit/access3.C
  2ef6c26071aeff4bfc7114533bcbb6dc  gcc/testsuite/g++.dg/inherit/access4.C
  c2411e6f8a0da7e3d67e7b6f69f5a766  gcc/testsuite/g++.dg/inherit/access5.C
*************** f3b3605ed6515de4b142977d92356815  gcc/te
*** 14092,14125 ****
  65847617fa7d1ccf575a8de01815db58  gcc/testsuite/g++.dg/inherit/conv2.C
  2306dad7914eaa72347a53252751eb1e  gcc/testsuite/g++.dg/inherit/conv3.C
  d5b9e7987bad7019aaec9e69eab66e85  gcc/testsuite/g++.dg/inherit/covariant1.C
! cddfdb8e9f01440bf52ef339bab825d0  gcc/testsuite/g++.dg/inherit/covariant10.C
! ca45ea7dee32a2ef2bfe9224172afb59  gcc/testsuite/g++.dg/inherit/covariant11.C
! 024b0d1452f48d9188fd4c6f01697f03  gcc/testsuite/g++.dg/inherit/covariant12.C
  a30e748e839e3234af2982a8507640f3  gcc/testsuite/g++.dg/inherit/covariant13.C
! 50c88ef50589e6c43504bf35e1780d9c  gcc/testsuite/g++.dg/inherit/covariant14.C
! 764a60120a5dcf46b78223dc70cad2dd  gcc/testsuite/g++.dg/inherit/covariant15.C
! 32f88811a0b79385570154e352028dd2  gcc/testsuite/g++.dg/inherit/covariant16.C
  5ab99a1e863904d348c5aaf2266263b6  gcc/testsuite/g++.dg/inherit/covariant17.C
  299041871d0a75a982e0c449266a9d35  gcc/testsuite/g++.dg/inherit/covariant18.C
  67641f238f80c6383b7ce6110d58ccb3  gcc/testsuite/g++.dg/inherit/covariant19.C
  1a712ed4a3f761571bfe894372a9032b  gcc/testsuite/g++.dg/inherit/covariant2.C
  3f2664dc416902abf3e84a4d95de8f7a  gcc/testsuite/g++.dg/inherit/covariant20.C
  3b17afe813a33607cf98920580202062  gcc/testsuite/g++.dg/inherit/covariant21.C
  24ff947b4da8f1fcee6c7b66d8388009  gcc/testsuite/g++.dg/inherit/covariant3.C
  8c6bb6aaa56fa2bea8b375c52fab5688  gcc/testsuite/g++.dg/inherit/covariant4.C
  93a19aa63029d81a5f4f59b8b81d11a8  gcc/testsuite/g++.dg/inherit/covariant5.C
  c5a6312f5be1ce7f30501a4b629453f3  gcc/testsuite/g++.dg/inherit/covariant6.C
! ae338fb27343591749fa681e738cf92f  gcc/testsuite/g++.dg/inherit/covariant7.C
  9a768cc9dfee9447ec4b15a45df32035  gcc/testsuite/g++.dg/inherit/covariant8.C
  0511cb5b77e0c5f25eb7db8a8b1daba4  gcc/testsuite/g++.dg/inherit/covariant9.C
  b52ea24b6c61740e2b28313b492e4d74  gcc/testsuite/g++.dg/inherit/crash1.C
  16fa44188961b0a25cc35f173651cce3  gcc/testsuite/g++.dg/inherit/crash2.C
! c4d38d406bb309cef7f90177b0946475  gcc/testsuite/g++.dg/inherit/crash3.C
  9f7779fb2d460dcb7e9a38832eeadcb8  gcc/testsuite/g++.dg/inherit/crash4.C
  893e687ef14fe518638dc15545c4eebd  gcc/testsuite/g++.dg/inherit/crash5.C
  a9bb53451fe4569f250737357a83070a  gcc/testsuite/g++.dg/inherit/crash6.C
  c788c5892d7d120b0357a3804e53f50a  gcc/testsuite/g++.dg/inherit/error1.C
! b70b0b78a846f3d11d419c86043a1fdc  gcc/testsuite/g++.dg/inherit/error2.C
  c3afb04ef418b95bf30acc9eb2a2f204  gcc/testsuite/g++.dg/inherit/error3.C
  6585e3eb587683498e082c97eb7f5805  gcc/testsuite/g++.dg/inherit/error4.C
  4204d9bfa2424e409084ee4b8e9518af  gcc/testsuite/g++.dg/inherit/error5.C
--- 14900,14934 ----
  65847617fa7d1ccf575a8de01815db58  gcc/testsuite/g++.dg/inherit/conv2.C
  2306dad7914eaa72347a53252751eb1e  gcc/testsuite/g++.dg/inherit/conv3.C
  d5b9e7987bad7019aaec9e69eab66e85  gcc/testsuite/g++.dg/inherit/covariant1.C
! c0195322c473a7b828b66463ffa720d0  gcc/testsuite/g++.dg/inherit/covariant10.C
! fd84cc304de6bf4a8b3d8447d60ee664  gcc/testsuite/g++.dg/inherit/covariant11.C
! 23c6cdf43b812f22f6b3025c60b13275  gcc/testsuite/g++.dg/inherit/covariant12.C
  a30e748e839e3234af2982a8507640f3  gcc/testsuite/g++.dg/inherit/covariant13.C
! 256d1243cf9c9cd739108590924457cf  gcc/testsuite/g++.dg/inherit/covariant14.C
! a9833a51cb156e8d3d578bcfb66c9840  gcc/testsuite/g++.dg/inherit/covariant15.C
! 8ce0322a80df609be9b5db2fbd14d9ed  gcc/testsuite/g++.dg/inherit/covariant16.C
  5ab99a1e863904d348c5aaf2266263b6  gcc/testsuite/g++.dg/inherit/covariant17.C
  299041871d0a75a982e0c449266a9d35  gcc/testsuite/g++.dg/inherit/covariant18.C
  67641f238f80c6383b7ce6110d58ccb3  gcc/testsuite/g++.dg/inherit/covariant19.C
  1a712ed4a3f761571bfe894372a9032b  gcc/testsuite/g++.dg/inherit/covariant2.C
  3f2664dc416902abf3e84a4d95de8f7a  gcc/testsuite/g++.dg/inherit/covariant20.C
  3b17afe813a33607cf98920580202062  gcc/testsuite/g++.dg/inherit/covariant21.C
+ b0fbc509fc3009c704d9abec3ca8be74  gcc/testsuite/g++.dg/inherit/covariant22.C
  24ff947b4da8f1fcee6c7b66d8388009  gcc/testsuite/g++.dg/inherit/covariant3.C
  8c6bb6aaa56fa2bea8b375c52fab5688  gcc/testsuite/g++.dg/inherit/covariant4.C
  93a19aa63029d81a5f4f59b8b81d11a8  gcc/testsuite/g++.dg/inherit/covariant5.C
  c5a6312f5be1ce7f30501a4b629453f3  gcc/testsuite/g++.dg/inherit/covariant6.C
! dfb8ba02a472f3e83735c20bde0b5112  gcc/testsuite/g++.dg/inherit/covariant7.C
  9a768cc9dfee9447ec4b15a45df32035  gcc/testsuite/g++.dg/inherit/covariant8.C
  0511cb5b77e0c5f25eb7db8a8b1daba4  gcc/testsuite/g++.dg/inherit/covariant9.C
  b52ea24b6c61740e2b28313b492e4d74  gcc/testsuite/g++.dg/inherit/crash1.C
  16fa44188961b0a25cc35f173651cce3  gcc/testsuite/g++.dg/inherit/crash2.C
! 0e38b2741f56383a5bc7d5c1ec93e100  gcc/testsuite/g++.dg/inherit/crash3.C
  9f7779fb2d460dcb7e9a38832eeadcb8  gcc/testsuite/g++.dg/inherit/crash4.C
  893e687ef14fe518638dc15545c4eebd  gcc/testsuite/g++.dg/inherit/crash5.C
  a9bb53451fe4569f250737357a83070a  gcc/testsuite/g++.dg/inherit/crash6.C
  c788c5892d7d120b0357a3804e53f50a  gcc/testsuite/g++.dg/inherit/error1.C
! 5db1d0d1f903692e1b029760d719bb6b  gcc/testsuite/g++.dg/inherit/error2.C
  c3afb04ef418b95bf30acc9eb2a2f204  gcc/testsuite/g++.dg/inherit/error3.C
  6585e3eb587683498e082c97eb7f5805  gcc/testsuite/g++.dg/inherit/error4.C
  4204d9bfa2424e409084ee4b8e9518af  gcc/testsuite/g++.dg/inherit/error5.C
*************** c3afb04ef418b95bf30acc9eb2a2f204  gcc/te
*** 14128,14149 ****
  7ba23e93339cef0810a212036425afb3  gcc/testsuite/g++.dg/inherit/local2.C
  b542b48ead2e56bb6bd2a0ae0f0e435f  gcc/testsuite/g++.dg/inherit/local3.C
  0538ccbaac8b13faa65f78233c14d00f  gcc/testsuite/g++.dg/inherit/multiple1.C
! 0f6055e72f90fb0e0e43e2ab7aa7141a  gcc/testsuite/g++.dg/inherit/namespace-as-base.C
  929bd841afc583f6793a33214c34c08a  gcc/testsuite/g++.dg/inherit/null1.C
  47a2c8a75fa7e8806502df721a9bf6e3  gcc/testsuite/g++.dg/inherit/operator1.C
  8ec3eec10bb6beeb5a1ec171d1b02302  gcc/testsuite/g++.dg/inherit/operator2.C
! 6abda30090918301223d7b90c34e8158  gcc/testsuite/g++.dg/inherit/override-attribs.C
  1c83e20d447d50159eb23408fda6231f  gcc/testsuite/g++.dg/inherit/override1.C
  de0ba7f6938effcb783f64534175a2c4  gcc/testsuite/g++.dg/inherit/pr30297.C
  d52d42fc3833f2c9203fd161bd8ca97e  gcc/testsuite/g++.dg/inherit/pr48798.C
  89131addad59ec4a9674ff0bf8009038  gcc/testsuite/g++.dg/inherit/pr57942.C
! d3348b3a1e5cfa0927d7b435bf5ee409  gcc/testsuite/g++.dg/inherit/protected1.C
  57ff79e4f3304cf12253ad956fe99a96  gcc/testsuite/g++.dg/inherit/ptrmem1.C
  fad492da1e6e9e175df8d618db9cf1fa  gcc/testsuite/g++.dg/inherit/ptrmem2.C
  592d6abc110ab9527c8334e13ec7cfee  gcc/testsuite/g++.dg/inherit/ptrmem3.C
  a3371e03fa5e6f543d1f83595e71e452  gcc/testsuite/g++.dg/inherit/pure1.C
  54283d70e732fdf112e0764a095a182a  gcc/testsuite/g++.dg/inherit/sizeof1.C
! 11e5d1f68073db04c0dcb3d956d68731  gcc/testsuite/g++.dg/inherit/template-as-base.C
  4021b39faa1fc0ffdc4e1da6d9f3c7d7  gcc/testsuite/g++.dg/inherit/thunk1.C
  1207763664f70af366a4b659c0bebe22  gcc/testsuite/g++.dg/inherit/thunk10.C
  2ee5a69e51f907203553f74298376eaa  gcc/testsuite/g++.dg/inherit/thunk11-aux.cc
--- 14937,14958 ----
  7ba23e93339cef0810a212036425afb3  gcc/testsuite/g++.dg/inherit/local2.C
  b542b48ead2e56bb6bd2a0ae0f0e435f  gcc/testsuite/g++.dg/inherit/local3.C
  0538ccbaac8b13faa65f78233c14d00f  gcc/testsuite/g++.dg/inherit/multiple1.C
! eae99c57114c46fce93b4c56a3e8f6f8  gcc/testsuite/g++.dg/inherit/namespace-as-base.C
  929bd841afc583f6793a33214c34c08a  gcc/testsuite/g++.dg/inherit/null1.C
  47a2c8a75fa7e8806502df721a9bf6e3  gcc/testsuite/g++.dg/inherit/operator1.C
  8ec3eec10bb6beeb5a1ec171d1b02302  gcc/testsuite/g++.dg/inherit/operator2.C
! b2e3895967ecb8400e50a741276a16ea  gcc/testsuite/g++.dg/inherit/override-attribs.C
  1c83e20d447d50159eb23408fda6231f  gcc/testsuite/g++.dg/inherit/override1.C
  de0ba7f6938effcb783f64534175a2c4  gcc/testsuite/g++.dg/inherit/pr30297.C
  d52d42fc3833f2c9203fd161bd8ca97e  gcc/testsuite/g++.dg/inherit/pr48798.C
  89131addad59ec4a9674ff0bf8009038  gcc/testsuite/g++.dg/inherit/pr57942.C
! b741552f2cdc68c44c52f0ce8e4b84fa  gcc/testsuite/g++.dg/inherit/protected1.C
  57ff79e4f3304cf12253ad956fe99a96  gcc/testsuite/g++.dg/inherit/ptrmem1.C
  fad492da1e6e9e175df8d618db9cf1fa  gcc/testsuite/g++.dg/inherit/ptrmem2.C
  592d6abc110ab9527c8334e13ec7cfee  gcc/testsuite/g++.dg/inherit/ptrmem3.C
  a3371e03fa5e6f543d1f83595e71e452  gcc/testsuite/g++.dg/inherit/pure1.C
  54283d70e732fdf112e0764a095a182a  gcc/testsuite/g++.dg/inherit/sizeof1.C
! 57afe5320875f0298c8c5da444a269ad  gcc/testsuite/g++.dg/inherit/template-as-base.C
  4021b39faa1fc0ffdc4e1da6d9f3c7d7  gcc/testsuite/g++.dg/inherit/thunk1.C
  1207763664f70af366a4b659c0bebe22  gcc/testsuite/g++.dg/inherit/thunk10.C
  2ee5a69e51f907203553f74298376eaa  gcc/testsuite/g++.dg/inherit/thunk11-aux.cc
*************** fb6adb819d82abbffb1f0f36f85868ba  gcc/te
*** 14161,14166 ****
--- 14970,14976 ----
  be87b303cd68bc0083e229657e8d162a  gcc/testsuite/g++.dg/inherit/typeinfo1.C
  8ac7470626f12e0cdefa40e25583472b  gcc/testsuite/g++.dg/inherit/union1.C
  593a6859fcee5dcb260d51e522f494ab  gcc/testsuite/g++.dg/inherit/union2.C
+ c3ef752ebc840d838c3182a9a37846aa  gcc/testsuite/g++.dg/inherit/union3.C
  68d63fe3703892061d4c4162a5385cdf  gcc/testsuite/g++.dg/inherit/using1.C
  26f51eac0b25566825aafb23697d10a4  gcc/testsuite/g++.dg/inherit/using2.C
  c9b550ead8867586800cdeee63308c31  gcc/testsuite/g++.dg/inherit/using3.C
*************** c9b550ead8867586800cdeee63308c31  gcc/te
*** 14169,14174 ****
--- 14979,14985 ----
  2a609ed8062419576ed46e3e969999d6  gcc/testsuite/g++.dg/inherit/using6.C
  824afb5f78d6295dc194ab9e7d3ef6c1  gcc/testsuite/g++.dg/inherit/using7.C
  d6728c160968c11c85593017e8436bec  gcc/testsuite/g++.dg/inherit/using8.C
+ 2556b711a88f6354c44595029a2fda2f  gcc/testsuite/g++.dg/inherit/vdtor1.C
  8efdb6239050f04022a6a5056db0f456  gcc/testsuite/g++.dg/inherit/virtual1.C
  36b96ebe70af50681d376a6b671515ea  gcc/testsuite/g++.dg/inherit/virtual10.C
  599419bfac4cb1eafaf6497066c6361e  gcc/testsuite/g++.dg/inherit/virtual11.C
*************** cdd8bcf2d0f951ea0f042ff962ed9854  gcc/te
*** 14205,14211 ****
  d0bb03e714f655f56840d4e660ac77be  gcc/testsuite/g++.dg/init/array13.C
  46ee7376992213a7ad7da95e9c59931d  gcc/testsuite/g++.dg/init/array14.C
  4b343cab41b920a5cd17c596fa24cc6f  gcc/testsuite/g++.dg/init/array15.C
! 2c43f5c2d3188d0d5d12bfaab977d248  gcc/testsuite/g++.dg/init/array16.C
  bebae7e64d01c783fefaf2f358272230  gcc/testsuite/g++.dg/init/array17.C
  2010ab8cabd116e1c5704c568327ae76  gcc/testsuite/g++.dg/init/array18.C
  db737c897b3b257dcc015a0f7ff35dcc  gcc/testsuite/g++.dg/init/array19.C
--- 15016,15022 ----
  d0bb03e714f655f56840d4e660ac77be  gcc/testsuite/g++.dg/init/array13.C
  46ee7376992213a7ad7da95e9c59931d  gcc/testsuite/g++.dg/init/array14.C
  4b343cab41b920a5cd17c596fa24cc6f  gcc/testsuite/g++.dg/init/array15.C
! ac9d7c65d09251952287101b9c38771d  gcc/testsuite/g++.dg/init/array16.C
  bebae7e64d01c783fefaf2f358272230  gcc/testsuite/g++.dg/init/array17.C
  2010ab8cabd116e1c5704c568327ae76  gcc/testsuite/g++.dg/init/array18.C
  db737c897b3b257dcc015a0f7ff35dcc  gcc/testsuite/g++.dg/init/array19.C
*************** fa5767203bb04480dc89d15d55d04ad1  gcc/te
*** 14214,14220 ****
  82e7666faf93a80c3bc11a5a97422e83  gcc/testsuite/g++.dg/init/array21.C
  7f0b825cc0a026b71572eb45075bdc8a  gcc/testsuite/g++.dg/init/array22.C
  f0e89231608afe1f19e238d482a1753c  gcc/testsuite/g++.dg/init/array23.C
! 80e4fac735593ad1904fa8ac57d7e763  gcc/testsuite/g++.dg/init/array24.C
  cd3850e151894462d2f417f022f58b7c  gcc/testsuite/g++.dg/init/array25.C
  5f26b794d27564d1f002c6a0cd333681  gcc/testsuite/g++.dg/init/array26.C
  30e0ae9123ab7bb807c4503c3a24b828  gcc/testsuite/g++.dg/init/array27.C
--- 15025,15031 ----
  82e7666faf93a80c3bc11a5a97422e83  gcc/testsuite/g++.dg/init/array21.C
  7f0b825cc0a026b71572eb45075bdc8a  gcc/testsuite/g++.dg/init/array22.C
  f0e89231608afe1f19e238d482a1753c  gcc/testsuite/g++.dg/init/array23.C
! cf7a09cc35d90ab53aa78b61324a89ff  gcc/testsuite/g++.dg/init/array24.C
  cd3850e151894462d2f417f022f58b7c  gcc/testsuite/g++.dg/init/array25.C
  5f26b794d27564d1f002c6a0cd333681  gcc/testsuite/g++.dg/init/array26.C
  30e0ae9123ab7bb807c4503c3a24b828  gcc/testsuite/g++.dg/init/array27.C
*************** cd684232807d8e9f0bce981e62f25567  gcc/te
*** 14240,14245 ****
--- 15051,15057 ----
  55e1b40f0eeb4748fb72d0e66942c5ef  gcc/testsuite/g++.dg/init/array46.C
  b53d6210787271abe6a5db99c3208fef  gcc/testsuite/g++.dg/init/array47.C
  ec4202dd3ca86defec9ba3dfe4bfdad4  gcc/testsuite/g++.dg/init/array48.C
+ 05e5faa78eca2b06e9827fa0e7e2376a  gcc/testsuite/g++.dg/init/array49.C
  0f2710d39e547bff2dfc21c51a8173ff  gcc/testsuite/g++.dg/init/array5.C
  12f516d0ef7088644b46185bbd83ef4d  gcc/testsuite/g++.dg/init/array6.C
  02cf876b0b0d2594118addc046b9112a  gcc/testsuite/g++.dg/init/array7.C
*************** d2ea13322f402d3ce506a9a1106ee836  gcc/te
*** 14317,14323 ****
  0fab5264214dd4964a69af401f3e7e7c  gcc/testsuite/g++.dg/init/enum1.C
  ca9a6dc8d27f3cf82314cfcd92133441  gcc/testsuite/g++.dg/init/enum2.C
  1b6b87db9a47d5b010067f2e79b87143  gcc/testsuite/g++.dg/init/error1.C
! 56a518089ed19a2aa32735199bb379e0  gcc/testsuite/g++.dg/init/error2.C
  cfcec4fe4da5d8942d3beca6ca26b8ce  gcc/testsuite/g++.dg/init/explicit1.C
  e6c9f54295cc8729774f9ec01aacbef7  gcc/testsuite/g++.dg/init/explicit2.C
  4713987621a0c052919126d6b08a70bf  gcc/testsuite/g++.dg/init/explicit3.C
--- 15129,15135 ----
  0fab5264214dd4964a69af401f3e7e7c  gcc/testsuite/g++.dg/init/enum1.C
  ca9a6dc8d27f3cf82314cfcd92133441  gcc/testsuite/g++.dg/init/enum2.C
  1b6b87db9a47d5b010067f2e79b87143  gcc/testsuite/g++.dg/init/error1.C
! 988a8693b43701251c4dea941fd2a348  gcc/testsuite/g++.dg/init/error2.C
  cfcec4fe4da5d8942d3beca6ca26b8ce  gcc/testsuite/g++.dg/init/explicit1.C
  e6c9f54295cc8729774f9ec01aacbef7  gcc/testsuite/g++.dg/init/explicit2.C
  4713987621a0c052919126d6b08a70bf  gcc/testsuite/g++.dg/init/explicit3.C
*************** ec6e50c7e46fa80be3b8f6bddfdb984b  gcc/te
*** 14334,14340 ****
  c2e29d2071e0ec0563f5e74c45da4ecd  gcc/testsuite/g++.dg/init/init-ref2.C
  c9be9788e0023890c93cbcdd3e3bcbd1  gcc/testsuite/g++.dg/init/init-ref3.C
  3f1579f55c69e948c03b96707c703c8c  gcc/testsuite/g++.dg/init/init-ref4.C
! 41d2d4e5be3c0a2a40a1924f14ac4448  gcc/testsuite/g++.dg/init/inline1.C
  0867c022db8ad55482b727ba001b7cf2  gcc/testsuite/g++.dg/init/lifetime1.C
  9a639b6aec30981f552d544b9c3373f3  gcc/testsuite/g++.dg/init/lifetime2.C
  b280d60771fc613f6363c55c8137a4b8  gcc/testsuite/g++.dg/init/lifetime3.C
--- 15146,15152 ----
  c2e29d2071e0ec0563f5e74c45da4ecd  gcc/testsuite/g++.dg/init/init-ref2.C
  c9be9788e0023890c93cbcdd3e3bcbd1  gcc/testsuite/g++.dg/init/init-ref3.C
  3f1579f55c69e948c03b96707c703c8c  gcc/testsuite/g++.dg/init/init-ref4.C
! f9ead90e4d5cffd123ae313927303782  gcc/testsuite/g++.dg/init/inline1.C
  0867c022db8ad55482b727ba001b7cf2  gcc/testsuite/g++.dg/init/lifetime1.C
  9a639b6aec30981f552d544b9c3373f3  gcc/testsuite/g++.dg/init/lifetime2.C
  b280d60771fc613f6363c55c8137a4b8  gcc/testsuite/g++.dg/init/lifetime3.C
*************** bdc0a28e899cdd6a24fc02b81555168a  gcc/te
*** 14344,14355 ****
  99032474a76d34492ef006f7c9ae5a81  gcc/testsuite/g++.dg/init/new10.C
  ebbaa62ec522ec3c21865701b3d83447  gcc/testsuite/g++.dg/init/new11.C
  bd503383d6a9825355b68023ee042168  gcc/testsuite/g++.dg/init/new12.C
! 6561a25c4a78b0b9b334c7469e9089ec  gcc/testsuite/g++.dg/init/new13.C
  f61f4940bc97502688606d4b7f1701a2  gcc/testsuite/g++.dg/init/new14.C
  675e2069fd4b702f2d78c2cfd416d065  gcc/testsuite/g++.dg/init/new15.C
  c52e42cacc9e8e4d847ceae5031544ca  gcc/testsuite/g++.dg/init/new16.C
  946a0ab6c75da67700a0c85a5b7be291  gcc/testsuite/g++.dg/init/new17.C
! 5ca2a958aa1a666bff61b9a21c413595  gcc/testsuite/g++.dg/init/new18.C
  fc83be635626d62edf6199ab442d0651  gcc/testsuite/g++.dg/init/new19.C
  7502916c49c92544e10e7a1d3ce41eea  gcc/testsuite/g++.dg/init/new2.C
  9b183ec2b575bdf5465306fc4e259b43  gcc/testsuite/g++.dg/init/new20.C
--- 15156,15167 ----
  99032474a76d34492ef006f7c9ae5a81  gcc/testsuite/g++.dg/init/new10.C
  ebbaa62ec522ec3c21865701b3d83447  gcc/testsuite/g++.dg/init/new11.C
  bd503383d6a9825355b68023ee042168  gcc/testsuite/g++.dg/init/new12.C
! 53245465d7a93d8be157009d4de60ae1  gcc/testsuite/g++.dg/init/new13.C
  f61f4940bc97502688606d4b7f1701a2  gcc/testsuite/g++.dg/init/new14.C
  675e2069fd4b702f2d78c2cfd416d065  gcc/testsuite/g++.dg/init/new15.C
  c52e42cacc9e8e4d847ceae5031544ca  gcc/testsuite/g++.dg/init/new16.C
  946a0ab6c75da67700a0c85a5b7be291  gcc/testsuite/g++.dg/init/new17.C
! 7862306efaa800c61d8fc66bdf464259  gcc/testsuite/g++.dg/init/new18.C
  fc83be635626d62edf6199ab442d0651  gcc/testsuite/g++.dg/init/new19.C
  7502916c49c92544e10e7a1d3ce41eea  gcc/testsuite/g++.dg/init/new2.C
  9b183ec2b575bdf5465306fc4e259b43  gcc/testsuite/g++.dg/init/new20.C
*************** c9a8d831104ecec8c5233bd81e720061  gcc/te
*** 14357,14363 ****
  f7a95da9dc93980c45559b153a887a60  gcc/testsuite/g++.dg/init/new22.C
  c6bfe3c407b3ca0eac5cfe23b9a35d23  gcc/testsuite/g++.dg/init/new23.C
  55a9e7ab7780295582670cb7aa2e312f  gcc/testsuite/g++.dg/init/new24.C
! 20135ec12c5060f2291273bcaca5f7f2  gcc/testsuite/g++.dg/init/new25.C
  d20a83f8968c6c9a1d648762dc1a9e2c  gcc/testsuite/g++.dg/init/new26.C
  d5a5bcf8bba7f46ab8feba49e73be0f0  gcc/testsuite/g++.dg/init/new27.C
  7fc4838fffcb429888d20344300ac8d6  gcc/testsuite/g++.dg/init/new28.C
--- 15169,15175 ----
  f7a95da9dc93980c45559b153a887a60  gcc/testsuite/g++.dg/init/new22.C
  c6bfe3c407b3ca0eac5cfe23b9a35d23  gcc/testsuite/g++.dg/init/new23.C
  55a9e7ab7780295582670cb7aa2e312f  gcc/testsuite/g++.dg/init/new24.C
! c199df49af05318b5dc3a225ef2eef11  gcc/testsuite/g++.dg/init/new25.C
  d20a83f8968c6c9a1d648762dc1a9e2c  gcc/testsuite/g++.dg/init/new26.C
  d5a5bcf8bba7f46ab8feba49e73be0f0  gcc/testsuite/g++.dg/init/new27.C
  7fc4838fffcb429888d20344300ac8d6  gcc/testsuite/g++.dg/init/new28.C
*************** cfea0ab170d4358b916fb0262fc92e02  gcc/te
*** 14370,14376 ****
  a3216a95d614cdbac63bafe50438a3b0  gcc/testsuite/g++.dg/init/new34.C
  b00cbbf0a7198ffe55206723b3837c1a  gcc/testsuite/g++.dg/init/new35.C
  9a5926ac1fac1582a28a1430529e44de  gcc/testsuite/g++.dg/init/new36.C
! 1c3dc149237ae1b9e4bab82fa1a55d99  gcc/testsuite/g++.dg/init/new37.C
  53cb1bb3c24504233a232358312a8e69  gcc/testsuite/g++.dg/init/new38.C
  64c11ad2b4bc456c7aa4dc3b3c0ab598  gcc/testsuite/g++.dg/init/new39.C
  19dcda79922ea7017c7e260394e77415  gcc/testsuite/g++.dg/init/new4.C
--- 15182,15188 ----
  a3216a95d614cdbac63bafe50438a3b0  gcc/testsuite/g++.dg/init/new34.C
  b00cbbf0a7198ffe55206723b3837c1a  gcc/testsuite/g++.dg/init/new35.C
  9a5926ac1fac1582a28a1430529e44de  gcc/testsuite/g++.dg/init/new36.C
! f57a3f34c2537a1da4ad33f0fac2a558  gcc/testsuite/g++.dg/init/new37.C
  53cb1bb3c24504233a232358312a8e69  gcc/testsuite/g++.dg/init/new38.C
  64c11ad2b4bc456c7aa4dc3b3c0ab598  gcc/testsuite/g++.dg/init/new39.C
  19dcda79922ea7017c7e260394e77415  gcc/testsuite/g++.dg/init/new4.C
*************** b00cbbf0a7198ffe55206723b3837c1a  gcc/te
*** 14378,14387 ****
  cbd73e68a7e047fb1fead38045398b76  gcc/testsuite/g++.dg/init/new41.C
  d11503933ddf4a9a5fa720f05ff832e4  gcc/testsuite/g++.dg/init/new42.C
  fd6869398cfa2f62439ddff9ad272dee  gcc/testsuite/g++.dg/init/new43.C
! c79ea9a4ffee3033ad6ef4aa38d44935  gcc/testsuite/g++.dg/init/new44.C
  d2d77d6c719441f941b5b510dcb137a2  gcc/testsuite/g++.dg/init/new45.C
  7d357b38717d9bc4094e5d7cc77d069d  gcc/testsuite/g++.dg/init/new46.C
! 92f9a4a5c99df62b928e07de2269fcc8  gcc/testsuite/g++.dg/init/new47.C
  ece146914185349992892b6c7e289bb0  gcc/testsuite/g++.dg/init/new48.C
  165b53a00e07117f81b4b42f0b88ed5c  gcc/testsuite/g++.dg/init/new5.C
  6142030ce76d1ab9453ff0a223722577  gcc/testsuite/g++.dg/init/new6.C
--- 15190,15199 ----
  cbd73e68a7e047fb1fead38045398b76  gcc/testsuite/g++.dg/init/new41.C
  d11503933ddf4a9a5fa720f05ff832e4  gcc/testsuite/g++.dg/init/new42.C
  fd6869398cfa2f62439ddff9ad272dee  gcc/testsuite/g++.dg/init/new43.C
! 871ff62d499ee9a40413702b357f204f  gcc/testsuite/g++.dg/init/new44.C
  d2d77d6c719441f941b5b510dcb137a2  gcc/testsuite/g++.dg/init/new45.C
  7d357b38717d9bc4094e5d7cc77d069d  gcc/testsuite/g++.dg/init/new46.C
! 578919234003568d10881d031eee7b19  gcc/testsuite/g++.dg/init/new47.C
  ece146914185349992892b6c7e289bb0  gcc/testsuite/g++.dg/init/new48.C
  165b53a00e07117f81b4b42f0b88ed5c  gcc/testsuite/g++.dg/init/new5.C
  6142030ce76d1ab9453ff0a223722577  gcc/testsuite/g++.dg/init/new6.C
*************** aa579892dca36d8b110a8b13f1664a4a  gcc/te
*** 14405,14413 ****
  e37e39bdf9e1b0a5812d4dce3aa161b9  gcc/testsuite/g++.dg/init/pr25811.C
  85782d5ef8b1f167eda4d2f6167a8f03  gcc/testsuite/g++.dg/init/pr29043.C
  8ec941f80b1661f99f6cd682d5d469dc  gcc/testsuite/g++.dg/init/pr29571.C
! 9f60037d397151d920090cb20ea9863e  gcc/testsuite/g++.dg/init/pr35878_1.C
  118e680c5fedaa9acc1e1ac1f7c49734  gcc/testsuite/g++.dg/init/pr35878_2.C
  47bced0af8605e929d7e7f6148cc59e6  gcc/testsuite/g++.dg/init/pr35878_3.C
  624e9f796f15d614e6a391af843914f4  gcc/testsuite/g++.dg/init/pr42556.C
  066f1cead171149587cf59897ebf0fb8  gcc/testsuite/g++.dg/init/pr42844.C
  b25b382db37739c81869b75df02687cf  gcc/testsuite/g++.dg/init/pr43453.C
--- 15217,15226 ----
  e37e39bdf9e1b0a5812d4dce3aa161b9  gcc/testsuite/g++.dg/init/pr25811.C
  85782d5ef8b1f167eda4d2f6167a8f03  gcc/testsuite/g++.dg/init/pr29043.C
  8ec941f80b1661f99f6cd682d5d469dc  gcc/testsuite/g++.dg/init/pr29571.C
! e6aa309a87de688020673480763c4211  gcc/testsuite/g++.dg/init/pr35878_1.C
  118e680c5fedaa9acc1e1ac1f7c49734  gcc/testsuite/g++.dg/init/pr35878_2.C
  47bced0af8605e929d7e7f6148cc59e6  gcc/testsuite/g++.dg/init/pr35878_3.C
+ 130a8c69db344833b83e331574b3fd38  gcc/testsuite/g++.dg/init/pr35878_4.C
  624e9f796f15d614e6a391af843914f4  gcc/testsuite/g++.dg/init/pr42556.C
  066f1cead171149587cf59897ebf0fb8  gcc/testsuite/g++.dg/init/pr42844.C
  b25b382db37739c81869b75df02687cf  gcc/testsuite/g++.dg/init/pr43453.C
*************** b25b382db37739c81869b75df02687cf  gcc/te
*** 14415,14421 ****
  89bc34eae0365b381ab82e8d4ca5957f  gcc/testsuite/g++.dg/init/pr43890.C
  f660de16a9cf160558064bb92eb21901  gcc/testsuite/g++.dg/init/pr44086.C
  880ee6b08cc835f2a1db0bae613e7a23  gcc/testsuite/g++.dg/init/pr48859.C
! 72601c1b850b49dd7447dc271d916d5a  gcc/testsuite/g++.dg/init/pr55497.C
  c835d50eaf5fe1a2b052a1579b5ce77f  gcc/testsuite/g++.dg/init/pr58811.C
  f25ce72283c3004e08c0df4685ca2469  gcc/testsuite/g++.dg/init/pr60572.C
  14b8558990190d2eb7bc7f8d10c40bd9  gcc/testsuite/g++.dg/init/pr64527.C
--- 15228,15234 ----
  89bc34eae0365b381ab82e8d4ca5957f  gcc/testsuite/g++.dg/init/pr43890.C
  f660de16a9cf160558064bb92eb21901  gcc/testsuite/g++.dg/init/pr44086.C
  880ee6b08cc835f2a1db0bae613e7a23  gcc/testsuite/g++.dg/init/pr48859.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
  14b8558990190d2eb7bc7f8d10c40bd9  gcc/testsuite/g++.dg/init/pr64527.C
*************** a5a0c6bb188e4c01d4db2d84a5014752  gcc/te
*** 14423,14428 ****
--- 15236,15243 ----
  788ed5b002d14f945d06c72d6b7c78bc  gcc/testsuite/g++.dg/init/pr69658.C
  154196e0320831a54c0ed5e880a704cd  gcc/testsuite/g++.dg/init/pr70501.C
  effadbfc637d03ffccebf5ad6b37c6c0  gcc/testsuite/g++.dg/init/pr71516.C
+ b5707b25d4d0641e5480c89d2c3d3e23  gcc/testsuite/g++.dg/init/pr83993-1.C
+ f4a9a1e164470931fa7976c132918e97  gcc/testsuite/g++.dg/init/pr83993-2.C
  697d82f637fb8839d98efadd58ededf5  gcc/testsuite/g++.dg/init/ptrfn1.C
  c3eaccdcf8e35f944dee4d4b3d720336  gcc/testsuite/g++.dg/init/ptrfn2.C
  111716aa5bd4c456321772f776bd97d1  gcc/testsuite/g++.dg/init/ptrfn3.C
*************** c83b7aed233d6150603f6551e858ddf3  gcc/te
*** 14454,14461 ****
  9c3b8c9a5fc41b1c5f481bc06906695f  gcc/testsuite/g++.dg/init/ref8.C
  ded575d1c35757dbf89f635e5a86910d  gcc/testsuite/g++.dg/init/ref9.C
  14fd5d851c700287b535c91b481fe0cf  gcc/testsuite/g++.dg/init/reference1.C
! 0960bd0fd309b441dfe952c9d328620e  gcc/testsuite/g++.dg/init/reference2.C
! 8c2a05e86a5eb2a7a53230fcaf761060  gcc/testsuite/g++.dg/init/reference3.C
  7d8b7ff14410173fd3e1cb0594f72583  gcc/testsuite/g++.dg/init/save1.C
  a48726a2b65855eb8c52e41df2fe8018  gcc/testsuite/g++.dg/init/self1.C
  3590ad5754f93f2ab00974878ace368e  gcc/testsuite/g++.dg/init/static-init1.C
--- 15269,15276 ----
  9c3b8c9a5fc41b1c5f481bc06906695f  gcc/testsuite/g++.dg/init/ref8.C
  ded575d1c35757dbf89f635e5a86910d  gcc/testsuite/g++.dg/init/ref9.C
  14fd5d851c700287b535c91b481fe0cf  gcc/testsuite/g++.dg/init/reference1.C
! 50714c8215b0dcc5d08994acb9b35232  gcc/testsuite/g++.dg/init/reference2.C
! f6b622b8df1f9be4adbfe05e8d8ddbdc  gcc/testsuite/g++.dg/init/reference3.C
  7d8b7ff14410173fd3e1cb0594f72583  gcc/testsuite/g++.dg/init/save1.C
  a48726a2b65855eb8c52e41df2fe8018  gcc/testsuite/g++.dg/init/self1.C
  3590ad5754f93f2ab00974878ace368e  gcc/testsuite/g++.dg/init/static-init1.C
*************** eac75da8029ebf097e358f87837418c2  gcc/te
*** 14467,14475 ****
  4e0fdfa0a67cd3c3e1f1a9752829fecf  gcc/testsuite/g++.dg/init/static4.C
  8b181745d241d484dd529391acd12c57  gcc/testsuite/g++.dg/init/string1.C
  58b4c5838fafdec40fe718447129945f  gcc/testsuite/g++.dg/init/struct1.C
! 4659e4a9f0e209d3efc6a3da61e47a06  gcc/testsuite/g++.dg/init/struct2.C
  22d61e3cdadcbb46755a2e1556954646  gcc/testsuite/g++.dg/init/struct3.C
! fb4e7d34dd521424475c02bd1379d218  gcc/testsuite/g++.dg/init/switch1.C
  ab02e565927ee50b37c774159922e9d9  gcc/testsuite/g++.dg/init/synth1.C
  548c2d41c07dd074ce3c767a44bcf146  gcc/testsuite/g++.dg/init/synth2.C
  52d51052f7365f93dd3959b1a93894f2  gcc/testsuite/g++.dg/init/synth3.C
--- 15282,15290 ----
  4e0fdfa0a67cd3c3e1f1a9752829fecf  gcc/testsuite/g++.dg/init/static4.C
  8b181745d241d484dd529391acd12c57  gcc/testsuite/g++.dg/init/string1.C
  58b4c5838fafdec40fe718447129945f  gcc/testsuite/g++.dg/init/struct1.C
! ecbe90032bd93aed4a7b737be9838847  gcc/testsuite/g++.dg/init/struct2.C
  22d61e3cdadcbb46755a2e1556954646  gcc/testsuite/g++.dg/init/struct3.C
! cd09788f87882ace948bdefd74af45cc  gcc/testsuite/g++.dg/init/switch1.C
  ab02e565927ee50b37c774159922e9d9  gcc/testsuite/g++.dg/init/synth1.C
  548c2d41c07dd074ce3c767a44bcf146  gcc/testsuite/g++.dg/init/synth2.C
  52d51052f7365f93dd3959b1a93894f2  gcc/testsuite/g++.dg/init/synth3.C
*************** f98e7ab2646951eca57b37b0ade8c12a  gcc/te
*** 14496,14516 ****
  181d03bf17027cab97eb47736f11ff30  gcc/testsuite/g++.dg/ipa/20090113-1.C
  1d89cf17ea9693f5e30feb14873dea5f  gcc/testsuite/g++.dg/ipa/comdat.C
  a24ea6f9a49499ad011b5a9d37c49be4  gcc/testsuite/g++.dg/ipa/devirt-1.C
! 70d4d40d3da35af4cde077217803b240  gcc/testsuite/g++.dg/ipa/devirt-10.C
  9b5d9c88e0cc585e7445c4377ac387a4  gcc/testsuite/g++.dg/ipa/devirt-11.C
  735cd0c901f1baec6b9a9aa37bfa6ab4  gcc/testsuite/g++.dg/ipa/devirt-12.C
! a3cbda53940efa6f63760144d4cdb404  gcc/testsuite/g++.dg/ipa/devirt-13.C
! ca1e1a16274e26917bf1c0b8d35d248a  gcc/testsuite/g++.dg/ipa/devirt-14.C
! f23fc5b53a08d2d8d3d3ad939fe07852  gcc/testsuite/g++.dg/ipa/devirt-15.C
! a7deb3c3dfb418fb488cfe446c96f6f4  gcc/testsuite/g++.dg/ipa/devirt-16.C
! b741c27baa9be9eff02f07f0df9cfb66  gcc/testsuite/g++.dg/ipa/devirt-17.C
! dc35135b7658a4ea9d45390aa7f0c6cf  gcc/testsuite/g++.dg/ipa/devirt-18.C
! 9aa776601123b47eda3dd3b871d22199  gcc/testsuite/g++.dg/ipa/devirt-19.C
  bf854bda030a1dd51eb37b4771a0dcb3  gcc/testsuite/g++.dg/ipa/devirt-2.C
  38cc93e595d53663e7624f3bf745ba39  gcc/testsuite/g++.dg/ipa/devirt-20.C
! 18edf8fd9a3b7a12da60c7cf547480f5  gcc/testsuite/g++.dg/ipa/devirt-21.C
! 7a174c9467cac8c77e794b323bd97086  gcc/testsuite/g++.dg/ipa/devirt-22.C
! 06447b6b7ffd2e78af3067b584d4ab48  gcc/testsuite/g++.dg/ipa/devirt-23.C
  8d58528adf789041a50a82c406170971  gcc/testsuite/g++.dg/ipa/devirt-24.C
  8e1a95281390a20596d1470878312533  gcc/testsuite/g++.dg/ipa/devirt-25.C
  abf9c5109aa819804228db274d44a58c  gcc/testsuite/g++.dg/ipa/devirt-26.C
--- 15311,15331 ----
  181d03bf17027cab97eb47736f11ff30  gcc/testsuite/g++.dg/ipa/20090113-1.C
  1d89cf17ea9693f5e30feb14873dea5f  gcc/testsuite/g++.dg/ipa/comdat.C
  a24ea6f9a49499ad011b5a9d37c49be4  gcc/testsuite/g++.dg/ipa/devirt-1.C
! ca15311ea1da0659039c9b25689b0b27  gcc/testsuite/g++.dg/ipa/devirt-10.C
  9b5d9c88e0cc585e7445c4377ac387a4  gcc/testsuite/g++.dg/ipa/devirt-11.C
  735cd0c901f1baec6b9a9aa37bfa6ab4  gcc/testsuite/g++.dg/ipa/devirt-12.C
! e56f74042aa8aa5dbbb9f60f5673507c  gcc/testsuite/g++.dg/ipa/devirt-13.C
! 44c79b746a024dc0af4c9cb2a65b99ee  gcc/testsuite/g++.dg/ipa/devirt-14.C
! 3a165818e702466a10e261787ba32023  gcc/testsuite/g++.dg/ipa/devirt-15.C
! a3ef5649648039007c89bf5cb9fe814b  gcc/testsuite/g++.dg/ipa/devirt-16.C
! 6dcf4578bc9c92f114c8c61ef2660571  gcc/testsuite/g++.dg/ipa/devirt-17.C
! 4b23a4e562c19810f0c55f0817916933  gcc/testsuite/g++.dg/ipa/devirt-18.C
! baa239f9850100d3f6bb02dff4eb0b37  gcc/testsuite/g++.dg/ipa/devirt-19.C
  bf854bda030a1dd51eb37b4771a0dcb3  gcc/testsuite/g++.dg/ipa/devirt-2.C
  38cc93e595d53663e7624f3bf745ba39  gcc/testsuite/g++.dg/ipa/devirt-20.C
! 67e019ff1f3d279e2c6b5f223b061ebc  gcc/testsuite/g++.dg/ipa/devirt-21.C
! ef2c20211e1e4ece4ec9e3d8ea3d585f  gcc/testsuite/g++.dg/ipa/devirt-22.C
! e4bbbef263835020ccf2c62595fa7b76  gcc/testsuite/g++.dg/ipa/devirt-23.C
  8d58528adf789041a50a82c406170971  gcc/testsuite/g++.dg/ipa/devirt-24.C
  8e1a95281390a20596d1470878312533  gcc/testsuite/g++.dg/ipa/devirt-25.C
  abf9c5109aa819804228db274d44a58c  gcc/testsuite/g++.dg/ipa/devirt-26.C
*************** c5e9a1f0512a55d50ec7174c592a3022  gcc/te
*** 14523,14549 ****
  0dd4eb7b025da88a7c86dca21a19aec9  gcc/testsuite/g++.dg/ipa/devirt-31.C
  5c336f011df582bbb61ab1f66713bacc  gcc/testsuite/g++.dg/ipa/devirt-32.C
  3b9e97d22e7c620ad38b7c8edcdb5e50  gcc/testsuite/g++.dg/ipa/devirt-33.C
! bb01da6014c8c0d12735c961314306ad  gcc/testsuite/g++.dg/ipa/devirt-34.C
  af71e4ad430c6621490104b76bd286c5  gcc/testsuite/g++.dg/ipa/devirt-35.C
  443cda4092534fdc2d4dfc0f1c908424  gcc/testsuite/g++.dg/ipa/devirt-36.C
  a4928dadb59f3abf3083bb3253bc654a  gcc/testsuite/g++.dg/ipa/devirt-37.C
! 2270039df025f3b5fd9d783abde1eaf6  gcc/testsuite/g++.dg/ipa/devirt-38.C
  a2972db3912accc9638a8980355e47ed  gcc/testsuite/g++.dg/ipa/devirt-39.C
  2878c81a10148de820784e19c1fe44f9  gcc/testsuite/g++.dg/ipa/devirt-4.C
! 81b4100ee67dd7616e3c79f24ae93a60  gcc/testsuite/g++.dg/ipa/devirt-40.C
! f9b6fdb57e3756d0f16de97a1de5224a  gcc/testsuite/g++.dg/ipa/devirt-41.C
! 9ce748d735bbf0bc343c3b104700faf0  gcc/testsuite/g++.dg/ipa/devirt-42.C
  db476e68b1dec09bf7f43dcc225319f2  gcc/testsuite/g++.dg/ipa/devirt-43.C
! 8047a40ca6f3bafc69c5b058cf9f4233  gcc/testsuite/g++.dg/ipa/devirt-44.C
! 5d7a29d6d1bf3b9441684451555a0dde  gcc/testsuite/g++.dg/ipa/devirt-45.C
  8072c0f695bd61651ee2b95dd242d870  gcc/testsuite/g++.dg/ipa/devirt-46.C
  87e2032503d599965c24246566d7e086  gcc/testsuite/g++.dg/ipa/devirt-47.C
! 431fdb5e7aa77af45604eb0784807784  gcc/testsuite/g++.dg/ipa/devirt-48.C
  3d6e506a8354c7a8ea4175f4b0eeeb02  gcc/testsuite/g++.dg/ipa/devirt-49.C
  3493d9039777102a9dc179a10e6ff032  gcc/testsuite/g++.dg/ipa/devirt-5.C
  d87145e88d34f5d2eae546222df30b3b  gcc/testsuite/g++.dg/ipa/devirt-50.C
  be088974e9a3b5a0dd791b417e8d9180  gcc/testsuite/g++.dg/ipa/devirt-51.C
! 662984166e0fee583efab01d8cb310c8  gcc/testsuite/g++.dg/ipa/devirt-52.C
  8c636e7513618b1b3735a28c660923df  gcc/testsuite/g++.dg/ipa/devirt-6.C
  0184c3241b7a2b5aeaa0c74da5e829d3  gcc/testsuite/g++.dg/ipa/devirt-7.C
  3252dbffb860406042680ab12bb666e8  gcc/testsuite/g++.dg/ipa/devirt-9.C
--- 15338,15364 ----
  0dd4eb7b025da88a7c86dca21a19aec9  gcc/testsuite/g++.dg/ipa/devirt-31.C
  5c336f011df582bbb61ab1f66713bacc  gcc/testsuite/g++.dg/ipa/devirt-32.C
  3b9e97d22e7c620ad38b7c8edcdb5e50  gcc/testsuite/g++.dg/ipa/devirt-33.C
! 88cdebd4fa34ee49cc43372781b50ff1  gcc/testsuite/g++.dg/ipa/devirt-34.C
  af71e4ad430c6621490104b76bd286c5  gcc/testsuite/g++.dg/ipa/devirt-35.C
  443cda4092534fdc2d4dfc0f1c908424  gcc/testsuite/g++.dg/ipa/devirt-36.C
  a4928dadb59f3abf3083bb3253bc654a  gcc/testsuite/g++.dg/ipa/devirt-37.C
! 37353246ea7006017939a1089caa2bd4  gcc/testsuite/g++.dg/ipa/devirt-38.C
  a2972db3912accc9638a8980355e47ed  gcc/testsuite/g++.dg/ipa/devirt-39.C
  2878c81a10148de820784e19c1fe44f9  gcc/testsuite/g++.dg/ipa/devirt-4.C
! 92e9e6b1652a4e88f7bb04768346a9f1  gcc/testsuite/g++.dg/ipa/devirt-40.C
! d78ab57adfda4c091e90fca3cb9fff80  gcc/testsuite/g++.dg/ipa/devirt-41.C
! e915138ffa27270843cb0bce3000e00b  gcc/testsuite/g++.dg/ipa/devirt-42.C
  db476e68b1dec09bf7f43dcc225319f2  gcc/testsuite/g++.dg/ipa/devirt-43.C
! d8833179da27d4f2553e2c4ddfcc2619  gcc/testsuite/g++.dg/ipa/devirt-44.C
! f47bc7a9c37789213c8eb800176ec3ff  gcc/testsuite/g++.dg/ipa/devirt-45.C
  8072c0f695bd61651ee2b95dd242d870  gcc/testsuite/g++.dg/ipa/devirt-46.C
  87e2032503d599965c24246566d7e086  gcc/testsuite/g++.dg/ipa/devirt-47.C
! 10ce974026cff069141c158f78b69988  gcc/testsuite/g++.dg/ipa/devirt-48.C
  3d6e506a8354c7a8ea4175f4b0eeeb02  gcc/testsuite/g++.dg/ipa/devirt-49.C
  3493d9039777102a9dc179a10e6ff032  gcc/testsuite/g++.dg/ipa/devirt-5.C
  d87145e88d34f5d2eae546222df30b3b  gcc/testsuite/g++.dg/ipa/devirt-50.C
  be088974e9a3b5a0dd791b417e8d9180  gcc/testsuite/g++.dg/ipa/devirt-51.C
! fc38ff8896f0722b271df69cdb4d61c5  gcc/testsuite/g++.dg/ipa/devirt-52.C
  8c636e7513618b1b3735a28c660923df  gcc/testsuite/g++.dg/ipa/devirt-6.C
  0184c3241b7a2b5aeaa0c74da5e829d3  gcc/testsuite/g++.dg/ipa/devirt-7.C
  3252dbffb860406042680ab12bb666e8  gcc/testsuite/g++.dg/ipa/devirt-9.C
*************** f0c81f367f9923adc5910994965c4e75  gcc/te
*** 14581,14593 ****
  4e132d555b72f4502457518ad8db5a03  gcc/testsuite/g++.dg/ipa/ivinline-7.C
  5687c5533a2a9a896c8d5f05506ecc01  gcc/testsuite/g++.dg/ipa/ivinline-8.C
  32a79e0d1c0d3032740e67e97ddd313d  gcc/testsuite/g++.dg/ipa/ivinline-9.C
! 027588fae7c8c26535dc46764d149911  gcc/testsuite/g++.dg/ipa/nothrow-1.C
  ecfa94e705bc436ad699767b1e4c929e  gcc/testsuite/g++.dg/ipa/polymorphic-call-1.C
  02f3704c0511b2d171c55dbf09c64325  gcc/testsuite/g++.dg/ipa/pr43695.C
! 8f31add58ec72eb54693c3a9f4769173  gcc/testsuite/g++.dg/ipa/pr43812.C
! e4f8dcc7620cbae1961d6880134b1dd5  gcc/testsuite/g++.dg/ipa/pr44372.C
  34f01b9fc4157e35aef42fe4303714df  gcc/testsuite/g++.dg/ipa/pr45565.C
! fbe7a722c61f265b03ff0a5ed5ada369  gcc/testsuite/g++.dg/ipa/pr45572-1.C
  0d4cd7a0dcc526799f7b4db021c2f68d  gcc/testsuite/g++.dg/ipa/pr45572-2.C
  308bcf23bb271af4ffddb96f07a09beb  gcc/testsuite/g++.dg/ipa/pr45875.C
  3b13da9b176812433b85dc81c337079d  gcc/testsuite/g++.dg/ipa/pr46053.C
--- 15396,15408 ----
  4e132d555b72f4502457518ad8db5a03  gcc/testsuite/g++.dg/ipa/ivinline-7.C
  5687c5533a2a9a896c8d5f05506ecc01  gcc/testsuite/g++.dg/ipa/ivinline-8.C
  32a79e0d1c0d3032740e67e97ddd313d  gcc/testsuite/g++.dg/ipa/ivinline-9.C
! 89a697678c960075181328b0bed18d5a  gcc/testsuite/g++.dg/ipa/nothrow-1.C
  ecfa94e705bc436ad699767b1e4c929e  gcc/testsuite/g++.dg/ipa/polymorphic-call-1.C
  02f3704c0511b2d171c55dbf09c64325  gcc/testsuite/g++.dg/ipa/pr43695.C
! 5345293723ad062b59b168c319738e1e  gcc/testsuite/g++.dg/ipa/pr43812.C
! 6128eb5cd9434152c784f6e0d952b885  gcc/testsuite/g++.dg/ipa/pr44372.C
  34f01b9fc4157e35aef42fe4303714df  gcc/testsuite/g++.dg/ipa/pr45565.C
! c39768e60c48a8140ac1eb7b8c2adfcb  gcc/testsuite/g++.dg/ipa/pr45572-1.C
  0d4cd7a0dcc526799f7b4db021c2f68d  gcc/testsuite/g++.dg/ipa/pr45572-2.C
  308bcf23bb271af4ffddb96f07a09beb  gcc/testsuite/g++.dg/ipa/pr45875.C
  3b13da9b176812433b85dc81c337079d  gcc/testsuite/g++.dg/ipa/pr46053.C
*************** b6207250e81c199b2860b99758c7c707  gcc/te
*** 14602,14615 ****
  31b6d18c1858b5f5148de832f3fb7915  gcc/testsuite/g++.dg/ipa/pr55264.C
  7c5981c91101d5d0b6e2a89e61d7a675  gcc/testsuite/g++.dg/ipa/pr56310.C
  dee7ba2e84e87c8e1991a1d3b02db130  gcc/testsuite/g++.dg/ipa/pr57670.C
! f287dc072a94999cab21c3790a8c651f  gcc/testsuite/g++.dg/ipa/pr58371.C
! bd532642c33364f27cc5cdac3622c29b  gcc/testsuite/g++.dg/ipa/pr59176.C
  16e01d7c14ca47634024cefe29fb2085  gcc/testsuite/g++.dg/ipa/pr59355.C
  e5598a6623b0d9d17b639bb9715c0aa1  gcc/testsuite/g++.dg/ipa/pr59737.C
  cc7882632634230561bec7316fae94c5  gcc/testsuite/g++.dg/ipa/pr60419.C
  19fe8d73bee48bb2e91c928907e2a11c  gcc/testsuite/g++.dg/ipa/pr60457.C
  15e6e9042d924b2536a9336edc77ffc2  gcc/testsuite/g++.dg/ipa/pr60600.C
! 190bb52be2caa70fd51cc2a735d45f1e  gcc/testsuite/g++.dg/ipa/pr60640-1.C
  b4277c2887fdb910bdca2a8dbf0de117  gcc/testsuite/g++.dg/ipa/pr60640-2.C
  2b5d243c5137f370d06b3628cfde2864  gcc/testsuite/g++.dg/ipa/pr60640-3.C
  7f2228ea453e987086ecfb77720870b8  gcc/testsuite/g++.dg/ipa/pr60640-4.C
--- 15417,15430 ----
  31b6d18c1858b5f5148de832f3fb7915  gcc/testsuite/g++.dg/ipa/pr55264.C
  7c5981c91101d5d0b6e2a89e61d7a675  gcc/testsuite/g++.dg/ipa/pr56310.C
  dee7ba2e84e87c8e1991a1d3b02db130  gcc/testsuite/g++.dg/ipa/pr57670.C
! 5a6d72186433ddf66c47d9776cf5901c  gcc/testsuite/g++.dg/ipa/pr58371.C
! 3d60f991ff8f5bbc382f8b3de7af1f5b  gcc/testsuite/g++.dg/ipa/pr59176.C
  16e01d7c14ca47634024cefe29fb2085  gcc/testsuite/g++.dg/ipa/pr59355.C
  e5598a6623b0d9d17b639bb9715c0aa1  gcc/testsuite/g++.dg/ipa/pr59737.C
  cc7882632634230561bec7316fae94c5  gcc/testsuite/g++.dg/ipa/pr60419.C
  19fe8d73bee48bb2e91c928907e2a11c  gcc/testsuite/g++.dg/ipa/pr60457.C
  15e6e9042d924b2536a9336edc77ffc2  gcc/testsuite/g++.dg/ipa/pr60600.C
! 4095049309a28e2269387e9ee4b92e8c  gcc/testsuite/g++.dg/ipa/pr60640-1.C
  b4277c2887fdb910bdca2a8dbf0de117  gcc/testsuite/g++.dg/ipa/pr60640-2.C
  2b5d243c5137f370d06b3628cfde2864  gcc/testsuite/g++.dg/ipa/pr60640-3.C
  7f2228ea453e987086ecfb77720870b8  gcc/testsuite/g++.dg/ipa/pr60640-4.C
*************** b4277c2887fdb910bdca2a8dbf0de117  gcc/te
*** 14617,14663 ****
  2c3b07fe4ee36fc9baf0391eed8b9d2d  gcc/testsuite/g++.dg/ipa/pr61160-1.C
  a4915f296a72bd543457d07dc50cfb77  gcc/testsuite/g++.dg/ipa/pr61160-2.C
  76e6fb68d22161d91fe6235763ebde98  gcc/testsuite/g++.dg/ipa/pr61160-3.C
! daceb1b2f3cf167fb6e78fc2d34f2778  gcc/testsuite/g++.dg/ipa/pr61540.C
  438118cbb7d30bffc810662fe5da5b9c  gcc/testsuite/g++.dg/ipa/pr61654.C
! 17e936ed9c03598331df49d0c209620c  gcc/testsuite/g++.dg/ipa/pr61800.C
  a64421ae505e08d8f9b8bd14a2b8da21  gcc/testsuite/g++.dg/ipa/pr62015.C
  e24fb768f0a9cba7dfd73632a0e86880  gcc/testsuite/g++.dg/ipa/pr63306.C
! c054a2e8f9f4c0f5065b7923f81520f5  gcc/testsuite/g++.dg/ipa/pr63470.C
  89df72699f04cc90fcc5ea05980fd7ac  gcc/testsuite/g++.dg/ipa/pr63551.C
  b52e84f9754809a1066f9dc82ae31fa3  gcc/testsuite/g++.dg/ipa/pr63574.C
  b600f6a6c38f9918243512d82a0540ce  gcc/testsuite/g++.dg/ipa/pr63580.C
! 8c5345c384d37e0ae804bdfaf9e9ec61  gcc/testsuite/g++.dg/ipa/pr63587-1.C
! 994a03a0933673159d3310933fe451e8  gcc/testsuite/g++.dg/ipa/pr63587-2.C
  29e3b273cd77d035cc1824cae0705fdd  gcc/testsuite/g++.dg/ipa/pr63595.C
  9a83145d2e920a59bd2baabfc283d5be  gcc/testsuite/g++.dg/ipa/pr63621.C
  cbec9db210200f035b58e9a660e61435  gcc/testsuite/g++.dg/ipa/pr63814.C
! 2038cd391d551d77c6315d1afdc1cd3c  gcc/testsuite/g++.dg/ipa/pr63838.C
! 69d845a6d934e42afc3404ec9247ae42  gcc/testsuite/g++.dg/ipa/pr63894.C
  668dac2bc50dd7bdff35ef4a5f36d39c  gcc/testsuite/g++.dg/ipa/pr64049-1.C
  ebfb11a98bc1e44e7f098bb324067839  gcc/testsuite/g++.dg/ipa/pr64049-2.C
  246af28e9eaf17a52673d1e66b8f551e  gcc/testsuite/g++.dg/ipa/pr64049.h
  bdd257ad9c46fa94a3cc357ef5ccff26  gcc/testsuite/g++.dg/ipa/pr64059.C
! 04f8a0459bce64c0fd523bb0de9c9d28  gcc/testsuite/g++.dg/ipa/pr64068.C
  33d914d8d6c20232b021ebd458fe69e8  gcc/testsuite/g++.dg/ipa/pr64146.C
  d8250f9d21f9968cbc9ec85930296bc3  gcc/testsuite/g++.dg/ipa/pr64612.C
  b288de661af4c223fcbe1e30de80d3a4  gcc/testsuite/g++.dg/ipa/pr64858.C
! 78158fe8f75e60ce14c95135b8b05379  gcc/testsuite/g++.dg/ipa/pr64896.C
! 96f0369631932da9693932c6acee85ea  gcc/testsuite/g++.dg/ipa/pr65002.C
! a8b0d78f20df978a3285f3de0f0b08cb  gcc/testsuite/g++.dg/ipa/pr65008.C
  d40c37f8e98fb23a4e74e147be3d45f2  gcc/testsuite/g++.dg/ipa/pr65034.C
  9e6a8afbc4d402801684b3f7b93384a1  gcc/testsuite/g++.dg/ipa/pr65263.C
! 3e204d758a4da2cdfc546328a44ae3e7  gcc/testsuite/g++.dg/ipa/pr65465.C
  bcad9ecda548ef80dcee4b5fee7171c4  gcc/testsuite/g++.dg/ipa/pr65557.C
  2fa7d710f27e16a53b4c97888743b8d9  gcc/testsuite/g++.dg/ipa/pr65722.C
  5222c7e9a744093b6a16ae8a8bab224d  gcc/testsuite/g++.dg/ipa/pr65765.C
  67ede6f49f190691324e8305ac91332d  gcc/testsuite/g++.dg/ipa/pr65908.C
  668c39b2286466dcd06ce3221cfcc42a  gcc/testsuite/g++.dg/ipa/pr66616.C
! bedc3a3f4523bbf7cdd3d103e123c31d  gcc/testsuite/g++.dg/ipa/pr66896.C
  be061931021079d6be7c446f528ebc3e  gcc/testsuite/g++.dg/ipa/pr67056.C
! ec5260e7b67781daba88554aafd3131a  gcc/testsuite/g++.dg/ipa/pr68672-1.C
  40f14ca1c702fdecf7580c32aad18000  gcc/testsuite/g++.dg/ipa/pr68672-2.C
  a2e5380c8516c008132d478e44ece9b7  gcc/testsuite/g++.dg/ipa/pr68672-3.C
! c021f783947adb9a54cc7d7fd34e136d  gcc/testsuite/g++.dg/ipa/pr68851.C
  a00d85b4d37eb396d6f750fbe8c65031  gcc/testsuite/g++.dg/ipa/pr69239.C
  942652ed9180c36e360358d853c9c5f7  gcc/testsuite/g++.dg/ipa/pr69241-1.C
  a99b2fdf38ca55ba2af4c250d0c71086  gcc/testsuite/g++.dg/ipa/pr69241-2.C
--- 15432,15478 ----
  2c3b07fe4ee36fc9baf0391eed8b9d2d  gcc/testsuite/g++.dg/ipa/pr61160-1.C
  a4915f296a72bd543457d07dc50cfb77  gcc/testsuite/g++.dg/ipa/pr61160-2.C
  76e6fb68d22161d91fe6235763ebde98  gcc/testsuite/g++.dg/ipa/pr61160-3.C
! f82c44c6c0718766e22fbe5e277fa38f  gcc/testsuite/g++.dg/ipa/pr61540.C
  438118cbb7d30bffc810662fe5da5b9c  gcc/testsuite/g++.dg/ipa/pr61654.C
! 3189b6258531ee41de73c4cbe1288ac0  gcc/testsuite/g++.dg/ipa/pr61800.C
  a64421ae505e08d8f9b8bd14a2b8da21  gcc/testsuite/g++.dg/ipa/pr62015.C
  e24fb768f0a9cba7dfd73632a0e86880  gcc/testsuite/g++.dg/ipa/pr63306.C
! b4ed3dbf8f8e816894c2f48fe44a3e6f  gcc/testsuite/g++.dg/ipa/pr63470.C
  89df72699f04cc90fcc5ea05980fd7ac  gcc/testsuite/g++.dg/ipa/pr63551.C
  b52e84f9754809a1066f9dc82ae31fa3  gcc/testsuite/g++.dg/ipa/pr63574.C
  b600f6a6c38f9918243512d82a0540ce  gcc/testsuite/g++.dg/ipa/pr63580.C
! 44d4a5b47e3986a86c55c57dcc8f571e  gcc/testsuite/g++.dg/ipa/pr63587-1.C
! 160f97d6c1f1ce979b0bbca80b385849  gcc/testsuite/g++.dg/ipa/pr63587-2.C
  29e3b273cd77d035cc1824cae0705fdd  gcc/testsuite/g++.dg/ipa/pr63595.C
  9a83145d2e920a59bd2baabfc283d5be  gcc/testsuite/g++.dg/ipa/pr63621.C
  cbec9db210200f035b58e9a660e61435  gcc/testsuite/g++.dg/ipa/pr63814.C
! 01cf8d2e2b61ebdf8b871ee111705b12  gcc/testsuite/g++.dg/ipa/pr63838.C
! 811a4df55f9200f36ca33cfefed25d01  gcc/testsuite/g++.dg/ipa/pr63894.C
  668dac2bc50dd7bdff35ef4a5f36d39c  gcc/testsuite/g++.dg/ipa/pr64049-1.C
  ebfb11a98bc1e44e7f098bb324067839  gcc/testsuite/g++.dg/ipa/pr64049-2.C
  246af28e9eaf17a52673d1e66b8f551e  gcc/testsuite/g++.dg/ipa/pr64049.h
  bdd257ad9c46fa94a3cc357ef5ccff26  gcc/testsuite/g++.dg/ipa/pr64059.C
! eb54400dc0f1c8f4d57e8f779140b817  gcc/testsuite/g++.dg/ipa/pr64068.C
  33d914d8d6c20232b021ebd458fe69e8  gcc/testsuite/g++.dg/ipa/pr64146.C
  d8250f9d21f9968cbc9ec85930296bc3  gcc/testsuite/g++.dg/ipa/pr64612.C
  b288de661af4c223fcbe1e30de80d3a4  gcc/testsuite/g++.dg/ipa/pr64858.C
! d8619c6070b059910661f28c8c984594  gcc/testsuite/g++.dg/ipa/pr64896.C
! 4a8ebfc415c96b39903056c950e27507  gcc/testsuite/g++.dg/ipa/pr65002.C
! be153402312997c3f19a75b21d2c6e4e  gcc/testsuite/g++.dg/ipa/pr65008.C
  d40c37f8e98fb23a4e74e147be3d45f2  gcc/testsuite/g++.dg/ipa/pr65034.C
  9e6a8afbc4d402801684b3f7b93384a1  gcc/testsuite/g++.dg/ipa/pr65263.C
! bf7e82ce2f0b8e3abc78c42bb8d21157  gcc/testsuite/g++.dg/ipa/pr65465.C
  bcad9ecda548ef80dcee4b5fee7171c4  gcc/testsuite/g++.dg/ipa/pr65557.C
  2fa7d710f27e16a53b4c97888743b8d9  gcc/testsuite/g++.dg/ipa/pr65722.C
  5222c7e9a744093b6a16ae8a8bab224d  gcc/testsuite/g++.dg/ipa/pr65765.C
  67ede6f49f190691324e8305ac91332d  gcc/testsuite/g++.dg/ipa/pr65908.C
  668c39b2286466dcd06ce3221cfcc42a  gcc/testsuite/g++.dg/ipa/pr66616.C
! 27829f69d226016e18dfec655aa87d94  gcc/testsuite/g++.dg/ipa/pr66896.C
  be061931021079d6be7c446f528ebc3e  gcc/testsuite/g++.dg/ipa/pr67056.C
! 5cce1e5869251151fb365d58eb3e6c39  gcc/testsuite/g++.dg/ipa/pr68672-1.C
  40f14ca1c702fdecf7580c32aad18000  gcc/testsuite/g++.dg/ipa/pr68672-2.C
  a2e5380c8516c008132d478e44ece9b7  gcc/testsuite/g++.dg/ipa/pr68672-3.C
! d5c5a4ec72dddb0b7de7591138ef641d  gcc/testsuite/g++.dg/ipa/pr68851.C
  a00d85b4d37eb396d6f750fbe8c65031  gcc/testsuite/g++.dg/ipa/pr69239.C
  942652ed9180c36e360358d853c9c5f7  gcc/testsuite/g++.dg/ipa/pr69241-1.C
  a99b2fdf38ca55ba2af4c250d0c71086  gcc/testsuite/g++.dg/ipa/pr69241-2.C
*************** cad676606f867ff6d3c0c30870ad11a0  gcc/te
*** 14669,14690 ****
  3a8004c0e4c3f3ec713f3674c6464c08  gcc/testsuite/g++.dg/ipa/pr77333.C
  d53e2610da5ee135ff2297e91a0715be  gcc/testsuite/g++.dg/ipa/pr77905.C
  0d66afc3b6be386c8e29a4e0bbb7485d  gcc/testsuite/g++.dg/ipa/pr78188.C
! e424c53c944d537627fb575a38b9d337  gcc/testsuite/g++.dg/ipa/pr78211.C
  5d5f3f917e9a4e2fa641676d7142698c  gcc/testsuite/g++.dg/ipa/pr79776.C
! c5be5b54243f6264bf84d49d4a16947c  gcc/testsuite/g++.dg/ipa/pr79931.C
  89f95e75e402e5135147f26252be06e5  gcc/testsuite/g++.dg/ipa/pr80205.C
  e9a3cd760e81664690da407f52b34364  gcc/testsuite/g++.dg/ipa/pr82352.C
  05592a0935fec817a7688eb12baa50c2  gcc/testsuite/g++.dg/ipa/pr82801.C
  a6ea68da40fdbc3c5627d8fd52058c74  gcc/testsuite/g++.dg/ipa/pr83549.C
! 33a70012ed132fa7937f4953a4dc0f17  gcc/testsuite/g++.dg/ipa/pure-const-1.C
! c5bddc0233cbf24a8f75d96eb5685658  gcc/testsuite/g++.dg/ipa/pure-const-2.C
! b98de12e73f586f35f30ed6bf46a1463  gcc/testsuite/g++.dg/ipa/pure-const-3.C
! 65b30ac9d2b3a2244e49849aaad7dd78  gcc/testsuite/g++.dg/ipa/remref-1.C
! d26e3f0899c708e0f4b2ec8427502236  gcc/testsuite/g++.dg/ipa/remref-2.C
  b4804485e0df8c8497236eb6966a8244  gcc/testsuite/g++.dg/ipa/type-inheritance-1.C
! 2b091ec065310fe84169c6f447b3a338  gcc/testsuite/g++.dg/lookup/ambig1.C
! b9932960a2c5344244e109ba4c3ad748  gcc/testsuite/g++.dg/lookup/ambig2.C
! 8a8e297ff58b448ef6aadeaf54236aa9  gcc/testsuite/g++.dg/lookup/ambig3.C
  763e9272cd68992e2826922e21df9b67  gcc/testsuite/g++.dg/lookup/ambig4.C
  dbba00ef334068fd19de1479525fdb7e  gcc/testsuite/g++.dg/lookup/ambig5.C
  2f777984f797382f3dba7eab93665be9  gcc/testsuite/g++.dg/lookup/anon1.C
--- 15484,15514 ----
  3a8004c0e4c3f3ec713f3674c6464c08  gcc/testsuite/g++.dg/ipa/pr77333.C
  d53e2610da5ee135ff2297e91a0715be  gcc/testsuite/g++.dg/ipa/pr77905.C
  0d66afc3b6be386c8e29a4e0bbb7485d  gcc/testsuite/g++.dg/ipa/pr78188.C
! cd3bfd7464a01a39c5f262829629741b  gcc/testsuite/g++.dg/ipa/pr78211.C
  5d5f3f917e9a4e2fa641676d7142698c  gcc/testsuite/g++.dg/ipa/pr79776.C
! e3931f023ac1cf9205a7c1660d952c18  gcc/testsuite/g++.dg/ipa/pr79931.C
  89f95e75e402e5135147f26252be06e5  gcc/testsuite/g++.dg/ipa/pr80205.C
+ e7530841da7970a50524389e4fb5f9eb  gcc/testsuite/g++.dg/ipa/pr81248.C
+ c430165f569fa5b83e06f136d915a840  gcc/testsuite/g++.dg/ipa/pr81261.C
  e9a3cd760e81664690da407f52b34364  gcc/testsuite/g++.dg/ipa/pr82352.C
  05592a0935fec817a7688eb12baa50c2  gcc/testsuite/g++.dg/ipa/pr82801.C
  a6ea68da40fdbc3c5627d8fd52058c74  gcc/testsuite/g++.dg/ipa/pr83549.C
! 2930f992579665fa9d99d3b01d2fd984  gcc/testsuite/g++.dg/ipa/pr83667.C
! d31daabe5d2bb29c818c1bbbe31a5a4b  gcc/testsuite/g++.dg/ipa/pr84658.C
! 89c35bb41f6079175e75624ae113f0c2  gcc/testsuite/g++.dg/ipa/pr84825.C
! 7a74ca095291672fedb99619674166cc  gcc/testsuite/g++.dg/ipa/pr85421.C
! aae51c901115904a7775a689bfba23d3  gcc/testsuite/g++.dg/ipa/pr85447.C
! 0a73df0f8f21e4039f7d63b15167994d  gcc/testsuite/g++.dg/ipa/pr85549.C
! 36fa3f305af8daf292a5a974b6cd8017  gcc/testsuite/g++.dg/ipa/pure-const-1.C
! 82a7eaa06c8e9918346a40ce4e5c9881  gcc/testsuite/g++.dg/ipa/pure-const-2.C
! ee6095015820d87205d7dcbb848a66d1  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
! 5ec49970053dcb98d892e1352a7c254f  gcc/testsuite/g++.dg/lang-dump.C
! cfdf5397516549087b4462086afc619e  gcc/testsuite/g++.dg/lookup/ambig1.C
! 51ce95e21602673636a24074ccbd200a  gcc/testsuite/g++.dg/lookup/ambig2.C
! de856e7aa42c7ec995eed0e4ed7dac20  gcc/testsuite/g++.dg/lookup/ambig3.C
  763e9272cd68992e2826922e21df9b67  gcc/testsuite/g++.dg/lookup/ambig4.C
  dbba00ef334068fd19de1479525fdb7e  gcc/testsuite/g++.dg/lookup/ambig5.C
  2f777984f797382f3dba7eab93665be9  gcc/testsuite/g++.dg/lookup/anon1.C
*************** f6ed60ec36721bb21df4b4b0a445bcff  gcc/te
*** 14695,14747 ****
  97bc2c4f321b81d2e5129e269f014b8b  gcc/testsuite/g++.dg/lookup/anon6.C
  8efa7c4066efa37096c6aa5f256ab6dc  gcc/testsuite/g++.dg/lookup/anon7.C
  9b4af41a9b7ce52e2f2a1c0f80c2b16a  gcc/testsuite/g++.dg/lookup/builtin1.C
! d4887e959260b7f96317369d69134b6c  gcc/testsuite/g++.dg/lookup/builtin2.C
  f7071ebb383c4bfa6e3d7a62fe5aeeeb  gcc/testsuite/g++.dg/lookup/builtin3.C
  6296f0916fc8d5d3cd5a9b99cd2637aa  gcc/testsuite/g++.dg/lookup/builtin4.C
  5a22fe14e5179e9986e83f3e28285b3f  gcc/testsuite/g++.dg/lookup/builtin5.C
  4dcccce4cd513b5df988b4563dbe004b  gcc/testsuite/g++.dg/lookup/builtin6.C
  ed6f2e8dc3a4572bd4b133bcd9732ede  gcc/testsuite/g++.dg/lookup/builtin7.C
! ccc3c25dd361d4449e0d183046beace3  gcc/testsuite/g++.dg/lookup/class-member-1.C
  150d0e731cb43b0a2d8a3416484aa2a0  gcc/testsuite/g++.dg/lookup/class-member-2.C
! 334a58bf975baf837b83e8405358424f  gcc/testsuite/g++.dg/lookup/conv-1.C
  b59dc1be1de7788c3e2134a73db76fc4  gcc/testsuite/g++.dg/lookup/conv-2.C
  5ea2bf1f15c014fc72f6b7b8c42b05e8  gcc/testsuite/g++.dg/lookup/conv-3.C
  a96892a658bcb84c3b0bb4a492c464f0  gcc/testsuite/g++.dg/lookup/conv-4.C
  0e3bdcba06a0b268451ab07419fa8b6a  gcc/testsuite/g++.dg/lookup/conv-5.C
  eca250664b688ff2d60db784a03646f6  gcc/testsuite/g++.dg/lookup/crash1.C
  6fc9e98dd31a974c79f311f71bfe2a82  gcc/testsuite/g++.dg/lookup/crash2.C
! 5a3dc332cf960875d43cf5a6355dfa80  gcc/testsuite/g++.dg/lookup/crash3.C
  7e5cb27f2cb8fd20d4617c4cfb845085  gcc/testsuite/g++.dg/lookup/crash4.C
  b829196dc637277366c74ac9ece4c7c6  gcc/testsuite/g++.dg/lookup/crash5.C
  6a38ff35a5b1440f19dcf25007f0643d  gcc/testsuite/g++.dg/lookup/crash6.C
  ab5c5a242a635b12bd7f567d048700f4  gcc/testsuite/g++.dg/lookup/crash7.C
  8702e9a4573ea9d19da851427038afe8  gcc/testsuite/g++.dg/lookup/crash8.C
! 7f3fadfecc160e192db942c4e24b7c75  gcc/testsuite/g++.dg/lookup/decl1.C
  d64551040d13bf36f94a380b6b298ea5  gcc/testsuite/g++.dg/lookup/decl2.C
  d9678387006e999bc9d29de93e894ef7  gcc/testsuite/g++.dg/lookup/delete1.C
  86271224c38de31ea55c228d8c440211  gcc/testsuite/g++.dg/lookup/disamb1.C
  87ac0cba730fa2909e8184bae7c4af1e  gcc/testsuite/g++.dg/lookup/duperr1.C
  3920de89ada5d72255d7202c8a1f6da8  gcc/testsuite/g++.dg/lookup/enum1.C
  127e57c2f965eb1d751c10fec5b23db3  gcc/testsuite/g++.dg/lookup/error1.C
! c135819049f7865d02eb24dc07cdf8f2  gcc/testsuite/g++.dg/lookup/exception1.C
! d7fd3568f7492df0e27753b13c1be48f  gcc/testsuite/g++.dg/lookup/extern-c-redecl.C
  42649607e256c4617aa495101b2c5d8c  gcc/testsuite/g++.dg/lookup/extern-c-redecl2.C
  5625a0300bd4231d19c3998fc06661ba  gcc/testsuite/g++.dg/lookup/extern-c-redecl3.C
  e11a3ab6dd51269a647930526c6c6eeb  gcc/testsuite/g++.dg/lookup/extern-c-redecl4.C
  a1cbc0febcffce8e0f164e0feb720ea6  gcc/testsuite/g++.dg/lookup/extern-c-redecl5.C
  c961035d55063ab35ff011e8098d8ea9  gcc/testsuite/g++.dg/lookup/forscope1.C
  a456249cabb4263894413ab00792e156  gcc/testsuite/g++.dg/lookup/forscope2.C
  f095afdbf961d01e5ac006fff4dbda02  gcc/testsuite/g++.dg/lookup/friend1.C
  6379d610cdb9d3f95e70e88bdbaf87f7  gcc/testsuite/g++.dg/lookup/friend10.C
  20170e184fe22689b9a43c017d45efad  gcc/testsuite/g++.dg/lookup/friend11.C
! 08bf5f8a45a15e75e9e882b70fc426f2  gcc/testsuite/g++.dg/lookup/friend12.C
  d5d8f8802b06ec8909b759d46c8931c7  gcc/testsuite/g++.dg/lookup/friend13.C
  12ea946975f9ac153ba628a157f55a5a  gcc/testsuite/g++.dg/lookup/friend14.C
  28e2ce08101f172201fae40376cee3c3  gcc/testsuite/g++.dg/lookup/friend15.C
  f66af341d66244103803f1d5ec1340fc  gcc/testsuite/g++.dg/lookup/friend16.C
  86725bf02317dbfb7513cbe9b50f5375  gcc/testsuite/g++.dg/lookup/friend17.C
  bc68250e10f270f845cc28e1f5bc2772  gcc/testsuite/g++.dg/lookup/friend18.C
  704751cfdbae3f06f685612f201610a7  gcc/testsuite/g++.dg/lookup/friend2.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
--- 15519,15577 ----
  97bc2c4f321b81d2e5129e269f014b8b  gcc/testsuite/g++.dg/lookup/anon6.C
  8efa7c4066efa37096c6aa5f256ab6dc  gcc/testsuite/g++.dg/lookup/anon7.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
  6296f0916fc8d5d3cd5a9b99cd2637aa  gcc/testsuite/g++.dg/lookup/builtin4.C
  5a22fe14e5179e9986e83f3e28285b3f  gcc/testsuite/g++.dg/lookup/builtin5.C
  4dcccce4cd513b5df988b4563dbe004b  gcc/testsuite/g++.dg/lookup/builtin6.C
  ed6f2e8dc3a4572bd4b133bcd9732ede  gcc/testsuite/g++.dg/lookup/builtin7.C
! bc073e143a6282f72567c59c57156341  gcc/testsuite/g++.dg/lookup/class-member-1.C
  150d0e731cb43b0a2d8a3416484aa2a0  gcc/testsuite/g++.dg/lookup/class-member-2.C
! f63c2bd427876d5358c5965f7e8ea594  gcc/testsuite/g++.dg/lookup/conv-1.C
  b59dc1be1de7788c3e2134a73db76fc4  gcc/testsuite/g++.dg/lookup/conv-2.C
  5ea2bf1f15c014fc72f6b7b8c42b05e8  gcc/testsuite/g++.dg/lookup/conv-3.C
  a96892a658bcb84c3b0bb4a492c464f0  gcc/testsuite/g++.dg/lookup/conv-4.C
  0e3bdcba06a0b268451ab07419fa8b6a  gcc/testsuite/g++.dg/lookup/conv-5.C
  eca250664b688ff2d60db784a03646f6  gcc/testsuite/g++.dg/lookup/crash1.C
  6fc9e98dd31a974c79f311f71bfe2a82  gcc/testsuite/g++.dg/lookup/crash2.C
! 1feb5ea4076e7fb28c43b9a4c08b1c92  gcc/testsuite/g++.dg/lookup/crash3.C
  7e5cb27f2cb8fd20d4617c4cfb845085  gcc/testsuite/g++.dg/lookup/crash4.C
  b829196dc637277366c74ac9ece4c7c6  gcc/testsuite/g++.dg/lookup/crash5.C
  6a38ff35a5b1440f19dcf25007f0643d  gcc/testsuite/g++.dg/lookup/crash6.C
  ab5c5a242a635b12bd7f567d048700f4  gcc/testsuite/g++.dg/lookup/crash7.C
  8702e9a4573ea9d19da851427038afe8  gcc/testsuite/g++.dg/lookup/crash8.C
! 66170b2fcd25cd3bc4c54c5fda33f2bc  gcc/testsuite/g++.dg/lookup/decl1.C
  d64551040d13bf36f94a380b6b298ea5  gcc/testsuite/g++.dg/lookup/decl2.C
  d9678387006e999bc9d29de93e894ef7  gcc/testsuite/g++.dg/lookup/delete1.C
  86271224c38de31ea55c228d8c440211  gcc/testsuite/g++.dg/lookup/disamb1.C
  87ac0cba730fa2909e8184bae7c4af1e  gcc/testsuite/g++.dg/lookup/duperr1.C
+ ccab72a94f83e4faee9a4214315c3e87  gcc/testsuite/g++.dg/lookup/empty.h
  3920de89ada5d72255d7202c8a1f6da8  gcc/testsuite/g++.dg/lookup/enum1.C
  127e57c2f965eb1d751c10fec5b23db3  gcc/testsuite/g++.dg/lookup/error1.C
! fa4085de6910c10ab0b36d78605a13ba  gcc/testsuite/g++.dg/lookup/exception1.C
! 22360c075509f874359e42cda0d4b8ac  gcc/testsuite/g++.dg/lookup/extern-c-hidden.C
! d07adb36c884af56e6bde8155ea1317d  gcc/testsuite/g++.dg/lookup/extern-c-redecl.C
  42649607e256c4617aa495101b2c5d8c  gcc/testsuite/g++.dg/lookup/extern-c-redecl2.C
  5625a0300bd4231d19c3998fc06661ba  gcc/testsuite/g++.dg/lookup/extern-c-redecl3.C
  e11a3ab6dd51269a647930526c6c6eeb  gcc/testsuite/g++.dg/lookup/extern-c-redecl4.C
  a1cbc0febcffce8e0f164e0feb720ea6  gcc/testsuite/g++.dg/lookup/extern-c-redecl5.C
+ 5eebf1d8ba37cca9c59ebb517324ab01  gcc/testsuite/g++.dg/lookup/extern-c-redecl6.C
+ 20c3233791717613823bca5ee2594703  gcc/testsuite/g++.dg/lookup/extern-redecl1.C
  c961035d55063ab35ff011e8098d8ea9  gcc/testsuite/g++.dg/lookup/forscope1.C
  a456249cabb4263894413ab00792e156  gcc/testsuite/g++.dg/lookup/forscope2.C
  f095afdbf961d01e5ac006fff4dbda02  gcc/testsuite/g++.dg/lookup/friend1.C
  6379d610cdb9d3f95e70e88bdbaf87f7  gcc/testsuite/g++.dg/lookup/friend10.C
  20170e184fe22689b9a43c017d45efad  gcc/testsuite/g++.dg/lookup/friend11.C
! 511315b47ff68a3d8c74a1ea470ef568  gcc/testsuite/g++.dg/lookup/friend12.C
  d5d8f8802b06ec8909b759d46c8931c7  gcc/testsuite/g++.dg/lookup/friend13.C
  12ea946975f9ac153ba628a157f55a5a  gcc/testsuite/g++.dg/lookup/friend14.C
  28e2ce08101f172201fae40376cee3c3  gcc/testsuite/g++.dg/lookup/friend15.C
  f66af341d66244103803f1d5ec1340fc  gcc/testsuite/g++.dg/lookup/friend16.C
  86725bf02317dbfb7513cbe9b50f5375  gcc/testsuite/g++.dg/lookup/friend17.C
  bc68250e10f270f845cc28e1f5bc2772  gcc/testsuite/g++.dg/lookup/friend18.C
+ c50416bd024b7f394ccf13b2af42d6e9  gcc/testsuite/g++.dg/lookup/friend19.C
  704751cfdbae3f06f685612f201610a7  gcc/testsuite/g++.dg/lookup/friend2.C
+ 6c4b3ee38e0ef8c73906d3d6ef93c86e  gcc/testsuite/g++.dg/lookup/friend20.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
*************** c9817628c80c566a7294b70afca6d827  gcc/te
*** 14778,14788 ****
  7329bb8e573ed03d12f2ea0f32cdb168  gcc/testsuite/g++.dg/lookup/hidden-temp-class8.C
  553918de93ea2e1a018822b6746d8a0a  gcc/testsuite/g++.dg/lookup/hidden-temp-class9.C
  5d85325d96326f59e7447d088f81b378  gcc/testsuite/g++.dg/lookup/hidden-var1.C
! 00308909348ebb59340fed9fc2f5d633  gcc/testsuite/g++.dg/lookup/koenig1.C
  668e482efb2099032387b8bb3bc1b61a  gcc/testsuite/g++.dg/lookup/koenig10.C
  b9e805fb75a33ef1129f6679048f585f  gcc/testsuite/g++.dg/lookup/koenig11.C
  b4c9a3125082aac3aa6b866492a89640  gcc/testsuite/g++.dg/lookup/koenig12.C
  13b993a64fc2cc91de616884657a007a  gcc/testsuite/g++.dg/lookup/koenig13.C
  c44c726de3c9ebad9efc6f0268a223d3  gcc/testsuite/g++.dg/lookup/koenig2.C
  0efd4ef624e1a631dad2972522c30301  gcc/testsuite/g++.dg/lookup/koenig3.C
  634eca78a66aff86cb1d96384411430c  gcc/testsuite/g++.dg/lookup/koenig4.C
--- 15608,15619 ----
  7329bb8e573ed03d12f2ea0f32cdb168  gcc/testsuite/g++.dg/lookup/hidden-temp-class8.C
  553918de93ea2e1a018822b6746d8a0a  gcc/testsuite/g++.dg/lookup/hidden-temp-class9.C
  5d85325d96326f59e7447d088f81b378  gcc/testsuite/g++.dg/lookup/hidden-var1.C
! b08c603c980e150f43212ccfda9390c1  gcc/testsuite/g++.dg/lookup/koenig1.C
  668e482efb2099032387b8bb3bc1b61a  gcc/testsuite/g++.dg/lookup/koenig10.C
  b9e805fb75a33ef1129f6679048f585f  gcc/testsuite/g++.dg/lookup/koenig11.C
  b4c9a3125082aac3aa6b866492a89640  gcc/testsuite/g++.dg/lookup/koenig12.C
  13b993a64fc2cc91de616884657a007a  gcc/testsuite/g++.dg/lookup/koenig13.C
+ 6f6f54957497ff01c410e425ceb5eb0a  gcc/testsuite/g++.dg/lookup/koenig14.C
  c44c726de3c9ebad9efc6f0268a223d3  gcc/testsuite/g++.dg/lookup/koenig2.C
  0efd4ef624e1a631dad2972522c30301  gcc/testsuite/g++.dg/lookup/koenig3.C
  634eca78a66aff86cb1d96384411430c  gcc/testsuite/g++.dg/lookup/koenig4.C
*************** fd737666c6ed0aa3932026bace0161d7  gcc/te
*** 14791,14796 ****
--- 15622,15628 ----
  aad2c467c14168ed79e3c1e65b775cb4  gcc/testsuite/g++.dg/lookup/koenig7.C
  0ee15856109c227606e584330302e620  gcc/testsuite/g++.dg/lookup/koenig8.C
  69e76e666a1dd7169928c50d3683e7f4  gcc/testsuite/g++.dg/lookup/koenig9.C
+ 12a0ebc43d6dd6ccb9d7bbf98d09755f  gcc/testsuite/g++.dg/lookup/lambda1.C
  2e2a3c97b00100544902ae284deb2b80  gcc/testsuite/g++.dg/lookup/linkage1.C
  ca86ea8309b14f35f10e1d9671f22271  gcc/testsuite/g++.dg/lookup/linkage2.C
  6438f8158c9b2b3fffe8884a62ce29af  gcc/testsuite/g++.dg/lookup/main1.C
*************** c3c7c64dd008283d64151a83f3fb88f5  gcc/te
*** 14799,14804 ****
--- 15631,15644 ----
  0014cd2335a3fc2ab0314f2b01e6434c  gcc/testsuite/g++.dg/lookup/member3.C
  a02c9e78c023a6582cecd8bcf992d2fd  gcc/testsuite/g++.dg/lookup/member4.C
  acece40c5f32aaa3b38f954b91368d3c  gcc/testsuite/g++.dg/lookup/member5.C
+ 63850d2da277a993459adc90859da456  gcc/testsuite/g++.dg/lookup/missing-std-include-2.C
+ 29a08861fcce5ce8183c96169e17d4c1  gcc/testsuite/g++.dg/lookup/missing-std-include-3.C
+ 2089959ff25a41b6553e2e30bcdab132  gcc/testsuite/g++.dg/lookup/missing-std-include-4.C
+ ebd2e188a4e001a51cca4db537fff2bf  gcc/testsuite/g++.dg/lookup/missing-std-include-5.C
+ a33692eb905167cf0b3191f444e38fd0  gcc/testsuite/g++.dg/lookup/missing-std-include-6.C
+ 3d220622c3cf94c2c856e98e299989ef  gcc/testsuite/g++.dg/lookup/missing-std-include-7.C
+ 4384463d109035c394e991a08cf3a047  gcc/testsuite/g++.dg/lookup/missing-std-include-8.C
+ 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
  0bd36280785b0298c2db78c30f1f1aa0  gcc/testsuite/g++.dg/lookup/name-clash11.C
*************** f73a831dbfcd6430b723ed4198037c98  gcc/te
*** 14819,14835 ****
  326caa0ef916da51fec348c662a91f18  gcc/testsuite/g++.dg/lookup/ns3.C
  b16d2b44bfa0aeed86e99a04f412703d  gcc/testsuite/g++.dg/lookup/ns4.C
  2ddc73877ee8726480b98b6b881569b6  gcc/testsuite/g++.dg/lookup/pr21802.C
  6133d93b9e3d1477d5f921d386c406a0  gcc/testsuite/g++.dg/lookup/pr6936.C
  3717c2026453719d4d718f3e8061ba28  gcc/testsuite/g++.dg/lookup/pr70205.C
  c3e7ce4b437773eaeeb6bf033add6ae5  gcc/testsuite/g++.dg/lookup/pr77549.C
  64b272011bdda1340d422fdc53bc678a  gcc/testsuite/g++.dg/lookup/pr79377.C
  9fc063d780e4510399927cfe832e8770  gcc/testsuite/g++.dg/lookup/pretty1.C
  f30dda31dee159f3aebbbc269a5fd8e4  gcc/testsuite/g++.dg/lookup/ptrmem1.C
  bcba89d3ec64e8fc005f26cebc29ef75  gcc/testsuite/g++.dg/lookup/redecl1.C
  a0c29cb4b5f7577e6f70badabcf54df5  gcc/testsuite/g++.dg/lookup/scope-operator1.C
! ac54cbb864f44961ac42e88050c9ad49  gcc/testsuite/g++.dg/lookup/scoped1.C
  bf3eaff26a33ccd4611b5f6e55765a4d  gcc/testsuite/g++.dg/lookup/scoped10.C
! b7a658adf99cb82ba017f02f1f2411c6  gcc/testsuite/g++.dg/lookup/scoped2.C
  fd5b1d6b45ff24d721908d389585b869  gcc/testsuite/g++.dg/lookup/scoped3.C
  aa72bf12de95e37fe79a3293544473d4  gcc/testsuite/g++.dg/lookup/scoped4.C
  fcbd72a09a4049e1a9619d23e1f3c841  gcc/testsuite/g++.dg/lookup/scoped5.C
--- 15659,15697 ----
  326caa0ef916da51fec348c662a91f18  gcc/testsuite/g++.dg/lookup/ns3.C
  b16d2b44bfa0aeed86e99a04f412703d  gcc/testsuite/g++.dg/lookup/ns4.C
  2ddc73877ee8726480b98b6b881569b6  gcc/testsuite/g++.dg/lookup/pr21802.C
+ e8c219b570d08e589efca8f832a6b0b3  gcc/testsuite/g++.dg/lookup/pr67074.C
  6133d93b9e3d1477d5f921d386c406a0  gcc/testsuite/g++.dg/lookup/pr6936.C
  3717c2026453719d4d718f3e8061ba28  gcc/testsuite/g++.dg/lookup/pr70205.C
  c3e7ce4b437773eaeeb6bf033add6ae5  gcc/testsuite/g++.dg/lookup/pr77549.C
  64b272011bdda1340d422fdc53bc678a  gcc/testsuite/g++.dg/lookup/pr79377.C
+ 969e2a47c7dcdf43ac3f6ba52c1a9828  gcc/testsuite/g++.dg/lookup/pr79766.C
+ ed8fbd78bcc2e25f56f4b46841242626  gcc/testsuite/g++.dg/lookup/pr80891-1.C
+ f1733e79f7cd811d7c156dc2ca948be1  gcc/testsuite/g++.dg/lookup/pr80891-2.C
+ 4225629262d07739e4d67b593b2c11fe  gcc/testsuite/g++.dg/lookup/pr80891-3.C
+ fea53cc76bc6dd15d6953532a0def9eb  gcc/testsuite/g++.dg/lookup/pr80891-4.C
+ 69140e1fd7a11e5908795e34f2ce9cee  gcc/testsuite/g++.dg/lookup/pr80891-5.C
+ 117c19a32b2ab070c7d58d889d5423e0  gcc/testsuite/g++.dg/lookup/pr80913.C
+ 26ef1fd7163e6344bfb894634f561ab2  gcc/testsuite/g++.dg/lookup/pr80979.C
+ d342db9fb18156df9393faba58928d3b  gcc/testsuite/g++.dg/lookup/pr81124.C
+ 935e748bfed51cd75366ac64652e2539  gcc/testsuite/g++.dg/lookup/pr81229.C
+ 2502396ef12f852b6796d6de0343806a  gcc/testsuite/g++.dg/lookup/pr83287-2.C
+ be67c830562d61165c94b60a6a2be1b3  gcc/testsuite/g++.dg/lookup/pr83287.C
+ e682374428986e3036531ffc4dfde78b  gcc/testsuite/g++.dg/lookup/pr84375.C
+ aeb3c1a43024f43451bcfaebc15a1ae0  gcc/testsuite/g++.dg/lookup/pr84426.C
+ 04f5694ddceafb3e9c886badd6639b02  gcc/testsuite/g++.dg/lookup/pr84602.C
+ c6368361a57f0364aefeee48a1733b7f  gcc/testsuite/g++.dg/lookup/pr84702.C
+ 4d4656996d848753635c6f150fe8821c  gcc/testsuite/g++.dg/lookup/pr84804.C
+ 70c6508383e6959de6c9f06e16b1fc74  gcc/testsuite/g++.dg/lookup/pr84812.C
+ 5610d7c94e4b37700da0165852dc16a0  gcc/testsuite/g++.dg/lookup/pr84836.C
+ 4e61a1a0aea0f7453c4aae03502b9084  gcc/testsuite/g++.dg/lookup/pr84962.C
+ b0d2b85719be4698bf6dbe4c553cb0fc  gcc/testsuite/g++.dg/lookup/pr84970.C
  9fc063d780e4510399927cfe832e8770  gcc/testsuite/g++.dg/lookup/pretty1.C
  f30dda31dee159f3aebbbc269a5fd8e4  gcc/testsuite/g++.dg/lookup/ptrmem1.C
  bcba89d3ec64e8fc005f26cebc29ef75  gcc/testsuite/g++.dg/lookup/redecl1.C
  a0c29cb4b5f7577e6f70badabcf54df5  gcc/testsuite/g++.dg/lookup/scope-operator1.C
! fa7c50e4d56c600949d4298fb44c320f  gcc/testsuite/g++.dg/lookup/scoped1.C
  bf3eaff26a33ccd4611b5f6e55765a4d  gcc/testsuite/g++.dg/lookup/scoped10.C
! ded308bf80d3b50738f4d56dc16fada2  gcc/testsuite/g++.dg/lookup/scoped2.C
  fd5b1d6b45ff24d721908d389585b869  gcc/testsuite/g++.dg/lookup/scoped3.C
  aa72bf12de95e37fe79a3293544473d4  gcc/testsuite/g++.dg/lookup/scoped4.C
  fcbd72a09a4049e1a9619d23e1f3c841  gcc/testsuite/g++.dg/lookup/scoped5.C
*************** d0e63df38adea95bde4f29a4a8adbd7a  gcc/te
*** 14837,14845 ****
  36c8df686ba39d71b24a97d15b78bcba  gcc/testsuite/g++.dg/lookup/scoped7.C
  26af3964407b493bd173a74dadeb7ffb  gcc/testsuite/g++.dg/lookup/scoped8.C
  6369d16eb28b1bd2774c54434aaec082  gcc/testsuite/g++.dg/lookup/scoped9.C
  14a5eeccea742bec62851ac5c1d69945  gcc/testsuite/g++.dg/lookup/struct-hack1.C
  5c1c26a3d7600538118a4941d09bc349  gcc/testsuite/g++.dg/lookup/struct1.C
! f7cc5bba605998b587366c1cb499ac4f  gcc/testsuite/g++.dg/lookup/struct2.C
  fdaf3f657fb4b6644db48b0fe0edf374  gcc/testsuite/g++.dg/lookup/suggestions1.C
  a793e64bb6b34881797f23d0f6a812f7  gcc/testsuite/g++.dg/lookup/template1.C
  7019845dfb6dbd2d5547a6f72b822068  gcc/testsuite/g++.dg/lookup/template2.C
--- 15699,15708 ----
  36c8df686ba39d71b24a97d15b78bcba  gcc/testsuite/g++.dg/lookup/scoped7.C
  26af3964407b493bd173a74dadeb7ffb  gcc/testsuite/g++.dg/lookup/scoped8.C
  6369d16eb28b1bd2774c54434aaec082  gcc/testsuite/g++.dg/lookup/scoped9.C
+ f538be817e65ad59f02c512caf0889fb  gcc/testsuite/g++.dg/lookup/strong-using.C
  14a5eeccea742bec62851ac5c1d69945  gcc/testsuite/g++.dg/lookup/struct-hack1.C
  5c1c26a3d7600538118a4941d09bc349  gcc/testsuite/g++.dg/lookup/struct1.C
! 1ddaea536458f2a22766e38863baea74  gcc/testsuite/g++.dg/lookup/struct2.C
  fdaf3f657fb4b6644db48b0fe0edf374  gcc/testsuite/g++.dg/lookup/suggestions1.C
  a793e64bb6b34881797f23d0f6a812f7  gcc/testsuite/g++.dg/lookup/template1.C
  7019845dfb6dbd2d5547a6f72b822068  gcc/testsuite/g++.dg/lookup/template2.C
*************** a793e64bb6b34881797f23d0f6a812f7  gcc/te
*** 14848,14869 ****
  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
! 50dc3bb148b156904cabd21779f6e4fe  gcc/testsuite/g++.dg/lookup/two-stage4.C
  55b606de81dcee47c1021a188831f526  gcc/testsuite/g++.dg/lookup/two-stage5.C
  8bcdfec3b2bc3c59b46d319647268367  gcc/testsuite/g++.dg/lookup/typedef1.C
! eef4a328b6c1b5f5a770420fa68f56eb  gcc/testsuite/g++.dg/lookup/used-before-declaration.C
  37ba62633a35db58ce53d2e965c7405c  gcc/testsuite/g++.dg/lookup/using-10.C
! e787b658f008402e539125d8744f57b8  gcc/testsuite/g++.dg/lookup/using.C
  3b1be5c1d7f024899683d6b51a3db2aa  gcc/testsuite/g++.dg/lookup/using11.C
  4aa371c96c095ece93ba36b9aa1ab516  gcc/testsuite/g++.dg/lookup/using12.C
! 48b254e1c2661f3029eb99d0e76ad5a5  gcc/testsuite/g++.dg/lookup/using13.C
  566f22665e5dbaacccc9bab0af697314  gcc/testsuite/g++.dg/lookup/using14.C
  dc21e16250c98c89c5aa0d520799c564  gcc/testsuite/g++.dg/lookup/using15.C
  836c6a7c8df87ee0b5d5628bce3fe8a2  gcc/testsuite/g++.dg/lookup/using16.C
! 9781511ea4243986b37a588c52e63a38  gcc/testsuite/g++.dg/lookup/using17.C
  0e7bcfa3b04037051371f537fde080d3  gcc/testsuite/g++.dg/lookup/using18.C
  2f7856e44d88c2a8a051c1b70aff3f85  gcc/testsuite/g++.dg/lookup/using19.C
! d90e987aac9e605de005cd0954d5b976  gcc/testsuite/g++.dg/lookup/using2.C
  1546c98e77fe28c2e18d5070a8ead0fe  gcc/testsuite/g++.dg/lookup/using20.C
  de5435c6fdaa42a8c943f90be9019ea7  gcc/testsuite/g++.dg/lookup/using21.C
  ddb95e89fa0dec0bbd065160a0fd5f62  gcc/testsuite/g++.dg/lookup/using22.C
--- 15711,15732 ----
  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
! f8613a1cd0ab743997c2513235f7f398  gcc/testsuite/g++.dg/lookup/two-stage4.C
  55b606de81dcee47c1021a188831f526  gcc/testsuite/g++.dg/lookup/two-stage5.C
  8bcdfec3b2bc3c59b46d319647268367  gcc/testsuite/g++.dg/lookup/typedef1.C
! 78b03437c70230e8ccd0238677d2b192  gcc/testsuite/g++.dg/lookup/used-before-declaration.C
  37ba62633a35db58ce53d2e965c7405c  gcc/testsuite/g++.dg/lookup/using-10.C
! 5ce5cb2e61a3bd571b8a258301e82f47  gcc/testsuite/g++.dg/lookup/using.C
  3b1be5c1d7f024899683d6b51a3db2aa  gcc/testsuite/g++.dg/lookup/using11.C
  4aa371c96c095ece93ba36b9aa1ab516  gcc/testsuite/g++.dg/lookup/using12.C
! b661e2becb05be3da0f4060a56b98297  gcc/testsuite/g++.dg/lookup/using13.C
  566f22665e5dbaacccc9bab0af697314  gcc/testsuite/g++.dg/lookup/using14.C
  dc21e16250c98c89c5aa0d520799c564  gcc/testsuite/g++.dg/lookup/using15.C
  836c6a7c8df87ee0b5d5628bce3fe8a2  gcc/testsuite/g++.dg/lookup/using16.C
! 32cf4fc89f78aea3f873e97983a9112a  gcc/testsuite/g++.dg/lookup/using17.C
  0e7bcfa3b04037051371f537fde080d3  gcc/testsuite/g++.dg/lookup/using18.C
  2f7856e44d88c2a8a051c1b70aff3f85  gcc/testsuite/g++.dg/lookup/using19.C
! 875d05eca7e2955ac6c81c54fb2fcf2b  gcc/testsuite/g++.dg/lookup/using2.C
  1546c98e77fe28c2e18d5070a8ead0fe  gcc/testsuite/g++.dg/lookup/using20.C
  de5435c6fdaa42a8c943f90be9019ea7  gcc/testsuite/g++.dg/lookup/using21.C
  ddb95e89fa0dec0bbd065160a0fd5f62  gcc/testsuite/g++.dg/lookup/using22.C
*************** c215c3d00f87b59d1c59614eaf8713ea  gcc/te
*** 14902,14915 ****
  0ea216615e5bbe93d1ee62a0d90ec5b5  gcc/testsuite/g++.dg/lookup/using53.C
  9650e8814f13fa13eae326438a1fdf61  gcc/testsuite/g++.dg/lookup/using54.C
  2c031b9dc98ae61c00b9677b6ad27297  gcc/testsuite/g++.dg/lookup/using55.C
  8db693e8a73657ac0a6ba980e910013c  gcc/testsuite/g++.dg/lookup/using6.C
  c1526b249e46bd5d001c6e77dbc65e3f  gcc/testsuite/g++.dg/lookup/using7.C
  05105c11218492c8a6c6943b32a316ec  gcc/testsuite/g++.dg/lookup/using8.C
  94092d782dab067a9255cde42b45a3bf  gcc/testsuite/g++.dg/lookup/using9.C
! 7e2d91b237717acf2d48024593e875e3  gcc/testsuite/g++.dg/lto/20080709_0.C
  c3ea1857c08073dd9cb62c97df1dfc09  gcc/testsuite/g++.dg/lto/20080829_0.C
  87ec15bcb9a0ae242a5c3d889670e857  gcc/testsuite/g++.dg/lto/20080904_0.C
! 407c4f0b437baf8d953baf8331d48311  gcc/testsuite/g++.dg/lto/20080907_0.C
  c1e83fe1d8e70a572a1c857cd072e22f  gcc/testsuite/g++.dg/lto/20080908-1_0.C
  9765338d51d81df52f5c43d2e5e40643  gcc/testsuite/g++.dg/lto/20080908-2_0.C
  5099dc41f267dd624df5d8fc4dfacc06  gcc/testsuite/g++.dg/lto/20080908-3_0.C
--- 15765,15782 ----
  0ea216615e5bbe93d1ee62a0d90ec5b5  gcc/testsuite/g++.dg/lookup/using53.C
  9650e8814f13fa13eae326438a1fdf61  gcc/testsuite/g++.dg/lookup/using54.C
  2c031b9dc98ae61c00b9677b6ad27297  gcc/testsuite/g++.dg/lookup/using55.C
+ 9ab8d14e576848ca2e357e33a402d9d8  gcc/testsuite/g++.dg/lookup/using56.C
+ 3c8ccd91a0814d9df33574c35fc4046a  gcc/testsuite/g++.dg/lookup/using57.C
+ 9c4ca42a89732005156a8d395323eb68  gcc/testsuite/g++.dg/lookup/using58.C
+ 55c859b1787a2ae794328cb76d82d129  gcc/testsuite/g++.dg/lookup/using59.C
  8db693e8a73657ac0a6ba980e910013c  gcc/testsuite/g++.dg/lookup/using6.C
  c1526b249e46bd5d001c6e77dbc65e3f  gcc/testsuite/g++.dg/lookup/using7.C
  05105c11218492c8a6c6943b32a316ec  gcc/testsuite/g++.dg/lookup/using8.C
  94092d782dab067a9255cde42b45a3bf  gcc/testsuite/g++.dg/lookup/using9.C
! 7f8c2990649e6e5c111c1d4314e97286  gcc/testsuite/g++.dg/lto/20080709_0.C
  c3ea1857c08073dd9cb62c97df1dfc09  gcc/testsuite/g++.dg/lto/20080829_0.C
  87ec15bcb9a0ae242a5c3d889670e857  gcc/testsuite/g++.dg/lto/20080904_0.C
! f5d65d77dbb11fe409fcc8a6172582d1  gcc/testsuite/g++.dg/lto/20080907_0.C
  c1e83fe1d8e70a572a1c857cd072e22f  gcc/testsuite/g++.dg/lto/20080908-1_0.C
  9765338d51d81df52f5c43d2e5e40643  gcc/testsuite/g++.dg/lto/20080908-2_0.C
  5099dc41f267dd624df5d8fc4dfacc06  gcc/testsuite/g++.dg/lto/20080908-3_0.C
*************** c1e83fe1d8e70a572a1c857cd072e22f  gcc/te
*** 14917,14947 ****
  b4a616fe18097af8a6fa7226d5f333f0  gcc/testsuite/g++.dg/lto/20080910-1_0.C
  302b7bac3b3565167ec4869820350c3b  gcc/testsuite/g++.dg/lto/20080912-1_0.C
  cc8767eb274d922ccc29b3a8613651ba  gcc/testsuite/g++.dg/lto/20080912_0.C
! 582ffcc12dfa99424e77bd0fe41a7967  gcc/testsuite/g++.dg/lto/20080915_0.C
! d90d326db72bc2e718a056490356f263  gcc/testsuite/g++.dg/lto/20080916_0.C
  d309762f007fee93d027ee4ec7f91a76  gcc/testsuite/g++.dg/lto/20080917_0.C
  981216fdf488c75ea6a2463c529cd3fe  gcc/testsuite/g++.dg/lto/20080924_0.C
  56555ff718439a233cf8facf89434c06  gcc/testsuite/g++.dg/lto/20080926_0.C
  1b67921988c55a80293c9b1fdcf021e7  gcc/testsuite/g++.dg/lto/20081008_0.C
  c103732cb2619eee9ec3df9bd130a6c4  gcc/testsuite/g++.dg/lto/20081022.h
! a590c0ac4d5808adbba47e80431ea783  gcc/testsuite/g++.dg/lto/20081022_0.C
  715eef43f5f40eb7ce1039fdc68eb852  gcc/testsuite/g++.dg/lto/20081022_1.C
! 70c8326841e0a44b78d4c90ba0094bc7  gcc/testsuite/g++.dg/lto/20081023_0.C
  57fcd29507247b0ea06fa888dfb03f99  gcc/testsuite/g++.dg/lto/20081109-1_0.C
  cab047bd2b2a56cdcf29b1021d61d01e  gcc/testsuite/g++.dg/lto/20081109-2_0.C
  2e16c99a7448910e56edbde292e11587  gcc/testsuite/g++.dg/lto/20081109_0.C
  5f8f0441a7d158387241c67debd92e81  gcc/testsuite/g++.dg/lto/20081109_1.C
  e32d73cb2418a3865b03cb8eec3120a3  gcc/testsuite/g++.dg/lto/20081118-1_0.C
  ee6c53515fae9f8cd35761771f0f9e6b  gcc/testsuite/g++.dg/lto/20081118-1_1.C
! 9f78ec143d2a982e1eba29f964737624  gcc/testsuite/g++.dg/lto/20081118_0.C
! 22f845269c768ec466d90cf5dca63657  gcc/testsuite/g++.dg/lto/20081118_1.C
  516775c5850c5b98d957681a65e0b75a  gcc/testsuite/g++.dg/lto/20081119-1.h
  042b304fbcc845fa5922189f415051d1  gcc/testsuite/g++.dg/lto/20081119-1_0.C
  7a76d161718bc7354e3dbefd0e6e40b4  gcc/testsuite/g++.dg/lto/20081119-1_1.C
  bd3ff234fc48ecfd2020b3b47fb38116  gcc/testsuite/g++.dg/lto/20081119_0.C
  5e1667c0d0b7c8628e5b3e5b0e6fcb93  gcc/testsuite/g++.dg/lto/20081119_1.C
! e55c4a40516aef14b13f5607b73d43fa  gcc/testsuite/g++.dg/lto/20081120-1_0.C
! 8449a608731447668cddc213c17ecbdb  gcc/testsuite/g++.dg/lto/20081120-1_1.C
  83990cb73a74ba0b6a789590cd7c3e55  gcc/testsuite/g++.dg/lto/20081120-2_0.C
  6048e3b37f144550da1d984517f119a4  gcc/testsuite/g++.dg/lto/20081120-2_1.C
  230b2803ecbe60f72d6340da1a079626  gcc/testsuite/g++.dg/lto/20081123_0.C
--- 15784,15814 ----
  b4a616fe18097af8a6fa7226d5f333f0  gcc/testsuite/g++.dg/lto/20080910-1_0.C
  302b7bac3b3565167ec4869820350c3b  gcc/testsuite/g++.dg/lto/20080912-1_0.C
  cc8767eb274d922ccc29b3a8613651ba  gcc/testsuite/g++.dg/lto/20080912_0.C
! 59ae773a5766c138868ceeea71a0d54f  gcc/testsuite/g++.dg/lto/20080915_0.C
! bb8ee1114c614523e1c15141f005e4b7  gcc/testsuite/g++.dg/lto/20080916_0.C
  d309762f007fee93d027ee4ec7f91a76  gcc/testsuite/g++.dg/lto/20080917_0.C
  981216fdf488c75ea6a2463c529cd3fe  gcc/testsuite/g++.dg/lto/20080924_0.C
  56555ff718439a233cf8facf89434c06  gcc/testsuite/g++.dg/lto/20080926_0.C
  1b67921988c55a80293c9b1fdcf021e7  gcc/testsuite/g++.dg/lto/20081008_0.C
  c103732cb2619eee9ec3df9bd130a6c4  gcc/testsuite/g++.dg/lto/20081022.h
! b98bc7599df3a6ed68f19a0f4085bbf9  gcc/testsuite/g++.dg/lto/20081022_0.C
  715eef43f5f40eb7ce1039fdc68eb852  gcc/testsuite/g++.dg/lto/20081022_1.C
! 0122c377e6b6f41146d85c230c1ad342  gcc/testsuite/g++.dg/lto/20081023_0.C
  57fcd29507247b0ea06fa888dfb03f99  gcc/testsuite/g++.dg/lto/20081109-1_0.C
  cab047bd2b2a56cdcf29b1021d61d01e  gcc/testsuite/g++.dg/lto/20081109-2_0.C
  2e16c99a7448910e56edbde292e11587  gcc/testsuite/g++.dg/lto/20081109_0.C
  5f8f0441a7d158387241c67debd92e81  gcc/testsuite/g++.dg/lto/20081109_1.C
  e32d73cb2418a3865b03cb8eec3120a3  gcc/testsuite/g++.dg/lto/20081118-1_0.C
  ee6c53515fae9f8cd35761771f0f9e6b  gcc/testsuite/g++.dg/lto/20081118-1_1.C
! 04d896a542e1f87b252835074d1aad9a  gcc/testsuite/g++.dg/lto/20081118_0.C
! 7afd2daf2ac4fca6e7a84e4d2ac5dd64  gcc/testsuite/g++.dg/lto/20081118_1.C
  516775c5850c5b98d957681a65e0b75a  gcc/testsuite/g++.dg/lto/20081119-1.h
  042b304fbcc845fa5922189f415051d1  gcc/testsuite/g++.dg/lto/20081119-1_0.C
  7a76d161718bc7354e3dbefd0e6e40b4  gcc/testsuite/g++.dg/lto/20081119-1_1.C
  bd3ff234fc48ecfd2020b3b47fb38116  gcc/testsuite/g++.dg/lto/20081119_0.C
  5e1667c0d0b7c8628e5b3e5b0e6fcb93  gcc/testsuite/g++.dg/lto/20081119_1.C
! 3c6ba4575839cba3f87ed34aff60a6e3  gcc/testsuite/g++.dg/lto/20081120-1_0.C
! 7e7b7d8d2cf5a833c100a5b6d797d4c6  gcc/testsuite/g++.dg/lto/20081120-1_1.C
  83990cb73a74ba0b6a789590cd7c3e55  gcc/testsuite/g++.dg/lto/20081120-2_0.C
  6048e3b37f144550da1d984517f119a4  gcc/testsuite/g++.dg/lto/20081120-2_1.C
  230b2803ecbe60f72d6340da1a079626  gcc/testsuite/g++.dg/lto/20081123_0.C
*************** f3245c139a2b28a71403a0061bac1b7b  gcc/te
*** 14950,14956 ****
  4b2a113dde4b6718c503072719cd8b0f  gcc/testsuite/g++.dg/lto/20081125_0.C
  56d0e04444b7731d273408282100a65b  gcc/testsuite/g++.dg/lto/20081125_1.C
  db4f63bc6be91958e93124af0193e66b  gcc/testsuite/g++.dg/lto/20081127_0.C
! 00a4b3a5f5bba08b5ae29d858c727ea2  gcc/testsuite/g++.dg/lto/20081127_1.C
  a494295e27dd4c727a300e4487ea09bb  gcc/testsuite/g++.dg/lto/20081203_0.C
  98778c2b88eda25ce05894a17d7680e4  gcc/testsuite/g++.dg/lto/20081203_1.C
  e07b4e6132e20d55eb7f629f6c8850f1  gcc/testsuite/g++.dg/lto/20081204-1_0.C
--- 15817,15823 ----
  4b2a113dde4b6718c503072719cd8b0f  gcc/testsuite/g++.dg/lto/20081125_0.C
  56d0e04444b7731d273408282100a65b  gcc/testsuite/g++.dg/lto/20081125_1.C
  db4f63bc6be91958e93124af0193e66b  gcc/testsuite/g++.dg/lto/20081127_0.C
! f13a3c237e813b1446f35869c5452e92  gcc/testsuite/g++.dg/lto/20081127_1.C
  a494295e27dd4c727a300e4487ea09bb  gcc/testsuite/g++.dg/lto/20081203_0.C
  98778c2b88eda25ce05894a17d7680e4  gcc/testsuite/g++.dg/lto/20081203_1.C
  e07b4e6132e20d55eb7f629f6c8850f1  gcc/testsuite/g++.dg/lto/20081204-1_0.C
*************** f7fc820b56efba6c7763744da17a87c9  gcc/te
*** 14963,15010 ****
  215a806aaef01be71e0a1068b8ea5354  gcc/testsuite/g++.dg/lto/20081211-1_0.C
  b7c3e533b1333e670fd330cd8ec53900  gcc/testsuite/g++.dg/lto/20081211-1_1.C
  d15df87cc28d9d979322de144056e392  gcc/testsuite/g++.dg/lto/20081217-1_0.C
! 3cb8890c26a8b56dfd2026bd17dc5618  gcc/testsuite/g++.dg/lto/20081217-2_0.C
  81f1447d70b83f35d17575707c198126  gcc/testsuite/g++.dg/lto/20081219_0.C
  f59c1786515e2448abc8abf5a1c29eb0  gcc/testsuite/g++.dg/lto/20081219_1.C
  1ce6c1aebc36b1f96969c33548c941e3  gcc/testsuite/g++.dg/lto/20090106_0.C
  ea89b08bb23cbd99492773e11d27c75c  gcc/testsuite/g++.dg/lto/20090112_0.C
  e3e45aab92462ef1598354a107aea37a  gcc/testsuite/g++.dg/lto/20090128_0.C
! 22ecab189817e094ba8eaaa343bc616a  gcc/testsuite/g++.dg/lto/20090221_0.C
  1fe2897fd208065fcf256067ee7b904d  gcc/testsuite/g++.dg/lto/20090302_0.C
  b695bcee4d477cea4f681d8982db9752  gcc/testsuite/g++.dg/lto/20090302_1.C
! 5d025a198f0ec34fa1f066c22d120f5c  gcc/testsuite/g++.dg/lto/20090303_0.C
  64e05e283728b6fa1412d327cc39f5f7  gcc/testsuite/g++.dg/lto/20090311-1.h
! ed3f2f02a90d3e3fbf121d26f40748c9  gcc/testsuite/g++.dg/lto/20090311-1_0.C
  4bd241066ec44d418a463b706bee517f  gcc/testsuite/g++.dg/lto/20090311-1_1.C
  edded7810c07e02a1b6bd033a9855f16  gcc/testsuite/g++.dg/lto/20090311_0.C
  4bd4723237e4ba482a9257b2d93a65a9  gcc/testsuite/g++.dg/lto/20090311_1.C
  f3df9b21dd1394af3ab0def425b4521c  gcc/testsuite/g++.dg/lto/20090312.h
! 44d2e8dbcae3642141963580e1caae86  gcc/testsuite/g++.dg/lto/20090312_0.C
  f1b54d43c1d8be7a92c7be0cada1c0cb  gcc/testsuite/g++.dg/lto/20090312_1.C
  4578f2261a13cd87972aad48cbecda45  gcc/testsuite/g++.dg/lto/20090313_0.C
  af95ff52b10d0e17c8fe8216f7c09b32  gcc/testsuite/g++.dg/lto/20090313_1.C
! a58810431206d4d69ca9a85560c06a8e  gcc/testsuite/g++.dg/lto/20090315_0.C
  4668a3c2619c1eb17bf2ef65e3938fe5  gcc/testsuite/g++.dg/lto/20090315_1.C
! 28137a065c277ad2850e7c50929a1279  gcc/testsuite/g++.dg/lto/20091002-1_0.C
! 39a1486543d8c089f06761365aed1585  gcc/testsuite/g++.dg/lto/20091002-2_0.C
! f9d62389908f34b90a9ac4a13f6db2b4  gcc/testsuite/g++.dg/lto/20091002-3_0.C
! 36611eb0a632cf32d659969e3dc240d7  gcc/testsuite/g++.dg/lto/20091004-1_0.C
  b1f395c247ddc53c4f3960a1a72bd398  gcc/testsuite/g++.dg/lto/20091004-1_1.C
! 72f07943291a1bb78b519323564469de  gcc/testsuite/g++.dg/lto/20091004-2_0.C
  3b6f5df0d72b25e2fcc05fb8b2c91e6c  gcc/testsuite/g++.dg/lto/20091004-2_1.C
  95f1267a216caf98bd99298c998cd58e  gcc/testsuite/g++.dg/lto/20091004-3_0.C
! abddddc04ac327bae575b130d226e2d7  gcc/testsuite/g++.dg/lto/20091004-3_1.C
  6e256583bb6b48177771c608182c3b6d  gcc/testsuite/g++.dg/lto/20091022-1_0.C
  dae8d29a4481b18cab90252e7c78ea53  gcc/testsuite/g++.dg/lto/20091022-2_0.C
  8a40f7bdd413d7cb05c24018cb5e6bc9  gcc/testsuite/g++.dg/lto/20091026-1_0.C
! 6e690f35c2e004189a00ac0739925176  gcc/testsuite/g++.dg/lto/20091026-1_1.C
  412c4c5afa8e742a78da641dcfebb47a  gcc/testsuite/g++.dg/lto/20091026-1_a.h
  0981cf0352d8578e32f0ec1c4499a5a7  gcc/testsuite/g++.dg/lto/20091210-1_0.C
  0d8576140ac50fc7649bb65a88d3f42e  gcc/testsuite/g++.dg/lto/20091210-1_0.h
  e5e25bc32bb88fc22d2586e2e9ce5ea6  gcc/testsuite/g++.dg/lto/20091210-1_1.C
  cc1ff528fda236c61039ea14f75992d1  gcc/testsuite/g++.dg/lto/20091219_0.C
  33b3117a2f14f456dd4030b0aa927b8f  gcc/testsuite/g++.dg/lto/20100302.h
! ad8830185e6775cdb15bc5cd051f5ffc  gcc/testsuite/g++.dg/lto/20100302_0.C
  bd7e5b360aaa69ca4182436b84c325ff  gcc/testsuite/g++.dg/lto/20100302_1.C
  2a7a5a7671c4b3a945046f309d83de60  gcc/testsuite/g++.dg/lto/20100423-1_0.C
  8c6118f7930008fecd8850c01a3c9049  gcc/testsuite/g++.dg/lto/20100423-2_0.C
--- 15830,15877 ----
  215a806aaef01be71e0a1068b8ea5354  gcc/testsuite/g++.dg/lto/20081211-1_0.C
  b7c3e533b1333e670fd330cd8ec53900  gcc/testsuite/g++.dg/lto/20081211-1_1.C
  d15df87cc28d9d979322de144056e392  gcc/testsuite/g++.dg/lto/20081217-1_0.C
! 296babb8d81e392a3eb3bd07fdb13abf  gcc/testsuite/g++.dg/lto/20081217-2_0.C
  81f1447d70b83f35d17575707c198126  gcc/testsuite/g++.dg/lto/20081219_0.C
  f59c1786515e2448abc8abf5a1c29eb0  gcc/testsuite/g++.dg/lto/20081219_1.C
  1ce6c1aebc36b1f96969c33548c941e3  gcc/testsuite/g++.dg/lto/20090106_0.C
  ea89b08bb23cbd99492773e11d27c75c  gcc/testsuite/g++.dg/lto/20090112_0.C
  e3e45aab92462ef1598354a107aea37a  gcc/testsuite/g++.dg/lto/20090128_0.C
! ece5a547b1ca529b805c3591b7fed164  gcc/testsuite/g++.dg/lto/20090221_0.C
  1fe2897fd208065fcf256067ee7b904d  gcc/testsuite/g++.dg/lto/20090302_0.C
  b695bcee4d477cea4f681d8982db9752  gcc/testsuite/g++.dg/lto/20090302_1.C
! faacd4e8b21573d7071013335bdb6a47  gcc/testsuite/g++.dg/lto/20090303_0.C
  64e05e283728b6fa1412d327cc39f5f7  gcc/testsuite/g++.dg/lto/20090311-1.h
! 48b8dcec96dde774e49c71036d633015  gcc/testsuite/g++.dg/lto/20090311-1_0.C
  4bd241066ec44d418a463b706bee517f  gcc/testsuite/g++.dg/lto/20090311-1_1.C
  edded7810c07e02a1b6bd033a9855f16  gcc/testsuite/g++.dg/lto/20090311_0.C
  4bd4723237e4ba482a9257b2d93a65a9  gcc/testsuite/g++.dg/lto/20090311_1.C
  f3df9b21dd1394af3ab0def425b4521c  gcc/testsuite/g++.dg/lto/20090312.h
! 1a3ad71da0f9873e01583245dfaf955e  gcc/testsuite/g++.dg/lto/20090312_0.C
  f1b54d43c1d8be7a92c7be0cada1c0cb  gcc/testsuite/g++.dg/lto/20090312_1.C
  4578f2261a13cd87972aad48cbecda45  gcc/testsuite/g++.dg/lto/20090313_0.C
  af95ff52b10d0e17c8fe8216f7c09b32  gcc/testsuite/g++.dg/lto/20090313_1.C
! 45a8b4648f6eb8bbf2796a6dcf8c4b1b  gcc/testsuite/g++.dg/lto/20090315_0.C
  4668a3c2619c1eb17bf2ef65e3938fe5  gcc/testsuite/g++.dg/lto/20090315_1.C
! 447652ff82f322247edb903dfa397973  gcc/testsuite/g++.dg/lto/20091002-1_0.C
! e8c386ca66b2435fc8b7c23d79a6dec7  gcc/testsuite/g++.dg/lto/20091002-2_0.C
! 947d45a5ec61aca6830478f192863aa2  gcc/testsuite/g++.dg/lto/20091002-3_0.C
! 93a671aaefea7542bfaecc843d4aa87e  gcc/testsuite/g++.dg/lto/20091004-1_0.C
  b1f395c247ddc53c4f3960a1a72bd398  gcc/testsuite/g++.dg/lto/20091004-1_1.C
! c6f32b33e84f3bfb06660b7dee175d23  gcc/testsuite/g++.dg/lto/20091004-2_0.C
  3b6f5df0d72b25e2fcc05fb8b2c91e6c  gcc/testsuite/g++.dg/lto/20091004-2_1.C
  95f1267a216caf98bd99298c998cd58e  gcc/testsuite/g++.dg/lto/20091004-3_0.C
! 546d22a8a0c7f3d0f4d56f8e3692c952  gcc/testsuite/g++.dg/lto/20091004-3_1.C
  6e256583bb6b48177771c608182c3b6d  gcc/testsuite/g++.dg/lto/20091022-1_0.C
  dae8d29a4481b18cab90252e7c78ea53  gcc/testsuite/g++.dg/lto/20091022-2_0.C
  8a40f7bdd413d7cb05c24018cb5e6bc9  gcc/testsuite/g++.dg/lto/20091026-1_0.C
! 20821b3f01ba34253f6e2f0010a873d9  gcc/testsuite/g++.dg/lto/20091026-1_1.C
  412c4c5afa8e742a78da641dcfebb47a  gcc/testsuite/g++.dg/lto/20091026-1_a.h
  0981cf0352d8578e32f0ec1c4499a5a7  gcc/testsuite/g++.dg/lto/20091210-1_0.C
  0d8576140ac50fc7649bb65a88d3f42e  gcc/testsuite/g++.dg/lto/20091210-1_0.h
  e5e25bc32bb88fc22d2586e2e9ce5ea6  gcc/testsuite/g++.dg/lto/20091210-1_1.C
  cc1ff528fda236c61039ea14f75992d1  gcc/testsuite/g++.dg/lto/20091219_0.C
  33b3117a2f14f456dd4030b0aa927b8f  gcc/testsuite/g++.dg/lto/20100302.h
! 770a4d607fc3a285446ae2f9d75d9fb1  gcc/testsuite/g++.dg/lto/20100302_0.C
  bd7e5b360aaa69ca4182436b84c325ff  gcc/testsuite/g++.dg/lto/20100302_1.C
  2a7a5a7671c4b3a945046f309d83de60  gcc/testsuite/g++.dg/lto/20100423-1_0.C
  8c6118f7930008fecd8850c01a3c9049  gcc/testsuite/g++.dg/lto/20100423-2_0.C
*************** bd7e5b360aaa69ca4182436b84c325ff  gcc/te
*** 15012,15024 ****
  e89d3b770980ea2a3f986f29c0a3114f  gcc/testsuite/g++.dg/lto/20100519-1_0.C
  de99a9369fd72814c73cbd3b0a62e209  gcc/testsuite/g++.dg/lto/20100603-1_0.C
  623831b239311d1c656f317850a7248d  gcc/testsuite/g++.dg/lto/20100603-1_1.c
! 64db11f264fde37296b436ed28032f9d  gcc/testsuite/g++.dg/lto/20100721-1_0.C
  31ee0ce50f6ef5bb5a3b66843f18efe5  gcc/testsuite/g++.dg/lto/20100722-1_0.C
  c30a9d6ebf4563d7c09fd20aab038b9c  gcc/testsuite/g++.dg/lto/20100723-1_0.C
  ba53ff01ebd53591af3f6b2df54e404b  gcc/testsuite/g++.dg/lto/20100724-1_0.C
  66d1fe39d12d7c425f5c8b3f5956b993  gcc/testsuite/g++.dg/lto/20101009-1_0.C
! 45561f27805e169674ba339fa18ebbdf  gcc/testsuite/g++.dg/lto/20101010-1_0.C
! 4be6727c042e3b92a7134099761f7c06  gcc/testsuite/g++.dg/lto/20101010-2_0.C
  30f252a01870f55321528cb33b7b6d06  gcc/testsuite/g++.dg/lto/20101010-3_0.C
  9a71674949fecc4e5eed40d1adc33bc9  gcc/testsuite/g++.dg/lto/20101010-4_0.C
  db3624a2e9e37543a071aefd12a406f8  gcc/testsuite/g++.dg/lto/20101014-1_0.C
--- 15879,15891 ----
  e89d3b770980ea2a3f986f29c0a3114f  gcc/testsuite/g++.dg/lto/20100519-1_0.C
  de99a9369fd72814c73cbd3b0a62e209  gcc/testsuite/g++.dg/lto/20100603-1_0.C
  623831b239311d1c656f317850a7248d  gcc/testsuite/g++.dg/lto/20100603-1_1.c
! e4044e47955169ad7ce51c518bb30550  gcc/testsuite/g++.dg/lto/20100721-1_0.C
  31ee0ce50f6ef5bb5a3b66843f18efe5  gcc/testsuite/g++.dg/lto/20100722-1_0.C
  c30a9d6ebf4563d7c09fd20aab038b9c  gcc/testsuite/g++.dg/lto/20100723-1_0.C
  ba53ff01ebd53591af3f6b2df54e404b  gcc/testsuite/g++.dg/lto/20100724-1_0.C
  66d1fe39d12d7c425f5c8b3f5956b993  gcc/testsuite/g++.dg/lto/20101009-1_0.C
! 6360f314f31f513ac43d15b6807dd8b8  gcc/testsuite/g++.dg/lto/20101010-1_0.C
! a045b4373d1d338c24a51108a383329b  gcc/testsuite/g++.dg/lto/20101010-2_0.C
  30f252a01870f55321528cb33b7b6d06  gcc/testsuite/g++.dg/lto/20101010-3_0.C
  9a71674949fecc4e5eed40d1adc33bc9  gcc/testsuite/g++.dg/lto/20101010-4_0.C
  db3624a2e9e37543a071aefd12a406f8  gcc/testsuite/g++.dg/lto/20101014-1_0.C
*************** c5ec0fe447ed752a2a467af98347987e  gcc/te
*** 15032,15051 ****
  fc89d3148096e1dd949bddf4ccb343e0  gcc/testsuite/g++.dg/lto/20101126-1_1.c
  28b21fabaf7f23ceee461f8de2c7ac07  gcc/testsuite/g++.dg/lto/20110311-1_0.C
  864e43fa53e19d7611de64eb52a57b42  gcc/testsuite/g++.dg/lto/README
! 2c5c5910f4f34dca6dabb1d34f75bf97  gcc/testsuite/g++.dg/lto/lto.exp
  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
  8417fd2f6269ca5e9a5f1d4d6e3aa80d  gcc/testsuite/g++.dg/lto/pr45621.h
  73aaf0ac9f0d89731fe141c67cc8b8c2  gcc/testsuite/g++.dg/lto/pr45621_0.C
  ed2299062ba04c6aedaee44243854103  gcc/testsuite/g++.dg/lto/pr45621_1.C
! aed0ba38a6ea060bc2e3e3202863de86  gcc/testsuite/g++.dg/lto/pr45679-1_0.C
! ec5935b10537f3bfc7da8e1c82db2411  gcc/testsuite/g++.dg/lto/pr45679-1_1.C
! 588da265a71d0b6c46161075f6392c75  gcc/testsuite/g++.dg/lto/pr45679-2_0.C
  eb977e11accaf5ceaed39ff5df8e4abd  gcc/testsuite/g++.dg/lto/pr45679-2_1.C
  dea28ab6f6b16a4fe65dafffe3df1f3d  gcc/testsuite/g++.dg/lto/pr45983_0.C
  8b6ed0febb7b8cb0b71d1abbb9768498  gcc/testsuite/g++.dg/lto/pr47333.C
! fdd5358067d13a78dca149d8fd4055d2  gcc/testsuite/g++.dg/lto/pr48042_0.C
  a7a28bfa3ecbd16048176050bdad64bd  gcc/testsuite/g++.dg/lto/pr48207-2_0.C
  dc37f7a73a48e669903030d4f7f26b07  gcc/testsuite/g++.dg/lto/pr48207-3_0.C
  3560e67c101a0719de44ce66e776e884  gcc/testsuite/g++.dg/lto/pr48207_0.C
--- 15899,15918 ----
  fc89d3148096e1dd949bddf4ccb343e0  gcc/testsuite/g++.dg/lto/20101126-1_1.c
  28b21fabaf7f23ceee461f8de2c7ac07  gcc/testsuite/g++.dg/lto/20110311-1_0.C
  864e43fa53e19d7611de64eb52a57b42  gcc/testsuite/g++.dg/lto/README
! 21fbbca1323f58db0a0c6ea2b2b9e6e5  gcc/testsuite/g++.dg/lto/lto.exp
  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
  8417fd2f6269ca5e9a5f1d4d6e3aa80d  gcc/testsuite/g++.dg/lto/pr45621.h
  73aaf0ac9f0d89731fe141c67cc8b8c2  gcc/testsuite/g++.dg/lto/pr45621_0.C
  ed2299062ba04c6aedaee44243854103  gcc/testsuite/g++.dg/lto/pr45621_1.C
! 0aa8aa009c05d62ad4a8900e29c06c36  gcc/testsuite/g++.dg/lto/pr45679-1_0.C
! 39996a11bd6f1aaf0ee096e7b249112f  gcc/testsuite/g++.dg/lto/pr45679-1_1.C
! 89f1db6bd7ddb730227984b76cc5d1e1  gcc/testsuite/g++.dg/lto/pr45679-2_0.C
  eb977e11accaf5ceaed39ff5df8e4abd  gcc/testsuite/g++.dg/lto/pr45679-2_1.C
  dea28ab6f6b16a4fe65dafffe3df1f3d  gcc/testsuite/g++.dg/lto/pr45983_0.C
  8b6ed0febb7b8cb0b71d1abbb9768498  gcc/testsuite/g++.dg/lto/pr47333.C
! ddd8c6f7da7feaa18c3569d4e8134728  gcc/testsuite/g++.dg/lto/pr48042_0.C
  a7a28bfa3ecbd16048176050bdad64bd  gcc/testsuite/g++.dg/lto/pr48207-2_0.C
  dc37f7a73a48e669903030d4f7f26b07  gcc/testsuite/g++.dg/lto/pr48207-3_0.C
  3560e67c101a0719de44ce66e776e884  gcc/testsuite/g++.dg/lto/pr48207_0.C
*************** eef34d0bac5c827948f50f098287ef82  gcc/te
*** 15056,15064 ****
  ca9da2a3cc94e7a37014116dcaaa6aec  gcc/testsuite/g++.dg/lto/pr51567-1_0.C
  db836c63241d90b3d913662d33e51908  gcc/testsuite/g++.dg/lto/pr51572-2_0.C
  e950fc0165d030e19e236b244a45dfb3  gcc/testsuite/g++.dg/lto/pr51573-1_0.C
! b90d6df750f7386ab8b1f1d7e92568b4  gcc/testsuite/g++.dg/lto/pr51650-1_0.C
  f23f59a698c99ad7a9797f34477bdf37  gcc/testsuite/g++.dg/lto/pr51650-2_0.C
! f9f4cc6f74092f14e5ed9b37f1f97e1f  gcc/testsuite/g++.dg/lto/pr51650-3_0.C
  b3aae39cca4ae46e2cc9f06f38c495e1  gcc/testsuite/g++.dg/lto/pr51832.h
  d8c212e858167f20da34f48ece091836  gcc/testsuite/g++.dg/lto/pr51832_0.C
  0cfea78d345afcb7a26d55fb9f94d052  gcc/testsuite/g++.dg/lto/pr51832_1.C
--- 15923,15931 ----
  ca9da2a3cc94e7a37014116dcaaa6aec  gcc/testsuite/g++.dg/lto/pr51567-1_0.C
  db836c63241d90b3d913662d33e51908  gcc/testsuite/g++.dg/lto/pr51572-2_0.C
  e950fc0165d030e19e236b244a45dfb3  gcc/testsuite/g++.dg/lto/pr51573-1_0.C
! f45f735113fd41062eb4f61955d7a6db  gcc/testsuite/g++.dg/lto/pr51650-1_0.C
  f23f59a698c99ad7a9797f34477bdf37  gcc/testsuite/g++.dg/lto/pr51650-2_0.C
! 55c6a0f31a9bd4a828fd18c556490996  gcc/testsuite/g++.dg/lto/pr51650-3_0.C
  b3aae39cca4ae46e2cc9f06f38c495e1  gcc/testsuite/g++.dg/lto/pr51832.h
  d8c212e858167f20da34f48ece091836  gcc/testsuite/g++.dg/lto/pr51832_0.C
  0cfea78d345afcb7a26d55fb9f94d052  gcc/testsuite/g++.dg/lto/pr51832_1.C
*************** d8c212e858167f20da34f48ece091836  gcc/te
*** 15068,15105 ****
  0b8cd619eccd9ac6f32d145111bcb551  gcc/testsuite/g++.dg/lto/pr52605_0.C
  75277aaca640889b23c288c9d8090dc1  gcc/testsuite/g++.dg/lto/pr53470_0.C
  1019b49b15fbdbec4c65922dc129f8fa  gcc/testsuite/g++.dg/lto/pr54625-1_0.c
! 407210b3d5c67944081ed15163495621  gcc/testsuite/g++.dg/lto/pr54625-1_1.C
  2928a4b243270ab884a294c454c9a4ae  gcc/testsuite/g++.dg/lto/pr54625-2_0.c
  379ba463157e17f963883a2f93daddfd  gcc/testsuite/g++.dg/lto/pr54625-2_1.C
  e322526c296977cb7c4900d2a133c3c4  gcc/testsuite/g++.dg/lto/pr60150.H
  cbee807af28f014c203c54ab80ff50a2  gcc/testsuite/g++.dg/lto/pr60150_0.C
  eb989cca62b61ae260c43eec2e863f53  gcc/testsuite/g++.dg/lto/pr60150_1.C
  bdf79008bc5e703ee7b33f7ad88035de  gcc/testsuite/g++.dg/lto/pr60567_0.C
  58886bc1f7545de2cda92d6ac053db8b  gcc/testsuite/g++.dg/lto/pr62026.C
  c3c4967cb8c2c452928945c0ccd6989d  gcc/testsuite/g++.dg/lto/pr63166_0.ii
  0b63c925f1273abcd9e9c38bcd437701  gcc/testsuite/g++.dg/lto/pr63166_1.ii
  55437e8d287eedf3fff9dd4b6ab2781a  gcc/testsuite/g++.dg/lto/pr63270.h
  ef84a079efbdf0db99bdd9571541a92f  gcc/testsuite/g++.dg/lto/pr63270_0.C
! d3c3a1f61e59a1441c36af8765ed6508  gcc/testsuite/g++.dg/lto/pr63270_1.C
  d250dc41533edbb3e70157b86008c9bb  gcc/testsuite/g++.dg/lto/pr63270_2.C
  e6d1d907e394d9be1b2e8c72cf4c9723  gcc/testsuite/g++.dg/lto/pr64043_0.C
  e322526c296977cb7c4900d2a133c3c4  gcc/testsuite/g++.dg/lto/pr64076.H
  5de12a4456520341851f68d588e9b69a  gcc/testsuite/g++.dg/lto/pr64076_0.C
  919bf5461ff2131b83380015ad77687d  gcc/testsuite/g++.dg/lto/pr64076_1.C
! 20886a82160a07108862475db99260c0  gcc/testsuite/g++.dg/lto/pr65193_0.C
  71a07636c85b08dfdf7901e5c508dd38  gcc/testsuite/g++.dg/lto/pr65276_0.C
  e259f0c971ab618044123572b19d57c6  gcc/testsuite/g++.dg/lto/pr65276_1.C
! 098f52b2605cbdee4783b345411eaac7  gcc/testsuite/g++.dg/lto/pr65302_0.C
  758e5aa3b6b91426c2e738463bb43732  gcc/testsuite/g++.dg/lto/pr65302_1.C
! 27552b1adc473a27b32c3654b8b93e7f  gcc/testsuite/g++.dg/lto/pr65316_0.C
  d41d8cd98f00b204e9800998ecf8427e  gcc/testsuite/g++.dg/lto/pr65316_1.C
  1fdbf91ba99ca85747517840584615ba  gcc/testsuite/g++.dg/lto/pr65475_0.C
  a8d79eafba6d19cc77d3447c4e964c71  gcc/testsuite/g++.dg/lto/pr65475_1.C
  53b9b01a1dd9fa1d4939863b65f32118  gcc/testsuite/g++.dg/lto/pr65475b_0.C
  32e103d153c6009c9d362f60e06c61b3  gcc/testsuite/g++.dg/lto/pr65475b_1.C
! b62a7e3565bad65b17985f61bd061850  gcc/testsuite/g++.dg/lto/pr65475c_0.C
  e8cf2a3b6fd4daf5bb8b404d59602d2f  gcc/testsuite/g++.dg/lto/pr65475c_1.C
! 6b5d6a049c3c35c2b2e10a29ead90b3e  gcc/testsuite/g++.dg/lto/pr65549_0.C
  206a03a51dfc2906f64ea6d02a74c1a3  gcc/testsuite/g++.dg/lto/pr66180_0.C
  0c6775ecdbe88bd8a80496ac9b9da9d4  gcc/testsuite/g++.dg/lto/pr66180_1.C
  d3e7b46b355042e3d34530ae665a29e7  gcc/testsuite/g++.dg/lto/pr66705_0.C
--- 15935,15973 ----
  0b8cd619eccd9ac6f32d145111bcb551  gcc/testsuite/g++.dg/lto/pr52605_0.C
  75277aaca640889b23c288c9d8090dc1  gcc/testsuite/g++.dg/lto/pr53470_0.C
  1019b49b15fbdbec4c65922dc129f8fa  gcc/testsuite/g++.dg/lto/pr54625-1_0.c
! 81fc0009050d4f11ee2f0adb0bebea9f  gcc/testsuite/g++.dg/lto/pr54625-1_1.C
  2928a4b243270ab884a294c454c9a4ae  gcc/testsuite/g++.dg/lto/pr54625-2_0.c
  379ba463157e17f963883a2f93daddfd  gcc/testsuite/g++.dg/lto/pr54625-2_1.C
  e322526c296977cb7c4900d2a133c3c4  gcc/testsuite/g++.dg/lto/pr60150.H
  cbee807af28f014c203c54ab80ff50a2  gcc/testsuite/g++.dg/lto/pr60150_0.C
  eb989cca62b61ae260c43eec2e863f53  gcc/testsuite/g++.dg/lto/pr60150_1.C
+ 4545a0f5287e3787b44c5f09c746b2c5  gcc/testsuite/g++.dg/lto/pr60336_0.C
  bdf79008bc5e703ee7b33f7ad88035de  gcc/testsuite/g++.dg/lto/pr60567_0.C
  58886bc1f7545de2cda92d6ac053db8b  gcc/testsuite/g++.dg/lto/pr62026.C
  c3c4967cb8c2c452928945c0ccd6989d  gcc/testsuite/g++.dg/lto/pr63166_0.ii
  0b63c925f1273abcd9e9c38bcd437701  gcc/testsuite/g++.dg/lto/pr63166_1.ii
  55437e8d287eedf3fff9dd4b6ab2781a  gcc/testsuite/g++.dg/lto/pr63270.h
  ef84a079efbdf0db99bdd9571541a92f  gcc/testsuite/g++.dg/lto/pr63270_0.C
! d5784b5d151964a0262860b6971b650d  gcc/testsuite/g++.dg/lto/pr63270_1.C
  d250dc41533edbb3e70157b86008c9bb  gcc/testsuite/g++.dg/lto/pr63270_2.C
  e6d1d907e394d9be1b2e8c72cf4c9723  gcc/testsuite/g++.dg/lto/pr64043_0.C
  e322526c296977cb7c4900d2a133c3c4  gcc/testsuite/g++.dg/lto/pr64076.H
  5de12a4456520341851f68d588e9b69a  gcc/testsuite/g++.dg/lto/pr64076_0.C
  919bf5461ff2131b83380015ad77687d  gcc/testsuite/g++.dg/lto/pr64076_1.C
! 246a511c2d2a5be9ab0acffea0bc5db2  gcc/testsuite/g++.dg/lto/pr65193_0.C
  71a07636c85b08dfdf7901e5c508dd38  gcc/testsuite/g++.dg/lto/pr65276_0.C
  e259f0c971ab618044123572b19d57c6  gcc/testsuite/g++.dg/lto/pr65276_1.C
! a1bcc1bee19371c731ad45658dc36fe5  gcc/testsuite/g++.dg/lto/pr65302_0.C
  758e5aa3b6b91426c2e738463bb43732  gcc/testsuite/g++.dg/lto/pr65302_1.C
! 04503aa4be0dc1122052aaa9dec5f69c  gcc/testsuite/g++.dg/lto/pr65316_0.C
  d41d8cd98f00b204e9800998ecf8427e  gcc/testsuite/g++.dg/lto/pr65316_1.C
  1fdbf91ba99ca85747517840584615ba  gcc/testsuite/g++.dg/lto/pr65475_0.C
  a8d79eafba6d19cc77d3447c4e964c71  gcc/testsuite/g++.dg/lto/pr65475_1.C
  53b9b01a1dd9fa1d4939863b65f32118  gcc/testsuite/g++.dg/lto/pr65475b_0.C
  32e103d153c6009c9d362f60e06c61b3  gcc/testsuite/g++.dg/lto/pr65475b_1.C
! 4c46ea8e1f6a05c2359869eae96abf2e  gcc/testsuite/g++.dg/lto/pr65475c_0.C
  e8cf2a3b6fd4daf5bb8b404d59602d2f  gcc/testsuite/g++.dg/lto/pr65475c_1.C
! 27cf844f6b0f6fbb306fbab32a17a686  gcc/testsuite/g++.dg/lto/pr65549_0.C
  206a03a51dfc2906f64ea6d02a74c1a3  gcc/testsuite/g++.dg/lto/pr66180_0.C
  0c6775ecdbe88bd8a80496ac9b9da9d4  gcc/testsuite/g++.dg/lto/pr66180_1.C
  d3e7b46b355042e3d34530ae665a29e7  gcc/testsuite/g++.dg/lto/pr66705_0.C
*************** d3e7b46b355042e3d34530ae665a29e7  gcc/te
*** 15107,15118 ****
  5748c2ff2beb245a338157902d112fcc  gcc/testsuite/g++.dg/lto/pr68057_1.C
  a906e9ac6ff41e130a51cb0c7fa2ba56  gcc/testsuite/g++.dg/lto/pr68811_0.C
  45a1c1681ed7babc4c0d7ed64abcfe54  gcc/testsuite/g++.dg/lto/pr68811_1.C
! 2e716bc82661d5481fbc2d08dce1aebf  gcc/testsuite/g++.dg/lto/pr69077_0.C
  4e5a7e315e05c001411d02f923487610  gcc/testsuite/g++.dg/lto/pr69077_1.C
  11b7d69cfefec9d26ec290efdce4cddc  gcc/testsuite/g++.dg/lto/pr69133_0.C
  ef5a2536eb458f4c1bb26650ac8cf4bc  gcc/testsuite/g++.dg/lto/pr69133_1.C
  c96eb51fa2b7024612260c2b5bf7e61e  gcc/testsuite/g++.dg/lto/pr69137_0.C
! 43155753aa80a487513ef808cb357408  gcc/testsuite/g++.dg/lto/pr69589_0.C
  028ec5371a2f90aff6959986ad96b4a2  gcc/testsuite/g++.dg/lto/pr69589_1.C
  6b7544922085b3acc5747d6df94b222d  gcc/testsuite/g++.dg/lto/pr69729_0.C
  05cf05186c134f22e9638fd8e1d67123  gcc/testsuite/g++.dg/lto/pr70029_0.C
--- 15975,15986 ----
  5748c2ff2beb245a338157902d112fcc  gcc/testsuite/g++.dg/lto/pr68057_1.C
  a906e9ac6ff41e130a51cb0c7fa2ba56  gcc/testsuite/g++.dg/lto/pr68811_0.C
  45a1c1681ed7babc4c0d7ed64abcfe54  gcc/testsuite/g++.dg/lto/pr68811_1.C
! 3972c907526cd14f3554d0f9a872bcbb  gcc/testsuite/g++.dg/lto/pr69077_0.C
  4e5a7e315e05c001411d02f923487610  gcc/testsuite/g++.dg/lto/pr69077_1.C
  11b7d69cfefec9d26ec290efdce4cddc  gcc/testsuite/g++.dg/lto/pr69133_0.C
  ef5a2536eb458f4c1bb26650ac8cf4bc  gcc/testsuite/g++.dg/lto/pr69133_1.C
  c96eb51fa2b7024612260c2b5bf7e61e  gcc/testsuite/g++.dg/lto/pr69137_0.C
! 0b1ba7de3018f084d19987c31bbb47e4  gcc/testsuite/g++.dg/lto/pr69589_0.C
  028ec5371a2f90aff6959986ad96b4a2  gcc/testsuite/g++.dg/lto/pr69589_1.C
  6b7544922085b3acc5747d6df94b222d  gcc/testsuite/g++.dg/lto/pr69729_0.C
  05cf05186c134f22e9638fd8e1d67123  gcc/testsuite/g++.dg/lto/pr70029_0.C
*************** e2b3ea5caae8976b182bb721752f096a  gcc/te
*** 15121,15132 ****
  0df24ac62f068ffd5beed7036417ff2a  gcc/testsuite/g++.dg/lto/pr79000_0.C
  96a285b9e00d7ac1bddf1aa2d1737651  gcc/testsuite/g++.dg/lto/pr79000_1.c
  cbabc80851a14f5ce9acf898d69e0c56  gcc/testsuite/g++.dg/lto/pr79050_0.C
! 4bbc885712e742abd4ad37dc45dcaa4f  gcc/testsuite/g++.dg/lto/pr79671_0.C
  2b83a5f8260536dd9d7e43db9852168b  gcc/testsuite/g++.dg/lto/pr79671_1.c
  e818718060d8a56058024842b3c50923  gcc/testsuite/g++.dg/lto/pr80287_0.C
  624412255e2abaa13ccef9a7f1504fff  gcc/testsuite/g++.dg/lto/pr82027_0.C
  6232508298dd20a759cf64fffbca9f5e  gcc/testsuite/g++.dg/lto/v1-plugin-api-not-supported_0.C
! 80450d00a25790eac61041efe3b30bc0  gcc/testsuite/g++.dg/opt/20050511-1.C
  960bd912d3dccb44df0ecdebdfd45b44  gcc/testsuite/g++.dg/opt/alias1.C
  15bcb0db43b0a7c6f0b1a4ff014da35d  gcc/testsuite/g++.dg/opt/alias2.C
  91fe29b9b1f08a3ca87595896db03497  gcc/testsuite/g++.dg/opt/alias3.C
--- 15989,16015 ----
  0df24ac62f068ffd5beed7036417ff2a  gcc/testsuite/g++.dg/lto/pr79000_0.C
  96a285b9e00d7ac1bddf1aa2d1737651  gcc/testsuite/g++.dg/lto/pr79000_1.c
  cbabc80851a14f5ce9acf898d69e0c56  gcc/testsuite/g++.dg/lto/pr79050_0.C
! fc5790b972183d141230e551e9de78a5  gcc/testsuite/g++.dg/lto/pr79671_0.C
  2b83a5f8260536dd9d7e43db9852168b  gcc/testsuite/g++.dg/lto/pr79671_1.c
  e818718060d8a56058024842b3c50923  gcc/testsuite/g++.dg/lto/pr80287_0.C
+ 8ea04b6e1c5597dab5b2b27428b2ce44  gcc/testsuite/g++.dg/lto/pr81940_0.C
  624412255e2abaa13ccef9a7f1504fff  gcc/testsuite/g++.dg/lto/pr82027_0.C
+ 54baa4b9b6d57d56799e3b3555ffb066  gcc/testsuite/g++.dg/lto/pr82414_0.C
+ c69ee89888cbc8e3a690a9c93e2f0082  gcc/testsuite/g++.dg/lto/pr83121_0.C
+ 6181d611dccf43a1ef7f9931a589ab56  gcc/testsuite/g++.dg/lto/pr83121_1.C
+ cb140aa61ce4e8a75857f74f9d856da8  gcc/testsuite/g++.dg/lto/pr83720_0.C
+ e3daa9f14dc88835a0e5430bd33808fb  gcc/testsuite/g++.dg/lto/pr84805_0.C
+ cabbc31500c1d9b5cffa608e7b85679a  gcc/testsuite/g++.dg/lto/pr84805_1.C
+ 9e331b6a573e4b616f77b2582f99b74e  gcc/testsuite/g++.dg/lto/pr84805_2.C
+ 145196ca63a768693044e28dcf9e9cba  gcc/testsuite/g++.dg/lto/pr85176_0.C
+ d2d6a19df03db27bf00901c7a776d305  gcc/testsuite/g++.dg/lto/pr85405_0.C
+ 6b08241fbab2563ac1bc2b6838307d72  gcc/testsuite/g++.dg/lto/pr85405_1.C
+ 1cac4417f351a7fed067e5539b2a4f31  gcc/testsuite/g++.dg/lto/pr85405b_0.C
+ 0051c9fd0ba3fb295cd8157d5fc9437e  gcc/testsuite/g++.dg/lto/pr85405b_1.C
  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
! 31719b284ce99aff2f67474fd71f79cb  gcc/testsuite/g++.dg/opt/20050511-1.C
  960bd912d3dccb44df0ecdebdfd45b44  gcc/testsuite/g++.dg/opt/alias1.C
  15bcb0db43b0a7c6f0b1a4ff014da35d  gcc/testsuite/g++.dg/opt/alias2.C
  91fe29b9b1f08a3ca87595896db03497  gcc/testsuite/g++.dg/opt/alias3.C
*************** edb10b502f24cdcc3e2d6bd03834f453  gcc/te
*** 15150,15159 ****
  2bb81d8b4e035fe5f91ce41ef3284779  gcc/testsuite/g++.dg/opt/cfg4.C
  034e3a731866a70219217679e6573190  gcc/testsuite/g++.dg/opt/cfg5.C
  fb4da9867fcb6f2d50834331b8bd01b9  gcc/testsuite/g++.dg/opt/cleanup1.C
! 4c5c1322525d537f6a720c477ae94f1d  gcc/testsuite/g++.dg/opt/combine.C
  36372e9d039276c581f0a32167271310  gcc/testsuite/g++.dg/opt/complex1.C
  816200fa31222cb98232ecde51a545be  gcc/testsuite/g++.dg/opt/complex2.C
! 35877c00cc48159fa11634f3321a6100  gcc/testsuite/g++.dg/opt/complex3.C
  8a5a897536e97520b29744f3237bd4fd  gcc/testsuite/g++.dg/opt/complex4.C
  32b59098b47ea537d04c0f7e24c564c7  gcc/testsuite/g++.dg/opt/complex5.C
  79a8ff3d5e28ed60376952929be393ed  gcc/testsuite/g++.dg/opt/complex6.C
--- 16033,16042 ----
  2bb81d8b4e035fe5f91ce41ef3284779  gcc/testsuite/g++.dg/opt/cfg4.C
  034e3a731866a70219217679e6573190  gcc/testsuite/g++.dg/opt/cfg5.C
  fb4da9867fcb6f2d50834331b8bd01b9  gcc/testsuite/g++.dg/opt/cleanup1.C
! 05e162944e64970638bf956bacf25f27  gcc/testsuite/g++.dg/opt/combine.C
  36372e9d039276c581f0a32167271310  gcc/testsuite/g++.dg/opt/complex1.C
  816200fa31222cb98232ecde51a545be  gcc/testsuite/g++.dg/opt/complex2.C
! 759798ef0cce3558088fe7255fcc8f80  gcc/testsuite/g++.dg/opt/complex3.C
  8a5a897536e97520b29744f3237bd4fd  gcc/testsuite/g++.dg/opt/complex4.C
  32b59098b47ea537d04c0f7e24c564c7  gcc/testsuite/g++.dg/opt/complex5.C
  79a8ff3d5e28ed60376952929be393ed  gcc/testsuite/g++.dg/opt/complex6.C
*************** b879c3972fcf09a0bef4781d973dea10  gcc/te
*** 15163,15174 ****
  14ee709f09c311be02b0626ca4909c28  gcc/testsuite/g++.dg/opt/conj2.C
  815190a461caeca9af90923572df6303  gcc/testsuite/g++.dg/opt/const1.C
  4bcc868b38c719f7e50e39d9f302169b  gcc/testsuite/g++.dg/opt/const2.C
! 45fe728a90ca30ef5afd18351211d63f  gcc/testsuite/g++.dg/opt/const3.C
  6b2e1cf4863e58457238c73c49085813  gcc/testsuite/g++.dg/opt/const4.C
  8acf967b641c44d3b713b18abd459981  gcc/testsuite/g++.dg/opt/const5.C
  77ef3f0315a1d75cc03361805c714b79  gcc/testsuite/g++.dg/opt/const6.C
  8a6577c2e8b91d69c2d55b8ed2488fc8  gcc/testsuite/g++.dg/opt/copysign-1.C
! fe3330f4dcc4be90e5790ce38f643df9  gcc/testsuite/g++.dg/opt/covariant1.C
  2b8e568482a37c0e98a0154aa649f58b  gcc/testsuite/g++.dg/opt/crash1.C
  ac103794722418c1c77100ecd74c066e  gcc/testsuite/g++.dg/opt/crossjump1.C
  e98c78fcaf089947f989361b38fdf935  gcc/testsuite/g++.dg/opt/cse1.C
--- 16046,16057 ----
  14ee709f09c311be02b0626ca4909c28  gcc/testsuite/g++.dg/opt/conj2.C
  815190a461caeca9af90923572df6303  gcc/testsuite/g++.dg/opt/const1.C
  4bcc868b38c719f7e50e39d9f302169b  gcc/testsuite/g++.dg/opt/const2.C
! 9ccc1a8633e5cf3c51fd3491baa248ec  gcc/testsuite/g++.dg/opt/const3.C
  6b2e1cf4863e58457238c73c49085813  gcc/testsuite/g++.dg/opt/const4.C
  8acf967b641c44d3b713b18abd459981  gcc/testsuite/g++.dg/opt/const5.C
  77ef3f0315a1d75cc03361805c714b79  gcc/testsuite/g++.dg/opt/const6.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
  ac103794722418c1c77100ecd74c066e  gcc/testsuite/g++.dg/opt/crossjump1.C
  e98c78fcaf089947f989361b38fdf935  gcc/testsuite/g++.dg/opt/cse1.C
*************** e98c78fcaf089947f989361b38fdf935  gcc/te
*** 15176,15182 ****
  110fc27204a84af6a62744d613b30944  gcc/testsuite/g++.dg/opt/cse3.C
  da545b524f9533548787d2126af2b0ea  gcc/testsuite/g++.dg/opt/declone1.C
  50ee927cf6fe85c47d711d0cc9801ad4  gcc/testsuite/g++.dg/opt/declone2.C
! 15e35dc4134a967e8f7f288f2c40df31  gcc/testsuite/g++.dg/opt/declone3.C
  903860d0fe2a846a5f1ee14453b38348  gcc/testsuite/g++.dg/opt/delay-slot-1.C
  fc3765afbe4eece1e37074054bfbd3e4  gcc/testsuite/g++.dg/opt/devirt1.C
  7cb068437fa856224557f1c6ec473a59  gcc/testsuite/g++.dg/opt/devirt2.C
--- 16059,16065 ----
  110fc27204a84af6a62744d613b30944  gcc/testsuite/g++.dg/opt/cse3.C
  da545b524f9533548787d2126af2b0ea  gcc/testsuite/g++.dg/opt/declone1.C
  50ee927cf6fe85c47d711d0cc9801ad4  gcc/testsuite/g++.dg/opt/declone2.C
! 84173a62fffb1c226cc2366902d47a65  gcc/testsuite/g++.dg/opt/declone3.C
  903860d0fe2a846a5f1ee14453b38348  gcc/testsuite/g++.dg/opt/delay-slot-1.C
  fc3765afbe4eece1e37074054bfbd3e4  gcc/testsuite/g++.dg/opt/devirt1.C
  7cb068437fa856224557f1c6ec473a59  gcc/testsuite/g++.dg/opt/devirt2.C
*************** b38ce2cc80cbd8da836a5faae6d33aff  gcc/te
*** 15191,15197 ****
  76e33d670a50db6c3e799393d2903f1b  gcc/testsuite/g++.dg/opt/dtor4-aux.cc
  901c1f4a3e8f81d1bc0f7a633ce9b6be  gcc/testsuite/g++.dg/opt/dtor4.C
  1224352d3dfac75031ae528b98238fad  gcc/testsuite/g++.dg/opt/dtor4.h
! 30b792e4d15f2273ee8d942e4a84c83f  gcc/testsuite/g++.dg/opt/dump1.C
  c59d630e23488d9f894a7904300cdd96  gcc/testsuite/g++.dg/opt/eh1.C
  4bc90d9400a86fd4bca87067006586da  gcc/testsuite/g++.dg/opt/eh2.C
  18b23691d6af0cdfab89ec422af1cdb1  gcc/testsuite/g++.dg/opt/eh3.C
--- 16074,16080 ----
  76e33d670a50db6c3e799393d2903f1b  gcc/testsuite/g++.dg/opt/dtor4-aux.cc
  901c1f4a3e8f81d1bc0f7a633ce9b6be  gcc/testsuite/g++.dg/opt/dtor4.C
  1224352d3dfac75031ae528b98238fad  gcc/testsuite/g++.dg/opt/dtor4.h
! 43e1e5c7810d0d20260882a98999c1ba  gcc/testsuite/g++.dg/opt/dump1.C
  c59d630e23488d9f894a7904300cdd96  gcc/testsuite/g++.dg/opt/eh1.C
  4bc90d9400a86fd4bca87067006586da  gcc/testsuite/g++.dg/opt/eh2.C
  18b23691d6af0cdfab89ec422af1cdb1  gcc/testsuite/g++.dg/opt/eh3.C
*************** ff5f8554e631ad4fefd7b89cfd16687b  gcc/te
*** 15223,15229 ****
  e0f42268d9f567a319e38d1af1fc885e  gcc/testsuite/g++.dg/opt/inline11.C
  ade9d860b214762222f5c8cd67008323  gcc/testsuite/g++.dg/opt/inline12.C
  7c12c52511f9ae9beae48523e9c4fa71  gcc/testsuite/g++.dg/opt/inline14.C
! 94c2ba91c95ed4edb0b97cb3f10be68f  gcc/testsuite/g++.dg/opt/inline15.C
  c36b321ffd275d0b9d28d12713461fdf  gcc/testsuite/g++.dg/opt/inline16.C
  cfc81ef50ab578f9a0fd645a9c7b45b6  gcc/testsuite/g++.dg/opt/inline17.C
  bdb061ce93c83db85373f2347c9ecdf0  gcc/testsuite/g++.dg/opt/inline2.C
--- 16106,16112 ----
  e0f42268d9f567a319e38d1af1fc885e  gcc/testsuite/g++.dg/opt/inline11.C
  ade9d860b214762222f5c8cd67008323  gcc/testsuite/g++.dg/opt/inline12.C
  7c12c52511f9ae9beae48523e9c4fa71  gcc/testsuite/g++.dg/opt/inline14.C
! 54c4b873b097092d3e90b8ad85658695  gcc/testsuite/g++.dg/opt/inline15.C
  c36b321ffd275d0b9d28d12713461fdf  gcc/testsuite/g++.dg/opt/inline16.C
  cfc81ef50ab578f9a0fd645a9c7b45b6  gcc/testsuite/g++.dg/opt/inline17.C
  bdb061ce93c83db85373f2347c9ecdf0  gcc/testsuite/g++.dg/opt/inline2.C
*************** b7cb98f473e1920797490085dbf7bb94  gcc/te
*** 15240,15255 ****
  1ac038665b7965caf38f2ddc0a55b918  gcc/testsuite/g++.dg/opt/interface2.C
  147890dfec6e1cbd6d1bb8385a3ca1e0  gcc/testsuite/g++.dg/opt/interface2.h
  d3914504bba83652fe1a238821c3dea2  gcc/testsuite/g++.dg/opt/life1.C
! 83a82f683c2ef38a1d683e0c8055bded  gcc/testsuite/g++.dg/opt/local1.C
  74049e3e36b5fbdab2f271b70320a6d8  gcc/testsuite/g++.dg/opt/longbranch1.C
  e540aa71efce6288790e26442c56b78e  gcc/testsuite/g++.dg/opt/longbranch2.C
  7138258a897096adae7238a76c0f3756  gcc/testsuite/g++.dg/opt/loop1.C
  c11dcb63c226e2ccd7df1403d7c85717  gcc/testsuite/g++.dg/opt/loop2.C
! 1b18a553be0ca815c51124ff00d6668f  gcc/testsuite/g++.dg/opt/memcpy1.C
  7f1c978b1a5b6150f90040d9f4d954fb  gcc/testsuite/g++.dg/opt/mmx1.C
  88e99b8c59ed29dc8cf42de21a90ef82  gcc/testsuite/g++.dg/opt/mmx2.C
! 0283a838e012e953c0cd443e6bafc313  gcc/testsuite/g++.dg/opt/new1.C
! ad7c55fa7dcd9911d6664e80f7d3aa9d  gcc/testsuite/g++.dg/opt/noreturn-1.C
  25116c5b072e5f10df5bd837649e0e1d  gcc/testsuite/g++.dg/opt/nothrow1.C
  835771d4b580573ed930662d2b25babf  gcc/testsuite/g++.dg/opt/nrv1.C
  40b7f29b2dd16f80e4119778fc7d06f4  gcc/testsuite/g++.dg/opt/nrv10.C
--- 16123,16138 ----
  1ac038665b7965caf38f2ddc0a55b918  gcc/testsuite/g++.dg/opt/interface2.C
  147890dfec6e1cbd6d1bb8385a3ca1e0  gcc/testsuite/g++.dg/opt/interface2.h
  d3914504bba83652fe1a238821c3dea2  gcc/testsuite/g++.dg/opt/life1.C
! e9d20e766af5e3640a5fe827cb945f15  gcc/testsuite/g++.dg/opt/local1.C
  74049e3e36b5fbdab2f271b70320a6d8  gcc/testsuite/g++.dg/opt/longbranch1.C
  e540aa71efce6288790e26442c56b78e  gcc/testsuite/g++.dg/opt/longbranch2.C
  7138258a897096adae7238a76c0f3756  gcc/testsuite/g++.dg/opt/loop1.C
  c11dcb63c226e2ccd7df1403d7c85717  gcc/testsuite/g++.dg/opt/loop2.C
! 90febc6414b3cbbc02d2ed87a9043b2d  gcc/testsuite/g++.dg/opt/memcpy1.C
  7f1c978b1a5b6150f90040d9f4d954fb  gcc/testsuite/g++.dg/opt/mmx1.C
  88e99b8c59ed29dc8cf42de21a90ef82  gcc/testsuite/g++.dg/opt/mmx2.C
! 920ff5ca5b8524e1c39af98faca027a3  gcc/testsuite/g++.dg/opt/new1.C
! 308684750b3331a0bd4600b55958faea  gcc/testsuite/g++.dg/opt/noreturn-1.C
  25116c5b072e5f10df5bd837649e0e1d  gcc/testsuite/g++.dg/opt/nothrow1.C
  835771d4b580573ed930662d2b25babf  gcc/testsuite/g++.dg/opt/nrv1.C
  40b7f29b2dd16f80e4119778fc7d06f4  gcc/testsuite/g++.dg/opt/nrv10.C
*************** f527f51fa4c8b92a4d9374e96752d73a  gcc/te
*** 15261,15273 ****
  e94377182a1dedb230f53db874897364  gcc/testsuite/g++.dg/opt/nrv16.C
  3bf30be38f5aa46b2a1c3f22d55000d4  gcc/testsuite/g++.dg/opt/nrv17.C
  3a570f71e0d06b55d991f8cab4b017d2  gcc/testsuite/g++.dg/opt/nrv18.C
  360692bdb55de35cb68717ceb6c51fd7  gcc/testsuite/g++.dg/opt/nrv2.C
  42adcc800d5d2029a2b831e1453e8f32  gcc/testsuite/g++.dg/opt/nrv3.C
  b2773b15109a2fc43572a97edf29b236  gcc/testsuite/g++.dg/opt/nrv4.C
  13481653ab41a707cb4c4eed2199c57f  gcc/testsuite/g++.dg/opt/nrv5.C
  cc4e1f139fd98494395c4313684fa753  gcc/testsuite/g++.dg/opt/nrv6.C
  b16ae5b90244df2461a7c023c7f3c88e  gcc/testsuite/g++.dg/opt/nrv7.C
! 77ca072679abe601d84a3ad8e00d99d2  gcc/testsuite/g++.dg/opt/nrv8.C
  572452f9faebdba95cc03bfba39f6879  gcc/testsuite/g++.dg/opt/nrv9.C
  5778a352c750259fe850421e364893fa  gcc/testsuite/g++.dg/opt/operator1.C
  1b20239db4498d5cce85a900755fb433  gcc/testsuite/g++.dg/opt/placeholder1.C
--- 16144,16157 ----
  e94377182a1dedb230f53db874897364  gcc/testsuite/g++.dg/opt/nrv16.C
  3bf30be38f5aa46b2a1c3f22d55000d4  gcc/testsuite/g++.dg/opt/nrv17.C
  3a570f71e0d06b55d991f8cab4b017d2  gcc/testsuite/g++.dg/opt/nrv18.C
+ b5ea3678b95f88606bb0d37ee1f58a68  gcc/testsuite/g++.dg/opt/nrv19.C
  360692bdb55de35cb68717ceb6c51fd7  gcc/testsuite/g++.dg/opt/nrv2.C
  42adcc800d5d2029a2b831e1453e8f32  gcc/testsuite/g++.dg/opt/nrv3.C
  b2773b15109a2fc43572a97edf29b236  gcc/testsuite/g++.dg/opt/nrv4.C
  13481653ab41a707cb4c4eed2199c57f  gcc/testsuite/g++.dg/opt/nrv5.C
  cc4e1f139fd98494395c4313684fa753  gcc/testsuite/g++.dg/opt/nrv6.C
  b16ae5b90244df2461a7c023c7f3c88e  gcc/testsuite/g++.dg/opt/nrv7.C
! 9c5e38c55eeddc0823123dbfd92e48e8  gcc/testsuite/g++.dg/opt/nrv8.C
  572452f9faebdba95cc03bfba39f6879  gcc/testsuite/g++.dg/opt/nrv9.C
  5778a352c750259fe850421e364893fa  gcc/testsuite/g++.dg/opt/operator1.C
  1b20239db4498d5cce85a900755fb433  gcc/testsuite/g++.dg/opt/placeholder1.C
*************** fbf4a598c8089049715d4d2af8e480b8  gcc/te
*** 15307,15313 ****
  4acbed4cf8581a600838d225b2b0fc01  gcc/testsuite/g++.dg/opt/pr20995-1.C
  395e10896a3d5235a8f3f2b9d6ad4cc7  gcc/testsuite/g++.dg/opt/pr22167.C
  5b3e2f8cbfc0d9247561a93b1028c186  gcc/testsuite/g++.dg/opt/pr23056.C
! 8649f7896552ca6fbd94cc9825bd264c  gcc/testsuite/g++.dg/opt/pr23299.C
  a12583fb7689d3edb82c8b5608aa5239  gcc/testsuite/g++.dg/opt/pr23372.C
  baed609f35505fe831c1cfc4973e2331  gcc/testsuite/g++.dg/opt/pr23454-2.C
  6b44bd46dbabf935a497942dd88a002b  gcc/testsuite/g++.dg/opt/pr23454.C
--- 16191,16197 ----
  4acbed4cf8581a600838d225b2b0fc01  gcc/testsuite/g++.dg/opt/pr20995-1.C
  395e10896a3d5235a8f3f2b9d6ad4cc7  gcc/testsuite/g++.dg/opt/pr22167.C
  5b3e2f8cbfc0d9247561a93b1028c186  gcc/testsuite/g++.dg/opt/pr23056.C
! a5238f7f96a848eb5f8179130b8375c0  gcc/testsuite/g++.dg/opt/pr23299.C
  a12583fb7689d3edb82c8b5608aa5239  gcc/testsuite/g++.dg/opt/pr23372.C
  baed609f35505fe831c1cfc4973e2331  gcc/testsuite/g++.dg/opt/pr23454-2.C
  6b44bd46dbabf935a497942dd88a002b  gcc/testsuite/g++.dg/opt/pr23454.C
*************** be8e681aa55392ab8d418d91b64c3d0a  gcc/te
*** 15318,15324 ****
  ca5cdb74119d9bef0cb07e16f7c3c88e  gcc/testsuite/g++.dg/opt/pr25005.C
  46204dbd322cbbcf824c37d22442fd47  gcc/testsuite/g++.dg/opt/pr25857.C
  9590b7328fb217704747cb8432db6f9e  gcc/testsuite/g++.dg/opt/pr26179.C
! f29c0bb6b9b69984ecfcac1439154146  gcc/testsuite/g++.dg/opt/pr27826.C
  fab88c0645bc906fcbd7a8fc1c71987b  gcc/testsuite/g++.dg/opt/pr28116.C
  547e4433462a6d07971ee26bc624a941  gcc/testsuite/g++.dg/opt/pr30590.C
  833a6f14703da3525c9c9f80d2de7dfe  gcc/testsuite/g++.dg/opt/pr30965.C
--- 16202,16208 ----
  ca5cdb74119d9bef0cb07e16f7c3c88e  gcc/testsuite/g++.dg/opt/pr25005.C
  46204dbd322cbbcf824c37d22442fd47  gcc/testsuite/g++.dg/opt/pr25857.C
  9590b7328fb217704747cb8432db6f9e  gcc/testsuite/g++.dg/opt/pr26179.C
! a14d9fe93da583646bae33534e888ae6  gcc/testsuite/g++.dg/opt/pr27826.C
  fab88c0645bc906fcbd7a8fc1c71987b  gcc/testsuite/g++.dg/opt/pr28116.C
  547e4433462a6d07971ee26bc624a941  gcc/testsuite/g++.dg/opt/pr30590.C
  833a6f14703da3525c9c9f80d2de7dfe  gcc/testsuite/g++.dg/opt/pr30965.C
*************** d6a356e006ceb7cfd944f66314b28fac  gcc/te
*** 15332,15348 ****
  5932b660e4368861f26ec5f7e1c980d4  gcc/testsuite/g++.dg/opt/pr42295.C
  6d1e020d4984faabf203c22b44e746bb  gcc/testsuite/g++.dg/opt/pr42508.C
  8bc8beae0a0e34141223a7ef500c655b  gcc/testsuite/g++.dg/opt/pr43655.C
! c36f1c24a709dca5ce23938bf3f64154  gcc/testsuite/g++.dg/opt/pr44919.C
  144f6e4897f5aeb63b6da39909c71ed9  gcc/testsuite/g++.dg/opt/pr45316.C
  6cc5ee8ac3179431ed53016627f5f5e8  gcc/testsuite/g++.dg/opt/pr45412.C
! 77afe79533e37d0fc38d14fc8e03ee4d  gcc/testsuite/g++.dg/opt/pr46640.C
  a16d353b041e86feb28f12b266aeadab  gcc/testsuite/g++.dg/opt/pr46649.C
  6d0b610fcb163b0324355022a3aa7006  gcc/testsuite/g++.dg/opt/pr46864.C
  764e47a627895c3a707fecd52c77f95c  gcc/testsuite/g++.dg/opt/pr47036.C
  795f414b8075cb07e338e90313b07d50  gcc/testsuite/g++.dg/opt/pr47280.C
  f3354bc934b81b5fc93ff5fd02c9dc9a  gcc/testsuite/g++.dg/opt/pr47355.C
  ce12e27bbb9344379eb93fb80a67ab97  gcc/testsuite/g++.dg/opt/pr47366.C
! fd419d4d9d8080fd90184e5cdd9618a6  gcc/testsuite/g++.dg/opt/pr47615.C
  32b9348acc365a25c1e63908184a61bc  gcc/testsuite/g++.dg/opt/pr47632.C
  33506a150063a0e5ef4bd82b202852d9  gcc/testsuite/g++.dg/opt/pr47639.c
  16fdb00e82f91a3d2db5392bf143a395  gcc/testsuite/g++.dg/opt/pr48272.C
--- 16216,16232 ----
  5932b660e4368861f26ec5f7e1c980d4  gcc/testsuite/g++.dg/opt/pr42295.C
  6d1e020d4984faabf203c22b44e746bb  gcc/testsuite/g++.dg/opt/pr42508.C
  8bc8beae0a0e34141223a7ef500c655b  gcc/testsuite/g++.dg/opt/pr43655.C
! cd0c9d7e5a29f6757712fcd93472d70a  gcc/testsuite/g++.dg/opt/pr44919.C
  144f6e4897f5aeb63b6da39909c71ed9  gcc/testsuite/g++.dg/opt/pr45316.C
  6cc5ee8ac3179431ed53016627f5f5e8  gcc/testsuite/g++.dg/opt/pr45412.C
! 984c2716bb788c7268aa480a2ad92114  gcc/testsuite/g++.dg/opt/pr46640.C
  a16d353b041e86feb28f12b266aeadab  gcc/testsuite/g++.dg/opt/pr46649.C
  6d0b610fcb163b0324355022a3aa7006  gcc/testsuite/g++.dg/opt/pr46864.C
  764e47a627895c3a707fecd52c77f95c  gcc/testsuite/g++.dg/opt/pr47036.C
  795f414b8075cb07e338e90313b07d50  gcc/testsuite/g++.dg/opt/pr47280.C
  f3354bc934b81b5fc93ff5fd02c9dc9a  gcc/testsuite/g++.dg/opt/pr47355.C
  ce12e27bbb9344379eb93fb80a67ab97  gcc/testsuite/g++.dg/opt/pr47366.C
! 92057859bd751fa0758c95c78f0015b7  gcc/testsuite/g++.dg/opt/pr47615.C
  32b9348acc365a25c1e63908184a61bc  gcc/testsuite/g++.dg/opt/pr47632.C
  33506a150063a0e5ef4bd82b202852d9  gcc/testsuite/g++.dg/opt/pr47639.c
  16fdb00e82f91a3d2db5392bf143a395  gcc/testsuite/g++.dg/opt/pr48272.C
*************** dd86735f0679bdb2fc27bf6f589696ee  gcc/te
*** 15368,15374 ****
  fe9b6c3dabf0ae1d3eb188f56c992822  gcc/testsuite/g++.dg/opt/pr55081.C
  085e0397f9e2df3105230ab5abb3ba77  gcc/testsuite/g++.dg/opt/pr55137.C
  18dd1a114766366695a4ed34bf5f0741  gcc/testsuite/g++.dg/opt/pr55281.C
! 5ceb3796e4e19b825a620ea053ac62ba  gcc/testsuite/g++.dg/opt/pr55329.C
  eb316460089208481c6b3e5a0c34a90a  gcc/testsuite/g++.dg/opt/pr55331.C
  7057b0c0d36c90d59e489132e8fff3fe  gcc/testsuite/g++.dg/opt/pr55717.C
  a11366306b88724f9bb36fdef806b6bd  gcc/testsuite/g++.dg/opt/pr56381.C
--- 16252,16258 ----
  fe9b6c3dabf0ae1d3eb188f56c992822  gcc/testsuite/g++.dg/opt/pr55081.C
  085e0397f9e2df3105230ab5abb3ba77  gcc/testsuite/g++.dg/opt/pr55137.C
  18dd1a114766366695a4ed34bf5f0741  gcc/testsuite/g++.dg/opt/pr55281.C
! f555a4552399a1314507b7d9744f7eef  gcc/testsuite/g++.dg/opt/pr55329.C
  eb316460089208481c6b3e5a0c34a90a  gcc/testsuite/g++.dg/opt/pr55331.C
  7057b0c0d36c90d59e489132e8fff3fe  gcc/testsuite/g++.dg/opt/pr55717.C
  a11366306b88724f9bb36fdef806b6bd  gcc/testsuite/g++.dg/opt/pr56381.C
*************** b5c6104c29743bbd0bba0fb8c0978bd7  gcc/te
*** 15386,15405 ****
  7082104016064ee6200d6730eea70645  gcc/testsuite/g++.dg/opt/pr59622.C
  658809bc6695a7036a3aa07912cf983c  gcc/testsuite/g++.dg/opt/pr59647.C
  bc581baefa9c2cdf340c7afe5ec42620  gcc/testsuite/g++.dg/opt/pr59947.C
! 73b065dd489230906982667e1f515591  gcc/testsuite/g++.dg/opt/pr60002.C
  e676633b5d90b99891eacfad5d4d65cc  gcc/testsuite/g++.dg/opt/pr60597.C
  cd9ce81573f1dd55ed9926ad0afbe423  gcc/testsuite/g++.dg/opt/pr60849.C
  2ca5ee004fc73e412a39de0dd38e1b4c  gcc/testsuite/g++.dg/opt/pr60912.C
! b1b3a2b530cb188994df8ef142ab9234  gcc/testsuite/g++.dg/opt/pr61456.C
  6cfd7f0d8649e554551af4ecdbfa227e  gcc/testsuite/g++.dg/opt/pr61654.C
  605b35864e90bc674d9bcccd823e0ad7  gcc/testsuite/g++.dg/opt/pr62078.C
  8aeb5ff713ad724762a1f8ee5d01ab93  gcc/testsuite/g++.dg/opt/pr62146.C
  70b8c5fe5271089bc9d959cdb9d64688  gcc/testsuite/g++.dg/opt/pr64338.C
  f69ba555897c04c22d5a97c185b87599  gcc/testsuite/g++.dg/opt/pr64411.C
! b3fd32be5a07b210505cb3d2d0e6a9b0  gcc/testsuite/g++.dg/opt/pr65003.C
  b945a12f6d1f23ffaf6b58c4a52a828d  gcc/testsuite/g++.dg/opt/pr65074.C
  12eb0915d4b7275f1bc0c55a27fe5a16  gcc/testsuite/g++.dg/opt/pr65105-4.C
! e708379bf11fe954ea2bc5e1022d2001  gcc/testsuite/g++.dg/opt/pr65554.C
  1f05fd8d5f292e5b40aac5acf70980a2  gcc/testsuite/g++.dg/opt/pr66119.C
  ac2356162f00cd5e8804482480f1795a  gcc/testsuite/g++.dg/opt/pr6713.C
  ddd0cdc94ae2b3fb5f1da01082f09677  gcc/testsuite/g++.dg/opt/pr68157.C
--- 16270,16289 ----
  7082104016064ee6200d6730eea70645  gcc/testsuite/g++.dg/opt/pr59622.C
  658809bc6695a7036a3aa07912cf983c  gcc/testsuite/g++.dg/opt/pr59647.C
  bc581baefa9c2cdf340c7afe5ec42620  gcc/testsuite/g++.dg/opt/pr59947.C
! 391fc482d13050956c9c3db1a62c7cc4  gcc/testsuite/g++.dg/opt/pr60002.C
  e676633b5d90b99891eacfad5d4d65cc  gcc/testsuite/g++.dg/opt/pr60597.C
  cd9ce81573f1dd55ed9926ad0afbe423  gcc/testsuite/g++.dg/opt/pr60849.C
  2ca5ee004fc73e412a39de0dd38e1b4c  gcc/testsuite/g++.dg/opt/pr60912.C
! 08e7585d2d80f49eb43743bb5ae7f9f1  gcc/testsuite/g++.dg/opt/pr61456.C
  6cfd7f0d8649e554551af4ecdbfa227e  gcc/testsuite/g++.dg/opt/pr61654.C
  605b35864e90bc674d9bcccd823e0ad7  gcc/testsuite/g++.dg/opt/pr62078.C
  8aeb5ff713ad724762a1f8ee5d01ab93  gcc/testsuite/g++.dg/opt/pr62146.C
  70b8c5fe5271089bc9d959cdb9d64688  gcc/testsuite/g++.dg/opt/pr64338.C
  f69ba555897c04c22d5a97c185b87599  gcc/testsuite/g++.dg/opt/pr64411.C
! 64757e568a9c597885a2ba3732520fb6  gcc/testsuite/g++.dg/opt/pr65003.C
  b945a12f6d1f23ffaf6b58c4a52a828d  gcc/testsuite/g++.dg/opt/pr65074.C
  12eb0915d4b7275f1bc0c55a27fe5a16  gcc/testsuite/g++.dg/opt/pr65105-4.C
! adca6059edef581a7bc185d3c1cdb81d  gcc/testsuite/g++.dg/opt/pr65554.C
  1f05fd8d5f292e5b40aac5acf70980a2  gcc/testsuite/g++.dg/opt/pr66119.C
  ac2356162f00cd5e8804482480f1795a  gcc/testsuite/g++.dg/opt/pr6713.C
  ddd0cdc94ae2b3fb5f1da01082f09677  gcc/testsuite/g++.dg/opt/pr68157.C
*************** d9dcdebd2e533801353507a3a0763dba  gcc/te
*** 15408,15416 ****
  b3da8230dcce277c8f625318691e7b00  gcc/testsuite/g++.dg/opt/pr69175.C
  c4127c6a85a5245c22454473a56da2d4  gcc/testsuite/g++.dg/opt/pr69211.C
  1ab089b76d9babf3dc96eebadc69802a  gcc/testsuite/g++.dg/opt/pr69213.C
! e29a55caf33aeb69133015d020a5b160  gcc/testsuite/g++.dg/opt/pr69432.C
  8217c4bdb63e86984b3edf4b8851edde  gcc/testsuite/g++.dg/opt/pr69483.C
  94d20f2c91956792f6e4edf4de91a4b5  gcc/testsuite/g++.dg/opt/pr69570.C
  15ef9c580b57f8f2da5b72796fbc8693  gcc/testsuite/g++.dg/opt/pr70245-aux.cc
  3cc6fd0213a86e9af54303b476324b4f  gcc/testsuite/g++.dg/opt/pr70245.C
  3ca6d038cb6338c3f99ac2cf4bb8b829  gcc/testsuite/g++.dg/opt/pr70245.h
--- 16292,16301 ----
  b3da8230dcce277c8f625318691e7b00  gcc/testsuite/g++.dg/opt/pr69175.C
  c4127c6a85a5245c22454473a56da2d4  gcc/testsuite/g++.dg/opt/pr69211.C
  1ab089b76d9babf3dc96eebadc69802a  gcc/testsuite/g++.dg/opt/pr69213.C
! 6fc53b9bb1732aa5522e355f3cad7458  gcc/testsuite/g++.dg/opt/pr69432.C
  8217c4bdb63e86984b3edf4b8851edde  gcc/testsuite/g++.dg/opt/pr69483.C
  94d20f2c91956792f6e4edf4de91a4b5  gcc/testsuite/g++.dg/opt/pr69570.C
+ aba6f6f4f2c9553b2fdd08eabffcad59  gcc/testsuite/g++.dg/opt/pr70100.C
  15ef9c580b57f8f2da5b72796fbc8693  gcc/testsuite/g++.dg/opt/pr70245-aux.cc
  3cc6fd0213a86e9af54303b476324b4f  gcc/testsuite/g++.dg/opt/pr70245.C
  3ca6d038cb6338c3f99ac2cf4bb8b829  gcc/testsuite/g++.dg/opt/pr70245.h
*************** a380c45913d5ec3d5feed82fd2ba5c78  gcc/te
*** 15427,15449 ****
  f635f5c3eb615c7f94a708ab4fea5e47  gcc/testsuite/g++.dg/opt/pr71643.C
  90bdbfd9313461944756a9e9f01ce788  gcc/testsuite/g++.dg/opt/pr7503-1.C
  58cb76fcc2b144e9636ff71add09df4e  gcc/testsuite/g++.dg/opt/pr77844.C
! 2b6feebad4b0325edc22f61d348816ca  gcc/testsuite/g++.dg/opt/pr78201.C
! 01755f639353699f5b2ca77ad80febca  gcc/testsuite/g++.dg/opt/pr78373.C
  b8ca536d41e8477bd6c838e3069600de  gcc/testsuite/g++.dg/opt/pr78901.C
! 4b62fdd883db12cb5eca8e85001a63b2  gcc/testsuite/g++.dg/opt/pr79267.C
  23fbbe3312a22eb4c300b6e8552085cc  gcc/testsuite/g++.dg/opt/pr79396.C
  32c1eadc1681e4670392d028173d847d  gcc/testsuite/g++.dg/opt/pr79734.C
  3e5357caa2ef9ab338ddfecc3a357833  gcc/testsuite/g++.dg/opt/pr79805.C
  20c2c502d1d361bf9d054c354df3ea06  gcc/testsuite/g++.dg/opt/pr80032.C
  13b71144779d58d731a538c93535bbc5  gcc/testsuite/g++.dg/opt/pr80102.C
  82f0bf4cb38579cf06831526624b0a6e  gcc/testsuite/g++.dg/opt/pr80275.C
  3793c7fdebffcc14d6e627f6ab5cdb04  gcc/testsuite/g++.dg/opt/pr80385.C
! 6f2ff952423a3011c52cacf4acb601f1  gcc/testsuite/g++.dg/opt/pr80436.C
! 12e6719f4a43c5425eae5baaafce4ce0  gcc/testsuite/g++.dg/opt/pr82159-2.C
  2ef205fc60b004319bdd85aaab41122a  gcc/testsuite/g++.dg/opt/pr82159.C
  51275b1dfdc4bd6a07a6ff88ac8d81c3  gcc/testsuite/g++.dg/opt/pr83084.C
  ef14b1c0d0459097940d563471958957  gcc/testsuite/g++.dg/opt/pr83608.C
  58b650e9e9104f63b1cccbbef63a1887  gcc/testsuite/g++.dg/opt/pr83609.C
  1451eba24eea82cbd0c1ab87885c0f77  gcc/testsuite/g++.dg/opt/preinc1.C
  0841088f825be785d32663d712ecf675  gcc/testsuite/g++.dg/opt/ptrintsum1.C
  8ceccf2f02b3f64f372600e32148e146  gcc/testsuite/g++.dg/opt/ptrmem1.C
--- 16312,16347 ----
  f635f5c3eb615c7f94a708ab4fea5e47  gcc/testsuite/g++.dg/opt/pr71643.C
  90bdbfd9313461944756a9e9f01ce788  gcc/testsuite/g++.dg/opt/pr7503-1.C
  58cb76fcc2b144e9636ff71add09df4e  gcc/testsuite/g++.dg/opt/pr77844.C
! 66d50c67e8f64c992c151821ad52a1ca  gcc/testsuite/g++.dg/opt/pr78201.C
! f3dcf4259204b530cc008e72440bfe32  gcc/testsuite/g++.dg/opt/pr78373.C
  b8ca536d41e8477bd6c838e3069600de  gcc/testsuite/g++.dg/opt/pr78901.C
! 4aecaf86eb3f2b59e22e6b9a2883dad9  gcc/testsuite/g++.dg/opt/pr79085.C
! a9fbf233b631f1d45170b9aacad1f922  gcc/testsuite/g++.dg/opt/pr79267.C
  23fbbe3312a22eb4c300b6e8552085cc  gcc/testsuite/g++.dg/opt/pr79396.C
+ 3401f1326e3fc9f19347c72c6ff75e5b  gcc/testsuite/g++.dg/opt/pr79659.C
  32c1eadc1681e4670392d028173d847d  gcc/testsuite/g++.dg/opt/pr79734.C
  3e5357caa2ef9ab338ddfecc3a357833  gcc/testsuite/g++.dg/opt/pr79805.C
  20c2c502d1d361bf9d054c354df3ea06  gcc/testsuite/g++.dg/opt/pr80032.C
  13b71144779d58d731a538c93535bbc5  gcc/testsuite/g++.dg/opt/pr80102.C
  82f0bf4cb38579cf06831526624b0a6e  gcc/testsuite/g++.dg/opt/pr80275.C
  3793c7fdebffcc14d6e627f6ab5cdb04  gcc/testsuite/g++.dg/opt/pr80385.C
! 52414788e26085656539283064fe42d1  gcc/testsuite/g++.dg/opt/pr80436.C
! 2790fce2a0e9448ee4a7971cc6fb2063  gcc/testsuite/g++.dg/opt/pr81715.C
! 10c7a1569629659b172e9764c905a3bf  gcc/testsuite/g++.dg/opt/pr82159-2.C
  2ef205fc60b004319bdd85aaab41122a  gcc/testsuite/g++.dg/opt/pr82159.C
+ de2c75d60389e1ec0cbe062c8582d2d9  gcc/testsuite/g++.dg/opt/pr82577.C
+ d30ca1c821e579353187057dde122039  gcc/testsuite/g++.dg/opt/pr82778.C
+ 3b97830b162c62ccdbddf6d88cdf1f24  gcc/testsuite/g++.dg/opt/pr82929.C
  51275b1dfdc4bd6a07a6ff88ac8d81c3  gcc/testsuite/g++.dg/opt/pr83084.C
+ 8cabb24bb5cfadb17cb38af5c50fe4d5  gcc/testsuite/g++.dg/opt/pr83187.C
+ b46f0f265117f9ccf9240b43cc5d97a9  gcc/testsuite/g++.dg/opt/pr83252.C
+ 8bef6390b11d696847c415f0f5c23f9b  gcc/testsuite/g++.dg/opt/pr83555.C
  ef14b1c0d0459097940d563471958957  gcc/testsuite/g++.dg/opt/pr83608.C
  58b650e9e9104f63b1cccbbef63a1887  gcc/testsuite/g++.dg/opt/pr83609.C
+ b1f567104f98b61d3068d7b7f076ad11  gcc/testsuite/g++.dg/opt/pr84272.C
+ 0141330ed5da9040d3c1eb2279fd6786  gcc/testsuite/g++.dg/opt/pr85196.C
+ 6f3ad08af0bde9a7f6cd19695967eedd  gcc/testsuite/g++.dg/opt/pr85393-aux.cc
+ e7a93fead9e89e9926c6bc67249dc6b8  gcc/testsuite/g++.dg/opt/pr85393.C
  1451eba24eea82cbd0c1ab87885c0f77  gcc/testsuite/g++.dg/opt/preinc1.C
  0841088f825be785d32663d712ecf675  gcc/testsuite/g++.dg/opt/ptrintsum1.C
  8ceccf2f02b3f64f372600e32148e146  gcc/testsuite/g++.dg/opt/ptrmem1.C
*************** c4f8b2aee6bbe8bb7c04aa1a20ed7b46  gcc/te
*** 15495,15507 ****
  5e3168f684c89d164ae6dfad8cb14fda  gcc/testsuite/g++.dg/opt/vrp3-aux.cc
  e384e4ea7483339d564580401d2ca3ab  gcc/testsuite/g++.dg/opt/vrp3.C
  90556a78bbd104a3fbe7928607a64b50  gcc/testsuite/g++.dg/opt/vrp3.h
! 15f047443ce553e32ffca3e343b6ff53  gcc/testsuite/g++.dg/opt/vt1.C
  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
  6fee34d8b3b51c74ff33cdfe391ca591  gcc/testsuite/g++.dg/other/abstract1.C
! f08d1e182d4573cda49da8f5afb8ba41  gcc/testsuite/g++.dg/other/abstract2.C
  32f6a4ff28854973168944cb1ac27537  gcc/testsuite/g++.dg/other/abstract3.C
  7ac72c1e4cfd61c68a7528160187b2f0  gcc/testsuite/g++.dg/other/abstract4.C
  df81d021f1adcf8dae661aa394aa2a89  gcc/testsuite/g++.dg/other/abstract5.C
--- 16393,16405 ----
  5e3168f684c89d164ae6dfad8cb14fda  gcc/testsuite/g++.dg/opt/vrp3-aux.cc
  e384e4ea7483339d564580401d2ca3ab  gcc/testsuite/g++.dg/opt/vrp3.C
  90556a78bbd104a3fbe7928607a64b50  gcc/testsuite/g++.dg/opt/vrp3.h
! f530ceccc3fab953a6618e8c231a4513  gcc/testsuite/g++.dg/opt/vt1.C
  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
  6fee34d8b3b51c74ff33cdfe391ca591  gcc/testsuite/g++.dg/other/abstract1.C
! 5b3b01a17e4d701d6c3c5ef404bd8f57  gcc/testsuite/g++.dg/other/abstract2.C
  32f6a4ff28854973168944cb1ac27537  gcc/testsuite/g++.dg/other/abstract3.C
  7ac72c1e4cfd61c68a7528160187b2f0  gcc/testsuite/g++.dg/other/abstract4.C
  df81d021f1adcf8dae661aa394aa2a89  gcc/testsuite/g++.dg/other/abstract5.C
*************** df81d021f1adcf8dae661aa394aa2a89  gcc/te
*** 15513,15522 ****
  e7bda64a0fd9d0057a48814a978e1851  gcc/testsuite/g++.dg/other/anon-union.C
  a0196ebfddfdcb265613530b34c75302  gcc/testsuite/g++.dg/other/anon-union2.C
  e9155c2c93a966422697725e5965e0c1  gcc/testsuite/g++.dg/other/anon-union3.C
  25bec11b40119085408d52eaa5b86f6e  gcc/testsuite/g++.dg/other/anon2.C
  ac03cab67f2c4f5731d36b19f2ee4f42  gcc/testsuite/g++.dg/other/anon3.C
  735bc52cab8eca56a711c2c10845c981  gcc/testsuite/g++.dg/other/anon4.C
! 6d368030a15296375251b49a071901f4  gcc/testsuite/g++.dg/other/anon5.C
  1c68df289b2577a8e2753eaf82704fed  gcc/testsuite/g++.dg/other/anon6.C
  6bdea0a90642ef923b08522ad0f6f67b  gcc/testsuite/g++.dg/other/anon7.C
  f282d7d63120a2f2e0ee707e7dd2fe1e  gcc/testsuite/g++.dg/other/anon8.C
--- 16411,16421 ----
  e7bda64a0fd9d0057a48814a978e1851  gcc/testsuite/g++.dg/other/anon-union.C
  a0196ebfddfdcb265613530b34c75302  gcc/testsuite/g++.dg/other/anon-union2.C
  e9155c2c93a966422697725e5965e0c1  gcc/testsuite/g++.dg/other/anon-union3.C
+ 7ea92f81a45b2537512cf880ee35fe92  gcc/testsuite/g++.dg/other/anon-union4.C
  25bec11b40119085408d52eaa5b86f6e  gcc/testsuite/g++.dg/other/anon2.C
  ac03cab67f2c4f5731d36b19f2ee4f42  gcc/testsuite/g++.dg/other/anon3.C
  735bc52cab8eca56a711c2c10845c981  gcc/testsuite/g++.dg/other/anon4.C
! fd4316c02caafdf6cdbbcfe7f9ff8982  gcc/testsuite/g++.dg/other/anon5.C
  1c68df289b2577a8e2753eaf82704fed  gcc/testsuite/g++.dg/other/anon6.C
  6bdea0a90642ef923b08522ad0f6f67b  gcc/testsuite/g++.dg/other/anon7.C
  f282d7d63120a2f2e0ee707e7dd2fe1e  gcc/testsuite/g++.dg/other/anon8.C
*************** f282d7d63120a2f2e0ee707e7dd2fe1e  gcc/te
*** 15524,15530 ****
  9d297649b5a43f6461774469f0468593  gcc/testsuite/g++.dg/other/armv7m-1.C
  ceb0c0d2e878f1b7898a912bfe02d365  gcc/testsuite/g++.dg/other/array1.C
  71fbdba6d48208f57c1737ab4a06921a  gcc/testsuite/g++.dg/other/array2.C
! ed092dce3c46c4eb9fe96b8e2be6750c  gcc/testsuite/g++.dg/other/array3.C
  4fc58d9ff176effcac170e54d3144031  gcc/testsuite/g++.dg/other/array4.C
  704a289cc183c9c58d161a065dc540b8  gcc/testsuite/g++.dg/other/array5.C
  db68b7a03fb0ede3fec05340bda061e1  gcc/testsuite/g++.dg/other/array6.C
--- 16423,16429 ----
  9d297649b5a43f6461774469f0468593  gcc/testsuite/g++.dg/other/armv7m-1.C
  ceb0c0d2e878f1b7898a912bfe02d365  gcc/testsuite/g++.dg/other/array1.C
  71fbdba6d48208f57c1737ab4a06921a  gcc/testsuite/g++.dg/other/array2.C
! bcc6c29c87ee411683aa56afca6aea50  gcc/testsuite/g++.dg/other/array3.C
  4fc58d9ff176effcac170e54d3144031  gcc/testsuite/g++.dg/other/array4.C
  704a289cc183c9c58d161a065dc540b8  gcc/testsuite/g++.dg/other/array5.C
  db68b7a03fb0ede3fec05340bda061e1  gcc/testsuite/g++.dg/other/array6.C
*************** ba848aa2a88ba59d1d57527eb8f55c01  gcc/te
*** 15542,15570 ****
  011b8ddc593601155e855d2cf648258c  gcc/testsuite/g++.dg/other/canon-31724.C
  099265a43fd784d7e5904d87397cd678  gcc/testsuite/g++.dg/other/canon-33194.C
  ec0bfdcd03b57cf0c62a78d8c06e0334  gcc/testsuite/g++.dg/other/canon-37342.C
! a33402d123eb961aa44a527290e451c2  gcc/testsuite/g++.dg/other/classkey1.C
  b0eb29945f04721ade114ff6651768e8  gcc/testsuite/g++.dg/other/complex1.C
! 62c7e0b19a0713c16c861d1093f50759  gcc/testsuite/g++.dg/other/component1.C
! cf0cdff2ec717c636d8a5441b2399c4a  gcc/testsuite/g++.dg/other/const1.C
! 65c0a747dff974d4f19eda6304e002f9  gcc/testsuite/g++.dg/other/const2.C
  0f31e772471912bf15f7b8f02c2177e6  gcc/testsuite/g++.dg/other/const3.C
  cf1d166d7294daaa2002192c1cbfd785  gcc/testsuite/g++.dg/other/const4.C
  ff9cb67baddab7a5c96d0e2a37893445  gcc/testsuite/g++.dg/other/constref1.C
  192c9dfdcc513ccf5362da483582b639  gcc/testsuite/g++.dg/other/constref2.C
! cfdc2115d36008e199bda75a789e43e3  gcc/testsuite/g++.dg/other/conversion1.C
  05e8006d99bfbd53319ecd928c0724ca  gcc/testsuite/g++.dg/other/copy1.C
! a8c217652f569c1ecbce8d12397e9abb  gcc/testsuite/g++.dg/other/copy2.C
  e7de4fdd2efa00c9e16713dbef6623d4  gcc/testsuite/g++.dg/other/crash-1.C
  9c5998180b3fe539eb2b8de2217f48d6  gcc/testsuite/g++.dg/other/crash-10.C
  5d8d774628229a306ab795223b7c191d  gcc/testsuite/g++.dg/other/crash-11.C
  37816617cea0cac04699c02e3a6eb9f4  gcc/testsuite/g++.dg/other/crash-12.C
  4499451fbf6c1b3316cefa496caf3c8a  gcc/testsuite/g++.dg/other/crash-2.C
  0d9c768cc6c1ceba304511794490d245  gcc/testsuite/g++.dg/other/crash-3.C
! a948c138cf787909077fd994ee9ec3e1  gcc/testsuite/g++.dg/other/crash-4.C
! 56e3643ee857c666d2b01a4499a8c7d4  gcc/testsuite/g++.dg/other/crash-5.C
  2dadba1c6aecd548a8c0e44b0f421a05  gcc/testsuite/g++.dg/other/crash-6.C
  e7842fff9521bf33d21ea035ef04f0f9  gcc/testsuite/g++.dg/other/crash-7.C
! aa54a0fbf159d1923c9a3b8630071cf6  gcc/testsuite/g++.dg/other/crash-8.C
  f0220e22e3cb835b39e2741a4acec08b  gcc/testsuite/g++.dg/other/crash-9.C
  77b7a83e4c4a267c5a040e6fe91b27f2  gcc/testsuite/g++.dg/other/ctor1.C
  d7844a4cf4cd40841244c6c728405a11  gcc/testsuite/g++.dg/other/ctor2.C
--- 16441,16470 ----
  011b8ddc593601155e855d2cf648258c  gcc/testsuite/g++.dg/other/canon-31724.C
  099265a43fd784d7e5904d87397cd678  gcc/testsuite/g++.dg/other/canon-33194.C
  ec0bfdcd03b57cf0c62a78d8c06e0334  gcc/testsuite/g++.dg/other/canon-37342.C
! a1847b306960ae845bf2bd9645889110  gcc/testsuite/g++.dg/other/classkey1.C
  b0eb29945f04721ade114ff6651768e8  gcc/testsuite/g++.dg/other/complex1.C
! 1db0905caebf9a1cb42fc74ab2488bc2  gcc/testsuite/g++.dg/other/component1.C
! b966126346f06591fe00fd2d536c9eab  gcc/testsuite/g++.dg/other/const1.C
! 7280dca94bf162c27c0a3943b4ca87bc  gcc/testsuite/g++.dg/other/const2.C
  0f31e772471912bf15f7b8f02c2177e6  gcc/testsuite/g++.dg/other/const3.C
  cf1d166d7294daaa2002192c1cbfd785  gcc/testsuite/g++.dg/other/const4.C
+ e4216b482e95cea3a6f9fe36659d689a  gcc/testsuite/g++.dg/other/const5.C
  ff9cb67baddab7a5c96d0e2a37893445  gcc/testsuite/g++.dg/other/constref1.C
  192c9dfdcc513ccf5362da483582b639  gcc/testsuite/g++.dg/other/constref2.C
! fbcc4b9fa241101fbb618a2a48934a0e  gcc/testsuite/g++.dg/other/conversion1.C
  05e8006d99bfbd53319ecd928c0724ca  gcc/testsuite/g++.dg/other/copy1.C
! cc87ceb7a97334562e9184d9160d93a4  gcc/testsuite/g++.dg/other/copy2.C
  e7de4fdd2efa00c9e16713dbef6623d4  gcc/testsuite/g++.dg/other/crash-1.C
  9c5998180b3fe539eb2b8de2217f48d6  gcc/testsuite/g++.dg/other/crash-10.C
  5d8d774628229a306ab795223b7c191d  gcc/testsuite/g++.dg/other/crash-11.C
  37816617cea0cac04699c02e3a6eb9f4  gcc/testsuite/g++.dg/other/crash-12.C
  4499451fbf6c1b3316cefa496caf3c8a  gcc/testsuite/g++.dg/other/crash-2.C
  0d9c768cc6c1ceba304511794490d245  gcc/testsuite/g++.dg/other/crash-3.C
! 70e2ccb2410e138ba45c38e5634f4641  gcc/testsuite/g++.dg/other/crash-4.C
! 635398f9e4fccccc23c38da1fb0b6e00  gcc/testsuite/g++.dg/other/crash-5.C
  2dadba1c6aecd548a8c0e44b0f421a05  gcc/testsuite/g++.dg/other/crash-6.C
  e7842fff9521bf33d21ea035ef04f0f9  gcc/testsuite/g++.dg/other/crash-7.C
! 1ef5a7347a64492cff351eae703e8566  gcc/testsuite/g++.dg/other/crash-8.C
  f0220e22e3cb835b39e2741a4acec08b  gcc/testsuite/g++.dg/other/crash-9.C
  77b7a83e4c4a267c5a040e6fe91b27f2  gcc/testsuite/g++.dg/other/ctor1.C
  d7844a4cf4cd40841244c6c728405a11  gcc/testsuite/g++.dg/other/ctor2.C
*************** bd1c35be302338df14b1aa330813797d  gcc/te
*** 15580,15585 ****
--- 16480,16486 ----
  cd13b43d765a4c8ba515ee87ed6f4d09  gcc/testsuite/g++.dg/other/default10.C
  d3a1b0b399615ed9f82ba5a2c2961f0b  gcc/testsuite/g++.dg/other/default11.C
  239a66b1a7f4283b943e3bc69bafa5d5  gcc/testsuite/g++.dg/other/default12.C
+ a296dd23f33297705111ac616a717b95  gcc/testsuite/g++.dg/other/default13.C
  0f56dd600fd360a08d419090d5c539f4  gcc/testsuite/g++.dg/other/default2.C
  bc6b5543794bfc21a62d2e5e7ee9cd30  gcc/testsuite/g++.dg/other/default3.C
  6866fe8f71cea11bb58d3c7e52a1b648  gcc/testsuite/g++.dg/other/default4.C
*************** add1c0ffb93257da6f83705218dd349e  gcc/te
*** 15588,15597 ****
  81914af5da2aba583c08c504b718391e  gcc/testsuite/g++.dg/other/default7.C
  999b625d0b51f01b993b8d3373be22a5  gcc/testsuite/g++.dg/other/default8.C
  20dbd5767a054db0fbf85b9f9715476e  gcc/testsuite/g++.dg/other/default9.C
! d3370c196d18a12979ef3db733309686  gcc/testsuite/g++.dg/other/do1.C
  1d7f492a5f6d9c2410071534745c8cc1  gcc/testsuite/g++.dg/other/dtor1.C
  a24d7cf3120e5c9c1cb8815c7c1afaf8  gcc/testsuite/g++.dg/other/dtor2.C
  d5d9e4636806cc2c21ba5269905d360d  gcc/testsuite/g++.dg/other/dump-ada-spec-1.C
  18ddcbb18834cc3bfd96f13559504ecb  gcc/testsuite/g++.dg/other/dump-ada-spec-2.C
  7d00259af38fedc87dd4e6a5e28013f9  gcc/testsuite/g++.dg/other/dump-ada-spec-3.C
  714603dc86359b765169c2e9d9ef26a7  gcc/testsuite/g++.dg/other/dump-ada-spec-4.C
--- 16489,16499 ----
  81914af5da2aba583c08c504b718391e  gcc/testsuite/g++.dg/other/default7.C
  999b625d0b51f01b993b8d3373be22a5  gcc/testsuite/g++.dg/other/default8.C
  20dbd5767a054db0fbf85b9f9715476e  gcc/testsuite/g++.dg/other/default9.C
! 31c1f49fda0399642300df13cb474fcd  gcc/testsuite/g++.dg/other/do1.C
  1d7f492a5f6d9c2410071534745c8cc1  gcc/testsuite/g++.dg/other/dtor1.C
  a24d7cf3120e5c9c1cb8815c7c1afaf8  gcc/testsuite/g++.dg/other/dtor2.C
  d5d9e4636806cc2c21ba5269905d360d  gcc/testsuite/g++.dg/other/dump-ada-spec-1.C
+ 48acbdb6a8e16dad444d7645c540aa0f  gcc/testsuite/g++.dg/other/dump-ada-spec-10.C
  18ddcbb18834cc3bfd96f13559504ecb  gcc/testsuite/g++.dg/other/dump-ada-spec-2.C
  7d00259af38fedc87dd4e6a5e28013f9  gcc/testsuite/g++.dg/other/dump-ada-spec-3.C
  714603dc86359b765169c2e9d9ef26a7  gcc/testsuite/g++.dg/other/dump-ada-spec-4.C
*************** f7ea45387f20b854810727825bbdc313  gcc/te
*** 15605,15612 ****
  c5b26d15a4924f5e39dad2e8b5b7608a  gcc/testsuite/g++.dg/other/enum1.C
  c544bdd6560cc758c745269cd7fa1806  gcc/testsuite/g++.dg/other/enum2.C
  0067ce75ae387639a9f67e6ceb464f94  gcc/testsuite/g++.dg/other/enum3.C
! 7228816342090a5efe94d0effa02c5bd  gcc/testsuite/g++.dg/other/error1.C
! 5a7c1bf4b79dcf65b10ac9eacefc3d60  gcc/testsuite/g++.dg/other/error10.C
  3c4bc8f8209191a16ce6898de421c3a9  gcc/testsuite/g++.dg/other/error11.C
  a33b9482e49687df6e3d1d5a9e6802a8  gcc/testsuite/g++.dg/other/error13.C
  199a456577f88591ddb34aaf3dc0fce4  gcc/testsuite/g++.dg/other/error14.C
--- 16507,16514 ----
  c5b26d15a4924f5e39dad2e8b5b7608a  gcc/testsuite/g++.dg/other/enum1.C
  c544bdd6560cc758c745269cd7fa1806  gcc/testsuite/g++.dg/other/enum2.C
  0067ce75ae387639a9f67e6ceb464f94  gcc/testsuite/g++.dg/other/enum3.C
! b7da9102c9531c30691a1aee48af69dd  gcc/testsuite/g++.dg/other/error1.C
! ad201a1b3557a9b3293504d7508b5726  gcc/testsuite/g++.dg/other/error10.C
  3c4bc8f8209191a16ce6898de421c3a9  gcc/testsuite/g++.dg/other/error11.C
  a33b9482e49687df6e3d1d5a9e6802a8  gcc/testsuite/g++.dg/other/error13.C
  199a456577f88591ddb34aaf3dc0fce4  gcc/testsuite/g++.dg/other/error14.C
*************** f7bb8260b75f7cc0e622720e6eb02238  gcc/te
*** 15626,15644 ****
  147fa7e0ee5ec6d7d66166f8e2b74c62  gcc/testsuite/g++.dg/other/error27.C
  d91ba71ee2c4033b63d3e9313ca87d20  gcc/testsuite/g++.dg/other/error28.C
  f6ef4e2724fa7ce062da94fa1778b050  gcc/testsuite/g++.dg/other/error29.C
! 333d44c93609cd1dd9db8438bb4cfeaf  gcc/testsuite/g++.dg/other/error3.C
  197cf0c2a0b5a9515fb727c846451d1e  gcc/testsuite/g++.dg/other/error30.C
  9d9e0fd46de8ccc8ea70f599c5b60fb6  gcc/testsuite/g++.dg/other/error31.C
  c744ed5aaa2c2c1507e6c50193db38bb  gcc/testsuite/g++.dg/other/error32.C
  dc99910fb2d0aaf7a5c4306f76bad987  gcc/testsuite/g++.dg/other/error33.C
! be56c1a853ab6f4aae93ab96cfd3ceab  gcc/testsuite/g++.dg/other/error34.C
! 6d1f14da09aa48d7829a5bb7ece18577  gcc/testsuite/g++.dg/other/error4.C
! 67c2da88e21fcb076690a6d9b53b2d97  gcc/testsuite/g++.dg/other/error5.C
  211bf7afef91ced5b9f2bdf67115b606  gcc/testsuite/g++.dg/other/error6.C
  1879c54136b23a17a6c8b571f8a19c12  gcc/testsuite/g++.dg/other/error7.C
! 67a3ed27978e2f58840fe8091b893f02  gcc/testsuite/g++.dg/other/error8.C
! b92370a23a79c9c243e1e6ba7329b0a7  gcc/testsuite/g++.dg/other/error9.C
! 4cb9d6103dd937ddadce6eb5df7557c2  gcc/testsuite/g++.dg/other/field1.C
  ede64dddd03466b447936e432e790490  gcc/testsuite/g++.dg/other/final1.C
  105f1697eb5a940a2db68c9f0ce25789  gcc/testsuite/g++.dg/other/final2.C
  455aeb7100537f75958e97507174848d  gcc/testsuite/g++.dg/other/first-global.C
--- 16528,16546 ----
  147fa7e0ee5ec6d7d66166f8e2b74c62  gcc/testsuite/g++.dg/other/error27.C
  d91ba71ee2c4033b63d3e9313ca87d20  gcc/testsuite/g++.dg/other/error28.C
  f6ef4e2724fa7ce062da94fa1778b050  gcc/testsuite/g++.dg/other/error29.C
! fd41e2a884d224845fc1b776df3eb9bd  gcc/testsuite/g++.dg/other/error3.C
  197cf0c2a0b5a9515fb727c846451d1e  gcc/testsuite/g++.dg/other/error30.C
  9d9e0fd46de8ccc8ea70f599c5b60fb6  gcc/testsuite/g++.dg/other/error31.C
  c744ed5aaa2c2c1507e6c50193db38bb  gcc/testsuite/g++.dg/other/error32.C
  dc99910fb2d0aaf7a5c4306f76bad987  gcc/testsuite/g++.dg/other/error33.C
! 7e8cd39803fcdb5c10aec7db39b30169  gcc/testsuite/g++.dg/other/error34.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
  1879c54136b23a17a6c8b571f8a19c12  gcc/testsuite/g++.dg/other/error7.C
! a18683e17081d88a885ade3e18124b8c  gcc/testsuite/g++.dg/other/error8.C
! 6e6762fafb0f5e9988b904af3b06dcab  gcc/testsuite/g++.dg/other/error9.C
! 5f75fd5a748577d8c6bb0cdd1ab1a0d2  gcc/testsuite/g++.dg/other/field1.C
  ede64dddd03466b447936e432e790490  gcc/testsuite/g++.dg/other/final1.C
  105f1697eb5a940a2db68c9f0ce25789  gcc/testsuite/g++.dg/other/final2.C
  455aeb7100537f75958e97507174848d  gcc/testsuite/g++.dg/other/first-global.C
*************** f0b90cefee19cdf27cf52d575824a7b2  gcc/te
*** 15651,15656 ****
--- 16553,16559 ----
  3d721e5c503ddfbc00fc414765b8de1c  gcc/testsuite/g++.dg/other/friend6.C
  ca8db13b2a838d168664fb2bb66ae838  gcc/testsuite/g++.dg/other/friend7.C
  95b3acbe1d45c008341d8cb6d3625c5b  gcc/testsuite/g++.dg/other/fsyntax-only1.C
+ c5cc41f51266a49aca8f858231ad8514  gcc/testsuite/g++.dg/other/fsyntax-only2.C
  32f21e74c5b90dde8aa8adfc0d8ea6f0  gcc/testsuite/g++.dg/other/gc1.C
  bc5371eb8e8dcf79efb0889828991560  gcc/testsuite/g++.dg/other/gc2.C
  710d41055b4bb35ff1473bcd3c776607  gcc/testsuite/g++.dg/other/gc3.C
*************** bc5371eb8e8dcf79efb0889828991560  gcc/te
*** 15659,15676 ****
  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
! 5d7d44f01801910a4bcaec1361e3a5d5  gcc/testsuite/g++.dg/other/i386-2.C
! 5d229cacf20be7c6ede156cfa56df536  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
! 6185c7fefa3b45be6654d24324c94f7d  gcc/testsuite/g++.dg/other/i386-8.C
! a97214a6af5f7594b62fcb2dd5277097  gcc/testsuite/g++.dg/other/i386-9.C
  cc1ca2bf9b477d018fa43d900031841d  gcc/testsuite/g++.dg/other/incomplete1.C
  468830bf97b25deba68d737c1fdec540  gcc/testsuite/g++.dg/other/incomplete2.C
  f917991e6dd65d861c6bb45ad931fe8c  gcc/testsuite/g++.dg/other/incomplete3.C
  91b5ed5104c76d620a1314b0a88fee48  gcc/testsuite/g++.dg/other/increment1.C
  78e796e41e24a5aabf8b9d7868a3129a  gcc/testsuite/g++.dg/other/infloop-1.C
! 9a179a157dcd020b51f28328ef6fa43d  gcc/testsuite/g++.dg/other/init1.C
  84228402757e3c8e700713d288e64c46  gcc/testsuite/g++.dg/other/init2.C
  74d2dc28c4cfdb8c13ff5a52e4f1924a  gcc/testsuite/g++.dg/other/isnan.C
  6e292e2bc85eea028b21b0cab55522ad  gcc/testsuite/g++.dg/other/label1.C
--- 16562,16579 ----
  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
! cdf089d667fbc8d619d3d71f858939b6  gcc/testsuite/g++.dg/other/i386-2.C
! ab8e94f519de0e2c0c53a7b0dc025bc0  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
! afdbb57e3b1e56a7ebb77163f47c43be  gcc/testsuite/g++.dg/other/i386-9.C
  cc1ca2bf9b477d018fa43d900031841d  gcc/testsuite/g++.dg/other/incomplete1.C
  468830bf97b25deba68d737c1fdec540  gcc/testsuite/g++.dg/other/incomplete2.C
  f917991e6dd65d861c6bb45ad931fe8c  gcc/testsuite/g++.dg/other/incomplete3.C
  91b5ed5104c76d620a1314b0a88fee48  gcc/testsuite/g++.dg/other/increment1.C
  78e796e41e24a5aabf8b9d7868a3129a  gcc/testsuite/g++.dg/other/infloop-1.C
! 38a077022f333b16693ef7f18d41ab4f  gcc/testsuite/g++.dg/other/init1.C
  84228402757e3c8e700713d288e64c46  gcc/testsuite/g++.dg/other/init2.C
  74d2dc28c4cfdb8c13ff5a52e4f1924a  gcc/testsuite/g++.dg/other/isnan.C
  6e292e2bc85eea028b21b0cab55522ad  gcc/testsuite/g++.dg/other/label1.C
*************** a9c2bd4786300d7cf805e7ef57335a2c  gcc/te
*** 15685,15720 ****
  2d4374350b7c46b467d19f44539be761  gcc/testsuite/g++.dg/other/nested-extern-2.C
  668a3b5ad920346b135fa852ca249d17  gcc/testsuite/g++.dg/other/nested-extern.cc
  ab7e7ce6d6cf9f93cfe987bca1bb3c2d  gcc/testsuite/g++.dg/other/new-size-type.C
! 88667285d39d29049b4e80cf22231d3f  gcc/testsuite/g++.dg/other/new1.C
  36156b7bb0f0bbac69e3b368b3b7bb86  gcc/testsuite/g++.dg/other/nontype-1.C
  f6c50007b333f25964b3ad2eb06e3773  gcc/testsuite/g++.dg/other/ns1.C
  ed6ba93ec64ee88b5ea998354c729e44  gcc/testsuite/g++.dg/other/offsetof1.C
  f22bc611fe66c01c402c287704531f43  gcc/testsuite/g++.dg/other/offsetof2.C
! dac0e5859b53ec7cee1fc2f1ac65d434  gcc/testsuite/g++.dg/other/offsetof3.C
  a23d17ae20fd87361daea5c89ea2bf18  gcc/testsuite/g++.dg/other/offsetof4.C
! 2fc3c0a4adfc39b0d6104dad78e0c02b  gcc/testsuite/g++.dg/other/offsetof5.C
  19eb48777950ec2ddd6300d9e65a5288  gcc/testsuite/g++.dg/other/offsetof6.C
  875d9ac66672e66bf6e0efdd9f6822b9  gcc/testsuite/g++.dg/other/offsetof7.C
! cd28d5ff145aacaf164a8834f1ad2614  gcc/testsuite/g++.dg/other/offsetof8.C
  bc0fd68902badef5afe9126eef1a958d  gcc/testsuite/g++.dg/other/offsetof9.C
! d0fbce91ceffe38611bd7fe05b72ac2b  gcc/testsuite/g++.dg/other/opaque-1.C
! b4568481fda7d8fe66f09f6c78ec5fab  gcc/testsuite/g++.dg/other/opaque-2.C
! 2fdec97c9e8b739bdcdbd33ed78c1d4f  gcc/testsuite/g++.dg/other/opaque-3.C
  5c4a588829781d8931751c4126ebd8aa  gcc/testsuite/g++.dg/other/operator1.C
! 971cefc8317fd5a29f53da37b1dbb6d6  gcc/testsuite/g++.dg/other/operator2.C
  da1ba255024d00bac0a97620f4ffaba7  gcc/testsuite/g++.dg/other/operator3.C
  6be92beab52e0fd0c83b0cabc3f7e83a  gcc/testsuite/g++.dg/other/packed1.C
  f43f96bf3c378817b959c22aee3466c0  gcc/testsuite/g++.dg/other/pr20366.C
! 45a2be25f7fc440c2cd2fc76af63be51  gcc/testsuite/g++.dg/other/pr22003.C
  57901344b69ec7b216bf1128cc5a7242  gcc/testsuite/g++.dg/other/pr22358.C
  6b6295db303eea90d8c5c94c2cd7e82f  gcc/testsuite/g++.dg/other/pr23205-2.C
! cbfc16147cdfd178e38e28c8ffca2385  gcc/testsuite/g++.dg/other/pr24623.C
  8ed27916cb5b71de34de304c8c46a014  gcc/testsuite/g++.dg/other/pr25632.C
  d135b9a72f0f848337f5db8cd4d42ca2  gcc/testsuite/g++.dg/other/pr27495.C
  8d7b488c65a9ffc3ce52c841bae94731  gcc/testsuite/g++.dg/other/pr28114.C
  de07ec93dc9f688d2fe2f33f07228d16  gcc/testsuite/g++.dg/other/pr28304.C
! 79811eb6886d2852fdf175ce1b1b1e20  gcc/testsuite/g++.dg/other/pr28432.C
! 28e9a172de1c6ea38bcb3af18a9eb52c  gcc/testsuite/g++.dg/other/pr29610.C
  7c1a4ef9dd889bd9a64eeb9657827800  gcc/testsuite/g++.dg/other/pr31078.C
  eee8335ea07390d8a3289d098993c567  gcc/testsuite/g++.dg/other/pr33558-2.C
  2bce0ecd468a573ab63f7d3a15c66bcf  gcc/testsuite/g++.dg/other/pr33558.C
--- 16588,16624 ----
  2d4374350b7c46b467d19f44539be761  gcc/testsuite/g++.dg/other/nested-extern-2.C
  668a3b5ad920346b135fa852ca249d17  gcc/testsuite/g++.dg/other/nested-extern.cc
  ab7e7ce6d6cf9f93cfe987bca1bb3c2d  gcc/testsuite/g++.dg/other/new-size-type.C
! c0f07a710445638bf000415028b6640b  gcc/testsuite/g++.dg/other/new1.C
  36156b7bb0f0bbac69e3b368b3b7bb86  gcc/testsuite/g++.dg/other/nontype-1.C
  f6c50007b333f25964b3ad2eb06e3773  gcc/testsuite/g++.dg/other/ns1.C
  ed6ba93ec64ee88b5ea998354c729e44  gcc/testsuite/g++.dg/other/offsetof1.C
  f22bc611fe66c01c402c287704531f43  gcc/testsuite/g++.dg/other/offsetof2.C
! 7fc258026ed592ddfea3956e3eea7ca3  gcc/testsuite/g++.dg/other/offsetof3.C
  a23d17ae20fd87361daea5c89ea2bf18  gcc/testsuite/g++.dg/other/offsetof4.C
! cb516f165c38ec2709ca2cb55d0361de  gcc/testsuite/g++.dg/other/offsetof5.C
  19eb48777950ec2ddd6300d9e65a5288  gcc/testsuite/g++.dg/other/offsetof6.C
  875d9ac66672e66bf6e0efdd9f6822b9  gcc/testsuite/g++.dg/other/offsetof7.C
! 2d556e9b1754347045ac7f7cc06cd4fe  gcc/testsuite/g++.dg/other/offsetof8.C
  bc0fd68902badef5afe9126eef1a958d  gcc/testsuite/g++.dg/other/offsetof9.C
! 9577356b5786a4ceb413af9744855254  gcc/testsuite/g++.dg/other/old-style-cast-fixits.C
! cac3a2322a3125e5a823dc9f229c758f  gcc/testsuite/g++.dg/other/opaque-1.C
! 7a5dbd4caee5a237ac3f6d7a6f714ae4  gcc/testsuite/g++.dg/other/opaque-2.C
! 65ca5d2233ccb3f4a0b5a56b450d91f9  gcc/testsuite/g++.dg/other/opaque-3.C
  5c4a588829781d8931751c4126ebd8aa  gcc/testsuite/g++.dg/other/operator1.C
! d93f9c4b3eb9298ed09328e46b637a31  gcc/testsuite/g++.dg/other/operator2.C
  da1ba255024d00bac0a97620f4ffaba7  gcc/testsuite/g++.dg/other/operator3.C
  6be92beab52e0fd0c83b0cabc3f7e83a  gcc/testsuite/g++.dg/other/packed1.C
  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
  8d7b488c65a9ffc3ce52c841bae94731  gcc/testsuite/g++.dg/other/pr28114.C
  de07ec93dc9f688d2fe2f33f07228d16  gcc/testsuite/g++.dg/other/pr28304.C
! daa3dd95dcf11dd94769cefae514e231  gcc/testsuite/g++.dg/other/pr28432.C
! 48bde066b5a1f49cb245295c9709e82b  gcc/testsuite/g++.dg/other/pr29610.C
  7c1a4ef9dd889bd9a64eeb9657827800  gcc/testsuite/g++.dg/other/pr31078.C
  eee8335ea07390d8a3289d098993c567  gcc/testsuite/g++.dg/other/pr33558-2.C
  2bce0ecd468a573ab63f7d3a15c66bcf  gcc/testsuite/g++.dg/other/pr33558.C
*************** e7318945c51d3bbaf1fa1d922b1661f3  gcc/te
*** 15729,15737 ****
  14cd5913702333a4982d44b3769179f0  gcc/testsuite/g++.dg/other/pr39496.C
  7a396754c07c42c3d37a44d7027e240e  gcc/testsuite/g++.dg/other/pr40446.C
  5c8c2604c08c57cb2c21770bf3b416bf  gcc/testsuite/g++.dg/other/pr40561.C
! a8acf41a97484b62691a92779ee9fc71  gcc/testsuite/g++.dg/other/pr42645-1.C
! 17a722f40fb7caa40b6a960f7c1b52e7  gcc/testsuite/g++.dg/other/pr42645-2.C
! bbe090ec74659e0ef5b2e8d1f6c4ddd5  gcc/testsuite/g++.dg/other/pr42685.C
  bd2f500fa5d566f920cd8ae804d20550  gcc/testsuite/g++.dg/other/pr42806.C
  e18e3ba20f03468900780d327126e381  gcc/testsuite/g++.dg/other/pr43116.C
  d1a876567d4315b25ada60d25ecbd98f  gcc/testsuite/g++.dg/other/pr43631.C
--- 16633,16641 ----
  14cd5913702333a4982d44b3769179f0  gcc/testsuite/g++.dg/other/pr39496.C
  7a396754c07c42c3d37a44d7027e240e  gcc/testsuite/g++.dg/other/pr40446.C
  5c8c2604c08c57cb2c21770bf3b416bf  gcc/testsuite/g++.dg/other/pr40561.C
! 2592103add791544a014ef659863288e  gcc/testsuite/g++.dg/other/pr42645-1.C
! 872da29cdd0560a269022123df0043b7  gcc/testsuite/g++.dg/other/pr42645-2.C
! d42a760236e27483504ee08925281008  gcc/testsuite/g++.dg/other/pr42685.C
  bd2f500fa5d566f920cd8ae804d20550  gcc/testsuite/g++.dg/other/pr42806.C
  e18e3ba20f03468900780d327126e381  gcc/testsuite/g++.dg/other/pr43116.C
  d1a876567d4315b25ada60d25ecbd98f  gcc/testsuite/g++.dg/other/pr43631.C
*************** bbfdbf39dac3f32203388a2dad06f24a  gcc/te
*** 15742,15756 ****
  3f80d803f33ca352a2d86ba6db9d48fe  gcc/testsuite/g++.dg/other/pr49912.C
  ac3ba0e4d0da02a871ab3d83b9cc0bf2  gcc/testsuite/g++.dg/other/pr50212.C
  36a8c3554403443884b8a9901e71ac7e  gcc/testsuite/g++.dg/other/pr50464.C
! f41d9c16f9331b066d437ea74ff76a33  gcc/testsuite/g++.dg/other/pr52048.C
  064314e5b4858c9dbb88aea445e7faae  gcc/testsuite/g++.dg/other/pr53811.C
  b0b6f71b5ed6569f39d6b7acb7d497be  gcc/testsuite/g++.dg/other/pr55650.C
  0da6ae1a686a791137078c463ee29dd7  gcc/testsuite/g++.dg/other/pr55650.cc
! ef2ab4aae234afefacfc233b4d897d81  gcc/testsuite/g++.dg/other/pr59492.C
  b9797df675e666346a70acacf8fbe0b5  gcc/testsuite/g++.dg/other/pr61753.C
  3634dbc3147618af0685ced6e33189ea  gcc/testsuite/g++.dg/other/pr63815.C
  edba4dc64424b99c4e6984f1aa7e9507  gcc/testsuite/g++.dg/other/pr66130.C
  335c58f031e8af025ac6bd25a8f5e0ed  gcc/testsuite/g++.dg/other/pr67065.C
  3c357334529bfcf67faa2a847f3c9290  gcc/testsuite/g++.dg/other/pr71728.C
  92b4b5a4783dcbeae25becdfeb6d619c  gcc/testsuite/g++.dg/other/pr77626.C
  471beffc86868decfc27ea7f36b050a5  gcc/testsuite/g++.dg/other/pr77759.C
--- 16646,16667 ----
  3f80d803f33ca352a2d86ba6db9d48fe  gcc/testsuite/g++.dg/other/pr49912.C
  ac3ba0e4d0da02a871ab3d83b9cc0bf2  gcc/testsuite/g++.dg/other/pr50212.C
  36a8c3554403443884b8a9901e71ac7e  gcc/testsuite/g++.dg/other/pr50464.C
! 32abf9d955e99055f4097b78694c63bf  gcc/testsuite/g++.dg/other/pr52048.C
! fabb6972aff6deb2bdad232c673e2652  gcc/testsuite/g++.dg/other/pr53574.C
  064314e5b4858c9dbb88aea445e7faae  gcc/testsuite/g++.dg/other/pr53811.C
+ 3897186c7463a8e2de39bcb048266ca4  gcc/testsuite/g++.dg/other/pr54300.C
+ 1c3d9bf135ffc7cc603bc74e12c322d8  gcc/testsuite/g++.dg/other/pr55073.C
  b0b6f71b5ed6569f39d6b7acb7d497be  gcc/testsuite/g++.dg/other/pr55650.C
  0da6ae1a686a791137078c463ee29dd7  gcc/testsuite/g++.dg/other/pr55650.cc
! 7fd36ebe5cb7da0f081971db0688d294  gcc/testsuite/g++.dg/other/pr56184.C
! 508e466343d3104d3ceab3f974cb2829  gcc/testsuite/g++.dg/other/pr59492.C
! 6f940fbc89f075c25fd1be89c0f9184e  gcc/testsuite/g++.dg/other/pr59985.C
! fa29a2b92ef22dfc72f3bdb43569f4a3  gcc/testsuite/g++.dg/other/pr60675.C
  b9797df675e666346a70acacf8fbe0b5  gcc/testsuite/g++.dg/other/pr61753.C
  3634dbc3147618af0685ced6e33189ea  gcc/testsuite/g++.dg/other/pr63815.C
  edba4dc64424b99c4e6984f1aa7e9507  gcc/testsuite/g++.dg/other/pr66130.C
  335c58f031e8af025ac6bd25a8f5e0ed  gcc/testsuite/g++.dg/other/pr67065.C
+ b183be29240d792a5096b2eef4b1a111  gcc/testsuite/g++.dg/other/pr68252.C
  3c357334529bfcf67faa2a847f3c9290  gcc/testsuite/g++.dg/other/pr71728.C
  92b4b5a4783dcbeae25becdfeb6d619c  gcc/testsuite/g++.dg/other/pr77626.C
  471beffc86868decfc27ea7f36b050a5  gcc/testsuite/g++.dg/other/pr77759.C
*************** edba4dc64424b99c4e6984f1aa7e9507  gcc/te
*** 15758,15770 ****
  76ee0895897247483e60443661edeb22  gcc/testsuite/g++.dg/other/pr80423.C
  1c00accbdd570039dad5f6ca97899478  gcc/testsuite/g++.dg/other/pr80534-1.C
  0a2126b949cb2478421893594c7f8cf4  gcc/testsuite/g++.dg/other/pr80534-2.C
  2b96e0cda3aaa703c284fca6a0dd72c9  gcc/testsuite/g++.dg/other/pragma-re-1.C
  bdec0c9208af6ee3a9ab1f2c07d3ba19  gcc/testsuite/g++.dg/other/pragma-re-2.C
  f804e6064a0c7cd94d73f58ba8f6e5e0  gcc/testsuite/g++.dg/other/profile1.C
  aeacbd129aa91e6acca9b9022f8e03ba  gcc/testsuite/g++.dg/other/ptrmem1.C
  b0c8ed8d1b0b33a4572119b47d6bf3a1  gcc/testsuite/g++.dg/other/ptrmem10.C
  b60b1ce8e8447af806ecec748ab8bea1  gcc/testsuite/g++.dg/other/ptrmem11.C
! 4f957b5bcaf1a86ac7647c8da6f3acee  gcc/testsuite/g++.dg/other/ptrmem2.C
  aa501740c79db5668ed5a41a648546f6  gcc/testsuite/g++.dg/other/ptrmem3.C
  76b8bc4328319b30e522cbc6e57ff4ed  gcc/testsuite/g++.dg/other/ptrmem4.C
  713d0139b054494df9491738a1fefb6c  gcc/testsuite/g++.dg/other/ptrmem5.C
--- 16669,16686 ----
  76ee0895897247483e60443661edeb22  gcc/testsuite/g++.dg/other/pr80423.C
  1c00accbdd570039dad5f6ca97899478  gcc/testsuite/g++.dg/other/pr80534-1.C
  0a2126b949cb2478421893594c7f8cf4  gcc/testsuite/g++.dg/other/pr80534-2.C
+ 8a4056fe7245ff5ab2f5fb56ab077f9e  gcc/testsuite/g++.dg/other/pr81355.C
+ f915e6694b9e2771166f40017bbcf352  gcc/testsuite/g++.dg/other/pr81422.C
+ 9c615713b6e4a30e77d2cb7350fd51d9  gcc/testsuite/g++.dg/other/pr82032.C
+ 1005211d1d3f5bf76f7f8fff834a812f  gcc/testsuite/g++.dg/other/pr84792-1.C
+ 5bd2bbe902190f207cbdf2adf6dfbd60  gcc/testsuite/g++.dg/other/pr84792-2.C
  2b96e0cda3aaa703c284fca6a0dd72c9  gcc/testsuite/g++.dg/other/pragma-re-1.C
  bdec0c9208af6ee3a9ab1f2c07d3ba19  gcc/testsuite/g++.dg/other/pragma-re-2.C
  f804e6064a0c7cd94d73f58ba8f6e5e0  gcc/testsuite/g++.dg/other/profile1.C
  aeacbd129aa91e6acca9b9022f8e03ba  gcc/testsuite/g++.dg/other/ptrmem1.C
  b0c8ed8d1b0b33a4572119b47d6bf3a1  gcc/testsuite/g++.dg/other/ptrmem10.C
  b60b1ce8e8447af806ecec748ab8bea1  gcc/testsuite/g++.dg/other/ptrmem11.C
! 2b35d3f46db51cc7700d38466cc879e7  gcc/testsuite/g++.dg/other/ptrmem2.C
  aa501740c79db5668ed5a41a648546f6  gcc/testsuite/g++.dg/other/ptrmem3.C
  76b8bc4328319b30e522cbc6e57ff4ed  gcc/testsuite/g++.dg/other/ptrmem4.C
  713d0139b054494df9491738a1fefb6c  gcc/testsuite/g++.dg/other/ptrmem5.C
*************** c1ee7e4e5d2dfa36042c3417fffae465  gcc/te
*** 15776,15782 ****
  22822b2c7eaa7d4e22eb88d6ce526a4c  gcc/testsuite/g++.dg/other/redecl1.C
  fa56113db0f4a64e5dd4543612cc1522  gcc/testsuite/g++.dg/other/redecl2.C
  b5daabfae1afe27bec64ee89277ba4ec  gcc/testsuite/g++.dg/other/redecl3.C
! e3e3485aa8a1172e3051d442252937c1  gcc/testsuite/g++.dg/other/return1.C
  6c164a00f937e457895437563cb4fbc2  gcc/testsuite/g++.dg/other/s390-1.C
  97e48186eadf96baa75dab50f7628d6a  gcc/testsuite/g++.dg/other/scope1.C
  a2a80603fcddfe63208d0fe7940f2149  gcc/testsuite/g++.dg/other/semicolon.C
--- 16692,16698 ----
  22822b2c7eaa7d4e22eb88d6ce526a4c  gcc/testsuite/g++.dg/other/redecl1.C
  fa56113db0f4a64e5dd4543612cc1522  gcc/testsuite/g++.dg/other/redecl2.C
  b5daabfae1afe27bec64ee89277ba4ec  gcc/testsuite/g++.dg/other/redecl3.C
! c5fc831f4230513b5f02a1aad917c686  gcc/testsuite/g++.dg/other/return1.C
  6c164a00f937e457895437563cb4fbc2  gcc/testsuite/g++.dg/other/s390-1.C
  97e48186eadf96baa75dab50f7628d6a  gcc/testsuite/g++.dg/other/scope1.C
  a2a80603fcddfe63208d0fe7940f2149  gcc/testsuite/g++.dg/other/semicolon.C
*************** a9957b37b938af52bd091dea4f661da6  gcc/te
*** 15788,15804 ****
  6678e40619d5043af4bec1849f7634ae  gcc/testsuite/g++.dg/other/stdarg2.C
  3a012636be5f21fd2b652c229102e118  gcc/testsuite/g++.dg/other/stdarg3.C
  5e0beb379071427ec23de04edb342301  gcc/testsuite/g++.dg/other/struct-va_list.C
  6312bd4cf43fd17e803778af8b1f2031  gcc/testsuite/g++.dg/other/switch1.C
  37c0f6f7c04f78d10db7b76974117a16  gcc/testsuite/g++.dg/other/switch2.C
  bb7141945a25ded3ef95f8a4fab53bff  gcc/testsuite/g++.dg/other/switch3.C
  9bae0d01ef429f94e58c536f39c9ca7b  gcc/testsuite/g++.dg/other/synth1.C
  b3cee6698f91dc967087653171b6e50b  gcc/testsuite/g++.dg/other/typedef1.C
  2ae83dd33030d45c71b8674e327b61aa  gcc/testsuite/g++.dg/other/typedef2.C
! d4120067ea2a2f801d8e1d6c528e17e6  gcc/testsuite/g++.dg/other/typedef3.C
  b69dc2479f4dab741a9c03d2e626d4ea  gcc/testsuite/g++.dg/other/typedef4.C
! f45998308a719a9af73c569560454157  gcc/testsuite/g++.dg/other/ucnid-1.C
  5c2adc76f21ce8f7182fe1930db8db73  gcc/testsuite/g++.dg/other/unreachable1.C
! ed2338c1f9b0041f7a5d84d7a8770464  gcc/testsuite/g++.dg/other/unused1.C
  d94dedac2a05c257cba7f3d7bb2287f4  gcc/testsuite/g++.dg/other/var_copy-1.C
  6aa48be6aef2630759f48ff66b6424bd  gcc/testsuite/g++.dg/other/vararg-1.C
  60563e69386b8a906233c2d479c02e6b  gcc/testsuite/g++.dg/other/vararg-2.C
--- 16704,16727 ----
  6678e40619d5043af4bec1849f7634ae  gcc/testsuite/g++.dg/other/stdarg2.C
  3a012636be5f21fd2b652c229102e118  gcc/testsuite/g++.dg/other/stdarg3.C
  5e0beb379071427ec23de04edb342301  gcc/testsuite/g++.dg/other/struct-va_list.C
+ 9a9b02c601ee72ba8bc9edd9525fe8c4  gcc/testsuite/g++.dg/other/sve_const_pred_1.C
+ 8e917bb35b9388b70357cb902699d1d3  gcc/testsuite/g++.dg/other/sve_const_pred_2.C
+ 0dc69c2dd7a720c198d13e9950583c17  gcc/testsuite/g++.dg/other/sve_const_pred_3.C
+ a25b97e0f7ed1435be6cf09ceb54170f  gcc/testsuite/g++.dg/other/sve_const_pred_4.C
+ c4fc45f42c54e8383c477f77c86ab523  gcc/testsuite/g++.dg/other/sve_tls_2.C
+ 58d886a64078671b65abbfddcb7d89bf  gcc/testsuite/g++.dg/other/sve_vcond_1.C
+ 6c2bf5f8c8f72ffc798a8ed9a430916e  gcc/testsuite/g++.dg/other/sve_vcond_1_run.C
  6312bd4cf43fd17e803778af8b1f2031  gcc/testsuite/g++.dg/other/switch1.C
  37c0f6f7c04f78d10db7b76974117a16  gcc/testsuite/g++.dg/other/switch2.C
  bb7141945a25ded3ef95f8a4fab53bff  gcc/testsuite/g++.dg/other/switch3.C
  9bae0d01ef429f94e58c536f39c9ca7b  gcc/testsuite/g++.dg/other/synth1.C
  b3cee6698f91dc967087653171b6e50b  gcc/testsuite/g++.dg/other/typedef1.C
  2ae83dd33030d45c71b8674e327b61aa  gcc/testsuite/g++.dg/other/typedef2.C
! 63b5dd85a5674b05a85ae628679572b0  gcc/testsuite/g++.dg/other/typedef3.C
  b69dc2479f4dab741a9c03d2e626d4ea  gcc/testsuite/g++.dg/other/typedef4.C
! 6633cdd77727369dd2174edb120422bb  gcc/testsuite/g++.dg/other/ucnid-1.C
  5c2adc76f21ce8f7182fe1930db8db73  gcc/testsuite/g++.dg/other/unreachable1.C
! 54c43007c45d973d99536b40a21a0a10  gcc/testsuite/g++.dg/other/unused1.C
  d94dedac2a05c257cba7f3d7bb2287f4  gcc/testsuite/g++.dg/other/var_copy-1.C
  6aa48be6aef2630759f48ff66b6424bd  gcc/testsuite/g++.dg/other/vararg-1.C
  60563e69386b8a906233c2d479c02e6b  gcc/testsuite/g++.dg/other/vararg-2.C
*************** de750a0f45576779662c617a85381256  gcc/te
*** 15816,15822 ****
  bbbc42226f302577b317dbefbed13e8a  gcc/testsuite/g++.dg/other/vthunk1.C
  920e26dc1d208f4b8eb154039ac70505  gcc/testsuite/g++.dg/other/warning1.C
  e01d22af2bf54a4df755dfb677defefb  gcc/testsuite/g++.dg/overload/VLA.C
! 31a1eb67025f875651678e52a1e2b3d1  gcc/testsuite/g++.dg/overload/addr1.C
  e78713a0179131f593c8dd8fb9214bc5  gcc/testsuite/g++.dg/overload/addr2.C
  7237d5fda21efc2bec2c4dd99601723c  gcc/testsuite/g++.dg/overload/ambig1.C
  ea3127f4b42d821f844905a93809eb92  gcc/testsuite/g++.dg/overload/ambig2.C
--- 16739,16745 ----
  bbbc42226f302577b317dbefbed13e8a  gcc/testsuite/g++.dg/other/vthunk1.C
  920e26dc1d208f4b8eb154039ac70505  gcc/testsuite/g++.dg/other/warning1.C
  e01d22af2bf54a4df755dfb677defefb  gcc/testsuite/g++.dg/overload/VLA.C
! e8ac1525d5c9d5904705096271ad2901  gcc/testsuite/g++.dg/overload/addr1.C
  e78713a0179131f593c8dd8fb9214bc5  gcc/testsuite/g++.dg/overload/addr2.C
  7237d5fda21efc2bec2c4dd99601723c  gcc/testsuite/g++.dg/overload/ambig1.C
  ea3127f4b42d821f844905a93809eb92  gcc/testsuite/g++.dg/overload/ambig2.C
*************** b71aeb26aa9311659d87b7de1be00dcc  gcc/te
*** 15829,15845 ****
  1e41ec11ca00276315dd010f205f9f90  gcc/testsuite/g++.dg/overload/autoptr1.C
  e549b742987ea4bf15156f2ff8b335da  gcc/testsuite/g++.dg/overload/builtin1.C
  3a79826fd499e94593a88f2c06436f3d  gcc/testsuite/g++.dg/overload/builtin2.C
! 63766fb1bce3bab4ad17a59d07a272d2  gcc/testsuite/g++.dg/overload/builtin3.C
  2808df88b455ae0dd789dc64c1e34b25  gcc/testsuite/g++.dg/overload/cond1.C
  5067a4c6731aae0336243d6867599e99  gcc/testsuite/g++.dg/overload/cond2.C
  6a731890845f26e24f289431fa9741d7  gcc/testsuite/g++.dg/overload/conv-op1.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
  cb54b440b3f2279a1129f78652af711c  gcc/testsuite/g++.dg/overload/defarg11.C
  ce3155531a697acb7fd04a7264aa57b2  gcc/testsuite/g++.dg/overload/defarg2.C
  73a3fe2d81aeb975c2d08651a11865c3  gcc/testsuite/g++.dg/overload/defarg3.C
! fe0dbe1f81b80b364b6cd8c9b5d5967e  gcc/testsuite/g++.dg/overload/defarg4.C
  a7bdff5fb030097fa47cc58ec7a9228f  gcc/testsuite/g++.dg/overload/defarg5.C
  585ebfbf2245e7fe76b73b0f1591a361  gcc/testsuite/g++.dg/overload/defarg6.C
  de833d8751ce7fbcf8622b1a3ccd7a5c  gcc/testsuite/g++.dg/overload/defarg7.C
--- 16752,16769 ----
  1e41ec11ca00276315dd010f205f9f90  gcc/testsuite/g++.dg/overload/autoptr1.C
  e549b742987ea4bf15156f2ff8b335da  gcc/testsuite/g++.dg/overload/builtin1.C
  3a79826fd499e94593a88f2c06436f3d  gcc/testsuite/g++.dg/overload/builtin2.C
! a0b8fd80bfd82adaa23c61a98df112fb  gcc/testsuite/g++.dg/overload/builtin3.C
  2808df88b455ae0dd789dc64c1e34b25  gcc/testsuite/g++.dg/overload/cond1.C
  5067a4c6731aae0336243d6867599e99  gcc/testsuite/g++.dg/overload/cond2.C
  6a731890845f26e24f289431fa9741d7  gcc/testsuite/g++.dg/overload/conv-op1.C
+ a728119e5f9989ed57498bfb03e79ac0  gcc/testsuite/g++.dg/overload/conv-op2.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
  cb54b440b3f2279a1129f78652af711c  gcc/testsuite/g++.dg/overload/defarg11.C
  ce3155531a697acb7fd04a7264aa57b2  gcc/testsuite/g++.dg/overload/defarg2.C
  73a3fe2d81aeb975c2d08651a11865c3  gcc/testsuite/g++.dg/overload/defarg3.C
! 35977191fe65e42cf6b3fc3e72684d0c  gcc/testsuite/g++.dg/overload/defarg4.C
  a7bdff5fb030097fa47cc58ec7a9228f  gcc/testsuite/g++.dg/overload/defarg5.C
  585ebfbf2245e7fe76b73b0f1591a361  gcc/testsuite/g++.dg/overload/defarg6.C
  de833d8751ce7fbcf8622b1a3ccd7a5c  gcc/testsuite/g++.dg/overload/defarg7.C
*************** de833d8751ce7fbcf8622b1a3ccd7a5c  gcc/te
*** 15848,15860 ****
  b4a1e0bed161291d52feb110f8fb3e84  gcc/testsuite/g++.dg/overload/ellipsis1.C
  28f4a7b5875f291539a2a017a5e428ce  gcc/testsuite/g++.dg/overload/ellipsis2.C
  6f5a1edf8c09bfddc5a8ebf00f192c8d  gcc/testsuite/g++.dg/overload/ellipsis3.C
! eb8955b4f4568177f29d90808e350304  gcc/testsuite/g++.dg/overload/error1.C
! e4753bb05dc59e57b5bb60b1877f1fc1  gcc/testsuite/g++.dg/overload/error2.C
  e7b133e82eab6d91b1329d9db63c31d1  gcc/testsuite/g++.dg/overload/error3.C
  a251cb5e0f82a981b3f2cd7163bc4253  gcc/testsuite/g++.dg/overload/extern-C-1.C
  799b32bc675b693f7b09c8e88e1f6ff9  gcc/testsuite/g++.dg/overload/extern-C-2.C
  8ba0908aacfc8a51983030035e4562c9  gcc/testsuite/g++.dg/overload/koenig1.C
! a29b6caa05b24423db00096e576bf2be  gcc/testsuite/g++.dg/overload/koenig2.C
  53b4a1648421c533b9cf26423d529dc0  gcc/testsuite/g++.dg/overload/member1.C
  e5c64067fac4b9dcfc16ca552eabfc2c  gcc/testsuite/g++.dg/overload/member2.C
  1b0fbab7d8f3687b841e09b252eb3654  gcc/testsuite/g++.dg/overload/new1.C
--- 16772,16784 ----
  b4a1e0bed161291d52feb110f8fb3e84  gcc/testsuite/g++.dg/overload/ellipsis1.C
  28f4a7b5875f291539a2a017a5e428ce  gcc/testsuite/g++.dg/overload/ellipsis2.C
  6f5a1edf8c09bfddc5a8ebf00f192c8d  gcc/testsuite/g++.dg/overload/ellipsis3.C
! 0eb2f7dcb54c79750bf8b846081a31f6  gcc/testsuite/g++.dg/overload/error1.C
! 60a23cc821b7345d2676558d3277697f  gcc/testsuite/g++.dg/overload/error2.C
  e7b133e82eab6d91b1329d9db63c31d1  gcc/testsuite/g++.dg/overload/error3.C
  a251cb5e0f82a981b3f2cd7163bc4253  gcc/testsuite/g++.dg/overload/extern-C-1.C
  799b32bc675b693f7b09c8e88e1f6ff9  gcc/testsuite/g++.dg/overload/extern-C-2.C
  8ba0908aacfc8a51983030035e4562c9  gcc/testsuite/g++.dg/overload/koenig1.C
! 29143eff93ec48323a2fbbd3213ed727  gcc/testsuite/g++.dg/overload/koenig2.C
  53b4a1648421c533b9cf26423d529dc0  gcc/testsuite/g++.dg/overload/member1.C
  e5c64067fac4b9dcfc16ca552eabfc2c  gcc/testsuite/g++.dg/overload/member2.C
  1b0fbab7d8f3687b841e09b252eb3654  gcc/testsuite/g++.dg/overload/new1.C
*************** ffc2123ab343a779a615e519a991e1d9  gcc/te
*** 15863,15875 ****
  964600658be3f75b988efd034a9cc438  gcc/testsuite/g++.dg/overload/operator2.C
  e28afd768a2d5516c9bb5a7357c72738  gcc/testsuite/g++.dg/overload/operator3.C
  dcdfcb2530eb653d4b7e6f556992d19d  gcc/testsuite/g++.dg/overload/operator4.C
! 8164889aab3e60d6189d58b51d25774a  gcc/testsuite/g++.dg/overload/operator5.C
  0acbc2855c72efb17bfcf35234e3c9b7  gcc/testsuite/g++.dg/overload/operator6.C
! e290ad6ee59a5ec0b5557a052568a78d  gcc/testsuite/g++.dg/overload/pmf1.C
  92e24f7dfd7fc511e68b61e3c390f729  gcc/testsuite/g++.dg/overload/pmf2.C
  89dadeb91db9b7e2c5b173a5eff8a287  gcc/testsuite/g++.dg/overload/pmf3.C
  a436e857943377addaac3203f4d85eb4  gcc/testsuite/g++.dg/overload/prom1.C
! dbdde512ef922a0ffbdf918206043c23  gcc/testsuite/g++.dg/overload/ref-conv1.C
  88f1a13d8980d16d9fde1b3b2a39821b  gcc/testsuite/g++.dg/overload/ref-conv2.C
  02856d8d11be85bdeb888d95d224df01  gcc/testsuite/g++.dg/overload/ref1.C
  4d59760484bbf6fd355f658032664fa4  gcc/testsuite/g++.dg/overload/reftemp1.C
--- 16787,16799 ----
  964600658be3f75b988efd034a9cc438  gcc/testsuite/g++.dg/overload/operator2.C
  e28afd768a2d5516c9bb5a7357c72738  gcc/testsuite/g++.dg/overload/operator3.C
  dcdfcb2530eb653d4b7e6f556992d19d  gcc/testsuite/g++.dg/overload/operator4.C
! ecc217fd3257caf539a7d5322c023048  gcc/testsuite/g++.dg/overload/operator5.C
  0acbc2855c72efb17bfcf35234e3c9b7  gcc/testsuite/g++.dg/overload/operator6.C
! 1e646cd0268e48cb7fce3c641c350ed1  gcc/testsuite/g++.dg/overload/pmf1.C
  92e24f7dfd7fc511e68b61e3c390f729  gcc/testsuite/g++.dg/overload/pmf2.C
  89dadeb91db9b7e2c5b173a5eff8a287  gcc/testsuite/g++.dg/overload/pmf3.C
  a436e857943377addaac3203f4d85eb4  gcc/testsuite/g++.dg/overload/prom1.C
! 020846762e4fd425690e515e1befec0b  gcc/testsuite/g++.dg/overload/ref-conv1.C
  88f1a13d8980d16d9fde1b3b2a39821b  gcc/testsuite/g++.dg/overload/ref-conv2.C
  02856d8d11be85bdeb888d95d224df01  gcc/testsuite/g++.dg/overload/ref1.C
  4d59760484bbf6fd355f658032664fa4  gcc/testsuite/g++.dg/overload/reftemp1.C
*************** e8d2b5f4633ed5ca39b035852658ba5d  gcc/te
*** 15882,15888 ****
  053bc5744de44c3637cdea4e8f67c443  gcc/testsuite/g++.dg/overload/template2.C
  77913297a13e3346eae87df8ebe54edd  gcc/testsuite/g++.dg/overload/template3.C
  8b9c7fa9fed9ba378c38b41807abafeb  gcc/testsuite/g++.dg/overload/template4.C
! 273007ff9391c942a608b40c406b70ab  gcc/testsuite/g++.dg/overload/template5.C
  539d6c9e97785fe65d88de514cb1e9eb  gcc/testsuite/g++.dg/overload/unknown1.C
  85ece6c01345af5b8d407b8e19d781f9  gcc/testsuite/g++.dg/overload/using1.C
  d5e5bdf2b72155c8375326918e59a891  gcc/testsuite/g++.dg/overload/using2.C
--- 16806,16813 ----
  053bc5744de44c3637cdea4e8f67c443  gcc/testsuite/g++.dg/overload/template2.C
  77913297a13e3346eae87df8ebe54edd  gcc/testsuite/g++.dg/overload/template3.C
  8b9c7fa9fed9ba378c38b41807abafeb  gcc/testsuite/g++.dg/overload/template4.C
! 5aa08eb317a4f0641d51530543a4932f  gcc/testsuite/g++.dg/overload/template5.C
! d0aceebd661652ccdb057c8c6f6fd73d  gcc/testsuite/g++.dg/overload/template6.C
  539d6c9e97785fe65d88de514cb1e9eb  gcc/testsuite/g++.dg/overload/unknown1.C
  85ece6c01345af5b8d407b8e19d781f9  gcc/testsuite/g++.dg/overload/using1.C
  d5e5bdf2b72155c8375326918e59a891  gcc/testsuite/g++.dg/overload/using2.C
*************** ce374a0cf8b0cc90cc542e40440411ea  gcc/te
*** 15914,15922 ****
  c24bbfec3edcf64bcc9f37ad738561f6  gcc/testsuite/g++.dg/parse/ambig9.C
  bc8c4ed875b2c4b0e6b1ec9bcec25d41  gcc/testsuite/g++.dg/parse/angle-bracket.C
  0befa26c74e8cbfa279f5b49a61408eb  gcc/testsuite/g++.dg/parse/angle-bracket2.C
! 4d4f8ace7c1f4d0f32bbd4530d5b07c1  gcc/testsuite/g++.dg/parse/args1.C
  daf5f5fa938643351cbd008ccc3bb60f  gcc/testsuite/g++.dg/parse/array-size1.C
! cb1d8b1932a8d9b7101512c947816f33  gcc/testsuite/g++.dg/parse/array-size2.C
  765f7e5bc908ac50e66bdeeac57851f0  gcc/testsuite/g++.dg/parse/asm1.C
  16b06ccce5dbf6640797da7bada365f5  gcc/testsuite/g++.dg/parse/asm2.C
  231816ebf0d1f8c23a7446536f02f2fa  gcc/testsuite/g++.dg/parse/asm3.C
--- 16839,16848 ----
  c24bbfec3edcf64bcc9f37ad738561f6  gcc/testsuite/g++.dg/parse/ambig9.C
  bc8c4ed875b2c4b0e6b1ec9bcec25d41  gcc/testsuite/g++.dg/parse/angle-bracket.C
  0befa26c74e8cbfa279f5b49a61408eb  gcc/testsuite/g++.dg/parse/angle-bracket2.C
! 4d20fab4130f31b7ec276380c3136f16  gcc/testsuite/g++.dg/parse/args1.C
  daf5f5fa938643351cbd008ccc3bb60f  gcc/testsuite/g++.dg/parse/array-size1.C
! 4087b31a8ee936c7f226358b9350d268  gcc/testsuite/g++.dg/parse/array-size2.C
! caa2ee43dfe02eccbe80ecf8b55cbfc5  gcc/testsuite/g++.dg/parse/array-size3.C
  765f7e5bc908ac50e66bdeeac57851f0  gcc/testsuite/g++.dg/parse/asm1.C
  16b06ccce5dbf6640797da7bada365f5  gcc/testsuite/g++.dg/parse/asm2.C
  231816ebf0d1f8c23a7446536f02f2fa  gcc/testsuite/g++.dg/parse/asm3.C
*************** c51ee1846816a95e9af6e3d6b9e65695  gcc/te
*** 15926,15932 ****
  fc7bb3a300dd247cd39bd47963487340  gcc/testsuite/g++.dg/parse/attr-externally-visible-2.C
  d84032d5d61187d741ca91d1d16ee607  gcc/testsuite/g++.dg/parse/attr1.C
  3d4935439f09d7756194078a14580819  gcc/testsuite/g++.dg/parse/attr2.C
! 84930854b0b0c72879816ff973b235bc  gcc/testsuite/g++.dg/parse/attr3.C
  3a643464cf275220f2334b2b6c6cc7a5  gcc/testsuite/g++.dg/parse/bitfield1.C
  27e83c1da0d906d029996f2a416740a5  gcc/testsuite/g++.dg/parse/bitfield2.C
  ca4235a8b75acbf100fc21c249073ba8  gcc/testsuite/g++.dg/parse/bitfield3.C
--- 16852,16858 ----
  fc7bb3a300dd247cd39bd47963487340  gcc/testsuite/g++.dg/parse/attr-externally-visible-2.C
  d84032d5d61187d741ca91d1d16ee607  gcc/testsuite/g++.dg/parse/attr1.C
  3d4935439f09d7756194078a14580819  gcc/testsuite/g++.dg/parse/attr2.C
! a2620501321f8a5646f2c9de16693667  gcc/testsuite/g++.dg/parse/attr3.C
  3a643464cf275220f2334b2b6c6cc7a5  gcc/testsuite/g++.dg/parse/bitfield1.C
  27e83c1da0d906d029996f2a416740a5  gcc/testsuite/g++.dg/parse/bitfield2.C
  ca4235a8b75acbf100fc21c249073ba8  gcc/testsuite/g++.dg/parse/bitfield3.C
*************** b325bb9ea4e508f973b222d3c07380fd  gcc/te
*** 15934,15945 ****
  472e82655269a7428276db0560093d16  gcc/testsuite/g++.dg/parse/bitfield5.C
  bfad6471d257f993e34bea9952c00fbe  gcc/testsuite/g++.dg/parse/break-in-for.C
  f804bc56f03de2883d5686276182c955  gcc/testsuite/g++.dg/parse/builtin1.C
! d8b50f7519f0c33caf6717bf07e5c8ae  gcc/testsuite/g++.dg/parse/builtin2.C
  012dcd0e9b2243e71ee6be0c01ac6a6d  gcc/testsuite/g++.dg/parse/cast1.C
  173232583884d727bdecd6f7deef03db  gcc/testsuite/g++.dg/parse/cast2.C
  51e1b0497a2a8269c9cb3add880916ac  gcc/testsuite/g++.dg/parse/casting-operator1.C
  69f48dece672507159e28e5ae62e9640  gcc/testsuite/g++.dg/parse/casting-operator2.C
  624bb3ca0554e6b3fb470f487ec8c1cc  gcc/testsuite/g++.dg/parse/catch1.C
  b768f688a17e6fb93e41198625381298  gcc/testsuite/g++.dg/parse/class1.C
  2efa6438f8b09367340ea4cfa19221cf  gcc/testsuite/g++.dg/parse/class2.C
  c5147fdec1f8af57aa91c7960d61a37c  gcc/testsuite/g++.dg/parse/colon-autocorrect-1.C
--- 16860,16872 ----
  472e82655269a7428276db0560093d16  gcc/testsuite/g++.dg/parse/bitfield5.C
  bfad6471d257f993e34bea9952c00fbe  gcc/testsuite/g++.dg/parse/break-in-for.C
  f804bc56f03de2883d5686276182c955  gcc/testsuite/g++.dg/parse/builtin1.C
! 795221d61cda1e35a62b1bb3b3bbb7fa  gcc/testsuite/g++.dg/parse/builtin2.C
  012dcd0e9b2243e71ee6be0c01ac6a6d  gcc/testsuite/g++.dg/parse/cast1.C
  173232583884d727bdecd6f7deef03db  gcc/testsuite/g++.dg/parse/cast2.C
  51e1b0497a2a8269c9cb3add880916ac  gcc/testsuite/g++.dg/parse/casting-operator1.C
  69f48dece672507159e28e5ae62e9640  gcc/testsuite/g++.dg/parse/casting-operator2.C
  624bb3ca0554e6b3fb470f487ec8c1cc  gcc/testsuite/g++.dg/parse/catch1.C
+ d927c844937eb2b05e6161826826ee85  gcc/testsuite/g++.dg/parse/catch2.C
  b768f688a17e6fb93e41198625381298  gcc/testsuite/g++.dg/parse/class1.C
  2efa6438f8b09367340ea4cfa19221cf  gcc/testsuite/g++.dg/parse/class2.C
  c5147fdec1f8af57aa91c7960d61a37c  gcc/testsuite/g++.dg/parse/colon-autocorrect-1.C
*************** b43f54f7685ba9c6743e2c7a3cd0dd8d  gcc/te
*** 15956,15962 ****
  5e710a192eedbb63fef23d8e83b354e1  gcc/testsuite/g++.dg/parse/constant1.C
  b9d605265e28097c16a8dd9715ebcd23  gcc/testsuite/g++.dg/parse/constant2.C
  18865792b57aa709f57045520da4abd5  gcc/testsuite/g++.dg/parse/constant3.C
! 9a63ce8f8dad717885b4f9f53592056c  gcc/testsuite/g++.dg/parse/constant4.C
  01fe1ea01ab62a3c0add274c14b1e9a0  gcc/testsuite/g++.dg/parse/constant5.C
  1f1ea9b1dfbfdad52826fde93326f9d6  gcc/testsuite/g++.dg/parse/constant6.C
  e773e9fc506890dda1d6fbb37fd77ae4  gcc/testsuite/g++.dg/parse/constant7.C
--- 16883,16889 ----
  5e710a192eedbb63fef23d8e83b354e1  gcc/testsuite/g++.dg/parse/constant1.C
  b9d605265e28097c16a8dd9715ebcd23  gcc/testsuite/g++.dg/parse/constant2.C
  18865792b57aa709f57045520da4abd5  gcc/testsuite/g++.dg/parse/constant3.C
! b4ad8051949ca376a6cc70a559e52951  gcc/testsuite/g++.dg/parse/constant4.C
  01fe1ea01ab62a3c0add274c14b1e9a0  gcc/testsuite/g++.dg/parse/constant5.C
  1f1ea9b1dfbfdad52826fde93326f9d6  gcc/testsuite/g++.dg/parse/constant6.C
  e773e9fc506890dda1d6fbb37fd77ae4  gcc/testsuite/g++.dg/parse/constant7.C
*************** e773e9fc506890dda1d6fbb37fd77ae4  gcc/te
*** 15965,15984 ****
  d9621983a7cb4db7ed484bed67203810  gcc/testsuite/g++.dg/parse/constructor3.C
  5a399fbfb7b6718be8ad9eb3ea24af68  gcc/testsuite/g++.dg/parse/conv_op1.C
  721a281ff33124a1c49ed8d68d2419fb  gcc/testsuite/g++.dg/parse/crash1.C
! dec0376fa21886684163d71a677f2d87  gcc/testsuite/g++.dg/parse/crash10.C
  4435ac4f24fa5731340d43e4ff33bb31  gcc/testsuite/g++.dg/parse/crash11.C
! b87a94531050f05de28b248b71fb77d7  gcc/testsuite/g++.dg/parse/crash12.C
  3b73d2a22d7abe1b3454cf524a31bd3c  gcc/testsuite/g++.dg/parse/crash13.C
  8fc5d6dab19b9f89401818b0138ffa98  gcc/testsuite/g++.dg/parse/crash14.C
  a61247b0784709761dc6bf67cf0c5a0c  gcc/testsuite/g++.dg/parse/crash15.C
  1715d57823b1ff6a57385e3c29065708  gcc/testsuite/g++.dg/parse/crash16.C
  d8abd079d4556274ffc3d12c8558da15  gcc/testsuite/g++.dg/parse/crash17.C
! 538f0f1bf0cea39406cc427e43ee96f9  gcc/testsuite/g++.dg/parse/crash18.C
! 885300f8f442ade64d801eeb7dc2d3ec  gcc/testsuite/g++.dg/parse/crash19.C
  763dc11e85b1839d0dbe23a9460bf2df  gcc/testsuite/g++.dg/parse/crash2.C
! 41f1975886978c8a45faf755b6755922  gcc/testsuite/g++.dg/parse/crash20.C
! 54d1a624e21b50ff4f989e1f15a378dc  gcc/testsuite/g++.dg/parse/crash21.C
! cacf593b9486ea637d570af49a85d91d  gcc/testsuite/g++.dg/parse/crash22.C
  8b8f5d08ed05973b2184f7b2d97418e4  gcc/testsuite/g++.dg/parse/crash23.C
  f82fb7e2ff5fb5225e6ca7b3298b1409  gcc/testsuite/g++.dg/parse/crash24.C
  284c9d1c6adc9ab8c728e9695edc40b9  gcc/testsuite/g++.dg/parse/crash25.C
--- 16892,16911 ----
  d9621983a7cb4db7ed484bed67203810  gcc/testsuite/g++.dg/parse/constructor3.C
  5a399fbfb7b6718be8ad9eb3ea24af68  gcc/testsuite/g++.dg/parse/conv_op1.C
  721a281ff33124a1c49ed8d68d2419fb  gcc/testsuite/g++.dg/parse/crash1.C
! 2af76aeb0c88a4458d4439db563e0893  gcc/testsuite/g++.dg/parse/crash10.C
  4435ac4f24fa5731340d43e4ff33bb31  gcc/testsuite/g++.dg/parse/crash11.C
! ba3ce4aeaf342d1d4f96b2f4eb0ce87a  gcc/testsuite/g++.dg/parse/crash12.C
  3b73d2a22d7abe1b3454cf524a31bd3c  gcc/testsuite/g++.dg/parse/crash13.C
  8fc5d6dab19b9f89401818b0138ffa98  gcc/testsuite/g++.dg/parse/crash14.C
  a61247b0784709761dc6bf67cf0c5a0c  gcc/testsuite/g++.dg/parse/crash15.C
  1715d57823b1ff6a57385e3c29065708  gcc/testsuite/g++.dg/parse/crash16.C
  d8abd079d4556274ffc3d12c8558da15  gcc/testsuite/g++.dg/parse/crash17.C
! 59417db75a907524c7c380a22ed23ba8  gcc/testsuite/g++.dg/parse/crash18.C
! eb32a88d28a61859bc72ced3dd8d06d6  gcc/testsuite/g++.dg/parse/crash19.C
  763dc11e85b1839d0dbe23a9460bf2df  gcc/testsuite/g++.dg/parse/crash2.C
! b84d930c04ca612c1edfd721a6b22909  gcc/testsuite/g++.dg/parse/crash20.C
! ad522b1ad2583c4f8a4b7c1b0563b63d  gcc/testsuite/g++.dg/parse/crash21.C
! 9d7a1a948f0d73c5d513cefc42adf2a1  gcc/testsuite/g++.dg/parse/crash22.C
  8b8f5d08ed05973b2184f7b2d97418e4  gcc/testsuite/g++.dg/parse/crash23.C
  f82fb7e2ff5fb5225e6ca7b3298b1409  gcc/testsuite/g++.dg/parse/crash24.C
  284c9d1c6adc9ab8c728e9695edc40b9  gcc/testsuite/g++.dg/parse/crash25.C
*************** b81fff544050c834b6a58605e98eb828  gcc/te
*** 15989,15995 ****
  1893d49612e9a07e189ba50eff994ac3  gcc/testsuite/g++.dg/parse/crash3.C
  291361ab389af29d2fe990be6fcbc43b  gcc/testsuite/g++.dg/parse/crash30.C
  3f377b1238236c8a670ec95bf9a0a396  gcc/testsuite/g++.dg/parse/crash31.C
! d803021f22dfc38b8a134bf943ae1777  gcc/testsuite/g++.dg/parse/crash32.C
  d35a83b30077f54e9a04bed1c6946996  gcc/testsuite/g++.dg/parse/crash33.C
  44bb2b0c8bcd18955a57cb24fc95e2ff  gcc/testsuite/g++.dg/parse/crash34.C
  5194e08088db0ba805ec7f6468c6a749  gcc/testsuite/g++.dg/parse/crash35.C
--- 16916,16922 ----
  1893d49612e9a07e189ba50eff994ac3  gcc/testsuite/g++.dg/parse/crash3.C
  291361ab389af29d2fe990be6fcbc43b  gcc/testsuite/g++.dg/parse/crash30.C
  3f377b1238236c8a670ec95bf9a0a396  gcc/testsuite/g++.dg/parse/crash31.C
! 0387da9d39ca10d79a678d23662f5d0f  gcc/testsuite/g++.dg/parse/crash32.C
  d35a83b30077f54e9a04bed1c6946996  gcc/testsuite/g++.dg/parse/crash33.C
  44bb2b0c8bcd18955a57cb24fc95e2ff  gcc/testsuite/g++.dg/parse/crash34.C
  5194e08088db0ba805ec7f6468c6a749  gcc/testsuite/g++.dg/parse/crash35.C
*************** a082e1ec4d2ff1d8b432964e3209d790  gcc/te
*** 15998,16004 ****
  31832dc66ad8a82a5f2ea0bddac95619  gcc/testsuite/g++.dg/parse/crash38.C
  2a3c48e62d61fe6c85a7fc5800e98b77  gcc/testsuite/g++.dg/parse/crash39.C
  ea254dd6e59a027998efd9cbcb6f405d  gcc/testsuite/g++.dg/parse/crash4.C
! 19dd361c1c72494354ff809d6ada31d1  gcc/testsuite/g++.dg/parse/crash40.C
  2da0b9e200467905b73281833f10ce5c  gcc/testsuite/g++.dg/parse/crash41.C
  aef7511bd3c7bf321e247bd64a72f884  gcc/testsuite/g++.dg/parse/crash42.C
  89b8c6bdffaf8f11220b8cb27d5c680a  gcc/testsuite/g++.dg/parse/crash43.C
--- 16925,16931 ----
  31832dc66ad8a82a5f2ea0bddac95619  gcc/testsuite/g++.dg/parse/crash38.C
  2a3c48e62d61fe6c85a7fc5800e98b77  gcc/testsuite/g++.dg/parse/crash39.C
  ea254dd6e59a027998efd9cbcb6f405d  gcc/testsuite/g++.dg/parse/crash4.C
! a65f3be221a7566812e1c5eea4b01858  gcc/testsuite/g++.dg/parse/crash40.C
  2da0b9e200467905b73281833f10ce5c  gcc/testsuite/g++.dg/parse/crash41.C
  aef7511bd3c7bf321e247bd64a72f884  gcc/testsuite/g++.dg/parse/crash42.C
  89b8c6bdffaf8f11220b8cb27d5c680a  gcc/testsuite/g++.dg/parse/crash43.C
*************** d7aa943dfdc3e99eede0b5a6dc692306  gcc/te
*** 16020,16060 ****
  71b15313ba16339bb71e8e5d55013108  gcc/testsuite/g++.dg/parse/crash58.C
  01be7ea2b97a83045196ea78cd77b795  gcc/testsuite/g++.dg/parse/crash59.C
  3cae354cb01ecb5097fe78c4d17c8ccd  gcc/testsuite/g++.dg/parse/crash6.C
! 84cac2482e8cc58f9b56a35359690164  gcc/testsuite/g++.dg/parse/crash60.C
! 02796255ff9d4aacb61ea075da81bea0  gcc/testsuite/g++.dg/parse/crash61.C
  9bd0967217cd432a1ef31b339800009b  gcc/testsuite/g++.dg/parse/crash62.C
  3dba7098c161cf3a24dd545f598d7450  gcc/testsuite/g++.dg/parse/crash63.C
  9780b0576f8f381caa012fd27c2b608b  gcc/testsuite/g++.dg/parse/crash64.C
  3fae4596904aa2d63a517ea2ea3ed98a  gcc/testsuite/g++.dg/parse/crash65.C
  07930e0dbd20d96ea69be3ee056c6870  gcc/testsuite/g++.dg/parse/crash66.C
! b01e370f78d3f590266a0c2e361ea94e  gcc/testsuite/g++.dg/parse/crash67.C
  34393b72e5dec85fca930dee15e2f669  gcc/testsuite/g++.dg/parse/crash7.C
  5818f331167c496db06ad694932a1beb  gcc/testsuite/g++.dg/parse/crash9.C
  5940e29a523673e2c47048c21c11d678  gcc/testsuite/g++.dg/parse/ctor1.C
  31da095055ef151d5be0868d53a4bdcb  gcc/testsuite/g++.dg/parse/ctor2.C
  b3490a1d11f612825f12c98d6c08c3cc  gcc/testsuite/g++.dg/parse/ctor3.C
  c98adb0de8743928eaf1466baf071cbf  gcc/testsuite/g++.dg/parse/ctor4.C
! ecb95d97861e13e0906b5bdd938f7e2a  gcc/testsuite/g++.dg/parse/ctor5.C
  029f99332fa546e28fc0e5a825a5db37  gcc/testsuite/g++.dg/parse/ctor6.C
  cd3a6bbede42f377a3da5af13e16ebb5  gcc/testsuite/g++.dg/parse/ctor7.C
  81e65c2a9ba3aa29d6a354330d5691cb  gcc/testsuite/g++.dg/parse/ctor8.C
! 6a2dccebcb4556545a78e5446705ee81  gcc/testsuite/g++.dg/parse/ctor9.C
  7c7ea7012460ffe514a8512545b63e58  gcc/testsuite/g++.dg/parse/dce1.C
! 5119b65d3afb39453ef8933f7ce18358  gcc/testsuite/g++.dg/parse/decl-specifier-1.C
  d96d10ff70eaee4ace5ec67b50c24817  gcc/testsuite/g++.dg/parse/def-tmpl-arg1.C
  cc3bbadad96b1783abf727940e6be572  gcc/testsuite/g++.dg/parse/defarg1.C
  d72df6d061e8fff8ce0bb0717e4f05bc  gcc/testsuite/g++.dg/parse/defarg10.C
  529313f5ea976406c251194ef2f9e0b0  gcc/testsuite/g++.dg/parse/defarg11.C
! cfc29819542e714a8f85b3361d0dfddd  gcc/testsuite/g++.dg/parse/defarg12.C
  1cf50bc21def35642a12800d770e0609  gcc/testsuite/g++.dg/parse/defarg13.C
  010df34c714b830e2adbcaf95afdec27  gcc/testsuite/g++.dg/parse/defarg14.C
  940fdfa84af569b5525f54e635438b5b  gcc/testsuite/g++.dg/parse/defarg15.C
  10563fde273c2fb4f6e0c4a5a9f5b387  gcc/testsuite/g++.dg/parse/defarg16.C
  1bff48df8c11aeda15e3471bf1a33226  gcc/testsuite/g++.dg/parse/defarg2.C
  09fddda5e825bb04b1493087728c9162  gcc/testsuite/g++.dg/parse/defarg3.C
! acfa06861c017963f9c07523acb57fdf  gcc/testsuite/g++.dg/parse/defarg4.C
  bdbfe5453980b13fed6df11afd4e2141  gcc/testsuite/g++.dg/parse/defarg5.C
! 8649c92bbc4962e03bb01e44973f0119  gcc/testsuite/g++.dg/parse/defarg6.C
  df79a42075eeb5573f55e49dcd6c933e  gcc/testsuite/g++.dg/parse/defarg7.C
  e2fbf3072476c0cbc11390fbb8a885c4  gcc/testsuite/g++.dg/parse/defarg8.C
  1098b1d3a2b2d9ed73e976190957b19d  gcc/testsuite/g++.dg/parse/defarg9.C
--- 16947,16989 ----
  71b15313ba16339bb71e8e5d55013108  gcc/testsuite/g++.dg/parse/crash58.C
  01be7ea2b97a83045196ea78cd77b795  gcc/testsuite/g++.dg/parse/crash59.C
  3cae354cb01ecb5097fe78c4d17c8ccd  gcc/testsuite/g++.dg/parse/crash6.C
! 42e40332697734bbf2a5f363a0412b58  gcc/testsuite/g++.dg/parse/crash60.C
! 56df7e2152fccb934ef7891103aa596f  gcc/testsuite/g++.dg/parse/crash61.C
  9bd0967217cd432a1ef31b339800009b  gcc/testsuite/g++.dg/parse/crash62.C
  3dba7098c161cf3a24dd545f598d7450  gcc/testsuite/g++.dg/parse/crash63.C
  9780b0576f8f381caa012fd27c2b608b  gcc/testsuite/g++.dg/parse/crash64.C
  3fae4596904aa2d63a517ea2ea3ed98a  gcc/testsuite/g++.dg/parse/crash65.C
  07930e0dbd20d96ea69be3ee056c6870  gcc/testsuite/g++.dg/parse/crash66.C
! d2a1c0aeebb2a24b610c23275c77d0b4  gcc/testsuite/g++.dg/parse/crash67.C
! 781c7565551294a35c28556fa0b0f31d  gcc/testsuite/g++.dg/parse/crash68.C
  34393b72e5dec85fca930dee15e2f669  gcc/testsuite/g++.dg/parse/crash7.C
  5818f331167c496db06ad694932a1beb  gcc/testsuite/g++.dg/parse/crash9.C
  5940e29a523673e2c47048c21c11d678  gcc/testsuite/g++.dg/parse/ctor1.C
+ 6a4d22d64949d622a19d9e79684aad65  gcc/testsuite/g++.dg/parse/ctor10.C
  31da095055ef151d5be0868d53a4bdcb  gcc/testsuite/g++.dg/parse/ctor2.C
  b3490a1d11f612825f12c98d6c08c3cc  gcc/testsuite/g++.dg/parse/ctor3.C
  c98adb0de8743928eaf1466baf071cbf  gcc/testsuite/g++.dg/parse/ctor4.C
! 38f499b6bc73e7a54e6e1dd10ff2bf15  gcc/testsuite/g++.dg/parse/ctor5.C
  029f99332fa546e28fc0e5a825a5db37  gcc/testsuite/g++.dg/parse/ctor6.C
  cd3a6bbede42f377a3da5af13e16ebb5  gcc/testsuite/g++.dg/parse/ctor7.C
  81e65c2a9ba3aa29d6a354330d5691cb  gcc/testsuite/g++.dg/parse/ctor8.C
! b2ccfebda09160ba5d123eda421ebd55  gcc/testsuite/g++.dg/parse/ctor9.C
  7c7ea7012460ffe514a8512545b63e58  gcc/testsuite/g++.dg/parse/dce1.C
! 2c5a1fbd16e2d904ec0fcc03ec456555  gcc/testsuite/g++.dg/parse/decl-specifier-1.C
  d96d10ff70eaee4ace5ec67b50c24817  gcc/testsuite/g++.dg/parse/def-tmpl-arg1.C
  cc3bbadad96b1783abf727940e6be572  gcc/testsuite/g++.dg/parse/defarg1.C
  d72df6d061e8fff8ce0bb0717e4f05bc  gcc/testsuite/g++.dg/parse/defarg10.C
  529313f5ea976406c251194ef2f9e0b0  gcc/testsuite/g++.dg/parse/defarg11.C
! 5a1f9c8a4d98724fc012ff89fc77eb27  gcc/testsuite/g++.dg/parse/defarg12.C
  1cf50bc21def35642a12800d770e0609  gcc/testsuite/g++.dg/parse/defarg13.C
  010df34c714b830e2adbcaf95afdec27  gcc/testsuite/g++.dg/parse/defarg14.C
  940fdfa84af569b5525f54e635438b5b  gcc/testsuite/g++.dg/parse/defarg15.C
  10563fde273c2fb4f6e0c4a5a9f5b387  gcc/testsuite/g++.dg/parse/defarg16.C
  1bff48df8c11aeda15e3471bf1a33226  gcc/testsuite/g++.dg/parse/defarg2.C
  09fddda5e825bb04b1493087728c9162  gcc/testsuite/g++.dg/parse/defarg3.C
! 9205511ef738d45ff2c2d490d0096972  gcc/testsuite/g++.dg/parse/defarg4.C
  bdbfe5453980b13fed6df11afd4e2141  gcc/testsuite/g++.dg/parse/defarg5.C
! 678f064b5748e2170b7cde4ce0fd5c70  gcc/testsuite/g++.dg/parse/defarg6.C
  df79a42075eeb5573f55e49dcd6c933e  gcc/testsuite/g++.dg/parse/defarg7.C
  e2fbf3072476c0cbc11390fbb8a885c4  gcc/testsuite/g++.dg/parse/defarg8.C
  1098b1d3a2b2d9ed73e976190957b19d  gcc/testsuite/g++.dg/parse/defarg9.C
*************** a406f4dfcc4d1199effdd47c1f57d137  gcc/te
*** 16062,16068 ****
  3ec69cf5f36af365858f3b505931800b  gcc/testsuite/g++.dg/parse/dot1.C
  c8d90b5459dbdf7bf29e5b2a79f38d17  gcc/testsuite/g++.dg/parse/dtor1.C
  23c806ba9e6196854cbbb11ad8950882  gcc/testsuite/g++.dg/parse/dtor10.C
! 9af20f2ed80bb687afac1f85d9e1dad4  gcc/testsuite/g++.dg/parse/dtor11.C
  2d72f9efae372fbca9d31f234d0395c1  gcc/testsuite/g++.dg/parse/dtor12.C
  3f6406a3f26489e415e260d6fdddb4e5  gcc/testsuite/g++.dg/parse/dtor13.C
  ced832c704713d5dd4581483a10c8a33  gcc/testsuite/g++.dg/parse/dtor14.C
--- 16991,16997 ----
  3ec69cf5f36af365858f3b505931800b  gcc/testsuite/g++.dg/parse/dot1.C
  c8d90b5459dbdf7bf29e5b2a79f38d17  gcc/testsuite/g++.dg/parse/dtor1.C
  23c806ba9e6196854cbbb11ad8950882  gcc/testsuite/g++.dg/parse/dtor10.C
! a575cbd3d6c23d5f2fda52ee2477968e  gcc/testsuite/g++.dg/parse/dtor11.C
  2d72f9efae372fbca9d31f234d0395c1  gcc/testsuite/g++.dg/parse/dtor12.C
  3f6406a3f26489e415e260d6fdddb4e5  gcc/testsuite/g++.dg/parse/dtor13.C
  ced832c704713d5dd4581483a10c8a33  gcc/testsuite/g++.dg/parse/dtor14.C
*************** bf7b37ee4a0b5b5d026b319a00e70924  gcc/te
*** 16089,16095 ****
  82a3873f5aec50e90ac9dc9b389b47d7  gcc/testsuite/g++.dg/parse/enum12.C
  e921222a9bac0af666c333368c4a788d  gcc/testsuite/g++.dg/parse/enum13.C
  7db35a121c5e06c218be6e74693c8270  gcc/testsuite/g++.dg/parse/enum2.C
! b6417b0027d2c08da74d972e5e9d29ca  gcc/testsuite/g++.dg/parse/enum3.C
  37fc43724f8801d8874bb3001647ef4f  gcc/testsuite/g++.dg/parse/enum4.C
  2d3074d2f4bfaa5326474cb816f9950b  gcc/testsuite/g++.dg/parse/enum5.C
  e5ae40b2a9f11461c5b25742c8e014c9  gcc/testsuite/g++.dg/parse/enum6.C
--- 17018,17024 ----
  82a3873f5aec50e90ac9dc9b389b47d7  gcc/testsuite/g++.dg/parse/enum12.C
  e921222a9bac0af666c333368c4a788d  gcc/testsuite/g++.dg/parse/enum13.C
  7db35a121c5e06c218be6e74693c8270  gcc/testsuite/g++.dg/parse/enum2.C
! 695a33ed7b16712f818c64312f7da6e6  gcc/testsuite/g++.dg/parse/enum3.C
  37fc43724f8801d8874bb3001647ef4f  gcc/testsuite/g++.dg/parse/enum4.C
  2d3074d2f4bfaa5326474cb816f9950b  gcc/testsuite/g++.dg/parse/enum5.C
  e5ae40b2a9f11461c5b25742c8e014c9  gcc/testsuite/g++.dg/parse/enum6.C
*************** fc78fe78fba2427e541a1c8d2cb5fa07  gcc/te
*** 16099,16116 ****
  a64e620ac0df90a741fe0e470ee25a52  gcc/testsuite/g++.dg/parse/error-column.C
  0f041c482da9fb63f8ffc054da4ca736  gcc/testsuite/g++.dg/parse/error1.C
  587da25d66f396f8f840154ad261f8f1  gcc/testsuite/g++.dg/parse/error10.C
! c65cc88a95b1fbada3506b72c7e6532e  gcc/testsuite/g++.dg/parse/error11.C
  278d07900414689dd3933c8bce314e1c  gcc/testsuite/g++.dg/parse/error12.C
  60381da056d6f2263f2135ad61e209f3  gcc/testsuite/g++.dg/parse/error13.C
  2a46b8b4619c2013dc77a36f411b845c  gcc/testsuite/g++.dg/parse/error14.C
! ed5252aac74e7f9c853719526abd0c80  gcc/testsuite/g++.dg/parse/error15.C
  97abee8a23c7425d9e7919660662b547  gcc/testsuite/g++.dg/parse/error16.C
  4894a432dc82e671127b6794d1ac7222  gcc/testsuite/g++.dg/parse/error17.C
  25f6d5320697c62889559f7f1ed72b03  gcc/testsuite/g++.dg/parse/error18.C
  96c96af04fc69d96a9e9cf5b4a9d449d  gcc/testsuite/g++.dg/parse/error19.C
! 74621a6e2425dbd0f4e268255ef81b7f  gcc/testsuite/g++.dg/parse/error2.C
  218bee6f8ef89f6fec38dcc527310b88  gcc/testsuite/g++.dg/parse/error20.C
! 5cb1f128ed08649fa4e3014029dd94b8  gcc/testsuite/g++.dg/parse/error21.C
  cf81b63ad266926de254ac66a72d226f  gcc/testsuite/g++.dg/parse/error22.C
  d3c65e03e45b8a94ef2c3cd8d43afda0  gcc/testsuite/g++.dg/parse/error23.C
  d1117b500d18941d79a25fa0b2689a43  gcc/testsuite/g++.dg/parse/error24.C
--- 17028,17045 ----
  a64e620ac0df90a741fe0e470ee25a52  gcc/testsuite/g++.dg/parse/error-column.C
  0f041c482da9fb63f8ffc054da4ca736  gcc/testsuite/g++.dg/parse/error1.C
  587da25d66f396f8f840154ad261f8f1  gcc/testsuite/g++.dg/parse/error10.C
! 5aa114d6002c04c3be5a435f41b03334  gcc/testsuite/g++.dg/parse/error11.C
  278d07900414689dd3933c8bce314e1c  gcc/testsuite/g++.dg/parse/error12.C
  60381da056d6f2263f2135ad61e209f3  gcc/testsuite/g++.dg/parse/error13.C
  2a46b8b4619c2013dc77a36f411b845c  gcc/testsuite/g++.dg/parse/error14.C
! 8b6e5341ef7a19631a09747f796b658e  gcc/testsuite/g++.dg/parse/error15.C
  97abee8a23c7425d9e7919660662b547  gcc/testsuite/g++.dg/parse/error16.C
  4894a432dc82e671127b6794d1ac7222  gcc/testsuite/g++.dg/parse/error17.C
  25f6d5320697c62889559f7f1ed72b03  gcc/testsuite/g++.dg/parse/error18.C
  96c96af04fc69d96a9e9cf5b4a9d449d  gcc/testsuite/g++.dg/parse/error19.C
! 3bf53d7483d3530419ae73365de37e9f  gcc/testsuite/g++.dg/parse/error2.C
  218bee6f8ef89f6fec38dcc527310b88  gcc/testsuite/g++.dg/parse/error20.C
! 4f0df384b1d6aa415cbf47183290687d  gcc/testsuite/g++.dg/parse/error21.C
  cf81b63ad266926de254ac66a72d226f  gcc/testsuite/g++.dg/parse/error22.C
  d3c65e03e45b8a94ef2c3cd8d43afda0  gcc/testsuite/g++.dg/parse/error23.C
  d1117b500d18941d79a25fa0b2689a43  gcc/testsuite/g++.dg/parse/error24.C
*************** e239b71c7990da088bcfd31703f60698  gcc/te
*** 16140,16164 ****
  8de67eff0c50f1a370fb7fc74fe6fae5  gcc/testsuite/g++.dg/parse/error47.C
  ddffe8f7dd326eb80b3046802a0d21bd  gcc/testsuite/g++.dg/parse/error48.C
  292376e2be24a46ea252920cf5da636f  gcc/testsuite/g++.dg/parse/error49.C
! 7702dc90ab0d8ac4864e04aad2fdb338  gcc/testsuite/g++.dg/parse/error5.C
  0ba6ce1df5478883d60be213063c00e2  gcc/testsuite/g++.dg/parse/error50.C
  bba782461d9063d3de581fbf5e046e4d  gcc/testsuite/g++.dg/parse/error51.C
  ca37cf225f4eaf29edd1f2bc4394b03d  gcc/testsuite/g++.dg/parse/error52.C
  eccd002c3598e3bb16e3d70bf745fb7c  gcc/testsuite/g++.dg/parse/error53.C
  eed70889be27b9442f89ed3e60063c22  gcc/testsuite/g++.dg/parse/error54.C
! c504ee9a83a181cd4612d9edc1c03b25  gcc/testsuite/g++.dg/parse/error55.C
  3164b541239b0a998f99dcf0c3e487e7  gcc/testsuite/g++.dg/parse/error56.C
  78aabb3fd9ccbbc7a699352db0420c52  gcc/testsuite/g++.dg/parse/error57.C
! aa72be9c46bbf18e6291f1f50951278b  gcc/testsuite/g++.dg/parse/error58.C
  8a5fcb827640389e59afca1e423ae355  gcc/testsuite/g++.dg/parse/error6.C
  69f9cb5c7beb27587f6ec060eeafc314  gcc/testsuite/g++.dg/parse/error7.C
  c8ad8b8d3fa554b37206f4fca5ac61f9  gcc/testsuite/g++.dg/parse/error8.C
  645fd7881b9edb38e573c6cc40ee26e9  gcc/testsuite/g++.dg/parse/error9.C
  e338c4b0ed33d2c11d4f6cf0d48ac4c9  gcc/testsuite/g++.dg/parse/explicit1.C
  d5e1867a018baeb589c4bfc1ab21e892  gcc/testsuite/g++.dg/parse/expr1.C
! 1105f7ddc8706bb30766e905fade9f55  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
  e0895a4d45dffd67334cc087868941a2  gcc/testsuite/g++.dg/parse/extern1.C
  e0c303cb9febd486b13b92d1bcdc185f  gcc/testsuite/g++.dg/parse/fn-typedef1.C
  f371a7cf5636fd4c41aae59fe63a8ac2  gcc/testsuite/g++.dg/parse/fn-typedef2.C
--- 17069,17097 ----
  8de67eff0c50f1a370fb7fc74fe6fae5  gcc/testsuite/g++.dg/parse/error47.C
  ddffe8f7dd326eb80b3046802a0d21bd  gcc/testsuite/g++.dg/parse/error48.C
  292376e2be24a46ea252920cf5da636f  gcc/testsuite/g++.dg/parse/error49.C
! e8ee97100204f4165dcac5fcd2ad6444  gcc/testsuite/g++.dg/parse/error5.C
  0ba6ce1df5478883d60be213063c00e2  gcc/testsuite/g++.dg/parse/error50.C
  bba782461d9063d3de581fbf5e046e4d  gcc/testsuite/g++.dg/parse/error51.C
  ca37cf225f4eaf29edd1f2bc4394b03d  gcc/testsuite/g++.dg/parse/error52.C
  eccd002c3598e3bb16e3d70bf745fb7c  gcc/testsuite/g++.dg/parse/error53.C
  eed70889be27b9442f89ed3e60063c22  gcc/testsuite/g++.dg/parse/error54.C
! 179fe99eaadef5f7d5b40cf1ed576380  gcc/testsuite/g++.dg/parse/error55.C
  3164b541239b0a998f99dcf0c3e487e7  gcc/testsuite/g++.dg/parse/error56.C
  78aabb3fd9ccbbc7a699352db0420c52  gcc/testsuite/g++.dg/parse/error57.C
! deb25ba4bd4f0a3257c6f7a5c680ae1d  gcc/testsuite/g++.dg/parse/error58.C
! c3815b12d6adb1ac6f7c8f2379deb21d  gcc/testsuite/g++.dg/parse/error59.C
  8a5fcb827640389e59afca1e423ae355  gcc/testsuite/g++.dg/parse/error6.C
+ 026aaa79a36259f6c4f9cd79bc47cd46  gcc/testsuite/g++.dg/parse/error60.C
+ b92272fa63a2c870aa0b549018e38ab4  gcc/testsuite/g++.dg/parse/error61.C
  69f9cb5c7beb27587f6ec060eeafc314  gcc/testsuite/g++.dg/parse/error7.C
  c8ad8b8d3fa554b37206f4fca5ac61f9  gcc/testsuite/g++.dg/parse/error8.C
  645fd7881b9edb38e573c6cc40ee26e9  gcc/testsuite/g++.dg/parse/error9.C
  e338c4b0ed33d2c11d4f6cf0d48ac4c9  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
  e0c303cb9febd486b13b92d1bcdc185f  gcc/testsuite/g++.dg/parse/fn-typedef1.C
  f371a7cf5636fd4c41aae59fe63a8ac2  gcc/testsuite/g++.dg/parse/fn-typedef2.C
*************** f371a7cf5636fd4c41aae59fe63a8ac2  gcc/te
*** 16169,16181 ****
  607c4c06d2daa0d87b677b1ad9fbc84b  gcc/testsuite/g++.dg/parse/friend1.C
  f0da996e0e6cc10fd0956c82928969a9  gcc/testsuite/g++.dg/parse/friend10.C
  b7aea7b79ceb529daf91bf537645eb97  gcc/testsuite/g++.dg/parse/friend11.C
! aa38f05028f43bf797229cf9e50ad937  gcc/testsuite/g++.dg/parse/friend12.C
  ae8288fe09de8b635d6006a2c82ededf  gcc/testsuite/g++.dg/parse/friend2.C
  fcc030c9d8d11fcc0dc0610cd6499a55  gcc/testsuite/g++.dg/parse/friend3.C
  ead8df5d9d4cf435bf4e3cf134c0131c  gcc/testsuite/g++.dg/parse/friend4.C
  11ef58ca2998b51220ffff019f7fcb9c  gcc/testsuite/g++.dg/parse/friend5.C
  6584cf7d43ecae10bf211c65964bfa73  gcc/testsuite/g++.dg/parse/friend6.C
! 6b2d68aa67c17313776bac20f4c4cc57  gcc/testsuite/g++.dg/parse/friend7.C
  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
--- 17102,17114 ----
  607c4c06d2daa0d87b677b1ad9fbc84b  gcc/testsuite/g++.dg/parse/friend1.C
  f0da996e0e6cc10fd0956c82928969a9  gcc/testsuite/g++.dg/parse/friend10.C
  b7aea7b79ceb529daf91bf537645eb97  gcc/testsuite/g++.dg/parse/friend11.C
! 753422bb17d00a8b03d1e54561532df4  gcc/testsuite/g++.dg/parse/friend12.C
  ae8288fe09de8b635d6006a2c82ededf  gcc/testsuite/g++.dg/parse/friend2.C
  fcc030c9d8d11fcc0dc0610cd6499a55  gcc/testsuite/g++.dg/parse/friend3.C
  ead8df5d9d4cf435bf4e3cf134c0131c  gcc/testsuite/g++.dg/parse/friend4.C
  11ef58ca2998b51220ffff019f7fcb9c  gcc/testsuite/g++.dg/parse/friend5.C
  6584cf7d43ecae10bf211c65964bfa73  gcc/testsuite/g++.dg/parse/friend6.C
! 27cf8bce1fff883ff791e31209eb310b  gcc/testsuite/g++.dg/parse/friend7.C
  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
*************** a2fa8a0dd7deb88a1e01c25b61d481cf  gcc/te
*** 16190,16198 ****
  69b33deb6f06bb118a45d7839cc58fbd  gcc/testsuite/g++.dg/parse/ivdep.C
  5d656857f6d096dcd4215aec825ca027  gcc/testsuite/g++.dg/parse/limits-initializer1.C
  f925dbe1528712dd5921699a83e6b23c  gcc/testsuite/g++.dg/parse/linkage1.C
! 07df1f5a6db95a01a6a6f5e0c04baef3  gcc/testsuite/g++.dg/parse/linkage2.C
  f860807cf54031b8df626f746711d411  gcc/testsuite/g++.dg/parse/linkage3.C
! d71bba5a605bcf9e53086d66758b1f00  gcc/testsuite/g++.dg/parse/local-class1.C
  d1474e603dfda7a944b4131661d47d65  gcc/testsuite/g++.dg/parse/local1.C
  8af90d5b10beafe61974e1e52c872741  gcc/testsuite/g++.dg/parse/long1.C
  86c78a03857a188fc9175d78d5d62c34  gcc/testsuite/g++.dg/parse/lookup1.C
--- 17123,17131 ----
  69b33deb6f06bb118a45d7839cc58fbd  gcc/testsuite/g++.dg/parse/ivdep.C
  5d656857f6d096dcd4215aec825ca027  gcc/testsuite/g++.dg/parse/limits-initializer1.C
  f925dbe1528712dd5921699a83e6b23c  gcc/testsuite/g++.dg/parse/linkage1.C
! 1f0cba57d6bb8594c938edf51e17e937  gcc/testsuite/g++.dg/parse/linkage2.C
  f860807cf54031b8df626f746711d411  gcc/testsuite/g++.dg/parse/linkage3.C
! 1f60e536555694022c574aff0f464e09  gcc/testsuite/g++.dg/parse/local-class1.C
  d1474e603dfda7a944b4131661d47d65  gcc/testsuite/g++.dg/parse/local1.C
  8af90d5b10beafe61974e1e52c872741  gcc/testsuite/g++.dg/parse/long1.C
  86c78a03857a188fc9175d78d5d62c34  gcc/testsuite/g++.dg/parse/lookup1.C
*************** d1474e603dfda7a944b4131661d47d65  gcc/te
*** 16204,16212 ****
  c4f699b907509893d8feb6eab1a7d201  gcc/testsuite/g++.dg/parse/missing-template1.C
  2a6bb7eee1c4c9ef55c8fb4a46785607  gcc/testsuite/g++.dg/parse/mutable1.C
  fe86870b21fda02350088a1a430beacb  gcc/testsuite/g++.dg/parse/named_ops.C
! fa9ec3a2b534eb16688f6e8669f90ddb  gcc/testsuite/g++.dg/parse/namespace-alias-1.C
  8f491718233bf66bea91944d8a3fa4c1  gcc/testsuite/g++.dg/parse/namespace-definition.C
! da081f6d9aba0da47081b44fc4725588  gcc/testsuite/g++.dg/parse/namespace1.C
  65a3872bf7b0fc2285ade874546dcdd3  gcc/testsuite/g++.dg/parse/namespace10.C
  307391ca01b5e3f3edb4a285d4a148bc  gcc/testsuite/g++.dg/parse/namespace11.C
  366e9e5966c8dbaba1b281aa69371aa7  gcc/testsuite/g++.dg/parse/namespace12.C
--- 17137,17145 ----
  c4f699b907509893d8feb6eab1a7d201  gcc/testsuite/g++.dg/parse/missing-template1.C
  2a6bb7eee1c4c9ef55c8fb4a46785607  gcc/testsuite/g++.dg/parse/mutable1.C
  fe86870b21fda02350088a1a430beacb  gcc/testsuite/g++.dg/parse/named_ops.C
! c8bbae0b6f18e189ca178daba04b2666  gcc/testsuite/g++.dg/parse/namespace-alias-1.C
  8f491718233bf66bea91944d8a3fa4c1  gcc/testsuite/g++.dg/parse/namespace-definition.C
! 4f4eaeb777692b4e55070dcf2fe52de6  gcc/testsuite/g++.dg/parse/namespace1.C
  65a3872bf7b0fc2285ade874546dcdd3  gcc/testsuite/g++.dg/parse/namespace10.C
  307391ca01b5e3f3edb4a285d4a148bc  gcc/testsuite/g++.dg/parse/namespace11.C
  366e9e5966c8dbaba1b281aa69371aa7  gcc/testsuite/g++.dg/parse/namespace12.C
*************** b2cbb96c1cb51b252c9cad30717d2f28  gcc/te
*** 16219,16225 ****
  62c0e5b957973fd08ee2ce09fb2bac4a  gcc/testsuite/g++.dg/parse/namespace6.C
  059e0fc868f6615aaaf4b5242b1b4c34  gcc/testsuite/g++.dg/parse/namespace7.C
  11f3163bfc0535b67f6b7471aab940dd  gcc/testsuite/g++.dg/parse/namespace8.C
! 1f98eb04bd0299c0d86df723002f2f85  gcc/testsuite/g++.dg/parse/namespace9.C
  92d771a6a6974c7086a19e8113043fea  gcc/testsuite/g++.dg/parse/new-placement1.C
  40e17f36d8840c2b65ff4e7caa7f5821  gcc/testsuite/g++.dg/parse/new1.C
  64b1e63a6365adba9545b7d7ccede989  gcc/testsuite/g++.dg/parse/new2.C
--- 17152,17158 ----
  62c0e5b957973fd08ee2ce09fb2bac4a  gcc/testsuite/g++.dg/parse/namespace6.C
  059e0fc868f6615aaaf4b5242b1b4c34  gcc/testsuite/g++.dg/parse/namespace7.C
  11f3163bfc0535b67f6b7471aab940dd  gcc/testsuite/g++.dg/parse/namespace8.C
! b99265589ba89ff9ede9cfe71e15471d  gcc/testsuite/g++.dg/parse/namespace9.C
  92d771a6a6974c7086a19e8113043fea  gcc/testsuite/g++.dg/parse/new-placement1.C
  40e17f36d8840c2b65ff4e7caa7f5821  gcc/testsuite/g++.dg/parse/new1.C
  64b1e63a6365adba9545b7d7ccede989  gcc/testsuite/g++.dg/parse/new2.C
*************** eb7d271a7110d4e8fc3f749e65b2288f  gcc/te
*** 16231,16237 ****
  907042e26103e031777185910c07bb52  gcc/testsuite/g++.dg/parse/no-typename1.C
  aa5411fd5e6b230e1e272f2eabca94bc  gcc/testsuite/g++.dg/parse/no-value1.C
  d3d5c74c2536d2bbc64765e6108f9905  gcc/testsuite/g++.dg/parse/non-dependent1.C
! 799b5e8b6ff2c35da24a86fc155c5d68  gcc/testsuite/g++.dg/parse/non-dependent2.C
  4c962ba814ec62b887039d1d3eb9e82b  gcc/testsuite/g++.dg/parse/non-dependent3.C
  301b99fe0e3e5ec394c359f6ae5c6580  gcc/testsuite/g++.dg/parse/non-templ1.C
  975159f65456dba4b16d2ea9f6f10aac  gcc/testsuite/g++.dg/parse/nontype1.C
--- 17164,17170 ----
  907042e26103e031777185910c07bb52  gcc/testsuite/g++.dg/parse/no-typename1.C
  aa5411fd5e6b230e1e272f2eabca94bc  gcc/testsuite/g++.dg/parse/no-value1.C
  d3d5c74c2536d2bbc64765e6108f9905  gcc/testsuite/g++.dg/parse/non-dependent1.C
! 73062b089778c12a0028db31493ae2c0  gcc/testsuite/g++.dg/parse/non-dependent2.C
  4c962ba814ec62b887039d1d3eb9e82b  gcc/testsuite/g++.dg/parse/non-dependent3.C
  301b99fe0e3e5ec394c359f6ae5c6580  gcc/testsuite/g++.dg/parse/non-templ1.C
  975159f65456dba4b16d2ea9f6f10aac  gcc/testsuite/g++.dg/parse/nontype1.C
*************** e91f3d3016e1e200ebed1193330b5657  gcc/te
*** 16250,16258 ****
  9f1d578d41417a071a22f5bb888a42e5  gcc/testsuite/g++.dg/parse/operator3.C
  40fe71ed744d270f970314d665c599b6  gcc/testsuite/g++.dg/parse/operator4.C
  447fc3e462b9b45bbf68e672e2421b3c  gcc/testsuite/g++.dg/parse/operator5.C
! ee746d77b16a30ad23912edc3ab79c6b  gcc/testsuite/g++.dg/parse/operator6.C
  8a4367896acda2c1db8e321d02d4aa92  gcc/testsuite/g++.dg/parse/operator7.C
! 19f6aca27efa700bef4477a26d564761  gcc/testsuite/g++.dg/parse/parameter-declaration-1.C
  e3ddebbe6b42d002375e551ea770cbdf  gcc/testsuite/g++.dg/parse/parameter-declaration-2.C
  de20c30d40f4cceef57124b5828bf816  gcc/testsuite/g++.dg/parse/parens1.C
  0f3dcfdbce26ce78daa93488bd7ef0a1  gcc/testsuite/g++.dg/parse/parens2.C
--- 17183,17191 ----
  9f1d578d41417a071a22f5bb888a42e5  gcc/testsuite/g++.dg/parse/operator3.C
  40fe71ed744d270f970314d665c599b6  gcc/testsuite/g++.dg/parse/operator4.C
  447fc3e462b9b45bbf68e672e2421b3c  gcc/testsuite/g++.dg/parse/operator5.C
! 0578823e3d3e65db335d3144fea8e448  gcc/testsuite/g++.dg/parse/operator6.C
  8a4367896acda2c1db8e321d02d4aa92  gcc/testsuite/g++.dg/parse/operator7.C
! b8b60c6b3d20bc77c7acd224354d653f  gcc/testsuite/g++.dg/parse/parameter-declaration-1.C
  e3ddebbe6b42d002375e551ea770cbdf  gcc/testsuite/g++.dg/parse/parameter-declaration-2.C
  de20c30d40f4cceef57124b5828bf816  gcc/testsuite/g++.dg/parse/parens1.C
  0f3dcfdbce26ce78daa93488bd7ef0a1  gcc/testsuite/g++.dg/parse/parens2.C
*************** c6f961c7e0a3abdb6c65204f7692ed1b  gcc/te
*** 16280,16286 ****
  d2c97158a600f119f8f39017dbe65cb6  gcc/testsuite/g++.dg/parse/pr34049.C
  b195499fe12f3f3c5a8b1fb7605ee881  gcc/testsuite/g++.dg/parse/pr34758.C
  a57434275b0ab07b7a1f918fef7791bc  gcc/testsuite/g++.dg/parse/pr37862.C
! 6ea5147fd15d7b780bfc3818dde9d5e7  gcc/testsuite/g++.dg/parse/pr43765.C
  2252cf60ba80a25df99456a82a994206  gcc/testsuite/g++.dg/parse/pr52071.C
  1440b05640ed86e97c3a5a22e8fec412  gcc/testsuite/g++.dg/parse/pr55080.C
  59292b594262bedc8968587696596ccd  gcc/testsuite/g++.dg/parse/pr56037.C
--- 17213,17219 ----
  d2c97158a600f119f8f39017dbe65cb6  gcc/testsuite/g++.dg/parse/pr34049.C
  b195499fe12f3f3c5a8b1fb7605ee881  gcc/testsuite/g++.dg/parse/pr34758.C
  a57434275b0ab07b7a1f918fef7791bc  gcc/testsuite/g++.dg/parse/pr37862.C
! 1e33667d8285f239fd589c085a2376e3  gcc/testsuite/g++.dg/parse/pr43765.C
  2252cf60ba80a25df99456a82a994206  gcc/testsuite/g++.dg/parse/pr52071.C
  1440b05640ed86e97c3a5a22e8fec412  gcc/testsuite/g++.dg/parse/pr55080.C
  59292b594262bedc8968587696596ccd  gcc/testsuite/g++.dg/parse/pr56037.C
*************** fb75bc3a19e60d2b8469ab27556b4ded  gcc/te
*** 16296,16308 ****
  e3d84d14b44ce06e61ad505e48389e36  gcc/testsuite/g++.dg/parse/pr71238.C
  5eb3f5d17e121a7a8f7884b589a7a7ce  gcc/testsuite/g++.dg/parse/pr71909.C
  f04a95da8935ec0cc5089d05affb78d8  gcc/testsuite/g++.dg/parse/pr72774.C
  5a9d33aff7826f90760a0154af35d9f0  gcc/testsuite/g++.dg/parse/pragma1.C
  b8553036b01aadac9e932e75221336ae  gcc/testsuite/g++.dg/parse/pragma2.C
  d516a5d017b9be02cd665abb61b0fbaf  gcc/testsuite/g++.dg/parse/pragma3.C
  2ec4898222ed00ed700c0d02a75f2d1f  gcc/testsuite/g++.dg/parse/primary-expression-1.C
  a7c7523f78d6f162791c48963beb5abd  gcc/testsuite/g++.dg/parse/ptrmem1.C
! 2f2fc795a372828b256da823dbe94a7a  gcc/testsuite/g++.dg/parse/ptrmem2.C
! 67912a62c1c6def2348fa74a9f9f5549  gcc/testsuite/g++.dg/parse/ptrmem3.C
  6a0269c4616a620b7a973566b20dc501  gcc/testsuite/g++.dg/parse/ptrmem4.C
  f52d554c8ba213f3b2dd46e6ec8cf1e3  gcc/testsuite/g++.dg/parse/ptrmem5.C
  58b8f9b33890f80dd9050c24c55321aa  gcc/testsuite/g++.dg/parse/ptrmem6.C
--- 17229,17247 ----
  e3d84d14b44ce06e61ad505e48389e36  gcc/testsuite/g++.dg/parse/pr71238.C
  5eb3f5d17e121a7a8f7884b589a7a7ce  gcc/testsuite/g++.dg/parse/pr71909.C
  f04a95da8935ec0cc5089d05affb78d8  gcc/testsuite/g++.dg/parse/pr72774.C
+ 60224eb7343b0ec7f19d862c0dc8a924  gcc/testsuite/g++.dg/parse/pr80866.C
+ 626801309ec101d760720dce7d15e84d  gcc/testsuite/g++.dg/parse/pr81247-a.C
+ 37c359733c606ab1c89e72b14291adcd  gcc/testsuite/g++.dg/parse/pr81247-b.C
+ 5c6f5c4ef536299abe5b238268787631  gcc/testsuite/g++.dg/parse/pr81247-c.C
+ a22ea5750225f2612d7e42c34ccab198  gcc/testsuite/g++.dg/parse/pr83634.C
+ 7e4a18dbdde15d3df2c3ac9c839f0aa2  gcc/testsuite/g++.dg/parse/pr84263.C
  5a9d33aff7826f90760a0154af35d9f0  gcc/testsuite/g++.dg/parse/pragma1.C
  b8553036b01aadac9e932e75221336ae  gcc/testsuite/g++.dg/parse/pragma2.C
  d516a5d017b9be02cd665abb61b0fbaf  gcc/testsuite/g++.dg/parse/pragma3.C
  2ec4898222ed00ed700c0d02a75f2d1f  gcc/testsuite/g++.dg/parse/primary-expression-1.C
  a7c7523f78d6f162791c48963beb5abd  gcc/testsuite/g++.dg/parse/ptrmem1.C
! c6c8e1dd0aa4ce5001d58bf4b602038f  gcc/testsuite/g++.dg/parse/ptrmem2.C
! 84bd924f6dae03681779cca4fa75a9f7  gcc/testsuite/g++.dg/parse/ptrmem3.C
  6a0269c4616a620b7a973566b20dc501  gcc/testsuite/g++.dg/parse/ptrmem4.C
  f52d554c8ba213f3b2dd46e6ec8cf1e3  gcc/testsuite/g++.dg/parse/ptrmem5.C
  58b8f9b33890f80dd9050c24c55321aa  gcc/testsuite/g++.dg/parse/ptrmem6.C
*************** ee6ac3b84366a978a8fd11d55b342fb7  gcc/te
*** 16312,16332 ****
  824f236b15bcc9ff8b13f7275ea14210  gcc/testsuite/g++.dg/parse/qualified2.C
  322abe6d2d840b6218ecf16b70637d21  gcc/testsuite/g++.dg/parse/qualified3.C
  d58864cd4550e9a43e5536d8ea904e26  gcc/testsuite/g++.dg/parse/qualified4.C
  8d6d8891281e77e95edf66cda3bc270f  gcc/testsuite/g++.dg/parse/redef1.C
  ea5aebd8cd9820744d1d08f3b5429dca  gcc/testsuite/g++.dg/parse/redef2.C
  19c9483f0726842c500357ad04acc983  gcc/testsuite/g++.dg/parse/ref-qual1.C
  70d93639ad9e4d1ee8748d9329dfae12  gcc/testsuite/g++.dg/parse/ref-qual2.C
  176cd37bac0e17d41ebe5f535df4a12c  gcc/testsuite/g++.dg/parse/ref1.C
! 0ed8cecbb9cffc78a137dc05114d2468  gcc/testsuite/g++.dg/parse/register1.C
  15c20313893567659b867565ddb52b45  gcc/testsuite/g++.dg/parse/repo1.C
  b935282cf7b22d6ccc8bb31b59d7fc4e  gcc/testsuite/g++.dg/parse/ret-type1.C
! dc9e3b2c71652cf7a05939082aae52ae  gcc/testsuite/g++.dg/parse/ret-type2.C
  36603b3c2926b20a0727d10d5f631e75  gcc/testsuite/g++.dg/parse/ret-type3.C
! ae012a859dc73387cd1384e7e2c86bc9  gcc/testsuite/g++.dg/parse/saved1.C
  fc1aa1723b96a5b64e903b9a5996746d  gcc/testsuite/g++.dg/parse/semicolon1.C
  c27fbdab5d948932264f8da44d8829bf  gcc/testsuite/g++.dg/parse/semicolon1.h
  2aebfb0ee2389784f14a1423d77f13b6  gcc/testsuite/g++.dg/parse/semicolon2.C
! 9048f641e56f80ef6ac544af5f7634d4  gcc/testsuite/g++.dg/parse/semicolon3.C
  296d6acfa38d6b077a754229372acdb1  gcc/testsuite/g++.dg/parse/semicolon4.C
  5608a482d876b635a8861d2fcc647c45  gcc/testsuite/g++.dg/parse/specialization1.C
  26b1b9df5ec9177a6c137833bf34a120  gcc/testsuite/g++.dg/parse/stack1.C
--- 17251,17272 ----
  824f236b15bcc9ff8b13f7275ea14210  gcc/testsuite/g++.dg/parse/qualified2.C
  322abe6d2d840b6218ecf16b70637d21  gcc/testsuite/g++.dg/parse/qualified3.C
  d58864cd4550e9a43e5536d8ea904e26  gcc/testsuite/g++.dg/parse/qualified4.C
+ 5f4c2303e76572835b5428d77b8b77ec  gcc/testsuite/g++.dg/parse/qualified5.C
  8d6d8891281e77e95edf66cda3bc270f  gcc/testsuite/g++.dg/parse/redef1.C
  ea5aebd8cd9820744d1d08f3b5429dca  gcc/testsuite/g++.dg/parse/redef2.C
  19c9483f0726842c500357ad04acc983  gcc/testsuite/g++.dg/parse/ref-qual1.C
  70d93639ad9e4d1ee8748d9329dfae12  gcc/testsuite/g++.dg/parse/ref-qual2.C
  176cd37bac0e17d41ebe5f535df4a12c  gcc/testsuite/g++.dg/parse/ref1.C
! f9babc052a10c42b02c583bc9286f32e  gcc/testsuite/g++.dg/parse/register1.C
  15c20313893567659b867565ddb52b45  gcc/testsuite/g++.dg/parse/repo1.C
  b935282cf7b22d6ccc8bb31b59d7fc4e  gcc/testsuite/g++.dg/parse/ret-type1.C
! 13053eb5bb0c2b4dc12f7851ae997d58  gcc/testsuite/g++.dg/parse/ret-type2.C
  36603b3c2926b20a0727d10d5f631e75  gcc/testsuite/g++.dg/parse/ret-type3.C
! e530f64c99db41cc95d651e0d08267bf  gcc/testsuite/g++.dg/parse/saved1.C
  fc1aa1723b96a5b64e903b9a5996746d  gcc/testsuite/g++.dg/parse/semicolon1.C
  c27fbdab5d948932264f8da44d8829bf  gcc/testsuite/g++.dg/parse/semicolon1.h
  2aebfb0ee2389784f14a1423d77f13b6  gcc/testsuite/g++.dg/parse/semicolon2.C
! dbc608a0f63d6d497e34ba23e90b8534  gcc/testsuite/g++.dg/parse/semicolon3.C
  296d6acfa38d6b077a754229372acdb1  gcc/testsuite/g++.dg/parse/semicolon4.C
  5608a482d876b635a8861d2fcc647c45  gcc/testsuite/g++.dg/parse/specialization1.C
  26b1b9df5ec9177a6c137833bf34a120  gcc/testsuite/g++.dg/parse/stack1.C
*************** ad10de81d76fff3ac6f0d42c5b013580  gcc/te
*** 16361,16366 ****
--- 17301,17307 ----
  24209fc47c8bc3374fae451404dbd2df  gcc/testsuite/g++.dg/parse/template26.C
  ba5fea52e589d10cf797adaaeee748ac  gcc/testsuite/g++.dg/parse/template27.C
  fe811f9a2d970dd98425b038df28962b  gcc/testsuite/g++.dg/parse/template28.C
+ 152e03aa0bab781e753c83dfb1e3c3cd  gcc/testsuite/g++.dg/parse/template29.C
  e079aef6e66a2f031f6a3098cf5c3d94  gcc/testsuite/g++.dg/parse/template3.C
  17872444c3e507c8ec724d519d4c6457  gcc/testsuite/g++.dg/parse/template4.C
  eb5012efbf2e76d0649338687d64eab1  gcc/testsuite/g++.dg/parse/template5.C
*************** e4f4b43529be2f0b5495a04aa36578d0  gcc/te
*** 16375,16387 ****
  54f900bbaf5a52f25f73a885c0705826  gcc/testsuite/g++.dg/parse/too-many-tmpl-args1.C
  fe312b5e22af7a61d39446fc1257d020  gcc/testsuite/g++.dg/parse/try-catch-1.C
  2cdd9d41325448845e3d4f4fcaf1cde5  gcc/testsuite/g++.dg/parse/typedef1.C
! 9ee9f56c9a70d5a91693ee906cc9e208  gcc/testsuite/g++.dg/parse/typedef2.C
  59fe1b0f374bc40069ca47d24584c60d  gcc/testsuite/g++.dg/parse/typedef3.C
  288b2f48174229848db9c4ae7339af26  gcc/testsuite/g++.dg/parse/typedef4.C
  f60ae2ded91ec2dc8a237b91d1282751  gcc/testsuite/g++.dg/parse/typedef5.C
  174e24e49c802ceec036dddc815a14ff  gcc/testsuite/g++.dg/parse/typedef6.C
  71e8821fc281e76f6affdbe9259cfad2  gcc/testsuite/g++.dg/parse/typedef7.C
! 1f54c1cb4cbf3cd6b7d559949dd81e77  gcc/testsuite/g++.dg/parse/typedef8.C
  81a5a8a38ef087a12d91190b90e80423  gcc/testsuite/g++.dg/parse/typedef9.C
  816e586cce785bd66d07622b7e076afe  gcc/testsuite/g++.dg/parse/typename1.C
  31eb059e3dbe1b34a067aafb14847fb8  gcc/testsuite/g++.dg/parse/typename10.C
--- 17316,17328 ----
  54f900bbaf5a52f25f73a885c0705826  gcc/testsuite/g++.dg/parse/too-many-tmpl-args1.C
  fe312b5e22af7a61d39446fc1257d020  gcc/testsuite/g++.dg/parse/try-catch-1.C
  2cdd9d41325448845e3d4f4fcaf1cde5  gcc/testsuite/g++.dg/parse/typedef1.C
! 471e05becb1e25050872dee6aa004499  gcc/testsuite/g++.dg/parse/typedef2.C
  59fe1b0f374bc40069ca47d24584c60d  gcc/testsuite/g++.dg/parse/typedef3.C
  288b2f48174229848db9c4ae7339af26  gcc/testsuite/g++.dg/parse/typedef4.C
  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
  81a5a8a38ef087a12d91190b90e80423  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
*** 16421,16428 ****
  1b5d28bf11bae4996001396e1ffe083b  gcc/testsuite/g++.dg/pch/local-1.Hs
  a42f209088bbce8d3650be5966861b6b  gcc/testsuite/g++.dg/pch/pch.C
  95603c8965412870090ed14011f4b123  gcc/testsuite/g++.dg/pch/pch.Hs
! 537b8069528dfb3dbf4d571c45b9d36e  gcc/testsuite/g++.dg/pch/pch.exp
! 956a76bba7ed55fcdd73d80efdfa4c90  gcc/testsuite/g++.dg/pch/static-1.C
  4aaad0cfa4436b8cd8b37b1bf218edc8  gcc/testsuite/g++.dg/pch/static-1.Hs
  a5379c2bad433698a01b3bc2d5473a2e  gcc/testsuite/g++.dg/pch/system-1.C
  826eb942010cef35c80c43298382814f  gcc/testsuite/g++.dg/pch/system-1.Hs
--- 17362,17369 ----
  1b5d28bf11bae4996001396e1ffe083b  gcc/testsuite/g++.dg/pch/local-1.Hs
  a42f209088bbce8d3650be5966861b6b  gcc/testsuite/g++.dg/pch/pch.C
  95603c8965412870090ed14011f4b123  gcc/testsuite/g++.dg/pch/pch.Hs
! 3a1f34b37f6b386e8bcb069dc289870a  gcc/testsuite/g++.dg/pch/pch.exp
! 73dd9e7d0e0351552a2f49cc0882db47  gcc/testsuite/g++.dg/pch/static-1.C
  4aaad0cfa4436b8cd8b37b1bf218edc8  gcc/testsuite/g++.dg/pch/static-1.Hs
  a5379c2bad433698a01b3bc2d5473a2e  gcc/testsuite/g++.dg/pch/system-1.C
  826eb942010cef35c80c43298382814f  gcc/testsuite/g++.dg/pch/system-1.Hs
*************** a5379c2bad433698a01b3bc2d5473a2e  gcc/te
*** 16435,16457 ****
  3c027648f765cf5846e0b1be267760f6  gcc/testsuite/g++.dg/pch/wchar-1.C
  67d1ff82e247bea84a92bc888972c000  gcc/testsuite/g++.dg/pch/wchar-1.Hs
  bf3ea5727f0cfbee03093d92618c2de5  gcc/testsuite/g++.dg/plugin/attribute_plugin-test-1.C
! 1afc0019ecc899148acc1f65f414a1dd  gcc/testsuite/g++.dg/plugin/attribute_plugin.c
! 9d3407a3a51156df6b12203598d2c5e4  gcc/testsuite/g++.dg/plugin/decl-plugin-test.C
  d48932e126573eb4d5278c326a4af0e8  gcc/testsuite/g++.dg/plugin/decl_plugin.c
  9880cec200dc03944e221b5ce5bc6af7  gcc/testsuite/g++.dg/plugin/def-plugin-test.C
  e3ad892294170cf17b98bdad69100bf4  gcc/testsuite/g++.dg/plugin/def_plugin.c
! 4ee926269e91b204762e028c33ac3dde  gcc/testsuite/g++.dg/plugin/diagnostic-test-expressions-1.C
! c595ed1ac1831b257035f373fac8a3ef  gcc/testsuite/g++.dg/plugin/dumb-plugin-test-1.C
  3f89fe2cf6d913c11fe72de567ff1303  gcc/testsuite/g++.dg/plugin/dumb_plugin.c
  b393922db8d338bed7f3bcf037edd19c  gcc/testsuite/g++.dg/plugin/header-plugin-test.C
  3a80079be7a0bfd6f8efce4de8795fcb  gcc/testsuite/g++.dg/plugin/header_plugin.c
! 144b5c4157e4fc9c84ca3fd3f856bce3  gcc/testsuite/g++.dg/plugin/plugin.exp
  0555e81b1b7c9c8e06b4e9d9ffccb7ff  gcc/testsuite/g++.dg/plugin/pragma_plugin-test-1.C
  99fe4ed522f31b68fb571d07a4cc20ad  gcc/testsuite/g++.dg/plugin/pragma_plugin.c
! c242a5a32d80edcfcbea3251f54b1cce  gcc/testsuite/g++.dg/plugin/self-assign-test-1.C
! 54e29c1f04b55b3e4523fafe60684d41  gcc/testsuite/g++.dg/plugin/self-assign-test-2.C
! 83135d30e0c44ed545ee45f64b498e70  gcc/testsuite/g++.dg/plugin/self-assign-test-3.C
  13b273d8b932f86e14def9c496a1a5c4  gcc/testsuite/g++.dg/plugin/selfassign.c
  2ac64817a39fe1a5c2dc328f4233cda1  gcc/testsuite/g++.dg/pr37742.C
  32b2fbda29ffd2ac2181c43c971f3a7d  gcc/testsuite/g++.dg/pr44328.C
  e43b4ea2d038b181b57782d5d56d22ba  gcc/testsuite/g++.dg/pr44486.C
--- 17376,17404 ----
  3c027648f765cf5846e0b1be267760f6  gcc/testsuite/g++.dg/pch/wchar-1.C
  67d1ff82e247bea84a92bc888972c000  gcc/testsuite/g++.dg/pch/wchar-1.Hs
  bf3ea5727f0cfbee03093d92618c2de5  gcc/testsuite/g++.dg/plugin/attribute_plugin-test-1.C
! c278391c6b14a59edfbbfe24959e4347  gcc/testsuite/g++.dg/plugin/attribute_plugin.c
! 9b635bf7c9d9346cec6665c009e59792  gcc/testsuite/g++.dg/plugin/comment_plugin.c
! f0cc8f775d1ccf181ce69d11d09e4285  gcc/testsuite/g++.dg/plugin/comments-1.C
! f368c2dc2c8c1266d4d8818bb13e9118  gcc/testsuite/g++.dg/plugin/decl-plugin-test.C
  d48932e126573eb4d5278c326a4af0e8  gcc/testsuite/g++.dg/plugin/decl_plugin.c
  9880cec200dc03944e221b5ce5bc6af7  gcc/testsuite/g++.dg/plugin/def-plugin-test.C
  e3ad892294170cf17b98bdad69100bf4  gcc/testsuite/g++.dg/plugin/def_plugin.c
! 15bfe3f79e0ba321a36568e2652a3a03  gcc/testsuite/g++.dg/plugin/diagnostic-test-expressions-1.C
! 253c4ed5efcbc1a8dd179a32c3c99365  gcc/testsuite/g++.dg/plugin/diagnostic-test-inlining-1.C
! eee78b3feee80f24a70dface0869a07e  gcc/testsuite/g++.dg/plugin/dumb-plugin-test-1.C
  3f89fe2cf6d913c11fe72de567ff1303  gcc/testsuite/g++.dg/plugin/dumb_plugin.c
  b393922db8d338bed7f3bcf037edd19c  gcc/testsuite/g++.dg/plugin/header-plugin-test.C
  3a80079be7a0bfd6f8efce4de8795fcb  gcc/testsuite/g++.dg/plugin/header_plugin.c
! d1de896a18ea52e01ac8a079eeda0803  gcc/testsuite/g++.dg/plugin/plugin.exp
  0555e81b1b7c9c8e06b4e9d9ffccb7ff  gcc/testsuite/g++.dg/plugin/pragma_plugin-test-1.C
  99fe4ed522f31b68fb571d07a4cc20ad  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
+ 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
  2ac64817a39fe1a5c2dc328f4233cda1  gcc/testsuite/g++.dg/pr37742.C
  32b2fbda29ffd2ac2181c43c971f3a7d  gcc/testsuite/g++.dg/pr44328.C
  e43b4ea2d038b181b57782d5d56d22ba  gcc/testsuite/g++.dg/pr44486.C
*************** bb2d7657d437d9771120e409a911eaab  gcc/te
*** 16461,16502 ****
  df445dd466c64ca9de2502714fd94669  gcc/testsuite/g++.dg/pr45056.C
  5f87750ba61c9001cac317e0f478021f  gcc/testsuite/g++.dg/pr45112.C
  39f7b22081ae13a868ee3c73cf7311bc  gcc/testsuite/g++.dg/pr45310.C
! 60573205502b972e1bfc91087e7bdec2  gcc/testsuite/g++.dg/pr45330.C
! 38a78e9ec946a91c85e59915f0ef9baa  gcc/testsuite/g++.dg/pr45788.C
  4e1d8a1af98ff692467fa16f5a8da67f  gcc/testsuite/g++.dg/pr46065.C
  f8a176d1fc5d47b59c3be174c032504f  gcc/testsuite/g++.dg/pr46852.C
  7affa7ae7d35122d45703a6d24ae54f9  gcc/testsuite/g++.dg/pr46868.C
  3946927cb1dd0a7ac3d8009e703d00c4  gcc/testsuite/g++.dg/pr46890.C
  9c1057b2baef3c7b14a3990a7dab5c62  gcc/testsuite/g++.dg/pr47053.C
  7d415c3f086a787fac9c43c2198e69a2  gcc/testsuite/g++.dg/pr47589.C
! c1ab1e5ed490b3cb460ea8f99b7231e9  gcc/testsuite/g++.dg/pr48484.C
  e384db5ab7dd22da4d2f37d7651bb107  gcc/testsuite/g++.dg/pr48633.C
  91af1bf8e0bef02ef0fdef13fea1c20e  gcc/testsuite/g++.dg/pr48660.C
  eb8473dadb424bb65d0d3d0b5588e217  gcc/testsuite/g++.dg/pr48772.C
  6dcfc0220336a51517b7c74c7a9ea7c8  gcc/testsuite/g++.dg/pr49718.C
! c7d91c8d394b3d1a963e73a4fc599344  gcc/testsuite/g++.dg/pr49847.C
  38f9fa3d1d04965b11deec7e969c1372  gcc/testsuite/g++.dg/pr50672.C
! af836a3a9ba8f043430e40fef5923de3  gcc/testsuite/g++.dg/pr50763-3.C
  687fcdd96edb8d9d6910173004998886  gcc/testsuite/g++.dg/pr50763-4.C
  cea7cdabebcdd0a13585c5a24f935537  gcc/testsuite/g++.dg/pr51264-4.C
  acc9f7ed518d3bd847391a849c7741a3  gcc/testsuite/g++.dg/pr53055.C
  602b3ed9ed82ed3733e6a28dadc4d0e6  gcc/testsuite/g++.dg/pr54442.C
  da36360b1eaeaaf6b1adffefc9001717  gcc/testsuite/g++.dg/pr54655.C
  9deb7215258d8ff8a15e52e1fce39338  gcc/testsuite/g++.dg/pr55106.C
  87fdbc7f65a77794bc417b29c89d0401  gcc/testsuite/g++.dg/pr55263.C
! 026bdb1b5c4dda8274fd5306e2aa527e  gcc/testsuite/g++.dg/pr55513.C
! 62459ffd0ee0f3938c57aa4ef097dffb  gcc/testsuite/g++.dg/pr55604.C
  3e6fd08b5cdf6e46c9fefb4cb0720e23  gcc/testsuite/g++.dg/pr57175.C
! 483cdd786d54a70863a7f43e89c3e57b  gcc/testsuite/g++.dg/pr57662.C
! 81d244cbbe16d1fd91f82022ebe24bc4  gcc/testsuite/g++.dg/pr57878.C
  511234314f9b0a3ba0b9f5c6d7080948  gcc/testsuite/g++.dg/pr58123.C
! a1888ee89e80f1205b9ddb9cc86a5133  gcc/testsuite/g++.dg/pr58389.C
! 0c280631aeb0bc616580714fa3ff6cac  gcc/testsuite/g++.dg/pr58438.C
  1afffa3d74939421dcfa7501280f88dd  gcc/testsuite/g++.dg/pr58950.C
! 9c0ce580f44d602ace281aad58b9f777  gcc/testsuite/g++.dg/pr59445.C
  f30a79885e763e341eec192a87cfd3ff  gcc/testsuite/g++.dg/pr59477.C
  4afad787e09b4874a12312416375d3cb  gcc/testsuite/g++.dg/pr59482.C
! c48f8e06d0c4fb011bdd97b2641d239a  gcc/testsuite/g++.dg/pr59510.C
  6ef903a30658765c574e6f3aa8592058  gcc/testsuite/g++.dg/pr59695.C
  423a4225250186b2746ca0c376b8124a  gcc/testsuite/g++.dg/pr60518.C
  11692c0a1d9e603f30a38169f72d42aa  gcc/testsuite/g++.dg/pr60969.C
--- 17408,17453 ----
  df445dd466c64ca9de2502714fd94669  gcc/testsuite/g++.dg/pr45056.C
  5f87750ba61c9001cac317e0f478021f  gcc/testsuite/g++.dg/pr45112.C
  39f7b22081ae13a868ee3c73cf7311bc  gcc/testsuite/g++.dg/pr45310.C
! d7eeb077df9cd6945e841f312c006ac0  gcc/testsuite/g++.dg/pr45330.C
! c1dfe66a41c2a01c9391cc0b19068630  gcc/testsuite/g++.dg/pr45788.C
  4e1d8a1af98ff692467fa16f5a8da67f  gcc/testsuite/g++.dg/pr46065.C
  f8a176d1fc5d47b59c3be174c032504f  gcc/testsuite/g++.dg/pr46852.C
  7affa7ae7d35122d45703a6d24ae54f9  gcc/testsuite/g++.dg/pr46868.C
  3946927cb1dd0a7ac3d8009e703d00c4  gcc/testsuite/g++.dg/pr46890.C
  9c1057b2baef3c7b14a3990a7dab5c62  gcc/testsuite/g++.dg/pr47053.C
  7d415c3f086a787fac9c43c2198e69a2  gcc/testsuite/g++.dg/pr47589.C
! 8e52e34a3550ea8976d44af88f2f9743  gcc/testsuite/g++.dg/pr48484.C
  e384db5ab7dd22da4d2f37d7651bb107  gcc/testsuite/g++.dg/pr48633.C
  91af1bf8e0bef02ef0fdef13fea1c20e  gcc/testsuite/g++.dg/pr48660.C
  eb8473dadb424bb65d0d3d0b5588e217  gcc/testsuite/g++.dg/pr48772.C
  6dcfc0220336a51517b7c74c7a9ea7c8  gcc/testsuite/g++.dg/pr49718.C
! 1396926c7340ae61355b55dcb009e78d  gcc/testsuite/g++.dg/pr49847.C
  38f9fa3d1d04965b11deec7e969c1372  gcc/testsuite/g++.dg/pr50672.C
! 8f978b129c00656332f9143a976ac2a6  gcc/testsuite/g++.dg/pr50763-3.C
  687fcdd96edb8d9d6910173004998886  gcc/testsuite/g++.dg/pr50763-4.C
  cea7cdabebcdd0a13585c5a24f935537  gcc/testsuite/g++.dg/pr51264-4.C
+ f1579266bed8aff77e6a7423b465785d  gcc/testsuite/g++.dg/pr53037-1.C
+ 74f88cf4d95a2b57cb0298f30cf43468  gcc/testsuite/g++.dg/pr53037-2.C
+ cc6a0609c1ad6e8374611de8a9b5749c  gcc/testsuite/g++.dg/pr53037-3.C
+ a08f3a160e4ade4d461b7fee61d024de  gcc/testsuite/g++.dg/pr53037-4.C
  acc9f7ed518d3bd847391a849c7741a3  gcc/testsuite/g++.dg/pr53055.C
  602b3ed9ed82ed3733e6a28dadc4d0e6  gcc/testsuite/g++.dg/pr54442.C
  da36360b1eaeaaf6b1adffefc9001717  gcc/testsuite/g++.dg/pr54655.C
  9deb7215258d8ff8a15e52e1fce39338  gcc/testsuite/g++.dg/pr55106.C
  87fdbc7f65a77794bc417b29c89d0401  gcc/testsuite/g++.dg/pr55263.C
! a925ae8e8cb9fbbaebf7c8d183952481  gcc/testsuite/g++.dg/pr55513.C
! 41015247f207e30260f56af8eb9c6021  gcc/testsuite/g++.dg/pr55604.C
  3e6fd08b5cdf6e46c9fefb4cb0720e23  gcc/testsuite/g++.dg/pr57175.C
! 0c1e34f9d8675954029dfe2951e92306  gcc/testsuite/g++.dg/pr57662.C
! 225f4713b7ff821a0136d014b3cd4723  gcc/testsuite/g++.dg/pr57878.C
  511234314f9b0a3ba0b9f5c6d7080948  gcc/testsuite/g++.dg/pr58123.C
! 1c3bb90a5b9e846331336c61b714d4a9  gcc/testsuite/g++.dg/pr58389.C
! 3ec8eae79152a63de1c1e2cca524349f  gcc/testsuite/g++.dg/pr58438.C
  1afffa3d74939421dcfa7501280f88dd  gcc/testsuite/g++.dg/pr58950.C
! 2740ddd548a54604f2c8c71617ef6535  gcc/testsuite/g++.dg/pr59445.C
  f30a79885e763e341eec192a87cfd3ff  gcc/testsuite/g++.dg/pr59477.C
  4afad787e09b4874a12312416375d3cb  gcc/testsuite/g++.dg/pr59482.C
! 047d64cd87785ad203ae42aba78bfb80  gcc/testsuite/g++.dg/pr59510.C
  6ef903a30658765c574e6f3aa8592058  gcc/testsuite/g++.dg/pr59695.C
  423a4225250186b2746ca0c376b8124a  gcc/testsuite/g++.dg/pr60518.C
  11692c0a1d9e603f30a38169f72d42aa  gcc/testsuite/g++.dg/pr60969.C
*************** c196198d50bad93b87f24ccaf1c0ee15  gcc/te
*** 16515,16542 ****
  6ecb2c966e94158184737b1fc7b4b09c  gcc/testsuite/g++.dg/pr64191.C
  20c87edb878a871975f97ea1b4aa5331  gcc/testsuite/g++.dg/pr64353.C
  19486da89030bba1a8dcb18937f021ef  gcc/testsuite/g++.dg/pr64688-2.C
! c6fdd21176af441f66a96b08d134e1f5  gcc/testsuite/g++.dg/pr64688.C
! 1ccfa7238a05729d69f5f19fd4e27629  gcc/testsuite/g++.dg/pr65032.C
  2a99023224d23b7b4c2df438196b9877  gcc/testsuite/g++.dg/pr65049.C
! 04f11017bf1ea81e3616b4ab6092ee76  gcc/testsuite/g++.dg/pr65240-1.C
! df11ea6962a058188f32a7b6e0736080  gcc/testsuite/g++.dg/pr65240-2.C
! f52bab242f96cb3d1efd5737b224d365  gcc/testsuite/g++.dg/pr65240-3.C
! a0c0956d07441e0cdd30f94861b1a5ff  gcc/testsuite/g++.dg/pr65240-4.C
  ff90a96b0f5bda64aea35147770302e1  gcc/testsuite/g++.dg/pr65240.h
! 0c0e65d9e87a774332cacaaed4e2a1b3  gcc/testsuite/g++.dg/pr65242.C
  c987d521d6ec4222a0bbaff58ae0df77  gcc/testsuite/g++.dg/pr65295.C
  3b4312eed9dd9b2a86eadf1d7beb1e82  gcc/testsuite/g++.dg/pr66655.C
  d7dba78f8755778892c14ddaf49a9ce9  gcc/testsuite/g++.dg/pr66655.h
  aa40a4a91073b1035b9353971692e0bc  gcc/testsuite/g++.dg/pr66655_1.cc
  c014278b0e7c6cf72bd8834b1b9d6631  gcc/testsuite/g++.dg/pr66866.C
! 0a4b1b6ad79c1a571e4743d688bccdea  gcc/testsuite/g++.dg/pr67211.C
  af5d9b1cf7a2f7f86d5b6b547f1bc9a9  gcc/testsuite/g++.dg/pr67351.C
  c15a8cc45a8eaf8903cfaae658dc8822  gcc/testsuite/g++.dg/pr67405.C
  61d6f57e830446105d84b6744eecd7eb  gcc/testsuite/g++.dg/pr67666.C
  df58569c9a1333fb8dee09999e7eeecb  gcc/testsuite/g++.dg/pr67671.C
  7aa565b1500342b604aecf54db072ea9  gcc/testsuite/g++.dg/pr67699.C
  bf309241753f1671e6d207f116095ec9  gcc/testsuite/g++.dg/pr67876.C
! f75dfeb6e58b70282916be0e1509d153  gcc/testsuite/g++.dg/pr67989.C
  8a1667caa97af1247ebb15df34a53d0a  gcc/testsuite/g++.dg/pr68062.C
  b90d0d267b1df9857fd3c10ce392252f  gcc/testsuite/g++.dg/pr68270.C
  b3847f98e7816541cd3d0a8cfdedb14d  gcc/testsuite/g++.dg/pr68392.C
--- 17466,17493 ----
  6ecb2c966e94158184737b1fc7b4b09c  gcc/testsuite/g++.dg/pr64191.C
  20c87edb878a871975f97ea1b4aa5331  gcc/testsuite/g++.dg/pr64353.C
  19486da89030bba1a8dcb18937f021ef  gcc/testsuite/g++.dg/pr64688-2.C
! 2925678828b854c5f2a448d4d34d8e08  gcc/testsuite/g++.dg/pr64688.C
! 951008bcdb44de20d54de2c9a99575df  gcc/testsuite/g++.dg/pr65032.C
  2a99023224d23b7b4c2df438196b9877  gcc/testsuite/g++.dg/pr65049.C
! e806b69344c18eb3f9f4d25e7ef1cbb7  gcc/testsuite/g++.dg/pr65240-1.C
! ee3a7e458d7954444a8959c8662bdeba  gcc/testsuite/g++.dg/pr65240-2.C
! 3a4a8f388dfc83911ec4b20be25740b4  gcc/testsuite/g++.dg/pr65240-3.C
! 185b61c9f9f2771ca0469650321db79c  gcc/testsuite/g++.dg/pr65240-4.C
  ff90a96b0f5bda64aea35147770302e1  gcc/testsuite/g++.dg/pr65240.h
! 0057ba501387c41f5fcb4c3488ae63ac  gcc/testsuite/g++.dg/pr65242.C
  c987d521d6ec4222a0bbaff58ae0df77  gcc/testsuite/g++.dg/pr65295.C
  3b4312eed9dd9b2a86eadf1d7beb1e82  gcc/testsuite/g++.dg/pr66655.C
  d7dba78f8755778892c14ddaf49a9ce9  gcc/testsuite/g++.dg/pr66655.h
  aa40a4a91073b1035b9353971692e0bc  gcc/testsuite/g++.dg/pr66655_1.cc
  c014278b0e7c6cf72bd8834b1b9d6631  gcc/testsuite/g++.dg/pr66866.C
! e76d57f03d20c287845bd04c939c4d73  gcc/testsuite/g++.dg/pr67211.C
  af5d9b1cf7a2f7f86d5b6b547f1bc9a9  gcc/testsuite/g++.dg/pr67351.C
  c15a8cc45a8eaf8903cfaae658dc8822  gcc/testsuite/g++.dg/pr67405.C
  61d6f57e830446105d84b6744eecd7eb  gcc/testsuite/g++.dg/pr67666.C
  df58569c9a1333fb8dee09999e7eeecb  gcc/testsuite/g++.dg/pr67671.C
  7aa565b1500342b604aecf54db072ea9  gcc/testsuite/g++.dg/pr67699.C
  bf309241753f1671e6d207f116095ec9  gcc/testsuite/g++.dg/pr67876.C
! 6a66f0b1d8bb8551d84d7f5dae5755ac  gcc/testsuite/g++.dg/pr67989.C
  8a1667caa97af1247ebb15df34a53d0a  gcc/testsuite/g++.dg/pr68062.C
  b90d0d267b1df9857fd3c10ce392252f  gcc/testsuite/g++.dg/pr68270.C
  b3847f98e7816541cd3d0a8cfdedb14d  gcc/testsuite/g++.dg/pr68392.C
*************** b76c7ee65b34b2377285a776d351781b  gcc/te
*** 16548,16575 ****
  530fb04f90e0e86618cc40115644b2da  gcc/testsuite/g++.dg/pr69113.C
  29300174b10233fd47c932d1ffd4c3bf  gcc/testsuite/g++.dg/pr69123.C
  07ceb93faa4d6543359b7c47e9a5e94a  gcc/testsuite/g++.dg/pr69379.C
! e77af829a8368cadb2874c601ccda7ee  gcc/testsuite/g++.dg/pr69667.C
  6574022bacba25e4efad4b7c4931c69a  gcc/testsuite/g++.dg/pr70098.C
! b6486240b7f881b41363b5c5aed08fef  gcc/testsuite/g++.dg/pr70590-2.C
! 78887d1698e74e4fca9c756431fc9a37  gcc/testsuite/g++.dg/pr70590.C
! da93219d5d4c3c978b8b61459c24c676  gcc/testsuite/g++.dg/pr70965.C
  0b728dae13a5f48195e47018a83c4f35  gcc/testsuite/g++.dg/pr71184.C
! 9c7076eebc1a097805724107700a7e60  gcc/testsuite/g++.dg/pr71294.C
  dd5b895f9e8e377b3fc861eecf9bdbf7  gcc/testsuite/g++.dg/pr71389.C
  6b1ee9b05340152c90e7c09d5b9eb5c2  gcc/testsuite/g++.dg/pr71488.C
  ee53985be6eef8ab3747c18a09b14caa  gcc/testsuite/g++.dg/pr71624.C
! 09cad9312be77f437ead53868ad169ac  gcc/testsuite/g++.dg/pr71633.C
  8756c72da60c2ac8cdddc20291df82e3  gcc/testsuite/g++.dg/pr71655.C
! 3af641d9468be57e76fd08c60c6f9412  gcc/testsuite/g++.dg/pr71694.C
  1202ce040862ab92e1f0e7f8da8f372a  gcc/testsuite/g++.dg/pr71973-1.C
  4d7bbea7ad49c81e67fcd756ddcfd12f  gcc/testsuite/g++.dg/pr71973-2.C
  77a4316445a154cba3284882042820df  gcc/testsuite/g++.dg/pr71973-3.C
  5d11f2248bc8824c7b2c877cacdb859e  gcc/testsuite/g++.dg/pr77427.C
! b17059f1a5aa7cc26b5b24bca90c15c3  gcc/testsuite/g++.dg/pr77550.C
  ea5dbf59cf2609041141d1523d1f4409  gcc/testsuite/g++.dg/pr77812.C
  1926713263dfb3dd6c2cf69539dd9e6c  gcc/testsuite/g++.dg/pr78060.C
  c95367f1eb1ebd4dbc41e5d48df64517  gcc/testsuite/g++.dg/pr78088.C
! 96ad4b800e19348bc093168469df82b3  gcc/testsuite/g++.dg/pr78112-2.C
  112778a3e035f4aa68ad342e9a253564  gcc/testsuite/g++.dg/pr78112.C
  7759fc7f6478af699ff865a66c157487  gcc/testsuite/g++.dg/pr78229.C
  065cecda7ba3d4a4d3ccf2eec4be1032  gcc/testsuite/g++.dg/pr78933.C
--- 17499,17526 ----
  530fb04f90e0e86618cc40115644b2da  gcc/testsuite/g++.dg/pr69113.C
  29300174b10233fd47c932d1ffd4c3bf  gcc/testsuite/g++.dg/pr69123.C
  07ceb93faa4d6543359b7c47e9a5e94a  gcc/testsuite/g++.dg/pr69379.C
! 7577b450ba2f8422ac17aa9a168a69c1  gcc/testsuite/g++.dg/pr69667.C
  6574022bacba25e4efad4b7c4931c69a  gcc/testsuite/g++.dg/pr70098.C
! 52e836d540fc39ce14dbc3124fd1ad8e  gcc/testsuite/g++.dg/pr70590-2.C
! d8fba4e6baf8e0880ae882765e1135b4  gcc/testsuite/g++.dg/pr70590.C
! 5c6cf3e2bb082400e2ca3d17973fdd4b  gcc/testsuite/g++.dg/pr70965.C
  0b728dae13a5f48195e47018a83c4f35  gcc/testsuite/g++.dg/pr71184.C
! 8b83dfbae2a2ae737596ef723b347d76  gcc/testsuite/g++.dg/pr71294.C
  dd5b895f9e8e377b3fc861eecf9bdbf7  gcc/testsuite/g++.dg/pr71389.C
  6b1ee9b05340152c90e7c09d5b9eb5c2  gcc/testsuite/g++.dg/pr71488.C
  ee53985be6eef8ab3747c18a09b14caa  gcc/testsuite/g++.dg/pr71624.C
! 24ad5a5a081cc68d9ccdaab0a8c765b2  gcc/testsuite/g++.dg/pr71633.C
  8756c72da60c2ac8cdddc20291df82e3  gcc/testsuite/g++.dg/pr71655.C
! 61b9ffe86576d2921bd026841e1942db  gcc/testsuite/g++.dg/pr71694.C
  1202ce040862ab92e1f0e7f8da8f372a  gcc/testsuite/g++.dg/pr71973-1.C
  4d7bbea7ad49c81e67fcd756ddcfd12f  gcc/testsuite/g++.dg/pr71973-2.C
  77a4316445a154cba3284882042820df  gcc/testsuite/g++.dg/pr71973-3.C
  5d11f2248bc8824c7b2c877cacdb859e  gcc/testsuite/g++.dg/pr77427.C
! 076ca4036036dc71eb84d0a58a23b250  gcc/testsuite/g++.dg/pr77550.C
  ea5dbf59cf2609041141d1523d1f4409  gcc/testsuite/g++.dg/pr77812.C
  1926713263dfb3dd6c2cf69539dd9e6c  gcc/testsuite/g++.dg/pr78060.C
  c95367f1eb1ebd4dbc41e5d48df64517  gcc/testsuite/g++.dg/pr78088.C
! 9d342e9b2eaf9acdb04ca94a19f83e80  gcc/testsuite/g++.dg/pr78112-2.C
  112778a3e035f4aa68ad342e9a253564  gcc/testsuite/g++.dg/pr78112.C
  7759fc7f6478af699ff865a66c157487  gcc/testsuite/g++.dg/pr78229.C
  065cecda7ba3d4a4d3ccf2eec4be1032  gcc/testsuite/g++.dg/pr78933.C
*************** fb18b3815ef681abb5d2644371daf2dd  gcc/te
*** 16577,16593 ****
  01e875a4545c8fe83ebaf96bf95a3420  gcc/testsuite/g++.dg/pr79095-1.C
  2787a2b67dcc28775cca21c78f828999  gcc/testsuite/g++.dg/pr79095-2.C
  bee8b26ef225678f65e45458f23ce109  gcc/testsuite/g++.dg/pr79095-3.C
- 396d19b454b2f530ecefee4ed1392367  gcc/testsuite/g++.dg/pr79095-4.C
  7793f5ae83c6d8ec736e595035f4ad54  gcc/testsuite/g++.dg/pr79095-5.C
  f66afb99493b92c63a8b1e5a2bd2ca5c  gcc/testsuite/g++.dg/pr79761.C
  7f58616ac3fdfed0cf807ad0ed2d2e24  gcc/testsuite/g++.dg/pr79764.C
  bfc1d08789ff600f77190c59b402a8ec  gcc/testsuite/g++.dg/pr79769.C
  1873733a2a789a90d63399342ef33a77  gcc/testsuite/g++.dg/pr80222.C
! 62ede7f6a84d7b41662e00a30aa1e229  gcc/testsuite/g++.dg/pr80287.C
  212275758392d3afcc7ab9c8fa2c4987  gcc/testsuite/g++.dg/pr80374.C
  b5452fdc9af692c5acb4d9af45519954  gcc/testsuite/g++.dg/pr81007.C
  11fd788c1699adfa6c7e984373e41c98  gcc/testsuite/g++.dg/pr82128.C
  0776b7a6a5995c6b17c86a9c10abbdb2  gcc/testsuite/g++.dg/pr82155.C
  80e57549741422847fb3acbd80e38ea8  gcc/testsuite/g++.dg/predict-loop-exit-1.C
  b6e066cc704bbace8cbfa3d84d6416c9  gcc/testsuite/g++.dg/predict-loop-exit-2.C
  2ee9d3e34345a096b88c9c1968c037c7  gcc/testsuite/g++.dg/predict-loop-exit-3.C
--- 17528,17569 ----
  01e875a4545c8fe83ebaf96bf95a3420  gcc/testsuite/g++.dg/pr79095-1.C
  2787a2b67dcc28775cca21c78f828999  gcc/testsuite/g++.dg/pr79095-2.C
  bee8b26ef225678f65e45458f23ce109  gcc/testsuite/g++.dg/pr79095-3.C
  7793f5ae83c6d8ec736e595035f4ad54  gcc/testsuite/g++.dg/pr79095-5.C
  f66afb99493b92c63a8b1e5a2bd2ca5c  gcc/testsuite/g++.dg/pr79761.C
  7f58616ac3fdfed0cf807ad0ed2d2e24  gcc/testsuite/g++.dg/pr79764.C
  bfc1d08789ff600f77190c59b402a8ec  gcc/testsuite/g++.dg/pr79769.C
  1873733a2a789a90d63399342ef33a77  gcc/testsuite/g++.dg/pr80222.C
! 2887077fc314d48e5fd771dc936c02a9  gcc/testsuite/g++.dg/pr80287.C
  212275758392d3afcc7ab9c8fa2c4987  gcc/testsuite/g++.dg/pr80374.C
+ 2660aa92b1a63a63921a3a56ac90f79d  gcc/testsuite/g++.dg/pr80463.C
+ ba5a51994ea9c200155863d925a1c41b  gcc/testsuite/g++.dg/pr80481.C
+ 914b9d1358e92d529a3e1887bc7efeed  gcc/testsuite/g++.dg/pr80707.C
  b5452fdc9af692c5acb4d9af45519954  gcc/testsuite/g++.dg/pr81007.C
+ e186a635850663ffcce2b26062e40018  gcc/testsuite/g++.dg/pr81194.C
+ 31b5d01134fc2be1551e446b9276fc9b  gcc/testsuite/g++.dg/pr81308-1.C
+ 2805e4032e3a5ed95dbba05da6ae2744  gcc/testsuite/g++.dg/pr81308-2.C
  11fd788c1699adfa6c7e984373e41c98  gcc/testsuite/g++.dg/pr82128.C
  0776b7a6a5995c6b17c86a9c10abbdb2  gcc/testsuite/g++.dg/pr82155.C
+ f8418c6f8a6bbeb32b7b4b87b05ee7c1  gcc/testsuite/g++.dg/pr82404.C
+ 843b6d8f1ea4146d4715d9929bded743  gcc/testsuite/g++.dg/pr82413.C
+ 0530f46876e09a9287d87a8c58ba05c7  gcc/testsuite/g++.dg/pr82836.C
+ a63edcbbe4b8b8bed304613eb2fac98c  gcc/testsuite/g++.dg/pr83239.C
+ a8cae2d227c02ee5705e9b5b205bb1d1  gcc/testsuite/g++.dg/pr83979.c
+ 8528aaf5d93c3e6771dcc4828d7264b5  gcc/testsuite/g++.dg/pr84231.C
+ 083c1f5c90058b5d83822264c5d52f0e  gcc/testsuite/g++.dg/pr84264.C
+ da4464f64c7ae819c4a0629cfaf7095e  gcc/testsuite/g++.dg/pr84279.C
+ fcd3d77f2c884effb0321a5b04ff8ca6  gcc/testsuite/g++.dg/pr84492.C
+ 18983b086a2ae1ee8b28131db73bc2fa  gcc/testsuite/g++.dg/pr84729.C
+ 75d741968e42202427b6e9c163e5c326  gcc/testsuite/g++.dg/pr84821.C
+ 7d7a517b4c7f29f290c497586f9e3065  gcc/testsuite/g++.dg/pr84933.C
+ 4d2db17f03f3c3519e3970f90016bf3e  gcc/testsuite/g++.dg/pr84943-2.C
+ 809680e51913cfb1ba155c091ed24681  gcc/testsuite/g++.dg/pr84943.C
+ aad8069aa18f6828a98268552e11908d  gcc/testsuite/g++.dg/pr85008.C
+ e4a1820535e55911e89f64e30d107b90  gcc/testsuite/g++.dg/pr85026.C
+ 26523a60503dbbebb05b742fab0b8e02  gcc/testsuite/g++.dg/pr85027.C
+ 2bfcdf7308139c401a1aa4c31c1ddccc  gcc/testsuite/g++.dg/pr85039-1.C
+ 2bcfbd4698827296fc17087e3fa7e7e3  gcc/testsuite/g++.dg/pr85039-2.C
+ 1d454227ffdc90ff5d4a4fea823a5890  gcc/testsuite/g++.dg/pr85478.C
  80e57549741422847fb3acbd80e38ea8  gcc/testsuite/g++.dg/predict-loop-exit-1.C
  b6e066cc704bbace8cbfa3d84d6416c9  gcc/testsuite/g++.dg/predict-loop-exit-2.C
  2ee9d3e34345a096b88c9c1968c037c7  gcc/testsuite/g++.dg/predict-loop-exit-3.C
*************** b6e066cc704bbace8cbfa3d84d6416c9  gcc/te
*** 16596,16602 ****
  2bcb8e987d41c50dbd1de216296fd071  gcc/testsuite/g++.dg/rtti/anon-ns1.C
  7345c9463c7d47c7d425463846af6b14  gcc/testsuite/g++.dg/rtti/crash1.C
  34c4c8f1721c4f70c2261dcc1b0a7630  gcc/testsuite/g++.dg/rtti/crash2.C
! 1c5747267df2e433e796e38ad3acfc48  gcc/testsuite/g++.dg/rtti/crash3.C
  d2801b8f989dad0612c1e7483b39be9d  gcc/testsuite/g++.dg/rtti/crash4.C
  7c2277ddbea5545cda84aae94fdb88ad  gcc/testsuite/g++.dg/rtti/cv1.C
  a30f80781bea4012b3066258d71adff2  gcc/testsuite/g++.dg/rtti/darwin-builtin-linkage.C
--- 17572,17578 ----
  2bcb8e987d41c50dbd1de216296fd071  gcc/testsuite/g++.dg/rtti/anon-ns1.C
  7345c9463c7d47c7d425463846af6b14  gcc/testsuite/g++.dg/rtti/crash1.C
  34c4c8f1721c4f70c2261dcc1b0a7630  gcc/testsuite/g++.dg/rtti/crash2.C
! 02fe4b9ea19cc580c5c40cc46849bb27  gcc/testsuite/g++.dg/rtti/crash3.C
  d2801b8f989dad0612c1e7483b39be9d  gcc/testsuite/g++.dg/rtti/crash4.C
  7c2277ddbea5545cda84aae94fdb88ad  gcc/testsuite/g++.dg/rtti/cv1.C
  a30f80781bea4012b3066258d71adff2  gcc/testsuite/g++.dg/rtti/darwin-builtin-linkage.C
*************** c13886fc7e0e1c4f2f10e10b0cf68ec5  gcc/te
*** 16609,16614 ****
--- 17585,17591 ----
  6b7b9abdef581b0443a6c95803780913  gcc/testsuite/g++.dg/rtti/dyncast7.C
  df8a805281a95c255d57e5562a0c9c03  gcc/testsuite/g++.dg/rtti/fn-quals.C
  b5e04568d275d9d8237df66b459409ef  gcc/testsuite/g++.dg/rtti/incomplete1.C
+ c27356ab2343f10d43b1a2e8626535be  gcc/testsuite/g++.dg/rtti/missing-typeinfo-include.C
  11ddfffc9b05013900dc0f7fcf21274e  gcc/testsuite/g++.dg/rtti/no-rtti-voidptr.C
  8f46e7645aa4679909b2df4d299e9558  gcc/testsuite/g++.dg/rtti/no-rtti.C
  352a1ba9eb698ac9c7b5ff1d691318bb  gcc/testsuite/g++.dg/rtti/predefined-rtti-macro-1.C
*************** f45226306cb853d7f47a657db3e4f853  gcc/te
*** 16627,16637 ****
  b0c0786c803eaf05e6755f729c87257e  gcc/testsuite/g++.dg/rtti/typeid7.C
  3bf0c0d4697ad1ada3cda87b9bc2dc61  gcc/testsuite/g++.dg/rtti/typeid8.C
  1f8ec1c3ba15e07e5cd63d52ea64abab  gcc/testsuite/g++.dg/rtti/typeid9.C
  358da784b700bf42b91032b2ceb71406  gcc/testsuite/g++.dg/simulate-thread/atomics-1.C
  3357bf9a2204710e948cb278fb4c4266  gcc/testsuite/g++.dg/simulate-thread/atomics-2.C
  7d0b29b093ebe7e8b1234401b37938d4  gcc/testsuite/g++.dg/simulate-thread/bitfields-2.C
  7be1021de7b9da9e24c91957574a66c0  gcc/testsuite/g++.dg/simulate-thread/bitfields.C
! 7f2efb4dacbe3c1bd08109a9656e76d9  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
--- 17604,17615 ----
  b0c0786c803eaf05e6755f729c87257e  gcc/testsuite/g++.dg/rtti/typeid7.C
  3bf0c0d4697ad1ada3cda87b9bc2dc61  gcc/testsuite/g++.dg/rtti/typeid8.C
  1f8ec1c3ba15e07e5cd63d52ea64abab  gcc/testsuite/g++.dg/rtti/typeid9.C
+ 9645499a8d417e1ccb227d0c5593c669  gcc/testsuite/g++.dg/semicolon-fixits.C
  358da784b700bf42b91032b2ceb71406  gcc/testsuite/g++.dg/simulate-thread/atomics-1.C
  3357bf9a2204710e948cb278fb4c4266  gcc/testsuite/g++.dg/simulate-thread/atomics-2.C
  7d0b29b093ebe7e8b1234401b37938d4  gcc/testsuite/g++.dg/simulate-thread/bitfields-2.C
  7be1021de7b9da9e24c91957574a66c0  gcc/testsuite/g++.dg/simulate-thread/bitfields.C
! e3ae158f34619f8759799bd1dddc07b6  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
*** 16641,16647 ****
  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
! a4b9e5c63340f45b28e145273f4aaef9  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
--- 17619,17625 ----
  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
! aef2b04399f62d426e8de47d007cb9fd  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
*************** f116a649ea95ba19008c4552c8219f01  gcc/te
*** 16649,16679 ****
  c1046dd316dec6f0b685aa481a1b9387  gcc/testsuite/g++.dg/spellcheck-fields-2.C
  b57591402d64bc0218597be33d025525  gcc/testsuite/g++.dg/spellcheck-fields.C
  79e080cdf184f55288b061d44eea01fd  gcc/testsuite/g++.dg/spellcheck-identifiers-2.C
! 7f2aa9601d1fdc73ba9a7d2529647f89  gcc/testsuite/g++.dg/spellcheck-identifiers.C
! e7159c9b9a1ff68d4e69778840f5b093  gcc/testsuite/g++.dg/spellcheck-macro-ordering.C
  5b8657561b4b62bcc5926254f430cf28  gcc/testsuite/g++.dg/spellcheck-pr77829.C
  8917eaf0965b3d85de7008f1d17dee06  gcc/testsuite/g++.dg/spellcheck-pr78313.C
  5d9a49333badc922c2bde7962cd3aa86  gcc/testsuite/g++.dg/spellcheck-pr78656.C
  1e7f9ca849f3d6a5d98631b566bbd646  gcc/testsuite/g++.dg/spellcheck-pr79298.C
  05ec2fb299dc42b047baa77fc9134cdd  gcc/testsuite/g++.dg/spellcheck-typenames.C
! 994b577ad723e7b2b47bedfa30e195ee  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
! 62fa96d1dd89c22b15cbfa1242477ca4  gcc/testsuite/g++.dg/tc1/dr101.C
  dd2defc24babdb2f3aa8673df9c6f9ee  gcc/testsuite/g++.dg/tc1/dr108.C
  3592a0b845ee849a03440c75d39ae12b  gcc/testsuite/g++.dg/tc1/dr127.C
  1b0c9fccd7b07ffc338e9e9ca4dbb8c0  gcc/testsuite/g++.dg/tc1/dr128.C
  0af74303a4251b24669c368429e4af91  gcc/testsuite/g++.dg/tc1/dr135.C
  a6b204a1733f1ef91a83ebba5d3a48be  gcc/testsuite/g++.dg/tc1/dr137.C
! df17729204a8c78ecf9002c6cf9e5474  gcc/testsuite/g++.dg/tc1/dr142.C
  4293e24bf448b6ddc91f799f06874284  gcc/testsuite/g++.dg/tc1/dr147.C
! 5e12391ec89fbd33d02be6589223fe78  gcc/testsuite/g++.dg/tc1/dr152.C
  9b56ad73b780b825e0de60463c83386f  gcc/testsuite/g++.dg/tc1/dr159.C
  62aa8921c6705fdab59b10a7be7f39b9  gcc/testsuite/g++.dg/tc1/dr161.C
  3e61e5bdc2b1492780331f39f942586f  gcc/testsuite/g++.dg/tc1/dr164.C
  5825ece278cc051f3204f72abb191317  gcc/testsuite/g++.dg/tc1/dr166.C
! 302c9ff5944026043db8e45e1d6b729d  gcc/testsuite/g++.dg/tc1/dr176.C
  54a7e43eb51f59e7eae694e23b7ef1f6  gcc/testsuite/g++.dg/tc1/dr179.C
  9704d0caf0975b804de4cf5a0218a1db  gcc/testsuite/g++.dg/tc1/dr185.C
  007afeacb36d4756871511f3e7e8ea6f  gcc/testsuite/g++.dg/tc1/dr188.C
--- 17627,17663 ----
  c1046dd316dec6f0b685aa481a1b9387  gcc/testsuite/g++.dg/spellcheck-fields-2.C
  b57591402d64bc0218597be33d025525  gcc/testsuite/g++.dg/spellcheck-fields.C
  79e080cdf184f55288b061d44eea01fd  gcc/testsuite/g++.dg/spellcheck-identifiers-2.C
! fa8b474575463621efbf43d331cec5f2  gcc/testsuite/g++.dg/spellcheck-identifiers.C
! c0c20230f9ca78ee531a757fe9c20cdc  gcc/testsuite/g++.dg/spellcheck-macro-ordering-2.C
! c7d19bcfd6293dcc2e1b62c71b24d14e  gcc/testsuite/g++.dg/spellcheck-macro-ordering.C
  5b8657561b4b62bcc5926254f430cf28  gcc/testsuite/g++.dg/spellcheck-pr77829.C
  8917eaf0965b3d85de7008f1d17dee06  gcc/testsuite/g++.dg/spellcheck-pr78313.C
  5d9a49333badc922c2bde7962cd3aa86  gcc/testsuite/g++.dg/spellcheck-pr78656.C
  1e7f9ca849f3d6a5d98631b566bbd646  gcc/testsuite/g++.dg/spellcheck-pr79298.C
+ 00a0a36a44390bd9273eb44614e811c5  gcc/testsuite/g++.dg/spellcheck-pr80177.C
+ 569260f7b52f8c920f20c7151931a919  gcc/testsuite/g++.dg/spellcheck-reswords.C
+ 8a93c276a8646edb36b119c1275b997d  gcc/testsuite/g++.dg/spellcheck-stdlib.C
  05ec2fb299dc42b047baa77fc9134cdd  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
! 698da14000ab9061b259e17fc4a81d5f  gcc/testsuite/g++.dg/tc1/dr101.C
  dd2defc24babdb2f3aa8673df9c6f9ee  gcc/testsuite/g++.dg/tc1/dr108.C
  3592a0b845ee849a03440c75d39ae12b  gcc/testsuite/g++.dg/tc1/dr127.C
  1b0c9fccd7b07ffc338e9e9ca4dbb8c0  gcc/testsuite/g++.dg/tc1/dr128.C
  0af74303a4251b24669c368429e4af91  gcc/testsuite/g++.dg/tc1/dr135.C
  a6b204a1733f1ef91a83ebba5d3a48be  gcc/testsuite/g++.dg/tc1/dr137.C
! 977fe6e540037e43f48a3d49f20d4b41  gcc/testsuite/g++.dg/tc1/dr142.C
  4293e24bf448b6ddc91f799f06874284  gcc/testsuite/g++.dg/tc1/dr147.C
! db994e5b10fcb3e8ba3d62cd17b3ae65  gcc/testsuite/g++.dg/tc1/dr152.C
  9b56ad73b780b825e0de60463c83386f  gcc/testsuite/g++.dg/tc1/dr159.C
  62aa8921c6705fdab59b10a7be7f39b9  gcc/testsuite/g++.dg/tc1/dr161.C
  3e61e5bdc2b1492780331f39f942586f  gcc/testsuite/g++.dg/tc1/dr164.C
  5825ece278cc051f3204f72abb191317  gcc/testsuite/g++.dg/tc1/dr166.C
! 41924759177f1face88bf750afa5a403  gcc/testsuite/g++.dg/tc1/dr176.C
  54a7e43eb51f59e7eae694e23b7ef1f6  gcc/testsuite/g++.dg/tc1/dr179.C
  9704d0caf0975b804de4cf5a0218a1db  gcc/testsuite/g++.dg/tc1/dr185.C
  007afeacb36d4756871511f3e7e8ea6f  gcc/testsuite/g++.dg/tc1/dr188.C
*************** f1f5a04f41640e7625de6d557491ab7d  gcc/te
*** 16724,16733 ****
  51a27bac3d6d8fa430db3b405c07c5af  gcc/testsuite/g++.dg/template/access8.C
  7834be58b513cdde90c14c885e21ae63  gcc/testsuite/g++.dg/template/access9.C
  baa333203039ed72606c24494f2ff44e  gcc/testsuite/g++.dg/template/addr1.C
! 9b4320ebd3b1162890f33545ae1eb4e7  gcc/testsuite/g++.dg/template/aggr-init1.C
  98629e0464be5ba2c3ca56190b5b6f48  gcc/testsuite/g++.dg/template/alignof1.C
  c6adc553fe9f9b98d469bd141374ae56  gcc/testsuite/g++.dg/template/alignof2.C
! 0badf7e9336f7d06bd6b5e8cad37e171  gcc/testsuite/g++.dg/template/anon1.C
  989ad07a7ee0d8ab918018598ad338ab  gcc/testsuite/g++.dg/template/anon2.C
  fb2e00c0df67ca0bdb82db579b06a881  gcc/testsuite/g++.dg/template/anon3.C
  66a2a8fd730ed0d9822656e2f45bc924  gcc/testsuite/g++.dg/template/anon4.C
--- 17708,17717 ----
  51a27bac3d6d8fa430db3b405c07c5af  gcc/testsuite/g++.dg/template/access8.C
  7834be58b513cdde90c14c885e21ae63  gcc/testsuite/g++.dg/template/access9.C
  baa333203039ed72606c24494f2ff44e  gcc/testsuite/g++.dg/template/addr1.C
! bb94e1454f117750efe24fa8f89a9ea4  gcc/testsuite/g++.dg/template/aggr-init1.C
  98629e0464be5ba2c3ca56190b5b6f48  gcc/testsuite/g++.dg/template/alignof1.C
  c6adc553fe9f9b98d469bd141374ae56  gcc/testsuite/g++.dg/template/alignof2.C
! 1c4b43681154c77f9e0f030733086aa2  gcc/testsuite/g++.dg/template/anon1.C
  989ad07a7ee0d8ab918018598ad338ab  gcc/testsuite/g++.dg/template/anon2.C
  fb2e00c0df67ca0bdb82db579b06a881  gcc/testsuite/g++.dg/template/anon3.C
  66a2a8fd730ed0d9822656e2f45bc924  gcc/testsuite/g++.dg/template/anon4.C
*************** a1f7515ba86f0bee05a8d1da2482e446  gcc/te
*** 16763,16774 ****
  8894a9a8ca6a93ffc4fb75f5882e3826  gcc/testsuite/g++.dg/template/array26.C
  3cb1ac965144a7e2ac355e9da62cbd89  gcc/testsuite/g++.dg/template/array27.C
  14ad9d85455e159c57805c987fca372e  gcc/testsuite/g++.dg/template/array28.C
! 2e7fcd0824d4e9cdb70e2f2dc1f1330e  gcc/testsuite/g++.dg/template/array29.C
  353ce65cd4b47cb87d4a7e33038e372d  gcc/testsuite/g++.dg/template/array3.C
  3904f7cfd18135b5f8ef1dbb020648fc  gcc/testsuite/g++.dg/template/array4.C
  c557bdb58ff52b9fc368185880923627  gcc/testsuite/g++.dg/template/array5.C
  294448858892b33e7116237b86ab785a  gcc/testsuite/g++.dg/template/array6.C
! 579905889abdf110f78879708a88d557  gcc/testsuite/g++.dg/template/array7.C
  9135445bfc294af3cf8b77142f5e8782  gcc/testsuite/g++.dg/template/array8.C
  9ff0e683b6d55fee7915dd8f28470138  gcc/testsuite/g++.dg/template/array9.C
  1425424ec12dc2d174e963018ba1fb0a  gcc/testsuite/g++.dg/template/arrow1.C
--- 17747,17758 ----
  8894a9a8ca6a93ffc4fb75f5882e3826  gcc/testsuite/g++.dg/template/array26.C
  3cb1ac965144a7e2ac355e9da62cbd89  gcc/testsuite/g++.dg/template/array27.C
  14ad9d85455e159c57805c987fca372e  gcc/testsuite/g++.dg/template/array28.C
! cb999728c2f55f8eb566e7b89e2c6991  gcc/testsuite/g++.dg/template/array29.C
  353ce65cd4b47cb87d4a7e33038e372d  gcc/testsuite/g++.dg/template/array3.C
  3904f7cfd18135b5f8ef1dbb020648fc  gcc/testsuite/g++.dg/template/array4.C
  c557bdb58ff52b9fc368185880923627  gcc/testsuite/g++.dg/template/array5.C
  294448858892b33e7116237b86ab785a  gcc/testsuite/g++.dg/template/array6.C
! aceb847bfdf79fcbbe209d69a1fcd05a  gcc/testsuite/g++.dg/template/array7.C
  9135445bfc294af3cf8b77142f5e8782  gcc/testsuite/g++.dg/template/array8.C
  9ff0e683b6d55fee7915dd8f28470138  gcc/testsuite/g++.dg/template/array9.C
  1425424ec12dc2d174e963018ba1fb0a  gcc/testsuite/g++.dg/template/arrow1.C
*************** b8d7ae2a709e06f2d49e19cfb00e77d3  gcc/te
*** 16781,16786 ****
--- 17765,17771 ----
  2f3399aac63bff69580e94f66f716e0b  gcc/testsuite/g++.dg/template/bitfield1.C
  fc503a6c4d63b92622d495b917629877  gcc/testsuite/g++.dg/template/bitfield2.C
  8a0fec8b2c65fed33977466ab46bb239  gcc/testsuite/g++.dg/template/bitfield3.C
+ 3beaec71f8c3eee7f77d4f01acdfd9c8  gcc/testsuite/g++.dg/template/bitfield4.C
  479ce6c62d0ab31928edd3bcef27bd5c  gcc/testsuite/g++.dg/template/builtin1.C
  11d89720e8ea4a5f11553338c13ffab9  gcc/testsuite/g++.dg/template/call1.C
  e459df3ddd572b111e8694073c95e5b9  gcc/testsuite/g++.dg/template/call2.C
*************** cb422094173e29b6267dd8e869190b16  gcc/te
*** 16800,16810 ****
  85fdca2492646ea03edf6e35b0a582d0  gcc/testsuite/g++.dg/template/canon-type-5.C
  c54175875559dba3c1940b58610bf79a  gcc/testsuite/g++.dg/template/canon-type-6.C
  d4dd1fcb5ba5fa6c770548eb750325c0  gcc/testsuite/g++.dg/template/canon-type-7.C
! 14a090fd842facce354c55bdb935647d  gcc/testsuite/g++.dg/template/canon-type-8.C
  883c715e739a48e6b3cdf914b95fb5e0  gcc/testsuite/g++.dg/template/canon-type-9.C
  dae4547b0ed98c262ad1adff2778e177  gcc/testsuite/g++.dg/template/cast1.C
  e37c2b4d718f2648117dc43cd2edf39d  gcc/testsuite/g++.dg/template/cast2.C
  f715bb7e6f7666f67d1ebfc95f66935e  gcc/testsuite/g++.dg/template/cast3.C
  da6545b2d6ba666e74a516285717c0ed  gcc/testsuite/g++.dg/template/char1.C
  706f2857327f695c7b984df9d14be0b0  gcc/testsuite/g++.dg/template/class1.C
  4a9fdbf9e37ab379d97118860f6e5744  gcc/testsuite/g++.dg/template/class2.C
--- 17785,17797 ----
  85fdca2492646ea03edf6e35b0a582d0  gcc/testsuite/g++.dg/template/canon-type-5.C
  c54175875559dba3c1940b58610bf79a  gcc/testsuite/g++.dg/template/canon-type-6.C
  d4dd1fcb5ba5fa6c770548eb750325c0  gcc/testsuite/g++.dg/template/canon-type-7.C
! 692bdd39b8e6b8277d4dc42d635d4e0c  gcc/testsuite/g++.dg/template/canon-type-8.C
  883c715e739a48e6b3cdf914b95fb5e0  gcc/testsuite/g++.dg/template/canon-type-9.C
  dae4547b0ed98c262ad1adff2778e177  gcc/testsuite/g++.dg/template/cast1.C
  e37c2b4d718f2648117dc43cd2edf39d  gcc/testsuite/g++.dg/template/cast2.C
  f715bb7e6f7666f67d1ebfc95f66935e  gcc/testsuite/g++.dg/template/cast3.C
+ 00403e2a204e7a49863de00b098c5b1f  gcc/testsuite/g++.dg/template/cast4.C
+ f5d2e883a8bc60334451d54c7ef5bef7  gcc/testsuite/g++.dg/template/cast5.C
  da6545b2d6ba666e74a516285717c0ed  gcc/testsuite/g++.dg/template/char1.C
  706f2857327f695c7b984df9d14be0b0  gcc/testsuite/g++.dg/template/class1.C
  4a9fdbf9e37ab379d97118860f6e5744  gcc/testsuite/g++.dg/template/class2.C
*************** d75b945d8bfffb304a8d55dc4a97d457  gcc/te
*** 16830,16836 ****
  29ed92e899cee3c271630df694a225fc  gcc/testsuite/g++.dg/template/const8.C
  86a7d82d7e4fadd71353ebf643d761f0  gcc/testsuite/g++.dg/template/constant1.C
  84ddc9149ab5cd6be47e98d5f28f6bfb  gcc/testsuite/g++.dg/template/constant2.C
! 32f254d8ff7fc2dadfbb4100169c8710  gcc/testsuite/g++.dg/template/conv1.C
  2c3b429768e3e6f954114fbd126e3122  gcc/testsuite/g++.dg/template/conv10.C
  1f099f4d18cc01cba4d862343a26e74b  gcc/testsuite/g++.dg/template/conv11.C
  16300956167e844e216a7bcd4c7efa50  gcc/testsuite/g++.dg/template/conv12.C
--- 17817,17823 ----
  29ed92e899cee3c271630df694a225fc  gcc/testsuite/g++.dg/template/const8.C
  86a7d82d7e4fadd71353ebf643d761f0  gcc/testsuite/g++.dg/template/constant1.C
  84ddc9149ab5cd6be47e98d5f28f6bfb  gcc/testsuite/g++.dg/template/constant2.C
! 446a4c3e34ffa3232ea0f3f944b579fb  gcc/testsuite/g++.dg/template/conv1.C
  2c3b429768e3e6f954114fbd126e3122  gcc/testsuite/g++.dg/template/conv10.C
  1f099f4d18cc01cba4d862343a26e74b  gcc/testsuite/g++.dg/template/conv11.C
  16300956167e844e216a7bcd4c7efa50  gcc/testsuite/g++.dg/template/conv12.C
*************** c31c403acbaa655ae0413e1d4350ae4b  gcc/te
*** 16838,16844 ****
  c28b6679b01f4bbe8403c045289d2aef  gcc/testsuite/g++.dg/template/conv14.C
  383f6618c1ccaddea23b36ff23d6d35e  gcc/testsuite/g++.dg/template/conv2.C
  be5017725e9889a47d07ba0d3a3464ff  gcc/testsuite/g++.dg/template/conv3.C
! 8e48e2a0d63cdb353b4a07380c4cf577  gcc/testsuite/g++.dg/template/conv4.C
  65388659b6ed4f0befbd55edf3402b26  gcc/testsuite/g++.dg/template/conv5.C
  a99117f536bfae5da72de6e056eca4b9  gcc/testsuite/g++.dg/template/conv6.C
  94bd39b4081e21725b306825863ab68b  gcc/testsuite/g++.dg/template/conv7.C
--- 17825,17831 ----
  c28b6679b01f4bbe8403c045289d2aef  gcc/testsuite/g++.dg/template/conv14.C
  383f6618c1ccaddea23b36ff23d6d35e  gcc/testsuite/g++.dg/template/conv2.C
  be5017725e9889a47d07ba0d3a3464ff  gcc/testsuite/g++.dg/template/conv3.C
! 53aab59e272fd22ef1ad191d0f31e01d  gcc/testsuite/g++.dg/template/conv4.C
  65388659b6ed4f0befbd55edf3402b26  gcc/testsuite/g++.dg/template/conv5.C
  a99117f536bfae5da72de6e056eca4b9  gcc/testsuite/g++.dg/template/conv6.C
  94bd39b4081e21725b306825863ab68b  gcc/testsuite/g++.dg/template/conv7.C
*************** a99117f536bfae5da72de6e056eca4b9  gcc/te
*** 16846,16860 ****
  1469c87ecb6738a771875739cd1be3c1  gcc/testsuite/g++.dg/template/copy1.C
  ff8577ac97f88f47b1257f3d5c6a4c9a  gcc/testsuite/g++.dg/template/crash1.C
  245c3c3a69c27117dfcc4b6588677c7d  gcc/testsuite/g++.dg/template/crash10.C
! 71cd4d9bd2cbdcf3dca414dbf7f1b2af  gcc/testsuite/g++.dg/template/crash100.C
  565c1bfc2d04d65f64253e16e35798d9  gcc/testsuite/g++.dg/template/crash101.C
  f75072de1c2abdfca708b732cbfafa89  gcc/testsuite/g++.dg/template/crash102.C
  44d05d042dc79a79585f17b3bcda6ec0  gcc/testsuite/g++.dg/template/crash103.C
  1225a54926913e691b51137aef8b5d33  gcc/testsuite/g++.dg/template/crash104.C
  f07fd8a3820e9db30fbbab54d71dd891  gcc/testsuite/g++.dg/template/crash105.C
! 5b09133846547d3b92664b3dede323a4  gcc/testsuite/g++.dg/template/crash106.C
! d8348200baa831f9504f24431e8f65c8  gcc/testsuite/g++.dg/template/crash107.C
! d99f465c2964b567ae2f38287c38dd27  gcc/testsuite/g++.dg/template/crash108.C
  b3167df4bc44e634fce27a27e383e9a4  gcc/testsuite/g++.dg/template/crash109.C
  5fdda9a20dcbd6e2fccb01f28292529e  gcc/testsuite/g++.dg/template/crash11.C
  bc34a5c1a684295dab662a89dc6697f6  gcc/testsuite/g++.dg/template/crash110.C
--- 17833,17847 ----
  1469c87ecb6738a771875739cd1be3c1  gcc/testsuite/g++.dg/template/copy1.C
  ff8577ac97f88f47b1257f3d5c6a4c9a  gcc/testsuite/g++.dg/template/crash1.C
  245c3c3a69c27117dfcc4b6588677c7d  gcc/testsuite/g++.dg/template/crash10.C
! c6f57753f4555edd2774141e7cb2f76a  gcc/testsuite/g++.dg/template/crash100.C
  565c1bfc2d04d65f64253e16e35798d9  gcc/testsuite/g++.dg/template/crash101.C
  f75072de1c2abdfca708b732cbfafa89  gcc/testsuite/g++.dg/template/crash102.C
  44d05d042dc79a79585f17b3bcda6ec0  gcc/testsuite/g++.dg/template/crash103.C
  1225a54926913e691b51137aef8b5d33  gcc/testsuite/g++.dg/template/crash104.C
  f07fd8a3820e9db30fbbab54d71dd891  gcc/testsuite/g++.dg/template/crash105.C
! ebe8deab4ad98d26b1d7546c1959a48b  gcc/testsuite/g++.dg/template/crash106.C
! a204ce299df15336913984b550e2db8b  gcc/testsuite/g++.dg/template/crash107.C
! 921b50d2438e0cbc0ef97bff3512e4b2  gcc/testsuite/g++.dg/template/crash108.C
  b3167df4bc44e634fce27a27e383e9a4  gcc/testsuite/g++.dg/template/crash109.C
  5fdda9a20dcbd6e2fccb01f28292529e  gcc/testsuite/g++.dg/template/crash11.C
  bc34a5c1a684295dab662a89dc6697f6  gcc/testsuite/g++.dg/template/crash110.C
*************** df0ba8413403f6b40fdb4cf483e8ae03  gcc/te
*** 16873,16879 ****
  b1116241a73655533d853dad64261e36  gcc/testsuite/g++.dg/template/crash122.C
  6c76fd060efb8d3d16a5ce603ea37df4  gcc/testsuite/g++.dg/template/crash123.C
  c081ec235535cb35db6b7c0cf3a35a8a  gcc/testsuite/g++.dg/template/crash124.C
! 3cda17df73dfdfc8d128371920c70405  gcc/testsuite/g++.dg/template/crash125.C
  df27fa537f93cbc7c2d2e1f1d60aee3e  gcc/testsuite/g++.dg/template/crash13.C
  7c732ef3b17279bd746eb1196b0d76fe  gcc/testsuite/g++.dg/template/crash14.C
  e50e217f7da35dc497156675b2547e44  gcc/testsuite/g++.dg/template/crash15.C
--- 17860,17870 ----
  b1116241a73655533d853dad64261e36  gcc/testsuite/g++.dg/template/crash122.C
  6c76fd060efb8d3d16a5ce603ea37df4  gcc/testsuite/g++.dg/template/crash123.C
  c081ec235535cb35db6b7c0cf3a35a8a  gcc/testsuite/g++.dg/template/crash124.C
! f3479c12a0b2990faeabcc639e8885b8  gcc/testsuite/g++.dg/template/crash125.C
! e2df4755b705d65c5f03e5d7f96d1681  gcc/testsuite/g++.dg/template/crash126.C
! 57936c898c1f5b0a70cc981318924dd6  gcc/testsuite/g++.dg/template/crash127.C
! d14caefc036fb29a67deb7bc23946ad0  gcc/testsuite/g++.dg/template/crash128.C
! a19de9e040170e24f1092d33f6fd9739  gcc/testsuite/g++.dg/template/crash129.C
  df27fa537f93cbc7c2d2e1f1d60aee3e  gcc/testsuite/g++.dg/template/crash13.C
  7c732ef3b17279bd746eb1196b0d76fe  gcc/testsuite/g++.dg/template/crash14.C
  e50e217f7da35dc497156675b2547e44  gcc/testsuite/g++.dg/template/crash15.C
*************** f106c764c1ea09eba893e334ab4c71d8  gcc/te
*** 16885,16891 ****
  7d60f1e42e3a0cb9fb843525c06fc428  gcc/testsuite/g++.dg/template/crash20.C
  e11ee09376a4af9fd0b4e8a0131f1ad5  gcc/testsuite/g++.dg/template/crash21.C
  1a93146cc62f110f6b65fd8e3eb06d85  gcc/testsuite/g++.dg/template/crash22.C
! 0ebb4bf976e610e29316a5634702a44e  gcc/testsuite/g++.dg/template/crash23.C
  1cb212177b7a7b17863561096ca1b123  gcc/testsuite/g++.dg/template/crash24.C
  a9a41c255aa794f8caef16dd63a3534d  gcc/testsuite/g++.dg/template/crash25.C
  c422942e29cb019f6814e83fa47ae512  gcc/testsuite/g++.dg/template/crash26.C
--- 17876,17882 ----
  7d60f1e42e3a0cb9fb843525c06fc428  gcc/testsuite/g++.dg/template/crash20.C
  e11ee09376a4af9fd0b4e8a0131f1ad5  gcc/testsuite/g++.dg/template/crash21.C
  1a93146cc62f110f6b65fd8e3eb06d85  gcc/testsuite/g++.dg/template/crash22.C
! 7c5afc5661bdb74a535cbcf13c7ba15d  gcc/testsuite/g++.dg/template/crash23.C
  1cb212177b7a7b17863561096ca1b123  gcc/testsuite/g++.dg/template/crash24.C
  a9a41c255aa794f8caef16dd63a3534d  gcc/testsuite/g++.dg/template/crash25.C
  c422942e29cb019f6814e83fa47ae512  gcc/testsuite/g++.dg/template/crash26.C
*************** f58855114e5ac6f9d257056219515c0c  gcc/te
*** 16920,16926 ****
  9e6c436bad600bf0334f12681f2caecb  gcc/testsuite/g++.dg/template/crash53.C
  dc113f6f407f869c16ea1bfd3923f2c0  gcc/testsuite/g++.dg/template/crash54.C
  6be0c2a275af5f2cf4ba2bddbefb19ce  gcc/testsuite/g++.dg/template/crash55.C
! 33e6f2d8b3773c0bca8704049deea0c9  gcc/testsuite/g++.dg/template/crash56.C
  2d7d828f7348b2282589065e7789d5e8  gcc/testsuite/g++.dg/template/crash57.C
  d723188e66b53d1b47c72e45d36126b7  gcc/testsuite/g++.dg/template/crash58.C
  b1face05fd79b8d89141e499769b5bc8  gcc/testsuite/g++.dg/template/crash59.C
--- 17911,17917 ----
  9e6c436bad600bf0334f12681f2caecb  gcc/testsuite/g++.dg/template/crash53.C
  dc113f6f407f869c16ea1bfd3923f2c0  gcc/testsuite/g++.dg/template/crash54.C
  6be0c2a275af5f2cf4ba2bddbefb19ce  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
  b1face05fd79b8d89141e499769b5bc8  gcc/testsuite/g++.dg/template/crash59.C
*************** cee3210d86f964816352cadc0583b1ac  gcc/te
*** 16934,16940 ****
  e29b7df66408269c2eaea4100f6227cf  gcc/testsuite/g++.dg/template/crash66.C
  4d18a79ebe27fdc9fc1cfb181d77510d  gcc/testsuite/g++.dg/template/crash67.C
  c1f00d9dd86a49d2de34225f9a691ce2  gcc/testsuite/g++.dg/template/crash68.C
! 03d5864867e07fa723b52991d35edf88  gcc/testsuite/g++.dg/template/crash69.C
  06046d22cf3c22ee7b43a28ededa385e  gcc/testsuite/g++.dg/template/crash7.C
  c85f4fa8150e192f434daf84a485d751  gcc/testsuite/g++.dg/template/crash70.C
  0b285f2f1b009c729f52a24b788c7519  gcc/testsuite/g++.dg/template/crash71.C
--- 17925,17931 ----
  e29b7df66408269c2eaea4100f6227cf  gcc/testsuite/g++.dg/template/crash66.C
  4d18a79ebe27fdc9fc1cfb181d77510d  gcc/testsuite/g++.dg/template/crash67.C
  c1f00d9dd86a49d2de34225f9a691ce2  gcc/testsuite/g++.dg/template/crash68.C
! 2b646bf21413c604275237ba8401ba2d  gcc/testsuite/g++.dg/template/crash69.C
  06046d22cf3c22ee7b43a28ededa385e  gcc/testsuite/g++.dg/template/crash7.C
  c85f4fa8150e192f434daf84a485d751  gcc/testsuite/g++.dg/template/crash70.C
  0b285f2f1b009c729f52a24b788c7519  gcc/testsuite/g++.dg/template/crash71.C
*************** f1a8c42b37d318db77076e2f45ccbce5  gcc/te
*** 16946,16959 ****
  e5bf482e74f6efd9012f177851306bed  gcc/testsuite/g++.dg/template/crash77.C
  63aa4ea81419f0f2436d71c62bb543c3  gcc/testsuite/g++.dg/template/crash78.C
  fbd484dabcedafb4f6a55188390fd076  gcc/testsuite/g++.dg/template/crash79.C
! 899e82cfa1eab0c5e96b47962c693262  gcc/testsuite/g++.dg/template/crash8.C
  c9dc4ab7acea171537b7ea2d00500ffa  gcc/testsuite/g++.dg/template/crash80.C
  447d6403b9b79059dda938c97f8124f7  gcc/testsuite/g++.dg/template/crash81.C
  48025659900eff63e716215d6ceef06e  gcc/testsuite/g++.dg/template/crash82.C
  3e538c7423ba15ab0a53e61e7f3a2d57  gcc/testsuite/g++.dg/template/crash83.C
! 549c3852175cb8583d8001c2823bd41c  gcc/testsuite/g++.dg/template/crash84.C
  fac18fbcfe10c67843c28437a6b92d3c  gcc/testsuite/g++.dg/template/crash85.C
! 3bc6fcf9c80c2cc5aa0d5c1c4ec47445  gcc/testsuite/g++.dg/template/crash87.C
  59238bcb93582e024a0c5cb12c7ab7e1  gcc/testsuite/g++.dg/template/crash88.C
  253b3010ea41f19cf1dc0f74c2af6b21  gcc/testsuite/g++.dg/template/crash89.C
  44592f20d07e36f90633528dd90bfad3  gcc/testsuite/g++.dg/template/crash9.C
--- 17937,17950 ----
  e5bf482e74f6efd9012f177851306bed  gcc/testsuite/g++.dg/template/crash77.C
  63aa4ea81419f0f2436d71c62bb543c3  gcc/testsuite/g++.dg/template/crash78.C
  fbd484dabcedafb4f6a55188390fd076  gcc/testsuite/g++.dg/template/crash79.C
! ea00e75afd26c72eb3d7f3b2b0c1f30e  gcc/testsuite/g++.dg/template/crash8.C
  c9dc4ab7acea171537b7ea2d00500ffa  gcc/testsuite/g++.dg/template/crash80.C
  447d6403b9b79059dda938c97f8124f7  gcc/testsuite/g++.dg/template/crash81.C
  48025659900eff63e716215d6ceef06e  gcc/testsuite/g++.dg/template/crash82.C
  3e538c7423ba15ab0a53e61e7f3a2d57  gcc/testsuite/g++.dg/template/crash83.C
! d7aa15094ea452413e77a94fd318d3d4  gcc/testsuite/g++.dg/template/crash84.C
  fac18fbcfe10c67843c28437a6b92d3c  gcc/testsuite/g++.dg/template/crash85.C
! 47853dc98c900252d376e5f23b10a9c9  gcc/testsuite/g++.dg/template/crash87.C
  59238bcb93582e024a0c5cb12c7ab7e1  gcc/testsuite/g++.dg/template/crash88.C
  253b3010ea41f19cf1dc0f74c2af6b21  gcc/testsuite/g++.dg/template/crash89.C
  44592f20d07e36f90633528dd90bfad3  gcc/testsuite/g++.dg/template/crash9.C
*************** c2f7a35b429490ab54f2fba257ca0dd9  gcc/te
*** 16999,17005 ****
  307285b77c17f229ecbeb4c647090190  gcc/testsuite/g++.dg/template/defarg20.C
  c96940bb22962f4c0c4140417e941221  gcc/testsuite/g++.dg/template/defarg21.C
  e55baeaf118c452b9f707b8236ee86b1  gcc/testsuite/g++.dg/template/defarg3.C
! 64d2588370b2c020d9d5828deadfc7dc  gcc/testsuite/g++.dg/template/defarg4.C
  84d085b3ed907df1747cc523efd8d714  gcc/testsuite/g++.dg/template/defarg5.C
  74543160bb89c6fe96c522faabe5c5e0  gcc/testsuite/g++.dg/template/defarg6.C
  8fdfe04193de5eb0eac57ce398f4c5ec  gcc/testsuite/g++.dg/template/defarg7.C
--- 17990,17996 ----
  307285b77c17f229ecbeb4c647090190  gcc/testsuite/g++.dg/template/defarg20.C
  c96940bb22962f4c0c4140417e941221  gcc/testsuite/g++.dg/template/defarg21.C
  e55baeaf118c452b9f707b8236ee86b1  gcc/testsuite/g++.dg/template/defarg3.C
! 85fedaa782f4c82823c89324e1881131  gcc/testsuite/g++.dg/template/defarg4.C
  84d085b3ed907df1747cc523efd8d714  gcc/testsuite/g++.dg/template/defarg5.C
  74543160bb89c6fe96c522faabe5c5e0  gcc/testsuite/g++.dg/template/defarg6.C
  8fdfe04193de5eb0eac57ce398f4c5ec  gcc/testsuite/g++.dg/template/defarg7.C
*************** e55baeaf118c452b9f707b8236ee86b1  gcc/te
*** 17007,17025 ****
  bbc0cedc0c23e5084b73fd2bd7d12be0  gcc/testsuite/g++.dg/template/defarg9.C
  08e2480f72bcb72f3f0c69f74625bd4c  gcc/testsuite/g++.dg/template/delete1.C
  f64b5dcbfa3d3051a358c8d1c1e8a878  gcc/testsuite/g++.dg/template/delete2.C
! 3e39818cd75d670c263210d492e83fc2  gcc/testsuite/g++.dg/template/dependent-args1.C
  ba2918f2d50d14da19e142ac392345e1  gcc/testsuite/g++.dg/template/dependent-base1.C
  2cfeba0039a93060ff77245f34166e52  gcc/testsuite/g++.dg/template/dependent-base2.C
  4e28ad3da9cf0f80841dd7ac6a9a0233  gcc/testsuite/g++.dg/template/dependent-expr1.C
  10b3f1b7a34c9d4e9be1e9844babd34d  gcc/testsuite/g++.dg/template/dependent-expr10.C
! 5c363f74bcfd32858f0d7daa76f3d56b  gcc/testsuite/g++.dg/template/dependent-expr2.C
  c4e64e51072726ff978403b12d3456bd  gcc/testsuite/g++.dg/template/dependent-expr3.C
  b4bc25a86f512c4a58cc90654edd346f  gcc/testsuite/g++.dg/template/dependent-expr4.C
  a6a855c88d84687abcf1a8a2f07b7474  gcc/testsuite/g++.dg/template/dependent-expr5.C
  0c0a12ab75ecc281ca68babd4d565ce5  gcc/testsuite/g++.dg/template/dependent-expr6.C
  62547428f2604bbed7afb83c31bfb8cb  gcc/testsuite/g++.dg/template/dependent-expr7.C
  4737236e0209f156af2f579c8f812df3  gcc/testsuite/g++.dg/template/dependent-expr8.C
! bd8fcc139c9d31cc58ed612d02d7d4a7  gcc/testsuite/g++.dg/template/dependent-expr9.C
  f23d748a70179cdd1a4176b5cf3a3e9b  gcc/testsuite/g++.dg/template/dependent-name1.C
  18d61b100652dfe4816b8b9c6cefa923  gcc/testsuite/g++.dg/template/dependent-name2.C
  0c3e325271a377838c5d47bb6fb94dd1  gcc/testsuite/g++.dg/template/dependent-name3.C
--- 17998,18017 ----
  bbc0cedc0c23e5084b73fd2bd7d12be0  gcc/testsuite/g++.dg/template/defarg9.C
  08e2480f72bcb72f3f0c69f74625bd4c  gcc/testsuite/g++.dg/template/delete1.C
  f64b5dcbfa3d3051a358c8d1c1e8a878  gcc/testsuite/g++.dg/template/delete2.C
! 405318b0ed9079d8a3152d85bfbe6fc3  gcc/testsuite/g++.dg/template/dependent-args1.C
  ba2918f2d50d14da19e142ac392345e1  gcc/testsuite/g++.dg/template/dependent-base1.C
  2cfeba0039a93060ff77245f34166e52  gcc/testsuite/g++.dg/template/dependent-base2.C
+ 1ea2af4911d47cd67d9e3ab837ef48bc  gcc/testsuite/g++.dg/template/dependent-base3.C
  4e28ad3da9cf0f80841dd7ac6a9a0233  gcc/testsuite/g++.dg/template/dependent-expr1.C
  10b3f1b7a34c9d4e9be1e9844babd34d  gcc/testsuite/g++.dg/template/dependent-expr10.C
! 6b486f8c9b9b318c76811eb21046957f  gcc/testsuite/g++.dg/template/dependent-expr2.C
  c4e64e51072726ff978403b12d3456bd  gcc/testsuite/g++.dg/template/dependent-expr3.C
  b4bc25a86f512c4a58cc90654edd346f  gcc/testsuite/g++.dg/template/dependent-expr4.C
  a6a855c88d84687abcf1a8a2f07b7474  gcc/testsuite/g++.dg/template/dependent-expr5.C
  0c0a12ab75ecc281ca68babd4d565ce5  gcc/testsuite/g++.dg/template/dependent-expr6.C
  62547428f2604bbed7afb83c31bfb8cb  gcc/testsuite/g++.dg/template/dependent-expr7.C
  4737236e0209f156af2f579c8f812df3  gcc/testsuite/g++.dg/template/dependent-expr8.C
! 48741cfd5e6101e39d3729ba9701a900  gcc/testsuite/g++.dg/template/dependent-expr9.C
  f23d748a70179cdd1a4176b5cf3a3e9b  gcc/testsuite/g++.dg/template/dependent-name1.C
  18d61b100652dfe4816b8b9c6cefa923  gcc/testsuite/g++.dg/template/dependent-name2.C
  0c3e325271a377838c5d47bb6fb94dd1  gcc/testsuite/g++.dg/template/dependent-name3.C
*************** c10faccbba72797e793c4697fe233f9c  gcc/te
*** 17042,17048 ****
  4a814bc6794f74cc5cd4043a45a39370  gcc/testsuite/g++.dg/template/dtor7.C
  742d7a2b91f4f06a277defe5ec77d638  gcc/testsuite/g++.dg/template/dtor8.C
  b9b01dec580fb1da9d89837046c6a698  gcc/testsuite/g++.dg/template/dtor9.C
! 8f66b4b808e15a65e9eb6c04d2d02e4e  gcc/testsuite/g++.dg/template/duplicate1.C
  9c78ecb5ca87b2a81cbd9c1796b2c13e  gcc/testsuite/g++.dg/template/eh1.C
  5966797010852793c6b6acf4251a5c75  gcc/testsuite/g++.dg/template/eh2.C
  318b45c84de8e1474d71ee390dc7b68c  gcc/testsuite/g++.dg/template/elab1.C
--- 18034,18040 ----
  4a814bc6794f74cc5cd4043a45a39370  gcc/testsuite/g++.dg/template/dtor7.C
  742d7a2b91f4f06a277defe5ec77d638  gcc/testsuite/g++.dg/template/dtor8.C
  b9b01dec580fb1da9d89837046c6a698  gcc/testsuite/g++.dg/template/dtor9.C
! 8f6161d0eae11ec1dc3f733db43d06f5  gcc/testsuite/g++.dg/template/duplicate1.C
  9c78ecb5ca87b2a81cbd9c1796b2c13e  gcc/testsuite/g++.dg/template/eh1.C
  5966797010852793c6b6acf4251a5c75  gcc/testsuite/g++.dg/template/eh2.C
  318b45c84de8e1474d71ee390dc7b68c  gcc/testsuite/g++.dg/template/elab1.C
*************** c9482bcfa2d35bb4e349100f9060f230  gcc/te
*** 17058,17075 ****
  b3e2bbd8608c9f9206f9850201803c3c  gcc/testsuite/g++.dg/template/error-recovery2.C
  27356488b9c5da7cda4057e6aac17f5a  gcc/testsuite/g++.dg/template/error-recovery3.C
  8d2033f67ecc3fbeb7e386658b6253a0  gcc/testsuite/g++.dg/template/error-recovery4.C
! 21c90677bbfb74c29a346183dc8bc5a3  gcc/testsuite/g++.dg/template/error1.C
! a5aedd671af7a8cdd7d4e6c0bc538ee6  gcc/testsuite/g++.dg/template/error10.C
! 92cc57f022fdde0a0e1d5b1eb3c129b3  gcc/testsuite/g++.dg/template/error11.C
  6fe651ff5a3f3b8ff9d8a9597b35e055  gcc/testsuite/g++.dg/template/error12.C
  23d1d88880eac44a4f6c4209f4d1c9c0  gcc/testsuite/g++.dg/template/error13.C
  059b8fc25423ba0f718bb1feff4898e7  gcc/testsuite/g++.dg/template/error14.C
! 2b11686e43da23df19080388baf2b309  gcc/testsuite/g++.dg/template/error15.C
  709638c9b094e580ab80981a248856e2  gcc/testsuite/g++.dg/template/error16.C
  b6100523c45b3fb6ee58a738fa51eb7f  gcc/testsuite/g++.dg/template/error17.C
  e0e0adf8e99a8d206f7e74340f4b67e5  gcc/testsuite/g++.dg/template/error18.C
  c141fe6a264c757500f6ee4ed30842f6  gcc/testsuite/g++.dg/template/error19.C
! 31063b016c1ba7c6fc02a83f74c5e578  gcc/testsuite/g++.dg/template/error2.C
  c76b01c2f7357d4400cd8e049826cc38  gcc/testsuite/g++.dg/template/error20.C
  d8c534ccbad9bbbc650685d274b0d2ca  gcc/testsuite/g++.dg/template/error21.C
  54b3e85a8d8f9bc805e7795860ec08ba  gcc/testsuite/g++.dg/template/error22.C
--- 18050,18067 ----
  b3e2bbd8608c9f9206f9850201803c3c  gcc/testsuite/g++.dg/template/error-recovery2.C
  27356488b9c5da7cda4057e6aac17f5a  gcc/testsuite/g++.dg/template/error-recovery3.C
  8d2033f67ecc3fbeb7e386658b6253a0  gcc/testsuite/g++.dg/template/error-recovery4.C
! 2bbf548c987205cd21b0a76e2a018937  gcc/testsuite/g++.dg/template/error1.C
! 6ded000a12464001b0ef10b265c557eb  gcc/testsuite/g++.dg/template/error10.C
! 853d2bdc7cc46d9442990e41a04f9610  gcc/testsuite/g++.dg/template/error11.C
  6fe651ff5a3f3b8ff9d8a9597b35e055  gcc/testsuite/g++.dg/template/error12.C
  23d1d88880eac44a4f6c4209f4d1c9c0  gcc/testsuite/g++.dg/template/error13.C
  059b8fc25423ba0f718bb1feff4898e7  gcc/testsuite/g++.dg/template/error14.C
! 72a66eb8df5214bdc911659c748dfa61  gcc/testsuite/g++.dg/template/error15.C
  709638c9b094e580ab80981a248856e2  gcc/testsuite/g++.dg/template/error16.C
  b6100523c45b3fb6ee58a738fa51eb7f  gcc/testsuite/g++.dg/template/error17.C
  e0e0adf8e99a8d206f7e74340f4b67e5  gcc/testsuite/g++.dg/template/error18.C
  c141fe6a264c757500f6ee4ed30842f6  gcc/testsuite/g++.dg/template/error19.C
! 269f5e4cc9b32dd8bffd5303b263175b  gcc/testsuite/g++.dg/template/error2.C
  c76b01c2f7357d4400cd8e049826cc38  gcc/testsuite/g++.dg/template/error20.C
  d8c534ccbad9bbbc650685d274b0d2ca  gcc/testsuite/g++.dg/template/error21.C
  54b3e85a8d8f9bc805e7795860ec08ba  gcc/testsuite/g++.dg/template/error22.C
*************** fa7f4116ebf37e2b57813ba48500f497  gcc/te
*** 17077,17084 ****
  6c54776e760954055280860b689859b0  gcc/testsuite/g++.dg/template/error24.C
  88e5836eca5b1d6a4995747486ad482a  gcc/testsuite/g++.dg/template/error25.C
  4193d6f584da90f2fe4c2e4cc8ef6c43  gcc/testsuite/g++.dg/template/error26.C
! 585707d1420049ffe49f33789d19dc53  gcc/testsuite/g++.dg/template/error27.C
! d977c0ff2fe276dbe8cf1ea701e05180  gcc/testsuite/g++.dg/template/error28.C
  f942827c4c8f49e463f6196ed54942bb  gcc/testsuite/g++.dg/template/error29.C
  0e96862a75ffea6e3b8357e5251534dd  gcc/testsuite/g++.dg/template/error3.C
  1c44a4e548dcd05ce209cc978411cde0  gcc/testsuite/g++.dg/template/error30.C
--- 18069,18076 ----
  6c54776e760954055280860b689859b0  gcc/testsuite/g++.dg/template/error24.C
  88e5836eca5b1d6a4995747486ad482a  gcc/testsuite/g++.dg/template/error25.C
  4193d6f584da90f2fe4c2e4cc8ef6c43  gcc/testsuite/g++.dg/template/error26.C
! d94402fce12c3debaa6aa7a22d0d5261  gcc/testsuite/g++.dg/template/error27.C
! a687552bc36835830b1f2af841f44459  gcc/testsuite/g++.dg/template/error28.C
  f942827c4c8f49e463f6196ed54942bb  gcc/testsuite/g++.dg/template/error29.C
  0e96862a75ffea6e3b8357e5251534dd  gcc/testsuite/g++.dg/template/error3.C
  1c44a4e548dcd05ce209cc978411cde0  gcc/testsuite/g++.dg/template/error30.C
*************** bae48045ce1df918f09c5521dbfe01db  gcc/te
*** 17111,17116 ****
--- 18103,18109 ----
  55e4e0e15fc84a205703c1483c8dcb09  gcc/testsuite/g++.dg/template/error55.C
  8b7713e41d887ceb5c007134cb418a41  gcc/testsuite/g++.dg/template/error56.C
  d7dd197474ca91bf31cfac374404267d  gcc/testsuite/g++.dg/template/error57.C
+ 07b03a083081547de28e0a1afd970688  gcc/testsuite/g++.dg/template/error58.C
  8f931fa8690071fcefc2b1d1d7483bfc  gcc/testsuite/g++.dg/template/error6.C
  3eacbecd65bcd0b71a23a9e2127f6e27  gcc/testsuite/g++.dg/template/error7.C
  087bbcdc150fa765a03be550dd7193ce  gcc/testsuite/g++.dg/template/error8.C
*************** ebbbdf155c7037b83cc023e3e0fdf4e2  gcc/te
*** 17129,17139 ****
  3b0207ca15de6320946949f657d95b9a  gcc/testsuite/g++.dg/template/explicit3.C
  3f7c086b1b4dd5261f5ced979a21b04b  gcc/testsuite/g++.dg/template/explicit4.C
  bfbe469c91f678acc5c06f6a7a92f9c6  gcc/testsuite/g++.dg/template/explicit5.C
! 0f1992cf38a7f4a3d4febc06bbe2dc39  gcc/testsuite/g++.dg/template/explicit6.C
  9710691c4af4b589e4831b829d124e2e  gcc/testsuite/g++.dg/template/explicit7.C
  ad629aa6efcf1374753dbd987791a144  gcc/testsuite/g++.dg/template/explicit8.C
  30d902f63ffe8adf2ca92e9d035da29b  gcc/testsuite/g++.dg/template/explicit9.C
  d9a08dd82988a25d2840d767d582837f  gcc/testsuite/g++.dg/template/expr1.C
  f8aa89e0edae3ef78836a8cc046f0550  gcc/testsuite/g++.dg/template/field1.C
  fe166f987dc66815758e22b930f6d98b  gcc/testsuite/g++.dg/template/fn-ptr1.C
  bf4059583f0cb76eb21c8462cd632142  gcc/testsuite/g++.dg/template/fn-ptr2.C
--- 18122,18133 ----
  3b0207ca15de6320946949f657d95b9a  gcc/testsuite/g++.dg/template/explicit3.C
  3f7c086b1b4dd5261f5ced979a21b04b  gcc/testsuite/g++.dg/template/explicit4.C
  bfbe469c91f678acc5c06f6a7a92f9c6  gcc/testsuite/g++.dg/template/explicit5.C
! c698595f90153a52131fc43039926d1e  gcc/testsuite/g++.dg/template/explicit6.C
  9710691c4af4b589e4831b829d124e2e  gcc/testsuite/g++.dg/template/explicit7.C
  ad629aa6efcf1374753dbd987791a144  gcc/testsuite/g++.dg/template/explicit8.C
  30d902f63ffe8adf2ca92e9d035da29b  gcc/testsuite/g++.dg/template/explicit9.C
  d9a08dd82988a25d2840d767d582837f  gcc/testsuite/g++.dg/template/expr1.C
+ 9fd31c1be25d01f44b8cd85506745775  gcc/testsuite/g++.dg/template/extern-c.C
  f8aa89e0edae3ef78836a8cc046f0550  gcc/testsuite/g++.dg/template/field1.C
  fe166f987dc66815758e22b930f6d98b  gcc/testsuite/g++.dg/template/fn-ptr1.C
  bf4059583f0cb76eb21c8462cd632142  gcc/testsuite/g++.dg/template/fn-ptr2.C
*************** bf4059583f0cb76eb21c8462cd632142  gcc/te
*** 17141,17147 ****
  1581f9141ad183d6d31a009275ebf7a4  gcc/testsuite/g++.dg/template/fnspec1.C
  8f101d84c90c958381606b762e3df298  gcc/testsuite/g++.dg/template/fntry1.C
  c3025665d58f3b1443b5cbb53b5bd0f6  gcc/testsuite/g++.dg/template/fntype1.C
! 27ffc9918dee82089419624de1850354  gcc/testsuite/g++.dg/template/for1.C
  7ac174f3aacd8bf0e65398beb7becf93  gcc/testsuite/g++.dg/template/friend.C
  bdf8365204c19eeb87434d85b7139d2d  gcc/testsuite/g++.dg/template/friend10.C
  c1eab5b806b63596b0fa26a471273823  gcc/testsuite/g++.dg/template/friend11.C
--- 18135,18141 ----
  1581f9141ad183d6d31a009275ebf7a4  gcc/testsuite/g++.dg/template/fnspec1.C
  8f101d84c90c958381606b762e3df298  gcc/testsuite/g++.dg/template/fntry1.C
  c3025665d58f3b1443b5cbb53b5bd0f6  gcc/testsuite/g++.dg/template/fntype1.C
! 66f185ff3cc265348b1197edabaa1a9b  gcc/testsuite/g++.dg/template/for1.C
  7ac174f3aacd8bf0e65398beb7becf93  gcc/testsuite/g++.dg/template/friend.C
  bdf8365204c19eeb87434d85b7139d2d  gcc/testsuite/g++.dg/template/friend10.C
  c1eab5b806b63596b0fa26a471273823  gcc/testsuite/g++.dg/template/friend11.C
*************** a0d74e429e0416fe8fd207b1ee020c7a  gcc/te
*** 17166,17172 ****
  d4c8a44deef0bfb76c6964c75b741416  gcc/testsuite/g++.dg/template/friend3.C
  1d0be2d7ae4ecc088986fba42e7ee292  gcc/testsuite/g++.dg/template/friend30.C
  f6f5d5c9e5a0b7257b746cd7899ada80  gcc/testsuite/g++.dg/template/friend31.C
! 5fc2fd4ff70720809151b18a118e272e  gcc/testsuite/g++.dg/template/friend32.C
  ed2b58353effe4479fb3ba174d53040c  gcc/testsuite/g++.dg/template/friend33.C
  861190a2944f470305adf84080e394bd  gcc/testsuite/g++.dg/template/friend34.C
  e1e2f22ab1205ab9d092f2b388d3e071  gcc/testsuite/g++.dg/template/friend35.C
--- 18160,18166 ----
  d4c8a44deef0bfb76c6964c75b741416  gcc/testsuite/g++.dg/template/friend3.C
  1d0be2d7ae4ecc088986fba42e7ee292  gcc/testsuite/g++.dg/template/friend30.C
  f6f5d5c9e5a0b7257b746cd7899ada80  gcc/testsuite/g++.dg/template/friend31.C
! 6f6067d67308d85ebe4765e5c5e75da1  gcc/testsuite/g++.dg/template/friend32.C
  ed2b58353effe4479fb3ba174d53040c  gcc/testsuite/g++.dg/template/friend33.C
  861190a2944f470305adf84080e394bd  gcc/testsuite/g++.dg/template/friend34.C
  e1e2f22ab1205ab9d092f2b388d3e071  gcc/testsuite/g++.dg/template/friend35.C
*************** d5d24fc94d133229a10c5b13f44c253b  gcc/te
*** 17211,17216 ****
--- 18205,18211 ----
  bead5f49843ac4a923c8b06419fc1688  gcc/testsuite/g++.dg/template/function1.C
  4b00efc6df70febef975b0e3b186b589  gcc/testsuite/g++.dg/template/incomplete1.C
  6eb242700c6d66d2e369769157f668e1  gcc/testsuite/g++.dg/template/incomplete10.C
+ 013b3193d7f45f44f8c7e8a4b8e35e24  gcc/testsuite/g++.dg/template/incomplete11.C
  df42e6e9d79980210f8fc115b6f3ea26  gcc/testsuite/g++.dg/template/incomplete2.C
  0b05707ff39fe3ad9f22ea6ba6d5be2c  gcc/testsuite/g++.dg/template/incomplete3.C
  8b8acaf760a13971063951b263ef315c  gcc/testsuite/g++.dg/template/incomplete4.C
*************** e05437ae4847c9ca9cbd1a6c311ce7ca  gcc/te
*** 17228,17234 ****
  6a5199dfcb2643c9c8c299d0de479f74  gcc/testsuite/g++.dg/template/inherit7.C
  af2fdbfedc537d2eafde78a5b6afc170  gcc/testsuite/g++.dg/template/inherit8.C
  19797273bb7cf4155972bbcb4d4fb8c3  gcc/testsuite/g++.dg/template/inherit9.C
! 9783cba5cd0e48e50ecc5c42ed1dd282  gcc/testsuite/g++.dg/template/init-list.C
  f30fe425de51d4cb2ab5ff05b71d616a  gcc/testsuite/g++.dg/template/init1.C
  7c6a96d0550437ed561f8825ad2bc25e  gcc/testsuite/g++.dg/template/init10.C
  ac6c40bfa874333f4cc3f13523df5556  gcc/testsuite/g++.dg/template/init11.C
--- 18223,18229 ----
  6a5199dfcb2643c9c8c299d0de479f74  gcc/testsuite/g++.dg/template/inherit7.C
  af2fdbfedc537d2eafde78a5b6afc170  gcc/testsuite/g++.dg/template/inherit8.C
  19797273bb7cf4155972bbcb4d4fb8c3  gcc/testsuite/g++.dg/template/inherit9.C
! d37cda10853af7df6f9c174e9719668f  gcc/testsuite/g++.dg/template/init-list.C
  f30fe425de51d4cb2ab5ff05b71d616a  gcc/testsuite/g++.dg/template/init1.C
  7c6a96d0550437ed561f8825ad2bc25e  gcc/testsuite/g++.dg/template/init10.C
  ac6c40bfa874333f4cc3f13523df5556  gcc/testsuite/g++.dg/template/init11.C
*************** ac6c40bfa874333f4cc3f13523df5556  gcc/te
*** 17236,17242 ****
  64314d0aa5b3600547adc69b42ab8e3c  gcc/testsuite/g++.dg/template/init3.C
  e920cba477d63f2866ea0710ce55a2ce  gcc/testsuite/g++.dg/template/init4.C
  ca8434716aafffaf7e37a7ea8e094cc5  gcc/testsuite/g++.dg/template/init5.C
! 65a281c41b82251552faaf8359766e91  gcc/testsuite/g++.dg/template/init6.C
  8b7e2ee31c044917df6c66a5933648fd  gcc/testsuite/g++.dg/template/init7.C
  64a05fc8eebed95ff925e08b8a3bf935  gcc/testsuite/g++.dg/template/init8.C
  076870e80a684a5a6a6b5bf148ed5356  gcc/testsuite/g++.dg/template/init9.C
--- 18231,18237 ----
  64314d0aa5b3600547adc69b42ab8e3c  gcc/testsuite/g++.dg/template/init3.C
  e920cba477d63f2866ea0710ce55a2ce  gcc/testsuite/g++.dg/template/init4.C
  ca8434716aafffaf7e37a7ea8e094cc5  gcc/testsuite/g++.dg/template/init5.C
! 4073a456770271d9472a0b758e1458a8  gcc/testsuite/g++.dg/template/init6.C
  8b7e2ee31c044917df6c66a5933648fd  gcc/testsuite/g++.dg/template/init7.C
  64a05fc8eebed95ff925e08b8a3bf935  gcc/testsuite/g++.dg/template/init8.C
  076870e80a684a5a6a6b5bf148ed5356  gcc/testsuite/g++.dg/template/init9.C
*************** b6f93db83699b516b0d1578a6c9649ac  gcc/te
*** 17249,17255 ****
  88e1ec74b340410f99e5bf69122404bd  gcc/testsuite/g++.dg/template/instantiate2.C
  a7536c44dd79934566e4a99e91fd1f47  gcc/testsuite/g++.dg/template/instantiate3.C
  7d69f16e359b40571c6da6dde60dde8d  gcc/testsuite/g++.dg/template/instantiate4.C
! 9a78d6a18bbe6542af4f22a34a2d357c  gcc/testsuite/g++.dg/template/instantiate5.C
  1b065aa49cdac44198ed227ed0da9cb5  gcc/testsuite/g++.dg/template/instantiate6.C
  45a941d2c18f981ce0d37d4ebeae6190  gcc/testsuite/g++.dg/template/instantiate7.C
  042508c0cf07d253053b9e66234c16c5  gcc/testsuite/g++.dg/template/instantiate8.C
--- 18244,18250 ----
  88e1ec74b340410f99e5bf69122404bd  gcc/testsuite/g++.dg/template/instantiate2.C
  a7536c44dd79934566e4a99e91fd1f47  gcc/testsuite/g++.dg/template/instantiate3.C
  7d69f16e359b40571c6da6dde60dde8d  gcc/testsuite/g++.dg/template/instantiate4.C
! e457cbd8cc875ca6125fbb8dd9774c18  gcc/testsuite/g++.dg/template/instantiate5.C
  1b065aa49cdac44198ed227ed0da9cb5  gcc/testsuite/g++.dg/template/instantiate6.C
  45a941d2c18f981ce0d37d4ebeae6190  gcc/testsuite/g++.dg/template/instantiate7.C
  042508c0cf07d253053b9e66234c16c5  gcc/testsuite/g++.dg/template/instantiate8.C
*************** d7b45350c258784a47a153c1dedc979d  gcc/te
*** 17268,17274 ****
  5dec59646872d8a02daabc81749addb4  gcc/testsuite/g++.dg/template/linkage1.C
  29182ba864d966fb7660afbfb5b53867  gcc/testsuite/g++.dg/template/local-fn1.C
  5c91f2205ed2a7f3fb059e7ae61d14a0  gcc/testsuite/g++.dg/template/local-fn2.C
! b7860e67547fa0e658cae5b27a73d61b  gcc/testsuite/g++.dg/template/local1.C
  d32b0f4cfabbf7cf6a3f55db155096d2  gcc/testsuite/g++.dg/template/local2.C
  e254df20b082728d0e04a8e1b3b18557  gcc/testsuite/g++.dg/template/local3.C
  a014c1dc8c12fc5b1125d98db2cd0ca2  gcc/testsuite/g++.dg/template/local4.C
--- 18263,18269 ----
  5dec59646872d8a02daabc81749addb4  gcc/testsuite/g++.dg/template/linkage1.C
  29182ba864d966fb7660afbfb5b53867  gcc/testsuite/g++.dg/template/local-fn1.C
  5c91f2205ed2a7f3fb059e7ae61d14a0  gcc/testsuite/g++.dg/template/local-fn2.C
! 97787b0149d1c2ccd1052e2a39deabcc  gcc/testsuite/g++.dg/template/local1.C
  d32b0f4cfabbf7cf6a3f55db155096d2  gcc/testsuite/g++.dg/template/local2.C
  e254df20b082728d0e04a8e1b3b18557  gcc/testsuite/g++.dg/template/local3.C
  a014c1dc8c12fc5b1125d98db2cd0ca2  gcc/testsuite/g++.dg/template/local4.C
*************** e8013d76ce3f8f9574197fee5026c527  gcc/te
*** 17280,17286 ****
  858241029bc9c5f2b0eb96ca1ff057a8  gcc/testsuite/g++.dg/template/lookup1.C
  cbe64dcb0e938a140c14903e9bebca64  gcc/testsuite/g++.dg/template/lookup10.C
  ef1d094142f0760b24e0164ef37929d0  gcc/testsuite/g++.dg/template/lookup11.C
! e1e6ffb2ea2a524c64cbcc0a6f97459a  gcc/testsuite/g++.dg/template/lookup2.C
  0287287b4b02081228b1429a9526248d  gcc/testsuite/g++.dg/template/lookup3.C
  9932d99ab28768093ab672853377af03  gcc/testsuite/g++.dg/template/lookup4.C
  3ab3f4b8b6e13f0c873ee865529608c0  gcc/testsuite/g++.dg/template/lookup5.C
--- 18275,18281 ----
  858241029bc9c5f2b0eb96ca1ff057a8  gcc/testsuite/g++.dg/template/lookup1.C
  cbe64dcb0e938a140c14903e9bebca64  gcc/testsuite/g++.dg/template/lookup10.C
  ef1d094142f0760b24e0164ef37929d0  gcc/testsuite/g++.dg/template/lookup11.C
! 3327af698900091e44488904c96d0346  gcc/testsuite/g++.dg/template/lookup2.C
  0287287b4b02081228b1429a9526248d  gcc/testsuite/g++.dg/template/lookup3.C
  9932d99ab28768093ab672853377af03  gcc/testsuite/g++.dg/template/lookup4.C
  3ab3f4b8b6e13f0c873ee865529608c0  gcc/testsuite/g++.dg/template/lookup5.C
*************** c0214387b51fcbd1778447a0a4a88720  gcc/te
*** 17297,17302 ****
--- 18292,18298 ----
  ddb3b643353af64559b17335859b3a54  gcc/testsuite/g++.dg/template/mem-partial2.C
  bb1864ad7f8c081274c8cf093f07ecb0  gcc/testsuite/g++.dg/template/mem-partial3.C
  08ee485d4a84252ae107afcbd8bb4b13  gcc/testsuite/g++.dg/template/mem_func_ptr.C
+ 243250e800627bff6492af7984793066  gcc/testsuite/g++.dg/template/mem_func_ptr2.C
  06216f93446b1e4df8acba1818eeb751  gcc/testsuite/g++.dg/template/member.C
  cabe816ff29ed547a0c78ab109ad97d0  gcc/testsuite/g++.dg/template/member2.C
  7485d7d4ac0efdee0b9c7fe84580e8a0  gcc/testsuite/g++.dg/template/member3.C
*************** e94059d9409cb2a317f71bb5bd997be2  gcc/te
*** 17324,17335 ****
  fb47ef062f1c0907f4bd591ea44dd1ea  gcc/testsuite/g++.dg/template/memfriend3.C
  9e0baac902249d16ec8e8d97a1ab2371  gcc/testsuite/g++.dg/template/memfriend4.C
  b29c5ddfeb79a3077e908d0877024b79  gcc/testsuite/g++.dg/template/memfriend5.C
! 1e93d7f7d38f19d9cc623f9113275868  gcc/testsuite/g++.dg/template/memfriend6.C
! f522127e77f9b18d946dc4807656c8de  gcc/testsuite/g++.dg/template/memfriend7.C
  975bbbbf89c7ed7467afe0db4642b444  gcc/testsuite/g++.dg/template/memfriend8.C
  6602e9e6cba784386891556ebd44b430  gcc/testsuite/g++.dg/template/memfriend9.C
  0b0224d55a5044356c7f55ebe421be94  gcc/testsuite/g++.dg/template/meminit1.C
! 49a8526a10802f5f264eca9873b6546a  gcc/testsuite/g++.dg/template/meminit2.C
  2814897eaaeccebed1436472d893ffd3  gcc/testsuite/g++.dg/template/meminit3.C
  a028161f345a592e44b9dd2c85780ba8  gcc/testsuite/g++.dg/template/memtmpl1.C
  742c5d9c3baa52309d717d8a67cb74e7  gcc/testsuite/g++.dg/template/memtmpl2.C
--- 18320,18331 ----
  fb47ef062f1c0907f4bd591ea44dd1ea  gcc/testsuite/g++.dg/template/memfriend3.C
  9e0baac902249d16ec8e8d97a1ab2371  gcc/testsuite/g++.dg/template/memfriend4.C
  b29c5ddfeb79a3077e908d0877024b79  gcc/testsuite/g++.dg/template/memfriend5.C
! 01a9725284328736dee363e32e7645f9  gcc/testsuite/g++.dg/template/memfriend6.C
! 83b63d2de605fc60a9934d137f90845f  gcc/testsuite/g++.dg/template/memfriend7.C
  975bbbbf89c7ed7467afe0db4642b444  gcc/testsuite/g++.dg/template/memfriend8.C
  6602e9e6cba784386891556ebd44b430  gcc/testsuite/g++.dg/template/memfriend9.C
  0b0224d55a5044356c7f55ebe421be94  gcc/testsuite/g++.dg/template/meminit1.C
! b418805da2b07e19a198dabae3e5173c  gcc/testsuite/g++.dg/template/meminit2.C
  2814897eaaeccebed1436472d893ffd3  gcc/testsuite/g++.dg/template/meminit3.C
  a028161f345a592e44b9dd2c85780ba8  gcc/testsuite/g++.dg/template/memtmpl1.C
  742c5d9c3baa52309d717d8a67cb74e7  gcc/testsuite/g++.dg/template/memtmpl2.C
*************** b12c9a151e46871b430564ee47c57714  gcc/te
*** 17343,17349 ****
  73ab67ac2716db374ac0d80e7ae5b200  gcc/testsuite/g++.dg/template/nested5.C
  3d7ff2f50901cdae15e987265ff20ed6  gcc/testsuite/g++.dg/template/nested6.C
  57b33208329c8d10ea904c3d123076a9  gcc/testsuite/g++.dg/template/new1.C
! b4688d67c16095e2855630d6bf9633c2  gcc/testsuite/g++.dg/template/new10.C
  8a3716757b496de374cb6d6a4f5b6a64  gcc/testsuite/g++.dg/template/new11.C
  22fdea7e0d8c7b43828d7f57e62f8723  gcc/testsuite/g++.dg/template/new12.C
  b8243d46589815a568bb0992cb04adec  gcc/testsuite/g++.dg/template/new2.C
--- 18339,18345 ----
  73ab67ac2716db374ac0d80e7ae5b200  gcc/testsuite/g++.dg/template/nested5.C
  3d7ff2f50901cdae15e987265ff20ed6  gcc/testsuite/g++.dg/template/nested6.C
  57b33208329c8d10ea904c3d123076a9  gcc/testsuite/g++.dg/template/new1.C
! dd5106154e8f9fa0866be1a1283b490e  gcc/testsuite/g++.dg/template/new10.C
  8a3716757b496de374cb6d6a4f5b6a64  gcc/testsuite/g++.dg/template/new11.C
  22fdea7e0d8c7b43828d7f57e62f8723  gcc/testsuite/g++.dg/template/new12.C
  b8243d46589815a568bb0992cb04adec  gcc/testsuite/g++.dg/template/new2.C
*************** c74bd06e4f01d82b6dffe8568a9f9286  gcc/te
*** 17372,17383 ****
  d2f711147c60030525ec70290e759fca  gcc/testsuite/g++.dg/template/non-dependent9.C
  30d31ed2484da393d79f5ad4a32e80cf  gcc/testsuite/g++.dg/template/non-type-template-argument-1.C
  c68d85d18e13eca7b98c51e07b278cf0  gcc/testsuite/g++.dg/template/non-type1.C
! 34f277f524d88aeae4c0aec9d722fe04  gcc/testsuite/g++.dg/template/nontype-array1.C
  0841e0681f53f5792b711984e991f3a8  gcc/testsuite/g++.dg/template/nontype1.C
  e9af055ac6a0774b7565e0722c861adb  gcc/testsuite/g++.dg/template/nontype10.C
  9ba9723e8601b19208ac3f8350ee6695  gcc/testsuite/g++.dg/template/nontype11.C
! e4176144e393e4accb07877196c4e693  gcc/testsuite/g++.dg/template/nontype12.C
! 01f5dcd70f36488761ff2e33d0886f6d  gcc/testsuite/g++.dg/template/nontype13.C
  937af4e6ac2cefe2dff1503c7819130f  gcc/testsuite/g++.dg/template/nontype14.C
  e4e6038ded9c7ed667109894758cea89  gcc/testsuite/g++.dg/template/nontype15.C
  efe778ec780ff5ae0b39781a917ca677  gcc/testsuite/g++.dg/template/nontype16.C
--- 18368,18380 ----
  d2f711147c60030525ec70290e759fca  gcc/testsuite/g++.dg/template/non-dependent9.C
  30d31ed2484da393d79f5ad4a32e80cf  gcc/testsuite/g++.dg/template/non-type-template-argument-1.C
  c68d85d18e13eca7b98c51e07b278cf0  gcc/testsuite/g++.dg/template/non-type1.C
! e92bd32946724dc8803563547ffb2982  gcc/testsuite/g++.dg/template/nontype-array1.C
! 70124329ed68a5623ae87b10ff25d9a9  gcc/testsuite/g++.dg/template/nontype-fn1.C
  0841e0681f53f5792b711984e991f3a8  gcc/testsuite/g++.dg/template/nontype1.C
  e9af055ac6a0774b7565e0722c861adb  gcc/testsuite/g++.dg/template/nontype10.C
  9ba9723e8601b19208ac3f8350ee6695  gcc/testsuite/g++.dg/template/nontype11.C
! 3037367fee1a9d22fe259b9e9c046cff  gcc/testsuite/g++.dg/template/nontype12.C
! dab95fa2dfa5f83e92b3df59ccb21257  gcc/testsuite/g++.dg/template/nontype13.C
  937af4e6ac2cefe2dff1503c7819130f  gcc/testsuite/g++.dg/template/nontype14.C
  e4e6038ded9c7ed667109894758cea89  gcc/testsuite/g++.dg/template/nontype15.C
  efe778ec780ff5ae0b39781a917ca677  gcc/testsuite/g++.dg/template/nontype16.C
*************** efe778ec780ff5ae0b39781a917ca677  gcc/te
*** 17386,17397 ****
  03c70922eb3eb5694336f20230eab2eb  gcc/testsuite/g++.dg/template/nontype19.C
  00bcc57cb7d33b0250bf5efd8de34dbf  gcc/testsuite/g++.dg/template/nontype2.C
  3d747fedb6daaf7d52479222a69439ee  gcc/testsuite/g++.dg/template/nontype20.C
! 523cd29e1a9c6006086eba2e934e53d4  gcc/testsuite/g++.dg/template/nontype21.C
  4104efa445f1a5c0a6ea00569a6e73b5  gcc/testsuite/g++.dg/template/nontype22.C
  d17e17b15018e6bc4a807c47ac6956b7  gcc/testsuite/g++.dg/template/nontype23.C
  9b952f9c7bfac2154aa77f23f13c1fd3  gcc/testsuite/g++.dg/template/nontype24.C
! 012401e83b5de7b151f29b349c874b7b  gcc/testsuite/g++.dg/template/nontype25.C
! b6b176e4fa04b8fbceea880b9143cbdc  gcc/testsuite/g++.dg/template/nontype26.C
  9fa0b3b07546b30d6e129c3bdd6ff439  gcc/testsuite/g++.dg/template/nontype27.C
  29426ea06c65ca7c3fa8d5ecd6177ab6  gcc/testsuite/g++.dg/template/nontype28.C
  a6e414ec38367149b7b9e773db19cee0  gcc/testsuite/g++.dg/template/nontype3.C
--- 18383,18394 ----
  03c70922eb3eb5694336f20230eab2eb  gcc/testsuite/g++.dg/template/nontype19.C
  00bcc57cb7d33b0250bf5efd8de34dbf  gcc/testsuite/g++.dg/template/nontype2.C
  3d747fedb6daaf7d52479222a69439ee  gcc/testsuite/g++.dg/template/nontype20.C
! 1c03518a9ec5cb2067a27a00c43650f6  gcc/testsuite/g++.dg/template/nontype21.C
  4104efa445f1a5c0a6ea00569a6e73b5  gcc/testsuite/g++.dg/template/nontype22.C
  d17e17b15018e6bc4a807c47ac6956b7  gcc/testsuite/g++.dg/template/nontype23.C
  9b952f9c7bfac2154aa77f23f13c1fd3  gcc/testsuite/g++.dg/template/nontype24.C
! 6e69ac1b2510da77629987a3fa245810  gcc/testsuite/g++.dg/template/nontype25.C
! 2b3037f477965e6ee2c5f77022f74ae7  gcc/testsuite/g++.dg/template/nontype26.C
  9fa0b3b07546b30d6e129c3bdd6ff439  gcc/testsuite/g++.dg/template/nontype27.C
  29426ea06c65ca7c3fa8d5ecd6177ab6  gcc/testsuite/g++.dg/template/nontype28.C
  a6e414ec38367149b7b9e773db19cee0  gcc/testsuite/g++.dg/template/nontype3.C
*************** a6e414ec38367149b7b9e773db19cee0  gcc/te
*** 17399,17405 ****
  d37a5a77843c5b66c3d3566383b07dd6  gcc/testsuite/g++.dg/template/nontype5.C
  40280792650dbefbd9ff94ba5cc5d03e  gcc/testsuite/g++.dg/template/nontype6.C
  067e989ca8724df7b1bbbef443eb9947  gcc/testsuite/g++.dg/template/nontype7.C
! 7b8366983ff9f468e0e412d0d4dc32fb  gcc/testsuite/g++.dg/template/nontype8.C
  5345b8ffaffe474e8bf43916398a25ef  gcc/testsuite/g++.dg/template/nontype9.C
  72688e70f855e78a966cd593acf9f923  gcc/testsuite/g++.dg/template/ntp1.C
  506fde7f525665b80bb8ae93c21fa34f  gcc/testsuite/g++.dg/template/ntp2.C
--- 18396,18402 ----
  d37a5a77843c5b66c3d3566383b07dd6  gcc/testsuite/g++.dg/template/nontype5.C
  40280792650dbefbd9ff94ba5cc5d03e  gcc/testsuite/g++.dg/template/nontype6.C
  067e989ca8724df7b1bbbef443eb9947  gcc/testsuite/g++.dg/template/nontype7.C
! 37e77168453ca0ef9499acbf0221f5e1  gcc/testsuite/g++.dg/template/nontype8.C
  5345b8ffaffe474e8bf43916398a25ef  gcc/testsuite/g++.dg/template/nontype9.C
  72688e70f855e78a966cd593acf9f923  gcc/testsuite/g++.dg/template/ntp1.C
  506fde7f525665b80bb8ae93c21fa34f  gcc/testsuite/g++.dg/template/ntp2.C
*************** d7a7d0e4e1c797d6a9a7cf02e6a48274  gcc/te
*** 17424,17443 ****
  6cba2353f6c7917dd350506e390d9379  gcc/testsuite/g++.dg/template/overload1.C
  2e506fd9260fa2ce41127628f924466d  gcc/testsuite/g++.dg/template/overload10.C
  36f046a8855c4966a1c3643a3557e887  gcc/testsuite/g++.dg/template/overload11.C
! 9e14f2480bacc70291da8f7a92fe27e0  gcc/testsuite/g++.dg/template/overload12.C
  a47f093138ae4461a058f2bc00d23fb8  gcc/testsuite/g++.dg/template/overload13.C
  d718c4a172537399846daa37f0e57640  gcc/testsuite/g++.dg/template/overload14.C
  55cb3ca88be88700e7e00981ae5c08c6  gcc/testsuite/g++.dg/template/overload2.C
  98ebf130b836485f9a7ceae171151be5  gcc/testsuite/g++.dg/template/overload3.C
  7d2609e7f82311b3100345f65467e041  gcc/testsuite/g++.dg/template/overload4.C
! 71fab915b19ad597865cbe790d6ee455  gcc/testsuite/g++.dg/template/overload5.C
  b692f22da11a28693bec29150c3bc7e5  gcc/testsuite/g++.dg/template/overload6.C
  d98c22f6d2dfeb8d0131c9e0467d2655  gcc/testsuite/g++.dg/template/overload7.C
! cb3fd3ad47dd95cf7f0463be80d0a9b3  gcc/testsuite/g++.dg/template/overload8.C
  ef296b5932e0fe10416d5e48eb64ccb1  gcc/testsuite/g++.dg/template/overload9.C
  efb971f4591133c5f1a27dea6aeb5d1a  gcc/testsuite/g++.dg/template/param1.C
  335d675c515abc3965d67af12d3a7c72  gcc/testsuite/g++.dg/template/param2.C
  9cdc0ea3c87c4634fd17c85b389758e3  gcc/testsuite/g++.dg/template/param3.C
  e187a317d102d915368fe357726202ba  gcc/testsuite/g++.dg/template/partial-specialization.C
  85762b85724149f8854c0c886e8d724f  gcc/testsuite/g++.dg/template/partial-specialization2.C
  e3bba8fb10b84a1583b714234f4d0593  gcc/testsuite/g++.dg/template/partial-specialization3.C
--- 18421,18442 ----
  6cba2353f6c7917dd350506e390d9379  gcc/testsuite/g++.dg/template/overload1.C
  2e506fd9260fa2ce41127628f924466d  gcc/testsuite/g++.dg/template/overload10.C
  36f046a8855c4966a1c3643a3557e887  gcc/testsuite/g++.dg/template/overload11.C
! 675409a6190bebd3d94f3236b531a120  gcc/testsuite/g++.dg/template/overload12.C
  a47f093138ae4461a058f2bc00d23fb8  gcc/testsuite/g++.dg/template/overload13.C
  d718c4a172537399846daa37f0e57640  gcc/testsuite/g++.dg/template/overload14.C
+ 74f8286a84b07ec4d8ba0b125a014426  gcc/testsuite/g++.dg/template/overload15.C
  55cb3ca88be88700e7e00981ae5c08c6  gcc/testsuite/g++.dg/template/overload2.C
  98ebf130b836485f9a7ceae171151be5  gcc/testsuite/g++.dg/template/overload3.C
  7d2609e7f82311b3100345f65467e041  gcc/testsuite/g++.dg/template/overload4.C
! be715cb6650bfe586776e73c6d8f8e0e  gcc/testsuite/g++.dg/template/overload5.C
  b692f22da11a28693bec29150c3bc7e5  gcc/testsuite/g++.dg/template/overload6.C
  d98c22f6d2dfeb8d0131c9e0467d2655  gcc/testsuite/g++.dg/template/overload7.C
! d4819536cda65500265fa3d75fb89f4b  gcc/testsuite/g++.dg/template/overload8.C
  ef296b5932e0fe10416d5e48eb64ccb1  gcc/testsuite/g++.dg/template/overload9.C
  efb971f4591133c5f1a27dea6aeb5d1a  gcc/testsuite/g++.dg/template/param1.C
  335d675c515abc3965d67af12d3a7c72  gcc/testsuite/g++.dg/template/param2.C
  9cdc0ea3c87c4634fd17c85b389758e3  gcc/testsuite/g++.dg/template/param3.C
+ 491cbf3256ec0db4f4e1089be6ae400a  gcc/testsuite/g++.dg/template/partial-order1.C
  e187a317d102d915368fe357726202ba  gcc/testsuite/g++.dg/template/partial-specialization.C
  85762b85724149f8854c0c886e8d724f  gcc/testsuite/g++.dg/template/partial-specialization2.C
  e3bba8fb10b84a1583b714234f4d0593  gcc/testsuite/g++.dg/template/partial-specialization3.C
*************** e860cd8afddc5e6a3e1e2380ceb1d83c  gcc/te
*** 17445,17452 ****
  73f91d92ca573aac0d7cf49e8c288804  gcc/testsuite/g++.dg/template/partial-specialization5.C
  77d387a1f2b7f4f210ae06ffd544f113  gcc/testsuite/g++.dg/template/partial-specialization6.C
  72d17296056997135c1eea4f3d0d9a5a  gcc/testsuite/g++.dg/template/partial-specialization7.C
  bb04475dfd1abb6699b6daee337bc7ef  gcc/testsuite/g++.dg/template/partial1.C
! 44ba4af7d52ad0dba69cff7c7d026a77  gcc/testsuite/g++.dg/template/partial10.C
  3dc2f7f38ec49323d6044ddb2bc2e191  gcc/testsuite/g++.dg/template/partial11.C
  de5b350b4a291d22a6e427de9a0c69fc  gcc/testsuite/g++.dg/template/partial12.C
  60cae52d36e0a429fcd673ddc92f855f  gcc/testsuite/g++.dg/template/partial13.C
--- 18444,18452 ----
  73f91d92ca573aac0d7cf49e8c288804  gcc/testsuite/g++.dg/template/partial-specialization5.C
  77d387a1f2b7f4f210ae06ffd544f113  gcc/testsuite/g++.dg/template/partial-specialization6.C
  72d17296056997135c1eea4f3d0d9a5a  gcc/testsuite/g++.dg/template/partial-specialization7.C
+ 21d91ec2743a88a7efcfc1b03d04dca0  gcc/testsuite/g++.dg/template/partial-specialization8.C
  bb04475dfd1abb6699b6daee337bc7ef  gcc/testsuite/g++.dg/template/partial1.C
! 95285adf34852cd6fef29d70203d9ed6  gcc/testsuite/g++.dg/template/partial10.C
  3dc2f7f38ec49323d6044ddb2bc2e191  gcc/testsuite/g++.dg/template/partial11.C
  de5b350b4a291d22a6e427de9a0c69fc  gcc/testsuite/g++.dg/template/partial12.C
  60cae52d36e0a429fcd673ddc92f855f  gcc/testsuite/g++.dg/template/partial13.C
*************** ed8b9d57a67bc5c5ea55951ca907f5d9  gcc/te
*** 17455,17465 ****
  e2ea27f4d30c89986de472da016881a2  gcc/testsuite/g++.dg/template/partial2.C
  629ba41b72a6f4a573aa2b2fc66bf5c8  gcc/testsuite/g++.dg/template/partial3.C
  dbd288590e967c40dee79909821124df  gcc/testsuite/g++.dg/template/partial4.C
! 24ff2095d0235fd42a6d2f2a42f8585a  gcc/testsuite/g++.dg/template/partial5.C
  af2b317af1f920fbca6b70a32297df09  gcc/testsuite/g++.dg/template/partial6.C
  27869f98e951e86a28a79500f1a221da  gcc/testsuite/g++.dg/template/partial7.C
  2b23d416282107a906fcf6e2b3a898e7  gcc/testsuite/g++.dg/template/partial8.C
! 38d6a93d39574f0fe432f5e41591e968  gcc/testsuite/g++.dg/template/partial9.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
--- 18455,18465 ----
  e2ea27f4d30c89986de472da016881a2  gcc/testsuite/g++.dg/template/partial2.C
  629ba41b72a6f4a573aa2b2fc66bf5c8  gcc/testsuite/g++.dg/template/partial3.C
  dbd288590e967c40dee79909821124df  gcc/testsuite/g++.dg/template/partial4.C
! c5136ad4de7e5b92f6e5f94f191994ee  gcc/testsuite/g++.dg/template/partial5.C
  af2b317af1f920fbca6b70a32297df09  gcc/testsuite/g++.dg/template/partial6.C
  27869f98e951e86a28a79500f1a221da  gcc/testsuite/g++.dg/template/partial7.C
  2b23d416282107a906fcf6e2b3a898e7  gcc/testsuite/g++.dg/template/partial8.C
! 9fc092b7f4cd096177059593553e523e  gcc/testsuite/g++.dg/template/partial9.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
*************** cf462ecaa4f46ef7ba1818384c6683de  gcc/te
*** 17478,17492 ****
  0d32e7db5cb64695659c0e46c96c565e  gcc/testsuite/g++.dg/template/pr49377.C
  df23572d8e2f0cf034d6db6ec7b62489  gcc/testsuite/g++.dg/template/pr51199.C
  8a0639d0535cdea191e783182e6e7fbc  gcc/testsuite/g++.dg/template/pr51385.C
! ac5293b4531f308f68e385276e9d6fd3  gcc/testsuite/g++.dg/template/pr51488.C
  05d6741b85f358a79d6bf20351d1cc49  gcc/testsuite/g++.dg/template/pr52819.C
  944f74c863533f83b09a82215dbf2f48  gcc/testsuite/g++.dg/template/pr54310.C
  7844f60d3d6614879dd657aedb0e103b  gcc/testsuite/g++.dg/template/pr54377.C
  6465acc359cf71ed791739a364127805  gcc/testsuite/g++.dg/template/pr54858.C
  cc59c0249158492c705dbe5f82eca923  gcc/testsuite/g++.dg/template/pr54987.C
! 76914db2c59defcdf7aa03536ac79408  gcc/testsuite/g++.dg/template/pr55843.C
  47faeaed8cab37ef90c72d343665de97  gcc/testsuite/g++.dg/template/pr57573.C
  07da54542a03fec0ed57eb6454c15775  gcc/testsuite/g++.dg/template/pr58878.C
  ae27fcfe45fb638bb620109e3d14cecf  gcc/testsuite/g++.dg/template/pr61537.C
  9f83a83eca8bc22cf5852d6ac3fa6e5b  gcc/testsuite/g++.dg/template/pr61670.C
  d229039b35584d23120033d2015b7d9c  gcc/testsuite/g++.dg/template/pr61745.C
--- 18478,18495 ----
  0d32e7db5cb64695659c0e46c96c565e  gcc/testsuite/g++.dg/template/pr49377.C
  df23572d8e2f0cf034d6db6ec7b62489  gcc/testsuite/g++.dg/template/pr51199.C
  8a0639d0535cdea191e783182e6e7fbc  gcc/testsuite/g++.dg/template/pr51385.C
! f762d6540536f938f340eb7c8342038d  gcc/testsuite/g++.dg/template/pr51488.C
  05d6741b85f358a79d6bf20351d1cc49  gcc/testsuite/g++.dg/template/pr52819.C
  944f74c863533f83b09a82215dbf2f48  gcc/testsuite/g++.dg/template/pr54310.C
  7844f60d3d6614879dd657aedb0e103b  gcc/testsuite/g++.dg/template/pr54377.C
  6465acc359cf71ed791739a364127805  gcc/testsuite/g++.dg/template/pr54858.C
  cc59c0249158492c705dbe5f82eca923  gcc/testsuite/g++.dg/template/pr54987.C
! f81a697a6ef5d642b2872758266b754c  gcc/testsuite/g++.dg/template/pr55843.C
  47faeaed8cab37ef90c72d343665de97  gcc/testsuite/g++.dg/template/pr57573.C
  07da54542a03fec0ed57eb6454c15775  gcc/testsuite/g++.dg/template/pr58878.C
+ 233e6bb1c13e5b31d28a5cd423215957  gcc/testsuite/g++.dg/template/pr59930-1.C
+ 21139ef3b0ee7eed154c3f08d7949fe1  gcc/testsuite/g++.dg/template/pr59930-2.C
+ 759a2d0786ed85f62a797f80321ecdc2  gcc/testsuite/g++.dg/template/pr59930-3.C
  ae27fcfe45fb638bb620109e3d14cecf  gcc/testsuite/g++.dg/template/pr61537.C
  9f83a83eca8bc22cf5852d6ac3fa6e5b  gcc/testsuite/g++.dg/template/pr61670.C
  d229039b35584d23120033d2015b7d9c  gcc/testsuite/g++.dg/template/pr61745.C
*************** f85232cc2d2ce2406ad9221174563c83  gcc/te
*** 17511,17522 ****
  3482ce5b959d0b14f61a0ddfe785b9dd  gcc/testsuite/g++.dg/template/pr70610.C
  949c06bdf670a4d1cd8949ec77ca0c2a  gcc/testsuite/g++.dg/template/pr71406.C
  cfffe0e5a148f305e7da6cd2d9bc46c0  gcc/testsuite/g++.dg/template/pr71710.C
! 695053434a9bdfeba451af0ddd486872  gcc/testsuite/g++.dg/template/pr71826.C
  f2a730df4b5bb0224d3120077bf8bdef  gcc/testsuite/g++.dg/template/pr79650.C
  04907f98f8eab7c64ced6646f5140346  gcc/testsuite/g++.dg/template/pretty1.C
  b1805d4b386b8dcd432f41c68e255100  gcc/testsuite/g++.dg/template/pseudodtor1.C
  5bbbdc0bd84a1cf86dd283b16e7aa6ba  gcc/testsuite/g++.dg/template/pseudodtor2.C
! 1ac59284ddb13b9f2f29e6133077b46e  gcc/testsuite/g++.dg/template/pseudodtor3.C
  b2d3a32829fc6808db1b3b6f0e96ef74  gcc/testsuite/g++.dg/template/pseudodtor4.C
  bb39ba4948ed54bad8f9e9fc8e3fbb26  gcc/testsuite/g++.dg/template/pseudodtor5.C
  3db5c6a0f3565dd475506157d06e140a  gcc/testsuite/g++.dg/template/pseudodtor6.C
--- 18514,18536 ----
  3482ce5b959d0b14f61a0ddfe785b9dd  gcc/testsuite/g++.dg/template/pr70610.C
  949c06bdf670a4d1cd8949ec77ca0c2a  gcc/testsuite/g++.dg/template/pr71406.C
  cfffe0e5a148f305e7da6cd2d9bc46c0  gcc/testsuite/g++.dg/template/pr71710.C
! 655840d9d98c03e2ea702b0d6b99d8e3  gcc/testsuite/g++.dg/template/pr71826.C
  f2a730df4b5bb0224d3120077bf8bdef  gcc/testsuite/g++.dg/template/pr79650.C
+ ce358495eb96da767724476d23c8fe46  gcc/testsuite/g++.dg/template/pr81899.C
+ b5069234288499e0b7264b4e3c1ba8c5  gcc/testsuite/g++.dg/template/pr83825.C
+ aae2cda56dda501cbe121ad5f9961d12  gcc/testsuite/g++.dg/template/pr83988.C
+ e7699dc6713eb2041a3064c5cc10fff3  gcc/testsuite/g++.dg/template/pr84434.C
+ 2ab75e965d0200b202ba7abed54b5437  gcc/testsuite/g++.dg/template/pr84694.C
+ e3539961676c85fc14ad54d717fafa85  gcc/testsuite/g++.dg/template/pr84789-2.C
+ f9c791f333bf12a2d0a7609b1f5cf14e  gcc/testsuite/g++.dg/template/pr84789-3.C
+ ac848bb2711ff357dd89f9b199bdb94d  gcc/testsuite/g++.dg/template/pr84789.C
+ f368b131327ccd89f130c0ffe98f77e1  gcc/testsuite/g++.dg/template/pr84973-2.C
+ fe4d69247e887e4b87e6706ee310db96  gcc/testsuite/g++.dg/template/pr84973-3.C
+ 2f08e4c7e1e6d3c290db495e8b8cfd64  gcc/testsuite/g++.dg/template/pr84973.C
  04907f98f8eab7c64ced6646f5140346  gcc/testsuite/g++.dg/template/pretty1.C
  b1805d4b386b8dcd432f41c68e255100  gcc/testsuite/g++.dg/template/pseudodtor1.C
  5bbbdc0bd84a1cf86dd283b16e7aa6ba  gcc/testsuite/g++.dg/template/pseudodtor2.C
! ef46096422fcafeef03840d9589d3c80  gcc/testsuite/g++.dg/template/pseudodtor3.C
  b2d3a32829fc6808db1b3b6f0e96ef74  gcc/testsuite/g++.dg/template/pseudodtor4.C
  bb39ba4948ed54bad8f9e9fc8e3fbb26  gcc/testsuite/g++.dg/template/pseudodtor5.C
  3db5c6a0f3565dd475506157d06e140a  gcc/testsuite/g++.dg/template/pseudodtor6.C
*************** df5cd343f05e3fae16de3ecb28034b53  gcc/te
*** 17531,17538 ****
  4e849ae08c1114a95499c4a59e027a41  gcc/testsuite/g++.dg/template/ptrmem17.C
  c29b186e715b166abc3703fea2205647  gcc/testsuite/g++.dg/template/ptrmem18.C
  0560572d5223bb42d46f697f052023bb  gcc/testsuite/g++.dg/template/ptrmem19.C
! bd122ac7a9a98eae3b975399079bff82  gcc/testsuite/g++.dg/template/ptrmem2.C
! 14b09dc812d4a12e10d54df128f07c9c  gcc/testsuite/g++.dg/template/ptrmem20.C
  d789c4b198aaf983e81643a1d995a8da  gcc/testsuite/g++.dg/template/ptrmem21.C
  1deaba7f1445a234a33b8d445f9ce048  gcc/testsuite/g++.dg/template/ptrmem22.C
  4ef19b43e68f9107adafd0216878f062  gcc/testsuite/g++.dg/template/ptrmem23.C
--- 18545,18552 ----
  4e849ae08c1114a95499c4a59e027a41  gcc/testsuite/g++.dg/template/ptrmem17.C
  c29b186e715b166abc3703fea2205647  gcc/testsuite/g++.dg/template/ptrmem18.C
  0560572d5223bb42d46f697f052023bb  gcc/testsuite/g++.dg/template/ptrmem19.C
! 1b6dbef9954f520f4bdd8d206d6b42e6  gcc/testsuite/g++.dg/template/ptrmem2.C
! 55fe105591bb2643caa6a11c9b934855  gcc/testsuite/g++.dg/template/ptrmem20.C
  d789c4b198aaf983e81643a1d995a8da  gcc/testsuite/g++.dg/template/ptrmem21.C
  1deaba7f1445a234a33b8d445f9ce048  gcc/testsuite/g++.dg/template/ptrmem22.C
  4ef19b43e68f9107adafd0216878f062  gcc/testsuite/g++.dg/template/ptrmem23.C
*************** d7e997028da5485d49789a1ed367286f  gcc/te
*** 17549,17558 ****
  c1d71028a4f69f5c3fcfd2fd8a35f919  gcc/testsuite/g++.dg/template/ptrmem5.C
  0142354fd9237d4486fb0edc36ef39cc  gcc/testsuite/g++.dg/template/ptrmem6.C
  71bf635a4274ef3549d8487b25847e94  gcc/testsuite/g++.dg/template/ptrmem7.C
! 7b6ff99bc68e0d9ee83543a787361635  gcc/testsuite/g++.dg/template/ptrmem8.C
  6cdf7b7a7a495367d144ca4b7238a771  gcc/testsuite/g++.dg/template/ptrmem9.C
  b53786f776aa9fc498a50db4a10d9e69  gcc/testsuite/g++.dg/template/pure1.C
! 5512deff68cfd95af05439dc39d36f5c  gcc/testsuite/g++.dg/template/qual1.C
  4bcab05d2626fd45890af6154fa22221  gcc/testsuite/g++.dg/template/qual2.C
  b74e97b4799d324d24858f1f0ace382a  gcc/testsuite/g++.dg/template/qualified-id1.C
  760d233b1e82d77a4e17829a3a0eb589  gcc/testsuite/g++.dg/template/qualified-id2.C
--- 18563,18572 ----
  c1d71028a4f69f5c3fcfd2fd8a35f919  gcc/testsuite/g++.dg/template/ptrmem5.C
  0142354fd9237d4486fb0edc36ef39cc  gcc/testsuite/g++.dg/template/ptrmem6.C
  71bf635a4274ef3549d8487b25847e94  gcc/testsuite/g++.dg/template/ptrmem7.C
! ea93628b30b58e8cef72405f4196eac4  gcc/testsuite/g++.dg/template/ptrmem8.C
  6cdf7b7a7a495367d144ca4b7238a771  gcc/testsuite/g++.dg/template/ptrmem9.C
  b53786f776aa9fc498a50db4a10d9e69  gcc/testsuite/g++.dg/template/pure1.C
! 3677e531ac02787a5ab7017df219d933  gcc/testsuite/g++.dg/template/qual1.C
  4bcab05d2626fd45890af6154fa22221  gcc/testsuite/g++.dg/template/qual2.C
  b74e97b4799d324d24858f1f0ace382a  gcc/testsuite/g++.dg/template/qualified-id1.C
  760d233b1e82d77a4e17829a3a0eb589  gcc/testsuite/g++.dg/template/qualified-id2.C
*************** bbc53060e714151a182a421e8691abd5  gcc/te
*** 17570,17578 ****
  d5117f3f1bc5abfa2a210383b5c90542  gcc/testsuite/g++.dg/template/qualttp16.C
  fe3f92150960c518277dda2823e69039  gcc/testsuite/g++.dg/template/qualttp17.C
  27c2a87e1e01b0107251445cfcd863c4  gcc/testsuite/g++.dg/template/qualttp18.C
! 5d01ff95ca3a7d8da4e70d7477555e72  gcc/testsuite/g++.dg/template/qualttp19.C
  e1b6f19153852a341aae2955eb8ea280  gcc/testsuite/g++.dg/template/qualttp2.C
! ef7349a159d60a688d713b38b11fe2b4  gcc/testsuite/g++.dg/template/qualttp20.C
  34ca480947434371283862b25d7cbe19  gcc/testsuite/g++.dg/template/qualttp21.C
  3b637cecee1acb45f1c7f752a8c7732d  gcc/testsuite/g++.dg/template/qualttp22.C
  91db5b2e9413146a0519b8347dce2dea  gcc/testsuite/g++.dg/template/qualttp3.C
--- 18584,18592 ----
  d5117f3f1bc5abfa2a210383b5c90542  gcc/testsuite/g++.dg/template/qualttp16.C
  fe3f92150960c518277dda2823e69039  gcc/testsuite/g++.dg/template/qualttp17.C
  27c2a87e1e01b0107251445cfcd863c4  gcc/testsuite/g++.dg/template/qualttp18.C
! d8953e2e3d38a71330f2733df4b058c9  gcc/testsuite/g++.dg/template/qualttp19.C
  e1b6f19153852a341aae2955eb8ea280  gcc/testsuite/g++.dg/template/qualttp2.C
! db4af7d66473278961745328fb07b231  gcc/testsuite/g++.dg/template/qualttp20.C
  34ca480947434371283862b25d7cbe19  gcc/testsuite/g++.dg/template/qualttp21.C
  3b637cecee1acb45f1c7f752a8c7732d  gcc/testsuite/g++.dg/template/qualttp22.C
  91db5b2e9413146a0519b8347dce2dea  gcc/testsuite/g++.dg/template/qualttp3.C
*************** b8b893e1844c502297d1e4e9591779ef  gcc/te
*** 17617,17622 ****
--- 18631,18637 ----
  1ffed1eba156ff05925971c1bb91cd3d  gcc/testsuite/g++.dg/template/scope2.C
  a7bf058a51ee7236a37311a73bf15c69  gcc/testsuite/g++.dg/template/scope3.C
  b3e926a09671bb6d64fb4f63dde975e0  gcc/testsuite/g++.dg/template/scope4.C
+ 77939ad3c1d2d8dd6718190f59d34cce  gcc/testsuite/g++.dg/template/scope5.C
  72ffb989291c9247b76445d291858548  gcc/testsuite/g++.dg/template/sfinae-dr657.C
  d4a6fe33f1456d026d068d25f316aa9c  gcc/testsuite/g++.dg/template/sfinae1.C
  08e40e1ccd7635d093d248a8b6295788  gcc/testsuite/g++.dg/template/sfinae10.C
*************** a9f3ce4ee662be853b285ba58e2dfe52  gcc/te
*** 17650,17655 ****
--- 18665,18675 ----
  35f10d9140d7f7e60832129e6d6da8b9  gcc/testsuite/g++.dg/template/shadow1.C
  5e634d2a60e0733658f162eeab1d5673  gcc/testsuite/g++.dg/template/shadow2.C
  429c749d4a969d6e6782e2108d66cc72  gcc/testsuite/g++.dg/template/shift1.C
+ 5664cd51517905bbc52f63fe0838b133  gcc/testsuite/g++.dg/template/show-template-tree-2.C
+ 718456f60ad535aa400d0196535918c2  gcc/testsuite/g++.dg/template/show-template-tree-3.C
+ d877f1c36160b725fc3f9f90ef621cf5  gcc/testsuite/g++.dg/template/show-template-tree-4.C
+ 867d87de9574acb1f1fc4a93cc164842  gcc/testsuite/g++.dg/template/show-template-tree-no-elide-type.C
+ 5e99130628ae881b7184e2f80c2a042f  gcc/testsuite/g++.dg/template/show-template-tree.C
  f23ba0af1fed6ed0d84fb59d38cc32a2  gcc/testsuite/g++.dg/template/sizeof-template-argument.C
  8af3d67f6d9f4dd6cda097137e1aaa5e  gcc/testsuite/g++.dg/template/sizeof1.C
  c3dde08186236701373c41bd64c9338e  gcc/testsuite/g++.dg/template/sizeof10.C
*************** c3dde08186236701373c41bd64c9338e  gcc/te
*** 17658,17671 ****
  52cb6bded099df9ce613e3e3e21f7a8a  gcc/testsuite/g++.dg/template/sizeof13.C
  f3d1c78c98af6fc6f4d1fbc648a31143  gcc/testsuite/g++.dg/template/sizeof14.C
  ebdb792b93f8bdc6bc2cc6ba0302b95c  gcc/testsuite/g++.dg/template/sizeof15.C
  6ebf0c32bb2f9f68d5de8a2eb380e74b  gcc/testsuite/g++.dg/template/sizeof2.C
  f6e095b160ad28af4c90a4545b086bc6  gcc/testsuite/g++.dg/template/sizeof3.C
  70e0faea5b000e5fbde589a89ad950bd  gcc/testsuite/g++.dg/template/sizeof4.C
  3732e9c01b98ba779d2beb4a94b1f1a4  gcc/testsuite/g++.dg/template/sizeof5.C
  8d7b68da161169ea74382da5f4a8c8fb  gcc/testsuite/g++.dg/template/sizeof6.C
  0c4917a1350de8892aea4bca2d593036  gcc/testsuite/g++.dg/template/sizeof7.C
! 84c8e28b3b15370829046813c1fbb7b3  gcc/testsuite/g++.dg/template/sizeof8.C
! 12df473d69cf94653ec8c2821cfe853f  gcc/testsuite/g++.dg/template/sizeof9.C
  2c4280f67b1e22c2fbb0f60584f52297  gcc/testsuite/g++.dg/template/spec1.C
  ad21a3b2ad2780aa2209396893143af3  gcc/testsuite/g++.dg/template/spec10.C
  641e90d3e3434fc264671bb60336331b  gcc/testsuite/g++.dg/template/spec11.C
--- 18678,18693 ----
  52cb6bded099df9ce613e3e3e21f7a8a  gcc/testsuite/g++.dg/template/sizeof13.C
  f3d1c78c98af6fc6f4d1fbc648a31143  gcc/testsuite/g++.dg/template/sizeof14.C
  ebdb792b93f8bdc6bc2cc6ba0302b95c  gcc/testsuite/g++.dg/template/sizeof15.C
+ 5dbee939917f6692d7186c2e304cc517  gcc/testsuite/g++.dg/template/sizeof16.C
+ 497518eaed2ad09ef4b89fb40759c84d  gcc/testsuite/g++.dg/template/sizeof17.C
  6ebf0c32bb2f9f68d5de8a2eb380e74b  gcc/testsuite/g++.dg/template/sizeof2.C
  f6e095b160ad28af4c90a4545b086bc6  gcc/testsuite/g++.dg/template/sizeof3.C
  70e0faea5b000e5fbde589a89ad950bd  gcc/testsuite/g++.dg/template/sizeof4.C
  3732e9c01b98ba779d2beb4a94b1f1a4  gcc/testsuite/g++.dg/template/sizeof5.C
  8d7b68da161169ea74382da5f4a8c8fb  gcc/testsuite/g++.dg/template/sizeof6.C
  0c4917a1350de8892aea4bca2d593036  gcc/testsuite/g++.dg/template/sizeof7.C
! 607d5897f1a96a2fa2337cae490fb2d3  gcc/testsuite/g++.dg/template/sizeof8.C
! 07743aa40a8ee17f0d93a42078cb0931  gcc/testsuite/g++.dg/template/sizeof9.C
  2c4280f67b1e22c2fbb0f60584f52297  gcc/testsuite/g++.dg/template/spec1.C
  ad21a3b2ad2780aa2209396893143af3  gcc/testsuite/g++.dg/template/spec10.C
  641e90d3e3434fc264671bb60336331b  gcc/testsuite/g++.dg/template/spec11.C
*************** c634bc3cd5d70e255a55643ffffb70b2  gcc/te
*** 17701,17708 ****
  fba856a61db5644cba94060c62cec29f  gcc/testsuite/g++.dg/template/spec39.C
  2a1077a58e27e49e8f92e9122c330685  gcc/testsuite/g++.dg/template/spec4.C
  ac4700345bbf0d5aafda66965305864b  gcc/testsuite/g++.dg/template/spec5.C
! b03b7960945086593b8859887c9f2b8e  gcc/testsuite/g++.dg/template/spec6.C
! c815e2045db2912ff4ac5e6626f81264  gcc/testsuite/g++.dg/template/spec7.C
  3add5756f52354ea441e418ac77ff8cf  gcc/testsuite/g++.dg/template/spec8.C
  03e26c658592047cdea1d686aa9cfacf  gcc/testsuite/g++.dg/template/spec9.C
  3086f5635d06cd6f2e3ef5d531d57f80  gcc/testsuite/g++.dg/template/static1.C
--- 18723,18730 ----
  fba856a61db5644cba94060c62cec29f  gcc/testsuite/g++.dg/template/spec39.C
  2a1077a58e27e49e8f92e9122c330685  gcc/testsuite/g++.dg/template/spec4.C
  ac4700345bbf0d5aafda66965305864b  gcc/testsuite/g++.dg/template/spec5.C
! 2fc2335d45186d3c105fae00aac3b8b3  gcc/testsuite/g++.dg/template/spec6.C
! b5c9ce57ec18ecb1da9249a4839466d0  gcc/testsuite/g++.dg/template/spec7.C
  3add5756f52354ea441e418ac77ff8cf  gcc/testsuite/g++.dg/template/spec8.C
  03e26c658592047cdea1d686aa9cfacf  gcc/testsuite/g++.dg/template/spec9.C
  3086f5635d06cd6f2e3ef5d531d57f80  gcc/testsuite/g++.dg/template/static1.C
*************** be10cab7b5da25690bdabe2a885d3ae2  gcc/te
*** 17736,17741 ****
--- 18758,18764 ----
  f1fd1e96e73f73035fc24e024a5643a1  gcc/testsuite/g++.dg/template/static34.C
  a9c4873781cdee9da4089c677e6bf829  gcc/testsuite/g++.dg/template/static35.C
  9468b6679f9fbd2bbd7360c1cb52277f  gcc/testsuite/g++.dg/template/static36.C
+ 04f0a0d1692f7766dbd89034a01b8a64  gcc/testsuite/g++.dg/template/static37.C
  b67f90f481457eed4347f5c93c64b458  gcc/testsuite/g++.dg/template/static4.C
  e5538275a590133055e80d957d76fab1  gcc/testsuite/g++.dg/template/static5.C
  40796a2389c81fb63a7c826d2e3a06af  gcc/testsuite/g++.dg/template/static6.C
*************** e7593ecf5b119a379bc82dc107ccab12  gcc/te
*** 17752,17757 ****
--- 18775,18781 ----
  ecf0de18eacd09d8644abc4030d2c8f0  gcc/testsuite/g++.dg/template/template-id-2.C
  e93f073f61a42e3c7ad372625dbf5491  gcc/testsuite/g++.dg/template/template-id-3.C
  3eeb73c9e211131164ee26dc577c50c2  gcc/testsuite/g++.dg/template/template-id-4.C
+ 8fa3e6c96fba6376bb082c7c80573236  gcc/testsuite/g++.dg/template/template-keyword1.C
  2633475e196e36c058cf618a862c925f  gcc/testsuite/g++.dg/template/this-targ1.C
  f9dface1543c62e1ed5a293679ac47da  gcc/testsuite/g++.dg/template/ttp-derived1.C
  d295175d2a75128bac0554e17b63735a  gcc/testsuite/g++.dg/template/ttp-derived2.C
*************** bb208d004cabc03fdafadc3dd900340e  gcc/te
*** 17779,17786 ****
  052744e1f403dbb8b61873044725e659  gcc/testsuite/g++.dg/template/ttp27.C
  3f96e3fc895a470c89118aba3b7b5e4a  gcc/testsuite/g++.dg/template/ttp28.C
  34ecc11261fb09fb1395afbec1390414  gcc/testsuite/g++.dg/template/ttp29.C
! dae42b78445fb03f0f7c80954fe880b4  gcc/testsuite/g++.dg/template/ttp3.C
  d9dcbec8c7ed6d179520a787d5246717  gcc/testsuite/g++.dg/template/ttp30.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
--- 18803,18812 ----
  052744e1f403dbb8b61873044725e659  gcc/testsuite/g++.dg/template/ttp27.C
  3f96e3fc895a470c89118aba3b7b5e4a  gcc/testsuite/g++.dg/template/ttp28.C
  34ecc11261fb09fb1395afbec1390414  gcc/testsuite/g++.dg/template/ttp29.C
! df8c17723bf6f25c15869e425bf4d988  gcc/testsuite/g++.dg/template/ttp3.C
  d9dcbec8c7ed6d179520a787d5246717  gcc/testsuite/g++.dg/template/ttp30.C
+ bba921ba78bd2bb216169aa4ed7d5a1f  gcc/testsuite/g++.dg/template/ttp31.C
+ b16d03388df71f44a49ac42b14bb0b78  gcc/testsuite/g++.dg/template/ttp32.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
*************** e4f31473f3a6029bc780fa422a45de3a  gcc/te
*** 17828,17834 ****
  c216b7fcf0f0612e246302001f5b0d6f  gcc/testsuite/g++.dg/template/typedef5.C
  22d0973a2715188331b77478c9e8d13e  gcc/testsuite/g++.dg/template/typedef6.C
  e5348f6294a6577651589b520086d43e  gcc/testsuite/g++.dg/template/typedef7.C
! 594af50e76fdc8814e78121a8d698078  gcc/testsuite/g++.dg/template/typedef8.C
  779a641261850a2aeef3d242e02f0a9b  gcc/testsuite/g++.dg/template/typedef9.C
  c8309bdff0cfda521b4e7ea53eaf9126  gcc/testsuite/g++.dg/template/typeid-template-argument.C
  aa060dce3d59cbf4ce2344b294d1b948  gcc/testsuite/g++.dg/template/typeid1.C
--- 18854,18860 ----
  c216b7fcf0f0612e246302001f5b0d6f  gcc/testsuite/g++.dg/template/typedef5.C
  22d0973a2715188331b77478c9e8d13e  gcc/testsuite/g++.dg/template/typedef6.C
  e5348f6294a6577651589b520086d43e  gcc/testsuite/g++.dg/template/typedef7.C
! 97964d54650c86bd2414a1146b89c5d8  gcc/testsuite/g++.dg/template/typedef8.C
  779a641261850a2aeef3d242e02f0a9b  gcc/testsuite/g++.dg/template/typedef9.C
  c8309bdff0cfda521b4e7ea53eaf9126  gcc/testsuite/g++.dg/template/typeid-template-argument.C
  aa060dce3d59cbf4ce2344b294d1b948  gcc/testsuite/g++.dg/template/typeid1.C
*************** c0294c255af8599c061bc4b5b4fc75ca  gcc/te
*** 17859,17868 ****
  09af30adee47658569e7245f1283085e  gcc/testsuite/g++.dg/template/unify11.C
  4559d27962ac65b887c6f4a3a42dc70f  gcc/testsuite/g++.dg/template/unify2.C
  16808e8b62429d390bc5719fd2009b5c  gcc/testsuite/g++.dg/template/unify3.C
! feb3d3e768d415765fa75c15289189a8  gcc/testsuite/g++.dg/template/unify4.C
  a356fc4e8d85f399c730f255f0823551  gcc/testsuite/g++.dg/template/unify5.C
! a36da51f328c10cf0a7fc9eb49f5d107  gcc/testsuite/g++.dg/template/unify6.C
! 5d970690a471a9fd196c155a96070792  gcc/testsuite/g++.dg/template/unify7.C
  d04f9d4f8d36c0325245fb8a7df506ad  gcc/testsuite/g++.dg/template/unify8.C
  9b08ce427529a05bbb60c897ef470094  gcc/testsuite/g++.dg/template/unify9.C
  b60b7ba97d84900a03ad818e8de4f60d  gcc/testsuite/g++.dg/template/union1.C
--- 18885,18894 ----
  09af30adee47658569e7245f1283085e  gcc/testsuite/g++.dg/template/unify11.C
  4559d27962ac65b887c6f4a3a42dc70f  gcc/testsuite/g++.dg/template/unify2.C
  16808e8b62429d390bc5719fd2009b5c  gcc/testsuite/g++.dg/template/unify3.C
! 314446f36deb8f9d24cf095763c83315  gcc/testsuite/g++.dg/template/unify4.C
  a356fc4e8d85f399c730f255f0823551  gcc/testsuite/g++.dg/template/unify5.C
! 4f7c0b92332817c8e7965630e3a101f5  gcc/testsuite/g++.dg/template/unify6.C
! 0bf2ccb908b646b5845b2419e28d80c8  gcc/testsuite/g++.dg/template/unify7.C
  d04f9d4f8d36c0325245fb8a7df506ad  gcc/testsuite/g++.dg/template/unify8.C
  9b08ce427529a05bbb60c897ef470094  gcc/testsuite/g++.dg/template/unify9.C
  b60b7ba97d84900a03ad818e8de4f60d  gcc/testsuite/g++.dg/template/union1.C
*************** c5cbcebaafb803692224b39b01e8f671  gcc/te
*** 17879,17885 ****
  cfc21cabe74fa837433fc899f5f5211c  gcc/testsuite/g++.dg/template/using18.C
  536e84362ae1859fc60fb98478875a43  gcc/testsuite/g++.dg/template/using19.C
  39ab7cfa3b77ae21d0f7e2140e1bc6f7  gcc/testsuite/g++.dg/template/using2.C
! 320afc20e453862a122ac3d0bdda181b  gcc/testsuite/g++.dg/template/using20.C
  8f24a6602645350feb421484b6b3ea57  gcc/testsuite/g++.dg/template/using21.C
  15875b358b7888d3afb1bb2d41b1be7f  gcc/testsuite/g++.dg/template/using22.C
  b6fd01563ec784b5aec55681183ee573  gcc/testsuite/g++.dg/template/using23.C
--- 18905,18911 ----
  cfc21cabe74fa837433fc899f5f5211c  gcc/testsuite/g++.dg/template/using18.C
  536e84362ae1859fc60fb98478875a43  gcc/testsuite/g++.dg/template/using19.C
  39ab7cfa3b77ae21d0f7e2140e1bc6f7  gcc/testsuite/g++.dg/template/using2.C
! 17c5623f7f21b35adf36f14371586cf7  gcc/testsuite/g++.dg/template/using20.C
  8f24a6602645350feb421484b6b3ea57  gcc/testsuite/g++.dg/template/using21.C
  15875b358b7888d3afb1bb2d41b1be7f  gcc/testsuite/g++.dg/template/using22.C
  b6fd01563ec784b5aec55681183ee573  gcc/testsuite/g++.dg/template/using23.C
*************** c5b8c38be81661272893865e515d4cd7  gcc/te
*** 17902,17909 ****
  cc0e6150c7129bf68a638d26a3d2f022  gcc/testsuite/g++.dg/template/virtual2.C
  e7c05aafe76cbbce1b0b4f8e3a864522  gcc/testsuite/g++.dg/template/virtual3.C
  e8e64daa7b3951eb853a386477a44c63  gcc/testsuite/g++.dg/template/virtual4.C
! 94a0a165b65e3caa1af30d5a45bc1934  gcc/testsuite/g++.dg/template/vla1.C
! 90a46ed40bed54c5195c9fe7b289492d  gcc/testsuite/g++.dg/template/vla2.C
  23655735fa447bdfd2100e025e21ee03  gcc/testsuite/g++.dg/template/void1.C
  b98f8ca68199027ec91aea21199d5807  gcc/testsuite/g++.dg/template/void10.C
  334f2b6dd7bbf1694010e0f30e5058f9  gcc/testsuite/g++.dg/template/void11.C
--- 18928,18935 ----
  cc0e6150c7129bf68a638d26a3d2f022  gcc/testsuite/g++.dg/template/virtual2.C
  e7c05aafe76cbbce1b0b4f8e3a864522  gcc/testsuite/g++.dg/template/virtual3.C
  e8e64daa7b3951eb853a386477a44c63  gcc/testsuite/g++.dg/template/virtual4.C
! 45c16592a226e36762e5e87feec97055  gcc/testsuite/g++.dg/template/vla1.C
! 2379342eeb740123159168a074641754  gcc/testsuite/g++.dg/template/vla2.C
  23655735fa447bdfd2100e025e21ee03  gcc/testsuite/g++.dg/template/void1.C
  b98f8ca68199027ec91aea21199d5807  gcc/testsuite/g++.dg/template/void10.C
  334f2b6dd7bbf1694010e0f30e5058f9  gcc/testsuite/g++.dg/template/void11.C
*************** d7375b6b148303af73024b27635ad7cd  gcc/te
*** 17920,17931 ****
  40eb8a19e0fcd553ccef6d762b7efceb  gcc/testsuite/g++.dg/template/void9.C
  98fb9a7526b5989b48ce49e7131f8f76  gcc/testsuite/g++.dg/template/vtable1.C
  16a3287999d8f75052cf24fd78ff1e9f  gcc/testsuite/g++.dg/template/vtable2.C
! 8187509809176ee0fe06c4fa7bedf855  gcc/testsuite/g++.dg/template/warn1.C
  577a7a4f76f06bf7384ad303d275f983  gcc/testsuite/g++.dg/template/wrap1.C
  ee5c01dd5d6ee9acf4d49c9a5a3191d0  gcc/testsuite/g++.dg/tls/diag-1.C
! af7b13677d44ac76e1bdd5696d4485c3  gcc/testsuite/g++.dg/tls/diag-2.C
  f4bf79515fd3464e428da5958531f5d6  gcc/testsuite/g++.dg/tls/diag-3.C
! 18bf8b76ba57014747ff57e39adc480d  gcc/testsuite/g++.dg/tls/diag-4.C
  11481d47864021d1e3af511c6b632c29  gcc/testsuite/g++.dg/tls/diag-5.C
  e425d7fc584cf8535f3eee565f58f091  gcc/testsuite/g++.dg/tls/init-1.C
  ec6c7e65d57e2a70cb1a6852131a0f16  gcc/testsuite/g++.dg/tls/init-2.C
--- 18946,18957 ----
  40eb8a19e0fcd553ccef6d762b7efceb  gcc/testsuite/g++.dg/template/void9.C
  98fb9a7526b5989b48ce49e7131f8f76  gcc/testsuite/g++.dg/template/vtable1.C
  16a3287999d8f75052cf24fd78ff1e9f  gcc/testsuite/g++.dg/template/vtable2.C
! 568762f54a977de73383a34dd88e7c45  gcc/testsuite/g++.dg/template/warn1.C
  577a7a4f76f06bf7384ad303d275f983  gcc/testsuite/g++.dg/template/wrap1.C
  ee5c01dd5d6ee9acf4d49c9a5a3191d0  gcc/testsuite/g++.dg/tls/diag-1.C
! e99db8ae025dbe070764e88c8f54b4d9  gcc/testsuite/g++.dg/tls/diag-2.C
  f4bf79515fd3464e428da5958531f5d6  gcc/testsuite/g++.dg/tls/diag-3.C
! 298dc40b19f6e8123e410e6efa8f2309  gcc/testsuite/g++.dg/tls/diag-4.C
  11481d47864021d1e3af511c6b632c29  gcc/testsuite/g++.dg/tls/diag-5.C
  e425d7fc584cf8535f3eee565f58f091  gcc/testsuite/g++.dg/tls/init-1.C
  ec6c7e65d57e2a70cb1a6852131a0f16  gcc/testsuite/g++.dg/tls/init-2.C
*************** e4cfba8fd55d0168821bd21efa0237d8  gcc/te
*** 17952,17970 ****
  8c04798ad83e68ad71e341845cf0aeea  gcc/testsuite/g++.dg/tls/thread_local10.C
  24b7dce2c6b463d883c54b5a853ce0ad  gcc/testsuite/g++.dg/tls/thread_local2.C
  6c980c168dd76bd2823f2ec310b5f47b  gcc/testsuite/g++.dg/tls/thread_local2g.C
! 8961fdb81f19276885d5cbcb01b4aa9f  gcc/testsuite/g++.dg/tls/thread_local3.C
! 7e74fc18fc8da8aa330e0aad0afdff42  gcc/testsuite/g++.dg/tls/thread_local3g.C
  f07d12eede7f7a2e48dc44b086156852  gcc/testsuite/g++.dg/tls/thread_local4.C
  46dee5a77d5103450aabe9dc96d522f8  gcc/testsuite/g++.dg/tls/thread_local4g.C
! 41c1694c3e4f718ca564768e7b1ff98c  gcc/testsuite/g++.dg/tls/thread_local5.C
! 5ba4251801ad12869c638a2f30a6b096  gcc/testsuite/g++.dg/tls/thread_local5g.C
! 7d60610c0ea5bd69e524a07676efe2cc  gcc/testsuite/g++.dg/tls/thread_local6.C
! 95317fc4446b786867802bec9ba753c9  gcc/testsuite/g++.dg/tls/thread_local6g.C
  9369adca40c1755ebd21e8e56317dd8b  gcc/testsuite/g++.dg/tls/thread_local7.C
  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
! 6adc01ad78a8761cbbdba5f978c44740  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
--- 18978,18996 ----
  8c04798ad83e68ad71e341845cf0aeea  gcc/testsuite/g++.dg/tls/thread_local10.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
! 0b60464fd67a419f499a39b9ded2d8b8  gcc/testsuite/g++.dg/tls/thread_local3g.C
  f07d12eede7f7a2e48dc44b086156852  gcc/testsuite/g++.dg/tls/thread_local4.C
  46dee5a77d5103450aabe9dc96d522f8  gcc/testsuite/g++.dg/tls/thread_local4g.C
! 7e48587101dbf21a8c5a4b264f14eb06  gcc/testsuite/g++.dg/tls/thread_local5.C
! cf26e329259baed2e3c2675d10b71343  gcc/testsuite/g++.dg/tls/thread_local5g.C
! 25ba1955d1c5d76152ca766926fcfb0c  gcc/testsuite/g++.dg/tls/thread_local6.C
! 0ab8b0eb4501acac6ad6ba1e45a4fc39  gcc/testsuite/g++.dg/tls/thread_local6g.C
  9369adca40c1755ebd21e8e56317dd8b  gcc/testsuite/g++.dg/tls/thread_local7.C
  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
! c45e65c24aacd627ef2c449a045ab218  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
*************** debf53c602437e43da099fa943834a84  gcc/te
*** 17974,17980 ****
  b3c6fad876fb9fbc95733f84b7fb6645  gcc/testsuite/g++.dg/tm/attrib-2.C
  7de0dbf10fd117711f389b7fbc639fe1  gcc/testsuite/g++.dg/tm/attrib-3.C
  118ca6537a61acc3774d0044bb336a87  gcc/testsuite/g++.dg/tm/attrib-4.C
! 50b59c012edd93096ce31cbbb7542e0e  gcc/testsuite/g++.dg/tm/cgraph_edge.C
  26ce6286d392a15b839e7fc7af9bd42c  gcc/testsuite/g++.dg/tm/composite1.C
  4cc09ae741099d64dbfe97781c2f2c5e  gcc/testsuite/g++.dg/tm/dynamic1.C
  e7ac1fbc7bbdfa0754921c8933a12002  gcc/testsuite/g++.dg/tm/dynamic2.C
--- 19000,19006 ----
  b3c6fad876fb9fbc95733f84b7fb6645  gcc/testsuite/g++.dg/tm/attrib-2.C
  7de0dbf10fd117711f389b7fbc639fe1  gcc/testsuite/g++.dg/tm/attrib-3.C
  118ca6537a61acc3774d0044bb336a87  gcc/testsuite/g++.dg/tm/attrib-4.C
! 225a252590c8499fb3f4aa8d83c36e51  gcc/testsuite/g++.dg/tm/cgraph_edge.C
  26ce6286d392a15b839e7fc7af9bd42c  gcc/testsuite/g++.dg/tm/composite1.C
  4cc09ae741099d64dbfe97781c2f2c5e  gcc/testsuite/g++.dg/tm/dynamic1.C
  e7ac1fbc7bbdfa0754921c8933a12002  gcc/testsuite/g++.dg/tm/dynamic2.C
*************** ab1fc8e002302cf3993d553b5114313e  gcc/te
*** 18007,18022 ****
  9d73dbf45829a3887d224a610714fe31  gcc/testsuite/g++.dg/tm/pr46269.C
  54a13919282f59216cf9daa0d9673f43  gcc/testsuite/g++.dg/tm/pr46270.C
  4b6db556a8e3d45e2e01c92800fdd59c  gcc/testsuite/g++.dg/tm/pr46300.C
! eb2259a2b901663b114595c2c6b37b28  gcc/testsuite/g++.dg/tm/pr46567.C
! 9e8111ec1204bc063b40efc000a282e0  gcc/testsuite/g++.dg/tm/pr46646.C
  2303ff11da94ae0fff0fe3e1a792a6e2  gcc/testsuite/g++.dg/tm/pr46653.C
  d91165469d6631654c58cff1df797af2  gcc/testsuite/g++.dg/tm/pr46714.C
  8ade92c7c0b4d1148412e0c5db36a110  gcc/testsuite/g++.dg/tm/pr46941.C
! 2998685362b55591e644cc1ae76c8e83  gcc/testsuite/g++.dg/tm/pr47340.C
  108479f7b956989471d37b832cf95c5b  gcc/testsuite/g++.dg/tm/pr47530-2.C
  4bced00aa6df260c2cd53087b8a0e286  gcc/testsuite/g++.dg/tm/pr47530.C
! b0ec7019b82dd50a55b5ef7d1798ae03  gcc/testsuite/g++.dg/tm/pr47554.C
! 1df5e0affa32084a62012930ab6098e6  gcc/testsuite/g++.dg/tm/pr47573.C
  bdf31495224af26547a22c23b921c804  gcc/testsuite/g++.dg/tm/pr47746.C
  daff987691bc59424d06c194c5f8afa5  gcc/testsuite/g++.dg/tm/pr47747.C
  3ac4d37c7b3eb7a0c1a81fb236f0ac99  gcc/testsuite/g++.dg/tm/pr51212.C
--- 19033,19048 ----
  9d73dbf45829a3887d224a610714fe31  gcc/testsuite/g++.dg/tm/pr46269.C
  54a13919282f59216cf9daa0d9673f43  gcc/testsuite/g++.dg/tm/pr46270.C
  4b6db556a8e3d45e2e01c92800fdd59c  gcc/testsuite/g++.dg/tm/pr46300.C
! 70fe4817ba2f24556c641274822a4472  gcc/testsuite/g++.dg/tm/pr46567.C
! bb3dfa1492a9ed1f8ea1e71e74649e1d  gcc/testsuite/g++.dg/tm/pr46646.C
  2303ff11da94ae0fff0fe3e1a792a6e2  gcc/testsuite/g++.dg/tm/pr46653.C
  d91165469d6631654c58cff1df797af2  gcc/testsuite/g++.dg/tm/pr46714.C
  8ade92c7c0b4d1148412e0c5db36a110  gcc/testsuite/g++.dg/tm/pr46941.C
! 5560027a8cae4f1065af6f83cef4786b  gcc/testsuite/g++.dg/tm/pr47340.C
  108479f7b956989471d37b832cf95c5b  gcc/testsuite/g++.dg/tm/pr47530-2.C
  4bced00aa6df260c2cd53087b8a0e286  gcc/testsuite/g++.dg/tm/pr47530.C
! 0073ecfe8e2c36ce7bba143e59befc76  gcc/testsuite/g++.dg/tm/pr47554.C
! d23c7274843a6ae5ca32ac20cb1adbfd  gcc/testsuite/g++.dg/tm/pr47573.C
  bdf31495224af26547a22c23b921c804  gcc/testsuite/g++.dg/tm/pr47746.C
  daff987691bc59424d06c194c5f8afa5  gcc/testsuite/g++.dg/tm/pr47747.C
  3ac4d37c7b3eb7a0c1a81fb236f0ac99  gcc/testsuite/g++.dg/tm/pr51212.C
*************** e204cc8a88c59f1e5cbc72ccfd8cb390  gcc/te
*** 18028,18034 ****
  350ac024688877383b10187a772aa243  gcc/testsuite/g++.dg/tm/pr58516.C
  9e8bbd658850a80ba74ec4326abdd8a4  gcc/testsuite/g++.dg/tm/pr58635-1.C
  2023e08d493ba5b9b6b027ead9dbcdfb  gcc/testsuite/g++.dg/tm/pr58635-2.C
! c9e5bbfe98ec7fbaa16a15a1f925bb18  gcc/testsuite/g++.dg/tm/pr60004.C
  106a3fd65d1feeb38d0f2a3224a6087b  gcc/testsuite/g++.dg/tm/pr67811.C
  9cb64b9cc6c6145b21e2923368a94909  gcc/testsuite/g++.dg/tm/pr70266.C
  f20200faa0befb0bfc51cc6eb591119c  gcc/testsuite/g++.dg/tm/pr71909.C
--- 19054,19060 ----
  350ac024688877383b10187a772aa243  gcc/testsuite/g++.dg/tm/pr58516.C
  9e8bbd658850a80ba74ec4326abdd8a4  gcc/testsuite/g++.dg/tm/pr58635-1.C
  2023e08d493ba5b9b6b027ead9dbcdfb  gcc/testsuite/g++.dg/tm/pr58635-2.C
! 1253744213ce76f92fd1fa729a44e379  gcc/testsuite/g++.dg/tm/pr60004.C
  106a3fd65d1feeb38d0f2a3224a6087b  gcc/testsuite/g++.dg/tm/pr67811.C
  9cb64b9cc6c6145b21e2923368a94909  gcc/testsuite/g++.dg/tm/pr70266.C
  f20200faa0befb0bfc51cc6eb591119c  gcc/testsuite/g++.dg/tm/pr71909.C
*************** b8417aa0335eeb4b3381d508ea7f5c38  gcc/te
*** 18043,18065 ****
  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
! d16488f86bd69b97126903d8bb1d0f70  gcc/testsuite/g++.dg/tm/tm.exp
! 529502103035ce58fbec36dc36ceacc3  gcc/testsuite/g++.dg/tm/unsafe1.C
! 9e969026801baf0051d998c8cae115a3  gcc/testsuite/g++.dg/tm/unsafe2.C
  6c44d3ee04abacf4b43b2418345ac8d3  gcc/testsuite/g++.dg/tm/vector-1.C
  f02c3e541bcedd1c79e00c876e095e0f  gcc/testsuite/g++.dg/tm/wrap-2.C
! f13b81a05c8911cda482712e71fbe49c  gcc/testsuite/g++.dg/torture/20070621-1.C
  cba46ba0e799162dc4863891ff25ded3  gcc/testsuite/g++.dg/torture/20080625-1.C
! 20692bddd18b7647f22a6248b9d7ec73  gcc/testsuite/g++.dg/torture/20090329-1.C
  683450b729160794735761779ca70f64  gcc/testsuite/g++.dg/torture/20090706-1.C
  0b2b85ac6dafb7049980d831651adb25  gcc/testsuite/g++.dg/torture/20100702-1.C
  525821efab8625fd7aaf799d1e7ba186  gcc/testsuite/g++.dg/torture/20100825.C
  7071cc03da4664bd6eba9045894856c2  gcc/testsuite/g++.dg/torture/20120420-1.C
  8e57d382980230ca521d366b656b79bc  gcc/testsuite/g++.dg/torture/20121105-1.C
! ab5c37d866aea3038f0db6a261150f45  gcc/testsuite/g++.dg/torture/20141013.C
  080ecc95e15ea3b4ed02e0e24c727d53  gcc/testsuite/g++.dg/torture/PR58294.C
! 70b93ad73eb3c56acdd89216cf4ec532  gcc/testsuite/g++.dg/torture/Wsizeof-pointer-memaccess1.C
! a7ea54b76bddb1a2f6ffe22326b8f16d  gcc/testsuite/g++.dg/torture/Wsizeof-pointer-memaccess2.C
  318bc94e0ad549681cfaba4d1ff517f8  gcc/testsuite/g++.dg/torture/builtin-location.C
  12bbc31ebdb5389852fb19dbc0efd9b4  gcc/testsuite/g++.dg/torture/covariant-1.C
  ce4f8106ed96ef070bead8ca0df02eea  gcc/testsuite/g++.dg/torture/darwin-cfstring-3.C
--- 19069,19099 ----
  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
! e6855db42f6dc4f65c0cff816363b453  gcc/testsuite/g++.dg/tm/tm.exp
! dd280847415c955ad23236033d5aaf8d  gcc/testsuite/g++.dg/tm/unsafe1.C
! 21a5d2c89779740daec0728828afc1e7  gcc/testsuite/g++.dg/tm/unsafe2.C
  6c44d3ee04abacf4b43b2418345ac8d3  gcc/testsuite/g++.dg/tm/vector-1.C
  f02c3e541bcedd1c79e00c876e095e0f  gcc/testsuite/g++.dg/tm/wrap-2.C
! 5432930d819bce051fd80e1d15313bdc  gcc/testsuite/g++.dg/torture/20070621-1.C
  cba46ba0e799162dc4863891ff25ded3  gcc/testsuite/g++.dg/torture/20080625-1.C
! 88d6fb61893bfd58feade3811338c5d3  gcc/testsuite/g++.dg/torture/20090329-1.C
  683450b729160794735761779ca70f64  gcc/testsuite/g++.dg/torture/20090706-1.C
  0b2b85ac6dafb7049980d831651adb25  gcc/testsuite/g++.dg/torture/20100702-1.C
  525821efab8625fd7aaf799d1e7ba186  gcc/testsuite/g++.dg/torture/20100825.C
  7071cc03da4664bd6eba9045894856c2  gcc/testsuite/g++.dg/torture/20120420-1.C
  8e57d382980230ca521d366b656b79bc  gcc/testsuite/g++.dg/torture/20121105-1.C
! 2f7707c8db2f9b99d0d0951435f21110  gcc/testsuite/g++.dg/torture/20141013.C
  080ecc95e15ea3b4ed02e0e24c727d53  gcc/testsuite/g++.dg/torture/PR58294.C
! 41d5944768b1a3c34b0b955c70258f71  gcc/testsuite/g++.dg/torture/Wsizeof-pointer-memaccess1.C
! 647cbe611f3567d12652a8416806320b  gcc/testsuite/g++.dg/torture/Wsizeof-pointer-memaccess2.C
! 3f917b76ecc29754d6290571f9e5d95f  gcc/testsuite/g++.dg/torture/accessor-fixits-1.C
! 569e15f12e6edb3871caa313c9b90918  gcc/testsuite/g++.dg/torture/accessor-fixits-2.C
! d6506ab0e8d94811158805fbacea5be7  gcc/testsuite/g++.dg/torture/accessor-fixits-3.C
! 3be296f297118393571c3c3ed00b4763  gcc/testsuite/g++.dg/torture/accessor-fixits-4.C
! 450fc612db7b61af3b48c45a76418e80  gcc/testsuite/g++.dg/torture/accessor-fixits-5.C
! 3035a8e4756355e15c98fa6b23094c15  gcc/testsuite/g++.dg/torture/accessor-fixits-6.C
! e8df79dfae7c9da7b00835c990c545ce  gcc/testsuite/g++.dg/torture/accessor-fixits-7.C
! bbb4b68b2b55f3e5d143dfc3cb49196e  gcc/testsuite/g++.dg/torture/accessor-fixits-8.C
  318bc94e0ad549681cfaba4d1ff517f8  gcc/testsuite/g++.dg/torture/builtin-location.C
  12bbc31ebdb5389852fb19dbc0efd9b4  gcc/testsuite/g++.dg/torture/covariant-1.C
  ce4f8106ed96ef070bead8ca0df02eea  gcc/testsuite/g++.dg/torture/darwin-cfstring-3.C
*************** e980bf95890544d46879b89f7aa98df6  gcc/te
*** 18073,18102 ****
  ff110b3c564473b839e08fc2d962f439  gcc/testsuite/g++.dg/torture/pr31081-1.C
  9fd72fc7657b473f879f5e1dc5b4f59f  gcc/testsuite/g++.dg/torture/pr31081-2.C
  488a053995c3999b7064677484855aad  gcc/testsuite/g++.dg/torture/pr31579.C
! b2e08f7dfeca668db86cf581f9e9d893  gcc/testsuite/g++.dg/torture/pr31863.C
  2b9b21a174d22a50425b2e0f0538d74f  gcc/testsuite/g++.dg/torture/pr32304.C
  e9780c172c681062c7a2b35fc6317156  gcc/testsuite/g++.dg/torture/pr32563.C
  61a41127865c15f172eb94912777d1f6  gcc/testsuite/g++.dg/torture/pr32950.C
! a290e0d99d5d90235194f3576ea12cbe  gcc/testsuite/g++.dg/torture/pr33134.C
! e7e4b2dc9d1619f87f1e2e87f843e498  gcc/testsuite/g++.dg/torture/pr33340.C
  1ff9a441e72af794c225a9c8a66c5a14  gcc/testsuite/g++.dg/torture/pr33572.C
  2398667e5078f8e7f3b3ca7e16893791  gcc/testsuite/g++.dg/torture/pr33589-1.C
  49a9ebbf21acce6fcc392bc19ee94d44  gcc/testsuite/g++.dg/torture/pr33589-2.C
! d031e736766609d70f05c6a22b19ee44  gcc/testsuite/g++.dg/torture/pr33627.C
  a5cfb04004f59a611e1b6efa6796b3ca  gcc/testsuite/g++.dg/torture/pr33735.C
  efb566f0ac18dfe0860d475880f8bae3  gcc/testsuite/g++.dg/torture/pr33819.C
  d3c8ab54a210cf43bc90436168df7276  gcc/testsuite/g++.dg/torture/pr33887-1.C
  ac9b9ea255f72e7339eeaf103a832da5  gcc/testsuite/g++.dg/torture/pr33887-2.C
  537dd6ad14d9bd3e4fe18b40c792c0fa  gcc/testsuite/g++.dg/torture/pr33887-3.C
  746d247dbba7ad5322d6f842b465f70e  gcc/testsuite/g++.dg/torture/pr34099.C
! 1248abde88d3f7551bab7396c44ba034  gcc/testsuite/g++.dg/torture/pr34222.C
  a236f1d6b976dcdc6d96e37d197d8bba  gcc/testsuite/g++.dg/torture/pr34235.C
! 2f2bca9639982242f96213d55143fc90  gcc/testsuite/g++.dg/torture/pr34241.C
! aca35bc17de99bf227d0bc470b3dfff6  gcc/testsuite/g++.dg/torture/pr34641.C
  b4f36f5dd9e57a473980dae121c14b78  gcc/testsuite/g++.dg/torture/pr34651.C
! 5c9b581a3a5e5af7b9ee1b520e255519  gcc/testsuite/g++.dg/torture/pr34850.C
  85e911bb9e21255ea86be27fe65584a1  gcc/testsuite/g++.dg/torture/pr34953.C
! 6e26e84f00c6983f8cd03d80694067c3  gcc/testsuite/g++.dg/torture/pr35164-1.C
  d189c1337cd585db66672b0b6d7b9ff3  gcc/testsuite/g++.dg/torture/pr35164-2.C
  95e1ec333ba17743fc8ea464d26d4981  gcc/testsuite/g++.dg/torture/pr35400.C
  e33eadcaed926d8254fad85a797b2dde  gcc/testsuite/g++.dg/torture/pr35526.C
--- 19107,19136 ----
  ff110b3c564473b839e08fc2d962f439  gcc/testsuite/g++.dg/torture/pr31081-1.C
  9fd72fc7657b473f879f5e1dc5b4f59f  gcc/testsuite/g++.dg/torture/pr31081-2.C
  488a053995c3999b7064677484855aad  gcc/testsuite/g++.dg/torture/pr31579.C
! 561c6f6f3adeda10fb7e7e310171bbab  gcc/testsuite/g++.dg/torture/pr31863.C
  2b9b21a174d22a50425b2e0f0538d74f  gcc/testsuite/g++.dg/torture/pr32304.C
  e9780c172c681062c7a2b35fc6317156  gcc/testsuite/g++.dg/torture/pr32563.C
  61a41127865c15f172eb94912777d1f6  gcc/testsuite/g++.dg/torture/pr32950.C
! 8514fb7c00c97a04578fd24b093b0617  gcc/testsuite/g++.dg/torture/pr33134.C
! ac8b5a65cdb69dd227a5608cb6c4edff  gcc/testsuite/g++.dg/torture/pr33340.C
  1ff9a441e72af794c225a9c8a66c5a14  gcc/testsuite/g++.dg/torture/pr33572.C
  2398667e5078f8e7f3b3ca7e16893791  gcc/testsuite/g++.dg/torture/pr33589-1.C
  49a9ebbf21acce6fcc392bc19ee94d44  gcc/testsuite/g++.dg/torture/pr33589-2.C
! dbaf8ecef268838e14bab15f88365290  gcc/testsuite/g++.dg/torture/pr33627.C
  a5cfb04004f59a611e1b6efa6796b3ca  gcc/testsuite/g++.dg/torture/pr33735.C
  efb566f0ac18dfe0860d475880f8bae3  gcc/testsuite/g++.dg/torture/pr33819.C
  d3c8ab54a210cf43bc90436168df7276  gcc/testsuite/g++.dg/torture/pr33887-1.C
  ac9b9ea255f72e7339eeaf103a832da5  gcc/testsuite/g++.dg/torture/pr33887-2.C
  537dd6ad14d9bd3e4fe18b40c792c0fa  gcc/testsuite/g++.dg/torture/pr33887-3.C
  746d247dbba7ad5322d6f842b465f70e  gcc/testsuite/g++.dg/torture/pr34099.C
! 14c55feaed358b412b860a9e9092a6a0  gcc/testsuite/g++.dg/torture/pr34222.C
  a236f1d6b976dcdc6d96e37d197d8bba  gcc/testsuite/g++.dg/torture/pr34235.C
! 4d3937e73b843fa062f46a8e5db013c3  gcc/testsuite/g++.dg/torture/pr34241.C
! 1a999024715fd40eac594a7f4cfec76f  gcc/testsuite/g++.dg/torture/pr34641.C
  b4f36f5dd9e57a473980dae121c14b78  gcc/testsuite/g++.dg/torture/pr34651.C
! d8292884d33aee768bffb9ee8a14c361  gcc/testsuite/g++.dg/torture/pr34850.C
  85e911bb9e21255ea86be27fe65584a1  gcc/testsuite/g++.dg/torture/pr34953.C
! 5ed9cac836f27c61b211cf0002cc3911  gcc/testsuite/g++.dg/torture/pr35164-1.C
  d189c1337cd585db66672b0b6d7b9ff3  gcc/testsuite/g++.dg/torture/pr35164-2.C
  95e1ec333ba17743fc8ea464d26d4981  gcc/testsuite/g++.dg/torture/pr35400.C
  e33eadcaed926d8254fad85a797b2dde  gcc/testsuite/g++.dg/torture/pr35526.C
*************** e33eadcaed926d8254fad85a797b2dde  gcc/te
*** 18104,18110 ****
  99776ddbd6dfc9915d264bab7b74874a  gcc/testsuite/g++.dg/torture/pr36191.C
  f508d53acbdd768a7f71915a40a5c3e9  gcc/testsuite/g++.dg/torture/pr36444.C
  f117dae760330db0d2bea5b44a033809  gcc/testsuite/g++.dg/torture/pr36445.C
! c4279bb7a6bcdb12cdd78ead95cac2be  gcc/testsuite/g++.dg/torture/pr36745.C
  aecf9faf44d165086befbd3204383a10  gcc/testsuite/g++.dg/torture/pr36826.C
  c6a3b37eb5619ce18630ad425b920a56  gcc/testsuite/g++.dg/torture/pr36960.C
  a6f8a68c45819e14c2089195e56b5d01  gcc/testsuite/g++.dg/torture/pr37146-1.C
--- 19138,19144 ----
  99776ddbd6dfc9915d264bab7b74874a  gcc/testsuite/g++.dg/torture/pr36191.C
  f508d53acbdd768a7f71915a40a5c3e9  gcc/testsuite/g++.dg/torture/pr36444.C
  f117dae760330db0d2bea5b44a033809  gcc/testsuite/g++.dg/torture/pr36445.C
! 07388d4212d77cb542cb6ce5b52a3671  gcc/testsuite/g++.dg/torture/pr36745.C
  aecf9faf44d165086befbd3204383a10  gcc/testsuite/g++.dg/torture/pr36826.C
  c6a3b37eb5619ce18630ad425b920a56  gcc/testsuite/g++.dg/torture/pr36960.C
  a6f8a68c45819e14c2089195e56b5d01  gcc/testsuite/g++.dg/torture/pr37146-1.C
*************** ddcb713d149db91f8154d95a295da33d  gcc/te
*** 18117,18133 ****
  de29b40a08801f9b5e56f032d4682fb1  gcc/testsuite/g++.dg/torture/pr37716.C
  1ecbbaaa6e73ba832830eab989e19fa4  gcc/testsuite/g++.dg/torture/pr37922.C
  ede4fc5c3a3f3d90c072941dd1ff17b4  gcc/testsuite/g++.dg/torture/pr38565.C
! 3b157b9f50453a488b521cd22a937234  gcc/testsuite/g++.dg/torture/pr38705.C
  b40a32ddc241492f6a395ad16cd948ee  gcc/testsuite/g++.dg/torture/pr38745.C
  45aef0fb4191dc0ae2c98c11807df53f  gcc/testsuite/g++.dg/torture/pr38747.C
! 47f547029d2bafa168554e84ad1e90d8  gcc/testsuite/g++.dg/torture/pr38811.C
  1d870df7afc3c1bee9a83985d78555da  gcc/testsuite/g++.dg/torture/pr39002.C
  f9460d2eec98500885b88a6a391adc63  gcc/testsuite/g++.dg/torture/pr39259.C
! 7a7d4fdd194a332098063082ee958521  gcc/testsuite/g++.dg/torture/pr39362.C
  232e15df51e39649346853a5c935ff90  gcc/testsuite/g++.dg/torture/pr39417.C
  505f48097bb932b0861f32000e2c985b  gcc/testsuite/g++.dg/torture/pr39678.C
  d85efea6bf5e227cbfe01031a191490d  gcc/testsuite/g++.dg/torture/pr39713.C
! 1e46ddf740ca05bc22d7fd614345806c  gcc/testsuite/g++.dg/torture/pr39732.C
  eaa64cc3e3ed3a9b485164b7d1cd003d  gcc/testsuite/g++.dg/torture/pr39764.C
  9265a4787d0dba10e523b64f6fd63bb2  gcc/testsuite/g++.dg/torture/pr40081.C
  a55ede92712e943c1fcea56c7943cd1d  gcc/testsuite/g++.dg/torture/pr40102.C
--- 19151,19167 ----
  de29b40a08801f9b5e56f032d4682fb1  gcc/testsuite/g++.dg/torture/pr37716.C
  1ecbbaaa6e73ba832830eab989e19fa4  gcc/testsuite/g++.dg/torture/pr37922.C
  ede4fc5c3a3f3d90c072941dd1ff17b4  gcc/testsuite/g++.dg/torture/pr38565.C
! 98e792e2344a5764f6887424d4977338  gcc/testsuite/g++.dg/torture/pr38705.C
  b40a32ddc241492f6a395ad16cd948ee  gcc/testsuite/g++.dg/torture/pr38745.C
  45aef0fb4191dc0ae2c98c11807df53f  gcc/testsuite/g++.dg/torture/pr38747.C
! 227eb16eea8fc231770a13304ff271fb  gcc/testsuite/g++.dg/torture/pr38811.C
  1d870df7afc3c1bee9a83985d78555da  gcc/testsuite/g++.dg/torture/pr39002.C
  f9460d2eec98500885b88a6a391adc63  gcc/testsuite/g++.dg/torture/pr39259.C
! b23e406253f16e513278f5f78c136f2d  gcc/testsuite/g++.dg/torture/pr39362.C
  232e15df51e39649346853a5c935ff90  gcc/testsuite/g++.dg/torture/pr39417.C
  505f48097bb932b0861f32000e2c985b  gcc/testsuite/g++.dg/torture/pr39678.C
  d85efea6bf5e227cbfe01031a191490d  gcc/testsuite/g++.dg/torture/pr39713.C
! 2c3695433a8680532f4cb19853a6f738  gcc/testsuite/g++.dg/torture/pr39732.C
  eaa64cc3e3ed3a9b485164b7d1cd003d  gcc/testsuite/g++.dg/torture/pr39764.C
  9265a4787d0dba10e523b64f6fd63bb2  gcc/testsuite/g++.dg/torture/pr40081.C
  a55ede92712e943c1fcea56c7943cd1d  gcc/testsuite/g++.dg/torture/pr40102.C
*************** b6de7aac61c5d7ce80cf371bebc02c8a  gcc/te
*** 18141,18147 ****
  2014a44a47c32b0a108fb3a11ffb57d3  gcc/testsuite/g++.dg/torture/pr40642.C
  91e7beb2ed0c5925d2d5b5b4bf37f40f  gcc/testsuite/g++.dg/torture/pr40834.C
  fa014de9d87f4833c5c4020ce1b29d2f  gcc/testsuite/g++.dg/torture/pr40924.C
! 3d9da63278b38033f55230ad5c32d62f  gcc/testsuite/g++.dg/torture/pr40991.C
  8891afbc518a1af478d823bddfecbe7a  gcc/testsuite/g++.dg/torture/pr41144.C
  f28f286c697e103cd07cfc388614a22f  gcc/testsuite/g++.dg/torture/pr41183.C
  9a4c30ad05a6c9428a3e66a4527ee68a  gcc/testsuite/g++.dg/torture/pr41186.C
--- 19175,19181 ----
  2014a44a47c32b0a108fb3a11ffb57d3  gcc/testsuite/g++.dg/torture/pr40642.C
  91e7beb2ed0c5925d2d5b5b4bf37f40f  gcc/testsuite/g++.dg/torture/pr40834.C
  fa014de9d87f4833c5c4020ce1b29d2f  gcc/testsuite/g++.dg/torture/pr40924.C
! 9de1cbb6e777ff829c2cff3f290f8d27  gcc/testsuite/g++.dg/torture/pr40991.C
  8891afbc518a1af478d823bddfecbe7a  gcc/testsuite/g++.dg/torture/pr41144.C
  f28f286c697e103cd07cfc388614a22f  gcc/testsuite/g++.dg/torture/pr41183.C
  9a4c30ad05a6c9428a3e66a4527ee68a  gcc/testsuite/g++.dg/torture/pr41186.C
*************** f28f286c697e103cd07cfc388614a22f  gcc/te
*** 18149,18298 ****
  b2bf0f9adca2bf600320f6fbc03908cd  gcc/testsuite/g++.dg/torture/pr41257.C
  9f12519b907a84c635fb7ea8fb8fa7ba  gcc/testsuite/g++.dg/torture/pr41273.C
  e8f19401702ff3d3395f9dcdc0536e04  gcc/testsuite/g++.dg/torture/pr41680.C
! b2d53f4aa50404a2e6c3d51d0a0213f1  gcc/testsuite/g++.dg/torture/pr41775.C
  6288fd3a3bd0bd1724da11910b425047  gcc/testsuite/g++.dg/torture/pr42110.C
! 2a7843fc7360185d8c597e00ef02ddcb  gcc/testsuite/g++.dg/torture/pr42183.C
  b10e8543fb804e02bf658bba9b63a306  gcc/testsuite/g++.dg/torture/pr42357.C
! 375f3e5695d27b3a597504372a44228d  gcc/testsuite/g++.dg/torture/pr42450.C
! caab81fe664970346251ad3c65b46250  gcc/testsuite/g++.dg/torture/pr42462.C
! 8ae9715087d7da846f7a2004a5305eef  gcc/testsuite/g++.dg/torture/pr42704.C
  6faa0f1bae4672d5d1fe30b02b392da8  gcc/testsuite/g++.dg/torture/pr42714.C
! 94167fe7caf3f0a098eb425cde1ee709  gcc/testsuite/g++.dg/torture/pr42739.C
! 43953aa4786b2f0d157a0429e79efabb  gcc/testsuite/g++.dg/torture/pr42760.C
! eb50f7b8b6b7679ccdd519260c76e1ce  gcc/testsuite/g++.dg/torture/pr42773.C
  257b8de487b284f4945c33c7fad65d8f  gcc/testsuite/g++.dg/torture/pr42871.C
! 7c1f383ab4432a06607142b166406844  gcc/testsuite/g++.dg/torture/pr42883.C
  7ed9e7f486e83f1d5786530f3058eef7  gcc/testsuite/g++.dg/torture/pr42890.C
  dd22df6fbe8eea710f762c4b9dc3234b  gcc/testsuite/g++.dg/torture/pr43068.C
! 3109f22b098cf163176faafc44391d82  gcc/testsuite/g++.dg/torture/pr43257.C
  aa78ba484148219421767f1d48d903dd  gcc/testsuite/g++.dg/torture/pr43611.C
  a10bc7d2d87e38cc8e88038e0261fc91  gcc/testsuite/g++.dg/torture/pr43784.C
  5ced4cff38d39e92cfb56362caf09160  gcc/testsuite/g++.dg/torture/pr43801.C
  a9183140f924e2b97b58b04769243a15  gcc/testsuite/g++.dg/torture/pr43879-1_0.C
  1140055e1a01f12b51cb9cef67e2eea9  gcc/testsuite/g++.dg/torture/pr43879-1_1.C
  0650ab33848f1eeedb9db8979d4c0b54  gcc/testsuite/g++.dg/torture/pr43880.C
! 2eec4865fde837c6c43e5ba276e57cb6  gcc/testsuite/g++.dg/torture/pr43905.C
  2719444d1d7a7d86ae85daae86a66833  gcc/testsuite/g++.dg/torture/pr44069.C
! e5fc7e96fce391069c98fe8b6a6e48eb  gcc/testsuite/g++.dg/torture/pr44148.C
  21914f1786b649768c65385d18cbda0c  gcc/testsuite/g++.dg/torture/pr44206.C
! 61a1cfe01bbf4dc4b73d344cd112a208  gcc/testsuite/g++.dg/torture/pr44295.C
! 7063a1d0e2e7d10ebad128af0ec171f1  gcc/testsuite/g++.dg/torture/pr44357.C
  1be5987e0648f5a325798384c799425c  gcc/testsuite/g++.dg/torture/pr44492.C
  a33cbb24fc74fe5e413c5ca21e00db9d  gcc/testsuite/g++.dg/torture/pr44535.C
  b40bbd38e5725b10a9230bce491b9b0c  gcc/testsuite/g++.dg/torture/pr44809.C
! d014fa87d832e14e180ee69b18e48f61  gcc/testsuite/g++.dg/torture/pr44813.C
  e5466946d96ec5f4b66f422d588cbd27  gcc/testsuite/g++.dg/torture/pr44826.C
  80fcfe9886663365f369187444388b20  gcc/testsuite/g++.dg/torture/pr44900.C
  dc744dc373dfd8c3c33963f78a643762  gcc/testsuite/g++.dg/torture/pr44915.C
  9fdafaff42cd2c762720eba07a457ce9  gcc/testsuite/g++.dg/torture/pr44972.C
  f330bdf5883a6d3381a5cd9e818fa037  gcc/testsuite/g++.dg/torture/pr45393.C
! 28c59a9000661e55c1d825c6c3e4cea7  gcc/testsuite/g++.dg/torture/pr45580.C
  8522ec70c8ce30caf355cc42899c3552  gcc/testsuite/g++.dg/torture/pr45699.C
  172ba6975c5550b7f36f1bb6ee577c98  gcc/testsuite/g++.dg/torture/pr45709-2.C
  3602e5f346573cec2da3e7ddcadb3fb7  gcc/testsuite/g++.dg/torture/pr45709.C
  899aff880eda02736daf5cd753f86d9a  gcc/testsuite/g++.dg/torture/pr45843.C
  68f9b4757da40ed02486f2296a081c7d  gcc/testsuite/g++.dg/torture/pr45854.C
! b3525a9984f80b9df4cf0385e6a84e16  gcc/testsuite/g++.dg/torture/pr45874.C
  c635c5a94fbb9eab57437a32a25cbe1a  gcc/testsuite/g++.dg/torture/pr45875.C
! ac70bfaeac2de9969633388552b48e28  gcc/testsuite/g++.dg/torture/pr45877.C
  2277fc1457feb3eb95e1d4868983fd02  gcc/testsuite/g++.dg/torture/pr45934.C
  ddc7d43b0451e3b3394574ac366e5622  gcc/testsuite/g++.dg/torture/pr46111.C
  02d684eb83ab100608e69960f657a0e0  gcc/testsuite/g++.dg/torture/pr46149.C
  5291edcd81854b99025f2cc89d71cd8d  gcc/testsuite/g++.dg/torture/pr46154.C
  53103bc6b95cbce9b824c821ba63074f  gcc/testsuite/g++.dg/torture/pr46287.C
! 73efed79c2116d2f1daf56bccd343039  gcc/testsuite/g++.dg/torture/pr46364.C
  e798c66b9b0abf667d1ffe31c31394e5  gcc/testsuite/g++.dg/torture/pr46367.C
! bd41a0d69702bd409bea64d3708ced32  gcc/testsuite/g++.dg/torture/pr46383.C
! a6bc67c38bd73046f786653410036b69  gcc/testsuite/g++.dg/torture/pr46469.C
  5dde3d0578e1439d9d3996d53c5837d5  gcc/testsuite/g++.dg/torture/pr47290.C
! e87bebc595a173e1bb72705b26424cba  gcc/testsuite/g++.dg/torture/pr47313.C
  c2620174c12bbff392c51fb1170c0929  gcc/testsuite/g++.dg/torture/pr47382.C
  2875f29910a1c9fceb2c3abacae94988  gcc/testsuite/g++.dg/torture/pr47541.C
  76848843bf5ed9a6d83a170499d76c64  gcc/testsuite/g++.dg/torture/pr47559.C
  70a176c24f3b9e0ed32161bafd163296  gcc/testsuite/g++.dg/torture/pr47714.C
  e01f63077b5ff221c0cf9cc6d814eb33  gcc/testsuite/g++.dg/torture/pr48165.C
! 2acf161e9b04da4e5f78391fffbd6c85  gcc/testsuite/g++.dg/torture/pr48271.C
  18613acec96a26174e1888e6b7290966  gcc/testsuite/g++.dg/torture/pr48600.C
  db620ec233982ee1836c3317fec0f45d  gcc/testsuite/g++.dg/torture/pr48661.C
! 4d9b3aec8dc1acddc3c78be118c41e0e  gcc/testsuite/g++.dg/torture/pr48695.C
  9f37a6cceabc57b93082714e5a4d2035  gcc/testsuite/g++.dg/torture/pr48954.C
  66f4e88fb15a5c2f5a4fc2d591edff41  gcc/testsuite/g++.dg/torture/pr49039.C
  8fb5fa994e892c2497eac146b34e663e  gcc/testsuite/g++.dg/torture/pr49115.C
! 2a46d4065c6a86d478019e63ea806a71  gcc/testsuite/g++.dg/torture/pr49394.C
  cffdc9798a9b714a7acb5448aee49c12  gcc/testsuite/g++.dg/torture/pr49519.C
! 6aad70b4e5ba908ab559e27d7d2bbb1d  gcc/testsuite/g++.dg/torture/pr49615.C
  0a508430aa4eff5b532a237388ea0851  gcc/testsuite/g++.dg/torture/pr49628.C
  70ba1d6e65ff77ad5205e068917704ba  gcc/testsuite/g++.dg/torture/pr49644.C
  7dd611bbf63323f0b35b857a27dd4dfc  gcc/testsuite/g++.dg/torture/pr49720.C
! 374781f86513ddd0daa15d78044d857a  gcc/testsuite/g++.dg/torture/pr49770.C
! 54ddb94a512d7930a48a4b9d5a95550e  gcc/testsuite/g++.dg/torture/pr49938.C
  5c00c9b8fdccd7fc9f1cbaf152f74745  gcc/testsuite/g++.dg/torture/pr50189.C
  ce1cdfddb6a49b62f6948eebbab0fa93  gcc/testsuite/g++.dg/torture/pr50672.C
  ee8375d5f72145ceeddc40d924396c8f  gcc/testsuite/g++.dg/torture/pr51198.C
  20a6ffa4067b26d2c7eb5f5389c68cf6  gcc/testsuite/g++.dg/torture/pr51344.C
! a260742c7fd002f605f8512fd1e34f61  gcc/testsuite/g++.dg/torture/pr51436.C
! 253ba988a417d329d833e9f87272dfb8  gcc/testsuite/g++.dg/torture/pr51482.C
  cde8ed97b7e6c3d7806a00c88c273ad4  gcc/testsuite/g++.dg/torture/pr51600.C
! d0c1a107c018be9727f2704fb67a0298  gcc/testsuite/g++.dg/torture/pr51737.C
  c26e5af08201d96e59522545f827c5f6  gcc/testsuite/g++.dg/torture/pr51903.C
! fdbc45a1874d5e29ddb341f395fab8d3  gcc/testsuite/g++.dg/torture/pr51959.C
  cd96fe61efcf38e530d000644545eb65  gcc/testsuite/g++.dg/torture/pr52582.C
  03a3dc586d0df58e2804f83d50c76c21  gcc/testsuite/g++.dg/torture/pr52638.C
! 15ec0b1c30622d0b9973cda693d17469  gcc/testsuite/g++.dg/torture/pr52772.C
! c2bd69774a96419e8769c2d302ebe3ea  gcc/testsuite/g++.dg/torture/pr52918-1.C
! 8a3a69da710faa57631f70b9ac3bf019  gcc/testsuite/g++.dg/torture/pr52918-2.C
! cbcadbc30cc238fb12a5bc2e1f08a285  gcc/testsuite/g++.dg/torture/pr53011.C
  55c501ac19211307c197522e56c8015c  gcc/testsuite/g++.dg/torture/pr53085.C
  f78c290cd93810760d7c42ec15fba75b  gcc/testsuite/g++.dg/torture/pr53161.C
  5468badf348c7b9460f2b6b80ef1ff99  gcc/testsuite/g++.dg/torture/pr53321.C
  d599ebf8031516ce985dd3ae65bd8b97  gcc/testsuite/g++.dg/torture/pr53336.C
  f6aef73358d7ae2e3102160fa47a97c9  gcc/testsuite/g++.dg/torture/pr53364.C
! b8f2cf4dbe33be3bb77d9ebf24ca264e  gcc/testsuite/g++.dg/torture/pr53602.C
  9a98404f2bdaa970f43c1300bb87cc27  gcc/testsuite/g++.dg/torture/pr53693.C
! 16bea23af67221b5b9ae63c61dcfbb3a  gcc/testsuite/g++.dg/torture/pr53752.C
  fbe94bcf48ad5e7374ea220cc3ae42c0  gcc/testsuite/g++.dg/torture/pr53970.C
  223cbe0817bf9dd882b64bfda782f806  gcc/testsuite/g++.dg/torture/pr54563.C
  dc106f856185dd3ee7cfdb5a86571091  gcc/testsuite/g++.dg/torture/pr54647.C
! 12c6b8c9cdc4dd7505e93ef52c81b936  gcc/testsuite/g++.dg/torture/pr54684.C
  bc202d330bb84df550bb0522780984e0  gcc/testsuite/g++.dg/torture/pr54735.C
! f567a9b738b1f9361d41a630cb3a201f  gcc/testsuite/g++.dg/torture/pr54838.C
! 408a748c38d402106bb0c603193ee7e6  gcc/testsuite/g++.dg/torture/pr54902.C
  53c65341ae2385c2ebc4b26fd454cc44  gcc/testsuite/g++.dg/torture/pr55260-1.C
  519a40ca79bffb405b64d395bbacd3ba  gcc/testsuite/g++.dg/torture/pr55260-2.C
  d3a0f6dba851a15d2e1af60c71fda9fc  gcc/testsuite/g++.dg/torture/pr55355.C
! d2ba89f2ad99834f4a4f2806a0939114  gcc/testsuite/g++.dg/torture/pr55740.C
  6cc0176aadaadb85c8233f256edc49a5  gcc/testsuite/g++.dg/torture/pr55789.C
  56c1bd4cd1de38938583ed3424614e30  gcc/testsuite/g++.dg/torture/pr55875.C
! f6ad5ca12221c31c38de91ed0cb1ac5b  gcc/testsuite/g++.dg/torture/pr56029.C
  456399559d0915f5e079dd28fae8a740  gcc/testsuite/g++.dg/torture/pr56302.C
  dbac6bd03009706a9c22e39f20c12296  gcc/testsuite/g++.dg/torture/pr56398.C
  623e4675e1028b5a86de81a84ced39e5  gcc/testsuite/g++.dg/torture/pr56403.C
  e89f1c8379e462d6700cbd10ca024539  gcc/testsuite/g++.dg/torture/pr56635.C
! 3b3b391f3cc230575b20a64dc6a1555e  gcc/testsuite/g++.dg/torture/pr56694.C
! f9035d95e3a4d25bf372dccc2aebea06  gcc/testsuite/g++.dg/torture/pr56768.C
  fe66aa54712cb20fed5ebb73157c6c9b  gcc/testsuite/g++.dg/torture/pr56817.C
  8a7d86131908cdb65be662a8ab125bb0  gcc/testsuite/g++.dg/torture/pr56837.C
  e98948443ddbeeb525e86474cba062c6  gcc/testsuite/g++.dg/torture/pr56854.C
! 397e326ce730ec59e37411b6738a00f4  gcc/testsuite/g++.dg/torture/pr57107.C
! c4915b14f78d4a30d538c7d375b59011  gcc/testsuite/g++.dg/torture/pr57140.C
! aba933e0431c006477b4f5d14adaad55  gcc/testsuite/g++.dg/torture/pr57190.C
! 5d4696210540a213c561c17661077cf3  gcc/testsuite/g++.dg/torture/pr57235.C
  f57dc8a39ba283ab87221e83f802be5a  gcc/testsuite/g++.dg/torture/pr57499.C
  5dc530d4fc0332bbb42d6d5c5c47a692  gcc/testsuite/g++.dg/torture/pr58201.h
  1f56a692b545bbff0314a6e3861e243e  gcc/testsuite/g++.dg/torture/pr58201_0.C
  af1ff8fa6013e1d4ae4758b7461f737e  gcc/testsuite/g++.dg/torture/pr58201_1.C
! 1c2732f07b2d1596e0afb51e20cffdcd  gcc/testsuite/g++.dg/torture/pr58252.C
! 02fb684462ac3e57497090f25742a61b  gcc/testsuite/g++.dg/torture/pr58369.C
  0beeff4e8bd02953482f92d8ad4f242e  gcc/testsuite/g++.dg/torture/pr58380.C
  a3e67cbbb6404b1b7479dade4457c170  gcc/testsuite/g++.dg/torture/pr58464.C
  4febf0cd6a102e583e1b0f4faeb2f939  gcc/testsuite/g++.dg/torture/pr58552.C
! 6966406e929cb33ef2cd6a3471cf58ad  gcc/testsuite/g++.dg/torture/pr58555.C
  52c2593086f27fcd55a01d4bf97b4d53  gcc/testsuite/g++.dg/torture/pr58585.C
  20f86b01bbea5b4795e1e12cf98b140c  gcc/testsuite/g++.dg/torture/pr59163.C
! c3d221fd96e409fb8ae61b1c606d1581  gcc/testsuite/g++.dg/torture/pr59208.C
  deb5be16005eb806e56fb201a4e0bf1b  gcc/testsuite/g++.dg/torture/pr59226.C
  fb4c270709e3db75e6204359c7e90f57  gcc/testsuite/g++.dg/torture/pr59240.C
! abbf000451fc55c1015d04d87cdbfdff  gcc/testsuite/g++.dg/torture/pr59265.C
  868211466d72a29843e2c167f3ba0912  gcc/testsuite/g++.dg/torture/pr59775.C
  59d4e20857451d2cff606095fd194b51  gcc/testsuite/g++.dg/torture/pr59822.C
  83bfb691b62368534ab513de1a1a3092  gcc/testsuite/g++.dg/torture/pr59882.C
--- 19183,19332 ----
  b2bf0f9adca2bf600320f6fbc03908cd  gcc/testsuite/g++.dg/torture/pr41257.C
  9f12519b907a84c635fb7ea8fb8fa7ba  gcc/testsuite/g++.dg/torture/pr41273.C
  e8f19401702ff3d3395f9dcdc0536e04  gcc/testsuite/g++.dg/torture/pr41680.C
! e7646585fe2cc912e9f5f65fdfc9e4d8  gcc/testsuite/g++.dg/torture/pr41775.C
  6288fd3a3bd0bd1724da11910b425047  gcc/testsuite/g++.dg/torture/pr42110.C
! a76d376154baf11925912d1330ee3ba2  gcc/testsuite/g++.dg/torture/pr42183.C
  b10e8543fb804e02bf658bba9b63a306  gcc/testsuite/g++.dg/torture/pr42357.C
! 56e5224117a0af84f2f148588ed9105e  gcc/testsuite/g++.dg/torture/pr42450.C
! fe69eb838dd960b5ad751704e6f2554e  gcc/testsuite/g++.dg/torture/pr42462.C
! a2856923f132c423c786960d31eac266  gcc/testsuite/g++.dg/torture/pr42704.C
  6faa0f1bae4672d5d1fe30b02b392da8  gcc/testsuite/g++.dg/torture/pr42714.C
! 5ef17fa6c8e10830f6c803535061f6db  gcc/testsuite/g++.dg/torture/pr42739.C
! 38594de25b9c7fc7cd3f4bf0375a8129  gcc/testsuite/g++.dg/torture/pr42760.C
! abe8cf158edc335890aef2f66a522687  gcc/testsuite/g++.dg/torture/pr42773.C
  257b8de487b284f4945c33c7fad65d8f  gcc/testsuite/g++.dg/torture/pr42871.C
! f2cb9565ab0fe2ba06d540f1b944f9db  gcc/testsuite/g++.dg/torture/pr42883.C
  7ed9e7f486e83f1d5786530f3058eef7  gcc/testsuite/g++.dg/torture/pr42890.C
  dd22df6fbe8eea710f762c4b9dc3234b  gcc/testsuite/g++.dg/torture/pr43068.C
! 22cdb103b5458bda88c23ee2de10b678  gcc/testsuite/g++.dg/torture/pr43257.C
  aa78ba484148219421767f1d48d903dd  gcc/testsuite/g++.dg/torture/pr43611.C
  a10bc7d2d87e38cc8e88038e0261fc91  gcc/testsuite/g++.dg/torture/pr43784.C
  5ced4cff38d39e92cfb56362caf09160  gcc/testsuite/g++.dg/torture/pr43801.C
  a9183140f924e2b97b58b04769243a15  gcc/testsuite/g++.dg/torture/pr43879-1_0.C
  1140055e1a01f12b51cb9cef67e2eea9  gcc/testsuite/g++.dg/torture/pr43879-1_1.C
  0650ab33848f1eeedb9db8979d4c0b54  gcc/testsuite/g++.dg/torture/pr43880.C
! 942907500f513b82a003a18ee9a0e1c4  gcc/testsuite/g++.dg/torture/pr43905.C
  2719444d1d7a7d86ae85daae86a66833  gcc/testsuite/g++.dg/torture/pr44069.C
! 51a404c1bc2e12e847a9b9b4f999beaf  gcc/testsuite/g++.dg/torture/pr44148.C
  21914f1786b649768c65385d18cbda0c  gcc/testsuite/g++.dg/torture/pr44206.C
! 6739ba360579b4ffaebbc8650a682f30  gcc/testsuite/g++.dg/torture/pr44295.C
! e8db66797b1b16f99dde58d940f0e56b  gcc/testsuite/g++.dg/torture/pr44357.C
  1be5987e0648f5a325798384c799425c  gcc/testsuite/g++.dg/torture/pr44492.C
  a33cbb24fc74fe5e413c5ca21e00db9d  gcc/testsuite/g++.dg/torture/pr44535.C
  b40bbd38e5725b10a9230bce491b9b0c  gcc/testsuite/g++.dg/torture/pr44809.C
! 08a40387ed373d0d1868044e9503df04  gcc/testsuite/g++.dg/torture/pr44813.C
  e5466946d96ec5f4b66f422d588cbd27  gcc/testsuite/g++.dg/torture/pr44826.C
  80fcfe9886663365f369187444388b20  gcc/testsuite/g++.dg/torture/pr44900.C
  dc744dc373dfd8c3c33963f78a643762  gcc/testsuite/g++.dg/torture/pr44915.C
  9fdafaff42cd2c762720eba07a457ce9  gcc/testsuite/g++.dg/torture/pr44972.C
  f330bdf5883a6d3381a5cd9e818fa037  gcc/testsuite/g++.dg/torture/pr45393.C
! 79b3c30791ea89fbaab5c00801b2c126  gcc/testsuite/g++.dg/torture/pr45580.C
  8522ec70c8ce30caf355cc42899c3552  gcc/testsuite/g++.dg/torture/pr45699.C
  172ba6975c5550b7f36f1bb6ee577c98  gcc/testsuite/g++.dg/torture/pr45709-2.C
  3602e5f346573cec2da3e7ddcadb3fb7  gcc/testsuite/g++.dg/torture/pr45709.C
  899aff880eda02736daf5cd753f86d9a  gcc/testsuite/g++.dg/torture/pr45843.C
  68f9b4757da40ed02486f2296a081c7d  gcc/testsuite/g++.dg/torture/pr45854.C
! 0f5b24630e92be54b5b6f93f397ab7d6  gcc/testsuite/g++.dg/torture/pr45874.C
  c635c5a94fbb9eab57437a32a25cbe1a  gcc/testsuite/g++.dg/torture/pr45875.C
! cef649d1be319f43025467eec40fc52d  gcc/testsuite/g++.dg/torture/pr45877.C
  2277fc1457feb3eb95e1d4868983fd02  gcc/testsuite/g++.dg/torture/pr45934.C
  ddc7d43b0451e3b3394574ac366e5622  gcc/testsuite/g++.dg/torture/pr46111.C
  02d684eb83ab100608e69960f657a0e0  gcc/testsuite/g++.dg/torture/pr46149.C
  5291edcd81854b99025f2cc89d71cd8d  gcc/testsuite/g++.dg/torture/pr46154.C
  53103bc6b95cbce9b824c821ba63074f  gcc/testsuite/g++.dg/torture/pr46287.C
! 641b97c1e34594ce5d7fa2536628ddf0  gcc/testsuite/g++.dg/torture/pr46364.C
  e798c66b9b0abf667d1ffe31c31394e5  gcc/testsuite/g++.dg/torture/pr46367.C
! 9a5575ce7a07d7deb12c30aa2cd009f0  gcc/testsuite/g++.dg/torture/pr46383.C
! bb9d7276700bae19865678a9e9faff24  gcc/testsuite/g++.dg/torture/pr46469.C
  5dde3d0578e1439d9d3996d53c5837d5  gcc/testsuite/g++.dg/torture/pr47290.C
! d7405396eb2a53d9ca62c35764221977  gcc/testsuite/g++.dg/torture/pr47313.C
  c2620174c12bbff392c51fb1170c0929  gcc/testsuite/g++.dg/torture/pr47382.C
  2875f29910a1c9fceb2c3abacae94988  gcc/testsuite/g++.dg/torture/pr47541.C
  76848843bf5ed9a6d83a170499d76c64  gcc/testsuite/g++.dg/torture/pr47559.C
  70a176c24f3b9e0ed32161bafd163296  gcc/testsuite/g++.dg/torture/pr47714.C
  e01f63077b5ff221c0cf9cc6d814eb33  gcc/testsuite/g++.dg/torture/pr48165.C
! 236190cb99c42189a89d66399d254d34  gcc/testsuite/g++.dg/torture/pr48271.C
  18613acec96a26174e1888e6b7290966  gcc/testsuite/g++.dg/torture/pr48600.C
  db620ec233982ee1836c3317fec0f45d  gcc/testsuite/g++.dg/torture/pr48661.C
! a19a960df4a90e813925ed2bffee64b3  gcc/testsuite/g++.dg/torture/pr48695.C
  9f37a6cceabc57b93082714e5a4d2035  gcc/testsuite/g++.dg/torture/pr48954.C
  66f4e88fb15a5c2f5a4fc2d591edff41  gcc/testsuite/g++.dg/torture/pr49039.C
  8fb5fa994e892c2497eac146b34e663e  gcc/testsuite/g++.dg/torture/pr49115.C
! 197f855365db53ac8050ee3269d32855  gcc/testsuite/g++.dg/torture/pr49394.C
  cffdc9798a9b714a7acb5448aee49c12  gcc/testsuite/g++.dg/torture/pr49519.C
! fb6d1315d0bb0a6ecaaa982300921ad0  gcc/testsuite/g++.dg/torture/pr49615.C
  0a508430aa4eff5b532a237388ea0851  gcc/testsuite/g++.dg/torture/pr49628.C
  70ba1d6e65ff77ad5205e068917704ba  gcc/testsuite/g++.dg/torture/pr49644.C
  7dd611bbf63323f0b35b857a27dd4dfc  gcc/testsuite/g++.dg/torture/pr49720.C
! ffecf18f597b8141390a450ec0253f1b  gcc/testsuite/g++.dg/torture/pr49770.C
! 5076fcca9e6633afe1eeea93bfaf817d  gcc/testsuite/g++.dg/torture/pr49938.C
  5c00c9b8fdccd7fc9f1cbaf152f74745  gcc/testsuite/g++.dg/torture/pr50189.C
  ce1cdfddb6a49b62f6948eebbab0fa93  gcc/testsuite/g++.dg/torture/pr50672.C
  ee8375d5f72145ceeddc40d924396c8f  gcc/testsuite/g++.dg/torture/pr51198.C
  20a6ffa4067b26d2c7eb5f5389c68cf6  gcc/testsuite/g++.dg/torture/pr51344.C
! f12a51ed402174a6e7f165aae6f052d9  gcc/testsuite/g++.dg/torture/pr51436.C
! 1e766e36197d15cc741b6e608eefb0e2  gcc/testsuite/g++.dg/torture/pr51482.C
  cde8ed97b7e6c3d7806a00c88c273ad4  gcc/testsuite/g++.dg/torture/pr51600.C
! b6fc13d45ec068ac13fe83d71ab6e393  gcc/testsuite/g++.dg/torture/pr51737.C
  c26e5af08201d96e59522545f827c5f6  gcc/testsuite/g++.dg/torture/pr51903.C
! 0c5c9eb265d682d5c807c0e2ce37756a  gcc/testsuite/g++.dg/torture/pr51959.C
  cd96fe61efcf38e530d000644545eb65  gcc/testsuite/g++.dg/torture/pr52582.C
  03a3dc586d0df58e2804f83d50c76c21  gcc/testsuite/g++.dg/torture/pr52638.C
! 9434f1eed765762e536f5fdf9062ce32  gcc/testsuite/g++.dg/torture/pr52772.C
! b7503f914d3436dcdaaf344e1940b1b5  gcc/testsuite/g++.dg/torture/pr52918-1.C
! 2be4ddcc65ee994b819739a0de2a4afd  gcc/testsuite/g++.dg/torture/pr52918-2.C
! 7f6ff00dfa09ce044d557f7f8514d095  gcc/testsuite/g++.dg/torture/pr53011.C
  55c501ac19211307c197522e56c8015c  gcc/testsuite/g++.dg/torture/pr53085.C
  f78c290cd93810760d7c42ec15fba75b  gcc/testsuite/g++.dg/torture/pr53161.C
  5468badf348c7b9460f2b6b80ef1ff99  gcc/testsuite/g++.dg/torture/pr53321.C
  d599ebf8031516ce985dd3ae65bd8b97  gcc/testsuite/g++.dg/torture/pr53336.C
  f6aef73358d7ae2e3102160fa47a97c9  gcc/testsuite/g++.dg/torture/pr53364.C
! 9971c44b1b5cb3b0d2ac016a6d368504  gcc/testsuite/g++.dg/torture/pr53602.C
  9a98404f2bdaa970f43c1300bb87cc27  gcc/testsuite/g++.dg/torture/pr53693.C
! 2451bd65177ebf8e21cce668d860960b  gcc/testsuite/g++.dg/torture/pr53752.C
  fbe94bcf48ad5e7374ea220cc3ae42c0  gcc/testsuite/g++.dg/torture/pr53970.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
  bc202d330bb84df550bb0522780984e0  gcc/testsuite/g++.dg/torture/pr54735.C
! f5888585c2eb141c2b505968b41cc02b  gcc/testsuite/g++.dg/torture/pr54838.C
! bcd076e1e29ffe2a0707d7ff61cdfd27  gcc/testsuite/g++.dg/torture/pr54902.C
  53c65341ae2385c2ebc4b26fd454cc44  gcc/testsuite/g++.dg/torture/pr55260-1.C
  519a40ca79bffb405b64d395bbacd3ba  gcc/testsuite/g++.dg/torture/pr55260-2.C
  d3a0f6dba851a15d2e1af60c71fda9fc  gcc/testsuite/g++.dg/torture/pr55355.C
! eb06428d4535c0dc5d6540273bfdd44b  gcc/testsuite/g++.dg/torture/pr55740.C
  6cc0176aadaadb85c8233f256edc49a5  gcc/testsuite/g++.dg/torture/pr55789.C
  56c1bd4cd1de38938583ed3424614e30  gcc/testsuite/g++.dg/torture/pr55875.C
! 49f7b9fe95ab78a834e950d9f0f242e0  gcc/testsuite/g++.dg/torture/pr56029.C
  456399559d0915f5e079dd28fae8a740  gcc/testsuite/g++.dg/torture/pr56302.C
  dbac6bd03009706a9c22e39f20c12296  gcc/testsuite/g++.dg/torture/pr56398.C
  623e4675e1028b5a86de81a84ced39e5  gcc/testsuite/g++.dg/torture/pr56403.C
  e89f1c8379e462d6700cbd10ca024539  gcc/testsuite/g++.dg/torture/pr56635.C
! 0f5d3d683aea7fa6cbf4be3be34bf92f  gcc/testsuite/g++.dg/torture/pr56694.C
! 550a5626dfedcc32df19ca836504d0f9  gcc/testsuite/g++.dg/torture/pr56768.C
  fe66aa54712cb20fed5ebb73157c6c9b  gcc/testsuite/g++.dg/torture/pr56817.C
  8a7d86131908cdb65be662a8ab125bb0  gcc/testsuite/g++.dg/torture/pr56837.C
  e98948443ddbeeb525e86474cba062c6  gcc/testsuite/g++.dg/torture/pr56854.C
! 68f1da0a0ed8bc6641d122ae3061fca4  gcc/testsuite/g++.dg/torture/pr57107.C
! 8ec0c6ba21e797b89a0952a8859eb82d  gcc/testsuite/g++.dg/torture/pr57140.C
! fea25c3d92bc951c5129b640f68807a3  gcc/testsuite/g++.dg/torture/pr57190.C
! 24828d66ce0b440be3a1976d754d6802  gcc/testsuite/g++.dg/torture/pr57235.C
  f57dc8a39ba283ab87221e83f802be5a  gcc/testsuite/g++.dg/torture/pr57499.C
  5dc530d4fc0332bbb42d6d5c5c47a692  gcc/testsuite/g++.dg/torture/pr58201.h
  1f56a692b545bbff0314a6e3861e243e  gcc/testsuite/g++.dg/torture/pr58201_0.C
  af1ff8fa6013e1d4ae4758b7461f737e  gcc/testsuite/g++.dg/torture/pr58201_1.C
! d41e6195c23ad9a190b97e14b13872e3  gcc/testsuite/g++.dg/torture/pr58252.C
! 48a599efda21690e55e7bf0a86c7e51d  gcc/testsuite/g++.dg/torture/pr58369.C
  0beeff4e8bd02953482f92d8ad4f242e  gcc/testsuite/g++.dg/torture/pr58380.C
  a3e67cbbb6404b1b7479dade4457c170  gcc/testsuite/g++.dg/torture/pr58464.C
  4febf0cd6a102e583e1b0f4faeb2f939  gcc/testsuite/g++.dg/torture/pr58552.C
! efe82881f11f80a3b275cf11ea4e2a9c  gcc/testsuite/g++.dg/torture/pr58555.C
  52c2593086f27fcd55a01d4bf97b4d53  gcc/testsuite/g++.dg/torture/pr58585.C
  20f86b01bbea5b4795e1e12cf98b140c  gcc/testsuite/g++.dg/torture/pr59163.C
! 83e6ae9fada7f8cfc9544f0b53877560  gcc/testsuite/g++.dg/torture/pr59208.C
  deb5be16005eb806e56fb201a4e0bf1b  gcc/testsuite/g++.dg/torture/pr59226.C
  fb4c270709e3db75e6204359c7e90f57  gcc/testsuite/g++.dg/torture/pr59240.C
! e18b2ad1911946cfc2ab74ff9bd7bdec  gcc/testsuite/g++.dg/torture/pr59265.C
  868211466d72a29843e2c167f3ba0912  gcc/testsuite/g++.dg/torture/pr59775.C
  59d4e20857451d2cff606095fd194b51  gcc/testsuite/g++.dg/torture/pr59822.C
  83bfb691b62368534ab513de1a1a3092  gcc/testsuite/g++.dg/torture/pr59882.C
*************** abbf000451fc55c1015d04d87cdbfdff  gcc/te
*** 18300,18439 ****
  dd0e7c5f40aa8ba76b9e4cf156eb5691  gcc/testsuite/g++.dg/torture/pr60058.C
  f788c2e514249481a41189cfb4d980fd  gcc/testsuite/g++.dg/torture/pr60131.C
  6943ed174a1cd5f71e18756c9ec86b41  gcc/testsuite/g++.dg/torture/pr60315.C
! e60052a170d7e76539e7170251ea3dbe  gcc/testsuite/g++.dg/torture/pr60438-1.C
  695cf880e03930568098d7e0a14f8f7a  gcc/testsuite/g++.dg/torture/pr60438-2.C
  5a6a60dcc864dd55e3f68388ec4c5a86  gcc/testsuite/g++.dg/torture/pr60474.C
  ce5bd74dda85ecae08b1e79c21fc231c  gcc/testsuite/g++.dg/torture/pr60609.C
! 6a1fc676aaed201857ec15f7c375b917  gcc/testsuite/g++.dg/torture/pr60648.C
  8c2dc2c3e3d744280501f821dd5cfb10  gcc/testsuite/g++.dg/torture/pr60659.C
! 59b64e493342855b4d4f60c5c5b2e866  gcc/testsuite/g++.dg/torture/pr60746.C
  5f42e568cc105049d43016ffc65ea36f  gcc/testsuite/g++.dg/torture/pr60750.C
  2cd5e243f12b5ca6cf66ca1966b24a84  gcc/testsuite/g++.dg/torture/pr60854.C
  bf1571ea2878b71f037f210093cd3932  gcc/testsuite/g++.dg/torture/pr60871.C
  ea51728c5e2ae154940893c6ccb374f8  gcc/testsuite/g++.dg/torture/pr60895.C
  c7ecff9e89bcc32aa4b9dcddf023258b  gcc/testsuite/g++.dg/torture/pr61482.C
! b0854573164c0c32ef837bcdc128ae7a  gcc/testsuite/g++.dg/torture/pr61554.C
  0c928e529190490eee6ccc0f6325b8e5  gcc/testsuite/g++.dg/torture/pr61558.C
  4911986338db4a40f38685a96d77ae91  gcc/testsuite/g++.dg/torture/pr61848.C
  af2ab3b9ceedb2dbeb48d6c62a313372  gcc/testsuite/g++.dg/torture/pr62121.C
! 92b39e81a9e2f76af5caa07aa06bf733  gcc/testsuite/g++.dg/torture/pr62127.C
  d07b743bd2e667fec2eed8f9e3dea4b4  gcc/testsuite/g++.dg/torture/pr62164.C
  2dab7d0ec5bd96c1fc2d49137dd14a65  gcc/testsuite/g++.dg/torture/pr62175.C
  e5c82b189f972c2c834eb829496bf82d  gcc/testsuite/g++.dg/torture/pr63237.C
  19be875310f2ce6953a7e6d9c3c66b40  gcc/testsuite/g++.dg/torture/pr63366.C
! a05f7c96f8061fc3fcc019c1305ffbd4  gcc/testsuite/g++.dg/torture/pr63419.C
! 66ddf3058bafa41c383232d79cfccad8  gcc/testsuite/g++.dg/torture/pr63476.C
! 1e97c3bf45ebbb519c2491c2d7d2f50b  gcc/testsuite/g++.dg/torture/pr63512.C
  7d49b0384f2408757a5389f68ff1ff8e  gcc/testsuite/g++.dg/torture/pr63632.C
  83d06145b111792c36237c11502a97dc  gcc/testsuite/g++.dg/torture/pr64139.C
! d50b549c829f539043efab4032be714c  gcc/testsuite/g++.dg/torture/pr64280.C
! 36ad3b9e08fb48c3f13b8e11623361a0  gcc/testsuite/g++.dg/torture/pr64282.C
  5f5c7f43583f78d4db884e35079b34ad  gcc/testsuite/g++.dg/torture/pr64312.C
! f04eb74d8ec7bd3bb4dbd30d94eedf5d  gcc/testsuite/g++.dg/torture/pr64378.C
! 67eb864d971b9ffbb750cb28dcb327df  gcc/testsuite/g++.dg/torture/pr64565.C
! d8fb3724791c57df60b51fc3e786cb00  gcc/testsuite/g++.dg/torture/pr64568-2.C
  0aaaff02605de72db68027db74d7b04e  gcc/testsuite/g++.dg/torture/pr64568.C
! 03cd4c0ddb1a922dfed60ff26f96d66d  gcc/testsuite/g++.dg/torture/pr64669.C
! ae514399a61eb534aef8e5c5adcbd218  gcc/testsuite/g++.dg/torture/pr64686.C
! baf84b048939162e96314c455205285e  gcc/testsuite/g++.dg/torture/pr64978.C
  a6d5e92bcc7c3c7c0d700178c118e749  gcc/testsuite/g++.dg/torture/pr64988.C
! a27ba36ea9eae42841d62d857ddd0001  gcc/testsuite/g++.dg/torture/pr64995.C
  6c798d229418fbb59edd7e73cb26d037  gcc/testsuite/g++.dg/torture/pr65249.C
  c25d17af87e3d7a9aa5010c98e49271c  gcc/testsuite/g++.dg/torture/pr65555.C
  d73b0ae10b73f6042541b697e109d419  gcc/testsuite/g++.dg/torture/pr65600.C
  facb0bc1ece1a6aa6c4e4188d0d73c2a  gcc/testsuite/g++.dg/torture/pr65626.C
! 60497f242c1d228f127b6088d85762f2  gcc/testsuite/g++.dg/torture/pr65655.C
  19725c5847f96e451c25fba984d6dee4  gcc/testsuite/g++.dg/torture/pr65694.C
  a87f1be3c65a5aed90d14e12a23c676d  gcc/testsuite/g++.dg/torture/pr65747.C
! 19fca76c8bace80fcd2b0d0fb69c85d0  gcc/testsuite/g++.dg/torture/pr65851.C
  84497353d7c8ef28f9a4787bd1e770de  gcc/testsuite/g++.dg/torture/pr65914.C
  baf5d2ae206f7c666a10ccd2d6d58d09  gcc/testsuite/g++.dg/torture/pr66280-2.C
  117ca514f551d13ac5a24003524bfb34  gcc/testsuite/g++.dg/torture/pr66280.C
  4a8a063c8dffe35bf8a063c635bac9c1  gcc/testsuite/g++.dg/torture/pr66752-2.C
! e06907cfe2759b33272f3b47a2cad143  gcc/testsuite/g++.dg/torture/pr67055.C
  69e76c4a08260b15627abd2bb95467cd  gcc/testsuite/g++.dg/torture/pr67133.C
! ac93bc32eb65753f728fd16b9028f9f0  gcc/testsuite/g++.dg/torture/pr67191.C
  9fe18ea54e017b08af376aa0379be44e  gcc/testsuite/g++.dg/torture/pr67581.C
  9e74caef3e2229e913023613957f9cf8  gcc/testsuite/g++.dg/torture/pr67600.C
  ffea96650489328bbd2b2b1bab33a124  gcc/testsuite/g++.dg/torture/pr68064.C
  346f676cb6eadd42bf541771cf8eea46  gcc/testsuite/g++.dg/torture/pr68184.C
  ff1c25011b35b7d40c5d1c450677ac84  gcc/testsuite/g++.dg/torture/pr68220.C
! f14b5f3bfea1cc2e75ee2c2e9d2b1411  gcc/testsuite/g++.dg/torture/pr68470.C
! 428a33df2d4d37db0c2c6dc17621a08a  gcc/testsuite/g++.dg/torture/pr68852.C
  8e220539300aa7238affb1416477dc23  gcc/testsuite/g++.dg/torture/pr69053.C
  f51b8164c5b5a2cdbfd601ffb720ee4b  gcc/testsuite/g++.dg/torture/pr69136.C
! c5893de07a3c9606d42bebb72dff3c9e  gcc/testsuite/g++.dg/torture/pr69264.C
  7a1908e05947b451b17cc334319526f3  gcc/testsuite/g++.dg/torture/pr69355.C
  c3d28acfa8ec50c2dd014722262ee3ec  gcc/testsuite/g++.dg/torture/pr69553.C
  4399ef75994fb88845d72598f53764bd  gcc/testsuite/g++.dg/torture/pr69851.C
  90fe5734848c70466c31c09e2bfe47d7  gcc/testsuite/g++.dg/torture/pr70029.C
  3e80469d72e0d17bb9473080988a1256  gcc/testsuite/g++.dg/torture/pr70251.C
! 2746a5decc64a282d267ca55bf50de29  gcc/testsuite/g++.dg/torture/pr70499.C
  742e71bf561b5af56ed84fc963a0fe07  gcc/testsuite/g++.dg/torture/pr70526.C
  70f12919daac1621217766d66fded881  gcc/testsuite/g++.dg/torture/pr71002.C
  bedbbc0d327f38c0cda7664fd1507e7e  gcc/testsuite/g++.dg/torture/pr71230.C
! e94ec27485e6a01d93716524e71f7e4d  gcc/testsuite/g++.dg/torture/pr71281.C
  1f87514c6855153f68756aa03a601abf  gcc/testsuite/g++.dg/torture/pr71308.C
  561facc41670baebfb84a4231ec62bca  gcc/testsuite/g++.dg/torture/pr71405.C
  874216a8c65d270dcf488d29a8847247  gcc/testsuite/g++.dg/torture/pr71448.C
  1a5141d0024cd5aaec602821dfe13e1b  gcc/testsuite/g++.dg/torture/pr71571.C
  6d87997ae70f613b7ae47faba21523d9  gcc/testsuite/g++.dg/torture/pr71874.C
! a15c060e2c22c6e58169d9828fadc150  gcc/testsuite/g++.dg/torture/pr77674.C
! ce8345cc9d8686b468b76e778132c7c3  gcc/testsuite/g++.dg/torture/pr77745.C
  3ae4600309b6106a97263eaea5369b8b  gcc/testsuite/g++.dg/torture/pr77822.C
  ea126398515e20d945d8e298598ba010  gcc/testsuite/g++.dg/torture/pr77919-2.C
  8fcdf2e7c90f945065444414bbe585b8  gcc/testsuite/g++.dg/torture/pr77919.C
! 31459047cd2c477a9788a7ef2dcd94cf  gcc/testsuite/g++.dg/torture/pr77947.C
  ab432da18a56191cf045c45914617479  gcc/testsuite/g++.dg/torture/pr78051.C
  d10be217a5318f5a30d2b4af7af2a910  gcc/testsuite/g++.dg/torture/pr78189.C
  fff85caa269f4d672ff9fa1e8ed455a5  gcc/testsuite/g++.dg/torture/pr78224.C
! 80cf42a10d52c1d74a6831ec05b17e73  gcc/testsuite/g++.dg/torture/pr78268.C
! 64c81a04c9510261f350822ec02ef1c1  gcc/testsuite/g++.dg/torture/pr78507.C
  7291e0da42b63547e99d4789f98cb244  gcc/testsuite/g++.dg/torture/pr78684.C
! 16bf27ab1cbada27e780a67009e23261  gcc/testsuite/g++.dg/torture/pr78692.C
  e9192724852aa448c7709efeb49dbc79  gcc/testsuite/g++.dg/torture/pr78750.C
  0bffa34263df7a44bdd8ba46dfc1921b  gcc/testsuite/g++.dg/torture/pr78777.C
  10e122dbe573519dc059f3acdc328188  gcc/testsuite/g++.dg/torture/pr78812.C
  e7b6b1b081a787e4e53586f0eb586432  gcc/testsuite/g++.dg/torture/pr79034.C
  a74b702150e2440ab44ee64832045035  gcc/testsuite/g++.dg/torture/pr79671.C
  e2fc1650fd0ae5155b78467314f4d7dd  gcc/testsuite/g++.dg/torture/pr79905.C
  e2feecde27b238c3295769ac065f5fca  gcc/testsuite/g++.dg/torture/pr80054.C
  5f30adb3e661ee47f5fadbbad3ee23c1  gcc/testsuite/g++.dg/torture/pr80075.C
  7ca5ee7afef7aee7488a8e0511740522  gcc/testsuite/g++.dg/torture/pr80129.C
! b620e6b75af7923a29a7c8bddaca3f88  gcc/testsuite/g++.dg/torture/pr80171.C
  6f487a92823e54104daa5a6110dea6d2  gcc/testsuite/g++.dg/torture/pr80297.C
  c8ab626b8e279f6073645f31a011c9e3  gcc/testsuite/g++.dg/torture/pr80334.C
  6e43862d1dcc5dd4f0971740f6e67b1d  gcc/testsuite/g++.dg/torture/pr81112.C
  153bbff97336be3231696c3c16a64e29  gcc/testsuite/g++.dg/torture/pr81354.C
  2ea00b74c66f7b415383da9b9e2d1015  gcc/testsuite/g++.dg/torture/pr81365.C
! 56b86fdb0a02761ef530d4d5d546857e  gcc/testsuite/g++.dg/torture/pr81877.C
  51ad14f7722c92d3074ceddad1e864f0  gcc/testsuite/g++.dg/torture/pr81884.C
  bff863905887579e8aac699fddb4b928  gcc/testsuite/g++.dg/torture/pr81977.C
  22414dc3cabbf804f8f8f89b0d5c45b5  gcc/testsuite/g++.dg/torture/pr81987.C
  56f289074e2ec405f84e8945ba2fd8e7  gcc/testsuite/g++.dg/torture/pr82060.C
  5c1263a91ff6c6cd35d7064c44081a27  gcc/testsuite/g++.dg/torture/pr82084.C
  7b31d7e6cf7338af5c217f792e597cec  gcc/testsuite/g++.dg/torture/pr82902.C
  c27ff8c719172e781d9a4d4c2da6a666  gcc/testsuite/g++.dg/torture/pr82985.C
  35480e23a9f13b249e2b78984fea51a7  gcc/testsuite/g++.dg/torture/pr83471.C
  80e19475a80104f2c2cb4bf4bbca1f3c  gcc/testsuite/g++.dg/torture/pr83713.C
! 389892c1f2e87d69449479d1b053c70c  gcc/testsuite/g++.dg/torture/predcom-1.C
  d28910105d9c9253d94d70eacd5e19d4  gcc/testsuite/g++.dg/torture/pushpop_macro.C
  a1b47b9c3e69d79d1895ebc4fd11032b  gcc/testsuite/g++.dg/torture/stackalign/check.h
! 156468c9423619d4d4d35d95f4e3f2d4  gcc/testsuite/g++.dg/torture/stackalign/eh-alloca-1.C
! 7fe41640de4032740937593ccc37c0e7  gcc/testsuite/g++.dg/torture/stackalign/eh-fastcall-1.C
! 89a97a95ab02dd07e9cfef2875814c75  gcc/testsuite/g++.dg/torture/stackalign/eh-global-1.C
! 6ac46939578656d2a85df1d65ab8a398  gcc/testsuite/g++.dg/torture/stackalign/eh-inline-1.C
! a64a2e124a78f53a6bb1209e51d67f2b  gcc/testsuite/g++.dg/torture/stackalign/eh-inline-2.C
! 208a4072a0298b03d19e781bdda160ef  gcc/testsuite/g++.dg/torture/stackalign/eh-thiscall-1.C
! 35d577008d8e5dfce3335dd38192974d  gcc/testsuite/g++.dg/torture/stackalign/eh-vararg-1.C
! 5c756cee4671d5161f2185d98e2de354  gcc/testsuite/g++.dg/torture/stackalign/eh-vararg-2.C
! 7df93110d3727d4e767c3ba1df741d84  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
! 232d8b13d1b4cce42c5539a1b50ac79e  gcc/testsuite/g++.dg/torture/stackalign/throw-1.C
! 5ff41a020f8c55977a499ded1d20cd6a  gcc/testsuite/g++.dg/torture/stackalign/throw-2.C
  c488ee7de768d61350ad78cfd41ad3f9  gcc/testsuite/g++.dg/torture/stackalign/throw-3.C
! dd05e223c9a803ea6370d6be3a588f8f  gcc/testsuite/g++.dg/torture/stackalign/throw-4.C
  d53f4a36bfd00298b6b687881aad6861  gcc/testsuite/g++.dg/torture/stackalign/unwind-0.C
  2aa74f86eb0a63ab07e4ff6ab3e3bec7  gcc/testsuite/g++.dg/torture/stackalign/unwind-1.C
  6764e5471934a26fbf6d90847e9a6d8b  gcc/testsuite/g++.dg/torture/stackalign/unwind-2.C
--- 19334,19503 ----
  dd0e7c5f40aa8ba76b9e4cf156eb5691  gcc/testsuite/g++.dg/torture/pr60058.C
  f788c2e514249481a41189cfb4d980fd  gcc/testsuite/g++.dg/torture/pr60131.C
  6943ed174a1cd5f71e18756c9ec86b41  gcc/testsuite/g++.dg/torture/pr60315.C
! f399b0032fa004268f1e8051651b7859  gcc/testsuite/g++.dg/torture/pr60438-1.C
  695cf880e03930568098d7e0a14f8f7a  gcc/testsuite/g++.dg/torture/pr60438-2.C
  5a6a60dcc864dd55e3f68388ec4c5a86  gcc/testsuite/g++.dg/torture/pr60474.C
  ce5bd74dda85ecae08b1e79c21fc231c  gcc/testsuite/g++.dg/torture/pr60609.C
! 6b298d33b9334bec62dcb66cd3e6a52c  gcc/testsuite/g++.dg/torture/pr60648.C
  8c2dc2c3e3d744280501f821dd5cfb10  gcc/testsuite/g++.dg/torture/pr60659.C
! 7a509be3dc016f40754742509473d5fa  gcc/testsuite/g++.dg/torture/pr60746.C
  5f42e568cc105049d43016ffc65ea36f  gcc/testsuite/g++.dg/torture/pr60750.C
  2cd5e243f12b5ca6cf66ca1966b24a84  gcc/testsuite/g++.dg/torture/pr60854.C
  bf1571ea2878b71f037f210093cd3932  gcc/testsuite/g++.dg/torture/pr60871.C
  ea51728c5e2ae154940893c6ccb374f8  gcc/testsuite/g++.dg/torture/pr60895.C
  c7ecff9e89bcc32aa4b9dcddf023258b  gcc/testsuite/g++.dg/torture/pr61482.C
! a7a4f733c1ff07bc95f3f3bb578ef917  gcc/testsuite/g++.dg/torture/pr61554.C
  0c928e529190490eee6ccc0f6325b8e5  gcc/testsuite/g++.dg/torture/pr61558.C
  4911986338db4a40f38685a96d77ae91  gcc/testsuite/g++.dg/torture/pr61848.C
  af2ab3b9ceedb2dbeb48d6c62a313372  gcc/testsuite/g++.dg/torture/pr62121.C
! 4861bba426409b55c13e82f0b44891e7  gcc/testsuite/g++.dg/torture/pr62127.C
  d07b743bd2e667fec2eed8f9e3dea4b4  gcc/testsuite/g++.dg/torture/pr62164.C
  2dab7d0ec5bd96c1fc2d49137dd14a65  gcc/testsuite/g++.dg/torture/pr62175.C
  e5c82b189f972c2c834eb829496bf82d  gcc/testsuite/g++.dg/torture/pr63237.C
  19be875310f2ce6953a7e6d9c3c66b40  gcc/testsuite/g++.dg/torture/pr63366.C
! 279b70122d4b38af8818c07b47bc9059  gcc/testsuite/g++.dg/torture/pr63419.C
! f80d9affd14e7f4b6a5110b9ff496100  gcc/testsuite/g++.dg/torture/pr63476.C
! fe25e4f1a3010bc02be756af7df1df8d  gcc/testsuite/g++.dg/torture/pr63512.C
  7d49b0384f2408757a5389f68ff1ff8e  gcc/testsuite/g++.dg/torture/pr63632.C
  83d06145b111792c36237c11502a97dc  gcc/testsuite/g++.dg/torture/pr64139.C
! 06139e2d04b24cf5cdf4bb8039dcf8f1  gcc/testsuite/g++.dg/torture/pr64280.C
! 36a83a61233f38d6c4eeb27c1e50e097  gcc/testsuite/g++.dg/torture/pr64282.C
  5f5c7f43583f78d4db884e35079b34ad  gcc/testsuite/g++.dg/torture/pr64312.C
! a7bf10a33ecfa0bbf6675f583f6f47be  gcc/testsuite/g++.dg/torture/pr64378.C
! 730a750779f259002c631915a67ce8a3  gcc/testsuite/g++.dg/torture/pr64565.C
! d0606d6ea94c71e6b4bf7c22b6836424  gcc/testsuite/g++.dg/torture/pr64568-2.C
  0aaaff02605de72db68027db74d7b04e  gcc/testsuite/g++.dg/torture/pr64568.C
! 1f1abd71e50437a90c316f02181dd3e8  gcc/testsuite/g++.dg/torture/pr64669.C
! d38b097990a8d9e30d0f1b2960ebac2a  gcc/testsuite/g++.dg/torture/pr64686.C
! e95ca2af821f1c9a9d132248a083507a  gcc/testsuite/g++.dg/torture/pr64978.C
  a6d5e92bcc7c3c7c0d700178c118e749  gcc/testsuite/g++.dg/torture/pr64988.C
! b901dc0bcc55d236341f2855fdbb109b  gcc/testsuite/g++.dg/torture/pr64995.C
  6c798d229418fbb59edd7e73cb26d037  gcc/testsuite/g++.dg/torture/pr65249.C
  c25d17af87e3d7a9aa5010c98e49271c  gcc/testsuite/g++.dg/torture/pr65555.C
  d73b0ae10b73f6042541b697e109d419  gcc/testsuite/g++.dg/torture/pr65600.C
  facb0bc1ece1a6aa6c4e4188d0d73c2a  gcc/testsuite/g++.dg/torture/pr65626.C
! 265494ad52264adf41a0473460992c3e  gcc/testsuite/g++.dg/torture/pr65655.C
  19725c5847f96e451c25fba984d6dee4  gcc/testsuite/g++.dg/torture/pr65694.C
  a87f1be3c65a5aed90d14e12a23c676d  gcc/testsuite/g++.dg/torture/pr65747.C
! 45af23f2d922025b6cec9cef0f74a6bf  gcc/testsuite/g++.dg/torture/pr65851.C
  84497353d7c8ef28f9a4787bd1e770de  gcc/testsuite/g++.dg/torture/pr65914.C
  baf5d2ae206f7c666a10ccd2d6d58d09  gcc/testsuite/g++.dg/torture/pr66280-2.C
  117ca514f551d13ac5a24003524bfb34  gcc/testsuite/g++.dg/torture/pr66280.C
  4a8a063c8dffe35bf8a063c635bac9c1  gcc/testsuite/g++.dg/torture/pr66752-2.C
! dec81fd16db4998e9762020f35359f3e  gcc/testsuite/g++.dg/torture/pr67055.C
  69e76c4a08260b15627abd2bb95467cd  gcc/testsuite/g++.dg/torture/pr67133.C
! 56227ef023257f5b07928f86bd0a4471  gcc/testsuite/g++.dg/torture/pr67191.C
  9fe18ea54e017b08af376aa0379be44e  gcc/testsuite/g++.dg/torture/pr67581.C
  9e74caef3e2229e913023613957f9cf8  gcc/testsuite/g++.dg/torture/pr67600.C
  ffea96650489328bbd2b2b1bab33a124  gcc/testsuite/g++.dg/torture/pr68064.C
  346f676cb6eadd42bf541771cf8eea46  gcc/testsuite/g++.dg/torture/pr68184.C
  ff1c25011b35b7d40c5d1c450677ac84  gcc/testsuite/g++.dg/torture/pr68220.C
! 2328164b4b99373619fe1e6c15508f1d  gcc/testsuite/g++.dg/torture/pr68470.C
! 53e2ba5749e35c190aecfb6340b6c9ad  gcc/testsuite/g++.dg/torture/pr68852.C
  8e220539300aa7238affb1416477dc23  gcc/testsuite/g++.dg/torture/pr69053.C
  f51b8164c5b5a2cdbfd601ffb720ee4b  gcc/testsuite/g++.dg/torture/pr69136.C
! 927c7db7bad0921d4a962a6e70c3a2eb  gcc/testsuite/g++.dg/torture/pr69264.C
  7a1908e05947b451b17cc334319526f3  gcc/testsuite/g++.dg/torture/pr69355.C
  c3d28acfa8ec50c2dd014722262ee3ec  gcc/testsuite/g++.dg/torture/pr69553.C
  4399ef75994fb88845d72598f53764bd  gcc/testsuite/g++.dg/torture/pr69851.C
  90fe5734848c70466c31c09e2bfe47d7  gcc/testsuite/g++.dg/torture/pr70029.C
  3e80469d72e0d17bb9473080988a1256  gcc/testsuite/g++.dg/torture/pr70251.C
! 3bd26fb6d48cd492ec09616a23dcdd28  gcc/testsuite/g++.dg/torture/pr70499.C
  742e71bf561b5af56ed84fc963a0fe07  gcc/testsuite/g++.dg/torture/pr70526.C
+ 3ff64ba5dd164ba33516921f8ebbe74f  gcc/testsuite/g++.dg/torture/pr70621.C
+ 7ffa72c96ecbb438e15dd9f0fc95ee3f  gcc/testsuite/g++.dg/torture/pr70971.C
  70f12919daac1621217766d66fded881  gcc/testsuite/g++.dg/torture/pr71002.C
  bedbbc0d327f38c0cda7664fd1507e7e  gcc/testsuite/g++.dg/torture/pr71230.C
! 6e51730284ff85b2ed8c87b8ab3fe775  gcc/testsuite/g++.dg/torture/pr71281.C
  1f87514c6855153f68756aa03a601abf  gcc/testsuite/g++.dg/torture/pr71308.C
  561facc41670baebfb84a4231ec62bca  gcc/testsuite/g++.dg/torture/pr71405.C
  874216a8c65d270dcf488d29a8847247  gcc/testsuite/g++.dg/torture/pr71448.C
+ 34adfe8ff76a8fce170482e1855f1999  gcc/testsuite/g++.dg/torture/pr71464.C
  1a5141d0024cd5aaec602821dfe13e1b  gcc/testsuite/g++.dg/torture/pr71571.C
  6d87997ae70f613b7ae47faba21523d9  gcc/testsuite/g++.dg/torture/pr71874.C
! 8afdcc3d1b5353acd0f2b08cedf58326  gcc/testsuite/g++.dg/torture/pr77555.C
! d733eeece63ab510f30d07dad32e3c23  gcc/testsuite/g++.dg/torture/pr77674.C
! 906679c5de97fe31d0eaec73c19ef8ed  gcc/testsuite/g++.dg/torture/pr77745-2.C
! 7adcd400085a046be122b17236d8a414  gcc/testsuite/g++.dg/torture/pr77745.C
  3ae4600309b6106a97263eaea5369b8b  gcc/testsuite/g++.dg/torture/pr77822.C
  ea126398515e20d945d8e298598ba010  gcc/testsuite/g++.dg/torture/pr77919-2.C
  8fcdf2e7c90f945065444414bbe585b8  gcc/testsuite/g++.dg/torture/pr77919.C
! 1937db22cfdf6e3b414330ef48fedf88  gcc/testsuite/g++.dg/torture/pr77947.C
  ab432da18a56191cf045c45914617479  gcc/testsuite/g++.dg/torture/pr78051.C
  d10be217a5318f5a30d2b4af7af2a910  gcc/testsuite/g++.dg/torture/pr78189.C
  fff85caa269f4d672ff9fa1e8ed455a5  gcc/testsuite/g++.dg/torture/pr78224.C
! f729ad4615f5c109f060f8438e0141ad  gcc/testsuite/g++.dg/torture/pr78268.C
! 07800ea0339bf996798b1b9966946ca1  gcc/testsuite/g++.dg/torture/pr78507.C
  7291e0da42b63547e99d4789f98cb244  gcc/testsuite/g++.dg/torture/pr78684.C
! 3bf57e687504e80c840989f208dd0955  gcc/testsuite/g++.dg/torture/pr78692.C
  e9192724852aa448c7709efeb49dbc79  gcc/testsuite/g++.dg/torture/pr78750.C
  0bffa34263df7a44bdd8ba46dfc1921b  gcc/testsuite/g++.dg/torture/pr78777.C
  10e122dbe573519dc059f3acdc328188  gcc/testsuite/g++.dg/torture/pr78812.C
  e7b6b1b081a787e4e53586f0eb586432  gcc/testsuite/g++.dg/torture/pr79034.C
+ cde8a6692b03d3f9200ac398c7f1e30f  gcc/testsuite/g++.dg/torture/pr79180.C
+ cb9b70d9fd5cd4be6b35325ba8585094  gcc/testsuite/g++.dg/torture/pr79410.C
  a74b702150e2440ab44ee64832045035  gcc/testsuite/g++.dg/torture/pr79671.C
  e2fc1650fd0ae5155b78467314f4d7dd  gcc/testsuite/g++.dg/torture/pr79905.C
  e2feecde27b238c3295769ac065f5fca  gcc/testsuite/g++.dg/torture/pr80054.C
  5f30adb3e661ee47f5fadbbad3ee23c1  gcc/testsuite/g++.dg/torture/pr80075.C
  7ca5ee7afef7aee7488a8e0511740522  gcc/testsuite/g++.dg/torture/pr80129.C
! 420d9e634fac18c5ed7154cd44422144  gcc/testsuite/g++.dg/torture/pr80171.C
  6f487a92823e54104daa5a6110dea6d2  gcc/testsuite/g++.dg/torture/pr80297.C
  c8ab626b8e279f6073645f31a011c9e3  gcc/testsuite/g++.dg/torture/pr80334.C
  6e43862d1dcc5dd4f0971740f6e67b1d  gcc/testsuite/g++.dg/torture/pr81112.C
+ ab630470e82097e058f526be0adf3ab9  gcc/testsuite/g++.dg/torture/pr81249.C
  153bbff97336be3231696c3c16a64e29  gcc/testsuite/g++.dg/torture/pr81354.C
+ c4901bbe41ce1310894b59ad5e94230b  gcc/testsuite/g++.dg/torture/pr81360.C
  2ea00b74c66f7b415383da9b9e2d1015  gcc/testsuite/g++.dg/torture/pr81365.C
! 3b3a07eb1cd5bd893a2cd5e7522dd666  gcc/testsuite/g++.dg/torture/pr81462.C
! 6fa54f57371a0937faf8fe3307c0f38c  gcc/testsuite/g++.dg/torture/pr81659.C
! 48162199f246f0afced679d08e6befd4  gcc/testsuite/g++.dg/torture/pr81812.C
! 8a5f9f9294cebeb70876c5b1c9ea7cfd  gcc/testsuite/g++.dg/torture/pr81877.C
  51ad14f7722c92d3074ceddad1e864f0  gcc/testsuite/g++.dg/torture/pr81884.C
  bff863905887579e8aac699fddb4b928  gcc/testsuite/g++.dg/torture/pr81977.C
  22414dc3cabbf804f8f8f89b0d5c45b5  gcc/testsuite/g++.dg/torture/pr81987.C
  56f289074e2ec405f84e8945ba2fd8e7  gcc/testsuite/g++.dg/torture/pr82060.C
  5c1263a91ff6c6cd35d7064c44081a27  gcc/testsuite/g++.dg/torture/pr82084.C
+ de2083e3c32dc90879197a99c2956537  gcc/testsuite/g++.dg/torture/pr82154.C
+ 464b46d5d33b83e255dda6cc6950001a  gcc/testsuite/g++.dg/torture/pr82823.C
  7b31d7e6cf7338af5c217f792e597cec  gcc/testsuite/g++.dg/torture/pr82902.C
  c27ff8c719172e781d9a4d4c2da6a666  gcc/testsuite/g++.dg/torture/pr82985.C
+ e6985a97fc8bffff904103a59feb1587  gcc/testsuite/g++.dg/torture/pr83283.C
+ 0a9c4ff53d879bead90957063dd2db6f  gcc/testsuite/g++.dg/torture/pr83293.C
+ 57668986321e7f2329003e224cb67a31  gcc/testsuite/g++.dg/torture/pr83391.C
  35480e23a9f13b249e2b78984fea51a7  gcc/testsuite/g++.dg/torture/pr83471.C
+ b867c1c86a41c3f98e0e77c27964fd00  gcc/testsuite/g++.dg/torture/pr83482.C
+ 1db163568bc5b3dec0d7ab80c5d0c66c  gcc/testsuite/g++.dg/torture/pr83619.C
+ 86ac2e7064e5bf87450bd9e1e9a21024  gcc/testsuite/g++.dg/torture/pr83659.C
  80e19475a80104f2c2cb4bf4bbca1f3c  gcc/testsuite/g++.dg/torture/pr83713.C
! 1a94bb3e8e7b294d629493d7a9b0078b  gcc/testsuite/g++.dg/torture/pr83718.C
! 1746e8cf8de2543571dcfaf896e4e1c4  gcc/testsuite/g++.dg/torture/pr84132.C
! 83254597583931853d8d25224f6bade3  gcc/testsuite/g++.dg/torture/pr84190.C
! dea7b576a4c2e4d3fcde36a40bb8ba54  gcc/testsuite/g++.dg/torture/pr84233.C
! 4a9036890e3b15f433b44402e613b15d  gcc/testsuite/g++.dg/torture/pr84502.C
! 17b768d13833c7decabab6d0767f4274  gcc/testsuite/g++.dg/torture/pr84961-1.C
! 6e66206d45b8fa6e745c399f62812a06  gcc/testsuite/g++.dg/torture/pr84961-2.C
! 0687a59cd48270e6d3f94f336c4f404e  gcc/testsuite/g++.dg/torture/pr85078.C
! ebccddf8491308f2f5774f0f5bc65c1b  gcc/testsuite/g++.dg/torture/pr85334.C
! cbc6cd52e3c07bb0cbd331817134fe42  gcc/testsuite/g++.dg/torture/pr85496.C
! e47702cb1ff0caccc17257524e8667dc  gcc/testsuite/g++.dg/torture/predcom-1.C
  d28910105d9c9253d94d70eacd5e19d4  gcc/testsuite/g++.dg/torture/pushpop_macro.C
  a1b47b9c3e69d79d1895ebc4fd11032b  gcc/testsuite/g++.dg/torture/stackalign/check.h
! 714fa47ec3e1b559fd96ca98ccc1fda7  gcc/testsuite/g++.dg/torture/stackalign/eh-alloca-1.C
! f901926c5a1ac060933c9852ce091ab1  gcc/testsuite/g++.dg/torture/stackalign/eh-fastcall-1.C
! 911f5840ca951dfba6f210ed99decf1c  gcc/testsuite/g++.dg/torture/stackalign/eh-global-1.C
! 35cde9d7c491fd52c0f077812a425a5b  gcc/testsuite/g++.dg/torture/stackalign/eh-inline-1.C
! cae456330f7461197045e0a2f5fa12ce  gcc/testsuite/g++.dg/torture/stackalign/eh-inline-2.C
! 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
! 9db3237f4f1e02e8a63d3264331401fe  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
! d94cdc43ef03cbb9aedd20473fe8c08f  gcc/testsuite/g++.dg/torture/stackalign/throw-2.C
  c488ee7de768d61350ad78cfd41ad3f9  gcc/testsuite/g++.dg/torture/stackalign/throw-3.C
! 18345aeac4fbabf368341b3bf596a137  gcc/testsuite/g++.dg/torture/stackalign/throw-4.C
  d53f4a36bfd00298b6b687881aad6861  gcc/testsuite/g++.dg/torture/stackalign/unwind-0.C
  2aa74f86eb0a63ab07e4ff6ab3e3bec7  gcc/testsuite/g++.dg/torture/stackalign/unwind-1.C
  6764e5471934a26fbf6d90847e9a6d8b  gcc/testsuite/g++.dg/torture/stackalign/unwind-2.C
*************** fb8bbe2d556b451e4da43891336e8c73  gcc/te
*** 18475,18493 ****
  a54a5070a3789fa2ec977323faa81e1d  gcc/testsuite/g++.dg/tree-prof/pr57451.C
  70c6aef0cd7751caa0c6b7ed44aabd8b  gcc/testsuite/g++.dg/tree-prof/pr59255.C
  f3b48aeb86621caf4df1f285501e7a5e  gcc/testsuite/g++.dg/tree-prof/pr63581.C
! 62222764acf8bafd2fda4d9dc77876db  gcc/testsuite/g++.dg/tree-prof/pr79259.C
  46c9c15c3ee8bf93da54da9e6ba0ddb0  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
! 024a5b31f904de9cb37545d7bd32c03a  gcc/testsuite/g++.dg/tree-prof/tree-prof.exp
  2a1f9c8b1ccb241e4745f1e06c56fac3  gcc/testsuite/g++.dg/tree-ssa/20040317-1.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
! 618c4cf23c93445ac05904384e804f11  gcc/testsuite/g++.dg/tree-ssa/copyprop.C
  ac99be7ada2631c077352f322dd05ca0  gcc/testsuite/g++.dg/tree-ssa/deleted-label1.C
! ad66aae8fcc14308cbaabeace77065cf  gcc/testsuite/g++.dg/tree-ssa/dom-invalid.C
  f47eaa2d8002496a7b4b7724ca81009b  gcc/testsuite/g++.dg/tree-ssa/ehcleanup-1.C
  7a59e09c4cb65bda7874f5d6af01a6f5  gcc/testsuite/g++.dg/tree-ssa/empty-1.C
  6ca719a4fb53798313a64270ae55a047  gcc/testsuite/g++.dg/tree-ssa/empty-2.C
--- 19539,19558 ----
  a54a5070a3789fa2ec977323faa81e1d  gcc/testsuite/g++.dg/tree-prof/pr57451.C
  70c6aef0cd7751caa0c6b7ed44aabd8b  gcc/testsuite/g++.dg/tree-prof/pr59255.C
  f3b48aeb86621caf4df1f285501e7a5e  gcc/testsuite/g++.dg/tree-prof/pr63581.C
! e5c358735afed9e9c54950b2b1516563  gcc/testsuite/g++.dg/tree-prof/pr79259.C
  46c9c15c3ee8bf93da54da9e6ba0ddb0  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
! a902fa7a5ec83bda7fed1d412507392d  gcc/testsuite/g++.dg/tree-prof/tree-prof.exp
  2a1f9c8b1ccb241e4745f1e06c56fac3  gcc/testsuite/g++.dg/tree-ssa/20040317-1.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
! d91b8a641aa0d5f214c5844a6944163c  gcc/testsuite/g++.dg/tree-ssa/copyprop.C
! 87d33077dde5db2d1e9e001bd82dc9cd  gcc/testsuite/g++.dg/tree-ssa/counts-1.C
  ac99be7ada2631c077352f322dd05ca0  gcc/testsuite/g++.dg/tree-ssa/deleted-label1.C
! abe156afaf6427ade6401cbc35b08f69  gcc/testsuite/g++.dg/tree-ssa/dom-invalid.C
  f47eaa2d8002496a7b4b7724ca81009b  gcc/testsuite/g++.dg/tree-ssa/ehcleanup-1.C
  7a59e09c4cb65bda7874f5d6af01a6f5  gcc/testsuite/g++.dg/tree-ssa/empty-1.C
  6ca719a4fb53798313a64270ae55a047  gcc/testsuite/g++.dg/tree-ssa/empty-2.C
*************** d18fc9aa9af5fe350b2ba0e12ed6dcb0  gcc/te
*** 18499,18505 ****
  1349778c35738e050666eabd5a0ca64c  gcc/testsuite/g++.dg/tree-ssa/inline-3.C
  346fde30b2b3afb7944e516339ed52b6  gcc/testsuite/g++.dg/tree-ssa/ivopts-1.C
  d049885f4d053577c545356b2aed7783  gcc/testsuite/g++.dg/tree-ssa/ivopts-2.C
! 45d95abe2df26898a62afb5d14f3adcd  gcc/testsuite/g++.dg/tree-ssa/ivopts-3.C
  c60f58c35051bdf33475572fe6676ded  gcc/testsuite/g++.dg/tree-ssa/new1.C
  15ab0ba34272a9b9cb6f26af6f24d6be  gcc/testsuite/g++.dg/tree-ssa/nonzero-1.C
  7966471926be0c3228b95fecdf1c10bc  gcc/testsuite/g++.dg/tree-ssa/nonzero-2.C
--- 19564,19570 ----
  1349778c35738e050666eabd5a0ca64c  gcc/testsuite/g++.dg/tree-ssa/inline-3.C
  346fde30b2b3afb7944e516339ed52b6  gcc/testsuite/g++.dg/tree-ssa/ivopts-1.C
  d049885f4d053577c545356b2aed7783  gcc/testsuite/g++.dg/tree-ssa/ivopts-2.C
! 2937805ff0bd4436c8dea522bf5c9721  gcc/testsuite/g++.dg/tree-ssa/ivopts-3.C
  c60f58c35051bdf33475572fe6676ded  gcc/testsuite/g++.dg/tree-ssa/new1.C
  15ab0ba34272a9b9cb6f26af6f24d6be  gcc/testsuite/g++.dg/tree-ssa/nonzero-1.C
  7966471926be0c3228b95fecdf1c10bc  gcc/testsuite/g++.dg/tree-ssa/nonzero-2.C
*************** aa931156abafd21884e323d601aa367f  gcc/te
*** 18545,18566 ****
  941b942a95d741f6184e06a6436ab545  gcc/testsuite/g++.dg/tree-ssa/pr22071.C
  7c4b92ce09c59b2004e7746f2b1bd386  gcc/testsuite/g++.dg/tree-ssa/pr22279.C
  1ea79bad3adcdf5685946133e3c5e95f  gcc/testsuite/g++.dg/tree-ssa/pr22404.C
! 26f6a330aaa1867dbab3e7a2226b985c  gcc/testsuite/g++.dg/tree-ssa/pr22444.C
  48e06b851bf1784a8edda8606ba10d99  gcc/testsuite/g++.dg/tree-ssa/pr22488.C
  65be1fbed029e9a8dc4952880c85496f  gcc/testsuite/g++.dg/tree-ssa/pr22550.C
  8757b801b93bd7b27358f98ca8bc55b2  gcc/testsuite/g++.dg/tree-ssa/pr22615.C
  73a20ce04e160fe0b32687e6154f256b  gcc/testsuite/g++.dg/tree-ssa/pr23046.C
  f9e0ba5e946f02655fec1329bedd4078  gcc/testsuite/g++.dg/tree-ssa/pr23164.C
  31fb06e70a65b02820509d29892e2f1c  gcc/testsuite/g++.dg/tree-ssa/pr23624.C
! f0b62140ca4403cb112429da4b989e68  gcc/testsuite/g++.dg/tree-ssa/pr23948.C
! cb28ea9929b05e6b833bd19e04d97d9c  gcc/testsuite/g++.dg/tree-ssa/pr24172.C
  44148757e03cea49e851edb978cc91a5  gcc/testsuite/g++.dg/tree-ssa/pr24231-1.C
  fc23f194bae9c81c5e59ce474597bd1c  gcc/testsuite/g++.dg/tree-ssa/pr24231-2.C
  673c806c4a52af61e84671cf0de44ae3  gcc/testsuite/g++.dg/tree-ssa/pr24231-3.C
  2c3a0f58b5c4d9910b46c690b81523e9  gcc/testsuite/g++.dg/tree-ssa/pr24238.C
  c7d08277c75dad45e79a0f43ab257c4c  gcc/testsuite/g++.dg/tree-ssa/pr24351-1.C
  35351f51c829a8c2ba2180c169d060d1  gcc/testsuite/g++.dg/tree-ssa/pr24351-2.C
! 374559cef47a384e5add68ead511bef5  gcc/testsuite/g++.dg/tree-ssa/pr24351-3.C
  9a08ef02da783cd1df3302f368440d82  gcc/testsuite/g++.dg/tree-ssa/pr24439.C
  106c9716380acfba412f6534beaba23b  gcc/testsuite/g++.dg/tree-ssa/pr25771.C
  9b83f20893ef5febef9dbb2f7ade2aa1  gcc/testsuite/g++.dg/tree-ssa/pr26140.C
--- 19610,19631 ----
  941b942a95d741f6184e06a6436ab545  gcc/testsuite/g++.dg/tree-ssa/pr22071.C
  7c4b92ce09c59b2004e7746f2b1bd386  gcc/testsuite/g++.dg/tree-ssa/pr22279.C
  1ea79bad3adcdf5685946133e3c5e95f  gcc/testsuite/g++.dg/tree-ssa/pr22404.C
! 869ca6729edd45e41ddf99e39c41ab5a  gcc/testsuite/g++.dg/tree-ssa/pr22444.C
  48e06b851bf1784a8edda8606ba10d99  gcc/testsuite/g++.dg/tree-ssa/pr22488.C
  65be1fbed029e9a8dc4952880c85496f  gcc/testsuite/g++.dg/tree-ssa/pr22550.C
  8757b801b93bd7b27358f98ca8bc55b2  gcc/testsuite/g++.dg/tree-ssa/pr22615.C
  73a20ce04e160fe0b32687e6154f256b  gcc/testsuite/g++.dg/tree-ssa/pr23046.C
  f9e0ba5e946f02655fec1329bedd4078  gcc/testsuite/g++.dg/tree-ssa/pr23164.C
  31fb06e70a65b02820509d29892e2f1c  gcc/testsuite/g++.dg/tree-ssa/pr23624.C
! e3c044472176ee87e073e6780c850eb9  gcc/testsuite/g++.dg/tree-ssa/pr23948.C
! 5269175eccfcfb278bcc40b5e6e628bd  gcc/testsuite/g++.dg/tree-ssa/pr24172.C
  44148757e03cea49e851edb978cc91a5  gcc/testsuite/g++.dg/tree-ssa/pr24231-1.C
  fc23f194bae9c81c5e59ce474597bd1c  gcc/testsuite/g++.dg/tree-ssa/pr24231-2.C
  673c806c4a52af61e84671cf0de44ae3  gcc/testsuite/g++.dg/tree-ssa/pr24231-3.C
  2c3a0f58b5c4d9910b46c690b81523e9  gcc/testsuite/g++.dg/tree-ssa/pr24238.C
  c7d08277c75dad45e79a0f43ab257c4c  gcc/testsuite/g++.dg/tree-ssa/pr24351-1.C
  35351f51c829a8c2ba2180c169d060d1  gcc/testsuite/g++.dg/tree-ssa/pr24351-2.C
! 6df50a18597dadadc96b6f211fbb2b8d  gcc/testsuite/g++.dg/tree-ssa/pr24351-3.C
  9a08ef02da783cd1df3302f368440d82  gcc/testsuite/g++.dg/tree-ssa/pr24439.C
  106c9716380acfba412f6534beaba23b  gcc/testsuite/g++.dg/tree-ssa/pr25771.C
  9b83f20893ef5febef9dbb2f7ade2aa1  gcc/testsuite/g++.dg/tree-ssa/pr26140.C
*************** c7d08277c75dad45e79a0f43ab257c4c  gcc/te
*** 18568,18576 ****
  0f61e3b02d9689c33c95f07a9421ed69  gcc/testsuite/g++.dg/tree-ssa/pr26443.C
  f08282d681d172ebc2a1c9dc4cc201ec  gcc/testsuite/g++.dg/tree-ssa/pr26757.C
  83ef921384e1984e08001c3c48ee8116  gcc/testsuite/g++.dg/tree-ssa/pr27090.C
! af26e0d1ce1be8b1c0a5623561e1b719  gcc/testsuite/g++.dg/tree-ssa/pr27283.C
! b70fdde5abd17c5811c3303beb4c4a27  gcc/testsuite/g++.dg/tree-ssa/pr27291.C
! 8068c5970209523958d75e5cd5284d28  gcc/testsuite/g++.dg/tree-ssa/pr27548.C
  b7fb5b853f7854c141799346f2354a0c  gcc/testsuite/g++.dg/tree-ssa/pr27549.C
  a4395760f907dfae0f2de3099740f694  gcc/testsuite/g++.dg/tree-ssa/pr27830.C
  086db4c922e923a9d5c7b0582a1ba9f5  gcc/testsuite/g++.dg/tree-ssa/pr27894.C
--- 19633,19641 ----
  0f61e3b02d9689c33c95f07a9421ed69  gcc/testsuite/g++.dg/tree-ssa/pr26443.C
  f08282d681d172ebc2a1c9dc4cc201ec  gcc/testsuite/g++.dg/tree-ssa/pr26757.C
  83ef921384e1984e08001c3c48ee8116  gcc/testsuite/g++.dg/tree-ssa/pr27090.C
! afe6c2d5f5fe286db0bf5a59a3834018  gcc/testsuite/g++.dg/tree-ssa/pr27283.C
! 73fb9ccb09fd5339af597037d7192b96  gcc/testsuite/g++.dg/tree-ssa/pr27291.C
! 267aeb20b2a1ded7a355eecdb05b69a1  gcc/testsuite/g++.dg/tree-ssa/pr27548.C
  b7fb5b853f7854c141799346f2354a0c  gcc/testsuite/g++.dg/tree-ssa/pr27549.C
  a4395760f907dfae0f2de3099740f694  gcc/testsuite/g++.dg/tree-ssa/pr27830.C
  086db4c922e923a9d5c7b0582a1ba9f5  gcc/testsuite/g++.dg/tree-ssa/pr27894.C
*************** a4395760f907dfae0f2de3099740f694  gcc/te
*** 18578,18592 ****
  8aea640c13c12833067fe21f2796f0ab  gcc/testsuite/g++.dg/tree-ssa/pr28238.C
  376ebc3d295f82c1a09d3726e5adb664  gcc/testsuite/g++.dg/tree-ssa/pr29902.C
  afc7bc370204b1ef71c9c0bc3e8dbc29  gcc/testsuite/g++.dg/tree-ssa/pr30738.C
! 691862ff577f51cf1b332c7f7cd607dc  gcc/testsuite/g++.dg/tree-ssa/pr31146-2.C
  868fafbbb5360ad48687b0b7c42c1442  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
! 8145ad082bc58f0ca57ae2527c124256  gcc/testsuite/g++.dg/tree-ssa/pr33604.C
  21910955fb98910ad2764ca14623015b  gcc/testsuite/g++.dg/tree-ssa/pr33615-2.C
  31238bfad33dfe182b23af6a088e736f  gcc/testsuite/g++.dg/tree-ssa/pr33615.C
  c896a5c6bc3c2c73fb372aa1df72f942  gcc/testsuite/g++.dg/tree-ssa/pr34063.C
! 070e8ded8a9dcc9c7e2b6d5878d21565  gcc/testsuite/g++.dg/tree-ssa/pr34355.C
  0fc8cb45517696ad7a137d07f7a59d5f  gcc/testsuite/g++.dg/tree-ssa/pr35144.C
  2f183741ea748ec4b30350602de8d364  gcc/testsuite/g++.dg/tree-ssa/pr36766.C
  7bc2202a0f82103a8b65611ca356c6a5  gcc/testsuite/g++.dg/tree-ssa/pr37084.C
--- 19643,19657 ----
  8aea640c13c12833067fe21f2796f0ab  gcc/testsuite/g++.dg/tree-ssa/pr28238.C
  376ebc3d295f82c1a09d3726e5adb664  gcc/testsuite/g++.dg/tree-ssa/pr29902.C
  afc7bc370204b1ef71c9c0bc3e8dbc29  gcc/testsuite/g++.dg/tree-ssa/pr30738.C
! 18903dd38f72e9e65b9dc4d3d145bf5a  gcc/testsuite/g++.dg/tree-ssa/pr31146-2.C
  868fafbbb5360ad48687b0b7c42c1442  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
! e55c38bdb49e4ebc48f20a03503a526c  gcc/testsuite/g++.dg/tree-ssa/pr33604.C
  21910955fb98910ad2764ca14623015b  gcc/testsuite/g++.dg/tree-ssa/pr33615-2.C
  31238bfad33dfe182b23af6a088e736f  gcc/testsuite/g++.dg/tree-ssa/pr33615.C
  c896a5c6bc3c2c73fb372aa1df72f942  gcc/testsuite/g++.dg/tree-ssa/pr34063.C
! dab07549f0ffaf191e79465ec7597845  gcc/testsuite/g++.dg/tree-ssa/pr34355.C
  0fc8cb45517696ad7a137d07f7a59d5f  gcc/testsuite/g++.dg/tree-ssa/pr35144.C
  2f183741ea748ec4b30350602de8d364  gcc/testsuite/g++.dg/tree-ssa/pr36766.C
  7bc2202a0f82103a8b65611ca356c6a5  gcc/testsuite/g++.dg/tree-ssa/pr37084.C
*************** ad29c1108af522a5f6549a85ceae70af  gcc/te
*** 18600,18615 ****
  47fd951fd9f0cc1a910b922ffc3e88de  gcc/testsuite/g++.dg/tree-ssa/pr40874.C
  ebc102beaae7f46ee82a1a04e81bc9bd  gcc/testsuite/g++.dg/tree-ssa/pr41186.C
  88c743ef9121547a2080de9e32812c79  gcc/testsuite/g++.dg/tree-ssa/pr41275.C
! 38a73fc6bfef43c5f0a4ee17439dd883  gcc/testsuite/g++.dg/tree-ssa/pr41428.C
  9fa7c9a1677573428aaa46e9bd0f12e7  gcc/testsuite/g++.dg/tree-ssa/pr41905.C
  91fe55fdc4c162c106f9fe9a49ed7329  gcc/testsuite/g++.dg/tree-ssa/pr41906.C
  b3721c1012726f86c682c19ffbad76a6  gcc/testsuite/g++.dg/tree-ssa/pr41961.C
! 007849af5fbebd55266eebd5fd1bb02a  gcc/testsuite/g++.dg/tree-ssa/pr42337.C
  e2c24d55a6b2e21cfe1781dded2f3465  gcc/testsuite/g++.dg/tree-ssa/pr43411.C
  4ae64fe9713a771de3eec6d2ef7baf39  gcc/testsuite/g++.dg/tree-ssa/pr44706.C
  bf024d05ee739cc11776ea4df13e3e55  gcc/testsuite/g++.dg/tree-ssa/pr44914.C
  96a471b3606608b932016a19f1c0ba4f  gcc/testsuite/g++.dg/tree-ssa/pr45453.C
! 04bb1b943423e49abfb61e0bb837327b  gcc/testsuite/g++.dg/tree-ssa/pr45605.C
  b9485492461c48ebd2bb0ed7c80fca4e  gcc/testsuite/g++.dg/tree-ssa/pr46228.C
  7b0e4882ed9e6e78fb17c21e24090631  gcc/testsuite/g++.dg/tree-ssa/pr46734.C
  248739916e15886a0a5ff7d34a13f30e  gcc/testsuite/g++.dg/tree-ssa/pr46987.C
--- 19665,19680 ----
  47fd951fd9f0cc1a910b922ffc3e88de  gcc/testsuite/g++.dg/tree-ssa/pr40874.C
  ebc102beaae7f46ee82a1a04e81bc9bd  gcc/testsuite/g++.dg/tree-ssa/pr41186.C
  88c743ef9121547a2080de9e32812c79  gcc/testsuite/g++.dg/tree-ssa/pr41275.C
! c8bd1a4a60ae7b3886c575e82da06256  gcc/testsuite/g++.dg/tree-ssa/pr41428.C
  9fa7c9a1677573428aaa46e9bd0f12e7  gcc/testsuite/g++.dg/tree-ssa/pr41905.C
  91fe55fdc4c162c106f9fe9a49ed7329  gcc/testsuite/g++.dg/tree-ssa/pr41906.C
  b3721c1012726f86c682c19ffbad76a6  gcc/testsuite/g++.dg/tree-ssa/pr41961.C
! ed4d9de99c0842c6382480defb9d9552  gcc/testsuite/g++.dg/tree-ssa/pr42337.C
  e2c24d55a6b2e21cfe1781dded2f3465  gcc/testsuite/g++.dg/tree-ssa/pr43411.C
  4ae64fe9713a771de3eec6d2ef7baf39  gcc/testsuite/g++.dg/tree-ssa/pr44706.C
  bf024d05ee739cc11776ea4df13e3e55  gcc/testsuite/g++.dg/tree-ssa/pr44914.C
  96a471b3606608b932016a19f1c0ba4f  gcc/testsuite/g++.dg/tree-ssa/pr45453.C
! 4cba7d5b509352db7bc78ba73db61313  gcc/testsuite/g++.dg/tree-ssa/pr45605.C
  b9485492461c48ebd2bb0ed7c80fca4e  gcc/testsuite/g++.dg/tree-ssa/pr46228.C
  7b0e4882ed9e6e78fb17c21e24090631  gcc/testsuite/g++.dg/tree-ssa/pr46734.C
  248739916e15886a0a5ff7d34a13f30e  gcc/testsuite/g++.dg/tree-ssa/pr46987.C
*************** a8fec5c2428ff5aa3f865ba34c0b76b8  gcc/te
*** 18631,18642 ****
  5d11e3a7158850be133a6ba2be17a10b  gcc/testsuite/g++.dg/tree-ssa/pr69547.C
  29a716065afe126c9fcc9a895a941c26  gcc/testsuite/g++.dg/tree-ssa/pr70171.C
  815c193d3fa9c0ad974dcb886f636cf1  gcc/testsuite/g++.dg/tree-ssa/pr77943.C
  4dd9b463d938a2a49979c117342e2bdd  gcc/testsuite/g++.dg/tree-ssa/pr79159.C
  442bcb6857ffbcbe494c50e1d85775f6  gcc/testsuite/g++.dg/tree-ssa/pr80293.C
  8b26e12d4d19370d3975bee970535253  gcc/testsuite/g++.dg/tree-ssa/pr81702.C
  99096ec4f30fcdb55089995ea662cded  gcc/testsuite/g++.dg/tree-ssa/pr83523.C
! 08545c99d345c60329ffe51e7e912bef  gcc/testsuite/g++.dg/tree-ssa/pr8781.C
! 745ed15ac080a9cf2f8647d424df67b5  gcc/testsuite/g++.dg/tree-ssa/pred-1.C
  cbfe7d75cb5b5c7850564b006625c5e3  gcc/testsuite/g++.dg/tree-ssa/ptrmemfield.C
  f115b68cd787a27ea9c1c1050f60230c  gcc/testsuite/g++.dg/tree-ssa/restrict1.C
  4cf4b44ab3ea1e0ad116a3e615779fc1  gcc/testsuite/g++.dg/tree-ssa/restrict2.C
--- 19696,19711 ----
  5d11e3a7158850be133a6ba2be17a10b  gcc/testsuite/g++.dg/tree-ssa/pr69547.C
  29a716065afe126c9fcc9a895a941c26  gcc/testsuite/g++.dg/tree-ssa/pr70171.C
  815c193d3fa9c0ad974dcb886f636cf1  gcc/testsuite/g++.dg/tree-ssa/pr77943.C
+ 0c275c07554a7eb95a28910de6641cec  gcc/testsuite/g++.dg/tree-ssa/pr78687.C
+ 2c62362225182e0ae545ccb7c9a93694  gcc/testsuite/g++.dg/tree-ssa/pr78847.C
  4dd9b463d938a2a49979c117342e2bdd  gcc/testsuite/g++.dg/tree-ssa/pr79159.C
  442bcb6857ffbcbe494c50e1d85775f6  gcc/testsuite/g++.dg/tree-ssa/pr80293.C
+ 2d9e32ff64b478d6b4a98b33e35d9b76  gcc/testsuite/g++.dg/tree-ssa/pr81408.C
  8b26e12d4d19370d3975bee970535253  gcc/testsuite/g++.dg/tree-ssa/pr81702.C
+ 07328ee6469ac64e4bd4807c2a72bd66  gcc/testsuite/g++.dg/tree-ssa/pr81719.C
  99096ec4f30fcdb55089995ea662cded  gcc/testsuite/g++.dg/tree-ssa/pr83523.C
! 0a76fdd924fd4c13bb8cfcecab0cb88a  gcc/testsuite/g++.dg/tree-ssa/pr8781.C
! b8201bfa7e55c2eb8fbf876e25c8e4a4  gcc/testsuite/g++.dg/tree-ssa/pred-1.C
  cbfe7d75cb5b5c7850564b006625c5e3  gcc/testsuite/g++.dg/tree-ssa/ptrmemfield.C
  f115b68cd787a27ea9c1c1050f60230c  gcc/testsuite/g++.dg/tree-ssa/restrict1.C
  4cf4b44ab3ea1e0ad116a3e615779fc1  gcc/testsuite/g++.dg/tree-ssa/restrict2.C
*************** d66caabc31972e027155b7fba60994d6  gcc/te
*** 18645,18651 ****
  7e99777ba86155c2eae8cd6e9f2f9239  gcc/testsuite/g++.dg/tree-ssa/ssa-cast-1.C
  bfa02bb1cdb37b00f78df34c92e226a6  gcc/testsuite/g++.dg/tree-ssa/ssa-dom.C
  44ff672956d28ec4f717a8207b10ae60  gcc/testsuite/g++.dg/tree-ssa/ssa-dse-1.C
! 194c078c257a96d2284a1f6a86f10748  gcc/testsuite/g++.dg/tree-ssa/ssa-dse-2.C
  7bce16fbd63e1571ea200b35c317c28f  gcc/testsuite/g++.dg/tree-ssa/ssa-dse-3.C
  7a7e045345b1c3cdd598ce2b7982183d  gcc/testsuite/g++.dg/tree-ssa/ssa-sra-1.C
  96f8700e9d4c1998c5e9b1d7fb20edd1  gcc/testsuite/g++.dg/tree-ssa/ssa-sra-2.C
--- 19714,19720 ----
  7e99777ba86155c2eae8cd6e9f2f9239  gcc/testsuite/g++.dg/tree-ssa/ssa-cast-1.C
  bfa02bb1cdb37b00f78df34c92e226a6  gcc/testsuite/g++.dg/tree-ssa/ssa-dom.C
  44ff672956d28ec4f717a8207b10ae60  gcc/testsuite/g++.dg/tree-ssa/ssa-dse-1.C
! cbba22e9568932c7e9798b4143e8babf  gcc/testsuite/g++.dg/tree-ssa/ssa-dse-2.C
  7bce16fbd63e1571ea200b35c317c28f  gcc/testsuite/g++.dg/tree-ssa/ssa-dse-3.C
  7a7e045345b1c3cdd598ce2b7982183d  gcc/testsuite/g++.dg/tree-ssa/ssa-sra-1.C
  96f8700e9d4c1998c5e9b1d7fb20edd1  gcc/testsuite/g++.dg/tree-ssa/ssa-sra-2.C
*************** bfa02bb1cdb37b00f78df34c92e226a6  gcc/te
*** 18653,18658 ****
--- 19722,19729 ----
  21d667243f1873cc74a1060b9e5a0f15  gcc/testsuite/g++.dg/tree-ssa/ssa-store-ccp-1.C
  49ee787a379cb6910b9e5718ae694e10  gcc/testsuite/g++.dg/tree-ssa/stabilize1.C
  0fb08fd6d187247ae5872931e884061c  gcc/testsuite/g++.dg/tree-ssa/tmmti.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
  c4fadb9b98427f8db9f02151bb2399af  gcc/testsuite/g++.dg/tsan/atomic_free.C
  3e39048e4c714c6f83956bd90c7e0e01  gcc/testsuite/g++.dg/tsan/atomic_free2.C
*************** dc3ef40ef566357c4f0d41f5f42c2bcc  gcc/te
*** 18663,18669 ****
  5625f8a86cffc9adf170a42afdd2c663  gcc/testsuite/g++.dg/tsan/fd_close_norace2.C
  cd932ca55aa9252a2188bb383ac82ed7  gcc/testsuite/g++.dg/tsan/pr64265.C
  96f255f38a0cb7c1f48e01e6e96d0abf  gcc/testsuite/g++.dg/tsan/pr80110.C
! 136e4816da3e3fb612e7cc3992953c55  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
--- 19734,19740 ----
  5625f8a86cffc9adf170a42afdd2c663  gcc/testsuite/g++.dg/tsan/fd_close_norace2.C
  cd932ca55aa9252a2188bb383ac82ed7  gcc/testsuite/g++.dg/tsan/pr64265.C
  96f255f38a0cb7c1f48e01e6e96d0abf  gcc/testsuite/g++.dg/tsan/pr80110.C
! 6535a165cd663769deba37a134d37175  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
*************** a5c9a4af6ba744a4f85e714099331f92  gcc/te
*** 18676,18682 ****
  26bed17d6378c3b74d4a7622f70079a7  gcc/testsuite/g++.dg/ubsan/div-by-zero-1.C
  5f6adf84c6b049487918b36dbd808b87  gcc/testsuite/g++.dg/ubsan/div-by-zero-2.C
  25697e9d3c9eae68321ae8a6d93e1ddf  gcc/testsuite/g++.dg/ubsan/div-by-zero-3.C
! 2e0109a65e2e2a01e3066892b1dd1e46  gcc/testsuite/g++.dg/ubsan/float-cast-overflow-bf.C
  c7511655f2d54310866c998269060e60  gcc/testsuite/g++.dg/ubsan/null-1.C
  58dd5b6b76901b231167f7516ed08820  gcc/testsuite/g++.dg/ubsan/null-2.C
  5579e272add390f8945bdcaa9eb5868a  gcc/testsuite/g++.dg/ubsan/null-3.C
--- 19747,19753 ----
  26bed17d6378c3b74d4a7622f70079a7  gcc/testsuite/g++.dg/ubsan/div-by-zero-1.C
  5f6adf84c6b049487918b36dbd808b87  gcc/testsuite/g++.dg/ubsan/div-by-zero-2.C
  25697e9d3c9eae68321ae8a6d93e1ddf  gcc/testsuite/g++.dg/ubsan/div-by-zero-3.C
! f37ad4b9712d576fe6db63c0d8c23c18  gcc/testsuite/g++.dg/ubsan/float-cast-overflow-bf.C
  c7511655f2d54310866c998269060e60  gcc/testsuite/g++.dg/ubsan/null-1.C
  58dd5b6b76901b231167f7516ed08820  gcc/testsuite/g++.dg/ubsan/null-2.C
  5579e272add390f8945bdcaa9eb5868a  gcc/testsuite/g++.dg/ubsan/null-3.C
*************** f4706f41ca654ceb8586f65654dc9bed  gcc/te
*** 18684,18690 ****
  e33cd115b2a5b1796134963715ca2601  gcc/testsuite/g++.dg/ubsan/null-5.C
  ebc4dd8d7b9c346d612ab748d0d8bda0  gcc/testsuite/g++.dg/ubsan/null-6.C
  9a6263b0a0fc24a8d910d2b11d215637  gcc/testsuite/g++.dg/ubsan/null-7.C
! fd3675e0e495ef66af8324e0f90aeacf  gcc/testsuite/g++.dg/ubsan/null-8.C
  684067ddb47560c655180c085c6980e8  gcc/testsuite/g++.dg/ubsan/object-size-1.C
  a654df71119821a4303cc9fe0501191b  gcc/testsuite/g++.dg/ubsan/pr59250.C
  420a6623146bb014dc1310134356d81f  gcc/testsuite/g++.dg/ubsan/pr59306.C
--- 19755,19761 ----
  e33cd115b2a5b1796134963715ca2601  gcc/testsuite/g++.dg/ubsan/null-5.C
  ebc4dd8d7b9c346d612ab748d0d8bda0  gcc/testsuite/g++.dg/ubsan/null-6.C
  9a6263b0a0fc24a8d910d2b11d215637  gcc/testsuite/g++.dg/ubsan/null-7.C
! 238c69e48fef47908a681867b7f50817  gcc/testsuite/g++.dg/ubsan/null-8.C
  684067ddb47560c655180c085c6980e8  gcc/testsuite/g++.dg/ubsan/object-size-1.C
  a654df71119821a4303cc9fe0501191b  gcc/testsuite/g++.dg/ubsan/pr59250.C
  420a6623146bb014dc1310134356d81f  gcc/testsuite/g++.dg/ubsan/pr59306.C
*************** f79c5c3fe416583c001d6aaea7674732  gcc/te
*** 18695,18708 ****
  466d1bf6779270f6883dced3f26abd19  gcc/testsuite/g++.dg/ubsan/pr61272.C
  f9e7d9219975e0613b7d53ed55c87efe  gcc/testsuite/g++.dg/ubsan/pr63813.C
  a84e2582a036f0562ca82b54e5c2ead4  gcc/testsuite/g++.dg/ubsan/pr63913.C
! 71359621a8d570a01e5c058bc6481a5b  gcc/testsuite/g++.dg/ubsan/pr63956.C
  905e96bca11e38275e3c78595acfb8bc  gcc/testsuite/g++.dg/ubsan/pr64632.C
  ce25b7039c57de8705414023fc9b982c  gcc/testsuite/g++.dg/ubsan/pr64717-1.C
  831fc21e28710642f430322c48eabad9  gcc/testsuite/g++.dg/ubsan/pr64717-2.C
  54361cd42a8bed584d37949028315596  gcc/testsuite/g++.dg/ubsan/pr64984.C
  ef9929349a5d5780851a743ed422521f  gcc/testsuite/g++.dg/ubsan/pr65000.C
! 953a624cdcfd65c5c56f8f07b290aa13  gcc/testsuite/g++.dg/ubsan/pr65019.C
! 33ac97c4069ec3f6ebc9eb8c47f60bf7  gcc/testsuite/g++.dg/ubsan/pr65583.C
  6b9e3645a368a7574abbb4bdca772998  gcc/testsuite/g++.dg/ubsan/pr65610.C
  f2d0208086b464032d5e78dca9f9c038  gcc/testsuite/g++.dg/ubsan/pr66452.C
  a31d68dcdd494a9e3696522314a2d394  gcc/testsuite/g++.dg/ubsan/pr66977.C
--- 19766,19779 ----
  466d1bf6779270f6883dced3f26abd19  gcc/testsuite/g++.dg/ubsan/pr61272.C
  f9e7d9219975e0613b7d53ed55c87efe  gcc/testsuite/g++.dg/ubsan/pr63813.C
  a84e2582a036f0562ca82b54e5c2ead4  gcc/testsuite/g++.dg/ubsan/pr63913.C
! 5f2475ded1b4da28fab809c387122589  gcc/testsuite/g++.dg/ubsan/pr63956.C
  905e96bca11e38275e3c78595acfb8bc  gcc/testsuite/g++.dg/ubsan/pr64632.C
  ce25b7039c57de8705414023fc9b982c  gcc/testsuite/g++.dg/ubsan/pr64717-1.C
  831fc21e28710642f430322c48eabad9  gcc/testsuite/g++.dg/ubsan/pr64717-2.C
  54361cd42a8bed584d37949028315596  gcc/testsuite/g++.dg/ubsan/pr64984.C
  ef9929349a5d5780851a743ed422521f  gcc/testsuite/g++.dg/ubsan/pr65000.C
! 5403a132e4165e8898a2f4860e743e2f  gcc/testsuite/g++.dg/ubsan/pr65019.C
! 62241b92aa2450cf7825a725612b0b85  gcc/testsuite/g++.dg/ubsan/pr65583.C
  6b9e3645a368a7574abbb4bdca772998  gcc/testsuite/g++.dg/ubsan/pr65610.C
  f2d0208086b464032d5e78dca9f9c038  gcc/testsuite/g++.dg/ubsan/pr66452.C
  a31d68dcdd494a9e3696522314a2d394  gcc/testsuite/g++.dg/ubsan/pr66977.C
*************** af8fe8f8c142ba4099bf3fd97c7fb5f4  gcc/te
*** 18716,18724 ****
  1248cf51218287e0763e9bafddb6e95e  gcc/testsuite/g++.dg/ubsan/pr70847.C
  3ad68deac55fd26921bbcc306e06b206  gcc/testsuite/g++.dg/ubsan/pr71393.C
  a652d398f7e96504646f5368eec534a2  gcc/testsuite/g++.dg/ubsan/pr71512.C
! e9be4b888275b62bd25870b8c383a947  gcc/testsuite/g++.dg/ubsan/pr79589.C
  877ddebaea7d4ee168d4948008cbfde1  gcc/testsuite/g++.dg/ubsan/pr80349-2.C
  e404ef8c87748bc2b0f6de9481e23e82  gcc/testsuite/g++.dg/ubsan/pr80349.C
  bf25f9370a83e528b54a50db69de9555  gcc/testsuite/g++.dg/ubsan/pr80403-2.C
  e591d6e79d797db5dbf4433628858bdf  gcc/testsuite/g++.dg/ubsan/pr80403.C
  f8236a695b3582ab58c4cbaaaf837f16  gcc/testsuite/g++.dg/ubsan/pr80404.C
--- 19787,19796 ----
  1248cf51218287e0763e9bafddb6e95e  gcc/testsuite/g++.dg/ubsan/pr70847.C
  3ad68deac55fd26921bbcc306e06b206  gcc/testsuite/g++.dg/ubsan/pr71393.C
  a652d398f7e96504646f5368eec534a2  gcc/testsuite/g++.dg/ubsan/pr71512.C
! 3f818fdad1ae21bc903e911f0e180b20  gcc/testsuite/g++.dg/ubsan/pr79589.C
  877ddebaea7d4ee168d4948008cbfde1  gcc/testsuite/g++.dg/ubsan/pr80349-2.C
  e404ef8c87748bc2b0f6de9481e23e82  gcc/testsuite/g++.dg/ubsan/pr80349.C
+ 791a543b09517ce5dc8f717527714626  gcc/testsuite/g++.dg/ubsan/pr80386.C
  bf25f9370a83e528b54a50db69de9555  gcc/testsuite/g++.dg/ubsan/pr80403-2.C
  e591d6e79d797db5dbf4433628858bdf  gcc/testsuite/g++.dg/ubsan/pr80403.C
  f8236a695b3582ab58c4cbaaaf837f16  gcc/testsuite/g++.dg/ubsan/pr80404.C
*************** f8236a695b3582ab58c4cbaaaf837f16  gcc/te
*** 18728,18750 ****
  df2cb7ad5e4752d9785cfdde449e528c  gcc/testsuite/g++.dg/ubsan/pr81125.C
  56dbd5bcb2dcecefd337ad0be152e680  gcc/testsuite/g++.dg/ubsan/pr81209.C
  e8bc9d8d25d9976d39a6ac63446f8a90  gcc/testsuite/g++.dg/ubsan/pr81212.C
  9d4cf2cbb1dc2baf567abd24e6896123  gcc/testsuite/g++.dg/ubsan/pr81929.C
! 23b03c04f7b3df05a2e3c261dbfbc91d  gcc/testsuite/g++.dg/ubsan/return-1.C
! c729687b59770dc8f9e0991370cb1879  gcc/testsuite/g++.dg/ubsan/return-2.C
! 40257a16173db28137a5538f88bfea0e  gcc/testsuite/g++.dg/ubsan/return-3.C
  496806c2186ed7c6789ad05301dec8f8  gcc/testsuite/g++.dg/ubsan/return-4.C
  97027d455c8b2512011502382e6c1745  gcc/testsuite/g++.dg/ubsan/return-5.C
  ce973542ab3756eba13870ee1f67fdef  gcc/testsuite/g++.dg/ubsan/return-6.C
! 4da4c2bc9259c8c4cc7c70f5b9c60f92  gcc/testsuite/g++.dg/ubsan/return-7.C
! 9da27b7a31809bb505091747e80d8b4c  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
! bbd48a1573bd960959a8345bfc55d5db  gcc/testsuite/g++.dg/ubsan/ubsan.exp
  16ba7a955f1982e7162e1fb6cdd0e29e  gcc/testsuite/g++.dg/ubsan/vla-1.C
  5217088a7dd4248f6e9f0170ee0f262b  gcc/testsuite/g++.dg/ubsan/vptr-1.C
  5de2b1282f667edcca7c8b102d137b0d  gcc/testsuite/g++.dg/ubsan/vptr-10.C
  7871fdd28f8d26bc692ef38fd24d6573  gcc/testsuite/g++.dg/ubsan/vptr-11.C
  cef046f562c0a23eb331cea94cd5b44f  gcc/testsuite/g++.dg/ubsan/vptr-2.C
  729147822cd9bf5bf718456c1dbff28d  gcc/testsuite/g++.dg/ubsan/vptr-3.C
  6d748dbe9831f330d94427b44994cd9f  gcc/testsuite/g++.dg/ubsan/vptr-4.C
--- 19800,19835 ----
  df2cb7ad5e4752d9785cfdde449e528c  gcc/testsuite/g++.dg/ubsan/pr81125.C
  56dbd5bcb2dcecefd337ad0be152e680  gcc/testsuite/g++.dg/ubsan/pr81209.C
  e8bc9d8d25d9976d39a6ac63446f8a90  gcc/testsuite/g++.dg/ubsan/pr81212.C
+ 3fd8688dcef75e272bea7fdbd4359013  gcc/testsuite/g++.dg/ubsan/pr81262.C
+ e3c536c149d156df77d35f4a807c5be0  gcc/testsuite/g++.dg/ubsan/pr81281-aux.cc
+ 9643fff3c5e922785df0f3bf81a0da9c  gcc/testsuite/g++.dg/ubsan/pr81281.C
+ 6eb1918225ea84583b4264928d5fa686  gcc/testsuite/g++.dg/ubsan/pr81530.C
  9d4cf2cbb1dc2baf567abd24e6896123  gcc/testsuite/g++.dg/ubsan/pr81929.C
! 142068f8629338428e60b674ed0586a4  gcc/testsuite/g++.dg/ubsan/pr82353-2-aux.cc
! ccd812768635f8e01d90fa3320899ee9  gcc/testsuite/g++.dg/ubsan/pr82353-2.C
! 5746cf0ec0dd63ea31267fa8c211bbf9  gcc/testsuite/g++.dg/ubsan/pr82353-2.h
! 487fcd9fa39a58c6c8277c5e36fe5c31  gcc/testsuite/g++.dg/ubsan/pr82353.C
! 589c762c486b69664ddd1b82b8e4638a  gcc/testsuite/g++.dg/ubsan/pr83555.C
! 1e73d2818207263906c21f51263036de  gcc/testsuite/g++.dg/ubsan/pr83987-2.C
! 18c06ad656504d030053c0f32b2e5da2  gcc/testsuite/g++.dg/ubsan/pr83987.C
! 94af237452630bc235b32950ee64cecc  gcc/testsuite/g++.dg/ubsan/pr85029.C
! 0a28657c9b1173b94a86c1d7bbf0da3c  gcc/testsuite/g++.dg/ubsan/return-1.C
! a87e589225f8d46ff1e842371d5d60b8  gcc/testsuite/g++.dg/ubsan/return-2.C
! c05485082568567a8bc2c41519fc374b  gcc/testsuite/g++.dg/ubsan/return-3.C
  496806c2186ed7c6789ad05301dec8f8  gcc/testsuite/g++.dg/ubsan/return-4.C
  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
! 021d46b7594f5436ac2090b98bf06d58  gcc/testsuite/g++.dg/ubsan/ubsan.exp
  16ba7a955f1982e7162e1fb6cdd0e29e  gcc/testsuite/g++.dg/ubsan/vla-1.C
  5217088a7dd4248f6e9f0170ee0f262b  gcc/testsuite/g++.dg/ubsan/vptr-1.C
  5de2b1282f667edcca7c8b102d137b0d  gcc/testsuite/g++.dg/ubsan/vptr-10.C
  7871fdd28f8d26bc692ef38fd24d6573  gcc/testsuite/g++.dg/ubsan/vptr-11.C
+ 7ea8c58d0c37f70dfea7b71ab85c3a47  gcc/testsuite/g++.dg/ubsan/vptr-12.C
  cef046f562c0a23eb331cea94cd5b44f  gcc/testsuite/g++.dg/ubsan/vptr-2.C
  729147822cd9bf5bf718456c1dbff28d  gcc/testsuite/g++.dg/ubsan/vptr-3.C
  6d748dbe9831f330d94427b44994cd9f  gcc/testsuite/g++.dg/ubsan/vptr-4.C
*************** b9654cf3094250bbfcbf3eb545179ab8  gcc/te
*** 18779,18785 ****
  2f3816d0e6487939ea2be2cc9c3d9ce7  gcc/testsuite/g++.dg/vect/pr33835.cc
  2e2b8dd8b937805b7fd60158c01a2598  gcc/testsuite/g++.dg/vect/pr33860.cc
  f7e00c99dfe5247d1f4e09d61bbe7662  gcc/testsuite/g++.dg/vect/pr33860a.cc
! 6527716303c478d80f2e0f2615cd227f  gcc/testsuite/g++.dg/vect/pr36648.cc
  773b9686259a86422856a8bcf252cee5  gcc/testsuite/g++.dg/vect/pr37143.C
  df0a8be418558aea938e13b5f6a34f0f  gcc/testsuite/g++.dg/vect/pr37174.cc
  89b57c9cc24aec3cfe0e8765cda781bf  gcc/testsuite/g++.dg/vect/pr43771.cc
--- 19864,19870 ----
  2f3816d0e6487939ea2be2cc9c3d9ce7  gcc/testsuite/g++.dg/vect/pr33835.cc
  2e2b8dd8b937805b7fd60158c01a2598  gcc/testsuite/g++.dg/vect/pr33860.cc
  f7e00c99dfe5247d1f4e09d61bbe7662  gcc/testsuite/g++.dg/vect/pr33860a.cc
! 3aa15e1fb7d0cf09721a476adcbe7cf3  gcc/testsuite/g++.dg/vect/pr36648.cc
  773b9686259a86422856a8bcf252cee5  gcc/testsuite/g++.dg/vect/pr37143.C
  df0a8be418558aea938e13b5f6a34f0f  gcc/testsuite/g++.dg/vect/pr37174.cc
  89b57c9cc24aec3cfe0e8765cda781bf  gcc/testsuite/g++.dg/vect/pr43771.cc
*************** f9ec9f29d29198d0fd2269ad44e55b21  gcc/te
*** 18793,18810 ****
  2824b200beb7ec4230cc67b4b7d6e059  gcc/testsuite/g++.dg/vect/pr60023.cc
  6a10e41979f5c706e391e2465c5a035a  gcc/testsuite/g++.dg/vect/pr60559.cc
  1c91c75dd3d60b2611608422046c8fc5  gcc/testsuite/g++.dg/vect/pr60729.cc
! 3b95da44952efb51ed57211c567db1cd  gcc/testsuite/g++.dg/vect/pr60836.cc
  b7b79e1c6424f4373d8f860593191fd9  gcc/testsuite/g++.dg/vect/pr60896.cc
  e61f16419adb6ed9aef99bd3303db30a  gcc/testsuite/g++.dg/vect/pr64410.cc
! 63da5ad9bac57c606168e0aca4c2f76b  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
  d09670c30fbad6b7f0837b7f7af80847  gcc/testsuite/g++.dg/vect/pr68762.h
  82eabbc7d36851332f92ee1b37756964  gcc/testsuite/g++.dg/vect/pr70726.cc
! b1978c6f16c1fc80de625694e19a8dcb  gcc/testsuite/g++.dg/vect/pr70729-nest.cc
! e5c4e8df18b9ebc0d660121856c422c3  gcc/testsuite/g++.dg/vect/pr70729.cc
! 38850e627ed3358f676624ac5c0c6286  gcc/testsuite/g++.dg/vect/pr70944.cc
  0258e5eedd1d313ba5369d22c0225708  gcc/testsuite/g++.dg/vect/pr71483.c
  bf5c8ee938eb29d9c5f2aad606d6074e  gcc/testsuite/g++.dg/vect/simd-bool-comparison-1.cc
  b83eac59b493f9c580ee676cf4be54bc  gcc/testsuite/g++.dg/vect/simd-bool-comparison-2.cc
  60c78be6738c5a1041dce7fc1657bcf0  gcc/testsuite/g++.dg/vect/simd-clone-1.cc
--- 19878,19897 ----
  2824b200beb7ec4230cc67b4b7d6e059  gcc/testsuite/g++.dg/vect/pr60023.cc
  6a10e41979f5c706e391e2465c5a035a  gcc/testsuite/g++.dg/vect/pr60559.cc
  1c91c75dd3d60b2611608422046c8fc5  gcc/testsuite/g++.dg/vect/pr60729.cc
! 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
  d09670c30fbad6b7f0837b7f7af80847  gcc/testsuite/g++.dg/vect/pr68762.h
  82eabbc7d36851332f92ee1b37756964  gcc/testsuite/g++.dg/vect/pr70726.cc
! 45fba772e8df802bc65558d22969f8bc  gcc/testsuite/g++.dg/vect/pr70729-nest.cc
! e13bcab5554300f88fc649bd78d61877  gcc/testsuite/g++.dg/vect/pr70729.cc
! dc35acb0f3b80c07fb4789cb89eb09b2  gcc/testsuite/g++.dg/vect/pr70944.cc
  0258e5eedd1d313ba5369d22c0225708  gcc/testsuite/g++.dg/vect/pr71483.c
+ 57ec4c770d54501152de549d1dd29844  gcc/testsuite/g++.dg/vect/pr84556.cc
  bf5c8ee938eb29d9c5f2aad606d6074e  gcc/testsuite/g++.dg/vect/simd-bool-comparison-1.cc
  b83eac59b493f9c580ee676cf4be54bc  gcc/testsuite/g++.dg/vect/simd-bool-comparison-2.cc
  60c78be6738c5a1041dce7fc1657bcf0  gcc/testsuite/g++.dg/vect/simd-clone-1.cc
*************** b8fb5b23ece050421d669915c600780b  gcc/te
*** 18819,18829 ****
  3bc95c24ca829b61efcb7f80670d3ab5  gcc/testsuite/g++.dg/vect/simd-mask-store-bool.cc
  3c7b50dc56c581720a466e94943ccdae  gcc/testsuite/g++.dg/vect/slp-pr50413.cc
  ba398e1bec8514d144840b9f8de00b90  gcc/testsuite/g++.dg/vect/slp-pr50819.cc
! a976c3c4127b9466ba37fcecefebf7c7  gcc/testsuite/g++.dg/vect/slp-pr56812.cc
! 6d862c1d2675e9e3a46c98367d5a527c  gcc/testsuite/g++.dg/vect/vect.exp
  004211d88a82d47168d76431c222f469  gcc/testsuite/g++.dg/warn/Waddress-1.C
  76f33c61a70fa23046bdab31539d3229  gcc/testsuite/g++.dg/warn/Waddress-2.C
! 040bb6272c6d35eb2460b71904903b5a  gcc/testsuite/g++.dg/warn/Waddress-3.C
  dc053c634cf498503fefe544d38cf6bd  gcc/testsuite/g++.dg/warn/Waddress-4.C
  38c1d3bcd70aac8e2e1f0e19b075e6a9  gcc/testsuite/g++.dg/warn/Wall-write-strings.C
  0f1f38f56c03d47912497ae9c82786a3  gcc/testsuite/g++.dg/warn/Walways-true-1.C
--- 19906,19917 ----
  3bc95c24ca829b61efcb7f80670d3ab5  gcc/testsuite/g++.dg/vect/simd-mask-store-bool.cc
  3c7b50dc56c581720a466e94943ccdae  gcc/testsuite/g++.dg/vect/slp-pr50413.cc
  ba398e1bec8514d144840b9f8de00b90  gcc/testsuite/g++.dg/vect/slp-pr50819.cc
! 4574f452414a232f254cd601941c200f  gcc/testsuite/g++.dg/vect/slp-pr56812.cc
! dff4dea072b5f9c86d85e15ecf153c04  gcc/testsuite/g++.dg/vect/vect.exp
! 71d10a285587bb46cc1bf1ab339fa743  gcc/testsuite/g++.dg/warn/83895.C
  004211d88a82d47168d76431c222f469  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
  38c1d3bcd70aac8e2e1f0e19b075e6a9  gcc/testsuite/g++.dg/warn/Wall-write-strings.C
  0f1f38f56c03d47912497ae9c82786a3  gcc/testsuite/g++.dg/warn/Walways-true-1.C
*************** d489a76c7b7ab5b0e165f2342a4e6974  gcc/te
*** 18841,18863 ****
  c2debf54ffb3d60acfddad10573c458f  gcc/testsuite/g++.dg/warn/Wbraces2.C
  76fb8518d0b0d88c1bd0f1b96f745523  gcc/testsuite/g++.dg/warn/Wbraces3.C
  5f1dff614fdd00e273620130a4604d9c  gcc/testsuite/g++.dg/warn/Wbraces4.C
  3667162d7aa037ab6197e7d3ffea1a6c  gcc/testsuite/g++.dg/warn/Wcast-qual1.C
  f50d5f5cee6b74c0a37e13edc9036b8a  gcc/testsuite/g++.dg/warn/Wcast-qual2.C
  d15107f3d840c1f7539a3dc2f640a5df  gcc/testsuite/g++.dg/warn/Wchar-subscripts-2.C
  405a43ec2fe3003f95668d54092d08b1  gcc/testsuite/g++.dg/warn/Wchar-subscripts.C
  3ea384ce70a66de19d8ab92542a57af7  gcc/testsuite/g++.dg/warn/Wconditionally-supported-1.C
  2087b0b8d0d8185a0532862748386767  gcc/testsuite/g++.dg/warn/Wconversion-integer.C
! a62c97169e0ae22bf0b06ddfa18a4a94  gcc/testsuite/g++.dg/warn/Wconversion-null-2.C
  b256e2e86a0c654704aeae4db0b68327  gcc/testsuite/g++.dg/warn/Wconversion-null-3.C
  c0ce42965ebf4e59b1164a436748625c  gcc/testsuite/g++.dg/warn/Wconversion-null.C
  2c4607ce27b629a3ea583bebe9da3a48  gcc/testsuite/g++.dg/warn/Wconversion-pr34389.C
! 12635f3b1c3748284134746e14164a12  gcc/testsuite/g++.dg/warn/Wconversion-real-integer-3.C
  83f25a4a0c15a025b671a5728685be6c  gcc/testsuite/g++.dg/warn/Wconversion-real-integer.C
! e500a5fb14356d2cf44b0be5f4819835  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
! 7a1aeeb61c3d0cced96983f6490193ae  gcc/testsuite/g++.dg/warn/Wconversion3.C
! 0588aac3dfc6287be1495e6c0e3563e0  gcc/testsuite/g++.dg/warn/Wconversion4.C
  2d2da24222711602624d6870a966c8b0  gcc/testsuite/g++.dg/warn/Wctor-dtor.C
  916bda812a6e669a84ca9dd6d32dc787  gcc/testsuite/g++.dg/warn/Wdelete-incomplete-1.C
  e5cc13e8f74ebb47c678a7c5745e57a8  gcc/testsuite/g++.dg/warn/Wdelete-incomplete-2.C
--- 19929,19955 ----
  c2debf54ffb3d60acfddad10573c458f  gcc/testsuite/g++.dg/warn/Wbraces2.C
  76fb8518d0b0d88c1bd0f1b96f745523  gcc/testsuite/g++.dg/warn/Wbraces3.C
  5f1dff614fdd00e273620130a4604d9c  gcc/testsuite/g++.dg/warn/Wbraces4.C
+ 7c5df12c3160a89ece4ab294a8e60b2d  gcc/testsuite/g++.dg/warn/Wbuiltin_declaration_mismatch-1.C
  3667162d7aa037ab6197e7d3ffea1a6c  gcc/testsuite/g++.dg/warn/Wcast-qual1.C
  f50d5f5cee6b74c0a37e13edc9036b8a  gcc/testsuite/g++.dg/warn/Wcast-qual2.C
+ 1023bddc0d37bad1f0b8f793565bc98a  gcc/testsuite/g++.dg/warn/Wcatch-value-1.C
+ 27adfc3916d8db4ab05467f143341e6c  gcc/testsuite/g++.dg/warn/Wcatch-value-2.C
+ eab8765fe78ac7689bde789090548173  gcc/testsuite/g++.dg/warn/Wcatch-value-3.C
  d15107f3d840c1f7539a3dc2f640a5df  gcc/testsuite/g++.dg/warn/Wchar-subscripts-2.C
  405a43ec2fe3003f95668d54092d08b1  gcc/testsuite/g++.dg/warn/Wchar-subscripts.C
  3ea384ce70a66de19d8ab92542a57af7  gcc/testsuite/g++.dg/warn/Wconditionally-supported-1.C
  2087b0b8d0d8185a0532862748386767  gcc/testsuite/g++.dg/warn/Wconversion-integer.C
! a37b991eb8dccd0a84c0bdc7607d2d44  gcc/testsuite/g++.dg/warn/Wconversion-null-2.C
  b256e2e86a0c654704aeae4db0b68327  gcc/testsuite/g++.dg/warn/Wconversion-null-3.C
  c0ce42965ebf4e59b1164a436748625c  gcc/testsuite/g++.dg/warn/Wconversion-null.C
  2c4607ce27b629a3ea583bebe9da3a48  gcc/testsuite/g++.dg/warn/Wconversion-pr34389.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
! f7dd0981dd1da24582fb107a2de2d745  gcc/testsuite/g++.dg/warn/Wconversion3.C
! 45616b67235f1f39274574bca634f499  gcc/testsuite/g++.dg/warn/Wconversion4.C
  2d2da24222711602624d6870a966c8b0  gcc/testsuite/g++.dg/warn/Wctor-dtor.C
  916bda812a6e669a84ca9dd6d32dc787  gcc/testsuite/g++.dg/warn/Wdelete-incomplete-1.C
  e5cc13e8f74ebb47c678a7c5745e57a8  gcc/testsuite/g++.dg/warn/Wdelete-incomplete-2.C
*************** ee0b4d9e331b2ed8b1a730e066fc0084  gcc/te
*** 18872,18889 ****
  f96322151d880e92c72d4b0060bb14e3  gcc/testsuite/g++.dg/warn/Wduplicated-branches1.C
  b084f0b1f3769218f6a37cbfa2ed89d4  gcc/testsuite/g++.dg/warn/Wduplicated-branches2.C
  8c92a45aa3c76f7c774e05c8cc46453c  gcc/testsuite/g++.dg/warn/Wduplicated-branches3.C
  8b9cbae2542d0ee1294a9aba56467023  gcc/testsuite/g++.dg/warn/Wenum-compare-no-2.C
  0159dc16051c0a3deaba6db2eeae85f8  gcc/testsuite/g++.dg/warn/Wenum-compare-no.C
  37c21b63185cc6eb45eceb0b75e600a3  gcc/testsuite/g++.dg/warn/Wenum-compare.C
  d267dddcbfdc3e1208a643c82d1c0886  gcc/testsuite/g++.dg/warn/Wextra-1.C
  fd872aba23fcbd09e4b5cb3b61dbaadf  gcc/testsuite/g++.dg/warn/Wextra-2.C
  7261164c9598bc81ae5d66213779d5d4  gcc/testsuite/g++.dg/warn/Wextra-3.C
  5eb7ea7761d111befc6050ff4baa1559  gcc/testsuite/g++.dg/warn/Wfloat-equal-1.C
! b8518ff0a2e06c127ba0871da37351cd  gcc/testsuite/g++.dg/warn/Wformat-1.C
  caf05a8324926e9472342da0584539ad  gcc/testsuite/g++.dg/warn/Wignored-attributes-1.C
  55295c0bc11e5dffe89757d080280054  gcc/testsuite/g++.dg/warn/Wignored-attributes-2.C
  223a9cc82cfdc42f62bbb5398c219cc8  gcc/testsuite/g++.dg/warn/Wimplicit-fallthrough-1.C
  e8496d82a0f58fc4bc26efa7a0a75fd3  gcc/testsuite/g++.dg/warn/Wimplicit-fallthrough-2.C
  5aaa168dd17b2a6cccd0048ee7abaa2e  gcc/testsuite/g++.dg/warn/Winit-self-2.C
  279c1660a514d3b05c577d1c615c3a99  gcc/testsuite/g++.dg/warn/Winit-self-3.C
  6a51f790f1905c68f12c2109638c7edb  gcc/testsuite/g++.dg/warn/Winit-self.C
--- 19964,19987 ----
  f96322151d880e92c72d4b0060bb14e3  gcc/testsuite/g++.dg/warn/Wduplicated-branches1.C
  b084f0b1f3769218f6a37cbfa2ed89d4  gcc/testsuite/g++.dg/warn/Wduplicated-branches2.C
  8c92a45aa3c76f7c774e05c8cc46453c  gcc/testsuite/g++.dg/warn/Wduplicated-branches3.C
+ ece1d03dfdd44a22781b77ed9ec271d4  gcc/testsuite/g++.dg/warn/Wduplicated-branches4.C
+ c32e2d9c26f73ceab75448129f154a62  gcc/testsuite/g++.dg/warn/Wduplicated-branches5.C
  8b9cbae2542d0ee1294a9aba56467023  gcc/testsuite/g++.dg/warn/Wenum-compare-no-2.C
  0159dc16051c0a3deaba6db2eeae85f8  gcc/testsuite/g++.dg/warn/Wenum-compare-no.C
  37c21b63185cc6eb45eceb0b75e600a3  gcc/testsuite/g++.dg/warn/Wenum-compare.C
  d267dddcbfdc3e1208a643c82d1c0886  gcc/testsuite/g++.dg/warn/Wextra-1.C
  fd872aba23fcbd09e4b5cb3b61dbaadf  gcc/testsuite/g++.dg/warn/Wextra-2.C
  7261164c9598bc81ae5d66213779d5d4  gcc/testsuite/g++.dg/warn/Wextra-3.C
+ 30a67fe46ead0acff3908a2c07a30489  gcc/testsuite/g++.dg/warn/Wextra-semi.C
  5eb7ea7761d111befc6050ff4baa1559  gcc/testsuite/g++.dg/warn/Wfloat-equal-1.C
! eccc2b2ed947b72890c78d9f36703c07  gcc/testsuite/g++.dg/warn/Wformat-1.C
! 410904ada3f7963a6e257984ca090127  gcc/testsuite/g++.dg/warn/Wformat-2.C
  caf05a8324926e9472342da0584539ad  gcc/testsuite/g++.dg/warn/Wignored-attributes-1.C
  55295c0bc11e5dffe89757d080280054  gcc/testsuite/g++.dg/warn/Wignored-attributes-2.C
+ a5142c9cd89ebb3502a6adbdb75fa29c  gcc/testsuite/g++.dg/warn/Wignored-qualifiers1.C
  223a9cc82cfdc42f62bbb5398c219cc8  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
  5aaa168dd17b2a6cccd0048ee7abaa2e  gcc/testsuite/g++.dg/warn/Winit-self-2.C
  279c1660a514d3b05c577d1c615c3a99  gcc/testsuite/g++.dg/warn/Winit-self-3.C
  6a51f790f1905c68f12c2109638c7edb  gcc/testsuite/g++.dg/warn/Winit-self.C
*************** b383f047a6af35035ecd836253175c30  gcc/te
*** 18897,18902 ****
--- 19995,20001 ----
  640ad4c16d17c7bf605e6b30568da488  gcc/testsuite/g++.dg/warn/Wmemset-transposed-args-1.C
  d3017d025f43f9093bf016847e418a34  gcc/testsuite/g++.dg/warn/Wmissing-declarations-1.C
  050c0fd9eb9dcd48940d99ba2041761b  gcc/testsuite/g++.dg/warn/Wmissing-field-initializers-1.C
+ 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
*************** d8d1e3a45dd0a9c718cefdd08d54e264  gcc/te
*** 18912,18918 ****
  d38c5795330625342ab67317e9b6f464  gcc/testsuite/g++.dg/warn/Wnonnull2.C
  d8522883128c1eb223545be773c44b16  gcc/testsuite/g++.dg/warn/Wnonnull3.C
  31408de946ef5836f2d1678b9f86f912  gcc/testsuite/g++.dg/warn/Wnull-conversion-1.C
! 7612268fc1d96d20aa8372be5730baee  gcc/testsuite/g++.dg/warn/Wnull-conversion-2.C
  8c56c916a791bfbd1ac25b63b43b766c  gcc/testsuite/g++.dg/warn/Wnvdtor-2.C
  6568c50bb4b28a370c190312d8036309  gcc/testsuite/g++.dg/warn/Wnvdtor-3.C
  42cdf56d135a68d4ae812e5c661edae8  gcc/testsuite/g++.dg/warn/Wnvdtor-4.C
--- 20011,20017 ----
  d38c5795330625342ab67317e9b6f464  gcc/testsuite/g++.dg/warn/Wnonnull2.C
  d8522883128c1eb223545be773c44b16  gcc/testsuite/g++.dg/warn/Wnonnull3.C
  31408de946ef5836f2d1678b9f86f912  gcc/testsuite/g++.dg/warn/Wnull-conversion-1.C
! 708b44e9b5964e2a171dfb6a7de72854  gcc/testsuite/g++.dg/warn/Wnull-conversion-2.C
  8c56c916a791bfbd1ac25b63b43b766c  gcc/testsuite/g++.dg/warn/Wnvdtor-2.C
  6568c50bb4b28a370c190312d8036309  gcc/testsuite/g++.dg/warn/Wnvdtor-3.C
  42cdf56d135a68d4ae812e5c661edae8  gcc/testsuite/g++.dg/warn/Wnvdtor-4.C
*************** c8cfeb1be8b9ab6b1a5bf044e67e73e2  gcc/te
*** 18923,18931 ****
  4d3b7ed38b5e078db7e76014e7eab321  gcc/testsuite/g++.dg/warn/Woverloaded-1.C
  5433407ca1a050560b08f45d03fdef67  gcc/testsuite/g++.dg/warn/Wpadded-1.C
  d1f22f759809f81b1b677be34f938b02  gcc/testsuite/g++.dg/warn/Wparentheses-1.C
! 8c1be4fe2c44958f9fdf70a20cd94fbe  gcc/testsuite/g++.dg/warn/Wparentheses-10.C
! 3be49cd413635d5c6d8228545da74c15  gcc/testsuite/g++.dg/warn/Wparentheses-11.C
! c35ecaecfd511c9ca7d99d1d0c295518  gcc/testsuite/g++.dg/warn/Wparentheses-12.C
  9ec8d4fa497036c260fb5d2dbf4ff336  gcc/testsuite/g++.dg/warn/Wparentheses-13.C
  e151ff9706ff8f8d25eb870b6f099bc2  gcc/testsuite/g++.dg/warn/Wparentheses-14.C
  08a0dd4d42f7674207742306f422308a  gcc/testsuite/g++.dg/warn/Wparentheses-15.C
--- 20022,20030 ----
  4d3b7ed38b5e078db7e76014e7eab321  gcc/testsuite/g++.dg/warn/Woverloaded-1.C
  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
  e151ff9706ff8f8d25eb870b6f099bc2  gcc/testsuite/g++.dg/warn/Wparentheses-14.C
  08a0dd4d42f7674207742306f422308a  gcc/testsuite/g++.dg/warn/Wparentheses-15.C
*************** f5f50acbe2a146e13079538cc1b650f3  gcc/te
*** 18939,18945 ****
  d18ff788cbb2084df4ebb3ddadb46dd8  gcc/testsuite/g++.dg/warn/Wparentheses-22.C
  afd55c2d3666a85abefca5bb44baed64  gcc/testsuite/g++.dg/warn/Wparentheses-23.C
  30a2aacc6bcdb30c12ed12f8648679cc  gcc/testsuite/g++.dg/warn/Wparentheses-24.C
! 36bbc7f90a35e29dbbfd6bd9fb0fac95  gcc/testsuite/g++.dg/warn/Wparentheses-25.C
  95ec12b8ebc175ba1e342b0dba2fb6a2  gcc/testsuite/g++.dg/warn/Wparentheses-26.C
  7a96365ecbfd1228be4ae36c4a937a7f  gcc/testsuite/g++.dg/warn/Wparentheses-27.C
  dfcd589329d7ac56994e48372202080f  gcc/testsuite/g++.dg/warn/Wparentheses-28.C
--- 20038,20044 ----
  d18ff788cbb2084df4ebb3ddadb46dd8  gcc/testsuite/g++.dg/warn/Wparentheses-22.C
  afd55c2d3666a85abefca5bb44baed64  gcc/testsuite/g++.dg/warn/Wparentheses-23.C
  30a2aacc6bcdb30c12ed12f8648679cc  gcc/testsuite/g++.dg/warn/Wparentheses-24.C
! db9ce71114c28250e6fcbc4b610462f7  gcc/testsuite/g++.dg/warn/Wparentheses-25.C
  95ec12b8ebc175ba1e342b0dba2fb6a2  gcc/testsuite/g++.dg/warn/Wparentheses-26.C
  7a96365ecbfd1228be4ae36c4a937a7f  gcc/testsuite/g++.dg/warn/Wparentheses-27.C
  dfcd589329d7ac56994e48372202080f  gcc/testsuite/g++.dg/warn/Wparentheses-28.C
*************** f54d3fb57e7ea75f1954d2671e769fd5  gcc/te
*** 18948,18961 ****
  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
! 707ccbf6767343299198f33f687b6ec0  gcc/testsuite/g++.dg/warn/Wparentheses-6.C
! 6123d47b0c90e76bcd5c6a33cbd024bd  gcc/testsuite/g++.dg/warn/Wparentheses-7.C
! 1440e102f955e4e422a63b32d881465f  gcc/testsuite/g++.dg/warn/Wparentheses-8.C
! 6ac2e35b5e4a2de47ad29a14a6dbe103  gcc/testsuite/g++.dg/warn/Wparentheses-9.C
! 18e91a351f8fd1aae42cc8fbbe2dcbc5  gcc/testsuite/g++.dg/warn/Wplacement-new-size-1.C
! 6b2c96f7011ece11947155ec8924a6f8  gcc/testsuite/g++.dg/warn/Wplacement-new-size-2.C
  d384bb1bb46e31c69b6a5c612b417019  gcc/testsuite/g++.dg/warn/Wplacement-new-size-3.C
  175ea195dd8d43c87f6e9050006ff679  gcc/testsuite/g++.dg/warn/Wplacement-new-size-4.C
  d61eea5f0486bf652aaee2370544ea0e  gcc/testsuite/g++.dg/warn/Wplacement-new-size.C
  10ae80ca102a17979ad4df9d03d42f13  gcc/testsuite/g++.dg/warn/Wpointer-arith-1.C
  bc5f141d5ba64d906981c425b810d3ed  gcc/testsuite/g++.dg/warn/Wredundant-decls-spec.C
--- 20047,20062 ----
  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
! 0acbed745ba14a792289535979464914  gcc/testsuite/g++.dg/warn/Wplacement-new-size-1.C
! 337a123b41dec575106b2df133ae6510  gcc/testsuite/g++.dg/warn/Wplacement-new-size-2.C
  d384bb1bb46e31c69b6a5c612b417019  gcc/testsuite/g++.dg/warn/Wplacement-new-size-3.C
  175ea195dd8d43c87f6e9050006ff679  gcc/testsuite/g++.dg/warn/Wplacement-new-size-4.C
+ 029f3e09a24477727351d7980a8295f8  gcc/testsuite/g++.dg/warn/Wplacement-new-size-5.C
+ f21683dddfccd65bfbb1aadea9793354  gcc/testsuite/g++.dg/warn/Wplacement-new-size-6.C
  d61eea5f0486bf652aaee2370544ea0e  gcc/testsuite/g++.dg/warn/Wplacement-new-size.C
  10ae80ca102a17979ad4df9d03d42f13  gcc/testsuite/g++.dg/warn/Wpointer-arith-1.C
  bc5f141d5ba64d906981c425b810d3ed  gcc/testsuite/g++.dg/warn/Wredundant-decls-spec.C
*************** a184fd7dfc89de590d9ca3a8b761a8c9  gcc/te
*** 18967,18977 ****
  d0e225992bc2f0e5e2e51d846e21a8b4  gcc/testsuite/g++.dg/warn/Wreturn-3.C
  2517f12853f6838edd913b1fa72b10a6  gcc/testsuite/g++.dg/warn/Wreturn-4.C
  47e19e0aa7cc935c5692f22838d704d8  gcc/testsuite/g++.dg/warn/Wreturn-local-addr-2.C
  87f8a33264631c1c4dfe8b26bd53d6d7  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
  1d81b4c94aef9d2c63d5599d4508e03a  gcc/testsuite/g++.dg/warn/Wreturn-type-2.C
! b049ac43333553ff023f20dc98c12693  gcc/testsuite/g++.dg/warn/Wreturn-type-3.C
  c67eecc224709de2dbabbe0dfa18cef4  gcc/testsuite/g++.dg/warn/Wreturn-type-4.C
  ac4f08dd2a157d7c72adbbb04354e082  gcc/testsuite/g++.dg/warn/Wreturn-type-5.C
  3fe72d5bf9ad4827aa6ca7d33f8ca73d  gcc/testsuite/g++.dg/warn/Wreturn-type-6.C
--- 20068,20080 ----
  d0e225992bc2f0e5e2e51d846e21a8b4  gcc/testsuite/g++.dg/warn/Wreturn-3.C
  2517f12853f6838edd913b1fa72b10a6  gcc/testsuite/g++.dg/warn/Wreturn-4.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
  87f8a33264631c1c4dfe8b26bd53d6d7  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
  1d81b4c94aef9d2c63d5599d4508e03a  gcc/testsuite/g++.dg/warn/Wreturn-type-2.C
! 51f71c28926644cc57251a17721dbc28  gcc/testsuite/g++.dg/warn/Wreturn-type-3.C
  c67eecc224709de2dbabbe0dfa18cef4  gcc/testsuite/g++.dg/warn/Wreturn-type-4.C
  ac4f08dd2a157d7c72adbbb04354e082  gcc/testsuite/g++.dg/warn/Wreturn-type-5.C
  3fe72d5bf9ad4827aa6ca7d33f8ca73d  gcc/testsuite/g++.dg/warn/Wreturn-type-6.C
*************** d0d6c5fe9b201bcd8b68523fbf3f0ce2  gcc/te
*** 18989,19012 ****
  6a6527871d476c4275232fa53d041994  gcc/testsuite/g++.dg/warn/Wshadow-2.C
  c6d10f027652eb4c20869c7eaeebb358  gcc/testsuite/g++.dg/warn/Wshadow-3.C
  2e33a5dd790901f2d6f4cc57f311efc6  gcc/testsuite/g++.dg/warn/Wshadow-4.C
! 3882783c019fbcc53d54780a6bee44cf  gcc/testsuite/g++.dg/warn/Wshadow-5.C
! 54801a296e8d290329ff71ae79f67232  gcc/testsuite/g++.dg/warn/Wshadow-6.C
  de70d0aa4d300c6c495ac17ceb16bb59  gcc/testsuite/g++.dg/warn/Wshadow-7.C
  0af029239ed9b13bdf9a5bf71f44573f  gcc/testsuite/g++.dg/warn/Wshadow-8.C
  69360c98179cb5a496a4ec6c59d499f7  gcc/testsuite/g++.dg/warn/Wshadow-9.C
  69732cf06a240f992b1cb5e3b86bab8d  gcc/testsuite/g++.dg/warn/Wshadow-compatible-local-1.C
  df9b1547a2690405cde83653830ec338  gcc/testsuite/g++.dg/warn/Wshadow-local-1.C
  6abfb9ca38d9d4f52fad423dd3f4fc61  gcc/testsuite/g++.dg/warn/Wshadow-local-2.C
  2247cfbc59da044c90471731c49fe14d  gcc/testsuite/g++.dg/warn/Wsign-compare-1.C
! 9783f1e807119d28bffbe38aaa6b2a85  gcc/testsuite/g++.dg/warn/Wsign-compare-2.C
  65dcbd82ed4800506ba5d69b0d7b8ecc  gcc/testsuite/g++.dg/warn/Wsign-compare-3.C
! 1a0990fdac63360397c6cb63b103ff19  gcc/testsuite/g++.dg/warn/Wsign-compare-4.C
  6773c9e70593e16deba6bbd42d8e2ccc  gcc/testsuite/g++.dg/warn/Wsign-compare-5.C
! f62afd3f9167283e17437ccfc3ac257b  gcc/testsuite/g++.dg/warn/Wsign-compare-6.C
  182345b582b831afb2700ff45a395589  gcc/testsuite/g++.dg/warn/Wsign-compare-7.C
  1838324ae4d6c4171b6e67db3068b07b  gcc/testsuite/g++.dg/warn/Wsign-conversion-2.C
! 13a5045fd9eb40c38bd45ccb537cc5d4  gcc/testsuite/g++.dg/warn/Wsign-conversion.C
! 45c81ce5b14cd87fe2504a702f1e4d6a  gcc/testsuite/g++.dg/warn/Wsizeof-pointer-memaccess-1.C
  44dc4b5572b60846a2322e12b0510783  gcc/testsuite/g++.dg/warn/Wstrict-aliasing-1.C
  414da1b51217d31e1c2f4c076e8fe650  gcc/testsuite/g++.dg/warn/Wstrict-aliasing-2.C
  c99391b2f8a50e512108d98c5c776a47  gcc/testsuite/g++.dg/warn/Wstrict-aliasing-3.C
--- 20092,20117 ----
  6a6527871d476c4275232fa53d041994  gcc/testsuite/g++.dg/warn/Wshadow-2.C
  c6d10f027652eb4c20869c7eaeebb358  gcc/testsuite/g++.dg/warn/Wshadow-3.C
  2e33a5dd790901f2d6f4cc57f311efc6  gcc/testsuite/g++.dg/warn/Wshadow-4.C
! 85648d81584ab8f2c756bca959506afc  gcc/testsuite/g++.dg/warn/Wshadow-5.C
! 5d6d25ec58023e36b641ebffe60b3a40  gcc/testsuite/g++.dg/warn/Wshadow-6.C
  de70d0aa4d300c6c495ac17ceb16bb59  gcc/testsuite/g++.dg/warn/Wshadow-7.C
  0af029239ed9b13bdf9a5bf71f44573f  gcc/testsuite/g++.dg/warn/Wshadow-8.C
  69360c98179cb5a496a4ec6c59d499f7  gcc/testsuite/g++.dg/warn/Wshadow-9.C
  69732cf06a240f992b1cb5e3b86bab8d  gcc/testsuite/g++.dg/warn/Wshadow-compatible-local-1.C
+ a0b4ac370653ea8dfc5a0dc8707ab2fd  gcc/testsuite/g++.dg/warn/Wshadow-compatible-local-2.C
  df9b1547a2690405cde83653830ec338  gcc/testsuite/g++.dg/warn/Wshadow-local-1.C
  6abfb9ca38d9d4f52fad423dd3f4fc61  gcc/testsuite/g++.dg/warn/Wshadow-local-2.C
  2247cfbc59da044c90471731c49fe14d  gcc/testsuite/g++.dg/warn/Wsign-compare-1.C
! ce2ba38feca3c511f89db684e2f050a6  gcc/testsuite/g++.dg/warn/Wsign-compare-2.C
  65dcbd82ed4800506ba5d69b0d7b8ecc  gcc/testsuite/g++.dg/warn/Wsign-compare-3.C
! dd18ba46a462d680bb62b823872da6b0  gcc/testsuite/g++.dg/warn/Wsign-compare-4.C
  6773c9e70593e16deba6bbd42d8e2ccc  gcc/testsuite/g++.dg/warn/Wsign-compare-5.C
! e3ed0915879efd66bbba74b1ab6c5a0e  gcc/testsuite/g++.dg/warn/Wsign-compare-6.C
  182345b582b831afb2700ff45a395589  gcc/testsuite/g++.dg/warn/Wsign-compare-7.C
+ 9701082840cbd3decd881b8139ba4cf0  gcc/testsuite/g++.dg/warn/Wsign-compare-8.C
  1838324ae4d6c4171b6e67db3068b07b  gcc/testsuite/g++.dg/warn/Wsign-conversion-2.C
! 65bb0b1a539c8d633ac1654e8cb4ac71  gcc/testsuite/g++.dg/warn/Wsign-conversion.C
! e0c1598f06e0781562c2dec6e2bc4c5a  gcc/testsuite/g++.dg/warn/Wsizeof-pointer-memaccess-1.C
  44dc4b5572b60846a2322e12b0510783  gcc/testsuite/g++.dg/warn/Wstrict-aliasing-1.C
  414da1b51217d31e1c2f4c076e8fe650  gcc/testsuite/g++.dg/warn/Wstrict-aliasing-2.C
  c99391b2f8a50e512108d98c5c776a47  gcc/testsuite/g++.dg/warn/Wstrict-aliasing-3.C
*************** f345b06fca626501d991adc9447c18e0  gcc/te
*** 19028,19038 ****
  73aa8fdd361564d9ba904d4252613717  gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-struct-included.C
  d635ff290903ee4e0276548a094a3551  gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-union-2.C
  81024e5e796ea1637204d6a421f3c1bb  gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-union.C
! d408482031edcca951354bc89ba9ec8e  gcc/testsuite/g++.dg/warn/Wstrict-aliasing-float-ref-int-obj.C
  b2ac295c001e28b6659dd1cbaecfc2a9  gcc/testsuite/g++.dg/warn/Wstring-literal-comparison-1.C
  c608f5d02a06d2e24d8ab0ca0d977f67  gcc/testsuite/g++.dg/warn/Wstring-literal-comparison-2.C
  a0b497dc1f8dc8ce49f81bc391f0deb1  gcc/testsuite/g++.dg/warn/Wstring-literal-comparison-3.C
  839fdbb04e93708d893f0f0e3f961ef5  gcc/testsuite/g++.dg/warn/Wstring-literal-comparison-4.C
  4aec9a180c35fbd202eef17e2e9d1652  gcc/testsuite/g++.dg/warn/Wsubobject-linkage-1.C
  eba56eb80e2c30e3bb80d1a990dbb623  gcc/testsuite/g++.dg/warn/Wsubobject-linkage-2.C
  836b53326756a2843a16b15fee84ea09  gcc/testsuite/g++.dg/warn/Wsubobject-linkage-3.C
--- 20133,20146 ----
  73aa8fdd361564d9ba904d4252613717  gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-struct-included.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
  b2ac295c001e28b6659dd1cbaecfc2a9  gcc/testsuite/g++.dg/warn/Wstring-literal-comparison-1.C
  c608f5d02a06d2e24d8ab0ca0d977f67  gcc/testsuite/g++.dg/warn/Wstring-literal-comparison-2.C
  a0b497dc1f8dc8ce49f81bc391f0deb1  gcc/testsuite/g++.dg/warn/Wstring-literal-comparison-3.C
  839fdbb04e93708d893f0f0e3f961ef5  gcc/testsuite/g++.dg/warn/Wstring-literal-comparison-4.C
+ 6410b05c3b999712196121758246d3f4  gcc/testsuite/g++.dg/warn/Wstringop-overflow-1.C
+ f6f1c6a8905210dd9ca7aa4a530cc8cb  gcc/testsuite/g++.dg/warn/Wstringop-truncation-1.C
+ 68de0b45c161b67b13b219e943fa0f70  gcc/testsuite/g++.dg/warn/Wstringop-truncation-2.C
  4aec9a180c35fbd202eef17e2e9d1652  gcc/testsuite/g++.dg/warn/Wsubobject-linkage-1.C
  eba56eb80e2c30e3bb80d1a990dbb623  gcc/testsuite/g++.dg/warn/Wsubobject-linkage-2.C
  836b53326756a2843a16b15fee84ea09  gcc/testsuite/g++.dg/warn/Wsubobject-linkage-3.C
*************** b59dc530212e2b55715a884d39fa09dc  gcc/te
*** 19051,19063 ****
  2ecf88082b48d7df37c9334c2844b614  gcc/testsuite/g++.dg/warn/Wtautological-compare.C
  239ced8be8851ec6043b4692f9b00ec1  gcc/testsuite/g++.dg/warn/Wtautological-compare2.C
  81432c4786638b6267d11220821c16df  gcc/testsuite/g++.dg/warn/Wterminate1.C
! 654b26e5ab1226c003b90b7cf7fec933  gcc/testsuite/g++.dg/warn/Wtype-limits-Wextra.C
! d803f73370f8916f5ec2a47e528fa49a  gcc/testsuite/g++.dg/warn/Wtype-limits-no.C
! ace8f7824d59b36bdbaa7475b708b8a2  gcc/testsuite/g++.dg/warn/Wtype-limits.C
  3b1a12f11ebbf80f8ab2cf6a03558cbc  gcc/testsuite/g++.dg/warn/Wtype-limits2.C
  0101ac7bc499a86bdbc20c8ef3cfa386  gcc/testsuite/g++.dg/warn/Wuninitializable-member-no.C
  cb6b38abe346f8950bdb218ab4c6e17d  gcc/testsuite/g++.dg/warn/Wuninitializable-member.C
  fe4c6303d7ec13423e71cfb150c05d00  gcc/testsuite/g++.dg/warn/Wuninitialized-1.C
  21fc5ac0f1ee255b648d071723254d87  gcc/testsuite/g++.dg/warn/Wuninitialized-2.C
  ff7e55750a566580a7e5b746cf7dfa22  gcc/testsuite/g++.dg/warn/Wuninitialized-3.C
  be5b47714ba41b25933660896d6c7427  gcc/testsuite/g++.dg/warn/Wuninitialized-4.C
--- 20159,20172 ----
  2ecf88082b48d7df37c9334c2844b614  gcc/testsuite/g++.dg/warn/Wtautological-compare.C
  239ced8be8851ec6043b4692f9b00ec1  gcc/testsuite/g++.dg/warn/Wtautological-compare2.C
  81432c4786638b6267d11220821c16df  gcc/testsuite/g++.dg/warn/Wterminate1.C
! ca425923304e370de97ef83869947f09  gcc/testsuite/g++.dg/warn/Wtype-limits-Wextra.C
! dc1d92954793f77541307f143e148bd1  gcc/testsuite/g++.dg/warn/Wtype-limits-no.C
! 21436bd83cffeb463833c1a7d126e03f  gcc/testsuite/g++.dg/warn/Wtype-limits.C
  3b1a12f11ebbf80f8ab2cf6a03558cbc  gcc/testsuite/g++.dg/warn/Wtype-limits2.C
  0101ac7bc499a86bdbc20c8ef3cfa386  gcc/testsuite/g++.dg/warn/Wuninitializable-member-no.C
  cb6b38abe346f8950bdb218ab4c6e17d  gcc/testsuite/g++.dg/warn/Wuninitializable-member.C
  fe4c6303d7ec13423e71cfb150c05d00  gcc/testsuite/g++.dg/warn/Wuninitialized-1.C
+ 01a8663e3575b9fdd6f13fef9387d669  gcc/testsuite/g++.dg/warn/Wuninitialized-10.C
  21fc5ac0f1ee255b648d071723254d87  gcc/testsuite/g++.dg/warn/Wuninitialized-2.C
  ff7e55750a566580a7e5b746cf7dfa22  gcc/testsuite/g++.dg/warn/Wuninitialized-3.C
  be5b47714ba41b25933660896d6c7427  gcc/testsuite/g++.dg/warn/Wuninitialized-4.C
*************** a1e8f0d7b53ea96c7283034075724914  gcc/te
*** 19077,19102 ****
  04ac62179b35dfe46c9f95baa7db1afb  gcc/testsuite/g++.dg/warn/Wunused-15.C
  aa054897a9a999252af634fb37c47a72  gcc/testsuite/g++.dg/warn/Wunused-16.C
  40d9f628c1c36f04e81c2707bb2dd44f  gcc/testsuite/g++.dg/warn/Wunused-17.C
! 61051d6055a088efd9b196d7533030ea  gcc/testsuite/g++.dg/warn/Wunused-2.C
  100b96f03eb66e7fa747a34b5fb876bb  gcc/testsuite/g++.dg/warn/Wunused-3.C
! 3c7c2b442d4bd62310dcfdd99d91e1b2  gcc/testsuite/g++.dg/warn/Wunused-4.C
  a1eac98a6496704d61be03bb58327d0f  gcc/testsuite/g++.dg/warn/Wunused-5.C
! 716f99b28cebbf385c168497daeff7ae  gcc/testsuite/g++.dg/warn/Wunused-6.C
  084d01a6fec132cfc8842f26f8cc6917  gcc/testsuite/g++.dg/warn/Wunused-7.C
  2ae02de851b4b1632fef02986fa5d768  gcc/testsuite/g++.dg/warn/Wunused-8.C
  c028f96ef429d16acd56c46dd1ef7140  gcc/testsuite/g++.dg/warn/Wunused-9.C
  ca0d22afd6aea84bfeb4ed3f15ecbe43  gcc/testsuite/g++.dg/warn/Wunused-function1.C
  b34fd3a8e6fc2ca19e369ffca3d3e57c  gcc/testsuite/g++.dg/warn/Wunused-function2.C
  67f6a207fd3b633520865ef37c9ca6c6  gcc/testsuite/g++.dg/warn/Wunused-function3.C
  35cb7d556d19aea81d449a8565f7e5db  gcc/testsuite/g++.dg/warn/Wunused-label-1.C
  0c7d97044e723227e4b7e6aaa771fe52  gcc/testsuite/g++.dg/warn/Wunused-label-2.C
! d5cff1ce2b6ee2338f66afe65583b24c  gcc/testsuite/g++.dg/warn/Wunused-label-3.C
  7d58f0ddeddeb6ad8bef3afe3558df88  gcc/testsuite/g++.dg/warn/Wunused-local-typedefs-2.C
  96299d5e038999c130b95569f8d19fd5  gcc/testsuite/g++.dg/warn/Wunused-local-typedefs-3.C
  3335023097e79a638c6beb852ffb673c  gcc/testsuite/g++.dg/warn/Wunused-local-typedefs-4.C
! e87b7d02676f112438f0e9a04aeb284d  gcc/testsuite/g++.dg/warn/Wunused-local-typedefs.C
  f4f3cab40f639491cc5a09f1d424f9ce  gcc/testsuite/g++.dg/warn/Wunused-parm-1.C
  848ae9477cb535f02cefe842f45ed6e8  gcc/testsuite/g++.dg/warn/Wunused-parm-10.C
  b17926dc040110c67174d5c4203f7fee  gcc/testsuite/g++.dg/warn/Wunused-parm-2.C
  e2b1e313bf63113458031cd03d300763  gcc/testsuite/g++.dg/warn/Wunused-parm-3.C
  f11e1a6a7c64d32c0698605c42c159c1  gcc/testsuite/g++.dg/warn/Wunused-parm-4.C
--- 20186,20213 ----
  04ac62179b35dfe46c9f95baa7db1afb  gcc/testsuite/g++.dg/warn/Wunused-15.C
  aa054897a9a999252af634fb37c47a72  gcc/testsuite/g++.dg/warn/Wunused-16.C
  40d9f628c1c36f04e81c2707bb2dd44f  gcc/testsuite/g++.dg/warn/Wunused-17.C
! b2e5b74ee5fb6060bcc71f2dc3c382d1  gcc/testsuite/g++.dg/warn/Wunused-2.C
  100b96f03eb66e7fa747a34b5fb876bb  gcc/testsuite/g++.dg/warn/Wunused-3.C
! 2a408c99296d8b89eff20f87c2ea2d51  gcc/testsuite/g++.dg/warn/Wunused-4.C
  a1eac98a6496704d61be03bb58327d0f  gcc/testsuite/g++.dg/warn/Wunused-5.C
! 304e0038ea2fabd6c4f236035124dbba  gcc/testsuite/g++.dg/warn/Wunused-6.C
  084d01a6fec132cfc8842f26f8cc6917  gcc/testsuite/g++.dg/warn/Wunused-7.C
  2ae02de851b4b1632fef02986fa5d768  gcc/testsuite/g++.dg/warn/Wunused-8.C
  c028f96ef429d16acd56c46dd1ef7140  gcc/testsuite/g++.dg/warn/Wunused-9.C
  ca0d22afd6aea84bfeb4ed3f15ecbe43  gcc/testsuite/g++.dg/warn/Wunused-function1.C
  b34fd3a8e6fc2ca19e369ffca3d3e57c  gcc/testsuite/g++.dg/warn/Wunused-function2.C
  67f6a207fd3b633520865ef37c9ca6c6  gcc/testsuite/g++.dg/warn/Wunused-function3.C
+ 3b9516574680f4a5e56ce4a0bea9d73a  gcc/testsuite/g++.dg/warn/Wunused-function4.C
  35cb7d556d19aea81d449a8565f7e5db  gcc/testsuite/g++.dg/warn/Wunused-label-1.C
  0c7d97044e723227e4b7e6aaa771fe52  gcc/testsuite/g++.dg/warn/Wunused-label-2.C
! 9253c84c85578a9be7b3d8ee8473bfbe  gcc/testsuite/g++.dg/warn/Wunused-label-3.C
  7d58f0ddeddeb6ad8bef3afe3558df88  gcc/testsuite/g++.dg/warn/Wunused-local-typedefs-2.C
  96299d5e038999c130b95569f8d19fd5  gcc/testsuite/g++.dg/warn/Wunused-local-typedefs-3.C
  3335023097e79a638c6beb852ffb673c  gcc/testsuite/g++.dg/warn/Wunused-local-typedefs-4.C
! e140cca8081c2c0eae03e581e393acb2  gcc/testsuite/g++.dg/warn/Wunused-local-typedefs.C
  f4f3cab40f639491cc5a09f1d424f9ce  gcc/testsuite/g++.dg/warn/Wunused-parm-1.C
  848ae9477cb535f02cefe842f45ed6e8  gcc/testsuite/g++.dg/warn/Wunused-parm-10.C
+ 054afa451b4cbe3068c1711a0332437f  gcc/testsuite/g++.dg/warn/Wunused-parm-11.C
  b17926dc040110c67174d5c4203f7fee  gcc/testsuite/g++.dg/warn/Wunused-parm-2.C
  e2b1e313bf63113458031cd03d300763  gcc/testsuite/g++.dg/warn/Wunused-parm-3.C
  f11e1a6a7c64d32c0698605c42c159c1  gcc/testsuite/g++.dg/warn/Wunused-parm-4.C
*************** e7274165f26fc70eff73fddbd77e3811  gcc/te
*** 19126,19142 ****
  591077c761c72f687b4f25942b7e1640  gcc/testsuite/g++.dg/warn/Wunused-var-24.C
  8f153046ad0f87a8a4eb0cb739ec384c  gcc/testsuite/g++.dg/warn/Wunused-var-25.C
  715f4e85764653a44e74c60a6624ff13  gcc/testsuite/g++.dg/warn/Wunused-var-26.C
  dd0f2a1889a83658587b5f12c08c0c1c  gcc/testsuite/g++.dg/warn/Wunused-var-3.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/testsuite/g++.dg/warn/Wunused-var-7.C
  12fcfa7c307d6c91a9038bade9f8e105  gcc/testsuite/g++.dg/warn/Wunused-var-8.C
  66e0712402c08575f2486cc95d89f9b2  gcc/testsuite/g++.dg/warn/Wunused-var-9.C
  88adcb759fca5a76baa049de4a8b2b25  gcc/testsuite/g++.dg/warn/Wuseless-cast.C
! 88cbfbefd99299b6c8b18623d110b670  gcc/testsuite/g++.dg/warn/Wvla-1.C
  14125ff3c1dfea161d8ff9a2614627f6  gcc/testsuite/g++.dg/warn/Wvla-2.C
! 43ab54c8c4c6f2ba5ea4192d282a669e  gcc/testsuite/g++.dg/warn/Wvla-3.C
  4b86ec96b8c58e1bbabfdf20ce1ca6c0  gcc/testsuite/g++.dg/warn/Wwrite-strings-1.C
  b28bf2e46803ce42c611388236ffeabb  gcc/testsuite/g++.dg/warn/Wwrite-strings-10.C
  981dbe53220f3659fdc8fce245892cbb  gcc/testsuite/g++.dg/warn/Wwrite-strings-11.C
--- 20237,20260 ----
  591077c761c72f687b4f25942b7e1640  gcc/testsuite/g++.dg/warn/Wunused-var-24.C
  8f153046ad0f87a8a4eb0cb739ec384c  gcc/testsuite/g++.dg/warn/Wunused-var-25.C
  715f4e85764653a44e74c60a6624ff13  gcc/testsuite/g++.dg/warn/Wunused-var-26.C
+ 7a3b94589573863d8d1f75a6d1364ba5  gcc/testsuite/g++.dg/warn/Wunused-var-27.C
+ e8b15e8967406cf22585ac431cc7a30e  gcc/testsuite/g++.dg/warn/Wunused-var-28.C
+ 4351c753fca5a407e66d4e112ecf548a  gcc/testsuite/g++.dg/warn/Wunused-var-29.C
  dd0f2a1889a83658587b5f12c08c0c1c  gcc/testsuite/g++.dg/warn/Wunused-var-3.C
+ 88fafe3d309e26f99679ae81ff2cf5a9  gcc/testsuite/g++.dg/warn/Wunused-var-30.C
+ 759e791adc36411097efd9d5adf03acb  gcc/testsuite/g++.dg/warn/Wunused-var-31.C
+ 37258be47e7213377b42da5aeee813cd  gcc/testsuite/g++.dg/warn/Wunused-var-32.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/testsuite/g++.dg/warn/Wunused-var-7.C
  12fcfa7c307d6c91a9038bade9f8e105  gcc/testsuite/g++.dg/warn/Wunused-var-8.C
  66e0712402c08575f2486cc95d89f9b2  gcc/testsuite/g++.dg/warn/Wunused-var-9.C
+ f62d0efa105434ddb77f8584066aa865  gcc/testsuite/g++.dg/warn/Wunused-var30.C
  88adcb759fca5a76baa049de4a8b2b25  gcc/testsuite/g++.dg/warn/Wuseless-cast.C
! ba45170afd56d1e76873db18aae078da  gcc/testsuite/g++.dg/warn/Wvla-1.C
  14125ff3c1dfea161d8ff9a2614627f6  gcc/testsuite/g++.dg/warn/Wvla-2.C
! f5b2f2c118a7c1b3e90a8636387dc180  gcc/testsuite/g++.dg/warn/Wvla-3.C
  4b86ec96b8c58e1bbabfdf20ce1ca6c0  gcc/testsuite/g++.dg/warn/Wwrite-strings-1.C
  b28bf2e46803ce42c611388236ffeabb  gcc/testsuite/g++.dg/warn/Wwrite-strings-10.C
  981dbe53220f3659fdc8fce245892cbb  gcc/testsuite/g++.dg/warn/Wwrite-strings-11.C
*************** b5744b69a9a9baf05fa3af9a7106f773  gcc/te
*** 19153,19159 ****
  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
  65537623a1ffdae201b8895dee3c7fe1  gcc/testsuite/g++.dg/warn/Wzero-as-null-pointer-constant-4.C
! 898b78e0232d57b1bd08812896dbd99f  gcc/testsuite/g++.dg/warn/Wzero-as-null-pointer-constant-5.C
  7a6d9ddc7bec58ecee07985fbaf4d573  gcc/testsuite/g++.dg/warn/Wzero-as-null-pointer-constant-6.C
  b718de980adb60556e7ed2d1500c1178  gcc/testsuite/g++.dg/warn/anonymous-namespace-1.C
  742770da6dc852dbab06cd3f38047a67  gcc/testsuite/g++.dg/warn/anonymous-namespace-1.h
--- 20271,20277 ----
  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
  65537623a1ffdae201b8895dee3c7fe1  gcc/testsuite/g++.dg/warn/Wzero-as-null-pointer-constant-4.C
! f5c145f86784d08a114513e4a5642ba7  gcc/testsuite/g++.dg/warn/Wzero-as-null-pointer-constant-5.C
  7a6d9ddc7bec58ecee07985fbaf4d573  gcc/testsuite/g++.dg/warn/Wzero-as-null-pointer-constant-6.C
  b718de980adb60556e7ed2d1500c1178  gcc/testsuite/g++.dg/warn/anonymous-namespace-1.C
  742770da6dc852dbab06cd3f38047a67  gcc/testsuite/g++.dg/warn/anonymous-namespace-1.h
*************** ded24587426b8329f8c1a806eb7d86d2  gcc/te
*** 19166,19172 ****
  6b75beb82727fa901a97c3f415f79fd3  gcc/testsuite/g++.dg/warn/anonymous-namespace-5.C
  be3d4fa6911580b9269c3ea654b72a7e  gcc/testsuite/g++.dg/warn/anonymous-namespace-6.C
  9d482788ebfbc6a8f5bfebe98d71ae94  gcc/testsuite/g++.dg/warn/changes-meaning.C
! 064f2d562e6ae3005fac3be98940a167  gcc/testsuite/g++.dg/warn/compare1.C
  89ebc9f37c7b1a4e258df8e861fc9fc7  gcc/testsuite/g++.dg/warn/constexpr-70194.C
  85be959a24d4346758266af7cda69d72  gcc/testsuite/g++.dg/warn/conv1.C
  8cdb559ffcb9d887ccbede485723468a  gcc/testsuite/g++.dg/warn/conv2.C
--- 20284,20290 ----
  6b75beb82727fa901a97c3f415f79fd3  gcc/testsuite/g++.dg/warn/anonymous-namespace-5.C
  be3d4fa6911580b9269c3ea654b72a7e  gcc/testsuite/g++.dg/warn/anonymous-namespace-6.C
  9d482788ebfbc6a8f5bfebe98d71ae94  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
  8cdb559ffcb9d887ccbede485723468a  gcc/testsuite/g++.dg/warn/conv2.C
*************** a13aaa30037789e1fbc1e83bdcbaff93  gcc/te
*** 19176,19181 ****
--- 20294,20300 ----
  8b6a24e6dff932758440714c76e47fa2  gcc/testsuite/g++.dg/warn/conversion-real-integer-3.h
  d5fcd483303360915cb089b93fa1cd74  gcc/testsuite/g++.dg/warn/ctor-dtor-privacy-1.C
  ca9f620c9a4fcfd05cfa551f64c2c55c  gcc/testsuite/g++.dg/warn/ctor-dtor-privacy-2.C
+ c8c65a2d5647070af20c4a824712c3ec  gcc/testsuite/g++.dg/warn/ctor-dtor-privacy-3.C
  85dc72a0303b57c698ce2804c195f5b0  gcc/testsuite/g++.dg/warn/ctor-init-1.C
  450b64494a8df8181368be08d23e5bf9  gcc/testsuite/g++.dg/warn/ctor1.C
  e415b9568db9cd79464c85885dc0c9e2  gcc/testsuite/g++.dg/warn/delete-array-1.C
*************** d30920f4e6c261179db5d5422da0b398  gcc/te
*** 19183,19201 ****
  5db9baaca9f35dabdbd94d03186f12ea  gcc/testsuite/g++.dg/warn/deprecated-10.C
  1ad1df12de321b9457640c9c53f46b52  gcc/testsuite/g++.dg/warn/deprecated-11.C
  5a5b9cd25ea60d04b4baa2fcbeef0fec  gcc/testsuite/g++.dg/warn/deprecated-12.C
  26bafcbe2a9f3729e0b0e2ff8ccf5317  gcc/testsuite/g++.dg/warn/deprecated-2.C
  482df2a6c06bdf9046c6729484298715  gcc/testsuite/g++.dg/warn/deprecated-3.C
  98c2c2dc0644115f45902f826dc56a04  gcc/testsuite/g++.dg/warn/deprecated-4.C
  9fb0087e50484de53d979d8e849be2eb  gcc/testsuite/g++.dg/warn/deprecated-5.C
! 2a93e7f6f490e6934096d58d3d1cc37c  gcc/testsuite/g++.dg/warn/deprecated-6.C
  1a91ee27a48ba8f3961c5489d98ca492  gcc/testsuite/g++.dg/warn/deprecated-7.C
  d045bc52a4a03d37180fee8ad8870655  gcc/testsuite/g++.dg/warn/deprecated-8.C
  23dd18e6f89656425163e0bb64041897  gcc/testsuite/g++.dg/warn/deprecated-9.C
! 27451f4b26459045f75f4771ba878638  gcc/testsuite/g++.dg/warn/deprecated.C
  9c49d36a54518ba5874b3fe7045ef791  gcc/testsuite/g++.dg/warn/do-empty.C
! 5e598309e0a011e0e37afcaf0b658c4f  gcc/testsuite/g++.dg/warn/effc1.C
  ea529389c86d5a43c531a82630dfde8b  gcc/testsuite/g++.dg/warn/effc2.C
! a09300084b0484d20d1e01b50584cbd6  gcc/testsuite/g++.dg/warn/effc3.C
  9362e9b4176e1dea1998f49b49d8bbcc  gcc/testsuite/g++.dg/warn/empty-body.C
  931d147f4baed695f1a67ae899cebd03  gcc/testsuite/g++.dg/warn/format1.C
  77cfd7b8f34afd97ff68bc102b6c6fc6  gcc/testsuite/g++.dg/warn/format2.C
--- 20302,20322 ----
  5db9baaca9f35dabdbd94d03186f12ea  gcc/testsuite/g++.dg/warn/deprecated-10.C
  1ad1df12de321b9457640c9c53f46b52  gcc/testsuite/g++.dg/warn/deprecated-11.C
  5a5b9cd25ea60d04b4baa2fcbeef0fec  gcc/testsuite/g++.dg/warn/deprecated-12.C
+ f9f47c74a750ce8f2c75e0d27d3ad1f7  gcc/testsuite/g++.dg/warn/deprecated-13.C
  26bafcbe2a9f3729e0b0e2ff8ccf5317  gcc/testsuite/g++.dg/warn/deprecated-2.C
  482df2a6c06bdf9046c6729484298715  gcc/testsuite/g++.dg/warn/deprecated-3.C
  98c2c2dc0644115f45902f826dc56a04  gcc/testsuite/g++.dg/warn/deprecated-4.C
  9fb0087e50484de53d979d8e849be2eb  gcc/testsuite/g++.dg/warn/deprecated-5.C
! d60678ca37a80aa4ebda0d59eadddffe  gcc/testsuite/g++.dg/warn/deprecated-6.C
  1a91ee27a48ba8f3961c5489d98ca492  gcc/testsuite/g++.dg/warn/deprecated-7.C
  d045bc52a4a03d37180fee8ad8870655  gcc/testsuite/g++.dg/warn/deprecated-8.C
  23dd18e6f89656425163e0bb64041897  gcc/testsuite/g++.dg/warn/deprecated-9.C
! 03b377eeeda85b54f58f24455395c8f6  gcc/testsuite/g++.dg/warn/deprecated.C
  9c49d36a54518ba5874b3fe7045ef791  gcc/testsuite/g++.dg/warn/do-empty.C
! 3d73ee542e82f26b16a569d9a8aa7ddf  gcc/testsuite/g++.dg/warn/effc1.C
  ea529389c86d5a43c531a82630dfde8b  gcc/testsuite/g++.dg/warn/effc2.C
! 581fe782e950506df5b2e6de5c53cb2c  gcc/testsuite/g++.dg/warn/effc3.C
! 4a0f0aecda6783c6d0892554af1a77e3  gcc/testsuite/g++.dg/warn/effc4.C
  9362e9b4176e1dea1998f49b49d8bbcc  gcc/testsuite/g++.dg/warn/empty-body.C
  931d147f4baed695f1a67ae899cebd03  gcc/testsuite/g++.dg/warn/format1.C
  77cfd7b8f34afd97ff68bc102b6c6fc6  gcc/testsuite/g++.dg/warn/format2.C
*************** e81d20f2a65cb672129118ceab24cd3e  gcc/te
*** 19213,19227 ****
  d75c242679a546679f0392d6a34e741e  gcc/testsuite/g++.dg/warn/implicit-typename1.C
  f69540cf16bb392d5bf1e5edfc8e067e  gcc/testsuite/g++.dg/warn/implicit-typename2.C
  5d559af51cd6e5fbe0dbb5a62a5d3366  gcc/testsuite/g++.dg/warn/implicit-typename3.C
! 2f4759328475d063d550bf1c4c0c2a33  gcc/testsuite/g++.dg/warn/incomplete1.C
  91c62256f30105a26fc3b802f591bfa5  gcc/testsuite/g++.dg/warn/incomplete2.C
! 0c33b46fd2f31938e2ff6fb7fc3f0b90  gcc/testsuite/g++.dg/warn/inline1.C
  7c84293b9be13f3fdd30d3803765a5c4  gcc/testsuite/g++.dg/warn/inline2.C
  c10ffa59cbc975e37cf002ed2e59ae32  gcc/testsuite/g++.dg/warn/main-2.C
  43a7ad018e2ced981acc916d2df8f96b  gcc/testsuite/g++.dg/warn/main-3.C
  b8c62de5dbf97777a789b0e6031264f5  gcc/testsuite/g++.dg/warn/main-4.C
  217f0311161c670d6ef0fbd06a3c6b91  gcc/testsuite/g++.dg/warn/main.C
! c418e03d117424d22153072186732d70  gcc/testsuite/g++.dg/warn/miss-format-1.C
  16abc69e85d22f8f70a63462a1b1b3a7  gcc/testsuite/g++.dg/warn/miss-format-2.C
  d38eae092825c980b4c8c291c3d56273  gcc/testsuite/g++.dg/warn/miss-format-3.C
  ed4e1a2fb0bdeb0c706fbaea8bc05dfa  gcc/testsuite/g++.dg/warn/miss-format-4.C
--- 20334,20348 ----
  d75c242679a546679f0392d6a34e741e  gcc/testsuite/g++.dg/warn/implicit-typename1.C
  f69540cf16bb392d5bf1e5edfc8e067e  gcc/testsuite/g++.dg/warn/implicit-typename2.C
  5d559af51cd6e5fbe0dbb5a62a5d3366  gcc/testsuite/g++.dg/warn/implicit-typename3.C
! a4df5f71f7276c81c3910ad2fc5b65f7  gcc/testsuite/g++.dg/warn/incomplete1.C
  91c62256f30105a26fc3b802f591bfa5  gcc/testsuite/g++.dg/warn/incomplete2.C
! 766fc32fbc1f9be1188efd240c05e45d  gcc/testsuite/g++.dg/warn/inline1.C
  7c84293b9be13f3fdd30d3803765a5c4  gcc/testsuite/g++.dg/warn/inline2.C
  c10ffa59cbc975e37cf002ed2e59ae32  gcc/testsuite/g++.dg/warn/main-2.C
  43a7ad018e2ced981acc916d2df8f96b  gcc/testsuite/g++.dg/warn/main-3.C
  b8c62de5dbf97777a789b0e6031264f5  gcc/testsuite/g++.dg/warn/main-4.C
  217f0311161c670d6ef0fbd06a3c6b91  gcc/testsuite/g++.dg/warn/main.C
! 68194fd1059acb30f535aeb5e1f19261  gcc/testsuite/g++.dg/warn/miss-format-1.C
  16abc69e85d22f8f70a63462a1b1b3a7  gcc/testsuite/g++.dg/warn/miss-format-2.C
  d38eae092825c980b4c8c291c3d56273  gcc/testsuite/g++.dg/warn/miss-format-3.C
  ed4e1a2fb0bdeb0c706fbaea8bc05dfa  gcc/testsuite/g++.dg/warn/miss-format-4.C
*************** aa07b1519cde34fc8f8e23f6aa2bb1ab  gcc/te
*** 19232,19241 ****
  398e8c90d5f478a2b984faa18558dc98  gcc/testsuite/g++.dg/warn/multiple-overflow-warn-1.C
  4ea377ff50adb9634227eff0d7056ae9  gcc/testsuite/g++.dg/warn/multiple-overflow-warn-2.C
  3b6f39c62dfd857189137657f4d5aedf  gcc/testsuite/g++.dg/warn/multiple-overflow-warn-3.C
  f90f92d0ee11df948b19aaef9ca54cd1  gcc/testsuite/g++.dg/warn/new1.C
  941aec727045c0f85cb4623dd4ce20f1  gcc/testsuite/g++.dg/warn/no-write-strings.C
! a4d808161ffb4c351d986f762323c400  gcc/testsuite/g++.dg/warn/noeffect2.C
! 78cf893a8741490107d3cc3c403c9528  gcc/testsuite/g++.dg/warn/noeffect4.C
  66a1048126ecd634e1e4f71263be239e  gcc/testsuite/g++.dg/warn/noeffect5.C
  58c48dbaffba495d57fb0bf370f50060  gcc/testsuite/g++.dg/warn/noeffect6.C
  165e60b3a0c53a0c1e6a87c65f59860e  gcc/testsuite/g++.dg/warn/noeffect7.C
--- 20353,20364 ----
  398e8c90d5f478a2b984faa18558dc98  gcc/testsuite/g++.dg/warn/multiple-overflow-warn-1.C
  4ea377ff50adb9634227eff0d7056ae9  gcc/testsuite/g++.dg/warn/multiple-overflow-warn-2.C
  3b6f39c62dfd857189137657f4d5aedf  gcc/testsuite/g++.dg/warn/multiple-overflow-warn-3.C
+ 2a38cb3b99f4836b9a33dc198780048d  gcc/testsuite/g++.dg/warn/mvp.C
+ 222bcab73f426393102c4743551318d6  gcc/testsuite/g++.dg/warn/mvp2.C
  f90f92d0ee11df948b19aaef9ca54cd1  gcc/testsuite/g++.dg/warn/new1.C
  941aec727045c0f85cb4623dd4ce20f1  gcc/testsuite/g++.dg/warn/no-write-strings.C
! 6adcefb77f3d19b68939121f98972d29  gcc/testsuite/g++.dg/warn/noeffect2.C
! de1b2bdd382eea21689902d72c1f4f75  gcc/testsuite/g++.dg/warn/noeffect4.C
  66a1048126ecd634e1e4f71263be239e  gcc/testsuite/g++.dg/warn/noeffect5.C
  58c48dbaffba495d57fb0bf370f50060  gcc/testsuite/g++.dg/warn/noeffect6.C
  165e60b3a0c53a0c1e6a87c65f59860e  gcc/testsuite/g++.dg/warn/noeffect7.C
*************** cdfdbc855eb8f2a2ccce7134c9da053f  gcc/te
*** 19251,19266 ****
  c5311890f0c28242d0882ede510185e1  gcc/testsuite/g++.dg/warn/noreturn-6.C
  f5f5c1617ee81b4a95bfe5a2c43b2cf3  gcc/testsuite/g++.dg/warn/noreturn-7.C
  6bf805aeb1fce3c4508783b3ce563adb  gcc/testsuite/g++.dg/warn/null4.C
! 33e37856b8391737e80c51371895ce7d  gcc/testsuite/g++.dg/warn/oldcast1.C
! d7a37ea59b5fe91ef6a484aac9242a68  gcc/testsuite/g++.dg/warn/overflow-warn-1.C
! 0e1a2f57212948a0fd6370bc751a12f2  gcc/testsuite/g++.dg/warn/overflow-warn-3.C
! bbd4a47f5d23c1001bf7a60543f71418  gcc/testsuite/g++.dg/warn/overflow-warn-4.C
  4a9f855779aa7cb0488ab564acde90fc  gcc/testsuite/g++.dg/warn/overflow-warn-5.C
  e36e0e34c32010c5c54008377dce599e  gcc/testsuite/g++.dg/warn/overflow-warn-6.C
  3c647e62ea816b4c56976d6e778444db  gcc/testsuite/g++.dg/warn/pedantic1.C
  4c8c625ae79211ff8d60b894c8b21b81  gcc/testsuite/g++.dg/warn/pedantic2.C
  8a66b4bd817c242d0b9dee88668cdd11  gcc/testsuite/g++.dg/warn/permissive-1.C
! acd9eb52e3298cbde90941f636efb15f  gcc/testsuite/g++.dg/warn/pmf1.C
  c36be50bce1bb66a16eefbbb8eed1e5c  gcc/testsuite/g++.dg/warn/pmf2.C
  f8f2c98db3d6299492ead2d45e4b5e37  gcc/testsuite/g++.dg/warn/pointer-integer-comparison.C
  adea0a023eba0c3c51b6a4894014d35a  gcc/testsuite/g++.dg/warn/pr11159.C
--- 20374,20389 ----
  c5311890f0c28242d0882ede510185e1  gcc/testsuite/g++.dg/warn/noreturn-6.C
  f5f5c1617ee81b4a95bfe5a2c43b2cf3  gcc/testsuite/g++.dg/warn/noreturn-7.C
  6bf805aeb1fce3c4508783b3ce563adb  gcc/testsuite/g++.dg/warn/null4.C
! 6f35bd3e5569d67dc2013936b13b8a45  gcc/testsuite/g++.dg/warn/oldcast1.C
! 56f13549bb1dc600d31a20dc40f3d843  gcc/testsuite/g++.dg/warn/overflow-warn-1.C
! 8446d02be839a3692707d4cca385823e  gcc/testsuite/g++.dg/warn/overflow-warn-3.C
! ef971e083f028f6e44e1d007699ec3c6  gcc/testsuite/g++.dg/warn/overflow-warn-4.C
  4a9f855779aa7cb0488ab564acde90fc  gcc/testsuite/g++.dg/warn/overflow-warn-5.C
  e36e0e34c32010c5c54008377dce599e  gcc/testsuite/g++.dg/warn/overflow-warn-6.C
  3c647e62ea816b4c56976d6e778444db  gcc/testsuite/g++.dg/warn/pedantic1.C
  4c8c625ae79211ff8d60b894c8b21b81  gcc/testsuite/g++.dg/warn/pedantic2.C
  8a66b4bd817c242d0b9dee88668cdd11  gcc/testsuite/g++.dg/warn/permissive-1.C
! eee589a3fa31332d5466e5037b1a870e  gcc/testsuite/g++.dg/warn/pmf1.C
  c36be50bce1bb66a16eefbbb8eed1e5c  gcc/testsuite/g++.dg/warn/pmf2.C
  f8f2c98db3d6299492ead2d45e4b5e37  gcc/testsuite/g++.dg/warn/pointer-integer-comparison.C
  adea0a023eba0c3c51b6a4894014d35a  gcc/testsuite/g++.dg/warn/pr11159.C
*************** e8794ff206600f5a49415327a54a5bf8  gcc/te
*** 19287,19293 ****
  ef9d28c7b4fdb258a14e4c63ce80a6a4  gcc/testsuite/g++.dg/warn/pr33738.C
  78c676c6637b4d7cf784aaf33aaa6b18  gcc/testsuite/g++.dg/warn/pr34985.C
  50363ca948a4d64c43b9acf226a68ae9  gcc/testsuite/g++.dg/warn/pr35602.C
! 4d854362bf01798928a9b42f54e3f045  gcc/testsuite/g++.dg/warn/pr35635.C
  218b3d28673859e6199d626c1bb65b1c  gcc/testsuite/g++.dg/warn/pr35711.C
  7bf21e020852a31958f06efe9a7f79d3  gcc/testsuite/g++.dg/warn/pr36069.C
  fb0ed1392cbdeb787735900d17b8c33a  gcc/testsuite/g++.dg/warn/pr36921.C
--- 20410,20416 ----
  ef9d28c7b4fdb258a14e4c63ce80a6a4  gcc/testsuite/g++.dg/warn/pr33738.C
  78c676c6637b4d7cf784aaf33aaa6b18  gcc/testsuite/g++.dg/warn/pr34985.C
  50363ca948a4d64c43b9acf226a68ae9  gcc/testsuite/g++.dg/warn/pr35602.C
! 7ac0e2111d98cd66ad3f9dbe115e7700  gcc/testsuite/g++.dg/warn/pr35635.C
  218b3d28673859e6199d626c1bb65b1c  gcc/testsuite/g++.dg/warn/pr35711.C
  7bf21e020852a31958f06efe9a7f79d3  gcc/testsuite/g++.dg/warn/pr36069.C
  fb0ed1392cbdeb787735900d17b8c33a  gcc/testsuite/g++.dg/warn/pr36921.C
*************** b731b5d32c1f477ed23555d37dcf870a  gcc/te
*** 19298,19304 ****
--- 20421,20436 ----
  6731c4b7664be875d28b7e13a1f69724  gcc/testsuite/g++.dg/warn/pr61945.C
  70f21eda14d944ba09e0f2a624291f2f  gcc/testsuite/g++.dg/warn/pr77496.C
  62fde56fd55223e0af2436edca399912  gcc/testsuite/g++.dg/warn/pr79290.C
+ b396f058eef27622b6e932e0515dc223  gcc/testsuite/g++.dg/warn/pr81119.C
+ ad68bbb45548b2f681a5f0e57f41ef19  gcc/testsuite/g++.dg/warn/pr81275-1.C
+ 0faf646f98471e86eee5164be65067cd  gcc/testsuite/g++.dg/warn/pr81275-2.C
+ 8b86a1dde2ee977f0e0323e107fa4196  gcc/testsuite/g++.dg/warn/pr81275-3.C
  8ab30a73c03f97752d2ceb2100e848b1  gcc/testsuite/g++.dg/warn/pr81675.C
+ 509e9b77a9ef20ea518a0a1e9728cc30  gcc/testsuite/g++.dg/warn/pr82424.C
+ 6d310dab9abdfd7931331e525069468c  gcc/testsuite/g++.dg/warn/pr82710.C
+ 1f3994c2dd20f477a579542a531ccd8a  gcc/testsuite/g++.dg/warn/pr83045.C
+ 9444c7a3cc93b0e704601f41453a1776  gcc/testsuite/g++.dg/warn/pr83054.C
+ d8e09f06f5ec03c8ee79f8a008ae77df  gcc/testsuite/g++.dg/warn/pr83974.C
  591b28c4968c297ab14c8ab1384a1394  gcc/testsuite/g++.dg/warn/pr8570.C
  a6a330b9948ca9b7ebe194a6edd63903  gcc/testsuite/g++.dg/warn/pr8715.C
  4cf78b7f61fb98cbc6e1ef39bf3dc758  gcc/testsuite/g++.dg/warn/pragma-system_header1.C
*************** ead08695035c4edabe2cbf3251983089  gcc/te
*** 19313,19336 ****
  f589a557984dd9757ade5f6409471bb5  gcc/testsuite/g++.dg/warn/pragma-system_header5.h
  8c096cfbcb0f16fa5bde02650ac4ab41  gcc/testsuite/g++.dg/warn/private1.C
  dcf594b88cf5da1b2174fbc2c262fb71  gcc/testsuite/g++.dg/warn/ref-temp1.C
! 7e32fd79d6d6fb77e2a22a34257b1b28  gcc/testsuite/g++.dg/warn/register-parm-1.C
  91dd53b7d7d2954e6728c3851a3a75e9  gcc/testsuite/g++.dg/warn/register-var-1.C
! 3c6abc3692a3e9fbfc65b4b43ca9853f  gcc/testsuite/g++.dg/warn/register-var-2.C
  37b88d549e89059a004c1295947bbf24  gcc/testsuite/g++.dg/warn/return-reference.C
  4c118508219f3e8fd47de507e2333e9c  gcc/testsuite/g++.dg/warn/return-reference2.C
! 5e583edd642b46c07735de366c4d0f59  gcc/testsuite/g++.dg/warn/sentinel.C
  b4951d18f427e3e3b23044a0d01134c5  gcc/testsuite/g++.dg/warn/sequence-pt-1.C
  51453c25b899451d48a5947b60d782cf  gcc/testsuite/g++.dg/warn/sequence-pt-2.C
  ad593aaafdf4b211b08e5be6b3abc282  gcc/testsuite/g++.dg/warn/sequence-pt-3.C
  df6eec31c99dfed294a6e4192dd69f3f  gcc/testsuite/g++.dg/warn/sequence-pt-pr17880.C
  67a0e31346c32b568b1d0584a5c6a3bc  gcc/testsuite/g++.dg/warn/skip-1.C
  4bf091c9b94c31660c0d977448470862  gcc/testsuite/g++.dg/warn/skip-2.C
! 8f037cf9c57a56b596c880e43bb0df05  gcc/testsuite/g++.dg/warn/string1.C
  cbeb61a079567f59bdce9faa40877398  gcc/testsuite/g++.dg/warn/switch1.C
  6f90eb3a0f4a4e7f096197fba7797aff  gcc/testsuite/g++.dg/warn/template-1.C
  6f5999bf56f2861a257750422cda17b6  gcc/testsuite/g++.dg/warn/translate-ice-1.C
  81ccb812ec92857cf80d860b4ffa0d31  gcc/testsuite/g++.dg/warn/undefined1.C
! 832c8f08396e3bbd191312ba09d1d54e  gcc/testsuite/g++.dg/warn/unit-1.C
  d10b13b30c4f610f231317924054b5ee  gcc/testsuite/g++.dg/warn/unused-result1-Werror.c
  c3c7b4b0c968cb9b44b95aca9b7f230c  gcc/testsuite/g++.dg/warn/unused-result1.C
  60e5107e15d044700e3bfc98d2aeddb0  gcc/testsuite/g++.dg/warn/unused-variable-1.C
--- 20445,20468 ----
  f589a557984dd9757ade5f6409471bb5  gcc/testsuite/g++.dg/warn/pragma-system_header5.h
  8c096cfbcb0f16fa5bde02650ac4ab41  gcc/testsuite/g++.dg/warn/private1.C
  dcf594b88cf5da1b2174fbc2c262fb71  gcc/testsuite/g++.dg/warn/ref-temp1.C
! 4298cb37de7f2562b424c1ca4cf7c9a8  gcc/testsuite/g++.dg/warn/register-parm-1.C
  91dd53b7d7d2954e6728c3851a3a75e9  gcc/testsuite/g++.dg/warn/register-var-1.C
! 569ffeb5e3022fdfe1f42c216faf9974  gcc/testsuite/g++.dg/warn/register-var-2.C
  37b88d549e89059a004c1295947bbf24  gcc/testsuite/g++.dg/warn/return-reference.C
  4c118508219f3e8fd47de507e2333e9c  gcc/testsuite/g++.dg/warn/return-reference2.C
! ff4b611f28b0870bd5276ac3b01edb5b  gcc/testsuite/g++.dg/warn/sentinel.C
  b4951d18f427e3e3b23044a0d01134c5  gcc/testsuite/g++.dg/warn/sequence-pt-1.C
  51453c25b899451d48a5947b60d782cf  gcc/testsuite/g++.dg/warn/sequence-pt-2.C
  ad593aaafdf4b211b08e5be6b3abc282  gcc/testsuite/g++.dg/warn/sequence-pt-3.C
  df6eec31c99dfed294a6e4192dd69f3f  gcc/testsuite/g++.dg/warn/sequence-pt-pr17880.C
  67a0e31346c32b568b1d0584a5c6a3bc  gcc/testsuite/g++.dg/warn/skip-1.C
  4bf091c9b94c31660c0d977448470862  gcc/testsuite/g++.dg/warn/skip-2.C
! bf5477665fdeb75fd35e1cc0e1b3e656  gcc/testsuite/g++.dg/warn/string1.C
  cbeb61a079567f59bdce9faa40877398  gcc/testsuite/g++.dg/warn/switch1.C
  6f90eb3a0f4a4e7f096197fba7797aff  gcc/testsuite/g++.dg/warn/template-1.C
  6f5999bf56f2861a257750422cda17b6  gcc/testsuite/g++.dg/warn/translate-ice-1.C
  81ccb812ec92857cf80d860b4ffa0d31  gcc/testsuite/g++.dg/warn/undefined1.C
! f61b425b296038544edfc817dc29fd84  gcc/testsuite/g++.dg/warn/unit-1.C
  d10b13b30c4f610f231317924054b5ee  gcc/testsuite/g++.dg/warn/unused-result1-Werror.c
  c3c7b4b0c968cb9b44b95aca9b7f230c  gcc/testsuite/g++.dg/warn/unused-result1.C
  60e5107e15d044700e3bfc98d2aeddb0  gcc/testsuite/g++.dg/warn/unused-variable-1.C
*************** c3c7b4b0c968cb9b44b95aca9b7f230c  gcc/te
*** 19339,19347 ****
  a477b1f44b6db6cb983209da8ed32c5f  gcc/testsuite/g++.dg/warn/volatile1.C
  30a9db7463207bd645a586c3e84427b9  gcc/testsuite/g++.dg/warn/warn_format_signedness.C
  e29ebb1c2a1c295137eae1a72e9e7c7b  gcc/testsuite/g++.dg/warn/warn_unused.C
! 3f4b1f3aaf41418b5d2589dc3ff29113  gcc/testsuite/g++.dg/warn/weak1.C
  40972da0b8fe730554c6d1e2d2e5f2c7  gcc/testsuite/g++.dg/warn/write-strings-default.C
  320c57bad1806d0debc6a79312337e88  gcc/testsuite/g++.dg/warn/write-strings.C
  1cdb371f2e69de6a5ce47c572f798792  gcc/testsuite/g++.old-deja/g++.abi/aggregates.C
  ce9ca8f244fec164cb519029110d5c74  gcc/testsuite/g++.old-deja/g++.abi/align.C
  c64fc2b155672121ad97bcef7f926939  gcc/testsuite/g++.old-deja/g++.abi/arraynew.C
--- 20471,20488 ----
  a477b1f44b6db6cb983209da8ed32c5f  gcc/testsuite/g++.dg/warn/volatile1.C
  30a9db7463207bd645a586c3e84427b9  gcc/testsuite/g++.dg/warn/warn_format_signedness.C
  e29ebb1c2a1c295137eae1a72e9e7c7b  gcc/testsuite/g++.dg/warn/warn_unused.C
! 55c8dd74c9dd038811806037443390cb  gcc/testsuite/g++.dg/warn/weak1.C
  40972da0b8fe730554c6d1e2d2e5f2c7  gcc/testsuite/g++.dg/warn/write-strings-default.C
  320c57bad1806d0debc6a79312337e88  gcc/testsuite/g++.dg/warn/write-strings.C
+ de7213c6b6fb7e5b19df1019d442175a  gcc/testsuite/g++.dg/wrappers/README
+ 6733133ab0a670488bf54bed93e6ba58  gcc/testsuite/g++.dg/wrappers/alloc.C
+ 101dc29ad1e47e3573536c312115d4d8  gcc/testsuite/g++.dg/wrappers/cow-istream-string.C
+ 056d1da43a6706ebf457c7db5eb2cb2e  gcc/testsuite/g++.dg/wrappers/cp-stdlib.C
+ a731807749e8149045d38e9527236cfb  gcc/testsuite/g++.dg/wrappers/pr83799.C
+ 57f4427405d61c7d4dd9ef56fe302200  gcc/testsuite/g++.dg/wrappers/pr83814.C
+ 7ee088b6ee11ace2d0d1f03194f7175c  gcc/testsuite/g++.dg/wrappers/pr83902.C
+ 0f50e2f8443a5b2c7ab7d719426284f9  gcc/testsuite/g++.dg/wrappers/sanitizer_coverage_libcdep_new.C
+ 2024b5c1698566856be470e026d079b3  gcc/testsuite/g++.dg/wrappers/wrapper-around-type-pack-expansion.C
  1cdb371f2e69de6a5ce47c572f798792  gcc/testsuite/g++.old-deja/g++.abi/aggregates.C
  ce9ca8f244fec164cb519029110d5c74  gcc/testsuite/g++.old-deja/g++.abi/align.C
  c64fc2b155672121ad97bcef7f926939  gcc/testsuite/g++.old-deja/g++.abi/arraynew.C
*************** aa70acbcac721d041f597b57b2ec733b  gcc/te
*** 19371,19377 ****
  55753064a6448159c52e77b933d914df  gcc/testsuite/g++.old-deja/g++.abi/vbase8-9.C
  445d95964ba4a777690cdf56c7f1bcb7  gcc/testsuite/g++.old-deja/g++.abi/vmihint.C
  305181b858f05a2e683bd7322f635642  gcc/testsuite/g++.old-deja/g++.abi/vtable.C
! 5c18b478ae35248275dbd4c1f22b93c5  gcc/testsuite/g++.old-deja/g++.abi/vtable2.C
  f43645b177185eca1785bb1bc24abcc7  gcc/testsuite/g++.old-deja/g++.abi/vtable3.h
  335628c4bb776c7871e9beac4869bf89  gcc/testsuite/g++.old-deja/g++.abi/vtable3a.C
  56ddac7d105a11ccda8236145c04d603  gcc/testsuite/g++.old-deja/g++.abi/vtable3b.C
--- 20512,20518 ----
  55753064a6448159c52e77b933d914df  gcc/testsuite/g++.old-deja/g++.abi/vbase8-9.C
  445d95964ba4a777690cdf56c7f1bcb7  gcc/testsuite/g++.old-deja/g++.abi/vmihint.C
  305181b858f05a2e683bd7322f635642  gcc/testsuite/g++.old-deja/g++.abi/vtable.C
! 9401b9deb87c23e3079e9ee11f103908  gcc/testsuite/g++.old-deja/g++.abi/vtable2.C
  f43645b177185eca1785bb1bc24abcc7  gcc/testsuite/g++.old-deja/g++.abi/vtable3.h
  335628c4bb776c7871e9beac4869bf89  gcc/testsuite/g++.old-deja/g++.abi/vtable3a.C
  56ddac7d105a11ccda8236145c04d603  gcc/testsuite/g++.old-deja/g++.abi/vtable3b.C
*************** c0c9d6be703bb9e7d62e19e8fac5fe96  gcc/te
*** 19408,19414 ****
  4f0cb9084aea0b4b4780571fe3c08caa  gcc/testsuite/g++.old-deja/g++.benjamin/friend01.C
  dec5ca9e16504f6b98460424ce0ca6dd  gcc/testsuite/g++.old-deja/g++.benjamin/friend02.C
  9dbf0024a828cdae173938072b0a60b2  gcc/testsuite/g++.old-deja/g++.benjamin/p12475.C
! 6a215b61fe279e7c8b45435878b40f63  gcc/testsuite/g++.old-deja/g++.benjamin/p13417.C
  62001cb932153adb89a3d72a63e21329  gcc/testsuite/g++.old-deja/g++.benjamin/p13721.C
  47901d5b5ac69dd3bacc041717940f4b  gcc/testsuite/g++.old-deja/g++.benjamin/scope01.C
  42ab69d70422f78fc572c6b26af02a8c  gcc/testsuite/g++.old-deja/g++.benjamin/scope02.C
--- 20549,20555 ----
  4f0cb9084aea0b4b4780571fe3c08caa  gcc/testsuite/g++.old-deja/g++.benjamin/friend01.C
  dec5ca9e16504f6b98460424ce0ca6dd  gcc/testsuite/g++.old-deja/g++.benjamin/friend02.C
  9dbf0024a828cdae173938072b0a60b2  gcc/testsuite/g++.old-deja/g++.benjamin/p12475.C
! cc9ce483c56ef7d77513cb2ee8810c9a  gcc/testsuite/g++.old-deja/g++.benjamin/p13417.C
  62001cb932153adb89a3d72a63e21329  gcc/testsuite/g++.old-deja/g++.benjamin/p13721.C
  47901d5b5ac69dd3bacc041717940f4b  gcc/testsuite/g++.old-deja/g++.benjamin/scope01.C
  42ab69d70422f78fc572c6b26af02a8c  gcc/testsuite/g++.old-deja/g++.benjamin/scope02.C
*************** d3a1d8c5e1eb5bb34389eea5ab4ba473  gcc/te
*** 19423,19429 ****
  f2929f837162a135c11590ea2c8b94cd  gcc/testsuite/g++.old-deja/g++.benjamin/typedef03.C
  dc34add658f20519cb6e238d0aef91c0  gcc/testsuite/g++.old-deja/g++.benjamin/typeid01.C
  56e49f1c8229edeb65b0d075772cf7fe  gcc/testsuite/g++.old-deja/g++.benjamin/warn01.C
! 2f7759ef314d396ef5d9dbdf33172fa2  gcc/testsuite/g++.old-deja/g++.benjamin/warn02.C
  ba6e64338ba5d146b7cd864b0d3d18a3  gcc/testsuite/g++.old-deja/g++.benjamin/warn03.C
  49fb55f1f6d9a4c4d3fca4caaf91f5b0  gcc/testsuite/g++.old-deja/g++.benjamin/warn04.C
  0a61a52254c1e3a2b526ab1a815a4328  gcc/testsuite/g++.old-deja/g++.bob/array1.C
--- 20564,20570 ----
  f2929f837162a135c11590ea2c8b94cd  gcc/testsuite/g++.old-deja/g++.benjamin/typedef03.C
  dc34add658f20519cb6e238d0aef91c0  gcc/testsuite/g++.old-deja/g++.benjamin/typeid01.C
  56e49f1c8229edeb65b0d075772cf7fe  gcc/testsuite/g++.old-deja/g++.benjamin/warn01.C
! cfe3a87fd25e3db5af631c6e1a51811d  gcc/testsuite/g++.old-deja/g++.benjamin/warn02.C
  ba6e64338ba5d146b7cd864b0d3d18a3  gcc/testsuite/g++.old-deja/g++.benjamin/warn03.C
  49fb55f1f6d9a4c4d3fca4caaf91f5b0  gcc/testsuite/g++.old-deja/g++.benjamin/warn04.C
  0a61a52254c1e3a2b526ab1a815a4328  gcc/testsuite/g++.old-deja/g++.bob/array1.C
*************** da80b7e97d4e9ee67decc3ead64065ff  gcc/te
*** 19444,19461 ****
  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
! d9d87077bf60adc7e16f87beb878b565  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
  733594e93bfb4299cc0b06179acc3789  gcc/testsuite/g++.old-deja/g++.brendan/alignof.C
  529f738af77acbccc26b95d45ea05de2  gcc/testsuite/g++.old-deja/g++.brendan/ambiguity1.C
  8f1779bd8e0be9254448d93593ccd35a  gcc/testsuite/g++.old-deja/g++.brendan/anon-union1.C
  bdc4d1d13818def6ccb6fa43c79d8bf5  gcc/testsuite/g++.old-deja/g++.brendan/arm1.C
! 03e3c6cc2504c84e79335688e1814a6a  gcc/testsuite/g++.old-deja/g++.brendan/arm2.C
  c9e7e0c2e854771ffa91e7877a31b32a  gcc/testsuite/g++.old-deja/g++.brendan/arm3.C
  16edd78f1a50b1993dbd9ca1f037bf4c  gcc/testsuite/g++.old-deja/g++.brendan/array-refs.C
  9fb0a36cc0560403126227bd96d83828  gcc/testsuite/g++.old-deja/g++.brendan/array1.C
! dc09c52e242933d7d8122e9ef75476a1  gcc/testsuite/g++.old-deja/g++.brendan/asm-extn1.C
  71850593e8cd2b3b928db637dd968118  gcc/testsuite/g++.old-deja/g++.brendan/bit-fields1.C
  1a5afe81ac27807110b2c7f1e488f194  gcc/testsuite/g++.old-deja/g++.brendan/bit-fields2.C
  9b67849cb4ac27393dcb0106ad390716  gcc/testsuite/g++.old-deja/g++.brendan/bool1.C
--- 20585,20602 ----
  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
! f0fa1959914b34b525e009fab733a87f  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
  733594e93bfb4299cc0b06179acc3789  gcc/testsuite/g++.old-deja/g++.brendan/alignof.C
  529f738af77acbccc26b95d45ea05de2  gcc/testsuite/g++.old-deja/g++.brendan/ambiguity1.C
  8f1779bd8e0be9254448d93593ccd35a  gcc/testsuite/g++.old-deja/g++.brendan/anon-union1.C
  bdc4d1d13818def6ccb6fa43c79d8bf5  gcc/testsuite/g++.old-deja/g++.brendan/arm1.C
! 0e18ba6a05a468541441a5535563efe5  gcc/testsuite/g++.old-deja/g++.brendan/arm2.C
  c9e7e0c2e854771ffa91e7877a31b32a  gcc/testsuite/g++.old-deja/g++.brendan/arm3.C
  16edd78f1a50b1993dbd9ca1f037bf4c  gcc/testsuite/g++.old-deja/g++.brendan/array-refs.C
  9fb0a36cc0560403126227bd96d83828  gcc/testsuite/g++.old-deja/g++.brendan/array1.C
! 91a2dda9d1fd3c44754470444d18f81c  gcc/testsuite/g++.old-deja/g++.brendan/asm-extn1.C
  71850593e8cd2b3b928db637dd968118  gcc/testsuite/g++.old-deja/g++.brendan/bit-fields1.C
  1a5afe81ac27807110b2c7f1e488f194  gcc/testsuite/g++.old-deja/g++.brendan/bit-fields2.C
  9b67849cb4ac27393dcb0106ad390716  gcc/testsuite/g++.old-deja/g++.brendan/bool1.C
*************** fcffcc0ad91a1fb9bad3181202303e3f  gcc/te
*** 19488,19494 ****
  53a2dd1bdf710845adc926626d619e59  gcc/testsuite/g++.old-deja/g++.brendan/crash20.C
  7b2c605c6218e8948fecbe9842677c4b  gcc/testsuite/g++.old-deja/g++.brendan/crash22.C
  33544868a90fd87dbf29417ea90a49fd  gcc/testsuite/g++.old-deja/g++.brendan/crash23.C
! 207fe563f561496a1ca248b198318d28  gcc/testsuite/g++.old-deja/g++.brendan/crash24.C
  bc249c935459f8b928782161b15f47b8  gcc/testsuite/g++.old-deja/g++.brendan/crash25.C
  8205b5bda9e4b98bed0dd54ab9af735b  gcc/testsuite/g++.old-deja/g++.brendan/crash26.C
  915634c5383e42a4857a8cdf46230684  gcc/testsuite/g++.old-deja/g++.brendan/crash27.C
--- 20629,20635 ----
  53a2dd1bdf710845adc926626d619e59  gcc/testsuite/g++.old-deja/g++.brendan/crash20.C
  7b2c605c6218e8948fecbe9842677c4b  gcc/testsuite/g++.old-deja/g++.brendan/crash22.C
  33544868a90fd87dbf29417ea90a49fd  gcc/testsuite/g++.old-deja/g++.brendan/crash23.C
! f1d0f9a4e3705c747965388c45172a52  gcc/testsuite/g++.old-deja/g++.brendan/crash24.C
  bc249c935459f8b928782161b15f47b8  gcc/testsuite/g++.old-deja/g++.brendan/crash25.C
  8205b5bda9e4b98bed0dd54ab9af735b  gcc/testsuite/g++.old-deja/g++.brendan/crash26.C
  915634c5383e42a4857a8cdf46230684  gcc/testsuite/g++.old-deja/g++.brendan/crash27.C
*************** de445257f614defad41bbc90815c0723  gcc/te
*** 19509,19515 ****
  3b168f8ca606522149df9bdb8d936a0e  gcc/testsuite/g++.old-deja/g++.brendan/crash40.C
  d5ee940012af3122df1f0a9b46ec0691  gcc/testsuite/g++.old-deja/g++.brendan/crash41.C
  2d7cfb743785f8fc1fc93f89beb2a2b2  gcc/testsuite/g++.old-deja/g++.brendan/crash42.C
! ad82278d54e2a257b24e0ae086dd663f  gcc/testsuite/g++.old-deja/g++.brendan/crash43.C
  99f6d128ad96516aeafdae150359d92a  gcc/testsuite/g++.old-deja/g++.brendan/crash44.C
  5021dd2b75a24615fde95aee58b2241b  gcc/testsuite/g++.old-deja/g++.brendan/crash45.C
  04ce4fbaa4f8ef72247f66f12db00ef1  gcc/testsuite/g++.old-deja/g++.brendan/crash46.C
--- 20650,20656 ----
  3b168f8ca606522149df9bdb8d936a0e  gcc/testsuite/g++.old-deja/g++.brendan/crash40.C
  d5ee940012af3122df1f0a9b46ec0691  gcc/testsuite/g++.old-deja/g++.brendan/crash41.C
  2d7cfb743785f8fc1fc93f89beb2a2b2  gcc/testsuite/g++.old-deja/g++.brendan/crash42.C
! b3f82f6878ee2ffff7531e7210f68017  gcc/testsuite/g++.old-deja/g++.brendan/crash43.C
  99f6d128ad96516aeafdae150359d92a  gcc/testsuite/g++.old-deja/g++.brendan/crash44.C
  5021dd2b75a24615fde95aee58b2241b  gcc/testsuite/g++.old-deja/g++.brendan/crash45.C
  04ce4fbaa4f8ef72247f66f12db00ef1  gcc/testsuite/g++.old-deja/g++.brendan/crash46.C
*************** fd539b292de5deffe84b7aca6e365824  gcc/te
*** 19699,19705 ****
  aa906bf43b597100d7b2c69938ea3534  gcc/testsuite/g++.old-deja/g++.brendan/static1.C
  a7ca45289830afd8555d41c2c9c2844f  gcc/testsuite/g++.old-deja/g++.brendan/static2.C
  a9c90d5ae062d30726f66685c678e0dc  gcc/testsuite/g++.old-deja/g++.brendan/static3.C
! 4f9de246b22bde153f40af23fc7a7847  gcc/testsuite/g++.old-deja/g++.brendan/synth1.C
  8ea3f375d9d6dc50b944e77d696584d2  gcc/testsuite/g++.old-deja/g++.brendan/template1.C
  e9b4f6c50db3c9f8f8362d23b59ecb7f  gcc/testsuite/g++.old-deja/g++.brendan/template11.C
  ddba51178f0d708b9b73306649f2de25  gcc/testsuite/g++.old-deja/g++.brendan/template12.C
--- 20840,20846 ----
  aa906bf43b597100d7b2c69938ea3534  gcc/testsuite/g++.old-deja/g++.brendan/static1.C
  a7ca45289830afd8555d41c2c9c2844f  gcc/testsuite/g++.old-deja/g++.brendan/static2.C
  a9c90d5ae062d30726f66685c678e0dc  gcc/testsuite/g++.old-deja/g++.brendan/static3.C
! 2935b774c156ef62a9470deb0d4e3690  gcc/testsuite/g++.old-deja/g++.brendan/synth1.C
  8ea3f375d9d6dc50b944e77d696584d2  gcc/testsuite/g++.old-deja/g++.brendan/template1.C
  e9b4f6c50db3c9f8f8362d23b59ecb7f  gcc/testsuite/g++.old-deja/g++.brendan/template11.C
  ddba51178f0d708b9b73306649f2de25  gcc/testsuite/g++.old-deja/g++.brendan/template12.C
*************** d00253d70a14469314393d169bec2c0e  gcc/te
*** 19846,19861 ****
  ac9a5240763e641aff84b4edf13031ce  gcc/testsuite/g++.old-deja/g++.bugs/900519_12.C
  a5d8af920912a29d9471383754871192  gcc/testsuite/g++.old-deja/g++.bugs/900519_13.C
  a5736dbc59be59b038f9329cd74bd79a  gcc/testsuite/g++.old-deja/g++.bugs/900520_02.C
! 8c745c14f9e9fb9fa964d31b1fefb542  gcc/testsuite/g++.old-deja/g++.bugs/900520_03.C
  32f9838a2677f4322d6422963ad75321  gcc/testsuite/g++.old-deja/g++.bugs/900520_04.C
  e04f0d66f5d7d54dcb1732090fd6134e  gcc/testsuite/g++.old-deja/g++.bugs/900520_05.C
  365ad489a4b8cb4d59c97741b1d326bb  gcc/testsuite/g++.old-deja/g++.bugs/900520_06.C
! 55dc7ac49679b9536d6bc9c607106b61  gcc/testsuite/g++.old-deja/g++.eh/badalloc1.C
  a431791e8c02c6fc5c746db5efcfb40b  gcc/testsuite/g++.old-deja/g++.eh/catch1.C
  1e641d82ee233ceda2ae0ab2028661f9  gcc/testsuite/g++.old-deja/g++.eh/catch10.C
  a83d60c4fb96f4454d525c1e8b6a33a7  gcc/testsuite/g++.old-deja/g++.eh/catch11.C
  22f50aa9e05125f9a73411eeae9cd099  gcc/testsuite/g++.old-deja/g++.eh/catch12.C
! 6a61b8e436a8ce420adde9146b5c36df  gcc/testsuite/g++.old-deja/g++.eh/catch13.C
  9d8e8ea3328cf56e911bdfa42b0fa662  gcc/testsuite/g++.old-deja/g++.eh/catch14.C
  3324d129f93366b1521e80f1d4b9bdd6  gcc/testsuite/g++.old-deja/g++.eh/catch2.C
  d4c0ba3d45a00d15821ab3121af637c5  gcc/testsuite/g++.old-deja/g++.eh/catch3.C
--- 20987,21002 ----
  ac9a5240763e641aff84b4edf13031ce  gcc/testsuite/g++.old-deja/g++.bugs/900519_12.C
  a5d8af920912a29d9471383754871192  gcc/testsuite/g++.old-deja/g++.bugs/900519_13.C
  a5736dbc59be59b038f9329cd74bd79a  gcc/testsuite/g++.old-deja/g++.bugs/900520_02.C
! b00d2568b245f9e277d20be1b4b10a71  gcc/testsuite/g++.old-deja/g++.bugs/900520_03.C
  32f9838a2677f4322d6422963ad75321  gcc/testsuite/g++.old-deja/g++.bugs/900520_04.C
  e04f0d66f5d7d54dcb1732090fd6134e  gcc/testsuite/g++.old-deja/g++.bugs/900520_05.C
  365ad489a4b8cb4d59c97741b1d326bb  gcc/testsuite/g++.old-deja/g++.bugs/900520_06.C
! d1f812b0fed8696924824353accf115f  gcc/testsuite/g++.old-deja/g++.eh/badalloc1.C
  a431791e8c02c6fc5c746db5efcfb40b  gcc/testsuite/g++.old-deja/g++.eh/catch1.C
  1e641d82ee233ceda2ae0ab2028661f9  gcc/testsuite/g++.old-deja/g++.eh/catch10.C
  a83d60c4fb96f4454d525c1e8b6a33a7  gcc/testsuite/g++.old-deja/g++.eh/catch11.C
  22f50aa9e05125f9a73411eeae9cd099  gcc/testsuite/g++.old-deja/g++.eh/catch12.C
! c186c63c8ba86a5b6cb465f7ab19d63d  gcc/testsuite/g++.old-deja/g++.eh/catch13.C
  9d8e8ea3328cf56e911bdfa42b0fa662  gcc/testsuite/g++.old-deja/g++.eh/catch14.C
  3324d129f93366b1521e80f1d4b9bdd6  gcc/testsuite/g++.old-deja/g++.eh/catch2.C
  d4c0ba3d45a00d15821ab3121af637c5  gcc/testsuite/g++.old-deja/g++.eh/catch3.C
*************** f53033f53b20e92e0c7776246dec74d0  gcc/te
*** 19874,19882 ****
  0c50a52f2e135d4383841ee8705917e9  gcc/testsuite/g++.old-deja/g++.eh/catch9p.C
  e04cf950955ebdaeda17f9fc71317cc7  gcc/testsuite/g++.old-deja/g++.eh/catchptr1.C
  ee2dd570f0862f7f990dbd673349a664  gcc/testsuite/g++.old-deja/g++.eh/cleanup1.C
! d3d3766a2f9c97941bc2a2c2b1b02caa  gcc/testsuite/g++.old-deja/g++.eh/cleanup2.C
  cdc579ac8c8f4328b5b16917b301b7e8  gcc/testsuite/g++.old-deja/g++.eh/cond1.C
! 5465c867aef7fe0b375e0b733300bc1b  gcc/testsuite/g++.old-deja/g++.eh/crash1.C
  1604e9f615755f1d4b2fbb38669a2a74  gcc/testsuite/g++.old-deja/g++.eh/crash2.C
  739c732403e3a10677bc952248d7b3cf  gcc/testsuite/g++.old-deja/g++.eh/crash3.C
  328c615c13278b502e18b7a38ea32810  gcc/testsuite/g++.old-deja/g++.eh/crash4.C
--- 21015,21023 ----
  0c50a52f2e135d4383841ee8705917e9  gcc/testsuite/g++.old-deja/g++.eh/catch9p.C
  e04cf950955ebdaeda17f9fc71317cc7  gcc/testsuite/g++.old-deja/g++.eh/catchptr1.C
  ee2dd570f0862f7f990dbd673349a664  gcc/testsuite/g++.old-deja/g++.eh/cleanup1.C
! 9f047d9b60ef3c9ef4c87df19c10b467  gcc/testsuite/g++.old-deja/g++.eh/cleanup2.C
  cdc579ac8c8f4328b5b16917b301b7e8  gcc/testsuite/g++.old-deja/g++.eh/cond1.C
! b903876a0b6ee0eb25737e78430452f6  gcc/testsuite/g++.old-deja/g++.eh/crash1.C
  1604e9f615755f1d4b2fbb38669a2a74  gcc/testsuite/g++.old-deja/g++.eh/crash2.C
  739c732403e3a10677bc952248d7b3cf  gcc/testsuite/g++.old-deja/g++.eh/crash3.C
  328c615c13278b502e18b7a38ea32810  gcc/testsuite/g++.old-deja/g++.eh/crash4.C
*************** e745d6dfc7259a45bdc13f8bb0ee92fb  gcc/te
*** 19905,19919 ****
  01f036efd83762faa930b6ddab3d411e  gcc/testsuite/g++.old-deja/g++.eh/spec3.C
  5fa9d40ab586ae03b198256bba8e2af4  gcc/testsuite/g++.old-deja/g++.eh/spec4.C
  6661bd6d7f84a5facb2e16615b994483  gcc/testsuite/g++.old-deja/g++.eh/spec5.C
! 9aa80adeddd00f97db96b6e5f7c5c3e4  gcc/testsuite/g++.old-deja/g++.eh/spec6.C
  e1be1d604a2e019c1bf80d17a2993239  gcc/testsuite/g++.old-deja/g++.eh/spec7.C
  7d55190d2961ccde4c57bde2d6e6b4cd  gcc/testsuite/g++.old-deja/g++.eh/terminate1.C
  e119c0abf28a26060ddb1897af1b2f33  gcc/testsuite/g++.old-deja/g++.eh/terminate2.C
! 614befd683020fbf6a9b345f920e9a34  gcc/testsuite/g++.old-deja/g++.eh/throw1.C
! b11b4154af6ddf763b9e8c72b62d7682  gcc/testsuite/g++.old-deja/g++.eh/throw2.C
! 85370dc70edcfb09125863f2c907fccd  gcc/testsuite/g++.old-deja/g++.eh/tmpl1.C
  10ba7935836a909b4eeef0ac2a8431b5  gcc/testsuite/g++.old-deja/g++.eh/tmpl2.C
! 2b4b996f411d68c67d1607cac8d13c39  gcc/testsuite/g++.old-deja/g++.eh/tmpl3.C
  10467f823d0bb353512055f6c0547e95  gcc/testsuite/g++.old-deja/g++.eh/tmpl4.C
  ea01e485e96a2b4fc269ec88d516498b  gcc/testsuite/g++.old-deja/g++.eh/tmpl5.C
  fefbac87316860d887029e17e36d1d08  gcc/testsuite/g++.old-deja/g++.eh/tmpl6.C
--- 21046,21060 ----
  01f036efd83762faa930b6ddab3d411e  gcc/testsuite/g++.old-deja/g++.eh/spec3.C
  5fa9d40ab586ae03b198256bba8e2af4  gcc/testsuite/g++.old-deja/g++.eh/spec4.C
  6661bd6d7f84a5facb2e16615b994483  gcc/testsuite/g++.old-deja/g++.eh/spec5.C
! 0ea51fde02cad26f6d93f1007c516515  gcc/testsuite/g++.old-deja/g++.eh/spec6.C
  e1be1d604a2e019c1bf80d17a2993239  gcc/testsuite/g++.old-deja/g++.eh/spec7.C
  7d55190d2961ccde4c57bde2d6e6b4cd  gcc/testsuite/g++.old-deja/g++.eh/terminate1.C
  e119c0abf28a26060ddb1897af1b2f33  gcc/testsuite/g++.old-deja/g++.eh/terminate2.C
! d043aff5b9e8b7bb2e60fc61dbceba45  gcc/testsuite/g++.old-deja/g++.eh/throw1.C
! e46de41af463d11cb873f3b351eb5dc0  gcc/testsuite/g++.old-deja/g++.eh/throw2.C
! d61633958d759aaecdd89b68dc45934c  gcc/testsuite/g++.old-deja/g++.eh/tmpl1.C
  10ba7935836a909b4eeef0ac2a8431b5  gcc/testsuite/g++.old-deja/g++.eh/tmpl2.C
! 043bcae91858c58520614ab10d740d6d  gcc/testsuite/g++.old-deja/g++.eh/tmpl3.C
  10467f823d0bb353512055f6c0547e95  gcc/testsuite/g++.old-deja/g++.eh/tmpl4.C
  ea01e485e96a2b4fc269ec88d516498b  gcc/testsuite/g++.old-deja/g++.eh/tmpl5.C
  fefbac87316860d887029e17e36d1d08  gcc/testsuite/g++.old-deja/g++.eh/tmpl6.C
*************** bd0efa0a1fe0ed98636fcebbc5fd05e3  gcc/te
*** 19930,19940 ****
  6ce37734760abfd9bd961226e88f2716  gcc/testsuite/g++.old-deja/g++.ext/anon2.C
  6dc1c08f311f5bdbef96fd9a1f96e2ea  gcc/testsuite/g++.old-deja/g++.ext/anon3.C
  ad0913538dd7d6e5fa83fb6ba070dcf4  gcc/testsuite/g++.old-deja/g++.ext/array1.C
! 70a0389ce8c471f6a0bd878ddc94a9d4  gcc/testsuite/g++.old-deja/g++.ext/array2.C
  0358c365e76d6d31e6b0d88db4a8b90b  gcc/testsuite/g++.old-deja/g++.ext/array3.C
  b2f69c1973b3d4b6b9e01df5ce3b43ba  gcc/testsuite/g++.old-deja/g++.ext/array4.C
  60de5c23c65fe5ebd8cb2707b86aa75a  gcc/testsuite/g++.old-deja/g++.ext/arrnew.C
! 94198d25977b1de18c220c8dacb70fa3  gcc/testsuite/g++.old-deja/g++.ext/arrnew2.C
  a73fc887eed082ef683e77dde6521d24  gcc/testsuite/g++.old-deja/g++.ext/asmspec1.C
  9b40e92e0865a215292a4a7e43b7fd64  gcc/testsuite/g++.old-deja/g++.ext/attrib1.C
  070be7491ea6affff1e06a73a335043e  gcc/testsuite/g++.old-deja/g++.ext/attrib2.C
--- 21071,21081 ----
  6ce37734760abfd9bd961226e88f2716  gcc/testsuite/g++.old-deja/g++.ext/anon2.C
  6dc1c08f311f5bdbef96fd9a1f96e2ea  gcc/testsuite/g++.old-deja/g++.ext/anon3.C
  ad0913538dd7d6e5fa83fb6ba070dcf4  gcc/testsuite/g++.old-deja/g++.ext/array1.C
! 6d5e5c16bb1c19ffedd5ac387698d679  gcc/testsuite/g++.old-deja/g++.ext/array2.C
  0358c365e76d6d31e6b0d88db4a8b90b  gcc/testsuite/g++.old-deja/g++.ext/array3.C
  b2f69c1973b3d4b6b9e01df5ce3b43ba  gcc/testsuite/g++.old-deja/g++.ext/array4.C
  60de5c23c65fe5ebd8cb2707b86aa75a  gcc/testsuite/g++.old-deja/g++.ext/arrnew.C
! 5cc28e7a578065b4d715c4144e71ab47  gcc/testsuite/g++.old-deja/g++.ext/arrnew2.C
  a73fc887eed082ef683e77dde6521d24  gcc/testsuite/g++.old-deja/g++.ext/asmspec1.C
  9b40e92e0865a215292a4a7e43b7fd64  gcc/testsuite/g++.old-deja/g++.ext/attrib1.C
  070be7491ea6affff1e06a73a335043e  gcc/testsuite/g++.old-deja/g++.ext/attrib2.C
*************** ae9068ea19cc94f508bcfca599cf3160  gcc/te
*** 19943,19958 ****
  4e51fb5cf85b5f790f1be106d234035f  gcc/testsuite/g++.old-deja/g++.ext/attrib5.C
  4a3cb5f4907fc2dd61b5a428d6f2a5eb  gcc/testsuite/g++.old-deja/g++.ext/attrib6.C
  3319bbc157c0ea8b1ee782f722a5788a  gcc/testsuite/g++.old-deja/g++.ext/bound1.C
! 7e968cebb40357949b08db2dd18895f3  gcc/testsuite/g++.old-deja/g++.ext/constructor.C
  09e867b0fab670965c20be371975da13  gcc/testsuite/g++.old-deja/g++.ext/default.C
  04aaaf608d3428b0ce27c992835dd4ca  gcc/testsuite/g++.old-deja/g++.ext/delvoid.C
  b6418b336a13fd226ab5d32e33b8f7a6  gcc/testsuite/g++.old-deja/g++.ext/jump1.C
  7c80d75a7a5060ebffa4bb21e1a5bca7  gcc/testsuite/g++.old-deja/g++.ext/label1.C
  0ca8735aa70dd60af0734860b2521e34  gcc/testsuite/g++.old-deja/g++.ext/label2.C
  40c3937351fd3d48a6099ea7d48918d0  gcc/testsuite/g++.old-deja/g++.ext/memconst.C
! 3208432e3fbd078a0129ef1d5c752925  gcc/testsuite/g++.old-deja/g++.ext/namedret1.C
! 0dad32ef7f07deaa5a2567a7c0267130  gcc/testsuite/g++.old-deja/g++.ext/namedret2.C
! 95d2c4a18ce65af541fc6de3f5d3674a  gcc/testsuite/g++.old-deja/g++.ext/namedret3.C
  653defb4f71cb47ee4060cfa0b8c06a9  gcc/testsuite/g++.old-deja/g++.ext/noweak1.C
  441e900253b789b6b51d853547d8c928  gcc/testsuite/g++.old-deja/g++.ext/null1.C
  aaf28a2517f6c96e4befdb26d943ccd0  gcc/testsuite/g++.old-deja/g++.ext/overload1.C
--- 21084,21099 ----
  4e51fb5cf85b5f790f1be106d234035f  gcc/testsuite/g++.old-deja/g++.ext/attrib5.C
  4a3cb5f4907fc2dd61b5a428d6f2a5eb  gcc/testsuite/g++.old-deja/g++.ext/attrib6.C
  3319bbc157c0ea8b1ee782f722a5788a  gcc/testsuite/g++.old-deja/g++.ext/bound1.C
! ce47863dfa64e2683d36211825821dc6  gcc/testsuite/g++.old-deja/g++.ext/constructor.C
  09e867b0fab670965c20be371975da13  gcc/testsuite/g++.old-deja/g++.ext/default.C
  04aaaf608d3428b0ce27c992835dd4ca  gcc/testsuite/g++.old-deja/g++.ext/delvoid.C
  b6418b336a13fd226ab5d32e33b8f7a6  gcc/testsuite/g++.old-deja/g++.ext/jump1.C
  7c80d75a7a5060ebffa4bb21e1a5bca7  gcc/testsuite/g++.old-deja/g++.ext/label1.C
  0ca8735aa70dd60af0734860b2521e34  gcc/testsuite/g++.old-deja/g++.ext/label2.C
  40c3937351fd3d48a6099ea7d48918d0  gcc/testsuite/g++.old-deja/g++.ext/memconst.C
! 0d327f266fb608bbb0704b695d2e731b  gcc/testsuite/g++.old-deja/g++.ext/namedret1.C
! 2c6a01e2b3b720d2e13c894525ec8f2d  gcc/testsuite/g++.old-deja/g++.ext/namedret2.C
! a5bdc133b190794e36dfaf6b784974e5  gcc/testsuite/g++.old-deja/g++.ext/namedret3.C
  653defb4f71cb47ee4060cfa0b8c06a9  gcc/testsuite/g++.old-deja/g++.ext/noweak1.C
  441e900253b789b6b51d853547d8c928  gcc/testsuite/g++.old-deja/g++.ext/null1.C
  aaf28a2517f6c96e4befdb26d943ccd0  gcc/testsuite/g++.old-deja/g++.ext/overload1.C
*************** aaf28a2517f6c96e4befdb26d943ccd0  gcc/te
*** 19961,19967 ****
  94ba708371ff08ece1345c37517ff7db  gcc/testsuite/g++.old-deja/g++.ext/pretty3.C
  5190ae04151ad378ef34a94c3131bb45  gcc/testsuite/g++.old-deja/g++.ext/pretty4.C
  df31b13912c1da9a3fc14ba82453bf22  gcc/testsuite/g++.old-deja/g++.ext/restrict1.C
! 6598d77c55ae33fc757c8ea1283eb7ff  gcc/testsuite/g++.old-deja/g++.ext/return1.C
  ea46aef8157f0a37daa39b1ac8c6bfa8  gcc/testsuite/g++.old-deja/g++.ext/stmtexpr1.C
  9c864011e86a2caf368208e1cf707f09  gcc/testsuite/g++.old-deja/g++.ext/syshdr1.C
  4bb09491c286d809524eeecc77d75765  gcc/testsuite/g++.old-deja/g++.ext/typename1.C
--- 21102,21108 ----
  94ba708371ff08ece1345c37517ff7db  gcc/testsuite/g++.old-deja/g++.ext/pretty3.C
  5190ae04151ad378ef34a94c3131bb45  gcc/testsuite/g++.old-deja/g++.ext/pretty4.C
  df31b13912c1da9a3fc14ba82453bf22  gcc/testsuite/g++.old-deja/g++.ext/restrict1.C
! f138a0ea66c472b8564926d10feea0c8  gcc/testsuite/g++.old-deja/g++.ext/return1.C
  ea46aef8157f0a37daa39b1ac8c6bfa8  gcc/testsuite/g++.old-deja/g++.ext/stmtexpr1.C
  9c864011e86a2caf368208e1cf707f09  gcc/testsuite/g++.old-deja/g++.ext/syshdr1.C
  4bb09491c286d809524eeecc77d75765  gcc/testsuite/g++.old-deja/g++.ext/typename1.C
*************** dd61795a3b7287674e730b30bf7d8d37  gcc/te
*** 20013,20019 ****
  8d11cb9a258c08aefb18a70b8e85fd27  gcc/testsuite/g++.old-deja/g++.jason/anon.C
  6d6ae514cd2c77286bbf074fc8bb8d87  gcc/testsuite/g++.old-deja/g++.jason/anon2.C
  3c9216120f190b77a1d7b69a45f4d65b  gcc/testsuite/g++.old-deja/g++.jason/anon3.C
! 0f6b640e9b92540551a77f97d30556b8  gcc/testsuite/g++.old-deja/g++.jason/anon4.C
  2faef7e30c8fb894ef27205f01b51f39  gcc/testsuite/g++.old-deja/g++.jason/binding.C
  7e21caedc80f7ec02092414e52c37458  gcc/testsuite/g++.old-deja/g++.jason/binding2.C
  7c9d834c7d8786f219380c03f191c202  gcc/testsuite/g++.old-deja/g++.jason/binding3.C
--- 21154,21160 ----
  8d11cb9a258c08aefb18a70b8e85fd27  gcc/testsuite/g++.old-deja/g++.jason/anon.C
  6d6ae514cd2c77286bbf074fc8bb8d87  gcc/testsuite/g++.old-deja/g++.jason/anon2.C
  3c9216120f190b77a1d7b69a45f4d65b  gcc/testsuite/g++.old-deja/g++.jason/anon3.C
! 7b1d5f3db79c1df399336a049540ea33  gcc/testsuite/g++.old-deja/g++.jason/anon4.C
  2faef7e30c8fb894ef27205f01b51f39  gcc/testsuite/g++.old-deja/g++.jason/binding.C
  7e21caedc80f7ec02092414e52c37458  gcc/testsuite/g++.old-deja/g++.jason/binding2.C
  7c9d834c7d8786f219380c03f191c202  gcc/testsuite/g++.old-deja/g++.jason/binding3.C
*************** dd61795a3b7287674e730b30bf7d8d37  gcc/te
*** 20021,20027 ****
  d2be927bf834ef05a3cf71bff558668e  gcc/testsuite/g++.old-deja/g++.jason/bool2.C
  0281d501181e7c62410bcd2b6de8ccdc  gcc/testsuite/g++.old-deja/g++.jason/bool3.C
  fe1e369a541ff0ff613e35c5b065ddb4  gcc/testsuite/g++.old-deja/g++.jason/bool4.C
! f85ed8e8fd732c1a59879f94d5ca90b6  gcc/testsuite/g++.old-deja/g++.jason/bool5.C
  81a65b9417af676af77db7a2cae52e06  gcc/testsuite/g++.old-deja/g++.jason/bool6.C
  41e60403315b77f3e7cbd274f7f8f2e5  gcc/testsuite/g++.old-deja/g++.jason/bool7.C
  53aef353e2e1a9a9eaac3faea32e02e5  gcc/testsuite/g++.old-deja/g++.jason/builtin.C
--- 21162,21168 ----
  d2be927bf834ef05a3cf71bff558668e  gcc/testsuite/g++.old-deja/g++.jason/bool2.C
  0281d501181e7c62410bcd2b6de8ccdc  gcc/testsuite/g++.old-deja/g++.jason/bool3.C
  fe1e369a541ff0ff613e35c5b065ddb4  gcc/testsuite/g++.old-deja/g++.jason/bool4.C
! 3a6fcac29a9664695b11157f6f568fc8  gcc/testsuite/g++.old-deja/g++.jason/bool5.C
  81a65b9417af676af77db7a2cae52e06  gcc/testsuite/g++.old-deja/g++.jason/bool6.C
  41e60403315b77f3e7cbd274f7f8f2e5  gcc/testsuite/g++.old-deja/g++.jason/bool7.C
  53aef353e2e1a9a9eaac3faea32e02e5  gcc/testsuite/g++.old-deja/g++.jason/builtin.C
*************** ccd6d94073b06051f8b3a501c9e981a1  gcc/te
*** 20093,20099 ****
  5959560ff95ab3ae0572ae5f1374d61b  gcc/testsuite/g++.old-deja/g++.jason/enum3.C
  743310178fbb706facf03822fb40e31e  gcc/testsuite/g++.old-deja/g++.jason/enum4.C
  beb5eb6418228be74e469fbcf0dbb8b4  gcc/testsuite/g++.old-deja/g++.jason/enum5.C
! 209b7ff6a130f4e8e8ba2ac6c1ddf59b  gcc/testsuite/g++.old-deja/g++.jason/enum6.C
  81d5f64e78075ecaa09fbb1722bad849  gcc/testsuite/g++.old-deja/g++.jason/enum7.C
  367d613bc250e9dcc871a0dac0cd3de8  gcc/testsuite/g++.old-deja/g++.jason/enum8.C
  48450b1b5f0295f7905a77b1f41b6274  gcc/testsuite/g++.old-deja/g++.jason/explicit.C
--- 21234,21240 ----
  5959560ff95ab3ae0572ae5f1374d61b  gcc/testsuite/g++.old-deja/g++.jason/enum3.C
  743310178fbb706facf03822fb40e31e  gcc/testsuite/g++.old-deja/g++.jason/enum4.C
  beb5eb6418228be74e469fbcf0dbb8b4  gcc/testsuite/g++.old-deja/g++.jason/enum5.C
! 72116f464d92e6af9608254c9ff8f5d3  gcc/testsuite/g++.old-deja/g++.jason/enum6.C
  81d5f64e78075ecaa09fbb1722bad849  gcc/testsuite/g++.old-deja/g++.jason/enum7.C
  367d613bc250e9dcc871a0dac0cd3de8  gcc/testsuite/g++.old-deja/g++.jason/enum8.C
  48450b1b5f0295f7905a77b1f41b6274  gcc/testsuite/g++.old-deja/g++.jason/explicit.C
*************** d5b295340ce3c4e7c90072f6f9d23b1f  gcc/te
*** 20114,20122 ****
  50073a6071d6794e498c673f033277ae  gcc/testsuite/g++.old-deja/g++.jason/jump.C
  8abcf8e3e06b96f67a9d0eb9fc42ae3e  gcc/testsuite/g++.old-deja/g++.jason/lex1.C
  34bdc02643581b5f848f513b830c921c  gcc/testsuite/g++.old-deja/g++.jason/lineno.C
! 8ec729bd9f48e94f3823976c8a4d526c  gcc/testsuite/g++.old-deja/g++.jason/lineno2.C
! 95730042db5d44f4dcb6425affbcd679  gcc/testsuite/g++.old-deja/g++.jason/lineno3.C
! b21779b582953ad0e5d78c2b9d29b161  gcc/testsuite/g++.old-deja/g++.jason/lineno4.C
  6474d481e679e503748e025c9c39c6e6  gcc/testsuite/g++.old-deja/g++.jason/lineno5.C
  62d91c6f901a8815cfc31c1c81d4258d  gcc/testsuite/g++.old-deja/g++.jason/local.C
  f8407269257a5289abd85ac61305275e  gcc/testsuite/g++.old-deja/g++.jason/lookup.C
--- 21255,21263 ----
  50073a6071d6794e498c673f033277ae  gcc/testsuite/g++.old-deja/g++.jason/jump.C
  8abcf8e3e06b96f67a9d0eb9fc42ae3e  gcc/testsuite/g++.old-deja/g++.jason/lex1.C
  34bdc02643581b5f848f513b830c921c  gcc/testsuite/g++.old-deja/g++.jason/lineno.C
! 1b9c28cc539e0a34ce4773474baa9dd0  gcc/testsuite/g++.old-deja/g++.jason/lineno2.C
! d064adec830817fbd1a5cb780d83da94  gcc/testsuite/g++.old-deja/g++.jason/lineno3.C
! 22df6c1b4e1384ab907c36f8e0aa1a54  gcc/testsuite/g++.old-deja/g++.jason/lineno4.C
  6474d481e679e503748e025c9c39c6e6  gcc/testsuite/g++.old-deja/g++.jason/lineno5.C
  62d91c6f901a8815cfc31c1c81d4258d  gcc/testsuite/g++.old-deja/g++.jason/local.C
  f8407269257a5289abd85ac61305275e  gcc/testsuite/g++.old-deja/g++.jason/lookup.C
*************** a0fe56c8eaf78c345108e0aa50ba780a  gcc/te
*** 20146,20154 ****
  b4daf2a06948651dda4874d838e4ce74  gcc/testsuite/g++.old-deja/g++.jason/net.C
  4fda4ee8734b9666561f2f255d68fa20  gcc/testsuite/g++.old-deja/g++.jason/net2.C
  d16caf6ee46fa525af3c28b5597c10a1  gcc/testsuite/g++.old-deja/g++.jason/new.C
! 4a97eabb2936112e96b49ea1a76e3316  gcc/testsuite/g++.old-deja/g++.jason/new2.C
  eb117dc6d9c6a4627be2ca6a7a06236e  gcc/testsuite/g++.old-deja/g++.jason/new3.C
! 8a5b018fc769738ff9267be1a33abf51  gcc/testsuite/g++.old-deja/g++.jason/new4.C
  a0e06fefdf82fe1040c38c7cfbfe6cc6  gcc/testsuite/g++.old-deja/g++.jason/new5.C
  0ad6e79ea07c5b8b452a371df31b9ce1  gcc/testsuite/g++.old-deja/g++.jason/offset1.C
  0ba1f119f97556fe052d9276e19e0b77  gcc/testsuite/g++.old-deja/g++.jason/offset2.C
--- 21287,21295 ----
  b4daf2a06948651dda4874d838e4ce74  gcc/testsuite/g++.old-deja/g++.jason/net.C
  4fda4ee8734b9666561f2f255d68fa20  gcc/testsuite/g++.old-deja/g++.jason/net2.C
  d16caf6ee46fa525af3c28b5597c10a1  gcc/testsuite/g++.old-deja/g++.jason/new.C
! 5f2ae8f1f5219bca20b2549418042bd9  gcc/testsuite/g++.old-deja/g++.jason/new2.C
  eb117dc6d9c6a4627be2ca6a7a06236e  gcc/testsuite/g++.old-deja/g++.jason/new3.C
! 3227eeafbe85723c7e028248f98ac4f8  gcc/testsuite/g++.old-deja/g++.jason/new4.C
  a0e06fefdf82fe1040c38c7cfbfe6cc6  gcc/testsuite/g++.old-deja/g++.jason/new5.C
  0ad6e79ea07c5b8b452a371df31b9ce1  gcc/testsuite/g++.old-deja/g++.jason/offset1.C
  0ba1f119f97556fe052d9276e19e0b77  gcc/testsuite/g++.old-deja/g++.jason/offset2.C
*************** beb07d7e7193d5b20c559e39f9f833bb  gcc/te
*** 20160,20166 ****
  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
! 24e11640da8be3d0015e879a45b2a005  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
--- 21301,21307 ----
  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
! ee6781e3728ec96ef6b02c895900833d  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
*************** bd2c9ff6e75478ef5092aa30ce900eff  gcc/te
*** 20278,20287 ****
  647286463ce7ee3841394dc65c3053c9  gcc/testsuite/g++.old-deja/g++.jason/scoping.C
  d662843f32b192516f98c87aba14c1db  gcc/testsuite/g++.old-deja/g++.jason/scoping10.C
  55dc1fca689030b5a494bddbb4c29887  gcc/testsuite/g++.old-deja/g++.jason/scoping11.C
! 2f07fa61ccf652afb356c66974bdb2d2  gcc/testsuite/g++.old-deja/g++.jason/scoping12.C
  c95f927cfb45bc8afae59ec5c34f2c56  gcc/testsuite/g++.old-deja/g++.jason/scoping13.C
  d49d9ed9b505bcd76004260d7a7ececa  gcc/testsuite/g++.old-deja/g++.jason/scoping14.C
! 8ed8d8244b592c10ad46057d72681a50  gcc/testsuite/g++.old-deja/g++.jason/scoping15.C
  844cb7fc79609a22270eddb3247cf498  gcc/testsuite/g++.old-deja/g++.jason/scoping16.C
  54afd2f673dc93e414b4cf73c33d2e03  gcc/testsuite/g++.old-deja/g++.jason/scoping17.C
  5208bbd8f1012a55789b08dd3f00ec34  gcc/testsuite/g++.old-deja/g++.jason/scoping2.C
--- 21419,21428 ----
  647286463ce7ee3841394dc65c3053c9  gcc/testsuite/g++.old-deja/g++.jason/scoping.C
  d662843f32b192516f98c87aba14c1db  gcc/testsuite/g++.old-deja/g++.jason/scoping10.C
  55dc1fca689030b5a494bddbb4c29887  gcc/testsuite/g++.old-deja/g++.jason/scoping11.C
! 0540936f830cbbc6ebba4fe439dfc087  gcc/testsuite/g++.old-deja/g++.jason/scoping12.C
  c95f927cfb45bc8afae59ec5c34f2c56  gcc/testsuite/g++.old-deja/g++.jason/scoping13.C
  d49d9ed9b505bcd76004260d7a7ececa  gcc/testsuite/g++.old-deja/g++.jason/scoping14.C
! 9b87d3100e1fd802519648edf483739a  gcc/testsuite/g++.old-deja/g++.jason/scoping15.C
  844cb7fc79609a22270eddb3247cf498  gcc/testsuite/g++.old-deja/g++.jason/scoping16.C
  54afd2f673dc93e414b4cf73c33d2e03  gcc/testsuite/g++.old-deja/g++.jason/scoping17.C
  5208bbd8f1012a55789b08dd3f00ec34  gcc/testsuite/g++.old-deja/g++.jason/scoping2.C
*************** f630e10a549618eeb11d488decde8876  gcc/te
*** 20292,20298 ****
  4c57a25a047fb76c5dd41de229c84797  gcc/testsuite/g++.old-deja/g++.jason/scoping7.C
  36252f66db6a8e4cf57c9dbcbefe7a4e  gcc/testsuite/g++.old-deja/g++.jason/scoping8.C
  ab7a07cc0487ab0ed3103edee5f02796  gcc/testsuite/g++.old-deja/g++.jason/scoping9.C
! 61616ca0577f487c8999427865215005  gcc/testsuite/g++.old-deja/g++.jason/shadow1.C
  8c4b6c23d8b38175065e5a17ddc5a1a5  gcc/testsuite/g++.old-deja/g++.jason/soverload.C
  6ae3f3bde787593240dc6100cd27cf10  gcc/testsuite/g++.old-deja/g++.jason/special.C
  735379da08c8491416b9cab328b00c99  gcc/testsuite/g++.old-deja/g++.jason/static1.C
--- 21433,21439 ----
  4c57a25a047fb76c5dd41de229c84797  gcc/testsuite/g++.old-deja/g++.jason/scoping7.C
  36252f66db6a8e4cf57c9dbcbefe7a4e  gcc/testsuite/g++.old-deja/g++.jason/scoping8.C
  ab7a07cc0487ab0ed3103edee5f02796  gcc/testsuite/g++.old-deja/g++.jason/scoping9.C
! 7bd58332302151a9b730cd8462a129d8  gcc/testsuite/g++.old-deja/g++.jason/shadow1.C
  8c4b6c23d8b38175065e5a17ddc5a1a5  gcc/testsuite/g++.old-deja/g++.jason/soverload.C
  6ae3f3bde787593240dc6100cd27cf10  gcc/testsuite/g++.old-deja/g++.jason/special.C
  735379da08c8491416b9cab328b00c99  gcc/testsuite/g++.old-deja/g++.jason/static1.C
*************** a04f1c7b8c7495f28bbc0d57eb6602c0  gcc/te
*** 20307,20313 ****
  bbe86c8c489266c11677d7fd660aa887  gcc/testsuite/g++.old-deja/g++.jason/synth8.C
  7f8222df60c5e8d0c1924c1474bd2e16  gcc/testsuite/g++.old-deja/g++.jason/synth9.C
  886defc4b8d1c91ce188acb16d63768c  gcc/testsuite/g++.old-deja/g++.jason/tempargs.C
! 9e42d5df6437e76834d1b688b85f8b68  gcc/testsuite/g++.old-deja/g++.jason/tempcons.C
  7507cf741facabf703adfff61cf35788  gcc/testsuite/g++.old-deja/g++.jason/tempdest.C
  53ac07097be9bf3d20cdf6763ff25482  gcc/testsuite/g++.old-deja/g++.jason/tempinst1.C
  00ad7a65f5a13a306059f82d2d154c75  gcc/testsuite/g++.old-deja/g++.jason/template1.C
--- 21448,21454 ----
  bbe86c8c489266c11677d7fd660aa887  gcc/testsuite/g++.old-deja/g++.jason/synth8.C
  7f8222df60c5e8d0c1924c1474bd2e16  gcc/testsuite/g++.old-deja/g++.jason/synth9.C
  886defc4b8d1c91ce188acb16d63768c  gcc/testsuite/g++.old-deja/g++.jason/tempargs.C
! 5ea1e7c59b5d0cef3f6ac28f84270257  gcc/testsuite/g++.old-deja/g++.jason/tempcons.C
  7507cf741facabf703adfff61cf35788  gcc/testsuite/g++.old-deja/g++.jason/tempdest.C
  53ac07097be9bf3d20cdf6763ff25482  gcc/testsuite/g++.old-deja/g++.jason/tempinst1.C
  00ad7a65f5a13a306059f82d2d154c75  gcc/testsuite/g++.old-deja/g++.jason/template1.C
*************** e4681da1536da14176b6242aa0cde9a4  gcc/te
*** 20363,20370 ****
  0f465f011856318e4a82bae9e718ca27  gcc/testsuite/g++.old-deja/g++.jason/tempsub.C
  40fcdd9ac5d7df502c6154f385d814a8  gcc/testsuite/g++.old-deja/g++.jason/this.C
  9c846445e2018745dcc34b2f1642858c  gcc/testsuite/g++.old-deja/g++.jason/thunk1.C
! e009d9b91513051053d5ef3a438adbd8  gcc/testsuite/g++.old-deja/g++.jason/thunk2.C
! 2301ab5459a4e6fe416e31656eb966ce  gcc/testsuite/g++.old-deja/g++.jason/thunk3.C
  776a6eba4666d06b4325a2d0850afe81  gcc/testsuite/g++.old-deja/g++.jason/tredecl.C
  bed2e0f518532685396e3880a1588ea1  gcc/testsuite/g++.old-deja/g++.jason/tredecl2.C
  bb1e0f3963c848d63c1da72405f295ce  gcc/testsuite/g++.old-deja/g++.jason/tredecl3.C
--- 21504,21511 ----
  0f465f011856318e4a82bae9e718ca27  gcc/testsuite/g++.old-deja/g++.jason/tempsub.C
  40fcdd9ac5d7df502c6154f385d814a8  gcc/testsuite/g++.old-deja/g++.jason/this.C
  9c846445e2018745dcc34b2f1642858c  gcc/testsuite/g++.old-deja/g++.jason/thunk1.C
! d3fafd3e53eb05ce93ee99b1ae2aa03e  gcc/testsuite/g++.old-deja/g++.jason/thunk2.C
! 050d480fa5d286b20bb24dfe16b45512  gcc/testsuite/g++.old-deja/g++.jason/thunk3.C
  776a6eba4666d06b4325a2d0850afe81  gcc/testsuite/g++.old-deja/g++.jason/tredecl.C
  bed2e0f518532685396e3880a1588ea1  gcc/testsuite/g++.old-deja/g++.jason/tredecl2.C
  bb1e0f3963c848d63c1da72405f295ce  gcc/testsuite/g++.old-deja/g++.jason/tredecl3.C
*************** a68ae1accdd8bf6e6fc405b3f7a0dfb5  gcc/te
*** 20423,20438 ****
  21b61c04c0e58d22e2aad4f662ab134d  gcc/testsuite/g++.old-deja/g++.law/arm8.C
  5d4fc146077e57e9a1b008249e388aea  gcc/testsuite/g++.old-deja/g++.law/arm9.C
  638fa4956e56c7fb5934d5d519cc118f  gcc/testsuite/g++.old-deja/g++.law/array1.C
! 9e499d061402ebba6f093043740f0f4e  gcc/testsuite/g++.old-deja/g++.law/array2.C
  f2868f3b6bc1abc6a8713d93271caa60  gcc/testsuite/g++.old-deja/g++.law/bad-error1.C
  d577d8c55e685042d83bba698f01886b  gcc/testsuite/g++.old-deja/g++.law/bad-error3.C
  934b6723375a87f52becce540f07892b  gcc/testsuite/g++.old-deja/g++.law/bad-error4.C
  822533128eb0e0a4bcaef22a20c38fad  gcc/testsuite/g++.old-deja/g++.law/bad-error6.C
  daaf68975d20f0ba1af45a1786dabcfb  gcc/testsuite/g++.old-deja/g++.law/bad-error7.C
  cc941aafb35ee4370727338c862b89a3  gcc/testsuite/g++.old-deja/g++.law/bit-fields1.C
! ba1a7b1525e9a7cef0a59366e2ecede7  gcc/testsuite/g++.old-deja/g++.law/bit-fields2.C
  0367f254f4f882067f24c4d417963ff3  gcc/testsuite/g++.old-deja/g++.law/bit-fields3.C
! 0261272f9b949fb8c1de6aa0afe5eb19  gcc/testsuite/g++.old-deja/g++.law/builtin1.C
  d064abffb69b49b904a86972c9b22300  gcc/testsuite/g++.old-deja/g++.law/casts1.C
  5e96fdf64986b7604ef1cbfb2a62765f  gcc/testsuite/g++.old-deja/g++.law/casts2.C
  37d297edaf905e63dbdf9877939b5652  gcc/testsuite/g++.old-deja/g++.law/casts3.C
--- 21564,21579 ----
  21b61c04c0e58d22e2aad4f662ab134d  gcc/testsuite/g++.old-deja/g++.law/arm8.C
  5d4fc146077e57e9a1b008249e388aea  gcc/testsuite/g++.old-deja/g++.law/arm9.C
  638fa4956e56c7fb5934d5d519cc118f  gcc/testsuite/g++.old-deja/g++.law/array1.C
! 6bc074f7a7bf9185ae1b60e830527648  gcc/testsuite/g++.old-deja/g++.law/array2.C
  f2868f3b6bc1abc6a8713d93271caa60  gcc/testsuite/g++.old-deja/g++.law/bad-error1.C
  d577d8c55e685042d83bba698f01886b  gcc/testsuite/g++.old-deja/g++.law/bad-error3.C
  934b6723375a87f52becce540f07892b  gcc/testsuite/g++.old-deja/g++.law/bad-error4.C
  822533128eb0e0a4bcaef22a20c38fad  gcc/testsuite/g++.old-deja/g++.law/bad-error6.C
  daaf68975d20f0ba1af45a1786dabcfb  gcc/testsuite/g++.old-deja/g++.law/bad-error7.C
  cc941aafb35ee4370727338c862b89a3  gcc/testsuite/g++.old-deja/g++.law/bit-fields1.C
! 7ab1463bb9a9f728a498ebcdbbede8f9  gcc/testsuite/g++.old-deja/g++.law/bit-fields2.C
  0367f254f4f882067f24c4d417963ff3  gcc/testsuite/g++.old-deja/g++.law/bit-fields3.C
! a88a4a91b7b48ab1e60ad13961259b4e  gcc/testsuite/g++.old-deja/g++.law/builtin1.C
  d064abffb69b49b904a86972c9b22300  gcc/testsuite/g++.old-deja/g++.law/casts1.C
  5e96fdf64986b7604ef1cbfb2a62765f  gcc/testsuite/g++.old-deja/g++.law/casts2.C
  37d297edaf905e63dbdf9877939b5652  gcc/testsuite/g++.old-deja/g++.law/casts3.C
*************** c50a0f8a1377cfbb50605dafa54460db  gcc/te
*** 20498,20507 ****
  fea044b4242d3b774bda7d79355c8d17  gcc/testsuite/g++.old-deja/g++.law/enum4.C
  2509a6d3dfafb6c8581c6d6baa1a2b55  gcc/testsuite/g++.old-deja/g++.law/enum6.C
  a148f19373f2b475268eafbb0a19cd4c  gcc/testsuite/g++.old-deja/g++.law/enum7.C
! 3d8c9691ed4c07d0caa348837d77bf22  gcc/testsuite/g++.old-deja/g++.law/enum9.C
  2fff8eb6e77ad44355471fd29f3412f9  gcc/testsuite/g++.old-deja/g++.law/except1.C
  78fafdc2ce65c395103fb31e50e03979  gcc/testsuite/g++.old-deja/g++.law/except2.C
! 95575b4fe563c42cff645192dcef1092  gcc/testsuite/g++.old-deja/g++.law/except3.C
  9f5fd5a9c0d286a6da07b43ffdab9523  gcc/testsuite/g++.old-deja/g++.law/except4.C
  8d6be9ca065c2ea51a648e772196fb09  gcc/testsuite/g++.old-deja/g++.law/except5.C
  2c9505d31f11fedc1ea3c45d6d817fd4  gcc/testsuite/g++.old-deja/g++.law/except6.C
--- 21639,21648 ----
  fea044b4242d3b774bda7d79355c8d17  gcc/testsuite/g++.old-deja/g++.law/enum4.C
  2509a6d3dfafb6c8581c6d6baa1a2b55  gcc/testsuite/g++.old-deja/g++.law/enum6.C
  a148f19373f2b475268eafbb0a19cd4c  gcc/testsuite/g++.old-deja/g++.law/enum7.C
! c4d9da2c6fb576556019102312954241  gcc/testsuite/g++.old-deja/g++.law/enum9.C
  2fff8eb6e77ad44355471fd29f3412f9  gcc/testsuite/g++.old-deja/g++.law/except1.C
  78fafdc2ce65c395103fb31e50e03979  gcc/testsuite/g++.old-deja/g++.law/except2.C
! 17776f2c63dce2c00f74aaf5401f88e3  gcc/testsuite/g++.old-deja/g++.law/except3.C
  9f5fd5a9c0d286a6da07b43ffdab9523  gcc/testsuite/g++.old-deja/g++.law/except4.C
  8d6be9ca065c2ea51a648e772196fb09  gcc/testsuite/g++.old-deja/g++.law/except5.C
  2c9505d31f11fedc1ea3c45d6d817fd4  gcc/testsuite/g++.old-deja/g++.law/except6.C
*************** c3e54fbfdc7acd00564d8782151e53d6  gcc/te
*** 20519,20525 ****
  9b194baffdc3cd87c779ff60625d15f6  gcc/testsuite/g++.old-deja/g++.law/init3.C
  e3dd9efb103bf1cc825765f67f73e977  gcc/testsuite/g++.old-deja/g++.law/init4.C
  487713cc015ab092a5e86139acb05d82  gcc/testsuite/g++.old-deja/g++.law/init5.C
! 3f386766c771d61bbe2022fb1a4adcc2  gcc/testsuite/g++.old-deja/g++.law/init6.C
  1ca2f1117952406b5dee95198e0122e6  gcc/testsuite/g++.old-deja/g++.law/init7.C
  a500624135c7b26dcb2279c4e97c6b7d  gcc/testsuite/g++.old-deja/g++.law/init8.C
  f2e0e66a77f891c7ed59feea320b4691  gcc/testsuite/g++.old-deja/g++.law/init9.C
--- 21660,21666 ----
  9b194baffdc3cd87c779ff60625d15f6  gcc/testsuite/g++.old-deja/g++.law/init3.C
  e3dd9efb103bf1cc825765f67f73e977  gcc/testsuite/g++.old-deja/g++.law/init4.C
  487713cc015ab092a5e86139acb05d82  gcc/testsuite/g++.old-deja/g++.law/init5.C
! 7f7fef3fafacd15a8129dea3c3a2529f  gcc/testsuite/g++.old-deja/g++.law/init6.C
  1ca2f1117952406b5dee95198e0122e6  gcc/testsuite/g++.old-deja/g++.law/init7.C
  a500624135c7b26dcb2279c4e97c6b7d  gcc/testsuite/g++.old-deja/g++.law/init8.C
  f2e0e66a77f891c7ed59feea320b4691  gcc/testsuite/g++.old-deja/g++.law/init9.C
*************** a24fcf602f3d08b6fdaa6df61f40e188  gcc/te
*** 20578,20584 ****
  db70425749f0bcf360ec8a3d2c5bdb73  gcc/testsuite/g++.old-deja/g++.law/patches1.C
  ba9f9c290ccad9db193e1e2b8b96a82e  gcc/testsuite/g++.old-deja/g++.law/pic1.C
  4203233107643ecb1062050ef0d54a8e  gcc/testsuite/g++.old-deja/g++.law/pr25000.C
! a2cd340fc2f6f04051d7c42da2aedcd9  gcc/testsuite/g++.old-deja/g++.law/profile1.C
  b13e21bd4f45e20bd28833048a99706f  gcc/testsuite/g++.old-deja/g++.law/refs1.C
  57c54b83f5425f794b19b867f0a27073  gcc/testsuite/g++.old-deja/g++.law/refs2.C
  ba81cc1584de7e22a78f9d7c3c75a0bb  gcc/testsuite/g++.old-deja/g++.law/refs3.C
--- 21719,21725 ----
  db70425749f0bcf360ec8a3d2c5bdb73  gcc/testsuite/g++.old-deja/g++.law/patches1.C
  ba9f9c290ccad9db193e1e2b8b96a82e  gcc/testsuite/g++.old-deja/g++.law/pic1.C
  4203233107643ecb1062050ef0d54a8e  gcc/testsuite/g++.old-deja/g++.law/pr25000.C
! d3a9c2cb2997e2d552640202025c6f36  gcc/testsuite/g++.old-deja/g++.law/profile1.C
  b13e21bd4f45e20bd28833048a99706f  gcc/testsuite/g++.old-deja/g++.law/refs1.C
  57c54b83f5425f794b19b867f0a27073  gcc/testsuite/g++.old-deja/g++.law/refs2.C
  ba81cc1584de7e22a78f9d7c3c75a0bb  gcc/testsuite/g++.old-deja/g++.law/refs3.C
*************** ba81cc1584de7e22a78f9d7c3c75a0bb  gcc/te
*** 20589,20595 ****
  973ba91fa12691d7e643d2a9ca540fe9  gcc/testsuite/g++.old-deja/g++.law/scope4.C
  6cb4f5b7e9f7233b21e596a38ac08812  gcc/testsuite/g++.old-deja/g++.law/scope5.C
  6e00e4d6c6d4d1d3926afc8589bfd4e4  gcc/testsuite/g++.old-deja/g++.law/shadow1.C
! 06c6cf9d29ec0281a2d29a1bffcce839  gcc/testsuite/g++.old-deja/g++.law/shadow2.C
  2de879b88276c759f845e28b9d9ab7a1  gcc/testsuite/g++.old-deja/g++.law/static-mem2.C
  4420683085194c13af157409ff496ca5  gcc/testsuite/g++.old-deja/g++.law/static-mem3.C
  d360b646180a1bddcb974249a70738e5  gcc/testsuite/g++.old-deja/g++.law/static-mem4.C
--- 21730,21736 ----
  973ba91fa12691d7e643d2a9ca540fe9  gcc/testsuite/g++.old-deja/g++.law/scope4.C
  6cb4f5b7e9f7233b21e596a38ac08812  gcc/testsuite/g++.old-deja/g++.law/scope5.C
  6e00e4d6c6d4d1d3926afc8589bfd4e4  gcc/testsuite/g++.old-deja/g++.law/shadow1.C
! aeb5c91b00225b8ea17f8f69ddf9e484  gcc/testsuite/g++.old-deja/g++.law/shadow2.C
  2de879b88276c759f845e28b9d9ab7a1  gcc/testsuite/g++.old-deja/g++.law/static-mem2.C
  4420683085194c13af157409ff496ca5  gcc/testsuite/g++.old-deja/g++.law/static-mem3.C
  d360b646180a1bddcb974249a70738e5  gcc/testsuite/g++.old-deja/g++.law/static-mem4.C
*************** d23ef9b8d21b1c02e42bdecdf5a495b8  gcc/te
*** 20599,20605 ****
  efa7c72a5b5bc20fe7b9fae967c0cce5  gcc/testsuite/g++.old-deja/g++.law/temps1.C
  de41c99e37047e7ab7a3c97f25f3d6bb  gcc/testsuite/g++.old-deja/g++.law/temps2.C
  44205740268580d94274eae346c01cbf  gcc/testsuite/g++.old-deja/g++.law/temps3.C
! fdf9d9284c4d3e1cff1f2b9f62c243a2  gcc/testsuite/g++.old-deja/g++.law/temps4.C
  c2c8b180a44ba52b34571e512aeeeda8  gcc/testsuite/g++.old-deja/g++.law/temps5.C
  d21b9d4454b6997df2c975e4e771432c  gcc/testsuite/g++.old-deja/g++.law/temps6.C
  8a7dbb074a12d500597c712c544bc6a5  gcc/testsuite/g++.old-deja/g++.law/temps7.C
--- 21740,21746 ----
  efa7c72a5b5bc20fe7b9fae967c0cce5  gcc/testsuite/g++.old-deja/g++.law/temps1.C
  de41c99e37047e7ab7a3c97f25f3d6bb  gcc/testsuite/g++.old-deja/g++.law/temps2.C
  44205740268580d94274eae346c01cbf  gcc/testsuite/g++.old-deja/g++.law/temps3.C
! 1faeeecea65546c31c18ebfb052a2ac1  gcc/testsuite/g++.old-deja/g++.law/temps4.C
  c2c8b180a44ba52b34571e512aeeeda8  gcc/testsuite/g++.old-deja/g++.law/temps5.C
  d21b9d4454b6997df2c975e4e771432c  gcc/testsuite/g++.old-deja/g++.law/temps6.C
  8a7dbb074a12d500597c712c544bc6a5  gcc/testsuite/g++.old-deja/g++.law/temps7.C
*************** fb72e0d2fea16c73ec4fddda21e15df1  gcc/te
*** 20610,20616 ****
  7852b50ea06c609148bfee1ccab7b3e6  gcc/testsuite/g++.old-deja/g++.law/union1.C
  85ad05509e4f3dea2c39732d411b58d3  gcc/testsuite/g++.old-deja/g++.law/union2.C
  4a037a2b9ff9c90b575c035057cf4efa  gcc/testsuite/g++.old-deja/g++.law/union3.C
! 89ba6c57918145a41fc1df9d58c45704  gcc/testsuite/g++.old-deja/g++.law/union4.C
  7e48a824266024bbb564141961124a61  gcc/testsuite/g++.old-deja/g++.law/unsorted1.C
  380881aebe61094f4df13be7d32eb06f  gcc/testsuite/g++.old-deja/g++.law/unsorted2.C
  b670a00f5a22d3c4393b7380abc9bb6f  gcc/testsuite/g++.old-deja/g++.law/vbase1.C
--- 21751,21757 ----
  7852b50ea06c609148bfee1ccab7b3e6  gcc/testsuite/g++.old-deja/g++.law/union1.C
  85ad05509e4f3dea2c39732d411b58d3  gcc/testsuite/g++.old-deja/g++.law/union2.C
  4a037a2b9ff9c90b575c035057cf4efa  gcc/testsuite/g++.old-deja/g++.law/union3.C
! dd1d8f05753d74e619d900850647204d  gcc/testsuite/g++.old-deja/g++.law/union4.C
  7e48a824266024bbb564141961124a61  gcc/testsuite/g++.old-deja/g++.law/unsorted1.C
  380881aebe61094f4df13be7d32eb06f  gcc/testsuite/g++.old-deja/g++.law/unsorted2.C
  b670a00f5a22d3c4393b7380abc9bb6f  gcc/testsuite/g++.old-deja/g++.law/vbase1.C
*************** b2ccebc4cc846ad50345fce9e5b3d5e3  gcc/te
*** 20648,20654 ****
  f3059608a1f797e501185505c8997b6d  gcc/testsuite/g++.old-deja/g++.law/vtable1.C
  248e82b0d6c1c80f463a405ecdc6ed4a  gcc/testsuite/g++.old-deja/g++.law/vtable2.C
  2ce54c476e19764bdebe4ac6fc7d64f7  gcc/testsuite/g++.old-deja/g++.law/vtable3.C
! cf3128ad2270bb697c9d06fcfe876af7  gcc/testsuite/g++.old-deja/g++.law/weak.C
  99f229ca2e8b470ed7c34283d8fc4e1a  gcc/testsuite/g++.old-deja/g++.martin/access1.C
  e713a98f853afc3952b263f5b9a2624f  gcc/testsuite/g++.old-deja/g++.martin/ambig1.C
  bbcf18896f3a1d744cf356a0a66cd95a  gcc/testsuite/g++.old-deja/g++.martin/bitset1.C
--- 21789,21795 ----
  f3059608a1f797e501185505c8997b6d  gcc/testsuite/g++.old-deja/g++.law/vtable1.C
  248e82b0d6c1c80f463a405ecdc6ed4a  gcc/testsuite/g++.old-deja/g++.law/vtable2.C
  2ce54c476e19764bdebe4ac6fc7d64f7  gcc/testsuite/g++.old-deja/g++.law/vtable3.C
! ed4d03048f05abfe0d8f682b3921c375  gcc/testsuite/g++.old-deja/g++.law/weak.C
  99f229ca2e8b470ed7c34283d8fc4e1a  gcc/testsuite/g++.old-deja/g++.martin/access1.C
  e713a98f853afc3952b263f5b9a2624f  gcc/testsuite/g++.old-deja/g++.martin/ambig1.C
  bbcf18896f3a1d744cf356a0a66cd95a  gcc/testsuite/g++.old-deja/g++.martin/bitset1.C
*************** f4c35f4219396ec58cfdd9b8b8f74b0e  gcc/te
*** 20673,20679 ****
  129bceb4bc33692606a172a18c581baa  gcc/testsuite/g++.old-deja/g++.mike/asm1.C
  4361730c74788dfa2cb6c60418e162db  gcc/testsuite/g++.old-deja/g++.mike/asm2.C
  4c02435416ea3ea2f4ddd086e6aac2ab  gcc/testsuite/g++.old-deja/g++.mike/bool1.C
! f19585983a37496c948e2daf8e18e3e6  gcc/testsuite/g++.old-deja/g++.mike/bool2.C
  69e978fc0ca81f91fb0f670cf32387d8  gcc/testsuite/g++.old-deja/g++.mike/bool4.C
  2e1275fc17178a9974d8bfa449072baf  gcc/testsuite/g++.old-deja/g++.mike/conv1.C
  0c91e02e7644b50ede450d7cb1446994  gcc/testsuite/g++.old-deja/g++.mike/debug1.C
--- 21814,21820 ----
  129bceb4bc33692606a172a18c581baa  gcc/testsuite/g++.old-deja/g++.mike/asm1.C
  4361730c74788dfa2cb6c60418e162db  gcc/testsuite/g++.old-deja/g++.mike/asm2.C
  4c02435416ea3ea2f4ddd086e6aac2ab  gcc/testsuite/g++.old-deja/g++.mike/bool1.C
! ecd65202602b6795f8dbb999d1dd3a75  gcc/testsuite/g++.old-deja/g++.mike/bool2.C
  69e978fc0ca81f91fb0f670cf32387d8  gcc/testsuite/g++.old-deja/g++.mike/bool4.C
  2e1275fc17178a9974d8bfa449072baf  gcc/testsuite/g++.old-deja/g++.mike/conv1.C
  0c91e02e7644b50ede450d7cb1446994  gcc/testsuite/g++.old-deja/g++.mike/debug1.C
*************** ace99590d34eb0094953512378201308  gcc/te
*** 20686,20750 ****
  fb9b779da9bd2d460c71d8c0f1f6d090  gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C
  cdcf7943e31dae20cf4b2ef4c0f6436c  gcc/testsuite/g++.old-deja/g++.mike/dyncast8.C
  dc0842e0e7b05c40ec3e0d4c4870e146  gcc/testsuite/g++.old-deja/g++.mike/dyncast9.C
! 9e7c5feec1ed6da88ac2e9fd0aa7dccb  gcc/testsuite/g++.old-deja/g++.mike/eh1.C
! c35d4a2175cf5f6443d0cbea273e9b35  gcc/testsuite/g++.old-deja/g++.mike/eh10.C
  1fb9ab6ee027cdbda2a3e1ad7937488f  gcc/testsuite/g++.old-deja/g++.mike/eh11.C
  3fbd53f3e50679f0a3c1aa9139a4d4dd  gcc/testsuite/g++.old-deja/g++.mike/eh12.C
! cd58fc804b26fda0deffec80193914d1  gcc/testsuite/g++.old-deja/g++.mike/eh13.C
  1fe4fb4231b46caade9d671e6932e03b  gcc/testsuite/g++.old-deja/g++.mike/eh14.C
  da84a8300bb6cd4e56541200a189230b  gcc/testsuite/g++.old-deja/g++.mike/eh15.C
! 2a1ad4ea9a5b8d754af1ff9d9bcd764a  gcc/testsuite/g++.old-deja/g++.mike/eh16.C
! 3a7f673346cfa5c7d7baaa6becc18bda  gcc/testsuite/g++.old-deja/g++.mike/eh17.C
  dd1383b0cb6f173f9f961cead9f6f5ba  gcc/testsuite/g++.old-deja/g++.mike/eh18.C
  8721262eddd81a7ccc7e7ef297cd63b1  gcc/testsuite/g++.old-deja/g++.mike/eh19.C
! d2317ef5d92257ff3b64c851c3c43fc5  gcc/testsuite/g++.old-deja/g++.mike/eh2.C
  22c7d47e61ba6ed7efac218cd89e0a85  gcc/testsuite/g++.old-deja/g++.mike/eh20.C
  87b62fe8d84f0f5c6961199d325e43fe  gcc/testsuite/g++.old-deja/g++.mike/eh21.C
! ba2fa37a3d06ff66a8b70eeecfbe42db  gcc/testsuite/g++.old-deja/g++.mike/eh23.C
! d41acf8d3d3790542227386fab712ef1  gcc/testsuite/g++.old-deja/g++.mike/eh24.C
! 41c376ae1a8d4d6e6ced8ac09de7446d  gcc/testsuite/g++.old-deja/g++.mike/eh25.C
! 426aad51dcaa306b4f14a5e7a917b13f  gcc/testsuite/g++.old-deja/g++.mike/eh26.C
! 11428522080cc8e4de76b2bbf7cbe4d1  gcc/testsuite/g++.old-deja/g++.mike/eh27.C
! 77cf371488942d7df5bee29391342479  gcc/testsuite/g++.old-deja/g++.mike/eh28.C
! bca23900eef1c34444f983dd30ad6c47  gcc/testsuite/g++.old-deja/g++.mike/eh29.C
  b7fa20379a5b48ef16b0a75fd8198fb6  gcc/testsuite/g++.old-deja/g++.mike/eh3.C
! 198548c5cd351bbbe4e256679463bf71  gcc/testsuite/g++.old-deja/g++.mike/eh30.C
! 30a2f5acc6fedadf5518dea877209d33  gcc/testsuite/g++.old-deja/g++.mike/eh31.C
  17875da95a253b79fa1e5e982394cdf2  gcc/testsuite/g++.old-deja/g++.mike/eh32.C
  50b3b270e19abec2dc24984bbdf59bcf  gcc/testsuite/g++.old-deja/g++.mike/eh33.C
  75bd2f3b10287d948d7d6fe7f59b8da5  gcc/testsuite/g++.old-deja/g++.mike/eh34.C
! 98340d3e928839992e396233429893c6  gcc/testsuite/g++.old-deja/g++.mike/eh35.C
! e8ac0e863192eebea4391b9ef5bfaa6e  gcc/testsuite/g++.old-deja/g++.mike/eh36.C
! f052f09a81a548adc57a3e951793cb2d  gcc/testsuite/g++.old-deja/g++.mike/eh37.C
! 4c0c23ce77af79025aa22945d05f5629  gcc/testsuite/g++.old-deja/g++.mike/eh38.C
! 354ecc242f6c612f1e31a5e5b6080612  gcc/testsuite/g++.old-deja/g++.mike/eh39.C
  32ef0149e44d04220f38eed05b06290a  gcc/testsuite/g++.old-deja/g++.mike/eh4.C
! e6ba830cc6481da95dd65b5db9ad0278  gcc/testsuite/g++.old-deja/g++.mike/eh40.C
  3614d36cc02d33e0dd3ed7c28a33f241  gcc/testsuite/g++.old-deja/g++.mike/eh41.C
  17fcd1369d1c48670623b24277d42c06  gcc/testsuite/g++.old-deja/g++.mike/eh42.C
  deef1561fc322e65c7cadc2c4e9c3724  gcc/testsuite/g++.old-deja/g++.mike/eh44.C
  52098c9dc07ae7ac2528293e3260932a  gcc/testsuite/g++.old-deja/g++.mike/eh45.C
! ef55f86e1f7f58007b5e5224013d6310  gcc/testsuite/g++.old-deja/g++.mike/eh46.C
! f8183dcbc6058df4590cc83c33f4aa2f  gcc/testsuite/g++.old-deja/g++.mike/eh47.C
! 2abe3b18a084b2fbe09928b1cd1fe387  gcc/testsuite/g++.old-deja/g++.mike/eh48.C
  56edd02b7784e92a67033d6faa6ca9c3  gcc/testsuite/g++.old-deja/g++.mike/eh49.C
  e8830fa94b8e95afd3d97b061a114384  gcc/testsuite/g++.old-deja/g++.mike/eh5.C
! 957e9c2ed7ff45efedbbb9f564b6f0dd  gcc/testsuite/g++.old-deja/g++.mike/eh50.C
! 59a50a3052ec7d4371b5833205e468fe  gcc/testsuite/g++.old-deja/g++.mike/eh51.C
  b510dab899ef0bf0c572e31b58dadecb  gcc/testsuite/g++.old-deja/g++.mike/eh52.C
  3f10506613385d154f4f3c9ff3452bb5  gcc/testsuite/g++.old-deja/g++.mike/eh53.C
  262974dca680b7a7debb6d5ed0a3fce1  gcc/testsuite/g++.old-deja/g++.mike/eh54.C
! 16e5f596726b69f87d40375ee3ac85dd  gcc/testsuite/g++.old-deja/g++.mike/eh55.C
  721631abb8736c7422b3f6ca658cee39  gcc/testsuite/g++.old-deja/g++.mike/eh56.C
  a0354fc7c1799eba103513523b8d4fdb  gcc/testsuite/g++.old-deja/g++.mike/eh57.C
  b820d9ebc457c4c7452aac881a7adfbf  gcc/testsuite/g++.old-deja/g++.mike/eh58.C
  792280ad242691137ea2d82056759fbe  gcc/testsuite/g++.old-deja/g++.mike/eh59.C
  3486f5d02b19667a477a3e678734e894  gcc/testsuite/g++.old-deja/g++.mike/eh6.C
! d36c25daa6dca17afa70fcba137b4d7e  gcc/testsuite/g++.old-deja/g++.mike/eh7.C
! ffc531751684987b1fd8274436f46c9c  gcc/testsuite/g++.old-deja/g++.mike/eh8.C
! 9f75968c804ca5948bb72ccf8edd25d6  gcc/testsuite/g++.old-deja/g++.mike/eh9.C
! 10144c94a2f441305a90efc8f0ae0548  gcc/testsuite/g++.old-deja/g++.mike/enum1.C
! aa0fcbaf8ea7e055b67c4601ff453ca2  gcc/testsuite/g++.old-deja/g++.mike/err1.C
  216f3aa279cf9943770bb8e55c4c43de  gcc/testsuite/g++.old-deja/g++.mike/err2.C
  1f0a7db71d7fa6ac9e919a5922c7bd13  gcc/testsuite/g++.old-deja/g++.mike/err3.C
  345f34ac2b4fff477c33d35030442686  gcc/testsuite/g++.old-deja/g++.mike/explicit1.C
--- 21827,21891 ----
  fb9b779da9bd2d460c71d8c0f1f6d090  gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C
  cdcf7943e31dae20cf4b2ef4c0f6436c  gcc/testsuite/g++.old-deja/g++.mike/dyncast8.C
  dc0842e0e7b05c40ec3e0d4c4870e146  gcc/testsuite/g++.old-deja/g++.mike/dyncast9.C
! d42326fdd7867d78740150eea99b0d45  gcc/testsuite/g++.old-deja/g++.mike/eh1.C
! 757cf9f0bef24c5b012e3b3ab399cb2b  gcc/testsuite/g++.old-deja/g++.mike/eh10.C
  1fb9ab6ee027cdbda2a3e1ad7937488f  gcc/testsuite/g++.old-deja/g++.mike/eh11.C
  3fbd53f3e50679f0a3c1aa9139a4d4dd  gcc/testsuite/g++.old-deja/g++.mike/eh12.C
! 052c725042273d3e4efce31e2789fbbf  gcc/testsuite/g++.old-deja/g++.mike/eh13.C
  1fe4fb4231b46caade9d671e6932e03b  gcc/testsuite/g++.old-deja/g++.mike/eh14.C
  da84a8300bb6cd4e56541200a189230b  gcc/testsuite/g++.old-deja/g++.mike/eh15.C
! 061a4d8cc35637c39c8fbb38d8573b6d  gcc/testsuite/g++.old-deja/g++.mike/eh16.C
! 48aa24b95774906e55648b923f456c52  gcc/testsuite/g++.old-deja/g++.mike/eh17.C
  dd1383b0cb6f173f9f961cead9f6f5ba  gcc/testsuite/g++.old-deja/g++.mike/eh18.C
  8721262eddd81a7ccc7e7ef297cd63b1  gcc/testsuite/g++.old-deja/g++.mike/eh19.C
! 8643820af1e98f7a2ae932c5f123bebf  gcc/testsuite/g++.old-deja/g++.mike/eh2.C
  22c7d47e61ba6ed7efac218cd89e0a85  gcc/testsuite/g++.old-deja/g++.mike/eh20.C
  87b62fe8d84f0f5c6961199d325e43fe  gcc/testsuite/g++.old-deja/g++.mike/eh21.C
! 0a85555067e5d79a96060f6df5e89f5d  gcc/testsuite/g++.old-deja/g++.mike/eh23.C
! 371e7caf447968a20f00c9de993730ea  gcc/testsuite/g++.old-deja/g++.mike/eh24.C
! 2a938869b0061d9856de0d8d649d1c30  gcc/testsuite/g++.old-deja/g++.mike/eh25.C
! 1a86fd6f9e55bd9fd54d3756ad14beac  gcc/testsuite/g++.old-deja/g++.mike/eh26.C
! d2fc50e3e2e5832d3cb6945d13759363  gcc/testsuite/g++.old-deja/g++.mike/eh27.C
! b0c65347d9c4f297c3a2a451a8826279  gcc/testsuite/g++.old-deja/g++.mike/eh28.C
! b7ee4c7bc6f0c7167eca23b9efdb9f8c  gcc/testsuite/g++.old-deja/g++.mike/eh29.C
  b7fa20379a5b48ef16b0a75fd8198fb6  gcc/testsuite/g++.old-deja/g++.mike/eh3.C
! 1dc3deea4e99a8ba7ca8ec0b2d018452  gcc/testsuite/g++.old-deja/g++.mike/eh30.C
! 68bc71cf1693b679ec89fdfbdca319d7  gcc/testsuite/g++.old-deja/g++.mike/eh31.C
  17875da95a253b79fa1e5e982394cdf2  gcc/testsuite/g++.old-deja/g++.mike/eh32.C
  50b3b270e19abec2dc24984bbdf59bcf  gcc/testsuite/g++.old-deja/g++.mike/eh33.C
  75bd2f3b10287d948d7d6fe7f59b8da5  gcc/testsuite/g++.old-deja/g++.mike/eh34.C
! 21a472444f8aa3f3d0af43174d790306  gcc/testsuite/g++.old-deja/g++.mike/eh35.C
! 7390e69ab818f917b6a1ac1124acf37b  gcc/testsuite/g++.old-deja/g++.mike/eh36.C
! 2617698177a755ce33d79b47ec3921d7  gcc/testsuite/g++.old-deja/g++.mike/eh37.C
! 03bbba10bae6e300b3294642cda7dea6  gcc/testsuite/g++.old-deja/g++.mike/eh38.C
! 48ad88854b72bdfd960b10764ba59f54  gcc/testsuite/g++.old-deja/g++.mike/eh39.C
  32ef0149e44d04220f38eed05b06290a  gcc/testsuite/g++.old-deja/g++.mike/eh4.C
! 25b78781a831a637e4e16e699d475097  gcc/testsuite/g++.old-deja/g++.mike/eh40.C
  3614d36cc02d33e0dd3ed7c28a33f241  gcc/testsuite/g++.old-deja/g++.mike/eh41.C
  17fcd1369d1c48670623b24277d42c06  gcc/testsuite/g++.old-deja/g++.mike/eh42.C
  deef1561fc322e65c7cadc2c4e9c3724  gcc/testsuite/g++.old-deja/g++.mike/eh44.C
  52098c9dc07ae7ac2528293e3260932a  gcc/testsuite/g++.old-deja/g++.mike/eh45.C
! 09994354da7a9b3105293572024caf07  gcc/testsuite/g++.old-deja/g++.mike/eh46.C
! be155d22320e9da21c546ff91ca2290c  gcc/testsuite/g++.old-deja/g++.mike/eh47.C
! 5083cf45dcc8da838129224b25d5bb9a  gcc/testsuite/g++.old-deja/g++.mike/eh48.C
  56edd02b7784e92a67033d6faa6ca9c3  gcc/testsuite/g++.old-deja/g++.mike/eh49.C
  e8830fa94b8e95afd3d97b061a114384  gcc/testsuite/g++.old-deja/g++.mike/eh5.C
! ec3c10381e9796ec344ce7922ff20ba7  gcc/testsuite/g++.old-deja/g++.mike/eh50.C
! ab3b14296b0131025ad22d3dcff031e0  gcc/testsuite/g++.old-deja/g++.mike/eh51.C
  b510dab899ef0bf0c572e31b58dadecb  gcc/testsuite/g++.old-deja/g++.mike/eh52.C
  3f10506613385d154f4f3c9ff3452bb5  gcc/testsuite/g++.old-deja/g++.mike/eh53.C
  262974dca680b7a7debb6d5ed0a3fce1  gcc/testsuite/g++.old-deja/g++.mike/eh54.C
! 483e7e44ebafc85c67375cba848841b3  gcc/testsuite/g++.old-deja/g++.mike/eh55.C
  721631abb8736c7422b3f6ca658cee39  gcc/testsuite/g++.old-deja/g++.mike/eh56.C
  a0354fc7c1799eba103513523b8d4fdb  gcc/testsuite/g++.old-deja/g++.mike/eh57.C
  b820d9ebc457c4c7452aac881a7adfbf  gcc/testsuite/g++.old-deja/g++.mike/eh58.C
  792280ad242691137ea2d82056759fbe  gcc/testsuite/g++.old-deja/g++.mike/eh59.C
  3486f5d02b19667a477a3e678734e894  gcc/testsuite/g++.old-deja/g++.mike/eh6.C
! 6735713260dd746cc27688f11fa661c6  gcc/testsuite/g++.old-deja/g++.mike/eh7.C
! ab0798c736b46b073c279abe6d87041f  gcc/testsuite/g++.old-deja/g++.mike/eh8.C
! 5e89d780a71d4e247ada5313a5a940da  gcc/testsuite/g++.old-deja/g++.mike/eh9.C
! 4630697bf2300558b5a6caf62df7c214  gcc/testsuite/g++.old-deja/g++.mike/enum1.C
! d75f8b22af6f32d638b5028678690bf2  gcc/testsuite/g++.old-deja/g++.mike/err1.C
  216f3aa279cf9943770bb8e55c4c43de  gcc/testsuite/g++.old-deja/g++.mike/err2.C
  1f0a7db71d7fa6ac9e919a5922c7bd13  gcc/testsuite/g++.old-deja/g++.mike/err3.C
  345f34ac2b4fff477c33d35030442686  gcc/testsuite/g++.old-deja/g++.mike/explicit1.C
*************** f47d13b17809698e784e1f15ec970ac7  gcc/te
*** 20757,20763 ****
  5dd172df29946ffa94aba7f3bed887c6  gcc/testsuite/g++.old-deja/g++.mike/init1.C
  07adef42f807e44f37a5de53e30e2a3e  gcc/testsuite/g++.old-deja/g++.mike/init2.C
  593856051e9e324918f7fd9134403224  gcc/testsuite/g++.old-deja/g++.mike/leak1.C
! 073c808f1e34331a1ff98d67d95e80a4  gcc/testsuite/g++.old-deja/g++.mike/mangle1.C
  20d83b29da6597663dbc53d1ccc46699  gcc/testsuite/g++.old-deja/g++.mike/mangle2.C
  a3e73677687a8a5c81621fbc6e5553c5  gcc/testsuite/g++.old-deja/g++.mike/mangle3.C
  a5a20b474dfedd22ce291f83012e6f40  gcc/testsuite/g++.old-deja/g++.mike/mi1.C
--- 21898,21904 ----
  5dd172df29946ffa94aba7f3bed887c6  gcc/testsuite/g++.old-deja/g++.mike/init1.C
  07adef42f807e44f37a5de53e30e2a3e  gcc/testsuite/g++.old-deja/g++.mike/init2.C
  593856051e9e324918f7fd9134403224  gcc/testsuite/g++.old-deja/g++.mike/leak1.C
! 175da8746d24865c310ee4036ea91f5c  gcc/testsuite/g++.old-deja/g++.mike/mangle1.C
  20d83b29da6597663dbc53d1ccc46699  gcc/testsuite/g++.old-deja/g++.mike/mangle2.C
  a3e73677687a8a5c81621fbc6e5553c5  gcc/testsuite/g++.old-deja/g++.mike/mangle3.C
  a5a20b474dfedd22ce291f83012e6f40  gcc/testsuite/g++.old-deja/g++.mike/mi1.C
*************** bff1e48fcafb1ef983be4b8a95f47c87  gcc/te
*** 20810,20816 ****
  2f2541bf5b0e85ee09355583f2630b4e  gcc/testsuite/g++.old-deja/g++.mike/net40.C
  12752e61452464ae4268c61794f128d7  gcc/testsuite/g++.old-deja/g++.mike/net41.C
  4f61ec7d766463300ed40fbe4c73980e  gcc/testsuite/g++.old-deja/g++.mike/net42.C
! 228a05190a5faf554c6e411269f848a1  gcc/testsuite/g++.old-deja/g++.mike/net43.C
  229e54a7410e211caac4f800912d7ba2  gcc/testsuite/g++.old-deja/g++.mike/net44.C
  b4a7322753a54bde5aeda77887a9e4d4  gcc/testsuite/g++.old-deja/g++.mike/net45.C
  693654781a04b93e6cd44c4144a745d6  gcc/testsuite/g++.old-deja/g++.mike/net46.C
--- 21951,21957 ----
  2f2541bf5b0e85ee09355583f2630b4e  gcc/testsuite/g++.old-deja/g++.mike/net40.C
  12752e61452464ae4268c61794f128d7  gcc/testsuite/g++.old-deja/g++.mike/net41.C
  4f61ec7d766463300ed40fbe4c73980e  gcc/testsuite/g++.old-deja/g++.mike/net42.C
! 288ab6ff7cb91e4469f47dfdf36ed19d  gcc/testsuite/g++.old-deja/g++.mike/net43.C
  229e54a7410e211caac4f800912d7ba2  gcc/testsuite/g++.old-deja/g++.mike/net44.C
  b4a7322753a54bde5aeda77887a9e4d4  gcc/testsuite/g++.old-deja/g++.mike/net45.C
  693654781a04b93e6cd44c4144a745d6  gcc/testsuite/g++.old-deja/g++.mike/net46.C
*************** bececf06bce4b261ae8fcfd6da928cff  gcc/te
*** 20826,20832 ****
  bbb693427523d00af2fdf69c55f7c100  gcc/testsuite/g++.old-deja/g++.mike/ns12.C
  b0789f1b98268e2d7f80d5b25c929e42  gcc/testsuite/g++.old-deja/g++.mike/ns13.C
  075f2dbb8b6d85c4822f746063384fdb  gcc/testsuite/g++.old-deja/g++.mike/ns14.C
! 0ed11b4a4f5389ab9000774f49fd2938  gcc/testsuite/g++.old-deja/g++.mike/ns15.C
  9be7d6e725403b1902c85e3e64c44b8a  gcc/testsuite/g++.old-deja/g++.mike/ns2.C
  ad7e7ff96ee25569c612972fdbc0b0f2  gcc/testsuite/g++.old-deja/g++.mike/ns3.C
  dbf61afb40127648f192a500027fa778  gcc/testsuite/g++.old-deja/g++.mike/ns4.C
--- 21967,21973 ----
  bbb693427523d00af2fdf69c55f7c100  gcc/testsuite/g++.old-deja/g++.mike/ns12.C
  b0789f1b98268e2d7f80d5b25c929e42  gcc/testsuite/g++.old-deja/g++.mike/ns13.C
  075f2dbb8b6d85c4822f746063384fdb  gcc/testsuite/g++.old-deja/g++.mike/ns14.C
! 2f905a9f6b790d26b468b7bb07d971c9  gcc/testsuite/g++.old-deja/g++.mike/ns15.C
  9be7d6e725403b1902c85e3e64c44b8a  gcc/testsuite/g++.old-deja/g++.mike/ns2.C
  ad7e7ff96ee25569c612972fdbc0b0f2  gcc/testsuite/g++.old-deja/g++.mike/ns3.C
  dbf61afb40127648f192a500027fa778  gcc/testsuite/g++.old-deja/g++.mike/ns4.C
*************** dd688c05698e27c092a6a2c1336131c0  gcc/te
*** 20839,20845 ****
  85a2185da4141e90bad27178d19ee7ae  gcc/testsuite/g++.old-deja/g++.mike/opr-dot1.C
  e4699854bed66b3f68a770685ea0d61a  gcc/testsuite/g++.old-deja/g++.mike/p10148.C
  2518f92cc28ff4e3f4df7b080c7cadbe  gcc/testsuite/g++.old-deja/g++.mike/p10247.C
! cd7944aa7a8b41d6236a7c8e591ea9fc  gcc/testsuite/g++.old-deja/g++.mike/p10416.C
  653cff7be2aed2432b42ba1821f0f61e  gcc/testsuite/g++.old-deja/g++.mike/p10511.C
  11fcaf11034fea20fad2c998032a09e3  gcc/testsuite/g++.old-deja/g++.mike/p10769b.C
  3dcc8f21f5f9b0981a00f610b3528d2d  gcc/testsuite/g++.old-deja/g++.mike/p10849a.C
--- 21980,21986 ----
  85a2185da4141e90bad27178d19ee7ae  gcc/testsuite/g++.old-deja/g++.mike/opr-dot1.C
  e4699854bed66b3f68a770685ea0d61a  gcc/testsuite/g++.old-deja/g++.mike/p10148.C
  2518f92cc28ff4e3f4df7b080c7cadbe  gcc/testsuite/g++.old-deja/g++.mike/p10247.C
! bc8ff03ddefd91988689fe1f2a08133b  gcc/testsuite/g++.old-deja/g++.mike/p10416.C
  653cff7be2aed2432b42ba1821f0f61e  gcc/testsuite/g++.old-deja/g++.mike/p10511.C
  11fcaf11034fea20fad2c998032a09e3  gcc/testsuite/g++.old-deja/g++.mike/p10769b.C
  3dcc8f21f5f9b0981a00f610b3528d2d  gcc/testsuite/g++.old-deja/g++.mike/p10849a.C
*************** c1acbf8597dd2cbb95d9cb9fc5e04912  gcc/te
*** 20915,20922 ****
  a53415421f9c5d14bbcdc1a2a69b56f0  gcc/testsuite/g++.old-deja/g++.mike/p5718.C
  077fae62a5b7aeec962ebf2200272b09  gcc/testsuite/g++.old-deja/g++.mike/p5793.C
  2ac225cf71223dec2cfd104fe4c04ae3  gcc/testsuite/g++.old-deja/g++.mike/p5840.C
! 2d4c6c42c29792576558af377abc661f  gcc/testsuite/g++.old-deja/g++.mike/p5958.C
! 9aa27ef6f15a2d31fc03755fa465bafe  gcc/testsuite/g++.old-deja/g++.mike/p6004.C
  475b47a42ee70abe78335897be8ea9d6  gcc/testsuite/g++.old-deja/g++.mike/p6058.C
  9ec5c6a4192bdb3c75ad240873354bbc  gcc/testsuite/g++.old-deja/g++.mike/p6149.C
  31d4b934b63d1ccd3fce41f3cdd4ee83  gcc/testsuite/g++.old-deja/g++.mike/p6311.C
--- 22056,22063 ----
  a53415421f9c5d14bbcdc1a2a69b56f0  gcc/testsuite/g++.old-deja/g++.mike/p5718.C
  077fae62a5b7aeec962ebf2200272b09  gcc/testsuite/g++.old-deja/g++.mike/p5793.C
  2ac225cf71223dec2cfd104fe4c04ae3  gcc/testsuite/g++.old-deja/g++.mike/p5840.C
! 816e3bd17433923d34f695738219555e  gcc/testsuite/g++.old-deja/g++.mike/p5958.C
! d89c731f7ed1ddc334b854a8f68e719d  gcc/testsuite/g++.old-deja/g++.mike/p6004.C
  475b47a42ee70abe78335897be8ea9d6  gcc/testsuite/g++.old-deja/g++.mike/p6058.C
  9ec5c6a4192bdb3c75ad240873354bbc  gcc/testsuite/g++.old-deja/g++.mike/p6149.C
  31d4b934b63d1ccd3fce41f3cdd4ee83  gcc/testsuite/g++.old-deja/g++.mike/p6311.C
*************** c08220ad297c848fcc61433677ce38a7  gcc/te
*** 20929,20935 ****
  cbbbcd386c28e518426b73c8326aae7b  gcc/testsuite/g++.old-deja/g++.mike/p6746.C
  f2c302be5b4bfcfe6a838f96e32fd4d4  gcc/testsuite/g++.old-deja/g++.mike/p6901.C
  866dc96069d3e273437caf99e8bb5c1c  gcc/testsuite/g++.old-deja/g++.mike/p6927.C
! eab3fdef735bcaffcaa0e82f1c18881b  gcc/testsuite/g++.old-deja/g++.mike/p700.C
  f43a0dd80f368bc325088dcdf5b1f017  gcc/testsuite/g++.old-deja/g++.mike/p701.C
  e7b146af94ac9a8c09caf0f119938b97  gcc/testsuite/g++.old-deja/g++.mike/p710.C
  4f1b7fceb4b2604eeaa908c9d14306de  gcc/testsuite/g++.old-deja/g++.mike/p7180.C
--- 22070,22076 ----
  cbbbcd386c28e518426b73c8326aae7b  gcc/testsuite/g++.old-deja/g++.mike/p6746.C
  f2c302be5b4bfcfe6a838f96e32fd4d4  gcc/testsuite/g++.old-deja/g++.mike/p6901.C
  866dc96069d3e273437caf99e8bb5c1c  gcc/testsuite/g++.old-deja/g++.mike/p6927.C
! d1ef9c53f29b6743afa8e3587d292d27  gcc/testsuite/g++.old-deja/g++.mike/p700.C
  f43a0dd80f368bc325088dcdf5b1f017  gcc/testsuite/g++.old-deja/g++.mike/p701.C
  e7b146af94ac9a8c09caf0f119938b97  gcc/testsuite/g++.old-deja/g++.mike/p710.C
  4f1b7fceb4b2604eeaa908c9d14306de  gcc/testsuite/g++.old-deja/g++.mike/p7180.C
*************** b1814dd4aff2ecf1ced5ab368a1cda10  gcc/te
*** 20948,20960 ****
  79f33108a4a79337419eb261beb7bac6  gcc/testsuite/g++.old-deja/g++.mike/p7868.C
  72d67f4b286673551d4fa81f0e6920f8  gcc/testsuite/g++.old-deja/g++.mike/p789.C
  714d98e3d735427631e925e8babbbbb1  gcc/testsuite/g++.old-deja/g++.mike/p789a.C
! f9ad056c846b5523a365885f16c5b781  gcc/testsuite/g++.old-deja/g++.mike/p7912.C
  ea6f77e23475c14b010ae9424b10cf2c  gcc/testsuite/g++.old-deja/g++.mike/p8009.C
  0e89d49104a6c56e8123ffbaf84463ad  gcc/testsuite/g++.old-deja/g++.mike/p8018.C
  8472419124354902b61c57d6a82f2ee7  gcc/testsuite/g++.old-deja/g++.mike/p8039.C
  45afff2caee269dcedbefd9be511cc46  gcc/testsuite/g++.old-deja/g++.mike/p807.C
  7d7a4a9dca8893c67590fc6203f02948  gcc/testsuite/g++.old-deja/g++.mike/p807a.C
! 719feecb4b15a1fe26ce57186c64eb7d  gcc/testsuite/g++.old-deja/g++.mike/p811.C
  9b2f7221b1057f9366eef01c11cf09cd  gcc/testsuite/g++.old-deja/g++.mike/p8154.C
  cbdb4e245f3353232e9b4d18983cdeea  gcc/testsuite/g++.old-deja/g++.mike/p8155.C
  96f6e9e43b5a2118bfbd47489b1c0a5b  gcc/testsuite/g++.old-deja/g++.mike/p8175.C
--- 22089,22101 ----
  79f33108a4a79337419eb261beb7bac6  gcc/testsuite/g++.old-deja/g++.mike/p7868.C
  72d67f4b286673551d4fa81f0e6920f8  gcc/testsuite/g++.old-deja/g++.mike/p789.C
  714d98e3d735427631e925e8babbbbb1  gcc/testsuite/g++.old-deja/g++.mike/p789a.C
! 5168f29e770030372bd7efbf82620cc6  gcc/testsuite/g++.old-deja/g++.mike/p7912.C
  ea6f77e23475c14b010ae9424b10cf2c  gcc/testsuite/g++.old-deja/g++.mike/p8009.C
  0e89d49104a6c56e8123ffbaf84463ad  gcc/testsuite/g++.old-deja/g++.mike/p8018.C
  8472419124354902b61c57d6a82f2ee7  gcc/testsuite/g++.old-deja/g++.mike/p8039.C
  45afff2caee269dcedbefd9be511cc46  gcc/testsuite/g++.old-deja/g++.mike/p807.C
  7d7a4a9dca8893c67590fc6203f02948  gcc/testsuite/g++.old-deja/g++.mike/p807a.C
! 78496e7d2dcb63754427b878521b8dfe  gcc/testsuite/g++.old-deja/g++.mike/p811.C
  9b2f7221b1057f9366eef01c11cf09cd  gcc/testsuite/g++.old-deja/g++.mike/p8154.C
  cbdb4e245f3353232e9b4d18983cdeea  gcc/testsuite/g++.old-deja/g++.mike/p8155.C
  96f6e9e43b5a2118bfbd47489b1c0a5b  gcc/testsuite/g++.old-deja/g++.mike/p8175.C
*************** f1dd09d0807f74b83d30f98c2a377901  gcc/te
*** 21006,21012 ****
  acec0a7fe32250197bfe1e5bef3eec9a  gcc/testsuite/g++.old-deja/g++.mike/virt1.C
  c9f8fdb0cef02c349b963b6d7b46cb0c  gcc/testsuite/g++.old-deja/g++.mike/virt2.C
  02db7475614a1f60376a90ce4b4466ca  gcc/testsuite/g++.old-deja/g++.mike/virt3.C
! 4ffc1ad480de5da586404bb6657533d8  gcc/testsuite/g++.old-deja/g++.mike/virt4.C
  69b70bb7f0d0b25db18baaf30351b004  gcc/testsuite/g++.old-deja/g++.mike/virt5.C
  7240cae0387b1d43adfbdb2539476c43  gcc/testsuite/g++.old-deja/g++.mike/virt6.C
  b602c376ec5ff3d1db7c5a438588de18  gcc/testsuite/g++.old-deja/g++.mike/visibility-1.C
--- 22147,22153 ----
  acec0a7fe32250197bfe1e5bef3eec9a  gcc/testsuite/g++.old-deja/g++.mike/virt1.C
  c9f8fdb0cef02c349b963b6d7b46cb0c  gcc/testsuite/g++.old-deja/g++.mike/virt2.C
  02db7475614a1f60376a90ce4b4466ca  gcc/testsuite/g++.old-deja/g++.mike/virt3.C
! a7bfe9819a55ab0b6c20633f859fd4fd  gcc/testsuite/g++.old-deja/g++.mike/virt4.C
  69b70bb7f0d0b25db18baaf30351b004  gcc/testsuite/g++.old-deja/g++.mike/virt5.C
  7240cae0387b1d43adfbdb2539476c43  gcc/testsuite/g++.old-deja/g++.mike/virt6.C
  b602c376ec5ff3d1db7c5a438588de18  gcc/testsuite/g++.old-deja/g++.mike/visibility-1.C
*************** c0514fbc4a06765f363ceaa37f304896  gcc/te
*** 21154,21161 ****
  410d7d1fd1d6e3575100642f8c9a65e8  gcc/testsuite/g++.old-deja/g++.oliva/inline1.C
  a48a17255f32b3a66ffe19bec30a72f3  gcc/testsuite/g++.old-deja/g++.oliva/linkage1-main.cc
  a8c9e5697cb58c77260d29a245371e15  gcc/testsuite/g++.old-deja/g++.oliva/linkage1.C
! bfe4a3c085addec5f331484e5310a5e5  gcc/testsuite/g++.old-deja/g++.oliva/nameret1.C
! adf17e0939d138a664dee53d472271fc  gcc/testsuite/g++.old-deja/g++.oliva/nameret2.C
  3d2970abfa048bad4c4b489daa7ae29b  gcc/testsuite/g++.old-deja/g++.oliva/new1.C
  ad3eac5cce6247b57053146272ad863a  gcc/testsuite/g++.old-deja/g++.oliva/ns1.C
  6145af5e9f76316b1d149f4bc47f97db  gcc/testsuite/g++.old-deja/g++.oliva/ns2.C
--- 22295,22302 ----
  410d7d1fd1d6e3575100642f8c9a65e8  gcc/testsuite/g++.old-deja/g++.oliva/inline1.C
  a48a17255f32b3a66ffe19bec30a72f3  gcc/testsuite/g++.old-deja/g++.oliva/linkage1-main.cc
  a8c9e5697cb58c77260d29a245371e15  gcc/testsuite/g++.old-deja/g++.oliva/linkage1.C
! 69215fbecec36d0d43ce029276a62a42  gcc/testsuite/g++.old-deja/g++.oliva/nameret1.C
! 94eaec0c74125950c2b514a5d563e875  gcc/testsuite/g++.old-deja/g++.oliva/nameret2.C
  3d2970abfa048bad4c4b489daa7ae29b  gcc/testsuite/g++.old-deja/g++.oliva/new1.C
  ad3eac5cce6247b57053146272ad863a  gcc/testsuite/g++.old-deja/g++.oliva/ns1.C
  6145af5e9f76316b1d149f4bc47f97db  gcc/testsuite/g++.old-deja/g++.oliva/ns2.C
*************** e63ab962df8f1acaa0719e9e325a762c  gcc/te
*** 21196,21205 ****
  e5a4d0d3d65e88db5c260b60723419d8  gcc/testsuite/g++.old-deja/g++.other/ambig1.C
  2799c1248a840cb14758affa4c24408d  gcc/testsuite/g++.old-deja/g++.other/ambig2.C
  9c66b70699ff1342d44eb59221237d51  gcc/testsuite/g++.old-deja/g++.other/ambig3.C
! 6dd624697232798767c1ec209dcd1491  gcc/testsuite/g++.old-deja/g++.other/anon1.C
  89bb93dbf845b7033c1fbe70d2dfb2be  gcc/testsuite/g++.old-deja/g++.other/anon2.C
  367733c92db9bcfe12fccf6f5357cd64  gcc/testsuite/g++.old-deja/g++.other/anon3.C
! 0f703db296c3a1d1c06be17ffadd3f98  gcc/testsuite/g++.old-deja/g++.other/anon4.C
  aad0443f7c41b4a122886b6f70c3ee81  gcc/testsuite/g++.old-deja/g++.other/anon5.C
  4f0bd17a856faeab69b4712edbe53eed  gcc/testsuite/g++.old-deja/g++.other/anon6.C
  13fc8a0348302614c207ead23a28e499  gcc/testsuite/g++.old-deja/g++.other/anon7.C
--- 22337,22346 ----
  e5a4d0d3d65e88db5c260b60723419d8  gcc/testsuite/g++.old-deja/g++.other/ambig1.C
  2799c1248a840cb14758affa4c24408d  gcc/testsuite/g++.old-deja/g++.other/ambig2.C
  9c66b70699ff1342d44eb59221237d51  gcc/testsuite/g++.old-deja/g++.other/ambig3.C
! 872c66ede755d930da4b25605b58bc9b  gcc/testsuite/g++.old-deja/g++.other/anon1.C
  89bb93dbf845b7033c1fbe70d2dfb2be  gcc/testsuite/g++.old-deja/g++.other/anon2.C
  367733c92db9bcfe12fccf6f5357cd64  gcc/testsuite/g++.old-deja/g++.other/anon3.C
! 8522d2bbaa8062d0cc2add7462f5fbc6  gcc/testsuite/g++.old-deja/g++.other/anon4.C
  aad0443f7c41b4a122886b6f70c3ee81  gcc/testsuite/g++.old-deja/g++.other/anon5.C
  4f0bd17a856faeab69b4712edbe53eed  gcc/testsuite/g++.old-deja/g++.other/anon6.C
  13fc8a0348302614c207ead23a28e499  gcc/testsuite/g++.old-deja/g++.other/anon7.C
*************** e421748ca6191ef379db9252886457f1  gcc/te
*** 21254,21260 ****
  d9b19cd1292a38bce623a404c5c14601  gcc/testsuite/g++.old-deja/g++.other/comdat4-aux.cc
  f3481f025b2bc515a0e79ac333c18c02  gcc/testsuite/g++.old-deja/g++.other/comdat4.C
  44e2b03e9c416c2cd5a405c37911c07a  gcc/testsuite/g++.old-deja/g++.other/comdat5-aux.cc
! 8bdec5d59e3ad4184e303beb93c1b552  gcc/testsuite/g++.old-deja/g++.other/comdat5.C
  7ce8357f84bf1c23ea2ef3e1897f0788  gcc/testsuite/g++.old-deja/g++.other/cond1.C
  adc0a6dcb5fd4ac47a11b684146ac09c  gcc/testsuite/g++.old-deja/g++.other/cond2.C
  a1c2753cfb142a358f8ffc3053ae4a4f  gcc/testsuite/g++.old-deja/g++.other/cond3.C
--- 22395,22401 ----
  d9b19cd1292a38bce623a404c5c14601  gcc/testsuite/g++.old-deja/g++.other/comdat4-aux.cc
  f3481f025b2bc515a0e79ac333c18c02  gcc/testsuite/g++.old-deja/g++.other/comdat4.C
  44e2b03e9c416c2cd5a405c37911c07a  gcc/testsuite/g++.old-deja/g++.other/comdat5-aux.cc
! 0d8932725f07576d0bbd6e76c26ebc68  gcc/testsuite/g++.old-deja/g++.other/comdat5.C
  7ce8357f84bf1c23ea2ef3e1897f0788  gcc/testsuite/g++.old-deja/g++.other/cond1.C
  adc0a6dcb5fd4ac47a11b684146ac09c  gcc/testsuite/g++.old-deja/g++.other/cond2.C
  a1c2753cfb142a358f8ffc3053ae4a4f  gcc/testsuite/g++.old-deja/g++.other/cond3.C
*************** d7423d0670f9d8abf6b30397edaa1235  gcc/te
*** 21280,21286 ****
  66eee4c58815f6a823b95d58d2fd4a78  gcc/testsuite/g++.old-deja/g++.other/crash1.C
  a60d440d97e27b06efd91dce983278ee  gcc/testsuite/g++.old-deja/g++.other/crash10.C
  476429a62cb15b3c9ee8c125027e40c3  gcc/testsuite/g++.old-deja/g++.other/crash11.C
! 1ecd49225243c3c830fc3dc18bf42f4f  gcc/testsuite/g++.old-deja/g++.other/crash12.C
  b0a2fa7128614543dd35f84eefd11f1a  gcc/testsuite/g++.old-deja/g++.other/crash13.C
  a41c516fa6d4cda9be81fec03b88b214  gcc/testsuite/g++.old-deja/g++.other/crash14.C
  86b31fd7ce431a2d82f09b6039da031c  gcc/testsuite/g++.old-deja/g++.other/crash15.C
--- 22421,22427 ----
  66eee4c58815f6a823b95d58d2fd4a78  gcc/testsuite/g++.old-deja/g++.other/crash1.C
  a60d440d97e27b06efd91dce983278ee  gcc/testsuite/g++.old-deja/g++.other/crash10.C
  476429a62cb15b3c9ee8c125027e40c3  gcc/testsuite/g++.old-deja/g++.other/crash11.C
! 7904ea22b4922e5a07cfa109f388cb3b  gcc/testsuite/g++.old-deja/g++.other/crash12.C
  b0a2fa7128614543dd35f84eefd11f1a  gcc/testsuite/g++.old-deja/g++.other/crash13.C
  a41c516fa6d4cda9be81fec03b88b214  gcc/testsuite/g++.old-deja/g++.other/crash14.C
  86b31fd7ce431a2d82f09b6039da031c  gcc/testsuite/g++.old-deja/g++.other/crash15.C
*************** ac66e95a7eb0f724b07b49df214cb0be  gcc/te
*** 21293,21305 ****
  4d21fb21f1a5c07669bf5bcc4701f5d6  gcc/testsuite/g++.old-deja/g++.other/crash22.C
  05b369a1c5371d2bd48e37bffd922ac3  gcc/testsuite/g++.old-deja/g++.other/crash23.C
  c9a88c5f2f529bdaff4681b731401fc2  gcc/testsuite/g++.old-deja/g++.other/crash24.C
! 96c4e2e6cab8474105919858307750ad  gcc/testsuite/g++.old-deja/g++.other/crash25.C
  a9f67dc3be68b25679c337cb411fbadb  gcc/testsuite/g++.old-deja/g++.other/crash26.C
  ca920fbfee24aea8dd36d80beb365d07  gcc/testsuite/g++.old-deja/g++.other/crash27.C
! 731f774adaff573d4ac8933f04995d35  gcc/testsuite/g++.old-deja/g++.other/crash28.C
  52b9cd9c6a2f857dac5de21020b454ea  gcc/testsuite/g++.old-deja/g++.other/crash29.C
  05f9169b3c0aa560e0ba3e11e6ed4a94  gcc/testsuite/g++.old-deja/g++.other/crash3.C
! 71dfad17ac52ebe8bbd28832598a111a  gcc/testsuite/g++.old-deja/g++.other/crash30.C
  1703e72cd30f5bb840b4131a1214464e  gcc/testsuite/g++.old-deja/g++.other/crash31.C
  4b488e0ee229b17e181b7bc4e6d4b5d9  gcc/testsuite/g++.old-deja/g++.other/crash32.C
  af86322780df2d44590d8b2285db668a  gcc/testsuite/g++.old-deja/g++.other/crash33.C
--- 22434,22446 ----
  4d21fb21f1a5c07669bf5bcc4701f5d6  gcc/testsuite/g++.old-deja/g++.other/crash22.C
  05b369a1c5371d2bd48e37bffd922ac3  gcc/testsuite/g++.old-deja/g++.other/crash23.C
  c9a88c5f2f529bdaff4681b731401fc2  gcc/testsuite/g++.old-deja/g++.other/crash24.C
! 202d385596f9a93533624f83c4ad342f  gcc/testsuite/g++.old-deja/g++.other/crash25.C
  a9f67dc3be68b25679c337cb411fbadb  gcc/testsuite/g++.old-deja/g++.other/crash26.C
  ca920fbfee24aea8dd36d80beb365d07  gcc/testsuite/g++.old-deja/g++.other/crash27.C
! 0b455ee8dc1b5816214a2727b5b31184  gcc/testsuite/g++.old-deja/g++.other/crash28.C
  52b9cd9c6a2f857dac5de21020b454ea  gcc/testsuite/g++.old-deja/g++.other/crash29.C
  05f9169b3c0aa560e0ba3e11e6ed4a94  gcc/testsuite/g++.old-deja/g++.other/crash3.C
! b0e3fbc2c0d2fb0ff1517a0e45a060da  gcc/testsuite/g++.old-deja/g++.other/crash30.C
  1703e72cd30f5bb840b4131a1214464e  gcc/testsuite/g++.old-deja/g++.other/crash31.C
  4b488e0ee229b17e181b7bc4e6d4b5d9  gcc/testsuite/g++.old-deja/g++.other/crash32.C
  af86322780df2d44590d8b2285db668a  gcc/testsuite/g++.old-deja/g++.other/crash33.C
*************** acf7d6efd1fb48de4b8f25567876691d  gcc/te
*** 21334,21344 ****
  291c9e5d4d89fc28eb097defb251f26a  gcc/testsuite/g++.old-deja/g++.other/debug7.C
  b23319808394ce6738b1508b7f4ec38d  gcc/testsuite/g++.old-deja/g++.other/debug8.C
  b82c1ff0b46d37526b002e9eadb7b5a2  gcc/testsuite/g++.old-deja/g++.other/debug9.C
! 5676a661a2b6a27ccd1e71dbf5846d8d  gcc/testsuite/g++.old-deja/g++.other/decl1.C
  589daf00ab11a288c7fe3c5d5b24404c  gcc/testsuite/g++.old-deja/g++.other/decl2.C
  da4392d4b8319374e5f686fd1c71ef28  gcc/testsuite/g++.old-deja/g++.other/decl3.C
  87f1ee2bbfeb5481b12d8c5030343b02  gcc/testsuite/g++.old-deja/g++.other/decl4.C
! 4bb9258d43407939077ca8fe3f3ce021  gcc/testsuite/g++.old-deja/g++.other/decl5.C
  f1bafdb743032a2162ea7c270025c1dd  gcc/testsuite/g++.old-deja/g++.other/decl6.C
  b7922b62c66771d84dbb60a4b1b4545c  gcc/testsuite/g++.old-deja/g++.other/decl7.C
  b15c94d17715a47983f0e773d7e3e2c2  gcc/testsuite/g++.old-deja/g++.other/decl8.C
--- 22475,22485 ----
  291c9e5d4d89fc28eb097defb251f26a  gcc/testsuite/g++.old-deja/g++.other/debug7.C
  b23319808394ce6738b1508b7f4ec38d  gcc/testsuite/g++.old-deja/g++.other/debug8.C
  b82c1ff0b46d37526b002e9eadb7b5a2  gcc/testsuite/g++.old-deja/g++.other/debug9.C
! ce3c15e4b9c0fc4646ac8142395acc53  gcc/testsuite/g++.old-deja/g++.other/decl1.C
  589daf00ab11a288c7fe3c5d5b24404c  gcc/testsuite/g++.old-deja/g++.other/decl2.C
  da4392d4b8319374e5f686fd1c71ef28  gcc/testsuite/g++.old-deja/g++.other/decl3.C
  87f1ee2bbfeb5481b12d8c5030343b02  gcc/testsuite/g++.old-deja/g++.other/decl4.C
! 42c5bb3d0bc1719b3713b503e640b75c  gcc/testsuite/g++.old-deja/g++.other/decl5.C
  f1bafdb743032a2162ea7c270025c1dd  gcc/testsuite/g++.old-deja/g++.other/decl6.C
  b7922b62c66771d84dbb60a4b1b4545c  gcc/testsuite/g++.old-deja/g++.other/decl7.C
  b15c94d17715a47983f0e773d7e3e2c2  gcc/testsuite/g++.old-deja/g++.other/decl8.C
*************** d967c7f394d25e627016c2e15ede2890  gcc/te
*** 21374,21380 ****
  a38327344ea63a8b5d5757b2bd02efc1  gcc/testsuite/g++.old-deja/g++.other/dtor13.C
  573c74f438072a08f4c7e076c4fde80a  gcc/testsuite/g++.old-deja/g++.other/dtor2.C
  8f3f1d766e7a640091d25ad94a1ffdb5  gcc/testsuite/g++.old-deja/g++.other/dtor3.C
! beaa62d9f1bf0ffca6cd65768337e910  gcc/testsuite/g++.old-deja/g++.other/dtor4.C
  95142dab2cdf06c9a812ece53a941442  gcc/testsuite/g++.old-deja/g++.other/dtor5.C
  bec7fc1b3e53b667bbfb02f3caa7a751  gcc/testsuite/g++.old-deja/g++.other/dtor6.C
  8706c67091af1a99f99c926204a00007  gcc/testsuite/g++.old-deja/g++.other/dtor7.C
--- 22515,22521 ----
  a38327344ea63a8b5d5757b2bd02efc1  gcc/testsuite/g++.old-deja/g++.other/dtor13.C
  573c74f438072a08f4c7e076c4fde80a  gcc/testsuite/g++.old-deja/g++.other/dtor2.C
  8f3f1d766e7a640091d25ad94a1ffdb5  gcc/testsuite/g++.old-deja/g++.other/dtor3.C
! 5b701b32aa6c93b544305a0d0413c164  gcc/testsuite/g++.old-deja/g++.other/dtor4.C
  95142dab2cdf06c9a812ece53a941442  gcc/testsuite/g++.old-deja/g++.other/dtor5.C
  bec7fc1b3e53b667bbfb02f3caa7a751  gcc/testsuite/g++.old-deja/g++.other/dtor6.C
  8706c67091af1a99f99c926204a00007  gcc/testsuite/g++.old-deja/g++.other/dtor7.C
*************** e7ae9ecae1158825c61dc13b8aa8b855  gcc/te
*** 21389,21395 ****
  0268c0e962508ed426bff1e44757f34b  gcc/testsuite/g++.old-deja/g++.other/eh.C
  af4bf43b1d12ba745d0006242f963725  gcc/testsuite/g++.old-deja/g++.other/eh1.C
  fff040d0461db3bb906852d2efd56a9d  gcc/testsuite/g++.old-deja/g++.other/eh2.C
! 260c328a7fb09ba03925bbff7306c211  gcc/testsuite/g++.old-deja/g++.other/eh3.C
  0e4cdc96271eaf0009e927797d8bc4e3  gcc/testsuite/g++.old-deja/g++.other/eh4.C
  50ccfaa907c448bee3f02ccdb3da5d91  gcc/testsuite/g++.old-deja/g++.other/eh5.C
  9f23ed7eff018ebe271c3b47018e5592  gcc/testsuite/g++.old-deja/g++.other/elab1.C
--- 22530,22536 ----
  0268c0e962508ed426bff1e44757f34b  gcc/testsuite/g++.old-deja/g++.other/eh.C
  af4bf43b1d12ba745d0006242f963725  gcc/testsuite/g++.old-deja/g++.other/eh1.C
  fff040d0461db3bb906852d2efd56a9d  gcc/testsuite/g++.old-deja/g++.other/eh2.C
! 564d088226a7fa3ae5aef236d7e7e477  gcc/testsuite/g++.old-deja/g++.other/eh3.C
  0e4cdc96271eaf0009e927797d8bc4e3  gcc/testsuite/g++.old-deja/g++.other/eh4.C
  50ccfaa907c448bee3f02ccdb3da5d91  gcc/testsuite/g++.old-deja/g++.other/eh5.C
  9f23ed7eff018ebe271c3b47018e5592  gcc/testsuite/g++.old-deja/g++.other/elab1.C
*************** e0228ca9cb60d1437fd658fe2d597301  gcc/te
*** 21401,21407 ****
  9a556703271151a30e0fb3a6ec0ce653  gcc/testsuite/g++.old-deja/g++.other/enum4.C
  989a20c8af821e747e17e6f4d9323de7  gcc/testsuite/g++.old-deja/g++.other/enum5.C
  a062e6feea05b79de6f4a91e26e7acb3  gcc/testsuite/g++.old-deja/g++.other/explicit1.C
! a13e5e2e8b33a2e49bdf255c455c32d8  gcc/testsuite/g++.old-deja/g++.other/expr1.C
  cb97f0a4d350c5545ed921b0c95d1800  gcc/testsuite/g++.old-deja/g++.other/exprstmt1.C
  20c3e7bd2094e334ab8bfcd82a2b1e43  gcc/testsuite/g++.old-deja/g++.other/externC1.C
  e4bbf19796485a7cc4158d83c4d3cf4d  gcc/testsuite/g++.old-deja/g++.other/externC2.C
--- 22542,22548 ----
  9a556703271151a30e0fb3a6ec0ce653  gcc/testsuite/g++.old-deja/g++.other/enum4.C
  989a20c8af821e747e17e6f4d9323de7  gcc/testsuite/g++.old-deja/g++.other/enum5.C
  a062e6feea05b79de6f4a91e26e7acb3  gcc/testsuite/g++.old-deja/g++.other/explicit1.C
! 6cb1995f72f4ef7e804728794ac1e3e2  gcc/testsuite/g++.old-deja/g++.other/expr1.C
  cb97f0a4d350c5545ed921b0c95d1800  gcc/testsuite/g++.old-deja/g++.other/exprstmt1.C
  20c3e7bd2094e334ab8bfcd82a2b1e43  gcc/testsuite/g++.old-deja/g++.other/externC1.C
  e4bbf19796485a7cc4158d83c4d3cf4d  gcc/testsuite/g++.old-deja/g++.other/externC2.C
*************** f1224fb4be126166d0a579ea0dc6acc8  gcc/te
*** 21470,21476 ****
  ccfaa381b4b7ddc2ae21136f982f0584  gcc/testsuite/g++.old-deja/g++.other/inline5.C
  4b2c8697535041bce609a3148c50d503  gcc/testsuite/g++.old-deja/g++.other/inline6.C
  4eaa61a7f4169081f2327958cf38f524  gcc/testsuite/g++.old-deja/g++.other/inline7.C
! b031d36f414843127e437e3936c33921  gcc/testsuite/g++.old-deja/g++.other/inline8.C
  4ff7844073d913c0d5099f3c5a9d1905  gcc/testsuite/g++.old-deja/g++.other/inline9.C
  024add5304c41b827990193948da5b1f  gcc/testsuite/g++.old-deja/g++.other/instan1.C
  7c7aaab427900113172f72ddcd0b0c5e  gcc/testsuite/g++.old-deja/g++.other/lex1.C
--- 22611,22617 ----
  ccfaa381b4b7ddc2ae21136f982f0584  gcc/testsuite/g++.old-deja/g++.other/inline5.C
  4b2c8697535041bce609a3148c50d503  gcc/testsuite/g++.old-deja/g++.other/inline6.C
  4eaa61a7f4169081f2327958cf38f524  gcc/testsuite/g++.old-deja/g++.other/inline7.C
! c6b3fa00cf108cf19a444d52bb108901  gcc/testsuite/g++.old-deja/g++.other/inline8.C
  4ff7844073d913c0d5099f3c5a9d1905  gcc/testsuite/g++.old-deja/g++.other/inline9.C
  024add5304c41b827990193948da5b1f  gcc/testsuite/g++.old-deja/g++.other/instan1.C
  7c7aaab427900113172f72ddcd0b0c5e  gcc/testsuite/g++.old-deja/g++.other/lex1.C
*************** b822d2c88362af7f0d14e2ef2c0e5a40  gcc/te
*** 21486,21492 ****
  8f5f0bc1ea8aec63ad7e64ec0fb5a60d  gcc/testsuite/g++.old-deja/g++.other/linkage5.C
  031860326d5d4c1b03d2fa8b5333dc2b  gcc/testsuite/g++.old-deja/g++.other/linkage6.C
  9f0e982ef3a2802a121297c93371f22b  gcc/testsuite/g++.old-deja/g++.other/linkage7.C
! f11c8fcb7786f73f1f8445b703023cc7  gcc/testsuite/g++.old-deja/g++.other/local-alloc1.C
  f02d7bee1a6e33dff41829b90a2f55e5  gcc/testsuite/g++.old-deja/g++.other/local1.C
  b0c55f20739e7cf716fcd5af1b14be8b  gcc/testsuite/g++.old-deja/g++.other/local2.C
  d66fe3a8dd3fe648291bfe2f4d9cff5d  gcc/testsuite/g++.old-deja/g++.other/local3.C
--- 22627,22633 ----
  8f5f0bc1ea8aec63ad7e64ec0fb5a60d  gcc/testsuite/g++.old-deja/g++.other/linkage5.C
  031860326d5d4c1b03d2fa8b5333dc2b  gcc/testsuite/g++.old-deja/g++.other/linkage6.C
  9f0e982ef3a2802a121297c93371f22b  gcc/testsuite/g++.old-deja/g++.other/linkage7.C
! 94756f9efff4d23039dfbc70e2ea8e0a  gcc/testsuite/g++.old-deja/g++.other/local-alloc1.C
  f02d7bee1a6e33dff41829b90a2f55e5  gcc/testsuite/g++.old-deja/g++.other/local1.C
  b0c55f20739e7cf716fcd5af1b14be8b  gcc/testsuite/g++.old-deja/g++.other/local2.C
  d66fe3a8dd3fe648291bfe2f4d9cff5d  gcc/testsuite/g++.old-deja/g++.other/local3.C
*************** ec3df6ff05f5895bbe08f752327dc07a  gcc/te
*** 21514,21520 ****
  ebd8f7c10cb0f38aaab48d284f174530  gcc/testsuite/g++.old-deja/g++.other/lookup7.C
  83207211c82e3d97cf37257247e71e10  gcc/testsuite/g++.old-deja/g++.other/lookup8.C
  a9a74cf7de9ad7a2eaa872544ff3f96b  gcc/testsuite/g++.old-deja/g++.other/lookup9.C
! ff15837f3804b9245a281d67b6046de8  gcc/testsuite/g++.old-deja/g++.other/loop1.C
  d0ed38cceb3178f8c2ffeb15967bdd06  gcc/testsuite/g++.old-deja/g++.other/loop2.C
  b64bdc39eeed52a44af818a150fb166b  gcc/testsuite/g++.old-deja/g++.other/main1.C
  3c711568f6920792b9d9ba90585265c2  gcc/testsuite/g++.old-deja/g++.other/main2.C
--- 22655,22661 ----
  ebd8f7c10cb0f38aaab48d284f174530  gcc/testsuite/g++.old-deja/g++.other/lookup7.C
  83207211c82e3d97cf37257247e71e10  gcc/testsuite/g++.old-deja/g++.other/lookup8.C
  a9a74cf7de9ad7a2eaa872544ff3f96b  gcc/testsuite/g++.old-deja/g++.other/lookup9.C
! 998ef9c4672631e9e2da775fec10e5d7  gcc/testsuite/g++.old-deja/g++.other/loop1.C
  d0ed38cceb3178f8c2ffeb15967bdd06  gcc/testsuite/g++.old-deja/g++.other/loop2.C
  b64bdc39eeed52a44af818a150fb166b  gcc/testsuite/g++.old-deja/g++.other/main1.C
  3c711568f6920792b9d9ba90585265c2  gcc/testsuite/g++.old-deja/g++.other/main2.C
*************** eb713ae1628b9077dbad880b05e1249d  gcc/te
*** 21531,21537 ****
  30ec7e2f8989e636154506533aaaaabd  gcc/testsuite/g++.old-deja/g++.other/new4.C
  32154308cdeb3f9a775d1995218bf06b  gcc/testsuite/g++.old-deja/g++.other/new5.C
  8d97f61246148e95eb61f4e8e573780f  gcc/testsuite/g++.old-deja/g++.other/new6.C
! d87f6c4b19c4d85496339ec89e04ace8  gcc/testsuite/g++.old-deja/g++.other/new7.C
  3d711ec70ea8da8349b2ae221992e597  gcc/testsuite/g++.old-deja/g++.other/null2.C
  05838d9a27becab2a8f87c6b9cf5a7ef  gcc/testsuite/g++.old-deja/g++.other/null3.C
  47d2d0b024512d64bb5cf3a664e78979  gcc/testsuite/g++.old-deja/g++.other/op1.C
--- 22672,22678 ----
  30ec7e2f8989e636154506533aaaaabd  gcc/testsuite/g++.old-deja/g++.other/new4.C
  32154308cdeb3f9a775d1995218bf06b  gcc/testsuite/g++.old-deja/g++.other/new5.C
  8d97f61246148e95eb61f4e8e573780f  gcc/testsuite/g++.old-deja/g++.other/new6.C
! efc771b4a76d0c053b9d50fa8846a444  gcc/testsuite/g++.old-deja/g++.other/new7.C
  3d711ec70ea8da8349b2ae221992e597  gcc/testsuite/g++.old-deja/g++.other/null2.C
  05838d9a27becab2a8f87c6b9cf5a7ef  gcc/testsuite/g++.old-deja/g++.other/null3.C
  47d2d0b024512d64bb5cf3a664e78979  gcc/testsuite/g++.old-deja/g++.other/op1.C
*************** cf9e5972622ceee830b1b633b7b678a1  gcc/te
*** 21584,21599 ****
  9a413d6cc2fc61c326d8be31a011267d  gcc/testsuite/g++.old-deja/g++.other/qual1.C
  d998e7e86cd2d639939f364ef61b7ad7  gcc/testsuite/g++.old-deja/g++.other/realloc.C
  cdb5dd24ac907bdd5ac1e41e63f78adb  gcc/testsuite/g++.old-deja/g++.other/redecl1.C
! 021b847eaf4c57e6a1b1059adaf32f51  gcc/testsuite/g++.old-deja/g++.other/redecl2.C
  5e934e52ca0ebb8aec763916909e5aa0  gcc/testsuite/g++.old-deja/g++.other/redecl3.C
! 6be0129988c7c99cd612850873cfb90b  gcc/testsuite/g++.old-deja/g++.other/redecl4.C
  3d97599f1668f6276ba8fcb8536abf4f  gcc/testsuite/g++.old-deja/g++.other/ref1.C
  cc81859ae9c266583b18d8a58fe87aed  gcc/testsuite/g++.old-deja/g++.other/ref2.C
  a72ffc53a7a0019d3ab3c81b13884063  gcc/testsuite/g++.old-deja/g++.other/ref3.C
  79d707ba18e6801d7bcfcbfa35d50f7a  gcc/testsuite/g++.old-deja/g++.other/ref4.C
  2b5e35f667bf97fa9e5512c25a5c776b  gcc/testsuite/g++.old-deja/g++.other/refinit1.C
  46335621d24696cad55e77a231ae9250  gcc/testsuite/g++.old-deja/g++.other/refinit2.C
! 8e19fb504bd9a43a2f0cb4e07c2247a9  gcc/testsuite/g++.old-deja/g++.other/regstack.C
  0467e717fdd659d1980c52044a16d1e1  gcc/testsuite/g++.old-deja/g++.other/reload1.C
  9c8cbb38ce8d4bece4eccb6a484c763c  gcc/testsuite/g++.old-deja/g++.other/return1.C
  975c6f5dc39ccf0719efb4a802333342  gcc/testsuite/g++.old-deja/g++.other/rtti1.C
--- 22725,22740 ----
  9a413d6cc2fc61c326d8be31a011267d  gcc/testsuite/g++.old-deja/g++.other/qual1.C
  d998e7e86cd2d639939f364ef61b7ad7  gcc/testsuite/g++.old-deja/g++.other/realloc.C
  cdb5dd24ac907bdd5ac1e41e63f78adb  gcc/testsuite/g++.old-deja/g++.other/redecl1.C
! 52037922946c53f130cb139a0beb51f1  gcc/testsuite/g++.old-deja/g++.other/redecl2.C
  5e934e52ca0ebb8aec763916909e5aa0  gcc/testsuite/g++.old-deja/g++.other/redecl3.C
! 5c1de68870f0bba9d0c4e2725500477d  gcc/testsuite/g++.old-deja/g++.other/redecl4.C
  3d97599f1668f6276ba8fcb8536abf4f  gcc/testsuite/g++.old-deja/g++.other/ref1.C
  cc81859ae9c266583b18d8a58fe87aed  gcc/testsuite/g++.old-deja/g++.other/ref2.C
  a72ffc53a7a0019d3ab3c81b13884063  gcc/testsuite/g++.old-deja/g++.other/ref3.C
  79d707ba18e6801d7bcfcbfa35d50f7a  gcc/testsuite/g++.old-deja/g++.other/ref4.C
  2b5e35f667bf97fa9e5512c25a5c776b  gcc/testsuite/g++.old-deja/g++.other/refinit1.C
  46335621d24696cad55e77a231ae9250  gcc/testsuite/g++.old-deja/g++.other/refinit2.C
! 060b9a8956b74c5b0174b0346ccf988a  gcc/testsuite/g++.old-deja/g++.other/regstack.C
  0467e717fdd659d1980c52044a16d1e1  gcc/testsuite/g++.old-deja/g++.other/reload1.C
  9c8cbb38ce8d4bece4eccb6a484c763c  gcc/testsuite/g++.old-deja/g++.other/return1.C
  975c6f5dc39ccf0719efb4a802333342  gcc/testsuite/g++.old-deja/g++.other/rtti1.C
*************** b8bbfe951a05761b4a734cd5b8b649dd  gcc/te
*** 21640,21646 ****
  92b98ec5c36a99fa733a7b345e6d5d26  gcc/testsuite/g++.old-deja/g++.other/string1.C
  54063a09aa297bbbcf4708e110652da3  gcc/testsuite/g++.old-deja/g++.other/string2.C
  dda5308d0383636f91e0e254505f0833  gcc/testsuite/g++.old-deja/g++.other/struct1.C
! ae4eba98ae301d865a86a5f999875b69  gcc/testsuite/g++.old-deja/g++.other/syntax1.C
  fef6c903a3c6e37acec0c8b57da07155  gcc/testsuite/g++.old-deja/g++.other/syntax2.C
  ea0aa7ca8d71e498d340c85c8bcc2ddf  gcc/testsuite/g++.old-deja/g++.other/syntax3.C
  4ec76c6301c0c17af229271bbe6208c0  gcc/testsuite/g++.old-deja/g++.other/syntax4.C
--- 22781,22787 ----
  92b98ec5c36a99fa733a7b345e6d5d26  gcc/testsuite/g++.old-deja/g++.other/string1.C
  54063a09aa297bbbcf4708e110652da3  gcc/testsuite/g++.old-deja/g++.other/string2.C
  dda5308d0383636f91e0e254505f0833  gcc/testsuite/g++.old-deja/g++.other/struct1.C
! debbe1116a026cccd7bd8eef2d7df60f  gcc/testsuite/g++.old-deja/g++.other/syntax1.C
  fef6c903a3c6e37acec0c8b57da07155  gcc/testsuite/g++.old-deja/g++.other/syntax2.C
  ea0aa7ca8d71e498d340c85c8bcc2ddf  gcc/testsuite/g++.old-deja/g++.other/syntax3.C
  4ec76c6301c0c17af229271bbe6208c0  gcc/testsuite/g++.old-deja/g++.other/syntax4.C
*************** b9957a14eef8c9cfa198dafcb46f2a11  gcc/te
*** 21674,21680 ****
  fd1a1050ed74f9d20e346be428209ebf  gcc/testsuite/g++.old-deja/g++.other/using6.C
  555cd6e25e52a5dcd11e63480967cc2e  gcc/testsuite/g++.old-deja/g++.other/using7.C
  dcadc285f1b7a525ad8b9352919eae27  gcc/testsuite/g++.old-deja/g++.other/using8.C
! 0f229d4546185b8be1ab9e2745b0d5c9  gcc/testsuite/g++.old-deja/g++.other/using9.C
  12a6c106f340c7482ff5acff5c3ba0c7  gcc/testsuite/g++.old-deja/g++.other/vaarg1.C
  8c21b5e35109125a2fe0210c85ae1bc6  gcc/testsuite/g++.old-deja/g++.other/vaarg2.C
  a3dd695e73bd5b5ef6d24c2cd673ba81  gcc/testsuite/g++.old-deja/g++.other/vaarg3.C
--- 22815,22821 ----
  fd1a1050ed74f9d20e346be428209ebf  gcc/testsuite/g++.old-deja/g++.other/using6.C
  555cd6e25e52a5dcd11e63480967cc2e  gcc/testsuite/g++.old-deja/g++.other/using7.C
  dcadc285f1b7a525ad8b9352919eae27  gcc/testsuite/g++.old-deja/g++.other/using8.C
! fde8fa0fc20a3eb83053dd60a55ba33e  gcc/testsuite/g++.old-deja/g++.other/using9.C
  12a6c106f340c7482ff5acff5c3ba0c7  gcc/testsuite/g++.old-deja/g++.other/vaarg1.C
  8c21b5e35109125a2fe0210c85ae1bc6  gcc/testsuite/g++.old-deja/g++.other/vaarg2.C
  a3dd695e73bd5b5ef6d24c2cd673ba81  gcc/testsuite/g++.old-deja/g++.other/vaarg3.C
*************** b40e169f8b79ca99a995c50951bcb176  gcc/te
*** 21685,21694 ****
  69bf12b116250163342f3546f41dff4c  gcc/testsuite/g++.old-deja/g++.other/vbase4.C
  0dd5549f577f6ca4d2ecc8981a012320  gcc/testsuite/g++.old-deja/g++.other/vbase5.C
  930c4b7b0bbff2696a8528cc462df701  gcc/testsuite/g++.old-deja/g++.other/virtual10.C
! c85db2d12c2f86f74278074a4ea6cbd7  gcc/testsuite/g++.old-deja/g++.other/virtual11.C
  facad90a3e09689495cfd0bb984b74ad  gcc/testsuite/g++.old-deja/g++.other/virtual2.C
  126d0ea106a5252fb709751de41abae2  gcc/testsuite/g++.old-deja/g++.other/virtual3.C
! aae91d68382d78f5fff446edb0141d1c  gcc/testsuite/g++.old-deja/g++.other/virtual4.C
  f183acc74794fda2e8a0f2e69d95b26c  gcc/testsuite/g++.old-deja/g++.other/virtual5.C
  6aa085a55573a3d71f21cd92d50b53b8  gcc/testsuite/g++.old-deja/g++.other/virtual6.C
  6c07ee47e97d6ed4c53954ac388d1f85  gcc/testsuite/g++.old-deja/g++.other/virtual7.C
--- 22826,22835 ----
  69bf12b116250163342f3546f41dff4c  gcc/testsuite/g++.old-deja/g++.other/vbase4.C
  0dd5549f577f6ca4d2ecc8981a012320  gcc/testsuite/g++.old-deja/g++.other/vbase5.C
  930c4b7b0bbff2696a8528cc462df701  gcc/testsuite/g++.old-deja/g++.other/virtual10.C
! 76b48b2f56dfdc6444c7e14c88a33ae6  gcc/testsuite/g++.old-deja/g++.other/virtual11.C
  facad90a3e09689495cfd0bb984b74ad  gcc/testsuite/g++.old-deja/g++.other/virtual2.C
  126d0ea106a5252fb709751de41abae2  gcc/testsuite/g++.old-deja/g++.other/virtual3.C
! c1c3835706cc46c487ed78a4b90b6bf4  gcc/testsuite/g++.old-deja/g++.other/virtual4.C
  f183acc74794fda2e8a0f2e69d95b26c  gcc/testsuite/g++.old-deja/g++.other/virtual5.C
  6aa085a55573a3d71f21cd92d50b53b8  gcc/testsuite/g++.old-deja/g++.other/virtual6.C
  6c07ee47e97d6ed4c53954ac388d1f85  gcc/testsuite/g++.old-deja/g++.other/virtual7.C
*************** d83edbe52eb7bc716fbb4d703952fd5c  gcc/te
*** 21709,21717 ****
  9fd025f924b46fb426c34d473551f300  gcc/testsuite/g++.old-deja/g++.pt/array3.C
  3dc91c580932e390a62ef6101ac9bcf4  gcc/testsuite/g++.old-deja/g++.pt/array4.C
  d54d7f76b19f79dd290e5553a5679f48  gcc/testsuite/g++.old-deja/g++.pt/array5.C
! 9deafe0c23dcd9d4742de631c72fa4d3  gcc/testsuite/g++.old-deja/g++.pt/array6.C
  0bf7b9320971f79173514bee96bfc707  gcc/testsuite/g++.old-deja/g++.pt/array7.C
! bb8d2d0fe6b1dcc9273c8b8fb7b54f87  gcc/testsuite/g++.old-deja/g++.pt/asm1.C
  a50c1e209893f43959322c9e8e755aef  gcc/testsuite/g++.old-deja/g++.pt/asm2.C
  5e367a6d46451726ae5272df625f03c8  gcc/testsuite/g++.old-deja/g++.pt/assign1.C
  fe0b4707d1883e16eaabb48968262766  gcc/testsuite/g++.old-deja/g++.pt/auto_ptr.C
--- 22850,22858 ----
  9fd025f924b46fb426c34d473551f300  gcc/testsuite/g++.old-deja/g++.pt/array3.C
  3dc91c580932e390a62ef6101ac9bcf4  gcc/testsuite/g++.old-deja/g++.pt/array4.C
  d54d7f76b19f79dd290e5553a5679f48  gcc/testsuite/g++.old-deja/g++.pt/array5.C
! 322dc1e374f2b865f57328f50145b042  gcc/testsuite/g++.old-deja/g++.pt/array6.C
  0bf7b9320971f79173514bee96bfc707  gcc/testsuite/g++.old-deja/g++.pt/array7.C
! 20f25304c5f86830f4bad8aaef0823cd  gcc/testsuite/g++.old-deja/g++.pt/asm1.C
  a50c1e209893f43959322c9e8e755aef  gcc/testsuite/g++.old-deja/g++.pt/asm2.C
  5e367a6d46451726ae5272df625f03c8  gcc/testsuite/g++.old-deja/g++.pt/assign1.C
  fe0b4707d1883e16eaabb48968262766  gcc/testsuite/g++.old-deja/g++.pt/auto_ptr.C
*************** b6d440ee5ae5a25fabec17351329472e  gcc/te
*** 21737,21743 ****
  fcadc5744a7361e664ae053c8da7d49f  gcc/testsuite/g++.old-deja/g++.pt/crash13.C
  8362f30058de81564a32b4120b51b1d4  gcc/testsuite/g++.old-deja/g++.pt/crash14.C
  2abe02bab2c536f2c534865125b58f90  gcc/testsuite/g++.old-deja/g++.pt/crash15.C
! 4dfee212c337a24dc64b844b1d77da82  gcc/testsuite/g++.old-deja/g++.pt/crash16.C
  1811071a193b352d2fe96d8aaad51eac  gcc/testsuite/g++.old-deja/g++.pt/crash17.C
  1e0208226d67f07bbcf7d617588c459f  gcc/testsuite/g++.old-deja/g++.pt/crash18.C
  77a6447cd59f76d2af86fbf4cc3b75a6  gcc/testsuite/g++.old-deja/g++.pt/crash19.C
--- 22878,22884 ----
  fcadc5744a7361e664ae053c8da7d49f  gcc/testsuite/g++.old-deja/g++.pt/crash13.C
  8362f30058de81564a32b4120b51b1d4  gcc/testsuite/g++.old-deja/g++.pt/crash14.C
  2abe02bab2c536f2c534865125b58f90  gcc/testsuite/g++.old-deja/g++.pt/crash15.C
! 52d9eb530f798eab057c84a23a13292a  gcc/testsuite/g++.old-deja/g++.pt/crash16.C
  1811071a193b352d2fe96d8aaad51eac  gcc/testsuite/g++.old-deja/g++.pt/crash17.C
  1e0208226d67f07bbcf7d617588c459f  gcc/testsuite/g++.old-deja/g++.pt/crash18.C
  77a6447cd59f76d2af86fbf4cc3b75a6  gcc/testsuite/g++.old-deja/g++.pt/crash19.C
*************** b68c315d87c6da3200c5e40ecf94e0a3  gcc/te
*** 21752,21758 ****
  8986c1670e0c717d65ec99c78532722b  gcc/testsuite/g++.old-deja/g++.pt/crash27.C
  e6988c3246df244e0363fc784e781da1  gcc/testsuite/g++.old-deja/g++.pt/crash28.C
  0511f114a053d6ee5a46245be973b120  gcc/testsuite/g++.old-deja/g++.pt/crash29.C
! 73f1c630433f0de92c38f58a030c691d  gcc/testsuite/g++.old-deja/g++.pt/crash3.C
  acf4b3be0fecc691751cb7785e03caae  gcc/testsuite/g++.old-deja/g++.pt/crash30.C
  d7866497f7e5839b6b2923ee09574812  gcc/testsuite/g++.old-deja/g++.pt/crash31.C
  b5d183852d6986ed354dbff38c6e9bfa  gcc/testsuite/g++.old-deja/g++.pt/crash32.C
--- 22893,22899 ----
  8986c1670e0c717d65ec99c78532722b  gcc/testsuite/g++.old-deja/g++.pt/crash27.C
  e6988c3246df244e0363fc784e781da1  gcc/testsuite/g++.old-deja/g++.pt/crash28.C
  0511f114a053d6ee5a46245be973b120  gcc/testsuite/g++.old-deja/g++.pt/crash29.C
! 2e1dfa6a1a9675ee0d665dc7dd928002  gcc/testsuite/g++.old-deja/g++.pt/crash3.C
  acf4b3be0fecc691751cb7785e03caae  gcc/testsuite/g++.old-deja/g++.pt/crash30.C
  d7866497f7e5839b6b2923ee09574812  gcc/testsuite/g++.old-deja/g++.pt/crash31.C
  b5d183852d6986ed354dbff38c6e9bfa  gcc/testsuite/g++.old-deja/g++.pt/crash32.C
*************** e9e4ffab1856eb43275fed8552ccdd51  gcc/te
*** 21829,21835 ****
  4a7bcf0e69407234143b8788e32f2b6c  gcc/testsuite/g++.old-deja/g++.pt/derived1.C
  b9e028a460d0b89de8720a32a624294e  gcc/testsuite/g++.old-deja/g++.pt/derived2.C
  741859656e0df7350bf09949ed93e660  gcc/testsuite/g++.old-deja/g++.pt/derived3.C
! 5b8f05849adf02df49d6c7a143da6dd0  gcc/testsuite/g++.old-deja/g++.pt/dynarray.C
  5ffddc707b760295b1bc319fda0770fa  gcc/testsuite/g++.old-deja/g++.pt/ehspec1.C
  27f2ac161e4df5610b1e51676a20752a  gcc/testsuite/g++.old-deja/g++.pt/eichin01.C
  5c9ac24285bce54d4230b3f47a4e03b1  gcc/testsuite/g++.old-deja/g++.pt/eichin01a.C
--- 22970,22976 ----
  4a7bcf0e69407234143b8788e32f2b6c  gcc/testsuite/g++.old-deja/g++.pt/derived1.C
  b9e028a460d0b89de8720a32a624294e  gcc/testsuite/g++.old-deja/g++.pt/derived2.C
  741859656e0df7350bf09949ed93e660  gcc/testsuite/g++.old-deja/g++.pt/derived3.C
! d09cd3f242245f604acbf805b1b7f4c3  gcc/testsuite/g++.old-deja/g++.pt/dynarray.C
  5ffddc707b760295b1bc319fda0770fa  gcc/testsuite/g++.old-deja/g++.pt/ehspec1.C
  27f2ac161e4df5610b1e51676a20752a  gcc/testsuite/g++.old-deja/g++.pt/eichin01.C
  5c9ac24285bce54d4230b3f47a4e03b1  gcc/testsuite/g++.old-deja/g++.pt/eichin01a.C
*************** cedd42154223762b31d44f587554acc4  gcc/te
*** 21950,21957 ****
  291eeae46367198762ea84f48881a4a8  gcc/testsuite/g++.old-deja/g++.pt/friend20.C
  93187498fe9c52f4c327013da09ca015  gcc/testsuite/g++.old-deja/g++.pt/friend21.C
  518a930e33a9c7bffb804d4f439fcf24  gcc/testsuite/g++.old-deja/g++.pt/friend22.C
! b0039b5263f1df623037dcbad914d501  gcc/testsuite/g++.old-deja/g++.pt/friend23.C
! c12484746b3b3d5f2233a8cb42f6464a  gcc/testsuite/g++.old-deja/g++.pt/friend24.C
  f0c38d7d73bae947b233e0a3eb2e7454  gcc/testsuite/g++.old-deja/g++.pt/friend25.C
  6bebb5862e10035a9ad5d5d4f55e2305  gcc/testsuite/g++.old-deja/g++.pt/friend26.C
  c8eb156fe71d734c3ca4562810faa6e5  gcc/testsuite/g++.old-deja/g++.pt/friend27.C
--- 23091,23097 ----
  291eeae46367198762ea84f48881a4a8  gcc/testsuite/g++.old-deja/g++.pt/friend20.C
  93187498fe9c52f4c327013da09ca015  gcc/testsuite/g++.old-deja/g++.pt/friend21.C
  518a930e33a9c7bffb804d4f439fcf24  gcc/testsuite/g++.old-deja/g++.pt/friend22.C
! 9435d4a82b4d2147b5fdebdf9eef8ddf  gcc/testsuite/g++.old-deja/g++.pt/friend23.C
  f0c38d7d73bae947b233e0a3eb2e7454  gcc/testsuite/g++.old-deja/g++.pt/friend25.C
  6bebb5862e10035a9ad5d5d4f55e2305  gcc/testsuite/g++.old-deja/g++.pt/friend26.C
  c8eb156fe71d734c3ca4562810faa6e5  gcc/testsuite/g++.old-deja/g++.pt/friend27.C
*************** b5f83a28cbe580ee876974ea015b9d4f  gcc/te
*** 21989,21995 ****
  ffb40aa7b5891e7058c5a6dc1f565c67  gcc/testsuite/g++.old-deja/g++.pt/incomplete1.C
  879a8755c920aa8039dcb770ecbddd3f  gcc/testsuite/g++.old-deja/g++.pt/infinite1.C
  b3a04570db4fdb69f0df03a3fcf1d309  gcc/testsuite/g++.old-deja/g++.pt/inherit1.C
! 51c3918013f11b5594668560d799da0b  gcc/testsuite/g++.old-deja/g++.pt/inherit2.C
  df8b6fb117055d3030ac4a16e7d9652b  gcc/testsuite/g++.old-deja/g++.pt/inject1.C
  2561cc9788102a262f6b817b51c51ea8  gcc/testsuite/g++.old-deja/g++.pt/inject2.C
  9becc6b60e24b9b917c3240eb67cdf79  gcc/testsuite/g++.old-deja/g++.pt/inline1.C
--- 23129,23135 ----
  ffb40aa7b5891e7058c5a6dc1f565c67  gcc/testsuite/g++.old-deja/g++.pt/incomplete1.C
  879a8755c920aa8039dcb770ecbddd3f  gcc/testsuite/g++.old-deja/g++.pt/infinite1.C
  b3a04570db4fdb69f0df03a3fcf1d309  gcc/testsuite/g++.old-deja/g++.pt/inherit1.C
! 8142f485cdc60dad86c04f703a4dc1ab  gcc/testsuite/g++.old-deja/g++.pt/inherit2.C
  df8b6fb117055d3030ac4a16e7d9652b  gcc/testsuite/g++.old-deja/g++.pt/inject1.C
  2561cc9788102a262f6b817b51c51ea8  gcc/testsuite/g++.old-deja/g++.pt/inject2.C
  9becc6b60e24b9b917c3240eb67cdf79  gcc/testsuite/g++.old-deja/g++.pt/inline1.C
*************** c7588e497b92cdcedbc471bdb943f423  gcc/te
*** 22130,22136 ****
  439cfe31ad68b6ca4c28b91498a9b16b  gcc/testsuite/g++.old-deja/g++.pt/memtemp75.C
  ee2a00cd5bfa8956405211c4f6261960  gcc/testsuite/g++.old-deja/g++.pt/memtemp76.C
  13318d291465bb4d363f8f6cec839efb  gcc/testsuite/g++.old-deja/g++.pt/memtemp77.C
! ef6dd43a0a944829a8e40bb7d02ff802  gcc/testsuite/g++.old-deja/g++.pt/memtemp78.C
  ba93ff2f6f392b1f1ec5abdc4d4dead2  gcc/testsuite/g++.old-deja/g++.pt/memtemp79.C
  ade19ffe674662b17d243a6efafca792  gcc/testsuite/g++.old-deja/g++.pt/memtemp8.C
  dfe226bdc2e8df4b798d0ebefbd4ccc1  gcc/testsuite/g++.old-deja/g++.pt/memtemp80.C
--- 23270,23276 ----
  439cfe31ad68b6ca4c28b91498a9b16b  gcc/testsuite/g++.old-deja/g++.pt/memtemp75.C
  ee2a00cd5bfa8956405211c4f6261960  gcc/testsuite/g++.old-deja/g++.pt/memtemp76.C
  13318d291465bb4d363f8f6cec839efb  gcc/testsuite/g++.old-deja/g++.pt/memtemp77.C
! 3301bb055886cb271fba6a8319151596  gcc/testsuite/g++.old-deja/g++.pt/memtemp78.C
  ba93ff2f6f392b1f1ec5abdc4d4dead2  gcc/testsuite/g++.old-deja/g++.pt/memtemp79.C
  ade19ffe674662b17d243a6efafca792  gcc/testsuite/g++.old-deja/g++.pt/memtemp8.C
  dfe226bdc2e8df4b798d0ebefbd4ccc1  gcc/testsuite/g++.old-deja/g++.pt/memtemp80.C
*************** b120569cbaba674fa6fa0e1461c92fc8  gcc/te
*** 22183,22189 ****
  cf5bc865967699ad3f2906d8d936bfe5  gcc/testsuite/g++.old-deja/g++.pt/overload5.C
  44907ff5ef1d1066b6b39107ecb88f74  gcc/testsuite/g++.old-deja/g++.pt/overload6.C
  64439adf1230740eabd7fda1399e40fc  gcc/testsuite/g++.old-deja/g++.pt/overload7.C
! 3e1e706e620fe63e0069f79a46d7d1cd  gcc/testsuite/g++.old-deja/g++.pt/overload8.C
  6da07c77e41065f4fd25d2590a0cc546  gcc/testsuite/g++.old-deja/g++.pt/overload9.C
  98e623a44647fcd383fe6c264bcafea1  gcc/testsuite/g++.old-deja/g++.pt/parms1.C
  e36ad3d6e053eb47203e23904d6d6e3a  gcc/testsuite/g++.old-deja/g++.pt/parms2.C
--- 23323,23329 ----
  cf5bc865967699ad3f2906d8d936bfe5  gcc/testsuite/g++.old-deja/g++.pt/overload5.C
  44907ff5ef1d1066b6b39107ecb88f74  gcc/testsuite/g++.old-deja/g++.pt/overload6.C
  64439adf1230740eabd7fda1399e40fc  gcc/testsuite/g++.old-deja/g++.pt/overload7.C
! a4466b734fd10c9b8bc0de48f6a60d80  gcc/testsuite/g++.old-deja/g++.pt/overload8.C
  6da07c77e41065f4fd25d2590a0cc546  gcc/testsuite/g++.old-deja/g++.pt/overload9.C
  98e623a44647fcd383fe6c264bcafea1  gcc/testsuite/g++.old-deja/g++.pt/parms1.C
  e36ad3d6e053eb47203e23904d6d6e3a  gcc/testsuite/g++.old-deja/g++.pt/parms2.C
*************** d2ba4d7263802ba42326b543f3865c8e  gcc/te
*** 22216,22222 ****
  473d7d5b75c57a212b20cd7b20b515c4  gcc/testsuite/g++.old-deja/g++.pt/ref4.C
  706f15e009be25a8e79222ab0622d4fb  gcc/testsuite/g++.old-deja/g++.pt/repo1.C
  7f4f10aa57f0877b1c68c5f103359587  gcc/testsuite/g++.old-deja/g++.pt/repo2.C
! a0d605887e4cfa4fc11cb4fdcee31f9b  gcc/testsuite/g++.old-deja/g++.pt/repo3.C
  77de8441a356c3a922649e61860dd9d3  gcc/testsuite/g++.old-deja/g++.pt/repo4.C
  a8546d341b42085260ccd351b918e18c  gcc/testsuite/g++.old-deja/g++.pt/scope1.C
  7259c6f6b64b40712386f6548cabea8e  gcc/testsuite/g++.old-deja/g++.pt/shadow1.C
--- 23356,23362 ----
  473d7d5b75c57a212b20cd7b20b515c4  gcc/testsuite/g++.old-deja/g++.pt/ref4.C
  706f15e009be25a8e79222ab0622d4fb  gcc/testsuite/g++.old-deja/g++.pt/repo1.C
  7f4f10aa57f0877b1c68c5f103359587  gcc/testsuite/g++.old-deja/g++.pt/repo2.C
! 11584031135af6263c74e9e5a913db0b  gcc/testsuite/g++.old-deja/g++.pt/repo3.C
  77de8441a356c3a922649e61860dd9d3  gcc/testsuite/g++.old-deja/g++.pt/repo4.C
  a8546d341b42085260ccd351b918e18c  gcc/testsuite/g++.old-deja/g++.pt/scope1.C
  7259c6f6b64b40712386f6548cabea8e  gcc/testsuite/g++.old-deja/g++.pt/shadow1.C
*************** b0ee25173b0e8adc17515578b0821f22  gcc/te
*** 22272,22278 ****
  cce93274cc52f32776c18c658a1f9dde  gcc/testsuite/g++.old-deja/g++.pt/static3.C
  589231529de4c0a45cb857d76c3e2a2e  gcc/testsuite/g++.old-deja/g++.pt/static4.C
  d3753adb4f484f4fb4b4e2fc61de3464  gcc/testsuite/g++.old-deja/g++.pt/static5.C
! 5b6d68c887162d2aa7c3f075bcc9dc94  gcc/testsuite/g++.old-deja/g++.pt/static6.C
  72154d5a2f46122f8101c515f3a29357  gcc/testsuite/g++.old-deja/g++.pt/static7.C
  89ecd6c73fd87f973e737c007e6defb0  gcc/testsuite/g++.old-deja/g++.pt/static8.C
  6e11a4161127a251dd4e656f70f7bb7b  gcc/testsuite/g++.old-deja/g++.pt/static9.C
--- 23412,23418 ----
  cce93274cc52f32776c18c658a1f9dde  gcc/testsuite/g++.old-deja/g++.pt/static3.C
  589231529de4c0a45cb857d76c3e2a2e  gcc/testsuite/g++.old-deja/g++.pt/static4.C
  d3753adb4f484f4fb4b4e2fc61de3464  gcc/testsuite/g++.old-deja/g++.pt/static5.C
! bbb05da16cb6ed864585be02b32770ce  gcc/testsuite/g++.old-deja/g++.pt/static6.C
  72154d5a2f46122f8101c515f3a29357  gcc/testsuite/g++.old-deja/g++.pt/static7.C
  89ecd6c73fd87f973e737c007e6defb0  gcc/testsuite/g++.old-deja/g++.pt/static8.C
  6e11a4161127a251dd4e656f70f7bb7b  gcc/testsuite/g++.old-deja/g++.pt/static9.C
*************** be430db3c83c1e77ffcbbbd0b1311df6  gcc/te
*** 22320,22326 ****
  6af909875fa9f90e1e7206db6ad54117  gcc/testsuite/g++.old-deja/g++.pt/t35.C
  1f2805de9d0dd928b7dc9d6396f793df  gcc/testsuite/g++.old-deja/g++.pt/t35a.C
  c84f5cedd02a6127c6506cfa331391da  gcc/testsuite/g++.old-deja/g++.pt/t36.C
! afccb64f42e87f045abab9cb26c0647d  gcc/testsuite/g++.old-deja/g++.pt/t37.C
  2e421a22074476f104dce2246485a180  gcc/testsuite/g++.old-deja/g++.pt/t37a.C
  75bc3e70f5f3963a4a43e97741cf1de7  gcc/testsuite/g++.old-deja/g++.pt/t38.C
  94fb3f4d92db5a0db2265c73873ffa25  gcc/testsuite/g++.old-deja/g++.pt/t39.C
--- 23460,23466 ----
  6af909875fa9f90e1e7206db6ad54117  gcc/testsuite/g++.old-deja/g++.pt/t35.C
  1f2805de9d0dd928b7dc9d6396f793df  gcc/testsuite/g++.old-deja/g++.pt/t35a.C
  c84f5cedd02a6127c6506cfa331391da  gcc/testsuite/g++.old-deja/g++.pt/t36.C
! 5bfa822496df4acc8fb3a2b97bead3b0  gcc/testsuite/g++.old-deja/g++.pt/t37.C
  2e421a22074476f104dce2246485a180  gcc/testsuite/g++.old-deja/g++.pt/t37a.C
  75bc3e70f5f3963a4a43e97741cf1de7  gcc/testsuite/g++.old-deja/g++.pt/t38.C
  94fb3f4d92db5a0db2265c73873ffa25  gcc/testsuite/g++.old-deja/g++.pt/t39.C
*************** e4bacbe47abba3ebf1104b50d7cf9249  gcc/te
*** 22447,22453 ****
  0b17744e945f7e70ed94bc15a1a5772b  gcc/testsuite/g++.old-deja/g++.rfg/00321_01-.C
  6e08af4f3aeb3035fd28db286cc4183e  gcc/testsuite/g++.old-deja/g++.rfg/00324_02-.C
  18090564deaeabb2833db724176f5e3e  gcc/testsuite/g++.old-deja/g++.robertl/980310-1.C
! 2931ebca792092fea0e3b322b70db918  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
  c3e3b096135d4431c779fe96dcb08fd3  gcc/testsuite/g++.old-deja/g++.robertl/eb103.C
--- 23587,23593 ----
  0b17744e945f7e70ed94bc15a1a5772b  gcc/testsuite/g++.old-deja/g++.rfg/00321_01-.C
  6e08af4f3aeb3035fd28db286cc4183e  gcc/testsuite/g++.old-deja/g++.rfg/00324_02-.C
  18090564deaeabb2833db724176f5e3e  gcc/testsuite/g++.old-deja/g++.robertl/980310-1.C
! 46f8b929b740cfaebb2d1c38c5be6937  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
  c3e3b096135d4431c779fe96dcb08fd3  gcc/testsuite/g++.old-deja/g++.robertl/eb103.C
*************** dda1730a666d8970244424705aa4b904  gcc/te
*** 22470,22476 ****
  b0b80d381a13416603feedf9611b816d  gcc/testsuite/g++.old-deja/g++.robertl/eb120.C
  6875edf27d4ff79c6949fbd17e5b1ed6  gcc/testsuite/g++.old-deja/g++.robertl/eb121.C
  6cea022036005800b290af273d7eb4f5  gcc/testsuite/g++.old-deja/g++.robertl/eb122.C
! 84dfb934c795c33050085fc9d60060c5  gcc/testsuite/g++.old-deja/g++.robertl/eb123.C
  41102a1c99ea009d5ff0a3074bf4f821  gcc/testsuite/g++.old-deja/g++.robertl/eb124.C
  20bc0ea9e2cf52f325b3824da6e490ff  gcc/testsuite/g++.old-deja/g++.robertl/eb125.C
  8a691bca88fb3b558c8cbbbcd9c83824  gcc/testsuite/g++.old-deja/g++.robertl/eb126.C
--- 23610,23616 ----
  b0b80d381a13416603feedf9611b816d  gcc/testsuite/g++.old-deja/g++.robertl/eb120.C
  6875edf27d4ff79c6949fbd17e5b1ed6  gcc/testsuite/g++.old-deja/g++.robertl/eb121.C
  6cea022036005800b290af273d7eb4f5  gcc/testsuite/g++.old-deja/g++.robertl/eb122.C
! 17f39505b12e2718e0623a1f9acbf086  gcc/testsuite/g++.old-deja/g++.robertl/eb123.C
  41102a1c99ea009d5ff0a3074bf4f821  gcc/testsuite/g++.old-deja/g++.robertl/eb124.C
  20bc0ea9e2cf52f325b3824da6e490ff  gcc/testsuite/g++.old-deja/g++.robertl/eb125.C
  8a691bca88fb3b558c8cbbbcd9c83824  gcc/testsuite/g++.old-deja/g++.robertl/eb126.C
*************** dfa1bab9d1d1dbb5b57ebf2c698892d7  gcc/te
*** 22498,22504 ****
  9d707a3f73b9ac5715f144793aab4cf0  gcc/testsuite/g++.old-deja/g++.robertl/eb23.C
  6746831f359d3159b992e820ac0aa390  gcc/testsuite/g++.old-deja/g++.robertl/eb24.C
  bfed9395e04ba5cc65f81b655ac0007e  gcc/testsuite/g++.old-deja/g++.robertl/eb26.C
! 012e13256611c34a6ded6584b2d7db95  gcc/testsuite/g++.old-deja/g++.robertl/eb27.C
  dc881655a5dcfa0cdbdd902204cb69d8  gcc/testsuite/g++.old-deja/g++.robertl/eb28.C
  2d148cfc1aef7e73c84dde3cfba1ce8c  gcc/testsuite/g++.old-deja/g++.robertl/eb29.C
  0164d1f50c2dd32169fccc50aa1a7e01  gcc/testsuite/g++.old-deja/g++.robertl/eb3.C
--- 23638,23644 ----
  9d707a3f73b9ac5715f144793aab4cf0  gcc/testsuite/g++.old-deja/g++.robertl/eb23.C
  6746831f359d3159b992e820ac0aa390  gcc/testsuite/g++.old-deja/g++.robertl/eb24.C
  bfed9395e04ba5cc65f81b655ac0007e  gcc/testsuite/g++.old-deja/g++.robertl/eb26.C
! 46860c6367a581d0f42194a27712715e  gcc/testsuite/g++.old-deja/g++.robertl/eb27.C
  dc881655a5dcfa0cdbdd902204cb69d8  gcc/testsuite/g++.old-deja/g++.robertl/eb28.C
  2d148cfc1aef7e73c84dde3cfba1ce8c  gcc/testsuite/g++.old-deja/g++.robertl/eb29.C
  0164d1f50c2dd32169fccc50aa1a7e01  gcc/testsuite/g++.old-deja/g++.robertl/eb3.C
*************** f81c5754161a5ff2ebd2406bece56fd1  gcc/te
*** 22528,22540 ****
  515d9f8631388b57acb4079b3ad6e1d9  gcc/testsuite/g++.old-deja/g++.robertl/eb55.C
  62fa73b17247c1714c275a963fa7328a  gcc/testsuite/g++.old-deja/g++.robertl/eb56.C
  0777d21b3dd550747ecc5bbf0087c1fc  gcc/testsuite/g++.old-deja/g++.robertl/eb57.C
! 58bc826ccb2159a92b85635040d7603e  gcc/testsuite/g++.old-deja/g++.robertl/eb58.C
  0a93ceef805435716e94c493f877f9c7  gcc/testsuite/g++.old-deja/g++.robertl/eb59.C
  1a1f9e745e06ee3866366991f2da25eb  gcc/testsuite/g++.old-deja/g++.robertl/eb6.C
  9ec1bcc10a422ce1681840b226b2e797  gcc/testsuite/g++.old-deja/g++.robertl/eb60.C
  e79679e8d57af97c777b23ef2b290a90  gcc/testsuite/g++.old-deja/g++.robertl/eb61.C
  4bb576d55e0e1e12e3e9ceeebef0ceec  gcc/testsuite/g++.old-deja/g++.robertl/eb62.C
! 59505f841b5e13c6d0d05f1ce320d185  gcc/testsuite/g++.old-deja/g++.robertl/eb63.C
  b6595ba27fd258c0900d7e3a4566c9ca  gcc/testsuite/g++.old-deja/g++.robertl/eb64.C
  de75043540ca4e516fe1727234b3000e  gcc/testsuite/g++.old-deja/g++.robertl/eb65.C
  e728f40777563cb885cfa405a188c976  gcc/testsuite/g++.old-deja/g++.robertl/eb66.C
--- 23668,23680 ----
  515d9f8631388b57acb4079b3ad6e1d9  gcc/testsuite/g++.old-deja/g++.robertl/eb55.C
  62fa73b17247c1714c275a963fa7328a  gcc/testsuite/g++.old-deja/g++.robertl/eb56.C
  0777d21b3dd550747ecc5bbf0087c1fc  gcc/testsuite/g++.old-deja/g++.robertl/eb57.C
! 993d0fecd5d11eb52beef6b83d0d7f9f  gcc/testsuite/g++.old-deja/g++.robertl/eb58.C
  0a93ceef805435716e94c493f877f9c7  gcc/testsuite/g++.old-deja/g++.robertl/eb59.C
  1a1f9e745e06ee3866366991f2da25eb  gcc/testsuite/g++.old-deja/g++.robertl/eb6.C
  9ec1bcc10a422ce1681840b226b2e797  gcc/testsuite/g++.old-deja/g++.robertl/eb60.C
  e79679e8d57af97c777b23ef2b290a90  gcc/testsuite/g++.old-deja/g++.robertl/eb61.C
  4bb576d55e0e1e12e3e9ceeebef0ceec  gcc/testsuite/g++.old-deja/g++.robertl/eb62.C
! 3113643f536820a2abae4e1a313bf241  gcc/testsuite/g++.old-deja/g++.robertl/eb63.C
  b6595ba27fd258c0900d7e3a4566c9ca  gcc/testsuite/g++.old-deja/g++.robertl/eb64.C
  de75043540ca4e516fe1727234b3000e  gcc/testsuite/g++.old-deja/g++.robertl/eb65.C
  e728f40777563cb885cfa405a188c976  gcc/testsuite/g++.old-deja/g++.robertl/eb66.C
*************** a085e6cf1eca394616113132643a792e  gcc/te
*** 22553,22559 ****
  1eb9a1d899e84b46785ab32efead0469  gcc/testsuite/g++.old-deja/g++.robertl/eb80.C
  78c03dfd8616d6624f4aa754373b8727  gcc/testsuite/g++.old-deja/g++.robertl/eb81.C
  bf4dffe16b0ade11667a1a290a8444f4  gcc/testsuite/g++.old-deja/g++.robertl/eb82.C
! 24392840d4084b13ca449e1d760737f6  gcc/testsuite/g++.old-deja/g++.robertl/eb83.C
  82ebc0a368a4d3db129faff1d32ded02  gcc/testsuite/g++.old-deja/g++.robertl/eb84.C
  451d74d332d1ebd3febbf9f2fdef05d5  gcc/testsuite/g++.old-deja/g++.robertl/eb86.C
  1b1d44ab52323a9942ada2f5c6a0042c  gcc/testsuite/g++.old-deja/g++.robertl/eb87.C
--- 23693,23699 ----
  1eb9a1d899e84b46785ab32efead0469  gcc/testsuite/g++.old-deja/g++.robertl/eb80.C
  78c03dfd8616d6624f4aa754373b8727  gcc/testsuite/g++.old-deja/g++.robertl/eb81.C
  bf4dffe16b0ade11667a1a290a8444f4  gcc/testsuite/g++.old-deja/g++.robertl/eb82.C
! 56310fd9753a3eedbd6a8e72fcce013e  gcc/testsuite/g++.old-deja/g++.robertl/eb83.C
  82ebc0a368a4d3db129faff1d32ded02  gcc/testsuite/g++.old-deja/g++.robertl/eb84.C
  451d74d332d1ebd3febbf9f2fdef05d5  gcc/testsuite/g++.old-deja/g++.robertl/eb86.C
  1b1d44ab52323a9942ada2f5c6a0042c  gcc/testsuite/g++.old-deja/g++.robertl/eb87.C
*************** f0d75f94742cf514d429d51c4d4df58c  gcc/te
*** 22588,22594 ****
  a885b90302ee9e0cb5c2e13efa009de3  gcc/testsuite/g++.old-deja/g++.warn/inline.C
  d53cb2073c8f36697f63dfe19779eb13  gcc/testsuite/g++.old-deja/g++.warn/iomanip.C
  8005975800b73ab7a05b4dd3e210a9c3  gcc/testsuite/g++.old-deja/g++.warn/virt1.C
! 0e9bbd734c886ec785a881bbe4b0cd9c  gcc/testsuite/g++.old-deja/old-deja.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
--- 23728,23741 ----
  a885b90302ee9e0cb5c2e13efa009de3  gcc/testsuite/g++.old-deja/g++.warn/inline.C
  d53cb2073c8f36697f63dfe19779eb13  gcc/testsuite/g++.old-deja/g++.warn/iomanip.C
  8005975800b73ab7a05b4dd3e210a9c3  gcc/testsuite/g++.old-deja/g++.warn/virt1.C
! eaadfcd52eda8067d93a20212f6f1052  gcc/testsuite/g++.old-deja/old-deja.exp
! 6dd651419503a8f0f775470c71d8e2e5  gcc/testsuite/g++.target/aarch64/sve/aarch64-sve.exp
! a6ae885cab1c3ae4d6ab40d96a214a79  gcc/testsuite/g++.target/aarch64/sve/catch_1.C
! 3bf33dd9f34c60d2012d00ed144b3887  gcc/testsuite/g++.target/aarch64/sve/catch_2.C
! 46f5fd860da6ec6044e8f2eda5bdc9b4  gcc/testsuite/g++.target/aarch64/sve/catch_3.C
! 8fe3e5def0354b8f3401b215b3f04c22  gcc/testsuite/g++.target/aarch64/sve/catch_4.C
! c83c4271b6d4f87612c44c996d5968ff  gcc/testsuite/g++.target/aarch64/sve/catch_5.C
! 7e08c226dff0f6bdf9c5f8c0fe3ece13  gcc/testsuite/g++.target/aarch64/sve/catch_6.C
  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
*************** fba0d0b2b31a206a959b200ef169c9cb  gcc/te
*** 22609,22615 ****
  d45627a209c2ca0e82340bda21fa78cc  gcc/testsuite/gcc.c-torture/compile/20000314-2.c
  b42783d7c501ef9ee0c4d27adb39ae5e  gcc/testsuite/gcc.c-torture/compile/20000319-1.c
  f16e5a7acd4a0e09dae0cf8c791e1884  gcc/testsuite/gcc.c-torture/compile/20000326-1.c
! d920b9c3c621528d8ce4a570a4c7a169  gcc/testsuite/gcc.c-torture/compile/20000326-2.c
  9d477c174ee96efa21fa7dc36531179a  gcc/testsuite/gcc.c-torture/compile/20000329-1.c
  59e3ec89126cf5a703de09dc85a7cce6  gcc/testsuite/gcc.c-torture/compile/20000403-1.c
  2e489c5b4fa941ec95edc22711cf08bd  gcc/testsuite/gcc.c-torture/compile/20000403-2.c
--- 23756,23762 ----
  d45627a209c2ca0e82340bda21fa78cc  gcc/testsuite/gcc.c-torture/compile/20000314-2.c
  b42783d7c501ef9ee0c4d27adb39ae5e  gcc/testsuite/gcc.c-torture/compile/20000319-1.c
  f16e5a7acd4a0e09dae0cf8c791e1884  gcc/testsuite/gcc.c-torture/compile/20000326-1.c
! 38f30482b8166be1a0b9fb0250bbd3ba  gcc/testsuite/gcc.c-torture/compile/20000326-2.c
  9d477c174ee96efa21fa7dc36531179a  gcc/testsuite/gcc.c-torture/compile/20000329-1.c
  59e3ec89126cf5a703de09dc85a7cce6  gcc/testsuite/gcc.c-torture/compile/20000403-1.c
  2e489c5b4fa941ec95edc22711cf08bd  gcc/testsuite/gcc.c-torture/compile/20000403-2.c
*************** ac01d71fcbc92c609cbf00b9a9c8b025  gcc/te
*** 22637,22643 ****
  9dd881236795fab247ec71c1abca3e09  gcc/testsuite/gcc.c-torture/compile/20000728-1.c
  6c8eebc797ff96343d1f35a39c2b3b2f  gcc/testsuite/gcc.c-torture/compile/20000802-1.c
  94da29ee4520eab538ad89a0653f7619  gcc/testsuite/gcc.c-torture/compile/20000803-1.c
! 749863c078d5b11467d893574e716cda  gcc/testsuite/gcc.c-torture/compile/20000804-1.c
  73d8448c7350023f4723ba59fa3c7f38  gcc/testsuite/gcc.c-torture/compile/20000818-1.c
  798ad95bcb3c0ac618dd80ee18912645  gcc/testsuite/gcc.c-torture/compile/20000825-1.c
  6c54d5e909022b02771b10d881dba9b0  gcc/testsuite/gcc.c-torture/compile/20000827-1.c
--- 23784,23790 ----
  9dd881236795fab247ec71c1abca3e09  gcc/testsuite/gcc.c-torture/compile/20000728-1.c
  6c8eebc797ff96343d1f35a39c2b3b2f  gcc/testsuite/gcc.c-torture/compile/20000802-1.c
  94da29ee4520eab538ad89a0653f7619  gcc/testsuite/gcc.c-torture/compile/20000803-1.c
! 90c155ed6113afdd0588dadb0fb09dfd  gcc/testsuite/gcc.c-torture/compile/20000804-1.c
  73d8448c7350023f4723ba59fa3c7f38  gcc/testsuite/gcc.c-torture/compile/20000818-1.c
  798ad95bcb3c0ac618dd80ee18912645  gcc/testsuite/gcc.c-torture/compile/20000825-1.c
  6c54d5e909022b02771b10d881dba9b0  gcc/testsuite/gcc.c-torture/compile/20000827-1.c
*************** b4043c1fb51131895a89abd42bb3c773  gcc/te
*** 22655,22661 ****
  47698e5c103095b52ddeebe9c18e4261  gcc/testsuite/gcc.c-torture/compile/20001212-1.c
  d9cdb320d7111c1d168a3b55d9be0022  gcc/testsuite/gcc.c-torture/compile/20001221-1.c
  fac92293ee460b9a9edfbba167f26474  gcc/testsuite/gcc.c-torture/compile/20001222-1.c
! aff0d9f898b993d7f51bb1c8a8dc30b5  gcc/testsuite/gcc.c-torture/compile/20001226-1.c
  c0ba5625247a9fad2ea7be846e7ec8b5  gcc/testsuite/gcc.c-torture/compile/200031109-1.c
  ee438a27b2ca130f863a164336c7bf94  gcc/testsuite/gcc.c-torture/compile/20010102-1.c
  136c345a5ffc1c42d9f1fa53ce543901  gcc/testsuite/gcc.c-torture/compile/20010107-1.c
--- 23802,23808 ----
  47698e5c103095b52ddeebe9c18e4261  gcc/testsuite/gcc.c-torture/compile/20001212-1.c
  d9cdb320d7111c1d168a3b55d9be0022  gcc/testsuite/gcc.c-torture/compile/20001221-1.c
  fac92293ee460b9a9edfbba167f26474  gcc/testsuite/gcc.c-torture/compile/20001222-1.c
! 913d40ca9532e0e00902bd94166a4cc0  gcc/testsuite/gcc.c-torture/compile/20001226-1.c
  c0ba5625247a9fad2ea7be846e7ec8b5  gcc/testsuite/gcc.c-torture/compile/200031109-1.c
  ee438a27b2ca130f863a164336c7bf94  gcc/testsuite/gcc.c-torture/compile/20010102-1.c
  136c345a5ffc1c42d9f1fa53ce543901  gcc/testsuite/gcc.c-torture/compile/20010107-1.c
*************** dba8eaaf1eaf37daeaccee68048aa381  gcc/te
*** 22928,22934 ****
  71a1f9d4064c81edd344fbeccb990542  gcc/testsuite/gcc.c-torture/compile/20051228-1.c
  32ea23b4f57a0c536634f94a8db346ed  gcc/testsuite/gcc.c-torture/compile/20060109-1.c
  fb93aba73a7d5e209e2e530738ed75c8  gcc/testsuite/gcc.c-torture/compile/20060202-1.c
! 1cbd88319807de958fdacb77a31a75c0  gcc/testsuite/gcc.c-torture/compile/20060208-1.c
  8202e1cedd04c94563fcb5be54811b79  gcc/testsuite/gcc.c-torture/compile/20060215-1.c
  934228bbf496b0aaba86392857f260db  gcc/testsuite/gcc.c-torture/compile/20060217-1.c
  b0ebec3fca01f88a2cc1144b41afa7ba  gcc/testsuite/gcc.c-torture/compile/20060309-1.c
--- 24075,24081 ----
  71a1f9d4064c81edd344fbeccb990542  gcc/testsuite/gcc.c-torture/compile/20051228-1.c
  32ea23b4f57a0c536634f94a8db346ed  gcc/testsuite/gcc.c-torture/compile/20060109-1.c
  fb93aba73a7d5e209e2e530738ed75c8  gcc/testsuite/gcc.c-torture/compile/20060202-1.c
! c78d2e70917cf68032cbffec8a2ee34f  gcc/testsuite/gcc.c-torture/compile/20060208-1.c
  8202e1cedd04c94563fcb5be54811b79  gcc/testsuite/gcc.c-torture/compile/20060215-1.c
  934228bbf496b0aaba86392857f260db  gcc/testsuite/gcc.c-torture/compile/20060217-1.c
  b0ebec3fca01f88a2cc1144b41afa7ba  gcc/testsuite/gcc.c-torture/compile/20060309-1.c
*************** b73dc451f520b51e7d49741835cc9b16  gcc/te
*** 22978,22985 ****
  dfd6056cf90f34722e9fca902457d50b  gcc/testsuite/gcc.c-torture/compile/20080625-1.c
  87adab3cffabaeaf5f2c5ae78eb46e04  gcc/testsuite/gcc.c-torture/compile/20080628-1.c
  6bb172b418bd73045aa51cdf462a3390  gcc/testsuite/gcc.c-torture/compile/20080704-1.c
! 61526f916f1dab40e5540b02c742e077  gcc/testsuite/gcc.c-torture/compile/20080721-1.c
! 63d63e82e0bbff470ecd1a23303316a9  gcc/testsuite/gcc.c-torture/compile/20080806-1.c
  f1b3e5835ed0ba4c6da0de667672e132  gcc/testsuite/gcc.c-torture/compile/20080812-1.c
  b4e4403eade2bc7731d63b46e2a41ab9  gcc/testsuite/gcc.c-torture/compile/20080820-1.c
  6bd3deeff89ea11522c7cb133babbc7b  gcc/testsuite/gcc.c-torture/compile/20080903-1.c
--- 24125,24132 ----
  dfd6056cf90f34722e9fca902457d50b  gcc/testsuite/gcc.c-torture/compile/20080625-1.c
  87adab3cffabaeaf5f2c5ae78eb46e04  gcc/testsuite/gcc.c-torture/compile/20080628-1.c
  6bb172b418bd73045aa51cdf462a3390  gcc/testsuite/gcc.c-torture/compile/20080704-1.c
! 25669d36d52316cd0cd6a5b518d00e96  gcc/testsuite/gcc.c-torture/compile/20080721-1.c
! 1092a44864a482a69cfcf4926cbc1c25  gcc/testsuite/gcc.c-torture/compile/20080806-1.c
  f1b3e5835ed0ba4c6da0de667672e132  gcc/testsuite/gcc.c-torture/compile/20080812-1.c
  b4e4403eade2bc7731d63b46e2a41ab9  gcc/testsuite/gcc.c-torture/compile/20080820-1.c
  6bd3deeff89ea11522c7cb133babbc7b  gcc/testsuite/gcc.c-torture/compile/20080903-1.c
*************** f4d28e7297ede9e7c0bcd206fa76633c  gcc/te
*** 23045,23050 ****
--- 24192,24198 ----
  a74fd600765c662baf7c526fbc93a717  gcc/testsuite/gcc.c-torture/compile/20161123-1.c
  9b8a22271d9f19237c0612402fc99963  gcc/testsuite/gcc.c-torture/compile/20161124-1.c
  ba7ecb97d3019d0ba80490d9c7b12ca8  gcc/testsuite/gcc.c-torture/compile/20170419-1.c
+ 4de7411043b03c153c5efe80020e17d5  gcc/testsuite/gcc.c-torture/compile/20180309-1.c
  ebed49e0868fa97d60c12191fa496d07  gcc/testsuite/gcc.c-torture/compile/386.c
  9681568709601cbb39a156fa04526182  gcc/testsuite/gcc.c-torture/compile/86.c
  ab32e65ea5976f9083dc8234dae65343  gcc/testsuite/gcc.c-torture/compile/900116-1.c
*************** ab32e65ea5976f9083dc8234dae65343  gcc/te
*** 23052,23058 ****
  1cb9760d72796c539e79ee91f211a2d7  gcc/testsuite/gcc.c-torture/compile/900313-1.c
  debb0d465174202d229c02d1e628f1ee  gcc/testsuite/gcc.c-torture/compile/900407-1.c
  605840058f83d6025ac5167f1900ebd5  gcc/testsuite/gcc.c-torture/compile/900516-1.c
! f07a847124ecd2a7c8b274c4d88bcf8e  gcc/testsuite/gcc.c-torture/compile/920301-1.c
  caadf739156e2c2061df61144362695c  gcc/testsuite/gcc.c-torture/compile/920409-1.c
  88e84241a35119067a9566a4ecee2d5a  gcc/testsuite/gcc.c-torture/compile/920409-2.c
  44e91f52480b4541f81934189d96367a  gcc/testsuite/gcc.c-torture/compile/920410-1.c
--- 24200,24206 ----
  1cb9760d72796c539e79ee91f211a2d7  gcc/testsuite/gcc.c-torture/compile/900313-1.c
  debb0d465174202d229c02d1e628f1ee  gcc/testsuite/gcc.c-torture/compile/900407-1.c
  605840058f83d6025ac5167f1900ebd5  gcc/testsuite/gcc.c-torture/compile/900516-1.c
! 797a8a3fce12f09c4ba2d6b5a2c9091b  gcc/testsuite/gcc.c-torture/compile/920301-1.c
  caadf739156e2c2061df61144362695c  gcc/testsuite/gcc.c-torture/compile/920409-1.c
  88e84241a35119067a9566a4ecee2d5a  gcc/testsuite/gcc.c-torture/compile/920409-2.c
  44e91f52480b4541f81934189d96367a  gcc/testsuite/gcc.c-torture/compile/920410-1.c
*************** f918ec11a1b026618121e37221af6d26  gcc/te
*** 23067,23073 ****
  e3611a305d8eea8d4d96910c178e217f  gcc/testsuite/gcc.c-torture/compile/920428-5.c
  eecf565315f5f6b7f87919ef37893a50  gcc/testsuite/gcc.c-torture/compile/920428-6.c
  24420f53d13efc099c91454ef1b45f3b  gcc/testsuite/gcc.c-torture/compile/920428-7.c
! 5d95cf4e6be6fd3c9fb54205243e4c6a  gcc/testsuite/gcc.c-torture/compile/920501-1.c
  7e292535a025406604e270d1687f3f50  gcc/testsuite/gcc.c-torture/compile/920501-10.c
  8af8925da21df7a1c55760e6f5eb35af  gcc/testsuite/gcc.c-torture/compile/920501-11.c
  1bf660447483eee55705bd5c76be30a6  gcc/testsuite/gcc.c-torture/compile/920501-12.c
--- 24215,24221 ----
  e3611a305d8eea8d4d96910c178e217f  gcc/testsuite/gcc.c-torture/compile/920428-5.c
  eecf565315f5f6b7f87919ef37893a50  gcc/testsuite/gcc.c-torture/compile/920428-6.c
  24420f53d13efc099c91454ef1b45f3b  gcc/testsuite/gcc.c-torture/compile/920428-7.c
! 804e13de911a9322d5cae8d07bfe0ec7  gcc/testsuite/gcc.c-torture/compile/920501-1.c
  7e292535a025406604e270d1687f3f50  gcc/testsuite/gcc.c-torture/compile/920501-10.c
  8af8925da21df7a1c55760e6f5eb35af  gcc/testsuite/gcc.c-torture/compile/920501-11.c
  1bf660447483eee55705bd5c76be30a6  gcc/testsuite/gcc.c-torture/compile/920501-12.c
*************** c011e219a56ab2e26c8b9610b5d2c88a  gcc/te
*** 23090,23096 ****
  60492beefa479246de9e660297e714d2  gcc/testsuite/gcc.c-torture/compile/920501-9.c
  b4c19ce1711eda917bf5173118f17f2e  gcc/testsuite/gcc.c-torture/compile/920502-1.c
  f8a4a7cdd10bff2f497ead072397e806  gcc/testsuite/gcc.c-torture/compile/920502-2.c
! c075d7e2a53706f0aad89a0eb0a8557d  gcc/testsuite/gcc.c-torture/compile/920520-1.c
  405b153e9d3a5a57da05e628d3914e24  gcc/testsuite/gcc.c-torture/compile/920521-1.c
  9a16272f8323906af4c9a34c181d6596  gcc/testsuite/gcc.c-torture/compile/920529-1.c
  aa1427bdf230c07137e97422e052cec4  gcc/testsuite/gcc.c-torture/compile/920608-1.c
--- 24238,24244 ----
  60492beefa479246de9e660297e714d2  gcc/testsuite/gcc.c-torture/compile/920501-9.c
  b4c19ce1711eda917bf5173118f17f2e  gcc/testsuite/gcc.c-torture/compile/920502-1.c
  f8a4a7cdd10bff2f497ead072397e806  gcc/testsuite/gcc.c-torture/compile/920502-2.c
! 583de640e56e501f1c8b9b53a7b0a1d9  gcc/testsuite/gcc.c-torture/compile/920520-1.c
  405b153e9d3a5a57da05e628d3914e24  gcc/testsuite/gcc.c-torture/compile/920521-1.c
  9a16272f8323906af4c9a34c181d6596  gcc/testsuite/gcc.c-torture/compile/920529-1.c
  aa1427bdf230c07137e97422e052cec4  gcc/testsuite/gcc.c-torture/compile/920608-1.c
*************** d5a819c893100ddb0e855fc74d121532  gcc/te
*** 23109,23115 ****
  7285f2c12826e79e8991a7ef882099c0  gcc/testsuite/gcc.c-torture/compile/920710-2.c
  ae7892ff9be94276e65c533f5d5182d1  gcc/testsuite/gcc.c-torture/compile/920711-1.c
  aaa8f208a01348f3ee5052c6831f05f4  gcc/testsuite/gcc.c-torture/compile/920721-1.c
! 83374c86e2e8e73571265c7050cad790  gcc/testsuite/gcc.c-torture/compile/920723-1.c
  2d992e7722d12fd859dec5aac58e0d46  gcc/testsuite/gcc.c-torture/compile/920729-1.c
  8cdfcc391165a0c03ef18277d0b33cb0  gcc/testsuite/gcc.c-torture/compile/920806-1.c
  735d9899a051cc22605f4da678fb1469  gcc/testsuite/gcc.c-torture/compile/920808-1.c
--- 24257,24263 ----
  7285f2c12826e79e8991a7ef882099c0  gcc/testsuite/gcc.c-torture/compile/920710-2.c
  ae7892ff9be94276e65c533f5d5182d1  gcc/testsuite/gcc.c-torture/compile/920711-1.c
  aaa8f208a01348f3ee5052c6831f05f4  gcc/testsuite/gcc.c-torture/compile/920721-1.c
! d545ab74c156e29a93670d933dfc8e95  gcc/testsuite/gcc.c-torture/compile/920723-1.c
  2d992e7722d12fd859dec5aac58e0d46  gcc/testsuite/gcc.c-torture/compile/920729-1.c
  8cdfcc391165a0c03ef18277d0b33cb0  gcc/testsuite/gcc.c-torture/compile/920806-1.c
  735d9899a051cc22605f4da678fb1469  gcc/testsuite/gcc.c-torture/compile/920808-1.c
*************** ffaab334b153179900cb11e90ac8a7f5  gcc/te
*** 23173,23179 ****
  40f9a6d5b4a8729314ef8f7c55abc6c4  gcc/testsuite/gcc.c-torture/compile/930503-1.c
  33c1de505421e4c1211f698db3e15a21  gcc/testsuite/gcc.c-torture/compile/930503-2.c
  1dbbdf0fc602c4d0d9c3f8a015730cd0  gcc/testsuite/gcc.c-torture/compile/930506-1.c
! 2bd21732171ac068e4ab6cb43d263aa4  gcc/testsuite/gcc.c-torture/compile/930506-2.c
  a18b126d1d15e183372546a549da893f  gcc/testsuite/gcc.c-torture/compile/930510-1.c
  e74e79ee49510666122e6a9ede279f20  gcc/testsuite/gcc.c-torture/compile/930513-1.c
  940407735c2b61679008f3966c688887  gcc/testsuite/gcc.c-torture/compile/930513-2.c
--- 24321,24327 ----
  40f9a6d5b4a8729314ef8f7c55abc6c4  gcc/testsuite/gcc.c-torture/compile/930503-1.c
  33c1de505421e4c1211f698db3e15a21  gcc/testsuite/gcc.c-torture/compile/930503-2.c
  1dbbdf0fc602c4d0d9c3f8a015730cd0  gcc/testsuite/gcc.c-torture/compile/930506-1.c
! d9a9138c93f3d3335fec250ca2b6e7a1  gcc/testsuite/gcc.c-torture/compile/930506-2.c
  a18b126d1d15e183372546a549da893f  gcc/testsuite/gcc.c-torture/compile/930510-1.c
  e74e79ee49510666122e6a9ede279f20  gcc/testsuite/gcc.c-torture/compile/930513-1.c
  940407735c2b61679008f3966c688887  gcc/testsuite/gcc.c-torture/compile/930513-2.c
*************** b719ad087c44e8b24156c7b7d9cb30c7  gcc/te
*** 23188,23194 ****
  d260fb241b5bc52b5b9936ee146b7710  gcc/testsuite/gcc.c-torture/compile/930607-1.c
  15f97d8b684256c856e086c624121930  gcc/testsuite/gcc.c-torture/compile/930611-1.c
  eadcad6ecf65a5972d20a967ffb0d00b  gcc/testsuite/gcc.c-torture/compile/930618-1.c
! 68c5100e2fe34afe21343f076b9130bd  gcc/testsuite/gcc.c-torture/compile/930621-1.c
  8665b18d4c8fe8f82df8bdc4478d88ea  gcc/testsuite/gcc.c-torture/compile/930623-1.c
  69d4728c7b1519af4bc98c617cdb1193  gcc/testsuite/gcc.c-torture/compile/930702-1.c
  2f328194c828cc3679272f1db3af7d28  gcc/testsuite/gcc.c-torture/compile/930926-1.c
--- 24336,24342 ----
  d260fb241b5bc52b5b9936ee146b7710  gcc/testsuite/gcc.c-torture/compile/930607-1.c
  15f97d8b684256c856e086c624121930  gcc/testsuite/gcc.c-torture/compile/930611-1.c
  eadcad6ecf65a5972d20a967ffb0d00b  gcc/testsuite/gcc.c-torture/compile/930618-1.c
! 9d85b13162c7158b84b84109c3b55254  gcc/testsuite/gcc.c-torture/compile/930621-1.c
  8665b18d4c8fe8f82df8bdc4478d88ea  gcc/testsuite/gcc.c-torture/compile/930623-1.c
  69d4728c7b1519af4bc98c617cdb1193  gcc/testsuite/gcc.c-torture/compile/930702-1.c
  2f328194c828cc3679272f1db3af7d28  gcc/testsuite/gcc.c-torture/compile/930926-1.c
*************** db5146ffe5025678a4ce338b3811d486  gcc/te
*** 23209,23215 ****
  565b57dd0462e5a127dfbdd8436a34b6  gcc/testsuite/gcc.c-torture/compile/941014-1.c
  8d7b03d56c22848c973f4eb20fb133d6  gcc/testsuite/gcc.c-torture/compile/941014-2.c
  a39b960a0b722d82b919fdd9bf64fc8f  gcc/testsuite/gcc.c-torture/compile/941014-3.c
! a74485d64e3a82e68372c1f164268987  gcc/testsuite/gcc.c-torture/compile/941014-4.c
  692310b1928680b9d93500f3c58b1a6d  gcc/testsuite/gcc.c-torture/compile/941019-1.c
  2b8f65fdfe1069a3d2c1f13dca1fec9e  gcc/testsuite/gcc.c-torture/compile/941111-1.c
  ff829af1ac8d032f194ed454cf653874  gcc/testsuite/gcc.c-torture/compile/941113-1.c
--- 24357,24363 ----
  565b57dd0462e5a127dfbdd8436a34b6  gcc/testsuite/gcc.c-torture/compile/941014-1.c
  8d7b03d56c22848c973f4eb20fb133d6  gcc/testsuite/gcc.c-torture/compile/941014-2.c
  a39b960a0b722d82b919fdd9bf64fc8f  gcc/testsuite/gcc.c-torture/compile/941014-3.c
! f5f63ab097ef88aa1a9649b17aae6653  gcc/testsuite/gcc.c-torture/compile/941014-4.c
  692310b1928680b9d93500f3c58b1a6d  gcc/testsuite/gcc.c-torture/compile/941019-1.c
  2b8f65fdfe1069a3d2c1f13dca1fec9e  gcc/testsuite/gcc.c-torture/compile/941111-1.c
  ff829af1ac8d032f194ed454cf653874  gcc/testsuite/gcc.c-torture/compile/941113-1.c
*************** adc4179398474fd9c1893c3104cf11aa  gcc/te
*** 23260,23266 ****
  f110e0c441a6c9777ed2055c1dab53ce  gcc/testsuite/gcc.c-torture/compile/980329-1.c
  5807a9f9b3202a882e305630830cb7e0  gcc/testsuite/gcc.c-torture/compile/980408-1.c
  b436f1d153752a000970160938982a23  gcc/testsuite/gcc.c-torture/compile/980504-1.c
! c63def48e06d17fc298be13efb07eb57  gcc/testsuite/gcc.c-torture/compile/980506-1.c
  f3632d133ba0bc33836631ec87620296  gcc/testsuite/gcc.c-torture/compile/980506-2.c
  3de9c2d44966efa71581cf6f2dec7800  gcc/testsuite/gcc.c-torture/compile/980511-1.c
  c7a2dfbdf00a75892efcfd131f9a4885  gcc/testsuite/gcc.c-torture/compile/980701-1.c
--- 24408,24414 ----
  f110e0c441a6c9777ed2055c1dab53ce  gcc/testsuite/gcc.c-torture/compile/980329-1.c
  5807a9f9b3202a882e305630830cb7e0  gcc/testsuite/gcc.c-torture/compile/980408-1.c
  b436f1d153752a000970160938982a23  gcc/testsuite/gcc.c-torture/compile/980504-1.c
! f6c6e7c283e73ea08a4f01808038d8bf  gcc/testsuite/gcc.c-torture/compile/980506-1.c
  f3632d133ba0bc33836631ec87620296  gcc/testsuite/gcc.c-torture/compile/980506-2.c
  3de9c2d44966efa71581cf6f2dec7800  gcc/testsuite/gcc.c-torture/compile/980511-1.c
  c7a2dfbdf00a75892efcfd131f9a4885  gcc/testsuite/gcc.c-torture/compile/980701-1.c
*************** bc9c0a9ae97846c517572ba9b0764f8e  gcc/te
*** 23303,23309 ****
  7240e06c4f7d03240bd7057cfdb7daa3  gcc/testsuite/gcc.c-torture/compile/991213-2.c
  8ec57dd9a0aa3b5c9828568e7057e17b  gcc/testsuite/gcc.c-torture/compile/991213-3.c
  588f9cde690cb78596b73b4bacfaac90  gcc/testsuite/gcc.c-torture/compile/991214-1.c
! 1b6afc9a73af54ad294d9c62be1b5a7e  gcc/testsuite/gcc.c-torture/compile/991214-2.c
  50c6e1dbaf3a5fc32d750e605e86e1d9  gcc/testsuite/gcc.c-torture/compile/991229-1.c
  6acbba8bbbcd6480232d4949dde69510  gcc/testsuite/gcc.c-torture/compile/991229-2.c
  fb4852342b5ce5f1c204522127ef6dec  gcc/testsuite/gcc.c-torture/compile/991229-3.c
--- 24451,24457 ----
  7240e06c4f7d03240bd7057cfdb7daa3  gcc/testsuite/gcc.c-torture/compile/991213-2.c
  8ec57dd9a0aa3b5c9828568e7057e17b  gcc/testsuite/gcc.c-torture/compile/991213-3.c
  588f9cde690cb78596b73b4bacfaac90  gcc/testsuite/gcc.c-torture/compile/991214-1.c
! cdeab62df98fde4454232ae8ca6e497d  gcc/testsuite/gcc.c-torture/compile/991214-2.c
  50c6e1dbaf3a5fc32d750e605e86e1d9  gcc/testsuite/gcc.c-torture/compile/991229-1.c
  6acbba8bbbcd6480232d4949dde69510  gcc/testsuite/gcc.c-torture/compile/991229-2.c
  fb4852342b5ce5f1c204522127ef6dec  gcc/testsuite/gcc.c-torture/compile/991229-3.c
*************** fb80448ce2813cde659c29a4b6da9618  gcc/te
*** 23358,23364 ****
  cbe67a4212b7d85b023f62848033fa31  gcc/testsuite/gcc.c-torture/compile/arr.c
  2686caedfece44eebd26639e72abcc2a  gcc/testsuite/gcc.c-torture/compile/as.c
  321496eed48efe49415b2ae94d72a5e5  gcc/testsuite/gcc.c-torture/compile/ase.c
! 2971994819be37d5505b850906980c64  gcc/testsuite/gcc.c-torture/compile/asmgoto-1.c
  4f3a6a3945ac2d0657452e368e414b3b  gcc/testsuite/gcc.c-torture/compile/b.c
  d351eb0aef889fc366a8342f32ae1358  gcc/testsuite/gcc.c-torture/compile/b1.c
  b33b87bd4fa8d4bfab27492de9998c37  gcc/testsuite/gcc.c-torture/compile/b2.c
--- 24506,24512 ----
  cbe67a4212b7d85b023f62848033fa31  gcc/testsuite/gcc.c-torture/compile/arr.c
  2686caedfece44eebd26639e72abcc2a  gcc/testsuite/gcc.c-torture/compile/as.c
  321496eed48efe49415b2ae94d72a5e5  gcc/testsuite/gcc.c-torture/compile/ase.c
! 7f1bd05b409cd463e690dde1e88b8d88  gcc/testsuite/gcc.c-torture/compile/asmgoto-1.c
  4f3a6a3945ac2d0657452e368e414b3b  gcc/testsuite/gcc.c-torture/compile/b.c
  d351eb0aef889fc366a8342f32ae1358  gcc/testsuite/gcc.c-torture/compile/b1.c
  b33b87bd4fa8d4bfab27492de9998c37  gcc/testsuite/gcc.c-torture/compile/b2.c
*************** d3b953794799cfc45bcb4a6ab86511e6  gcc/te
*** 23371,23377 ****
  f2929fcf7c136c2d6649a619fcd7bf95  gcc/testsuite/gcc.c-torture/compile/bbb.c
  af12b2948b8b8f2074ad5cc4ef553cfa  gcc/testsuite/gcc.c-torture/compile/bc.c
  77d21c94a953a6e368f72767f5dfa7d1  gcc/testsuite/gcc.c-torture/compile/bcopy-1.c
! 6ec1f8ae36ece31e5f2b854ed6c523df  gcc/testsuite/gcc.c-torture/compile/bcopy.c
  c3ecb04312d959698eece819a017618b  gcc/testsuite/gcc.c-torture/compile/bf.c
  0aed9f2a176713432244a50d79966162  gcc/testsuite/gcc.c-torture/compile/bfins.c
  9ffd112da1c9830ccbce60d02bd034af  gcc/testsuite/gcc.c-torture/compile/bfx.c
--- 24519,24525 ----
  f2929fcf7c136c2d6649a619fcd7bf95  gcc/testsuite/gcc.c-torture/compile/bbb.c
  af12b2948b8b8f2074ad5cc4ef553cfa  gcc/testsuite/gcc.c-torture/compile/bc.c
  77d21c94a953a6e368f72767f5dfa7d1  gcc/testsuite/gcc.c-torture/compile/bcopy-1.c
! cb732315b322650f333d178e76270025  gcc/testsuite/gcc.c-torture/compile/bcopy.c
  c3ecb04312d959698eece819a017618b  gcc/testsuite/gcc.c-torture/compile/bf.c
  0aed9f2a176713432244a50d79966162  gcc/testsuite/gcc.c-torture/compile/bfins.c
  9ffd112da1c9830ccbce60d02bd034af  gcc/testsuite/gcc.c-torture/compile/bfx.c
*************** f5766202f628b43d0fac0910adc0eecb  gcc/te
*** 23407,23413 ****
  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
! d1b5013487770717a0d169c3006b5083  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
--- 24555,24561 ----
  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
! a20f4bd769fa8797a565d07884245ae2  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
*************** f40c6f7bd73f37a2260b985ee6e8115c  gcc/te
*** 23485,23491 ****
  1e85d243005b2df86e7d1193bc29be15  gcc/testsuite/gcc.c-torture/compile/jmp.c
  6cc66de3161a71f9b223fda5d5702470  gcc/testsuite/gcc.c-torture/compile/jumptab.c
  36716de424f733c9965de5c0ca32e32d  gcc/testsuite/gcc.c-torture/compile/l.c
! 92828ab833080690e4b5adcd6fbdd6be  gcc/testsuite/gcc.c-torture/compile/labels-1.c
  2388e4f51a84a7b9ba15446e988cce7e  gcc/testsuite/gcc.c-torture/compile/labels-2.c
  ddeca8d5f24d99778a3156c5bce03952  gcc/testsuite/gcc.c-torture/compile/labels-3.c
  19e9af9cfb39df1c7215959778fb5e50  gcc/testsuite/gcc.c-torture/compile/layout.c
--- 24633,24639 ----
  1e85d243005b2df86e7d1193bc29be15  gcc/testsuite/gcc.c-torture/compile/jmp.c
  6cc66de3161a71f9b223fda5d5702470  gcc/testsuite/gcc.c-torture/compile/jumptab.c
  36716de424f733c9965de5c0ca32e32d  gcc/testsuite/gcc.c-torture/compile/l.c
! b62e9552262b358d6ef11fcba7215d29  gcc/testsuite/gcc.c-torture/compile/labels-1.c
  2388e4f51a84a7b9ba15446e988cce7e  gcc/testsuite/gcc.c-torture/compile/labels-2.c
  ddeca8d5f24d99778a3156c5bce03952  gcc/testsuite/gcc.c-torture/compile/labels-3.c
  19e9af9cfb39df1c7215959778fb5e50  gcc/testsuite/gcc.c-torture/compile/layout.c
*************** dfbc2317c7fa9d675ee5c2302422d2b6  gcc/te
*** 23497,23509 ****
  fe23d373fefbb1f73641cf2629aafdf5  gcc/testsuite/gcc.c-torture/compile/limits-enumconst.c
  afe4aef5d3378c3de0bf57047eb44e18  gcc/testsuite/gcc.c-torture/compile/limits-exprparen.c
  5b7186b86538dc952f4c95318fdce09c  gcc/testsuite/gcc.c-torture/compile/limits-externalid.c
! d555f52966589456bab3e12cb6068ede  gcc/testsuite/gcc.c-torture/compile/limits-externdecl.c
  36d72264f5e696b511dde1637d841085  gcc/testsuite/gcc.c-torture/compile/limits-fnargs.c
! e7af07954947028adb3ddf6a4484de79  gcc/testsuite/gcc.c-torture/compile/limits-fndefn.c
  e654525b67ca3025d522d3690364a827  gcc/testsuite/gcc.c-torture/compile/limits-idexternal.c
  8e1beed96cc2ce74ced2ed0fb7ca7126  gcc/testsuite/gcc.c-torture/compile/limits-idinternal.c
  23cd80613f5e759de2773be4b23d4989  gcc/testsuite/gcc.c-torture/compile/limits-pointer.c
! 46ec57c50d1ad98757745610f94c67cc  gcc/testsuite/gcc.c-torture/compile/limits-stringlit.c
  b67dbf324c18ccf7e0862dfdbc50d578  gcc/testsuite/gcc.c-torture/compile/limits-structmem.c
  3f13cbf8b77b39858d22320bd2d1123e  gcc/testsuite/gcc.c-torture/compile/limits-structnest.c
  d14b961639a385a11585d9fc750ffcdc  gcc/testsuite/gcc.c-torture/compile/ll1.c
--- 24645,24657 ----
  fe23d373fefbb1f73641cf2629aafdf5  gcc/testsuite/gcc.c-torture/compile/limits-enumconst.c
  afe4aef5d3378c3de0bf57047eb44e18  gcc/testsuite/gcc.c-torture/compile/limits-exprparen.c
  5b7186b86538dc952f4c95318fdce09c  gcc/testsuite/gcc.c-torture/compile/limits-externalid.c
! 800e0daaebd8e1d18de596c5dbdb5372  gcc/testsuite/gcc.c-torture/compile/limits-externdecl.c
  36d72264f5e696b511dde1637d841085  gcc/testsuite/gcc.c-torture/compile/limits-fnargs.c
! 3be6db2cc14c44079d96611a1bdfa146  gcc/testsuite/gcc.c-torture/compile/limits-fndefn.c
  e654525b67ca3025d522d3690364a827  gcc/testsuite/gcc.c-torture/compile/limits-idexternal.c
  8e1beed96cc2ce74ced2ed0fb7ca7126  gcc/testsuite/gcc.c-torture/compile/limits-idinternal.c
  23cd80613f5e759de2773be4b23d4989  gcc/testsuite/gcc.c-torture/compile/limits-pointer.c
! da9a736aa4b6d863a9e395f98633ef6c  gcc/testsuite/gcc.c-torture/compile/limits-stringlit.c
  b67dbf324c18ccf7e0862dfdbc50d578  gcc/testsuite/gcc.c-torture/compile/limits-structmem.c
  3f13cbf8b77b39858d22320bd2d1123e  gcc/testsuite/gcc.c-torture/compile/limits-structnest.c
  d14b961639a385a11585d9fc750ffcdc  gcc/testsuite/gcc.c-torture/compile/ll1.c
*************** fd93380a9881eb6508147c42a6172bec  gcc/te
*** 23528,23534 ****
  9daac1b0021dff71e0ae56f6659a0361  gcc/testsuite/gcc.c-torture/compile/mdouble.c
  9d0a8ab15e7c5659ac2e435cb87c7779  gcc/testsuite/gcc.c-torture/compile/memcpy-1.c
  94ad12f50d9a0f18fe19d3206dab233f  gcc/testsuite/gcc.c-torture/compile/memcpy-2.c
! 125efd82df65f72bc69e0ace446a9f67  gcc/testsuite/gcc.c-torture/compile/memtst.c
  5e1733efc8e0d2b62a43347674159957  gcc/testsuite/gcc.c-torture/compile/mipscop-1.c
  a4192e166613ad9f81ef118d2e8dcb43  gcc/testsuite/gcc.c-torture/compile/mipscop-2.c
  b5d6f72a8c84164a62755fb5fdb36d62  gcc/testsuite/gcc.c-torture/compile/mipscop-3.c
--- 24676,24682 ----
  9daac1b0021dff71e0ae56f6659a0361  gcc/testsuite/gcc.c-torture/compile/mdouble.c
  9d0a8ab15e7c5659ac2e435cb87c7779  gcc/testsuite/gcc.c-torture/compile/memcpy-1.c
  94ad12f50d9a0f18fe19d3206dab233f  gcc/testsuite/gcc.c-torture/compile/memcpy-2.c
! 72ea905ae7a135abd6943abdd80364cf  gcc/testsuite/gcc.c-torture/compile/memtst.c
  5e1733efc8e0d2b62a43347674159957  gcc/testsuite/gcc.c-torture/compile/mipscop-1.c
  a4192e166613ad9f81ef118d2e8dcb43  gcc/testsuite/gcc.c-torture/compile/mipscop-2.c
  b5d6f72a8c84164a62755fb5fdb36d62  gcc/testsuite/gcc.c-torture/compile/mipscop-3.c
*************** a833ba048d64a496818f3fd82693fb4f  gcc/te
*** 23540,23546 ****
  895535bea7c076825005db50ca6d6044  gcc/testsuite/gcc.c-torture/compile/move.c
  ad44abd5139c812491d95b3fd8b43a5f  gcc/testsuite/gcc.c-torture/compile/move_qhi.c
  1be6f7f5c865667bf599ceebe817bd1d  gcc/testsuite/gcc.c-torture/compile/mregtst.c
! ed372105a868fc601250fa6c093a7e6d  gcc/testsuite/gcc.c-torture/compile/msp.c
  c90a0965e111bdc1a13b19df5bbac56b  gcc/testsuite/gcc.c-torture/compile/mtst.c
  e7e3c2817e154e9dfd37aef27f2c65ae  gcc/testsuite/gcc.c-torture/compile/mu.c
  35c337b62d494f533e8a7b301cbd352c  gcc/testsuite/gcc.c-torture/compile/mul.c
--- 24688,24694 ----
  895535bea7c076825005db50ca6d6044  gcc/testsuite/gcc.c-torture/compile/move.c
  ad44abd5139c812491d95b3fd8b43a5f  gcc/testsuite/gcc.c-torture/compile/move_qhi.c
  1be6f7f5c865667bf599ceebe817bd1d  gcc/testsuite/gcc.c-torture/compile/mregtst.c
! 429694d61b4b7cb816fcd33875443931  gcc/testsuite/gcc.c-torture/compile/msp.c
  c90a0965e111bdc1a13b19df5bbac56b  gcc/testsuite/gcc.c-torture/compile/mtst.c
  e7e3c2817e154e9dfd37aef27f2c65ae  gcc/testsuite/gcc.c-torture/compile/mu.c
  35c337b62d494f533e8a7b301cbd352c  gcc/testsuite/gcc.c-torture/compile/mul.c
*************** dabad41f6a964efb6e69e11ec99e2fe1  gcc/te
*** 23593,23599 ****
  a006256fb385251816337c8b0552856d  gcc/testsuite/gcc.c-torture/compile/pr18291.c
  94a3a67b41b3d1d739474b1f36b48495  gcc/testsuite/gcc.c-torture/compile/pr18299-1.c
  c326329b4c5f916450c39656200ac2e8  gcc/testsuite/gcc.c-torture/compile/pr18712.c
! fce9d3c914662e854ce4fd8d7ff46a81  gcc/testsuite/gcc.c-torture/compile/pr18903.c
  82bf258119e71bcba319c27851d7eba2  gcc/testsuite/gcc.c-torture/compile/pr19080.c
  286651cc31c341c53927f7c592612b8b  gcc/testsuite/gcc.c-torture/compile/pr19121.c
  5288b3384781b61527cac7a14179984a  gcc/testsuite/gcc.c-torture/compile/pr19357.c
--- 24741,24747 ----
  a006256fb385251816337c8b0552856d  gcc/testsuite/gcc.c-torture/compile/pr18291.c
  94a3a67b41b3d1d739474b1f36b48495  gcc/testsuite/gcc.c-torture/compile/pr18299-1.c
  c326329b4c5f916450c39656200ac2e8  gcc/testsuite/gcc.c-torture/compile/pr18712.c
! 9296c908be5102614c47051dcd0145a0  gcc/testsuite/gcc.c-torture/compile/pr18903.c
  82bf258119e71bcba319c27851d7eba2  gcc/testsuite/gcc.c-torture/compile/pr19080.c
  286651cc31c341c53927f7c592612b8b  gcc/testsuite/gcc.c-torture/compile/pr19121.c
  5288b3384781b61527cac7a14179984a  gcc/testsuite/gcc.c-torture/compile/pr19357.c
*************** e99a39e13086a19999f30cdaee8b0209  gcc/te
*** 23735,23741 ****
  5c92884c3761eec90789d023f32cc91b  gcc/testsuite/gcc.c-torture/compile/pr35006.c
  a4327eb545b3dce495f11857bcda25fd  gcc/testsuite/gcc.c-torture/compile/pr35043.c
  3f5634d37754a1bbe5c1bfb62791811b  gcc/testsuite/gcc.c-torture/compile/pr35171.c
! 801017517a718c768a3492ae54b0294c  gcc/testsuite/gcc.c-torture/compile/pr35318.c
  bfed8319cb606c75dc2da21298bf81ad  gcc/testsuite/gcc.c-torture/compile/pr35431.c
  03811b5c6f8a045b03dbc67e3b452b4c  gcc/testsuite/gcc.c-torture/compile/pr35432.c
  599c4dbd1bc46f05cd773573162e04df  gcc/testsuite/gcc.c-torture/compile/pr35468.c
--- 24883,24889 ----
  5c92884c3761eec90789d023f32cc91b  gcc/testsuite/gcc.c-torture/compile/pr35006.c
  a4327eb545b3dce495f11857bcda25fd  gcc/testsuite/gcc.c-torture/compile/pr35043.c
  3f5634d37754a1bbe5c1bfb62791811b  gcc/testsuite/gcc.c-torture/compile/pr35171.c
! 47802deb4d8181e4991bd58970a74efd  gcc/testsuite/gcc.c-torture/compile/pr35318.c
  bfed8319cb606c75dc2da21298bf81ad  gcc/testsuite/gcc.c-torture/compile/pr35431.c
  03811b5c6f8a045b03dbc67e3b452b4c  gcc/testsuite/gcc.c-torture/compile/pr35432.c
  599c4dbd1bc46f05cd773573162e04df  gcc/testsuite/gcc.c-torture/compile/pr35468.c
*************** a70c7b11edd708f7a16d3d6ee67f7d02  gcc/te
*** 23860,23866 ****
  790b88a115358c0a2f2c2d60a1361160  gcc/testsuite/gcc.c-torture/compile/pr41016.c
  5efc15ec6db15d0426441cfc0a1f1c7a  gcc/testsuite/gcc.c-torture/compile/pr41101.c
  19b5bed78115cdc5ec049b3bda2b856b  gcc/testsuite/gcc.c-torture/compile/pr41163.c
! b7404b55a9479584222f1c3c075856c5  gcc/testsuite/gcc.c-torture/compile/pr41181.c
  675552e85417ccfcb10a0c5d92108242  gcc/testsuite/gcc.c-torture/compile/pr41182-1.c
  68971be1b3a07dafd36a6967684bd97e  gcc/testsuite/gcc.c-torture/compile/pr41282.c
  8f31a448a279f2be85a8ece110de5810  gcc/testsuite/gcc.c-torture/compile/pr41469.c
--- 25008,25014 ----
  790b88a115358c0a2f2c2d60a1361160  gcc/testsuite/gcc.c-torture/compile/pr41016.c
  5efc15ec6db15d0426441cfc0a1f1c7a  gcc/testsuite/gcc.c-torture/compile/pr41101.c
  19b5bed78115cdc5ec049b3bda2b856b  gcc/testsuite/gcc.c-torture/compile/pr41163.c
! c2c9c5f2f20f0318008a23ffafbe6488  gcc/testsuite/gcc.c-torture/compile/pr41181.c
  675552e85417ccfcb10a0c5d92108242  gcc/testsuite/gcc.c-torture/compile/pr41182-1.c
  68971be1b3a07dafd36a6967684bd97e  gcc/testsuite/gcc.c-torture/compile/pr41282.c
  8f31a448a279f2be85a8ece110de5810  gcc/testsuite/gcc.c-torture/compile/pr41469.c
*************** bc7952c9f1a35ff2d21a78e0b71cbbdf  gcc/te
*** 23947,23953 ****
  4abfafd39eb3e2c8ab6f3308b1efb389  gcc/testsuite/gcc.c-torture/compile/pr46360.c
  45151fdd5e68bed416b3b0589e3edee5  gcc/testsuite/gcc.c-torture/compile/pr46388.c
  6d35d1410ba90bfec7f47c5f310cb9d0  gcc/testsuite/gcc.c-torture/compile/pr46461.c
! 36944a20976c3a9960727a311466c7cb  gcc/testsuite/gcc.c-torture/compile/pr46534.c
  36d04fc43ead7dde287d23d5918e89c0  gcc/testsuite/gcc.c-torture/compile/pr46547-1.c
  325896b6579d584049aea2ec436cab7c  gcc/testsuite/gcc.c-torture/compile/pr46637.c
  b70e5c59221a0b298f000ed1dc9bb385  gcc/testsuite/gcc.c-torture/compile/pr46832.c
--- 25095,25101 ----
  4abfafd39eb3e2c8ab6f3308b1efb389  gcc/testsuite/gcc.c-torture/compile/pr46360.c
  45151fdd5e68bed416b3b0589e3edee5  gcc/testsuite/gcc.c-torture/compile/pr46388.c
  6d35d1410ba90bfec7f47c5f310cb9d0  gcc/testsuite/gcc.c-torture/compile/pr46461.c
! 184784124e4bdef6d7ab0f6a4f6b6a3a  gcc/testsuite/gcc.c-torture/compile/pr46534.c
  36d04fc43ead7dde287d23d5918e89c0  gcc/testsuite/gcc.c-torture/compile/pr46547-1.c
  325896b6579d584049aea2ec436cab7c  gcc/testsuite/gcc.c-torture/compile/pr46637.c
  b70e5c59221a0b298f000ed1dc9bb385  gcc/testsuite/gcc.c-torture/compile/pr46832.c
*************** f4b249b36b9bee9f40c078c27d1258ea  gcc/te
*** 24183,24193 ****
  f49fb8a55a8bc186f2204980c5dcedd4  gcc/testsuite/gcc.c-torture/compile/pr80357.c
  7fd5ab05599fe6b3085d234e4ea017db  gcc/testsuite/gcc.c-torture/compile/pr80422.c
  31fc703875b35306db8bbc4f8fe2610d  gcc/testsuite/gcc.c-torture/compile/pr80443.c
  1bb1438d7ef7e7637f555205f23d9423  gcc/testsuite/gcc.c-torture/compile/pr81207.c
  d2821401144573975d9f5852f6fc676b  gcc/testsuite/gcc.c-torture/compile/pr81553.c
! 196daa7de18c0a8ecd7788d3e482cc7b  gcc/testsuite/gcc.c-torture/compile/pr82337.c
  793a4f5f0940ddfbb7bf0f7247486342  gcc/testsuite/gcc.c-torture/compile/pr82549.c
  e7f459c4af5a8e616ac0225605a4c7c0  gcc/testsuite/gcc.c-torture/compile/pr83448.c
  9611ffa8936d9c80d0a9ccde8dd093b2  gcc/testsuite/gcc.c-torture/compile/pret-arg.c
  b9e6ce52b90320c1c3803c25113844c5  gcc/testsuite/gcc.c-torture/compile/pta-1.c
  ed716c1d1727fc2c748162e0cbc4ee47  gcc/testsuite/gcc.c-torture/compile/ptr-conv-1.c
--- 25331,25374 ----
  f49fb8a55a8bc186f2204980c5dcedd4  gcc/testsuite/gcc.c-torture/compile/pr80357.c
  7fd5ab05599fe6b3085d234e4ea017db  gcc/testsuite/gcc.c-torture/compile/pr80422.c
  31fc703875b35306db8bbc4f8fe2610d  gcc/testsuite/gcc.c-torture/compile/pr80443.c
+ 74d4c300433d6919cb0ae9a9a4e5a462  gcc/testsuite/gcc.c-torture/compile/pr81003.c
  1bb1438d7ef7e7637f555205f23d9423  gcc/testsuite/gcc.c-torture/compile/pr81207.c
+ e74f61acb80ed341f8d48c2ca35eed33  gcc/testsuite/gcc.c-torture/compile/pr81262.c
+ e62083fe412da5c50c1b5367402c5bb4  gcc/testsuite/gcc.c-torture/compile/pr81290.c
+ e77970ecb0edd205d312a0bb41cc8ac2  gcc/testsuite/gcc.c-torture/compile/pr81360.c
  d2821401144573975d9f5852f6fc676b  gcc/testsuite/gcc.c-torture/compile/pr81553.c
! 369082c84deea8ce5d06d932cadd4145  gcc/testsuite/gcc.c-torture/compile/pr81595.c
! 3dbb45a1823f82483ea16e9cbf36fb5e  gcc/testsuite/gcc.c-torture/compile/pr82052.c
! c66006d27d9a3bb3a5e84e943d10d273  gcc/testsuite/gcc.c-torture/compile/pr82096.c
! ddef63778a2af17c7b6719d4b60a0a60  gcc/testsuite/gcc.c-torture/compile/pr82337.c
! b1098cab2c4a8035c39450c097800ad2  gcc/testsuite/gcc.c-torture/compile/pr82381.c
! 6aed60c7fe6168de20a35f4a98d9d306  gcc/testsuite/gcc.c-torture/compile/pr82389.c
  793a4f5f0940ddfbb7bf0f7247486342  gcc/testsuite/gcc.c-torture/compile/pr82549.c
+ 4dde9199e05d97c3a12279fc4df006c5  gcc/testsuite/gcc.c-torture/compile/pr82816.c
+ 9416bba195d787f52104d55d5ba32f3c  gcc/testsuite/gcc.c-torture/compile/pr82838.c
+ cf75d7c413d3d683bf4554c4893b52b8  gcc/testsuite/gcc.c-torture/compile/pr82875.c
+ c0e8c2714ac70d507f78a1178adf86cd  gcc/testsuite/gcc.c-torture/compile/pr82879.c
+ 27e740102c35556b9e44b4dca0223a85  gcc/testsuite/gcc.c-torture/compile/pr82913.c
+ 959a1f6ee99272eaebe65620d3ee1875  gcc/testsuite/gcc.c-torture/compile/pr83051-2.c
+ 7836a61d000aaaa21cb999e1d2d86bfa  gcc/testsuite/gcc.c-torture/compile/pr83051.c
+ 5eda9df2bbaeab95e5faf93c4ce3be6e  gcc/testsuite/gcc.c-torture/compile/pr83069.c
+ 3548758183b01e15047e314437b617fe  gcc/testsuite/gcc.c-torture/compile/pr83104.c
+ f74c5382e840fc04557f9406abbf7cc8  gcc/testsuite/gcc.c-torture/compile/pr83164.c
+ 7ae3102a4192dfb8687bc9e9b496ca68  gcc/testsuite/gcc.c-torture/compile/pr83222.c
  e7f459c4af5a8e616ac0225605a4c7c0  gcc/testsuite/gcc.c-torture/compile/pr83448.c
+ 3bcc503fc40dbeed9b76c5e6db8e3816  gcc/testsuite/gcc.c-torture/compile/pr83487.c
+ 58495ddabacd76c55042260d8e4f4962  gcc/testsuite/gcc.c-torture/compile/pr83510.c
+ 285fb13f0a67d5136a5f83631ee41eef  gcc/testsuite/gcc.c-torture/compile/pr83547.c
+ 722068613484abb5172f5eb021d06c1d  gcc/testsuite/gcc.c-torture/compile/pr83575.c
+ 24c5103483543644e127eda1d695ed87  gcc/testsuite/gcc.c-torture/compile/pr84111.c
+ 6653345387e8315c9c4d66e73583fcf4  gcc/testsuite/gcc.c-torture/compile/pr84136.c
+ 3eb4fea21fdf92acccddbf806adc7973  gcc/testsuite/gcc.c-torture/compile/pr84178-1.c
+ 3922ce0e50bd66f1f145e8668f8fe398  gcc/testsuite/gcc.c-torture/compile/pr84305.c
+ 486cfbfb0a89e2546aa7778b27c28024  gcc/testsuite/gcc.c-torture/compile/pr84383.c
+ 88a8aece4f21f4a06af4abec9669bc53  gcc/testsuite/gcc.c-torture/compile/pr84425.c
+ 365283cdff7a6e895b67e7712272be09  gcc/testsuite/gcc.c-torture/compile/pr84845.c
+ 1e2f6944d3ccc384e22d3ecf9dd66f9e  gcc/testsuite/gcc.c-torture/compile/pr84860.c
+ 8462992de37494ba685e9ffa9a121757  gcc/testsuite/gcc.c-torture/compile/pr84960.c
  9611ffa8936d9c80d0a9ccde8dd093b2  gcc/testsuite/gcc.c-torture/compile/pret-arg.c
  b9e6ce52b90320c1c3803c25113844c5  gcc/testsuite/gcc.c-torture/compile/pta-1.c
  ed716c1d1727fc2c748162e0cbc4ee47  gcc/testsuite/gcc.c-torture/compile/ptr-conv-1.c
*************** fa701bfc6294d864690c8f63beb38155  gcc/te
*** 24196,24201 ****
--- 25377,25383 ----
  15f0e704c45a36af4a5dccfc48e33714  gcc/testsuite/gcc.c-torture/compile/q.c
  db9fd2a38c99463057471aab0cba1303  gcc/testsuite/gcc.c-torture/compile/r.c
  59a0dd91d46e48bc486fb7fa31e01e9e  gcc/testsuite/gcc.c-torture/compile/r1.c
+ 10f361818d3ae0cefaa52d80f488dd68  gcc/testsuite/gcc.c-torture/compile/regs-arg-size.c
  7b033723313547a1d0dad2fd1cafe962  gcc/testsuite/gcc.c-torture/compile/rel.c
  8f534e478b23398281f680a4473b479a  gcc/testsuite/gcc.c-torture/compile/rmsc.c
  da8918780d8e4c4e17393e7fde53fb66  gcc/testsuite/gcc.c-torture/compile/round.c
*************** af6534ad23d8784f5133c8ae82991810  gcc/te
*** 24234,24239 ****
--- 25416,25422 ----
  3f1d40fe535905c095668255dd94dbdf  gcc/testsuite/gcc.c-torture/compile/speed.c
  68c4756a5e6657f7df9a8a02d6dda55e  gcc/testsuite/gcc.c-torture/compile/sra-1.c
  1fb17fb58efa11a8c2d892a6946321bc  gcc/testsuite/gcc.c-torture/compile/ssa-pre-1.c
+ 9033195528fa8dad0d8b344d47a0e952  gcc/testsuite/gcc.c-torture/compile/stack-check-1.c
  49fbb3c50078b64b22ced2e9db241130  gcc/testsuite/gcc.c-torture/compile/statement-expression-1.c
  3984f03f2913b4d4313709d27b57c803  gcc/testsuite/gcc.c-torture/compile/stor.c
  0e4f88f9d7731bcddc6b1e17a728989d  gcc/testsuite/gcc.c-torture/compile/store0.c
*************** f4772e6c906520190f7700ef4c4a9dd7  gcc/te
*** 24248,24254 ****
  be6e57b38137101675705c04949f38a6  gcc/testsuite/gcc.c-torture/compile/struct-non-lval-3.c
  9f8c044356d25c0a6a3db2a3ceabbf48  gcc/testsuite/gcc.c-torture/compile/structret.c
  8b44716999810175c4e2a77db5bc9a4a  gcc/testsuite/gcc.c-torture/compile/structs.c
! 2988bc89bc3838047b3d37e6604181a4  gcc/testsuite/gcc.c-torture/compile/stuct.c
  e3ec4cac3286e3bde15684b24a43bee0  gcc/testsuite/gcc.c-torture/compile/sub32.c
  d39dfba8904b6b3381e9d72fdf270488  gcc/testsuite/gcc.c-torture/compile/subcc.c
  e90694051aa24fc5854f58f048e5fde1  gcc/testsuite/gcc.c-torture/compile/subcse.c
--- 25431,25437 ----
  be6e57b38137101675705c04949f38a6  gcc/testsuite/gcc.c-torture/compile/struct-non-lval-3.c
  9f8c044356d25c0a6a3db2a3ceabbf48  gcc/testsuite/gcc.c-torture/compile/structret.c
  8b44716999810175c4e2a77db5bc9a4a  gcc/testsuite/gcc.c-torture/compile/structs.c
! c8301972a9fa87f3ba0621c3dc07bec0  gcc/testsuite/gcc.c-torture/compile/stuct.c
  e3ec4cac3286e3bde15684b24a43bee0  gcc/testsuite/gcc.c-torture/compile/sub32.c
  d39dfba8904b6b3381e9d72fdf270488  gcc/testsuite/gcc.c-torture/compile/subcc.c
  e90694051aa24fc5854f58f048e5fde1  gcc/testsuite/gcc.c-torture/compile/subcse.c
*************** edaa85577276110de4db2ab9b77627eb  gcc/te
*** 24373,24379 ****
  f53a3dde45d23ac2a99814a9bbb5e717  gcc/testsuite/gcc.c-torture/execute/20000815-1.c
  43de20a08cadc74431ab343056be6f4d  gcc/testsuite/gcc.c-torture/execute/20000818-1.c
  01ea9c9c802e733916ab9e2d3e4e1d9c  gcc/testsuite/gcc.c-torture/execute/20000819-1.c
! 2cf81f216be2b89725f6ac957af4dcf5  gcc/testsuite/gcc.c-torture/execute/20000822-1.c
  609e7acb7aa1bee1a79ff716a4998996  gcc/testsuite/gcc.c-torture/execute/20000910-1.c
  f5b504992a1fee57eaa99016aa4daf43  gcc/testsuite/gcc.c-torture/execute/20000910-2.c
  bb1998ea93150680a4262d3f585d6159  gcc/testsuite/gcc.c-torture/execute/20000914-1.c
--- 25556,25562 ----
  f53a3dde45d23ac2a99814a9bbb5e717  gcc/testsuite/gcc.c-torture/execute/20000815-1.c
  43de20a08cadc74431ab343056be6f4d  gcc/testsuite/gcc.c-torture/execute/20000818-1.c
  01ea9c9c802e733916ab9e2d3e4e1d9c  gcc/testsuite/gcc.c-torture/execute/20000819-1.c
! e0633ab05ebac3626fe16b36f92fa98e  gcc/testsuite/gcc.c-torture/execute/20000822-1.c
  609e7acb7aa1bee1a79ff716a4998996  gcc/testsuite/gcc.c-torture/execute/20000910-1.c
  f5b504992a1fee57eaa99016aa4daf43  gcc/testsuite/gcc.c-torture/execute/20000910-2.c
  bb1998ea93150680a4262d3f585d6159  gcc/testsuite/gcc.c-torture/execute/20000914-1.c
*************** ed86614e40654a0ceb2c9a42370eb7b9  gcc/te
*** 24434,24440 ****
  27cf1422b93a5254cb04535126f77cd8  gcc/testsuite/gcc.c-torture/execute/20010915-1.c
  6bfb42d94c0e6dfe9e15a1e7a5be76ce  gcc/testsuite/gcc.c-torture/execute/20010924-1.c
  be55fbd78d13701936c3319b7a1b96b5  gcc/testsuite/gcc.c-torture/execute/20010925-1.c
! 8916cbb6812410b89c890bf66abd2593  gcc/testsuite/gcc.c-torture/execute/20011008-3.c
  e4e26f8f8666b591e57d27bf4b5b9bed  gcc/testsuite/gcc.c-torture/execute/20011019-1.c
  63939d16da1a0c4f2d58b24cc8ffb80d  gcc/testsuite/gcc.c-torture/execute/20011024-1.c
  7b7b9e6841cad2fcd968e8c594afd1b2  gcc/testsuite/gcc.c-torture/execute/20011109-1.c
--- 25617,25623 ----
  27cf1422b93a5254cb04535126f77cd8  gcc/testsuite/gcc.c-torture/execute/20010915-1.c
  6bfb42d94c0e6dfe9e15a1e7a5be76ce  gcc/testsuite/gcc.c-torture/execute/20010924-1.c
  be55fbd78d13701936c3319b7a1b96b5  gcc/testsuite/gcc.c-torture/execute/20010925-1.c
! c98a2757d50ecbec44e525f67de09e55  gcc/testsuite/gcc.c-torture/execute/20011008-3.c
  e4e26f8f8666b591e57d27bf4b5b9bed  gcc/testsuite/gcc.c-torture/execute/20011019-1.c
  63939d16da1a0c4f2d58b24cc8ffb80d  gcc/testsuite/gcc.c-torture/execute/20011024-1.c
  7b7b9e6841cad2fcd968e8c594afd1b2  gcc/testsuite/gcc.c-torture/execute/20011109-1.c
*************** a455f61709435004a057458df1666c32  gcc/te
*** 24474,24480 ****
  87e635efbe283c3806b83774891cc524  gcc/testsuite/gcc.c-torture/execute/20020402-1.c
  00970a7aaaaa060f83760a13e8d1dfc2  gcc/testsuite/gcc.c-torture/execute/20020402-2.c
  02269773fdb8be5a9c6f5d008a96b4a3  gcc/testsuite/gcc.c-torture/execute/20020402-3.c
! d87a2ffe8414891a8346a95a2548b841  gcc/testsuite/gcc.c-torture/execute/20020404-1.c
  52ce17eea1669f980b5554b1940fca3a  gcc/testsuite/gcc.c-torture/execute/20020406-1.c
  844df3b97111f6ac1b0a7121302f83ec  gcc/testsuite/gcc.c-torture/execute/20020411-1.c
  e8d7875d7898227ea964bf4bd056d101  gcc/testsuite/gcc.c-torture/execute/20020412-1.c
--- 25657,25663 ----
  87e635efbe283c3806b83774891cc524  gcc/testsuite/gcc.c-torture/execute/20020402-1.c
  00970a7aaaaa060f83760a13e8d1dfc2  gcc/testsuite/gcc.c-torture/execute/20020402-2.c
  02269773fdb8be5a9c6f5d008a96b4a3  gcc/testsuite/gcc.c-torture/execute/20020402-3.c
! 2e2e667d3775c588bc4f1e8aa85bcdc8  gcc/testsuite/gcc.c-torture/execute/20020404-1.c
  52ce17eea1669f980b5554b1940fca3a  gcc/testsuite/gcc.c-torture/execute/20020406-1.c
  844df3b97111f6ac1b0a7121302f83ec  gcc/testsuite/gcc.c-torture/execute/20020411-1.c
  e8d7875d7898227ea964bf4bd056d101  gcc/testsuite/gcc.c-torture/execute/20020412-1.c
*************** e6ff244cdc0aef0aa84060d5945a940c  gcc/te
*** 24526,24536 ****
  fb28b699d6aa59d74062590bce029e66  gcc/testsuite/gcc.c-torture/execute/20030125-1.c
  da63f701e373e056be45beb4402aff43  gcc/testsuite/gcc.c-torture/execute/20030128-1.c
  a6374d099ffaf8be5bcd17aae9e4371a  gcc/testsuite/gcc.c-torture/execute/20030203-1.c
! c0132c555648ffd1a6d329494ffda347  gcc/testsuite/gcc.c-torture/execute/20030209-1.c
  f319cd2aad63022fb1c0b70a1b90d790  gcc/testsuite/gcc.c-torture/execute/20030216-1.c
  da97010d8a7434f25c6eff9dc720a520  gcc/testsuite/gcc.c-torture/execute/20030218-1.c
  e19bd6108d6e03f6557ddc4ca9203ccd  gcc/testsuite/gcc.c-torture/execute/20030221-1.c
! 65299b5e9bee92a03bb731503a416cc4  gcc/testsuite/gcc.c-torture/execute/20030222-1.c
  902149aa570a79ac6207d43a0249ff36  gcc/testsuite/gcc.c-torture/execute/20030224-2.c
  c9f050391fcbef96fd21f19afe8f65de  gcc/testsuite/gcc.c-torture/execute/20030307-1.c
  99d16dcb4641277409c884e5e646995a  gcc/testsuite/gcc.c-torture/execute/20030313-1.c
--- 25709,25719 ----
  fb28b699d6aa59d74062590bce029e66  gcc/testsuite/gcc.c-torture/execute/20030125-1.c
  da63f701e373e056be45beb4402aff43  gcc/testsuite/gcc.c-torture/execute/20030128-1.c
  a6374d099ffaf8be5bcd17aae9e4371a  gcc/testsuite/gcc.c-torture/execute/20030203-1.c
! 66d2d30f42a946d07d27b4616c14af13  gcc/testsuite/gcc.c-torture/execute/20030209-1.c
  f319cd2aad63022fb1c0b70a1b90d790  gcc/testsuite/gcc.c-torture/execute/20030216-1.c
  da97010d8a7434f25c6eff9dc720a520  gcc/testsuite/gcc.c-torture/execute/20030218-1.c
  e19bd6108d6e03f6557ddc4ca9203ccd  gcc/testsuite/gcc.c-torture/execute/20030221-1.c
! de8c2eff8eedd95a1b033a873f368384  gcc/testsuite/gcc.c-torture/execute/20030222-1.c
  902149aa570a79ac6207d43a0249ff36  gcc/testsuite/gcc.c-torture/execute/20030224-2.c
  c9f050391fcbef96fd21f19afe8f65de  gcc/testsuite/gcc.c-torture/execute/20030307-1.c
  99d16dcb4641277409c884e5e646995a  gcc/testsuite/gcc.c-torture/execute/20030313-1.c
*************** d3b854d7140a0f549cccd517e0455b09  gcc/te
*** 24566,24572 ****
  1dcc3c6bab5523c643b3dd06e1fde7c2  gcc/testsuite/gcc.c-torture/execute/20031003-1.c
  6ce0588cdc163a99e8f1fa413dfa4ff3  gcc/testsuite/gcc.c-torture/execute/20031010-1.c
  658d7b3b078715acc0fd17343437d0c8  gcc/testsuite/gcc.c-torture/execute/20031011-1.c
! 0ae50da032f091729fdb8ac6b6e4364c  gcc/testsuite/gcc.c-torture/execute/20031012-1.c
  7bcc1838a33631276a41e7803ef37416  gcc/testsuite/gcc.c-torture/execute/20031020-1.c
  4c03997312260fe380664d5e3af9860d  gcc/testsuite/gcc.c-torture/execute/20031201-1.c
  7123beb9da10b2836d6aa7b0bf261980  gcc/testsuite/gcc.c-torture/execute/20031204-1.c
--- 25749,25755 ----
  1dcc3c6bab5523c643b3dd06e1fde7c2  gcc/testsuite/gcc.c-torture/execute/20031003-1.c
  6ce0588cdc163a99e8f1fa413dfa4ff3  gcc/testsuite/gcc.c-torture/execute/20031010-1.c
  658d7b3b078715acc0fd17343437d0c8  gcc/testsuite/gcc.c-torture/execute/20031011-1.c
! 320ae0127d85d69c234c8fc7ec6f96bf  gcc/testsuite/gcc.c-torture/execute/20031012-1.c
  7bcc1838a33631276a41e7803ef37416  gcc/testsuite/gcc.c-torture/execute/20031020-1.c
  4c03997312260fe380664d5e3af9860d  gcc/testsuite/gcc.c-torture/execute/20031201-1.c
  7123beb9da10b2836d6aa7b0bf261980  gcc/testsuite/gcc.c-torture/execute/20031204-1.c
*************** aca6a486b3b9bdeb6c89786f5ece5fd1  gcc/te
*** 24586,24594 ****
  60f74a250af358450582e43f4cfa84e1  gcc/testsuite/gcc.c-torture/execute/20040313-1.c
  a41b11620b740726ba5c954f369e4c44  gcc/testsuite/gcc.c-torture/execute/20040319-1.c
  1f15bebfdefc714a77e0cc025b144ccc  gcc/testsuite/gcc.c-torture/execute/20040331-1.c
! 7f10d405536114a660cac84fc1388e82  gcc/testsuite/gcc.c-torture/execute/20040409-1.c
! 71ff6919088558f41ecc8753f78329e4  gcc/testsuite/gcc.c-torture/execute/20040409-2.c
! d58cde7ef98d36589563b31f8b53810a  gcc/testsuite/gcc.c-torture/execute/20040409-3.c
  603cd8ba58b42dc8630fc0d7ca6532a8  gcc/testsuite/gcc.c-torture/execute/20040411-1.c
  a3291f783bb702e3358147a1dc1d1106  gcc/testsuite/gcc.c-torture/execute/20040423-1.c
  c6d647d2e50c96e234eec4588a33360f  gcc/testsuite/gcc.c-torture/execute/20040520-1.c
--- 25769,25780 ----
  60f74a250af358450582e43f4cfa84e1  gcc/testsuite/gcc.c-torture/execute/20040313-1.c
  a41b11620b740726ba5c954f369e4c44  gcc/testsuite/gcc.c-torture/execute/20040319-1.c
  1f15bebfdefc714a77e0cc025b144ccc  gcc/testsuite/gcc.c-torture/execute/20040331-1.c
! b20152cf828e1c27c3ac81d85b3933a2  gcc/testsuite/gcc.c-torture/execute/20040409-1.c
! 239a2dfc319fef7c849d194fb9f6c6d8  gcc/testsuite/gcc.c-torture/execute/20040409-1w.c
! 71b5463f6b537fe5e39ac70016532371  gcc/testsuite/gcc.c-torture/execute/20040409-2.c
! 8001fedd8967cf9c81b93dda96b0e8e3  gcc/testsuite/gcc.c-torture/execute/20040409-2w.c
! 18614797d1d1e797443f196b52cff8e4  gcc/testsuite/gcc.c-torture/execute/20040409-3.c
! eaec6a0ad3a34630e3a29960416617cb  gcc/testsuite/gcc.c-torture/execute/20040409-3w.c
  603cd8ba58b42dc8630fc0d7ca6532a8  gcc/testsuite/gcc.c-torture/execute/20040411-1.c
  a3291f783bb702e3358147a1dc1d1106  gcc/testsuite/gcc.c-torture/execute/20040423-1.c
  c6d647d2e50c96e234eec4588a33360f  gcc/testsuite/gcc.c-torture/execute/20040520-1.c
*************** a7b258810fe0d84039610650ff52c8d0  gcc/te
*** 24602,24608 ****
  14de9340f54e424f581fba266dcc93a8  gcc/testsuite/gcc.c-torture/execute/20040707-1.c
  9313e87987dab2cc39a52afe12e59a64  gcc/testsuite/gcc.c-torture/execute/20040709-1.c
  4c3391745b81160c6956ea5a444c9741  gcc/testsuite/gcc.c-torture/execute/20040709-2.c
! 7074e9812a5e1bf10add1f261d950f62  gcc/testsuite/gcc.c-torture/execute/20040805-1.c
  4e1698f0365b941664586df69c03e4cf  gcc/testsuite/gcc.c-torture/execute/20040811-1.c
  8447ba9c7e53c35ad32e5bab75dd5a68  gcc/testsuite/gcc.c-torture/execute/20040820-1.c
  dc8ef6a2f62bcfea90605a1500ebf16b  gcc/testsuite/gcc.c-torture/execute/20040823-1.c
--- 25788,25795 ----
  14de9340f54e424f581fba266dcc93a8  gcc/testsuite/gcc.c-torture/execute/20040707-1.c
  9313e87987dab2cc39a52afe12e59a64  gcc/testsuite/gcc.c-torture/execute/20040709-1.c
  4c3391745b81160c6956ea5a444c9741  gcc/testsuite/gcc.c-torture/execute/20040709-2.c
! 60afe4e2e2885d5ea2eb6fb8faee4070  gcc/testsuite/gcc.c-torture/execute/20040709-3.c
! 73f39f3983baa6c0c7ab30d5f792f818  gcc/testsuite/gcc.c-torture/execute/20040805-1.c
  4e1698f0365b941664586df69c03e4cf  gcc/testsuite/gcc.c-torture/execute/20040811-1.c
  8447ba9c7e53c35ad32e5bab75dd5a68  gcc/testsuite/gcc.c-torture/execute/20040820-1.c
  dc8ef6a2f62bcfea90605a1500ebf16b  gcc/testsuite/gcc.c-torture/execute/20040823-1.c
*************** b61a1ebbd753fe82a5897af2fb717b30  gcc/te
*** 24642,24648 ****
  c289f0feea0c1b0e9230cb6fedf512cc  gcc/testsuite/gcc.c-torture/execute/20050410-1.c
  ec959ff383b49e35bef564f59611851a  gcc/testsuite/gcc.c-torture/execute/20050502-1.c
  75351ff59b3644e1b18db7f8c4582231  gcc/testsuite/gcc.c-torture/execute/20050502-2.c
! 09ac7e701f38736f8ff332b6896d33b2  gcc/testsuite/gcc.c-torture/execute/20050604-1.c
  99c696eb400dd3328aa5c52955c1c37e  gcc/testsuite/gcc.c-torture/execute/20050607-1.c
  e118a7323d7587cd507e6973401b9320  gcc/testsuite/gcc.c-torture/execute/20050613-1.c
  823e51fd4000de89f68e59f8969db544  gcc/testsuite/gcc.c-torture/execute/20050713-1.c
--- 25829,25835 ----
  c289f0feea0c1b0e9230cb6fedf512cc  gcc/testsuite/gcc.c-torture/execute/20050410-1.c
  ec959ff383b49e35bef564f59611851a  gcc/testsuite/gcc.c-torture/execute/20050502-1.c
  75351ff59b3644e1b18db7f8c4582231  gcc/testsuite/gcc.c-torture/execute/20050502-2.c
! 449dbb3e6a08e4a7c8ff874d4116564d  gcc/testsuite/gcc.c-torture/execute/20050604-1.c
  99c696eb400dd3328aa5c52955c1c37e  gcc/testsuite/gcc.c-torture/execute/20050607-1.c
  e118a7323d7587cd507e6973401b9320  gcc/testsuite/gcc.c-torture/execute/20050613-1.c
  823e51fd4000de89f68e59f8969db544  gcc/testsuite/gcc.c-torture/execute/20050713-1.c
*************** eeb28128cc73f597a81c0efce5f402a4  gcc/te
*** 24670,24676 ****
  f65a0e374ec285a6654aa47a054707b0  gcc/testsuite/gcc.c-torture/execute/20061031-1.c
  968f93345466802624b16e94170f5e15  gcc/testsuite/gcc.c-torture/execute/20061101-1.c
  b0cbd6319bfeda7111f66f9c5173b490  gcc/testsuite/gcc.c-torture/execute/20061101-2.c
! 9fa0b98c992df8546710ad986de365d7  gcc/testsuite/gcc.c-torture/execute/20061220-1.c
  63a1dbcaa742f75a8a48d1e4a3e44a93  gcc/testsuite/gcc.c-torture/execute/20070201-1.c
  fd7b01b141616cfa8b9dc8ad91106fbd  gcc/testsuite/gcc.c-torture/execute/20070212-1.c
  02e213834d0bd960235f0170702452dc  gcc/testsuite/gcc.c-torture/execute/20070212-2.c
--- 25857,25863 ----
  f65a0e374ec285a6654aa47a054707b0  gcc/testsuite/gcc.c-torture/execute/20061031-1.c
  968f93345466802624b16e94170f5e15  gcc/testsuite/gcc.c-torture/execute/20061101-1.c
  b0cbd6319bfeda7111f66f9c5173b490  gcc/testsuite/gcc.c-torture/execute/20061101-2.c
! 99c81fba3a0e394c5b26dc1b2fc1cd70  gcc/testsuite/gcc.c-torture/execute/20061220-1.c
  63a1dbcaa742f75a8a48d1e4a3e44a93  gcc/testsuite/gcc.c-torture/execute/20070201-1.c
  fd7b01b141616cfa8b9dc8ad91106fbd  gcc/testsuite/gcc.c-torture/execute/20070212-1.c
  02e213834d0bd960235f0170702452dc  gcc/testsuite/gcc.c-torture/execute/20070212-2.c
*************** a580e1ca2b138c4042e0a43bf49da5b0  gcc/te
*** 24732,24738 ****
  3f1ed16a9981583ab732d7dcc00acbdd  gcc/testsuite/gcc.c-torture/execute/20100708-1.c
  04279b759ce025eb37d017bc0bfe6d2f  gcc/testsuite/gcc.c-torture/execute/20100805-1.c
  94262b3a70161a035a289e60d6b39c44  gcc/testsuite/gcc.c-torture/execute/20100827-1.c
! 10f7a3cee57d8f91f74e2ea353e9bf6f  gcc/testsuite/gcc.c-torture/execute/20101011-1.c
  2753f885fabef60aad30c05f7d0a42a8  gcc/testsuite/gcc.c-torture/execute/20101013-1.c
  40f98e273d462f42e775cee266358d98  gcc/testsuite/gcc.c-torture/execute/20101025-1.c
  25e8df034740874c03a94dd4abc11ebe  gcc/testsuite/gcc.c-torture/execute/20110418-1.c
--- 25919,25925 ----
  3f1ed16a9981583ab732d7dcc00acbdd  gcc/testsuite/gcc.c-torture/execute/20100708-1.c
  04279b759ce025eb37d017bc0bfe6d2f  gcc/testsuite/gcc.c-torture/execute/20100805-1.c
  94262b3a70161a035a289e60d6b39c44  gcc/testsuite/gcc.c-torture/execute/20100827-1.c
! 7a08f3f4858060ea852cf679059496c5  gcc/testsuite/gcc.c-torture/execute/20101011-1.c
  2753f885fabef60aad30c05f7d0a42a8  gcc/testsuite/gcc.c-torture/execute/20101013-1.c
  40f98e273d462f42e775cee266358d98  gcc/testsuite/gcc.c-torture/execute/20101025-1.c
  25e8df034740874c03a94dd4abc11ebe  gcc/testsuite/gcc.c-torture/execute/20110418-1.c
*************** f50d2037a2ed60133aebb15fd8ac1626  gcc/te
*** 24764,24787 ****
  e54823e5f85799a816f464339f03380a  gcc/testsuite/gcc.c-torture/execute/20170401-1.c
  f8b802f2d501bc5da713d9ae58a70c11  gcc/testsuite/gcc.c-torture/execute/20170401-2.c
  13d1e16ba55cc014ade05fa4e93459a9  gcc/testsuite/gcc.c-torture/execute/20170419-1.c
! 9c1efb560e25ad5267acb31e4893afd9  gcc/testsuite/gcc.c-torture/execute/20180112-1.c
  65f01ac7346bd4d47ed9c1ca94ab74ff  gcc/testsuite/gcc.c-torture/execute/900409-1.c
  5aefab4daab0bd29ecf2a389f3c44f40  gcc/testsuite/gcc.c-torture/execute/920202-1.c
! 655936aaf9a63e991a555cbc16738485  gcc/testsuite/gcc.c-torture/execute/920302-1.c
  8f8f4242a02385cbaf0e2dcb894ef3bd  gcc/testsuite/gcc.c-torture/execute/920409-1.c
! 324d659bf65d57746c99aa324f9ca81a  gcc/testsuite/gcc.c-torture/execute/920410-1.c
  942e91c719d0d944aedce9f7e65abeba  gcc/testsuite/gcc.c-torture/execute/920411-1.c
! 6366950afefe4393a30f31653d15c17d  gcc/testsuite/gcc.c-torture/execute/920415-1.c
  67630f32e9d397f90a610dc1a437d5b1  gcc/testsuite/gcc.c-torture/execute/920428-1.c
! 5c2205a9ff4755594a1e61c9436410a0  gcc/testsuite/gcc.c-torture/execute/920428-2.c
  643e65b03432871f96441c1f3396d0d2  gcc/testsuite/gcc.c-torture/execute/920429-1.c
  5c91095362f3b3f0e69744567ddf82bb  gcc/testsuite/gcc.c-torture/execute/920501-1.c
  9c34a0796d9391421a3ad40464941f13  gcc/testsuite/gcc.c-torture/execute/920501-2.c
! 3f043732789badbcf571bf65fcfc20d0  gcc/testsuite/gcc.c-torture/execute/920501-3.c
! a6b883b7971ffb6f3947415179b0223c  gcc/testsuite/gcc.c-torture/execute/920501-4.c
! 79233ccff43ee2868014145f1299ddc7  gcc/testsuite/gcc.c-torture/execute/920501-5.c
  79ac46c4c2eddb5c72cd30872dbefb11  gcc/testsuite/gcc.c-torture/execute/920501-6.c
! bb5b259a6ab43d15258e5519dd63ef6e  gcc/testsuite/gcc.c-torture/execute/920501-7.c
  b197ed3ff6c10a78be28701584b6193d  gcc/testsuite/gcc.c-torture/execute/920501-8.c
  e0d4fdcd868a1fca70f8050e878dc1d7  gcc/testsuite/gcc.c-torture/execute/920501-9.c
  c1f902ba7c0b04a265b4379ae9faddf3  gcc/testsuite/gcc.c-torture/execute/920506-1.c
--- 25951,25977 ----
  e54823e5f85799a816f464339f03380a  gcc/testsuite/gcc.c-torture/execute/20170401-1.c
  f8b802f2d501bc5da713d9ae58a70c11  gcc/testsuite/gcc.c-torture/execute/20170401-2.c
  13d1e16ba55cc014ade05fa4e93459a9  gcc/testsuite/gcc.c-torture/execute/20170419-1.c
! 31a4260c391b5a83af8bbf21d3741a8c  gcc/testsuite/gcc.c-torture/execute/20171008-1.c
! c7ff39348e400954a9509ab75b431894  gcc/testsuite/gcc.c-torture/execute/20180112-1.c
! c498b868df794aac4975b6925c3f0d24  gcc/testsuite/gcc.c-torture/execute/20180131-1.c
! a024382373a506e7761148108043c429  gcc/testsuite/gcc.c-torture/execute/20180226-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
  8f8f4242a02385cbaf0e2dcb894ef3bd  gcc/testsuite/gcc.c-torture/execute/920409-1.c
! a86d07fe8e8acd897dc72d67ef88bf18  gcc/testsuite/gcc.c-torture/execute/920410-1.c
  942e91c719d0d944aedce9f7e65abeba  gcc/testsuite/gcc.c-torture/execute/920411-1.c
! 1334b942df26e01f7aec6cacbdabffad  gcc/testsuite/gcc.c-torture/execute/920415-1.c
  67630f32e9d397f90a610dc1a437d5b1  gcc/testsuite/gcc.c-torture/execute/920428-1.c
! d2f42d607d304975fa5a2474b9126824  gcc/testsuite/gcc.c-torture/execute/920428-2.c
  643e65b03432871f96441c1f3396d0d2  gcc/testsuite/gcc.c-torture/execute/920429-1.c
  5c91095362f3b3f0e69744567ddf82bb  gcc/testsuite/gcc.c-torture/execute/920501-1.c
  9c34a0796d9391421a3ad40464941f13  gcc/testsuite/gcc.c-torture/execute/920501-2.c
! 6d384436402b1efeead2da4a71b4a985  gcc/testsuite/gcc.c-torture/execute/920501-3.c
! 64756b12e01f871c05c8b3a42dbe8543  gcc/testsuite/gcc.c-torture/execute/920501-4.c
! b9094556bb3085abc63e74bb96d7b837  gcc/testsuite/gcc.c-torture/execute/920501-5.c
  79ac46c4c2eddb5c72cd30872dbefb11  gcc/testsuite/gcc.c-torture/execute/920501-6.c
! 2104dbb97db4c2f5a366d71bf09d887a  gcc/testsuite/gcc.c-torture/execute/920501-7.c
  b197ed3ff6c10a78be28701584b6193d  gcc/testsuite/gcc.c-torture/execute/920501-8.c
  e0d4fdcd868a1fca70f8050e878dc1d7  gcc/testsuite/gcc.c-torture/execute/920501-9.c
  c1f902ba7c0b04a265b4379ae9faddf3  gcc/testsuite/gcc.c-torture/execute/920506-1.c
*************** c1f902ba7c0b04a265b4379ae9faddf3  gcc/te
*** 24789,24795 ****
  95e88329093b9704d02ac851b98e2c04  gcc/testsuite/gcc.c-torture/execute/920603-1.c
  1cb1bc488a57c2ac44f51218dca5843d  gcc/testsuite/gcc.c-torture/execute/920604-1.c
  2603675161614674c793620ef61c57d6  gcc/testsuite/gcc.c-torture/execute/920612-1.c
! 81c2b12dcd5759155a3e6d766c9129e9  gcc/testsuite/gcc.c-torture/execute/920612-2.c
  6f74ffc290063e318fa674bba4eaf317  gcc/testsuite/gcc.c-torture/execute/920618-1.c
  12d7ba649a0ab6f51222e0d18ed5a6b4  gcc/testsuite/gcc.c-torture/execute/920625-1.c
  935a97622d462e59adc2a096028fd8c4  gcc/testsuite/gcc.c-torture/execute/920710-1.c
--- 25979,25985 ----
  95e88329093b9704d02ac851b98e2c04  gcc/testsuite/gcc.c-torture/execute/920603-1.c
  1cb1bc488a57c2ac44f51218dca5843d  gcc/testsuite/gcc.c-torture/execute/920604-1.c
  2603675161614674c793620ef61c57d6  gcc/testsuite/gcc.c-torture/execute/920612-1.c
! 76577eb12c07bf9ad4971a369da7805f  gcc/testsuite/gcc.c-torture/execute/920612-2.c
  6f74ffc290063e318fa674bba4eaf317  gcc/testsuite/gcc.c-torture/execute/920618-1.c
  12d7ba649a0ab6f51222e0d18ed5a6b4  gcc/testsuite/gcc.c-torture/execute/920625-1.c
  935a97622d462e59adc2a096028fd8c4  gcc/testsuite/gcc.c-torture/execute/920710-1.c
*************** c1f902ba7c0b04a265b4379ae9faddf3  gcc/te
*** 24797,24803 ****
  311a97a0d2fd508d27d962a93c526aae  gcc/testsuite/gcc.c-torture/execute/920721-1.c
  6d9396d3de863a8e1ba44473e57ddcc0  gcc/testsuite/gcc.c-torture/execute/920721-2.c
  e89932cb07fb96f9e7f3f08222b63e3e  gcc/testsuite/gcc.c-torture/execute/920721-3.c
! 5707d4cde035ec8f773c66f0bb4175f4  gcc/testsuite/gcc.c-torture/execute/920721-4.c
  90b984f615a8c73718dd8912fbfb748b  gcc/testsuite/gcc.c-torture/execute/920726-1.c
  55dd1b6f1bcc282300b2c2f52b763cd2  gcc/testsuite/gcc.c-torture/execute/920728-1.c
  683830c27ebeeff8424e538285216910  gcc/testsuite/gcc.c-torture/execute/920730-1.c
--- 25987,25993 ----
  311a97a0d2fd508d27d962a93c526aae  gcc/testsuite/gcc.c-torture/execute/920721-1.c
  6d9396d3de863a8e1ba44473e57ddcc0  gcc/testsuite/gcc.c-torture/execute/920721-2.c
  e89932cb07fb96f9e7f3f08222b63e3e  gcc/testsuite/gcc.c-torture/execute/920721-3.c
! 9e0c21e8b0e6a22690dbdc83e2dfa657  gcc/testsuite/gcc.c-torture/execute/920721-4.c
  90b984f615a8c73718dd8912fbfb748b  gcc/testsuite/gcc.c-torture/execute/920726-1.c
  55dd1b6f1bcc282300b2c2f52b763cd2  gcc/testsuite/gcc.c-torture/execute/920728-1.c
  683830c27ebeeff8424e538285216910  gcc/testsuite/gcc.c-torture/execute/920730-1.c
*************** ee1bc9aa30a6ddd705aefc888ab1085e  gcc/te
*** 24814,24846 ****
  bdb6e3a3b08c2e377933fe346ece0a1c  gcc/testsuite/gcc.c-torture/execute/921007-1.c
  4a153d3cee5635ad6807a0939b1f8b78  gcc/testsuite/gcc.c-torture/execute/921013-1.c
  cf200c151f9c5225a3bd125fc405a8ae  gcc/testsuite/gcc.c-torture/execute/921016-1.c
! c165a1f6a16e53741d711cc663ec0a73  gcc/testsuite/gcc.c-torture/execute/921017-1.c
  5727a158831b1c3f57a9a3592b7934b6  gcc/testsuite/gcc.c-torture/execute/921019-1.c
  e62ed4f14b8c0c66acd29783fb5e32cb  gcc/testsuite/gcc.c-torture/execute/921019-2.c
  c61b33256f5fb535bffd1a18a015bcac  gcc/testsuite/gcc.c-torture/execute/921029-1.c
  ec3bf6b546eaff255d5710806e7bc330  gcc/testsuite/gcc.c-torture/execute/921104-1.c
  2c5d5bcdebd5213687d4fb2fb85c5d27  gcc/testsuite/gcc.c-torture/execute/921110-1.c
  5ffc208f8ddeb7f76dfe22399b5d6005  gcc/testsuite/gcc.c-torture/execute/921112-1.c
! 0b324d0db78a37170df539987b230469  gcc/testsuite/gcc.c-torture/execute/921113-1.c
  228b09742cd7d5a909ff99aaebb0a9af  gcc/testsuite/gcc.c-torture/execute/921117-1.c
  fdf9d6557d6f44acebbdc0c7017887d0  gcc/testsuite/gcc.c-torture/execute/921123-1.c
  dfba7fdd443fe725e2fe861064815e70  gcc/testsuite/gcc.c-torture/execute/921123-2.c
  997bb595303b9ff150b99f6f912d5491  gcc/testsuite/gcc.c-torture/execute/921124-1.c
! b71f4a8e92f3c4d799462484c098ce71  gcc/testsuite/gcc.c-torture/execute/921202-1.c
  a98aaffc9d3da6358dbe382882ffc897  gcc/testsuite/gcc.c-torture/execute/921202-2.c
  d6bd72ada8ca098ae7adc681ac406e64  gcc/testsuite/gcc.c-torture/execute/921204-1.c
  3638c835c9cdaaeb416566908c25a9d4  gcc/testsuite/gcc.c-torture/execute/921207-1.c
  bc7f73102e4e182074bd42178726a461  gcc/testsuite/gcc.c-torture/execute/921208-1.c
! 438cdaff1a85bc41d3bd093dc9c957b7  gcc/testsuite/gcc.c-torture/execute/921208-2.c
! 861232ba8a7ac84b3d2849ff1cdb1fbc  gcc/testsuite/gcc.c-torture/execute/921215-1.c
  38b0b39e36aaf0ef068b71a759267b60  gcc/testsuite/gcc.c-torture/execute/921218-1.c
  67f1883af45f1a0fc90037e7b9136028  gcc/testsuite/gcc.c-torture/execute/921218-2.c
! 28a4b14373d3633fe7b9523a545ec7f2  gcc/testsuite/gcc.c-torture/execute/930106-1.c
  53a2dfe22d7a04d96dff155e065d52de  gcc/testsuite/gcc.c-torture/execute/930111-1.c
  7c422af0d87d2b21e186153ff800419a  gcc/testsuite/gcc.c-torture/execute/930123-1.c
  490dffd24bbf6979508040d02fbdec31  gcc/testsuite/gcc.c-torture/execute/930126-1.c
  369c307f2e32b6e0203b3497cb9ccb86  gcc/testsuite/gcc.c-torture/execute/930208-1.c
! 604702176613f494fcf95819459717b0  gcc/testsuite/gcc.c-torture/execute/930406-1.c
  574313194e14028633903db0fb97214a  gcc/testsuite/gcc.c-torture/execute/930408-1.c
  8e521a7f17ba4592d44b61f5de10b627  gcc/testsuite/gcc.c-torture/execute/930429-1.c
  68f904a058dc9059802132f0c8b20266  gcc/testsuite/gcc.c-torture/execute/930429-2.c
--- 26004,26036 ----
  bdb6e3a3b08c2e377933fe346ece0a1c  gcc/testsuite/gcc.c-torture/execute/921007-1.c
  4a153d3cee5635ad6807a0939b1f8b78  gcc/testsuite/gcc.c-torture/execute/921013-1.c
  cf200c151f9c5225a3bd125fc405a8ae  gcc/testsuite/gcc.c-torture/execute/921016-1.c
! 190b2fc425a1b5ca87dd1c7af9350e72  gcc/testsuite/gcc.c-torture/execute/921017-1.c
  5727a158831b1c3f57a9a3592b7934b6  gcc/testsuite/gcc.c-torture/execute/921019-1.c
  e62ed4f14b8c0c66acd29783fb5e32cb  gcc/testsuite/gcc.c-torture/execute/921019-2.c
  c61b33256f5fb535bffd1a18a015bcac  gcc/testsuite/gcc.c-torture/execute/921029-1.c
  ec3bf6b546eaff255d5710806e7bc330  gcc/testsuite/gcc.c-torture/execute/921104-1.c
  2c5d5bcdebd5213687d4fb2fb85c5d27  gcc/testsuite/gcc.c-torture/execute/921110-1.c
  5ffc208f8ddeb7f76dfe22399b5d6005  gcc/testsuite/gcc.c-torture/execute/921112-1.c
! d4b8146bb61248472c5332747ca247ca  gcc/testsuite/gcc.c-torture/execute/921113-1.c
  228b09742cd7d5a909ff99aaebb0a9af  gcc/testsuite/gcc.c-torture/execute/921117-1.c
  fdf9d6557d6f44acebbdc0c7017887d0  gcc/testsuite/gcc.c-torture/execute/921123-1.c
  dfba7fdd443fe725e2fe861064815e70  gcc/testsuite/gcc.c-torture/execute/921123-2.c
  997bb595303b9ff150b99f6f912d5491  gcc/testsuite/gcc.c-torture/execute/921124-1.c
! 2c4baf42d97e9fbc88876643f65146c9  gcc/testsuite/gcc.c-torture/execute/921202-1.c
  a98aaffc9d3da6358dbe382882ffc897  gcc/testsuite/gcc.c-torture/execute/921202-2.c
  d6bd72ada8ca098ae7adc681ac406e64  gcc/testsuite/gcc.c-torture/execute/921204-1.c
  3638c835c9cdaaeb416566908c25a9d4  gcc/testsuite/gcc.c-torture/execute/921207-1.c
  bc7f73102e4e182074bd42178726a461  gcc/testsuite/gcc.c-torture/execute/921208-1.c
! 944a5329141af9aac362e523b3086e73  gcc/testsuite/gcc.c-torture/execute/921208-2.c
! dfe2b92460ae0c373cb370034b6b89ff  gcc/testsuite/gcc.c-torture/execute/921215-1.c
  38b0b39e36aaf0ef068b71a759267b60  gcc/testsuite/gcc.c-torture/execute/921218-1.c
  67f1883af45f1a0fc90037e7b9136028  gcc/testsuite/gcc.c-torture/execute/921218-2.c
! 24194b48b8bc18e40059b895b94edf33  gcc/testsuite/gcc.c-torture/execute/930106-1.c
  53a2dfe22d7a04d96dff155e065d52de  gcc/testsuite/gcc.c-torture/execute/930111-1.c
  7c422af0d87d2b21e186153ff800419a  gcc/testsuite/gcc.c-torture/execute/930123-1.c
  490dffd24bbf6979508040d02fbdec31  gcc/testsuite/gcc.c-torture/execute/930126-1.c
  369c307f2e32b6e0203b3497cb9ccb86  gcc/testsuite/gcc.c-torture/execute/930208-1.c
! 6322852dcb8649ffe237074c18d41183  gcc/testsuite/gcc.c-torture/execute/930406-1.c
  574313194e14028633903db0fb97214a  gcc/testsuite/gcc.c-torture/execute/930408-1.c
  8e521a7f17ba4592d44b61f5de10b627  gcc/testsuite/gcc.c-torture/execute/930429-1.c
  68f904a058dc9059802132f0c8b20266  gcc/testsuite/gcc.c-torture/execute/930429-2.c
*************** ccea0e08c35b8bee2d670378dc0fe328  gcc/te
*** 24872,24878 ****
  7747dfabe63e3806267036c6b6945565  gcc/testsuite/gcc.c-torture/execute/930929-1.c
  7ebf624d5cc9ea1e63e2c37ee3cd9736  gcc/testsuite/gcc.c-torture/execute/930930-1.c
  a012b94f7e3fb4508965337c0b576b60  gcc/testsuite/gcc.c-torture/execute/930930-2.c
! f7f9ec30f9865a4919e1c0e415c600e3  gcc/testsuite/gcc.c-torture/execute/931002-1.c
  50f8aeaccdd2f2a3b38cf08385bb80b7  gcc/testsuite/gcc.c-torture/execute/931004-1.c
  dfe371c94b16773da9210adbaad4bc72  gcc/testsuite/gcc.c-torture/execute/931004-10.c
  3af771746061e12b7590d7cc2214be1f  gcc/testsuite/gcc.c-torture/execute/931004-11.c
--- 26062,26068 ----
  7747dfabe63e3806267036c6b6945565  gcc/testsuite/gcc.c-torture/execute/930929-1.c
  7ebf624d5cc9ea1e63e2c37ee3cd9736  gcc/testsuite/gcc.c-torture/execute/930930-1.c
  a012b94f7e3fb4508965337c0b576b60  gcc/testsuite/gcc.c-torture/execute/930930-2.c
! 82c887ccb324cb76f3788474cd798d7d  gcc/testsuite/gcc.c-torture/execute/931002-1.c
  50f8aeaccdd2f2a3b38cf08385bb80b7  gcc/testsuite/gcc.c-torture/execute/931004-1.c
  dfe371c94b16773da9210adbaad4bc72  gcc/testsuite/gcc.c-torture/execute/931004-10.c
  3af771746061e12b7590d7cc2214be1f  gcc/testsuite/gcc.c-torture/execute/931004-11.c
*************** f026dbe7b0da1deea8eeae8d42606499  gcc/te
*** 24910,24916 ****
  c7e18d956ad2a8fe81999c287371c31e  gcc/testsuite/gcc.c-torture/execute/941101-1.c
  1dc497fc2ccc4d2760ab087c875cb5c1  gcc/testsuite/gcc.c-torture/execute/941110-1.c
  2f424c898de9a4e5ab00b0bd49ed23f6  gcc/testsuite/gcc.c-torture/execute/941202-1.c
! 6499e529b223887a3506e782a627adf5  gcc/testsuite/gcc.c-torture/execute/950221-1.c
  e6d7e389c7da3de4e28a72765e33f89f  gcc/testsuite/gcc.c-torture/execute/950322-1.c
  398f172f95544d00ad53311714a8c406  gcc/testsuite/gcc.c-torture/execute/950426-1.c
  8576ce29a3b03f47d601e31b4a179721  gcc/testsuite/gcc.c-torture/execute/950426-2.c
--- 26100,26106 ----
  c7e18d956ad2a8fe81999c287371c31e  gcc/testsuite/gcc.c-torture/execute/941101-1.c
  1dc497fc2ccc4d2760ab087c875cb5c1  gcc/testsuite/gcc.c-torture/execute/941110-1.c
  2f424c898de9a4e5ab00b0bd49ed23f6  gcc/testsuite/gcc.c-torture/execute/941202-1.c
! 3ce1aaede54d6aa7de25fdbb7c259935  gcc/testsuite/gcc.c-torture/execute/950221-1.c
  e6d7e389c7da3de4e28a72765e33f89f  gcc/testsuite/gcc.c-torture/execute/950322-1.c
  398f172f95544d00ad53311714a8c406  gcc/testsuite/gcc.c-torture/execute/950426-1.c
  8576ce29a3b03f47d601e31b4a179721  gcc/testsuite/gcc.c-torture/execute/950426-2.c
*************** e9f23bed67238b80aa7e710845c402e1  gcc/te
*** 24957,24963 ****
  7d67cb61797f8d11a87c1e3121804b30  gcc/testsuite/gcc.c-torture/execute/960419-2.c
  cfc18ece6bf71356ade78f5d6434bcd1  gcc/testsuite/gcc.c-torture/execute/960512-1.c
  33ed5af7438207e0112004ee42e997da  gcc/testsuite/gcc.c-torture/execute/960513-1.c
! 6f07eae9a05e48ef0285d7d7f6056bcf  gcc/testsuite/gcc.c-torture/execute/960521-1.c
  5094caff3132aa15528c769a45237867  gcc/testsuite/gcc.c-torture/execute/960608-1.c
  5af89a3538c6227209fd71fdaa8e292d  gcc/testsuite/gcc.c-torture/execute/960801-1.c
  2d301605567989d4c4a46e7ee00f8025  gcc/testsuite/gcc.c-torture/execute/960802-1.c
--- 26147,26153 ----
  7d67cb61797f8d11a87c1e3121804b30  gcc/testsuite/gcc.c-torture/execute/960419-2.c
  cfc18ece6bf71356ade78f5d6434bcd1  gcc/testsuite/gcc.c-torture/execute/960512-1.c
  33ed5af7438207e0112004ee42e997da  gcc/testsuite/gcc.c-torture/execute/960513-1.c
! c05285fc98880ec304bf0b805cbb63fb  gcc/testsuite/gcc.c-torture/execute/960521-1.c
  5094caff3132aa15528c769a45237867  gcc/testsuite/gcc.c-torture/execute/960608-1.c
  5af89a3538c6227209fd71fdaa8e292d  gcc/testsuite/gcc.c-torture/execute/960801-1.c
  2d301605567989d4c4a46e7ee00f8025  gcc/testsuite/gcc.c-torture/execute/960802-1.c
*************** dd3059fc30eda7d3d6380dd243bda891  gcc/te
*** 24986,24998 ****
  0b96f4664d607bd02f664fcb3a94211d  gcc/testsuite/gcc.c-torture/execute/980506-1.c
  11ccfbf523ae56536294da94caa299b7  gcc/testsuite/gcc.c-torture/execute/980506-2.c
  c17b17fb8aad6ea72e5832a949fd01df  gcc/testsuite/gcc.c-torture/execute/980506-3.c
! 7ce9834cba6e4b3d2752e6a2fa96ca3c  gcc/testsuite/gcc.c-torture/execute/980526-1.c
  dd7f624e7607911647570c8f085b30f3  gcc/testsuite/gcc.c-torture/execute/980526-2.c
  8e8745ee8c3dbbbea58fa8b4b9ef5052  gcc/testsuite/gcc.c-torture/execute/980526-3.c
  a698d66b429e23c3f1e1bb5930d44194  gcc/testsuite/gcc.c-torture/execute/980602-1.c
  5406c2e53b1a454e57f679f9b342b5c7  gcc/testsuite/gcc.c-torture/execute/980602-2.c
  ca37e2f3c9f310f3770efb9469c6a9ba  gcc/testsuite/gcc.c-torture/execute/980604-1.c
! b5b1c82fa5c5947fb68b6db2a5e967fb  gcc/testsuite/gcc.c-torture/execute/980605-1.c
  75a111f02af5f8ef41c780ade8a83c24  gcc/testsuite/gcc.c-torture/execute/980608-1.c
  517d48df92d94cd9d2bbb03a2eabf89f  gcc/testsuite/gcc.c-torture/execute/980612-1.c
  c9b566b9fe301689b348091c63337ef0  gcc/testsuite/gcc.c-torture/execute/980617-1.c
--- 26176,26188 ----
  0b96f4664d607bd02f664fcb3a94211d  gcc/testsuite/gcc.c-torture/execute/980506-1.c
  11ccfbf523ae56536294da94caa299b7  gcc/testsuite/gcc.c-torture/execute/980506-2.c
  c17b17fb8aad6ea72e5832a949fd01df  gcc/testsuite/gcc.c-torture/execute/980506-3.c
! 79b8c1b52e80f404067b4116bfd0323c  gcc/testsuite/gcc.c-torture/execute/980526-1.c
  dd7f624e7607911647570c8f085b30f3  gcc/testsuite/gcc.c-torture/execute/980526-2.c
  8e8745ee8c3dbbbea58fa8b4b9ef5052  gcc/testsuite/gcc.c-torture/execute/980526-3.c
  a698d66b429e23c3f1e1bb5930d44194  gcc/testsuite/gcc.c-torture/execute/980602-1.c
  5406c2e53b1a454e57f679f9b342b5c7  gcc/testsuite/gcc.c-torture/execute/980602-2.c
  ca37e2f3c9f310f3770efb9469c6a9ba  gcc/testsuite/gcc.c-torture/execute/980604-1.c
! 0361204574bbffa285055a1f0f2a711e  gcc/testsuite/gcc.c-torture/execute/980605-1.c
  75a111f02af5f8ef41c780ade8a83c24  gcc/testsuite/gcc.c-torture/execute/980608-1.c
  517d48df92d94cd9d2bbb03a2eabf89f  gcc/testsuite/gcc.c-torture/execute/980612-1.c
  c9b566b9fe301689b348091c63337ef0  gcc/testsuite/gcc.c-torture/execute/980617-1.c
*************** f8ae73f2e9d855e98fc50237683b8bd1  gcc/te
*** 25013,25025 ****
  12e3d02ab9c0ee0d66a2855a8c64ab0f  gcc/testsuite/gcc.c-torture/execute/990127-2.c
  03bd67dbfb994f924c6eb62cb27d1597  gcc/testsuite/gcc.c-torture/execute/990128-1.c
  668e0dd9e64f3ec52a2e07fcff50e8b0  gcc/testsuite/gcc.c-torture/execute/990130-1.c
! ff49ae1a060631b2853cca887ca44794  gcc/testsuite/gcc.c-torture/execute/990208-1.c
  d62dcb1dfc3a20dbbbac639e4bd4af46  gcc/testsuite/gcc.c-torture/execute/990211-1.c
  26ee9b0613b840d88af1c9366aa11286  gcc/testsuite/gcc.c-torture/execute/990222-1.c
  b76c8070bf46e72e11be01f72b91c100  gcc/testsuite/gcc.c-torture/execute/990324-1.c
  96d4bf5e6d54c7df3434a886003927a6  gcc/testsuite/gcc.c-torture/execute/990326-1.c
  fd30d3d0f75fe61e16537631a9dac035  gcc/testsuite/gcc.c-torture/execute/990404-1.c
! 26306aa7cdcce6ec25cddaedf8b4fa58  gcc/testsuite/gcc.c-torture/execute/990413-2.c
  37c97c8de7c6537820d73e236154a123  gcc/testsuite/gcc.c-torture/execute/990513-1.c
  be4e8d3fa2cfca60007893e5dc3f675d  gcc/testsuite/gcc.c-torture/execute/990524-1.c
  82a1f7e2817620ad5b0d94e95073e5bf  gcc/testsuite/gcc.c-torture/execute/990525-1.c
--- 26203,26215 ----
  12e3d02ab9c0ee0d66a2855a8c64ab0f  gcc/testsuite/gcc.c-torture/execute/990127-2.c
  03bd67dbfb994f924c6eb62cb27d1597  gcc/testsuite/gcc.c-torture/execute/990128-1.c
  668e0dd9e64f3ec52a2e07fcff50e8b0  gcc/testsuite/gcc.c-torture/execute/990130-1.c
! 226b5531208032a88f4eefc687af07de  gcc/testsuite/gcc.c-torture/execute/990208-1.c
  d62dcb1dfc3a20dbbbac639e4bd4af46  gcc/testsuite/gcc.c-torture/execute/990211-1.c
  26ee9b0613b840d88af1c9366aa11286  gcc/testsuite/gcc.c-torture/execute/990222-1.c
  b76c8070bf46e72e11be01f72b91c100  gcc/testsuite/gcc.c-torture/execute/990324-1.c
  96d4bf5e6d54c7df3434a886003927a6  gcc/testsuite/gcc.c-torture/execute/990326-1.c
  fd30d3d0f75fe61e16537631a9dac035  gcc/testsuite/gcc.c-torture/execute/990404-1.c
! 276a5bbab80594a28f6a1b56c2932e9e  gcc/testsuite/gcc.c-torture/execute/990413-2.c
  37c97c8de7c6537820d73e236154a123  gcc/testsuite/gcc.c-torture/execute/990513-1.c
  be4e8d3fa2cfca60007893e5dc3f675d  gcc/testsuite/gcc.c-torture/execute/990524-1.c
  82a1f7e2817620ad5b0d94e95073e5bf  gcc/testsuite/gcc.c-torture/execute/990525-1.c
*************** ee18345ed511ceff311552d973c6426f  gcc/te
*** 25053,25059 ****
  220ea595eb4fba31918096db7ae47ada  gcc/testsuite/gcc.c-torture/execute/991228-1.c
  50b7b403a3dd7a84e4b0576329f37247  gcc/testsuite/gcc.c-torture/execute/alias-1.c
  09d5e97749a6a6fe93e84adc6daa059d  gcc/testsuite/gcc.c-torture/execute/alias-2.c
! 0f7fba511e9495dd512b2a9097d6ce79  gcc/testsuite/gcc.c-torture/execute/alias-3.c
  54f160fd36e3e44f683867a0f05bb036  gcc/testsuite/gcc.c-torture/execute/alias-4.c
  fc721cce5be8ce64fe33e6dc0642bb99  gcc/testsuite/gcc.c-torture/execute/align-1.c
  7ca7bc1736d76c2e0dfe538487304db7  gcc/testsuite/gcc.c-torture/execute/align-2.c
--- 26243,26249 ----
  220ea595eb4fba31918096db7ae47ada  gcc/testsuite/gcc.c-torture/execute/991228-1.c
  50b7b403a3dd7a84e4b0576329f37247  gcc/testsuite/gcc.c-torture/execute/alias-1.c
  09d5e97749a6a6fe93e84adc6daa059d  gcc/testsuite/gcc.c-torture/execute/alias-2.c
! ab29943fe82dfa750b41d94433d65a3f  gcc/testsuite/gcc.c-torture/execute/alias-3.c
  54f160fd36e3e44f683867a0f05bb036  gcc/testsuite/gcc.c-torture/execute/alias-4.c
  fc721cce5be8ce64fe33e6dc0642bb99  gcc/testsuite/gcc.c-torture/execute/align-1.c
  7ca7bc1736d76c2e0dfe538487304db7  gcc/testsuite/gcc.c-torture/execute/align-2.c
*************** c26aa7e0feeb518b37a1a04c165a9f9b  gcc/te
*** 25071,25077 ****
  cf491abd2df5513193c96d9605cc5bc8  gcc/testsuite/gcc.c-torture/execute/bf-pack-1.c
  32808e6c66c89fb17b1631fcfaa6ab2b  gcc/testsuite/gcc.c-torture/execute/bf-sign-1.c
  7e81dc4cdd5c62169f611e513538c801  gcc/testsuite/gcc.c-torture/execute/bf-sign-2.c
! 107ac12f2b7270792072a2a36e7b3782  gcc/testsuite/gcc.c-torture/execute/bf64-1.c
  98152a763419b41838c8c9d841ad29a6  gcc/testsuite/gcc.c-torture/execute/bitfld-1.c
  005d6505de633a2ed0991ac8a94c4b8e  gcc/testsuite/gcc.c-torture/execute/bitfld-2.c
  99a449c3b4f58a78e441a461df3f513f  gcc/testsuite/gcc.c-torture/execute/bitfld-3.c
--- 26261,26267 ----
  cf491abd2df5513193c96d9605cc5bc8  gcc/testsuite/gcc.c-torture/execute/bf-pack-1.c
  32808e6c66c89fb17b1631fcfaa6ab2b  gcc/testsuite/gcc.c-torture/execute/bf-sign-1.c
  7e81dc4cdd5c62169f611e513538c801  gcc/testsuite/gcc.c-torture/execute/bf-sign-2.c
! 57a7c08d79c2c2f2e65b96c5d353aad5  gcc/testsuite/gcc.c-torture/execute/bf64-1.c
  98152a763419b41838c8c9d841ad29a6  gcc/testsuite/gcc.c-torture/execute/bitfld-1.c
  005d6505de633a2ed0991ac8a94c4b8e  gcc/testsuite/gcc.c-torture/execute/bitfld-2.c
  99a449c3b4f58a78e441a461df3f513f  gcc/testsuite/gcc.c-torture/execute/bitfld-3.c
*************** caa74354806f94b1777d3d438547d909  gcc/te
*** 25101,25107 ****
  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
! 0e3e56a5232485824e68deda49cd59dd  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
--- 26291,26297 ----
  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
! 5a5a8049360b0b34c2b64e6928160e1d  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
*************** a1b0a5a4a54a0a53c8297599c3fc2a01  gcc/te
*** 25152,25159 ****
  2787503e5745bbe8beaec95f19bab5fb  gcc/testsuite/gcc.c-torture/execute/builtins/memmove-chk.x
  12d5271f2b0ee71140bbd923f27a8c94  gcc/testsuite/gcc.c-torture/execute/builtins/memmove-lib.c
  44fb33d720704bce79c5289fbaadfa38  gcc/testsuite/gcc.c-torture/execute/builtins/memmove.c
! 6e62dc5216faaa7d416e4e58ab5b46ae  gcc/testsuite/gcc.c-torture/execute/builtins/memops-asm-lib.c
! eff774129914eb95974ca48b4e5d8454  gcc/testsuite/gcc.c-torture/execute/builtins/memops-asm.c
  d5b51664c6ca431aadc9eb21024bcb22  gcc/testsuite/gcc.c-torture/execute/builtins/memops-asm.x
  1a3ea4e36df441704d8d1b28df3bd7ed  gcc/testsuite/gcc.c-torture/execute/builtins/mempcpy-2-lib.c
  a465aeeb9de47b64d250c6d3491adbf8  gcc/testsuite/gcc.c-torture/execute/builtins/mempcpy-2.c
--- 26342,26349 ----
  2787503e5745bbe8beaec95f19bab5fb  gcc/testsuite/gcc.c-torture/execute/builtins/memmove-chk.x
  12d5271f2b0ee71140bbd923f27a8c94  gcc/testsuite/gcc.c-torture/execute/builtins/memmove-lib.c
  44fb33d720704bce79c5289fbaadfa38  gcc/testsuite/gcc.c-torture/execute/builtins/memmove.c
! 7a629f441583bd196089269079d4aec4  gcc/testsuite/gcc.c-torture/execute/builtins/memops-asm-lib.c
! 176446015856221da3fd0a072b42e4e1  gcc/testsuite/gcc.c-torture/execute/builtins/memops-asm.c
  d5b51664c6ca431aadc9eb21024bcb22  gcc/testsuite/gcc.c-torture/execute/builtins/memops-asm.x
  1a3ea4e36df441704d8d1b28df3bd7ed  gcc/testsuite/gcc.c-torture/execute/builtins/mempcpy-2-lib.c
  a465aeeb9de47b64d250c6d3491adbf8  gcc/testsuite/gcc.c-torture/execute/builtins/mempcpy-2.c
*************** dac7b8ec4720c2dc1cf479bbaf7d384b  gcc/te
*** 25253,25260 ****
  97b4faaa83f90c9bd29283bf04391e4c  gcc/testsuite/gcc.c-torture/execute/cmpsf-1.c
  6893dd4c6d9027e3efe459742565f4da  gcc/testsuite/gcc.c-torture/execute/cmpsi-1.c
  f3ea178896b7ff7d7224f7530b85c9dc  gcc/testsuite/gcc.c-torture/execute/cmpsi-2.c
! eac554514a21ac127b2ad7fe8b8799a6  gcc/testsuite/gcc.c-torture/execute/comp-goto-1.c
! 115b9ffef9e855a78c19deb1b45c8541  gcc/testsuite/gcc.c-torture/execute/comp-goto-2.c
  f085b9359ce3c84fa1ab085ae3431f33  gcc/testsuite/gcc.c-torture/execute/compare-1.c
  78ba559f49bac44634d2e1dead363844  gcc/testsuite/gcc.c-torture/execute/compare-2.c
  49f7667a3a39e8cfa19c2601a70906a8  gcc/testsuite/gcc.c-torture/execute/compare-3.c
--- 26443,26450 ----
  97b4faaa83f90c9bd29283bf04391e4c  gcc/testsuite/gcc.c-torture/execute/cmpsf-1.c
  6893dd4c6d9027e3efe459742565f4da  gcc/testsuite/gcc.c-torture/execute/cmpsi-1.c
  f3ea178896b7ff7d7224f7530b85c9dc  gcc/testsuite/gcc.c-torture/execute/cmpsi-2.c
! 14ad99043ae804d9a687ffc8b1a9fc77  gcc/testsuite/gcc.c-torture/execute/comp-goto-1.c
! 1e345963372cddf85354c0a3c4525096  gcc/testsuite/gcc.c-torture/execute/comp-goto-2.c
  f085b9359ce3c84fa1ab085ae3431f33  gcc/testsuite/gcc.c-torture/execute/compare-1.c
  78ba559f49bac44634d2e1dead363844  gcc/testsuite/gcc.c-torture/execute/compare-2.c
  49f7667a3a39e8cfa19c2601a70906a8  gcc/testsuite/gcc.c-torture/execute/compare-3.c
*************** f085b9359ce3c84fa1ab085ae3431f33  gcc/te
*** 25263,25269 ****
  83b243eacc68558c7a437161f1827c0e  gcc/testsuite/gcc.c-torture/execute/complex-3.c
  938894cfa092562627c3ca3857b4cfce  gcc/testsuite/gcc.c-torture/execute/complex-4.c
  e1b798d44ceb5c3854c30678f6defd59  gcc/testsuite/gcc.c-torture/execute/complex-5.c
! 5967a4f9312c2ec16283589164cf3d1f  gcc/testsuite/gcc.c-torture/execute/complex-6.c
  7dde8e0ac91f3c61f81aa1e7a8dfa338  gcc/testsuite/gcc.c-torture/execute/complex-7.c
  d1fb88dfc66950cce25732eda9376105  gcc/testsuite/gcc.c-torture/execute/compndlit-1.c
  192df9f6265b32749eec07de13e27d10  gcc/testsuite/gcc.c-torture/execute/const-addr-expr-1.c
--- 26453,26459 ----
  83b243eacc68558c7a437161f1827c0e  gcc/testsuite/gcc.c-torture/execute/complex-3.c
  938894cfa092562627c3ca3857b4cfce  gcc/testsuite/gcc.c-torture/execute/complex-4.c
  e1b798d44ceb5c3854c30678f6defd59  gcc/testsuite/gcc.c-torture/execute/complex-5.c
! c3003b91d6c36b0aeb5f6f4b23916d29  gcc/testsuite/gcc.c-torture/execute/complex-6.c
  7dde8e0ac91f3c61f81aa1e7a8dfa338  gcc/testsuite/gcc.c-torture/execute/complex-7.c
  d1fb88dfc66950cce25732eda9376105  gcc/testsuite/gcc.c-torture/execute/compndlit-1.c
  192df9f6265b32749eec07de13e27d10  gcc/testsuite/gcc.c-torture/execute/const-addr-expr-1.c
*************** b88415410e81b02068f1474a644bd707  gcc/te
*** 25281,25301 ****
  0a0fc31962c133c8409a816cab6e4e88  gcc/testsuite/gcc.c-torture/execute/divmod-1.c
  9e5a753f71d6979559e6274f0b3bf1c9  gcc/testsuite/gcc.c-torture/execute/doloop-1.c
  bed9755f43cf6bcfe197ea6254515cc7  gcc/testsuite/gcc.c-torture/execute/doloop-2.c
! ef6808f7a0b15742ba9f1a4c7e536482  gcc/testsuite/gcc.c-torture/execute/eeprof-1.c
  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
! 7edae5ff9aeda16714ecc565cc3b269b  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
  8dee21292eb0545b049b5e2dd3fe21dd  gcc/testsuite/gcc.c-torture/execute/float-floor.c
  4c3d6e8ef819da9ec61210a6df3315c8  gcc/testsuite/gcc.c-torture/execute/floatunsisf-1.c
! 7f567a28d7cad45cc59af889d364b6bd  gcc/testsuite/gcc.c-torture/execute/fprintf-1.c
! 83f43c335885ee407497c70af29f3ca4  gcc/testsuite/gcc.c-torture/execute/fprintf-chk-1.c
  d3b5b37c4d7486d3dedb71055717ecef  gcc/testsuite/gcc.c-torture/execute/frame-address.c
  9052c118de9977e04df6f3eb53a232a8  gcc/testsuite/gcc.c-torture/execute/func-ptr-1.c
! 41047f62af15b1525a6e16a4a8801cbf  gcc/testsuite/gcc.c-torture/execute/gofast.c
  d7e5d823095813f4e037fc2146b69922  gcc/testsuite/gcc.c-torture/execute/ieee/20000320-1.c
  739ddcf743d3b57ec98e87c96cbb64b0  gcc/testsuite/gcc.c-torture/execute/ieee/20000320-1.x
  e71614fc99f4d92507caf550d9cc771d  gcc/testsuite/gcc.c-torture/execute/ieee/20001122-1.c
--- 26471,26491 ----
  0a0fc31962c133c8409a816cab6e4e88  gcc/testsuite/gcc.c-torture/execute/divmod-1.c
  9e5a753f71d6979559e6274f0b3bf1c9  gcc/testsuite/gcc.c-torture/execute/doloop-1.c
  bed9755f43cf6bcfe197ea6254515cc7  gcc/testsuite/gcc.c-torture/execute/doloop-2.c
! a28687362218e941211035984ca40062  gcc/testsuite/gcc.c-torture/execute/eeprof-1.c
  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
! f4445e1564ed93f141d02ff4644ad3a1  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
  8dee21292eb0545b049b5e2dd3fe21dd  gcc/testsuite/gcc.c-torture/execute/float-floor.c
  4c3d6e8ef819da9ec61210a6df3315c8  gcc/testsuite/gcc.c-torture/execute/floatunsisf-1.c
! bcea053f530aa11916510fa094950161  gcc/testsuite/gcc.c-torture/execute/fprintf-1.c
! e09dd80f5a40a566b1014f568f2c3ba4  gcc/testsuite/gcc.c-torture/execute/fprintf-chk-1.c
  d3b5b37c4d7486d3dedb71055717ecef  gcc/testsuite/gcc.c-torture/execute/frame-address.c
  9052c118de9977e04df6f3eb53a232a8  gcc/testsuite/gcc.c-torture/execute/func-ptr-1.c
! c6a25cdd568c96b091a4ad69470802a4  gcc/testsuite/gcc.c-torture/execute/gofast.c
  d7e5d823095813f4e037fc2146b69922  gcc/testsuite/gcc.c-torture/execute/ieee/20000320-1.c
  739ddcf743d3b57ec98e87c96cbb64b0  gcc/testsuite/gcc.c-torture/execute/ieee/20000320-1.x
  e71614fc99f4d92507caf550d9cc771d  gcc/testsuite/gcc.c-torture/execute/ieee/20001122-1.c
*************** b6187f5e7f437af55596d4899703c64d  gcc/te
*** 25339,25344 ****
--- 26529,26535 ----
  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
*************** a1358d8e0522bbfa2c111c1e2b4615aa  gcc/te
*** 25346,25352 ****
  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
! d54c9d0c127c598cec71ba57ed9b4262  gcc/testsuite/gcc.c-torture/execute/ieee/ieee.exp
  2972785d9e0fae01c431e5add1b9119f  gcc/testsuite/gcc.c-torture/execute/ieee/inf-1.c
  26096190d1a06574ef29ac8e9b38b168  gcc/testsuite/gcc.c-torture/execute/ieee/inf-2.c
  2b23329ee0437a7e47b835bee3d9d3e1  gcc/testsuite/gcc.c-torture/execute/ieee/inf-3.c
--- 26537,26543 ----
  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
! cb856ca2fee6027af55445d4839f3b9b  gcc/testsuite/gcc.c-torture/execute/ieee/ieee.exp
  2972785d9e0fae01c431e5add1b9119f  gcc/testsuite/gcc.c-torture/execute/ieee/inf-1.c
  26096190d1a06574ef29ac8e9b38b168  gcc/testsuite/gcc.c-torture/execute/ieee/inf-2.c
  2b23329ee0437a7e47b835bee3d9d3e1  gcc/testsuite/gcc.c-torture/execute/ieee/inf-3.c
*************** b78c79b50407f5479e1a352d840b0d41  gcc/te
*** 25371,25376 ****
--- 26562,26568 ----
  a16df037c76adbc0a3081a51f1770b49  gcc/testsuite/gcc.c-torture/execute/ieee/pr67218.c
  6b57d671d14f682212679d0df178da53  gcc/testsuite/gcc.c-torture/execute/ieee/pr72824-2.c
  69fc297e7bf7f2a44efa07b90f5297e3  gcc/testsuite/gcc.c-torture/execute/ieee/pr72824.c
+ 07e1ee7132e0d718d46828e4431bf2c4  gcc/testsuite/gcc.c-torture/execute/ieee/pr84235.c
  de8e51d9a0744b986e2e1c4d205cb1f4  gcc/testsuite/gcc.c-torture/execute/ieee/rbug.c
  7116b2d7f2d33fbc73903c620f3bca16  gcc/testsuite/gcc.c-torture/execute/ieee/rbug.x
  205da00dccd6dcf1575a79b20ce968a4  gcc/testsuite/gcc.c-torture/execute/ieee/unsafe-fp-assoc-1.c
*************** b7b8614a59a6ad84a931ec79d40897dc  gcc/te
*** 25395,25402 ****
  fd8619fd30dca66f688bfecaab80d41a  gcc/testsuite/gcc.c-torture/execute/loop-2c.c
  979b99705980f816276d46115167f788  gcc/testsuite/gcc.c-torture/execute/loop-2d.c
  56954338863780259bd848f23d1f5841  gcc/testsuite/gcc.c-torture/execute/loop-2e.c
! a03d1dc9a7a55f647c88d67e28f97e1e  gcc/testsuite/gcc.c-torture/execute/loop-2f.c
! 650f60d22a459925f6e10438d805065e  gcc/testsuite/gcc.c-torture/execute/loop-2g.c
  968b158d56c9a559e3e9a57fd9d3d8bc  gcc/testsuite/gcc.c-torture/execute/loop-3.c
  542ede686141a7543f8a52f6172acd25  gcc/testsuite/gcc.c-torture/execute/loop-3b.c
  896e19b7c61495ee2c2e8218973d997f  gcc/testsuite/gcc.c-torture/execute/loop-3c.c
--- 26587,26594 ----
  fd8619fd30dca66f688bfecaab80d41a  gcc/testsuite/gcc.c-torture/execute/loop-2c.c
  979b99705980f816276d46115167f788  gcc/testsuite/gcc.c-torture/execute/loop-2d.c
  56954338863780259bd848f23d1f5841  gcc/testsuite/gcc.c-torture/execute/loop-2e.c
! 7e07f03573b6a221ae7c54b122cfa754  gcc/testsuite/gcc.c-torture/execute/loop-2f.c
! 128280e783f1cc579bc093f33b44e2b7  gcc/testsuite/gcc.c-torture/execute/loop-2g.c
  968b158d56c9a559e3e9a57fd9d3d8bc  gcc/testsuite/gcc.c-torture/execute/loop-3.c
  542ede686141a7543f8a52f6172acd25  gcc/testsuite/gcc.c-torture/execute/loop-3b.c
  896e19b7c61495ee2c2e8218973d997f  gcc/testsuite/gcc.c-torture/execute/loop-3c.c
*************** f50a3bdd1c478adab09f3e017ea9eed4  gcc/te
*** 25415,25421 ****
  fc7ff12f9a631694f1405c85c8acdbe8  gcc/testsuite/gcc.c-torture/execute/mayalias-2.c
  f08201ddad8e116d00963e214b8f1f67  gcc/testsuite/gcc.c-torture/execute/mayalias-3.c
  4b947eae575a6a921be4eb4213bba3d3  gcc/testsuite/gcc.c-torture/execute/medce-1.c
! 7ed7c30457360937f534a68f78c9195d  gcc/testsuite/gcc.c-torture/execute/memcpy-1.c
  be7246e0ee46215e735f89441e8d2f37  gcc/testsuite/gcc.c-torture/execute/memcpy-2.c
  f06d20a2edb7874088b2a1bf132acd61  gcc/testsuite/gcc.c-torture/execute/memcpy-bi.c
  1941a747f6cd51980e3a0069afe99f8a  gcc/testsuite/gcc.c-torture/execute/memset-1.c
--- 26607,26613 ----
  fc7ff12f9a631694f1405c85c8acdbe8  gcc/testsuite/gcc.c-torture/execute/mayalias-2.c
  f08201ddad8e116d00963e214b8f1f67  gcc/testsuite/gcc.c-torture/execute/mayalias-3.c
  4b947eae575a6a921be4eb4213bba3d3  gcc/testsuite/gcc.c-torture/execute/medce-1.c
! 302fe8219e91036741bf5805f5103971  gcc/testsuite/gcc.c-torture/execute/memcpy-1.c
  be7246e0ee46215e735f89441e8d2f37  gcc/testsuite/gcc.c-torture/execute/memcpy-2.c
  f06d20a2edb7874088b2a1bf132acd61  gcc/testsuite/gcc.c-torture/execute/memcpy-bi.c
  1941a747f6cd51980e3a0069afe99f8a  gcc/testsuite/gcc.c-torture/execute/memset-1.c
*************** cd68c635f7ee7b9d61cd6fb30e11f695  gcc/te
*** 25425,25439 ****
  c47c383b81916dc5e055e857776ce98f  gcc/testsuite/gcc.c-torture/execute/mod-1.c
  c36723455fcef225d099e9718b35749b  gcc/testsuite/gcc.c-torture/execute/mode-dependent-address.c
  42a724c275e627732267a4990711c28b  gcc/testsuite/gcc.c-torture/execute/multdi-1.c
! 558a99bf90e011acde6ff3a4538d3ee5  gcc/testsuite/gcc.c-torture/execute/multi-ix.c
  a562cb07e318deddf26e66e296dccff5  gcc/testsuite/gcc.c-torture/execute/nest-align-1.c
  b07a89f75cb6cca54f6a324b7bbae1ab  gcc/testsuite/gcc.c-torture/execute/nest-stdar-1.c
! 3fc3711523c60ede825fe7d2be3620e1  gcc/testsuite/gcc.c-torture/execute/nestfunc-1.c
! 41499442e4d8bf92f1ed068c66da251b  gcc/testsuite/gcc.c-torture/execute/nestfunc-2.c
! 8662acc6c14fb65b5f3a5361c00331d8  gcc/testsuite/gcc.c-torture/execute/nestfunc-3.c
! 25e730a229a265f7a83d7513efd43f30  gcc/testsuite/gcc.c-torture/execute/nestfunc-4.c
! 489f2903a8a0dfcc52821885bbfa9163  gcc/testsuite/gcc.c-torture/execute/nestfunc-5.c
! f3d238f62b20d860f70d778230edd96f  gcc/testsuite/gcc.c-torture/execute/nestfunc-6.c
  6896ae9f33bd0e4a4be1233cac5fdf70  gcc/testsuite/gcc.c-torture/execute/nestfunc-7.c
  e854bc80f793329b6c96d31e3f80a012  gcc/testsuite/gcc.c-torture/execute/p18298.c
  3c169902d628502c10f1402f266d1ce3  gcc/testsuite/gcc.c-torture/execute/packed-1.c
--- 26617,26631 ----
  c47c383b81916dc5e055e857776ce98f  gcc/testsuite/gcc.c-torture/execute/mod-1.c
  c36723455fcef225d099e9718b35749b  gcc/testsuite/gcc.c-torture/execute/mode-dependent-address.c
  42a724c275e627732267a4990711c28b  gcc/testsuite/gcc.c-torture/execute/multdi-1.c
! f0d014a801d213bd03b56cddfc596811  gcc/testsuite/gcc.c-torture/execute/multi-ix.c
  a562cb07e318deddf26e66e296dccff5  gcc/testsuite/gcc.c-torture/execute/nest-align-1.c
  b07a89f75cb6cca54f6a324b7bbae1ab  gcc/testsuite/gcc.c-torture/execute/nest-stdar-1.c
! 58a07570a5bac07cd19cb1940b4bd3d3  gcc/testsuite/gcc.c-torture/execute/nestfunc-1.c
! 0062dfdbad0104caac056f5a08b42a5a  gcc/testsuite/gcc.c-torture/execute/nestfunc-2.c
! 261f5ab856142420aa77c6aae6500ec6  gcc/testsuite/gcc.c-torture/execute/nestfunc-3.c
! a1747d3f25b202a434a5b39127e8ea5f  gcc/testsuite/gcc.c-torture/execute/nestfunc-4.c
! 2ca880bb55d87383e26ffc8fa0112943  gcc/testsuite/gcc.c-torture/execute/nestfunc-5.c
! 946aaf0b744e9e60a1b63616ecd74ab0  gcc/testsuite/gcc.c-torture/execute/nestfunc-6.c
  6896ae9f33bd0e4a4be1233cac5fdf70  gcc/testsuite/gcc.c-torture/execute/nestfunc-7.c
  e854bc80f793329b6c96d31e3f80a012  gcc/testsuite/gcc.c-torture/execute/p18298.c
  3c169902d628502c10f1402f266d1ce3  gcc/testsuite/gcc.c-torture/execute/packed-1.c
*************** f8cf5a460b360bafad4142b746516305  gcc/te
*** 25460,25466 ****
  541908079884467c4a08f7987a344a71  gcc/testsuite/gcc.c-torture/execute/pr20466-1.c
  f881996934b53f50e79ef53efa9360c5  gcc/testsuite/gcc.c-torture/execute/pr20527-1.c
  f1ac9598d8e4a0e0e0722af37b489282  gcc/testsuite/gcc.c-torture/execute/pr20601-1.c
! d7b987d532a32389769a6785e42ba095  gcc/testsuite/gcc.c-torture/execute/pr20621-1.c
  d0b7114647f223fd5d76807fabb2b2f4  gcc/testsuite/gcc.c-torture/execute/pr21173.c
  61c6c8c4c1deb8b1fe25a10b4b953f3d  gcc/testsuite/gcc.c-torture/execute/pr21331.c
  2391d246ccb6efc08517c7679f7c73b2  gcc/testsuite/gcc.c-torture/execute/pr21964-1.c
--- 26652,26658 ----
  541908079884467c4a08f7987a344a71  gcc/testsuite/gcc.c-torture/execute/pr20466-1.c
  f881996934b53f50e79ef53efa9360c5  gcc/testsuite/gcc.c-torture/execute/pr20527-1.c
  f1ac9598d8e4a0e0e0722af37b489282  gcc/testsuite/gcc.c-torture/execute/pr20601-1.c
! affcc44de516e8e0c367fc2a2571d57d  gcc/testsuite/gcc.c-torture/execute/pr20621-1.c
  d0b7114647f223fd5d76807fabb2b2f4  gcc/testsuite/gcc.c-torture/execute/pr21173.c
  61c6c8c4c1deb8b1fe25a10b4b953f3d  gcc/testsuite/gcc.c-torture/execute/pr21331.c
  2391d246ccb6efc08517c7679f7c73b2  gcc/testsuite/gcc.c-torture/execute/pr21964-1.c
*************** f329f12d16c42f0725561cd741dfe0fc  gcc/te
*** 25478,25489 ****
  bba94602a8d44fc47d974658cc1eda4b  gcc/testsuite/gcc.c-torture/execute/pr22493-1.c
  dd00be933cede2d9e5e60bb682a83aee  gcc/testsuite/gcc.c-torture/execute/pr22630.c
  cfcc861f4888e288449ba119b16f4191  gcc/testsuite/gcc.c-torture/execute/pr23047.c
! 19e1472a530a8ae465bb5d2a33f37de3  gcc/testsuite/gcc.c-torture/execute/pr23135.c
  daf80206ebf1679b1938f38f4dd13747  gcc/testsuite/gcc.c-torture/execute/pr23324.c
  3ee2d38368725999e95e141a39e863a6  gcc/testsuite/gcc.c-torture/execute/pr23467.c
  a832db54bb9231364468a1a69cd515f0  gcc/testsuite/gcc.c-torture/execute/pr23604.c
  5fcddec75b4fced0792d11eb3f66e76e  gcc/testsuite/gcc.c-torture/execute/pr23941.c
! a307616c99fd7b31d65e1796324adc84  gcc/testsuite/gcc.c-torture/execute/pr24135.c
  f25f542bc49307013f5b225dba0bd5fd  gcc/testsuite/gcc.c-torture/execute/pr24141.c
  3ee621bb1a542ed5df90bf2097bc9b9b  gcc/testsuite/gcc.c-torture/execute/pr24142.c
  b515840f11a33c86ce043878f117b6e0  gcc/testsuite/gcc.c-torture/execute/pr24716.c
--- 26670,26681 ----
  bba94602a8d44fc47d974658cc1eda4b  gcc/testsuite/gcc.c-torture/execute/pr22493-1.c
  dd00be933cede2d9e5e60bb682a83aee  gcc/testsuite/gcc.c-torture/execute/pr22630.c
  cfcc861f4888e288449ba119b16f4191  gcc/testsuite/gcc.c-torture/execute/pr23047.c
! c3e8f0b9380c70dce6af34736ac05a0c  gcc/testsuite/gcc.c-torture/execute/pr23135.c
  daf80206ebf1679b1938f38f4dd13747  gcc/testsuite/gcc.c-torture/execute/pr23324.c
  3ee2d38368725999e95e141a39e863a6  gcc/testsuite/gcc.c-torture/execute/pr23467.c
  a832db54bb9231364468a1a69cd515f0  gcc/testsuite/gcc.c-torture/execute/pr23604.c
  5fcddec75b4fced0792d11eb3f66e76e  gcc/testsuite/gcc.c-torture/execute/pr23941.c
! 1b417781c9f4646dddcec928c90d20ef  gcc/testsuite/gcc.c-torture/execute/pr24135.c
  f25f542bc49307013f5b225dba0bd5fd  gcc/testsuite/gcc.c-torture/execute/pr24141.c
  3ee621bb1a542ed5df90bf2097bc9b9b  gcc/testsuite/gcc.c-torture/execute/pr24142.c
  b515840f11a33c86ce043878f117b6e0  gcc/testsuite/gcc.c-torture/execute/pr24716.c
*************** f41d8caa66b63ff232795983f577cb63  gcc/te
*** 25501,25507 ****
  fd0d0270a488f75fe62ed4aff01662f0  gcc/testsuite/gcc.c-torture/execute/pr28778.c
  5cac88d63606a2bf20afb3e6572d72fc  gcc/testsuite/gcc.c-torture/execute/pr28865.c
  8eda9d885d6a243be561e48ad8dde87a  gcc/testsuite/gcc.c-torture/execute/pr28982a.c
! ff69d16411ca85bf77f8b596a82ce1d3  gcc/testsuite/gcc.c-torture/execute/pr28982b.c
  3dbe8484075803f7c03d4ddc5f90eba0  gcc/testsuite/gcc.c-torture/execute/pr29006.c
  8fdd395c1423fa4f53d6a80db7c405b0  gcc/testsuite/gcc.c-torture/execute/pr29156.c
  09cf3b0932f0615136c16e1b47f1e6d4  gcc/testsuite/gcc.c-torture/execute/pr29695-1.c
--- 26693,26699 ----
  fd0d0270a488f75fe62ed4aff01662f0  gcc/testsuite/gcc.c-torture/execute/pr28778.c
  5cac88d63606a2bf20afb3e6572d72fc  gcc/testsuite/gcc.c-torture/execute/pr28865.c
  8eda9d885d6a243be561e48ad8dde87a  gcc/testsuite/gcc.c-torture/execute/pr28982a.c
! c7a3b95e66a85d1dade51e7a1357e102  gcc/testsuite/gcc.c-torture/execute/pr28982b.c
  3dbe8484075803f7c03d4ddc5f90eba0  gcc/testsuite/gcc.c-torture/execute/pr29006.c
  8fdd395c1423fa4f53d6a80db7c405b0  gcc/testsuite/gcc.c-torture/execute/pr29156.c
  09cf3b0932f0615136c16e1b47f1e6d4  gcc/testsuite/gcc.c-torture/execute/pr29695-1.c
*************** b867cfa3634ee9a89359b276c5068e9f  gcc/te
*** 25536,25542 ****
  a2e6067c4b982a27fd20ba814fe4d323  gcc/testsuite/gcc.c-torture/execute/pr34154.c
  620289aa8aa131ec35537e256200b529  gcc/testsuite/gcc.c-torture/execute/pr34176.c
  330cfce0caa9e6f8478c260e2f844729  gcc/testsuite/gcc.c-torture/execute/pr34415.c
! 4ca5bf2c29496baf0336b741389fc457  gcc/testsuite/gcc.c-torture/execute/pr34456.c
  01aa598710310e5a7b6317dd682b7ff3  gcc/testsuite/gcc.c-torture/execute/pr34768-1.c
  8613ebbe9a1d857ff130cabe7d53ee16  gcc/testsuite/gcc.c-torture/execute/pr34768-2.c
  04a5d2f3ffba95ecece5e9c58218589d  gcc/testsuite/gcc.c-torture/execute/pr34971.c
--- 26728,26734 ----
  a2e6067c4b982a27fd20ba814fe4d323  gcc/testsuite/gcc.c-torture/execute/pr34154.c
  620289aa8aa131ec35537e256200b529  gcc/testsuite/gcc.c-torture/execute/pr34176.c
  330cfce0caa9e6f8478c260e2f844729  gcc/testsuite/gcc.c-torture/execute/pr34415.c
! f082000e8da2a29dea5b1beb62b98858  gcc/testsuite/gcc.c-torture/execute/pr34456.c
  01aa598710310e5a7b6317dd682b7ff3  gcc/testsuite/gcc.c-torture/execute/pr34768-1.c
  8613ebbe9a1d857ff130cabe7d53ee16  gcc/testsuite/gcc.c-torture/execute/pr34768-2.c
  04a5d2f3ffba95ecece5e9c58218589d  gcc/testsuite/gcc.c-torture/execute/pr34971.c
*************** e9cb1c2432ef0f9ea44768c623c37161  gcc/te
*** 25544,25550 ****
  442add07b12adb32c053e1e1e2d6991b  gcc/testsuite/gcc.c-torture/execute/pr35163.c
  b78603bc3447c6c89f181b7f41b467de  gcc/testsuite/gcc.c-torture/execute/pr35231.c
  d231870739dd1d3df241989cecfa0bdd  gcc/testsuite/gcc.c-torture/execute/pr35390.c
! 760ff6334d92ecf2e67fc2459545a663  gcc/testsuite/gcc.c-torture/execute/pr35456.c
  e2e618ea38dca1617acc5a2fda1306c3  gcc/testsuite/gcc.c-torture/execute/pr35472.c
  67c722731945c8be1931f6763c3cd927  gcc/testsuite/gcc.c-torture/execute/pr35800.c
  371c242a2e268749d4cd9fbc601f1693  gcc/testsuite/gcc.c-torture/execute/pr36034-1.c
--- 26736,26742 ----
  442add07b12adb32c053e1e1e2d6991b  gcc/testsuite/gcc.c-torture/execute/pr35163.c
  b78603bc3447c6c89f181b7f41b467de  gcc/testsuite/gcc.c-torture/execute/pr35231.c
  d231870739dd1d3df241989cecfa0bdd  gcc/testsuite/gcc.c-torture/execute/pr35390.c
! 19d79730d215565d7a36ee80448f9b54  gcc/testsuite/gcc.c-torture/execute/pr35456.c
  e2e618ea38dca1617acc5a2fda1306c3  gcc/testsuite/gcc.c-torture/execute/pr35472.c
  67c722731945c8be1931f6763c3cd927  gcc/testsuite/gcc.c-torture/execute/pr35800.c
  371c242a2e268749d4cd9fbc601f1693  gcc/testsuite/gcc.c-torture/execute/pr36034-1.c
*************** f7f3243f94a8f9a130ba68f40d2354a6  gcc/te
*** 25576,25582 ****
  06cb84d17c6ab71ba5368161df22468b  gcc/testsuite/gcc.c-torture/execute/pr38969.c
  0b037104427b152bfe3ab5fb85c2bec7  gcc/testsuite/gcc.c-torture/execute/pr39100.c
  b15eb216d116729d134bf5de564f2b31  gcc/testsuite/gcc.c-torture/execute/pr39120.c
! b8fbd024c6ff6c2acaea20acea078772  gcc/testsuite/gcc.c-torture/execute/pr39228.c
  f1a244c441db3405ddd75e2a96da8eb5  gcc/testsuite/gcc.c-torture/execute/pr39233.c
  e91032a7cb0ee1b0a9b14d418efe6fb0  gcc/testsuite/gcc.c-torture/execute/pr39240.c
  85ed49bd757b2e55e3a5021a8462363f  gcc/testsuite/gcc.c-torture/execute/pr39339.c
--- 26768,26774 ----
  06cb84d17c6ab71ba5368161df22468b  gcc/testsuite/gcc.c-torture/execute/pr38969.c
  0b037104427b152bfe3ab5fb85c2bec7  gcc/testsuite/gcc.c-torture/execute/pr39100.c
  b15eb216d116729d134bf5de564f2b31  gcc/testsuite/gcc.c-torture/execute/pr39120.c
! 59bf078f3a8d928cb832f5f375297d9a  gcc/testsuite/gcc.c-torture/execute/pr39228.c
  f1a244c441db3405ddd75e2a96da8eb5  gcc/testsuite/gcc.c-torture/execute/pr39233.c
  e91032a7cb0ee1b0a9b14d418efe6fb0  gcc/testsuite/gcc.c-torture/execute/pr39240.c
  85ed49bd757b2e55e3a5021a8462363f  gcc/testsuite/gcc.c-torture/execute/pr39339.c
*************** e763b176bcaa84e63102add66d6a12e4  gcc/te
*** 25645,25651 ****
  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
! c119819eef2cfffb197b78d706f1af72  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
--- 26837,26843 ----
  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
*************** a13eb70aa3dbe0cf436e443e1d601804  gcc/te
*** 25840,25846 ****
  493a919b42c01e638c1c27ed6f69bdf8  gcc/testsuite/gcc.c-torture/execute/pr70222-1.c
  09a24ffb98aea183dbaba50377225152  gcc/testsuite/gcc.c-torture/execute/pr70222-2.c
  d980d67f1eb958e90351c3eb7cfd1297  gcc/testsuite/gcc.c-torture/execute/pr70429.c
! dff9b14c86690f58a83fe2a4a334f2d2  gcc/testsuite/gcc.c-torture/execute/pr70460.c
  58bb262f9c1fe471c7bd11fc8440aac8  gcc/testsuite/gcc.c-torture/execute/pr70566.c
  7356d2dac86027ec545537d18ff109d1  gcc/testsuite/gcc.c-torture/execute/pr70586.c
  62fe61038685cf3291d7f3fcb4e1c886  gcc/testsuite/gcc.c-torture/execute/pr70602.c
--- 27032,27038 ----
  493a919b42c01e638c1c27ed6f69bdf8  gcc/testsuite/gcc.c-torture/execute/pr70222-1.c
  09a24ffb98aea183dbaba50377225152  gcc/testsuite/gcc.c-torture/execute/pr70222-2.c
  d980d67f1eb958e90351c3eb7cfd1297  gcc/testsuite/gcc.c-torture/execute/pr70429.c
! 18c267703022bda37b3c73bcde4e8f78  gcc/testsuite/gcc.c-torture/execute/pr70460.c
  58bb262f9c1fe471c7bd11fc8440aac8  gcc/testsuite/gcc.c-torture/execute/pr70566.c
  7356d2dac86027ec545537d18ff109d1  gcc/testsuite/gcc.c-torture/execute/pr70586.c
  62fe61038685cf3291d7f3fcb4e1c886  gcc/testsuite/gcc.c-torture/execute/pr70602.c
*************** c2351af41d86a7ee9870e7833d447361  gcc/te
*** 25866,25872 ****
  13a23707b6089ab5f964f6b35b269d05  gcc/testsuite/gcc.c-torture/execute/pr78559.c
  4483632f7076ca08f49d9212e7c75bbe  gcc/testsuite/gcc.c-torture/execute/pr78586.c
  e378b6043986bf34c640d3c898b04895  gcc/testsuite/gcc.c-torture/execute/pr78617.c
! ea694c9bd3f72a5878a82ed6e0cc1545  gcc/testsuite/gcc.c-torture/execute/pr78622.c
  44cafb12b016e0a2a179322408c6ddc3  gcc/testsuite/gcc.c-torture/execute/pr78675.c
  40f0d7c5cff80507ff47468cc985f6ee  gcc/testsuite/gcc.c-torture/execute/pr78720.c
  fad87d31a5344aab87c872f99dea1ec1  gcc/testsuite/gcc.c-torture/execute/pr78726.c
--- 27058,27064 ----
  13a23707b6089ab5f964f6b35b269d05  gcc/testsuite/gcc.c-torture/execute/pr78559.c
  4483632f7076ca08f49d9212e7c75bbe  gcc/testsuite/gcc.c-torture/execute/pr78586.c
  e378b6043986bf34c640d3c898b04895  gcc/testsuite/gcc.c-torture/execute/pr78617.c
! 2ec5e8beb07dc552adab94d95ecb9798  gcc/testsuite/gcc.c-torture/execute/pr78622.c
  44cafb12b016e0a2a179322408c6ddc3  gcc/testsuite/gcc.c-torture/execute/pr78675.c
  40f0d7c5cff80507ff47468cc985f6ee  gcc/testsuite/gcc.c-torture/execute/pr78720.c
  fad87d31a5344aab87c872f99dea1ec1  gcc/testsuite/gcc.c-torture/execute/pr78726.c
*************** e1282d6044e34443f85ed878da7dc97b  gcc/te
*** 25882,25898 ****
  916c2eb5b50ee9b4b27c4e99ea139cf4  gcc/testsuite/gcc.c-torture/execute/pr79737-1.c
  3ab6c04c2afcb7a13db02a5b52468512  gcc/testsuite/gcc.c-torture/execute/pr79737-2.c
  37923c71ed94f165daf72ce8348aac81  gcc/testsuite/gcc.c-torture/execute/pr80153.c
  45833b96ada0857a18d70fa0804e7f6f  gcc/testsuite/gcc.c-torture/execute/pr80501.c
  0ec1bcb863c85b3589a1923d51468ba2  gcc/testsuite/gcc.c-torture/execute/pr80692.c
! 5275aec3ca25a210e00c7aadb2e366c4  gcc/testsuite/gcc.c-torture/execute/pr81503.c
  60fc747dbd1d50baf95c6269175ad273  gcc/testsuite/gcc.c-torture/execute/pr81555.c
  a3668023bbf40452e1d0a33bfb6710f1  gcc/testsuite/gcc.c-torture/execute/pr81556.c
  6477b94998805ccc2d01eb6a5264be86  gcc/testsuite/gcc.c-torture/execute/pr81588.c
  82ecaeaef4478746e0f34cb881ad4e74  gcc/testsuite/gcc.c-torture/execute/pr82192.c
  a9b36d09db3e98d889d5dabebaac9c84  gcc/testsuite/gcc.c-torture/execute/pr82524.c
  2cab2fe97f5bacd44f67721ad29e5bf1  gcc/testsuite/gcc.c-torture/execute/pr83269.c
! 85441b3599a9d20a4ede0f10c54a4e6b  gcc/testsuite/gcc.c-torture/execute/printf-1.c
! 54f80bf321bfe46d44040493d9821a03  gcc/testsuite/gcc.c-torture/execute/printf-chk-1.c
  f397d221ccf3a7ce631cf42078dfadb5  gcc/testsuite/gcc.c-torture/execute/pta-field-1.c
  559d28c240437de1613fea4a132f68c1  gcc/testsuite/gcc.c-torture/execute/pta-field-2.c
  25b0ab996245c8f0a89b359cb2f3d01b  gcc/testsuite/gcc.c-torture/execute/ptr-arith-1.c
--- 27074,27113 ----
  916c2eb5b50ee9b4b27c4e99ea139cf4  gcc/testsuite/gcc.c-torture/execute/pr79737-1.c
  3ab6c04c2afcb7a13db02a5b52468512  gcc/testsuite/gcc.c-torture/execute/pr79737-2.c
  37923c71ed94f165daf72ce8348aac81  gcc/testsuite/gcc.c-torture/execute/pr80153.c
+ 859cd5036773ecc731c2ccc5d9605303  gcc/testsuite/gcc.c-torture/execute/pr80421.c
  45833b96ada0857a18d70fa0804e7f6f  gcc/testsuite/gcc.c-torture/execute/pr80501.c
  0ec1bcb863c85b3589a1923d51468ba2  gcc/testsuite/gcc.c-torture/execute/pr80692.c
! c8712dfea0da98a9a688f64ca050f3e3  gcc/testsuite/gcc.c-torture/execute/pr81281.c
! ecde75fa6429ca69397a9d9aae2faedf  gcc/testsuite/gcc.c-torture/execute/pr81423.c
! ec3c1892095b3297126ddf98b8b3449a  gcc/testsuite/gcc.c-torture/execute/pr81503.c
  60fc747dbd1d50baf95c6269175ad273  gcc/testsuite/gcc.c-torture/execute/pr81555.c
  a3668023bbf40452e1d0a33bfb6710f1  gcc/testsuite/gcc.c-torture/execute/pr81556.c
  6477b94998805ccc2d01eb6a5264be86  gcc/testsuite/gcc.c-torture/execute/pr81588.c
+ e53d5310cfe056bf19e8aa67ec8d5059  gcc/testsuite/gcc.c-torture/execute/pr81913.c
  82ecaeaef4478746e0f34cb881ad4e74  gcc/testsuite/gcc.c-torture/execute/pr82192.c
+ 45051ac07e539ca44b85ede7f2e9260f  gcc/testsuite/gcc.c-torture/execute/pr82210.c
+ 7c1d22ab2ef05e68b368bc0c6eeb122f  gcc/testsuite/gcc.c-torture/execute/pr82387.c
+ d1484d0db710d37c40c482f2b08c98f1  gcc/testsuite/gcc.c-torture/execute/pr82388.c
  a9b36d09db3e98d889d5dabebaac9c84  gcc/testsuite/gcc.c-torture/execute/pr82524.c
+ a225191098daa4f8f4840f735bd34fb2  gcc/testsuite/gcc.c-torture/execute/pr82954.c
  2cab2fe97f5bacd44f67721ad29e5bf1  gcc/testsuite/gcc.c-torture/execute/pr83269.c
! 773597250b64413fdffd4a3cc5e0c843  gcc/testsuite/gcc.c-torture/execute/pr83298.c
! 498066753e3836d96c8656fc9d513569  gcc/testsuite/gcc.c-torture/execute/pr83362.c
! f8456b721d6a5e0056d6c45e419ec296  gcc/testsuite/gcc.c-torture/execute/pr83383.c
! 904f8c84cd4337c9b3f7d584dac8d9c9  gcc/testsuite/gcc.c-torture/execute/pr83477.c
! 7fc91d19a6216a423bd4d8b82adf4373  gcc/testsuite/gcc.c-torture/execute/pr84169.c
! fde572fe69fc1d91c46e39656092a3da  gcc/testsuite/gcc.c-torture/execute/pr84339.c
! 6e055e260191229446d875705b4f9792  gcc/testsuite/gcc.c-torture/execute/pr84478.c
! 3d414d9354983740f6fac73597931d61  gcc/testsuite/gcc.c-torture/execute/pr84524.c
! b0a8a4011318f7b4aa4b9ef5d3016133  gcc/testsuite/gcc.c-torture/execute/pr84748.c
! d22eebae980f0f4aaeade03a07b278f2  gcc/testsuite/gcc.c-torture/execute/pr85095.c
! 3f5f2840b9df7c85453551dce99494b6  gcc/testsuite/gcc.c-torture/execute/pr85156.c
! 5a1a600029d8261e114d2776eb35d7af  gcc/testsuite/gcc.c-torture/execute/pr85169.c
! cd16d235517336c5392e2241692365ca  gcc/testsuite/gcc.c-torture/execute/pr85331.c
! ebba06cada42b66940cf9eb3e3d99c95  gcc/testsuite/gcc.c-torture/execute/pr85529-1.c
! b0302a41f89aa28cacf4f6f513b724d5  gcc/testsuite/gcc.c-torture/execute/pr85529-2.c
! 8587088d2eab0e974762ba6cd20b4f04  gcc/testsuite/gcc.c-torture/execute/printf-1.c
! 9e89c9802e280d635a7bc6756bbaf6e6  gcc/testsuite/gcc.c-torture/execute/printf-chk-1.c
  f397d221ccf3a7ce631cf42078dfadb5  gcc/testsuite/gcc.c-torture/execute/pta-field-1.c
  559d28c240437de1613fea4a132f68c1  gcc/testsuite/gcc.c-torture/execute/pta-field-2.c
  25b0ab996245c8f0a89b359cb2f3d01b  gcc/testsuite/gcc.c-torture/execute/ptr-arith-1.c
*************** c435a53e5f970746758c463fa3a97598  gcc/te
*** 25929,25935 ****
  5b06512c7cb3de4c838911dd5a270b7a  gcc/testsuite/gcc.c-torture/execute/string-opt-18.c
  3ee0fe2c4448058e4af3b8e21db5b123  gcc/testsuite/gcc.c-torture/execute/string-opt-5.c
  e9fd878ea9f033fd4b3b73c1a883fc29  gcc/testsuite/gcc.c-torture/execute/strlen-1.c
! 673b3f2074eecb2b5cc28375a00e67b7  gcc/testsuite/gcc.c-torture/execute/strncmp-1.c
  38b5ccdc5ed95557c23b1630d7c30bc1  gcc/testsuite/gcc.c-torture/execute/struct-aliasing-1.c
  95454c6bf544eaafd61a30e4315982c9  gcc/testsuite/gcc.c-torture/execute/struct-cpy-1.c
  0d008ee88148f8e935176646ba3c5c8f  gcc/testsuite/gcc.c-torture/execute/struct-ini-1.c
--- 27144,27150 ----
  5b06512c7cb3de4c838911dd5a270b7a  gcc/testsuite/gcc.c-torture/execute/string-opt-18.c
  3ee0fe2c4448058e4af3b8e21db5b123  gcc/testsuite/gcc.c-torture/execute/string-opt-5.c
  e9fd878ea9f033fd4b3b73c1a883fc29  gcc/testsuite/gcc.c-torture/execute/strlen-1.c
! ca6d3287af834b505dec44cdb3780ea8  gcc/testsuite/gcc.c-torture/execute/strncmp-1.c
  38b5ccdc5ed95557c23b1630d7c30bc1  gcc/testsuite/gcc.c-torture/execute/struct-aliasing-1.c
  95454c6bf544eaafd61a30e4315982c9  gcc/testsuite/gcc.c-torture/execute/struct-cpy-1.c
  0d008ee88148f8e935176646ba3c5c8f  gcc/testsuite/gcc.c-torture/execute/struct-ini-1.c
*************** e43858d7b08da492de947867d5e08d85  gcc/te
*** 25968,25978 ****
  3d2421b9db7a3e1c31bbbd7abf3cb164  gcc/testsuite/gcc.c-torture/execute/va-arg-9.c
  79919a6b29d6be60efe91333741a297c  gcc/testsuite/gcc.c-torture/execute/va-arg-pack-1.c
  5ebd9e4486259525f013e70fc19f0113  gcc/testsuite/gcc.c-torture/execute/va-arg-trap-1.c
! bce92529e559347c9256ed274e5948be  gcc/testsuite/gcc.c-torture/execute/vfprintf-1.c
! 9a1696f8607440ccebaa61c792570a87  gcc/testsuite/gcc.c-torture/execute/vfprintf-chk-1.c
  f47f7a3569137c2edccd9e5a8dd5d950  gcc/testsuite/gcc.c-torture/execute/vla-dealloc-1.c
! 08f32aa882b692a8d04d0a520be09aa5  gcc/testsuite/gcc.c-torture/execute/vprintf-1.c
! 3bcb1bdf01a5896f1295e802334d889f  gcc/testsuite/gcc.c-torture/execute/vprintf-chk-1.c
  ed64944e564f00f8df6474093f67d9fc  gcc/testsuite/gcc.c-torture/execute/vrp-1.c
  2da1a102082270984ab32a4e84f53749  gcc/testsuite/gcc.c-torture/execute/vrp-2.c
  5904f2ff54ef6eaa41bb216faeaad8f6  gcc/testsuite/gcc.c-torture/execute/vrp-3.c
--- 27183,27193 ----
  3d2421b9db7a3e1c31bbbd7abf3cb164  gcc/testsuite/gcc.c-torture/execute/va-arg-9.c
  79919a6b29d6be60efe91333741a297c  gcc/testsuite/gcc.c-torture/execute/va-arg-pack-1.c
  5ebd9e4486259525f013e70fc19f0113  gcc/testsuite/gcc.c-torture/execute/va-arg-trap-1.c
! 5361fa7e3ede321780803507c15aa560  gcc/testsuite/gcc.c-torture/execute/vfprintf-1.c
! a04e8b16b77b1b3b51daa1a58e5f9cd6  gcc/testsuite/gcc.c-torture/execute/vfprintf-chk-1.c
  f47f7a3569137c2edccd9e5a8dd5d950  gcc/testsuite/gcc.c-torture/execute/vla-dealloc-1.c
! 50ffeb5fdea1225f5cafa83938afce72  gcc/testsuite/gcc.c-torture/execute/vprintf-1.c
! 48a31c7ebf47207441a6b3989447c914  gcc/testsuite/gcc.c-torture/execute/vprintf-chk-1.c
  ed64944e564f00f8df6474093f67d9fc  gcc/testsuite/gcc.c-torture/execute/vrp-1.c
  2da1a102082270984ab32a4e84f53749  gcc/testsuite/gcc.c-torture/execute/vrp-2.c
  5904f2ff54ef6eaa41bb216faeaad8f6  gcc/testsuite/gcc.c-torture/execute/vrp-3.c
*************** f30bf0095addeef700a83f36c598deab  gcc/te
*** 25986,26002 ****
  4b58b53fc9f9a3d25928d85495832f27  gcc/testsuite/gcc.c-torture/execute/zero-struct-1.c
  05aae0dbb71b992a2f163bf1d0a24045  gcc/testsuite/gcc.c-torture/execute/zero-struct-2.c
  540bc182381f68374a6cb9c7f45dd001  gcc/testsuite/gcc.c-torture/execute/zerolen-1.c
! 47b383f4da2b2ea2ce19f91de8dcf5a2  gcc/testsuite/gcc.c-torture/execute/zerolen-2.c
  44c6ad090d3f06206aa54f59582ae32c  gcc/testsuite/gcc.c-torture/unsorted/dump-noaddr.c
! df543b6c76d4d2df5b676b93b931f394  gcc/testsuite/gcc.c-torture/unsorted/dump-noaddr.x
! 4bfcf991d630411c702e499492861a6c  gcc/testsuite/gcc.c-torture/unsorted/unsorted.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
  d1a693baca2cba572e7105df5dd48125  gcc/testsuite/gcc.dg/20000629-1.c
! bdbfe54610915e4d33acf4b3a1ed7293  gcc/testsuite/gcc.dg/20000707-1.c
  459b324f808517057405584375634672  gcc/testsuite/gcc.dg/20000906-1.c
! 8f90e3d9f2e61c57bbb3c09bea849fff  gcc/testsuite/gcc.dg/20000926-1.c
  92aac4b66b01b868ee368573ff143a2c  gcc/testsuite/gcc.dg/20001009-1.c
  9106d47272a80e03226cea5cc0adfa7b  gcc/testsuite/gcc.dg/20001012-1.c
  38e4497135b8a39eb6701495d7d07aae  gcc/testsuite/gcc.dg/20001012-2.c
--- 27201,27217 ----
  4b58b53fc9f9a3d25928d85495832f27  gcc/testsuite/gcc.c-torture/execute/zero-struct-1.c
  05aae0dbb71b992a2f163bf1d0a24045  gcc/testsuite/gcc.c-torture/execute/zero-struct-2.c
  540bc182381f68374a6cb9c7f45dd001  gcc/testsuite/gcc.c-torture/execute/zerolen-1.c
! 5d8fbb34f7ad51fedc394527a5885d4d  gcc/testsuite/gcc.c-torture/execute/zerolen-2.c
  44c6ad090d3f06206aa54f59582ae32c  gcc/testsuite/gcc.c-torture/unsorted/dump-noaddr.c
! a429f5a0ba3c0935919fca085ca3c8e1  gcc/testsuite/gcc.c-torture/unsorted/dump-noaddr.x
! 635d64c3fbafb514ebc0875caaa12de6  gcc/testsuite/gcc.c-torture/unsorted/unsorted.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
  d1a693baca2cba572e7105df5dd48125  gcc/testsuite/gcc.dg/20000629-1.c
! 2059f26d24ff9397e89b3e4f9d9c72b1  gcc/testsuite/gcc.dg/20000707-1.c
  459b324f808517057405584375634672  gcc/testsuite/gcc.dg/20000906-1.c
! 869fca07ec5441c44909675586820df3  gcc/testsuite/gcc.dg/20000926-1.c
  92aac4b66b01b868ee368573ff143a2c  gcc/testsuite/gcc.dg/20001009-1.c
  9106d47272a80e03226cea5cc0adfa7b  gcc/testsuite/gcc.dg/20001012-1.c
  38e4497135b8a39eb6701495d7d07aae  gcc/testsuite/gcc.dg/20001012-2.c
*************** a9238f59569b844c6009a5d159580af6  gcc/te
*** 26015,26021 ****
  034593bd43958647319a7cd3b9ef55f0  gcc/testsuite/gcc.dg/20011008-1.c
  9e3fc7657249cdbdb9c164db6aaf2d0e  gcc/testsuite/gcc.dg/20011008-2.c
  d8044904e0b915a7f55dc14b951f2702  gcc/testsuite/gcc.dg/20011015-1.c
! 16ad3fbbe1bb39f5a7e225d64cd51667  gcc/testsuite/gcc.dg/20011021-1.c
  373763bb633dfa1a656ec53ca2130250  gcc/testsuite/gcc.dg/20011130-1.c
  c6fc7b20ac8cac4f07549ac5f6f21a77  gcc/testsuite/gcc.dg/20011214-1.c
  834bd807125000ccce4151c9c55a96d5  gcc/testsuite/gcc.dg/20020103-1.c
--- 27230,27236 ----
  034593bd43958647319a7cd3b9ef55f0  gcc/testsuite/gcc.dg/20011008-1.c
  9e3fc7657249cdbdb9c164db6aaf2d0e  gcc/testsuite/gcc.dg/20011008-2.c
  d8044904e0b915a7f55dc14b951f2702  gcc/testsuite/gcc.dg/20011015-1.c
! 9b49dd4cf8fed5c64266b5112fecccd8  gcc/testsuite/gcc.dg/20011021-1.c
  373763bb633dfa1a656ec53ca2130250  gcc/testsuite/gcc.dg/20011130-1.c
  c6fc7b20ac8cac4f07549ac5f6f21a77  gcc/testsuite/gcc.dg/20011214-1.c
  834bd807125000ccce4151c9c55a96d5  gcc/testsuite/gcc.dg/20020103-1.c
*************** a7c72bd6aaf9dfbb7dc938acbaa6464d  gcc/te
*** 26030,26036 ****
  6512b138fef74e603cc7c1c6d5e1f0ce  gcc/testsuite/gcc.dg/20020201-1.c
  64ddfb2d92b70c12113fba6d6cafbcef  gcc/testsuite/gcc.dg/20020206-1.c
  08a65114d547473faf30f0e9b44e2237  gcc/testsuite/gcc.dg/20020210-1.c
! af584892f6bd8019d7b52559410d7521  gcc/testsuite/gcc.dg/20020219-1.c
  190abf3030b76de527fcb49dc8dc9f83  gcc/testsuite/gcc.dg/20020220-1.c
  083dbe51748198a37957897c3378841a  gcc/testsuite/gcc.dg/20020220-2.c
  867102925c30a3ad5b40eaa96c7bebcf  gcc/testsuite/gcc.dg/20020222-1.c
--- 27245,27251 ----
  6512b138fef74e603cc7c1c6d5e1f0ce  gcc/testsuite/gcc.dg/20020201-1.c
  64ddfb2d92b70c12113fba6d6cafbcef  gcc/testsuite/gcc.dg/20020206-1.c
  08a65114d547473faf30f0e9b44e2237  gcc/testsuite/gcc.dg/20020210-1.c
! 43068890ac80566aa7e98dba534ea0c4  gcc/testsuite/gcc.dg/20020219-1.c
  190abf3030b76de527fcb49dc8dc9f83  gcc/testsuite/gcc.dg/20020220-1.c
  083dbe51748198a37957897c3378841a  gcc/testsuite/gcc.dg/20020220-2.c
  867102925c30a3ad5b40eaa96c7bebcf  gcc/testsuite/gcc.dg/20020222-1.c
*************** fb8e19f630a58be9d2b01baffc65b9c6  gcc/te
*** 26076,26082 ****
  12636f2c4a6070d3b4149b67e5cb503f  gcc/testsuite/gcc.dg/20030625-1.c
  01600f04a5bc3600ff140ceb707ce243  gcc/testsuite/gcc.dg/20030626-1.c
  7b030115274cda25e38bbfd46a79ac3e  gcc/testsuite/gcc.dg/20030627-1.c
! b197d9d4070c531561cd802988935f00  gcc/testsuite/gcc.dg/20030702-1.c
  5fc6d99324dcfd47c490ca6d16eb7e24  gcc/testsuite/gcc.dg/20030707-1.c
  27ef1cc4029750023fba3b42f83a1423  gcc/testsuite/gcc.dg/20030708-1.c
  93849c86e275714d814d100c03072d4c  gcc/testsuite/gcc.dg/20030711-1.c
--- 27291,27297 ----
  12636f2c4a6070d3b4149b67e5cb503f  gcc/testsuite/gcc.dg/20030625-1.c
  01600f04a5bc3600ff140ceb707ce243  gcc/testsuite/gcc.dg/20030626-1.c
  7b030115274cda25e38bbfd46a79ac3e  gcc/testsuite/gcc.dg/20030627-1.c
! 5947628799bfb102743ee7859ccf91f2  gcc/testsuite/gcc.dg/20030702-1.c
  5fc6d99324dcfd47c490ca6d16eb7e24  gcc/testsuite/gcc.dg/20030707-1.c
  27ef1cc4029750023fba3b42f83a1423  gcc/testsuite/gcc.dg/20030708-1.c
  93849c86e275714d814d100c03072d4c  gcc/testsuite/gcc.dg/20030711-1.c
*************** c98d25247d7774da4966675b06433f10  gcc/te
*** 26111,26117 ****
  344176b47ecb9bbaa6063647cdda4c21  gcc/testsuite/gcc.dg/20040206-1.c
  2e026d33dbf5598aa7cd5b06ef0cd913  gcc/testsuite/gcc.dg/20040217-1.c
  51687c8357f1f03c29ebffdd118d68dd  gcc/testsuite/gcc.dg/20040219-1.c
! 5589b3d82b25377f30086d6f7c6225b6  gcc/testsuite/gcc.dg/20040223-1.c
  9c356c89bbe36761df84b5d3c45dc781  gcc/testsuite/gcc.dg/20040305-2.c
  2dabe19c203995b45e0d373cfc326fdd  gcc/testsuite/gcc.dg/20040306-1.c
  aac5b7dd5982d8ac72db0d6c4bed3939  gcc/testsuite/gcc.dg/20040309-1.c
--- 27326,27332 ----
  344176b47ecb9bbaa6063647cdda4c21  gcc/testsuite/gcc.dg/20040206-1.c
  2e026d33dbf5598aa7cd5b06ef0cd913  gcc/testsuite/gcc.dg/20040217-1.c
  51687c8357f1f03c29ebffdd118d68dd  gcc/testsuite/gcc.dg/20040219-1.c
! 00e3076a360b075feea57487a9970469  gcc/testsuite/gcc.dg/20040223-1.c
  9c356c89bbe36761df84b5d3c45dc781  gcc/testsuite/gcc.dg/20040305-2.c
  2dabe19c203995b45e0d373cfc326fdd  gcc/testsuite/gcc.dg/20040306-1.c
  aac5b7dd5982d8ac72db0d6c4bed3939  gcc/testsuite/gcc.dg/20040309-1.c
*************** d75e2e831928738c29dcbe7834ecb877  gcc/te
*** 26148,26154 ****
  da88b6e0b854e098e447144a91edc9c5  gcc/testsuite/gcc.dg/20050325-1.c
  70e072ce36471d98ebb25d1288d59f4f  gcc/testsuite/gcc.dg/20050330-1.c
  f09bdb3c3c43b669e852ce00fc096a55  gcc/testsuite/gcc.dg/20050330-2.c
! 5f722bda273c4057b6968bc5e82656d5  gcc/testsuite/gcc.dg/20050503-1.c
  fa18390f14716298dbf37d393e23050e  gcc/testsuite/gcc.dg/20050517-1.c
  5029962048f7aace95dae87c8a0af5bc  gcc/testsuite/gcc.dg/20050527-1.c
  be47ac926e44398099b39ea7be778f51  gcc/testsuite/gcc.dg/20050603-2.c
--- 27363,27369 ----
  da88b6e0b854e098e447144a91edc9c5  gcc/testsuite/gcc.dg/20050325-1.c
  70e072ce36471d98ebb25d1288d59f4f  gcc/testsuite/gcc.dg/20050330-1.c
  f09bdb3c3c43b669e852ce00fc096a55  gcc/testsuite/gcc.dg/20050330-2.c
! 4981cc9e94e43f74f40fd250449dbe41  gcc/testsuite/gcc.dg/20050503-1.c
  fa18390f14716298dbf37d393e23050e  gcc/testsuite/gcc.dg/20050517-1.c
  5029962048f7aace95dae87c8a0af5bc  gcc/testsuite/gcc.dg/20050527-1.c
  be47ac926e44398099b39ea7be778f51  gcc/testsuite/gcc.dg/20050603-2.c
*************** cda741cce59ba0dcd70871f300400003  gcc/te
*** 26209,26224 ****
  eba607c17011c649eb3d7e1c5513ffdd  gcc/testsuite/gcc.dg/Foundation.framework/empty
  509fc4e45ca169a2f01541865c72e7d9  gcc/testsuite/gcc.dg/O16384.c
  5572aaa0a05957fff2416d1f5f7c0cc6  gcc/testsuite/gcc.dg/PR68002.c
! e5ca96452b2454b4114a7544cd70e256  gcc/testsuite/gcc.dg/README
  3b152bda38c8adacaa17cce7b0cf4e42  gcc/testsuite/gcc.dg/Waddress-2.c
  e061bee34094ea6ecd29d049eafb229b  gcc/testsuite/gcc.dg/Waddress.c
  92e0f6dce9be7a9119066cc81f5f6407  gcc/testsuite/gcc.dg/Wall.c
! 6faa7a4aa98a3829ede3d0afbe2e6e98  gcc/testsuite/gcc.dg/Walloca-1.c
  538a90f3521bf6b465ebbc392080610e  gcc/testsuite/gcc.dg/Walloca-10.c
  bb3fac63e26e1a1793361a553f83b373  gcc/testsuite/gcc.dg/Walloca-11.c
  c824f4d990ca4b00f526c30abd07ab52  gcc/testsuite/gcc.dg/Walloca-12.c
  06881e25661efe6dec49f921a736851e  gcc/testsuite/gcc.dg/Walloca-13.c
! abac4b1d81839b2a620d6e4b76e59b12  gcc/testsuite/gcc.dg/Walloca-14.c
  ca6004ae108af1b7bc6c10668ef8e9b1  gcc/testsuite/gcc.dg/Walloca-2.c
  6c398f9605e00f8c848777e1be880af3  gcc/testsuite/gcc.dg/Walloca-3.c
  0c60f5c91f481ab21b78b5ef764c72c8  gcc/testsuite/gcc.dg/Walloca-4.c
--- 27424,27441 ----
  eba607c17011c649eb3d7e1c5513ffdd  gcc/testsuite/gcc.dg/Foundation.framework/empty
  509fc4e45ca169a2f01541865c72e7d9  gcc/testsuite/gcc.dg/O16384.c
  5572aaa0a05957fff2416d1f5f7c0cc6  gcc/testsuite/gcc.dg/PR68002.c
! 75ea872fe6c8c15b15c0e3446e825dfe  gcc/testsuite/gcc.dg/README
  3b152bda38c8adacaa17cce7b0cf4e42  gcc/testsuite/gcc.dg/Waddress-2.c
  e061bee34094ea6ecd29d049eafb229b  gcc/testsuite/gcc.dg/Waddress.c
  92e0f6dce9be7a9119066cc81f5f6407  gcc/testsuite/gcc.dg/Wall.c
! f88e1e5fbc4c4286a0cb31defcba1969  gcc/testsuite/gcc.dg/Walloca-1.c
  538a90f3521bf6b465ebbc392080610e  gcc/testsuite/gcc.dg/Walloca-10.c
  bb3fac63e26e1a1793361a553f83b373  gcc/testsuite/gcc.dg/Walloca-11.c
  c824f4d990ca4b00f526c30abd07ab52  gcc/testsuite/gcc.dg/Walloca-12.c
  06881e25661efe6dec49f921a736851e  gcc/testsuite/gcc.dg/Walloca-13.c
! 684cda53a62696a636f250186f551c85  gcc/testsuite/gcc.dg/Walloca-14.c
! e5cdd59c60a14eb884306afcedf7c6f6  gcc/testsuite/gcc.dg/Walloca-15.c
! 49836c800b46854d2daecd175edf4f40  gcc/testsuite/gcc.dg/Walloca-16.c
  ca6004ae108af1b7bc6c10668ef8e9b1  gcc/testsuite/gcc.dg/Walloca-2.c
  6c398f9605e00f8c848777e1be880af3  gcc/testsuite/gcc.dg/Walloca-3.c
  0c60f5c91f481ab21b78b5ef764c72c8  gcc/testsuite/gcc.dg/Walloca-4.c
*************** f4ae192745e9cc38db12b7ac4545d0fa  gcc/te
*** 26230,26236 ****
  e0f03fe3585a327467250a2ec39fc2be  gcc/testsuite/gcc.dg/Walways-true-1.c
  832a40756369d5e785179df5ca909745  gcc/testsuite/gcc.dg/Walways-true-2.c
  33a98cba1121b42ccbc1b9ea87c0a5e2  gcc/testsuite/gcc.dg/Warray-bounds-10.c
! 1e0248915bb325a0ee9f7e10b498201d  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
--- 27447,27453 ----
  e0f03fe3585a327467250a2ec39fc2be  gcc/testsuite/gcc.dg/Walways-true-1.c
  832a40756369d5e785179df5ca909745  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
*************** f4e7b7ed31ed216b46e06cdda89be948  gcc/te
*** 26242,26252 ****
  798433d4099cd8d7572fde802e640896  gcc/testsuite/gcc.dg/Warray-bounds-2.c
  251c1639092217dd2bd41397e4d9ecc6  gcc/testsuite/gcc.dg/Warray-bounds-20.c
  e1fcb1470f6b09d31f8fcd1d46d20be8  gcc/testsuite/gcc.dg/Warray-bounds-21.c
  840b91726d80efd539ceaa9d94e030d3  gcc/testsuite/gcc.dg/Warray-bounds-3.c
  84a306ba6a47b60426131bffe9ec7a0c  gcc/testsuite/gcc.dg/Warray-bounds-4.c
  6a53ea6731c8e33605392ac843284e1c  gcc/testsuite/gcc.dg/Warray-bounds-5.c
  80c3d31a9d8de2d05bed1c5c1e97d4c5  gcc/testsuite/gcc.dg/Warray-bounds-6.c
! 511187ebc362cb08582cc6f54ff4e270  gcc/testsuite/gcc.dg/Warray-bounds-7.c
  21d65e4a3ed9e583a7990c62514f991a  gcc/testsuite/gcc.dg/Warray-bounds-8.c
  4e1e873542b1218915f33f761b49e234  gcc/testsuite/gcc.dg/Warray-bounds-9.c
  0b85a8646c05f520e95768e6d605a0dd  gcc/testsuite/gcc.dg/Warray-bounds.c
--- 27459,27475 ----
  798433d4099cd8d7572fde802e640896  gcc/testsuite/gcc.dg/Warray-bounds-2.c
  251c1639092217dd2bd41397e4d9ecc6  gcc/testsuite/gcc.dg/Warray-bounds-20.c
  e1fcb1470f6b09d31f8fcd1d46d20be8  gcc/testsuite/gcc.dg/Warray-bounds-21.c
+ be946b96ee7ca07b3a6a6d6a8de9c217  gcc/testsuite/gcc.dg/Warray-bounds-22.c
+ d2f56b9715cb8023695707222ab645ea  gcc/testsuite/gcc.dg/Warray-bounds-23.c
+ b4a524baa9581904a5f7b7e0d7ca6a76  gcc/testsuite/gcc.dg/Warray-bounds-24.c
+ 13c775a01e9f3125fa844f38909ab8ac  gcc/testsuite/gcc.dg/Warray-bounds-25.c
+ dedff38471f8963dc7ff6b71f19af4e2  gcc/testsuite/gcc.dg/Warray-bounds-26.c
+ 57d135c63b4ee7667d3bee8da66ddf5e  gcc/testsuite/gcc.dg/Warray-bounds-27.c
  840b91726d80efd539ceaa9d94e030d3  gcc/testsuite/gcc.dg/Warray-bounds-3.c
  84a306ba6a47b60426131bffe9ec7a0c  gcc/testsuite/gcc.dg/Warray-bounds-4.c
  6a53ea6731c8e33605392ac843284e1c  gcc/testsuite/gcc.dg/Warray-bounds-5.c
  80c3d31a9d8de2d05bed1c5c1e97d4c5  gcc/testsuite/gcc.dg/Warray-bounds-6.c
! 5be3608072cf842ac1c1ee348830d85a  gcc/testsuite/gcc.dg/Warray-bounds-7.c
  21d65e4a3ed9e583a7990c62514f991a  gcc/testsuite/gcc.dg/Warray-bounds-8.c
  4e1e873542b1218915f33f761b49e234  gcc/testsuite/gcc.dg/Warray-bounds-9.c
  0b85a8646c05f520e95768e6d605a0dd  gcc/testsuite/gcc.dg/Warray-bounds.c
*************** e1fcb1470f6b09d31f8fcd1d46d20be8  gcc/te
*** 26254,26259 ****
--- 27477,27486 ----
  1bf1fda040f08a11f73a40c8344c7f5b  gcc/testsuite/gcc.dg/Wattributes-2.c
  b87b7ebc31064d6e57b0af0b3017afeb  gcc/testsuite/gcc.dg/Wattributes-3.c
  1988735c2661df622a2ab226b3a093b9  gcc/testsuite/gcc.dg/Wattributes-4.c
+ 5b6c200e82806a6e48523fca76ca9baa  gcc/testsuite/gcc.dg/Wattributes-5.c
+ 60344657fd51548a39dea581f8cdf97d  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
  3987306283bace0fc6f28fca72555786  gcc/testsuite/gcc.dg/Wc++-compat.c
*************** ce09510aec33f3aa92a11cee89b4fe1d  gcc/te
*** 26274,26288 ****
  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
! a4b321a74d7b611f30c14b3017c96595  gcc/testsuite/gcc.dg/Wconversion-3.c
  8a5a51de19f67fc1ef77567aa32604bd  gcc/testsuite/gcc.dg/Wconversion-4.c
! dbd21f565a41e285f910683383bc6e5b  gcc/testsuite/gcc.dg/Wconversion-5.c
! 154af5dffc8254ba8eafbe0e99474ead  gcc/testsuite/gcc.dg/Wconversion-complex-c99.c
! 96e0c6b1941740f6ef349621b80af4b2  gcc/testsuite/gcc.dg/Wconversion-complex-gnu.c
  cb00bf783b6d1a74b061b7dd940d9ff1  gcc/testsuite/gcc.dg/Wconversion-integer-no-sign.c
! 9b6b0f67bfeae6d77d58a396f49b980c  gcc/testsuite/gcc.dg/Wconversion-integer.c
  0b27b2866e43c765ad41ebbe31db8db7  gcc/testsuite/gcc.dg/Wconversion-pr34389.c
! 4a7df1332faa96034f5afdc785e25b1e  gcc/testsuite/gcc.dg/Wconversion-real-integer.c
  377d3c875e9bff82de566d6dbd148d53  gcc/testsuite/gcc.dg/Wcxx-compat-1.c
  e9acb9c0a217791f9046f3c08b929a02  gcc/testsuite/gcc.dg/Wcxx-compat-10.c
  acb91636b208332f1aa0989285332589  gcc/testsuite/gcc.dg/Wcxx-compat-11.c
--- 27501,27515 ----
  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
! f0d04eb2a12065ae8325119e1af32b99  gcc/testsuite/gcc.dg/Wconversion-3.c
  8a5a51de19f67fc1ef77567aa32604bd  gcc/testsuite/gcc.dg/Wconversion-4.c
! b0d43f24b4e69291ba84c8f5b49e90c7  gcc/testsuite/gcc.dg/Wconversion-5.c
! 5129591d97b9b3204397d44d84756ac2  gcc/testsuite/gcc.dg/Wconversion-complex-c99.c
! 7e892af9112ccd6f6dd5c1efcf3aca2f  gcc/testsuite/gcc.dg/Wconversion-complex-gnu.c
  cb00bf783b6d1a74b061b7dd940d9ff1  gcc/testsuite/gcc.dg/Wconversion-integer-no-sign.c
! a987748348709242aab4506d01f5ceb3  gcc/testsuite/gcc.dg/Wconversion-integer.c
  0b27b2866e43c765ad41ebbe31db8db7  gcc/testsuite/gcc.dg/Wconversion-pr34389.c
! 8b7bfe33993112a1d44ddb7b80807a7c  gcc/testsuite/gcc.dg/Wconversion-real-integer.c
  377d3c875e9bff82de566d6dbd148d53  gcc/testsuite/gcc.dg/Wcxx-compat-1.c
  e9acb9c0a217791f9046f3c08b929a02  gcc/testsuite/gcc.dg/Wcxx-compat-10.c
  acb91636b208332f1aa0989285332589  gcc/testsuite/gcc.dg/Wcxx-compat-11.c
*************** e30c655105453062112de9c7e9443274  gcc/te
*** 26303,26309 ****
  45332d017f55b3e16cb9068902e741f7  gcc/testsuite/gcc.dg/Wcxx-compat-5.c
  60cb677a07c60a002f2cb124a12a15d2  gcc/testsuite/gcc.dg/Wcxx-compat-6.c
  03d4250ede74859e29ac57d5e76cd614  gcc/testsuite/gcc.dg/Wcxx-compat-7.c
! ad96f140f8e756b49edb55d775459c8b  gcc/testsuite/gcc.dg/Wcxx-compat-8.c
  1748e08febf7c1273a32907d6a0255a1  gcc/testsuite/gcc.dg/Wcxx-compat-9.c
  01f0cbfc5de1ea87105985bb541819fb  gcc/testsuite/gcc.dg/Wdeclaration-after-statement-1.c
  2da9aabb3c1d80fdd6cd7e866760fe3d  gcc/testsuite/gcc.dg/Wdeclaration-after-statement-2.c
--- 27530,27536 ----
  45332d017f55b3e16cb9068902e741f7  gcc/testsuite/gcc.dg/Wcxx-compat-5.c
  60cb677a07c60a002f2cb124a12a15d2  gcc/testsuite/gcc.dg/Wcxx-compat-6.c
  03d4250ede74859e29ac57d5e76cd614  gcc/testsuite/gcc.dg/Wcxx-compat-7.c
! 9be41814ea6c590091140a830a6d4af9  gcc/testsuite/gcc.dg/Wcxx-compat-8.c
  1748e08febf7c1273a32907d6a0255a1  gcc/testsuite/gcc.dg/Wcxx-compat-9.c
  01f0cbfc5de1ea87105985bb541819fb  gcc/testsuite/gcc.dg/Wdeclaration-after-statement-1.c
  2da9aabb3c1d80fdd6cd7e866760fe3d  gcc/testsuite/gcc.dg/Wdeclaration-after-statement-2.c
*************** e1774554778a57412ba37170551b5a8e  gcc/te
*** 26344,26349 ****
--- 27571,27577 ----
  ac1d198e2464fa90c280daa6cf4b9d41  gcc/testsuite/gcc.dg/Wimplicit-int-2.c
  74aefd7d6111a48e8fd77ecaaf64feb0  gcc/testsuite/gcc.dg/Wimplicit-int-3.c
  f8f5871d8419d984891017d51ef8e7ba  gcc/testsuite/gcc.dg/Wimplicit-int-4.c
+ 8019f9e01968fa61e7d54fdbfdd0ca9a  gcc/testsuite/gcc.dg/Wincompatible-pointer-types-1.c
  aef2ea71e6f4f2975f702f53e97d2b41  gcc/testsuite/gcc.dg/Wincompatible-pointer-types.c
  73a57349114b445c41ee7bcc15d3bd1b  gcc/testsuite/gcc.dg/Wint-conversion.c
  74e00c0632715138d6110d495d44182c  gcc/testsuite/gcc.dg/Wjump-misses-init-1.c
*************** afe3ee2ad32e9663adf1bf0ad0d91263  gcc/te
*** 26351,26357 ****
  623d989fba31af9cb3c8d7eab5cb6b66  gcc/testsuite/gcc.dg/Wlarger-than.c
  6f7f5aa958b936dbca6e4316ef2ba901  gcc/testsuite/gcc.dg/Wlarger-than2.c
  7a78b5f2f518e41ccc653581c0c185fa  gcc/testsuite/gcc.dg/Wlogical-op-1.c
! 117e1a242036e088f70b2a57d9c3f420  gcc/testsuite/gcc.dg/Wmissing-braces-fixits.c
  35da4f7c3dc7c98520fafca7b32a76e7  gcc/testsuite/gcc.dg/Wmissing-parameter-type-Wextra.c
  fe1b12514d94c73791e0a965cfc2a6ce  gcc/testsuite/gcc.dg/Wmissing-parameter-type-no.c
  393ee52b1c97cbcf1ebd166d70b4ea67  gcc/testsuite/gcc.dg/Wmissing-parameter-type.c
--- 27579,27585 ----
  623d989fba31af9cb3c8d7eab5cb6b66  gcc/testsuite/gcc.dg/Wlarger-than.c
  6f7f5aa958b936dbca6e4316ef2ba901  gcc/testsuite/gcc.dg/Wlarger-than2.c
  7a78b5f2f518e41ccc653581c0c185fa  gcc/testsuite/gcc.dg/Wlogical-op-1.c
! 4dffc6d38cc584021e126813104bef46  gcc/testsuite/gcc.dg/Wmissing-braces-fixits.c
  35da4f7c3dc7c98520fafca7b32a76e7  gcc/testsuite/gcc.dg/Wmissing-parameter-type-Wextra.c
  fe1b12514d94c73791e0a965cfc2a6ce  gcc/testsuite/gcc.dg/Wmissing-parameter-type-no.c
  393ee52b1c97cbcf1ebd166d70b4ea67  gcc/testsuite/gcc.dg/Wmissing-parameter-type.c
*************** cf21dd47d3e7a7fd332e4ebdad43f47f  gcc/te
*** 26361,26367 ****
  d45570f5347d0d2fceb2f46d5bb28195  gcc/testsuite/gcc.dg/Wno-c++-compat.c
  7f60b5af8c1dff4f89ed11fab109c8b4  gcc/testsuite/gcc.dg/Wno-frame-address.c
  78b26e55f8111808885390fc48d39f07  gcc/testsuite/gcc.dg/Wno-pointer-sign.c
! b242205a58e8aae7f877be42fcf0e266  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
--- 27589,27596 ----
  d45570f5347d0d2fceb2f46d5bb28195  gcc/testsuite/gcc.dg/Wno-c++-compat.c
  7f60b5af8c1dff4f89ed11fab109c8b4  gcc/testsuite/gcc.dg/Wno-frame-address.c
  78b26e55f8111808885390fc48d39f07  gcc/testsuite/gcc.dg/Wno-pointer-sign.c
! 32a3988bca4d90d3b290e472fb83a91a  gcc/testsuite/gcc.dg/Wnonnull.c
! d7f40d768e2fdadb8ed5f332424b19cf  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
*************** a68483d45a63cbc8948df11f21228729  gcc/te
*** 26402,26410 ****
  733662f34bd059186239cd7a8f9bf45a  gcc/testsuite/gcc.dg/Wparentheses-9.c
  f83c729b5368a427c44394d243c75115  gcc/testsuite/gcc.dg/Wpointer-arith.c
  5afa90826b8429d09381fadf886a7d44  gcc/testsuite/gcc.dg/Wpointer-sign-Wall-no.c
! 20c3c4e42042fc7402c83c7848361bf2  gcc/testsuite/gcc.dg/Wpointer-sign-Wall.c
  cbdd1cd0748d53df7a1e316c550db1cc  gcc/testsuite/gcc.dg/Wpointer-sign-pedantic-no.c
! e44a51960ab1b83d6902a0c9956d16c2  gcc/testsuite/gcc.dg/Wpointer-sign-pedantic.c
  50a4310384c1daddc643a987ada5e261  gcc/testsuite/gcc.dg/Wpointer-sign.c
  d8f70a2e8e0886f38341cfd87a39b4a4  gcc/testsuite/gcc.dg/Wpointer-to-int-cast-1.c
  3464ab3a02a230d0aa3032801abb5eda  gcc/testsuite/gcc.dg/Wpointer-to-int-cast-2.c
--- 27631,27639 ----
  733662f34bd059186239cd7a8f9bf45a  gcc/testsuite/gcc.dg/Wparentheses-9.c
  f83c729b5368a427c44394d243c75115  gcc/testsuite/gcc.dg/Wpointer-arith.c
  5afa90826b8429d09381fadf886a7d44  gcc/testsuite/gcc.dg/Wpointer-sign-Wall-no.c
! 30998d483d31a688051a4cfd456d8453  gcc/testsuite/gcc.dg/Wpointer-sign-Wall.c
  cbdd1cd0748d53df7a1e316c550db1cc  gcc/testsuite/gcc.dg/Wpointer-sign-pedantic-no.c
! dd7aae3b11b55d08ddd65c4b25e89088  gcc/testsuite/gcc.dg/Wpointer-sign-pedantic.c
  50a4310384c1daddc643a987ada5e261  gcc/testsuite/gcc.dg/Wpointer-sign.c
  d8f70a2e8e0886f38341cfd87a39b4a4  gcc/testsuite/gcc.dg/Wpointer-to-int-cast-1.c
  3464ab3a02a230d0aa3032801abb5eda  gcc/testsuite/gcc.dg/Wpointer-to-int-cast-2.c
*************** a6fe061e57fc17982a28d9c38591ce09  gcc/te
*** 26412,26417 ****
--- 27641,27661 ----
  0a00049fac2c2376bf5aa2883325a5d0  gcc/testsuite/gcc.dg/Wpragmas-1.c
  bd6aa9e16d771d36c8ebfcfedbab4197  gcc/testsuite/gcc.dg/Wredundant-decls-1.c
  de6b1943c045eaa118ec274192a6935c  gcc/testsuite/gcc.dg/Wredundant-decls-2.c
+ e5a1646e4928ec8c7226660a83732624  gcc/testsuite/gcc.dg/Wrestrict-10.c
+ a83a955ed375b19512cf157b59be5665  gcc/testsuite/gcc.dg/Wrestrict-11.c
+ be349c0f6745f738b75eebe351eb5ce7  gcc/testsuite/gcc.dg/Wrestrict-12.c
+ 5c7cf282f4ade91736b5de962360e5b3  gcc/testsuite/gcc.dg/Wrestrict-13.c
+ 96c634fc42f32d2a1dc101e8a5820792  gcc/testsuite/gcc.dg/Wrestrict-14.c
+ edb85a6dc78ac1a3ce7b7783eff620d4  gcc/testsuite/gcc.dg/Wrestrict-15.c
+ 7d01961948e81451fba10af184d093f0  gcc/testsuite/gcc.dg/Wrestrict-2.c
+ 8419743602ff50406cde80f5966c551d  gcc/testsuite/gcc.dg/Wrestrict-3.c
+ 07f4f332cda46221955286f0fd5cbebf  gcc/testsuite/gcc.dg/Wrestrict-4.c
+ bf1c529ffa4716ac2cb9305b8237395b  gcc/testsuite/gcc.dg/Wrestrict-5.c
+ 83f097af71656455067f53c0f31b61dd  gcc/testsuite/gcc.dg/Wrestrict-6.c
+ fe0626428135706f333c543b692a92d1  gcc/testsuite/gcc.dg/Wrestrict-7.c
+ ca4f1b5ab467df7523ff4071434ec4df  gcc/testsuite/gcc.dg/Wrestrict-8.c
+ 84048cc58144742bc26abad7d02f9602  gcc/testsuite/gcc.dg/Wrestrict-9.c
+ 700e83815b3577c72420082462c3b61b  gcc/testsuite/gcc.dg/Wrestrict.c
  273fe6c85c6f362c0ae3de1a2bf4755f  gcc/testsuite/gcc.dg/Wreturn-local-addr.c
  6fe9a73749a8da4ecb255e790a1cc26f  gcc/testsuite/gcc.dg/Wreturn-type.c
  13346214a933b039e18e4797462ec5c7  gcc/testsuite/gcc.dg/Wreturn-type2.c
*************** ba00dd90a738fcf012b52b2de2803708  gcc/te
*** 26423,26432 ****
  16c02353d74d6da787aff83e421a3408  gcc/testsuite/gcc.dg/Wshadow-4.h
  5ca8ea6af4cd04aa830c47e0d961dd12  gcc/testsuite/gcc.dg/Wshadow-compatible-local-1.c
  939c94123c6d83f515df6ba3d72bf175  gcc/testsuite/gcc.dg/Wshadow-local-1.c
! cff700cba1567ab073f5ddbb2bf7a744  gcc/testsuite/gcc.dg/Wshadow-local-2.c
  c12d0314b764a8bf5274d839b36d0546  gcc/testsuite/gcc.dg/Wshadow-local-3.c
! 1fddf9bf431912066efdc411149901cc  gcc/testsuite/gcc.dg/Wsign-conversion.c
! 7c09ebfe57ee54a30f0085d674e002b9  gcc/testsuite/gcc.dg/Wsizeof-pointer-memaccess1.c
  3a7ae7960ae82ab1685a31948e9dec07  gcc/testsuite/gcc.dg/Wstrict-aliasing-bogus-const-ptr-nonconst-ptr.c
  9016254766f4f60f27ba7db959765253  gcc/testsuite/gcc.dg/Wstrict-aliasing-bogus-never-dereferenced.c
  11133e767498d2c300e770ea51fbecd5  gcc/testsuite/gcc.dg/Wstrict-aliasing-bogus-pta-1.c
--- 27667,27677 ----
  16c02353d74d6da787aff83e421a3408  gcc/testsuite/gcc.dg/Wshadow-4.h
  5ca8ea6af4cd04aa830c47e0d961dd12  gcc/testsuite/gcc.dg/Wshadow-compatible-local-1.c
  939c94123c6d83f515df6ba3d72bf175  gcc/testsuite/gcc.dg/Wshadow-local-1.c
! cc7f39c7e255ea356ff676dbdce55538  gcc/testsuite/gcc.dg/Wshadow-local-2.c
  c12d0314b764a8bf5274d839b36d0546  gcc/testsuite/gcc.dg/Wshadow-local-3.c
! 3cb01874530a5fc66eb32882395d5682  gcc/testsuite/gcc.dg/Wsign-compare-1.c
! 237f1b26e4102299eec1e1bba599997e  gcc/testsuite/gcc.dg/Wsign-conversion.c
! afe50c3c8f87b9cc95e9346e7fd790d9  gcc/testsuite/gcc.dg/Wsizeof-pointer-memaccess1.c
  3a7ae7960ae82ab1685a31948e9dec07  gcc/testsuite/gcc.dg/Wstrict-aliasing-bogus-const-ptr-nonconst-ptr.c
  9016254766f4f60f27ba7db959765253  gcc/testsuite/gcc.dg/Wstrict-aliasing-bogus-never-dereferenced.c
  11133e767498d2c300e770ea51fbecd5  gcc/testsuite/gcc.dg/Wstrict-aliasing-bogus-pta-1.c
*************** d0997c5fed01cd2efc214b96c6556a71  gcc/te
*** 26435,26457 ****
  3ac29da988040023b0dafa874e9983d2  gcc/testsuite/gcc.dg/Wstrict-aliasing-bogus-struct-included.c
  a720e12b1f8a73dbb4efab1524044f53  gcc/testsuite/gcc.dg/Wstrict-aliasing-bogus-upcast.c
  e4fa08748fb198fefd089310c5cc45b3  gcc/testsuite/gcc.dg/Wstrict-aliasing-bogus-vla-1.c
! 904eec69d1ec40d58343ab1f3bebc6a9  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
  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
! e21ba69e978aa3c99b0dddf1d4f4a3b3  gcc/testsuite/gcc.dg/Wstrict-overflow-12.c
! c47bb92d1a38dc1b43cdcb6c9e613021  gcc/testsuite/gcc.dg/Wstrict-overflow-13.c
  b2149e27f56a52f2dc36e1fe62c006f4  gcc/testsuite/gcc.dg/Wstrict-overflow-14.c
  050b649df1a6a49d8d08af6eac0c57f9  gcc/testsuite/gcc.dg/Wstrict-overflow-15.c
  d073c2038b51bc8c9fff723efab10eaa  gcc/testsuite/gcc.dg/Wstrict-overflow-16.c
  5abcb1076457d35302c9050c02874e82  gcc/testsuite/gcc.dg/Wstrict-overflow-17.c
! 9576587e9b01abf1236df0b544e0fa66  gcc/testsuite/gcc.dg/Wstrict-overflow-18.c
  b52d121e1316dbd9e52693b569b05bc6  gcc/testsuite/gcc.dg/Wstrict-overflow-19.c
  9391f3a448b1237ff2144b2525ab77a0  gcc/testsuite/gcc.dg/Wstrict-overflow-2.c
  b4fa8ef0543e57cfa53079c5788efd7b  gcc/testsuite/gcc.dg/Wstrict-overflow-20.c
! 96d2f71fed6a22afc1bd980bc2d6a6d3  gcc/testsuite/gcc.dg/Wstrict-overflow-21.c
  c6b34215adb77d2d1d506195471e2c42  gcc/testsuite/gcc.dg/Wstrict-overflow-22.c
  bfc663ffe6e57f766fa3d5ea61094f45  gcc/testsuite/gcc.dg/Wstrict-overflow-23.c
  3b6ef5e52e800d297a469573a036037e  gcc/testsuite/gcc.dg/Wstrict-overflow-24.c
--- 27680,27702 ----
  3ac29da988040023b0dafa874e9983d2  gcc/testsuite/gcc.dg/Wstrict-aliasing-bogus-struct-included.c
  a720e12b1f8a73dbb4efab1524044f53  gcc/testsuite/gcc.dg/Wstrict-aliasing-bogus-upcast.c
  e4fa08748fb198fefd089310c5cc45b3  gcc/testsuite/gcc.dg/Wstrict-aliasing-bogus-vla-1.c
! 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
  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
! a202b608fa712e5194f82040deca3921  gcc/testsuite/gcc.dg/Wstrict-overflow-12.c
! efb50dd7e74ce2706387aa36aaa5a610  gcc/testsuite/gcc.dg/Wstrict-overflow-13.c
  b2149e27f56a52f2dc36e1fe62c006f4  gcc/testsuite/gcc.dg/Wstrict-overflow-14.c
  050b649df1a6a49d8d08af6eac0c57f9  gcc/testsuite/gcc.dg/Wstrict-overflow-15.c
  d073c2038b51bc8c9fff723efab10eaa  gcc/testsuite/gcc.dg/Wstrict-overflow-16.c
  5abcb1076457d35302c9050c02874e82  gcc/testsuite/gcc.dg/Wstrict-overflow-17.c
! 534fab5c92abaf3acf41c21b886e30d2  gcc/testsuite/gcc.dg/Wstrict-overflow-18.c
  b52d121e1316dbd9e52693b569b05bc6  gcc/testsuite/gcc.dg/Wstrict-overflow-19.c
  9391f3a448b1237ff2144b2525ab77a0  gcc/testsuite/gcc.dg/Wstrict-overflow-2.c
  b4fa8ef0543e57cfa53079c5788efd7b  gcc/testsuite/gcc.dg/Wstrict-overflow-20.c
! 167ebb1c270e158c31f713ca1543922e  gcc/testsuite/gcc.dg/Wstrict-overflow-21.c
  c6b34215adb77d2d1d506195471e2c42  gcc/testsuite/gcc.dg/Wstrict-overflow-22.c
  bfc663ffe6e57f766fa3d5ea61094f45  gcc/testsuite/gcc.dg/Wstrict-overflow-23.c
  3b6ef5e52e800d297a469573a036037e  gcc/testsuite/gcc.dg/Wstrict-overflow-24.c
*************** bb2099f1da2a18a8306bbf5e15b7e411  gcc/te
*** 26461,26473 ****
  43d27c6b3c5f95da1becd819eb01bc7c  gcc/testsuite/gcc.dg/Wstrict-overflow-4.c
  9ca3aae585d863804dc429242e24bdea  gcc/testsuite/gcc.dg/Wstrict-overflow-5.c
  78e163530595bd814f038df2ea425bbd  gcc/testsuite/gcc.dg/Wstrict-overflow-6.c
! ea076af9aa902f6860dfb37c1286c83e  gcc/testsuite/gcc.dg/Wstrict-overflow-7.c
  dca4d071a83223262a2d5fa630b1dce7  gcc/testsuite/gcc.dg/Wstrict-overflow-8.c
  c31d451fdf70251ea95a67385daae0da  gcc/testsuite/gcc.dg/Wstrict-overflow-9.c
  b2ac295c001e28b6659dd1cbaecfc2a9  gcc/testsuite/gcc.dg/Wstring-literal-comparison-1.c
  c608f5d02a06d2e24d8ab0ca0d977f67  gcc/testsuite/gcc.dg/Wstring-literal-comparison-2.c
  a0b497dc1f8dc8ce49f81bc391f0deb1  gcc/testsuite/gcc.dg/Wstring-literal-comparison-3.c
  839fdbb04e93708d893f0f0e3f961ef5  gcc/testsuite/gcc.dg/Wstring-literal-comparison-4.c
  063811cae4064dfe33ddbcd11e9f93ee  gcc/testsuite/gcc.dg/Wswitch-2.c
  fffa3daae0aa096b127d7b76b64fdeba  gcc/testsuite/gcc.dg/Wswitch-default.c
  ce556f3673fc2fecbb8c1df84da93e3a  gcc/testsuite/gcc.dg/Wswitch-enum-2.c
--- 27706,27724 ----
  43d27c6b3c5f95da1becd819eb01bc7c  gcc/testsuite/gcc.dg/Wstrict-overflow-4.c
  9ca3aae585d863804dc429242e24bdea  gcc/testsuite/gcc.dg/Wstrict-overflow-5.c
  78e163530595bd814f038df2ea425bbd  gcc/testsuite/gcc.dg/Wstrict-overflow-6.c
! 9370d40d57e04c6abd79b41e84b18923  gcc/testsuite/gcc.dg/Wstrict-overflow-7.c
  dca4d071a83223262a2d5fa630b1dce7  gcc/testsuite/gcc.dg/Wstrict-overflow-8.c
  c31d451fdf70251ea95a67385daae0da  gcc/testsuite/gcc.dg/Wstrict-overflow-9.c
  b2ac295c001e28b6659dd1cbaecfc2a9  gcc/testsuite/gcc.dg/Wstring-literal-comparison-1.c
  c608f5d02a06d2e24d8ab0ca0d977f67  gcc/testsuite/gcc.dg/Wstring-literal-comparison-2.c
  a0b497dc1f8dc8ce49f81bc391f0deb1  gcc/testsuite/gcc.dg/Wstring-literal-comparison-3.c
  839fdbb04e93708d893f0f0e3f961ef5  gcc/testsuite/gcc.dg/Wstring-literal-comparison-4.c
+ af4e5809f9266e2fb666c9460e41953b  gcc/testsuite/gcc.dg/Wstringop-overflow-2.c
+ 5d48ea7df70ba4f96d66951fae7159f6  gcc/testsuite/gcc.dg/Wstringop-overflow-3.c
+ 975f320b4cadb606592c196f32d08f02  gcc/testsuite/gcc.dg/Wstringop-overflow-4.c
+ f16f5c5471020dfe24813accb55a72a7  gcc/testsuite/gcc.dg/Wstringop-overflow.c
+ 77f8b46e5b817f35a15c273b28d5ea1d  gcc/testsuite/gcc.dg/Wstringop-truncation-2.c
+ f65f24bc4270d9f36a9993e2724b5b55  gcc/testsuite/gcc.dg/Wstringop-truncation.c
  063811cae4064dfe33ddbcd11e9f93ee  gcc/testsuite/gcc.dg/Wswitch-2.c
  fffa3daae0aa096b127d7b76b64fdeba  gcc/testsuite/gcc.dg/Wswitch-default.c
  ce556f3673fc2fecbb8c1df84da93e3a  gcc/testsuite/gcc.dg/Wswitch-enum-2.c
*************** b3dd7695cafc782eb7786677833eb8d0  gcc/te
*** 26480,26491 ****
  6338f4c2f3099dc56a03d4b8d4aa7748  gcc/testsuite/gcc.dg/Wswitch.c
  8dda1d9f2869873526f33401a22c0fdd  gcc/testsuite/gcc.dg/Wtraditional-conversion-2.c
  d0cf5da873f60ffed04db27addaddbc2  gcc/testsuite/gcc.dg/Wtraditional-conversion.c
! 1216ce9f91e89c5bf9dc5a3b90ad67ad  gcc/testsuite/gcc.dg/Wtrampolines.c
! 9004313609fc8d32a7ef77a0a009555c  gcc/testsuite/gcc.dg/Wtype-limits-Wextra.c
  5e19c5bcf607ee7e7a37111eb99adade  gcc/testsuite/gcc.dg/Wtype-limits-no.c
! 382c8eeb9600a5711c9c5bf2bed51339  gcc/testsuite/gcc.dg/Wtype-limits.c
  699eed729600169487107a0dd08366fe  gcc/testsuite/gcc.dg/Wtype-limits2.c
! 0a0db17aec55a3ef88c1d7fa10d65db8  gcc/testsuite/gcc.dg/Wunknownprag.c
  d61b53b5ab6f104e85c73334a258f33d  gcc/testsuite/gcc.dg/Wunsuffixed-float-constants-1.c
  b253477a3902ebd779d9157f874209db  gcc/testsuite/gcc.dg/Wunused-function.c
  a26163cac9d2b7f9af5ad4374cec57b0  gcc/testsuite/gcc.dg/Wunused-label-1.c
--- 27731,27742 ----
  6338f4c2f3099dc56a03d4b8d4aa7748  gcc/testsuite/gcc.dg/Wswitch.c
  8dda1d9f2869873526f33401a22c0fdd  gcc/testsuite/gcc.dg/Wtraditional-conversion-2.c
  d0cf5da873f60ffed04db27addaddbc2  gcc/testsuite/gcc.dg/Wtraditional-conversion.c
! 6b64e505a1f09f0869bdab525765e8b9  gcc/testsuite/gcc.dg/Wtrampolines.c
! e4e3660c01ccef4592a33ae6a63ad68c  gcc/testsuite/gcc.dg/Wtype-limits-Wextra.c
  5e19c5bcf607ee7e7a37111eb99adade  gcc/testsuite/gcc.dg/Wtype-limits-no.c
! 0c37b5e22b7c03862a7ddb2e44050c29  gcc/testsuite/gcc.dg/Wtype-limits.c
  699eed729600169487107a0dd08366fe  gcc/testsuite/gcc.dg/Wtype-limits2.c
! 336a7fd0fcc89bb58d7410e164b9186a  gcc/testsuite/gcc.dg/Wunknownprag.c
  d61b53b5ab6f104e85c73334a258f33d  gcc/testsuite/gcc.dg/Wunsuffixed-float-constants-1.c
  b253477a3902ebd779d9157f874209db  gcc/testsuite/gcc.dg/Wunused-function.c
  a26163cac9d2b7f9af5ad4374cec57b0  gcc/testsuite/gcc.dg/Wunused-label-1.c
*************** d82ccf26405a48ba48cf01a532ba9660  gcc/te
*** 26509,26522 ****
  5fffb57610eb1fa0134cbf5e15786d2f  gcc/testsuite/gcc.dg/Wwrite-strings-1.c
  6635be8a44d0fb2136fde83d328e24a8  gcc/testsuite/gcc.dg/addr_builtin-1.c
  c7e6790651d5aec12ea9a115c6d7f277  gcc/testsuite/gcc.dg/addr_equal-1.c
! 556bca3cd36810dfc95e8e4ddae51aa7  gcc/testsuite/gcc.dg/alias-1.c
  4f6d694d1eba0566b352561f0806a291  gcc/testsuite/gcc.dg/alias-10.c
  aeaf1bfe8cfcbf69579479fe7c5fb4d3  gcc/testsuite/gcc.dg/alias-11.c
! db357541d4e38396625db2ad69feb308  gcc/testsuite/gcc.dg/alias-12.c
! 8577ea4f679523d6279a484d7b1380d1  gcc/testsuite/gcc.dg/alias-13.c
  2bd551106b4069557dd3ce49577c4179  gcc/testsuite/gcc.dg/alias-14.c
  03007ba05e4774a664b33c9a89fe7daa  gcc/testsuite/gcc.dg/alias-15.c
! 54e85ad7bc324bd46432f352d5b12871  gcc/testsuite/gcc.dg/alias-2.c
  468bb869b3405c03cd5b0a29b3849245  gcc/testsuite/gcc.dg/alias-3.c
  a4dc0f78c6e8859ac3aee7cea562abb5  gcc/testsuite/gcc.dg/alias-4.c
  a015fbd6293bb654de6f42847beb62d6  gcc/testsuite/gcc.dg/alias-5.c
--- 27760,27773 ----
  5fffb57610eb1fa0134cbf5e15786d2f  gcc/testsuite/gcc.dg/Wwrite-strings-1.c
  6635be8a44d0fb2136fde83d328e24a8  gcc/testsuite/gcc.dg/addr_builtin-1.c
  c7e6790651d5aec12ea9a115c6d7f277  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
  2bd551106b4069557dd3ce49577c4179  gcc/testsuite/gcc.dg/alias-14.c
  03007ba05e4774a664b33c9a89fe7daa  gcc/testsuite/gcc.dg/alias-15.c
! 70445cb87531441c21b8edbd0211e5a2  gcc/testsuite/gcc.dg/alias-2.c
  468bb869b3405c03cd5b0a29b3849245  gcc/testsuite/gcc.dg/alias-3.c
  a4dc0f78c6e8859ac3aee7cea562abb5  gcc/testsuite/gcc.dg/alias-4.c
  a015fbd6293bb654de6f42847beb62d6  gcc/testsuite/gcc.dg/alias-5.c
*************** a7efac574dbe1b4c2bd64571fc4e4fde  gcc/te
*** 26543,26549 ****
  3eb838bd43dd39abc85333ede3483fb7  gcc/testsuite/gcc.dg/anon-struct-3.c
  dd599d71ecd611032d937504578afcc1  gcc/testsuite/gcc.dg/anon-struct-4.c
  4fb61a74c84fcf9f5331230c2fae3802  gcc/testsuite/gcc.dg/anon-struct-5.c
! e522beaf0c6999017c88ed0c8e6693de  gcc/testsuite/gcc.dg/anon-struct-6.c
  36361de22057c240408c0f4ede4dc54d  gcc/testsuite/gcc.dg/anon-struct-7.c
  eafb7df09cd42fd709e66c4106b6526f  gcc/testsuite/gcc.dg/anon-struct-8.c
  985a1607a330d9fdeb608d623e623e02  gcc/testsuite/gcc.dg/anon-struct-9.c
--- 27794,27800 ----
  3eb838bd43dd39abc85333ede3483fb7  gcc/testsuite/gcc.dg/anon-struct-3.c
  dd599d71ecd611032d937504578afcc1  gcc/testsuite/gcc.dg/anon-struct-4.c
  4fb61a74c84fcf9f5331230c2fae3802  gcc/testsuite/gcc.dg/anon-struct-5.c
! 7825782f1b3645e1fc2be5305b8af378  gcc/testsuite/gcc.dg/anon-struct-6.c
  36361de22057c240408c0f4ede4dc54d  gcc/testsuite/gcc.dg/anon-struct-7.c
  eafb7df09cd42fd709e66c4106b6526f  gcc/testsuite/gcc.dg/anon-struct-8.c
  985a1607a330d9fdeb608d623e623e02  gcc/testsuite/gcc.dg/anon-struct-9.c
*************** eafb7df09cd42fd709e66c4106b6526f  gcc/te
*** 26551,26562 ****
  d5952a2418056f4b79755ab988aa91a2  gcc/testsuite/gcc.dg/array-10.c
  d4c9cf0bc4b4eb7ce13dd14024cd645a  gcc/testsuite/gcc.dg/array-11.c
  a931ad4f363dac5dc50764d298e37e68  gcc/testsuite/gcc.dg/array-12.c
! 53c52ec64d50686a80d2766298a88052  gcc/testsuite/gcc.dg/array-13.c
  0ac416966a99b1475e09501590993296  gcc/testsuite/gcc.dg/array-14.c
  4e79f8b8556bbf8fdc7bf46a3105a67e  gcc/testsuite/gcc.dg/array-15.c
  4849d94ffd3083c363fc949d6187f661  gcc/testsuite/gcc.dg/array-2.c
  1c72c1697779b727d1e4d4a57e4e0eff  gcc/testsuite/gcc.dg/array-3.c
! 00b3b746d57a8a5f6b269324cc52d6e7  gcc/testsuite/gcc.dg/array-4.c
  516690f8e698c11ee9b9a2d314b59793  gcc/testsuite/gcc.dg/array-5.c
  01dbbeac61e35ce32d422105d0a99f4a  gcc/testsuite/gcc.dg/array-6.c
  52b18d0d34cd07c4a2c060c8888f26fd  gcc/testsuite/gcc.dg/array-7.c
--- 27802,27813 ----
  d5952a2418056f4b79755ab988aa91a2  gcc/testsuite/gcc.dg/array-10.c
  d4c9cf0bc4b4eb7ce13dd14024cd645a  gcc/testsuite/gcc.dg/array-11.c
  a931ad4f363dac5dc50764d298e37e68  gcc/testsuite/gcc.dg/array-12.c
! e9ee98b1c57aa38ee8180ddadb22ca7a  gcc/testsuite/gcc.dg/array-13.c
  0ac416966a99b1475e09501590993296  gcc/testsuite/gcc.dg/array-14.c
  4e79f8b8556bbf8fdc7bf46a3105a67e  gcc/testsuite/gcc.dg/array-15.c
  4849d94ffd3083c363fc949d6187f661  gcc/testsuite/gcc.dg/array-2.c
  1c72c1697779b727d1e4d4a57e4e0eff  gcc/testsuite/gcc.dg/array-3.c
! 273203d3e04970fae0c56df1cf4ec365  gcc/testsuite/gcc.dg/array-4.c
  516690f8e698c11ee9b9a2d314b59793  gcc/testsuite/gcc.dg/array-5.c
  01dbbeac61e35ce32d422105d0a99f4a  gcc/testsuite/gcc.dg/array-6.c
  52b18d0d34cd07c4a2c060c8888f26fd  gcc/testsuite/gcc.dg/array-7.c
*************** f5a2800fc5f21185bd9bdbd69e270c10  gcc/te
*** 26570,26576 ****
  f1924cd169cc9af518b51afd9f11da82  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
! a2607a88f40386e649555955930d0278  gcc/testsuite/gcc.dg/asan/asan.exp
  738544a74dbe22f6a41201227dfe9cd9  gcc/testsuite/gcc.dg/asan/nosanitize-and-inline.c
  a5e988481cd66b8acf6c610b847cb713  gcc/testsuite/gcc.dg/asan/pr56417.c
  0c13e4008bb665f05b030eb42e43183f  gcc/testsuite/gcc.dg/asan/pr63845.c
--- 27821,27827 ----
  f1924cd169cc9af518b51afd9f11da82  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
! b6a42086cbfab5c3b731423b268f0c78  gcc/testsuite/gcc.dg/asan/asan.exp
  738544a74dbe22f6a41201227dfe9cd9  gcc/testsuite/gcc.dg/asan/nosanitize-and-inline.c
  a5e988481cd66b8acf6c610b847cb713  gcc/testsuite/gcc.dg/asan/pr56417.c
  0c13e4008bb665f05b030eb42e43183f  gcc/testsuite/gcc.dg/asan/pr63845.c
*************** eb5b0c5d1ba0f0b26668b834ca04262c  gcc/te
*** 26589,26603 ****
  f79fea549fa19de730b00d37d3282778  gcc/testsuite/gcc.dg/asan/pr80659.c
  643d751ee068e33d234d5fd6b48ee720  gcc/testsuite/gcc.dg/asan/pr81186.c
  d53f314be67b41e00cd6234bc47d1a8f  gcc/testsuite/gcc.dg/asan/pr81224.c
  668c2f9b583b3061bd97cdf975229771  gcc/testsuite/gcc.dg/asan/pr81923.c
  650fc3032a7e08987ca619b55b3a366b  gcc/testsuite/gcc.dg/asan/pr82545.c
  da89dc3f01ef08b35253f1daef462bec  gcc/testsuite/gcc.dg/asan/sancov-1.c
  a765628a82a2516225ae1dd368e4c8fb  gcc/testsuite/gcc.dg/asan/use-after-scope-1.c
  5c258d85c589001c219d15be6c0575d1  gcc/testsuite/gcc.dg/asan/use-after-scope-10.c
  66c578cf43e014d671f9d7e77125db49  gcc/testsuite/gcc.dg/asan/use-after-scope-11.c
  fe0b44b5b734bdf36ec54e59003b67ba  gcc/testsuite/gcc.dg/asan/use-after-scope-2.c
  afbc4cda213fccb8a04ecd6cd2743c86  gcc/testsuite/gcc.dg/asan/use-after-scope-3.c
! 450f6a2f3fd9b0fac854c5f04f961ee4  gcc/testsuite/gcc.dg/asan/use-after-scope-4.c
  dd3c75a39133594dfc2fe72a4dc7e333  gcc/testsuite/gcc.dg/asan/use-after-scope-5.c
  366840a89d5ad3b48e23abe8e4355d97  gcc/testsuite/gcc.dg/asan/use-after-scope-6.c
  91083b37f107608362a3527134382682  gcc/testsuite/gcc.dg/asan/use-after-scope-7.c
--- 27840,27858 ----
  f79fea549fa19de730b00d37d3282778  gcc/testsuite/gcc.dg/asan/pr80659.c
  643d751ee068e33d234d5fd6b48ee720  gcc/testsuite/gcc.dg/asan/pr81186.c
  d53f314be67b41e00cd6234bc47d1a8f  gcc/testsuite/gcc.dg/asan/pr81224.c
+ 5a16fe7d00f847bcaf028da883ba11e8  gcc/testsuite/gcc.dg/asan/pr81460.c
  668c2f9b583b3061bd97cdf975229771  gcc/testsuite/gcc.dg/asan/pr81923.c
+ 6b9704ef780832630667a74070b6ed22  gcc/testsuite/gcc.dg/asan/pr82484.c
+ 0102a51c0acd8ac4dee8b50ca57d898d  gcc/testsuite/gcc.dg/asan/pr82517.c
  650fc3032a7e08987ca619b55b3a366b  gcc/testsuite/gcc.dg/asan/pr82545.c
+ 9bc80e3f249062d650dd94cb87ee3fc3  gcc/testsuite/gcc.dg/asan/pr83185.c
  da89dc3f01ef08b35253f1daef462bec  gcc/testsuite/gcc.dg/asan/sancov-1.c
  a765628a82a2516225ae1dd368e4c8fb  gcc/testsuite/gcc.dg/asan/use-after-scope-1.c
  5c258d85c589001c219d15be6c0575d1  gcc/testsuite/gcc.dg/asan/use-after-scope-10.c
  66c578cf43e014d671f9d7e77125db49  gcc/testsuite/gcc.dg/asan/use-after-scope-11.c
  fe0b44b5b734bdf36ec54e59003b67ba  gcc/testsuite/gcc.dg/asan/use-after-scope-2.c
  afbc4cda213fccb8a04ecd6cd2743c86  gcc/testsuite/gcc.dg/asan/use-after-scope-3.c
! b58c6cee79440c514382110378d62f3a  gcc/testsuite/gcc.dg/asan/use-after-scope-4.c
  dd3c75a39133594dfc2fe72a4dc7e333  gcc/testsuite/gcc.dg/asan/use-after-scope-5.c
  366840a89d5ad3b48e23abe8e4355d97  gcc/testsuite/gcc.dg/asan/use-after-scope-6.c
  91083b37f107608362a3527134382682  gcc/testsuite/gcc.dg/asan/use-after-scope-7.c
*************** abf8b0b4a1faa1c69a6dae2bd3f41f17  gcc/te
*** 26607,26618 ****
  296ee275173a25aaa1618fd887921eeb  gcc/testsuite/gcc.dg/asan/use-after-scope-switch-1.c
  eac67336fe3b8fd4d4b9475003f3493d  gcc/testsuite/gcc.dg/asan/use-after-scope-switch-2.c
  c23c54132103758b8f4037e16a552a5e  gcc/testsuite/gcc.dg/asan/use-after-scope-switch-3.c
! a1ab7ffea86ea90f4770018279443df6  gcc/testsuite/gcc.dg/asan/use-after-scope-switch-4.c
  5ff39290aee620ff2495e8cb5a3905ee  gcc/testsuite/gcc.dg/asm-1.c
  2f1cb5ecc9847df3e4ff43f286442e31  gcc/testsuite/gcc.dg/asm-10.c
  b8a6dfeb58832a8b8624357eed99557a  gcc/testsuite/gcc.dg/asm-2.c
  b911cf51d486403e3ca1c067a8a15675  gcc/testsuite/gcc.dg/asm-3.c
! cdb41889031a06c2806d792a67e666e1  gcc/testsuite/gcc.dg/asm-4.c
  239874d675ee6f1b851be81d0f1a7928  gcc/testsuite/gcc.dg/asm-6.c
  364f23f60781d3e9acd1754da0633bbe  gcc/testsuite/gcc.dg/asm-7.c
  b480d858b39b79a443449bd8aaff9559  gcc/testsuite/gcc.dg/asm-8.c
--- 27862,27873 ----
  296ee275173a25aaa1618fd887921eeb  gcc/testsuite/gcc.dg/asan/use-after-scope-switch-1.c
  eac67336fe3b8fd4d4b9475003f3493d  gcc/testsuite/gcc.dg/asan/use-after-scope-switch-2.c
  c23c54132103758b8f4037e16a552a5e  gcc/testsuite/gcc.dg/asan/use-after-scope-switch-3.c
! a2d1ea88dacc70c33faa24147781e0a9  gcc/testsuite/gcc.dg/asan/use-after-scope-switch-4.c
  5ff39290aee620ff2495e8cb5a3905ee  gcc/testsuite/gcc.dg/asm-1.c
  2f1cb5ecc9847df3e4ff43f286442e31  gcc/testsuite/gcc.dg/asm-10.c
  b8a6dfeb58832a8b8624357eed99557a  gcc/testsuite/gcc.dg/asm-2.c
  b911cf51d486403e3ca1c067a8a15675  gcc/testsuite/gcc.dg/asm-3.c
! c08cbc9a1809fa9d7f2a7d9747779332  gcc/testsuite/gcc.dg/asm-4.c
  239874d675ee6f1b851be81d0f1a7928  gcc/testsuite/gcc.dg/asm-6.c
  364f23f60781d3e9acd1754da0633bbe  gcc/testsuite/gcc.dg/asm-7.c
  b480d858b39b79a443449bd8aaff9559  gcc/testsuite/gcc.dg/asm-8.c
*************** e370903640e76bf4ef407aafe0286689  gcc/te
*** 26623,26632 ****
  6c3cba24c3d3fbf660605697935b9be5  gcc/testsuite/gcc.dg/asm-names.c
  9c3b7de14ce6ac49627b91e2808376e5  gcc/testsuite/gcc.dg/asm-pr24146.c
  30c0db8f2dbd87c0958f9d1f061177a1  gcc/testsuite/gcc.dg/asm-qual-1.c
! db0a8e014eddd1da9a78a03ddc2cf187  gcc/testsuite/gcc.dg/asm-wide-1.c
  085c27a754d9d7ab0376729bd31a4ffe  gcc/testsuite/gcc.dg/asr_div1.c
! 24f7a4c97b8b88d8299ad100f545b5bf  gcc/testsuite/gcc.dg/assign-warn-1.c
! e0b7a92bde71c8beacdf0d3396749dd6  gcc/testsuite/gcc.dg/assign-warn-2.c
  0e7e975a9850cb9627daeae955a0ba5a  gcc/testsuite/gcc.dg/assign-warn-3.c
  81e03f04f7152ecc9489fafbac5d73a6  gcc/testsuite/gcc.dg/atomic-compare-exchange-1.c
  e02d18b933cd31187ef17173ef98db12  gcc/testsuite/gcc.dg/atomic-compare-exchange-2.c
--- 27878,27887 ----
  6c3cba24c3d3fbf660605697935b9be5  gcc/testsuite/gcc.dg/asm-names.c
  9c3b7de14ce6ac49627b91e2808376e5  gcc/testsuite/gcc.dg/asm-pr24146.c
  30c0db8f2dbd87c0958f9d1f061177a1  gcc/testsuite/gcc.dg/asm-qual-1.c
! f9124f383a4e54b794017e91b8a34e85  gcc/testsuite/gcc.dg/asm-wide-1.c
  085c27a754d9d7ab0376729bd31a4ffe  gcc/testsuite/gcc.dg/asr_div1.c
! 351eb206c98357428c5f86f2cff5b5e3  gcc/testsuite/gcc.dg/assign-warn-1.c
! d4b06bfbd73b9457d05a2d5cc2ccec4b  gcc/testsuite/gcc.dg/assign-warn-2.c
  0e7e975a9850cb9627daeae955a0ba5a  gcc/testsuite/gcc.dg/assign-warn-3.c
  81e03f04f7152ecc9489fafbac5d73a6  gcc/testsuite/gcc.dg/atomic-compare-exchange-1.c
  e02d18b933cd31187ef17173ef98db12  gcc/testsuite/gcc.dg/atomic-compare-exchange-2.c
*************** e7710598dce73052d83e8bc41ad3e45c  gcc/te
*** 26663,26675 ****
  0c559132ac4793a69b667808c285dafb  gcc/testsuite/gcc.dg/atomic-op-optimize.c
  0eb08d386ca84b3bbfc6715587d8da62  gcc/testsuite/gcc.dg/atomic-param.c
  5c192b948a8ffc3e00598119ed1e9872  gcc/testsuite/gcc.dg/atomic-pr51256.c
  a461c4051aa09ddd6b2950b456a5e208  gcc/testsuite/gcc.dg/atomic-store-1.c
  545525b36d206ad84981240a7c2026ed  gcc/testsuite/gcc.dg/atomic-store-2.c
  b6d936bcef333630cc9629b477556dad  gcc/testsuite/gcc.dg/atomic-store-3.c
  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
! 4d9a5e95ca683f822242b73c16a8f27c  gcc/testsuite/gcc.dg/atomic/atomic.exp
  c341a56eb40ffc48dba93161f0413185  gcc/testsuite/gcc.dg/atomic/c11-atomic-exec-1.c
  53c07ebd1f125e7d5c8ac384d45e3763  gcc/testsuite/gcc.dg/atomic/c11-atomic-exec-2.c
  26c96c849ea8b781c5176b22d3ae0f3f  gcc/testsuite/gcc.dg/atomic/c11-atomic-exec-3.c
--- 27918,27931 ----
  0c559132ac4793a69b667808c285dafb  gcc/testsuite/gcc.dg/atomic-op-optimize.c
  0eb08d386ca84b3bbfc6715587d8da62  gcc/testsuite/gcc.dg/atomic-param.c
  5c192b948a8ffc3e00598119ed1e9872  gcc/testsuite/gcc.dg/atomic-pr51256.c
+ a130c322e57e70c30083d2962641e2d3  gcc/testsuite/gcc.dg/atomic-pr81231.c
  a461c4051aa09ddd6b2950b456a5e208  gcc/testsuite/gcc.dg/atomic-store-1.c
  545525b36d206ad84981240a7c2026ed  gcc/testsuite/gcc.dg/atomic-store-2.c
  b6d936bcef333630cc9629b477556dad  gcc/testsuite/gcc.dg/atomic-store-3.c
  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
! 8bddd05380f80f960189f5ba3a33db84  gcc/testsuite/gcc.dg/atomic/atomic.exp
  c341a56eb40ffc48dba93161f0413185  gcc/testsuite/gcc.dg/atomic/c11-atomic-exec-1.c
  53c07ebd1f125e7d5c8ac384d45e3763  gcc/testsuite/gcc.dg/atomic/c11-atomic-exec-2.c
  26c96c849ea8b781c5176b22d3ae0f3f  gcc/testsuite/gcc.dg/atomic/c11-atomic-exec-3.c
*************** fca912e7f29379cdff1c060b060c6465  gcc/te
*** 26679,26684 ****
--- 27935,27943 ----
  67c3d3e9eb4497d2b48999a580aea758  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
*************** c5eb132664fcdccfe3b42e49e06fba83  gcc/te
*** 26711,26731 ****
  10068247729e9cd3aff521270899182f  gcc/testsuite/gcc.dg/atomic/stdatomic-vm.c
  bfcf3d61cfaeb70ffaf79290c46dc732  gcc/testsuite/gcc.dg/attr-alias-1.c
  e1871215b9eef07b10dc8c1bf21c038a  gcc/testsuite/gcc.dg/attr-alias-2.c
! 30066b81b9d038d4bc301b35a841670c  gcc/testsuite/gcc.dg/attr-alias-3.c
  99cd188400d44ba5049838fee2edbf82  gcc/testsuite/gcc.dg/attr-alias-4.c
! ad95ed18802ce1abcbdc4e2dc52215a1  gcc/testsuite/gcc.dg/attr-alias-5.c
  a9ff03a6ff85f7c46fced4797280e236  gcc/testsuite/gcc.dg/attr-alloc_align-1.c
  83fdbdbc710560c226a8fab45907cb21  gcc/testsuite/gcc.dg/attr-alloc_align-2.c
  a40448e5fa79d5f463c4408a645a3bb7  gcc/testsuite/gcc.dg/attr-alloc_align-3.c
! 7284d04f629f980868e5ba8ef7583d61  gcc/testsuite/gcc.dg/attr-alloc_size-10.c
! 8119a1f04b0e750b1199e3d0251c84b8  gcc/testsuite/gcc.dg/attr-alloc_size-11.c
  c87533f518e4f5b28d742042f6e43626  gcc/testsuite/gcc.dg/attr-alloc_size-2.c
! a4aac179af3eb923883845742788f566  gcc/testsuite/gcc.dg/attr-alloc_size-3.c
! 02f4c463beb28876ba2e07b76171fd37  gcc/testsuite/gcc.dg/attr-alloc_size-4.c
  26da219b15e4455b31896d10a375cf03  gcc/testsuite/gcc.dg/attr-alloc_size-5.c
  5c62e3f45c58d5e3a74e6cfb74aacc95  gcc/testsuite/gcc.dg/attr-alloc_size-6.c
! 6763781a75aca2d314e1794ebb1f72a5  gcc/testsuite/gcc.dg/attr-alloc_size-7.c
! 75d13240dda88674f36a1dabf3604bd3  gcc/testsuite/gcc.dg/attr-alloc_size-8.c
  52c6f276a374df0f896123bfcbe0aaaa  gcc/testsuite/gcc.dg/attr-alloc_size-9.c
  9a039a2076aa787c21b2950247684364  gcc/testsuite/gcc.dg/attr-alloc_size.c
  bff5bf12c7a752b89f17af335428c788  gcc/testsuite/gcc.dg/attr-alwaysinline.c
--- 27970,27990 ----
  10068247729e9cd3aff521270899182f  gcc/testsuite/gcc.dg/atomic/stdatomic-vm.c
  bfcf3d61cfaeb70ffaf79290c46dc732  gcc/testsuite/gcc.dg/attr-alias-1.c
  e1871215b9eef07b10dc8c1bf21c038a  gcc/testsuite/gcc.dg/attr-alias-2.c
! e2a79e8b69a6b8bbbeab0ba442c5de78  gcc/testsuite/gcc.dg/attr-alias-3.c
  99cd188400d44ba5049838fee2edbf82  gcc/testsuite/gcc.dg/attr-alias-4.c
! 1c0a0a749659c3949294628c0fee2292  gcc/testsuite/gcc.dg/attr-alias-5.c
  a9ff03a6ff85f7c46fced4797280e236  gcc/testsuite/gcc.dg/attr-alloc_align-1.c
  83fdbdbc710560c226a8fab45907cb21  gcc/testsuite/gcc.dg/attr-alloc_align-2.c
  a40448e5fa79d5f463c4408a645a3bb7  gcc/testsuite/gcc.dg/attr-alloc_align-3.c
! 55269514c1744f7878fc47afe156a49b  gcc/testsuite/gcc.dg/attr-alloc_size-10.c
! 309bebbddf33a6f440c157878bfa5371  gcc/testsuite/gcc.dg/attr-alloc_size-11.c
  c87533f518e4f5b28d742042f6e43626  gcc/testsuite/gcc.dg/attr-alloc_size-2.c
! 72b787be529e79c8456302fbfd6087cb  gcc/testsuite/gcc.dg/attr-alloc_size-3.c
! 027fba1dfd863548c3847f174d9efa33  gcc/testsuite/gcc.dg/attr-alloc_size-4.c
  26da219b15e4455b31896d10a375cf03  gcc/testsuite/gcc.dg/attr-alloc_size-5.c
  5c62e3f45c58d5e3a74e6cfb74aacc95  gcc/testsuite/gcc.dg/attr-alloc_size-6.c
! 21634f1909d0eaea5677d4bae51d077b  gcc/testsuite/gcc.dg/attr-alloc_size-7.c
! cc47411b2b3baa583394de250eb7c8ba  gcc/testsuite/gcc.dg/attr-alloc_size-8.c
  52c6f276a374df0f896123bfcbe0aaaa  gcc/testsuite/gcc.dg/attr-alloc_size-9.c
  9a039a2076aa787c21b2950247684364  gcc/testsuite/gcc.dg/attr-alloc_size.c
  bff5bf12c7a752b89f17af335428c788  gcc/testsuite/gcc.dg/attr-alwaysinline.c
*************** bff5bf12c7a752b89f17af335428c788  gcc/te
*** 26736,26760 ****
  2325b5c5b5a2514369e43e2225cbb43b  gcc/testsuite/gcc.dg/attr-externally-visible-1.c
  e2c4478123394f5f5dcc53fed1244f90  gcc/testsuite/gcc.dg/attr-externally-visible-2.c
  e1bd9aabd944b99886e4caee5bcc3dfc  gcc/testsuite/gcc.dg/attr-hotcold-1.c
! d0a767d2c63195ce29610cd31a6a455d  gcc/testsuite/gcc.dg/attr-ifunc-1.c
! f0c0d7cbc39fc392190d1c514d80c09a  gcc/testsuite/gcc.dg/attr-ifunc-2.c
! 766ac260a6589d592b082b6d1feb933d  gcc/testsuite/gcc.dg/attr-ifunc-3.c
! c44c12f9dc3e1f56127c7db0926ad657  gcc/testsuite/gcc.dg/attr-ifunc-4.c
! 08a5bc7164db6270dcf3c70ee4e152cd  gcc/testsuite/gcc.dg/attr-ifunc-5.c
! 18b5ffed1cbe534a17f69968bcbb7671  gcc/testsuite/gcc.dg/attr-invalid.c
  dda577a8db5a9ac846b12e6d6d62a0dd  gcc/testsuite/gcc.dg/attr-may-alias-1.c
  f298b442f1417f4a5a952b04dbe114b5  gcc/testsuite/gcc.dg/attr-mode-1.c
  e427c17eb1d839cc3cf176d262cdffc0  gcc/testsuite/gcc.dg/attr-mode-2.c
! 9cbd8d4dd5fa7a5f8327c052a939b00f  gcc/testsuite/gcc.dg/attr-ms_struct-1.c
! 2a26edff1b19d2fa74778eff601060ee  gcc/testsuite/gcc.dg/attr-ms_struct-2.c
! ef07995d97e35460c4ef6d6e8d045a82  gcc/testsuite/gcc.dg/attr-ms_struct-packed1.c
  2e8d579abde3b50be916cdcd11691f06  gcc/testsuite/gcc.dg/attr-nest.c
! c786da551d2a2520a666528313f127c5  gcc/testsuite/gcc.dg/attr-noinline.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
  9ae36569202bfebd5eef9afc2457f445  gcc/testsuite/gcc.dg/attr-weakref-1-darwin.c
! 9768701a91081a75c8815857c809da33  gcc/testsuite/gcc.dg/attr-weakref-1.c
  f348c9eb66b29ddb21e87abea341a730  gcc/testsuite/gcc.dg/attr-weakref-1a.c
  b32f0ffe033e8bca2840070b64fc6314  gcc/testsuite/gcc.dg/attr-weakref-1b.c
  0e9f1da058d76aa4fbad24a3687c8454  gcc/testsuite/gcc.dg/attr-weakref-2.c
--- 27995,28020 ----
  2325b5c5b5a2514369e43e2225cbb43b  gcc/testsuite/gcc.dg/attr-externally-visible-1.c
  e2c4478123394f5f5dcc53fed1244f90  gcc/testsuite/gcc.dg/attr-externally-visible-2.c
  e1bd9aabd944b99886e4caee5bcc3dfc  gcc/testsuite/gcc.dg/attr-hotcold-1.c
! 36757d189f681d886aee7b5bc8bc39a8  gcc/testsuite/gcc.dg/attr-ifunc-1.c
! fdff5507603fa1993842a13ecf8090c5  gcc/testsuite/gcc.dg/attr-ifunc-2.c
! 3a27931f692fe525c56be1e29c403c5b  gcc/testsuite/gcc.dg/attr-ifunc-3.c
! dfcbcb413d45b799130076be29aefda8  gcc/testsuite/gcc.dg/attr-ifunc-4.c
! 691220b853ff6986c4b9f90caaeb2008  gcc/testsuite/gcc.dg/attr-ifunc-5.c
! ba4bb570d75087182c6efb61a9373abf  gcc/testsuite/gcc.dg/attr-invalid.c
  dda577a8db5a9ac846b12e6d6d62a0dd  gcc/testsuite/gcc.dg/attr-may-alias-1.c
  f298b442f1417f4a5a952b04dbe114b5  gcc/testsuite/gcc.dg/attr-mode-1.c
  e427c17eb1d839cc3cf176d262cdffc0  gcc/testsuite/gcc.dg/attr-mode-2.c
! 04214a79bf9ae6c2319c79c848adc14a  gcc/testsuite/gcc.dg/attr-ms_struct-1.c
! e02ec6b9f7fd9ab37c02f7efd3c1f1d5  gcc/testsuite/gcc.dg/attr-ms_struct-2.c
! 9e7fc795bb3ac25b7fa1884e4ee68d5b  gcc/testsuite/gcc.dg/attr-ms_struct-packed1.c
  2e8d579abde3b50be916cdcd11691f06  gcc/testsuite/gcc.dg/attr-nest.c
! dfe86d72ed84778970010f482aa51568  gcc/testsuite/gcc.dg/attr-noinline.c
! 3256957c833fc7587cbd2c4bbb90f984  gcc/testsuite/gcc.dg/attr-noipa.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
  9ae36569202bfebd5eef9afc2457f445  gcc/testsuite/gcc.dg/attr-weakref-1-darwin.c
! d3ad2f245a32e99333ec2c853ab3da93  gcc/testsuite/gcc.dg/attr-weakref-1.c
  f348c9eb66b29ddb21e87abea341a730  gcc/testsuite/gcc.dg/attr-weakref-1a.c
  b32f0ffe033e8bca2840070b64fc6314  gcc/testsuite/gcc.dg/attr-weakref-1b.c
  0e9f1da058d76aa4fbad24a3687c8454  gcc/testsuite/gcc.dg/attr-weakref-2.c
*************** b32f0ffe033e8bca2840070b64fc6314  gcc/te
*** 26762,26768 ****
  a8b698b276857d272916880be5579a44  gcc/testsuite/gcc.dg/attr-weakref-4.c
  728ad18ac3017195abfa17386cbb7a12  gcc/testsuite/gcc.dg/auto-type-1.c
  c5e609e52b13380aa093916bc7d09fce  gcc/testsuite/gcc.dg/auto-type-2.c
! 57bb8bd2df2b765c368ffcb469f753b6  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
--- 28022,28028 ----
  a8b698b276857d272916880be5579a44  gcc/testsuite/gcc.dg/attr-weakref-4.c
  728ad18ac3017195abfa17386cbb7a12  gcc/testsuite/gcc.dg/auto-type-1.c
  c5e609e52b13380aa093916bc7d09fce  gcc/testsuite/gcc.dg/auto-type-2.c
! 069d91598d4c1386c764f298cb8c105d  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
*************** f401436e351ebb86bc2ec229704738d3  gcc/te
*** 26786,26798 ****
  064c6fd0468ea0a8826a1bb4f8c27d06  gcc/testsuite/gcc.dg/autopar/pr46193.c
  117c8cd5c1841c6401bc7d1982a9bd21  gcc/testsuite/gcc.dg/autopar/pr46194.c
  fa45be6f45a7fb52bca2fb0120965bfd  gcc/testsuite/gcc.dg/autopar/pr46561.c
! 27f6eda7a1ad50fccfa3895155ceffba  gcc/testsuite/gcc.dg/autopar/pr46799.c
  3387f6d036c4026682d614330df3ee6a  gcc/testsuite/gcc.dg/autopar/pr46885.c
  7a2aa1c87015640c49eda4dc41efc16d  gcc/testsuite/gcc.dg/autopar/pr46969.c
  4955edaa513ba48950991f8d4ec35f84  gcc/testsuite/gcc.dg/autopar/pr47060.c
  6a675470487089c0502fc413c93c547e  gcc/testsuite/gcc.dg/autopar/pr49580.c
  4ee741780e5e9f328719d8b0ea858e4b  gcc/testsuite/gcc.dg/autopar/pr49960-1.c
! 6e5774c27a35b27e698c300dd333ab9d  gcc/testsuite/gcc.dg/autopar/pr49960.c
  19e1847731146a159a6588f862145063  gcc/testsuite/gcc.dg/autopar/pr57103.c
  27391de0a65828f2a5e9cbbe81fb90d1  gcc/testsuite/gcc.dg/autopar/pr57185.c
  7e9ac1304afaec188783250cdbd8529e  gcc/testsuite/gcc.dg/autopar/pr68373.c
--- 28046,28058 ----
  064c6fd0468ea0a8826a1bb4f8c27d06  gcc/testsuite/gcc.dg/autopar/pr46193.c
  117c8cd5c1841c6401bc7d1982a9bd21  gcc/testsuite/gcc.dg/autopar/pr46194.c
  fa45be6f45a7fb52bca2fb0120965bfd  gcc/testsuite/gcc.dg/autopar/pr46561.c
! 3a35d2c4b713442a9cdfd587e77d0165  gcc/testsuite/gcc.dg/autopar/pr46799.c
  3387f6d036c4026682d614330df3ee6a  gcc/testsuite/gcc.dg/autopar/pr46885.c
  7a2aa1c87015640c49eda4dc41efc16d  gcc/testsuite/gcc.dg/autopar/pr46969.c
  4955edaa513ba48950991f8d4ec35f84  gcc/testsuite/gcc.dg/autopar/pr47060.c
  6a675470487089c0502fc413c93c547e  gcc/testsuite/gcc.dg/autopar/pr49580.c
  4ee741780e5e9f328719d8b0ea858e4b  gcc/testsuite/gcc.dg/autopar/pr49960-1.c
! f5cb55cc488457202693155371836b5c  gcc/testsuite/gcc.dg/autopar/pr49960.c
  19e1847731146a159a6588f862145063  gcc/testsuite/gcc.dg/autopar/pr57103.c
  27391de0a65828f2a5e9cbbe81fb90d1  gcc/testsuite/gcc.dg/autopar/pr57185.c
  7e9ac1304afaec188783250cdbd8529e  gcc/testsuite/gcc.dg/autopar/pr68373.c
*************** a345c8424d097325ceddaefa74a387d5  gcc/te
*** 26804,26809 ****
--- 28064,28070 ----
  35bf77a6f395ee231591b83871e4d57c  gcc/testsuite/gcc.dg/autopar/pr69109.c
  d4c6704efcf13b06e8298878fac4997e  gcc/testsuite/gcc.dg/autopar/pr69110.c
  0a5194faeff35d018f0826c0ededa45b  gcc/testsuite/gcc.dg/autopar/pr69426.c
+ 3e6146dc074b29e53924ebb8947bcb10  gcc/testsuite/gcc.dg/autopar/pr83957.c
  cfcabb1d73fb9955200dafe2f7cd4eda  gcc/testsuite/gcc.dg/autopar/reduc-1.c
  bd8dcababb2b878b4b2e6a7b44270723  gcc/testsuite/gcc.dg/autopar/reduc-1char.c
  faacb19babd5a7b53cfd57e60279fa11  gcc/testsuite/gcc.dg/autopar/reduc-1short.c
*************** c3ec1cf03ff502f2425714ca80d1c941  gcc/te
*** 26826,26834 ****
  9c81bf8464f7d045404719b2b619049c  gcc/testsuite/gcc.dg/bconstp-3.c
  2db175b798b402db35943965c06a4682  gcc/testsuite/gcc.dg/bconstp-4.c
  7f7aae3bd63cae70040336ac1dbebcaa  gcc/testsuite/gcc.dg/bf-ms-attrib.c
! 9086fb6febc18814cb8e795338f38586  gcc/testsuite/gcc.dg/bf-ms-layout-2.c
  6349854c3bffc8279c90be107e93a21f  gcc/testsuite/gcc.dg/bf-ms-layout-3.c
! 33fbb9a571c598c0bc8383006ba5865a  gcc/testsuite/gcc.dg/bf-ms-layout.c
  7f07619c88610f37cf243e4e9548534f  gcc/testsuite/gcc.dg/bf-no-ms-layout.c
  0e3716c5009f5c5e6a6e6e89d7cb2051  gcc/testsuite/gcc.dg/bf-spl1.c
  f4bf2e19a922fd5744282ba866d43442  gcc/testsuite/gcc.dg/binary-constants-1.c
--- 28087,28097 ----
  9c81bf8464f7d045404719b2b619049c  gcc/testsuite/gcc.dg/bconstp-3.c
  2db175b798b402db35943965c06a4682  gcc/testsuite/gcc.dg/bconstp-4.c
  7f7aae3bd63cae70040336ac1dbebcaa  gcc/testsuite/gcc.dg/bf-ms-attrib.c
! 79b44f068e39c7246d2a4c7d88da33b8  gcc/testsuite/gcc.dg/bf-ms-layout-2.c
  6349854c3bffc8279c90be107e93a21f  gcc/testsuite/gcc.dg/bf-ms-layout-3.c
! bed618cfd7222010217a3fe29f1175a8  gcc/testsuite/gcc.dg/bf-ms-layout-4.c
! 02986c5a918cc9ddc8b3d688ae04e4d7  gcc/testsuite/gcc.dg/bf-ms-layout-5.c
! ec5b9b1f32647a9cacda264af9d27b8f  gcc/testsuite/gcc.dg/bf-ms-layout.c
  7f07619c88610f37cf243e4e9548534f  gcc/testsuite/gcc.dg/bf-no-ms-layout.c
  0e3716c5009f5c5e6a6e6e89d7cb2051  gcc/testsuite/gcc.dg/bf-spl1.c
  f4bf2e19a922fd5744282ba866d43442  gcc/testsuite/gcc.dg/binary-constants-1.c
*************** ac682ee268e8e9e32b659989f39dc121  gcc/te
*** 26867,26873 ****
  0052e72b2b70c6bb680a0b36820d041b  gcc/testsuite/gcc.dg/bitfld-17.c
  63134a6f65156e17a7ff7c98dfcea812  gcc/testsuite/gcc.dg/bitfld-18.c
  286176510ee3b864448d5a5be2e4eab2  gcc/testsuite/gcc.dg/bitfld-19.c
! 944c0a5046ab04618cc2722199b795c0  gcc/testsuite/gcc.dg/bitfld-2.c
  18f11e313e89db2c32b47027f0c53055  gcc/testsuite/gcc.dg/bitfld-20.c
  567c641417610729f9d8d96a370ee935  gcc/testsuite/gcc.dg/bitfld-21.c
  d84cc330b6f4899456411b2b38d33213  gcc/testsuite/gcc.dg/bitfld-22.c
--- 28130,28136 ----
  0052e72b2b70c6bb680a0b36820d041b  gcc/testsuite/gcc.dg/bitfld-17.c
  63134a6f65156e17a7ff7c98dfcea812  gcc/testsuite/gcc.dg/bitfld-18.c
  286176510ee3b864448d5a5be2e4eab2  gcc/testsuite/gcc.dg/bitfld-19.c
! 45df61fce9092ae86b622a1e546b148d  gcc/testsuite/gcc.dg/bitfld-2.c
  18f11e313e89db2c32b47027f0c53055  gcc/testsuite/gcc.dg/bitfld-20.c
  567c641417610729f9d8d96a370ee935  gcc/testsuite/gcc.dg/bitfld-21.c
  d84cc330b6f4899456411b2b38d33213  gcc/testsuite/gcc.dg/bitfld-22.c
*************** d84cc330b6f4899456411b2b38d33213  gcc/te
*** 26880,26888 ****
  c9bbd70f3dbd7558a9c1c7a6e5901e7b  gcc/testsuite/gcc.dg/bitfld-9.c
  6453b594ca416ac818e19554b58e489e  gcc/testsuite/gcc.dg/boolcomplex-1.c
  29dee620c099065fec233358259a8a12  gcc/testsuite/gcc.dg/bss.c
! 29937613eb4ee12d8cb3c7e6f013d1be  gcc/testsuite/gcc.dg/builtin-alloc-size.c
  fef5a8d7a1f7cdc1db96edce26047f61  gcc/testsuite/gcc.dg/builtin-apply1.c
! 6e147eb1ad9eecdfe1d1095f1f26095b  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
--- 28143,28151 ----
  c9bbd70f3dbd7558a9c1c7a6e5901e7b  gcc/testsuite/gcc.dg/bitfld-9.c
  6453b594ca416ac818e19554b58e489e  gcc/testsuite/gcc.dg/boolcomplex-1.c
  29dee620c099065fec233358259a8a12  gcc/testsuite/gcc.dg/bss.c
! bc286f4ff365c89c597fd19aa53a46c4  gcc/testsuite/gcc.dg/builtin-alloc-size.c
  fef5a8d7a1f7cdc1db96edce26047f61  gcc/testsuite/gcc.dg/builtin-apply1.c
! f083f3c9a7efab3102a96b6c2aade006  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
*************** ffc151478579fb7668adfc666bae4351  gcc/te
*** 26896,26902 ****
  7551adc7fc5d3c7b6b00084e454dbb2b  gcc/testsuite/gcc.dg/builtin-bswap-5.c
  e726e37e1e11c8196b19d2e74be26ceb  gcc/testsuite/gcc.dg/builtin-bswap-6.c
  ecffd294105471e159e662a7ea58716e  gcc/testsuite/gcc.dg/builtin-bswap-6a.c
! 0f79858102a95b1aad3b8e8761d13c8f  gcc/testsuite/gcc.dg/builtin-bswap-7.c
  39a589bed3922c20ecddc1b22c5dd0be  gcc/testsuite/gcc.dg/builtin-bswap-7a.c
  dee8624db42c149e727e832415aa5090  gcc/testsuite/gcc.dg/builtin-bswap-8.c
  547dc816e801f8746cd259482702fa77  gcc/testsuite/gcc.dg/builtin-bswap-9.c
--- 28159,28165 ----
  7551adc7fc5d3c7b6b00084e454dbb2b  gcc/testsuite/gcc.dg/builtin-bswap-5.c
  e726e37e1e11c8196b19d2e74be26ceb  gcc/testsuite/gcc.dg/builtin-bswap-6.c
  ecffd294105471e159e662a7ea58716e  gcc/testsuite/gcc.dg/builtin-bswap-6a.c
! 57f31525406abaf590dfcd740e6e1a12  gcc/testsuite/gcc.dg/builtin-bswap-7.c
  39a589bed3922c20ecddc1b22c5dd0be  gcc/testsuite/gcc.dg/builtin-bswap-7a.c
  dee8624db42c149e727e832415aa5090  gcc/testsuite/gcc.dg/builtin-bswap-8.c
  547dc816e801f8746cd259482702fa77  gcc/testsuite/gcc.dg/builtin-bswap-9.c
*************** b152d7b3044cd4c130385716be2c314d  gcc/te
*** 26906,26915 ****
  8a5469840816c0e59551cba587e09908  gcc/testsuite/gcc.dg/builtin-complex-err-2.c
  0c222cc6e71e46ddf388523376157d29  gcc/testsuite/gcc.dg/builtin-constant_p-1.c
  03141515e920f2326efdd83f7b0681fd  gcc/testsuite/gcc.dg/builtin-ffs-1.c
! 3421bfdb440fb89c3cafef100222a88c  gcc/testsuite/gcc.dg/builtin-inf-1.c
  5f87b3c9bc619a716a474970cdb0e236  gcc/testsuite/gcc.dg/builtin-object-size-1.c
! b9abaf3878111c5050502c0f23370740  gcc/testsuite/gcc.dg/builtin-object-size-10.c
! 273df20d260498f68e2c4e326dea57ca  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
--- 28169,28178 ----
  8a5469840816c0e59551cba587e09908  gcc/testsuite/gcc.dg/builtin-complex-err-2.c
  0c222cc6e71e46ddf388523376157d29  gcc/testsuite/gcc.dg/builtin-constant_p-1.c
  03141515e920f2326efdd83f7b0681fd  gcc/testsuite/gcc.dg/builtin-ffs-1.c
! 75907261ba74bd865eb1ccbcff9b50c2  gcc/testsuite/gcc.dg/builtin-inf-1.c
  5f87b3c9bc619a716a474970cdb0e236  gcc/testsuite/gcc.dg/builtin-object-size-1.c
! e977951785a41750921c14be52497347  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
*************** d65c470a9173c5d0f37963aa85d49753  gcc/te
*** 26927,26949 ****
  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
! e6ffde78e7dc508af23a987c41c298f0  gcc/testsuite/gcc.dg/builtin-redefine.c
! 1eb9cf9df09d30f175274fabd5553427  gcc/testsuite/gcc.dg/builtin-return-1.c
! d501290870154861713173cfe52c8ee8  gcc/testsuite/gcc.dg/builtin-stringop-chk-1.c
  ed1656f783d92fedc726aeba8e49f03a  gcc/testsuite/gcc.dg/builtin-stringop-chk-2.c
! f68c637838c442335aa5de0e200bb2cb  gcc/testsuite/gcc.dg/builtin-stringop-chk-4.c
  a910e6e4dbad39a3e79c8e8fbf87c9ed  gcc/testsuite/gcc.dg/builtin-stringop-chk-5.c
  1109497a6a7e6e51e3cea141ef370b83  gcc/testsuite/gcc.dg/builtin-stringop-chk-6.c
  f76d3104f0e4dfa380166bdd90954f2b  gcc/testsuite/gcc.dg/builtin-stringop-chk-7.c
! 4bb19d82e759b7c91baf4466a964b484  gcc/testsuite/gcc.dg/builtin-strncat-chk-1.c
  e6fb34d9dcc3e8d3fb2c859d542bd34b  gcc/testsuite/gcc.dg/builtin-strstr-1.c
  35c590121da633e8f3bebf6707a46ba7  gcc/testsuite/gcc.dg/builtin-strstr.c
  2aff03ba9fa42e64dea658c79ad816e6  gcc/testsuite/gcc.dg/builtin-unreachable-1.c
  9399d77d3b11b0d63ba66560d1d4696d  gcc/testsuite/gcc.dg/builtin-unreachable-2.c
  273adb61fc527a0a98332844df1a5b16  gcc/testsuite/gcc.dg/builtin-unreachable-3.c
  3f5b321aedbde585bb267c9931d87096  gcc/testsuite/gcc.dg/builtin-unreachable-4.c
  b00d36d0215e29686de9f6563afb4e87  gcc/testsuite/gcc.dg/builtin-unreachable-5.c
! b9167f45f6eb5a60fae925c8d0e12d29  gcc/testsuite/gcc.dg/builtin-unreachable-6.c
  6ebde161046c0cab9641583495be0f84  gcc/testsuite/gcc.dg/builtins-1.c
  de826bd2faea31ca3887af383ff62b8f  gcc/testsuite/gcc.dg/builtins-10.c
  960461c95930d3d3bd3e2a49ed939d49  gcc/testsuite/gcc.dg/builtins-11.c
--- 28190,28221 ----
  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
! 246bb70bfe2055226e4764a8be22bdb1  gcc/testsuite/gcc.dg/builtin-return-1.c
! 79e53749cdea358386f2f3a82c25a0bd  gcc/testsuite/gcc.dg/builtin-stpncpy.c
! 63197d1b9cf87e0c3335afc0774e320c  gcc/testsuite/gcc.dg/builtin-stringop-chk-1.c
  ed1656f783d92fedc726aeba8e49f03a  gcc/testsuite/gcc.dg/builtin-stringop-chk-2.c
! d1023b0bea9c061931be151f2156cd52  gcc/testsuite/gcc.dg/builtin-stringop-chk-4.c
  a910e6e4dbad39a3e79c8e8fbf87c9ed  gcc/testsuite/gcc.dg/builtin-stringop-chk-5.c
  1109497a6a7e6e51e3cea141ef370b83  gcc/testsuite/gcc.dg/builtin-stringop-chk-6.c
  f76d3104f0e4dfa380166bdd90954f2b  gcc/testsuite/gcc.dg/builtin-stringop-chk-7.c
! 0120029ca2ff2ddfd87d1d5c4b59a423  gcc/testsuite/gcc.dg/builtin-stringop-chk-8.c
! 2187a1040a7eeb50f480e563045c0cee  gcc/testsuite/gcc.dg/builtin-stringop-chk-9.c
! 5494c95d7bb39a02a19619b786ecaa52  gcc/testsuite/gcc.dg/builtin-strncat-chk-1.c
  e6fb34d9dcc3e8d3fb2c859d542bd34b  gcc/testsuite/gcc.dg/builtin-strstr-1.c
  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
  9399d77d3b11b0d63ba66560d1d4696d  gcc/testsuite/gcc.dg/builtin-unreachable-2.c
  273adb61fc527a0a98332844df1a5b16  gcc/testsuite/gcc.dg/builtin-unreachable-3.c
  3f5b321aedbde585bb267c9931d87096  gcc/testsuite/gcc.dg/builtin-unreachable-4.c
  b00d36d0215e29686de9f6563afb4e87  gcc/testsuite/gcc.dg/builtin-unreachable-5.c
! 805cca243e4ddc4c6a264af39e4c36ab  gcc/testsuite/gcc.dg/builtin-unreachable-6.c
! 55f574298f80b352e4b2c682678ec628  gcc/testsuite/gcc.dg/builtin-unreachable-6a.c
  6ebde161046c0cab9641583495be0f84  gcc/testsuite/gcc.dg/builtins-1.c
  de826bd2faea31ca3887af383ff62b8f  gcc/testsuite/gcc.dg/builtins-10.c
  960461c95930d3d3bd3e2a49ed939d49  gcc/testsuite/gcc.dg/builtins-11.c
*************** e99f948a2420290f76df40092a42fab0  gcc/te
*** 27008,27020 ****
  6364406d43c3bf3c1af19d21027e1a8a  gcc/testsuite/gcc.dg/builtins-9.c
  5faa16db6923beeae818992ff500c617  gcc/testsuite/gcc.dg/builtins-config.h
  d02a55d128f246861a5c923d33a6f9ab  gcc/testsuite/gcc.dg/builtins-error.c
! a4d281497e187b3c4e043468055c7dbc  gcc/testsuite/gcc.dg/builtins-nonnull.c
  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
! c15b5ccd860735ed33f86abd691b5683  gcc/testsuite/gcc.dg/c11-align-4.c
! 4ec408ca72446f717853dde6f57122ec  gcc/testsuite/gcc.dg/c11-align-5.c
  adf85e554b5d3abf9d35ffe7726aa9f2  gcc/testsuite/gcc.dg/c11-align-6.c
  73272f1d085d0d6415ba75242a5bf57a  gcc/testsuite/gcc.dg/c11-anon-struct-1.c
  d36e0eddf04bed52d7912609b92f693d  gcc/testsuite/gcc.dg/c11-anon-struct-2.c
  6eb0868f68915910abd540f5e1d57664  gcc/testsuite/gcc.dg/c11-anon-struct-3.c
--- 28280,28295 ----
  6364406d43c3bf3c1af19d21027e1a8a  gcc/testsuite/gcc.dg/builtins-9.c
  5faa16db6923beeae818992ff500c617  gcc/testsuite/gcc.dg/builtins-config.h
  d02a55d128f246861a5c923d33a6f9ab  gcc/testsuite/gcc.dg/builtins-error.c
! 048bf75527c537def0289b22acc7f5f4  gcc/testsuite/gcc.dg/builtins-nonnull.c
  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
+ 46784e79957a93e1799c5ca3d61d8878  gcc/testsuite/gcc.dg/c11-align-8.c
+ d8e656734a7163cfd1fb6c02bc56c554  gcc/testsuite/gcc.dg/c11-align-9.c
  73272f1d085d0d6415ba75242a5bf57a  gcc/testsuite/gcc.dg/c11-anon-struct-1.c
  d36e0eddf04bed52d7912609b92f693d  gcc/testsuite/gcc.dg/c11-anon-struct-2.c
  6eb0868f68915910abd540f5e1d57664  gcc/testsuite/gcc.dg/c11-anon-struct-3.c
*************** d176e423452b3b1dc2b591de90fb7b79  gcc/te
*** 27022,27027 ****
--- 28297,28303 ----
  28ee2684c2aae9fb6614baa8a1825e29  gcc/testsuite/gcc.dg/c11-atomic-2.c
  fe3d87d9d937306c1cfb738ab291a1d0  gcc/testsuite/gcc.dg/c11-atomic-3.c
  92b6577d9ca27307e52b72fdc2e81cf8  gcc/testsuite/gcc.dg/c11-atomic-4.c
+ 5a7729ff2127958a8608ff174eed4821  gcc/testsuite/gcc.dg/c11-atomic-5.c
  12ef1e10f51b7a7205f424c6c3ce9ef9  gcc/testsuite/gcc.dg/c11-complex-1.c
  d9a2f9168158c56d6257cb7866dbe1f8  gcc/testsuite/gcc.dg/c11-float-1.c
  5a0906a4ebef0b27aa6dd7d4cad0cf9f  gcc/testsuite/gcc.dg/c11-float-2.c
*************** d7ef98239e7c17e364c10debfa89d9d2  gcc/te
*** 27044,27055 ****
  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
! 9a7f50ee6813db7b595b36c15a352c0e  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
  d8fec2fce7b0346ffeb1fbb2bd55d7e5  gcc/testsuite/gcc.dg/c11-version-1.c
  7e31e73dc6465f7388bf6d84893c3a04  gcc/testsuite/gcc.dg/c11-version-2.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
--- 28320,28335 ----
  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
! 2006ae8f9e3c0636ccc90f84704eab24  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
  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
  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
*************** d8fec2fce7b0346ffeb1fbb2bd55d7e5  gcc/te
*** 27057,27064 ****
  2a4f797e3f246dcbf1e94b2150b31c2d  gcc/testsuite/gcc.dg/c90-array-lval-3.c
  7e3abd2770948c291dd217ec8ad41300  gcc/testsuite/gcc.dg/c90-array-lval-4.c
  548ffd73f2147ba058f384baca26bdb1  gcc/testsuite/gcc.dg/c90-array-lval-5.c
! 430a54438ca76afd5524efd40b65c6ac  gcc/testsuite/gcc.dg/c90-array-lval-6.c
! 60c414bf9d24991ec230162a7e250680  gcc/testsuite/gcc.dg/c90-array-lval-7.c
  af2089a99b50c97685843a2a3241eb23  gcc/testsuite/gcc.dg/c90-array-lval-8.c
  ec0ea7a4a37d919a111d18227bfbf85c  gcc/testsuite/gcc.dg/c90-array-quals-2.c
  eb67599b3babd964f32070e29a0b64b3  gcc/testsuite/gcc.dg/c90-array-quals.c
--- 28337,28344 ----
  2a4f797e3f246dcbf1e94b2150b31c2d  gcc/testsuite/gcc.dg/c90-array-lval-3.c
  7e3abd2770948c291dd217ec8ad41300  gcc/testsuite/gcc.dg/c90-array-lval-4.c
  548ffd73f2147ba058f384baca26bdb1  gcc/testsuite/gcc.dg/c90-array-lval-5.c
! fb5e8bedd8b8a04191671d4756f1a149  gcc/testsuite/gcc.dg/c90-array-lval-6.c
! db7a5aea60a85abfed6c894053a7724f  gcc/testsuite/gcc.dg/c90-array-lval-7.c
  af2089a99b50c97685843a2a3241eb23  gcc/testsuite/gcc.dg/c90-array-lval-8.c
  ec0ea7a4a37d919a111d18227bfbf85c  gcc/testsuite/gcc.dg/c90-array-quals-2.c
  eb67599b3babd964f32070e29a0b64b3  gcc/testsuite/gcc.dg/c90-array-quals.c
*************** bd625f89c30c13d44a25f058b5e576fe  gcc/te
*** 27068,27080 ****
  3724d83680dddcf96724f689959bee91  gcc/testsuite/gcc.dg/c90-complit-1.c
  44572329674d37dc562af967e34d6aa9  gcc/testsuite/gcc.dg/c90-const-expr-1.c
  650fc9a34b50bcabf5a98414ca62bd2b  gcc/testsuite/gcc.dg/c90-const-expr-10.c
! 31d84ec81690735f5f761f1d538caab0  gcc/testsuite/gcc.dg/c90-const-expr-11.c
  7c75015fa11f3a39bc4a71cc2b084faf  gcc/testsuite/gcc.dg/c90-const-expr-2.c
  95cb318eabac70d57a2cb2bcb10495e2  gcc/testsuite/gcc.dg/c90-const-expr-3.c
  30d113d3c9e064035e3f9dbed7c9792d  gcc/testsuite/gcc.dg/c90-const-expr-4.c
! 655723681171327065d68ae4ae42d654  gcc/testsuite/gcc.dg/c90-const-expr-5.c
  8f6ab16d5540274665bb4b3c9ea9cb71  gcc/testsuite/gcc.dg/c90-const-expr-6.c
! fc3c5deb79b852207bd42d08d326d6d2  gcc/testsuite/gcc.dg/c90-const-expr-7.c
  e2566ca628c31687276a1bcc907dbb08  gcc/testsuite/gcc.dg/c90-const-expr-8.c
  965ebe54f5beb3dea4b00ea9551874b4  gcc/testsuite/gcc.dg/c90-const-expr-9.c
  a29d9aae5471b142585071ca58081590  gcc/testsuite/gcc.dg/c90-digraph-1.c
--- 28348,28360 ----
  3724d83680dddcf96724f689959bee91  gcc/testsuite/gcc.dg/c90-complit-1.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
  7c75015fa11f3a39bc4a71cc2b084faf  gcc/testsuite/gcc.dg/c90-const-expr-2.c
  95cb318eabac70d57a2cb2bcb10495e2  gcc/testsuite/gcc.dg/c90-const-expr-3.c
  30d113d3c9e064035e3f9dbed7c9792d  gcc/testsuite/gcc.dg/c90-const-expr-4.c
! bd79adfbf73377078d6e67f42a438181  gcc/testsuite/gcc.dg/c90-const-expr-5.c
  8f6ab16d5540274665bb4b3c9ea9cb71  gcc/testsuite/gcc.dg/c90-const-expr-6.c
! a21012e4e203e78c11ea3dde3c7b0ea1  gcc/testsuite/gcc.dg/c90-const-expr-7.c
  e2566ca628c31687276a1bcc907dbb08  gcc/testsuite/gcc.dg/c90-const-expr-8.c
  965ebe54f5beb3dea4b00ea9551874b4  gcc/testsuite/gcc.dg/c90-const-expr-9.c
  a29d9aae5471b142585071ca58081590  gcc/testsuite/gcc.dg/c90-digraph-1.c
*************** e5276aadb831e54d0b1946f2b38d598d  gcc/te
*** 27083,27089 ****
  987632064a52b420975daf1a286353fa  gcc/testsuite/gcc.dg/c90-flex-array-1.c
  f42aadf986dd6f03b9347a7efe581fa2  gcc/testsuite/gcc.dg/c90-flex-array-2.c
  2610ad04c8281a8e27f15cb78b0668db  gcc/testsuite/gcc.dg/c90-float-1.c
! 99e06af7d4e2c1f7af63ee2151cec64c  gcc/testsuite/gcc.dg/c90-fordecl-1.c
  499a46e260cf78eac5c5868455351362  gcc/testsuite/gcc.dg/c90-func-1.c
  328959b78d7e19c1de4578a96678b2ae  gcc/testsuite/gcc.dg/c90-func-2.c
  795ff8eaa6bed3ca17bd1af5d645fb07  gcc/testsuite/gcc.dg/c90-func-2.h
--- 28363,28369 ----
  987632064a52b420975daf1a286353fa  gcc/testsuite/gcc.dg/c90-flex-array-1.c
  f42aadf986dd6f03b9347a7efe581fa2  gcc/testsuite/gcc.dg/c90-flex-array-2.c
  2610ad04c8281a8e27f15cb78b0668db  gcc/testsuite/gcc.dg/c90-float-1.c
! 7c68f1a49fe89c073c7fd12f71721b9d  gcc/testsuite/gcc.dg/c90-fordecl-1.c
  499a46e260cf78eac5c5868455351362  gcc/testsuite/gcc.dg/c90-func-1.c
  328959b78d7e19c1de4578a96678b2ae  gcc/testsuite/gcc.dg/c90-func-2.c
  795ff8eaa6bed3ca17bd1af5d645fb07  gcc/testsuite/gcc.dg/c90-func-2.h
*************** be44655002ff53b455ed10f2b01571fe  gcc/te
*** 27148,27156 ****
  2b0ea14af55d8b5c0efa00351b0200a5  gcc/testsuite/gcc.dg/c99-const-expr-2.c
  1a41201d98b7cec1fa4768ff010f2243  gcc/testsuite/gcc.dg/c99-const-expr-3.c
  8a0c3caa2946e119d2ac9291c14b168f  gcc/testsuite/gcc.dg/c99-const-expr-4.c
! dc52082e15cd85711b3b3e43c388d655  gcc/testsuite/gcc.dg/c99-const-expr-5.c
  ef9e695cc12dee6edcb25b8e6ec08cca  gcc/testsuite/gcc.dg/c99-const-expr-6.c
! 46bbbb9d6e456ddab6d82286943fb11e  gcc/testsuite/gcc.dg/c99-const-expr-7.c
  7d50fe40b5b76d907ec9f4873364a116  gcc/testsuite/gcc.dg/c99-const-expr-8.c
  655311c1279a2c3cbb2a17f46a4c6b17  gcc/testsuite/gcc.dg/c99-const-expr-9.c
  1c06f630487d957681ee3e073af214b4  gcc/testsuite/gcc.dg/c99-digraph-1.c
--- 28428,28436 ----
  2b0ea14af55d8b5c0efa00351b0200a5  gcc/testsuite/gcc.dg/c99-const-expr-2.c
  1a41201d98b7cec1fa4768ff010f2243  gcc/testsuite/gcc.dg/c99-const-expr-3.c
  8a0c3caa2946e119d2ac9291c14b168f  gcc/testsuite/gcc.dg/c99-const-expr-4.c
! caf8ae08ea1dc1bb20cbec74983eb0e5  gcc/testsuite/gcc.dg/c99-const-expr-5.c
  ef9e695cc12dee6edcb25b8e6ec08cca  gcc/testsuite/gcc.dg/c99-const-expr-6.c
! 4ab599695b7ea6e4d505d80f73c22575  gcc/testsuite/gcc.dg/c99-const-expr-7.c
  7d50fe40b5b76d907ec9f4873364a116  gcc/testsuite/gcc.dg/c99-const-expr-8.c
  655311c1279a2c3cbb2a17f46a4c6b17  gcc/testsuite/gcc.dg/c99-const-expr-9.c
  1c06f630487d957681ee3e073af214b4  gcc/testsuite/gcc.dg/c99-digraph-1.c
*************** f1c21826aa6df9edd8889f04a1d27dd3  gcc/te
*** 27170,27176 ****
  96d5241edd16a05cf3d1f4a866ce458c  gcc/testsuite/gcc.dg/c99-flex-array-typedef-8.c
  5d7a6078f2400d8b79750179be1115cb  gcc/testsuite/gcc.dg/c99-float-1.c
  b9cefc3b995f8bed2031fe01ccec8a9d  gcc/testsuite/gcc.dg/c99-fordecl-1.c
! 40948d2547b0d7616de8e5419f1012c3  gcc/testsuite/gcc.dg/c99-fordecl-2.c
  6d89f5c59a9f4a6e3a8012d4c0391244  gcc/testsuite/gcc.dg/c99-fordecl-3.c
  e143f6b5b7a174ccaec570aa87bb32b9  gcc/testsuite/gcc.dg/c99-func-1.c
  338864dd7cc81a81f92c6f1d9b55d5ef  gcc/testsuite/gcc.dg/c99-func-2.c
--- 28450,28456 ----
  96d5241edd16a05cf3d1f4a866ce458c  gcc/testsuite/gcc.dg/c99-flex-array-typedef-8.c
  5d7a6078f2400d8b79750179be1115cb  gcc/testsuite/gcc.dg/c99-float-1.c
  b9cefc3b995f8bed2031fe01ccec8a9d  gcc/testsuite/gcc.dg/c99-fordecl-1.c
! 852f8d91deb94ba5e58655eb283885f3  gcc/testsuite/gcc.dg/c99-fordecl-2.c
  6d89f5c59a9f4a6e3a8012d4c0391244  gcc/testsuite/gcc.dg/c99-fordecl-3.c
  e143f6b5b7a174ccaec570aa87bb32b9  gcc/testsuite/gcc.dg/c99-func-1.c
  338864dd7cc81a81f92c6f1d9b55d5ef  gcc/testsuite/gcc.dg/c99-func-2.c
*************** f2f814b0ce9a2e768138211fe56b7ce6  gcc/te
*** 27216,27227 ****
  b96b4717d6559f968404758dabd5e68c  gcc/testsuite/gcc.dg/c99-scope-2.c
  1a7d5f8dd4c0d647092ecc1c65edb80b  gcc/testsuite/gcc.dg/c99-static-1.c
  8dd2a8a79211a30a19b959ae809c877f  gcc/testsuite/gcc.dg/c99-static-assert-1.c
! 13dbdf884dcb8ced3ae3878c347efdaa  gcc/testsuite/gcc.dg/c99-stdint-1.c
! df8e9ebd33a957ced9b6233622b6c13f  gcc/testsuite/gcc.dg/c99-stdint-2.c
  caa1b42d5bce0fabbb29cd1b4b898211  gcc/testsuite/gcc.dg/c99-stdint-3.c
  5eac662b1d03dedea5ca344b714165cc  gcc/testsuite/gcc.dg/c99-stdint-4.c
! bbbc3b7fd426bb222349aefb17e0e430  gcc/testsuite/gcc.dg/c99-stdint-5.c
! b3135d4cc595d4a822bb3c22a4375f91  gcc/testsuite/gcc.dg/c99-stdint-6.c
  f073d562feb73a8a94493ea20207bed1  gcc/testsuite/gcc.dg/c99-stdint-7.c
  c860222550f269562be7e07154270c46  gcc/testsuite/gcc.dg/c99-stdint-8.c
  7edbbf023f50b286791374498a6a3b29  gcc/testsuite/gcc.dg/c99-tag-1.c
--- 28496,28507 ----
  b96b4717d6559f968404758dabd5e68c  gcc/testsuite/gcc.dg/c99-scope-2.c
  1a7d5f8dd4c0d647092ecc1c65edb80b  gcc/testsuite/gcc.dg/c99-static-1.c
  8dd2a8a79211a30a19b959ae809c877f  gcc/testsuite/gcc.dg/c99-static-assert-1.c
! f5a432182bd7600b571c4bcf59fc9924  gcc/testsuite/gcc.dg/c99-stdint-1.c
! eda9c7c57747cb937884390ed17a7b25  gcc/testsuite/gcc.dg/c99-stdint-2.c
  caa1b42d5bce0fabbb29cd1b4b898211  gcc/testsuite/gcc.dg/c99-stdint-3.c
  5eac662b1d03dedea5ca344b714165cc  gcc/testsuite/gcc.dg/c99-stdint-4.c
! f76354f097fcddc36f12f4ee4515d7e2  gcc/testsuite/gcc.dg/c99-stdint-5.c
! c5bc19aee5d92382f509513c362a0397  gcc/testsuite/gcc.dg/c99-stdint-6.c
  f073d562feb73a8a94493ea20207bed1  gcc/testsuite/gcc.dg/c99-stdint-7.c
  c860222550f269562be7e07154270c46  gcc/testsuite/gcc.dg/c99-stdint-8.c
  7edbbf023f50b286791374498a6a3b29  gcc/testsuite/gcc.dg/c99-tag-1.c
*************** f58931af8311670f4e7ca6c218de61e8  gcc/te
*** 27253,27266 ****
  b231ab73f0b7085a5a404da1ef71c189  gcc/testsuite/gcc.dg/cast-3.c
  0820817e68c6e18b2fc1e4b46cce70f9  gcc/testsuite/gcc.dg/cast-4.c
  83e9582f6195874aa67985e3774e3b48  gcc/testsuite/gcc.dg/cast-function-1.c
! ab62c02479e5d93e2c7e4031a1cb1a1c  gcc/testsuite/gcc.dg/cast-lvalue-1.c
! 689c2300a06c72e08520fab80bfd94e7  gcc/testsuite/gcc.dg/cast-lvalue-2.c
  1034415e9e0336fe063d109c74a55d2c  gcc/testsuite/gcc.dg/cast-pretty-print-1.c
  7cdaaaf3eeef5db1f78cee824ad191e6  gcc/testsuite/gcc.dg/cast-qual-1.c
  6f4fc41bfa9bb179ae8516e292052521  gcc/testsuite/gcc.dg/cast-qual-2.c
  b19d1feeef4110bea875a543dbbe5ef2  gcc/testsuite/gcc.dg/cast-qual-3.c
  dd7a94c72563fac500fb304811ba1473  gcc/testsuite/gcc.dg/cdce1.c
! 64f7d17a796f7a63f470733cae3bad28  gcc/testsuite/gcc.dg/cdce2.c
  c8850be7a0e22bf2e52b8e88bb01c409  gcc/testsuite/gcc.dg/char-compare.c
  9c1af6a5f1547d7888309e68fa1e645e  gcc/testsuite/gcc.dg/charset/asm1.c
  de11a3779b8f68e37026c0989fe00062  gcc/testsuite/gcc.dg/charset/asm2.c
--- 28533,28546 ----
  b231ab73f0b7085a5a404da1ef71c189  gcc/testsuite/gcc.dg/cast-3.c
  0820817e68c6e18b2fc1e4b46cce70f9  gcc/testsuite/gcc.dg/cast-4.c
  83e9582f6195874aa67985e3774e3b48  gcc/testsuite/gcc.dg/cast-function-1.c
! 244fc61256640916f7aa9f3db53968f7  gcc/testsuite/gcc.dg/cast-lvalue-1.c
! 64a3303f073dc01e8a0b85ebc661dc6e  gcc/testsuite/gcc.dg/cast-lvalue-2.c
  1034415e9e0336fe063d109c74a55d2c  gcc/testsuite/gcc.dg/cast-pretty-print-1.c
  7cdaaaf3eeef5db1f78cee824ad191e6  gcc/testsuite/gcc.dg/cast-qual-1.c
  6f4fc41bfa9bb179ae8516e292052521  gcc/testsuite/gcc.dg/cast-qual-2.c
  b19d1feeef4110bea875a543dbbe5ef2  gcc/testsuite/gcc.dg/cast-qual-3.c
  dd7a94c72563fac500fb304811ba1473  gcc/testsuite/gcc.dg/cdce1.c
! 18cdf0a7752e3a892c214e70eb31c52d  gcc/testsuite/gcc.dg/cdce2.c
  c8850be7a0e22bf2e52b8e88bb01c409  gcc/testsuite/gcc.dg/char-compare.c
  9c1af6a5f1547d7888309e68fa1e645e  gcc/testsuite/gcc.dg/charset/asm1.c
  de11a3779b8f68e37026c0989fe00062  gcc/testsuite/gcc.dg/charset/asm2.c
*************** bd34927c7e8ef0637a91744aa30c8e22  gcc/te
*** 27272,27303 ****
  7bcfb1562ffc5ec66175fdcc52054745  gcc/testsuite/gcc.dg/charset/attribute2.c
  d256d028f437be7e103b223e7c20fe96  gcc/testsuite/gcc.dg/charset/builtin1.c
  a00066d47a6f8dc20ebf4861a2541212  gcc/testsuite/gcc.dg/charset/builtin2.c
! 19ddf1282658e7cfedef318fd285e89b  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
- 057b6db278c13c6512940833f678d6da  gcc/testsuite/gcc.dg/cilk-plus/cilk-plus.exp
- 7199e48fad39f0cd3e2d802e502080ae  gcc/testsuite/gcc.dg/cilk-plus/for1.c
- 6672f1a82de773e7c569a9e14a5d76c5  gcc/testsuite/gcc.dg/cilk-plus/for2.c
- 80752b42f03209fefc798d62a460b1b4  gcc/testsuite/gcc.dg/cilk-plus/jump-openmp.c
- 4fb7367b3d9d12200ddeffc0214c0e11  gcc/testsuite/gcc.dg/cilk-plus/jump.c
- d70cef9299b1bbb366eae4a012a4dbe5  gcc/testsuite/gcc.dg/cilk-plus/pr69798-1.c
- abb51ef8d414ee5b6dcf590327ecf874  gcc/testsuite/gcc.dg/cilk-plus/pr69798-2.c
- ead75f37d81c0d34dc6229e821bb270f  gcc/testsuite/gcc.dg/cilk-plus/pr78306.c
- 7d954926f8257ac07379d04d4fbf7beb  gcc/testsuite/gcc.dg/cilk-plus/pr79116.c
  ba82fd5846afa304514b1df1ecbdbf04  gcc/testsuite/gcc.dg/cleanup-1.c
  4044eaa648a1186001971720360615b4  gcc/testsuite/gcc.dg/cleanup-10.c
  7b355a1d6aa1a014dcbe56b0772eb575  gcc/testsuite/gcc.dg/cleanup-11.c
! d19b38844a923f6364406f234964586e  gcc/testsuite/gcc.dg/cleanup-12.c
! bf5cc44ea9e0b2d0faf35cffb761d5da  gcc/testsuite/gcc.dg/cleanup-13.c
  78bae3132e2068a254f88515c6bf0640  gcc/testsuite/gcc.dg/cleanup-2.c
  c2a1d7446900f7baf929104c039559f3  gcc/testsuite/gcc.dg/cleanup-3.c
  fc4b23c0fc21775250b7d884eb0fe56e  gcc/testsuite/gcc.dg/cleanup-4.c
! 3343ba530e080da58fef324f56a61a92  gcc/testsuite/gcc.dg/cleanup-5.c
  d9e45b781a97ee5ac71b788011eae52c  gcc/testsuite/gcc.dg/cleanup-6.c
  63f9f4f172f1c35d6e9325335509bbae  gcc/testsuite/gcc.dg/cleanup-7.c
  98c0b2dd5e7f0c2a5b1977bc7d116dc9  gcc/testsuite/gcc.dg/cleanup-8.c
  eab441b992352dbf346de82ee5ac75d4  gcc/testsuite/gcc.dg/cleanup-9.c
  49d4c3b6c4537cb277dd677c007e06a7  gcc/testsuite/gcc.dg/combine-clobber.c
  692ff616829ae420250cb45b76479307  gcc/testsuite/gcc.dg/combine-subregs.c
  05278de3e47a4662cfc566f06d671492  gcc/testsuite/gcc.dg/combine_ashiftrt_1.c
--- 28552,28575 ----
  7bcfb1562ffc5ec66175fdcc52054745  gcc/testsuite/gcc.dg/charset/attribute2.c
  d256d028f437be7e103b223e7c20fe96  gcc/testsuite/gcc.dg/charset/builtin1.c
  a00066d47a6f8dc20ebf4861a2541212  gcc/testsuite/gcc.dg/charset/builtin2.c
! 0a046485c3457ee9775e89af91c1c0d6  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
  ba82fd5846afa304514b1df1ecbdbf04  gcc/testsuite/gcc.dg/cleanup-1.c
  4044eaa648a1186001971720360615b4  gcc/testsuite/gcc.dg/cleanup-10.c
  7b355a1d6aa1a014dcbe56b0772eb575  gcc/testsuite/gcc.dg/cleanup-11.c
! 90fe7bcd77d063375fb5499027c93eee  gcc/testsuite/gcc.dg/cleanup-12.c
! cfb459fc846535e66c84503e2b62ae4a  gcc/testsuite/gcc.dg/cleanup-13.c
  78bae3132e2068a254f88515c6bf0640  gcc/testsuite/gcc.dg/cleanup-2.c
  c2a1d7446900f7baf929104c039559f3  gcc/testsuite/gcc.dg/cleanup-3.c
  fc4b23c0fc21775250b7d884eb0fe56e  gcc/testsuite/gcc.dg/cleanup-4.c
! a4cc0774dba5808a121d7dfc27022da8  gcc/testsuite/gcc.dg/cleanup-5.c
  d9e45b781a97ee5ac71b788011eae52c  gcc/testsuite/gcc.dg/cleanup-6.c
  63f9f4f172f1c35d6e9325335509bbae  gcc/testsuite/gcc.dg/cleanup-7.c
  98c0b2dd5e7f0c2a5b1977bc7d116dc9  gcc/testsuite/gcc.dg/cleanup-8.c
  eab441b992352dbf346de82ee5ac75d4  gcc/testsuite/gcc.dg/cleanup-9.c
+ 5ea0b2e2762698a1e297f260e66cba1c  gcc/testsuite/gcc.dg/cold-1.c
  49d4c3b6c4537cb277dd677c007e06a7  gcc/testsuite/gcc.dg/combine-clobber.c
  692ff616829ae420250cb45b76479307  gcc/testsuite/gcc.dg/combine-subregs.c
  05278de3e47a4662cfc566f06d671492  gcc/testsuite/gcc.dg/combine_ashiftrt_1.c
*************** b69efdebbddd406113314f5e2222b299  gcc/te
*** 27307,27324 ****
  a54f6f3014d2438520af47284381e304  gcc/testsuite/gcc.dg/comp-goto-3.c
  1f4f70817a422107e4e1998a93c17721  gcc/testsuite/gcc.dg/comp-goto-4.c
  78fe3f6717c09fb4c953681eb32836bf  gcc/testsuite/gcc.dg/comp-return-1.c
! 6f243a75c011aca0722f959f9ec14cde  gcc/testsuite/gcc.dg/compare1.c
  ef38565f80d00d4a0dc79476956bb0b8  gcc/testsuite/gcc.dg/compare10.c
! 3e315196fd421ea8ce95987c57ee475f  gcc/testsuite/gcc.dg/compare2.c
! d69421ce8f4ddbba36c1551bcdec9246  gcc/testsuite/gcc.dg/compare3.c
! f103ed7833709849421653c770bfc71e  gcc/testsuite/gcc.dg/compare4.c
! fb54850354fdbb7e291d2545619f020b  gcc/testsuite/gcc.dg/compare5.c
  73363d62b1e622eb48fc23e4b15a27bc  gcc/testsuite/gcc.dg/compare6.c
! 284fb8580a68ffb43cd6989f7dd773ec  gcc/testsuite/gcc.dg/compare7.c
! b67b3401cc9029ef7560e597d5ad8905  gcc/testsuite/gcc.dg/compare8.c
! 34124db83a070156111bcc2b1491c9f0  gcc/testsuite/gcc.dg/compare9.c
  320a670a68ed763f73f02634dc198ac9  gcc/testsuite/gcc.dg/compat/compat-common.h
! e3cf52982cf79ad22114031f66e16ca4  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
--- 28579,28596 ----
  a54f6f3014d2438520af47284381e304  gcc/testsuite/gcc.dg/comp-goto-3.c
  1f4f70817a422107e4e1998a93c17721  gcc/testsuite/gcc.dg/comp-goto-4.c
  78fe3f6717c09fb4c953681eb32836bf  gcc/testsuite/gcc.dg/comp-return-1.c
! a12939cd458d24633aac89881d89e6ad  gcc/testsuite/gcc.dg/compare1.c
  ef38565f80d00d4a0dc79476956bb0b8  gcc/testsuite/gcc.dg/compare10.c
! c7cb5e1831bea1746c3a206e4c26e3ec  gcc/testsuite/gcc.dg/compare2.c
! 4b6bcde5aa43c19920c52eb27e7f9d17  gcc/testsuite/gcc.dg/compare3.c
! 42d179075e16f0120e64334aecc29c63  gcc/testsuite/gcc.dg/compare4.c
! 34ae10f16aeac5be2ec02b06d31a4ad0  gcc/testsuite/gcc.dg/compare5.c
  73363d62b1e622eb48fc23e4b15a27bc  gcc/testsuite/gcc.dg/compare6.c
! 12dcdc419772f5df05cd239d1ccf178a  gcc/testsuite/gcc.dg/compare7.c
! ed52253f6b0d3e0e42d8c7d911691e47  gcc/testsuite/gcc.dg/compare8.c
! e505e91e0c3898015606540b084a3cf3  gcc/testsuite/gcc.dg/compare9.c
  320a670a68ed763f73f02634dc198ac9  gcc/testsuite/gcc.dg/compat/compat-common.h
! abbe1908ece79ca1af84569c3256b430  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
*************** afd394c71967624882d06b437c9681ca  gcc/te
*** 27339,27344 ****
--- 28611,28623 ----
  d74b89e56176fb529e8bb7e7a09ce41d  gcc/testsuite/gcc.dg/compat/pr38736_main.c
  8f20c43d31513b2af00eae22d51e49ba  gcc/testsuite/gcc.dg/compat/pr38736_x.c
  c7861cb9c33a40ea18f9ec149a743d3e  gcc/testsuite/gcc.dg/compat/pr38736_y.c
+ 4b4f71db780c1bc3362df9cd3b1def0d  gcc/testsuite/gcc.dg/compat/pr83487-1.h
+ e5d9cffaa45e21c36c23000e37644a6c  gcc/testsuite/gcc.dg/compat/pr83487-1_main.c
+ 89ace16993d932e3830b8ff76956e18f  gcc/testsuite/gcc.dg/compat/pr83487-1_x.c
+ 492c391874bbf91f26d276112d928c94  gcc/testsuite/gcc.dg/compat/pr83487-1_y.c
+ e6ec5fd8a835190c85e1459361275004  gcc/testsuite/gcc.dg/compat/pr83487-2_main.c
+ 0e4c3e2c6e22abb9a5a5cdfc08aa564a  gcc/testsuite/gcc.dg/compat/pr83487-2_x.c
+ 8824df8f06abb82d065c54390ae482ee  gcc/testsuite/gcc.dg/compat/pr83487-2_y.c
  fc5dafe10d6650cf4d9a8fd5fb187f59  gcc/testsuite/gcc.dg/compat/scalar-by-value-1_main.c
  34b45138296b5aa7dd411fa08de1df98  gcc/testsuite/gcc.dg/compat/scalar-by-value-1_x.c
  ebfa2ff6c25bd35bc7465e300b17eb47  gcc/testsuite/gcc.dg/compat/scalar-by-value-1_y.c
*************** ece7ecad648b4e3ca87259758dda1dda  gcc/te
*** 27412,27430 ****
  738781b0c78b52d2d2983f0bf580205a  gcc/testsuite/gcc.dg/compat/struct-by-value-15_main.c
  02389adc944498c243401ea13cbbaa47  gcc/testsuite/gcc.dg/compat/struct-by-value-15_x.c
  dd06748ae43fc36995c2a639738e41d4  gcc/testsuite/gcc.dg/compat/struct-by-value-15_y.c
! f9a932d9cea8564ff048bf9c7f03be91  gcc/testsuite/gcc.dg/compat/struct-by-value-16_main.c
  da67db0369951bf03918fd7d4503dd50  gcc/testsuite/gcc.dg/compat/struct-by-value-16_x.c
  cfacea04f73354d3232c05eb0c18a222  gcc/testsuite/gcc.dg/compat/struct-by-value-16_y.c
  438a41577f53a95dee810bb84a5807ce  gcc/testsuite/gcc.dg/compat/struct-by-value-16a_main.c
  4dd156cbd8508a306abc9c59f379a61b  gcc/testsuite/gcc.dg/compat/struct-by-value-16a_x.c
  3f97b1143f94294953ee7d207265174c  gcc/testsuite/gcc.dg/compat/struct-by-value-16a_y.c
! b325a7bc2bf3ef878f74ef4a9671bd5b  gcc/testsuite/gcc.dg/compat/struct-by-value-17_main.c
  29535d14e8eb504f487a372066c5b9d6  gcc/testsuite/gcc.dg/compat/struct-by-value-17_x.c
  80cfd0d379437de4282de02e6a998ced  gcc/testsuite/gcc.dg/compat/struct-by-value-17_y.c
  f201fc2d09c2281295024b3fced71bbc  gcc/testsuite/gcc.dg/compat/struct-by-value-17a_main.c
  20bee5d00ad29b5946ebe1027461e592  gcc/testsuite/gcc.dg/compat/struct-by-value-17a_x.c
  f64ebadd88dbbb8b1f1f8db195cc487c  gcc/testsuite/gcc.dg/compat/struct-by-value-17a_y.c
! 0802ae9f88e254acda9181e0ec7f8420  gcc/testsuite/gcc.dg/compat/struct-by-value-18_main.c
  32697b25328521d7720beebfb390cf52  gcc/testsuite/gcc.dg/compat/struct-by-value-18_x.c
  3f9d2970cdbd98e5a4ebea35d50c626c  gcc/testsuite/gcc.dg/compat/struct-by-value-18_y.c
  d95c9e774992ee0acf39f8287fb7d00a  gcc/testsuite/gcc.dg/compat/struct-by-value-18a_main.c
--- 28691,28709 ----
  738781b0c78b52d2d2983f0bf580205a  gcc/testsuite/gcc.dg/compat/struct-by-value-15_main.c
  02389adc944498c243401ea13cbbaa47  gcc/testsuite/gcc.dg/compat/struct-by-value-15_x.c
  dd06748ae43fc36995c2a639738e41d4  gcc/testsuite/gcc.dg/compat/struct-by-value-15_y.c
! aaa24c447af4c6535b41f37ed4b511af  gcc/testsuite/gcc.dg/compat/struct-by-value-16_main.c
  da67db0369951bf03918fd7d4503dd50  gcc/testsuite/gcc.dg/compat/struct-by-value-16_x.c
  cfacea04f73354d3232c05eb0c18a222  gcc/testsuite/gcc.dg/compat/struct-by-value-16_y.c
  438a41577f53a95dee810bb84a5807ce  gcc/testsuite/gcc.dg/compat/struct-by-value-16a_main.c
  4dd156cbd8508a306abc9c59f379a61b  gcc/testsuite/gcc.dg/compat/struct-by-value-16a_x.c
  3f97b1143f94294953ee7d207265174c  gcc/testsuite/gcc.dg/compat/struct-by-value-16a_y.c
! d9e890cabe95bef17ffb9d12bde86ec9  gcc/testsuite/gcc.dg/compat/struct-by-value-17_main.c
  29535d14e8eb504f487a372066c5b9d6  gcc/testsuite/gcc.dg/compat/struct-by-value-17_x.c
  80cfd0d379437de4282de02e6a998ced  gcc/testsuite/gcc.dg/compat/struct-by-value-17_y.c
  f201fc2d09c2281295024b3fced71bbc  gcc/testsuite/gcc.dg/compat/struct-by-value-17a_main.c
  20bee5d00ad29b5946ebe1027461e592  gcc/testsuite/gcc.dg/compat/struct-by-value-17a_x.c
  f64ebadd88dbbb8b1f1f8db195cc487c  gcc/testsuite/gcc.dg/compat/struct-by-value-17a_y.c
! 3a1603e43dd7590d1e074c34d4333354  gcc/testsuite/gcc.dg/compat/struct-by-value-18_main.c
  32697b25328521d7720beebfb390cf52  gcc/testsuite/gcc.dg/compat/struct-by-value-18_x.c
  3f9d2970cdbd98e5a4ebea35d50c626c  gcc/testsuite/gcc.dg/compat/struct-by-value-18_y.c
  d95c9e774992ee0acf39f8287fb7d00a  gcc/testsuite/gcc.dg/compat/struct-by-value-18a_main.c
*************** b13ce33543763e05e497e6e9b0b06afc  gcc/te
*** 27486,27494 ****
  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
! b6508437a0929a25262bace1df04ef2c  gcc/testsuite/gcc.dg/compat/struct-layout-1.exp
  63acee7a9bb7d9a457beb370e4beede2  gcc/testsuite/gcc.dg/compat/struct-layout-1.h
! 4c4db88e6878ce3a23f18d54013e8cb0  gcc/testsuite/gcc.dg/compat/struct-layout-1_generate.c
  997082aeb20119519c8c3e77ee7f6cd1  gcc/testsuite/gcc.dg/compat/struct-layout-1_main.c
  b3da097900e3dfe300ea64885a287dc4  gcc/testsuite/gcc.dg/compat/struct-layout-1_test.h
  7a2c01872720f537c35327ff79b01fa3  gcc/testsuite/gcc.dg/compat/struct-layout-1_x.c
--- 28765,28773 ----
  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
! 6405641457ef1cc9ba4941640b9159d6  gcc/testsuite/gcc.dg/compat/struct-layout-1.exp
  63acee7a9bb7d9a457beb370e4beede2  gcc/testsuite/gcc.dg/compat/struct-layout-1.h
! b6387e3bbec3d790c42ef44208119615  gcc/testsuite/gcc.dg/compat/struct-layout-1_generate.c
  997082aeb20119519c8c3e77ee7f6cd1  gcc/testsuite/gcc.dg/compat/struct-layout-1_main.c
  b3da097900e3dfe300ea64885a287dc4  gcc/testsuite/gcc.dg/compat/struct-layout-1_test.h
  7a2c01872720f537c35327ff79b01fa3  gcc/testsuite/gcc.dg/compat/struct-layout-1_x.c
*************** da2226add6799fd192e2b367404d1b0b  gcc/te
*** 27557,27568 ****
  47685f7f7986540a92dac40dcd9edc3f  gcc/testsuite/gcc.dg/complex-4.c
  40fff02642e5e2ead0c4b58bc10042b7  gcc/testsuite/gcc.dg/complex-5.c
  e4076ab8b4eaeecdcbb527dfc36e6b0a  gcc/testsuite/gcc.dg/compound-literal-1.c
! 9a8460b2b7be20ec936144c1267fdf4b  gcc/testsuite/gcc.dg/compound-lvalue-1.c
  1446a4d262092084b79d8f6b2b822154  gcc/testsuite/gcc.dg/concat.c
  fe6e67a4e564ca5642810bdf85534463  gcc/testsuite/gcc.dg/concat2.c
  a135e7633aae73af2316d15cec88e40c  gcc/testsuite/gcc.dg/cond-constqual-1.c
! 0115b0253f566ae848136edaa8f19b58  gcc/testsuite/gcc.dg/cond-lvalue-1.c
  1e77dbdb1a2f17c79ae5421293c320fd  gcc/testsuite/gcc.dg/const-1.c
  6ccf395fc674b370645bdd0d50fb25b8  gcc/testsuite/gcc.dg/const-elim-1.c
  8aeed4136d64b28976407e1f80bce896  gcc/testsuite/gcc.dg/const-elim-2.c
  40322523d50e8ca68ce1454542758211  gcc/testsuite/gcc.dg/const-float128-ped.c
--- 28836,28848 ----
  47685f7f7986540a92dac40dcd9edc3f  gcc/testsuite/gcc.dg/complex-4.c
  40fff02642e5e2ead0c4b58bc10042b7  gcc/testsuite/gcc.dg/complex-5.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
  fe6e67a4e564ca5642810bdf85534463  gcc/testsuite/gcc.dg/concat2.c
  a135e7633aae73af2316d15cec88e40c  gcc/testsuite/gcc.dg/cond-constqual-1.c
! 1c97a6a4590c6eb2e7d9d7b15729539a  gcc/testsuite/gcc.dg/cond-lvalue-1.c
  1e77dbdb1a2f17c79ae5421293c320fd  gcc/testsuite/gcc.dg/const-1.c
+ 596a3a673cfe30ee42413e4a7a07e289  gcc/testsuite/gcc.dg/const-2.c
  6ccf395fc674b370645bdd0d50fb25b8  gcc/testsuite/gcc.dg/const-elim-1.c
  8aeed4136d64b28976407e1f80bce896  gcc/testsuite/gcc.dg/const-elim-2.c
  40322523d50e8ca68ce1454542758211  gcc/testsuite/gcc.dg/const-float128-ped.c
*************** a135e7633aae73af2316d15cec88e40c  gcc/te
*** 27570,27583 ****
  e3f3945c878b9cf4fa5b3f0074bd6302  gcc/testsuite/gcc.dg/const-float80-ped.c
  e781844c1655d36c9b6e04d59aad8996  gcc/testsuite/gcc.dg/const-float80.c
  6c07d525221284c760106956672ef60b  gcc/testsuite/gcc.dg/const-uniq-1.c
! f99595298116eee32b966fbe3156ca28  gcc/testsuite/gcc.dg/constructor-1.c
  79de76f1d9fe6810bc65fa1f39adc1dc  gcc/testsuite/gcc.dg/conv-1.c
! fc41ba5613e42ec72b4d3723bff4af82  gcc/testsuite/gcc.dg/conv-2.c
  89b18c0becd2933f025acc401a0aeaf8  gcc/testsuite/gcc.dg/conv-3.c
  6bc56500657f8c3b71b20af4c69e967f  gcc/testsuite/gcc.dg/cpp/#cmdlne-M-2.h
  efe7e7710c90559c2ce6e719d57e85cf  gcc/testsuite/gcc.dg/cpp/19921210-1.c
  fd87d37c0d8c780e43c22463e7f47466  gcc/testsuite/gcc.dg/cpp/19930510-1.c
! 2a5f7126d998e9781362de0282eb7972  gcc/testsuite/gcc.dg/cpp/19940712-1.c
  774aca589d2053b28218f676881669bf  gcc/testsuite/gcc.dg/cpp/19940712-1.h
  aa9731c7fab940ed529ffa5748e897e5  gcc/testsuite/gcc.dg/cpp/19940712-1a.h
  d2cb31e53c80a723fcf645091264b661  gcc/testsuite/gcc.dg/cpp/19940712-1b.h
--- 28850,28863 ----
  e3f3945c878b9cf4fa5b3f0074bd6302  gcc/testsuite/gcc.dg/const-float80-ped.c
  e781844c1655d36c9b6e04d59aad8996  gcc/testsuite/gcc.dg/const-float80.c
  6c07d525221284c760106956672ef60b  gcc/testsuite/gcc.dg/const-uniq-1.c
! 45c05b0df046fbbbc9ea0cea8b6eca6a  gcc/testsuite/gcc.dg/constructor-1.c
  79de76f1d9fe6810bc65fa1f39adc1dc  gcc/testsuite/gcc.dg/conv-1.c
! 3a476a2d0c391587638c234c7b082c5a  gcc/testsuite/gcc.dg/conv-2.c
  89b18c0becd2933f025acc401a0aeaf8  gcc/testsuite/gcc.dg/conv-3.c
  6bc56500657f8c3b71b20af4c69e967f  gcc/testsuite/gcc.dg/cpp/#cmdlne-M-2.h
  efe7e7710c90559c2ce6e719d57e85cf  gcc/testsuite/gcc.dg/cpp/19921210-1.c
  fd87d37c0d8c780e43c22463e7f47466  gcc/testsuite/gcc.dg/cpp/19930510-1.c
! 6c8e4c49e8fc01e00412592907259f81  gcc/testsuite/gcc.dg/cpp/19940712-1.c
  774aca589d2053b28218f676881669bf  gcc/testsuite/gcc.dg/cpp/19940712-1.h
  aa9731c7fab940ed529ffa5748e897e5  gcc/testsuite/gcc.dg/cpp/19940712-1a.h
  d2cb31e53c80a723fcf645091264b661  gcc/testsuite/gcc.dg/cpp/19940712-1b.h
*************** e75f13a1d98942713890a087ba6d6788  gcc/te
*** 27588,27594 ****
  df75c8d101d64a6cf41b3a04beab75e6  gcc/testsuite/gcc.dg/cpp/19990228-1.c
  5fd1627caefdf87372a9b11145707cc1  gcc/testsuite/gcc.dg/cpp/19990407-1.c
  991e6dec59f32fb2fa10bb5f317ddc1e  gcc/testsuite/gcc.dg/cpp/19990409-1.c
! 4ffce0bfb4e664125f5a58c62d250fc6  gcc/testsuite/gcc.dg/cpp/19990413-1.c
  4046556fd9ea1755b619a2f5c6fd63b5  gcc/testsuite/gcc.dg/cpp/20000127-1.c
  68d7040fce1c7f29353c84cf3ec4fc39  gcc/testsuite/gcc.dg/cpp/20000129-1.c
  91380450992c2b046bc2b9d4e7f29b91  gcc/testsuite/gcc.dg/cpp/20000207-1.c
--- 28868,28874 ----
  df75c8d101d64a6cf41b3a04beab75e6  gcc/testsuite/gcc.dg/cpp/19990228-1.c
  5fd1627caefdf87372a9b11145707cc1  gcc/testsuite/gcc.dg/cpp/19990407-1.c
  991e6dec59f32fb2fa10bb5f317ddc1e  gcc/testsuite/gcc.dg/cpp/19990409-1.c
! b7ca1aaae38d1b7bff60a80b0ca988e2  gcc/testsuite/gcc.dg/cpp/19990413-1.c
  4046556fd9ea1755b619a2f5c6fd63b5  gcc/testsuite/gcc.dg/cpp/20000127-1.c
  68d7040fce1c7f29353c84cf3ec4fc39  gcc/testsuite/gcc.dg/cpp/20000129-1.c
  91380450992c2b046bc2b9d4e7f29b91  gcc/testsuite/gcc.dg/cpp/20000207-1.c
*************** df75c8d101d64a6cf41b3a04beab75e6  gcc/te
*** 27596,27605 ****
  469e8ec7324aa55fbe86e20eabe1f0ef  gcc/testsuite/gcc.dg/cpp/20000209-1.c
  b272f616643e76100385061eb0e6d641  gcc/testsuite/gcc.dg/cpp/20000209-2.c
  984a2cebaad63b481d2dc62a1733066a  gcc/testsuite/gcc.dg/cpp/20000301-1.c
! f31671eb0b9057da701b3ee439614028  gcc/testsuite/gcc.dg/cpp/20000419-1.c
  36f716d2faab4894b74774f3af952ae1  gcc/testsuite/gcc.dg/cpp/20000519-1.c
  0f6e607ecc39472d70d52b5875af6a57  gcc/testsuite/gcc.dg/cpp/20000529-1.c
! 613b3859d4ffc565fcc101b733f7a879  gcc/testsuite/gcc.dg/cpp/20000625-1.c
  68fc880e99b0e43e7e51f4bfa9ad4662  gcc/testsuite/gcc.dg/cpp/20000627-1.c
  53aa2a17a7fbaee4af37921b9b8506b5  gcc/testsuite/gcc.dg/cpp/20000628-1.c
  59e1ad9075f492b36d002ebfe8dfe8b7  gcc/testsuite/gcc.dg/cpp/20000628-1.h
--- 28876,28885 ----
  469e8ec7324aa55fbe86e20eabe1f0ef  gcc/testsuite/gcc.dg/cpp/20000209-1.c
  b272f616643e76100385061eb0e6d641  gcc/testsuite/gcc.dg/cpp/20000209-2.c
  984a2cebaad63b481d2dc62a1733066a  gcc/testsuite/gcc.dg/cpp/20000301-1.c
! beff650b150c36b9a08651ec58db8a3d  gcc/testsuite/gcc.dg/cpp/20000419-1.c
  36f716d2faab4894b74774f3af952ae1  gcc/testsuite/gcc.dg/cpp/20000519-1.c
  0f6e607ecc39472d70d52b5875af6a57  gcc/testsuite/gcc.dg/cpp/20000529-1.c
! 85dde2999acd982f563f5b3748661a0d  gcc/testsuite/gcc.dg/cpp/20000625-1.c
  68fc880e99b0e43e7e51f4bfa9ad4662  gcc/testsuite/gcc.dg/cpp/20000627-1.c
  53aa2a17a7fbaee4af37921b9b8506b5  gcc/testsuite/gcc.dg/cpp/20000628-1.c
  59e1ad9075f492b36d002ebfe8dfe8b7  gcc/testsuite/gcc.dg/cpp/20000628-1.h
*************** bb2749ce61406c502f805c626d9dc647  gcc/te
*** 27612,27619 ****
  428a0b9041a42a9b17dcbddb7ffc135b  gcc/testsuite/gcc.dg/cpp/Wsignprom.c
  e0949a6df091cf08947f37f2651c3fee  gcc/testsuite/gcc.dg/cpp/Wtrigraphs-2.c
  a172b9d48b7f785f2bdf32a66bf33533  gcc/testsuite/gcc.dg/cpp/Wtrigraphs.c
! 69752065d57bcf081fec6a8eee4c3e80  gcc/testsuite/gcc.dg/cpp/Wunknown-pragmas-1.c
! 9133b60797fd27c2069996efa899ffac  gcc/testsuite/gcc.dg/cpp/Wunused.c
  722ce436983657fc4f00220b26f8fa36  gcc/testsuite/gcc.dg/cpp/Wunused.h
  ff2f8ae252d248760a4dc489195f5aa3  gcc/testsuite/gcc.dg/cpp/Wvariadic-1.c
  08ceb2dccfa0db214b107668cf96bda5  gcc/testsuite/gcc.dg/cpp/Wvariadic-1p.c
--- 28892,28899 ----
  428a0b9041a42a9b17dcbddb7ffc135b  gcc/testsuite/gcc.dg/cpp/Wsignprom.c
  e0949a6df091cf08947f37f2651c3fee  gcc/testsuite/gcc.dg/cpp/Wtrigraphs-2.c
  a172b9d48b7f785f2bdf32a66bf33533  gcc/testsuite/gcc.dg/cpp/Wtrigraphs.c
! bbf9f55d936e5adc719ff33b213ff395  gcc/testsuite/gcc.dg/cpp/Wunknown-pragmas-1.c
! 84001526f769e16dddfbe562504e4754  gcc/testsuite/gcc.dg/cpp/Wunused.c
  722ce436983657fc4f00220b26f8fa36  gcc/testsuite/gcc.dg/cpp/Wunused.h
  ff2f8ae252d248760a4dc489195f5aa3  gcc/testsuite/gcc.dg/cpp/Wvariadic-1.c
  08ceb2dccfa0db214b107668cf96bda5  gcc/testsuite/gcc.dg/cpp/Wvariadic-1p.c
*************** d6fdc59bae27f9e3097840361d13c67a  gcc/te
*** 27629,27635 ****
  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
! 7ba311eaebdcc998bc4c03e43ad73cb6  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
--- 28909,28915 ----
  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
! a4674b786893f4b41ce24e4691b32eab  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
*************** f0208a08f76eb46027b9efd1868411de  gcc/te
*** 27637,27644 ****
  c7a189aca9e28ef213e587486efddd56  gcc/testsuite/gcc.dg/cpp/assert4.c
  4917744ef7ecae920674087fbf83423c  gcc/testsuite/gcc.dg/cpp/avoidpaste1.c
  127f0aa0b3c3af7297abd95719b83459  gcc/testsuite/gcc.dg/cpp/avoidpaste2.c
! 1d8a3a95741c925f4b6277037a477574  gcc/testsuite/gcc.dg/cpp/backslash.c
! f109b2be343ad3047023969df2d1e791  gcc/testsuite/gcc.dg/cpp/backslash2.c
  6b781ad0a16af97ed0607c5fc55fb592  gcc/testsuite/gcc.dg/cpp/builtin-macro-1.c
  bbda00c98c81c2379844c5d755ee7246  gcc/testsuite/gcc.dg/cpp/c89-pedantic.c
  454bc7f11a8d465fec35fbb6f78621f6  gcc/testsuite/gcc.dg/cpp/c89.c
--- 28917,28924 ----
  c7a189aca9e28ef213e587486efddd56  gcc/testsuite/gcc.dg/cpp/assert4.c
  4917744ef7ecae920674087fbf83423c  gcc/testsuite/gcc.dg/cpp/avoidpaste1.c
  127f0aa0b3c3af7297abd95719b83459  gcc/testsuite/gcc.dg/cpp/avoidpaste2.c
! 496fd661182992891454e1a97f9e8da3  gcc/testsuite/gcc.dg/cpp/backslash.c
! 518079f5bd3713c612d16067f74f29b2  gcc/testsuite/gcc.dg/cpp/backslash2.c
  6b781ad0a16af97ed0607c5fc55fb592  gcc/testsuite/gcc.dg/cpp/builtin-macro-1.c
  bbda00c98c81c2379844c5d755ee7246  gcc/testsuite/gcc.dg/cpp/c89-pedantic.c
  454bc7f11a8d465fec35fbb6f78621f6  gcc/testsuite/gcc.dg/cpp/c89.c
*************** cda0f2056759a55b2de15925fdb49edb  gcc/te
*** 27655,27661 ****
  aeac316eab59c566dcc054fa1448d931  gcc/testsuite/gcc.dg/cpp/c99.c
  d7fe9b5439dff2d4320ac5fa9fed372b  gcc/testsuite/gcc.dg/cpp/charconst-2.c
  b8f19314e3816f9e972f0bd68cec0211  gcc/testsuite/gcc.dg/cpp/charconst-3.c
! 61b07193a4be07d468921e439b0fa75f  gcc/testsuite/gcc.dg/cpp/charconst-4.c
  3e16b2a81c9b42094d34bb806128c488  gcc/testsuite/gcc.dg/cpp/charconst.c
  fb746197b268341775148b17b72a697b  gcc/testsuite/gcc.dg/cpp/cmdlne-C.c
  082290ee93725d85bcd5a0bd576395f5  gcc/testsuite/gcc.dg/cpp/cmdlne-C2.c
--- 28935,28941 ----
  aeac316eab59c566dcc054fa1448d931  gcc/testsuite/gcc.dg/cpp/c99.c
  d7fe9b5439dff2d4320ac5fa9fed372b  gcc/testsuite/gcc.dg/cpp/charconst-2.c
  b8f19314e3816f9e972f0bd68cec0211  gcc/testsuite/gcc.dg/cpp/charconst-3.c
! 8b48c6184cf0310b4efcc46c736b7ac2  gcc/testsuite/gcc.dg/cpp/charconst-4.c
  3e16b2a81c9b42094d34bb806128c488  gcc/testsuite/gcc.dg/cpp/charconst.c
  fb746197b268341775148b17b72a697b  gcc/testsuite/gcc.dg/cpp/cmdlne-C.c
  082290ee93725d85bcd5a0bd576395f5  gcc/testsuite/gcc.dg/cpp/cmdlne-C2.c
*************** dc9eac76c9e4283c4325c2a6c902a00b  gcc/te
*** 27701,27707 ****
  d698e775932010971513c46f0883bce0  gcc/testsuite/gcc.dg/cpp/counter-1.c
  62a7104f94454920e2aea21e5d85503a  gcc/testsuite/gcc.dg/cpp/counter-2.c
  8685d36e43046dc3ae7ce373aa03821c  gcc/testsuite/gcc.dg/cpp/counter-3.c
! f472d624a6afdd82808aeaf7818538f2  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
--- 28981,28987 ----
  d698e775932010971513c46f0883bce0  gcc/testsuite/gcc.dg/cpp/counter-1.c
  62a7104f94454920e2aea21e5d85503a  gcc/testsuite/gcc.dg/cpp/counter-2.c
  8685d36e43046dc3ae7ce373aa03821c  gcc/testsuite/gcc.dg/cpp/counter-3.c
! 0a1dccd8e9bcc0960344362bf39da1cc  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
*************** f3446debe2a67d2b151f29f3006987bb  gcc/te
*** 27776,27783 ****
  f50c762ece408218ef47903ccb1e7a04  gcc/testsuite/gcc.dg/cpp/inc/pr20356.h
  d71e5f2555710da19619d9adc4b88f6f  gcc/testsuite/gcc.dg/cpp/inc/pragma-once-1a.h
  ea76d1c8f9591251f749eaf0d4548910  gcc/testsuite/gcc.dg/cpp/include1.c
! cf0484639a4de6d338d9513483624ac0  gcc/testsuite/gcc.dg/cpp/include2.c
! f0cc67d003ac11166079bdc765b46d45  gcc/testsuite/gcc.dg/cpp/include2a.c
  b1294c835a9b544482538708e224cd87  gcc/testsuite/gcc.dg/cpp/include3.c
  fefb3e35a8a1d6bc164a6eb33d7fdbb6  gcc/testsuite/gcc.dg/cpp/include4.c
  99a74985c69613ac4a42ee34fb74051f  gcc/testsuite/gcc.dg/cpp/include5.c
--- 29056,29063 ----
  f50c762ece408218ef47903ccb1e7a04  gcc/testsuite/gcc.dg/cpp/inc/pr20356.h
  d71e5f2555710da19619d9adc4b88f6f  gcc/testsuite/gcc.dg/cpp/inc/pragma-once-1a.h
  ea76d1c8f9591251f749eaf0d4548910  gcc/testsuite/gcc.dg/cpp/include1.c
! c546f1768d535d878d67ff19fdcb3df9  gcc/testsuite/gcc.dg/cpp/include2.c
! 224e49c5ea3463e949ee23fcd414181b  gcc/testsuite/gcc.dg/cpp/include2a.c
  b1294c835a9b544482538708e224cd87  gcc/testsuite/gcc.dg/cpp/include3.c
  fefb3e35a8a1d6bc164a6eb33d7fdbb6  gcc/testsuite/gcc.dg/cpp/include4.c
  99a74985c69613ac4a42ee34fb74051f  gcc/testsuite/gcc.dg/cpp/include5.c
*************** e981c3e0d4722656566000abbdcbd0bc  gcc/te
*** 27821,27829 ****
  e424a17217f72268dfa4029de6eaafc3  gcc/testsuite/gcc.dg/cpp/macro7.c
  f1f598cd4e451612c08917a32f4da51f  gcc/testsuite/gcc.dg/cpp/macro8.c
  7ea810f16f8f30514dc03940736c9fc1  gcc/testsuite/gcc.dg/cpp/macro9.c
! 344a4012acaf786dcfe9941d7aab3f78  gcc/testsuite/gcc.dg/cpp/macspace1.c
! c4ac43cc0f315617c5fc253348a43b17  gcc/testsuite/gcc.dg/cpp/macspace2.c
! 5297c3147cba32d54dfb01f1b3448548  gcc/testsuite/gcc.dg/cpp/macsyntx.c
  d420a4b6b0eb3f96ed86f7f26072c174  gcc/testsuite/gcc.dg/cpp/mi1.c
  777cf2c3e95b6b5ee7caed8bc88cf268  gcc/testsuite/gcc.dg/cpp/mi1c.h
  3daaf3b4d1056870e4e520cf5cbcbc03  gcc/testsuite/gcc.dg/cpp/mi1cc.h
--- 29101,29110 ----
  e424a17217f72268dfa4029de6eaafc3  gcc/testsuite/gcc.dg/cpp/macro7.c
  f1f598cd4e451612c08917a32f4da51f  gcc/testsuite/gcc.dg/cpp/macro8.c
  7ea810f16f8f30514dc03940736c9fc1  gcc/testsuite/gcc.dg/cpp/macro9.c
! fa458b225cc9439d46db287f85b1a23b  gcc/testsuite/gcc.dg/cpp/macspace1.c
! 80a0cb0d49999bd107c4ef3f19dad255  gcc/testsuite/gcc.dg/cpp/macspace2.c
! 7ebc7acde9332e2c6e8d77bd7c3517fa  gcc/testsuite/gcc.dg/cpp/macsyntx.c
! b858fa797d82bee490bb216c17c19d87  gcc/testsuite/gcc.dg/cpp/macsyntx2.c
  d420a4b6b0eb3f96ed86f7f26072c174  gcc/testsuite/gcc.dg/cpp/mi1.c
  777cf2c3e95b6b5ee7caed8bc88cf268  gcc/testsuite/gcc.dg/cpp/mi1c.h
  3daaf3b4d1056870e4e520cf5cbcbc03  gcc/testsuite/gcc.dg/cpp/mi1cc.h
*************** b9db22d541e74abc3bf00d9f6e817838  gcc/te
*** 27858,27866 ****
  4e1392e2ab884160cd2a975bf8919166  gcc/testsuite/gcc.dg/cpp/missing-header-MMD.c
  11b520ccd48375c897f2a52df63c1b83  gcc/testsuite/gcc.dg/cpp/missing-sysheader-MD.c
  d7d87a4e1593e0be917d01567b403633  gcc/testsuite/gcc.dg/cpp/missing-sysheader-MMD.c
! f81e392d940f0d409632baa30af6dfcd  gcc/testsuite/gcc.dg/cpp/misspelled-directive-1.c
  e9e7b9fd51bf1a0bc663ce351365c3dc  gcc/testsuite/gcc.dg/cpp/misspelled-directive-2.c
! de3728f01d2202b6c7664ee761adc72c  gcc/testsuite/gcc.dg/cpp/multiline-2.c
  15dfb99d710849580a03c8dd833461fe  gcc/testsuite/gcc.dg/cpp/multiline.c
  58379c82ef9fbf2b21c3da3373a0d76c  gcc/testsuite/gcc.dg/cpp/normalize-1.c
  39cfd6782178acb25d41749c93ea731d  gcc/testsuite/gcc.dg/cpp/normalize-2.c
--- 29139,29147 ----
  4e1392e2ab884160cd2a975bf8919166  gcc/testsuite/gcc.dg/cpp/missing-header-MMD.c
  11b520ccd48375c897f2a52df63c1b83  gcc/testsuite/gcc.dg/cpp/missing-sysheader-MD.c
  d7d87a4e1593e0be917d01567b403633  gcc/testsuite/gcc.dg/cpp/missing-sysheader-MMD.c
! 9692aa617d7997ff022afb9b121aee6e  gcc/testsuite/gcc.dg/cpp/misspelled-directive-1.c
  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
  58379c82ef9fbf2b21c3da3373a0d76c  gcc/testsuite/gcc.dg/cpp/normalize-1.c
  39cfd6782178acb25d41749c93ea731d  gcc/testsuite/gcc.dg/cpp/normalize-2.c
*************** bb9ce99871246eec7e4f0065ef789603  gcc/te
*** 27896,27914 ****
  2f4a9e16255c95c3cd74364b6744f1da  gcc/testsuite/gcc.dg/cpp/pr23827_c90.c
  f792b622a11db9fe71cac2e116ddf8ea  gcc/testsuite/gcc.dg/cpp/pr23827_c90_neg.c
  eb01a5f4ef0a94b1c0107d58bccbf67e  gcc/testsuite/gcc.dg/cpp/pr23827_c99.c
! c8d7741997e54c18722037a9f73311a8  gcc/testsuite/gcc.dg/cpp/pr27777.c
  90e24b2b16308f52ec34ef13271223ab  gcc/testsuite/gcc.dg/cpp/pr28165.c
  df66dbf94c5401be9e9149240b16cd1d  gcc/testsuite/gcc.dg/cpp/pr28227.c
  227c23a6a148124f7bfe01f416d517f3  gcc/testsuite/gcc.dg/cpp/pr28709.c
  d940acfa0acb4382321920d7cee49eb8  gcc/testsuite/gcc.dg/cpp/pr29612-1.c
  70d940c599e29e61513bdcd67f320e8a  gcc/testsuite/gcc.dg/cpp/pr29612-2.c
! 5b7a88cd7a1593ba8e5c5c5b1c99c398  gcc/testsuite/gcc.dg/cpp/pr30786.c
  617a30cb11bd5368c924e9602b7e63dd  gcc/testsuite/gcc.dg/cpp/pr30805.c
  64358d7446ab31c28702d74cd4821e3f  gcc/testsuite/gcc.dg/cpp/pr32868.c
  909b4425f73083878d73d9030b31845c  gcc/testsuite/gcc.dg/cpp/pr32974.c
  95cf80947162150ab0529763958ab509  gcc/testsuite/gcc.dg/cpp/pr33415.c
  982ba3064f18ece1c491bd6e630da393  gcc/testsuite/gcc.dg/cpp/pr33466.c
! e50c79c5f114579ad0d39bd3d474d293  gcc/testsuite/gcc.dg/cpp/pr34602.c
  73f299ee15936bdac54067aead691e79  gcc/testsuite/gcc.dg/cpp/pr34692.c
  c91822df8000f6656b2e707c3c4b9776  gcc/testsuite/gcc.dg/cpp/pr34859.c
  bd82104282e72a261de145d68de5bf94  gcc/testsuite/gcc.dg/cpp/pr35313.c
--- 29177,29195 ----
  2f4a9e16255c95c3cd74364b6744f1da  gcc/testsuite/gcc.dg/cpp/pr23827_c90.c
  f792b622a11db9fe71cac2e116ddf8ea  gcc/testsuite/gcc.dg/cpp/pr23827_c90_neg.c
  eb01a5f4ef0a94b1c0107d58bccbf67e  gcc/testsuite/gcc.dg/cpp/pr23827_c99.c
! 267c12245ad0048fda61137a1be31b8c  gcc/testsuite/gcc.dg/cpp/pr27777.c
  90e24b2b16308f52ec34ef13271223ab  gcc/testsuite/gcc.dg/cpp/pr28165.c
  df66dbf94c5401be9e9149240b16cd1d  gcc/testsuite/gcc.dg/cpp/pr28227.c
  227c23a6a148124f7bfe01f416d517f3  gcc/testsuite/gcc.dg/cpp/pr28709.c
  d940acfa0acb4382321920d7cee49eb8  gcc/testsuite/gcc.dg/cpp/pr29612-1.c
  70d940c599e29e61513bdcd67f320e8a  gcc/testsuite/gcc.dg/cpp/pr29612-2.c
! 2864c7a797554aef19c0d6106efbb592  gcc/testsuite/gcc.dg/cpp/pr30786.c
  617a30cb11bd5368c924e9602b7e63dd  gcc/testsuite/gcc.dg/cpp/pr30805.c
  64358d7446ab31c28702d74cd4821e3f  gcc/testsuite/gcc.dg/cpp/pr32868.c
  909b4425f73083878d73d9030b31845c  gcc/testsuite/gcc.dg/cpp/pr32974.c
  95cf80947162150ab0529763958ab509  gcc/testsuite/gcc.dg/cpp/pr33415.c
  982ba3064f18ece1c491bd6e630da393  gcc/testsuite/gcc.dg/cpp/pr33466.c
! c9b9dfe0b779d5cedb0e269704e88355  gcc/testsuite/gcc.dg/cpp/pr34602.c
  73f299ee15936bdac54067aead691e79  gcc/testsuite/gcc.dg/cpp/pr34692.c
  c91822df8000f6656b2e707c3c4b9776  gcc/testsuite/gcc.dg/cpp/pr34859.c
  bd82104282e72a261de145d68de5bf94  gcc/testsuite/gcc.dg/cpp/pr35313.c
*************** e82335a43282b870ed13599f391aea3a  gcc/te
*** 27951,27960 ****
  530736b5c9a3fd45e6b06a0a18208037  gcc/testsuite/gcc.dg/cpp/pragma-once-1c.h
  d59887c3a6d84e13943708de2d30ef72  gcc/testsuite/gcc.dg/cpp/pragma-once-1d.h
  8804321867348b1e703e820a9a734ce7  gcc/testsuite/gcc.dg/cpp/pragma-pop_macro-1.c
! 07384775502bd88399fa7426580eacf7  gcc/testsuite/gcc.dg/cpp/redef1.c
! e8f6926244feafa3d4832576d4b8576c  gcc/testsuite/gcc.dg/cpp/redef2.c
! b47d4e874173f68a194c7dd458579b31  gcc/testsuite/gcc.dg/cpp/redef3.c
! e88cc5aaeba5c457e86c89d091525b54  gcc/testsuite/gcc.dg/cpp/redef4.c
  4e8711b0b38a21c8809a2e04bdabfacf  gcc/testsuite/gcc.dg/cpp/remap/a/header.gcc
  77ed3e756f7ad0b7fac7b786bd0464ca  gcc/testsuite/gcc.dg/cpp/remap/a/t_1.h
  77ed3e756f7ad0b7fac7b786bd0464ca  gcc/testsuite/gcc.dg/cpp/remap/a/t_2.h
--- 29232,29241 ----
  530736b5c9a3fd45e6b06a0a18208037  gcc/testsuite/gcc.dg/cpp/pragma-once-1c.h
  d59887c3a6d84e13943708de2d30ef72  gcc/testsuite/gcc.dg/cpp/pragma-once-1d.h
  8804321867348b1e703e820a9a734ce7  gcc/testsuite/gcc.dg/cpp/pragma-pop_macro-1.c
! 218c8d212affdcad76bbf99a0b32bacb  gcc/testsuite/gcc.dg/cpp/redef1.c
! 7cc9099c2d2dcd2898f508d445734e2e  gcc/testsuite/gcc.dg/cpp/redef2.c
! 48290d65488341c7f84097665e8aa6fc  gcc/testsuite/gcc.dg/cpp/redef3.c
! ce5f45208d877973cc057d044c8c10f2  gcc/testsuite/gcc.dg/cpp/redef4.c
  4e8711b0b38a21c8809a2e04bdabfacf  gcc/testsuite/gcc.dg/cpp/remap/a/header.gcc
  77ed3e756f7ad0b7fac7b786bd0464ca  gcc/testsuite/gcc.dg/cpp/remap/a/t_1.h
  77ed3e756f7ad0b7fac7b786bd0464ca  gcc/testsuite/gcc.dg/cpp/remap/a/t_2.h
*************** f34bc275d59946486855134dcb8fb717  gcc/te
*** 27985,28003 ****
  b0a7bba016f643033b8095390f45b63c  gcc/testsuite/gcc.dg/cpp/syshdr4.h
  02ca7d135b1e712b0d998c0994b829b7  gcc/testsuite/gcc.dg/cpp/syshdr5.c
  a134f61b54993dbe099fe727597502d9  gcc/testsuite/gcc.dg/cpp/syshdr5.h
! 84c887c9be7e0eb30d23672d7b4fa8d3  gcc/testsuite/gcc.dg/cpp/sysmac1.c
  118570d133529f28bd6188a36ea31bee  gcc/testsuite/gcc.dg/cpp/sysmac2.c
  a761c4210317baf7c84815ede8d4d163  gcc/testsuite/gcc.dg/cpp/tr-paste.c
! 5250d29b0387281f76f6893bed4e4329  gcc/testsuite/gcc.dg/cpp/tr-warn1.c
  748a9ffc4632256eba8f99739f0f438b  gcc/testsuite/gcc.dg/cpp/tr-warn2.c
! 5293aad1115f42409d4526f55c8e7f94  gcc/testsuite/gcc.dg/cpp/tr-warn3.c
  2e1cf4a34cda10297548ff2d40af6249  gcc/testsuite/gcc.dg/cpp/tr-warn4.c
  a8bcd0c178f857b6623a8312356bbfa8  gcc/testsuite/gcc.dg/cpp/tr-warn5.c
! e1a4bf48d77af86b49c71580bd4d475d  gcc/testsuite/gcc.dg/cpp/tr-warn6.c
! e32718f30aa27a6aabca241ea07a7a76  gcc/testsuite/gcc.dg/cpp/trad/Wunused.c
  722ce436983657fc4f00220b26f8fa36  gcc/testsuite/gcc.dg/cpp/trad/Wunused.h
  5e9de5515fe4a8824fbca4d07e421417  gcc/testsuite/gcc.dg/cpp/trad/__STDC__.c
! b5b14b46acf40771a237816999dda81e  gcc/testsuite/gcc.dg/cpp/trad/argcount.c
  1040acd58397cd6d3e306729a91df53a  gcc/testsuite/gcc.dg/cpp/trad/assembler.S
  9ca3af4c8a508d8e50858641266fef9f  gcc/testsuite/gcc.dg/cpp/trad/assert1.c
  2b69deee7386736b881e16b55490f8f6  gcc/testsuite/gcc.dg/cpp/trad/assert2.c
--- 29266,29286 ----
  b0a7bba016f643033b8095390f45b63c  gcc/testsuite/gcc.dg/cpp/syshdr4.h
  02ca7d135b1e712b0d998c0994b829b7  gcc/testsuite/gcc.dg/cpp/syshdr5.c
  a134f61b54993dbe099fe727597502d9  gcc/testsuite/gcc.dg/cpp/syshdr5.h
! 3fc5729a2dea8e164dcf430f6ecb7ec4  gcc/testsuite/gcc.dg/cpp/sysmac1.c
  118570d133529f28bd6188a36ea31bee  gcc/testsuite/gcc.dg/cpp/sysmac2.c
+ 78241df9da3187908f17ed39ddd051f7  gcc/testsuite/gcc.dg/cpp/sysmac3.c
+ 736bf358b8155e681b0ff0b7b0f42ea9  gcc/testsuite/gcc.dg/cpp/sysmac3.h
  a761c4210317baf7c84815ede8d4d163  gcc/testsuite/gcc.dg/cpp/tr-paste.c
! 36d6bcc5295c4753abd404f00ff53518  gcc/testsuite/gcc.dg/cpp/tr-warn1.c
  748a9ffc4632256eba8f99739f0f438b  gcc/testsuite/gcc.dg/cpp/tr-warn2.c
! 0abc421e1d8703abf2b0f8fb128d9128  gcc/testsuite/gcc.dg/cpp/tr-warn3.c
  2e1cf4a34cda10297548ff2d40af6249  gcc/testsuite/gcc.dg/cpp/tr-warn4.c
  a8bcd0c178f857b6623a8312356bbfa8  gcc/testsuite/gcc.dg/cpp/tr-warn5.c
! 5a5b15514d0b9f93627a1b3b237d42f0  gcc/testsuite/gcc.dg/cpp/tr-warn6.c
! c7f1039761b7dad00dd66874c56d4e0e  gcc/testsuite/gcc.dg/cpp/trad/Wunused.c
  722ce436983657fc4f00220b26f8fa36  gcc/testsuite/gcc.dg/cpp/trad/Wunused.h
  5e9de5515fe4a8824fbca4d07e421417  gcc/testsuite/gcc.dg/cpp/trad/__STDC__.c
! fd324f65ca36feff9f49a6a4cfd9aba1  gcc/testsuite/gcc.dg/cpp/trad/argcount.c
  1040acd58397cd6d3e306729a91df53a  gcc/testsuite/gcc.dg/cpp/trad/assembler.S
  9ca3af4c8a508d8e50858641266fef9f  gcc/testsuite/gcc.dg/cpp/trad/assert1.c
  2b69deee7386736b881e16b55490f8f6  gcc/testsuite/gcc.dg/cpp/trad/assert2.c
*************** d0f456c95c8e683154d85088e0f472d6  gcc/te
*** 28009,28036 ****
  4f05fd59dfb48553df9e7df3fd7ba8cb  gcc/testsuite/gcc.dg/cpp/trad/cmdlne-dD.c
  c6d3a629e616504adc205986b47b1a71  gcc/testsuite/gcc.dg/cpp/trad/cmdlne-dM.c
  a03922f2a6ad2a0f9694f96a3345fdaf  gcc/testsuite/gcc.dg/cpp/trad/comment-2.c
! 61a11c85d0de63c95062689c9b3344bf  gcc/testsuite/gcc.dg/cpp/trad/comment-3.c
! c2b66b3fe1232fc21e629ac1a4f67718  gcc/testsuite/gcc.dg/cpp/trad/comment.c
  f0902af1a6b36744b54012e6c76ef8fd  gcc/testsuite/gcc.dg/cpp/trad/define.c
! f32627ee8d3f638bed557384a2192917  gcc/testsuite/gcc.dg/cpp/trad/defined.c
! 99c125c2a7391dee076ad3059e1e8bda  gcc/testsuite/gcc.dg/cpp/trad/directive.c
  61905593b0a4d20f3e50794419f21bc7  gcc/testsuite/gcc.dg/cpp/trad/escaped-eof.c
  35306a3cfbf0e9ab131caf717cf35605  gcc/testsuite/gcc.dg/cpp/trad/escaped-nl.c
  6578778098ba13c021eb700dfd69f03d  gcc/testsuite/gcc.dg/cpp/trad/funlike-2.c
! c9525fb4198d9c2ed9465a85f45c2935  gcc/testsuite/gcc.dg/cpp/trad/funlike-3.c
  fd5d9fe2e2eb7fb83e65ff1a9a796a79  gcc/testsuite/gcc.dg/cpp/trad/funlike-4.c
  e54707954f8ae4c3302a9004b32bb8a6  gcc/testsuite/gcc.dg/cpp/trad/funlike-5.c
! ab250796fd09969cbefeae9d096cc6c2  gcc/testsuite/gcc.dg/cpp/trad/funlike.c
! 22689abd462f5dce7c90736632bcc1f2  gcc/testsuite/gcc.dg/cpp/trad/hash.c
  32ea053370bc2b0f24745d4195d12cdd  gcc/testsuite/gcc.dg/cpp/trad/include.c
  2d6a6d48b78ed1930bed92a8e64d0d0e  gcc/testsuite/gcc.dg/cpp/trad/literals-1.c
! 5fc5fdb2592a7998bebd4d2f5f687745  gcc/testsuite/gcc.dg/cpp/trad/literals-2.c
  308982cf5944ff251f34ed8919e3509d  gcc/testsuite/gcc.dg/cpp/trad/maccom1.c
  89a30e03045f814e7ec12cf0ac8f7cee  gcc/testsuite/gcc.dg/cpp/trad/maccom2.c
  0cdca52475a8c3a9fbc64e7982a87108  gcc/testsuite/gcc.dg/cpp/trad/maccom3.c
  8ac54f30326c9d7872ec3d8eaa97ff75  gcc/testsuite/gcc.dg/cpp/trad/maccom4.c
  5ce84b920c9e5de88dfdb3a218d24161  gcc/testsuite/gcc.dg/cpp/trad/maccom6.c
! d3f049e08540bc243ace4ae227147ac6  gcc/testsuite/gcc.dg/cpp/trad/macro.c
  f6fd286e21ac502cbd8e058ac7c2405e  gcc/testsuite/gcc.dg/cpp/trad/macroargs.c
  bea60b0e25e4fc80f59342d87e23c568  gcc/testsuite/gcc.dg/cpp/trad/mi1.c
  777cf2c3e95b6b5ee7caed8bc88cf268  gcc/testsuite/gcc.dg/cpp/trad/mi1c.h
--- 29292,29319 ----
  4f05fd59dfb48553df9e7df3fd7ba8cb  gcc/testsuite/gcc.dg/cpp/trad/cmdlne-dD.c
  c6d3a629e616504adc205986b47b1a71  gcc/testsuite/gcc.dg/cpp/trad/cmdlne-dM.c
  a03922f2a6ad2a0f9694f96a3345fdaf  gcc/testsuite/gcc.dg/cpp/trad/comment-2.c
! 788eecf12ce217edab3b5521766489e9  gcc/testsuite/gcc.dg/cpp/trad/comment-3.c
! df4c2acb94d5714d1d0ff56ae1fb12f5  gcc/testsuite/gcc.dg/cpp/trad/comment.c
  f0902af1a6b36744b54012e6c76ef8fd  gcc/testsuite/gcc.dg/cpp/trad/define.c
! 0d87284f987f972bf179141195834400  gcc/testsuite/gcc.dg/cpp/trad/defined.c
! b15cea37c4ded07fc57b07d8f33952d6  gcc/testsuite/gcc.dg/cpp/trad/directive.c
  61905593b0a4d20f3e50794419f21bc7  gcc/testsuite/gcc.dg/cpp/trad/escaped-eof.c
  35306a3cfbf0e9ab131caf717cf35605  gcc/testsuite/gcc.dg/cpp/trad/escaped-nl.c
  6578778098ba13c021eb700dfd69f03d  gcc/testsuite/gcc.dg/cpp/trad/funlike-2.c
! af96521a5a56b63fb222ba768d70b662  gcc/testsuite/gcc.dg/cpp/trad/funlike-3.c
  fd5d9fe2e2eb7fb83e65ff1a9a796a79  gcc/testsuite/gcc.dg/cpp/trad/funlike-4.c
  e54707954f8ae4c3302a9004b32bb8a6  gcc/testsuite/gcc.dg/cpp/trad/funlike-5.c
! 7130b3b6c0b5f3d495e985016ffde6d5  gcc/testsuite/gcc.dg/cpp/trad/funlike.c
! d053d892d7fc318c08b842d74d97d99b  gcc/testsuite/gcc.dg/cpp/trad/hash.c
  32ea053370bc2b0f24745d4195d12cdd  gcc/testsuite/gcc.dg/cpp/trad/include.c
  2d6a6d48b78ed1930bed92a8e64d0d0e  gcc/testsuite/gcc.dg/cpp/trad/literals-1.c
! d6ad200c25d468b11f3476f8c6e53bf0  gcc/testsuite/gcc.dg/cpp/trad/literals-2.c
  308982cf5944ff251f34ed8919e3509d  gcc/testsuite/gcc.dg/cpp/trad/maccom1.c
  89a30e03045f814e7ec12cf0ac8f7cee  gcc/testsuite/gcc.dg/cpp/trad/maccom2.c
  0cdca52475a8c3a9fbc64e7982a87108  gcc/testsuite/gcc.dg/cpp/trad/maccom3.c
  8ac54f30326c9d7872ec3d8eaa97ff75  gcc/testsuite/gcc.dg/cpp/trad/maccom4.c
  5ce84b920c9e5de88dfdb3a218d24161  gcc/testsuite/gcc.dg/cpp/trad/maccom6.c
! 457692f63b59d08942768453ac147e9a  gcc/testsuite/gcc.dg/cpp/trad/macro.c
  f6fd286e21ac502cbd8e058ac7c2405e  gcc/testsuite/gcc.dg/cpp/trad/macroargs.c
  bea60b0e25e4fc80f59342d87e23c568  gcc/testsuite/gcc.dg/cpp/trad/mi1.c
  777cf2c3e95b6b5ee7caed8bc88cf268  gcc/testsuite/gcc.dg/cpp/trad/mi1c.h
*************** bad46dc3aecb70d53e1132e7986da491  gcc/te
*** 28059,28073 ****
  28210d94dcd72595dc9f27d7009c68ef  gcc/testsuite/gcc.dg/cpp/trad/num-sign.c
  f05e936895687df50da3e0f17f68c57b  gcc/testsuite/gcc.dg/cpp/trad/paste.c
  528cd03ef970d063bd9212fbf0a2e65b  gcc/testsuite/gcc.dg/cpp/trad/pr65238-3.c
! 0304cd1170d1d4f1cf8309ca3a1d3b60  gcc/testsuite/gcc.dg/cpp/trad/pr65238-4.c
  c77e7691c0a10f1a6d612705553d72c6  gcc/testsuite/gcc.dg/cpp/trad/quote.c
! ef4f422edbeb55f5e7aa5eee46bf15d3  gcc/testsuite/gcc.dg/cpp/trad/recurse-1.c
! 2a6c500b6641ffd5242b8a9cf9d8c39d  gcc/testsuite/gcc.dg/cpp/trad/recurse-2.c
  fb8d966edc2bb4f9de1858ef3f07c225  gcc/testsuite/gcc.dg/cpp/trad/recurse-3.c
! 19e5cbd2c36fb20c8171cc606ffeb6c0  gcc/testsuite/gcc.dg/cpp/trad/redef1.c
! 78eb12d4db8d93fa3cd8c4580d037575  gcc/testsuite/gcc.dg/cpp/trad/redef2.c
  98ee20f87a972bda969b7109dd4c69d2  gcc/testsuite/gcc.dg/cpp/trad/strify.c
! 60f109640b4f1eca6095d080d7d12e71  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
--- 29342,29357 ----
  28210d94dcd72595dc9f27d7009c68ef  gcc/testsuite/gcc.dg/cpp/trad/num-sign.c
  f05e936895687df50da3e0f17f68c57b  gcc/testsuite/gcc.dg/cpp/trad/paste.c
  528cd03ef970d063bd9212fbf0a2e65b  gcc/testsuite/gcc.dg/cpp/trad/pr65238-3.c
! d2ba604e0790145093d68f119104260a  gcc/testsuite/gcc.dg/cpp/trad/pr65238-4.c
! ecf16c874df9c623441f654225cb0972  gcc/testsuite/gcc.dg/cpp/trad/pr69869.c
  c77e7691c0a10f1a6d612705553d72c6  gcc/testsuite/gcc.dg/cpp/trad/quote.c
! 38bd97aa50b9531fbeee27fc2ee6e8b0  gcc/testsuite/gcc.dg/cpp/trad/recurse-1.c
! bcd3fb5f1afc091e6f5b107dbdbcb233  gcc/testsuite/gcc.dg/cpp/trad/recurse-2.c
  fb8d966edc2bb4f9de1858ef3f07c225  gcc/testsuite/gcc.dg/cpp/trad/recurse-3.c
! 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
! 354c2663e9d431252bede215d032a036  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
*************** d7b4ffc23f8ee27cfb9746268dc8bd9e  gcc/te
*** 28075,28081 ****
  bc5a1f992350d5127dba7dd3a2c34eeb  gcc/testsuite/gcc.dg/cpp/uchar-3.c
  8db6db6bcaa213a2c261c3b822a88a1c  gcc/testsuite/gcc.dg/cpp/ucnid-1.c
  db5e79fe31133c21a894acb896e0efc6  gcc/testsuite/gcc.dg/cpp/ucnid-10.c
! 09b80024f2d113486f9d0de2d5dde2f5  gcc/testsuite/gcc.dg/cpp/ucnid-11.c
  b33f2eaa16255076a7607107d59af221  gcc/testsuite/gcc.dg/cpp/ucnid-12.c
  1c61e9fb29289eaec2872a90e3b1c580  gcc/testsuite/gcc.dg/cpp/ucnid-13.c
  3236ea7490e07888f46507ade3bd61c2  gcc/testsuite/gcc.dg/cpp/ucnid-14.c
--- 29359,29365 ----
  bc5a1f992350d5127dba7dd3a2c34eeb  gcc/testsuite/gcc.dg/cpp/uchar-3.c
  8db6db6bcaa213a2c261c3b822a88a1c  gcc/testsuite/gcc.dg/cpp/ucnid-1.c
  db5e79fe31133c21a894acb896e0efc6  gcc/testsuite/gcc.dg/cpp/ucnid-10.c
! a2d559abfa49c888c6f9375309b97e18  gcc/testsuite/gcc.dg/cpp/ucnid-11.c
  b33f2eaa16255076a7607107d59af221  gcc/testsuite/gcc.dg/cpp/ucnid-12.c
  1c61e9fb29289eaec2872a90e3b1c580  gcc/testsuite/gcc.dg/cpp/ucnid-13.c
  3236ea7490e07888f46507ade3bd61c2  gcc/testsuite/gcc.dg/cpp/ucnid-14.c
*************** dccde845ace954123ecd2ca98159393e  gcc/te
*** 28087,28099 ****
  e774025e676a5ba24033d7695eb66167  gcc/testsuite/gcc.dg/cpp/ucnid-6.c
  fe82f155f148a27e0e5e22f4daa9c8a9  gcc/testsuite/gcc.dg/cpp/ucnid-7.c
  3a60bfbca52807a70e98675905f3dff4  gcc/testsuite/gcc.dg/cpp/ucnid-9.c
! 314bb2b38dc4bae0232c871009aca9d2  gcc/testsuite/gcc.dg/cpp/ucs.c
! 2f6660fb7a44136cd7d6f03e00eaf8c6  gcc/testsuite/gcc.dg/cpp/unc1.c
! 75e68570747fe28398496c4438c1119e  gcc/testsuite/gcc.dg/cpp/unc2.c
! 72312b924a83741a31455bd737f6f493  gcc/testsuite/gcc.dg/cpp/unc3.c
! ceabc2be17934f64bed1ff4d748cd44a  gcc/testsuite/gcc.dg/cpp/unc4.c
  34fc89f1d246197a5b7c09184e223c2d  gcc/testsuite/gcc.dg/cpp/undef-opt-1.c
! a4a59949f81e7c481a6a71d7bf69ce8a  gcc/testsuite/gcc.dg/cpp/undef2.c
  b580fc14655d151bc7323c9844094653  gcc/testsuite/gcc.dg/cpp/usr/include/stdio.h
  b2573d118970340cf652e946e2f42a3c  gcc/testsuite/gcc.dg/cpp/utf8-5byte-1.c
  2adb7d5686ff190b39e11527a9b2fece  gcc/testsuite/gcc.dg/cpp/vararg1.c
--- 29371,29383 ----
  e774025e676a5ba24033d7695eb66167  gcc/testsuite/gcc.dg/cpp/ucnid-6.c
  fe82f155f148a27e0e5e22f4daa9c8a9  gcc/testsuite/gcc.dg/cpp/ucnid-7.c
  3a60bfbca52807a70e98675905f3dff4  gcc/testsuite/gcc.dg/cpp/ucnid-9.c
! 352bd99251c9733a54df5ad256b5bbea  gcc/testsuite/gcc.dg/cpp/ucs.c
! 88c569be154e0e70cfbf086f33d7230c  gcc/testsuite/gcc.dg/cpp/unc1.c
! 8d8bb2f1961112449dfe64b4d3e31170  gcc/testsuite/gcc.dg/cpp/unc2.c
! 24e8bbf6a63455e62f7395086eb33b20  gcc/testsuite/gcc.dg/cpp/unc3.c
! 3c434fbf69ab63118b91a596ff524ca3  gcc/testsuite/gcc.dg/cpp/unc4.c
  34fc89f1d246197a5b7c09184e223c2d  gcc/testsuite/gcc.dg/cpp/undef-opt-1.c
! 98e3377149a8eb0003f1fc9545eb39cb  gcc/testsuite/gcc.dg/cpp/undef2.c
  b580fc14655d151bc7323c9844094653  gcc/testsuite/gcc.dg/cpp/usr/include/stdio.h
  b2573d118970340cf652e946e2f42a3c  gcc/testsuite/gcc.dg/cpp/utf8-5byte-1.c
  2adb7d5686ff190b39e11527a9b2fece  gcc/testsuite/gcc.dg/cpp/vararg1.c
*************** b60882f19a9ffb20fe947d5e53d0d6b4  gcc/te
*** 28115,28122 ****
  2917a8d69c01cecc2307903c89c0b267  gcc/testsuite/gcc.dg/cpp/warn-normalized-1.c
  8b5c03d398ab39b3f8b4852e9ee558eb  gcc/testsuite/gcc.dg/cpp/warn-normalized-2.c
  2e4eeb34f8c1173370ed379e8f6b92ab  gcc/testsuite/gcc.dg/cpp/warn-normalized-3.c
! c4feb4e6a53f43509982daf8d4b99180  gcc/testsuite/gcc.dg/cpp/warn-redefined-2.c
! 5e6f0c5ab0398a8cec40318a9f414d30  gcc/testsuite/gcc.dg/cpp/warn-redefined.c
  8f65efe0d0f7e1137ad1eefd5d7153e9  gcc/testsuite/gcc.dg/cpp/warn-traditional-2.c
  acb39207e85f00c00516969802a94dd7  gcc/testsuite/gcc.dg/cpp/warn-traditional.c
  9f458e13f96adf10171bbd70bf73580c  gcc/testsuite/gcc.dg/cpp/warn-trigraphs-1.c
--- 29399,29406 ----
  2917a8d69c01cecc2307903c89c0b267  gcc/testsuite/gcc.dg/cpp/warn-normalized-1.c
  8b5c03d398ab39b3f8b4852e9ee558eb  gcc/testsuite/gcc.dg/cpp/warn-normalized-2.c
  2e4eeb34f8c1173370ed379e8f6b92ab  gcc/testsuite/gcc.dg/cpp/warn-normalized-3.c
! a99161b8a75e9238962748303dcdba69  gcc/testsuite/gcc.dg/cpp/warn-redefined-2.c
! 34c3cc765e57c85b0a9987cf0c5298be  gcc/testsuite/gcc.dg/cpp/warn-redefined.c
  8f65efe0d0f7e1137ad1eefd5d7153e9  gcc/testsuite/gcc.dg/cpp/warn-traditional-2.c
  acb39207e85f00c00516969802a94dd7  gcc/testsuite/gcc.dg/cpp/warn-traditional.c
  9f458e13f96adf10171bbd70bf73580c  gcc/testsuite/gcc.dg/cpp/warn-trigraphs-1.c
*************** acb39207e85f00c00516969802a94dd7  gcc/te
*** 28125,28137 ****
  808d1fc9010b656c12cb30049a3b2b55  gcc/testsuite/gcc.dg/cpp/warn-trigraphs-4.c
  e4c533a80bf3b78a131bcc3e2cc187ae  gcc/testsuite/gcc.dg/cpp/warn-undef-2.c
  dafecc042eba4cfb6758a4da33515721  gcc/testsuite/gcc.dg/cpp/warn-undef.c
! 616bb008437721effce377fb0735cc83  gcc/testsuite/gcc.dg/cpp/warn-unused-macros-2.c
! 40782e38ac65400e4dfb1d31e6ba7164  gcc/testsuite/gcc.dg/cpp/warn-unused-macros.c
  d6455bd7d39e63a6ebb49f2bee334872  gcc/testsuite/gcc.dg/cpp/warn-variadic-2.c
  61dfbff4afe62aa7a02208ce123aedcf  gcc/testsuite/gcc.dg/cpp/warn-variadic.c
  bddbf619aa148dc52dba82e2f937b89a  gcc/testsuite/gcc.dg/cpp/wchar-1.c
  febe83ee27f0e3494e3bd4484d6a7d21  gcc/testsuite/gcc.dg/cpp/widestr1.c
  e283abc5c7ec3171392ff96f4b1a8745  gcc/testsuite/gcc.dg/cr-decimal-dig-1.c
  dc6685bcab4cd7ed276483fd8d031507  gcc/testsuite/gcc.dg/ctor1.c
  13a7eb422d70031061c88832496b4b3b  gcc/testsuite/gcc.dg/cwsc0.c
  d9dc93acb42ceaf059f158db6f7ea6d2  gcc/testsuite/gcc.dg/cwsc1.c
--- 29409,29422 ----
  808d1fc9010b656c12cb30049a3b2b55  gcc/testsuite/gcc.dg/cpp/warn-trigraphs-4.c
  e4c533a80bf3b78a131bcc3e2cc187ae  gcc/testsuite/gcc.dg/cpp/warn-undef-2.c
  dafecc042eba4cfb6758a4da33515721  gcc/testsuite/gcc.dg/cpp/warn-undef.c
! 1a55ebc0be94cc98dc402d126b31e6ea  gcc/testsuite/gcc.dg/cpp/warn-unused-macros-2.c
! c084a28888c58b9756ebbd85df02c85d  gcc/testsuite/gcc.dg/cpp/warn-unused-macros.c
  d6455bd7d39e63a6ebb49f2bee334872  gcc/testsuite/gcc.dg/cpp/warn-variadic-2.c
  61dfbff4afe62aa7a02208ce123aedcf  gcc/testsuite/gcc.dg/cpp/warn-variadic.c
  bddbf619aa148dc52dba82e2f937b89a  gcc/testsuite/gcc.dg/cpp/wchar-1.c
  febe83ee27f0e3494e3bd4484d6a7d21  gcc/testsuite/gcc.dg/cpp/widestr1.c
  e283abc5c7ec3171392ff96f4b1a8745  gcc/testsuite/gcc.dg/cr-decimal-dig-1.c
+ ea8e81ccf9b0e8a7d31a02ddf10f3ae7  gcc/testsuite/gcc.dg/cse_recip.c
  dc6685bcab4cd7ed276483fd8d031507  gcc/testsuite/gcc.dg/ctor1.c
  13a7eb422d70031061c88832496b4b3b  gcc/testsuite/gcc.dg/cwsc0.c
  d9dc93acb42ceaf059f158db6f7ea6d2  gcc/testsuite/gcc.dg/cwsc1.c
*************** ea7172af490d3fb85bddeb7037fddc2e  gcc/te
*** 28193,28199 ****
  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
! 276edcc516db932235a631b13fb723c3  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
  d3259b89942460cf03b1158fd923a48d  gcc/testsuite/gcc.dg/debug/dwarf2/align-1.c
--- 29478,29484 ----
  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
! 67a82566e4919afe3c71c95bb2fb771d  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
  d3259b89942460cf03b1158fd923a48d  gcc/testsuite/gcc.dg/debug/dwarf2/align-1.c
*************** e7756d5b15ebe09f2b877683e2fe9063  gcc/te
*** 28204,28220 ****
  539e627d4b4e5830d219db589112b93b  gcc/testsuite/gcc.dg/debug/dwarf2/align-6.c
  3da74019bd161498c18f72b0cf13544e  gcc/testsuite/gcc.dg/debug/dwarf2/align-as-1.c
  960684a8cdd6ba444e70021a855ed3bc  gcc/testsuite/gcc.dg/debug/dwarf2/aranges-fnsec-1.c
! cd4096fb85cbcbe546fece89ac405cc4  gcc/testsuite/gcc.dg/debug/dwarf2/asm-line1.c
  82c2b5501555b8cf310ac6a2ff79d0ca  gcc/testsuite/gcc.dg/debug/dwarf2/atomic.c
  7daec8af89f4336866b06386f75d4bc4  gcc/testsuite/gcc.dg/debug/dwarf2/c99-typedef1.c
  db6996b9f252ec9046440b1efd526c21  gcc/testsuite/gcc.dg/debug/dwarf2/const-2.c
  941206f699cfffad06e26a28ba648021  gcc/testsuite/gcc.dg/debug/dwarf2/const-2b.c
! ed7a8f073397e589c4739ebef3e90b07  gcc/testsuite/gcc.dg/debug/dwarf2/discriminator.c
! 5b932019efa9e5aedb211dc0c03c5b24  gcc/testsuite/gcc.dg/debug/dwarf2/dups-types.c
! e392ebaa8db85da48b8c8afbe3a62d4a  gcc/testsuite/gcc.dg/debug/dwarf2/dups-types.h
! d1f809586a67a61ee0b7af9ee7a11408  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-char1.c
! d122b0dcb298bccbd1d1798d2980ee57  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-char2.c
! ac30e3a594c2b08d576a4538bfb81c4a  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-char3.c
  c5d36017ee5890bb51e46e0f2c62cd66  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-dfp.c
  d7be4ab4f744be959d9b1f979d8776a1  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-die1.c
  e1e677b07f8a4247d198553d2276d486  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-die2.c
--- 29489,29503 ----
  539e627d4b4e5830d219db589112b93b  gcc/testsuite/gcc.dg/debug/dwarf2/align-6.c
  3da74019bd161498c18f72b0cf13544e  gcc/testsuite/gcc.dg/debug/dwarf2/align-as-1.c
  960684a8cdd6ba444e70021a855ed3bc  gcc/testsuite/gcc.dg/debug/dwarf2/aranges-fnsec-1.c
! 8cc6fb816730c11f809e5cba3b6d5fd4  gcc/testsuite/gcc.dg/debug/dwarf2/asm-line1.c
  82c2b5501555b8cf310ac6a2ff79d0ca  gcc/testsuite/gcc.dg/debug/dwarf2/atomic.c
  7daec8af89f4336866b06386f75d4bc4  gcc/testsuite/gcc.dg/debug/dwarf2/c99-typedef1.c
  db6996b9f252ec9046440b1efd526c21  gcc/testsuite/gcc.dg/debug/dwarf2/const-2.c
  941206f699cfffad06e26a28ba648021  gcc/testsuite/gcc.dg/debug/dwarf2/const-2b.c
! b7cc1fa0904bcda319bf91dbe2a3a4fe  gcc/testsuite/gcc.dg/debug/dwarf2/discriminator.c
! bdc28ca82c4aedd54c51bdc86bec14a5  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-char1.c
! 4b7a125fecbeb3f74e765f6067334894  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-char2.c
! 160bdd9acd7baf6b98a6468e849e1720  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-char3.c
  c5d36017ee5890bb51e46e0f2c62cd66  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-dfp.c
  d7be4ab4f744be959d9b1f979d8776a1  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-die1.c
  e1e677b07f8a4247d198553d2276d486  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-die2.c
*************** f66089195ed63eab74be808668a83c7e  gcc/te
*** 28226,28236 ****
  e55c53007787d3e78580dd760ee7faf7  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-float.c
  fbe375bf9288bf092b7cef1996c14a1f  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-merge.c
  05dde46babff3ba7e4ea1940a11314c2  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-uninit.c
! 2f299a3be79319efc254dcdde380eca2  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2-3.c
! 424d1c5712132fa946d29bea292a641c  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2-3.h
  462bd6cda37f33e5231c0b148dfa36e1  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2-macro.c
  aebe8d7b9a0825a5634ec67d6d6289b8  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2-macro2.c
! d0b1fdc64ea0321fbfbc7e0c9d21dd6f  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2.exp
  362aa298514051f8a5b0ce8f2e1ee91a  gcc/testsuite/gcc.dg/debug/dwarf2/enum-loc1.c
  df0398ce911b16a3879ef84b4fb203b7  gcc/testsuite/gcc.dg/debug/dwarf2/fesd-any.c
  f7dc86f08b2d23f2ec144956f62a155d  gcc/testsuite/gcc.dg/debug/dwarf2/fesd-any.h
--- 29509,29519 ----
  e55c53007787d3e78580dd760ee7faf7  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-float.c
  fbe375bf9288bf092b7cef1996c14a1f  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-merge.c
  05dde46babff3ba7e4ea1940a11314c2  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-uninit.c
! 42c6c9570a94e44ac29201a8df0d4450  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2-3.c
! 41463d28a9bbf97a554feb4c959fed01  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2-3.h
  462bd6cda37f33e5231c0b148dfa36e1  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2-macro.c
  aebe8d7b9a0825a5634ec67d6d6289b8  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2-macro2.c
! 3bcbb9d4992af593b6477f20fea3d22e  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2.exp
  362aa298514051f8a5b0ce8f2e1ee91a  gcc/testsuite/gcc.dg/debug/dwarf2/enum-loc1.c
  df0398ce911b16a3879ef84b4fb203b7  gcc/testsuite/gcc.dg/debug/dwarf2/fesd-any.c
  f7dc86f08b2d23f2ec144956f62a155d  gcc/testsuite/gcc.dg/debug/dwarf2/fesd-any.h
*************** f3585dc62ae648c6def8f07287ea7b86  gcc/te
*** 28279,28294 ****
  8fdb8aac6ad79a3a51455dfad821bd74  gcc/testsuite/gcc.dg/debug/dwarf2/pr47939-4.c
  52797ccb92aabdf0dd45b603b1eeb64a  gcc/testsuite/gcc.dg/debug/dwarf2/pr49871.c
  94f8101679e6cc4b9fabcf3f776ded40  gcc/testsuite/gcc.dg/debug/dwarf2/pr51410.c
! 01ec5869a59f91af2fdeee3396a4b76f  gcc/testsuite/gcc.dg/debug/dwarf2/pr53948.c
  eb3e8d32cc98a65b9bf903f485425719  gcc/testsuite/gcc.dg/debug/dwarf2/pr66482.c
  f03dc9944066917662e80164971b7db3  gcc/testsuite/gcc.dg/debug/dwarf2/pr71855.c
  adcb04100f301278ba60a4cc3b3966e4  gcc/testsuite/gcc.dg/debug/dwarf2/pr80263.c
! b7e55f0772873df2d2550f27432ac07c  gcc/testsuite/gcc.dg/debug/dwarf2/prod-options.c
  84c94e8435cec0cb1a4a8e83a9c3633d  gcc/testsuite/gcc.dg/debug/dwarf2/short-circuit.c
! fd5753c0c85e2e3c862b46c2f851ad80  gcc/testsuite/gcc.dg/debug/dwarf2/sso.c
  09751288671698dde4edb8c708f7ba96  gcc/testsuite/gcc.dg/debug/dwarf2/stacked-qualified-types-1.c
  be5234588fc6e541c504e6b35d23834c  gcc/testsuite/gcc.dg/debug/dwarf2/stacked-qualified-types-2.c
! b198f61d39d39c4f8e8ac506320999f3  gcc/testsuite/gcc.dg/debug/dwarf2/stacked-qualified-types-3.c
  cfd09bc6ab94deff89da0b2f33da544d  gcc/testsuite/gcc.dg/debug/dwarf2/static1.c
  ca27b118a8f01285a381ac42b5dcdcaa  gcc/testsuite/gcc.dg/debug/dwarf2/struct-loc1.c
  b3f045b532c693bbfb8cfed8c0609564  gcc/testsuite/gcc.dg/debug/dwarf2/var1.c
--- 29562,29582 ----
  8fdb8aac6ad79a3a51455dfad821bd74  gcc/testsuite/gcc.dg/debug/dwarf2/pr47939-4.c
  52797ccb92aabdf0dd45b603b1eeb64a  gcc/testsuite/gcc.dg/debug/dwarf2/pr49871.c
  94f8101679e6cc4b9fabcf3f776ded40  gcc/testsuite/gcc.dg/debug/dwarf2/pr51410.c
! cfefd61a4eb768d07be5d7d9490c6bd2  gcc/testsuite/gcc.dg/debug/dwarf2/pr53948.c
  eb3e8d32cc98a65b9bf903f485425719  gcc/testsuite/gcc.dg/debug/dwarf2/pr66482.c
  f03dc9944066917662e80164971b7db3  gcc/testsuite/gcc.dg/debug/dwarf2/pr71855.c
  adcb04100f301278ba60a4cc3b3966e4  gcc/testsuite/gcc.dg/debug/dwarf2/pr80263.c
! c40ede10912fa004a4b7a417b98ff9db  gcc/testsuite/gcc.dg/debug/dwarf2/pr82718-1.c
! de84570955415eead8a296933c9380f6  gcc/testsuite/gcc.dg/debug/dwarf2/pr82718-2.c
! 3f29e44d89e997eeb82f5afeb78eae95  gcc/testsuite/gcc.dg/debug/dwarf2/pr82837.c
! 04ed708ea8db6a152acb5ebe98de283b  gcc/testsuite/gcc.dg/debug/dwarf2/prod-options.c
  84c94e8435cec0cb1a4a8e83a9c3633d  gcc/testsuite/gcc.dg/debug/dwarf2/short-circuit.c
! fd5753c0c85e2e3c862b46c2f851ad80  gcc/testsuite/gcc.dg/debug/dwarf2/sso-1.c
! a63511079fef380917f27519b23f325a  gcc/testsuite/gcc.dg/debug/dwarf2/sso-2.c
! e66bb5d7eb1937b8e960a120ae59bc55  gcc/testsuite/gcc.dg/debug/dwarf2/sso-3.c
  09751288671698dde4edb8c708f7ba96  gcc/testsuite/gcc.dg/debug/dwarf2/stacked-qualified-types-1.c
  be5234588fc6e541c504e6b35d23834c  gcc/testsuite/gcc.dg/debug/dwarf2/stacked-qualified-types-2.c
! dbceec17d4b404736614d1e76850a9cb  gcc/testsuite/gcc.dg/debug/dwarf2/stacked-qualified-types-3.c
  cfd09bc6ab94deff89da0b2f33da544d  gcc/testsuite/gcc.dg/debug/dwarf2/static1.c
  ca27b118a8f01285a381ac42b5dcdcaa  gcc/testsuite/gcc.dg/debug/dwarf2/struct-loc1.c
  b3f045b532c693bbfb8cfed8c0609564  gcc/testsuite/gcc.dg/debug/dwarf2/var1.c
*************** ba83948a6c75c4a8d289cf7e3de10226  gcc/te
*** 28301,28307 ****
  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
! 94f0301c16ed1e2c4c13d49b708cc8d4  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
--- 29589,29595 ----
  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
*************** f83af2708ba44addea950f47d1a44c95  gcc/te
*** 28330,28335 ****
--- 29618,29624 ----
  f04843ea87c9c55accf161e9ee241f15  gcc/testsuite/gcc.dg/debug/pr66432.c
  1a1a5a16846e5e1f309692815729ce1d  gcc/testsuite/gcc.dg/debug/pr78587.c
  2444e8441e19d7a1f14287f247114ea3  gcc/testsuite/gcc.dg/debug/pr80321.c
+ 240d53072f9b064ae6ea8d4d1b72f427  gcc/testsuite/gcc.dg/debug/pr85252.c
  e39702ba4ac8cdf1b4d7895fa15c394f  gcc/testsuite/gcc.dg/debug/redecl-1.c
  60c3f3165dda429cbc7646a06969d16c  gcc/testsuite/gcc.dg/debug/redecl-2.c
  175fa916ededdb94d71518eecbe6fa1a  gcc/testsuite/gcc.dg/debug/redecl-3.c
*************** f50cc26d9a41a3cc4afb62032326372f  gcc/te
*** 28344,28350 ****
  407c5e9a3a8e6d13d9f6a04e9d1433dc  gcc/testsuite/gcc.dg/decl-10.c
  c05d579255f461a03522a3c244abd203  gcc/testsuite/gcc.dg/decl-2.c
  19f2c0f697332616ca14ca96f11c3d93  gcc/testsuite/gcc.dg/decl-3.c
! 3dc94485042eec88220f5a8a0f1b4c2b  gcc/testsuite/gcc.dg/decl-4.c
  f56d6956bbfc1fc3f607c86c096cfbc8  gcc/testsuite/gcc.dg/decl-5.c
  12f0cb8aff1ab5cf6c741f1c72f2bcc3  gcc/testsuite/gcc.dg/decl-6.c
  8f59d23bb18dd7ef0efa5f8b27892822  gcc/testsuite/gcc.dg/decl-7.c
--- 29633,29639 ----
  407c5e9a3a8e6d13d9f6a04e9d1433dc  gcc/testsuite/gcc.dg/decl-10.c
  c05d579255f461a03522a3c244abd203  gcc/testsuite/gcc.dg/decl-2.c
  19f2c0f697332616ca14ca96f11c3d93  gcc/testsuite/gcc.dg/decl-3.c
! d785bb4b05232cffefa83ac650b83553  gcc/testsuite/gcc.dg/decl-4.c
  f56d6956bbfc1fc3f607c86c096cfbc8  gcc/testsuite/gcc.dg/decl-5.c
  12f0cb8aff1ab5cf6c741f1c72f2bcc3  gcc/testsuite/gcc.dg/decl-6.c
  8f59d23bb18dd7ef0efa5f8b27892822  gcc/testsuite/gcc.dg/decl-7.c
*************** d0670e7a7e4d7796fd6328449dacb860  gcc/te
*** 28356,28370 ****
  32050b6364ec4bf9045b1158ce0b17b7  gcc/testsuite/gcc.dg/decl-nospec-3.c
  f4b265f47c6143434beb2853a547fc06  gcc/testsuite/gcc.dg/declare-simd.c
  c561457acd7fe6ed269d63b2ed6f11a9  gcc/testsuite/gcc.dg/declspec-1.c
! 2128c2afd438d9a4624135af3ca0f39e  gcc/testsuite/gcc.dg/declspec-10.c
! f12ed899083dc06829f37476333fffe1  gcc/testsuite/gcc.dg/declspec-11.c
  9144e059b1f2fbd2703f19e757b2fd3f  gcc/testsuite/gcc.dg/declspec-12.c
  6feccf7230abdd78b4279babf2c6467b  gcc/testsuite/gcc.dg/declspec-13.c
  72d9305bbef81f4f4cb84d242d6a0ca4  gcc/testsuite/gcc.dg/declspec-14.c
  84b15212406dd3f1a6ebec2dd191f6eb  gcc/testsuite/gcc.dg/declspec-15.c
  5f156638242388c4296a078ea07bf55b  gcc/testsuite/gcc.dg/declspec-16.c
  da2a0026731621fb7e2dde50e12956cf  gcc/testsuite/gcc.dg/declspec-17.c
! a09044cb41c72e061eca1b804bd2d6b1  gcc/testsuite/gcc.dg/declspec-18.c
  5e356c4d6a9f4d3085839f0218b3a7a1  gcc/testsuite/gcc.dg/declspec-2.c
  8ae7afa95249610f8980f9b60becad08  gcc/testsuite/gcc.dg/declspec-3-Wextra.c
  0729a506746320ae1186bd9b96ae2203  gcc/testsuite/gcc.dg/declspec-3-no.c
--- 29645,29659 ----
  32050b6364ec4bf9045b1158ce0b17b7  gcc/testsuite/gcc.dg/decl-nospec-3.c
  f4b265f47c6143434beb2853a547fc06  gcc/testsuite/gcc.dg/declare-simd.c
  c561457acd7fe6ed269d63b2ed6f11a9  gcc/testsuite/gcc.dg/declspec-1.c
! bc565703c8e7b37c639e590e3296b7ea  gcc/testsuite/gcc.dg/declspec-10.c
! 1f4f7fe1c03ebf5be766ba87a5e92a2f  gcc/testsuite/gcc.dg/declspec-11.c
  9144e059b1f2fbd2703f19e757b2fd3f  gcc/testsuite/gcc.dg/declspec-12.c
  6feccf7230abdd78b4279babf2c6467b  gcc/testsuite/gcc.dg/declspec-13.c
  72d9305bbef81f4f4cb84d242d6a0ca4  gcc/testsuite/gcc.dg/declspec-14.c
  84b15212406dd3f1a6ebec2dd191f6eb  gcc/testsuite/gcc.dg/declspec-15.c
  5f156638242388c4296a078ea07bf55b  gcc/testsuite/gcc.dg/declspec-16.c
  da2a0026731621fb7e2dde50e12956cf  gcc/testsuite/gcc.dg/declspec-17.c
! 1675161f1520fb922340fceaf02978dd  gcc/testsuite/gcc.dg/declspec-18.c
  5e356c4d6a9f4d3085839f0218b3a7a1  gcc/testsuite/gcc.dg/declspec-2.c
  8ae7afa95249610f8980f9b60becad08  gcc/testsuite/gcc.dg/declspec-3-Wextra.c
  0729a506746320ae1186bd9b96ae2203  gcc/testsuite/gcc.dg/declspec-3-no.c
*************** a4b8f15ba7757218298aae4fedb99636  gcc/te
*** 28379,28392 ****
  2f7fee79962a647c8b29475a6d882946  gcc/testsuite/gcc.dg/delay-slot-2.c
  29bda4ed3cdc847c236fc0ef0888e01d  gcc/testsuite/gcc.dg/deprecated-2.c
  6a7682aec25c4be0ec245e7870ae8627  gcc/testsuite/gcc.dg/deprecated-3.c
! 60323b87b922494d7870fe8dcd29f985  gcc/testsuite/gcc.dg/deprecated-4.c
  5c465732517ab32b5f1d49aa94330ad5  gcc/testsuite/gcc.dg/deprecated-5.c
  ba7e6f4007944b95dbec857fc6c74794  gcc/testsuite/gcc.dg/deprecated-6.c
! 0ad7a6de6e9a888d0efe04ad048f9900  gcc/testsuite/gcc.dg/deprecated.c
  bd803fab76b770802d951e70b61c9696  gcc/testsuite/gcc.dg/dfp/Wbad-function-cast-1.c
  d898987e43ad43f22c65725bb92ec24f  gcc/testsuite/gcc.dg/dfp/Wtraditional-conversion-2.c
! 63d59d9e509fd472c8d0aeb9bd231d00  gcc/testsuite/gcc.dg/dfp/altivec-types.c
  2d5128bddc0d69a547254935ce84b555  gcc/testsuite/gcc.dg/dfp/builtin-complex.c
  1615d851b95e89da4a91edc5146b014a  gcc/testsuite/gcc.dg/dfp/cast-bad.c
  e1ab172aed47a730ac6b87d026f76d09  gcc/testsuite/gcc.dg/dfp/composite-type.c
  f033f97e544d92f5e13f8a9eb2a587d8  gcc/testsuite/gcc.dg/dfp/constants-c99.c
--- 29668,29683 ----
  2f7fee79962a647c8b29475a6d882946  gcc/testsuite/gcc.dg/delay-slot-2.c
  29bda4ed3cdc847c236fc0ef0888e01d  gcc/testsuite/gcc.dg/deprecated-2.c
  6a7682aec25c4be0ec245e7870ae8627  gcc/testsuite/gcc.dg/deprecated-3.c
! dd200537805c08a2ae3ec68cf3082eff  gcc/testsuite/gcc.dg/deprecated-4.c
  5c465732517ab32b5f1d49aa94330ad5  gcc/testsuite/gcc.dg/deprecated-5.c
  ba7e6f4007944b95dbec857fc6c74794  gcc/testsuite/gcc.dg/deprecated-6.c
! 9934d33b9991ddca3ef6f4c2cccdb37c  gcc/testsuite/gcc.dg/deprecated.c
  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
  2d5128bddc0d69a547254935ce84b555  gcc/testsuite/gcc.dg/dfp/builtin-complex.c
+ 1cd0f9502eb6f26f75689878d1315dde  gcc/testsuite/gcc.dg/dfp/builtin-tgmath-dfp-err.c
+ 8be219bdc31d596f6310b63d26678f47  gcc/testsuite/gcc.dg/dfp/builtin-tgmath-dfp.c
  1615d851b95e89da4a91edc5146b014a  gcc/testsuite/gcc.dg/dfp/cast-bad.c
  e1ab172aed47a730ac6b87d026f76d09  gcc/testsuite/gcc.dg/dfp/composite-type.c
  f033f97e544d92f5e13f8a9eb2a587d8  gcc/testsuite/gcc.dg/dfp/constants-c99.c
*************** a79af484d64f4ace22490ef7facb9c69  gcc/te
*** 28395,28401 ****
  a444b5a0e0c58c0053233b26e3955b32  gcc/testsuite/gcc.dg/dfp/constants.c
  feefe9e10c38db7c27ceff2fee10fa7f  gcc/testsuite/gcc.dg/dfp/convert-complex.c
  677218843476e01173452d6d2085797b  gcc/testsuite/gcc.dg/dfp/convert-dfp-round-thread.c
! 21f8e4694b43159e67ea5b564ee2a89b  gcc/testsuite/gcc.dg/dfp/convert-dfp-round.c
  14e963daa558a4fcb447d22081462e0c  gcc/testsuite/gcc.dg/dfp/ctypes.c
  4e056ac83cbd2c950354c9ba28596a3a  gcc/testsuite/gcc.dg/dfp/ddmode-ice.c
  dfe38d4b4c22442e902acc92b1c37be4  gcc/testsuite/gcc.dg/dfp/dec-eval-method-2.c
--- 29686,29692 ----
  a444b5a0e0c58c0053233b26e3955b32  gcc/testsuite/gcc.dg/dfp/constants.c
  feefe9e10c38db7c27ceff2fee10fa7f  gcc/testsuite/gcc.dg/dfp/convert-complex.c
  677218843476e01173452d6d2085797b  gcc/testsuite/gcc.dg/dfp/convert-dfp-round-thread.c
! 391ea1dd392b8092f71215c24d58ae4c  gcc/testsuite/gcc.dg/dfp/convert-dfp-round.c
  14e963daa558a4fcb447d22081462e0c  gcc/testsuite/gcc.dg/dfp/ctypes.c
  4e056ac83cbd2c950354c9ba28596a3a  gcc/testsuite/gcc.dg/dfp/ddmode-ice.c
  dfe38d4b4c22442e902acc92b1c37be4  gcc/testsuite/gcc.dg/dfp/dec-eval-method-2.c
*************** dfe075c7272c802e4c6f44b1a66f1302  gcc/te
*** 28404,28413 ****
  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
! b650afb91d2e6207a8f675fdb7eb3dc7  gcc/testsuite/gcc.dg/dfp/dfp.exp
! 6a52967f772344dfa2952cd0d876466c  gcc/testsuite/gcc.dg/dfp/fe-binop.c
  dc5f56a82263868da11e7d3a3e80a8c8  gcc/testsuite/gcc.dg/dfp/fe-check.h
! f8cc929c41a7058360d41f50aea9cdcd  gcc/testsuite/gcc.dg/dfp/fe-convert-1.c
  ae11ecbb18b43c27858d0c6dadfe07d3  gcc/testsuite/gcc.dg/dfp/fe-convert-2.c
  a0ac850750aaa6f8934dd8d86cad48b3  gcc/testsuite/gcc.dg/dfp/fe-convert-3.c
  8c93ba27dd3f1398726001c48e3c892d  gcc/testsuite/gcc.dg/dfp/float-constant-double.c
--- 29695,29704 ----
  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
! 3641522d986eed0023726ec880d789f2  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
  ae11ecbb18b43c27858d0c6dadfe07d3  gcc/testsuite/gcc.dg/dfp/fe-convert-2.c
  a0ac850750aaa6f8934dd8d86cad48b3  gcc/testsuite/gcc.dg/dfp/fe-convert-3.c
  8c93ba27dd3f1398726001c48e3c892d  gcc/testsuite/gcc.dg/dfp/float-constant-double.c
*************** e7496b87dc6662c7486375d6f89b9448  gcc/te
*** 28442,28460 ****
  f30ac33dbd955a24b7ae47b11e9fb73d  gcc/testsuite/gcc.dg/dfp/usual-arith-conv-bad-3.c
  ef8eb17f7da56bfde3d6840acb400831  gcc/testsuite/gcc.dg/dfp/usual-arith-conv-bad.c
  9190a1b37c2c0dd750746fbca83c728e  gcc/testsuite/gcc.dg/dfp/wtr-conversion-1.c
! e04a1eb94763ca9db3d44f38f627e5d6  gcc/testsuite/gcc.dg/dg-test-1.c
! 7507cfe661e1575c910ec75c919efc63  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
! 7bc65ca8cff0cb8a168760ab99fed4a7  gcc/testsuite/gcc.dg/diag-aka-1.c
! 9d9a0066edbbc2816a2435017c204486  gcc/testsuite/gcc.dg/diagnostic-range-bad-called-object.c
  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
  e6405a3d9f30666b2a5347659ea5b75d  gcc/testsuite/gcc.dg/diagnostic-token-ranges.c
  d72954c20fb8bc4b34f44be8d89dcdf8  gcc/testsuite/gcc.dg/diagnostic-tree-expr-ranges-2.c
  027655a8b0ca99f061c058d32eedfa46  gcc/testsuite/gcc.dg/div-compare-1.c
  fbe1728ec129ee4def55aa56b23ae73f  gcc/testsuite/gcc.dg/div-double-1.c
  800ebc8c0b6c4581219d124682bd0f28  gcc/testsuite/gcc.dg/divbyzero.c
  ffa51294ea9fe353fd245be0be5546aa  gcc/testsuite/gcc.dg/divmod-1-simode.c
  fc0b032eb3ed9f02f562d1532662f3b0  gcc/testsuite/gcc.dg/divmod-1.c
--- 29733,29754 ----
  f30ac33dbd955a24b7ae47b11e9fb73d  gcc/testsuite/gcc.dg/dfp/usual-arith-conv-bad-3.c
  ef8eb17f7da56bfde3d6840acb400831  gcc/testsuite/gcc.dg/dfp/usual-arith-conv-bad.c
  9190a1b37c2c0dd750746fbca83c728e  gcc/testsuite/gcc.dg/dfp/wtr-conversion-1.c
! 1d1366a913ab3a21a6dbd1b236fc57a4  gcc/testsuite/gcc.dg/dg-test-1.c
! 9c018775b548f3a117efd89d6e910259  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
! e9f7798e943e778edb8b21001cfec7f7  gcc/testsuite/gcc.dg/diag-aka-1.c
! e2abbf9a555098c950175c13d2f01605  gcc/testsuite/gcc.dg/diag-aka-2.c
! c62d15575797919e845abb5fb04433d2  gcc/testsuite/gcc.dg/diagnostic-range-bad-called-object.c
  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
  e6405a3d9f30666b2a5347659ea5b75d  gcc/testsuite/gcc.dg/diagnostic-token-ranges.c
  d72954c20fb8bc4b34f44be8d89dcdf8  gcc/testsuite/gcc.dg/diagnostic-tree-expr-ranges-2.c
+ a1b6f6dc38f81dc434b0af5eb729521a  gcc/testsuite/gcc.dg/diagnostic-types-1.c
  027655a8b0ca99f061c058d32eedfa46  gcc/testsuite/gcc.dg/div-compare-1.c
  fbe1728ec129ee4def55aa56b23ae73f  gcc/testsuite/gcc.dg/div-double-1.c
+ 44dd8c7d742d26db3ad6b7e5cf92160e  gcc/testsuite/gcc.dg/div_neg.c
  800ebc8c0b6c4581219d124682bd0f28  gcc/testsuite/gcc.dg/divbyzero.c
  ffa51294ea9fe353fd245be0be5546aa  gcc/testsuite/gcc.dg/divmod-1-simode.c
  fc0b032eb3ed9f02f562d1532662f3b0  gcc/testsuite/gcc.dg/divmod-1.c
*************** ce354ccb3e1bed31286dc21c6b83f645  gcc/te
*** 28501,28508 ****
  73f28900e3ff651e8b225317ff0598d6  gcc/testsuite/gcc.dg/dump-pass.c
  319beb8755465d44ed9f566b896d8645  gcc/testsuite/gcc.dg/dx-test.c
  98e009f186009113a73f83a1d6acae4c  gcc/testsuite/gcc.dg/empty-source-1.c
! f7587d4d3c09fba72c9495b591e63c3b  gcc/testsuite/gcc.dg/empty-source-2.c
! 20791e4a3c0e9771e821a781795a0695  gcc/testsuite/gcc.dg/empty-source-3.c
  c3d0e5f87b23f96c728ab8dd3707bb9b  gcc/testsuite/gcc.dg/empty1.c
  7908cbe605cd47ed92b1586d03a7c349  gcc/testsuite/gcc.dg/empty2.c
  b4f00b2d0fc854a9c192873f0ebeeaa5  gcc/testsuite/gcc.dg/enum-compat-1.c
--- 29795,29802 ----
  73f28900e3ff651e8b225317ff0598d6  gcc/testsuite/gcc.dg/dump-pass.c
  319beb8755465d44ed9f566b896d8645  gcc/testsuite/gcc.dg/dx-test.c
  98e009f186009113a73f83a1d6acae4c  gcc/testsuite/gcc.dg/empty-source-1.c
! 24181e05d79451b0e07859547ed2a8b9  gcc/testsuite/gcc.dg/empty-source-2.c
! b1ed7d39dfea44368e120889578631cc  gcc/testsuite/gcc.dg/empty-source-3.c
  c3d0e5f87b23f96c728ab8dd3707bb9b  gcc/testsuite/gcc.dg/empty1.c
  7908cbe605cd47ed92b1586d03a7c349  gcc/testsuite/gcc.dg/empty2.c
  b4f00b2d0fc854a9c192873f0ebeeaa5  gcc/testsuite/gcc.dg/enum-compat-1.c
*************** ba60814aadf21741cc3e6781a96f6801  gcc/te
*** 28523,28528 ****
--- 29817,29824 ----
  bbb87d2a73c29d36f6bb6b3dec4a2b02  gcc/testsuite/gcc.dg/extra-semi-1.c
  5ecbeae6593123b1ac9b91979c9faf1b  gcc/testsuite/gcc.dg/extra-semi-2.c
  8a92262e99815477a062c82d552896e8  gcc/testsuite/gcc.dg/extra-semi-3.c
+ c54a3052ec2d03b003a96b460fc1509c  gcc/testsuite/gcc.dg/extract_recip_3.c
+ 426a2aa59ea6c60129fd2d8b0a70e0ac  gcc/testsuite/gcc.dg/extract_recip_4.c
  7c514bdf337c48ebb4437bf0259f8c2d  gcc/testsuite/gcc.dg/fail_always_inline.c
  635a708f0d3160a61cc28f440b7af0d5  gcc/testsuite/gcc.dg/fail_always_inline2.c
  fcc6ffbb180063b979c569bcc8e32384  gcc/testsuite/gcc.dg/falign-labels-1.c
*************** af315092d026865340052aee7b9849a3  gcc/te
*** 28554,28560 ****
  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
! 09e69cec61c42d3ceb9789ebba09968a  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
--- 29850,29856 ----
  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
! 3c07e5f88dcc47fcd5daa34196959429  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
*************** c71cd62369fd73371bd64d9e9c2653fe  gcc/te
*** 28562,28568 ****
  2ed35ff51b0b2070db69efabd8e20152  gcc/testsuite/gcc.dg/fixed-point/func-vararg-mixed.c
  9b60dc9b93241a9c642889447a571337  gcc/testsuite/gcc.dg/fixed-point/func-vararg-size0.c
  c6ad30ce8dcb25801126fe689577566d  gcc/testsuite/gcc.dg/fixed-point/func-vararg.c
! 25f273934dc84c4956422208960aa951  gcc/testsuite/gcc.dg/fixed-point/int-warning.c
  753178f517da636492ac172caca74e28  gcc/testsuite/gcc.dg/fixed-point/keywords-c89.c
  3dda089145d7e3d42d3a2ee4872cc831  gcc/testsuite/gcc.dg/fixed-point/keywords-c99.c
  39cee27276ab37c3aa01d997775f1a8e  gcc/testsuite/gcc.dg/fixed-point/keywords-ignored-c99.c
--- 29858,29864 ----
  2ed35ff51b0b2070db69efabd8e20152  gcc/testsuite/gcc.dg/fixed-point/func-vararg-mixed.c
  9b60dc9b93241a9c642889447a571337  gcc/testsuite/gcc.dg/fixed-point/func-vararg-size0.c
  c6ad30ce8dcb25801126fe689577566d  gcc/testsuite/gcc.dg/fixed-point/func-vararg.c
! 03522bf50511efd2c1db2d220935b7d0  gcc/testsuite/gcc.dg/fixed-point/int-warning.c
  753178f517da636492ac172caca74e28  gcc/testsuite/gcc.dg/fixed-point/keywords-c89.c
  3dda089145d7e3d42d3a2ee4872cc831  gcc/testsuite/gcc.dg/fixed-point/keywords-c99.c
  39cee27276ab37c3aa01d997775f1a8e  gcc/testsuite/gcc.dg/fixed-point/keywords-ignored-c99.c
*************** d8b37ea89b70427d76a100b7f8387198  gcc/te
*** 28588,28597 ****
  50fc39034c0bf4c2dc167ee2ce72b01a  gcc/testsuite/gcc.dg/fixed-point/union-init.c
  0e3d47ebe3c269f5cbc87b257cae1213  gcc/testsuite/gcc.dg/fixed-point/view-convert-2.c
  b26ec4207090108ad96e87a3a0dbcd15  gcc/testsuite/gcc.dg/fixed-point/view-convert.c
  191af7b32d3e6f8856bf440cade6a4db  gcc/testsuite/gcc.dg/fixits.c
  ef50af421660786db0fe02810452b32f  gcc/testsuite/gcc.dg/fixuns-trunc-1.c
  85db05f8c70ca4dbcefde9d1c06692c6  gcc/testsuite/gcc.dg/float-exact-1.c
! 1f8cb1bed4834a0394a578c3e85cc7b7  gcc/testsuite/gcc.dg/float-range-1.c
  004cdd7f4e1522c6bc32910e120d11f9  gcc/testsuite/gcc.dg/float-range-2.c
  96acfd8a97a7824ec76c5f8a46e73c30  gcc/testsuite/gcc.dg/float-range-3.c
  7e8110d2f68c28f0408dede54389b021  gcc/testsuite/gcc.dg/float-range-4.c
--- 29884,29895 ----
  50fc39034c0bf4c2dc167ee2ce72b01a  gcc/testsuite/gcc.dg/fixed-point/union-init.c
  0e3d47ebe3c269f5cbc87b257cae1213  gcc/testsuite/gcc.dg/fixed-point/view-convert-2.c
  b26ec4207090108ad96e87a3a0dbcd15  gcc/testsuite/gcc.dg/fixed-point/view-convert.c
+ 575563b867e85020f3fdeb43e05c915b  gcc/testsuite/gcc.dg/fixits-pr84852-1.c
+ 45cab23ed8bcc49bee0b73d62fd78000  gcc/testsuite/gcc.dg/fixits-pr84852-2.c
  191af7b32d3e6f8856bf440cade6a4db  gcc/testsuite/gcc.dg/fixits.c
  ef50af421660786db0fe02810452b32f  gcc/testsuite/gcc.dg/fixuns-trunc-1.c
  85db05f8c70ca4dbcefde9d1c06692c6  gcc/testsuite/gcc.dg/float-exact-1.c
! 6840342484caeac64dde469cb5bd55e7  gcc/testsuite/gcc.dg/float-range-1.c
  004cdd7f4e1522c6bc32910e120d11f9  gcc/testsuite/gcc.dg/float-range-2.c
  96acfd8a97a7824ec76c5f8a46e73c30  gcc/testsuite/gcc.dg/float-range-3.c
  7e8110d2f68c28f0408dede54389b021  gcc/testsuite/gcc.dg/float-range-4.c
*************** d467beb16e456482332e0ca640f19292  gcc/te
*** 28633,28638 ****
--- 29931,29937 ----
  998a8ab53f66b22ae7ef45e929ea771c  gcc/testsuite/gcc.dg/fold-and-rshift-1.c
  541807dee27cf9a7faddef7819cd8184  gcc/testsuite/gcc.dg/fold-and-rshift-2.c
  f37fadcde67294fac1b37ae7f174f5f6  gcc/testsuite/gcc.dg/fold-andxor-1.c
+ f9aa45f82981028d58906cb281f60dc0  gcc/testsuite/gcc.dg/fold-bcopy.c
  31b8159ac3be55870efe4b8cf71361b0  gcc/testsuite/gcc.dg/fold-bitand-1.c
  647a959b2f50ead9c5374764cf1cec23  gcc/testsuite/gcc.dg/fold-bitand-2.c
  981cd3ceab0ce4e3e6e60f1b430d0ffa  gcc/testsuite/gcc.dg/fold-bitand-3.c
*************** ba64bb8404b072004632cac16910abec  gcc/te
*** 28649,28655 ****
  f177aae9ddc78d2853a04aeaa692daf7  gcc/testsuite/gcc.dg/fold-compare-8.c
  70f02c560ed1755f784fbff6b5c046f0  gcc/testsuite/gcc.dg/fold-complex-1.c
  9806275adb45ca7e8f6636a3ed65f0cb  gcc/testsuite/gcc.dg/fold-cond-1.c
! a37478860517cdafde8ff3d3f2a58d1c  gcc/testsuite/gcc.dg/fold-cond_expr-1.c
  bc4dc77fe0d5a497c4f5a8fedce878ef  gcc/testsuite/gcc.dg/fold-condcmpconv-1.c
  2c2601a7fc4c7b7ab5ef5af7d6cca601  gcc/testsuite/gcc.dg/fold-condcmpconv-2.c
  8fd9724f349a184326a2da4dfe1e3a1c  gcc/testsuite/gcc.dg/fold-convmaxconv-1.c
--- 29948,29955 ----
  f177aae9ddc78d2853a04aeaa692daf7  gcc/testsuite/gcc.dg/fold-compare-8.c
  70f02c560ed1755f784fbff6b5c046f0  gcc/testsuite/gcc.dg/fold-complex-1.c
  9806275adb45ca7e8f6636a3ed65f0cb  gcc/testsuite/gcc.dg/fold-cond-1.c
! a37478860517cdafde8ff3d3f2a58d1c  gcc/testsuite/gcc.dg/fold-cond-2.c
! 64339b2ae6b4e40d896218f68e77d78f  gcc/testsuite/gcc.dg/fold-cond-3.c
  bc4dc77fe0d5a497c4f5a8fedce878ef  gcc/testsuite/gcc.dg/fold-condcmpconv-1.c
  2c2601a7fc4c7b7ab5ef5af7d6cca601  gcc/testsuite/gcc.dg/fold-condcmpconv-2.c
  8fd9724f349a184326a2da4dfe1e3a1c  gcc/testsuite/gcc.dg/fold-convmaxconv-1.c
*************** eeea2ac960772dd525f684fc36a59a66  gcc/te
*** 28660,28666 ****
  bf0e3d583aa40f4309fb7ca85e660b7b  gcc/testsuite/gcc.dg/fold-cstring.c
  34087e25944fd1f9c2f33740cbb9338e  gcc/testsuite/gcc.dg/fold-cstvecshift.c
  116852682b5f90b0e8d97b57cc7ef9c9  gcc/testsuite/gcc.dg/fold-cvect.c
! 4fc30edfa30a8b2024bafcceb2eff678  gcc/testsuite/gcc.dg/fold-div-1.c
  8514735988453bfa1206b82edf761ccf  gcc/testsuite/gcc.dg/fold-div-2.c
  da126bbf3df0845610b9067a803b9cdb  gcc/testsuite/gcc.dg/fold-div-3.c
  ecf3e0a507fd9596feac9b2b4403e0c2  gcc/testsuite/gcc.dg/fold-eqand-1.c
--- 29960,29966 ----
  bf0e3d583aa40f4309fb7ca85e660b7b  gcc/testsuite/gcc.dg/fold-cstring.c
  34087e25944fd1f9c2f33740cbb9338e  gcc/testsuite/gcc.dg/fold-cstvecshift.c
  116852682b5f90b0e8d97b57cc7ef9c9  gcc/testsuite/gcc.dg/fold-cvect.c
! 1f72f6632d462c2e6b6039335ae0c50f  gcc/testsuite/gcc.dg/fold-div-1.c
  8514735988453bfa1206b82edf761ccf  gcc/testsuite/gcc.dg/fold-div-2.c
  da126bbf3df0845610b9067a803b9cdb  gcc/testsuite/gcc.dg/fold-div-3.c
  ecf3e0a507fd9596feac9b2b4403e0c2  gcc/testsuite/gcc.dg/fold-eqand-1.c
*************** fcbb2528c921d915dc257f623fb3e18d  gcc/te
*** 28715,28720 ****
--- 30015,30021 ----
  4d0c116d61f9861ca3886210f3abf4ef  gcc/testsuite/gcc.dg/foo.specs
  bad1720c4e6747d46d6013dcd116be52  gcc/testsuite/gcc.dg/for-1.c
  63211150514fb447729261ebe0969779  gcc/testsuite/gcc.dg/fork-instrumentation.c
+ 02edfa053df1038c254832e8a158363f  gcc/testsuite/gcc.dg/format/Wsuggest-attribute-1.c
  aa9a902b97eb881397465df0aecbfb88  gcc/testsuite/gcc.dg/format/array-1.c
  07ab9e03f9df889971ec796d46e54789  gcc/testsuite/gcc.dg/format/asm_fprintf-1.c
  3fae0d306f1e0869a52ec14b883171b6  gcc/testsuite/gcc.dg/format/asm_fprintf-2.c
*************** b6101a5164438f1e91f2c147428b2d22  gcc/te
*** 28743,28777 ****
  857c6c8e77b49e807de24a40130dd3fc  gcc/testsuite/gcc.dg/format/c90-strftime-2.c
  6f50ccd6f7e75324129ce54e9660db43  gcc/testsuite/gcc.dg/format/c94-printf-1.c
  7b1769113f6c29f0de011783e6b88890  gcc/testsuite/gcc.dg/format/c94-scanf-1.c
! 8071f7e05881dad890c3be4cbf323159  gcc/testsuite/gcc.dg/format/c99-printf-1.c
  cdfc6b203b5df8a7d39e043a3e70c1e3  gcc/testsuite/gcc.dg/format/c99-printf-2.c
  9e9c31e2f0aa77e7a2eb5accc7700eaf  gcc/testsuite/gcc.dg/format/c99-printf-3.c
! b64f4136e6df482405341915758a0f06  gcc/testsuite/gcc.dg/format/c99-scanf-1.c
  1b190bc24cd8c880d9d45f70996d4992  gcc/testsuite/gcc.dg/format/c99-scanf-2.c
  6d6b33050d17c85b937b5cceaa2a7dec  gcc/testsuite/gcc.dg/format/c99-scanf-3.c
  9edae30771cd6a9e4090bc95c41a4cc7  gcc/testsuite/gcc.dg/format/c99-scanf-4.c
! 919853e77ea929ba095f48e302445d41  gcc/testsuite/gcc.dg/format/c99-strftime-1.c
  1cbc4a0f562f400d1b4cd399fccdaed8  gcc/testsuite/gcc.dg/format/c99-strftime-2.c
  4a0af73997f2fabfe3b83d5cbdd917f5  gcc/testsuite/gcc.dg/format/cast-1.c
  2bbc64aef0d11089fcc505ed72a3896e  gcc/testsuite/gcc.dg/format/cmn-err-1.c
! e92469c37f73e212131291168d65ec2c  gcc/testsuite/gcc.dg/format/dfp-printf-1.c
  cc927069618148e60b10281c4a02e41a  gcc/testsuite/gcc.dg/format/dfp-scanf-1.c
  597c2cef1b33bb71739d311ee56278e3  gcc/testsuite/gcc.dg/format/diag-1.c
  76b3d68f4d248a85562e894eb00f75c7  gcc/testsuite/gcc.dg/format/diag-2.c
! 0cc37ea6ab21a4ddf55534618c719819  gcc/testsuite/gcc.dg/format/diagnostic-ranges.c
  859d88caa1eeeb23ca9b76526b3a4f3e  gcc/testsuite/gcc.dg/format/errmk-1.c
  07bb1882393eddf8452ebd19e6a983d2  gcc/testsuite/gcc.dg/format/ext-1.c
  659ecddafea7332aee20e4459efbfa15  gcc/testsuite/gcc.dg/format/ext-2.c
! 6e2e8903a3f1c847f1364270afce86ec  gcc/testsuite/gcc.dg/format/ext-3.c
  5655f9db0b2fb6fea5cd089604c3f009  gcc/testsuite/gcc.dg/format/ext-4.c
  49fe80a2a1fde4f6d66844739b9cdcbf  gcc/testsuite/gcc.dg/format/ext-5.c
  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
  15bea7790574d1770ac396bfef50a19e  gcc/testsuite/gcc.dg/format/few-1.c
! b4b43beadc70fccd654bc99d01d31107  gcc/testsuite/gcc.dg/format/format.exp
  3c298331a5764a4c3e39e92fb781efd5  gcc/testsuite/gcc.dg/format/format.h
! 6a5d8bf998b480cd758d120efd7b4825  gcc/testsuite/gcc.dg/format/gcc_diag-1.c
  d63a56715d277d731b74b926a681d346  gcc/testsuite/gcc.dg/format/gcc_diag-2.c
  2b068fc03b193724f240064980e45403  gcc/testsuite/gcc.dg/format/gcc_diag-3.c
  4f5087c56807755a3ac6073de49801bf  gcc/testsuite/gcc.dg/format/gcc_diag-4.c
--- 30044,30079 ----
  857c6c8e77b49e807de24a40130dd3fc  gcc/testsuite/gcc.dg/format/c90-strftime-2.c
  6f50ccd6f7e75324129ce54e9660db43  gcc/testsuite/gcc.dg/format/c94-printf-1.c
  7b1769113f6c29f0de011783e6b88890  gcc/testsuite/gcc.dg/format/c94-scanf-1.c
! 21d8699fe0233dd805932a8db2cb6a55  gcc/testsuite/gcc.dg/format/c99-printf-1.c
  cdfc6b203b5df8a7d39e043a3e70c1e3  gcc/testsuite/gcc.dg/format/c99-printf-2.c
  9e9c31e2f0aa77e7a2eb5accc7700eaf  gcc/testsuite/gcc.dg/format/c99-printf-3.c
! 552dcb9a34372fcc5e3bdbf120d26532  gcc/testsuite/gcc.dg/format/c99-scanf-1.c
  1b190bc24cd8c880d9d45f70996d4992  gcc/testsuite/gcc.dg/format/c99-scanf-2.c
  6d6b33050d17c85b937b5cceaa2a7dec  gcc/testsuite/gcc.dg/format/c99-scanf-3.c
  9edae30771cd6a9e4090bc95c41a4cc7  gcc/testsuite/gcc.dg/format/c99-scanf-4.c
! d48360a30dc24fbd67e388a9848b02d3  gcc/testsuite/gcc.dg/format/c99-strftime-1.c
  1cbc4a0f562f400d1b4cd399fccdaed8  gcc/testsuite/gcc.dg/format/c99-strftime-2.c
  4a0af73997f2fabfe3b83d5cbdd917f5  gcc/testsuite/gcc.dg/format/cast-1.c
  2bbc64aef0d11089fcc505ed72a3896e  gcc/testsuite/gcc.dg/format/cmn-err-1.c
! 5bb82ff4ac5cae051c099127140102cb  gcc/testsuite/gcc.dg/format/dfp-printf-1.c
  cc927069618148e60b10281c4a02e41a  gcc/testsuite/gcc.dg/format/dfp-scanf-1.c
  597c2cef1b33bb71739d311ee56278e3  gcc/testsuite/gcc.dg/format/diag-1.c
  76b3d68f4d248a85562e894eb00f75c7  gcc/testsuite/gcc.dg/format/diag-2.c
! 58bfe025e760eebcdd98d35c51f051d3  gcc/testsuite/gcc.dg/format/diagnostic-ranges.c
  859d88caa1eeeb23ca9b76526b3a4f3e  gcc/testsuite/gcc.dg/format/errmk-1.c
  07bb1882393eddf8452ebd19e6a983d2  gcc/testsuite/gcc.dg/format/ext-1.c
  659ecddafea7332aee20e4459efbfa15  gcc/testsuite/gcc.dg/format/ext-2.c
! 9b50769784774bf9778bbba444e593e6  gcc/testsuite/gcc.dg/format/ext-3.c
  5655f9db0b2fb6fea5cd089604c3f009  gcc/testsuite/gcc.dg/format/ext-4.c
  49fe80a2a1fde4f6d66844739b9cdcbf  gcc/testsuite/gcc.dg/format/ext-5.c
  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
  15bea7790574d1770ac396bfef50a19e  gcc/testsuite/gcc.dg/format/few-1.c
! 0f5bca14df95ee7516513bde4e5c2fb0  gcc/testsuite/gcc.dg/format/format.exp
  3c298331a5764a4c3e39e92fb781efd5  gcc/testsuite/gcc.dg/format/format.h
! 1367686ec7dee490797bfbc45b11e270  gcc/testsuite/gcc.dg/format/gcc_diag-1.c
! 196517b39ca55fe7a2c50885d71c6ea1  gcc/testsuite/gcc.dg/format/gcc_diag-10.c
  d63a56715d277d731b74b926a681d346  gcc/testsuite/gcc.dg/format/gcc_diag-2.c
  2b068fc03b193724f240064980e45403  gcc/testsuite/gcc.dg/format/gcc_diag-3.c
  4f5087c56807755a3ac6073de49801bf  gcc/testsuite/gcc.dg/format/gcc_diag-4.c
*************** b1716ffd0e5d2e821a978898584c7a36  gcc/te
*** 28865,28871 ****
  46f3694f38fc493da5187902288be31f  gcc/testsuite/gcc.dg/format/opt-5.c
  efb69233f0f4d1e7b62a9eec6f8a71a4  gcc/testsuite/gcc.dg/format/opt-6.c
  a5e5757327ee9e4157e7c1abee28e939  gcc/testsuite/gcc.dg/format/plus-1.c
! 9d775bb08be3605d40856586316f82f7  gcc/testsuite/gcc.dg/format/pr72858.c
  c0bb376502829ea2ca57f937fc5ed7fb  gcc/testsuite/gcc.dg/format/pr78304-2.c
  a6b042c93ecf197f981aaebd8a1804db  gcc/testsuite/gcc.dg/format/pr78304.c
  eb842c37bc21c16859e0a7bf8911a023  gcc/testsuite/gcc.dg/format/pr78498.c
--- 30167,30173 ----
  46f3694f38fc493da5187902288be31f  gcc/testsuite/gcc.dg/format/opt-5.c
  efb69233f0f4d1e7b62a9eec6f8a71a4  gcc/testsuite/gcc.dg/format/opt-6.c
  a5e5757327ee9e4157e7c1abee28e939  gcc/testsuite/gcc.dg/format/plus-1.c
! c57a7a8a6886ce9aa662ec412b76f89d  gcc/testsuite/gcc.dg/format/pr72858.c
  c0bb376502829ea2ca57f937fc5ed7fb  gcc/testsuite/gcc.dg/format/pr78304-2.c
  a6b042c93ecf197f981aaebd8a1804db  gcc/testsuite/gcc.dg/format/pr78304.c
  eb842c37bc21c16859e0a7bf8911a023  gcc/testsuite/gcc.dg/format/pr78498.c
*************** f5793067d0e01bcfdf92ccab888a0d6d  gcc/te
*** 28934,28939 ****
--- 30236,30242 ----
  9e6ce6f5175c7ff4dff703ea8639c816  gcc/testsuite/gcc.dg/gimplefe-24.c
  4c080d812b9c953204221ceb0912b747  gcc/testsuite/gcc.dg/gimplefe-25.c
  c07c0e7c2b5ef03eed537024b647c607  gcc/testsuite/gcc.dg/gimplefe-26.c
+ 199bf2d727115e50436c0dc0bbb638c9  gcc/testsuite/gcc.dg/gimplefe-27.c
  166dc9288f662277f0e3a9937decafdc  gcc/testsuite/gcc.dg/gimplefe-3.c
  e6814c98756761f222d943c13ee581ad  gcc/testsuite/gcc.dg/gimplefe-4.c
  b900f5308b7aaf209ad303e7426ad1bc  gcc/testsuite/gcc.dg/gimplefe-5.c
*************** e45dbd809432ea3c6911d238fbd0d89e  gcc/te
*** 28944,28955 ****
--- 30247,30263 ----
  8243b6f459d273f2909792678f20e7c4  gcc/testsuite/gcc.dg/gimplefe-error-1.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
+ 719f43f5e6f1bc8bf0f22ef4ca3d2b7a  gcc/testsuite/gcc.dg/gimplefe-error-5.c
+ 00285c44e7a48a1a7fcc5b322913c553  gcc/testsuite/gcc.dg/gimplefe-error-6.c
+ f19ba5ec082add7d45bee659e0ca766a  gcc/testsuite/gcc.dg/gimplefe-error-7.c
  a7deb2e877a1f5f71b5144b4d0e6f4ab  gcc/testsuite/gcc.dg/globalalias-2.c
  af413f2a965da90de86711f81ac54bc6  gcc/testsuite/gcc.dg/globalalias.c
  644bbd61aaed9ff26399d6df215c0bf6  gcc/testsuite/gcc.dg/gnu-cond-expr-1.c
  a96976fd3fda1d78ffb9d43b63b4e689  gcc/testsuite/gcc.dg/gnu-cond-expr-2.c
  1040a39e5ee38ee9eb6af1ce8b7b714b  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
  98860983e0e7e6c0e27409a268e0b255  gcc/testsuite/gcc.dg/gnu11-version-1.c
  1dba007eb9375f507aea8a8537219f2f  gcc/testsuite/gcc.dg/gnu89-const-expr-1.c
  5f9245bb91ebd059fd2e1a5562ed7ed7  gcc/testsuite/gcc.dg/gnu89-const-expr-2.c
*************** ae8f65ff46d5c742b9d555f0c48fdbe3  gcc/te
*** 28966,28974 ****
  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
! fbaf9c194f8eeb3c6a97704714f37286  gcc/testsuite/gcc.dg/goacc-gomp/goacc-gomp.exp
  e301304e13590c1ce7f775ce00ef95b0  gcc/testsuite/gcc.dg/goacc/acc_on_device-1.c
! d23eeb80802886d540fdc2cf37ecac6c  gcc/testsuite/gcc.dg/goacc/goacc.exp
  29f84d7cd4f4d9fb24733e49c88618fa  gcc/testsuite/gcc.dg/goacc/loop-processing-1.c
  9e00e7a94f979942198724398d213cee  gcc/testsuite/gcc.dg/goacc/nested-function-1.c
  d28df196e898f3e95d6f476710c89624  gcc/testsuite/gcc.dg/goacc/nested-function-2.c
--- 30274,30282 ----
  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
! 39bfdc1ba7cc86962afa93ec20003072  gcc/testsuite/gcc.dg/goacc-gomp/goacc-gomp.exp
  e301304e13590c1ce7f775ce00ef95b0  gcc/testsuite/gcc.dg/goacc/acc_on_device-1.c
! eb75a3ab4298c59e02a970fca249d7b3  gcc/testsuite/gcc.dg/goacc/goacc.exp
  29f84d7cd4f4d9fb24733e49c88618fa  gcc/testsuite/gcc.dg/goacc/loop-processing-1.c
  9e00e7a94f979942198724398d213cee  gcc/testsuite/gcc.dg/goacc/nested-function-1.c
  d28df196e898f3e95d6f476710c89624  gcc/testsuite/gcc.dg/goacc/nested-function-2.c
*************** e2edaa99a329f7ec13d86c69f5fb6685  gcc/te
*** 28993,28999 ****
  bbd3874d19e1e391dc965b955b06bb4f  gcc/testsuite/gcc.dg/gomp/appendix-a/a.21.3.c
  7e4279c348306c5cdf7353260b7be57c  gcc/testsuite/gcc.dg/gomp/appendix-a/a.22.1.c
  f939a327dadbbb577fd23dd8271c7c3a  gcc/testsuite/gcc.dg/gomp/appendix-a/a.22.2.c
! 52d87a285432a42832437b24dc72063a  gcc/testsuite/gcc.dg/gomp/appendix-a/a.24.1.c
  89da5674ba83628613e5f756ebdd7041  gcc/testsuite/gcc.dg/gomp/appendix-a/a.26.2.c
  a1284ef9e3b555a89fd81e45ce8bf334  gcc/testsuite/gcc.dg/gomp/appendix-a/a.27.1.c
  b7c0f23928a4856b07cc2b38adc7a05f  gcc/testsuite/gcc.dg/gomp/appendix-a/a.30.1.c
--- 30301,30307 ----
  bbd3874d19e1e391dc965b955b06bb4f  gcc/testsuite/gcc.dg/gomp/appendix-a/a.21.3.c
  7e4279c348306c5cdf7353260b7be57c  gcc/testsuite/gcc.dg/gomp/appendix-a/a.22.1.c
  f939a327dadbbb577fd23dd8271c7c3a  gcc/testsuite/gcc.dg/gomp/appendix-a/a.22.2.c
! 011a753382ca16dd133876c65fcfd957  gcc/testsuite/gcc.dg/gomp/appendix-a/a.24.1.c
  89da5674ba83628613e5f756ebdd7041  gcc/testsuite/gcc.dg/gomp/appendix-a/a.26.2.c
  a1284ef9e3b555a89fd81e45ce8bf334  gcc/testsuite/gcc.dg/gomp/appendix-a/a.27.1.c
  b7c0f23928a4856b07cc2b38adc7a05f  gcc/testsuite/gcc.dg/gomp/appendix-a/a.30.1.c
*************** a711c9451bdf512fdc17116c6ecdc398  gcc/te
*** 29040,29049 ****
  1a2c5c09aa0be5fb46a4f5f23aa6e736  gcc/testsuite/gcc.dg/gomp/critical-2.c
  03bbd187d9153b4add585d80ff21398a  gcc/testsuite/gcc.dg/gomp/critical-3.c
  5ed058cff064ccd6bdbb074b4f718aef  gcc/testsuite/gcc.dg/gomp/critical-4.c
! 0d5da53c4e39dbcf847b96e624056dff  gcc/testsuite/gcc.dg/gomp/declare-simd-1.c
  dbf4fad9a516a5e21a83632a1bc47d48  gcc/testsuite/gcc.dg/gomp/declare-simd-2.c
  376830b94eee0a5b5583c00eb4f1e7ca  gcc/testsuite/gcc.dg/gomp/declare-simd-3.c
  8ad7fd6bf872bcd397b6264c4199830e  gcc/testsuite/gcc.dg/gomp/declare-simd-4.c
  4cbde8501b67eb0634877343d20eda34  gcc/testsuite/gcc.dg/gomp/dump-new-function-2.c
  5a6bfb1bc31247155e2a2829449a3dd5  gcc/testsuite/gcc.dg/gomp/dump-new-function-3.c
  da3311b0af85a7a45f6b528ac08bee72  gcc/testsuite/gcc.dg/gomp/dump-new-function.c
--- 30348,30358 ----
  1a2c5c09aa0be5fb46a4f5f23aa6e736  gcc/testsuite/gcc.dg/gomp/critical-2.c
  03bbd187d9153b4add585d80ff21398a  gcc/testsuite/gcc.dg/gomp/critical-3.c
  5ed058cff064ccd6bdbb074b4f718aef  gcc/testsuite/gcc.dg/gomp/critical-4.c
! fa4f1f9c4cc2da71fb8d1772c51129f3  gcc/testsuite/gcc.dg/gomp/declare-simd-1.c
  dbf4fad9a516a5e21a83632a1bc47d48  gcc/testsuite/gcc.dg/gomp/declare-simd-2.c
  376830b94eee0a5b5583c00eb4f1e7ca  gcc/testsuite/gcc.dg/gomp/declare-simd-3.c
  8ad7fd6bf872bcd397b6264c4199830e  gcc/testsuite/gcc.dg/gomp/declare-simd-4.c
+ f27de0628e77fcd4c557b16b4b5e48e7  gcc/testsuite/gcc.dg/gomp/declare-simd-5.c
  4cbde8501b67eb0634877343d20eda34  gcc/testsuite/gcc.dg/gomp/dump-new-function-2.c
  5a6bfb1bc31247155e2a2829449a3dd5  gcc/testsuite/gcc.dg/gomp/dump-new-function-3.c
  da3311b0af85a7a45f6b528ac08bee72  gcc/testsuite/gcc.dg/gomp/dump-new-function.c
*************** bcce5f289dacd7e032453729bf06e161  gcc/te
*** 29074,29086 ****
  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
! 58bb08472422cd979ed5cc752943a0d8  gcc/testsuite/gcc.dg/gomp/gomp.exp
  f23a4bf5a986b8f5c098e677d3a78a11  gcc/testsuite/gcc.dg/gomp/linear-1.c
  56144d4bd65d209b536c4decb65d9c15  gcc/testsuite/gcc.dg/gomp/loop-1.c
  a4271cf7824f2a837486e7951ee23884  gcc/testsuite/gcc.dg/gomp/macro-1.c
  eabb0107af4ef893414bb3cef506ad03  gcc/testsuite/gcc.dg/gomp/macro-2.c
  0d468ea6d8d3343f4663748bf3bf83ac  gcc/testsuite/gcc.dg/gomp/macro-3.c
! bcfcf53c7ca57ff07f35e8fecb56ffc3  gcc/testsuite/gcc.dg/gomp/macro-4.c
  9dff449fe2d97c4b3ade07b982e69364  gcc/testsuite/gcc.dg/gomp/master-1.c
  e3d4511cf0643d031beaecffa7d44be0  gcc/testsuite/gcc.dg/gomp/master-2.c
  12980af7dd41b122fc335c0ef4ba07ed  gcc/testsuite/gcc.dg/gomp/master-3.c
--- 30383,30395 ----
  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
! 96abf71760c2665fb366bb1768c69c01  gcc/testsuite/gcc.dg/gomp/gomp.exp
  f23a4bf5a986b8f5c098e677d3a78a11  gcc/testsuite/gcc.dg/gomp/linear-1.c
  56144d4bd65d209b536c4decb65d9c15  gcc/testsuite/gcc.dg/gomp/loop-1.c
  a4271cf7824f2a837486e7951ee23884  gcc/testsuite/gcc.dg/gomp/macro-1.c
  eabb0107af4ef893414bb3cef506ad03  gcc/testsuite/gcc.dg/gomp/macro-2.c
  0d468ea6d8d3343f4663748bf3bf83ac  gcc/testsuite/gcc.dg/gomp/macro-3.c
! ba975959f8f25bf92fec71babed9c6cb  gcc/testsuite/gcc.dg/gomp/macro-4.c
  9dff449fe2d97c4b3ade07b982e69364  gcc/testsuite/gcc.dg/gomp/master-1.c
  e3d4511cf0643d031beaecffa7d44be0  gcc/testsuite/gcc.dg/gomp/master-2.c
  12980af7dd41b122fc335c0ef4ba07ed  gcc/testsuite/gcc.dg/gomp/master-3.c
*************** b6e412b1e41464bf3c6ad63059710985  gcc/te
*** 29167,29172 ****
--- 30476,30482 ----
  94d52afbc97b558472c16b172f9755e9  gcc/testsuite/gcc.dg/gomp/pr72781.c
  3dfa5450530e68792fc799c17f83fc46  gcc/testsuite/gcc.dg/gomp/pr81768-1.c
  43bccc2e99a04235390798e75d04c6d1  gcc/testsuite/gcc.dg/gomp/pr81768-2.c
+ 1fb1dcba746e154601a6f0935615231b  gcc/testsuite/gcc.dg/gomp/pr82374.c
  32d1b4709fce01c7b0f596da5c040f2a  gcc/testsuite/gcc.dg/gomp/preprocess-1.c
  5a96f232ac76ad6d8182f67c3f3a4acf  gcc/testsuite/gcc.dg/gomp/reduction-1.c
  536359d59fc418a1570a6d8574a66ca1  gcc/testsuite/gcc.dg/gomp/sections-1.c
*************** d52311b9c131d936e432ecb0ead28e52  gcc/te
*** 29215,29228 ****
  5e3ef65d649f9a7d1c1d6819a2188844  gcc/testsuite/gcc.dg/graphite/block-pr47654.c
  c3029918e87d1d13ebf16885b60ceb30  gcc/testsuite/gcc.dg/graphite/fuse-1.c
  63d4a7071763336f82d3784cd09338d4  gcc/testsuite/gcc.dg/graphite/fuse-2.c
! d8c5afd010cdafa825bf1299bdb5a63b  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
  34061859886d43460fe79f16248458de  gcc/testsuite/gcc.dg/graphite/id-12.c
  780052676e57581f69ae358e8c547eb1  gcc/testsuite/gcc.dg/graphite/id-13.c
  621fee158dc0d91a58d8ffdf3d1b6106  gcc/testsuite/gcc.dg/graphite/id-14.c
! 7933fd5c8e4249b2c8eda58cd93e7a9d  gcc/testsuite/gcc.dg/graphite/id-15.c
  a6e6f0b5a89aac1b98a4284776b8f4f7  gcc/testsuite/gcc.dg/graphite/id-16.c
  43567e8a70e6407e18e312d3ffc8e16c  gcc/testsuite/gcc.dg/graphite/id-17.c
  d75f7adf409d34481e2f4da80628fbef  gcc/testsuite/gcc.dg/graphite/id-18.c
--- 30525,30538 ----
  5e3ef65d649f9a7d1c1d6819a2188844  gcc/testsuite/gcc.dg/graphite/block-pr47654.c
  c3029918e87d1d13ebf16885b60ceb30  gcc/testsuite/gcc.dg/graphite/fuse-1.c
  63d4a7071763336f82d3784cd09338d4  gcc/testsuite/gcc.dg/graphite/fuse-2.c
! 52ab754d1df9d5b4c37c81ce99d96b0b  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
  34061859886d43460fe79f16248458de  gcc/testsuite/gcc.dg/graphite/id-12.c
  780052676e57581f69ae358e8c547eb1  gcc/testsuite/gcc.dg/graphite/id-13.c
  621fee158dc0d91a58d8ffdf3d1b6106  gcc/testsuite/gcc.dg/graphite/id-14.c
! 05aa0035d660f8dc33c6771c5e8e2ce4  gcc/testsuite/gcc.dg/graphite/id-15.c
  a6e6f0b5a89aac1b98a4284776b8f4f7  gcc/testsuite/gcc.dg/graphite/id-16.c
  43567e8a70e6407e18e312d3ffc8e16c  gcc/testsuite/gcc.dg/graphite/id-17.c
  d75f7adf409d34481e2f4da80628fbef  gcc/testsuite/gcc.dg/graphite/id-18.c
*************** eae569e02e598b1d1d83adb32c5c78d6  gcc/te
*** 29235,29243 ****
  50d20ac6e2f3d40806993234538c069f  gcc/testsuite/gcc.dg/graphite/id-25.c
  dc4ea50a2b8b5f8a90e7ca48cfc84e1d  gcc/testsuite/gcc.dg/graphite/id-26.c
  f4f91bfeddd48d931aa70678eff73a93  gcc/testsuite/gcc.dg/graphite/id-27.c
- b5b2ce3f01b9445ef125377573ae8b56  gcc/testsuite/gcc.dg/graphite/id-28.c
  cf10dc340bbc3af2672f86cf3ba235f7  gcc/testsuite/gcc.dg/graphite/id-29.c
  c1da01b3cb61caad476700b8df79f79b  gcc/testsuite/gcc.dg/graphite/id-3.c
  84d69bc8bd9b435df3a4cbc2118e51d3  gcc/testsuite/gcc.dg/graphite/id-4.c
  c612c58f0d4611e434d9a1fa1181dc54  gcc/testsuite/gcc.dg/graphite/id-5.c
  8d8ced72fff3502352fe11a215e629e8  gcc/testsuite/gcc.dg/graphite/id-6.c
--- 30545,30553 ----
  50d20ac6e2f3d40806993234538c069f  gcc/testsuite/gcc.dg/graphite/id-25.c
  dc4ea50a2b8b5f8a90e7ca48cfc84e1d  gcc/testsuite/gcc.dg/graphite/id-26.c
  f4f91bfeddd48d931aa70678eff73a93  gcc/testsuite/gcc.dg/graphite/id-27.c
  cf10dc340bbc3af2672f86cf3ba235f7  gcc/testsuite/gcc.dg/graphite/id-29.c
  c1da01b3cb61caad476700b8df79f79b  gcc/testsuite/gcc.dg/graphite/id-3.c
+ 4c6aab07b311a809beeaf2cecd8161d9  gcc/testsuite/gcc.dg/graphite/id-30.c
  84d69bc8bd9b435df3a4cbc2118e51d3  gcc/testsuite/gcc.dg/graphite/id-4.c
  c612c58f0d4611e434d9a1fa1181dc54  gcc/testsuite/gcc.dg/graphite/id-5.c
  8d8ced72fff3502352fe11a215e629e8  gcc/testsuite/gcc.dg/graphite/id-6.c
*************** dc21558aaf5984cdd2c95e3695b05fdd  gcc/te
*** 29270,29276 ****
  d7071fc6740fd7be78e9c8ed6056328d  gcc/testsuite/gcc.dg/graphite/interchange-4.c
  627c8baafda20c61a5e2c10425096509  gcc/testsuite/gcc.dg/graphite/interchange-5.c
  6c30ebf3cdb5b5aac3db839577352065  gcc/testsuite/gcc.dg/graphite/interchange-6.c
! 48517baa4870d6f9e2e7b71b2365c705  gcc/testsuite/gcc.dg/graphite/interchange-7.c
  0935a6de81319659546dd9d60218cbfd  gcc/testsuite/gcc.dg/graphite/interchange-8.c
  0616bab9bd12028524183a4b13ccaab2  gcc/testsuite/gcc.dg/graphite/interchange-9.c
  22de70fa370abef6121981031550b2ff  gcc/testsuite/gcc.dg/graphite/interchange-mvt.c
--- 30580,30586 ----
  d7071fc6740fd7be78e9c8ed6056328d  gcc/testsuite/gcc.dg/graphite/interchange-4.c
  627c8baafda20c61a5e2c10425096509  gcc/testsuite/gcc.dg/graphite/interchange-5.c
  6c30ebf3cdb5b5aac3db839577352065  gcc/testsuite/gcc.dg/graphite/interchange-6.c
! 68b89bf29e22abcaba2a12b6b3a8856f  gcc/testsuite/gcc.dg/graphite/interchange-7.c
  0935a6de81319659546dd9d60218cbfd  gcc/testsuite/gcc.dg/graphite/interchange-8.c
  0616bab9bd12028524183a4b13ccaab2  gcc/testsuite/gcc.dg/graphite/interchange-9.c
  22de70fa370abef6121981031550b2ff  gcc/testsuite/gcc.dg/graphite/interchange-mvt.c
*************** e3841ce79fce9dbc91b626c1e17b06de  gcc/te
*** 29305,29313 ****
  0c21fd047c7f3b41e6666cf67e858797  gcc/testsuite/gcc.dg/graphite/pr34016.c
  393d27c4fc50623bad71c3796f70b9f9  gcc/testsuite/gcc.dg/graphite/pr34017.c
  0422216e25c609d199058c144dcb9bec  gcc/testsuite/gcc.dg/graphite/pr34123.c
! 35540f5a211bbe139673b568604cb1e8  gcc/testsuite/gcc.dg/graphite/pr35356-1.c
  51b8d5627223835b20de8f1cf3f4f6bb  gcc/testsuite/gcc.dg/graphite/pr35356-2.c
! d77298fca8fc8427cd061b8dbeef2a44  gcc/testsuite/gcc.dg/graphite/pr35356-3.c
  1631aad16e1d2c50a8ba1065618f774e  gcc/testsuite/gcc.dg/graphite/pr36287.c
  989cb41410a395478765dc195912bccd  gcc/testsuite/gcc.dg/graphite/pr37485.c
  2cb45a26a54c06216517b84a97ed76a1  gcc/testsuite/gcc.dg/graphite/pr37684.c
--- 30615,30623 ----
  0c21fd047c7f3b41e6666cf67e858797  gcc/testsuite/gcc.dg/graphite/pr34016.c
  393d27c4fc50623bad71c3796f70b9f9  gcc/testsuite/gcc.dg/graphite/pr34017.c
  0422216e25c609d199058c144dcb9bec  gcc/testsuite/gcc.dg/graphite/pr34123.c
! 051a8b8cdd9d5a96ca3db3c5ba3d6346  gcc/testsuite/gcc.dg/graphite/pr35356-1.c
  51b8d5627223835b20de8f1cf3f4f6bb  gcc/testsuite/gcc.dg/graphite/pr35356-2.c
! 778f450d3c2c43a4b5f335fe66efc3ed  gcc/testsuite/gcc.dg/graphite/pr35356-3.c
  1631aad16e1d2c50a8ba1065618f774e  gcc/testsuite/gcc.dg/graphite/pr36287.c
  989cb41410a395478765dc195912bccd  gcc/testsuite/gcc.dg/graphite/pr37485.c
  2cb45a26a54c06216517b84a97ed76a1  gcc/testsuite/gcc.dg/graphite/pr37684.c
*************** f1f95a05c967e328b97acad19a8ddb76  gcc/te
*** 29333,29341 ****
  ab748a5e0b18921cb3521ba7e506cfde  gcc/testsuite/gcc.dg/graphite/pr40157.c
  339fda4bf388004b01dd3dfb0beb7f42  gcc/testsuite/gcc.dg/graphite/pr40281.c
  9088dad7e8d86f4e1f2fb15db596c823  gcc/testsuite/gcc.dg/graphite/pr41888.c
! e598d54041d9dd74a2801f309b1121bb  gcc/testsuite/gcc.dg/graphite/pr42205-1.c
! d2c3596e2eb105208dd78b5987027f79  gcc/testsuite/gcc.dg/graphite/pr42205-2.c
! d3f78c47e097ffa0a757748ac7ae4c10  gcc/testsuite/gcc.dg/graphite/pr42211.c
  b2bccbbb0a5317ffc997417121634c04  gcc/testsuite/gcc.dg/graphite/pr42221.c
  56e001ade0ccaa424108f2148a638bfe  gcc/testsuite/gcc.dg/graphite/pr42284.c
  7a50bc9b46ad3e8b9ca2f9574626bdd3  gcc/testsuite/gcc.dg/graphite/pr42326.c
--- 30643,30651 ----
  ab748a5e0b18921cb3521ba7e506cfde  gcc/testsuite/gcc.dg/graphite/pr40157.c
  339fda4bf388004b01dd3dfb0beb7f42  gcc/testsuite/gcc.dg/graphite/pr40281.c
  9088dad7e8d86f4e1f2fb15db596c823  gcc/testsuite/gcc.dg/graphite/pr41888.c
! e465e71574a44a19840d065ac85f8c2b  gcc/testsuite/gcc.dg/graphite/pr42205-1.c
! fc498201eceac9dea329ea6a069664e5  gcc/testsuite/gcc.dg/graphite/pr42205-2.c
! 441fa9303d5316a98a919ce270b55787  gcc/testsuite/gcc.dg/graphite/pr42211.c
  b2bccbbb0a5317ffc997417121634c04  gcc/testsuite/gcc.dg/graphite/pr42221.c
  56e001ade0ccaa424108f2148a638bfe  gcc/testsuite/gcc.dg/graphite/pr42284.c
  7a50bc9b46ad3e8b9ca2f9574626bdd3  gcc/testsuite/gcc.dg/graphite/pr42326.c
*************** d4dabab1bbce98d5d64c6bba5d4e5017  gcc/te
*** 29353,29380 ****
  135395ec651116498f4a676bbdee6dac  gcc/testsuite/gcc.dg/graphite/pr44391.c
  6ca42d295d20f847c7df5d4f3c1c5199  gcc/testsuite/gcc.dg/graphite/pr45297.c
  8a0871206fdf8792b4da75c6159e9ee3  gcc/testsuite/gcc.dg/graphite/pr46168.c
! 11698afccb0c0533192e8d71897d06df  gcc/testsuite/gcc.dg/graphite/pr46185.c
  19ba178bf23dca2a316a60d54bfa9b71  gcc/testsuite/gcc.dg/graphite/pr46215.c
  928f33c0a31f77cd10d7b7deb0ac96e8  gcc/testsuite/gcc.dg/graphite/pr46404-1.c
  60c09687daa2372ca83269e437b82dd0  gcc/testsuite/gcc.dg/graphite/pr46404.c
  747e63862b908d53b29f972bd2a83df5  gcc/testsuite/gcc.dg/graphite/pr46761.c
  0bf96e68de24d5f523cb70c8126200f3  gcc/testsuite/gcc.dg/graphite/pr46924.c
! f9442fdd2416c6261814045723c89f0e  gcc/testsuite/gcc.dg/graphite/pr46966.c
  6ac2201f5ceaf1d669d875abfffae276  gcc/testsuite/gcc.dg/graphite/pr46970.c
  78520b60a1ee3851ffd28abd9cd2e62d  gcc/testsuite/gcc.dg/graphite/pr50561.c
  c09c7286c8fcd9cc08b18719c098cc60  gcc/testsuite/gcc.dg/graphite/pr54094.c
  fb5a862ce6ffbade0ae64b3575de6664  gcc/testsuite/gcc.dg/graphite/pr55022.c
! 16b9ffb71e6313c09e32f8d47736f438  gcc/testsuite/gcc.dg/graphite/pr59817-1.c
! 3ef979f48d76e0fd94ea3b71fc3510af  gcc/testsuite/gcc.dg/graphite/pr59817-2.c
! 60c6684ae0f8c1d5b794c4d512a928be  gcc/testsuite/gcc.dg/graphite/pr60740.c
! ad18eaa8675b607e46c69dadd60f3046  gcc/testsuite/gcc.dg/graphite/pr60785.c
  6150d5e041be59946db2b75f82e4f46f  gcc/testsuite/gcc.dg/graphite/pr60979.c
  e5e13dc4f70d9773a0b90afac2f3f91e  gcc/testsuite/gcc.dg/graphite/pr61929.c
  faf6b69a2235d495328d97b0f9cc2211  gcc/testsuite/gcc.dg/graphite/pr67984.c
  9fc60904267d3ac992ea9e7ecfbfd437  gcc/testsuite/gcc.dg/graphite/pr68428.c
  a825bd6587f1709cc3fee747b0c653d3  gcc/testsuite/gcc.dg/graphite/pr68493.c
! fcb23a2186f00ae1367496035b5bac60  gcc/testsuite/gcc.dg/graphite/pr68715-2.c
! fd7b0affebbc10ca908515fee90d7698  gcc/testsuite/gcc.dg/graphite/pr68715.c
  2a57d7ffc8c951ea6aa461ef92709d33  gcc/testsuite/gcc.dg/graphite/pr68756.c
  d3dfb56a0f3bbfc2db86996a63566796  gcc/testsuite/gcc.dg/graphite/pr68809-2.c
  f8f3d098512d881d68138c6f1e3a363f  gcc/testsuite/gcc.dg/graphite/pr68809.c
--- 30663,30690 ----
  135395ec651116498f4a676bbdee6dac  gcc/testsuite/gcc.dg/graphite/pr44391.c
  6ca42d295d20f847c7df5d4f3c1c5199  gcc/testsuite/gcc.dg/graphite/pr45297.c
  8a0871206fdf8792b4da75c6159e9ee3  gcc/testsuite/gcc.dg/graphite/pr46168.c
! a79eec09d1e39f7bd4de00e82d677ca0  gcc/testsuite/gcc.dg/graphite/pr46185.c
  19ba178bf23dca2a316a60d54bfa9b71  gcc/testsuite/gcc.dg/graphite/pr46215.c
  928f33c0a31f77cd10d7b7deb0ac96e8  gcc/testsuite/gcc.dg/graphite/pr46404-1.c
  60c09687daa2372ca83269e437b82dd0  gcc/testsuite/gcc.dg/graphite/pr46404.c
  747e63862b908d53b29f972bd2a83df5  gcc/testsuite/gcc.dg/graphite/pr46761.c
  0bf96e68de24d5f523cb70c8126200f3  gcc/testsuite/gcc.dg/graphite/pr46924.c
! 59a79a953044c10b22f47f5669e4c07d  gcc/testsuite/gcc.dg/graphite/pr46966.c
  6ac2201f5ceaf1d669d875abfffae276  gcc/testsuite/gcc.dg/graphite/pr46970.c
  78520b60a1ee3851ffd28abd9cd2e62d  gcc/testsuite/gcc.dg/graphite/pr50561.c
  c09c7286c8fcd9cc08b18719c098cc60  gcc/testsuite/gcc.dg/graphite/pr54094.c
  fb5a862ce6ffbade0ae64b3575de6664  gcc/testsuite/gcc.dg/graphite/pr55022.c
! ba33558a594322b3243de2620cad187a  gcc/testsuite/gcc.dg/graphite/pr59817-1.c
! cdb8850c9bdbda8cb1fffbe08d4ab739  gcc/testsuite/gcc.dg/graphite/pr59817-2.c
! 376d8453d47ae4c5cfae57de38679c7d  gcc/testsuite/gcc.dg/graphite/pr60740.c
! 9cb591bc1d9ea9bbe792042c597a5fb3  gcc/testsuite/gcc.dg/graphite/pr60785.c
  6150d5e041be59946db2b75f82e4f46f  gcc/testsuite/gcc.dg/graphite/pr60979.c
  e5e13dc4f70d9773a0b90afac2f3f91e  gcc/testsuite/gcc.dg/graphite/pr61929.c
  faf6b69a2235d495328d97b0f9cc2211  gcc/testsuite/gcc.dg/graphite/pr67984.c
  9fc60904267d3ac992ea9e7ecfbfd437  gcc/testsuite/gcc.dg/graphite/pr68428.c
  a825bd6587f1709cc3fee747b0c653d3  gcc/testsuite/gcc.dg/graphite/pr68493.c
! a3fba7401fd03bec9962f29233c96b2b  gcc/testsuite/gcc.dg/graphite/pr68715-2.c
! b26f7de252031b9edf935db3a43459ad  gcc/testsuite/gcc.dg/graphite/pr68715.c
  2a57d7ffc8c951ea6aa461ef92709d33  gcc/testsuite/gcc.dg/graphite/pr68756.c
  d3dfb56a0f3bbfc2db86996a63566796  gcc/testsuite/gcc.dg/graphite/pr68809-2.c
  f8f3d098512d881d68138c6f1e3a363f  gcc/testsuite/gcc.dg/graphite/pr68809.c
*************** d0f22c16c5fac5ae8f190b3564aba97d  gcc/te
*** 29383,29400 ****
  cbc1d72a5a486c20f3b581d86ceb6480  gcc/testsuite/gcc.dg/graphite/pr69067.c
  47d652714c7a00602400f743b5e3c11c  gcc/testsuite/gcc.dg/graphite/pr69068.c
  4e7f8240209ca1b787c57a784dd3ab73  gcc/testsuite/gcc.dg/graphite/pr69292.c
  4291fea3d27e2dfa567eac5cd625cee2  gcc/testsuite/gcc.dg/graphite/pr69823.c
! 469d8e302d82650a54a8f0b48adb251a  gcc/testsuite/gcc.dg/graphite/pr70045.c
  187adff90265612446489b184d1ca625  gcc/testsuite/gcc.dg/graphite/pr70956.c
  556528d3765256e3d07d6a463f3541a3  gcc/testsuite/gcc.dg/graphite/pr71575-1.c
  636c2aead02ee928a7ad79bdab38cbb3  gcc/testsuite/gcc.dg/graphite/pr71575-2.c
  951125fc2ea749b7c486d1196c946e86  gcc/testsuite/gcc.dg/graphite/pr71824-2.c
  ac3c3d116a327df3d3173302cb1a531d  gcc/testsuite/gcc.dg/graphite/pr71824-3.c
  febbd295db57a2123e78312360a0adee  gcc/testsuite/gcc.dg/graphite/pr71824.c
  1b9515edc4478a8ec28b75c7088351fc  gcc/testsuite/gcc.dg/graphite/pr79977.c
  bb10feccbec2eee90b555fb13034016d  gcc/testsuite/gcc.dg/graphite/pr80167.c
  33c3065b57699d5f72a22e77ad90ad1b  gcc/testsuite/gcc.dg/graphite/pr80906.c
! 16574d3df752f79e2361bed11b712e31  gcc/testsuite/gcc.dg/graphite/run-id-1.c
  69c11dc302a921c92977db519167bec1  gcc/testsuite/gcc.dg/graphite/run-id-2.c
  84a75a861553ce658d85018a3ced0a6b  gcc/testsuite/gcc.dg/graphite/run-id-3.c
  0ef2120f99b756db4c3840219fb2dba8  gcc/testsuite/gcc.dg/graphite/run-id-4.c
--- 30693,30748 ----
  cbc1d72a5a486c20f3b581d86ceb6480  gcc/testsuite/gcc.dg/graphite/pr69067.c
  47d652714c7a00602400f743b5e3c11c  gcc/testsuite/gcc.dg/graphite/pr69068.c
  4e7f8240209ca1b787c57a784dd3ab73  gcc/testsuite/gcc.dg/graphite/pr69292.c
+ d2ff94204b89f80044a5d3a9f0ab8370  gcc/testsuite/gcc.dg/graphite/pr69728.c
  4291fea3d27e2dfa567eac5cd625cee2  gcc/testsuite/gcc.dg/graphite/pr69823.c
! 18e2e6ad5faaa133fc0d9a3e341584de  gcc/testsuite/gcc.dg/graphite/pr70045.c
  187adff90265612446489b184d1ca625  gcc/testsuite/gcc.dg/graphite/pr70956.c
  556528d3765256e3d07d6a463f3541a3  gcc/testsuite/gcc.dg/graphite/pr71575-1.c
  636c2aead02ee928a7ad79bdab38cbb3  gcc/testsuite/gcc.dg/graphite/pr71575-2.c
  951125fc2ea749b7c486d1196c946e86  gcc/testsuite/gcc.dg/graphite/pr71824-2.c
  ac3c3d116a327df3d3173302cb1a531d  gcc/testsuite/gcc.dg/graphite/pr71824-3.c
  febbd295db57a2123e78312360a0adee  gcc/testsuite/gcc.dg/graphite/pr71824.c
+ 22f24041140d170db56a21941b799321  gcc/testsuite/gcc.dg/graphite/pr77362.c
+ 2161220c01e3179508cd4bd2856c812d  gcc/testsuite/gcc.dg/graphite/pr79483.c
+ 89938738167ab0285c81a5bdb4ff79ff  gcc/testsuite/gcc.dg/graphite/pr79622.c
  1b9515edc4478a8ec28b75c7088351fc  gcc/testsuite/gcc.dg/graphite/pr79977.c
  bb10feccbec2eee90b555fb13034016d  gcc/testsuite/gcc.dg/graphite/pr80167.c
  33c3065b57699d5f72a22e77ad90ad1b  gcc/testsuite/gcc.dg/graphite/pr80906.c
! 01a1ab55635318d27ef9e417be3a140e  gcc/testsuite/gcc.dg/graphite/pr81090.c
! dc541d162565e09b6f0c2a1cea550fcc  gcc/testsuite/gcc.dg/graphite/pr81373-2.c
! c6f4655fa3f919cd428a28da6f6d6344  gcc/testsuite/gcc.dg/graphite/pr81373.c
! a4b3997fc00938a70076940fe584e38d  gcc/testsuite/gcc.dg/graphite/pr81945.c
! 6d34e082220270cf9df1da8c56597cb0  gcc/testsuite/gcc.dg/graphite/pr82321.c
! 5060df7ad4bb5d99d1b6824636df39c2  gcc/testsuite/gcc.dg/graphite/pr82355.c
! f334f02e33094960cb4891b13f2bb292  gcc/testsuite/gcc.dg/graphite/pr82421.c
! b349f414c0b090ee6461642c8314b56b  gcc/testsuite/gcc.dg/graphite/pr82422.c
! 65cf1fa23f588f761924d45852b7e0d2  gcc/testsuite/gcc.dg/graphite/pr82451.c
! 7ea7c881e55349ffc9a754a9fd6c8fc6  gcc/testsuite/gcc.dg/graphite/pr82563.c
! e004fd21bc86acc1876389b0431918a7  gcc/testsuite/gcc.dg/graphite/pr82819.c
! 6f0c36f3b84d7338debf87ae774d07e3  gcc/testsuite/gcc.dg/graphite/pr83126.c
! d6780b3d6a515f2ee93c807cc6631918  gcc/testsuite/gcc.dg/graphite/pr83176.c
! 737461a2e4b8264dcfe480124972dae0  gcc/testsuite/gcc.dg/graphite/pr83238.c
! b680cfabec106d470642616df04bac85  gcc/testsuite/gcc.dg/graphite/pr83255.c
! 886eab3244a6959e001f0e4693cfa48c  gcc/testsuite/gcc.dg/graphite/pr83277.c
! c4845bc1ca4ea3cad86fbd2f461d19c6  gcc/testsuite/gcc.dg/graphite/pr83359.c
! 46daf4c6566fd2ef17a305f612b33858  gcc/testsuite/gcc.dg/graphite/pr83385.c
! d22d9a6fcdd3d8c99e07346b1b87caee  gcc/testsuite/gcc.dg/graphite/pr83435.c
! 83b6df1c0acc006939aad88e38883f93  gcc/testsuite/gcc.dg/graphite/pr83563.c
! c181f2c788a406da2394c0f874361633  gcc/testsuite/gcc.dg/graphite/pr83572.c
! 6b365bab9525ac031ca71537d4d144cd  gcc/testsuite/gcc.dg/graphite/pr83668.c
! 21ef634b864bdc91195f4299612c394b  gcc/testsuite/gcc.dg/graphite/pr83887.c
! 61aceb7bdc56d8b9ef78507a6f09b072  gcc/testsuite/gcc.dg/graphite/pr83963-2.c
! 970dea05b71f023ca9f3315dadca75db  gcc/testsuite/gcc.dg/graphite/pr83963.c
! 6fb28dfaa764e66737675479c8ccec36  gcc/testsuite/gcc.dg/graphite/pr84057.c
! 0746c75089b8341599f76c7a4da894fd  gcc/testsuite/gcc.dg/graphite/pr84204.c
! e4bac7462738ab8d278d608776888c3b  gcc/testsuite/gcc.dg/graphite/pr84205.c
! 48bbc6056c4d34e26535310c1c12e5ff  gcc/testsuite/gcc.dg/graphite/pr84399.c
! 7b0fb2256d6307296322f407ce587a00  gcc/testsuite/gcc.dg/graphite/pr84404.c
! 6e5ed82f12c16fde0ef98df0e521f12e  gcc/testsuite/gcc.dg/graphite/pr84552.c
! a3981933152f6a2099ff09aa69a4a6fb  gcc/testsuite/gcc.dg/graphite/pr84584.c
! 3c3767d497d0fe66a178d5052e3d15b4  gcc/testsuite/gcc.dg/graphite/pr84650.c
! 0cea30bb7921dbaa29a4c968ae1d435a  gcc/testsuite/gcc.dg/graphite/pr84872.c
! c5acb4eef5addd258e89e51e27d3b449  gcc/testsuite/gcc.dg/graphite/run-id-1.c
  69c11dc302a921c92977db519167bec1  gcc/testsuite/gcc.dg/graphite/run-id-2.c
  84a75a861553ce658d85018a3ced0a6b  gcc/testsuite/gcc.dg/graphite/run-id-3.c
  0ef2120f99b756db4c3840219fb2dba8  gcc/testsuite/gcc.dg/graphite/run-id-4.c
*************** bb10feccbec2eee90b555fb13034016d  gcc/te
*** 29403,29415 ****
  e9a658f5e5227ca939ba11864c1a5efc  gcc/testsuite/gcc.dg/graphite/run-id-pr42644.c
  2190e3f79f26515ff859a51120bf5414  gcc/testsuite/gcc.dg/graphite/run-id-pr46758.c
  f35ab23a4d1fb41603401e81eba12337  gcc/testsuite/gcc.dg/graphite/run-id-pr47593.c
! 4dbccf2162d6e403f4c41aec42427ec8  gcc/testsuite/gcc.dg/graphite/run-id-pr47653.c
  7c6f4f8cb215905863d8e874a7a2c43e  gcc/testsuite/gcc.dg/graphite/run-id-pr47654.c
! ff918707a6326e3ab25fa7ac37d58e90  gcc/testsuite/gcc.dg/graphite/run-id-pr67700-1.c
  302f358d1940ff3f3b9c4cb6a5419942  gcc/testsuite/gcc.dg/graphite/run-id-pr67700.c
  3124cf3ae6e2c557be44a7a5f1cd53e5  gcc/testsuite/gcc.dg/graphite/scop-0.c
  b8a8e9a579a178f192dad94a7db1ad55  gcc/testsuite/gcc.dg/graphite/scop-1.c
! 641a6a1ddfa8721ddd4a10eac6f8820e  gcc/testsuite/gcc.dg/graphite/scop-10.c
  c9f4dfeaab7d0ecb8f5011264f2aa329  gcc/testsuite/gcc.dg/graphite/scop-11.c
  4af23d707934bf22c47fccd9f406c0ee  gcc/testsuite/gcc.dg/graphite/scop-12.c
  57e687326742dfa66ba52aef199a8b33  gcc/testsuite/gcc.dg/graphite/scop-13.c
--- 30751,30763 ----
  e9a658f5e5227ca939ba11864c1a5efc  gcc/testsuite/gcc.dg/graphite/run-id-pr42644.c
  2190e3f79f26515ff859a51120bf5414  gcc/testsuite/gcc.dg/graphite/run-id-pr46758.c
  f35ab23a4d1fb41603401e81eba12337  gcc/testsuite/gcc.dg/graphite/run-id-pr47593.c
! 0141b35604562c60013ea25cde8d1a1d  gcc/testsuite/gcc.dg/graphite/run-id-pr47653.c
  7c6f4f8cb215905863d8e874a7a2c43e  gcc/testsuite/gcc.dg/graphite/run-id-pr47654.c
! 2c9f41bf419ed659910d15eadb71f1f5  gcc/testsuite/gcc.dg/graphite/run-id-pr67700-1.c
  302f358d1940ff3f3b9c4cb6a5419942  gcc/testsuite/gcc.dg/graphite/run-id-pr67700.c
  3124cf3ae6e2c557be44a7a5f1cd53e5  gcc/testsuite/gcc.dg/graphite/scop-0.c
  b8a8e9a579a178f192dad94a7db1ad55  gcc/testsuite/gcc.dg/graphite/scop-1.c
! 3ff9d76c9538baf9a24f816322d5f66a  gcc/testsuite/gcc.dg/graphite/scop-10.c
  c9f4dfeaab7d0ecb8f5011264f2aa329  gcc/testsuite/gcc.dg/graphite/scop-11.c
  4af23d707934bf22c47fccd9f406c0ee  gcc/testsuite/gcc.dg/graphite/scop-12.c
  57e687326742dfa66ba52aef199a8b33  gcc/testsuite/gcc.dg/graphite/scop-13.c
*************** c9e8998af64165292da0f348d0b87b58  gcc/te
*** 29424,29435 ****
  5f47ee25c45945e8fb64f2fc11ea3442  gcc/testsuite/gcc.dg/graphite/scop-21.c
  16c46a1e15469b82ce011a240cc853bc  gcc/testsuite/gcc.dg/graphite/scop-22.c
  b53f45865574ccabd59e1d656437b74c  gcc/testsuite/gcc.dg/graphite/scop-23.c
  44f99b16a0aa9674919373c67af38463  gcc/testsuite/gcc.dg/graphite/scop-3.c
  5365ddcb1104ea5919dea8441b2bf368  gcc/testsuite/gcc.dg/graphite/scop-4.c
  d2057cb4a30d57b0b93681004cdb79ee  gcc/testsuite/gcc.dg/graphite/scop-5.c
  874fd21b2e2e0d404cecb8209cfc4f87  gcc/testsuite/gcc.dg/graphite/scop-6.c
! cbb12b5962c83fb9ebf58c6b49ddc74c  gcc/testsuite/gcc.dg/graphite/scop-7.c
! 652320bf679e484a6cc1ae68a733d5c6  gcc/testsuite/gcc.dg/graphite/scop-8.c
  b3d56b3da4e691101723bce6337f11d3  gcc/testsuite/gcc.dg/graphite/scop-9.c
  d8b9b64c9519392df030c2b34fff3359  gcc/testsuite/gcc.dg/graphite/scop-dsyr2k-2.c
  2d41092b5ed6974babf28edde082db4a  gcc/testsuite/gcc.dg/graphite/scop-dsyr2k.c
--- 30772,30784 ----
  5f47ee25c45945e8fb64f2fc11ea3442  gcc/testsuite/gcc.dg/graphite/scop-21.c
  16c46a1e15469b82ce011a240cc853bc  gcc/testsuite/gcc.dg/graphite/scop-22.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
  5365ddcb1104ea5919dea8441b2bf368  gcc/testsuite/gcc.dg/graphite/scop-4.c
  d2057cb4a30d57b0b93681004cdb79ee  gcc/testsuite/gcc.dg/graphite/scop-5.c
  874fd21b2e2e0d404cecb8209cfc4f87  gcc/testsuite/gcc.dg/graphite/scop-6.c
! ff4b7cc1cf2f16be558f89f45c616975  gcc/testsuite/gcc.dg/graphite/scop-7.c
! b9ded35de97d4b9abc1fbae12723db62  gcc/testsuite/gcc.dg/graphite/scop-8.c
  b3d56b3da4e691101723bce6337f11d3  gcc/testsuite/gcc.dg/graphite/scop-9.c
  d8b9b64c9519392df030c2b34fff3359  gcc/testsuite/gcc.dg/graphite/scop-dsyr2k-2.c
  2d41092b5ed6974babf28edde082db4a  gcc/testsuite/gcc.dg/graphite/scop-dsyr2k.c
*************** fb88bff3a91f02990ffc525b1d2cc4b6  gcc/te
*** 29456,29462 ****
  6572d7b6a1c070b8e6c4fe22f6133e02  gcc/testsuite/gcc.dg/guality/example.c
  c2dbe29811bd94d5d243fab419e7cc46  gcc/testsuite/gcc.dg/guality/guality.c
  7d56787b5a8d1f6c7bc4e8a31ff177eb  gcc/testsuite/gcc.dg/guality/guality.exp
! 1aac28ad90a6f2abacaf4b003b1f2c15  gcc/testsuite/gcc.dg/guality/guality.h
  1acafa5b9d5aeba7e4788b85be32dc52  gcc/testsuite/gcc.dg/guality/inline-params.c
  b83ee9f3cf12c2745a999c635416f49b  gcc/testsuite/gcc.dg/guality/nrv-1.c
  eaa385c20377624a5edfaf054552a4f4  gcc/testsuite/gcc.dg/guality/param-1.c
--- 30805,30812 ----
  6572d7b6a1c070b8e6c4fe22f6133e02  gcc/testsuite/gcc.dg/guality/example.c
  c2dbe29811bd94d5d243fab419e7cc46  gcc/testsuite/gcc.dg/guality/guality.c
  7d56787b5a8d1f6c7bc4e8a31ff177eb  gcc/testsuite/gcc.dg/guality/guality.exp
! 0db8a1eda933532326f437eaca0f0fb6  gcc/testsuite/gcc.dg/guality/guality.h
! 2d9c26760bf9d33b3f102b5e17c22c93  gcc/testsuite/gcc.dg/guality/inline-params-2.c
  1acafa5b9d5aeba7e4788b85be32dc52  gcc/testsuite/gcc.dg/guality/inline-params.c
  b83ee9f3cf12c2745a999c635416f49b  gcc/testsuite/gcc.dg/guality/nrv-1.c
  eaa385c20377624a5edfaf054552a4f4  gcc/testsuite/gcc.dg/guality/param-1.c
*************** bc96d3d7a369ee1d75a9841b80312226  gcc/te
*** 29464,29469 ****
--- 30814,30821 ----
  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
+ 91c528fa3ca63dee1e35b7c6d02cd258  gcc/testsuite/gcc.dg/guality/pr25967-1.c
+ fa9ed629eec13dc2cd77fec24ea82b3c  gcc/testsuite/gcc.dg/guality/pr25967-2.c
  19bacc1e91869a8697eb548fb674e517  gcc/testsuite/gcc.dg/guality/pr36728-1.c
  15b728fbd163d9aa4e4d3a41ff5d237c  gcc/testsuite/gcc.dg/guality/pr36728-2.c
  3a0a4f52233f47c7abff4081856aa824  gcc/testsuite/gcc.dg/guality/pr36728-3.c
*************** d9eb2458082dd04e5fd06a17d21f8063  gcc/te
*** 29499,29505 ****
  1499003eafd486638666bf7a7c8fa0c5  gcc/testsuite/gcc.dg/guality/pr54693-2.c
  563ea1cb8025ea86023e39ea090d9a36  gcc/testsuite/gcc.dg/guality/pr54693.c
  5ef31827dab5cc29890ac6e085b38794  gcc/testsuite/gcc.dg/guality/pr54796.c
! 7d768d0d9333a284f94a1c58a0221d62  gcc/testsuite/gcc.dg/guality/pr54970.c
  0806241ec48af974aff7b61707c11916  gcc/testsuite/gcc.dg/guality/pr56154-1.c
  f2e11607d04914713628932840c715c5  gcc/testsuite/gcc.dg/guality/pr56154-2.c
  93af310cf109bfc0389356d204c56ae4  gcc/testsuite/gcc.dg/guality/pr56154-3.c
--- 30851,30857 ----
  1499003eafd486638666bf7a7c8fa0c5  gcc/testsuite/gcc.dg/guality/pr54693-2.c
  563ea1cb8025ea86023e39ea090d9a36  gcc/testsuite/gcc.dg/guality/pr54693.c
  5ef31827dab5cc29890ac6e085b38794  gcc/testsuite/gcc.dg/guality/pr54796.c
! e6a95cb67a731b87b58f31f3f0f078f6  gcc/testsuite/gcc.dg/guality/pr54970.c
  0806241ec48af974aff7b61707c11916  gcc/testsuite/gcc.dg/guality/pr56154-1.c
  f2e11607d04914713628932840c715c5  gcc/testsuite/gcc.dg/guality/pr56154-2.c
  93af310cf109bfc0389356d204c56ae4  gcc/testsuite/gcc.dg/guality/pr56154-3.c
*************** e7dd4b85c878db0844a2af69bc853d37  gcc/te
*** 29513,29519 ****
  9f6c7f7929224c0a1ec9cb2ff4568296  gcc/testsuite/gcc.dg/guality/pr59776.c
  835fde6d6312ffd1b474991dd006c97b  gcc/testsuite/gcc.dg/guality/pr63300-const-volatile.c
  570b493c8f254992efbae5fc7a9dfb62  gcc/testsuite/gcc.dg/guality/pr67192.c
! d956a0ed10141133229c3dbc71aa6ecc  gcc/testsuite/gcc.dg/guality/pr68037-1.c
  db1720caaff79a0684d94be88f9e0d69  gcc/testsuite/gcc.dg/guality/pr68037-2.c
  28ee863461f68a968dc0f6c489f4f0d0  gcc/testsuite/gcc.dg/guality/pr68037-3.c
  af85c125b695e522f507c77ef611d723  gcc/testsuite/gcc.dg/guality/pr68860-1.c
--- 30865,30871 ----
  9f6c7f7929224c0a1ec9cb2ff4568296  gcc/testsuite/gcc.dg/guality/pr59776.c
  835fde6d6312ffd1b474991dd006c97b  gcc/testsuite/gcc.dg/guality/pr63300-const-volatile.c
  570b493c8f254992efbae5fc7a9dfb62  gcc/testsuite/gcc.dg/guality/pr67192.c
! 6f9f612c16ed980a7a97f6d09a05b6e1  gcc/testsuite/gcc.dg/guality/pr68037-1.c
  db1720caaff79a0684d94be88f9e0d69  gcc/testsuite/gcc.dg/guality/pr68037-2.c
  28ee863461f68a968dc0f6c489f4f0d0  gcc/testsuite/gcc.dg/guality/pr68037-3.c
  af85c125b695e522f507c77ef611d723  gcc/testsuite/gcc.dg/guality/pr68860-1.c
*************** f46dce055fca6bcb88a60d11a0bb710b  gcc/te
*** 29555,29561 ****
  3fcd24000493dccbffcab8d7f571db16  gcc/testsuite/gcc.dg/ifcvt-1.c
  788cdc139607df186471194c57393d9b  gcc/testsuite/gcc.dg/ifcvt-2.c
  e9f9e5e070c0fd51913bc50fa8ee6cdc  gcc/testsuite/gcc.dg/ifcvt-3.c
! ab556c7172a3374657aa07d0bfdc156f  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
--- 30907,30913 ----
  3fcd24000493dccbffcab8d7f571db16  gcc/testsuite/gcc.dg/ifcvt-1.c
  788cdc139607df186471194c57393d9b  gcc/testsuite/gcc.dg/ifcvt-2.c
  e9f9e5e070c0fd51913bc50fa8ee6cdc  gcc/testsuite/gcc.dg/ifcvt-3.c
! c16bb9ccbbaa9c719a7f7e43dc63acb3  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
*************** c460fe2da40fb69381d7504369496680  gcc/te
*** 29570,29576 ****
  3165455a01709c2ab187d6545d1536bf  gcc/testsuite/gcc.dg/init-bad-4.c
  a71e92846bd82c2874c9f530426a281d  gcc/testsuite/gcc.dg/init-bad-5.c
  2e51141597f07c1bdd0550bf6de3bd33  gcc/testsuite/gcc.dg/init-bad-6.c
! 3c34cfa2f7665caebf05bde65572f611  gcc/testsuite/gcc.dg/init-bad-7.c
  39442208547e17b3f7d07ea577e8469d  gcc/testsuite/gcc.dg/init-bad-8.c
  1441a104797d89a001ddeeb4e7ac0396  gcc/testsuite/gcc.dg/init-bad-9.c
  68e3a2449e9e301b5cc216c65cec9c8e  gcc/testsuite/gcc.dg/init-desig-obs-1.c
--- 30922,30928 ----
  3165455a01709c2ab187d6545d1536bf  gcc/testsuite/gcc.dg/init-bad-4.c
  a71e92846bd82c2874c9f530426a281d  gcc/testsuite/gcc.dg/init-bad-5.c
  2e51141597f07c1bdd0550bf6de3bd33  gcc/testsuite/gcc.dg/init-bad-6.c
! 5d47eda03517b91276c1eeb0c4ee983d  gcc/testsuite/gcc.dg/init-bad-7.c
  39442208547e17b3f7d07ea577e8469d  gcc/testsuite/gcc.dg/init-bad-8.c
  1441a104797d89a001ddeeb4e7ac0396  gcc/testsuite/gcc.dg/init-bad-9.c
  68e3a2449e9e301b5cc216c65cec9c8e  gcc/testsuite/gcc.dg/init-desig-obs-1.c
*************** efed4766878640e3953cf4a8272fe4bf  gcc/te
*** 29581,29587 ****
  90817e9557235af860d367897aafa042  gcc/testsuite/gcc.dg/init-empty-3.c
  22b16e07a96d1fc14440515466c26af1  gcc/testsuite/gcc.dg/init-excess-1.c
  e469f076692f924b2e1d46714a1056b3  gcc/testsuite/gcc.dg/init-excess-2.c
! 5ebce704ee478f9b84478c2522ad2954  gcc/testsuite/gcc.dg/init-string-1.c
  82229a54386faefae6a5da00d0dc0e97  gcc/testsuite/gcc.dg/init-string-2.c
  09d7ab46368a3c67e84d62f415b75a88  gcc/testsuite/gcc.dg/init-undef-1.c
  1835d6783e921e7fc1433afd4cb3f054  gcc/testsuite/gcc.dg/initpri1.c
--- 30933,30939 ----
  90817e9557235af860d367897aafa042  gcc/testsuite/gcc.dg/init-empty-3.c
  22b16e07a96d1fc14440515466c26af1  gcc/testsuite/gcc.dg/init-excess-1.c
  e469f076692f924b2e1d46714a1056b3  gcc/testsuite/gcc.dg/init-excess-2.c
! 4e1a8c3a4cee0ecd12863946cb8e2c1b  gcc/testsuite/gcc.dg/init-string-1.c
  82229a54386faefae6a5da00d0dc0e97  gcc/testsuite/gcc.dg/init-string-2.c
  09d7ab46368a3c67e84d62f415b75a88  gcc/testsuite/gcc.dg/init-undef-1.c
  1835d6783e921e7fc1433afd4cb3f054  gcc/testsuite/gcc.dg/initpri1.c
*************** a481d0a49a4bf2aa98254e8df226bcd5  gcc/te
*** 29643,29649 ****
  ee8131c6a8c9753b56fee8c390b0317c  gcc/testsuite/gcc.dg/ipa/PR64550.c
  60361af977014e7bcbcbd7f689d078ba  gcc/testsuite/gcc.dg/ipa/PR64559.c
  484329c6f176bf519f41e9257ff4adda  gcc/testsuite/gcc.dg/ipa/PR65282.c
! ae196efd4744b9b37fb15c9595c2d193  gcc/testsuite/gcc.dg/ipa/ctor-empty-1.c
  6438286ac73aa139024f31997ab14db7  gcc/testsuite/gcc.dg/ipa/iinline-1.c
  8c71eef392227cf4fbf71b2219f5af59  gcc/testsuite/gcc.dg/ipa/iinline-2.c
  750701c08c3f9027b97d19ca317ddf8b  gcc/testsuite/gcc.dg/ipa/iinline-3.c
--- 30995,31001 ----
  ee8131c6a8c9753b56fee8c390b0317c  gcc/testsuite/gcc.dg/ipa/PR64550.c
  60361af977014e7bcbcbd7f689d078ba  gcc/testsuite/gcc.dg/ipa/PR64559.c
  484329c6f176bf519f41e9257ff4adda  gcc/testsuite/gcc.dg/ipa/PR65282.c
! 57e1f16c97d295b03f38be462f42558e  gcc/testsuite/gcc.dg/ipa/ctor-empty-1.c
  6438286ac73aa139024f31997ab14db7  gcc/testsuite/gcc.dg/ipa/iinline-1.c
  8c71eef392227cf4fbf71b2219f5af59  gcc/testsuite/gcc.dg/ipa/iinline-2.c
  750701c08c3f9027b97d19ca317ddf8b  gcc/testsuite/gcc.dg/ipa/iinline-3.c
*************** c7f0626e05751d9c20b2246acd8fee16  gcc/te
*** 29654,29671 ****
  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
! c2ff345be351e4c4674048b246bd689e  gcc/testsuite/gcc.dg/ipa/inline-1.c
! c9cda71865347d0093f4b9dd98467ae7  gcc/testsuite/gcc.dg/ipa/inline-2.c
! 51c9222ad59bec9ec2ea77e8fbab9873  gcc/testsuite/gcc.dg/ipa/inline-3.c
  738419508748d1eb7ce2c5ad8f24eaa6  gcc/testsuite/gcc.dg/ipa/inline-4.c
! 9e96259ac6adbcd900df0d59a29efeac  gcc/testsuite/gcc.dg/ipa/inline-5.c
  77b0b740de49bbf357d4e1d97ac0d440  gcc/testsuite/gcc.dg/ipa/inline-6.c
  efa67429eb48a070d700fb37a2a007d0  gcc/testsuite/gcc.dg/ipa/inline-7.c
  c77ea3cd437715ba086bd547a0cd3e3d  gcc/testsuite/gcc.dg/ipa/inline-8.c
  ecd8ef7af1e453fe86acc39a6f46ed5e  gcc/testsuite/gcc.dg/ipa/inlinehint-1.c
  c67f7d13d068efa64db24e8e8dc7a1f8  gcc/testsuite/gcc.dg/ipa/inlinehint-2.c
  986d05677bd9d6899662c3d7abcc4d90  gcc/testsuite/gcc.dg/ipa/inlinehint-3.c
! 1a286c308d8ae8537446176064843877  gcc/testsuite/gcc.dg/ipa/inlinehint-4.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
--- 31006,31023 ----
  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
! 484a33ceda75623f14c31dc5c0cb5e1d  gcc/testsuite/gcc.dg/ipa/inline-2.c
! dbb9508e584dea250f29a4f07a0c7ada  gcc/testsuite/gcc.dg/ipa/inline-3.c
  738419508748d1eb7ce2c5ad8f24eaa6  gcc/testsuite/gcc.dg/ipa/inline-4.c
! 9bb0a2b102b0a468a762e09f797097d2  gcc/testsuite/gcc.dg/ipa/inline-5.c
  77b0b740de49bbf357d4e1d97ac0d440  gcc/testsuite/gcc.dg/ipa/inline-6.c
  efa67429eb48a070d700fb37a2a007d0  gcc/testsuite/gcc.dg/ipa/inline-7.c
  c77ea3cd437715ba086bd547a0cd3e3d  gcc/testsuite/gcc.dg/ipa/inline-8.c
  ecd8ef7af1e453fe86acc39a6f46ed5e  gcc/testsuite/gcc.dg/ipa/inlinehint-1.c
  c67f7d13d068efa64db24e8e8dc7a1f8  gcc/testsuite/gcc.dg/ipa/inlinehint-2.c
  986d05677bd9d6899662c3d7abcc4d90  gcc/testsuite/gcc.dg/ipa/inlinehint-3.c
! 84ea9b89b0bdcc451536f02a22c19898  gcc/testsuite/gcc.dg/ipa/inlinehint-4.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
*************** c6173ea10b589e0736f6a4e4b24aeae0  gcc/te
*** 29722,29727 ****
--- 31074,31080 ----
  def7e11a18eea4df779bd2605c1a040e  gcc/testsuite/gcc.dg/ipa/ipa-pta-15.c
  5dd668648d66c29bd065eca897a0c024  gcc/testsuite/gcc.dg/ipa/ipa-pta-16.c
  747c42ce05fc89e40631ca5673afc2ad  gcc/testsuite/gcc.dg/ipa/ipa-pta-17.c
+ 241e4142635d64eed70e6c902853f3da  gcc/testsuite/gcc.dg/ipa/ipa-pta-18.c
  1438127d87f33ded77db93c52113196c  gcc/testsuite/gcc.dg/ipa/ipa-pta-2.c
  f18e2b83422d97d0681e4e9f878b894f  gcc/testsuite/gcc.dg/ipa/ipa-pta-3.c
  428646087bfd39084e49404521aed98b  gcc/testsuite/gcc.dg/ipa/ipa-pta-4.c
*************** a174f70c19f257c6429f70c5c49a0481  gcc/te
*** 29732,29737 ****
--- 31085,31091 ----
  62f8de7dbeb66432037449dc1714dace  gcc/testsuite/gcc.dg/ipa/ipa-pta-9.c
  8ed2dab613ce4f3c4c0cb01a483c1738  gcc/testsuite/gcc.dg/ipa/ipa-sra-1.c
  86e110e48ae0f0ecc2142cf4cf06369f  gcc/testsuite/gcc.dg/ipa/ipa-sra-10.c
+ c83a4456017ed8bbb319b7428e59ea9a  gcc/testsuite/gcc.dg/ipa/ipa-sra-11.c
  aa006248f33ec289a340678009a86660  gcc/testsuite/gcc.dg/ipa/ipa-sra-2.c
  bd99622d44e2a0a1f43f3b979bc34799  gcc/testsuite/gcc.dg/ipa/ipa-sra-3.c
  7b70070de9afec4d1964bd4f00d48fab  gcc/testsuite/gcc.dg/ipa/ipa-sra-4.c
*************** d8ab21cdb1f1d4de584849b460b0544f  gcc/te
*** 29740,29750 ****
  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
! a2719aca5c9f1bd6bbebaeda48f0e9c4  gcc/testsuite/gcc.dg/ipa/ipa.exp
  be5489532ad8117e567e1ea5c8ad4b6a  gcc/testsuite/gcc.dg/ipa/ipacost-1.c
  7e39b7bf24aea47667f0e5decf53bf25  gcc/testsuite/gcc.dg/ipa/ipacost-2.c
  75c8c0eaae305cb4fd81a5fbd3748ba4  gcc/testsuite/gcc.dg/ipa/ipcp-1.c
! c6293a456f4127b16f05d471e3cecb9e  gcc/testsuite/gcc.dg/ipa/ipcp-2.c
  2b28e86ef61a2946185db1daab03a644  gcc/testsuite/gcc.dg/ipa/ipcp-3.c
  5204e6cd28c18692d9b78b4d46f02179  gcc/testsuite/gcc.dg/ipa/ipcp-4.c
  869bd19c205f2ccf580f8b640709d232  gcc/testsuite/gcc.dg/ipa/ipcp-agg-1.c
--- 31094,31104 ----
  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
! 726139a792c6656eb573ac8f818e03c2  gcc/testsuite/gcc.dg/ipa/ipa.exp
  be5489532ad8117e567e1ea5c8ad4b6a  gcc/testsuite/gcc.dg/ipa/ipacost-1.c
  7e39b7bf24aea47667f0e5decf53bf25  gcc/testsuite/gcc.dg/ipa/ipacost-2.c
  75c8c0eaae305cb4fd81a5fbd3748ba4  gcc/testsuite/gcc.dg/ipa/ipcp-1.c
! 08cc0f0e647e9f82d05fad9ac3944635  gcc/testsuite/gcc.dg/ipa/ipcp-2.c
  2b28e86ef61a2946185db1daab03a644  gcc/testsuite/gcc.dg/ipa/ipcp-3.c
  5204e6cd28c18692d9b78b4d46f02179  gcc/testsuite/gcc.dg/ipa/ipcp-4.c
  869bd19c205f2ccf580f8b640709d232  gcc/testsuite/gcc.dg/ipa/ipcp-agg-1.c
*************** b30637ee2dfddd2f33e1f6f41de2efa3  gcc/te
*** 29757,29769 ****
  f9f38eebb7f74ce6b59c6bc289bb45ef  gcc/testsuite/gcc.dg/ipa/ipcp-agg-8.c
  bbcf84a59389f053c41b75a37e6b8f43  gcc/testsuite/gcc.dg/ipa/ipcp-agg-9.c
  24a9ebe968c2d5aad84520657228eb49  gcc/testsuite/gcc.dg/ipa/ipcp-cstagg-1.c
! 30a33f46edc4bbfdaed7fe9b66df7d91  gcc/testsuite/gcc.dg/ipa/ipcp-cstagg-2.c
  10ce49b0da2d906c60c994881d2f1e6d  gcc/testsuite/gcc.dg/ipa/ipcp-cstagg-3.c
  adfd4fd9a5f3bcdd08a76458f2286a64  gcc/testsuite/gcc.dg/ipa/ipcp-cstagg-4.c
  6338363d06028cff9b3b592e2478b0f1  gcc/testsuite/gcc.dg/ipa/ipcp-cstagg-5.c
  b0e6976d3728dfc604f80cfaf17a5150  gcc/testsuite/gcc.dg/ipa/ipcp-cstagg-6.c
  0cdbda40d5cdc9ac180ed340d948e96b  gcc/testsuite/gcc.dg/ipa/ipcp-cstagg-7.c
  bbdc28908094ef1ce181532afaf1b2dc  gcc/testsuite/gcc.dg/ipa/ipcp-ii-1.c
  80f4453150e9ddcd8976703b7c6ee1f6  gcc/testsuite/gcc.dg/ipa/noclone-1.c
  40bd41302666d56c4edf7330db97920e  gcc/testsuite/gcc.dg/ipa/pr42706.c
  e4887053c792f4f78b03804c148839ce  gcc/testsuite/gcc.dg/ipa/pr45644.c
--- 31111,31124 ----
  f9f38eebb7f74ce6b59c6bc289bb45ef  gcc/testsuite/gcc.dg/ipa/ipcp-agg-8.c
  bbcf84a59389f053c41b75a37e6b8f43  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
  10ce49b0da2d906c60c994881d2f1e6d  gcc/testsuite/gcc.dg/ipa/ipcp-cstagg-3.c
  adfd4fd9a5f3bcdd08a76458f2286a64  gcc/testsuite/gcc.dg/ipa/ipcp-cstagg-4.c
  6338363d06028cff9b3b592e2478b0f1  gcc/testsuite/gcc.dg/ipa/ipcp-cstagg-5.c
  b0e6976d3728dfc604f80cfaf17a5150  gcc/testsuite/gcc.dg/ipa/ipcp-cstagg-6.c
  0cdbda40d5cdc9ac180ed340d948e96b  gcc/testsuite/gcc.dg/ipa/ipcp-cstagg-7.c
  bbdc28908094ef1ce181532afaf1b2dc  gcc/testsuite/gcc.dg/ipa/ipcp-ii-1.c
+ 69364376b4034b0e22099f8f23273a79  gcc/testsuite/gcc.dg/ipa/ipcp-self-recursion-1.c
  80f4453150e9ddcd8976703b7c6ee1f6  gcc/testsuite/gcc.dg/ipa/noclone-1.c
  40bd41302666d56c4edf7330db97920e  gcc/testsuite/gcc.dg/ipa/pr42706.c
  e4887053c792f4f78b03804c148839ce  gcc/testsuite/gcc.dg/ipa/pr45644.c
*************** d7c1d9b981bf01c33fdef55aa1f7d528  gcc/te
*** 29799,29807 ****
  ecd0d8d104e56038bc3afff3785c57ef  gcc/testsuite/gcc.dg/ipa/pr77653.c
  3ecd453979b819958779a6a8eea071ce  gcc/testsuite/gcc.dg/ipa/pr78121.c
  fa8ddbcc7285d68bc45e806fa10c5aa5  gcc/testsuite/gcc.dg/ipa/pr80104.c
! e7fc4be7576352c4cd0c02e049c49640  gcc/testsuite/gcc.dg/ipa/pr81696.c
  e69e8e71bc18aee250eb3863dee58b57  gcc/testsuite/gcc.dg/ipa/pr82001.c
  c5a982844b74e3d73d7511fd2cb5ce36  gcc/testsuite/gcc.dg/ipa/pr82808.c
  8294157f7e95bf0310146944166a33f7  gcc/testsuite/gcc.dg/ipa/propalign-1.c
  60d5533330395d9f80d7f318856ba6ab  gcc/testsuite/gcc.dg/ipa/propalign-2.c
  b3c9ac7648ec0372964326c8ec24be99  gcc/testsuite/gcc.dg/ipa/propalign-3.c
--- 31154,31165 ----
  ecd0d8d104e56038bc3afff3785c57ef  gcc/testsuite/gcc.dg/ipa/pr77653.c
  3ecd453979b819958779a6a8eea071ce  gcc/testsuite/gcc.dg/ipa/pr78121.c
  fa8ddbcc7285d68bc45e806fa10c5aa5  gcc/testsuite/gcc.dg/ipa/pr80104.c
! a55e76e0d9a9ab759aa659b874d72f39  gcc/testsuite/gcc.dg/ipa/pr81520.c
! 9dab8c515b418d1308f580ebaa505cc5  gcc/testsuite/gcc.dg/ipa/pr81696.c
  e69e8e71bc18aee250eb3863dee58b57  gcc/testsuite/gcc.dg/ipa/pr82001.c
  c5a982844b74e3d73d7511fd2cb5ce36  gcc/testsuite/gcc.dg/ipa/pr82808.c
+ 6cdfa7edc9fa33fed27201e42af99e35  gcc/testsuite/gcc.dg/ipa/pr83594.c
+ 942a1d0bcd560b7a982f679a46d990a3  gcc/testsuite/gcc.dg/ipa/pr85449.c
  8294157f7e95bf0310146944166a33f7  gcc/testsuite/gcc.dg/ipa/propalign-1.c
  60d5533330395d9f80d7f318856ba6ab  gcc/testsuite/gcc.dg/ipa/propalign-2.c
  b3c9ac7648ec0372964326c8ec24be99  gcc/testsuite/gcc.dg/ipa/propalign-3.c
*************** fe61754d682bd3ea724a03bb59912cfc  gcc/te
*** 29810,29815 ****
--- 31168,31176 ----
  3a6c3874c5a3d00f0257c8849444f1fa  gcc/testsuite/gcc.dg/ipa/propbits-1.c
  8e1d9af884140b1542f5fcba9ff86aec  gcc/testsuite/gcc.dg/ipa/propbits-2.c
  474330642cbec7b918c7e67faacb51b5  gcc/testsuite/gcc.dg/ipa/propbits-3.c
+ 53764c4928a983e50848eacaf0d2a0b0  gcc/testsuite/gcc.dg/ipa/propmalloc-1.c
+ 6b7dff8271a5f1d01d1e171225a1418e  gcc/testsuite/gcc.dg/ipa/propmalloc-2.c
+ 7f2d86486768eae78cd68adfdc9f7b77  gcc/testsuite/gcc.dg/ipa/propmalloc-3.c
  a2294abf11e375c8ac1371b83927e41c  gcc/testsuite/gcc.dg/ipa/pure-const-1.c
  1f165e75d721f80ecb86c192d412d78a  gcc/testsuite/gcc.dg/ipa/pure-const-2.c
  41c75241d4863185e9a7feee9e7afed9  gcc/testsuite/gcc.dg/ipa/pure-const-3.c
*************** b6308377d1570721ca56a6413d603c45  gcc/te
*** 29833,29840 ****
  8f5983946d28dca5853e89d0aa48b65d  gcc/testsuite/gcc.dg/kpice1.c
  03e31b5d79582fd6bb46bd25b73405ab  gcc/testsuite/gcc.dg/label-compound-stmt-1.c
  81db0a2d9b61fa43c4d2f3499202cde2  gcc/testsuite/gcc.dg/label-decl-1.c
! 8b9dc6d64089afa1bf77c534bc1c63fa  gcc/testsuite/gcc.dg/label-decl-2.c
! 67e47ff7f600b69fc1b0ea32c154cfef  gcc/testsuite/gcc.dg/label-decl-3.c
  c0fe1413425984add56a46f840b10f20  gcc/testsuite/gcc.dg/label-decl-4.c
  56e420e52ccd1e3a021dabcc09c5f22e  gcc/testsuite/gcc.dg/large-size-array-2.c
  823f4ba9fb91c6c6baa70aee8fc1a642  gcc/testsuite/gcc.dg/large-size-array-3.c
--- 31194,31201 ----
  8f5983946d28dca5853e89d0aa48b65d  gcc/testsuite/gcc.dg/kpice1.c
  03e31b5d79582fd6bb46bd25b73405ab  gcc/testsuite/gcc.dg/label-compound-stmt-1.c
  81db0a2d9b61fa43c4d2f3499202cde2  gcc/testsuite/gcc.dg/label-decl-1.c
! 71f64125807f2e31f69373e5a00b932f  gcc/testsuite/gcc.dg/label-decl-2.c
! 9f42468ab0e00ed45dd47c7abe682195  gcc/testsuite/gcc.dg/label-decl-3.c
  c0fe1413425984add56a46f840b10f20  gcc/testsuite/gcc.dg/label-decl-4.c
  56e420e52ccd1e3a021dabcc09c5f22e  gcc/testsuite/gcc.dg/large-size-array-2.c
  823f4ba9fb91c6c6baa70aee8fc1a642  gcc/testsuite/gcc.dg/large-size-array-3.c
*************** ffe4d747ae708d9b7c4aa0999dc0837a  gcc/te
*** 29853,29873 ****
  75d972130bc6b1cabc86fac849572e2d  gcc/testsuite/gcc.dg/long_branch.c
  bf870f767c6be672a0cfc990dd97f936  gcc/testsuite/gcc.dg/loop-1.c
  6b5237c8148a38f20728981213824d52  gcc/testsuite/gcc.dg/loop-2.c
! 91317891ff8eee4b875cee196934315b  gcc/testsuite/gcc.dg/loop-3.c
  bdd0de0807674c3312a2a9e4ff914e19  gcc/testsuite/gcc.dg/loop-4.c
  a73ede53a12274bacc5436575ebb14b9  gcc/testsuite/gcc.dg/loop-5.c
  46248b6e3d3fc518ebd99c80a4e3053d  gcc/testsuite/gcc.dg/loop-6.c
  81181e904e3cc9185df8b97ccf49c4fe  gcc/testsuite/gcc.dg/loop-7.c
! 3a8d4843b07a1088fe464b2d5ce23239  gcc/testsuite/gcc.dg/loop-8.c
  ad2fa27e155e0f90c26c4d258a7ab380  gcc/testsuite/gcc.dg/loop-9.c
! 88d19d3d730eeac3624913bcabaf2c3d  gcc/testsuite/gcc.dg/loop-invariant.c
  77d01b87345e303fc40f590c4f7e7785  gcc/testsuite/gcc.dg/loop-split.c
  b60fe46aa856c798d586607305c473f1  gcc/testsuite/gcc.dg/loop-unswitch-1.c
  5ed66fb5194e25fa3840d4db52f10b02  gcc/testsuite/gcc.dg/loop-unswitch-2.c
  5611e658293cef38c2f36b45c0ca3c60  gcc/testsuite/gcc.dg/loop-unswitch-3.c
  d8214078fcdabfbd9a9a03bbb8d148b6  gcc/testsuite/gcc.dg/loop-unswitch-4.c
  2d39752c79b0c0ea7239fce439c7994a  gcc/testsuite/gcc.dg/loop-unswitch-5.c
! febc89fbb0e58eee5a4ddc0ff6212156  gcc/testsuite/gcc.dg/lower-subreg-1.c
  678fb66feed3ab9d6e765b1d6810b843  gcc/testsuite/gcc.dg/lto/20080908_0.c
  c94f785256f1b68d319dcd3c9cff6a07  gcc/testsuite/gcc.dg/lto/20080917_0.c
  3ba1962566722e68ae1f749e89c3036c  gcc/testsuite/gcc.dg/lto/20080924_0.c
--- 31214,31235 ----
  75d972130bc6b1cabc86fac849572e2d  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
  bdd0de0807674c3312a2a9e4ff914e19  gcc/testsuite/gcc.dg/loop-4.c
  a73ede53a12274bacc5436575ebb14b9  gcc/testsuite/gcc.dg/loop-5.c
  46248b6e3d3fc518ebd99c80a4e3053d  gcc/testsuite/gcc.dg/loop-6.c
  81181e904e3cc9185df8b97ccf49c4fe  gcc/testsuite/gcc.dg/loop-7.c
! d54604ab54d2b32b2974b9a6afdad9fc  gcc/testsuite/gcc.dg/loop-8.c
  ad2fa27e155e0f90c26c4d258a7ab380  gcc/testsuite/gcc.dg/loop-9.c
! efe590d29d570b6d17bba7b2c21339db  gcc/testsuite/gcc.dg/loop-invariant.c
  77d01b87345e303fc40f590c4f7e7785  gcc/testsuite/gcc.dg/loop-split.c
  b60fe46aa856c798d586607305c473f1  gcc/testsuite/gcc.dg/loop-unswitch-1.c
  5ed66fb5194e25fa3840d4db52f10b02  gcc/testsuite/gcc.dg/loop-unswitch-2.c
  5611e658293cef38c2f36b45c0ca3c60  gcc/testsuite/gcc.dg/loop-unswitch-3.c
  d8214078fcdabfbd9a9a03bbb8d148b6  gcc/testsuite/gcc.dg/loop-unswitch-4.c
  2d39752c79b0c0ea7239fce439c7994a  gcc/testsuite/gcc.dg/loop-unswitch-5.c
! 3b1aa7ef8d777b78a7b496da073f9f14  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
  3ba1962566722e68ae1f749e89c3036c  gcc/testsuite/gcc.dg/lto/20080924_0.c
*************** e8665c65f2838a71a1625c215fc3cb1b  gcc/te
*** 29889,29895 ****
  abc6a18c0cf4137ac3616b430dbe2bf7  gcc/testsuite/gcc.dg/lto/20081120-2_1.c
  f56a0a6c25eb752941e3f230d5d8b6ed  gcc/testsuite/gcc.dg/lto/20081125_0.c
  2c2e6460511d56ed0e1bb9bb2b8cf8e4  gcc/testsuite/gcc.dg/lto/20081125_1.c
! b55773b0ee8e1bbc4dddf5b761172781  gcc/testsuite/gcc.dg/lto/20081126_0.c
  8c30c9f7a1f476a82507f88c619a2109  gcc/testsuite/gcc.dg/lto/20081201-1_0.c
  7ca039ab71adaca33dd287ae2e8074e0  gcc/testsuite/gcc.dg/lto/20081201-1_1.c
  20235798cc724c7f263ead69c1ebaf92  gcc/testsuite/gcc.dg/lto/20081201-1_2.c
--- 31251,31257 ----
  abc6a18c0cf4137ac3616b430dbe2bf7  gcc/testsuite/gcc.dg/lto/20081120-2_1.c
  f56a0a6c25eb752941e3f230d5d8b6ed  gcc/testsuite/gcc.dg/lto/20081125_0.c
  2c2e6460511d56ed0e1bb9bb2b8cf8e4  gcc/testsuite/gcc.dg/lto/20081125_1.c
! d25c41423e327c3c856a284bca0a598e  gcc/testsuite/gcc.dg/lto/20081126_0.c
  8c30c9f7a1f476a82507f88c619a2109  gcc/testsuite/gcc.dg/lto/20081201-1_0.c
  7ca039ab71adaca33dd287ae2e8074e0  gcc/testsuite/gcc.dg/lto/20081201-1_1.c
  20235798cc724c7f263ead69c1ebaf92  gcc/testsuite/gcc.dg/lto/20081201-1_2.c
*************** a6d38702f1b4b6a4dfc3fc0251fc96b5  gcc/te
*** 29901,29907 ****
  550527e7ab9d45409d2e41b110791286  gcc/testsuite/gcc.dg/lto/20081202-2_1.c
  e60cce2a3be747a69db8b65b8f0fbb20  gcc/testsuite/gcc.dg/lto/20081204-1_0.c
  e50e47906c1bd8ffda0eb174e5e3618f  gcc/testsuite/gcc.dg/lto/20081204-1_1.c
! 7eb3dd2a77e0ff6c2c142dd0a983687c  gcc/testsuite/gcc.dg/lto/20081204-2_0.c
  32fe7d3c8be4a8d6df2caece30b8ab01  gcc/testsuite/gcc.dg/lto/20081210-1_0.c
  2fd35b7d402b0a831534f1cc696b1d61  gcc/testsuite/gcc.dg/lto/20081212-1_0.c
  d01e029546f9af5f82e234a6a64ef08a  gcc/testsuite/gcc.dg/lto/20081222_0.c
--- 31263,31269 ----
  550527e7ab9d45409d2e41b110791286  gcc/testsuite/gcc.dg/lto/20081202-2_1.c
  e60cce2a3be747a69db8b65b8f0fbb20  gcc/testsuite/gcc.dg/lto/20081204-1_0.c
  e50e47906c1bd8ffda0eb174e5e3618f  gcc/testsuite/gcc.dg/lto/20081204-1_1.c
! b27a7a58d6dd8acdeb0c63564d3652a8  gcc/testsuite/gcc.dg/lto/20081204-2_0.c
  32fe7d3c8be4a8d6df2caece30b8ab01  gcc/testsuite/gcc.dg/lto/20081210-1_0.c
  2fd35b7d402b0a831534f1cc696b1d61  gcc/testsuite/gcc.dg/lto/20081212-1_0.c
  d01e029546f9af5f82e234a6a64ef08a  gcc/testsuite/gcc.dg/lto/20081222_0.c
*************** feec4d71cc50a3ba7c9552e049d53d98  gcc/te
*** 29914,29921 ****
  3fc9e9cc4eadd772e6c927fb748147ed  gcc/testsuite/gcc.dg/lto/20090120_0.c
  574f60ce80a8234224b1712ad0c6726e  gcc/testsuite/gcc.dg/lto/20090126-1_0.c
  8680ce7d5966034409e2067ee826f8c9  gcc/testsuite/gcc.dg/lto/20090126-2_0.c
! 5fea96f9b00eff62909d19224818a8ef  gcc/testsuite/gcc.dg/lto/20090206-1_0.c
! bc6301ff16a3483a712b3c39cc200888  gcc/testsuite/gcc.dg/lto/20090206-2_0.c
  3df87dbdf7d46fe753da0f0a26fd6b34  gcc/testsuite/gcc.dg/lto/20090210_0.c
  dd6480105aebea54180bb9df384fa7a0  gcc/testsuite/gcc.dg/lto/20090210_1.c
  4de0d8233f36366928ba3229da5069ca  gcc/testsuite/gcc.dg/lto/20090213_0.c
--- 31276,31283 ----
  3fc9e9cc4eadd772e6c927fb748147ed  gcc/testsuite/gcc.dg/lto/20090120_0.c
  574f60ce80a8234224b1712ad0c6726e  gcc/testsuite/gcc.dg/lto/20090126-1_0.c
  8680ce7d5966034409e2067ee826f8c9  gcc/testsuite/gcc.dg/lto/20090126-2_0.c
! d62a2c0bce89425fc1ad194503198c3f  gcc/testsuite/gcc.dg/lto/20090206-1_0.c
! 62bce2abb2b8df4408af9534d3a58afe  gcc/testsuite/gcc.dg/lto/20090206-2_0.c
  3df87dbdf7d46fe753da0f0a26fd6b34  gcc/testsuite/gcc.dg/lto/20090210_0.c
  dd6480105aebea54180bb9df384fa7a0  gcc/testsuite/gcc.dg/lto/20090210_1.c
  4de0d8233f36366928ba3229da5069ca  gcc/testsuite/gcc.dg/lto/20090213_0.c
*************** c5df0cb2c2204cfe14a4025ee26ecfb8  gcc/te
*** 29941,29947 ****
  0c4371fe1844c0bde0f255343f1fe6f2  gcc/testsuite/gcc.dg/lto/20090812_0.c
  ce81ea277f777645dabb04da77ed67e4  gcc/testsuite/gcc.dg/lto/20090812_1.c
  599ce30a5e32f6c7b91a6e6f275a5747  gcc/testsuite/gcc.dg/lto/20090914-1_0.c
! ffc51a7b4cb606501c2a70fbe8c0d3a5  gcc/testsuite/gcc.dg/lto/20090914-2_0.c
  d4db9ff42403a85f8ed0cbdae62e2185  gcc/testsuite/gcc.dg/lto/20091005-1_0.c
  2d8b3059d743ab941550263cdae127ee  gcc/testsuite/gcc.dg/lto/20091005-1_1.c
  cd83120ec879013b19aafcc5f838c047  gcc/testsuite/gcc.dg/lto/20091005-2_0.c
--- 31303,31309 ----
  0c4371fe1844c0bde0f255343f1fe6f2  gcc/testsuite/gcc.dg/lto/20090812_0.c
  ce81ea277f777645dabb04da77ed67e4  gcc/testsuite/gcc.dg/lto/20090812_1.c
  599ce30a5e32f6c7b91a6e6f275a5747  gcc/testsuite/gcc.dg/lto/20090914-1_0.c
! d7783b645e6bc9b7c12b777d3a0621d6  gcc/testsuite/gcc.dg/lto/20090914-2_0.c
  d4db9ff42403a85f8ed0cbdae62e2185  gcc/testsuite/gcc.dg/lto/20091005-1_0.c
  2d8b3059d743ab941550263cdae127ee  gcc/testsuite/gcc.dg/lto/20091005-1_1.c
  cd83120ec879013b19aafcc5f838c047  gcc/testsuite/gcc.dg/lto/20091005-2_0.c
*************** cd83120ec879013b19aafcc5f838c047  gcc/te
*** 29951,29958 ****
  b4339b390113a15f56bdeba41587958c  gcc/testsuite/gcc.dg/lto/20091006-2_1.c
  f26f4f4d9973dff3665201724f9dc4c4  gcc/testsuite/gcc.dg/lto/20091006-2_2.c
  87234eb3ecb50f3167fb4c131e2b2f36  gcc/testsuite/gcc.dg/lto/20091013-1_0.c
! 8f21160eb8adf2cae1fcbd9ebee6caea  gcc/testsuite/gcc.dg/lto/20091013-1_1.c
! c353b1287085ffdac677bbaa9fc5b214  gcc/testsuite/gcc.dg/lto/20091013-1_2.c
  f2a32fb0d43aa7e12aa4db0e7ceb8770  gcc/testsuite/gcc.dg/lto/20091014-1_0.c
  b17a35034f8d8b71d4ff52fd3bc358b5  gcc/testsuite/gcc.dg/lto/20091015-1_0.c
  d05ae72bc2da158ccd15c392b0755414  gcc/testsuite/gcc.dg/lto/20091015-1_1.c
--- 31313,31320 ----
  b4339b390113a15f56bdeba41587958c  gcc/testsuite/gcc.dg/lto/20091006-2_1.c
  f26f4f4d9973dff3665201724f9dc4c4  gcc/testsuite/gcc.dg/lto/20091006-2_2.c
  87234eb3ecb50f3167fb4c131e2b2f36  gcc/testsuite/gcc.dg/lto/20091013-1_0.c
! 1702a026ecec4ed934be177ea3ca214c  gcc/testsuite/gcc.dg/lto/20091013-1_1.c
! 38a38f2de2d97be3eea7327a77341c1d  gcc/testsuite/gcc.dg/lto/20091013-1_2.c
  f2a32fb0d43aa7e12aa4db0e7ceb8770  gcc/testsuite/gcc.dg/lto/20091014-1_0.c
  b17a35034f8d8b71d4ff52fd3bc358b5  gcc/testsuite/gcc.dg/lto/20091015-1_0.c
  d05ae72bc2da158ccd15c392b0755414  gcc/testsuite/gcc.dg/lto/20091015-1_1.c
*************** eedcbf093c135f1f9a6bb54d2c07b903  gcc/te
*** 29985,29991 ****
  f0f165a60b33c9179aea677bfa5a1d4d  gcc/testsuite/gcc.dg/lto/20100423-2_1.c
  b2a0b37b32bf80734edfa3995ab66546  gcc/testsuite/gcc.dg/lto/20100426_0.c
  ffc1048dc181062ec17ac5ce11020bf4  gcc/testsuite/gcc.dg/lto/20100430-1_0.c
! e7ec745545ed5ebeb3c75d16258215fe  gcc/testsuite/gcc.dg/lto/20100518_0.c
  f3fb4d904bd6fb62285dbf3f0187a411  gcc/testsuite/gcc.dg/lto/20100603-1_0.c
  8d591f006987f3ac5a4ccab519e87b82  gcc/testsuite/gcc.dg/lto/20100603-2_0.c
  86888e27ed88e43dc37c9cc0df1fb23b  gcc/testsuite/gcc.dg/lto/20100603-3_0.c
--- 31347,31353 ----
  f0f165a60b33c9179aea677bfa5a1d4d  gcc/testsuite/gcc.dg/lto/20100423-2_1.c
  b2a0b37b32bf80734edfa3995ab66546  gcc/testsuite/gcc.dg/lto/20100426_0.c
  ffc1048dc181062ec17ac5ce11020bf4  gcc/testsuite/gcc.dg/lto/20100430-1_0.c
! a9e00fd782e8ef30e2cd1c314cb25a16  gcc/testsuite/gcc.dg/lto/20100518_0.c
  f3fb4d904bd6fb62285dbf3f0187a411  gcc/testsuite/gcc.dg/lto/20100603-1_0.c
  8d591f006987f3ac5a4ccab519e87b82  gcc/testsuite/gcc.dg/lto/20100603-2_0.c
  86888e27ed88e43dc37c9cc0df1fb23b  gcc/testsuite/gcc.dg/lto/20100603-3_0.c
*************** c8ac4a8d60608a8ab38b355a8db84fdf  gcc/te
*** 30008,30023 ****
  e8dfd64284c72fe324ce46b89c304443  gcc/testsuite/gcc.dg/lto/20101009-2_2.c
  b2048c7119a1d69b1e59be5baf569a93  gcc/testsuite/gcc.dg/lto/20101125-1_0.c
  a10c5862cd4ac71bfe5a7191338347c4  gcc/testsuite/gcc.dg/lto/20101125-1_1.c
! ce5533449150afd038ee47bcf7a8d984  gcc/testsuite/gcc.dg/lto/20110201-1_0.c
  2b599a477995368fe7e7fa3b67a9185d  gcc/testsuite/gcc.dg/lto/20111207-1_0.c
  b04895f54b41081796e3698017137f58  gcc/testsuite/gcc.dg/lto/20111207-1_1.c
  668a3b5ad920346b135fa852ca249d17  gcc/testsuite/gcc.dg/lto/20111207-1_2.c
  9a43404e69d56e228dbcdb6c59560013  gcc/testsuite/gcc.dg/lto/20111207-1_3.c
  dabee9688937ca3a4d913a28a38e6594  gcc/testsuite/gcc.dg/lto/20111207-2_0.c
  4eff97b71d8cf91042d1061263ffb399  gcc/testsuite/gcc.dg/lto/20111213-1_0.c
! 1ea78023d6c1b11047182914e8739ca6  gcc/testsuite/gcc.dg/lto/20120723_0.c
  a7add68c69c48bffecd543855bc97366  gcc/testsuite/gcc.dg/lto/20120723_1.c
! 864e43fa53e19d7611de64eb52a57b42  gcc/testsuite/gcc.dg/lto/README
  1e48f525e9a16e2afca75f0e115765dd  gcc/testsuite/gcc.dg/lto/alias-1_0.c
  129a4337dea0cbd026043b3b990f14f3  gcc/testsuite/gcc.dg/lto/alias-1_1.c
  313b5ef23d14915b2a6f61b519f95205  gcc/testsuite/gcc.dg/lto/attr-weakref-1_0.c
--- 31370,31385 ----
  e8dfd64284c72fe324ce46b89c304443  gcc/testsuite/gcc.dg/lto/20101009-2_2.c
  b2048c7119a1d69b1e59be5baf569a93  gcc/testsuite/gcc.dg/lto/20101125-1_0.c
  a10c5862cd4ac71bfe5a7191338347c4  gcc/testsuite/gcc.dg/lto/20101125-1_1.c
! 1cf86a072bc59b345a2aa97139ecab92  gcc/testsuite/gcc.dg/lto/20110201-1_0.c
  2b599a477995368fe7e7fa3b67a9185d  gcc/testsuite/gcc.dg/lto/20111207-1_0.c
  b04895f54b41081796e3698017137f58  gcc/testsuite/gcc.dg/lto/20111207-1_1.c
  668a3b5ad920346b135fa852ca249d17  gcc/testsuite/gcc.dg/lto/20111207-1_2.c
  9a43404e69d56e228dbcdb6c59560013  gcc/testsuite/gcc.dg/lto/20111207-1_3.c
  dabee9688937ca3a4d913a28a38e6594  gcc/testsuite/gcc.dg/lto/20111207-2_0.c
  4eff97b71d8cf91042d1061263ffb399  gcc/testsuite/gcc.dg/lto/20111213-1_0.c
! 37601600a8bcca70bc216bca7c2947b0  gcc/testsuite/gcc.dg/lto/20120723_0.c
  a7add68c69c48bffecd543855bc97366  gcc/testsuite/gcc.dg/lto/20120723_1.c
! 47b0acedcb5c170a4a551c323b8bf0f5  gcc/testsuite/gcc.dg/lto/README
  1e48f525e9a16e2afca75f0e115765dd  gcc/testsuite/gcc.dg/lto/alias-1_0.c
  129a4337dea0cbd026043b3b990f14f3  gcc/testsuite/gcc.dg/lto/alias-1_1.c
  313b5ef23d14915b2a6f61b519f95205  gcc/testsuite/gcc.dg/lto/attr-weakref-1_0.c
*************** a7add68c69c48bffecd543855bc97366  gcc/te
*** 30025,30031 ****
  5a674e54883d5de8ea06860e38b0cd2e  gcc/testsuite/gcc.dg/lto/attr-weakref-1_2.c
  2a22362ab5d6121e744a61ed2e2f6497  gcc/testsuite/gcc.dg/lto/c-compatible-types-1_0.c
  2efe9845bc7f2a94bdb6da1ddfe698fc  gcc/testsuite/gcc.dg/lto/c-compatible-types-1_1.c
- 4bf2b192afc65410c97b2e6e3166ff57  gcc/testsuite/gcc.dg/lto/chkp-ctor-merge_0.c
  429991326a6bc2b0adc483541bbed8fd  gcc/testsuite/gcc.dg/lto/chkp-privatize-1_0.c
  fd5005c6fbb07e4f27713809ef1f5759  gcc/testsuite/gcc.dg/lto/chkp-privatize-1_1.c
  7c9df4d27d3ab0431a138fcb2e26b26c  gcc/testsuite/gcc.dg/lto/chkp-privatize-2_0.c
--- 31387,31392 ----
*************** e22501e605edeaceeca043b437e49ba9  gcc/te
*** 30043,30049 ****
  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
! 5a77c51ae9f56661f952bda44c84ec49  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
  e1bd2be5006d2bb7a3b670af0868ffeb  gcc/testsuite/gcc.dg/lto/noreturn-1_0.c
--- 31404,31410 ----
  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
! 13bd645b1a8f2970683c88f0e15e93af  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
  e1bd2be5006d2bb7a3b670af0868ffeb  gcc/testsuite/gcc.dg/lto/noreturn-1_0.c
*************** c5d3ad9a0b06bb1d77cc89309b8629ab  gcc/te
*** 30064,30070 ****
  70e2ab3042ed5071fb4cf82a318caa47  gcc/testsuite/gcc.dg/lto/pr46940_1.c
  460d4ae675d6fa7c845685552c95b8a4  gcc/testsuite/gcc.dg/lto/pr47188_0.c
  1928cb6a5b9574bca9e11ca95fed3319  gcc/testsuite/gcc.dg/lto/pr47188_1.c
! 12bb61e519fcdb1111ecbcf9193248c4  gcc/testsuite/gcc.dg/lto/pr47259_0.c
  957e327f63b137847986d2f4b832588e  gcc/testsuite/gcc.dg/lto/pr47259_1.c
  54e551daabafef19dff2d27e471c5a39  gcc/testsuite/gcc.dg/lto/pr47924_0.c
  783b00cf61b59ac61283d1315751dc5c  gcc/testsuite/gcc.dg/lto/pr48622_0.c
--- 31425,31431 ----
  70e2ab3042ed5071fb4cf82a318caa47  gcc/testsuite/gcc.dg/lto/pr46940_1.c
  460d4ae675d6fa7c845685552c95b8a4  gcc/testsuite/gcc.dg/lto/pr47188_0.c
  1928cb6a5b9574bca9e11ca95fed3319  gcc/testsuite/gcc.dg/lto/pr47188_1.c
! f0cc31467a1c670b2da39f6277514bab  gcc/testsuite/gcc.dg/lto/pr47259_0.c
  957e327f63b137847986d2f4b832588e  gcc/testsuite/gcc.dg/lto/pr47259_1.c
  54e551daabafef19dff2d27e471c5a39  gcc/testsuite/gcc.dg/lto/pr47924_0.c
  783b00cf61b59ac61283d1315751dc5c  gcc/testsuite/gcc.dg/lto/pr48622_0.c
*************** e4c1f7966a0b687ade65605b5ef05172  gcc/te
*** 30125,30132 ****
  513bc0d418851a55f4d310c4bd07a90b  gcc/testsuite/gcc.dg/lto/pr67452_0.c
  03f29629c7525bf9d782398e487a848c  gcc/testsuite/gcc.dg/lto/pr69188_0.c
  3b4bd973fa6b96913327e429117c532a  gcc/testsuite/gcc.dg/lto/pr69188_1.c
! 90a4d5f47ebe1ffb08d2ceea08a50077  gcc/testsuite/gcc.dg/lto/pr70955_0.c
  9e070e93615d99f5f50d833d9a344c13  gcc/testsuite/gcc.dg/lto/pr70955_1.c
  260506c568e35bc49112021166edf8f2  gcc/testsuite/gcc.dg/lto/resolutions_0.c
  1084184a9b11a84eee39ef130211f70b  gcc/testsuite/gcc.dg/lto/save-temps_0.c
  46d188c0319bf02d664cc2c49c9df2ef  gcc/testsuite/gcc.dg/lto/simd-function_0.c
--- 31486,31509 ----
  513bc0d418851a55f4d310c4bd07a90b  gcc/testsuite/gcc.dg/lto/pr67452_0.c
  03f29629c7525bf9d782398e487a848c  gcc/testsuite/gcc.dg/lto/pr69188_0.c
  3b4bd973fa6b96913327e429117c532a  gcc/testsuite/gcc.dg/lto/pr69188_1.c
! caa3ad6f8f84278e151b5b4d0b365ff3  gcc/testsuite/gcc.dg/lto/pr69866_0.c
! cb9e5b569e150d19012ba644b27a50aa  gcc/testsuite/gcc.dg/lto/pr69866_1.c
! c94baecc2f6c439b0f7a06f566842708  gcc/testsuite/gcc.dg/lto/pr70955_0.c
  9e070e93615d99f5f50d833d9a344c13  gcc/testsuite/gcc.dg/lto/pr70955_1.c
+ 543c628f11b07d2ba7e4febbec49fde1  gcc/testsuite/gcc.dg/lto/pr80778_0.c
+ 06701a07c468b005e0cc48d748d76f08  gcc/testsuite/gcc.dg/lto/pr81406_0.c
+ f81e0e9147c6abb1e4b7ce4953fda6e5  gcc/testsuite/gcc.dg/lto/pr81440.h
+ e9ff238723b78ce9df572712d231be5f  gcc/testsuite/gcc.dg/lto/pr81440_0.c
+ 09f388182bee7149045dad5a209510c0  gcc/testsuite/gcc.dg/lto/pr81440_1.c
+ 04462d2c1389621b2e99d34e861e75f9  gcc/testsuite/gcc.dg/lto/pr83388_0.c
+ e545104f1511b34c75415f4159948ad1  gcc/testsuite/gcc.dg/lto/pr83719_0.c
+ 4f9eacf4c94ac2a58a8d84f093e2c490  gcc/testsuite/gcc.dg/lto/pr83954.h
+ 23901aa8f3e4af47a583dec662de81c0  gcc/testsuite/gcc.dg/lto/pr83954_0.c
+ 9a2072fdcc9f631ef319beead5326f1d  gcc/testsuite/gcc.dg/lto/pr83954_1.c
+ cadb853e8a229ea635708ea4fe3282d0  gcc/testsuite/gcc.dg/lto/pr84212_0.c
+ ebb801f97326701c44c33bb719490703  gcc/testsuite/gcc.dg/lto/pr84212_1.c
+ 6428e1d34804348de4f0ff99845fa0ba  gcc/testsuite/gcc.dg/lto/pr85248_0.c
+ f67a44e9e2f963084509149bec7655af  gcc/testsuite/gcc.dg/lto/pr85248_1.c
  260506c568e35bc49112021166edf8f2  gcc/testsuite/gcc.dg/lto/resolutions_0.c
  1084184a9b11a84eee39ef130211f70b  gcc/testsuite/gcc.dg/lto/save-temps_0.c
  46d188c0319bf02d664cc2c49c9df2ef  gcc/testsuite/gcc.dg/lto/simd-function_0.c
*************** e0a6667173d0bdec75066a4487ca9b1d  gcc/te
*** 30142,30162 ****
  d1e770d91208595495a35d2e8dc75a6e  gcc/testsuite/gcc.dg/lvalue-8.c
  9e0c695c4649da2ec53260444793e53f  gcc/testsuite/gcc.dg/lvalue1.c
  7b992eada8877ee8824bb9e72763ee9e  gcc/testsuite/gcc.dg/m-un-1.c
! 8298497675a442f7999c049f3efecf37  gcc/testsuite/gcc.dg/m-un-2.c
  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
! aef6b45460d36ff8c438fc57d0f23e58  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
! ea69a7c6dfdbc300054dbb534113d27c  gcc/testsuite/gcc.dg/memcmp-1.c
  27c87483c7fcbea0947ee744dcfb316a  gcc/testsuite/gcc.dg/memcpy-1.c
  4faafb8a22b962ececd697ba35218789  gcc/testsuite/gcc.dg/memcpy-2.c
  d2e1206d26231777e76c9f21d67f4425  gcc/testsuite/gcc.dg/memcpy-3.c
  5499ece0538a867efb7141bf70324361  gcc/testsuite/gcc.dg/memcpy-4.c
  a41ae21b628c0476195ce6dac94a92e9  gcc/testsuite/gcc.dg/memcpy-5.c
  2e6979f3473f103c4c6ce0c0c0f8fd2d  gcc/testsuite/gcc.dg/memmove-1.c
  5224fb409821b04de2514e6f18e31023  gcc/testsuite/gcc.dg/memmove-2.c
  e8c4bdf333f001f5a197e7a3ad522e1d  gcc/testsuite/gcc.dg/memmove-3.c
--- 31519,31540 ----
  d1e770d91208595495a35d2e8dc75a6e  gcc/testsuite/gcc.dg/lvalue-8.c
  9e0c695c4649da2ec53260444793e53f  gcc/testsuite/gcc.dg/lvalue1.c
  7b992eada8877ee8824bb9e72763ee9e  gcc/testsuite/gcc.dg/m-un-1.c
! 3a87d3282d70c7411359de8355f7e455  gcc/testsuite/gcc.dg/m-un-2.c
  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
! 7a84ffe5056cec21356a3f48f0698cf0  gcc/testsuite/gcc.dg/memcmp-1.c
  27c87483c7fcbea0947ee744dcfb316a  gcc/testsuite/gcc.dg/memcpy-1.c
  4faafb8a22b962ececd697ba35218789  gcc/testsuite/gcc.dg/memcpy-2.c
  d2e1206d26231777e76c9f21d67f4425  gcc/testsuite/gcc.dg/memcpy-3.c
  5499ece0538a867efb7141bf70324361  gcc/testsuite/gcc.dg/memcpy-4.c
  a41ae21b628c0476195ce6dac94a92e9  gcc/testsuite/gcc.dg/memcpy-5.c
+ a8df618208e3feee442af78f7aba9a02  gcc/testsuite/gcc.dg/memcpy-6.c
  2e6979f3473f103c4c6ce0c0c0f8fd2d  gcc/testsuite/gcc.dg/memmove-1.c
  5224fb409821b04de2514e6f18e31023  gcc/testsuite/gcc.dg/memmove-2.c
  e8c4bdf333f001f5a197e7a3ad522e1d  gcc/testsuite/gcc.dg/memmove-3.c
*************** f95475da948bd44dcc9bae1ad2414546  gcc/te
*** 30173,30178 ****
--- 31551,31561 ----
  6e919fe3137d37dd15559904d67a97d2  gcc/testsuite/gcc.dg/mismatch-decl-1.c
  92c08397a16ba624a215e17607fb2894  gcc/testsuite/gcc.dg/missing-field-init-1.c
  1985016e3939b7a19fcb706dace00051  gcc/testsuite/gcc.dg/missing-field-init-2.c
+ 12013d66b5c707c34bc03444452cbb4f  gcc/testsuite/gcc.dg/missing-header-fixit-1.c
+ 7c63ea085d710c6e7ee71f21c9a986d2  gcc/testsuite/gcc.dg/missing-header-fixit-2.c
+ 2c267a2b2b580b8eccb468b5081a094b  gcc/testsuite/gcc.dg/missing-header-fixit-2.h
+ 330c9a6cac31c8da3e7d9b86dff18542  gcc/testsuite/gcc.dg/missing-symbol-2.c
+ 7def0058941ac8f332eef0c08af467d0  gcc/testsuite/gcc.dg/missing-symbol-3.c
  a9d25b005316d831dbd591be8a92f08e  gcc/testsuite/gcc.dg/mmix-1.c
  c63aafa58dcae9e5558ec91d49535c2d  gcc/testsuite/gcc.dg/modmod.c
  49d8615f0a0d83b11870ecbc67bed453  gcc/testsuite/gcc.dg/mtune.c
*************** d31a2c7221882133a103227d59fa42d3  gcc/te
*** 30204,30210 ****
  d47cf367b72e67703ed942516a4d7567  gcc/testsuite/gcc.dg/no-math-errno-4.c
  ce4c34de4dfa5a13c4781f9411d56243  gcc/testsuite/gcc.dg/no-strict-overflow-1.c
  94daa25494d68754da018661791bec28  gcc/testsuite/gcc.dg/no-strict-overflow-2.c
! bbdd087f36f46d3a737752c6b3b6d787  gcc/testsuite/gcc.dg/no-strict-overflow-3.c
  0ef58b0e4c547ce0c03474c6b295cf5d  gcc/testsuite/gcc.dg/no-strict-overflow-4.c
  a147f3e7709103de771c96fda2d5b9f5  gcc/testsuite/gcc.dg/no-strict-overflow-5.c
  f6f749bfbd33a9e9e95102c823d14bb8  gcc/testsuite/gcc.dg/no-strict-overflow-6.c
--- 31587,31593 ----
  d47cf367b72e67703ed942516a4d7567  gcc/testsuite/gcc.dg/no-math-errno-4.c
  ce4c34de4dfa5a13c4781f9411d56243  gcc/testsuite/gcc.dg/no-strict-overflow-1.c
  94daa25494d68754da018661791bec28  gcc/testsuite/gcc.dg/no-strict-overflow-2.c
! 350f9cd3a4dfdb64fea6016fbf8ab901  gcc/testsuite/gcc.dg/no-strict-overflow-3.c
  0ef58b0e4c547ce0c03474c6b295cf5d  gcc/testsuite/gcc.dg/no-strict-overflow-4.c
  a147f3e7709103de771c96fda2d5b9f5  gcc/testsuite/gcc.dg/no-strict-overflow-5.c
  f6f749bfbd33a9e9e95102c823d14bb8  gcc/testsuite/gcc.dg/no-strict-overflow-6.c
*************** f6f749bfbd33a9e9e95102c823d14bb8  gcc/te
*** 30213,30219 ****
  5c91dd6c6699c040ee5ec10f05f231a0  gcc/testsuite/gcc.dg/no_profile_instrument_function-attr-1.c
  4142b2322a75b23f47a3f63e7bf6f75f  gcc/testsuite/gcc.dg/nodfp-1.c
  7193a17ae405f52ff74ec32ff455a959  gcc/testsuite/gcc.dg/nofixed-point-1.c
! 5dfc066f7397b87abe86030aded45fd1  gcc/testsuite/gcc.dg/nofixed-point-2.c
  bd81391574c813adc19fd60abe89bd01  gcc/testsuite/gcc.dg/non-local-goto-1.c
  0cc31be6cd7564a467b70eb624f8a2d6  gcc/testsuite/gcc.dg/non-local-goto-2.c
  4f833676228422b784109abf08d14bb2  gcc/testsuite/gcc.dg/noncompile/20000901-1.c
--- 31596,31602 ----
  5c91dd6c6699c040ee5ec10f05f231a0  gcc/testsuite/gcc.dg/no_profile_instrument_function-attr-1.c
  4142b2322a75b23f47a3f63e7bf6f75f  gcc/testsuite/gcc.dg/nodfp-1.c
  7193a17ae405f52ff74ec32ff455a959  gcc/testsuite/gcc.dg/nofixed-point-1.c
! ec19a8b1730f75c32f41e4a1b24c99f8  gcc/testsuite/gcc.dg/nofixed-point-2.c
  bd81391574c813adc19fd60abe89bd01  gcc/testsuite/gcc.dg/non-local-goto-1.c
  0cc31be6cd7564a467b70eb624f8a2d6  gcc/testsuite/gcc.dg/non-local-goto-2.c
  4f833676228422b784109abf08d14bb2  gcc/testsuite/gcc.dg/noncompile/20000901-1.c
*************** d8b8e704d82244bf172325ffe7687229  gcc/te
*** 30223,30229 ****
  efaec86420af0d4c7d1309e3f635fe7b  gcc/testsuite/gcc.dg/noncompile/20011025-1.c
  3479030e3e59e70fabf3395145384ec5  gcc/testsuite/gcc.dg/noncompile/20020130-1.c
  ae4bbb0e37fbefdbb9ec9ce5946463ca  gcc/testsuite/gcc.dg/noncompile/20020207-1.c
! fb693a6ca7076fd8dfcf0bcfbd1d872e  gcc/testsuite/gcc.dg/noncompile/20020213-1.c
  ebaa4ee280f3ee63dd95a60e45569641  gcc/testsuite/gcc.dg/noncompile/20020220-1.c
  b5076a05f012d9662ba39a0ac14be746  gcc/testsuite/gcc.dg/noncompile/20030818-1.c
  2a95e7e5c29b3ea69b58b0b8389e2e98  gcc/testsuite/gcc.dg/noncompile/20040203-1.c
--- 31606,31612 ----
  efaec86420af0d4c7d1309e3f635fe7b  gcc/testsuite/gcc.dg/noncompile/20011025-1.c
  3479030e3e59e70fabf3395145384ec5  gcc/testsuite/gcc.dg/noncompile/20020130-1.c
  ae4bbb0e37fbefdbb9ec9ce5946463ca  gcc/testsuite/gcc.dg/noncompile/20020207-1.c
! 305db8cecffb879688ae2b3927c8470f  gcc/testsuite/gcc.dg/noncompile/20020213-1.c
  ebaa4ee280f3ee63dd95a60e45569641  gcc/testsuite/gcc.dg/noncompile/20020220-1.c
  b5076a05f012d9662ba39a0ac14be746  gcc/testsuite/gcc.dg/noncompile/20030818-1.c
  2a95e7e5c29b3ea69b58b0b8389e2e98  gcc/testsuite/gcc.dg/noncompile/20040203-1.c
*************** ce046abcd40f617b0695e23ece8f85b3  gcc/te
*** 30236,30242 ****
  9129a49a9e21bd7f6ce42e5d378cd5c1  gcc/testsuite/gcc.dg/noncompile/920616-2.c
  4c5ea3fc28acc054cda8c446430e0e59  gcc/testsuite/gcc.dg/noncompile/920721-2.c
  f53be9e609bc996b982825ce79df3595  gcc/testsuite/gcc.dg/noncompile/920824-1.c
! e2739dc7fd953d61e8e6ca781d9b86fc  gcc/testsuite/gcc.dg/noncompile/920923-1.c
  90c7d00d1461ffe10b144b3e6c1aed26  gcc/testsuite/gcc.dg/noncompile/921102-1.c
  a8666066c64e2d7e4bc38901216fc0e7  gcc/testsuite/gcc.dg/noncompile/921116-1.c
  c07318e2d4130e937daaa46e63f10261  gcc/testsuite/gcc.dg/noncompile/930301-1.c
--- 31619,31625 ----
  9129a49a9e21bd7f6ce42e5d378cd5c1  gcc/testsuite/gcc.dg/noncompile/920616-2.c
  4c5ea3fc28acc054cda8c446430e0e59  gcc/testsuite/gcc.dg/noncompile/920721-2.c
  f53be9e609bc996b982825ce79df3595  gcc/testsuite/gcc.dg/noncompile/920824-1.c
! e0a733f596f7302fdd7d009272a25b98  gcc/testsuite/gcc.dg/noncompile/920923-1.c
  90c7d00d1461ffe10b144b3e6c1aed26  gcc/testsuite/gcc.dg/noncompile/921102-1.c
  a8666066c64e2d7e4bc38901216fc0e7  gcc/testsuite/gcc.dg/noncompile/921116-1.c
  c07318e2d4130e937daaa46e63f10261  gcc/testsuite/gcc.dg/noncompile/930301-1.c
*************** abfe35fbe8e86cdb6dcda81aff061999  gcc/te
*** 30244,30255 ****
  615bce7122ab36b408ed5817f9eb3ed9  gcc/testsuite/gcc.dg/noncompile/930622-2.c
  bb9595bf2e497e6d454d1b8261c86d24  gcc/testsuite/gcc.dg/noncompile/930714-1.c
  122f14ff7adb9285a03d7a97731c7cd0  gcc/testsuite/gcc.dg/noncompile/931203-1.c
! 0e6a06f98858ec88160d8d7e1a9aec6d  gcc/testsuite/gcc.dg/noncompile/940112-1.c
  9c3d130f5bd47df53ae074ccee954d25  gcc/testsuite/gcc.dg/noncompile/940227-1.c
  5b5de175618968fff01e86bd905c39f5  gcc/testsuite/gcc.dg/noncompile/950825-1.c
  25ab334d6aa318dae134a72cbcfac5b3  gcc/testsuite/gcc.dg/noncompile/950921-1.c
  81ad5d337efd81a581d6fe846ab908fe  gcc/testsuite/gcc.dg/noncompile/951123-1.c
! a53da3e15df64b4d1262f3cf198f32c0  gcc/testsuite/gcc.dg/noncompile/971104-1.c
  c12474a7bd9d8234bbe400c5fd2be7ad  gcc/testsuite/gcc.dg/noncompile/990416-1.c
  1b2bc08a1a268520d0499de7a83200fa  gcc/testsuite/gcc.dg/noncompile/const-ll-1.c
  759ff42bb54e18e9e24d737a965fb659  gcc/testsuite/gcc.dg/noncompile/incomplete-1.c
--- 31627,31638 ----
  615bce7122ab36b408ed5817f9eb3ed9  gcc/testsuite/gcc.dg/noncompile/930622-2.c
  bb9595bf2e497e6d454d1b8261c86d24  gcc/testsuite/gcc.dg/noncompile/930714-1.c
  122f14ff7adb9285a03d7a97731c7cd0  gcc/testsuite/gcc.dg/noncompile/931203-1.c
! a882cf5a70c92c36041a3dbd6fb243e5  gcc/testsuite/gcc.dg/noncompile/940112-1.c
  9c3d130f5bd47df53ae074ccee954d25  gcc/testsuite/gcc.dg/noncompile/940227-1.c
  5b5de175618968fff01e86bd905c39f5  gcc/testsuite/gcc.dg/noncompile/950825-1.c
  25ab334d6aa318dae134a72cbcfac5b3  gcc/testsuite/gcc.dg/noncompile/950921-1.c
  81ad5d337efd81a581d6fe846ab908fe  gcc/testsuite/gcc.dg/noncompile/951123-1.c
! a10c8aa009c46f090db65fdd2513b639  gcc/testsuite/gcc.dg/noncompile/971104-1.c
  c12474a7bd9d8234bbe400c5fd2be7ad  gcc/testsuite/gcc.dg/noncompile/990416-1.c
  1b2bc08a1a268520d0499de7a83200fa  gcc/testsuite/gcc.dg/noncompile/const-ll-1.c
  759ff42bb54e18e9e24d737a965fb659  gcc/testsuite/gcc.dg/noncompile/incomplete-1.c
*************** b054d23fd7d868a509aeb363dc7e8ffc  gcc/te
*** 30265,30278 ****
  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
! 527b7aea2a859fdf43ad0fb89986d3a4  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
  1f73d14d777c3ea372a5513b43f3d381  gcc/testsuite/gcc.dg/noncompile/pr23576.c
  5a2c3316d076f8d48f24609d416f7516  gcc/testsuite/gcc.dg/noncompile/pr35444-1.c
  f7b0583ef99de8104eb364054c2ab1ae  gcc/testsuite/gcc.dg/noncompile/pr35444-2.c
! d618e883477b7e6f5b49c9142c5dfe4c  gcc/testsuite/gcc.dg/noncompile/pr35447-1.c
  eebc988665ccd52c01692b6d73fdf1a7  gcc/testsuite/gcc.dg/noncompile/pr40033-1.c
  de304718b009b210b30f573b7fc0491d  gcc/testsuite/gcc.dg/noncompile/pr44517.c
  0c6d70d2240eeb85a465c0d349792a78  gcc/testsuite/gcc.dg/noncompile/pr52290.c
--- 31648,31661 ----
  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
! 53dd2a14c13a4dfe0283f6d56d5c5b55  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
  1f73d14d777c3ea372a5513b43f3d381  gcc/testsuite/gcc.dg/noncompile/pr23576.c
  5a2c3316d076f8d48f24609d416f7516  gcc/testsuite/gcc.dg/noncompile/pr35444-1.c
  f7b0583ef99de8104eb364054c2ab1ae  gcc/testsuite/gcc.dg/noncompile/pr35444-2.c
! 53642b43ce97a6d3b46ed9cde9d811ae  gcc/testsuite/gcc.dg/noncompile/pr35447-1.c
  eebc988665ccd52c01692b6d73fdf1a7  gcc/testsuite/gcc.dg/noncompile/pr40033-1.c
  de304718b009b210b30f573b7fc0491d  gcc/testsuite/gcc.dg/noncompile/pr44517.c
  0c6d70d2240eeb85a465c0d349792a78  gcc/testsuite/gcc.dg/noncompile/pr52290.c
*************** e9c4b9ac1764f109629be29afe89e235  gcc/te
*** 30283,30288 ****
--- 31666,31672 ----
  3154e833a0a327060d844cfeac7df988  gcc/testsuite/gcc.dg/noncompile/pr71583.c
  795fb0aea23fa4679ac66c15370f8f54  gcc/testsuite/gcc.dg/noncompile/pr71853.c
  e79b5406b668c3dd78ff842425edfbd9  gcc/testsuite/gcc.dg/noncompile/pr79758.c
+ 9dcbfb000a62c03db07cd7dfcc272eae  gcc/testsuite/gcc.dg/noncompile/pr81289.c
  7e17434473e72d99de0e53837884085d  gcc/testsuite/gcc.dg/noncompile/redecl-1.c
  efd9f24faf3a5e574722522b379e34c7  gcc/testsuite/gcc.dg/noncompile/scope.c
  bacce3ff1a5219b8aef3929e36521ff4  gcc/testsuite/gcc.dg/noncompile/undeclared-1.c
*************** e65c0aad11135d5f145655fd963b86e6  gcc/te
*** 30292,30298 ****
  651344fe733fa7735632a9520a50f8ba  gcc/testsuite/gcc.dg/nonnull-1.c
  d1d6e89fe0fdf1fca42721311dc8838e  gcc/testsuite/gcc.dg/nonnull-2.c
  3875a737264f8a8d48300bc5401c5c3a  gcc/testsuite/gcc.dg/nonnull-3.c
! 0d2d69ab87566bdfaf8165f1f013df68  gcc/testsuite/gcc.dg/nonnull-4.c
  f39bd472f690e3e2598e1924ee2b8d14  gcc/testsuite/gcc.dg/nonnull-5.c
  57177fc2800e8bd077769ce1d4f5ee6b  gcc/testsuite/gcc.dg/nop.h
  556a1b6b25df858dcac194d7b1b91fd0  gcc/testsuite/gcc.dg/noreorder.c
--- 31676,31682 ----
  651344fe733fa7735632a9520a50f8ba  gcc/testsuite/gcc.dg/nonnull-1.c
  d1d6e89fe0fdf1fca42721311dc8838e  gcc/testsuite/gcc.dg/nonnull-2.c
  3875a737264f8a8d48300bc5401c5c3a  gcc/testsuite/gcc.dg/nonnull-3.c
! 9922cca70be66c8b7ef7db9ddf403b59  gcc/testsuite/gcc.dg/nonnull-4.c
  f39bd472f690e3e2598e1924ee2b8d14  gcc/testsuite/gcc.dg/nonnull-5.c
  57177fc2800e8bd077769ce1d4f5ee6b  gcc/testsuite/gcc.dg/nop.h
  556a1b6b25df858dcac194d7b1b91fd0  gcc/testsuite/gcc.dg/noreorder.c
*************** fb2a64e28af210271512e32c8451c2f2  gcc/te
*** 30319,30333 ****
  9d188d619e18f73aeccc6718f2c7b5f0  gcc/testsuite/gcc.dg/old-style-prom-2.c
  a4430e8a6755e6674402bd05861a1795  gcc/testsuite/gcc.dg/old-style-prom-3.c
  7253e0256fcfeb4190a77f791b0cef0c  gcc/testsuite/gcc.dg/old-style-then-proto-1.c
! 3944a14a8c897886742ca01e9ed59cb5  gcc/testsuite/gcc.dg/optimize-bswapdi-1.c
! 15a94db0543d3dfb6c49ece79b47ff32  gcc/testsuite/gcc.dg/optimize-bswapdi-2.c
! 42e97b8c6e9193118d500a85d98d2ce3  gcc/testsuite/gcc.dg/optimize-bswapdi-3.c
! 70d4b251435416c69d6307a85d37c9a1  gcc/testsuite/gcc.dg/optimize-bswaphi-1.c
! b621cb45f3c0ca8f97b22508f17be9d6  gcc/testsuite/gcc.dg/optimize-bswapsi-1.c
! e0c7418cc8697c946d4232c2ac506143  gcc/testsuite/gcc.dg/optimize-bswapsi-2.c
! 2152e1c4370b68585cc6698b4d42b591  gcc/testsuite/gcc.dg/optimize-bswapsi-3.c
! 2c75deaa88ddad4361c788c618fa9989  gcc/testsuite/gcc.dg/optimize-bswapsi-4.c
! 3b3c77c1a92948225337726419bb173f  gcc/testsuite/gcc.dg/optimize-bswapsi-5.c
  a8c315968907b6e4af7ba7ac664c3d4d  gcc/testsuite/gcc.dg/opts-1.c
  4d9c904a82fe597f0cd8af7c5de6e850  gcc/testsuite/gcc.dg/opts-2.c
  38a8c929ac7b34d42957355372ae18f5  gcc/testsuite/gcc.dg/opts-3.c
--- 31703,31717 ----
  9d188d619e18f73aeccc6718f2c7b5f0  gcc/testsuite/gcc.dg/old-style-prom-2.c
  a4430e8a6755e6674402bd05861a1795  gcc/testsuite/gcc.dg/old-style-prom-3.c
  7253e0256fcfeb4190a77f791b0cef0c  gcc/testsuite/gcc.dg/old-style-then-proto-1.c
! 9229783a7729cb3f6f4f0b077a88d856  gcc/testsuite/gcc.dg/optimize-bswapdi-1.c
! 55af7e911ccccfb767841b02434c6aad  gcc/testsuite/gcc.dg/optimize-bswapdi-2.c
! 2411cd50c6b3a2f2c92ef4ec97287013  gcc/testsuite/gcc.dg/optimize-bswapdi-3.c
! b168306cfb2417f8eac54b102fde90bc  gcc/testsuite/gcc.dg/optimize-bswaphi-1.c
! 038457d7e3469ff3fd101b359915f68d  gcc/testsuite/gcc.dg/optimize-bswapsi-1.c
! 5cded322b280112d1cc9959e6aef1a3b  gcc/testsuite/gcc.dg/optimize-bswapsi-2.c
! 6e2a2b7d058b4a5c08261e405918da3b  gcc/testsuite/gcc.dg/optimize-bswapsi-3.c
! bd8139d78717b2c59fb034414884e732  gcc/testsuite/gcc.dg/optimize-bswapsi-4.c
! 86b2a4d442364b20c0f5a21aadaae7a5  gcc/testsuite/gcc.dg/optimize-bswapsi-5.c
  a8c315968907b6e4af7ba7ac664c3d4d  gcc/testsuite/gcc.dg/opts-1.c
  4d9c904a82fe597f0cd8af7c5de6e850  gcc/testsuite/gcc.dg/opts-2.c
  38a8c929ac7b34d42957355372ae18f5  gcc/testsuite/gcc.dg/opts-3.c
*************** e5457066a3fb8a7d2cfd77aab02a105d  gcc/te
*** 30340,30375 ****
  f0a8868858febe634c08ed10db8df14f  gcc/testsuite/gcc.dg/ordered-comparison-2.c
  e2c51fe1d974ad05661fe94550d25433  gcc/testsuite/gcc.dg/ordered-comparison-3.c
  3ac30f714e0d39708a9837c78d7c6a12  gcc/testsuite/gcc.dg/ordered-comparison-4.c
! ed5477c2aa0d906249a1ce0cd6ae7958  gcc/testsuite/gcc.dg/out-of-bounds-1.c
  d524cbf9b3805a6b9bbfc037661424cc  gcc/testsuite/gcc.dg/overflow-1.c
  1bef7f403044d1646079b0bf7ffe725c  gcc/testsuite/gcc.dg/overflow-2.c
! 897d130c0a030009baad6eee1079fe61  gcc/testsuite/gcc.dg/overflow-warn-1.c
! ba633ab8703dba59f3aed38c6e2cfb27  gcc/testsuite/gcc.dg/overflow-warn-2.c
! b269fd0578c39614472bddf6a28b1158  gcc/testsuite/gcc.dg/overflow-warn-3.c
! c96349cbdf2093e69a0205837c26c2d6  gcc/testsuite/gcc.dg/overflow-warn-4.c
! 5e58c6b8aa194d77a49a2b3f377f2bdd  gcc/testsuite/gcc.dg/overflow-warn-5.c
  00468c6e7128a9c553728d36cac76215  gcc/testsuite/gcc.dg/overflow-warn-6.c
  f7dbf888578b8cc0b67acca3dbe4b7ee  gcc/testsuite/gcc.dg/overflow-warn-7.c
! 9a598dd4788e9e234a6a01ad90dc2118  gcc/testsuite/gcc.dg/overflow-warn-8.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
! 3fd896c85ca5b207c7681452d0be9acd  gcc/testsuite/gcc.dg/pack-test-3.c
  607b0e00950aa58d0248b10a56cb344c  gcc/testsuite/gcc.dg/pack-test-4.c
  c618f958af883e26030aeef384665b7a  gcc/testsuite/gcc.dg/pack-test-5.c
  ae1be7c8a9157aa5984b4ba25923b8e3  gcc/testsuite/gcc.dg/packed-array.c
  822ac96689508a423d828561e32cc2fb  gcc/testsuite/gcc.dg/packed-vla.c
  ddeb76cd34e791893c0f539fdab879bb  gcc/testsuite/gcc.dg/params/LICENSE
  dbe49534045bebcd393d3d0d5ccec28a  gcc/testsuite/gcc.dg/params/README
  f74292f95de3429f6a815dafaf77ce9c  gcc/testsuite/gcc.dg/params/blocksort-part.c
! 0e7226dd5b5270f549821f4640d267cd  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
  27981842075571927c075cd224a261bf  gcc/testsuite/gcc.dg/parm-forwdecl-4.c
! 37a0b22ed6db8bff01d5c171736f2237  gcc/testsuite/gcc.dg/parm-impl-decl-1.c
  7e69b60a64c1d1dc0dae6a9c39bd12e9  gcc/testsuite/gcc.dg/parm-impl-decl-2.c
! e4d4be9f6f9895f0ca9062e2b73a6869  gcc/testsuite/gcc.dg/parm-impl-decl-3.c
  e13b33decc89989d8524adc6f37e6da0  gcc/testsuite/gcc.dg/parm-incomplete-1.c
  f17952869ec8ee68cb6cc7784cb34a7e  gcc/testsuite/gcc.dg/parm-mismatch-1.c
  1ee87658e00ffbf9d7c7c348af6c7dba  gcc/testsuite/gcc.dg/parse-decl-after-if.c
--- 31724,31761 ----
  f0a8868858febe634c08ed10db8df14f  gcc/testsuite/gcc.dg/ordered-comparison-2.c
  e2c51fe1d974ad05661fe94550d25433  gcc/testsuite/gcc.dg/ordered-comparison-3.c
  3ac30f714e0d39708a9837c78d7c6a12  gcc/testsuite/gcc.dg/ordered-comparison-4.c
! 57a1048b19e9d400f34367dc590103fe  gcc/testsuite/gcc.dg/out-of-bounds-1.c
  d524cbf9b3805a6b9bbfc037661424cc  gcc/testsuite/gcc.dg/overflow-1.c
  1bef7f403044d1646079b0bf7ffe725c  gcc/testsuite/gcc.dg/overflow-2.c
! 6ab1c2ca708f065fbe0f869aa0ec1224  gcc/testsuite/gcc.dg/overflow-warn-1.c
! 78d622257fbab076a41391eef6d04031  gcc/testsuite/gcc.dg/overflow-warn-2.c
! ad340c212293170a71d90e58ff6eea45  gcc/testsuite/gcc.dg/overflow-warn-3.c
! 50ebcc09894e2934fbb42f04be8a8139  gcc/testsuite/gcc.dg/overflow-warn-4.c
! 25493248e01d4cc218ef219f90174985  gcc/testsuite/gcc.dg/overflow-warn-5.c
  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
! 5dff9afc1ead327b263711569e3db14e  gcc/testsuite/gcc.dg/pack-test-3.c
  607b0e00950aa58d0248b10a56cb344c  gcc/testsuite/gcc.dg/pack-test-4.c
  c618f958af883e26030aeef384665b7a  gcc/testsuite/gcc.dg/pack-test-5.c
  ae1be7c8a9157aa5984b4ba25923b8e3  gcc/testsuite/gcc.dg/packed-array.c
  822ac96689508a423d828561e32cc2fb  gcc/testsuite/gcc.dg/packed-vla.c
+ 1317f7b1fab9feddcfdf5b5989d8e1a0  gcc/testsuite/gcc.dg/param-type-mismatch.c
  ddeb76cd34e791893c0f539fdab879bb  gcc/testsuite/gcc.dg/params/LICENSE
  dbe49534045bebcd393d3d0d5ccec28a  gcc/testsuite/gcc.dg/params/README
  f74292f95de3429f6a815dafaf77ce9c  gcc/testsuite/gcc.dg/params/blocksort-part.c
! 78eb45f28e2cd9d91430467f82b412a0  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
  27981842075571927c075cd224a261bf  gcc/testsuite/gcc.dg/parm-forwdecl-4.c
! 0e45a9bd38177de57173bfe1ffeb6720  gcc/testsuite/gcc.dg/parm-impl-decl-1.c
  7e69b60a64c1d1dc0dae6a9c39bd12e9  gcc/testsuite/gcc.dg/parm-impl-decl-2.c
! 15859198e4fe3d67c71e1ece95a10f7f  gcc/testsuite/gcc.dg/parm-impl-decl-3.c
  e13b33decc89989d8524adc6f37e6da0  gcc/testsuite/gcc.dg/parm-incomplete-1.c
  f17952869ec8ee68cb6cc7784cb34a7e  gcc/testsuite/gcc.dg/parm-mismatch-1.c
  1ee87658e00ffbf9d7c7c348af6c7dba  gcc/testsuite/gcc.dg/parse-decl-after-if.c
*************** b9a08aaa422f5ca3ab727b027071f5d8  gcc/te
*** 30387,30393 ****
  666ba78dace0f606b77204e1f17211c8  gcc/testsuite/gcc.dg/pch/common-1.hs
  a8410569e57b45601c3b3c358eec418e  gcc/testsuite/gcc.dg/pch/counter-1.c
  fddfaf8a4210cfff18b4df007e18bc46  gcc/testsuite/gcc.dg/pch/counter-1.hs
! 6230317f72bdc76a863aeac3a2f5bf08  gcc/testsuite/gcc.dg/pch/counter-2.c
  93e2082c34d1b021a32a76a9f1a53695  gcc/testsuite/gcc.dg/pch/counter-2.hs
  f1404d8923d85596fa094bd40975a7f1  gcc/testsuite/gcc.dg/pch/counter-3.c
  fa2084e313b35b180d22733dbfa0e8de  gcc/testsuite/gcc.dg/pch/counter-3.hs
--- 31773,31779 ----
  666ba78dace0f606b77204e1f17211c8  gcc/testsuite/gcc.dg/pch/common-1.hs
  a8410569e57b45601c3b3c358eec418e  gcc/testsuite/gcc.dg/pch/counter-1.c
  fddfaf8a4210cfff18b4df007e18bc46  gcc/testsuite/gcc.dg/pch/counter-1.hs
! 9c582829768cccd910cd39e099e407ef  gcc/testsuite/gcc.dg/pch/counter-2.c
  93e2082c34d1b021a32a76a9f1a53695  gcc/testsuite/gcc.dg/pch/counter-2.hs
  f1404d8923d85596fa094bd40975a7f1  gcc/testsuite/gcc.dg/pch/counter-3.c
  fa2084e313b35b180d22733dbfa0e8de  gcc/testsuite/gcc.dg/pch/counter-3.hs
*************** b19f78cc8cfdc1d6a96b2f1f9d2b1da6  gcc/te
*** 30442,30448 ****
  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
! 298caafdf9d6d6974d49d591f6a91252  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
--- 31828,31834 ----
  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
! c5c1e9715862f6874bfc2be5101da677  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
*** 30484,30516 ****
  7cc51ec1f1f61699ed8153f418a1d0ea  gcc/testsuite/gcc.dg/pic-2.c
  f489a9b76703865e1f13f358d082fc35  gcc/testsuite/gcc.dg/pic-3.c
  b0b5c3f940f832c9513ac3bda94c2a85  gcc/testsuite/gcc.dg/pic-4.c
! 3f9b6e54f5dc641b9d0abe6ad62ec712  gcc/testsuite/gcc.dg/pic-macro-define.c
  de302da8d7737a4e96d474e241080339  gcc/testsuite/gcc.dg/pie-1.c
  e85ed22735e235dc5a9457487286d6f0  gcc/testsuite/gcc.dg/pie-2.c
  38470759a7113b1e07dc9314078276e1  gcc/testsuite/gcc.dg/pie-3.c
  b6f4b80013e7bf021de3794e2e37866f  gcc/testsuite/gcc.dg/pie-4.c
  17f4008aaadc7db4f869e804d77d753a  gcc/testsuite/gcc.dg/pie-5.c
  0debd1544970fb56a2a4a7828bb92d07  gcc/testsuite/gcc.dg/pie-6.c
  72712f41dcc921ba1827000fc0809a9c  gcc/testsuite/gcc.dg/pie-link.c
! 9868c5f292724bfff57c4d6230e6e9a7  gcc/testsuite/gcc.dg/plugin/diagnostic-test-expressions-1.c
! 3e4aab4cc84a19b641066e0d6632ba64  gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-locus-bw.c
! f1912ef3a5e148433328bcd11933207a  gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-locus-color.c
! 1a59a85a858096fc8b38ff84dd2ca192  gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-locus-generate-patch.c
! 87d3f5bf7055601a25b98fa116314ba9  gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-locus-parseable-fixits.c
  39f1ab78432ac25892fad284e179d8ac  gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-trees-1.c
! 23a6ab1a2a216c4326ae5d12c2b2b88c  gcc/testsuite/gcc.dg/plugin/diagnostic-test-string-literals-1.c
! 65fed87be5b0de230609395502ec7df2  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
! dd649de384748fd362bc4e19a5d07cf3  gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_show_trees.c
! ebadec3d15eadcd926da6e1dc0e65360  gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_show_locus.c
  b7258270e0a8e1b90e7f438a1a264434  gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_string_literals.c
  707526da84cfcfe163a5cccceed8c466  gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_tree_expression_range.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
  2efeb092a763bb82db1b02d6b0d5fb24  gcc/testsuite/gcc.dg/plugin/ggcplug.c
! 3bbaf2fe268dd33bddd2dafb1cff285b  gcc/testsuite/gcc.dg/plugin/location-overflow-test-1.c
  b584a46252319e63ce8a18cd3d89f07c  gcc/testsuite/gcc.dg/plugin/location-overflow-test-2.c
  f85fcb7be06c7e069a22692e30b841a8  gcc/testsuite/gcc.dg/plugin/location_overflow_plugin.c
  db7ca96e3ca2a65918f7ad1c3bf0c344  gcc/testsuite/gcc.dg/plugin/must-tail-call-1.c
--- 31870,31912 ----
  7cc51ec1f1f61699ed8153f418a1d0ea  gcc/testsuite/gcc.dg/pic-2.c
  f489a9b76703865e1f13f358d082fc35  gcc/testsuite/gcc.dg/pic-3.c
  b0b5c3f940f832c9513ac3bda94c2a85  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
  38470759a7113b1e07dc9314078276e1  gcc/testsuite/gcc.dg/pie-3.c
  b6f4b80013e7bf021de3794e2e37866f  gcc/testsuite/gcc.dg/pie-4.c
  17f4008aaadc7db4f869e804d77d753a  gcc/testsuite/gcc.dg/pie-5.c
  0debd1544970fb56a2a4a7828bb92d07  gcc/testsuite/gcc.dg/pie-6.c
+ df1fb04645820cce9159c1b05e520fc7  gcc/testsuite/gcc.dg/pie-7.c
  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
! 2e6c78c0344d8f15b046807cbd1b855a  gcc/testsuite/gcc.dg/plugin/diagnostic-test-expressions-1.c
! 909ef50476981adc6482e08a95f8f5dd  gcc/testsuite/gcc.dg/plugin/diagnostic-test-inlining-1.c
! 49685be9087563d411cc61352a593d84  gcc/testsuite/gcc.dg/plugin/diagnostic-test-inlining-2.c
! 1b02670e3f0a484f676b65b1b782cc79  gcc/testsuite/gcc.dg/plugin/diagnostic-test-inlining-3.c
! c5d2a11e1172f48545387ed92bd56a11  gcc/testsuite/gcc.dg/plugin/diagnostic-test-inlining-4.c
! 45157872e605ecbf78e70a4499ad02f8  gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-locus-bw.c
! 5aa1187b8c9295442784e55c6cd88db6  gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-locus-color.c
! b2716af9a578a550078c0e50d7d38229  gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-locus-generate-patch.c
! 2c7e32cd8f076c6b6406aef7209045e7  gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-locus-parseable-fixits.c
  39f1ab78432ac25892fad284e179d8ac  gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-trees-1.c
! 7593ed26f98ce2cea1d036615ba12cea  gcc/testsuite/gcc.dg/plugin/diagnostic-test-string-literals-1.c
! f63d3783ad5aff3aa51084a26a68f945  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
! e1f8b0d9a1b088dbc8c09b64be643c51  gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_show_trees.c
! d27333a4c03b07af5222f70da018ebbf  gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_inlining.c
! a487c52aa6f406a8c980c10543f5f4bd  gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_show_locus.c
  b7258270e0a8e1b90e7f438a1a264434  gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_string_literals.c
  707526da84cfcfe163a5cccceed8c466  gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_tree_expression_range.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
  2efeb092a763bb82db1b02d6b0d5fb24  gcc/testsuite/gcc.dg/plugin/ggcplug.c
! c50bad4e1b684c379dc1f35b89ea422c  gcc/testsuite/gcc.dg/plugin/location-overflow-test-1.c
  b584a46252319e63ce8a18cd3d89f07c  gcc/testsuite/gcc.dg/plugin/location-overflow-test-2.c
  f85fcb7be06c7e069a22692e30b841a8  gcc/testsuite/gcc.dg/plugin/location_overflow_plugin.c
  db7ca96e3ca2a65918f7ad1c3bf0c344  gcc/testsuite/gcc.dg/plugin/must-tail-call-1.c
*************** b1a9c2af16dec0d49e4f96f176a99493  gcc/te
*** 30518,30528 ****
  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
! 3dacc28ee80a97ec959228a16ba0fa9d  gcc/testsuite/gcc.dg/plugin/plugin.exp
  5993f78076146bc00fb78515507d8926  gcc/testsuite/gcc.dg/plugin/plugindir1.c
  6c16298e3c814ad6dc33830276b317ae  gcc/testsuite/gcc.dg/plugin/plugindir2.c
  dd060b6843eb72c41145029a53533463  gcc/testsuite/gcc.dg/plugin/plugindir3.c
  970bcf06d65aba92e9f44a72105a9574  gcc/testsuite/gcc.dg/plugin/plugindir4.c
  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
--- 31914,31933 ----
  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
! 0f94b2d4f73bf00202efd69abbe04f7e  gcc/testsuite/gcc.dg/plugin/plugin.exp
  5993f78076146bc00fb78515507d8926  gcc/testsuite/gcc.dg/plugin/plugindir1.c
  6c16298e3c814ad6dc33830276b317ae  gcc/testsuite/gcc.dg/plugin/plugindir2.c
  dd060b6843eb72c41145029a53533463  gcc/testsuite/gcc.dg/plugin/plugindir3.c
  970bcf06d65aba92e9f44a72105a9574  gcc/testsuite/gcc.dg/plugin/plugindir4.c
+ db9d17878238b5a16b755cacbf33fdda  gcc/testsuite/gcc.dg/plugin/poly-int-01_plugin.c
+ 1f0246249b308d498be8ab39c4fc580f  gcc/testsuite/gcc.dg/plugin/poly-int-02_plugin.c
+ ffa9971268cd097ce7dd9f8b74a6c52e  gcc/testsuite/gcc.dg/plugin/poly-int-03_plugin.c
+ efa708c21ad7551e498d6b97aa054cb5  gcc/testsuite/gcc.dg/plugin/poly-int-04_plugin.c
+ 70ee3fe3dcb38410134a493575526c6f  gcc/testsuite/gcc.dg/plugin/poly-int-05_plugin.c
+ f932a68db380ed55129ab7dc6df6698a  gcc/testsuite/gcc.dg/plugin/poly-int-06_plugin.c
+ 09ef03b877a38491465105dcd1f6d410  gcc/testsuite/gcc.dg/plugin/poly-int-07_plugin.c
+ 57f33c5cba4ed25369a584b1ff775ed0  gcc/testsuite/gcc.dg/plugin/poly-int-test-1.c
+ 170fc5acb340c05ed9ef5136c904d5a5  gcc/testsuite/gcc.dg/plugin/poly-int-tests.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
*************** d1af5b003a508a2d28e4373e2cab8c24  gcc/te
*** 30540,30546 ****
  ce11f2489f1fcb28d7e75b367bd7e130  gcc/testsuite/gcc.dg/pointer-arith-7.c
  c55115022c217aa6026425a6847a9846  gcc/testsuite/gcc.dg/pointer-arith-8.c
  cec4c2edab704d04ba9649b787ed5274  gcc/testsuite/gcc.dg/pointer-arith-9.c
! e3ab0e7c9af95f03e7cd5ec88dab4a29  gcc/testsuite/gcc.dg/pointer-array-atomic.c
  36d129decd983b180727f51567ff7782  gcc/testsuite/gcc.dg/pointer-array-quals-1.c
  c74da1375203a3b1f93c21f689e6e5b5  gcc/testsuite/gcc.dg/pointer-array-quals-2.c
  560e02ab06396c9dce71b047a8a96f79  gcc/testsuite/gcc.dg/postincr-1.c
--- 31945,31951 ----
  ce11f2489f1fcb28d7e75b367bd7e130  gcc/testsuite/gcc.dg/pointer-arith-7.c
  c55115022c217aa6026425a6847a9846  gcc/testsuite/gcc.dg/pointer-arith-8.c
  cec4c2edab704d04ba9649b787ed5274  gcc/testsuite/gcc.dg/pointer-arith-9.c
! 42290d08dbf6f913b532061d99a25d7b  gcc/testsuite/gcc.dg/pointer-array-atomic.c
  36d129decd983b180727f51567ff7782  gcc/testsuite/gcc.dg/pointer-array-quals-1.c
  c74da1375203a3b1f93c21f689e6e5b5  gcc/testsuite/gcc.dg/pointer-array-quals-2.c
  560e02ab06396c9dce71b047a8a96f79  gcc/testsuite/gcc.dg/postincr-1.c
*************** e037582257371f62a3a039df4321225d  gcc/te
*** 30552,30563 ****
  8226e377d45ef0ffeb7badfb04740ab9  gcc/testsuite/gcc.dg/pr10392-1.c
  d8ac6e8cccf7bcb1070140ae44ef117a  gcc/testsuite/gcc.dg/pr10474.c
  860f163dcd0b252ea3f85323bc959a7d  gcc/testsuite/gcc.dg/pr11459-1.c
! 252677ba52fb0198f1272e28d97ffca2  gcc/testsuite/gcc.dg/pr11492.c
  3b83403729a3686d25552352bf0c4577  gcc/testsuite/gcc.dg/pr11864-1.c
  bc5ddfbbc46f4e0cce1629d1b58d3090  gcc/testsuite/gcc.dg/pr12603.c
  72a2fca76cb69617ae36bab93c7ec0d7  gcc/testsuite/gcc.dg/pr12625-1.c
  6f0ef61e5a12db5f11da839b2988c5e1  gcc/testsuite/gcc.dg/pr13519-1.c
! d1767fc8b5c20a69a2833b259cfc109f  gcc/testsuite/gcc.dg/pr13804-1.c
  2a52cc05fb1415e0eafbc468a7ccc138  gcc/testsuite/gcc.dg/pr14092-1.c
  55536b90ebfecff67ebcf9a7a3946401  gcc/testsuite/gcc.dg/pr14475.c
  cae214a5f7fd63153f93c3eb8b75888e  gcc/testsuite/gcc.dg/pr14649-1.c
--- 31957,31968 ----
  8226e377d45ef0ffeb7badfb04740ab9  gcc/testsuite/gcc.dg/pr10392-1.c
  d8ac6e8cccf7bcb1070140ae44ef117a  gcc/testsuite/gcc.dg/pr10474.c
  860f163dcd0b252ea3f85323bc959a7d  gcc/testsuite/gcc.dg/pr11459-1.c
! e164a736918661d669864e3645da290c  gcc/testsuite/gcc.dg/pr11492.c
  3b83403729a3686d25552352bf0c4577  gcc/testsuite/gcc.dg/pr11864-1.c
  bc5ddfbbc46f4e0cce1629d1b58d3090  gcc/testsuite/gcc.dg/pr12603.c
  72a2fca76cb69617ae36bab93c7ec0d7  gcc/testsuite/gcc.dg/pr12625-1.c
  6f0ef61e5a12db5f11da839b2988c5e1  gcc/testsuite/gcc.dg/pr13519-1.c
! 86dc5cfaafafc79e11d0559d71baea6b  gcc/testsuite/gcc.dg/pr13804-1.c
  2a52cc05fb1415e0eafbc468a7ccc138  gcc/testsuite/gcc.dg/pr14092-1.c
  55536b90ebfecff67ebcf9a7a3946401  gcc/testsuite/gcc.dg/pr14475.c
  cae214a5f7fd63153f93c3eb8b75888e  gcc/testsuite/gcc.dg/pr14649-1.c
*************** b9ea6dc62f3ee8bb30121d7083d5ddf5  gcc/te
*** 30567,30573 ****
  32ebb90eac91472473a4f1266f172937  gcc/testsuite/gcc.dg/pr14963.c
  0f67deb0f56899efc7603592768970fa  gcc/testsuite/gcc.dg/pr15236.c
  383dac9706203dccb1d16f8f964abd7a  gcc/testsuite/gcc.dg/pr15347.c
! 776425d170968849386aa2c0c2231b04  gcc/testsuite/gcc.dg/pr15360-1.c
  a77ea144acdbffc9396abf791b596c77  gcc/testsuite/gcc.dg/pr15443-1.c
  16bd5a9cf4f0910000410657a45ba488  gcc/testsuite/gcc.dg/pr15443-2.c
  d18b253e64885dde6f5e4bab15c651ed  gcc/testsuite/gcc.dg/pr15649-1.c
--- 31972,31978 ----
  32ebb90eac91472473a4f1266f172937  gcc/testsuite/gcc.dg/pr14963.c
  0f67deb0f56899efc7603592768970fa  gcc/testsuite/gcc.dg/pr15236.c
  383dac9706203dccb1d16f8f964abd7a  gcc/testsuite/gcc.dg/pr15347.c
! 0d9f7d69e96388f696d167790c41e769  gcc/testsuite/gcc.dg/pr15360-1.c
  a77ea144acdbffc9396abf791b596c77  gcc/testsuite/gcc.dg/pr15443-1.c
  16bd5a9cf4f0910000410657a45ba488  gcc/testsuite/gcc.dg/pr15443-2.c
  d18b253e64885dde6f5e4bab15c651ed  gcc/testsuite/gcc.dg/pr15649-1.c
*************** fda269538ec6cb5fa7f058ae0ca2954d  gcc/te
*** 30644,30650 ****
  eaac03a990c4657b7e44f2f7a43e75ff  gcc/testsuite/gcc.dg/pr20126.c
  62757cb3c0e720fb1560a8224b08debd  gcc/testsuite/gcc.dg/pr20130-1.c
  2bca92aea2b5219d9409f9b42e816ce9  gcc/testsuite/gcc.dg/pr20216.c
! 1bf94058c2cc16a0e2a898eedce4b301  gcc/testsuite/gcc.dg/pr20245-1.c
  26e47b2fb70e7148fd1fc9e8d1689802  gcc/testsuite/gcc.dg/pr20368-1.c
  d6e25a17fad755f72c1380eff3753639  gcc/testsuite/gcc.dg/pr20368-2.c
  daf6aeee0d8079da4dc044ea393f3dec  gcc/testsuite/gcc.dg/pr20368-3.c
--- 32049,32055 ----
  eaac03a990c4657b7e44f2f7a43e75ff  gcc/testsuite/gcc.dg/pr20126.c
  62757cb3c0e720fb1560a8224b08debd  gcc/testsuite/gcc.dg/pr20130-1.c
  2bca92aea2b5219d9409f9b42e816ce9  gcc/testsuite/gcc.dg/pr20216.c
! e4f235bc7fce90d315b3c59275619ff9  gcc/testsuite/gcc.dg/pr20245-1.c
  26e47b2fb70e7148fd1fc9e8d1689802  gcc/testsuite/gcc.dg/pr20368-1.c
  d6e25a17fad755f72c1380eff3753639  gcc/testsuite/gcc.dg/pr20368-2.c
  daf6aeee0d8079da4dc044ea393f3dec  gcc/testsuite/gcc.dg/pr20368-3.c
*************** e316cb920a9eeb2e96d6ff0071b4e1e9  gcc/te
*** 30660,30666 ****
  7b876d09593734c8cf12eb56eee155e4  gcc/testsuite/gcc.dg/pr21085.c
  f249c8e4714cd5737b79a74e42be5c46  gcc/testsuite/gcc.dg/pr21282.c
  3a005f57879f3d6575f529bdf1d45e71  gcc/testsuite/gcc.dg/pr21419.c
! 242ab26fa74a3d75f3b0370c51db1883  gcc/testsuite/gcc.dg/pr21643.c
  6eb70c44077eefcd9928219727af399b  gcc/testsuite/gcc.dg/pr21709-1.c
  976425aba6999b8696d3181fd5853a99  gcc/testsuite/gcc.dg/pr21858.c
  17409ff77d84a8feb4e2504dd2df58e4  gcc/testsuite/gcc.dg/pr21921.c
--- 32065,32071 ----
  7b876d09593734c8cf12eb56eee155e4  gcc/testsuite/gcc.dg/pr21085.c
  f249c8e4714cd5737b79a74e42be5c46  gcc/testsuite/gcc.dg/pr21282.c
  3a005f57879f3d6575f529bdf1d45e71  gcc/testsuite/gcc.dg/pr21419.c
! 6a03beed7b76a93412ff685e38fb7c52  gcc/testsuite/gcc.dg/pr21643.c
  6eb70c44077eefcd9928219727af399b  gcc/testsuite/gcc.dg/pr21709-1.c
  976425aba6999b8696d3181fd5853a99  gcc/testsuite/gcc.dg/pr21858.c
  17409ff77d84a8feb4e2504dd2df58e4  gcc/testsuite/gcc.dg/pr21921.c
*************** de415527b9fd0e4032c3eebf5c2a3bbd  gcc/te
*** 30707,30713 ****
  791852dc0c5508eb25d124c355b685c2  gcc/testsuite/gcc.dg/pr25795-1.c
  2e949b10e3680017705968a8f64745c1  gcc/testsuite/gcc.dg/pr25795.c
  da0cb96a0c3926625da711670cf3ef5e  gcc/testsuite/gcc.dg/pr25801.c
! 71dd1034d09800dd5ebae28983257b40  gcc/testsuite/gcc.dg/pr25805.c
  c0d1cc924a53b0a521bab093ec44326b  gcc/testsuite/gcc.dg/pr26004.c
  c5ce5fe41cd57ea875809b46fc5f851f  gcc/testsuite/gcc.dg/pr26427.c
  f18352e5e12ab03475fa28729032b510  gcc/testsuite/gcc.dg/pr26570.c
--- 32112,32118 ----
  791852dc0c5508eb25d124c355b685c2  gcc/testsuite/gcc.dg/pr25795-1.c
  2e949b10e3680017705968a8f64745c1  gcc/testsuite/gcc.dg/pr25795.c
  da0cb96a0c3926625da711670cf3ef5e  gcc/testsuite/gcc.dg/pr25801.c
! 92f6033b3bd988e0f601edd77c2b1463  gcc/testsuite/gcc.dg/pr25805.c
  c0d1cc924a53b0a521bab093ec44326b  gcc/testsuite/gcc.dg/pr26004.c
  c5ce5fe41cd57ea875809b46fc5f851f  gcc/testsuite/gcc.dg/pr26427.c
  f18352e5e12ab03475fa28729032b510  gcc/testsuite/gcc.dg/pr26570.c
*************** c34ca8b7706e35c4ae280fe610fab224  gcc/te
*** 30715,30721 ****
  b7d2ff448b5eb827f486bdeda5184ff3  gcc/testsuite/gcc.dg/pr26717.c
  ced7aaee2ed382ba4e4be8a202b00641  gcc/testsuite/gcc.dg/pr26719.c
  4d7a59849fbcea8fcec102ebc0771a9e  gcc/testsuite/gcc.dg/pr26729-1.c
! 9511b3c8a0dd172246d0c5a97ec97bb6  gcc/testsuite/gcc.dg/pr26865.c
  b1b856b73b84d80b21155d7584fa8426  gcc/testsuite/gcc.dg/pr26961-1.c
  e48b98be698252355b5cf78b47d7f61a  gcc/testsuite/gcc.dg/pr26983.c
  5ee82eec634c979d583a0b340d4203e2  gcc/testsuite/gcc.dg/pr27003.c
--- 32120,32126 ----
  b7d2ff448b5eb827f486bdeda5184ff3  gcc/testsuite/gcc.dg/pr26717.c
  ced7aaee2ed382ba4e4be8a202b00641  gcc/testsuite/gcc.dg/pr26719.c
  4d7a59849fbcea8fcec102ebc0771a9e  gcc/testsuite/gcc.dg/pr26729-1.c
! 82af7696ef85ee1a9ee206168fc23567  gcc/testsuite/gcc.dg/pr26865.c
  b1b856b73b84d80b21155d7584fa8426  gcc/testsuite/gcc.dg/pr26961-1.c
  e48b98be698252355b5cf78b47d7f61a  gcc/testsuite/gcc.dg/pr26983.c
  5ee82eec634c979d583a0b340d4203e2  gcc/testsuite/gcc.dg/pr27003.c
*************** e4f3145efd6f726eb1a895fc7b30130f  gcc/te
*** 30730,30754 ****
  d256e08501c4e93178e110069ebb6e3c  gcc/testsuite/gcc.dg/pr27382-1.c
  b5bcf94c5665741592389d0f787ce7e6  gcc/testsuite/gcc.dg/pr27382-2.c
  bb310fa72b2ed677db1c00a18a8a4420  gcc/testsuite/gcc.dg/pr27428-1.c
! 49115d30ee87808cf55678f9722fa231  gcc/testsuite/gcc.dg/pr27528.c
! 4f1cbc3fdf63026fbe0de16aaf297451  gcc/testsuite/gcc.dg/pr27531-1.c
  6a5239e67a6a04988307b7f422c7d2a1  gcc/testsuite/gcc.dg/pr27639.c
  14261cbe894cefc9ddf874210c6146e8  gcc/testsuite/gcc.dg/pr27671-2.c
  42c08da1a26d6744db2bae7f40da7455  gcc/testsuite/gcc.dg/pr27758.c
  8ac7c35b2745d177e2559b278f9d6d71  gcc/testsuite/gcc.dg/pr27802-1.c
  a14ffebc9fbe609a7b7678272f818889  gcc/testsuite/gcc.dg/pr27861-1.c
! cd7bf2f38c6a1b6d7b2a2d19328f3f33  gcc/testsuite/gcc.dg/pr27953.c
  bf0e086ad1af577cc43d4d80fa449126  gcc/testsuite/gcc.dg/pr27959-2.c
  f38e89c3a82919f847a667fd3b9cf78b  gcc/testsuite/gcc.dg/pr27959.c
  440f6c0c584bffe7e30eadd164398867  gcc/testsuite/gcc.dg/pr28121.c
  d7f5dcf05d3f72107ccaabcdd6fe1996  gcc/testsuite/gcc.dg/pr28162.c
  65027578f132f3cd54a11f6e61758f57  gcc/testsuite/gcc.dg/pr28187.c
! 98293b098129fc12dac448ed5c3089e4  gcc/testsuite/gcc.dg/pr28243.c
  000926ceecb1d85b1e4bfdb065d5daa2  gcc/testsuite/gcc.dg/pr28322-2.c
  79c84b5e30a8c1fb817f7384373e7371  gcc/testsuite/gcc.dg/pr28322-3.c
  79167cdbb3665d767c6639b45245b52b  gcc/testsuite/gcc.dg/pr28322.c
  555ccd3be6024dfa99443d9c51c30df6  gcc/testsuite/gcc.dg/pr28402.c
! ab4c07eb1c61e3013c2fc08880864984  gcc/testsuite/gcc.dg/pr28419.c
  2cc7fd50d664b38fbfc93f1b52c5fac2  gcc/testsuite/gcc.dg/pr28574.c
  eeb7402398e702c0c6d5fd5907235177  gcc/testsuite/gcc.dg/pr28685-1.c
  0f5d0ea66f65798abba5fa2cc198c910  gcc/testsuite/gcc.dg/pr28726.c
--- 32135,32159 ----
  d256e08501c4e93178e110069ebb6e3c  gcc/testsuite/gcc.dg/pr27382-1.c
  b5bcf94c5665741592389d0f787ce7e6  gcc/testsuite/gcc.dg/pr27382-2.c
  bb310fa72b2ed677db1c00a18a8a4420  gcc/testsuite/gcc.dg/pr27428-1.c
! 15850f75dc98458a9cfdbde7513cc5ce  gcc/testsuite/gcc.dg/pr27528.c
! ac5f11c55cd3b36111eefd9597918ef1  gcc/testsuite/gcc.dg/pr27531-1.c
  6a5239e67a6a04988307b7f422c7d2a1  gcc/testsuite/gcc.dg/pr27639.c
  14261cbe894cefc9ddf874210c6146e8  gcc/testsuite/gcc.dg/pr27671-2.c
  42c08da1a26d6744db2bae7f40da7455  gcc/testsuite/gcc.dg/pr27758.c
  8ac7c35b2745d177e2559b278f9d6d71  gcc/testsuite/gcc.dg/pr27802-1.c
  a14ffebc9fbe609a7b7678272f818889  gcc/testsuite/gcc.dg/pr27861-1.c
! 7bc556dad247ccc3028d6bf3b3ec678a  gcc/testsuite/gcc.dg/pr27953.c
  bf0e086ad1af577cc43d4d80fa449126  gcc/testsuite/gcc.dg/pr27959-2.c
  f38e89c3a82919f847a667fd3b9cf78b  gcc/testsuite/gcc.dg/pr27959.c
  440f6c0c584bffe7e30eadd164398867  gcc/testsuite/gcc.dg/pr28121.c
  d7f5dcf05d3f72107ccaabcdd6fe1996  gcc/testsuite/gcc.dg/pr28162.c
  65027578f132f3cd54a11f6e61758f57  gcc/testsuite/gcc.dg/pr28187.c
! c626cffc77be882766b465683b0deae6  gcc/testsuite/gcc.dg/pr28243.c
  000926ceecb1d85b1e4bfdb065d5daa2  gcc/testsuite/gcc.dg/pr28322-2.c
  79c84b5e30a8c1fb817f7384373e7371  gcc/testsuite/gcc.dg/pr28322-3.c
  79167cdbb3665d767c6639b45245b52b  gcc/testsuite/gcc.dg/pr28322.c
  555ccd3be6024dfa99443d9c51c30df6  gcc/testsuite/gcc.dg/pr28402.c
! 3c3671d1b22803c06807dcf6e0328ce5  gcc/testsuite/gcc.dg/pr28419.c
  2cc7fd50d664b38fbfc93f1b52c5fac2  gcc/testsuite/gcc.dg/pr28574.c
  eeb7402398e702c0c6d5fd5907235177  gcc/testsuite/gcc.dg/pr28685-1.c
  0f5d0ea66f65798abba5fa2cc198c910  gcc/testsuite/gcc.dg/pr28726.c
*************** e3b57c8d1f533f87408a146a3e59c6b4  gcc/te
*** 30889,30915 ****
  c6ec44106e2b0ff4fa9d0683f6a15a2a  gcc/testsuite/gcc.dg/pr34965.c
  5b5b5499ef74c27909997d5aebf4a308  gcc/testsuite/gcc.dg/pr34969.c
  78c676c6637b4d7cf784aaf33aaa6b18  gcc/testsuite/gcc.dg/pr34985.c
! a517b445ba51ad6379d248a9eda3e8b4  gcc/testsuite/gcc.dg/pr35045.c
  60e82fe61c7cda479360dc5a6197c43d  gcc/testsuite/gcc.dg/pr35065.c
  22ec8f39c04883f17d4e090253532373  gcc/testsuite/gcc.dg/pr35258.c
  d14b67d1db0a48b2e613fbea5354ba82  gcc/testsuite/gcc.dg/pr35264.c
  65d3a8e23c6f1baee05aa3acffb06f0f  gcc/testsuite/gcc.dg/pr35334.c
! e3789ec135cf7088f6be4ff762ad8a51  gcc/testsuite/gcc.dg/pr35430.c
  628d515dcc91285efac7a84fc9c64310  gcc/testsuite/gcc.dg/pr35440.c
  38e96d4867f11c0b46c53480c8b5b3b2  gcc/testsuite/gcc.dg/pr35442.c
  b54af1aa11b43acb774c5e2f4767d1e0  gcc/testsuite/gcc.dg/pr35443.c
  e927209a69ce8f1f28dd8c445f10d65e  gcc/testsuite/gcc.dg/pr35445.c
  b2fc3e6de02802d2f1bd47a32406afb0  gcc/testsuite/gcc.dg/pr35468.c
  b618f891f270bb653c8a5d840b5df77c  gcc/testsuite/gcc.dg/pr35616.c
! db90b45317b80a60658d7a49b18c58f3  gcc/testsuite/gcc.dg/pr35635.c
! 67627a06b08c6ec42da7c22f2208f726  gcc/testsuite/gcc.dg/pr35691-1.c
! 2eae9f5560de6ed9caf4508f9941233e  gcc/testsuite/gcc.dg/pr35691-2.c
  faa612b3f1aaf9de502b94415da3cd52  gcc/testsuite/gcc.dg/pr35701.c
  3999107287b29353d8a8c78fe61341ea  gcc/testsuite/gcc.dg/pr35729.c
  f5b6d316a7f0ff7d4c3c9f2448831051  gcc/testsuite/gcc.dg/pr35736.c
  ad031ad703a05e5be72cea154da02616  gcc/testsuite/gcc.dg/pr35742.c
  e19df95f209b2da05645180e97cb9dcd  gcc/testsuite/gcc.dg/pr35746.c
! b5af6c588a5d9253b348eddef4d7e05c  gcc/testsuite/gcc.dg/pr35899.c
  97f34ebb78ee6abd37e13bcd1904a940  gcc/testsuite/gcc.dg/pr36015.c
  34ed82b8badf0d65abc53b4a49451eff  gcc/testsuite/gcc.dg/pr36017.c
  ca041af75fe0f09cf1a4cb24575fa6b4  gcc/testsuite/gcc.dg/pr36111.c
--- 32294,32325 ----
  c6ec44106e2b0ff4fa9d0683f6a15a2a  gcc/testsuite/gcc.dg/pr34965.c
  5b5b5499ef74c27909997d5aebf4a308  gcc/testsuite/gcc.dg/pr34969.c
  78c676c6637b4d7cf784aaf33aaa6b18  gcc/testsuite/gcc.dg/pr34985.c
! ad4099e35e26e0f64e2989bf55283df4  gcc/testsuite/gcc.dg/pr35045.c
  60e82fe61c7cda479360dc5a6197c43d  gcc/testsuite/gcc.dg/pr35065.c
  22ec8f39c04883f17d4e090253532373  gcc/testsuite/gcc.dg/pr35258.c
  d14b67d1db0a48b2e613fbea5354ba82  gcc/testsuite/gcc.dg/pr35264.c
  65d3a8e23c6f1baee05aa3acffb06f0f  gcc/testsuite/gcc.dg/pr35334.c
! 5aa19e4a04eaa3f8989b2921c98d6749  gcc/testsuite/gcc.dg/pr35430.c
  628d515dcc91285efac7a84fc9c64310  gcc/testsuite/gcc.dg/pr35440.c
+ d29fecf82e059aa0d64f70de52b8e9fc  gcc/testsuite/gcc.dg/pr35441.c
  38e96d4867f11c0b46c53480c8b5b3b2  gcc/testsuite/gcc.dg/pr35442.c
  b54af1aa11b43acb774c5e2f4767d1e0  gcc/testsuite/gcc.dg/pr35443.c
  e927209a69ce8f1f28dd8c445f10d65e  gcc/testsuite/gcc.dg/pr35445.c
  b2fc3e6de02802d2f1bd47a32406afb0  gcc/testsuite/gcc.dg/pr35468.c
  b618f891f270bb653c8a5d840b5df77c  gcc/testsuite/gcc.dg/pr35616.c
! 6da7287427ee484dc0f3fd2734b36d08  gcc/testsuite/gcc.dg/pr35635.c
! 44b83f617c614629827d1f1b0d6c7b8a  gcc/testsuite/gcc.dg/pr35691-1.c
! d3911bb3c6aab62f6700e405b820997d  gcc/testsuite/gcc.dg/pr35691-2.c
! 6d6312e39e0eae6331b162dfaff193b2  gcc/testsuite/gcc.dg/pr35691-3.c
! ae639034b1af907a5cd445db6bef8852  gcc/testsuite/gcc.dg/pr35691-4.c
! 2887d8167aa2307bebef1f44827b14eb  gcc/testsuite/gcc.dg/pr35691-5.c
! 72e4b4a65273bea76bc0a401b7f0f50d  gcc/testsuite/gcc.dg/pr35691-6.c
  faa612b3f1aaf9de502b94415da3cd52  gcc/testsuite/gcc.dg/pr35701.c
  3999107287b29353d8a8c78fe61341ea  gcc/testsuite/gcc.dg/pr35729.c
  f5b6d316a7f0ff7d4c3c9f2448831051  gcc/testsuite/gcc.dg/pr35736.c
  ad031ad703a05e5be72cea154da02616  gcc/testsuite/gcc.dg/pr35742.c
  e19df95f209b2da05645180e97cb9dcd  gcc/testsuite/gcc.dg/pr35746.c
! 5cf1f42c9e8d925771759237eaf58b21  gcc/testsuite/gcc.dg/pr35899.c
  97f34ebb78ee6abd37e13bcd1904a940  gcc/testsuite/gcc.dg/pr36015.c
  34ed82b8badf0d65abc53b4a49451eff  gcc/testsuite/gcc.dg/pr36017.c
  ca041af75fe0f09cf1a4cb24575fa6b4  gcc/testsuite/gcc.dg/pr36111.c
*************** b488d34c7b3aa12ead8ec9d6366fd38f  gcc/te
*** 30948,30960 ****
  a4dc11944afe2f20d29bdfb6c415fafe  gcc/testsuite/gcc.dg/pr37438.c
  37c7e3fbf5444b1ef503314253488c4d  gcc/testsuite/gcc.dg/pr37529.c
  64985c2e3ea62a6f0a583cc43d30f253  gcc/testsuite/gcc.dg/pr37544.c
! 3f32945054fcc5086ea6a2c6218d8031  gcc/testsuite/gcc.dg/pr37561.c
  d146e832dd4ee057ad8214694a2ac46a  gcc/testsuite/gcc.dg/pr37645.c
  4b53a60f878553b9bffbbfe5f70a29b4  gcc/testsuite/gcc.dg/pr37663.c
  13e74ddfc19dc7d9893c070c8c8700b2  gcc/testsuite/gcc.dg/pr37772.c
  719401f1134749be8a44c5d441b5adac  gcc/testsuite/gcc.dg/pr37858.c
  665b15b34685aeca9b4018f445744841  gcc/testsuite/gcc.dg/pr37879.c
! 020ca967ac6f4fbeecbe7f8394a1592f  gcc/testsuite/gcc.dg/pr37908.c
  db52e3c900158bbd53c044262ce17db8  gcc/testsuite/gcc.dg/pr37985.c
  8f3b13c6410be9883875c2e125a8bde6  gcc/testsuite/gcc.dg/pr38140.c
  737872aabece6d541d206352bbe21bf1  gcc/testsuite/gcc.dg/pr38200.c
--- 32358,32370 ----
  a4dc11944afe2f20d29bdfb6c415fafe  gcc/testsuite/gcc.dg/pr37438.c
  37c7e3fbf5444b1ef503314253488c4d  gcc/testsuite/gcc.dg/pr37529.c
  64985c2e3ea62a6f0a583cc43d30f253  gcc/testsuite/gcc.dg/pr37544.c
! f79005b576aec1507786e1e3ba777a45  gcc/testsuite/gcc.dg/pr37561.c
  d146e832dd4ee057ad8214694a2ac46a  gcc/testsuite/gcc.dg/pr37645.c
  4b53a60f878553b9bffbbfe5f70a29b4  gcc/testsuite/gcc.dg/pr37663.c
  13e74ddfc19dc7d9893c070c8c8700b2  gcc/testsuite/gcc.dg/pr37772.c
  719401f1134749be8a44c5d441b5adac  gcc/testsuite/gcc.dg/pr37858.c
  665b15b34685aeca9b4018f445744841  gcc/testsuite/gcc.dg/pr37879.c
! ea91c1249db9d61bd6b91353da853fe1  gcc/testsuite/gcc.dg/pr37908.c
  db52e3c900158bbd53c044262ce17db8  gcc/testsuite/gcc.dg/pr37985.c
  8f3b13c6410be9883875c2e125a8bde6  gcc/testsuite/gcc.dg/pr38140.c
  737872aabece6d541d206352bbe21bf1  gcc/testsuite/gcc.dg/pr38200.c
*************** e51dd7a6f2ead559092825e217c87368  gcc/te
*** 30968,30974 ****
  5915c5c7fc49839f34f03a65cf176068  gcc/testsuite/gcc.dg/pr38615.c
  82c3e0d6ed612caad92415269a6765c3  gcc/testsuite/gcc.dg/pr38616.c
  5d6f4379586eb9833a49f2e4243c3ba1  gcc/testsuite/gcc.dg/pr38645.c
! 9a5c4b970edc0eebf360f0a03301fbf9  gcc/testsuite/gcc.dg/pr38700.c
  bad65e47f333c8daa35cc4f6641ad598  gcc/testsuite/gcc.dg/pr38902.c
  49ccb7f1781c0359bfb49883d74c80bd  gcc/testsuite/gcc.dg/pr38932.c
  0ccbbd97994baf827269e1498b782ccb  gcc/testsuite/gcc.dg/pr38934.c
--- 32378,32384 ----
  5915c5c7fc49839f34f03a65cf176068  gcc/testsuite/gcc.dg/pr38615.c
  82c3e0d6ed612caad92415269a6765c3  gcc/testsuite/gcc.dg/pr38616.c
  5d6f4379586eb9833a49f2e4243c3ba1  gcc/testsuite/gcc.dg/pr38645.c
! 68579ca444b74aa4f5335928bf0aa0af  gcc/testsuite/gcc.dg/pr38700.c
  bad65e47f333c8daa35cc4f6641ad598  gcc/testsuite/gcc.dg/pr38902.c
  49ccb7f1781c0359bfb49883d74c80bd  gcc/testsuite/gcc.dg/pr38932.c
  0ccbbd97994baf827269e1498b782ccb  gcc/testsuite/gcc.dg/pr38934.c
*************** bf0460f4944a44ec8a0385c139593c01  gcc/te
*** 30994,31000 ****
  401d0b2334d7648751c2b21460991c59  gcc/testsuite/gcc.dg/pr40031.c
  bf54b47020c229850882e82035530b8d  gcc/testsuite/gcc.dg/pr40172-1.c
  2bdc5ce60144eb515d37a43725e2eef1  gcc/testsuite/gcc.dg/pr40172-2.c
! bc60df2bc722cdb38211f9eb955b4ea9  gcc/testsuite/gcc.dg/pr40172-3.c
  dfa1bd7d9e005d1ba97b5f4aa8620bf8  gcc/testsuite/gcc.dg/pr40209.c
  6f9c52c86e856d178d1431556d339241  gcc/testsuite/gcc.dg/pr40340-1.c
  9a5e86861746bc8a48864b4576bc5951  gcc/testsuite/gcc.dg/pr40340-2.c
--- 32404,32410 ----
  401d0b2334d7648751c2b21460991c59  gcc/testsuite/gcc.dg/pr40031.c
  bf54b47020c229850882e82035530b8d  gcc/testsuite/gcc.dg/pr40172-1.c
  2bdc5ce60144eb515d37a43725e2eef1  gcc/testsuite/gcc.dg/pr40172-2.c
! 2b4273880db1d64030609ad6a84dec44  gcc/testsuite/gcc.dg/pr40172-3.c
  dfa1bd7d9e005d1ba97b5f4aa8620bf8  gcc/testsuite/gcc.dg/pr40209.c
  6f9c52c86e856d178d1431556d339241  gcc/testsuite/gcc.dg/pr40340-1.c
  9a5e86861746bc8a48864b4576bc5951  gcc/testsuite/gcc.dg/pr40340-2.c
*************** a5fbef8dc1ac30ffbaa04bb729109b3b  gcc/te
*** 31013,31023 ****
  3b0cbc09a7c7f5f18b7d1334db94a3f6  gcc/testsuite/gcc.dg/pr41033.c
  613278cdaf6528aece655f0d29bffa72  gcc/testsuite/gcc.dg/pr41123.c
  70564fcc0dc14b340ad199349421fd67  gcc/testsuite/gcc.dg/pr41232.c
! 590bc7f0d0041100a8779678c1882c5b  gcc/testsuite/gcc.dg/pr41241.c
  36150015563bcedc89d2fab0060de5af  gcc/testsuite/gcc.dg/pr41248.c
  bc059809ab4e6daf50b7a02da5cbf86b  gcc/testsuite/gcc.dg/pr41295.c
  debe1bb0f742ad6fe5c8e1d3952c624d  gcc/testsuite/gcc.dg/pr41340.c
! cba67ba162e642bd7a9f6a369c507852  gcc/testsuite/gcc.dg/pr41345.c
  5e470e4479566106d5d2e9abcb6f2094  gcc/testsuite/gcc.dg/pr41454.c
  04f8f3475a6f0b722dbcc364481cdeaf  gcc/testsuite/gcc.dg/pr41470.c
  b7283ec8ab60d5096a28517519a2231d  gcc/testsuite/gcc.dg/pr41488.c
--- 32423,32433 ----
  3b0cbc09a7c7f5f18b7d1334db94a3f6  gcc/testsuite/gcc.dg/pr41033.c
  613278cdaf6528aece655f0d29bffa72  gcc/testsuite/gcc.dg/pr41123.c
  70564fcc0dc14b340ad199349421fd67  gcc/testsuite/gcc.dg/pr41232.c
! a5f1881871e799cafefd8d4bca8781c9  gcc/testsuite/gcc.dg/pr41241.c
  36150015563bcedc89d2fab0060de5af  gcc/testsuite/gcc.dg/pr41248.c
  bc059809ab4e6daf50b7a02da5cbf86b  gcc/testsuite/gcc.dg/pr41295.c
  debe1bb0f742ad6fe5c8e1d3952c624d  gcc/testsuite/gcc.dg/pr41340.c
! a75ddf0203e934b595dc2e0b55e6f54d  gcc/testsuite/gcc.dg/pr41345.c
  5e470e4479566106d5d2e9abcb6f2094  gcc/testsuite/gcc.dg/pr41454.c
  04f8f3475a6f0b722dbcc364481cdeaf  gcc/testsuite/gcc.dg/pr41470.c
  b7283ec8ab60d5096a28517519a2231d  gcc/testsuite/gcc.dg/pr41488.c
*************** d5916a371adc05155c5b831f0fadd245  gcc/te
*** 31048,31068 ****
  fd2561f8ffdbf2efd8c87f1fb8e53787  gcc/testsuite/gcc.dg/pr42461.c
  991dbffb574b25d1cc587f088dbc8e79  gcc/testsuite/gcc.dg/pr42475.c
  dd813773ddcd69bb25ea94073ec4dc44  gcc/testsuite/gcc.dg/pr42611.c
! 4cc0904f68c20987bba3ace5713adaec  gcc/testsuite/gcc.dg/pr42629.c
! c5de0a96e93cbbce0553bcb88bb2381e  gcc/testsuite/gcc.dg/pr42630.c
! 2333a5b0f5816047e5cd7ee9f45d2278  gcc/testsuite/gcc.dg/pr42631.c
  fe703f1c5408673830a0564d9b17522c  gcc/testsuite/gcc.dg/pr42662.c
  8eecbd4ee2624d5bc0c82345d3068069  gcc/testsuite/gcc.dg/pr42685.c
  32bd49786a519a41137825e2e3983c6c  gcc/testsuite/gcc.dg/pr42715.c
! 28edb26ffa0d43f9e8cefeaa9a4b4faa  gcc/testsuite/gcc.dg/pr42719.c
! cc471cef0663532d2cd270a381a53fa5  gcc/testsuite/gcc.dg/pr42728.c
! f4f33614291346ddd1b2397294bac2a7  gcc/testsuite/gcc.dg/pr42889.c
! 79a63479fa41f81c2b1ef723262d5c8b  gcc/testsuite/gcc.dg/pr42916.c
  84489522fa054a18682dc4e8aeb724b8  gcc/testsuite/gcc.dg/pr42918.c
  65b1349fb774d994298eea8c32c8427c  gcc/testsuite/gcc.dg/pr42963.c
  531d499264bafebb26a3414da2306b20  gcc/testsuite/gcc.dg/pr43058.c
  151a2d949b038d9d1244f3e19bb4b884  gcc/testsuite/gcc.dg/pr43082.c
! 5d30b2bc478e183230024a603c8201db  gcc/testsuite/gcc.dg/pr43084.c
  2a33258322686de73d02b72c05d485c6  gcc/testsuite/gcc.dg/pr43139.c
  e98bfd1aab509bd5886484f9ca55873a  gcc/testsuite/gcc.dg/pr43157.c
  8293091465ce72da1738d4a5ae859b82  gcc/testsuite/gcc.dg/pr43211.c
--- 32458,32478 ----
  fd2561f8ffdbf2efd8c87f1fb8e53787  gcc/testsuite/gcc.dg/pr42461.c
  991dbffb574b25d1cc587f088dbc8e79  gcc/testsuite/gcc.dg/pr42475.c
  dd813773ddcd69bb25ea94073ec4dc44  gcc/testsuite/gcc.dg/pr42611.c
! d94d6937664a885f9bf24c1018abdaa1  gcc/testsuite/gcc.dg/pr42629.c
! 8cbe5dde872e66c385afc01577a0d084  gcc/testsuite/gcc.dg/pr42630.c
! 6c618a17b833100631a9622e82a77d10  gcc/testsuite/gcc.dg/pr42631.c
  fe703f1c5408673830a0564d9b17522c  gcc/testsuite/gcc.dg/pr42662.c
  8eecbd4ee2624d5bc0c82345d3068069  gcc/testsuite/gcc.dg/pr42685.c
  32bd49786a519a41137825e2e3983c6c  gcc/testsuite/gcc.dg/pr42715.c
! 5e8f9ce43e68bec9836d11ab1d6e269a  gcc/testsuite/gcc.dg/pr42719.c
! 74bc37eae73c8092104b06501867b2f5  gcc/testsuite/gcc.dg/pr42728.c
! f49c50dede91aa0fdea4b31a908d4bce  gcc/testsuite/gcc.dg/pr42889.c
! 3a750f992067d462980d3b7d8217476a  gcc/testsuite/gcc.dg/pr42916.c
  84489522fa054a18682dc4e8aeb724b8  gcc/testsuite/gcc.dg/pr42918.c
  65b1349fb774d994298eea8c32c8427c  gcc/testsuite/gcc.dg/pr42963.c
  531d499264bafebb26a3414da2306b20  gcc/testsuite/gcc.dg/pr43058.c
  151a2d949b038d9d1244f3e19bb4b884  gcc/testsuite/gcc.dg/pr43082.c
! ed02d018d5bc1bb1e7ed2b533187c8c0  gcc/testsuite/gcc.dg/pr43084.c
  2a33258322686de73d02b72c05d485c6  gcc/testsuite/gcc.dg/pr43139.c
  e98bfd1aab509bd5886484f9ca55873a  gcc/testsuite/gcc.dg/pr43157.c
  8293091465ce72da1738d4a5ae859b82  gcc/testsuite/gcc.dg/pr43211.c
*************** a538ba5435cd3b326641d9fa1ec6bd10  gcc/te
*** 31082,31088 ****
  d99f23b3a3c3fc3eb2ae1a4a37dcab7a  gcc/testsuite/gcc.dg/pr43562.c
  da3a11a81d6baa587f3928a163d7f343  gcc/testsuite/gcc.dg/pr43564.c
  d88647bf3a0b9bfd2f38c4b057a6bca3  gcc/testsuite/gcc.dg/pr43643.c
! 2828b3ab1c8f2dbb2db4c2b7968023dc  gcc/testsuite/gcc.dg/pr43670.c
  c0057c21378b571cccb57351b9ef9acd  gcc/testsuite/gcc.dg/pr43730.c
  24513a60f9d4450589b46353e396e399  gcc/testsuite/gcc.dg/pr43864-2.c
  5fd7dfa795890eb46d57b824f015d779  gcc/testsuite/gcc.dg/pr43864-3.c
--- 32492,32498 ----
  d99f23b3a3c3fc3eb2ae1a4a37dcab7a  gcc/testsuite/gcc.dg/pr43562.c
  da3a11a81d6baa587f3928a163d7f343  gcc/testsuite/gcc.dg/pr43564.c
  d88647bf3a0b9bfd2f38c4b057a6bca3  gcc/testsuite/gcc.dg/pr43643.c
! 3090799be3baca06a5ce4ba9b168c618  gcc/testsuite/gcc.dg/pr43670.c
  c0057c21378b571cccb57351b9ef9acd  gcc/testsuite/gcc.dg/pr43730.c
  24513a60f9d4450589b46353e396e399  gcc/testsuite/gcc.dg/pr43864-2.c
  5fd7dfa795890eb46d57b824f015d779  gcc/testsuite/gcc.dg/pr43864-3.c
*************** c0057c21378b571cccb57351b9ef9acd  gcc/te
*** 31090,31096 ****
  edeb8035df2844baaefa0393b87eb3a5  gcc/testsuite/gcc.dg/pr43864.c
  eca3d1dd5335a9db1ea0c2a98084a274  gcc/testsuite/gcc.dg/pr43971.c
  45fb81d3e797c178603b7671145854be  gcc/testsuite/gcc.dg/pr44012.c
! 60debdd5530c35f44c32726aa92494bc  gcc/testsuite/gcc.dg/pr44023.c
  28d76e2baa9fc2daa57af554cccedfcc  gcc/testsuite/gcc.dg/pr44024.c
  deb7c49143ede12a1adf05beb298554b  gcc/testsuite/gcc.dg/pr44028.c
  27f690cc17b3e7bc399bda66468428b1  gcc/testsuite/gcc.dg/pr44061.c
--- 32500,32506 ----
  edeb8035df2844baaefa0393b87eb3a5  gcc/testsuite/gcc.dg/pr43864.c
  eca3d1dd5335a9db1ea0c2a98084a274  gcc/testsuite/gcc.dg/pr43971.c
  45fb81d3e797c178603b7671145854be  gcc/testsuite/gcc.dg/pr44012.c
! 57f5ddd934cfd28f8caa8216fb63fcbc  gcc/testsuite/gcc.dg/pr44023.c
  28d76e2baa9fc2daa57af554cccedfcc  gcc/testsuite/gcc.dg/pr44024.c
  deb7c49143ede12a1adf05beb298554b  gcc/testsuite/gcc.dg/pr44028.c
  27f690cc17b3e7bc399bda66468428b1  gcc/testsuite/gcc.dg/pr44061.c
*************** deb7c49143ede12a1adf05beb298554b  gcc/te
*** 31100,31120 ****
  e40ffd248a42b62361a094f647b0e925  gcc/testsuite/gcc.dg/pr44214-1.c
  e9b2de145454672b086104e969ff36c5  gcc/testsuite/gcc.dg/pr44214-2.c
  1a75b23f0bd8c8dce9e3bf5828febd8a  gcc/testsuite/gcc.dg/pr44214-3.c
! 863ac2107d3ba2e04851f1b7dd2e0f04  gcc/testsuite/gcc.dg/pr44290-1.c
! f6da42df3ea457c02713b4d6671af554  gcc/testsuite/gcc.dg/pr44290-2.c
  bb2199db7870b161a13260231f545ee5  gcc/testsuite/gcc.dg/pr44337.c
  e08f11b28a2bddbd14cf967a5380cf4f  gcc/testsuite/gcc.dg/pr44393.c
  168ec47c95add9880c662c0010d47b20  gcc/testsuite/gcc.dg/pr44404.c
  4dc599ff3afcfec262412912ba03c3e7  gcc/testsuite/gcc.dg/pr44485.c
  a57b213a5d832995cda2482ed7a4feca  gcc/testsuite/gcc.dg/pr44509.c
  c06ac80d2c1abe06fc3a6414b44e7795  gcc/testsuite/gcc.dg/pr44539.c
! 2855096c414ecfb7319f0747f5304aac  gcc/testsuite/gcc.dg/pr44545.c
! b1faf159da2430511c15411c798fecbe  gcc/testsuite/gcc.dg/pr44606.c
  a85f2b0d69f1437e6fee5a4bcbc3317f  gcc/testsuite/gcc.dg/pr44674.c
  12a1f37d9558ab5a436327aee380db84  gcc/testsuite/gcc.dg/pr44699.c
  1dd339d0bc02f9a3a727d8be141f986a  gcc/testsuite/gcc.dg/pr44838.c
! 49671955008d5bb03c22bf4bee13687e  gcc/testsuite/gcc.dg/pr44964.c
! 355c69b5c876bde1ad4fc90720170996  gcc/testsuite/gcc.dg/pr44971.c
  d871198f1b5c0cdfc7011ededa0b3f76  gcc/testsuite/gcc.dg/pr44974.c
  f8d34eb80e2a3fd954f615a25de29a12  gcc/testsuite/gcc.dg/pr45055.c
  3ff8bb2cf90b6a53dc6afc05772869e1  gcc/testsuite/gcc.dg/pr45071.c
--- 32510,32530 ----
  e40ffd248a42b62361a094f647b0e925  gcc/testsuite/gcc.dg/pr44214-1.c
  e9b2de145454672b086104e969ff36c5  gcc/testsuite/gcc.dg/pr44214-2.c
  1a75b23f0bd8c8dce9e3bf5828febd8a  gcc/testsuite/gcc.dg/pr44214-3.c
! a29678a7a9a10ce14318386524146b3f  gcc/testsuite/gcc.dg/pr44290-1.c
! 07e15fee72b6b8163f45e89177103680  gcc/testsuite/gcc.dg/pr44290-2.c
  bb2199db7870b161a13260231f545ee5  gcc/testsuite/gcc.dg/pr44337.c
  e08f11b28a2bddbd14cf967a5380cf4f  gcc/testsuite/gcc.dg/pr44393.c
  168ec47c95add9880c662c0010d47b20  gcc/testsuite/gcc.dg/pr44404.c
  4dc599ff3afcfec262412912ba03c3e7  gcc/testsuite/gcc.dg/pr44485.c
  a57b213a5d832995cda2482ed7a4feca  gcc/testsuite/gcc.dg/pr44509.c
  c06ac80d2c1abe06fc3a6414b44e7795  gcc/testsuite/gcc.dg/pr44539.c
! 66257e3415e9df77a461d898d8b4b6f2  gcc/testsuite/gcc.dg/pr44545.c
! 20f7dc5bd4543539ebd86737722e6bb2  gcc/testsuite/gcc.dg/pr44606.c
  a85f2b0d69f1437e6fee5a4bcbc3317f  gcc/testsuite/gcc.dg/pr44674.c
  12a1f37d9558ab5a436327aee380db84  gcc/testsuite/gcc.dg/pr44699.c
  1dd339d0bc02f9a3a727d8be141f986a  gcc/testsuite/gcc.dg/pr44838.c
! f3c4c64f74497d3f3aa244503068274f  gcc/testsuite/gcc.dg/pr44964.c
! 9b981d2f1738047155ab10ace4b876e3  gcc/testsuite/gcc.dg/pr44971.c
  d871198f1b5c0cdfc7011ededa0b3f76  gcc/testsuite/gcc.dg/pr44974.c
  f8d34eb80e2a3fd954f615a25de29a12  gcc/testsuite/gcc.dg/pr45055.c
  3ff8bb2cf90b6a53dc6afc05772869e1  gcc/testsuite/gcc.dg/pr45071.c
*************** abca7742fabfd64fef16a64f69b2fe06  gcc/te
*** 31130,31145 ****
  7b605def789e669a2510c5a616861fa6  gcc/testsuite/gcc.dg/pr45352.c
  eff2c7246a923259b2428fad4cb5f5cc  gcc/testsuite/gcc.dg/pr45353.c
  91e284055b6dd97a7ffea2f84806bbc8  gcc/testsuite/gcc.dg/pr45415.c
! 7aec01fb4faf1b3a90df60736ce00c23  gcc/testsuite/gcc.dg/pr45416.c
! 5f3a60186e4134c2dfa8676cb00e5608  gcc/testsuite/gcc.dg/pr45449.c
! e468f4fc0eb98d90715e038a9e658234  gcc/testsuite/gcc.dg/pr45461.c
  048ec08391a5071f4c625e98696583fa  gcc/testsuite/gcc.dg/pr45472.c
  1f8018e44b320d2f914cf5d1be8b41e6  gcc/testsuite/gcc.dg/pr45506.c
  08042d04be82eb7742612b5d873877b2  gcc/testsuite/gcc.dg/pr45567.c
  a0ed5109e680d9ee459de2cef72ba4b0  gcc/testsuite/gcc.dg/pr45570.c
  bfb03a33fe8437ca13abfba21aa67c40  gcc/testsuite/gcc.dg/pr45652.c
  d995db936fc1fbac215f3e98d2ee3b5f  gcc/testsuite/gcc.dg/pr45733.c
! 61fece791305949bf9332138e910f3cb  gcc/testsuite/gcc.dg/pr45750.c
  3bb7f61b6d89b5098240a2f56d9e3c21  gcc/testsuite/gcc.dg/pr45819.c
  625619241c8006731b81ca6d31030592  gcc/testsuite/gcc.dg/pr45865.c
  f8bd7bccf885be2d8e8faf2887814075  gcc/testsuite/gcc.dg/pr45991.c
--- 32540,32555 ----
  7b605def789e669a2510c5a616861fa6  gcc/testsuite/gcc.dg/pr45352.c
  eff2c7246a923259b2428fad4cb5f5cc  gcc/testsuite/gcc.dg/pr45353.c
  91e284055b6dd97a7ffea2f84806bbc8  gcc/testsuite/gcc.dg/pr45415.c
! 64617afd4f2323212523394a3c593843  gcc/testsuite/gcc.dg/pr45416.c
! 84a6899eb2cbc177c70788101995f0dc  gcc/testsuite/gcc.dg/pr45449.c
! 6fdd669e0ce204028fa4c56551a45e22  gcc/testsuite/gcc.dg/pr45461.c
  048ec08391a5071f4c625e98696583fa  gcc/testsuite/gcc.dg/pr45472.c
  1f8018e44b320d2f914cf5d1be8b41e6  gcc/testsuite/gcc.dg/pr45506.c
  08042d04be82eb7742612b5d873877b2  gcc/testsuite/gcc.dg/pr45567.c
  a0ed5109e680d9ee459de2cef72ba4b0  gcc/testsuite/gcc.dg/pr45570.c
  bfb03a33fe8437ca13abfba21aa67c40  gcc/testsuite/gcc.dg/pr45652.c
  d995db936fc1fbac215f3e98d2ee3b5f  gcc/testsuite/gcc.dg/pr45733.c
! fd21915f93e5f58de2c6e20b2944d799  gcc/testsuite/gcc.dg/pr45750.c
  3bb7f61b6d89b5098240a2f56d9e3c21  gcc/testsuite/gcc.dg/pr45819.c
  625619241c8006731b81ca6d31030592  gcc/testsuite/gcc.dg/pr45865.c
  f8bd7bccf885be2d8e8faf2887814075  gcc/testsuite/gcc.dg/pr45991.c
*************** e4027da4dd29cf2deee0c56b7eb4187b  gcc/te
*** 31159,31166 ****
  bd2a9344f971f9fb29951b0169a27637  gcc/testsuite/gcc.dg/pr46255.c
  9deec327085e0021426559ae24f523a6  gcc/testsuite/gcc.dg/pr46288.c
  68021a4bf59a7075a9b1382b5cdd814e  gcc/testsuite/gcc.dg/pr46307.c
! 523d40dea0c3c200c3a2623a41800ad3  gcc/testsuite/gcc.dg/pr46309-2.c
! 9f250ff265b4f878bef381e15e685f6e  gcc/testsuite/gcc.dg/pr46309.c
  d2f1443d164b1d691134da37b60f2cf1  gcc/testsuite/gcc.dg/pr46315.c
  9d26fa5e79e48bd2318afed2a713a45d  gcc/testsuite/gcc.dg/pr46355.c
  4678517971747460e7eed94817974fda  gcc/testsuite/gcc.dg/pr46375.c
--- 32569,32576 ----
  bd2a9344f971f9fb29951b0169a27637  gcc/testsuite/gcc.dg/pr46255.c
  9deec327085e0021426559ae24f523a6  gcc/testsuite/gcc.dg/pr46288.c
  68021a4bf59a7075a9b1382b5cdd814e  gcc/testsuite/gcc.dg/pr46307.c
! b1a2742c2dc43d40b426d6289ef5070c  gcc/testsuite/gcc.dg/pr46309-2.c
! 0adb766c14678ceee4e95202e1366fc8  gcc/testsuite/gcc.dg/pr46309.c
  d2f1443d164b1d691134da37b60f2cf1  gcc/testsuite/gcc.dg/pr46315.c
  9d26fa5e79e48bd2318afed2a713a45d  gcc/testsuite/gcc.dg/pr46355.c
  4678517971747460e7eed94817974fda  gcc/testsuite/gcc.dg/pr46375.c
*************** fbce19089fab978e34fea848b036fbcc  gcc/te
*** 31182,31194 ****
  e478973da8a55aef7680c36d9a7d7205  gcc/testsuite/gcc.dg/pr46728-12.c
  f7c4d1e3881717b802b16c2bef4abca8  gcc/testsuite/gcc.dg/pr46728-6.c
  e1e8a8d9a97401bc5762052d1d16b8e5  gcc/testsuite/gcc.dg/pr46728-9.c
! eca33ed879b4dc0bf53c9d8c5808440b  gcc/testsuite/gcc.dg/pr46771.c
  afbf930beb3b6c1df80317e8533a6bcc  gcc/testsuite/gcc.dg/pr46777.c
  1ddfffc553bc8bb27eaf76923f4cdda2  gcc/testsuite/gcc.dg/pr46867.c
  fa4a2cb16b505629b4d174bc09463f10  gcc/testsuite/gcc.dg/pr46875.c
  7e1ccd11f7f60d11cccc0fd17c75edec  gcc/testsuite/gcc.dg/pr46878-1.c
  83088e7d8b1ae05887c9f64b9bc72d63  gcc/testsuite/gcc.dg/pr46893.c
  6f43e050720b7ae81fb3e21cd453e9e4  gcc/testsuite/gcc.dg/pr46909.c
  f5075f829e5d1cfe946f066fd234d42e  gcc/testsuite/gcc.dg/pr47028.c
  f2eac7690a0a3b7d4c76f174837fd7f0  gcc/testsuite/gcc.dg/pr47086.c
  d6e684ed82a9b125900505cf1cff152d  gcc/testsuite/gcc.dg/pr47201.c
--- 32592,32606 ----
  e478973da8a55aef7680c36d9a7d7205  gcc/testsuite/gcc.dg/pr46728-12.c
  f7c4d1e3881717b802b16c2bef4abca8  gcc/testsuite/gcc.dg/pr46728-6.c
  e1e8a8d9a97401bc5762052d1d16b8e5  gcc/testsuite/gcc.dg/pr46728-9.c
! 2eafbc484693ab8f909867c3a0e92e0b  gcc/testsuite/gcc.dg/pr46771.c
  afbf930beb3b6c1df80317e8533a6bcc  gcc/testsuite/gcc.dg/pr46777.c
  1ddfffc553bc8bb27eaf76923f4cdda2  gcc/testsuite/gcc.dg/pr46867.c
  fa4a2cb16b505629b4d174bc09463f10  gcc/testsuite/gcc.dg/pr46875.c
  7e1ccd11f7f60d11cccc0fd17c75edec  gcc/testsuite/gcc.dg/pr46878-1.c
  83088e7d8b1ae05887c9f64b9bc72d63  gcc/testsuite/gcc.dg/pr46893.c
  6f43e050720b7ae81fb3e21cd453e9e4  gcc/testsuite/gcc.dg/pr46909.c
+ 9696e2ef3801e4e92f1b2002fa521cf4  gcc/testsuite/gcc.dg/pr46921.c
+ 08f1dee44e26780e054c4c539748d59a  gcc/testsuite/gcc.dg/pr46932.c
  f5075f829e5d1cfe946f066fd234d42e  gcc/testsuite/gcc.dg/pr47028.c
  f2eac7690a0a3b7d4c76f174837fd7f0  gcc/testsuite/gcc.dg/pr47086.c
  d6e684ed82a9b125900505cf1cff152d  gcc/testsuite/gcc.dg/pr47201.c
*************** ab210e87d143d8c37c524f77c2ddb9c0  gcc/te
*** 31200,31217 ****
  e1b054caebf821a9b3eb3f99e7640d6d  gcc/testsuite/gcc.dg/pr47381-2.c
  64b1882c38c704fc9a97cc9fcfa2ae8d  gcc/testsuite/gcc.dg/pr47383.c
  c8e7fe4f857174f7ef7d461ea8740526  gcc/testsuite/gcc.dg/pr47391.c
! 7219ba8e92cbcb4b7d5914a3a8c0f832  gcc/testsuite/gcc.dg/pr47443.c
  a30bbbaa786a3accfca64b9ca05d750a  gcc/testsuite/gcc.dg/pr47446-1.c
  9aa582993aef2363f34d0acf8a74072c  gcc/testsuite/gcc.dg/pr47446-2.c
  b63b5dff0e6741aaadbd73abf09354a2  gcc/testsuite/gcc.dg/pr47555.c
  22264168622e336a38d788f5ef6906ba  gcc/testsuite/gcc.dg/pr47610.c
! c34dec72682ba3f520ea55cf97ed243b  gcc/testsuite/gcc.dg/pr47684.c
  de8f6616861b6d1833b342b736b8e231  gcc/testsuite/gcc.dg/pr47727.c
  3b64083362a630626668064503670306  gcc/testsuite/gcc.dg/pr47763.c
  7a2a85bfa0c03373633dd33dade6869f  gcc/testsuite/gcc.dg/pr47766.c
  735f2c72069e62d0984f7c9a0d65e6ea  gcc/testsuite/gcc.dg/pr47793.c
! 86e0df917ae97f5396dd9b8d1e19226c  gcc/testsuite/gcc.dg/pr47881.c
! de89105d77fab4f1c1161a2e9139a212  gcc/testsuite/gcc.dg/pr47893.c
  c9199dd4c92f0ffefd4e78b3e949d60c  gcc/testsuite/gcc.dg/pr47899.c
  0189febe6f5773718cce787cf5f65a31  gcc/testsuite/gcc.dg/pr47917.c
  bace128075344adae336fb1e86e43651  gcc/testsuite/gcc.dg/pr47991.c
--- 32612,32629 ----
  e1b054caebf821a9b3eb3f99e7640d6d  gcc/testsuite/gcc.dg/pr47381-2.c
  64b1882c38c704fc9a97cc9fcfa2ae8d  gcc/testsuite/gcc.dg/pr47383.c
  c8e7fe4f857174f7ef7d461ea8740526  gcc/testsuite/gcc.dg/pr47391.c
! ead5c1e647d045127a0268d679f8f1ff  gcc/testsuite/gcc.dg/pr47443.c
  a30bbbaa786a3accfca64b9ca05d750a  gcc/testsuite/gcc.dg/pr47446-1.c
  9aa582993aef2363f34d0acf8a74072c  gcc/testsuite/gcc.dg/pr47446-2.c
  b63b5dff0e6741aaadbd73abf09354a2  gcc/testsuite/gcc.dg/pr47555.c
  22264168622e336a38d788f5ef6906ba  gcc/testsuite/gcc.dg/pr47610.c
! 79a1201b0653e260781f90334ca15a82  gcc/testsuite/gcc.dg/pr47684.c
  de8f6616861b6d1833b342b736b8e231  gcc/testsuite/gcc.dg/pr47727.c
  3b64083362a630626668064503670306  gcc/testsuite/gcc.dg/pr47763.c
  7a2a85bfa0c03373633dd33dade6869f  gcc/testsuite/gcc.dg/pr47766.c
  735f2c72069e62d0984f7c9a0d65e6ea  gcc/testsuite/gcc.dg/pr47793.c
! 7ddbeb54acad63c0ed4538dde114415a  gcc/testsuite/gcc.dg/pr47881.c
! dbc5bc92f0366b40b8143542b31f2711  gcc/testsuite/gcc.dg/pr47893.c
  c9199dd4c92f0ffefd4e78b3e949d60c  gcc/testsuite/gcc.dg/pr47899.c
  0189febe6f5773718cce787cf5f65a31  gcc/testsuite/gcc.dg/pr47917.c
  bace128075344adae336fb1e86e43651  gcc/testsuite/gcc.dg/pr47991.c
*************** bace128075344adae336fb1e86e43651  gcc/te
*** 31219,31225 ****
  e3a905069941b54d512ecbf84029af70  gcc/testsuite/gcc.dg/pr48022-2.c
  7fa77c9fcc9e27b5464b0d8bd984e5d9  gcc/testsuite/gcc.dg/pr48062.c
  dbad6bf21c758cc9426e223a6921b19a  gcc/testsuite/gcc.dg/pr48067.c
! 299a1cc96910c7fc7c6343384b02bf2f  gcc/testsuite/gcc.dg/pr48134.c
  05f775e4b2c887cada1fe0d83a8aeb5a  gcc/testsuite/gcc.dg/pr48141.c
  ace83ed64690f39a9f100edd9f71563b  gcc/testsuite/gcc.dg/pr48144.c
  cff85b1acec8fdeb760ebc17f8564ad7  gcc/testsuite/gcc.dg/pr48156.c
--- 32631,32637 ----
  e3a905069941b54d512ecbf84029af70  gcc/testsuite/gcc.dg/pr48022-2.c
  7fa77c9fcc9e27b5464b0d8bd984e5d9  gcc/testsuite/gcc.dg/pr48062.c
  dbad6bf21c758cc9426e223a6921b19a  gcc/testsuite/gcc.dg/pr48067.c
! be00a8a02bef3dc23f87c37115049083  gcc/testsuite/gcc.dg/pr48134.c
  05f775e4b2c887cada1fe0d83a8aeb5a  gcc/testsuite/gcc.dg/pr48141.c
  ace83ed64690f39a9f100edd9f71563b  gcc/testsuite/gcc.dg/pr48144.c
  cff85b1acec8fdeb760ebc17f8564ad7  gcc/testsuite/gcc.dg/pr48156.c
*************** f0977dfbe87bab99c8368c823a543508  gcc/te
*** 31248,31254 ****
  c9cc6bab59a53095524a6f34b6d0ded7  gcc/testsuite/gcc.dg/pr48685.c
  52c454f48b61b8f7fd4498c7764bc28f  gcc/testsuite/gcc.dg/pr48739-1.c
  8acaed5e391c242a0ce50574dd9d158a  gcc/testsuite/gcc.dg/pr48739-2.c
! 061a2864e3678e778ed3db925d4566ac  gcc/testsuite/gcc.dg/pr48768.c
  f6530997317a266871e60509cf43f94e  gcc/testsuite/gcc.dg/pr48770.c
  13e79d5919a09656024792bef1dc6107  gcc/testsuite/gcc.dg/pr48774.c
  d873fa788d70de0810b207d9e26cd52a  gcc/testsuite/gcc.dg/pr48784-1.c
--- 32660,32666 ----
  c9cc6bab59a53095524a6f34b6d0ded7  gcc/testsuite/gcc.dg/pr48685.c
  52c454f48b61b8f7fd4498c7764bc28f  gcc/testsuite/gcc.dg/pr48739-1.c
  8acaed5e391c242a0ce50574dd9d158a  gcc/testsuite/gcc.dg/pr48739-2.c
! 2a456844d3bad47b0a4450cb304caaa4  gcc/testsuite/gcc.dg/pr48768.c
  f6530997317a266871e60509cf43f94e  gcc/testsuite/gcc.dg/pr48770.c
  13e79d5919a09656024792bef1dc6107  gcc/testsuite/gcc.dg/pr48774.c
  d873fa788d70de0810b207d9e26cd52a  gcc/testsuite/gcc.dg/pr48784-1.c
*************** a8a948567c5a4b38f3317e8b09ad6334  gcc/te
*** 31264,31270 ****
  8571c0fba63fcb77abc00bec9fbe2b28  gcc/testsuite/gcc.dg/pr49307.c
  f648b3ca8fa8dacfae5505b781aa9ac3  gcc/testsuite/gcc.dg/pr49496.c
  105ce738b907e2921457bf373adf97c7  gcc/testsuite/gcc.dg/pr49544.c
! 4afff2aa4884557da6704a06d236474f  gcc/testsuite/gcc.dg/pr49551.c
  278101dc56c6c92fe5b965c1bf9f4c01  gcc/testsuite/gcc.dg/pr49602.c
  cee7e9aebbf42a1e10d45436fcd9ac4a  gcc/testsuite/gcc.dg/pr49619.c
  57c18c96941d65f3b717abf870bf1120  gcc/testsuite/gcc.dg/pr49696.c
--- 32676,32682 ----
  8571c0fba63fcb77abc00bec9fbe2b28  gcc/testsuite/gcc.dg/pr49307.c
  f648b3ca8fa8dacfae5505b781aa9ac3  gcc/testsuite/gcc.dg/pr49496.c
  105ce738b907e2921457bf373adf97c7  gcc/testsuite/gcc.dg/pr49544.c
! 776f66afcc1d8eb2f17fab728edb3910  gcc/testsuite/gcc.dg/pr49551.c
  278101dc56c6c92fe5b965c1bf9f4c01  gcc/testsuite/gcc.dg/pr49602.c
  cee7e9aebbf42a1e10d45436fcd9ac4a  gcc/testsuite/gcc.dg/pr49619.c
  57c18c96941d65f3b717abf870bf1120  gcc/testsuite/gcc.dg/pr49696.c
*************** b850b1e7e2a95e6431f7fe7be385db98  gcc/te
*** 31276,31282 ****
  590b9b3402ccf36e438f58fa5509e12a  gcc/testsuite/gcc.dg/pr49994-1.c
  092da0089b6df1596e4597bc5551ffac  gcc/testsuite/gcc.dg/pr49994-2.c
  445e42fc409994732adcc5b2684798bf  gcc/testsuite/gcc.dg/pr49994-3.c
! f6f899e91728a036f3e0b964498ada26  gcc/testsuite/gcc.dg/pr50017.c
  26dbb2a58a185bfac394a30dd618f10a  gcc/testsuite/gcc.dg/pr50078.c
  6394459ef80e4802d8f8fb61295e504d  gcc/testsuite/gcc.dg/pr50132.c
  96d09f9e98945534f5590f510af30328  gcc/testsuite/gcc.dg/pr50133.c
--- 32688,32694 ----
  590b9b3402ccf36e438f58fa5509e12a  gcc/testsuite/gcc.dg/pr49994-1.c
  092da0089b6df1596e4597bc5551ffac  gcc/testsuite/gcc.dg/pr49994-2.c
  445e42fc409994732adcc5b2684798bf  gcc/testsuite/gcc.dg/pr49994-3.c
! 86c5d915fab63ec4e4abd896f6f68e1b  gcc/testsuite/gcc.dg/pr50017.c
  26dbb2a58a185bfac394a30dd618f10a  gcc/testsuite/gcc.dg/pr50078.c
  6394459ef80e4802d8f8fb61295e504d  gcc/testsuite/gcc.dg/pr50132.c
  96d09f9e98945534f5590f510af30328  gcc/testsuite/gcc.dg/pr50133.c
*************** fd89861b9252a0fb20bd9228ee0e3ce8  gcc/te
*** 31363,31376 ****
  32b30927820f59f30da88af1324b8559  gcc/testsuite/gcc.dg/pr52808.c
  e2ec6d72bdfd63430ec334fa1b08a13a  gcc/testsuite/gcc.dg/pr52862.c
  972a77d78979d9949f2962ab47e1409b  gcc/testsuite/gcc.dg/pr52880.c
! 3e3d8e4ed475a720242bddffef9c1a63  gcc/testsuite/gcc.dg/pr52904.c
  c4f54a6a3a20e90a2eafd3acc457a478  gcc/testsuite/gcc.dg/pr53060.c
  e115b4052218d07e0526d4569a8f75a0  gcc/testsuite/gcc.dg/pr53119.c
  ad9efc6ea1fff6fe6aadd886a38482a0  gcc/testsuite/gcc.dg/pr53153.c
  d26f1ab8cfff735e347c468d126c2d91  gcc/testsuite/gcc.dg/pr53174.c
  0012603eb1df3dd9383df82e98f31e59  gcc/testsuite/gcc.dg/pr53196-1.c
! 4f99f5e8f9ea8ff2a8af1be00e6e55fe  gcc/testsuite/gcc.dg/pr53196-2.c
! 2dd38c1c2cd41f4be443e8e5f127dd5a  gcc/testsuite/gcc.dg/pr53265.c
  2912333250e3b80ff4c207795536d58e  gcc/testsuite/gcc.dg/pr53352.c
  57e921520da91cbc0852ac1cd10eb6e8  gcc/testsuite/gcc.dg/pr53358.c
  cc29a67a573de0ec862520221e58add5  gcc/testsuite/gcc.dg/pr53532.c
--- 32775,32792 ----
  32b30927820f59f30da88af1324b8559  gcc/testsuite/gcc.dg/pr52808.c
  e2ec6d72bdfd63430ec334fa1b08a13a  gcc/testsuite/gcc.dg/pr52862.c
  972a77d78979d9949f2962ab47e1409b  gcc/testsuite/gcc.dg/pr52880.c
! 257e77438ad3ee1c091c74ad4c8c91da  gcc/testsuite/gcc.dg/pr52904.c
! 80c6adc387eaa2a9e054ddf154950483  gcc/testsuite/gcc.dg/pr53037-1.c
! 687a45190bd20644a479b84870042566  gcc/testsuite/gcc.dg/pr53037-2.c
! e2469406365dbe18ccd5ca0e7b696c26  gcc/testsuite/gcc.dg/pr53037-3.c
! f16f3d44fea276b207a89218aa511bc6  gcc/testsuite/gcc.dg/pr53037-4.c
  c4f54a6a3a20e90a2eafd3acc457a478  gcc/testsuite/gcc.dg/pr53060.c
  e115b4052218d07e0526d4569a8f75a0  gcc/testsuite/gcc.dg/pr53119.c
  ad9efc6ea1fff6fe6aadd886a38482a0  gcc/testsuite/gcc.dg/pr53153.c
  d26f1ab8cfff735e347c468d126c2d91  gcc/testsuite/gcc.dg/pr53174.c
  0012603eb1df3dd9383df82e98f31e59  gcc/testsuite/gcc.dg/pr53196-1.c
! 8c99041a376a4c7bbe63e41de153880f  gcc/testsuite/gcc.dg/pr53196-2.c
! 521293a31444852a950398a1cb3e9485  gcc/testsuite/gcc.dg/pr53265.c
  2912333250e3b80ff4c207795536d58e  gcc/testsuite/gcc.dg/pr53352.c
  57e921520da91cbc0852ac1cd10eb6e8  gcc/testsuite/gcc.dg/pr53358.c
  cc29a67a573de0ec862520221e58add5  gcc/testsuite/gcc.dg/pr53532.c
*************** a7ae641ae915d4d17cbfa2c497af7191  gcc/te
*** 31418,31424 ****
  9093b965e2d72b6ea9d041781ec3ac6e  gcc/testsuite/gcc.dg/pr55833.c
  738429a449f631e59942d4c4a1ea318f  gcc/testsuite/gcc.dg/pr55838.c
  975fc9540fd8b78f89dd99e0e945d6b0  gcc/testsuite/gcc.dg/pr55940.c
! b3068ce4a7dc800a7a96dd22132e1c8f  gcc/testsuite/gcc.dg/pr56023.c
  0fcfb919104f28d2093d6c78b1614e77  gcc/testsuite/gcc.dg/pr56035.c
  86c1bf5478aefe4c3ff08728c4e68621  gcc/testsuite/gcc.dg/pr56078.c
  cb845ae7ba346f54f548da655f6e553f  gcc/testsuite/gcc.dg/pr56094.c
--- 32834,32840 ----
  9093b965e2d72b6ea9d041781ec3ac6e  gcc/testsuite/gcc.dg/pr55833.c
  738429a449f631e59942d4c4a1ea318f  gcc/testsuite/gcc.dg/pr55838.c
  975fc9540fd8b78f89dd99e0e945d6b0  gcc/testsuite/gcc.dg/pr55940.c
! e474a9f468333b2411a7e9d789f58a2a  gcc/testsuite/gcc.dg/pr56023.c
  0fcfb919104f28d2093d6c78b1614e77  gcc/testsuite/gcc.dg/pr56035.c
  86c1bf5478aefe4c3ff08728c4e68621  gcc/testsuite/gcc.dg/pr56078.c
  cb845ae7ba346f54f548da655f6e553f  gcc/testsuite/gcc.dg/pr56094.c
*************** c18cf07a939ac4f202afcfc99dd196ee  gcc/te
*** 31428,31434 ****
  06bed06ab5a2d6848af476b5812692d7  gcc/testsuite/gcc.dg/pr56125.c
  ae61d6ef36c036005cfa8708ddee4ccb  gcc/testsuite/gcc.dg/pr56144.c
  0d3c5113440fef039272434edbeb2581  gcc/testsuite/gcc.dg/pr56167.c
! 0185138495096914e1468b38a54ed4bf  gcc/testsuite/gcc.dg/pr56228.c
  d49dc3b48eaa905ccfaa6054fcbc7232  gcc/testsuite/gcc.dg/pr56275.c
  b0bca21fde329a6739491ad61629bde7  gcc/testsuite/gcc.dg/pr56341-1.c
  f21905f3056d5edda991e23e59faeded  gcc/testsuite/gcc.dg/pr56341-2.c
--- 32844,32850 ----
  06bed06ab5a2d6848af476b5812692d7  gcc/testsuite/gcc.dg/pr56125.c
  ae61d6ef36c036005cfa8708ddee4ccb  gcc/testsuite/gcc.dg/pr56144.c
  0d3c5113440fef039272434edbeb2581  gcc/testsuite/gcc.dg/pr56167.c
! e60323e805460149e6ce87b53c1c369c  gcc/testsuite/gcc.dg/pr56228.c
  d49dc3b48eaa905ccfaa6054fcbc7232  gcc/testsuite/gcc.dg/pr56275.c
  b0bca21fde329a6739491ad61629bde7  gcc/testsuite/gcc.dg/pr56341-1.c
  f21905f3056d5edda991e23e59faeded  gcc/testsuite/gcc.dg/pr56341-2.c
*************** e4a2d97c5aa27b96f13bb39a2628cf46  gcc/te
*** 31444,31449 ****
--- 32860,32867 ----
  2534f2dabfd4bac8a897b73256d962ee  gcc/testsuite/gcc.dg/pr56724-1.c
  94613aef8331dce3090f3d0f2b06f4fc  gcc/testsuite/gcc.dg/pr56724-2.c
  fe7ed549d28272f92eefa456f8f14385  gcc/testsuite/gcc.dg/pr56724-3.c
+ bb5fccf7a55d79a7791b33fabe4c113e  gcc/testsuite/gcc.dg/pr56727-1.c
+ 8d521bcc9438026012a5f2794bcd6a27  gcc/testsuite/gcc.dg/pr56727-2.c
  b93ca323776283280bb9a60242ee3b5c  gcc/testsuite/gcc.dg/pr56809.c
  c190644fa957e1a9b70d4a1173fb83f8  gcc/testsuite/gcc.dg/pr56824.c
  4f0e0f47263f76400e1e9e51ba922fc5  gcc/testsuite/gcc.dg/pr56837.c
*************** f26f8c6b2b3adcb38915f56973447282  gcc/te
*** 31451,31457 ****
  df4b816776f2c4e40c56112e07abeeca  gcc/testsuite/gcc.dg/pr56890-1.c
  8fe731c15e241e6c041ba662739f3d48  gcc/testsuite/gcc.dg/pr56890-2.c
  9fb688d9b964a566c7e58955b48c1b97  gcc/testsuite/gcc.dg/pr56977.c
! aa69ebad811a51d2f424fb1acf13feb1  gcc/testsuite/gcc.dg/pr56980.c
  f224aa25f420ff42134db445f57d3753  gcc/testsuite/gcc.dg/pr56989.c
  a199dd9a526a075cfad6bc1678cc9062  gcc/testsuite/gcc.dg/pr56990.c
  652c6f195eab46e89dabc36583be9dcb  gcc/testsuite/gcc.dg/pr56992.c
--- 32869,32875 ----
  df4b816776f2c4e40c56112e07abeeca  gcc/testsuite/gcc.dg/pr56890-1.c
  8fe731c15e241e6c041ba662739f3d48  gcc/testsuite/gcc.dg/pr56890-2.c
  9fb688d9b964a566c7e58955b48c1b97  gcc/testsuite/gcc.dg/pr56977.c
! 319e60ea6466f7d8fca30c4b8900344e  gcc/testsuite/gcc.dg/pr56980.c
  f224aa25f420ff42134db445f57d3753  gcc/testsuite/gcc.dg/pr56989.c
  a199dd9a526a075cfad6bc1678cc9062  gcc/testsuite/gcc.dg/pr56990.c
  652c6f195eab46e89dabc36583be9dcb  gcc/testsuite/gcc.dg/pr56992.c
*************** a199dd9a526a075cfad6bc1678cc9062  gcc/te
*** 31467,31475 ****
  a7df18a8bb63d3ca237dbd1011053c66  gcc/testsuite/gcc.dg/pr57184.c
  2a8969343bb68ca2d5e51db3c5def7f4  gcc/testsuite/gcc.dg/pr57233.c
  e39c9c23ce048b3d87fe811194ae9d86  gcc/testsuite/gcc.dg/pr57286.c
! 6b101d2ee0b875b2ae8177de44458e90  gcc/testsuite/gcc.dg/pr57287-2.c
! 4446d50815f6e0746e71a03c7eb56fd9  gcc/testsuite/gcc.dg/pr57287.c
  f2ca35cbd43cf9bf71e9cbf3e52945f0  gcc/testsuite/gcc.dg/pr57300.c
  004a4f8fdc3d9f3d8f85ab84374cfcd6  gcc/testsuite/gcc.dg/pr57438-1.c
  2542153df9a655c66c2e42c88c5ee178  gcc/testsuite/gcc.dg/pr57438-2.c
  7c87b573539bed38c56258f64393c76b  gcc/testsuite/gcc.dg/pr57518.c
--- 32885,32894 ----
  a7df18a8bb63d3ca237dbd1011053c66  gcc/testsuite/gcc.dg/pr57184.c
  2a8969343bb68ca2d5e51db3c5def7f4  gcc/testsuite/gcc.dg/pr57233.c
  e39c9c23ce048b3d87fe811194ae9d86  gcc/testsuite/gcc.dg/pr57286.c
! 84e75a465bf5a0c5f3952147893574d4  gcc/testsuite/gcc.dg/pr57287-2.c
! c93c19af3912c5372099065c71ffba18  gcc/testsuite/gcc.dg/pr57287.c
  f2ca35cbd43cf9bf71e9cbf3e52945f0  gcc/testsuite/gcc.dg/pr57300.c
+ 8b752322466ded9ea7fe5603bd34f671  gcc/testsuite/gcc.dg/pr57371-5.c
  004a4f8fdc3d9f3d8f85ab84374cfcd6  gcc/testsuite/gcc.dg/pr57438-1.c
  2542153df9a655c66c2e42c88c5ee178  gcc/testsuite/gcc.dg/pr57438-2.c
  7c87b573539bed38c56258f64393c76b  gcc/testsuite/gcc.dg/pr57518.c
*************** f74a1b310a7e7d6517260ba8c72d9781  gcc/te
*** 31497,31503 ****
  f54ccbe52911af9cf321307f8a5a59f7  gcc/testsuite/gcc.dg/pr59350-2.c
  704b36b7b58795af9bf9d15b48cb398a  gcc/testsuite/gcc.dg/pr59350.c
  deafb79e049ef501e2ec2c5790980392  gcc/testsuite/gcc.dg/pr59351.c
! dd0616fd4ff7238f352f9198309a6cf2  gcc/testsuite/gcc.dg/pr59418.c
  b251d85be9287376d6d25c7e58b66101  gcc/testsuite/gcc.dg/pr59471.c
  b2961d56cb19008f866b5662802fa797  gcc/testsuite/gcc.dg/pr59523.c
  bacb8194c49c9adbeb0202328696f0e1  gcc/testsuite/gcc.dg/pr59605-2.c
--- 32916,32922 ----
  f54ccbe52911af9cf321307f8a5a59f7  gcc/testsuite/gcc.dg/pr59350-2.c
  704b36b7b58795af9bf9d15b48cb398a  gcc/testsuite/gcc.dg/pr59350.c
  deafb79e049ef501e2ec2c5790980392  gcc/testsuite/gcc.dg/pr59351.c
! 9e4cb2bc29130b5b9d24e65d1f1660ce  gcc/testsuite/gcc.dg/pr59418.c
  b251d85be9287376d6d25c7e58b66101  gcc/testsuite/gcc.dg/pr59471.c
  b2961d56cb19008f866b5662802fa797  gcc/testsuite/gcc.dg/pr59523.c
  bacb8194c49c9adbeb0202328696f0e1  gcc/testsuite/gcc.dg/pr59605-2.c
*************** bf610e4473c928c63330b8dec4a9433d  gcc/te
*** 31516,31530 ****
  d534c2ea4cd6d22b8ec1a2b03ebf3228  gcc/testsuite/gcc.dg/pr59920-2.c
  6be23609c24b410709e5b6964c73ac00  gcc/testsuite/gcc.dg/pr59920-3.c
  5fe75bb714828f221ad28a68dff8e419  gcc/testsuite/gcc.dg/pr59924.c
! dc6f7d82f4087a8d5ad0530237a1dc2b  gcc/testsuite/gcc.dg/pr59940.c
  d770167279ee045f4bd83004bf07ebeb  gcc/testsuite/gcc.dg/pr59963-1.c
! c1762a99c260bece0eb01bab66251962  gcc/testsuite/gcc.dg/pr59963-2.c
  ce5fef5a5dc2f244c856c04a7817abb5  gcc/testsuite/gcc.dg/pr59963-3.c
  ac64828e140001e10c478100f49e4711  gcc/testsuite/gcc.dg/pr59992.c
  a3cca18d9883f3d10562bb4d081da747  gcc/testsuite/gcc.dg/pr60013.c
  2e33fc4824123fd1aa8ca5610ce9cc4b  gcc/testsuite/gcc.dg/pr60036.c
! cdd6d2bdf1d285b087be57c27c55ebc5  gcc/testsuite/gcc.dg/pr60087.c
! a285376726b9dbfe295bcf771720003f  gcc/testsuite/gcc.dg/pr60114.c
  7acc70b7cfc8a0c266ba6a8bbf73cbda  gcc/testsuite/gcc.dg/pr60139.c
  6cce3e908175f1cbe04458a3fa17a590  gcc/testsuite/gcc.dg/pr60195.c
  2dd6997113b68fc47c336c68691d0714  gcc/testsuite/gcc.dg/pr60257.c
--- 32935,32949 ----
  d534c2ea4cd6d22b8ec1a2b03ebf3228  gcc/testsuite/gcc.dg/pr59920-2.c
  6be23609c24b410709e5b6964c73ac00  gcc/testsuite/gcc.dg/pr59920-3.c
  5fe75bb714828f221ad28a68dff8e419  gcc/testsuite/gcc.dg/pr59924.c
! 223cc6353d62fde1284ec3fbb89a1e72  gcc/testsuite/gcc.dg/pr59940.c
  d770167279ee045f4bd83004bf07ebeb  gcc/testsuite/gcc.dg/pr59963-1.c
! d5403772fdd6959aaad192eb8a9cc704  gcc/testsuite/gcc.dg/pr59963-2.c
  ce5fef5a5dc2f244c856c04a7817abb5  gcc/testsuite/gcc.dg/pr59963-3.c
  ac64828e140001e10c478100f49e4711  gcc/testsuite/gcc.dg/pr59992.c
  a3cca18d9883f3d10562bb4d081da747  gcc/testsuite/gcc.dg/pr60013.c
  2e33fc4824123fd1aa8ca5610ce9cc4b  gcc/testsuite/gcc.dg/pr60036.c
! 90ba0970c4e2cf74bd2afc63469718a2  gcc/testsuite/gcc.dg/pr60087.c
! 618d1a44561d9e3cbfa40b75abed0b6c  gcc/testsuite/gcc.dg/pr60114.c
  7acc70b7cfc8a0c266ba6a8bbf73cbda  gcc/testsuite/gcc.dg/pr60139.c
  6cce3e908175f1cbe04458a3fa17a590  gcc/testsuite/gcc.dg/pr60195.c
  2dd6997113b68fc47c336c68691d0714  gcc/testsuite/gcc.dg/pr60257.c
*************** e2d94f81ab73335d50800841dbd4b12c  gcc/te
*** 31549,31557 ****
  b5b1a26009756ecf11d29e5f50352cb1  gcc/testsuite/gcc.dg/pr61096-1.c
  e9f7cfac9bbb82f94ba17e371af853b0  gcc/testsuite/gcc.dg/pr61096-2.c
  b358e4a8210bfc8692a1c2a738bba969  gcc/testsuite/gcc.dg/pr61158.c
! bc9556724d7d10c2173ace5aabadbe0e  gcc/testsuite/gcc.dg/pr61162-2.c
! da8727a79850a446f3e0881b8b5e14fd  gcc/testsuite/gcc.dg/pr61162.c
  6d95afd7770049e2a0f113d54fedeefd  gcc/testsuite/gcc.dg/pr61220.c
  e78afba5e0f842706348dc5ceea2cafe  gcc/testsuite/gcc.dg/pr61441.c
  13078fd1df30fc4ae73e455859e3abb7  gcc/testsuite/gcc.dg/pr61529.c
  694a3b4b22402790f20425594f68b786  gcc/testsuite/gcc.dg/pr61561.c
--- 32968,32977 ----
  b5b1a26009756ecf11d29e5f50352cb1  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
! 2398edb39c8e34021e85e5769fcd0bbd  gcc/testsuite/gcc.dg/pr61162.c
  6d95afd7770049e2a0f113d54fedeefd  gcc/testsuite/gcc.dg/pr61220.c
+ a9f1277a67e8ebfd814ebc53b9c5ab6b  gcc/testsuite/gcc.dg/pr61240.c
  e78afba5e0f842706348dc5ceea2cafe  gcc/testsuite/gcc.dg/pr61441.c
  13078fd1df30fc4ae73e455859e3abb7  gcc/testsuite/gcc.dg/pr61529.c
  694a3b4b22402790f20425594f68b786  gcc/testsuite/gcc.dg/pr61561.c
*************** b3c92851ce483139e15fb939e4b55044  gcc/te
*** 31579,31587 ****
  5c903fc6994769880ad02a97e269f566  gcc/testsuite/gcc.dg/pr63186.c
  0678fb7be64a43d0ac714738ee3bbd16  gcc/testsuite/gcc.dg/pr63284.c
  af31d87d9b43c3e16ab4f94d5576757e  gcc/testsuite/gcc.dg/pr63342.c
! e62b877d9fbd7431c7b76d5a95957435  gcc/testsuite/gcc.dg/pr63387-2.c
! a0086c74353f021a122014c1201e438b  gcc/testsuite/gcc.dg/pr63387.c
  3497da2b9f8c9d18236187116ff887a5  gcc/testsuite/gcc.dg/pr63453.c
  888c4f1f0861dd29a12ae25c0016ecd0  gcc/testsuite/gcc.dg/pr63480.c
  861ee9a1fc42d88adb1e642edca83d4d  gcc/testsuite/gcc.dg/pr63543.c
  61fad899eea592ff29d638ac04b15ad3  gcc/testsuite/gcc.dg/pr63549.c
--- 32999,33008 ----
  5c903fc6994769880ad02a97e269f566  gcc/testsuite/gcc.dg/pr63186.c
  0678fb7be64a43d0ac714738ee3bbd16  gcc/testsuite/gcc.dg/pr63284.c
  af31d87d9b43c3e16ab4f94d5576757e  gcc/testsuite/gcc.dg/pr63342.c
! cffcb43d6941c37267f531690e5c9a19  gcc/testsuite/gcc.dg/pr63387-2.c
! eba48a4b9a2f868a1590aec4efadac87  gcc/testsuite/gcc.dg/pr63387.c
  3497da2b9f8c9d18236187116ff887a5  gcc/testsuite/gcc.dg/pr63453.c
+ ab7f392a33c79d2be2581924daac1e92  gcc/testsuite/gcc.dg/pr63477.c
  888c4f1f0861dd29a12ae25c0016ecd0  gcc/testsuite/gcc.dg/pr63480.c
  861ee9a1fc42d88adb1e642edca83d4d  gcc/testsuite/gcc.dg/pr63543.c
  61fad899eea592ff29d638ac04b15ad3  gcc/testsuite/gcc.dg/pr63549.c
*************** b6ea10a14ed2effc670bd484efc47d77  gcc/te
*** 31617,31630 ****
  b193ee8e47e639f5d60fd40131d4f806  gcc/testsuite/gcc.dg/pr64223-1.c
  85eb2fc2143efdeba7b69d2025d740a0  gcc/testsuite/gcc.dg/pr64223-2.c
  feaaa5c0e5947850e537eb3da6662b05  gcc/testsuite/gcc.dg/pr64252.c
! be8e91f910347fdb5510f47190988d00  gcc/testsuite/gcc.dg/pr64277.c
  b73718497ad7460030da94dc8dfb0a84  gcc/testsuite/gcc.dg/pr64295.c
  dbb0edde3a97d9555b11cb66117c8b07  gcc/testsuite/gcc.dg/pr64309.c
  c17701ef2184cd022549f7a7dcac86ed  gcc/testsuite/gcc.dg/pr64316.c
  1a273fbaa391f75e15cf4cdd4ae7c3d2  gcc/testsuite/gcc.dg/pr64406.c
  b2947b2840760e6f6cb66c30dda3f057  gcc/testsuite/gcc.dg/pr64417.c
  0d5f86708393c1acaeae45c68476c241  gcc/testsuite/gcc.dg/pr64423.c
! 6cd01daa54d3f03b61f7f30630f4af2a  gcc/testsuite/gcc.dg/pr64434.c
  6d51d6498e61d8c6aa3fe78d77b97f2d  gcc/testsuite/gcc.dg/pr64440.c
  f28c9c90b3d30633266db4aef0f121a8  gcc/testsuite/gcc.dg/pr64454.c
  7d0846b6775af45597bb648d0d39435c  gcc/testsuite/gcc.dg/pr64465.c
--- 33038,33051 ----
  b193ee8e47e639f5d60fd40131d4f806  gcc/testsuite/gcc.dg/pr64223-1.c
  85eb2fc2143efdeba7b69d2025d740a0  gcc/testsuite/gcc.dg/pr64223-2.c
  feaaa5c0e5947850e537eb3da6662b05  gcc/testsuite/gcc.dg/pr64252.c
! e48978c568f8d4db8024f5e9b073b09a  gcc/testsuite/gcc.dg/pr64277.c
  b73718497ad7460030da94dc8dfb0a84  gcc/testsuite/gcc.dg/pr64295.c
  dbb0edde3a97d9555b11cb66117c8b07  gcc/testsuite/gcc.dg/pr64309.c
  c17701ef2184cd022549f7a7dcac86ed  gcc/testsuite/gcc.dg/pr64316.c
  1a273fbaa391f75e15cf4cdd4ae7c3d2  gcc/testsuite/gcc.dg/pr64406.c
  b2947b2840760e6f6cb66c30dda3f057  gcc/testsuite/gcc.dg/pr64417.c
  0d5f86708393c1acaeae45c68476c241  gcc/testsuite/gcc.dg/pr64423.c
! 91aa4c9ea72794d10bc03329fec60501  gcc/testsuite/gcc.dg/pr64434.c
  6d51d6498e61d8c6aa3fe78d77b97f2d  gcc/testsuite/gcc.dg/pr64440.c
  f28c9c90b3d30633266db4aef0f121a8  gcc/testsuite/gcc.dg/pr64454.c
  7d0846b6775af45597bb648d0d39435c  gcc/testsuite/gcc.dg/pr64465.c
*************** df9ac0f0b0a90dbfbd85367929e92e16  gcc/te
*** 31643,31651 ****
  5594154fb9c49cc8ec84fb62005001cb  gcc/testsuite/gcc.dg/pr64817-2.c
  3a4b68621ec44b33fe19e7e83da79c79  gcc/testsuite/gcc.dg/pr64817-3.c
  b11601d408bb4cb7b789af28a28c1102  gcc/testsuite/gcc.dg/pr64856.c
! 5d91deb201a8ee6b92c70259efae23da  gcc/testsuite/gcc.dg/pr64935-1.c
! d4c3dbc566212cc0a0059bda821c96e7  gcc/testsuite/gcc.dg/pr64935-2.c
! 2c924ea9850fcbb7f5361ae7962dd0c3  gcc/testsuite/gcc.dg/pr65050.c
  200af7e30479176902999ddc6f996f56  gcc/testsuite/gcc.dg/pr65063.c
  196812eb950c1c75b24b3d0458f13d82  gcc/testsuite/gcc.dg/pr65066.c
  f486fe5cd0c8b1dfaeade4e0c846d705  gcc/testsuite/gcc.dg/pr65228.c
--- 33064,33072 ----
  5594154fb9c49cc8ec84fb62005001cb  gcc/testsuite/gcc.dg/pr64817-2.c
  3a4b68621ec44b33fe19e7e83da79c79  gcc/testsuite/gcc.dg/pr64817-3.c
  b11601d408bb4cb7b789af28a28c1102  gcc/testsuite/gcc.dg/pr64856.c
! 7303b469b72d13d23401eaa126d66225  gcc/testsuite/gcc.dg/pr64935-1.c
! a5b811497a09f48bfe364afbbca9abd8  gcc/testsuite/gcc.dg/pr64935-2.c
! a5cf7232405c66d6cf0663fcf55c313b  gcc/testsuite/gcc.dg/pr65050.c
  200af7e30479176902999ddc6f996f56  gcc/testsuite/gcc.dg/pr65063.c
  196812eb950c1c75b24b3d0458f13d82  gcc/testsuite/gcc.dg/pr65066.c
  f486fe5cd0c8b1dfaeade4e0c846d705  gcc/testsuite/gcc.dg/pr65228.c
*************** d2824c52001fefd4b111672c00e35d59  gcc/te
*** 31655,31669 ****
  5166209849524c65c03d289ff524de41  gcc/testsuite/gcc.dg/pr65345-3.c
  a6e6691be08c011dce70f8c4f435fa04  gcc/testsuite/gcc.dg/pr65358.c
  eda4de616e3d556c5cf2cdac2af61165  gcc/testsuite/gcc.dg/pr65408.c
! 56cc7a5bac7eb3194bdb9d2db1b34eae  gcc/testsuite/gcc.dg/pr65521.c
  ea26d99c3e63bed7c77e9432ebc467e3  gcc/testsuite/gcc.dg/pr65533.c
  53ef0788826a36829abad3e8d3207aa2  gcc/testsuite/gcc.dg/pr65658.c
! 981ede6c35e44db3a86f3d52f02e56a7  gcc/testsuite/gcc.dg/pr65779.c
  996e32338288f594c2fe1cce0e6c0ab7  gcc/testsuite/gcc.dg/pr65780-1.c
  21557777293c6448e13fc25099a5d01f  gcc/testsuite/gcc.dg/pr65780-2.c
  a2d7a3719becb2e69f34dfcec1b673a7  gcc/testsuite/gcc.dg/pr65802.c
  07866855206cf47d224bf5dc1a4eaef2  gcc/testsuite/gcc.dg/pr65901.c
! 4dac93236eb3bcad48cb18df6a35cf7f  gcc/testsuite/gcc.dg/pr65980.c
  c698f33b6fbec9d6a77a0ad86dc6c5b0  gcc/testsuite/gcc.dg/pr66066-1.c
  ce4cef4a7363773cd917b11ef614fd57  gcc/testsuite/gcc.dg/pr66066-2.c
  3bdd21929744558f8cb033f41b449b39  gcc/testsuite/gcc.dg/pr66066-3.c
--- 33076,33090 ----
  5166209849524c65c03d289ff524de41  gcc/testsuite/gcc.dg/pr65345-3.c
  a6e6691be08c011dce70f8c4f435fa04  gcc/testsuite/gcc.dg/pr65358.c
  eda4de616e3d556c5cf2cdac2af61165  gcc/testsuite/gcc.dg/pr65408.c
! 8f081ba15dfc910ee0b078dc1da327ac  gcc/testsuite/gcc.dg/pr65521.c
  ea26d99c3e63bed7c77e9432ebc467e3  gcc/testsuite/gcc.dg/pr65533.c
  53ef0788826a36829abad3e8d3207aa2  gcc/testsuite/gcc.dg/pr65658.c
! eefca5cf539f0d9f48d3c27600de1b33  gcc/testsuite/gcc.dg/pr65779.c
  996e32338288f594c2fe1cce0e6c0ab7  gcc/testsuite/gcc.dg/pr65780-1.c
  21557777293c6448e13fc25099a5d01f  gcc/testsuite/gcc.dg/pr65780-2.c
  a2d7a3719becb2e69f34dfcec1b673a7  gcc/testsuite/gcc.dg/pr65802.c
  07866855206cf47d224bf5dc1a4eaef2  gcc/testsuite/gcc.dg/pr65901.c
! abb530d6d870f3697e76f0c8fda67bd5  gcc/testsuite/gcc.dg/pr65980.c
  c698f33b6fbec9d6a77a0ad86dc6c5b0  gcc/testsuite/gcc.dg/pr66066-1.c
  ce4cef4a7363773cd917b11ef614fd57  gcc/testsuite/gcc.dg/pr66066-2.c
  3bdd21929744558f8cb033f41b449b39  gcc/testsuite/gcc.dg/pr66066-3.c
*************** f0a98b415604b215afcf03b4adc83da1  gcc/te
*** 31673,31679 ****
  4087d8917bb8350d7c582ed9bab2c102  gcc/testsuite/gcc.dg/pr66299-2.c
  b823906d4327763b5932ba6d1b19cb10  gcc/testsuite/gcc.dg/pr66299-3.c
  e8ab6748304462c991d39c13563cbf48  gcc/testsuite/gcc.dg/pr66444.c
! a901907e04c7cd2d84dc5a5e862cfa31  gcc/testsuite/gcc.dg/pr66688.c
  38926551cf5ad835eaf2b3b90dd518a7  gcc/testsuite/gcc.dg/pr66869.c
  8bf319e0a2f06c4b5658fbfaa0016960  gcc/testsuite/gcc.dg/pr66899.c
  9b83e97ecb4b549b8c90122cd4fbd1f8  gcc/testsuite/gcc.dg/pr67028.c
--- 33094,33102 ----
  4087d8917bb8350d7c582ed9bab2c102  gcc/testsuite/gcc.dg/pr66299-2.c
  b823906d4327763b5932ba6d1b19cb10  gcc/testsuite/gcc.dg/pr66299-3.c
  e8ab6748304462c991d39c13563cbf48  gcc/testsuite/gcc.dg/pr66444.c
! 4906d5420c37dfed13a1fb3f26155472  gcc/testsuite/gcc.dg/pr66618-2.c
! 9c66d2ecef938a15acd1290606ecddda  gcc/testsuite/gcc.dg/pr66618.c
! 765d834242bae7020c68a543a464b5e2  gcc/testsuite/gcc.dg/pr66688.c
  38926551cf5ad835eaf2b3b90dd518a7  gcc/testsuite/gcc.dg/pr66869.c
  8bf319e0a2f06c4b5658fbfaa0016960  gcc/testsuite/gcc.dg/pr66899.c
  9b83e97ecb4b549b8c90122cd4fbd1f8  gcc/testsuite/gcc.dg/pr67028.c
*************** c7c4b7705622efa27fdc0b569d8c2977  gcc/te
*** 31699,31705 ****
  fb456e8c2f8f230de46a56453b2c02b6  gcc/testsuite/gcc.dg/pr67563.c
  029aebb2f9e40fda30114345bb5a0879  gcc/testsuite/gcc.dg/pr67580.c
  b501c41d88536640ee6fb443cdfed70b  gcc/testsuite/gcc.dg/pr67730-1.c
! a14ec771c7befff8f1d57fe19a19cddd  gcc/testsuite/gcc.dg/pr67730-2.c
  2486cf16676499bbbdb97ee70343e770  gcc/testsuite/gcc.dg/pr67730.c
  c45551dd8d8013b5bcaaaa846bd05c11  gcc/testsuite/gcc.dg/pr67730.h
  03033b4d2292bed3ebe7963c83062a05  gcc/testsuite/gcc.dg/pr67784-1.c
--- 33122,33128 ----
  fb456e8c2f8f230de46a56453b2c02b6  gcc/testsuite/gcc.dg/pr67563.c
  029aebb2f9e40fda30114345bb5a0879  gcc/testsuite/gcc.dg/pr67580.c
  b501c41d88536640ee6fb443cdfed70b  gcc/testsuite/gcc.dg/pr67730-1.c
! 6b9c20819fdb2e05a773e1c73869fc1e  gcc/testsuite/gcc.dg/pr67730-2.c
  2486cf16676499bbbdb97ee70343e770  gcc/testsuite/gcc.dg/pr67730.c
  c45551dd8d8013b5bcaaaa846bd05c11  gcc/testsuite/gcc.dg/pr67730.h
  03033b4d2292bed3ebe7963c83062a05  gcc/testsuite/gcc.dg/pr67784-1.c
*************** a6babb5906e3c7d406659baa4eed07d9  gcc/te
*** 31733,31744 ****
  1527d6beba148c1d8b4945daf571b68a  gcc/testsuite/gcc.dg/pr68435.c
  180685ff5aaf4ddc0d3f2d1a39176fa5  gcc/testsuite/gcc.dg/pr68474.c
  934181169c6a5ecc22506c06a8916b09  gcc/testsuite/gcc.dg/pr68513.c
! a0b90f175edecc2aa02e5904cb57ea7b  gcc/testsuite/gcc.dg/pr68533.c
  3dc1c7c15262efd3f52961d59b61d808  gcc/testsuite/gcc.dg/pr68595.c
  bd42af7fb18f01a785450035db393bd0  gcc/testsuite/gcc.dg/pr68668.c
  ec6fafa240e762cbf9e1bfcbf4d8257d  gcc/testsuite/gcc.dg/pr68670-1.c
  64ab8d9be02e0f49ab68cb50079da2f9  gcc/testsuite/gcc.dg/pr68670-2.c
! 567c81ccda62908c8eabc65c4548841f  gcc/testsuite/gcc.dg/pr68671.c
  062699e5abb7ea3f3d5cd589f43fdb35  gcc/testsuite/gcc.dg/pr68730.c
  d19303a8f62d1927d461d281148e0b17  gcc/testsuite/gcc.dg/pr68766.c
  06dc900a4654768f44fbe4b05d429457  gcc/testsuite/gcc.dg/pr68785.c
--- 33156,33167 ----
  1527d6beba148c1d8b4945daf571b68a  gcc/testsuite/gcc.dg/pr68435.c
  180685ff5aaf4ddc0d3f2d1a39176fa5  gcc/testsuite/gcc.dg/pr68474.c
  934181169c6a5ecc22506c06a8916b09  gcc/testsuite/gcc.dg/pr68513.c
! 17dcc791ef1d73cb0a521d8afdd4bbff  gcc/testsuite/gcc.dg/pr68533.c
  3dc1c7c15262efd3f52961d59b61d808  gcc/testsuite/gcc.dg/pr68595.c
  bd42af7fb18f01a785450035db393bd0  gcc/testsuite/gcc.dg/pr68668.c
  ec6fafa240e762cbf9e1bfcbf4d8257d  gcc/testsuite/gcc.dg/pr68670-1.c
  64ab8d9be02e0f49ab68cb50079da2f9  gcc/testsuite/gcc.dg/pr68670-2.c
! ff59fb6a728feea7566b02225b12b435  gcc/testsuite/gcc.dg/pr68671.c
  062699e5abb7ea3f3d5cd589f43fdb35  gcc/testsuite/gcc.dg/pr68730.c
  d19303a8f62d1927d461d281148e0b17  gcc/testsuite/gcc.dg/pr68766.c
  06dc900a4654768f44fbe4b05d429457  gcc/testsuite/gcc.dg/pr68785.c
*************** ea32f1c8046a96724b1e08bfc887f5e6  gcc/te
*** 31753,31766 ****
  495efaa0ff3a72f7ffb32306057d0264  gcc/testsuite/gcc.dg/pr69071.c
  31b60f3303cfcbc3553f84ae11924b0d  gcc/testsuite/gcc.dg/pr69097-1.c
  888c4c2ebea746632d3bed498e889d29  gcc/testsuite/gcc.dg/pr69097-2.c
! a02e6fa19e452ec146a6ca7280bf886c  gcc/testsuite/gcc.dg/pr69156.c
  cc54694cf1e606b299ce05a8c96ffd5d  gcc/testsuite/gcc.dg/pr69162.c
  7506e2016bb4a153119aed31e41f2aec  gcc/testsuite/gcc.dg/pr69167.c
  fe217a0107a76d8937b20f139ada0789  gcc/testsuite/gcc.dg/pr69169.c
! e68f102b6d469a111e06236ffeb2f3d8  gcc/testsuite/gcc.dg/pr69172.c
  6969bd29c7552c0f6824af8bc0a27f88  gcc/testsuite/gcc.dg/pr69181-1.c
  11905545959a54df4ecd98563ded6e85  gcc/testsuite/gcc.dg/pr69181-2.c
  dc1a32d61ffafafb8a73eeb4f9727021  gcc/testsuite/gcc.dg/pr69195.c
  e5e75166594899c20207094a984a9f46  gcc/testsuite/gcc.dg/pr69238.c
  b4321f7bf99116cc1d4094d5ca52abdb  gcc/testsuite/gcc.dg/pr69247.c
  a37376ddb8a1fbb5a3af90f0aba6aa18  gcc/testsuite/gcc.dg/pr69307.c
--- 33176,33190 ----
  495efaa0ff3a72f7ffb32306057d0264  gcc/testsuite/gcc.dg/pr69071.c
  31b60f3303cfcbc3553f84ae11924b0d  gcc/testsuite/gcc.dg/pr69097-1.c
  888c4c2ebea746632d3bed498e889d29  gcc/testsuite/gcc.dg/pr69097-2.c
! fb6273e55d1d30c07ec87cce8a19be45  gcc/testsuite/gcc.dg/pr69156.c
  cc54694cf1e606b299ce05a8c96ffd5d  gcc/testsuite/gcc.dg/pr69162.c
  7506e2016bb4a153119aed31e41f2aec  gcc/testsuite/gcc.dg/pr69167.c
  fe217a0107a76d8937b20f139ada0789  gcc/testsuite/gcc.dg/pr69169.c
! dbb1bd849c29288be460b56ba3181267  gcc/testsuite/gcc.dg/pr69172.c
  6969bd29c7552c0f6824af8bc0a27f88  gcc/testsuite/gcc.dg/pr69181-1.c
  11905545959a54df4ecd98563ded6e85  gcc/testsuite/gcc.dg/pr69181-2.c
  dc1a32d61ffafafb8a73eeb4f9727021  gcc/testsuite/gcc.dg/pr69195.c
+ 4c420808ecd80b7dde1102704e2e9f1f  gcc/testsuite/gcc.dg/pr69224.c
  e5e75166594899c20207094a984a9f46  gcc/testsuite/gcc.dg/pr69238.c
  b4321f7bf99116cc1d4094d5ca52abdb  gcc/testsuite/gcc.dg/pr69247.c
  a37376ddb8a1fbb5a3af90f0aba6aa18  gcc/testsuite/gcc.dg/pr69307.c
*************** cbdaeedde95b865c383e0c983b9ac366  gcc/te
*** 31791,31800 ****
  9a19bcff0b953ba0ef196a05dff677f3  gcc/testsuite/gcc.dg/pr69900.c
  3489c8a6ffbe3c25f24b5b2a527f0fe5  gcc/testsuite/gcc.dg/pr69915.c
  c4503e5dc591dc196e7b9d573264d19f  gcc/testsuite/gcc.dg/pr69956.c
  d5b871b0f87c1e2cb1ab3cad6af9aec1  gcc/testsuite/gcc.dg/pr69973.c
  c77f2cca20ba9d4764f04cbf54d8dd0b  gcc/testsuite/gcc.dg/pr69974.c
  0ae52cdd6f0ce92e0fa42ce2f9c25c40  gcc/testsuite/gcc.dg/pr69990.c
! 248b64cf6ca81bfeb8639c5d35d1f548  gcc/testsuite/gcc.dg/pr70017.c
  8ee76a9ec44a5be4a938e843353b78f2  gcc/testsuite/gcc.dg/pr70022.c
  aeeaf6d53517fe7301732d16e3d8ceef  gcc/testsuite/gcc.dg/pr70026.c
  1003b9083bcc942e12bea9b6c8ba4255  gcc/testsuite/gcc.dg/pr70050.c
--- 33215,33225 ----
  9a19bcff0b953ba0ef196a05dff677f3  gcc/testsuite/gcc.dg/pr69900.c
  3489c8a6ffbe3c25f24b5b2a527f0fe5  gcc/testsuite/gcc.dg/pr69915.c
  c4503e5dc591dc196e7b9d573264d19f  gcc/testsuite/gcc.dg/pr69956.c
+ e6bb6389b69a822702a264bb6bf8636c  gcc/testsuite/gcc.dg/pr69960.c
  d5b871b0f87c1e2cb1ab3cad6af9aec1  gcc/testsuite/gcc.dg/pr69973.c
  c77f2cca20ba9d4764f04cbf54d8dd0b  gcc/testsuite/gcc.dg/pr69974.c
  0ae52cdd6f0ce92e0fa42ce2f9c25c40  gcc/testsuite/gcc.dg/pr69990.c
! 84bbab300c5b3a71c927de1f0765a273  gcc/testsuite/gcc.dg/pr70017.c
  8ee76a9ec44a5be4a938e843353b78f2  gcc/testsuite/gcc.dg/pr70022.c
  aeeaf6d53517fe7301732d16e3d8ceef  gcc/testsuite/gcc.dg/pr70026.c
  1003b9083bcc942e12bea9b6c8ba4255  gcc/testsuite/gcc.dg/pr70050.c
*************** aeeaf6d53517fe7301732d16e3d8ceef  gcc/te
*** 31802,31809 ****
  c32e69e0b15af869a3408b989cf2a673  gcc/testsuite/gcc.dg/pr70152.c
  460d8e73cab3e6784b930f92855788fa  gcc/testsuite/gcc.dg/pr70161-2.c
  f8e2fa4ae6dc1040ed9c1a1c0a9c60bf  gcc/testsuite/gcc.dg/pr70161.c
! d45ea914eb9ed038388f6b7320e0ae12  gcc/testsuite/gcc.dg/pr70169.c
! 364bf2727a0aa62b86b85418e642802a  gcc/testsuite/gcc.dg/pr70174.c
  5a875c740aedd4dc64ede0baa88152db  gcc/testsuite/gcc.dg/pr70177.c
  e8fdbe08a6947f6557322a9782cecdbc  gcc/testsuite/gcc.dg/pr70219.c
  739cba5a2995c109ebac171a273aed82  gcc/testsuite/gcc.dg/pr70252.c
--- 33227,33234 ----
  c32e69e0b15af869a3408b989cf2a673  gcc/testsuite/gcc.dg/pr70152.c
  460d8e73cab3e6784b930f92855788fa  gcc/testsuite/gcc.dg/pr70161-2.c
  f8e2fa4ae6dc1040ed9c1a1c0a9c60bf  gcc/testsuite/gcc.dg/pr70161.c
! 463fcd186254e2c4c3914b8865d46c4b  gcc/testsuite/gcc.dg/pr70169.c
! ebba30b35280b052f9b4430e359d81a6  gcc/testsuite/gcc.dg/pr70174.c
  5a875c740aedd4dc64ede0baa88152db  gcc/testsuite/gcc.dg/pr70177.c
  e8fdbe08a6947f6557322a9782cecdbc  gcc/testsuite/gcc.dg/pr70219.c
  739cba5a2995c109ebac171a273aed82  gcc/testsuite/gcc.dg/pr70252.c
*************** fa42fa5837dc78f6275d757725f9415f  gcc/te
*** 31812,31818 ****
  57c9de9e853c7a496ceb07c57443560a  gcc/testsuite/gcc.dg/pr70292.c
  57da494a1a84d205b843dc5706af8b34  gcc/testsuite/gcc.dg/pr70317.c
  866611622329fa10b4510034ca67a894  gcc/testsuite/gcc.dg/pr70326.c
! 6be993b427367ee1caf69ac4b620ae5c  gcc/testsuite/gcc.dg/pr70405.c
  ac328b834a1ea6428569ff38945772b0  gcc/testsuite/gcc.dg/pr70442.c
  3d94be0ce2dae6f1f4b431750028673c  gcc/testsuite/gcc.dg/pr70700.c
  36a35251047803a79950fef784d13ae4  gcc/testsuite/gcc.dg/pr70725.c
--- 33237,33243 ----
  57c9de9e853c7a496ceb07c57443560a  gcc/testsuite/gcc.dg/pr70292.c
  57da494a1a84d205b843dc5706af8b34  gcc/testsuite/gcc.dg/pr70317.c
  866611622329fa10b4510034ca67a894  gcc/testsuite/gcc.dg/pr70326.c
! 817571dd24984dca9fc517a439bbc52c  gcc/testsuite/gcc.dg/pr70405.c
  ac328b834a1ea6428569ff38945772b0  gcc/testsuite/gcc.dg/pr70442.c
  3d94be0ce2dae6f1f4b431750028673c  gcc/testsuite/gcc.dg/pr70700.c
  36a35251047803a79950fef784d13ae4  gcc/testsuite/gcc.dg/pr70725.c
*************** a838124faa4e9ed43542de78b29d5b9a  gcc/te
*** 31825,31833 ****
  e5465e812c2bfb2c8c6f80e5805669d2  gcc/testsuite/gcc.dg/pr70859-2.c
  95994f646113f57ba9287b968616a763  gcc/testsuite/gcc.dg/pr70859.c
  76ea20ab28265f32848e1da18357b0e6  gcc/testsuite/gcc.dg/pr70920-1.c
! 4814ad03e09d235c45425d8fa9df828f  gcc/testsuite/gcc.dg/pr70920-2.c
  f04d3dbaed079d814d7ade39b19f5d16  gcc/testsuite/gcc.dg/pr70920-3.c
! f0c671e2d9db76ba95d855c2aa825480  gcc/testsuite/gcc.dg/pr70920-4.c
  0c7a5fc07d2ac3fe95b4a3f606e9fddc  gcc/testsuite/gcc.dg/pr71006.c
  b2932869d7ba5888238dbb86f20e94de  gcc/testsuite/gcc.dg/pr71071.c
  e05d98a959f2f668c84f75a7ef1c1bf5  gcc/testsuite/gcc.dg/pr71077.c
--- 33250,33258 ----
  e5465e812c2bfb2c8c6f80e5805669d2  gcc/testsuite/gcc.dg/pr70859-2.c
  95994f646113f57ba9287b968616a763  gcc/testsuite/gcc.dg/pr70859.c
  76ea20ab28265f32848e1da18357b0e6  gcc/testsuite/gcc.dg/pr70920-1.c
! 935b4e9d72db435dc191a32b102ca911  gcc/testsuite/gcc.dg/pr70920-2.c
  f04d3dbaed079d814d7ade39b19f5d16  gcc/testsuite/gcc.dg/pr70920-3.c
! 6584348a86d8369a741a771480f0a6ed  gcc/testsuite/gcc.dg/pr70920-4.c
  0c7a5fc07d2ac3fe95b4a3f606e9fddc  gcc/testsuite/gcc.dg/pr71006.c
  b2932869d7ba5888238dbb86f20e94de  gcc/testsuite/gcc.dg/pr71071.c
  e05d98a959f2f668c84f75a7ef1c1bf5  gcc/testsuite/gcc.dg/pr71077.c
*************** d8d8510fc83b9bdf4fa510240dde0db8  gcc/te
*** 31856,31861 ****
--- 33281,33288 ----
  05dafcbdf25b7fd8f770416b1a21580e  gcc/testsuite/gcc.dg/pr71969-2.c
  81a1bdebff6fd97277f861b329261f25  gcc/testsuite/gcc.dg/pr71969-3.c
  c9312ef03c2b6660d66f7f253edd0a95  gcc/testsuite/gcc.dg/pr72816.c
+ 7dccc6199f1e3102df3ae099b5a0be92  gcc/testsuite/gcc.dg/pr7356-2.c
+ 84138d6d5126afb1dec82b08cbc62d51  gcc/testsuite/gcc.dg/pr7356.c
  959c80dd8f34c689e655cb0bc2549573  gcc/testsuite/gcc.dg/pr76783.c
  fc378856d9a61c0c1d724713171d1d7f  gcc/testsuite/gcc.dg/pr77323.c
  ae20f82eec6952e0df8a4ff52b807a62  gcc/testsuite/gcc.dg/pr77407.c
*************** de363b2498e48d7d080b1376114f5b49  gcc/te
*** 31867,31878 ****
  34c0cc5303a38af596b767c57db3c8d4  gcc/testsuite/gcc.dg/pr77587a.c
  3242f82616b361b5e0896c9fd0ee1957  gcc/testsuite/gcc.dg/pr77621.c
  9fe6b466cdbe5288db017527fd1abb59  gcc/testsuite/gcc.dg/pr77664.c
! 7a2e92e436f35dd60a04e2f596e8502f  gcc/testsuite/gcc.dg/pr77673.c
  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
! 490a6b621221948dbaccdd6f0ff85f3b  gcc/testsuite/gcc.dg/pr78138.c
  427e79810052c59fa2a8c9b43fbdfa29  gcc/testsuite/gcc.dg/pr78148.c
  036b89fa8e150cf11fc1400568acc2d2  gcc/testsuite/gcc.dg/pr78185.c
  5bb4c02b2f251c26191de89ac03e564b  gcc/testsuite/gcc.dg/pr78213.c
--- 33294,33305 ----
  34c0cc5303a38af596b767c57db3c8d4  gcc/testsuite/gcc.dg/pr77587a.c
  3242f82616b361b5e0896c9fd0ee1957  gcc/testsuite/gcc.dg/pr77621.c
  9fe6b466cdbe5288db017527fd1abb59  gcc/testsuite/gcc.dg/pr77664.c
! a45d8a7ea58bf6c772c8fa0d9d6f1ca5  gcc/testsuite/gcc.dg/pr77673.c
  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
  036b89fa8e150cf11fc1400568acc2d2  gcc/testsuite/gcc.dg/pr78185.c
  5bb4c02b2f251c26191de89ac03e564b  gcc/testsuite/gcc.dg/pr78213.c
*************** aa86169902d2471ece373c0dddd5232b  gcc/te
*** 31882,31947 ****
  ed199837252420dfc81cd6b7990ad969  gcc/testsuite/gcc.dg/pr78408-1.c
  07834f595669948f323b820ebe44b1e2  gcc/testsuite/gcc.dg/pr78408-2.c
  6f2d058063e1aeba0dd1950b50cd76e6  gcc/testsuite/gcc.dg/pr78445.c
  bc1678a9ca084c4a9b93bc2d19365725  gcc/testsuite/gcc.dg/pr78526.c
  03d500fd75a872ba569ed89c1c933de5  gcc/testsuite/gcc.dg/pr78540.c
  fbe4bd1ea3e4c9d1b4dbef309a85bcbb  gcc/testsuite/gcc.dg/pr78547.c
  c2049b1ad7ce31cbdef3782f4c70ce08  gcc/testsuite/gcc.dg/pr78575.c
! bf9683b72698c33131a95c78a4860838  gcc/testsuite/gcc.dg/pr78582.c
  59fab8559dce9fbb470768e4dc1a6e64  gcc/testsuite/gcc.dg/pr78644-1.c
  4a5d064e4d5178a1ef3e21d03e1a87ec  gcc/testsuite/gcc.dg/pr78644-2.c
  7a99dbe667e97a0eaf2acfc31b1fb8f4  gcc/testsuite/gcc.dg/pr78721.c
  b4a62cbbba0365642b3f9855baa89f4e  gcc/testsuite/gcc.dg/pr78725-2.c
  5c098c8c60a3312c5cda64e55778f17a  gcc/testsuite/gcc.dg/pr78725.c
! f35125fff6b05e02a8ef124ea83d81c7  gcc/testsuite/gcc.dg/pr78768.c
  fc3c051c8f6f62fff4e6ec32193c6410  gcc/testsuite/gcc.dg/pr78775.c
  f49fab0a7c366161d6704dfcfc894c69  gcc/testsuite/gcc.dg/pr78957.c
  e4d6bc0059c80d54a6df24996d85dd25  gcc/testsuite/gcc.dg/pr78965.c
  8ce500eace0561652da1343d140dc2a8  gcc/testsuite/gcc.dg/pr78973-2.c
  30e95d3421e066626782ee785341c07d  gcc/testsuite/gcc.dg/pr78973.c
  3eb967f814b608670a2c9630d4d2a1e0  gcc/testsuite/gcc.dg/pr79080.c
  24527a55d1c990ac1c42a74f0aae5949  gcc/testsuite/gcc.dg/pr79255.c
  11a65c3a6b9765baba92154a864e5985  gcc/testsuite/gcc.dg/pr79405.c
  9c25129a5f3400435bb046e327b76463  gcc/testsuite/gcc.dg/pr79494.c
  9ec3e8f462eef4a5f6494d9a88865b8c  gcc/testsuite/gcc.dg/pr79499.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
  3d225837de2f14990c8b6e794456bde5  gcc/testsuite/gcc.dg/pr79730.c
  b5356ea1b8c5f902a36c8d4dad23008c  gcc/testsuite/gcc.dg/pr79788-1.c
  227b00aa17a4c68044692a91fdc12280  gcc/testsuite/gcc.dg/pr79788-2.c
  251f5362f29f61929f50a75dc90c07a8  gcc/testsuite/gcc.dg/pr79972.c
  965303c67250b6dbe25a9353d53d437d  gcc/testsuite/gcc.dg/pr80020.c
  39b75d6facc0c1f0e6bcee0096f12fc7  gcc/testsuite/gcc.dg/pr80100.c
! c61145f66ad86d5750f921ee12a6d3ea  gcc/testsuite/gcc.dg/pr80112.c
  95a89903b60c90b43683dff855a12700  gcc/testsuite/gcc.dg/pr80163.c
  654bef804ec0c81dbcd02576769d04e3  gcc/testsuite/gcc.dg/pr80170.c
  443d0b623cd055eb8afd363bad4d21c4  gcc/testsuite/gcc.dg/pr80218.c
  84b0e8e3e377514aaf1b169b00c28bee  gcc/testsuite/gcc.dg/pr80286.c
  13fd4653a887fd812f313509efe0bf44  gcc/testsuite/gcc.dg/pr80468.c
  21f1c2987bb9b7070a72257997833969  gcc/testsuite/gcc.dg/pr80492.c
  c18713c02dd6db585d0b717323e42243  gcc/testsuite/gcc.dg/pr80500.c
  55873f1cbff0d2709f50c0f4f5c1b1e5  gcc/testsuite/gcc.dg/pr80747.c
  e3501e79a84ec5c54c17e7fa34c87587  gcc/testsuite/gcc.dg/pr80903.c
! 2d3008b06f6add111e8e825b9d93b0a7  gcc/testsuite/gcc.dg/pr81192.c
  bb156c6c81366579b6d35fa7f4c47036  gcc/testsuite/gcc.dg/pr81455.c
  d0740fea8c2bde45e4d2daafa1a131cc  gcc/testsuite/gcc.dg/pr81588.c
  25643ed86459e72b894b58fd0ca23c45  gcc/testsuite/gcc.dg/pr81621.c
  15e9928cc7fd07b5da8b5ab724a2878d  gcc/testsuite/gcc.dg/pr81650.c
  6275ac69ea3af7836ee4b4f35a012f5b  gcc/testsuite/gcc.dg/pr81988.c
  6ab73da237e4b1f4a00a90b19e6d538b  gcc/testsuite/gcc.dg/pr82112.c
  3f25e46f965a27a369afdbd4a7198ff7  gcc/testsuite/gcc.dg/pr82274-1.c
  764c02762bebaad407461b2e21341c14  gcc/testsuite/gcc.dg/pr82274-2.c
  ae605184856a82a47dbd32ae477f514f  gcc/testsuite/gcc.dg/pr82703.c
  090f08b3a0f18a09d76a66610bb47031  gcc/testsuite/gcc.dg/pr82765.c
  3b6383789fec91d0e0c3792510760ca9  gcc/testsuite/gcc.dg/pr82975.c
  ee769f3adcf7fab595250b248a69fc79  gcc/testsuite/gcc.dg/pr83198.c
  4cfcf9fb49e0c6531f60ce19ff899760  gcc/testsuite/gcc.dg/pr83424.c
  8737dcae5fe714e2a9c7615d0daa08bb  gcc/testsuite/gcc.dg/pr83512.c
  ebf3ad75a7f26e3b9af3d5d4e2389afd  gcc/testsuite/gcc.dg/pr83521.c
  ae7d69a2b5ce2e83ee3853b71000d655  gcc/testsuite/gcc.dg/pr83552.c
  81f7605ff01265c2f5be2ced12074dbc  gcc/testsuite/gcc.dg/pr83609.c
! ccfd72718953da255079c43c6c6a8a33  gcc/testsuite/gcc.dg/pr83623.c
  8b7d73da2d5d78000716492365a85d5a  gcc/testsuite/gcc.dg/pr8715.c
  45a1003c5d24f4875b1c3a5d4f9569fe  gcc/testsuite/gcc.dg/pr8788-1.c
  be04382a35ebb1cfae1b2168f1693a94  gcc/testsuite/gcc.dg/pr8835-1.c
--- 33309,33535 ----
  ed199837252420dfc81cd6b7990ad969  gcc/testsuite/gcc.dg/pr78408-1.c
  07834f595669948f323b820ebe44b1e2  gcc/testsuite/gcc.dg/pr78408-2.c
  6f2d058063e1aeba0dd1950b50cd76e6  gcc/testsuite/gcc.dg/pr78445.c
+ 443cf93af753f08628b6b57283dbbfed  gcc/testsuite/gcc.dg/pr78468.c
  bc1678a9ca084c4a9b93bc2d19365725  gcc/testsuite/gcc.dg/pr78526.c
  03d500fd75a872ba569ed89c1c933de5  gcc/testsuite/gcc.dg/pr78540.c
  fbe4bd1ea3e4c9d1b4dbef309a85bcbb  gcc/testsuite/gcc.dg/pr78547.c
  c2049b1ad7ce31cbdef3782f4c70ce08  gcc/testsuite/gcc.dg/pr78575.c
! 96145f02fbd8135cc5dd78eebcb131f5  gcc/testsuite/gcc.dg/pr78582.c
  59fab8559dce9fbb470768e4dc1a6e64  gcc/testsuite/gcc.dg/pr78644-1.c
  4a5d064e4d5178a1ef3e21d03e1a87ec  gcc/testsuite/gcc.dg/pr78644-2.c
  7a99dbe667e97a0eaf2acfc31b1fb8f4  gcc/testsuite/gcc.dg/pr78721.c
  b4a62cbbba0365642b3f9855baa89f4e  gcc/testsuite/gcc.dg/pr78725-2.c
  5c098c8c60a3312c5cda64e55778f17a  gcc/testsuite/gcc.dg/pr78725.c
! c39c9c2cec1ded6fe71f7200c63c5bb9  gcc/testsuite/gcc.dg/pr78768.c
  fc3c051c8f6f62fff4e6ec32193c6410  gcc/testsuite/gcc.dg/pr78775.c
  f49fab0a7c366161d6704dfcfc894c69  gcc/testsuite/gcc.dg/pr78957.c
  e4d6bc0059c80d54a6df24996d85dd25  gcc/testsuite/gcc.dg/pr78965.c
  8ce500eace0561652da1343d140dc2a8  gcc/testsuite/gcc.dg/pr78973-2.c
  30e95d3421e066626782ee785341c07d  gcc/testsuite/gcc.dg/pr78973.c
  3eb967f814b608670a2c9630d4d2a1e0  gcc/testsuite/gcc.dg/pr79080.c
+ f86cdc7b802dfa57323b6e4f23c5c181  gcc/testsuite/gcc.dg/pr79214.c
+ 4d852cee874d982752a5141b529c6205  gcc/testsuite/gcc.dg/pr79214.h
+ 8607f4379de80cb787541b036e208610  gcc/testsuite/gcc.dg/pr79222.c
+ 6f2fc038047bf02fb18e391f4aa4f5c0  gcc/testsuite/gcc.dg/pr79223.c
  24527a55d1c990ac1c42a74f0aae5949  gcc/testsuite/gcc.dg/pr79255.c
  11a65c3a6b9765baba92154a864e5985  gcc/testsuite/gcc.dg/pr79405.c
  9c25129a5f3400435bb046e327b76463  gcc/testsuite/gcc.dg/pr79494.c
  9ec3e8f462eef4a5f6494d9a88865b8c  gcc/testsuite/gcc.dg/pr79499.c
+ e435cc1601f16d900a0f2555dcd3c24d  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
+ e82d485d82c990fc42f2e211d3c7319a  gcc/testsuite/gcc.dg/pr79715.c
  3d225837de2f14990c8b6e794456bde5  gcc/testsuite/gcc.dg/pr79730.c
  b5356ea1b8c5f902a36c8d4dad23008c  gcc/testsuite/gcc.dg/pr79788-1.c
  227b00aa17a4c68044692a91fdc12280  gcc/testsuite/gcc.dg/pr79788-2.c
  251f5362f29f61929f50a75dc90c07a8  gcc/testsuite/gcc.dg/pr79972.c
+ 1b9fa66997300d5594d9a72b8d78e84d  gcc/testsuite/gcc.dg/pr79983.c
  965303c67250b6dbe25a9353d53d437d  gcc/testsuite/gcc.dg/pr80020.c
  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
  654bef804ec0c81dbcd02576769d04e3  gcc/testsuite/gcc.dg/pr80170.c
  443d0b623cd055eb8afd363bad4d21c4  gcc/testsuite/gcc.dg/pr80218.c
  84b0e8e3e377514aaf1b169b00c28bee  gcc/testsuite/gcc.dg/pr80286.c
+ d0898ffe36e799b71320182517511e38  gcc/testsuite/gcc.dg/pr80463.c
  13fd4653a887fd812f313509efe0bf44  gcc/testsuite/gcc.dg/pr80468.c
  21f1c2987bb9b7070a72257997833969  gcc/testsuite/gcc.dg/pr80492.c
  c18713c02dd6db585d0b717323e42243  gcc/testsuite/gcc.dg/pr80500.c
+ 03b9735c5eb33830045e77aca7da2272  gcc/testsuite/gcc.dg/pr80632.c
+ c381704f7fd8c500ffba6296632beb8a  gcc/testsuite/gcc.dg/pr80693.c
  55873f1cbff0d2709f50c0f4f5c1b1e5  gcc/testsuite/gcc.dg/pr80747.c
+ e6e71c9080dea97e0bc4c3f479600ac6  gcc/testsuite/gcc.dg/pr80775.c
+ 47c7107757486dd89a39aca50218ad10  gcc/testsuite/gcc.dg/pr80776-1.c
+ a1a56e30eeac791e16b04c6ea615d1c5  gcc/testsuite/gcc.dg/pr80776-2.c
+ 3addab71e2436c1b66f925d92eedf42d  gcc/testsuite/gcc.dg/pr80788.c
+ 3d4371ab487849eb5d5e8fde5732b5f4  gcc/testsuite/gcc.dg/pr80823.c
  e3501e79a84ec5c54c17e7fa34c87587  gcc/testsuite/gcc.dg/pr80903.c
! 6f909931c2e6b366e06dcbd3af55eb8b  gcc/testsuite/gcc.dg/pr80907.c
! c5719c018c12b0a0dfafc5cce8663b35  gcc/testsuite/gcc.dg/pr81019.c
! 423e68203f69b77d89938e7e12632466  gcc/testsuite/gcc.dg/pr81020.c
! 0e9fa6d863f3301949fcec2f6c5d73ec  gcc/testsuite/gcc.dg/pr81030.c
! 66ddd134037471a6a0f9653a3d3cee47  gcc/testsuite/gcc.dg/pr81165.c
! a81e8e9023606e13ed169ebe1352d933  gcc/testsuite/gcc.dg/pr81192.c
! 597afe973f83e86d9b7fde6d5683f0a2  gcc/testsuite/gcc.dg/pr81227.c
! f8b9e7e40bbdc976061399c74f48e7e0  gcc/testsuite/gcc.dg/pr81228.c
! db7151f89bb35a308fb76b916ed6af28  gcc/testsuite/gcc.dg/pr81281-1.c
! 513db0132eb26f44baa777444b159bab  gcc/testsuite/gcc.dg/pr81281-2.c
! d92cbe2740f29cf70cd0dbc49d3427fd  gcc/testsuite/gcc.dg/pr81281-3.c
! 154b0cd0601d7d3e7c1f50f774e220f5  gcc/testsuite/gcc.dg/pr81292-1.c
! aa4f69b37e2a4b5970f101bed92d0737  gcc/testsuite/gcc.dg/pr81292-2.c
! 775629209d7e8658f8e8507feb2d89bb  gcc/testsuite/gcc.dg/pr81345.c
  bb156c6c81366579b6d35fa7f4c47036  gcc/testsuite/gcc.dg/pr81455.c
+ c3a7668e11743524d0adc31ad84aaa1e  gcc/testsuite/gcc.dg/pr81564.c
+ bacc84d97eb736b7ff43089089accd59  gcc/testsuite/gcc.dg/pr81578.c
  d0740fea8c2bde45e4d2daafa1a131cc  gcc/testsuite/gcc.dg/pr81588.c
+ ac9cd43f4966552e06f69dd903586ae5  gcc/testsuite/gcc.dg/pr81592.c
  25643ed86459e72b894b58fd0ca23c45  gcc/testsuite/gcc.dg/pr81621.c
  15e9928cc7fd07b5da8b5ab724a2878d  gcc/testsuite/gcc.dg/pr81650.c
+ 44463eeb15323b96c557afddb523b471  gcc/testsuite/gcc.dg/pr81661.c
+ 8fab7f91b9bc4a53676eb3fda87c4fb8  gcc/testsuite/gcc.dg/pr81695.c
+ 9ab971b6999580f266c66c9b75d30fe2  gcc/testsuite/gcc.dg/pr81703.c
+ 134c0d152144864ee18c5b04beb65824  gcc/testsuite/gcc.dg/pr81737.c
+ 274dce5636fb4d172c54d9fd0398c66d  gcc/testsuite/gcc.dg/pr81779.c
+ bb51d840891e58c67fdec015a27b4b21  gcc/testsuite/gcc.dg/pr81795.c
+ b31de5915d13d5a487df286f9e2f40b3  gcc/testsuite/gcc.dg/pr81854.c
+ 43c3a11f0c6a95086f850f8bbd9b2648  gcc/testsuite/gcc.dg/pr81979.c
  6275ac69ea3af7836ee4b4f35a012f5b  gcc/testsuite/gcc.dg/pr81988.c
+ 8a6ecca200c424c3675ab92bffdf1f83  gcc/testsuite/gcc.dg/pr82004.c
  6ab73da237e4b1f4a00a90b19e6d538b  gcc/testsuite/gcc.dg/pr82112.c
+ 03f406420228670ca4c0d7803f449ef2  gcc/testsuite/gcc.dg/pr82123.c
+ 23d2af0b89dbfce29b766fe6cccea848  gcc/testsuite/gcc.dg/pr82167.c
+ 9f39cfbe75266c4a5865ee5b749c2b0c  gcc/testsuite/gcc.dg/pr82190.c
  3f25e46f965a27a369afdbd4a7198ff7  gcc/testsuite/gcc.dg/pr82274-1.c
  764c02762bebaad407461b2e21341c14  gcc/testsuite/gcc.dg/pr82274-2.c
+ 0810d7aca616cdec98766831421fe4d7  gcc/testsuite/gcc.dg/pr82286.c
+ 08241379d13eba54534256593a067372  gcc/testsuite/gcc.dg/pr82386.c
+ e448e59de356ed567c77eccad49be71f  gcc/testsuite/gcc.dg/pr82389.c
+ b28312731883249096b369ec396b5d93  gcc/testsuite/gcc.dg/pr82404.c
+ d0ad725b61443532ff6f658b865edb3d  gcc/testsuite/gcc.dg/pr82596.c
+ f22dd8c91991123c128bf55dc061361a  gcc/testsuite/gcc.dg/pr82597.c
  ae605184856a82a47dbd32ae477f514f  gcc/testsuite/gcc.dg/pr82703.c
  090f08b3a0f18a09d76a66610bb47031  gcc/testsuite/gcc.dg/pr82765.c
+ e8c6268874868a6b771fa2e230d802c5  gcc/testsuite/gcc.dg/pr82788.c
+ f033acbc387fbfc3cc80c2bb7eb16554  gcc/testsuite/gcc.dg/pr82809.c
+ 926bb5d76c1c3805f39aff025afdf392  gcc/testsuite/gcc.dg/pr82863.c
+ 64e40fa689444553acd5c162baae6e19  gcc/testsuite/gcc.dg/pr82875.c
+ 965e1c13fa7c703c3703c4519732dc8d  gcc/testsuite/gcc.dg/pr82916.c
+ 18a82028cfde6d1a31425d957f2650e8  gcc/testsuite/gcc.dg/pr82929-2.c
+ e60ee8beac136989d527e9559206833c  gcc/testsuite/gcc.dg/pr82929.c
  3b6383789fec91d0e0c3792510760ca9  gcc/testsuite/gcc.dg/pr82975.c
+ c5d86e710565da10cc02dd413d24789e  gcc/testsuite/gcc.dg/pr83034.c
+ fd3c9dad463ae33d02b4e94dbd632234  gcc/testsuite/gcc.dg/pr83044.c
+ 9afadc7286f5f425c917815b09088199  gcc/testsuite/gcc.dg/pr83047.c
+ f07888e58b74d33a6e69cb7e1bff68f5  gcc/testsuite/gcc.dg/pr83089.c
+ b18034a9642d2e8221b3baca79c0dcba  gcc/testsuite/gcc.dg/pr83100-1.c
+ ac3acd9e7ede2310f45dd30cb994a455  gcc/testsuite/gcc.dg/pr83100-2.c
+ e73ff2253869a00b70fba043fd5b9475  gcc/testsuite/gcc.dg/pr83100-3.c
+ f0d689622fdc561c5b1a31f4536ed42f  gcc/testsuite/gcc.dg/pr83100-4.c
  ee769f3adcf7fab595250b248a69fc79  gcc/testsuite/gcc.dg/pr83198.c
+ 474a1a00c1b982639b2285f2d4f3e621  gcc/testsuite/gcc.dg/pr83312.c
+ e836fccdf76bcf9d35761ddffa6d76d1  gcc/testsuite/gcc.dg/pr83323.c
+ 239ae03cc3fb2ee485719c17ec9d04cd  gcc/testsuite/gcc.dg/pr83361.c
+ e4dfbb948a4c684512ffb06171fbf366  gcc/testsuite/gcc.dg/pr83363.c
+ b09000e6104e19c4d2e2e0550272c280  gcc/testsuite/gcc.dg/pr83364.c
+ 8785ee78f0ecce2b7ef647d29d90cf54  gcc/testsuite/gcc.dg/pr83373.c
+ 64ee6bfa410f7c1d30c3d7f63402433b  gcc/testsuite/gcc.dg/pr83393.c
+ a6e9e544df8c1540a5957852a45004e8  gcc/testsuite/gcc.dg/pr83396.c
+ 4f297789c555b06acff0f263a2de4380  gcc/testsuite/gcc.dg/pr83415.c
+ ff149ef447478fe287d21948bf94820b  gcc/testsuite/gcc.dg/pr83419.c
+ d1d24788f9c8caf0192fc3807eb41608  gcc/testsuite/gcc.dg/pr83422.c
  4cfcf9fb49e0c6531f60ce19ff899760  gcc/testsuite/gcc.dg/pr83424.c
+ 714fcf5eda6c94578c0caf38f55c31e9  gcc/testsuite/gcc.dg/pr83463.c
+ 127e29196e819473182adb7375e60042  gcc/testsuite/gcc.dg/pr83480.c
+ 9d9e02d663325d2434733c97d93c983e  gcc/testsuite/gcc.dg/pr83491.c
+ 6a73c9e8dbc0c410fc99369606f0057f  gcc/testsuite/gcc.dg/pr83506.c
  8737dcae5fe714e2a9c7615d0daa08bb  gcc/testsuite/gcc.dg/pr83512.c
+ 6257308e6edc27cc732413df2fdc6b78  gcc/testsuite/gcc.dg/pr83517.c
  ebf3ad75a7f26e3b9af3d5d4e2389afd  gcc/testsuite/gcc.dg/pr83521.c
+ 79410d4b7df3fbc9ffed2b3d2bcbf9b2  gcc/testsuite/gcc.dg/pr83527.c
+ 3734a0e2a19c846d3bec2a6cee5a3317  gcc/testsuite/gcc.dg/pr83530.c
  ae7d69a2b5ce2e83ee3853b71000d655  gcc/testsuite/gcc.dg/pr83552.c
+ aeb77ea517a55d71f3f5bec9f74e44b6  gcc/testsuite/gcc.dg/pr83581.c
+ b306dfd64128f7d574ce8f74f9111221  gcc/testsuite/gcc.dg/pr83585.c
+ d06837b805d5d6e2d9f0bbc2b55d8d8d  gcc/testsuite/gcc.dg/pr83593.c
+ 5e144c4c6757c0c12cb69dd12ae59f54  gcc/testsuite/gcc.dg/pr83595.c
+ 921053a1d94ff36e09c26d33eba4042e  gcc/testsuite/gcc.dg/pr83605.c
  81f7605ff01265c2f5be2ced12074dbc  gcc/testsuite/gcc.dg/pr83609.c
! 835a5025cb323c221d75a11ac4f6051e  gcc/testsuite/gcc.dg/pr83620.c
! 93d3175eca0ef03106711a2aa8be5050  gcc/testsuite/gcc.dg/pr83621.c
! ad8aa51dff8a784aa754b3499198527e  gcc/testsuite/gcc.dg/pr83623.c
! 4f88833cae7ff5d28782268bf21394ed  gcc/testsuite/gcc.dg/pr83640.c
! 27752954816ca091e82ace98771ab208  gcc/testsuite/gcc.dg/pr83645.c
! 1bbf7241c9eb7e08079a20866de873d3  gcc/testsuite/gcc.dg/pr83666.c
! fe9e33c8a4c46f238c225caf5f4d7935  gcc/testsuite/gcc.dg/pr83723.c
! e53637bef6923ab6eae09ba5d651bafe  gcc/testsuite/gcc.dg/pr83771.c
! b7db39b59a66affdb99e26004f92b5db  gcc/testsuite/gcc.dg/pr83801.c
! 30cd5500060c0590a514e7004bf3f3b2  gcc/testsuite/gcc.dg/pr83844.c
! 201dd112a06809a09ad070798d04a086  gcc/testsuite/gcc.dg/pr83852.c
! f18c98a6522174d4131ce51bb8396ca6  gcc/testsuite/gcc.dg/pr83913.c
! 41515793e14c2520469b603b7155b95d  gcc/testsuite/gcc.dg/pr83922.c
! 7322bdcabbdef7d769fc894b6e8694da  gcc/testsuite/gcc.dg/pr83930.c
! 62e94d93a45fcaad5cc1cb4fb1e8d3c1  gcc/testsuite/gcc.dg/pr83962.c
! 5a08b5f125d40e80cbfa648fd7d53df7  gcc/testsuite/gcc.dg/pr83972.c
! 9eeba6fce77e55ccdcedf59ccf4edfc7  gcc/testsuite/gcc.dg/pr83985.c
! 0a681331473e7aabb020a483acf3d081  gcc/testsuite/gcc.dg/pr83986.c
! aa5aeeb9303713d11e8680d92dbd0bb3  gcc/testsuite/gcc.dg/pr84068.c
! 70e4b16ceedc356882716fae5db2910c  gcc/testsuite/gcc.dg/pr84095.c
! cb37cbb046e6ce050aa898afb1c6a715  gcc/testsuite/gcc.dg/pr84100.c
! a43593a06b13b6090fbe6e58dd959845  gcc/testsuite/gcc.dg/pr84225.c
! 8569398860bc00c2e87732809c2b291c  gcc/testsuite/gcc.dg/pr84237.c
! cb34dca6f6fc6fb4bfcf3271edd22b6e  gcc/testsuite/gcc.dg/pr84300.c
! 1ac7dbf97490152b9b9845383dfd0ccf  gcc/testsuite/gcc.dg/pr84309-2.c
! c9b0af3e25015228e29e4e81cdc4c917  gcc/testsuite/gcc.dg/pr84309.c
! b027b91a23cc049c10e3b860ae114501  gcc/testsuite/gcc.dg/pr84321.c
! 073d5719dfc4c25fd28e82e44dd97a6d  gcc/testsuite/gcc.dg/pr84334.c
! daed5d1526c0aa384500546d8267021f  gcc/testsuite/gcc.dg/pr84452.c
! 790fd17b400b88519015df9dbf42bcac  gcc/testsuite/gcc.dg/pr84503-1.c
! a82e5256d3a033fdd127392c71e71bb5  gcc/testsuite/gcc.dg/pr84503-2.c
! 48512baea15c433fec04f8fc4f06900b  gcc/testsuite/gcc.dg/pr84607.c
! 61f557d28ae0f7d89a6c1e920add45cc  gcc/testsuite/gcc.dg/pr84614.c
! 3486b93523994e789a532b80c62ed6cf  gcc/testsuite/gcc.dg/pr84628.c
! a8a6d1e92af6771ff8960f67def18995  gcc/testsuite/gcc.dg/pr84659.c
! 37a581ea7b8047969df190b0d37976bc  gcc/testsuite/gcc.dg/pr84670-1.c
! a1693c36812392222a5d0de78bc87be9  gcc/testsuite/gcc.dg/pr84670-2.c
! 7f93483581dde0871a94891363e93147  gcc/testsuite/gcc.dg/pr84670-3.c
! 91c0cdb878faece5b805a4cc108bdcfb  gcc/testsuite/gcc.dg/pr84670-4.c
! f453087fbc803d9ac86ddf3401284313  gcc/testsuite/gcc.dg/pr84687.c
! e34cff1a876b622b1540ceb3aeeb61f0  gcc/testsuite/gcc.dg/pr84710.c
! de62cf0ecb69c8d6d9105dc6667f6229  gcc/testsuite/gcc.dg/pr84721.c
! 78ba75f48a2ec9b41e2849b30c23bb56  gcc/testsuite/gcc.dg/pr84739.c
! 2626715aa8dc94dce0f12984ea68b9ba  gcc/testsuite/gcc.dg/pr84772.c
! c985d84c8f42ff2d0279e0c7b0305ba5  gcc/testsuite/gcc.dg/pr84799.c
! c63e7806c3d2d9248a99f9d2bbc5619b  gcc/testsuite/gcc.dg/pr84834.c
! 350ecde2080adce3b16ae868d60d4aa7  gcc/testsuite/gcc.dg/pr84841.c
! 0b86071d460e95cfac961b6b9e5ddc6d  gcc/testsuite/gcc.dg/pr84853.c
! 13a2c6ed4e8585ccd298c2bbe58a83f9  gcc/testsuite/gcc.dg/pr84875.c
! 4294a6745f3296677b46dd5bfd884901  gcc/testsuite/gcc.dg/pr84899.c
! c9f762eb0b2a4e8131f51af77314b6ab  gcc/testsuite/gcc.dg/pr84941.c
! 10853acb471ecaea1557d0f0b8f741e4  gcc/testsuite/gcc.dg/pr84953.c
! c225bb9a94447d43ab8196e9559ae2df  gcc/testsuite/gcc.dg/pr84956.c
! 6febb7d580bbfd3830c00ff452bfd33f  gcc/testsuite/gcc.dg/pr85045.c
! 7b105cf4c5c1f15634bc3e69c614bd30  gcc/testsuite/gcc.dg/pr85167.c
! 5635d424e24d4c97660bed71dc7eff9d  gcc/testsuite/gcc.dg/pr85180.c
! 4ba337dbe36ce8bc43a33ac789693fd2  gcc/testsuite/gcc.dg/pr85195.c
! 5fbc6adf6a0673bd3604a47bcc9474c5  gcc/testsuite/gcc.dg/pr85257.c
! 73272cb6ab6453fb7e7f14a2c5ab9f90  gcc/testsuite/gcc.dg/pr85300.c
! 905f72e36e84070701308eea39f3c902  gcc/testsuite/gcc.dg/pr85376.c
! b753756e7c1180d69325d66adfef8353  gcc/testsuite/gcc.dg/pr85388-1.c
! 6f63599011a0fdbc55e033daf750cd8b  gcc/testsuite/gcc.dg/pr85388-2.c
! 534daea9e132f4f1d7f5b8ddd35b0e8b  gcc/testsuite/gcc.dg/pr85388-3.c
! f342f6102dbfba5a3ecd3f8427dcc9f9  gcc/testsuite/gcc.dg/pr85388-4.c
! 4fa6dc8059c341ffb7a74dffea211f57  gcc/testsuite/gcc.dg/pr85388-5.c
! b6d9b01a2b1f4acd2989ee048445a53b  gcc/testsuite/gcc.dg/pr85388-6.c
! da737842e758ecbae76c786c8e639c6d  gcc/testsuite/gcc.dg/pr85414.c
! 363d29326a1b007c842a25a66cc4cb89  gcc/testsuite/gcc.dg/pr85423.c
! 396503de7f50fa67c64fbce7eff9176d  gcc/testsuite/gcc.dg/pr85430.c
! f73659a5796bc5f0f5722abc4a8a97de  gcc/testsuite/gcc.dg/pr85455.c
! f931d01142b00980ea2ee65a19b49f82  gcc/testsuite/gcc.dg/pr85467.c
! 8f4da20bd02b62f8a4a81fec5c768aed  gcc/testsuite/gcc.dg/pr85512.c
! 94404ad63f60731d03dc7d04243a8533  gcc/testsuite/gcc.dg/pr85529.c
  8b7d73da2d5d78000716492365a85d5a  gcc/testsuite/gcc.dg/pr8715.c
  45a1003c5d24f4875b1c3a5d4f9569fe  gcc/testsuite/gcc.dg/pr8788-1.c
  be04382a35ebb1cfae1b2168f1693a94  gcc/testsuite/gcc.dg/pr8835-1.c
*************** afcceb4d1454686aec15563b318f6f87  gcc/te
*** 31954,31963 ****
  cd69ccaaeda9135ad00087594e6184dc  gcc/testsuite/gcc.dg/pragma-darwin.c
  5f2a2de0d5914faa1ba7ad8f5b1996d0  gcc/testsuite/gcc.dg/pragma-diag-1.c
  3927755743a61af316a63adaa0bfa70b  gcc/testsuite/gcc.dg/pragma-diag-2.c
! 8ce9f4d69f451afd2c5dd4fa75fd9bc7  gcc/testsuite/gcc.dg/pragma-diag-3.c
  7b506a3b87be9653f7adc0616c85ddaf  gcc/testsuite/gcc.dg/pragma-diag-4.c
  d6168f0bfa501820da2947f6acdd96ef  gcc/testsuite/gcc.dg/pragma-diag-5.c
  2befb909e9501a3b3fd6fab2b87e5d13  gcc/testsuite/gcc.dg/pragma-diag-6.c
  24a9270f9a6635bb396c6d700a9d9d2c  gcc/testsuite/gcc.dg/pragma-init-fini-2.c
  8ea7784f3024c6da48a3ea846fb015cf  gcc/testsuite/gcc.dg/pragma-init-fini.c
  811b358bae37344e12a6159506ad1c6e  gcc/testsuite/gcc.dg/pragma-message.c
--- 33542,33552 ----
  cd69ccaaeda9135ad00087594e6184dc  gcc/testsuite/gcc.dg/pragma-darwin.c
  5f2a2de0d5914faa1ba7ad8f5b1996d0  gcc/testsuite/gcc.dg/pragma-diag-1.c
  3927755743a61af316a63adaa0bfa70b  gcc/testsuite/gcc.dg/pragma-diag-2.c
! b0f8c4136fa3fadda0bb7286049aebb9  gcc/testsuite/gcc.dg/pragma-diag-3.c
  7b506a3b87be9653f7adc0616c85ddaf  gcc/testsuite/gcc.dg/pragma-diag-4.c
  d6168f0bfa501820da2947f6acdd96ef  gcc/testsuite/gcc.dg/pragma-diag-5.c
  2befb909e9501a3b3fd6fab2b87e5d13  gcc/testsuite/gcc.dg/pragma-diag-6.c
+ ff83f1142d27828d619d4abf6063f64d  gcc/testsuite/gcc.dg/pragma-diag-7.c
  24a9270f9a6635bb396c6d700a9d9d2c  gcc/testsuite/gcc.dg/pragma-init-fini-2.c
  8ea7784f3024c6da48a3ea846fb015cf  gcc/testsuite/gcc.dg/pragma-init-fini.c
  811b358bae37344e12a6159506ad1c6e  gcc/testsuite/gcc.dg/pragma-message.c
*************** e5fa04b57a4c6ee2a8578c05f2e54789  gcc/te
*** 31973,31992 ****
  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
! c6b9ee2329a11dd200ab6b99fec7617b  gcc/testsuite/gcc.dg/predict-1.c
  26354537bffc13b99bf0e1d5cb7ba10d  gcc/testsuite/gcc.dg/predict-10.c
  9b19aba5c4c546aafc87068f0bbb734f  gcc/testsuite/gcc.dg/predict-11.c
  4da8f82073c0bc61430ea433749f19b6  gcc/testsuite/gcc.dg/predict-12.c
! 70958892f5f676083e16b35c93086644  gcc/testsuite/gcc.dg/predict-13.c
! 2f57dc21bfd12abd70014ca19d0b16d2  gcc/testsuite/gcc.dg/predict-14.c
  72706bfb463bdad90a67054588fe3a08  gcc/testsuite/gcc.dg/predict-2.c
! 726c15af736d4056528807cbd8c6753f  gcc/testsuite/gcc.dg/predict-3.c
  4a65bfd642cc9f10bb1f3349273304e9  gcc/testsuite/gcc.dg/predict-4.c
! 2282ef0f0b4cc4b411dcf6dd490a25fb  gcc/testsuite/gcc.dg/predict-5.c
! f9da870b281d785b6afc4ac6ec956b4e  gcc/testsuite/gcc.dg/predict-6.c
  a47ead81e5beea1cb75f310d7e10c52d  gcc/testsuite/gcc.dg/predict-7.c
! bfb40821d222d830983292114e01d9eb  gcc/testsuite/gcc.dg/predict-8.c
! 6df2bf86ad8471c57710d66be14eb18e  gcc/testsuite/gcc.dg/predict-9.c
  2b2b0e85d6cc15db42ed6106a0ef0e93  gcc/testsuite/gcc.dg/prefetch-loop-arrays-1.c
  ec64a0a70acec40f6e99d8ddd5bcb845  gcc/testsuite/gcc.dg/profile-dir-1.c
  44feab1b8c914521fa68c60ea6ad79ed  gcc/testsuite/gcc.dg/profile-dir-2.c
--- 33562,33582 ----
  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
! 083569a8001b5f40c2483059b042db01  gcc/testsuite/gcc.dg/predict-1.c
  26354537bffc13b99bf0e1d5cb7ba10d  gcc/testsuite/gcc.dg/predict-10.c
  9b19aba5c4c546aafc87068f0bbb734f  gcc/testsuite/gcc.dg/predict-11.c
  4da8f82073c0bc61430ea433749f19b6  gcc/testsuite/gcc.dg/predict-12.c
! 495fa7bdd3318b509855e78ab1cf60e3  gcc/testsuite/gcc.dg/predict-13.c
! 06879f124019fedfa27de55864a9ee44  gcc/testsuite/gcc.dg/predict-14.c
! fa3e7c382ff66e5d2620f232268180a7  gcc/testsuite/gcc.dg/predict-15.c
  72706bfb463bdad90a67054588fe3a08  gcc/testsuite/gcc.dg/predict-2.c
! ac16c673813440cb9a82bf34252e7efd  gcc/testsuite/gcc.dg/predict-3.c
  4a65bfd642cc9f10bb1f3349273304e9  gcc/testsuite/gcc.dg/predict-4.c
! 54f9a19ad770b44aa77c24b0b2881dd1  gcc/testsuite/gcc.dg/predict-5.c
! 291d22f03d2e8379ddebdccd249c7289  gcc/testsuite/gcc.dg/predict-6.c
  a47ead81e5beea1cb75f310d7e10c52d  gcc/testsuite/gcc.dg/predict-7.c
! 0aeb02f86ce5f139d072ef1c3322147e  gcc/testsuite/gcc.dg/predict-8.c
! 4d6cbfc0c8704b2f3af1c28bf16ecf5e  gcc/testsuite/gcc.dg/predict-9.c
  2b2b0e85d6cc15db42ed6106a0ef0e93  gcc/testsuite/gcc.dg/prefetch-loop-arrays-1.c
  ec64a0a70acec40f6e99d8ddd5bcb845  gcc/testsuite/gcc.dg/profile-dir-1.c
  44feab1b8c914521fa68c60ea6ad79ed  gcc/testsuite/gcc.dg/profile-dir-2.c
*************** a86caaa0b39c05b44476b1daa7029ee5  gcc/te
*** 31999,32010 ****
  f4259274e626508e8351a9fdc0a89800  gcc/testsuite/gcc.dg/pthread-init-1.c
  e5a739c8627718a467c9f8b2d8469181  gcc/testsuite/gcc.dg/pthread-init-2.c
  1e43eff6196cdabcccbabb483e4e5469  gcc/testsuite/gcc.dg/pthread-init-common.h
! e01cd721e30903c5500537cd55e71685  gcc/testsuite/gcc.dg/pubtypes-1.c
! 54e6ff98ad272c592c094a060a5e2c87  gcc/testsuite/gcc.dg/pubtypes-2.c
! 9585dc1d00f2aeba94313c4b4a6cf636  gcc/testsuite/gcc.dg/pubtypes-3.c
! c6fd093efdaca04d3b1d686091ac9373  gcc/testsuite/gcc.dg/pubtypes-4.c
  e91f166b4de92c03f81d916150bf3333  gcc/testsuite/gcc.dg/pure-1.c
  701b9d5c2eec087c414cba620038d0a6  gcc/testsuite/gcc.dg/pure-2.c
  131d7728e0baca355ff811d6c48cc2c2  gcc/testsuite/gcc.dg/qual-component-1.c
  f98b23a23376b07500bb22dc9c07a97b  gcc/testsuite/gcc.dg/qual-return-1.c
  a69c0ed8db7dad6898af9609fa119bf4  gcc/testsuite/gcc.dg/qual-return-2.c
--- 33589,33601 ----
  f4259274e626508e8351a9fdc0a89800  gcc/testsuite/gcc.dg/pthread-init-1.c
  e5a739c8627718a467c9f8b2d8469181  gcc/testsuite/gcc.dg/pthread-init-2.c
  1e43eff6196cdabcccbabb483e4e5469  gcc/testsuite/gcc.dg/pthread-init-common.h
! 81c32e7aa8336105b10ad33457ae164f  gcc/testsuite/gcc.dg/pubtypes-1.c
! f3c7d75396eb97ec26504e25e0f0d626  gcc/testsuite/gcc.dg/pubtypes-2.c
! c34dc229194c11455bb18daf283539fe  gcc/testsuite/gcc.dg/pubtypes-3.c
! 5958d27fe54825fb1bb51f9b6240fb8b  gcc/testsuite/gcc.dg/pubtypes-4.c
  e91f166b4de92c03f81d916150bf3333  gcc/testsuite/gcc.dg/pure-1.c
  701b9d5c2eec087c414cba620038d0a6  gcc/testsuite/gcc.dg/pure-2.c
+ 1ba96c5459efa721e448123e79141819  gcc/testsuite/gcc.dg/pure-3.c
  131d7728e0baca355ff811d6c48cc2c2  gcc/testsuite/gcc.dg/qual-component-1.c
  f98b23a23376b07500bb22dc9c07a97b  gcc/testsuite/gcc.dg/qual-return-1.c
  a69c0ed8db7dad6898af9609fa119bf4  gcc/testsuite/gcc.dg/qual-return-2.c
*************** a69c0ed8db7dad6898af9609fa119bf4  gcc/te
*** 32013,32026 ****
  3a803c3e32133d46405591f6da8f8d12  gcc/testsuite/gcc.dg/qual-return-5.c
  7a233a8a5eef90550bf415fb9b005997  gcc/testsuite/gcc.dg/qual-return-6.c
  fa6e4618c862111306143bc22d6cb230  gcc/testsuite/gcc.dg/range-test-1.c
  e4f44dea457e219eca0cd8bd565720f4  gcc/testsuite/gcc.dg/readonly-loc.c
  98eea3e821d725fdf285fd95a678691a  gcc/testsuite/gcc.dg/real-const-1.c
! 1dbe50aee0868d87bde8ef1cf8e69f22  gcc/testsuite/gcc.dg/redecl-1.c
  3e7326591a5c2576246c153af1faa2a5  gcc/testsuite/gcc.dg/redecl-10.c
  940d9651d34c6327eb0b92ea05645d45  gcc/testsuite/gcc.dg/redecl-11.c
  233789aef5e377c9828d8672e01d5019  gcc/testsuite/gcc.dg/redecl-12.c
  1e362a1565206a294226e76f7bef331d  gcc/testsuite/gcc.dg/redecl-13.c
! cc3273cd24ecaee364222d4ef59e2df4  gcc/testsuite/gcc.dg/redecl-14.c
  e1a8f0527fc64cafbf4a62458c8faf8b  gcc/testsuite/gcc.dg/redecl-15.c
  e9f6ab8177be009b10587da44d562a5a  gcc/testsuite/gcc.dg/redecl-16.c
  fccd1934a683d43aa6a7d546eee38065  gcc/testsuite/gcc.dg/redecl-17.c
--- 33604,33618 ----
  3a803c3e32133d46405591f6da8f8d12  gcc/testsuite/gcc.dg/qual-return-5.c
  7a233a8a5eef90550bf415fb9b005997  gcc/testsuite/gcc.dg/qual-return-6.c
  fa6e4618c862111306143bc22d6cb230  gcc/testsuite/gcc.dg/range-test-1.c
+ b40a9d0cd8cc04909a88242a822ab148  gcc/testsuite/gcc.dg/range.h
  e4f44dea457e219eca0cd8bd565720f4  gcc/testsuite/gcc.dg/readonly-loc.c
  98eea3e821d725fdf285fd95a678691a  gcc/testsuite/gcc.dg/real-const-1.c
! c5e624b24e249b82a630c8f35e35a5f7  gcc/testsuite/gcc.dg/redecl-1.c
  3e7326591a5c2576246c153af1faa2a5  gcc/testsuite/gcc.dg/redecl-10.c
  940d9651d34c6327eb0b92ea05645d45  gcc/testsuite/gcc.dg/redecl-11.c
  233789aef5e377c9828d8672e01d5019  gcc/testsuite/gcc.dg/redecl-12.c
  1e362a1565206a294226e76f7bef331d  gcc/testsuite/gcc.dg/redecl-13.c
! 30baf1b8438a16fd6bbf53feb871e167  gcc/testsuite/gcc.dg/redecl-14.c
  e1a8f0527fc64cafbf4a62458c8faf8b  gcc/testsuite/gcc.dg/redecl-15.c
  e9f6ab8177be009b10587da44d562a5a  gcc/testsuite/gcc.dg/redecl-16.c
  fccd1934a683d43aa6a7d546eee38065  gcc/testsuite/gcc.dg/redecl-17.c
*************** a4b7e92b399e9a3ccddd209524470054  gcc/te
*** 32041,32055 ****
  650297d80f8b5534796a1a513af1479b  gcc/testsuite/gcc.dg/return-type-3.c
  e7055b12b2da73125c471ef6e21aec3d  gcc/testsuite/gcc.dg/rtl/aarch64/asr_div1.c
  82921214d686f1804813b91947084109  gcc/testsuite/gcc.dg/rtl/aarch64/pr71779.c
! 9b95768161b8e35865491942870e6f96  gcc/testsuite/gcc.dg/rtl/rtl.exp
  75dd0c3d9daa8abdd58a0d0eaf55bd9e  gcc/testsuite/gcc.dg/rtl/test.c
! cba9e84173ef7cd7fe188fc74a21c9b4  gcc/testsuite/gcc.dg/rtl/truncated-rtl-file.c
  3a9704d0df301152dace95218afa80c6  gcc/testsuite/gcc.dg/rtl/unknown-rtx-code.c
  80ddae3611729e00a29574502629166d  gcc/testsuite/gcc.dg/rtl/x86_64/dfinit.c
  e6be5b0e59456716966a1df6c27b4524  gcc/testsuite/gcc.dg/rtl/x86_64/different-structs.c
! b781ab5c78c6ab655ffda0043f8db5ba  gcc/testsuite/gcc.dg/rtl/x86_64/final.c
  27fbdc5130153553dc82837574ea77af  gcc/testsuite/gcc.dg/rtl/x86_64/into-cfglayout.c
  b33004ecc6eb9c724fbb982faf6bbe85  gcc/testsuite/gcc.dg/rtl/x86_64/ira.c
  8d2c37260ff6505748440e7880827a04  gcc/testsuite/gcc.dg/rtl/x86_64/pro_and_epilogue.c
  003cf66847d8ab8a150f0d223372137e  gcc/testsuite/gcc.dg/rtl/x86_64/test-multiple-fns.c
  306b8b4053354370386de5d5c3e8c637  gcc/testsuite/gcc.dg/rtl/x86_64/test-return-const.c.after-expand.c
--- 33633,33649 ----
  650297d80f8b5534796a1a513af1479b  gcc/testsuite/gcc.dg/return-type-3.c
  e7055b12b2da73125c471ef6e21aec3d  gcc/testsuite/gcc.dg/rtl/aarch64/asr_div1.c
  82921214d686f1804813b91947084109  gcc/testsuite/gcc.dg/rtl/aarch64/pr71779.c
! 1a862d5804e1cd16507ae8049cf93f0d  gcc/testsuite/gcc.dg/rtl/arm/stl-cond.c
! 62df42f8ea605acf6d6df77935d1b5b7  gcc/testsuite/gcc.dg/rtl/rtl.exp
  75dd0c3d9daa8abdd58a0d0eaf55bd9e  gcc/testsuite/gcc.dg/rtl/test.c
! 72262a3ad7dd60907c8d3ffad783ba9e  gcc/testsuite/gcc.dg/rtl/truncated-rtl-file.c
  3a9704d0df301152dace95218afa80c6  gcc/testsuite/gcc.dg/rtl/unknown-rtx-code.c
  80ddae3611729e00a29574502629166d  gcc/testsuite/gcc.dg/rtl/x86_64/dfinit.c
  e6be5b0e59456716966a1df6c27b4524  gcc/testsuite/gcc.dg/rtl/x86_64/different-structs.c
! 7cb433afad7af65b6faaf8f92aa621d5  gcc/testsuite/gcc.dg/rtl/x86_64/final.c
  27fbdc5130153553dc82837574ea77af  gcc/testsuite/gcc.dg/rtl/x86_64/into-cfglayout.c
  b33004ecc6eb9c724fbb982faf6bbe85  gcc/testsuite/gcc.dg/rtl/x86_64/ira.c
+ c684e5e80de28dda23b373f072372784  gcc/testsuite/gcc.dg/rtl/x86_64/pr82933.c
  8d2c37260ff6505748440e7880827a04  gcc/testsuite/gcc.dg/rtl/x86_64/pro_and_epilogue.c
  003cf66847d8ab8a150f0d223372137e  gcc/testsuite/gcc.dg/rtl/x86_64/test-multiple-fns.c
  306b8b4053354370386de5d5c3e8c637  gcc/testsuite/gcc.dg/rtl/x86_64/test-return-const.c.after-expand.c
*************** a8523ff559f8384cdfaa8131cafb2466  gcc/te
*** 32063,32076 ****
  0c3b41d31bc8c5766ef00b41563b6f67  gcc/testsuite/gcc.dg/sancov/basic0.c
  7bc3b2dd6c2595fc002c58318ba0ad0e  gcc/testsuite/gcc.dg/sancov/basic1.c
  c3a18562322c5cc05e7fb2d95a929a8a  gcc/testsuite/gcc.dg/sancov/basic2.c
  10a9db85b046a8ccc1ebb5e953dedb6d  gcc/testsuite/gcc.dg/sancov/pr80444.c
! 2395b49550094a9d765e432e36b406e1  gcc/testsuite/gcc.dg/sancov/sancov.exp
  d5126a2bd42a9c1593aedafecf29da00  gcc/testsuite/gcc.dg/section1.c
  8895240435461e12ab8a00546c8b9309  gcc/testsuite/gcc.dg/sequence-pt-1.c
  51453c25b899451d48a5947b60d782cf  gcc/testsuite/gcc.dg/sequence-pt-2.c
  ad593aaafdf4b211b08e5be6b3abc282  gcc/testsuite/gcc.dg/sequence-pt-3.c
  aaf2153b841fae71456b1ba41211400b  gcc/testsuite/gcc.dg/sequence-pt-pr17880.c
! 89149eff9354865c88dfabcbdd5ff924  gcc/testsuite/gcc.dg/setjmp-1.c
  08183d91867b994d38c05049a89f86a4  gcc/testsuite/gcc.dg/setjmp-2.c
  86996dfe7cc52b5246c4ef67b2294be0  gcc/testsuite/gcc.dg/setjmp-3.c
  5dbdea05d50f594556f604bf66857dbc  gcc/testsuite/gcc.dg/setjmp-4.c
--- 33657,33672 ----
  0c3b41d31bc8c5766ef00b41563b6f67  gcc/testsuite/gcc.dg/sancov/basic0.c
  7bc3b2dd6c2595fc002c58318ba0ad0e  gcc/testsuite/gcc.dg/sancov/basic1.c
  c3a18562322c5cc05e7fb2d95a929a8a  gcc/testsuite/gcc.dg/sancov/basic2.c
+ 7cb945daefe317170493b3ad79fc4f10  gcc/testsuite/gcc.dg/sancov/cmp0.c
  10a9db85b046a8ccc1ebb5e953dedb6d  gcc/testsuite/gcc.dg/sancov/pr80444.c
! 5644e0e4cf34da0b87b45d5044c9852f  gcc/testsuite/gcc.dg/sancov/sancov.exp
  d5126a2bd42a9c1593aedafecf29da00  gcc/testsuite/gcc.dg/section1.c
+ 00d91fe4b16ca2aeae1cccad86d4c9f2  gcc/testsuite/gcc.dg/semicolon-fixits.c
  8895240435461e12ab8a00546c8b9309  gcc/testsuite/gcc.dg/sequence-pt-1.c
  51453c25b899451d48a5947b60d782cf  gcc/testsuite/gcc.dg/sequence-pt-2.c
  ad593aaafdf4b211b08e5be6b3abc282  gcc/testsuite/gcc.dg/sequence-pt-3.c
  aaf2153b841fae71456b1ba41211400b  gcc/testsuite/gcc.dg/sequence-pt-pr17880.c
! 661a1fa1148bdef3efed94aa8aeb7ccd  gcc/testsuite/gcc.dg/setjmp-1.c
  08183d91867b994d38c05049a89f86a4  gcc/testsuite/gcc.dg/setjmp-2.c
  86996dfe7cc52b5246c4ef67b2294be0  gcc/testsuite/gcc.dg/setjmp-3.c
  5dbdea05d50f594556f604bf66857dbc  gcc/testsuite/gcc.dg/setjmp-4.c
*************** e177bd4a7f3cb433b33b2c59e4e0af3d  gcc/te
*** 32088,32094 ****
  3c122db62b43b814023fad5c2a91cd3a  gcc/testsuite/gcc.dg/sibcall-2.c
  8db134c81f1f3fb0cd424c92d41567fd  gcc/testsuite/gcc.dg/sibcall-3.c
  2d40b3d78c4496dff12281ea03e15e17  gcc/testsuite/gcc.dg/sibcall-4.c
! 272f41f934e0e3adb13b951135c4b432  gcc/testsuite/gcc.dg/sibcall-6.c
  62808c704ae0941d6882eb2639725b7e  gcc/testsuite/gcc.dg/sibcall-7.c
  ffee6308d78dda55af86280534155756  gcc/testsuite/gcc.dg/sibcall-8.c
  9635527f39f63b2abe9c10be6b4ad36b  gcc/testsuite/gcc.dg/sibcall-9.c
--- 33684,33690 ----
  3c122db62b43b814023fad5c2a91cd3a  gcc/testsuite/gcc.dg/sibcall-2.c
  8db134c81f1f3fb0cd424c92d41567fd  gcc/testsuite/gcc.dg/sibcall-3.c
  2d40b3d78c4496dff12281ea03e15e17  gcc/testsuite/gcc.dg/sibcall-4.c
! a4a9d32810747a683dfd61a19a195556  gcc/testsuite/gcc.dg/sibcall-6.c
  62808c704ae0941d6882eb2639725b7e  gcc/testsuite/gcc.dg/sibcall-7.c
  ffee6308d78dda55af86280534155756  gcc/testsuite/gcc.dg/sibcall-8.c
  9635527f39f63b2abe9c10be6b4ad36b  gcc/testsuite/gcc.dg/sibcall-9.c
*************** cdcbfe4963d2fb08c5ca3beee8988a3a  gcc/te
*** 32111,32117 ****
  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
! 7ba8bc24d0e2f00217191a69cf6af4b6  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
  da76a614bb89993cee6c29cfc7c66e70  gcc/testsuite/gcc.dg/simulate-thread/speculative-store-2.c
--- 33707,33713 ----
  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
! c3a21b34051531c6b95f0c0c42722de5  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
  da76a614bb89993cee6c29cfc7c66e70  gcc/testsuite/gcc.dg/simulate-thread/speculative-store-2.c
*************** a6c6266fc3250956835edbce0002cf67  gcc/te
*** 32128,32134 ****
  0c69e445fc7448b288efbb468a94727f  gcc/testsuite/gcc.dg/sms-1.c
  4c9e0584d09b608eb01778b029b31c2a  gcc/testsuite/gcc.dg/sms-10.c
  7c7d319d4a2c2aa5559843951e2836a0  gcc/testsuite/gcc.dg/sms-11.c
! 535f394b3dce1857057114fed73a1e22  gcc/testsuite/gcc.dg/sms-12.c
  bedab4ee688ff2e29aed3125b78935cb  gcc/testsuite/gcc.dg/sms-2.c
  05c375577a7fb7b2b052ca6f2dda3dfe  gcc/testsuite/gcc.dg/sms-3.c
  d5acced906803788c0c38fa4738fe672  gcc/testsuite/gcc.dg/sms-4.c
--- 33724,33731 ----
  0c69e445fc7448b288efbb468a94727f  gcc/testsuite/gcc.dg/sms-1.c
  4c9e0584d09b608eb01778b029b31c2a  gcc/testsuite/gcc.dg/sms-10.c
  7c7d319d4a2c2aa5559843951e2836a0  gcc/testsuite/gcc.dg/sms-11.c
! 8be3f2c52b94d6678ef5efe4b5dd322f  gcc/testsuite/gcc.dg/sms-12.c
! e5fe4881e15933833fa8b2a30f5c864c  gcc/testsuite/gcc.dg/sms-13.c
  bedab4ee688ff2e29aed3125b78935cb  gcc/testsuite/gcc.dg/sms-2.c
  05c375577a7fb7b2b052ca6f2dda3dfe  gcc/testsuite/gcc.dg/sms-3.c
  d5acced906803788c0c38fa4738fe672  gcc/testsuite/gcc.dg/sms-4.c
*************** f226a4c0809be7a01267f9e9020acc15  gcc/te
*** 32142,32160 ****
  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
! a266617e1062ae9380e4174a6e7511c8  gcc/testsuite/gcc.dg/special/mips-abi.exp
  d41d8cd98f00b204e9800998ecf8427e  gcc/testsuite/gcc.dg/special/mips-abi.s
! bdcaf635fe761b9ac67925d05fa80d42  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
! e937fcbc0bc99ce645d9c3cec552fa38  gcc/testsuite/gcc.dg/special/weak-2.c
  839d06128dcc641172f86236bbbe2cba  gcc/testsuite/gcc.dg/special/weak-2a.c
  f92cc2fa14e5fe946fde0490c2b6321b  gcc/testsuite/gcc.dg/special/weak-2b.c
  c7b1b8b2c8e054f9b5f38c396f6c1426  gcc/testsuite/gcc.dg/special/wkali-1.c
  8c505507aaaeb23f8dbaefe9b5b136d1  gcc/testsuite/gcc.dg/special/wkali-2.c
  f3746837de836616a2cd4a391fcb8570  gcc/testsuite/gcc.dg/special/wkali-2a.c
  794b522131ab90fbd23b0a0121c65d63  gcc/testsuite/gcc.dg/special/wkali-2b.c
! 322429b229748fc3560e5be58a0ba08f  gcc/testsuite/gcc.dg/spellcheck-fields-2.c
  d4fdbf76b8ce0a055e73d176eb3bd869  gcc/testsuite/gcc.dg/spellcheck-fields-3.c
  0554276520e4130db57ea9cf8819e961  gcc/testsuite/gcc.dg/spellcheck-fields.c
  00aefa38dc871345d4b4bec671b5e1c0  gcc/testsuite/gcc.dg/spellcheck-identifiers-2.c
--- 33739,33757 ----
  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
! 5319fb086f68eeddd5ef07e9f068aa08  gcc/testsuite/gcc.dg/special/mips-abi.exp
  d41d8cd98f00b204e9800998ecf8427e  gcc/testsuite/gcc.dg/special/mips-abi.s
! f4bafb78c335430473bdfb73dc7ee3fd  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
  839d06128dcc641172f86236bbbe2cba  gcc/testsuite/gcc.dg/special/weak-2a.c
  f92cc2fa14e5fe946fde0490c2b6321b  gcc/testsuite/gcc.dg/special/weak-2b.c
  c7b1b8b2c8e054f9b5f38c396f6c1426  gcc/testsuite/gcc.dg/special/wkali-1.c
  8c505507aaaeb23f8dbaefe9b5b136d1  gcc/testsuite/gcc.dg/special/wkali-2.c
  f3746837de836616a2cd4a391fcb8570  gcc/testsuite/gcc.dg/special/wkali-2a.c
  794b522131ab90fbd23b0a0121c65d63  gcc/testsuite/gcc.dg/special/wkali-2b.c
! d6d6998346806ab756f4a6f2f1837c80  gcc/testsuite/gcc.dg/spellcheck-fields-2.c
  d4fdbf76b8ce0a055e73d176eb3bd869  gcc/testsuite/gcc.dg/spellcheck-fields-3.c
  0554276520e4130db57ea9cf8819e961  gcc/testsuite/gcc.dg/spellcheck-fields.c
  00aefa38dc871345d4b4bec671b5e1c0  gcc/testsuite/gcc.dg/spellcheck-identifiers-2.c
*************** c6d7a0195929784c394db6fd01156c5f  gcc/te
*** 32179,32185 ****
  82646258c79b5a8da863ace7c99ec6cb  gcc/testsuite/gcc.dg/spellcheck-options-9.c
  0e6dcfa277b1be308e99c8903c0c60a6  gcc/testsuite/gcc.dg/spellcheck-params-2.c
  dcdcdd2fbee271bee4ecc28f42178a23  gcc/testsuite/gcc.dg/spellcheck-params.c
! 0fa23d22bb5b93a07476fa71a5c99a6f  gcc/testsuite/gcc.dg/spellcheck-typenames.c
  d5b447904c327f5cfa57b69050822e4f  gcc/testsuite/gcc.dg/spill-1.c
  672e7367bcad52a6f9ae7d54b11a731c  gcc/testsuite/gcc.dg/split-1.c
  2da0750d36f968b74d39e4f3a4b2d984  gcc/testsuite/gcc.dg/split-2.c
--- 33776,33784 ----
  82646258c79b5a8da863ace7c99ec6cb  gcc/testsuite/gcc.dg/spellcheck-options-9.c
  0e6dcfa277b1be308e99c8903c0c60a6  gcc/testsuite/gcc.dg/spellcheck-params-2.c
  dcdcdd2fbee271bee4ecc28f42178a23  gcc/testsuite/gcc.dg/spellcheck-params.c
! 4b027606d627457f537d4da5f7fac762  gcc/testsuite/gcc.dg/spellcheck-pr83056.c
! 920ee324ee912861f91a29b3947ebfe9  gcc/testsuite/gcc.dg/spellcheck-stdlib.c
! e3188822fe2eb498f64ea0ad687f6232  gcc/testsuite/gcc.dg/spellcheck-typenames.c
  d5b447904c327f5cfa57b69050822e4f  gcc/testsuite/gcc.dg/spill-1.c
  672e7367bcad52a6f9ae7d54b11a731c  gcc/testsuite/gcc.dg/split-1.c
  2da0750d36f968b74d39e4f3a4b2d984  gcc/testsuite/gcc.dg/split-2.c
*************** dfb751744ae63c43f989ee13f0e517d6  gcc/te
*** 32239,32245 ****
  5acf2012225c2563f5111699dc108d4e  gcc/testsuite/gcc.dg/sso/s6.c
  2881d668843202ec4c4e53caf7d29b7c  gcc/testsuite/gcc.dg/sso/s7.c
  dc1e222143fcffd35ee8b32c36dfe5e9  gcc/testsuite/gcc.dg/sso/s8.c
! 7cd26d2a1610b76fffabcafb1f32dc33  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
--- 33838,33844 ----
  5acf2012225c2563f5111699dc108d4e  gcc/testsuite/gcc.dg/sso/s6.c
  2881d668843202ec4c4e53caf7d29b7c  gcc/testsuite/gcc.dg/sso/s7.c
  dc1e222143fcffd35ee8b32c36dfe5e9  gcc/testsuite/gcc.dg/sso/s8.c
! 11b4d8864a3e2bac7a247a1351e90213  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
*************** aadb80509f82b46b30f6e6764a2e2dd1  gcc/te
*** 32256,32268 ****
  298fe2c4a920a1453489cedaeaa98ff3  gcc/testsuite/gcc.dg/ssp-2.c
  b764f892e6c6f673878a4e8da208c16b  gcc/testsuite/gcc.dg/ssp-3.c
  5843aab6624989ad947aa1f77c816bce  gcc/testsuite/gcc.dg/ssp-4.c
  3eb20a070e129b9f71ad84ec481fe8df  gcc/testsuite/gcc.dg/stack-layout-1.c
  d5355400a72402c33417096b04dc2a5d  gcc/testsuite/gcc.dg/stack-layout-2.c
! 272585ae488271b30a7522d90f02680f  gcc/testsuite/gcc.dg/stack-layout-dynamic-1.c
! 3ee206f5e3f0684e195963fc4bb7e1f9  gcc/testsuite/gcc.dg/stack-usage-1.c
  198c846924d490e8eba17829d0caf626  gcc/testsuite/gcc.dg/stack-usage-2.c
  abeae7e4a2120581a50d5eb7cbe3929d  gcc/testsuite/gcc.dg/stackprotectexplicit1.c
! 12a83f5d5cc432ec7e0183124bc9c50f  gcc/testsuite/gcc.dg/stdint-width-1.c
  cc4c4b4f3d828c816c22793a90c03eb1  gcc/testsuite/gcc.dg/stmt-expr-1.c
  8b47d043f375a5995d83feae8f86a8d3  gcc/testsuite/gcc.dg/stmt-expr-2.c
  894f6c6d644fc16f27c51f447c5e60c1  gcc/testsuite/gcc.dg/stmt-expr-3.c
--- 33855,33878 ----
  298fe2c4a920a1453489cedaeaa98ff3  gcc/testsuite/gcc.dg/ssp-2.c
  b764f892e6c6f673878a4e8da208c16b  gcc/testsuite/gcc.dg/ssp-3.c
  5843aab6624989ad947aa1f77c816bce  gcc/testsuite/gcc.dg/ssp-4.c
+ 0e4ef3691ac9c9d5c357dc664cfa0fc2  gcc/testsuite/gcc.dg/stack-check-10.c
+ 95619fb05dbcdba1dc93dde1a2e5c1d2  gcc/testsuite/gcc.dg/stack-check-16.c
+ b743b9d23007c0c82ee7fdb8d7f04e42  gcc/testsuite/gcc.dg/stack-check-2.c
+ 3acc7fbed5ab0c37bba3f24f7d778a88  gcc/testsuite/gcc.dg/stack-check-3.c
+ b626c83312eea994d97f8f460e6cc56e  gcc/testsuite/gcc.dg/stack-check-4.c
+ b6e546415bac1456a1ce590ad49dab36  gcc/testsuite/gcc.dg/stack-check-5.c
+ 39c1bb3dd30449aea4f662c3152b1f13  gcc/testsuite/gcc.dg/stack-check-6.c
+ dee1a068f6336624b5c33891b6a35fe6  gcc/testsuite/gcc.dg/stack-check-6a.c
+ 4b2276e1fde8a5e2e51ba21665bf70d2  gcc/testsuite/gcc.dg/stack-check-7.c
+ 692bbe8a6e88b82f2e295606b5f3680f  gcc/testsuite/gcc.dg/stack-check-8.c
+ 8c71c9d1784301cb6f1b55adbe422573  gcc/testsuite/gcc.dg/stack-check-9.c
  3eb20a070e129b9f71ad84ec481fe8df  gcc/testsuite/gcc.dg/stack-layout-1.c
  d5355400a72402c33417096b04dc2a5d  gcc/testsuite/gcc.dg/stack-layout-2.c
! 07e6a63f5ceb593a5ec396e028fd341c  gcc/testsuite/gcc.dg/stack-layout-dynamic-1.c
! e89ecedeba22fe2c77693d0ee0b41542  gcc/testsuite/gcc.dg/stack-usage-1.c
  198c846924d490e8eba17829d0caf626  gcc/testsuite/gcc.dg/stack-usage-2.c
  abeae7e4a2120581a50d5eb7cbe3929d  gcc/testsuite/gcc.dg/stackprotectexplicit1.c
! f4760013e77ec339cce4491012f46d96  gcc/testsuite/gcc.dg/stdint-width-1.c
  cc4c4b4f3d828c816c22793a90c03eb1  gcc/testsuite/gcc.dg/stmt-expr-1.c
  8b47d043f375a5995d83feae8f86a8d3  gcc/testsuite/gcc.dg/stmt-expr-2.c
  894f6c6d644fc16f27c51f447c5e60c1  gcc/testsuite/gcc.dg/stmt-expr-3.c
*************** e8b154bfa9661e586ca67b12e324ad02  gcc/te
*** 32272,32277 ****
--- 33882,33897 ----
  6450ef5d1439a329c199247e49aee90e  gcc/testsuite/gcc.dg/stmt-expr-label-3.c
  9fc4eee34dd19fc2d18bd2a3eae50294  gcc/testsuite/gcc.dg/store-motion-fgcse-sm.c
  e0d90170fec34d2e9843635c847ee9a2  gcc/testsuite/gcc.dg/store_merging_1.c
+ a60f7402a9773db17cdfc8e9539d2570  gcc/testsuite/gcc.dg/store_merging_10.c
+ 826b95fcf65688e22fe653de2c566d5e  gcc/testsuite/gcc.dg/store_merging_11.c
+ eeab30da05177d869377ee4a3d62970a  gcc/testsuite/gcc.dg/store_merging_12.c
+ fc5efe51f21f5bfc44e594d133792500  gcc/testsuite/gcc.dg/store_merging_13.c
+ d1f631df1bd3b6fbc84a2e629ab88695  gcc/testsuite/gcc.dg/store_merging_14.c
+ dd390c940fe54b522251511e7770f55b  gcc/testsuite/gcc.dg/store_merging_15.c
+ 4ea8af8de063648623dc6cafac16cd2a  gcc/testsuite/gcc.dg/store_merging_16.c
+ 26403e8ae1d70e44af1f5f33343f4a2a  gcc/testsuite/gcc.dg/store_merging_17.c
+ d8bf4e6b4bf0702b7e4c2c4100d8cb3e  gcc/testsuite/gcc.dg/store_merging_18.c
+ fb85d33578c0e123ddab968b01d4dfd8  gcc/testsuite/gcc.dg/store_merging_19.c
  516117f10841e46c17e880197dde01b3  gcc/testsuite/gcc.dg/store_merging_2.c
  56080724c1ff1c4c6a172904b8f5c98f  gcc/testsuite/gcc.dg/store_merging_3.c
  4a298139bf054dd3d0953770ef9b1b00  gcc/testsuite/gcc.dg/store_merging_4.c
*************** e0d90170fec34d2e9843635c847ee9a2  gcc/te
*** 32279,32292 ****
  ea21a24c07aa6b8a3457a96d70a092eb  gcc/testsuite/gcc.dg/store_merging_6.c
  a69a4075eb92fc05a60f69e088db8d27  gcc/testsuite/gcc.dg/store_merging_7.c
  eb758dcebb0bb362b30a465d9466f0b7  gcc/testsuite/gcc.dg/store_merging_8.c
  9128d1ed469e0ac6af082ba93bf0e146  gcc/testsuite/gcc.dg/strcmp-1.c
  a5486e384972bccac519272ed90e4d73  gcc/testsuite/gcc.dg/strict-overflow-1.c
  a448f788a587d5309d6dc1af1e3f5e10  gcc/testsuite/gcc.dg/strict-overflow-2.c
! 7884d1f5e5286d6bcd1e0ce8c6cc57a1  gcc/testsuite/gcc.dg/strict-overflow-3.c
  00cd11946ed82deb5ed79ac69c9227ab  gcc/testsuite/gcc.dg/strict-overflow-4.c
  2bb764a2190a4e903796c05af56be921  gcc/testsuite/gcc.dg/strict-overflow-5.c
  230e6ad16dc5dbf4b40d86f6cb1a8e56  gcc/testsuite/gcc.dg/strict-overflow-6.c
! f978eab665383bc75093d7280e49f80c  gcc/testsuite/gcc.dg/string-opt-1.c
  9eb1382477f236d1ece80dbd6b9797df  gcc/testsuite/gcc.dg/strlenopt-1.c
  15ad8f92833a1f1e02a852c2803c8cfc  gcc/testsuite/gcc.dg/strlenopt-10.c
  32d000c3ccf768304a24a75d851fb9f8  gcc/testsuite/gcc.dg/strlenopt-11.c
--- 33899,33914 ----
  ea21a24c07aa6b8a3457a96d70a092eb  gcc/testsuite/gcc.dg/store_merging_6.c
  a69a4075eb92fc05a60f69e088db8d27  gcc/testsuite/gcc.dg/store_merging_7.c
  eb758dcebb0bb362b30a465d9466f0b7  gcc/testsuite/gcc.dg/store_merging_8.c
+ db02e6f1e64dbc4b601778792b8681a1  gcc/testsuite/gcc.dg/store_merging_9.c
  9128d1ed469e0ac6af082ba93bf0e146  gcc/testsuite/gcc.dg/strcmp-1.c
+ 84e9c4f2bdeb5d7536e41f56239be7c5  gcc/testsuite/gcc.dg/strcmpopt_1.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
  00cd11946ed82deb5ed79ac69c9227ab  gcc/testsuite/gcc.dg/strict-overflow-4.c
  2bb764a2190a4e903796c05af56be921  gcc/testsuite/gcc.dg/strict-overflow-5.c
  230e6ad16dc5dbf4b40d86f6cb1a8e56  gcc/testsuite/gcc.dg/strict-overflow-6.c
! 4050c41f0a73b01a8891094c4e2ca2db  gcc/testsuite/gcc.dg/string-opt-1.c
  9eb1382477f236d1ece80dbd6b9797df  gcc/testsuite/gcc.dg/strlenopt-1.c
  15ad8f92833a1f1e02a852c2803c8cfc  gcc/testsuite/gcc.dg/strlenopt-10.c
  32d000c3ccf768304a24a75d851fb9f8  gcc/testsuite/gcc.dg/strlenopt-11.c
*************** fb677e40969bbae1b87d54fe31395b4b  gcc/te
*** 32318,32324 ****
--- 33940,33959 ----
  880db3d6f86c14dd30b7528cd8b05c82  gcc/testsuite/gcc.dg/strlenopt-30.c
  299aa2109d5c89d951f05344f296e557  gcc/testsuite/gcc.dg/strlenopt-31.c
  6e72ee8840e85f455c5977f60581c122  gcc/testsuite/gcc.dg/strlenopt-31g.c
+ 44a54194e7e8ef282e286f6255739cd4  gcc/testsuite/gcc.dg/strlenopt-32.c
+ adee5fc66f9bc6581e19be14d42c1dfa  gcc/testsuite/gcc.dg/strlenopt-33.c
+ 148e9d76b10c7e31937873d63626b7de  gcc/testsuite/gcc.dg/strlenopt-33g.c
+ 462b7e9fb1c62d934d8ddb0762bbfce2  gcc/testsuite/gcc.dg/strlenopt-34.c
+ 33aeeca1d90b8301fc84e549a5410bf0  gcc/testsuite/gcc.dg/strlenopt-35.c
+ d6ca86e0f71826d3e2a97e65a5a6aef9  gcc/testsuite/gcc.dg/strlenopt-36.c
+ e1f22a9d2c38645fa595aeb9b22e9203  gcc/testsuite/gcc.dg/strlenopt-37.c
+ e8d89d771f321f8e227836abd8aec567  gcc/testsuite/gcc.dg/strlenopt-38.c
+ c4368e25bf0169268dc9fca950e2a527  gcc/testsuite/gcc.dg/strlenopt-39.c
  b7b20c508da286bf97734d0ca4eb4b63  gcc/testsuite/gcc.dg/strlenopt-4.c
+ 2dc740438f67514b15b159353a282c1b  gcc/testsuite/gcc.dg/strlenopt-40.c
+ cd10e25475033e9435afde530d35906e  gcc/testsuite/gcc.dg/strlenopt-41.c
+ 15084cf943fc7ec081911c662e047756  gcc/testsuite/gcc.dg/strlenopt-42.c
+ 1b657cefc6200141be37ec6ddc330fd1  gcc/testsuite/gcc.dg/strlenopt-43.c
  3571aeeb9b52b0778aecb0de02530005  gcc/testsuite/gcc.dg/strlenopt-4g.c
  a3dcb7a9baa066c2ae2d20afad511d86  gcc/testsuite/gcc.dg/strlenopt-4gf.c
  01eef308965c48c3b2f272da743ac444  gcc/testsuite/gcc.dg/strlenopt-5.c
*************** dd3ad10434a920f51b09ddbe77f97b84  gcc/te
*** 32328,32335 ****
  043590230d28cceb575cbbc9a044e4d1  gcc/testsuite/gcc.dg/strlenopt-9.c
  0e0d4ca55f4374c661177f5b67b0375b  gcc/testsuite/gcc.dg/strlenopt.h
  984ef97553c0d059b2563ed51439cb62  gcc/testsuite/gcc.dg/strncmp-1.c
! 384f6faa2378907f7a404f682209820a  gcc/testsuite/gcc.dg/strncmp-2.c
! fe1c88fdf8cd23dc9b3e127f3628648d  gcc/testsuite/gcc.dg/strncpy-fix-1.c
  e1737f9100fe39030ff4b356bc6ff29e  gcc/testsuite/gcc.dg/struct-alias-1.c
  756d07d22a151e89582543f5a88bda9f  gcc/testsuite/gcc.dg/struct-by-value-1.c
  fff906a27910e082e50f16054f4642c4  gcc/testsuite/gcc.dg/struct-by-value-2.c
--- 33963,33970 ----
  043590230d28cceb575cbbc9a044e4d1  gcc/testsuite/gcc.dg/strlenopt-9.c
  0e0d4ca55f4374c661177f5b67b0375b  gcc/testsuite/gcc.dg/strlenopt.h
  984ef97553c0d059b2563ed51439cb62  gcc/testsuite/gcc.dg/strncmp-1.c
! 6a1df0256d47b0a2ef2a7393964f3e39  gcc/testsuite/gcc.dg/strncmp-2.c
! 5778a0fbb76227bc62f3513b3543aed6  gcc/testsuite/gcc.dg/strncpy-fix-1.c
  e1737f9100fe39030ff4b356bc6ff29e  gcc/testsuite/gcc.dg/struct-alias-1.c
  756d07d22a151e89582543f5a88bda9f  gcc/testsuite/gcc.dg/struct-by-value-1.c
  fff906a27910e082e50f16054f4642c4  gcc/testsuite/gcc.dg/struct-by-value-2.c
*************** d964e9c3d529c43e9ae498a35fdf5775  gcc/te
*** 32342,32348 ****
  482db5b6dc708df73cfd2c32df7f1a85  gcc/testsuite/gcc.dg/struct-parse-2.c
  71292c55dd1485a06682c239f2a42f0a  gcc/testsuite/gcc.dg/struct-ret-1.c
  75f0ab76aad50d990bf2113b93b3fbea  gcc/testsuite/gcc.dg/struct-ret-2.c
! e404017852e9ce4804cb8402efb848e8  gcc/testsuite/gcc.dg/struct-ret-3.c
  765a678087a365e079632bb3e65e37d4  gcc/testsuite/gcc.dg/struct-ret-libc.c
  6d2b12a78a0af291c8e916cbb0558287  gcc/testsuite/gcc.dg/struct-semi-1.c
  fb287bcce152203dc79c5d39fd9cc40f  gcc/testsuite/gcc.dg/struct-semi-2.c
--- 33977,33983 ----
  482db5b6dc708df73cfd2c32df7f1a85  gcc/testsuite/gcc.dg/struct-parse-2.c
  71292c55dd1485a06682c239f2a42f0a  gcc/testsuite/gcc.dg/struct-ret-1.c
  75f0ab76aad50d990bf2113b93b3fbea  gcc/testsuite/gcc.dg/struct-ret-2.c
! d1dba7cef3eca24fc2d7ec885a102faf  gcc/testsuite/gcc.dg/struct-ret-3.c
  765a678087a365e079632bb3e65e37d4  gcc/testsuite/gcc.dg/struct-ret-libc.c
  6d2b12a78a0af291c8e916cbb0558287  gcc/testsuite/gcc.dg/struct-semi-1.c
  fb287bcce152203dc79c5d39fd9cc40f  gcc/testsuite/gcc.dg/struct-semi-2.c
*************** cb7bc7b759208322b507c9776b24d8df  gcc/te
*** 32350,32356 ****
  66baf19ad852a2e36df065445f46962f  gcc/testsuite/gcc.dg/struct-semi-4.c
  7d03e302578f90d797834544865c3974  gcc/testsuite/gcc.dg/superblock.c
  1ed7413760549398593dc058c3c6bcde  gcc/testsuite/gcc.dg/switch-1.c
! 00a81717bcffe42b8373014a072ed163  gcc/testsuite/gcc.dg/switch-10.c
  ac72d210dcc5205efc0a772acb97390c  gcc/testsuite/gcc.dg/switch-2.c
  4e889c486afef91f06cc3d5ac95077a4  gcc/testsuite/gcc.dg/switch-3.c
  7dae5f5aad2894163373f1d389d41afa  gcc/testsuite/gcc.dg/switch-4.c
--- 33985,33991 ----
  66baf19ad852a2e36df065445f46962f  gcc/testsuite/gcc.dg/struct-semi-4.c
  7d03e302578f90d797834544865c3974  gcc/testsuite/gcc.dg/superblock.c
  1ed7413760549398593dc058c3c6bcde  gcc/testsuite/gcc.dg/switch-1.c
! 46aae448f4d41836f5a09d93795945ef  gcc/testsuite/gcc.dg/switch-10.c
  ac72d210dcc5205efc0a772acb97390c  gcc/testsuite/gcc.dg/switch-2.c
  4e889c486afef91f06cc3d5ac95077a4  gcc/testsuite/gcc.dg/switch-3.c
  7dae5f5aad2894163373f1d389d41afa  gcc/testsuite/gcc.dg/switch-4.c
*************** ac72d210dcc5205efc0a772acb97390c  gcc/te
*** 32361,32371 ****
  637b23747265c3ddf11799727c5b0eb5  gcc/testsuite/gcc.dg/switch-9.c
  29e4c67a2eb0c1d946dba62155cf7dfe  gcc/testsuite/gcc.dg/switch-A.c
  9c9c3239b1ffd4f2f7716f14293f7f29  gcc/testsuite/gcc.dg/switch-warn-1.c
! 85061a8a82ef9e9b4d82124e374518b3  gcc/testsuite/gcc.dg/switch-warn-2.c
  f1e8f5af7d39322f2fb6af1b49d422ce  gcc/testsuite/gcc.dg/switch-warn-3.c
  d7561cf1a070cc2aafa08b823a80d55f  gcc/testsuite/gcc.dg/sync-1.c
  ff05bfaf09ff28888e82d2b9fc85207b  gcc/testsuite/gcc.dg/sync-2.c
! c63b37ce23f163bbd9122d3d4f1dd3e3  gcc/testsuite/gcc.dg/sync-3.c
  85e022f32fe6e5043e4e7ef1eac7a089  gcc/testsuite/gcc.dg/sync-fetch-bool.c
  9ee612d8f22fad1d020266761b85e3aa  gcc/testsuite/gcc.dg/sync-fetch.c
  52b0d3be44f167108bb92fcdf5918096  gcc/testsuite/gcc.dg/system-binary-constants-1.c
--- 33996,34006 ----
  637b23747265c3ddf11799727c5b0eb5  gcc/testsuite/gcc.dg/switch-9.c
  29e4c67a2eb0c1d946dba62155cf7dfe  gcc/testsuite/gcc.dg/switch-A.c
  9c9c3239b1ffd4f2f7716f14293f7f29  gcc/testsuite/gcc.dg/switch-warn-1.c
! 869512a42a6bfc5a91cf82253b2e022d  gcc/testsuite/gcc.dg/switch-warn-2.c
  f1e8f5af7d39322f2fb6af1b49d422ce  gcc/testsuite/gcc.dg/switch-warn-3.c
  d7561cf1a070cc2aafa08b823a80d55f  gcc/testsuite/gcc.dg/sync-1.c
  ff05bfaf09ff28888e82d2b9fc85207b  gcc/testsuite/gcc.dg/sync-2.c
! 63c183838fe82cdc7372813b97203123  gcc/testsuite/gcc.dg/sync-3.c
  85e022f32fe6e5043e4e7ef1eac7a089  gcc/testsuite/gcc.dg/sync-fetch-bool.c
  9ee612d8f22fad1d020266761b85e3aa  gcc/testsuite/gcc.dg/sync-fetch.c
  52b0d3be44f167108bb92fcdf5918096  gcc/testsuite/gcc.dg/system-binary-constants-1.c
*************** a831de49f2d41703b35fb1187a5eaacf  gcc/te
*** 32416,32428 ****
  7193b5d66103274fe5171afd9347d3b2  gcc/testsuite/gcc.dg/tls/pr58595.c
  f12db64d724ba7ee8005f9b84bbac338  gcc/testsuite/gcc.dg/tls/pr66470.c
  ae692fa875b26ff84dbf9d73d4b87604  gcc/testsuite/gcc.dg/tls/pr78796.c
  796d5642fd9a5bf2871955a7f51a2b2c  gcc/testsuite/gcc.dg/tls/section-1.c
  b6230b3887f6b80a34081478f9506950  gcc/testsuite/gcc.dg/tls/section-2.c
  bd750cfcc2981be8695d1ba87cf4e02d  gcc/testsuite/gcc.dg/tls/struct-1.c
  b4852bb47ecc070f512ba4db3cbfaf46  gcc/testsuite/gcc.dg/tls/thr-cse-1.c
! 1ebf2a548eeb0ec0cc897171a44f4fe6  gcc/testsuite/gcc.dg/tls/thr-init-1.c
  390373c6c4022cd66d214c1592862f17  gcc/testsuite/gcc.dg/tls/thr-init-2.c
! 2ae9184e45fec913ad8d8fce02166831  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
--- 34051,34065 ----
  7193b5d66103274fe5171afd9347d3b2  gcc/testsuite/gcc.dg/tls/pr58595.c
  f12db64d724ba7ee8005f9b84bbac338  gcc/testsuite/gcc.dg/tls/pr66470.c
  ae692fa875b26ff84dbf9d73d4b87604  gcc/testsuite/gcc.dg/tls/pr78796.c
+ 8422497541cdde65944aa49f5f92c3a8  gcc/testsuite/gcc.dg/tls/pr82095.c
+ 237b9cf194db36ab11f01771186e6a0a  gcc/testsuite/gcc.dg/tls/pr83945.c
  796d5642fd9a5bf2871955a7f51a2b2c  gcc/testsuite/gcc.dg/tls/section-1.c
  b6230b3887f6b80a34081478f9506950  gcc/testsuite/gcc.dg/tls/section-2.c
  bd750cfcc2981be8695d1ba87cf4e02d  gcc/testsuite/gcc.dg/tls/struct-1.c
  b4852bb47ecc070f512ba4db3cbfaf46  gcc/testsuite/gcc.dg/tls/thr-cse-1.c
! 6a83a2b086c4431c476fd09381897c50  gcc/testsuite/gcc.dg/tls/thr-init-1.c
  390373c6c4022cd66d214c1592862f17  gcc/testsuite/gcc.dg/tls/thr-init-2.c
! dd258168058fe7ed8a578dc92be7f51d  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
*************** a6fc84c889a6b176224560fbff424e66  gcc/te
*** 32502,32508 ****
  fe3f545b4342e4629b8e3f50ec72aa75  gcc/testsuite/gcc.dg/tm/props-4.c
  c6a48dab441b531c2ea8105678947e48  gcc/testsuite/gcc.dg/tm/pub-safety-1.c
  04141c931c3cf5684e6da6b0f18cc32b  gcc/testsuite/gcc.dg/tm/reg-promotion.c
! a9f5b8b4aa3023f1614ef8ba79ee1dc5  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
--- 34139,34145 ----
  fe3f545b4342e4629b8e3f50ec72aa75  gcc/testsuite/gcc.dg/tm/props-4.c
  c6a48dab441b531c2ea8105678947e48  gcc/testsuite/gcc.dg/tm/pub-safety-1.c
  04141c931c3cf5684e6da6b0f18cc32b  gcc/testsuite/gcc.dg/tm/reg-promotion.c
! e56ca4541426a960e4da8e85eb04c58c  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
*************** a59cd46df1ce5865f99dd7df6791726a  gcc/te
*** 32520,32526 ****
  cbb03afd91bfa22c62842c72551cf41d  gcc/testsuite/gcc.dg/torture/20140610-2.c
  8b15816b02b101cc1e69882a95333c54  gcc/testsuite/gcc.dg/torture/20141202-1.c
  c715efce91706f19891d615f0fb331e6  gcc/testsuite/gcc.dg/torture/20160404-1.c
! 09ac9ecdde0a06811046630e98c17a7c  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
  623b6f1d93f75b391f9d1dc139c50697  gcc/testsuite/gcc.dg/torture/arm-fp16-compile-assign.c
--- 34157,34163 ----
  cbb03afd91bfa22c62842c72551cf41d  gcc/testsuite/gcc.dg/torture/20140610-2.c
  8b15816b02b101cc1e69882a95333c54  gcc/testsuite/gcc.dg/torture/20141202-1.c
  c715efce91706f19891d615f0fb331e6  gcc/testsuite/gcc.dg/torture/20160404-1.c
! 18d092a49330e9a3da34c551be068cfa  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
  623b6f1d93f75b391f9d1dc139c50697  gcc/testsuite/gcc.dg/torture/arm-fp16-compile-assign.c
*************** acce6a0692aef9e9f3765bf8135e97a4  gcc/te
*** 32536,32542 ****
  df15bedf7dd28c41919973661d580f91  gcc/testsuite/gcc.dg/torture/arm-fp16-ops-7.c
  e05c10e4692341801a9878158cad27d7  gcc/testsuite/gcc.dg/torture/arm-fp16-ops-8.c
  c2aabfd0e7da2857b86672bc59174dcf  gcc/testsuite/gcc.dg/torture/arm-fp16-ops.h
! d77ae80eafccff3f59bb7adab482f7ac  gcc/testsuite/gcc.dg/torture/asm-subreg-1.c
  d95cc663b80362e038948f52fb3d74be  gcc/testsuite/gcc.dg/torture/badshift.c
  45d012ea09cb4124bd768b0aead707e1  gcc/testsuite/gcc.dg/torture/builtin-attr-1.c
  ce18c7b88fada762da6d332bc80ba8ac  gcc/testsuite/gcc.dg/torture/builtin-complex-1.c
--- 34173,34179 ----
  df15bedf7dd28c41919973661d580f91  gcc/testsuite/gcc.dg/torture/arm-fp16-ops-7.c
  e05c10e4692341801a9878158cad27d7  gcc/testsuite/gcc.dg/torture/arm-fp16-ops-8.c
  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
  45d012ea09cb4124bd768b0aead707e1  gcc/testsuite/gcc.dg/torture/builtin-attr-1.c
  ce18c7b88fada762da6d332bc80ba8ac  gcc/testsuite/gcc.dg/torture/builtin-complex-1.c
*************** fa7bdb79eb170773050b26a5ed2ae1ec  gcc/te
*** 32561,32567 ****
  86c9312908e71a32a216fd720343d58f  gcc/testsuite/gcc.dg/torture/builtin-math-4.c
  19692f935d4de88a76662ae18bf21dae  gcc/testsuite/gcc.dg/torture/builtin-math-5.c
  35aafd27620207da2f66dd0e44ff780f  gcc/testsuite/gcc.dg/torture/builtin-math-6.c
! 54f71b9a52b0d49ced1526a2c74b785b  gcc/testsuite/gcc.dg/torture/builtin-math-7.c
  c77f4d57bad6850b166ed11f47ce8a4e  gcc/testsuite/gcc.dg/torture/builtin-math-8.c
  d7925eb09751128af786d99274bd0ab7  gcc/testsuite/gcc.dg/torture/builtin-minmax-1.c
  c0822751d203e27a4762352d5b796ba1  gcc/testsuite/gcc.dg/torture/builtin-modf-1.c
--- 34198,34204 ----
  86c9312908e71a32a216fd720343d58f  gcc/testsuite/gcc.dg/torture/builtin-math-4.c
  19692f935d4de88a76662ae18bf21dae  gcc/testsuite/gcc.dg/torture/builtin-math-5.c
  35aafd27620207da2f66dd0e44ff780f  gcc/testsuite/gcc.dg/torture/builtin-math-6.c
! 360b7dbca8df89f54d70e9e799dab182  gcc/testsuite/gcc.dg/torture/builtin-math-7.c
  c77f4d57bad6850b166ed11f47ce8a4e  gcc/testsuite/gcc.dg/torture/builtin-math-8.c
  d7925eb09751128af786d99274bd0ab7  gcc/testsuite/gcc.dg/torture/builtin-minmax-1.c
  c0822751d203e27a4762352d5b796ba1  gcc/testsuite/gcc.dg/torture/builtin-modf-1.c
*************** fe01d458fb1e7b307aca4d27de62eff0  gcc/te
*** 32577,32583 ****
  500d48d3b156ad2e1b9121d933504b79  gcc/testsuite/gcc.dg/torture/builtin-symmetric-1.c
  aa8cb0db7596e9b0e87edb8ba4d89392  gcc/testsuite/gcc.dg/torture/builtin-wctype-1.c
  2ef216f216ec1eb9c83b2f7da4f70754  gcc/testsuite/gcc.dg/torture/builtins-1.c
! a34373b77f42ee1a2e2a7fcb6574b388  gcc/testsuite/gcc.dg/torture/c99-contract-1.c
  d91f1642a3d3d72da6f61a576021d2ea  gcc/testsuite/gcc.dg/torture/calleesave-sse.c
  1df711afa335d9c6b45ecf16769e37d0  gcc/testsuite/gcc.dg/torture/cris-asm-mof-1.c
  4db0a33ee448d1a3cb855abe7fd5dd87  gcc/testsuite/gcc.dg/torture/cris-volatile-1.c
--- 34214,34220 ----
  500d48d3b156ad2e1b9121d933504b79  gcc/testsuite/gcc.dg/torture/builtin-symmetric-1.c
  aa8cb0db7596e9b0e87edb8ba4d89392  gcc/testsuite/gcc.dg/torture/builtin-wctype-1.c
  2ef216f216ec1eb9c83b2f7da4f70754  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
  1df711afa335d9c6b45ecf16769e37d0  gcc/testsuite/gcc.dg/torture/cris-asm-mof-1.c
  4db0a33ee448d1a3cb855abe7fd5dd87  gcc/testsuite/gcc.dg/torture/cris-volatile-1.c
*************** b433f576987f7d246553ea453e377ab9  gcc/te
*** 32687,32692 ****
--- 34324,34337 ----
  942218b37e92e0ec9b6fa91dcc0ed1b8  gcc/testsuite/gcc.dg/torture/fp-int-convert.h
  d277598f9618a7db30769d2af26d4624  gcc/testsuite/gcc.dg/torture/ftrapv-1.c
  7c427d677f19a0441775ee85a68e2ed9  gcc/testsuite/gcc.dg/torture/ftrapv-2.c
+ 0e268de415518f1218eefda00352b112  gcc/testsuite/gcc.dg/torture/inf-compare-1.c
+ d71ae80e2cf4e49bfcd892f0b0b233a1  gcc/testsuite/gcc.dg/torture/inf-compare-2.c
+ d3e78fd655dc2b3b3027c826f5125011  gcc/testsuite/gcc.dg/torture/inf-compare-3.c
+ b257199c4a46846b0d1510db4baf39b2  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
  dd10e7f582070541707322f3af0f56ee  gcc/testsuite/gcc.dg/torture/ipa-pta-1.c
*************** b93e5a6d4aa60a17bfa7ec5bda2eb25a  gcc/te
*** 32730,32739 ****
  81035e7a609855a8022fd1e3b78def06  gcc/testsuite/gcc.dg/torture/pr25706-1.c
  0586ed66752951ce87141ec98a28e764  gcc/testsuite/gcc.dg/torture/pr25718-1.c
  ae324bec3b58cf509ad333b651a1405a  gcc/testsuite/gcc.dg/torture/pr25947-1.c
  7470ad4b4627a042cd83994aad7b95cd  gcc/testsuite/gcc.dg/torture/pr26222.c
  7cdcc1be6cfdfe50717906508657e13a  gcc/testsuite/gcc.dg/torture/pr26258.c
  2835c12ff05e9f82100f5a3211ccffaf  gcc/testsuite/gcc.dg/torture/pr26515.c
! 540c127154f05ba6c7fdadeb16d87903  gcc/testsuite/gcc.dg/torture/pr26565.c
  615aec9bf267e71706037658204adc5c  gcc/testsuite/gcc.dg/torture/pr26587.c
  0bf60925c13b29fa8f56a0bc19d5bac1  gcc/testsuite/gcc.dg/torture/pr26630.c
  480722cfb54611049ef57c0ddd346b84  gcc/testsuite/gcc.dg/torture/pr26672.c
--- 34375,34386 ----
  81035e7a609855a8022fd1e3b78def06  gcc/testsuite/gcc.dg/torture/pr25706-1.c
  0586ed66752951ce87141ec98a28e764  gcc/testsuite/gcc.dg/torture/pr25718-1.c
  ae324bec3b58cf509ad333b651a1405a  gcc/testsuite/gcc.dg/torture/pr25947-1.c
+ 0444e35fecd403b4c5c932ddf68d4bc7  gcc/testsuite/gcc.dg/torture/pr25967-1.c
+ aed9b73af47dfcf7d553cdc6a1698d84  gcc/testsuite/gcc.dg/torture/pr25967-2.c
  7470ad4b4627a042cd83994aad7b95cd  gcc/testsuite/gcc.dg/torture/pr26222.c
  7cdcc1be6cfdfe50717906508657e13a  gcc/testsuite/gcc.dg/torture/pr26258.c
  2835c12ff05e9f82100f5a3211ccffaf  gcc/testsuite/gcc.dg/torture/pr26515.c
! db9dcac494fe32bbb94b9af133f22a76  gcc/testsuite/gcc.dg/torture/pr26565.c
  615aec9bf267e71706037658204adc5c  gcc/testsuite/gcc.dg/torture/pr26587.c
  0bf60925c13b29fa8f56a0bc19d5bac1  gcc/testsuite/gcc.dg/torture/pr26630.c
  480722cfb54611049ef57c0ddd346b84  gcc/testsuite/gcc.dg/torture/pr26672.c
*************** f2a7b5173c69abcf698a3d605b83ecd0  gcc/te
*** 32805,32811 ****
  28ff1c11e63f8aff60bd106162b1b065  gcc/testsuite/gcc.dg/torture/pr36978.c
  8463c4cd1a5689d043f4fd9b0a3a25f5  gcc/testsuite/gcc.dg/torture/pr37731-1.c
  30170e773c2084c27b89f8f9d8069c9d  gcc/testsuite/gcc.dg/torture/pr37731-2.c
! d2a9527756554a7577a2fb9762721adf  gcc/testsuite/gcc.dg/torture/pr37868.c
  10034148da34014b14bae32eadd8bc3e  gcc/testsuite/gcc.dg/torture/pr37969.c
  8404336ea1b6831dcfb72587f1a7621f  gcc/testsuite/gcc.dg/torture/pr38271.c
  8e52e2d532e19a78160642ca0ddb091b  gcc/testsuite/gcc.dg/torture/pr38405.c
--- 34452,34458 ----
  28ff1c11e63f8aff60bd106162b1b065  gcc/testsuite/gcc.dg/torture/pr36978.c
  8463c4cd1a5689d043f4fd9b0a3a25f5  gcc/testsuite/gcc.dg/torture/pr37731-1.c
  30170e773c2084c27b89f8f9d8069c9d  gcc/testsuite/gcc.dg/torture/pr37731-2.c
! fe1661d7b8d16d061f6cc858a2e28779  gcc/testsuite/gcc.dg/torture/pr37868.c
  10034148da34014b14bae32eadd8bc3e  gcc/testsuite/gcc.dg/torture/pr37969.c
  8404336ea1b6831dcfb72587f1a7621f  gcc/testsuite/gcc.dg/torture/pr38271.c
  8e52e2d532e19a78160642ca0ddb091b  gcc/testsuite/gcc.dg/torture/pr38405.c
*************** df13691becf75c196daa6bc05c2f2652  gcc/te
*** 32831,32837 ****
  416d3ed9172a84f4ad761ee1950f48ab  gcc/testsuite/gcc.dg/torture/pr41261.c
  bfe95c052645309c3ee36c305fddcabc  gcc/testsuite/gcc.dg/torture/pr41555.c
  e6ed349df89997d0d2d207cee2bb4159  gcc/testsuite/gcc.dg/torture/pr41993.c
! 22e561afc82e733d34acfa94a4b5a97f  gcc/testsuite/gcc.dg/torture/pr42363.c
  b7cc091540c52666f4ffe5f8a77404ea  gcc/testsuite/gcc.dg/torture/pr42667.c
  44ab61e2d4767228cd3f4917e32c89b7  gcc/testsuite/gcc.dg/torture/pr42878-1.c
  3040237d9198ed9f80fba2ff6b656ce9  gcc/testsuite/gcc.dg/torture/pr42878-2.c
--- 34478,34484 ----
  416d3ed9172a84f4ad761ee1950f48ab  gcc/testsuite/gcc.dg/torture/pr41261.c
  bfe95c052645309c3ee36c305fddcabc  gcc/testsuite/gcc.dg/torture/pr41555.c
  e6ed349df89997d0d2d207cee2bb4159  gcc/testsuite/gcc.dg/torture/pr41993.c
! 5cf04b98ebbc979acf0ccf70b433b2f4  gcc/testsuite/gcc.dg/torture/pr42363.c
  b7cc091540c52666f4ffe5f8a77404ea  gcc/testsuite/gcc.dg/torture/pr42667.c
  44ab61e2d4767228cd3f4917e32c89b7  gcc/testsuite/gcc.dg/torture/pr42878-1.c
  3040237d9198ed9f80fba2ff6b656ce9  gcc/testsuite/gcc.dg/torture/pr42878-2.c
*************** ecf48433e5a359d697c7101d2232e131  gcc/te
*** 32862,32868 ****
  3be6dc299b46a330600ac9e62734a9f1  gcc/testsuite/gcc.dg/torture/pr45704.c
  f7a07c4174bbe2440efd6014314f8b21  gcc/testsuite/gcc.dg/torture/pr45720.c
  f9796195b216d42d7ac0e05ae8a219db  gcc/testsuite/gcc.dg/torture/pr45732.c
! ed382b85eab150d62a4b3f403b2b99f4  gcc/testsuite/gcc.dg/torture/pr45764.c
  a6e0532c7a62f1d5365f99ca1c0b56ed  gcc/testsuite/gcc.dg/torture/pr45830.c
  80597e95dcd88835c87238f3c7ad0b4b  gcc/testsuite/gcc.dg/torture/pr45860.c
  f054cbdbc2b3653fbbf6852b070eb022  gcc/testsuite/gcc.dg/torture/pr45865.c
--- 34509,34515 ----
  3be6dc299b46a330600ac9e62734a9f1  gcc/testsuite/gcc.dg/torture/pr45704.c
  f7a07c4174bbe2440efd6014314f8b21  gcc/testsuite/gcc.dg/torture/pr45720.c
  f9796195b216d42d7ac0e05ae8a219db  gcc/testsuite/gcc.dg/torture/pr45732.c
! 64542c8fd4fd9fe54768d3ed56cfca23  gcc/testsuite/gcc.dg/torture/pr45764.c
  a6e0532c7a62f1d5365f99ca1c0b56ed  gcc/testsuite/gcc.dg/torture/pr45830.c
  80597e95dcd88835c87238f3c7ad0b4b  gcc/testsuite/gcc.dg/torture/pr45860.c
  f054cbdbc2b3653fbbf6852b070eb022  gcc/testsuite/gcc.dg/torture/pr45865.c
*************** cbb9101c8f1c28606b0b21fca28bdac8  gcc/te
*** 32952,32961 ****
  d5834679f39b7f300600a6d633cb5cbe  gcc/testsuite/gcc.dg/torture/pr51042.c
  83def72f986b98af36a5f4adfd1d286a  gcc/testsuite/gcc.dg/torture/pr51070-2.c
  dc79e1961cd3bbeb2887a73266e2cabb  gcc/testsuite/gcc.dg/torture/pr51070.c
! 7c865d361589bde29c312174ef010f6c  gcc/testsuite/gcc.dg/torture/pr51071-2.c
! 1950b4e80a22a43e435957a591565984  gcc/testsuite/gcc.dg/torture/pr51071.c
! c44de2c160544fd1d2b7ee79340b13aa  gcc/testsuite/gcc.dg/torture/pr51106-1.c
! 9ffc8d5107de33178350eb4591aab9b5  gcc/testsuite/gcc.dg/torture/pr51106-2.c
  b125cc4a3178e710af750ad3db92082b  gcc/testsuite/gcc.dg/torture/pr51238.c
  ecd4980708a515be7a74617dd3463cd9  gcc/testsuite/gcc.dg/torture/pr51244-21.c
  58324aacdc1ddf3bf3d5244f0727bf0b  gcc/testsuite/gcc.dg/torture/pr51245.c
--- 34599,34608 ----
  d5834679f39b7f300600a6d633cb5cbe  gcc/testsuite/gcc.dg/torture/pr51042.c
  83def72f986b98af36a5f4adfd1d286a  gcc/testsuite/gcc.dg/torture/pr51070-2.c
  dc79e1961cd3bbeb2887a73266e2cabb  gcc/testsuite/gcc.dg/torture/pr51070.c
! 4681183e8807959ad821d80656de218a  gcc/testsuite/gcc.dg/torture/pr51071-2.c
! d7a68f667d4fbd92137506ad95fc6ebb  gcc/testsuite/gcc.dg/torture/pr51071.c
! 4b7e722da8d47dc1ba7810261ad7df1e  gcc/testsuite/gcc.dg/torture/pr51106-1.c
! 3192ed96caad35ea33eac7866c595746  gcc/testsuite/gcc.dg/torture/pr51106-2.c
  b125cc4a3178e710af750ad3db92082b  gcc/testsuite/gcc.dg/torture/pr51238.c
  ecd4980708a515be7a74617dd3463cd9  gcc/testsuite/gcc.dg/torture/pr51244-21.c
  58324aacdc1ddf3bf3d5244f0727bf0b  gcc/testsuite/gcc.dg/torture/pr51245.c
*************** e19181206a152ea54fd43daaa6278244  gcc/te
*** 32974,32979 ****
--- 34621,34627 ----
  35d6999d529b9f0ee94c98a9bb12d737  gcc/testsuite/gcc.dg/torture/pr52407.c
  6bad48b82b90303318a4d140d020d689  gcc/testsuite/gcc.dg/torture/pr52419.c
  0c4de913ac2b8b1489c83f48fbbaac06  gcc/testsuite/gcc.dg/torture/pr52429.c
+ 88a65f147cb3abdeb64559e2ddd9ff2a  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
*** 33005,33011 ****
  03807cc67dfb92ed7387ab445e76f0df  gcc/testsuite/gcc.dg/torture/pr53703.c
  58809eab4a9186297cc9e6413399f775  gcc/testsuite/gcc.dg/torture/pr53790.c
  d0ffb441d208abf83622aa00e25e03a4  gcc/testsuite/gcc.dg/torture/pr53908.c
! d2ed82eab6ea64377e189e250002205e  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
--- 34653,34659 ----
  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
*************** b60f93b2d8cdc704e6aa2c778095348d  gcc/te
*** 33076,33082 ****
  946dc8e4ce8a5bf8311952295f3e3ad5  gcc/testsuite/gcc.dg/torture/pr57147-1.c
  79a06009f22f4ef0a706b26cb1af2c8c  gcc/testsuite/gcc.dg/torture/pr57147-2.c
  16a0f124c50c8ec0420ed8ebb7248cfc  gcc/testsuite/gcc.dg/torture/pr57147-3.c
! bfa7e58f4ea5172e739ce75b74990c90  gcc/testsuite/gcc.dg/torture/pr57214.c
  4901f0628848bf18a655fb924ce0edf6  gcc/testsuite/gcc.dg/torture/pr57251.c
  845769847030f070941db74e9782dce5  gcc/testsuite/gcc.dg/torture/pr57303.c
  c99cd8db49c08f93e69d5c56eb0556fa  gcc/testsuite/gcc.dg/torture/pr57330.c
--- 34724,34730 ----
  946dc8e4ce8a5bf8311952295f3e3ad5  gcc/testsuite/gcc.dg/torture/pr57147-1.c
  79a06009f22f4ef0a706b26cb1af2c8c  gcc/testsuite/gcc.dg/torture/pr57147-2.c
  16a0f124c50c8ec0420ed8ebb7248cfc  gcc/testsuite/gcc.dg/torture/pr57147-3.c
! 2c294cc3635276068fdee76fd7b1eb82  gcc/testsuite/gcc.dg/torture/pr57214.c
  4901f0628848bf18a655fb924ce0edf6  gcc/testsuite/gcc.dg/torture/pr57251.c
  845769847030f070941db74e9782dce5  gcc/testsuite/gcc.dg/torture/pr57303.c
  c99cd8db49c08f93e69d5c56eb0556fa  gcc/testsuite/gcc.dg/torture/pr57330.c
*************** dadc8df99ab8509fcfb1fc6b4af32ed4  gcc/te
*** 33137,33143 ****
  d93e7f40e0cf0b22feeeb8370fb5f90b  gcc/testsuite/gcc.dg/torture/pr59058.c
  34e059be2acaa9e89cfccaac1909f299  gcc/testsuite/gcc.dg/torture/pr59139.c
  4822099f973e8dc76fd4bffd317b5f51  gcc/testsuite/gcc.dg/torture/pr59164.c
! e9fea0f10f7b92ea14858e84eb249e66  gcc/testsuite/gcc.dg/torture/pr59166.c
  45627e6c043f0c503ee131a97b006a57  gcc/testsuite/gcc.dg/torture/pr59216.c
  0480494a417d62df9eec20fa82ee4aab  gcc/testsuite/gcc.dg/torture/pr59245.c
  5aff5d636c8b18aba20ff56b7cd632da  gcc/testsuite/gcc.dg/torture/pr59288.c
--- 34785,34791 ----
  d93e7f40e0cf0b22feeeb8370fb5f90b  gcc/testsuite/gcc.dg/torture/pr59058.c
  34e059be2acaa9e89cfccaac1909f299  gcc/testsuite/gcc.dg/torture/pr59139.c
  4822099f973e8dc76fd4bffd317b5f51  gcc/testsuite/gcc.dg/torture/pr59164.c
! 54404969db26be0069761bb17266eed7  gcc/testsuite/gcc.dg/torture/pr59166.c
  45627e6c043f0c503ee131a97b006a57  gcc/testsuite/gcc.dg/torture/pr59216.c
  0480494a417d62df9eec20fa82ee4aab  gcc/testsuite/gcc.dg/torture/pr59245.c
  5aff5d636c8b18aba20ff56b7cd632da  gcc/testsuite/gcc.dg/torture/pr59288.c
*************** c5b69018539af33b153200da995bed75  gcc/te
*** 33152,33158 ****
  bce1a41800b1242ba448fe4938c4ee1a  gcc/testsuite/gcc.dg/torture/pr59903.c
  a0d76efc48328548b5c9fdeabdba5798  gcc/testsuite/gcc.dg/torture/pr59990.c
  8fd58a81befcd37ab8a2c857cd33ac4e  gcc/testsuite/gcc.dg/torture/pr59993.c
! 243afc493ce4d009d8c7a6ed077193b1  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
--- 34800,34806 ----
  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
*************** c71bc82e3113cbfab766c4096f871d30  gcc/te
*** 33185,33191 ****
  9fd4141b37961dba4d5cf78375faecf3  gcc/testsuite/gcc.dg/torture/pr63380-1.c
  273f8c55f269210104bb37d5ff1f1ead  gcc/testsuite/gcc.dg/torture/pr63380-2.c
  57e52d43ebe112ca268684f922ddcfd2  gcc/testsuite/gcc.dg/torture/pr63464.c
! d92aa4368aa6b00b79e8a389a42314a4  gcc/testsuite/gcc.dg/torture/pr63554.c
  b73d24e381bb20f6e0e5ac3e91f89c1c  gcc/testsuite/gcc.dg/torture/pr63738.c
  fe69b9112ece857aa0b91859e207da1d  gcc/testsuite/gcc.dg/torture/pr63800.c
  a6d2def502d534717808fa4e6ebd898f  gcc/testsuite/gcc.dg/torture/pr63941.c
--- 34833,34839 ----
  9fd4141b37961dba4d5cf78375faecf3  gcc/testsuite/gcc.dg/torture/pr63380-1.c
  273f8c55f269210104bb37d5ff1f1ead  gcc/testsuite/gcc.dg/torture/pr63380-2.c
  57e52d43ebe112ca268684f922ddcfd2  gcc/testsuite/gcc.dg/torture/pr63464.c
! 0d30af58fe4633ee962833bb65e7b355  gcc/testsuite/gcc.dg/torture/pr63554.c
  b73d24e381bb20f6e0e5ac3e91f89c1c  gcc/testsuite/gcc.dg/torture/pr63738.c
  fe69b9112ece857aa0b91859e207da1d  gcc/testsuite/gcc.dg/torture/pr63800.c
  a6d2def502d534717808fa4e6ebd898f  gcc/testsuite/gcc.dg/torture/pr63941.c
*************** b6bb0c63d9e968f4f16f282365518a50  gcc/te
*** 33351,33356 ****
--- 34999,35006 ----
  9915e21032257877059e42dd288106d1  gcc/testsuite/gcc.dg/torture/pr70986-1.c
  78488111f00f60d36b4419c7e8a70b9f  gcc/testsuite/gcc.dg/torture/pr70986-2.c
  bb0df0891ea73ca572154ab5eb38bfb3  gcc/testsuite/gcc.dg/torture/pr70986-3.c
+ 8fa66b834106706eef62cf2641c6c06c  gcc/testsuite/gcc.dg/torture/pr70992-2.c
+ ea473ac0376a38595facafc5537c77b1  gcc/testsuite/gcc.dg/torture/pr70992.c
  f0e6e01e7858d652ee2dc1c1dc83f3b5  gcc/testsuite/gcc.dg/torture/pr71020.c
  c6a257591ac5df39ab671a3a2a55e4fc  gcc/testsuite/gcc.dg/torture/pr71039.c
  e46a78e3302efb3c3756c3e68db06652  gcc/testsuite/gcc.dg/torture/pr71055.c
*************** a878d4452d87793c8c44834bb0002252  gcc/te
*** 33411,33418 ****
  93456a1afa9bdb206d19c956fc09d572  gcc/testsuite/gcc.dg/torture/pr77937-2.c
  b6fcd6c290211e3d1b2497ce7a21795b  gcc/testsuite/gcc.dg/torture/pr77979.c
  43c18695002abf8e08769dd6e8846444  gcc/testsuite/gcc.dg/torture/pr77988.c
! 4919fa70c7d271fbad5cc581fd0dd0bb  gcc/testsuite/gcc.dg/torture/pr78218.c
! 01a6185751927ae0f71add41581e2c77  gcc/testsuite/gcc.dg/torture/pr78305.c
  656dd1100d987387fe242a03ed6fde30  gcc/testsuite/gcc.dg/torture/pr78312.c
  995afdbc01d0dca0a2c8e0962ec2ed37  gcc/testsuite/gcc.dg/torture/pr78365.c
  97a06daa72abd05b50e081d28e95b4ab  gcc/testsuite/gcc.dg/torture/pr78416.c
--- 35061,35068 ----
  93456a1afa9bdb206d19c956fc09d572  gcc/testsuite/gcc.dg/torture/pr77937-2.c
  b6fcd6c290211e3d1b2497ce7a21795b  gcc/testsuite/gcc.dg/torture/pr77979.c
  43c18695002abf8e08769dd6e8846444  gcc/testsuite/gcc.dg/torture/pr77988.c
! cbdf397f5ecda85580815c5bca128b4d  gcc/testsuite/gcc.dg/torture/pr78218.c
! 69f87a4237fadf252e2dfbfd10167584  gcc/testsuite/gcc.dg/torture/pr78305.c
  656dd1100d987387fe242a03ed6fde30  gcc/testsuite/gcc.dg/torture/pr78312.c
  995afdbc01d0dca0a2c8e0962ec2ed37  gcc/testsuite/gcc.dg/torture/pr78365.c
  97a06daa72abd05b50e081d28e95b4ab  gcc/testsuite/gcc.dg/torture/pr78416.c
*************** b6497d39a2f8affc6b22d2af1a3f5ff5  gcc/te
*** 33450,33456 ****
  4ee23d90f9ce4e56c9067346935a0132  gcc/testsuite/gcc.dg/torture/pr79970.c
  028eb97756cfe96f0e2005402ce583df  gcc/testsuite/gcc.dg/torture/pr80025.c
  836cdc8e8c71c2a740d491e170406a0c  gcc/testsuite/gcc.dg/torture/pr80122.c
! fa9d831ec2b49fdcb6594f61853f169d  gcc/testsuite/gcc.dg/torture/pr80163.c
  ed736f4d42d5b470961915a56ed1dc6c  gcc/testsuite/gcc.dg/torture/pr80181.c
  935816549657d3ea72eef67ee99445dc  gcc/testsuite/gcc.dg/torture/pr80281.c
  4d6b74729925a5d31b130908d59c7661  gcc/testsuite/gcc.dg/torture/pr80304.c
--- 35100,35106 ----
  4ee23d90f9ce4e56c9067346935a0132  gcc/testsuite/gcc.dg/torture/pr79970.c
  028eb97756cfe96f0e2005402ce583df  gcc/testsuite/gcc.dg/torture/pr80025.c
  836cdc8e8c71c2a740d491e170406a0c  gcc/testsuite/gcc.dg/torture/pr80122.c
! 819f028916edb011463e0702393e5e94  gcc/testsuite/gcc.dg/torture/pr80163.c
  ed736f4d42d5b470961915a56ed1dc6c  gcc/testsuite/gcc.dg/torture/pr80181.c
  935816549657d3ea72eef67ee99445dc  gcc/testsuite/gcc.dg/torture/pr80281.c
  4d6b74729925a5d31b130908d59c7661  gcc/testsuite/gcc.dg/torture/pr80304.c
*************** a4f6b08c1291381e88e61db06bdf372f  gcc/te
*** 33459,33481 ****
--- 35109,35188 ----
  18bcc1e2a028a46b70391f66f2fe3019  gcc/testsuite/gcc.dg/torture/pr80362.c
  87d263c15a5b5f49fa4a5414786fd90b  gcc/testsuite/gcc.dg/torture/pr80539.c
  181186787b1edd60a1736c22385321bc  gcc/testsuite/gcc.dg/torture/pr80549.c
+ 412623be4155508e59d18149a49d023d  gcc/testsuite/gcc.dg/torture/pr80565.c
  03ecaa809bb832caf7cbddeeb4770315  gcc/testsuite/gcc.dg/torture/pr80591.c
  5aadb9ab7fec15c142a22ced740c5926  gcc/testsuite/gcc.dg/torture/pr80612.c
+ f5fb9f5c07db48d8adff52fc2762d85a  gcc/testsuite/gcc.dg/torture/pr80620.c
+ 52d7bd0b9062137f84491b7a22cb3fa1  gcc/testsuite/gcc.dg/torture/pr80713.c
+ 97a179cbe5b898a4d4739e0fff8e32a3  gcc/testsuite/gcc.dg/torture/pr80764.c
  62b28db4200d0c4e51bde8d1e5693886  gcc/testsuite/gcc.dg/torture/pr8081.c
  a8d41c3dc9b919057003c984fd22ecbd  gcc/testsuite/gcc.dg/torture/pr80842.c
+ 073d971ae33e9469bb2f56bfedeae4ed  gcc/testsuite/gcc.dg/torture/pr80876.c
+ c2f4666182d5ff4f49350a3c404ee597  gcc/testsuite/gcc.dg/torture/pr80901.c
  d19aed0a4e2ff7539a13bbabe58b1718  gcc/testsuite/gcc.dg/torture/pr80970.c
+ 3178eaae90fe84d2dd9dcf93c5a8bde7  gcc/testsuite/gcc.dg/torture/pr80974.c
+ 4763b0156de02f04a125f8a06d388503  gcc/testsuite/gcc.dg/torture/pr81053.c
  1b226454a7fb0c8fb9378879e493da1a  gcc/testsuite/gcc.dg/torture/pr81083.c
+ 5db0d71bb858fbcf267f74784eafa025  gcc/testsuite/gcc.dg/torture/pr81118.c
  ca2acb1431d1d7c06c0023e61785e6dc  gcc/testsuite/gcc.dg/torture/pr81181.c
+ 2b08ff3a31aab85590e162ac5a0dc5be  gcc/testsuite/gcc.dg/torture/pr81203.c
+ e9f1827db6fb8beca36fd05861e3be00  gcc/testsuite/gcc.dg/torture/pr81245.c
+ ea64f1083e06aa7edcea33b43f7d4f38  gcc/testsuite/gcc.dg/torture/pr81297.c
+ b4963215ee517c205128bce8c9697431  gcc/testsuite/gcc.dg/torture/pr81403.c
+ f6ecda76f0349d0f236b608096f983ff  gcc/testsuite/gcc.dg/torture/pr81418.c
+ ba11a0001b6a1f19cd92d2dd0bc919c7  gcc/testsuite/gcc.dg/torture/pr81500.c
+ 2251cea8fd7bac1b4787cbe028310e67  gcc/testsuite/gcc.dg/torture/pr81510-2.c
+ 3872f3bedbb93a834e3ed9c000d7056e  gcc/testsuite/gcc.dg/torture/pr81510.c
+ cc42448c4074f5bd6a38db7ef796616a  gcc/testsuite/gcc.dg/torture/pr81571.c
+ 39ba29e784fe1aeb492892ff34001798  gcc/testsuite/gcc.dg/torture/pr81573.c
  9c7f2022b91d5378ecf261a83632a47e  gcc/testsuite/gcc.dg/torture/pr81790.c
+ 54d430d8039df8d30de7153a46c2409a  gcc/testsuite/gcc.dg/torture/pr81814.c
+ 2f651ba687b8870610f9edbcfbe94645  gcc/testsuite/gcc.dg/torture/pr81900.c
  8314ada81ea665898c4e839ec594aa42  gcc/testsuite/gcc.dg/torture/pr82102.c
+ f49d29d7092cb5f2096a5aeee08c8bfc  gcc/testsuite/gcc.dg/torture/pr82129.c
+ bbca4c823a1d21c2fbeb81ef1b8b92ce  gcc/testsuite/gcc.dg/torture/pr82157.c
+ 4fd57d65a37176fec853b9a23c3af812  gcc/testsuite/gcc.dg/torture/pr82217.c
  8bd84fcfed5e067d6e1e71c261f494be  gcc/testsuite/gcc.dg/torture/pr82244.c
  fceb11db75335ec403cac84c4b7152dc  gcc/testsuite/gcc.dg/torture/pr82264.c
  454da85adee3a6a53aa95daa776ebdbd  gcc/testsuite/gcc.dg/torture/pr82276.c
  9159698b2ec0dbe37aaa793d0e3fdf2a  gcc/testsuite/gcc.dg/torture/pr82285.c
  13afc73ea0ac1c9465104f503ad5daeb  gcc/testsuite/gcc.dg/torture/pr82291.c
+ 1a9f42f7512e97fcf2c57e9afe2a75d3  gcc/testsuite/gcc.dg/torture/pr82320.c
  c4067e68903cdc2e5aaad5e7fa945264  gcc/testsuite/gcc.dg/torture/pr82402.c
+ 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
+ c36550249f442b75cad0d9250a491abf  gcc/testsuite/gcc.dg/torture/pr83396.c
+ a24f3564bdd6cbc7db03fb4fd4e29301  gcc/testsuite/gcc.dg/torture/pr83418.c
+ cc5d97c2c1260dc71c4ed0f095f46ba9  gcc/testsuite/gcc.dg/torture/pr83580.c
+ 4603e0727f8e9910c6dc4654e14beaa6  gcc/testsuite/gcc.dg/torture/pr83685.c
+ d736e8ca407901a1a6c2bd20ab711d98  gcc/testsuite/gcc.dg/torture/pr83753.c
+ 97b36d29bca9c18684aa1581623f030d  gcc/testsuite/gcc.dg/torture/pr83847.c
+ 8a0d25440c278bbf3f384c2dc397c822  gcc/testsuite/gcc.dg/torture/pr83940.c
+ eb357b6602c35f0f3e0749bf3ba3ecaa  gcc/testsuite/gcc.dg/torture/pr84178-2.c
+ 6bc3ab573f134b6310d887f131782e31  gcc/testsuite/gcc.dg/torture/pr84417.c
+ 8d0ffb493b91f045356477e34cdb5848  gcc/testsuite/gcc.dg/torture/pr84427.c
+ 3bb40f2a3a02e38c27d7ea687f6b99e9  gcc/testsuite/gcc.dg/torture/pr84528.c
+ d9fa5112301c2b0d1f2ce2b0ef38af05  gcc/testsuite/gcc.dg/torture/pr84682-1.c
+ 33111966a4bd9d832e37f6e24594e0ec  gcc/testsuite/gcc.dg/torture/pr84682-2.c
+ be22396349bbab37b65bc1eb3033887e  gcc/testsuite/gcc.dg/torture/pr84682-3.c
+ 7ce44848047572d54fbc4e89e5dc3bbe  gcc/testsuite/gcc.dg/torture/pr84740.c
+ b1dc948dbe2e4e262af2a3b5dbfad2e9  gcc/testsuite/gcc.dg/torture/pr84746.c
+ e03db596324f51251c0ce2c64b12cad2  gcc/testsuite/gcc.dg/torture/pr84775.c
+ bb72aaefe1698b4bb1049aa9d6b7ee3a  gcc/testsuite/gcc.dg/torture/pr84803.c
+ f5f1c6e563476cf4c72a652712ad2748  gcc/testsuite/gcc.dg/torture/pr84811.c
+ e3454ccd4d18e962e3552dc0521625f3  gcc/testsuite/gcc.dg/torture/pr84830.c
+ 6561bd91779cfb10bb91f9a474943592  gcc/testsuite/gcc.dg/torture/pr84929.c
+ 7f1150514530c325d4ab11a44bfef85e  gcc/testsuite/gcc.dg/torture/pr85168.c
+ 4a262d46aeb406a4774a474eee1d9e1b  gcc/testsuite/gcc.dg/torture/pr85244-1.c
+ e7da68ecb5c3ee758ea96fc820f3665b  gcc/testsuite/gcc.dg/torture/pr85244-2.c
+ 8fd878a7b2caf92cbc79ebc9f688e7d6  gcc/testsuite/gcc.dg/torture/pr85284.c
+ dcc32d50471b70634a17c58a18775229  gcc/testsuite/gcc.dg/torture/pr85397-1.c
+ fff303e88793dc27822a867c8150a7c6  gcc/testsuite/gcc.dg/torture/pr85475.c
  d086c3946230ba05df33a45be4862730  gcc/testsuite/gcc.dg/torture/pta-callused-1.c
  39620328710fd9ff170741766805e426  gcc/testsuite/gcc.dg/torture/pta-escape-1.c
  f50cbae53561b1267140f574974f7fc0  gcc/testsuite/gcc.dg/torture/pta-ptrarith-1.c
*************** b82f09e52f40b5e142ca17a69421bfad  gcc/te
*** 33489,33538 ****
  5e4ed3eeb940f3f8f5de9b8951123bec  gcc/testsuite/gcc.dg/torture/restrict-4.c
  9bedd7550914e2e483d55e47c44723e3  gcc/testsuite/gcc.dg/torture/restrict-5.c
  ae4bd16210e8a183a5a9c10baeb4171c  gcc/testsuite/gcc.dg/torture/ssa-pta-fn-1.c
! fed60676d191957175e5d7d91ce11f0b  gcc/testsuite/gcc.dg/torture/stackalign/alloca-1.c
  2d416072232dd69f1b2a756bbb4d1dfd  gcc/testsuite/gcc.dg/torture/stackalign/alloca-2.c
  9173dbcdd930c05fbaaa3328f1c8aa19  gcc/testsuite/gcc.dg/torture/stackalign/alloca-3.c
  dc476fb6c6fcd7370e5d269c50d72e4f  gcc/testsuite/gcc.dg/torture/stackalign/alloca-4.c
  edd2b87cbd92db8aadd0dffe6eebb23d  gcc/testsuite/gcc.dg/torture/stackalign/alloca-5.c
  ac89150f1589849bc2c9db379c422d8a  gcc/testsuite/gcc.dg/torture/stackalign/alloca-6.c
  fef5a8d7a1f7cdc1db96edce26047f61  gcc/testsuite/gcc.dg/torture/stackalign/builtin-apply-1.c
! 5a3bdbce5016dfd4a51e43570f34c4f1  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
  a1b47b9c3e69d79d1895ebc4fd11032b  gcc/testsuite/gcc.dg/torture/stackalign/check.h
! 4db7c378daafa6449876a58882498e32  gcc/testsuite/gcc.dg/torture/stackalign/comp-goto-1.c
  27cb382aa38b2d606ef2b7f107abbf29  gcc/testsuite/gcc.dg/torture/stackalign/fastcall-1.c
! 547fb60a7c98818dbd1acfe559e39024  gcc/testsuite/gcc.dg/torture/stackalign/global-1.c
! e3bd7479e6c36dccdac591573f4d84d5  gcc/testsuite/gcc.dg/torture/stackalign/inline-1.c
! e7087a70e23906766431f783f1f4268d  gcc/testsuite/gcc.dg/torture/stackalign/inline-2.c
! 67501c770c3c0942998cb5087e32cb8f  gcc/testsuite/gcc.dg/torture/stackalign/nested-1.c
! 88068e7328e85a8ad9e691195e5ad42b  gcc/testsuite/gcc.dg/torture/stackalign/nested-2.c
! 9d0ea9d2b0ac4777726839ea28e0400a  gcc/testsuite/gcc.dg/torture/stackalign/nested-3.c
! b55ed35693c5173fe232270d51ab7acd  gcc/testsuite/gcc.dg/torture/stackalign/nested-4.c
! 7d8a1c552896a2d49c2f241c3584fda9  gcc/testsuite/gcc.dg/torture/stackalign/nested-5.c
! 98eaf4b06cf8d871b70bb889eef76585  gcc/testsuite/gcc.dg/torture/stackalign/nested-6.c
  3c95f79f4f5b4f4aba744fdd56db598b  gcc/testsuite/gcc.dg/torture/stackalign/non-local-goto-1.c
  72c6693ae7260a2fa1ef723c9ed0dc33  gcc/testsuite/gcc.dg/torture/stackalign/non-local-goto-2.c
! 1ae7a9f7e486819738bb2d5d37016e25  gcc/testsuite/gcc.dg/torture/stackalign/non-local-goto-3.c
! 63b04b178e710a75bcc46560cade1b1d  gcc/testsuite/gcc.dg/torture/stackalign/non-local-goto-4.c
! 03cc4eec9462cfb475ff93f9994e67ba  gcc/testsuite/gcc.dg/torture/stackalign/non-local-goto-5.c
! f93d82c0f91081581af93c1d94b0236d  gcc/testsuite/gcc.dg/torture/stackalign/pr16660-1.c
! 95dd6280acb43d8491ba5ffc2402dcce  gcc/testsuite/gcc.dg/torture/stackalign/pr16660-2.c
! 45142fbb7d741435335a3dd38247c8ef  gcc/testsuite/gcc.dg/torture/stackalign/pr16660-3.c
  2b07c1788098ee29d9f00b761f804c8e  gcc/testsuite/gcc.dg/torture/stackalign/push-1.c
  ead1af7f5e7e02c3b0f28a7968beef77  gcc/testsuite/gcc.dg/torture/stackalign/regparm-1.c
! da88371f7c63f6de417fd2e068219c85  gcc/testsuite/gcc.dg/torture/stackalign/ret-struct-1.c
  eeb7cdfccbec69227ac2915527d61fa3  gcc/testsuite/gcc.dg/torture/stackalign/setjmp-1.c
  04eb1401af1a7b33596d2ce529175a90  gcc/testsuite/gcc.dg/torture/stackalign/setjmp-2.c
  0c1806b37db5e92a3ab1c3c51fb22d93  gcc/testsuite/gcc.dg/torture/stackalign/setjmp-3.c
  ffc8d6d378e80da23cc2300fd9f2d529  gcc/testsuite/gcc.dg/torture/stackalign/setjmp-4.c
  d5f1bd4db95109ffff76eb7c721a95be  gcc/testsuite/gcc.dg/torture/stackalign/sibcall-1.c
! 0506ff70bb77a2df82ae6cee6cdd8d13  gcc/testsuite/gcc.dg/torture/stackalign/stackalign.exp
! 86088a48d56f8a9e965cae68d746d0c4  gcc/testsuite/gcc.dg/torture/stackalign/struct-1.c
  30d5a92d8a2ed3890586ed1c2d6602c9  gcc/testsuite/gcc.dg/torture/stackalign/thiscall-1.c
! e552ec03851ff5c934a81acb21d1fab5  gcc/testsuite/gcc.dg/torture/stackalign/vararg-1.c
! a990feb53511527deb2fdd2c3f0d8c45  gcc/testsuite/gcc.dg/torture/stackalign/vararg-2.c
  3de9668ba2bd89837c3f7c15e1e3d7e2  gcc/testsuite/gcc.dg/torture/stackalign/vararg-3.c
  ed0fa1d073845fed5b0352c474ef8b77  gcc/testsuite/gcc.dg/torture/tls/run-gd.c
  df7b12dbf9d331f62fd4d971bf2212d0  gcc/testsuite/gcc.dg/torture/tls/run-ie.c
--- 35196,35245 ----
  5e4ed3eeb940f3f8f5de9b8951123bec  gcc/testsuite/gcc.dg/torture/restrict-4.c
  9bedd7550914e2e483d55e47c44723e3  gcc/testsuite/gcc.dg/torture/restrict-5.c
  ae4bd16210e8a183a5a9c10baeb4171c  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
  9173dbcdd930c05fbaaa3328f1c8aa19  gcc/testsuite/gcc.dg/torture/stackalign/alloca-3.c
  dc476fb6c6fcd7370e5d269c50d72e4f  gcc/testsuite/gcc.dg/torture/stackalign/alloca-4.c
  edd2b87cbd92db8aadd0dffe6eebb23d  gcc/testsuite/gcc.dg/torture/stackalign/alloca-5.c
  ac89150f1589849bc2c9db379c422d8a  gcc/testsuite/gcc.dg/torture/stackalign/alloca-6.c
  fef5a8d7a1f7cdc1db96edce26047f61  gcc/testsuite/gcc.dg/torture/stackalign/builtin-apply-1.c
! be44595d06856973a3a64c5cdc8fed62  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
  a1b47b9c3e69d79d1895ebc4fd11032b  gcc/testsuite/gcc.dg/torture/stackalign/check.h
! fc7edf6af7d557c019daea5a3682f91e  gcc/testsuite/gcc.dg/torture/stackalign/comp-goto-1.c
  27cb382aa38b2d606ef2b7f107abbf29  gcc/testsuite/gcc.dg/torture/stackalign/fastcall-1.c
! 6ceb4365af69bb6c63498a1cb98c6a52  gcc/testsuite/gcc.dg/torture/stackalign/global-1.c
! 7bbe2c713d926977b50ee3f146378d30  gcc/testsuite/gcc.dg/torture/stackalign/inline-1.c
! 3b7730d30d00c566fe020515a49fc008  gcc/testsuite/gcc.dg/torture/stackalign/inline-2.c
! 69c05dfda578fff63d47dce238ae5cc1  gcc/testsuite/gcc.dg/torture/stackalign/nested-1.c
! 8cabcec726702b8b2492c2e86d0c25fc  gcc/testsuite/gcc.dg/torture/stackalign/nested-2.c
! fe2ed24e6a1681e17e903eadc7b7bd20  gcc/testsuite/gcc.dg/torture/stackalign/nested-3.c
! b97497569ae5556fdfbbde09c2ce3745  gcc/testsuite/gcc.dg/torture/stackalign/nested-4.c
! c7f7b5a10505f059ca3939572a291f3c  gcc/testsuite/gcc.dg/torture/stackalign/nested-5.c
! ed0527675792cf2a3fe0c22a4b66e841  gcc/testsuite/gcc.dg/torture/stackalign/nested-6.c
  3c95f79f4f5b4f4aba744fdd56db598b  gcc/testsuite/gcc.dg/torture/stackalign/non-local-goto-1.c
  72c6693ae7260a2fa1ef723c9ed0dc33  gcc/testsuite/gcc.dg/torture/stackalign/non-local-goto-2.c
! d8def3a90c88f11f17cf108a3595841d  gcc/testsuite/gcc.dg/torture/stackalign/non-local-goto-3.c
! 673197b6dcd0fb8d747c2b0c3885895f  gcc/testsuite/gcc.dg/torture/stackalign/non-local-goto-4.c
! 0bab00f28d0d71131c51fa96ad2c7d96  gcc/testsuite/gcc.dg/torture/stackalign/non-local-goto-5.c
! 110db4b222d075a8bd23f2d4eb1676b0  gcc/testsuite/gcc.dg/torture/stackalign/pr16660-1.c
! 1f99db61514ea4384f47eff9842542a4  gcc/testsuite/gcc.dg/torture/stackalign/pr16660-2.c
! 2572b72252dd8a2f343142eeda1de151  gcc/testsuite/gcc.dg/torture/stackalign/pr16660-3.c
  2b07c1788098ee29d9f00b761f804c8e  gcc/testsuite/gcc.dg/torture/stackalign/push-1.c
  ead1af7f5e7e02c3b0f28a7968beef77  gcc/testsuite/gcc.dg/torture/stackalign/regparm-1.c
! b8e864b5d3216ae51ced5983548de3bf  gcc/testsuite/gcc.dg/torture/stackalign/ret-struct-1.c
  eeb7cdfccbec69227ac2915527d61fa3  gcc/testsuite/gcc.dg/torture/stackalign/setjmp-1.c
  04eb1401af1a7b33596d2ce529175a90  gcc/testsuite/gcc.dg/torture/stackalign/setjmp-2.c
  0c1806b37db5e92a3ab1c3c51fb22d93  gcc/testsuite/gcc.dg/torture/stackalign/setjmp-3.c
  ffc8d6d378e80da23cc2300fd9f2d529  gcc/testsuite/gcc.dg/torture/stackalign/setjmp-4.c
  d5f1bd4db95109ffff76eb7c721a95be  gcc/testsuite/gcc.dg/torture/stackalign/sibcall-1.c
! 85ff0c0f2bce51d42f6ce50092bb6b8d  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
! 43fcb5d2985d6b4e94c4aebf0392dbd4  gcc/testsuite/gcc.dg/torture/stackalign/vararg-2.c
  3de9668ba2bd89837c3f7c15e1e3d7e2  gcc/testsuite/gcc.dg/torture/stackalign/vararg-3.c
  ed0fa1d073845fed5b0352c474ef8b77  gcc/testsuite/gcc.dg/torture/tls/run-gd.c
  df7b12dbf9d331f62fd4d971bf2212d0  gcc/testsuite/gcc.dg/torture/tls/run-ie.c
*************** a7dd8959cd95d178e51f986a468a0a72  gcc/te
*** 33542,33548 ****
  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
! 5a8c606e085107bfddc929f5df1c0fdb  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
--- 35249,35255 ----
  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
! d126c366a530cb30de8d55902948692c  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
*************** c8172fc62ffa394397e6abeb344e2653  gcc/te
*** 33587,33593 ****
  ac96a62a2df197c2347e0911d7134d17  gcc/testsuite/gcc.dg/torture/vshuf-v8qi.c
  98b2aca48bf05221e64adcb2b9ee617d  gcc/testsuite/gcc.dg/torture/vshuf-v8sf.c
  8c320c5be67953d33f31ec50ca43f2de  gcc/testsuite/gcc.dg/torture/vshuf-v8si.c
! 11537483149a4610802e725ceeee335d  gcc/testsuite/gcc.dg/trampoline-1.c
  d85610312206caa729ac7ee485b19a6b  gcc/testsuite/gcc.dg/transparent-union-1.c
  2366c8b58c823732925c080840a681c3  gcc/testsuite/gcc.dg/transparent-union-2.c
  71cf50e1558bafc58d1cb6514cf4fa37  gcc/testsuite/gcc.dg/transparent-union-3.c
--- 35294,35300 ----
  ac96a62a2df197c2347e0911d7134d17  gcc/testsuite/gcc.dg/torture/vshuf-v8qi.c
  98b2aca48bf05221e64adcb2b9ee617d  gcc/testsuite/gcc.dg/torture/vshuf-v8sf.c
  8c320c5be67953d33f31ec50ca43f2de  gcc/testsuite/gcc.dg/torture/vshuf-v8si.c
! e9fd20c6a5ee817fc329cc085c9032eb  gcc/testsuite/gcc.dg/trampoline-1.c
  d85610312206caa729ac7ee485b19a6b  gcc/testsuite/gcc.dg/transparent-union-1.c
  2366c8b58c823732925c080840a681c3  gcc/testsuite/gcc.dg/transparent-union-2.c
  71cf50e1558bafc58d1cb6514cf4fa37  gcc/testsuite/gcc.dg/transparent-union-3.c
*************** d85610312206caa729ac7ee485b19a6b  gcc/te
*** 33597,33604 ****
  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
! 2f17fcfbaeb395f99aa4a017163be746  gcc/testsuite/gcc.dg/tree-prof/cold_partition_label.c
! 154a7d7ef72c853fb2083c1ab8b363d9  gcc/testsuite/gcc.dg/tree-prof/comp-goto-1.c
  e8d60a2823addbd9269c5913c726a7fe  gcc/testsuite/gcc.dg/tree-prof/crossmodule-indircall-1.c
  2deafe5a2e8e7e1528a0f417cf61a3f2  gcc/testsuite/gcc.dg/tree-prof/crossmodule-indircall-1a.c
  c4ce3a409c79f1a5a28b96f55b1b60b6  gcc/testsuite/gcc.dg/tree-prof/ic-misattribution-1.c
--- 35304,35311 ----
  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
! a0c229bdba11c1870a3a159be8b5c11b  gcc/testsuite/gcc.dg/tree-prof/cold_partition_label.c
! 9a43319c4f03c869fc3c7320fbc78bff  gcc/testsuite/gcc.dg/tree-prof/comp-goto-1.c
  e8d60a2823addbd9269c5913c726a7fe  gcc/testsuite/gcc.dg/tree-prof/crossmodule-indircall-1.c
  2deafe5a2e8e7e1528a0f417cf61a3f2  gcc/testsuite/gcc.dg/tree-prof/crossmodule-indircall-1a.c
  c4ce3a409c79f1a5a28b96f55b1b60b6  gcc/testsuite/gcc.dg/tree-prof/ic-misattribution-1.c
*************** af6029c2bad38cfb5326e5a120549d06  gcc/te
*** 33608,33614 ****
  65775a552552ee4184ac107034468f54  gcc/testsuite/gcc.dg/tree-prof/merge_block.c
  d47ca7cd7557792c189886a518a1a5dd  gcc/testsuite/gcc.dg/tree-prof/peel-1.c
  fa7217b4e402db46b1d64ca38eb6f212  gcc/testsuite/gcc.dg/tree-prof/pr34999.c
! 8fbea4871801841e81c791d9f937c05f  gcc/testsuite/gcc.dg/tree-prof/pr44777.c
  8878763a813881e8960c5e8246142427  gcc/testsuite/gcc.dg/tree-prof/pr45354.c
  8404cc2c5f1e56235d09d27dcb67b7a0  gcc/testsuite/gcc.dg/tree-prof/pr47187.c
  7e3eedb2513fa61c799eb39a389e4bb7  gcc/testsuite/gcc.dg/tree-prof/pr49299-1.c
--- 35315,35321 ----
  65775a552552ee4184ac107034468f54  gcc/testsuite/gcc.dg/tree-prof/merge_block.c
  d47ca7cd7557792c189886a518a1a5dd  gcc/testsuite/gcc.dg/tree-prof/peel-1.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
  8404cc2c5f1e56235d09d27dcb67b7a0  gcc/testsuite/gcc.dg/tree-prof/pr47187.c
  7e3eedb2513fa61c799eb39a389e4bb7  gcc/testsuite/gcc.dg/tree-prof/pr49299-1.c
*************** fa7217b4e402db46b1d64ca38eb6f212  gcc/te
*** 33617,33640 ****
  504f32de54a5ad49b342a10f337e5dab  gcc/testsuite/gcc.dg/tree-prof/pr52027.c
  345c39022fa99a5e40eae744b8bcc403  gcc/testsuite/gcc.dg/tree-prof/pr52150.c
  3f27342de254e8240c99bdedc574ddfe  gcc/testsuite/gcc.dg/tree-prof/pr59003.c
! d5100edb99fb878f5b24f4d8457b2ad6  gcc/testsuite/gcc.dg/tree-prof/pr66295.c
  41f2b0f1caac2c21616dfe0830cd87fe  gcc/testsuite/gcc.dg/tree-prof/pr79587.c
  6326a041bce19e077fb8352676c53447  gcc/testsuite/gcc.dg/tree-prof/prof-robust-1.c
  f1aee3218249eb01a8ccf255141e26bb  gcc/testsuite/gcc.dg/tree-prof/section-attr-1.c
  221cdfc15a54be42d4e3e364000d440a  gcc/testsuite/gcc.dg/tree-prof/section-attr-2.c
  cca4eabbfbcccd4665538ceb02d85d15  gcc/testsuite/gcc.dg/tree-prof/section-attr-3.c
  c2122329768fbed2958f52176f4808a7  gcc/testsuite/gcc.dg/tree-prof/stringop-1.c
  fd15880f8aec6477baedf3e207a6f1b5  gcc/testsuite/gcc.dg/tree-prof/stringop-2.c
! a3e14a90c2fe02c076dd64c26c51f57b  gcc/testsuite/gcc.dg/tree-prof/switch-case-1.c
! da860cbb658cc08461572d0cd199041b  gcc/testsuite/gcc.dg/tree-prof/switch-case-2.c
  d772d253a3efe703a6f81d851febfdcc  gcc/testsuite/gcc.dg/tree-prof/time-profiler-1.c
  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
! bb13c7488833672574f48519cdf362ed  gcc/testsuite/gcc.dg/tree-prof/tree-prof.exp
! 44a604edb9ae3321549e8124339314c7  gcc/testsuite/gcc.dg/tree-prof/unroll-1.c
  14a5277ebc22dc06798be4e7a79ee909  gcc/testsuite/gcc.dg/tree-prof/update-cunroll-2.c
! 2ec0ba45a88d6b7d7d39dce355379077  gcc/testsuite/gcc.dg/tree-prof/update-loopch.c
  4285a41f16951c78dcea799bc6384527  gcc/testsuite/gcc.dg/tree-prof/update-tailcall.c
  04aa0e967004f0d1cad47683ea601b71  gcc/testsuite/gcc.dg/tree-prof/va-arg-pack-1.c
  4f078359de58bdcfe6ac11618eeee1be  gcc/testsuite/gcc.dg/tree-prof/val-prof-1.c
--- 35324,35348 ----
  504f32de54a5ad49b342a10f337e5dab  gcc/testsuite/gcc.dg/tree-prof/pr52027.c
  345c39022fa99a5e40eae744b8bcc403  gcc/testsuite/gcc.dg/tree-prof/pr52150.c
  3f27342de254e8240c99bdedc574ddfe  gcc/testsuite/gcc.dg/tree-prof/pr59003.c
! 89900e1976b7f7524008d17e0a1b8a60  gcc/testsuite/gcc.dg/tree-prof/pr66295.c
  41f2b0f1caac2c21616dfe0830cd87fe  gcc/testsuite/gcc.dg/tree-prof/pr79587.c
  6326a041bce19e077fb8352676c53447  gcc/testsuite/gcc.dg/tree-prof/prof-robust-1.c
  f1aee3218249eb01a8ccf255141e26bb  gcc/testsuite/gcc.dg/tree-prof/section-attr-1.c
  221cdfc15a54be42d4e3e364000d440a  gcc/testsuite/gcc.dg/tree-prof/section-attr-2.c
  cca4eabbfbcccd4665538ceb02d85d15  gcc/testsuite/gcc.dg/tree-prof/section-attr-3.c
+ e0651baf3344a3a41f63b729be3166b4  gcc/testsuite/gcc.dg/tree-prof/split-1.c
  c2122329768fbed2958f52176f4808a7  gcc/testsuite/gcc.dg/tree-prof/stringop-1.c
  fd15880f8aec6477baedf3e207a6f1b5  gcc/testsuite/gcc.dg/tree-prof/stringop-2.c
! 1ad0b9bb9b1b8c06cc6b4cb52fbf9139  gcc/testsuite/gcc.dg/tree-prof/switch-case-1.c
! e7aeca94f621518a6e6709ceaeb4e162  gcc/testsuite/gcc.dg/tree-prof/switch-case-2.c
  d772d253a3efe703a6f81d851febfdcc  gcc/testsuite/gcc.dg/tree-prof/time-profiler-1.c
  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
! 9691a13f21470506aade697f7bb00ff1  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
! aa679c7d132fd0ad74b7e872f5cd7cfa  gcc/testsuite/gcc.dg/tree-prof/update-loopch.c
  4285a41f16951c78dcea799bc6384527  gcc/testsuite/gcc.dg/tree-prof/update-tailcall.c
  04aa0e967004f0d1cad47683ea601b71  gcc/testsuite/gcc.dg/tree-prof/va-arg-pack-1.c
  4f078359de58bdcfe6ac11618eeee1be  gcc/testsuite/gcc.dg/tree-prof/val-prof-1.c
*************** bb13c7488833672574f48519cdf362ed  gcc/te
*** 33643,33649 ****
  17a450dda94919c1f18ef4fd508c46a4  gcc/testsuite/gcc.dg/tree-prof/val-prof-4.c
  970676c998d808be3ee4733d317b7901  gcc/testsuite/gcc.dg/tree-prof/val-prof-5.c
  ab9ab8b98786ab1ecff0b4892e178a8e  gcc/testsuite/gcc.dg/tree-prof/val-prof-6.c
! 66886e6fdf5d4713e14f133137e58274  gcc/testsuite/gcc.dg/tree-prof/val-prof-7.c
  3fb849b574c0669b2fb1689c146284d4  gcc/testsuite/gcc.dg/tree-prof/val-prof-8.c
  7922e9ffdd39169bc07bd782d21e1bbb  gcc/testsuite/gcc.dg/tree-prof/val-prof-9.c
  d4bd7cdc56a7f6df1ca2ea46658dbe95  gcc/testsuite/gcc.dg/tree-prof/val-profiler-threads-1.c
--- 35351,35357 ----
  17a450dda94919c1f18ef4fd508c46a4  gcc/testsuite/gcc.dg/tree-prof/val-prof-4.c
  970676c998d808be3ee4733d317b7901  gcc/testsuite/gcc.dg/tree-prof/val-prof-5.c
  ab9ab8b98786ab1ecff0b4892e178a8e  gcc/testsuite/gcc.dg/tree-prof/val-prof-6.c
! 429ebdf348bf78afb293f1f7c50d528e  gcc/testsuite/gcc.dg/tree-prof/val-prof-7.c
  3fb849b574c0669b2fb1689c146284d4  gcc/testsuite/gcc.dg/tree-prof/val-prof-8.c
  7922e9ffdd39169bc07bd782d21e1bbb  gcc/testsuite/gcc.dg/tree-prof/val-prof-9.c
  d4bd7cdc56a7f6df1ca2ea46658dbe95  gcc/testsuite/gcc.dg/tree-prof/val-profiler-threads-1.c
*************** ce5aafb4955372c5794fefbc1ca41606  gcc/te
*** 33754,33759 ****
--- 35462,35469 ----
  faa7c39d0dee8295dcc54184f6ada554  gcc/testsuite/gcc.dg/tree-ssa/20070815.c
  81b01930660a620bdd4690b08300af36  gcc/testsuite/gcc.dg/tree-ssa/20080530.c
  13d008dba74840c2e2c06c6866504815  gcc/testsuite/gcc.dg/tree-ssa/71206.c
+ b0a0ae6dea1191be70b2c744d4e4ac3b  gcc/testsuite/gcc.dg/tree-ssa/addadd-2.c
+ 8d975c96fe6416d17980c53f1bcdba44  gcc/testsuite/gcc.dg/tree-ssa/addadd.c
  b07a61efdfbca5d72c8f45ebb4cbb834  gcc/testsuite/gcc.dg/tree-ssa/alias-10.c
  9c80d7050307ca3baba810c2c06e9260  gcc/testsuite/gcc.dg/tree-ssa/alias-11.c
  d30fe487cafc4d4d993a4f0cb4d3abb1  gcc/testsuite/gcc.dg/tree-ssa/alias-12.c
*************** f5bbeda751861fcb1807d39b23e8d5e3  gcc/te
*** 33779,33786 ****
  fc4b0dd8cf7e9857ed2f718f3878daab  gcc/testsuite/gcc.dg/tree-ssa/alias-31.c
  ff86f8cafc02bd4b7b7ee673b34d9968  gcc/testsuite/gcc.dg/tree-ssa/alias-32.c
  9ad58055ae68b248bdca5b025cf6432a  gcc/testsuite/gcc.dg/tree-ssa/alias-33.c
! f628c64fe5911e07103fcdc02742efe4  gcc/testsuite/gcc.dg/tree-ssa/alias-34.c
  6d738e049e5789516e25d93b3d79491f  gcc/testsuite/gcc.dg/tree-ssa/alias-35.c
  39ccb1f379d9b721ccfb8777fdff95db  gcc/testsuite/gcc.dg/tree-ssa/alias-4.c
  4f82ca0683dffb3ce8d7ddf3d22b9589  gcc/testsuite/gcc.dg/tree-ssa/alias-5.c
  739932a09c1c58a148480ac9ae109483  gcc/testsuite/gcc.dg/tree-ssa/alias-6.c
--- 35489,35497 ----
  fc4b0dd8cf7e9857ed2f718f3878daab  gcc/testsuite/gcc.dg/tree-ssa/alias-31.c
  ff86f8cafc02bd4b7b7ee673b34d9968  gcc/testsuite/gcc.dg/tree-ssa/alias-32.c
  9ad58055ae68b248bdca5b025cf6432a  gcc/testsuite/gcc.dg/tree-ssa/alias-33.c
! 1159d6f3301745741e7f425bfb844e22  gcc/testsuite/gcc.dg/tree-ssa/alias-34.c
  6d738e049e5789516e25d93b3d79491f  gcc/testsuite/gcc.dg/tree-ssa/alias-35.c
+ 4cbbf097ac11df64152a21b612c1d85b  gcc/testsuite/gcc.dg/tree-ssa/alias-36.c
  39ccb1f379d9b721ccfb8777fdff95db  gcc/testsuite/gcc.dg/tree-ssa/alias-4.c
  4f82ca0683dffb3ce8d7ddf3d22b9589  gcc/testsuite/gcc.dg/tree-ssa/alias-5.c
  739932a09c1c58a148480ac9ae109483  gcc/testsuite/gcc.dg/tree-ssa/alias-6.c
*************** af9b5f0df22fc33bd75f8b69dd3d096a  gcc/te
*** 33802,33810 ****
  5b4f928b7af7165de3bb8da27632ca5e  gcc/testsuite/gcc.dg/tree-ssa/assign-1.c
  15e6bbc5ae89e749a3bb2091872fe4f0  gcc/testsuite/gcc.dg/tree-ssa/assign-2.c
  25fce5ed3cc7858828657da3a7a4e839  gcc/testsuite/gcc.dg/tree-ssa/assign-3.c
  73fe400b7290ce09b8addcbf029ea23f  gcc/testsuite/gcc.dg/tree-ssa/attr-alias-2.c
  f567893fed465ceb89922b92d447b413  gcc/testsuite/gcc.dg/tree-ssa/attr-alias.c
! 22156f6ca6d7b5c48a380509f71d184f  gcc/testsuite/gcc.dg/tree-ssa/attr-hotcold-2.c
  d605c0b7d6a001365bda6d24ef97cbb5  gcc/testsuite/gcc.dg/tree-ssa/backprop-1.c
  17d2984dabe7a16d209fe216b93ffa09  gcc/testsuite/gcc.dg/tree-ssa/backprop-2.c
  ac00cf20aa901dad53cb68baa97cc1f8  gcc/testsuite/gcc.dg/tree-ssa/backprop-3.c
--- 35513,35523 ----
  5b4f928b7af7165de3bb8da27632ca5e  gcc/testsuite/gcc.dg/tree-ssa/assign-1.c
  15e6bbc5ae89e749a3bb2091872fe4f0  gcc/testsuite/gcc.dg/tree-ssa/assign-2.c
  25fce5ed3cc7858828657da3a7a4e839  gcc/testsuite/gcc.dg/tree-ssa/assign-3.c
+ b4c91647f947f91cd2731fe88ee9b4ba  gcc/testsuite/gcc.dg/tree-ssa/assoc-1.c
+ 5d2f35750d115822daf6de26c9563111  gcc/testsuite/gcc.dg/tree-ssa/assoc-2.c
  73fe400b7290ce09b8addcbf029ea23f  gcc/testsuite/gcc.dg/tree-ssa/attr-alias-2.c
  f567893fed465ceb89922b92d447b413  gcc/testsuite/gcc.dg/tree-ssa/attr-alias.c
! 87b7a7c633b2395b9548b275cb6850f1  gcc/testsuite/gcc.dg/tree-ssa/attr-hotcold-2.c
  d605c0b7d6a001365bda6d24ef97cbb5  gcc/testsuite/gcc.dg/tree-ssa/backprop-1.c
  17d2984dabe7a16d209fe216b93ffa09  gcc/testsuite/gcc.dg/tree-ssa/backprop-2.c
  ac00cf20aa901dad53cb68baa97cc1f8  gcc/testsuite/gcc.dg/tree-ssa/backprop-3.c
*************** ac00cf20aa901dad53cb68baa97cc1f8  gcc/te
*** 33812,33817 ****
--- 35525,35531 ----
  9d10ba95e8f24da60dec445a85298578  gcc/testsuite/gcc.dg/tree-ssa/backprop-5.c
  1c348dd9e53251b100358e06daaa0e82  gcc/testsuite/gcc.dg/tree-ssa/backprop-6.c
  ad829088c2d182fe6e84645dc44f07e6  gcc/testsuite/gcc.dg/tree-ssa/bit-assoc.c
+ 7ad8d748f571e7a17cc0495c3da36812  gcc/testsuite/gcc.dg/tree-ssa/bitops-1.c
  44bd2d4a00e9c35b630f563007d3d516  gcc/testsuite/gcc.dg/tree-ssa/bitwise-sink.c
  2ecf267e7c02e16be8be3c79c3e74dab  gcc/testsuite/gcc.dg/tree-ssa/bool-1.c
  2fbcc9d1e1290309e1f23fa115b1f65d  gcc/testsuite/gcc.dg/tree-ssa/bool-10.c
*************** e867184736b513170c0f3bc6ad396d21  gcc/te
*** 33837,33882 ****
  cc227fc1cc6d10a58e03dcd84a92a069  gcc/testsuite/gcc.dg/tree-ssa/builtin-snprintf-1.c
  7772c5047d21eb7a33742124a6299efb  gcc/testsuite/gcc.dg/tree-ssa/builtin-snprintf-2.c
  e44bb4ad4c3e2d34436a971260bd2bf8  gcc/testsuite/gcc.dg/tree-ssa/builtin-snprintf-3.c
! 61f37614366af07d2c62ba285025c443  gcc/testsuite/gcc.dg/tree-ssa/builtin-snprintf-warn-1.c
! 49bcfdd05cf5b5274b0cd5edde4bed46  gcc/testsuite/gcc.dg/tree-ssa/builtin-snprintf-warn-2.c
! d54aeadf6e9c96f48b83d5b03fdc9137  gcc/testsuite/gcc.dg/tree-ssa/builtin-snprintf-warn-3.c
  e67a31aa2e0193c2835ef0f1f4184420  gcc/testsuite/gcc.dg/tree-ssa/builtin-snprintf-warn-4.c
! b6b82cf096a0a8e1216ea9c34ce3af2b  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-2.c
  fc214128225f2148d7874b404d4c127b  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-3.c
  df45688bd80db8170c6145ac667856b2  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-4.c
! 9460054d430aba5571922d031c4c449a  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-5.c
  fc343ac4dddc2387803c4581508bd355  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-6.c
! dcd85e77226fa5cf2351845db544323a  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-1.c
  d0eac1bdb9d36e35f5bc31abb3ea8f8c  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-10.c
! a41d0ad9cf4ae07ed388688abf6cd5e5  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-11.c
! 56067bf49deb1e87e376828d41d19408  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-12.c
! 052822442ef09b977f94a06f036a5ceb  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-13.c
! 4e8c04e58c4a88673756b363bb4cc61b  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-14.c
! dc53aea59c2586a5eb68b2a562c5ec63  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-15.c
  dcbfb0ac8b9b251d20b7196b05527c1a  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-16.c
  6c42388eaa7f77966a40520aa80dc9cc  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-17.c
! a5f2ac2cc8ee01318e0b0b71da8764a4  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-2.c
! ccdc5f3bef90f78712be795cc85eb871  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-3.c
  b3be1085d438fe322d879ca9939a97cc  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-4.c
  1021b0c3252fc7ef97a7fe99cfcc5ac6  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-5.c
  c28ce339deffeb750f2c7f2cb8c8aa31  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-6.c
  4d77418b424d39971eb2e04091915d4a  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-7.c
  c96169d5c29c6dc315a817531e40c48b  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-8.c
! 1df7e3451a7f12cecf63eddca358b2fa  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-9.c
  bfcdbdbfa936e92c1cfd32916ccb855c  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf.c
  f22d4bb060b76be93303eb733dde236d  gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-1.c
  9df35f57df940eb42a44144ca85a6c3e  gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-chk-1.c
  bd0e09f37c905aa13bbb2d522a84d767  gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-1.c
  435b64746afba8c4755679ab7ad1358d  gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-chk-1.c
  aeea5f7137fe38c1de403df2897890fe  gcc/testsuite/gcc.dg/tree-ssa/builtins-folding-generic.c
! a452bc118e9f0706ab1085684f41afe2  gcc/testsuite/gcc.dg/tree-ssa/builtins-folding-gimple-ub.c
  7dee8398848f696ea4d8ac959ee7a60a  gcc/testsuite/gcc.dg/tree-ssa/builtins-folding-gimple.c
  e63ccfba7faa0464680f2aaeb88d32e9  gcc/testsuite/gcc.dg/tree-ssa/calloc-1.c
  60199bed80e510c230537c5f4d852a5b  gcc/testsuite/gcc.dg/tree-ssa/calloc-2.c
  b5bac817fa7c7a456a8e73848dfde207  gcc/testsuite/gcc.dg/tree-ssa/calloc-3.c
  6fcdc3ce00d06104607909b512da9a61  gcc/testsuite/gcc.dg/tree-ssa/cfgcleanup-1.c
  33f85eb0abc0ef1a76d386a351d636de  gcc/testsuite/gcc.dg/tree-ssa/cmp-1.c
  17cc430b53e3e2e80905a2c06ee4bc48  gcc/testsuite/gcc.dg/tree-ssa/cmpexactdiv.c
  4e7da3b115b0ee1e9d743812b90a080f  gcc/testsuite/gcc.dg/tree-ssa/coalesce-1.c
  0f9280d2d4d6003b617da13c27be1ace  gcc/testsuite/gcc.dg/tree-ssa/coalesce-2.c
  7e54b8dc5db70c6c8e813294f0006bef  gcc/testsuite/gcc.dg/tree-ssa/col-1.c
--- 35551,35605 ----
  cc227fc1cc6d10a58e03dcd84a92a069  gcc/testsuite/gcc.dg/tree-ssa/builtin-snprintf-1.c
  7772c5047d21eb7a33742124a6299efb  gcc/testsuite/gcc.dg/tree-ssa/builtin-snprintf-2.c
  e44bb4ad4c3e2d34436a971260bd2bf8  gcc/testsuite/gcc.dg/tree-ssa/builtin-snprintf-3.c
! 954f09e6ec4b6f7a7039177862222216  gcc/testsuite/gcc.dg/tree-ssa/builtin-snprintf-warn-1.c
! 89ad12f408683221f73c45c33f86609c  gcc/testsuite/gcc.dg/tree-ssa/builtin-snprintf-warn-2.c
! 7c69f124e3e752a29200032213b8fd70  gcc/testsuite/gcc.dg/tree-ssa/builtin-snprintf-warn-3.c
  e67a31aa2e0193c2835ef0f1f4184420  gcc/testsuite/gcc.dg/tree-ssa/builtin-snprintf-warn-4.c
! 7310771c13a5e583d4f6de1a4bb4b694  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-2.c
  fc214128225f2148d7874b404d4c127b  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-3.c
  df45688bd80db8170c6145ac667856b2  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-4.c
! 761414c30f0c96c9ad06d84337daeb0d  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-5.c
  fc343ac4dddc2387803c4581508bd355  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-6.c
! 25a22ef7e096aa5c4a5ec323a10eb1ee  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-7.c
! 3f1747c36bfe6b3fd2235e695edcaa02  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-8.c
! 4f2fca68b86768c3d75020b343f37cbe  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-1.c
  d0eac1bdb9d36e35f5bc31abb3ea8f8c  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-10.c
! 757dec219a493591de22ea5af80a23a2  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-11.c
! c7f97a6e2a77945ebe161e237b31e840  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-12.c
! 69b4968b119665eae87dd9df63172bdf  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-13.c
! 608826ad8d221f4cfda370543aa5db82  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-14.c
! d1a0d0cd159e09f5b65f2e0045185088  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-15.c
  dcbfb0ac8b9b251d20b7196b05527c1a  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-16.c
  6c42388eaa7f77966a40520aa80dc9cc  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-17.c
! 9d94bec79f28d2a94329eec777e107b8  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-18.c
! 4fa590c4c00bd46746427d26550420cd  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-19.c
! 1d56c485be27dd70832489d589e9cb8f  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-2.c
! 74c6e20b43d8ace1e28d207663b27592  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-3.c
  b3be1085d438fe322d879ca9939a97cc  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-4.c
  1021b0c3252fc7ef97a7fe99cfcc5ac6  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-5.c
  c28ce339deffeb750f2c7f2cb8c8aa31  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-6.c
  4d77418b424d39971eb2e04091915d4a  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-7.c
  c96169d5c29c6dc315a817531e40c48b  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-8.c
! 872985c14c0a1024ddaf7e02e728827a  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-9.c
  bfcdbdbfa936e92c1cfd32916ccb855c  gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf.c
  f22d4bb060b76be93303eb733dde236d  gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-1.c
  9df35f57df940eb42a44144ca85a6c3e  gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-chk-1.c
  bd0e09f37c905aa13bbb2d522a84d767  gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-1.c
  435b64746afba8c4755679ab7ad1358d  gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-chk-1.c
  aeea5f7137fe38c1de403df2897890fe  gcc/testsuite/gcc.dg/tree-ssa/builtins-folding-generic.c
! 481ec0a559daa3d23650750794586529  gcc/testsuite/gcc.dg/tree-ssa/builtins-folding-gimple-2.c
! d60687d3346161f39aee81b214d1486d  gcc/testsuite/gcc.dg/tree-ssa/builtins-folding-gimple-3.c
! 679690a56da936dddc3b9c7c3f83d768  gcc/testsuite/gcc.dg/tree-ssa/builtins-folding-gimple-ub.c
  7dee8398848f696ea4d8ac959ee7a60a  gcc/testsuite/gcc.dg/tree-ssa/builtins-folding-gimple.c
  e63ccfba7faa0464680f2aaeb88d32e9  gcc/testsuite/gcc.dg/tree-ssa/calloc-1.c
  60199bed80e510c230537c5f4d852a5b  gcc/testsuite/gcc.dg/tree-ssa/calloc-2.c
  b5bac817fa7c7a456a8e73848dfde207  gcc/testsuite/gcc.dg/tree-ssa/calloc-3.c
  6fcdc3ce00d06104607909b512da9a61  gcc/testsuite/gcc.dg/tree-ssa/cfgcleanup-1.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
  17cc430b53e3e2e80905a2c06ee4bc48  gcc/testsuite/gcc.dg/tree-ssa/cmpexactdiv.c
+ 9e6b10b925bffb8b219e9fba3c7553dd  gcc/testsuite/gcc.dg/tree-ssa/cmpmul-1.c
  4e7da3b115b0ee1e9d743812b90a080f  gcc/testsuite/gcc.dg/tree-ssa/coalesce-1.c
  0f9280d2d4d6003b617da13c27be1ace  gcc/testsuite/gcc.dg/tree-ssa/coalesce-2.c
  7e54b8dc5db70c6c8e813294f0006bef  gcc/testsuite/gcc.dg/tree-ssa/col-1.c
*************** d046933f0c0499aabaad4a49f7df472e  gcc/te
*** 33888,33905 ****
  c51305b57b6a71a526e50a8fb191e467  gcc/testsuite/gcc.dg/tree-ssa/complex-6.c
  51573fc56543beb840d17e34cd36104b  gcc/testsuite/gcc.dg/tree-ssa/complex-7.c
  0214eb3ac3488e88cb4deee3fc5dbb83  gcc/testsuite/gcc.dg/tree-ssa/copy-headers.c
  cb85a2159e6429ded025be9506d3d3ec  gcc/testsuite/gcc.dg/tree-ssa/cswtch-2.c
  59e69728c798843be3e7e01a41019422  gcc/testsuite/gcc.dg/tree-ssa/cswtch.c
! b45cd751c5342118abf6a56aa1902225  gcc/testsuite/gcc.dg/tree-ssa/cunroll-1.c
! b8bab70c8802b5ad984d1daff999316d  gcc/testsuite/gcc.dg/tree-ssa/cunroll-10.c
  5e78a0f7c81199d9572e9eb72b2b9b6c  gcc/testsuite/gcc.dg/tree-ssa/cunroll-11.c
! 219ee2b42c6d74e42037b1dc73e76320  gcc/testsuite/gcc.dg/tree-ssa/cunroll-12.c
! f44860b7ccc420dedbf0a10665606f92  gcc/testsuite/gcc.dg/tree-ssa/cunroll-13.c
! 4dd22a33238b9495aab8da75d305b176  gcc/testsuite/gcc.dg/tree-ssa/cunroll-14.c
! dff0bd47745e7b7cb74006456469cc72  gcc/testsuite/gcc.dg/tree-ssa/cunroll-2.c
! f42882f3b4d4fc374985ac7c7c4a2e02  gcc/testsuite/gcc.dg/tree-ssa/cunroll-3.c
  61c6f1980e2718be48b32a9a81b98953  gcc/testsuite/gcc.dg/tree-ssa/cunroll-4.c
! cb287b78e9c16c88cd1a984f57eb4612  gcc/testsuite/gcc.dg/tree-ssa/cunroll-5.c
  fab99054af3156a472acbc0e722f59a2  gcc/testsuite/gcc.dg/tree-ssa/cunroll-9.c
  f1399b93e28ce7707f9be6db7d28b2d2  gcc/testsuite/gcc.dg/tree-ssa/dce-1.c
  31c21f931e0ddb65367d987da500b4cb  gcc/testsuite/gcc.dg/tree-ssa/divide-1.c
--- 35611,35634 ----
  c51305b57b6a71a526e50a8fb191e467  gcc/testsuite/gcc.dg/tree-ssa/complex-6.c
  51573fc56543beb840d17e34cd36104b  gcc/testsuite/gcc.dg/tree-ssa/complex-7.c
  0214eb3ac3488e88cb4deee3fc5dbb83  gcc/testsuite/gcc.dg/tree-ssa/copy-headers.c
+ e3e1a713fc6a25f59693486f98e7f300  gcc/testsuite/gcc.dg/tree-ssa/copy-sign-1.c
+ 72628eb5d911d52101f6a4a6daecdcbc  gcc/testsuite/gcc.dg/tree-ssa/copy-sign-2.c
+ 3e33363df98971ca2810932b7646d933  gcc/testsuite/gcc.dg/tree-ssa/counts-1.c
  cb85a2159e6429ded025be9506d3d3ec  gcc/testsuite/gcc.dg/tree-ssa/cswtch-2.c
+ eff8f806b1a91fc87bafb5aaff55fd32  gcc/testsuite/gcc.dg/tree-ssa/cswtch-3.c
+ 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
! 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
! de47e1dc744794c6364cf571cd32858d  gcc/testsuite/gcc.dg/tree-ssa/cunroll-12.c
! d8267fa752a3fbad729033d94aa51136  gcc/testsuite/gcc.dg/tree-ssa/cunroll-13.c
! b1c253fe95960a7923e13899ba946ba6  gcc/testsuite/gcc.dg/tree-ssa/cunroll-14.c
! d109cdac0850a2501dddd3084029062b  gcc/testsuite/gcc.dg/tree-ssa/cunroll-2.c
! 3830867226119f3e45719fe4b6cc6781  gcc/testsuite/gcc.dg/tree-ssa/cunroll-3.c
  61c6f1980e2718be48b32a9a81b98953  gcc/testsuite/gcc.dg/tree-ssa/cunroll-4.c
! 647afc55a08f1ca45c92ce44d92bc258  gcc/testsuite/gcc.dg/tree-ssa/cunroll-5.c
  fab99054af3156a472acbc0e722f59a2  gcc/testsuite/gcc.dg/tree-ssa/cunroll-9.c
  f1399b93e28ce7707f9be6db7d28b2d2  gcc/testsuite/gcc.dg/tree-ssa/dce-1.c
  31c21f931e0ddb65367d987da500b4cb  gcc/testsuite/gcc.dg/tree-ssa/divide-1.c
*************** d9df64c73cfb44c982ea8777bc83598c  gcc/te
*** 33909,33925 ****
  a2e7a9267052ac4ae19d933a4fe39c12  gcc/testsuite/gcc.dg/tree-ssa/divide-5.c
  1847dfdfccf26ff0bc2a0194b557f4c9  gcc/testsuite/gcc.dg/tree-ssa/dse-points-to.c
  0a7ff4f8ff2cbc2ad6ac233489b11964  gcc/testsuite/gcc.dg/tree-ssa/dump-1.c
! f9ca0df306d3eedb068287cb44480372  gcc/testsuite/gcc.dg/tree-ssa/dump-2.c
  95d0cf86fdcbff25bdbaa591d140348e  gcc/testsuite/gcc.dg/tree-ssa/dump-3.c
  6d8e0fe5d4a6a949bac728d01d0cc15c  gcc/testsuite/gcc.dg/tree-ssa/evrp1.c
  66fc8039877c2eaae747c7a2afd5b81a  gcc/testsuite/gcc.dg/tree-ssa/evrp2.c
  b6c28d0ad5cffe5c9999fda917bb1c14  gcc/testsuite/gcc.dg/tree-ssa/evrp3.c
  4e43a9dd7429fdebfb25c440708f3df9  gcc/testsuite/gcc.dg/tree-ssa/evrp4.c
  096e47ae0108919a91376d881679eacf  gcc/testsuite/gcc.dg/tree-ssa/evrp6.c
  33a3fcae747cee654667314a41d7dae6  gcc/testsuite/gcc.dg/tree-ssa/flatten-1.c
  5aa642235531b56fe71d129b3128e653  gcc/testsuite/gcc.dg/tree-ssa/flatten-2.c
  7013e9405bbea7d794f84d52c038fb91  gcc/testsuite/gcc.dg/tree-ssa/flatten-3.c
! ce9e6c9bd3365d6f53410b792348cee0  gcc/testsuite/gcc.dg/tree-ssa/fnsplit-1.c
  55eb8b4695bc9df408b84073a57d4125  gcc/testsuite/gcc.dg/tree-ssa/foldaddr-1.c
  1ace6320b3c64ddcefd35277803fef7b  gcc/testsuite/gcc.dg/tree-ssa/foldcast-1.c
  e908bd658a722def6a98cac1b55ee435  gcc/testsuite/gcc.dg/tree-ssa/foldconst-1.c
--- 35638,35658 ----
  a2e7a9267052ac4ae19d933a4fe39c12  gcc/testsuite/gcc.dg/tree-ssa/divide-5.c
  1847dfdfccf26ff0bc2a0194b557f4c9  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
  95d0cf86fdcbff25bdbaa591d140348e  gcc/testsuite/gcc.dg/tree-ssa/dump-3.c
  6d8e0fe5d4a6a949bac728d01d0cc15c  gcc/testsuite/gcc.dg/tree-ssa/evrp1.c
  66fc8039877c2eaae747c7a2afd5b81a  gcc/testsuite/gcc.dg/tree-ssa/evrp2.c
  b6c28d0ad5cffe5c9999fda917bb1c14  gcc/testsuite/gcc.dg/tree-ssa/evrp3.c
  4e43a9dd7429fdebfb25c440708f3df9  gcc/testsuite/gcc.dg/tree-ssa/evrp4.c
  096e47ae0108919a91376d881679eacf  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
+ 7214e1693ae498274c231fb69f1c6c70  gcc/testsuite/gcc.dg/tree-ssa/evrp9.c
  33a3fcae747cee654667314a41d7dae6  gcc/testsuite/gcc.dg/tree-ssa/flatten-1.c
  5aa642235531b56fe71d129b3128e653  gcc/testsuite/gcc.dg/tree-ssa/flatten-2.c
  7013e9405bbea7d794f84d52c038fb91  gcc/testsuite/gcc.dg/tree-ssa/flatten-3.c
! d6fa635b314b00f1469f213d3c7adaf5  gcc/testsuite/gcc.dg/tree-ssa/fnsplit-1.c
! e5035d32dc605a277b663840398291b0  gcc/testsuite/gcc.dg/tree-ssa/fnsplit-2.c
  55eb8b4695bc9df408b84073a57d4125  gcc/testsuite/gcc.dg/tree-ssa/foldaddr-1.c
  1ace6320b3c64ddcefd35277803fef7b  gcc/testsuite/gcc.dg/tree-ssa/foldcast-1.c
  e908bd658a722def6a98cac1b55ee435  gcc/testsuite/gcc.dg/tree-ssa/foldconst-1.c
*************** b5ec53b49ac5ce1087be71119757fa66  gcc/te
*** 33958,33963 ****
--- 35691,35697 ----
  cde9d104bd184f9fe53748afa894a131  gcc/testsuite/gcc.dg/tree-ssa/forwprop-34.c
  297cdf8d20fe041a24b1faafdae18fb4  gcc/testsuite/gcc.dg/tree-ssa/forwprop-35.c
  2c13f8155d1641fb8b325f67a426b900  gcc/testsuite/gcc.dg/tree-ssa/forwprop-36.c
+ c4d85f1a0ac2c091e026cf0d052e2f21  gcc/testsuite/gcc.dg/tree-ssa/forwprop-37.c
  cb909e7812f73f90414b63042c95d199  gcc/testsuite/gcc.dg/tree-ssa/forwprop-4.c
  d56422e63543fcf4bf4b78d825c534da  gcc/testsuite/gcc.dg/tree-ssa/forwprop-5.c
  57a92753d467f54839b9072865198245  gcc/testsuite/gcc.dg/tree-ssa/forwprop-6.c
*************** f6dee11122447ee6efa4b79aba910b8c  gcc/te
*** 33975,33999 ****
  c17b9d80f40e79087fe5b8d43eb98d13  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-28.c
  29a72645c60c02fad2b7a0e19384bc7f  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-32.c
  c700544c3e68a401546cefbdad359728  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-33.c
! 697b756ebf89cda8b855dec85b2ddc26  gcc/testsuite/gcc.dg/tree-ssa/ifc-10.c
! d4511c719f57afaf3b5ab76e53a12ae1  gcc/testsuite/gcc.dg/tree-ssa/ifc-11.c
! 559c7880664a43b4ed683dff3a95f153  gcc/testsuite/gcc.dg/tree-ssa/ifc-12.c
! 5f05222ce448a38328ac5c8fd1d3ce29  gcc/testsuite/gcc.dg/tree-ssa/ifc-20040816-1.c
! 9206098471d46d61fd0b41bd25e6a122  gcc/testsuite/gcc.dg/tree-ssa/ifc-20040816-2.c
  ee0564e9d214fe5d7c14a3fcf3790afe  gcc/testsuite/gcc.dg/tree-ssa/ifc-3.c
  2d051374dcbdc8f06faa1a30f4336ac9  gcc/testsuite/gcc.dg/tree-ssa/ifc-4.c
! 7f43a8e2c3e8943b6fdb365abf3e2504  gcc/testsuite/gcc.dg/tree-ssa/ifc-5.c
  7cc691bc27d467798970f0d5291dcb05  gcc/testsuite/gcc.dg/tree-ssa/ifc-6.c
  2ea96dd2fa029d4753cc01660f4209b7  gcc/testsuite/gcc.dg/tree-ssa/ifc-7.c
! a13da3515ff8f6e5ebbdbf341b183295  gcc/testsuite/gcc.dg/tree-ssa/ifc-8.c
! bd6a04d9a8d4e579bb23b05813e4445e  gcc/testsuite/gcc.dg/tree-ssa/ifc-9.c
! 5d480e295c92dba6dba658a2ae829248  gcc/testsuite/gcc.dg/tree-ssa/ifc-cd.c
  bb4c4159dc115e04e1111cbc571e5dff  gcc/testsuite/gcc.dg/tree-ssa/ifc-pr44710.c
  3bdc6528256a0e141670e969185d7b87  gcc/testsuite/gcc.dg/tree-ssa/ifc-pr47271.c
! 7f111ea9a7fe0506170afa11734b5c05  gcc/testsuite/gcc.dg/tree-ssa/ifc-pr56541.c
! b6d0ebbb38c3debf4a94af4e9689dc44  gcc/testsuite/gcc.dg/tree-ssa/ifc-pr68583.c
! cc14ac7dc606646bf43068a2d97a6239  gcc/testsuite/gcc.dg/tree-ssa/ifc-pr69489-1.c
! f36f701ca695be5db5363ba03ac4b47f  gcc/testsuite/gcc.dg/tree-ssa/ifc-pr69489-2.c
  408be13ffcf3fa2e3e04aaf399eaf89f  gcc/testsuite/gcc.dg/tree-ssa/ifc-pr71503.c
  8f97d9a50bdf036c88ea79617b4bea19  gcc/testsuite/gcc.dg/tree-ssa/ifc-pr71683.c
  9863a7166ce42777205a510fff36e2ee  gcc/testsuite/gcc.dg/tree-ssa/inline-1.c
--- 35709,35733 ----
  c17b9d80f40e79087fe5b8d43eb98d13  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-28.c
  29a72645c60c02fad2b7a0e19384bc7f  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-32.c
  c700544c3e68a401546cefbdad359728  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-33.c
! b2e6051605666541fc80985492b002a4  gcc/testsuite/gcc.dg/tree-ssa/ifc-10.c
! 45abed04f141d506c77bb20d255d1d0c  gcc/testsuite/gcc.dg/tree-ssa/ifc-11.c
! d44b6872baa4beaa748572b6e08714e4  gcc/testsuite/gcc.dg/tree-ssa/ifc-12.c
! 536d9dd34ec278bfbe9c189f38850454  gcc/testsuite/gcc.dg/tree-ssa/ifc-20040816-1.c
! b2ff4c71a123464796ac48e111522544  gcc/testsuite/gcc.dg/tree-ssa/ifc-20040816-2.c
  ee0564e9d214fe5d7c14a3fcf3790afe  gcc/testsuite/gcc.dg/tree-ssa/ifc-3.c
  2d051374dcbdc8f06faa1a30f4336ac9  gcc/testsuite/gcc.dg/tree-ssa/ifc-4.c
! 8b1b8f87a0d35e4d002fef5ed5a2ef79  gcc/testsuite/gcc.dg/tree-ssa/ifc-5.c
  7cc691bc27d467798970f0d5291dcb05  gcc/testsuite/gcc.dg/tree-ssa/ifc-6.c
  2ea96dd2fa029d4753cc01660f4209b7  gcc/testsuite/gcc.dg/tree-ssa/ifc-7.c
! 7b9cbb6152aed4d100e0320f7cb33ebd  gcc/testsuite/gcc.dg/tree-ssa/ifc-8.c
! db9d8ff1cb509ec99d057dccc7818b85  gcc/testsuite/gcc.dg/tree-ssa/ifc-9.c
! b0e44dd2973da0b7e05e9012e696234b  gcc/testsuite/gcc.dg/tree-ssa/ifc-cd.c
  bb4c4159dc115e04e1111cbc571e5dff  gcc/testsuite/gcc.dg/tree-ssa/ifc-pr44710.c
  3bdc6528256a0e141670e969185d7b87  gcc/testsuite/gcc.dg/tree-ssa/ifc-pr47271.c
! 78658701c60ea1e6a7f1267d7565bc32  gcc/testsuite/gcc.dg/tree-ssa/ifc-pr56541.c
! e801619e0f762ef77d5184a84e241aaf  gcc/testsuite/gcc.dg/tree-ssa/ifc-pr68583.c
! 2f5f4a1de29bd3b15413997683308a0f  gcc/testsuite/gcc.dg/tree-ssa/ifc-pr69489-1.c
! f13f933c98b03cde87730a731e3f3ec1  gcc/testsuite/gcc.dg/tree-ssa/ifc-pr69489-2.c
  408be13ffcf3fa2e3e04aaf399eaf89f  gcc/testsuite/gcc.dg/tree-ssa/ifc-pr71503.c
  8f97d9a50bdf036c88ea79617b4bea19  gcc/testsuite/gcc.dg/tree-ssa/ifc-pr71683.c
  9863a7166ce42777205a510fff36e2ee  gcc/testsuite/gcc.dg/tree-ssa/inline-1.c
*************** e1aa4da1fccf6c1381e18889b6eb6b7b  gcc/te
*** 34011,34023 ****
  5b23b073bf0eb14ec16d5475e0244d1f  gcc/testsuite/gcc.dg/tree-ssa/inline_asm-2.c
  57e1ee757f109458b4014b2607286ece  gcc/testsuite/gcc.dg/tree-ssa/integer-addr.c
  c976bad1cd05db7c6e1a6af67ae0ad02  gcc/testsuite/gcc.dg/tree-ssa/interposition.c
! 0f5e654b39447931e0f531e70b8d6b0f  gcc/testsuite/gcc.dg/tree-ssa/ipa-cp-1.c
  42336a79a969399469337dd359202bb9  gcc/testsuite/gcc.dg/tree-ssa/ipa-reference-1.c
  f4f040fb7e3f3336df62293188ee6975  gcc/testsuite/gcc.dg/tree-ssa/ipa-split-1.c
  ccb8f635d19f61cf4bd089a3b2be213d  gcc/testsuite/gcc.dg/tree-ssa/ipa-split-2.c
  cf74c9236e178205a34bfa9fbaee0327  gcc/testsuite/gcc.dg/tree-ssa/ipa-split-3.c
  a32fe498a999f646864ff72a2d31e12a  gcc/testsuite/gcc.dg/tree-ssa/ipa-split-4.c
! dde8476a3ba3dfe36961daafcc0cb30e  gcc/testsuite/gcc.dg/tree-ssa/ipa-split-5.c
  d1db063972f88585b4ca5e204e4e85a0  gcc/testsuite/gcc.dg/tree-ssa/ipa-split-6.c
  67d1e8ae3969150d0e3e9d70d189b1bb  gcc/testsuite/gcc.dg/tree-ssa/isolate-1.c
  a5cf39fc5fc0ef9007a9935dadf04c3c  gcc/testsuite/gcc.dg/tree-ssa/isolate-2.c
--- 35745,35757 ----
  5b23b073bf0eb14ec16d5475e0244d1f  gcc/testsuite/gcc.dg/tree-ssa/inline_asm-2.c
  57e1ee757f109458b4014b2607286ece  gcc/testsuite/gcc.dg/tree-ssa/integer-addr.c
  c976bad1cd05db7c6e1a6af67ae0ad02  gcc/testsuite/gcc.dg/tree-ssa/interposition.c
! 5b0d0dcdefb6335a8ffeb43d8b599672  gcc/testsuite/gcc.dg/tree-ssa/ipa-cp-1.c
  42336a79a969399469337dd359202bb9  gcc/testsuite/gcc.dg/tree-ssa/ipa-reference-1.c
  f4f040fb7e3f3336df62293188ee6975  gcc/testsuite/gcc.dg/tree-ssa/ipa-split-1.c
  ccb8f635d19f61cf4bd089a3b2be213d  gcc/testsuite/gcc.dg/tree-ssa/ipa-split-2.c
  cf74c9236e178205a34bfa9fbaee0327  gcc/testsuite/gcc.dg/tree-ssa/ipa-split-3.c
  a32fe498a999f646864ff72a2d31e12a  gcc/testsuite/gcc.dg/tree-ssa/ipa-split-4.c
! 782f8d6b3df4d4a4341725d6cbf599d3  gcc/testsuite/gcc.dg/tree-ssa/ipa-split-5.c
  d1db063972f88585b4ca5e204e4e85a0  gcc/testsuite/gcc.dg/tree-ssa/ipa-split-6.c
  67d1e8ae3969150d0e3e9d70d189b1bb  gcc/testsuite/gcc.dg/tree-ssa/isolate-1.c
  a5cf39fc5fc0ef9007a9935dadf04c3c  gcc/testsuite/gcc.dg/tree-ssa/isolate-2.c
*************** b287d43359cd5843f8b77d977b005de3  gcc/te
*** 34036,34058 ****
  d9fc0d1f82d1416e50082fa7fdf01efe  gcc/testsuite/gcc.dg/tree-ssa/ivopt_mult_1.c
  8ab4a3334304ddbfad3c5838f97f7875  gcc/testsuite/gcc.dg/tree-ssa/ivopt_mult_2.c
  5041ebf3f5faa2d0e57611af93a05a35  gcc/testsuite/gcc.dg/tree-ssa/ivopt_mult_3.c
! 213dc8d2576544b8b925ae49361e53f2  gcc/testsuite/gcc.dg/tree-ssa/ivopt_mult_4.c
  867f54c8c7d3469d84ed3b268ba61476  gcc/testsuite/gcc.dg/tree-ssa/ivopts-1.c
  312238955a5c96ed7be45fe8b9c67da6  gcc/testsuite/gcc.dg/tree-ssa/ivopts-2.c
  a147ee76033892e79ef4309028e743a0  gcc/testsuite/gcc.dg/tree-ssa/ivopts-3.c
  4ad9364b0c09a0471b394cf3347e334a  gcc/testsuite/gcc.dg/tree-ssa/ivopts-4.c
  9e9bec4c515075b6d8265930a3cd28c5  gcc/testsuite/gcc.dg/tree-ssa/ivopts-lower_base.c
! 5aeccafea9cc454d88e09a6954876ebb  gcc/testsuite/gcc.dg/tree-ssa/ivopts-lt-2.c
  ae034b539df1f6242a2a817cae19c30f  gcc/testsuite/gcc.dg/tree-ssa/ivopts-lt.c
  2fa70c1f0fbe2b1a406c06262ff11c39  gcc/testsuite/gcc.dg/tree-ssa/ldist-1.c
  f5c7001f0585b059bf58fefe90aae5e9  gcc/testsuite/gcc.dg/tree-ssa/ldist-10.c
  ec73d985b059fedd7c228c94cd226be6  gcc/testsuite/gcc.dg/tree-ssa/ldist-11.c
! 7a45d93a61406aadb19e61013b52ee85  gcc/testsuite/gcc.dg/tree-ssa/ldist-12.c
! cc672c657be6b77a465a341cd3335e89  gcc/testsuite/gcc.dg/tree-ssa/ldist-13.c
! 191ce0d5202471ab16ead402d926c4b4  gcc/testsuite/gcc.dg/tree-ssa/ldist-14.c
  f22dbba619bbb2aca570209822adcb2b  gcc/testsuite/gcc.dg/tree-ssa/ldist-15.c
! 89828e59c47d1ffc79f527ec12463c69  gcc/testsuite/gcc.dg/tree-ssa/ldist-16.c
! 43f1517cab17f09e93fabdbddd034531  gcc/testsuite/gcc.dg/tree-ssa/ldist-17.c
  963be7baffb40d1a01ead0b67af4042c  gcc/testsuite/gcc.dg/tree-ssa/ldist-18.c
  7f48df842f8253477862ec58274f3766  gcc/testsuite/gcc.dg/tree-ssa/ldist-19.c
  81f177b0c646b7b5de644a90c4cf325b  gcc/testsuite/gcc.dg/tree-ssa/ldist-1a.c
--- 35770,35792 ----
  d9fc0d1f82d1416e50082fa7fdf01efe  gcc/testsuite/gcc.dg/tree-ssa/ivopt_mult_1.c
  8ab4a3334304ddbfad3c5838f97f7875  gcc/testsuite/gcc.dg/tree-ssa/ivopt_mult_2.c
  5041ebf3f5faa2d0e57611af93a05a35  gcc/testsuite/gcc.dg/tree-ssa/ivopt_mult_3.c
! 464b02740233ca8c8bc9313e9f3535e5  gcc/testsuite/gcc.dg/tree-ssa/ivopt_mult_4.c
  867f54c8c7d3469d84ed3b268ba61476  gcc/testsuite/gcc.dg/tree-ssa/ivopts-1.c
  312238955a5c96ed7be45fe8b9c67da6  gcc/testsuite/gcc.dg/tree-ssa/ivopts-2.c
  a147ee76033892e79ef4309028e743a0  gcc/testsuite/gcc.dg/tree-ssa/ivopts-3.c
  4ad9364b0c09a0471b394cf3347e334a  gcc/testsuite/gcc.dg/tree-ssa/ivopts-4.c
  9e9bec4c515075b6d8265930a3cd28c5  gcc/testsuite/gcc.dg/tree-ssa/ivopts-lower_base.c
! 39750027ac8354d21ad7ade534814a7a  gcc/testsuite/gcc.dg/tree-ssa/ivopts-lt-2.c
  ae034b539df1f6242a2a817cae19c30f  gcc/testsuite/gcc.dg/tree-ssa/ivopts-lt.c
  2fa70c1f0fbe2b1a406c06262ff11c39  gcc/testsuite/gcc.dg/tree-ssa/ldist-1.c
  f5c7001f0585b059bf58fefe90aae5e9  gcc/testsuite/gcc.dg/tree-ssa/ldist-10.c
  ec73d985b059fedd7c228c94cd226be6  gcc/testsuite/gcc.dg/tree-ssa/ldist-11.c
! 66ef6dfcc17cf3ae0cd44d30f07da55f  gcc/testsuite/gcc.dg/tree-ssa/ldist-12.c
! 1de8b24ce5ce5e1a1970c565fb42701c  gcc/testsuite/gcc.dg/tree-ssa/ldist-13.c
! 90df8c56e0d9d1b847c85f7e388b4629  gcc/testsuite/gcc.dg/tree-ssa/ldist-14.c
  f22dbba619bbb2aca570209822adcb2b  gcc/testsuite/gcc.dg/tree-ssa/ldist-15.c
! cce4110bb618f61d60291695ddf3d9a8  gcc/testsuite/gcc.dg/tree-ssa/ldist-16.c
! 426e00ecda373a7d576a6234d9dacf21  gcc/testsuite/gcc.dg/tree-ssa/ldist-17.c
  963be7baffb40d1a01ead0b67af4042c  gcc/testsuite/gcc.dg/tree-ssa/ldist-18.c
  7f48df842f8253477862ec58274f3766  gcc/testsuite/gcc.dg/tree-ssa/ldist-19.c
  81f177b0c646b7b5de644a90c4cf325b  gcc/testsuite/gcc.dg/tree-ssa/ldist-1a.c
*************** e7f1d9aa62f4ef95b6264aa71e4a8684  gcc/te
*** 34062,34077 ****
  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
! 84f1ad2ac60bfae953e9b63b66ba6edd  gcc/testsuite/gcc.dg/tree-ssa/ldist-25.c
  f45bc27886bcc1aa8adf97eed2655490  gcc/testsuite/gcc.dg/tree-ssa/ldist-3.c
! 83a7d9b7cf9674995933303e216edc05  gcc/testsuite/gcc.dg/tree-ssa/ldist-4.c
  3661b05c66bd70675e28123e086b5032  gcc/testsuite/gcc.dg/tree-ssa/ldist-5.c
! 91e91ec85407582a6ddc19b9c9c1284d  gcc/testsuite/gcc.dg/tree-ssa/ldist-6.c
! 877824b6c0f38d35d387be391fb8cd23  gcc/testsuite/gcc.dg/tree-ssa/ldist-7.c
  cb3f41761a6ebc49e3f09eea34e14823  gcc/testsuite/gcc.dg/tree-ssa/ldist-8.c
  954cf334b3e76720f290bf8bd4eb603b  gcc/testsuite/gcc.dg/tree-ssa/ldist-9.c
  327e2f57b705fe0a234c5b99b74dc2de  gcc/testsuite/gcc.dg/tree-ssa/ldist-pr45948-2.c
! 732cd99c7adfa50ed029048b98ce5e4b  gcc/testsuite/gcc.dg/tree-ssa/ldist-pr45948.c
  7f7b870f3bea981b97962da0c2ac993f  gcc/testsuite/gcc.dg/tree-ssa/leaf.c
  fd0231fe67a4701b77a791b5dae02c7c  gcc/testsuite/gcc.dg/tree-ssa/loadpre1.c
  476fae9706651a37548148d4469bceff  gcc/testsuite/gcc.dg/tree-ssa/loadpre10.c
--- 35796,35822 ----
  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
! cb09fa4b370d75fc222bc4c1bbb6890c  gcc/testsuite/gcc.dg/tree-ssa/ldist-26.c
! 0c9e3381a31e26b8c588f12eb8a4310e  gcc/testsuite/gcc.dg/tree-ssa/ldist-27.c
! b3e70cc563779dce3c93c14597ccbb1a  gcc/testsuite/gcc.dg/tree-ssa/ldist-28.c
! 97c5f7fcd24aeb0e740bb2c08c1354cd  gcc/testsuite/gcc.dg/tree-ssa/ldist-29.c
  f45bc27886bcc1aa8adf97eed2655490  gcc/testsuite/gcc.dg/tree-ssa/ldist-3.c
! 2a158885d698d07dd959851d7f6c5ad1  gcc/testsuite/gcc.dg/tree-ssa/ldist-30.c
! e3f1a326d63f28f3be9a8544a60505aa  gcc/testsuite/gcc.dg/tree-ssa/ldist-31.c
! 7a2f94f5b3baa9f0361ba050afffc320  gcc/testsuite/gcc.dg/tree-ssa/ldist-32.c
! 13bd575a27f795c834b2e19a626f87b5  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
! 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
! 8a84d41353aa3195ea5221d196cf30c0  gcc/testsuite/gcc.dg/tree-ssa/ldist-7.c
  cb3f41761a6ebc49e3f09eea34e14823  gcc/testsuite/gcc.dg/tree-ssa/ldist-8.c
  954cf334b3e76720f290bf8bd4eb603b  gcc/testsuite/gcc.dg/tree-ssa/ldist-9.c
  327e2f57b705fe0a234c5b99b74dc2de  gcc/testsuite/gcc.dg/tree-ssa/ldist-pr45948-2.c
! 016eb8bd8214ac939a7331fddd0a81e0  gcc/testsuite/gcc.dg/tree-ssa/ldist-pr45948.c
  7f7b870f3bea981b97962da0c2ac993f  gcc/testsuite/gcc.dg/tree-ssa/leaf.c
  fd0231fe67a4701b77a791b5dae02c7c  gcc/testsuite/gcc.dg/tree-ssa/loadpre1.c
  476fae9706651a37548148d4469bceff  gcc/testsuite/gcc.dg/tree-ssa/loadpre10.c
*************** f1db6290155ba8e9d0cd994667f58865  gcc/te
*** 34098,34108 ****
  229e6199de2a23fb4a62d8a43f6d9581  gcc/testsuite/gcc.dg/tree-ssa/loadpre7.c
  bfddd90a833039e0cdb4656f4c8f81a1  gcc/testsuite/gcc.dg/tree-ssa/loadpre8.c
  becd89cfd56cc07c9c31fd8fe767e67e  gcc/testsuite/gcc.dg/tree-ssa/local-pure-const.c
! ed4d9de91969f647d4af3c05bf3cf6c0  gcc/testsuite/gcc.dg/tree-ssa/loop-1.c
  bd5fcf46dda92c7571c65d449d28205e  gcc/testsuite/gcc.dg/tree-ssa/loop-10.c
  7b136dc13a3af93299281a6cc8908cb9  gcc/testsuite/gcc.dg/tree-ssa/loop-11.c
  14f9f2d5bc49080ad8ddf44cdfa1744b  gcc/testsuite/gcc.dg/tree-ssa/loop-14.c
! b180fe7f7517b3d61b3dab80fa715c09  gcc/testsuite/gcc.dg/tree-ssa/loop-15.c
  3250c3b50d6fea66e54c1de499097eca  gcc/testsuite/gcc.dg/tree-ssa/loop-16.c
  d561e3f8533493429429c1f643fd5abf  gcc/testsuite/gcc.dg/tree-ssa/loop-17.c
  002fb6027981898caaf402554d30e337  gcc/testsuite/gcc.dg/tree-ssa/loop-18.c
--- 35843,35853 ----
  229e6199de2a23fb4a62d8a43f6d9581  gcc/testsuite/gcc.dg/tree-ssa/loadpre7.c
  bfddd90a833039e0cdb4656f4c8f81a1  gcc/testsuite/gcc.dg/tree-ssa/loadpre8.c
  becd89cfd56cc07c9c31fd8fe767e67e  gcc/testsuite/gcc.dg/tree-ssa/local-pure-const.c
! f02bd2369556a3e3c9b2be2f53746228  gcc/testsuite/gcc.dg/tree-ssa/loop-1.c
  bd5fcf46dda92c7571c65d449d28205e  gcc/testsuite/gcc.dg/tree-ssa/loop-10.c
  7b136dc13a3af93299281a6cc8908cb9  gcc/testsuite/gcc.dg/tree-ssa/loop-11.c
  14f9f2d5bc49080ad8ddf44cdfa1744b  gcc/testsuite/gcc.dg/tree-ssa/loop-14.c
! 51c7295090a1b9900593710842b525a5  gcc/testsuite/gcc.dg/tree-ssa/loop-15.c
  3250c3b50d6fea66e54c1de499097eca  gcc/testsuite/gcc.dg/tree-ssa/loop-16.c
  d561e3f8533493429429c1f643fd5abf  gcc/testsuite/gcc.dg/tree-ssa/loop-17.c
  002fb6027981898caaf402554d30e337  gcc/testsuite/gcc.dg/tree-ssa/loop-18.c
*************** fb12f8c2fc2f9ca9b3682daada1289c8  gcc/te
*** 34111,34117 ****
  e4f34450d5bb0946fb0fcc8bb11f9846  gcc/testsuite/gcc.dg/tree-ssa/loop-20.c
  cd8ab6ba77ad28986317c279250b0bce  gcc/testsuite/gcc.dg/tree-ssa/loop-21.c
  1f6ef18d44db2b97429ce62b431f1d59  gcc/testsuite/gcc.dg/tree-ssa/loop-22.c
! 3246e3e652fb4861c621c5b43b5c3712  gcc/testsuite/gcc.dg/tree-ssa/loop-23.c
  4872ba0b42219cebf0ecec85ea45dc4c  gcc/testsuite/gcc.dg/tree-ssa/loop-24.c
  4e8ca2c9f1fd8ad56af293b22a5a8b78  gcc/testsuite/gcc.dg/tree-ssa/loop-25.c
  e97c0bbfd5118aad5cb0208408f022e2  gcc/testsuite/gcc.dg/tree-ssa/loop-26.c
--- 35856,35862 ----
  e4f34450d5bb0946fb0fcc8bb11f9846  gcc/testsuite/gcc.dg/tree-ssa/loop-20.c
  cd8ab6ba77ad28986317c279250b0bce  gcc/testsuite/gcc.dg/tree-ssa/loop-21.c
  1f6ef18d44db2b97429ce62b431f1d59  gcc/testsuite/gcc.dg/tree-ssa/loop-22.c
! 7d0f56b2466719af24e3538ea1eebfe3  gcc/testsuite/gcc.dg/tree-ssa/loop-23.c
  4872ba0b42219cebf0ecec85ea45dc4c  gcc/testsuite/gcc.dg/tree-ssa/loop-24.c
  4e8ca2c9f1fd8ad56af293b22a5a8b78  gcc/testsuite/gcc.dg/tree-ssa/loop-25.c
  e97c0bbfd5118aad5cb0208408f022e2  gcc/testsuite/gcc.dg/tree-ssa/loop-26.c
*************** ce89d25154d5909623400e7fbd68607a  gcc/te
*** 34143,34167 ****
  0f6ec9444d41b9dd8705e8ce33ea1257  gcc/testsuite/gcc.dg/tree-ssa/loop-bound-4.c
  ea5f8b5ade3a674d82e4721a61ae4348  gcc/testsuite/gcc.dg/tree-ssa/loop-bound-5.c
  60da9819e46ae737a79c3d2fa208f269  gcc/testsuite/gcc.dg/tree-ssa/loop-bound-6.c
  03f2e136e4fd829b170e29613889a81e  gcc/testsuite/gcc.dg/tree-ssa/minmax-1.c
  d84ca5ab9bb6dc91cbdf1b607819bd68  gcc/testsuite/gcc.dg/tree-ssa/minmax-2.c
  374463206f97d422d735a27042841425  gcc/testsuite/gcc.dg/tree-ssa/minmax-loopend.c
  dd531f5928d5579a42c6d936314756c1  gcc/testsuite/gcc.dg/tree-ssa/minus-ovf.c
  2d24280dac358b9f66c4931b4f05b337  gcc/testsuite/gcc.dg/tree-ssa/negate.c
  a5e72da60a89c4ec057ab78f4a8cd8ea  gcc/testsuite/gcc.dg/tree-ssa/nonzero-1.c
  6ba638f6fba141cf2cfcb69f3310cec3  gcc/testsuite/gcc.dg/tree-ssa/operand-equal-1.c
  92e3c8666216cd6c40ba9fcb1eaa2a54  gcc/testsuite/gcc.dg/tree-ssa/operand-equal-2.c
  ce587f71a4758452bb7bdd847c66e619  gcc/testsuite/gcc.dg/tree-ssa/overflow-1.c
  20ab75cc87eeb1a4398c8dd8140e58c6  gcc/testsuite/gcc.dg/tree-ssa/overflow-2.c
! 0edbcd6bc0e61a4e8466ee59a436887f  gcc/testsuite/gcc.dg/tree-ssa/peel1.c
  ca3185e60127c7a83151ffd5cf76d1d2  gcc/testsuite/gcc.dg/tree-ssa/phi-opt-1.c
  4cf4f2f682010f090330cd658d262c58  gcc/testsuite/gcc.dg/tree-ssa/phi-opt-10.c
! a01ff2d3c641a61edafa48f249ab78c7  gcc/testsuite/gcc.dg/tree-ssa/phi-opt-11.c
  c5dea152ae71b21ff46b237034939032  gcc/testsuite/gcc.dg/tree-ssa/phi-opt-12.c
  2315edbc8be9e00abb8b2120e7385e60  gcc/testsuite/gcc.dg/tree-ssa/phi-opt-13.c
  a04c669a3f306e10deecdc4abacd9740  gcc/testsuite/gcc.dg/tree-ssa/phi-opt-14.c
  6c15ad950af0df71c11396193a437eb3  gcc/testsuite/gcc.dg/tree-ssa/phi-opt-15.c
! e3d8f25f915f37def5b9936a227f372e  gcc/testsuite/gcc.dg/tree-ssa/phi-opt-2.c
  9c5b91e9723f7d587ab6723f6d888f0c  gcc/testsuite/gcc.dg/tree-ssa/phi-opt-3.c
  abf36d925f7053c105cfd3f71d64a6a7  gcc/testsuite/gcc.dg/tree-ssa/phi-opt-4.c
  f92008381dfdeb113909cc8610b05695  gcc/testsuite/gcc.dg/tree-ssa/phi-opt-5.c
--- 35888,35938 ----
  0f6ec9444d41b9dd8705e8ce33ea1257  gcc/testsuite/gcc.dg/tree-ssa/loop-bound-4.c
  ea5f8b5ade3a674d82e4721a61ae4348  gcc/testsuite/gcc.dg/tree-ssa/loop-bound-5.c
  60da9819e46ae737a79c3d2fa208f269  gcc/testsuite/gcc.dg/tree-ssa/loop-bound-6.c
+ ca23699a770ae215b119683a7b9c41b7  gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-1.c
+ c955f2f5e6a1dd9fa350c3cdd8665679  gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-10.c
+ a2259a4546507258fe94c502149deb9c  gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-11.c
+ b785e1a2b2d1f8899bb42aef2aebb7a8  gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-12.c
+ 68ea1e33b73e2699fe3e0888ae6721b1  gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-13.c
+ fe84a4129539ca0baa6a9d7402d4d376  gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-14.c
+ b1188ae63556e140acddb61c169ee3c5  gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-15.c
+ cad339b7b74aad941706c5543ed42da9  gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-1b.c
+ c6db1107c0f5c74c85d67543de775c43  gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-2.c
+ c85f6bc837d7a365b2b53840d2f111a7  gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-3.c
+ 45d8102ae300d6c95033d0becf6ddcd9  gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-4.c
+ b6a2e903f7957392b3ee3ac4df3ca17c  gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-5.c
+ 9a5380b24e01dd40d0d7dcabde1b8179  gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-6.c
+ c58c5ad322dea3312498b4ca4adeb764  gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-7.c
+ d3f1f18b4dafd46abeb74dbe394dc800  gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-8.c
+ 7b3ee3e258311c67ca4a6e9ba21ffeb7  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
  03f2e136e4fd829b170e29613889a81e  gcc/testsuite/gcc.dg/tree-ssa/minmax-1.c
  d84ca5ab9bb6dc91cbdf1b607819bd68  gcc/testsuite/gcc.dg/tree-ssa/minmax-2.c
  374463206f97d422d735a27042841425  gcc/testsuite/gcc.dg/tree-ssa/minmax-loopend.c
  dd531f5928d5579a42c6d936314756c1  gcc/testsuite/gcc.dg/tree-ssa/minus-ovf.c
+ 86b3b545b7d95e5a9edad0a6ab56705b  gcc/testsuite/gcc.dg/tree-ssa/mulcmp-1.c
+ 4fa7175811f4d2c8eabac4a5bd56adcc  gcc/testsuite/gcc.dg/tree-ssa/mult-abs-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
+ e548a94664ac02f15cfda14370455269  gcc/testsuite/gcc.dg/tree-ssa/negneg-2.c
+ fd3e17bbeabb9e9147c31ce59d7f4c05  gcc/testsuite/gcc.dg/tree-ssa/negneg-3.c
+ 3819fd1873721abc800e327bb75f2977  gcc/testsuite/gcc.dg/tree-ssa/negneg-4.c
  a5e72da60a89c4ec057ab78f4a8cd8ea  gcc/testsuite/gcc.dg/tree-ssa/nonzero-1.c
+ 9408e54e117e3760c360e811a1decee4  gcc/testsuite/gcc.dg/tree-ssa/noreturn-1.c
  6ba638f6fba141cf2cfcb69f3310cec3  gcc/testsuite/gcc.dg/tree-ssa/operand-equal-1.c
  92e3c8666216cd6c40ba9fcb1eaa2a54  gcc/testsuite/gcc.dg/tree-ssa/operand-equal-2.c
  ce587f71a4758452bb7bdd847c66e619  gcc/testsuite/gcc.dg/tree-ssa/overflow-1.c
  20ab75cc87eeb1a4398c8dd8140e58c6  gcc/testsuite/gcc.dg/tree-ssa/overflow-2.c
! 5a98b1998ff6213f7c4d03f86ad6f651  gcc/testsuite/gcc.dg/tree-ssa/peel1.c
  ca3185e60127c7a83151ffd5cf76d1d2  gcc/testsuite/gcc.dg/tree-ssa/phi-opt-1.c
  4cf4f2f682010f090330cd658d262c58  gcc/testsuite/gcc.dg/tree-ssa/phi-opt-10.c
! ddb67ab5000f7433860f8900388a44c9  gcc/testsuite/gcc.dg/tree-ssa/phi-opt-11.c
  c5dea152ae71b21ff46b237034939032  gcc/testsuite/gcc.dg/tree-ssa/phi-opt-12.c
  2315edbc8be9e00abb8b2120e7385e60  gcc/testsuite/gcc.dg/tree-ssa/phi-opt-13.c
  a04c669a3f306e10deecdc4abacd9740  gcc/testsuite/gcc.dg/tree-ssa/phi-opt-14.c
  6c15ad950af0df71c11396193a437eb3  gcc/testsuite/gcc.dg/tree-ssa/phi-opt-15.c
! b0c4903d9d423d034636f81a25cdaa1a  gcc/testsuite/gcc.dg/tree-ssa/phi-opt-2.c
  9c5b91e9723f7d587ab6723f6d888f0c  gcc/testsuite/gcc.dg/tree-ssa/phi-opt-3.c
  abf36d925f7053c105cfd3f71d64a6a7  gcc/testsuite/gcc.dg/tree-ssa/phi-opt-4.c
  f92008381dfdeb113909cc8610b05695  gcc/testsuite/gcc.dg/tree-ssa/phi-opt-5.c
*************** eaefeae1c44e13e51e51153845b4df7c  gcc/te
*** 34204,34210 ****
  13d5419b87b638aa5366d59fe3ca4b4e  gcc/testsuite/gcc.dg/tree-ssa/pr18908.c
  b7c0f0ae0f78f7f701a691c6c65be4f0  gcc/testsuite/gcc.dg/tree-ssa/pr19055-2.c
  81ec4769e91b67cba8adf301e13ceee6  gcc/testsuite/gcc.dg/tree-ssa/pr19055.c
! 698724778085122d3d7ceb0ac5d3890f  gcc/testsuite/gcc.dg/tree-ssa/pr19210-1.c
  fdc59fc42eb218ce34e5764b0fefe04b  gcc/testsuite/gcc.dg/tree-ssa/pr19431.c
  36099f397d1202fbac72f47de17570cd  gcc/testsuite/gcc.dg/tree-ssa/pr19590.c
  fa134b7b09128388df0cf5dfe1f05256  gcc/testsuite/gcc.dg/tree-ssa/pr19633.c
--- 35975,35981 ----
  13d5419b87b638aa5366d59fe3ca4b4e  gcc/testsuite/gcc.dg/tree-ssa/pr18908.c
  b7c0f0ae0f78f7f701a691c6c65be4f0  gcc/testsuite/gcc.dg/tree-ssa/pr19055-2.c
  81ec4769e91b67cba8adf301e13ceee6  gcc/testsuite/gcc.dg/tree-ssa/pr19055.c
! 7989a72aad8d0dfe4a85e2b3f26c8678  gcc/testsuite/gcc.dg/tree-ssa/pr19210-1.c
  fdc59fc42eb218ce34e5764b0fefe04b  gcc/testsuite/gcc.dg/tree-ssa/pr19431.c
  36099f397d1202fbac72f47de17570cd  gcc/testsuite/gcc.dg/tree-ssa/pr19590.c
  fa134b7b09128388df0cf5dfe1f05256  gcc/testsuite/gcc.dg/tree-ssa/pr19633.c
*************** ea6a7baaceb80ef4cf5f5c5cf3e7788b  gcc/te
*** 34225,34231 ****
  691ea964b825e34fa9f73edcab74de31  gcc/testsuite/gcc.dg/tree-ssa/pr21001.c
  3df7eb8e85d5e3fbf792b99dc93158cb  gcc/testsuite/gcc.dg/tree-ssa/pr21029.c
  80ab089d53ed0ce00131e55e52e52cc9  gcc/testsuite/gcc.dg/tree-ssa/pr21031.c
! be45ee965dbd00b9d66c6724d220e813  gcc/testsuite/gcc.dg/tree-ssa/pr21086.c
  62def4456e8ee202759cf4f51ecabbc1  gcc/testsuite/gcc.dg/tree-ssa/pr21090.c
  384d3992a260f2e50d316f50da5bf19f  gcc/testsuite/gcc.dg/tree-ssa/pr21171.c
  eb2334e27b8fe3489aaf012e4817cd9b  gcc/testsuite/gcc.dg/tree-ssa/pr21294.c
--- 35996,36002 ----
  691ea964b825e34fa9f73edcab74de31  gcc/testsuite/gcc.dg/tree-ssa/pr21001.c
  3df7eb8e85d5e3fbf792b99dc93158cb  gcc/testsuite/gcc.dg/tree-ssa/pr21029.c
  80ab089d53ed0ce00131e55e52e52cc9  gcc/testsuite/gcc.dg/tree-ssa/pr21031.c
! 762987dc536f621098e8ce67d052af81  gcc/testsuite/gcc.dg/tree-ssa/pr21086.c
  62def4456e8ee202759cf4f51ecabbc1  gcc/testsuite/gcc.dg/tree-ssa/pr21090.c
  384d3992a260f2e50d316f50da5bf19f  gcc/testsuite/gcc.dg/tree-ssa/pr21171.c
  eb2334e27b8fe3489aaf012e4817cd9b  gcc/testsuite/gcc.dg/tree-ssa/pr21294.c
*************** a616cf05ad4b0662588c437132967815  gcc/te
*** 34317,34326 ****
  cd4367b0a06a6ddc678bb82ef79e9178  gcc/testsuite/gcc.dg/tree-ssa/pr34244.c
  9a53a14953415500efa378b3c8629d45  gcc/testsuite/gcc.dg/tree-ssa/pr34635-1.c
  e6eaee55ed098e8181ec180a8a0cdd50  gcc/testsuite/gcc.dg/tree-ssa/pr34635.c
! f1ff185d1935dc02d2fdc45aa071ed46  gcc/testsuite/gcc.dg/tree-ssa/pr35286.c
  d7ea78bb3712cbac061e6498a5947a50  gcc/testsuite/gcc.dg/tree-ssa/pr35287.c
  d85d16a112cc50f7814e25d00a7bf55d  gcc/testsuite/gcc.dg/tree-ssa/pr36181.c
  d225a29621cff47f99749a95f0ed3a1d  gcc/testsuite/gcc.dg/tree-ssa/pr36326.c
  11d90b3aa10cf7061c7cda86a8429b52  gcc/testsuite/gcc.dg/tree-ssa/pr36881.c
  4162213a059076a67645bb8870ace03d  gcc/testsuite/gcc.dg/tree-ssa/pr36908.c
  adb3f6ce8a584275916a331dab23b2ec  gcc/testsuite/gcc.dg/tree-ssa/pr37508.c
--- 36088,36098 ----
  cd4367b0a06a6ddc678bb82ef79e9178  gcc/testsuite/gcc.dg/tree-ssa/pr34244.c
  9a53a14953415500efa378b3c8629d45  gcc/testsuite/gcc.dg/tree-ssa/pr34635-1.c
  e6eaee55ed098e8181ec180a8a0cdd50  gcc/testsuite/gcc.dg/tree-ssa/pr34635.c
! d825c4d9b72ba6641cffb8c61f662340  gcc/testsuite/gcc.dg/tree-ssa/pr35286.c
  d7ea78bb3712cbac061e6498a5947a50  gcc/testsuite/gcc.dg/tree-ssa/pr35287.c
  d85d16a112cc50f7814e25d00a7bf55d  gcc/testsuite/gcc.dg/tree-ssa/pr36181.c
  d225a29621cff47f99749a95f0ed3a1d  gcc/testsuite/gcc.dg/tree-ssa/pr36326.c
+ a6df0e42d561322a43f9820ae94e0003  gcc/testsuite/gcc.dg/tree-ssa/pr36550.c
  11d90b3aa10cf7061c7cda86a8429b52  gcc/testsuite/gcc.dg/tree-ssa/pr36881.c
  4162213a059076a67645bb8870ace03d  gcc/testsuite/gcc.dg/tree-ssa/pr36908.c
  adb3f6ce8a584275916a331dab23b2ec  gcc/testsuite/gcc.dg/tree-ssa/pr37508.c
*************** d399c54ff1f418672631b2663e309737  gcc/te
*** 34351,34360 ****
  1a61fddf2bc2aa3475ea4c3200b1dfd7  gcc/testsuite/gcc.dg/tree-ssa/pr45397.c
  592ff825eb1ae28f2cc9fc5efa4063f8  gcc/testsuite/gcc.dg/tree-ssa/pr45427.c
  d903114b6b4fac472a9af2c9abc3de00  gcc/testsuite/gcc.dg/tree-ssa/pr46076.c
! d00fb5794f00143104ac886e79a3759f  gcc/testsuite/gcc.dg/tree-ssa/pr47286.c
  97fe9c848e0059a42c793036887ac8ec  gcc/testsuite/gcc.dg/tree-ssa/pr47392.c
  651299c6ba5061b1a8252251903e3396  gcc/testsuite/gcc.dg/tree-ssa/pr47477.c
! 7422a3c4d8001da098beab04cdef121f  gcc/testsuite/gcc.dg/tree-ssa/pr49039.c
  663b7106174eb118a93acae4227f5d0a  gcc/testsuite/gcc.dg/tree-ssa/pr49094.c
  7fd10ae4734437d73c4b61351e8748fc  gcc/testsuite/gcc.dg/tree-ssa/pr49642-1.c
  b5bb5cbf469f3f6b7ad4d515cf335dc1  gcc/testsuite/gcc.dg/tree-ssa/pr49642-2.c
--- 36123,36132 ----
  1a61fddf2bc2aa3475ea4c3200b1dfd7  gcc/testsuite/gcc.dg/tree-ssa/pr45397.c
  592ff825eb1ae28f2cc9fc5efa4063f8  gcc/testsuite/gcc.dg/tree-ssa/pr45427.c
  d903114b6b4fac472a9af2c9abc3de00  gcc/testsuite/gcc.dg/tree-ssa/pr46076.c
! e79e571a7bf87c1c43e941c3999280f2  gcc/testsuite/gcc.dg/tree-ssa/pr47286.c
  97fe9c848e0059a42c793036887ac8ec  gcc/testsuite/gcc.dg/tree-ssa/pr47392.c
  651299c6ba5061b1a8252251903e3396  gcc/testsuite/gcc.dg/tree-ssa/pr47477.c
! de8a7f5b3e73ebbe163eec7fb3f3ee70  gcc/testsuite/gcc.dg/tree-ssa/pr49039.c
  663b7106174eb118a93acae4227f5d0a  gcc/testsuite/gcc.dg/tree-ssa/pr49094.c
  7fd10ae4734437d73c4b61351e8748fc  gcc/testsuite/gcc.dg/tree-ssa/pr49642-1.c
  b5bb5cbf469f3f6b7ad4d515cf335dc1  gcc/testsuite/gcc.dg/tree-ssa/pr49642-2.c
*************** c1a1214c4f6f4e4d71a1466aa45fbc98  gcc/te
*** 34381,34388 ****
  0fdd0ff8ef90d069783a8363702328e9  gcc/testsuite/gcc.dg/tree-ssa/pr61197.c
  36b5edb85589e8fc23f2ad429203181e  gcc/testsuite/gcc.dg/tree-ssa/pr61385.c
  7d548dcaea296768cf61e084e5c869fa  gcc/testsuite/gcc.dg/tree-ssa/pr61607.c
! ed511e68fa16a0bcd4004dd691a863c1  gcc/testsuite/gcc.dg/tree-ssa/pr61743-1.c
! 9a955eb5e559142a78ff943ec760827f  gcc/testsuite/gcc.dg/tree-ssa/pr61743-2.c
  7bd9766c7d18a7e6d59fb82034c9bbb0  gcc/testsuite/gcc.dg/tree-ssa/pr61839_1.c
  1c7615970a02a8df1644083c91b1a29e  gcc/testsuite/gcc.dg/tree-ssa/pr61839_2.c
  0c97984d60acec4acdbb0b38ee88be63  gcc/testsuite/gcc.dg/tree-ssa/pr61839_3.c
--- 36153,36160 ----
  0fdd0ff8ef90d069783a8363702328e9  gcc/testsuite/gcc.dg/tree-ssa/pr61197.c
  36b5edb85589e8fc23f2ad429203181e  gcc/testsuite/gcc.dg/tree-ssa/pr61385.c
  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
  7bd9766c7d18a7e6d59fb82034c9bbb0  gcc/testsuite/gcc.dg/tree-ssa/pr61839_1.c
  1c7615970a02a8df1644083c91b1a29e  gcc/testsuite/gcc.dg/tree-ssa/pr61839_2.c
  0c97984d60acec4acdbb0b38ee88be63  gcc/testsuite/gcc.dg/tree-ssa/pr61839_3.c
*************** ed511e68fa16a0bcd4004dd691a863c1  gcc/te
*** 34392,34400 ****
  e6986386d8ec85afd7b821cc2f311d1c  gcc/testsuite/gcc.dg/tree-ssa/pr63586-2.c
  7cb0ed762682bb1350e760c82051ad0c  gcc/testsuite/gcc.dg/tree-ssa/pr63586.c
  ab19a48e03e981bc90a33f89866796e0  gcc/testsuite/gcc.dg/tree-ssa/pr64130.c
! a8e7a243cc7fbf50c23b5dca12ef42ad  gcc/testsuite/gcc.dg/tree-ssa/pr64183.c
  5dc285c0d3c4c8e53576556df36ac611  gcc/testsuite/gcc.dg/tree-ssa/pr64705.c
  90f529734a2276aada8ec622a1073c62  gcc/testsuite/gcc.dg/tree-ssa/pr64801.c
  14d4888f6e747c3cd8522a955b553225  gcc/testsuite/gcc.dg/tree-ssa/pr65136.c
  e3a8c430fd6ca31515a7e1bbea95b6dd  gcc/testsuite/gcc.dg/tree-ssa/pr65447.c
  80ee06c1361a2efc5e45db8d97d08877  gcc/testsuite/gcc.dg/tree-ssa/pr66449.c
--- 36164,36173 ----
  e6986386d8ec85afd7b821cc2f311d1c  gcc/testsuite/gcc.dg/tree-ssa/pr63586-2.c
  7cb0ed762682bb1350e760c82051ad0c  gcc/testsuite/gcc.dg/tree-ssa/pr63586.c
  ab19a48e03e981bc90a33f89866796e0  gcc/testsuite/gcc.dg/tree-ssa/pr64130.c
! 281aeae5fc7aea57db6380d5b8a8a286  gcc/testsuite/gcc.dg/tree-ssa/pr64183.c
  5dc285c0d3c4c8e53576556df36ac611  gcc/testsuite/gcc.dg/tree-ssa/pr64705.c
  90f529734a2276aada8ec622a1073c62  gcc/testsuite/gcc.dg/tree-ssa/pr64801.c
+ cc06fe1b241621023bc6bb753413b198  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
  80ee06c1361a2efc5e45db8d97d08877  gcc/testsuite/gcc.dg/tree-ssa/pr66449.c
*************** b482edbf0104ac1d5032061561d34261  gcc/te
*** 34405,34411 ****
  bb8857e07a5b85d146bcc9aec96d0c1b  gcc/testsuite/gcc.dg/tree-ssa/pr67755.c
  acced9e3897b38598bca4bdfa2354b48  gcc/testsuite/gcc.dg/tree-ssa/pr67891.c
  9d94b8736a8137db631f83d5452e4332  gcc/testsuite/gcc.dg/tree-ssa/pr68021.c
! 5314bb20d98956708f8049d9a7350a35  gcc/testsuite/gcc.dg/tree-ssa/pr68198.c
  7bf0fe2fd8aa211be65e9ab33640c6e1  gcc/testsuite/gcc.dg/tree-ssa/pr68234.c
  cc336a7b72706a5f447ef6f6f2fa30d0  gcc/testsuite/gcc.dg/tree-ssa/pr68431.c
  077371c3709230f8854901c2ab4a933e  gcc/testsuite/gcc.dg/tree-ssa/pr68455.c
--- 36178,36184 ----
  bb8857e07a5b85d146bcc9aec96d0c1b  gcc/testsuite/gcc.dg/tree-ssa/pr67755.c
  acced9e3897b38598bca4bdfa2354b48  gcc/testsuite/gcc.dg/tree-ssa/pr67891.c
  9d94b8736a8137db631f83d5452e4332  gcc/testsuite/gcc.dg/tree-ssa/pr68021.c
! 0916bc22d47e8ffc6acf02f27c86fd34  gcc/testsuite/gcc.dg/tree-ssa/pr68198.c
  7bf0fe2fd8aa211be65e9ab33640c6e1  gcc/testsuite/gcc.dg/tree-ssa/pr68234.c
  cc336a7b72706a5f447ef6f6f2fa30d0  gcc/testsuite/gcc.dg/tree-ssa/pr68431.c
  077371c3709230f8854901c2ab4a933e  gcc/testsuite/gcc.dg/tree-ssa/pr68455.c
*************** e8527fc0af4d4530b771535a495cee62  gcc/te
*** 34418,34424 ****
  535c7fa074506d9de36818bd96137ddb  gcc/testsuite/gcc.dg/tree-ssa/pr68619-4.c
  29f2a28e01ed0d201c2ca9327f579b1b  gcc/testsuite/gcc.dg/tree-ssa/pr68619-5.c
  444b256d35c7ed527841c6ca712d587e  gcc/testsuite/gcc.dg/tree-ssa/pr68714.c
! 9667924beb3cd5c8c372d26fcd07b810  gcc/testsuite/gcc.dg/tree-ssa/pr69196-1.c
  6a1b4ff94b03f62a4921f625f1b11e8d  gcc/testsuite/gcc.dg/tree-ssa/pr69270-2.c
  77debcd2413c4d805c1b13869b4258c6  gcc/testsuite/gcc.dg/tree-ssa/pr69270-3.c
  920bbfed79f72b4a90eddd3306648c9b  gcc/testsuite/gcc.dg/tree-ssa/pr69270.c
--- 36191,36197 ----
  535c7fa074506d9de36818bd96137ddb  gcc/testsuite/gcc.dg/tree-ssa/pr68619-4.c
  29f2a28e01ed0d201c2ca9327f579b1b  gcc/testsuite/gcc.dg/tree-ssa/pr68619-5.c
  444b256d35c7ed527841c6ca712d587e  gcc/testsuite/gcc.dg/tree-ssa/pr68714.c
! 16e271b48c41bd4213302cd85262fd88  gcc/testsuite/gcc.dg/tree-ssa/pr69196-1.c
  6a1b4ff94b03f62a4921f625f1b11e8d  gcc/testsuite/gcc.dg/tree-ssa/pr69270-2.c
  77debcd2413c4d805c1b13869b4258c6  gcc/testsuite/gcc.dg/tree-ssa/pr69270-3.c
  920bbfed79f72b4a90eddd3306648c9b  gcc/testsuite/gcc.dg/tree-ssa/pr69270.c
*************** c4d7d823968dd588f29cd8bf4bb70294  gcc/te
*** 34448,34466 ****
  ae3d7a6c9e454aaf391e28ae99cabd11  gcc/testsuite/gcc.dg/tree-ssa/pr71520.c
  fc985b9774144c2828a0e626bd2fb632  gcc/testsuite/gcc.dg/tree-ssa/pr71563.c
  bb6227620f2569d9cb9cc9f421ad886d  gcc/testsuite/gcc.dg/tree-ssa/pr71661.c
! c9a330cadf65cba411f5b9959d04a6d3  gcc/testsuite/gcc.dg/tree-ssa/pr71947-1.c
! dce49f2330cca990079fdb9d0db2e3f4  gcc/testsuite/gcc.dg/tree-ssa/pr71947-2.c
! a691e3d2982defb5215fcd4660622c82  gcc/testsuite/gcc.dg/tree-ssa/pr71947-3.c
  b6f7731eea80a6072c4a41afa819dcd2  gcc/testsuite/gcc.dg/tree-ssa/pr71947-4.c
  e78d5a3fb892e410dfc1401001b73848  gcc/testsuite/gcc.dg/tree-ssa/pr71947-5.c
  4f4175800376f3a826db1a861cc54dfa  gcc/testsuite/gcc.dg/tree-ssa/pr71947-6.c
  2e35c56e68b8943c8de27928400acbff  gcc/testsuite/gcc.dg/tree-ssa/pr72772.c
  f9172c76ed973a0ef6eaf1fd3bdcaeda  gcc/testsuite/gcc.dg/tree-ssa/pr72817.c
  2a17ba6c252a87cc5295627f73e0bc7b  gcc/testsuite/gcc.dg/tree-ssa/pr72835.c
  dbe783b1444b6fe0f6050f81fb8e9be7  gcc/testsuite/gcc.dg/tree-ssa/pr73450.c
  9c09016657342d175ed211778556533a  gcc/testsuite/gcc.dg/tree-ssa/pr73714.c
! bbddd9a85593def9cd55dfd5214a00c6  gcc/testsuite/gcc.dg/tree-ssa/pr77445-2.c
  d4c2ee6879df0cb21ab0c1cbf04ce6e8  gcc/testsuite/gcc.dg/tree-ssa/pr77445.c
  bc785bd4625086bc4105460c4bac2646  gcc/testsuite/gcc.dg/tree-ssa/pr77664.c
  9ed3e61cfd24c874ed7327706b7c1525  gcc/testsuite/gcc.dg/tree-ssa/pr77808.c
  01102465836c74c39d22c37f638ba498  gcc/testsuite/gcc.dg/tree-ssa/pr78153-1.c
--- 36221,36243 ----
  ae3d7a6c9e454aaf391e28ae99cabd11  gcc/testsuite/gcc.dg/tree-ssa/pr71520.c
  fc985b9774144c2828a0e626bd2fb632  gcc/testsuite/gcc.dg/tree-ssa/pr71563.c
  bb6227620f2569d9cb9cc9f421ad886d  gcc/testsuite/gcc.dg/tree-ssa/pr71661.c
! bf124c5e54f54d42173c61cd0114305e  gcc/testsuite/gcc.dg/tree-ssa/pr71947-1.c
! 3fd8772b70b0d140eb11f3f30a89d2df  gcc/testsuite/gcc.dg/tree-ssa/pr71947-2.c
! a296fc3e6d7fce75d1b6b72f20788acc  gcc/testsuite/gcc.dg/tree-ssa/pr71947-3.c
  b6f7731eea80a6072c4a41afa819dcd2  gcc/testsuite/gcc.dg/tree-ssa/pr71947-4.c
  e78d5a3fb892e410dfc1401001b73848  gcc/testsuite/gcc.dg/tree-ssa/pr71947-5.c
  4f4175800376f3a826db1a861cc54dfa  gcc/testsuite/gcc.dg/tree-ssa/pr71947-6.c
+ defa82f4f4f8b7f1ca105cc3a8892f22  gcc/testsuite/gcc.dg/tree-ssa/pr71947-7.c
+ 9ce2902e38fddfd36c6a4571b86c2aff  gcc/testsuite/gcc.dg/tree-ssa/pr71947-8.c
+ 60e80fa22706fa6ce1e33e4cc53895cf  gcc/testsuite/gcc.dg/tree-ssa/pr71947-9.c
  2e35c56e68b8943c8de27928400acbff  gcc/testsuite/gcc.dg/tree-ssa/pr72772.c
  f9172c76ed973a0ef6eaf1fd3bdcaeda  gcc/testsuite/gcc.dg/tree-ssa/pr72817.c
  2a17ba6c252a87cc5295627f73e0bc7b  gcc/testsuite/gcc.dg/tree-ssa/pr72835.c
  dbe783b1444b6fe0f6050f81fb8e9be7  gcc/testsuite/gcc.dg/tree-ssa/pr73450.c
  9c09016657342d175ed211778556533a  gcc/testsuite/gcc.dg/tree-ssa/pr73714.c
! c94de5f89a3d99a56747cdb2dbd340fd  gcc/testsuite/gcc.dg/tree-ssa/pr77445-2.c
  d4c2ee6879df0cb21ab0c1cbf04ce6e8  gcc/testsuite/gcc.dg/tree-ssa/pr77445.c
+ fe7d78a623debbe119b6b21716e26916  gcc/testsuite/gcc.dg/tree-ssa/pr77644.c
  bc785bd4625086bc4105460c4bac2646  gcc/testsuite/gcc.dg/tree-ssa/pr77664.c
  9ed3e61cfd24c874ed7327706b7c1525  gcc/testsuite/gcc.dg/tree-ssa/pr77808.c
  01102465836c74c39d22c37f638ba498  gcc/testsuite/gcc.dg/tree-ssa/pr78153-1.c
*************** c87ef2993d90c5b6e5dca5262c0a7ff8  gcc/te
*** 34470,34476 ****
  b49229b7d1812e2e8d3d35d99035d6d4  gcc/testsuite/gcc.dg/tree-ssa/pr78428.c
  c14fec0c3521187747993d69e02aa5b5  gcc/testsuite/gcc.dg/tree-ssa/pr78605.c
  a9bbab0ab31459c437e6995c2b0b2d9b  gcc/testsuite/gcc.dg/tree-ssa/pr78622.c
! bbf1c06c2256a14579c491f2da36264f  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
--- 36247,36253 ----
  b49229b7d1812e2e8d3d35d99035d6d4  gcc/testsuite/gcc.dg/tree-ssa/pr78428.c
  c14fec0c3521187747993d69e02aa5b5  gcc/testsuite/gcc.dg/tree-ssa/pr78605.c
  a9bbab0ab31459c437e6995c2b0b2d9b  gcc/testsuite/gcc.dg/tree-ssa/pr78622.c
! aa31fade8a031227d911c79fecaa81e6  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
*************** d3a9a5b218185efce7ef7fc96dee927c  gcc/te
*** 34483,34497 ****
  7e6a95917c405294859489d0eba88e46  gcc/testsuite/gcc.dg/tree-ssa/pr79448-2.c
  a45e23f4e880561d54a81a13b9b3eb19  gcc/testsuite/gcc.dg/tree-ssa/pr79448.c
  d4aa7c24d6416b188d1742fc7862c0d5  gcc/testsuite/gcc.dg/tree-ssa/pr79691.c
  63cdbac8b60e9574d8c08e0c48248fbc  gcc/testsuite/gcc.dg/tree-ssa/pr79800.c
! 4ac3ddbb068bcfee51e3aaeaaa518512  gcc/testsuite/gcc.dg/tree-ssa/pr79803.c
  bcb932cf3c7784b98123718e8e7bd90d  gcc/testsuite/gcc.dg/tree-ssa/pr79943.c
  00e227d95a7b91ac653b8f6d91046426  gcc/testsuite/gcc.dg/tree-ssa/pr81388-1.c
  d33f4213b2023b5f7798fbdda71e4dce  gcc/testsuite/gcc.dg/tree-ssa/pr81388-2.c
! 9f9ca14d5cb7fdf89b6360006ce4a622  gcc/testsuite/gcc.dg/tree-ssa/pr81588.c
  f46e92172b945f661bae1ab06ce7f4ac  gcc/testsuite/gcc.dg/tree-ssa/pr82340.c
  75141932aa922f32bbb87834cd9630ad  gcc/testsuite/gcc.dg/tree-ssa/pr82726.c
  f807ed0961b01a668364922fd655af81  gcc/testsuite/gcc.dg/tree-ssa/pr83198.c
  e6c9f2dd9d7405dee4bfd5d6d0fc455f  gcc/testsuite/gcc.dg/tree-ssa/pred-1.c
  90c3c1a872e4566cc043c50e818ef036  gcc/testsuite/gcc.dg/tree-ssa/predcom-1.c
  ec45787b9b781da6181e7960a8cb76f0  gcc/testsuite/gcc.dg/tree-ssa/predcom-2.c
--- 36260,36310 ----
  7e6a95917c405294859489d0eba88e46  gcc/testsuite/gcc.dg/tree-ssa/pr79448-2.c
  a45e23f4e880561d54a81a13b9b3eb19  gcc/testsuite/gcc.dg/tree-ssa/pr79448.c
  d4aa7c24d6416b188d1742fc7862c0d5  gcc/testsuite/gcc.dg/tree-ssa/pr79691.c
+ df875a8afd8fc4f5d37c5af6b61d1cd5  gcc/testsuite/gcc.dg/tree-ssa/pr79697.c
  63cdbac8b60e9574d8c08e0c48248fbc  gcc/testsuite/gcc.dg/tree-ssa/pr79800.c
! 94d76dcb755b22911107840cb261e08f  gcc/testsuite/gcc.dg/tree-ssa/pr79803.c
  bcb932cf3c7784b98123718e8e7bd90d  gcc/testsuite/gcc.dg/tree-ssa/pr79943.c
+ 945754de69c98b402eb9c8d25ad385a1  gcc/testsuite/gcc.dg/tree-ssa/pr80622.c
+ a74efe0b6a6054d529634d4aa8c952d0  gcc/testsuite/gcc.dg/tree-ssa/pr80803.c
+ 7518d78c8a1a67568dc9f6e90301f441  gcc/testsuite/gcc.dg/tree-ssa/pr80887.c
+ 94d3566238c673579322d687080a0ced  gcc/testsuite/gcc.dg/tree-ssa/pr80898-2.c
+ f32e48814651c18565a539680bb99e7a  gcc/testsuite/gcc.dg/tree-ssa/pr80898.c
+ fdd7381c460869757a5961d09c2d491d  gcc/testsuite/gcc.dg/tree-ssa/pr81063.c
+ 39364f86d1d4969c86c1afd97410e8e8  gcc/testsuite/gcc.dg/tree-ssa/pr81346-1.c
+ b9f944613f9fb956af80d3793f4ed55e  gcc/testsuite/gcc.dg/tree-ssa/pr81346-2.c
+ c1c27e425708e61cc321f320614c0cff  gcc/testsuite/gcc.dg/tree-ssa/pr81346-3.c
+ 93f90daef34553a2d8826ae56a511045  gcc/testsuite/gcc.dg/tree-ssa/pr81346-4.c
+ dc5b6256fb35e2cf9d6fe7e4d1066487  gcc/testsuite/gcc.dg/tree-ssa/pr81346-5.c
+ 7c432ed8791c71cce712219d62d401a3  gcc/testsuite/gcc.dg/tree-ssa/pr81369.c
  00e227d95a7b91ac653b8f6d91046426  gcc/testsuite/gcc.dg/tree-ssa/pr81388-1.c
  d33f4213b2023b5f7798fbdda71e4dce  gcc/testsuite/gcc.dg/tree-ssa/pr81388-2.c
! 20dbb44dce8d226d23afb0c07a9a2879  gcc/testsuite/gcc.dg/tree-ssa/pr81396.c
! b32558d490c5c73277ce27875bb1bfc0  gcc/testsuite/gcc.dg/tree-ssa/pr81588.c
! 6da94e378d2807aa10551762fa89a6c6  gcc/testsuite/gcc.dg/tree-ssa/pr81620-1.c
! 12aef6fb81e4885a0f93eb2c000f331d  gcc/testsuite/gcc.dg/tree-ssa/pr81620-2.c
! fdce0a001914fdb36e217ac7fb305fd7  gcc/testsuite/gcc.dg/tree-ssa/pr81627.c
! e5092fb25b6f25aec065f319edc5aa8c  gcc/testsuite/gcc.dg/tree-ssa/pr81741.c
! 24cc934a07086354accf389a7abdcc92  gcc/testsuite/gcc.dg/tree-ssa/pr81744.c
! 19a84f872ab2582af0078ed8363bb611  gcc/testsuite/gcc.dg/tree-ssa/pr81799.c
! 861418eb43cc241f4cc218596b15bb4c  gcc/testsuite/gcc.dg/tree-ssa/pr81832.c
! 49f71ddc012b58a1125d030988922cc6  gcc/testsuite/gcc.dg/tree-ssa/pr81908.c
! 5579175f4ba8caaca62a732236030b9a  gcc/testsuite/gcc.dg/tree-ssa/pr82059.c
! aaf319a5d368363d78888a172b2aad72  gcc/testsuite/gcc.dg/tree-ssa/pr82078.c
! 72d8a7e213e7a1901533af0471693b54  gcc/testsuite/gcc.dg/tree-ssa/pr82163.c
  f46e92172b945f661bae1ab06ce7f4ac  gcc/testsuite/gcc.dg/tree-ssa/pr82340.c
+ 420ecd4a8ec02f517eb12a6a15f7f710  gcc/testsuite/gcc.dg/tree-ssa/pr82363.c
+ 6a2c99b684beec635737d22863b3e987  gcc/testsuite/gcc.dg/tree-ssa/pr82472.c
+ 9e14c0a0b8a86e77017adbe53af4d756  gcc/testsuite/gcc.dg/tree-ssa/pr82498.c
+ dbb3bd52ee698a572581470fc02636bb  gcc/testsuite/gcc.dg/tree-ssa/pr82574.c
  75141932aa922f32bbb87834cd9630ad  gcc/testsuite/gcc.dg/tree-ssa/pr82726.c
+ 6b2bacdf2b2223684a18611dbdc1db7f  gcc/testsuite/gcc.dg/tree-ssa/pr83141.c
  f807ed0961b01a668364922fd655af81  gcc/testsuite/gcc.dg/tree-ssa/pr83198.c
+ 8477b237f09dca3e7328e74d93078e60  gcc/testsuite/gcc.dg/tree-ssa/pr83329.c
+ 2c9285654e431b1757d716d0373fa6bd  gcc/testsuite/gcc.dg/tree-ssa/pr83501.c
+ 893a1bc278c3ce3874bce3efe709bc89  gcc/testsuite/gcc.dg/tree-ssa/pr83695.c
+ d26396401dfe20236d8bef41e255057f  gcc/testsuite/gcc.dg/tree-ssa/pr84512.c
+ 89fb7410a8564bd0e995464d653b9492  gcc/testsuite/gcc.dg/tree-ssa/pr84859.c
+ 7b0e32d77316039c03b0187b750dcbd7  gcc/testsuite/gcc.dg/tree-ssa/pr84969.c
  e6c9f2dd9d7405dee4bfd5d6d0fc455f  gcc/testsuite/gcc.dg/tree-ssa/pred-1.c
  90c3c1a872e4566cc043c50e818ef036  gcc/testsuite/gcc.dg/tree-ssa/predcom-1.c
  ec45787b9b781da6181e7960a8cb76f0  gcc/testsuite/gcc.dg/tree-ssa/predcom-2.c
*************** a01af62b0a92d61ae163e5294ef53944  gcc/te
*** 34500,34505 ****
--- 36313,36330 ----
  22e897ef51f75d6342498f7c026af634  gcc/testsuite/gcc.dg/tree-ssa/predcom-5.c
  c16e2519f7131c283e7aee755fb3f7de  gcc/testsuite/gcc.dg/tree-ssa/predcom-6.c
  71f3764772c5ea1c19be28f21548effd  gcc/testsuite/gcc.dg/tree-ssa/predcom-7.c
+ 41e8f985750768223b774d8fd9e07b4a  gcc/testsuite/gcc.dg/tree-ssa/predcom-dse-1.c
+ d4f7d4324a529b1938fb625888d2024d  gcc/testsuite/gcc.dg/tree-ssa/predcom-dse-10.c
+ 1206a8ad1fe06868f7b06f02d71cfa32  gcc/testsuite/gcc.dg/tree-ssa/predcom-dse-11.c
+ 7cabc27bc668f088021b366c1fb896e1  gcc/testsuite/gcc.dg/tree-ssa/predcom-dse-12.c
+ 6e0612fe2a0832522c53b30638b2e4c5  gcc/testsuite/gcc.dg/tree-ssa/predcom-dse-2.c
+ 8930361187fba218ef98af43c8653658  gcc/testsuite/gcc.dg/tree-ssa/predcom-dse-3.c
+ 2b217059faf0090caa7d03c9988f0e3c  gcc/testsuite/gcc.dg/tree-ssa/predcom-dse-4.c
+ d61d9e0865c3291b2a168f2caad031b5  gcc/testsuite/gcc.dg/tree-ssa/predcom-dse-5.c
+ b907972571b881cc3feaf8a5cfaaad81  gcc/testsuite/gcc.dg/tree-ssa/predcom-dse-6.c
+ 053987c325ac49de1828cb89f01ecede  gcc/testsuite/gcc.dg/tree-ssa/predcom-dse-7.c
+ 1d80600c80442239544ab549170f2796  gcc/testsuite/gcc.dg/tree-ssa/predcom-dse-8.c
+ 93fcde4e41195522bad7807a40f99e79  gcc/testsuite/gcc.dg/tree-ssa/predcom-dse-9.c
  f67cefdd25b2088c2124e39bc00cf373  gcc/testsuite/gcc.dg/tree-ssa/prefetch-3.c
  7079d4a5b32b0fb90f75d41681a18ef5  gcc/testsuite/gcc.dg/tree-ssa/prefetch-4.c
  702b5dc387dece55e17d16332ba0c040  gcc/testsuite/gcc.dg/tree-ssa/prefetch-5.c
*************** e05c644464252e6362b1708a38739e41  gcc/te
*** 34529,34535 ****
  0638b60e716dc6fd7037f76b63883c25  gcc/testsuite/gcc.dg/tree-ssa/reassoc-20.c
  32b44bbdba5672497d6837cd3085944c  gcc/testsuite/gcc.dg/tree-ssa/reassoc-21.c
  fc0e281a23796262fa832ffe3ebc4d43  gcc/testsuite/gcc.dg/tree-ssa/reassoc-22.c
! 40061b9a1d7ee68ff0550b1b21ff4896  gcc/testsuite/gcc.dg/tree-ssa/reassoc-23.c
  4c02c7914db00d0662b371509d381564  gcc/testsuite/gcc.dg/tree-ssa/reassoc-24.c
  60043478a50c4f918e4a11ddac3e464a  gcc/testsuite/gcc.dg/tree-ssa/reassoc-25.c
  5c0e095306f15dfc3883e1e40a90be2d  gcc/testsuite/gcc.dg/tree-ssa/reassoc-26.c
--- 36354,36360 ----
  0638b60e716dc6fd7037f76b63883c25  gcc/testsuite/gcc.dg/tree-ssa/reassoc-20.c
  32b44bbdba5672497d6837cd3085944c  gcc/testsuite/gcc.dg/tree-ssa/reassoc-21.c
  fc0e281a23796262fa832ffe3ebc4d43  gcc/testsuite/gcc.dg/tree-ssa/reassoc-22.c
! f39e851c8ff7bbd176d52719bdf1f6a2  gcc/testsuite/gcc.dg/tree-ssa/reassoc-23.c
  4c02c7914db00d0662b371509d381564  gcc/testsuite/gcc.dg/tree-ssa/reassoc-24.c
  60043478a50c4f918e4a11ddac3e464a  gcc/testsuite/gcc.dg/tree-ssa/reassoc-25.c
  5c0e095306f15dfc3883e1e40a90be2d  gcc/testsuite/gcc.dg/tree-ssa/reassoc-26.c
*************** edcbca34043637027e3769b565e4b273  gcc/te
*** 34539,34549 ****
  3d64c91be1d73ae14952613f6b8d7e64  gcc/testsuite/gcc.dg/tree-ssa/reassoc-3.c
  09bf33e4e3bcec2a224d964018864ea1  gcc/testsuite/gcc.dg/tree-ssa/reassoc-30.c
  670f544146641dc1a6ba76a0e447d89f  gcc/testsuite/gcc.dg/tree-ssa/reassoc-31.c
! 70c0f43767433a722f84f48e976645e3  gcc/testsuite/gcc.dg/tree-ssa/reassoc-32.c
! 21fd24b614fad551f75b434480111348  gcc/testsuite/gcc.dg/tree-ssa/reassoc-33.c
! ddb9d7075a03d407ace895025c31cc63  gcc/testsuite/gcc.dg/tree-ssa/reassoc-34.c
! 677b2c49243a92d76d4a387774665d4e  gcc/testsuite/gcc.dg/tree-ssa/reassoc-35.c
! 0a21da78b2e35efed8822f510a61c056  gcc/testsuite/gcc.dg/tree-ssa/reassoc-36.c
  782c570dd8174c605a8829d4728d0fab  gcc/testsuite/gcc.dg/tree-ssa/reassoc-37.c
  cc771f2aca9e78e7185effebedfe5750  gcc/testsuite/gcc.dg/tree-ssa/reassoc-38.c
  ce8fe7e8b99167c711c6540beff0f27a  gcc/testsuite/gcc.dg/tree-ssa/reassoc-39.c
--- 36364,36374 ----
  3d64c91be1d73ae14952613f6b8d7e64  gcc/testsuite/gcc.dg/tree-ssa/reassoc-3.c
  09bf33e4e3bcec2a224d964018864ea1  gcc/testsuite/gcc.dg/tree-ssa/reassoc-30.c
  670f544146641dc1a6ba76a0e447d89f  gcc/testsuite/gcc.dg/tree-ssa/reassoc-31.c
! 4cb5de356fe9368d11507b817ebd5183  gcc/testsuite/gcc.dg/tree-ssa/reassoc-32.c
! 29d72eee92e6dd84d79403a003cea69c  gcc/testsuite/gcc.dg/tree-ssa/reassoc-33.c
! 648f237d4ce3dd387a23536ab3d27157  gcc/testsuite/gcc.dg/tree-ssa/reassoc-34.c
! 252c1504f0b3b32a42c77392fc30799d  gcc/testsuite/gcc.dg/tree-ssa/reassoc-35.c
! 61728fb7a2445cb8b3181e775d65fb44  gcc/testsuite/gcc.dg/tree-ssa/reassoc-36.c
  782c570dd8174c605a8829d4728d0fab  gcc/testsuite/gcc.dg/tree-ssa/reassoc-37.c
  cc771f2aca9e78e7185effebedfe5750  gcc/testsuite/gcc.dg/tree-ssa/reassoc-38.c
  ce8fe7e8b99167c711c6540beff0f27a  gcc/testsuite/gcc.dg/tree-ssa/reassoc-39.c
*************** d66408c518c8dabc34c03159ce0ee317  gcc/te
*** 34576,34584 ****
  cd3e3a590031a7862742691f55854a22  gcc/testsuite/gcc.dg/tree-ssa/sccp-1.c
  63d4e72c76cf7ed65099b2b2f48ab339  gcc/testsuite/gcc.dg/tree-ssa/sccp-2.c
  52daa8eedbd22c7715c760e3a07d16d9  gcc/testsuite/gcc.dg/tree-ssa/scev-1.c
! 7d3ea4b211e2edf4aa94a855221c41d2  gcc/testsuite/gcc.dg/tree-ssa/scev-10.c
! 7cdfe11ba350dc4b0a2e7bea03769063  gcc/testsuite/gcc.dg/tree-ssa/scev-11.c
! c6dc5b9159731c9a80bf45b9790e6c96  gcc/testsuite/gcc.dg/tree-ssa/scev-12.c
  345f346d2664e3f4e7b0d92c6b91cd55  gcc/testsuite/gcc.dg/tree-ssa/scev-13.c
  8c83b125bec2afaa6eba2f0385dc4625  gcc/testsuite/gcc.dg/tree-ssa/scev-14.c
  d396c36b9f0d747b966a2da9958bc3ac  gcc/testsuite/gcc.dg/tree-ssa/scev-15.c
--- 36401,36409 ----
  cd3e3a590031a7862742691f55854a22  gcc/testsuite/gcc.dg/tree-ssa/sccp-1.c
  63d4e72c76cf7ed65099b2b2f48ab339  gcc/testsuite/gcc.dg/tree-ssa/sccp-2.c
  52daa8eedbd22c7715c760e3a07d16d9  gcc/testsuite/gcc.dg/tree-ssa/scev-1.c
! 9b6d28e88d3e3cb47a73857f6b2374d5  gcc/testsuite/gcc.dg/tree-ssa/scev-10.c
! 6d27b675f12be7910b821ff2d920be7b  gcc/testsuite/gcc.dg/tree-ssa/scev-11.c
! f323e72a9aefc2b2195b72e6389c468c  gcc/testsuite/gcc.dg/tree-ssa/scev-12.c
  345f346d2664e3f4e7b0d92c6b91cd55  gcc/testsuite/gcc.dg/tree-ssa/scev-13.c
  8c83b125bec2afaa6eba2f0385dc4625  gcc/testsuite/gcc.dg/tree-ssa/scev-14.c
  d396c36b9f0d747b966a2da9958bc3ac  gcc/testsuite/gcc.dg/tree-ssa/scev-15.c
*************** d396c36b9f0d747b966a2da9958bc3ac  gcc/te
*** 34589,34595 ****
  219839db1cd5ee662a1d6dfd20d04a13  gcc/testsuite/gcc.dg/tree-ssa/scev-6.c
  88d895bc49b98f8d1d3eb4330891cae8  gcc/testsuite/gcc.dg/tree-ssa/scev-7.c
  b6de5cfa7a36db0d7624f10ef9f2ced4  gcc/testsuite/gcc.dg/tree-ssa/scev-8.c
! e8df6e1660c565aa0b4b0b70f7a5ab88  gcc/testsuite/gcc.dg/tree-ssa/scev-9.c
  5c43c327edae117a89ccf8d95e2fb91b  gcc/testsuite/gcc.dg/tree-ssa/scev-cast.c
  20ce3bebeb7a8c4161d2085814041edc  gcc/testsuite/gcc.dg/tree-ssa/shorten-1.c
  2cb74ffdd8d4210ad1c6bbaddbd8a8b6  gcc/testsuite/gcc.dg/tree-ssa/slsr-1.c
--- 36414,36420 ----
  219839db1cd5ee662a1d6dfd20d04a13  gcc/testsuite/gcc.dg/tree-ssa/scev-6.c
  88d895bc49b98f8d1d3eb4330891cae8  gcc/testsuite/gcc.dg/tree-ssa/scev-7.c
  b6de5cfa7a36db0d7624f10ef9f2ced4  gcc/testsuite/gcc.dg/tree-ssa/scev-8.c
! 563ef1257d8483c3455509f08560934f  gcc/testsuite/gcc.dg/tree-ssa/scev-9.c
  5c43c327edae117a89ccf8d95e2fb91b  gcc/testsuite/gcc.dg/tree-ssa/scev-cast.c
  20ce3bebeb7a8c4161d2085814041edc  gcc/testsuite/gcc.dg/tree-ssa/shorten-1.c
  2cb74ffdd8d4210ad1c6bbaddbd8a8b6  gcc/testsuite/gcc.dg/tree-ssa/slsr-1.c
*************** d264e0370d8f66602932c4eac12473ec  gcc/te
*** 34620,34631 ****
  b036f7c57d20138574c1d71b1d315256  gcc/testsuite/gcc.dg/tree-ssa/slsr-32.c
  bc5eda2aa90e1a634fd1ec846d47c98c  gcc/testsuite/gcc.dg/tree-ssa/slsr-33.c
  be9ca5322c39937b4c3bd120411547b3  gcc/testsuite/gcc.dg/tree-ssa/slsr-34.c
! ebd6b9f669500111dbc057b5b98e5fbc  gcc/testsuite/gcc.dg/tree-ssa/slsr-35.c
! 81db7cbfe5c4230e53e84251aa52542c  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
! fd7a38d52a0d1561ff3bdc7f19d24fee  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/testsuite/gcc.dg/tree-ssa/slsr-5.c
--- 36445,36456 ----
  b036f7c57d20138574c1d71b1d315256  gcc/testsuite/gcc.dg/tree-ssa/slsr-32.c
  bc5eda2aa90e1a634fd1ec846d47c98c  gcc/testsuite/gcc.dg/tree-ssa/slsr-33.c
  be9ca5322c39937b4c3bd120411547b3  gcc/testsuite/gcc.dg/tree-ssa/slsr-34.c
! a971bbe60f2e69d2e08e300a2d555b9f  gcc/testsuite/gcc.dg/tree-ssa/slsr-35.c
! 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
  c9d54e802a416f03458eaee182da0547  gcc/testsuite/gcc.dg/tree-ssa/slsr-5.c
*************** a033da229d97e775dc989a1095ff34b8  gcc/te
*** 34638,34646 ****
  90e953eef4724c1c9123f8b3133d04ea  gcc/testsuite/gcc.dg/tree-ssa/split-path-2.c
  18bf42127373d760055aeed15ce02990  gcc/testsuite/gcc.dg/tree-ssa/split-path-3.c
  6604a0ee7102df60c56bdf9a5abb2a9d  gcc/testsuite/gcc.dg/tree-ssa/split-path-4.c
! dea054cbccc31a217aa1b0a8636283bc  gcc/testsuite/gcc.dg/tree-ssa/split-path-5.c
! 8fbd79364f0dbec16ec002bc72035996  gcc/testsuite/gcc.dg/tree-ssa/split-path-6.c
! 94df7548d8af57e0b4eb6ada05a389d3  gcc/testsuite/gcc.dg/tree-ssa/split-path-7.c
  cc58f2bbf63f20c83f4c8c0d2d1348d8  gcc/testsuite/gcc.dg/tree-ssa/split-path-8.c
  44357fdb9d6f097cddb4a49dbb427a27  gcc/testsuite/gcc.dg/tree-ssa/split-path-9.c
  5497d0691f379f1d688647db6c95cc34  gcc/testsuite/gcc.dg/tree-ssa/sra-1.c
--- 36463,36471 ----
  90e953eef4724c1c9123f8b3133d04ea  gcc/testsuite/gcc.dg/tree-ssa/split-path-2.c
  18bf42127373d760055aeed15ce02990  gcc/testsuite/gcc.dg/tree-ssa/split-path-3.c
  6604a0ee7102df60c56bdf9a5abb2a9d  gcc/testsuite/gcc.dg/tree-ssa/split-path-4.c
! 39104728821b8c8986db7aa04b80bc7e  gcc/testsuite/gcc.dg/tree-ssa/split-path-5.c
! ab73c2fcd303eb5ac2a807ccaa42784b  gcc/testsuite/gcc.dg/tree-ssa/split-path-6.c
! cb9f35ff75080b94e4fe0fca233a2a6b  gcc/testsuite/gcc.dg/tree-ssa/split-path-7.c
  cc58f2bbf63f20c83f4c8c0d2d1348d8  gcc/testsuite/gcc.dg/tree-ssa/split-path-8.c
  44357fdb9d6f097cddb4a49dbb427a27  gcc/testsuite/gcc.dg/tree-ssa/split-path-9.c
  5497d0691f379f1d688647db6c95cc34  gcc/testsuite/gcc.dg/tree-ssa/sra-1.c
*************** faaf57b1b84fa05c1524fb4c4d37da79  gcc/te
*** 34673,34679 ****
  924b9a77e836b5e7919013ae3326877c  gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-17.c
  3dc6f2e9317dc73d4ef049ae2e495b79  gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-18.c
  556b3259e44e9b16368dbce387360ef7  gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-19.c
! 30b3140c31eff01ff3c2db1fb4398a99  gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-2.c
  f7ce307f5cda4c2c02d6fe187c70e353  gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-20.c
  469e37bad0a95f695cf36b423af211c8  gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-21.c
  fae60a44a26f3083f591207a3a6655ae  gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-22.c
--- 36498,36504 ----
  924b9a77e836b5e7919013ae3326877c  gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-17.c
  3dc6f2e9317dc73d4ef049ae2e495b79  gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-18.c
  556b3259e44e9b16368dbce387360ef7  gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-19.c
! 9fd25dd4acd63f8ab405623168f6273e  gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-2.c
  f7ce307f5cda4c2c02d6fe187c70e353  gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-20.c
  469e37bad0a95f695cf36b423af211c8  gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-21.c
  fae60a44a26f3083f591207a3a6655ae  gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-22.c
*************** a4485085185fcdf9689ad1ba99aa8d60  gcc/te
*** 34699,34722 ****
  fc3e2aaf0b10a13e63cd6178c5dc77cb  gcc/testsuite/gcc.dg/tree-ssa/ssa-copyprop-2.c
  0ab53c5566862b724caea49a0b1314ac  gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-1.c
  754437368439973765d70d8243ee96ae  gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-2.c
! 995ac1aa923bff6a1255aa12f04be617  gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-3.c
  2e7f51e62135823fd2ea40d5d9f5214a  gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-4.c
  b596f72df33a0229e9487dc91cf6fc0f  gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-5.c
  4b92b155e06a5ac3cdfc687dd384a3df  gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-6.c
  867e58b89d0d7e5db1ae140b1b97f4ce  gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-7.c
  b7ccd5f262237601ddd937d39599c479  gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-8.c
! 57e63fc73bb8a75a73c68ccdaf0692b4  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
! ca816c844f79e170c80667dc178f4702  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-2.c
  0b33d127d9be03423c182ddedafe0447  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-3.c
  0e4a93b4f8ef0ea9a03525280c2e9e66  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-4.c
  b8c4472d1c80ee7abb4e274e617c5565  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-5.c
  b0d6e32883a96f27b3101f46f96e7cc9  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-6.c
  22a07e693f481f12b56da34ad8da9a7d  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-7.c
  8baf2a886e775dd5affd20e88b8cf3c9  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-dse-1.c
  46bb6893e5241058267284efbb252027  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-1.c
  64e7c8e4ccc4b1ec9f49e584741aeb7e  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-10.c
  f078b76f116813afe8f33b153c897086  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-2a.c
  bc1ab9f7c64963b902256b8a4333636f  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-2b.c
  610faba67aec3e1a40afea8c0d5a3485  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-2c.c
--- 36524,36555 ----
  fc3e2aaf0b10a13e63cd6178c5dc77cb  gcc/testsuite/gcc.dg/tree-ssa/ssa-copyprop-2.c
  0ab53c5566862b724caea49a0b1314ac  gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-1.c
  754437368439973765d70d8243ee96ae  gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-2.c
! 5d9e7dcd76108baafbbd140522e63179  gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-3.c
  2e7f51e62135823fd2ea40d5d9f5214a  gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-4.c
  b596f72df33a0229e9487dc91cf6fc0f  gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-5.c
  4b92b155e06a5ac3cdfc687dd384a3df  gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-6.c
  867e58b89d0d7e5db1ae140b1b97f4ce  gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-7.c
  b7ccd5f262237601ddd937d39599c479  gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-8.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
! c947f7a7b2ab4b92803c522e1e0892ba  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-2.c
  0b33d127d9be03423c182ddedafe0447  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-3.c
  0e4a93b4f8ef0ea9a03525280c2e9e66  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-4.c
  b8c4472d1c80ee7abb4e274e617c5565  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-5.c
  b0d6e32883a96f27b3101f46f96e7cc9  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-6.c
  22a07e693f481f12b56da34ad8da9a7d  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-7.c
  8baf2a886e775dd5affd20e88b8cf3c9  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-dse-1.c
+ 44513b6f07ef60d870f1b8f7b24b654b  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-simplify-1.c
  46bb6893e5241058267284efbb252027  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-1.c
  64e7c8e4ccc4b1ec9f49e584741aeb7e  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-10.c
+ 1672948604dd45acbdb60621f5b27789  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-11.c
+ 8223761b9af7d41bd02b081c80419c01  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-12.c
+ e8b76a04bfe9ee86c58f5bc8c293fbba  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-13.c
+ 407d516c01f9d4d786a0fd7e5306fc26  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-14.c
+ 922d1f9f1f6ab599216e118d568912cf  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-15.c
+ ca9dc7e901d59d5b3031a47c1748d79a  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-16.c
+ 6a062095cfc49b033ae64a9b8f6bb271  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-17.c
  f078b76f116813afe8f33b153c897086  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-2a.c
  bc1ab9f7c64963b902256b8a4333636f  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-2b.c
  610faba67aec3e1a40afea8c0d5a3485  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-2c.c
*************** bc1ab9f7c64963b902256b8a4333636f  gcc/te
*** 34725,34731 ****
  0ff9b68a9683b76d59ce929f46916dd7  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-2f.c
  05aea1a4d7030c5cf55b50b84dc9f78f  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-2g.c
  15738f38675ee569391bc24effefc64b  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-2h.c
! c9b1217e48181fc3dd7a1645038eb794  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-4.c
  881f6db6cb1a3e63bf8dd2e0f203cc95  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-5.c
  f6ccb52c3140d22f97ee018c8f29b47f  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-6.c
  5bb161396c8e3625ca91b004b10bdcca  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-7.c
--- 36558,36564 ----
  0ff9b68a9683b76d59ce929f46916dd7  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-2f.c
  05aea1a4d7030c5cf55b50b84dc9f78f  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-2g.c
  15738f38675ee569391bc24effefc64b  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-2h.c
! edb99a2233a066c0f5ae4162ffb7814c  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-4.c
  881f6db6cb1a3e63bf8dd2e0f203cc95  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-5.c
  f6ccb52c3140d22f97ee018c8f29b47f  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-6.c
  5bb161396c8e3625ca91b004b10bdcca  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-7.c
*************** f3c1018cd7257cd934c6df52bc0e7440  gcc/te
*** 34747,34755 ****
--- 36580,36590 ----
  33ae9727bb74ef8f4880c77b0c67c256  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-21.c
  bfc267d4db9f65f0cf5222db4876d174  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-24.c
  9b065a37e7fbc662c999af80c73b937c  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-25.c
+ 07b4ce61f3fc60e6f1f15fb4a0c63327  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-26.c
  81c0b2985c3caeb1dcb4c0e29a25540e  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-28.c
  8d225e4da5a51564be3fe1606f99bb9f  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-29.c
  58f01e588bb6eda6cadea1242d43f6a2  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-3.c
+ c0ca0e94e1ce558f4728360450f8122b  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-30.c
  ec8e29fa1c7b5009e277591545096959  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-4.c
  8464edd661b6724b6cc8a6c0591e9ada  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-5.c
  d67df09df0e5c754eb61edc5766cd64b  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-6.c
*************** b1a33369c3e912c4411619ea3acffd32  gcc/te
*** 34805,34811 ****
--- 36640,36650 ----
  0ab14b73ebeaacb1bfe044d4642a2fc7  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-54.c
  9afe92bbb793481d67a2eb885a1366eb  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-55.c
  33db6345b82f93d88614dbcc21533a26  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-56.c
+ df1d005d9330af682db40869d740ce2b  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-58.c
+ d3cb4389fc5f2080a551e055e7014893  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-59.c
  341b292336999f97a6eb6e6a4a38613a  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-6.c
+ 1a1969c9cac274e4a1b0151359849f0c  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-61.c
+ 4d704b1ed6e02c20a1479c44b5ab50eb  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-62.c
  fe887a26d5f3f55d50823a788a80b191  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-7.c
  ee8929c75a08d3026beb2a71adce80fa  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-8.c
  6c8e375b119ce1b63e19eed89459c12f  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-9.c
*************** d8fd271beac9fb50c62ae9fe35942746  gcc/te
*** 34818,34824 ****
  ef248fefdf4c55a5bae752c45ccbb1ca  gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-10.c
  3f3aaa9436c3b80ea80253215d20cac2  gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-11.c
  919243bbf846990fa260beeb0a2ab0f0  gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-12.c
! 96dc4dd236479467da84bacc0e2a5a6b  gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-13.c
  36150436c918d3a32fe15db8cba931ee  gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-2.c
  b2765abeccae3f34c0bec404ef0c4f50  gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-3.c
  379f242fb0d1aa900a2552ef8a2871cd  gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-4.c
--- 36657,36663 ----
  ef248fefdf4c55a5bae752c45ccbb1ca  gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-10.c
  3f3aaa9436c3b80ea80253215d20cac2  gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-11.c
  919243bbf846990fa260beeb0a2ab0f0  gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-12.c
! 3825a7e2c1e1d37eee50cb16bb231ce9  gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-13.c
  36150436c918d3a32fe15db8cba931ee  gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-2.c
  b2765abeccae3f34c0bec404ef0c4f50  gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-3.c
  379f242fb0d1aa900a2552ef8a2871cd  gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-4.c
*************** b2765abeccae3f34c0bec404ef0c4f50  gcc/te
*** 34827,34841 ****
  1a783995c35050112a798c86939321a7  gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-7.c
  282d3da99ab25ab76a45547062330bc3  gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-8.c
  dff9b462f389ba973e9a104b6e564422  gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-9.c
! c6c2179ef0a448fd37d6319012c79b7a  gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-ccmp-1.c
! db21fca397bd08268a2bb790bfb1d022  gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-ccmp-2.c
! f9d88b1c04db68fa11fe945c94354b45  gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-ccmp-3.c
! ab98567b6849800033dfeaff86d8000e  gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-ccmp-4.c
! 8db3e311d119e8a069d8d6e395fa5de8  gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-ccmp-5.c
! d13f3d578a93d66782c160580a012d2f  gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-ccmp-6.c
  6a24e17b687dca694ffe1d65867ad9e5  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-1.c
  0127e8622d56a87fffe76987fdb249f8  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-10.c
! 6f5f55bd4842c02d8b4ac011e0a399bf  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-11.c
  9aae14b32a26cb59ea2b62b4c541abd6  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-12.c
  e8ad1077cbbf867b677d6dbe00524406  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-2.c
  c0ab69fe1a4b916817bbafe5e5048c34  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-3.c
--- 36666,36680 ----
  1a783995c35050112a798c86939321a7  gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-7.c
  282d3da99ab25ab76a45547062330bc3  gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-8.c
  dff9b462f389ba973e9a104b6e564422  gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-9.c
! dd758333aaa4814f6964a7f12687c921  gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-ccmp-1.c
! 0eec26524fcf3993a255dcd1d187c950  gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-ccmp-2.c
! d1686f00907a08285d390eb8ed5a5448  gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-ccmp-3.c
! b1ac95abf107d2ae0ae627761c724267  gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-ccmp-4.c
! 621881a190df236dbd32e9c5a488f096  gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-ccmp-5.c
! 41dfa317d96142d8416bc05cee203433  gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-ccmp-6.c
  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
  e8ad1077cbbf867b677d6dbe00524406  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-2.c
  c0ab69fe1a4b916817bbafe5e5048c34  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-3.c
*************** bc456ba2c91652bd2140d56987cba543  gcc/te
*** 34868,34874 ****
  a06281be684fbc9936ebf659c6e5fa95  gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-29.c
  999435f66d370ea9ebf68128c98b001f  gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-3.c
  de3238189370c6e1e9d75522cf831a6a  gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-30.c
! e861cc692f17006a0a2340402da2b213  gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-31.c
  d7800e6a28e5b70e0293c932b14894f8  gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-32.c
  39d8ac143c15d11301c705a380a6769b  gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-4.c
  bd3ae093f96e1ef4c6e63e83f1c59945  gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-5.c
--- 36707,36713 ----
  a06281be684fbc9936ebf659c6e5fa95  gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-29.c
  999435f66d370ea9ebf68128c98b001f  gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-3.c
  de3238189370c6e1e9d75522cf831a6a  gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-30.c
! 7e73c668c31b6f73c95b69cbdc80eac5  gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-31.c
  d7800e6a28e5b70e0293c932b14894f8  gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-32.c
  39d8ac143c15d11301c705a380a6769b  gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-4.c
  bd3ae093f96e1ef4c6e63e83f1c59945  gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-5.c
*************** bd3ae093f96e1ef4c6e63e83f1c59945  gcc/te
*** 34877,34889 ****
  71c9cbd06e98f6406cbfbaaa90a21b50  gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-8.c
  57dbd5ddc1988895854ed27426c6ee71  gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-9.c
  ca855609bb608ce2b8cc0450d0bae3d5  gcc/testsuite/gcc.dg/tree-ssa/ssa-sccvn-1.c
! e401ddcbc584a0d51a47462e0eb69969  gcc/testsuite/gcc.dg/tree-ssa/ssa-sccvn-2.c
  c1c886b77a9aae16c0297c9b61312de4  gcc/testsuite/gcc.dg/tree-ssa/ssa-sccvn-3.c
  3629557537a9a826caeefb9ae34e9c32  gcc/testsuite/gcc.dg/tree-ssa/ssa-sccvn-4.c
  242885279b268573e0988b44418c981a  gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-1.c
  eb6720628ef9a3d0e465f645012cfb11  gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-10.c
! 0709eba21451aadd0a6d5058498493e3  gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-11.c
! 583a3fa623d6bf15f2981154e04e1af2  gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-12.c
  4bbb26d9f9200b0547c48796adb2e91a  gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-2.c
  9e954e0c4211f2af3854b3c3f34d48df  gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-3.c
  1b3e5b9953e3b8856581281f20abc008  gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-4.c
--- 36716,36730 ----
  71c9cbd06e98f6406cbfbaaa90a21b50  gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-8.c
  57dbd5ddc1988895854ed27426c6ee71  gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-9.c
  ca855609bb608ce2b8cc0450d0bae3d5  gcc/testsuite/gcc.dg/tree-ssa/ssa-sccvn-1.c
! 23af90b604c6b27c04e1b8df85c468e8  gcc/testsuite/gcc.dg/tree-ssa/ssa-sccvn-2.c
  c1c886b77a9aae16c0297c9b61312de4  gcc/testsuite/gcc.dg/tree-ssa/ssa-sccvn-3.c
  3629557537a9a826caeefb9ae34e9c32  gcc/testsuite/gcc.dg/tree-ssa/ssa-sccvn-4.c
  242885279b268573e0988b44418c981a  gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-1.c
  eb6720628ef9a3d0e465f645012cfb11  gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-10.c
! b40ae88699747b0b89167ecdd1146400  gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-11.c
! be3ea69b52e071fd375d56784f1b9d68  gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-12.c
! f237fb84d8c929de79482cd9290e2e8a  gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-15.c
! 9e4571c11c00c3659ac6fa7b355ad2a1  gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-16.c
  4bbb26d9f9200b0547c48796adb2e91a  gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-2.c
  9e954e0c4211f2af3854b3c3f34d48df  gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-3.c
  1b3e5b9953e3b8856581281f20abc008  gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-4.c
*************** dfdca5deb48ba686aba992a2c98b3bda  gcc/te
*** 34894,34905 ****
  b57ccc1526e445e5203c93469ac934d4  gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-9.c
  22a09ccc40efc92a2c94b0f90b7cfb10  gcc/testsuite/gcc.dg/tree-ssa/ssa-store-ccp-1.c
  f32d0ce05b3a89e686f494466ba0bfe0  gcc/testsuite/gcc.dg/tree-ssa/ssa-store-ccp-2.c
! fd78904b8ed9c30b931e265c06228e32  gcc/testsuite/gcc.dg/tree-ssa/ssa-store-ccp-3.c
! c5443bc33fe22e19644c650821eaf35f  gcc/testsuite/gcc.dg/tree-ssa/ssa-store-ccp-4.c
  ab9abe7fcd96d73c22e1b97a78498f0c  gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-11.c
! b01412553b8adb578e2fd2ea06777815  gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-12.c
  59b1bfef623b1632b1678783978cf69d  gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-13.c
  78175aa70d285cf58b75925e097ccc89  gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-14.c
  3034b4000b60b5b753b2459adcdb4f6b  gcc/testsuite/gcc.dg/tree-ssa/ssa-vrp-thread-1.c
  cf076a408f888239f000a5c607cf215c  gcc/testsuite/gcc.dg/tree-ssa/stdarg-1.c
  1ce84b38a201a33f440248457c9b9bc7  gcc/testsuite/gcc.dg/tree-ssa/stdarg-2.c
--- 36735,36747 ----
  b57ccc1526e445e5203c93469ac934d4  gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-9.c
  22a09ccc40efc92a2c94b0f90b7cfb10  gcc/testsuite/gcc.dg/tree-ssa/ssa-store-ccp-1.c
  f32d0ce05b3a89e686f494466ba0bfe0  gcc/testsuite/gcc.dg/tree-ssa/ssa-store-ccp-2.c
! 7c3e106e78bd4c671668a508fa7162f9  gcc/testsuite/gcc.dg/tree-ssa/ssa-store-ccp-3.c
! f8d79acf16a7b0f25c65f787eb80a4f0  gcc/testsuite/gcc.dg/tree-ssa/ssa-store-ccp-4.c
  ab9abe7fcd96d73c22e1b97a78498f0c  gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-11.c
! fc8b1bc2f2e791a83a706c55516a922c  gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-12.c
  59b1bfef623b1632b1678783978cf69d  gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-13.c
  78175aa70d285cf58b75925e097ccc89  gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-14.c
+ d27e19cbc74977f6d1e4eb7b508acbd2  gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-15.c
  3034b4000b60b5b753b2459adcdb4f6b  gcc/testsuite/gcc.dg/tree-ssa/ssa-vrp-thread-1.c
  cf076a408f888239f000a5c607cf215c  gcc/testsuite/gcc.dg/tree-ssa/stdarg-1.c
  1ce84b38a201a33f440248457c9b9bc7  gcc/testsuite/gcc.dg/tree-ssa/stdarg-2.c
*************** ef54f7c0b0aaacab1bba5efadd045b5d  gcc/te
*** 34909,34914 ****
--- 36751,36760 ----
  c75555c83abd66551e17d15c9b49868b  gcc/testsuite/gcc.dg/tree-ssa/stdarg-6.c
  8cc16ff7bf9362ecbdc193a9e2c2096b  gcc/testsuite/gcc.dg/tree-ssa/stdarg-7.c
  9de1fa7dd0468c734eb231c5a5e95d5d  gcc/testsuite/gcc.dg/tree-ssa/strlen-1.c
+ b0dc7b52106e890926486ecbf487de4f  gcc/testsuite/gcc.dg/tree-ssa/strlen-2.c
+ bb7e1bd5cca1d575ddd8aece7fd041b1  gcc/testsuite/gcc.dg/tree-ssa/strncat.c
+ 6e680f949c844191962eff6a4f8926c5  gcc/testsuite/gcc.dg/tree-ssa/strncpy-1.c
+ 212b9ffca938737df7e139957b6e4a9a  gcc/testsuite/gcc.dg/tree-ssa/strncpy-2.c
  799c82e1222a4c62aa46ce9ac97eeb23  gcc/testsuite/gcc.dg/tree-ssa/struct-aliasing-1.c
  02e3b4a393fb4abb6484e71bc0fc7b42  gcc/testsuite/gcc.dg/tree-ssa/struct-aliasing-2.c
  588550a4a7303afdd96f366703394208  gcc/testsuite/gcc.dg/tree-ssa/structopt-1.c
*************** b5a935fe1a03cec403169035ab628b03  gcc/te
*** 34924,34929 ****
--- 36770,36776 ----
  32dfd109a9c11ce1556dfe886e03d8df  gcc/testsuite/gcc.dg/tree-ssa/tailcall-7.c
  af8b28e4facc1d3e1f64afc0b6395f93  gcc/testsuite/gcc.dg/tree-ssa/tailcall-8-run.c
  9935b176dc714550fac1c5b38c4d7f14  gcc/testsuite/gcc.dg/tree-ssa/tailcall-8.c
+ ac68e635052c49f6b773cb66ed20a1e8  gcc/testsuite/gcc.dg/tree-ssa/tailcall-9.c
  659605d81a752aa40c7a13466f537221  gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-1.c
  08864492176abbf1ca1d6b5df85dbe2b  gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-2.c
  427c26d47ff6abc61671f7d019507b10  gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-3.c
*************** af8b28e4facc1d3e1f64afc0b6395f93  gcc/te
*** 34931,34937 ****
  58a143ccb257ae48a15b6d6f25b43ef8  gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-5.c
  e84424985e065b3a1999b1ea596c8e5c  gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-6.c
  6400d5651fcf9e68caeb41223c2fced7  gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-7.c
! f99d714ba91ee38d1350cc9d8338edac  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
  8eba3ac4433d17a221a413cc0ee2c601  gcc/testsuite/gcc.dg/tree-ssa/upcast-1.c
--- 36778,36784 ----
  58a143ccb257ae48a15b6d6f25b43ef8  gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-5.c
  e84424985e065b3a1999b1ea596c8e5c  gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-6.c
  6400d5651fcf9e68caeb41223c2fced7  gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-7.c
! 954af492bfde4c7e1e75c22b1a227b9b  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
  8eba3ac4433d17a221a413cc0ee2c601  gcc/testsuite/gcc.dg/tree-ssa/upcast-1.c
*************** ba71974763cb74b80bc8550c30525e12  gcc/te
*** 34940,34945 ****
--- 36787,36793 ----
  6235b1f2d30d3e6bb100898f12a6126a  gcc/testsuite/gcc.dg/tree-ssa/update-unroll-1.c
  cd2e3f109765d4f1f75bba5025a94135  gcc/testsuite/gcc.dg/tree-ssa/update-unswitch-1.c
  a07b328f828c5a6dc6814d58e08a5752  gcc/testsuite/gcc.dg/tree-ssa/useless-1.c
+ 76db98755bcf2873abe9e88c68154bf5  gcc/testsuite/gcc.dg/tree-ssa/vce-1.c
  f85c8615f3ea51105c4b0deb990f425b  gcc/testsuite/gcc.dg/tree-ssa/vector-1.c
  2a5f9b88e20858cdca30caa31058acc9  gcc/testsuite/gcc.dg/tree-ssa/vector-2.c
  6ea6a701eaec7e89b5495272360e279d  gcc/testsuite/gcc.dg/tree-ssa/vector-3.c
*************** e80d3469a219d372d47b4b4a1382ca90  gcc/te
*** 34958,34967 ****
  7a33ee6225f67e7509159d4dc9ffeebb  gcc/testsuite/gcc.dg/tree-ssa/vrp09.c
  8c9b46ae3e96ee0bd4ea529a368c310d  gcc/testsuite/gcc.dg/tree-ssa/vrp10.c
  35a86d5c3d5d6dfdbf910fd80c544328  gcc/testsuite/gcc.dg/tree-ssa/vrp100.c
! da42b99606195cdf063b2b398db273ea  gcc/testsuite/gcc.dg/tree-ssa/vrp101.c
  864442ccd0b5ca78ebeec5f53bc8b8cd  gcc/testsuite/gcc.dg/tree-ssa/vrp102.c
  196065feb5b1e79954db1d95b2f30486  gcc/testsuite/gcc.dg/tree-ssa/vrp103.c
! d2d23e0252619655b8efcf1bd780aece  gcc/testsuite/gcc.dg/tree-ssa/vrp104.c
  afd41c82e32015f168a88ba986ee25b7  gcc/testsuite/gcc.dg/tree-ssa/vrp105.c
  b609b0dd9f97581b4daa1b8798fb6f46  gcc/testsuite/gcc.dg/tree-ssa/vrp106.c
  dc9d0a3bcdb954cc7481eed9cc4d0598  gcc/testsuite/gcc.dg/tree-ssa/vrp107.c
--- 36806,36815 ----
  7a33ee6225f67e7509159d4dc9ffeebb  gcc/testsuite/gcc.dg/tree-ssa/vrp09.c
  8c9b46ae3e96ee0bd4ea529a368c310d  gcc/testsuite/gcc.dg/tree-ssa/vrp10.c
  35a86d5c3d5d6dfdbf910fd80c544328  gcc/testsuite/gcc.dg/tree-ssa/vrp100.c
! 769a550cb3d0826e1a3d8c29801c97e8  gcc/testsuite/gcc.dg/tree-ssa/vrp101.c
  864442ccd0b5ca78ebeec5f53bc8b8cd  gcc/testsuite/gcc.dg/tree-ssa/vrp102.c
  196065feb5b1e79954db1d95b2f30486  gcc/testsuite/gcc.dg/tree-ssa/vrp103.c
! 672d2550e9d929e0d9292d12bdb5e658  gcc/testsuite/gcc.dg/tree-ssa/vrp104.c
  afd41c82e32015f168a88ba986ee25b7  gcc/testsuite/gcc.dg/tree-ssa/vrp105.c
  b609b0dd9f97581b4daa1b8798fb6f46  gcc/testsuite/gcc.dg/tree-ssa/vrp106.c
  dc9d0a3bcdb954cc7481eed9cc4d0598  gcc/testsuite/gcc.dg/tree-ssa/vrp107.c
*************** baa34115197bb73ae1fe2e3cd0ee48f1  gcc/te
*** 34969,34976 ****
  c67cf0466fac268885ab9cb1e32a9c9c  gcc/testsuite/gcc.dg/tree-ssa/vrp109.c
  02186bb95ddef36513b909863c8d3ed8  gcc/testsuite/gcc.dg/tree-ssa/vrp11.c
  32b55fee9ad1ebad5d4674969e5762f4  gcc/testsuite/gcc.dg/tree-ssa/vrp110.c
! d724d7ec05622a70bf8755f8070f53f5  gcc/testsuite/gcc.dg/tree-ssa/vrp111.c
  9cb326fc9cc53ef1d75fc5716fb3d044  gcc/testsuite/gcc.dg/tree-ssa/vrp112.c
  419ced6aac18d78614ce2296a1a6b660  gcc/testsuite/gcc.dg/tree-ssa/vrp12.c
  5c02e78e0a19d3b4ab362211af9c057d  gcc/testsuite/gcc.dg/tree-ssa/vrp13.c
  7e4e2677592121fe637fead20ff82420  gcc/testsuite/gcc.dg/tree-ssa/vrp14.c
--- 36817,36830 ----
  c67cf0466fac268885ab9cb1e32a9c9c  gcc/testsuite/gcc.dg/tree-ssa/vrp109.c
  02186bb95ddef36513b909863c8d3ed8  gcc/testsuite/gcc.dg/tree-ssa/vrp11.c
  32b55fee9ad1ebad5d4674969e5762f4  gcc/testsuite/gcc.dg/tree-ssa/vrp110.c
! c2822e9ffaa310773a40d7337609efb3  gcc/testsuite/gcc.dg/tree-ssa/vrp111.c
  9cb326fc9cc53ef1d75fc5716fb3d044  gcc/testsuite/gcc.dg/tree-ssa/vrp112.c
+ d065797aff8b140917acea1dfde2df78  gcc/testsuite/gcc.dg/tree-ssa/vrp113.c
+ 031731b8c2f1236761448079769d9a6c  gcc/testsuite/gcc.dg/tree-ssa/vrp114.c
+ de65979960b8a729f3467423d341cd4b  gcc/testsuite/gcc.dg/tree-ssa/vrp115.c
+ 5ea0709883036b7d4fd90c7acb279a20  gcc/testsuite/gcc.dg/tree-ssa/vrp116.c
+ 509af9981c6d45aceb7b4b13cc9f53d3  gcc/testsuite/gcc.dg/tree-ssa/vrp117.c
+ a2d068c8b5d5ecb7aeb9d6f60f75690b  gcc/testsuite/gcc.dg/tree-ssa/vrp118.c
  419ced6aac18d78614ce2296a1a6b660  gcc/testsuite/gcc.dg/tree-ssa/vrp12.c
  5c02e78e0a19d3b4ab362211af9c057d  gcc/testsuite/gcc.dg/tree-ssa/vrp13.c
  7e4e2677592121fe637fead20ff82420  gcc/testsuite/gcc.dg/tree-ssa/vrp14.c
*************** cef26177933bc95eaed79f5ee504ba2b  gcc/te
*** 34983,34989 ****
  f2e4fe4214ef074f2445f096ddd49c9c  gcc/testsuite/gcc.dg/tree-ssa/vrp21.c
  9f53fc578b207368ed4f3e8c297f9b27  gcc/testsuite/gcc.dg/tree-ssa/vrp22.c
  3a66e956e2abb9e316aed69efb32e9cf  gcc/testsuite/gcc.dg/tree-ssa/vrp23.c
! 36b3362d1e10cf9cffcbbf6b058e60c1  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
--- 36837,36843 ----
  f2e4fe4214ef074f2445f096ddd49c9c  gcc/testsuite/gcc.dg/tree-ssa/vrp21.c
  9f53fc578b207368ed4f3e8c297f9b27  gcc/testsuite/gcc.dg/tree-ssa/vrp22.c
  3a66e956e2abb9e316aed69efb32e9cf  gcc/testsuite/gcc.dg/tree-ssa/vrp23.c
! e5da9bf128845b086c750bf23cca6562  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
*************** d0598ba2d5f45d6ef63021b0be3f6106  gcc/te
*** 34993,35005 ****
  8851d4bb733f022f8f1cc01199ea47fd  gcc/testsuite/gcc.dg/tree-ssa/vrp31.c
  9307f7054a7feb4804716224e260ee0a  gcc/testsuite/gcc.dg/tree-ssa/vrp32.c
  04661df211544edb45cacac477f21c8c  gcc/testsuite/gcc.dg/tree-ssa/vrp33.c
! e5a94e448cd0635977fea647ee4ffafa  gcc/testsuite/gcc.dg/tree-ssa/vrp34.c
! 7d51f2df10367203b5bd7f7f44c0e940  gcc/testsuite/gcc.dg/tree-ssa/vrp35.c
! 21d0df0aae3364dbbd001f8813be7e4b  gcc/testsuite/gcc.dg/tree-ssa/vrp36.c
  0320cab5b1ae70504995076252f095de  gcc/testsuite/gcc.dg/tree-ssa/vrp37.c
  0ef93be0d1c5bd1f30261042fdffa318  gcc/testsuite/gcc.dg/tree-ssa/vrp38.c
  9e66ae8010c46cba7f9292ed74c65200  gcc/testsuite/gcc.dg/tree-ssa/vrp39.c
! 7bbd65bf0a282e797f9de83e4fd55ab4  gcc/testsuite/gcc.dg/tree-ssa/vrp40.c
  21a536a8acfd61c0ddcce340f707721d  gcc/testsuite/gcc.dg/tree-ssa/vrp41.c
  313457d30e5e9345a15f537c30282448  gcc/testsuite/gcc.dg/tree-ssa/vrp42.c
  70c9b424c7b9ceb5a0dddbb96f081ed8  gcc/testsuite/gcc.dg/tree-ssa/vrp43.c
--- 36847,36859 ----
  8851d4bb733f022f8f1cc01199ea47fd  gcc/testsuite/gcc.dg/tree-ssa/vrp31.c
  9307f7054a7feb4804716224e260ee0a  gcc/testsuite/gcc.dg/tree-ssa/vrp32.c
  04661df211544edb45cacac477f21c8c  gcc/testsuite/gcc.dg/tree-ssa/vrp33.c
! 99d603c2a4486a008a06e53fafb9344b  gcc/testsuite/gcc.dg/tree-ssa/vrp34.c
! cc9dc707c3eee82a1ab7bd80848580f2  gcc/testsuite/gcc.dg/tree-ssa/vrp35.c
! e9bcf1ad006c50e0fa341de3b0e3c7be  gcc/testsuite/gcc.dg/tree-ssa/vrp36.c
  0320cab5b1ae70504995076252f095de  gcc/testsuite/gcc.dg/tree-ssa/vrp37.c
  0ef93be0d1c5bd1f30261042fdffa318  gcc/testsuite/gcc.dg/tree-ssa/vrp38.c
  9e66ae8010c46cba7f9292ed74c65200  gcc/testsuite/gcc.dg/tree-ssa/vrp39.c
! a09378d2b6faf9db3eeee9329a4e769b  gcc/testsuite/gcc.dg/tree-ssa/vrp40.c
  21a536a8acfd61c0ddcce340f707721d  gcc/testsuite/gcc.dg/tree-ssa/vrp41.c
  313457d30e5e9345a15f537c30282448  gcc/testsuite/gcc.dg/tree-ssa/vrp42.c
  70c9b424c7b9ceb5a0dddbb96f081ed8  gcc/testsuite/gcc.dg/tree-ssa/vrp43.c
*************** dbcccd12dda553ecb5a906b8fe24ab00  gcc/te
*** 35065,35081 ****
  1de3cdbef0251dc14d21f1fc5e419d05  gcc/testsuite/gcc.dg/tree-ssa/wnull-dereference.c
  016029e7b08dbc8fe1d266551df2fdd3  gcc/testsuite/gcc.dg/tree-ssa/writeonly.c
  22eb0b8eeae794a6956326b2c9383fb2  gcc/testsuite/gcc.dg/trunc-1.c
! 6193757156510ad2bdd1315e65f0d5df  gcc/testsuite/gcc.dg/tsan/tsan.exp
! 19bcece84455539263b66ec6c2bfaa0c  gcc/testsuite/gcc.dg/two-types-1.c
  95ad9b7c791f67ee2f4be1bd942e6718  gcc/testsuite/gcc.dg/two-types-10.c
! 18d927a80dfd6b62c7b9a7f1087bddee  gcc/testsuite/gcc.dg/two-types-2.c
  27f0e209192769b321903ecb1b1b4f6d  gcc/testsuite/gcc.dg/two-types-3.c
! f63ff5680f9ddf2bc63277d0a4c08517  gcc/testsuite/gcc.dg/two-types-4.c
! 5fc913d9e73eab4c6092cdc05356f67b  gcc/testsuite/gcc.dg/two-types-5.c
! 400e39c21b41768d8552c521ae96cd8a  gcc/testsuite/gcc.dg/two-types-6.c
! 6369676298b1c1a2774be3bd9a4debe9  gcc/testsuite/gcc.dg/two-types-7.c
! 7be1d9fd7d97b48d909eab0f6b8e41cb  gcc/testsuite/gcc.dg/two-types-8.c
! 82aa4e7de078e34a9d6f0e59f30f834d  gcc/testsuite/gcc.dg/two-types-9.c
  5a58fa954426a9307499c22fa4d90b23  gcc/testsuite/gcc.dg/typedef-init.c
  033f9eaca6e2312d2cefbe1ee49f3460  gcc/testsuite/gcc.dg/typedef-redecl.c
  7b938b0cb614b822c40b1d1cd3386863  gcc/testsuite/gcc.dg/typedef-redecl.h
--- 36919,36935 ----
  1de3cdbef0251dc14d21f1fc5e419d05  gcc/testsuite/gcc.dg/tree-ssa/wnull-dereference.c
  016029e7b08dbc8fe1d266551df2fdd3  gcc/testsuite/gcc.dg/tree-ssa/writeonly.c
  22eb0b8eeae794a6956326b2c9383fb2  gcc/testsuite/gcc.dg/trunc-1.c
! f0d64000e95966a7c1501c28b23c98e9  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
  27f0e209192769b321903ecb1b1b4f6d  gcc/testsuite/gcc.dg/two-types-3.c
! fd5b49f3fedd25ab27f15b7ded8d3673  gcc/testsuite/gcc.dg/two-types-4.c
! 33c16da9f0513ac7cb2bfeba447b5dd4  gcc/testsuite/gcc.dg/two-types-5.c
! ee666c921ea28ec3cc93df70ecc3d508  gcc/testsuite/gcc.dg/two-types-6.c
! 4efd24ff7eeea0ccd320377bb6c5dc21  gcc/testsuite/gcc.dg/two-types-7.c
! c3e1ec66a1ba63c23068279c0986a103  gcc/testsuite/gcc.dg/two-types-8.c
! 6baa347d522e3cfda6d4ab4f35041b62  gcc/testsuite/gcc.dg/two-types-9.c
  5a58fa954426a9307499c22fa4d90b23  gcc/testsuite/gcc.dg/typedef-init.c
  033f9eaca6e2312d2cefbe1ee49f3460  gcc/testsuite/gcc.dg/typedef-redecl.c
  7b938b0cb614b822c40b1d1cd3386863  gcc/testsuite/gcc.dg/typedef-redecl.h
*************** f63ff5680f9ddf2bc63277d0a4c08517  gcc/te
*** 35086,35092 ****
  38f4467be27d0432adea9abcaf9cc366  gcc/testsuite/gcc.dg/typespec-1.c
  b9d67dbc50419a82b76d70029936f329  gcc/testsuite/gcc.dg/ubsan/bounds-1.c
  8ef707e5f4c734c1b8be85269cd93d06  gcc/testsuite/gcc.dg/ubsan/bounds-2.c
! 804ebe3c0a2fc929bc12b7e5c7c4098f  gcc/testsuite/gcc.dg/ubsan/bounds-3.c
  7740693c7bb19d8fc6ab727a6ffbb65c  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
--- 36940,36946 ----
  38f4467be27d0432adea9abcaf9cc366  gcc/testsuite/gcc.dg/typespec-1.c
  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
  7740693c7bb19d8fc6ab727a6ffbb65c  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
*************** e2c0ae3b7ed6cf4f7eed5c4ed76ee410  gcc/te
*** 35098,35106 ****
  acf0af3723cb1d2f1a5fe0dbbb7d9fa9  gcc/testsuite/gcc.dg/ubsan/c99-wrapv-shift-1.c
  24e57c18350248c3a31ee78f8f40e95b  gcc/testsuite/gcc.dg/ubsan/c99-wrapv-shift-2.c
  7255cefa0dd234815e49556ae85bf1f6  gcc/testsuite/gcc.dg/ubsan/float-cast-overflow-atomic.c
! 370e169abcaaa0eac424891e30072407  gcc/testsuite/gcc.dg/ubsan/float-cast-overflow-bf.c
  3325507ff87bcf4f63df3972ec6895c4  gcc/testsuite/gcc.dg/ubsan/ipa-icf-1.c
! 661bee2278bfcab7c728ded0729dcc16  gcc/testsuite/gcc.dg/ubsan/object-size-9.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
--- 36952,36960 ----
  acf0af3723cb1d2f1a5fe0dbbb7d9fa9  gcc/testsuite/gcc.dg/ubsan/c99-wrapv-shift-1.c
  24e57c18350248c3a31ee78f8f40e95b  gcc/testsuite/gcc.dg/ubsan/c99-wrapv-shift-2.c
  7255cefa0dd234815e49556ae85bf1f6  gcc/testsuite/gcc.dg/ubsan/float-cast-overflow-atomic.c
! 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
  8b53119c2975ba4eb7e0a8a3f21049bc  gcc/testsuite/gcc.dg/ubsan/pr63690.c
  7a3b89a11b570c0d6817707c745a9fba  gcc/testsuite/gcc.dg/ubsan/pr67279.c
  c9a455b03d901e306e1836d50e9e37d6  gcc/testsuite/gcc.dg/ubsan/pr67662.c
*************** bea7f326889c0a8fbd1c274d297acf07  gcc/te
*** 35115,35138 ****
  7136fd1fd228fc47bb72427b1e651e05  gcc/testsuite/gcc.dg/ubsan/pr79904.c
  3037e107357a95ddd6b61dbb90af7fde  gcc/testsuite/gcc.dg/ubsan/pr80097.c
  6dd5a7b8f1dd237a95a0f42766ee64d9  gcc/testsuite/gcc.dg/ubsan/pr81162.c
  bb206afd27601853bf04c68fdf6d7763  gcc/testsuite/gcc.dg/ubsan/pr81505.c
  e95ed112f0ea45770ff240c4770cd2c7  gcc/testsuite/gcc.dg/ubsan/pr83014.c
! 76fb0ba3d3d6e1691e23a35a2eb5bcfa  gcc/testsuite/gcc.dg/ubsan/ubsan.exp
  b749062a1214fdf6ba947d30bdf90f30  gcc/testsuite/gcc.dg/ucnid-1.c
! deec75fcb663af9b8c0ad9b43a81dd3b  gcc/testsuite/gcc.dg/ucnid-10.c
! 30920fcf49bf9100324196e1eb510a00  gcc/testsuite/gcc.dg/ucnid-11.c
! 9438d07f232dbe008179ea2172a1b598  gcc/testsuite/gcc.dg/ucnid-12.c
! a3500fed14e33950f1d77eebc2ff1ed9  gcc/testsuite/gcc.dg/ucnid-13.c
  0e94f6b26bd644493438eaabfd072249  gcc/testsuite/gcc.dg/ucnid-14.c
! c481c451fe1ad6985422477c2bc8b7de  gcc/testsuite/gcc.dg/ucnid-2.c
! 70af59bd169dc407e3b2a02430a979ee  gcc/testsuite/gcc.dg/ucnid-3.c
! 5a9f6570cfae63a6a3ee3b5b989d054d  gcc/testsuite/gcc.dg/ucnid-4.c
! a99d788589c413abba2b0edbbf29798a  gcc/testsuite/gcc.dg/ucnid-5.c
! cba8575e575ce87ef043ecffc83c0dcf  gcc/testsuite/gcc.dg/ucnid-6.c
! ee401442d244affbf326ba8c71363ef7  gcc/testsuite/gcc.dg/ucnid-7.c
! c221d22239c95b8cd4405fc0905e668d  gcc/testsuite/gcc.dg/ucnid-8.c
! 48a4a732584e5fb675dbff1d7eaeebbb  gcc/testsuite/gcc.dg/ucnid-9.c
  79a7a8c0948ae5bcfa1991de6867e0c1  gcc/testsuite/gcc.dg/unaligned-1.c
  7ae6ec0a00cfc8c6623bf6575c1ec67b  gcc/testsuite/gcc.dg/uninit-1-O0.c
  f0a8a0b26965879e40a88ebccf31030c  gcc/testsuite/gcc.dg/uninit-1.c
  d948217bdcbf04e6be3c8c997af053f7  gcc/testsuite/gcc.dg/uninit-10-O0.c
--- 36969,36996 ----
  7136fd1fd228fc47bb72427b1e651e05  gcc/testsuite/gcc.dg/ubsan/pr79904.c
  3037e107357a95ddd6b61dbb90af7fde  gcc/testsuite/gcc.dg/ubsan/pr80097.c
  6dd5a7b8f1dd237a95a0f42766ee64d9  gcc/testsuite/gcc.dg/ubsan/pr81162.c
+ 2fb0588afada15c7de7ba10279ac119b  gcc/testsuite/gcc.dg/ubsan/pr81223.c
  bb206afd27601853bf04c68fdf6d7763  gcc/testsuite/gcc.dg/ubsan/pr81505.c
+ a119e08711cd54225451b769856ab0f4  gcc/testsuite/gcc.dg/ubsan/pr81981.c
+ a03c3f43eab7504cac64b70f59c4026c  gcc/testsuite/gcc.dg/ubsan/pr82498.c
  e95ed112f0ea45770ff240c4770cd2c7  gcc/testsuite/gcc.dg/ubsan/pr83014.c
! 7d4c34645183f3393c636c4387d05816  gcc/testsuite/gcc.dg/ubsan/ubsan.exp
  b749062a1214fdf6ba947d30bdf90f30  gcc/testsuite/gcc.dg/ucnid-1.c
! 1fd8cd4dba9ee3c3845de915794cc875  gcc/testsuite/gcc.dg/ucnid-10.c
! cdd9ea6c92f5e5ec7b0de5d62e9deeac  gcc/testsuite/gcc.dg/ucnid-11.c
! afa66223bfac5f52fefc4d63f53bfbce  gcc/testsuite/gcc.dg/ucnid-12.c
! 27ed6ebc121633087ed5c37ca295b165  gcc/testsuite/gcc.dg/ucnid-13.c
  0e94f6b26bd644493438eaabfd072249  gcc/testsuite/gcc.dg/ucnid-14.c
! a79f0d17d61a758298da881720540e8d  gcc/testsuite/gcc.dg/ucnid-2.c
! 9bc0a90ce3d74b78f0f740d66497bb75  gcc/testsuite/gcc.dg/ucnid-3.c
! 93d462b5914f892ba1585709c09801af  gcc/testsuite/gcc.dg/ucnid-4.c
! cec7254717e77879c0ccf65e327d11c1  gcc/testsuite/gcc.dg/ucnid-5.c
! b8893551b0899bfd7f2d695ea0479c43  gcc/testsuite/gcc.dg/ucnid-6.c
! 170dc53a889f943f5fe9889a2de069ed  gcc/testsuite/gcc.dg/ucnid-7.c
! bf3176e1016b72dff9f974a5eb66c4a5  gcc/testsuite/gcc.dg/ucnid-8.c
! 84391393ab31662ed478f210dc36a12b  gcc/testsuite/gcc.dg/ucnid-9.c
  79a7a8c0948ae5bcfa1991de6867e0c1  gcc/testsuite/gcc.dg/unaligned-1.c
+ 6e23ffe8c25da4741f010ee5751b90b6  gcc/testsuite/gcc.dg/unclosed-init.c
  7ae6ec0a00cfc8c6623bf6575c1ec67b  gcc/testsuite/gcc.dg/uninit-1-O0.c
  f0a8a0b26965879e40a88ebccf31030c  gcc/testsuite/gcc.dg/uninit-1.c
  d948217bdcbf04e6be3c8c997af053f7  gcc/testsuite/gcc.dg/uninit-10-O0.c
*************** c611b4ad3ec4bad367027a6ab1ef6505  gcc/te
*** 35151,35163 ****
  c47999a5663fbe110a3d4134c92050c2  gcc/testsuite/gcc.dg/uninit-17-O0.c
  728401b250e40769899aeaa5eb3c4f2e  gcc/testsuite/gcc.dg/uninit-17.c
  997ae4c527f3facdc5684123c0d1cddb  gcc/testsuite/gcc.dg/uninit-18.c
! 11f48b9181cccb47d0906280c4cf5c5a  gcc/testsuite/gcc.dg/uninit-19.c
  668c58e2312b2988b8c85c02786bdbeb  gcc/testsuite/gcc.dg/uninit-2-O0.c
  e7bbbf0090661e8a065ace2511f8f195  gcc/testsuite/gcc.dg/uninit-2.c
  ddfc3a41edab799f26758dadfa5a4d09  gcc/testsuite/gcc.dg/uninit-20.c
  cd35c38615935c72aed40e51df2da8e2  gcc/testsuite/gcc.dg/uninit-21.c
  686b917b4eea226d20e90927f010f6bb  gcc/testsuite/gcc.dg/uninit-22.c
! c200c3873791e41e96dcc12c31614322  gcc/testsuite/gcc.dg/uninit-23.c
  a2f4fe6ec6702c8b1f5cac20b016ba80  gcc/testsuite/gcc.dg/uninit-24.c
  463c43b3eb500824a6e8bd2e03e4ddeb  gcc/testsuite/gcc.dg/uninit-3-O0.c
  9f0fb0245ee08bf0f10f3a180e2006cd  gcc/testsuite/gcc.dg/uninit-3.c
--- 37009,37021 ----
  c47999a5663fbe110a3d4134c92050c2  gcc/testsuite/gcc.dg/uninit-17-O0.c
  728401b250e40769899aeaa5eb3c4f2e  gcc/testsuite/gcc.dg/uninit-17.c
  997ae4c527f3facdc5684123c0d1cddb  gcc/testsuite/gcc.dg/uninit-18.c
! d9386e462790d6362e63704bf981cd41  gcc/testsuite/gcc.dg/uninit-19.c
  668c58e2312b2988b8c85c02786bdbeb  gcc/testsuite/gcc.dg/uninit-2-O0.c
  e7bbbf0090661e8a065ace2511f8f195  gcc/testsuite/gcc.dg/uninit-2.c
  ddfc3a41edab799f26758dadfa5a4d09  gcc/testsuite/gcc.dg/uninit-20.c
  cd35c38615935c72aed40e51df2da8e2  gcc/testsuite/gcc.dg/uninit-21.c
  686b917b4eea226d20e90927f010f6bb  gcc/testsuite/gcc.dg/uninit-22.c
! 56957c4cf54ed73c19f8d6c94222d1d7  gcc/testsuite/gcc.dg/uninit-23.c
  a2f4fe6ec6702c8b1f5cac20b016ba80  gcc/testsuite/gcc.dg/uninit-24.c
  463c43b3eb500824a6e8bd2e03e4ddeb  gcc/testsuite/gcc.dg/uninit-3-O0.c
  9f0fb0245ee08bf0f10f3a180e2006cd  gcc/testsuite/gcc.dg/uninit-3.c
*************** b9d6fd61c56ea96cb1f8c400dd4c7200  gcc/te
*** 35182,35199 ****
  c9e10adb185a3bbf40bb8e18c0127132  gcc/testsuite/gcc.dg/uninit-H-O0.c
  eb3da821b8325355aae91cb8e079d6a4  gcc/testsuite/gcc.dg/uninit-H.c
  6520fa124ef7e7b6dca823a141ba62f7  gcc/testsuite/gcc.dg/uninit-I-O0.c
! e38a53edd5f86d36c9118d3c21ef82b7  gcc/testsuite/gcc.dg/uninit-I.c
  58c1fce493b489aff04e0b2f66635e90  gcc/testsuite/gcc.dg/uninit-pr19430-2.c
! f00bf5210993d4b59abc1c97a5e2ea57  gcc/testsuite/gcc.dg/uninit-pr19430-O0.c
! 3763eba8af036e8ca6a2f091879d5268  gcc/testsuite/gcc.dg/uninit-pr19430.c
! 4d7192e46349769cc0d74879595bba5a  gcc/testsuite/gcc.dg/uninit-pr20644-O0.c
! 22e9778599baf2fee5cde10cf267d3c4  gcc/testsuite/gcc.dg/uninit-pr20644.c
  fb7fb911814f67c58846323d51173f98  gcc/testsuite/gcc.dg/uninit-pr40943.c
  1734c6a57c50120395340cb541c58c88  gcc/testsuite/gcc.dg/uninit-pr61409.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
  e37d87bcbc2425be943ff59a8baa223d  gcc/testsuite/gcc.dg/uninit-pr81782.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
--- 37040,37059 ----
  c9e10adb185a3bbf40bb8e18c0127132  gcc/testsuite/gcc.dg/uninit-H-O0.c
  eb3da821b8325355aae91cb8e079d6a4  gcc/testsuite/gcc.dg/uninit-H.c
  6520fa124ef7e7b6dca823a141ba62f7  gcc/testsuite/gcc.dg/uninit-I-O0.c
! 988c2fc57e3d496a9d761ee0eb2841e4  gcc/testsuite/gcc.dg/uninit-I.c
  58c1fce493b489aff04e0b2f66635e90  gcc/testsuite/gcc.dg/uninit-pr19430-2.c
! ef1f77567b5ca1372f7ec0022ec54143  gcc/testsuite/gcc.dg/uninit-pr19430-O0.c
! 17d8b19d3021802ff49f4c8261932a80  gcc/testsuite/gcc.dg/uninit-pr19430.c
! c7de5c9f2e0182e483bc9b11fc2d1f3d  gcc/testsuite/gcc.dg/uninit-pr20644-O0.c
! bd8e8e7214f9f23684fcce6542ba21a2  gcc/testsuite/gcc.dg/uninit-pr20644.c
  fb7fb911814f67c58846323d51173f98  gcc/testsuite/gcc.dg/uninit-pr40943.c
  1734c6a57c50120395340cb541c58c88  gcc/testsuite/gcc.dg/uninit-pr61409.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
  e37d87bcbc2425be943ff59a8baa223d  gcc/testsuite/gcc.dg/uninit-pr81782.c
+ 0dc3986883a797fc93fd1e233ab39838  gcc/testsuite/gcc.dg/uninit-pr81897-2.c
+ 2cff9b0e356693e6320ee7ba4d4f02c2  gcc/testsuite/gcc.dg/uninit-pr81897.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
*************** e1adecfd191ddb35b4dca5ed05ca11de  gcc/te
*** 35222,35228 ****
  f8c4f61a7dcf75600a176b4dab26db57  gcc/testsuite/gcc.dg/uninit-pred-9_a.c
  24f7b7ce08b62bfb7599c7a47f0276d8  gcc/testsuite/gcc.dg/uninit-pred-9_b.c
  bc7ca58b23b9c0a381b714ac4dc2ca9f  gcc/testsuite/gcc.dg/uninit-suppress.c
! f00b855527c056c704bc5fce62558f5a  gcc/testsuite/gcc.dg/uninit-suppress_2.c
  78c7acd37bc5c230e62db954ee385285  gcc/testsuite/gcc.dg/union-1.c
  19582a249859766163d52754d6531172  gcc/testsuite/gcc.dg/union-2.c
  c637ae15c59019e613281e579d717a84  gcc/testsuite/gcc.dg/union-3.c
--- 37082,37088 ----
  f8c4f61a7dcf75600a176b4dab26db57  gcc/testsuite/gcc.dg/uninit-pred-9_a.c
  24f7b7ce08b62bfb7599c7a47f0276d8  gcc/testsuite/gcc.dg/uninit-pred-9_b.c
  bc7ca58b23b9c0a381b714ac4dc2ca9f  gcc/testsuite/gcc.dg/uninit-suppress.c
! e935b4a506b782a49b8a2c210a763a2e  gcc/testsuite/gcc.dg/uninit-suppress_2.c
  78c7acd37bc5c230e62db954ee385285  gcc/testsuite/gcc.dg/union-1.c
  19582a249859766163d52754d6531172  gcc/testsuite/gcc.dg/union-2.c
  c637ae15c59019e613281e579d717a84  gcc/testsuite/gcc.dg/union-3.c
*************** a7ac2b6782378edf99026215c26ce37f  gcc/te
*** 35236,35254 ****
  fced4847e686e50fcf2f9178fed8ec41  gcc/testsuite/gcc.dg/unordered-2.c
  3e159974de24470fb7ecc60669d62183  gcc/testsuite/gcc.dg/unordered-3.c
  a5c7a9cbd547b9d922f89fd38295d579  gcc/testsuite/gcc.dg/unroll-1.c
! 27909d06592c17ccdbbcad81c6f0a806  gcc/testsuite/gcc.dg/unroll-2.c
! e9a0a7d89e3387ce53ae1a7cc500f2ae  gcc/testsuite/gcc.dg/unroll-3.c
! fb73ccd8030af413e15f3996a565253d  gcc/testsuite/gcc.dg/unroll-4.c
! b3cc7f9561308b2fb397ac5ea17c444b  gcc/testsuite/gcc.dg/unroll-5.c
  77dbefe7ee6b1de71f451796787f1532  gcc/testsuite/gcc.dg/unroll-6.c
! 1ed86e9c12490f804541863705fc893e  gcc/testsuite/gcc.dg/unroll-7.c
  204b9be344d219dfaab5a48887ad9516  gcc/testsuite/gcc.dg/unroll-8.c
  99b212e0df5c61c48b3f2593a23414cc  gcc/testsuite/gcc.dg/unsigned-long-compare.c
  aa7c265797a6b0a2b548e25a531baf92  gcc/testsuite/gcc.dg/unused-1.c
  8ba0a7c993176dd2077bdae924adddc8  gcc/testsuite/gcc.dg/unused-2.c
  f9a554fce2ce83ef2a4777f2c9f119f3  gcc/testsuite/gcc.dg/unused-3.c
  09d0e252a6e319cb4dc77070e2f64f86  gcc/testsuite/gcc.dg/unused-4.c
! a4fcb59b08699d2cf9f174d6f5021ae9  gcc/testsuite/gcc.dg/unused-5.c
  d057a4907971998a1473fdea2ead40cc  gcc/testsuite/gcc.dg/unused-6-WallWextra.c
  43d1bfb1c3e82e590c699df9328c86ff  gcc/testsuite/gcc.dg/unused-6-no.c
  e3db8ed02ca0ecad28455ac3f0b93696  gcc/testsuite/gcc.dg/unused-6.c
--- 37096,37115 ----
  fced4847e686e50fcf2f9178fed8ec41  gcc/testsuite/gcc.dg/unordered-2.c
  3e159974de24470fb7ecc60669d62183  gcc/testsuite/gcc.dg/unordered-3.c
  a5c7a9cbd547b9d922f89fd38295d579  gcc/testsuite/gcc.dg/unroll-1.c
! 029a11155379057061551ecd0d31b07a  gcc/testsuite/gcc.dg/unroll-2.c
! 2fc59ac0f60d8c5500adb56cf66c1ed6  gcc/testsuite/gcc.dg/unroll-3.c
! b1b811ab7ccd6cb7c2bb14df1bde12f8  gcc/testsuite/gcc.dg/unroll-4.c
! c6ae2df6a353c5ac288fcafb37edc450  gcc/testsuite/gcc.dg/unroll-5.c
  77dbefe7ee6b1de71f451796787f1532  gcc/testsuite/gcc.dg/unroll-6.c
! a034cbd359de956aef07a36500a255ea  gcc/testsuite/gcc.dg/unroll-7.c
  204b9be344d219dfaab5a48887ad9516  gcc/testsuite/gcc.dg/unroll-8.c
+ 11d3bbbf23cf7d560b4a3903d4aac357  gcc/testsuite/gcc.dg/unroll-and-jam.c
  99b212e0df5c61c48b3f2593a23414cc  gcc/testsuite/gcc.dg/unsigned-long-compare.c
  aa7c265797a6b0a2b548e25a531baf92  gcc/testsuite/gcc.dg/unused-1.c
  8ba0a7c993176dd2077bdae924adddc8  gcc/testsuite/gcc.dg/unused-2.c
  f9a554fce2ce83ef2a4777f2c9f119f3  gcc/testsuite/gcc.dg/unused-3.c
  09d0e252a6e319cb4dc77070e2f64f86  gcc/testsuite/gcc.dg/unused-4.c
! 876c76a05f3240f1c55b0f54267a8aba  gcc/testsuite/gcc.dg/unused-5.c
  d057a4907971998a1473fdea2ead40cc  gcc/testsuite/gcc.dg/unused-6-WallWextra.c
  43d1bfb1c3e82e590c699df9328c86ff  gcc/testsuite/gcc.dg/unused-6-no.c
  e3db8ed02ca0ecad28455ac3f0b93696  gcc/testsuite/gcc.dg/unused-6.c
*************** a2064d0ab63f355ec70a8ba78cc0aad3  gcc/te
*** 35263,35269 ****
  58bb3d290d515392b37ec7e27a115e8e  gcc/testsuite/gcc.dg/utf-array.c
  16d90eed79e7366faf262e637da59738  gcc/testsuite/gcc.dg/utf-badconcat.c
  3f2af1308c7d9c812a1a3938d455756f  gcc/testsuite/gcc.dg/utf-badconcat2.c
! c8e85cc9adb081f9d72a0c7430b930b6  gcc/testsuite/gcc.dg/utf-cvt.c
  b225a045175f2cff67d0b24a029b64b2  gcc/testsuite/gcc.dg/utf-dflt.c
  75dda1843c701eb8a78a7b376b4f8936  gcc/testsuite/gcc.dg/utf-dflt2.c
  d90784bddca3c03d9e656e947bebf649  gcc/testsuite/gcc.dg/utf-inc-init.c
--- 37124,37130 ----
  58bb3d290d515392b37ec7e27a115e8e  gcc/testsuite/gcc.dg/utf-array.c
  16d90eed79e7366faf262e637da59738  gcc/testsuite/gcc.dg/utf-badconcat.c
  3f2af1308c7d9c812a1a3938d455756f  gcc/testsuite/gcc.dg/utf-badconcat2.c
! 7d3005bdadde05270dddd138519a34ce  gcc/testsuite/gcc.dg/utf-cvt.c
  b225a045175f2cff67d0b24a029b64b2  gcc/testsuite/gcc.dg/utf-dflt.c
  75dda1843c701eb8a78a7b376b4f8936  gcc/testsuite/gcc.dg/utf-dflt2.c
  d90784bddca3c03d9e656e947bebf649  gcc/testsuite/gcc.dg/utf-inc-init.c
*************** b95f4f2227d41e7727db9557a77c5c3d  gcc/te
*** 35271,35277 ****
  3a9d1a26a5aaeef5defa0d9d1f97bc15  gcc/testsuite/gcc.dg/utf16-1.c
  5c528afe636171f8d43e8b0bf4a1c548  gcc/testsuite/gcc.dg/utf16-2.c
  a32533b17e250ced05d50a9e8fbf6f1f  gcc/testsuite/gcc.dg/utf16-3.c
! 636899cce47fa527a5f0c834744d56ef  gcc/testsuite/gcc.dg/utf16-4.c
  fd1c2c198274ccdf0a4eeebbfafb373c  gcc/testsuite/gcc.dg/utf32-1.c
  04cef3d507bd18a15a3509a8a710cd93  gcc/testsuite/gcc.dg/utf32-2.c
  f28569cb7d58cae741a1de06facaa1af  gcc/testsuite/gcc.dg/utf32-3.c
--- 37132,37138 ----
  3a9d1a26a5aaeef5defa0d9d1f97bc15  gcc/testsuite/gcc.dg/utf16-1.c
  5c528afe636171f8d43e8b0bf4a1c548  gcc/testsuite/gcc.dg/utf16-2.c
  a32533b17e250ced05d50a9e8fbf6f1f  gcc/testsuite/gcc.dg/utf16-3.c
! 0bde34f1d5714f120ceb45f0c197e481  gcc/testsuite/gcc.dg/utf16-4.c
  fd1c2c198274ccdf0a4eeebbfafb373c  gcc/testsuite/gcc.dg/utf32-1.c
  04cef3d507bd18a15a3509a8a710cd93  gcc/testsuite/gcc.dg/utf32-2.c
  f28569cb7d58cae741a1de06facaa1af  gcc/testsuite/gcc.dg/utf32-3.c
*************** a941d1cc7e1bcc3522ff9cc071b3533b  gcc/te
*** 35311,35317 ****
  9f9afc3ac1c180057b7c583bd065c471  gcc/testsuite/gcc.dg/vect/aligned-section-anchors-vect-70.c
  6f596ecff4c2737731de5f27856f1a79  gcc/testsuite/gcc.dg/vect/aligned-section-anchors-vect-71.c
  fc3f9485da33ab149e612932c91c2cb1  gcc/testsuite/gcc.dg/vect/aligned-section-anchors-vect-72.c
! ab122aeb5a5afbaf652b3317281ef042  gcc/testsuite/gcc.dg/vect/bb-slp-1.c
  98f5844d875e9c55cef0b0a3bd0ed9e7  gcc/testsuite/gcc.dg/vect/bb-slp-10.c
  587ed5cf74dfd35ef871a089f6667cbb  gcc/testsuite/gcc.dg/vect/bb-slp-11.c
  5902b803ce93629202846373e23a12cf  gcc/testsuite/gcc.dg/vect/bb-slp-13.c
--- 37172,37178 ----
  9f9afc3ac1c180057b7c583bd065c471  gcc/testsuite/gcc.dg/vect/aligned-section-anchors-vect-70.c
  6f596ecff4c2737731de5f27856f1a79  gcc/testsuite/gcc.dg/vect/aligned-section-anchors-vect-71.c
  fc3f9485da33ab149e612932c91c2cb1  gcc/testsuite/gcc.dg/vect/aligned-section-anchors-vect-72.c
! dc3c9dbb9a161c6b8d32669b6c953ed0  gcc/testsuite/gcc.dg/vect/bb-slp-1.c
  98f5844d875e9c55cef0b0a3bd0ed9e7  gcc/testsuite/gcc.dg/vect/bb-slp-10.c
  587ed5cf74dfd35ef871a089f6667cbb  gcc/testsuite/gcc.dg/vect/bb-slp-11.c
  5902b803ce93629202846373e23a12cf  gcc/testsuite/gcc.dg/vect/bb-slp-13.c
*************** df533136bf15423a719993ba26a20ddf  gcc/te
*** 35326,35337 ****
  d49d1ccefa1427e8797ee11142c49a3d  gcc/testsuite/gcc.dg/vect/bb-slp-21.c
  59486e946d8e079d3ae28efdf346efd6  gcc/testsuite/gcc.dg/vect/bb-slp-22.c
  5d3dbdc30150a9979ea8980d81fc76d8  gcc/testsuite/gcc.dg/vect/bb-slp-23.c
! fd323941bd36cab634f01fc945651404  gcc/testsuite/gcc.dg/vect/bb-slp-24.c
! 432d85c66f0ba3a13f33c0e25d634c4e  gcc/testsuite/gcc.dg/vect/bb-slp-25.c
! 0c3b8caf34a984399723640440cf66e6  gcc/testsuite/gcc.dg/vect/bb-slp-26.c
  1e79af8b70cf8b30ea1ef5a4c70a834d  gcc/testsuite/gcc.dg/vect/bb-slp-27.c
  0f1167ea7ff9c16cdeff4ab0b5ac558f  gcc/testsuite/gcc.dg/vect/bb-slp-28.c
! b4d0894eb1038f41e0760554efb415d2  gcc/testsuite/gcc.dg/vect/bb-slp-29.c
  4c60ceb5dec3d62cbae8bcdc194335b4  gcc/testsuite/gcc.dg/vect/bb-slp-3.c
  af9e3f0acc455aed8b3ceaf148d506c1  gcc/testsuite/gcc.dg/vect/bb-slp-30.c
  93302e4bbeedec8fee36029f192a8969  gcc/testsuite/gcc.dg/vect/bb-slp-31.c
--- 37187,37198 ----
  d49d1ccefa1427e8797ee11142c49a3d  gcc/testsuite/gcc.dg/vect/bb-slp-21.c
  59486e946d8e079d3ae28efdf346efd6  gcc/testsuite/gcc.dg/vect/bb-slp-22.c
  5d3dbdc30150a9979ea8980d81fc76d8  gcc/testsuite/gcc.dg/vect/bb-slp-23.c
! 5a6b6adf746d252020280f90f9e3a884  gcc/testsuite/gcc.dg/vect/bb-slp-24.c
! 0ea667bb24b2353e5ffac10d5ba87fae  gcc/testsuite/gcc.dg/vect/bb-slp-25.c
! 59bac952b93b264fc36d60aa292c06ee  gcc/testsuite/gcc.dg/vect/bb-slp-26.c
  1e79af8b70cf8b30ea1ef5a4c70a834d  gcc/testsuite/gcc.dg/vect/bb-slp-27.c
  0f1167ea7ff9c16cdeff4ab0b5ac558f  gcc/testsuite/gcc.dg/vect/bb-slp-28.c
! 4c102576eee9009d5b4d26ec04f57cfb  gcc/testsuite/gcc.dg/vect/bb-slp-29.c
  4c60ceb5dec3d62cbae8bcdc194335b4  gcc/testsuite/gcc.dg/vect/bb-slp-3.c
  af9e3f0acc455aed8b3ceaf148d506c1  gcc/testsuite/gcc.dg/vect/bb-slp-30.c
  93302e4bbeedec8fee36029f192a8969  gcc/testsuite/gcc.dg/vect/bb-slp-31.c
*************** aaa5fdfb7b164a6d2d07a6f038e66367  gcc/te
*** 35350,35364 ****
  00e37039e487d03eca3066aaf3c7d310  gcc/testsuite/gcc.dg/vect/bb-slp-8a.c
  91f6ed747a887410b73726d9d5388276  gcc/testsuite/gcc.dg/vect/bb-slp-8b.c
  16269b788194ef379d67570b095dc5f5  gcc/testsuite/gcc.dg/vect/bb-slp-9.c
! e42d712b11b64379ab2326213e4b16e4  gcc/testsuite/gcc.dg/vect/bb-slp-cond-1.c
  c311453bfa9e07fb29dd6981eaaf350d  gcc/testsuite/gcc.dg/vect/bb-slp-pattern-1.c
  f746ae3bf44586fbe281fa0651586662  gcc/testsuite/gcc.dg/vect/bb-slp-pattern-2.c
  04292ad78b5641a8b52e2d45ff548335  gcc/testsuite/gcc.dg/vect/bb-slp-pr58135.c
! 7615ebaca07d56ea952b9a4ae482f9eb  gcc/testsuite/gcc.dg/vect/bb-slp-pr65935.c
  7eef90ed52f18c595b9c3c85d806fe09  gcc/testsuite/gcc.dg/vect/bb-slp-pr68892.c
! 423921ccfb9c50e7945533d3786afd5a  gcc/testsuite/gcc.dg/vect/bb-slp-pr69907.c
  4381bb16caa660fbf909762342d1ebaf  gcc/testsuite/gcc.dg/vect/bb-slp-pr78205.c
  7bde18f16db8ba76291d8ca502888f3e  gcc/testsuite/gcc.dg/vect/bb-slp-pr80705.c
  5428e4471ece92d28564b1d30192ed87  gcc/testsuite/gcc.dg/vect/bb-slp-subgroups-1.c
  892d0604340291572dec6ee6deee1f79  gcc/testsuite/gcc.dg/vect/bb-slp-subgroups-2.c
  ac97f8715430e9981d35fdaf30359bcb  gcc/testsuite/gcc.dg/vect/bb-slp-subgroups-3.c
--- 37211,37229 ----
  00e37039e487d03eca3066aaf3c7d310  gcc/testsuite/gcc.dg/vect/bb-slp-8a.c
  91f6ed747a887410b73726d9d5388276  gcc/testsuite/gcc.dg/vect/bb-slp-8b.c
  16269b788194ef379d67570b095dc5f5  gcc/testsuite/gcc.dg/vect/bb-slp-9.c
! d50b6198d0ab7f141d0ca1fe2c25c55e  gcc/testsuite/gcc.dg/vect/bb-slp-cond-1.c
  c311453bfa9e07fb29dd6981eaaf350d  gcc/testsuite/gcc.dg/vect/bb-slp-pattern-1.c
  f746ae3bf44586fbe281fa0651586662  gcc/testsuite/gcc.dg/vect/bb-slp-pattern-2.c
  04292ad78b5641a8b52e2d45ff548335  gcc/testsuite/gcc.dg/vect/bb-slp-pr58135.c
! 563d60a4588109c2dc05dd6a574d13ca  gcc/testsuite/gcc.dg/vect/bb-slp-pr65935.c
  7eef90ed52f18c595b9c3c85d806fe09  gcc/testsuite/gcc.dg/vect/bb-slp-pr68892.c
! 743f144105356af1eab71ae80641c5cc  gcc/testsuite/gcc.dg/vect/bb-slp-pr69907.c
  4381bb16caa660fbf909762342d1ebaf  gcc/testsuite/gcc.dg/vect/bb-slp-pr78205.c
  7bde18f16db8ba76291d8ca502888f3e  gcc/testsuite/gcc.dg/vect/bb-slp-pr80705.c
+ 3aa54f31d98f9737aacca24580beae90  gcc/testsuite/gcc.dg/vect/bb-slp-pr81635-1.c
+ cc1dd9969065b3ef679c1331eea3b974  gcc/testsuite/gcc.dg/vect/bb-slp-pr81635-2.c
+ ba61bac9283801e9b73dee15e5669f8a  gcc/testsuite/gcc.dg/vect/bb-slp-pr81635-3.c
+ 0a3a3c00f359e5410f5697d124bdd5ca  gcc/testsuite/gcc.dg/vect/bb-slp-pr81635-4.c
  5428e4471ece92d28564b1d30192ed87  gcc/testsuite/gcc.dg/vect/bb-slp-subgroups-1.c
  892d0604340291572dec6ee6deee1f79  gcc/testsuite/gcc.dg/vect/bb-slp-subgroups-2.c
  ac97f8715430e9981d35fdaf30359bcb  gcc/testsuite/gcc.dg/vect/bb-slp-subgroups-3.c
*************** ac97f8715430e9981d35fdaf30359bcb  gcc/te
*** 35367,35380 ****
  7f6bbf8768cd5a8ca9e036e6fd91b70e  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
! 38dcf9a5df013c97fea3b086ed2be2f2  gcc/testsuite/gcc.dg/vect/costmodel/i386/i386-costmodel-vect.exp
  a9cb28b1e884170acbaee9d79bf34ff8  gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a-pr63175.c
  77e9d73da790b2dcc18bc0f22f07f555  gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a.c
  c0ef459d834c12e2cb041e9caeb5b881  gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-fast-math-vect-pr29925.c
! 042780d123efd84f0ac0f8dce064c5f2  gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-pr37194.c
  2926d53e5e3391b93ff4c3fdf9b102c4  gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-slp-12.c
  a9e7ff0eac965a3c7cbff3f3be3fdf77  gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-slp-33.c
! 8f16bd8e43d521484524224e27b0c8e7  gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-slp-34.c
  22ccbb5f325080c594838c3093ae8c53  gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-31a.c
  73a9d7a1c0c9f7296025969e2be1f29e  gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-31b.c
  a3fbdcd8880d2b38ef90333ee846cfb0  gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-31c.c
--- 37232,37245 ----
  7f6bbf8768cd5a8ca9e036e6fd91b70e  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
! 7d3b6bf197df295346af814ca5e10852  gcc/testsuite/gcc.dg/vect/costmodel/i386/i386-costmodel-vect.exp
  a9cb28b1e884170acbaee9d79bf34ff8  gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a-pr63175.c
  77e9d73da790b2dcc18bc0f22f07f555  gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a.c
  c0ef459d834c12e2cb041e9caeb5b881  gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-fast-math-vect-pr29925.c
! 598fd76bceefe3765d5da32e07d2cb2d  gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-pr37194.c
  2926d53e5e3391b93ff4c3fdf9b102c4  gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-slp-12.c
  a9e7ff0eac965a3c7cbff3f3be3fdf77  gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-slp-33.c
! 50493cebd3df3a5e504c890169d57496  gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-slp-34.c
  22ccbb5f325080c594838c3093ae8c53  gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-31a.c
  73a9d7a1c0c9f7296025969e2be1f29e  gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-31b.c
  a3fbdcd8880d2b38ef90333ee846cfb0  gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-31c.c
*************** aa372c1380771801d70b995b93dcfbad  gcc/te
*** 35387,35393 ****
  5172c5e4a0dea6a2a6ac4f3b9671d5c6  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
! b771a6a6c37ded57fbb554c970227a08  gcc/testsuite/gcc.dg/vect/costmodel/ppc/ppc-costmodel-vect.exp
  e599eca185389feb5e60a627dfe8838c  gcc/testsuite/gcc.dg/vect/costmodel/spu/costmodel-fast-math-vect-pr29925.c
  84c72c499f584179942db58234c18087  gcc/testsuite/gcc.dg/vect/costmodel/spu/costmodel-vect-31a.c
  73a9d7a1c0c9f7296025969e2be1f29e  gcc/testsuite/gcc.dg/vect/costmodel/spu/costmodel-vect-31b.c
--- 37252,37258 ----
  5172c5e4a0dea6a2a6ac4f3b9671d5c6  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
! 0e394d666578bb281b46eaeb876d9a37  gcc/testsuite/gcc.dg/vect/costmodel/ppc/ppc-costmodel-vect.exp
  e599eca185389feb5e60a627dfe8838c  gcc/testsuite/gcc.dg/vect/costmodel/spu/costmodel-fast-math-vect-pr29925.c
  84c72c499f584179942db58234c18087  gcc/testsuite/gcc.dg/vect/costmodel/spu/costmodel-vect-31a.c
  73a9d7a1c0c9f7296025969e2be1f29e  gcc/testsuite/gcc.dg/vect/costmodel/spu/costmodel-vect-31b.c
*************** abf0682beb187eaf35a99a2824ca1d61  gcc/te
*** 35402,35417 ****
  b4d6192dfdaddd25eb128c6bdabe011a  gcc/testsuite/gcc.dg/vect/costmodel/spu/costmodel-vect-76b.c
  b1b6bddc67554d02bd9b86909f6aae7c  gcc/testsuite/gcc.dg/vect/costmodel/spu/costmodel-vect-76c.c
  ebbbf8236e49b01d496361dd75929f3f  gcc/testsuite/gcc.dg/vect/costmodel/spu/costmodel-vect-iv-9.c
! a82e7e73b92e4034433273cee6fee5d4  gcc/testsuite/gcc.dg/vect/costmodel/spu/spu-costmodel-vect.exp
  05fc220f1ddbdb4d47d859b5d07869e2  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-fast-math-vect-pr29925.c
  a5291b9137052e38bce189e260b31ad4  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-pr30843.c
  ec5c6a4d5052e20e84aa5eb95742d36f  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-pr64909.c
  0211c977ddd4f83f65ee1b2b0942b85c  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-pr69297.c
  073e8ac3cf8d71ee2f84a33da9428398  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-vect-31.c
  057db5529adf748a87cf8dd08e71e478  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-vect-33.c
  e8ac43ab8cf8cbf7bfd8167cf04e3b0e  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-vect-68.c
  460815bb26ae1f6c220e23de56a2d3fd  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-vect-reduc-1char.c
! 5664e119a74b14ea827e751ed215cacc  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/x86_64-costmodel-vect.exp
  4b034817fdfb292a8f13d72e1b0a20eb  gcc/testsuite/gcc.dg/vect/fast-math-bb-slp-call-1.c
  91643c58fd89919e90dde5e56252b147  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
--- 37267,37286 ----
  b4d6192dfdaddd25eb128c6bdabe011a  gcc/testsuite/gcc.dg/vect/costmodel/spu/costmodel-vect-76b.c
  b1b6bddc67554d02bd9b86909f6aae7c  gcc/testsuite/gcc.dg/vect/costmodel/spu/costmodel-vect-76c.c
  ebbbf8236e49b01d496361dd75929f3f  gcc/testsuite/gcc.dg/vect/costmodel/spu/costmodel-vect-iv-9.c
! ef3cb4dc5155c89c4dadb7d3912e1809  gcc/testsuite/gcc.dg/vect/costmodel/spu/spu-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
  a5291b9137052e38bce189e260b31ad4  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-pr30843.c
  ec5c6a4d5052e20e84aa5eb95742d36f  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-pr64909.c
  0211c977ddd4f83f65ee1b2b0942b85c  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-pr69297.c
+ 95441d9036c7c6a8ec66097fa438a66b  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-pr83202.c
+ 48ec02ae594bd65df110f1d4ae1066f9  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-pr84986.c
  073e8ac3cf8d71ee2f84a33da9428398  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-vect-31.c
  057db5529adf748a87cf8dd08e71e478  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-vect-33.c
  e8ac43ab8cf8cbf7bfd8167cf04e3b0e  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-vect-68.c
  460815bb26ae1f6c220e23de56a2d3fd  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-vect-reduc-1char.c
! 59205db3c659c989e83e01da1fce9db5  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-vect-slp.c
! 64872282d04de2dd4db0bfc35fdd2584  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/x86_64-costmodel-vect.exp
  4b034817fdfb292a8f13d72e1b0a20eb  gcc/testsuite/gcc.dg/vect/fast-math-bb-slp-call-1.c
  91643c58fd89919e90dde5e56252b147  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
*************** c96ad17d79b357aa3a1fafd4373fa123  gcc/te
*** 35437,35443 ****
  468cb6f8da74e4fcecd69eee085d36b4  gcc/testsuite/gcc.dg/vect/ggc-pr37574.c
  0290c046682f1964e85751a23e4b4c75  gcc/testsuite/gcc.dg/vect/group-no-gaps-1.c
  3ba1ad7e9f05d87d9b64782325c73302  gcc/testsuite/gcc.dg/vect/if-cvt-stores-vect-ifcvt-18.c
! 90f0fa02b759ecd5f981811f9a5753d2  gcc/testsuite/gcc.dg/vect/no-fast-math-vect16.c
  cbd914dd109796186423ddfed675979c  gcc/testsuite/gcc.dg/vect/no-fre-pre-pr50208.c
  f4125ef35368c2a60a34ac1406a2ea1b  gcc/testsuite/gcc.dg/vect/no-math-errno-slp-32.c
  d5a395afbf1c5cb90222035fd39051c8  gcc/testsuite/gcc.dg/vect/no-math-errno-vect-pow-1.c
--- 37306,37312 ----
  468cb6f8da74e4fcecd69eee085d36b4  gcc/testsuite/gcc.dg/vect/ggc-pr37574.c
  0290c046682f1964e85751a23e4b4c75  gcc/testsuite/gcc.dg/vect/group-no-gaps-1.c
  3ba1ad7e9f05d87d9b64782325c73302  gcc/testsuite/gcc.dg/vect/if-cvt-stores-vect-ifcvt-18.c
! 93d17c65636c7ee0c8bf062504b27f3e  gcc/testsuite/gcc.dg/vect/no-fast-math-vect16.c
  cbd914dd109796186423ddfed675979c  gcc/testsuite/gcc.dg/vect/no-fre-pre-pr50208.c
  f4125ef35368c2a60a34ac1406a2ea1b  gcc/testsuite/gcc.dg/vect/no-math-errno-slp-32.c
  d5a395afbf1c5cb90222035fd39051c8  gcc/testsuite/gcc.dg/vect/no-math-errno-vect-pow-1.c
*************** e10d047e5244efcf431a4cb310f3ca38  gcc/te
*** 35453,35459 ****
  02c6f0280a3c56481a62e175224f1d0e  gcc/testsuite/gcc.dg/vect/no-scevccp-outer-10b.c
  4d2c57b99a6e72f3b11a591f9b4ce2dc  gcc/testsuite/gcc.dg/vect/no-scevccp-outer-11.c
  84b89be2ebe9f17cb65b6958588ad349  gcc/testsuite/gcc.dg/vect/no-scevccp-outer-12.c
! d0947634c76b5abca2ec27928c17ae45  gcc/testsuite/gcc.dg/vect/no-scevccp-outer-13.c
  f71692f531d922bbf56a02d45f5624b4  gcc/testsuite/gcc.dg/vect/no-scevccp-outer-14.c
  a1d8b0c6c26cc7830cd2388347259d96  gcc/testsuite/gcc.dg/vect/no-scevccp-outer-15.c
  b48780d16c8a98cb8cc75b6f41666306  gcc/testsuite/gcc.dg/vect/no-scevccp-outer-16.c
--- 37322,37328 ----
  02c6f0280a3c56481a62e175224f1d0e  gcc/testsuite/gcc.dg/vect/no-scevccp-outer-10b.c
  4d2c57b99a6e72f3b11a591f9b4ce2dc  gcc/testsuite/gcc.dg/vect/no-scevccp-outer-11.c
  84b89be2ebe9f17cb65b6958588ad349  gcc/testsuite/gcc.dg/vect/no-scevccp-outer-12.c
! da146f4705b5b76e96df30e97f090b94  gcc/testsuite/gcc.dg/vect/no-scevccp-outer-13.c
  f71692f531d922bbf56a02d45f5624b4  gcc/testsuite/gcc.dg/vect/no-scevccp-outer-14.c
  a1d8b0c6c26cc7830cd2388347259d96  gcc/testsuite/gcc.dg/vect/no-scevccp-outer-15.c
  b48780d16c8a98cb8cc75b6f41666306  gcc/testsuite/gcc.dg/vect/no-scevccp-outer-16.c
*************** a66b01371868efa9a4adec95cc87ef1f  gcc/te
*** 35469,35493 ****
  b71059b74869a01e94497080a5e24fe6  gcc/testsuite/gcc.dg/vect/no-scevccp-outer-5.c
  eb7d1ccb68b4e7ca7c14251b9e20bd9b  gcc/testsuite/gcc.dg/vect/no-scevccp-outer-6-global.c
  7e31fbf9c3e69a53ba3163f2f602dc7f  gcc/testsuite/gcc.dg/vect/no-scevccp-outer-6.c
! b0d93a1f0ce575cef339edd93b9fa2c9  gcc/testsuite/gcc.dg/vect/no-scevccp-outer-7.c
  5c323d242c0dc1470d50f2695937d744  gcc/testsuite/gcc.dg/vect/no-scevccp-outer-8.c
  26ac148f0fdaf32bff987da5e8231b57  gcc/testsuite/gcc.dg/vect/no-scevccp-outer-9.c
  32ef8cd233fa35af0927136f6f6093dd  gcc/testsuite/gcc.dg/vect/no-scevccp-outer-9a.c
  846caad3969ddc71abfad67120f60e86  gcc/testsuite/gcc.dg/vect/no-scevccp-outer-9b.c
  e6095768f1f1931c159ead61694b7ef5  gcc/testsuite/gcc.dg/vect/no-scevccp-pr49199.c
! cdf75c15db1cbc6a9b963ab3a7877cb8  gcc/testsuite/gcc.dg/vect/no-scevccp-slp-30.c
  1181459f2efd27640cd76ba6e14ce68a  gcc/testsuite/gcc.dg/vect/no-scevccp-slp-31.c
  376ff2d180a1e50a4401ec9e6ca0207b  gcc/testsuite/gcc.dg/vect/no-scevccp-vect-iv-1.c
  3e502194f796878514404dce65cf000b  gcc/testsuite/gcc.dg/vect/no-scevccp-vect-iv-2.c
! 596fdad772e3238dd5c687773c20a9e2  gcc/testsuite/gcc.dg/vect/no-scevccp-vect-iv-3.c
! 85aa014e32750b91d708d08bb9f9ff12  gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-31.c
  ba7c3000d1d865690966568f6267b0a8  gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-34.c
! cab868af294d82fcddd51186c9ed13b8  gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-36.c
! 48999aac5f154994c71d12c17512961a  gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-64.c
  da51cffd1e47aff6e5503dbed6b88052  gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-65.c
  8ca75bcba7baddf409f85b3d625eac27  gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-66.c
! 43fd92397c1499efd93a18de6fc9c44a  gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-68.c
! 9840fff1ec571dc81ca43fcd42ce93ae  gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-69.c
  809b9586d47e6383210cdc4529c21137  gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-outer-4h.c
  9bb7e0736983a747bdf909b641ac8345  gcc/testsuite/gcc.dg/vect/no-trapping-math-1.c
  12d96f20cabf42771e4205401a9e8847  gcc/testsuite/gcc.dg/vect/no-trapping-math-2.c
--- 37338,37362 ----
  b71059b74869a01e94497080a5e24fe6  gcc/testsuite/gcc.dg/vect/no-scevccp-outer-5.c
  eb7d1ccb68b4e7ca7c14251b9e20bd9b  gcc/testsuite/gcc.dg/vect/no-scevccp-outer-6-global.c
  7e31fbf9c3e69a53ba3163f2f602dc7f  gcc/testsuite/gcc.dg/vect/no-scevccp-outer-6.c
! 8849e7e8c8dd22006ab9a590a57e9e1f  gcc/testsuite/gcc.dg/vect/no-scevccp-outer-7.c
  5c323d242c0dc1470d50f2695937d744  gcc/testsuite/gcc.dg/vect/no-scevccp-outer-8.c
  26ac148f0fdaf32bff987da5e8231b57  gcc/testsuite/gcc.dg/vect/no-scevccp-outer-9.c
  32ef8cd233fa35af0927136f6f6093dd  gcc/testsuite/gcc.dg/vect/no-scevccp-outer-9a.c
  846caad3969ddc71abfad67120f60e86  gcc/testsuite/gcc.dg/vect/no-scevccp-outer-9b.c
  e6095768f1f1931c159ead61694b7ef5  gcc/testsuite/gcc.dg/vect/no-scevccp-pr49199.c
! 6f338971bf2ba8d471c8bfc321d2ebf4  gcc/testsuite/gcc.dg/vect/no-scevccp-slp-30.c
  1181459f2efd27640cd76ba6e14ce68a  gcc/testsuite/gcc.dg/vect/no-scevccp-slp-31.c
  376ff2d180a1e50a4401ec9e6ca0207b  gcc/testsuite/gcc.dg/vect/no-scevccp-vect-iv-1.c
  3e502194f796878514404dce65cf000b  gcc/testsuite/gcc.dg/vect/no-scevccp-vect-iv-2.c
! a3b099951ff0765216c94c3593ed8d5b  gcc/testsuite/gcc.dg/vect/no-scevccp-vect-iv-3.c
! bf7ede06150fb52bc6667a03cbd5721e  gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-31.c
  ba7c3000d1d865690966568f6267b0a8  gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-34.c
! cb8239fde6fa61b8b2dd009bb9407e28  gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-36.c
! f08c6fa297ee57f2d978bb1888f5e9e7  gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-64.c
  da51cffd1e47aff6e5503dbed6b88052  gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-65.c
  8ca75bcba7baddf409f85b3d625eac27  gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-66.c
! 352a9f277730c431b4f5536c8c754d52  gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-68.c
! 66f28ec32ec062ad94470e358ab157ca  gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-69.c
  809b9586d47e6383210cdc4529c21137  gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-outer-4h.c
  9bb7e0736983a747bdf909b641ac8345  gcc/testsuite/gcc.dg/vect/no-trapping-math-1.c
  12d96f20cabf42771e4205401a9e8847  gcc/testsuite/gcc.dg/vect/no-trapping-math-2.c
*************** deb80b9e42227ef9cf3ab1d7f28f3f42  gcc/te
*** 35504,35513 ****
  4fcf9883a2190807dd1a4a7e02496b0d  gcc/testsuite/gcc.dg/vect/no-tree-reassoc-bb-slp-12.c
  3c9f7599a0123f95aed5c83a943006a1  gcc/testsuite/gcc.dg/vect/no-tree-sra-bb-slp-pr50730.c
  353ce72fd19727fe5790eb78afad584a  gcc/testsuite/gcc.dg/vect/no-vfa-pr29145.c
! b3bae8cda3ae9e1d94bd32543a3653f2  gcc/testsuite/gcc.dg/vect/no-vfa-vect-101.c
! 7b676db33c706f98604fb9a2e6efe465  gcc/testsuite/gcc.dg/vect/no-vfa-vect-102.c
! cb982eabcfba7f8b357abda4747b868e  gcc/testsuite/gcc.dg/vect/no-vfa-vect-102a.c
! 9b54555ef6f1eb3c1366e845c07ad982  gcc/testsuite/gcc.dg/vect/no-vfa-vect-37.c
  0e3f2524992ea25d9916d65f98d007f7  gcc/testsuite/gcc.dg/vect/no-vfa-vect-43.c
  61a43ccfa38c7830737494bc6298810c  gcc/testsuite/gcc.dg/vect/no-vfa-vect-45.c
  8139eb3c3b115d6f6b52912e68f9c90b  gcc/testsuite/gcc.dg/vect/no-vfa-vect-49.c
--- 37373,37382 ----
  4fcf9883a2190807dd1a4a7e02496b0d  gcc/testsuite/gcc.dg/vect/no-tree-reassoc-bb-slp-12.c
  3c9f7599a0123f95aed5c83a943006a1  gcc/testsuite/gcc.dg/vect/no-tree-sra-bb-slp-pr50730.c
  353ce72fd19727fe5790eb78afad584a  gcc/testsuite/gcc.dg/vect/no-vfa-pr29145.c
! 10849a286ca446a78cdaed2af5e61792  gcc/testsuite/gcc.dg/vect/no-vfa-vect-101.c
! e09657d6c00875424ac5ea01d994a93b  gcc/testsuite/gcc.dg/vect/no-vfa-vect-102.c
! ee3b53c86be7a5fecbb8472ba448b418  gcc/testsuite/gcc.dg/vect/no-vfa-vect-102a.c
! 16d1312f89fe5268558d0a1b425059ec  gcc/testsuite/gcc.dg/vect/no-vfa-vect-37.c
  0e3f2524992ea25d9916d65f98d007f7  gcc/testsuite/gcc.dg/vect/no-vfa-vect-43.c
  61a43ccfa38c7830737494bc6298810c  gcc/testsuite/gcc.dg/vect/no-vfa-vect-45.c
  8139eb3c3b115d6f6b52912e68f9c90b  gcc/testsuite/gcc.dg/vect/no-vfa-vect-49.c
*************** cb982eabcfba7f8b357abda4747b868e  gcc/te
*** 35515,35527 ****
  0181e9f1f425f33f7716405042b7ff96  gcc/testsuite/gcc.dg/vect/no-vfa-vect-53.c
  fc10208c55881431e6477e4618491f9e  gcc/testsuite/gcc.dg/vect/no-vfa-vect-57.c
  6dcd4afc04a3078b894bd8b9273794f2  gcc/testsuite/gcc.dg/vect/no-vfa-vect-61.c
! 5c353a3fc01bf8705f230b9add836491  gcc/testsuite/gcc.dg/vect/no-vfa-vect-79.c
  90ab4de708b524f7cbbdacf1cc401f14  gcc/testsuite/gcc.dg/vect/no-vfa-vect-depend-1.c
! 280fb5b9abd692a31e370787480f8638  gcc/testsuite/gcc.dg/vect/no-vfa-vect-depend-2.c
! 9ef1e96a4bca61642dd9d7586e384c60  gcc/testsuite/gcc.dg/vect/no-vfa-vect-depend-3.c
  bf1cfa521cf185bd0eb890c4572fbb34  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
  42d48d2ecd5682545b12ac42f879a831  gcc/testsuite/gcc.dg/vect/pr16105.c
  231c99dba9475fe09525bbf6f4374124  gcc/testsuite/gcc.dg/vect/pr18308.c
  3aed50f38aa86c4915d6e4b3cef91287  gcc/testsuite/gcc.dg/vect/pr18400.c
--- 37384,37397 ----
  0181e9f1f425f33f7716405042b7ff96  gcc/testsuite/gcc.dg/vect/no-vfa-vect-53.c
  fc10208c55881431e6477e4618491f9e  gcc/testsuite/gcc.dg/vect/no-vfa-vect-57.c
  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
! f2c181ef36eb91836542840cba87716a  gcc/testsuite/gcc.dg/vect/no-vfa-vect-depend-2.c
! fff665f1b39303fd6dd3f264118000e4  gcc/testsuite/gcc.dg/vect/no-vfa-vect-depend-3.c
  bf1cfa521cf185bd0eb890c4572fbb34  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
+ 88887c4b5fb9d1c397f50634168fef84  gcc/testsuite/gcc.dg/vect/nodump-vect-opt-info-1.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
*************** fdf8a174e47e1f4318a6da556f44c549  gcc/te
*** 35540,35546 ****
  92e9f91a60720269bfb35a3ceb22fc06  gcc/testsuite/gcc.dg/vect/pr24300.c
  48b0e55c3f50eda8d40483392c4ee61e  gcc/testsuite/gcc.dg/vect/pr25371.c
  b972eb3535ad7b67ff80f3ff6ea1049f  gcc/testsuite/gcc.dg/vect/pr25413.c
! 5f695ed7c14aec1a25c325f16b4914ff  gcc/testsuite/gcc.dg/vect/pr25413a.c
  ca08fe6054188ea7431d12ad5529e257  gcc/testsuite/gcc.dg/vect/pr26359.c
  ad21873ce089b706df5718647e61cf3d  gcc/testsuite/gcc.dg/vect/pr27151.c
  317c1e81850b07b04db7735e6a85de5b  gcc/testsuite/gcc.dg/vect/pr28952.c
--- 37410,37416 ----
  92e9f91a60720269bfb35a3ceb22fc06  gcc/testsuite/gcc.dg/vect/pr24300.c
  48b0e55c3f50eda8d40483392c4ee61e  gcc/testsuite/gcc.dg/vect/pr25371.c
  b972eb3535ad7b67ff80f3ff6ea1049f  gcc/testsuite/gcc.dg/vect/pr25413.c
! b4686f8ea054e3c9109b8db9de24e873  gcc/testsuite/gcc.dg/vect/pr25413a.c
  ca08fe6054188ea7431d12ad5529e257  gcc/testsuite/gcc.dg/vect/pr26359.c
  ad21873ce089b706df5718647e61cf3d  gcc/testsuite/gcc.dg/vect/pr27151.c
  317c1e81850b07b04db7735e6a85de5b  gcc/testsuite/gcc.dg/vect/pr28952.c
*************** ad21873ce089b706df5718647e61cf3d  gcc/te
*** 35551,35557 ****
  4c14ec7fa1a829e47c563d055c2b40df  gcc/testsuite/gcc.dg/vect/pr30858.c
  d61227d15835abe67f6f89142f7406aa  gcc/testsuite/gcc.dg/vect/pr31041.c
  f30d407737f2728f358eaa8c48d9305f  gcc/testsuite/gcc.dg/vect/pr31343.c
! de6646db4ef6dd1baebc02276925da5e  gcc/testsuite/gcc.dg/vect/pr31699.c
  8ea73738bbfc3d76dd930598de827708  gcc/testsuite/gcc.dg/vect/pr32216.c
  0aa398b333d31d38400e1018b82223cc  gcc/testsuite/gcc.dg/vect/pr32224.c
  9913bb38179878041ba4d389a417ec70  gcc/testsuite/gcc.dg/vect/pr32230.c
--- 37421,37427 ----
  4c14ec7fa1a829e47c563d055c2b40df  gcc/testsuite/gcc.dg/vect/pr30858.c
  d61227d15835abe67f6f89142f7406aa  gcc/testsuite/gcc.dg/vect/pr31041.c
  f30d407737f2728f358eaa8c48d9305f  gcc/testsuite/gcc.dg/vect/pr31343.c
! 94c219827d117bc88a8a9f4a148da3d0  gcc/testsuite/gcc.dg/vect/pr31699.c
  8ea73738bbfc3d76dd930598de827708  gcc/testsuite/gcc.dg/vect/pr32216.c
  0aa398b333d31d38400e1018b82223cc  gcc/testsuite/gcc.dg/vect/pr32224.c
  9913bb38179878041ba4d389a417ec70  gcc/testsuite/gcc.dg/vect/pr32230.c
*************** cd935331160cf0281e45fafa4749f5f0  gcc/te
*** 35590,35596 ****
  60be5134d6fc3db332f902ea8be33e21  gcc/testsuite/gcc.dg/vect/pr42193.c
  4020daa1f0762f4e7ca5633fc53fd060  gcc/testsuite/gcc.dg/vect/pr42395.c
  e3ec6bcdb33d33cdc7cb20ea98609bee  gcc/testsuite/gcc.dg/vect/pr42604.c
! b887544151b0eafcc3d63cc788c94426  gcc/testsuite/gcc.dg/vect/pr42709.c
  f038fddf1fe8bd07712fe919e2308134  gcc/testsuite/gcc.dg/vect/pr43430-1.c
  f1ef3d07a2fda546b09d4fa9df469b6e  gcc/testsuite/gcc.dg/vect/pr43430-2.c
  3b0c0cb2d28b066d20f0aa2230cc1fe9  gcc/testsuite/gcc.dg/vect/pr43432.c
--- 37460,37466 ----
  60be5134d6fc3db332f902ea8be33e21  gcc/testsuite/gcc.dg/vect/pr42193.c
  4020daa1f0762f4e7ca5633fc53fd060  gcc/testsuite/gcc.dg/vect/pr42395.c
  e3ec6bcdb33d33cdc7cb20ea98609bee  gcc/testsuite/gcc.dg/vect/pr42604.c
! c102b3dce6246317d759db677ef8bf0c  gcc/testsuite/gcc.dg/vect/pr42709.c
  f038fddf1fe8bd07712fe919e2308134  gcc/testsuite/gcc.dg/vect/pr43430-1.c
  f1ef3d07a2fda546b09d4fa9df469b6e  gcc/testsuite/gcc.dg/vect/pr43430-2.c
  3b0c0cb2d28b066d20f0aa2230cc1fe9  gcc/testsuite/gcc.dg/vect/pr43432.c
*************** f1ef3d07a2fda546b09d4fa9df469b6e  gcc/te
*** 35598,35604 ****
  8c048eca5b035663b764f0d53af6cd31  gcc/testsuite/gcc.dg/vect/pr43842.c
  9ec7b3ea846c1dce7c3f519d615efccc  gcc/testsuite/gcc.dg/vect/pr44507.c
  747998e3ae4f8a1bbfd93c248af40a73  gcc/testsuite/gcc.dg/vect/pr45633.c
! 31b5936510660a845ed1dbff96c2fdfc  gcc/testsuite/gcc.dg/vect/pr45752.c
  34ad24fd4967722fdee1f299bd913fdf  gcc/testsuite/gcc.dg/vect/pr45847.c
  7ffb8b228d406b08c8f1a38dfd458d83  gcc/testsuite/gcc.dg/vect/pr45902.c
  077b06fe00ec6287ef58ee5a4072426c  gcc/testsuite/gcc.dg/vect/pr46009.c
--- 37468,37474 ----
  8c048eca5b035663b764f0d53af6cd31  gcc/testsuite/gcc.dg/vect/pr43842.c
  9ec7b3ea846c1dce7c3f519d615efccc  gcc/testsuite/gcc.dg/vect/pr44507.c
  747998e3ae4f8a1bbfd93c248af40a73  gcc/testsuite/gcc.dg/vect/pr45633.c
! 277f4616723257025b4737545b9bc4d0  gcc/testsuite/gcc.dg/vect/pr45752.c
  34ad24fd4967722fdee1f299bd913fdf  gcc/testsuite/gcc.dg/vect/pr45847.c
  7ffb8b228d406b08c8f1a38dfd458d83  gcc/testsuite/gcc.dg/vect/pr45902.c
  077b06fe00ec6287ef58ee5a4072426c  gcc/testsuite/gcc.dg/vect/pr46009.c
*************** f20a1760d264fe0667bfd7990309368f  gcc/te
*** 35616,35622 ****
  6cbb0ca0c466ff1208f5c003f81ab645  gcc/testsuite/gcc.dg/vect/pr49038.c
  5693d2db7c6fd6a87fdce1ddb192cbd2  gcc/testsuite/gcc.dg/vect/pr49093.c
  ca3c5574bbb2e574a5ec16290e473133  gcc/testsuite/gcc.dg/vect/pr49318.c
! 6bc9a6551507c26b34c7a5a86f31d1f5  gcc/testsuite/gcc.dg/vect/pr49352.c
  e003884c930482a3dde426ae63d0bbd8  gcc/testsuite/gcc.dg/vect/pr49478.c
  b67f1dac3e0a5aee49f73e2b75929c0f  gcc/testsuite/gcc.dg/vect/pr49610.c
  6590ef4cf8e9bbed29589b075a9d21ca  gcc/testsuite/gcc.dg/vect/pr49771.c
--- 37486,37492 ----
  6cbb0ca0c466ff1208f5c003f81ab645  gcc/testsuite/gcc.dg/vect/pr49038.c
  5693d2db7c6fd6a87fdce1ddb192cbd2  gcc/testsuite/gcc.dg/vect/pr49093.c
  ca3c5574bbb2e574a5ec16290e473133  gcc/testsuite/gcc.dg/vect/pr49318.c
! 46b4045670cccfc509b966dbc61b546b  gcc/testsuite/gcc.dg/vect/pr49352.c
  e003884c930482a3dde426ae63d0bbd8  gcc/testsuite/gcc.dg/vect/pr49478.c
  b67f1dac3e0a5aee49f73e2b75929c0f  gcc/testsuite/gcc.dg/vect/pr49610.c
  6590ef4cf8e9bbed29589b075a9d21ca  gcc/testsuite/gcc.dg/vect/pr49771.c
*************** c6c26572a22bac2dfd7ad907ee0b967e  gcc/te
*** 35678,35686 ****
  126463ed383e8f077f50ece8eddb7c87  gcc/testsuite/gcc.dg/vect/pr60382.c
  68256e88de1c5b1aa6a7cbd50cedbd35  gcc/testsuite/gcc.dg/vect/pr60482.c
  242b045b4e98184d2e453773e6ede738  gcc/testsuite/gcc.dg/vect/pr60505.c
! abd16b1d1e3ecc54da95e8bcfba64aff  gcc/testsuite/gcc.dg/vect/pr60656.c
  b6e098566d53b50570bb6eb17cbd7e25  gcc/testsuite/gcc.dg/vect/pr60841.c
! 4559a328702159deaa6857867103964a  gcc/testsuite/gcc.dg/vect/pr61194.c
  f4d4b702127672cb8722167eb7daf41b  gcc/testsuite/gcc.dg/vect/pr61634.c
  721bd88cde3c00cbdf9cec35cec92c9f  gcc/testsuite/gcc.dg/vect/pr61680.c
  2771ecad7a930d0d32794d40bed756c6  gcc/testsuite/gcc.dg/vect/pr62021.c
--- 37548,37556 ----
  126463ed383e8f077f50ece8eddb7c87  gcc/testsuite/gcc.dg/vect/pr60382.c
  68256e88de1c5b1aa6a7cbd50cedbd35  gcc/testsuite/gcc.dg/vect/pr60482.c
  242b045b4e98184d2e453773e6ede738  gcc/testsuite/gcc.dg/vect/pr60505.c
! 46a6dd2bc79b24ae06b68126569f8700  gcc/testsuite/gcc.dg/vect/pr60656.c
  b6e098566d53b50570bb6eb17cbd7e25  gcc/testsuite/gcc.dg/vect/pr60841.c
! 4a0182644d22bcc6892fbe45d266f75e  gcc/testsuite/gcc.dg/vect/pr61194.c
  f4d4b702127672cb8722167eb7daf41b  gcc/testsuite/gcc.dg/vect/pr61634.c
  721bd88cde3c00cbdf9cec35cec92c9f  gcc/testsuite/gcc.dg/vect/pr61680.c
  2771ecad7a930d0d32794d40bed756c6  gcc/testsuite/gcc.dg/vect/pr62021.c
*************** ec3365bba00d1cc2cd3969c55351e80c  gcc/te
*** 35701,35726 ****
  c98bdb23f463d98ed1f37c2088b11798  gcc/testsuite/gcc.dg/vect/pr64495.c
  36b8af4238d302a0ce43f1cb75dfda35  gcc/testsuite/gcc.dg/vect/pr64829.c
  02665d8d0016645ae7a66642793cd124  gcc/testsuite/gcc.dg/vect/pr64844.c
! 110bb357ba473d2f4b6970e5aaf4d272  gcc/testsuite/gcc.dg/vect/pr65310.c
  9956a4c3d2d612eab06cfc8981da6967  gcc/testsuite/gcc.dg/vect/pr65494.c
! e8412ff6d8f3683deb17bd959256adc6  gcc/testsuite/gcc.dg/vect/pr65518.c
! e926f8a073ff8edf4960323ad814b4c7  gcc/testsuite/gcc.dg/vect/pr65947-1.c
! 5ac1f7dcd6391e3b8593e85a5dc43b69  gcc/testsuite/gcc.dg/vect/pr65947-10.c
  a13016b360e8964d5f476e90b028d5e5  gcc/testsuite/gcc.dg/vect/pr65947-11.c
! 0e99e7f22042ba6a67e01293bd2ea918  gcc/testsuite/gcc.dg/vect/pr65947-12.c
! 5411874f8406ea912d9be91c8c3dbc34  gcc/testsuite/gcc.dg/vect/pr65947-13.c
! 9c9988f7cf3062e07f88d2fa7b0cd5af  gcc/testsuite/gcc.dg/vect/pr65947-2.c
! f19a229a9feb5e11408c5372389536d5  gcc/testsuite/gcc.dg/vect/pr65947-3.c
! d72f59647c2cc14bee615cef47acd053  gcc/testsuite/gcc.dg/vect/pr65947-4.c
! 56ef1d4c24dbbf166c2d6d96d5d2d193  gcc/testsuite/gcc.dg/vect/pr65947-5.c
! 5f079a1ee3c6eba5eb2dd24e84e60f5f  gcc/testsuite/gcc.dg/vect/pr65947-6.c
  a1ada889f59f3aac8d8f6639b833279a  gcc/testsuite/gcc.dg/vect/pr65947-7.c
! 29e3db7f28cd506d87813f668417b831  gcc/testsuite/gcc.dg/vect/pr65947-8.c
! a8cf3176719d0fa9a3b3d984aef209cb  gcc/testsuite/gcc.dg/vect/pr65947-9.c
  d1bb916522cf51af2ec6b26d7bfe3875  gcc/testsuite/gcc.dg/vect/pr65951.c
! 909245027a67eed899841d65ca788c26  gcc/testsuite/gcc.dg/vect/pr66142.c
! 94ba2ffa702e68550138d2586c87e9d7  gcc/testsuite/gcc.dg/vect/pr66251.c
  fe55b7b3a0180146eb06495eed9f01a0  gcc/testsuite/gcc.dg/vect/pr66253.c
  31de59c90b606bb80ee8c60486379cc0  gcc/testsuite/gcc.dg/vect/pr66636.c
  86169de4aac395fc7dd49fd713661f87  gcc/testsuite/gcc.dg/vect/pr66677.c
  f4505aa6c41d3aa5d36144edc00b927e  gcc/testsuite/gcc.dg/vect/pr66951.c
--- 37571,37599 ----
  c98bdb23f463d98ed1f37c2088b11798  gcc/testsuite/gcc.dg/vect/pr64495.c
  36b8af4238d302a0ce43f1cb75dfda35  gcc/testsuite/gcc.dg/vect/pr64829.c
  02665d8d0016645ae7a66642793cd124  gcc/testsuite/gcc.dg/vect/pr64844.c
! 6dc746c14c5e0a5a989ccf84fcdfda0d  gcc/testsuite/gcc.dg/vect/pr65310.c
  9956a4c3d2d612eab06cfc8981da6967  gcc/testsuite/gcc.dg/vect/pr65494.c
! 227e8aad63905e3d6d110cef1da40ead  gcc/testsuite/gcc.dg/vect/pr65518.c
! c419e66e1e595fb0dd6835a70f20c1ea  gcc/testsuite/gcc.dg/vect/pr65947-1.c
! 19c11a2c4181c190219122c34d3ec60d  gcc/testsuite/gcc.dg/vect/pr65947-10.c
  a13016b360e8964d5f476e90b028d5e5  gcc/testsuite/gcc.dg/vect/pr65947-11.c
! d9318e5b68d148ca939cddfef204877d  gcc/testsuite/gcc.dg/vect/pr65947-12.c
! 4680ab1fc12aa4b56fcd83071deb267e  gcc/testsuite/gcc.dg/vect/pr65947-13.c
! 753c978250d5007e8a3caafdb75f74bc  gcc/testsuite/gcc.dg/vect/pr65947-14.c
! e55d11aca37f3e6032bb292eee6504bf  gcc/testsuite/gcc.dg/vect/pr65947-2.c
! 27d07d89b70d04186982f6f1b93e2bb5  gcc/testsuite/gcc.dg/vect/pr65947-3.c
! e3855a9b0181314695099d6bed152059  gcc/testsuite/gcc.dg/vect/pr65947-4.c
! e8ac4ef98ffaebeb03ac820093d7da0a  gcc/testsuite/gcc.dg/vect/pr65947-5.c
! 45d9651198f706a85ccbb421bdeb1b1d  gcc/testsuite/gcc.dg/vect/pr65947-6.c
  a1ada889f59f3aac8d8f6639b833279a  gcc/testsuite/gcc.dg/vect/pr65947-7.c
! 2fd0cec76f16b729df493fad2b3ba2c2  gcc/testsuite/gcc.dg/vect/pr65947-8.c
! 0a3a84abc0ad8a5a8469cf78020ea3a4  gcc/testsuite/gcc.dg/vect/pr65947-9.c
  d1bb916522cf51af2ec6b26d7bfe3875  gcc/testsuite/gcc.dg/vect/pr65951.c
! 16afddef8b104be276d35640c23deb11  gcc/testsuite/gcc.dg/vect/pr66142.c
! a420fd5016218be0e51a1f9cec8d2168  gcc/testsuite/gcc.dg/vect/pr66251.c
  fe55b7b3a0180146eb06495eed9f01a0  gcc/testsuite/gcc.dg/vect/pr66253.c
+ ffb0c9d848fbf1c998daad920c587b69  gcc/testsuite/gcc.dg/vect/pr66278.c
+ 8f4716353b96f7ad31f8ad2e730be6b6  gcc/testsuite/gcc.dg/vect/pr66623.c
  31de59c90b606bb80ee8c60486379cc0  gcc/testsuite/gcc.dg/vect/pr66636.c
  86169de4aac395fc7dd49fd713661f87  gcc/testsuite/gcc.dg/vect/pr66677.c
  f4505aa6c41d3aa5d36144edc00b927e  gcc/testsuite/gcc.dg/vect/pr66951.c
*************** b0c728b20c3631680ab365d1bc5a0fd8  gcc/te
*** 35728,35734 ****
  62a72b6ca1acac0241ad15032cf2b23f  gcc/testsuite/gcc.dg/vect/pr68305.c
  ac916e4c549ed47dc42ad0172c7b60b7  gcc/testsuite/gcc.dg/vect/pr68339.c
  75bd6448a642ced4b65eb52a07dfcb3e  gcc/testsuite/gcc.dg/vect/pr68417.c
! 60813985588a38863057a509bf4d52f3  gcc/testsuite/gcc.dg/vect/pr68445.c
  a83a73e956c9df25282bf0fca7b44fb4  gcc/testsuite/gcc.dg/vect/pr68482.c
  87c3451c4b5254ada5aa2180ca9f4bdb  gcc/testsuite/gcc.dg/vect/pr68502-1.c
  56f7e2dcd1c74f4456ebe865bb6236a0  gcc/testsuite/gcc.dg/vect/pr68502-2.c
--- 37601,37607 ----
  62a72b6ca1acac0241ad15032cf2b23f  gcc/testsuite/gcc.dg/vect/pr68305.c
  ac916e4c549ed47dc42ad0172c7b60b7  gcc/testsuite/gcc.dg/vect/pr68339.c
  75bd6448a642ced4b65eb52a07dfcb3e  gcc/testsuite/gcc.dg/vect/pr68417.c
! fc4004004a9a82551a093065fe47f3d8  gcc/testsuite/gcc.dg/vect/pr68445.c
  a83a73e956c9df25282bf0fca7b44fb4  gcc/testsuite/gcc.dg/vect/pr68482.c
  87c3451c4b5254ada5aa2180ca9f4bdb  gcc/testsuite/gcc.dg/vect/pr68502-1.c
  56f7e2dcd1c74f4456ebe865bb6236a0  gcc/testsuite/gcc.dg/vect/pr68502-2.c
*************** a6bf2f9e7fd4d4710635ceb80c4703e8  gcc/te
*** 35757,35837 ****
  d4d83ecc92f0756477efce1e86234799  gcc/testsuite/gcc.dg/vect/pr77503.c
  7a4387a14749b0753c6aa71d2eb4ddc0  gcc/testsuite/gcc.dg/vect/pr77724.c
  a7cd8b8cb8be22a9ef1f1166d448aa8f  gcc/testsuite/gcc.dg/vect/pr78005.c
  52467e237dda0f04eeca5d2663e9eaae  gcc/testsuite/gcc.dg/vect/pr78938.c
  8861499ec24cd393cebd7a6e56264ef5  gcc/testsuite/gcc.dg/vect/pr79347.c
  5c08c1c457f4c7dee7ee437f4b859865  gcc/testsuite/gcc.dg/vect/pr79824-1.c
  a12062986be1b14e66db717db5cdadba  gcc/testsuite/gcc.dg/vect/pr79824-2.c
  e805f67ead2894c44bccccd340803cfc  gcc/testsuite/gcc.dg/vect/pr79887.c
! 7568e8f098ed998623479d52fb6c108e  gcc/testsuite/gcc.dg/vect/pr79920.c
! ad63fdd3c21a22619dd1f66e5e9a7410  gcc/testsuite/gcc.dg/vect/pr80631-1.c
! dd369fee4b54f132a1e62f5f6bd24627  gcc/testsuite/gcc.dg/vect/pr80631-2.c
! ab01171ee6ad27ca13cbc3085178f4b6  gcc/testsuite/gcc.dg/vect/pr81410.c
! 3b59a28d58088fb3cfd4756b716a52cb  gcc/testsuite/gcc.dg/vect/pr81633.c
! 7b87a8f59e1bd5262c259ee074d8f12a  gcc/testsuite/gcc.dg/vect/pr82108.c
  e14263baf37160b7fe78dcea65251c62  gcc/testsuite/gcc.dg/vect/pr82436.c
  32d06c886c85516fbdce4ca1bd516496  gcc/testsuite/gcc.dg/vect/section-anchors-pr27770.c
! 00b8b4e778221f5bedb59cfc69f6c9d7  gcc/testsuite/gcc.dg/vect/section-anchors-vect-69.c
! 218f2e2bcfb33c838c80a2ae8c302759  gcc/testsuite/gcc.dg/vect/slp-1.c
! af7cf3dae45494e753c2441118d8ea83  gcc/testsuite/gcc.dg/vect/slp-10.c
  731c52b0ee675b8bd3f075148fc17648  gcc/testsuite/gcc.dg/vect/slp-11a.c
  bc1caf90aded8da06f10166eaf5ae3c7  gcc/testsuite/gcc.dg/vect/slp-11b.c
! b5c6112ce0a8c36c92abf47ad72a8514  gcc/testsuite/gcc.dg/vect/slp-11c.c
  ba897d8c2f0b0e987a99c1e033948730  gcc/testsuite/gcc.dg/vect/slp-12a.c
! 263b3e0b2812370e537bc260ddc576b8  gcc/testsuite/gcc.dg/vect/slp-12b.c
  062fad9552b7b19c8e06570251ae1f45  gcc/testsuite/gcc.dg/vect/slp-12c.c
! 5feb13d10b89b4abb1c5f856010f02a0  gcc/testsuite/gcc.dg/vect/slp-13-big-array.c
! 0a521f43ff354e59a4cab5b4385474ac  gcc/testsuite/gcc.dg/vect/slp-13.c
  4cde9bc0fad9158b3cb2f616ee013de6  gcc/testsuite/gcc.dg/vect/slp-14.c
  ab38cb31bf29887796e19f51e50eab07  gcc/testsuite/gcc.dg/vect/slp-15.c
  2b173c6ea61be245da9b48b1b51ff29f  gcc/testsuite/gcc.dg/vect/slp-16.c
! 6e2c582035d2566bb7f0488755f416c6  gcc/testsuite/gcc.dg/vect/slp-17.c
! 3d42e6e9790d50c527f036cbdf237c7e  gcc/testsuite/gcc.dg/vect/slp-18.c
  2b500ec8b214818b594f3bb39f583d5b  gcc/testsuite/gcc.dg/vect/slp-19a.c
  2920234f7fd01e1c0402626b61e93688  gcc/testsuite/gcc.dg/vect/slp-19b.c
! bdb061bf32319546007f559449c6e644  gcc/testsuite/gcc.dg/vect/slp-19c.c
! 3dc32ef33ed116fb9c13c6ed4eddaefa  gcc/testsuite/gcc.dg/vect/slp-2.c
! 95aab58f06437a48a9806adc93600b7e  gcc/testsuite/gcc.dg/vect/slp-20.c
! 26c23966d2144402f59ff4d2a5dd7b37  gcc/testsuite/gcc.dg/vect/slp-21.c
! 8a8bde4ed27ae42c089cc68c6d2e3491  gcc/testsuite/gcc.dg/vect/slp-22.c
! afed326a342db1bf754aeafc2fd2212d  gcc/testsuite/gcc.dg/vect/slp-23.c
! 89c8ee4ed77e6fd22754004dbaea4a38  gcc/testsuite/gcc.dg/vect/slp-24-big-array.c
! c96ef907413639c9c42a47e760b5fcf8  gcc/testsuite/gcc.dg/vect/slp-24.c
! 466a8deb216cdae59300eb8fa872d1fa  gcc/testsuite/gcc.dg/vect/slp-25.c
  140aa4e68ff44957bad070a78e984763  gcc/testsuite/gcc.dg/vect/slp-26.c
! 56294f4e5b6a00220c56c8de0653db6b  gcc/testsuite/gcc.dg/vect/slp-28.c
! 04ffdd8c7ffc31b2837298c0e75b0465  gcc/testsuite/gcc.dg/vect/slp-3-big-array.c
! e1aff20ced0ae5f7bec25da2111a0cad  gcc/testsuite/gcc.dg/vect/slp-3.c
! 754ea4ec67b43bf29871f50cf1ce683c  gcc/testsuite/gcc.dg/vect/slp-33.c
! 2b5983a3ae9453bc5fc65930b218f080  gcc/testsuite/gcc.dg/vect/slp-34-big-array.c
  a5429ab06c5986c2e0271c3a6f4c6cf0  gcc/testsuite/gcc.dg/vect/slp-34.c
! ebf54f1f4115817ada07be949d829c4b  gcc/testsuite/gcc.dg/vect/slp-35.c
  4098835309b4ba9d3e73db2246ce3bf0  gcc/testsuite/gcc.dg/vect/slp-36.c
! 4ddaeb554fe6897a1c44f6a64cc09d62  gcc/testsuite/gcc.dg/vect/slp-37.c
  ede1734f85186c73229dd4786f51636c  gcc/testsuite/gcc.dg/vect/slp-38.c
  52c75813f292478bcc4d550f1479c3e3  gcc/testsuite/gcc.dg/vect/slp-39.c
! 72c55c9723cd065c13756c190d6f8d00  gcc/testsuite/gcc.dg/vect/slp-4-big-array.c
  636f816ad3566bd94c00ce9f450da9e3  gcc/testsuite/gcc.dg/vect/slp-4.c
  5da40f81b7bf77865a2bd24b6770ff69  gcc/testsuite/gcc.dg/vect/slp-41.c
! 29250f6b675ad1b5bb9d070b7ca39410  gcc/testsuite/gcc.dg/vect/slp-42.c
! 5278105d76951406f5da6e90a3916e76  gcc/testsuite/gcc.dg/vect/slp-43.c
  a397bfe9f818dafa44b2593952e5c479  gcc/testsuite/gcc.dg/vect/slp-44.c
! d596c5b99d4773280927fb7e350f277b  gcc/testsuite/gcc.dg/vect/slp-45.c
  94cab958cbf9ae8fce13bdd8c3b74a6d  gcc/testsuite/gcc.dg/vect/slp-5.c
! f2b8194ef81248742c7513f626571f34  gcc/testsuite/gcc.dg/vect/slp-6.c
  b3d2fff99fdc9c33e68f2ba4a3b8955b  gcc/testsuite/gcc.dg/vect/slp-7.c
  095b15e60c3303038cf50c94ca50d6dd  gcc/testsuite/gcc.dg/vect/slp-8.c
  c9388284deee684981d0e3fc8167e690  gcc/testsuite/gcc.dg/vect/slp-9.c
  fd68ef959b65053a430833f00187206a  gcc/testsuite/gcc.dg/vect/slp-cond-1.c
! addbb01db9b274771d2fdc7b1f83753e  gcc/testsuite/gcc.dg/vect/slp-cond-2-big-array.c
! 1709688c4789eaeb083065510aafedc9  gcc/testsuite/gcc.dg/vect/slp-cond-2.c
  6a7607d5d5730954b62fb2c3b7c8389e  gcc/testsuite/gcc.dg/vect/slp-cond-3.c
  025c8079f0e732250e3bdf3a52f8218f  gcc/testsuite/gcc.dg/vect/slp-cond-4.c
  fae76ca272ca1d56a1750929315ad201  gcc/testsuite/gcc.dg/vect/slp-cond-5.c
! d0ab3eb5da7f5d40b5c29e9fa3c248d9  gcc/testsuite/gcc.dg/vect/slp-multitypes-1.c
  378fd3c047a4e11988b5916b89079e54  gcc/testsuite/gcc.dg/vect/slp-multitypes-10.c
! 241c863598533bb996f0519085af7f9a  gcc/testsuite/gcc.dg/vect/slp-multitypes-11-big-array.c
! 0a6cc563c38e21bf34add7e3d41efa09  gcc/testsuite/gcc.dg/vect/slp-multitypes-11.c
! 3b36d648ce3849f9633f9c1e8b30e454  gcc/testsuite/gcc.dg/vect/slp-multitypes-12.c
  409aa5591bdee4aacf2a5aa83d03e9f9  gcc/testsuite/gcc.dg/vect/slp-multitypes-2.c
  db686f43011d39a6e06570d752910217  gcc/testsuite/gcc.dg/vect/slp-multitypes-3.c
  c64db5e6268c059d406e30dbcc678daf  gcc/testsuite/gcc.dg/vect/slp-multitypes-4.c
--- 37630,37733 ----
  d4d83ecc92f0756477efce1e86234799  gcc/testsuite/gcc.dg/vect/pr77503.c
  7a4387a14749b0753c6aa71d2eb4ddc0  gcc/testsuite/gcc.dg/vect/pr77724.c
  a7cd8b8cb8be22a9ef1f1166d448aa8f  gcc/testsuite/gcc.dg/vect/pr78005.c
+ d01f8a0347e5cae7456521187b5b512e  gcc/testsuite/gcc.dg/vect/pr78558.c
  52467e237dda0f04eeca5d2663e9eaae  gcc/testsuite/gcc.dg/vect/pr78938.c
  8861499ec24cd393cebd7a6e56264ef5  gcc/testsuite/gcc.dg/vect/pr79347.c
  5c08c1c457f4c7dee7ee437f4b859865  gcc/testsuite/gcc.dg/vect/pr79824-1.c
  a12062986be1b14e66db717db5cdadba  gcc/testsuite/gcc.dg/vect/pr79824-2.c
  e805f67ead2894c44bccccd340803cfc  gcc/testsuite/gcc.dg/vect/pr79887.c
! 97db2b17a22b1e765544f19e8ccd0877  gcc/testsuite/gcc.dg/vect/pr79920.c
! 0238c8826f7453fa4ca7273d96db7547  gcc/testsuite/gcc.dg/vect/pr80631-1.c
! e5c69077d0a36436aad2e8772386c7b9  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
! 654137c7b0d9e65431583093a90f0b8e  gcc/testsuite/gcc.dg/vect/pr80928.c
! 0ddb632fe10f4e7596ddf6a2ee402259  gcc/testsuite/gcc.dg/vect/pr81082.c
! 4620e86ca949db6bb330effa6a9eb9a2  gcc/testsuite/gcc.dg/vect/pr81136.c
! 3f00aa8bd4647b819ebad8742aae55ff  gcc/testsuite/gcc.dg/vect/pr81196.c
! 9f6e75e9dbf6ab44b15e511f1ec5060c  gcc/testsuite/gcc.dg/vect/pr81410.c
! 5d2ab81a9406e2000bbd06f6aba15b52  gcc/testsuite/gcc.dg/vect/pr81633.c
! b01d1cf10e6bd44acf483b58e22aced4  gcc/testsuite/gcc.dg/vect/pr81815.c
! bddceeb2dcbec7478439798545334dc9  gcc/testsuite/gcc.dg/vect/pr82108.c
! 13fb523d8fb02882b90caadcfa00e949  gcc/testsuite/gcc.dg/vect/pr82289.c
  e14263baf37160b7fe78dcea65251c62  gcc/testsuite/gcc.dg/vect/pr82436.c
+ bfbf1f7fd482014f8fc08dd5263d9a59  gcc/testsuite/gcc.dg/vect/pr83202-1.c
+ 5f5509264d3c6809cb82c71362c3957b  gcc/testsuite/gcc.dg/vect/pr83338.c
+ 16524b93baca7c8b35b32a0887fc1479  gcc/testsuite/gcc.dg/vect/pr83857.c
+ 0536cf2d592bc41eeb1466e4ee13dd71  gcc/testsuite/gcc.dg/vect/pr83867.c
+ 4dfe55aaa6446927bd5a58f3bea0047a  gcc/testsuite/gcc.dg/vect/pr83914.c
+ 09dd6ecaae68256415a0ac27b7b744d6  gcc/testsuite/gcc.dg/vect/pr83965-2.c
+ ee4412d8b1a114aaf818617f4b0e4ef6  gcc/testsuite/gcc.dg/vect/pr83965.c
+ b83c7628f6a3196a7493cd61645c2322  gcc/testsuite/gcc.dg/vect/pr84265.c
+ 3ccfddb01fb0c35f130b75cb184351cb  gcc/testsuite/gcc.dg/vect/pr84357.c
+ 757457cc7b786e3635e3b333e13494f4  gcc/testsuite/gcc.dg/vect/pr84419.c
+ fbc0074bad8664bb29ed347a842005c1  gcc/testsuite/gcc.dg/vect/pr85286.c
+ 24728addf4f021b1404926e398186a70  gcc/testsuite/gcc.dg/vect/pr85586.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
  bc1caf90aded8da06f10166eaf5ae3c7  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
  062fad9552b7b19c8e06570251ae1f45  gcc/testsuite/gcc.dg/vect/slp-12c.c
! 2f8ea14ce59b6b1755d366f7e0a55b84  gcc/testsuite/gcc.dg/vect/slp-13-big-array.c
! 951bb45b178fca165abc77197fefc192  gcc/testsuite/gcc.dg/vect/slp-13.c
  4cde9bc0fad9158b3cb2f616ee013de6  gcc/testsuite/gcc.dg/vect/slp-14.c
  ab38cb31bf29887796e19f51e50eab07  gcc/testsuite/gcc.dg/vect/slp-15.c
  2b173c6ea61be245da9b48b1b51ff29f  gcc/testsuite/gcc.dg/vect/slp-16.c
! 1cadda5cdbf87b3020b20db90bf3137c  gcc/testsuite/gcc.dg/vect/slp-17.c
! feeec17385c2095429ad132bd085a67b  gcc/testsuite/gcc.dg/vect/slp-18.c
  2b500ec8b214818b594f3bb39f583d5b  gcc/testsuite/gcc.dg/vect/slp-19a.c
  2920234f7fd01e1c0402626b61e93688  gcc/testsuite/gcc.dg/vect/slp-19b.c
! 107b703b7e1442d67b0d3d6345c9655e  gcc/testsuite/gcc.dg/vect/slp-19c.c
! d7fccaa610ea11b1a5f271dc2f429653  gcc/testsuite/gcc.dg/vect/slp-2.c
! 8ebb5ddb99a2da9a195e7369c7f9b513  gcc/testsuite/gcc.dg/vect/slp-20.c
! 79d35bc789cc55ce04ec9737c00a5143  gcc/testsuite/gcc.dg/vect/slp-21.c
! 36a51711f52dc82c7546d284e2f6904a  gcc/testsuite/gcc.dg/vect/slp-22.c
! 1f4de76caaf2a9790f9f95b9ed5fd795  gcc/testsuite/gcc.dg/vect/slp-23.c
! c9166044854a8e3d87de33160660cfbd  gcc/testsuite/gcc.dg/vect/slp-24-big-array.c
! e5e1221b0f3db24e3f3bf9735cf578a4  gcc/testsuite/gcc.dg/vect/slp-24.c
! 2ac3445fa03caf005b841fd17db572aa  gcc/testsuite/gcc.dg/vect/slp-25.c
  140aa4e68ff44957bad070a78e984763  gcc/testsuite/gcc.dg/vect/slp-26.c
! 30f67a86cc78aee3647b6369c43623a2  gcc/testsuite/gcc.dg/vect/slp-28.c
! 620f25efe383cf052fc165488dc172ac  gcc/testsuite/gcc.dg/vect/slp-3-big-array.c
! 7dc974b11adaed88b3b61acba3a1d296  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
! 2a9c280973b2115f991d18030b181036  gcc/testsuite/gcc.dg/vect/slp-35.c
  4098835309b4ba9d3e73db2246ce3bf0  gcc/testsuite/gcc.dg/vect/slp-36.c
! 77d63dfd126e9ce52385acc537125269  gcc/testsuite/gcc.dg/vect/slp-37.c
  ede1734f85186c73229dd4786f51636c  gcc/testsuite/gcc.dg/vect/slp-38.c
  52c75813f292478bcc4d550f1479c3e3  gcc/testsuite/gcc.dg/vect/slp-39.c
! 20b0cff3f2802b25641b4afb1397d411  gcc/testsuite/gcc.dg/vect/slp-4-big-array.c
  636f816ad3566bd94c00ce9f450da9e3  gcc/testsuite/gcc.dg/vect/slp-4.c
  5da40f81b7bf77865a2bd24b6770ff69  gcc/testsuite/gcc.dg/vect/slp-41.c
! 03ddbd9e0aebee2332870297075726df  gcc/testsuite/gcc.dg/vect/slp-42.c
! ac7cf707c5894ad86b88756812a14ce3  gcc/testsuite/gcc.dg/vect/slp-43.c
  a397bfe9f818dafa44b2593952e5c479  gcc/testsuite/gcc.dg/vect/slp-44.c
! 0c38d3e94aa2ed0cd27af0c2a335c185  gcc/testsuite/gcc.dg/vect/slp-45.c
  94cab958cbf9ae8fce13bdd8c3b74a6d  gcc/testsuite/gcc.dg/vect/slp-5.c
! af23113d71fb18e642c9a7a2b9f9c0fd  gcc/testsuite/gcc.dg/vect/slp-6.c
  b3d2fff99fdc9c33e68f2ba4a3b8955b  gcc/testsuite/gcc.dg/vect/slp-7.c
  095b15e60c3303038cf50c94ca50d6dd  gcc/testsuite/gcc.dg/vect/slp-8.c
  c9388284deee684981d0e3fc8167e690  gcc/testsuite/gcc.dg/vect/slp-9.c
  fd68ef959b65053a430833f00187206a  gcc/testsuite/gcc.dg/vect/slp-cond-1.c
! d6e562ba3471fb70a14d801706bbc84e  gcc/testsuite/gcc.dg/vect/slp-cond-2-big-array.c
! 2088ab634839af0153824a2487f1f85c  gcc/testsuite/gcc.dg/vect/slp-cond-2.c
  6a7607d5d5730954b62fb2c3b7c8389e  gcc/testsuite/gcc.dg/vect/slp-cond-3.c
  025c8079f0e732250e3bdf3a52f8218f  gcc/testsuite/gcc.dg/vect/slp-cond-4.c
  fae76ca272ca1d56a1750929315ad201  gcc/testsuite/gcc.dg/vect/slp-cond-5.c
! 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
! 8cd5189f13aaacbc34fe5293e0b7ac63  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
  db686f43011d39a6e06570d752910217  gcc/testsuite/gcc.dg/vect/slp-multitypes-3.c
  c64db5e6268c059d406e30dbcc678daf  gcc/testsuite/gcc.dg/vect/slp-multitypes-4.c
*************** b0dbfa6cdc6dde5390e046d7232b175a  gcc/te
*** 35840,35896 ****
  9356116338addb961af16b16abfadde1  gcc/testsuite/gcc.dg/vect/slp-multitypes-7.c
  1fa87443d845f33c3180891583ec33de  gcc/testsuite/gcc.dg/vect/slp-multitypes-8.c
  6c7bf362ee69b05cf36bbac9eb502eca  gcc/testsuite/gcc.dg/vect/slp-multitypes-9.c
! 6b1aa253d025f51bdc236e84d236ea8b  gcc/testsuite/gcc.dg/vect/slp-perm-1.c
  39910c2a343933df947efd1ee1629207  gcc/testsuite/gcc.dg/vect/slp-perm-10.c
  7100361f955fae8aee5871765ae13581  gcc/testsuite/gcc.dg/vect/slp-perm-11.c
  fd85da7538e0838b6e370b04cf5465a4  gcc/testsuite/gcc.dg/vect/slp-perm-12.c
  90a27fa04410610a669500b3d5d5a55a  gcc/testsuite/gcc.dg/vect/slp-perm-2.c
  222de308d5dacd9fa7f65dbe5f90329f  gcc/testsuite/gcc.dg/vect/slp-perm-3.c
! 63ee9d523ea036cc4e1e0d37fa696d9a  gcc/testsuite/gcc.dg/vect/slp-perm-4.c
! 6d0c5702728ecfca4e280c36cb864b99  gcc/testsuite/gcc.dg/vect/slp-perm-5.c
! 843b051c137c8aba725dbd300e6da2bb  gcc/testsuite/gcc.dg/vect/slp-perm-6.c
! 4bd2122fabb198daaccf65d9de6253d3  gcc/testsuite/gcc.dg/vect/slp-perm-7.c
! 0bd998c8fd4970de34e7f13a4cac7eff  gcc/testsuite/gcc.dg/vect/slp-perm-8.c
! 671efcaeca4727fd994a7cf69566b54b  gcc/testsuite/gcc.dg/vect/slp-perm-9.c
  9ed5dcab2bade0cd891d5a1e7ea1803e  gcc/testsuite/gcc.dg/vect/slp-reduc-1.c
  7ff1c110e4e960fdfd071bd429861e66  gcc/testsuite/gcc.dg/vect/slp-reduc-2.c
! 350b19cd6b9e081ce21359cdd84fbf43  gcc/testsuite/gcc.dg/vect/slp-reduc-3.c
! 8801ab2c1750033c65ca573e8fde80f5  gcc/testsuite/gcc.dg/vect/slp-reduc-4.c
  367ebeaf9c017f511937d9cefc45f263  gcc/testsuite/gcc.dg/vect/slp-reduc-5.c
  c77542cf1371fae8cf65124b4c29b25b  gcc/testsuite/gcc.dg/vect/slp-reduc-6.c
! 33b8c2d504e4b66e739ec050ede14d56  gcc/testsuite/gcc.dg/vect/slp-reduc-7.c
  ff21e08c6d4a28efb0abd3587fa89dc4  gcc/testsuite/gcc.dg/vect/slp-reduc-sad.c
  0ec5265308cf0a1fd6bfb6502f0e83f3  gcc/testsuite/gcc.dg/vect/slp-widen-mult-half.c
  b1336a4a12ea0ec587c41f16332879bc  gcc/testsuite/gcc.dg/vect/slp-widen-mult-s16.c
  31669e2cb35c18913f0b7f913f2a0f63  gcc/testsuite/gcc.dg/vect/slp-widen-mult-u8.c
! 613196aaada7504743f2f4d92488772b  gcc/testsuite/gcc.dg/vect/trapv-vect-reduc-4.c
! 313804f6b65e38424077ec9952441750  gcc/testsuite/gcc.dg/vect/tree-vect.h
  908fa625b55d7d283163e9dfb4e3cb97  gcc/testsuite/gcc.dg/vect/unswitch-loops-pr26969.c
  6520c3dd9e657028a89c31328634d22a  gcc/testsuite/gcc.dg/vect/vec-scal-opt.c
  9b5d0a9d2e1a81f9454f0082b9f240b7  gcc/testsuite/gcc.dg/vect/vec-scal-opt1.c
  e7af2caa929bde4629f98c1edd91b168  gcc/testsuite/gcc.dg/vect/vec-scal-opt2.c
  1ed1af552c3c860e2ff7ef3f3b465959  gcc/testsuite/gcc.dg/vect/vect-1-big-array.c
  1e5351130c401b7a3aee501f65f82395  gcc/testsuite/gcc.dg/vect/vect-1.c
! 5d7f16729a71934a4f86e0d720eaace7  gcc/testsuite/gcc.dg/vect/vect-10-big-array.c
  d9d22ef4c80b68b2157aace863e5c8d9  gcc/testsuite/gcc.dg/vect/vect-10.c
  943f718db2328380721922c51e55afa7  gcc/testsuite/gcc.dg/vect/vect-100.c
! 6d760eaebc40c4dcc0606fc5ee30e226  gcc/testsuite/gcc.dg/vect/vect-103.c
! 5e23368826fc36c265065ad48169cd2c  gcc/testsuite/gcc.dg/vect/vect-104.c
! bc8a4b15a6c1ddab2812caaa20020228  gcc/testsuite/gcc.dg/vect/vect-105-big-array.c
! 6c506fd195528f9e921a79d9dedc86da  gcc/testsuite/gcc.dg/vect/vect-105.c
  ae9489ec6ff59b5feb8a10fb4425ddd6  gcc/testsuite/gcc.dg/vect/vect-106.c
  8b9ebb1a81bc88f87a3cc9dbc46ad4c6  gcc/testsuite/gcc.dg/vect/vect-107.c
  34a4614643e01fba31b451da7cbf5baa  gcc/testsuite/gcc.dg/vect/vect-108.c
! 02c3a3540a557052d13fb930f6bea206  gcc/testsuite/gcc.dg/vect/vect-109.c
  34614ac36b22b0274f5fc104ab8669f8  gcc/testsuite/gcc.dg/vect/vect-11.c
  77d4ebd73bb6f6747b83b7344fcdcf15  gcc/testsuite/gcc.dg/vect/vect-110.c
! 8b8ca1c38dca3f12290fa60c13e9e778  gcc/testsuite/gcc.dg/vect/vect-112-big-array.c
  dacc16276faf9fdb9dc43429e6f722d0  gcc/testsuite/gcc.dg/vect/vect-112.c
  74a0517ce10c34a9fdcb266d78a198aa  gcc/testsuite/gcc.dg/vect/vect-113.c
! 1bb071ef78fb6ebf5e41dc864821e531  gcc/testsuite/gcc.dg/vect/vect-114.c
  c7a685bac4232f2ebcaf76c58144db93  gcc/testsuite/gcc.dg/vect/vect-115.c
  1d7d8b6f8c3da268534f0f32b016fa3c  gcc/testsuite/gcc.dg/vect/vect-116.c
! 9dfc9b7689cef0bb0c3bd5a4830d6565  gcc/testsuite/gcc.dg/vect/vect-117.c
  8ab31cf2e81bafcda73b86e3af091fde  gcc/testsuite/gcc.dg/vect/vect-118.c
  4a29868b48246c52840882b27c93fce1  gcc/testsuite/gcc.dg/vect/vect-119.c
  f51f91eeb2c496f91b4837b99347348f  gcc/testsuite/gcc.dg/vect/vect-11a.c
--- 37736,37793 ----
  9356116338addb961af16b16abfadde1  gcc/testsuite/gcc.dg/vect/slp-multitypes-7.c
  1fa87443d845f33c3180891583ec33de  gcc/testsuite/gcc.dg/vect/slp-multitypes-8.c
  6c7bf362ee69b05cf36bbac9eb502eca  gcc/testsuite/gcc.dg/vect/slp-multitypes-9.c
! 1f161523ad33220ee01f406ad01562d0  gcc/testsuite/gcc.dg/vect/slp-perm-1.c
  39910c2a343933df947efd1ee1629207  gcc/testsuite/gcc.dg/vect/slp-perm-10.c
  7100361f955fae8aee5871765ae13581  gcc/testsuite/gcc.dg/vect/slp-perm-11.c
  fd85da7538e0838b6e370b04cf5465a4  gcc/testsuite/gcc.dg/vect/slp-perm-12.c
  90a27fa04410610a669500b3d5d5a55a  gcc/testsuite/gcc.dg/vect/slp-perm-2.c
  222de308d5dacd9fa7f65dbe5f90329f  gcc/testsuite/gcc.dg/vect/slp-perm-3.c
! 5b86ca4cac6d5223a0bec92eb10300b9  gcc/testsuite/gcc.dg/vect/slp-perm-4.c
! 59c87718e28aa10512b6321012851de6  gcc/testsuite/gcc.dg/vect/slp-perm-5.c
! e4a970a6789a84727813478c59877533  gcc/testsuite/gcc.dg/vect/slp-perm-6.c
! 8eadc743a949829e9c7eb782380e6eb3  gcc/testsuite/gcc.dg/vect/slp-perm-7.c
! 079ca9025fed2e547eee13139908eb0f  gcc/testsuite/gcc.dg/vect/slp-perm-8.c
! 9175e57956a20817e77582803572f6a9  gcc/testsuite/gcc.dg/vect/slp-perm-9.c
  9ed5dcab2bade0cd891d5a1e7ea1803e  gcc/testsuite/gcc.dg/vect/slp-reduc-1.c
  7ff1c110e4e960fdfd071bd429861e66  gcc/testsuite/gcc.dg/vect/slp-reduc-2.c
! 3be0d9e2b6cbea0804e76836c05f5b0f  gcc/testsuite/gcc.dg/vect/slp-reduc-3.c
! 765ebdd6f96b4b08431e575959338177  gcc/testsuite/gcc.dg/vect/slp-reduc-4.c
  367ebeaf9c017f511937d9cefc45f263  gcc/testsuite/gcc.dg/vect/slp-reduc-5.c
  c77542cf1371fae8cf65124b4c29b25b  gcc/testsuite/gcc.dg/vect/slp-reduc-6.c
! 62e9316c7cbab5a448977f3e9bf89472  gcc/testsuite/gcc.dg/vect/slp-reduc-7.c
! 030cb8061ca9614b756c8f4471116e37  gcc/testsuite/gcc.dg/vect/slp-reduc-8.c
  ff21e08c6d4a28efb0abd3587fa89dc4  gcc/testsuite/gcc.dg/vect/slp-reduc-sad.c
  0ec5265308cf0a1fd6bfb6502f0e83f3  gcc/testsuite/gcc.dg/vect/slp-widen-mult-half.c
  b1336a4a12ea0ec587c41f16332879bc  gcc/testsuite/gcc.dg/vect/slp-widen-mult-s16.c
  31669e2cb35c18913f0b7f913f2a0f63  gcc/testsuite/gcc.dg/vect/slp-widen-mult-u8.c
! ac118fbd65f9ede9dcec0ea04d7f2c11  gcc/testsuite/gcc.dg/vect/trapv-vect-reduc-4.c
! 4f9dadd03229f8c14ce2ea04de6c40ce  gcc/testsuite/gcc.dg/vect/tree-vect.h
  908fa625b55d7d283163e9dfb4e3cb97  gcc/testsuite/gcc.dg/vect/unswitch-loops-pr26969.c
  6520c3dd9e657028a89c31328634d22a  gcc/testsuite/gcc.dg/vect/vec-scal-opt.c
  9b5d0a9d2e1a81f9454f0082b9f240b7  gcc/testsuite/gcc.dg/vect/vec-scal-opt1.c
  e7af2caa929bde4629f98c1edd91b168  gcc/testsuite/gcc.dg/vect/vec-scal-opt2.c
  1ed1af552c3c860e2ff7ef3f3b465959  gcc/testsuite/gcc.dg/vect/vect-1-big-array.c
  1e5351130c401b7a3aee501f65f82395  gcc/testsuite/gcc.dg/vect/vect-1.c
! a41c758a08dbbae4cdce175be25b9aa5  gcc/testsuite/gcc.dg/vect/vect-10-big-array.c
  d9d22ef4c80b68b2157aace863e5c8d9  gcc/testsuite/gcc.dg/vect/vect-10.c
  943f718db2328380721922c51e55afa7  gcc/testsuite/gcc.dg/vect/vect-100.c
! bb55a000d3721b1c866cb5e57dafeb62  gcc/testsuite/gcc.dg/vect/vect-103.c
! b3b389cba52a916cb099287ef0a98b13  gcc/testsuite/gcc.dg/vect/vect-104.c
! 74fac254331754dcf4736b2e8ae2b563  gcc/testsuite/gcc.dg/vect/vect-105-big-array.c
! ccaf314f7ea7c7bab4d46fd89f6b4bf0  gcc/testsuite/gcc.dg/vect/vect-105.c
  ae9489ec6ff59b5feb8a10fb4425ddd6  gcc/testsuite/gcc.dg/vect/vect-106.c
  8b9ebb1a81bc88f87a3cc9dbc46ad4c6  gcc/testsuite/gcc.dg/vect/vect-107.c
  34a4614643e01fba31b451da7cbf5baa  gcc/testsuite/gcc.dg/vect/vect-108.c
! b35a2b9fc6b86b6feebc693e373dee84  gcc/testsuite/gcc.dg/vect/vect-109.c
  34614ac36b22b0274f5fc104ab8669f8  gcc/testsuite/gcc.dg/vect/vect-11.c
  77d4ebd73bb6f6747b83b7344fcdcf15  gcc/testsuite/gcc.dg/vect/vect-110.c
! 6e22fe753f1e436104d6365e212c5f16  gcc/testsuite/gcc.dg/vect/vect-112-big-array.c
  dacc16276faf9fdb9dc43429e6f722d0  gcc/testsuite/gcc.dg/vect/vect-112.c
  74a0517ce10c34a9fdcb266d78a198aa  gcc/testsuite/gcc.dg/vect/vect-113.c
! 3709e3c4aefc1324980e88dca726f086  gcc/testsuite/gcc.dg/vect/vect-114.c
  c7a685bac4232f2ebcaf76c58144db93  gcc/testsuite/gcc.dg/vect/vect-115.c
  1d7d8b6f8c3da268534f0f32b016fa3c  gcc/testsuite/gcc.dg/vect/vect-116.c
! c859038e3e0bdddc4380066a12289b84  gcc/testsuite/gcc.dg/vect/vect-117.c
  8ab31cf2e81bafcda73b86e3af091fde  gcc/testsuite/gcc.dg/vect/vect-118.c
  4a29868b48246c52840882b27c93fce1  gcc/testsuite/gcc.dg/vect/vect-119.c
  f51f91eeb2c496f91b4837b99347348f  gcc/testsuite/gcc.dg/vect/vect-11a.c
*************** d1187d0e4af6272062f2c0272cefedc0  gcc/te
*** 35904,35936 ****
  b564a513884f5c946593c2e9b4748025  gcc/testsuite/gcc.dg/vect/vect-126.c
  af22d62a20b93aedb32ccd95506c0fce  gcc/testsuite/gcc.dg/vect/vect-13.c
  31c6a95b94417fcd630d0155cd8f29b8  gcc/testsuite/gcc.dg/vect/vect-14.c
! 0009c9041b70baa3db224852005776d4  gcc/testsuite/gcc.dg/vect/vect-15-big-array.c
  204489420e172c0bc8944852750c3332  gcc/testsuite/gcc.dg/vect/vect-15.c
  50c2ded9ed99308d6bea4dcfdf39a0fc  gcc/testsuite/gcc.dg/vect/vect-17.c
  2c7df44fbd171beff27dc29ee80a1209  gcc/testsuite/gcc.dg/vect/vect-18.c
  594f2de9b6a7390757af2adcf34f69f9  gcc/testsuite/gcc.dg/vect/vect-19.c
! f7883cab5d9394b78c4d096bb78c43c9  gcc/testsuite/gcc.dg/vect/vect-2-big-array.c
  e419110ef7cced66fb761226126be306  gcc/testsuite/gcc.dg/vect/vect-2.c
  c10cc9fb2ae078eb4c4cd032787de254  gcc/testsuite/gcc.dg/vect/vect-20.c
  fbed228f06794e26f4a6dffa3477a3c4  gcc/testsuite/gcc.dg/vect/vect-21.c
  e252fb053e252cc891cc912974e89dd2  gcc/testsuite/gcc.dg/vect/vect-22.c
! 9ba2f0b88cac1648bbf330913c9ffe96  gcc/testsuite/gcc.dg/vect/vect-23.c
! e4e88cb68c4db715ae616f7f6ca0afe0  gcc/testsuite/gcc.dg/vect/vect-24.c
! 4b172e0f8ecdefd37e919dece4c9cfca  gcc/testsuite/gcc.dg/vect/vect-25.c
! 31f6f43766f825480cb0d72115c71a38  gcc/testsuite/gcc.dg/vect/vect-26.c
! bd9784e4854f6b49ee5b780404c65a09  gcc/testsuite/gcc.dg/vect/vect-27.c
! 60e9ba1d3d2377bee38ff9c06c23b6e2  gcc/testsuite/gcc.dg/vect/vect-28.c
! 5aa35f253de5907f1f11fbb8b3f33031  gcc/testsuite/gcc.dg/vect/vect-29.c
  7fccf61543af1de115801346c785bcf6  gcc/testsuite/gcc.dg/vect/vect-3.c
  a5ca9a897618c3c39151ce4482924773  gcc/testsuite/gcc.dg/vect/vect-30.c
  0736635f0c4b5c9340c3784e881be447  gcc/testsuite/gcc.dg/vect/vect-31-big-array.c
  37fe99d552512e38d5b653a113565719  gcc/testsuite/gcc.dg/vect/vect-31.c
! b5c62524b07a34a013481541b277851f  gcc/testsuite/gcc.dg/vect/vect-32-big-array.c
  58dfe699b4796e834446a61af1a4a482  gcc/testsuite/gcc.dg/vect/vect-32-chars.c
! 2962dfa042b71d2e0ba5414a5b75aa5d  gcc/testsuite/gcc.dg/vect/vect-32.c
! d4a56e34b1f8297e83799cb53e4a2dbf  gcc/testsuite/gcc.dg/vect/vect-33-big-array.c
! dda231ac89644e3ad88503d94530bf82  gcc/testsuite/gcc.dg/vect/vect-33.c
! eb3da99c7a2d11b9fac5fbe34a00c518  gcc/testsuite/gcc.dg/vect/vect-34-big-array.c
  f392d99bc7357a4d1265d46aace51636  gcc/testsuite/gcc.dg/vect/vect-34.c
  ffbbb822d8d5136adcb6d06bf0f20a31  gcc/testsuite/gcc.dg/vect/vect-35-big-array.c
  6cc8a92f04b2912540f62f5dd7fd0081  gcc/testsuite/gcc.dg/vect/vect-35.c
--- 37801,37833 ----
  b564a513884f5c946593c2e9b4748025  gcc/testsuite/gcc.dg/vect/vect-126.c
  af22d62a20b93aedb32ccd95506c0fce  gcc/testsuite/gcc.dg/vect/vect-13.c
  31c6a95b94417fcd630d0155cd8f29b8  gcc/testsuite/gcc.dg/vect/vect-14.c
! cf8d7bfdacc0cc65623a59fd5ebe0676  gcc/testsuite/gcc.dg/vect/vect-15-big-array.c
  204489420e172c0bc8944852750c3332  gcc/testsuite/gcc.dg/vect/vect-15.c
  50c2ded9ed99308d6bea4dcfdf39a0fc  gcc/testsuite/gcc.dg/vect/vect-17.c
  2c7df44fbd171beff27dc29ee80a1209  gcc/testsuite/gcc.dg/vect/vect-18.c
  594f2de9b6a7390757af2adcf34f69f9  gcc/testsuite/gcc.dg/vect/vect-19.c
! 821f41bbe0d4d4bb10f6108a634cd6ee  gcc/testsuite/gcc.dg/vect/vect-2-big-array.c
  e419110ef7cced66fb761226126be306  gcc/testsuite/gcc.dg/vect/vect-2.c
  c10cc9fb2ae078eb4c4cd032787de254  gcc/testsuite/gcc.dg/vect/vect-20.c
  fbed228f06794e26f4a6dffa3477a3c4  gcc/testsuite/gcc.dg/vect/vect-21.c
  e252fb053e252cc891cc912974e89dd2  gcc/testsuite/gcc.dg/vect/vect-22.c
! 80fe7b18f869402f71ba3ccfca49519f  gcc/testsuite/gcc.dg/vect/vect-23.c
! 327796c52a4408f0cf43ed856ed4ccaf  gcc/testsuite/gcc.dg/vect/vect-24.c
! 8557996356675784bc40911b69ae1efa  gcc/testsuite/gcc.dg/vect/vect-25.c
! 0de25fbbacc2d0a216b603c04895045f  gcc/testsuite/gcc.dg/vect/vect-26.c
! 7e0f20ee1053a0fa68f241222d36a941  gcc/testsuite/gcc.dg/vect/vect-27.c
! 57535ec4710ca72928717a9e773884d3  gcc/testsuite/gcc.dg/vect/vect-28.c
! 8e9dbd4d6aa57be00d99e92117c6b1eb  gcc/testsuite/gcc.dg/vect/vect-29.c
  7fccf61543af1de115801346c785bcf6  gcc/testsuite/gcc.dg/vect/vect-3.c
  a5ca9a897618c3c39151ce4482924773  gcc/testsuite/gcc.dg/vect/vect-30.c
  0736635f0c4b5c9340c3784e881be447  gcc/testsuite/gcc.dg/vect/vect-31-big-array.c
  37fe99d552512e38d5b653a113565719  gcc/testsuite/gcc.dg/vect/vect-31.c
! ba6079ed10f631cf6bd43e9fdbf649fe  gcc/testsuite/gcc.dg/vect/vect-32-big-array.c
  58dfe699b4796e834446a61af1a4a482  gcc/testsuite/gcc.dg/vect/vect-32-chars.c
! e7972c5bdef0883a7567779b950bcb03  gcc/testsuite/gcc.dg/vect/vect-32.c
! aa854d154802da25b63adab581d1fd59  gcc/testsuite/gcc.dg/vect/vect-33-big-array.c
! ebad80bf0a1a6818c90300b5f1292418  gcc/testsuite/gcc.dg/vect/vect-33.c
! 47625e9675b3fa0e5b0690b38bb7726f  gcc/testsuite/gcc.dg/vect/vect-34-big-array.c
  f392d99bc7357a4d1265d46aace51636  gcc/testsuite/gcc.dg/vect/vect-34.c
  ffbbb822d8d5136adcb6d06bf0f20a31  gcc/testsuite/gcc.dg/vect/vect-35-big-array.c
  6cc8a92f04b2912540f62f5dd7fd0081  gcc/testsuite/gcc.dg/vect/vect-35.c
*************** a287b48a98fe5cbaf4ac63080a6fa826  gcc/te
*** 35938,36039 ****
  d1bd152f7bb5c25d59cd6d46b0e236bf  gcc/testsuite/gcc.dg/vect/vect-36.c
  b94979e4bc03d519e5ae1e1aa5a5bc4e  gcc/testsuite/gcc.dg/vect/vect-38.c
  9e2bd64220338871e8db419a34eb69f2  gcc/testsuite/gcc.dg/vect/vect-4.c
! e0d5846b95287a6a4a511d5a849cc1ca  gcc/testsuite/gcc.dg/vect/vect-40.c
! 702c08025dedeea1fe154e4007a2dc6d  gcc/testsuite/gcc.dg/vect/vect-42.c
! c45178f669e5a5f30013e90ee4ad5644  gcc/testsuite/gcc.dg/vect/vect-44.c
! 29b469b9e13c55fe83cf1dfe959e7022  gcc/testsuite/gcc.dg/vect/vect-46.c
! d99d9c97cbbe82bcf30affef35dea660  gcc/testsuite/gcc.dg/vect/vect-48.c
  562201b5385d204497769493436d85f8  gcc/testsuite/gcc.dg/vect/vect-5.c
! 637586c5f2b399fcaa0c9eaf30171be8  gcc/testsuite/gcc.dg/vect/vect-50.c
! be2aa82a4d17c691cbe23bde554b64fc  gcc/testsuite/gcc.dg/vect/vect-52.c
! 892bd1c51df9081a20a67e4d7c76bbc7  gcc/testsuite/gcc.dg/vect/vect-54.c
! d70998341c254aaff8d918c7457858fb  gcc/testsuite/gcc.dg/vect/vect-56.c
! f8d3ff338668f277588b66919766da88  gcc/testsuite/gcc.dg/vect/vect-58.c
! 3b17241439acca586e8190676d04296b  gcc/testsuite/gcc.dg/vect/vect-6-big-array.c
  a4f17e0629954f6216dd15b12b696b52  gcc/testsuite/gcc.dg/vect/vect-6.c
! 3c6432ac5c179c2afa7331c75e560999  gcc/testsuite/gcc.dg/vect/vect-60.c
! 60a1a8fa5dab00db6f4ac1423e66a6a9  gcc/testsuite/gcc.dg/vect/vect-62.c
  a23cc05fc9646dceff23fdb3e917f5fc  gcc/testsuite/gcc.dg/vect/vect-63.c
  a322eb2a68fb51c6abffabc72d92d382  gcc/testsuite/gcc.dg/vect/vect-64.c
  5c007f57a2cbe9b79b28b030c798e768  gcc/testsuite/gcc.dg/vect/vect-65.c
  7a221b0abfd844ba209bf8ce7d4fe47b  gcc/testsuite/gcc.dg/vect/vect-66.c
! eb346de936a4a20998339af1b44caa9e  gcc/testsuite/gcc.dg/vect/vect-67.c
  43c9235a290a9584c5958d932d747511  gcc/testsuite/gcc.dg/vect/vect-68.c
  c9ea752b59bdb9cf7bb7f05701e8036c  gcc/testsuite/gcc.dg/vect/vect-7.c
! 9ff1d27847e17793c25a986957d57e33  gcc/testsuite/gcc.dg/vect/vect-70.c
! 2dea78002a2fdf7a028135a3569569b3  gcc/testsuite/gcc.dg/vect/vect-71.c
! aca3ccb597d12e7b36d4debeee84edfc  gcc/testsuite/gcc.dg/vect/vect-72.c
! 5f0f90232fc308cb9538bf2d9936d11b  gcc/testsuite/gcc.dg/vect/vect-73-big-array.c
  7be5c2e77f520af92312652e0b303927  gcc/testsuite/gcc.dg/vect/vect-73.c
! f87ad040140061c22968700094a369d1  gcc/testsuite/gcc.dg/vect/vect-74-big-array.c
  89844f470351169b4b85b60ab2ebfef4  gcc/testsuite/gcc.dg/vect/vect-74.c
! b0fe463f7e479d3469b394a1586ae310  gcc/testsuite/gcc.dg/vect/vect-75-big-array.c
! 1d1566c222201e4b4c130d41df0dd71d  gcc/testsuite/gcc.dg/vect/vect-75.c
! 8428a0277c339ac1a7982d2220bcef03  gcc/testsuite/gcc.dg/vect/vect-76-big-array.c
  053e801fd18dca68c662073d95e5b955  gcc/testsuite/gcc.dg/vect/vect-76.c
! c0c64cef75323218305c3cf8ba2e340a  gcc/testsuite/gcc.dg/vect/vect-77-alignchecks.c
! dee94029f16bbab7c73a47e1a2250ecb  gcc/testsuite/gcc.dg/vect/vect-77-global.c
  41aa4cdcc156b9232c87b820eafa0b5d  gcc/testsuite/gcc.dg/vect/vect-77.c
! 148349be9b9c1d3445b8d0b7ff8a2f69  gcc/testsuite/gcc.dg/vect/vect-78-alignchecks.c
! bdbaf2ee61fb21bbbee9c490d3d240ff  gcc/testsuite/gcc.dg/vect/vect-78-global.c
  337b5bc90b9635ec8f68cac93ebacf9f  gcc/testsuite/gcc.dg/vect/vect-78.c
  be12baa6bca1176e207ce342161a76af  gcc/testsuite/gcc.dg/vect/vect-8.c
! b2b1b07cc55598e02a1f55387cc03ead  gcc/testsuite/gcc.dg/vect/vect-80-big-array.c
  2aa38602a8d7243334d2b36d8415d09d  gcc/testsuite/gcc.dg/vect/vect-80.c
! c00974c97f1079b83b8a668f9300fd88  gcc/testsuite/gcc.dg/vect/vect-82.c
! a9334239e05433ae7ab730215445360e  gcc/testsuite/gcc.dg/vect/vect-82_64.c
! 7983f507c2e7e11217990f44c1717f95  gcc/testsuite/gcc.dg/vect/vect-83.c
! 52cac10d6ac73e658980a672934f3bb0  gcc/testsuite/gcc.dg/vect/vect-83_64.c
  c49447767d8666f5bad0ba66bada3dbb  gcc/testsuite/gcc.dg/vect/vect-85-big-array.c
  ae00234ebf24afba7f4fa942d974637d  gcc/testsuite/gcc.dg/vect/vect-85.c
  503087f2fc7036e1963787ec92d877e5  gcc/testsuite/gcc.dg/vect/vect-86.c
! 59a6ee7fccf37cea4b93dce0186ae4d1  gcc/testsuite/gcc.dg/vect/vect-87.c
! 25bbf3879abce2e6bb62073437773c4d  gcc/testsuite/gcc.dg/vect/vect-88.c
! 585d20480525f66647329572451315cd  gcc/testsuite/gcc.dg/vect/vect-89-big-array.c
! 7cb8c4b15315fe7c00245e66acf65a2c  gcc/testsuite/gcc.dg/vect/vect-89.c
  84ff8a851f2889e15c8bc3141c319a34  gcc/testsuite/gcc.dg/vect/vect-9.c
! 256eefdf3b7ba77521f80457bd2539a0  gcc/testsuite/gcc.dg/vect/vect-91.c
! 1f87d39d67b14862897b2a8d59ab3a60  gcc/testsuite/gcc.dg/vect/vect-92.c
! e983c83259947051694599f4d963ba64  gcc/testsuite/gcc.dg/vect/vect-93.c
! 4920376057a0fba8132534d5ea6971d3  gcc/testsuite/gcc.dg/vect/vect-95.c
! 31b9f1aa4939119a6b2adb69585b29c3  gcc/testsuite/gcc.dg/vect/vect-96.c
! ac822e0358833c5f5d137f27725dbc03  gcc/testsuite/gcc.dg/vect/vect-97-big-array.c
  786a2edd3da33d668bfef933d397d80f  gcc/testsuite/gcc.dg/vect/vect-97.c
! 80fada0a5085911270dfa97de24e2ab1  gcc/testsuite/gcc.dg/vect/vect-98-big-array.c
  20ae4026daeb20726045d267fc8726ba  gcc/testsuite/gcc.dg/vect/vect-98.c
  a5dd771ac25ad721110e4c63655deee3  gcc/testsuite/gcc.dg/vect/vect-99.c
  a04da26df4dc686ef67148f9bd250c35  gcc/testsuite/gcc.dg/vect/vect-aggressive-1.c
  1352223f77edae35a5ac0ba2673a51ad  gcc/testsuite/gcc.dg/vect/vect-alias-check-1.c
  2a3e312bd7e5ab5df45fd26be16729e2  gcc/testsuite/gcc.dg/vect/vect-alias-check-2.c
  164f1d465e8f0c3cf4f0595cdd0b4142  gcc/testsuite/gcc.dg/vect/vect-alias-check.c
  f0b56b894481ffe1fe102a037e482707  gcc/testsuite/gcc.dg/vect/vect-align-1.c
  75ba50d97de7fbaec0de05868c19be02  gcc/testsuite/gcc.dg/vect/vect-align-2.c
  374e4045853c30f4e4156da8f6908c21  gcc/testsuite/gcc.dg/vect/vect-align-3.c
! cebd818672e5d27912a0b44292c95d47  gcc/testsuite/gcc.dg/vect/vect-all-big-array.c
  c212d9634747288642316f5a4ff71688  gcc/testsuite/gcc.dg/vect/vect-all.c
  154c42706e014b10ba6740d5b2ec9fb1  gcc/testsuite/gcc.dg/vect/vect-bool-1.c
  301393ef2e36efda6ce2bbd1678b702f  gcc/testsuite/gcc.dg/vect/vect-bool-cmp.c
! 41312481c07b51218994bdfed46d2b70  gcc/testsuite/gcc.dg/vect/vect-bswap16.c
! 66323de8b45fe205145ed6fefbfeea2a  gcc/testsuite/gcc.dg/vect/vect-bswap32.c
! efecfc4f0b35b5bc4d894cdee52df323  gcc/testsuite/gcc.dg/vect/vect-bswap64.c
  3345e4d48d4dae1815be747d1f004f30  gcc/testsuite/gcc.dg/vect/vect-complex-1.c
  b81ef7010ac5d9d83cfe4611715502a2  gcc/testsuite/gcc.dg/vect/vect-complex-2.c
  e4e0ae2a20f798eba85140061b6a6ad7  gcc/testsuite/gcc.dg/vect/vect-complex-4.c
  367d9d0d2e8e9c2d599c25af6d972cda  gcc/testsuite/gcc.dg/vect/vect-complex-5.c
  9c48c2e7ee6b6e1e9b1e2b7901602fbe  gcc/testsuite/gcc.dg/vect/vect-cond-1.c
! b6b081c3e6f4ad5a490096a245c9e08a  gcc/testsuite/gcc.dg/vect/vect-cond-10.c
  f8505a9522f91f3c6e75d412bfaf15c4  gcc/testsuite/gcc.dg/vect/vect-cond-11.c
! a2c12ae06e2340a284516bdb8ae495eb  gcc/testsuite/gcc.dg/vect/vect-cond-2.c
  ff9fb5835d0218f0d8fc8d2eebee9cd1  gcc/testsuite/gcc.dg/vect/vect-cond-3.c
  cb3604d059d377d3776d6c2581c5c08b  gcc/testsuite/gcc.dg/vect/vect-cond-4.c
  69ea81ef62184e89c4415e7b3ab5281a  gcc/testsuite/gcc.dg/vect/vect-cond-5.c
  03c006f9ae1c0745f5ce6578df9d0058  gcc/testsuite/gcc.dg/vect/vect-cond-6.c
  c12c84bf010d50ae110ef5e6dfb49a43  gcc/testsuite/gcc.dg/vect/vect-cond-7.c
! f613914a2c5805f32f9d035642b26791  gcc/testsuite/gcc.dg/vect/vect-cond-8.c
! badfb77364f87c05539a157331ba39fa  gcc/testsuite/gcc.dg/vect/vect-cond-9.c
  0b977702a40013afcdb78bddf04bc009  gcc/testsuite/gcc.dg/vect/vect-cond-reduc-1.c
  81f1d27e9fbd5b434349fe98c68f7243  gcc/testsuite/gcc.dg/vect/vect-cond-reduc-2.c
! db236d062d0f90d3f93ebc4533f6647d  gcc/testsuite/gcc.dg/vect/vect-cselim-1.c
  da6c54a57c412277438b8a28fa335e40  gcc/testsuite/gcc.dg/vect/vect-cselim-2.c
  6a93583f599051f181cc85fe92a7146a  gcc/testsuite/gcc.dg/vect/vect-debug-pr41926.c
  cc5c83e334c2dda13f9040f4d00fa2ac  gcc/testsuite/gcc.dg/vect/vect-double-reduc-1.c
--- 37835,37948 ----
  d1bd152f7bb5c25d59cd6d46b0e236bf  gcc/testsuite/gcc.dg/vect/vect-36.c
  b94979e4bc03d519e5ae1e1aa5a5bc4e  gcc/testsuite/gcc.dg/vect/vect-38.c
  9e2bd64220338871e8db419a34eb69f2  gcc/testsuite/gcc.dg/vect/vect-4.c
! b6b2d22a80721c25cf3c7d7610ccb74c  gcc/testsuite/gcc.dg/vect/vect-40.c
! a842f1283e4dec71ff576714241d8848  gcc/testsuite/gcc.dg/vect/vect-42.c
! 42bdbcd11d9370e46e17abf2e9224864  gcc/testsuite/gcc.dg/vect/vect-44.c
! 1833ae8e3c83aa2bc0b2fad5da1f3d22  gcc/testsuite/gcc.dg/vect/vect-46.c
! 6289192021af38df0ffecbc5e8480d9f  gcc/testsuite/gcc.dg/vect/vect-48.c
  562201b5385d204497769493436d85f8  gcc/testsuite/gcc.dg/vect/vect-5.c
! fa47c97ddcba747282075930066f0125  gcc/testsuite/gcc.dg/vect/vect-50.c
! 2cdad6d45e9154b95c346a046fa62035  gcc/testsuite/gcc.dg/vect/vect-52.c
! 59ffb8d400745dac59897595be65e41d  gcc/testsuite/gcc.dg/vect/vect-54.c
! c428872c81749981034a0aa8e324ff38  gcc/testsuite/gcc.dg/vect/vect-56.c
! d9b967045d466b6b628d9ca666e2c638  gcc/testsuite/gcc.dg/vect/vect-58.c
! e63f8ce4a1307e89c8666773631c567a  gcc/testsuite/gcc.dg/vect/vect-6-big-array.c
  a4f17e0629954f6216dd15b12b696b52  gcc/testsuite/gcc.dg/vect/vect-6.c
! a3bc9b16e3bbe1915f6cb095bf014079  gcc/testsuite/gcc.dg/vect/vect-60.c
! 37d01b8115ce028769644aa7196c7b75  gcc/testsuite/gcc.dg/vect/vect-62.c
  a23cc05fc9646dceff23fdb3e917f5fc  gcc/testsuite/gcc.dg/vect/vect-63.c
  a322eb2a68fb51c6abffabc72d92d382  gcc/testsuite/gcc.dg/vect/vect-64.c
  5c007f57a2cbe9b79b28b030c798e768  gcc/testsuite/gcc.dg/vect/vect-65.c
  7a221b0abfd844ba209bf8ce7d4fe47b  gcc/testsuite/gcc.dg/vect/vect-66.c
! 5b143303f8c2f12dfc807a523ea92352  gcc/testsuite/gcc.dg/vect/vect-67.c
  43c9235a290a9584c5958d932d747511  gcc/testsuite/gcc.dg/vect/vect-68.c
  c9ea752b59bdb9cf7bb7f05701e8036c  gcc/testsuite/gcc.dg/vect/vect-7.c
! 127df3292abfade459309c6e339b0165  gcc/testsuite/gcc.dg/vect/vect-70.c
! 1ff7d4730e4b5c4438b63a7ceced9dda  gcc/testsuite/gcc.dg/vect/vect-71.c
! 70ab1074634430bb47f6571de47db625  gcc/testsuite/gcc.dg/vect/vect-72.c
! ffeee2cb662e82d6ec6ffb22d843b3cd  gcc/testsuite/gcc.dg/vect/vect-73-big-array.c
  7be5c2e77f520af92312652e0b303927  gcc/testsuite/gcc.dg/vect/vect-73.c
! 113057ada77406098074d1d89604bb78  gcc/testsuite/gcc.dg/vect/vect-74-big-array.c
  89844f470351169b4b85b60ab2ebfef4  gcc/testsuite/gcc.dg/vect/vect-74.c
! 1f37be7392806495ab13ce0707c6e05b  gcc/testsuite/gcc.dg/vect/vect-75-big-array.c
! ca35e901f615acd9a310e9cd41256ee5  gcc/testsuite/gcc.dg/vect/vect-75.c
! 9b7bbf1be9eda8c7bc74b321265346e3  gcc/testsuite/gcc.dg/vect/vect-76-big-array.c
  053e801fd18dca68c662073d95e5b955  gcc/testsuite/gcc.dg/vect/vect-76.c
! fd18ca469a807dbbe4d9cee18ee96cfa  gcc/testsuite/gcc.dg/vect/vect-77-alignchecks.c
! f8ac23f1769066d3aa5f96114b45332b  gcc/testsuite/gcc.dg/vect/vect-77-global.c
  41aa4cdcc156b9232c87b820eafa0b5d  gcc/testsuite/gcc.dg/vect/vect-77.c
! 928e05fa30e866a7931768daaa736071  gcc/testsuite/gcc.dg/vect/vect-78-alignchecks.c
! 9a2e1f84b435d7e5266c7f0e5076401b  gcc/testsuite/gcc.dg/vect/vect-78-global.c
  337b5bc90b9635ec8f68cac93ebacf9f  gcc/testsuite/gcc.dg/vect/vect-78.c
  be12baa6bca1176e207ce342161a76af  gcc/testsuite/gcc.dg/vect/vect-8.c
! f0f799c0412a8684fdddf0b43f449b5c  gcc/testsuite/gcc.dg/vect/vect-80-big-array.c
  2aa38602a8d7243334d2b36d8415d09d  gcc/testsuite/gcc.dg/vect/vect-80.c
! 47e0735b9a02c276ff47276b476f117e  gcc/testsuite/gcc.dg/vect/vect-82.c
! 381a59de0e17f27afa424064ea344d2f  gcc/testsuite/gcc.dg/vect/vect-82_64.c
! 4c8c3c1a0c5ccf7a84e0dd29b924e6f8  gcc/testsuite/gcc.dg/vect/vect-83.c
! 9ebe5c9cdab4747e1f36bb938d1e3a3b  gcc/testsuite/gcc.dg/vect/vect-83_64.c
  c49447767d8666f5bad0ba66bada3dbb  gcc/testsuite/gcc.dg/vect/vect-85-big-array.c
  ae00234ebf24afba7f4fa942d974637d  gcc/testsuite/gcc.dg/vect/vect-85.c
  503087f2fc7036e1963787ec92d877e5  gcc/testsuite/gcc.dg/vect/vect-86.c
! bc4dc201b1ab4aca3e6f8ffdb91ea397  gcc/testsuite/gcc.dg/vect/vect-87.c
! f52a639e72d8b3585d3fbf67ead95e6c  gcc/testsuite/gcc.dg/vect/vect-88.c
! f19831bcd00a43b554628ce1344b5385  gcc/testsuite/gcc.dg/vect/vect-89-big-array.c
! e9702f96cdc00e7ab928afc2842c71b4  gcc/testsuite/gcc.dg/vect/vect-89.c
  84ff8a851f2889e15c8bc3141c319a34  gcc/testsuite/gcc.dg/vect/vect-9.c
! bc3bef2765d90383abbf005c74868d65  gcc/testsuite/gcc.dg/vect/vect-91.c
! 4162da793449821e9b0df2bebb571014  gcc/testsuite/gcc.dg/vect/vect-92.c
! dbd9a3ceb44d96589dc1982c6ff40a29  gcc/testsuite/gcc.dg/vect/vect-93.c
! b5beda8f210ec1cc64a12ed0b78ca087  gcc/testsuite/gcc.dg/vect/vect-95.c
! 27fcdcb37346233f89e3f20420e372c8  gcc/testsuite/gcc.dg/vect/vect-96.c
! 84f1727ec3693172bd2a5b7a0cf16fb5  gcc/testsuite/gcc.dg/vect/vect-97-big-array.c
  786a2edd3da33d668bfef933d397d80f  gcc/testsuite/gcc.dg/vect/vect-97.c
! 08650414d504a11b353ff38997eee513  gcc/testsuite/gcc.dg/vect/vect-98-big-array.c
  20ae4026daeb20726045d267fc8726ba  gcc/testsuite/gcc.dg/vect/vect-98.c
  a5dd771ac25ad721110e4c63655deee3  gcc/testsuite/gcc.dg/vect/vect-99.c
  a04da26df4dc686ef67148f9bd250c35  gcc/testsuite/gcc.dg/vect/vect-aggressive-1.c
  1352223f77edae35a5ac0ba2673a51ad  gcc/testsuite/gcc.dg/vect/vect-alias-check-1.c
+ e0e6f4aee99e091c9ec36b305c719c2a  gcc/testsuite/gcc.dg/vect/vect-alias-check-10.c
+ 234a5108cc0662d908632dfb99387e55  gcc/testsuite/gcc.dg/vect/vect-alias-check-11.c
+ 6ac94552e74754d91dfdac18f630d57e  gcc/testsuite/gcc.dg/vect/vect-alias-check-12.c
+ dc6ad6bb46ca8e9eeaad3ff596db0945  gcc/testsuite/gcc.dg/vect/vect-alias-check-13.c
  2a3e312bd7e5ab5df45fd26be16729e2  gcc/testsuite/gcc.dg/vect/vect-alias-check-2.c
+ 70f35d6235f257d8a748a4c306ed92cd  gcc/testsuite/gcc.dg/vect/vect-alias-check-3.c
+ b51db49f3ec3fb3df7ac88e4d2dec070  gcc/testsuite/gcc.dg/vect/vect-alias-check-4.c
+ 3c03b4406103dc9957e802641a4d4b36  gcc/testsuite/gcc.dg/vect/vect-alias-check-5.c
+ ff089a27e850ec5cc9c4418ac3d53928  gcc/testsuite/gcc.dg/vect/vect-alias-check-6.c
+ 849eee1578d80f374003ab06c8c9881d  gcc/testsuite/gcc.dg/vect/vect-alias-check-7.c
+ 189fe31f1c6099b5803962c9d4d2039b  gcc/testsuite/gcc.dg/vect/vect-alias-check-8.c
+ 11727271e111debea88071d5fd9cf5a0  gcc/testsuite/gcc.dg/vect/vect-alias-check-9.c
  164f1d465e8f0c3cf4f0595cdd0b4142  gcc/testsuite/gcc.dg/vect/vect-alias-check.c
  f0b56b894481ffe1fe102a037e482707  gcc/testsuite/gcc.dg/vect/vect-align-1.c
  75ba50d97de7fbaec0de05868c19be02  gcc/testsuite/gcc.dg/vect/vect-align-2.c
  374e4045853c30f4e4156da8f6908c21  gcc/testsuite/gcc.dg/vect/vect-align-3.c
! 2f35186c388c67e16cd4026e435ba093  gcc/testsuite/gcc.dg/vect/vect-align-4.c
! 6019f522296a560e835582b3eae77b17  gcc/testsuite/gcc.dg/vect/vect-all-big-array.c
  c212d9634747288642316f5a4ff71688  gcc/testsuite/gcc.dg/vect/vect-all.c
  154c42706e014b10ba6740d5b2ec9fb1  gcc/testsuite/gcc.dg/vect/vect-bool-1.c
  301393ef2e36efda6ce2bbd1678b702f  gcc/testsuite/gcc.dg/vect/vect-bool-cmp.c
! dfdc6fa100a29983054b89945e9bc881  gcc/testsuite/gcc.dg/vect/vect-bswap16.c
! 3acbbdac3cc638db4960646b1840991e  gcc/testsuite/gcc.dg/vect/vect-bswap32.c
! b2d5fdfbc58c5118bd998f7c68a8c577  gcc/testsuite/gcc.dg/vect/vect-bswap64.c
  3345e4d48d4dae1815be747d1f004f30  gcc/testsuite/gcc.dg/vect/vect-complex-1.c
  b81ef7010ac5d9d83cfe4611715502a2  gcc/testsuite/gcc.dg/vect/vect-complex-2.c
  e4e0ae2a20f798eba85140061b6a6ad7  gcc/testsuite/gcc.dg/vect/vect-complex-4.c
  367d9d0d2e8e9c2d599c25af6d972cda  gcc/testsuite/gcc.dg/vect/vect-complex-5.c
  9c48c2e7ee6b6e1e9b1e2b7901602fbe  gcc/testsuite/gcc.dg/vect/vect-cond-1.c
! c764093961735bf45a5a65a3a8f1aeb1  gcc/testsuite/gcc.dg/vect/vect-cond-10.c
  f8505a9522f91f3c6e75d412bfaf15c4  gcc/testsuite/gcc.dg/vect/vect-cond-11.c
! 712c13b79dff5bb5217da812c8ede340  gcc/testsuite/gcc.dg/vect/vect-cond-2.c
  ff9fb5835d0218f0d8fc8d2eebee9cd1  gcc/testsuite/gcc.dg/vect/vect-cond-3.c
  cb3604d059d377d3776d6c2581c5c08b  gcc/testsuite/gcc.dg/vect/vect-cond-4.c
  69ea81ef62184e89c4415e7b3ab5281a  gcc/testsuite/gcc.dg/vect/vect-cond-5.c
  03c006f9ae1c0745f5ce6578df9d0058  gcc/testsuite/gcc.dg/vect/vect-cond-6.c
  c12c84bf010d50ae110ef5e6dfb49a43  gcc/testsuite/gcc.dg/vect/vect-cond-7.c
! c3c8c6e922018f41982e9164cf301527  gcc/testsuite/gcc.dg/vect/vect-cond-8.c
! f28310ab8b8c45d2df6d6af5685c8854  gcc/testsuite/gcc.dg/vect/vect-cond-9.c
  0b977702a40013afcdb78bddf04bc009  gcc/testsuite/gcc.dg/vect/vect-cond-reduc-1.c
  81f1d27e9fbd5b434349fe98c68f7243  gcc/testsuite/gcc.dg/vect/vect-cond-reduc-2.c
! c6eb69337f445f03241c930aa5ae855c  gcc/testsuite/gcc.dg/vect/vect-cselim-1.c
  da6c54a57c412277438b8a28fa335e40  gcc/testsuite/gcc.dg/vect/vect-cselim-2.c
  6a93583f599051f181cc85fe92a7146a  gcc/testsuite/gcc.dg/vect/vect-debug-pr41926.c
  cc5c83e334c2dda13f9040f4d00fa2ac  gcc/testsuite/gcc.dg/vect/vect-double-reduc-1.c
*************** cc5c83e334c2dda13f9040f4d00fa2ac  gcc/te
*** 36041,36054 ****
  23a5ea26364ec425dc1dee5d59d6625b  gcc/testsuite/gcc.dg/vect/vect-double-reduc-3.c
  1fa54155a9c77a8b7257c238559985ca  gcc/testsuite/gcc.dg/vect/vect-double-reduc-4.c
  785a969d669ec6589b6c210ef89a78c6  gcc/testsuite/gcc.dg/vect/vect-double-reduc-5.c
! 872883010121613cc91c1e65eb93b938  gcc/testsuite/gcc.dg/vect/vect-double-reduc-6-big-array.c
  6c88161da6fd9995fe2f72f9ac2394f6  gcc/testsuite/gcc.dg/vect/vect-double-reduc-6.c
  325db9bd39399b062ac1e02d48e286f3  gcc/testsuite/gcc.dg/vect/vect-double-reduc-7.c
  5255db3025b7dc2620f6c83a2979c5ba  gcc/testsuite/gcc.dg/vect/vect-dv-1.c
! 03d2ac2afb3e5fcef721c3fa4a31be47  gcc/testsuite/gcc.dg/vect/vect-float-extend-1.c
! 562aa20fc94457d1e4fa22a5484a3cfc  gcc/testsuite/gcc.dg/vect/vect-float-truncate-1.c
  cf4a4d6e6cc4b23522c19982266ca248  gcc/testsuite/gcc.dg/vect/vect-floatint-conversion-1.c
! e8a4eb71a1d38f55a62766fbb7191606  gcc/testsuite/gcc.dg/vect/vect-floatint-conversion-2.c
  f7e0d01143aad0f81b1d1f66c5737e3a  gcc/testsuite/gcc.dg/vect/vect-fold-1.c
  b57bff07bf75c647567f17c15d11e41a  gcc/testsuite/gcc.dg/vect/vect-ifcvt-10.c
  a0b812b43a2a49d603a582c192074c86  gcc/testsuite/gcc.dg/vect/vect-ifcvt-11.c
--- 37950,37963 ----
  23a5ea26364ec425dc1dee5d59d6625b  gcc/testsuite/gcc.dg/vect/vect-double-reduc-3.c
  1fa54155a9c77a8b7257c238559985ca  gcc/testsuite/gcc.dg/vect/vect-double-reduc-4.c
  785a969d669ec6589b6c210ef89a78c6  gcc/testsuite/gcc.dg/vect/vect-double-reduc-5.c
! ffe5781d87a8ab896ccae4df49ccc0e4  gcc/testsuite/gcc.dg/vect/vect-double-reduc-6-big-array.c
  6c88161da6fd9995fe2f72f9ac2394f6  gcc/testsuite/gcc.dg/vect/vect-double-reduc-6.c
  325db9bd39399b062ac1e02d48e286f3  gcc/testsuite/gcc.dg/vect/vect-double-reduc-7.c
  5255db3025b7dc2620f6c83a2979c5ba  gcc/testsuite/gcc.dg/vect/vect-dv-1.c
! 8a0136c5da125762e2aed0ee369e812b  gcc/testsuite/gcc.dg/vect/vect-float-extend-1.c
! 39ee28c6dddeb1f24a4ccb6a946bbb1d  gcc/testsuite/gcc.dg/vect/vect-float-truncate-1.c
  cf4a4d6e6cc4b23522c19982266ca248  gcc/testsuite/gcc.dg/vect/vect-floatint-conversion-1.c
! 0ad5246c517109cae0c7f2b2f7401f34  gcc/testsuite/gcc.dg/vect/vect-floatint-conversion-2.c
  f7e0d01143aad0f81b1d1f66c5737e3a  gcc/testsuite/gcc.dg/vect/vect-fold-1.c
  b57bff07bf75c647567f17c15d11e41a  gcc/testsuite/gcc.dg/vect/vect-ifcvt-10.c
  a0b812b43a2a49d603a582c192074c86  gcc/testsuite/gcc.dg/vect/vect-ifcvt-11.c
*************** afc4a003b63c2ed63c2827e5b8ed54d9  gcc/te
*** 36063,36069 ****
  34ad3aa09b0a3b20b52f804868682bc5  gcc/testsuite/gcc.dg/vect/vect-ifcvt-9.c
  284173c938c46f958642cb361af91dcc  gcc/testsuite/gcc.dg/vect/vect-intfloat-conversion-1.c
  fcc2519d16046623a62ebaa3f3acb61c  gcc/testsuite/gcc.dg/vect/vect-intfloat-conversion-2.c
! 9f987fe18eedf71ada3b9d4c704d30c1  gcc/testsuite/gcc.dg/vect/vect-intfloat-conversion-3.c
  943e74696f555b7c9e58c8c916645922  gcc/testsuite/gcc.dg/vect/vect-intfloat-conversion-4a.c
  aa7dfecc9413b46e1123e775d8b0cf72  gcc/testsuite/gcc.dg/vect/vect-intfloat-conversion-4b.c
  07ee66eb7c6796e72a49eba09680932a  gcc/testsuite/gcc.dg/vect/vect-iv-1.c
--- 37972,37978 ----
  34ad3aa09b0a3b20b52f804868682bc5  gcc/testsuite/gcc.dg/vect/vect-ifcvt-9.c
  284173c938c46f958642cb361af91dcc  gcc/testsuite/gcc.dg/vect/vect-intfloat-conversion-1.c
  fcc2519d16046623a62ebaa3f3acb61c  gcc/testsuite/gcc.dg/vect/vect-intfloat-conversion-2.c
! fb82237f822ac3fa1be30d19014f0ead  gcc/testsuite/gcc.dg/vect/vect-intfloat-conversion-3.c
  943e74696f555b7c9e58c8c916645922  gcc/testsuite/gcc.dg/vect/vect-intfloat-conversion-4a.c
  aa7dfecc9413b46e1123e775d8b0cf72  gcc/testsuite/gcc.dg/vect/vect-intfloat-conversion-4b.c
  07ee66eb7c6796e72a49eba09680932a  gcc/testsuite/gcc.dg/vect/vect-iv-1.c
*************** bbab1918bfa65276453b08b4a15b9abd  gcc/te
*** 36089,36122 ****
  ba11fdb8c1ad9eb5e1be0865d6fd4b98  gcc/testsuite/gcc.dg/vect/vect-live-5.c
  ef83732e2ab27d0bcc0fb8fa5e336448  gcc/testsuite/gcc.dg/vect/vect-live-slp-1.c
  e563a7cf9bca7196a794761ee1ec3899  gcc/testsuite/gcc.dg/vect/vect-live-slp-2.c
! 5540900817618a93a7867b65b68ac1bf  gcc/testsuite/gcc.dg/vect/vect-live-slp-3.c
  58169dfd1934bcecee0d6fdd7931eca3  gcc/testsuite/gcc.dg/vect/vect-load-lanes-peeling-1.c
  a488271290c0446c6503c14d61e47e97  gcc/testsuite/gcc.dg/vect/vect-mask-load-1.c
  04939b13d30da0dfbbd708f6569fe904  gcc/testsuite/gcc.dg/vect/vect-mask-loadstore-1.c
  eee53e73bb62e3a2c57e19ae2588381e  gcc/testsuite/gcc.dg/vect/vect-mask-store-move-1.c
! 2809178ba8c3ea92d9bbbae5f524f52c  gcc/testsuite/gcc.dg/vect/vect-mult-const-pattern-1.c
! 8494d25e3787d18a874de4e0f69a02d4  gcc/testsuite/gcc.dg/vect/vect-mult-const-pattern-2.c
  4656afca0ce66b7237e1f714334354d0  gcc/testsuite/gcc.dg/vect/vect-mult-pattern-1.c
  c803a6ba1c147c45b591a730527ab2b1  gcc/testsuite/gcc.dg/vect/vect-mult-pattern-2.c
! fa077c09c84d0ba29542d0985b08025a  gcc/testsuite/gcc.dg/vect/vect-multitypes-1.c
  f0b81a5ed7ca804a416117433fb97b42  gcc/testsuite/gcc.dg/vect/vect-multitypes-10.c
  9b66722b681e4741477fb208a6fb4552  gcc/testsuite/gcc.dg/vect/vect-multitypes-11.c
! c189643b51409f85e314657ad763f872  gcc/testsuite/gcc.dg/vect/vect-multitypes-12.c
  37de9a2b19f10c09d87a7d4c615f0f86  gcc/testsuite/gcc.dg/vect/vect-multitypes-13.c
  1d7324a988d61b4694209ca9937e079c  gcc/testsuite/gcc.dg/vect/vect-multitypes-14.c
  c78e329614306ddfd2430617ba82c3e8  gcc/testsuite/gcc.dg/vect/vect-multitypes-15.c
  c21abdf687a185e08cdaf733987d06e3  gcc/testsuite/gcc.dg/vect/vect-multitypes-16.c
  dee337c321ec8c1bd4a4072e3a051b58  gcc/testsuite/gcc.dg/vect/vect-multitypes-17.c
  3c8a9b0f5fda3ac2292bc0c2e20b45eb  gcc/testsuite/gcc.dg/vect/vect-multitypes-2.c
! 3c066546574e85aa732fcf5ca59a95f7  gcc/testsuite/gcc.dg/vect/vect-multitypes-3.c
! 6e5e7f5794f76b52f1088d78cd9ae720  gcc/testsuite/gcc.dg/vect/vect-multitypes-4.c
  1d6b46966ea0952dcee6f07f8e71291e  gcc/testsuite/gcc.dg/vect/vect-multitypes-5.c
! f4084f7429a5fc99c89e5d55720fbdd8  gcc/testsuite/gcc.dg/vect/vect-multitypes-6.c
  ee152373b3cb6439fc8f5b449b865292  gcc/testsuite/gcc.dg/vect/vect-multitypes-7.c
  4effd1110c39761332a5f2cf3c2f7dbf  gcc/testsuite/gcc.dg/vect/vect-multitypes-8.c
  e22c5292855d04ebec8fcca164b3f63e  gcc/testsuite/gcc.dg/vect/vect-multitypes-9.c
  8d6c1b8d6a26c0f488ec9cfcdb717ac9  gcc/testsuite/gcc.dg/vect/vect-nb-iter-ub-1.c
! 2b5e1fd10fec4d24b2e7f1a0c02cd2fa  gcc/testsuite/gcc.dg/vect/vect-nb-iter-ub-2.c
  88b165eba33f2f9e9ef536108374e6b0  gcc/testsuite/gcc.dg/vect/vect-nb-iter-ub-3.c
  028844c7681fb2695f5b0915b7920e58  gcc/testsuite/gcc.dg/vect/vect-neg-store-1.c
  ca50208d018fefe0221f31fc0c7c54f3  gcc/testsuite/gcc.dg/vect/vect-neg-store-2.c
--- 37998,38031 ----
  ba11fdb8c1ad9eb5e1be0865d6fd4b98  gcc/testsuite/gcc.dg/vect/vect-live-5.c
  ef83732e2ab27d0bcc0fb8fa5e336448  gcc/testsuite/gcc.dg/vect/vect-live-slp-1.c
  e563a7cf9bca7196a794761ee1ec3899  gcc/testsuite/gcc.dg/vect/vect-live-slp-2.c
! 0bbc680ae00d4b3267e61a647fd4a6b4  gcc/testsuite/gcc.dg/vect/vect-live-slp-3.c
  58169dfd1934bcecee0d6fdd7931eca3  gcc/testsuite/gcc.dg/vect/vect-load-lanes-peeling-1.c
  a488271290c0446c6503c14d61e47e97  gcc/testsuite/gcc.dg/vect/vect-mask-load-1.c
  04939b13d30da0dfbbd708f6569fe904  gcc/testsuite/gcc.dg/vect/vect-mask-loadstore-1.c
  eee53e73bb62e3a2c57e19ae2588381e  gcc/testsuite/gcc.dg/vect/vect-mask-store-move-1.c
! 4f581d9a029a82b7a06ef73d7f16abce  gcc/testsuite/gcc.dg/vect/vect-mult-const-pattern-1.c
! 51978c61b361d62e1fb046bd7f3f8f1c  gcc/testsuite/gcc.dg/vect/vect-mult-const-pattern-2.c
  4656afca0ce66b7237e1f714334354d0  gcc/testsuite/gcc.dg/vect/vect-mult-pattern-1.c
  c803a6ba1c147c45b591a730527ab2b1  gcc/testsuite/gcc.dg/vect/vect-mult-pattern-2.c
! aa4e3565270dc91625de8fbda6bc864e  gcc/testsuite/gcc.dg/vect/vect-multitypes-1.c
  f0b81a5ed7ca804a416117433fb97b42  gcc/testsuite/gcc.dg/vect/vect-multitypes-10.c
  9b66722b681e4741477fb208a6fb4552  gcc/testsuite/gcc.dg/vect/vect-multitypes-11.c
! ef96765d2519e94b2dfcb63a9c1c8655  gcc/testsuite/gcc.dg/vect/vect-multitypes-12.c
  37de9a2b19f10c09d87a7d4c615f0f86  gcc/testsuite/gcc.dg/vect/vect-multitypes-13.c
  1d7324a988d61b4694209ca9937e079c  gcc/testsuite/gcc.dg/vect/vect-multitypes-14.c
  c78e329614306ddfd2430617ba82c3e8  gcc/testsuite/gcc.dg/vect/vect-multitypes-15.c
  c21abdf687a185e08cdaf733987d06e3  gcc/testsuite/gcc.dg/vect/vect-multitypes-16.c
  dee337c321ec8c1bd4a4072e3a051b58  gcc/testsuite/gcc.dg/vect/vect-multitypes-17.c
  3c8a9b0f5fda3ac2292bc0c2e20b45eb  gcc/testsuite/gcc.dg/vect/vect-multitypes-2.c
! d3fd4ec8acfe7a33d9357648e5b4081b  gcc/testsuite/gcc.dg/vect/vect-multitypes-3.c
! b52e229f8aaf748a9a98f51862baadf9  gcc/testsuite/gcc.dg/vect/vect-multitypes-4.c
  1d6b46966ea0952dcee6f07f8e71291e  gcc/testsuite/gcc.dg/vect/vect-multitypes-5.c
! 85c248853ef4283c51762bd71c1029de  gcc/testsuite/gcc.dg/vect/vect-multitypes-6.c
  ee152373b3cb6439fc8f5b449b865292  gcc/testsuite/gcc.dg/vect/vect-multitypes-7.c
  4effd1110c39761332a5f2cf3c2f7dbf  gcc/testsuite/gcc.dg/vect/vect-multitypes-8.c
  e22c5292855d04ebec8fcca164b3f63e  gcc/testsuite/gcc.dg/vect/vect-multitypes-9.c
  8d6c1b8d6a26c0f488ec9cfcdb717ac9  gcc/testsuite/gcc.dg/vect/vect-nb-iter-ub-1.c
! f183b835e04e4f4df76b8b11d27c58d7  gcc/testsuite/gcc.dg/vect/vect-nb-iter-ub-2.c
  88b165eba33f2f9e9ef536108374e6b0  gcc/testsuite/gcc.dg/vect/vect-nb-iter-ub-3.c
  028844c7681fb2695f5b0915b7920e58  gcc/testsuite/gcc.dg/vect/vect-neg-store-1.c
  ca50208d018fefe0221f31fc0c7c54f3  gcc/testsuite/gcc.dg/vect/vect-neg-store-2.c
*************** ca50208d018fefe0221f31fc0c7c54f3  gcc/te
*** 36124,36129 ****
--- 38033,38039 ----
  d52c422cd38a7b844a4921424d5d9d65  gcc/testsuite/gcc.dg/vect/vect-nest-cycle-2.c
  8a6b65d1295e7ccaa2b44a2792c31ae0  gcc/testsuite/gcc.dg/vect/vect-nest-cycle-3.c
  7f30c5753c28cba18edda558128c9678  gcc/testsuite/gcc.dg/vect/vect-nop-move.c
+ af6b3bb0b0a586c675ff13949e8439ad  gcc/testsuite/gcc.dg/vect/vect-ooo-group-1.c
  4282774df31f82337883da80b25f86ac  gcc/testsuite/gcc.dg/vect/vect-outer-1-big-array.c
  09caa8d1a5ae68073d149268a0c5f096  gcc/testsuite/gcc.dg/vect/vect-outer-1.c
  6a9d329f0888c14c53b7702a81a83baf  gcc/testsuite/gcc.dg/vect/vect-outer-1a-big-array.c
*************** fb5f83f213993173648de4201d9f9786  gcc/te
*** 36140,36147 ****
  2685b41eb06145cae235370f75407dea  gcc/testsuite/gcc.dg/vect/vect-outer-2d.c
  829b4c293b2eed605a01c827b549cde1  gcc/testsuite/gcc.dg/vect/vect-outer-3-big-array.c
  ba10e2f352d80c63fd5e4c8e6ca343db  gcc/testsuite/gcc.dg/vect/vect-outer-3.c
! 0e680f9b49c09d9745969ca1272e26ac  gcc/testsuite/gcc.dg/vect/vect-outer-3a-big-array.c
! 98c63b63b2156c117ec2ba1089e3a415  gcc/testsuite/gcc.dg/vect/vect-outer-3a.c
  855d8fe4ee8393dab3c213df5e63c0cd  gcc/testsuite/gcc.dg/vect/vect-outer-3b.c
  eebe61251e3f57ced2641e1e6c4e9f20  gcc/testsuite/gcc.dg/vect/vect-outer-3c.c
  0b2e994dbdfd28ff958edad37f970d29  gcc/testsuite/gcc.dg/vect/vect-outer-4.c
--- 38050,38057 ----
  2685b41eb06145cae235370f75407dea  gcc/testsuite/gcc.dg/vect/vect-outer-2d.c
  829b4c293b2eed605a01c827b549cde1  gcc/testsuite/gcc.dg/vect/vect-outer-3-big-array.c
  ba10e2f352d80c63fd5e4c8e6ca343db  gcc/testsuite/gcc.dg/vect/vect-outer-3.c
! 024fb2ace3f47536c48a51e7e9ebe1cb  gcc/testsuite/gcc.dg/vect/vect-outer-3a-big-array.c
! 7a01f396fb69ae277435681f3c059101  gcc/testsuite/gcc.dg/vect/vect-outer-3a.c
  855d8fe4ee8393dab3c213df5e63c0cd  gcc/testsuite/gcc.dg/vect/vect-outer-3b.c
  eebe61251e3f57ced2641e1e6c4e9f20  gcc/testsuite/gcc.dg/vect/vect-outer-3c.c
  0b2e994dbdfd28ff958edad37f970d29  gcc/testsuite/gcc.dg/vect/vect-outer-4.c
*************** e6330a4b2d9a87e898cdaadd8b254246  gcc/te
*** 36173,36227 ****
  988e5dbde608634bea71cb2fe3acb5a3  gcc/testsuite/gcc.dg/vect/vect-outer-simd-2.c
  ea891669f15d8e84d6fda8024dd5f815  gcc/testsuite/gcc.dg/vect/vect-outer-simd-3.c
  cfd4bf6dc0b154e56271b5c55488ea00  gcc/testsuite/gcc.dg/vect/vect-over-widen-1-big-array.c
! ba078e102926262e84f2e23800654b9c  gcc/testsuite/gcc.dg/vect/vect-over-widen-1.c
  fe151ea4d0c8462f1cda8aefa788070b  gcc/testsuite/gcc.dg/vect/vect-over-widen-2-big-array.c
  9900f68829a14f17dd1584631a18e4a2  gcc/testsuite/gcc.dg/vect/vect-over-widen-2.c
! 788bd0c61ee3a387b838ecd4ba268829  gcc/testsuite/gcc.dg/vect/vect-over-widen-3-big-array.c
  4dc9ec9000d481feef486f771f80b617  gcc/testsuite/gcc.dg/vect/vect-over-widen-3.c
  83f8ccb7d72b2949e0e60338a496e883  gcc/testsuite/gcc.dg/vect/vect-over-widen-4-big-array.c
! 66babd1438a4c40eeaec304a22b16209  gcc/testsuite/gcc.dg/vect/vect-over-widen-4.c
! 4fc870a823e4d7512e02b2f6c868ea3f  gcc/testsuite/gcc.dg/vect/vect-peel-1.c
  60be26f6af39e539e7a6a8bc0dbbc608  gcc/testsuite/gcc.dg/vect/vect-peel-2.c
! 83d7f4b63a9f64d3690a7dec632af617  gcc/testsuite/gcc.dg/vect/vect-peel-3.c
! 1c9a5e23a4003490c1803d4f0919b007  gcc/testsuite/gcc.dg/vect/vect-peel-4.c
! 4473f2b79134aa713577291245a3bc64  gcc/testsuite/gcc.dg/vect/vect-pr69848.c
  3a3a316ff2f2496494ecb0bd77d61aad  gcc/testsuite/gcc.dg/vect/vect-pre-interact.c
  ae4441b04534528916849ebd82e66022  gcc/testsuite/gcc.dg/vect/vect-recip.c
  14379418c35bd92a759c557ae5c861c6  gcc/testsuite/gcc.dg/vect/vect-reduc-1.c
  22a0d53785f7d6c47cd23f6847097e73  gcc/testsuite/gcc.dg/vect/vect-reduc-10.c
! 953c358e6d9b128d3242cb1aff22018a  gcc/testsuite/gcc.dg/vect/vect-reduc-1char-big-array.c
  ce6c1c670956af8a31b213900893800f  gcc/testsuite/gcc.dg/vect/vect-reduc-1char.c
  9016b200b489dedcff1937a8fa102057  gcc/testsuite/gcc.dg/vect/vect-reduc-1short.c
  81b34a2a94bdaaa855e0e925b2798b5b  gcc/testsuite/gcc.dg/vect/vect-reduc-2.c
! fdbccc1f407035c74f680ba31c04498d  gcc/testsuite/gcc.dg/vect/vect-reduc-2char-big-array.c
  1f260cac53137d800199d23411c5b56a  gcc/testsuite/gcc.dg/vect/vect-reduc-2char.c
  42c6df2c53a747300dc3619c264d5ccc  gcc/testsuite/gcc.dg/vect/vect-reduc-2short.c
  6e156b7f7e74f555fab7243cd03ce9db  gcc/testsuite/gcc.dg/vect/vect-reduc-3.c
! 1c3c5abdf493e43e655be392f7679a10  gcc/testsuite/gcc.dg/vect/vect-reduc-6.c
  6dfb966ec0651e1f0bfd61ae96ee63b4  gcc/testsuite/gcc.dg/vect/vect-reduc-7.c
  c0dc4d999a9dd3a90639e4eb6b307722  gcc/testsuite/gcc.dg/vect/vect-reduc-8.c
  deb8ecbd7cdb913c066f7d366640b30b  gcc/testsuite/gcc.dg/vect/vect-reduc-9.c
  71e0794c8d73e17af597f6be63876ec1  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
! 043127aec05f78b65bd2040a08bf497d  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8a.c
  bed51d37bc6e87221ab68c24d450b955  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8b.c
  594729e48529b6e77fd028ff43ccf9cf  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8c.c
  99ef0bff592fc8c93d39d6320fd21785  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u16a.c
  99440ac01703ffbd08fac2c720ccdd74  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u16b.c
! ede49feb85a160c5ac3d8046c05e26af  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u8a.c
  2eecf8d6258ddd6d061896f5988a4b76  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u8b.c
  a1590cdef29fb480824603e746a7ab80  gcc/testsuite/gcc.dg/vect/vect-reduc-mul_1.c
  327cfa6e82122e67b62c1edd8d146433  gcc/testsuite/gcc.dg/vect/vect-reduc-mul_2.c
! 06c72239880caa2a167d57f6e401c7f3  gcc/testsuite/gcc.dg/vect/vect-reduc-or_1.c
! 1f35a8cd8c13c894a30aab37bc8049e9  gcc/testsuite/gcc.dg/vect/vect-reduc-or_2.c
! dadbef8fb9e163a8bb58ebc553fbb3a7  gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-1a.c
! ab75a589cd4d20bed8afb5983285fc14  gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-1b-big-array.c
! 12d0b4da2b1a425b1f54181b85ba14ab  gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-1b.c
! acfa85336a306eb868b5bed68a06da5f  gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-1c-big-array.c
  bd52e3921544e1711ab57051060881cb  gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-1c.c
! 86fd3f9c104c06f1ab114a8c3c193f21  gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-2a.c
! 0870df80c7641881fab632b7146770e4  gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-2b-big-array.c
  0286cd7b14fa72279d00b58b4ca208c9  gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-2b.c
  a6dab9702506f58ef2160e6271f0010e  gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-2c.c
  427dcb0ed4cb20c8579fd8447ff07df3  gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-3.c
--- 38083,38143 ----
  988e5dbde608634bea71cb2fe3acb5a3  gcc/testsuite/gcc.dg/vect/vect-outer-simd-2.c
  ea891669f15d8e84d6fda8024dd5f815  gcc/testsuite/gcc.dg/vect/vect-outer-simd-3.c
  cfd4bf6dc0b154e56271b5c55488ea00  gcc/testsuite/gcc.dg/vect/vect-over-widen-1-big-array.c
! ce6b1f41e41cc7d9b4108fe015d331ea  gcc/testsuite/gcc.dg/vect/vect-over-widen-1.c
  fe151ea4d0c8462f1cda8aefa788070b  gcc/testsuite/gcc.dg/vect/vect-over-widen-2-big-array.c
  9900f68829a14f17dd1584631a18e4a2  gcc/testsuite/gcc.dg/vect/vect-over-widen-2.c
! 5f5aa2e2e453c3d314c40ce315d82b1a  gcc/testsuite/gcc.dg/vect/vect-over-widen-3-big-array.c
  4dc9ec9000d481feef486f771f80b617  gcc/testsuite/gcc.dg/vect/vect-over-widen-3.c
  83f8ccb7d72b2949e0e60338a496e883  gcc/testsuite/gcc.dg/vect/vect-over-widen-4-big-array.c
! e3e9e4c9b35c2b0d383d771ec822ca23  gcc/testsuite/gcc.dg/vect/vect-over-widen-4.c
! ce34072180041715a4f2df2fdf2f6032  gcc/testsuite/gcc.dg/vect/vect-peel-1.c
  60be26f6af39e539e7a6a8bc0dbbc608  gcc/testsuite/gcc.dg/vect/vect-peel-2.c
! ee6812c3226410912b95c69d2a333684  gcc/testsuite/gcc.dg/vect/vect-peel-3.c
! 224da7038640eac5f4aca6b7e2000b15  gcc/testsuite/gcc.dg/vect/vect-peel-4.c
! 4d57df9e3b3522c9f1a6707c05f1da45  gcc/testsuite/gcc.dg/vect/vect-pr69848.c
  3a3a316ff2f2496494ecb0bd77d61aad  gcc/testsuite/gcc.dg/vect/vect-pre-interact.c
+ 99b7c76562cfff2646b8321c989dea61  gcc/testsuite/gcc.dg/vect/vect-profile-1.c
  ae4441b04534528916849ebd82e66022  gcc/testsuite/gcc.dg/vect/vect-recip.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
! fbd4824be04c3d1e916edcd2d90246d7  gcc/testsuite/gcc.dg/vect/vect-reduc-1char-big-array.c
  ce6c1c670956af8a31b213900893800f  gcc/testsuite/gcc.dg/vect/vect-reduc-1char.c
  9016b200b489dedcff1937a8fa102057  gcc/testsuite/gcc.dg/vect/vect-reduc-1short.c
  81b34a2a94bdaaa855e0e925b2798b5b  gcc/testsuite/gcc.dg/vect/vect-reduc-2.c
! b536019d3ac42d47a61280ccc1408fd5  gcc/testsuite/gcc.dg/vect/vect-reduc-2char-big-array.c
  1f260cac53137d800199d23411c5b56a  gcc/testsuite/gcc.dg/vect/vect-reduc-2char.c
  42c6df2c53a747300dc3619c264d5ccc  gcc/testsuite/gcc.dg/vect/vect-reduc-2short.c
  6e156b7f7e74f555fab7243cd03ce9db  gcc/testsuite/gcc.dg/vect/vect-reduc-3.c
! 56c117b24920d6cd2486cb67c8536b3b  gcc/testsuite/gcc.dg/vect/vect-reduc-6.c
  6dfb966ec0651e1f0bfd61ae96ee63b4  gcc/testsuite/gcc.dg/vect/vect-reduc-7.c
  c0dc4d999a9dd3a90639e4eb6b307722  gcc/testsuite/gcc.dg/vect/vect-reduc-8.c
  deb8ecbd7cdb913c066f7d366640b30b  gcc/testsuite/gcc.dg/vect/vect-reduc-9.c
  71e0794c8d73e17af597f6be63876ec1  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
! 4ac2e04328b2becaeb7ebc69fbe5696a  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8a.c
  bed51d37bc6e87221ab68c24d450b955  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8b.c
  594729e48529b6e77fd028ff43ccf9cf  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8c.c
  99ef0bff592fc8c93d39d6320fd21785  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u16a.c
  99440ac01703ffbd08fac2c720ccdd74  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u16b.c
! 43659558b2db861a120cdfb1683744ac  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u8a.c
  2eecf8d6258ddd6d061896f5988a4b76  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u8b.c
+ e6d7cffdfe32895fb6cd02c38d3f7dfa  gcc/testsuite/gcc.dg/vect/vect-reduc-in-order-1.c
+ b7b984e0456b49a107ab1fead4038420  gcc/testsuite/gcc.dg/vect/vect-reduc-in-order-2.c
+ 1eef69f3a699802657df0415b9475266  gcc/testsuite/gcc.dg/vect/vect-reduc-in-order-3.c
+ 2b4febebbd436c1f0e567362cda19314  gcc/testsuite/gcc.dg/vect/vect-reduc-in-order-4.c
  a1590cdef29fb480824603e746a7ab80  gcc/testsuite/gcc.dg/vect/vect-reduc-mul_1.c
  327cfa6e82122e67b62c1edd8d146433  gcc/testsuite/gcc.dg/vect/vect-reduc-mul_2.c
! ab2e4fc58c88f361a248cf81039c8523  gcc/testsuite/gcc.dg/vect/vect-reduc-or_1.c
! 37ef75277a4e4b18f485cee67978b961  gcc/testsuite/gcc.dg/vect/vect-reduc-or_2.c
! c5caaf2170dc52ad4d99dad84b667f47  gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-1a.c
! f486761fa2c983371fb39834b0c0e707  gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-1b-big-array.c
! cc5ec47e6e35ed7e43a933a71a367c23  gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-1b.c
! 84e870a45cd0751fc0f9278a0fe79937  gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-1c-big-array.c
  bd52e3921544e1711ab57051060881cb  gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-1c.c
! 61342d23eb9b3d13998ba0a25d18c70d  gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-2a.c
! 97041fa648b799394a924264f714224d  gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-2b-big-array.c
  0286cd7b14fa72279d00b58b4ca208c9  gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-2b.c
  a6dab9702506f58ef2160e6271f0010e  gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-2c.c
  427dcb0ed4cb20c8579fd8447ff07df3  gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-3.c
*************** fd42b513de549850607ae76ac92c51c1  gcc/te
*** 36263,36304 ****
  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
! d90368e3ca18bf64fcd42c7186b70d23  gcc/testsuite/gcc.dg/vect/vect-strided-a-mult.c
! 32e0c12df9f787d0d6f5ee11d9e1d085  gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-i2.c
! ec2399219cd57c5494d38535acd5d495  gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-i4.c
! 49b8dfa7e6209dc38da7d52ba4727213  gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-mult.c
  450f2dc7922e65c7d2ff04e6e8f2796a  gcc/testsuite/gcc.dg/vect/vect-strided-a-u32-mult.c
! 881b93ba81aa7b6c2d6badfabfe036e7  gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i2-gap.c
! 9704f33cffe2f03303d620d12656f1c9  gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i8-gap2-big-array.c
! ce9b02890617886af22e2187836ebe18  gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i8-gap2.c
! e65271764e3846fb7872a88f20e137fd  gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i8-gap7-big-array.c
! 2c30bae5f5570fab966d941334089a4e  gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i8-gap7.c
  b9ba9677e8ed5dac27c521aec9e672a6  gcc/testsuite/gcc.dg/vect/vect-strided-float.c
! 148adda95bfccf8387ee2884b2c58304  gcc/testsuite/gcc.dg/vect/vect-strided-mult-char-ls.c
! 1e7a67e386a5e00657fbc15cb9bc0e46  gcc/testsuite/gcc.dg/vect/vect-strided-mult.c
! 5864325bdf43e56993581d74f63f8818  gcc/testsuite/gcc.dg/vect/vect-strided-same-dr.c
! 9adfa7f31cb740f5082cba0b16e52eed  gcc/testsuite/gcc.dg/vect/vect-strided-shift-1.c
  25b6de8de2d373a4b9533b23cd9636bf  gcc/testsuite/gcc.dg/vect/vect-strided-store-a-u8-i2.c
  7893657fb28d41228ef4eea490143c61  gcc/testsuite/gcc.dg/vect/vect-strided-store-u16-i4.c
  dd1ccc0236c625d520b2eddf7851b5b8  gcc/testsuite/gcc.dg/vect/vect-strided-store-u32-i2.c
  7392e17ca464a784f05c0d70c106fd5e  gcc/testsuite/gcc.dg/vect/vect-strided-store.c
! f61f558a22e5f5bcfc130eb169fbf927  gcc/testsuite/gcc.dg/vect/vect-strided-u16-i2.c
  419b4e75d35d4bd2d27375739815ede3  gcc/testsuite/gcc.dg/vect/vect-strided-u16-i3.c
! c022472e20cfde3e630c59c62831f252  gcc/testsuite/gcc.dg/vect/vect-strided-u16-i4.c
! 093ec4ea63b7c21206700c499d76ad0c  gcc/testsuite/gcc.dg/vect/vect-strided-u32-i4.c
! bc847d614006f8481f15731cd1b21c27  gcc/testsuite/gcc.dg/vect/vect-strided-u32-i8.c
  f2b01871037429c6251c9f9f645bbc74  gcc/testsuite/gcc.dg/vect/vect-strided-u32-mult.c
! e063540d650d8e972b3a6d0d7b3476ff  gcc/testsuite/gcc.dg/vect/vect-strided-u8-i2-gap.c
! 18c016c17cde1d17da236c06facbe463  gcc/testsuite/gcc.dg/vect/vect-strided-u8-i2.c
! 667a5ac32711a1f52413ef94a30dcc9c  gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap2-big-array.c
! 227d11c46057f6177fd6597f0f0c8302  gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap2.c
! 8e44e7056489017b2276bc815236a823  gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap4-big-array.c
! 66a16f5274b00e445216c602bdcab41c  gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap4-unknown.c
! 23b146cb275f10955b25da1ec40c3251  gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap4.c
! 13f15b6bb0f2b0a68c1ff22a1f6411a6  gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap7-big-array.c
! 096ac68d9e26d5bebd15fd3a89731730  gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap7.c
! 985bf29266aac4f0e813678bd6e506b6  gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8.c
! 39012a610bcd4f15f8e8b6e9b8905170  gcc/testsuite/gcc.dg/vect/vect-tail-nomask-1.c
  a7957f54ccc3f67952d53b86c4b0094d  gcc/testsuite/gcc.dg/vect/vect-vfa-01.c
  dc4a926156676105cfc990ccc75ee1c9  gcc/testsuite/gcc.dg/vect/vect-vfa-02.c
  b205a7b71517102e7b08e3e3a131aa45  gcc/testsuite/gcc.dg/vect/vect-vfa-03.c
--- 38179,38220 ----
  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
! 86c1f87b2deab38537cbd45ec400e457  gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-i2.c
! 20028b1ce8d31fa6a4db4556d25166dd  gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-i4.c
! 626aa098a26efd5da99fcc2af6d82d5e  gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-mult.c
  450f2dc7922e65c7d2ff04e6e8f2796a  gcc/testsuite/gcc.dg/vect/vect-strided-a-u32-mult.c
! 3ee643ee182420e1df54347f5a2693e9  gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i2-gap.c
! 88eb848acfc790412f3cd5f2d6d781e1  gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i8-gap2-big-array.c
! 42ea6dc3d3c1bdc733affab603a216c9  gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i8-gap2.c
! 6f7c11c840059339eb7907f2dea52bc1  gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i8-gap7-big-array.c
! cca008a18da9671e47936d74e799dc0f  gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i8-gap7.c
  b9ba9677e8ed5dac27c521aec9e672a6  gcc/testsuite/gcc.dg/vect/vect-strided-float.c
! 138c86a3f18bb9ffc54f17bfa4a4171e  gcc/testsuite/gcc.dg/vect/vect-strided-mult-char-ls.c
! 9663bcaf461e96fdfbca7bf6eb7006c0  gcc/testsuite/gcc.dg/vect/vect-strided-mult.c
! a044bfeadaa371c7f2c3c588dec1047a  gcc/testsuite/gcc.dg/vect/vect-strided-same-dr.c
! 2803c1081a87a6b3bbfe8f3173163fba  gcc/testsuite/gcc.dg/vect/vect-strided-shift-1.c
  25b6de8de2d373a4b9533b23cd9636bf  gcc/testsuite/gcc.dg/vect/vect-strided-store-a-u8-i2.c
  7893657fb28d41228ef4eea490143c61  gcc/testsuite/gcc.dg/vect/vect-strided-store-u16-i4.c
  dd1ccc0236c625d520b2eddf7851b5b8  gcc/testsuite/gcc.dg/vect/vect-strided-store-u32-i2.c
  7392e17ca464a784f05c0d70c106fd5e  gcc/testsuite/gcc.dg/vect/vect-strided-store.c
! 3dbd827bdb795daada01b5828ba704d5  gcc/testsuite/gcc.dg/vect/vect-strided-u16-i2.c
  419b4e75d35d4bd2d27375739815ede3  gcc/testsuite/gcc.dg/vect/vect-strided-u16-i3.c
! 3fb5394ffe2539ddd8e77800bc13bb55  gcc/testsuite/gcc.dg/vect/vect-strided-u16-i4.c
! 30d750e61873eb6056913c388d8d6cd1  gcc/testsuite/gcc.dg/vect/vect-strided-u32-i4.c
! bbddfb6f4982ab7d0b6308609ddcbe3e  gcc/testsuite/gcc.dg/vect/vect-strided-u32-i8.c
  f2b01871037429c6251c9f9f645bbc74  gcc/testsuite/gcc.dg/vect/vect-strided-u32-mult.c
! 1dbe8f0b92c1af733d0464bf5771c94e  gcc/testsuite/gcc.dg/vect/vect-strided-u8-i2-gap.c
! 4e61b897f60e4f6d6816d0fb6d859d2d  gcc/testsuite/gcc.dg/vect/vect-strided-u8-i2.c
! 7a05071905e4634a00a5a802eddb48fd  gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap2-big-array.c
! ec8649274ccde755c3b534616abdabd8  gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap2.c
! ca641e5056b48eee40a9a2a6644b0c77  gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap4-big-array.c
! 34a9982ee58ea0a910aaf2b1f4c1f6a9  gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap4-unknown.c
! 7ab91a4256266d6232afe83938760efc  gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap4.c
! 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
! 6a6415c5b360ff8033d6453ab085c91a  gcc/testsuite/gcc.dg/vect/vect-tail-nomask-1.c
  a7957f54ccc3f67952d53b86c4b0094d  gcc/testsuite/gcc.dg/vect/vect-vfa-01.c
  dc4a926156676105cfc990ccc75ee1c9  gcc/testsuite/gcc.dg/vect/vect-vfa-02.c
  b205a7b71517102e7b08e3e3a131aa45  gcc/testsuite/gcc.dg/vect/vect-vfa-03.c
*************** e8ed4cc110ef0a4a4860db0686ac6922  gcc/te
*** 36319,36325 ****
  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
! 33cab05cb20e8445a92bc0e878351939  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
--- 38235,38241 ----
  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
! 95127ff73a1e19b1402c3eea317faeba  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
*************** fc8de79475ee3413d108466363dd60b6  gcc/te
*** 36332,36356 ****
  682b52464ba3c1efc4293e4f2d4ba5b7  gcc/testsuite/gcc.dg/verbose-asm.c
  041fff4d324fc530a54c5034fa50048f  gcc/testsuite/gcc.dg/visibility-1.c
  ef79ece01e8a70a1ed6b1875bd44c735  gcc/testsuite/gcc.dg/visibility-10.c
! 347bd2f7ace10e120f794b49ef597bf2  gcc/testsuite/gcc.dg/visibility-11.c
  bea530927147c181b3ea7f144ea05741  gcc/testsuite/gcc.dg/visibility-12.c
  64cc72ad8168eac1afeb8e055271a670  gcc/testsuite/gcc.dg/visibility-13.c
! caa2ee921e834c028272555d0970de7d  gcc/testsuite/gcc.dg/visibility-14.c
! 0f5239ff52d1159e025dbdb706e8cc59  gcc/testsuite/gcc.dg/visibility-15.c
! 02381e2df1eb752e8fc3b321b7c086a9  gcc/testsuite/gcc.dg/visibility-16.c
! b6074fe0f316c55de7bcaaad64c8724b  gcc/testsuite/gcc.dg/visibility-17.c
! 0e698f4eed18c32693e31f1763afdb02  gcc/testsuite/gcc.dg/visibility-18.c
! 88be2905a4fe59fe3465008d405977e2  gcc/testsuite/gcc.dg/visibility-19.c
  f83d2db3e2fd97e87230a5d9dd1274b9  gcc/testsuite/gcc.dg/visibility-2.c
  eb58aa4a681a08d91397e2a11fbe81e3  gcc/testsuite/gcc.dg/visibility-20.c
  3f8f1445188e50bcf22ad7a8fc85ee2b  gcc/testsuite/gcc.dg/visibility-21.c
! c5ae38c2f0a0054b86a5f3aeb118a1b9  gcc/testsuite/gcc.dg/visibility-22.c
! 3b362be59bb82f905f9103de2993b735  gcc/testsuite/gcc.dg/visibility-23.c
  d0a344fbd6e7158b3bf4cdbb4440ef36  gcc/testsuite/gcc.dg/visibility-3.c
  8d7d13e33f78b22dd6e7c886111a31ad  gcc/testsuite/gcc.dg/visibility-4.c
  cb462f8cad9af2ba031a048a738146ab  gcc/testsuite/gcc.dg/visibility-5.c
  147b78d13d96bd122217cc7a7704e034  gcc/testsuite/gcc.dg/visibility-6.c
! 909f63c22be57c2f91473e552c08e048  gcc/testsuite/gcc.dg/visibility-7.c
  cef7070b381518da6b1a5af1d304f9f6  gcc/testsuite/gcc.dg/visibility-8.c
  46f7dd2712bb1971f3b98617e80ed59c  gcc/testsuite/gcc.dg/visibility-9.c
  51bd3363341ceb4e539e21557ec163d2  gcc/testsuite/gcc.dg/visibility-a.c
--- 38248,38272 ----
  682b52464ba3c1efc4293e4f2d4ba5b7  gcc/testsuite/gcc.dg/verbose-asm.c
  041fff4d324fc530a54c5034fa50048f  gcc/testsuite/gcc.dg/visibility-1.c
  ef79ece01e8a70a1ed6b1875bd44c735  gcc/testsuite/gcc.dg/visibility-10.c
! e7ede923095151846b43b24a358f03c3  gcc/testsuite/gcc.dg/visibility-11.c
  bea530927147c181b3ea7f144ea05741  gcc/testsuite/gcc.dg/visibility-12.c
  64cc72ad8168eac1afeb8e055271a670  gcc/testsuite/gcc.dg/visibility-13.c
! 2b40219c92efa99fcf2af9bfaaf56f4f  gcc/testsuite/gcc.dg/visibility-14.c
! 66e95ee97598f71765225e4e353971c7  gcc/testsuite/gcc.dg/visibility-15.c
! 94c0af0aeb6f6b4b871737d071e24166  gcc/testsuite/gcc.dg/visibility-16.c
! 4f54b380ae15d5a5ab2c24c0e4f14f6a  gcc/testsuite/gcc.dg/visibility-17.c
! fcefe80d362d778b71a9c6431b796a1e  gcc/testsuite/gcc.dg/visibility-18.c
! 6bb9d5fa05a13f85993dc2d49507d275  gcc/testsuite/gcc.dg/visibility-19.c
  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
  cb462f8cad9af2ba031a048a738146ab  gcc/testsuite/gcc.dg/visibility-5.c
  147b78d13d96bd122217cc7a7704e034  gcc/testsuite/gcc.dg/visibility-6.c
! cbd4ded075d4e4e1d16103f001dfb959  gcc/testsuite/gcc.dg/visibility-7.c
  cef7070b381518da6b1a5af1d304f9f6  gcc/testsuite/gcc.dg/visibility-8.c
  46f7dd2712bb1971f3b98617e80ed59c  gcc/testsuite/gcc.dg/visibility-9.c
  51bd3363341ceb4e539e21557ec163d2  gcc/testsuite/gcc.dg/visibility-a.c
*************** d2800ec511e2b3478d695416e2ca90ec  gcc/te
*** 36449,36457 ****
  a618f16e3af202f712d6cfc127c0f51d  gcc/testsuite/gcc.dg/vmx/dos-bug-1-gdb.c
  8c31a6e12629208ece747c6627759e50  gcc/testsuite/gcc.dg/vmx/dos-bug-2-gdb.c
  6a1a156aa2b71ec97b1690516e6e9563  gcc/testsuite/gcc.dg/vmx/eg-5.c
! d0f18d19c58f9a788099474faf91bb3f  gcc/testsuite/gcc.dg/vmx/extract-be-order.c
! 0b114fae046801adbcd1dbf56d29f50e  gcc/testsuite/gcc.dg/vmx/extract-vsx-be-order.c
! eaf17f85674101b5600882dc38243fc8  gcc/testsuite/gcc.dg/vmx/extract-vsx.c
  4c43f4dd229af50225814ea1bf310c5e  gcc/testsuite/gcc.dg/vmx/extract.c
  43079faac406fa6c19965bd7b5ffd05f  gcc/testsuite/gcc.dg/vmx/fft.c
  8322a206fa7dd30b037ad95c67279f6e  gcc/testsuite/gcc.dg/vmx/gcc-bug-1.c
--- 38365,38373 ----
  a618f16e3af202f712d6cfc127c0f51d  gcc/testsuite/gcc.dg/vmx/dos-bug-1-gdb.c
  8c31a6e12629208ece747c6627759e50  gcc/testsuite/gcc.dg/vmx/dos-bug-2-gdb.c
  6a1a156aa2b71ec97b1690516e6e9563  gcc/testsuite/gcc.dg/vmx/eg-5.c
! bf840eae7bacff2277f49d18ecd82bc8  gcc/testsuite/gcc.dg/vmx/extract-be-order.c
! 51875594a18d4892803d08b8dd74895d  gcc/testsuite/gcc.dg/vmx/extract-vsx-be-order.c
! 3e9057223d3f6f9a94e1cba2941fba7b  gcc/testsuite/gcc.dg/vmx/extract-vsx.c
  4c43f4dd229af50225814ea1bf310c5e  gcc/testsuite/gcc.dg/vmx/extract.c
  43079faac406fa6c19965bd7b5ffd05f  gcc/testsuite/gcc.dg/vmx/fft.c
  8322a206fa7dd30b037ad95c67279f6e  gcc/testsuite/gcc.dg/vmx/gcc-bug-1.c
*************** b2b6feca94837f5cb8c691c4060fef16  gcc/te
*** 36471,36509 ****
  2e93eb6cb35666f7b5d487045924c050  gcc/testsuite/gcc.dg/vmx/gcc-bug-g.c
  e2befcc6fe6551ddaf8c5af8ff8af9ed  gcc/testsuite/gcc.dg/vmx/gcc-bug-i.c
  abaa24fa7500a965c56cca5b81277f0f  gcc/testsuite/gcc.dg/vmx/harness.h
! 225fbe47d964737fa72d56d90f586e87  gcc/testsuite/gcc.dg/vmx/insert-be-order.c
! 9175ee91b4d6fdaffbf31b79fd6e2776  gcc/testsuite/gcc.dg/vmx/insert-vsx-be-order.c
! 5c46e639faee20461e5f5c58c3c65dd9  gcc/testsuite/gcc.dg/vmx/insert-vsx.c
  64af108d7752fb394591059e10b8e535  gcc/testsuite/gcc.dg/vmx/insert.c
  d3b05480227b07877585af8d0a518ce0  gcc/testsuite/gcc.dg/vmx/ira1.c
  30bcd6f60465176cca2c3074c112b5d6  gcc/testsuite/gcc.dg/vmx/ira2.c
  0671a52dbfeaff599fbd3b31683b8fa3  gcc/testsuite/gcc.dg/vmx/ira2a.c
  e7bfe6764f1081cf12917fc6bb429d99  gcc/testsuite/gcc.dg/vmx/ira2b.c
  b79fe506ab529c34a54312a7e9e864cf  gcc/testsuite/gcc.dg/vmx/ira2c.c
! c8064e432bef40c09f94459a233fb610  gcc/testsuite/gcc.dg/vmx/ld-be-order.c
! 5cc68493e4e387fd68cad37d4776d14c  gcc/testsuite/gcc.dg/vmx/ld-vsx-be-order.c
! e60266299c7bea997e0a6c67fa89bbb8  gcc/testsuite/gcc.dg/vmx/ld-vsx.c
  8d6c80453f3995148bde37b78ce9a8dd  gcc/testsuite/gcc.dg/vmx/ld.c
! 6b56e242fd417d9d663b35609c9bdbd2  gcc/testsuite/gcc.dg/vmx/lde-be-order.c
  1258396dbf67ebb40317211d94dc5696  gcc/testsuite/gcc.dg/vmx/lde.c
! 15abb9a3d84f8903bd08fa33c4bb5dcc  gcc/testsuite/gcc.dg/vmx/ldl-be-order.c
! 5c356d1c870e7271a4c1870c70f54806  gcc/testsuite/gcc.dg/vmx/ldl-vsx-be-order.c
! b22e613ba2712c4e8f7204eed0adc88a  gcc/testsuite/gcc.dg/vmx/ldl-vsx.c
  c3039576bdd2e286778c9c26319c1266  gcc/testsuite/gcc.dg/vmx/ldl.c
  02e4a282249f914f0c14a216ba9d4cfc  gcc/testsuite/gcc.dg/vmx/mem.c
! 6aae24591b76899daf226454ac9b1991  gcc/testsuite/gcc.dg/vmx/merge-be-order.c
! 201b16426a5ac5b3987ba0dccc6f5a71  gcc/testsuite/gcc.dg/vmx/merge-vsx-be-order.c
! 2e6a5aaa5824f852ad0030af451aeb08  gcc/testsuite/gcc.dg/vmx/merge-vsx.c
  eb7dd9debe1674f5d04a9841461e4954  gcc/testsuite/gcc.dg/vmx/merge.c
! 92e7489b4dbfd6f41f615343b76d03e9  gcc/testsuite/gcc.dg/vmx/mult-even-odd-be-order.c
  69b4a248b11c1f8cdf318024cf68f3f6  gcc/testsuite/gcc.dg/vmx/mult-even-odd.c
  b3442dce1a513e0fadd3087959cc98e2  gcc/testsuite/gcc.dg/vmx/newton-1.c
! 08ba92d37a90a3964efc9e81a01ce735  gcc/testsuite/gcc.dg/vmx/ops-long-1.c
  0ece5b66996a21bf2abdeba3d4730225  gcc/testsuite/gcc.dg/vmx/ops-long-2.c
  4f66de1e2cfbacf50c78cfce06f9032a  gcc/testsuite/gcc.dg/vmx/ops.c
! dc7c69a367e45e370ba63cd6a29882a8  gcc/testsuite/gcc.dg/vmx/pack-be-order.c
  7a3395ea24edb9768321e94484553d23  gcc/testsuite/gcc.dg/vmx/pack.c
! 0227d77cb4ed28b390aacb87d32533c5  gcc/testsuite/gcc.dg/vmx/perm-be-order.c
  720a825389f2bdbc69225675b554bc5c  gcc/testsuite/gcc.dg/vmx/perm.c
  3b4c24c7f9868d1b2dbf4a0051f1c424  gcc/testsuite/gcc.dg/vmx/pr27006.c
  5a0396a64eb86e2cdd5726c7addf1fa2  gcc/testsuite/gcc.dg/vmx/pr27842.c
--- 38387,38425 ----
  2e93eb6cb35666f7b5d487045924c050  gcc/testsuite/gcc.dg/vmx/gcc-bug-g.c
  e2befcc6fe6551ddaf8c5af8ff8af9ed  gcc/testsuite/gcc.dg/vmx/gcc-bug-i.c
  abaa24fa7500a965c56cca5b81277f0f  gcc/testsuite/gcc.dg/vmx/harness.h
! 527cf6599a79182cc83093adfe072800  gcc/testsuite/gcc.dg/vmx/insert-be-order.c
! fbda38111342a2d39546c74c54739230  gcc/testsuite/gcc.dg/vmx/insert-vsx-be-order.c
! 46cb6a37ded7714d0cb8b321149c0101  gcc/testsuite/gcc.dg/vmx/insert-vsx.c
  64af108d7752fb394591059e10b8e535  gcc/testsuite/gcc.dg/vmx/insert.c
  d3b05480227b07877585af8d0a518ce0  gcc/testsuite/gcc.dg/vmx/ira1.c
  30bcd6f60465176cca2c3074c112b5d6  gcc/testsuite/gcc.dg/vmx/ira2.c
  0671a52dbfeaff599fbd3b31683b8fa3  gcc/testsuite/gcc.dg/vmx/ira2a.c
  e7bfe6764f1081cf12917fc6bb429d99  gcc/testsuite/gcc.dg/vmx/ira2b.c
  b79fe506ab529c34a54312a7e9e864cf  gcc/testsuite/gcc.dg/vmx/ira2c.c
! 5fd629cb7f888cbd3230fa64ccbb1cc1  gcc/testsuite/gcc.dg/vmx/ld-be-order.c
! 6e1053aa8b4efc58bfebf20d7011ddcf  gcc/testsuite/gcc.dg/vmx/ld-vsx-be-order.c
! f7336ec5cf873247c0353ffb7a72f2cf  gcc/testsuite/gcc.dg/vmx/ld-vsx.c
  8d6c80453f3995148bde37b78ce9a8dd  gcc/testsuite/gcc.dg/vmx/ld.c
! bd39b01583c77f7cc7b6af9f0adc4b7c  gcc/testsuite/gcc.dg/vmx/lde-be-order.c
  1258396dbf67ebb40317211d94dc5696  gcc/testsuite/gcc.dg/vmx/lde.c
! c27b38db46ab3616b2a7354c98ca91dc  gcc/testsuite/gcc.dg/vmx/ldl-be-order.c
! 3ccbf5737c1aa31f23692c673dcd0129  gcc/testsuite/gcc.dg/vmx/ldl-vsx-be-order.c
! d7a745f9e22b5c5fb5d147a0e725f680  gcc/testsuite/gcc.dg/vmx/ldl-vsx.c
  c3039576bdd2e286778c9c26319c1266  gcc/testsuite/gcc.dg/vmx/ldl.c
  02e4a282249f914f0c14a216ba9d4cfc  gcc/testsuite/gcc.dg/vmx/mem.c
! 8724fb1b1b8237bb487114224c7fc409  gcc/testsuite/gcc.dg/vmx/merge-be-order.c
! 53e2c0a15fecb8f9dc9fa0c0ce9fd053  gcc/testsuite/gcc.dg/vmx/merge-vsx-be-order.c
! c495629752b72a7671355a830d2eda6d  gcc/testsuite/gcc.dg/vmx/merge-vsx.c
  eb7dd9debe1674f5d04a9841461e4954  gcc/testsuite/gcc.dg/vmx/merge.c
! c38efc67ddc36825e9ab5f7c1951cb60  gcc/testsuite/gcc.dg/vmx/mult-even-odd-be-order.c
  69b4a248b11c1f8cdf318024cf68f3f6  gcc/testsuite/gcc.dg/vmx/mult-even-odd.c
  b3442dce1a513e0fadd3087959cc98e2  gcc/testsuite/gcc.dg/vmx/newton-1.c
! 7ffc513bcccbd7385fc4f45ab3d8d006  gcc/testsuite/gcc.dg/vmx/ops-long-1.c
  0ece5b66996a21bf2abdeba3d4730225  gcc/testsuite/gcc.dg/vmx/ops-long-2.c
  4f66de1e2cfbacf50c78cfce06f9032a  gcc/testsuite/gcc.dg/vmx/ops.c
! c6219afefe9437f9524db76497848d9e  gcc/testsuite/gcc.dg/vmx/pack-be-order.c
  7a3395ea24edb9768321e94484553d23  gcc/testsuite/gcc.dg/vmx/pack.c
! 87d82a7d8f40f13487a7dfacce80b10c  gcc/testsuite/gcc.dg/vmx/perm-be-order.c
  720a825389f2bdbc69225675b554bc5c  gcc/testsuite/gcc.dg/vmx/perm.c
  3b4c24c7f9868d1b2dbf4a0051f1c424  gcc/testsuite/gcc.dg/vmx/pr27006.c
  5a0396a64eb86e2cdd5726c7addf1fa2  gcc/testsuite/gcc.dg/vmx/pr27842.c
*************** dc7c69a367e45e370ba63cd6a29882a8  gcc/te
*** 36511,36534 ****
  a6cbfa0e1febdc24c55462118baed2d9  gcc/testsuite/gcc.dg/vmx/spill.c
  a89c7a49191b8c215d45bfcd40dbf073  gcc/testsuite/gcc.dg/vmx/spill2.c
  4ad67e9b592e66eb6b2836bd582e41ea  gcc/testsuite/gcc.dg/vmx/spill3.c
! 1448812be20369929fc891248c3b6ed6  gcc/testsuite/gcc.dg/vmx/splat-be-order.c
! b1c794582c2b01e958c6d559ff8e4953  gcc/testsuite/gcc.dg/vmx/splat-vsx-be-order.c
! c95066c27923d81c9f58753e03bbff03  gcc/testsuite/gcc.dg/vmx/splat-vsx.c
  266739867e8f0e5420b410b6edd290e8  gcc/testsuite/gcc.dg/vmx/splat.c
! 59cdd24b90ad834a37912a1e1f47728e  gcc/testsuite/gcc.dg/vmx/st-be-order.c
! b941c40df3d5ad8d953f431d872b55fb  gcc/testsuite/gcc.dg/vmx/st-vsx-be-order.c
! 9d05b15bcc3966ce3002fc6293c26502  gcc/testsuite/gcc.dg/vmx/st-vsx.c
  53630833b841b3f5beb646fecebe43de  gcc/testsuite/gcc.dg/vmx/st.c
! 649c9af06659b1741e2dfa081c223417  gcc/testsuite/gcc.dg/vmx/ste-be-order.c
  d7c1dff498081073d4fdd36432c36b87  gcc/testsuite/gcc.dg/vmx/ste.c
! c210a8af4d138d28db225861b72ec675  gcc/testsuite/gcc.dg/vmx/stl-be-order.c
! f2606b28eca742f2e6f3ca86fffcf7cc  gcc/testsuite/gcc.dg/vmx/stl-vsx-be-order.c
! 8ad504c071f387126fb04fe8dbf293ce  gcc/testsuite/gcc.dg/vmx/stl-vsx.c
  c4b3ca8cd9535dfc22cf3942d2de6d41  gcc/testsuite/gcc.dg/vmx/stl.c
! 6f5acbc66a5ea6d66814b27b424d4e5c  gcc/testsuite/gcc.dg/vmx/sum2s-be-order.c
  90381187ab18cfc9506fd2dbe5c8fa35  gcc/testsuite/gcc.dg/vmx/sum2s.c
  b74b4229263d70abbf112c2c622f29ba  gcc/testsuite/gcc.dg/vmx/t.c
! fd4f1093a23582462ac39156e25b31aa  gcc/testsuite/gcc.dg/vmx/unpack-be-order.c
  7767fb8903ff039660d03125a12561d0  gcc/testsuite/gcc.dg/vmx/unpack.c
  45503aad478d338e7fe457e2a68fced4  gcc/testsuite/gcc.dg/vmx/varargs-1.c
  15ebdb6bd2f562d6d29fd6dcfabbef19  gcc/testsuite/gcc.dg/vmx/varargs-2.c
--- 38427,38450 ----
  a6cbfa0e1febdc24c55462118baed2d9  gcc/testsuite/gcc.dg/vmx/spill.c
  a89c7a49191b8c215d45bfcd40dbf073  gcc/testsuite/gcc.dg/vmx/spill2.c
  4ad67e9b592e66eb6b2836bd582e41ea  gcc/testsuite/gcc.dg/vmx/spill3.c
! 01d30071ab5a1115a6061d17fe20d7e3  gcc/testsuite/gcc.dg/vmx/splat-be-order.c
! cea8a370ae5130366314e8f35b5dfd32  gcc/testsuite/gcc.dg/vmx/splat-vsx-be-order.c
! 276c42b2d0c952a9adb2ae67712bf08f  gcc/testsuite/gcc.dg/vmx/splat-vsx.c
  266739867e8f0e5420b410b6edd290e8  gcc/testsuite/gcc.dg/vmx/splat.c
! eb39445d91a949d9dc7ae80caa1cf4f5  gcc/testsuite/gcc.dg/vmx/st-be-order.c
! a8b2c84bdfb5cf23aa54d11fe891100e  gcc/testsuite/gcc.dg/vmx/st-vsx-be-order.c
! dff0e6ad705951c1dbfc49660debda1f  gcc/testsuite/gcc.dg/vmx/st-vsx.c
  53630833b841b3f5beb646fecebe43de  gcc/testsuite/gcc.dg/vmx/st.c
! db2d7ced81849d5064b2667c0893c4b1  gcc/testsuite/gcc.dg/vmx/ste-be-order.c
  d7c1dff498081073d4fdd36432c36b87  gcc/testsuite/gcc.dg/vmx/ste.c
! b7bcf600abb8933c575b2c4fa5375a64  gcc/testsuite/gcc.dg/vmx/stl-be-order.c
! 08eb84336996942befdb5db23ee7da21  gcc/testsuite/gcc.dg/vmx/stl-vsx-be-order.c
! c0410b4fc9ef79f564f7a54f86783aaa  gcc/testsuite/gcc.dg/vmx/stl-vsx.c
  c4b3ca8cd9535dfc22cf3942d2de6d41  gcc/testsuite/gcc.dg/vmx/stl.c
! 109d73fca1166e3ca2798a61765f0405  gcc/testsuite/gcc.dg/vmx/sum2s-be-order.c
  90381187ab18cfc9506fd2dbe5c8fa35  gcc/testsuite/gcc.dg/vmx/sum2s.c
  b74b4229263d70abbf112c2c622f29ba  gcc/testsuite/gcc.dg/vmx/t.c
! 443eaf5cdd163a6907022f374788e8a5  gcc/testsuite/gcc.dg/vmx/unpack-be-order.c
  7767fb8903ff039660d03125a12561d0  gcc/testsuite/gcc.dg/vmx/unpack.c
  45503aad478d338e7fe457e2a68fced4  gcc/testsuite/gcc.dg/vmx/varargs-1.c
  15ebdb6bd2f562d6d29fd6dcfabbef19  gcc/testsuite/gcc.dg/vmx/varargs-2.c
*************** fd4f1093a23582462ac39156e25b31aa  gcc/te
*** 36538,36545 ****
  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
! f1145bba5abf5eeac593d54df1ebe205  gcc/testsuite/gcc.dg/vmx/vmx.exp
! 86f972b1649ec583ecedec34f5b742ec  gcc/testsuite/gcc.dg/vmx/vsums-be-order.c
  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
--- 38454,38461 ----
  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
! 39c268c56ea85abb1206b24f2c2e3620  gcc/testsuite/gcc.dg/vmx/vmx.exp
! 98e377480da2fb01b349ad40080a1f8b  gcc/testsuite/gcc.dg/vmx/vsums-be-order.c
  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
*************** d1bf1d3ce2ba861eed9a056b68c8a7b9  gcc/te
*** 36567,36573 ****
  f5b5cb2b526a46cc84be22a60b28910d  gcc/testsuite/gcc.dg/vshift-7.c
  9357989e44cd23b5fe7fef931df63976  gcc/testsuite/gcc.dg/vxworks/initpri1.c
  bfeaf9e0fd9a2f701c3352b80a357589  gcc/testsuite/gcc.dg/vxworks/initpri2.c
! cd338c3f3e1d312c1d412f71babcf1bd  gcc/testsuite/gcc.dg/vxworks/vxworks.exp
  807831bd928d8bca1ad6f704a5f898aa  gcc/testsuite/gcc.dg/warn-1.c
  be8f7b50176d3cc112e9b45dfbff569c  gcc/testsuite/gcc.dg/warn-addr-cmp.c
  4fa5ad62e3c2258f30b689370761ebf9  gcc/testsuite/gcc.dg/warn-nsstring.c
--- 38483,38489 ----
  f5b5cb2b526a46cc84be22a60b28910d  gcc/testsuite/gcc.dg/vshift-7.c
  9357989e44cd23b5fe7fef931df63976  gcc/testsuite/gcc.dg/vxworks/initpri1.c
  bfeaf9e0fd9a2f701c3352b80a357589  gcc/testsuite/gcc.dg/vxworks/initpri2.c
! f5fb07e68ea4a2e63f5a714268d3fa55  gcc/testsuite/gcc.dg/vxworks/vxworks.exp
  807831bd928d8bca1ad6f704a5f898aa  gcc/testsuite/gcc.dg/warn-1.c
  be8f7b50176d3cc112e9b45dfbff569c  gcc/testsuite/gcc.dg/warn-addr-cmp.c
  4fa5ad62e3c2258f30b689370761ebf9  gcc/testsuite/gcc.dg/warn-nsstring.c
*************** be8f7b50176d3cc112e9b45dfbff569c  gcc/te
*** 36575,36610 ****
  8c4274546261eadb1410524bcdc26c4d  gcc/testsuite/gcc.dg/wchar_t-1.c
  f2cc2a4270e9964959b2a5f3df5cdaae  gcc/testsuite/gcc.dg/wchar_t-2.c
  6d5c8895ee44fda66aecce3882adfa2b  gcc/testsuite/gcc.dg/weak/typeof-2.c
! a59c2d944b3324be164da32c5f61ba96  gcc/testsuite/gcc.dg/weak/weak-1.c
  5b030d8bcb22dedd984e8d8dae17cfb6  gcc/testsuite/gcc.dg/weak/weak-10.c
  121bd4b7463864effe08a934bc490b0d  gcc/testsuite/gcc.dg/weak/weak-11.c
! 1dbb823a9723db1eb3f7760df0da44c5  gcc/testsuite/gcc.dg/weak/weak-12.c
  fc79cd4804afe5fc2b7f140f5eae482d  gcc/testsuite/gcc.dg/weak/weak-13.c
  2dbf1902b4b321c5bf3cfc37eae03a68  gcc/testsuite/gcc.dg/weak/weak-14.c
! f94135fe1f9fa1a934ff600b5e3a7539  gcc/testsuite/gcc.dg/weak/weak-15.c
! a6690b19084663f8aa9c88dfef18642b  gcc/testsuite/gcc.dg/weak/weak-16.c
  99ed81e57fd8a9986faf9263996177f8  gcc/testsuite/gcc.dg/weak/weak-17.c
  b1053beb6c83d0b7ad775bdb6d738748  gcc/testsuite/gcc.dg/weak/weak-18.c
! 6b397ca04b71885968f0f4d6d2282de0  gcc/testsuite/gcc.dg/weak/weak-2.c
! 305b13395450b523428b4e0800e92612  gcc/testsuite/gcc.dg/weak/weak-3.c
! 8f4033f875094c42739884ff1adaa6ad  gcc/testsuite/gcc.dg/weak/weak-4.c
! 228ece82480cc3cb1d8c8f0a8633a8b3  gcc/testsuite/gcc.dg/weak/weak-5.c
  b7dc9ca29b0c2fb0c11b45350fbe20ac  gcc/testsuite/gcc.dg/weak/weak-6.c
  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
! 049a963645404a548a6dcbc83a189d66  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
  c6a61511e6fb0917ffba55a76df61339  gcc/testsuite/gcc.dg/winline-1.c
! 9e530f3f784e2873726409ba083a1469  gcc/testsuite/gcc.dg/winline-10.c
! 93e86cd8a918ac47cdaf892af0607695  gcc/testsuite/gcc.dg/winline-2.c
! 88b2c2ea5607938bfde9fff9e294afbe  gcc/testsuite/gcc.dg/winline-3.c
  d33178bb6a6aec3d8484747201cd2df2  gcc/testsuite/gcc.dg/winline-5.c
  999e3e552ec089e493feb5c3b8206c70  gcc/testsuite/gcc.dg/winline-6.c
  888069c3c61ce25944c72cd52d7f9ada  gcc/testsuite/gcc.dg/winline-7.c
! 3d0865850d901df474fd21d750058ae4  gcc/testsuite/gcc.dg/winline-9.c
  59f7a248eb2e13835a3ecc5302c389a2  gcc/testsuite/gcc.dg/wint_t-1.c
  6a9b477321a41d850c75a5d52f5c1dd2  gcc/testsuite/gcc.dg/wmul-1.c
  0608c380e23cc21f1a8c8141d8def366  gcc/testsuite/gcc.dg/wtr-aggr-init-1.c
--- 38491,38526 ----
  8c4274546261eadb1410524bcdc26c4d  gcc/testsuite/gcc.dg/wchar_t-1.c
  f2cc2a4270e9964959b2a5f3df5cdaae  gcc/testsuite/gcc.dg/wchar_t-2.c
  6d5c8895ee44fda66aecce3882adfa2b  gcc/testsuite/gcc.dg/weak/typeof-2.c
! cd6fc4b503907cb791718355b2e8b13e  gcc/testsuite/gcc.dg/weak/weak-1.c
  5b030d8bcb22dedd984e8d8dae17cfb6  gcc/testsuite/gcc.dg/weak/weak-10.c
  121bd4b7463864effe08a934bc490b0d  gcc/testsuite/gcc.dg/weak/weak-11.c
! 0b5c36c90b3afe98de584e49343a4f31  gcc/testsuite/gcc.dg/weak/weak-12.c
  fc79cd4804afe5fc2b7f140f5eae482d  gcc/testsuite/gcc.dg/weak/weak-13.c
  2dbf1902b4b321c5bf3cfc37eae03a68  gcc/testsuite/gcc.dg/weak/weak-14.c
! 42293fde198a48077e2c7cda6144ca53  gcc/testsuite/gcc.dg/weak/weak-15.c
! e0a91183b53de4db07731d70464e0514  gcc/testsuite/gcc.dg/weak/weak-16.c
  99ed81e57fd8a9986faf9263996177f8  gcc/testsuite/gcc.dg/weak/weak-17.c
  b1053beb6c83d0b7ad775bdb6d738748  gcc/testsuite/gcc.dg/weak/weak-18.c
! c32e0266898e6811b8bbf0141c1fa093  gcc/testsuite/gcc.dg/weak/weak-2.c
! 066ca7b525a2f599c76092cab2208a79  gcc/testsuite/gcc.dg/weak/weak-3.c
! 227fc9b36c4ef2834f15e27c78fcc8e6  gcc/testsuite/gcc.dg/weak/weak-4.c
! 534e6df4374a0c278ccdb1d809e6da8f  gcc/testsuite/gcc.dg/weak/weak-5.c
  b7dc9ca29b0c2fb0c11b45350fbe20ac  gcc/testsuite/gcc.dg/weak/weak-6.c
  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
! 43b6de0bd45d7184194fd47b7d3ce621  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
  c6a61511e6fb0917ffba55a76df61339  gcc/testsuite/gcc.dg/winline-1.c
! 1fa21f7052553ca6dd42ae79b4e26a0b  gcc/testsuite/gcc.dg/winline-10.c
! a15fd6e57876c1630526049305bb1218  gcc/testsuite/gcc.dg/winline-2.c
! e537e8c4cf99b530eb42ca0a3e870ae4  gcc/testsuite/gcc.dg/winline-3.c
  d33178bb6a6aec3d8484747201cd2df2  gcc/testsuite/gcc.dg/winline-5.c
  999e3e552ec089e493feb5c3b8206c70  gcc/testsuite/gcc.dg/winline-6.c
  888069c3c61ce25944c72cd52d7f9ada  gcc/testsuite/gcc.dg/winline-7.c
! 7ef3005b6b6a3b98993c34dd4de5feed  gcc/testsuite/gcc.dg/winline-9.c
  59f7a248eb2e13835a3ecc5302c389a2  gcc/testsuite/gcc.dg/wint_t-1.c
  6a9b477321a41d850c75a5d52f5c1dd2  gcc/testsuite/gcc.dg/wmul-1.c
  0608c380e23cc21f1a8c8141d8def366  gcc/testsuite/gcc.dg/wtr-aggr-init-1.c
*************** fde5cbed4304481836e4888bd782a081  gcc/te
*** 36626,36652 ****
  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
! 0cfdec9c5f2b48e631907531d51ec652  gcc/testsuite/gcc.misc-tests/acker1.exp
  71d3ee0645552a8ac482152d2cf671b1  gcc/testsuite/gcc.misc-tests/arm-isr.c
! a9c1bc32a998fae209d5624c7b5193eb  gcc/testsuite/gcc.misc-tests/arm-isr.exp
  69ee82e02b642cb6edfac2cec4b99756  gcc/testsuite/gcc.misc-tests/bprob-1.c
! f518f799be11856d2873be113760c75d  gcc/testsuite/gcc.misc-tests/bprob-2.c
! bda23ee6b57f87dda94a6347f1a5627e  gcc/testsuite/gcc.misc-tests/bprob.exp
! 9f2bc8663b7bfaea5d18dd08d72d1e08  gcc/testsuite/gcc.misc-tests/dectest.exp
  a11bded9860644075434da1f07b7f1bf  gcc/testsuite/gcc.misc-tests/dhry.c
! 83819cae13eca37219e1c5305093c2a0  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
  c400cc0e03e4317110d582fdba04ace0  gcc/testsuite/gcc.misc-tests/gcov-10b.c
  0c8ac613f2d2a35706fd7c8b7b16a1a9  gcc/testsuite/gcc.misc-tests/gcov-11.c
  eee8f00567cf54ebbed65a4f71c7d314  gcc/testsuite/gcc.misc-tests/gcov-12.c
! 45cc7bd04ea4218bfb8fb24783b926ee  gcc/testsuite/gcc.misc-tests/gcov-13.c
  91c5005b1b38df67c1f35c1fa5ed34b7  gcc/testsuite/gcc.misc-tests/gcov-14.c
  a7fcf55fbb07ad31be551305d543313e  gcc/testsuite/gcc.misc-tests/gcov-15.c
  a19cb340410a6420dbacef02fec4bcd8  gcc/testsuite/gcc.misc-tests/gcov-16.c
  7a8ab4c1f62f1462575863cae613404b  gcc/testsuite/gcc.misc-tests/gcov-2.c
! 95f736db1045ebd2bcc69cdfad244b96  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
--- 38542,38571 ----
  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
! 1d0149d184aeb9367af19d22f8443020  gcc/testsuite/gcc.misc-tests/acker1.exp
  71d3ee0645552a8ac482152d2cf671b1  gcc/testsuite/gcc.misc-tests/arm-isr.c
! e8c796022106395886f4171f0cc02491  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
! c3c72d4cc1665ec569a1857577f52187  gcc/testsuite/gcc.misc-tests/bprob.exp
! 2c2de7b17358a132d8e6cc3cf418ef3b  gcc/testsuite/gcc.misc-tests/dectest.exp
  a11bded9860644075434da1f07b7f1bf  gcc/testsuite/gcc.misc-tests/dhry.c
! 4c564ac66bc7988a5c50ddbc23ab24ab  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
  c400cc0e03e4317110d582fdba04ace0  gcc/testsuite/gcc.misc-tests/gcov-10b.c
  0c8ac613f2d2a35706fd7c8b7b16a1a9  gcc/testsuite/gcc.misc-tests/gcov-11.c
  eee8f00567cf54ebbed65a4f71c7d314  gcc/testsuite/gcc.misc-tests/gcov-12.c
! 1aac355a176cb811b951b73ea58ef6c7  gcc/testsuite/gcc.misc-tests/gcov-13.c
  91c5005b1b38df67c1f35c1fa5ed34b7  gcc/testsuite/gcc.misc-tests/gcov-14.c
  a7fcf55fbb07ad31be551305d543313e  gcc/testsuite/gcc.misc-tests/gcov-15.c
  a19cb340410a6420dbacef02fec4bcd8  gcc/testsuite/gcc.misc-tests/gcov-16.c
+ 90ae2485842728f278e979faa45ad805  gcc/testsuite/gcc.misc-tests/gcov-17.c
+ 70c6f6b4d1974332d8e93bc9a3457028  gcc/testsuite/gcc.misc-tests/gcov-18.c
+ 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
*************** a19cb340410a6420dbacef02fec4bcd8  gcc/te
*** 36654,36689 ****
  5324617bdeb58cd08b3e16f20f9e3c50  gcc/testsuite/gcc.misc-tests/gcov-7.c
  cd07c3504059efe7fb7533158e061864  gcc/testsuite/gcc.misc-tests/gcov-8.c
  c80d5a6473bfd6e4b6e87a183c6d05b5  gcc/testsuite/gcc.misc-tests/gcov-9.c
! edb25e8d22d3120c6e14e37c9183bbba  gcc/testsuite/gcc.misc-tests/gcov.exp
  d0c60992e0ef331502b84f8ee13cb818  gcc/testsuite/gcc.misc-tests/gcovpart-13b.c
  81666b39eb2c4be184e978ec60da212f  gcc/testsuite/gcc.misc-tests/godump-1.c
! 89e1337abe77618e23f7eb73f0ebfa5b  gcc/testsuite/gcc.misc-tests/godump.exp
! 3f631c31c7a627c3fcc76431125ded72  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
! 57c034255d15b0b40a322c2172db7e70  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
! 2282adbbd214bb11ac0e658396850001  gcc/testsuite/gcc.misc-tests/linkage.exp
  1d8fa0a1210ed4c4bf0ff4dfa959f060  gcc/testsuite/gcc.misc-tests/matrix1.c
! 3348f2a182db51f8ab238415ddb4cd8b  gcc/testsuite/gcc.misc-tests/matrix1.exp
  b45579fdac6008721502ddecb5df29d8  gcc/testsuite/gcc.misc-tests/mg-2.c
! 2a4f5538308362f753f2adb48a3094ca  gcc/testsuite/gcc.misc-tests/mg-2.exp
  fb7a4e029ce05eea8ba0f03f9033caa2  gcc/testsuite/gcc.misc-tests/mg.c
! b62125a102104b44d4baff43d698ef03  gcc/testsuite/gcc.misc-tests/mg.exp
! d3187d5296e607eda9422e18f8bf4147  gcc/testsuite/gcc.misc-tests/options.exp
! 71c2a8d288c11115aadddcc64aa4bc35  gcc/testsuite/gcc.misc-tests/output.exp
  37d75aade49dd3329803e520456ae8a6  gcc/testsuite/gcc.misc-tests/sieve.c
! 9c21bb46bcbff3096f2e466c23127999  gcc/testsuite/gcc.misc-tests/sieve.exp
  f0e0d52dbb689249f8d057f00e4c65e9  gcc/testsuite/gcc.misc-tests/sort2.c
! 30c978dc12affc4df4221e84c47a2d1b  gcc/testsuite/gcc.misc-tests/sort2.exp
  8031dd3c171877e36f7163b73fe68210  gcc/testsuite/gcc.target/aarch64/121127.c
! cf3e98e5d2a5201f7020e48cf66a1bd8  gcc/testsuite/gcc.target/aarch64/_Float16_1.c
! 629f326ec8561299f471eecc493a5d88  gcc/testsuite/gcc.target/aarch64/_Float16_2.c
! df89fe6d255e0880e2a58546b1c3afee  gcc/testsuite/gcc.target/aarch64/_Float16_3.c
! 4b6394d1c42bd438c93b6339a4ba2ea2  gcc/testsuite/gcc.target/aarch64/aapcs64/aapcs64.exp
  f05f22145b214a49c59e1ca8e560b549  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
--- 38573,38608 ----
  5324617bdeb58cd08b3e16f20f9e3c50  gcc/testsuite/gcc.misc-tests/gcov-7.c
  cd07c3504059efe7fb7533158e061864  gcc/testsuite/gcc.misc-tests/gcov-8.c
  c80d5a6473bfd6e4b6e87a183c6d05b5  gcc/testsuite/gcc.misc-tests/gcov-9.c
! 078a31e8494c4a155cb3196ee823d4fc  gcc/testsuite/gcc.misc-tests/gcov.exp
  d0c60992e0ef331502b84f8ee13cb818  gcc/testsuite/gcc.misc-tests/gcovpart-13b.c
  81666b39eb2c4be184e978ec60da212f  gcc/testsuite/gcc.misc-tests/godump-1.c
! 4fa670a3d13131cffa5a772f5643aedf  gcc/testsuite/gcc.misc-tests/godump.exp
! 1e6566d26d277f4cc2b686f0245e7eb1  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
! 4a742b54ef09c6a2619c19ff815a9784  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
! 43d0adf369e3f43405038837a7f02b84  gcc/testsuite/gcc.misc-tests/linkage.exp
  1d8fa0a1210ed4c4bf0ff4dfa959f060  gcc/testsuite/gcc.misc-tests/matrix1.c
! 30b19d86d344d7a85d2c49738e64760b  gcc/testsuite/gcc.misc-tests/matrix1.exp
  b45579fdac6008721502ddecb5df29d8  gcc/testsuite/gcc.misc-tests/mg-2.c
! cc4163948550fd5476aa312b8ec53101  gcc/testsuite/gcc.misc-tests/mg-2.exp
  fb7a4e029ce05eea8ba0f03f9033caa2  gcc/testsuite/gcc.misc-tests/mg.c
! 75a411b52f357fd2a3de5dcf8c166564  gcc/testsuite/gcc.misc-tests/mg.exp
! 552f939d878b67b289fe770e6422dfd5  gcc/testsuite/gcc.misc-tests/options.exp
! 3ad468ae27bf4a5c0c51fca8b669925c  gcc/testsuite/gcc.misc-tests/output.exp
  37d75aade49dd3329803e520456ae8a6  gcc/testsuite/gcc.misc-tests/sieve.c
! 52171b9bccef2320ec36a04298a1b652  gcc/testsuite/gcc.misc-tests/sieve.exp
  f0e0d52dbb689249f8d057f00e4c65e9  gcc/testsuite/gcc.misc-tests/sort2.c
! 76f7794d16a2d58e11cefb99c4c7a014  gcc/testsuite/gcc.misc-tests/sort2.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
! 2e08f6d25902370213c69b80931810d5  gcc/testsuite/gcc.target/aarch64/aapcs64/aapcs64.exp
  f05f22145b214a49c59e1ca8e560b549  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
*************** d63d966901b8e8b51837691645468a2c  gcc/te
*** 36764,36773 ****
  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
! c96316e2759f5a7a89eddf4fa4819885  gcc/testsuite/gcc.target/aarch64/aarch64.exp
  ae513bfb2896c38de994944b104fb7c8  gcc/testsuite/gcc.target/aarch64/abs_1.c
  8a6aed21d2622bf72389f22f09d8bd4b  gcc/testsuite/gcc.target/aarch64/abs_2.c
! 80266be6b4cd08c5467ae72a115a547d  gcc/testsuite/gcc.target/aarch64/acle/acle.exp
  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
--- 38683,38692 ----
  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
! 8ac32ff987b1c8be1d9917384b55dc7e  gcc/testsuite/gcc.target/aarch64/aarch64.exp
  ae513bfb2896c38de994944b104fb7c8  gcc/testsuite/gcc.target/aarch64/abs_1.c
  8a6aed21d2622bf72389f22f09d8bd4b  gcc/testsuite/gcc.target/aarch64/abs_2.c
! c385423259692374fc35dcc769e3e012  gcc/testsuite/gcc.target/aarch64/acle/acle.exp
  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
*************** e2b1388fba47b95c8b27a3e1a29953ff  gcc/te
*** 36783,36789 ****
  caf80fb3defd2872fa7d7dc3fa721878  gcc/testsuite/gcc.target/aarch64/adds2.c
  d3b34ba619d3a13e0be732931b59d14b  gcc/testsuite/gcc.target/aarch64/adds3.c
  55ff9765cb94d7817c4c42421ab1deaa  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/README
! 8f48c0793f41587fbeba288c35823c5c  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/advsimd-intrinsics.exp
  8176930d5a5910f13adfd0b30d197c86  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/arm-neon-ref.h
  1779e453b1e4e03ff4baf3556a6f44b7  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/binary_op.inc
  ec22fbdd8271e68304a64fd92533fcc2  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/binary_op_float.inc
--- 38702,38708 ----
  caf80fb3defd2872fa7d7dc3fa721878  gcc/testsuite/gcc.target/aarch64/adds2.c
  d3b34ba619d3a13e0be732931b59d14b  gcc/testsuite/gcc.target/aarch64/adds3.c
  55ff9765cb94d7817c4c42421ab1deaa  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/README
! 980c4c1889b22c6220fb83b04f86039d  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/advsimd-intrinsics.exp
  8176930d5a5910f13adfd0b30d197c86  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/arm-neon-ref.h
  1779e453b1e4e03ff4baf3556a6f44b7  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/binary_op.inc
  ec22fbdd8271e68304a64fd92533fcc2  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/binary_op_float.inc
*************** efedd50642c6644cb6f531aba682095e  gcc/te
*** 36907,36915 ****
--- 38826,38840 ----
  946d8b27f15e0958922744a3b08ecc22  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcvtph_u64_f16_1.c
  deb9860e1a64c53b3c341799f3fbe87d  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdiv_f16_1.c
  cc8862bbb06bf4f811fe1be4bca2eeb1  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdivh_f16_1.c
+ 0642560d65fb69f44e04f928f89cf649  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdot-compile-2.c
+ 298528aca47fbbb7a718b3ccb0681cad  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdot-compile.c
+ 98b620c87b8330b25df7df28239c0345  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdot-exec.c
  f95bc564630d78ac2ae192d33e22ab6f  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdup-vmov.c
  e38c6733cf2f8332a32fce46c615bda5  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdup_lane.c
  ea71a22386fece68695333d3e375fba9  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vduph_lane.c
+ b30f56c46834b427133c97c6f19cda62  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vect-dot-qi.h
+ c420faac5ffe22b014c1eebc369a2dd9  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vect-dot-s8.c
+ a665238fa8ed1e3294809774f0d8ad6f  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vect-dot-u8.c
  8e5488aacd9e2173213588e82d8f4cc5  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/veor.c
  5effb937e3a6536a7ab8b3827a229479  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vext.c
  aa5b72cf9598620463c83cd108d502de  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vfma.c
*************** ab7951fe68fbc1de8a165fc90b1f997f  gcc/te
*** 36929,36934 ****
--- 38854,38860 ----
  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
  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
  4a3b2cc33e21de39715b4dedc1f668d2  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld2_lane_f64_indices_1.c
*************** d8b72b5db867378f7de9c71835585ede  gcc/te
*** 37261,37266 ****
--- 39187,39195 ----
  e79c5d685820bc76d9daf4e435221433  gcc/testsuite/gcc.target/aarch64/arm_align_max_stack_pwr.c
  da5ae024816af2672c169da7b18465a8  gcc/testsuite/gcc.target/aarch64/ashltidisi.c
  dcc9c2b184e5339c1d80d3a05b09ded3  gcc/testsuite/gcc.target/aarch64/asm-1.c
+ df4261abff5d11ed565343cbcd36e8e6  gcc/testsuite/gcc.target/aarch64/asm-2.c
+ 1097a2bdcf64e47b5ae556a4b94d5043  gcc/testsuite/gcc.target/aarch64/asm-3.c
+ a5475847de61efdab06cd4fa43cf0e12  gcc/testsuite/gcc.target/aarch64/asm-4.c
  371e1b24318679345c92f1610a479910  gcc/testsuite/gcc.target/aarch64/asm-adder-clobber-lr.c
  82342c21bec311241ac523023fc12855  gcc/testsuite/gcc.target/aarch64/asm-adder-no-clobber-lr.c
  4243a23aa0a384578b2d05d3f99be487  gcc/testsuite/gcc.target/aarch64/assembler_arch_1.c
*************** af0b27430d9e312c60204776cba60655  gcc/te
*** 37291,37302 ****
--- 39220,39236 ----
  c235f1a320c9f6cf63748d5723db1a74  gcc/testsuite/gcc.target/aarch64/atomic-op-seq_cst.x
  dcf9fa7d8656dd9e4563f8c6b3ae9c31  gcc/testsuite/gcc.target/aarch64/atomic-op-short.c
  e7b8ba1ea741c7a9f79ac8356c698d78  gcc/testsuite/gcc.target/aarch64/atomic-op-short.x
+ 9a5d27d284cfc9229991b0175962bc9c  gcc/testsuite/gcc.target/aarch64/atomic_cmp_exchange_zero_reg_1.c
+ 57a554d249ba7d431cdbbc1b8e9e2021  gcc/testsuite/gcc.target/aarch64/atomic_cmp_exchange_zero_strong_1.c
  61dac314ba6a1629bed37f7dc73024de  gcc/testsuite/gcc.target/aarch64/bfxil_1.c
  6378518f0a698c129d49f6f5eb229d63  gcc/testsuite/gcc.target/aarch64/bfxil_2.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
+ cb2d59ab293179fb8d00b44de02f2556  gcc/testsuite/gcc.target/aarch64/bsl-idiom.c
  82ebc34e179e256a16633eeed8f5931d  gcc/testsuite/gcc.target/aarch64/builtin-bswap-1.c
  33f370cd2a619d45e68ba5747504d94e  gcc/testsuite/gcc.target/aarch64/builtin-bswap-2.c
  7672c0b4ecf1b0d5ae002b0acd50406d  gcc/testsuite/gcc.target/aarch64/c-output-template-2.c
*************** c4ae2a7bf845c772f094152df5a530e4  gcc/te
*** 37304,37309 ****
--- 39238,39244 ----
  d578e201f80bef3bb20982775c575c47  gcc/testsuite/gcc.target/aarch64/c-output-template-4.c
  2cd370a67d59632871c3a25dd8578909  gcc/testsuite/gcc.target/aarch64/c-output-template.c
  989fcce0ec4fb5aff0755dfb63c09104  gcc/testsuite/gcc.target/aarch64/ccmp_1.c
+ c944449cf5b356cfed6ac847f005db22  gcc/testsuite/gcc.target/aarch64/ccmp_2.c
  210a06b80ccb6a87c0693b42719d3182  gcc/testsuite/gcc.target/aarch64/cinc_common_1.c
  f9b7d6532dbf0b85e4f2d34e60d8eba9  gcc/testsuite/gcc.target/aarch64/clrsb.c
  06b1d011104c741b0b515b92676f6c71  gcc/testsuite/gcc.target/aarch64/clz.c
*************** f9b7d6532dbf0b85e4f2d34e60d8eba9  gcc/te
*** 37311,37321 ****
--- 39246,39261 ----
  dcbe68009cf519fec972930376254917  gcc/testsuite/gcc.target/aarch64/cmn-neg2.c
  0013b203d7b2fa644eafbb691861f93f  gcc/testsuite/gcc.target/aarch64/cmn.c
  38832e78052c9cd035696780b482c0eb  gcc/testsuite/gcc.target/aarch64/cmp-1.c
+ 9076c91dd96afebc8e0bbbc789c574fb  gcc/testsuite/gcc.target/aarch64/cmp-2.c
  30f11d88013aed3451d807e4b5ca2590  gcc/testsuite/gcc.target/aarch64/cmp.c
+ 4ba06f31ec1c28eaeb88b7a0a8160041  gcc/testsuite/gcc.target/aarch64/cmp_shifted_reg_1.c
+ ee389eae370cb027260e737bcb692a7d  gcc/testsuite/gcc.target/aarch64/cmpelim_mult_uses_1.c
  7b5054f497a38f6f6603006f2d632a05  gcc/testsuite/gcc.target/aarch64/cmpimm_branch_1.c
  2750359abb653ac649405e9099ca1643  gcc/testsuite/gcc.target/aarch64/cmpimm_cset_1.c
  a077fb5869242c4b9fabc6d141faa9ec  gcc/testsuite/gcc.target/aarch64/combine_bfi_1.c
  78f94a7be65d717b8374c731aed0783e  gcc/testsuite/gcc.target/aarch64/cond_op_imm_1.c
+ 3811d4cc6f8390eed0076b9d9707162e  gcc/testsuite/gcc.target/aarch64/construct_lane_zero_1.c
+ 00a4ff8c32a4c83ca879cf99e246a37d  gcc/testsuite/gcc.target/aarch64/copysign-bsl.c
  c73cc232fbaefd2daefb49e11b874722  gcc/testsuite/gcc.target/aarch64/copysign_1.c
  e98cf41b7514e2efc8676f309b7ae2ed  gcc/testsuite/gcc.target/aarch64/copysign_2.c
  f0d278d66f3c6d099e299ada3c0f2f5a  gcc/testsuite/gcc.target/aarch64/cpu-diagnostics-1.c
*************** eebd6ca7c2a0fe9846bf88388a00d172  gcc/te
*** 37330,37340 ****
  daa118ed7835c32ea71c32e65d22689f  gcc/testsuite/gcc.target/aarch64/csneg-1.c
  f15d1ff83066971ce9a42593ae9e147c  gcc/testsuite/gcc.target/aarch64/ctz.c
  66e80d99734f8cef1f2093c52336c4c2  gcc/testsuite/gcc.target/aarch64/cvtf_1.c
! a3fe2b5cb90e5a815cac837604ad4859  gcc/testsuite/gcc.target/aarch64/dwarf-cfa-reg.c
  337c39f85c95ad488bb585665bf18a76  gcc/testsuite/gcc.target/aarch64/eh_return.c
  0d0e2a489d3255344941fbdef5cd849a  gcc/testsuite/gcc.target/aarch64/eon_1.c
  4703bff993ef8bad5cc876cd178c66da  gcc/testsuite/gcc.target/aarch64/extend.c
  0b2712c817ff082c0b56ddf2137cd33f  gcc/testsuite/gcc.target/aarch64/extr.c
  e81304c89391c1aada178179ec2fbdca  gcc/testsuite/gcc.target/aarch64/f16_movs_1.c
  00e6e92ff613394f0a74acad3a55eb46  gcc/testsuite/gcc.target/aarch64/fabd.c
  49ec90613c7d01f51b54ae0134ad9626  gcc/testsuite/gcc.target/aarch64/fcsel_1.c
--- 39270,39283 ----
  daa118ed7835c32ea71c32e65d22689f  gcc/testsuite/gcc.target/aarch64/csneg-1.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
! 5a0fb82365f402f7b5e039bc723a3020  gcc/testsuite/gcc.target/aarch64/dwarf-cfa-reg.c
  337c39f85c95ad488bb585665bf18a76  gcc/testsuite/gcc.target/aarch64/eh_return.c
  0d0e2a489d3255344941fbdef5cd849a  gcc/testsuite/gcc.target/aarch64/eon_1.c
  4703bff993ef8bad5cc876cd178c66da  gcc/testsuite/gcc.target/aarch64/extend.c
  0b2712c817ff082c0b56ddf2137cd33f  gcc/testsuite/gcc.target/aarch64/extr.c
+ b2a0db2b66117c325c2f3c36d69a149f  gcc/testsuite/gcc.target/aarch64/f16_mov_immediate_1.c
+ afa01fc91db20d1a7f572288e356bb92  gcc/testsuite/gcc.target/aarch64/f16_mov_immediate_2.c
  e81304c89391c1aada178179ec2fbdca  gcc/testsuite/gcc.target/aarch64/f16_movs_1.c
  00e6e92ff613394f0a74acad3a55eb46  gcc/testsuite/gcc.target/aarch64/fabd.c
  49ec90613c7d01f51b54ae0134ad9626  gcc/testsuite/gcc.target/aarch64/fcsel_1.c
*************** d8490d90b76efc832c69a53db68fa258  gcc/te
*** 37356,37365 ****
  534298ae99af0bc40d5cb3c8e2b7dfc4  gcc/testsuite/gcc.target/aarch64/fcvt_uint_float_double3.c
  9d4e077d729a329bd156af74740977d7  gcc/testsuite/gcc.target/aarch64/fcvt_uint_float_double4.c
  86d107005c385fe3591907b81522aaf8  gcc/testsuite/gcc.target/aarch64/ffs.c
  bd03ecf6b19690f6dc1bbbd227d20b37  gcc/testsuite/gcc.target/aarch64/floatdihf2_1.c
  d1278d287cb5cdd487a5dc5eb1a39f07  gcc/testsuite/gcc.target/aarch64/fmadd.c
! df2a15bfe75b934a23673128ef1c42af  gcc/testsuite/gcc.target/aarch64/fmaxmin.c
  364dff39f9c714a65e7781c3067c70f6  gcc/testsuite/gcc.target/aarch64/fmla_intrinsic_1.c
  8b352bc578ee7274c01d5814ca2aca13  gcc/testsuite/gcc.target/aarch64/fmls_intrinsic_1.c
  c4fd6df43c9e9e5b7239b8df0bebf345  gcc/testsuite/gcc.target/aarch64/fmovd-zero-mem.c
  92f126169f4b80f84e3a069a088c9866  gcc/testsuite/gcc.target/aarch64/fmovd-zero-reg.c
--- 39299,39311 ----
  534298ae99af0bc40d5cb3c8e2b7dfc4  gcc/testsuite/gcc.target/aarch64/fcvt_uint_float_double3.c
  9d4e077d729a329bd156af74740977d7  gcc/testsuite/gcc.target/aarch64/fcvt_uint_float_double4.c
  86d107005c385fe3591907b81522aaf8  gcc/testsuite/gcc.target/aarch64/ffs.c
+ abddc9f1fca0b1871d2b5fa9f425d10a  gcc/testsuite/gcc.target/aarch64/fix_trunc1.c
  bd03ecf6b19690f6dc1bbbd227d20b37  gcc/testsuite/gcc.target/aarch64/floatdihf2_1.c
+ e72513b4caa62260940a267106d0a423  gcc/testsuite/gcc.target/aarch64/flt_mov_immediate_1.c
  d1278d287cb5cdd487a5dc5eb1a39f07  gcc/testsuite/gcc.target/aarch64/fmadd.c
! 09f48eba4ef72a066deca3509e7bedca  gcc/testsuite/gcc.target/aarch64/fmaxmin.c
  364dff39f9c714a65e7781c3067c70f6  gcc/testsuite/gcc.target/aarch64/fmla_intrinsic_1.c
+ a1c65ee205fc9435b83f0955d7d41618  gcc/testsuite/gcc.target/aarch64/fmls.c
  8b352bc578ee7274c01d5814ca2aca13  gcc/testsuite/gcc.target/aarch64/fmls_intrinsic_1.c
  c4fd6df43c9e9e5b7239b8df0bebf345  gcc/testsuite/gcc.target/aarch64/fmovd-zero-mem.c
  92f126169f4b80f84e3a069a088c9866  gcc/testsuite/gcc.target/aarch64/fmovd-zero-reg.c
*************** c3c69a71f2670cdbe2550868228987d2  gcc/te
*** 37370,37376 ****
  177e01eebca0354fdecdfea8902fd651  gcc/testsuite/gcc.target/aarch64/fmovld-zero-mem.c
  601316c07515259ff9862a3619b4369d  gcc/testsuite/gcc.target/aarch64/fmovld-zero-reg.c
  1b65f09f40144de16a3ef9f82ee84e8e  gcc/testsuite/gcc.target/aarch64/fmul_fcvt_1.c
! d3df3d2c51f2dd39fe8eddcdfcef6aa2  gcc/testsuite/gcc.target/aarch64/fmul_fcvt_2.c
  bb0946f86cfba46571a291b6570efa74  gcc/testsuite/gcc.target/aarch64/fmul_intrinsic_1.c
  b41dba1046447c932cc183fe90f50467  gcc/testsuite/gcc.target/aarch64/fnmadd-fastmath.c
  b22aa9cc27c6d5f12963d16ea8b99803  gcc/testsuite/gcc.target/aarch64/fnmul-1.c
--- 39316,39322 ----
  177e01eebca0354fdecdfea8902fd651  gcc/testsuite/gcc.target/aarch64/fmovld-zero-mem.c
  601316c07515259ff9862a3619b4369d  gcc/testsuite/gcc.target/aarch64/fmovld-zero-reg.c
  1b65f09f40144de16a3ef9f82ee84e8e  gcc/testsuite/gcc.target/aarch64/fmul_fcvt_1.c
! 9c8230d12decbc2037ad11b8e6be1ce2  gcc/testsuite/gcc.target/aarch64/fmul_fcvt_2.c
  bb0946f86cfba46571a291b6570efa74  gcc/testsuite/gcc.target/aarch64/fmul_intrinsic_1.c
  b41dba1046447c932cc183fe90f50467  gcc/testsuite/gcc.target/aarch64/fnmadd-fastmath.c
  b22aa9cc27c6d5f12963d16ea8b99803  gcc/testsuite/gcc.target/aarch64/fnmul-1.c
*************** a1212235242dd12baac6ac6d3f0f04ad  gcc/te
*** 37379,37386 ****
  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
! 15d1474d3c9b06e49d3146a54d572b2b  gcc/testsuite/gcc.target/aarch64/fp16/fp16.exp
  c789e3d353f9e2287a4c9ef36dffcb2f  gcc/testsuite/gcc.target/aarch64/fp16/set_zero_1.c
  2e2572d6fadd7421a17d8a41cca49d30  gcc/testsuite/gcc.target/aarch64/fpcr_fpsr_1.c
  81d3b6315279d49bd6ff13f1b22d348d  gcc/testsuite/gcc.target/aarch64/frint.x
  9c2fa782435fadcb543f6b3244f77262  gcc/testsuite/gcc.target/aarch64/frint_double.c
--- 39325,39348 ----
  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
! c4b00154c3f50d527491d1ca66abf2a8  gcc/testsuite/gcc.target/aarch64/fp16/fp16.exp
  c789e3d353f9e2287a4c9ef36dffcb2f  gcc/testsuite/gcc.target/aarch64/fp16/set_zero_1.c
+ 4703ee181104fcd63a59316f3d15600b  gcc/testsuite/gcc.target/aarch64/fp16_fmul_high.h
+ 7aa945158b0a4b5f86014c0b7d857a22  gcc/testsuite/gcc.target/aarch64/fp16_fmul_high_1.c
+ 8c25ecbe1cac7289cc47092ac2818a39  gcc/testsuite/gcc.target/aarch64/fp16_fmul_high_2.c
+ 92e0d7f03306def4d207a36a5a5e1276  gcc/testsuite/gcc.target/aarch64/fp16_fmul_high_3.c
+ 3f266fd84fbb555b0f21aed6995ebcd5  gcc/testsuite/gcc.target/aarch64/fp16_fmul_lane_high.h
+ 042f07e3b15d408344aa6bb8db63abc0  gcc/testsuite/gcc.target/aarch64/fp16_fmul_lane_high_1.c
+ eca83ccc42e5f4a8732f30f85fb3ac3e  gcc/testsuite/gcc.target/aarch64/fp16_fmul_lane_high_2.c
+ 2ea9d001f46117406d4d68cdc62d4156  gcc/testsuite/gcc.target/aarch64/fp16_fmul_lane_high_3.c
+ 039045c4cbfd7f0f94fcf4f15938e506  gcc/testsuite/gcc.target/aarch64/fp16_fmul_lane_low.h
+ bdc942fdfb175929a49893b9b5aafbd5  gcc/testsuite/gcc.target/aarch64/fp16_fmul_lane_low_1.c
+ 0cab4b743d3ac37aa5e99b71e76a3744  gcc/testsuite/gcc.target/aarch64/fp16_fmul_lane_low_2.c
+ 764ea8059ebadcd2cc4f43df0b5482fc  gcc/testsuite/gcc.target/aarch64/fp16_fmul_lane_low_3.c
+ 17a1057c6005828f8c14b765c8342497  gcc/testsuite/gcc.target/aarch64/fp16_fmul_low.h
+ 3a51bc956931a83f86f2fb8422758c04  gcc/testsuite/gcc.target/aarch64/fp16_fmul_low_1.c
+ 602fd0a712df13af4dfbdfc0b7723ff8  gcc/testsuite/gcc.target/aarch64/fp16_fmul_low_2.c
+ 6f492fcf4f1cc058726e290429594a38  gcc/testsuite/gcc.target/aarch64/fp16_fmul_low_3.c
  2e2572d6fadd7421a17d8a41cca49d30  gcc/testsuite/gcc.target/aarch64/fpcr_fpsr_1.c
  81d3b6315279d49bd6ff13f1b22d348d  gcc/testsuite/gcc.target/aarch64/frint.x
  9c2fa782435fadcb543f6b3244f77262  gcc/testsuite/gcc.target/aarch64/frint_double.c
*************** ed2b38705092e36a5984e33769be3d5a  gcc/te
*** 37391,37412 ****
  f4f77daf6e39081c7812d0e8c9b46a77  gcc/testsuite/gcc.target/aarch64/got_mem_hoist_1.c
  818995f657f497ee60b80e64df6087a6  gcc/testsuite/gcc.target/aarch64/gtu_to_ltu_cmp_1.c
  5fd4c4637acf41fecfb9bd79e8372c44  gcc/testsuite/gcc.target/aarch64/gtu_to_ltu_cmp_2.c
  b90f3600518fbc46af4cd4bd1cdb7186  gcc/testsuite/gcc.target/aarch64/ifcvt_multiple_sets_subreg_1.c
  af0e32f53ec629289269248abb106c2e  gcc/testsuite/gcc.target/aarch64/iinline-attr-1.c
  aa9097deb2901881188486bdf9eb3343  gcc/testsuite/gcc.target/aarch64/index.c
  d9b886efc5c9ee269ba2de62c28bd44b  gcc/testsuite/gcc.target/aarch64/insv_1.c
  a897ae01d807185bd4ca7f1587e181d9  gcc/testsuite/gcc.target/aarch64/insv_2.c
  c4d33c58db6c2e77df14b83ac56be1ec  gcc/testsuite/gcc.target/aarch64/ldp_stp_1.c
  a942ef178dbff47e07909da75486489e  gcc/testsuite/gcc.target/aarch64/ldp_stp_2.c
  a8da8b18aa0d7e9598ba65e8e634ad45  gcc/testsuite/gcc.target/aarch64/ldp_stp_3.c
  cf3224c75efba2a7cdab28293aa78058  gcc/testsuite/gcc.target/aarch64/ldp_stp_4.c
  3e9da679293bb72b52679467aee0f2c9  gcc/testsuite/gcc.target/aarch64/ldp_stp_5.c
  2e89613bc3014a7c541e4842fef81025  gcc/testsuite/gcc.target/aarch64/ldp_stp_unaligned_1.c
  cc9a9ea2da09d4b15bb44f3466819c58  gcc/testsuite/gcc.target/aarch64/ldp_vec_64_1.c
  aacf72675fc499d7008f0afd92fba8a8  gcc/testsuite/gcc.target/aarch64/legitimize_stack_var_before_reload_1.c
! ebea57c39b13827cebec71743b2c9b88  gcc/testsuite/gcc.target/aarch64/long_branch_1.c
  e0426a33d4f559c4d94019530c6033af  gcc/testsuite/gcc.target/aarch64/lr_free_1.c
  a5cfe0849b43ef498cda6a872be26cb6  gcc/testsuite/gcc.target/aarch64/lr_free_2.c
  7693bd5e719d20476ed31986d797a71e  gcc/testsuite/gcc.target/aarch64/madd_after_asm_1.c
  fad3c0348ac5305f1f65f45b6795520c  gcc/testsuite/gcc.target/aarch64/mgeneral-regs_1.c
  80b38fd4a1e87ab02dfb4d2c5dea978b  gcc/testsuite/gcc.target/aarch64/mgeneral-regs_2.c
--- 39353,39381 ----
  f4f77daf6e39081c7812d0e8c9b46a77  gcc/testsuite/gcc.target/aarch64/got_mem_hoist_1.c
  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
  b90f3600518fbc46af4cd4bd1cdb7186  gcc/testsuite/gcc.target/aarch64/ifcvt_multiple_sets_subreg_1.c
  af0e32f53ec629289269248abb106c2e  gcc/testsuite/gcc.target/aarch64/iinline-attr-1.c
  aa9097deb2901881188486bdf9eb3343  gcc/testsuite/gcc.target/aarch64/index.c
+ 2b13cf8445a95980ea035811da6abe95  gcc/testsuite/gcc.target/aarch64/inline-lrint_1.c
+ caaafb769b844ad26e03a5f739c93732  gcc/testsuite/gcc.target/aarch64/inline-lrint_2.c
  d9b886efc5c9ee269ba2de62c28bd44b  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
  c4d33c58db6c2e77df14b83ac56be1ec  gcc/testsuite/gcc.target/aarch64/ldp_stp_1.c
  a942ef178dbff47e07909da75486489e  gcc/testsuite/gcc.target/aarch64/ldp_stp_2.c
  a8da8b18aa0d7e9598ba65e8e634ad45  gcc/testsuite/gcc.target/aarch64/ldp_stp_3.c
  cf3224c75efba2a7cdab28293aa78058  gcc/testsuite/gcc.target/aarch64/ldp_stp_4.c
  3e9da679293bb72b52679467aee0f2c9  gcc/testsuite/gcc.target/aarch64/ldp_stp_5.c
  2e89613bc3014a7c541e4842fef81025  gcc/testsuite/gcc.target/aarch64/ldp_stp_unaligned_1.c
+ 29215c380dc3c39d0bb516b829dd0503  gcc/testsuite/gcc.target/aarch64/ldp_stp_unaligned_2.c
  cc9a9ea2da09d4b15bb44f3466819c58  gcc/testsuite/gcc.target/aarch64/ldp_vec_64_1.c
  aacf72675fc499d7008f0afd92fba8a8  gcc/testsuite/gcc.target/aarch64/legitimize_stack_var_before_reload_1.c
! 75b9e47e034140e3e91bf7ed48db1aad  gcc/testsuite/gcc.target/aarch64/load_v2vec_lanes_1.c
! 16de8ed84724234cc0c899222f576867  gcc/testsuite/gcc.target/aarch64/long_branch_1.c
  e0426a33d4f559c4d94019530c6033af  gcc/testsuite/gcc.target/aarch64/lr_free_1.c
  a5cfe0849b43ef498cda6a872be26cb6  gcc/testsuite/gcc.target/aarch64/lr_free_2.c
+ 9ca4f25b97ec89a6e60a1484f11dc946  gcc/testsuite/gcc.target/aarch64/lrint-matherr.h
  7693bd5e719d20476ed31986d797a71e  gcc/testsuite/gcc.target/aarch64/madd_after_asm_1.c
  fad3c0348ac5305f1f65f45b6795520c  gcc/testsuite/gcc.target/aarch64/mgeneral-regs_1.c
  80b38fd4a1e87ab02dfb4d2c5dea978b  gcc/testsuite/gcc.target/aarch64/mgeneral-regs_2.c
*************** cb35ae597b395ee5d00d96a082dfbd6a  gcc/te
*** 37425,37430 ****
--- 39394,39400 ----
  6714e4053de7fc3d6c40dec08a0ca1d1  gcc/testsuite/gcc.target/aarch64/mod_256.x
  4eaf2d9267fe13f12a85ce4cf0fa7ce3  gcc/testsuite/gcc.target/aarch64/movdi_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
  f8350260fcb74634d2769a0902d1bac1  gcc/testsuite/gcc.target/aarch64/mul_intrinsic_1.c
  b9c785119e80b786b5898ebaa7db0700  gcc/testsuite/gcc.target/aarch64/mult-synth_1.c
*************** b8aed2f1d41cb75f276523cd82c36bbb  gcc/te
*** 37438,37447 ****
--- 39408,39420 ----
  98aa8533c6a9248fe295572b2512fac7  gcc/testsuite/gcc.target/aarch64/neg_abs_1.c
  c8c679e672173f52fbc0d86757b5c05a  gcc/testsuite/gcc.target/aarch64/negs.c
  face3a8c6631236fedad3dce5526b762  gcc/testsuite/gcc.target/aarch64/ngc.c
+ fb19dd57034e67da13f2a5b22815fcc5  gcc/testsuite/gcc.target/aarch64/no-inline-lrint_1.c
+ 56f1cae94d74d605f3127ff54df58e5e  gcc/testsuite/gcc.target/aarch64/no-inline-lrint_2.c
  a8bddbe3eece3831dd80ac4cdf09f85e  gcc/testsuite/gcc.target/aarch64/nofp_1.c
  16f10ec9128105b137b7139eec150171  gcc/testsuite/gcc.target/aarch64/noplt_1.c
  a08d94353bf55af1d22441a406d830ca  gcc/testsuite/gcc.target/aarch64/noplt_2.c
  5adbb32c5ec104efca72061e09229b8f  gcc/testsuite/gcc.target/aarch64/noplt_3.c
+ 2ba9e0951fadcf5ce5f2eab080c09a68  gcc/testsuite/gcc.target/aarch64/orr_imm_1.c
  03797fef944cc43885e1c80c25f368e4  gcc/testsuite/gcc.target/aarch64/pic-constantpool1.c
  8084b7f8a23ba9dc5bb389d20d29ec1b  gcc/testsuite/gcc.target/aarch64/pic-small.c
  dca6942a94e55d4ebfd32c380eb279ff  gcc/testsuite/gcc.target/aarch64/pic-symrefplus.c
*************** bb1c62f8a710fcb925274d5655630eba  gcc/te
*** 37451,37464 ****
  e668fb9e0d32efadd671247467dc90db  gcc/testsuite/gcc.target/aarch64/pr58460.c
  9023f817c07ddec673c5b546525fc184  gcc/testsuite/gcc.target/aarch64/pr60034.c
  d014963609e7593b422c8bb81d6c432d  gcc/testsuite/gcc.target/aarch64/pr60580_1.c
- e3c168f45423111f89f16b75f8973c92  gcc/testsuite/gcc.target/aarch64/pr60675.C
  d2cd8f6effeef5d9ac5a4ce081648274  gcc/testsuite/gcc.target/aarch64/pr60697.c
  2cd11476b07e206416f5d88420120ea5  gcc/testsuite/gcc.target/aarch64/pr61325.c
  d8cfefc063686118062e9fc3b774907b  gcc/testsuite/gcc.target/aarch64/pr62040.c
! 03a49570ccde1e568907a8f9485fff2f  gcc/testsuite/gcc.target/aarch64/pr62178.c
  26fcfb82395e818d8d0bcfe702b2e752  gcc/testsuite/gcc.target/aarch64/pr62262.c
  5b090e5d951a21826fd629be991b5411  gcc/testsuite/gcc.target/aarch64/pr62308.c
! 717f5745659dd0e2adbecdda29cdb2d2  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
--- 39424,39436 ----
  e668fb9e0d32efadd671247467dc90db  gcc/testsuite/gcc.target/aarch64/pr58460.c
  9023f817c07ddec673c5b546525fc184  gcc/testsuite/gcc.target/aarch64/pr60034.c
  d014963609e7593b422c8bb81d6c432d  gcc/testsuite/gcc.target/aarch64/pr60580_1.c
  d2cd8f6effeef5d9ac5a4ce081648274  gcc/testsuite/gcc.target/aarch64/pr60697.c
  2cd11476b07e206416f5d88420120ea5  gcc/testsuite/gcc.target/aarch64/pr61325.c
  d8cfefc063686118062e9fc3b774907b  gcc/testsuite/gcc.target/aarch64/pr62040.c
! 81b91fd5722c4fcc2e6b5a4674f00582  gcc/testsuite/gcc.target/aarch64/pr62178.c
  26fcfb82395e818d8d0bcfe702b2e752  gcc/testsuite/gcc.target/aarch64/pr62262.c
  5b090e5d951a21826fd629be991b5411  gcc/testsuite/gcc.target/aarch64/pr62308.c
! eb7699fd4bcb30cd65dbe116d6318897  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
*************** b8f90423eef94b7a240f40a79251eabf  gcc/te
*** 37475,37516 ****
  b28ad75ae030029f6a891f12b81c0ebf  gcc/testsuite/gcc.target/aarch64/pr68674.c
  329d53aefd3093993ccfa5ded9884c15  gcc/testsuite/gcc.target/aarch64/pr69245_1.c
  065e6ab62eb109b24a2126e76d2447a1  gcc/testsuite/gcc.target/aarch64/pr69245_2.c
! c78c0b4bf1f9d71f6874b0be55f3f7b8  gcc/testsuite/gcc.target/aarch64/pr70044.c
  9357327a0e7073dde1ca415f103c86f2  gcc/testsuite/gcc.target/aarch64/pr70120-1.c
  0eb5fd232a04413cc6f2bd5fd4c3c47d  gcc/testsuite/gcc.target/aarch64/pr70120-2.c
  61ea50a51a3ed94b38acd7cd026cd077  gcc/testsuite/gcc.target/aarch64/pr70120-3.c
  eb748e6de8945b3aa35ce6b22a073829  gcc/testsuite/gcc.target/aarch64/pr70398.c
  e7efe396ef16dbc7526785247ead6d84  gcc/testsuite/gcc.target/aarch64/pr70809_1.c
  1acf0bf1d4e41e413852c39aabdc7e52  gcc/testsuite/gcc.target/aarch64/pr71016.c
! fb3d2863d5e55c030bd48d378729ed26  gcc/testsuite/gcc.target/aarch64/pr71727-2.c
  1eb58525eb6a200ff2a40aa35b5a8706  gcc/testsuite/gcc.target/aarch64/pr71727.c
  c8c052e3ffb361fbe4b0043b1414c58b  gcc/testsuite/gcc.target/aarch64/pr78038.c
  ed6579d962ab6988afc3e526e6c51275  gcc/testsuite/gcc.target/aarch64/pr78255.c
  f9f37ccfc032535c8079deb6b916aca7  gcc/testsuite/gcc.target/aarch64/pr78382.c
  15de7f015106f4b337262f146247f86f  gcc/testsuite/gcc.target/aarch64/pr78561.c
! f6bde67b38258da0213fe94e0328086e  gcc/testsuite/gcc.target/aarch64/pr78733.c
! f5c871a487631f83cd217777a75ab65c  gcc/testsuite/gcc.target/aarch64/pr79041-2.c
  aa2dfd18bc6784e0bc7ee00c3ef8561a  gcc/testsuite/gcc.target/aarch64/pr80295.c
! 03c2d3e09e76becf66ec361f70b99040  gcc/testsuite/gcc.target/aarch64/pr81414.C
  d3e6defa85b5cd4bb506306377e59a53  gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_1.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
  c3cfe230344f0bb5131ab8ee419f3f25  gcc/testsuite/gcc.target/aarch64/reload-valid-spoff.c
  b8713f5bdd3827163442bd73c49cbc4f  gcc/testsuite/gcc.target/aarch64/return_address_sign_1.c
  383d1bd4066b6347dbfeaf38f40a3b37  gcc/testsuite/gcc.target/aarch64/return_address_sign_2.c
  6553cd15f11ce6f7868033f32ec6fd7f  gcc/testsuite/gcc.target/aarch64/return_address_sign_3.c
  70b0a417548eb5574b49ff1b37acde43  gcc/testsuite/gcc.target/aarch64/rev16_1.c
  a6b0a3d46a5a5170f93dc87f2d7171b5  gcc/testsuite/gcc.target/aarch64/ror.c
! d7f7fb810b189f2f4fd29a0fc74bd1a6  gcc/testsuite/gcc.target/aarch64/saddw-1.c
! ee53d03567a81a3f12e5fa8c288e1f6b  gcc/testsuite/gcc.target/aarch64/saddw-2.c
  dff5614a018a2765dcb90ecb31013713  gcc/testsuite/gcc.target/aarch64/sbc.c
  3b9354b9a15c8705b143711e5a0eb3cd  gcc/testsuite/gcc.target/aarch64/scalar-mov.c
  b2b9b4bede373ccce7eb9870526caf86  gcc/testsuite/gcc.target/aarch64/scalar-vca.c
  427ed489ba24941942821c3136fee702  gcc/testsuite/gcc.target/aarch64/scalar_intrinsics.c
  961d957558702f3a32901bf52b170534  gcc/testsuite/gcc.target/aarch64/scalar_shift_1.c
  f62a4cd99af4f919eb92ce0f2ca54a9c  gcc/testsuite/gcc.target/aarch64/sha1_1.c
  fe26f8621abd85653f2c73821030ac0f  gcc/testsuite/gcc.target/aarch64/sha256_1.c
  8944288dbff8e1e27c9948e6640f93d5  gcc/testsuite/gcc.target/aarch64/shift_wide_invalid_1.c
  1581fca9833dd741d7b8f91b93455158  gcc/testsuite/gcc.target/aarch64/shrink_wrap_symbol_ref_1.c
  6aef5c8c46a252fab1f15291c3545ce4  gcc/testsuite/gcc.target/aarch64/simd/ext_f32.x
--- 39447,39504 ----
  b28ad75ae030029f6a891f12b81c0ebf  gcc/testsuite/gcc.target/aarch64/pr68674.c
  329d53aefd3093993ccfa5ded9884c15  gcc/testsuite/gcc.target/aarch64/pr69245_1.c
  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
  0eb5fd232a04413cc6f2bd5fd4c3c47d  gcc/testsuite/gcc.target/aarch64/pr70120-2.c
  61ea50a51a3ed94b38acd7cd026cd077  gcc/testsuite/gcc.target/aarch64/pr70120-3.c
  eb748e6de8945b3aa35ce6b22a073829  gcc/testsuite/gcc.target/aarch64/pr70398.c
  e7efe396ef16dbc7526785247ead6d84  gcc/testsuite/gcc.target/aarch64/pr70809_1.c
  1acf0bf1d4e41e413852c39aabdc7e52  gcc/testsuite/gcc.target/aarch64/pr71016.c
! 4aa462ffa5914a7dd8ae0a2383731a49  gcc/testsuite/gcc.target/aarch64/pr71727-2.c
  1eb58525eb6a200ff2a40aa35b5a8706  gcc/testsuite/gcc.target/aarch64/pr71727.c
  c8c052e3ffb361fbe4b0043b1414c58b  gcc/testsuite/gcc.target/aarch64/pr78038.c
  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
! 03c2d3e09e76becf66ec361f70b99040  gcc/testsuite/gcc.target/aarch64/pr81414.c
! 61509ec6c4ac78da70369f76797f43be  gcc/testsuite/gcc.target/aarch64/pr81647.c
! 83d999153e7b99641d3f07b79d3dd12f  gcc/testsuite/gcc.target/aarch64/pr83370.c
! d1d34ae8edbb84b094c7f011971b77f4  gcc/testsuite/gcc.target/aarch64/pr84252.c
  d3e6defa85b5cd4bb506306377e59a53  gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_1.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/testsuite/gcc.target/aarch64/prfm_imm_offset_1.c
+ 48d743cb731002c6490f875730d154df  gcc/testsuite/gcc.target/aarch64/reg-alloc-1.c
  c3cfe230344f0bb5131ab8ee419f3f25  gcc/testsuite/gcc.target/aarch64/reload-valid-spoff.c
  b8713f5bdd3827163442bd73c49cbc4f  gcc/testsuite/gcc.target/aarch64/return_address_sign_1.c
  383d1bd4066b6347dbfeaf38f40a3b37  gcc/testsuite/gcc.target/aarch64/return_address_sign_2.c
  6553cd15f11ce6f7868033f32ec6fd7f  gcc/testsuite/gcc.target/aarch64/return_address_sign_3.c
  70b0a417548eb5574b49ff1b37acde43  gcc/testsuite/gcc.target/aarch64/rev16_1.c
  a6b0a3d46a5a5170f93dc87f2d7171b5  gcc/testsuite/gcc.target/aarch64/ror.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
  3b9354b9a15c8705b143711e5a0eb3cd  gcc/testsuite/gcc.target/aarch64/scalar-mov.c
  b2b9b4bede373ccce7eb9870526caf86  gcc/testsuite/gcc.target/aarch64/scalar-vca.c
  427ed489ba24941942821c3136fee702  gcc/testsuite/gcc.target/aarch64/scalar_intrinsics.c
  961d957558702f3a32901bf52b170534  gcc/testsuite/gcc.target/aarch64/scalar_shift_1.c
+ b0af57cfaade3214be10647c1c8b885d  gcc/testsuite/gcc.target/aarch64/sdiv_costs_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
+ 93f6bdedd82e167c1767a90f1eea8a2b  gcc/testsuite/gcc.target/aarch64/sha3.h
+ 17aff82335684ee2a5bba482e8d85053  gcc/testsuite/gcc.target/aarch64/sha3_1.c
+ fe28495be358648e62c17a2ef5ad9a33  gcc/testsuite/gcc.target/aarch64/sha3_2.c
+ ae8fe1477954bd4757ef35bfe12f34d4  gcc/testsuite/gcc.target/aarch64/sha3_3.c
  8944288dbff8e1e27c9948e6640f93d5  gcc/testsuite/gcc.target/aarch64/shift_wide_invalid_1.c
  1581fca9833dd741d7b8f91b93455158  gcc/testsuite/gcc.target/aarch64/shrink_wrap_symbol_ref_1.c
  6aef5c8c46a252fab1f15291c3545ce4  gcc/testsuite/gcc.target/aarch64/simd/ext_f32.x
*************** fed45a34e01f1c902eebbb4525b2026f  gcc/te
*** 37560,37567 ****
  504f31916b3f274eea930e1fc7da2e3c  gcc/testsuite/gcc.target/aarch64/simd/int_comparisons.x
  22d82645ad53737e5bfbe2ba9b98cc05  gcc/testsuite/gcc.target/aarch64/simd/int_comparisons_1.c
  f1c9e2aa3c435c9efdc1ea83da4e1eeb  gcc/testsuite/gcc.target/aarch64/simd/int_comparisons_2.c
! d9b62f210ac9646b640c253c66f1726a  gcc/testsuite/gcc.target/aarch64/simd/pr67896.C
! 53cd7a6545555345b7ac0c57e414f35b  gcc/testsuite/gcc.target/aarch64/simd/simd.exp
  644c7b6ceda9f8b60fb839e127602e3c  gcc/testsuite/gcc.target/aarch64/simd/vbsl_f64_1.c
  e10e947e9f1b8d492f7629bc92f27019  gcc/testsuite/gcc.target/aarch64/simd/vcage_f64.c
  90da7e6d78027945448c660af03a4cb2  gcc/testsuite/gcc.target/aarch64/simd/vcagt_f64.c
--- 39548,39555 ----
  504f31916b3f274eea930e1fc7da2e3c  gcc/testsuite/gcc.target/aarch64/simd/int_comparisons.x
  22d82645ad53737e5bfbe2ba9b98cc05  gcc/testsuite/gcc.target/aarch64/simd/int_comparisons_1.c
  f1c9e2aa3c435c9efdc1ea83da4e1eeb  gcc/testsuite/gcc.target/aarch64/simd/int_comparisons_2.c
! f2791d55a2c9ed7182a54a406810cf47  gcc/testsuite/gcc.target/aarch64/simd/pr67896.c
! db0cd5965f283887324fd96155bc02aa  gcc/testsuite/gcc.target/aarch64/simd/simd.exp
  644c7b6ceda9f8b60fb839e127602e3c  gcc/testsuite/gcc.target/aarch64/simd/vbsl_f64_1.c
  e10e947e9f1b8d492f7629bc92f27019  gcc/testsuite/gcc.target/aarch64/simd/vcage_f64.c
  90da7e6d78027945448c660af03a4cb2  gcc/testsuite/gcc.target/aarch64/simd/vcagt_f64.c
*************** dd36add81066e4503365ed4a9f1c9150  gcc/te
*** 37583,37588 ****
--- 39571,39577 ----
  a652b7b70ee3d8d31de4c77fd8a4e1e8  gcc/testsuite/gcc.target/aarch64/simd/vcvtn_u64_f64_1.c
  b85188df577a6b8c4ea30329b38769d8  gcc/testsuite/gcc.target/aarch64/simd/vcvtp_s64_f64_1.c
  deca043ed23c518b74a2792701289981  gcc/testsuite/gcc.target/aarch64/simd/vcvtp_u64_f64_1.c
+ 6dbd14fdcf24b2d17c35bdaf069688a6  gcc/testsuite/gcc.target/aarch64/simd/vect_str_zero.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
*************** d694c3804921a8382e639f7dec1f9c1b  gcc/te
*** 37609,37615 ****
  a675084fb22386c9d27ff4bd900947af  gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_u32_indices_1.c
  83cf956b7cb17956c744f7db38fe3416  gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_u64_indices_1.c
  099bad0585432f164e86079dbf03595e  gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_u8_indices_1.c
! 472bda8e7191cf103f54f791bb7e3c5a  gcc/testsuite/gcc.target/aarch64/simd/vminmaxnm_1.c
  d3471e819805085e851c6ef99b412fc9  gcc/testsuite/gcc.target/aarch64/simd/vmla_f64.c
  76bd294b136cfc9375488944eb7f3ba0  gcc/testsuite/gcc.target/aarch64/simd/vmls_f64.c
  4390f49e359ac2d7ee2baec3f4b6967c  gcc/testsuite/gcc.target/aarch64/simd/vmul_elem_1.c
--- 39598,39605 ----
  a675084fb22386c9d27ff4bd900947af  gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_u32_indices_1.c
  83cf956b7cb17956c744f7db38fe3416  gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_u64_indices_1.c
  099bad0585432f164e86079dbf03595e  gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_u8_indices_1.c
! 402f69c526859444eac69ec5d29715ab  gcc/testsuite/gcc.target/aarch64/simd/vminmaxnm_1.c
! e101fae335b7ee05e94f44945ad9e568  gcc/testsuite/gcc.target/aarch64/simd/vmla_elem_1.c
  d3471e819805085e851c6ef99b412fc9  gcc/testsuite/gcc.target/aarch64/simd/vmla_f64.c
  76bd294b136cfc9375488944eb7f3ba0  gcc/testsuite/gcc.target/aarch64/simd/vmls_f64.c
  4390f49e359ac2d7ee2baec3f4b6967c  gcc/testsuite/gcc.target/aarch64/simd/vmul_elem_1.c
*************** eb612e50dff956594dedc023c01c005d  gcc/te
*** 37932,37955 ****
  91d02599c3437c09a7b9841ceadb46bf  gcc/testsuite/gcc.target/aarch64/simd/vzipu8_1.c
  96b414deb2ef664ef0e319c9d099a140  gcc/testsuite/gcc.target/aarch64/singleton_intrinsics_1.c
  1720e6906e4df69467a464d77453cbb9  gcc/testsuite/gcc.target/aarch64/sisd-shft-neg_1.c
! 455587eb1a0621a211be850068cc6332  gcc/testsuite/gcc.target/aarch64/spellcheck_1.c
! 154d9afa7341e3bcbb80168d66852e9c  gcc/testsuite/gcc.target/aarch64/spellcheck_2.c
! 36feeae173fb46ec0e578b7de1eebd9a  gcc/testsuite/gcc.target/aarch64/spellcheck_3.c
  a57e93f49fe6f1a48df38771d9abbf38  gcc/testsuite/gcc.target/aarch64/spellcheck_4.c
  22cee0636aa904fc467889fc245c6d36  gcc/testsuite/gcc.target/aarch64/spellcheck_5.c
  1050cc9c099b5f03fbf3bbc52a745b0b  gcc/testsuite/gcc.target/aarch64/spellcheck_6.c
  512465aa769914ac35eb1d0a4232a211  gcc/testsuite/gcc.target/aarch64/sshr64_1.c
! 94089b1dd039a0429f716965bd6514ee  gcc/testsuite/gcc.target/aarch64/stack-checking.c
  e60080b5e2fe845d07811566ce955b35  gcc/testsuite/gcc.target/aarch64/store-pair-1.c
  b8c2c1180004b93a6595ce5210822124  gcc/testsuite/gcc.target/aarch64/store_repeating_constant_1.c
  fa57c8801f6408a8a60441b14264d643  gcc/testsuite/gcc.target/aarch64/store_repeating_constant_2.c
  2b3b2d71a1eeaa42d801c6f3133c4919  gcc/testsuite/gcc.target/aarch64/stp_vec_64_1.c
  adb1c4e7d709c64ebafff36700e610bf  gcc/testsuite/gcc.target/aarch64/struct_return.c
  49024de201ed5116d85217d7038dead6  gcc/testsuite/gcc.target/aarch64/subs.c
  834e46ea541b400f3d3b542aec361454  gcc/testsuite/gcc.target/aarch64/subs1.c
  16dce9591d585c221f8f8466df8e75ab  gcc/testsuite/gcc.target/aarch64/subs2.c
  97a1f4ce89f62836b1d1758b1679bf32  gcc/testsuite/gcc.target/aarch64/subs3.c
  341dc11479190709551f13dffa234d0c  gcc/testsuite/gcc.target/aarch64/subsp.c
  73fe9f34e24b7bf2ac8540192183e8b8  gcc/testsuite/gcc.target/aarch64/symbol-range-tiny.c
  b6625ef2348772fa5f93e609061f2bf3  gcc/testsuite/gcc.target/aarch64/symbol-range.c
  fcee3b359fdc1a2150ff421e442f6265  gcc/testsuite/gcc.target/aarch64/sync-comp-swap.c
--- 39922,40288 ----
  91d02599c3437c09a7b9841ceadb46bf  gcc/testsuite/gcc.target/aarch64/simd/vzipu8_1.c
  96b414deb2ef664ef0e319c9d099a140  gcc/testsuite/gcc.target/aarch64/singleton_intrinsics_1.c
  1720e6906e4df69467a464d77453cbb9  gcc/testsuite/gcc.target/aarch64/sisd-shft-neg_1.c
! 95e880a9b2777120f2cedeadb9eff8ee  gcc/testsuite/gcc.target/aarch64/sm3_sm4.c
! 7e05fd594e04f4bf5fa60b69f035a35a  gcc/testsuite/gcc.target/aarch64/spellcheck_1.c
! e95d67535eb0a800294c8b3a03995066  gcc/testsuite/gcc.target/aarch64/spellcheck_2.c
! 51ba0cb8337718db1f3267ae0cbb2376  gcc/testsuite/gcc.target/aarch64/spellcheck_3.c
  a57e93f49fe6f1a48df38771d9abbf38  gcc/testsuite/gcc.target/aarch64/spellcheck_4.c
  22cee0636aa904fc467889fc245c6d36  gcc/testsuite/gcc.target/aarch64/spellcheck_5.c
  1050cc9c099b5f03fbf3bbc52a745b0b  gcc/testsuite/gcc.target/aarch64/spellcheck_6.c
+ ab9816f0fa89b01232ba9f7ffc945eb7  gcc/testsuite/gcc.target/aarch64/spill_1.c
  512465aa769914ac35eb1d0a4232a211  gcc/testsuite/gcc.target/aarch64/sshr64_1.c
! a45adf8dc3cf3437c984bded22857527  gcc/testsuite/gcc.target/aarch64/stack-checking.c
  e60080b5e2fe845d07811566ce955b35  gcc/testsuite/gcc.target/aarch64/store-pair-1.c
+ fc9240608ee0f16e1f1c3b227052460b  gcc/testsuite/gcc.target/aarch64/store_lane0_str_1.c
  b8c2c1180004b93a6595ce5210822124  gcc/testsuite/gcc.target/aarch64/store_repeating_constant_1.c
  fa57c8801f6408a8a60441b14264d643  gcc/testsuite/gcc.target/aarch64/store_repeating_constant_2.c
+ 1e58a73402376750db9cca201e181496  gcc/testsuite/gcc.target/aarch64/store_v2vec_lanes.c
  2b3b2d71a1eeaa42d801c6f3133c4919  gcc/testsuite/gcc.target/aarch64/stp_vec_64_1.c
  adb1c4e7d709c64ebafff36700e610bf  gcc/testsuite/gcc.target/aarch64/struct_return.c
  49024de201ed5116d85217d7038dead6  gcc/testsuite/gcc.target/aarch64/subs.c
  834e46ea541b400f3d3b542aec361454  gcc/testsuite/gcc.target/aarch64/subs1.c
  16dce9591d585c221f8f8466df8e75ab  gcc/testsuite/gcc.target/aarch64/subs2.c
  97a1f4ce89f62836b1d1758b1679bf32  gcc/testsuite/gcc.target/aarch64/subs3.c
+ da0f05a59f07947e5516436d11add9e4  gcc/testsuite/gcc.target/aarch64/subs_compare_1.c
+ 78a0202a80d213c81339c90edda33b94  gcc/testsuite/gcc.target/aarch64/subs_compare_2.c
  341dc11479190709551f13dffa234d0c  gcc/testsuite/gcc.target/aarch64/subsp.c
+ dbcf5e3b0dce0b8286ff54342d344928  gcc/testsuite/gcc.target/aarch64/sve/aarch64-sve.exp
+ 62c2fdff5e2575e27bb0a1d20d21aa9e  gcc/testsuite/gcc.target/aarch64/sve/arith_1.c
+ df0519275b02cc84a796db656b512d9f  gcc/testsuite/gcc.target/aarch64/sve/clastb_1.c
+ 7e44cf07676c8141eba5bba9a6eeef11  gcc/testsuite/gcc.target/aarch64/sve/clastb_1_run.c
+ 88ceb9d16c803dd1380e6be5b7318f73  gcc/testsuite/gcc.target/aarch64/sve/clastb_2.c
+ 8a0fc19c5772296d44131a604516c649  gcc/testsuite/gcc.target/aarch64/sve/clastb_2_run.c
+ ad7666cfefa585588d33e3b3f47e9ea2  gcc/testsuite/gcc.target/aarch64/sve/clastb_3.c
+ d9c7ea7a56ecee738997c662deeaa438  gcc/testsuite/gcc.target/aarch64/sve/clastb_3_run.c
+ 773bec0f7efede68fbfe323b4a32ed3e  gcc/testsuite/gcc.target/aarch64/sve/clastb_4.c
+ 6100f2c7218984c6184bc7fdb259d677  gcc/testsuite/gcc.target/aarch64/sve/clastb_4_run.c
+ d32a98ef21be12bc62ee17a071dab592  gcc/testsuite/gcc.target/aarch64/sve/clastb_5.c
+ 459c9a65b9f22d651fe6ffe768ae3361  gcc/testsuite/gcc.target/aarch64/sve/clastb_5_run.c
+ a10578f718770c75585a8eef52bc7d4e  gcc/testsuite/gcc.target/aarch64/sve/clastb_6.c
+ 7d76cf064bff32e11ae989e60bb305f3  gcc/testsuite/gcc.target/aarch64/sve/clastb_6_run.c
+ 2748a73b396126b4ea4ae0b0ced6a381  gcc/testsuite/gcc.target/aarch64/sve/clastb_7.c
+ 45ac333b77d1f1f50fa43b381ab19c5e  gcc/testsuite/gcc.target/aarch64/sve/clastb_7_run.c
+ 37fc6c7d6fd6c12d812ac754d44d4002  gcc/testsuite/gcc.target/aarch64/sve/cvtf_signed_1.c
+ 8862b40ae4be4f7b36035f4a31bddb37  gcc/testsuite/gcc.target/aarch64/sve/cvtf_signed_1_run.c
+ bda1bfa9f264cd1446ca0defd2f80281  gcc/testsuite/gcc.target/aarch64/sve/cvtf_unsigned_1.c
+ 839b0317eb14ae69921e100efde62274  gcc/testsuite/gcc.target/aarch64/sve/cvtf_unsigned_1_run.c
+ 32a3d39a18b234ed117bf340ef8f99ae  gcc/testsuite/gcc.target/aarch64/sve/dup_imm_1.c
+ 657769d7a7292850421bf9c9f489ce6b  gcc/testsuite/gcc.target/aarch64/sve/dup_imm_1_run.c
+ e93e255fa904758bbf3655fd0a263628  gcc/testsuite/gcc.target/aarch64/sve/dup_lane_1.c
+ f8aebeb8f0a738c291cd7acbf0c1cd2e  gcc/testsuite/gcc.target/aarch64/sve/ext_1.c
+ 569465b1b4663bf5239d16b7dfc60019  gcc/testsuite/gcc.target/aarch64/sve/ext_2.c
+ 9fe11116a55ab75edb4e3a00b44adac4  gcc/testsuite/gcc.target/aarch64/sve/extract_1.c
+ 2e9f1bd3b8ff279bf1f4a9abcd43ef82  gcc/testsuite/gcc.target/aarch64/sve/extract_2.c
+ f1efff10daf01f5a165079c189d320ac  gcc/testsuite/gcc.target/aarch64/sve/extract_3.c
+ 34ccb25085683186441bf41a29bcaf31  gcc/testsuite/gcc.target/aarch64/sve/extract_4.c
+ e09d60c9368e764045edec1b162362fb  gcc/testsuite/gcc.target/aarch64/sve/fabs_1.c
+ 68ba5ef8137ec135b92767cce4f91f2c  gcc/testsuite/gcc.target/aarch64/sve/fcvtz_signed_1.c
+ 09c7ac9827fd050e0ca6c6acb49dc63a  gcc/testsuite/gcc.target/aarch64/sve/fcvtz_signed_1_run.c
+ 43b9b7d6eefd41083ab9d9bd2aca56a6  gcc/testsuite/gcc.target/aarch64/sve/fcvtz_unsigned_1.c
+ ac09afb9d04d8d3255ac30bd518ee86c  gcc/testsuite/gcc.target/aarch64/sve/fcvtz_unsigned_1_run.c
+ 1db08b8a63be416b8f0c4577c54306e8  gcc/testsuite/gcc.target/aarch64/sve/fdiv_1.c
+ d9630005a29966b1efe72ee2c1789486  gcc/testsuite/gcc.target/aarch64/sve/fdup_1.c
+ cb455cf51322d0073b1b6910b82692d2  gcc/testsuite/gcc.target/aarch64/sve/fdup_1_run.c
+ 557d688c596d68432472a825c9640ecc  gcc/testsuite/gcc.target/aarch64/sve/fmad_1.c
+ e1ebbc13eea26781f1254af1d30baefc  gcc/testsuite/gcc.target/aarch64/sve/fmla_1.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
+ f18be1e7abbda4855f72a61ca0933ab7  gcc/testsuite/gcc.target/aarch64/sve/frintp_1.c
+ 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
+ ae455a86a6603c8ba817320a50064476  gcc/testsuite/gcc.target/aarch64/sve/gather_load_1.c
+ c826aaebef6cb8c18042bf44a4f47829  gcc/testsuite/gcc.target/aarch64/sve/gather_load_2.c
+ 820a1e4648d09a4438b9970b985b4922  gcc/testsuite/gcc.target/aarch64/sve/gather_load_3.c
+ 21084c4619cd95802351f62cc0ac6323  gcc/testsuite/gcc.target/aarch64/sve/gather_load_4.c
+ 9156d407f18f26578798629761117616  gcc/testsuite/gcc.target/aarch64/sve/gather_load_5.c
+ 6bf0bb3db256b58966978b3b8884a8f5  gcc/testsuite/gcc.target/aarch64/sve/gather_load_6.c
+ 96fc9ec2378f50a4ec79ce9e6afadaf1  gcc/testsuite/gcc.target/aarch64/sve/gather_load_7.c
+ 9fffa4c6db492d5b9ae9ba7986fa3965  gcc/testsuite/gcc.target/aarch64/sve/index_1.c
+ b23e76096d6b05b342d265c9a255a00c  gcc/testsuite/gcc.target/aarch64/sve/index_1_run.c
+ b1fc6e42956e0a1645a78e579f17d22d  gcc/testsuite/gcc.target/aarch64/sve/index_offset_1.c
+ 853ff9815ca2eb270da206573260568b  gcc/testsuite/gcc.target/aarch64/sve/index_offset_1_run.c
+ cb93afa281da4a2d3cf91e28d3cc69bf  gcc/testsuite/gcc.target/aarch64/sve/ld1r_1.c
+ db073c268f94f79878c476748695f341  gcc/testsuite/gcc.target/aarch64/sve/ld1r_2.c
+ 8c6fc9ab810188210a988ce10c21452b  gcc/testsuite/gcc.target/aarch64/sve/ld1r_2_run.c
+ cd8d136680cc29d796e42c8155af0c87  gcc/testsuite/gcc.target/aarch64/sve/live_1.c
+ 923bb31c870842be1bdc0760f07e09fa  gcc/testsuite/gcc.target/aarch64/sve/live_1_run.c
+ 39ed1486d973a97f97b58e0b6c511eab  gcc/testsuite/gcc.target/aarch64/sve/load_const_offset_1.c
+ fbfea6cc9aefb78a0486218ddf804d6b  gcc/testsuite/gcc.target/aarch64/sve/load_const_offset_2.c
+ 45304dcbb3134b47660fe57829ce5aa5  gcc/testsuite/gcc.target/aarch64/sve/load_const_offset_3.c
+ 9840c833aac604741afb4d328cf04733  gcc/testsuite/gcc.target/aarch64/sve/load_scalar_offset_1.c
+ 1a8e35632d0239051c261823b239718a  gcc/testsuite/gcc.target/aarch64/sve/logical_1.c
+ 5b889e0b42c621d16b8b95b4b0419fd9  gcc/testsuite/gcc.target/aarch64/sve/loop_add_1.c
+ 98c8b2db756d72e10d401d537d30a630  gcc/testsuite/gcc.target/aarch64/sve/loop_add_1_run.c
+ a7755b98be930532d1c450534277247d  gcc/testsuite/gcc.target/aarch64/sve/loop_add_2.c
+ b73572201458dc7f519a8654007b2b63  gcc/testsuite/gcc.target/aarch64/sve/loop_add_3.c
+ 43e6f25e04a689808b96628db7957f19  gcc/testsuite/gcc.target/aarch64/sve/loop_add_4.c
+ 1fc8fcef7279889004c42dd937b9fa27  gcc/testsuite/gcc.target/aarch64/sve/loop_add_4_run.c
+ b0dcd1a6028037c32803e8e6d87a3335  gcc/testsuite/gcc.target/aarch64/sve/loop_add_5.c
+ 51936108808de9da2be25482022737c2  gcc/testsuite/gcc.target/aarch64/sve/loop_add_5_run.c
+ e480ab2c1a246b82210510f44a1f96e8  gcc/testsuite/gcc.target/aarch64/sve/mad_1.c
+ ab2c2f8b2b4f63ff5400dfcc4b0cff0a  gcc/testsuite/gcc.target/aarch64/sve/mask_gather_load_1.c
+ 15d8649259b34f9d48561b987a8e85f3  gcc/testsuite/gcc.target/aarch64/sve/mask_gather_load_2.c
+ 2c46e65cd1570d015dba2adf995c345f  gcc/testsuite/gcc.target/aarch64/sve/mask_gather_load_3.c
+ 314d51574d6f9db0b883b4ca323b5708  gcc/testsuite/gcc.target/aarch64/sve/mask_gather_load_4.c
+ b7284adec21d80573a852744d3773966  gcc/testsuite/gcc.target/aarch64/sve/mask_gather_load_5.c
+ f89ec0eab4ef76ed3d587f4fcfa5db21  gcc/testsuite/gcc.target/aarch64/sve/mask_gather_load_6.c
+ 17d65ff02c6607e9179f520bcf3656bc  gcc/testsuite/gcc.target/aarch64/sve/mask_gather_load_7.c
+ 33047a915e1581d35186161bbca699ee  gcc/testsuite/gcc.target/aarch64/sve/mask_scatter_store_1.c
+ 606025785cdd6d1660f408e9fe34b4b3  gcc/testsuite/gcc.target/aarch64/sve/mask_scatter_store_2.c
+ 3f72a4fe11c0af02cdcbe5c4a2dd51b5  gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_1.c
+ c90ec5ef7fda5b046b14353bb213caf1  gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_1_run.c
+ cdb4a6c394b95a8b7335a28ff4a17157  gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_2.c
+ d9a0da227f33c19f4ede7586e9cdd9f4  gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_2_run.c
+ 18a4668e57c485801c4cfa3c7311dbb5  gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_3.c
+ c6f6e7729d8243981389542d9dbef36d  gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_3_run.c
+ 249847d645036013aa029cd0219ff1fd  gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_4.c
+ d8d52d20e0f892d079e43241eb86effe  gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_5.c
+ ea65208928f7006e9d983e2f1a0057a7  gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_6.c
+ 0864a3571828f18f06bf9eaa0f8b5cbf  gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_7.c
+ ca62bb1a126eebc742a65ed4551e251a  gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_8.c
+ f34da508f918174f3b1978714682a5bb  gcc/testsuite/gcc.target/aarch64/sve/mask_struct_store_1.c
+ 37ca82407d8f405c82eb90cc5757a0d1  gcc/testsuite/gcc.target/aarch64/sve/mask_struct_store_1_run.c
+ 3c26107231b40a50437eea6053989e8f  gcc/testsuite/gcc.target/aarch64/sve/mask_struct_store_2.c
+ dbab8d7199cc43d51372c8daa2ed5799  gcc/testsuite/gcc.target/aarch64/sve/mask_struct_store_2_run.c
+ 8cea23f4ded312a26a0182d6e69f397c  gcc/testsuite/gcc.target/aarch64/sve/mask_struct_store_3.c
+ ff8e8a720e195a0f60d98e0f3129d39d  gcc/testsuite/gcc.target/aarch64/sve/mask_struct_store_3_run.c
+ c3c73f67d4a871e058128bdf98c37ce8  gcc/testsuite/gcc.target/aarch64/sve/mask_struct_store_4.c
+ 4adb304f41746ccafd50f9ffb47f07b9  gcc/testsuite/gcc.target/aarch64/sve/maxmin_1.c
+ 13bbdacc3f4f9cd16b9d754faee7d2ab  gcc/testsuite/gcc.target/aarch64/sve/maxmin_1_run.c
+ 134ef449bd11349ce054e8286fbff2c1  gcc/testsuite/gcc.target/aarch64/sve/maxmin_strict_1.c
+ ef85ca0b706589d4eb255295218ac581  gcc/testsuite/gcc.target/aarch64/sve/maxmin_strict_1_run.c
+ f7c38468cc902b48a05d93aa9fd364c6  gcc/testsuite/gcc.target/aarch64/sve/miniloop_1.c
+ 408226269efff71a30859089883057b5  gcc/testsuite/gcc.target/aarch64/sve/miniloop_2.c
+ dd11207791d13f084db138dc0f5db1d6  gcc/testsuite/gcc.target/aarch64/sve/mla_1.c
+ cafa023ecc4fc66a8c9a3bcda1baef83  gcc/testsuite/gcc.target/aarch64/sve/mls_1.c
+ 373914dd86484840207e0827a609555d  gcc/testsuite/gcc.target/aarch64/sve/mov_rr_1.c
+ 76b67822c25cb6679a7f5c4a8a4a2edb  gcc/testsuite/gcc.target/aarch64/sve/msb_1.c
+ 96deea5b8b745cdb119a0dd0647367a6  gcc/testsuite/gcc.target/aarch64/sve/mul_1.c
+ bdf8532c1097749621e020a1e5f9949a  gcc/testsuite/gcc.target/aarch64/sve/mul_highpart_1.c
+ df9030c3eec5ddec3909228ae27739c8  gcc/testsuite/gcc.target/aarch64/sve/mul_highpart_1_run.c
+ 5c72c004716eb8bfa14105992e9351d1  gcc/testsuite/gcc.target/aarch64/sve/neg_1.c
+ 19192fb8ee188e2e0c251c4d7fec027b  gcc/testsuite/gcc.target/aarch64/sve/nlogical_1.c
+ 8544826a8b7a261158f7b83af125df56  gcc/testsuite/gcc.target/aarch64/sve/nlogical_1_run.c
+ 746ca7f5666b70779bb2d11b745cb684  gcc/testsuite/gcc.target/aarch64/sve/nopeel_1.c
+ 1a32dcba61403386a0c2b0407931cba4  gcc/testsuite/gcc.target/aarch64/sve/pack_1.c
+ d3c80688ca6e46a07411a695aff6365c  gcc/testsuite/gcc.target/aarch64/sve/pack_1_run.c
+ a560e8d33bc4b495e1f23d0645271de2  gcc/testsuite/gcc.target/aarch64/sve/pack_fcvt_signed_1.c
+ 40250c68c4a2717b364222c87b1065a7  gcc/testsuite/gcc.target/aarch64/sve/pack_fcvt_signed_1_run.c
+ bd0ea7412913a5ce083ddea4613bd169  gcc/testsuite/gcc.target/aarch64/sve/pack_fcvt_unsigned_1.c
+ 38e3035a77b1dca0127d31c369ecc94a  gcc/testsuite/gcc.target/aarch64/sve/pack_fcvt_unsigned_1_run.c
+ fa06e7238dbd52dd10fcbc8218d6f455  gcc/testsuite/gcc.target/aarch64/sve/pack_float_1.c
+ f73856c9978f65aed41f7a5c062f010a  gcc/testsuite/gcc.target/aarch64/sve/pack_float_1_run.c
+ dc0b94d4e1adf6dce5722abc36497ee6  gcc/testsuite/gcc.target/aarch64/sve/peel_ind_1.c
+ 554f0eec3d39895e8e465acc9954378d  gcc/testsuite/gcc.target/aarch64/sve/peel_ind_1_run.c
+ d69b71c5438e0c5c9c1e9e0b0852a488  gcc/testsuite/gcc.target/aarch64/sve/peel_ind_2.c
+ f351c106afb534010a64e7962c7210e6  gcc/testsuite/gcc.target/aarch64/sve/peel_ind_2_run.c
+ 11392eee163ae18661b9454594bd667e  gcc/testsuite/gcc.target/aarch64/sve/peel_ind_3.c
+ be7cc3f3d79d612dba9163f7fc52e5fc  gcc/testsuite/gcc.target/aarch64/sve/peel_ind_3_run.c
+ 3d1ef9d163c4f589cacb3489dbd67eab  gcc/testsuite/gcc.target/aarch64/sve/peel_ind_4.c
+ 9488251a23018049b302e2b299d999ba  gcc/testsuite/gcc.target/aarch64/sve/peel_ind_4_run.c
+ 58779ff2ec8df7f5f3f3b93f444f0617  gcc/testsuite/gcc.target/aarch64/sve/popcount_1.c
+ 43e7bc10a42a3debf5d1ccecc4464720  gcc/testsuite/gcc.target/aarch64/sve/popcount_1_run.c
+ a032067f8e138201bc4d895e3f7de83c  gcc/testsuite/gcc.target/aarch64/sve/reduc_1.c
+ e5af8d5ddc19297c37575ca92211e116  gcc/testsuite/gcc.target/aarch64/sve/reduc_1_run.c
+ 80c420ebe41eb52c7a2f29c27ac40af9  gcc/testsuite/gcc.target/aarch64/sve/reduc_2.c
+ ff9d5e617831a577f203db2924357e2e  gcc/testsuite/gcc.target/aarch64/sve/reduc_2_run.c
+ 7564059c5093e8d0a5829444049160d1  gcc/testsuite/gcc.target/aarch64/sve/reduc_3.c
+ dd1609997c9f35ae0926fe56424b0cc6  gcc/testsuite/gcc.target/aarch64/sve/reduc_5.c
+ 4f12a25fddc3492c7dea607a34326ce2  gcc/testsuite/gcc.target/aarch64/sve/reduc_strict_1.c
+ 29325badacb452a69d016572fc2c2aef  gcc/testsuite/gcc.target/aarch64/sve/reduc_strict_1_run.c
+ be23f2835abad04ca7c96e9f41d100dd  gcc/testsuite/gcc.target/aarch64/sve/reduc_strict_2.c
+ 6b44fb2dee5b9e096a48e2190ea199ab  gcc/testsuite/gcc.target/aarch64/sve/reduc_strict_2_run.c
+ 279e6bd083df7652a0622cf7147a91e1  gcc/testsuite/gcc.target/aarch64/sve/reduc_strict_3.c
+ 1066b38f44cce4bdff5b7050146d95cf  gcc/testsuite/gcc.target/aarch64/sve/rev_1.c
+ e782aa43641531c8a2b4a248c23a2120  gcc/testsuite/gcc.target/aarch64/sve/revb_1.c
+ 2f6c8c1e23ce2d2dd77d1759bbee0123  gcc/testsuite/gcc.target/aarch64/sve/revh_1.c
+ 0550d899479ca2dd557394f0a5623e9a  gcc/testsuite/gcc.target/aarch64/sve/revw_1.c
+ 18c42e38bd0c455ce45b53e60f9db3ba  gcc/testsuite/gcc.target/aarch64/sve/scatter_store_1.c
+ 3cabdb0b96134d53c177f48a66d3e4a9  gcc/testsuite/gcc.target/aarch64/sve/scatter_store_2.c
+ 429803b5fc35d2816a99d0b6a02c5846  gcc/testsuite/gcc.target/aarch64/sve/scatter_store_3.c
+ aff56807be9b8f7f0d53bbefcda3cc77  gcc/testsuite/gcc.target/aarch64/sve/scatter_store_4.c
+ 6411a80d80ca872fc4df56cc3bb40f31  gcc/testsuite/gcc.target/aarch64/sve/scatter_store_5.c
+ 5e307e50c079a32cc4df01a146c8692d  gcc/testsuite/gcc.target/aarch64/sve/scatter_store_6.c
+ a8b013c792f04326d84fbda77ee51a1a  gcc/testsuite/gcc.target/aarch64/sve/scatter_store_7.c
+ 5c3caf6933314b51973d91761e48d66c  gcc/testsuite/gcc.target/aarch64/sve/shift_1.c
+ 0826f255e9a7696de6ff21a5bbdcf472  gcc/testsuite/gcc.target/aarch64/sve/single_1.c
+ 0078b03a505edc442838de0e9be96d56  gcc/testsuite/gcc.target/aarch64/sve/single_2.c
+ ca873ae55693983c52fb6ff3a1c17f6b  gcc/testsuite/gcc.target/aarch64/sve/single_3.c
+ 88d904d6667f420eee53fb4ff66a4dfd  gcc/testsuite/gcc.target/aarch64/sve/single_4.c
+ 2b5533c811869448f2c015cec02da768  gcc/testsuite/gcc.target/aarch64/sve/slp_1.c
+ 2d92793326712b8d9999095da4e74955  gcc/testsuite/gcc.target/aarch64/sve/slp_10.c
+ df29a45b5ee2033132b0a6f7d96ebfe3  gcc/testsuite/gcc.target/aarch64/sve/slp_10_run.c
+ 7f0aab629d8cefaf2b6472c91398d3f0  gcc/testsuite/gcc.target/aarch64/sve/slp_11.c
+ 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
+ b112a60413627dea92858ac2e8487b63  gcc/testsuite/gcc.target/aarch64/sve/slp_13.c
+ 5063e2f1b2fdd4123ce879dfc91c4698  gcc/testsuite/gcc.target/aarch64/sve/slp_13_run.c
+ 79f41ea7a893e9339ce387e58fe66fd6  gcc/testsuite/gcc.target/aarch64/sve/slp_1_run.c
+ e75e48d836e85e8d41863c22646f3df7  gcc/testsuite/gcc.target/aarch64/sve/slp_2.c
+ b8578d07ed2dd3d31f510c026633eb78  gcc/testsuite/gcc.target/aarch64/sve/slp_2_run.c
+ f2af9130fb6670e106be040a769d79d6  gcc/testsuite/gcc.target/aarch64/sve/slp_3.c
+ 1646974ae33b226075bbe62d628c50e1  gcc/testsuite/gcc.target/aarch64/sve/slp_3_run.c
+ 85f8d36d22c3f4498c208ce806bd95df  gcc/testsuite/gcc.target/aarch64/sve/slp_4.c
+ d1df9198c1ceabf8c5c446a9e7974b0d  gcc/testsuite/gcc.target/aarch64/sve/slp_4_run.c
+ f374094b6debf9b6228ebb547406a9dc  gcc/testsuite/gcc.target/aarch64/sve/slp_5.c
+ 2d4dee8f297e8b75474d52eef5cc59ea  gcc/testsuite/gcc.target/aarch64/sve/slp_5_run.c
+ b09a0f9ba8a82936db830381a55ad3f4  gcc/testsuite/gcc.target/aarch64/sve/slp_6.c
+ e1229784fc07e0f6ff55e8d753f9ec28  gcc/testsuite/gcc.target/aarch64/sve/slp_6_run.c
+ 47df3cc8b5da0025c301e700162974b0  gcc/testsuite/gcc.target/aarch64/sve/slp_7.c
+ 87c04f332ed6d43291abc2ee0df012ba  gcc/testsuite/gcc.target/aarch64/sve/slp_7_run.c
+ 4e823af0ac728049306dad287f7672f8  gcc/testsuite/gcc.target/aarch64/sve/slp_8.c
+ f2d7b2ce2687bf1949d803b094739190  gcc/testsuite/gcc.target/aarch64/sve/slp_8_run.c
+ a7c39bfa6589bb8dce826b474f12f875  gcc/testsuite/gcc.target/aarch64/sve/slp_9.c
+ 2c63d303c6283bd6bbef0a3204efc525  gcc/testsuite/gcc.target/aarch64/sve/slp_9_run.c
+ 0645f95efcdf83d65444096218a05a17  gcc/testsuite/gcc.target/aarch64/sve/spill_1.c
+ f66f424b4da379837852455b1ba7ee6d  gcc/testsuite/gcc.target/aarch64/sve/spill_2.c
+ 7b2b8f018acb426552b52521bae00c42  gcc/testsuite/gcc.target/aarch64/sve/spill_3.c
+ 0015ceed1d92f993506e4ea09c1f7ab8  gcc/testsuite/gcc.target/aarch64/sve/spill_4.c
+ 7d58d6f8c4952c765dce0a4b673a7f57  gcc/testsuite/gcc.target/aarch64/sve/spill_5.c
+ 51778573e851b5ddaa1321ab1bbe384d  gcc/testsuite/gcc.target/aarch64/sve/spill_6.c
+ 6ce93f69a58a652ebf7f305ba7ba7821  gcc/testsuite/gcc.target/aarch64/sve/spill_7.c
+ fa54ccc091393b9b50bb9131362a3475  gcc/testsuite/gcc.target/aarch64/sve/store_scalar_offset_1.c
+ 181bfd966c00aa4ed6fa1aae34f53f52  gcc/testsuite/gcc.target/aarch64/sve/strided_load_1.c
+ 12f4989e398bbd604266bbe500309d29  gcc/testsuite/gcc.target/aarch64/sve/strided_load_2.c
+ 3f9c830996125fa09ea543e9bce0d3ce  gcc/testsuite/gcc.target/aarch64/sve/strided_load_3.c
+ 4bb795bf92eab9e6860cec5ad334a41d  gcc/testsuite/gcc.target/aarch64/sve/strided_load_4.c
+ d8059cb9117a068460bf24f5dba7d2f8  gcc/testsuite/gcc.target/aarch64/sve/strided_load_5.c
+ 6ed9e96864421958237522d59a802f8d  gcc/testsuite/gcc.target/aarch64/sve/strided_load_6.c
+ acf037781a376e80d46dbdacfd1de583  gcc/testsuite/gcc.target/aarch64/sve/strided_load_7.c
+ f3cb7598c2e0806a8c4a0ef095a88423  gcc/testsuite/gcc.target/aarch64/sve/strided_load_8.c
+ ff8786ae6fde587cbd18b1512938785d  gcc/testsuite/gcc.target/aarch64/sve/strided_store_1.c
+ 175c042e0f9e9ff7613b2d4ec6b2512f  gcc/testsuite/gcc.target/aarch64/sve/strided_store_2.c
+ 8725efaddbb128996268034e43b21749  gcc/testsuite/gcc.target/aarch64/sve/strided_store_3.c
+ a421d5e1fc09e2a43ba0b51529d4676c  gcc/testsuite/gcc.target/aarch64/sve/strided_store_4.c
+ 6c4375f8f66f1784d2a589119a5261cc  gcc/testsuite/gcc.target/aarch64/sve/strided_store_5.c
+ 21ee3e0b3b3163909b128c7c23ecf3bc  gcc/testsuite/gcc.target/aarch64/sve/strided_store_6.c
+ 888c3207327449230af5ed6cc6968b78  gcc/testsuite/gcc.target/aarch64/sve/strided_store_7.c
+ 7bb9d9ea37daaacbf18621685d270327  gcc/testsuite/gcc.target/aarch64/sve/struct_move_1.c
+ e46489e97fa0b54c4ca2d629d83b5ae0  gcc/testsuite/gcc.target/aarch64/sve/struct_move_2.c
+ 0fc11e16f784b5a11d733d97272640fe  gcc/testsuite/gcc.target/aarch64/sve/struct_move_3.c
+ 4b21b95ee90d6e00a8848595a07ea988  gcc/testsuite/gcc.target/aarch64/sve/struct_move_4.c
+ a859ca5b62cf57535e128f20e26af0cd  gcc/testsuite/gcc.target/aarch64/sve/struct_move_5.c
+ 739efc32763daeb96b2e4d3126d70691  gcc/testsuite/gcc.target/aarch64/sve/struct_move_6.c
+ 22f142d97c8882e0757377e93141b0a7  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_1.c
+ 85e5cc4b396e8562e07edd1d651a5d11  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_10.c
+ 3570da632a0c77f29e0b51bb74695f19  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_10_run.c
+ 120ee6a872d75fc3692c0a6ab40af9fb  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_11.c
+ a9c969a56d96703e9c1652d8ad2eb379  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_11_run.c
+ 09e77436994907b57455b82dc02c9b19  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_12.c
+ 9d14041f491bd1baf65be1ad477b81b8  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_12_run.c
+ cbfee82d6d47e9926048ac4875b1b20e  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_13.c
+ 7c29957daeacd902d366cd4d50f67b76  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_13_run.c
+ 14cace513ee557719aabefc37479fd9e  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_14.c
+ 4d1c08f43a03cb36bbf0ae237b45a9c2  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_15.c
+ ec96bf52f226e5b6c1de4bae78616f7c  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_16.c
+ ce25a55e9260b86bab96525326046cdb  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_17.c
+ 510cb22a12203c8784104af2496fb9b4  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_18.c
+ 5f296fa031f029c381fdf10a120e65d4  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_18_run.c
+ 5c04ae1c9d7616cb5397e9a7045e4414  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_19.c
+ aae7774eaca0e1fcafc843de5410de71  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_19_run.c
+ 4360db7f0de2e92af602423537a87150  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_1_run.c
+ 36f2be220d8e051bff32f7c5c9231327  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_2.c
+ 4afc18b4e55dc06d6fe1097a0f226cf3  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_20.c
+ 12209273c1ae323307891160b4aa4121  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_20_run.c
+ 7ca6d9173449ecd1b8571780733ba7a7  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_21.c
+ 2eb667d43aac0b8103a6bc32379c02e3  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_21_run.c
+ 559686010bc510372160b2525884cb1a  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_22.c
+ 64c09fe1827d21d05e175a6943a2d427  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_22_run.c
+ 07b8aea621d76a35ae4a8478fbea82dd  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_23.c
+ 23a9863cd6eacac9f7376a55c013460c  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_23_run.c
+ 5973edc53e3d95a5c06d7cc5a2f17582  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_2_run.c
+ e73177f3815fd6df9d8dbb470ff3a8fc  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_3.c
+ 506898e882d90b53364e1a754b8de11d  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_3_run.c
+ cc66db52598c3198cc422a997bd1d21a  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_4.c
+ 2fc0db69416b32f11835f34a91ee93a5  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_4_run.c
+ 5804ea8e7cf158ee3c481f0d0a08ef16  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_5.c
+ eb56da9bd87f2d55c23d889df94ec01d  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_5_run.c
+ 5f5fdc2317e3bad166571167c510fc63  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_6.c
+ 15f148953051085427c8ac13831eb6dd  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_6_run.c
+ dc3d2ce3572bcc8e0fd8bd028c402b08  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_7.c
+ 4dde54e03b62f079ec3355d1c66514ad  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_7_run.c
+ 98f216e1063170451e4a8348f638bb3e  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_8.c
+ a2d5f92a7dc0b6481151a826c2095f4f  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_8_run.c
+ 1036ae2a949439aca385c69d91223baa  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_9.c
+ c0e9f1053cbcbdcf665c67fcfd249122  gcc/testsuite/gcc.target/aarch64/sve/struct_vect_9_run.c
+ 2edf4feae8f8f8f1fb3c8eaf5f1afd35  gcc/testsuite/gcc.target/aarch64/sve/subr_1.c
+ 2fec9a56ba2b9f6f7071c3f34335ed9b  gcc/testsuite/gcc.target/aarch64/sve/tls_1.c
+ 6c0180841c8eeb8d62062e04e4eebcac  gcc/testsuite/gcc.target/aarch64/sve/trn1_1.c
+ 0112727c4d7e88cd6e98899949a7b071  gcc/testsuite/gcc.target/aarch64/sve/trn2_1.c
+ d48fbe456a044db6f77d528c49f340ac  gcc/testsuite/gcc.target/aarch64/sve/unpack_fcvt_signed_1.c
+ d3805ccb98774fc60783e0d714834aa0  gcc/testsuite/gcc.target/aarch64/sve/unpack_fcvt_signed_1_run.c
+ 86f81c6caf2f36b49b15df5be29bf154  gcc/testsuite/gcc.target/aarch64/sve/unpack_fcvt_unsigned_1.c
+ 32a0ff26410cd0894dafd6f7f0d291a2  gcc/testsuite/gcc.target/aarch64/sve/unpack_fcvt_unsigned_1_run.c
+ b57de878cb338939c71466f3393bfaf2  gcc/testsuite/gcc.target/aarch64/sve/unpack_float_1.c
+ e7a3b62d81ab7c0991182b370fdfe06f  gcc/testsuite/gcc.target/aarch64/sve/unpack_float_1_run.c
+ 8da41c1e11f170573a2a9de44cb9e31f  gcc/testsuite/gcc.target/aarch64/sve/unpack_signed_1.c
+ 0dac8ce2706a1e811d4ef39d2e7c0c52  gcc/testsuite/gcc.target/aarch64/sve/unpack_signed_1_run.c
+ 84d98b685c3d9be92ed74b900b1c7a12  gcc/testsuite/gcc.target/aarch64/sve/unpack_unsigned_1.c
+ f76d417f74dd75b468966126453d9ad9  gcc/testsuite/gcc.target/aarch64/sve/unpack_unsigned_1_run.c
+ 5a1bd749bf4d60baf28be6e49b1b9d4b  gcc/testsuite/gcc.target/aarch64/sve/uzp1_1.c
+ d876021ee15812d1dc53c0bd7c9fc144  gcc/testsuite/gcc.target/aarch64/sve/uzp1_1_run.c
+ 15d9645260cd96e817750eb383c36679  gcc/testsuite/gcc.target/aarch64/sve/uzp2_1.c
+ 66e61d21118cd1e4b400b1d34e9315d1  gcc/testsuite/gcc.target/aarch64/sve/uzp2_1_run.c
+ 2ebd69269aed89f90b0568c6627b499f  gcc/testsuite/gcc.target/aarch64/sve/var_stride_1.c
+ 466c74772d9a5cdaad3b58756b6c64a1  gcc/testsuite/gcc.target/aarch64/sve/var_stride_1.h
+ 46b216be707bdeb5dbf14fba5f46d8c2  gcc/testsuite/gcc.target/aarch64/sve/var_stride_1_run.c
+ 9b733369c76c9ed41e1c90fa99e3301a  gcc/testsuite/gcc.target/aarch64/sve/var_stride_2.c
+ 0769e9f737719272e170b80c9bfbb832  gcc/testsuite/gcc.target/aarch64/sve/var_stride_2_run.c
+ 39abea9219f2c7512fc323d97a24ac0f  gcc/testsuite/gcc.target/aarch64/sve/var_stride_3.c
+ 4c2dabdf1460ca9b0f996314d32fd15d  gcc/testsuite/gcc.target/aarch64/sve/var_stride_3_run.c
+ dfa6f85097b1c12a9b1c8315f5b71bdf  gcc/testsuite/gcc.target/aarch64/sve/var_stride_4.c
+ 3d08aa97df75d3a7ab4ff0b05c9613ab  gcc/testsuite/gcc.target/aarch64/sve/var_stride_4_run.c
+ 2b953dd8076f08815dc6dc6c9cad864e  gcc/testsuite/gcc.target/aarch64/sve/var_stride_5.c
+ d5a8f553575071402cda9532934d1f73  gcc/testsuite/gcc.target/aarch64/sve/var_stride_5_run.c
+ 4229825e64811019c4d8409f59ba4b34  gcc/testsuite/gcc.target/aarch64/sve/var_stride_6.c
+ 2599d07cd08f8d6244e5bf2f39e85997  gcc/testsuite/gcc.target/aarch64/sve/var_stride_6_run.c
+ 0ac276e6cca9d2407dd185cf6de3aeb2  gcc/testsuite/gcc.target/aarch64/sve/var_stride_7.c
+ 4a742109a8594dd46f5bcf3ff827abfd  gcc/testsuite/gcc.target/aarch64/sve/var_stride_7_run.c
+ 02c97ed3a9099cd2c4092b4685cf9a1f  gcc/testsuite/gcc.target/aarch64/sve/var_stride_8.c
+ 3d2fb4a232f381e21bad82eb408f70db  gcc/testsuite/gcc.target/aarch64/sve/var_stride_8_run.c
+ c4d65cea3b5f22dfd51cb63247bf221f  gcc/testsuite/gcc.target/aarch64/sve/vcond_2.c
+ f0f80eba8ad8cb496dcf47c07681b8c4  gcc/testsuite/gcc.target/aarch64/sve/vcond_2_run.c
+ 1d26374203c365b659b39bcfeb06199e  gcc/testsuite/gcc.target/aarch64/sve/vcond_3.c
+ 11f3a1ba8226327ad5f6ed6158e734ec  gcc/testsuite/gcc.target/aarch64/sve/vcond_4.c
+ 1b71b588d3cc25555792e3c13409c4bd  gcc/testsuite/gcc.target/aarch64/sve/vcond_4_run.c
+ 87d6f6f1b8cb58d4768499cc58028805  gcc/testsuite/gcc.target/aarch64/sve/vcond_5.c
+ dd1e6bbf22f1b03feb2bfdbae38cab23  gcc/testsuite/gcc.target/aarch64/sve/vcond_5_run.c
+ 0395e79f8e2e6ffdb4f3ea58fcc0061b  gcc/testsuite/gcc.target/aarch64/sve/vcond_6.c
+ 55edfe4fea432103d150b8ab303e24b1  gcc/testsuite/gcc.target/aarch64/sve/vcond_6_run.c
+ c0dc3b5582c5b7a3a6e420b9369201de  gcc/testsuite/gcc.target/aarch64/sve/vec_bool_cmp_1.c
+ ad03609f7c5910d8e0ee4d989acbb564  gcc/testsuite/gcc.target/aarch64/sve/vec_bool_cmp_1_run.c
+ e3493bebc4f164a4527e754092f915cf  gcc/testsuite/gcc.target/aarch64/sve/vec_init_1.c
+ 008cae7eaa9cd6f41b5955cdd2b3f709  gcc/testsuite/gcc.target/aarch64/sve/vec_init_1_run.c
+ 2502162497eb48d665e7c376dccae0df  gcc/testsuite/gcc.target/aarch64/sve/vec_init_2.c
+ e58a96c2ac23542a952e7c47f8c298dc  gcc/testsuite/gcc.target/aarch64/sve/vec_perm_1.c
+ a26f50223dec145aaa01ffa81756d9be  gcc/testsuite/gcc.target/aarch64/sve/vec_perm_1_overrange_run.c
+ 51117843fdfadbfc8dedd0fee643b4fb  gcc/testsuite/gcc.target/aarch64/sve/vec_perm_1_run.c
+ 684716ce78c6a0f0c132ca0ca26fea5e  gcc/testsuite/gcc.target/aarch64/sve/vec_perm_const_1.c
+ cb867889541f87cb0f9d98cda5326856  gcc/testsuite/gcc.target/aarch64/sve/vec_perm_const_1_overrun.c
+ bc3fe35e61645f4d394bfcf6e3cbc2cf  gcc/testsuite/gcc.target/aarch64/sve/vec_perm_const_1_run.c
+ ed24813645562316311675bf8409cfc5  gcc/testsuite/gcc.target/aarch64/sve/vec_perm_const_single_1.c
+ cbb22a935d1768837f5969eca674b5f8  gcc/testsuite/gcc.target/aarch64/sve/vec_perm_const_single_1_run.c
+ 661c355d657c0e853dce72437a032ef3  gcc/testsuite/gcc.target/aarch64/sve/vec_perm_single_1.c
+ 1fdea20be121da7789c290195705e989  gcc/testsuite/gcc.target/aarch64/sve/vec_perm_single_1_run.c
+ 79cd061db937a0673b1ba5120ae7ea2c  gcc/testsuite/gcc.target/aarch64/sve/while_1.c
+ 89a82ac96aefbb422ee7fcff6332dce4  gcc/testsuite/gcc.target/aarch64/sve/while_2.c
+ 8005b0ab9d7eedc978d5b99f7de4fa47  gcc/testsuite/gcc.target/aarch64/sve/while_3.c
+ 0186967af4403f0f512a25d1c41fc1e0  gcc/testsuite/gcc.target/aarch64/sve/while_4.c
+ e13b38f2990120fb563c7e3296667346  gcc/testsuite/gcc.target/aarch64/sve/zip1_1.c
+ c5724f6767410c7983d266d6febb0f89  gcc/testsuite/gcc.target/aarch64/sve/zip2_1.c
  73fe9f34e24b7bf2ac8540192183e8b8  gcc/testsuite/gcc.target/aarch64/symbol-range-tiny.c
  b6625ef2348772fa5f93e609061f2bf3  gcc/testsuite/gcc.target/aarch64/symbol-range.c
  fcee3b359fdc1a2150ff421e442f6265  gcc/testsuite/gcc.target/aarch64/sync-comp-swap.c
*************** f87f898044cd78f2ebf530577d3cf7bb  gcc/te
*** 37962,37985 ****
  95f377cbd6e6173deb76efafbc90634f  gcc/testsuite/gcc.target/aarch64/sync-op-release.x
  0168137c2b608147cb69283541a282f1  gcc/testsuite/gcc.target/aarch64/table-intrinsics.c
  e259ba8323c6ae474eebb9f1a89e0a1d  gcc/testsuite/gcc.target/aarch64/tail_indirect_call_1.c
! 84204d959d96933bbdeb4d6f2a41264c  gcc/testsuite/gcc.target/aarch64/target_attr_1.c
! fa7117ece82474e6ad64b002ff16f391  gcc/testsuite/gcc.target/aarch64/target_attr_10.c
! 495425b7459f1a259607e93ad71f13c5  gcc/testsuite/gcc.target/aarch64/target_attr_11.c
! 0254c2ce014215156ac0442994ce758a  gcc/testsuite/gcc.target/aarch64/target_attr_12.c
! 176b8d5a5d0f9d8c97b1811fd78b4112  gcc/testsuite/gcc.target/aarch64/target_attr_13.c
  6ead8e56b05aa69dc2477d005100c803  gcc/testsuite/gcc.target/aarch64/target_attr_14.c
! 171c4eb253cc64ffb2ea281b6ff3448b  gcc/testsuite/gcc.target/aarch64/target_attr_15.c
! 752f8b7738ab7b172878f39dab744a00  gcc/testsuite/gcc.target/aarch64/target_attr_17.c
! eb7fec2d03bfa312c78799ffe390de01  gcc/testsuite/gcc.target/aarch64/target_attr_2.c
! 069ef5a13d4919f6ae416655944f2313  gcc/testsuite/gcc.target/aarch64/target_attr_3.c
! 960ed96ecf61fda26c49494bb8a8e524  gcc/testsuite/gcc.target/aarch64/target_attr_4.c
  77ed3e7c559e6c7bb67620fa37d32e76  gcc/testsuite/gcc.target/aarch64/target_attr_5.c
  266734c1495ac7ea26ce9d5f1ba309b6  gcc/testsuite/gcc.target/aarch64/target_attr_6.c
! 7c8a750ff71d8c3b68d9b512705cef78  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
! 793be7f7a83bee5c65438613ed596b78  gcc/testsuite/gcc.target/aarch64/target_attr_crypto_ice_1.c
! d762e302f2d8d01ea93466394ee28360  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
--- 40295,40318 ----
  95f377cbd6e6173deb76efafbc90634f  gcc/testsuite/gcc.target/aarch64/sync-op-release.x
  0168137c2b608147cb69283541a282f1  gcc/testsuite/gcc.target/aarch64/table-intrinsics.c
  e259ba8323c6ae474eebb9f1a89e0a1d  gcc/testsuite/gcc.target/aarch64/tail_indirect_call_1.c
! 41ec27ca8c11639d09bb3405e7e9a3ab  gcc/testsuite/gcc.target/aarch64/target_attr_1.c
! d7960a7310744c1ab66108f57c4c6c60  gcc/testsuite/gcc.target/aarch64/target_attr_10.c
! bf9afeb6532edb2f9d5ea8620df5ab50  gcc/testsuite/gcc.target/aarch64/target_attr_11.c
! 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
! 93145ff3e03510c58daa08e45866f6ba  gcc/testsuite/gcc.target/aarch64/target_attr_2.c
! a4a6eccdba213faef4196f8ebe4152a3  gcc/testsuite/gcc.target/aarch64/target_attr_3.c
! c17cb964233b0aa7dd1ec0085d5a8fe2  gcc/testsuite/gcc.target/aarch64/target_attr_4.c
  77ed3e7c559e6c7bb67620fa37d32e76  gcc/testsuite/gcc.target/aarch64/target_attr_5.c
  266734c1495ac7ea26ce9d5f1ba309b6  gcc/testsuite/gcc.target/aarch64/target_attr_6.c
! 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
*************** dc3ab0fb62fcd0f12992c9870e0bffce  gcc/te
*** 38027,38035 ****
  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
! 6d678a653be729b7a5c38dd55160dcfe  gcc/testsuite/gcc.target/aarch64/uaddw-1.c
! 7d84b99774b22dbcdafbedd6c5166f53  gcc/testsuite/gcc.target/aarch64/uaddw-2.c
! 866989390dbfd330bda1163344ba4ce8  gcc/testsuite/gcc.target/aarch64/uaddw-3.c
  a5b09578629531d465aefeed46ebae10  gcc/testsuite/gcc.target/aarch64/ubfiz_lsl_1.c
  36ad666b8760a3d2de950ba38d4a02c6  gcc/testsuite/gcc.target/aarch64/ubfx_lsr_1.c
  652ecb3b586494e30accfd65a8789592  gcc/testsuite/gcc.target/aarch64/umaddl_combine_1.c
--- 40360,40369 ----
  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
  a5b09578629531d465aefeed46ebae10  gcc/testsuite/gcc.target/aarch64/ubfiz_lsl_1.c
  36ad666b8760a3d2de950ba38d4a02c6  gcc/testsuite/gcc.target/aarch64/ubfx_lsr_1.c
  652ecb3b586494e30accfd65a8789592  gcc/testsuite/gcc.target/aarch64/umaddl_combine_1.c
*************** dc94f6cc36939ec840efaf38cd2c5f0b  gcc/te
*** 38044,38049 ****
--- 40378,40385 ----
  fec967eda33c049f56db1d868caa498e  gcc/testsuite/gcc.target/aarch64/vaddv-intrinsic-compile.c
  233cac300eab2e10bb368145246a76f0  gcc/testsuite/gcc.target/aarch64/vaddv-intrinsic.c
  2c5f051a343e8c52e858f08ad4f1812c  gcc/testsuite/gcc.target/aarch64/vaddv-intrinsic.x
+ fca978b64ea2d7a7456e5eca0e71c11b  gcc/testsuite/gcc.target/aarch64/var_shift_mask_1.c
+ a82a34a90c1885b8543809c27d268007  gcc/testsuite/gcc.target/aarch64/var_shift_mask_2.c
  03a2065f9232d6e1dcf423b6c684c28a  gcc/testsuite/gcc.target/aarch64/vbslq_f64_1.c
  1bf029a98dfd40a160366b47ba152da5  gcc/testsuite/gcc.target/aarch64/vbslq_f64_2.c
  0e006a0f05ff11e653d327f2555f6515  gcc/testsuite/gcc.target/aarch64/vbslq_u64_1.c
*************** bfe5a6a3a53aebcbe2f24517d1b04256  gcc/te
*** 38055,38114 ****
  9ac0a5a454f83f3513fc68f070422119  gcc/testsuite/gcc.target/aarch64/vdup_n_1.c
  1c93884e2e0d923d37c8896f3e314217  gcc/testsuite/gcc.target/aarch64/vdup_n_2.c
  877ab372f3e4aaf9e7594a20ca02a1a4  gcc/testsuite/gcc.target/aarch64/vec_init_1.c
! 73b141dfffee28fc09f1e673e9fde008  gcc/testsuite/gcc.target/aarch64/vect-abs-compile.c
  150dad31fb1f398493599dab4ec3cc43  gcc/testsuite/gcc.target/aarch64/vect-abs.c
  20454cae5b2646ccb3f5b66c7d23be8f  gcc/testsuite/gcc.target/aarch64/vect-abs.x
! 6ade84253664137cadb7d3c1f31deb84  gcc/testsuite/gcc.target/aarch64/vect-add-sub-cond.c
  e4c70b0a81db53ab2d3de4a8f7ac46fd  gcc/testsuite/gcc.target/aarch64/vect-clz.c
! a1a23ecf29eb816c99d03f0a0ccd22ac  gcc/testsuite/gcc.target/aarch64/vect-compile.c
! 36c06ea897084ce6eab8997662346194  gcc/testsuite/gcc.target/aarch64/vect-faddv-compile.c
  561fb26098c56226b672e381ee1cfb4f  gcc/testsuite/gcc.target/aarch64/vect-faddv.c
  82a1b7c6de9e1d98e38135298f34c932  gcc/testsuite/gcc.target/aarch64/vect-faddv.x
! 28779525964528063524d49bb5e745c7  gcc/testsuite/gcc.target/aarch64/vect-fcm-eq-d.c
! 36fb07d01c97f40409795788861fc0c7  gcc/testsuite/gcc.target/aarch64/vect-fcm-eq-f.c
! 5ce50d1a02d769fc57731c2f400220f3  gcc/testsuite/gcc.target/aarch64/vect-fcm-ge-d.c
! 423f8e89127062966f3784fb193c5f2c  gcc/testsuite/gcc.target/aarch64/vect-fcm-ge-f.c
! d15ce479b661908c0bd8f289723ea685  gcc/testsuite/gcc.target/aarch64/vect-fcm-gt-d.c
! 0065db7a48066bab74c21ab268201895  gcc/testsuite/gcc.target/aarch64/vect-fcm-gt-f.c
  47578949be3a9b13d483dd11573fa63d  gcc/testsuite/gcc.target/aarch64/vect-fcm.x
! ae3e3900b1e11e62b81a4a58c8ad4bdf  gcc/testsuite/gcc.target/aarch64/vect-fmax-fmin-compile.c
  ee90316f15da27e84e8dc325bd4f951f  gcc/testsuite/gcc.target/aarch64/vect-fmax-fmin.c
  d9a0bab052e5c4a3749879bd86ede0c8  gcc/testsuite/gcc.target/aarch64/vect-fmax-fmin.x
! f6cc1dceb1628d5804f14db433e5f4e7  gcc/testsuite/gcc.target/aarch64/vect-fmaxv-fminv-compile.c
  f82f908e8104329c91761b0c757a6a92  gcc/testsuite/gcc.target/aarch64/vect-fmaxv-fminv.x
! 96fe9b7a36f5d069d360fd2034d4d734  gcc/testsuite/gcc.target/aarch64/vect-fmovd-zero.c
! 816922c73ad4e1128d09b73990d5da19  gcc/testsuite/gcc.target/aarch64/vect-fmovd.c
! c76c5b3a31b6d243bd2d64b8931faa10  gcc/testsuite/gcc.target/aarch64/vect-fmovf-zero.c
! 9983f2f914df3513c75c823bca04c44b  gcc/testsuite/gcc.target/aarch64/vect-fmovf.c
! 567c515cece3126937c644f73dfcce74  gcc/testsuite/gcc.target/aarch64/vect-fp-compile.c
  56fe5fd155dfa9a5118f23de8dca8d17  gcc/testsuite/gcc.target/aarch64/vect-fp.c
  e399b783d41cb9dc4c49de1306a4fbb1  gcc/testsuite/gcc.target/aarch64/vect-fp.x
! be1bdc4245e8f9d97d2017a7d9bdda1d  gcc/testsuite/gcc.target/aarch64/vect-ld1r-compile-fp.c
! 9d6e45447bf3f2a299406c407e39eee3  gcc/testsuite/gcc.target/aarch64/vect-ld1r-compile.c
  2836275b3fd3ae0087cc9c8cbe47b112  gcc/testsuite/gcc.target/aarch64/vect-ld1r-fp.c
  4ee0b8b86a7f46934c75e16f60f7d87b  gcc/testsuite/gcc.target/aarch64/vect-ld1r.c
  2621a790d86978ccb62d0d3442f8c3ef  gcc/testsuite/gcc.target/aarch64/vect-ld1r.x
! 16c9b06922927524268ab14853389d61  gcc/testsuite/gcc.target/aarch64/vect-movi.c
! f13bec6f9b3ca6c36a1f4177c4e6b5e4  gcc/testsuite/gcc.target/aarch64/vect-mull-compile.c
  4c23211610928caca9d9dbde2a7898ce  gcc/testsuite/gcc.target/aarch64/vect-mull.c
  b4852e7f3c127f3afd7672962421ea8c  gcc/testsuite/gcc.target/aarch64/vect-mull.x
! b1c0d1079e2ecd2d5ac7924d85d7ad1b  gcc/testsuite/gcc.target/aarch64/vect-reduc-or_1.c
! 2d1c693e95a94f2a859ee3a48611567b  gcc/testsuite/gcc.target/aarch64/vect-vaddv.c
  ab6883e822bb3f1fc8d811e7e3f12d7a  gcc/testsuite/gcc.target/aarch64/vect-vca.c
! 06936e9c69ea9e3f51b52d5e099c68cb  gcc/testsuite/gcc.target/aarch64/vect-vcvt.c
  f4f649fed2885c785319cab7327c85be  gcc/testsuite/gcc.target/aarch64/vect-vfmaxv.c
  a02875626b1b0f35faabdf9a94a81379  gcc/testsuite/gcc.target/aarch64/vect-vmaxv.c
  8e92dda024e7991c23b32a3f9256b71c  gcc/testsuite/gcc.target/aarch64/vect-vrnd.c
  8dfcd2a2d7ceb7d5140289d41af9786b  gcc/testsuite/gcc.target/aarch64/vect.c
  b693ee9ea2fea604f11a6e4a32b9b085  gcc/testsuite/gcc.target/aarch64/vect.x
  bb3045dcb1412da7658e5620448319d7  gcc/testsuite/gcc.target/aarch64/vect_combine_zeroes_1.c
! 547e3b2d410716379c0ace6ce702ca37  gcc/testsuite/gcc.target/aarch64/vect_copy_lane_1.c
  df24aaf6990690613ac293de5fa4ddf7  gcc/testsuite/gcc.target/aarch64/vect_ctz_1.c
  ac7e977b4868ba7e6e93eda9b315d240  gcc/testsuite/gcc.target/aarch64/vect_fp16_1.c
  180ddf49a759eca015efba0ac6f72a79  gcc/testsuite/gcc.target/aarch64/vect_int32x2x4_1.c
! 88cc1ded169c980417155c8154ffbc4e  gcc/testsuite/gcc.target/aarch64/vect_saddl_1.c
! 97c17f6587249a0007a77afe0ecb4e7a  gcc/testsuite/gcc.target/aarch64/vect_smlal_1.c
! 9b547c5adac0f402015e87714429a0c7  gcc/testsuite/gcc.target/aarch64/vector_initialization_nostack.c
  91822962d5a71129a8f94a0f50f2c42b  gcc/testsuite/gcc.target/aarch64/vector_intrinsics.c
  7e66886d01e17a3d5f4d365e18f11743  gcc/testsuite/gcc.target/aarch64/vfp-1.c
  a7efe0794d7e3b0752ef79d9b193f732  gcc/testsuite/gcc.target/aarch64/vget_high_1.c
--- 40391,40456 ----
  9ac0a5a454f83f3513fc68f070422119  gcc/testsuite/gcc.target/aarch64/vdup_n_1.c
  1c93884e2e0d923d37c8896f3e314217  gcc/testsuite/gcc.target/aarch64/vdup_n_2.c
  877ab372f3e4aaf9e7594a20ca02a1a4  gcc/testsuite/gcc.target/aarch64/vec_init_1.c
! 2e61bece38f3ab7b21c4586d887d7d40  gcc/testsuite/gcc.target/aarch64/vect-abs-compile.c
  150dad31fb1f398493599dab4ec3cc43  gcc/testsuite/gcc.target/aarch64/vect-abs.c
  20454cae5b2646ccb3f5b66c7d23be8f  gcc/testsuite/gcc.target/aarch64/vect-abs.x
! f5c728d57ec7b4ccd629be9ae3daa4e9  gcc/testsuite/gcc.target/aarch64/vect-add-sub-cond.c
  e4c70b0a81db53ab2d3de4a8f7ac46fd  gcc/testsuite/gcc.target/aarch64/vect-clz.c
! e17c8c4e15c789037c218893bf9161b8  gcc/testsuite/gcc.target/aarch64/vect-compile.c
! d7d37bd9558713b30e8774cf2b0adc67  gcc/testsuite/gcc.target/aarch64/vect-faddv-compile.c
  561fb26098c56226b672e381ee1cfb4f  gcc/testsuite/gcc.target/aarch64/vect-faddv.c
  82a1b7c6de9e1d98e38135298f34c932  gcc/testsuite/gcc.target/aarch64/vect-faddv.x
! 639dd5609e4800adfbf7e5d6b02532de  gcc/testsuite/gcc.target/aarch64/vect-fcm-eq-d.c
! 63766da6f47f270effdea74e59a42ea9  gcc/testsuite/gcc.target/aarch64/vect-fcm-eq-f.c
! b58d151687588f2702146788750623f5  gcc/testsuite/gcc.target/aarch64/vect-fcm-ge-d.c
! 61e18f3347eec2c03b998d87e1a66edb  gcc/testsuite/gcc.target/aarch64/vect-fcm-ge-f.c
! 508a699b0417efa90279517477380e8c  gcc/testsuite/gcc.target/aarch64/vect-fcm-gt-d.c
! dcbcf59e709ae15068ba6ef929f341e4  gcc/testsuite/gcc.target/aarch64/vect-fcm-gt-f.c
  47578949be3a9b13d483dd11573fa63d  gcc/testsuite/gcc.target/aarch64/vect-fcm.x
! 1aa8aee50f880f2fb96efe3d239fe5c5  gcc/testsuite/gcc.target/aarch64/vect-fmax-fmin-compile.c
  ee90316f15da27e84e8dc325bd4f951f  gcc/testsuite/gcc.target/aarch64/vect-fmax-fmin.c
  d9a0bab052e5c4a3749879bd86ede0c8  gcc/testsuite/gcc.target/aarch64/vect-fmax-fmin.x
! b82cd9f1530af5340f35103ab9b4a93e  gcc/testsuite/gcc.target/aarch64/vect-fmaxv-fminv-compile.c
  f82f908e8104329c91761b0c757a6a92  gcc/testsuite/gcc.target/aarch64/vect-fmaxv-fminv.x
! 9f047db97c0bf9ec52f032a68b493817  gcc/testsuite/gcc.target/aarch64/vect-fmovd-zero.c
! 2c13a863507880cfa47082cddd445f7c  gcc/testsuite/gcc.target/aarch64/vect-fmovd.c
! ba3182d686e6105fdc1a3fea00ca2051  gcc/testsuite/gcc.target/aarch64/vect-fmovf-zero.c
! ca3bd408de537c0dcfc7abec9f5ba014  gcc/testsuite/gcc.target/aarch64/vect-fmovf.c
! c4b5b7f241c82756284d60c20d23301c  gcc/testsuite/gcc.target/aarch64/vect-fp-compile.c
  56fe5fd155dfa9a5118f23de8dca8d17  gcc/testsuite/gcc.target/aarch64/vect-fp.c
  e399b783d41cb9dc4c49de1306a4fbb1  gcc/testsuite/gcc.target/aarch64/vect-fp.x
! 8ee7f4404a49d36c3ef8f4b5798a58d7  gcc/testsuite/gcc.target/aarch64/vect-init-1.c
! f50a652e084124d8ff86c1deef24bfb8  gcc/testsuite/gcc.target/aarch64/vect-init-2.c
! 77195e13fe97d8a00375f8c23033740f  gcc/testsuite/gcc.target/aarch64/vect-init-3.c
! 80816908fc7f85e19edcc2c327412159  gcc/testsuite/gcc.target/aarch64/vect-init-4.c
! c1dc1c8c4bf53ce9009691cb397b17fb  gcc/testsuite/gcc.target/aarch64/vect-init-5.c
! 310a12e8a8fcdda5a8a175bb1d12d9a6  gcc/testsuite/gcc.target/aarch64/vect-ld1r-compile-fp.c
! 9bfd7d1c48718facb5521e65bd9a349a  gcc/testsuite/gcc.target/aarch64/vect-ld1r-compile.c
  2836275b3fd3ae0087cc9c8cbe47b112  gcc/testsuite/gcc.target/aarch64/vect-ld1r-fp.c
  4ee0b8b86a7f46934c75e16f60f7d87b  gcc/testsuite/gcc.target/aarch64/vect-ld1r.c
  2621a790d86978ccb62d0d3442f8c3ef  gcc/testsuite/gcc.target/aarch64/vect-ld1r.x
! 22f6ce116cf1714bff01a661551a1010  gcc/testsuite/gcc.target/aarch64/vect-movi.c
! 6fa10a566ef762e5de73c88311dab6fb  gcc/testsuite/gcc.target/aarch64/vect-mull-compile.c
  4c23211610928caca9d9dbde2a7898ce  gcc/testsuite/gcc.target/aarch64/vect-mull.c
  b4852e7f3c127f3afd7672962421ea8c  gcc/testsuite/gcc.target/aarch64/vect-mull.x
! ded4af2ae02936eb4be45e9e08f45373  gcc/testsuite/gcc.target/aarch64/vect-reduc-or_1.c
! b36da87acc826a3d5a4996c3d93d74b4  gcc/testsuite/gcc.target/aarch64/vect-vaddv.c
  ab6883e822bb3f1fc8d811e7e3f12d7a  gcc/testsuite/gcc.target/aarch64/vect-vca.c
! 00f6ce34304d67309d3c34f69cbf32c0  gcc/testsuite/gcc.target/aarch64/vect-vcvt.c
  f4f649fed2885c785319cab7327c85be  gcc/testsuite/gcc.target/aarch64/vect-vfmaxv.c
  a02875626b1b0f35faabdf9a94a81379  gcc/testsuite/gcc.target/aarch64/vect-vmaxv.c
  8e92dda024e7991c23b32a3f9256b71c  gcc/testsuite/gcc.target/aarch64/vect-vrnd.c
+ 9bd1da2ef5ca73f1ef05f54dedc76156  gcc/testsuite/gcc.target/aarch64/vect-xorsign_exec.c
  8dfcd2a2d7ceb7d5140289d41af9786b  gcc/testsuite/gcc.target/aarch64/vect.c
  b693ee9ea2fea604f11a6e4a32b9b085  gcc/testsuite/gcc.target/aarch64/vect.x
  bb3045dcb1412da7658e5620448319d7  gcc/testsuite/gcc.target/aarch64/vect_combine_zeroes_1.c
! a860d5689d18fb33cd0d03f9e3e8f138  gcc/testsuite/gcc.target/aarch64/vect_copy_lane_1.c
  df24aaf6990690613ac293de5fa4ddf7  gcc/testsuite/gcc.target/aarch64/vect_ctz_1.c
  ac7e977b4868ba7e6e93eda9b315d240  gcc/testsuite/gcc.target/aarch64/vect_fp16_1.c
  180ddf49a759eca015efba0ac6f72a79  gcc/testsuite/gcc.target/aarch64/vect_int32x2x4_1.c
! 3237ca045c1415650f4390fad8fe696c  gcc/testsuite/gcc.target/aarch64/vect_saddl_1.c
! 8b98b40c2e7ce896247ab9ceeb2eb1cc  gcc/testsuite/gcc.target/aarch64/vect_smlal_1.c
! 739575d641b47c254cda6c8d642702f9  gcc/testsuite/gcc.target/aarch64/vector_initialization_nostack.c
  91822962d5a71129a8f94a0f50f2c42b  gcc/testsuite/gcc.target/aarch64/vector_intrinsics.c
  7e66886d01e17a3d5f4d365e18f11743  gcc/testsuite/gcc.target/aarch64/vfp-1.c
  a7efe0794d7e3b0752ef79d9b193f732  gcc/testsuite/gcc.target/aarch64/vget_high_1.c
*************** ae3dcb9a10323462d2895ea14f4c6684  gcc/te
*** 38122,38128 ****
  69fe1a151a14ceaba823dfa4f97fb2f4  gcc/testsuite/gcc.target/aarch64/vldN_lane_1.c
  62035331b5c5eb4d0fe9a0334d3e3e5e  gcc/testsuite/gcc.target/aarch64/vminmaxnm.c
  bdf9d08039684c459d9bd2f4906dba34  gcc/testsuite/gcc.target/aarch64/vmlsq_laneq.c
! d45f0c02f4822af4fc2cdfd82b8b8162  gcc/testsuite/gcc.target/aarch64/vmov_n_1.c
  9f424dd56aa71f8e58ceb86afbda1222  gcc/testsuite/gcc.target/aarch64/vneg_f.c
  91034b75bf48a5923d7274f67aa39840  gcc/testsuite/gcc.target/aarch64/vneg_s.c
  2655ac4297efd263942058c5d2f07f09  gcc/testsuite/gcc.target/aarch64/volatile-bitfields-1.c
--- 40464,40470 ----
  69fe1a151a14ceaba823dfa4f97fb2f4  gcc/testsuite/gcc.target/aarch64/vldN_lane_1.c
  62035331b5c5eb4d0fe9a0334d3e3e5e  gcc/testsuite/gcc.target/aarch64/vminmaxnm.c
  bdf9d08039684c459d9bd2f4906dba34  gcc/testsuite/gcc.target/aarch64/vmlsq_laneq.c
! 1aeec0c8b92192849161c4fc9a034681  gcc/testsuite/gcc.target/aarch64/vmov_n_1.c
  9f424dd56aa71f8e58ceb86afbda1222  gcc/testsuite/gcc.target/aarch64/vneg_f.c
  91034b75bf48a5923d7274f67aa39840  gcc/testsuite/gcc.target/aarch64/vneg_s.c
  2655ac4297efd263942058c5d2f07f09  gcc/testsuite/gcc.target/aarch64/volatile-bitfields-1.c
*************** fdf65cde1ab9b0d61f25e804e84db5ad  gcc/te
*** 38142,38151 ****
  b5ecf30fba93e99a54d4a7207e8b7e89  gcc/testsuite/gcc.target/aarch64/vstN_1.c
  bdc07c3b7e37cb1f5eca49bd24a3eebb  gcc/testsuite/gcc.target/aarch64/vstN_lane_1.c
  7a4d12517c5382175058d5696e5dd6dd  gcc/testsuite/gcc.target/aarch64/vsub_f64.c
  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
! 5c928f2b05642a8b41b5fe8dacc7775b  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
--- 40484,40495 ----
  b5ecf30fba93e99a54d4a7207e8b7e89  gcc/testsuite/gcc.target/aarch64/vstN_1.c
  bdc07c3b7e37cb1f5eca49bd24a3eebb  gcc/testsuite/gcc.target/aarch64/vstN_lane_1.c
  7a4d12517c5382175058d5696e5dd6dd  gcc/testsuite/gcc.target/aarch64/vsub_f64.c
+ 1a1d5b3eed51d3d70093486855498c52  gcc/testsuite/gcc.target/aarch64/xorsign.c
+ 69c2e660fb11d6895b17cde723e07c66  gcc/testsuite/gcc.target/aarch64/xorsign_exec.c
  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
! fd6d1a6011a98382a167b98efbd78ad4  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
*************** b36471f8edbf2a11ce23359823ecc10b  gcc/te
*** 38167,38176 ****
  e6d1333accc73a351e98b7ad842cd2be  gcc/testsuite/gcc.target/alpha/pr83628-1.c
  2052308560c0cb7bee41dddbff1ae5f4  gcc/testsuite/gcc.target/alpha/pr83628-2.c
  38c58f9ce3fd2fd442a1637ac9e5e8bd  gcc/testsuite/gcc.target/alpha/pr83628-3.c
  96315e3201d2fa31fb4cbdf30fb2ba4d  gcc/testsuite/gcc.target/arc/abitest.S
  a125f0012bfc0fdad155c9b9bcc0f009  gcc/testsuite/gcc.target/arc/abitest.h
! 05000988e30bf0a0429e952bc0773e17  gcc/testsuite/gcc.target/arc/arc.exp
! b4c6691792153dac0135825788a8e54d  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
  67cb27f1515fdc67ab583f3729ed480e  gcc/testsuite/gcc.target/arc/bitfield.c
--- 40511,40522 ----
  e6d1333accc73a351e98b7ad842cd2be  gcc/testsuite/gcc.target/alpha/pr83628-1.c
  2052308560c0cb7bee41dddbff1ae5f4  gcc/testsuite/gcc.target/alpha/pr83628-2.c
  38c58f9ce3fd2fd442a1637ac9e5e8bd  gcc/testsuite/gcc.target/alpha/pr83628-3.c
+ 5821aa7e8ef51d9e9f03077c43721bd0  gcc/testsuite/gcc.target/alpha/sqrt.c
  96315e3201d2fa31fb4cbdf30fb2ba4d  gcc/testsuite/gcc.target/arc/abitest.S
  a125f0012bfc0fdad155c9b9bcc0f009  gcc/testsuite/gcc.target/arc/abitest.h
! 0f2488d6ec20891fff74b6bebf7bebb8  gcc/testsuite/gcc.target/arc/add_n-combine.c
! 35a2870a04f3712ee10e9f8091699364  gcc/testsuite/gcc.target/arc/arc.exp
! 5e7288068bd459d0a5a822888b6dd227  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
  67cb27f1515fdc67ab583f3729ed480e  gcc/testsuite/gcc.target/arc/bitfield.c
*************** d39117d48547f0c8b7dd408a6e5d642b  gcc/te
*** 38196,38201 ****
--- 40542,40553 ----
  8b3e31bdfff2b63ce252635b1a1fef0b  gcc/testsuite/gcc.target/arc/cmem-st.inc
  ab3e3c633530b0e2e02f20e76907cab4  gcc/testsuite/gcc.target/arc/cond-set-use.c
  d9d9cdf928da4c195b1a99dad0aeda06  gcc/testsuite/gcc.target/arc/extzv-1.c
+ 21cbcf3254b600b2466e9e5c83d11e28  gcc/testsuite/gcc.target/arc/firq-1.c
+ 4e583df9e864022980d99fd265bb3ab5  gcc/testsuite/gcc.target/arc/firq-2.c
+ 9e7b0dfadb2bfbb1e6923742bed484a2  gcc/testsuite/gcc.target/arc/firq-3.c
+ 307e1acc953c65e8df85d7fa9148209a  gcc/testsuite/gcc.target/arc/firq-4.c
+ fea7af7c12eb392f30364e1362155d21  gcc/testsuite/gcc.target/arc/firq-5.c
+ 9f1bfa8b5c1c0dab3cd220e662342a6c  gcc/testsuite/gcc.target/arc/firq-6.c
  d84b29a4749c8b59782ed7037960886b  gcc/testsuite/gcc.target/arc/ieee_eq.c
  9f963e71c7574105d5690f43341ba8ca  gcc/testsuite/gcc.target/arc/insv-1.c
  b408ece5b1b90c502d91b8d9356f6f82  gcc/testsuite/gcc.target/arc/insv-2.c
*************** b408ece5b1b90c502d91b8d9356f6f82  gcc/te
*** 38203,38213 ****
  b97101315961770a5bfbae54b66fb095  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
  8e91f903de2281d3030cf14d194ca3a6  gcc/testsuite/gcc.target/arc/jump-around-jump.c
  9618e65b2127e1c0f867fcc6cf914636  gcc/testsuite/gcc.target/arc/load-update.c
  9f3c200ca573c04082718aa5d3c6152f  gcc/testsuite/gcc.target/arc/long-calls.c
! ec9a1453703f5a2d7000092c23cff0a3  gcc/testsuite/gcc.target/arc/loop-1.c
  e53135efc047d44f945725bbb94f98b5  gcc/testsuite/gcc.target/arc/loop-hazard-1.c
  ea8d0a9c58c13a47c41397306d62c616  gcc/testsuite/gcc.target/arc/mA6.c
  d64d9022cfc74eb84d1a1a26f22d9c16  gcc/testsuite/gcc.target/arc/mA7.c
  10a13507028e810ecae3839285f27a61  gcc/testsuite/gcc.target/arc/mARC600.c
--- 40555,40577 ----
  b97101315961770a5bfbae54b66fb095  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
+ 41556e3384ec1391e4db6025e1d48c8c  gcc/testsuite/gcc.target/arc/interrupt-5.c
+ 6c8de0da751065bbc9b295f7b8b13647  gcc/testsuite/gcc.target/arc/interrupt-6.c
+ 595889dfbd8d6ce827b81609c818446f  gcc/testsuite/gcc.target/arc/interrupt-7.c
+ f6a57e4a55d57f806642518d9e457fc4  gcc/testsuite/gcc.target/arc/interrupt-8.c
+ 154b4c12f5fe1b3324a2dfaf3374a4ed  gcc/testsuite/gcc.target/arc/interrupt-9.c
+ 1201c4f7063edad3883de4d2cbc274dc  gcc/testsuite/gcc.target/arc/jli-1.c
+ 22105be72516ef52d8a7f57da8c94e3a  gcc/testsuite/gcc.target/arc/jli-2.c
  8e91f903de2281d3030cf14d194ca3a6  gcc/testsuite/gcc.target/arc/jump-around-jump.c
  9618e65b2127e1c0f867fcc6cf914636  gcc/testsuite/gcc.target/arc/load-update.c
  9f3c200ca573c04082718aa5d3c6152f  gcc/testsuite/gcc.target/arc/long-calls.c
! e6fd4471e35965064bec7e019a343785  gcc/testsuite/gcc.target/arc/loop-1.c
! a8139c5c60e1336d6ba8fd0f2cd5b87e  gcc/testsuite/gcc.target/arc/loop-2.cpp
! 1fad00abdca4d484b02390b9c329a802  gcc/testsuite/gcc.target/arc/loop-3.c
! ccf48acc07e58a15136e7e2c85a36d6e  gcc/testsuite/gcc.target/arc/loop-4.c
! 5ba1cd91c81e3462387184a5487a64d0  gcc/testsuite/gcc.target/arc/loop-5.cpp
  e53135efc047d44f945725bbb94f98b5  gcc/testsuite/gcc.target/arc/loop-hazard-1.c
+ 5029b1e57501d4214fa7d163235d3a51  gcc/testsuite/gcc.target/arc/lra-1.c
  ea8d0a9c58c13a47c41397306d62c616  gcc/testsuite/gcc.target/arc/mA6.c
  d64d9022cfc74eb84d1a1a26f22d9c16  gcc/testsuite/gcc.target/arc/mA7.c
  10a13507028e810ecae3839285f27a61  gcc/testsuite/gcc.target/arc/mARC600.c
*************** b443447704f4a7b7a2a5c8b97db22640  gcc/te
*** 38239,38256 ****
  baea275c33a1e24b5ae1193f7059ac40  gcc/testsuite/gcc.target/arc/mtune-ARC725D.c
  68a3b828cb2a7e43b370207bcc2f073e  gcc/testsuite/gcc.target/arc/mtune-ARC750D.c
  51a65655bfba373cbacabf27deec612c  gcc/testsuite/gcc.target/arc/mul64.c
! 04e5b7f33ac0880978734aba67530c61  gcc/testsuite/gcc.target/arc/mulsi3_highpart-1.c
! 89596d97ac24037076c947b6cb3471d8  gcc/testsuite/gcc.target/arc/mulsi3_highpart-2.c
  a55caab34589aaad4b44c2b23036a38a  gcc/testsuite/gcc.target/arc/mxy.c
  c2635eb729f09720a184a5826e218569  gcc/testsuite/gcc.target/arc/no-dpfp-lrsr.c
  0bbbf781a932a8fbc0697f2a8bab8ba7  gcc/testsuite/gcc.target/arc/nps400-1.c
  58fc9721ecffbfdff197d4585c412004  gcc/testsuite/gcc.target/arc/nps400-cpu-flag.c
  a6f761c17339470bb07c2d99265ec06d  gcc/testsuite/gcc.target/arc/nv-cache.c
  de1d148fe0e6156b068d3be0465e4657  gcc/testsuite/gcc.target/arc/pr9001090948.c
  2828f1a2b0bac192b17ae1bec8bcaba4  gcc/testsuite/gcc.target/arc/sdata-1.c
  579ed1babb08719766167da5b34817df  gcc/testsuite/gcc.target/arc/sdata-2.c
  9574a7681cc11c0c98c0c6e7b039f125  gcc/testsuite/gcc.target/arc/trsub.c
  69eaaf2f71d5018b7578932d8e325529  gcc/testsuite/gcc.target/arc/umulsihi3_z.c
  6e97aa13b3bef6e111a877f2a6d7a543  gcc/testsuite/gcc.target/arc/v-cache.c
  40998e8abe4feed63cf6f54437473598  gcc/testsuite/gcc.target/arc/va_args-1.c
  ef9f57aa4598e8037d2f89e8b57c2cae  gcc/testsuite/gcc.target/arc/va_args-2.c
--- 40603,40641 ----
  baea275c33a1e24b5ae1193f7059ac40  gcc/testsuite/gcc.target/arc/mtune-ARC725D.c
  68a3b828cb2a7e43b370207bcc2f073e  gcc/testsuite/gcc.target/arc/mtune-ARC750D.c
  51a65655bfba373cbacabf27deec612c  gcc/testsuite/gcc.target/arc/mul64.c
! 46c5b1c885d49d863f7518670ae85e9c  gcc/testsuite/gcc.target/arc/mulsi3_highpart-1.c
! ba4bf462a9c37d750519dce9deb38970  gcc/testsuite/gcc.target/arc/mulsi3_highpart-2.c
  a55caab34589aaad4b44c2b23036a38a  gcc/testsuite/gcc.target/arc/mxy.c
+ 8dbc962d23b65ad48d111bd9dd381dec  gcc/testsuite/gcc.target/arc/naked-1.c
+ 4f4c6738ec0359d10052ca27f1b660ad  gcc/testsuite/gcc.target/arc/naked-2.c
  c2635eb729f09720a184a5826e218569  gcc/testsuite/gcc.target/arc/no-dpfp-lrsr.c
  0bbbf781a932a8fbc0697f2a8bab8ba7  gcc/testsuite/gcc.target/arc/nps400-1.c
  58fc9721ecffbfdff197d4585c412004  gcc/testsuite/gcc.target/arc/nps400-cpu-flag.c
  a6f761c17339470bb07c2d99265ec06d  gcc/testsuite/gcc.target/arc/nv-cache.c
+ 76cbc9fa02438e0b056b240c1acc42a6  gcc/testsuite/gcc.target/arc/pic-1.c
+ 9bcff0642ee893311d6172e5bdfbc249  gcc/testsuite/gcc.target/arc/pr9000674901.c
  de1d148fe0e6156b068d3be0465e4657  gcc/testsuite/gcc.target/arc/pr9001090948.c
+ 26d6771deea16e669ff0f9d35318bebb  gcc/testsuite/gcc.target/arc/pr9001184797.c
+ 167afaa0b0dea93ffc9adefb9fb883c6  gcc/testsuite/gcc.target/arc/pr9001191897.c
+ 94045df90a584be70ae8b5c31fc5f8d1  gcc/testsuite/gcc.target/arc/pr9001195952.c
  2828f1a2b0bac192b17ae1bec8bcaba4  gcc/testsuite/gcc.target/arc/sdata-1.c
  579ed1babb08719766167da5b34817df  gcc/testsuite/gcc.target/arc/sdata-2.c
+ 6b7fadfc0dc505b4d43077e7322615c7  gcc/testsuite/gcc.target/arc/sdata-3.c
+ d0d9ef681fbb444736d5e1a93af1b4d7  gcc/testsuite/gcc.target/arc/sdata-4.c
+ 3548ca5684b59d3df3f1b73f4af93e08  gcc/testsuite/gcc.target/arc/sdata-5.c
+ e5e848898853bc4d0fcffb1d5c59a37c  gcc/testsuite/gcc.target/arc/sub_n-combine.c
+ d98c22783b8b7aa60168331e19fb3c03  gcc/testsuite/gcc.target/arc/taux-1.c
+ c519795c715b1ee38d8570576574b148  gcc/testsuite/gcc.target/arc/taux-2.c
+ 96d2f45c2e97c55bc84b472d2f3d175e  gcc/testsuite/gcc.target/arc/tdelay_slots.cpp
+ efb2abd7da552d195e873185bd47bf27  gcc/testsuite/gcc.target/arc/tdelegitimize_addr.c
+ b246fb8370a4502c2a0b17a18b9f54cb  gcc/testsuite/gcc.target/arc/tls-1.c
+ 865a53800c3a49b204bdc5fb750927bd  gcc/testsuite/gcc.target/arc/tmac-1.c
+ 3214b2c4fef253edbd6ee47ba6b9b512  gcc/testsuite/gcc.target/arc/tmac-2.c
+ fc60d81a81f1025434b2711d3bc9cade  gcc/testsuite/gcc.target/arc/tmac.h
  9574a7681cc11c0c98c0c6e7b039f125  gcc/testsuite/gcc.target/arc/trsub.c
+ a24fff6b9de97d4c521c21740460ccae  gcc/testsuite/gcc.target/arc/tumaddsidi4.c
  69eaaf2f71d5018b7578932d8e325529  gcc/testsuite/gcc.target/arc/umulsihi3_z.c
+ 721ddfeb1e6af8110e1f5975daed686d  gcc/testsuite/gcc.target/arc/uncached.c
  6e97aa13b3bef6e111a877f2a6d7a543  gcc/testsuite/gcc.target/arc/v-cache.c
  40998e8abe4feed63cf6f54437473598  gcc/testsuite/gcc.target/arc/va_args-1.c
  ef9f57aa4598e8037d2f89e8b57c2cae  gcc/testsuite/gcc.target/arc/va_args-2.c
*************** a1acd010b6cb682a38b9798f3d8ac238  gcc/te
*** 38261,38288 ****
  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
! 180f395bbcf211ffc47c3070b30e5719  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
  74d65ad93e2f5204636ec076f5571401  gcc/testsuite/gcc.target/arm/aapcs/align3.c
! 16f4278603d4f31a37ba73ad2f12a1bf  gcc/testsuite/gcc.target/arm/aapcs/align4.c
  c18538cb516b598575dfc6090ca610cc  gcc/testsuite/gcc.target/arm/aapcs/align_rec1.c
  9179bb8ff4b741eb8f291ca76a628286  gcc/testsuite/gcc.target/arm/aapcs/align_rec2.c
  251cc13af8554ca9a3ad90be2a0dbaff  gcc/testsuite/gcc.target/arm/aapcs/align_rec3.c
! 5444f0c2f34849a9085f58dd62f67894  gcc/testsuite/gcc.target/arm/aapcs/align_rec4.c
  43e16cfa1c4143ba597d0fb76f3f7597  gcc/testsuite/gcc.target/arm/aapcs/align_vaarg1.c
  53b3494dc1447f3f71248facdacf3f28  gcc/testsuite/gcc.target/arm/aapcs/align_vaarg2.c
  cb53dcddbb7497782403def1a65e74c2  gcc/testsuite/gcc.target/arm/aapcs/neon-constants.h
! 76d17dbcad4d2aa3754c4977df73ef4b  gcc/testsuite/gcc.target/arm/aapcs/neon-vect1.c
  2f88798b984fcc87c89e329d64ebb177  gcc/testsuite/gcc.target/arm/aapcs/neon-vect10.c
! 3744e115d2b018260a0660a459dd9cac  gcc/testsuite/gcc.target/arm/aapcs/neon-vect2.c
! c62f624d6580cf77eebf85df9bed8e20  gcc/testsuite/gcc.target/arm/aapcs/neon-vect3.c
! f00871bd800a4702757b357b1b2d6958  gcc/testsuite/gcc.target/arm/aapcs/neon-vect4.c
! b9a0de1cf64aa143b16b567934aeda08  gcc/testsuite/gcc.target/arm/aapcs/neon-vect5.c
! 4e747d18694ddb774e64c18461cddabc  gcc/testsuite/gcc.target/arm/aapcs/neon-vect6.c
! 4748eb0b8ff84d264fc888192a34393b  gcc/testsuite/gcc.target/arm/aapcs/neon-vect7.c
! 7a5efbbc8fc67757ed95bf2317e4c698  gcc/testsuite/gcc.target/arm/aapcs/neon-vect8.c
  fe0f58840a45e5a789e010066cba19fe  gcc/testsuite/gcc.target/arm/aapcs/neon-vect9.c
  098090c1b21d064085789b15e57f292f  gcc/testsuite/gcc.target/arm/aapcs/vfp1.c
  5f44b93b0a1959af7414a7ba37ed7b6a  gcc/testsuite/gcc.target/arm/aapcs/vfp10.c
--- 40646,40673 ----
  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
! 8330fc88e3d6fdf91a87e86397ac75f2  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
  74d65ad93e2f5204636ec076f5571401  gcc/testsuite/gcc.target/arm/aapcs/align3.c
! d8afc56b2b1252e30a9f8ad12187de21  gcc/testsuite/gcc.target/arm/aapcs/align4.c
  c18538cb516b598575dfc6090ca610cc  gcc/testsuite/gcc.target/arm/aapcs/align_rec1.c
  9179bb8ff4b741eb8f291ca76a628286  gcc/testsuite/gcc.target/arm/aapcs/align_rec2.c
  251cc13af8554ca9a3ad90be2a0dbaff  gcc/testsuite/gcc.target/arm/aapcs/align_rec3.c
! 46d33d2d3878093edd8dad8da6d5c822  gcc/testsuite/gcc.target/arm/aapcs/align_rec4.c
  43e16cfa1c4143ba597d0fb76f3f7597  gcc/testsuite/gcc.target/arm/aapcs/align_vaarg1.c
  53b3494dc1447f3f71248facdacf3f28  gcc/testsuite/gcc.target/arm/aapcs/align_vaarg2.c
  cb53dcddbb7497782403def1a65e74c2  gcc/testsuite/gcc.target/arm/aapcs/neon-constants.h
! 86d8af224b53c5855425398bbfc70012  gcc/testsuite/gcc.target/arm/aapcs/neon-vect1.c
  2f88798b984fcc87c89e329d64ebb177  gcc/testsuite/gcc.target/arm/aapcs/neon-vect10.c
! fd21e9074b64f492afa483454b76e843  gcc/testsuite/gcc.target/arm/aapcs/neon-vect2.c
! ca6410c980c38a648ce22c267679fa84  gcc/testsuite/gcc.target/arm/aapcs/neon-vect3.c
! eec01668c531e2deb0d21bd1af2f99b2  gcc/testsuite/gcc.target/arm/aapcs/neon-vect4.c
! 3b3cd883c41014e884ccaba96e0cf285  gcc/testsuite/gcc.target/arm/aapcs/neon-vect5.c
! 71a1b0dd32e93c63eb6aa15f157acf3d  gcc/testsuite/gcc.target/arm/aapcs/neon-vect6.c
! 6fde7089f27fc88f37c18481d3900524  gcc/testsuite/gcc.target/arm/aapcs/neon-vect7.c
! 811155d446689c7116e1f7bab315b79b  gcc/testsuite/gcc.target/arm/aapcs/neon-vect8.c
  fe0f58840a45e5a789e010066cba19fe  gcc/testsuite/gcc.target/arm/aapcs/neon-vect9.c
  098090c1b21d064085789b15e57f292f  gcc/testsuite/gcc.target/arm/aapcs/vfp1.c
  5f44b93b0a1959af7414a7ba37ed7b6a  gcc/testsuite/gcc.target/arm/aapcs/vfp10.c
*************** b03843d0bfb6128e2d6e634be21c3021  gcc/te
*** 38309,38317 ****
  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
! 1af149c3ab218d4b76c23abbeb2f1e79  gcc/testsuite/gcc.target/arm/acle/acle.exp
! 5ae3dccaa73e632e9a0a2ac3957f7b48  gcc/testsuite/gcc.target/arm/acle/cdp.c
! 0c25574f10e0a9f6221d7d76cd513b23  gcc/testsuite/gcc.target/arm/acle/cdp2.c
  89e0b1ee8cdd6058a5c2459238d2a674  gcc/testsuite/gcc.target/arm/acle/crc32b.c
  be85b1e46c308a5dccdc3efb9f674bc4  gcc/testsuite/gcc.target/arm/acle/crc32cb.c
  22514156e49a02ee0713339464c024ff  gcc/testsuite/gcc.target/arm/acle/crc32cd.c
--- 40694,40702 ----
  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
! 49c8af6d847e064ca0c69f7c1da7efab  gcc/testsuite/gcc.target/arm/acle/acle.exp
! 3a536de8aea847ec9af87c79566cb0ea  gcc/testsuite/gcc.target/arm/acle/cdp.c
! 21bae53d40e1daa1f24657630c447f6e  gcc/testsuite/gcc.target/arm/acle/cdp2.c
  89e0b1ee8cdd6058a5c2459238d2a674  gcc/testsuite/gcc.target/arm/acle/crc32b.c
  be85b1e46c308a5dccdc3efb9f674bc4  gcc/testsuite/gcc.target/arm/acle/crc32cb.c
  22514156e49a02ee0713339464c024ff  gcc/testsuite/gcc.target/arm/acle/crc32cd.c
*************** a7f2e5349eb3677d4e532197beb261b8  gcc/te
*** 38320,38356 ****
  70d3af1373b3a49fb1912dca6e377274  gcc/testsuite/gcc.target/arm/acle/crc32d.c
  21b20cecbc6689dc6367a96e210b956e  gcc/testsuite/gcc.target/arm/acle/crc32h.c
  2d7c8358817ecb57e689202c2e4f2dd6  gcc/testsuite/gcc.target/arm/acle/crc32w.c
! c0a60edc84f3c06a7ad9b7d1b00eb9d7  gcc/testsuite/gcc.target/arm/acle/ldc.c
! 27e8a6c82331249035f3301e2dc262d0  gcc/testsuite/gcc.target/arm/acle/ldc2.c
! b1be2a70a7f0e36489fea85861807f0d  gcc/testsuite/gcc.target/arm/acle/ldc2l.c
! 3cc9c1603c0f6ceca77ec36c6fd5b64b  gcc/testsuite/gcc.target/arm/acle/ldcl.c
! 2fc1c9b4b4c004d120c52a52f294b9a6  gcc/testsuite/gcc.target/arm/acle/mcr.c
! a9ee15519ea58945371600218a682a4a  gcc/testsuite/gcc.target/arm/acle/mcr2.c
! 9d0e7a40d8c76429507fc689cb5bd2f1  gcc/testsuite/gcc.target/arm/acle/mcrr.c
! 68c4cb0856a448588ccd7e00c1b1029d  gcc/testsuite/gcc.target/arm/acle/mcrr2.c
! caf47854196543a964245098c681aa5a  gcc/testsuite/gcc.target/arm/acle/mrc.c
! cba3d6f381e4754b4ea1ff78cb3d4295  gcc/testsuite/gcc.target/arm/acle/mrc2.c
! f9c81e55adbccc8f56cf36b720c45e56  gcc/testsuite/gcc.target/arm/acle/mrrc.c
! 22f6eb941fa34e7c6d31364112bd617a  gcc/testsuite/gcc.target/arm/acle/mrrc2.c
! 28d88c67a9ad9631b7228ece0f361274  gcc/testsuite/gcc.target/arm/acle/stc.c
! 1b64ab079446b784a03f1e84792cb996  gcc/testsuite/gcc.target/arm/acle/stc2.c
! be022c408b03ee3f6609690a30241d19  gcc/testsuite/gcc.target/arm/acle/stc2l.c
! c9a382c97b4a968dd441a5a16d02a099  gcc/testsuite/gcc.target/arm/acle/stcl.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
! eb3d52e0e5f802e679e500e946caaace  gcc/testsuite/gcc.target/arm/arm.exp
  30369aea23a527014e8bea0527958ce9  gcc/testsuite/gcc.target/arm/armv5_thumb_isa.c
  12dc8396b9afbc212b8534f4a61a77bb  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
  70d2176f2f14d87a3e73331abb72a491  gcc/testsuite/gcc.target/arm/armv8-sync-op-full.c
  32fe7261a03a9e52888cbdcc42aea743  gcc/testsuite/gcc.target/arm/armv8-sync-op-release.c
! e6770b783be0247df9d00ba6fca2db38  gcc/testsuite/gcc.target/arm/armv8_2-fp16-arith-1.c
  e760d8a00f0e4b4ceedce756dc61f6c1  gcc/testsuite/gcc.target/arm/armv8_2-fp16-conv-1.c
! b9b4382da0b3af6ae47621e905f7dd19  gcc/testsuite/gcc.target/arm/armv8_2-fp16-move-1.c
! 418eabc8592f05c73d84d1c2107a8436  gcc/testsuite/gcc.target/arm/armv8_2-fp16-move-2.c
! 20837f6c567b11de8d8f031382f853a7  gcc/testsuite/gcc.target/arm/armv8_2-fp16-neon-1.c
  8f88cdcfdc86a7068680b15dfe795b54  gcc/testsuite/gcc.target/arm/armv8_2-fp16-scalar-1.c
  9aa63d4bf1d824cace921a6c5d1d2ab6  gcc/testsuite/gcc.target/arm/armv8_2-fp16-scalar-2.c
  3c2cfbc0cc70901d1869bf605a1c1bad  gcc/testsuite/gcc.target/arm/asm.c
--- 40705,40747 ----
  70d3af1373b3a49fb1912dca6e377274  gcc/testsuite/gcc.target/arm/acle/crc32d.c
  21b20cecbc6689dc6367a96e210b956e  gcc/testsuite/gcc.target/arm/acle/crc32h.c
  2d7c8358817ecb57e689202c2e4f2dd6  gcc/testsuite/gcc.target/arm/acle/crc32w.c
! 15caa7f54c3a3e06d97de61aaaa7ca1c  gcc/testsuite/gcc.target/arm/acle/ldc.c
! 343921f8186546d1f5253679431b890b  gcc/testsuite/gcc.target/arm/acle/ldc2.c
! deee7c31c5c250e8d2a4897962cdea6b  gcc/testsuite/gcc.target/arm/acle/ldc2l.c
! 624f21c628f0db266ffbb61efa0744c4  gcc/testsuite/gcc.target/arm/acle/ldcl.c
! 3bab4e19ec4b17521402dfe4ef493288  gcc/testsuite/gcc.target/arm/acle/mcr.c
! 7762e55b0ca2ef639e394dcbf0310e9d  gcc/testsuite/gcc.target/arm/acle/mcr2.c
! 835054b801b16b5cdedbb209ce908545  gcc/testsuite/gcc.target/arm/acle/mcrr.c
! ad33a8d60b3b2cd3d4f1a464974118d3  gcc/testsuite/gcc.target/arm/acle/mcrr2.c
! eee783c37d90eef12bf5d89dd9e9f34c  gcc/testsuite/gcc.target/arm/acle/mrc.c
! 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
! 142b21041a309b18a6c1b2d726793af0  gcc/testsuite/gcc.target/arm/acle/stc.c
! 69fb9fba690d815775812437aa4169cb  gcc/testsuite/gcc.target/arm/acle/stc2.c
! c65022a81cf8898ea37c82f9a6fe227f  gcc/testsuite/gcc.target/arm/acle/stc2l.c
! fc648f69779c2ae9f4075ca8aed84b4f  gcc/testsuite/gcc.target/arm/acle/stcl.c
! 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
  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
! 8ff9d36f8b3f68a68b54c516428c51e1  gcc/testsuite/gcc.target/arm/arm.exp
  30369aea23a527014e8bea0527958ce9  gcc/testsuite/gcc.target/arm/armv5_thumb_isa.c
  12dc8396b9afbc212b8534f4a61a77bb  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
  70d2176f2f14d87a3e73331abb72a491  gcc/testsuite/gcc.target/arm/armv8-sync-op-full.c
  32fe7261a03a9e52888cbdcc42aea743  gcc/testsuite/gcc.target/arm/armv8-sync-op-release.c
! 89f9f477194c40b77ee3c7bb74c37468  gcc/testsuite/gcc.target/arm/armv8_2-fp16-arith-1.c
! eafc5597e26e8f96028920f121852220  gcc/testsuite/gcc.target/arm/armv8_2-fp16-arith-2.c
  e760d8a00f0e4b4ceedce756dc61f6c1  gcc/testsuite/gcc.target/arm/armv8_2-fp16-conv-1.c
! aa921c2d031c910eac20c393d5ada86c  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
! c5f374e65349cde6053f285d90ab96c5  gcc/testsuite/gcc.target/arm/armv8_2-fp16-neon-2.c
! 992185bff8a637178d6613bb76a8369c  gcc/testsuite/gcc.target/arm/armv8_2-fp16-neon-3.c
  8f88cdcfdc86a7068680b15dfe795b54  gcc/testsuite/gcc.target/arm/armv8_2-fp16-scalar-1.c
  9aa63d4bf1d824cace921a6c5d1d2ab6  gcc/testsuite/gcc.target/arm/armv8_2-fp16-scalar-2.c
  3c2cfbc0cc70901d1869bf605a1c1bad  gcc/testsuite/gcc.target/arm/asm.c
*************** b623510ec705d6b7193e2c0e2a0f5f94  gcc/te
*** 38419,38426 ****
  6f5448d43fe1db047a8d790ae666a6c8  gcc/testsuite/gcc.target/arm/bics_2.c
  737e99e41cecd5bc4c1c91c76e580e6b  gcc/testsuite/gcc.target/arm/bics_3.c
  8a63eeba730368096509797a3284dc46  gcc/testsuite/gcc.target/arm/bics_4.c
! ac89910ac872b651dfb4457a1e67951a  gcc/testsuite/gcc.target/arm/builtin-bswap-1.c
! f9074fee3a2786feff25e5a5a998932a  gcc/testsuite/gcc.target/arm/builtin-bswap16-1.c
  6b4152bae8222e0433ac1b92b0200514  gcc/testsuite/gcc.target/arm/builtin-trap.c
  44833938c9ecc1eefbe178f9336c0e47  gcc/testsuite/gcc.target/arm/builtin_saddl.c
  95ea8c479231448e1bf06991a31702cb  gcc/testsuite/gcc.target/arm/builtin_saddll.c
--- 40810,40822 ----
  6f5448d43fe1db047a8d790ae666a6c8  gcc/testsuite/gcc.target/arm/bics_2.c
  737e99e41cecd5bc4c1c91c76e580e6b  gcc/testsuite/gcc.target/arm/bics_3.c
  8a63eeba730368096509797a3284dc46  gcc/testsuite/gcc.target/arm/bics_4.c
! 0fd8a665cdc25d00e7cd297ae567a70f  gcc/testsuite/gcc.target/arm/bics_5.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
! a44e6820d28af4953febbbc86ab18887  gcc/testsuite/gcc.target/arm/builtin-bswap16-1.c
! 495680756bf372f5619a696bc526ad09  gcc/testsuite/gcc.target/arm/builtin-bswap16-2.c
! ffe05528d9d41b8523ca6d2cec69fdd3  gcc/testsuite/gcc.target/arm/builtin-bswap16.x
  6b4152bae8222e0433ac1b92b0200514  gcc/testsuite/gcc.target/arm/builtin-trap.c
  44833938c9ecc1eefbe178f9336c0e47  gcc/testsuite/gcc.target/arm/builtin_saddl.c
  95ea8c479231448e1bf06991a31702cb  gcc/testsuite/gcc.target/arm/builtin_saddll.c
*************** f842ae48d03fd71d6c4251ee6b88d526  gcc/te
*** 38433,38501 ****
  528a1cc7ada5bc63c0c59152d86b8557  gcc/testsuite/gcc.target/arm/cbz.c
  78f9bef0e50a143219120e7b5b4af7b9  gcc/testsuite/gcc.target/arm/cmp-1.c
  ca099d7ecdfa4c09890f21bb97ce3751  gcc/testsuite/gcc.target/arm/cmp-2.c
! dfc49cfba0e01c45666d7c7e4693d6d9  gcc/testsuite/gcc.target/arm/cmse/baseline/bitfield-4.c
! f9df41fe81b8b6d1206b16b9115d7404  gcc/testsuite/gcc.target/arm/cmse/baseline/bitfield-5.c
! 8d6ed7c2f812c8caecd5b09b1b3b85bb  gcc/testsuite/gcc.target/arm/cmse/baseline/bitfield-6.c
! 0474544758f87a78beb93aa86f4898d9  gcc/testsuite/gcc.target/arm/cmse/baseline/bitfield-7.c
! 36b4487532a2adcf349f1ef46066213a  gcc/testsuite/gcc.target/arm/cmse/baseline/bitfield-8.c
! 486aaaa6bff3a7427444c7dd74ba1d8f  gcc/testsuite/gcc.target/arm/cmse/baseline/bitfield-9.c
! 501bac30ad6a61fc0a5d8b3e1275d452  gcc/testsuite/gcc.target/arm/cmse/baseline/bitfield-and-union-1.c
! 54bd99439af927693d91aea3df77ec7e  gcc/testsuite/gcc.target/arm/cmse/baseline/cmse-11.c
! 7d2b53c47545a9c03c1eb7e909a8d88a  gcc/testsuite/gcc.target/arm/cmse/baseline/cmse-13.c
! d3451c572bbf045c2442284302a6e1d7  gcc/testsuite/gcc.target/arm/cmse/baseline/cmse-2.c
! 1441f69e135ee58e65860bf014c85d65  gcc/testsuite/gcc.target/arm/cmse/baseline/cmse-6.c
! 5ad43cc83ffd2df65d4f79f110687b79  gcc/testsuite/gcc.target/arm/cmse/baseline/softfp.c
! e26e8a5a8ebb399d9b6d861d2f75b1ca  gcc/testsuite/gcc.target/arm/cmse/baseline/union-1.c
! ba4d912b7df5b05880a1fcd6ed2f861c  gcc/testsuite/gcc.target/arm/cmse/baseline/union-2.c
  d73affc874ce0f2af9cd4673c5935094  gcc/testsuite/gcc.target/arm/cmse/bitfield-1.c
  c98322bc74e742e17d883b6f08eba6b6  gcc/testsuite/gcc.target/arm/cmse/bitfield-2.c
  47975be0917defd863d260e03341ca9f  gcc/testsuite/gcc.target/arm/cmse/bitfield-3.c
! 072cd20ecdc2b1c1c9dd17389cfb13fd  gcc/testsuite/gcc.target/arm/cmse/cmse-1.c
  1e1c02e1686193d25b6ba38abeaf153c  gcc/testsuite/gcc.target/arm/cmse/cmse-10.c
  ebdb15be89bef0e9c175a92e85f05897  gcc/testsuite/gcc.target/arm/cmse/cmse-12.c
! 9533b51796764846665f25883a998099  gcc/testsuite/gcc.target/arm/cmse/cmse-14.c
  fc905be774a4cc4f64a854487d186e87  gcc/testsuite/gcc.target/arm/cmse/cmse-15.c
  266f2af407dee9fa3bf85b781282684c  gcc/testsuite/gcc.target/arm/cmse/cmse-3.c
  4c264cc4ce26c3ecec599c99d3e29942  gcc/testsuite/gcc.target/arm/cmse/cmse-4.c
  3e08dab2191a28ebf2e7cc39595d7dc7  gcc/testsuite/gcc.target/arm/cmse/cmse-9.c
! c9b12db1b53e78a1b99ddd891765f1d9  gcc/testsuite/gcc.target/arm/cmse/cmse.exp
! 025f9faa4d406ba8442ebee9871df74e  gcc/testsuite/gcc.target/arm/cmse/mainline/bitfield-4.c
! 8938696b3ea991d6c29785fa5efa72ec  gcc/testsuite/gcc.target/arm/cmse/mainline/bitfield-5.c
! dfac7a087fbc4ff85e5624ab02837b28  gcc/testsuite/gcc.target/arm/cmse/mainline/bitfield-6.c
! fd35b051bf4d4acc0c10bdf25cbe6b9c  gcc/testsuite/gcc.target/arm/cmse/mainline/bitfield-7.c
! 940f3917bc0941a1bbafc7b3f882cbcb  gcc/testsuite/gcc.target/arm/cmse/mainline/bitfield-8.c
! e37b5d25933cce19a0177dcfc5c90199  gcc/testsuite/gcc.target/arm/cmse/mainline/bitfield-9.c
! b0f3b406043204c6b2d97d0ac9cc9cf7  gcc/testsuite/gcc.target/arm/cmse/mainline/bitfield-and-union-1.c
! f521ce493b54f72f75148f52d5115fb4  gcc/testsuite/gcc.target/arm/cmse/mainline/hard-sp/cmse-13.c
! fab4ffd91a78ecf15bde9f14743a5c15  gcc/testsuite/gcc.target/arm/cmse/mainline/hard-sp/cmse-5.c
! 8ac02cb8e898ff50d9f550e49890dd7e  gcc/testsuite/gcc.target/arm/cmse/mainline/hard-sp/cmse-7.c
! 47eec74108661ab9e38f29a330418cb6  gcc/testsuite/gcc.target/arm/cmse/mainline/hard-sp/cmse-8.c
! bbe39eb5445f4fc877e5d66a25a69082  gcc/testsuite/gcc.target/arm/cmse/mainline/hard/cmse-13.c
! 3a66487b99858a44ab89ba607b8b6b78  gcc/testsuite/gcc.target/arm/cmse/mainline/hard/cmse-5.c
! b8923698e94b1a9fbae7f065f1690687  gcc/testsuite/gcc.target/arm/cmse/mainline/hard/cmse-7.c
! 04fe5a90cef1d1bfd17cb15c5dfa1007  gcc/testsuite/gcc.target/arm/cmse/mainline/hard/cmse-8.c
! 8e2f7f42f3aa5091b329f1bb9ddd006c  gcc/testsuite/gcc.target/arm/cmse/mainline/soft/cmse-13.c
! 0d465a0e935ae2bce64f253b285bcf01  gcc/testsuite/gcc.target/arm/cmse/mainline/soft/cmse-5.c
! e54333a9ba6aafa69fefa2cd38744c19  gcc/testsuite/gcc.target/arm/cmse/mainline/soft/cmse-7.c
! 85d7d16ffa3e1829953fe6a9768e5309  gcc/testsuite/gcc.target/arm/cmse/mainline/soft/cmse-8.c
! 5c6b074de89cb700b8ff16e0974b43d9  gcc/testsuite/gcc.target/arm/cmse/mainline/softfp-sp/cmse-5.c
! ca3266a9970bdba95065e7fb8d5ad175  gcc/testsuite/gcc.target/arm/cmse/mainline/softfp-sp/cmse-7.c
! 2429a646eee8478ff911831386a82fb2  gcc/testsuite/gcc.target/arm/cmse/mainline/softfp-sp/cmse-8.c
! 9615dd84b882b70dc1d0b373d57c904d  gcc/testsuite/gcc.target/arm/cmse/mainline/softfp/cmse-13.c
! 56cc3088402ecfb185be3ea0265f67d9  gcc/testsuite/gcc.target/arm/cmse/mainline/softfp/cmse-5.c
! 4e54aedf0046b6787413c8e600065867  gcc/testsuite/gcc.target/arm/cmse/mainline/softfp/cmse-7.c
! 379e51b766c7f690e9c1dd67090b59a8  gcc/testsuite/gcc.target/arm/cmse/mainline/softfp/cmse-8.c
! 87a799470c0bc83b6a13861d88a3af74  gcc/testsuite/gcc.target/arm/cmse/mainline/union-1.c
! 9f5d21002f0697295cd48b442dc5da91  gcc/testsuite/gcc.target/arm/cmse/mainline/union-2.c
  018eb841691c5963d8832c729601632a  gcc/testsuite/gcc.target/arm/cmse/struct-1.c
! 95ed7b0b6c43ea964a8233fb6e701318  gcc/testsuite/gcc.target/arm/cold-lc.c
  a584e2c054692af37faeadd1f461800b  gcc/testsuite/gcc.target/arm/combine-cmp-shift.c
  4aca50869b79ab15beb4a0ff13338a21  gcc/testsuite/gcc.target/arm/combine-movs.c
  257aa0b2b8891d05f782af1a15b2ed25  gcc/testsuite/gcc.target/arm/cond-asm.c
  37ee43df70f4d07a257b2684561a574c  gcc/testsuite/gcc.target/arm/cond_sub_restrict_it.c
  ea5c06143f89f8b3c26a3c80f255d03b  gcc/testsuite/gcc.target/arm/condarith_restrict_it.c
  702468e7cb2029f03eaac95e5eea0533  gcc/testsuite/gcc.target/arm/constant-pool.c
! 169e539f2d73481304b7fe9e25c4f96d  gcc/testsuite/gcc.target/arm/copysign_softfloat_1.c
  1c89ba825c88653c01849f8986e1542b  gcc/testsuite/gcc.target/arm/crypto-vaesdq_u8.c
  2ed72824fb0f88ddb43549410040a784  gcc/testsuite/gcc.target/arm/crypto-vaeseq_u8.c
  abba2731624485a0118e2059f5e1c67a  gcc/testsuite/gcc.target/arm/crypto-vaesimcq_u8.c
--- 40829,40911 ----
  528a1cc7ada5bc63c0c59152d86b8557  gcc/testsuite/gcc.target/arm/cbz.c
  78f9bef0e50a143219120e7b5b4af7b9  gcc/testsuite/gcc.target/arm/cmp-1.c
  ca099d7ecdfa4c09890f21bb97ce3751  gcc/testsuite/gcc.target/arm/cmp-2.c
! 9f2de3339c3b7f21140aa8d2dadb9ee3  gcc/testsuite/gcc.target/arm/cmse/baseline/bitfield-4.c
! a10dede150765434e60cfa833fb76c71  gcc/testsuite/gcc.target/arm/cmse/baseline/bitfield-5.c
! cbb00df39d34b2b5a82d2883a8833841  gcc/testsuite/gcc.target/arm/cmse/baseline/bitfield-6.c
! 9f6aa7d7eabfc01c6e053d9bea8e1216  gcc/testsuite/gcc.target/arm/cmse/baseline/bitfield-7.c
! 5846deac58f25779bfbbbff4d708ab19  gcc/testsuite/gcc.target/arm/cmse/baseline/bitfield-8.c
! 0ab894bb3dec65c6372b9f2e60bd87bb  gcc/testsuite/gcc.target/arm/cmse/baseline/bitfield-9.c
! 2a43cea50b7bbb187f57e4b19cd1d255  gcc/testsuite/gcc.target/arm/cmse/baseline/bitfield-and-union.c
! f277dba30be4967e0df3da23d063b8e7  gcc/testsuite/gcc.target/arm/cmse/baseline/cmse-11.c
! 268602c0a1515cd85be092ddcc019aa1  gcc/testsuite/gcc.target/arm/cmse/baseline/cmse-13.c
! 85a05e1c9026a45f737ef83d09d69ae4  gcc/testsuite/gcc.target/arm/cmse/baseline/cmse-2.c
! a4114cf2b3bd0ac0af3dffbbe0b40004  gcc/testsuite/gcc.target/arm/cmse/baseline/cmse-6.c
! fe7a4c5f3716dc5a70ced07b14edc125  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
  d73affc874ce0f2af9cd4673c5935094  gcc/testsuite/gcc.target/arm/cmse/bitfield-1.c
  c98322bc74e742e17d883b6f08eba6b6  gcc/testsuite/gcc.target/arm/cmse/bitfield-2.c
  47975be0917defd863d260e03341ca9f  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
! 52bda0f55dad71b45f9928cf777c2a1f  gcc/testsuite/gcc.target/arm/cmse/bitfield-7.x
! 349ba1cac6ae95067ccf369d11b06104  gcc/testsuite/gcc.target/arm/cmse/bitfield-8.x
! 801515ca20b11a5915a7e84457fc93ac  gcc/testsuite/gcc.target/arm/cmse/bitfield-9.x
! 7b8ec941c04f437ae38274b1d2dcc488  gcc/testsuite/gcc.target/arm/cmse/bitfield-and-union.x
! 875d522ed8e7c24de2f9400b9b33aae0  gcc/testsuite/gcc.target/arm/cmse/cmse-1.c
  1e1c02e1686193d25b6ba38abeaf153c  gcc/testsuite/gcc.target/arm/cmse/cmse-10.c
  ebdb15be89bef0e9c175a92e85f05897  gcc/testsuite/gcc.target/arm/cmse/cmse-12.c
! 345628b6955bb78f99657e95ad7a6b53  gcc/testsuite/gcc.target/arm/cmse/cmse-13.x
! 402470a776931a2a9d6936b73d5e2176  gcc/testsuite/gcc.target/arm/cmse/cmse-14.c
  fc905be774a4cc4f64a854487d186e87  gcc/testsuite/gcc.target/arm/cmse/cmse-15.c
+ f76ced2a530d80991ba85c2e39dd5dd4  gcc/testsuite/gcc.target/arm/cmse/cmse-16.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
  3e08dab2191a28ebf2e7cc39595d7dc7  gcc/testsuite/gcc.target/arm/cmse/cmse-9.c
! ce042d67a1618796f698d6d245fcdd12  gcc/testsuite/gcc.target/arm/cmse/cmse.exp
! 0aae44908d1643a190aa184b078ae7a9  gcc/testsuite/gcc.target/arm/cmse/mainline/bitfield-4.c
! 20b04512e98167b7ecb1f753a696c62b  gcc/testsuite/gcc.target/arm/cmse/mainline/bitfield-5.c
! 639606fa7cd460692b3e8b11ff1c7ba9  gcc/testsuite/gcc.target/arm/cmse/mainline/bitfield-6.c
! f8d7eafe9c9f1cfb1ad3335055010c50  gcc/testsuite/gcc.target/arm/cmse/mainline/bitfield-7.c
! 291b02335e583d4bab9113a704847ef8  gcc/testsuite/gcc.target/arm/cmse/mainline/bitfield-8.c
! 1534b3199e384d560d92a7ec078d888d  gcc/testsuite/gcc.target/arm/cmse/mainline/bitfield-9.c
! 3b49822b1794c457a64403ee714958e1  gcc/testsuite/gcc.target/arm/cmse/mainline/bitfield-and-union.c
! a6bb0ff58338777fcfcc79497a66ee78  gcc/testsuite/gcc.target/arm/cmse/mainline/hard-sp/cmse-13.c
! aa26964f43ec2f07584b81f32d951d27  gcc/testsuite/gcc.target/arm/cmse/mainline/hard-sp/cmse-5.c
! a39274c13b5cab856a6a15351bea6387  gcc/testsuite/gcc.target/arm/cmse/mainline/hard-sp/cmse-7.c
! 33f5cbe653d8440fad757feac58cf35d  gcc/testsuite/gcc.target/arm/cmse/mainline/hard-sp/cmse-8.c
! ccdb853c1ba6c3f0488692e78c51ee92  gcc/testsuite/gcc.target/arm/cmse/mainline/hard/cmse-13.c
! 85ab92a13bd91178a8c4f7d9c4834572  gcc/testsuite/gcc.target/arm/cmse/mainline/hard/cmse-5.c
! 80748ca6a98a78bd7fc935f3714a1378  gcc/testsuite/gcc.target/arm/cmse/mainline/hard/cmse-7.c
! 20aadf7b4180e58151e933a865e8b6a9  gcc/testsuite/gcc.target/arm/cmse/mainline/hard/cmse-8.c
! e4d4054b5729f0efe567ae8a889ab551  gcc/testsuite/gcc.target/arm/cmse/mainline/soft/cmse-13.c
! c8a3d08b00af91f09185f2b147bbc3e9  gcc/testsuite/gcc.target/arm/cmse/mainline/soft/cmse-5.c
! c856cc8a2756cac41d7b8e667859101e  gcc/testsuite/gcc.target/arm/cmse/mainline/soft/cmse-7.c
! 3bdd3062752d059eb8b300fc388a6cff  gcc/testsuite/gcc.target/arm/cmse/mainline/soft/cmse-8.c
! 1049b8640aa488975f0b40503b96bcf0  gcc/testsuite/gcc.target/arm/cmse/mainline/softfp-sp/cmse-5.c
! cc85fceeb4934a0135a482932a75d7d9  gcc/testsuite/gcc.target/arm/cmse/mainline/softfp-sp/cmse-7.c
! 8dcee2933f2f3d2f060b4f145c95a4db  gcc/testsuite/gcc.target/arm/cmse/mainline/softfp-sp/cmse-8.c
! 66076c069adbe4146ef5437c2a9c1e9b  gcc/testsuite/gcc.target/arm/cmse/mainline/softfp/cmse-13.c
! f5914121065adc131dfdd146fa88a4c5  gcc/testsuite/gcc.target/arm/cmse/mainline/softfp/cmse-5.c
! 29e11dad6f3bf4745f2dd8aa51ce4819  gcc/testsuite/gcc.target/arm/cmse/mainline/softfp/cmse-7.c
! faa86de21334274e98facc61eb662962  gcc/testsuite/gcc.target/arm/cmse/mainline/softfp/cmse-8.c
! 5ec75ccab98c88e1722afd2364e1c369  gcc/testsuite/gcc.target/arm/cmse/mainline/union-1.c
! 3806100b29f99d666f9b3e39cfd0273b  gcc/testsuite/gcc.target/arm/cmse/mainline/union-2.c
  018eb841691c5963d8832c729601632a  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
  a584e2c054692af37faeadd1f461800b  gcc/testsuite/gcc.target/arm/combine-cmp-shift.c
  4aca50869b79ab15beb4a0ff13338a21  gcc/testsuite/gcc.target/arm/combine-movs.c
  257aa0b2b8891d05f782af1a15b2ed25  gcc/testsuite/gcc.target/arm/cond-asm.c
  37ee43df70f4d07a257b2684561a574c  gcc/testsuite/gcc.target/arm/cond_sub_restrict_it.c
  ea5c06143f89f8b3c26a3c80f255d03b  gcc/testsuite/gcc.target/arm/condarith_restrict_it.c
  702468e7cb2029f03eaac95e5eea0533  gcc/testsuite/gcc.target/arm/constant-pool.c
! d38897569ba0b5112694e6e1fe6662b5  gcc/testsuite/gcc.target/arm/copysign_softfloat_1.c
  1c89ba825c88653c01849f8986e1542b  gcc/testsuite/gcc.target/arm/crypto-vaesdq_u8.c
  2ed72824fb0f88ddb43549410040a784  gcc/testsuite/gcc.target/arm/crypto-vaeseq_u8.c
  abba2731624485a0118e2059f5e1c67a  gcc/testsuite/gcc.target/arm/crypto-vaesimcq_u8.c
*************** c516e326d8b57e14b9119f95a0b6d475  gcc/te
*** 38575,38582 ****
  59b43d7fa573aec56d37e8d3ee175b75  gcc/testsuite/gcc.target/arm/fp16-unprototyped-1.c
  a60c72361842412ed806a9caeafedd5b  gcc/testsuite/gcc.target/arm/fp16-unprototyped-2.c
  b627f1fc53dc3aa6e38826de78cc3f9d  gcc/testsuite/gcc.target/arm/fp16-variadic-1.c
! 662eaf09e7fb7e8da30a485a60b49e36  gcc/testsuite/gcc.target/arm/fpscr.c
! becd73a8b67b5a5ea5ac098897654766  gcc/testsuite/gcc.target/arm/frame-pointer-1.c
  d197c58c217da8cdebc4b5d30cce8a52  gcc/testsuite/gcc.target/arm/ftest-armv4-arm.c
  f8c88e22189f7cae3d54e35f7511abc6  gcc/testsuite/gcc.target/arm/ftest-armv4t-arm.c
  fa350d7919b034f5139ee20f1d9a3adc  gcc/testsuite/gcc.target/arm/ftest-armv4t-thumb.c
--- 40985,40992 ----
  59b43d7fa573aec56d37e8d3ee175b75  gcc/testsuite/gcc.target/arm/fp16-unprototyped-1.c
  a60c72361842412ed806a9caeafedd5b  gcc/testsuite/gcc.target/arm/fp16-unprototyped-2.c
  b627f1fc53dc3aa6e38826de78cc3f9d  gcc/testsuite/gcc.target/arm/fp16-variadic-1.c
! 7e1f0ef170934d68aa70264acedd0c41  gcc/testsuite/gcc.target/arm/fpscr.c
! 7bbda09783fa0c66ec95287fa88c2780  gcc/testsuite/gcc.target/arm/frame-pointer-1.c
  d197c58c217da8cdebc4b5d30cce8a52  gcc/testsuite/gcc.target/arm/ftest-armv4-arm.c
  f8c88e22189f7cae3d54e35f7511abc6  gcc/testsuite/gcc.target/arm/ftest-armv4t-arm.c
  fa350d7919b034f5139ee20f1d9a3adc  gcc/testsuite/gcc.target/arm/ftest-armv4t-thumb.c
*************** c012a2a75b62fb72d4800dd4861c74f6  gcc/te
*** 38605,38611 ****
  9dd91c18db0c58524cb212928ef61ecd  gcc/testsuite/gcc.target/arm/ftest-armv8a-thumb.c
  38e08d940bc9a9e57c4a3f201288491d  gcc/testsuite/gcc.target/arm/ftest-support.h
  c9d90bd38f398264900bb8c0faa0bc2e  gcc/testsuite/gcc.target/arm/fuse-caller-save.c
! 882786460972add7767d85ce76735fde  gcc/testsuite/gcc.target/arm/g2.c
  cb9e119b328b5c2a1e304f019876ecad  gcc/testsuite/gcc.target/arm/get_address_cost_aligned_max_offset.c
  4498a9dbcc6a92e181fde32cbf511939  gcc/testsuite/gcc.target/arm/handler-align.c
  7a9170beee6aed6d6c82cfce876aeeb7  gcc/testsuite/gcc.target/arm/headmerge-1.c
--- 41015,41021 ----
  9dd91c18db0c58524cb212928ef61ecd  gcc/testsuite/gcc.target/arm/ftest-armv8a-thumb.c
  38e08d940bc9a9e57c4a3f201288491d  gcc/testsuite/gcc.target/arm/ftest-support.h
  c9d90bd38f398264900bb8c0faa0bc2e  gcc/testsuite/gcc.target/arm/fuse-caller-save.c
! e35959f31f2e210547de13438f89f930  gcc/testsuite/gcc.target/arm/g2.c
  cb9e119b328b5c2a1e304f019876ecad  gcc/testsuite/gcc.target/arm/get_address_cost_aligned_max_offset.c
  4498a9dbcc6a92e181fde32cbf511939  gcc/testsuite/gcc.target/arm/handler-align.c
  7a9170beee6aed6d6c82cfce876aeeb7  gcc/testsuite/gcc.target/arm/headmerge-1.c
*************** b8c039847c1a73baf76ec3ceb27b1a11  gcc/te
*** 38616,38622 ****
  80759aaae06958909d3fcc2edf843783  gcc/testsuite/gcc.target/arm/interrupt-2.c
  5fb126c6d9486e40aebcb4051dcefd2a  gcc/testsuite/gcc.target/arm/iordi3-opt.c
  942d9efedfb779e0de45df976f1585de  gcc/testsuite/gcc.target/arm/iordi_notdi-1.c
! 88f7d27029fb631e0a53d287d5f7f83c  gcc/testsuite/gcc.target/arm/its.c
  4a85010a90860731434c3234dd6430a3  gcc/testsuite/gcc.target/arm/ivopts-2.c
  75ecc94adc55f0aab67547352cb035ef  gcc/testsuite/gcc.target/arm/ivopts-3.c
  63fdb3be4ff1f194423e15a53a442a85  gcc/testsuite/gcc.target/arm/ivopts-4.c
--- 41026,41032 ----
  80759aaae06958909d3fcc2edf843783  gcc/testsuite/gcc.target/arm/interrupt-2.c
  5fb126c6d9486e40aebcb4051dcefd2a  gcc/testsuite/gcc.target/arm/iordi3-opt.c
  942d9efedfb779e0de45df976f1585de  gcc/testsuite/gcc.target/arm/iordi_notdi-1.c
! 550f206a7b7560c0e3c01b46d6d1d81f  gcc/testsuite/gcc.target/arm/its.c
  4a85010a90860731434c3234dd6430a3  gcc/testsuite/gcc.target/arm/ivopts-2.c
  75ecc94adc55f0aab67547352cb035ef  gcc/testsuite/gcc.target/arm/ivopts-3.c
  63fdb3be4ff1f194423e15a53a442a85  gcc/testsuite/gcc.target/arm/ivopts-4.c
*************** bf821309d2cd93b8c0d6b0704742bc45  gcc/te
*** 38631,38640 ****
  42a78271420e5c48df61165376eb067e  gcc/testsuite/gcc.target/arm/long-calls-2.c
  045075d4c4f653f51cab15b6c12b3e09  gcc/testsuite/gcc.target/arm/long-calls-3.c
  856b2cad766c5a53d737088d9056031b  gcc/testsuite/gcc.target/arm/long-calls-4.c
! 37fc8929c0e544dc7359fee7cd1c61e2  gcc/testsuite/gcc.target/arm/lp1189445.c
  c0ebea9052f8cd9253ee6ff358df5e52  gcc/testsuite/gcc.target/arm/lp1243022.c
  8f46b639c1a73cfbea6e6d3482e35b7d  gcc/testsuite/gcc.target/arm/lround-vcvt_1.c
! b94e8651adacb0707cf74c47dba81bff  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
--- 41041,41050 ----
  42a78271420e5c48df61165376eb067e  gcc/testsuite/gcc.target/arm/long-calls-2.c
  045075d4c4f653f51cab15b6c12b3e09  gcc/testsuite/gcc.target/arm/long-calls-3.c
  856b2cad766c5a53d737088d9056031b  gcc/testsuite/gcc.target/arm/long-calls-4.c
! bda0b982c40bee2fd28b1750fa6bc2bf  gcc/testsuite/gcc.target/arm/lp1189445.c
  c0ebea9052f8cd9253ee6ff358df5e52  gcc/testsuite/gcc.target/arm/lp1243022.c
  8f46b639c1a73cfbea6e6d3482e35b7d  gcc/testsuite/gcc.target/arm/lround-vcvt_1.c
! 6f1fb43d40920cde88b5faecfc81cdf6  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
*************** ea9e4c1990d1a5660a4d881d2b3a87e9  gcc/te
*** 38656,38675 ****
  2d332d868d424afff09ce09517f1c7cc  gcc/testsuite/gcc.target/arm/memset-inline-8.c
  fb74916eb6e0ebd03586703f23fac8ab  gcc/testsuite/gcc.target/arm/memset-inline-9.c
  3876125217234cd017b0326c39884922  gcc/testsuite/gcc.target/arm/minmax_minus.c
! a806646e365240ac5e4717aadb89dd85  gcc/testsuite/gcc.target/arm/mla-1.c
  7a61babf21fe0e2b87f08d86f719bd45  gcc/testsuite/gcc.target/arm/mla-2.c
  8c7ecd4e07817c3a2b4a49da1ecd434b  gcc/testsuite/gcc.target/arm/mmx-1.c
  a5a3e826efb091c50ba961289ca090a2  gcc/testsuite/gcc.target/arm/mmx-2.c
  78ed69c9c8751f69f03f058f088b7852  gcc/testsuite/gcc.target/arm/mod_2.c
  b3e3944c6a6d968214e099c6179a869d  gcc/testsuite/gcc.target/arm/mod_256.c
  c6b1f31177a60b170040e0eddc1787ba  gcc/testsuite/gcc.target/arm/movcond_restrict_it.c
  51abb62948cbe512df9bed991a2649d4  gcc/testsuite/gcc.target/arm/movdi_movw.c
  7b0294d6197317c05cb3accfdbee95d9  gcc/testsuite/gcc.target/arm/movhi_movw.c
  190ffba53357096715f051384c38965b  gcc/testsuite/gcc.target/arm/movsi_movw.c
  a27c7480ff5cba860dda5da683bb3b87  gcc/testsuite/gcc.target/arm/naked-1.c
  292c423c2aa66b03398c922259527367  gcc/testsuite/gcc.target/arm/naked-2.c
! 8ea15e01c5609322c41fce79a7d114f1  gcc/testsuite/gcc.target/arm/negdi-1.c
! afe54d7fb9ac258488be28ac14b2a1ef  gcc/testsuite/gcc.target/arm/negdi-2.c
  1d82b3b0ea80aefafa6a48ad67e7e36e  gcc/testsuite/gcc.target/arm/negdi-3.c
  a57834afa1e2484def0400d4cc47fb79  gcc/testsuite/gcc.target/arm/negscc_restrict_it.c
  c9c15765077132f5b79ac6af6064736b  gcc/testsuite/gcc.target/arm/neon-combine-sub-abs-into-vabd.c
--- 41066,41088 ----
  2d332d868d424afff09ce09517f1c7cc  gcc/testsuite/gcc.target/arm/memset-inline-8.c
  fb74916eb6e0ebd03586703f23fac8ab  gcc/testsuite/gcc.target/arm/memset-inline-9.c
  3876125217234cd017b0326c39884922  gcc/testsuite/gcc.target/arm/minmax_minus.c
! 8ea48995d807d32260c080b94c76fc8c  gcc/testsuite/gcc.target/arm/mla-1.c
  7a61babf21fe0e2b87f08d86f719bd45  gcc/testsuite/gcc.target/arm/mla-2.c
  8c7ecd4e07817c3a2b4a49da1ecd434b  gcc/testsuite/gcc.target/arm/mmx-1.c
  a5a3e826efb091c50ba961289ca090a2  gcc/testsuite/gcc.target/arm/mmx-2.c
  78ed69c9c8751f69f03f058f088b7852  gcc/testsuite/gcc.target/arm/mod_2.c
  b3e3944c6a6d968214e099c6179a869d  gcc/testsuite/gcc.target/arm/mod_256.c
  c6b1f31177a60b170040e0eddc1787ba  gcc/testsuite/gcc.target/arm/movcond_restrict_it.c
+ 022f527622b96bf14dceec33b2a33760  gcc/testsuite/gcc.target/arm/movdi_movt.c
  51abb62948cbe512df9bed991a2649d4  gcc/testsuite/gcc.target/arm/movdi_movw.c
  7b0294d6197317c05cb3accfdbee95d9  gcc/testsuite/gcc.target/arm/movhi_movw.c
+ 25160bc4d65928f27f94f812352230bd  gcc/testsuite/gcc.target/arm/movsi_movt.c
  190ffba53357096715f051384c38965b  gcc/testsuite/gcc.target/arm/movsi_movw.c
+ c2ca5d648a479a2b740215e2ba68b120  gcc/testsuite/gcc.target/arm/multilib.exp
  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
! 73ba6aca6adb83681a9dade93de64413  gcc/testsuite/gcc.target/arm/negdi-2.c
  1d82b3b0ea80aefafa6a48ad67e7e36e  gcc/testsuite/gcc.target/arm/negdi-3.c
  a57834afa1e2484def0400d4cc47fb79  gcc/testsuite/gcc.target/arm/negscc_restrict_it.c
  c9c15765077132f5b79ac6af6064736b  gcc/testsuite/gcc.target/arm/neon-combine-sub-abs-into-vabd.c
*************** bce9be46a9e956c5fcc66bfb68691f0f  gcc/te
*** 38683,38689 ****
  4e0cca6bc39f2d3cecf9ea72ec4b0d52  gcc/testsuite/gcc.target/arm/neon-nested-apcs.c
  7783093cce901b3a47068de662227a6b  gcc/testsuite/gcc.target/arm/neon-offset-1.c
  1f48b8fad239c5f29804610f9f08ce99  gcc/testsuite/gcc.target/arm/neon-reload-class.c
! 2f883878b893ef29d3cfcf1e242b6fa0  gcc/testsuite/gcc.target/arm/neon-thumb2-move.c
  add75049520bb3c0c677317469ccb57e  gcc/testsuite/gcc.target/arm/neon-vadds64.c
  323bfa59651e6ef8beef2767edd16ddf  gcc/testsuite/gcc.target/arm/neon-vaddu64.c
  8dff2a615d6d106e1b1bab9c38292826  gcc/testsuite/gcc.target/arm/neon-vaddws16.c
--- 41096,41102 ----
  4e0cca6bc39f2d3cecf9ea72ec4b0d52  gcc/testsuite/gcc.target/arm/neon-nested-apcs.c
  7783093cce901b3a47068de662227a6b  gcc/testsuite/gcc.target/arm/neon-offset-1.c
  1f48b8fad239c5f29804610f9f08ce99  gcc/testsuite/gcc.target/arm/neon-reload-class.c
! 79e2b86f1be68bc1014fb6b480d5322f  gcc/testsuite/gcc.target/arm/neon-thumb2-move.c
  add75049520bb3c0c677317469ccb57e  gcc/testsuite/gcc.target/arm/neon-vadds64.c
  323bfa59651e6ef8beef2767edd16ddf  gcc/testsuite/gcc.target/arm/neon-vaddu64.c
  8dff2a615d6d106e1b1bab9c38292826  gcc/testsuite/gcc.target/arm/neon-vaddws16.c
*************** efe1a8ddc7a8edf374ffb4ee3fdf3bbb  gcc/te
*** 38781,38789 ****
  e1ed53ebccbb0c6d744bc7e982608a00  gcc/testsuite/gcc.target/arm/pr40657-2.c
  2122e4f98882cf016fbdbf490218109e  gcc/testsuite/gcc.target/arm/pr40670.c
  985deca7fdfef8933c4e9d0f3d77bb92  gcc/testsuite/gcc.target/arm/pr40835.c
! 66f180104e87b882946d8dd4009c08db  gcc/testsuite/gcc.target/arm/pr40887.c
  ae7f616dfc9c4cb975cbf5c12a0f4568  gcc/testsuite/gcc.target/arm/pr40900.c
! b290b04583361461b5303692530048f7  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
--- 41194,41202 ----
  e1ed53ebccbb0c6d744bc7e982608a00  gcc/testsuite/gcc.target/arm/pr40657-2.c
  2122e4f98882cf016fbdbf490218109e  gcc/testsuite/gcc.target/arm/pr40670.c
  985deca7fdfef8933c4e9d0f3d77bb92  gcc/testsuite/gcc.target/arm/pr40835.c
! e3f645f0c50bda730a95d4b7d911704a  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
*************** ec5b96b8283a62c791f40ad2c7334d85  gcc/te
*** 38822,38834 ****
  979c3871e985af269e6e0679b4805f64  gcc/testsuite/gcc.target/arm/pr50318-1.c
  0d4abce24171a60973cf94cfc17e854a  gcc/testsuite/gcc.target/arm/pr51534.c
  9c2b81b1764cbeb57ac7a1da14705479  gcc/testsuite/gcc.target/arm/pr51835.c
! b52ff3dcde5cc31956f225bb4ebfa80b  gcc/testsuite/gcc.target/arm/pr51915.c
  43eb299c55c539c16c548b455fd6391c  gcc/testsuite/gcc.target/arm/pr51968.c
! 90397c78033829e3e82c1c87a372917b  gcc/testsuite/gcc.target/arm/pr52006.c
  522c729f0ead031dcc62b39370120c18  gcc/testsuite/gcc.target/arm/pr52375.c
  de6431d80bdeb202e278026554164376  gcc/testsuite/gcc.target/arm/pr52633.c
  47ff4634157d04ecbab7fc4bc688b62d  gcc/testsuite/gcc.target/arm/pr52686.c
! d8c2b3438057bd37308e16b1228b0738  gcc/testsuite/gcc.target/arm/pr53187.c
  7258fe96c610fb409e4273c1e0a18813  gcc/testsuite/gcc.target/arm/pr53447-1.c
  0f88d92f71989ee4311f8e64e481879b  gcc/testsuite/gcc.target/arm/pr53447-2.c
  251ccb5884ca5d49fb49eac8544c1304  gcc/testsuite/gcc.target/arm/pr53447-3.c
--- 41235,41247 ----
  979c3871e985af269e6e0679b4805f64  gcc/testsuite/gcc.target/arm/pr50318-1.c
  0d4abce24171a60973cf94cfc17e854a  gcc/testsuite/gcc.target/arm/pr51534.c
  9c2b81b1764cbeb57ac7a1da14705479  gcc/testsuite/gcc.target/arm/pr51835.c
! 59bf7a4235350f03c66e662b087ec7aa  gcc/testsuite/gcc.target/arm/pr51915.c
  43eb299c55c539c16c548b455fd6391c  gcc/testsuite/gcc.target/arm/pr51968.c
! 6dec92985e54d0a9af94a8517acaf92d  gcc/testsuite/gcc.target/arm/pr52006.c
  522c729f0ead031dcc62b39370120c18  gcc/testsuite/gcc.target/arm/pr52375.c
  de6431d80bdeb202e278026554164376  gcc/testsuite/gcc.target/arm/pr52633.c
  47ff4634157d04ecbab7fc4bc688b62d  gcc/testsuite/gcc.target/arm/pr52686.c
! db113e481c58caf33310175aa4c066d0  gcc/testsuite/gcc.target/arm/pr53187.c
  7258fe96c610fb409e4273c1e0a18813  gcc/testsuite/gcc.target/arm/pr53447-1.c
  0f88d92f71989ee4311f8e64e481879b  gcc/testsuite/gcc.target/arm/pr53447-2.c
  251ccb5884ca5d49fb49eac8544c1304  gcc/testsuite/gcc.target/arm/pr53447-3.c
*************** d8c2b3438057bd37308e16b1228b0738  gcc/te
*** 38837,38857 ****
  9a6c78c74218ccc7be4511d7bbf530d0  gcc/testsuite/gcc.target/arm/pr53636.c
  4f8bbd8590bd295e95df0cfef75e77cb  gcc/testsuite/gcc.target/arm/pr53859.c
  6af15a37f89b2eda59754bf3f8c6c2d3  gcc/testsuite/gcc.target/arm/pr54051.c
- dd6fcf2d02dd51f43eca4035c2609ea3  gcc/testsuite/gcc.target/arm/pr54300.C
  144c19487bb0a02183a211f107af4c26  gcc/testsuite/gcc.target/arm/pr54892.c
- 342549b2c2e7198ce4650b879ad7bd28  gcc/testsuite/gcc.target/arm/pr55073.C
  2043a75bd6103b1a90d461d2bba5c1bc  gcc/testsuite/gcc.target/arm/pr55642.c
- 615ac88d5a7b5b46e195906f5b84318f  gcc/testsuite/gcc.target/arm/pr56184.C
  20dfa54a1381508ca3646536cfa44c09  gcc/testsuite/gcc.target/arm/pr56732-1.c
  f959f5c10e21a15d658780237062fe2c  gcc/testsuite/gcc.target/arm/pr57637.c
  54166fd5f347708a423e88701c6c6679  gcc/testsuite/gcc.target/arm/pr58041.c
  3549acaa8c64d511367164d1fce14e18  gcc/testsuite/gcc.target/arm/pr58578.c
! 5f75764430b393c79ae2a7e28d4dc4f4  gcc/testsuite/gcc.target/arm/pr58784.c
  c15b07ab5ba3c74ed761bb4ffe2f563f  gcc/testsuite/gcc.target/arm/pr59575.c
  9cfe66220d9d27d88bd05a820ddd95b2  gcc/testsuite/gcc.target/arm/pr59858.c
! 07a210c2731c11efef2695bdc1248bae  gcc/testsuite/gcc.target/arm/pr59896.c
  689aa8700d367d8545e40ca73964069e  gcc/testsuite/gcc.target/arm/pr59923.c
- a9a942fd5cfc316a1c26dad2ee4976bc  gcc/testsuite/gcc.target/arm/pr59985.C
  a24a83b67035822b706f3721d2778fcd  gcc/testsuite/gcc.target/arm/pr60264.c
  fcb367b7d7625c8d2ceeae5e133a2c18  gcc/testsuite/gcc.target/arm/pr60606-2.c
  114c6738cce394870e68b64892961ceb  gcc/testsuite/gcc.target/arm/pr60606-3.c
--- 41250,41266 ----
  9a6c78c74218ccc7be4511d7bbf530d0  gcc/testsuite/gcc.target/arm/pr53636.c
  4f8bbd8590bd295e95df0cfef75e77cb  gcc/testsuite/gcc.target/arm/pr53859.c
  6af15a37f89b2eda59754bf3f8c6c2d3  gcc/testsuite/gcc.target/arm/pr54051.c
  144c19487bb0a02183a211f107af4c26  gcc/testsuite/gcc.target/arm/pr54892.c
  2043a75bd6103b1a90d461d2bba5c1bc  gcc/testsuite/gcc.target/arm/pr55642.c
  20dfa54a1381508ca3646536cfa44c09  gcc/testsuite/gcc.target/arm/pr56732-1.c
  f959f5c10e21a15d658780237062fe2c  gcc/testsuite/gcc.target/arm/pr57637.c
  54166fd5f347708a423e88701c6c6679  gcc/testsuite/gcc.target/arm/pr58041.c
  3549acaa8c64d511367164d1fce14e18  gcc/testsuite/gcc.target/arm/pr58578.c
! 38acbf12d958c0e7623df681ad3bfb8f  gcc/testsuite/gcc.target/arm/pr58784.c
  c15b07ab5ba3c74ed761bb4ffe2f563f  gcc/testsuite/gcc.target/arm/pr59575.c
  9cfe66220d9d27d88bd05a820ddd95b2  gcc/testsuite/gcc.target/arm/pr59858.c
! 39260c40447562253e3ad118b62c162f  gcc/testsuite/gcc.target/arm/pr59896.c
  689aa8700d367d8545e40ca73964069e  gcc/testsuite/gcc.target/arm/pr59923.c
  a24a83b67035822b706f3721d2778fcd  gcc/testsuite/gcc.target/arm/pr60264.c
  fcb367b7d7625c8d2ceeae5e133a2c18  gcc/testsuite/gcc.target/arm/pr60606-2.c
  114c6738cce394870e68b64892961ceb  gcc/testsuite/gcc.target/arm/pr60606-3.c
*************** ca9b09bdf2fddda9d450fbeb988b6ad9  gcc/te
*** 38882,38892 ****
  99472d2f1f7a0590766908deea24ccb3  gcc/testsuite/gcc.target/arm/pr67366.c
  a38ba5635fcb15a6a5c3bd66dca37b1c  gcc/testsuite/gcc.target/arm/pr67439_1.c
  041b62fa9b7362942f44220ff884fabf  gcc/testsuite/gcc.target/arm/pr67756.c
! 91fb6449b4a430f3f5f4a37cd43042ab  gcc/testsuite/gcc.target/arm/pr67989.C
  eefaa7efcbf94aefad0419e7e0888e33  gcc/testsuite/gcc.target/arm/pr68620.c
  ef7228203e3de2362184e00a8c156132  gcc/testsuite/gcc.target/arm/pr68674.c
  22a455eab22d64eaa325e8f1370a734f  gcc/testsuite/gcc.target/arm/pr69135_1.c
! 59a49ad9efc7c94ec81e10b49ae7c555  gcc/testsuite/gcc.target/arm/pr69180.c
  51f46e9158ad549a6f9079f849c4c10d  gcc/testsuite/gcc.target/arm/pr69187.c
  b1f1919dcfa1287f837de2b937769050  gcc/testsuite/gcc.target/arm/pr69194.c
  ea51ac3985ec65a675e98d7486d1c3fc  gcc/testsuite/gcc.target/arm/pr69245.c
--- 41291,41301 ----
  99472d2f1f7a0590766908deea24ccb3  gcc/testsuite/gcc.target/arm/pr67366.c
  a38ba5635fcb15a6a5c3bd66dca37b1c  gcc/testsuite/gcc.target/arm/pr67439_1.c
  041b62fa9b7362942f44220ff884fabf  gcc/testsuite/gcc.target/arm/pr67756.c
! c514f92159e7e3859ff21ee1a7b0d626  gcc/testsuite/gcc.target/arm/pr67989.C
  eefaa7efcbf94aefad0419e7e0888e33  gcc/testsuite/gcc.target/arm/pr68620.c
  ef7228203e3de2362184e00a8c156132  gcc/testsuite/gcc.target/arm/pr68674.c
  22a455eab22d64eaa325e8f1370a734f  gcc/testsuite/gcc.target/arm/pr69135_1.c
! 038b3bb27d1430e5bcaacffe8348eb14  gcc/testsuite/gcc.target/arm/pr69180.c
  51f46e9158ad549a6f9079f849c4c10d  gcc/testsuite/gcc.target/arm/pr69187.c
  b1f1919dcfa1287f837de2b937769050  gcc/testsuite/gcc.target/arm/pr69194.c
  ea51ac3985ec65a675e98d7486d1c3fc  gcc/testsuite/gcc.target/arm/pr69245.c
*************** b0ba42b248bd9b3bd8c295b9a69d459d  gcc/te
*** 38895,38905 ****
  9229fa3f57e981e5130eafbdde921755  gcc/testsuite/gcc.target/arm/pr69610-2.c
  e5aafcaef63ec87ca861c2c3df04f753  gcc/testsuite/gcc.target/arm/pr69614.c
  32fee62df6d98765a5508d0d96c9eb65  gcc/testsuite/gcc.target/arm/pr69904.c
! 1099addf5e35417ab2cda454cb2ec7f0  gcc/testsuite/gcc.target/arm/pr70278.c
  7b0dff48f8c89cbeb037deb0439e2888  gcc/testsuite/gcc.target/arm/pr70496.c
  48ed10e4b1714bfea3579dda3447be58  gcc/testsuite/gcc.target/arm/pr70830.c
  dc5c76ff01c564582222b3a2ea1fc21c  gcc/testsuite/gcc.target/arm/pr71056.c
  f54ef63fcfe6438f5564d5ecc3ab119f  gcc/testsuite/gcc.target/arm/pr71778.c
  9bd4eebb5448977dc402e3620bb59a5a  gcc/testsuite/gcc.target/arm/pr77308.c
  7e18572e02a1f69ab777de60c194623d  gcc/testsuite/gcc.target/arm/pr77904.c
  4c5ae74514e166984fa2a6889c2e475e  gcc/testsuite/gcc.target/arm/pr77933-1.c
--- 41304,41316 ----
  9229fa3f57e981e5130eafbdde921755  gcc/testsuite/gcc.target/arm/pr69610-2.c
  e5aafcaef63ec87ca861c2c3df04f753  gcc/testsuite/gcc.target/arm/pr69614.c
  32fee62df6d98765a5508d0d96c9eb65  gcc/testsuite/gcc.target/arm/pr69904.c
! e63928ba458ed28f5f26f652175d8386  gcc/testsuite/gcc.target/arm/pr70278.c
  7b0dff48f8c89cbeb037deb0439e2888  gcc/testsuite/gcc.target/arm/pr70496.c
  48ed10e4b1714bfea3579dda3447be58  gcc/testsuite/gcc.target/arm/pr70830.c
  dc5c76ff01c564582222b3a2ea1fc21c  gcc/testsuite/gcc.target/arm/pr71056.c
  f54ef63fcfe6438f5564d5ecc3ab119f  gcc/testsuite/gcc.target/arm/pr71778.c
+ aa35552babf9ef4f130386eb45d89195  gcc/testsuite/gcc.target/arm/pr7676.c
+ 3aa288680a7c177866df07757d6c8714  gcc/testsuite/gcc.target/arm/pr77308-1.c
  9bd4eebb5448977dc402e3620bb59a5a  gcc/testsuite/gcc.target/arm/pr77308.c
  7e18572e02a1f69ab777de60c194623d  gcc/testsuite/gcc.target/arm/pr77904.c
  4c5ae74514e166984fa2a6889c2e475e  gcc/testsuite/gcc.target/arm/pr77933-1.c
*************** f54ef63fcfe6438f5564d5ecc3ab119f  gcc/te
*** 38907,38941 ****
  68c26348d2a6791f295710024aba5c21  gcc/testsuite/gcc.target/arm/pr78041.c
  7ff23bd8b3754acf52c8f22104b1f9b6  gcc/testsuite/gcc.target/arm/pr78255-1.c
  4fffc267d9c8775478c72209db83f52e  gcc/testsuite/gcc.target/arm/pr78255-2.c
! 57cc654bdfb9a3ecf1bed2b0300e1a49  gcc/testsuite/gcc.target/arm/pr79058.c
  e9273f96fab761cd7ea5079114cf850a  gcc/testsuite/gcc.target/arm/pr79131-1.c
  9af668f971102617e44a1aabe76bd18b  gcc/testsuite/gcc.target/arm/pr79131-2.c
  3116e99b993df2059971c2fae6d9b6b0  gcc/testsuite/gcc.target/arm/pr79145.c
  886e1e8bcef4564f65d87770aeced965  gcc/testsuite/gcc.target/arm/pr79239.c
  c3c03d98bf1110fec6902ef64b984fde  gcc/testsuite/gcc.target/arm/pr83687.c
  321232597c3b16471c510b972ad557b4  gcc/testsuite/gcc.target/arm/pragma_attribute.c
  cdf14fd079c2cd544c152c39ceb8ac66  gcc/testsuite/gcc.target/arm/pragma_cpp_fma.c
  5b1a9414b404b74eb5cf36760730cf83  gcc/testsuite/gcc.target/arm/pure-code/ffunction-sections.c
  77b405f3713bb420ee5af292f1a977dc  gcc/testsuite/gcc.target/arm/pure-code/no-casesi.c
  9a3c5a4b4bf1b8f81913c8f615eeba6a  gcc/testsuite/gcc.target/arm/pure-code/no-literal-pool.c
! 32f54b057ca985209b4463b4101dc14b  gcc/testsuite/gcc.target/arm/pure-code/pure-code.exp
  639f9aee9e13df807ade02e6ee96c2d3  gcc/testsuite/gcc.target/arm/reg_equal_test.c
  3143560976572191d8bba6ba78a45aa6  gcc/testsuite/gcc.target/arm/register-variables.c
! 9891ac3dc9739983de683e418f98f801  gcc/testsuite/gcc.target/arm/require-pic-register-loc.c
  7488cdc20f835bda2359993c0ec74d15  gcc/testsuite/gcc.target/arm/rev16.c
  f4b0167ffa11835780a49b6681dae08a  gcc/testsuite/gcc.target/arm/sat-1.c
  79f77af292be4538ad4c9e7ac72be588  gcc/testsuite/gcc.target/arm/scd42-1.c
! 9c1cb12a236dde6f9510a657e1b9e134  gcc/testsuite/gcc.target/arm/scd42-2.c
  c3472a3fb9ef6aa421a0393d9885607a  gcc/testsuite/gcc.target/arm/scd42-3.c
  e92559ac36cc602d8ecc10c3604d11e0  gcc/testsuite/gcc.target/arm/shiftable.c
  cb913ea2e6ca7e2e6e956a851438b0ce  gcc/testsuite/gcc.target/arm/short-it-ifcvt-1.c
  492578fecd582db3f8b118da3f0292f0  gcc/testsuite/gcc.target/arm/short-it-ifcvt-2.c
  13463a0ed5dcad138f9642832f82222e  gcc/testsuite/gcc.target/arm/short-vfp-1.c
  4cbf78614d6806fb564e8277584708d5  gcc/testsuite/gcc.target/arm/sibcall-1.c
  165b703896ece91fb7283e0b527624ab  gcc/testsuite/gcc.target/arm/sibcall-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
! 6590d0557e786a37203f7ca1ff8f0024  gcc/testsuite/gcc.target/arm/simd/simd.exp
  8e5d88eef0890cd5cf63cc64c80d96a8  gcc/testsuite/gcc.target/arm/simd/vextQf32_1.c
  1877fed963644ac239dae282d98ddfbd  gcc/testsuite/gcc.target/arm/simd/vextQp16_1.c
  850b679907e2dcc8255e04ff194cd91a  gcc/testsuite/gcc.target/arm/simd/vextQp64_1.c
--- 41318,41374 ----
  68c26348d2a6791f295710024aba5c21  gcc/testsuite/gcc.target/arm/pr78041.c
  7ff23bd8b3754acf52c8f22104b1f9b6  gcc/testsuite/gcc.target/arm/pr78255-1.c
  4fffc267d9c8775478c72209db83f52e  gcc/testsuite/gcc.target/arm/pr78255-2.c
! 9f5f95969f7498dd2196ea9d3e2d3d6b  gcc/testsuite/gcc.target/arm/pr79058.c
  e9273f96fab761cd7ea5079114cf850a  gcc/testsuite/gcc.target/arm/pr79131-1.c
  9af668f971102617e44a1aabe76bd18b  gcc/testsuite/gcc.target/arm/pr79131-2.c
  3116e99b993df2059971c2fae6d9b6b0  gcc/testsuite/gcc.target/arm/pr79145.c
  886e1e8bcef4564f65d87770aeced965  gcc/testsuite/gcc.target/arm/pr79239.c
+ 6118c0dceba3733999a7acd50829c0b3  gcc/testsuite/gcc.target/arm/pr81863.c
+ 8be1830a6ab834d38ea072aa6d567865  gcc/testsuite/gcc.target/arm/pr82518.c
+ 433157273902c9544461f755ababe38e  gcc/testsuite/gcc.target/arm/pr82989.c
  c3c03d98bf1110fec6902ef64b984fde  gcc/testsuite/gcc.target/arm/pr83687.c
+ f8d96076841643c7c01ef5410173dbad  gcc/testsuite/gcc.target/arm/pr83712.c
+ 18ff5a03c344c3f612c5c9241ebc0d0e  gcc/testsuite/gcc.target/arm/pr84826.c
+ 9ceeccdcbe7c4f80a03690b8e3133f43  gcc/testsuite/gcc.target/arm/pr85173.c
+ a57b4669de94641d7fba5928bf1f8ca0  gcc/testsuite/gcc.target/arm/pragma_arch_attribute.c
+ d1fa915a7ba92f09b7cb8676f62a0974  gcc/testsuite/gcc.target/arm/pragma_arch_attribute_2.c
+ 5184d53e7d6c028c1c22ef106f053ed7  gcc/testsuite/gcc.target/arm/pragma_arch_attribute_3.c
+ 324cc300468bdbebd55d7555577596bf  gcc/testsuite/gcc.target/arm/pragma_arch_switch_2.c
  321232597c3b16471c510b972ad557b4  gcc/testsuite/gcc.target/arm/pragma_attribute.c
  cdf14fd079c2cd544c152c39ceb8ac66  gcc/testsuite/gcc.target/arm/pragma_cpp_fma.c
+ c9e6771b67edbcdcd59fc69d96f76bd0  gcc/testsuite/gcc.target/arm/pragma_fpu_attribute.c
+ 3a06abeb34fdbba108fe536aeccde735  gcc/testsuite/gcc.target/arm/pragma_fpu_attribute_2.c
  5b1a9414b404b74eb5cf36760730cf83  gcc/testsuite/gcc.target/arm/pure-code/ffunction-sections.c
  77b405f3713bb420ee5af292f1a977dc  gcc/testsuite/gcc.target/arm/pure-code/no-casesi.c
  9a3c5a4b4bf1b8f81913c8f615eeba6a  gcc/testsuite/gcc.target/arm/pure-code/no-literal-pool.c
! e53ebc7ee635d7e89acc603db1e6df28  gcc/testsuite/gcc.target/arm/pure-code/pure-code.exp
  639f9aee9e13df807ade02e6ee96c2d3  gcc/testsuite/gcc.target/arm/reg_equal_test.c
  3143560976572191d8bba6ba78a45aa6  gcc/testsuite/gcc.target/arm/register-variables.c
! 3a055b71580ac3ae2460b1e608760a5a  gcc/testsuite/gcc.target/arm/require-pic-register-loc.c
  7488cdc20f835bda2359993c0ec74d15  gcc/testsuite/gcc.target/arm/rev16.c
  f4b0167ffa11835780a49b6681dae08a  gcc/testsuite/gcc.target/arm/sat-1.c
  79f77af292be4538ad4c9e7ac72be588  gcc/testsuite/gcc.target/arm/scd42-1.c
! 8c6be861b23281c24a79046ee1a2e799  gcc/testsuite/gcc.target/arm/scd42-2.c
  c3472a3fb9ef6aa421a0393d9885607a  gcc/testsuite/gcc.target/arm/scd42-3.c
+ 989b8bb302c72af40a614c1f4a881c81  gcc/testsuite/gcc.target/arm/sdiv_costs_1.c
  e92559ac36cc602d8ecc10c3604d11e0  gcc/testsuite/gcc.target/arm/shiftable.c
  cb913ea2e6ca7e2e6e956a851438b0ce  gcc/testsuite/gcc.target/arm/short-it-ifcvt-1.c
  492578fecd582db3f8b118da3f0292f0  gcc/testsuite/gcc.target/arm/short-it-ifcvt-2.c
  13463a0ed5dcad138f9642832f82222e  gcc/testsuite/gcc.target/arm/short-vfp-1.c
  4cbf78614d6806fb564e8277584708d5  gcc/testsuite/gcc.target/arm/sibcall-1.c
  165b703896ece91fb7283e0b527624ab  gcc/testsuite/gcc.target/arm/sibcall-2.c
+ 6ed969b2e07f9c850046b6090701d1ef  gcc/testsuite/gcc.target/arm/simd/fp16fml_high.c
+ 7eee9cfab14cb152436ce65962c082d5  gcc/testsuite/gcc.target/arm/simd/fp16fml_lane_high.c
+ 5c74ef995eaf79b1d28cffed7843fff1  gcc/testsuite/gcc.target/arm/simd/fp16fml_lane_low.c
+ 36ca160cd3691de1c2ea4f940af21aed  gcc/testsuite/gcc.target/arm/simd/fp16fml_low.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
! ee0375368c97237642c4269861232d49  gcc/testsuite/gcc.target/arm/simd/simd.exp
! ab761a33d453fab454007482f8cfc2c1  gcc/testsuite/gcc.target/arm/simd/vdot-compile.c
! 668cb3b6343fad018fd17b620f0fe981  gcc/testsuite/gcc.target/arm/simd/vdot-exec.c
! 35c671e24b0abfb631caf25b1a2f1d2e  gcc/testsuite/gcc.target/arm/simd/vect-dot-qi.h
! fda45d52e2070b6f03ce26c5f2f21d9d  gcc/testsuite/gcc.target/arm/simd/vect-dot-s8.c
! 0319dc2665b102f172d97dc610d63799  gcc/testsuite/gcc.target/arm/simd/vect-dot-u8.c
  8e5d88eef0890cd5cf63cc64c80d96a8  gcc/testsuite/gcc.target/arm/simd/vextQf32_1.c
  1877fed963644ac239dae282d98ddfbd  gcc/testsuite/gcc.target/arm/simd/vextQp16_1.c
  850b679907e2dcc8255e04ff194cd91a  gcc/testsuite/gcc.target/arm/simd/vextQp64_1.c
*************** ef25288c2b54da64c38a1e366d4bef97  gcc/te
*** 39068,39077 ****
  61ccb5d8433a6f8e4eae1fe9703cf28f  gcc/testsuite/gcc.target/arm/smlatb-1.c
  75b19de937a605ce7ed7e1026e54bbf8  gcc/testsuite/gcc.target/arm/smlatt-1.c
  ed39b4c31a81f4f17ea556e45805a496  gcc/testsuite/gcc.target/arm/split-live-ranges-for-shrink-wrap.c
! cd35ac3521dae98ab32cb3483f7a70f4  gcc/testsuite/gcc.target/arm/stack-checking.c
  3e7aee3ca3268716b7e56cda15a6ccc3  gcc/testsuite/gcc.target/arm/stack-corruption.c
! 0c9f2009bdec40ab856be3c46d1a00df  gcc/testsuite/gcc.target/arm/stack-red-zone.c
! 53f45321db8d17f393d1ad8d785ad93c  gcc/testsuite/gcc.target/arm/stl-cond.c
  152321b1bfa07e69c572a0ca8573c015  gcc/testsuite/gcc.target/arm/symbian1.c
  a2a9b9135252a63f30ae15393ececf8f  gcc/testsuite/gcc.target/arm/symbian2.c
  7474a850002496a75a3fc07be3a92378  gcc/testsuite/gcc.target/arm/symbian3.c
--- 41501,41509 ----
  61ccb5d8433a6f8e4eae1fe9703cf28f  gcc/testsuite/gcc.target/arm/smlatb-1.c
  75b19de937a605ce7ed7e1026e54bbf8  gcc/testsuite/gcc.target/arm/smlatt-1.c
  ed39b4c31a81f4f17ea556e45805a496  gcc/testsuite/gcc.target/arm/split-live-ranges-for-shrink-wrap.c
! 804fdb5fbbd8c5671b29eb8cf77893fc  gcc/testsuite/gcc.target/arm/stack-checking.c
  3e7aee3ca3268716b7e56cda15a6ccc3  gcc/testsuite/gcc.target/arm/stack-corruption.c
! 2b2ded09b727d2b590e97906c6d38cf8  gcc/testsuite/gcc.target/arm/stack-red-zone.c
  152321b1bfa07e69c572a0ca8573c015  gcc/testsuite/gcc.target/arm/symbian1.c
  a2a9b9135252a63f30ae15393ececf8f  gcc/testsuite/gcc.target/arm/symbian2.c
  7474a850002496a75a3fc07be3a92378  gcc/testsuite/gcc.target/arm/symbian3.c
*************** a7b483d7dfa030106153baa28a7406da  gcc/te
*** 39080,39093 ****
  44913c21da8c6dac3b61fbfbc5ff338c  gcc/testsuite/gcc.target/arm/sync-1.c
  0b1c3a2c4bc73b5d1d08660f418e97dc  gcc/testsuite/gcc.target/arm/synchronize.c
  f4e97d25bd78a2f83937a8c42ef6e1e9  gcc/testsuite/gcc.target/arm/tail-long-call.c
! 8db818fe1df4aa4312e0e3bb356f28d9  gcc/testsuite/gcc.target/arm/thumb-16bit-ops.c
  64204a9e3abf4b73643855cd6cef610b  gcc/testsuite/gcc.target/arm/thumb-andsi.c
  22e74605fb70b95e19310c076e1b02c5  gcc/testsuite/gcc.target/arm/thumb-bitfld1.c
  1e0fba039881392b8dd2d6ac4b56c1fa  gcc/testsuite/gcc.target/arm/thumb-branch1.c
  5aa399bfbce3434e21b54f2832299bb5  gcc/testsuite/gcc.target/arm/thumb-builtin-trap.c
  c4133ce7c37295b55bc19679306f4e04  gcc/testsuite/gcc.target/arm/thumb-cbranchqi.c
  2d0bc35ade3e15961ecee08d9919703d  gcc/testsuite/gcc.target/arm/thumb-comparisons.c
! a116427d95a8d027d2c7c63cc39ad839  gcc/testsuite/gcc.target/arm/thumb-find-work-register.c
  774864150c72c7ac1461afd5ba9ec882  gcc/testsuite/gcc.target/arm/thumb-ifcvt-2.c
  c39b37d2c668f829f8c0107bbb401cae  gcc/testsuite/gcc.target/arm/thumb-ifcvt.c
  257090e03640d43a6dbc603078350b3a  gcc/testsuite/gcc.target/arm/thumb-ltu.c
--- 41512,41525 ----
  44913c21da8c6dac3b61fbfbc5ff338c  gcc/testsuite/gcc.target/arm/sync-1.c
  0b1c3a2c4bc73b5d1d08660f418e97dc  gcc/testsuite/gcc.target/arm/synchronize.c
  f4e97d25bd78a2f83937a8c42ef6e1e9  gcc/testsuite/gcc.target/arm/tail-long-call.c
! c0067203155a98c23d9eda220bd6a4e2  gcc/testsuite/gcc.target/arm/thumb-16bit-ops.c
  64204a9e3abf4b73643855cd6cef610b  gcc/testsuite/gcc.target/arm/thumb-andsi.c
  22e74605fb70b95e19310c076e1b02c5  gcc/testsuite/gcc.target/arm/thumb-bitfld1.c
  1e0fba039881392b8dd2d6ac4b56c1fa  gcc/testsuite/gcc.target/arm/thumb-branch1.c
  5aa399bfbce3434e21b54f2832299bb5  gcc/testsuite/gcc.target/arm/thumb-builtin-trap.c
  c4133ce7c37295b55bc19679306f4e04  gcc/testsuite/gcc.target/arm/thumb-cbranchqi.c
  2d0bc35ade3e15961ecee08d9919703d  gcc/testsuite/gcc.target/arm/thumb-comparisons.c
! 5ab2c085750ef1f16b5396990b486f53  gcc/testsuite/gcc.target/arm/thumb-find-work-register.c
  774864150c72c7ac1461afd5ba9ec882  gcc/testsuite/gcc.target/arm/thumb-ifcvt-2.c
  c39b37d2c668f829f8c0107bbb401cae  gcc/testsuite/gcc.target/arm/thumb-ifcvt.c
  257090e03640d43a6dbc603078350b3a  gcc/testsuite/gcc.target/arm/thumb-ltu.c
*************** bbeb5d787a1f59410ab40b6b383ec8f8  gcc/te
*** 39117,39127 ****
  5e7752a46373b0139745e893c89bea36  gcc/testsuite/gcc.target/arm/thumb2-replicated-constant2.c
  5459995fa08f157d8fddb77fb2a334cd  gcc/testsuite/gcc.target/arm/thumb2-replicated-constant3.c
  e94286eccc733d11a63447fdd9bada99  gcc/testsuite/gcc.target/arm/thumb2-replicated-constant4.c
! 555fba4bddb7a824430721cd5e412f93  gcc/testsuite/gcc.target/arm/thumb2-slow-flash-data-2.c
! b6ee8f685272488c578a99858c8cfcec  gcc/testsuite/gcc.target/arm/thumb2-slow-flash-data-3.c
! 50e00682fd887fe79c1e44756223e5df  gcc/testsuite/gcc.target/arm/thumb2-slow-flash-data-4.c
! 853a2b1122547ae186cd35aeb7f330d7  gcc/testsuite/gcc.target/arm/thumb2-slow-flash-data-5.c
! 84791da2abfab9471dcdf45666a84049  gcc/testsuite/gcc.target/arm/thumb2-slow-flash-data.c
  36a52e68234d8c175b513528f85a6015  gcc/testsuite/gcc.target/arm/tls-disable-literal-pool.c
  a8bed5967b49a3f3e81ad27904404a18  gcc/testsuite/gcc.target/arm/tlscall.c
  bdd3a0dd9f0c4286036efac7a3dbaeca  gcc/testsuite/gcc.target/arm/unaligned-memcpy-1.c
--- 41549,41559 ----
  5e7752a46373b0139745e893c89bea36  gcc/testsuite/gcc.target/arm/thumb2-replicated-constant2.c
  5459995fa08f157d8fddb77fb2a334cd  gcc/testsuite/gcc.target/arm/thumb2-replicated-constant3.c
  e94286eccc733d11a63447fdd9bada99  gcc/testsuite/gcc.target/arm/thumb2-replicated-constant4.c
! 84791da2abfab9471dcdf45666a84049  gcc/testsuite/gcc.target/arm/thumb2-slow-flash-data-1.c
! ac74d3b59ef53993291bd0bd7de893a3  gcc/testsuite/gcc.target/arm/thumb2-slow-flash-data-2.c
! 50f39d574e0d74be14f40d1cbd66c183  gcc/testsuite/gcc.target/arm/thumb2-slow-flash-data-3.c
! 72c7464748b32869d99fccfb34402edd  gcc/testsuite/gcc.target/arm/thumb2-slow-flash-data-4.c
! 1a8841c03a3f994279a5d8e6b0926510  gcc/testsuite/gcc.target/arm/thumb2-slow-flash-data-5.c
  36a52e68234d8c175b513528f85a6015  gcc/testsuite/gcc.target/arm/tls-disable-literal-pool.c
  a8bed5967b49a3f3e81ad27904404a18  gcc/testsuite/gcc.target/arm/tlscall.c
  bdd3a0dd9f0c4286036efac7a3dbaeca  gcc/testsuite/gcc.target/arm/unaligned-memcpy-1.c
*************** bacae3d40cddefc3d02e5c9240961540  gcc/te
*** 39212,39231 ****
  c7c10f49683ff36c492aa2300d34dfdc  gcc/testsuite/gcc.target/arm/wmul-9.c
  c75ed40c88ef10849c23f953624d1ae2  gcc/testsuite/gcc.target/arm/wmul-bitfield-1.c
  5c6680598a83083cd8ee0c39ad5821bf  gcc/testsuite/gcc.target/arm/wmul-bitfield-2.c
! c19bb83bba39312219284268d88887fb  gcc/testsuite/gcc.target/arm/xor-and.c
  79a594a642e89de4c3a753867b50cf54  gcc/testsuite/gcc.target/arm/xordi3-opt.c
! 57f377dcd0d5fcfabed674dfda8fd722  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
! 9d3fda770c012a8df7132a2c4cc1bf07  gcc/testsuite/gcc.target/avr/isr-test.h
! 699419c3d7fb5ee66c13d78637a88a41  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
  2931177f4aeff49d531d5474224448f6  gcc/testsuite/gcc.target/avr/pr46779-1.c
  572dc228e08385a1db0fcbab66dbaa4e  gcc/testsuite/gcc.target/avr/pr46779-2.c
  d92831f37e30237d1dc568f585e4c2c9  gcc/testsuite/gcc.target/avr/pr50739.c
! fc917fcfe7cfe97b5f27265d5960f0e6  gcc/testsuite/gcc.target/avr/pr52472.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
--- 41644,41663 ----
  c7c10f49683ff36c492aa2300d34dfdc  gcc/testsuite/gcc.target/arm/wmul-9.c
  c75ed40c88ef10849c23f953624d1ae2  gcc/testsuite/gcc.target/arm/wmul-bitfield-1.c
  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
! 457c27b7ba960d3989907fd3a94727a9  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
! 08a96344593d18e6e1b71034b4c058df  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
  2931177f4aeff49d531d5474224448f6  gcc/testsuite/gcc.target/avr/pr46779-1.c
  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
  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
*************** aaa9c47b190b793ab53ebe110e5513ca  gcc/te
*** 39241,39247 ****
  7d6f10a52c4bc2bdb7cda724781d6c09  gcc/testsuite/gcc.target/avr/pr71151-7.c
  35b856a6bbf391f0cf5464844277ca94  gcc/testsuite/gcc.target/avr/pr71151-8.c
  d8ead6d8d078793f34d18293ea311a91  gcc/testsuite/gcc.target/avr/pr71151-common.h
! 88d273131385cbcc6bed2d96125bc374  gcc/testsuite/gcc.target/avr/pr71627.c
  a4bae8cf29db0f6fadafdca3a5bde0c1  gcc/testsuite/gcc.target/avr/pr71676-1.c
  ee3885b4bb56d95f0fb2ebfe2a2c59cb  gcc/testsuite/gcc.target/avr/pr71676-2.c
  d5c8fd29fb9b2ff9d36bac3d01f75b13  gcc/testsuite/gcc.target/avr/pr71676-3.c
--- 41673,41679 ----
  7d6f10a52c4bc2bdb7cda724781d6c09  gcc/testsuite/gcc.target/avr/pr71151-7.c
  35b856a6bbf391f0cf5464844277ca94  gcc/testsuite/gcc.target/avr/pr71151-8.c
  d8ead6d8d078793f34d18293ea311a91  gcc/testsuite/gcc.target/avr/pr71151-common.h
! 7dba5055eb753013ba39c839ade672ac  gcc/testsuite/gcc.target/avr/pr71627.c
  a4bae8cf29db0f6fadafdca3a5bde0c1  gcc/testsuite/gcc.target/avr/pr71676-1.c
  ee3885b4bb56d95f0fb2ebfe2a2c59cb  gcc/testsuite/gcc.target/avr/pr71676-2.c
  d5c8fd29fb9b2ff9d36bac3d01f75b13  gcc/testsuite/gcc.target/avr/pr71676-3.c
*************** d5c8fd29fb9b2ff9d36bac3d01f75b13  gcc/te
*** 39249,39304 ****
  859b3836a035473a6251a77102bbe16d  gcc/testsuite/gcc.target/avr/pr71678.c
  f91d8c4774a3ac3e49934378e0629b52  gcc/testsuite/gcc.target/avr/pr71873.c
  881cb1836ddfc3105e0aacacc481aa09  gcc/testsuite/gcc.target/avr/progmem-error-1.c
! 2eb3f167ae58b534e25afc1b94617746  gcc/testsuite/gcc.target/avr/progmem-error-1.cpp
  56de611fd29076ce9da389a853476819  gcc/testsuite/gcc.target/avr/progmem-warning-1.c
! 431dfe66c3244b960a5fcba301e74ab7  gcc/testsuite/gcc.target/avr/progmem.h
! ebff7db39a4aaee79b99e192acc965f8  gcc/testsuite/gcc.target/avr/torture/addr-space-1-0.c
! 5b0846f86d6e8e315a0cd7de5f9f70d2  gcc/testsuite/gcc.target/avr/torture/addr-space-1-1.c
  e1c7151f17ec114f6529f690e6145cb6  gcc/testsuite/gcc.target/avr/torture/addr-space-1-g.c
! d257f99369eecef8151825cbccfc7fdd  gcc/testsuite/gcc.target/avr/torture/addr-space-1-x.c
  7203095415106fa12c3d912391683ad7  gcc/testsuite/gcc.target/avr/torture/addr-space-1.h
! b456cf0050bcd46e1a09f958b055fc76  gcc/testsuite/gcc.target/avr/torture/addr-space-2-0.c
! fcfd0c528753a89222e17dd2d20a5978  gcc/testsuite/gcc.target/avr/torture/addr-space-2-1.c
  53dfc94573110c2220b0a51c076fda55  gcc/testsuite/gcc.target/avr/torture/addr-space-2-g.c
! d0f7ef9323e01fd7d8d1f56630fd0d0d  gcc/testsuite/gcc.target/avr/torture/addr-space-2-x.c
  a0d24b6b729b3316832b85d84ee2f113  gcc/testsuite/gcc.target/avr/torture/addr-space-2.h
! 0e6d48b089bd4678985d3497d90e3a82  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
! 4e8775f7644c516578716a8ea7d588b2  gcc/testsuite/gcc.target/avr/torture/builtins-2.c
! 174c31ad852080b435229b98d586eb45  gcc/testsuite/gcc.target/avr/torture/builtins-3-absfx.c
  72764bd3fc957d6e2c5475fdf94633ff  gcc/testsuite/gcc.target/avr/torture/builtins-4-roundfx.c
  0d57054a27e8f45b06571358f92c481b  gcc/testsuite/gcc.target/avr/torture/builtins-5-countlsfx.c
  0628f66d299ecca3619e823e3cc62896  gcc/testsuite/gcc.target/avr/torture/builtins-error.c
  c458c2462e23a4c58a7e4d05b6200907  gcc/testsuite/gcc.target/avr/torture/fix-types.h
  955a40e1d1066b48539480d898f7b7e3  gcc/testsuite/gcc.target/avr/torture/get-mem.c
! 9c259c4f72a85d057a7f86dee19660cc  gcc/testsuite/gcc.target/avr/torture/int24-mul.c
  f07474ce14e61da44f73f5bc38af0fa5  gcc/testsuite/gcc.target/avr/torture/isr-01-simple.c
  fcfc22b5becf29a31bc290457133738d  gcc/testsuite/gcc.target/avr/torture/isr-02-call.c
  9cae7dcbc57747c7d869b4d66a99221f  gcc/testsuite/gcc.target/avr/torture/isr-03-fixed.c
  0844a939ea2464d30cc8892c85b4aecc  gcc/testsuite/gcc.target/avr/torture/pr39633.c
  8fb17af722ee890b7fa08b5610cdb80e  gcc/testsuite/gcc.target/avr/torture/pr41885.c
  70b849f57ecf42299230b99b7734dd2d  gcc/testsuite/gcc.target/avr/torture/pr51374-1.c
! 640699ff4839c2a7798488c85177d381  gcc/testsuite/gcc.target/avr/torture/pr51782-1.c
! 006a6c5a86a749ba6291dfb65e0376e0  gcc/testsuite/gcc.target/avr/torture/pr57631.c
! fea352b16ae79edc9965b1f39680a709  gcc/testsuite/gcc.target/avr/torture/pr61055.c
! 2531c68fb11c95a62490386167ef9148  gcc/testsuite/gcc.target/avr/torture/pr61443.c
  7f56c1b750dfe8d7e4128f15aa3eaffe  gcc/testsuite/gcc.target/avr/torture/pr63633-ice-mult.c
  44584f49cd0975073be7b86102774077  gcc/testsuite/gcc.target/avr/torture/pr64331.c
  dcabffeb42e88a442661b9e47e43a9c1  gcc/testsuite/gcc.target/avr/torture/pr64452.c
  ab53af0eb6dbfe2791a8ac1bbaf0c11f  gcc/testsuite/gcc.target/avr/torture/pr71103-2.c
  5f3be2dbb82f715c14a1a41fff447a60  gcc/testsuite/gcc.target/avr/torture/pr77326.c
  21a45d34960ba9567b9f2483d22c843f  gcc/testsuite/gcc.target/avr/torture/progmem-1.c
  564c71a894aff68e98d5c4a6db2b47ae  gcc/testsuite/gcc.target/avr/torture/progmem-1.cpp
! e3e1c41865f5287c9ff7e200745758fd  gcc/testsuite/gcc.target/avr/torture/sat-hr-plus-minus.c
! d0d9ca240639f62b31084dcfb1a99921  gcc/testsuite/gcc.target/avr/torture/sat-k-plus-minus.c
! 4ec36305479ad6508ab1ce3a322e6678  gcc/testsuite/gcc.target/avr/torture/sat-llk-plus-minus.c
! 747d935bb64ed9f520e5448043e2d351  gcc/testsuite/gcc.target/avr/torture/sat-r-plus-minus.c
! 69fc647e2943f2ff3754e7de4c48d82d  gcc/testsuite/gcc.target/avr/torture/sat-uhr-plus-minus.c
! d16e8031ea2990f29ba247ece107046a  gcc/testsuite/gcc.target/avr/torture/sat-uk-plus-minus.c
! 2b48583c3ad64566e3edd7559983bb79  gcc/testsuite/gcc.target/avr/torture/sat-ullk-plus-minus.c
! 4107e111ad99b27db339c0ac9d46073a  gcc/testsuite/gcc.target/avr/torture/sat-ur-plus-minus.c
  f625e06d6f28ac58eff4365218e76cc1  gcc/testsuite/gcc.target/avr/torture/set-mem.c
  ac13073df68e284c16972e31c8e0dfd7  gcc/testsuite/gcc.target/avr/torture/tiny-absdata-1.c
  cc2406331808eebf0409a55d14ddae36  gcc/testsuite/gcc.target/avr/torture/tiny-absdata-2.c
--- 41681,41739 ----
  859b3836a035473a6251a77102bbe16d  gcc/testsuite/gcc.target/avr/pr71678.c
  f91d8c4774a3ac3e49934378e0629b52  gcc/testsuite/gcc.target/avr/pr71873.c
  881cb1836ddfc3105e0aacacc481aa09  gcc/testsuite/gcc.target/avr/progmem-error-1.c
! e3ffeba102da544a9fa5162047b373ad  gcc/testsuite/gcc.target/avr/progmem-error-1.cpp
  56de611fd29076ce9da389a853476819  gcc/testsuite/gcc.target/avr/progmem-warning-1.c
! 06a40c47b5a1c6fd69f69a33ab43a52e  gcc/testsuite/gcc.target/avr/progmem.h
! 2b06671686db85920f5618751e2f29b6  gcc/testsuite/gcc.target/avr/torture/addr-space-1-0.c
! 2b549e7c542307748d2612736203a53e  gcc/testsuite/gcc.target/avr/torture/addr-space-1-1.c
  e1c7151f17ec114f6529f690e6145cb6  gcc/testsuite/gcc.target/avr/torture/addr-space-1-g.c
! e448136494af9abcaa38e2065e82682d  gcc/testsuite/gcc.target/avr/torture/addr-space-1-x.c
  7203095415106fa12c3d912391683ad7  gcc/testsuite/gcc.target/avr/torture/addr-space-1.h
! 9d5a32faf6748464f7acaa8160b0ac81  gcc/testsuite/gcc.target/avr/torture/addr-space-2-0.c
! e2ddf19981b44595d911d7d384c3824f  gcc/testsuite/gcc.target/avr/torture/addr-space-2-1.c
  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
! 035309ac6921c10c3e1eb7ecb09a8612  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
! 3314f640d798e120530bb658d3b34922  gcc/testsuite/gcc.target/avr/torture/builtins-2-flash.c
! 61068b3aeb87690dcde7e0ba02534a6b  gcc/testsuite/gcc.target/avr/torture/builtins-2.c
! 70190ccb451c4e6d9e95a411de38c26a  gcc/testsuite/gcc.target/avr/torture/builtins-3-absfx.c
  72764bd3fc957d6e2c5475fdf94633ff  gcc/testsuite/gcc.target/avr/torture/builtins-4-roundfx.c
  0d57054a27e8f45b06571358f92c481b  gcc/testsuite/gcc.target/avr/torture/builtins-5-countlsfx.c
  0628f66d299ecca3619e823e3cc62896  gcc/testsuite/gcc.target/avr/torture/builtins-error.c
  c458c2462e23a4c58a7e4d05b6200907  gcc/testsuite/gcc.target/avr/torture/fix-types.h
  955a40e1d1066b48539480d898f7b7e3  gcc/testsuite/gcc.target/avr/torture/get-mem.c
! 33798ca51880c8beb722dd5baf15598f  gcc/testsuite/gcc.target/avr/torture/int24-mul.c
  f07474ce14e61da44f73f5bc38af0fa5  gcc/testsuite/gcc.target/avr/torture/isr-01-simple.c
  fcfc22b5becf29a31bc290457133738d  gcc/testsuite/gcc.target/avr/torture/isr-02-call.c
  9cae7dcbc57747c7d869b4d66a99221f  gcc/testsuite/gcc.target/avr/torture/isr-03-fixed.c
  0844a939ea2464d30cc8892c85b4aecc  gcc/testsuite/gcc.target/avr/torture/pr39633.c
  8fb17af722ee890b7fa08b5610cdb80e  gcc/testsuite/gcc.target/avr/torture/pr41885.c
  70b849f57ecf42299230b99b7734dd2d  gcc/testsuite/gcc.target/avr/torture/pr51374-1.c
! 5c91050c6b515f4c9856e7d4c64df591  gcc/testsuite/gcc.target/avr/torture/pr51782-1.c
! 0f75faaa72ab04629492433cefe22039  gcc/testsuite/gcc.target/avr/torture/pr57631.c
! 665a077423cb5e8c8f7cebd1c0ae38e4  gcc/testsuite/gcc.target/avr/torture/pr61055.c
! 6514d2bfbaa06a586d531fbd6693c042  gcc/testsuite/gcc.target/avr/torture/pr61443.c
  7f56c1b750dfe8d7e4128f15aa3eaffe  gcc/testsuite/gcc.target/avr/torture/pr63633-ice-mult.c
  44584f49cd0975073be7b86102774077  gcc/testsuite/gcc.target/avr/torture/pr64331.c
  dcabffeb42e88a442661b9e47e43a9c1  gcc/testsuite/gcc.target/avr/torture/pr64452.c
  ab53af0eb6dbfe2791a8ac1bbaf0c11f  gcc/testsuite/gcc.target/avr/torture/pr71103-2.c
  5f3be2dbb82f715c14a1a41fff447a60  gcc/testsuite/gcc.target/avr/torture/pr77326.c
+ 4fbef28c5655476b160563b7732f35f0  gcc/testsuite/gcc.target/avr/torture/pr83729.c
+ 3f60045ba7f9c20a87591727f9e0b7f1  gcc/testsuite/gcc.target/avr/torture/pr83801.c
  21a45d34960ba9567b9f2483d22c843f  gcc/testsuite/gcc.target/avr/torture/progmem-1.c
  564c71a894aff68e98d5c4a6db2b47ae  gcc/testsuite/gcc.target/avr/torture/progmem-1.cpp
! 126473a2f2a291f65eeb2dca66b500b2  gcc/testsuite/gcc.target/avr/torture/sat-hr-plus-minus.c
! 010572d08e9ebcbcdb1f6bd1d5cf6010  gcc/testsuite/gcc.target/avr/torture/sat-k-plus-minus.c
! e6850166a65d653f357f477745460885  gcc/testsuite/gcc.target/avr/torture/sat-llk-plus-minus.c
! 27b35fba635f70cb018e657bc99b41b9  gcc/testsuite/gcc.target/avr/torture/sat-r-plus-minus.c
! 73da8fa74715aaa16eba8014ae3d7515  gcc/testsuite/gcc.target/avr/torture/sat-uhr-plus-minus.c
! 2697f0a9a2c8d3969e54f09153e5b8b0  gcc/testsuite/gcc.target/avr/torture/sat-uk-plus-minus.c
! e26153252ec5b578f6e242def1b0acc7  gcc/testsuite/gcc.target/avr/torture/sat-ullk-plus-minus.c
! 1b57bb53ce46f2be70fba74239faa1dd  gcc/testsuite/gcc.target/avr/torture/sat-ur-plus-minus.c
  f625e06d6f28ac58eff4365218e76cc1  gcc/testsuite/gcc.target/avr/torture/set-mem.c
  ac13073df68e284c16972e31c8e0dfd7  gcc/testsuite/gcc.target/avr/torture/tiny-absdata-1.c
  cc2406331808eebf0409a55d14ddae36  gcc/testsuite/gcc.target/avr/torture/tiny-absdata-2.c
*************** b132d1738c80be39010cd2b0314aba73  gcc/te
*** 39319,39325 ****
  e8596cb430561d81a166efee3830ab78  gcc/testsuite/gcc.target/bfin/20090914-2.c
  59131c95108c3e68948b937d2cbd9453  gcc/testsuite/gcc.target/bfin/20090914-3.c
  bf1c248fa1b1520ecdeed5e768375da7  gcc/testsuite/gcc.target/bfin/arith.c
! a4f6b22320af8d05978060c2963fcce8  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
--- 41754,41760 ----
  e8596cb430561d81a166efee3830ab78  gcc/testsuite/gcc.target/bfin/20090914-2.c
  59131c95108c3e68948b937d2cbd9453  gcc/testsuite/gcc.target/bfin/20090914-3.c
  bf1c248fa1b1520ecdeed5e768375da7  gcc/testsuite/gcc.target/bfin/arith.c
! 428f925b44b9e765875629077deddbea  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
*** 39332,39338 ****
  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
! d6591dd7c89f3ba4aa2de6c41f22e749  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
--- 41767,41773 ----
  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
! f846bee82c295736277d0b8a385c4da4  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
*************** da811515083d9ddf056500903ebb758b  gcc/te
*** 39539,39545 ****
  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
! d215c6a777efcb02e1cb3892b6cb88c4  gcc/testsuite/gcc.target/cris/cris.exp
  2922a81b9fca0ef8a7b633ab34d7baff  gcc/testsuite/gcc.target/cris/inasm-other.c
  cd292f26f94c2355769e2f7f413e9377  gcc/testsuite/gcc.target/cris/inasm-v10.c
  0d6210c3fc8d5a443d11e48adc1d6eab  gcc/testsuite/gcc.target/cris/inasm-v8.c
--- 41974,41980 ----
  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
! 1e70354caf08227643515dbd2deb502a  gcc/testsuite/gcc.target/cris/cris.exp
  2922a81b9fca0ef8a7b633ab34d7baff  gcc/testsuite/gcc.target/cris/inasm-other.c
  cd292f26f94c2355769e2f7f413e9377  gcc/testsuite/gcc.target/cris/inasm-v10.c
  0d6210c3fc8d5a443d11e48adc1d6eab  gcc/testsuite/gcc.target/cris/inasm-v8.c
*************** b08e4db62a9fb0f97ea3211c38828a92  gcc/te
*** 39561,39567 ****
  15c2184b2d93ca52db7d62e0d1643cc6  gcc/testsuite/gcc.target/cris/sync-4i.c
  8aaa425093f42b751e4b39e8b0182a1a  gcc/testsuite/gcc.target/cris/sync-4s.c
  0b1b7109726eb4d3415da0cc65329694  gcc/testsuite/gcc.target/cris/sync-xchg-1.c
! 0087ef4cd11c510f1c9c8f839bf597d8  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
--- 41996,42002 ----
  15c2184b2d93ca52db7d62e0d1643cc6  gcc/testsuite/gcc.target/cris/sync-4i.c
  8aaa425093f42b751e4b39e8b0182a1a  gcc/testsuite/gcc.target/cris/sync-4s.c
  0b1b7109726eb4d3415da0cc65329694  gcc/testsuite/gcc.target/cris/sync-xchg-1.c
! 9469012d70c97e1e0be76c13f26c77da  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
*************** f6d16e089ff9d5ef664414baef7405cf  gcc/te
*** 39595,39601 ****
  c70adc041bc91df7a4d0eb7aa2a58cf7  gcc/testsuite/gcc.target/cris/torture/trap-v0.c
  2f18951162d37f7614de5437e004f833  gcc/testsuite/gcc.target/cris/torture/trap-v3.c
  3396d7f14e4963592892b06ccec1dbed  gcc/testsuite/gcc.target/epiphany/btst-1.c
! d33ca3b823094189f2dd008330381b9f  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
--- 42030,42036 ----
  c70adc041bc91df7a4d0eb7aa2a58cf7  gcc/testsuite/gcc.target/cris/torture/trap-v0.c
  2f18951162d37f7614de5437e004f833  gcc/testsuite/gcc.target/cris/torture/trap-v3.c
  3396d7f14e4963592892b06ccec1dbed  gcc/testsuite/gcc.target/epiphany/btst-1.c
! cbb9e37a66db877619158fdf12b1a923  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
*** 39636,39650 ****
  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
! f6580e2b8cf8152103e79c7021b240dc  gcc/testsuite/gcc.target/frv/frv.exp
  6618feb3136b4db14cb25d0ac22056c4  gcc/testsuite/gcc.target/h8300/andsi3_ashift_n_lower.c
! 3cda1bf8a1a253ffef97b4f7252ed5ab  gcc/testsuite/gcc.target/h8300/h8300.exp
  5788c901799e460b8e5c429a23b94ebe  gcc/testsuite/gcc.target/h8300/pr17306-1.c
  4a76a6a9bd3c90b87865db2ad9c10434  gcc/testsuite/gcc.target/h8300/pr17306-2.c
  c91efeb870ae7690b89a4b3ebff5d024  gcc/testsuite/gcc.target/h8300/pr58400.c
  344a21000f3cf05f2baaf02b2c346cd5  gcc/testsuite/gcc.target/h8300/pragma-isr.c
  aaaadf978237931983f712ab447eeff0  gcc/testsuite/gcc.target/h8300/pragma-isr2.c
! 371c66add2b77e70da3beb6385209680  gcc/testsuite/gcc.target/hppa/hppa.exp
  b3208ea4097d665215fd20e76146b954  gcc/testsuite/gcc.target/hppa/shadd-1.c
  7c1b49fc674b5e7e637c961d18672752  gcc/testsuite/gcc.target/hppa/shadd-2.c
  7a13bb17a379f48f49e22a3d30b31c12  gcc/testsuite/gcc.target/hppa/shadd-3.c
--- 42071,42085 ----
  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
! dd1baf8f866603fc508ee6b8ef19d37d  gcc/testsuite/gcc.target/frv/frv.exp
  6618feb3136b4db14cb25d0ac22056c4  gcc/testsuite/gcc.target/h8300/andsi3_ashift_n_lower.c
! 5ff83555ed909d8aad224c38daa2c9f9  gcc/testsuite/gcc.target/h8300/h8300.exp
  5788c901799e460b8e5c429a23b94ebe  gcc/testsuite/gcc.target/h8300/pr17306-1.c
  4a76a6a9bd3c90b87865db2ad9c10434  gcc/testsuite/gcc.target/h8300/pr17306-2.c
  c91efeb870ae7690b89a4b3ebff5d024  gcc/testsuite/gcc.target/h8300/pr58400.c
  344a21000f3cf05f2baaf02b2c346cd5  gcc/testsuite/gcc.target/h8300/pragma-isr.c
  aaaadf978237931983f712ab447eeff0  gcc/testsuite/gcc.target/h8300/pragma-isr2.c
! 055fa68d37425493c2a815292b5a1a18  gcc/testsuite/gcc.target/hppa/hppa.exp
  b3208ea4097d665215fd20e76146b954  gcc/testsuite/gcc.target/hppa/shadd-1.c
  7c1b49fc674b5e7e637c961d18672752  gcc/testsuite/gcc.target/hppa/shadd-2.c
  7a13bb17a379f48f49e22a3d30b31c12  gcc/testsuite/gcc.target/hppa/shadd-3.c
*************** ba54f9b0c866b8f8b35145c85e815cee  gcc/te
*** 39672,39678 ****
  7c29fe6a3fc999ee1309fa36a0f764d6  gcc/testsuite/gcc.target/i386/20020729-1.c
  489303cb175b4f8022fe7d831bef0fe6  gcc/testsuite/gcc.target/i386/20030217-1.c
  41e29ea15c2438cdb075d08b5368c25f  gcc/testsuite/gcc.target/i386/20030217-2.c
! 07e48a42f4b6ca4b701de186703fce87  gcc/testsuite/gcc.target/i386/20030926-1.c
  3b6c04d1af10fdb1e9317d6b0a34a660  gcc/testsuite/gcc.target/i386/20040112-1.c
  23e274aa6bf5841c3542d212ba52d17e  gcc/testsuite/gcc.target/i386/20050113-1.c
  9c2b1a032cf616abe10eceed52867464  gcc/testsuite/gcc.target/i386/20060125-1.c
--- 42107,42113 ----
  7c29fe6a3fc999ee1309fa36a0f764d6  gcc/testsuite/gcc.target/i386/20020729-1.c
  489303cb175b4f8022fe7d831bef0fe6  gcc/testsuite/gcc.target/i386/20030217-1.c
  41e29ea15c2438cdb075d08b5368c25f  gcc/testsuite/gcc.target/i386/20030217-2.c
! a3e554dab8a93a4d3090e2c2ca07addf  gcc/testsuite/gcc.target/i386/20030926-1.c
  3b6c04d1af10fdb1e9317d6b0a34a660  gcc/testsuite/gcc.target/i386/20040112-1.c
  23e274aa6bf5841c3542d212ba52d17e  gcc/testsuite/gcc.target/i386/20050113-1.c
  9c2b1a032cf616abe10eceed52867464  gcc/testsuite/gcc.target/i386/20060125-1.c
*************** ba2b0a148c01cb904bce54c8c192a35b  gcc/te
*** 39697,39702 ****
--- 42132,42139 ----
  4cfd9d57073fabab485c53f1c2d00c25  gcc/testsuite/gcc.target/i386/387-8.c
  4ea889aba65e39a9d67baaf922518b77  gcc/testsuite/gcc.target/i386/387-9.c
  4b2e14fd3ebf7482462b93ccfa985dd9  gcc/testsuite/gcc.target/i386/387-builtin-fp-int-inexact.c
+ 0557ca680258d5dbd42f869451178df3  gcc/testsuite/gcc.target/i386/387-ficom-1.c
+ 6fa350daf5042ae0f3aff32a424cb5ad  gcc/testsuite/gcc.target/i386/387-ficom-2.c
  81083060c3f72357166e7966318f3778  gcc/testsuite/gcc.target/i386/387-rint-inline-1.c
  58c5a797a258111e58e285e09c0fdeb7  gcc/testsuite/gcc.target/i386/387-rint-inline-2.c
  5d1c9f325eca2f74614cc9a6c4e5e8ae  gcc/testsuite/gcc.target/i386/3dnow-1.c
*************** ed39fac01137b1fe7fa6aa0aed6f57d9  gcc/te
*** 39723,39729 ****
  3f65e3fab87dac4f1d7da667d826e208  gcc/testsuite/gcc.target/i386/991214-1.c
  79a49b8c13cb7ee745254fc8de7ae899  gcc/testsuite/gcc.target/i386/991230-1.c
  f735456052a700dd38243bb3e18ed960  gcc/testsuite/gcc.target/i386/abi-1.c
! 62a1ed5ce397f4ffb5e0f3d44fc3d350  gcc/testsuite/gcc.target/i386/abi-2.c
  4ceb7e1406c49e0503c6d6401c5d7a28  gcc/testsuite/gcc.target/i386/addr-sel-1.c
  0ccc8826707bc198cf7118d0079e2880  gcc/testsuite/gcc.target/i386/addr-space-1.c
  f518fc3212e92c29762b4e3ed19db331  gcc/testsuite/gcc.target/i386/addr-space-2.c
--- 42160,42166 ----
  3f65e3fab87dac4f1d7da667d826e208  gcc/testsuite/gcc.target/i386/991214-1.c
  79a49b8c13cb7ee745254fc8de7ae899  gcc/testsuite/gcc.target/i386/991230-1.c
  f735456052a700dd38243bb3e18ed960  gcc/testsuite/gcc.target/i386/abi-1.c
! d1f50582e0aff656e8d04fa44820aada  gcc/testsuite/gcc.target/i386/abi-2.c
  4ceb7e1406c49e0503c6d6401c5d7a28  gcc/testsuite/gcc.target/i386/addr-sel-1.c
  0ccc8826707bc198cf7118d0079e2880  gcc/testsuite/gcc.target/i386/addr-space-1.c
  f518fc3212e92c29762b4e3ed19db331  gcc/testsuite/gcc.target/i386/addr-space-2.c
*************** dd05e8a4c4da9897a764303a258ce47e  gcc/te
*** 39735,39741 ****
  3e27c30f777edd54bc9a1e93b7412901  gcc/testsuite/gcc.target/i386/adx-addcarryx64-1.c
  16b588d5456763b6d7e055289e1bf69c  gcc/testsuite/gcc.target/i386/adx-addcarryx64-2.c
  76b34ef617a605f6c05cda6752ae4bd7  gcc/testsuite/gcc.target/i386/adx-addcarryx64-3.c
! ac7e1238eeda35136f8380015dac9ca0  gcc/testsuite/gcc.target/i386/adx-check.h
  f2d78603e52e7e053a779e149383c1de  gcc/testsuite/gcc.target/i386/aes-avx-check.h
  a7b2ba93a40acf61b74c80dd6835eb3d  gcc/testsuite/gcc.target/i386/aes-check.h
  002af625049a48934e8f3e1ee9e9d4c6  gcc/testsuite/gcc.target/i386/aesdec.c
--- 42172,42178 ----
  3e27c30f777edd54bc9a1e93b7412901  gcc/testsuite/gcc.target/i386/adx-addcarryx64-1.c
  16b588d5456763b6d7e055289e1bf69c  gcc/testsuite/gcc.target/i386/adx-addcarryx64-2.c
  76b34ef617a605f6c05cda6752ae4bd7  gcc/testsuite/gcc.target/i386/adx-addcarryx64-3.c
! 51d41f8cac24ffc284286ac53adc9a7c  gcc/testsuite/gcc.target/i386/adx-check.h
  f2d78603e52e7e053a779e149383c1de  gcc/testsuite/gcc.target/i386/aes-avx-check.h
  a7b2ba93a40acf61b74c80dd6835eb3d  gcc/testsuite/gcc.target/i386/aes-check.h
  002af625049a48934e8f3e1ee9e9d4c6  gcc/testsuite/gcc.target/i386/aesdec.c
*************** f7d51b513f122289cd1ded4260b3d3c3  gcc/te
*** 39749,39757 ****
  69cbedbd56c329161e00414005320b8c  gcc/testsuite/gcc.target/i386/aggregate-ret3.c
  e0a5c8badd62f96d46429d99bb49b0a3  gcc/testsuite/gcc.target/i386/aggregate-ret4.c
  ec52786e5255ac83837c3d72fa16e382  gcc/testsuite/gcc.target/i386/alias-1.c
! 461d5ccd2ecf8f5e222484cc1cfdc0ea  gcc/testsuite/gcc.target/i386/align-limit.c
! e8b8f47b5d90e05270557178a48753c6  gcc/testsuite/gcc.target/i386/align-main-1.c
! f3f3b61eed994d003f4c418b8a61c472  gcc/testsuite/gcc.target/i386/align-main-2.c
  ba171bbae28d5459ffdac750990d46d9  gcc/testsuite/gcc.target/i386/align-main-3.c
  18d000c669e50074e936bf4285463648  gcc/testsuite/gcc.target/i386/all_one_m128i.c
  2112e21b348fb951c3ee62a66afc8d75  gcc/testsuite/gcc.target/i386/all_one_m256i.c
--- 42186,42194 ----
  69cbedbd56c329161e00414005320b8c  gcc/testsuite/gcc.target/i386/aggregate-ret3.c
  e0a5c8badd62f96d46429d99bb49b0a3  gcc/testsuite/gcc.target/i386/aggregate-ret4.c
  ec52786e5255ac83837c3d72fa16e382  gcc/testsuite/gcc.target/i386/alias-1.c
! 9b28d2cb24d90b0f0f2b7688705039f4  gcc/testsuite/gcc.target/i386/align-limit.c
! 17551e75bc7501315c98bbcc5bc02797  gcc/testsuite/gcc.target/i386/align-main-1.c
! 60701cc63609c87b3d10f0f5d5598a4a  gcc/testsuite/gcc.target/i386/align-main-2.c
  ba171bbae28d5459ffdac750990d46d9  gcc/testsuite/gcc.target/i386/align-main-3.c
  18d000c669e50074e936bf4285463648  gcc/testsuite/gcc.target/i386/all_one_m128i.c
  2112e21b348fb951c3ee62a66afc8d75  gcc/testsuite/gcc.target/i386/all_one_m256i.c
*************** c5cfc6b01e748536e4ac5d65b3528952  gcc/te
*** 39768,39777 ****
  c052d916aa90fa5343dac48ba370180f  gcc/testsuite/gcc.target/i386/andor-2.c
  c765c9b756bf20c982b53ff289356817  gcc/testsuite/gcc.target/i386/asm-1.c
  71b9972c5849678e344f7330b6b395bd  gcc/testsuite/gcc.target/i386/asm-2.c
! 05f7458255d1a1500374b2690a49093a  gcc/testsuite/gcc.target/i386/asm-3.c
  852b89c01ae43ae4dda7ea6550c11cb5  gcc/testsuite/gcc.target/i386/asm-4.c
  8c96c5deb4526b4b6df874d720ec0d61  gcc/testsuite/gcc.target/i386/asm-5.c
! 6f99969c739eb451049cd72b717b5295  gcc/testsuite/gcc.target/i386/asm-6.c
  a5354cd7fdd4572a60c34cb3fdd7c318  gcc/testsuite/gcc.target/i386/asm-dialect-1.c
  df396df99f832b6ff1d36c9eef3228cc  gcc/testsuite/gcc.target/i386/asm-dialect-2.c
  b9390da4b0e775722565da6b4f55c879  gcc/testsuite/gcc.target/i386/asm-flag-0.c
--- 42205,42214 ----
  c052d916aa90fa5343dac48ba370180f  gcc/testsuite/gcc.target/i386/andor-2.c
  c765c9b756bf20c982b53ff289356817  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
  852b89c01ae43ae4dda7ea6550c11cb5  gcc/testsuite/gcc.target/i386/asm-4.c
  8c96c5deb4526b4b6df874d720ec0d61  gcc/testsuite/gcc.target/i386/asm-5.c
! 2f437875744739ae8e4e73aca5ac414f  gcc/testsuite/gcc.target/i386/asm-6.c
  a5354cd7fdd4572a60c34cb3fdd7c318  gcc/testsuite/gcc.target/i386/asm-dialect-1.c
  df396df99f832b6ff1d36c9eef3228cc  gcc/testsuite/gcc.target/i386/asm-dialect-2.c
  b9390da4b0e775722565da6b4f55c879  gcc/testsuite/gcc.target/i386/asm-flag-0.c
*************** cca7e10ee55fb1f96e6f6f5962a52b47  gcc/te
*** 39782,39791 ****
  3e9a12e002713da0e72fa6fb23a52948  gcc/testsuite/gcc.target/i386/asm-flag-5.c
  12e90c2a4e4c615ce5067b4215a5d18b  gcc/testsuite/gcc.target/i386/asm-flag-6.c
  c9e95a50e4c08ce058a523de15b6c8fd  gcc/testsuite/gcc.target/i386/asm-flag-7.c
! aa3476662f0b4583fb7dd5d53ba3db63  gcc/testsuite/gcc.target/i386/attr-returns_twice-1.c
  b417781449436dad69aae8b9300baa1a  gcc/testsuite/gcc.target/i386/attributes-error.c
! 626743f5be3ac8877eb86d880292a3e4  gcc/testsuite/gcc.target/i386/avx-1.c
! 07df876209309400a0e1acd03bd046ca  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
  fd3ef78ae140ffe2546ff988ee4be235  gcc/testsuite/gcc.target/i386/avx-ceil-sfix-2-vec.c
--- 42219,42231 ----
  3e9a12e002713da0e72fa6fb23a52948  gcc/testsuite/gcc.target/i386/asm-flag-5.c
  12e90c2a4e4c615ce5067b4215a5d18b  gcc/testsuite/gcc.target/i386/asm-flag-6.c
  c9e95a50e4c08ce058a523de15b6c8fd  gcc/testsuite/gcc.target/i386/asm-flag-7.c
! 837d6eb699db50d462ddc69fd4d051c2  gcc/testsuite/gcc.target/i386/asm-mem.c
! 9d11ea77a94e6833f3991c7909c56335  gcc/testsuite/gcc.target/i386/attr-nocf-check-1a.c
! 2632af969dd8680f097556a40ba2c147  gcc/testsuite/gcc.target/i386/attr-nocf-check-3a.c
! 9702921db90d8706268aafc9574e606d  gcc/testsuite/gcc.target/i386/attr-returns_twice-1.c
  b417781449436dad69aae8b9300baa1a  gcc/testsuite/gcc.target/i386/attributes-error.c
! 6dde015833d4dfcb977eeaabb1e7e7f9  gcc/testsuite/gcc.target/i386/avx-1.c
! a78738f3c17b2bcf3bd51fb01d0eaeba  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
  fd3ef78ae140ffe2546ff988ee4be235  gcc/testsuite/gcc.target/i386/avx-ceil-sfix-2-vec.c
*************** ab15d222e706bd85c87c037d1e9b6f51  gcc/te
*** 39826,39831 ****
--- 42266,42273 ----
  7e490de1d2a70d21844cdc70c1546f49  gcc/testsuite/gcc.target/i386/avx-pr63594-2.c
  52efc199588007563ddb240d620c0f01  gcc/testsuite/gcc.target/i386/avx-pr71559.c
  15722fba52fd43dd64c47b080c1c307c  gcc/testsuite/gcc.target/i386/avx-pr80286.c
+ 0c470227f4a8ce9ace3b799a8ebecbc0  gcc/testsuite/gcc.target/i386/avx-pr80846.c
+ cb21d2e64c04a9daab66338cc0a66e65  gcc/testsuite/gcc.target/i386/avx-pr82370.c
  4e3d37bb04b99394790fa9e8caddf790  gcc/testsuite/gcc.target/i386/avx-recip-vec.c
  02ae18a66bd7b76f7a651b896f066b70  gcc/testsuite/gcc.target/i386/avx-reduc-1.c
  901c452df22c91b2a6a7b58fc968d5f4  gcc/testsuite/gcc.target/i386/avx-rint-sfix-2-vec.c
*************** d34da73fc5f88ffeb1c0fc8356399487  gcc/te
*** 39981,39989 ****
  88c5385d867419a2a79817a5dc9d83c9  gcc/testsuite/gcc.target/i386/avx-vhsubpd-256-1.c
  e48c3af19d2882179b0801a436573844  gcc/testsuite/gcc.target/i386/avx-vhsubps-1.c
  5026920784e933061e0a41d9307037d3  gcc/testsuite/gcc.target/i386/avx-vhsubps-256-1.c
! 6471b2cb4744af1a73fe8635f8966cec  gcc/testsuite/gcc.target/i386/avx-vinsertf128-256-1.c
! 5dbf0a03856ada9c716ac877cf04a608  gcc/testsuite/gcc.target/i386/avx-vinsertf128-256-2.c
! 5e31c847f69c8c16bf8458675ee2c402  gcc/testsuite/gcc.target/i386/avx-vinsertf128-256-3.c
  9cba2aa9410810dd9078df71f9d18f28  gcc/testsuite/gcc.target/i386/avx-vinsertps-1.c
  ffebc3242c7f0ed760150ca344889691  gcc/testsuite/gcc.target/i386/avx-vinsertps-2.c
  d966d4eba8e7717aea5e0dbaec0011f8  gcc/testsuite/gcc.target/i386/avx-vinsertps-3.c
--- 42423,42431 ----
  88c5385d867419a2a79817a5dc9d83c9  gcc/testsuite/gcc.target/i386/avx-vhsubpd-256-1.c
  e48c3af19d2882179b0801a436573844  gcc/testsuite/gcc.target/i386/avx-vhsubps-1.c
  5026920784e933061e0a41d9307037d3  gcc/testsuite/gcc.target/i386/avx-vhsubps-256-1.c
! 59a5c9f2603de6d5c20e8b4f3c196c8d  gcc/testsuite/gcc.target/i386/avx-vinsertf128-256-1.c
! 9ce0bfb9f5ce1f2a6e7cfe733745ca20  gcc/testsuite/gcc.target/i386/avx-vinsertf128-256-2.c
! d54ef41efc555058ce4c4679b403bf4f  gcc/testsuite/gcc.target/i386/avx-vinsertf128-256-3.c
  9cba2aa9410810dd9078df71f9d18f28  gcc/testsuite/gcc.target/i386/avx-vinsertps-1.c
  ffebc3242c7f0ed760150ca344889691  gcc/testsuite/gcc.target/i386/avx-vinsertps-2.c
  d966d4eba8e7717aea5e0dbaec0011f8  gcc/testsuite/gcc.target/i386/avx-vinsertps-3.c
*************** def2f44e933ed7c3798793ec0f68e40e  gcc/te
*** 40256,40273 ****
  c4f9e750a47dcc519097bfc51619ab3e  gcc/testsuite/gcc.target/i386/avx-vsubps-256-1.c
  c4da90ad781f1c3aa464337303a21469  gcc/testsuite/gcc.target/i386/avx-vsubsd-1.c
  c59a38db87d6838a40e0a421e45ef8af  gcc/testsuite/gcc.target/i386/avx-vsubss-1.c
! da81c3e4599f2e16400cd778769af04c  gcc/testsuite/gcc.target/i386/avx-vtestpd-1.c
! ccdd253cef22ca088b87f9c750f34fee  gcc/testsuite/gcc.target/i386/avx-vtestpd-2.c
! e1293229484caf6d455cc5fecd7a32a9  gcc/testsuite/gcc.target/i386/avx-vtestpd-256-1.c
! 22ab2bdc727b3bc433507f0b88f11fdb  gcc/testsuite/gcc.target/i386/avx-vtestpd-256-2.c
! 07d1ab2ec7b9822f42d543015e8f36de  gcc/testsuite/gcc.target/i386/avx-vtestpd-256-3.c
! 923ffa19bdbecf51207e5396dbbbe78c  gcc/testsuite/gcc.target/i386/avx-vtestpd-3.c
! 0a69da3116e1bb9d7e68a7e1cdce50ff  gcc/testsuite/gcc.target/i386/avx-vtestps-1.c
! 423bb96dea8c32c3e1edce9f08c87e9e  gcc/testsuite/gcc.target/i386/avx-vtestps-2.c
! 88e3fafb8ec7ba648da9ed43a3d2e964  gcc/testsuite/gcc.target/i386/avx-vtestps-256-1.c
! 9f471b9ca3facebf79abfca92be66e6c  gcc/testsuite/gcc.target/i386/avx-vtestps-256-2.c
! 17b8b6486c5b3206baf7ec0a4297e548  gcc/testsuite/gcc.target/i386/avx-vtestps-256-3.c
! 2fba00473fcb41b4fa909e392a55a296  gcc/testsuite/gcc.target/i386/avx-vtestps-3.c
  3792a8cf4b3cd9a55fba016b67522472  gcc/testsuite/gcc.target/i386/avx-vucomisd-1.c
  795630641687f778d81c545ac8e220a2  gcc/testsuite/gcc.target/i386/avx-vucomisd-2.c
  a87a9779ad174289515f380780abbfdd  gcc/testsuite/gcc.target/i386/avx-vucomisd-3.c
--- 42698,42715 ----
  c4f9e750a47dcc519097bfc51619ab3e  gcc/testsuite/gcc.target/i386/avx-vsubps-256-1.c
  c4da90ad781f1c3aa464337303a21469  gcc/testsuite/gcc.target/i386/avx-vsubsd-1.c
  c59a38db87d6838a40e0a421e45ef8af  gcc/testsuite/gcc.target/i386/avx-vsubss-1.c
! e8ad6bbf6314cc7b2ff59c03c3bf49af  gcc/testsuite/gcc.target/i386/avx-vtestpd-1.c
! 4b43b4bc3df27eff7cef3450fb65da6b  gcc/testsuite/gcc.target/i386/avx-vtestpd-2.c
! 98746ab5995319d454b7e280ca30e067  gcc/testsuite/gcc.target/i386/avx-vtestpd-256-1.c
! 41c32628b3849487a71addc6ba3b3247  gcc/testsuite/gcc.target/i386/avx-vtestpd-256-2.c
! 8c48f88fd7ea8e7e5a95259b2deadde7  gcc/testsuite/gcc.target/i386/avx-vtestpd-256-3.c
! 0f6501c039dc4e6630048514e61a458d  gcc/testsuite/gcc.target/i386/avx-vtestpd-3.c
! 53aa4e81d6bf6c6f7909a079b25f0993  gcc/testsuite/gcc.target/i386/avx-vtestps-1.c
! 6607740433b18c82a74687fe99ef871b  gcc/testsuite/gcc.target/i386/avx-vtestps-2.c
! 1b77ddfa8c0c700da8d6ace4baf4f6f6  gcc/testsuite/gcc.target/i386/avx-vtestps-256-1.c
! 9de09545c7b80e24e5a7d72445557159  gcc/testsuite/gcc.target/i386/avx-vtestps-256-2.c
! b6910c135cd8b69613c5edcdce9d7b77  gcc/testsuite/gcc.target/i386/avx-vtestps-256-3.c
! f9fcef327f2d856240c484b081610a3c  gcc/testsuite/gcc.target/i386/avx-vtestps-3.c
  3792a8cf4b3cd9a55fba016b67522472  gcc/testsuite/gcc.target/i386/avx-vucomisd-1.c
  795630641687f778d81c545ac8e220a2  gcc/testsuite/gcc.target/i386/avx-vucomisd-2.c
  a87a9779ad174289515f380780abbfdd  gcc/testsuite/gcc.target/i386/avx-vucomisd-3.c
*************** e496930891266115a9ceee7c7de0cac4  gcc/te
*** 40321,40335 ****
  196aec2399172c70cc1b6322412ec45d  gcc/testsuite/gcc.target/i386/avx-vzeroupper-7.c
  2dd3d3b02f96ec89ffed6f185b8e940f  gcc/testsuite/gcc.target/i386/avx-vzeroupper-8.c
  280e2807a80caedf3c9b1fd25684032d  gcc/testsuite/gcc.target/i386/avx-vzeroupper-9.c
! 71fae63d19be77f7872b5a09e0816fd9  gcc/testsuite/gcc.target/i386/avx2-check.h
  7dc98d98981fa7b82c0ae95d09c8128c  gcc/testsuite/gcc.target/i386/avx2-cvt-1.c
  ba03d33aadf4df05b8f515b55902d486  gcc/testsuite/gcc.target/i386/avx2-cvt-2.c
! 8bf32072e401c31df946363347028864  gcc/testsuite/gcc.target/i386/avx2-gather-1.c
! 655956d65362acafdda44a2f3308458f  gcc/testsuite/gcc.target/i386/avx2-gather-2.c
! 24c5dd6448bd0c87f92e424d6e986be0  gcc/testsuite/gcc.target/i386/avx2-gather-3.c
! a4b56bb42fb4b76f5ade1ec42a004c75  gcc/testsuite/gcc.target/i386/avx2-gather-4.c
! 1ae4eb13a1e21c73cf857d4b1f747378  gcc/testsuite/gcc.target/i386/avx2-gather-5.c
! 9af5b7b2c30927aa938cbde7e96c81c1  gcc/testsuite/gcc.target/i386/avx2-gather-6.c
  5bab3385f59413b4ac1d08b312a04c67  gcc/testsuite/gcc.target/i386/avx2-i32gatherd-1.c
  61279c227c143e8c3c052c2ba1d0e226  gcc/testsuite/gcc.target/i386/avx2-i32gatherd-2.c
  025259b149283dd7aa44783815197ac4  gcc/testsuite/gcc.target/i386/avx2-i32gatherd-3.c
--- 42763,42777 ----
  196aec2399172c70cc1b6322412ec45d  gcc/testsuite/gcc.target/i386/avx-vzeroupper-7.c
  2dd3d3b02f96ec89ffed6f185b8e940f  gcc/testsuite/gcc.target/i386/avx-vzeroupper-8.c
  280e2807a80caedf3c9b1fd25684032d  gcc/testsuite/gcc.target/i386/avx-vzeroupper-9.c
! 958690bb20e5ef6d9a38def7eb976f13  gcc/testsuite/gcc.target/i386/avx2-check.h
  7dc98d98981fa7b82c0ae95d09c8128c  gcc/testsuite/gcc.target/i386/avx2-cvt-1.c
  ba03d33aadf4df05b8f515b55902d486  gcc/testsuite/gcc.target/i386/avx2-cvt-2.c
! aaabb27f441033ad22d615277a666b93  gcc/testsuite/gcc.target/i386/avx2-gather-1.c
! 3e5e6503bd102c77bb9c472e5a72bba2  gcc/testsuite/gcc.target/i386/avx2-gather-2.c
! e6fb48367ac48aab006ff09ee7205b7f  gcc/testsuite/gcc.target/i386/avx2-gather-3.c
! 74c386970583ffac555d2320df839c1b  gcc/testsuite/gcc.target/i386/avx2-gather-4.c
! b10dfe874c7de4330090cb5b58ccddda  gcc/testsuite/gcc.target/i386/avx2-gather-5.c
! 9d9c5851f9d426330744c48c62295177  gcc/testsuite/gcc.target/i386/avx2-gather-6.c
  5bab3385f59413b4ac1d08b312a04c67  gcc/testsuite/gcc.target/i386/avx2-i32gatherd-1.c
  61279c227c143e8c3c052c2ba1d0e226  gcc/testsuite/gcc.target/i386/avx2-i32gatherd-2.c
  025259b149283dd7aa44783815197ac4  gcc/testsuite/gcc.target/i386/avx2-i32gatherd-3.c
*************** e18087fd0fa5cf6fcaaebd3234a384eb  gcc/te
*** 40409,40414 ****
--- 42851,42858 ----
  d74ce7ca4af70d590cb84aa587a5328a  gcc/testsuite/gcc.target/i386/avx2-pr70542.c
  757f2803cb524594784445d322b67fa5  gcc/testsuite/gcc.target/i386/avx2-pr70574.c
  eff00a81e6cb0010baf6a32b833b0772  gcc/testsuite/gcc.target/i386/avx2-pr80631.c
+ 3be785004d56418439a56d1929cfaf99  gcc/testsuite/gcc.target/i386/avx2-pr80846.c
+ e633d2cdd6e46d0e3462ac7fb113c2d2  gcc/testsuite/gcc.target/i386/avx2-pr82370.c
  2b83554762241a146df7ccc1617e1bfa  gcc/testsuite/gcc.target/i386/avx2-vbroadcastsd_pd-1.c
  193f0a7d029b84ce4e3b2e58eac8240a  gcc/testsuite/gcc.target/i386/avx2-vbroadcastsd_pd-2.c
  84a46e7f4338347591f1c8fe0aaceda5  gcc/testsuite/gcc.target/i386/avx2-vbroadcastsi128-1.c
*************** bde3576824160b971d23a5c7c4f2008e  gcc/te
*** 40450,40456 ****
  870f515b3a59179235a03b44922f59ec  gcc/testsuite/gcc.target/i386/avx2-vpaddd-3.c
  566e6145a8f3cdd6be39b875707ca7ef  gcc/testsuite/gcc.target/i386/avx2-vpaddq-1.c
  18d1c7c981a97c8bf45087a4bc79b0f7  gcc/testsuite/gcc.target/i386/avx2-vpaddq-2.c
! 3e9cd75a8514e40f1bf1667e77c3dc94  gcc/testsuite/gcc.target/i386/avx2-vpaddq-3.c
  1659d558fbac9ee1445730a4172faf10  gcc/testsuite/gcc.target/i386/avx2-vpaddsb-1.c
  9529b2c5b65c2f12d74cfd13d8cacbcc  gcc/testsuite/gcc.target/i386/avx2-vpaddsb-2.c
  8c6a693aa50675b4122f144508e23149  gcc/testsuite/gcc.target/i386/avx2-vpaddsw-1.c
--- 42894,42900 ----
  870f515b3a59179235a03b44922f59ec  gcc/testsuite/gcc.target/i386/avx2-vpaddd-3.c
  566e6145a8f3cdd6be39b875707ca7ef  gcc/testsuite/gcc.target/i386/avx2-vpaddq-1.c
  18d1c7c981a97c8bf45087a4bc79b0f7  gcc/testsuite/gcc.target/i386/avx2-vpaddq-2.c
! 86988ef751a9071869d6f3807d4f78a2  gcc/testsuite/gcc.target/i386/avx2-vpaddq-3.c
  1659d558fbac9ee1445730a4172faf10  gcc/testsuite/gcc.target/i386/avx2-vpaddsb-1.c
  9529b2c5b65c2f12d74cfd13d8cacbcc  gcc/testsuite/gcc.target/i386/avx2-vpaddsb-2.c
  8c6a693aa50675b4122f144508e23149  gcc/testsuite/gcc.target/i386/avx2-vpaddsw-1.c
*************** ec5e359940b4cb8dd83c55fcb1135ddf  gcc/te
*** 40707,40713 ****
  7a5d490c920f74855c1943263b59ab28  gcc/testsuite/gcc.target/i386/avx2-vpsubd-3.c
  1eac7cf99111b287762cb90b44cbf848  gcc/testsuite/gcc.target/i386/avx2-vpsubq-1.c
  953c484acdd966ceed757f7a0e1f6aae  gcc/testsuite/gcc.target/i386/avx2-vpsubq-2.c
! 205265e785a028bc6ee95e26e9257efa  gcc/testsuite/gcc.target/i386/avx2-vpsubq-3.c
  65bc9a121219ce8a6cd3d2cb64bf17f3  gcc/testsuite/gcc.target/i386/avx2-vpsubsb-1.c
  7b38c989fada3a88ccb6b2f5426b6ce3  gcc/testsuite/gcc.target/i386/avx2-vpsubsb-2.c
  b422b7bda363f18adf9746046223f343  gcc/testsuite/gcc.target/i386/avx2-vpsubsw-1.c
--- 43151,43157 ----
  7a5d490c920f74855c1943263b59ab28  gcc/testsuite/gcc.target/i386/avx2-vpsubd-3.c
  1eac7cf99111b287762cb90b44cbf848  gcc/testsuite/gcc.target/i386/avx2-vpsubq-1.c
  953c484acdd966ceed757f7a0e1f6aae  gcc/testsuite/gcc.target/i386/avx2-vpsubq-2.c
! 8437314223fb7cd0da5b6a0b3923fdbb  gcc/testsuite/gcc.target/i386/avx2-vpsubq-3.c
  65bc9a121219ce8a6cd3d2cb64bf17f3  gcc/testsuite/gcc.target/i386/avx2-vpsubsb-1.c
  7b38c989fada3a88ccb6b2f5426b6ce3  gcc/testsuite/gcc.target/i386/avx2-vpsubsb-2.c
  b422b7bda363f18adf9746046223f343  gcc/testsuite/gcc.target/i386/avx2-vpsubsw-1.c
*************** f1d81bb2aa29430ffc97c28299b0ff19  gcc/te
*** 40736,40768 ****
  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
  c6a00882192678106c5797cbff600dcc  gcc/testsuite/gcc.target/i386/avx256-unaligned-load-7.c
! 4c27cde84e5828fb8e0db20c9d17f5af  gcc/testsuite/gcc.target/i386/avx256-unaligned-store-1.c
! 090975d6a87fe667e236e6f0c99746ca  gcc/testsuite/gcc.target/i386/avx256-unaligned-store-2.c
! 6f638adc70cc8e76342fd33f803edca5  gcc/testsuite/gcc.target/i386/avx256-unaligned-store-3.c
! 5fd42f59fd3a66ec6a222146a947c9c1  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
  53389771ff64cb14721257f467364464  gcc/testsuite/gcc.target/i386/avx256-unaligned-store-7.c
  56eacdcaa6f4ba77310471f5bf25bafe  gcc/testsuite/gcc.target/i386/avx5124fmadd-v4fmaddps-1.c
  ccfc5764fc92683192805079030054db  gcc/testsuite/gcc.target/i386/avx5124fmadd-v4fmaddps-2.c
  3b836c85b185e2067d6af7aafe966920  gcc/testsuite/gcc.target/i386/avx5124fmadd-v4fmaddss-1.c
  43bc9f2d5ca445393cbe4c61a470b6b0  gcc/testsuite/gcc.target/i386/avx5124fmadd-v4fnmaddps-1.c
  f55df70acaaa1a05030d45495848eb2b  gcc/testsuite/gcc.target/i386/avx5124fmadd-v4fnmaddps-2.c
  4586ad0b68a40bc7c7c6383bfe03e770  gcc/testsuite/gcc.target/i386/avx5124fmadd-v4fnmaddss-1.c
- 5801e0610fad5eb23c330d1fe17d6819  gcc/testsuite/gcc.target/i386/avx5124fmaps-check.h
- 5758ddce618c142a71cda72021537742  gcc/testsuite/gcc.target/i386/avx5124vnniw-check.h
  3fff72919fb366f3a0ca961a19131e65  gcc/testsuite/gcc.target/i386/avx5124vnniw-vp4dpwssd-1.c
  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
! 727d1cf31abd81dc953aaa5af3e9bbd4  gcc/testsuite/gcc.target/i386/avx512bw-check.h
  edb4e52333b73c860f134c92abb703cc  gcc/testsuite/gcc.target/i386/avx512bw-kaddd-1.c
  52f3640ff4e5a494fec30c714fbea8ad  gcc/testsuite/gcc.target/i386/avx512bw-kaddq-1.c
  8dcb6bb222e4d683a1bf319a50b12328  gcc/testsuite/gcc.target/i386/avx512bw-kandd-1.c
--- 43180,43222 ----
  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
  c6a00882192678106c5797cbff600dcc  gcc/testsuite/gcc.target/i386/avx256-unaligned-load-7.c
! d27ae3d359b741c698de8eae30ec7af2  gcc/testsuite/gcc.target/i386/avx256-unaligned-store-1.c
! 639be6943f88a0260034dfc5f8b2c73f  gcc/testsuite/gcc.target/i386/avx256-unaligned-store-2.c
! 88008c6b690701e846f68630465f0ad3  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
  53389771ff64cb14721257f467364464  gcc/testsuite/gcc.target/i386/avx256-unaligned-store-7.c
+ 22cf79b27fcca16bd3f79cb71ae3d400  gcc/testsuite/gcc.target/i386/avx512-check.h
  56eacdcaa6f4ba77310471f5bf25bafe  gcc/testsuite/gcc.target/i386/avx5124fmadd-v4fmaddps-1.c
  ccfc5764fc92683192805079030054db  gcc/testsuite/gcc.target/i386/avx5124fmadd-v4fmaddps-2.c
  3b836c85b185e2067d6af7aafe966920  gcc/testsuite/gcc.target/i386/avx5124fmadd-v4fmaddss-1.c
  43bc9f2d5ca445393cbe4c61a470b6b0  gcc/testsuite/gcc.target/i386/avx5124fmadd-v4fnmaddps-1.c
  f55df70acaaa1a05030d45495848eb2b  gcc/testsuite/gcc.target/i386/avx5124fmadd-v4fnmaddps-2.c
  4586ad0b68a40bc7c7c6383bfe03e770  gcc/testsuite/gcc.target/i386/avx5124fmadd-v4fnmaddss-1.c
  3fff72919fb366f3a0ca961a19131e65  gcc/testsuite/gcc.target/i386/avx5124vnniw-vp4dpwssd-1.c
  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
! 9de875f6f41e554337ea12937f31b749  gcc/testsuite/gcc.target/i386/avx512bitalg-vpopcntb-1.c
! fb81b2b2a3a46912d73cc1760be004e7  gcc/testsuite/gcc.target/i386/avx512bitalg-vpopcntb.c
! 199af992e17bd9c64dcfa9985d1f367e  gcc/testsuite/gcc.target/i386/avx512bitalg-vpopcntbvl.c
! 8af06593173fa44cb3ccf5e8a4d0ee1a  gcc/testsuite/gcc.target/i386/avx512bitalg-vpopcntw-1.c
! 80398fed0e3d0fb221f2b8b497ff4150  gcc/testsuite/gcc.target/i386/avx512bitalg-vpopcntw.c
! 2321f4d32ab673621ab22cd88183f167  gcc/testsuite/gcc.target/i386/avx512bitalg-vpopcntwvl.c
! eabafa4926a7abff1e6146a7ef0143e0  gcc/testsuite/gcc.target/i386/avx512bitalg-vpshufbitqmb-1.c
! 358bee5b8508f8bec0558e9193d60046  gcc/testsuite/gcc.target/i386/avx512bitalg-vpshufbitqmb.c
! b2b1fe9e25a1a50c9e88e7a8d168d328  gcc/testsuite/gcc.target/i386/avx512bitalgvl-vpopcntb-1.c
! 1ec84afddb23f029e622de60c2ac094b  gcc/testsuite/gcc.target/i386/avx512bitalgvl-vpopcntw-1.c
! 32886feb7eab4824ce529ce5fd625319  gcc/testsuite/gcc.target/i386/avx512bitalgvl-vpshufbitqmb-1.c
! 34f70835661397c9f3bdb5572f6d8ce1  gcc/testsuite/gcc.target/i386/avx512bw-check.h
  edb4e52333b73c860f134c92abb703cc  gcc/testsuite/gcc.target/i386/avx512bw-kaddd-1.c
  52f3640ff4e5a494fec30c714fbea8ad  gcc/testsuite/gcc.target/i386/avx512bw-kaddq-1.c
  8dcb6bb222e4d683a1bf319a50b12328  gcc/testsuite/gcc.target/i386/avx512bw-kandd-1.c
*************** bce67b236520c561f93006d5bd66eea1  gcc/te
*** 40812,40817 ****
--- 43266,43277 ----
  2578aaea4945a191c1767c5b6ebde5b2  gcc/testsuite/gcc.target/i386/avx512bw-pr70329-2.c
  923b4b67baacfc2aedf431c5989f2d6e  gcc/testsuite/gcc.target/i386/avx512bw-pr70509.c
  acddcdfbf1c37bd8a7c7778c2c6eeea1  gcc/testsuite/gcc.target/i386/avx512bw-pr77476.c
+ ffec4a64d5bec8eab2e840379041cd7c  gcc/testsuite/gcc.target/i386/avx512bw-pr81532.c
+ 4401d93befa4f9d4a40e4098a598ea7d  gcc/testsuite/gcc.target/i386/avx512bw-pr82370.c
+ a27fb111df1b083f6396bafe5a66337b  gcc/testsuite/gcc.target/i386/avx512bw-pr84524.c
+ 64fd03d0f45cae1320ecd289072fafc7  gcc/testsuite/gcc.target/i386/avx512bw-pr85090-2.c
+ e35d933dd19222a47493fe48e2676f39  gcc/testsuite/gcc.target/i386/avx512bw-pr85090-3.c
+ 6e21df3d0e9193e9625eed725e327919  gcc/testsuite/gcc.target/i386/avx512bw-pr85169.c
  186b4d26f65c47b5b328795efe473c71  gcc/testsuite/gcc.target/i386/avx512bw-vdbpsadbw-1.c
  aa76e419ea439da7ae72280b04d232b8  gcc/testsuite/gcc.target/i386/avx512bw-vdbpsadbw-2.c
  c8ba4cce715fd7698d0bd8d7cc7eca78  gcc/testsuite/gcc.target/i386/avx512bw-vmovdqu16-1.c
*************** fcc04c91e15171045e4e5953d53447a7  gcc/te
*** 40919,40925 ****
  8932439ef47d9fd6ccc11187519b5396  gcc/testsuite/gcc.target/i386/avx512bw-vpcmpw-2.c
  afd3e3f28e3108bd8551946815797996  gcc/testsuite/gcc.target/i386/avx512bw-vpermi2w-1.c
  2c3c9b31bcb5c5ae49b479d9f30bc8c9  gcc/testsuite/gcc.target/i386/avx512bw-vpermi2w-2.c
! 38eae23f5ed0d47c46626d584548e813  gcc/testsuite/gcc.target/i386/avx512bw-vpermt2w-1.c
  a0f56b7edc926ca30a5e2e7054790fc1  gcc/testsuite/gcc.target/i386/avx512bw-vpermt2w-2.c
  d53604b8716b6d81b7ea6b714e73ba14  gcc/testsuite/gcc.target/i386/avx512bw-vpermw-1.c
  f9b93ac6a209e1d15c715127c3a22db7  gcc/testsuite/gcc.target/i386/avx512bw-vpermw-2.c
--- 43379,43385 ----
  8932439ef47d9fd6ccc11187519b5396  gcc/testsuite/gcc.target/i386/avx512bw-vpcmpw-2.c
  afd3e3f28e3108bd8551946815797996  gcc/testsuite/gcc.target/i386/avx512bw-vpermi2w-1.c
  2c3c9b31bcb5c5ae49b479d9f30bc8c9  gcc/testsuite/gcc.target/i386/avx512bw-vpermi2w-2.c
! 196137ca88f5107bf1ba2a96e61ccb78  gcc/testsuite/gcc.target/i386/avx512bw-vpermt2w-1.c
  a0f56b7edc926ca30a5e2e7054790fc1  gcc/testsuite/gcc.target/i386/avx512bw-vpermt2w-2.c
  d53604b8716b6d81b7ea6b714e73ba14  gcc/testsuite/gcc.target/i386/avx512bw-vpermw-1.c
  f9b93ac6a209e1d15c715127c3a22db7  gcc/testsuite/gcc.target/i386/avx512bw-vpermw-2.c
*************** ab945e2a7f2066639ab19534fdb0271b  gcc/te
*** 40953,40968 ****
  ce62431e0d6dc730be7080f0cdba44c2  gcc/testsuite/gcc.target/i386/avx512bw-vpmovm2b-2.c
  bae2525291d77b14d3c948717486e172  gcc/testsuite/gcc.target/i386/avx512bw-vpmovm2w-1.c
  2d631a58d4ba9d40cb0081f84837581b  gcc/testsuite/gcc.target/i386/avx512bw-vpmovm2w-2.c
! 67d38a82686836129a2b45d2e7920a58  gcc/testsuite/gcc.target/i386/avx512bw-vpmovswb-1.c
! a4bef70c1222da763e8fed8938f59537  gcc/testsuite/gcc.target/i386/avx512bw-vpmovswb-2.c
  8a56f5d9d1e0901d2961599ce258247b  gcc/testsuite/gcc.target/i386/avx512bw-vpmovsxbw-1.c
  ed602259785dd505ce43fedc83608fa2  gcc/testsuite/gcc.target/i386/avx512bw-vpmovsxbw-2.c
! 87c33da32e2eaa83c3c3d42e48e4b24c  gcc/testsuite/gcc.target/i386/avx512bw-vpmovuswb-1.c
! a2b0c7400877946ddb2ec8f55f805e89  gcc/testsuite/gcc.target/i386/avx512bw-vpmovuswb-2.c
  678e81e4832220102333a7d756adaadd  gcc/testsuite/gcc.target/i386/avx512bw-vpmovw2m-1.c
  9504524787b82a0ccf486f89f4fe27e1  gcc/testsuite/gcc.target/i386/avx512bw-vpmovw2m-2.c
! 321aaf4cee7095fe055ac181b5a7a8b2  gcc/testsuite/gcc.target/i386/avx512bw-vpmovwb-1.c
! 6eca9d0290cac06f4a9094df4e4f63e6  gcc/testsuite/gcc.target/i386/avx512bw-vpmovwb-2.c
  36fd23835105aebbfe3ccb58e069edda  gcc/testsuite/gcc.target/i386/avx512bw-vpmovzxbw-1.c
  6d3d5643ba38c610b31450cf8057ed44  gcc/testsuite/gcc.target/i386/avx512bw-vpmovzxbw-2.c
  e3957d749c8301db81228d71e2ed5352  gcc/testsuite/gcc.target/i386/avx512bw-vpmulhrsw-1.c
--- 43413,43428 ----
  ce62431e0d6dc730be7080f0cdba44c2  gcc/testsuite/gcc.target/i386/avx512bw-vpmovm2b-2.c
  bae2525291d77b14d3c948717486e172  gcc/testsuite/gcc.target/i386/avx512bw-vpmovm2w-1.c
  2d631a58d4ba9d40cb0081f84837581b  gcc/testsuite/gcc.target/i386/avx512bw-vpmovm2w-2.c
! 06a3164dbd380706d2da61d543128d87  gcc/testsuite/gcc.target/i386/avx512bw-vpmovswb-1.c
! d89a3e7fea8841425db8f8334b6bf852  gcc/testsuite/gcc.target/i386/avx512bw-vpmovswb-2.c
  8a56f5d9d1e0901d2961599ce258247b  gcc/testsuite/gcc.target/i386/avx512bw-vpmovsxbw-1.c
  ed602259785dd505ce43fedc83608fa2  gcc/testsuite/gcc.target/i386/avx512bw-vpmovsxbw-2.c
! 871ff4f86a33d5c9bbbb34ce309c5f9e  gcc/testsuite/gcc.target/i386/avx512bw-vpmovuswb-1.c
! 082edd4008d3b3a00b57e8d3ea996a89  gcc/testsuite/gcc.target/i386/avx512bw-vpmovuswb-2.c
  678e81e4832220102333a7d756adaadd  gcc/testsuite/gcc.target/i386/avx512bw-vpmovw2m-1.c
  9504524787b82a0ccf486f89f4fe27e1  gcc/testsuite/gcc.target/i386/avx512bw-vpmovw2m-2.c
! ff492e91d9f879ceaaad2e456e4a220e  gcc/testsuite/gcc.target/i386/avx512bw-vpmovwb-1.c
! 7d6fcb3c926679157d1535ecb9ef00af  gcc/testsuite/gcc.target/i386/avx512bw-vpmovwb-2.c
  36fd23835105aebbfe3ccb58e069edda  gcc/testsuite/gcc.target/i386/avx512bw-vpmovzxbw-1.c
  6d3d5643ba38c610b31450cf8057ed44  gcc/testsuite/gcc.target/i386/avx512bw-vpmovzxbw-2.c
  e3957d749c8301db81228d71e2ed5352  gcc/testsuite/gcc.target/i386/avx512bw-vpmulhrsw-1.c
*************** a6bbea58bae93cf3ac9adfb46530b561  gcc/te
*** 41030,41036 ****
  f29161b6d65e0866939bb7ae6690851a  gcc/testsuite/gcc.target/i386/avx512bw-vpunpcklbw-2.c
  70447357f51dc52b64f867a733ac4528  gcc/testsuite/gcc.target/i386/avx512bw-vpunpcklwd-1.c
  cc564320e4323c2cd97b20122dac95f2  gcc/testsuite/gcc.target/i386/avx512bw-vpunpcklwd-2.c
- 3d6b1bfbeae6c43cf90efaa0ef84047a  gcc/testsuite/gcc.target/i386/avx512cd-check.h
  70eee060cdef6926242a79633f88a0ed  gcc/testsuite/gcc.target/i386/avx512cd-vpbroadcastmb2q-1.c
  f0a8c1d89ba5b4171fdf7d0c53b23056  gcc/testsuite/gcc.target/i386/avx512cd-vpbroadcastmb2q-2.c
  530210295107d7a78a6cfe9800446e3e  gcc/testsuite/gcc.target/i386/avx512cd-vpbroadcastmw2d-1.c
--- 43490,43495 ----
*************** caa78c95a89c818b1aea4afba2946f09  gcc/te
*** 41044,41050 ****
  c557e65b3da6daa7ab3922c783352372  gcc/testsuite/gcc.target/i386/avx512cd-vplzcntq-1.c
  942e643c141906aa62c90809e9e0e279  gcc/testsuite/gcc.target/i386/avx512cd-vplzcntq-2.c
  01c2454d423ce63b5c4473dd0a8a8231  gcc/testsuite/gcc.target/i386/avx512dq-abs-copysign-1.c
! b39c3a6ea6df5e0bc24339b0e5e325b6  gcc/testsuite/gcc.target/i386/avx512dq-check.h
  b24af0ec73e5059fe5c5a4e5e72245fe  gcc/testsuite/gcc.target/i386/avx512dq-concatv2di-1.c
  2ea23cac0240a4e6291d19e092e97085  gcc/testsuite/gcc.target/i386/avx512dq-concatv2si-1.c
  81d19af2e47db979a4a09153c9d11b15  gcc/testsuite/gcc.target/i386/avx512dq-kaddb-1.c
--- 43503,43509 ----
  c557e65b3da6daa7ab3922c783352372  gcc/testsuite/gcc.target/i386/avx512cd-vplzcntq-1.c
  942e643c141906aa62c90809e9e0e279  gcc/testsuite/gcc.target/i386/avx512cd-vplzcntq-2.c
  01c2454d423ce63b5c4473dd0a8a8231  gcc/testsuite/gcc.target/i386/avx512dq-abs-copysign-1.c
! d71061bda865f7d6e210825e8be8c9b2  gcc/testsuite/gcc.target/i386/avx512dq-check.h
  b24af0ec73e5059fe5c5a4e5e72245fe  gcc/testsuite/gcc.target/i386/avx512dq-concatv2di-1.c
  2ea23cac0240a4e6291d19e092e97085  gcc/testsuite/gcc.target/i386/avx512dq-concatv2si-1.c
  81d19af2e47db979a4a09153c9d11b15  gcc/testsuite/gcc.target/i386/avx512dq-kaddb-1.c
*************** ecc460de4fe405f9d7b747d93a9f5634  gcc/te
*** 41073,41078 ****
--- 43532,43539 ----
  d79dbf020eaec36e633ca9fe66abc687  gcc/testsuite/gcc.target/i386/avx512dq-logic-2.c
  6f0b3d794810e9d3faa39dbafaacde8c  gcc/testsuite/gcc.target/i386/avx512dq-pr70059.c
  5c96173f399e38ddd940558c0971cefa  gcc/testsuite/gcc.target/i386/avx512dq-pr77476.c
+ 11ee8aa3053087e52b57627c5e78c508  gcc/testsuite/gcc.target/i386/avx512dq-pr81532.c
+ 8f0c61768e5bacf2b0e2ff43d584735d  gcc/testsuite/gcc.target/i386/avx512dq-pr82855.c
  802a65b817227165abdd16614cc84b66  gcc/testsuite/gcc.target/i386/avx512dq-vandnpd-1.c
  16658064864d12d7e0b7ea05daac767c  gcc/testsuite/gcc.target/i386/avx512dq-vandnpd-2.c
  f106641a7d12e3bd58bae9ca7a4d556b  gcc/testsuite/gcc.target/i386/avx512dq-vandnps-1.c
*************** bd05449132ec0ffcf7f9d2cee42d3d84  gcc/te
*** 41157,41175 ****
  f0c9881b20109961ade437de8e3cd48c  gcc/testsuite/gcc.target/i386/avx512dq-vrangepd-2.c
  53087065a9786b8c900f27650300cddc  gcc/testsuite/gcc.target/i386/avx512dq-vrangeps-1.c
  a054a42fa8990b04f052693251736f60  gcc/testsuite/gcc.target/i386/avx512dq-vrangeps-2.c
! 6249b2bcd40f7d777088ee7e4c9106f7  gcc/testsuite/gcc.target/i386/avx512dq-vrangesd-1.c
! 96197f96951675201efc21e8e8871383  gcc/testsuite/gcc.target/i386/avx512dq-vrangess-1.c
  33011593c2ae67cfc3248db4adf190fb  gcc/testsuite/gcc.target/i386/avx512dq-vreducepd-1.c
  1f6bac81f625ba4449e8f138026057ee  gcc/testsuite/gcc.target/i386/avx512dq-vreducepd-2.c
  9ab5d8f3813d055ee379bcf3b8c34484  gcc/testsuite/gcc.target/i386/avx512dq-vreduceps-1.c
  f3ad87ac05bd79c4aae795b5c86f4c3c  gcc/testsuite/gcc.target/i386/avx512dq-vreduceps-2.c
! 5c5ca881d16b4b61c640d3e32961673e  gcc/testsuite/gcc.target/i386/avx512dq-vreducesd-1.c
! 754b9092665281e5d35761f043e9abba  gcc/testsuite/gcc.target/i386/avx512dq-vreducess-1.c
  1b13c5919cffe7b16ec23ae099c1a222  gcc/testsuite/gcc.target/i386/avx512dq-vxorpd-1.c
  3fb6dffcc32d68ffaa90066d950b552f  gcc/testsuite/gcc.target/i386/avx512dq-vxorpd-2.c
  b91dc4453f3b5b5e4ea6147d114bb759  gcc/testsuite/gcc.target/i386/avx512dq-vxorps-1.c
  a873c2378e6ff9f4c5ef7ff0578b6e8b  gcc/testsuite/gcc.target/i386/avx512dq-vxorps-2.c
! a3f771f2f5797b260942e4998fa22564  gcc/testsuite/gcc.target/i386/avx512er-check.h
  b0e1db6611b800faabd5d2b58087c958  gcc/testsuite/gcc.target/i386/avx512er-vexp2pd-1.c
  45a80e5bfb75a7687ce40c8252c02bb1  gcc/testsuite/gcc.target/i386/avx512er-vexp2pd-2.c
  5339120b856c4aa5fc4fef6e52189bf7  gcc/testsuite/gcc.target/i386/avx512er-vexp2ps-1.c
--- 43618,43638 ----
  f0c9881b20109961ade437de8e3cd48c  gcc/testsuite/gcc.target/i386/avx512dq-vrangepd-2.c
  53087065a9786b8c900f27650300cddc  gcc/testsuite/gcc.target/i386/avx512dq-vrangeps-1.c
  a054a42fa8990b04f052693251736f60  gcc/testsuite/gcc.target/i386/avx512dq-vrangeps-2.c
! af54efee3b10c7d5232b6fef2eb570db  gcc/testsuite/gcc.target/i386/avx512dq-vrangesd-1.c
! 5500a687d6e152b13d015cdfdb170306  gcc/testsuite/gcc.target/i386/avx512dq-vrangess-1.c
  33011593c2ae67cfc3248db4adf190fb  gcc/testsuite/gcc.target/i386/avx512dq-vreducepd-1.c
  1f6bac81f625ba4449e8f138026057ee  gcc/testsuite/gcc.target/i386/avx512dq-vreducepd-2.c
  9ab5d8f3813d055ee379bcf3b8c34484  gcc/testsuite/gcc.target/i386/avx512dq-vreduceps-1.c
  f3ad87ac05bd79c4aae795b5c86f4c3c  gcc/testsuite/gcc.target/i386/avx512dq-vreduceps-2.c
! 64ab7c9e9be10a5159d1f35f42b28d93  gcc/testsuite/gcc.target/i386/avx512dq-vreducesd-1.c
! 1867e3fd135af9d7159eedcfb2c0993a  gcc/testsuite/gcc.target/i386/avx512dq-vreducesd-2.c
! c2680c8cf06e91d3e17ca17ef6ae17a6  gcc/testsuite/gcc.target/i386/avx512dq-vreducess-1.c
! 2d3dcf40b16c9a345131a4c49c1dac7e  gcc/testsuite/gcc.target/i386/avx512dq-vreducess-2.c
  1b13c5919cffe7b16ec23ae099c1a222  gcc/testsuite/gcc.target/i386/avx512dq-vxorpd-1.c
  3fb6dffcc32d68ffaa90066d950b552f  gcc/testsuite/gcc.target/i386/avx512dq-vxorpd-2.c
  b91dc4453f3b5b5e4ea6147d114bb759  gcc/testsuite/gcc.target/i386/avx512dq-vxorps-1.c
  a873c2378e6ff9f4c5ef7ff0578b6e8b  gcc/testsuite/gcc.target/i386/avx512dq-vxorps-2.c
! c405e2766f008522fd2c57413f19b993  gcc/testsuite/gcc.target/i386/avx512er-check.h
  b0e1db6611b800faabd5d2b58087c958  gcc/testsuite/gcc.target/i386/avx512er-vexp2pd-1.c
  45a80e5bfb75a7687ce40c8252c02bb1  gcc/testsuite/gcc.target/i386/avx512er-vexp2pd-2.c
  5339120b856c4aa5fc4fef6e52189bf7  gcc/testsuite/gcc.target/i386/avx512er-vexp2ps-1.c
*************** ded4731821711b0feaeb0843f87bcafb  gcc/te
*** 41199,41204 ****
--- 43662,43671 ----
  848eeff915167de4b7db43649930109b  gcc/testsuite/gcc.target/i386/avx512f-abspd-1.c
  848eeff915167de4b7db43649930109b  gcc/testsuite/gcc.target/i386/avx512f-absps-1.c
  61431e7d7c36503f37d6b37b71138983  gcc/testsuite/gcc.target/i386/avx512f-additional-reg-names.c
+ e9b7dc8f85e195a2ebc778c8235721f4  gcc/testsuite/gcc.target/i386/avx512f-aesdec-2.c
+ 7e17f1dbfa54d765757b879f770c338b  gcc/testsuite/gcc.target/i386/avx512f-aesdeclast-2.c
+ 5af51530db0271d03a30acb18ceabd68  gcc/testsuite/gcc.target/i386/avx512f-aesenc-2.c
+ ef550db9da7aa9498535f9327c1ac6b1  gcc/testsuite/gcc.target/i386/avx512f-aesenclast-2.c
  ac444822bf41eda8ff9b0517ed627613  gcc/testsuite/gcc.target/i386/avx512f-broadcast-gpr-1.c
  c88d598d6edb7c0c743c1dc16a2cc16d  gcc/testsuite/gcc.target/i386/avx512f-broadcast-gpr-2.c
  2e94d4214d5dfba44759a2ffc78f519c  gcc/testsuite/gcc.target/i386/avx512f-ceil-sfix-vec-1.c
*************** e37893c9abd7382a7def7fd7274dcd64  gcc/te
*** 41209,41215 ****
  8a2399e65f2d83ffe127b069db603b09  gcc/testsuite/gcc.target/i386/avx512f-ceilf-sfix-vec-2.c
  5b2ffd909879a410f6b4a26c1a8e5676  gcc/testsuite/gcc.target/i386/avx512f-ceilf-vec-1.c
  a4b256bf9501d70dd2182eab7f624689  gcc/testsuite/gcc.target/i386/avx512f-ceilf-vec-2.c
! b15a2baa35ec0d13479eb4c267f413c5  gcc/testsuite/gcc.target/i386/avx512f-check.h
  f87a131592c4947fafb6dc93f2da20e6  gcc/testsuite/gcc.target/i386/avx512f-cvt-1.c
  64f178993bcb5b745f68c3b782f8605e  gcc/testsuite/gcc.target/i386/avx512f-cvtsd-1.c
  1a0c742ccf81b9a3980e6819cc48fb69  gcc/testsuite/gcc.target/i386/avx512f-cvtss-1.c
--- 43676,43684 ----
  8a2399e65f2d83ffe127b069db603b09  gcc/testsuite/gcc.target/i386/avx512f-ceilf-sfix-vec-2.c
  5b2ffd909879a410f6b4a26c1a8e5676  gcc/testsuite/gcc.target/i386/avx512f-ceilf-vec-1.c
  a4b256bf9501d70dd2182eab7f624689  gcc/testsuite/gcc.target/i386/avx512f-ceilf-vec-2.c
! c5f7c86bd282a5bc688c97ebe5388b28  gcc/testsuite/gcc.target/i386/avx512f-check.h
! cdb325d7797efd888176d6a35fedf7fe  gcc/testsuite/gcc.target/i386/avx512f-constant-float-return.c
! 0c68e6ebccf8b738884ea7b2fe334d9f  gcc/testsuite/gcc.target/i386/avx512f-constant-set.c
  f87a131592c4947fafb6dc93f2da20e6  gcc/testsuite/gcc.target/i386/avx512f-cvt-1.c
  64f178993bcb5b745f68c3b782f8605e  gcc/testsuite/gcc.target/i386/avx512f-cvtsd-1.c
  1a0c742ccf81b9a3980e6819cc48fb69  gcc/testsuite/gcc.target/i386/avx512f-cvtss-1.c
*************** f3f3241adb2a57e08f624dd5dee7bde2  gcc/te
*** 41222,41238 ****
  36f5b8ecaa1309fea47c6565009b0e43  gcc/testsuite/gcc.target/i386/avx512f-floorf-sfix-vec-2.c
  2ab0eec1590b189f1c4f7fe79a454db5  gcc/testsuite/gcc.target/i386/avx512f-floorf-vec-1.c
  0e2a8a11b7939edbb836489d6d1ae8cb  gcc/testsuite/gcc.target/i386/avx512f-floorf-vec-2.c
! 093d097bdccce35c0df38597a7980d22  gcc/testsuite/gcc.target/i386/avx512f-gather-1.c
! c8ce7ffcdf3dead2fa41448cdfd421d8  gcc/testsuite/gcc.target/i386/avx512f-gather-2.c
! fba9972cad8dda541a5aa6eec12675fc  gcc/testsuite/gcc.target/i386/avx512f-gather-3.c
! fcc4da959fe6cf2b7e167a0d13b332c1  gcc/testsuite/gcc.target/i386/avx512f-gather-4.c
! 2feee0b2d828a989a3f3c5c4abda4b8b  gcc/testsuite/gcc.target/i386/avx512f-gather-5.c
! 6e52e7c639cbcfbcd0ed042097c0448b  gcc/testsuite/gcc.target/i386/avx512f-helper.h
! bc1e264d74393600ad6c3dc8e5f9a8c1  gcc/testsuite/gcc.target/i386/avx512f-i32gatherd512-1.c
! 970def87f940562db570ac590860c040  gcc/testsuite/gcc.target/i386/avx512f-i32gatherd512-2.c
! 368e993e6c8f94205fcb74a268d08265  gcc/testsuite/gcc.target/i386/avx512f-i32gatherpd512-1.c
! c67d3c163b472f7cc58f728b8f232420  gcc/testsuite/gcc.target/i386/avx512f-i32gatherpd512-2.c
! 67edee81430e1ff4002b856bbfeace54  gcc/testsuite/gcc.target/i386/avx512f-i32gatherps512-1.c
  2dc47fbf53205c914a8c89a971c1e28e  gcc/testsuite/gcc.target/i386/avx512f-i32gatherps512-2.c
  e02918aee214e5ef32e06b74634c4f74  gcc/testsuite/gcc.target/i386/avx512f-i32gatherq512-1.c
  597082d30f3c73bb9b42cf7b4b8453e7  gcc/testsuite/gcc.target/i386/avx512f-i32gatherq512-2.c
--- 43691,43710 ----
  36f5b8ecaa1309fea47c6565009b0e43  gcc/testsuite/gcc.target/i386/avx512f-floorf-sfix-vec-2.c
  2ab0eec1590b189f1c4f7fe79a454db5  gcc/testsuite/gcc.target/i386/avx512f-floorf-vec-1.c
  0e2a8a11b7939edbb836489d6d1ae8cb  gcc/testsuite/gcc.target/i386/avx512f-floorf-vec-2.c
! 84e7771e69ca717e00f65b0c4bbe9141  gcc/testsuite/gcc.target/i386/avx512f-gather-1.c
! a32cd09430aec504219610cf1f7082b6  gcc/testsuite/gcc.target/i386/avx512f-gather-2.c
! 43edded2cee80685d44eaa8cf0d2c843  gcc/testsuite/gcc.target/i386/avx512f-gather-3.c
! 5e45c30811fe00caa23cb57dac5512e2  gcc/testsuite/gcc.target/i386/avx512f-gather-4.c
! c29b5ea5bb6e8fa7e3bd9a4832f88a6a  gcc/testsuite/gcc.target/i386/avx512f-gather-5.c
! b38a9c14f87367c694a03c6a85cda093  gcc/testsuite/gcc.target/i386/avx512f-gf2p8affineinvqb-2.c
! e8ed6420b94ba8e4f884b1fed3192afb  gcc/testsuite/gcc.target/i386/avx512f-gf2p8affineqb-2.c
! fbf4c4e93ebbba4e4057d944ad324b7b  gcc/testsuite/gcc.target/i386/avx512f-gf2p8mulb-2.c
! b30bd8215949240eadbb28b213632870  gcc/testsuite/gcc.target/i386/avx512f-helper.h
! 4d4e3cd5268174957dc407363e2a23b0  gcc/testsuite/gcc.target/i386/avx512f-i32gatherd512-1.c
! 7c16a650586fef4d8808abe3c59e1490  gcc/testsuite/gcc.target/i386/avx512f-i32gatherd512-2.c
! ffd288851f8ba62882abb34284af577d  gcc/testsuite/gcc.target/i386/avx512f-i32gatherpd512-1.c
! 1f28adb61f138ef40be7dbb353bc35e7  gcc/testsuite/gcc.target/i386/avx512f-i32gatherpd512-2.c
! a631a9bbe52c64ed6928cc40a37bd2b2  gcc/testsuite/gcc.target/i386/avx512f-i32gatherps512-1.c
  2dc47fbf53205c914a8c89a971c1e28e  gcc/testsuite/gcc.target/i386/avx512f-i32gatherps512-2.c
  e02918aee214e5ef32e06b74634c4f74  gcc/testsuite/gcc.target/i386/avx512f-i32gatherq512-1.c
  597082d30f3c73bb9b42cf7b4b8453e7  gcc/testsuite/gcc.target/i386/avx512f-i32gatherq512-2.c
*************** debbc62854477063e54b7261e5b7cc47  gcc/te
*** 41291,41298 ****
  381f53de01f1e9893e6903d9fac40b87  gcc/testsuite/gcc.target/i386/avx512f-pr63594-2.c
  e97c0c19cafc88b7e3701f64c4ee5e2f  gcc/testsuite/gcc.target/i386/avx512f-pr70059.c
  d3690c9abdc1f96ff5183a85ab642fc8  gcc/testsuite/gcc.target/i386/avx512f-pr70421.c
! 2bec208bfec85d6675be24e134318011  gcc/testsuite/gcc.target/i386/avx512f-pr71559.c
  f536b3eaf7c592092d8cabbb3c2d0021  gcc/testsuite/gcc.target/i386/avx512f-pr77476.c
  fa779c05cab9a2378601e3ad5ae642ef  gcc/testsuite/gcc.target/i386/avx512f-reduce-op-1.c
  ada32523be27898684e961dc8a530319  gcc/testsuite/gcc.target/i386/avx512f-rint-sfix-vec-1.c
  cf72f487882aa5cbbf2a730ccced5372  gcc/testsuite/gcc.target/i386/avx512f-rint-sfix-vec-2.c
--- 43763,43781 ----
  381f53de01f1e9893e6903d9fac40b87  gcc/testsuite/gcc.target/i386/avx512f-pr63594-2.c
  e97c0c19cafc88b7e3701f64c4ee5e2f  gcc/testsuite/gcc.target/i386/avx512f-pr70059.c
  d3690c9abdc1f96ff5183a85ab642fc8  gcc/testsuite/gcc.target/i386/avx512f-pr70421.c
! 6e6bc8c575f27f1c5ce1f9d096b7fa0f  gcc/testsuite/gcc.target/i386/avx512f-pr71559.c
  f536b3eaf7c592092d8cabbb3c2d0021  gcc/testsuite/gcc.target/i386/avx512f-pr77476.c
+ b33ad4c59a3cd208bc4836cc2b65670f  gcc/testsuite/gcc.target/i386/avx512f-pr80846.c
+ a389c34992756249345d609dbb6fce3a  gcc/testsuite/gcc.target/i386/avx512f-pr82370.c
+ c69b4f4162e99276afbc48fc71fa5e0e  gcc/testsuite/gcc.target/i386/avx512f-pr84786-1.c
+ 87e3c7e4634e5b7f65c2077102f502cb  gcc/testsuite/gcc.target/i386/avx512f-pr84786-2.c
+ f5e2d9cb20058374157f0683dddeff73  gcc/testsuite/gcc.target/i386/avx512f-pr85090-1.c
+ 84d3424ba83e34f670378aa307f8926b  gcc/testsuite/gcc.target/i386/avx512f-pr85090-2.c
+ 386940e61dfede0761eb8f35d9b58f7a  gcc/testsuite/gcc.target/i386/avx512f-pr85090-3.c
+ 8f7bb029bc3fd998efd8ccadf1f0edf2  gcc/testsuite/gcc.target/i386/avx512f-pr85169.c
+ 33ef0191b116f2207f8cae72da53f074  gcc/testsuite/gcc.target/i386/avx512f-pr85177.c
+ 44b94a02b283cd9b531e1679a63bb550  gcc/testsuite/gcc.target/i386/avx512f-pr85255.c
+ c03d8cf4fa3fd17be806ad4e6adc4bca  gcc/testsuite/gcc.target/i386/avx512f-prefer.c
  fa779c05cab9a2378601e3ad5ae642ef  gcc/testsuite/gcc.target/i386/avx512f-reduce-op-1.c
  ada32523be27898684e961dc8a530319  gcc/testsuite/gcc.target/i386/avx512f-rint-sfix-vec-1.c
  cf72f487882aa5cbbf2a730ccced5372  gcc/testsuite/gcc.target/i386/avx512f-rint-sfix-vec-2.c
*************** b74179ff996ee056241e1c5238385936  gcc/te
*** 41339,41346 ****
  9c96dcbb2e757b7198aeba742c29a128  gcc/testsuite/gcc.target/i386/avx512f-vaddpd-2.c
  792af69cf392686d37e927d0c1c273c6  gcc/testsuite/gcc.target/i386/avx512f-vaddps-1.c
  8adc2bbf0692b90a3ad92a9678d55ea8  gcc/testsuite/gcc.target/i386/avx512f-vaddps-2.c
! 0c995611cf55cc60d9ee176de59a97f9  gcc/testsuite/gcc.target/i386/avx512f-vaddsd-1.c
! 9408df22738edf674c4e7b85a9571366  gcc/testsuite/gcc.target/i386/avx512f-vaddss-1.c
  0817e599fd63a4cb4659229ca93fecaf  gcc/testsuite/gcc.target/i386/avx512f-valignd-1.c
  698a768b71249ee232a6999bdfd8d7fc  gcc/testsuite/gcc.target/i386/avx512f-valignd-2.c
  10d9179a7ace01306b8187219f338515  gcc/testsuite/gcc.target/i386/avx512f-valignq-1.c
--- 43822,43833 ----
  9c96dcbb2e757b7198aeba742c29a128  gcc/testsuite/gcc.target/i386/avx512f-vaddpd-2.c
  792af69cf392686d37e927d0c1c273c6  gcc/testsuite/gcc.target/i386/avx512f-vaddps-1.c
  8adc2bbf0692b90a3ad92a9678d55ea8  gcc/testsuite/gcc.target/i386/avx512f-vaddps-2.c
! 0138f5f718279767f191e50f70fb75a4  gcc/testsuite/gcc.target/i386/avx512f-vaddsd-1.c
! 607dfff2121b2cdb2d0312ce3322e346  gcc/testsuite/gcc.target/i386/avx512f-vaddsd-2.c
! 3a848cc19651a2963f3d5e3e84bdabd1  gcc/testsuite/gcc.target/i386/avx512f-vaddsd-3.c
! 052009de0443f758da12d0972b86eed2  gcc/testsuite/gcc.target/i386/avx512f-vaddss-1.c
! 500e10a386d594ac90bb3e9ee8006109  gcc/testsuite/gcc.target/i386/avx512f-vaddss-2.c
! 2539b56147680dc9176711290ce61554  gcc/testsuite/gcc.target/i386/avx512f-vaddss-3.c
  0817e599fd63a4cb4659229ca93fecaf  gcc/testsuite/gcc.target/i386/avx512f-valignd-1.c
  698a768b71249ee232a6999bdfd8d7fc  gcc/testsuite/gcc.target/i386/avx512f-valignd-2.c
  10d9179a7ace01306b8187219f338515  gcc/testsuite/gcc.target/i386/avx512f-valignq-1.c
*************** bde726e6f2cd1d9530e50b14cc19e926  gcc/te
*** 41361,41370 ****
  41d510e7de08b1869d765e1c54d9255a  gcc/testsuite/gcc.target/i386/avx512f-vbroadcastsd-2.c
  ea8f5f1fd33b05c11b1eb82ffd2b9d26  gcc/testsuite/gcc.target/i386/avx512f-vbroadcastss-1.c
  faab2215d293f4db6f1cb7890858be20  gcc/testsuite/gcc.target/i386/avx512f-vbroadcastss-2.c
! 3b0e36ed1200f1151174d9a4c9b5f6ca  gcc/testsuite/gcc.target/i386/avx512f-vcmppd-1.c
! 26c6bf838d564165b2cbf8824321c15e  gcc/testsuite/gcc.target/i386/avx512f-vcmppd-2.c
! 333a0b255db8b33ca3d364dcf3a15eea  gcc/testsuite/gcc.target/i386/avx512f-vcmpps-1.c
! 2c72fbab695369d8b6275ece7c22ef27  gcc/testsuite/gcc.target/i386/avx512f-vcmpps-2.c
  24d7d6474f4c84fa916b0de3d78c18d1  gcc/testsuite/gcc.target/i386/avx512f-vcmpsd-1.c
  8dd1b253e0d9570ae7c3f7c857ae299b  gcc/testsuite/gcc.target/i386/avx512f-vcmpsd-2.c
  82d1f58998d5e59837c9920c8eb46f99  gcc/testsuite/gcc.target/i386/avx512f-vcmpss-1.c
--- 43848,43857 ----
  41d510e7de08b1869d765e1c54d9255a  gcc/testsuite/gcc.target/i386/avx512f-vbroadcastsd-2.c
  ea8f5f1fd33b05c11b1eb82ffd2b9d26  gcc/testsuite/gcc.target/i386/avx512f-vbroadcastss-1.c
  faab2215d293f4db6f1cb7890858be20  gcc/testsuite/gcc.target/i386/avx512f-vbroadcastss-2.c
! d56dd2c270d81d571b5335b9fb82a6df  gcc/testsuite/gcc.target/i386/avx512f-vcmppd-1.c
! 3eb9d7bb1cd30f1cc232c846f58e9923  gcc/testsuite/gcc.target/i386/avx512f-vcmppd-2.c
! faac3670b759839236bc319d6e228dee  gcc/testsuite/gcc.target/i386/avx512f-vcmpps-1.c
! fb965451870058fc0338da3bf4ca50a1  gcc/testsuite/gcc.target/i386/avx512f-vcmpps-2.c
  24d7d6474f4c84fa916b0de3d78c18d1  gcc/testsuite/gcc.target/i386/avx512f-vcmpsd-1.c
  8dd1b253e0d9570ae7c3f7c857ae299b  gcc/testsuite/gcc.target/i386/avx512f-vcmpsd-2.c
  82d1f58998d5e59837c9920c8eb46f99  gcc/testsuite/gcc.target/i386/avx512f-vcmpss-1.c
*************** ce2025b5a73196a72a43eac34a5c9a18  gcc/te
*** 41452,41459 ****
  5e355df713ee7c05ba9e5392595eb09a  gcc/testsuite/gcc.target/i386/avx512f-vdivpd-2.c
  57f7f19f34ea24f5ae5762de140c813b  gcc/testsuite/gcc.target/i386/avx512f-vdivps-1.c
  aa1182ff8fa41f1dd8dbe34af9971985  gcc/testsuite/gcc.target/i386/avx512f-vdivps-2.c
! 8b5d1b7658e3f0b8d62fb92d4408d226  gcc/testsuite/gcc.target/i386/avx512f-vdivsd-1.c
! a877ff165986fe8e46541f08382aef68  gcc/testsuite/gcc.target/i386/avx512f-vdivss-1.c
  708c12de1370a83a2980fb98a399a5d1  gcc/testsuite/gcc.target/i386/avx512f-vec-init.c
  0cac8e1e01a7b0e7c1e81c1fa3676acb  gcc/testsuite/gcc.target/i386/avx512f-vec-unpack.c
  aad59cde1da67f91dcaf200225242b6a  gcc/testsuite/gcc.target/i386/avx512f-vect-perm-1.c
--- 43939,43950 ----
  5e355df713ee7c05ba9e5392595eb09a  gcc/testsuite/gcc.target/i386/avx512f-vdivpd-2.c
  57f7f19f34ea24f5ae5762de140c813b  gcc/testsuite/gcc.target/i386/avx512f-vdivps-1.c
  aa1182ff8fa41f1dd8dbe34af9971985  gcc/testsuite/gcc.target/i386/avx512f-vdivps-2.c
! c779dbbf9120988f42fa25ede481658f  gcc/testsuite/gcc.target/i386/avx512f-vdivsd-1.c
! fd53867852deb53d0ca22ad2de8d7adf  gcc/testsuite/gcc.target/i386/avx512f-vdivsd-2.c
! 5ed404bd02f8386593f580ddcb824066  gcc/testsuite/gcc.target/i386/avx512f-vdivsd-3.c
! b5e4cd18a2247fe8c73f3ec6f8f9beb7  gcc/testsuite/gcc.target/i386/avx512f-vdivss-1.c
! 37bc1f025f764010883a7d33e587a6a9  gcc/testsuite/gcc.target/i386/avx512f-vdivss-2.c
! 3d1a356d368a114ff4f4f5ce2918a939  gcc/testsuite/gcc.target/i386/avx512f-vdivss-3.c
  708c12de1370a83a2980fb98a399a5d1  gcc/testsuite/gcc.target/i386/avx512f-vec-init.c
  0cac8e1e01a7b0e7c1e81c1fa3676acb  gcc/testsuite/gcc.target/i386/avx512f-vec-unpack.c
  aad59cde1da67f91dcaf200225242b6a  gcc/testsuite/gcc.target/i386/avx512f-vect-perm-1.c
*************** ac980328de2b95a82a19b708724df817  gcc/te
*** 41515,41532 ****
  e6b8599d2c3be7adc8eab0f4768ca9da  gcc/testsuite/gcc.target/i386/avx512f-vgetexppd-2.c
  f797ecd57126a18d92a0eb412c9096c1  gcc/testsuite/gcc.target/i386/avx512f-vgetexpps-1.c
  3ac747b37d436c79fc7ce2facd77e1fe  gcc/testsuite/gcc.target/i386/avx512f-vgetexpps-2.c
! b9a2edb3b2388f187f9bfc3da1ad8a58  gcc/testsuite/gcc.target/i386/avx512f-vgetexpsd-1.c
! 2a8d66e8ddd05e69994c35fea126a243  gcc/testsuite/gcc.target/i386/avx512f-vgetexpsd-2.c
! b05643d9e8455aaa6656d512c0785844  gcc/testsuite/gcc.target/i386/avx512f-vgetexpss-1.c
! a16677c8a6a19b0febd84077b78c32ad  gcc/testsuite/gcc.target/i386/avx512f-vgetexpss-2.c
  eec514b8763a1c8066c61ea36a1687a6  gcc/testsuite/gcc.target/i386/avx512f-vgetmantpd-1.c
  67a8c92e130fef9bd918e831d489dfdc  gcc/testsuite/gcc.target/i386/avx512f-vgetmantpd-2.c
  6953e0aab9d27e2189cbb45a6a18a05b  gcc/testsuite/gcc.target/i386/avx512f-vgetmantps-1.c
  641e60d3c30979d7ab597254b0376c9b  gcc/testsuite/gcc.target/i386/avx512f-vgetmantps-2.c
! 02e320b87763a6cf8d0879b4023c1a22  gcc/testsuite/gcc.target/i386/avx512f-vgetmantsd-1.c
! fcbbb4957eb32585111ba915e78610e3  gcc/testsuite/gcc.target/i386/avx512f-vgetmantsd-2.c
! fab7a5fc1cd676b82a631e8dfa43c52e  gcc/testsuite/gcc.target/i386/avx512f-vgetmantss-1.c
! 4b4c24bd7720dcffa1b7aff98ad4505b  gcc/testsuite/gcc.target/i386/avx512f-vgetmantss-2.c
  cad96f333d227028d782559168ca42a3  gcc/testsuite/gcc.target/i386/avx512f-vinsertf32x4-1.c
  b4c127e0d7b67d56f1c0f8d1791799ea  gcc/testsuite/gcc.target/i386/avx512f-vinsertf32x4-2.c
  608e7a207e897e9757c00a869921982d  gcc/testsuite/gcc.target/i386/avx512f-vinsertf64x4-1.c
--- 44006,44023 ----
  e6b8599d2c3be7adc8eab0f4768ca9da  gcc/testsuite/gcc.target/i386/avx512f-vgetexppd-2.c
  f797ecd57126a18d92a0eb412c9096c1  gcc/testsuite/gcc.target/i386/avx512f-vgetexpps-1.c
  3ac747b37d436c79fc7ce2facd77e1fe  gcc/testsuite/gcc.target/i386/avx512f-vgetexpps-2.c
! 55e35e59dd0c4cac386ca43ae1df0d40  gcc/testsuite/gcc.target/i386/avx512f-vgetexpsd-1.c
! 42f2f30ca1342fca7b3ca6b383f6c439  gcc/testsuite/gcc.target/i386/avx512f-vgetexpsd-2.c
! fbf48fa66644ece24825d15e5e775689  gcc/testsuite/gcc.target/i386/avx512f-vgetexpss-1.c
! f886fc08873cad09881ed78c7226da6b  gcc/testsuite/gcc.target/i386/avx512f-vgetexpss-2.c
  eec514b8763a1c8066c61ea36a1687a6  gcc/testsuite/gcc.target/i386/avx512f-vgetmantpd-1.c
  67a8c92e130fef9bd918e831d489dfdc  gcc/testsuite/gcc.target/i386/avx512f-vgetmantpd-2.c
  6953e0aab9d27e2189cbb45a6a18a05b  gcc/testsuite/gcc.target/i386/avx512f-vgetmantps-1.c
  641e60d3c30979d7ab597254b0376c9b  gcc/testsuite/gcc.target/i386/avx512f-vgetmantps-2.c
! 590146924810dc4c59f4f0c8d694cbf7  gcc/testsuite/gcc.target/i386/avx512f-vgetmantsd-1.c
! 98673d4419e45cabd8c408af602a8b4d  gcc/testsuite/gcc.target/i386/avx512f-vgetmantsd-2.c
! 764524d8f651bd65e35057f0772ce7d3  gcc/testsuite/gcc.target/i386/avx512f-vgetmantss-1.c
! ba6f38771cf73ad6d68ec70b7116e50e  gcc/testsuite/gcc.target/i386/avx512f-vgetmantss-2.c
  cad96f333d227028d782559168ca42a3  gcc/testsuite/gcc.target/i386/avx512f-vinsertf32x4-1.c
  b4c127e0d7b67d56f1c0f8d1791799ea  gcc/testsuite/gcc.target/i386/avx512f-vinsertf32x4-2.c
  608e7a207e897e9757c00a869921982d  gcc/testsuite/gcc.target/i386/avx512f-vinsertf64x4-1.c
*************** dde440e25ef75dd116fee5978cb3a1d1  gcc/te
*** 41539,41552 ****
  9d40265b7296f34b915ac1cdbf1e85ed  gcc/testsuite/gcc.target/i386/avx512f-vmaxpd-2.c
  183e94de4ee9a8029236013f6eee6214  gcc/testsuite/gcc.target/i386/avx512f-vmaxps-1.c
  02a73171e7d36884f7e06a4fa096be9d  gcc/testsuite/gcc.target/i386/avx512f-vmaxps-2.c
! 6a08b76bcd3c3306fcd32dd598fdc5df  gcc/testsuite/gcc.target/i386/avx512f-vmaxsd-1.c
! 0e8b71f46c6ed4046fe4d5bc8259553c  gcc/testsuite/gcc.target/i386/avx512f-vmaxss-1.c
  c3302fc1e61a77338a62d7a99ac2afe1  gcc/testsuite/gcc.target/i386/avx512f-vminpd-1.c
  5b470dcb183d109849f22428a8f3dbc3  gcc/testsuite/gcc.target/i386/avx512f-vminpd-2.c
  96864509b962a396e23ca29a96f07512  gcc/testsuite/gcc.target/i386/avx512f-vminps-1.c
  918049a98f6849d045256c3c435e535e  gcc/testsuite/gcc.target/i386/avx512f-vminps-2.c
! ab175eb840b606b46a369e8298222f55  gcc/testsuite/gcc.target/i386/avx512f-vminsd-1.c
! c0230bcd52572a81c52975188cfaba00  gcc/testsuite/gcc.target/i386/avx512f-vminss-1.c
  fcfe01c60bc3c40da90f554fa0564673  gcc/testsuite/gcc.target/i386/avx512f-vmovapd-1.c
  6f68dc2ac14a9fc6e6b7a5f3f61a127d  gcc/testsuite/gcc.target/i386/avx512f-vmovapd-2.c
  74fd360f7fcb0753850eaa1dd42189b6  gcc/testsuite/gcc.target/i386/avx512f-vmovaps-1.c
--- 44030,44051 ----
  9d40265b7296f34b915ac1cdbf1e85ed  gcc/testsuite/gcc.target/i386/avx512f-vmaxpd-2.c
  183e94de4ee9a8029236013f6eee6214  gcc/testsuite/gcc.target/i386/avx512f-vmaxps-1.c
  02a73171e7d36884f7e06a4fa096be9d  gcc/testsuite/gcc.target/i386/avx512f-vmaxps-2.c
! 1eec29e35e32fd777451fafb8de3cb6f  gcc/testsuite/gcc.target/i386/avx512f-vmaxsd-1.c
! 649f7b1a610525be1bf0123fafab2659  gcc/testsuite/gcc.target/i386/avx512f-vmaxsd-2.c
! 690f87e3d200f9a63d6a7eaf49b10f26  gcc/testsuite/gcc.target/i386/avx512f-vmaxsd-3.c
! f9eb57f823ec024f860bf80a0d89e8a0  gcc/testsuite/gcc.target/i386/avx512f-vmaxss-1.c
! ba011cad83477eb67262ba84280ca273  gcc/testsuite/gcc.target/i386/avx512f-vmaxss-2.c
! 433feb461ea3ec6e2af86829cf707740  gcc/testsuite/gcc.target/i386/avx512f-vmaxss-3.c
  c3302fc1e61a77338a62d7a99ac2afe1  gcc/testsuite/gcc.target/i386/avx512f-vminpd-1.c
  5b470dcb183d109849f22428a8f3dbc3  gcc/testsuite/gcc.target/i386/avx512f-vminpd-2.c
  96864509b962a396e23ca29a96f07512  gcc/testsuite/gcc.target/i386/avx512f-vminps-1.c
  918049a98f6849d045256c3c435e535e  gcc/testsuite/gcc.target/i386/avx512f-vminps-2.c
! 8cb68fe189963ec60df8cd42770eab3e  gcc/testsuite/gcc.target/i386/avx512f-vminsd-1.c
! 6a0282dc50a13470ef9e6538680b940e  gcc/testsuite/gcc.target/i386/avx512f-vminsd-2.c
! 1058f9d21d0b2bf175ab9dd5a43a9dfa  gcc/testsuite/gcc.target/i386/avx512f-vminsd-3.c
! 7d342e5548fa1f3350bc9475fc020b7f  gcc/testsuite/gcc.target/i386/avx512f-vminss-1.c
! 9a808fc23c61e6c6947ee5474e1389cf  gcc/testsuite/gcc.target/i386/avx512f-vminss-2.c
! 1d28629ec1a4a7bcefe25fd77fd5decd  gcc/testsuite/gcc.target/i386/avx512f-vminss-3.c
  fcfe01c60bc3c40da90f554fa0564673  gcc/testsuite/gcc.target/i386/avx512f-vmovapd-1.c
  6f68dc2ac14a9fc6e6b7a5f3f61a127d  gcc/testsuite/gcc.target/i386/avx512f-vmovapd-2.c
  74fd360f7fcb0753850eaa1dd42189b6  gcc/testsuite/gcc.target/i386/avx512f-vmovaps-1.c
*************** e249f1d08d697520963978f86cbd29f4  gcc/te
*** 41581,41588 ****
  f3618e27c0935d560d4d336bac3f7fc4  gcc/testsuite/gcc.target/i386/avx512f-vmulpd-2.c
  6042bb972dda778c4c5b611e7d67f80c  gcc/testsuite/gcc.target/i386/avx512f-vmulps-1.c
  aac0cbb8c9a0d941676adc946557093c  gcc/testsuite/gcc.target/i386/avx512f-vmulps-2.c
! dde7f590f4dd989cefe9297b6fa30267  gcc/testsuite/gcc.target/i386/avx512f-vmulsd-1.c
! f23c94fc2cac6124565d3f00e68ab463  gcc/testsuite/gcc.target/i386/avx512f-vmulss-1.c
  19d2e6ee4a859a5d3cee9f557372c503  gcc/testsuite/gcc.target/i386/avx512f-vpabsd-2.c
  9aa63d66d0b34683f2d8617d167da3fd  gcc/testsuite/gcc.target/i386/avx512f-vpabsd512-1.c
  751809a9577037a5989ca1f2eef2757b  gcc/testsuite/gcc.target/i386/avx512f-vpabsq-2.c
--- 44080,44092 ----
  f3618e27c0935d560d4d336bac3f7fc4  gcc/testsuite/gcc.target/i386/avx512f-vmulpd-2.c
  6042bb972dda778c4c5b611e7d67f80c  gcc/testsuite/gcc.target/i386/avx512f-vmulps-1.c
  aac0cbb8c9a0d941676adc946557093c  gcc/testsuite/gcc.target/i386/avx512f-vmulps-2.c
! 7512090d523e1795f8c069ccf5aa33ae  gcc/testsuite/gcc.target/i386/avx512f-vmulsd-1.c
! 00cec8c2f2c2f27be13dcef65a585a46  gcc/testsuite/gcc.target/i386/avx512f-vmulsd-2.c
! 0f5502e6eea799bece8e962d1a9aedcc  gcc/testsuite/gcc.target/i386/avx512f-vmulsd-3.c
! 03609ef2d3dad9d02416526907719218  gcc/testsuite/gcc.target/i386/avx512f-vmulss-1.c
! 5d2c14983d8641a8f4978a18b7e15371  gcc/testsuite/gcc.target/i386/avx512f-vmulss-2.c
! 447586dd2a8af7300e9ca7d0763c336b  gcc/testsuite/gcc.target/i386/avx512f-vmulss-3.c
! 0f709355c9ef86b0685ac1285d4450ea  gcc/testsuite/gcc.target/i386/avx512f-vnni-1.c
  19d2e6ee4a859a5d3cee9f557372c503  gcc/testsuite/gcc.target/i386/avx512f-vpabsd-2.c
  9aa63d66d0b34683f2d8617d167da3fd  gcc/testsuite/gcc.target/i386/avx512f-vpabsd512-1.c
  751809a9577037a5989ca1f2eef2757b  gcc/testsuite/gcc.target/i386/avx512f-vpabsq-2.c
*************** f0bbc53daeed10bb8766b883d5c0c203  gcc/te
*** 41607,41612 ****
--- 44111,44117 ----
  4f9e796749bfc5c269e5fcb894f43213  gcc/testsuite/gcc.target/i386/avx512f-vpbroadcastd-2.c
  f6e9ee0f49a9136048b8c607f1f8293a  gcc/testsuite/gcc.target/i386/avx512f-vpbroadcastq-1.c
  aaac1408b5ce290b12e396f2a7423275  gcc/testsuite/gcc.target/i386/avx512f-vpbroadcastq-2.c
+ b35f385754d7adcf5a33661dff6d0ee5  gcc/testsuite/gcc.target/i386/avx512f-vpclmulqdq-2.c
  12d963850c2b3eb34f23e180affd54a1  gcc/testsuite/gcc.target/i386/avx512f-vpcmpd-1.c
  ca3cbe4bf0bd33e5b9a8b91834012346  gcc/testsuite/gcc.target/i386/avx512f-vpcmpd-2.c
  d41dcc02a8c14c48150e9a28ccaa7bbb  gcc/testsuite/gcc.target/i386/avx512f-vpcmpeqd-1.c
*************** db64ecaf7ddaaef749bc26f50af7e3bc  gcc/te
*** 41663,41674 ****
  168050657750b10d1ebfeaae01fe19da  gcc/testsuite/gcc.target/i386/avx512f-vpcmpud-2.c
  e634c126f2e73d0fcbf10a87d417ddee  gcc/testsuite/gcc.target/i386/avx512f-vpcmpuq-1.c
  c7a149a80b76351d66c8c6d26298bece  gcc/testsuite/gcc.target/i386/avx512f-vpcmpuq-2.c
  8e83a84aaf58c1723af67a365a8d7010  gcc/testsuite/gcc.target/i386/avx512f-vpcompressd-1.c
  4756278a12238d5e74693ccf118d2ebe  gcc/testsuite/gcc.target/i386/avx512f-vpcompressd-2.c
  4469a2497500a44fbee5e07165ba9bde  gcc/testsuite/gcc.target/i386/avx512f-vpcompressq-1.c
  0d85648b7a0ee7f131e478405e74c9d3  gcc/testsuite/gcc.target/i386/avx512f-vpcompressq-2.c
  56cc6978621a2fa60cdd5c47423758a3  gcc/testsuite/gcc.target/i386/avx512f-vpermd-1.c
! 1da1f179055f9440b93333d02c952094  gcc/testsuite/gcc.target/i386/avx512f-vpermd-2.c
  fb76e1bda0a89bf425010ca6fd6dbe29  gcc/testsuite/gcc.target/i386/avx512f-vpermi2d-1.c
  d63c71755bb5d6088819774633ad6384  gcc/testsuite/gcc.target/i386/avx512f-vpermi2d-2.c
  f8728d83283a36e9976da2e818d371a7  gcc/testsuite/gcc.target/i386/avx512f-vpermi2pd-1.c
--- 44168,44187 ----
  168050657750b10d1ebfeaae01fe19da  gcc/testsuite/gcc.target/i386/avx512f-vpcmpud-2.c
  e634c126f2e73d0fcbf10a87d417ddee  gcc/testsuite/gcc.target/i386/avx512f-vpcmpuq-1.c
  c7a149a80b76351d66c8c6d26298bece  gcc/testsuite/gcc.target/i386/avx512f-vpcmpuq-2.c
+ d2f5a90b7c2f0f7162fdc9fbd024107c  gcc/testsuite/gcc.target/i386/avx512f-vpcompressb-1.c
+ 46a17052853380a1021e659494e2fbff  gcc/testsuite/gcc.target/i386/avx512f-vpcompressb-2.c
  8e83a84aaf58c1723af67a365a8d7010  gcc/testsuite/gcc.target/i386/avx512f-vpcompressd-1.c
  4756278a12238d5e74693ccf118d2ebe  gcc/testsuite/gcc.target/i386/avx512f-vpcompressd-2.c
  4469a2497500a44fbee5e07165ba9bde  gcc/testsuite/gcc.target/i386/avx512f-vpcompressq-1.c
  0d85648b7a0ee7f131e478405e74c9d3  gcc/testsuite/gcc.target/i386/avx512f-vpcompressq-2.c
+ 1488080dc9b9b495b03ef71484a8b792  gcc/testsuite/gcc.target/i386/avx512f-vpcompressw-1.c
+ a1244584b7196c8505ff51cef8c0db8b  gcc/testsuite/gcc.target/i386/avx512f-vpcompressw-2.c
+ 94e0fe23c87ea3d72348e590f80affbd  gcc/testsuite/gcc.target/i386/avx512f-vpdpbusd-2.c
+ d4f021ae95c4ae6fec94177b4b8887d2  gcc/testsuite/gcc.target/i386/avx512f-vpdpbusds-2.c
+ f38af091d60259a3848c0d15e5dca26b  gcc/testsuite/gcc.target/i386/avx512f-vpdpwssd-2.c
+ c9021bcfb1ba7d62d81eb2187dca5c7e  gcc/testsuite/gcc.target/i386/avx512f-vpdpwssds-2.c
  56cc6978621a2fa60cdd5c47423758a3  gcc/testsuite/gcc.target/i386/avx512f-vpermd-1.c
! 9d65450db3497392d68570cca3f64238  gcc/testsuite/gcc.target/i386/avx512f-vpermd-2.c
  fb76e1bda0a89bf425010ca6fd6dbe29  gcc/testsuite/gcc.target/i386/avx512f-vpermi2d-1.c
  d63c71755bb5d6088819774633ad6384  gcc/testsuite/gcc.target/i386/avx512f-vpermi2d-2.c
  f8728d83283a36e9976da2e818d371a7  gcc/testsuite/gcc.target/i386/avx512f-vpermi2pd-1.c
*************** d2c6f29cf15bd159c57b7a7751538156  gcc/te
*** 41692,41713 ****
  a69dcded8f8cda6919946e7f208c7e08  gcc/testsuite/gcc.target/i386/avx512f-vpermps-1.c
  8ecec2925d6b8dda8c997da7b45252e5  gcc/testsuite/gcc.target/i386/avx512f-vpermps-2.c
  6fa8297902e32330d3af90524ae35521  gcc/testsuite/gcc.target/i386/avx512f-vpermq-imm-1.c
! 374f3564875f70be948c0808aeca41a6  gcc/testsuite/gcc.target/i386/avx512f-vpermq-imm-2.c
  6c3389cb00c407197758b866941b89f5  gcc/testsuite/gcc.target/i386/avx512f-vpermq-imm-3.c
  bf34908219e7ac4da3846cb7ccd0d897  gcc/testsuite/gcc.target/i386/avx512f-vpermq-var-1.c
! a43fb72815cea06978fc5af5490fdd6e  gcc/testsuite/gcc.target/i386/avx512f-vpermq-var-2.c
! fcb39e2f1232da8f86561c215408e878  gcc/testsuite/gcc.target/i386/avx512f-vpermt2d-1.c
  21b99b232f662ff8d53463f1e77e4a47  gcc/testsuite/gcc.target/i386/avx512f-vpermt2d-2.c
! 0a68710763e7c64f16f043ccb0a6fd5b  gcc/testsuite/gcc.target/i386/avx512f-vpermt2pd-1.c
  010b3f804e1770334bd0c24fce1e352d  gcc/testsuite/gcc.target/i386/avx512f-vpermt2pd-2.c
! 767926c95b49249fe42f2188f7470300  gcc/testsuite/gcc.target/i386/avx512f-vpermt2ps-1.c
  bcefab56d22fef7fc172314ba9c97989  gcc/testsuite/gcc.target/i386/avx512f-vpermt2ps-2.c
! f57b67d3615adfcd08551ed1f3ee1609  gcc/testsuite/gcc.target/i386/avx512f-vpermt2q-1.c
  536defcff4871422ef4471360578575b  gcc/testsuite/gcc.target/i386/avx512f-vpermt2q-2.c
  741a9d787c341bfbc61069c5b83e11f4  gcc/testsuite/gcc.target/i386/avx512f-vpexpandd-1.c
  18ef213b980207dddeaab010e02d8373  gcc/testsuite/gcc.target/i386/avx512f-vpexpandd-2.c
  e8f13a9c8c9f47b388d2ae251d990e0f  gcc/testsuite/gcc.target/i386/avx512f-vpexpandq-1.c
  7b02d45ecdbe27555e1c4d4706bbf7b4  gcc/testsuite/gcc.target/i386/avx512f-vpexpandq-2.c
  de0e3874d0aa605d2655bc54cca75463  gcc/testsuite/gcc.target/i386/avx512f-vpmaxsd-1.c
  3e63a841111601e4b7f1bf6a8ab00963  gcc/testsuite/gcc.target/i386/avx512f-vpmaxsd-2.c
  5ef2a3041971aa49d75c5693a4eda2fa  gcc/testsuite/gcc.target/i386/avx512f-vpmaxsq-1.c
--- 44205,44230 ----
  a69dcded8f8cda6919946e7f208c7e08  gcc/testsuite/gcc.target/i386/avx512f-vpermps-1.c
  8ecec2925d6b8dda8c997da7b45252e5  gcc/testsuite/gcc.target/i386/avx512f-vpermps-2.c
  6fa8297902e32330d3af90524ae35521  gcc/testsuite/gcc.target/i386/avx512f-vpermq-imm-1.c
! 1825d0fa80df5b7618623d9aab7d1d1d  gcc/testsuite/gcc.target/i386/avx512f-vpermq-imm-2.c
  6c3389cb00c407197758b866941b89f5  gcc/testsuite/gcc.target/i386/avx512f-vpermq-imm-3.c
  bf34908219e7ac4da3846cb7ccd0d897  gcc/testsuite/gcc.target/i386/avx512f-vpermq-var-1.c
! 2bc5000b59c72a1b2a61e90dc41574b9  gcc/testsuite/gcc.target/i386/avx512f-vpermq-var-2.c
! 6bfc256b7309ea9a98a561922ce2ccb2  gcc/testsuite/gcc.target/i386/avx512f-vpermt2d-1.c
  21b99b232f662ff8d53463f1e77e4a47  gcc/testsuite/gcc.target/i386/avx512f-vpermt2d-2.c
! 891fa5e7c2dc78db699012a395966906  gcc/testsuite/gcc.target/i386/avx512f-vpermt2pd-1.c
  010b3f804e1770334bd0c24fce1e352d  gcc/testsuite/gcc.target/i386/avx512f-vpermt2pd-2.c
! d3bf85eb1d1a650504366986dbe06adb  gcc/testsuite/gcc.target/i386/avx512f-vpermt2ps-1.c
  bcefab56d22fef7fc172314ba9c97989  gcc/testsuite/gcc.target/i386/avx512f-vpermt2ps-2.c
! fb35f3070662bee2d24d59ff3ec16a2f  gcc/testsuite/gcc.target/i386/avx512f-vpermt2q-1.c
  536defcff4871422ef4471360578575b  gcc/testsuite/gcc.target/i386/avx512f-vpermt2q-2.c
+ ead21fe528f3cb6c8e7f11113b481045  gcc/testsuite/gcc.target/i386/avx512f-vpexpandb-1.c
+ ac643645e5420b07aa30be189cb349ce  gcc/testsuite/gcc.target/i386/avx512f-vpexpandb-2.c
  741a9d787c341bfbc61069c5b83e11f4  gcc/testsuite/gcc.target/i386/avx512f-vpexpandd-1.c
  18ef213b980207dddeaab010e02d8373  gcc/testsuite/gcc.target/i386/avx512f-vpexpandd-2.c
  e8f13a9c8c9f47b388d2ae251d990e0f  gcc/testsuite/gcc.target/i386/avx512f-vpexpandq-1.c
  7b02d45ecdbe27555e1c4d4706bbf7b4  gcc/testsuite/gcc.target/i386/avx512f-vpexpandq-2.c
+ 56c5dc30a3c1d9d0594d167042cedef6  gcc/testsuite/gcc.target/i386/avx512f-vpexpandw-1.c
+ 817f0beeaabb0eca611ef3a78b630e39  gcc/testsuite/gcc.target/i386/avx512f-vpexpandw-2.c
  de0e3874d0aa605d2655bc54cca75463  gcc/testsuite/gcc.target/i386/avx512f-vpmaxsd-1.c
  3e63a841111601e4b7f1bf6a8ab00963  gcc/testsuite/gcc.target/i386/avx512f-vpmaxsd-2.c
  5ef2a3041971aa49d75c5693a4eda2fa  gcc/testsuite/gcc.target/i386/avx512f-vpmaxsq-1.c
*************** f20b5304a03f49cb0f19e7e9a6946898  gcc/te
*** 41800,41805 ****
--- 44317,44336 ----
  c4494e5c8f2f5712605e076f2e600674  gcc/testsuite/gcc.target/i386/avx512f-vprorvd-2.c
  cb1c82b7418448d896760ace3454f3a3  gcc/testsuite/gcc.target/i386/avx512f-vprorvq-1.c
  7a1ff54d11a0d9bb0cdf5ed6965eecb1  gcc/testsuite/gcc.target/i386/avx512f-vprorvq-2.c
+ 9887ab54074eeef0af1cb3fc9b5f7dfd  gcc/testsuite/gcc.target/i386/avx512f-vpshld-1.c
+ 42bb6bb824011c29df1e23ffb210d7d3  gcc/testsuite/gcc.target/i386/avx512f-vpshldd-2.c
+ c2916e99da438fd9fcabe74171b14ebd  gcc/testsuite/gcc.target/i386/avx512f-vpshldq-2.c
+ eb08b611533afd14c4ebe4e0926102be  gcc/testsuite/gcc.target/i386/avx512f-vpshldv-1.c
+ 0b7d2fd486d2771094090bd31603d02b  gcc/testsuite/gcc.target/i386/avx512f-vpshldvd-2.c
+ f8890f06bec73f17fc83db9f46be4d06  gcc/testsuite/gcc.target/i386/avx512f-vpshldvq-2.c
+ 195c5d627f50d6fbf95969ae408c4e1a  gcc/testsuite/gcc.target/i386/avx512f-vpshldvw-2.c
+ b9d84ad1774097a2f9443c22c2bc45a5  gcc/testsuite/gcc.target/i386/avx512f-vpshrdd-2.c
+ 0a74e009fd2ffedddb18d9135cadb815  gcc/testsuite/gcc.target/i386/avx512f-vpshrdq-2.c
+ 597bebee7398e51c39d1e3e8fbd337e5  gcc/testsuite/gcc.target/i386/avx512f-vpshrdv-1.c
+ a215e3027c33db8f238bcee999a3829d  gcc/testsuite/gcc.target/i386/avx512f-vpshrdvd-2.c
+ a932376370a86358e47398fb1a2940c8  gcc/testsuite/gcc.target/i386/avx512f-vpshrdvq-2.c
+ d7272f8b979d82be06ec18390fccd29f  gcc/testsuite/gcc.target/i386/avx512f-vpshrdvw-2.c
+ 00a406591ceb4c6af2ba689805ccf336  gcc/testsuite/gcc.target/i386/avx512f-vpshrdw-2.c
  bcd3addead7fb0a49914abb9c88da517  gcc/testsuite/gcc.target/i386/avx512f-vpshufd-1.c
  b1234db8d1acd04e8c3fb61310d055fa  gcc/testsuite/gcc.target/i386/avx512f-vpshufd-2.c
  79e7dde86741e98fb488c4c07d3326d7  gcc/testsuite/gcc.target/i386/avx512f-vpslld-1.c
*************** ae7f58ad93189cf716d83abf398e8107  gcc/te
*** 41876,41885 ****
  d9f67b4c5aebd388781b2aff9289241d  gcc/testsuite/gcc.target/i386/avx512f-vrcp14pd-2.c
  69a3d812bb077ac78938f6e296d507c0  gcc/testsuite/gcc.target/i386/avx512f-vrcp14ps-1.c
  b8fd0a04d5cddf24de912198ddb13b5d  gcc/testsuite/gcc.target/i386/avx512f-vrcp14ps-2.c
! 0dd80f60a71993f76558e8c26cc04ce7  gcc/testsuite/gcc.target/i386/avx512f-vrcp14sd-1.c
! 2080d699008ed2a10ad6a452f58166b9  gcc/testsuite/gcc.target/i386/avx512f-vrcp14sd-2.c
! 99b3e903af9db625fe8e033542f94f99  gcc/testsuite/gcc.target/i386/avx512f-vrcp14ss-1.c
! 0b9c5f483189d640b78f4ed5165f867e  gcc/testsuite/gcc.target/i386/avx512f-vrcp14ss-2.c
  e37e49d4cca1522d9cf91e660ec08113  gcc/testsuite/gcc.target/i386/avx512f-vrndscalepd-1.c
  d8348cd10c65a8bcbbe9bfef756c9c0d  gcc/testsuite/gcc.target/i386/avx512f-vrndscalepd-2.c
  8884d87bfe764b0d3d3f408c18f4ef56  gcc/testsuite/gcc.target/i386/avx512f-vrndscaleps-1.c
--- 44407,44416 ----
  d9f67b4c5aebd388781b2aff9289241d  gcc/testsuite/gcc.target/i386/avx512f-vrcp14pd-2.c
  69a3d812bb077ac78938f6e296d507c0  gcc/testsuite/gcc.target/i386/avx512f-vrcp14ps-1.c
  b8fd0a04d5cddf24de912198ddb13b5d  gcc/testsuite/gcc.target/i386/avx512f-vrcp14ps-2.c
! 7e3a4e16863964d53dc3420a57843664  gcc/testsuite/gcc.target/i386/avx512f-vrcp14sd-1.c
! e91856445184c77672314c948cf06e11  gcc/testsuite/gcc.target/i386/avx512f-vrcp14sd-2.c
! 1a21587fcf03abe0109559ac07f8349c  gcc/testsuite/gcc.target/i386/avx512f-vrcp14ss-1.c
! 71f331da51ab04208a8df90851157200  gcc/testsuite/gcc.target/i386/avx512f-vrcp14ss-2.c
  e37e49d4cca1522d9cf91e660ec08113  gcc/testsuite/gcc.target/i386/avx512f-vrndscalepd-1.c
  d8348cd10c65a8bcbbe9bfef756c9c0d  gcc/testsuite/gcc.target/i386/avx512f-vrndscalepd-2.c
  8884d87bfe764b0d3d3f408c18f4ef56  gcc/testsuite/gcc.target/i386/avx512f-vrndscaleps-1.c
*************** d8348cd10c65a8bcbbe9bfef756c9c0d  gcc/te
*** 41892,41909 ****
  e6c6ff9d51635fb84b9c8f4dc46f4111  gcc/testsuite/gcc.target/i386/avx512f-vrsqrt14pd-2.c
  95c490ddbad349ff51292338fe6cde46  gcc/testsuite/gcc.target/i386/avx512f-vrsqrt14ps-1.c
  af99ba3a610e85e7b7b347203b8fe4da  gcc/testsuite/gcc.target/i386/avx512f-vrsqrt14ps-2.c
! 5268c6fb746a9986b9e594e60e2671c9  gcc/testsuite/gcc.target/i386/avx512f-vrsqrt14sd-1.c
! 55d4eda0be123df06646585930b559e9  gcc/testsuite/gcc.target/i386/avx512f-vrsqrt14sd-2.c
! a574cd36e3fc77d45744076250fb4553  gcc/testsuite/gcc.target/i386/avx512f-vrsqrt14ss-1.c
! 555ecdae7c5531d3b76f40ad72768fb2  gcc/testsuite/gcc.target/i386/avx512f-vrsqrt14ss-2.c
  684c849de4901234f8b267b62d5606c9  gcc/testsuite/gcc.target/i386/avx512f-vscalefpd-1.c
  dea6448dc8dc45bf7a13d2f78a95b4b4  gcc/testsuite/gcc.target/i386/avx512f-vscalefpd-2.c
  abd1dd9be9933bff2ebb6a99e89adbb3  gcc/testsuite/gcc.target/i386/avx512f-vscalefps-1.c
  0061204649aac1746fc67c1c0cbb8535  gcc/testsuite/gcc.target/i386/avx512f-vscalefps-2.c
! c02f22b203be89080ce5da6fa66b4c81  gcc/testsuite/gcc.target/i386/avx512f-vscalefsd-1.c
! 4bd2cdd953b851123aafcba67cfc40cc  gcc/testsuite/gcc.target/i386/avx512f-vscalefsd-2.c
! b5f07ffd753ea0ce2ed8b515dfc969aa  gcc/testsuite/gcc.target/i386/avx512f-vscalefss-1.c
! db56ca40fb44cf9ce7c5b8ea91052dc5  gcc/testsuite/gcc.target/i386/avx512f-vscalefss-2.c
  e69fd8a857aa88aae6eb67b874be41ae  gcc/testsuite/gcc.target/i386/avx512f-vshuff32x4-1.c
  931e1b9752816582ab40145f3e839890  gcc/testsuite/gcc.target/i386/avx512f-vshuff32x4-2.c
  86288f07c08573f56f5fef05fd7e17a4  gcc/testsuite/gcc.target/i386/avx512f-vshuff64x2-1.c
--- 44423,44440 ----
  e6c6ff9d51635fb84b9c8f4dc46f4111  gcc/testsuite/gcc.target/i386/avx512f-vrsqrt14pd-2.c
  95c490ddbad349ff51292338fe6cde46  gcc/testsuite/gcc.target/i386/avx512f-vrsqrt14ps-1.c
  af99ba3a610e85e7b7b347203b8fe4da  gcc/testsuite/gcc.target/i386/avx512f-vrsqrt14ps-2.c
! 0ab5fbec61f0caeb534dbf5316def857  gcc/testsuite/gcc.target/i386/avx512f-vrsqrt14sd-1.c
! 4321b88867f97094af24b399fc897973  gcc/testsuite/gcc.target/i386/avx512f-vrsqrt14sd-2.c
! 48fc5a182382a4a394eb5dbde5ba7855  gcc/testsuite/gcc.target/i386/avx512f-vrsqrt14ss-1.c
! 63bf0e3358e652966c0c5e5e439cc368  gcc/testsuite/gcc.target/i386/avx512f-vrsqrt14ss-2.c
  684c849de4901234f8b267b62d5606c9  gcc/testsuite/gcc.target/i386/avx512f-vscalefpd-1.c
  dea6448dc8dc45bf7a13d2f78a95b4b4  gcc/testsuite/gcc.target/i386/avx512f-vscalefpd-2.c
  abd1dd9be9933bff2ebb6a99e89adbb3  gcc/testsuite/gcc.target/i386/avx512f-vscalefps-1.c
  0061204649aac1746fc67c1c0cbb8535  gcc/testsuite/gcc.target/i386/avx512f-vscalefps-2.c
! 22b0e36d0c1fdc26c0e7c574c320beb2  gcc/testsuite/gcc.target/i386/avx512f-vscalefsd-1.c
! d828af1a215e5122a0778639111441b6  gcc/testsuite/gcc.target/i386/avx512f-vscalefsd-2.c
! 60dee7660478e89739b648e5b27fb6d0  gcc/testsuite/gcc.target/i386/avx512f-vscalefss-1.c
! c716dca579ad463b85b047fdb838eaed  gcc/testsuite/gcc.target/i386/avx512f-vscalefss-2.c
  e69fd8a857aa88aae6eb67b874be41ae  gcc/testsuite/gcc.target/i386/avx512f-vshuff32x4-1.c
  931e1b9752816582ab40145f3e839890  gcc/testsuite/gcc.target/i386/avx512f-vshuff32x4-2.c
  86288f07c08573f56f5fef05fd7e17a4  gcc/testsuite/gcc.target/i386/avx512f-vshuff64x2-1.c
*************** efcdf057857efc07df3410f94af10a1b  gcc/te
*** 41920,41933 ****
  a30a6389dea3f18bf4b9db15afb47dbf  gcc/testsuite/gcc.target/i386/avx512f-vsqrtpd-2.c
  b03ff1b030d60119abadebb62121a41a  gcc/testsuite/gcc.target/i386/avx512f-vsqrtps-1.c
  72269f1c5c3573077261e09026f8fcfe  gcc/testsuite/gcc.target/i386/avx512f-vsqrtps-2.c
! 00e196c67d3a69489c07ca44b8b7deae  gcc/testsuite/gcc.target/i386/avx512f-vsqrtsd-1.c
! ea85a62e503c06b8313efb16da5def44  gcc/testsuite/gcc.target/i386/avx512f-vsqrtss-1.c
  627fcf4a4762757a261934006b8a83f1  gcc/testsuite/gcc.target/i386/avx512f-vsubpd-1.c
  c50c674bfb9e7cdfff6854ce237fc430  gcc/testsuite/gcc.target/i386/avx512f-vsubpd-2.c
  9f9861cbb4daa512494d6e45ca782c42  gcc/testsuite/gcc.target/i386/avx512f-vsubps-1.c
  a0d80615d58579d9b25d1e92196f0e8b  gcc/testsuite/gcc.target/i386/avx512f-vsubps-2.c
! 1e1741faf05911e061bdd698e49c1585  gcc/testsuite/gcc.target/i386/avx512f-vsubsd-1.c
! d23d35f38f4102b56e5ce936b0ae260b  gcc/testsuite/gcc.target/i386/avx512f-vsubss-1.c
  34e20cd356c3e87f6be4b56edef108d5  gcc/testsuite/gcc.target/i386/avx512f-vucomisd-1.c
  57bc9877e31929a5072ab71768bdc073  gcc/testsuite/gcc.target/i386/avx512f-vucomiss-1.c
  7366ebaab9fa48d69d842fb373c8aefc  gcc/testsuite/gcc.target/i386/avx512f-vunpckhpd-1.c
--- 44451,44470 ----
  a30a6389dea3f18bf4b9db15afb47dbf  gcc/testsuite/gcc.target/i386/avx512f-vsqrtpd-2.c
  b03ff1b030d60119abadebb62121a41a  gcc/testsuite/gcc.target/i386/avx512f-vsqrtps-1.c
  72269f1c5c3573077261e09026f8fcfe  gcc/testsuite/gcc.target/i386/avx512f-vsqrtps-2.c
! d61282d9d6622dd85843ab34886dd396  gcc/testsuite/gcc.target/i386/avx512f-vsqrtsd-1.c
! d8dc69c35b120f087a95bcdeae536311  gcc/testsuite/gcc.target/i386/avx512f-vsqrtsd-2.c
! 090ca06ebf65cf28b6045dcc692c19e2  gcc/testsuite/gcc.target/i386/avx512f-vsqrtss-1.c
! b344462aa27713764f5f2ea3d4f162c2  gcc/testsuite/gcc.target/i386/avx512f-vsqrtss-2.c
  627fcf4a4762757a261934006b8a83f1  gcc/testsuite/gcc.target/i386/avx512f-vsubpd-1.c
  c50c674bfb9e7cdfff6854ce237fc430  gcc/testsuite/gcc.target/i386/avx512f-vsubpd-2.c
  9f9861cbb4daa512494d6e45ca782c42  gcc/testsuite/gcc.target/i386/avx512f-vsubps-1.c
  a0d80615d58579d9b25d1e92196f0e8b  gcc/testsuite/gcc.target/i386/avx512f-vsubps-2.c
! baa91f82c72ca19a7b0031bb8313c0ba  gcc/testsuite/gcc.target/i386/avx512f-vsubsd-1.c
! add16e9912aa929e9abb6ab0071f56bf  gcc/testsuite/gcc.target/i386/avx512f-vsubsd-2.c
! 563b93226ce1d6b287290fdf1fba4942  gcc/testsuite/gcc.target/i386/avx512f-vsubsd-3.c
! 7e2e939ec73905681d607b8c7f6e2f01  gcc/testsuite/gcc.target/i386/avx512f-vsubss-1.c
! 4a472fb84bb6f96e4ca5488a47e16dce  gcc/testsuite/gcc.target/i386/avx512f-vsubss-2.c
! f680dd7ff7408b5302469f2f2cd135e0  gcc/testsuite/gcc.target/i386/avx512f-vsubss-3.c
  34e20cd356c3e87f6be4b56edef108d5  gcc/testsuite/gcc.target/i386/avx512f-vucomisd-1.c
  57bc9877e31929a5072ab71768bdc073  gcc/testsuite/gcc.target/i386/avx512f-vucomiss-1.c
  7366ebaab9fa48d69d842fb373c8aefc  gcc/testsuite/gcc.target/i386/avx512f-vunpckhpd-1.c
*************** f84251aa8768cd6b81ffe219261cdac3  gcc/te
*** 41941,41947 ****
  a2a64e1275759ec373e703e34e9868e5  gcc/testsuite/gcc.target/i386/avx512f_cond_move.c
  5df18e05d0e78145ad28948df7f01c93  gcc/testsuite/gcc.target/i386/avx512f_evex_reg_asm-1.c
  57924217470838a4212303a01c9f8b5d  gcc/testsuite/gcc.target/i386/avx512f_evex_reg_asm-2.c
! 2420b5ad8308ccbb3969a39df05a34b0  gcc/testsuite/gcc.target/i386/avx512ifma-check.h
  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
--- 44478,44484 ----
  a2a64e1275759ec373e703e34e9868e5  gcc/testsuite/gcc.target/i386/avx512f_cond_move.c
  5df18e05d0e78145ad28948df7f01c93  gcc/testsuite/gcc.target/i386/avx512f_evex_reg_asm-1.c
  57924217470838a4212303a01c9f8b5d  gcc/testsuite/gcc.target/i386/avx512f_evex_reg_asm-2.c
! 71a273fab2ff325b254087211e760a61  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
*************** c7550dbb04a71bdfec68bb75eabad2ec  gcc/te
*** 41962,41983 ****
  6e5ed4c0fa8aca75b9711335a64f6de9  gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1dps-1.c
  0074178d72d8032efb700e05004cd863  gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1qpd-1.c
  1736cd4966fae5871c23abc4e174d3c3  gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1qps-1.c
- 8d1b6d12af261b31339778204e91742a  gcc/testsuite/gcc.target/i386/avx512vbmi-check.h
  7a89da980943c10241c8fae92f56405f  gcc/testsuite/gcc.target/i386/avx512vbmi-vpermb-1.c
  cddb99c63e0e76bfa9a96f8ad9706542  gcc/testsuite/gcc.target/i386/avx512vbmi-vpermb-2.c
  22e777ee742eabb49ca9c4bf3f1ab383  gcc/testsuite/gcc.target/i386/avx512vbmi-vpermi2b-1.c
  c75f41a84b0ff9e1454ea517888cf42e  gcc/testsuite/gcc.target/i386/avx512vbmi-vpermi2b-2.c
! 2cfaab383d1c1083a3b508f1ed0a0874  gcc/testsuite/gcc.target/i386/avx512vbmi-vpermt2b-1.c
  901b5f592de42b8641315e7a0e470c78  gcc/testsuite/gcc.target/i386/avx512vbmi-vpermt2b-2.c
  da943fec8529ab4219ae92fa7701f4f3  gcc/testsuite/gcc.target/i386/avx512vbmi-vpmultishiftqb-1.c
  b3bb92860a7a7725c03afa6bd022047f  gcc/testsuite/gcc.target/i386/avx512vbmi-vpmultishiftqb-2.c
  00c640a9ee145099cd26543b8b9bfcff  gcc/testsuite/gcc.target/i386/avx512vl-abs-copysign-1.c
  d2d79308516c8d8c17653303db1b5237  gcc/testsuite/gcc.target/i386/avx512vl-abs-copysign-2.c
! 46e21e8825cabef58d4b32bc3e253163  gcc/testsuite/gcc.target/i386/avx512vl-check.h
  0617dd4b8fef3764392d3723a75e2c8b  gcc/testsuite/gcc.target/i386/avx512vl-concatv2di-1.c
  aa1c65ae5d415bc961f9a1df5e0e7664  gcc/testsuite/gcc.target/i386/avx512vl-concatv2si-1.c
  cfe2aa1be3273634b71c46e44025ff10  gcc/testsuite/gcc.target/i386/avx512vl-concatv4si-1.c
  ea195c3170f173d6bcfe01f2e0c920c9  gcc/testsuite/gcc.target/i386/avx512vl-gather-1.c
  fb07cc6b49d422bb45b0417748ff18ec  gcc/testsuite/gcc.target/i386/avx512vl-i32gatherd-1.c
  32d6d350ff163ad269b5331a6e8118e6  gcc/testsuite/gcc.target/i386/avx512vl-i32gatherpd-1.c
  eeecd58c1d89a0738e8f93fc67e5415f  gcc/testsuite/gcc.target/i386/avx512vl-i32gatherps-1.c
--- 44499,44526 ----
  6e5ed4c0fa8aca75b9711335a64f6de9  gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1dps-1.c
  0074178d72d8032efb700e05004cd863  gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1qpd-1.c
  1736cd4966fae5871c23abc4e174d3c3  gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1qps-1.c
  7a89da980943c10241c8fae92f56405f  gcc/testsuite/gcc.target/i386/avx512vbmi-vpermb-1.c
  cddb99c63e0e76bfa9a96f8ad9706542  gcc/testsuite/gcc.target/i386/avx512vbmi-vpermb-2.c
  22e777ee742eabb49ca9c4bf3f1ab383  gcc/testsuite/gcc.target/i386/avx512vbmi-vpermi2b-1.c
  c75f41a84b0ff9e1454ea517888cf42e  gcc/testsuite/gcc.target/i386/avx512vbmi-vpermi2b-2.c
! 0f36f580fc850a6976dbbe6eaa98f930  gcc/testsuite/gcc.target/i386/avx512vbmi-vpermt2b-1.c
  901b5f592de42b8641315e7a0e470c78  gcc/testsuite/gcc.target/i386/avx512vbmi-vpermt2b-2.c
  da943fec8529ab4219ae92fa7701f4f3  gcc/testsuite/gcc.target/i386/avx512vbmi-vpmultishiftqb-1.c
  b3bb92860a7a7725c03afa6bd022047f  gcc/testsuite/gcc.target/i386/avx512vbmi-vpmultishiftqb-2.c
  00c640a9ee145099cd26543b8b9bfcff  gcc/testsuite/gcc.target/i386/avx512vl-abs-copysign-1.c
  d2d79308516c8d8c17653303db1b5237  gcc/testsuite/gcc.target/i386/avx512vl-abs-copysign-2.c
! 84a6c4a5cbbf76f5118a4fa4d8e45dbf  gcc/testsuite/gcc.target/i386/avx512vl-aesdec-2.c
! 129620708e0fa1fa561640517d3aa739  gcc/testsuite/gcc.target/i386/avx512vl-aesdeclast-2.c
! 6008916ddaf448e4936848dbe5fe3696  gcc/testsuite/gcc.target/i386/avx512vl-aesenc-2.c
! c4bc57ffbca84a4901db479da843cf3c  gcc/testsuite/gcc.target/i386/avx512vl-aesenclast-2.c
! 99ab8f6b1890ccfcd14f1ea1cc6ca1c8  gcc/testsuite/gcc.target/i386/avx512vl-check.h
  0617dd4b8fef3764392d3723a75e2c8b  gcc/testsuite/gcc.target/i386/avx512vl-concatv2di-1.c
  aa1c65ae5d415bc961f9a1df5e0e7664  gcc/testsuite/gcc.target/i386/avx512vl-concatv2si-1.c
  cfe2aa1be3273634b71c46e44025ff10  gcc/testsuite/gcc.target/i386/avx512vl-concatv4si-1.c
  ea195c3170f173d6bcfe01f2e0c920c9  gcc/testsuite/gcc.target/i386/avx512vl-gather-1.c
+ f5368477837974d507cb99fffa8792da  gcc/testsuite/gcc.target/i386/avx512vl-gf2p8affineinvqb-2.c
+ 48364b4980af8d438792151a5023780d  gcc/testsuite/gcc.target/i386/avx512vl-gf2p8affineqb-2.c
+ 4f1c68b7ad9f9ac7df2b6017d024aa9a  gcc/testsuite/gcc.target/i386/avx512vl-gf2p8mulb-2.c
  fb07cc6b49d422bb45b0417748ff18ec  gcc/testsuite/gcc.target/i386/avx512vl-i32gatherd-1.c
  32d6d350ff163ad269b5331a6e8118e6  gcc/testsuite/gcc.target/i386/avx512vl-i32gatherpd-1.c
  eeecd58c1d89a0738e8f93fc67e5415f  gcc/testsuite/gcc.target/i386/avx512vl-i32gatherps-1.c
*************** de16d3536da23cd8a5f1fd84c3f22c4c  gcc/te
*** 41996,42005 ****
--- 44539,44551 ----
  cd96f3da4c2192b767b58d01e5f08cd4  gcc/testsuite/gcc.target/i386/avx512vl-i64scatterq-1.c
  45bbb91ea6f62986057afc4426fd06da  gcc/testsuite/gcc.target/i386/avx512vl-logic-1.c
  6b1fbd422db0115eef17bf3d36005958  gcc/testsuite/gcc.target/i386/avx512vl-logic-2.c
+ eb02bee85b6d8e384aafc73621985f26  gcc/testsuite/gcc.target/i386/avx512vl-no-vmovdqu16.c
+ 52669ea3e0b55d1808b06f104c8fb89d  gcc/testsuite/gcc.target/i386/avx512vl-no-vmovdqu8.c
  5eaf41121795442d2f0736d687d1f1e5  gcc/testsuite/gcc.target/i386/avx512vl-pack-1.c
  994c768ea6f011cb5852de30a104bd2e  gcc/testsuite/gcc.target/i386/avx512vl-pack-2.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
  a7e85788730f7acc7e5174c636d29676  gcc/testsuite/gcc.target/i386/avx512vl-vaddpd-1.c
  2b0c748a58e54ffa4102710cc467b33b  gcc/testsuite/gcc.target/i386/avx512vl-vaddpd-2.c
  df4c1c2e223dab18c858a16ca0d5bb83  gcc/testsuite/gcc.target/i386/avx512vl-vaddps-1.c
*************** c5f94f0615d332bb3fe7b5fc5fb4100c  gcc/te
*** 42184,42189 ****
--- 44730,44736 ----
  1a4569cb850e32770b5b09da0417def5  gcc/testsuite/gcc.target/i386/avx512vl-vmulpd-2.c
  be58b3f2ec2718d989375032ffedad2c  gcc/testsuite/gcc.target/i386/avx512vl-vmulps-1.c
  595e9592cd7cff288df4a59b12e31ac9  gcc/testsuite/gcc.target/i386/avx512vl-vmulps-2.c
+ f3ec96212c1b982051c7dbc4b035bac6  gcc/testsuite/gcc.target/i386/avx512vl-vnni-1.c
  e3b1db56db997c4386d4d3340096cadb  gcc/testsuite/gcc.target/i386/avx512vl-vorpd-2.c
  89160e36f2b3e90c8cfc5090ac86b4a9  gcc/testsuite/gcc.target/i386/avx512vl-vorps-2.c
  860df7d9320350c7eae8e7551b13dc1b  gcc/testsuite/gcc.target/i386/avx512vl-vpabsb-2.c
*************** f86a75cd8685bc3be3da663740abfbe2  gcc/te
*** 42236,42241 ****
--- 44783,44789 ----
  23bf1291f1c8fa655e3bb03356720149  gcc/testsuite/gcc.target/i386/avx512vl-vpbroadcastq-1.c
  f7dc4ecda884ea919f5f5e92f42a2423  gcc/testsuite/gcc.target/i386/avx512vl-vpbroadcastq-2.c
  0a6110618dbaf708dc79f526123252e6  gcc/testsuite/gcc.target/i386/avx512vl-vpbroadcastw-2.c
+ 7e0ba9caa8cba434685a420480b2e766  gcc/testsuite/gcc.target/i386/avx512vl-vpclmulqdq-2.c
  26d001984e4d8897c20587e5d666400b  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpb-2.c
  29e079027c8ff98f7a0ebb9681231665  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpd-1.c
  0bc34b4a04332da118d323d0c85c1e02  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpd-2.c
*************** e6ee29155464ba4f854e36436c73e16b  gcc/te
*** 42304,42317 ****
  0421f91a556804cea02c315ea567ddc6  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpuq-2.c
  f58201ac16ad74264db1d9335b90a003  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpuw-2.c
  3b93b5708b6a5857882fe8d951d1ac11  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpw-2.c
  fad6dc416073968b83030debf528dee6  gcc/testsuite/gcc.target/i386/avx512vl-vpcompressd-1.c
  381312b05c40ff011dea9c4dadc79c39  gcc/testsuite/gcc.target/i386/avx512vl-vpcompressd-2.c
  75c4453c615ff0f774f7ac2dfa0dd511  gcc/testsuite/gcc.target/i386/avx512vl-vpcompressq-1.c
  9f94af48b44ec189c8df7018063c2812  gcc/testsuite/gcc.target/i386/avx512vl-vpcompressq-2.c
  1dd51a1fcd20c49d0f062301e4b92963  gcc/testsuite/gcc.target/i386/avx512vl-vpconflictd-1.c
  49877147c87fe283d931254425e464a6  gcc/testsuite/gcc.target/i386/avx512vl-vpconflictq-1.c
  6f961bf650fb20355b4fd6a9abb73b8d  gcc/testsuite/gcc.target/i386/avx512vl-vpermb-2.c
! 2e520b9d59f1bd65c0048215c29b15b3  gcc/testsuite/gcc.target/i386/avx512vl-vpermd-1.c
  7715b8a77d3548989cd85d97de9d6dac  gcc/testsuite/gcc.target/i386/avx512vl-vpermd-2.c
  488d864c45366528d5712cdd884fa7b2  gcc/testsuite/gcc.target/i386/avx512vl-vpermi2b-2.c
  c0287d4b84678b137a175a70a148f434  gcc/testsuite/gcc.target/i386/avx512vl-vpermi2d-1.c
--- 44852,44873 ----
  0421f91a556804cea02c315ea567ddc6  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpuq-2.c
  f58201ac16ad74264db1d9335b90a003  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpuw-2.c
  3b93b5708b6a5857882fe8d951d1ac11  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpw-2.c
+ 6ce48c94a513b552d1b96116cfb844aa  gcc/testsuite/gcc.target/i386/avx512vl-vpcompressb-1.c
+ 7c49b8a49de5164e07065965f8e780f7  gcc/testsuite/gcc.target/i386/avx512vl-vpcompressb-2.c
  fad6dc416073968b83030debf528dee6  gcc/testsuite/gcc.target/i386/avx512vl-vpcompressd-1.c
  381312b05c40ff011dea9c4dadc79c39  gcc/testsuite/gcc.target/i386/avx512vl-vpcompressd-2.c
  75c4453c615ff0f774f7ac2dfa0dd511  gcc/testsuite/gcc.target/i386/avx512vl-vpcompressq-1.c
  9f94af48b44ec189c8df7018063c2812  gcc/testsuite/gcc.target/i386/avx512vl-vpcompressq-2.c
+ aa31284688d2c92e92f7431c173b5e31  gcc/testsuite/gcc.target/i386/avx512vl-vpcompressw-1.c
+ 35a07708661ec67a03ca5f28a19fc2b1  gcc/testsuite/gcc.target/i386/avx512vl-vpcompressw-2.c
  1dd51a1fcd20c49d0f062301e4b92963  gcc/testsuite/gcc.target/i386/avx512vl-vpconflictd-1.c
  49877147c87fe283d931254425e464a6  gcc/testsuite/gcc.target/i386/avx512vl-vpconflictq-1.c
+ 23e5e35b9153c13c9306578c1182292c  gcc/testsuite/gcc.target/i386/avx512vl-vpdpbusd-2.c
+ c3d00fcb246312364e422deb0042fb56  gcc/testsuite/gcc.target/i386/avx512vl-vpdpbusds-2.c
+ 60db5653c6175add618388b1c86ea54e  gcc/testsuite/gcc.target/i386/avx512vl-vpdpwssd-2.c
+ d04db226b6cc2f23e315719df9f3d4fc  gcc/testsuite/gcc.target/i386/avx512vl-vpdpwssds-2.c
  6f961bf650fb20355b4fd6a9abb73b8d  gcc/testsuite/gcc.target/i386/avx512vl-vpermb-2.c
! 391edbb140a8abff15d425bbc449ea39  gcc/testsuite/gcc.target/i386/avx512vl-vpermd-1.c
  7715b8a77d3548989cd85d97de9d6dac  gcc/testsuite/gcc.target/i386/avx512vl-vpermd-2.c
  488d864c45366528d5712cdd884fa7b2  gcc/testsuite/gcc.target/i386/avx512vl-vpermi2b-2.c
  c0287d4b84678b137a175a70a148f434  gcc/testsuite/gcc.target/i386/avx512vl-vpermi2d-1.c
*************** a004b3262185cb66999271674c8749bc  gcc/te
*** 42337,42361 ****
  e702cee988ad9fc897b2b5659547e4e8  gcc/testsuite/gcc.target/i386/avx512vl-vpermpdi-2.c
  50d3cee62f314f875d9d3f6fb03cf726  gcc/testsuite/gcc.target/i386/avx512vl-vpermps-1.c
  e028a282518a4f6a40ce731f1a436f7a  gcc/testsuite/gcc.target/i386/avx512vl-vpermps-2.c
! e9ffb9660280130024597f411800ff2c  gcc/testsuite/gcc.target/i386/avx512vl-vpermq-imm-1.c
  f5eac59fdbcb4d1a1788b5d5309795c7  gcc/testsuite/gcc.target/i386/avx512vl-vpermq-imm-2.c
! 0ca5976cb8712de3453265ddae548d16  gcc/testsuite/gcc.target/i386/avx512vl-vpermq-var-1.c
  ec8e0f36c6ffb30e7cea6a8dac61e991  gcc/testsuite/gcc.target/i386/avx512vl-vpermq-var-2.c
  d4361e728bf26a7d8a548009190cb751  gcc/testsuite/gcc.target/i386/avx512vl-vpermt2b-2.c
! 2d4643c86e84bd1f7a5418e6d8f669e6  gcc/testsuite/gcc.target/i386/avx512vl-vpermt2d-1.c
  c731125b56437bfaaf506e0456546f2c  gcc/testsuite/gcc.target/i386/avx512vl-vpermt2d-2.c
! a78b969c0bd477235ec0687cb45a7352  gcc/testsuite/gcc.target/i386/avx512vl-vpermt2pd-1.c
  88daefbd0c18ac9c2e39cd4f577a15ce  gcc/testsuite/gcc.target/i386/avx512vl-vpermt2pd-2.c
! cba2625dc77eb6cf60d0692b0fa1a0ac  gcc/testsuite/gcc.target/i386/avx512vl-vpermt2ps-1.c
  7a3ddcd54b2e6c41590189d133a670e4  gcc/testsuite/gcc.target/i386/avx512vl-vpermt2ps-2.c
! 377ddfe4861574c0cf10020af2181460  gcc/testsuite/gcc.target/i386/avx512vl-vpermt2q-1.c
  aff8112fc800f2ea591f176d875ad4e3  gcc/testsuite/gcc.target/i386/avx512vl-vpermt2q-2.c
  cf9b8f042e6da487a6f98b177d1fec51  gcc/testsuite/gcc.target/i386/avx512vl-vpermt2w-2.c
  195063913940aa7f7e13b4f1b2e73859  gcc/testsuite/gcc.target/i386/avx512vl-vpermw-2.c
  bf71e9dee33b1f4728c028b43467d85a  gcc/testsuite/gcc.target/i386/avx512vl-vpexpandd-1.c
  d6364e226f1ec48c58c33ed28c1d389f  gcc/testsuite/gcc.target/i386/avx512vl-vpexpandd-2.c
  95c1551ffee52ec67be93fdd3a97a0dc  gcc/testsuite/gcc.target/i386/avx512vl-vpexpandq-1.c
  50bde963f36c1218d670d4f1f5205496  gcc/testsuite/gcc.target/i386/avx512vl-vpexpandq-2.c
  7281c7605e8c964d961b0c0656ad5934  gcc/testsuite/gcc.target/i386/avx512vl-vpinsr-1.c
  27b47a6ea32352f6789579c47c9e772d  gcc/testsuite/gcc.target/i386/avx512vl-vplzcntd-1.c
  2ea0a252b352759b6def813b265bd4b2  gcc/testsuite/gcc.target/i386/avx512vl-vplzcntq-1.c
--- 44893,44921 ----
  e702cee988ad9fc897b2b5659547e4e8  gcc/testsuite/gcc.target/i386/avx512vl-vpermpdi-2.c
  50d3cee62f314f875d9d3f6fb03cf726  gcc/testsuite/gcc.target/i386/avx512vl-vpermps-1.c
  e028a282518a4f6a40ce731f1a436f7a  gcc/testsuite/gcc.target/i386/avx512vl-vpermps-2.c
! 08360635fb49596c05858509a2d2c713  gcc/testsuite/gcc.target/i386/avx512vl-vpermq-imm-1.c
  f5eac59fdbcb4d1a1788b5d5309795c7  gcc/testsuite/gcc.target/i386/avx512vl-vpermq-imm-2.c
! d1acb4c8d870192e89237724af894247  gcc/testsuite/gcc.target/i386/avx512vl-vpermq-var-1.c
  ec8e0f36c6ffb30e7cea6a8dac61e991  gcc/testsuite/gcc.target/i386/avx512vl-vpermq-var-2.c
  d4361e728bf26a7d8a548009190cb751  gcc/testsuite/gcc.target/i386/avx512vl-vpermt2b-2.c
! 2ee93b6786ba40212f4f58a4f09839ec  gcc/testsuite/gcc.target/i386/avx512vl-vpermt2d-1.c
  c731125b56437bfaaf506e0456546f2c  gcc/testsuite/gcc.target/i386/avx512vl-vpermt2d-2.c
! 76d02b016a81c5e91fffeb1079216c1e  gcc/testsuite/gcc.target/i386/avx512vl-vpermt2pd-1.c
  88daefbd0c18ac9c2e39cd4f577a15ce  gcc/testsuite/gcc.target/i386/avx512vl-vpermt2pd-2.c
! 12651ca31ab9a3ad4cf20b8e11acb511  gcc/testsuite/gcc.target/i386/avx512vl-vpermt2ps-1.c
  7a3ddcd54b2e6c41590189d133a670e4  gcc/testsuite/gcc.target/i386/avx512vl-vpermt2ps-2.c
! 86d9c27c7759d0c9e06a071e4155c9df  gcc/testsuite/gcc.target/i386/avx512vl-vpermt2q-1.c
  aff8112fc800f2ea591f176d875ad4e3  gcc/testsuite/gcc.target/i386/avx512vl-vpermt2q-2.c
  cf9b8f042e6da487a6f98b177d1fec51  gcc/testsuite/gcc.target/i386/avx512vl-vpermt2w-2.c
  195063913940aa7f7e13b4f1b2e73859  gcc/testsuite/gcc.target/i386/avx512vl-vpermw-2.c
+ 69daecef9a4226f7917925ae2a4369db  gcc/testsuite/gcc.target/i386/avx512vl-vpexpandb-1.c
+ b3aa0bfd1e2971727c9cf09d2ef99f65  gcc/testsuite/gcc.target/i386/avx512vl-vpexpandb-2.c
  bf71e9dee33b1f4728c028b43467d85a  gcc/testsuite/gcc.target/i386/avx512vl-vpexpandd-1.c
  d6364e226f1ec48c58c33ed28c1d389f  gcc/testsuite/gcc.target/i386/avx512vl-vpexpandd-2.c
  95c1551ffee52ec67be93fdd3a97a0dc  gcc/testsuite/gcc.target/i386/avx512vl-vpexpandq-1.c
  50bde963f36c1218d670d4f1f5205496  gcc/testsuite/gcc.target/i386/avx512vl-vpexpandq-2.c
+ 50f2ea29b794b6a2ca8f8d54539fc803  gcc/testsuite/gcc.target/i386/avx512vl-vpexpandw-1.c
+ e794c0f338e8fba4d223312885f6cd06  gcc/testsuite/gcc.target/i386/avx512vl-vpexpandw-2.c
  7281c7605e8c964d961b0c0656ad5934  gcc/testsuite/gcc.target/i386/avx512vl-vpinsr-1.c
  27b47a6ea32352f6789579c47c9e772d  gcc/testsuite/gcc.target/i386/avx512vl-vplzcntd-1.c
  2ea0a252b352759b6def813b265bd4b2  gcc/testsuite/gcc.target/i386/avx512vl-vplzcntq-1.c
*************** dba0ef049d0c455f2feca549def7640b  gcc/te
*** 42484,42489 ****
--- 45044,45064 ----
  3feb842749d409e8ec5256ddb0d02acb  gcc/testsuite/gcc.target/i386/avx512vl-vprorvq-1.c
  454f1eb968b834db54f87f3f5608bac6  gcc/testsuite/gcc.target/i386/avx512vl-vprorvq-2.c
  9f5ee1e4a885ecd64cd03a40682cca4e  gcc/testsuite/gcc.target/i386/avx512vl-vpsadbw-1.c
+ 5379e870b6c01e5644c4140f884f1398  gcc/testsuite/gcc.target/i386/avx512vl-vpshld-1.c
+ beaafd8511efcb8b216f78a48d83a376  gcc/testsuite/gcc.target/i386/avx512vl-vpshldd-2.c
+ 0352f6f3fafd2f9340d7561aa63c71e0  gcc/testsuite/gcc.target/i386/avx512vl-vpshldq-2.c
+ d9a995b7bf8c1dd2a12d96454b68c03a  gcc/testsuite/gcc.target/i386/avx512vl-vpshldv-1.c
+ 5340a9a31b1df2017c5a192c72dbcf73  gcc/testsuite/gcc.target/i386/avx512vl-vpshldvd-2.c
+ 3336b0f3e1b4a662d2952a1bb261bfa5  gcc/testsuite/gcc.target/i386/avx512vl-vpshldvq-2.c
+ a2d7adff0d956d2f3fb7e4c8e394a83e  gcc/testsuite/gcc.target/i386/avx512vl-vpshldvw-2.c
+ 7d27d8d330e6bc224c31e326f501a91a  gcc/testsuite/gcc.target/i386/avx512vl-vpshrd-1.c
+ 82b82975e175ac19b9eb345558902b6f  gcc/testsuite/gcc.target/i386/avx512vl-vpshrdd-2.c
+ 7881dde00e8ec21e53f9f3eabfd015a7  gcc/testsuite/gcc.target/i386/avx512vl-vpshrdq-2.c
+ 70d7d419fc202e7d7e75ba399f9effd6  gcc/testsuite/gcc.target/i386/avx512vl-vpshrdv-1.c
+ 746d48e4c19c37565af486b2bcff3e5b  gcc/testsuite/gcc.target/i386/avx512vl-vpshrdvd-2.c
+ a523fd50a37ff8c66b0716af76dddd54  gcc/testsuite/gcc.target/i386/avx512vl-vpshrdvq-2.c
+ 98037a23162692b776688c4d74e54167  gcc/testsuite/gcc.target/i386/avx512vl-vpshrdvw-2.c
+ 976d6b50314e36d4b4acc6ba1ce294eb  gcc/testsuite/gcc.target/i386/avx512vl-vpshrdw-2.c
  3270e24d628e81a6e683002f25edb28e  gcc/testsuite/gcc.target/i386/avx512vl-vpshufb-2.c
  0a4cd8a3780eec90e5147ad689d08f8d  gcc/testsuite/gcc.target/i386/avx512vl-vpshufb-3.c
  7c5dfa7c79d90ae66fac5e98971edebe  gcc/testsuite/gcc.target/i386/avx512vl-vpshufd-1.c
*************** a73d6bc3e2545038d8d1f68bbabd6987  gcc/te
*** 42630,42646 ****
  e95da9727388a59b0b2ebe9d1ee7d278  gcc/testsuite/gcc.target/i386/avx512vl-vunpcklps-2.c
  c292ba048c97e84fe04aa26984af35f1  gcc/testsuite/gcc.target/i386/avx512vl-vxorpd-2.c
  91c9b414d4e752a1bdfcd70fc683eb70  gcc/testsuite/gcc.target/i386/avx512vl-vxorps-2.c
! 8b2b14ee9bcafa9d524b1d0869675610  gcc/testsuite/gcc.target/i386/avx512vpopcntdq-check.h
! 0a9483a4e08545a8dd34d43929926531  gcc/testsuite/gcc.target/i386/avx512vpopcntdq-vpopcntd-1.c
! 9daa28c9f64a7fe4b105271196ee6acb  gcc/testsuite/gcc.target/i386/avx512vpopcntdq-vpopcntd.c
! 174a33beb2bcd38b1687ceec5e3bd30f  gcc/testsuite/gcc.target/i386/avx512vpopcntdq-vpopcntq-1.c
! 4df0a22378105e4f90fcd94b07abb342  gcc/testsuite/gcc.target/i386/avx512vpopcntdq-vpopcntq.c
  5da8354c1b0f081b6c64be550d4b604e  gcc/testsuite/gcc.target/i386/avxfp-1.c
  96da42bfb9b55e417c89693514ae20a6  gcc/testsuite/gcc.target/i386/avxfp-2.c
! f4295fdcec135256fd27698722388500  gcc/testsuite/gcc.target/i386/bitfield1.c
! cefd91f2ff8c6df108d0c431438153af  gcc/testsuite/gcc.target/i386/bitfield2.c
  f453ea0129a9fcdd06a9ec24524c1cb9  gcc/testsuite/gcc.target/i386/bitfield3.c
! fd52e8f8613233eadb73e0b6cd9a2387  gcc/testsuite/gcc.target/i386/bittest.c
  ea47ac6447cb9ac4b28b5aaad9274158  gcc/testsuite/gcc.target/i386/bmi-1.c
  26c6bd935da0376256720f101f3a197c  gcc/testsuite/gcc.target/i386/bmi-2.c
  fc48ef0f1e33b7021253ebb6122ab809  gcc/testsuite/gcc.target/i386/bmi-3.c
--- 45205,45223 ----
  e95da9727388a59b0b2ebe9d1ee7d278  gcc/testsuite/gcc.target/i386/avx512vl-vunpcklps-2.c
  c292ba048c97e84fe04aa26984af35f1  gcc/testsuite/gcc.target/i386/avx512vl-vxorpd-2.c
  91c9b414d4e752a1bdfcd70fc683eb70  gcc/testsuite/gcc.target/i386/avx512vl-vxorps-2.c
! e8b40df1b29caa7e7a5ad3533f175e18  gcc/testsuite/gcc.target/i386/avx512vlbw-pr82370.c
! f6b7d0b72d217c57bd0c953b18c2bb51  gcc/testsuite/gcc.target/i386/avx512vpopcntdq-vpopcntd-1.c
! 3f0e9e21f8daf76273838121c569322a  gcc/testsuite/gcc.target/i386/avx512vpopcntdq-vpopcntd.c
! 302654a622ec78f477d30938f066623b  gcc/testsuite/gcc.target/i386/avx512vpopcntdq-vpopcntq-1.c
! 88ad44c8930b8f8ccba5c508e25d4bfa  gcc/testsuite/gcc.target/i386/avx512vpopcntdq-vpopcntq.c
! fa2414b7f0b02ba46bfc1187b11b0120  gcc/testsuite/gcc.target/i386/avx512vpopcntdqvl-vpopcntd-1.c
! 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
! 6f9ec5819fa880d6a423fcc3fa67af2f  gcc/testsuite/gcc.target/i386/bitfield1.c
! 674019fac54e0c27947386666000a1c8  gcc/testsuite/gcc.target/i386/bitfield2.c
  f453ea0129a9fcdd06a9ec24524c1cb9  gcc/testsuite/gcc.target/i386/bitfield3.c
! 9a4090444bb3ef253261728d33aa87e3  gcc/testsuite/gcc.target/i386/bittest.c
  ea47ac6447cb9ac4b28b5aaad9274158  gcc/testsuite/gcc.target/i386/bmi-1.c
  26c6bd935da0376256720f101f3a197c  gcc/testsuite/gcc.target/i386/bmi-2.c
  fc48ef0f1e33b7021253ebb6122ab809  gcc/testsuite/gcc.target/i386/bmi-3.c
*************** e1078e35a7a7497108df50ca083222a3  gcc/te
*** 42649,42718 ****
  8894894c1ba9f24b192d80dff021404b  gcc/testsuite/gcc.target/i386/bmi-6.c
  d734ef6576ca43ccd690807e2770c4e7  gcc/testsuite/gcc.target/i386/bmi-andn-1.c
  bb19afb049882c8576684da2015d3e06  gcc/testsuite/gcc.target/i386/bmi-andn-1a.c
! d7aa4c9e5bc8a17d0ce8855c934e668c  gcc/testsuite/gcc.target/i386/bmi-andn-2.c
  2df35ed53f2f5a8ee6534092261f7c36  gcc/testsuite/gcc.target/i386/bmi-andn-2a.c
  06ddb8e886a72f49f5ae03d34ef9766a  gcc/testsuite/gcc.target/i386/bmi-bextr-1.c
  519fc1dbd9a690adb68f647190c125a9  gcc/testsuite/gcc.target/i386/bmi-bextr-1a.c
! 9caf25ffef27d09a188988bb7307fb43  gcc/testsuite/gcc.target/i386/bmi-bextr-2.c
  fed20c01e309fe356e55e3cc116c5e00  gcc/testsuite/gcc.target/i386/bmi-bextr-2a.c
  ab7b0415123a9edc18231c77b77ec43d  gcc/testsuite/gcc.target/i386/bmi-bextr-3.c
! 7bbc194ad63f76c004e1d3291797bdbc  gcc/testsuite/gcc.target/i386/bmi-bextr-4.c
  2a7588fb6217c21f1eb26a80ed528d60  gcc/testsuite/gcc.target/i386/bmi-bextr-5.c
  ffa9785a23a7512f9a4728172055dc2a  gcc/testsuite/gcc.target/i386/bmi-bextr-6.c
  6a7249c775a4e50d86020cb0fd1b0c5e  gcc/testsuite/gcc.target/i386/bmi-blsi-1.c
  bd48ce53571cdd48fe6e6784a994f7e7  gcc/testsuite/gcc.target/i386/bmi-blsi-1a.c
! 4e27601f29d1f40e91892c4a8371f943  gcc/testsuite/gcc.target/i386/bmi-blsi-2.c
  ef3b246b4ad8e9420621b038858d580d  gcc/testsuite/gcc.target/i386/bmi-blsi-2a.c
  1cfdec1143b3536bbeb28d57c647367b  gcc/testsuite/gcc.target/i386/bmi-blsmsk-1.c
  6a32376b313b472b80722e776b7e3027  gcc/testsuite/gcc.target/i386/bmi-blsmsk-1a.c
! 80ea88ea2f7fe70db23e4185d33f6d0f  gcc/testsuite/gcc.target/i386/bmi-blsmsk-2.c
  6659dc10889aa99445697eec174d0a9d  gcc/testsuite/gcc.target/i386/bmi-blsmsk-2a.c
  b407509e91ada069c88bb25df10261f2  gcc/testsuite/gcc.target/i386/bmi-blsr-1.c
  5204d307cd3ac968acc1ebabd5ef0591  gcc/testsuite/gcc.target/i386/bmi-blsr-1a.c
! 09b983461f4a95f288d114bd702f8b7c  gcc/testsuite/gcc.target/i386/bmi-blsr-2.c
  be3fee1889ad65677a041f24f858b1cb  gcc/testsuite/gcc.target/i386/bmi-blsr-2a.c
! 5003557800a8376c0e6f482962a176d5  gcc/testsuite/gcc.target/i386/bmi-check.h
  837bc321452d830cdca00be675a80d02  gcc/testsuite/gcc.target/i386/bmi-tzcnt-1.c
  bddf7c2fb14fca97f8ff604d99aa87eb  gcc/testsuite/gcc.target/i386/bmi-tzcnt-1a.c
! f696e5f06827c19304c1291071f8675b  gcc/testsuite/gcc.target/i386/bmi-tzcnt-2.c
  0c9052e28cad40006a0099159bd98468  gcc/testsuite/gcc.target/i386/bmi-tzcnt-2a.c
  9950789cb130fff96f198223bbe0f518  gcc/testsuite/gcc.target/i386/bmi2-bzhi-1.c
  87a78a1579ec2f676505dfa7093868ee  gcc/testsuite/gcc.target/i386/bmi2-bzhi-2.c
  98ba17d69eae510b494530253b399310  gcc/testsuite/gcc.target/i386/bmi2-bzhi-3.c
! a2c0c7d391a581fc83d61c68b6bd649b  gcc/testsuite/gcc.target/i386/bmi2-bzhi32-1.c
  3ead3d8eb2eb9104a7e22ff065727719  gcc/testsuite/gcc.target/i386/bmi2-bzhi32-1a.c
  abb025375057fca2257ef280333b1bc3  gcc/testsuite/gcc.target/i386/bmi2-bzhi64-1.c
  5721976eaa792ce05fbaeb5ab9b2db4c  gcc/testsuite/gcc.target/i386/bmi2-bzhi64-1a.c
! e2abf4289df9f3039af25cb788e7ad0e  gcc/testsuite/gcc.target/i386/bmi2-check.h
! 6bd11c67b019293dca329b59b4720bf8  gcc/testsuite/gcc.target/i386/bmi2-mulx32-1.c
! 376246afe888126f1e3152988a323a8f  gcc/testsuite/gcc.target/i386/bmi2-mulx32-1a.c
! 10723259437e207d276a63304c65d276  gcc/testsuite/gcc.target/i386/bmi2-mulx32-2.c
! aeee729af91a5aefd9453b0226a6d182  gcc/testsuite/gcc.target/i386/bmi2-mulx32-2a.c
  1e6fff508af22cae94b67e895cca01c6  gcc/testsuite/gcc.target/i386/bmi2-mulx64-1.c
  6a8477c68441e16791adc2b7b8a7c823  gcc/testsuite/gcc.target/i386/bmi2-mulx64-1a.c
  e3af81a0aa982477a73d2beb016e3ba6  gcc/testsuite/gcc.target/i386/bmi2-mulx64-2.c
  6fb664d62faea0794f1788c0f0f5ac1a  gcc/testsuite/gcc.target/i386/bmi2-mulx64-2a.c
  d3e9b4ac3d8a297a53ee9f60f3e9e442  gcc/testsuite/gcc.target/i386/bmi2-pdep-1.c
! c0c12783980ab1623ea2110e28bd2243  gcc/testsuite/gcc.target/i386/bmi2-pdep32-1.c
  d6e99dbeae40a9ee95de6769ac79155a  gcc/testsuite/gcc.target/i386/bmi2-pdep32-1a.c
  583ce5a2196d81fbcff0c81e6e38fc63  gcc/testsuite/gcc.target/i386/bmi2-pdep64-1.c
  633dfe56aa89e4ff6f70706231f8659c  gcc/testsuite/gcc.target/i386/bmi2-pdep64-1a.c
  8bb42fdc9b7d1a98c18dd8d5ed95f959  gcc/testsuite/gcc.target/i386/bmi2-pext-1.c
! cbee85611ae1b99eed26b05e88d18831  gcc/testsuite/gcc.target/i386/bmi2-pext32-1.c
  c7ce604b365a1dabeac828385fadac82  gcc/testsuite/gcc.target/i386/bmi2-pext32-1a.c
  07f0339fdff4b3fe5bfd2ef2568cf1ff  gcc/testsuite/gcc.target/i386/bmi2-pext64-1.c
  80e1b157bf4698a4c063a051d260de86  gcc/testsuite/gcc.target/i386/bmi2-pext64-1a.c
! ecb9366e8d9581a67a089e27dcbff0b3  gcc/testsuite/gcc.target/i386/bmi2-rorx32-1.c
  43e2ea585c6afa59c6fc24b1d5778b5f  gcc/testsuite/gcc.target/i386/bmi2-rorx32-1a.c
  715c6fdea5af863f17366b07b0976147  gcc/testsuite/gcc.target/i386/bmi2-rorx64-1.c
  4c47a02479365de2569360d8571abf2f  gcc/testsuite/gcc.target/i386/bmi2-rorx64-1a.c
! cf6498a4069736387f934d6fe46ba8cc  gcc/testsuite/gcc.target/i386/bmi2-sarx32-1.c
  8b84df8c8249d58d536902e607bdecd4  gcc/testsuite/gcc.target/i386/bmi2-sarx32-1a.c
  1c8bd73daf2e303b4c2246fb9e52a52f  gcc/testsuite/gcc.target/i386/bmi2-sarx64-1.c
  5330e563e96df468650a2b2965e0550a  gcc/testsuite/gcc.target/i386/bmi2-sarx64-1a.c
! 13cef6c67251edd25c4cebe2ae8322e1  gcc/testsuite/gcc.target/i386/bmi2-shlx32-1.c
  a6ed6fd2de0285c816081096a909bd63  gcc/testsuite/gcc.target/i386/bmi2-shlx32-1a.c
! 42f1abe8a043635a0a6ccacf3737324c  gcc/testsuite/gcc.target/i386/bmi2-shrx32-1.c
  0bc6ee5c5e35f937c948a6f5d285a820  gcc/testsuite/gcc.target/i386/bmi2-shrx32-1a.c
  5e7943e5d03d8d8fc860ac3c381a5fb9  gcc/testsuite/gcc.target/i386/bmi2-shrx64-1.c
  eb547e07967edeb618de2380bf43ff26  gcc/testsuite/gcc.target/i386/bmi2-shrx64-1a.c
--- 45226,45295 ----
  8894894c1ba9f24b192d80dff021404b  gcc/testsuite/gcc.target/i386/bmi-6.c
  d734ef6576ca43ccd690807e2770c4e7  gcc/testsuite/gcc.target/i386/bmi-andn-1.c
  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
  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
  fed20c01e309fe356e55e3cc116c5e00  gcc/testsuite/gcc.target/i386/bmi-bextr-2a.c
  ab7b0415123a9edc18231c77b77ec43d  gcc/testsuite/gcc.target/i386/bmi-bextr-3.c
! a19f7fd79c7bb6747507e495918fc7e2  gcc/testsuite/gcc.target/i386/bmi-bextr-4.c
  2a7588fb6217c21f1eb26a80ed528d60  gcc/testsuite/gcc.target/i386/bmi-bextr-5.c
  ffa9785a23a7512f9a4728172055dc2a  gcc/testsuite/gcc.target/i386/bmi-bextr-6.c
  6a7249c775a4e50d86020cb0fd1b0c5e  gcc/testsuite/gcc.target/i386/bmi-blsi-1.c
  bd48ce53571cdd48fe6e6784a994f7e7  gcc/testsuite/gcc.target/i386/bmi-blsi-1a.c
! 0a312204f20bf8f3e889d3a0ff6b7e1d  gcc/testsuite/gcc.target/i386/bmi-blsi-2.c
  ef3b246b4ad8e9420621b038858d580d  gcc/testsuite/gcc.target/i386/bmi-blsi-2a.c
  1cfdec1143b3536bbeb28d57c647367b  gcc/testsuite/gcc.target/i386/bmi-blsmsk-1.c
  6a32376b313b472b80722e776b7e3027  gcc/testsuite/gcc.target/i386/bmi-blsmsk-1a.c
! cae332ad178e48461437f82e4f2a1f4f  gcc/testsuite/gcc.target/i386/bmi-blsmsk-2.c
  6659dc10889aa99445697eec174d0a9d  gcc/testsuite/gcc.target/i386/bmi-blsmsk-2a.c
  b407509e91ada069c88bb25df10261f2  gcc/testsuite/gcc.target/i386/bmi-blsr-1.c
  5204d307cd3ac968acc1ebabd5ef0591  gcc/testsuite/gcc.target/i386/bmi-blsr-1a.c
! 89e5e49acc2dd5c296b6f32cc9af9e5e  gcc/testsuite/gcc.target/i386/bmi-blsr-2.c
  be3fee1889ad65677a041f24f858b1cb  gcc/testsuite/gcc.target/i386/bmi-blsr-2a.c
! 4b8229596d6eeaa03a4011846a02cd4a  gcc/testsuite/gcc.target/i386/bmi-check.h
  837bc321452d830cdca00be675a80d02  gcc/testsuite/gcc.target/i386/bmi-tzcnt-1.c
  bddf7c2fb14fca97f8ff604d99aa87eb  gcc/testsuite/gcc.target/i386/bmi-tzcnt-1a.c
! d3a83e902d535bfb6c532e16d5b3622e  gcc/testsuite/gcc.target/i386/bmi-tzcnt-2.c
  0c9052e28cad40006a0099159bd98468  gcc/testsuite/gcc.target/i386/bmi-tzcnt-2a.c
  9950789cb130fff96f198223bbe0f518  gcc/testsuite/gcc.target/i386/bmi2-bzhi-1.c
  87a78a1579ec2f676505dfa7093868ee  gcc/testsuite/gcc.target/i386/bmi2-bzhi-2.c
  98ba17d69eae510b494530253b399310  gcc/testsuite/gcc.target/i386/bmi2-bzhi-3.c
! 89f4f39d20121cad7841647faf25a3ba  gcc/testsuite/gcc.target/i386/bmi2-bzhi32-1.c
  3ead3d8eb2eb9104a7e22ff065727719  gcc/testsuite/gcc.target/i386/bmi2-bzhi32-1a.c
  abb025375057fca2257ef280333b1bc3  gcc/testsuite/gcc.target/i386/bmi2-bzhi64-1.c
  5721976eaa792ce05fbaeb5ab9b2db4c  gcc/testsuite/gcc.target/i386/bmi2-bzhi64-1a.c
! 826e88b635597298eb11da113d70a12b  gcc/testsuite/gcc.target/i386/bmi2-check.h
! 433d1b6fa6face73e6695b6d632786a2  gcc/testsuite/gcc.target/i386/bmi2-mulx32-1.c
! f8784bf576dfa8df4a3ba072a7d09abf  gcc/testsuite/gcc.target/i386/bmi2-mulx32-1a.c
! e3b178e2b7128baeddd8c5bd2a5fb17f  gcc/testsuite/gcc.target/i386/bmi2-mulx32-2.c
! 22bda42eb0f0ac12d535b62cd0c8c6dc  gcc/testsuite/gcc.target/i386/bmi2-mulx32-2a.c
  1e6fff508af22cae94b67e895cca01c6  gcc/testsuite/gcc.target/i386/bmi2-mulx64-1.c
  6a8477c68441e16791adc2b7b8a7c823  gcc/testsuite/gcc.target/i386/bmi2-mulx64-1a.c
  e3af81a0aa982477a73d2beb016e3ba6  gcc/testsuite/gcc.target/i386/bmi2-mulx64-2.c
  6fb664d62faea0794f1788c0f0f5ac1a  gcc/testsuite/gcc.target/i386/bmi2-mulx64-2a.c
  d3e9b4ac3d8a297a53ee9f60f3e9e442  gcc/testsuite/gcc.target/i386/bmi2-pdep-1.c
! 22971fc85a1a0cf1e836f43567539799  gcc/testsuite/gcc.target/i386/bmi2-pdep32-1.c
  d6e99dbeae40a9ee95de6769ac79155a  gcc/testsuite/gcc.target/i386/bmi2-pdep32-1a.c
  583ce5a2196d81fbcff0c81e6e38fc63  gcc/testsuite/gcc.target/i386/bmi2-pdep64-1.c
  633dfe56aa89e4ff6f70706231f8659c  gcc/testsuite/gcc.target/i386/bmi2-pdep64-1a.c
  8bb42fdc9b7d1a98c18dd8d5ed95f959  gcc/testsuite/gcc.target/i386/bmi2-pext-1.c
! eb6d296fc055f71af8d6286a76275c08  gcc/testsuite/gcc.target/i386/bmi2-pext32-1.c
  c7ce604b365a1dabeac828385fadac82  gcc/testsuite/gcc.target/i386/bmi2-pext32-1a.c
  07f0339fdff4b3fe5bfd2ef2568cf1ff  gcc/testsuite/gcc.target/i386/bmi2-pext64-1.c
  80e1b157bf4698a4c063a051d260de86  gcc/testsuite/gcc.target/i386/bmi2-pext64-1a.c
! b3c8283dbd8e5f9b716e300034584eb1  gcc/testsuite/gcc.target/i386/bmi2-rorx32-1.c
  43e2ea585c6afa59c6fc24b1d5778b5f  gcc/testsuite/gcc.target/i386/bmi2-rorx32-1a.c
  715c6fdea5af863f17366b07b0976147  gcc/testsuite/gcc.target/i386/bmi2-rorx64-1.c
  4c47a02479365de2569360d8571abf2f  gcc/testsuite/gcc.target/i386/bmi2-rorx64-1a.c
! b1760254e7c78a500b1d328842573ce2  gcc/testsuite/gcc.target/i386/bmi2-sarx32-1.c
  8b84df8c8249d58d536902e607bdecd4  gcc/testsuite/gcc.target/i386/bmi2-sarx32-1a.c
  1c8bd73daf2e303b4c2246fb9e52a52f  gcc/testsuite/gcc.target/i386/bmi2-sarx64-1.c
  5330e563e96df468650a2b2965e0550a  gcc/testsuite/gcc.target/i386/bmi2-sarx64-1a.c
! c3ec87750f31d6197d6fc7a83e01e24c  gcc/testsuite/gcc.target/i386/bmi2-shlx32-1.c
  a6ed6fd2de0285c816081096a909bd63  gcc/testsuite/gcc.target/i386/bmi2-shlx32-1a.c
! f1d1129436e4c6e815a34f83c8d5d149  gcc/testsuite/gcc.target/i386/bmi2-shrx32-1.c
  0bc6ee5c5e35f937c948a6f5d285a820  gcc/testsuite/gcc.target/i386/bmi2-shrx32-1a.c
  5e7943e5d03d8d8fc860ac3c381a5fb9  gcc/testsuite/gcc.target/i386/bmi2-shrx64-1.c
  eb547e07967edeb618de2380bf43ff26  gcc/testsuite/gcc.target/i386/bmi2-shrx64-1a.c
*************** a9b1dee6ec200856939709d32118cf4d  gcc/te
*** 42736,42744 ****
  04d6147486a507d49f5d165aac499b5d  gcc/testsuite/gcc.target/i386/builtin-copysign.c
  07c7b1b786ccb4b67484b353aa40d9c7  gcc/testsuite/gcc.target/i386/builtin-ucmp.c
  c8f91a97e3f4734a3595572bab26a3e7  gcc/testsuite/gcc.target/i386/builtin-unreachable.c
! ca53333fb98c69aa04d16fd2bf6b671c  gcc/testsuite/gcc.target/i386/builtin_target.c
  4278b9cf349a82b327a03ec6fb2f2b43  gcc/testsuite/gcc.target/i386/cadd.c
  371f18813dae88e704517a2270da2fa7  gcc/testsuite/gcc.target/i386/call-1.c
  3985d85760cf959bc3eddfd3b26016b9  gcc/testsuite/gcc.target/i386/chkp-always_inline.c
  a21a66b279b0f3c13d2cdaa11daf5d10  gcc/testsuite/gcc.target/i386/chkp-bndret.c
  5161c68e74b6e01ef0ef925b81edb747  gcc/testsuite/gcc.target/i386/chkp-builtins-1.c
--- 45313,45360 ----
  04d6147486a507d49f5d165aac499b5d  gcc/testsuite/gcc.target/i386/builtin-copysign.c
  07c7b1b786ccb4b67484b353aa40d9c7  gcc/testsuite/gcc.target/i386/builtin-ucmp.c
  c8f91a97e3f4734a3595572bab26a3e7  gcc/testsuite/gcc.target/i386/builtin-unreachable.c
! db26865bc7481305003b807947419b33  gcc/testsuite/gcc.target/i386/builtin_target.c
  4278b9cf349a82b327a03ec6fb2f2b43  gcc/testsuite/gcc.target/i386/cadd.c
  371f18813dae88e704517a2270da2fa7  gcc/testsuite/gcc.target/i386/call-1.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
+ 68c1d5c204ce9aa531d64cafb49a4120  gcc/testsuite/gcc.target/i386/cet-intrin-5.c
+ f7d1267a557b17e73c2a949f39e585dd  gcc/testsuite/gcc.target/i386/cet-intrin-6.c
+ cea11696ef142db69b8f42a4c09771ed  gcc/testsuite/gcc.target/i386/cet-intrin-7.c
+ 2d74e427612246a1b2e2098dead641b7  gcc/testsuite/gcc.target/i386/cet-intrin-8.c
+ aa9e41e03948a0c6132e24cb59365a25  gcc/testsuite/gcc.target/i386/cet-intrin-9.c
+ a4410c640e49d7c3d27ec7afdf0d190e  gcc/testsuite/gcc.target/i386/cet-label-2.c
+ 8d4bc4b13691198ea5a326facb061445  gcc/testsuite/gcc.target/i386/cet-label.c
+ daa73f4ed7cb2e2fc01999b87e1234ed  gcc/testsuite/gcc.target/i386/cet-notrack-1a.c
+ fff9edf460aa6cf22d4c62ce8fa4e869  gcc/testsuite/gcc.target/i386/cet-notrack-1b.c
+ 2e113cee01c6c8885b2528e679a87906  gcc/testsuite/gcc.target/i386/cet-notrack-2a.c
+ e2f92fc61b085e4497461eff83299ca3  gcc/testsuite/gcc.target/i386/cet-notrack-2b.c
+ 952021d619f2d303a2b0e49db7c8ff04  gcc/testsuite/gcc.target/i386/cet-notrack-3.c
+ 5c49d05a89027d834db9e8a1a3fcdb75  gcc/testsuite/gcc.target/i386/cet-notrack-4a.c
+ 23e59cfc2a2ff42cf3c52d39115e995a  gcc/testsuite/gcc.target/i386/cet-notrack-4b.c
+ b1ee419bd7c9ff903b2b13c165490544  gcc/testsuite/gcc.target/i386/cet-notrack-5a.c
+ 213f3220e27f73cd096deee29bfe795a  gcc/testsuite/gcc.target/i386/cet-notrack-5b.c
+ 6cc33f7183c2ffe0f20e2fa470b4e950  gcc/testsuite/gcc.target/i386/cet-notrack-6a.c
+ 5f1bfc9956dcdc071cf8a8b695cbc0f1  gcc/testsuite/gcc.target/i386/cet-notrack-6b.c
+ f46cdc03f831aa997cbc8fa392d93334  gcc/testsuite/gcc.target/i386/cet-notrack-7.c
+ dc077e746c37527c5597c2b179544c74  gcc/testsuite/gcc.target/i386/cet-notrack-icf-1.c
+ 335fe180a1ba4ffa720a6e9ebf12b263  gcc/testsuite/gcc.target/i386/cet-notrack-icf-2.c
+ e4c654c0e4db35ad4940163e3ba44ecf  gcc/testsuite/gcc.target/i386/cet-notrack-icf-3.c
+ abba25302d24634f3ddae070ea2fb58d  gcc/testsuite/gcc.target/i386/cet-notrack-icf-4.c
+ b8e1eda2f252f129a90e54617fa39500  gcc/testsuite/gcc.target/i386/cet-property-1.c
+ f03688bba56369ec92f324db56599b3d  gcc/testsuite/gcc.target/i386/cet-property-2.c
+ a4dff4664eff59fc1d1d6ac49e52a6b6  gcc/testsuite/gcc.target/i386/cet-rdssp-1.c
+ 30e87cc5b4f9a47bb19c047aa978eede  gcc/testsuite/gcc.target/i386/cet-sjlj-1.c
+ 6a05c49ca46aa3dbc8ba88fa2f003a28  gcc/testsuite/gcc.target/i386/cet-sjlj-2.c
+ 935dcef0d444f5fc49aab71a46277269  gcc/testsuite/gcc.target/i386/cet-sjlj-3.c
+ 468e8aa10ace6b5e1389e5c01cbdb8f2  gcc/testsuite/gcc.target/i386/cet-sjlj-4.c
+ 931d0e144a7b6f768acd12086fbb8cfb  gcc/testsuite/gcc.target/i386/cet-sjlj-5.c
+ fe18bceea056fa7c5ce2c0eb9fd0f2ce  gcc/testsuite/gcc.target/i386/cet-sjlj-6a.c
+ f057c0e2b7799367849b89b799a5ec98  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
  3985d85760cf959bc3eddfd3b26016b9  gcc/testsuite/gcc.target/i386/chkp-always_inline.c
  a21a66b279b0f3c13d2cdaa11daf5d10  gcc/testsuite/gcc.target/i386/chkp-bndret.c
  5161c68e74b6e01ef0ef925b81edb747  gcc/testsuite/gcc.target/i386/chkp-builtins-1.c
*************** a21a66b279b0f3c13d2cdaa11daf5d10  gcc/te
*** 42746,42759 ****
  6759b3c07115329a393ec05ef7d92411  gcc/testsuite/gcc.target/i386/chkp-builtins-3.c
  2223d1517549bb6f2003494d857b6349  gcc/testsuite/gcc.target/i386/chkp-builtins-4.c
  e340c2d6f47b401165118ed98e047cef  gcc/testsuite/gcc.target/i386/chkp-const-check-1.c
! 4ae94ac5968136f88781110632cb913c  gcc/testsuite/gcc.target/i386/chkp-const-check-2.c
  068bac7a23e787c6fae2b41302380bbe  gcc/testsuite/gcc.target/i386/chkp-hidden-def.c
! 5ffe51fa59a20dfc164ebba47efd5fc4  gcc/testsuite/gcc.target/i386/chkp-label-address.c
  0e1fc3924639f98f288d3472b42e9385  gcc/testsuite/gcc.target/i386/chkp-lifetime-1.c
  b21bfc060667da4b4d08a36cb40798f8  gcc/testsuite/gcc.target/i386/chkp-narrow-bounds.c
  dc7a71be6e7e24ebb65df96d81e0e3e0  gcc/testsuite/gcc.target/i386/chkp-pr69044.c
  ee1ef9e808936ab68f085c5578f95671  gcc/testsuite/gcc.target/i386/chkp-remove-bndint-1.c
! a504647e803cbfed2637ebc24d209c8c  gcc/testsuite/gcc.target/i386/chkp-remove-bndint-2.c
  baeddcba0cf9b2e015b91bc23e3ef683  gcc/testsuite/gcc.target/i386/chkp-strchr.c
  e1069c37eafecc9c6af9ca6e27413708  gcc/testsuite/gcc.target/i386/chkp-strlen-1.c
  efe2dcd08a4c20d2d00afd662e7b751e  gcc/testsuite/gcc.target/i386/chkp-strlen-2.c
--- 45362,45375 ----
  6759b3c07115329a393ec05ef7d92411  gcc/testsuite/gcc.target/i386/chkp-builtins-3.c
  2223d1517549bb6f2003494d857b6349  gcc/testsuite/gcc.target/i386/chkp-builtins-4.c
  e340c2d6f47b401165118ed98e047cef  gcc/testsuite/gcc.target/i386/chkp-const-check-1.c
! 915b8034ff09f8c27544379d31e2dcd8  gcc/testsuite/gcc.target/i386/chkp-const-check-2.c
  068bac7a23e787c6fae2b41302380bbe  gcc/testsuite/gcc.target/i386/chkp-hidden-def.c
! cad0033277cda5c4fadd787f41be5a69  gcc/testsuite/gcc.target/i386/chkp-label-address.c
  0e1fc3924639f98f288d3472b42e9385  gcc/testsuite/gcc.target/i386/chkp-lifetime-1.c
  b21bfc060667da4b4d08a36cb40798f8  gcc/testsuite/gcc.target/i386/chkp-narrow-bounds.c
  dc7a71be6e7e24ebb65df96d81e0e3e0  gcc/testsuite/gcc.target/i386/chkp-pr69044.c
  ee1ef9e808936ab68f085c5578f95671  gcc/testsuite/gcc.target/i386/chkp-remove-bndint-1.c
! ec41e48b06d3cdee565b81f00d82097f  gcc/testsuite/gcc.target/i386/chkp-remove-bndint-2.c
  baeddcba0cf9b2e015b91bc23e3ef683  gcc/testsuite/gcc.target/i386/chkp-strchr.c
  e1069c37eafecc9c6af9ca6e27413708  gcc/testsuite/gcc.target/i386/chkp-strlen-1.c
  efe2dcd08a4c20d2d00afd662e7b751e  gcc/testsuite/gcc.target/i386/chkp-strlen-2.c
*************** a93b0c6cbec3871016e3d56042c66d85  gcc/te
*** 42768,42773 ****
--- 45384,45390 ----
  4f4d86fc88cadcefbeffa4d78b22efe7  gcc/testsuite/gcc.target/i386/chkp-stropt-14.c
  eb1f5fb100c518c9796cf83cf9c89667  gcc/testsuite/gcc.target/i386/chkp-stropt-15.c
  cc51b7a5999132873dfcca50b0f195c5  gcc/testsuite/gcc.target/i386/chkp-stropt-16.c
+ 26127998e365b726c4e42b04868e9dc3  gcc/testsuite/gcc.target/i386/chkp-stropt-17.c
  a5093599d5247575b0ba356a0c4615df  gcc/testsuite/gcc.target/i386/chkp-stropt-2.c
  7217f41406d0c66ca1e0d76837510cb7  gcc/testsuite/gcc.target/i386/chkp-stropt-3.c
  aeb8917add26120f3ade7ee6a43d6586  gcc/testsuite/gcc.target/i386/chkp-stropt-4.c
*************** f79e1b7782293fd20dff7bc711017061  gcc/te
*** 42788,42794 ****
  6ad79381e3d28784a59b6568a64a4cf1  gcc/testsuite/gcc.target/i386/cmov4.c
  bcb4166cdef6b56e89b654dc4cb83a03  gcc/testsuite/gcc.target/i386/cmov5.c
  51cc94a54257c3dac176a77838614f58  gcc/testsuite/gcc.target/i386/cmov6.c
! ffa3a337391f7f9b0af2dcb140c755ae  gcc/testsuite/gcc.target/i386/cmov7.c
  f20d8e2e048a66edc93c5638ce3cd2d9  gcc/testsuite/gcc.target/i386/cmov8.c
  000f630353ad4e662a8123ff07c183c0  gcc/testsuite/gcc.target/i386/cmov9.c
  5e2242226bd3af93cef201caa25d8d86  gcc/testsuite/gcc.target/i386/cmpxchg16b-1.c
--- 45405,45411 ----
  6ad79381e3d28784a59b6568a64a4cf1  gcc/testsuite/gcc.target/i386/cmov4.c
  bcb4166cdef6b56e89b654dc4cb83a03  gcc/testsuite/gcc.target/i386/cmov5.c
  51cc94a54257c3dac176a77838614f58  gcc/testsuite/gcc.target/i386/cmov6.c
! 9f954feff3ae35b2879ea55901eae8a4  gcc/testsuite/gcc.target/i386/cmov7.c
  f20d8e2e048a66edc93c5638ce3cd2d9  gcc/testsuite/gcc.target/i386/cmov8.c
  000f630353ad4e662a8123ff07c183c0  gcc/testsuite/gcc.target/i386/cmov9.c
  5e2242226bd3af93cef201caa25d8d86  gcc/testsuite/gcc.target/i386/cmpxchg16b-1.c
*************** dcc5b76590328fd9f7c421fcb66d52d6  gcc/te
*** 42801,42807 ****
  f5b6283707f17b1db37120fd03d9ecf7  gcc/testsuite/gcc.target/i386/compress-float-387.c
  cbcaefb9dbd680dfef9e1236e2a43de1  gcc/testsuite/gcc.target/i386/compress-float-sse-pic.c
  5c5437c61e3cff49ed9ee564589092af  gcc/testsuite/gcc.target/i386/compress-float-sse.c
! ee12ed5de15bffa31df8069b62be55b7  gcc/testsuite/gcc.target/i386/conversion-2.c
  355c1b424b1f4037e410d13332614e20  gcc/testsuite/gcc.target/i386/conversion.c
  46758c775ccdb73df90a9e3cde676f5e  gcc/testsuite/gcc.target/i386/crc32-1.c
  d54f2d3757317775b86d2e38b987ecec  gcc/testsuite/gcc.target/i386/crc32-2.c
--- 45418,45424 ----
  f5b6283707f17b1db37120fd03d9ecf7  gcc/testsuite/gcc.target/i386/compress-float-387.c
  cbcaefb9dbd680dfef9e1236e2a43de1  gcc/testsuite/gcc.target/i386/compress-float-sse-pic.c
  5c5437c61e3cff49ed9ee564589092af  gcc/testsuite/gcc.target/i386/compress-float-sse.c
! e1be9a615bd653f1910c323be509006e  gcc/testsuite/gcc.target/i386/const-in-bss.c
  355c1b424b1f4037e410d13332614e20  gcc/testsuite/gcc.target/i386/conversion.c
  46758c775ccdb73df90a9e3cde676f5e  gcc/testsuite/gcc.target/i386/crc32-1.c
  d54f2d3757317775b86d2e38b987ecec  gcc/testsuite/gcc.target/i386/crc32-2.c
*************** de30da9f8215170a20bb4d88e630e8ff  gcc/te
*** 42809,42815 ****
  ce70c4a119d14c06b2fe42a33e116033  gcc/testsuite/gcc.target/i386/crc32-4.c
  1ec829505141734f1abf4d2eb0a16629  gcc/testsuite/gcc.target/i386/crc32-5.c
  c8a0091af04c84c4c994bf5df34e424b  gcc/testsuite/gcc.target/i386/cvt-1.c
! 58fd94cd5ec0af1baeb2e221c3acb8e4  gcc/testsuite/gcc.target/i386/darwin-fpmath.c
  bfbac75bbc2903bc9ce6d39c53d89c68  gcc/testsuite/gcc.target/i386/defines-1.c
  73d516febd7b11c39305fc45aeb62e82  gcc/testsuite/gcc.target/i386/defines-2.c
  2eecfa056ddb99114b8e80c41ffda735  gcc/testsuite/gcc.target/i386/divmod-1.c
--- 45426,45432 ----
  ce70c4a119d14c06b2fe42a33e116033  gcc/testsuite/gcc.target/i386/crc32-4.c
  1ec829505141734f1abf4d2eb0a16629  gcc/testsuite/gcc.target/i386/crc32-5.c
  c8a0091af04c84c4c994bf5df34e424b  gcc/testsuite/gcc.target/i386/cvt-1.c
! d2d0187aa51d4d382735be7c0cd27367  gcc/testsuite/gcc.target/i386/darwin-fpmath.c
  bfbac75bbc2903bc9ce6d39c53d89c68  gcc/testsuite/gcc.target/i386/defines-1.c
  73d516febd7b11c39305fc45aeb62e82  gcc/testsuite/gcc.target/i386/defines-2.c
  2eecfa056ddb99114b8e80c41ffda735  gcc/testsuite/gcc.target/i386/divmod-1.c
*************** c17dcb330b42bada168342242008b99c  gcc/te
*** 42827,42832 ****
--- 45444,45451 ----
  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
  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
*************** b9e834d41c948e584d3f1cd39c3a5959  gcc/te
*** 42838,42845 ****
  019f466ae9c955f33a105efa418493cf  gcc/testsuite/gcc.target/i386/fabsneg-1.c
  c8661d46af4e71184c4904ae6ab3be9b  gcc/testsuite/gcc.target/i386/fastcall-1.c
  dbf3cc9b53b5e2d78a16330cbb9137e5  gcc/testsuite/gcc.target/i386/fastcall-sseregparm.c
! ba226e9b8c6e56794bbc8f0d614ee8c6  gcc/testsuite/gcc.target/i386/fentry-override.c
! bbacb95596e47b591cf20fa7455050ab  gcc/testsuite/gcc.target/i386/fentry.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
--- 45457,45464 ----
  019f466ae9c955f33a105efa418493cf  gcc/testsuite/gcc.target/i386/fabsneg-1.c
  c8661d46af4e71184c4904ae6ab3be9b  gcc/testsuite/gcc.target/i386/fastcall-1.c
  dbf3cc9b53b5e2d78a16330cbb9137e5  gcc/testsuite/gcc.target/i386/fastcall-sseregparm.c
! 3f07a7644d3e7ab8f6d06af6d6444eb1  gcc/testsuite/gcc.target/i386/fentry-override.c
! f291a14dc86779a185b9d9fb8a9b27e3  gcc/testsuite/gcc.target/i386/fentry.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
*************** e92fdec416f1fffea62b5521bede2f6d  gcc/te
*** 42919,42924 ****
--- 45538,45546 ----
  bc23d02ee3eec2758045f35d85c64808  gcc/testsuite/gcc.target/i386/fma_run_float_results_4.h
  639d6d00f318ac6a27eea7f5d73e1aa7  gcc/testsuite/gcc.target/i386/fma_run_float_results_5.h
  a8f61a3e9626bdd65b4e124dbc719d3e  gcc/testsuite/gcc.target/i386/fma_run_float_results_6.h
+ 304b0b76a9b34898928cb8cc565ca031  gcc/testsuite/gcc.target/i386/force-indirect-call-1.c
+ 884e0a311d4a5a7ad8dd114110303202  gcc/testsuite/gcc.target/i386/force-indirect-call-2.c
+ 43fed2ad7f6111a8568f635af1144012  gcc/testsuite/gcc.target/i386/force-indirect-call-3.c
  0ac4b5b371eef2749df48c4dfac85dec  gcc/testsuite/gcc.target/i386/fpcvt-1.c
  41b53063e22afc0a435659c465424d74  gcc/testsuite/gcc.target/i386/fpcvt-2.c
  fc83f958b3df91c520e859127c479d26  gcc/testsuite/gcc.target/i386/fpcvt-3.c
*************** f2d2b9715eb7e6c1ec1310003a7a8d58  gcc/te
*** 42931,42937 ****
  08313964c91346f27c34e3c71ff43389  gcc/testsuite/gcc.target/i386/funcspec-3.c
  82f1dbf81fda1d6c665b6d40a422e983  gcc/testsuite/gcc.target/i386/funcspec-4.c
  7568c1249431aafb7f8e2610a1e4a35e  gcc/testsuite/gcc.target/i386/funcspec-5.c
! bb2e4a2d9494cb7c0124220a190caff5  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
  c5cbddeb1b01f35a7fa7f281fb2acdb4  gcc/testsuite/gcc.target/i386/funcspec-8.c
--- 45553,45559 ----
  08313964c91346f27c34e3c71ff43389  gcc/testsuite/gcc.target/i386/funcspec-3.c
  82f1dbf81fda1d6c665b6d40a422e983  gcc/testsuite/gcc.target/i386/funcspec-4.c
  7568c1249431aafb7f8e2610a1e4a35e  gcc/testsuite/gcc.target/i386/funcspec-5.c
! d21f379846343509bea073a20fab4286  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
  c5cbddeb1b01f35a7fa7f281fb2acdb4  gcc/testsuite/gcc.target/i386/funcspec-8.c
*************** cf8e5b5952add80cd6a0caff4e04e4f5  gcc/te
*** 42949,42954 ****
--- 45571,45580 ----
  8dce7f404f15cde29ba00ec88100cd5d  gcc/testsuite/gcc.target/i386/gcc-have-sync-compare-and-swap-3.c
  01ca67466d324ac9e2eacc1141b191c3  gcc/testsuite/gcc.target/i386/gcc-have-sync-compare-and-swap-4.c
  e568a5a5a42fe8f2689ee4853ca2b1f6  gcc/testsuite/gcc.target/i386/getround.c
+ a550f5d58c76f06756173ea568e8fb94  gcc/testsuite/gcc.target/i386/gfni-1.c
+ 2ba8ab8d9831519442c8791eef2ee67b  gcc/testsuite/gcc.target/i386/gfni-2.c
+ f0aea57bccd3254b56180992963b7853  gcc/testsuite/gcc.target/i386/gfni-3.c
+ 61c87801c022aae11e3718b8f1e6fc8e  gcc/testsuite/gcc.target/i386/gfni-4.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
*************** ebc315087303e52034dda4e281f500fd  gcc/te
*** 42969,42976 ****
  d95f56a3f95ba78c3fdb5f418f8d953a  gcc/testsuite/gcc.target/i386/hle-xchg-rel-1.c
  c937938a0a49e70d699ee5ef70d33cb0  gcc/testsuite/gcc.target/i386/hle-xor-acq-1.c
  7aef940035776cbf7ecabc540f63e33e  gcc/testsuite/gcc.target/i386/hle-xor-rel-1.c
! c1686f811990dfdc5e41d7bdf6d6aec1  gcc/testsuite/gcc.target/i386/i386.exp
! 3474cb2ceefc34c7edf31a21ff7e0ae3  gcc/testsuite/gcc.target/i386/iamcu/abi-iamcu.exp
  824179ec90e1e4fdb872aed133f8d523  gcc/testsuite/gcc.target/i386/iamcu/args.h
  75e691882a781a986cbf2b848eacc017  gcc/testsuite/gcc.target/i386/iamcu/asm-support.S
  a77c8e89ec538edb98eb4ac96da0db61  gcc/testsuite/gcc.target/i386/iamcu/defines.h
--- 45595,45602 ----
  d95f56a3f95ba78c3fdb5f418f8d953a  gcc/testsuite/gcc.target/i386/hle-xchg-rel-1.c
  c937938a0a49e70d699ee5ef70d33cb0  gcc/testsuite/gcc.target/i386/hle-xor-acq-1.c
  7aef940035776cbf7ecabc540f63e33e  gcc/testsuite/gcc.target/i386/hle-xor-rel-1.c
! 92fa25870ed2668e4dcbe18bde96f059  gcc/testsuite/gcc.target/i386/i386.exp
! cc16c751a5534e761643496d9f8bdbc8  gcc/testsuite/gcc.target/i386/iamcu/abi-iamcu.exp
  824179ec90e1e4fdb872aed133f8d523  gcc/testsuite/gcc.target/i386/iamcu/args.h
  75e691882a781a986cbf2b848eacc017  gcc/testsuite/gcc.target/i386/iamcu/asm-support.S
  a77c8e89ec538edb98eb4ac96da0db61  gcc/testsuite/gcc.target/i386/iamcu/defines.h
*************** b56cbb83f01d0feeec0ec874e60a703c  gcc/te
*** 43010,43054 ****
  cdd25f9aac1f47c227bf3e42b258efa9  gcc/testsuite/gcc.target/i386/incoming-7.c
  74e35cf742c4e2fe9ce50213ed289958  gcc/testsuite/gcc.target/i386/incoming-8.c
  9be1a58062ffa2d8454af884da1b9f81  gcc/testsuite/gcc.target/i386/incoming-9.c
! 03827a2c9780d33bb4db45891893647a  gcc/testsuite/gcc.target/i386/indirect-thunk-1.c
  20988adf9b08c4b293517a2c73863343  gcc/testsuite/gcc.target/i386/indirect-thunk-10.c
! 885fe8bc8b78c46d553ff7c466379c82  gcc/testsuite/gcc.target/i386/indirect-thunk-2.c
! 21e2b7df8300cb76b9018c098259deaa  gcc/testsuite/gcc.target/i386/indirect-thunk-3.c
! 33fb08984b3be497a1d2eb67b20d7821  gcc/testsuite/gcc.target/i386/indirect-thunk-4.c
! 57a08ef10015d22dd132d82e1cfd8591  gcc/testsuite/gcc.target/i386/indirect-thunk-5.c
! fbd73d360e72d55b4389997eee3a9ad6  gcc/testsuite/gcc.target/i386/indirect-thunk-6.c
! e6e69a8edb8e20c3784c2f82ab9ad9b7  gcc/testsuite/gcc.target/i386/indirect-thunk-7.c
  136c6b3bb1163a3077d4207bfc4e5275  gcc/testsuite/gcc.target/i386/indirect-thunk-8.c
  c6d529ddda0429e0c528b2de3c8384d4  gcc/testsuite/gcc.target/i386/indirect-thunk-9.c
! 373c98be1b17bda68d48f75c5d262748  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c
  b346e03904cb1d652c2c4820cca183ee  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-10.c
  4bdf208508a160ea7a3791b56b304575  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-11.c
! a587209ff1b92eaad7f636abeeb72660  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c
! fa84c0071555de176c8a83d1df04cd29  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c
! fa0a854dc2c4190e78c0e55bca9a1d19  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c
! 804bd46f4f3779cfdc76ab2fae269bce  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c
! c746655caa029f480bb12e9dc214b6ef  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c
! e50dd0ba47d814e6b0a0fbb2869a7b14  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c
  867bd0927104666fdf41c8c325a2553d  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-8.c
  f062bd94d2bcc6229905c541b481a03c  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-9.c
! dc83c9450064c7dda1e87339e30b0d43  gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-1.c
! 20f28b3a736c2b03960b4e41d0cd3369  gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-2.c
! b3b3bdc4e4e24c19e16c0c6c4db58f7c  gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-3.c
! 9190089f7729ddc47163d344a05e1c83  gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-4.c
! dd8256d3f87843ddd24cde617c8d3ba5  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c
! ea1264812baa47369ff7cc693094ff18  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c
! db1e96221b78c9edb04889433c4cfceb  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c
! 30c60bce395af473e6e5c2d4993983d1  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c
! c18cb8b6d05ccdaf5b32709c926d064d  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-5.c
! a4a76dccf77b61a7515f7140cb7b9285  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-6.c
! e506915b7dd184f2d562ceb7c6382b46  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c
! a371765837086c89059792db2b194819  gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c
! dcfba2869236846c712674c3c23e4cc0  gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c
! b229e26bfd55409bc698e4cd4d3cc905  gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c
! c57dd8cf50eefb5bd2083eb7834c9af2  gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c
! c521c3c6c64bd07588efc34613c8e39b  gcc/testsuite/gcc.target/i386/indirect-thunk-inline-5.c
! 7dde9a5f2bdd50ae13358562cde0c346  gcc/testsuite/gcc.target/i386/indirect-thunk-inline-6.c
! 3c404f2f6fc975c818cb49d89930fc71  gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c
  1a18d20db658bd8f06db72e826e24451  gcc/testsuite/gcc.target/i386/indirect-thunk-register-1.c
  2f7b88c05e6f84c135d8684048b1ddfb  gcc/testsuite/gcc.target/i386/indirect-thunk-register-2.c
  0f53eb2f8dd4745fc0d56597a3a5cc39  gcc/testsuite/gcc.target/i386/indirect-thunk-register-3.c
--- 45636,45690 ----
  cdd25f9aac1f47c227bf3e42b258efa9  gcc/testsuite/gcc.target/i386/incoming-7.c
  74e35cf742c4e2fe9ce50213ed289958  gcc/testsuite/gcc.target/i386/incoming-8.c
  9be1a58062ffa2d8454af884da1b9f81  gcc/testsuite/gcc.target/i386/incoming-9.c
! 05d3ff7fd6d107eff7cfa9af54aed600  gcc/testsuite/gcc.target/i386/indirect-thunk-1.c
  20988adf9b08c4b293517a2c73863343  gcc/testsuite/gcc.target/i386/indirect-thunk-10.c
! a7b1d57cf31d0eab2d7d39d8e1e4464d  gcc/testsuite/gcc.target/i386/indirect-thunk-11.c
! 932137e6ed9cc1dd3810fc7ce20c629a  gcc/testsuite/gcc.target/i386/indirect-thunk-12.c
! d5a10c340aca1e4c1b2116dc0bc19ebe  gcc/testsuite/gcc.target/i386/indirect-thunk-2.c
! 4d5fc6b525071b2c53d5f7bd50a1cd89  gcc/testsuite/gcc.target/i386/indirect-thunk-3.c
! fbd8e0dce417f40298be825ed78f88c9  gcc/testsuite/gcc.target/i386/indirect-thunk-4.c
! 76b5340f3d1cae758f7f24f209df6970  gcc/testsuite/gcc.target/i386/indirect-thunk-5.c
! 44ba2c34bc32936af532c39182517a5f  gcc/testsuite/gcc.target/i386/indirect-thunk-6.c
! 63f3f75fb9218c46a8907df2585e5a34  gcc/testsuite/gcc.target/i386/indirect-thunk-7.c
  136c6b3bb1163a3077d4207bfc4e5275  gcc/testsuite/gcc.target/i386/indirect-thunk-8.c
  c6d529ddda0429e0c528b2de3c8384d4  gcc/testsuite/gcc.target/i386/indirect-thunk-9.c
! e506d2eeeb5b8b6b43de5c106e80ef80  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c
  b346e03904cb1d652c2c4820cca183ee  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-10.c
  4bdf208508a160ea7a3791b56b304575  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-11.c
! 5e81f089db4d854be34315d7e483471e  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-12.c
! a4d4ac47a9c336b9947886236539baea  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-13.c
! 106f345e11b8b4cded15dbf3ffb2edb0  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-14.c
! a4d96121729449511a36dec6e52a2d54  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-15.c
! 87be5d0cddfe925ec07c32de7dd7dcac  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-16.c
! ea5b37cade05b968b2f5aae50077c1c3  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c
! ee3b180c37ee9f060fe5b24fbacc428f  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c
! e852a496ae80ad82a0595c6f008a2722  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c
! 3c36cf61aba8f95f05132704b4b0c8eb  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c
! 0bf52c88118e706a56766cfe59df0852  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c
! c1a69bca2e988ac9383792e0f01d065e  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c
  867bd0927104666fdf41c8c325a2553d  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-8.c
  f062bd94d2bcc6229905c541b481a03c  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-9.c
! 77b1a8e1b258b90e1edbf0d45372c0eb  gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-1.c
! d58705acef59a328f4fd1bbe1a065bac  gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-2.c
! 6b017ce0cbb85638db969dbc3bd5bf0e  gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-3.c
! 57fbd8dfbb47b45fbd1ce000c16c7a6c  gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-4.c
! 14cc4f9a9b2dd94edd821f84af94c611  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c
! 4a99e43607f0c6aa8988113aa56bacae  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-10.c
! 4a1f3c4792dd58316fcbf552deda210a  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c
! 1bbe5649136f8a47208ce67e71058493  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c
! 8995ae15651c704262997baa0032794a  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c
! d60595421b98710f0053736975cb92fb  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-5.c
! 159efa6bc07479836c1f52e007ec64f0  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-6.c
! b3b67e4893c9cef21a178bd6d24de60d  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c
! 99f3e5d8d0922ca800161322c831a20a  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-8.c
! 0485e0ab743074b88468ebcd125a49b8  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-9.c
! d908699f85e4c95b098f3d81dbba9a45  gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c
! 4b8df590855bc29c6f9a503d85024db8  gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c
! 2942c6699b3b2e99c37686f596473393  gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c
! 8c08ad924ba0e02e7ff6522ade53773b  gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c
! 22d3ec31148d7eb42f889f412e80b98e  gcc/testsuite/gcc.target/i386/indirect-thunk-inline-5.c
! 4bb39d2b0069f6a250bb165c0280899d  gcc/testsuite/gcc.target/i386/indirect-thunk-inline-6.c
! 097bfd363392d403f5385d77cbb64786  gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c
  1a18d20db658bd8f06db72e826e24451  gcc/testsuite/gcc.target/i386/indirect-thunk-register-1.c
  2f7b88c05e6f84c135d8684048b1ddfb  gcc/testsuite/gcc.target/i386/indirect-thunk-register-2.c
  0f53eb2f8dd4745fc0d56597a3a5cc39  gcc/testsuite/gcc.target/i386/indirect-thunk-register-3.c
*************** aaf9fa29e6ae7c08a17245ee0ed31402  gcc/te
*** 43081,43087 ****
  d78ff91a00ecfddfb7c90016444a4273  gcc/testsuite/gcc.target/i386/interrupt-387-err-1.c
  226648ece2d533412a88a1b182f94912  gcc/testsuite/gcc.target/i386/interrupt-387-err-2.c
  d4351c29098d7e1a0896dab49723502e  gcc/testsuite/gcc.target/i386/interrupt-4.c
! 75b6783d3095610a12c7e6835d86d3d0  gcc/testsuite/gcc.target/i386/interrupt-5.c
  26ad73b0dc774344fba940c524137e66  gcc/testsuite/gcc.target/i386/interrupt-6.c
  3d128da5cbe89ad88baf783402680c45  gcc/testsuite/gcc.target/i386/interrupt-7.c
  31f2838c853f3afae9c8caee5a594c4e  gcc/testsuite/gcc.target/i386/interrupt-8.c
--- 45717,45723 ----
  d78ff91a00ecfddfb7c90016444a4273  gcc/testsuite/gcc.target/i386/interrupt-387-err-1.c
  226648ece2d533412a88a1b182f94912  gcc/testsuite/gcc.target/i386/interrupt-387-err-2.c
  d4351c29098d7e1a0896dab49723502e  gcc/testsuite/gcc.target/i386/interrupt-4.c
! 84e919a811bf0126248d9ed6ec609a5f  gcc/testsuite/gcc.target/i386/interrupt-5.c
  26ad73b0dc774344fba940c524137e66  gcc/testsuite/gcc.target/i386/interrupt-6.c
  3d128da5cbe89ad88baf783402680c45  gcc/testsuite/gcc.target/i386/interrupt-7.c
  31f2838c853f3afae9c8caee5a594c4e  gcc/testsuite/gcc.target/i386/interrupt-8.c
*************** acfd195237a4ce2a0cc03304f4873e80  gcc/te
*** 43094,43100 ****
  0778faf992f94f476eefe9a2e011ef4f  gcc/testsuite/gcc.target/i386/interrupt-redzone-1.c
  feba796d65294c45050a01bfed78f695  gcc/testsuite/gcc.target/i386/interrupt-redzone-2.c
  ed2527142bbeaa4b7935d11f68f20123  gcc/testsuite/gcc.target/i386/interrupt-sibcall-1.c
! 853d05902c40aee84bc1778b31ef01af  gcc/testsuite/gcc.target/i386/interrupt-sibcall-2.c
  fe1a7c3c2cc52526aacb705e0a57abe5  gcc/testsuite/gcc.target/i386/interrupt-switch-abi.c
  62dc6ea9c67085cef14f9c4066d966dd  gcc/testsuite/gcc.target/i386/intrinsics_1.c
  7d1229a51e2e4498278dc9af2be5f4cb  gcc/testsuite/gcc.target/i386/intrinsics_2.c
--- 45730,45736 ----
  0778faf992f94f476eefe9a2e011ef4f  gcc/testsuite/gcc.target/i386/interrupt-redzone-1.c
  feba796d65294c45050a01bfed78f695  gcc/testsuite/gcc.target/i386/interrupt-redzone-2.c
  ed2527142bbeaa4b7935d11f68f20123  gcc/testsuite/gcc.target/i386/interrupt-sibcall-1.c
! c30422ca4b564f98ddf9f8b1c05235c1  gcc/testsuite/gcc.target/i386/interrupt-sibcall-2.c
  fe1a7c3c2cc52526aacb705e0a57abe5  gcc/testsuite/gcc.target/i386/interrupt-switch-abi.c
  62dc6ea9c67085cef14f9c4066d966dd  gcc/testsuite/gcc.target/i386/intrinsics_1.c
  7d1229a51e2e4498278dc9af2be5f4cb  gcc/testsuite/gcc.target/i386/intrinsics_2.c
*************** c598c1d2a127be1189b3dfe020919429  gcc/te
*** 43131,43148 ****
  35441e347bb826ad23a3351b9d27ab6e  gcc/testsuite/gcc.target/i386/l_fma_4.h
  a110be6b21b77f1aa00503c23330c0b7  gcc/testsuite/gcc.target/i386/l_fma_5.h
  eac1520d63168ec113d984cb604b8417  gcc/testsuite/gcc.target/i386/l_fma_6.h
! 0bf3d2f694f0453041f03f18ea836140  gcc/testsuite/gcc.target/i386/l_fma_double_1.c
! 403e1b750758ee502957b1468ae6ba40  gcc/testsuite/gcc.target/i386/l_fma_double_2.c
! c37a16822979f4b77e439cbd30c7fb60  gcc/testsuite/gcc.target/i386/l_fma_double_3.c
! 43492106d4660a7c4f656b3721f80c6a  gcc/testsuite/gcc.target/i386/l_fma_double_4.c
! b56bf722fb4f8bd82c01edf62b6b4bdb  gcc/testsuite/gcc.target/i386/l_fma_double_5.c
! f2c5f96a98fbdb1417d6dca2e891b785  gcc/testsuite/gcc.target/i386/l_fma_double_6.c
! d3a79b8ad564c936a85bab85071ecc77  gcc/testsuite/gcc.target/i386/l_fma_float_1.c
! bffd4cc6ee5f9290ca8cf07eb7375407  gcc/testsuite/gcc.target/i386/l_fma_float_2.c
! 757955d9ce6b73218b7fcdf65191c29f  gcc/testsuite/gcc.target/i386/l_fma_float_3.c
! 09cd79e76daee8b6431f3e8d30a92f0e  gcc/testsuite/gcc.target/i386/l_fma_float_4.c
! d51aa2378b9593143faa3b22513e76a8  gcc/testsuite/gcc.target/i386/l_fma_float_5.c
! 3cf34160c4c6609534e5ba000af55cb0  gcc/testsuite/gcc.target/i386/l_fma_float_6.c
  2ba947ad943c8a25bd6804f8b7dbd4ea  gcc/testsuite/gcc.target/i386/l_fma_main.h
  bc3bafc23926bd98c116f5db64518ac5  gcc/testsuite/gcc.target/i386/l_fma_run_double_1.c
  0aa07ff1659ac84aa05c4ae647131787  gcc/testsuite/gcc.target/i386/l_fma_run_double_2.c
--- 45767,45784 ----
  35441e347bb826ad23a3351b9d27ab6e  gcc/testsuite/gcc.target/i386/l_fma_4.h
  a110be6b21b77f1aa00503c23330c0b7  gcc/testsuite/gcc.target/i386/l_fma_5.h
  eac1520d63168ec113d984cb604b8417  gcc/testsuite/gcc.target/i386/l_fma_6.h
! 0cf8c37410ad34e6ae881cc44efa446f  gcc/testsuite/gcc.target/i386/l_fma_double_1.c
! cb9270551f9ddfd065020e385002aa1a  gcc/testsuite/gcc.target/i386/l_fma_double_2.c
! c135a6208857422c32794b9c62351f6a  gcc/testsuite/gcc.target/i386/l_fma_double_3.c
! 6b9dd503c7ad0b9b814334542b1d0f5c  gcc/testsuite/gcc.target/i386/l_fma_double_4.c
! 335d517235dc147253b96d8c4f0049aa  gcc/testsuite/gcc.target/i386/l_fma_double_5.c
! a77a3ccac1e8f0ebe0dee38e56a925f3  gcc/testsuite/gcc.target/i386/l_fma_double_6.c
! 5815db36c88a750cafa13bb312070faa  gcc/testsuite/gcc.target/i386/l_fma_float_1.c
! dab834653baa5e5778f1307112ee6b1a  gcc/testsuite/gcc.target/i386/l_fma_float_2.c
! fcc05c0789c0d8e2fe563d9534773eb4  gcc/testsuite/gcc.target/i386/l_fma_float_3.c
! 4a3b5764f8d9a6d93724005b51e04a06  gcc/testsuite/gcc.target/i386/l_fma_float_4.c
! 4eb3a67333a729d070ad37199ccfc274  gcc/testsuite/gcc.target/i386/l_fma_float_5.c
! fb726ad2e82f9bce924e8faef86ea29c  gcc/testsuite/gcc.target/i386/l_fma_float_6.c
  2ba947ad943c8a25bd6804f8b7dbd4ea  gcc/testsuite/gcc.target/i386/l_fma_main.h
  bc3bafc23926bd98c116f5db64518ac5  gcc/testsuite/gcc.target/i386/l_fma_run_double_1.c
  0aa07ff1659ac84aa05c4ae647131787  gcc/testsuite/gcc.target/i386/l_fma_run_double_2.c
*************** a697ff9e2f8fc0bffc90007a1118893e  gcc/te
*** 43214,43234 ****
  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
! ede6b97e0416ec153d70216290d59343  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
  e993892d6c4fa7eda7617a0b6857cd4b  gcc/testsuite/gcc.target/i386/math-torture/trunc.c
  740ec5817041798b2da186e7037a71c3  gcc/testsuite/gcc.target/i386/max-stack-align.c
! 93e5399c414b8e332693f4b3e4a38f01  gcc/testsuite/gcc.target/i386/mcount_pic.c
  cda0d89452347311cc45a79be2d8f0fc  gcc/testsuite/gcc.target/i386/memcpy-1.c
  6497cb2d22febb00a904f50025d863bd  gcc/testsuite/gcc.target/i386/memcpy-2.c
  536862ceddae932e3d7da830f0866d31  gcc/testsuite/gcc.target/i386/memcpy-3.c
! 410707f31f232fcc090c3b9edf6509de  gcc/testsuite/gcc.target/i386/memcpy-strategy-1.c
! 77bdb8cca8e868330213fec62f92dbbf  gcc/testsuite/gcc.target/i386/memcpy-strategy-2.c
  36eea93d2314b17dabcb2b0a81e809d9  gcc/testsuite/gcc.target/i386/memcpy-strategy-3.c
  6e857b4eb94b8707c380e73efcbc5a51  gcc/testsuite/gcc.target/i386/memcpy-strategy-4.c
! 3339e7064ffdc160acaf1274e183706d  gcc/testsuite/gcc.target/i386/memcpy-vector_loop-1.c
  c84ec8a2cd4608e33d447c561108ce97  gcc/testsuite/gcc.target/i386/memcpy-vector_loop-2.c
  40cce91585f47cde61390171cd489668  gcc/testsuite/gcc.target/i386/memset-1.c
  8dc0b20158a4bbdad650a8874321918c  gcc/testsuite/gcc.target/i386/memset-strategy-1.c
--- 45850,45870 ----
  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
! 47c669b2a94d028511475e2434dc4a3a  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
  e993892d6c4fa7eda7617a0b6857cd4b  gcc/testsuite/gcc.target/i386/math-torture/trunc.c
  740ec5817041798b2da186e7037a71c3  gcc/testsuite/gcc.target/i386/max-stack-align.c
! 6dbb540b9d490a151c607172d7ae43b6  gcc/testsuite/gcc.target/i386/mcount_pic.c
  cda0d89452347311cc45a79be2d8f0fc  gcc/testsuite/gcc.target/i386/memcpy-1.c
  6497cb2d22febb00a904f50025d863bd  gcc/testsuite/gcc.target/i386/memcpy-2.c
  536862ceddae932e3d7da830f0866d31  gcc/testsuite/gcc.target/i386/memcpy-3.c
! 39eae588cd264db47b4b4188c56710e7  gcc/testsuite/gcc.target/i386/memcpy-strategy-1.c
! 29f6565471ceb4dea82eb41bb79559df  gcc/testsuite/gcc.target/i386/memcpy-strategy-2.c
  36eea93d2314b17dabcb2b0a81e809d9  gcc/testsuite/gcc.target/i386/memcpy-strategy-3.c
  6e857b4eb94b8707c380e73efcbc5a51  gcc/testsuite/gcc.target/i386/memcpy-strategy-4.c
! c311ee7acf008e98e58f5984f29e567b  gcc/testsuite/gcc.target/i386/memcpy-vector_loop-1.c
  c84ec8a2cd4608e33d447c561108ce97  gcc/testsuite/gcc.target/i386/memcpy-vector_loop-2.c
  40cce91585f47cde61390171cd489668  gcc/testsuite/gcc.target/i386/memset-1.c
  8dc0b20158a4bbdad650a8874321918c  gcc/testsuite/gcc.target/i386/memset-strategy-1.c
*************** acfecf30891fca26ef446ceccb8bdac6  gcc/te
*** 43252,43262 ****
  0df5ef30c53dec7183c7eb19bdaa491b  gcc/testsuite/gcc.target/i386/monitor.c
  bceaa637e42b8eb896354cce94fad473  gcc/testsuite/gcc.target/i386/monitorx.c
  0da0edded160ecacdaaf3c0403ab6a77  gcc/testsuite/gcc.target/i386/movabs-1.c
! a6f8c88f5ffc21bacd41b8da9e685138  gcc/testsuite/gcc.target/i386/movbe-1.c
! 1853aba3c867620790b8ca4115d0e746  gcc/testsuite/gcc.target/i386/movbe-2.c
! 69f3ba663c409ad264dd4f5682f1df70  gcc/testsuite/gcc.target/i386/movbe-3.c
! 851dfea55195b29234cd6cbbc9f59ae2  gcc/testsuite/gcc.target/i386/movbe-4.c
  0d20bce1f8d326eae5b8360ae189013a  gcc/testsuite/gcc.target/i386/movdi-rex64.c
  d4c716e20ab6e64d6bb29cc63dd65677  gcc/testsuite/gcc.target/i386/movq-2.c
  d7e128da4dee8caf6cd8d400af12d230  gcc/testsuite/gcc.target/i386/movq.c
  347dca8d249a46ac2f5892d9ffdc0337  gcc/testsuite/gcc.target/i386/movsd.c
--- 45888,45900 ----
  0df5ef30c53dec7183c7eb19bdaa491b  gcc/testsuite/gcc.target/i386/monitor.c
  bceaa637e42b8eb896354cce94fad473  gcc/testsuite/gcc.target/i386/monitorx.c
  0da0edded160ecacdaaf3c0403ab6a77  gcc/testsuite/gcc.target/i386/movabs-1.c
! 83232953e49a166041d86dcb0f8c4856  gcc/testsuite/gcc.target/i386/movbe-1.c
! 8db9284b0281c732850da4be9d51bdff  gcc/testsuite/gcc.target/i386/movbe-2.c
! 387a4a83578a569a6f1612c7c2195820  gcc/testsuite/gcc.target/i386/movbe-3.c
! 0a053a606e100687da36b62dcfecc6d7  gcc/testsuite/gcc.target/i386/movbe-4.c
! e6c317c577cc6f419edc024b353613cf  gcc/testsuite/gcc.target/i386/movbe-5.c
  0d20bce1f8d326eae5b8360ae189013a  gcc/testsuite/gcc.target/i386/movdi-rex64.c
+ 24bf04c3867c573d0d2e26cdd8e9fca3  gcc/testsuite/gcc.target/i386/movdir-1.c
  d4c716e20ab6e64d6bb29cc63dd65677  gcc/testsuite/gcc.target/i386/movq-2.c
  d7e128da4dee8caf6cd8d400af12d230  gcc/testsuite/gcc.target/i386/movq.c
  347dca8d249a46ac2f5892d9ffdc0337  gcc/testsuite/gcc.target/i386/movsd.c
*************** e69d323b107c835fa1e0ac9c69aa52fa  gcc/te
*** 43358,43364 ****
  f23c23c89c42a3cffba93a12443b5038  gcc/testsuite/gcc.target/i386/mpx/field-addr-9-nov.c
  c3b216b603d44cdccc9b100153433347  gcc/testsuite/gcc.target/i386/mpx/field-addr-9-ubv.c
  5b648ee89d1b00911479241485f8d849  gcc/testsuite/gcc.target/i386/mpx/frame-address-1-nov.c
! af9d938e463c4bcfe6e30fbf03364857  gcc/testsuite/gcc.target/i386/mpx/hard-reg-1-nov.c
  6464e733b2ea3383bf72053daef991a8  gcc/testsuite/gcc.target/i386/mpx/if-stmt-1-lbv.c
  4941f6c0f3d9bdfd85fa7106edd9da70  gcc/testsuite/gcc.target/i386/mpx/if-stmt-1-nov.c
  c87f7559d308eb1be6f978ee108ed66e  gcc/testsuite/gcc.target/i386/mpx/if-stmt-1-ubv.c
--- 45996,46005 ----
  f23c23c89c42a3cffba93a12443b5038  gcc/testsuite/gcc.target/i386/mpx/field-addr-9-nov.c
  c3b216b603d44cdccc9b100153433347  gcc/testsuite/gcc.target/i386/mpx/field-addr-9-ubv.c
  5b648ee89d1b00911479241485f8d849  gcc/testsuite/gcc.target/i386/mpx/frame-address-1-nov.c
! c6d31cc53b01a08f70061e8e4324ccf9  gcc/testsuite/gcc.target/i386/mpx/hard-reg-1-nov.c
! 3f26323cec5665df7703b3fe1e54cb73  gcc/testsuite/gcc.target/i386/mpx/hard-reg-2-lbv.c
! 8606edd5e9adf4d15052dd290d5729d0  gcc/testsuite/gcc.target/i386/mpx/hard-reg-2-nov.c
! c780b4a6a31a9d3c17420f3f963a8e99  gcc/testsuite/gcc.target/i386/mpx/hard-reg-2-ubv.c
  6464e733b2ea3383bf72053daef991a8  gcc/testsuite/gcc.target/i386/mpx/if-stmt-1-lbv.c
  4941f6c0f3d9bdfd85fa7106edd9da70  gcc/testsuite/gcc.target/i386/mpx/if-stmt-1-nov.c
  c87f7559d308eb1be6f978ee108ed66e  gcc/testsuite/gcc.target/i386/mpx/if-stmt-1-ubv.c
*************** aa248a97cbe08f051083687e27e0719b  gcc/te
*** 43377,43383 ****
  f6e4b41ff7eaa14383f0972046922ac6  gcc/testsuite/gcc.target/i386/mpx/memmove-zero-length.c
  b9e59cef814432b25a6048356c04c019  gcc/testsuite/gcc.target/i386/mpx/mpx-check.h
  b3fbcaf22d92c0d9748de908a16f7777  gcc/testsuite/gcc.target/i386/mpx/mpx-os-support.h
! e7346395fc41a0ffcf4c51b6c8b8c2fe  gcc/testsuite/gcc.target/i386/mpx/mpx.exp
  8e193e782ff975f1d64cbfbc791099ef  gcc/testsuite/gcc.target/i386/mpx/nested-function-1-lbv.c
  a93e49fc7e31188d79f24edeec85af72  gcc/testsuite/gcc.target/i386/mpx/nested-function-1-nov.c
  76cb4f866f77d02810fb954992c3b2e8  gcc/testsuite/gcc.target/i386/mpx/nested-function-1-ubv.c
--- 46018,46024 ----
  f6e4b41ff7eaa14383f0972046922ac6  gcc/testsuite/gcc.target/i386/mpx/memmove-zero-length.c
  b9e59cef814432b25a6048356c04c019  gcc/testsuite/gcc.target/i386/mpx/mpx-check.h
  b3fbcaf22d92c0d9748de908a16f7777  gcc/testsuite/gcc.target/i386/mpx/mpx-os-support.h
! fea13787ece371319b8d65b4c772c394  gcc/testsuite/gcc.target/i386/mpx/mpx.exp
  8e193e782ff975f1d64cbfbc791099ef  gcc/testsuite/gcc.target/i386/mpx/nested-function-1-lbv.c
  a93e49fc7e31188d79f24edeec85af72  gcc/testsuite/gcc.target/i386/mpx/nested-function-1-nov.c
  76cb4f866f77d02810fb954992c3b2e8  gcc/testsuite/gcc.target/i386/mpx/nested-function-1-ubv.c
*************** b42926003718dfcca0f4f35a67b7db1f  gcc/te
*** 43396,43401 ****
--- 46037,46043 ----
  5c173c19ebef0d0a0e1cbd01d264b75d  gcc/testsuite/gcc.target/i386/mpx/pointer-arg-5-lbv.c
  0717344f26ad0093d8601041594c2cea  gcc/testsuite/gcc.target/i386/mpx/pointer-arg-5-nov.c
  f49cd1210a058ae88c52f596ddd368e4  gcc/testsuite/gcc.target/i386/mpx/pointer-arg-5-ubv.c
+ 7e6621b6ab9b46e253c6e9bff612e99d  gcc/testsuite/gcc.target/i386/mpx/pointer-diff-1.c
  7da69ceb4c93c8aa37c2e43d086ab4e1  gcc/testsuite/gcc.target/i386/mpx/pointer-store-1-lbv.c
  8e3e6bef3f701cf3c8f69dcb7b65c067  gcc/testsuite/gcc.target/i386/mpx/pointer-store-1-nov.c
  b8fe5cee75ba9cffd22f82ec1ef2cace  gcc/testsuite/gcc.target/i386/mpx/pointer-store-1-ubv.c
*************** dedcdece98d6722cf60573a8409aaa81  gcc/te
*** 43416,43421 ****
--- 46058,46065 ----
  544ff27307132b81f8b8df76ace65990  gcc/testsuite/gcc.target/i386/mpx/pr79633.c
  d637fa6066a7da620fed27559d7da1b7  gcc/testsuite/gcc.target/i386/mpx/pr79753.c
  e96704aac9ccfcbb20830047695ce956  gcc/testsuite/gcc.target/i386/mpx/pr79770.c
+ 1ef078c4aeea1e1432f65bde3abbd4a3  gcc/testsuite/gcc.target/i386/mpx/pr79987.c
+ 7f7515a3893f7ad3a2bb41f55a5e490d  gcc/testsuite/gcc.target/i386/mpx/pr79988.c
  cb8a04ee24250678af3e3e0db64ccfa6  gcc/testsuite/gcc.target/i386/mpx/realloc-1-lbv.c
  16d5e4ac393ac4db6f87f25b4aab5ba2  gcc/testsuite/gcc.target/i386/mpx/realloc-1-nov.c
  967cd8d609c7360939caec43d90b8813  gcc/testsuite/gcc.target/i386/mpx/realloc-1-ubv.c
*************** d6d818eb11675d7fc05a4a96a5d3b20f  gcc/te
*** 43564,43605 ****
  8eb0888c65213c6a136f005c9b089501  gcc/testsuite/gcc.target/i386/ms_hook_prologue.c
  0e6e9e397831921b702df0167f01b9d2  gcc/testsuite/gcc.target/i386/mul.c
  6214909c5cebe3099403b30910bbf1f6  gcc/testsuite/gcc.target/i386/mvc1.c
! dae973f85e3ae983619acee86f0f50f9  gcc/testsuite/gcc.target/i386/mvc2.c
! dd539fb3f545d1e1b1e1eec620537fe0  gcc/testsuite/gcc.target/i386/mvc3.c
  2315a31beafd265bd385fa4e2d037534  gcc/testsuite/gcc.target/i386/mvc4.c
! 52d865ff547af45a7c2aeead94e2dde7  gcc/testsuite/gcc.target/i386/mvc5.c
! 7cc6b0b7de4d22833a76a08b26290ad4  gcc/testsuite/gcc.target/i386/mvc6.c
! f22ea4607c2fb006c334cb36d08accba  gcc/testsuite/gcc.target/i386/mvc7.c
  e4d2dd951186c493cd025e4b5e976fa1  gcc/testsuite/gcc.target/i386/mvc8.c
! d0135fb9c155d933f970c1e813277fb0  gcc/testsuite/gcc.target/i386/mvc9.c
  a7f204e20c0df5dad30eac30c4a089ab  gcc/testsuite/gcc.target/i386/nest-1.c
! 1d6127fc3efe2f33f6e8e1851511e6a0  gcc/testsuite/gcc.target/i386/nop-mcount.c
  7554f6e1a30e3cc93f33dbad79fc2a68  gcc/testsuite/gcc.target/i386/noplt-1.c
  4db83aa123fc4bac669e5678c3fd01a8  gcc/testsuite/gcc.target/i386/noplt-2.c
  d71187a904234084fc7700bf4985493b  gcc/testsuite/gcc.target/i386/noplt-3.c
  a65bbca9b86c46807492d802fca8baad  gcc/testsuite/gcc.target/i386/noplt-4.c
  84ddf7309982a9ebeae364e8c9e0839c  gcc/testsuite/gcc.target/i386/noplt-gd-1.c
! cdede3c3af6999c0c475436bc2d93d0d  gcc/testsuite/gcc.target/i386/noplt-gd-2.c
  3fd2b999734183004edb097587e0d1a7  gcc/testsuite/gcc.target/i386/noplt-gd-3.c
  aa6d9d86a4583e5cb0865bd1ea62fcf2  gcc/testsuite/gcc.target/i386/noplt-ld-1.c
! f2bd920f7e34a5f6519393e7070ac041  gcc/testsuite/gcc.target/i386/noplt-ld-2.c
  d84c245c19907cbcb51ec1260f2f2e75  gcc/testsuite/gcc.target/i386/noplt-ld-3.c
  724ac6ecb21390d732dee529300ac27a  gcc/testsuite/gcc.target/i386/nrv1.c
  50b8bcd150bf9d9e5338438449a8f71f  gcc/testsuite/gcc.target/i386/opt-1.c
  d7a02dbcdc54a18a392397fb1ed438e2  gcc/testsuite/gcc.target/i386/opt-2.c
  768e6e106257ef723b64a10eb89e9811  gcc/testsuite/gcc.target/i386/ordcmp-1.c
! a577d17ee1627982338c612a0b36220f  gcc/testsuite/gcc.target/i386/pad-1.c
  f46921bc51d5adaf3a4d05fa6566cd7d  gcc/testsuite/gcc.target/i386/pad-10.c
! 6b43b4d4fe4c928c3c62a508b4896a67  gcc/testsuite/gcc.target/i386/pad-2.c
  8e2ffb4e1dd9f9ba09d4e1a64a46f244  gcc/testsuite/gcc.target/i386/pad-3.c
! f77b1116f12b8d591e9431eaa9a9fdc4  gcc/testsuite/gcc.target/i386/pad-4.c
  442e10317a940b98b0ac90c7fdbf9d75  gcc/testsuite/gcc.target/i386/pad-5a.c
! 9d2a1bb421affc5a8edf178ec442e4b0  gcc/testsuite/gcc.target/i386/pad-5b.c
  65d2234a8de3b65feb4498a7e4ca4ca9  gcc/testsuite/gcc.target/i386/pad-6a.c
! 41359cc6e7e07e89de53c100e8bf2e35  gcc/testsuite/gcc.target/i386/pad-6b.c
  3e9e83f645f7aa024256b04525374f4f  gcc/testsuite/gcc.target/i386/pad-7.c
! 25c1b249ada94c6156fd6feb4a2e57fe  gcc/testsuite/gcc.target/i386/pad-8.c
! d283c6a776c0e70655a251cec904a616  gcc/testsuite/gcc.target/i386/pad-9.c
  c3c9a0ed6ec90244da369421d6a9e1b6  gcc/testsuite/gcc.target/i386/parity-1.c
  c05a7c5c0900e1a07b169f7b0baa6463  gcc/testsuite/gcc.target/i386/parity-2.c
  f354844939fdb7c6c229607f1ff57287  gcc/testsuite/gcc.target/i386/pause-1.c
--- 46208,46256 ----
  8eb0888c65213c6a136f005c9b089501  gcc/testsuite/gcc.target/i386/ms_hook_prologue.c
  0e6e9e397831921b702df0167f01b9d2  gcc/testsuite/gcc.target/i386/mul.c
  6214909c5cebe3099403b30910bbf1f6  gcc/testsuite/gcc.target/i386/mvc1.c
! 98fd97ce23f7773af3c39c137882bd08  gcc/testsuite/gcc.target/i386/mvc10.c
! 6d3409829bf86a77e769e767e92d4f44  gcc/testsuite/gcc.target/i386/mvc11.c
! 021ba12a8743cd423bb59fa11f4fe79d  gcc/testsuite/gcc.target/i386/mvc12.c
! 564e05556bd7de96a3147d7330c78901  gcc/testsuite/gcc.target/i386/mvc2.c
! 782232d286d07a27565317d948fd0ca5  gcc/testsuite/gcc.target/i386/mvc3.c
  2315a31beafd265bd385fa4e2d037534  gcc/testsuite/gcc.target/i386/mvc4.c
! f1c5e85f0666bfee3b907279ee87147f  gcc/testsuite/gcc.target/i386/mvc5.c
! 3c42a6c268da49c39ff71a06b88da4d9  gcc/testsuite/gcc.target/i386/mvc6.c
! 426cbce4bef92ab8e069549db2ebb33b  gcc/testsuite/gcc.target/i386/mvc7.c
  e4d2dd951186c493cd025e4b5e976fa1  gcc/testsuite/gcc.target/i386/mvc8.c
! 7ae0694e7bb3605c7b05ed3e6ee19600  gcc/testsuite/gcc.target/i386/mvc9.c
! c07318ba51e031ad46735ee4cd43f8f3  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
! 7b15e9eda1cd8c4b4c51e95cb088135f  gcc/testsuite/gcc.target/i386/nop-mcount.c
  7554f6e1a30e3cc93f33dbad79fc2a68  gcc/testsuite/gcc.target/i386/noplt-1.c
  4db83aa123fc4bac669e5678c3fd01a8  gcc/testsuite/gcc.target/i386/noplt-2.c
  d71187a904234084fc7700bf4985493b  gcc/testsuite/gcc.target/i386/noplt-3.c
  a65bbca9b86c46807492d802fca8baad  gcc/testsuite/gcc.target/i386/noplt-4.c
  84ddf7309982a9ebeae364e8c9e0839c  gcc/testsuite/gcc.target/i386/noplt-gd-1.c
! 4e963de7e8d025b829efae993924f607  gcc/testsuite/gcc.target/i386/noplt-gd-2.c
  3fd2b999734183004edb097587e0d1a7  gcc/testsuite/gcc.target/i386/noplt-gd-3.c
  aa6d9d86a4583e5cb0865bd1ea62fcf2  gcc/testsuite/gcc.target/i386/noplt-ld-1.c
! 26973ef0b31c34190c8a13700443694f  gcc/testsuite/gcc.target/i386/noplt-ld-2.c
  d84c245c19907cbcb51ec1260f2f2e75  gcc/testsuite/gcc.target/i386/noplt-ld-3.c
  724ac6ecb21390d732dee529300ac27a  gcc/testsuite/gcc.target/i386/nrv1.c
  50b8bcd150bf9d9e5338438449a8f71f  gcc/testsuite/gcc.target/i386/opt-1.c
  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
  442e10317a940b98b0ac90c7fdbf9d75  gcc/testsuite/gcc.target/i386/pad-5a.c
! 0c3307cad9a932c352e280748ded0e46  gcc/testsuite/gcc.target/i386/pad-5b.c
  65d2234a8de3b65feb4498a7e4ca4ca9  gcc/testsuite/gcc.target/i386/pad-6a.c
! 6d5b28d80d168b244d26ec163e2f4afa  gcc/testsuite/gcc.target/i386/pad-6b.c
  3e9e83f645f7aa024256b04525374f4f  gcc/testsuite/gcc.target/i386/pad-7.c
! 9f0b83681f6aed71b86a97d21dbd9e9f  gcc/testsuite/gcc.target/i386/pad-8.c
! 4465a1941d15581e591f761ac125a090  gcc/testsuite/gcc.target/i386/pad-9.c
  c3c9a0ed6ec90244da369421d6a9e1b6  gcc/testsuite/gcc.target/i386/parity-1.c
  c05a7c5c0900e1a07b169f7b0baa6463  gcc/testsuite/gcc.target/i386/parity-2.c
  f354844939fdb7c6c229607f1ff57287  gcc/testsuite/gcc.target/i386/pause-1.c
*************** bccc40fa95a11c992c5319581f1c269f  gcc/te
*** 43607,43615 ****
  b6587e8091b873e052b86981b4c6dd26  gcc/testsuite/gcc.target/i386/pclmul-avx-check.h
  56f7ac50c182627b5551065184b25a3b  gcc/testsuite/gcc.target/i386/pclmul-check.h
  15dd7e15fc38c0bad00692ec554b7cd1  gcc/testsuite/gcc.target/i386/pclmulqdq.c
  9679e778097966e5b39d1c4130b0ee74  gcc/testsuite/gcc.target/i386/pentium4-not-mull.c
  51cadc9814c437e72abf8293afd36241  gcc/testsuite/gcc.target/i386/perm-concat.c
! d5d456417fd703ff892cd508c42e4f32  gcc/testsuite/gcc.target/i386/pic-1.c
  44fe039a4cb3b5771d0918c3e494e951  gcc/testsuite/gcc.target/i386/pie-copyrelocs-1.c
  ec64d74d91ed819f110fdc6f8f90197e  gcc/testsuite/gcc.target/i386/pie-copyrelocs-2.c
  8a9325754f481fbe42e35a28aa1b451b  gcc/testsuite/gcc.target/i386/pie-copyrelocs-3.c
--- 46258,46267 ----
  b6587e8091b873e052b86981b4c6dd26  gcc/testsuite/gcc.target/i386/pclmul-avx-check.h
  56f7ac50c182627b5551065184b25a3b  gcc/testsuite/gcc.target/i386/pclmul-check.h
  15dd7e15fc38c0bad00692ec554b7cd1  gcc/testsuite/gcc.target/i386/pclmulqdq.c
+ 8b3b679a09af74c65842ad3923421a1f  gcc/testsuite/gcc.target/i386/pconfig-1.c
  9679e778097966e5b39d1c4130b0ee74  gcc/testsuite/gcc.target/i386/pentium4-not-mull.c
  51cadc9814c437e72abf8293afd36241  gcc/testsuite/gcc.target/i386/perm-concat.c
! 6b3a29397edcea192308598d8a9d0cce  gcc/testsuite/gcc.target/i386/pic-1.c
  44fe039a4cb3b5771d0918c3e494e951  gcc/testsuite/gcc.target/i386/pie-copyrelocs-1.c
  ec64d74d91ed819f110fdc6f8f90197e  gcc/testsuite/gcc.target/i386/pie-copyrelocs-2.c
  8a9325754f481fbe42e35a28aa1b451b  gcc/testsuite/gcc.target/i386/pie-copyrelocs-3.c
*************** e8b5b0802fdf96fc410ecd02fd9f6c85  gcc/te
*** 43653,43659 ****
  fdacb6b61a5d36e161500b14166654ae  gcc/testsuite/gcc.target/i386/pr21101.c
  6043d0b4998dd913e2d9e533a24f6a55  gcc/testsuite/gcc.target/i386/pr21291.c
  95f61d1360614e076d6888229ba0588f  gcc/testsuite/gcc.target/i386/pr21518.c
! b905c216d478c5dc8bb6646ee9d631e2  gcc/testsuite/gcc.target/i386/pr22076.c
  7c75138083b8282a0a6352ac179a89b4  gcc/testsuite/gcc.target/i386/pr22141.c
  8f2b174cc8f2156d82ca023e56a0b480  gcc/testsuite/gcc.target/i386/pr22152.c
  8ba2071af1172c3cd6d8259c589bc794  gcc/testsuite/gcc.target/i386/pr22362.c
--- 46305,46311 ----
  fdacb6b61a5d36e161500b14166654ae  gcc/testsuite/gcc.target/i386/pr21101.c
  6043d0b4998dd913e2d9e533a24f6a55  gcc/testsuite/gcc.target/i386/pr21291.c
  95f61d1360614e076d6888229ba0588f  gcc/testsuite/gcc.target/i386/pr21518.c
! a4e2299ab741326b41b7c96d680454dc  gcc/testsuite/gcc.target/i386/pr22076.c
  7c75138083b8282a0a6352ac179a89b4  gcc/testsuite/gcc.target/i386/pr22141.c
  8f2b174cc8f2156d82ca023e56a0b480  gcc/testsuite/gcc.target/i386/pr22152.c
  8ba2071af1172c3cd6d8259c589bc794  gcc/testsuite/gcc.target/i386/pr22362.c
*************** d0e5cc510ff9f517c83e2f7086ecb411  gcc/te
*** 43675,43681 ****
  e2e1fa15682cd42c52206538adc05f64  gcc/testsuite/gcc.target/i386/pr25254.c
  303aec7f9e7bd15228b804c19e082f1e  gcc/testsuite/gcc.target/i386/pr25293.c
  4df99a4ebc50394fd523d1381792edfd  gcc/testsuite/gcc.target/i386/pr25654.c
! ddc825cdd6a0997e7978a7c62261f358  gcc/testsuite/gcc.target/i386/pr25993.c
  2257c3610b008364d025325c29a76b29  gcc/testsuite/gcc.target/i386/pr26449-1.c
  9e16b9cc7385838b97f350d4f7931e20  gcc/testsuite/gcc.target/i386/pr26449.c
  ee266f94e0209d8de18305aac3b4e4e3  gcc/testsuite/gcc.target/i386/pr26600.c
--- 46327,46333 ----
  e2e1fa15682cd42c52206538adc05f64  gcc/testsuite/gcc.target/i386/pr25254.c
  303aec7f9e7bd15228b804c19e082f1e  gcc/testsuite/gcc.target/i386/pr25293.c
  4df99a4ebc50394fd523d1381792edfd  gcc/testsuite/gcc.target/i386/pr25654.c
! 9acad1c5e230077ccf4fd659856d30f7  gcc/testsuite/gcc.target/i386/pr25993.c
  2257c3610b008364d025325c29a76b29  gcc/testsuite/gcc.target/i386/pr26449-1.c
  9e16b9cc7385838b97f350d4f7931e20  gcc/testsuite/gcc.target/i386/pr26449.c
  ee266f94e0209d8de18305aac3b4e4e3  gcc/testsuite/gcc.target/i386/pr26600.c
*************** dd9e9d1616c3dffaca183f8e024809cb  gcc/te
*** 43701,43707 ****
  86281a53df1b24c8068e4bf1b184d74b  gcc/testsuite/gcc.target/i386/pr31628.c
  9131ed1be82a4a4fecdc9d0aa2021134  gcc/testsuite/gcc.target/i386/pr31854.c
  dfd05b1f491f52c6fed332039ead357a  gcc/testsuite/gcc.target/i386/pr32000-1.c
! b5578714e28fde60a2ebba4b56c2fe6b  gcc/testsuite/gcc.target/i386/pr32000-2.c
  9b916b67c68cce873259ce7198b6593b  gcc/testsuite/gcc.target/i386/pr32065-1.c
  694842da5eb4c5254d8b4bfe1dc8c111  gcc/testsuite/gcc.target/i386/pr32065-2.c
  1f9ce93e6d6ec25c764294b90cdb8d4a  gcc/testsuite/gcc.target/i386/pr32191.c
--- 46353,46359 ----
  86281a53df1b24c8068e4bf1b184d74b  gcc/testsuite/gcc.target/i386/pr31628.c
  9131ed1be82a4a4fecdc9d0aa2021134  gcc/testsuite/gcc.target/i386/pr31854.c
  dfd05b1f491f52c6fed332039ead357a  gcc/testsuite/gcc.target/i386/pr32000-1.c
! a07b3ac10c2e8d8960d5f94aacc75325  gcc/testsuite/gcc.target/i386/pr32000-2.c
  9b916b67c68cce873259ce7198b6593b  gcc/testsuite/gcc.target/i386/pr32065-1.c
  694842da5eb4c5254d8b4bfe1dc8c111  gcc/testsuite/gcc.target/i386/pr32065-2.c
  1f9ce93e6d6ec25c764294b90cdb8d4a  gcc/testsuite/gcc.target/i386/pr32191.c
*************** ae77e8e1d47f6c409920c8cbdafb46fd  gcc/te
*** 43737,43743 ****
  ed716ad3de8dcdc57aabf5eea563a1ca  gcc/testsuite/gcc.target/i386/pr34312.c
  9f874b2acc414f661be3079b73716ed6  gcc/testsuite/gcc.target/i386/pr34522.c
  18aea80a89f31c08dbe8d10041fe613c  gcc/testsuite/gcc.target/i386/pr35083.c
! c4d8a5765e251d325b765c5346b2616e  gcc/testsuite/gcc.target/i386/pr35160.c
  bf27e716f503a0117fa8830cfc219b6b  gcc/testsuite/gcc.target/i386/pr35281.c
  efaec1d47687ebdae33b8db7c666c96b  gcc/testsuite/gcc.target/i386/pr35540.c
  78ed428e27d35c9aa34632150aefbedb  gcc/testsuite/gcc.target/i386/pr35714.c
--- 46389,46395 ----
  ed716ad3de8dcdc57aabf5eea563a1ca  gcc/testsuite/gcc.target/i386/pr34312.c
  9f874b2acc414f661be3079b73716ed6  gcc/testsuite/gcc.target/i386/pr34522.c
  18aea80a89f31c08dbe8d10041fe613c  gcc/testsuite/gcc.target/i386/pr35083.c
! b6e8605ca0d5664b88b872788cf1854c  gcc/testsuite/gcc.target/i386/pr35160.c
  bf27e716f503a0117fa8830cfc219b6b  gcc/testsuite/gcc.target/i386/pr35281.c
  efaec1d47687ebdae33b8db7c666c96b  gcc/testsuite/gcc.target/i386/pr35540.c
  78ed428e27d35c9aa34632150aefbedb  gcc/testsuite/gcc.target/i386/pr35714.c
*************** c5f01fb54f84ffa521d5b8a458fb46c2  gcc/te
*** 43768,43774 ****
  b15f319946195faaf3bea2c9f2581a89  gcc/testsuite/gcc.target/i386/pr37184.c
  940f5915049e72d7d1e8981174f1b733  gcc/testsuite/gcc.target/i386/pr37191.c
  0be613d9f543ec7125d4a8f6f53c766a  gcc/testsuite/gcc.target/i386/pr37197.c
! c9532efafef0474d530d2e709f4724c7  gcc/testsuite/gcc.target/i386/pr37216.c
  9baee28a21a18701865fd6a40ad4c700  gcc/testsuite/gcc.target/i386/pr37248-1.c
  500f0e5def1d57931e74421d2873f051  gcc/testsuite/gcc.target/i386/pr37248-2.c
  355509feda383e9dce42d1eb9540780c  gcc/testsuite/gcc.target/i386/pr37248-3.c
--- 46420,46426 ----
  b15f319946195faaf3bea2c9f2581a89  gcc/testsuite/gcc.target/i386/pr37184.c
  940f5915049e72d7d1e8981174f1b733  gcc/testsuite/gcc.target/i386/pr37191.c
  0be613d9f543ec7125d4a8f6f53c766a  gcc/testsuite/gcc.target/i386/pr37197.c
! 2c342a6d8cc9231868eb7b0570275447  gcc/testsuite/gcc.target/i386/pr37216.c
  9baee28a21a18701865fd6a40ad4c700  gcc/testsuite/gcc.target/i386/pr37248-1.c
  500f0e5def1d57931e74421d2873f051  gcc/testsuite/gcc.target/i386/pr37248-2.c
  355509feda383e9dce42d1eb9540780c  gcc/testsuite/gcc.target/i386/pr37248-3.c
*************** c8d1ff9429ba4604dabba902390d2bb7  gcc/te
*** 43792,43809 ****
  1441ac15d0d7e61256bb4a348e29d6cf  gcc/testsuite/gcc.target/i386/pr39058.c
  b11c8e619e3aa58383c3682c25436e38  gcc/testsuite/gcc.target/i386/pr39082-1.c
  94f116f1e5835fc4ff466f7510f151e4  gcc/testsuite/gcc.target/i386/pr39139.c
! ba80cacdbccf01662459084fcb1ecd4a  gcc/testsuite/gcc.target/i386/pr39162.c
  e4d2b64cced64941f3d4566006c98041  gcc/testsuite/gcc.target/i386/pr39315-1.c
  a4f00037c34adc5e43d6e3cdd6220a24  gcc/testsuite/gcc.target/i386/pr39315-2.c
  a474bfdfe558ff6ab774624e5cf8b502  gcc/testsuite/gcc.target/i386/pr39315-3.c
  4e93ea8acf8fe3b5867dbfa737abc2c1  gcc/testsuite/gcc.target/i386/pr39315-4.c
  91a19a7183174b2f8fcbfb9aedf92638  gcc/testsuite/gcc.target/i386/pr39315-check.c
! 9d1a7880ab690d531eed2bf7758d8969  gcc/testsuite/gcc.target/i386/pr39431.c
  15b4c1439368e8a359f27552f2958d80  gcc/testsuite/gcc.target/i386/pr39445.c
  7c17680e533837c9b14c3d0b271a5474  gcc/testsuite/gcc.target/i386/pr39482.c
  2d6ec0f01df97b8391047429200762b3  gcc/testsuite/gcc.target/i386/pr39496.c
  9b91d84cfac86ffe17d0edf9b79a4632  gcc/testsuite/gcc.target/i386/pr39543-1.c
! 19d08d6b59e4408e164f5a15c6f5e197  gcc/testsuite/gcc.target/i386/pr39543-2.c
  9b78ec4b52d4d3e3dc087003443f701e  gcc/testsuite/gcc.target/i386/pr39543-3.c
  b932e029ce4c2a5d21853cf4f9034bdc  gcc/testsuite/gcc.target/i386/pr39545-1.c
  19982419f264a79ed6083571a2910bff  gcc/testsuite/gcc.target/i386/pr39545-2.c
--- 46444,46461 ----
  1441ac15d0d7e61256bb4a348e29d6cf  gcc/testsuite/gcc.target/i386/pr39058.c
  b11c8e619e3aa58383c3682c25436e38  gcc/testsuite/gcc.target/i386/pr39082-1.c
  94f116f1e5835fc4ff466f7510f151e4  gcc/testsuite/gcc.target/i386/pr39139.c
! 2310611e373e5af7afedfc0a8e9a5552  gcc/testsuite/gcc.target/i386/pr39162.c
  e4d2b64cced64941f3d4566006c98041  gcc/testsuite/gcc.target/i386/pr39315-1.c
  a4f00037c34adc5e43d6e3cdd6220a24  gcc/testsuite/gcc.target/i386/pr39315-2.c
  a474bfdfe558ff6ab774624e5cf8b502  gcc/testsuite/gcc.target/i386/pr39315-3.c
  4e93ea8acf8fe3b5867dbfa737abc2c1  gcc/testsuite/gcc.target/i386/pr39315-4.c
  91a19a7183174b2f8fcbfb9aedf92638  gcc/testsuite/gcc.target/i386/pr39315-check.c
! dd47a645e62b22a7aa52a94d5cf2f4e9  gcc/testsuite/gcc.target/i386/pr39431.c
  15b4c1439368e8a359f27552f2958d80  gcc/testsuite/gcc.target/i386/pr39445.c
  7c17680e533837c9b14c3d0b271a5474  gcc/testsuite/gcc.target/i386/pr39482.c
  2d6ec0f01df97b8391047429200762b3  gcc/testsuite/gcc.target/i386/pr39496.c
  9b91d84cfac86ffe17d0edf9b79a4632  gcc/testsuite/gcc.target/i386/pr39543-1.c
! b253a78ddc2f7032eea9f84d43dc8bf7  gcc/testsuite/gcc.target/i386/pr39543-2.c
  9b78ec4b52d4d3e3dc087003443f701e  gcc/testsuite/gcc.target/i386/pr39543-3.c
  b932e029ce4c2a5d21853cf4f9034bdc  gcc/testsuite/gcc.target/i386/pr39545-1.c
  19982419f264a79ed6083571a2910bff  gcc/testsuite/gcc.target/i386/pr39545-2.c
*************** b932e029ce4c2a5d21853cf4f9034bdc  gcc/te
*** 43813,43820 ****
  73f484bd7207c5880534eda4f3600bc7  gcc/testsuite/gcc.target/i386/pr39911.c
  f726adf2b5c71c91ecb8c1a88f456e61  gcc/testsuite/gcc.target/i386/pr40718.c
  3e7b7dca7c655569773e5887a949f6f5  gcc/testsuite/gcc.target/i386/pr40809.c
! f3cc990e4c74e11246b3765a8b98eeb1  gcc/testsuite/gcc.target/i386/pr40906-1.c
! cb132200a5f5c1b9d3e5cc7b451cb024  gcc/testsuite/gcc.target/i386/pr40906-2.c
  d4ce015e5c8c8beb341d3a16cbff7b95  gcc/testsuite/gcc.target/i386/pr40906-3.c
  b1d556e6c5c9825be4d8176b61b03128  gcc/testsuite/gcc.target/i386/pr40934.c
  f04332ae3f58ccb4bfe6ce4d825ab3dc  gcc/testsuite/gcc.target/i386/pr40957.c
--- 46465,46472 ----
  73f484bd7207c5880534eda4f3600bc7  gcc/testsuite/gcc.target/i386/pr39911.c
  f726adf2b5c71c91ecb8c1a88f456e61  gcc/testsuite/gcc.target/i386/pr40718.c
  3e7b7dca7c655569773e5887a949f6f5  gcc/testsuite/gcc.target/i386/pr40809.c
! 0c902a9360ac407cbcce89d3b6e74c4a  gcc/testsuite/gcc.target/i386/pr40906-1.c
! a9c2b8b7fe2e57251840f1e658f8d351  gcc/testsuite/gcc.target/i386/pr40906-2.c
  d4ce015e5c8c8beb341d3a16cbff7b95  gcc/testsuite/gcc.target/i386/pr40906-3.c
  b1d556e6c5c9825be4d8176b61b03128  gcc/testsuite/gcc.target/i386/pr40934.c
  f04332ae3f58ccb4bfe6ce4d825ab3dc  gcc/testsuite/gcc.target/i386/pr40957.c
*************** f959f9b7f68ec9300176ea5f3b5b723a  gcc/te
*** 43849,43862 ****
  1e6cfad2ee7ef499c25f339998f4e63f  gcc/testsuite/gcc.target/i386/pr43662.c
  5fc034f7335e1d13da593214c69166d4  gcc/testsuite/gcc.target/i386/pr43668.c
  6ab8a2adf42dab65fcb8bf08d5d35627  gcc/testsuite/gcc.target/i386/pr43671.c
! 1567ad5bd013e5738980e72132f53a3f  gcc/testsuite/gcc.target/i386/pr43766.c
  b05f423e2e73dc286c577252283d529f  gcc/testsuite/gcc.target/i386/pr43799.c
  171a677c5298c0c69b83154415e55228  gcc/testsuite/gcc.target/i386/pr43869.c
  e5b6fcba4b57a5ffec09acc18c64fa8e  gcc/testsuite/gcc.target/i386/pr44071.c
! 5a3c2f5a9fc0503752e7b93db02bc654  gcc/testsuite/gcc.target/i386/pr44130.c
  ee71afab95575089e9dde62fa2f3df3b  gcc/testsuite/gcc.target/i386/pr44144.c
  d0f7915dcdfe2b7a2b805eb41ed113f5  gcc/testsuite/gcc.target/i386/pr44180.c
! 85ab1ee2ae803c5b7571321d11d28ec8  gcc/testsuite/gcc.target/i386/pr44223.c
  f158e8de1cb7b360a3ab77c26914d6e5  gcc/testsuite/gcc.target/i386/pr44281.c
  953d6c29b36cbfae20828d5d5d2d597f  gcc/testsuite/gcc.target/i386/pr44481.c
  ac86248c1d4d16191ed207503529a795  gcc/testsuite/gcc.target/i386/pr44546.c
--- 46501,46514 ----
  1e6cfad2ee7ef499c25f339998f4e63f  gcc/testsuite/gcc.target/i386/pr43662.c
  5fc034f7335e1d13da593214c69166d4  gcc/testsuite/gcc.target/i386/pr43668.c
  6ab8a2adf42dab65fcb8bf08d5d35627  gcc/testsuite/gcc.target/i386/pr43671.c
! eef17532c50df5a9a0ab9230ca0764a0  gcc/testsuite/gcc.target/i386/pr43766.c
  b05f423e2e73dc286c577252283d529f  gcc/testsuite/gcc.target/i386/pr43799.c
  171a677c5298c0c69b83154415e55228  gcc/testsuite/gcc.target/i386/pr43869.c
  e5b6fcba4b57a5ffec09acc18c64fa8e  gcc/testsuite/gcc.target/i386/pr44071.c
! fe7b39654f9875009b006cea04a66b32  gcc/testsuite/gcc.target/i386/pr44130.c
  ee71afab95575089e9dde62fa2f3df3b  gcc/testsuite/gcc.target/i386/pr44144.c
  d0f7915dcdfe2b7a2b805eb41ed113f5  gcc/testsuite/gcc.target/i386/pr44180.c
! e9659dc1406a18f55a3b02a13536af51  gcc/testsuite/gcc.target/i386/pr44223.c
  f158e8de1cb7b360a3ab77c26914d6e5  gcc/testsuite/gcc.target/i386/pr44281.c
  953d6c29b36cbfae20828d5d5d2d597f  gcc/testsuite/gcc.target/i386/pr44481.c
  ac86248c1d4d16191ed207503529a795  gcc/testsuite/gcc.target/i386/pr44546.c
*************** bacbac3595a13582651974e0dcedc58a  gcc/te
*** 43869,43875 ****
  8f0e6dea42288a58b853c6cb51a6e1c2  gcc/testsuite/gcc.target/i386/pr44948-2b.c
  cd746d6d8db1bf596072da7ee34508c9  gcc/testsuite/gcc.target/i386/pr45206.c
  56991bad82563c0640f5ae523b8d5937  gcc/testsuite/gcc.target/i386/pr45213.c
! bd7938c2e437a70279d169e665d1e504  gcc/testsuite/gcc.target/i386/pr45234.c
  1af14ebc3db802429179b5797220c237  gcc/testsuite/gcc.target/i386/pr45296.c
  fe6fafefcdfda54adbb7614ed5ecb610  gcc/testsuite/gcc.target/i386/pr45336-1.c
  488a259dd7c08bf48b916db90053c476  gcc/testsuite/gcc.target/i386/pr45336-2.c
--- 46521,46527 ----
  8f0e6dea42288a58b853c6cb51a6e1c2  gcc/testsuite/gcc.target/i386/pr44948-2b.c
  cd746d6d8db1bf596072da7ee34508c9  gcc/testsuite/gcc.target/i386/pr45206.c
  56991bad82563c0640f5ae523b8d5937  gcc/testsuite/gcc.target/i386/pr45213.c
! 250647c06a9c5c42054163ed89bbf104  gcc/testsuite/gcc.target/i386/pr45234.c
  1af14ebc3db802429179b5797220c237  gcc/testsuite/gcc.target/i386/pr45296.c
  fe6fafefcdfda54adbb7614ed5ecb610  gcc/testsuite/gcc.target/i386/pr45336-1.c
  488a259dd7c08bf48b916db90053c476  gcc/testsuite/gcc.target/i386/pr45336-2.c
*************** d5820d112b40ce76b6dc2538eb712f60  gcc/te
*** 43892,43908 ****
  102425509e9a628834206e48d42f024f  gcc/testsuite/gcc.target/i386/pr46084.c
  798b38d3e46f9d881ad1968ad7bfa9c2  gcc/testsuite/gcc.target/i386/pr46085-1.c
  653ff5f920e7548633b82e34650fc100  gcc/testsuite/gcc.target/i386/pr46085-2.c
  76622dbebac3e848748ef82b1cbcf1f9  gcc/testsuite/gcc.target/i386/pr46095.c
  7aee5270ce0a954621b1d6eb9ab9b0fc  gcc/testsuite/gcc.target/i386/pr46098.c
  a40e5a2a8e8e086686e3d4a62adbd2a5  gcc/testsuite/gcc.target/i386/pr46153.c
  e0b2bdb3ef66a7f4855205521daf82b2  gcc/testsuite/gcc.target/i386/pr46178.c
! 18161660e33142095484f61e82b63ac0  gcc/testsuite/gcc.target/i386/pr46226.c
! 12086a12ceb4d2387c0d7bcdf0b5ed6d  gcc/testsuite/gcc.target/i386/pr46253.c
  ef88abb733bc07df1e0823015fbf345a  gcc/testsuite/gcc.target/i386/pr46254.c
  e9c3619008274206b134d31fa1b40e11  gcc/testsuite/gcc.target/i386/pr46285.c
  63d75c6f787f4b66a9c22f6c18e5a269  gcc/testsuite/gcc.target/i386/pr46295.c
  144a7dedb87d0e1232ed8db12b0f2dff  gcc/testsuite/gcc.target/i386/pr46419.c
! 3f4f509ea986b63f344172220fea78f3  gcc/testsuite/gcc.target/i386/pr46470.c
  d2c81a772694739ffd5427c6fb2287b6  gcc/testsuite/gcc.target/i386/pr46491.c
  248892c5b8c2d4107364749580ca6ea7  gcc/testsuite/gcc.target/i386/pr46647.c
  90c06a2a44746c142a67b0685265509c  gcc/testsuite/gcc.target/i386/pr46716.c
--- 46544,46567 ----
  102425509e9a628834206e48d42f024f  gcc/testsuite/gcc.target/i386/pr46084.c
  798b38d3e46f9d881ad1968ad7bfa9c2  gcc/testsuite/gcc.target/i386/pr46085-1.c
  653ff5f920e7548633b82e34650fc100  gcc/testsuite/gcc.target/i386/pr46085-2.c
+ 5df26bf6356af65c00f386525bc683f8  gcc/testsuite/gcc.target/i386/pr46091-1.c
+ 775ac913aa6f8f257d051c6b5fa1f116  gcc/testsuite/gcc.target/i386/pr46091-2.c
+ dc7c0ecd97eae7c249fd71ce36f39e19  gcc/testsuite/gcc.target/i386/pr46091-3.c
+ d5e68a8bc07911396a108267d7c208ab  gcc/testsuite/gcc.target/i386/pr46091-4.c
+ da3c28ab7bb11eacdcf4c8f1e29a59d0  gcc/testsuite/gcc.target/i386/pr46091-4a.c
+ b66fcc03ceef7f63811bd8f0402e7c4c  gcc/testsuite/gcc.target/i386/pr46091-5.c
+ fe433531ff3a617f3d5bfa74ff44ddaa  gcc/testsuite/gcc.target/i386/pr46091-5a.c
  76622dbebac3e848748ef82b1cbcf1f9  gcc/testsuite/gcc.target/i386/pr46095.c
  7aee5270ce0a954621b1d6eb9ab9b0fc  gcc/testsuite/gcc.target/i386/pr46098.c
  a40e5a2a8e8e086686e3d4a62adbd2a5  gcc/testsuite/gcc.target/i386/pr46153.c
  e0b2bdb3ef66a7f4855205521daf82b2  gcc/testsuite/gcc.target/i386/pr46178.c
! c7b486cb30a8a1fbbaa4bd953f830fad  gcc/testsuite/gcc.target/i386/pr46226.c
! 9f2fba06ec87b50888f77d60a4530f92  gcc/testsuite/gcc.target/i386/pr46253.c
  ef88abb733bc07df1e0823015fbf345a  gcc/testsuite/gcc.target/i386/pr46254.c
  e9c3619008274206b134d31fa1b40e11  gcc/testsuite/gcc.target/i386/pr46285.c
  63d75c6f787f4b66a9c22f6c18e5a269  gcc/testsuite/gcc.target/i386/pr46295.c
  144a7dedb87d0e1232ed8db12b0f2dff  gcc/testsuite/gcc.target/i386/pr46419.c
! 3bb188aab322f4b6a981fe377cda8340  gcc/testsuite/gcc.target/i386/pr46470.c
  d2c81a772694739ffd5427c6fb2287b6  gcc/testsuite/gcc.target/i386/pr46491.c
  248892c5b8c2d4107364749580ca6ea7  gcc/testsuite/gcc.target/i386/pr46647.c
  90c06a2a44746c142a67b0685265509c  gcc/testsuite/gcc.target/i386/pr46716.c
*************** a0e8df751a0532abc2f56fae74b35ceb  gcc/te
*** 43940,43958 ****
  2a341a4e00b9beab43e6507b79108513  gcc/testsuite/gcc.target/i386/pr48708.c
  6b91856ab23b584615728d7f13562146  gcc/testsuite/gcc.target/i386/pr48721.c
  5fba211a1edd0c096b265893a120007d  gcc/testsuite/gcc.target/i386/pr48722.c
! bb87ab78d18ae08971157445a0d0d394  gcc/testsuite/gcc.target/i386/pr48723.c
  b26834e660d14d009bf72740343d1f1e  gcc/testsuite/gcc.target/i386/pr49002-1.c
  1744d1b6525d493782f9f5936b33c289  gcc/testsuite/gcc.target/i386/pr49002-2.c
  3369f8f1bc238cd96148ea54f9434e19  gcc/testsuite/gcc.target/i386/pr49095.c
  a294cc6e4c63c7891b458d6b03b24d18  gcc/testsuite/gcc.target/i386/pr49168-1.c
  eba01282bb2f285e74cc7ec9b9fb8ff7  gcc/testsuite/gcc.target/i386/pr49244-1.c
  82466c76aaf1a7c37ef776c4fdb8c5bb  gcc/testsuite/gcc.target/i386/pr49244-2.c
! e4cb1df2af54fb838523220e3c4c3720  gcc/testsuite/gcc.target/i386/pr49504.c
  848587f75336b253219a56277622893a  gcc/testsuite/gcc.target/i386/pr49567.c
  d6e516d1e403892d4cc4985025b0655a  gcc/testsuite/gcc.target/i386/pr49715-1.c
  f2fc960bed4e328a5f9df7a309ea139d  gcc/testsuite/gcc.target/i386/pr49715-2.c
  f7ab73a2fd4f6a3dd974d04abb4a16b0  gcc/testsuite/gcc.target/i386/pr49781-1.c
! a507190570770ea7556f6f0f98836c16  gcc/testsuite/gcc.target/i386/pr49866.c
  f6f60a959460e8b78dd6402b43af4809  gcc/testsuite/gcc.target/i386/pr49920.c
  4e2731d8a8d0fba23d5859b02be21702  gcc/testsuite/gcc.target/i386/pr49927.c
  4e15899cf7cde94f403bc044accb5f22  gcc/testsuite/gcc.target/i386/pr50038.c
--- 46599,46617 ----
  2a341a4e00b9beab43e6507b79108513  gcc/testsuite/gcc.target/i386/pr48708.c
  6b91856ab23b584615728d7f13562146  gcc/testsuite/gcc.target/i386/pr48721.c
  5fba211a1edd0c096b265893a120007d  gcc/testsuite/gcc.target/i386/pr48722.c
! 3e9f3d5fd14abd4982a1d20d13a214ba  gcc/testsuite/gcc.target/i386/pr48723.c
  b26834e660d14d009bf72740343d1f1e  gcc/testsuite/gcc.target/i386/pr49002-1.c
  1744d1b6525d493782f9f5936b33c289  gcc/testsuite/gcc.target/i386/pr49002-2.c
  3369f8f1bc238cd96148ea54f9434e19  gcc/testsuite/gcc.target/i386/pr49095.c
  a294cc6e4c63c7891b458d6b03b24d18  gcc/testsuite/gcc.target/i386/pr49168-1.c
  eba01282bb2f285e74cc7ec9b9fb8ff7  gcc/testsuite/gcc.target/i386/pr49244-1.c
  82466c76aaf1a7c37ef776c4fdb8c5bb  gcc/testsuite/gcc.target/i386/pr49244-2.c
! e96e89bee2b35c95b790aab0af5d4c57  gcc/testsuite/gcc.target/i386/pr49504.c
  848587f75336b253219a56277622893a  gcc/testsuite/gcc.target/i386/pr49567.c
  d6e516d1e403892d4cc4985025b0655a  gcc/testsuite/gcc.target/i386/pr49715-1.c
  f2fc960bed4e328a5f9df7a309ea139d  gcc/testsuite/gcc.target/i386/pr49715-2.c
  f7ab73a2fd4f6a3dd974d04abb4a16b0  gcc/testsuite/gcc.target/i386/pr49781-1.c
! a1b436434f76fdc1fde0e433a1c5b3b4  gcc/testsuite/gcc.target/i386/pr49866.c
  f6f60a959460e8b78dd6402b43af4809  gcc/testsuite/gcc.target/i386/pr49920.c
  4e2731d8a8d0fba23d5859b02be21702  gcc/testsuite/gcc.target/i386/pr49927.c
  4e15899cf7cde94f403bc044accb5f22  gcc/testsuite/gcc.target/i386/pr50038.c
*************** e90dc7f0b1e6d26c11b5224430e328db  gcc/te
*** 43978,43984 ****
  d5747936af421343d3d26320d8dd18a6  gcc/testsuite/gcc.target/i386/pr52754.c
  f3734af93c1735fb407310153bbcc265  gcc/testsuite/gcc.target/i386/pr52857-1.c
  3c73c51d0b4edd63528474f20107a721  gcc/testsuite/gcc.target/i386/pr52857-2.c
! 381f8bdb2c5734137664263510de70fe  gcc/testsuite/gcc.target/i386/pr52876.c
  ae96f2a6ec3876560fe977282760bda7  gcc/testsuite/gcc.target/i386/pr52882.c
  908f895d749fbe4b41db70b705b92270  gcc/testsuite/gcc.target/i386/pr52883.c
  7cd607f59acbf5495f51e7f583bdfaaf  gcc/testsuite/gcc.target/i386/pr53249.c
--- 46637,46643 ----
  d5747936af421343d3d26320d8dd18a6  gcc/testsuite/gcc.target/i386/pr52754.c
  f3734af93c1735fb407310153bbcc265  gcc/testsuite/gcc.target/i386/pr52857-1.c
  3c73c51d0b4edd63528474f20107a721  gcc/testsuite/gcc.target/i386/pr52857-2.c
! 8567c3e77e9c76d198a3c6cdfdd49a41  gcc/testsuite/gcc.target/i386/pr52876.c
  ae96f2a6ec3876560fe977282760bda7  gcc/testsuite/gcc.target/i386/pr52882.c
  908f895d749fbe4b41db70b705b92270  gcc/testsuite/gcc.target/i386/pr52883.c
  7cd607f59acbf5495f51e7f583bdfaaf  gcc/testsuite/gcc.target/i386/pr53249.c
*************** b6ac81ab6d089d99c5a94aaf53b0ff8e  gcc/te
*** 44022,44028 ****
  1d172a9f268e6e4d4e55c3aa199545ff  gcc/testsuite/gcc.target/i386/pr55277.c
  13b079ca3838e1a1a6115c19f13def26  gcc/testsuite/gcc.target/i386/pr55342.c
  f6af6daa4fc7a7dcfa5316bde91215ee  gcc/testsuite/gcc.target/i386/pr55359.c
! 01ccf815dfe0affc986412edbb0b49bf  gcc/testsuite/gcc.target/i386/pr55433.c
  29d660c0483f37e381e3799b6d990ea0  gcc/testsuite/gcc.target/i386/pr55448.c
  1cc64d8c98d576810a0c8484752d6cd7  gcc/testsuite/gcc.target/i386/pr55458.c
  0882086bd00b2a2553a4109cb96b2e38  gcc/testsuite/gcc.target/i386/pr55512-1.c
--- 46681,46687 ----
  1d172a9f268e6e4d4e55c3aa199545ff  gcc/testsuite/gcc.target/i386/pr55277.c
  13b079ca3838e1a1a6115c19f13def26  gcc/testsuite/gcc.target/i386/pr55342.c
  f6af6daa4fc7a7dcfa5316bde91215ee  gcc/testsuite/gcc.target/i386/pr55359.c
! eb594eead359af59ccf1611376ca0e06  gcc/testsuite/gcc.target/i386/pr55433.c
  29d660c0483f37e381e3799b6d990ea0  gcc/testsuite/gcc.target/i386/pr55448.c
  1cc64d8c98d576810a0c8484752d6cd7  gcc/testsuite/gcc.target/i386/pr55458.c
  0882086bd00b2a2553a4109cb96b2e38  gcc/testsuite/gcc.target/i386/pr55512-1.c
*************** b4fb0c886229835ec55bd681f831812b  gcc/te
*** 44032,44038 ****
  ed1ba8dd30b6e7d0c41497405b5c6d08  gcc/testsuite/gcc.target/i386/pr55590-1.c
  f36e5b68f83ad7f55d170085ad4c4fff  gcc/testsuite/gcc.target/i386/pr55590-2.c
  3a737ef7a5b3519c35502247ffe7f87c  gcc/testsuite/gcc.target/i386/pr55597.c
! e5a8b0266c09bde63ddb64aa7cacdf75  gcc/testsuite/gcc.target/i386/pr55672.c
  f10a165430aeef45c61d11278003318d  gcc/testsuite/gcc.target/i386/pr55686.c
  12194a8a936bb0fdc429c4ad3ad689df  gcc/testsuite/gcc.target/i386/pr55775.c
  2cac8403620cc0226a1d0ecf93ad9e15  gcc/testsuite/gcc.target/i386/pr55829.c
--- 46691,46697 ----
  ed1ba8dd30b6e7d0c41497405b5c6d08  gcc/testsuite/gcc.target/i386/pr55590-1.c
  f36e5b68f83ad7f55d170085ad4c4fff  gcc/testsuite/gcc.target/i386/pr55590-2.c
  3a737ef7a5b3519c35502247ffe7f87c  gcc/testsuite/gcc.target/i386/pr55597.c
! 05e04dbd1677ad71dcef52e0ba2805c7  gcc/testsuite/gcc.target/i386/pr55672.c
  f10a165430aeef45c61d11278003318d  gcc/testsuite/gcc.target/i386/pr55686.c
  12194a8a936bb0fdc429c4ad3ad689df  gcc/testsuite/gcc.target/i386/pr55775.c
  2cac8403620cc0226a1d0ecf93ad9e15  gcc/testsuite/gcc.target/i386/pr55829.c
*************** c7ecab2470e3efb65fefc784b5de8005  gcc/te
*** 44045,44057 ****
  5f88468aaea31db8f6c244aba1cb2491  gcc/testsuite/gcc.target/i386/pr56118.c
  423953ba72668fc2e1967820e491cd1b  gcc/testsuite/gcc.target/i386/pr56148.c
  bedc2906b19d90b34bbca83245d800ea  gcc/testsuite/gcc.target/i386/pr56151.c
! 19642f7460de3795e9af1abbc712d3f4  gcc/testsuite/gcc.target/i386/pr56225.c
  4014a1169eec1b75b0aeb525eb9db9e0  gcc/testsuite/gcc.target/i386/pr56246.c
! 25233b1ac9d42774410a267689c313de  gcc/testsuite/gcc.target/i386/pr56348.c
! 59d98925795f45d8b1cf3c5b644986ad  gcc/testsuite/gcc.target/i386/pr56564-1.c
! e71f336367b42216a3c05480438a0c8b  gcc/testsuite/gcc.target/i386/pr56564-2.c
! d7a1793cae42e61e5d69215f6155e121  gcc/testsuite/gcc.target/i386/pr56564-3.c
! 11da11eb5295c3160a0c7d22e118543d  gcc/testsuite/gcc.target/i386/pr56564-4.c
  8020cdbe25dc434fc90de71006dc6b13  gcc/testsuite/gcc.target/i386/pr56766-1.c
  f4a05b191869007acdcccf1c2293eef2  gcc/testsuite/gcc.target/i386/pr56766-2.c
  bd02b8a0614713f55733fac63a3e9c06  gcc/testsuite/gcc.target/i386/pr56866.c
--- 46704,46716 ----
  5f88468aaea31db8f6c244aba1cb2491  gcc/testsuite/gcc.target/i386/pr56118.c
  423953ba72668fc2e1967820e491cd1b  gcc/testsuite/gcc.target/i386/pr56148.c
  bedc2906b19d90b34bbca83245d800ea  gcc/testsuite/gcc.target/i386/pr56151.c
! 6880cac56232237ea6e3b016c449160a  gcc/testsuite/gcc.target/i386/pr56225.c
  4014a1169eec1b75b0aeb525eb9db9e0  gcc/testsuite/gcc.target/i386/pr56246.c
! 62ab9eff28dad58197fb00670ac04bfd  gcc/testsuite/gcc.target/i386/pr56348.c
! d28a6bc38cb291c4396ebd4cdd3b4dfc  gcc/testsuite/gcc.target/i386/pr56564-1.c
! f55ccc54c1440799ba6f4728b46291af  gcc/testsuite/gcc.target/i386/pr56564-2.c
! bd5d70e77eaa7b8fcf5779691873d469  gcc/testsuite/gcc.target/i386/pr56564-3.c
! c39f641203ceb0e37eb8ed366806ac26  gcc/testsuite/gcc.target/i386/pr56564-4.c
  8020cdbe25dc434fc90de71006dc6b13  gcc/testsuite/gcc.target/i386/pr56766-1.c
  f4a05b191869007acdcccf1c2293eef2  gcc/testsuite/gcc.target/i386/pr56766-2.c
  bd02b8a0614713f55733fac63a3e9c06  gcc/testsuite/gcc.target/i386/pr56866.c
*************** bd02b8a0614713f55733fac63a3e9c06  gcc/te
*** 44059,44076 ****
  77cb14396dd718b0ced834b268893ce3  gcc/testsuite/gcc.target/i386/pr57003.c
  8f35b23c364eec98865f376fc604a54d  gcc/testsuite/gcc.target/i386/pr57018.c
  0037b23bb497c1ed7bbde7fb0c6fac31  gcc/testsuite/gcc.target/i386/pr57046.c
! 6f70dfee8fdef2308ac550207132caae  gcc/testsuite/gcc.target/i386/pr57091.c
  c7f426034d9df3b9350c1df80138c8dc  gcc/testsuite/gcc.target/i386/pr57097.c
  4be3438b496af45547bcaa622d04847f  gcc/testsuite/gcc.target/i386/pr57098.c
  a995edc07e467f878e75e842897b1cfd  gcc/testsuite/gcc.target/i386/pr57106.c
  24a8a0f263659238a672eac710e62c30  gcc/testsuite/gcc.target/i386/pr57189.c
  bb5074395957224a22a9703b2d5a55a9  gcc/testsuite/gcc.target/i386/pr57233.c
  1be3cad52880bd204c5668a12dc63bc1  gcc/testsuite/gcc.target/i386/pr57264.c
  14e07824556dcc3c9478b054976196a3  gcc/testsuite/gcc.target/i386/pr57275.c
! 6af7e4a1f6e542e19ce56a5b5cd909ab  gcc/testsuite/gcc.target/i386/pr57293.c
  e7fa1acfad0b8a48a5001c624a4c21f1  gcc/testsuite/gcc.target/i386/pr57410.c
  7e388cbf0472c0b7b43d3d478bbe0e43  gcc/testsuite/gcc.target/i386/pr57459.c
! 137ff6c74763639089440687727cf6c3  gcc/testsuite/gcc.target/i386/pr57655.c
  681638da206cb4838378ec263136509c  gcc/testsuite/gcc.target/i386/pr57736.c
  6279901e993a5419ad5fc291ce283a72  gcc/testsuite/gcc.target/i386/pr57756.c
  fed6054160e51c026ff44ce33b57790d  gcc/testsuite/gcc.target/i386/pr57756_2.c
--- 46718,46736 ----
  77cb14396dd718b0ced834b268893ce3  gcc/testsuite/gcc.target/i386/pr57003.c
  8f35b23c364eec98865f376fc604a54d  gcc/testsuite/gcc.target/i386/pr57018.c
  0037b23bb497c1ed7bbde7fb0c6fac31  gcc/testsuite/gcc.target/i386/pr57046.c
! ef9a7877efcb30c3b8c4c86cd2d9192e  gcc/testsuite/gcc.target/i386/pr57091.c
  c7f426034d9df3b9350c1df80138c8dc  gcc/testsuite/gcc.target/i386/pr57097.c
  4be3438b496af45547bcaa622d04847f  gcc/testsuite/gcc.target/i386/pr57098.c
  a995edc07e467f878e75e842897b1cfd  gcc/testsuite/gcc.target/i386/pr57106.c
  24a8a0f263659238a672eac710e62c30  gcc/testsuite/gcc.target/i386/pr57189.c
+ b4327de3757b2daf02c8b7ca2230fd0e  gcc/testsuite/gcc.target/i386/pr57193.c
  bb5074395957224a22a9703b2d5a55a9  gcc/testsuite/gcc.target/i386/pr57233.c
  1be3cad52880bd204c5668a12dc63bc1  gcc/testsuite/gcc.target/i386/pr57264.c
  14e07824556dcc3c9478b054976196a3  gcc/testsuite/gcc.target/i386/pr57275.c
! cfeee968728c21c9dbbc604bc0341271  gcc/testsuite/gcc.target/i386/pr57293.c
  e7fa1acfad0b8a48a5001c624a4c21f1  gcc/testsuite/gcc.target/i386/pr57410.c
  7e388cbf0472c0b7b43d3d478bbe0e43  gcc/testsuite/gcc.target/i386/pr57459.c
! b5deee88eb6f0e5c5411652bd3034316  gcc/testsuite/gcc.target/i386/pr57655.c
  681638da206cb4838378ec263136509c  gcc/testsuite/gcc.target/i386/pr57736.c
  6279901e993a5419ad5fc291ce283a72  gcc/testsuite/gcc.target/i386/pr57756.c
  fed6054160e51c026ff44ce33b57790d  gcc/testsuite/gcc.target/i386/pr57756_2.c
*************** f487259b97e486f0909f1f5b1ffcab56  gcc/te
*** 44088,44094 ****
  3dd420bd7fc93702cd6a198cc6d225f7  gcc/testsuite/gcc.target/i386/pr58679-2.c
  cc3690cd0221af14cca309a4c1686f5d  gcc/testsuite/gcc.target/i386/pr58690.c
  5876d42028807517806313a786d7595b  gcc/testsuite/gcc.target/i386/pr58759.c
! ee2c0bde4833118e622d2c2b5fb45fa7  gcc/testsuite/gcc.target/i386/pr58853.c
  e19a49534393888b259603e0f3e6ab58  gcc/testsuite/gcc.target/i386/pr58944.c
  8535b7377d32162c5d39914b810ccd30  gcc/testsuite/gcc.target/i386/pr59021.c
  c8b6cbfc183ed308ff9d22ce7f8d26c1  gcc/testsuite/gcc.target/i386/pr59034-1.c
--- 46748,46754 ----
  3dd420bd7fc93702cd6a198cc6d225f7  gcc/testsuite/gcc.target/i386/pr58679-2.c
  cc3690cd0221af14cca309a4c1686f5d  gcc/testsuite/gcc.target/i386/pr58690.c
  5876d42028807517806313a786d7595b  gcc/testsuite/gcc.target/i386/pr58759.c
! 26b3fa50e7eb319217edb8b2fe654da1  gcc/testsuite/gcc.target/i386/pr58853.c
  e19a49534393888b259603e0f3e6ab58  gcc/testsuite/gcc.target/i386/pr58944.c
  8535b7377d32162c5d39914b810ccd30  gcc/testsuite/gcc.target/i386/pr59021.c
  c8b6cbfc183ed308ff9d22ce7f8d26c1  gcc/testsuite/gcc.target/i386/pr59034-1.c
*************** d5cf92f061b8dff1cf4a6d0f9856a928  gcc/te
*** 44109,44115 ****
  42471e323ef6a1a69686313b2b861782  gcc/testsuite/gcc.target/i386/pr59501-3.c
  de711561f1df58f47d7499b50a48f0d2  gcc/testsuite/gcc.target/i386/pr59501-3a.c
  a80ba39bc9516933db58205677ced430  gcc/testsuite/gcc.target/i386/pr59501-4.c
! d15bd796e808fa45f6ab19e3bb890041  gcc/testsuite/gcc.target/i386/pr59501-4a.c
  a907fa91d4c02ec18cb8f44ca5f29e0f  gcc/testsuite/gcc.target/i386/pr59501-5.c
  cf945d05507239ff7c960ea5144e4aac  gcc/testsuite/gcc.target/i386/pr59501-6.c
  2af89e5a5082049e2f597883a1af4626  gcc/testsuite/gcc.target/i386/pr59539-1.c
--- 46769,46775 ----
  42471e323ef6a1a69686313b2b861782  gcc/testsuite/gcc.target/i386/pr59501-3.c
  de711561f1df58f47d7499b50a48f0d2  gcc/testsuite/gcc.target/i386/pr59501-3a.c
  a80ba39bc9516933db58205677ced430  gcc/testsuite/gcc.target/i386/pr59501-4.c
! 8dcf4b43d921c3ff0000a033b9f5d371  gcc/testsuite/gcc.target/i386/pr59501-4a.c
  a907fa91d4c02ec18cb8f44ca5f29e0f  gcc/testsuite/gcc.target/i386/pr59501-5.c
  cf945d05507239ff7c960ea5144e4aac  gcc/testsuite/gcc.target/i386/pr59501-6.c
  2af89e5a5082049e2f597883a1af4626  gcc/testsuite/gcc.target/i386/pr59539-1.c
*************** c0b60614d2a530e038e0754a69d32d11  gcc/te
*** 44122,44132 ****
  126329f763ee878621a02870dbdc35d3  gcc/testsuite/gcc.target/i386/pr59625.c
  4a11450dfa18706aff7384c923eb9d99  gcc/testsuite/gcc.target/i386/pr59644.c
  b7977d50dcb2822812e5811c18ce55a6  gcc/testsuite/gcc.target/i386/pr59789.c
! 98b3d629ea88dfc65d638d123b3d9c9c  gcc/testsuite/gcc.target/i386/pr59794-1.c
  564e7efc7ada0212d7ee4a096f92bf4d  gcc/testsuite/gcc.target/i386/pr59794-2.c
  2c7b4e86bf0d5cf0ddad42149136707f  gcc/testsuite/gcc.target/i386/pr59794-3.c
! 2db0d184d2cbfe023e674fbe7742392a  gcc/testsuite/gcc.target/i386/pr59794-4.c
! 56ce1e860b3b0e8eee6af2d1e4a406ce  gcc/testsuite/gcc.target/i386/pr59794-5.c
  697084b75df10cfa059a6c91d39111fd  gcc/testsuite/gcc.target/i386/pr59794-6.c
  af5df137e86c7cfd11e8d68f07c8d25c  gcc/testsuite/gcc.target/i386/pr59794-7.c
  0c2d582f00adc7472660160cba8ba19b  gcc/testsuite/gcc.target/i386/pr59839.c
--- 46782,46792 ----
  126329f763ee878621a02870dbdc35d3  gcc/testsuite/gcc.target/i386/pr59625.c
  4a11450dfa18706aff7384c923eb9d99  gcc/testsuite/gcc.target/i386/pr59644.c
  b7977d50dcb2822812e5811c18ce55a6  gcc/testsuite/gcc.target/i386/pr59789.c
! 1c2ced80879020828bbbc1ca146d1972  gcc/testsuite/gcc.target/i386/pr59794-1.c
  564e7efc7ada0212d7ee4a096f92bf4d  gcc/testsuite/gcc.target/i386/pr59794-2.c
  2c7b4e86bf0d5cf0ddad42149136707f  gcc/testsuite/gcc.target/i386/pr59794-3.c
! 190296eefbbfbf21f030513541d747ec  gcc/testsuite/gcc.target/i386/pr59794-4.c
! 73357f4bd86aa45172fe42d6f9f2a72a  gcc/testsuite/gcc.target/i386/pr59794-5.c
  697084b75df10cfa059a6c91d39111fd  gcc/testsuite/gcc.target/i386/pr59794-6.c
  af5df137e86c7cfd11e8d68f07c8d25c  gcc/testsuite/gcc.target/i386/pr59794-7.c
  0c2d582f00adc7472660160cba8ba19b  gcc/testsuite/gcc.target/i386/pr59839.c
*************** d1a0e61387e72001b140b22cec7d1a93  gcc/te
*** 44135,44141 ****
  2ec6baf4aeb86d68a84163d2477d428e  gcc/testsuite/gcc.target/i386/pr59874-3.c
  918053d5181acfecc88c708f27f8f436  gcc/testsuite/gcc.target/i386/pr59880.c
  b87fe1f8e7496a37c4723f6e51a2ea39  gcc/testsuite/gcc.target/i386/pr59927.c
! ef5e7cf22fd8cf05d21ba509a8796cae  gcc/testsuite/gcc.target/i386/pr59929.c
  fb96b888f73b2dddf89b41b3dbc9da0e  gcc/testsuite/gcc.target/i386/pr60077-1.c
  87f9b9773ac7d3c76e952ed8199c7a7c  gcc/testsuite/gcc.target/i386/pr60077-2.c
  ca6424ec4af0910766ce85dcf738c0c9  gcc/testsuite/gcc.target/i386/pr60205-1.c
--- 46795,46801 ----
  2ec6baf4aeb86d68a84163d2477d428e  gcc/testsuite/gcc.target/i386/pr59874-3.c
  918053d5181acfecc88c708f27f8f436  gcc/testsuite/gcc.target/i386/pr59880.c
  b87fe1f8e7496a37c4723f6e51a2ea39  gcc/testsuite/gcc.target/i386/pr59927.c
! 45e03a75da61788fe5e604ebad69b06f  gcc/testsuite/gcc.target/i386/pr59929.c
  fb96b888f73b2dddf89b41b3dbc9da0e  gcc/testsuite/gcc.target/i386/pr60077-1.c
  87f9b9773ac7d3c76e952ed8199c7a7c  gcc/testsuite/gcc.target/i386/pr60077-2.c
  ca6424ec4af0910766ce85dcf738c0c9  gcc/testsuite/gcc.target/i386/pr60205-1.c
*************** aa7b63bf4fb5c8151456d3a27b66daa2  gcc/te
*** 44152,44171 ****
  90c5be2a3f80aff7d7204eaa36133881  gcc/testsuite/gcc.target/i386/pr60909-1.c
  65d3cafc066a01d0520d7d9137813522  gcc/testsuite/gcc.target/i386/pr60909-2.c
  9efadaf12a0cf32ad3f50e1529d1247c  gcc/testsuite/gcc.target/i386/pr61215.c
! d5610c9c3bab2c5544bfadaad23215df  gcc/testsuite/gcc.target/i386/pr61296-1.c
! b8167229561b33e67fa5ea241b11a3f4  gcc/testsuite/gcc.target/i386/pr61296-2.c
! 023effcd93c0a952ead5153ea2366f96  gcc/testsuite/gcc.target/i386/pr61296-3.c
! 1f5423bbec85cdefc518f7e71418900d  gcc/testsuite/gcc.target/i386/pr61296-4.c
! 0c5b929004d22d938d7d186f855e50a2  gcc/testsuite/gcc.target/i386/pr61296-5.c
! b30c0b8f6df46552067659d00c2b413f  gcc/testsuite/gcc.target/i386/pr61296-6.c
! 9738dc88329ac6ae2a033c3de3c5c737  gcc/testsuite/gcc.target/i386/pr61296-7.c
  5f56fb114713d58ad2f426074967c029  gcc/testsuite/gcc.target/i386/pr61360.c
! 963f0ae98ebbd893124dec360de9158e  gcc/testsuite/gcc.target/i386/pr61403.c
  c2ad80ced67848aa724c64790fae16e7  gcc/testsuite/gcc.target/i386/pr61423.c
! 2e681bb97b6870c8edb1514a2edad73a  gcc/testsuite/gcc.target/i386/pr61446.c
  41c81c5a9c11d9139ad858d341f4ab52  gcc/testsuite/gcc.target/i386/pr61572.c
  3f4cbdecf1917a066aa3efa5412627d9  gcc/testsuite/gcc.target/i386/pr61599-1.c
! 15c0ecfbbb1821976c91e66b75baac53  gcc/testsuite/gcc.target/i386/pr61599-2.c
  2ee0efa258974320c9447d777ed0cd1e  gcc/testsuite/gcc.target/i386/pr61794.c
  0af95498db628ce9ab87f06bcc3818c2  gcc/testsuite/gcc.target/i386/pr61801.c
  f8fc9b37df64e6ab4d2c32663fceeb75  gcc/testsuite/gcc.target/i386/pr61855.c
--- 46812,46831 ----
  90c5be2a3f80aff7d7204eaa36133881  gcc/testsuite/gcc.target/i386/pr60909-1.c
  65d3cafc066a01d0520d7d9137813522  gcc/testsuite/gcc.target/i386/pr60909-2.c
  9efadaf12a0cf32ad3f50e1529d1247c  gcc/testsuite/gcc.target/i386/pr61215.c
! e2a4bbdaa7704c83c9a3b4850ed7a8f8  gcc/testsuite/gcc.target/i386/pr61296-1.c
! b5eb4a15e4872a1388ac8950c83e5ff8  gcc/testsuite/gcc.target/i386/pr61296-2.c
! b0733517171373a16d38f76d52106fce  gcc/testsuite/gcc.target/i386/pr61296-3.c
! 9ecfa4bd4eb10558fd61b933b18f1e3d  gcc/testsuite/gcc.target/i386/pr61296-4.c
! b61debdb92ace49afb06ba6614674f37  gcc/testsuite/gcc.target/i386/pr61296-5.c
! 8f431d9d3d205c9baea14eeb71358ba6  gcc/testsuite/gcc.target/i386/pr61296-6.c
! 4b895b510814e9f7f748596eaf4a37da  gcc/testsuite/gcc.target/i386/pr61296-7.c
  5f56fb114713d58ad2f426074967c029  gcc/testsuite/gcc.target/i386/pr61360.c
! a2283164e9ac8a9ecb6ab0a475ca6ce4  gcc/testsuite/gcc.target/i386/pr61403.c
  c2ad80ced67848aa724c64790fae16e7  gcc/testsuite/gcc.target/i386/pr61423.c
! c862a3c17ff7c49e42a7fd543dbaf3ab  gcc/testsuite/gcc.target/i386/pr61446.c
  41c81c5a9c11d9139ad858d341f4ab52  gcc/testsuite/gcc.target/i386/pr61572.c
  3f4cbdecf1917a066aa3efa5412627d9  gcc/testsuite/gcc.target/i386/pr61599-1.c
! e12bd6c5d5e4249892681c3ca63428e6  gcc/testsuite/gcc.target/i386/pr61599-2.c
  2ee0efa258974320c9447d777ed0cd1e  gcc/testsuite/gcc.target/i386/pr61794.c
  0af95498db628ce9ab87f06bcc3818c2  gcc/testsuite/gcc.target/i386/pr61801.c
  f8fc9b37df64e6ab4d2c32663fceeb75  gcc/testsuite/gcc.target/i386/pr61855.c
*************** c2179fbbe68a40ce1e3486b98db6a47f  gcc/te
*** 44186,44192 ****
  9c17e1a161d05dcffaa896376c5ecc02  gcc/testsuite/gcc.target/i386/pr63563.c
  2fcd7ee701194c088717496858a15fbc  gcc/testsuite/gcc.target/i386/pr63600.c
  2627f49323472299eefe598c4ad807db  gcc/testsuite/gcc.target/i386/pr63618.c
! 85df32f70ea46fd1250fcbf89d868e67  gcc/testsuite/gcc.target/i386/pr63620.c
  35b959f5c23a6b821354ca3267133241  gcc/testsuite/gcc.target/i386/pr63637-1.c
  cd28ccf1174412586de4f6a0d35c7bb8  gcc/testsuite/gcc.target/i386/pr63637-2.c
  c5d71d031505193c4d15383b1c21050a  gcc/testsuite/gcc.target/i386/pr63637-3.c
--- 46846,46852 ----
  9c17e1a161d05dcffaa896376c5ecc02  gcc/testsuite/gcc.target/i386/pr63563.c
  2fcd7ee701194c088717496858a15fbc  gcc/testsuite/gcc.target/i386/pr63600.c
  2627f49323472299eefe598c4ad807db  gcc/testsuite/gcc.target/i386/pr63618.c
! cbdeaddbc8292b15b61890dfa4257003  gcc/testsuite/gcc.target/i386/pr63620.c
  35b959f5c23a6b821354ca3267133241  gcc/testsuite/gcc.target/i386/pr63637-1.c
  cd28ccf1174412586de4f6a0d35c7bb8  gcc/testsuite/gcc.target/i386/pr63637-2.c
  c5d71d031505193c4d15383b1c21050a  gcc/testsuite/gcc.target/i386/pr63637-3.c
*************** e70e8eb63cff3610044e38fdad89e34b  gcc/te
*** 44206,44212 ****
  062641897c1f576f8e34f6685a28feab  gcc/testsuite/gcc.target/i386/pr64386.c
  4ab995a39be1d9f6ab51bed74868b4d9  gcc/testsuite/gcc.target/i386/pr64387.c
  7f461e790905a6a59c18169efe63b087  gcc/testsuite/gcc.target/i386/pr64393.c
! 56d07059dc87a08699c8d7fc193b0cde  gcc/testsuite/gcc.target/i386/pr64409.c
  0377a72cd6ce11f8f6572ea17dc41a9c  gcc/testsuite/gcc.target/i386/pr64513.c
  10edafa5d28fec2dd9bc1ecab31a24f3  gcc/testsuite/gcc.target/i386/pr64617.c
  564104a134a0332a3502e02b96c94cb3  gcc/testsuite/gcc.target/i386/pr64805.c
--- 46866,46872 ----
  062641897c1f576f8e34f6685a28feab  gcc/testsuite/gcc.target/i386/pr64386.c
  4ab995a39be1d9f6ab51bed74868b4d9  gcc/testsuite/gcc.target/i386/pr64387.c
  7f461e790905a6a59c18169efe63b087  gcc/testsuite/gcc.target/i386/pr64393.c
! 9ea5f3d33aa784ee05ee8ef4a5594bec  gcc/testsuite/gcc.target/i386/pr64409.c
  0377a72cd6ce11f8f6572ea17dc41a9c  gcc/testsuite/gcc.target/i386/pr64513.c
  10edafa5d28fec2dd9bc1ecab31a24f3  gcc/testsuite/gcc.target/i386/pr64617.c
  564104a134a0332a3502e02b96c94cb3  gcc/testsuite/gcc.target/i386/pr64805.c
*************** b7a433ff57a88adc047af2a4e1d0ccc3  gcc/te
*** 44220,44229 ****
  7a6bb877e2e854aafae72ef2cb0edc02  gcc/testsuite/gcc.target/i386/pr65078-6.c
  58019822f1b056e2ddea7777530516d6  gcc/testsuite/gcc.target/i386/pr65103-1.c
  9d8512505aa9ed8e953039a77c53bfcf  gcc/testsuite/gcc.target/i386/pr65103-3.c
! 631d0d9dc3201f0f3bf274a492fc713f  gcc/testsuite/gcc.target/i386/pr65105-1.c
! 8c9adb1ac66eba64e87e7e87a45723bf  gcc/testsuite/gcc.target/i386/pr65105-2.c
! 6c89706e7167976a74a72a317d193c78  gcc/testsuite/gcc.target/i386/pr65105-3.c
! 05aaa5b11d53dfa62a222cf93b974d3a  gcc/testsuite/gcc.target/i386/pr65105-5.c
  c408d46c72ebb51b0a57ffe0f3de6177  gcc/testsuite/gcc.target/i386/pr65161.c
  a26eeafdab2d0e6340c7d268ec090c8c  gcc/testsuite/gcc.target/i386/pr65167.c
  8882014d3658eacb0572e2ded93a1723  gcc/testsuite/gcc.target/i386/pr65183.c
--- 46880,46889 ----
  7a6bb877e2e854aafae72ef2cb0edc02  gcc/testsuite/gcc.target/i386/pr65078-6.c
  58019822f1b056e2ddea7777530516d6  gcc/testsuite/gcc.target/i386/pr65103-1.c
  9d8512505aa9ed8e953039a77c53bfcf  gcc/testsuite/gcc.target/i386/pr65103-3.c
! 91070de8111c5981a0844c774965f30c  gcc/testsuite/gcc.target/i386/pr65105-1.c
! d0bcd3b015db31f54e123c610daf98d5  gcc/testsuite/gcc.target/i386/pr65105-2.c
! 47f564855bb935c11601d8bbc677b17e  gcc/testsuite/gcc.target/i386/pr65105-3.c
! 6565bece0ed59791362a9cb0b5ea7e98  gcc/testsuite/gcc.target/i386/pr65105-5.c
  c408d46c72ebb51b0a57ffe0f3de6177  gcc/testsuite/gcc.target/i386/pr65161.c
  a26eeafdab2d0e6340c7d268ec090c8c  gcc/testsuite/gcc.target/i386/pr65167.c
  8882014d3658eacb0572e2ded93a1723  gcc/testsuite/gcc.target/i386/pr65183.c
*************** ccdbdd63889c29a356fc609030db106c  gcc/te
*** 44267,44273 ****
  2d01c5258765a82fa6de7e5662795179  gcc/testsuite/gcc.target/i386/pr66232-8.c
  d140dd01638bd24cc3b995bd76f3d825  gcc/testsuite/gcc.target/i386/pr66232-9.c
  0faab83f5c42b044a34dfa87c146af62  gcc/testsuite/gcc.target/i386/pr66274.c
! eba9fc2cd96c68428c1d78d35c3f7e05  gcc/testsuite/gcc.target/i386/pr66275.c
  9691b9fb2206de681ed083de689c89c7  gcc/testsuite/gcc.target/i386/pr66334.c
  7e1d59ce8293eee1a626a8693fdb6e4f  gcc/testsuite/gcc.target/i386/pr66412.c
  bbcc4bad6e85470b150a7b32458d3e35  gcc/testsuite/gcc.target/i386/pr66424.c
--- 46927,46933 ----
  2d01c5258765a82fa6de7e5662795179  gcc/testsuite/gcc.target/i386/pr66232-8.c
  d140dd01638bd24cc3b995bd76f3d825  gcc/testsuite/gcc.target/i386/pr66232-9.c
  0faab83f5c42b044a34dfa87c146af62  gcc/testsuite/gcc.target/i386/pr66274.c
! d77f5c5aaeda2ba3b6d6e23d3ff452ed  gcc/testsuite/gcc.target/i386/pr66275.c
  9691b9fb2206de681ed083de689c89c7  gcc/testsuite/gcc.target/i386/pr66334.c
  7e1d59ce8293eee1a626a8693fdb6e4f  gcc/testsuite/gcc.target/i386/pr66412.c
  bbcc4bad6e85470b150a7b32458d3e35  gcc/testsuite/gcc.target/i386/pr66424.c
*************** b4e78eb3dc9417ab257f65a33bfa0d85  gcc/te
*** 44281,44294 ****
  ad616fcf98d578f437fbb34fac8b9fe8  gcc/testsuite/gcc.target/i386/pr66626.c
  cdbd8403ada6d1fcd5ed815b09826035  gcc/testsuite/gcc.target/i386/pr66648.c
  5feea3130f39239cc4f3c2025654e3c3  gcc/testsuite/gcc.target/i386/pr66691.c
! 0214e7f4913311cae678317f95cbfb67  gcc/testsuite/gcc.target/i386/pr66703.c
  1ddb3cc806193f475f29db4a3f81d11d  gcc/testsuite/gcc.target/i386/pr66746.c
  3b327c3e13ff5ea1f31e58d95328d826  gcc/testsuite/gcc.target/i386/pr66749.c
  3e411e6a8e6793a62911e76863241a2d  gcc/testsuite/gcc.target/i386/pr66768.c
  fcb4debc7c967ef774d0f1ad4fd639ad  gcc/testsuite/gcc.target/i386/pr66806.c
  eeeafd2ca1f37484a866655d708c15c5  gcc/testsuite/gcc.target/i386/pr66810.c
! c0afad501da088dd92861e2419befba6  gcc/testsuite/gcc.target/i386/pr66813.c
! eca9d4fb2fa674b319efc3b9cc0911d5  gcc/testsuite/gcc.target/i386/pr66814.c
  ab260630154714d6a92fa264356ec077  gcc/testsuite/gcc.target/i386/pr66817.c
  2736f559d9ed3001d877f7450d819853  gcc/testsuite/gcc.target/i386/pr66818.c
  3a8525427a2c06a8b1267e82570c0b32  gcc/testsuite/gcc.target/i386/pr66819-1.c
--- 46941,46954 ----
  ad616fcf98d578f437fbb34fac8b9fe8  gcc/testsuite/gcc.target/i386/pr66626.c
  cdbd8403ada6d1fcd5ed815b09826035  gcc/testsuite/gcc.target/i386/pr66648.c
  5feea3130f39239cc4f3c2025654e3c3  gcc/testsuite/gcc.target/i386/pr66691.c
! b5fdfad3639aad72f389c4eba9b24b3a  gcc/testsuite/gcc.target/i386/pr66703.c
  1ddb3cc806193f475f29db4a3f81d11d  gcc/testsuite/gcc.target/i386/pr66746.c
  3b327c3e13ff5ea1f31e58d95328d826  gcc/testsuite/gcc.target/i386/pr66749.c
  3e411e6a8e6793a62911e76863241a2d  gcc/testsuite/gcc.target/i386/pr66768.c
  fcb4debc7c967ef774d0f1ad4fd639ad  gcc/testsuite/gcc.target/i386/pr66806.c
  eeeafd2ca1f37484a866655d708c15c5  gcc/testsuite/gcc.target/i386/pr66810.c
! 764d76ee28e4a082ff7b7cd815af2409  gcc/testsuite/gcc.target/i386/pr66813.c
! 730becd4fd5010d5f72febfe9d2b0fb5  gcc/testsuite/gcc.target/i386/pr66814.c
  ab260630154714d6a92fa264356ec077  gcc/testsuite/gcc.target/i386/pr66817.c
  2736f559d9ed3001d877f7450d819853  gcc/testsuite/gcc.target/i386/pr66818.c
  3a8525427a2c06a8b1267e82570c0b32  gcc/testsuite/gcc.target/i386/pr66819-1.c
*************** a0d4958712bff25bad27b504a88b752f  gcc/te
*** 44306,44313 ****
  4302bf4a537373ec584f031d92b9a307  gcc/testsuite/gcc.target/i386/pr67215-1.c
  b4766f0b858f4dde0f670dc50c412c1d  gcc/testsuite/gcc.target/i386/pr67215-2.c
  0da023f37721b9dbbfb817f702d30974  gcc/testsuite/gcc.target/i386/pr67215-3.c
! 5ce153867d84a2ecd10eefd5c81b3b14  gcc/testsuite/gcc.target/i386/pr67265-2.c
! 0ba7398a83e54638e32719b2687ec37e  gcc/testsuite/gcc.target/i386/pr67265.c
  286f1564ba26b37099d71ea844066099  gcc/testsuite/gcc.target/i386/pr67317-1.c
  84f1505e3c4090e696b46a15909123c9  gcc/testsuite/gcc.target/i386/pr67317-2.c
  c190bd6d04c9ea14dad4262a84a5e75d  gcc/testsuite/gcc.target/i386/pr67317-3.c
--- 46966,46973 ----
  4302bf4a537373ec584f031d92b9a307  gcc/testsuite/gcc.target/i386/pr67215-1.c
  b4766f0b858f4dde0f670dc50c412c1d  gcc/testsuite/gcc.target/i386/pr67215-2.c
  0da023f37721b9dbbfb817f702d30974  gcc/testsuite/gcc.target/i386/pr67215-3.c
! 97d32c1dd1346e4a5f5aa5d2c454c95a  gcc/testsuite/gcc.target/i386/pr67265-2.c
! 9c144c5db9e771e79915ba21818659a7  gcc/testsuite/gcc.target/i386/pr67265.c
  286f1564ba26b37099d71ea844066099  gcc/testsuite/gcc.target/i386/pr67317-1.c
  84f1505e3c4090e696b46a15909123c9  gcc/testsuite/gcc.target/i386/pr67317-2.c
  c190bd6d04c9ea14dad4262a84a5e75d  gcc/testsuite/gcc.target/i386/pr67317-3.c
*************** c3b077ecd7c86d02b425005a9cb043c1  gcc/te
*** 44321,44331 ****
  4564c223d74d09ef6ccc9b751d63ac9b  gcc/testsuite/gcc.target/i386/pr67400-6.c
  2f4b8fd2ccaaf7566f1f991ec9fab6be  gcc/testsuite/gcc.target/i386/pr67400-7.c
  60848ddc7662f0dfc7296664321ad48d  gcc/testsuite/gcc.target/i386/pr67447.c
! 1f48132aedfc5da009a33d0027e3149d  gcc/testsuite/gcc.target/i386/pr67480.c
  2443b3353cb87fc442a064e33c9e6ad1  gcc/testsuite/gcc.target/i386/pr67609-2.c
  8c9b60d13c9ecfa83e3d5797b231f2ad  gcc/testsuite/gcc.target/i386/pr67609.c
! ddef90c50db40d172d9540ecd674df14  gcc/testsuite/gcc.target/i386/pr67761.c
! bea583c8259434a6a826cd2c30638802  gcc/testsuite/gcc.target/i386/pr67770.c
  40660f6a71410e0419a42f67ccffb5a3  gcc/testsuite/gcc.target/i386/pr67963-1.c
  20023d24d21d62dd6789da2589104070  gcc/testsuite/gcc.target/i386/pr67963-2.c
  139b1bdb98e3296f9ddee0838954fe94  gcc/testsuite/gcc.target/i386/pr67963-3.c
--- 46981,46991 ----
  4564c223d74d09ef6ccc9b751d63ac9b  gcc/testsuite/gcc.target/i386/pr67400-6.c
  2f4b8fd2ccaaf7566f1f991ec9fab6be  gcc/testsuite/gcc.target/i386/pr67400-7.c
  60848ddc7662f0dfc7296664321ad48d  gcc/testsuite/gcc.target/i386/pr67447.c
! 4f17775f2edfb01fd1945a1bc06f2bfd  gcc/testsuite/gcc.target/i386/pr67480.c
  2443b3353cb87fc442a064e33c9e6ad1  gcc/testsuite/gcc.target/i386/pr67609-2.c
  8c9b60d13c9ecfa83e3d5797b231f2ad  gcc/testsuite/gcc.target/i386/pr67609.c
! 4e41161e98bd41c2d6acd0841fd515a1  gcc/testsuite/gcc.target/i386/pr67761.c
! 0a1aee9b6e0857dd837a2af59f638d4b  gcc/testsuite/gcc.target/i386/pr67770.c
  40660f6a71410e0419a42f67ccffb5a3  gcc/testsuite/gcc.target/i386/pr67963-1.c
  20023d24d21d62dd6789da2589104070  gcc/testsuite/gcc.target/i386/pr67963-2.c
  139b1bdb98e3296f9ddee0838954fe94  gcc/testsuite/gcc.target/i386/pr67963-3.c
*************** bea583c8259434a6a826cd2c30638802  gcc/te
*** 44335,44341 ****
  4f8f5573505d9b60bab0ee48c5fe922f  gcc/testsuite/gcc.target/i386/pr67995-1.c
  e5e29507fd1dff3f68bf471a7ebabe04  gcc/testsuite/gcc.target/i386/pr67995-2.c
  27aa5b5be81bfad7f0d6eec2a727b3bd  gcc/testsuite/gcc.target/i386/pr67995-3.c
! f19fb73f073c8d1ee0737ff58673a6bd  gcc/testsuite/gcc.target/i386/pr68018.c
  1131da6390956f1c080f304b565a4a69  gcc/testsuite/gcc.target/i386/pr68084.c
  526a2860fdd9b19529c88a6e409b2029  gcc/testsuite/gcc.target/i386/pr68349.c
  28fa9ed62a2c84c2b18c8f82bd82c6c8  gcc/testsuite/gcc.target/i386/pr68432-1.c
--- 46995,47001 ----
  4f8f5573505d9b60bab0ee48c5fe922f  gcc/testsuite/gcc.target/i386/pr67995-1.c
  e5e29507fd1dff3f68bf471a7ebabe04  gcc/testsuite/gcc.target/i386/pr67995-2.c
  27aa5b5be81bfad7f0d6eec2a727b3bd  gcc/testsuite/gcc.target/i386/pr67995-3.c
! c15ab4fdb12d617da4a31daffc6a8979  gcc/testsuite/gcc.target/i386/pr68018.c
  1131da6390956f1c080f304b565a4a69  gcc/testsuite/gcc.target/i386/pr68084.c
  526a2860fdd9b19529c88a6e409b2029  gcc/testsuite/gcc.target/i386/pr68349.c
  28fa9ed62a2c84c2b18c8f82bd82c6c8  gcc/testsuite/gcc.target/i386/pr68432-1.c
*************** c582759219ba7d4c089a6730d72753f3  gcc/te
*** 44347,44353 ****
  939cb1764c085054007c93662975586c  gcc/testsuite/gcc.target/i386/pr68497.c
  8b2aceeb6fd7b89b6912edc1f4d527dc  gcc/testsuite/gcc.target/i386/pr68633.c
  86970bbb2e352887837e71a47d7d1b1b  gcc/testsuite/gcc.target/i386/pr68647.c
! ef3f1636440165ca1e8cb1ff5a7fd262  gcc/testsuite/gcc.target/i386/pr68657.c
  ed977b2e07a2b51f6a0171f6ad454c88  gcc/testsuite/gcc.target/i386/pr68674.c
  37cbc35061a580832dbc0ce4a1604d83  gcc/testsuite/gcc.target/i386/pr68680.c
  82889ba70f826af56789c8d9456aea07  gcc/testsuite/gcc.target/i386/pr68691.c
--- 47007,47013 ----
  939cb1764c085054007c93662975586c  gcc/testsuite/gcc.target/i386/pr68497.c
  8b2aceeb6fd7b89b6912edc1f4d527dc  gcc/testsuite/gcc.target/i386/pr68633.c
  86970bbb2e352887837e71a47d7d1b1b  gcc/testsuite/gcc.target/i386/pr68647.c
! 44f832587c44a2fd2a9266acaad5b6c3  gcc/testsuite/gcc.target/i386/pr68657.c
  ed977b2e07a2b51f6a0171f6ad454c88  gcc/testsuite/gcc.target/i386/pr68674.c
  37cbc35061a580832dbc0ce4a1604d83  gcc/testsuite/gcc.target/i386/pr68680.c
  82889ba70f826af56789c8d9456aea07  gcc/testsuite/gcc.target/i386/pr68691.c
*************** ccda0203f999fcba7726473dfcb07f28  gcc/te
*** 44359,44372 ****
  23576b4d9c739c5f77e82a8b18118893  gcc/testsuite/gcc.target/i386/pr68937-2.c
  65e3afa7242c456d889d2278a11497a9  gcc/testsuite/gcc.target/i386/pr68937-3.c
  5416794d16a84a1d62fdd6299853e3ba  gcc/testsuite/gcc.target/i386/pr68937-4.c
! d4b4616e5a1e4ce7ef8c0de16346c3c8  gcc/testsuite/gcc.target/i386/pr68937-5.c
  6b3294bc9bc9f9a7d98b52b54b7f6a32  gcc/testsuite/gcc.target/i386/pr68937-6.c
  3bbd03473a753eda7e76facc85a52836  gcc/testsuite/gcc.target/i386/pr68956.c
  7656f483dd5c86423cbfd451f33300b2  gcc/testsuite/gcc.target/i386/pr68961.c
  f6aed10f35c73b007f503bc7420b6c99  gcc/testsuite/gcc.target/i386/pr68986-1.c
  004b317767b82ac7adabd7ae3b0719eb  gcc/testsuite/gcc.target/i386/pr68986-2.c
  784297f01051407ff4186b76f39fbc67  gcc/testsuite/gcc.target/i386/pr68986-3.c
! 1c93ef6364db9d1405b8306ab6d107bf  gcc/testsuite/gcc.target/i386/pr68990.c
  70cde2be44d04b4655e5832e5347b750  gcc/testsuite/gcc.target/i386/pr68991.c
  13a06d6cf77d90ce5afc167ace2e59f4  gcc/testsuite/gcc.target/i386/pr69010.c
  b0b6b0c99b0c2c7b2b0ccafefafb09cb  gcc/testsuite/gcc.target/i386/pr69030.c
--- 47019,47032 ----
  23576b4d9c739c5f77e82a8b18118893  gcc/testsuite/gcc.target/i386/pr68937-2.c
  65e3afa7242c456d889d2278a11497a9  gcc/testsuite/gcc.target/i386/pr68937-3.c
  5416794d16a84a1d62fdd6299853e3ba  gcc/testsuite/gcc.target/i386/pr68937-4.c
! bbe33a083be93de566eabd4bd85abe60  gcc/testsuite/gcc.target/i386/pr68937-5.c
  6b3294bc9bc9f9a7d98b52b54b7f6a32  gcc/testsuite/gcc.target/i386/pr68937-6.c
  3bbd03473a753eda7e76facc85a52836  gcc/testsuite/gcc.target/i386/pr68956.c
  7656f483dd5c86423cbfd451f33300b2  gcc/testsuite/gcc.target/i386/pr68961.c
  f6aed10f35c73b007f503bc7420b6c99  gcc/testsuite/gcc.target/i386/pr68986-1.c
  004b317767b82ac7adabd7ae3b0719eb  gcc/testsuite/gcc.target/i386/pr68986-2.c
  784297f01051407ff4186b76f39fbc67  gcc/testsuite/gcc.target/i386/pr68986-3.c
! 9ef7148569dcf23a63b9a3ddc540cd73  gcc/testsuite/gcc.target/i386/pr68990.c
  70cde2be44d04b4655e5832e5347b750  gcc/testsuite/gcc.target/i386/pr68991.c
  13a06d6cf77d90ce5afc167ace2e59f4  gcc/testsuite/gcc.target/i386/pr69010.c
  b0b6b0c99b0c2c7b2b0ccafefafb09cb  gcc/testsuite/gcc.target/i386/pr69030.c
*************** abdb535b16d32d8d5612c7d5b9fdb27f  gcc/te
*** 44386,44408 ****
  5f5f89dd709068a0b723488442cbea4f  gcc/testsuite/gcc.target/i386/pr69225-6.c
  3533aba2a833a82460b7623dbe0533ae  gcc/testsuite/gcc.target/i386/pr69225-7.c
  aecd42e51f6b97d833083408745c6dd5  gcc/testsuite/gcc.target/i386/pr69246.c
! 3dd5cf01bb000ccb93512a31c56b62d1  gcc/testsuite/gcc.target/i386/pr69255-1.c
! e2940af389d36820f8e9bf58f59c3ba8  gcc/testsuite/gcc.target/i386/pr69255-2.c
! d80029f61f63a9710d929bff10ef5b47  gcc/testsuite/gcc.target/i386/pr69255-3.c
! ffc8d49ae7fd24e080767e28c6e0a5f2  gcc/testsuite/gcc.target/i386/pr69454-1.c
! 27f0be8c3abe460fbcd460e9861c9cc7  gcc/testsuite/gcc.target/i386/pr69454-2.c
  4baed9b88fed94b3bd199c8235745c94  gcc/testsuite/gcc.target/i386/pr69459.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
  80c3f251b52b1373de67061e1d348dd0  gcc/testsuite/gcc.target/i386/pr69577.c
! ae22c7c2fd53d7fd3e8d546559512f7a  gcc/testsuite/gcc.target/i386/pr69677.c
  d5cd7c3367c572eacb1e10986253e7b6  gcc/testsuite/gcc.target/i386/pr69733.c
  50dd1c20c86979c2a1ebebf13f64783c  gcc/testsuite/gcc.target/i386/pr69820.c
  54a6b1cdefb04b6044321aa68b8ce4c6  gcc/testsuite/gcc.target/i386/pr69888.c
  18b5257a0bbaecefbf7a16d4882f7943  gcc/testsuite/gcc.target/i386/pr69891.c
  8814ce3cb1c59fd8c0c53db743c9c3b4  gcc/testsuite/gcc.target/i386/pr70007.c
! 66b5243014d26e8258a6479bac950a15  gcc/testsuite/gcc.target/i386/pr70021.c
  ffe191e28f01770a627ed106f22bf734  gcc/testsuite/gcc.target/i386/pr70027.c
  969a64bc15f1c6ed459dba9ae3ea08d2  gcc/testsuite/gcc.target/i386/pr70028.c
  4d2e344b65075864ce37098540cc0413  gcc/testsuite/gcc.target/i386/pr70049.c
--- 47046,47069 ----
  5f5f89dd709068a0b723488442cbea4f  gcc/testsuite/gcc.target/i386/pr69225-6.c
  3533aba2a833a82460b7623dbe0533ae  gcc/testsuite/gcc.target/i386/pr69225-7.c
  aecd42e51f6b97d833083408745c6dd5  gcc/testsuite/gcc.target/i386/pr69246.c
! a4626ceed88e6d6066f4e1d0db684299  gcc/testsuite/gcc.target/i386/pr69255-1.c
! c3a545c080561ea9b4fe6e8b1b06f068  gcc/testsuite/gcc.target/i386/pr69255-2.c
! b7eb5782cfea18d4f6ebee3c3161e491  gcc/testsuite/gcc.target/i386/pr69255-3.c
! 2405d63480ce45885939957f93e0b459  gcc/testsuite/gcc.target/i386/pr69454-1.c
! 7baa00da5b600cf9ac0059d740da1816  gcc/testsuite/gcc.target/i386/pr69454-2.c
  4baed9b88fed94b3bd199c8235745c94  gcc/testsuite/gcc.target/i386/pr69459.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
  80c3f251b52b1373de67061e1d348dd0  gcc/testsuite/gcc.target/i386/pr69577.c
! 74e7e6ca391073c910bc9527b95a0347  gcc/testsuite/gcc.target/i386/pr69677.c
  d5cd7c3367c572eacb1e10986253e7b6  gcc/testsuite/gcc.target/i386/pr69733.c
  50dd1c20c86979c2a1ebebf13f64783c  gcc/testsuite/gcc.target/i386/pr69820.c
  54a6b1cdefb04b6044321aa68b8ce4c6  gcc/testsuite/gcc.target/i386/pr69888.c
  18b5257a0bbaecefbf7a16d4882f7943  gcc/testsuite/gcc.target/i386/pr69891.c
  8814ce3cb1c59fd8c0c53db743c9c3b4  gcc/testsuite/gcc.target/i386/pr70007.c
! c98c404b55db11cf40d49c45407c41e7  gcc/testsuite/gcc.target/i386/pr70021.c
! 0b8a4bab344332b86c461073997de777  gcc/testsuite/gcc.target/i386/pr70023.c
  ffe191e28f01770a627ed106f22bf734  gcc/testsuite/gcc.target/i386/pr70027.c
  969a64bc15f1c6ed459dba9ae3ea08d2  gcc/testsuite/gcc.target/i386/pr70028.c
  4d2e344b65075864ce37098540cc0413  gcc/testsuite/gcc.target/i386/pr70049.c
*************** f7f2def52d64bbb1ef2d230ff758cbdb  gcc/te
*** 44433,44444 ****
  e8f2375c4f91768e72c7f362acc99ae3  gcc/testsuite/gcc.target/i386/pr70155-7.c
  f26d676f1685c2877882d01b1c168b4a  gcc/testsuite/gcc.target/i386/pr70155-8.c
  739862fd73f31c1145ce629e55b43db8  gcc/testsuite/gcc.target/i386/pr70155-9.c
! 2961b04edf6d23eb38b342c3a90bb723  gcc/testsuite/gcc.target/i386/pr70160.c
  68dae1baf512769d1acf148db5166a48  gcc/testsuite/gcc.target/i386/pr70251.c
! f53057e6f7db077763b32468827a98f9  gcc/testsuite/gcc.target/i386/pr70263-2.c
  9dc4644acf439047622a4c11be362103  gcc/testsuite/gcc.target/i386/pr70293.c
  77a10eac7238aed7e2e4bc7e46fdbf09  gcc/testsuite/gcc.target/i386/pr70300.c
! 178a7450547a67cb4459f0ba1892246b  gcc/testsuite/gcc.target/i386/pr70302.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
--- 47094,47105 ----
  e8f2375c4f91768e72c7f362acc99ae3  gcc/testsuite/gcc.target/i386/pr70155-7.c
  f26d676f1685c2877882d01b1c168b4a  gcc/testsuite/gcc.target/i386/pr70155-8.c
  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
  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
*************** f53057e6f7db077763b32468827a98f9  gcc/te
*** 44447,44453 ****
  e44800457a70163ec72b2dc33ac17526  gcc/testsuite/gcc.target/i386/pr70327.c
  eb4e22d671989cb7f3fba5d82472ab65  gcc/testsuite/gcc.target/i386/pr70355.c
  85c762df3b60b5a82837a1ef8c7c6ad7  gcc/testsuite/gcc.target/i386/pr70406.c
! 1d9dd13d405961122739b39ff7d71b14  gcc/testsuite/gcc.target/i386/pr70453.c
  c77e1663a849f06a7bec6c4a9b717e69  gcc/testsuite/gcc.target/i386/pr70465-2.c
  61faa7220258d23b037cd831ffbec6f2  gcc/testsuite/gcc.target/i386/pr70465.c
  d01a001b982416c56a2e19bfe460690c  gcc/testsuite/gcc.target/i386/pr70467-1.c
--- 47108,47114 ----
  e44800457a70163ec72b2dc33ac17526  gcc/testsuite/gcc.target/i386/pr70327.c
  eb4e22d671989cb7f3fba5d82472ab65  gcc/testsuite/gcc.target/i386/pr70355.c
  85c762df3b60b5a82837a1ef8c7c6ad7  gcc/testsuite/gcc.target/i386/pr70406.c
! 1af51f079d02f3b29661dbdc8ae70925  gcc/testsuite/gcc.target/i386/pr70453.c
  c77e1663a849f06a7bec6c4a9b717e69  gcc/testsuite/gcc.target/i386/pr70465-2.c
  61faa7220258d23b037cd831ffbec6f2  gcc/testsuite/gcc.target/i386/pr70465.c
  d01a001b982416c56a2e19bfe460690c  gcc/testsuite/gcc.target/i386/pr70467-1.c
*************** fb74d73535ae13841ad274eed8746e1d  gcc/te
*** 44472,44482 ****
  a12202905bd4ab853068b48a260a39fc  gcc/testsuite/gcc.target/i386/pr70738-7.c
  3a1ef414c243d704288672ae2ed719ae  gcc/testsuite/gcc.target/i386/pr70738-8.c
  b79c0bcdf58f6e1bba3f6620fefa6f0f  gcc/testsuite/gcc.target/i386/pr70738-9.c
! 0adbcabe255b36ad14e5fced66fe8a7c  gcc/testsuite/gcc.target/i386/pr70750-1.c
! 683fe4353ec025a523da5da93c42a89a  gcc/testsuite/gcc.target/i386/pr70750-2.c
! 37bdb0a9a0d80f79798cf661ca3558f4  gcc/testsuite/gcc.target/i386/pr70799-1.c
! 5d2e4ef3d0e3f9847a97e19c7d80583b  gcc/testsuite/gcc.target/i386/pr70799-2.c
! f3031e9819f9b9d0ca3c725e34d4934d  gcc/testsuite/gcc.target/i386/pr70799-3.c
  4a1998a131bd50329d33a11477629de5  gcc/testsuite/gcc.target/i386/pr70821.c
  1003b2af30448864252327bd08ddb57b  gcc/testsuite/gcc.target/i386/pr70858.c
  c4f6a31f14b030cd9290db1df9495760  gcc/testsuite/gcc.target/i386/pr70876.c
--- 47133,47145 ----
  a12202905bd4ab853068b48a260a39fc  gcc/testsuite/gcc.target/i386/pr70738-7.c
  3a1ef414c243d704288672ae2ed719ae  gcc/testsuite/gcc.target/i386/pr70738-8.c
  b79c0bcdf58f6e1bba3f6620fefa6f0f  gcc/testsuite/gcc.target/i386/pr70738-9.c
! b8aaa1c61d237ea27d230f6584ce5adf  gcc/testsuite/gcc.target/i386/pr70750-1.c
! b4e9ddfcff5392084623bc865a470f0d  gcc/testsuite/gcc.target/i386/pr70750-2.c
! 3ac0ee054148d8f590a224e725fc0e89  gcc/testsuite/gcc.target/i386/pr70799-1.c
! b27b2690cfdc8b79c2ce0f89b171b834  gcc/testsuite/gcc.target/i386/pr70799-2.c
! f353395bccf918949658ea5606b5bc6e  gcc/testsuite/gcc.target/i386/pr70799-3.c
! 45f696c5d0f8378ebb4864d2a8c6b652  gcc/testsuite/gcc.target/i386/pr70799-4.c
! 17303f2a45401efd58622846a6deecb2  gcc/testsuite/gcc.target/i386/pr70799-5.c
  4a1998a131bd50329d33a11477629de5  gcc/testsuite/gcc.target/i386/pr70821.c
  1003b2af30448864252327bd08ddb57b  gcc/testsuite/gcc.target/i386/pr70858.c
  c4f6a31f14b030cd9290db1df9495760  gcc/testsuite/gcc.target/i386/pr70876.c
*************** b041f793f29c8dbb81f30cc6cff59540  gcc/te
*** 44486,44492 ****
  cdf785a2bc0d7b4e9128691fc978d25e  gcc/testsuite/gcc.target/i386/pr71077.c
  7a68252b43e0d3aaf4a0c5f83c62bca0  gcc/testsuite/gcc.target/i386/pr71245-1.c
  6ede6398cab29de5fda736a8c809afd7  gcc/testsuite/gcc.target/i386/pr71245-2.c
! 1c54c6ee36d61d2283c4e0440f8c9c9e  gcc/testsuite/gcc.target/i386/pr71321.c
  d0bd03c535d9acf1fa5c53d9fab89cef  gcc/testsuite/gcc.target/i386/pr71346.c
  1c394993c347ba5c842359a75dc15aa5  gcc/testsuite/gcc.target/i386/pr71374.c
  27e030b5f9e35d267c9bd37d4e1e4a68  gcc/testsuite/gcc.target/i386/pr71458.c
--- 47149,47155 ----
  cdf785a2bc0d7b4e9128691fc978d25e  gcc/testsuite/gcc.target/i386/pr71077.c
  7a68252b43e0d3aaf4a0c5f83c62bca0  gcc/testsuite/gcc.target/i386/pr71245-1.c
  6ede6398cab29de5fda736a8c809afd7  gcc/testsuite/gcc.target/i386/pr71245-2.c
! 2fb9329d1a1eba91cf629cd69a0a2945  gcc/testsuite/gcc.target/i386/pr71321.c
  d0bd03c535d9acf1fa5c53d9fab89cef  gcc/testsuite/gcc.target/i386/pr71346.c
  1c394993c347ba5c842359a75dc15aa5  gcc/testsuite/gcc.target/i386/pr71374.c
  27e030b5f9e35d267c9bd37d4e1e4a68  gcc/testsuite/gcc.target/i386/pr71458.c
*************** c889e958b00a84bc18acb602a17fb8a9  gcc/te
*** 44498,44506 ****
--- 47161,47173 ----
  5ac4b3a5e27218de1ca456cf8faeafd2  gcc/testsuite/gcc.target/i386/pr71652-3.c
  ae4c52920b6c91b2793ea58cb386156a  gcc/testsuite/gcc.target/i386/pr71652.c
  5ad32fa77e7fbb4f018a98855fd804b7  gcc/testsuite/gcc.target/i386/pr71801.c
+ ae67aba6c3fdb7b61346e046638971cd  gcc/testsuite/gcc.target/i386/pr71958.c
+ 79537cb8d94fad09b7881f2d40292035  gcc/testsuite/gcc.target/i386/pr71991.c
  904e9080ea8f3c82ccce73a3970937a8  gcc/testsuite/gcc.target/i386/pr72748.c
  851459b82a69c2689a36f9c25c21af9d  gcc/testsuite/gcc.target/i386/pr72839.c
  b0d4c3b8fe476c0eb8a512a6ef1cb447  gcc/testsuite/gcc.target/i386/pr72867.c
+ 6e37cc5401acdbaef1eb08e6c91d201e  gcc/testsuite/gcc.target/i386/pr73350-2.c
+ 43af4b477f94731922c0b15869cedeaf  gcc/testsuite/gcc.target/i386/pr73350.c
  4e5dce84b234a32706534e5c74192ab3  gcc/testsuite/gcc.target/i386/pr76342.c
  bb7f521a5508d5630cc282c2daf09320  gcc/testsuite/gcc.target/i386/pr77377.c
  e600788d6e924c2ec9337867af173298  gcc/testsuite/gcc.target/i386/pr77403.c
*************** deb27ae8ba4b14e7c0102c71de9b30e7  gcc/te
*** 44528,44533 ****
--- 47195,47201 ----
  9a6f5b90435a9fc39a4a2dca1aac54b6  gcc/testsuite/gcc.target/i386/pr78419.c
  fd3d68d1502a7c7d664aa4b2a54d8e13  gcc/testsuite/gcc.target/i386/pr78451.c
  b4197780cb6050ee6c7f9773bcc2c238  gcc/testsuite/gcc.target/i386/pr78580.c
+ 3e39a442c933fb505523aab8233090d1  gcc/testsuite/gcc.target/i386/pr78585.c
  beeebf9f6ddfd9e9eb1c09a17461c4c4  gcc/testsuite/gcc.target/i386/pr78669.c
  bf36317e97c5f64c380cdb12c4362f62  gcc/testsuite/gcc.target/i386/pr78671.c
  1846f454e2a448b59203bcd8c46853bf  gcc/testsuite/gcc.target/i386/pr78675-1.c
*************** bf36317e97c5f64c380cdb12c4362f62  gcc/te
*** 44535,44541 ****
  eeb101032ca1ec313a250b41e73a0923  gcc/testsuite/gcc.target/i386/pr78691-i386.c
  22be586d0c2af31b19457e87f2fc7819  gcc/testsuite/gcc.target/i386/pr78738.c
  64583ca88a2ae5f59a647f8f764ef826  gcc/testsuite/gcc.target/i386/pr78791.c
! 290f2ed927a32805d45a32ca61e83e1e  gcc/testsuite/gcc.target/i386/pr78794.c
  8bb0a80b75fee7b1b9635d370229df0a  gcc/testsuite/gcc.target/i386/pr78899.c
  34fbf36ae1414b01bc5a9dc0ebb3c8e2  gcc/testsuite/gcc.target/i386/pr78904-1.c
  431ee362bd90ea68300d55f026847649  gcc/testsuite/gcc.target/i386/pr78904-2.c
--- 47203,47209 ----
  eeb101032ca1ec313a250b41e73a0923  gcc/testsuite/gcc.target/i386/pr78691-i386.c
  22be586d0c2af31b19457e87f2fc7819  gcc/testsuite/gcc.target/i386/pr78738.c
  64583ca88a2ae5f59a647f8f764ef826  gcc/testsuite/gcc.target/i386/pr78791.c
! 179510b05909a0d18190ef1e493d2f7d  gcc/testsuite/gcc.target/i386/pr78794.c
  8bb0a80b75fee7b1b9635d370229df0a  gcc/testsuite/gcc.target/i386/pr78899.c
  34fbf36ae1414b01bc5a9dc0ebb3c8e2  gcc/testsuite/gcc.target/i386/pr78904-1.c
  431ee362bd90ea68300d55f026847649  gcc/testsuite/gcc.target/i386/pr78904-2.c
*************** dfa67d7fbcc2c68a9541c2549d5c65c0  gcc/te
*** 44562,44572 ****
  d5021064232d41e8126229774a76b913  gcc/testsuite/gcc.target/i386/pr79593.c
  dab9304dfe29b159ebf7edf9bda9b645  gcc/testsuite/gcc.target/i386/pr79649.c
  52588f332bbbceb324db208297409c7f  gcc/testsuite/gcc.target/i386/pr79673.c
! 07310b3353f9ee616efe1f29a046b037  gcc/testsuite/gcc.target/i386/pr79683.c
  67be882a8f722bfc1c1169848aa16da4  gcc/testsuite/gcc.target/i386/pr79690.c
  c4cb305cf2f30dad2b94791d7bb26ef4  gcc/testsuite/gcc.target/i386/pr79723.c
  775e7fe3e5625b784949e1922efab9ea  gcc/testsuite/gcc.target/i386/pr79729.c
  b3b6f5c8ba17ba3296bdffadca2efac2  gcc/testsuite/gcc.target/i386/pr79733.c
  d6a597f0fbd3fbabaff69609d7a1c3b9  gcc/testsuite/gcc.target/i386/pr79807.c
  79f33466eabfc2e257a8fa0ed96c57ab  gcc/testsuite/gcc.target/i386/pr79901.c
  d8519fa7ee590fbd3c0a85e2b8653841  gcc/testsuite/gcc.target/i386/pr79932-1.c
--- 47230,47243 ----
  d5021064232d41e8126229774a76b913  gcc/testsuite/gcc.target/i386/pr79593.c
  dab9304dfe29b159ebf7edf9bda9b645  gcc/testsuite/gcc.target/i386/pr79649.c
  52588f332bbbceb324db208297409c7f  gcc/testsuite/gcc.target/i386/pr79673.c
! 616360630c3c454eca220edada979afe  gcc/testsuite/gcc.target/i386/pr79683.c
  67be882a8f722bfc1c1169848aa16da4  gcc/testsuite/gcc.target/i386/pr79690.c
  c4cb305cf2f30dad2b94791d7bb26ef4  gcc/testsuite/gcc.target/i386/pr79723.c
  775e7fe3e5625b784949e1922efab9ea  gcc/testsuite/gcc.target/i386/pr79729.c
  b3b6f5c8ba17ba3296bdffadca2efac2  gcc/testsuite/gcc.target/i386/pr79733.c
+ 8c0bf4e4cdbbf182daf5193ce4e2e52f  gcc/testsuite/gcc.target/i386/pr79793-1.c
+ 1b3ba63668a454c57cb9841c509f0b88  gcc/testsuite/gcc.target/i386/pr79793-2.c
+ 69c6eea15fddbe6b0ecf84a3f91c610e  gcc/testsuite/gcc.target/i386/pr79804.c
  d6a597f0fbd3fbabaff69609d7a1c3b9  gcc/testsuite/gcc.target/i386/pr79807.c
  79f33466eabfc2e257a8fa0ed96c57ab  gcc/testsuite/gcc.target/i386/pr79901.c
  d8519fa7ee590fbd3c0a85e2b8653841  gcc/testsuite/gcc.target/i386/pr79932-1.c
*************** c2d275d4a046f13e9c05914f94fce964  gcc/te
*** 44580,44605 ****
  e9694b4ac41a634860c750f43e4ff35c  gcc/testsuite/gcc.target/i386/pr80298-1.c
  1741f4327b4263e09090e49b0a9ff7e1  gcc/testsuite/gcc.target/i386/pr80298-2.c
  a68ae3ab97b6d21670085a72bc4277db  gcc/testsuite/gcc.target/i386/pr80381.c
  ccd1c247864f05916416dc77c0aee2d4  gcc/testsuite/gcc.target/i386/pr80569.c
  7095adb94d5c22dd7820cabd3edd706a  gcc/testsuite/gcc.target/i386/pr80583.c
  0c5a8762e99a86ebb02539f557e3598b  gcc/testsuite/gcc.target/i386/pr80706.c
  bb36bc80b1317e2a9173fafae3bac834  gcc/testsuite/gcc.target/i386/pr80819-1.c
  e4860277aff5bee9717885cd9f34a2aa  gcc/testsuite/gcc.target/i386/pr80819-2.c
  9c5c11ed0d11d02072a3c3edae9496f7  gcc/testsuite/gcc.target/i386/pr81015.c
  9bdf968dfd24f80e026583d0ef721b39  gcc/testsuite/gcc.target/i386/pr81121.c
  4aa131c4fd40500edf612c2566a0a1b2  gcc/testsuite/gcc.target/i386/pr81128.c
  727e9852e045506df16768502b0cbe28  gcc/testsuite/gcc.target/i386/pr81225.c
  dc62d0c848a398624f5cfd76ee220a54  gcc/testsuite/gcc.target/i386/pr81294-1.c
  e15e55cb65acead9f094048fb6e698b9  gcc/testsuite/gcc.target/i386/pr81294-2.c
  80d88d513f3bb1b8ed658fe8c37fb6b0  gcc/testsuite/gcc.target/i386/pr81300.c
  affabb2536eb040c140a3110204ca3b0  gcc/testsuite/gcc.target/i386/pr81375.c
  4a3389f7f2146d2198f9c46d5209ba9f  gcc/testsuite/gcc.target/i386/pr81471.c
  b9816b57d822b91888e41f297b660efe  gcc/testsuite/gcc.target/i386/pr81481.c
  6f823ba95e2ef0fb5061621d3fcd985c  gcc/testsuite/gcc.target/i386/pr81641.c
! 056554173d9ac80e5694f760fcde429f  gcc/testsuite/gcc.target/i386/pr81766.c
  19b3622fb150753481d323bf9ac175ff  gcc/testsuite/gcc.target/i386/pr81906.c
  115b670aa5d368116903b6d6bf4c83ef  gcc/testsuite/gcc.target/i386/pr81921.c
  c68e8244d2a128db4097c8be34013b64  gcc/testsuite/gcc.target/i386/pr82556.c
  515e5dcd6ad99630111df5a872a15e5d  gcc/testsuite/gcc.target/i386/pr82941-1.c
  cce8682d8e49dc83cd8b34fceaf37849  gcc/testsuite/gcc.target/i386/pr82941-2.c
  1aea5be2654d4ae28e01b3b0bdbeddc4  gcc/testsuite/gcc.target/i386/pr82942-1.c
--- 47251,47354 ----
  e9694b4ac41a634860c750f43e4ff35c  gcc/testsuite/gcc.target/i386/pr80298-1.c
  1741f4327b4263e09090e49b0a9ff7e1  gcc/testsuite/gcc.target/i386/pr80298-2.c
  a68ae3ab97b6d21670085a72bc4277db  gcc/testsuite/gcc.target/i386/pr80381.c
+ abc257b14188812bbc7b6c809868219a  gcc/testsuite/gcc.target/i386/pr80425-1.c
+ f55b6997243b3c7b0d3f9a3969344c18  gcc/testsuite/gcc.target/i386/pr80425-2.c
+ e14d5ef49b53cded3c0f7eb05be56489  gcc/testsuite/gcc.target/i386/pr80425-3.c
  ccd1c247864f05916416dc77c0aee2d4  gcc/testsuite/gcc.target/i386/pr80569.c
  7095adb94d5c22dd7820cabd3edd706a  gcc/testsuite/gcc.target/i386/pr80583.c
  0c5a8762e99a86ebb02539f557e3598b  gcc/testsuite/gcc.target/i386/pr80706.c
+ 12901605ab26feeefd09e02d26d24ea7  gcc/testsuite/gcc.target/i386/pr80732.c
  bb36bc80b1317e2a9173fafae3bac834  gcc/testsuite/gcc.target/i386/pr80819-1.c
  e4860277aff5bee9717885cd9f34a2aa  gcc/testsuite/gcc.target/i386/pr80819-2.c
+ c1d3dffadb2171d3b96d7c99547fb0cb  gcc/testsuite/gcc.target/i386/pr80833-1.c
+ ca6cd3958837a92bb6bdc09445126890  gcc/testsuite/gcc.target/i386/pr80833-2.c
+ 32bc4fd95f2deb94e2c3d3a4a2aecb27  gcc/testsuite/gcc.target/i386/pr80833-3.c
+ e9d6922230050e7efcb4180dddeb82a9  gcc/testsuite/gcc.target/i386/pr80846-1.c
+ 88731536442cfb531b1f3df012c579dd  gcc/testsuite/gcc.target/i386/pr80846-2.c
+ f187f32559be05443e870c0b69bd96bb  gcc/testsuite/gcc.target/i386/pr80880.c
+ dea614d72b83541088d8fc13f9632e92  gcc/testsuite/gcc.target/i386/pr80969-1.c
+ 5bfbc9835421f5f499908b7cc26f41bf  gcc/testsuite/gcc.target/i386/pr80969-2.c
+ fe33baa35c1f15d5d17b1b24b2198890  gcc/testsuite/gcc.target/i386/pr80969-2a.c
+ 6ca9eb8e98c02c8304c2f26c75e57784  gcc/testsuite/gcc.target/i386/pr80969-3.c
+ 372beb9b2a5d8c2e6db3668e4bca3818  gcc/testsuite/gcc.target/i386/pr80969-4.c
+ d8621b21da59249d9feb930cca30105d  gcc/testsuite/gcc.target/i386/pr80969-4.h
+ 000d5bf75ca9507041aeef8d08698e0f  gcc/testsuite/gcc.target/i386/pr80969-4a.c
+ b07b394258dbc532fd012fffb78369a7  gcc/testsuite/gcc.target/i386/pr80969-4b.c
  9c5c11ed0d11d02072a3c3edae9496f7  gcc/testsuite/gcc.target/i386/pr81015.c
  9bdf968dfd24f80e026583d0ef721b39  gcc/testsuite/gcc.target/i386/pr81121.c
  4aa131c4fd40500edf612c2566a0a1b2  gcc/testsuite/gcc.target/i386/pr81128.c
+ b4c48a6f74950b5776f17bca55bd154d  gcc/testsuite/gcc.target/i386/pr81213.c
+ e5eeceb51c5c0861f53c91e16fc9ebac  gcc/testsuite/gcc.target/i386/pr81214.c
  727e9852e045506df16768502b0cbe28  gcc/testsuite/gcc.target/i386/pr81225.c
  dc62d0c848a398624f5cfd76ee220a54  gcc/testsuite/gcc.target/i386/pr81294-1.c
  e15e55cb65acead9f094048fb6e698b9  gcc/testsuite/gcc.target/i386/pr81294-2.c
  80d88d513f3bb1b8ed658fe8c37fb6b0  gcc/testsuite/gcc.target/i386/pr81300.c
+ 4b3c4b8ba05feeaf651b95591fc366d1  gcc/testsuite/gcc.target/i386/pr81313-1.c
+ 3794f2d5c5a2c574a3468726964125ed  gcc/testsuite/gcc.target/i386/pr81313-2.c
+ e87a1036e3d593a87a4a827a14cc72fd  gcc/testsuite/gcc.target/i386/pr81313-3.c
+ 8d63c342645fbd92d04ea920eca0dc6f  gcc/testsuite/gcc.target/i386/pr81313-4.c
+ 6fffcbc914d39ebf2870c9eea4cf6d11  gcc/testsuite/gcc.target/i386/pr81313-5.c
  affabb2536eb040c140a3110204ca3b0  gcc/testsuite/gcc.target/i386/pr81375.c
  4a3389f7f2146d2198f9c46d5209ba9f  gcc/testsuite/gcc.target/i386/pr81471.c
  b9816b57d822b91888e41f297b660efe  gcc/testsuite/gcc.target/i386/pr81481.c
+ 98d0e76fde3f746743a32d52d393ac1e  gcc/testsuite/gcc.target/i386/pr81502.c
+ 0fbd924645af9022f2ca1f60904a5836  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/testsuite/gcc.target/i386/pr81654.c
! 1084c3f9ae5d4228734cf15d7271da83  gcc/testsuite/gcc.target/i386/pr81706.c
! 644443e7797c8acf9b8905c48d56a13a  gcc/testsuite/gcc.target/i386/pr81736-1.c
! 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
! ffa16d83c5a56297789b6491e1a84696  gcc/testsuite/gcc.target/i386/pr81769-2.c
  19b3622fb150753481d323bf9ac175ff  gcc/testsuite/gcc.target/i386/pr81906.c
  115b670aa5d368116903b6d6bf4c83ef  gcc/testsuite/gcc.target/i386/pr81921.c
+ 56dc2a5532f02b9336daaa3d4eeb3e28  gcc/testsuite/gcc.target/i386/pr82002-1.c
+ 0922342ea1fe2f223b265a1cd2ce07e3  gcc/testsuite/gcc.target/i386/pr82002-2a.c
+ 18d80b03448521123fce0973c998b472  gcc/testsuite/gcc.target/i386/pr82002-2b.c
+ 23d6be59a257952d289606af88ad99d1  gcc/testsuite/gcc.target/i386/pr82145.c
+ a341930c846fbfc81a481d40beae5f8e  gcc/testsuite/gcc.target/i386/pr82166.c
+ f7220805243aa4ae76bae9889d4575a8  gcc/testsuite/gcc.target/i386/pr82196-1.c
+ a449a7c61f739c78229061088189a02a  gcc/testsuite/gcc.target/i386/pr82196-2.c
+ d6e8f07014049c7252f4c148c6810778  gcc/testsuite/gcc.target/i386/pr82260-1.c
+ 573c6e90ea3feba12c33bc7adc685cec  gcc/testsuite/gcc.target/i386/pr82260-2.c
+ 85b9806cd4c529da1e10f2c9c3f4aa8f  gcc/testsuite/gcc.target/i386/pr82267.c
+ 4cf1a1d96de2db3a470dc2d40ea3380f  gcc/testsuite/gcc.target/i386/pr82281.c
+ d249d6b20101ef7b84141799b7a305a9  gcc/testsuite/gcc.target/i386/pr82361-1.c
+ a0c97e1e96a2b152b4de320f1ed4366e  gcc/testsuite/gcc.target/i386/pr82361-2.c
+ 55d230c57cf1995ee969e5baff8b34c7  gcc/testsuite/gcc.target/i386/pr82370.c
+ c10399d1ca461d449d887689665c60f5  gcc/testsuite/gcc.target/i386/pr82444.c
+ 5d56e39f9ac26bdd7aa4ea0b8c63e11a  gcc/testsuite/gcc.target/i386/pr82460-1.c
+ 8110f4b47f73bad4e95427d82c039c48  gcc/testsuite/gcc.target/i386/pr82460-2.c
+ 0642a629cbc790f4388f9a1375cc32a2  gcc/testsuite/gcc.target/i386/pr82483-1.c
+ 495a476618b158b434e1d3da83a701ba  gcc/testsuite/gcc.target/i386/pr82483-2.c
+ 40f88dc05bb96ef333cb47ff56d40630  gcc/testsuite/gcc.target/i386/pr82498-1.c
+ 9a42a7fa4e3540e80575924df2863f31  gcc/testsuite/gcc.target/i386/pr82498-2.c
+ e9459bfcf921f112450c534f27774ed9  gcc/testsuite/gcc.target/i386/pr82499-1.c
+ 00d426c0b4a8c382f289d00f82fc7317  gcc/testsuite/gcc.target/i386/pr82499-2.c
+ 2914d4ca26cf79dcf54fc4298c7624a3  gcc/testsuite/gcc.target/i386/pr82499-3.c
  c68e8244d2a128db4097c8be34013b64  gcc/testsuite/gcc.target/i386/pr82556.c
+ d779be6e6523bed8d49af2073be794c0  gcc/testsuite/gcc.target/i386/pr82580.c
+ ec965c6c04e6eccada8b8ad3ae3be837  gcc/testsuite/gcc.target/i386/pr82618.c
+ d7c0264a0141e7dada7356837078fe1f  gcc/testsuite/gcc.target/i386/pr82628.c
+ af640e6417bda894b964dcafe04ebb19  gcc/testsuite/gcc.target/i386/pr82659-1.c
+ 74ed9ea54350e72c8ff175a0019a05fd  gcc/testsuite/gcc.target/i386/pr82659-2.c
+ aa2558037d3d720202a8c600f3aa47aa  gcc/testsuite/gcc.target/i386/pr82659-3.c
+ 5e76a6f37dea0349d6e7aa6a97a1f7a6  gcc/testsuite/gcc.target/i386/pr82659-4.c
+ 49f4dfdcf0385c77c063607993abc8c4  gcc/testsuite/gcc.target/i386/pr82659-5.c
+ ad0f59e4fe0e9407ebaddb65a2989530  gcc/testsuite/gcc.target/i386/pr82659-6.c
+ d759476918b912aa5fa84cdf06f95aba  gcc/testsuite/gcc.target/i386/pr82662.c
+ ee329bea3f1c92f52009173ce2dce510  gcc/testsuite/gcc.target/i386/pr82673.c
+ aa1a31dcd2bb10e7497c47e00629d6e0  gcc/testsuite/gcc.target/i386/pr82713.c
+ fee48546949cab9b7dea834adf9c10c3  gcc/testsuite/gcc.target/i386/pr82795.c
  515e5dcd6ad99630111df5a872a15e5d  gcc/testsuite/gcc.target/i386/pr82941-1.c
  cce8682d8e49dc83cd8b34fceaf37849  gcc/testsuite/gcc.target/i386/pr82941-2.c
  1aea5be2654d4ae28e01b3b0bdbeddc4  gcc/testsuite/gcc.target/i386/pr82942-1.c
*************** e78b9ff33e2bc143eef4c5ce3bc640f4  gcc/te
*** 44611,44619 ****
  2f9f76a6c879b9887bcca49404a95240  gcc/testsuite/gcc.target/i386/pr82990-5.c
  d7f60a991290b161c7a4e078936f009e  gcc/testsuite/gcc.target/i386/pr82990-6.c
  c154f3d5dbf0100ab4daf298da4d51da  gcc/testsuite/gcc.target/i386/pr82990-7.c
! 4f189869ec48c57ebc59f27fe7a3e028  gcc/testsuite/gcc.target/i386/pr83330.c
  cd9a57159b45a8dc9f69fb76dba516c9  gcc/testsuite/gcc.target/i386/pr83467-1.c
  f9fd161edde06fb92941f348f3942cd9  gcc/testsuite/gcc.target/i386/pr83467-2.c
  849234c7a569c1e86023244bc5561263  gcc/testsuite/gcc.target/i386/pr9771-1.c
  24ceb6d5f3f5cde4b9d852839bdb98ae  gcc/testsuite/gcc.target/i386/prefetchw-1.c
  f11f4731c396f099373c033ab016a64f  gcc/testsuite/gcc.target/i386/prefetchwt1-1.c
--- 47360,47425 ----
  2f9f76a6c879b9887bcca49404a95240  gcc/testsuite/gcc.target/i386/pr82990-5.c
  d7f60a991290b161c7a4e078936f009e  gcc/testsuite/gcc.target/i386/pr82990-6.c
  c154f3d5dbf0100ab4daf298da4d51da  gcc/testsuite/gcc.target/i386/pr82990-7.c
! c3aa2b794df8c4324dba61c205ba9aa6  gcc/testsuite/gcc.target/i386/pr83008.c
! 6835eae8ea408bb193a56d38af9b51af  gcc/testsuite/gcc.target/i386/pr83210.c
! b85161e5ba230dfe69612111dafab7e6  gcc/testsuite/gcc.target/i386/pr83317.c
! 7f71f073a719dec254beaafac252d46d  gcc/testsuite/gcc.target/i386/pr83330.c
! 7d9a17c48cced21950e5b74ab4d1d8c4  gcc/testsuite/gcc.target/i386/pr83358-1.c
! cafc9c64e79800d7ae2d762917add9d0  gcc/testsuite/gcc.target/i386/pr83358-2.c
  cd9a57159b45a8dc9f69fb76dba516c9  gcc/testsuite/gcc.target/i386/pr83467-1.c
  f9fd161edde06fb92941f348f3942cd9  gcc/testsuite/gcc.target/i386/pr83467-2.c
+ 34b865a276acc2ac3831fd68b8043bb6  gcc/testsuite/gcc.target/i386/pr83488-2.c
+ a0fcc3d48a1a14a2b0deb08aede99332  gcc/testsuite/gcc.target/i386/pr83488-3.c
+ be4886fc2cd0dbd18a9cbd38f8d6690d  gcc/testsuite/gcc.target/i386/pr83488.c
+ 0d9a79a28d25640b5f02f32b94794287  gcc/testsuite/gcc.target/i386/pr83546.c
+ a01c1fd64194c4e6e21c47403595366b  gcc/testsuite/gcc.target/i386/pr83554.c
+ 877cca55706c376ea1ea168f35d65b39  gcc/testsuite/gcc.target/i386/pr83604.c
+ 3592e3b6e0dee866a764af464d0ee7af  gcc/testsuite/gcc.target/i386/pr83620.c
+ 1cbb11f638276c7d3789f6d1a6aee18f  gcc/testsuite/gcc.target/i386/pr83682.c
+ 038b9c92a928a2196a93e23a317b09ba  gcc/testsuite/gcc.target/i386/pr83735.c
+ aa9de40f87e1067b65e91f1ff3060c0c  gcc/testsuite/gcc.target/i386/pr83994.c
+ 898a487bfe8ece1ba9283d78e23c3064  gcc/testsuite/gcc.target/i386/pr84064.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
+ c69c3bea82e3b6d7058e5910c4e290f2  gcc/testsuite/gcc.target/i386/pr84310.c
+ 59f622f0ad447d9b9f21e1aaddd4bfac  gcc/testsuite/gcc.target/i386/pr84335.c
+ 161ab380e2efcff987ed34658e8dc205  gcc/testsuite/gcc.target/i386/pr84336.c
+ 5509eed5a713f3d388d75f3ef78611ec  gcc/testsuite/gcc.target/i386/pr84564.c
+ cc51cb48f7db1678bae9e4da234e3807  gcc/testsuite/gcc.target/i386/pr84625.c
+ f9c6b5bc56d17f16a6d9178987415964  gcc/testsuite/gcc.target/i386/pr84723-1.c
+ b1d411e138437b4021c6ad928ab1a90f  gcc/testsuite/gcc.target/i386/pr84723-2.c
+ 67c781488c800232e26f905766135fd4  gcc/testsuite/gcc.target/i386/pr84723-3.c
+ 504cd3a34abfbfb7c6c32329aa99f1ed  gcc/testsuite/gcc.target/i386/pr84723-4.c
+ 2b6ffa416c8da4597dc378bdbc94c6a2  gcc/testsuite/gcc.target/i386/pr84723-5.c
+ c2713286552f07ac4fea6dcb1b12ac3c  gcc/testsuite/gcc.target/i386/pr84742-1.c
+ 49b10b659088ec37bab092ef55bd2642  gcc/testsuite/gcc.target/i386/pr84742-2.c
+ 5435d67b61a499c7fee5dceca4d38535  gcc/testsuite/gcc.target/i386/pr84827.c
+ c476ce9c85fd2d6635a7b7b3c213a831  gcc/testsuite/gcc.target/i386/pr84844.c
+ 0169ebe2c020ca8986468147914a24a8  gcc/testsuite/gcc.target/i386/pr84876.c
+ db37ebccda7aeb13b5467c554d55464d  gcc/testsuite/gcc.target/i386/pr84945.c
+ 6a76981e7d281bb69c2cdfe5148553eb  gcc/testsuite/gcc.target/i386/pr84985.c
+ 0389ebb77df63b9c8c906303370d50a2  gcc/testsuite/gcc.target/i386/pr84989.c
+ 7de16d271305fbc57253a0e36f0a3b49  gcc/testsuite/gcc.target/i386/pr85030.c
+ 5201e4b46743783ec10e1007df3e29bf  gcc/testsuite/gcc.target/i386/pr85034.c
+ f3aa0281f000b91bd584bdb4f0907f48  gcc/testsuite/gcc.target/i386/pr85044.c
+ c3e60f2d408d922af65e6629988bff40  gcc/testsuite/gcc.target/i386/pr85073.c
+ 240d163e1ad4d0cb25ce82ae3b980872  gcc/testsuite/gcc.target/i386/pr85095-1.c
+ da8dddf5375beef8a5899951924780ea  gcc/testsuite/gcc.target/i386/pr85095-2.c
+ 2c9fa20db8db57984e210a776424e3aa  gcc/testsuite/gcc.target/i386/pr85193.c
+ 262cf8122c246bfa7f7974ab94c0aa5a  gcc/testsuite/gcc.target/i386/pr85281.c
+ 7150bc1ab702639745bb100f1dbe27a3  gcc/testsuite/gcc.target/i386/pr85328.c
+ 59764880be1f98d04175c64e19e6bbfe  gcc/testsuite/gcc.target/i386/pr85342.c
+ 9c2173405d7c655e7e882f84624f9362  gcc/testsuite/gcc.target/i386/pr85403.c
+ 35cf52e2d2d484719af59b590e3000a3  gcc/testsuite/gcc.target/i386/pr85404.c
+ 7c60fcf8d9f441271e1bad261844ebca  gcc/testsuite/gcc.target/i386/pr85417-1.c
+ 0022d2cb76f38f4d0c64782752aab287  gcc/testsuite/gcc.target/i386/pr85473-1.c
+ 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
  849234c7a569c1e86023244bc5561263  gcc/testsuite/gcc.target/i386/pr9771-1.c
  24ceb6d5f3f5cde4b9d852839bdb98ae  gcc/testsuite/gcc.target/i386/prefetchw-1.c
  f11f4731c396f099373c033ab016a64f  gcc/testsuite/gcc.target/i386/prefetchwt1-1.c
*************** f11f4731c396f099373c033ab016a64f  gcc/te
*** 44623,44629 ****
  f65c92042f645a4147cc6f4fcc1d717a  gcc/testsuite/gcc.target/i386/rdfsbase-2.c
  47f1d67eee8b98ccbc0ba91d2ba98f10  gcc/testsuite/gcc.target/i386/rdgsbase-1.c
  6280f08eb922621ae2454284e1dc37d6  gcc/testsuite/gcc.target/i386/rdgsbase-2.c
! d248ef0e4a892028015ed473a7be5c1d  gcc/testsuite/gcc.target/i386/rdpid.c
  cb538410d2dabb5b487b1683d8a090a1  gcc/testsuite/gcc.target/i386/rdpku-1.c
  4a22231454febae70d813e5fff186fd5  gcc/testsuite/gcc.target/i386/rdrand-1.c
  03887bc8687527798fd14ec8b561e3ad  gcc/testsuite/gcc.target/i386/rdrand-2.c
--- 47429,47435 ----
  f65c92042f645a4147cc6f4fcc1d717a  gcc/testsuite/gcc.target/i386/rdfsbase-2.c
  47f1d67eee8b98ccbc0ba91d2ba98f10  gcc/testsuite/gcc.target/i386/rdgsbase-1.c
  6280f08eb922621ae2454284e1dc37d6  gcc/testsuite/gcc.target/i386/rdgsbase-2.c
! 6a710ac92db5287db43572974002059b  gcc/testsuite/gcc.target/i386/rdpid.c
  cb538410d2dabb5b487b1683d8a090a1  gcc/testsuite/gcc.target/i386/rdpku-1.c
  4a22231454febae70d813e5fff186fd5  gcc/testsuite/gcc.target/i386/rdrand-1.c
  03887bc8687527798fd14ec8b561e3ad  gcc/testsuite/gcc.target/i386/rdrand-2.c
*************** e2839913fadc6a00676c8f02deb3f59e  gcc/te
*** 44638,44654 ****
  0076bfe9b96eb7efd6c7a5cb8b6a4467  gcc/testsuite/gcc.target/i386/recip-vec-divf.c
  7429731d2f6b996b2f421b87eac73d71  gcc/testsuite/gcc.target/i386/recip-vec-sqrtf-avx.c
  1935b0b3b4df5ba36df8c1e173c94607  gcc/testsuite/gcc.target/i386/recip-vec-sqrtf.c
! 984ff9c3f929a3669ba2f344dce24b9b  gcc/testsuite/gcc.target/i386/record-mcount.c
  27b94da412b0e514a304cb667a1125f1  gcc/testsuite/gcc.target/i386/regparm-stdcall.c
  f460909450afd8b803c32061496a4d75  gcc/testsuite/gcc.target/i386/regparm.c
  e47bbd1acfd37236fccff011d4c82e82  gcc/testsuite/gcc.target/i386/reload-1.c
  e7bdddab413e9342ceea674dcc11efa9  gcc/testsuite/gcc.target/i386/ret-thunk-1.c
! f7ddc9357e27cb1a35858228246b103f  gcc/testsuite/gcc.target/i386/ret-thunk-10.c
! 698bef1f53cf010233e212c8fe19b7ab  gcc/testsuite/gcc.target/i386/ret-thunk-11.c
! 1e34c804e73f44c3d03b858886434790  gcc/testsuite/gcc.target/i386/ret-thunk-12.c
! 643f3ad3cf96563036a9a2bd89dc5511  gcc/testsuite/gcc.target/i386/ret-thunk-13.c
! 06360908356b170618f1d1c2b8af0ef6  gcc/testsuite/gcc.target/i386/ret-thunk-14.c
! ec8ee957ca4270e5708010918e265a01  gcc/testsuite/gcc.target/i386/ret-thunk-15.c
  eab910bbf14695323d54cd2754f6c13c  gcc/testsuite/gcc.target/i386/ret-thunk-16.c
  cc34b9f508b9c8334f3288b096cb78f7  gcc/testsuite/gcc.target/i386/ret-thunk-17.c
  7d462469a74829644f625dfd13e56245  gcc/testsuite/gcc.target/i386/ret-thunk-18.c
--- 47444,47460 ----
  0076bfe9b96eb7efd6c7a5cb8b6a4467  gcc/testsuite/gcc.target/i386/recip-vec-divf.c
  7429731d2f6b996b2f421b87eac73d71  gcc/testsuite/gcc.target/i386/recip-vec-sqrtf-avx.c
  1935b0b3b4df5ba36df8c1e173c94607  gcc/testsuite/gcc.target/i386/recip-vec-sqrtf.c
! 2feb34998416b64edd7dc4be67c74388  gcc/testsuite/gcc.target/i386/record-mcount.c
  27b94da412b0e514a304cb667a1125f1  gcc/testsuite/gcc.target/i386/regparm-stdcall.c
  f460909450afd8b803c32061496a4d75  gcc/testsuite/gcc.target/i386/regparm.c
  e47bbd1acfd37236fccff011d4c82e82  gcc/testsuite/gcc.target/i386/reload-1.c
  e7bdddab413e9342ceea674dcc11efa9  gcc/testsuite/gcc.target/i386/ret-thunk-1.c
! 07608fba857fa4155e300a8ab038eb73  gcc/testsuite/gcc.target/i386/ret-thunk-10.c
! 0e917c21adaa8ed8f2ef1aba8e2f74dd  gcc/testsuite/gcc.target/i386/ret-thunk-11.c
! f586d3b6d44cf751b4c96abd41d73a53  gcc/testsuite/gcc.target/i386/ret-thunk-12.c
! c7716ba4d15d568304b3d15fa4dd1efa  gcc/testsuite/gcc.target/i386/ret-thunk-13.c
! a115b1a64b3d2e61e179f8cb9c41c216  gcc/testsuite/gcc.target/i386/ret-thunk-14.c
! 1001b8218da78b5babe016a4811af780  gcc/testsuite/gcc.target/i386/ret-thunk-15.c
  eab910bbf14695323d54cd2754f6c13c  gcc/testsuite/gcc.target/i386/ret-thunk-16.c
  cc34b9f508b9c8334f3288b096cb78f7  gcc/testsuite/gcc.target/i386/ret-thunk-17.c
  7d462469a74829644f625dfd13e56245  gcc/testsuite/gcc.target/i386/ret-thunk-18.c
*************** cc34b9f508b9c8334f3288b096cb78f7  gcc/te
*** 44656,44668 ****
  dd35d0e1f55e30827da00a7a3b72f2fc  gcc/testsuite/gcc.target/i386/ret-thunk-2.c
  f3573edd139415913734286a945036c2  gcc/testsuite/gcc.target/i386/ret-thunk-20.c
  b2806d5288ed6597c93c3c78b98f8d80  gcc/testsuite/gcc.target/i386/ret-thunk-21.c
  fd5c5e9bb01a2b8dc7c5f900d1d87998  gcc/testsuite/gcc.target/i386/ret-thunk-3.c
  ca53ce2b9665ac27d11a2ef828928360  gcc/testsuite/gcc.target/i386/ret-thunk-4.c
  b0ef8962f326b0e0b7e4311f2dc69a16  gcc/testsuite/gcc.target/i386/ret-thunk-5.c
  c7853edb1c95703c93c35ebe12f833be  gcc/testsuite/gcc.target/i386/ret-thunk-6.c
  b51e205421f10208d462405cedb0f344  gcc/testsuite/gcc.target/i386/ret-thunk-7.c
  848e6463fd3be83bbddee8c7c6dbfdf3  gcc/testsuite/gcc.target/i386/ret-thunk-8.c
! 909a19120c19fc13bd747c8a92b1fb19  gcc/testsuite/gcc.target/i386/ret-thunk-9.c
  fe7ee8a9110596ef272c4f9b6ad8adad  gcc/testsuite/gcc.target/i386/retarg.c
  7a1e62697051aa68ade1f41fac61f6f8  gcc/testsuite/gcc.target/i386/rop1.c
  63bd489c03ce382cdba38349c30041ad  gcc/testsuite/gcc.target/i386/rotate-1.c
--- 47462,47479 ----
  dd35d0e1f55e30827da00a7a3b72f2fc  gcc/testsuite/gcc.target/i386/ret-thunk-2.c
  f3573edd139415913734286a945036c2  gcc/testsuite/gcc.target/i386/ret-thunk-20.c
  b2806d5288ed6597c93c3c78b98f8d80  gcc/testsuite/gcc.target/i386/ret-thunk-21.c
+ 2c5f8484e1fe3ff717433984bd9e430e  gcc/testsuite/gcc.target/i386/ret-thunk-22.c
+ 224c4a6a3890adb17f39118b19a33a3b  gcc/testsuite/gcc.target/i386/ret-thunk-23.c
+ 0ec08e1985573ff0205c8a7332d5f386  gcc/testsuite/gcc.target/i386/ret-thunk-24.c
+ 97183e70692a615a0923a028c6a93205  gcc/testsuite/gcc.target/i386/ret-thunk-25.c
+ 5c8cf1edc83ad31d94dba18df2541bd3  gcc/testsuite/gcc.target/i386/ret-thunk-26.c
  fd5c5e9bb01a2b8dc7c5f900d1d87998  gcc/testsuite/gcc.target/i386/ret-thunk-3.c
  ca53ce2b9665ac27d11a2ef828928360  gcc/testsuite/gcc.target/i386/ret-thunk-4.c
  b0ef8962f326b0e0b7e4311f2dc69a16  gcc/testsuite/gcc.target/i386/ret-thunk-5.c
  c7853edb1c95703c93c35ebe12f833be  gcc/testsuite/gcc.target/i386/ret-thunk-6.c
  b51e205421f10208d462405cedb0f344  gcc/testsuite/gcc.target/i386/ret-thunk-7.c
  848e6463fd3be83bbddee8c7c6dbfdf3  gcc/testsuite/gcc.target/i386/ret-thunk-8.c
! 2f2c6e5c76f0d73d3f69a5c58a4ddf1d  gcc/testsuite/gcc.target/i386/ret-thunk-9.c
  fe7ee8a9110596ef272c4f9b6ad8adad  gcc/testsuite/gcc.target/i386/retarg.c
  7a1e62697051aa68ade1f41fac61f6f8  gcc/testsuite/gcc.target/i386/rop1.c
  63bd489c03ce382cdba38349c30041ad  gcc/testsuite/gcc.target/i386/rotate-1.c
*************** f866bdeeebb744ba85eb8a56a351d9ce  gcc/te
*** 44673,44679 ****
  b3dc0d6c504f9985b1ec853a2ea1f552  gcc/testsuite/gcc.target/i386/rotate-4a.c
  e0e82a96b9fe76815f9250103b103e7b  gcc/testsuite/gcc.target/i386/rotate-5.c
  5e043cdfeb2caa1c3d68abe34e504ac6  gcc/testsuite/gcc.target/i386/rotate-5a.c
! 180c6e47e7235bf073833f06bf5334de  gcc/testsuite/gcc.target/i386/rtm-check.h
  097d79c6b182bd897a4461103de5f332  gcc/testsuite/gcc.target/i386/rtm-xabort-1.c
  7fd857319bdcc9049991294652943c98  gcc/testsuite/gcc.target/i386/rtm-xbegin-1.c
  9e2fab54032ef9d21789f19e68471555  gcc/testsuite/gcc.target/i386/rtm-xend-1.c
--- 47484,47490 ----
  b3dc0d6c504f9985b1ec853a2ea1f552  gcc/testsuite/gcc.target/i386/rotate-4a.c
  e0e82a96b9fe76815f9250103b103e7b  gcc/testsuite/gcc.target/i386/rotate-5.c
  5e043cdfeb2caa1c3d68abe34e504ac6  gcc/testsuite/gcc.target/i386/rotate-5a.c
! 361a25645f97be3dfad63265fe02e0df  gcc/testsuite/gcc.target/i386/rtm-check.h
  097d79c6b182bd897a4461103de5f332  gcc/testsuite/gcc.target/i386/rtm-xabort-1.c
  7fd857319bdcc9049991294652943c98  gcc/testsuite/gcc.target/i386/rtm-xbegin-1.c
  9e2fab54032ef9d21789f19e68471555  gcc/testsuite/gcc.target/i386/rtm-xend-1.c
*************** d972e8dd48d19a6440cd7b63d7254c83  gcc/te
*** 44683,44690 ****
  cf00a8a2d0f04ca8796391128435b5c5  gcc/testsuite/gcc.target/i386/set-v16qi-3.h
  e3010259fd969225e1ae036ff2dbbcf1  gcc/testsuite/gcc.target/i386/set-v8hi-1.h
  df7fe464f1a66a5f86ee8844223864bf  gcc/testsuite/gcc.target/i386/set-v8hi-2.h
! 54ae20b156dcb69d782a16635540a711  gcc/testsuite/gcc.target/i386/sgx.c
! 9e6a37bacc5a8b70599b75b143455fbb  gcc/testsuite/gcc.target/i386/sha-check.h
  511a342a2698ef6a77eb8d291927fff5  gcc/testsuite/gcc.target/i386/sha1msg1-1.c
  5e8e0f5adc9c194ecbbce80f794c0f7a  gcc/testsuite/gcc.target/i386/sha1msg1-2.c
  20a205e37970ae77e828c09702257644  gcc/testsuite/gcc.target/i386/sha1msg2-1.c
--- 47494,47501 ----
  cf00a8a2d0f04ca8796391128435b5c5  gcc/testsuite/gcc.target/i386/set-v16qi-3.h
  e3010259fd969225e1ae036ff2dbbcf1  gcc/testsuite/gcc.target/i386/set-v8hi-1.h
  df7fe464f1a66a5f86ee8844223864bf  gcc/testsuite/gcc.target/i386/set-v8hi-2.h
! 9bfec9dc5427c758f1b6c4c8b6b1665d  gcc/testsuite/gcc.target/i386/sgx.c
! affa49da5e31be36a36b297ae7f02626  gcc/testsuite/gcc.target/i386/sha-check.h
  511a342a2698ef6a77eb8d291927fff5  gcc/testsuite/gcc.target/i386/sha1msg1-1.c
  5e8e0f5adc9c194ecbbce80f794c0f7a  gcc/testsuite/gcc.target/i386/sha1msg1-2.c
  20a205e37970ae77e828c09702257644  gcc/testsuite/gcc.target/i386/sha1msg2-1.c
*************** b5540c2e6c4aa6f5730ae17876c12e1f  gcc/te
*** 44718,44728 ****
  76fe9bc79bc28950109f6611fb70870f  gcc/testsuite/gcc.target/i386/spellcheck-options-3.c
  7bee17ed5d5f2906f658fcceaed200dd  gcc/testsuite/gcc.target/i386/spellcheck-options-4.c
  cc8a162617784a2e883a5e726d28ebde  gcc/testsuite/gcc.target/i386/sse-1.c
! 9bad27158ce36a5ce8a320dbc944e434  gcc/testsuite/gcc.target/i386/sse-10.c
  49bde97b271274cb2bc26697ce2b19be  gcc/testsuite/gcc.target/i386/sse-11.c
! 362a77a03708490b298fae18881b4d07  gcc/testsuite/gcc.target/i386/sse-12.c
! 1de59aa47ad8b1bf4179f871e4faa4f8  gcc/testsuite/gcc.target/i386/sse-13.c
! 6c4499213909c1d6018c41c91708b939  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
--- 47529,47539 ----
  76fe9bc79bc28950109f6611fb70870f  gcc/testsuite/gcc.target/i386/spellcheck-options-3.c
  7bee17ed5d5f2906f658fcceaed200dd  gcc/testsuite/gcc.target/i386/spellcheck-options-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
! 769a782b181b404f593c14e1409cb073  gcc/testsuite/gcc.target/i386/sse-12.c
! 16ef70df28911136173a027d49658b59  gcc/testsuite/gcc.target/i386/sse-13.c
! 3ce8f5debc77ff8df28cbea0e8d2dd93  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
*** 44731,44744 ****
  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
! 406edfb42507f5baf0def27c42146dda  gcc/testsuite/gcc.target/i386/sse-22.c
  1c2df57cb3d7d6a3daf4084135ba9b1b  gcc/testsuite/gcc.target/i386/sse-22a.c
! cdc8836cb2040794b3b7a3a2064e06ec  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
  9dfe2cc74e998cef475e202f64ff8322  gcc/testsuite/gcc.target/i386/sse-3.c
  5d81ca69ddc7b70211c056c3bdc53dfa  gcc/testsuite/gcc.target/i386/sse-4.c
! faecfbe3d0a0ecb407d434b41ccce35c  gcc/testsuite/gcc.target/i386/sse-5.c
  34561bfb4872c917d97994d7de3828b5  gcc/testsuite/gcc.target/i386/sse-6.c
  f6cdb29d66458dbcca710bda033dc0ca  gcc/testsuite/gcc.target/i386/sse-7.c
  b3b5bc8c0bda286d794a088170067893  gcc/testsuite/gcc.target/i386/sse-8.c
--- 47542,47556 ----
  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
! 5cd4bb713088bd28562449e528363b63  gcc/testsuite/gcc.target/i386/sse-22.c
  1c2df57cb3d7d6a3daf4084135ba9b1b  gcc/testsuite/gcc.target/i386/sse-22a.c
! e384d95774132b2ab442fe5313b7517f  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
  9dfe2cc74e998cef475e202f64ff8322  gcc/testsuite/gcc.target/i386/sse-3.c
  5d81ca69ddc7b70211c056c3bdc53dfa  gcc/testsuite/gcc.target/i386/sse-4.c
! 61e96951e72e9099132e830d78d88dd2  gcc/testsuite/gcc.target/i386/sse-5.c
  34561bfb4872c917d97994d7de3828b5  gcc/testsuite/gcc.target/i386/sse-6.c
  f6cdb29d66458dbcca710bda033dc0ca  gcc/testsuite/gcc.target/i386/sse-7.c
  b3b5bc8c0bda286d794a088170067893  gcc/testsuite/gcc.target/i386/sse-8.c
*************** a17640d6e8c3fb4015b3e46eedfec394  gcc/te
*** 44765,44772 ****
  3505e52bbc59fc59f60921d6cd5bee99  gcc/testsuite/gcc.target/i386/sse-divps-1.c
  0c0f489b28655dbafacbf31bb309f555  gcc/testsuite/gcc.target/i386/sse-divss-1.c
  631a6c000197451ea43058b342a6f855  gcc/testsuite/gcc.target/i386/sse-globalreg.c
! 8b85558c6ee55904994783f1aff372c8  gcc/testsuite/gcc.target/i386/sse-init-v4hi-1.c
! cfe36d3ea5b0fbc300cd5fef60e07a9a  gcc/testsuite/gcc.target/i386/sse-init-v4sf-1.c
  e705960bdfcc3fab219a9646e69f574e  gcc/testsuite/gcc.target/i386/sse-maxps-1.c
  3586f28051dca7de135795e687bde3d2  gcc/testsuite/gcc.target/i386/sse-maxss-1.c
  fc357b7da15d21bced5dda082a5316e4  gcc/testsuite/gcc.target/i386/sse-minps-1.c
--- 47577,47584 ----
  3505e52bbc59fc59f60921d6cd5bee99  gcc/testsuite/gcc.target/i386/sse-divps-1.c
  0c0f489b28655dbafacbf31bb309f555  gcc/testsuite/gcc.target/i386/sse-divss-1.c
  631a6c000197451ea43058b342a6f855  gcc/testsuite/gcc.target/i386/sse-globalreg.c
! e41b0032514bd98819d07cc4bbcd2e12  gcc/testsuite/gcc.target/i386/sse-init-v4hi-1.c
! bb408838f48f3bff5e57b21b3ec99129  gcc/testsuite/gcc.target/i386/sse-init-v4sf-1.c
  e705960bdfcc3fab219a9646e69f574e  gcc/testsuite/gcc.target/i386/sse-maxps-1.c
  3586f28051dca7de135795e687bde3d2  gcc/testsuite/gcc.target/i386/sse-maxss-1.c
  fc357b7da15d21bced5dda082a5316e4  gcc/testsuite/gcc.target/i386/sse-minps-1.c
*************** bcf0d6d51d39f674c2672181211f8783  gcc/te
*** 44792,44798 ****
  717722e6af4d66ee3202cb215f622945  gcc/testsuite/gcc.target/i386/sse-recip-vec.c
  3f9ef1b15bd7ed1556ef4a6fc75b7a66  gcc/testsuite/gcc.target/i386/sse-recip.c
  5edc79770097d674d8172960a971c52b  gcc/testsuite/gcc.target/i386/sse-rsqrtps-1.c
! ceca3fb0024061a35aae0907e590d0fb  gcc/testsuite/gcc.target/i386/sse-set-ps-1.c
  faeba3d2d853ae3650e4e1152bbb29ca  gcc/testsuite/gcc.target/i386/sse-sqrtps-1.c
  8f0199beb6d69e73f059bb38f7949bee  gcc/testsuite/gcc.target/i386/sse-subps-1.c
  40f702f7e150860651edfe2e1d8d4c01  gcc/testsuite/gcc.target/i386/sse-subss-1.c
--- 47604,47610 ----
  717722e6af4d66ee3202cb215f622945  gcc/testsuite/gcc.target/i386/sse-recip-vec.c
  3f9ef1b15bd7ed1556ef4a6fc75b7a66  gcc/testsuite/gcc.target/i386/sse-recip.c
  5edc79770097d674d8172960a971c52b  gcc/testsuite/gcc.target/i386/sse-rsqrtps-1.c
! f0db0d6ed6ba6d56e58e4f1cab7bb93d  gcc/testsuite/gcc.target/i386/sse-set-ps-1.c
  faeba3d2d853ae3650e4e1152bbb29ca  gcc/testsuite/gcc.target/i386/sse-sqrtps-1.c
  8f0199beb6d69e73f059bb38f7949bee  gcc/testsuite/gcc.target/i386/sse-subps-1.c
  40f702f7e150860651edfe2e1d8d4c01  gcc/testsuite/gcc.target/i386/sse-subss-1.c
*************** e732da1bea01895c7e57d68c95815451  gcc/te
*** 44804,44810 ****
  4a6ecdfcf542baef0610e56cf9bacdc6  gcc/testsuite/gcc.target/i386/sse-ucomiss-6.c
  e80e025b5521ce049d975cd0376dd73f  gcc/testsuite/gcc.target/i386/sse-unpckhps-1.c
  96937d4f53343afbd857a121ebb693f7  gcc/testsuite/gcc.target/i386/sse-unpcklps-1.c
! e900962f550361d9b853fcf2c77f4a7e  gcc/testsuite/gcc.target/i386/sse-vect-types.c
  a41fe7dc0e539ceefca894e1f80e769e  gcc/testsuite/gcc.target/i386/sse-xorps-1.c
  d577617bdd4e8a2de2ec9b6e4bde1eb4  gcc/testsuite/gcc.target/i386/sse2-addpd-1.c
  45d458b0f755e9542ac936ae4fc8eb16  gcc/testsuite/gcc.target/i386/sse2-addsd-1.c
--- 47616,47622 ----
  4a6ecdfcf542baef0610e56cf9bacdc6  gcc/testsuite/gcc.target/i386/sse-ucomiss-6.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
  a41fe7dc0e539ceefca894e1f80e769e  gcc/testsuite/gcc.target/i386/sse-xorps-1.c
  d577617bdd4e8a2de2ec9b6e4bde1eb4  gcc/testsuite/gcc.target/i386/sse2-addpd-1.c
  45d458b0f755e9542ac936ae4fc8eb16  gcc/testsuite/gcc.target/i386/sse2-addsd-1.c
*************** b9ce5798c339f3d6a78c41c0059bb5e2  gcc/te
*** 44842,44852 ****
  fc535f253868df6d104fe59110255bbe  gcc/testsuite/gcc.target/i386/sse2-divpd-1.c
  c61ecb520f8d8d7266675b405d7b2aa7  gcc/testsuite/gcc.target/i386/sse2-divsd-1.c
  a4889872f8bd70b679c9e9fc5ee3617f  gcc/testsuite/gcc.target/i386/sse2-extract-1.c
! 2826f31ddc998ab7f07b1235d215e39d  gcc/testsuite/gcc.target/i386/sse2-init-v16qi-1.c
! 7ed343a35790aa4739272bbb5559e6fb  gcc/testsuite/gcc.target/i386/sse2-init-v2di-1.c
! 9c7818903e1e74d8fc0c2c1dcf0a5b3a  gcc/testsuite/gcc.target/i386/sse2-init-v2di-2.c
! f53a36e4b14e3ead4c8fcaec57e63ddb  gcc/testsuite/gcc.target/i386/sse2-init-v4si-1.c
! 8fbafd8cda93cc37dbbd3283557aaadc  gcc/testsuite/gcc.target/i386/sse2-init-v8hi-1.c
  ab3d931551e5d316055b4496b4315710  gcc/testsuite/gcc.target/i386/sse2-insvhi.c
  962159a489207a78ad1f9c6688115d5c  gcc/testsuite/gcc.target/i386/sse2-load-multi.c
  de4aecf22a8108ad2498b7a0761ed800  gcc/testsuite/gcc.target/i386/sse2-lrint-vec.c
--- 47654,47664 ----
  fc535f253868df6d104fe59110255bbe  gcc/testsuite/gcc.target/i386/sse2-divpd-1.c
  c61ecb520f8d8d7266675b405d7b2aa7  gcc/testsuite/gcc.target/i386/sse2-divsd-1.c
  a4889872f8bd70b679c9e9fc5ee3617f  gcc/testsuite/gcc.target/i386/sse2-extract-1.c
! bce0423c5fcea8a8b29f29c4fb6680c2  gcc/testsuite/gcc.target/i386/sse2-init-v16qi-1.c
! 8e1f68af9dae754623af8653e461ece1  gcc/testsuite/gcc.target/i386/sse2-init-v2di-1.c
! ff8582dc7eae2b8da2c0a3c4f1de114a  gcc/testsuite/gcc.target/i386/sse2-init-v2di-2.c
! 22cfc5e0e378015ed2ae19d500d60459  gcc/testsuite/gcc.target/i386/sse2-init-v4si-1.c
! aed1b9df37d34e50ddddbcb943bc885f  gcc/testsuite/gcc.target/i386/sse2-init-v8hi-1.c
  ab3d931551e5d316055b4496b4315710  gcc/testsuite/gcc.target/i386/sse2-insvhi.c
  962159a489207a78ad1f9c6688115d5c  gcc/testsuite/gcc.target/i386/sse2-load-multi.c
  de4aecf22a8108ad2498b7a0761ed800  gcc/testsuite/gcc.target/i386/sse2-lrint-vec.c
*************** bc284489629affc959c93b03096c8e25  gcc/te
*** 44959,44966 ****
  7525c192086f8e667100aa2237a8b7b5  gcc/testsuite/gcc.target/i386/sse2-pxor-1.c
  3b58c655e4d5561d9f162d0412537ce4  gcc/testsuite/gcc.target/i386/sse2-rint-inline-1.c
  3702d1b9d8b29d8f52ee7c6dee55e634  gcc/testsuite/gcc.target/i386/sse2-rint-inline-2.c
! 1b52e5d56dca0f7a127b0690903b39b0  gcc/testsuite/gcc.target/i386/sse2-set-epi32-1.c
! abc5b4d607de5944b64eb304a1a6ec6f  gcc/testsuite/gcc.target/i386/sse2-set-epi64x-1.c
  589d03d33e589b13a71b9a5a01d750f2  gcc/testsuite/gcc.target/i386/sse2-set-v16qi-1.c
  1b820e04d09f063d478cb6d35d38c0b4  gcc/testsuite/gcc.target/i386/sse2-set-v16qi-2.c
  30138811a0947e7b0a6279288b5f5907  gcc/testsuite/gcc.target/i386/sse2-set-v16qi-3.c
--- 47771,47778 ----
  7525c192086f8e667100aa2237a8b7b5  gcc/testsuite/gcc.target/i386/sse2-pxor-1.c
  3b58c655e4d5561d9f162d0412537ce4  gcc/testsuite/gcc.target/i386/sse2-rint-inline-1.c
  3702d1b9d8b29d8f52ee7c6dee55e634  gcc/testsuite/gcc.target/i386/sse2-rint-inline-2.c
! 467e62c7e3d2473e92343d5953ba7edb  gcc/testsuite/gcc.target/i386/sse2-set-epi32-1.c
! 5459298b6c931c067a039f7bcda57f85  gcc/testsuite/gcc.target/i386/sse2-set-epi64x-1.c
  589d03d33e589b13a71b9a5a01d750f2  gcc/testsuite/gcc.target/i386/sse2-set-v16qi-1.c
  1b820e04d09f063d478cb6d35d38c0b4  gcc/testsuite/gcc.target/i386/sse2-set-v16qi-2.c
  30138811a0947e7b0a6279288b5f5907  gcc/testsuite/gcc.target/i386/sse2-set-v16qi-3.c
*************** ddaeca9f0c7bfb3c9fa1cbd6c93a531c  gcc/te
*** 45023,45032 ****
  9d27cd83c2b21e3a6a039e38a4918706  gcc/testsuite/gcc.target/i386/sse4_1-floor-vec.c
  575c70ae7c0ca26031743c2929b04545  gcc/testsuite/gcc.target/i386/sse4_1-floorf-sfix-vec.c
  ffc97967e3da1413e3683c4f3e18510b  gcc/testsuite/gcc.target/i386/sse4_1-floorf-vec.c
! 1b0b58a66efa3565c44360481ed296c4  gcc/testsuite/gcc.target/i386/sse4_1-init-v16qi-1.c
! 9352e8cef9e75ebf4d1fc885cfe2c502  gcc/testsuite/gcc.target/i386/sse4_1-init-v2di-1.c
! c802525bac89591d08ec4ee120bdc156  gcc/testsuite/gcc.target/i386/sse4_1-init-v4sf-1.c
! e5a53334c0fefe2aa6009094d0d8f982  gcc/testsuite/gcc.target/i386/sse4_1-init-v4si-1.c
  9697ffdb1e10ae3cb3b7e1c2c8cfaa01  gcc/testsuite/gcc.target/i386/sse4_1-insertps-1.c
  90c8599a467abc2454dac6a68dc4ba6c  gcc/testsuite/gcc.target/i386/sse4_1-insertps-2.c
  909b150567f6eceb243322e353156041  gcc/testsuite/gcc.target/i386/sse4_1-insertps-3.c
--- 47835,47844 ----
  9d27cd83c2b21e3a6a039e38a4918706  gcc/testsuite/gcc.target/i386/sse4_1-floor-vec.c
  575c70ae7c0ca26031743c2929b04545  gcc/testsuite/gcc.target/i386/sse4_1-floorf-sfix-vec.c
  ffc97967e3da1413e3683c4f3e18510b  gcc/testsuite/gcc.target/i386/sse4_1-floorf-vec.c
! 3f14907ce2fa5cc9febdb63b89492f7d  gcc/testsuite/gcc.target/i386/sse4_1-init-v16qi-1.c
! 5900f29c5ea41c98405b4f812fb3d908  gcc/testsuite/gcc.target/i386/sse4_1-init-v2di-1.c
! 8f3390d1b4b53a23ee7608e2d7647fca  gcc/testsuite/gcc.target/i386/sse4_1-init-v4sf-1.c
! 3fd300d166748ae79a88589044240f93  gcc/testsuite/gcc.target/i386/sse4_1-init-v4si-1.c
  9697ffdb1e10ae3cb3b7e1c2c8cfaa01  gcc/testsuite/gcc.target/i386/sse4_1-insertps-1.c
  90c8599a467abc2454dac6a68dc4ba6c  gcc/testsuite/gcc.target/i386/sse4_1-insertps-2.c
  909b150567f6eceb243322e353156041  gcc/testsuite/gcc.target/i386/sse4_1-insertps-3.c
*************** d6192394700679f0d4728c0dd8d59964  gcc/te
*** 45101,45109 ****
  d8135caf8f43a0de03b8fbb3a2f6b802  gcc/testsuite/gcc.target/i386/sse4_1-roundss-2.c
  caaaf4c14670457ed369a39f6c06e9a9  gcc/testsuite/gcc.target/i386/sse4_1-roundss-3.c
  8f6ad05dc54729a62d84391cc2bd6c0c  gcc/testsuite/gcc.target/i386/sse4_1-roundss-4.c
! 6e941c3fd354157533c50834ea29ee28  gcc/testsuite/gcc.target/i386/sse4_1-set-epi32-1.c
! cf296bdb39b3da7aef7e3b3de2c9d427  gcc/testsuite/gcc.target/i386/sse4_1-set-epi64x-1.c
! 8941ddbcddba44759277e25c69917f83  gcc/testsuite/gcc.target/i386/sse4_1-set-ps-1.c
  088a41934de9d53f296b92beac6ca096  gcc/testsuite/gcc.target/i386/sse4_1-set-v16qi-1.c
  95bf0e66cee63dd47f95dda66257ce8a  gcc/testsuite/gcc.target/i386/sse4_1-set-v16qi-1a.c
  5bc2f9f8e9fd978c315ee529624f8b92  gcc/testsuite/gcc.target/i386/sse4_1-set-v16qi-2.c
--- 47913,47921 ----
  d8135caf8f43a0de03b8fbb3a2f6b802  gcc/testsuite/gcc.target/i386/sse4_1-roundss-2.c
  caaaf4c14670457ed369a39f6c06e9a9  gcc/testsuite/gcc.target/i386/sse4_1-roundss-3.c
  8f6ad05dc54729a62d84391cc2bd6c0c  gcc/testsuite/gcc.target/i386/sse4_1-roundss-4.c
! 3780996f94038b72a23c5aed3f15be08  gcc/testsuite/gcc.target/i386/sse4_1-set-epi32-1.c
! 963e3faf66328b410f758c7a5c7c850b  gcc/testsuite/gcc.target/i386/sse4_1-set-epi64x-1.c
! 4373f42f0f945ec90967f45607801c5a  gcc/testsuite/gcc.target/i386/sse4_1-set-ps-1.c
  088a41934de9d53f296b92beac6ca096  gcc/testsuite/gcc.target/i386/sse4_1-set-v16qi-1.c
  95bf0e66cee63dd47f95dda66257ce8a  gcc/testsuite/gcc.target/i386/sse4_1-set-v16qi-1a.c
  5bc2f9f8e9fd978c315ee529624f8b92  gcc/testsuite/gcc.target/i386/sse4_1-set-v16qi-2.c
*************** cbb4b2d37d0de5ee8bf67dda9d88de99  gcc/te
*** 45175,45204 ****
  7d79deefe49cb68922a89f08cebbad4a  gcc/testsuite/gcc.target/i386/ssse3-psignd.c
  e64a18994c4fc6457d43a16bcf766b9b  gcc/testsuite/gcc.target/i386/ssse3-psignw.c
  350a25c3aea2becac5c56cff7b4bf401  gcc/testsuite/gcc.target/i386/ssse3-vals.h
  79da87a540843a0e1db2e7c3a4c97b4a  gcc/testsuite/gcc.target/i386/stack-prot-kernel.c
  734f9c675c89f8938b16af80f2c9e1b8  gcc/testsuite/gcc.target/i386/stack-realign-win.c
  f005410b5bda86af8a785a48fccbbc30  gcc/testsuite/gcc.target/i386/stack-realign.c
! 002735ffd3bb49d995b72d9e9e6aaeef  gcc/testsuite/gcc.target/i386/stack-usage-realign.c
  319cc0f3906e51e474cdde7fe57dbde5  gcc/testsuite/gcc.target/i386/stackalign/asm-1.c
  1feabd730a99874265b945ee66a92de8  gcc/testsuite/gcc.target/i386/stackalign/longlong-1.c
  6831dc4f5fea82d8bf5e9ddc994f2ee6  gcc/testsuite/gcc.target/i386/stackalign/longlong-2.c
  692c477be80a6067954dcbc7313102db  gcc/testsuite/gcc.target/i386/stackalign/pr39146.c
  e797e3acc17ea660fd93c0911e210be1  gcc/testsuite/gcc.target/i386/stackalign/return-1.c
  6b20a3a861b6c86557247cd210cc9c63  gcc/testsuite/gcc.target/i386/stackalign/return-2.c
! 4266f6667800f9bbe4ba702e2815fd7d  gcc/testsuite/gcc.target/i386/stackalign/return-3.c
  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
! 5545dab7b83f629916377acdb9d89d15  gcc/testsuite/gcc.target/i386/stackalign/stackalign.exp
  caa0a36ffb354dbc6cd84a8137f4aef9  gcc/testsuite/gcc.target/i386/strinline.c
! afe82f633567c8242e5f7e4a87ecf3fd  gcc/testsuite/gcc.target/i386/struct-size.c
! dfa4a8143079caa386afd3bed3954662  gcc/testsuite/gcc.target/i386/sw-1.c
  48aa8d8f4c116ed47aba3b4b60fae8f3  gcc/testsuite/gcc.target/i386/tailcall-1.c
  84b12afcb316a8ec7dce5bea1db67912  gcc/testsuite/gcc.target/i386/tbm-1.c
  b292dd3bc21c285ba5f3f1bcac0a5139  gcc/testsuite/gcc.target/i386/tbm-2.c
  052ea02011f5031dc3a4171aed715a52  gcc/testsuite/gcc.target/i386/tbm-bextri-1.c
  4edd7df3f7e7eae5b3e0d3be8a5068e4  gcc/testsuite/gcc.target/i386/testimm-1.c
! c078dd2656df07ab59421d2e145b1e6d  gcc/testsuite/gcc.target/i386/testimm-10.c
  ac027496b6114a9f7eb014a0c4cf998a  gcc/testsuite/gcc.target/i386/testimm-2.c
  0dac1c4518045bb84206c73d4b976ea4  gcc/testsuite/gcc.target/i386/testimm-3.c
  a276fee7a7cbbc4286d4e2deb772ed2f  gcc/testsuite/gcc.target/i386/testimm-4.c
--- 47987,48023 ----
  7d79deefe49cb68922a89f08cebbad4a  gcc/testsuite/gcc.target/i386/ssse3-psignd.c
  e64a18994c4fc6457d43a16bcf766b9b  gcc/testsuite/gcc.target/i386/ssse3-psignw.c
  350a25c3aea2becac5c56cff7b4bf401  gcc/testsuite/gcc.target/i386/ssse3-vals.h
+ bdf3b6e3cb2688badbddfca7483e0a9f  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
+ d6fca7d0a14d69c06eab7b10a94824aa  gcc/testsuite/gcc.target/i386/stack-check-18.c
+ 7f01eb1d223c56a0d719d6be43a7369b  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
+ e978e3862d24eaf222b97c35818e8ea3  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
  319cc0f3906e51e474cdde7fe57dbde5  gcc/testsuite/gcc.target/i386/stackalign/asm-1.c
  1feabd730a99874265b945ee66a92de8  gcc/testsuite/gcc.target/i386/stackalign/longlong-1.c
  6831dc4f5fea82d8bf5e9ddc994f2ee6  gcc/testsuite/gcc.target/i386/stackalign/longlong-2.c
  692c477be80a6067954dcbc7313102db  gcc/testsuite/gcc.target/i386/stackalign/pr39146.c
  e797e3acc17ea660fd93c0911e210be1  gcc/testsuite/gcc.target/i386/stackalign/return-1.c
  6b20a3a861b6c86557247cd210cc9c63  gcc/testsuite/gcc.target/i386/stackalign/return-2.c
! 5a8844cbc62a677bfa8d2d8536696a2a  gcc/testsuite/gcc.target/i386/stackalign/return-3.c
  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
! 541a618dfe0b1569275b182a95eefde0  gcc/testsuite/gcc.target/i386/stackalign/stackalign.exp
  caa0a36ffb354dbc6cd84a8137f4aef9  gcc/testsuite/gcc.target/i386/strinline.c
! fc3a18821c52e48c29f54252053988ba  gcc/testsuite/gcc.target/i386/struct-size.c
! a1fb21b895e9d76b3434490c178977d2  gcc/testsuite/gcc.target/i386/sw-1.c
  48aa8d8f4c116ed47aba3b4b60fae8f3  gcc/testsuite/gcc.target/i386/tailcall-1.c
  84b12afcb316a8ec7dce5bea1db67912  gcc/testsuite/gcc.target/i386/tbm-1.c
  b292dd3bc21c285ba5f3f1bcac0a5139  gcc/testsuite/gcc.target/i386/tbm-2.c
  052ea02011f5031dc3a4171aed715a52  gcc/testsuite/gcc.target/i386/tbm-bextri-1.c
  4edd7df3f7e7eae5b3e0d3be8a5068e4  gcc/testsuite/gcc.target/i386/testimm-1.c
! 1f445ad6e044718e464488074190f451  gcc/testsuite/gcc.target/i386/testimm-10.c
  ac027496b6114a9f7eb014a0c4cf998a  gcc/testsuite/gcc.target/i386/testimm-2.c
  0dac1c4518045bb84206c73d4b976ea4  gcc/testsuite/gcc.target/i386/testimm-3.c
  a276fee7a7cbbc4286d4e2deb772ed2f  gcc/testsuite/gcc.target/i386/testimm-4.c
*************** a276fee7a7cbbc4286d4e2deb772ed2f  gcc/te
*** 45207,45213 ****
  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
! 3d101154eac9a09b12ef2b041b90301b  gcc/testsuite/gcc.target/i386/testround-1.c
  b20b310f3636a1d1d5c3491de30c7a3b  gcc/testsuite/gcc.target/i386/testround-2.c
  da1ad49390daee510731e0d056105361  gcc/testsuite/gcc.target/i386/thunk-retbnd.c
  93d9979dbb1eca4f0954ae4f9ab2dd58  gcc/testsuite/gcc.target/i386/udivmod-1.c
--- 48026,48032 ----
  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
! d44614fd5596d1f2a2a55c835ee50727  gcc/testsuite/gcc.target/i386/testround-1.c
  b20b310f3636a1d1d5c3491de30c7a3b  gcc/testsuite/gcc.target/i386/testround-2.c
  da1ad49390daee510731e0d056105361  gcc/testsuite/gcc.target/i386/thunk-retbnd.c
  93d9979dbb1eca4f0954ae4f9ab2dd58  gcc/testsuite/gcc.target/i386/udivmod-1.c
*************** cd1514bc672897ccd336522e7e4b9c75  gcc/te
*** 45221,45232 ****
  be3365966668001dda567754312a4f5e  gcc/testsuite/gcc.target/i386/udivmod-8.c
  3df1f9aef42723bbbd0f795be1e64913  gcc/testsuite/gcc.target/i386/umod-1.c
  80c6ab83e85c9918b290e01c4d8514c5  gcc/testsuite/gcc.target/i386/umod-2.c
! 2ef6eee18ad2bc9009b226bb91e05aff  gcc/testsuite/gcc.target/i386/umod-3.c
  b3482aa074e044edfb2a4c72e5c1d085  gcc/testsuite/gcc.target/i386/unordcmp-1.c
  133d7eb15ead287c2ef11a8162780801  gcc/testsuite/gcc.target/i386/unroll-1.c
! 1a9550871af0d8120e19cc2e0477e05f  gcc/testsuite/gcc.target/i386/vararg-1.c
  3b8acabb2f18b3fd13f3871729bac23f  gcc/testsuite/gcc.target/i386/vararg-10.c
! c579d76701246ab25eb6d6a508eccb64  gcc/testsuite/gcc.target/i386/vararg-2.c
  43699b250c82b84cf0ed3efac0aa4516  gcc/testsuite/gcc.target/i386/vararg-3.c
  a4fe926ed930e3d04f3d214919607450  gcc/testsuite/gcc.target/i386/vararg-4.c
  26b495c42c74633fbe8f695a8be428c2  gcc/testsuite/gcc.target/i386/vararg-5.c
--- 48040,48051 ----
  be3365966668001dda567754312a4f5e  gcc/testsuite/gcc.target/i386/udivmod-8.c
  3df1f9aef42723bbbd0f795be1e64913  gcc/testsuite/gcc.target/i386/umod-1.c
  80c6ab83e85c9918b290e01c4d8514c5  gcc/testsuite/gcc.target/i386/umod-2.c
! bc81fc7aec323184dc275b97962476e5  gcc/testsuite/gcc.target/i386/umod-3.c
  b3482aa074e044edfb2a4c72e5c1d085  gcc/testsuite/gcc.target/i386/unordcmp-1.c
  133d7eb15ead287c2ef11a8162780801  gcc/testsuite/gcc.target/i386/unroll-1.c
! aafb0010ebceff249236af3aa1f22e2b  gcc/testsuite/gcc.target/i386/vararg-1.c
  3b8acabb2f18b3fd13f3871729bac23f  gcc/testsuite/gcc.target/i386/vararg-10.c
! 2869209769b52916ee551938b0c572f1  gcc/testsuite/gcc.target/i386/vararg-2.c
  43699b250c82b84cf0ed3efac0aa4516  gcc/testsuite/gcc.target/i386/vararg-3.c
  a4fe926ed930e3d04f3d214919607450  gcc/testsuite/gcc.target/i386/vararg-4.c
  26b495c42c74633fbe8f695a8be428c2  gcc/testsuite/gcc.target/i386/vararg-5.c
*************** b98b8dce15aadb6ca106aa3d557111ba  gcc/te
*** 45253,45266 ****
  974b57856d4268bcd3d2d60d46fd6442  gcc/testsuite/gcc.target/i386/vect-abs-s8.c
  d8a06b42b5d0e429d4de46913e331fbf  gcc/testsuite/gcc.target/i386/vect-addsub.c
  dcf09c8d7eb01e0e8a5e8cefaf164498  gcc/testsuite/gcc.target/i386/vect-args.c
! 6269bae3c9afdbb5e78245582edf7bd1  gcc/testsuite/gcc.target/i386/vect-cond-1.c
  5c0044496c9a7d83c47a821d73ab8ddf  gcc/testsuite/gcc.target/i386/vect-div-1.c
  7ba91cecbf5135fc60ae30f2e2833e41  gcc/testsuite/gcc.target/i386/vect-double-1.c
  f2246fb526840289cc94bd7e8b0c994a  gcc/testsuite/gcc.target/i386/vect-double-1a.c
  828802a759b670e7c986aea3baf4cce5  gcc/testsuite/gcc.target/i386/vect-double-2.c
  4c9ce05e33ac7d3784a3f13d53e110ed  gcc/testsuite/gcc.target/i386/vect-double-2a.c
  1be56ef9ea27431ea78de1b1f37ba260  gcc/testsuite/gcc.target/i386/vect-pack-trunc-1.c
! da584dc0322d977a4469b99ccbb70fbe  gcc/testsuite/gcc.target/i386/vect-pack-trunc-2.c
  3ae8894d32adfa76a3d2a79477527531  gcc/testsuite/gcc.target/i386/vect-perm-even-1.c
  01c1d7e7805e8138e514493ab9238621  gcc/testsuite/gcc.target/i386/vect-perm-odd-1.c
  128a12571a3ce56ae0f7f1734c7cb4e3  gcc/testsuite/gcc.target/i386/vect-pr67800.c
--- 48072,48086 ----
  974b57856d4268bcd3d2d60d46fd6442  gcc/testsuite/gcc.target/i386/vect-abs-s8.c
  d8a06b42b5d0e429d4de46913e331fbf  gcc/testsuite/gcc.target/i386/vect-addsub.c
  dcf09c8d7eb01e0e8a5e8cefaf164498  gcc/testsuite/gcc.target/i386/vect-args.c
! f34aa81937bfa895146815db467bcc3d  gcc/testsuite/gcc.target/i386/vect-cond-1.c
  5c0044496c9a7d83c47a821d73ab8ddf  gcc/testsuite/gcc.target/i386/vect-div-1.c
  7ba91cecbf5135fc60ae30f2e2833e41  gcc/testsuite/gcc.target/i386/vect-double-1.c
  f2246fb526840289cc94bd7e8b0c994a  gcc/testsuite/gcc.target/i386/vect-double-1a.c
  828802a759b670e7c986aea3baf4cce5  gcc/testsuite/gcc.target/i386/vect-double-2.c
  4c9ce05e33ac7d3784a3f13d53e110ed  gcc/testsuite/gcc.target/i386/vect-double-2a.c
+ 339b25c1c15e2ab8d1fcf9cb530f1171  gcc/testsuite/gcc.target/i386/vect-insert-1.c
  1be56ef9ea27431ea78de1b1f37ba260  gcc/testsuite/gcc.target/i386/vect-pack-trunc-1.c
! 20a0928d3e53e6a1f55cc1cdd9b7dd3e  gcc/testsuite/gcc.target/i386/vect-pack-trunc-2.c
  3ae8894d32adfa76a3d2a79477527531  gcc/testsuite/gcc.target/i386/vect-perm-even-1.c
  01c1d7e7805e8138e514493ab9238621  gcc/testsuite/gcc.target/i386/vect-perm-odd-1.c
  128a12571a3ce56ae0f7f1734c7cb4e3  gcc/testsuite/gcc.target/i386/vect-pr67800.c
*************** da584dc0322d977a4469b99ccbb70fbe  gcc/te
*** 45269,45276 ****
  ee92f709acd8e62a7c9dee331c01f3b5  gcc/testsuite/gcc.target/i386/vect-unpack-1.c
  6e2ac104cc5f021d36fbcdf67129f17d  gcc/testsuite/gcc.target/i386/vect-unpack-2.c
  e050839388ed939e6ea93e65d85f8264  gcc/testsuite/gcc.target/i386/vect-unpack-3.c
! 4c1fbdea6b471feb0ac17e3dd1373b99  gcc/testsuite/gcc.target/i386/vect8-ret.c
  17262b0be0bb91aa8e2425773da183a3  gcc/testsuite/gcc.target/i386/vectorize1.c
  2b02856d49c831f0cc8cd5bce35766d7  gcc/testsuite/gcc.target/i386/vectorize2.c
  d9337e36cb89f810827a40283d1e6db9  gcc/testsuite/gcc.target/i386/vectorize3.c
  564b81febe0b1d388cdb445790829108  gcc/testsuite/gcc.target/i386/vectorize4-avx.c
--- 48089,48097 ----
  ee92f709acd8e62a7c9dee331c01f3b5  gcc/testsuite/gcc.target/i386/vect-unpack-1.c
  6e2ac104cc5f021d36fbcdf67129f17d  gcc/testsuite/gcc.target/i386/vect-unpack-2.c
  e050839388ed939e6ea93e65d85f8264  gcc/testsuite/gcc.target/i386/vect-unpack-3.c
! 62442b8b1755dc7d751184c72856e2d5  gcc/testsuite/gcc.target/i386/vect8-ret.c
  17262b0be0bb91aa8e2425773da183a3  gcc/testsuite/gcc.target/i386/vectorize1.c
+ a681ca062ac072c3cb40b105a2ea0266  gcc/testsuite/gcc.target/i386/vectorize10.c
  2b02856d49c831f0cc8cd5bce35766d7  gcc/testsuite/gcc.target/i386/vectorize2.c
  d9337e36cb89f810827a40283d1e6db9  gcc/testsuite/gcc.target/i386/vectorize3.c
  564b81febe0b1d388cdb445790829108  gcc/testsuite/gcc.target/i386/vectorize4-avx.c
*************** f5394c038a3031cca8da6381b321aedb  gcc/te
*** 45279,45288 ****
--- 48100,48111 ----
  9d940400960da6fc408dbf0af4d34aa6  gcc/testsuite/gcc.target/i386/vectorize6.c
  146491bc3c3d5fec1957a2ca55dbd0d5  gcc/testsuite/gcc.target/i386/vectorize7.c
  cf807a1a0c9ea4bc99f4a22859d9b829  gcc/testsuite/gcc.target/i386/vectorize8.c
+ 51bb807723c574207213354a4efa70d9  gcc/testsuite/gcc.target/i386/vectorize9.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
  2be2a791149d62338d33cfefde4c9fe1  gcc/testsuite/gcc.target/i386/volatile-bitfields-2.c
+ 94ee2467847204d566ed8be07b2c8690  gcc/testsuite/gcc.target/i386/vpclmulqdq.c
  ba2b1e708b3eafbf4da944250a3d4f95  gcc/testsuite/gcc.target/i386/vperm-2-2.inc
  132194f2f74e61ac0af4fc6e2c606778  gcc/testsuite/gcc.target/i386/vperm-4-1.inc
  a29164d700162446291a30e80f9fdf44  gcc/testsuite/gcc.target/i386/vperm-4-2.inc
*************** f32d0d602b6f58b940bf95892b0db34a  gcc/te
*** 45299,45306 ****
--- 48122,48132 ----
  44fec3573c80bd08c5d402045b97645b  gcc/testsuite/gcc.target/i386/warn-vect-op-1.c
  374df7a1c2f21fcd160b142454a349e7  gcc/testsuite/gcc.target/i386/warn-vect-op-2.c
  66d1d77278077916978319dc1f32ebb7  gcc/testsuite/gcc.target/i386/warn-vect-op-3.c
+ 6c062d7e0d068b5f99caee590a530a90  gcc/testsuite/gcc.target/i386/wbinvd-1.c
+ 5bf54bb626ab3fa4b6aa8a79a9c66456  gcc/testsuite/gcc.target/i386/wbnoinvd-1.c
  a2033299875112ec8a8d46645cf7d9b0  gcc/testsuite/gcc.target/i386/wmul-1.c
  4ad4e72fa1607f98dfaf4b54d6bb5d32  gcc/testsuite/gcc.target/i386/wmul-2.c
+ 27ad6112330741456181c2be05f60c1f  gcc/testsuite/gcc.target/i386/wmul-3.c
  94014174e60de8669ea82820a976f70c  gcc/testsuite/gcc.target/i386/wrfsbase-1.c
  aa2d4eb580e35dec4a50808e5ffbbd3a  gcc/testsuite/gcc.target/i386/wrfsbase-2.c
  daffc3afd6be114661cde40a175059e8  gcc/testsuite/gcc.target/i386/wrgsbase-1.c
*************** d58eb898aedc8c5886435ac33cca3a59  gcc/te
*** 45309,45321 ****
  cbb5b90c73478aeca5c2a0542f0be2af  gcc/testsuite/gcc.target/i386/wrpku-1.c
  e45be5b5dd5f8be0a75495bb33be0404  gcc/testsuite/gcc.target/i386/xchg-1.c
  b6d6abcfbd5245e5750e48d0e9518639  gcc/testsuite/gcc.target/i386/xchg-2.c
  5ee25ab13ecf1397089259762302768b  gcc/testsuite/gcc.target/i386/xop-check.h
  c37d749cc823fbe15fae562023e669f6  gcc/testsuite/gcc.target/i386/xop-frczX.c
  1dfb32c9098a172a7ddbb001e0617c92  gcc/testsuite/gcc.target/i386/xop-haddX.c
  90c1c8a0f655fa0eb23cd02904702233  gcc/testsuite/gcc.target/i386/xop-hadduX.c
  561407eb95492b3c08b4d76921b9e89c  gcc/testsuite/gcc.target/i386/xop-hsubX.c
  b8afe26f29e3d32ac95aaa33621d54b8  gcc/testsuite/gcc.target/i386/xop-imul32widen-vector.c
! 276a907ad6ef6957a3e1f2accf576aba  gcc/testsuite/gcc.target/i386/xop-imul64-vector.c
  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
--- 48135,48148 ----
  cbb5b90c73478aeca5c2a0542f0be2af  gcc/testsuite/gcc.target/i386/wrpku-1.c
  e45be5b5dd5f8be0a75495bb33be0404  gcc/testsuite/gcc.target/i386/xchg-1.c
  b6d6abcfbd5245e5750e48d0e9518639  gcc/testsuite/gcc.target/i386/xchg-2.c
+ 8655ad3d0836ec4d8f2535355460ea11  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
  1dfb32c9098a172a7ddbb001e0617c92  gcc/testsuite/gcc.target/i386/xop-haddX.c
  90c1c8a0f655fa0eb23cd02904702233  gcc/testsuite/gcc.target/i386/xop-hadduX.c
  561407eb95492b3c08b4d76921b9e89c  gcc/testsuite/gcc.target/i386/xop-hsubX.c
  b8afe26f29e3d32ac95aaa33621d54b8  gcc/testsuite/gcc.target/i386/xop-imul32widen-vector.c
! 998c5d973621bafb169ca889abec3ee5  gcc/testsuite/gcc.target/i386/xop-imul64-vector.c
  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
*************** decf68915fe7cbaf22ca75bf23d8f1c4  gcc/te
*** 45364,45370 ****
  288bd59b7b88dcc11f50ab76f33bcff4  gcc/testsuite/gcc.target/ia64/builtin-bswap-1.c
  71d9f9ff77f0ba9d5256e203d6ff2c47  gcc/testsuite/gcc.target/ia64/builtin-bswap-2.c
  9cc149c3214bc7c76d77124955a77e4b  gcc/testsuite/gcc.target/ia64/builtin-fma-1.c
! 9d1575a759efe88a23609900b44dad89  gcc/testsuite/gcc.target/ia64/builtin-fma-2.c
  235765909bce429b5f9a8cd71ebfe5b1  gcc/testsuite/gcc.target/ia64/builtin-popcount-1.c
  db27a442e55c5a52576a9adbc21a4ae4  gcc/testsuite/gcc.target/ia64/builtin-popcount-2.c
  e50239a34975c5fbc852ce8f339c44ea  gcc/testsuite/gcc.target/ia64/float80-1.c
--- 48191,48197 ----
  288bd59b7b88dcc11f50ab76f33bcff4  gcc/testsuite/gcc.target/ia64/builtin-bswap-1.c
  71d9f9ff77f0ba9d5256e203d6ff2c47  gcc/testsuite/gcc.target/ia64/builtin-bswap-2.c
  9cc149c3214bc7c76d77124955a77e4b  gcc/testsuite/gcc.target/ia64/builtin-fma-1.c
! 16c542733df7a4e15ff43d9d29989bfe  gcc/testsuite/gcc.target/ia64/builtin-fma-2.c
  235765909bce429b5f9a8cd71ebfe5b1  gcc/testsuite/gcc.target/ia64/builtin-popcount-1.c
  db27a442e55c5a52576a9adbc21a4ae4  gcc/testsuite/gcc.target/ia64/builtin-popcount-2.c
  e50239a34975c5fbc852ce8f339c44ea  gcc/testsuite/gcc.target/ia64/float80-1.c
*************** e50239a34975c5fbc852ce8f339c44ea  gcc/te
*** 45374,45380 ****
  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
! 47a6d1faad7a7e61b6b2856bcf5cd9ab  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
--- 48201,48207 ----
  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
! 40f8b94d68e4890805e8af1a6b8ec990  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
*************** b0a1d6cd250b4fd5066d40029244bb12  gcc/te
*** 45390,45395 ****
--- 48217,48223 ----
  f9cc2b1777a855112b0b56af74122fde  gcc/testsuite/gcc.target/ia64/pr49303.c
  d514a7b1eb41d331d010eef5aeb610da  gcc/testsuite/gcc.target/ia64/pr52657.c
  b586e5503e2dd6b9a177a8f01bcaf2a2  gcc/testsuite/gcc.target/ia64/pr52731.c
+ d1f7c884bfa0feaac165651cb3d07894  gcc/testsuite/gcc.target/ia64/pr56540.c
  3dabfc0801342e5b183a2c5fd54fa0e8  gcc/testsuite/gcc.target/ia64/pr60465-gprel64-c37.c
  00fb900027ddc85eb58d99c1ba4e4fba  gcc/testsuite/gcc.target/ia64/pr60465-gprel64.c
  da5fed1c1687d737e6580d89111ea5c7  gcc/testsuite/gcc.target/ia64/sibcall-opt-1.c
*************** aa59fb938dc80d0bfebfc946cdbfbabf  gcc/te
*** 45412,45418 ****
  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
! 6ba244fa8cee991026a656241ec10736  gcc/testsuite/gcc.target/m68k/m68k.exp
  024e8f5fdf9b8d6bb2395e4e383e4712  gcc/testsuite/gcc.target/m68k/pic-1.c
  16f39f8e31f0f10521879907e696470d  gcc/testsuite/gcc.target/m68k/pr19201.c
  6aabbfd07af3135327aa4db3b6e25a2f  gcc/testsuite/gcc.target/m68k/pr25111.c
--- 48240,48246 ----
  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
! 846e99480021de4575bb5b69299534e3  gcc/testsuite/gcc.target/m68k/m68k.exp
  024e8f5fdf9b8d6bb2395e4e383e4712  gcc/testsuite/gcc.target/m68k/pic-1.c
  16f39f8e31f0f10521879907e696470d  gcc/testsuite/gcc.target/m68k/pr19201.c
  6aabbfd07af3135327aa4db3b6e25a2f  gcc/testsuite/gcc.target/m68k/pr25111.c
*************** e695224d5b317835a290893c94d4209e  gcc/te
*** 45438,45453 ****
  0d7fa736ace82879979668cb692d9f87  gcc/testsuite/gcc.target/m68k/pr64461.c
  64801a5d12a7d876eb9fc0407fd9af8f  gcc/testsuite/gcc.target/m68k/slp-ice.c
  0849c1bed0b42b3d010dd80dc8d7c444  gcc/testsuite/gcc.target/m68k/stack-limit-1.c
! c02dc2f5fea389c5e9ac2f2ccbd9cc9f  gcc/testsuite/gcc.target/m68k/tls-gd-xgot.c
! d985bd7936499b1113247aa3b86d1b25  gcc/testsuite/gcc.target/m68k/tls-gd.c
! 4e5392a574c8267b2590d323393e920d  gcc/testsuite/gcc.target/m68k/tls-ie-xgot.c
! 34e6aef766ee42b6ae92061b5e72a286  gcc/testsuite/gcc.target/m68k/tls-ie.c
! 2a3633f5b7126bb797edaa49293eebc6  gcc/testsuite/gcc.target/m68k/tls-ld-xgot-xtls.c
! 66b40b640d6c3fd1bf285c00c50b7ae8  gcc/testsuite/gcc.target/m68k/tls-ld-xgot.c
! af7b4f0892a21c2350f31129d116697f  gcc/testsuite/gcc.target/m68k/tls-ld-xtls.c
! 283f86e949e813e33130188bd0713239  gcc/testsuite/gcc.target/m68k/tls-ld.c
! 457d709754325513e6fe06d1ba0f1bef  gcc/testsuite/gcc.target/m68k/tls-le-xtls.c
! 3a776fb924dc695a8ef8bc19b6374be4  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
--- 48266,48281 ----
  0d7fa736ace82879979668cb692d9f87  gcc/testsuite/gcc.target/m68k/pr64461.c
  64801a5d12a7d876eb9fc0407fd9af8f  gcc/testsuite/gcc.target/m68k/slp-ice.c
  0849c1bed0b42b3d010dd80dc8d7c444  gcc/testsuite/gcc.target/m68k/stack-limit-1.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
*************** e143618b2c8e9f74a89e408849d5ea9e  gcc/te
*** 45467,45473 ****
  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
! 68131be560bb461c833f5e6df07433e2  gcc/testsuite/gcc.target/microblaze/microblaze.exp
  9a329728496d062effbbdf4b7bde3f00  gcc/testsuite/gcc.target/microblaze/others/break_handler.c
  6da8565fda6bca91e6bd8e83373e0b2c  gcc/testsuite/gcc.target/microblaze/others/builtin-trap.c
  a0e81f6aa36d0ae7fdfd918cdece1702  gcc/testsuite/gcc.target/microblaze/others/data_var1.c
--- 48295,48301 ----
  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
! e8044b255f20b4732138c002eaa7cb2b  gcc/testsuite/gcc.target/microblaze/microblaze.exp
  9a329728496d062effbbdf4b7bde3f00  gcc/testsuite/gcc.target/microblaze/others/break_handler.c
  6da8565fda6bca91e6bd8e83373e0b2c  gcc/testsuite/gcc.target/microblaze/others/builtin-trap.c
  a0e81f6aa36d0ae7fdfd918cdece1702  gcc/testsuite/gcc.target/microblaze/others/data_var1.c
*************** ca56634a2eac89dd69e61b0be079e31d  gcc/te
*** 45592,45603 ****
  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
! d614b729ab517bbf53c07d433874e412  gcc/testsuite/gcc.target/mips/data-sym-jump.c
  c66f119c42aafbfef16b75b69d78dc2e  gcc/testsuite/gcc.target/mips/data-sym-pool.c
  17c9c459b5bd9c2c1f5322a9cebe7c52  gcc/testsuite/gcc.target/mips/div-1.c
- 753ea40696e64dc0ce362e53e60c1117  gcc/testsuite/gcc.target/mips/div-10.c
- 16f40cb78e7c70382858f238c9d15eeb  gcc/testsuite/gcc.target/mips/div-11.c
- 2443c2ca5e464f8858878b18f70c6b9d  gcc/testsuite/gcc.target/mips/div-12.c
  258f4051ab8422e0fc6f3fecf2520d64  gcc/testsuite/gcc.target/mips/div-13.c
  986cb40a1d9edd65cc0e08239b9ad205  gcc/testsuite/gcc.target/mips/div-2.c
  5ddfd8c09f6b5635903cc00c88adf2ff  gcc/testsuite/gcc.target/mips/div-3.c
--- 48420,48428 ----
  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
! 43c7b13372ab127f62a02908b0d109ea  gcc/testsuite/gcc.target/mips/data-sym-jump.c
  c66f119c42aafbfef16b75b69d78dc2e  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
  986cb40a1d9edd65cc0e08239b9ad205  gcc/testsuite/gcc.target/mips/div-2.c
  5ddfd8c09f6b5635903cc00c88adf2ff  gcc/testsuite/gcc.target/mips/div-3.c
*************** dad944139e1920b5a98785115c3236e0  gcc/te
*** 45606,45612 ****
  753ea40696e64dc0ce362e53e60c1117  gcc/testsuite/gcc.target/mips/div-6.c
  16f40cb78e7c70382858f238c9d15eeb  gcc/testsuite/gcc.target/mips/div-7.c
  2443c2ca5e464f8858878b18f70c6b9d  gcc/testsuite/gcc.target/mips/div-8.c
- dad944139e1920b5a98785115c3236e0  gcc/testsuite/gcc.target/mips/div-9.c
  b1efa295f0487d6f9cb23347e6d11a2a  gcc/testsuite/gcc.target/mips/div-delay.c
  e2e919bd6b3b44667f3b169474d912da  gcc/testsuite/gcc.target/mips/dmult-1.c
  3a7a1efa69d960feb2aefc4d6841aeb3  gcc/testsuite/gcc.target/mips/dpaq_sa_l_w.c
--- 48431,48436 ----
*************** d334d7b9fb2d7c13a7c05b6092705a51  gcc/te
*** 45649,45666 ****
  932f058563cbb3c4a97efbf2e55868b1  gcc/testsuite/gcc.target/mips/fix-r10000-7.c
  8c401c468639b59439775b90d66516b6  gcc/testsuite/gcc.target/mips/fix-r10000-8.c
  91f31edb8ac301e6eb882a3b741ecf2a  gcc/testsuite/gcc.target/mips/fix-r10000-9.c
! 5f636e462b87f00ce68de34d47cc92ea  gcc/testsuite/gcc.target/mips/fix-r4000-1.c
! a3aee450d18620894aa6ee903015fa9f  gcc/testsuite/gcc.target/mips/fix-r4000-10.c
  7742ed337b0bf9d017c2d4fd9277f5da  gcc/testsuite/gcc.target/mips/fix-r4000-11.c
  b5b562146c00f34366ed97f8143578e4  gcc/testsuite/gcc.target/mips/fix-r4000-12.c
! db1a7ecaa8479a3474f93548f3d2e309  gcc/testsuite/gcc.target/mips/fix-r4000-2.c
! 4041e7c0db3bd61a22f0d7ab304ae222  gcc/testsuite/gcc.target/mips/fix-r4000-3.c
! b6a836341c657e7f6a3132964990f355  gcc/testsuite/gcc.target/mips/fix-r4000-4.c
! c4f2ac6bde12e91f9852e9310c36ca71  gcc/testsuite/gcc.target/mips/fix-r4000-5.c
! d3dcd8b5e961746caf222e9a8c0a6808  gcc/testsuite/gcc.target/mips/fix-r4000-6.c
! 91158899b8793d4666a50d26d4b297ec  gcc/testsuite/gcc.target/mips/fix-r4000-7.c
! e5c4cdcf444fa866d43e797ffa4dffa1  gcc/testsuite/gcc.target/mips/fix-r4000-8.c
! 851bb411ab49b24b9fdd3600fe62cc89  gcc/testsuite/gcc.target/mips/fix-r4000-9.c
  26d59e32f84979f8a23fe1a8ec47ec1e  gcc/testsuite/gcc.target/mips/fix-vr4130-1.c
  b12ab1afd5f3be35ef489f0323dcea80  gcc/testsuite/gcc.target/mips/fix-vr4130-2.c
  a40355ba18d7a6989675e5faed7fd893  gcc/testsuite/gcc.target/mips/fix-vr4130-3.c
--- 48473,48490 ----
  932f058563cbb3c4a97efbf2e55868b1  gcc/testsuite/gcc.target/mips/fix-r10000-7.c
  8c401c468639b59439775b90d66516b6  gcc/testsuite/gcc.target/mips/fix-r10000-8.c
  91f31edb8ac301e6eb882a3b741ecf2a  gcc/testsuite/gcc.target/mips/fix-r10000-9.c
! a9917658cc10a8fcbfd90dbd08a76369  gcc/testsuite/gcc.target/mips/fix-r4000-1.c
! 0fbebec86f8b42733c39339e6815acbc  gcc/testsuite/gcc.target/mips/fix-r4000-10.c
  7742ed337b0bf9d017c2d4fd9277f5da  gcc/testsuite/gcc.target/mips/fix-r4000-11.c
  b5b562146c00f34366ed97f8143578e4  gcc/testsuite/gcc.target/mips/fix-r4000-12.c
! 18f0bafe9c3e2fb8885c9813edb3df70  gcc/testsuite/gcc.target/mips/fix-r4000-2.c
! dcc02ebf3b2b595cee055bdabd8ffd08  gcc/testsuite/gcc.target/mips/fix-r4000-3.c
! a9e9e18b60ae812b52a6b4ceca017a78  gcc/testsuite/gcc.target/mips/fix-r4000-4.c
! 86876c1b3596723965db586d5b6c6da8  gcc/testsuite/gcc.target/mips/fix-r4000-5.c
! d8dfc512d235f7cfa07fbd47078c3ec8  gcc/testsuite/gcc.target/mips/fix-r4000-6.c
! abe1463b75db34c0d2ef7b9f0aef226c  gcc/testsuite/gcc.target/mips/fix-r4000-7.c
! 40266778fc50300d152fe500fb654928  gcc/testsuite/gcc.target/mips/fix-r4000-8.c
! 709a7067d9b90b518c4b9cb4cf41643c  gcc/testsuite/gcc.target/mips/fix-r4000-9.c
  26d59e32f84979f8a23fe1a8ec47ec1e  gcc/testsuite/gcc.target/mips/fix-vr4130-1.c
  b12ab1afd5f3be35ef489f0323dcea80  gcc/testsuite/gcc.target/mips/fix-vr4130-2.c
  a40355ba18d7a6989675e5faed7fd893  gcc/testsuite/gcc.target/mips/fix-vr4130-3.c
*************** e7490a676f50b43dff9fbe84ff3bd95e  gcc/te
*** 45710,45716 ****
  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
! 394ad78f84318e28f4761f406d9c3afe  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
--- 48534,48540 ----
  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
! e398e904e1c9b5f7569b8e89e2c01e13  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
*** 45756,45762 ****
  83c5e51e6c11822bff1cf8983c44a5c2  gcc/testsuite/gcc.target/mips/mips-3d-7.c
  0c68f22b9635571f990298a5dd303133  gcc/testsuite/gcc.target/mips/mips-3d-8.c
  3f1d2771ce47e4d32f5b8afd4beb82d3  gcc/testsuite/gcc.target/mips/mips-3d-9.c
! 7f574de97914af51ee38060beccda9bd  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
--- 48580,48586 ----
  83c5e51e6c11822bff1cf8983c44a5c2  gcc/testsuite/gcc.target/mips/mips-3d-7.c
  0c68f22b9635571f990298a5dd303133  gcc/testsuite/gcc.target/mips/mips-3d-8.c
  3f1d2771ce47e4d32f5b8afd4beb82d3  gcc/testsuite/gcc.target/mips/mips-3d-9.c
! d3852bad408738631fb58606374403b0  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
*** 45773,45779 ****
  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
! dcb6dcbf28732ea8dc3a45c08eeb2150  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
--- 48597,48603 ----
  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
! 3475a4a359cdf4490dfd13a458318165  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
*** 45796,45802 ****
  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
! 58a93d370a8d556d20cd1e3dc046297e  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
--- 48620,48626 ----
  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
! ec114e2df6504426cd874c70a88f9cc4  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
*** 45830,45836 ****
  2eadbb80b2f27ea5dec2927523282eac  gcc/testsuite/gcc.target/mips/msa-dotp.c
  4aeaa4b74503d004f53a0c826972e294  gcc/testsuite/gcc.target/mips/msa-fp-cc.c
  742c80a0278cc84958d4742348970683  gcc/testsuite/gcc.target/mips/msa-minmax.c
! 3dad5784183f4187b2996dab83f739a5  gcc/testsuite/gcc.target/mips/msa.c
  adbe080c8559b5f5720e98bedc973083  gcc/testsuite/gcc.target/mips/msub-1.c
  5a0174b813bc40dd32b4b8102e7ab1ba  gcc/testsuite/gcc.target/mips/msub-2.c
  e1cc14b1b2c95f20ab4e24443958b3ca  gcc/testsuite/gcc.target/mips/msub-3.c
--- 48654,48660 ----
  2eadbb80b2f27ea5dec2927523282eac  gcc/testsuite/gcc.target/mips/msa-dotp.c
  4aeaa4b74503d004f53a0c826972e294  gcc/testsuite/gcc.target/mips/msa-fp-cc.c
  742c80a0278cc84958d4742348970683  gcc/testsuite/gcc.target/mips/msa-minmax.c
! ca4d4a3ec4e436ef21672b91f010b939  gcc/testsuite/gcc.target/mips/msa.c
  adbe080c8559b5f5720e98bedc973083  gcc/testsuite/gcc.target/mips/msub-1.c
  5a0174b813bc40dd32b4b8102e7ab1ba  gcc/testsuite/gcc.target/mips/msub-2.c
  e1cc14b1b2c95f20ab4e24443958b3ca  gcc/testsuite/gcc.target/mips/msub-3.c
*************** d9537ef2c19af319564e2250b13e87eb  gcc/te
*** 45876,45885 ****
  188faa7f93836d6181b84b0d8f5bd56b  gcc/testsuite/gcc.target/mips/nans-legacy.c
  2dec741c6cbf2473a9575734a23fbadd  gcc/testsuite/gcc.target/mips/nansf-2008.c
  142879458336206fe2ddf2c11906d9cf  gcc/testsuite/gcc.target/mips/nansf-legacy.c
! c3a028b142c3571e60915631a071db5b  gcc/testsuite/gcc.target/mips/near-far-1.c
! 23bc69825e3634ffaa45bba0ebecb0ac  gcc/testsuite/gcc.target/mips/near-far-2.c
! 38386539ada23aaffa2c41a70ba2cf60  gcc/testsuite/gcc.target/mips/near-far-3.c
! 963ef886c959f92d74dbeff198da0d2e  gcc/testsuite/gcc.target/mips/near-far-4.c
  0286d70e67dd74c194361d3f46620838  gcc/testsuite/gcc.target/mips/neg-abs-1.c
  c77f6fdf640ae93847a6d40929497561  gcc/testsuite/gcc.target/mips/neg-abs-2.c
  a29b791eba1acee9f3fe915945db7f59  gcc/testsuite/gcc.target/mips/nmadd-1.c
--- 48700,48709 ----
  188faa7f93836d6181b84b0d8f5bd56b  gcc/testsuite/gcc.target/mips/nans-legacy.c
  2dec741c6cbf2473a9575734a23fbadd  gcc/testsuite/gcc.target/mips/nansf-2008.c
  142879458336206fe2ddf2c11906d9cf  gcc/testsuite/gcc.target/mips/nansf-legacy.c
! 20d0b2f9c4f8e8ea6175aed6329fea7b  gcc/testsuite/gcc.target/mips/near-far-1.c
! c9fd8782f6037918acc80f097a70f080  gcc/testsuite/gcc.target/mips/near-far-2.c
! 4116df478321b6d1fef26ec4ce85be8b  gcc/testsuite/gcc.target/mips/near-far-3.c
! e248684349bfadbae82c88be679db835  gcc/testsuite/gcc.target/mips/near-far-4.c
  0286d70e67dd74c194361d3f46620838  gcc/testsuite/gcc.target/mips/neg-abs-1.c
  c77f6fdf640ae93847a6d40929497561  gcc/testsuite/gcc.target/mips/neg-abs-2.c
  a29b791eba1acee9f3fe915945db7f59  gcc/testsuite/gcc.target/mips/nmadd-1.c
*************** f95e6890f2bc69d7a36990c9bc30b80c  gcc/te
*** 45932,45937 ****
--- 48756,48763 ----
  248bfbd3ec18dd38e3ebfc1851b90659  gcc/testsuite/gcc.target/mips/pr35802.c
  94ef5a2d70a13b874af461f8ce8dffe8  gcc/testsuite/gcc.target/mips/pr37362.c
  92cd269be5d15c460f1d881c2c22f71f  gcc/testsuite/gcc.target/mips/pr45074.c
+ e280a48499a0d63b7fc3310f475b6258  gcc/testsuite/gcc.target/mips/pr51513-1.c
+ 5fd51acee72ccc4c46ae6414e0b48a2f  gcc/testsuite/gcc.target/mips/pr51513-2.c
  322792d2ec07c9e621c098f32513e328  gcc/testsuite/gcc.target/mips/pr52125.c
  d526f2ae01ac6cfa2e492c540a0c6f56  gcc/testsuite/gcc.target/mips/pr54240.c
  16bf586e6551b9052ad841307f40acbf  gcc/testsuite/gcc.target/mips/pr55315.c
*************** c0dd88cae6c555f6d0d9fea7b88e6553  gcc/te
*** 45945,45950 ****
--- 48771,48777 ----
  9d5624414776bcedb8f4aabe4431cdad  gcc/testsuite/gcc.target/mips/pr68400.c
  d946887666581a01ba252e6f7f60ff15  gcc/testsuite/gcc.target/mips/pr69129.c
  41d397146106de9f0bde8568f2aa1b58  gcc/testsuite/gcc.target/mips/pr74563.c
+ ae0e3bf279bfdc631da5f4c109d681d3  gcc/testsuite/gcc.target/mips/pr82981.c
  a3d18616f89634c190f4bb31b9165dbc  gcc/testsuite/gcc.target/mips/r10k-cache-barrier-1.c
  668f845b2b56ba796d8efa350bd5f072  gcc/testsuite/gcc.target/mips/r10k-cache-barrier-10.c
  32ddce9e3a3bbe0a7c0283da638073ae  gcc/testsuite/gcc.target/mips/r10k-cache-barrier-11.c
*************** f0587044022ae9fa6f9125f5f1dc6668  gcc/te
*** 45962,45967 ****
--- 48789,48795 ----
  8c5d7718310c73577f128b98488b941d  gcc/testsuite/gcc.target/mips/r10k-cache-barrier-9.c
  d20de17b0c47a156dfbaac13ba623a27  gcc/testsuite/gcc.target/mips/r3900-mult.c
  0fcc78914edd5f972a3751624ddd725b  gcc/testsuite/gcc.target/mips/reg-var-1.c
+ 87421cc41dc5bbc6d8433fa0a35f7903  gcc/testsuite/gcc.target/mips/reorgbug-1.c
  b1756d04ea4fa39d6b722f6008c74306  gcc/testsuite/gcc.target/mips/rsqrt-1.c
  002d03c610d8a46491cddc81c1f6af2f  gcc/testsuite/gcc.target/mips/rsqrt-2.c
  13ddb50b0998c5bc67372dbdffe10a57  gcc/testsuite/gcc.target/mips/rsqrt-3.c
*************** cb7e4e1ad23488f3f25aafc417c001c8  gcc/te
*** 46034,46040 ****
  e3ce3d38931ecb081fe80b95fe3202bf  gcc/testsuite/gcc.target/mips/umips-save-restore-2.c
  dddf8c6f3c879b1f87ab2e8488935dde  gcc/testsuite/gcc.target/mips/umips-save-restore-3.c
  19af62085be55a3336e36d18657d04da  gcc/testsuite/gcc.target/mips/umips-store16-1.c
! 1178ef8ac34679f8fe5c47e403782f39  gcc/testsuite/gcc.target/mips/umips-store16-2.c
  d60c9788bb24eb5efad0c5ba2a37488e  gcc/testsuite/gcc.target/mips/umips-swp-1.c
  32652010253d4cd8aa245898571b1d9d  gcc/testsuite/gcc.target/mips/umips-swp-2.c
  48bfb538b96717d42fd475de74d4e3f7  gcc/testsuite/gcc.target/mips/umips-swp-3.c
--- 48862,48868 ----
  e3ce3d38931ecb081fe80b95fe3202bf  gcc/testsuite/gcc.target/mips/umips-save-restore-2.c
  dddf8c6f3c879b1f87ab2e8488935dde  gcc/testsuite/gcc.target/mips/umips-save-restore-3.c
  19af62085be55a3336e36d18657d04da  gcc/testsuite/gcc.target/mips/umips-store16-1.c
! d371caec7be70b9d8019aeb3092e213a  gcc/testsuite/gcc.target/mips/umips-store16-2.c
  d60c9788bb24eb5efad0c5ba2a37488e  gcc/testsuite/gcc.target/mips/umips-swp-1.c
  32652010253d4cd8aa245898571b1d9d  gcc/testsuite/gcc.target/mips/umips-swp-2.c
  48bfb538b96717d42fd475de74d4e3f7  gcc/testsuite/gcc.target/mips/umips-swp-3.c
*************** bdbe1b2e833e8da48eee27859726180e  gcc/te
*** 46051,46057 ****
  66f943bd7175798afaf0074969086758  gcc/testsuite/gcc.target/msp430/function-attributes-1.c
  ce1ce04665fe9006445fc744101735c0  gcc/testsuite/gcc.target/msp430/function-attributes-2.c
  39abb860c2edb7183378fe98cf264482  gcc/testsuite/gcc.target/msp430/function-attributes-3.c
! 1e3f219b936e2e2108182f84cbe578ec  gcc/testsuite/gcc.target/msp430/msp430.exp
  8db9c8eeca0d84064d6e32ff8ef1fe80  gcc/testsuite/gcc.target/msp430/msp_abi_div_funcs.c
  31252748eb2085fbc92674b3b54efa24  gcc/testsuite/gcc.target/msp430/mul_16bit.c
  913b762817c6db9ef9cbea116cbbe25f  gcc/testsuite/gcc.target/msp430/mul_32bit.c
--- 48879,48886 ----
  66f943bd7175798afaf0074969086758  gcc/testsuite/gcc.target/msp430/function-attributes-1.c
  ce1ce04665fe9006445fc744101735c0  gcc/testsuite/gcc.target/msp430/function-attributes-2.c
  39abb860c2edb7183378fe98cf264482  gcc/testsuite/gcc.target/msp430/function-attributes-3.c
! 6d7f6511e4ff1d33fcde2d1d8fa54572  gcc/testsuite/gcc.target/msp430/interrupt_fn_placement.c
! a7fe9cce5b3728f1b990057beb77fe4f  gcc/testsuite/gcc.target/msp430/msp430.exp
  8db9c8eeca0d84064d6e32ff8ef1fe80  gcc/testsuite/gcc.target/msp430/msp_abi_div_funcs.c
  31252748eb2085fbc92674b3b54efa24  gcc/testsuite/gcc.target/msp430/mul_16bit.c
  913b762817c6db9ef9cbea116cbbe25f  gcc/testsuite/gcc.target/msp430/mul_32bit.c
*************** ce1ce04665fe9006445fc744101735c0  gcc/te
*** 46059,46064 ****
--- 48888,48900 ----
  3553d737da02b3496cec1235bfbb22d8  gcc/testsuite/gcc.target/msp430/mul_f5_muldef.c
  bfd6a195d1aef391ff7d50f95ad68d21  gcc/testsuite/gcc.target/msp430/mul_main.h
  5d3a9707cfd44967f987f7dba28c0676  gcc/testsuite/gcc.target/msp430/mul_none.c
+ 3b828d8e553a6ef9d9b3e0a0f21e17e0  gcc/testsuite/gcc.target/msp430/pr78818-auto-warn.c
+ d1fa64363b98d0dfc99c64fd81ba4fc3  gcc/testsuite/gcc.target/msp430/pr78818-auto.c
+ 844366cecd687605c07f4380db25801a  gcc/testsuite/gcc.target/msp430/pr78818-data-region.c
+ 47bfdff17f0571d8dd44d7038380aed5  gcc/testsuite/gcc.target/msp430/pr78818-data-sec.c
+ 83bb6714b5a4739bcfaff93649a0d84d  gcc/testsuite/gcc.target/msp430/pr78818-real.c
+ 86446266130da24b1d107d958453330a  gcc/testsuite/gcc.target/msp430/pr79242.c
+ 324787670504f4ca444f6072836e9c91  gcc/testsuite/gcc.target/msp430/pr80993.c
  82173e7c1c627427f8e71b7496727f05  gcc/testsuite/gcc.target/nds32/basic-main.c
  0e03754fee073e7c8a117d1a11e9f750  gcc/testsuite/gcc.target/nds32/builtin-isb.c
  a76e9bdd8dd768b474700a1307ac151c  gcc/testsuite/gcc.target/nds32/builtin-isync.c
*************** a76e9bdd8dd768b474700a1307ac151c  gcc/te
*** 46066,46078 ****
  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
! bef4b64a636804fe9161366e684c2493  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
  6312e2001460d66fa0e91d102c988178  gcc/testsuite/gcc.target/nios2/bmx.c
  4bc5175c130b77602bada4e45b848e9c  gcc/testsuite/gcc.target/nios2/cdx-add.c
! aa48c450617403eee7ebcf90a076960b  gcc/testsuite/gcc.target/nios2/cdx-branch.c
  b59ec0f1beb70cc9698217f55342b3f4  gcc/testsuite/gcc.target/nios2/cdx-callret.c
  6cbcc24398047fe9fb30733c321ea031  gcc/testsuite/gcc.target/nios2/cdx-ldstwm-1.c
  72441bf994a95951498fdc814d381e84  gcc/testsuite/gcc.target/nios2/cdx-ldstwm-2.c
--- 48902,48914 ----
  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
! 22a2ef38c9ca1aa85eea3ddffb9fd361  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
  6312e2001460d66fa0e91d102c988178  gcc/testsuite/gcc.target/nios2/bmx.c
  4bc5175c130b77602bada4e45b848e9c  gcc/testsuite/gcc.target/nios2/cdx-add.c
! cdcd422790c51845b0b18baf7aff2e76  gcc/testsuite/gcc.target/nios2/cdx-branch.c
  b59ec0f1beb70cc9698217f55342b3f4  gcc/testsuite/gcc.target/nios2/cdx-callret.c
  6cbcc24398047fe9fb30733c321ea031  gcc/testsuite/gcc.target/nios2/cdx-ldstwm-1.c
  72441bf994a95951498fdc814d381e84  gcc/testsuite/gcc.target/nios2/cdx-ldstwm-2.c
*************** b59ec0f1beb70cc9698217f55342b3f4  gcc/te
*** 46081,46086 ****
--- 48917,48925 ----
  3c008e0c8cbda6a22518f72f859e2e4a  gcc/testsuite/gcc.target/nios2/cdx-mov.c
  4961b38269d8c3805f69732b98611e5c  gcc/testsuite/gcc.target/nios2/cdx-shift.c
  c42dfb4e7f092beb62f8476044079abd  gcc/testsuite/gcc.target/nios2/cdx-sub.c
+ 153f62eec71e02ce8aae9b1e5c62109a  gcc/testsuite/gcc.target/nios2/const-addr-1.c
+ 8ade6e5afd822fcdab186f685f864b83  gcc/testsuite/gcc.target/nios2/const-addr-2.c
+ 14d0bdd59692ae8a06c7ea929b3c7c93  gcc/testsuite/gcc.target/nios2/const-addr-3.c
  1b474a2c9901994775fa9c7721a1dcb1  gcc/testsuite/gcc.target/nios2/custom-fp-1.c
  f6a41f12e561359f4d276266dd1e70b1  gcc/testsuite/gcc.target/nios2/custom-fp-2.c
  e7a7cd2ef177c3d3de0503896e705fcb  gcc/testsuite/gcc.target/nios2/custom-fp-3.c
*************** c2ce811326bbab4af9098e02382aa2bb  gcc/te
*** 46097,46105 ****
--- 48936,48955 ----
  59bdb66167a0e1ca7031f0ecf855ae40  gcc/testsuite/gcc.target/nios2/gpopt-all.c
  0d6822be5711b91f37264ec5fedfe4e6  gcc/testsuite/gcc.target/nios2/gpopt-data.c
  c0a3c2ed76b7d6777caa3994360459ae  gcc/testsuite/gcc.target/nios2/gpopt-global.c
+ 20971f7486246d3ac34d9562734dadcf  gcc/testsuite/gcc.target/nios2/gpopt-gprel-sec.c
  099b17c4e47cd17b11317617a06bd938  gcc/testsuite/gcc.target/nios2/gpopt-local.c
  f4c5d5607df7e17ad6aeb54431c8b7c6  gcc/testsuite/gcc.target/nios2/gpopt-none.c
+ 56e37a0c8c1effb9d2121cd2f5af4f25  gcc/testsuite/gcc.target/nios2/gpopt-r0rel-sec.c
  fe0d95e1ac0f6ffd3c623a3e925c9e1a  gcc/testsuite/gcc.target/nios2/gprel-offset.c
+ a257a014cf25ca561926ce73766cda5e  gcc/testsuite/gcc.target/nios2/lo-addr-bypass.c
+ 7c4d4d0eed1b9be13ad7b7a3f825743a  gcc/testsuite/gcc.target/nios2/lo-addr-char.c
+ 45f8acc8db442bf74b7fba1866cbee79  gcc/testsuite/gcc.target/nios2/lo-addr-int.c
+ dbeb7143dc3bd239ce665d8bbcbc93dd  gcc/testsuite/gcc.target/nios2/lo-addr-pic.c
+ 238ca5d12a46d02d3c407aed742213a2  gcc/testsuite/gcc.target/nios2/lo-addr-short.c
+ a84839a573f8abfcc4b7b526645d72a6  gcc/testsuite/gcc.target/nios2/lo-addr-tls.c
+ 1f27b0f0412d9ab5487dc1ac5eadad91  gcc/testsuite/gcc.target/nios2/lo-addr-uchar.c
+ e88f7315d96aad347b832a0356448933  gcc/testsuite/gcc.target/nios2/lo-addr-ushort.c
+ 48f5c63b7a4f50d94d620fc2969779ca  gcc/testsuite/gcc.target/nios2/lo-addr-volatile.c
  28a1dbbf54d0859841ba3eb9d390fc0f  gcc/testsuite/gcc.target/nios2/nios2-ashlsi3-one_shift.c
  7f0bb23769a3311ca579de364eb96680  gcc/testsuite/gcc.target/nios2/nios2-builtin-custom.c
  7630ea0b18f70e8d55d3fbcf6d2e5e77  gcc/testsuite/gcc.target/nios2/nios2-builtin-io.c
*************** a87061df79ea1df98b37173a67798115  gcc/te
*** 46126,46132 ****
  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
! c7a9bafb7fbb5a300a8d87d7433a140a  gcc/testsuite/gcc.target/nios2/nios2.exp
  9debf19ff2edff67a3c15f36802b05cb  gcc/testsuite/gcc.target/nios2/r2-atomic.c
  9afc1945739eba181514def0191a2260  gcc/testsuite/gcc.target/nios2/r2-eni.c
  4745d097a704a5db2acedd2286a4b636  gcc/testsuite/gcc.target/nios2/r2-io-range.c
--- 48976,48982 ----
  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
! 223884df515c5564bf0bbd5d26f1caa4  gcc/testsuite/gcc.target/nios2/nios2.exp
  9debf19ff2edff67a3c15f36802b05cb  gcc/testsuite/gcc.target/nios2/r2-atomic.c
  9afc1945739eba181514def0191a2260  gcc/testsuite/gcc.target/nios2/r2-eni.c
  4745d097a704a5db2acedd2286a4b636  gcc/testsuite/gcc.target/nios2/r2-io-range.c
*************** a130181e569520d8ec50ce126d257deb  gcc/te
*** 46150,46209 ****
  da5463224c767fe4525ff97ea55cf59b  gcc/testsuite/gcc.target/nvptx/abi-vect-ret.c
  1c2ca7f6a110510e1940171c4ef1b012  gcc/testsuite/gcc.target/nvptx/abort.c
  9a34d9a28d10c98b31d63c9cf7a875c9  gcc/testsuite/gcc.target/nvptx/ary-init.c
! 41a7836d69706c9fe9c36d7df7b8dec0  gcc/testsuite/gcc.target/nvptx/decl-init.c
  ce8d3cdf413d2ecd740f727aa605f41d  gcc/testsuite/gcc.target/nvptx/decl-shared-init.c
  ee7a219079a9befc9911075c0ddf6ec4  gcc/testsuite/gcc.target/nvptx/decl-shared.c
  b5bc7203f9caebe44d835739cd6150f6  gcc/testsuite/gcc.target/nvptx/decl.c
! 526aab90d6bb4edba0d4c7df742b1d69  gcc/testsuite/gcc.target/nvptx/nvptx.exp
  0851aa76429cdec3f332dcfc7d32f6f4  gcc/testsuite/gcc.target/nvptx/proto-1.c
  b6dd5ea026f06ffb6e299fe2a4b5b9a0  gcc/testsuite/gcc.target/nvptx/sincos.c
  741e8b3981b97dba04d2d0ab288e2aca  gcc/testsuite/gcc.target/nvptx/softstack.c
  b229365c916139aa5854fd2d40028c0a  gcc/testsuite/gcc.target/nvptx/trailing-init.c
  c65e9b178b981b800a00ac82aa9741cf  gcc/testsuite/gcc.target/nvptx/uninit-decl.c
  0c3dd4b3664aa3f42dca7bc49ab4dc53  gcc/testsuite/gcc.target/nvptx/unsigned-cmp.c
  ba248cc080b98b0f2298851bf5ff50ee  gcc/testsuite/gcc.target/nvptx/weak.c
! 062154ab36a8a3302cf52ce4762996ac  gcc/testsuite/gcc.target/powerpc/20020118-1.c
! 8b3d94e1ceec8418f67adb7d4982b180  gcc/testsuite/gcc.target/powerpc/20030218-1.c
! 5ad9d2d0ffe29d1973ef77bb7de54467  gcc/testsuite/gcc.target/powerpc/20030505.c
  149191a4bcca1a908246f443400b4e17  gcc/testsuite/gcc.target/powerpc/20040121-1.c
  af361d9cce9906e7956ed7632c663422  gcc/testsuite/gcc.target/powerpc/20040622-1.c
  313074441932e1d96e30eb91927b1b68  gcc/testsuite/gcc.target/powerpc/20041111-1.c
  09142540eea70df1224760101211366e  gcc/testsuite/gcc.target/powerpc/20050603-1.c
  6d295c1f2a0e117b298e9d430e5d902d  gcc/testsuite/gcc.target/powerpc/20050603-3.c
  bc3af82991adbd156bce9e6aa788b9b7  gcc/testsuite/gcc.target/powerpc/20050830-1.c
! 50484995edc568b89e8760ffbcc7ad2b  gcc/testsuite/gcc.target/powerpc/20081204-1.c
! 7b9e1e59a54daac8327f8b19df7c1737  gcc/testsuite/gcc.target/powerpc/405-dlmzb-strlen-1.c
! 9258398f19a54d7555efe0e286ec040f  gcc/testsuite/gcc.target/powerpc/405-macchw-1.c
! 2b0ce25b595765a511520d2fcc14baf3  gcc/testsuite/gcc.target/powerpc/405-macchw-2.c
! 4e26af4872750ec7ae4917867862b37e  gcc/testsuite/gcc.target/powerpc/405-macchwu-1.c
! 2d3c815918bfa8f2042e17a1d00a1ba4  gcc/testsuite/gcc.target/powerpc/405-macchwu-2.c
! a848fde724ad86535aed9e752185c33c  gcc/testsuite/gcc.target/powerpc/405-machhw-1.c
! 8280ee59a206180b1cbf2ae8a26b5a98  gcc/testsuite/gcc.target/powerpc/405-machhw-2.c
! 3b33af0ca4e9c9e5376750a805598e57  gcc/testsuite/gcc.target/powerpc/405-machhwu-1.c
! 4772a2cd4d4522344174e2281a3e35bd  gcc/testsuite/gcc.target/powerpc/405-machhwu-2.c
! 5e9250e6f90b882c05a5c966a9c4027a  gcc/testsuite/gcc.target/powerpc/405-maclhw-1.c
! 27bc6adb5d87fd21d39476e2dce951d3  gcc/testsuite/gcc.target/powerpc/405-maclhw-2.c
! db7b6fb73c29b27ce6d983caa07c2bef  gcc/testsuite/gcc.target/powerpc/405-maclhwu-1.c
! 105c98024208982619821daf5f137746  gcc/testsuite/gcc.target/powerpc/405-maclhwu-2.c
! b172d7c8cf00dcd1656f993ede00167b  gcc/testsuite/gcc.target/powerpc/405-mulchw-1.c
! dad309d13d8143ea31780fec4130dfb5  gcc/testsuite/gcc.target/powerpc/405-mulchw-2.c
! 4140389636e3f883b59274bc5b5213c6  gcc/testsuite/gcc.target/powerpc/405-mulchwu-1.c
! 64bc9b1eca450e2ad63c6cdee555895d  gcc/testsuite/gcc.target/powerpc/405-mulchwu-2.c
! 1aa0e6c846048ecb83bb97fd22e703fa  gcc/testsuite/gcc.target/powerpc/405-mulhhw-1.c
! 397841e4eab27159b3487668ad460735  gcc/testsuite/gcc.target/powerpc/405-mulhhw-2.c
! 7091a9dfe6813fb1131c5adc7f3267e7  gcc/testsuite/gcc.target/powerpc/405-mulhhwu-1.c
! 0c779b097dd45d34de797421f0da02f3  gcc/testsuite/gcc.target/powerpc/405-mulhhwu-2.c
! c7ba9989fa99329c22dceececd1d5321  gcc/testsuite/gcc.target/powerpc/405-mullhw-1.c
! 34d9629967655ee5696ed195f0af1d5e  gcc/testsuite/gcc.target/powerpc/405-mullhw-2.c
! e2aadbaa2a0333f878f29034e8547a50  gcc/testsuite/gcc.target/powerpc/405-mullhwu-1.c
! 5bcc09fcf9c579943cb1bcbff6bf4023  gcc/testsuite/gcc.target/powerpc/405-mullhwu-2.c
! 44a8004cb2bfa858522bbe5b540fba62  gcc/testsuite/gcc.target/powerpc/405-nmacchw-1.c
! 1063ef2e8e94a0141141f7978c2a45eb  gcc/testsuite/gcc.target/powerpc/405-nmacchw-2.c
! 8edca9a2f41360b5190f200d07724803  gcc/testsuite/gcc.target/powerpc/405-nmachhw-1.c
! 869d3a169d8d252d1d15cb85e8506832  gcc/testsuite/gcc.target/powerpc/405-nmachhw-2.c
! 9a16850e6808c46cc23c10dc977e4b20  gcc/testsuite/gcc.target/powerpc/405-nmaclhw-1.c
! 6655b10432c3fb0ccd8dea1469a6eef9  gcc/testsuite/gcc.target/powerpc/405-nmaclhw-2.c
! 20c1a1fccbf9faf3c9bbbabc9250850b  gcc/testsuite/gcc.target/powerpc/440-dlmzb-strlen-1.c
  53360f7c80c516272d48f7fb82ae4dc0  gcc/testsuite/gcc.target/powerpc/440-macchw-1.c
  165b160e3dbc1e4f9593d2ed96d41470  gcc/testsuite/gcc.target/powerpc/440-macchw-2.c
  44b177f57db6ee3f35b8642bad70bc0d  gcc/testsuite/gcc.target/powerpc/440-macchwu-1.c
--- 49000,49073 ----
  da5463224c767fe4525ff97ea55cf59b  gcc/testsuite/gcc.target/nvptx/abi-vect-ret.c
  1c2ca7f6a110510e1940171c4ef1b012  gcc/testsuite/gcc.target/nvptx/abort.c
  9a34d9a28d10c98b31d63c9cf7a875c9  gcc/testsuite/gcc.target/nvptx/ary-init.c
! cf91ca14cafbda331f4d85cb59c361c2  gcc/testsuite/gcc.target/nvptx/decl-init.c
  ce8d3cdf413d2ecd740f727aa605f41d  gcc/testsuite/gcc.target/nvptx/decl-shared-init.c
  ee7a219079a9befc9911075c0ddf6ec4  gcc/testsuite/gcc.target/nvptx/decl-shared.c
  b5bc7203f9caebe44d835739cd6150f6  gcc/testsuite/gcc.target/nvptx/decl.c
! dd4edeaa5bae2549fa0790bb949f2a76  gcc/testsuite/gcc.target/nvptx/indirect_call.c
! 11c15ebae0aa72ac866acc469a870111  gcc/testsuite/gcc.target/nvptx/label-values.c
! eb1553d795eabdbbeac80be97643445a  gcc/testsuite/gcc.target/nvptx/nvptx.exp
! 97135e11860bc0316757d03f9f9eab37  gcc/testsuite/gcc.target/nvptx/patchable_function_entry-default.c
! ee10a595a6c816802a83d13637d1f4ce  gcc/testsuite/gcc.target/nvptx/pr85056.c
! 85d991e87550d6e0750de2b4f0ef4e8d  gcc/testsuite/gcc.target/nvptx/pr85056a.c
  0851aa76429cdec3f332dcfc7d32f6f4  gcc/testsuite/gcc.target/nvptx/proto-1.c
  b6dd5ea026f06ffb6e299fe2a4b5b9a0  gcc/testsuite/gcc.target/nvptx/sincos.c
+ a8dae85200a181f350c733049b638786  gcc/testsuite/gcc.target/nvptx/slp-2-run.c
+ 6c880ba8892ad33b326cb50bbafd9956  gcc/testsuite/gcc.target/nvptx/slp-2.c
+ 39b8229b6c09b6bcb85331a3fbc2c37b  gcc/testsuite/gcc.target/nvptx/slp-run.c
+ 44ad908a69e43269647b72a114715eda  gcc/testsuite/gcc.target/nvptx/slp.c
  741e8b3981b97dba04d2d0ab288e2aca  gcc/testsuite/gcc.target/nvptx/softstack.c
  b229365c916139aa5854fd2d40028c0a  gcc/testsuite/gcc.target/nvptx/trailing-init.c
  c65e9b178b981b800a00ac82aa9741cf  gcc/testsuite/gcc.target/nvptx/uninit-decl.c
  0c3dd4b3664aa3f42dca7bc49ab4dc53  gcc/testsuite/gcc.target/nvptx/unsigned-cmp.c
+ b7ab80fc6f20db555ea318163f54bb1c  gcc/testsuite/gcc.target/nvptx/v2di.c
+ 89695cac6e702fc77f1fa316c5b4f6e0  gcc/testsuite/gcc.target/nvptx/v2si-cvt.c
+ 0c4a4bc6ef9c71916872f453d51c62af  gcc/testsuite/gcc.target/nvptx/v2si-run.c
+ 1d2fc2d3442fe9ae6206e3c12fc9f466  gcc/testsuite/gcc.target/nvptx/v2si.c
+ 34535704dd43f77717636b4495978894  gcc/testsuite/gcc.target/nvptx/vec.inc
  ba248cc080b98b0f2298851bf5ff50ee  gcc/testsuite/gcc.target/nvptx/weak.c
! a03b92350a69b724ce16f3b7aa1803d7  gcc/testsuite/gcc.target/powerpc/20020118-1.c
! 30664e7a66a1b6da7cb904a27f58a4f0  gcc/testsuite/gcc.target/powerpc/20030218-1.c
! 3462b8d6ae4dbc953ea8e1cec948cafe  gcc/testsuite/gcc.target/powerpc/20030505.c
  149191a4bcca1a908246f443400b4e17  gcc/testsuite/gcc.target/powerpc/20040121-1.c
  af361d9cce9906e7956ed7632c663422  gcc/testsuite/gcc.target/powerpc/20040622-1.c
  313074441932e1d96e30eb91927b1b68  gcc/testsuite/gcc.target/powerpc/20041111-1.c
  09142540eea70df1224760101211366e  gcc/testsuite/gcc.target/powerpc/20050603-1.c
  6d295c1f2a0e117b298e9d430e5d902d  gcc/testsuite/gcc.target/powerpc/20050603-3.c
  bc3af82991adbd156bce9e6aa788b9b7  gcc/testsuite/gcc.target/powerpc/20050830-1.c
! 53bdb12e27584265c10ec7d5fe7afa9d  gcc/testsuite/gcc.target/powerpc/20081204-1.c
! 2d696a479a1f4788a3cadb6c545b8c62  gcc/testsuite/gcc.target/powerpc/405-dlmzb-strlen-1.c
! 97bc06c94d4ef292a49f060f5432dc70  gcc/testsuite/gcc.target/powerpc/405-macchw-1.c
! 7d0e4f3114146bed537a1071e1a5deb8  gcc/testsuite/gcc.target/powerpc/405-macchw-2.c
! 9c56692cb6932821b6f62423a6972bf7  gcc/testsuite/gcc.target/powerpc/405-macchwu-1.c
! 60af6d64478d1b6283ab0a20f74e9076  gcc/testsuite/gcc.target/powerpc/405-macchwu-2.c
! adf32b528015344e539dbddfc5060694  gcc/testsuite/gcc.target/powerpc/405-machhw-1.c
! 4102b18f97c37edf2c7fc0cd99ad2f2e  gcc/testsuite/gcc.target/powerpc/405-machhw-2.c
! ea971ee3f73c69f08a9e442526c46032  gcc/testsuite/gcc.target/powerpc/405-machhwu-1.c
! 7632b5938a967cc3b7689a4f194ce5b6  gcc/testsuite/gcc.target/powerpc/405-machhwu-2.c
! 86fba2bf328d97d0d386682e41914955  gcc/testsuite/gcc.target/powerpc/405-maclhw-1.c
! 69bfd9bbf014bc02a01ea42e68041156  gcc/testsuite/gcc.target/powerpc/405-maclhw-2.c
! e0197b20770d88ad871f96e72a4366d2  gcc/testsuite/gcc.target/powerpc/405-maclhwu-1.c
! 396e4bab932b25f4a648b074da587e4d  gcc/testsuite/gcc.target/powerpc/405-maclhwu-2.c
! 7d564b2333caabe5b5dc698f104af1c1  gcc/testsuite/gcc.target/powerpc/405-mulchw-1.c
! 2d63fe21e6fe396428b07d161846258c  gcc/testsuite/gcc.target/powerpc/405-mulchw-2.c
! 089e3674bcf4f9d1ace0ab4faa851696  gcc/testsuite/gcc.target/powerpc/405-mulchwu-1.c
! bda223c77b52ba84dd9441bccc09a3ed  gcc/testsuite/gcc.target/powerpc/405-mulchwu-2.c
! ab011832d53eababb70eecbecf01e8fd  gcc/testsuite/gcc.target/powerpc/405-mulhhw-1.c
! 1d7563ea41212abe3463cfa83fc1530e  gcc/testsuite/gcc.target/powerpc/405-mulhhw-2.c
! e055d7ba8fd83a330608e4ae2f9abb8d  gcc/testsuite/gcc.target/powerpc/405-mulhhwu-1.c
! 6c4b0313f67755befc16d4b546ba9e25  gcc/testsuite/gcc.target/powerpc/405-mulhhwu-2.c
! ebfefea847f781ced2b321835eaa9363  gcc/testsuite/gcc.target/powerpc/405-mullhw-1.c
! f0334943b9cb8a9ae51635615d2c81f6  gcc/testsuite/gcc.target/powerpc/405-mullhw-2.c
! 65ace92671681c352bddc20f900ba599  gcc/testsuite/gcc.target/powerpc/405-mullhwu-1.c
! 6986d7351b5191174ad83f74341f67ce  gcc/testsuite/gcc.target/powerpc/405-mullhwu-2.c
! ed23083a908c6a2a62dbf96af47bcd36  gcc/testsuite/gcc.target/powerpc/405-nmacchw-1.c
! bd8a8133279fe580e55d51388e34b28e  gcc/testsuite/gcc.target/powerpc/405-nmacchw-2.c
! 99b6d1f92b72708ac132dbd7dad6109b  gcc/testsuite/gcc.target/powerpc/405-nmachhw-1.c
! f3b45451b8b9fa5091db269ad5367fda  gcc/testsuite/gcc.target/powerpc/405-nmachhw-2.c
! ea51b62e3d4cc4401ac8e53261a878fd  gcc/testsuite/gcc.target/powerpc/405-nmaclhw-1.c
! 63bf801124a1e178d0001929e1b7e1ed  gcc/testsuite/gcc.target/powerpc/405-nmaclhw-2.c
! 6dc9d23f7c5028ba43aa9c13740e9051  gcc/testsuite/gcc.target/powerpc/440-dlmzb-strlen-1.c
  53360f7c80c516272d48f7fb82ae4dc0  gcc/testsuite/gcc.target/powerpc/440-macchw-1.c
  165b160e3dbc1e4f9593d2ed96d41470  gcc/testsuite/gcc.target/powerpc/440-macchw-2.c
  44b177f57db6ee3f35b8642bad70bc0d  gcc/testsuite/gcc.target/powerpc/440-macchwu-1.c
*************** d04d883325944bb913060f1812cc2e59  gcc/te
*** 46235,46246 ****
  59520e2fbc082b0ec9e051f4e7c804f9  gcc/testsuite/gcc.target/powerpc/440-nmaclhw-1.c
  1740cc665d8423adf426eedd3a8276eb  gcc/testsuite/gcc.target/powerpc/440-nmaclhw-2.c
  5931e32eea29c20bbd53794357f5ebad  gcc/testsuite/gcc.target/powerpc/980827-1.c
! 3836ca1b6787ffdabd915481b096bf59  gcc/testsuite/gcc.target/powerpc/abs128-1.c
  c441836462a082b52b8df4f3644b8ee1  gcc/testsuite/gcc.target/powerpc/altivec-1.c
  7594d13b6afbb5788fd3ff108fa1798d  gcc/testsuite/gcc.target/powerpc/altivec-10.c
  87921f986b2e966c18eb11c96891c323  gcc/testsuite/gcc.target/powerpc/altivec-11.c
! 42750be666c33639ff6fcf929f5593ed  gcc/testsuite/gcc.target/powerpc/altivec-12.c
! 1e8231a30a3c22fd4174ccfbc4bf8117  gcc/testsuite/gcc.target/powerpc/altivec-13.c
  0b9bf01e28c861e640e6a5a50df72d04  gcc/testsuite/gcc.target/powerpc/altivec-14.c
  7d113615ba33f8f305ca3d6dbaf84dd3  gcc/testsuite/gcc.target/powerpc/altivec-15.c
  11c64f0deba1e4621429dc584ee88ae4  gcc/testsuite/gcc.target/powerpc/altivec-16.c
--- 49099,49110 ----
  59520e2fbc082b0ec9e051f4e7c804f9  gcc/testsuite/gcc.target/powerpc/440-nmaclhw-1.c
  1740cc665d8423adf426eedd3a8276eb  gcc/testsuite/gcc.target/powerpc/440-nmaclhw-2.c
  5931e32eea29c20bbd53794357f5ebad  gcc/testsuite/gcc.target/powerpc/980827-1.c
! 3f8cb7e31c5c7de093b851e9d7eeedc7  gcc/testsuite/gcc.target/powerpc/abs128-1.c
  c441836462a082b52b8df4f3644b8ee1  gcc/testsuite/gcc.target/powerpc/altivec-1.c
  7594d13b6afbb5788fd3ff108fa1798d  gcc/testsuite/gcc.target/powerpc/altivec-10.c
  87921f986b2e966c18eb11c96891c323  gcc/testsuite/gcc.target/powerpc/altivec-11.c
! 97d70ad337d9c7d8471334e35ee04546  gcc/testsuite/gcc.target/powerpc/altivec-12.c
! 21f4460e010cad4fdac5158dd8484518  gcc/testsuite/gcc.target/powerpc/altivec-13.c
  0b9bf01e28c861e640e6a5a50df72d04  gcc/testsuite/gcc.target/powerpc/altivec-14.c
  7d113615ba33f8f305ca3d6dbaf84dd3  gcc/testsuite/gcc.target/powerpc/altivec-15.c
  11c64f0deba1e4621429dc584ee88ae4  gcc/testsuite/gcc.target/powerpc/altivec-16.c
*************** ba2853eb8abfe3cb584eba584d6c8a5f  gcc/te
*** 46261,46267 ****
  2a14d705eb3f74b332634c83b6ec427a  gcc/testsuite/gcc.target/powerpc/altivec-3.c
  1d8dc083405dd8dcbb30b06dc53cec85  gcc/testsuite/gcc.target/powerpc/altivec-30.c
  15b501be4c373b336da28a58e84d0f93  gcc/testsuite/gcc.target/powerpc/altivec-31.c
! aaa953c1ba182b20c3c05235c894b1e7  gcc/testsuite/gcc.target/powerpc/altivec-32.c
  26c1a163569afe23696923beafdfa120  gcc/testsuite/gcc.target/powerpc/altivec-33.c
  ccdffa66434da57284425d73d80f6992  gcc/testsuite/gcc.target/powerpc/altivec-34.c
  d4d40fb333f645bfba7d5f95d447bb27  gcc/testsuite/gcc.target/powerpc/altivec-35.c
--- 49125,49131 ----
  2a14d705eb3f74b332634c83b6ec427a  gcc/testsuite/gcc.target/powerpc/altivec-3.c
  1d8dc083405dd8dcbb30b06dc53cec85  gcc/testsuite/gcc.target/powerpc/altivec-30.c
  15b501be4c373b336da28a58e84d0f93  gcc/testsuite/gcc.target/powerpc/altivec-31.c
! f5322f453db1d949ff04b70aba483a65  gcc/testsuite/gcc.target/powerpc/altivec-32.c
  26c1a163569afe23696923beafdfa120  gcc/testsuite/gcc.target/powerpc/altivec-33.c
  ccdffa66434da57284425d73d80f6992  gcc/testsuite/gcc.target/powerpc/altivec-34.c
  d4d40fb333f645bfba7d5f95d447bb27  gcc/testsuite/gcc.target/powerpc/altivec-35.c
*************** d4d40fb333f645bfba7d5f95d447bb27  gcc/te
*** 46269,46382 ****
  a007efc316dcfa1327d38adb2feca1d8  gcc/testsuite/gcc.target/powerpc/altivec-4.c
  2586491d3f0993007b6292363a62437c  gcc/testsuite/gcc.target/powerpc/altivec-5.c
  9304d8abe305f6069344f238eecabcc1  gcc/testsuite/gcc.target/powerpc/altivec-6.c
! 341295c259d8ac5d502dca5fea643bf9  gcc/testsuite/gcc.target/powerpc/altivec-7.c
  3b775cfada4a412a8209544bafd90f12  gcc/testsuite/gcc.target/powerpc/altivec-8.c
  344ee7e5df617a76788873f981090de7  gcc/testsuite/gcc.target/powerpc/altivec-9.c
  a6cf4dfc1e0f3ea252ad2bc0e93a9c65  gcc/testsuite/gcc.target/powerpc/altivec-cell-1.c
  a0e560e56bf1611760575d6fab16e0c8  gcc/testsuite/gcc.target/powerpc/altivec-cell-2.c
  90375d0e24e0a3fefa075f5fcb9d7f65  gcc/testsuite/gcc.target/powerpc/altivec-cell-3.c
  6fd5f0d7921e91819a6ce50ff932f819  gcc/testsuite/gcc.target/powerpc/altivec-cell-4.c
! 29cab7a77633102be8f79fea8bd692b1  gcc/testsuite/gcc.target/powerpc/altivec-cell-5.c
  c6eab83ec25fdd191af2bd8fec5f5690  gcc/testsuite/gcc.target/powerpc/altivec-cell-6.c
  5776eb9a5e68662064847c33582976f3  gcc/testsuite/gcc.target/powerpc/altivec-cell-7.c
  70ab7c23ed9818decc7c28381a0c7e71  gcc/testsuite/gcc.target/powerpc/altivec-cell-8.c
! 9b7a7a80811d1f6499883d8d603054d0  gcc/testsuite/gcc.target/powerpc/altivec-consts.c
! 363a776f6e4b0eac12304bbd2c6c34a0  gcc/testsuite/gcc.target/powerpc/altivec-macros.c
  6644929740c819648f0e7c5223035282  gcc/testsuite/gcc.target/powerpc/altivec-perm-1.c
  1ada2df7c2add0bec64338812ac2b0bd  gcc/testsuite/gcc.target/powerpc/altivec-perm-2.c
! 6d3d73c2edb010f68c44087938e68b46  gcc/testsuite/gcc.target/powerpc/altivec-perm-3.c
  e93ba710909870214aa19f34f632d067  gcc/testsuite/gcc.target/powerpc/altivec-perm-4.c
  23da645e0f4f73f8ce9c211a3319f80c  gcc/testsuite/gcc.target/powerpc/altivec-pr22085.c
  4a776196d75e283b54c3d66265ee6e60  gcc/testsuite/gcc.target/powerpc/altivec-splat.c
! dbd9fd249945f18baab4aed723617344  gcc/testsuite/gcc.target/powerpc/altivec-types-1.c
! 388ac873a0dd6cda0acbd564876dc2e9  gcc/testsuite/gcc.target/powerpc/altivec-types-2.c
! f33508c9e3523762dc11271c9a92ede6  gcc/testsuite/gcc.target/powerpc/altivec-types-3.c
  964129e823a392ae74853b0ca2afba70  gcc/testsuite/gcc.target/powerpc/altivec-types-4.c
  4295f24ac801b25ff384e9c0059dc3f0  gcc/testsuite/gcc.target/powerpc/altivec-varargs-1.c
  f12268642caf2b8f80bf48e0b7f5bd87  gcc/testsuite/gcc.target/powerpc/altivec-vec-merge.c
  c1ad5df368bf78f67f3b4c15cbe1c757  gcc/testsuite/gcc.target/powerpc/altivec-volatile.c
  f92704c5f7f462e7f0b0f7a56209b9c1  gcc/testsuite/gcc.target/powerpc/asm-es-1.c
  ab233b59d18c7aa71a26292124ceae27  gcc/testsuite/gcc.target/powerpc/asm-es-2.c
  f1f6a9ec080c7f1554b538d5701c21e2  gcc/testsuite/gcc.target/powerpc/asm-y.c
! 39df7b5195f56ffc2e9d3d999b2c3379  gcc/testsuite/gcc.target/powerpc/atomic-p7.c
! 27d37e237ca3981c318086488898ac79  gcc/testsuite/gcc.target/powerpc/atomic-p8.c
! 2b30d65a97be381f11c8d4daa839d499  gcc/testsuite/gcc.target/powerpc/atomic_load_store-p8.c
  f7e7c3525d555350473e6eaeb20a763c  gcc/testsuite/gcc.target/powerpc/avoid-indexed-addresses.c
! 8ab84785c1c977598d1e8a4da5840d01  gcc/testsuite/gcc.target/powerpc/bcd-1.c
! 8527d886bfcfacf285ed77737269e96d  gcc/testsuite/gcc.target/powerpc/bcd-2.c
! e3c5cf48f1ba6a92d77572167cd142a8  gcc/testsuite/gcc.target/powerpc/bcd-3.c
! c0e5b1d38588a8004b42aa28e765606d  gcc/testsuite/gcc.target/powerpc/bfp/bfp.exp
  50b9b13be56cde20a9deafd8957022cb  gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-eq-0.c
  ed537806770a6bd863695dc3c1c6db97  gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-eq-1.c
! bd78b4043653e615210457352f190cb9  gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-eq-2.c
  6d11c38d0891e9177f73424d1c68646b  gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-gt-0.c
  67e60904680f5485c51c05c9d650097f  gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-gt-1.c
! eddad8ed1029ee81a261b27367997ea7  gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-gt-2.c
  66dbba327f302184eded4238eff1ca87  gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-lt-0.c
  e3dd922e779ea6d1473b8e15eaf6bb68  gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-lt-1.c
! c7cf52983fd9581fde0d03d4dde73d6e  gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-lt-2.c
  78953a643403a482280adc4407909dcb  gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-unordered-0.c
  b3e36716bc5fbf783c1b23872f598229  gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-unordered-1.c
! d6876361668cba47d3bf05baecb7ad83  gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-unordered-2.c
  9909703336c8413ea1da96d345252e0f  gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-exp-0.c
! f2c1866eb78699706684f822b1bf6c4c  gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-exp-1.c
! 91ea6409545d5e85e5bd5eac83a4dc0f  gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-exp-2.c
  68b83c5bc932a696d4883db8f3fe7cb1  gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-sig-0.c
! 174a790229e7d6f5ac9d99afa3bf34aa  gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-sig-1.c
! 3352b0f4c2f60551d10bdf5379b8ea07  gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-sig-2.c
  1e8983ad3706b86551fd5f2705b4a893  gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-0.c
! 735e59d52c0e821a085b391e6ee87dea  gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-1.c
! d9c6e904140abda63272b8d2acb7b2a3  gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-2.c
  2227c5b6b3b5c85c05bf3d33df09f228  gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-3.c
! 603660aabab0e0c87cc5b137fc222ada  gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-4.c
! 6744e58c5007af3b676ac331123ff75e  gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-5.c
  b44499c95cdeabc46f9fa231cd723d45  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-0.c
  4b2a336d8a37a490fc6c387651be7ef9  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-1.c
  a4380f24183fc28a5cc7cdef903fd055  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-2.c
  d5e8cf0dfe8a816d77ffc80b8b5f2e21  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-3.c
  adfda620baa607f4b26158664f80ef5b  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-4.c
  182142934e0375d6b56b2eb6adf63ecb  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-5.c
! 052ec5c4b118830aa7cf09575a633f45  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-6.c
! d4fbf15b46e4e79099c751ef93c0b7e6  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-7.c
  b41a7f0d2ceb998a870984d95d4a88a5  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-neg-0.c
  9aa59cfe98c186629ca047e2f5bc4eb7  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-neg-1.c
! b28b6f91449da4722bf048e002bfc8aa  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-neg-2.c
! 1b7b95fd3011171acebf9822f105b474  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-neg-3.c
  f2bad45ffdbadf93a7cd6dc456ae15d5  gcc/testsuite/gcc.target/powerpc/bfp/vec-extract-exp-0.c
  4bc7fb7583d4c44380853db0f9056c80  gcc/testsuite/gcc.target/powerpc/bfp/vec-extract-exp-1.c
! a0f11d39749200ace4a23d7ec22a2acd  gcc/testsuite/gcc.target/powerpc/bfp/vec-extract-exp-2.c
! 1b735cedebaee4aace4f065d265bd647  gcc/testsuite/gcc.target/powerpc/bfp/vec-extract-exp-3.c
  10cb72da04ad282aacf1513e3083e4d2  gcc/testsuite/gcc.target/powerpc/bfp/vec-extract-sig-0.c
  ef4da7aa4e84ba9f02956d79ee613715  gcc/testsuite/gcc.target/powerpc/bfp/vec-extract-sig-1.c
! 8d838304d30dc71cea1b00ef72974f60  gcc/testsuite/gcc.target/powerpc/bfp/vec-extract-sig-2.c
! ec21de29e09bce0655db3b3ddc31d459  gcc/testsuite/gcc.target/powerpc/bfp/vec-extract-sig-3.c
  fded041cb4fbdbbb378a9efcf7e7858c  gcc/testsuite/gcc.target/powerpc/bfp/vec-insert-exp-0.c
  1abcf6e26c1e8f5f9673c4851951773a  gcc/testsuite/gcc.target/powerpc/bfp/vec-insert-exp-1.c
! 681437dfcfeb234def1dd7ff0e355d11  gcc/testsuite/gcc.target/powerpc/bfp/vec-insert-exp-2.c
! 4ea84748897c757149f2979dd142924b  gcc/testsuite/gcc.target/powerpc/bfp/vec-insert-exp-3.c
  29a78b6e23ce4b1c7f2cfcce634b5ced  gcc/testsuite/gcc.target/powerpc/bfp/vec-insert-exp-4.c
  6111c6ec85685e51f0515531af02b13c  gcc/testsuite/gcc.target/powerpc/bfp/vec-insert-exp-5.c
! 464d3e882fbc8851dadf1443ec1e2ac1  gcc/testsuite/gcc.target/powerpc/bfp/vec-insert-exp-6.c
! 23ab0b37c63c4b456d7679d958e7d97f  gcc/testsuite/gcc.target/powerpc/bfp/vec-insert-exp-7.c
  10468b510b13f90cd9e727bfffb61726  gcc/testsuite/gcc.target/powerpc/bfp/vec-test-data-class-0.c
  f413ff8b01098d65491c5ddcbe17ebb4  gcc/testsuite/gcc.target/powerpc/bfp/vec-test-data-class-1.c
! c434b84d400f3cbb397913cc807af623  gcc/testsuite/gcc.target/powerpc/bfp/vec-test-data-class-2.c
! 471e6819cf9a966a1a1bcf63975aac0e  gcc/testsuite/gcc.target/powerpc/bfp/vec-test-data-class-3.c
  06a8cd51f1a4b834304c1615fbcbcf27  gcc/testsuite/gcc.target/powerpc/bfp/vec-test-data-class-4.c
  f029454fc9dd0d2dfb2b9fe0548234bc  gcc/testsuite/gcc.target/powerpc/bfp/vec-test-data-class-5.c
  b3c5a482d95c5bf2ad0f88089abc329e  gcc/testsuite/gcc.target/powerpc/bfp/vec-test-data-class-6.c
  99a1abb7b581040a140adc934f6dc82a  gcc/testsuite/gcc.target/powerpc/bfp/vec-test-data-class-7.c
  d71e4fffd67fe9a02068065c31f40a8c  gcc/testsuite/gcc.target/powerpc/block-move-1.c
  acce3a59dc7d4ef94160abede8f06c07  gcc/testsuite/gcc.target/powerpc/block-move-2.c
  8b94a94a7dff0052358065a48eaa4f9f  gcc/testsuite/gcc.target/powerpc/bool.c
! 8972b11a498a05db327038ba4d434444  gcc/testsuite/gcc.target/powerpc/bool2-av.c
! 6f755a5c58c836167ee1b21b2d05e438  gcc/testsuite/gcc.target/powerpc/bool2-p5.c
! 0c8cb8af453db44bbfea36602d197da4  gcc/testsuite/gcc.target/powerpc/bool2-p7.c
! ed672bda40acd60f17bd3f49e73f9b26  gcc/testsuite/gcc.target/powerpc/bool2-p8.c
  c9f98da2825e699344ef8948cd8d19fa  gcc/testsuite/gcc.target/powerpc/bool2.h
! 0e4632965fadc6647f472c5cfd67efb9  gcc/testsuite/gcc.target/powerpc/bool3-av.c
! ae7e4c3f64186e5a9ef0ec34512ae389  gcc/testsuite/gcc.target/powerpc/bool3-p7.c
! ab44b35ac1eeb31c0377f1c4aecb5c80  gcc/testsuite/gcc.target/powerpc/bool3-p8.c
  438f4e658462567e81a685ced3c5a415  gcc/testsuite/gcc.target/powerpc/bool3.h
  5f5298f748bcfaf7c81d750d7b190615  gcc/testsuite/gcc.target/powerpc/bswap-run.c
  83b860118c2602e26698368661e795c2  gcc/testsuite/gcc.target/powerpc/bswap16.c
--- 49133,49330 ----
  a007efc316dcfa1327d38adb2feca1d8  gcc/testsuite/gcc.target/powerpc/altivec-4.c
  2586491d3f0993007b6292363a62437c  gcc/testsuite/gcc.target/powerpc/altivec-5.c
  9304d8abe305f6069344f238eecabcc1  gcc/testsuite/gcc.target/powerpc/altivec-6.c
! 7e502e76a752e0f3538c8b0e0da3f276  gcc/testsuite/gcc.target/powerpc/altivec-7-be.c
! 57353ad7328a1320140d08792251189e  gcc/testsuite/gcc.target/powerpc/altivec-7-le.c
! cbd0203ee0c15e549c54fd05af0bb9ec  gcc/testsuite/gcc.target/powerpc/altivec-7.h
  3b775cfada4a412a8209544bafd90f12  gcc/testsuite/gcc.target/powerpc/altivec-8.c
  344ee7e5df617a76788873f981090de7  gcc/testsuite/gcc.target/powerpc/altivec-9.c
  a6cf4dfc1e0f3ea252ad2bc0e93a9c65  gcc/testsuite/gcc.target/powerpc/altivec-cell-1.c
  a0e560e56bf1611760575d6fab16e0c8  gcc/testsuite/gcc.target/powerpc/altivec-cell-2.c
  90375d0e24e0a3fefa075f5fcb9d7f65  gcc/testsuite/gcc.target/powerpc/altivec-cell-3.c
  6fd5f0d7921e91819a6ce50ff932f819  gcc/testsuite/gcc.target/powerpc/altivec-cell-4.c
! cc9ef742610f22a59244e4dadcfabb8e  gcc/testsuite/gcc.target/powerpc/altivec-cell-5.c
  c6eab83ec25fdd191af2bd8fec5f5690  gcc/testsuite/gcc.target/powerpc/altivec-cell-6.c
  5776eb9a5e68662064847c33582976f3  gcc/testsuite/gcc.target/powerpc/altivec-cell-7.c
  70ab7c23ed9818decc7c28381a0c7e71  gcc/testsuite/gcc.target/powerpc/altivec-cell-8.c
! c5a51d31607ee024e35af726ed421db1  gcc/testsuite/gcc.target/powerpc/altivec-consts.c
! be6b363c91d027b02dedb5ba100c02f8  gcc/testsuite/gcc.target/powerpc/altivec-ld-1.c
! 2a932408f123eade24387b931860ef9f  gcc/testsuite/gcc.target/powerpc/altivec-macros.c
  6644929740c819648f0e7c5223035282  gcc/testsuite/gcc.target/powerpc/altivec-perm-1.c
  1ada2df7c2add0bec64338812ac2b0bd  gcc/testsuite/gcc.target/powerpc/altivec-perm-2.c
! 897e92f2f613d1b6bbe492adf72c74c3  gcc/testsuite/gcc.target/powerpc/altivec-perm-3.c
  e93ba710909870214aa19f34f632d067  gcc/testsuite/gcc.target/powerpc/altivec-perm-4.c
  23da645e0f4f73f8ce9c211a3319f80c  gcc/testsuite/gcc.target/powerpc/altivec-pr22085.c
  4a776196d75e283b54c3d66265ee6e60  gcc/testsuite/gcc.target/powerpc/altivec-splat.c
! 274ab71b08925c6ca759f1dfa1c04c09  gcc/testsuite/gcc.target/powerpc/altivec-types-1.c
! 7263da6aee0d862b959ff54189189998  gcc/testsuite/gcc.target/powerpc/altivec-types-2.c
! 60bbd202ee54805828db71746a8ebb9e  gcc/testsuite/gcc.target/powerpc/altivec-types-3.c
  964129e823a392ae74853b0ca2afba70  gcc/testsuite/gcc.target/powerpc/altivec-types-4.c
  4295f24ac801b25ff384e9c0059dc3f0  gcc/testsuite/gcc.target/powerpc/altivec-varargs-1.c
  f12268642caf2b8f80bf48e0b7f5bd87  gcc/testsuite/gcc.target/powerpc/altivec-vec-merge.c
  c1ad5df368bf78f67f3b4c15cbe1c757  gcc/testsuite/gcc.target/powerpc/altivec-volatile.c
+ 0b4f96081cd39140c18fddc872f35b06  gcc/testsuite/gcc.target/powerpc/amo1.c
+ 7e6b6d1856e46596521e509e0346e697  gcc/testsuite/gcc.target/powerpc/amo2.c
  f92704c5f7f462e7f0b0f7a56209b9c1  gcc/testsuite/gcc.target/powerpc/asm-es-1.c
  ab233b59d18c7aa71a26292124ceae27  gcc/testsuite/gcc.target/powerpc/asm-es-2.c
  f1f6a9ec080c7f1554b538d5701c21e2  gcc/testsuite/gcc.target/powerpc/asm-y.c
! 30ed832f150532a8b0ac5ed85370e5a5  gcc/testsuite/gcc.target/powerpc/atomic-p7.c
! 1d48bbfb31000e44a518ddc64930530e  gcc/testsuite/gcc.target/powerpc/atomic-p8.c
! 86030565c3d6cddab68ae2223d4eb65c  gcc/testsuite/gcc.target/powerpc/atomic_load_store-p8.c
  f7e7c3525d555350473e6eaeb20a763c  gcc/testsuite/gcc.target/powerpc/avoid-indexed-addresses.c
! 85dc85078f2d2ae86f55b273d87d2c08  gcc/testsuite/gcc.target/powerpc/bcd-1.c
! f55a4a424770bf4f75c2fa11fd36c033  gcc/testsuite/gcc.target/powerpc/bcd-2.c
! 34d1c9b3182933bf7fe8dce899d2dd24  gcc/testsuite/gcc.target/powerpc/bcd-3.c
! b2d687bbb31ba5dec8bf205866996794  gcc/testsuite/gcc.target/powerpc/bfp/bfp.exp
  50b9b13be56cde20a9deafd8957022cb  gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-eq-0.c
  ed537806770a6bd863695dc3c1c6db97  gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-eq-1.c
! 27f640c3dd0f153836274fa2c0d5960d  gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-eq-2.c
! 4fac859bdaa5dc92d22eeda1518d0426  gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-eq-3.c
! 39e9a65a394990b5c35aaac3a2b74d3f  gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-eq-4.c
  6d11c38d0891e9177f73424d1c68646b  gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-gt-0.c
  67e60904680f5485c51c05c9d650097f  gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-gt-1.c
! 17cd6e87004ef51cacc97a7d8d8e351d  gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-gt-2.c
! f0231d30d89495968af8614f3d6e1f1c  gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-gt-3.c
! cceedd6b9889efc5d595787c0ba282b1  gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-gt-4.c
  66dbba327f302184eded4238eff1ca87  gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-lt-0.c
  e3dd922e779ea6d1473b8e15eaf6bb68  gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-lt-1.c
! 6e9b56f31c95ee8d30f34a102bbfb2f5  gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-lt-2.c
! 7feea29f62e576d709c6115415a2a426  gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-lt-3.c
! 503e16ddc37b6d4732ed9c366adca756  gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-lt-4.c
  78953a643403a482280adc4407909dcb  gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-unordered-0.c
  b3e36716bc5fbf783c1b23872f598229  gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-unordered-1.c
! 554c108e1d2f581a7f4c5e4d35c678e1  gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-unordered-2.c
! 5df6a2df7237cf997cc9737e38014b39  gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-unordered-3.c
! a6f158308739a61e459e5b9fee7f36cf  gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-unordered-4.c
  9909703336c8413ea1da96d345252e0f  gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-exp-0.c
! b4e6fbd2e50d69a395051579c3bbb0f8  gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-exp-1.c
! 24e5fcd1927db9dd540c92f066df2c44  gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-exp-2.c
! dbd28547fcbf1dccb348816bfc3b137e  gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-exp-3.c
! 77d4bbe454959e277283ee7a84836cda  gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-exp-4.c
! 9b32ec7ec6ebb037d44e6406b2210ebd  gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-exp-5.c
! 923c52b56e9a8121e38414a15401cfa9  gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-exp-6.c
! 817039229f7d0b70c651aa8f0dc116c9  gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-exp-7.c
  68b83c5bc932a696d4883db8f3fe7cb1  gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-sig-0.c
! c5c0649de5fda46d182e4e4ed50d17d7  gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-sig-1.c
! a8e7c9088b662a59b411cb3780149732  gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-sig-2.c
! 9a8ee2d120c0190d7261edb640d3bb67  gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-sig-3.c
! 35376210c8336c6b0e67d14596989066  gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-sig-4.c
! f05272e4bd549d8320eb4c7370fe903b  gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-sig-5.c
! 2e4ea3a1c007fbe1cbbf503164300f80  gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-sig-6.c
! ea0d9f5b7dd06bdfe31ed8e6a924982c  gcc/testsuite/gcc.target/powerpc/bfp/scalar-extract-sig-7.c
  1e8983ad3706b86551fd5f2705b4a893  gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-0.c
! ef9bdf18e67f9ef85dc9174a8faf6da7  gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-1.c
! 0ea56481caf45ad1f28ff42551f300ff  gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-10.c
! 84b018259b3141eca43036f2ddde5a21  gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-11.c
! 3ba45956d54f697ee0f530d41859b3b5  gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-12.c
! 4a2560d0c3faa485de8537ab0478a8b8  gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-13.c
! 1a48096bd5565af2a6108b5b5afd36cd  gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-14.c
! 57b0f26f57c6487b94ec374baac7653a  gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-15.c
! 9e8e72a39eb24db5ac3fdeb93cc80da8  gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-2.c
  2227c5b6b3b5c85c05bf3d33df09f228  gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-3.c
! aeeb2e55d2a8324b072e9be6a53c86c2  gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-4.c
! 3c500b1e8aff478af75e7db9ed37a5e5  gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-5.c
! 4b32742600e19b9955b0bfc981396365  gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-6.c
! d41002732c863f5934fbede78ae89cf7  gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-7.c
! 022f91d5ccb6f919ec4308c64b899881  gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-8.c
! aa6172a24846d2291b2364f562ae4e06  gcc/testsuite/gcc.target/powerpc/bfp/scalar-insert-exp-9.c
  b44499c95cdeabc46f9fa231cd723d45  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-0.c
  4b2a336d8a37a490fc6c387651be7ef9  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-1.c
+ 3958b79c7b035777554e02f6f730da74  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-10.c
+ c974e91851ddc98c133a8a06edaddf46  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-11.c
+ f9e2ae14381454aa04646151257467df  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-12.c
+ a12a5e7ec9d9edb0624993c53fcc0a79  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-13.c
+ 6eb99e61acf0a1c87d1a8e6ad7ceeb37  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-14.c
+ 0ac0e6196c8ff60855a3e073742499c7  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-15.c
  a4380f24183fc28a5cc7cdef903fd055  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-2.c
  d5e8cf0dfe8a816d77ffc80b8b5f2e21  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-3.c
  adfda620baa607f4b26158664f80ef5b  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-4.c
  182142934e0375d6b56b2eb6adf63ecb  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-5.c
! d2d29eae5e08798486ec5cf7459ccf0e  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-6.c
! 082c3f4bbeebaf8df289507af327e3fe  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-7.c
! 4ad58f7013c4f4a4ac7e4ac33b036bc8  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-8.c
! 77ca34f21bf1df948b8e2a78e5730cd1  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-9.c
  b41a7f0d2ceb998a870984d95d4a88a5  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-neg-0.c
  9aa59cfe98c186629ca047e2f5bc4eb7  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-neg-1.c
! fd725a130823d1e988cbc89fdb02d80d  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-neg-2.c
! 2830d3acabca5fa2da6123b8bd89e346  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-neg-3.c
! da12e6af170054021b61581e24a7568a  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-neg-4.c
! b3c10236ec88da028c775193739d45b1  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-neg-5.c
! c5a0e919c9b168cf246b461978352447  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-neg-6.c
! 487092b3c8e68bb8b7b96e45e767982f  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-neg-7.c
! 803b89c254ca4fbecb8ae6bb3340d707  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-neg-8.c
  f2bad45ffdbadf93a7cd6dc456ae15d5  gcc/testsuite/gcc.target/powerpc/bfp/vec-extract-exp-0.c
  4bc7fb7583d4c44380853db0f9056c80  gcc/testsuite/gcc.target/powerpc/bfp/vec-extract-exp-1.c
! ddc348582a0a914ab3dd98b89c8a8c77  gcc/testsuite/gcc.target/powerpc/bfp/vec-extract-exp-2.c
! 25b4a239143ca69fb095f8dfbf58ad04  gcc/testsuite/gcc.target/powerpc/bfp/vec-extract-exp-3.c
! 0135f819ee49e07706c1d1611744b57c  gcc/testsuite/gcc.target/powerpc/bfp/vec-extract-exp-4.c
! 9976b441ffd0730d612d20ccc7766e40  gcc/testsuite/gcc.target/powerpc/bfp/vec-extract-exp-5.c
  10cb72da04ad282aacf1513e3083e4d2  gcc/testsuite/gcc.target/powerpc/bfp/vec-extract-sig-0.c
  ef4da7aa4e84ba9f02956d79ee613715  gcc/testsuite/gcc.target/powerpc/bfp/vec-extract-sig-1.c
! bf7bd9612990b6cb83ab379e9058f32a  gcc/testsuite/gcc.target/powerpc/bfp/vec-extract-sig-2.c
! c60aa667b0fe8571e918ed2bca2f2249  gcc/testsuite/gcc.target/powerpc/bfp/vec-extract-sig-3.c
! 2d0e7f977a4b80995f0247c521f85d98  gcc/testsuite/gcc.target/powerpc/bfp/vec-extract-sig-4.c
! 349d7a9cef58a973b90da66de0b8fbc0  gcc/testsuite/gcc.target/powerpc/bfp/vec-extract-sig-5.c
  fded041cb4fbdbbb378a9efcf7e7858c  gcc/testsuite/gcc.target/powerpc/bfp/vec-insert-exp-0.c
  1abcf6e26c1e8f5f9673c4851951773a  gcc/testsuite/gcc.target/powerpc/bfp/vec-insert-exp-1.c
! 4ee135d1aba1caa4195dfbfc857ce48d  gcc/testsuite/gcc.target/powerpc/bfp/vec-insert-exp-10.c
! a1d0c2e338a8a7f4f808875a0e544804  gcc/testsuite/gcc.target/powerpc/bfp/vec-insert-exp-11.c
! 0b1e55f96f7476a826cb157a5c3dcdcd  gcc/testsuite/gcc.target/powerpc/bfp/vec-insert-exp-2.c
! fb124683e7be80a65891fbc7b06d032d  gcc/testsuite/gcc.target/powerpc/bfp/vec-insert-exp-3.c
  29a78b6e23ce4b1c7f2cfcce634b5ced  gcc/testsuite/gcc.target/powerpc/bfp/vec-insert-exp-4.c
  6111c6ec85685e51f0515531af02b13c  gcc/testsuite/gcc.target/powerpc/bfp/vec-insert-exp-5.c
! b98611bf49a9fe4ae44e2c824eaa3824  gcc/testsuite/gcc.target/powerpc/bfp/vec-insert-exp-6.c
! 5cd1b3d08218cfefb7b0254676a9ee1c  gcc/testsuite/gcc.target/powerpc/bfp/vec-insert-exp-7.c
! be847891eab431419874ac95a603d8d0  gcc/testsuite/gcc.target/powerpc/bfp/vec-insert-exp-8.c
! ec3bdf544d227033a96f6714d7c060fd  gcc/testsuite/gcc.target/powerpc/bfp/vec-insert-exp-9.c
  10468b510b13f90cd9e727bfffb61726  gcc/testsuite/gcc.target/powerpc/bfp/vec-test-data-class-0.c
  f413ff8b01098d65491c5ddcbe17ebb4  gcc/testsuite/gcc.target/powerpc/bfp/vec-test-data-class-1.c
! 4529c8062c9bd6c6e1820073b82f3e41  gcc/testsuite/gcc.target/powerpc/bfp/vec-test-data-class-2.c
! bfcfde42950989eba44c5d5b54f95591  gcc/testsuite/gcc.target/powerpc/bfp/vec-test-data-class-3.c
  06a8cd51f1a4b834304c1615fbcbcf27  gcc/testsuite/gcc.target/powerpc/bfp/vec-test-data-class-4.c
  f029454fc9dd0d2dfb2b9fe0548234bc  gcc/testsuite/gcc.target/powerpc/bfp/vec-test-data-class-5.c
  b3c5a482d95c5bf2ad0f88089abc329e  gcc/testsuite/gcc.target/powerpc/bfp/vec-test-data-class-6.c
  99a1abb7b581040a140adc934f6dc82a  gcc/testsuite/gcc.target/powerpc/bfp/vec-test-data-class-7.c
+ f5955cca380e7a4c9ebd87832a6fe62f  gcc/testsuite/gcc.target/powerpc/bfp/vec-test-data-class-8.c
+ 591db9943721c1ff6992503e675b5723  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
+ de2e239c9ee582a97749f25524b10c55  gcc/testsuite/gcc.target/powerpc/bmi-andn-2.c
+ 5dfeff5d99f9e17b473d20091e44f8d9  gcc/testsuite/gcc.target/powerpc/bmi-bextr-1.c
+ dbf11f77f17894ecd13bf84d1e84cf66  gcc/testsuite/gcc.target/powerpc/bmi-bextr-2.c
+ fb98ba9b43d71d16fbbf789899335b42  gcc/testsuite/gcc.target/powerpc/bmi-bextr-4.c
+ 635cadfa98628738ac43291a59047bb9  gcc/testsuite/gcc.target/powerpc/bmi-bextr-5.c
+ b6a10cb86f0bc2051232176b6b129695  gcc/testsuite/gcc.target/powerpc/bmi-blsi-1.c
+ 449476e6053d022b619fab13d85448be  gcc/testsuite/gcc.target/powerpc/bmi-blsi-2.c
+ faec7a6ded56f9b44988731394b9938e  gcc/testsuite/gcc.target/powerpc/bmi-blsmsk-1.c
+ b9f7c8a974d58cb8e21aa1cfba076be4  gcc/testsuite/gcc.target/powerpc/bmi-blsmsk-2.c
+ a08559748678fa98ca580bb5de021c6a  gcc/testsuite/gcc.target/powerpc/bmi-blsr-1.c
+ 0a8207abbcc4a0f5f857089d1f2f38f7  gcc/testsuite/gcc.target/powerpc/bmi-blsr-2.c
+ 317a65dc2818e9e5e5b264ebdbbeb345  gcc/testsuite/gcc.target/powerpc/bmi-check.h
+ c0744700061ef044f794d3f292f70fe4  gcc/testsuite/gcc.target/powerpc/bmi-tzcnt-1.c
+ ac6fbf41ad19d891d3fdc790fb5f2b79  gcc/testsuite/gcc.target/powerpc/bmi-tzcnt-2.c
+ 2522f354a88ffbf69670aeb86a40c3f2  gcc/testsuite/gcc.target/powerpc/bmi2-bzhi32-1.c
+ df37e5d6c28140935347c611bd06ef2f  gcc/testsuite/gcc.target/powerpc/bmi2-bzhi64-1.c
+ 6c24934247952ffbe4809eed3841df92  gcc/testsuite/gcc.target/powerpc/bmi2-bzhi64-1a.c
+ ba01782a183ed1c8acdfca0a5aee5de9  gcc/testsuite/gcc.target/powerpc/bmi2-check.h
+ 63f721848571ec5e6b0029b3c1bdde19  gcc/testsuite/gcc.target/powerpc/bmi2-mulx32-1.c
+ beeee58dc54e517ac38855a0e08962de  gcc/testsuite/gcc.target/powerpc/bmi2-mulx32-2.c
+ 15c53589c08da3bd511be67d41ba6144  gcc/testsuite/gcc.target/powerpc/bmi2-mulx64-1.c
+ 20f72d8ddda7c2b3941fe9c3f4f51fc9  gcc/testsuite/gcc.target/powerpc/bmi2-mulx64-2.c
+ fa12e6e3c254c6a21332b2ba9ba447d6  gcc/testsuite/gcc.target/powerpc/bmi2-pdep32-1.c
+ 0917ed80182876a2931d6123db78f426  gcc/testsuite/gcc.target/powerpc/bmi2-pdep64-1.c
+ 1091419d6b833a99b04f0a51e3d36c23  gcc/testsuite/gcc.target/powerpc/bmi2-pext32-1.c
+ 200b855615edb16974f76a4a5a6106de  gcc/testsuite/gcc.target/powerpc/bmi2-pext64-1.c
+ 34f7a5f1dbddd45a622340c4515e6c28  gcc/testsuite/gcc.target/powerpc/bmi2-pext64-1a.c
  8b94a94a7dff0052358065a48eaa4f9f  gcc/testsuite/gcc.target/powerpc/bool.c
! c5e17f6f45242d565487c7e6cbca79eb  gcc/testsuite/gcc.target/powerpc/bool2-av.c
! 3867aca6039b3e6bc3574637d6c8fd9f  gcc/testsuite/gcc.target/powerpc/bool2-p5.c
! aa618e58caf5da95459317410ae32040  gcc/testsuite/gcc.target/powerpc/bool2-p7.c
! 9776b64d0750cd7e6d22cbe1bcb88601  gcc/testsuite/gcc.target/powerpc/bool2-p8.c
  c9f98da2825e699344ef8948cd8d19fa  gcc/testsuite/gcc.target/powerpc/bool2.h
! 250ae6522a69a74a9d91fa46ce771627  gcc/testsuite/gcc.target/powerpc/bool3-av.c
! c1c85d10ed86784c9e5982eec9954346  gcc/testsuite/gcc.target/powerpc/bool3-p7.c
! c182d8bf1178b2cdad63a337ea137399  gcc/testsuite/gcc.target/powerpc/bool3-p8.c
  438f4e658462567e81a685ced3c5a415  gcc/testsuite/gcc.target/powerpc/bool3.h
  5f5298f748bcfaf7c81d750d7b190615  gcc/testsuite/gcc.target/powerpc/bswap-run.c
  83b860118c2602e26698368661e795c2  gcc/testsuite/gcc.target/powerpc/bswap16.c
*************** caf01994c96172dac156c3da29317823  gcc/te
*** 46384,46422 ****
  4cf15a14766aa407867a03606cbfc929  gcc/testsuite/gcc.target/powerpc/bswap64-1.c
  28a093e56a3b3b438802b7510941c3d7  gcc/testsuite/gcc.target/powerpc/bswap64-2.c
  931398e0111335374a570dab11f94aba  gcc/testsuite/gcc.target/powerpc/bswap64-3.c
! 37c12fff6f77333d7cb7d787bbb7f908  gcc/testsuite/gcc.target/powerpc/bswap64-4.c
! 1bdcd38f4043a35aa4799e5b7e1fd590  gcc/testsuite/gcc.target/powerpc/builtins-1.c
! fc8793b521e1298ab0e99e4fb318b34b  gcc/testsuite/gcc.target/powerpc/builtins-2.c
! e39cfd1ce02900ceb69480a1218c8dff  gcc/testsuite/gcc.target/powerpc/builtins-3-p8.c
! 0e99659f3cc8824783e11b2ca1733f88  gcc/testsuite/gcc.target/powerpc/builtins-3-p9.c
! 94eccf14ae06590446e0f90ba42e79f4  gcc/testsuite/gcc.target/powerpc/builtins-3.c
  7f35a56e8dea223eabe96fb48dba06ed  gcc/testsuite/gcc.target/powerpc/byte-in-either-range-0.c
! ffc28a6e3572df02a4e4068818687d49  gcc/testsuite/gcc.target/powerpc/byte-in-either-range-1.c
  8fcbbe3c61eee66451e8c680411c0224  gcc/testsuite/gcc.target/powerpc/byte-in-range-0.c
! 414ebd137f57fa1a1ad9897e800cfd5a  gcc/testsuite/gcc.target/powerpc/byte-in-range-1.c
  9e98522e7a9675c7461df89de25a1f8a  gcc/testsuite/gcc.target/powerpc/byte-in-set-0.c
! efc2fd722bb72dba210c2ee43502def6  gcc/testsuite/gcc.target/powerpc/byte-in-set-1.c
! 1781cf57a84c287b9754fcdcb5592897  gcc/testsuite/gcc.target/powerpc/byte-in-set-2.c
! aa7f028ee43d6de435ef9e96d16926a5  gcc/testsuite/gcc.target/powerpc/cell_builtin-1.c
! 4d701030026d89cdc9d316ac4b013baa  gcc/testsuite/gcc.target/powerpc/cell_builtin-2.c
! 49e4d6ccb42c80379975f32fce0efd5b  gcc/testsuite/gcc.target/powerpc/cell_builtin-3.c
! 5224089c53a6899e712f85cb89945a8b  gcc/testsuite/gcc.target/powerpc/cell_builtin-4.c
! b11c6a9c27f9c59b2960f40f309f802a  gcc/testsuite/gcc.target/powerpc/cell_builtin-5.c
! ff42b15512cd6d185772b1559d004793  gcc/testsuite/gcc.target/powerpc/cell_builtin-6.c
! d32f536528e13a21d30d49c09e4dcca2  gcc/testsuite/gcc.target/powerpc/cell_builtin-7.c
! f79a8d28de6bff9a9f4f0ebdba8dadd5  gcc/testsuite/gcc.target/powerpc/cell_builtin-8.c
  76368ec7aa2b631ffe91a52dbe0c7e7a  gcc/testsuite/gcc.target/powerpc/compress-float-ppc-pic.c
  caf3aba39c0565b4369f2e0263b16af5  gcc/testsuite/gcc.target/powerpc/compress-float-ppc.c
  6419d1aaea22c0476688f484ac4f0f43  gcc/testsuite/gcc.target/powerpc/const-compare.c
  1f7277471f008809ee3572d95097e11a  gcc/testsuite/gcc.target/powerpc/copysign128-1.c
  4b60a8662648a73cedee85dd08e278eb  gcc/testsuite/gcc.target/powerpc/cprophard.c
! ceee196d52c1e634069b5d122f09e1ae  gcc/testsuite/gcc.target/powerpc/cpu-builtin-1.c
! 1fb2215d04b688ce2fdb0faccd58b012  gcc/testsuite/gcc.target/powerpc/crypto-builtin-1.c
! 14fe4a3bc84df2b97d9440c94d7c8339  gcc/testsuite/gcc.target/powerpc/crypto-builtin-2.c
  4e3992362b37b544083ac6eaeaa1acca  gcc/testsuite/gcc.target/powerpc/ctz-1.c
  9266181f224f779baa6b98a2f3b171e8  gcc/testsuite/gcc.target/powerpc/ctz-2.c
! dcd67b030ac5a36c48772f45c9311a7a  gcc/testsuite/gcc.target/powerpc/ctz-3.c
! 531f016ec3779129874335e4d662190c  gcc/testsuite/gcc.target/powerpc/ctz-4.c
  dff00811bdc4a0d32afb132f16084b8c  gcc/testsuite/gcc.target/powerpc/darn-0.c
  a3b7e0d3cc77ae3e0b0aea94e91b58e5  gcc/testsuite/gcc.target/powerpc/darn-1.c
  3a484a34727d320db4da25fdd45adeeb  gcc/testsuite/gcc.target/powerpc/darn-2.c
--- 49332,49401 ----
  4cf15a14766aa407867a03606cbfc929  gcc/testsuite/gcc.target/powerpc/bswap64-1.c
  28a093e56a3b3b438802b7510941c3d7  gcc/testsuite/gcc.target/powerpc/bswap64-2.c
  931398e0111335374a570dab11f94aba  gcc/testsuite/gcc.target/powerpc/bswap64-3.c
! 332b3d51f7b08982922122764eeefdd1  gcc/testsuite/gcc.target/powerpc/bswap64-4.c
! 660ec5b28bd11c4d01e9d4d45e4670fa  gcc/testsuite/gcc.target/powerpc/builtin-vec-sums-be-int.c
! a12779173ff410afc2edfb105cc93f42  gcc/testsuite/gcc.target/powerpc/builtins-1-be-folded.c
! aecef7ad576830667bf95ed8c43a5e95  gcc/testsuite/gcc.target/powerpc/builtins-1-be.c
! 6005342172a0176bcfbab4891b95fd00  gcc/testsuite/gcc.target/powerpc/builtins-1-le-folded.c
! 5678d50696a24a905cd1b5a0b22b485c  gcc/testsuite/gcc.target/powerpc/builtins-1-le.c
! 33abd1af80f66e4214b0acae7839bfa6  gcc/testsuite/gcc.target/powerpc/builtins-1-p9-runnable.c
! 77f4cc7ca27ab5f1eaac6d0ad22a87aa  gcc/testsuite/gcc.target/powerpc/builtins-1.fold.h
! 2343bc1b52052bc05d5d1fb1abd7a42f  gcc/testsuite/gcc.target/powerpc/builtins-1.h
! 4a21cfa6efc194e065396e8eee656f75  gcc/testsuite/gcc.target/powerpc/builtins-2-p9-runnable.c
! f2a1b1e6b9938f58e73b467b021816af  gcc/testsuite/gcc.target/powerpc/builtins-2.c
! b4831051152d1863c611fd69fac47b5a  gcc/testsuite/gcc.target/powerpc/builtins-3-p8.c
! 90e86bc17024a4466eb8ef6042ebc459  gcc/testsuite/gcc.target/powerpc/builtins-3-p9-runnable.c
! a934e482b46e519d71ca5abd85d5c3f8  gcc/testsuite/gcc.target/powerpc/builtins-3-p9.c
! 14a382c7ba3fc9d6f2b5403ecd973455  gcc/testsuite/gcc.target/powerpc/builtins-3-runnable-p8.c
! 5701d50633d5bb5325a165e33f3d8da1  gcc/testsuite/gcc.target/powerpc/builtins-3-runnable.c
! 4c3f2b015af5a98da38ceca9883e812e  gcc/testsuite/gcc.target/powerpc/builtins-3-vec_reve-runnable.c
! 9a7c5777d9dd8cddd86719f2bd9a94be  gcc/testsuite/gcc.target/powerpc/builtins-3.c
! 8a1bb8ec52829a6ea7f9ee07a431c165  gcc/testsuite/gcc.target/powerpc/builtins-4-int128-runnable.c
! db4745880b5164acbd0bcf5c8b8b1b4b  gcc/testsuite/gcc.target/powerpc/builtins-4-p9-runnable.c
! 229b92af5d708ec95906efd39c078624  gcc/testsuite/gcc.target/powerpc/builtins-4-runnable.c
! 7154fdaa59179f9b70bf113b0194c828  gcc/testsuite/gcc.target/powerpc/builtins-5-p9-runnable.c
! a0f7d5e680100acf43fdb1ab0372641b  gcc/testsuite/gcc.target/powerpc/builtins-6-p9-runnable.c
! 9ed4f7458d6a6dadd3d717551da74733  gcc/testsuite/gcc.target/powerpc/builtins-6-runnable.c
! 152da1e6a5994b32721d906034b3265b  gcc/testsuite/gcc.target/powerpc/builtins-7-p9-runnable.c
! 34e0fd287c753e0ec601021c95c3705c  gcc/testsuite/gcc.target/powerpc/builtins-7-runnable.c
! 6a0869294a2f975212e388f211524c2a  gcc/testsuite/gcc.target/powerpc/builtins-mergew-mergow.c
! 23cbc0965c2217c02326bfaf8538fb4a  gcc/testsuite/gcc.target/powerpc/builtins-revb-runnable.c
  7f35a56e8dea223eabe96fb48dba06ed  gcc/testsuite/gcc.target/powerpc/byte-in-either-range-0.c
! 99abb6516c84973c6aa12da4219bc2ec  gcc/testsuite/gcc.target/powerpc/byte-in-either-range-1.c
  8fcbbe3c61eee66451e8c680411c0224  gcc/testsuite/gcc.target/powerpc/byte-in-range-0.c
! 1828c2b53feae31b126e71c0529b0224  gcc/testsuite/gcc.target/powerpc/byte-in-range-1.c
  9e98522e7a9675c7461df89de25a1f8a  gcc/testsuite/gcc.target/powerpc/byte-in-set-0.c
! 09f7a3e35605f3503b42e2321ef4ca49  gcc/testsuite/gcc.target/powerpc/byte-in-set-1.c
! 7ac99fa0266bee68823ed0bb05c6c27d  gcc/testsuite/gcc.target/powerpc/byte-in-set-2.c
! 6b280f1a2ac64af561545cfe7a632d77  gcc/testsuite/gcc.target/powerpc/cell_builtin-1.c
! 19b324fff93ded72fa8f551ef38bdae2  gcc/testsuite/gcc.target/powerpc/cell_builtin-2.c
! bd04e32ad72ea051ed08dc915693ffed  gcc/testsuite/gcc.target/powerpc/cell_builtin-3.c
! 63d2565b543cc96fc8a0646362641d2e  gcc/testsuite/gcc.target/powerpc/cell_builtin-4.c
! 33b19109aac1848bfa31870b7d9a7899  gcc/testsuite/gcc.target/powerpc/cell_builtin-5.c
! e9eb7818c3d385903c4048f783f4deed  gcc/testsuite/gcc.target/powerpc/cell_builtin-6.c
! b0f8dbad311818b59c25afa80e297e28  gcc/testsuite/gcc.target/powerpc/cell_builtin-7.c
! aed0440a279fb04bed7eac16fca313f5  gcc/testsuite/gcc.target/powerpc/cell_builtin-8.c
! 24998b51c895a070808a289376261cb3  gcc/testsuite/gcc.target/powerpc/clone1.c
! b8e6c9f8968f2606ab8c45e4bae3d807  gcc/testsuite/gcc.target/powerpc/clone2.c
! 7a30c4e83c105d733921666b67808b17  gcc/testsuite/gcc.target/powerpc/cmpb-1.c
! b8b14ac061f2672b370880fc1cc45a94  gcc/testsuite/gcc.target/powerpc/cmpb-2.c
! d95f5d3235c13e2515cadb9b08bf84fe  gcc/testsuite/gcc.target/powerpc/cmpb-3.c
! b41b6e29101f17c3f16416b5fb4d9a59  gcc/testsuite/gcc.target/powerpc/cmpb32-1.c
! 879635a592be2c3d72f1de0471f3a05a  gcc/testsuite/gcc.target/powerpc/cmpb32-2.c
  76368ec7aa2b631ffe91a52dbe0c7e7a  gcc/testsuite/gcc.target/powerpc/compress-float-ppc-pic.c
  caf3aba39c0565b4369f2e0263b16af5  gcc/testsuite/gcc.target/powerpc/compress-float-ppc.c
+ 416032da5b592cc90008b1b2f2bbc3c7  gcc/testsuite/gcc.target/powerpc/conditional-return.c
  6419d1aaea22c0476688f484ac4f0f43  gcc/testsuite/gcc.target/powerpc/const-compare.c
  1f7277471f008809ee3572d95097e11a  gcc/testsuite/gcc.target/powerpc/copysign128-1.c
  4b60a8662648a73cedee85dd08e278eb  gcc/testsuite/gcc.target/powerpc/cprophard.c
! 90d6297f496119a66def439f404c01cb  gcc/testsuite/gcc.target/powerpc/cpu-builtin-1.c
! 81b6f286dd2f5fda45d87e46682a7d3a  gcc/testsuite/gcc.target/powerpc/cr_shrink-wrap.c
! 74216269f1f99492649a898d8eb5b78d  gcc/testsuite/gcc.target/powerpc/crypto-builtin-1.c
! 553c685b2707b80e1320960a0027f71a  gcc/testsuite/gcc.target/powerpc/crypto-builtin-2.c
  4e3992362b37b544083ac6eaeaa1acca  gcc/testsuite/gcc.target/powerpc/ctz-1.c
  9266181f224f779baa6b98a2f3b171e8  gcc/testsuite/gcc.target/powerpc/ctz-2.c
! 0e7acf3c5da5958c8f0ed1289ac9db1a  gcc/testsuite/gcc.target/powerpc/ctz-3.c
! a531e6d5d781e8f5b8f3987351a73f4f  gcc/testsuite/gcc.target/powerpc/ctz-4.c
  dff00811bdc4a0d32afb132f16084b8c  gcc/testsuite/gcc.target/powerpc/darn-0.c
  a3b7e0d3cc77ae3e0b0aea94e91b58e5  gcc/testsuite/gcc.target/powerpc/darn-1.c
  3a484a34727d320db4da25fdd45adeeb  gcc/testsuite/gcc.target/powerpc/darn-2.c
*************** e5a3f954e535f339c4a0f35fc50c6302  gcc/te
*** 46441,46450 ****
  7ba33272da50fd8bee6d1536c3e99d26  gcc/testsuite/gcc.target/powerpc/darwin-save-world-1.c
  a034d7a8bf265623a75800f01113e836  gcc/testsuite/gcc.target/powerpc/darwin-split-ld-stret.c
  548fc585bcbf766f23bef7319f0b0a18  gcc/testsuite/gcc.target/powerpc/darwin64-abi.c
! 48cfcb8d91718cca2ec942edea2af044  gcc/testsuite/gcc.target/powerpc/dfmode_off.c
! f6511eaddea2d2d6dbb6428c8e9f5822  gcc/testsuite/gcc.target/powerpc/dform-1.c
! bf3533458cbe01184881116cdb4e822c  gcc/testsuite/gcc.target/powerpc/dform-2.c
! 571072f2c83195496efb8b6a3d7921a1  gcc/testsuite/gcc.target/powerpc/dform-3.c
  e861a888f1deb9e37547f0da1a5f7f2d  gcc/testsuite/gcc.target/powerpc/dfp-builtin-1.c
  e5999c82fe083b7c9a7cd976f61a514b  gcc/testsuite/gcc.target/powerpc/dfp-builtin-2.c
  edc590c61b2a5fd6c1f8da5e10b52099  gcc/testsuite/gcc.target/powerpc/dfp-dd-2.c
--- 49420,49429 ----
  7ba33272da50fd8bee6d1536c3e99d26  gcc/testsuite/gcc.target/powerpc/darwin-save-world-1.c
  a034d7a8bf265623a75800f01113e836  gcc/testsuite/gcc.target/powerpc/darwin-split-ld-stret.c
  548fc585bcbf766f23bef7319f0b0a18  gcc/testsuite/gcc.target/powerpc/darwin64-abi.c
! 5df8870892f8ad5f8ea3060c6c5b82b1  gcc/testsuite/gcc.target/powerpc/dfmode_off.c
! 39a60b8b75cc0dfba0799a7a9c2be1b7  gcc/testsuite/gcc.target/powerpc/dform-1.c
! 5092b07943c48246adcbfe8c79007b81  gcc/testsuite/gcc.target/powerpc/dform-2.c
! 9cc3c8651b98fea143231a90dbde2ba5  gcc/testsuite/gcc.target/powerpc/dform-3.c
  e861a888f1deb9e37547f0da1a5f7f2d  gcc/testsuite/gcc.target/powerpc/dfp-builtin-1.c
  e5999c82fe083b7c9a7cd976f61a514b  gcc/testsuite/gcc.target/powerpc/dfp-builtin-2.c
  edc590c61b2a5fd6c1f8da5e10b52099  gcc/testsuite/gcc.target/powerpc/dfp-dd-2.c
*************** edc590c61b2a5fd6c1f8da5e10b52099  gcc/te
*** 46452,46572 ****
  918f43d2707c381ec6a3c8f95d06ba7a  gcc/testsuite/gcc.target/powerpc/dfp-td-2.c
  d29a538f7ef7ada44a91b35380ca809c  gcc/testsuite/gcc.target/powerpc/dfp-td-3.c
  f99e26532b9bfe0b24631290281df325  gcc/testsuite/gcc.target/powerpc/dfp-td.c
! bdcc34a514465c46140fce3b10a28b9a  gcc/testsuite/gcc.target/powerpc/dfp/dfp.exp
  03cc7e47a4479ec2055b9af5a2055522  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-0.c
! 6959ef5cd0438cde997e2af826ef2d8d  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-1.c
  8f82047dd5d13bd7808101a6cae2f96a  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-10.c
! 758f013931d8cc97a719f89662e5f559  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-11.c
  3b8212a7bdbfd7228a56f2142a77082d  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-12.c
  65380dd3577ee9e0a9b22cad78b2565c  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-13.c
  80d4ddd21f937e7f5cc6b1f54d5d3777  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-14.c
  f2469b3c94f1f566011419ed3f6c54c3  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-15.c
! 9a597227f69d2f2ce0f06ce5d68e7e46  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-16.c
  98c6e4c9b297b48f787a19ea13166fee  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-17.c
  6278ed0a2ff858f774d06e4fa6833c07  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-18.c
  b50bd5c52b5f27cf4b0eee6c78eef867  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-19.c
  68c7553b8028a8c430aa1c40c8f624da  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-2.c
  70da3a0ca0e2c3a4e51d3fbbbcd51313  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-20.c
! fa0668a907811b58e0a0c4f409996798  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-21.c
  abe6816951e1b9e949e8b911a3b180cd  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-22.c
  2c31ee89174617e3ba574448053a4776  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-23.c
  3e0335739986a16a45163048e08ed006  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-24.c
  a22bc1b3d29bb75f9e9f4da82ccf7000  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-25.c
! f3a402fb571a70912ac64e7756e95960  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-26.c
  48fd4c4f5b16ff2839d5091efc51bc1c  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-27.c
  0c90090dac2694d64341be49176ef464  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-28.c
  d6c16f057f007ccdd7d443182f2f58ed  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-29.c
  36c01ff92130550706fac5b98007820d  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-3.c
  8e75374fe860fe454da6f1a680c53093  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-30.c
! 03f7f40b1ee77245c4ed1db91842709e  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-31.c
  134a1c8226d793ac94d0652e4b65ae51  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-32.c
  67f1fa247cbccff554d48bb98247665d  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-33.c
  4edb941d627fbc374887b9f23e0f17e3  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-34.c
  e5cc2dfa10fd84ddaad3943264a4ad7f  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-35.c
! 418c5a05711f0f9acd8020fe4b275a27  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-36.c
  df4d094eb16f0b1be12e3e39058baccf  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-37.c
  91d74d67304699dcaa0bcc5fea885968  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-38.c
  99ba4e76415ae84299cdbd2e35e691be  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-39.c
  955c200f2a3a98a7dc3ce9fbf4a5d301  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-4.c
  39dac34ae8d1af68556468f7c696b8aa  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-40.c
! a1cf710e376403fc2fa6bc0a774cd55a  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-41.c
  239e077c75c03ada560d0ef45ba111ed  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-42.c
  6a91cd2b45b92620b9b44d1e1d6c8a1d  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-43.c
  4c0f2cfece2b5a5e87eaa33c36b3b3c7  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-44.c
  ff7d194ce3581accd4fd84661a45b7e5  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-45.c
! b6c2800bdfb9e964c574e9f6647766b7  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-46.c
  a384e1a8d2656a2eded5ddbbbb85944d  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-47.c
  1af4396cdb9e44ea23e581e3bc867f1a  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-48.c
  3a822bc78662a47bca3c325640886000  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-49.c
  42702dc12a998715cd502e0f58c1a084  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-5.c
  59131225f967e9974e4056c8724eb44d  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-50.c
! ca1730fffd35b4df6944a51eb8e6ecd0  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-51.c
  6f290c19a8e109a3d2386b1bf4ec52fb  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-52.c
  e0c0eb7cd795a9e89a8d3bb2a7dae3c1  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-53.c
  d17666a7a3f1f4012dea704edcb358c1  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-54.c
  bc14720a9dc1307f25839ed1e2ea1df8  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-55.c
! 5f29e6111a8c4445a3d2e82737ed852c  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-56.c
  4ecd75bfc45420b8fe41eb1a6f75d1a6  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-57.c
  0b3e0dd4599b91e7eb77033764ef84f4  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-58.c
  1898d182bb390c8c6491b7c435026a9e  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-59.c
! a348525fc964f3f41e12f8381fd4bcf0  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-6.c
  8fe72a2d44a5dbae21dedb5009bd7060  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-60.c
! 1b1a3ecb85d752278437daf2eea0e6eb  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-61.c
  52a091925e77ba1144deef4224d6f9ca  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-62.c
  f26a1170d2c83041d7a069b94343a9d7  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-63.c
  7f10d8beb44cbeb34704f04daf38dca2  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-64.c
  1243afa79ef71c09ca472c7ad6965e54  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-65.c
! 54e131b3227f901fd2e26be9a409249d  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-66.c
  e771d4d8a905e5bf787121a83f8fb1bd  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-67.c
  231bcc25e02275bc7eba589b808e66c4  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-68.c
  f72240bd263e9d2959d34419b48ec7a1  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-69.c
  e5c6066babd8f328700bb917a676f848  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-7.c
  7f5d4d6487570d1848a67d1deb2569de  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-70.c
! 11baa718d3b7a09edcd806f460dbbc25  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-71.c
  b8a10e75320b7331731319d76c48b973  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-72.c
  af92c107465b701524293f2e133ca47b  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-73.c
  630a7ec679fff8883a406b022cf38aff  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-74.c
  c1e8ae021e1d249573f6608e39e8d86e  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-75.c
! b33ec26b8a79deea82491f02092ff7eb  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-76.c
  9f6e7688c4fef262f7ed52de311ab068  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-77.c
  2b710812d98f7baa361e357f4e747316  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-78.c
  2652ccf7999779ff5319bf65f0b659c1  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-79.c
  341058672752eae6a423c51813b90e2c  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-8.c
  e8ac5024db4f3ad13af9c932702e4b7f  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-9.c
! e1dbd1140383b4dbafeb6bc38684cf93  gcc/testsuite/gcc.target/powerpc/dimode_off.c
! c6886ac188c6209f2a35a8c394fabfa1  gcc/testsuite/gcc.target/powerpc/direct-move-double1.c
! bdc2a6ba20c8709781a896620fe1326b  gcc/testsuite/gcc.target/powerpc/direct-move-double2.c
! 2a6e29d16a81a423a36c300e7695105c  gcc/testsuite/gcc.target/powerpc/direct-move-float1.c
! cf387005b3ed7e0900d659d321706f98  gcc/testsuite/gcc.target/powerpc/direct-move-float2.c
! 4b484dccef6b640acd038f9e4dbab6d3  gcc/testsuite/gcc.target/powerpc/direct-move-long1.c
! 0c631e41025486d5507a39da7a3d22fd  gcc/testsuite/gcc.target/powerpc/direct-move-long2.c
  8964a63849500479c23cd94cf94ddd3b  gcc/testsuite/gcc.target/powerpc/direct-move-vector.c
! 8d289ff49f69a167c01f4b6855e110ac  gcc/testsuite/gcc.target/powerpc/direct-move-vint1.c
! c08abaae6dddb0af0b1430cc189c6040  gcc/testsuite/gcc.target/powerpc/direct-move-vint2.c
  6aa10299b67de4618abcf699cb851ce8  gcc/testsuite/gcc.target/powerpc/direct-move.h
  437116f4ece2fc838159319958a00e92  gcc/testsuite/gcc.target/powerpc/divkc3-1.c
  8f2229fba1c4dc16358c52a26e62a35e  gcc/testsuite/gcc.target/powerpc/doloop-1.c
  1e28ad29e43de3bf402fb713b7540c32  gcc/testsuite/gcc.target/powerpc/e500-1.c
  6b480fbd59c1e52ed8af5509486a3432  gcc/testsuite/gcc.target/powerpc/e500-ord-1.c
  62820786e811568bf9c0487b4ef6761b  gcc/testsuite/gcc.target/powerpc/e500-ord-2.c
  6ea92a9945a83333f8d1ba665d65f560  gcc/testsuite/gcc.target/powerpc/e500-unord-1.c
  83d3ef0422135a547b552e5700f1e4a6  gcc/testsuite/gcc.target/powerpc/e500-unord-2.c
! 52468a71868e251587d1c07bc7e2b10f  gcc/testsuite/gcc.target/powerpc/ehreturn.c
! b89f1f90359f5c6fcd8b4e8483dcef6e  gcc/testsuite/gcc.target/powerpc/extend-divide-1.c
! 87169efbc95439d84121932cc077ac9c  gcc/testsuite/gcc.target/powerpc/extend-divide-2.c
  8c72cdf8bfe8722381118fb2f830c083  gcc/testsuite/gcc.target/powerpc/extswsli-1.c
  2abdaa0ff5a02ac7f3a5b158d0c7caf2  gcc/testsuite/gcc.target/powerpc/extswsli-2.c
  66355bb17c4f25c93f5cbcb194923e36  gcc/testsuite/gcc.target/powerpc/extswsli-3.c
! 44257db5dbf13763224f09982671b766  gcc/testsuite/gcc.target/powerpc/float128-1.c
! 8431c27a8973acc6b663c3e4190c2f2e  gcc/testsuite/gcc.target/powerpc/float128-2.c
  9e6f60ec112f9373cd63307f592ff5a7  gcc/testsuite/gcc.target/powerpc/float128-call.c
! feb900f7194935bc35eceb803c8ec974  gcc/testsuite/gcc.target/powerpc/float128-cmp.c
! da43f175c7dca2bbe0139db71bea74f9  gcc/testsuite/gcc.target/powerpc/float128-complex-1.c
! ba0af867a51a0f317dfaf5694d966c85  gcc/testsuite/gcc.target/powerpc/float128-complex-2.c
! 805d724708f6f80210b45d7d6a7b190b  gcc/testsuite/gcc.target/powerpc/float128-hw.c
! fd43a518a31115006a1077297e455387  gcc/testsuite/gcc.target/powerpc/float128-mix.c
! 1a80b55ae7849d706a438baabb1f1baf  gcc/testsuite/gcc.target/powerpc/float128-type-1.c
! ea15cc4cee326e818d6a5ea688b38a36  gcc/testsuite/gcc.target/powerpc/float128-type-2.c
  9fea82572de51713f7f34f38bfbc65a1  gcc/testsuite/gcc.target/powerpc/fold-vec-add-1.c
  584a512198f713c5373b5cf53c722434  gcc/testsuite/gcc.target/powerpc/fold-vec-add-2.c
  9689a568c1cb8a17bfdac146660f667d  gcc/testsuite/gcc.target/powerpc/fold-vec-add-3.c
--- 49431,49590 ----
  918f43d2707c381ec6a3c8f95d06ba7a  gcc/testsuite/gcc.target/powerpc/dfp-td-2.c
  d29a538f7ef7ada44a91b35380ca809c  gcc/testsuite/gcc.target/powerpc/dfp-td-3.c
  f99e26532b9bfe0b24631290281df325  gcc/testsuite/gcc.target/powerpc/dfp-td.c
! 48e31f401a0a5b5f767e49474ee68ab7  gcc/testsuite/gcc.target/powerpc/dfp/dfp.exp
  03cc7e47a4479ec2055b9af5a2055522  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-0.c
! e04d4ab9986d2eb2e4b508bb6566bb66  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-1.c
  8f82047dd5d13bd7808101a6cae2f96a  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-10.c
! aa75541e33473f70c715e0988db312d2  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-11.c
  3b8212a7bdbfd7228a56f2142a77082d  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-12.c
  65380dd3577ee9e0a9b22cad78b2565c  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-13.c
  80d4ddd21f937e7f5cc6b1f54d5d3777  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-14.c
  f2469b3c94f1f566011419ed3f6c54c3  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-15.c
! 70ef12d5c51c044b842f86a4a19ec01d  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-16.c
  98c6e4c9b297b48f787a19ea13166fee  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-17.c
  6278ed0a2ff858f774d06e4fa6833c07  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-18.c
  b50bd5c52b5f27cf4b0eee6c78eef867  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-19.c
  68c7553b8028a8c430aa1c40c8f624da  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-2.c
  70da3a0ca0e2c3a4e51d3fbbbcd51313  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-20.c
! 7cbfe220a3d8d6871be8f3f3be6d5ff9  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-21.c
  abe6816951e1b9e949e8b911a3b180cd  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-22.c
  2c31ee89174617e3ba574448053a4776  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-23.c
  3e0335739986a16a45163048e08ed006  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-24.c
  a22bc1b3d29bb75f9e9f4da82ccf7000  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-25.c
! ba3e5467abcdc241945620fc6cba1241  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-26.c
  48fd4c4f5b16ff2839d5091efc51bc1c  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-27.c
  0c90090dac2694d64341be49176ef464  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-28.c
  d6c16f057f007ccdd7d443182f2f58ed  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-29.c
  36c01ff92130550706fac5b98007820d  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-3.c
  8e75374fe860fe454da6f1a680c53093  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-30.c
! 40d8c8b645ae850374a5a64b4f6f126d  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-31.c
  134a1c8226d793ac94d0652e4b65ae51  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-32.c
  67f1fa247cbccff554d48bb98247665d  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-33.c
  4edb941d627fbc374887b9f23e0f17e3  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-34.c
  e5cc2dfa10fd84ddaad3943264a4ad7f  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-35.c
! 1f6271994079160f72cd292c937dfc6c  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-36.c
  df4d094eb16f0b1be12e3e39058baccf  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-37.c
  91d74d67304699dcaa0bcc5fea885968  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-38.c
  99ba4e76415ae84299cdbd2e35e691be  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-39.c
  955c200f2a3a98a7dc3ce9fbf4a5d301  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-4.c
  39dac34ae8d1af68556468f7c696b8aa  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-40.c
! 1100fddc75a2b392779f1ecad5a9df2c  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-41.c
  239e077c75c03ada560d0ef45ba111ed  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-42.c
  6a91cd2b45b92620b9b44d1e1d6c8a1d  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-43.c
  4c0f2cfece2b5a5e87eaa33c36b3b3c7  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-44.c
  ff7d194ce3581accd4fd84661a45b7e5  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-45.c
! 8dd659879f93d2a81eb2631e5a770796  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-46.c
  a384e1a8d2656a2eded5ddbbbb85944d  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-47.c
  1af4396cdb9e44ea23e581e3bc867f1a  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-48.c
  3a822bc78662a47bca3c325640886000  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-49.c
  42702dc12a998715cd502e0f58c1a084  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-5.c
  59131225f967e9974e4056c8724eb44d  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-50.c
! a133dc9eb1a8b7880314e1ae5dc42354  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-51.c
  6f290c19a8e109a3d2386b1bf4ec52fb  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-52.c
  e0c0eb7cd795a9e89a8d3bb2a7dae3c1  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-53.c
  d17666a7a3f1f4012dea704edcb358c1  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-54.c
  bc14720a9dc1307f25839ed1e2ea1df8  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-55.c
! 716af0d7f0424abf15974c0fadb1bcb9  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-56.c
  4ecd75bfc45420b8fe41eb1a6f75d1a6  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-57.c
  0b3e0dd4599b91e7eb77033764ef84f4  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-58.c
  1898d182bb390c8c6491b7c435026a9e  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-59.c
! a3f0525cbb5b8ca810c80ca91d1b185b  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-6.c
  8fe72a2d44a5dbae21dedb5009bd7060  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-60.c
! 6fe0cf3f1447ee51484312e3b16f663c  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-61.c
  52a091925e77ba1144deef4224d6f9ca  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-62.c
  f26a1170d2c83041d7a069b94343a9d7  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-63.c
  7f10d8beb44cbeb34704f04daf38dca2  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-64.c
  1243afa79ef71c09ca472c7ad6965e54  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-65.c
! 7c8e45114feca3065acdc2dbf10a05dd  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-66.c
  e771d4d8a905e5bf787121a83f8fb1bd  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-67.c
  231bcc25e02275bc7eba589b808e66c4  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-68.c
  f72240bd263e9d2959d34419b48ec7a1  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-69.c
  e5c6066babd8f328700bb917a676f848  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-7.c
  7f5d4d6487570d1848a67d1deb2569de  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-70.c
! ac82fdf14f1231b7cbee870ce623b225  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-71.c
  b8a10e75320b7331731319d76c48b973  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-72.c
  af92c107465b701524293f2e133ca47b  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-73.c
  630a7ec679fff8883a406b022cf38aff  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-74.c
  c1e8ae021e1d249573f6608e39e8d86e  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-75.c
! a7f5213e887ba91e3e6af16186120625  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-76.c
  9f6e7688c4fef262f7ed52de311ab068  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-77.c
  2b710812d98f7baa361e357f4e747316  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-78.c
  2652ccf7999779ff5319bf65f0b659c1  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-79.c
  341058672752eae6a423c51813b90e2c  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-8.c
  e8ac5024db4f3ad13af9c932702e4b7f  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-9.c
! f22fe692cf9961a195c50bc33bebf610  gcc/testsuite/gcc.target/powerpc/dimode_off.c
! 91ecad4b688669e2fd7c19af30a910e2  gcc/testsuite/gcc.target/powerpc/direct-move-double1.c
! 2a5347224de3cc4c819d306fae25f8c3  gcc/testsuite/gcc.target/powerpc/direct-move-double2.c
! e3ec2ba152b3e0aac33a31101513b5de  gcc/testsuite/gcc.target/powerpc/direct-move-float1.c
! 7b0487457f361e0968f124637284ea7d  gcc/testsuite/gcc.target/powerpc/direct-move-float2.c
! 8649a10a58164e3d79d59dcf76fc70e5  gcc/testsuite/gcc.target/powerpc/direct-move-float3.c
! 5204f74a1babca9ea599473c011a54b2  gcc/testsuite/gcc.target/powerpc/direct-move-long1.c
! ed1fd158f6b81925163a29d847b84593  gcc/testsuite/gcc.target/powerpc/direct-move-long2.c
  8964a63849500479c23cd94cf94ddd3b  gcc/testsuite/gcc.target/powerpc/direct-move-vector.c
! 528a722d13dc8bb5f927dc3b68d51dc8  gcc/testsuite/gcc.target/powerpc/direct-move-vint1.c
! 5855fcf4178ae25f7f8bce907fb435f2  gcc/testsuite/gcc.target/powerpc/direct-move-vint2.c
  6aa10299b67de4618abcf699cb851ce8  gcc/testsuite/gcc.target/powerpc/direct-move.h
  437116f4ece2fc838159319958a00e92  gcc/testsuite/gcc.target/powerpc/divkc3-1.c
+ f6838616be545f126e578d93909edeff  gcc/testsuite/gcc.target/powerpc/divkc3-2.c
+ 5050a835a5629ea6d76bc083c8ce96e6  gcc/testsuite/gcc.target/powerpc/divkc3-3.c
  8f2229fba1c4dc16358c52a26e62a35e  gcc/testsuite/gcc.target/powerpc/doloop-1.c
  1e28ad29e43de3bf402fb713b7540c32  gcc/testsuite/gcc.target/powerpc/e500-1.c
  6b480fbd59c1e52ed8af5509486a3432  gcc/testsuite/gcc.target/powerpc/e500-ord-1.c
  62820786e811568bf9c0487b4ef6761b  gcc/testsuite/gcc.target/powerpc/e500-ord-2.c
  6ea92a9945a83333f8d1ba665d65f560  gcc/testsuite/gcc.target/powerpc/e500-unord-1.c
  83d3ef0422135a547b552e5700f1e4a6  gcc/testsuite/gcc.target/powerpc/e500-unord-2.c
! 01907d008b05c94700170b948c96b56e  gcc/testsuite/gcc.target/powerpc/ehreturn.c
! 747a8b8be6950217d0ee153c2d54eb88  gcc/testsuite/gcc.target/powerpc/extend-divide-1.c
! 4bdea80a185ff29677d0d393e2e06b7e  gcc/testsuite/gcc.target/powerpc/extend-divide-2.c
  8c72cdf8bfe8722381118fb2f830c083  gcc/testsuite/gcc.target/powerpc/extswsli-1.c
  2abdaa0ff5a02ac7f3a5b158d0c7caf2  gcc/testsuite/gcc.target/powerpc/extswsli-2.c
  66355bb17c4f25c93f5cbcb194923e36  gcc/testsuite/gcc.target/powerpc/extswsli-3.c
! 0ee5a8314afe97bf7a61d79ae4788f89  gcc/testsuite/gcc.target/powerpc/float128-1.c
! 96b4a8fffbca0c3e72f47fb998546030  gcc/testsuite/gcc.target/powerpc/float128-2.c
! 23470b0b15ae268a0d29143204e3df41  gcc/testsuite/gcc.target/powerpc/float128-3.c
! 87db0533dd0b96c3e0982f0eb5d1d216  gcc/testsuite/gcc.target/powerpc/float128-4.c
! 6768d5d711515ed5b6da41a056b388ab  gcc/testsuite/gcc.target/powerpc/float128-5.c
  9e6f60ec112f9373cd63307f592ff5a7  gcc/testsuite/gcc.target/powerpc/float128-call.c
! d2e66a0adae820881b99ec45ffe24c78  gcc/testsuite/gcc.target/powerpc/float128-cmp.c
! c30565a907667e990dd7f92247003742  gcc/testsuite/gcc.target/powerpc/float128-complex-1.c
! 82a158abdb99521a04c6e42a0331ed9e  gcc/testsuite/gcc.target/powerpc/float128-complex-2.c
! 43a46b14bfac4670a9c9060541e63585  gcc/testsuite/gcc.target/powerpc/float128-fma1.c
! bc147e90bbbfc916998340ae741969da  gcc/testsuite/gcc.target/powerpc/float128-hw.c
! 2843c5d0714b24148273bad7c4c61963  gcc/testsuite/gcc.target/powerpc/float128-hw10.c
! 5524b59ba8f2d3f2e5b0b2375f28697a  gcc/testsuite/gcc.target/powerpc/float128-hw11.c
! cda93228f00724caae51671e77f5201c  gcc/testsuite/gcc.target/powerpc/float128-hw2.c
! b6621fc633904880b4dafb2c2afeaf57  gcc/testsuite/gcc.target/powerpc/float128-hw3.c
! 2f981fa402b677b6ee43371c124f6a1f  gcc/testsuite/gcc.target/powerpc/float128-hw4.c
! 47c74dd3433e68e57c065adb16e50696  gcc/testsuite/gcc.target/powerpc/float128-hw5.c
! 827a7d2edfb10ce18a6a049611fb3f09  gcc/testsuite/gcc.target/powerpc/float128-hw6.c
! 1d3ca037ad3ac991522b2a93f32a3770  gcc/testsuite/gcc.target/powerpc/float128-hw7.c
! 4a17bf48fddf988244b637f2508c5b04  gcc/testsuite/gcc.target/powerpc/float128-hw8.c
! 5b0929251749d158f24715b510cf54c9  gcc/testsuite/gcc.target/powerpc/float128-hw9.c
! 370d2966a721c7761ea64772f17edaaa  gcc/testsuite/gcc.target/powerpc/float128-minmax.c
! e98dafbcab3d6ec8e7456f0ae5337b4f  gcc/testsuite/gcc.target/powerpc/float128-mix.c
! 8907893bc184510294410424a1d53cc1  gcc/testsuite/gcc.target/powerpc/float128-odd.c
! da635f831ebbba4611b7685951aa0948  gcc/testsuite/gcc.target/powerpc/float128-sqrt1.c
! d99679a34a74881b9084caa0ebebb88b  gcc/testsuite/gcc.target/powerpc/float128-type-1.c
! 4a1d9826c1c543473bd5b7359152fd0a  gcc/testsuite/gcc.target/powerpc/float128-type-2.c
! e0ad25ce9491285ff2b02b92e79f6591  gcc/testsuite/gcc.target/powerpc/fold-vec-abs-char-fwrapv.c
! bc538b78d826c6d929d4d4cc8a050ca6  gcc/testsuite/gcc.target/powerpc/fold-vec-abs-char.c
! fc9f8abb6fc339215e8874dc977f42a9  gcc/testsuite/gcc.target/powerpc/fold-vec-abs-floatdouble.c
! a8953f2a3db7f1bae2b0c53f01c4e2a9  gcc/testsuite/gcc.target/powerpc/fold-vec-abs-int-fwrapv.c
! ad7bb836af0a2c70524e6c63267ae6e5  gcc/testsuite/gcc.target/powerpc/fold-vec-abs-int-fwrapv.p7.c
! 83778e534af35ea86b35a28ccc4ce6f1  gcc/testsuite/gcc.target/powerpc/fold-vec-abs-int-fwrapv.p8.c
! dad1b14e0cb712a7ec6873467010c06f  gcc/testsuite/gcc.target/powerpc/fold-vec-abs-int-fwrapv.p9.c
! 6e567b796a1d87fc2b8a3b33fc98c3b1  gcc/testsuite/gcc.target/powerpc/fold-vec-abs-int.c
! ee6a2c7d959b36091f5891ad562d8601  gcc/testsuite/gcc.target/powerpc/fold-vec-abs-int.p7.c
! 2fae520243471ef15a3f2a2cde1092f1  gcc/testsuite/gcc.target/powerpc/fold-vec-abs-int.p8.c
! 37d3b7f879243bedbc7acae48f1e9c9d  gcc/testsuite/gcc.target/powerpc/fold-vec-abs-int.p9.c
! ef95602a4b11bf87f4310349372afd26  gcc/testsuite/gcc.target/powerpc/fold-vec-abs-longlong-fwrapv.c
! 307b685b8bce9fe37c63fdca51d1b31c  gcc/testsuite/gcc.target/powerpc/fold-vec-abs-longlong-fwrapv.p8.c
! 56c39c1ad7627768b4736c4a6144a465  gcc/testsuite/gcc.target/powerpc/fold-vec-abs-longlong-fwrapv.p9.c
! 6a799cdd702ac4e94b0de54b0069f61c  gcc/testsuite/gcc.target/powerpc/fold-vec-abs-longlong.c
! 05b85953d4660a26cae3a27c3299f532  gcc/testsuite/gcc.target/powerpc/fold-vec-abs-longlong.p8.c
! faadc603aa5c8324a742a47fe84d4a5d  gcc/testsuite/gcc.target/powerpc/fold-vec-abs-longlong.p9.c
! 5eb8a69ee53e82131b8626c1325e4204  gcc/testsuite/gcc.target/powerpc/fold-vec-abs-short-fwrapv.c
! 6e6d229856f86fa80e80959345b3d040  gcc/testsuite/gcc.target/powerpc/fold-vec-abs-short.c
  9fea82572de51713f7f34f38bfbc65a1  gcc/testsuite/gcc.target/powerpc/fold-vec-add-1.c
  584a512198f713c5373b5cf53c722434  gcc/testsuite/gcc.target/powerpc/fold-vec-add-2.c
  9689a568c1cb8a17bfdac146660f667d  gcc/testsuite/gcc.target/powerpc/fold-vec-add-3.c
*************** ea15cc4cee326e818d6a5ea688b38a36  gcc/te
*** 46574,46655 ****
  dcb18b06f41257634287eb447567431e  gcc/testsuite/gcc.target/powerpc/fold-vec-add-5.c
  f8af801a732c6c01b33e5d3b75fef925  gcc/testsuite/gcc.target/powerpc/fold-vec-add-6.c
  d8d9f9b4eb11f2c28c30815fcda864d9  gcc/testsuite/gcc.target/powerpc/fold-vec-add-7.c
  94e78d58402c9bc3b5b637694d3f4255  gcc/testsuite/gcc.target/powerpc/fold-vec-mule-char.c
! 4b30c8678c83e970161ae0101c56cbd0  gcc/testsuite/gcc.target/powerpc/fold-vec-mule-misc.c
  fb0a89e45ba252c43353b0f5f4c7ce06  gcc/testsuite/gcc.target/powerpc/fold-vec-mule-short.c
  375caba5d8a625665beec176aafc6220  gcc/testsuite/gcc.target/powerpc/fold-vec-mult-char.c
! 260bfb66fa2d757649eab8ec626c156f  gcc/testsuite/gcc.target/powerpc/fold-vec-mult-float.c
! 8ba6a8584e37813e445b766498f22eec  gcc/testsuite/gcc.target/powerpc/fold-vec-mult-floatdouble.c
! e1f76686e8ed9d21c3e93cb876436d94  gcc/testsuite/gcc.target/powerpc/fold-vec-mult-int.c
! dd4d551b9f9fd9d15f7feb3212e4277b  gcc/testsuite/gcc.target/powerpc/fold-vec-mult-int128-p8.c
! fc4c1496186a673fc32bd41dfed6808d  gcc/testsuite/gcc.target/powerpc/fold-vec-mult-int128-p9.c
  38fa9f7eba074a468077daeb1f8851cf  gcc/testsuite/gcc.target/powerpc/fold-vec-mult-longlong.c
  49b251a50e1bf1e51c1a49aa6fd075f0  gcc/testsuite/gcc.target/powerpc/fold-vec-mult-short.c
  ad2b4572d2db6cc1979e2268ca64ca93  gcc/testsuite/gcc.target/powerpc/fold-vec-sub-char.c
  f1b1c0fb1f99284d5a7de09a14694612  gcc/testsuite/gcc.target/powerpc/fold-vec-sub-float.c
! 7d8b1673c57789ce2d59fc73a941f951  gcc/testsuite/gcc.target/powerpc/fold-vec-sub-floatdouble.c
  3e023d589a9aaa4f547577fadcde7c55  gcc/testsuite/gcc.target/powerpc/fold-vec-sub-int.c
  bdc676ac6c69543f8601c7add4ab1322  gcc/testsuite/gcc.target/powerpc/fold-vec-sub-int128.c
  66dd7afb5c235abe1fd2cb61f87862ae  gcc/testsuite/gcc.target/powerpc/fold-vec-sub-longlong.c
  61197a95386eed25a58aa795f9a43be9  gcc/testsuite/gcc.target/powerpc/fold-vec-sub-short.c
! 437cac345cf3e7c88a4c1c8b8480547f  gcc/testsuite/gcc.target/powerpc/fusion.c
! 9f683606fa2e3e3359de65431720590d  gcc/testsuite/gcc.target/powerpc/fusion2.c
! 08d64302b930ef285d85c69849148a25  gcc/testsuite/gcc.target/powerpc/fusion3.c
! 577f43110eacaa87f1f985345a414d71  gcc/testsuite/gcc.target/powerpc/fusion4.c
  d339d3fe4c50dd4c2727de10dcf3374e  gcc/testsuite/gcc.target/powerpc/gcse-1.c
  d4c680a0477ecbe2fd90e52278838082  gcc/testsuite/gcc.target/powerpc/htm-1.c
! 9bafc879eb8a2e27febc45e02c12c5b7  gcc/testsuite/gcc.target/powerpc/htm-builtin-1.c
! 8123b7a2e999a75ab130e461fcbfea27  gcc/testsuite/gcc.target/powerpc/htm-tabort-no-r0.c
! 238571a7588bf04ee725a409029ddaf1  gcc/testsuite/gcc.target/powerpc/htm-ttest.c
! bd2f03394b7690c22ce1aab465adb75f  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
! de6c3cf42bacd45ce2c483d586831396  gcc/testsuite/gcc.target/powerpc/le-altivec-consts.c
  7893fdf7b4681a84cb4d049bea9ffc10  gcc/testsuite/gcc.target/powerpc/leaf.c
! 9cb0c47db7bfcaa36f1b7fba15ab9624  gcc/testsuite/gcc.target/powerpc/lhs-1.c
! 8c169d5043ce5ece124efa445b950656  gcc/testsuite/gcc.target/powerpc/lhs-2.c
! 48622831efaee702cb46b664e50cec00  gcc/testsuite/gcc.target/powerpc/lhs-3.c
  edd0512cd703018bda99c607e742ce2c  gcc/testsuite/gcc.target/powerpc/longcall-1.c
  094f3e09aed127827288e30d1b8d8303  gcc/testsuite/gcc.target/powerpc/longcall-2.c
! d864673ce536459f426008bf55d90e07  gcc/testsuite/gcc.target/powerpc/loop_align.c
! 51f54ac58363b5ddc516388357a853ed  gcc/testsuite/gcc.target/powerpc/lvsl-lvsr.c
  95f0a3ed470b480e62e5510f13cd33b8  gcc/testsuite/gcc.target/powerpc/macho-lo-sum.c
  a6e075ba7caf3f7b2b5becd9cf51075b  gcc/testsuite/gcc.target/powerpc/maddld.c
  9db67e8f35964a8ae2afb7840142608c  gcc/testsuite/gcc.target/powerpc/medium_offset.c
! cfbe35822c519cf32e8f41ddb02759ed  gcc/testsuite/gcc.target/powerpc/mmfpgpr.c
  995bc75d9399474fb48494a941a1e00a  gcc/testsuite/gcc.target/powerpc/mod-1.c
  68dd42cf85da89132923bd22aec1f9dc  gcc/testsuite/gcc.target/powerpc/mod-2.c
  4eaddf22e0f22b514f7215226f16b76c  gcc/testsuite/gcc.target/powerpc/mulkc3-1.c
  1f98efd43a15bde30353489bd97a085d  gcc/testsuite/gcc.target/powerpc/nan128-1.c
! e22a7266629ff9fe810fc66e708b11a6  gcc/testsuite/gcc.target/powerpc/no-r11-1.c
! 0f3e464b60c769b9067c0b49078b50e5  gcc/testsuite/gcc.target/powerpc/no-r11-2.c
! 302a3a348ae2f60a0b1366d1c9481f97  gcc/testsuite/gcc.target/powerpc/no-r11-3.c
  a3a18f288ff9a907cedfa89231e2d3e8  gcc/testsuite/gcc.target/powerpc/non-lazy-ptr-test.c
  118df2a7b3c1696e40578b25b7a6a91f  gcc/testsuite/gcc.target/powerpc/optimize-bswapdi-2.c
  d0a7757fdd02514672979d273c5dff0d  gcc/testsuite/gcc.target/powerpc/optimize-bswapdi-3.c
  6d4163ba4e3923c97e0146a17aa2cba9  gcc/testsuite/gcc.target/powerpc/optimize-bswapsi-2.c
  582d7bb7e4106b5cb9134d552025a68e  gcc/testsuite/gcc.target/powerpc/outofline_rnreg.c
! bac0e7d390854f0c869cf6ae4b52c773  gcc/testsuite/gcc.target/powerpc/p8-vec-xl-xst.c
! d07905c4fe68bcbc9f8aef973a7a039b  gcc/testsuite/gcc.target/powerpc/p8vector-builtin-1.c
! c9275a719128041f0bdbd96336d20f9c  gcc/testsuite/gcc.target/powerpc/p8vector-builtin-2.c
! 330fc5c1657a0c9c682e64e1710acc46  gcc/testsuite/gcc.target/powerpc/p8vector-builtin-3.c
! 497c5a8f053f0aae3fa4eca733f05158  gcc/testsuite/gcc.target/powerpc/p8vector-builtin-4.c
! 48adc5108e19edfebefa832c19e1c869  gcc/testsuite/gcc.target/powerpc/p8vector-builtin-5.c
! dc439adf55469edc0836eb71af10c6a5  gcc/testsuite/gcc.target/powerpc/p8vector-builtin-6.c
! 218190fe0e4f681dda260926232e56b5  gcc/testsuite/gcc.target/powerpc/p8vector-builtin-7.c
! a599949f236d06355702cfb69d3301a5  gcc/testsuite/gcc.target/powerpc/p8vector-builtin-8.c
! 3f96842d16ce43bf9d8c92dab6d38fb8  gcc/testsuite/gcc.target/powerpc/p8vector-fp.c
! 36ce3b715645c5b3d320e55d92cecb36  gcc/testsuite/gcc.target/powerpc/p8vector-int128-1.c
! dc5273f33a688389eb35c5a79b6b04b9  gcc/testsuite/gcc.target/powerpc/p8vector-int128-2.c
! fa4a7a4c3fc9401f5f7a3c80eca753f3  gcc/testsuite/gcc.target/powerpc/p8vector-ldst.c
! 11c5f55b0b21129d8c523e1f11c76274  gcc/testsuite/gcc.target/powerpc/p8vector-vbpermq.c
! 503c3328e7ddd7b5d6d4c4dcffeb9fb2  gcc/testsuite/gcc.target/powerpc/p8vector-vectorize-1.c
! 91ee8cf504a8c6e9ec584f39b7b72a43  gcc/testsuite/gcc.target/powerpc/p8vector-vectorize-2.c
! cbeb5af2460a6539d05abb92d07c955d  gcc/testsuite/gcc.target/powerpc/p8vector-vectorize-3.c
! 02d49713f718afdc495c3875c20dd57e  gcc/testsuite/gcc.target/powerpc/p8vector-vectorize-4.c
! 8c128eee1ed213711e07bd5bbf4ea8c5  gcc/testsuite/gcc.target/powerpc/p8vector-vectorize-5.c
! a740a7b2b9ec6055a7c57d74ec0759ae  gcc/testsuite/gcc.target/powerpc/p9-dimode1.c
! 2fe52c443e3bf564b88bee7dd058d038  gcc/testsuite/gcc.target/powerpc/p9-dimode2.c
  59038ac15deb652d1a75dee511c3a744  gcc/testsuite/gcc.target/powerpc/p9-extract-1.c
  e93803c553ec8a67129ce92da21aadce  gcc/testsuite/gcc.target/powerpc/p9-extract-2.c
  f6df50667c38f9aa3ed4ca7d87d59746  gcc/testsuite/gcc.target/powerpc/p9-extract-3.c
--- 49592,49827 ----
  dcb18b06f41257634287eb447567431e  gcc/testsuite/gcc.target/powerpc/fold-vec-add-5.c
  f8af801a732c6c01b33e5d3b75fef925  gcc/testsuite/gcc.target/powerpc/fold-vec-add-6.c
  d8d9f9b4eb11f2c28c30815fcda864d9  gcc/testsuite/gcc.target/powerpc/fold-vec-add-7.c
+ c40e77e4d231f0aa78af12735573c571  gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-char.h
+ 22a039fbc6fd3301586790e707aa012f  gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-char.p8.c
+ d4f51af9b2393d9c155f7d82708559a4  gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-char.p9.c
+ 26a6a752ac1166f5a31bd4969ad63706  gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-double.c
+ 5fd1cfd1d0c56047743e22b7ffad5f07  gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-float.c
+ 9afa75663b00a2cd4f2c312aaed91cb9  gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-int.h
+ 8ec2e2b10a58ee8b64bd0fedaf06cc5c  gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-int.p7.c
+ 148f383fc5e2d4cedfd6f9b468364086  gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-int.p8.c
+ 0491314f6c10dc61e801d70b3ca2e311  gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-int.p9.c
+ f67a83a9f4936ed73f685569b705dcec  gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-longlong.c
+ 1e3dcfff9a591243440725f5901f9d63  gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-short.h
+ f05592c1a86e95216f54799fc6dd87bc  gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-short.p8.c
+ c946133d77400074944ddbba8c64025c  gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-short.p9.c
+ 9c9659b19287ae416c1252e92a8a24e4  gcc/testsuite/gcc.target/powerpc/fold-vec-cntlz-char.c
+ a54bbc10a3951d2aeb7f39e8f635a7a3  gcc/testsuite/gcc.target/powerpc/fold-vec-cntlz-int.c
+ a74141cbbf5be937c226ffee13bee031  gcc/testsuite/gcc.target/powerpc/fold-vec-cntlz-longlong.c
+ 9c144374ed5b648079ac35c154cec420  gcc/testsuite/gcc.target/powerpc/fold-vec-cntlz-short.c
+ 34c909a89e104fa83e45b28020ea4537  gcc/testsuite/gcc.target/powerpc/fold-vec-div-float.c
+ bc4ffe5b102cbda3b8132211813a5f60  gcc/testsuite/gcc.target/powerpc/fold-vec-div-floatdouble.c
+ b23087b3776828b011e37164ee251121  gcc/testsuite/gcc.target/powerpc/fold-vec-div-longlong.c
+ f83dd36ea74330541196905107594a4b  gcc/testsuite/gcc.target/powerpc/fold-vec-ld-char.c
+ 789754980b9d6f48bf02b8d3e87b72ed  gcc/testsuite/gcc.target/powerpc/fold-vec-ld-double.c
+ 857fe53226a86ade248b779d3f5a20d6  gcc/testsuite/gcc.target/powerpc/fold-vec-ld-float.c
+ fad3ccaaf13d39b936807d9415e4165c  gcc/testsuite/gcc.target/powerpc/fold-vec-ld-int.c
+ 98217697644416990b57d0a01fa4840e  gcc/testsuite/gcc.target/powerpc/fold-vec-ld-longlong.c
+ 5cf0c2402b7fea385dac074b3865e37a  gcc/testsuite/gcc.target/powerpc/fold-vec-ld-misc.c
+ 11f5c822fb66163c2b4ff6823d8bba9e  gcc/testsuite/gcc.target/powerpc/fold-vec-ld-short.c
+ a6bf49f1508c4751594982b3ba9c1402  gcc/testsuite/gcc.target/powerpc/fold-vec-logical-ands-char.c
+ 65f0aacb6d00b5110c863e5cb9304409  gcc/testsuite/gcc.target/powerpc/fold-vec-logical-ands-int.c
+ 786bb59f48d5eb9fb4612efaf2950505  gcc/testsuite/gcc.target/powerpc/fold-vec-logical-ands-longlong.c
+ 47553608344dabd648258400b08bb70e  gcc/testsuite/gcc.target/powerpc/fold-vec-logical-ands-short.c
+ 1b49a1c6b2a45ef72ea3ddc088f2cff4  gcc/testsuite/gcc.target/powerpc/fold-vec-logical-eqv-char.c
+ 0abcc943e61ff167cb063cf834d9e6ba  gcc/testsuite/gcc.target/powerpc/fold-vec-logical-eqv-float.c
+ 50232c635489d28d8e135e3070fe657b  gcc/testsuite/gcc.target/powerpc/fold-vec-logical-eqv-floatdouble.c
+ 0180cb57809678d426e0d00f6096dc95  gcc/testsuite/gcc.target/powerpc/fold-vec-logical-eqv-int.c
+ 8cb96605893eab102110a3d357c0cf9c  gcc/testsuite/gcc.target/powerpc/fold-vec-logical-eqv-longlong.c
+ b33048beec786386cef47b9a43d3e4bc  gcc/testsuite/gcc.target/powerpc/fold-vec-logical-eqv-short.c
+ 443ce99f821a9feb00a98e2a591f4c29  gcc/testsuite/gcc.target/powerpc/fold-vec-logical-ors-char.c
+ 185d0e9ecf31b83eefc4f2db4c41aecc  gcc/testsuite/gcc.target/powerpc/fold-vec-logical-ors-int.c
+ 1ec5e1c92db7fd07efbd25a1edcd6bb3  gcc/testsuite/gcc.target/powerpc/fold-vec-logical-ors-longlong.c
+ 4837c956f9c14a1f2b93ce2662208ae6  gcc/testsuite/gcc.target/powerpc/fold-vec-logical-ors-short.c
+ 14496c66f68e70e4d54c6224b99a6e68  gcc/testsuite/gcc.target/powerpc/fold-vec-logical-other-char.c
+ 0fecdd9b6837283d8fa44375b8657abe  gcc/testsuite/gcc.target/powerpc/fold-vec-logical-other-int.c
+ 1c58bddd0cdb6952ec646377281cdd4e  gcc/testsuite/gcc.target/powerpc/fold-vec-logical-other-longlong.c
+ cd991630470a6090f4911b25a5e6100a  gcc/testsuite/gcc.target/powerpc/fold-vec-logical-other-short.c
+ 51130abd0d75c8b7084cf4776be63043  gcc/testsuite/gcc.target/powerpc/fold-vec-madd-double.c
+ c5a2e0e18b989631ff4f1c9e4b0f5ee2  gcc/testsuite/gcc.target/powerpc/fold-vec-madd-float.c
+ b2740aca0f3481b5d711325fed94bf4b  gcc/testsuite/gcc.target/powerpc/fold-vec-madd-short.c
+ 15b0ef78deaa74d0936ce2a256ca4880  gcc/testsuite/gcc.target/powerpc/fold-vec-mergehl-char.c
+ 7d4bf03ab9f4542ee4aa20a931f12f77  gcc/testsuite/gcc.target/powerpc/fold-vec-mergehl-double.c
+ ec5dbe0b4f0e94b5f299aa14c6e97def  gcc/testsuite/gcc.target/powerpc/fold-vec-mergehl-float.c
+ 23d5402a4c4336fcb6826687aec9a720  gcc/testsuite/gcc.target/powerpc/fold-vec-mergehl-int.c
+ 3bdbd87c7f65bcb6041613ddaa42558e  gcc/testsuite/gcc.target/powerpc/fold-vec-mergehl-longlong.c
+ 93fc7d054dd12a16b757fcd3a85e3270  gcc/testsuite/gcc.target/powerpc/fold-vec-mergehl-pixel.c
+ 986be3f5d1abfe691663e7f764fdd791  gcc/testsuite/gcc.target/powerpc/fold-vec-mergehl-short.c
+ e09dec817573f33ca52cd449bb0f683e  gcc/testsuite/gcc.target/powerpc/fold-vec-minmax-char.c
+ 46a53c71f6c3712386cbd703269f8462  gcc/testsuite/gcc.target/powerpc/fold-vec-minmax-floatdouble.c
+ d403d1dfe2edb0af634741adb9b2ea06  gcc/testsuite/gcc.target/powerpc/fold-vec-minmax-int.c
+ c88fe9ad68ba639d36aedfe926d50d8c  gcc/testsuite/gcc.target/powerpc/fold-vec-minmax-longlong.c
+ 60f510ecaf270d58efc3cccedfc515d3  gcc/testsuite/gcc.target/powerpc/fold-vec-minmax-short.c
+ d166c789e58b419540ab45a26e13bb56  gcc/testsuite/gcc.target/powerpc/fold-vec-missing-lhs.c
+ eaf0b440284bcd41bd729d89639cd59c  gcc/testsuite/gcc.target/powerpc/fold-vec-msum-char.c
+ c03c1788f719160bb3fcf0a0532ece93  gcc/testsuite/gcc.target/powerpc/fold-vec-msum-short.c
  94e78d58402c9bc3b5b637694d3f4255  gcc/testsuite/gcc.target/powerpc/fold-vec-mule-char.c
! a0cb032f567e1d790326d17ca6be1897  gcc/testsuite/gcc.target/powerpc/fold-vec-mule-misc.c
  fb0a89e45ba252c43353b0f5f4c7ce06  gcc/testsuite/gcc.target/powerpc/fold-vec-mule-short.c
  375caba5d8a625665beec176aafc6220  gcc/testsuite/gcc.target/powerpc/fold-vec-mult-char.c
! 426a600871598fb80a8b81e4b814e90a  gcc/testsuite/gcc.target/powerpc/fold-vec-mult-float.c
! d75d344612568a4f86f9acdb280128fa  gcc/testsuite/gcc.target/powerpc/fold-vec-mult-floatdouble.c
! e4f3b55cba815be73871563930d38863  gcc/testsuite/gcc.target/powerpc/fold-vec-mult-int.c
! 842be06bd7b4cecf3c18ef5ff83c670c  gcc/testsuite/gcc.target/powerpc/fold-vec-mult-int128-p8.c
! 89fa5b899c71d7fbe7b5f7f28b2cff31  gcc/testsuite/gcc.target/powerpc/fold-vec-mult-int128-p9.c
  38fa9f7eba074a468077daeb1f8851cf  gcc/testsuite/gcc.target/powerpc/fold-vec-mult-longlong.c
  49b251a50e1bf1e51c1a49aa6fd075f0  gcc/testsuite/gcc.target/powerpc/fold-vec-mult-short.c
+ 54eff226ff54a395519795c5e95db3bd  gcc/testsuite/gcc.target/powerpc/fold-vec-neg-char.c
+ 88e2dc4fedd1298e4f1535d4a723d76e  gcc/testsuite/gcc.target/powerpc/fold-vec-neg-floatdouble.c
+ ba6b3a4dc30b5d21fe87fccb7c369de1  gcc/testsuite/gcc.target/powerpc/fold-vec-neg-int.c
+ 648e24a4b15d2e5fd3e858b8769164b5  gcc/testsuite/gcc.target/powerpc/fold-vec-neg-int.p8.c
+ 32cf211c69715249fdd4838a589c7334  gcc/testsuite/gcc.target/powerpc/fold-vec-neg-int.p9.c
+ b0d4b9eba3b8d9817c3a0d14cbfbb6de  gcc/testsuite/gcc.target/powerpc/fold-vec-neg-longlong.h
+ efc001398eb7df0ce51c9f066b583d73  gcc/testsuite/gcc.target/powerpc/fold-vec-neg-longlong.p8.c
+ d0134ffb61215e28972b68c703e8ad07  gcc/testsuite/gcc.target/powerpc/fold-vec-neg-longlong.p9.c
+ 3e5c6612426041c315d39815ca87cf4c  gcc/testsuite/gcc.target/powerpc/fold-vec-neg-short.c
+ f880b97ba56da4ceecf4b4d6e42b9d08  gcc/testsuite/gcc.target/powerpc/fold-vec-pack-double.c
+ 9dc9af4f6434ea16e511ecf0c0ed2a3c  gcc/testsuite/gcc.target/powerpc/fold-vec-pack-int.c
+ e10f21270c1b37353711b71077d3364a  gcc/testsuite/gcc.target/powerpc/fold-vec-pack-longlong.c
+ 95ee03eb866a6ce8e68fe4231fc04a00  gcc/testsuite/gcc.target/powerpc/fold-vec-pack-short.c
+ 1dd4b09002ccf2ca5bbd1518929b8316  gcc/testsuite/gcc.target/powerpc/fold-vec-perm-char.c
+ 19d44bd62e72e0205c40e26b2b4df68d  gcc/testsuite/gcc.target/powerpc/fold-vec-perm-double.c
+ 1fb2206eaccfda22d994d9d6de6c6cc7  gcc/testsuite/gcc.target/powerpc/fold-vec-perm-float.c
+ 4baebb85bbe024167cc6185fb21b77ed  gcc/testsuite/gcc.target/powerpc/fold-vec-perm-int.c
+ 8692c1502be902bd1350304de037dbf1  gcc/testsuite/gcc.target/powerpc/fold-vec-perm-longlong.c
+ 649a105c39f5109a8adc866ec53b11ac  gcc/testsuite/gcc.target/powerpc/fold-vec-perm-pixel.c
+ 6036a10c55cf6b4de5fc6e75956ff8c7  gcc/testsuite/gcc.target/powerpc/fold-vec-perm-short.c
+ 395ffe68d26e6b1a9ad3614b6111358f  gcc/testsuite/gcc.target/powerpc/fold-vec-shift-char.c
+ 212d503d79804785ed9940384b4f3198  gcc/testsuite/gcc.target/powerpc/fold-vec-shift-int.c
+ 8576415c1e37ade78f6c031011153d01  gcc/testsuite/gcc.target/powerpc/fold-vec-shift-left-fwrapv.c
+ e85a59e7cd50c8ae8a0bfd35663f19ca  gcc/testsuite/gcc.target/powerpc/fold-vec-shift-left-longlong-fwrapv.c
+ 023977c4c5a7edda903015fec09f826e  gcc/testsuite/gcc.target/powerpc/fold-vec-shift-left-longlong.c
+ 0c4ce9c8666b972a318787c914166797  gcc/testsuite/gcc.target/powerpc/fold-vec-shift-left.c
+ dbc411e4c00c190a163bc911484099f8  gcc/testsuite/gcc.target/powerpc/fold-vec-shift-longlong.c
+ 11424c610452bbdaa0ca65a9fe0d19ae  gcc/testsuite/gcc.target/powerpc/fold-vec-shift-short.c
+ 56712289e441cccbb20f69c47f2b1cff  gcc/testsuite/gcc.target/powerpc/fold-vec-splat-16.c
+ 2d9452e937f198bbc849c148dc936929  gcc/testsuite/gcc.target/powerpc/fold-vec-splat-32.c
+ 17d8a102bf765b820e4022ff22287e7a  gcc/testsuite/gcc.target/powerpc/fold-vec-splat-8.c
+ 9e9e9e1f616846cd5a94a8ae5a51251c  gcc/testsuite/gcc.target/powerpc/fold-vec-splat-misc-invalid.c
+ 7e72d88480949b66c5c1e5b2c18e5d77  gcc/testsuite/gcc.target/powerpc/fold-vec-splats-char.c
+ d40875590eeae3428bfa6863383fe827  gcc/testsuite/gcc.target/powerpc/fold-vec-splats-floatdouble.c
+ 231c569ad333c507233f20889d924e94  gcc/testsuite/gcc.target/powerpc/fold-vec-splats-int.c
+ 85c72f2c8e81ba5339120cd870008431  gcc/testsuite/gcc.target/powerpc/fold-vec-splats-longlong.c
+ 307b24eba5ae45bbe82f970992e84526  gcc/testsuite/gcc.target/powerpc/fold-vec-splats-short.c
+ 075760478518e9964a6a41d871d7ecb3  gcc/testsuite/gcc.target/powerpc/fold-vec-st-char.c
+ c884f4242bd424ff4337f85e2a9563f6  gcc/testsuite/gcc.target/powerpc/fold-vec-st-double.c
+ 7d86c175041d238fd5ee1bdd4c0d826d  gcc/testsuite/gcc.target/powerpc/fold-vec-st-float.c
+ 3f0f60998263b11f8d453a7e7763e250  gcc/testsuite/gcc.target/powerpc/fold-vec-st-int.c
+ 86541d5efbd5d046fdc20c7f8cf38020  gcc/testsuite/gcc.target/powerpc/fold-vec-st-longlong.c
+ 4e0a13aac50c1c19a6931feb0ffb2d1c  gcc/testsuite/gcc.target/powerpc/fold-vec-st-pixel.c
+ b97329e4c4939614f4534c70525508b4  gcc/testsuite/gcc.target/powerpc/fold-vec-st-short.c
  ad2b4572d2db6cc1979e2268ca64ca93  gcc/testsuite/gcc.target/powerpc/fold-vec-sub-char.c
  f1b1c0fb1f99284d5a7de09a14694612  gcc/testsuite/gcc.target/powerpc/fold-vec-sub-float.c
! 6c338f4ac8c6539eeb08f4db9c02dc2a  gcc/testsuite/gcc.target/powerpc/fold-vec-sub-floatdouble.c
  3e023d589a9aaa4f547577fadcde7c55  gcc/testsuite/gcc.target/powerpc/fold-vec-sub-int.c
  bdc676ac6c69543f8601c7add4ab1322  gcc/testsuite/gcc.target/powerpc/fold-vec-sub-int128.c
  66dd7afb5c235abe1fd2cb61f87862ae  gcc/testsuite/gcc.target/powerpc/fold-vec-sub-longlong.c
  61197a95386eed25a58aa795f9a43be9  gcc/testsuite/gcc.target/powerpc/fold-vec-sub-short.c
! b681248afe4bdb1d889c6999e517fe7f  gcc/testsuite/gcc.target/powerpc/fold-vec-sums-int.c
! c1b21a66b1160ffe85501a7dc8fd63f1  gcc/testsuite/gcc.target/powerpc/fusion.c
! b92c9c6e704b4db1a022adda07a74b53  gcc/testsuite/gcc.target/powerpc/fusion2.c
! 5372183de5fb0e9a333d0fc741aaafe9  gcc/testsuite/gcc.target/powerpc/fusion3.c
! 6f39cb858ca88a2c2357e97bd6ccf3b1  gcc/testsuite/gcc.target/powerpc/fusion4.c
  d339d3fe4c50dd4c2727de10dcf3374e  gcc/testsuite/gcc.target/powerpc/gcse-1.c
+ bbca57fae9dea88267eaea26d8c43380  gcc/testsuite/gcc.target/powerpc/gnuattr1.c
+ df3448b5306ef9e06b44d7414e6a12ff  gcc/testsuite/gcc.target/powerpc/gnuattr2.c
+ b0289eef57a41f5bdbb7823fee56214b  gcc/testsuite/gcc.target/powerpc/gnuattr3.c
  d4c680a0477ecbe2fd90e52278838082  gcc/testsuite/gcc.target/powerpc/htm-1.c
! 95e15b8f67722f785f9cc961f2fc1f4c  gcc/testsuite/gcc.target/powerpc/htm-builtin-1.c
! 5aacca7a653e58dd2b7d92bf9eaf7c33  gcc/testsuite/gcc.target/powerpc/htm-tabort-no-r0.c
! 8d5e823f5228a4c59dc5e2f2aebe106f  gcc/testsuite/gcc.target/powerpc/htm-ttest.c
! 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
! ffc6830a7ab780cfd15ff8582d96a3f7  gcc/testsuite/gcc.target/powerpc/le-altivec-consts.c
  7893fdf7b4681a84cb4d049bea9ffc10  gcc/testsuite/gcc.target/powerpc/leaf.c
! 03c15f4e49778f86ddcb37d4f43ce15f  gcc/testsuite/gcc.target/powerpc/lhs-1.c
! e9aec59ec932877d7f9eff66723d32df  gcc/testsuite/gcc.target/powerpc/lhs-2.c
! 150e8feead251aaa849097e4fd3c9457  gcc/testsuite/gcc.target/powerpc/lhs-3.c
  edd0512cd703018bda99c607e742ce2c  gcc/testsuite/gcc.target/powerpc/longcall-1.c
  094f3e09aed127827288e30d1b8d8303  gcc/testsuite/gcc.target/powerpc/longcall-2.c
! bd578425da941a4296432b596ae55ed6  gcc/testsuite/gcc.target/powerpc/loop_align.c
! e3e42cd5092a59ffd4a63afcc6c1efe5  gcc/testsuite/gcc.target/powerpc/lvsl-lvsr.c
! c97fc8a68062ce7030d1c0bffaf20318  gcc/testsuite/gcc.target/powerpc/m128-check.h
  95f0a3ed470b480e62e5510f13cd33b8  gcc/testsuite/gcc.target/powerpc/macho-lo-sum.c
  a6e075ba7caf3f7b2b5becd9cf51075b  gcc/testsuite/gcc.target/powerpc/maddld.c
  9db67e8f35964a8ae2afb7840142608c  gcc/testsuite/gcc.target/powerpc/medium_offset.c
! 65d2259da82afb4fcd947cca2956d627  gcc/testsuite/gcc.target/powerpc/mmfpgpr.c
! 00a671e45f86f2030846f2fde040882e  gcc/testsuite/gcc.target/powerpc/mmx-check.h
! 1caa77d8768bb51749bd3068fee4b70b  gcc/testsuite/gcc.target/powerpc/mmx-packs.c
! 54b0648d96df46e0ac27ce1de6f52958  gcc/testsuite/gcc.target/powerpc/mmx-packssdw-1.c
! 0259ccedd398b374ca40498108b6f5b4  gcc/testsuite/gcc.target/powerpc/mmx-packsswb-1.c
! 478256cfb5827e6d2ad25d52776f15ca  gcc/testsuite/gcc.target/powerpc/mmx-packuswb-1.c
! 279c159429d2ebd815bc18cf71c80b05  gcc/testsuite/gcc.target/powerpc/mmx-paddb-1.c
! ec262c7c407b4e353710931b7a0e00e2  gcc/testsuite/gcc.target/powerpc/mmx-paddd-1.c
! dbc8e862a0e6da7a65460acd8182b510  gcc/testsuite/gcc.target/powerpc/mmx-paddsb-1.c
! c03e7a0b4c09127cb11c40e09f39e8d1  gcc/testsuite/gcc.target/powerpc/mmx-paddsw-1.c
! 981228f41566a80f71288647b3b646a5  gcc/testsuite/gcc.target/powerpc/mmx-paddusb-1.c
! 9047acc2e736e8a7668bfccf63830370  gcc/testsuite/gcc.target/powerpc/mmx-paddusw-1.c
! c34d00c0d5ac321328bf43fa3a66be40  gcc/testsuite/gcc.target/powerpc/mmx-paddw-1.c
! e1f52df93ba1c8049912369fa11ac88b  gcc/testsuite/gcc.target/powerpc/mmx-pcmpeqb-1.c
! 01b4f5ad593d68d07567113a4f5e7f61  gcc/testsuite/gcc.target/powerpc/mmx-pcmpeqd-1.c
! 07920448d4d200b6357bd430d8e48fae  gcc/testsuite/gcc.target/powerpc/mmx-pcmpeqw-1.c
! 6ac75bb04476be0e222ebce7b877be45  gcc/testsuite/gcc.target/powerpc/mmx-pcmpgtb-1.c
! 821a8276914054293817625cb7f72a3b  gcc/testsuite/gcc.target/powerpc/mmx-pcmpgtd-1.c
! 2c40f175ec9ce32a329772f7035b4251  gcc/testsuite/gcc.target/powerpc/mmx-pcmpgtw-1.c
! d268d0843682f50286e15f8258747636  gcc/testsuite/gcc.target/powerpc/mmx-pmaddwd-1.c
! 3c7f083d09be834bc19578595fc29a0c  gcc/testsuite/gcc.target/powerpc/mmx-pmulhw-1.c
! 442efaa3b86427dd619d929a44c01598  gcc/testsuite/gcc.target/powerpc/mmx-pmullw-1.c
! f760e6637f59aa79d23ade1eb6ff0d08  gcc/testsuite/gcc.target/powerpc/mmx-pslld-1.c
! aecbb30f163d5f651b0975a0fa8c5e71  gcc/testsuite/gcc.target/powerpc/mmx-psllw-1.c
! 330a584dd401816a509ce20ba4114a70  gcc/testsuite/gcc.target/powerpc/mmx-psrad-1.c
! 612cb72bcff5fe5a715cc6bb4cea0e57  gcc/testsuite/gcc.target/powerpc/mmx-psraw-1.c
! fb85288628e320243d8a8147e9bac540  gcc/testsuite/gcc.target/powerpc/mmx-psrld-1.c
! 86c54000cf078efa4c7173547f0af1d8  gcc/testsuite/gcc.target/powerpc/mmx-psrlw-1.c
! 55bb37adcf290bc3905eb1d50905dbde  gcc/testsuite/gcc.target/powerpc/mmx-psubb-2.c
! 172eb4d242b69715a127f3ff03a7a428  gcc/testsuite/gcc.target/powerpc/mmx-psubd-2.c
! d57ca77ac7b576914b615bb8e32d703a  gcc/testsuite/gcc.target/powerpc/mmx-psubsb-1.c
! d6a742c11f93c2bcf3b615a4f04963c9  gcc/testsuite/gcc.target/powerpc/mmx-psubsw-1.c
! f8dcc8076832e6da6725b6a50e130dad  gcc/testsuite/gcc.target/powerpc/mmx-psubusb-1.c
! be478634d69259ab7b5dfdd943faed04  gcc/testsuite/gcc.target/powerpc/mmx-psubusw-1.c
! 6cb29399cf4002e27d49c29789b2a785  gcc/testsuite/gcc.target/powerpc/mmx-psubw-2.c
! 1f62421cba8b23c2fc748580bb50cedf  gcc/testsuite/gcc.target/powerpc/mmx-punpckhbw-1.c
! efc280156abf766a838aa3c8a0fb2706  gcc/testsuite/gcc.target/powerpc/mmx-punpckhdq-1.c
! 002d83c42eeed16ffcd5c9ea70b44daf  gcc/testsuite/gcc.target/powerpc/mmx-punpckhwd-1.c
! 5d5b52d0d87eecce4b34571aedd733d2  gcc/testsuite/gcc.target/powerpc/mmx-punpcklbw-1.c
! eec2a447000a4b9c32ee378ccae9b838  gcc/testsuite/gcc.target/powerpc/mmx-punpckldq-1.c
! e4cd49609a9602497a9897dcae86fed2  gcc/testsuite/gcc.target/powerpc/mmx-punpcklwd-1.c
  995bc75d9399474fb48494a941a1e00a  gcc/testsuite/gcc.target/powerpc/mod-1.c
  68dd42cf85da89132923bd22aec1f9dc  gcc/testsuite/gcc.target/powerpc/mod-2.c
  4eaddf22e0f22b514f7215226f16b76c  gcc/testsuite/gcc.target/powerpc/mulkc3-1.c
+ 1c0f979bd79480b526ba2cc173bbcf5f  gcc/testsuite/gcc.target/powerpc/mulkc3-2.c
+ a68a7d87779bc9e5e7382101f880ccab  gcc/testsuite/gcc.target/powerpc/mulkc3-3.c
  1f98efd43a15bde30353489bd97a085d  gcc/testsuite/gcc.target/powerpc/nan128-1.c
! 7ae49a33b45e51770e88e4a1e02a8d3e  gcc/testsuite/gcc.target/powerpc/no-r11-1.c
! 0831e4d64f9c944a22351c0a3a55d827  gcc/testsuite/gcc.target/powerpc/no-r11-2.c
! dd4f340682017146e72e169792e742bb  gcc/testsuite/gcc.target/powerpc/no-r11-3.c
  a3a18f288ff9a907cedfa89231e2d3e8  gcc/testsuite/gcc.target/powerpc/non-lazy-ptr-test.c
  118df2a7b3c1696e40578b25b7a6a91f  gcc/testsuite/gcc.target/powerpc/optimize-bswapdi-2.c
  d0a7757fdd02514672979d273c5dff0d  gcc/testsuite/gcc.target/powerpc/optimize-bswapdi-3.c
  6d4163ba4e3923c97e0146a17aa2cba9  gcc/testsuite/gcc.target/powerpc/optimize-bswapsi-2.c
  582d7bb7e4106b5cb9134d552025a68e  gcc/testsuite/gcc.target/powerpc/outofline_rnreg.c
! 3cda30962feb6afa5e1a0d6472afc4f9  gcc/testsuite/gcc.target/powerpc/p8-vec-xl-xst.c
! 52993f649b192fed585edf3ec84f8aa5  gcc/testsuite/gcc.target/powerpc/p8vector-builtin-1.c
! 751c3dcd71e08a8916f16aeec4094d5c  gcc/testsuite/gcc.target/powerpc/p8vector-builtin-2.c
! 3fdddc59cad03dda4b4ccb583502c813  gcc/testsuite/gcc.target/powerpc/p8vector-builtin-3.c
! 38f31ea40cfab47af875a416d92dd6e0  gcc/testsuite/gcc.target/powerpc/p8vector-builtin-4.c
! b16731a312b150b50078c63e23f185e0  gcc/testsuite/gcc.target/powerpc/p8vector-builtin-5.c
! 0487de0e094e740871b17ac34ed53515  gcc/testsuite/gcc.target/powerpc/p8vector-builtin-6.c
! ed2b9958b1e36bd275fab42d7f19887e  gcc/testsuite/gcc.target/powerpc/p8vector-builtin-7.c
! 3bf91ab0b62b47cdbeca264b9c3fbdf5  gcc/testsuite/gcc.target/powerpc/p8vector-builtin-8.c
! 7aa0ae566fc928b79d07a8f3b4c0701c  gcc/testsuite/gcc.target/powerpc/p8vector-fp.c
! 906fed1efa652f72472b5372ac0bc63d  gcc/testsuite/gcc.target/powerpc/p8vector-int128-1.c
! 848a3b01adf561cbcd76a9f7dbabdafc  gcc/testsuite/gcc.target/powerpc/p8vector-int128-2.c
! bb864dfaab5a563810f0af7f438db53a  gcc/testsuite/gcc.target/powerpc/p8vector-ldst.c
! 364555e5180fa895c334ffe3895849ef  gcc/testsuite/gcc.target/powerpc/p8vector-vbpermq.c
! 5ca91694c620faede9d0b20964f4b432  gcc/testsuite/gcc.target/powerpc/p8vector-vectorize-1.c
! cbd59665005cb8bf737240c6c7ee09c7  gcc/testsuite/gcc.target/powerpc/p8vector-vectorize-2.c
! 461305fe98302687b87e6deba0b3831d  gcc/testsuite/gcc.target/powerpc/p8vector-vectorize-3.c
! 8f046eb42cae637969afd037c41b620b  gcc/testsuite/gcc.target/powerpc/p8vector-vectorize-4.c
! ab2edd6636d1912df41c1cd24c8711dc  gcc/testsuite/gcc.target/powerpc/p8vector-vectorize-5.c
! 021a194090a2d3866e1bb811d792cdd5  gcc/testsuite/gcc.target/powerpc/p9-dimode1.c
! 20517621627ea0d3f586b61bea658608  gcc/testsuite/gcc.target/powerpc/p9-dimode2.c
  59038ac15deb652d1a75dee511c3a744  gcc/testsuite/gcc.target/powerpc/p9-extract-1.c
  e93803c553ec8a67129ce92da21aadce  gcc/testsuite/gcc.target/powerpc/p9-extract-2.c
  f6df50667c38f9aa3ed4ca7d87d59746  gcc/testsuite/gcc.target/powerpc/p9-extract-3.c
*************** ae816fd528711a489a96d36403ab4796  gcc/te
*** 46669,46684 ****
  76e637efba841cdc036746e8f48a0914  gcc/testsuite/gcc.target/powerpc/p9-splat-4.c
  281d50a4ea6225f5242fc0a4af18c5c1  gcc/testsuite/gcc.target/powerpc/p9-splat-5.c
  f177eaa3d0b3133708761261ab01b9d1  gcc/testsuite/gcc.target/powerpc/p9-vbpermd.c
- 78aaadd4e796b8eb8bdc1e0229bc80cf  gcc/testsuite/gcc.target/powerpc/p9-vinsert4b-1.c
- 55f219c8a90b20a65f1b4197c7916de3  gcc/testsuite/gcc.target/powerpc/p9-vinsert4b-2.c
  1001e87b8d8b5b7135c100a89e4def45  gcc/testsuite/gcc.target/powerpc/p9-vneg.c
! 69dc6d7d44a9c96a4258141385a846d7  gcc/testsuite/gcc.target/powerpc/p9-vparity.c
  7d6c7bf2bdc6cb2de461278049408eb4  gcc/testsuite/gcc.target/powerpc/p9-vpermr.c
! bae2d71f8f96b74983fe65e2f3de7061  gcc/testsuite/gcc.target/powerpc/p9-xxbr-1.c
! d7554fa822715606a24a2d525b2e36bc  gcc/testsuite/gcc.target/powerpc/p9-xxbr-2.c
! de89784ed878c699a73dbedef03c25ef  gcc/testsuite/gcc.target/powerpc/pack01.c
! c9ce448310ccdac5da6fa5b69ec461fa  gcc/testsuite/gcc.target/powerpc/pack02.c
! fa72c1f9512bac14ea57ebf20c94c152  gcc/testsuite/gcc.target/powerpc/pack03.c
  d0bd3df7fee3d73a0acc876ce20691e2  gcc/testsuite/gcc.target/powerpc/paired-1.c
  0d7e5847184bc01c42a40dda9b07bda3  gcc/testsuite/gcc.target/powerpc/paired-10.c
  2bdeefd1d55b55e6e9b8ace714c9b100  gcc/testsuite/gcc.target/powerpc/paired-2.c
--- 49841,49855 ----
  76e637efba841cdc036746e8f48a0914  gcc/testsuite/gcc.target/powerpc/p9-splat-4.c
  281d50a4ea6225f5242fc0a4af18c5c1  gcc/testsuite/gcc.target/powerpc/p9-splat-5.c
  f177eaa3d0b3133708761261ab01b9d1  gcc/testsuite/gcc.target/powerpc/p9-vbpermd.c
  1001e87b8d8b5b7135c100a89e4def45  gcc/testsuite/gcc.target/powerpc/p9-vneg.c
! 6866beeb34996bd8eb9f3b1018170755  gcc/testsuite/gcc.target/powerpc/p9-vparity.c
  7d6c7bf2bdc6cb2de461278049408eb4  gcc/testsuite/gcc.target/powerpc/p9-vpermr.c
! 9ed357de2231ab9dda1f5ee0817ad2f0  gcc/testsuite/gcc.target/powerpc/p9-xxbr-1.c
! 3c78f4a622ea40518e89e0e894d9a44a  gcc/testsuite/gcc.target/powerpc/p9-xxbr-2.c
! 377ee3d5295c5a6f84022ece7d4be993  gcc/testsuite/gcc.target/powerpc/p9-xxbr-3.c
! fda3aa1dc29993870f4e47e1e8bea361  gcc/testsuite/gcc.target/powerpc/pack01.c
! 7ebae9f9f5c7381014d468fa566004a2  gcc/testsuite/gcc.target/powerpc/pack02.c
! 1f160a2dd7d4aca4c5e59f63cbdf9950  gcc/testsuite/gcc.target/powerpc/pack03.c
  d0bd3df7fee3d73a0acc876ce20691e2  gcc/testsuite/gcc.target/powerpc/paired-1.c
  0d7e5847184bc01c42a40dda9b07bda3  gcc/testsuite/gcc.target/powerpc/paired-10.c
  2bdeefd1d55b55e6e9b8ace714c9b100  gcc/testsuite/gcc.target/powerpc/paired-2.c
*************** a49cebe820198e98df6e4c433d7270fd  gcc/te
*** 46689,46727 ****
  42f0dc64ed6bcc9e20fed0286081f606  gcc/testsuite/gcc.target/powerpc/paired-7.c
  eb724f0712c2e09bd99aa65ce0b1419c  gcc/testsuite/gcc.target/powerpc/paired-8.c
  b1d50d914f0b51e97312384685214bc6  gcc/testsuite/gcc.target/powerpc/paired-9.c
! 09016d78a474dc0e28c275d368076067  gcc/testsuite/gcc.target/powerpc/parity-1.c
! 7c740c0dccc10d31529aba76d3ada598  gcc/testsuite/gcc.target/powerpc/popcount-1.c
! 31f55e37e76bf3a1b244a7312ccb2f03  gcc/testsuite/gcc.target/powerpc/popcount-2.c
! e083f85f0ccca3de71928c437e7422e5  gcc/testsuite/gcc.target/powerpc/popcount-3.c
! 498ed7913d64f2c178dba790b2d5e02f  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
  23301205b7d115cda31a5cdf4db0de11  gcc/testsuite/gcc.target/powerpc/ppc-eabi.c
  0701f9c78ba972a8b3eafece3a3366ae  gcc/testsuite/gcc.target/powerpc/ppc-eq0-1.c
! 6e8eb7475a998513b4fb965c4f4d49fa  gcc/testsuite/gcc.target/powerpc/ppc-fma-1.c
! 32f678d968f6ca4d692030920a86fc4f  gcc/testsuite/gcc.target/powerpc/ppc-fma-2.c
! f0e0420e02de20b6842edd31ee31ee10  gcc/testsuite/gcc.target/powerpc/ppc-fma-3.c
! 4580b342d7faa95dd80175a0092f1763  gcc/testsuite/gcc.target/powerpc/ppc-fma-4.c
! 69e6b3f7b36d842e16020d048c63e237  gcc/testsuite/gcc.target/powerpc/ppc-fma-5.c
! 8566515a74d50afed71a8dc835337dba  gcc/testsuite/gcc.target/powerpc/ppc-fma-6.c
! 0ec5d4aa8d30413108bdf74e1eeb25a8  gcc/testsuite/gcc.target/powerpc/ppc-fma-7.c
  384725f498b861af6f8bed0530eeac73  gcc/testsuite/gcc.target/powerpc/ppc-fmadd-1.c
  b49bfc8892e32ccd4715b924f41106d6  gcc/testsuite/gcc.target/powerpc/ppc-fmadd-2.c
  90d042fffee10d77e01ab7cf9fcbb7c1  gcc/testsuite/gcc.target/powerpc/ppc-fmadd-3.c
! c9f9c3ba98632df0c5de87ebce48fce4  gcc/testsuite/gcc.target/powerpc/ppc-fortran/ppc-fortran.exp
! 637bdb830638aea14574ce31ff970381  gcc/testsuite/gcc.target/powerpc/ppc-fortran/pr80108-1.f90
! c5fa5fe79895d06f5f65590d9082f47a  gcc/testsuite/gcc.target/powerpc/ppc-fpconv-1.c
! 399cb515c37318fe2c759d53e77324fb  gcc/testsuite/gcc.target/powerpc/ppc-fpconv-10.c
! d87dbe8b8f10775efc87beeb4b82097c  gcc/testsuite/gcc.target/powerpc/ppc-fpconv-11.c
! 094d62c94d6bf35873baa7cb1dbd0f57  gcc/testsuite/gcc.target/powerpc/ppc-fpconv-2.c
! 3c5c79b24db9981e67f2aa3ab7817ddc  gcc/testsuite/gcc.target/powerpc/ppc-fpconv-3.c
! 6b6434725b08f7ee98089e42a2a59cfe  gcc/testsuite/gcc.target/powerpc/ppc-fpconv-4.c
! 102d6b87983cf5f95d2c4b1667f624c6  gcc/testsuite/gcc.target/powerpc/ppc-fpconv-5.c
! bc09145b8c1be2a06c69cef430120937  gcc/testsuite/gcc.target/powerpc/ppc-fpconv-6.c
! 5dc4d9c8f55976ac4c412b2a9da55108  gcc/testsuite/gcc.target/powerpc/ppc-fpconv-7.c
! d7ba515d7e9cbc0aabcc23d890d08424  gcc/testsuite/gcc.target/powerpc/ppc-fpconv-8.c
! a2a6a1463f6ba3e1efdd7291aa72cab4  gcc/testsuite/gcc.target/powerpc/ppc-fpconv-9.c
  2f98c9de092b752f4149c60367c90247  gcc/testsuite/gcc.target/powerpc/ppc-fsel-1.c
  28c82cf854d14b9e7b445bab023fb08c  gcc/testsuite/gcc.target/powerpc/ppc-fsel-2.c
  4607e864b19fd011a4f1d730e041efc9  gcc/testsuite/gcc.target/powerpc/ppc-fsel-3.c
--- 49860,49898 ----
  42f0dc64ed6bcc9e20fed0286081f606  gcc/testsuite/gcc.target/powerpc/paired-7.c
  eb724f0712c2e09bd99aa65ce0b1419c  gcc/testsuite/gcc.target/powerpc/paired-8.c
  b1d50d914f0b51e97312384685214bc6  gcc/testsuite/gcc.target/powerpc/paired-9.c
! 79252ed3cd56f2fce170c83916aec3c8  gcc/testsuite/gcc.target/powerpc/parity-1.c
! 86888089e54a1154f3215bd7899ca676  gcc/testsuite/gcc.target/powerpc/popcount-1.c
! bb8c09315ec1a708be9a9d93975bc63e  gcc/testsuite/gcc.target/powerpc/popcount-2.c
! d06a1d11fed1c0e1e683cc1dd11c02c9  gcc/testsuite/gcc.target/powerpc/popcount-3.c
! 5d0f4b26d535e9274908be74914e6208  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
  23301205b7d115cda31a5cdf4db0de11  gcc/testsuite/gcc.target/powerpc/ppc-eabi.c
  0701f9c78ba972a8b3eafece3a3366ae  gcc/testsuite/gcc.target/powerpc/ppc-eq0-1.c
! 781d711369c0b8265a91adaf84cd02b4  gcc/testsuite/gcc.target/powerpc/ppc-fma-1.c
! 1631e1504d6f0d6c9777c8fd75fc1d4d  gcc/testsuite/gcc.target/powerpc/ppc-fma-2.c
! 4da2a12cf10b88542bc8d183a5997ebb  gcc/testsuite/gcc.target/powerpc/ppc-fma-3.c
! 1cd99f463002f74911421c4e4562ba4e  gcc/testsuite/gcc.target/powerpc/ppc-fma-4.c
! 5964c23b43d9c38af24495d2b90d51c0  gcc/testsuite/gcc.target/powerpc/ppc-fma-5.c
! c8053e938fff11dc8300c7eb9d2ecbe8  gcc/testsuite/gcc.target/powerpc/ppc-fma-6.c
! acdb85d1e6351c6dda55142bbb79b8be  gcc/testsuite/gcc.target/powerpc/ppc-fma-7.c
  384725f498b861af6f8bed0530eeac73  gcc/testsuite/gcc.target/powerpc/ppc-fmadd-1.c
  b49bfc8892e32ccd4715b924f41106d6  gcc/testsuite/gcc.target/powerpc/ppc-fmadd-2.c
  90d042fffee10d77e01ab7cf9fcbb7c1  gcc/testsuite/gcc.target/powerpc/ppc-fmadd-3.c
! 6225aa701ea238d6bc3b5ad76ce51526  gcc/testsuite/gcc.target/powerpc/ppc-fortran/ppc-fortran.exp
! cd849caf869859f7f2e720c8b398cd3a  gcc/testsuite/gcc.target/powerpc/ppc-fortran/pr80108-1.f90
! 1a62bdfc178bf86d15b16a17a9630d50  gcc/testsuite/gcc.target/powerpc/ppc-fpconv-1.c
! 99555fa75b23b831a7288cf5b7c9e9da  gcc/testsuite/gcc.target/powerpc/ppc-fpconv-10.c
! 485727041a0c27cd801477a65a1f8b3f  gcc/testsuite/gcc.target/powerpc/ppc-fpconv-11.c
! 60d47d87239adb4ba55d151608050d9a  gcc/testsuite/gcc.target/powerpc/ppc-fpconv-2.c
! 14f27033968a84013927651409a89585  gcc/testsuite/gcc.target/powerpc/ppc-fpconv-3.c
! ef1bf9ee4b5fd8d047e123d8a4d1c1d5  gcc/testsuite/gcc.target/powerpc/ppc-fpconv-4.c
! 199afcefd964228ac0ca462196ade5a0  gcc/testsuite/gcc.target/powerpc/ppc-fpconv-5.c
! 2a3465ed8780aeac417f0d6a21289dc6  gcc/testsuite/gcc.target/powerpc/ppc-fpconv-6.c
! 2a2c4b50df63ce49f988b5e94956b671  gcc/testsuite/gcc.target/powerpc/ppc-fpconv-7.c
! 12fb87c476241e296618d53f90adb15d  gcc/testsuite/gcc.target/powerpc/ppc-fpconv-8.c
! 59a8034c595a9ec51384e7bf72b136c4  gcc/testsuite/gcc.target/powerpc/ppc-fpconv-9.c
  2f98c9de092b752f4149c60367c90247  gcc/testsuite/gcc.target/powerpc/ppc-fsel-1.c
  28c82cf854d14b9e7b445bab023fb08c  gcc/testsuite/gcc.target/powerpc/ppc-fsel-2.c
  4607e864b19fd011a4f1d730e041efc9  gcc/testsuite/gcc.target/powerpc/ppc-fsel-3.c
*************** a4dee1048349abab9fe2b7deb322f7e9  gcc/te
*** 46732,46764 ****
  7809b5c86da3b3f2ffe2c51fd4d229ba  gcc/testsuite/gcc.target/powerpc/ppc-ne0-1.c
  8296a3d02aa27f1b6b67df7b3cf793d6  gcc/testsuite/gcc.target/powerpc/ppc-negeq0-1.c
  6b09e7266618e801c185fac6b9279725  gcc/testsuite/gcc.target/powerpc/ppc-paired.c
! af2944b9bcefbeb4a6dffdabb0ff76f8  gcc/testsuite/gcc.target/powerpc/ppc-pow.c
! 84addc569236ca3f8a046ab50be85767  gcc/testsuite/gcc.target/powerpc/ppc-round.c
! e96063eb30ef5f87d6277fc1883c2930  gcc/testsuite/gcc.target/powerpc/ppc-round2.c
! 1bccbbd277ea4368b0f659b0c87988fb  gcc/testsuite/gcc.target/powerpc/ppc-round3.c
  01aaaef3cb8cee0f105c2e9489dc423d  gcc/testsuite/gcc.target/powerpc/ppc-sdata-1.c
! 860fdd35425c1e9e3cd0af60d01d2ed4  gcc/testsuite/gcc.target/powerpc/ppc-sdata-2.c
! f330b1449ff081f9288491fb5ecf814c  gcc/testsuite/gcc.target/powerpc/ppc-spe.c
  87e474f57be9adad2f6d0a89328b39c3  gcc/testsuite/gcc.target/powerpc/ppc-spe64-1.c
  031e121f3288d78b35a626363fbb6306  gcc/testsuite/gcc.target/powerpc/ppc-stackalign-1.c
  347db92de42c68a0e17367b289aaa20b  gcc/testsuite/gcc.target/powerpc/ppc-stfiwx.c
! 81c1df8da4df683e063ca0743cfcfc1f  gcc/testsuite/gcc.target/powerpc/ppc-switch-1.c
! 80ddd196c8c4b45fce295d81353874bb  gcc/testsuite/gcc.target/powerpc/ppc-switch-2.c
! 159724b659008845cdd0b8dbf83a3335  gcc/testsuite/gcc.target/powerpc/ppc-target-1.c
! 782c349ebd6ff4d738d1fb4579b26252  gcc/testsuite/gcc.target/powerpc/ppc-target-2.c
! 2cc80091e7498e3f8082862cd642483e  gcc/testsuite/gcc.target/powerpc/ppc-target-3.c
! d66540f92b2ce1f6ac99b4459ce082b3  gcc/testsuite/gcc.target/powerpc/ppc-target-4.c
  a6e21370123ecb1a98797a75ca96e737  gcc/testsuite/gcc.target/powerpc/ppc-vector-memcpy.c
  9a31c5d7df209a371cd6dff7bc09dff7  gcc/testsuite/gcc.target/powerpc/ppc-vector-memset.c
  439d519fb615bf119d2ce3143879ac5a  gcc/testsuite/gcc.target/powerpc/ppc32-abi-dfp-1.c
! f8a3fe2d151f391d167233e3fd81c84c  gcc/testsuite/gcc.target/powerpc/ppc64-abi-1.c
  08705379dd46fd9978f9baba8397ca88  gcc/testsuite/gcc.target/powerpc/ppc64-abi-2.c
  561207b57149870f661ea7f3995e39a1  gcc/testsuite/gcc.target/powerpc/ppc64-abi-3.c
! 4e4f315f2cc11584508b792dc13300b7  gcc/testsuite/gcc.target/powerpc/ppc64-abi-dfp-1.c
  be95a176154f3bdc354191d73d976ad6  gcc/testsuite/gcc.target/powerpc/ppc64-abi-warn-1.c
  b95306db26317001da627a5976237502  gcc/testsuite/gcc.target/powerpc/ppc64-abi-warn-2.c
  e644ef57e549ba6b46da5cb2d302203f  gcc/testsuite/gcc.target/powerpc/ppc64-abi-warn-3.c
! e167b81f706a8ed097d5c823ebf01368  gcc/testsuite/gcc.target/powerpc/ppc64-double-1.c
  322275a6e18c464401bb8e7d050b7539  gcc/testsuite/gcc.target/powerpc/ppc64-toc.c
  4d5c9288a4692a6dbd0d98052656b97e  gcc/testsuite/gcc.target/powerpc/ppu-intrinsics.c
  c2f6d6cf82ef4931619d09e10a0a72aa  gcc/testsuite/gcc.target/powerpc/pr16155.c
--- 49903,49935 ----
  7809b5c86da3b3f2ffe2c51fd4d229ba  gcc/testsuite/gcc.target/powerpc/ppc-ne0-1.c
  8296a3d02aa27f1b6b67df7b3cf793d6  gcc/testsuite/gcc.target/powerpc/ppc-negeq0-1.c
  6b09e7266618e801c185fac6b9279725  gcc/testsuite/gcc.target/powerpc/ppc-paired.c
! aec76cb59625e3d9af761764ba561b3c  gcc/testsuite/gcc.target/powerpc/ppc-pow.c
! dfca6e53244e09472aa0b7bfe1e0d9ec  gcc/testsuite/gcc.target/powerpc/ppc-round.c
! b790788d33e0500483fadf5b43978437  gcc/testsuite/gcc.target/powerpc/ppc-round2.c
! 14800b50edd7a32fe28246db7bbe0c83  gcc/testsuite/gcc.target/powerpc/ppc-round3.c
  01aaaef3cb8cee0f105c2e9489dc423d  gcc/testsuite/gcc.target/powerpc/ppc-sdata-1.c
! 9dc1fa13d3f31bcd3a134627edb4458a  gcc/testsuite/gcc.target/powerpc/ppc-sdata-2.c
! 46a195fe50e7ece0ee2f1f1c5f5bfb6a  gcc/testsuite/gcc.target/powerpc/ppc-spe.c
  87e474f57be9adad2f6d0a89328b39c3  gcc/testsuite/gcc.target/powerpc/ppc-spe64-1.c
  031e121f3288d78b35a626363fbb6306  gcc/testsuite/gcc.target/powerpc/ppc-stackalign-1.c
  347db92de42c68a0e17367b289aaa20b  gcc/testsuite/gcc.target/powerpc/ppc-stfiwx.c
! 174cc8f1f01dfb1fd40568892781bc3d  gcc/testsuite/gcc.target/powerpc/ppc-switch-1.c
! 769e2a32c5558d6152a32a7696afebc7  gcc/testsuite/gcc.target/powerpc/ppc-switch-2.c
! a5d87e8a04147423665aa9dee626b89e  gcc/testsuite/gcc.target/powerpc/ppc-target-1.c
! 95be5ba310fd76be8c60cd4aedf32f75  gcc/testsuite/gcc.target/powerpc/ppc-target-2.c
! 97d35f4738e9f07ad4110b6ea8f37390  gcc/testsuite/gcc.target/powerpc/ppc-target-3.c
! e560fc2e7451e37eca3c94a82e4a84fb  gcc/testsuite/gcc.target/powerpc/ppc-target-4.c
  a6e21370123ecb1a98797a75ca96e737  gcc/testsuite/gcc.target/powerpc/ppc-vector-memcpy.c
  9a31c5d7df209a371cd6dff7bc09dff7  gcc/testsuite/gcc.target/powerpc/ppc-vector-memset.c
  439d519fb615bf119d2ce3143879ac5a  gcc/testsuite/gcc.target/powerpc/ppc32-abi-dfp-1.c
! 60c6984eb3dc4b759795f95a63d7aef2  gcc/testsuite/gcc.target/powerpc/ppc64-abi-1.c
  08705379dd46fd9978f9baba8397ca88  gcc/testsuite/gcc.target/powerpc/ppc64-abi-2.c
  561207b57149870f661ea7f3995e39a1  gcc/testsuite/gcc.target/powerpc/ppc64-abi-3.c
! b6bd72515ca594257e5ab11b307231e8  gcc/testsuite/gcc.target/powerpc/ppc64-abi-dfp-1.c
  be95a176154f3bdc354191d73d976ad6  gcc/testsuite/gcc.target/powerpc/ppc64-abi-warn-1.c
  b95306db26317001da627a5976237502  gcc/testsuite/gcc.target/powerpc/ppc64-abi-warn-2.c
  e644ef57e549ba6b46da5cb2d302203f  gcc/testsuite/gcc.target/powerpc/ppc64-abi-warn-3.c
! 8d1bb8d348bbbd1468a4518fcfc930da  gcc/testsuite/gcc.target/powerpc/ppc64-double-1.c
  322275a6e18c464401bb8e7d050b7539  gcc/testsuite/gcc.target/powerpc/ppc64-toc.c
  4d5c9288a4692a6dbd0d98052656b97e  gcc/testsuite/gcc.target/powerpc/ppu-intrinsics.c
  c2f6d6cf82ef4931619d09e10a0a72aa  gcc/testsuite/gcc.target/powerpc/pr16155.c
*************** e183225a8b1a53401796864308b33359  gcc/te
*** 46777,46784 ****
  10a4dfe7b6545ed5cd448dc9a60c7228  gcc/testsuite/gcc.target/powerpc/pr39457.c
  718b0edb5c112343677f898c6c522652  gcc/testsuite/gcc.target/powerpc/pr39902-2.c
  22e940b76d5cf6790c8617b43e339e66  gcc/testsuite/gcc.target/powerpc/pr41175.c
! 73c0b299df8eb530ed907bb62d246f43  gcc/testsuite/gcc.target/powerpc/pr42747.c
! 4a1ecf937412d21e850fc410974f7f20  gcc/testsuite/gcc.target/powerpc/pr43154.c
  6297b7fbdfb37ede83db8e801f0c1267  gcc/testsuite/gcc.target/powerpc/pr46728-1.c
  bd6f936a54ce6b21c8b445e1e4078770  gcc/testsuite/gcc.target/powerpc/pr46728-10.c
  06534652fd87b9b8b9322193f6215efb  gcc/testsuite/gcc.target/powerpc/pr46728-11.c
--- 49948,49955 ----
  10a4dfe7b6545ed5cd448dc9a60c7228  gcc/testsuite/gcc.target/powerpc/pr39457.c
  718b0edb5c112343677f898c6c522652  gcc/testsuite/gcc.target/powerpc/pr39902-2.c
  22e940b76d5cf6790c8617b43e339e66  gcc/testsuite/gcc.target/powerpc/pr41175.c
! 01ef21d15630f018b9fc9c22d54725b9  gcc/testsuite/gcc.target/powerpc/pr42747.c
! 398999b9b94780a72d7cb4173e0faaba  gcc/testsuite/gcc.target/powerpc/pr43154.c
  6297b7fbdfb37ede83db8e801f0c1267  gcc/testsuite/gcc.target/powerpc/pr46728-1.c
  bd6f936a54ce6b21c8b445e1e4078770  gcc/testsuite/gcc.target/powerpc/pr46728-10.c
  06534652fd87b9b8b9322193f6215efb  gcc/testsuite/gcc.target/powerpc/pr46728-11.c
*************** a29766cc5f98866ea21c9ca1ebabc556  gcc/te
*** 46793,46894 ****
  578c64c87b74b5b2f698747ecffd19c0  gcc/testsuite/gcc.target/powerpc/pr46728-7.c
  d776e75164beada31b39ff00852a1668  gcc/testsuite/gcc.target/powerpc/pr46728-8.c
  09542fc0756c51e091818e0d1a7a05b5  gcc/testsuite/gcc.target/powerpc/pr47197.c
! 524c7b62ac0c9686a6bdb4804a11fce4  gcc/testsuite/gcc.target/powerpc/pr47251.c
! 9bcd4da8d1ead179f5ca0c94808c2ec3  gcc/testsuite/gcc.target/powerpc/pr47755-2.c
! b15f022f6f08a7dca1b72ba59441c31f  gcc/testsuite/gcc.target/powerpc/pr47755.c
! a126c8ee58b9156d861ed2d613db885a  gcc/testsuite/gcc.target/powerpc/pr47862.c
  187f203dd54fe5ba94f23b9af10db192  gcc/testsuite/gcc.target/powerpc/pr48053-1.c
  e3647ff87eca8354091eead60728a16f  gcc/testsuite/gcc.target/powerpc/pr48053-2.c
! 50a63b37446a806596e3e4cd2954742f  gcc/testsuite/gcc.target/powerpc/pr48053-3.c
! c716c796dfe97ad9260cdc94d29fa3fd  gcc/testsuite/gcc.target/powerpc/pr48192.c
! fd212e80b89ec3330e4f81ffa6de59f5  gcc/testsuite/gcc.target/powerpc/pr48226.c
! 4e448f1e3f0170d4b3a1ce807e7a1814  gcc/testsuite/gcc.target/powerpc/pr48258-1.c
! 2c5803d7fbb19ad730c93b25be382275  gcc/testsuite/gcc.target/powerpc/pr48258-2.c
  fe0ac584cf475bdf88cf0c5379e02068  gcc/testsuite/gcc.target/powerpc/pr48344-1.c
! 041a8e49063951ccec739daf1ff78300  gcc/testsuite/gcc.target/powerpc/pr48857.c
  2079afb39b02aee453b1737c8beaa071  gcc/testsuite/gcc.target/powerpc/pr51623.c
! 5acb2b60a69fe3afd4361b099dfa7040  gcc/testsuite/gcc.target/powerpc/pr52199.c
! dc6b9bd91a68c59c0a94ae63e4b75209  gcc/testsuite/gcc.target/powerpc/pr52457.c
! a2a8638c78551911bcc6580c69de984b  gcc/testsuite/gcc.target/powerpc/pr52775.c
! 318d9416d027d6ca3a3398878a618304  gcc/testsuite/gcc.target/powerpc/pr53199.c
! e2a75b59c22022ab8bb4ed7e89ca1650  gcc/testsuite/gcc.target/powerpc/pr53487.c
  3fafe888a5a347cd1b88c764346a31b0  gcc/testsuite/gcc.target/powerpc/pr54009.c
  8933434b3ab7fe26a9aef502ad22f542  gcc/testsuite/gcc.target/powerpc/pr54240.c
  5213ba15f0ce83b375c1cb6fab3a91a2  gcc/testsuite/gcc.target/powerpc/pr55033.c
  e4531bd522b146b22bdbf991fc3d207e  gcc/testsuite/gcc.target/powerpc/pr56256.c
! d8badfc11d20c7e686ee08da52201bca  gcc/testsuite/gcc.target/powerpc/pr56605.c
! dc0d877ab99719c9fc79d8f8c3bbf548  gcc/testsuite/gcc.target/powerpc/pr57150.c
  7a49a99d1d678fcb8065029344b893d5  gcc/testsuite/gcc.target/powerpc/pr57363.c
! 3422279adacc294aa681e3efe1077a05  gcc/testsuite/gcc.target/powerpc/pr57744.c
! 443f947af69d319bbfe15a38ca164cdd  gcc/testsuite/gcc.target/powerpc/pr57949-1.c
! 878d0f874760dc6a48fe444353c9fb9e  gcc/testsuite/gcc.target/powerpc/pr57949-2.c
  d58a248fbbaa40f8533b7dd68594b12c  gcc/testsuite/gcc.target/powerpc/pr58330.c
! beb9fa61d478077145d8179c4b94f1f1  gcc/testsuite/gcc.target/powerpc/pr58673-1.c
! 49fc9413ddbbd4888511c6ca1de5adfb  gcc/testsuite/gcc.target/powerpc/pr58673-2.c
! e425d584c2f2b9c4f57d344810aaefd6  gcc/testsuite/gcc.target/powerpc/pr59054.c
  e2be005a17035d4d4c6269830259fd72  gcc/testsuite/gcc.target/powerpc/pr60032.c
! bbb2d8474f95f9820fe65494554bb2b9  gcc/testsuite/gcc.target/powerpc/pr60102.c
! 847006df69ae3aa393411de76741a3d5  gcc/testsuite/gcc.target/powerpc/pr60137.c
! 91c957c2b8fe55786be4fa27ec587756  gcc/testsuite/gcc.target/powerpc/pr60158.c
! 8ed9856675687823523e2d8401ad922c  gcc/testsuite/gcc.target/powerpc/pr60203.c
! e93bec505ffbfbcb77a6d9679cffc1be  gcc/testsuite/gcc.target/powerpc/pr60676.c
! 73ae1ef8995476aa6b62eea67f6f58dd  gcc/testsuite/gcc.target/powerpc/pr60735.c
  20ff46b0608216382ea6e9abd325e184  gcc/testsuite/gcc.target/powerpc/pr61977-1.c
  a8716538a35e149e6421a6a569b0d882  gcc/testsuite/gcc.target/powerpc/pr61977-2.c
  b5f67a5154b009c6dec03e4ced76145b  gcc/testsuite/gcc.target/powerpc/pr63335.c
  90631e1f2929b792894198b96774c9fc  gcc/testsuite/gcc.target/powerpc/pr63354.c
! 79cc2b3def17722aafab5508449b1c68  gcc/testsuite/gcc.target/powerpc/pr63491.c
! d007c804b52c9e1198491a05a600186a  gcc/testsuite/gcc.target/powerpc/pr64019.c
! 727b62309f1ecf81c78b3199ad86a8cb  gcc/testsuite/gcc.target/powerpc/pr64205.c
! 888b7bff8991c2ede1c7e198bc2a05bf  gcc/testsuite/gcc.target/powerpc/pr64505.c
  564b9b7942b8363816b2ed8864ac1b7a  gcc/testsuite/gcc.target/powerpc/pr65058.c
  a284d0dacfcd6f771fef90d01d3a6372  gcc/testsuite/gcc.target/powerpc/pr65456.c
  b62881b057884522f471a0045de91404  gcc/testsuite/gcc.target/powerpc/pr65787.c
- 03aac6e8a5de77c775c7cee80af9ab84  gcc/testsuite/gcc.target/powerpc/pr65849-1.c
- c1577e67394b1e9e7510e7d9b946226a  gcc/testsuite/gcc.target/powerpc/pr65849-2.c
  cc7ed1a5f0820650491b04c8f265c0b2  gcc/testsuite/gcc.target/powerpc/pr66144-1.c
  b7ddb38736229a3775407a30ca145c36  gcc/testsuite/gcc.target/powerpc/pr66144-2.c
  07dc5fc12919cb64acca88d16b64eb49  gcc/testsuite/gcc.target/powerpc/pr66144-3.c
  2a1787dcc3b02479649fef85916a9b05  gcc/testsuite/gcc.target/powerpc/pr67071-1.c
  66d729391a8bf7a535f421e52f7d2ddf  gcc/testsuite/gcc.target/powerpc/pr67071-2.c
  1dc925cae1c688a77865627d749d015c  gcc/testsuite/gcc.target/powerpc/pr67071-3.c
! 35c73d31cfb2ab34903671c0ed5ded53  gcc/testsuite/gcc.target/powerpc/pr67789.c
! d513afbb48bce30e890a5d3d76987740  gcc/testsuite/gcc.target/powerpc/pr67808.c
! 0d319100b6874eec254061c50995a16b  gcc/testsuite/gcc.target/powerpc/pr68163.c
! b0dae0a08b67b28c3e8a71536d261274  gcc/testsuite/gcc.target/powerpc/pr68805.c
  d369a7045eda68cbec3227a16d5de67b  gcc/testsuite/gcc.target/powerpc/pr68872.c
  faf2ed46677346059dd2b7fd42254985  gcc/testsuite/gcc.target/powerpc/pr69252.c
! 49c8c108299a8b499707f5665d377a18  gcc/testsuite/gcc.target/powerpc/pr69461.c
! 251d7893f2e442fff79871909181e76f  gcc/testsuite/gcc.target/powerpc/pr69548.c
! 29611c6d3bffe7b8df87db3d00fe8dee  gcc/testsuite/gcc.target/powerpc/pr69946.c
  03eb7b91e6fcf641d03ca949346d2dc9  gcc/testsuite/gcc.target/powerpc/pr69969.c
  a31fef5f59c5f12ea342e66137c45ae7  gcc/testsuite/gcc.target/powerpc/pr70117.c
  222fda9019693e635c2d63ebdda27d2b  gcc/testsuite/gcc.target/powerpc/pr70640.c
  0a81f0b3117fb4f77424c3bc81a2a663  gcc/testsuite/gcc.target/powerpc/pr70669.c
  bb6ec828efc211131c5a036203ac7c94  gcc/testsuite/gcc.target/powerpc/pr70866.c
! d3a79432800e585b3905439b686d873b  gcc/testsuite/gcc.target/powerpc/pr70963.c
  31132ce703c42e34a14c7d103e655da2  gcc/testsuite/gcc.target/powerpc/pr71186.c
  ab54a4817911d7d3bbe757072d7001e4  gcc/testsuite/gcc.target/powerpc/pr71297.c
  f417c588db95ee3f7fbced361af8dbfa  gcc/testsuite/gcc.target/powerpc/pr71310.c
  18f516c22671e1293affe8823881c35c  gcc/testsuite/gcc.target/powerpc/pr71493-1.c
  7d83053012a7579379ae3f803b73b2ec  gcc/testsuite/gcc.target/powerpc/pr71493-2.c
! 28b1e9d8edb2081a7279eaec89871fee  gcc/testsuite/gcc.target/powerpc/pr71656-1.c
! d9ffd95a09400f5746357a34145f6515  gcc/testsuite/gcc.target/powerpc/pr71656-2.c
  30988a9b60b0a17d2a7d8a82ababf72d  gcc/testsuite/gcc.target/powerpc/pr71670.c
! aff8492d29822aab5bcc6408a127993c  gcc/testsuite/gcc.target/powerpc/pr71680.c
! 9d1ceb34ff4072b9b15ceedc2d7a4618  gcc/testsuite/gcc.target/powerpc/pr71698.c
! 6eff11fe03297bc9b383cc7e57a4fa46  gcc/testsuite/gcc.target/powerpc/pr71720.c
  d9ccfe0048f3d64bbe5861c9aea6294f  gcc/testsuite/gcc.target/powerpc/pr71763.c
  a1a29a276bb3f6f8436c361b1ef31e74  gcc/testsuite/gcc.target/powerpc/pr71785.c
  743729f568d85b4bd156413e92dea820  gcc/testsuite/gcc.target/powerpc/pr71805.c
! c9d28f12142b7a930625854f8a516817  gcc/testsuite/gcc.target/powerpc/pr71977-1.c
! dbd0e190ff3cfe7ee4d447cd76f56dc0  gcc/testsuite/gcc.target/powerpc/pr71977-2.c
! 38b7723cf756d98e0ed05ddda91d13e3  gcc/testsuite/gcc.target/powerpc/pr72717.c
  93265198c16d9ecf158a219f866ac902  gcc/testsuite/gcc.target/powerpc/pr72804.c
! 3c47d5ea6e68caafb336f0c2f694fea6  gcc/testsuite/gcc.target/powerpc/pr72853.c
  d13df2d4752807dad63a970f45225730  gcc/testsuite/gcc.target/powerpc/pr72863.c
! 73ad369c9c464432e372b604c59a1eee  gcc/testsuite/gcc.target/powerpc/pr77289.c
! c827dbb0852a2d8ce87abaf414c9ea2d  gcc/testsuite/gcc.target/powerpc/pr77416.c
  ad6a1f1ff4c5f5f604858aaf552068c2  gcc/testsuite/gcc.target/powerpc/pr77687.c
  3f243eca6047477f2cc97272970035eb  gcc/testsuite/gcc.target/powerpc/pr78056-1.c
  0c9a61ae785a4f93a5a6acfd111db302  gcc/testsuite/gcc.target/powerpc/pr78056-2.c
--- 49964,50064 ----
  578c64c87b74b5b2f698747ecffd19c0  gcc/testsuite/gcc.target/powerpc/pr46728-7.c
  d776e75164beada31b39ff00852a1668  gcc/testsuite/gcc.target/powerpc/pr46728-8.c
  09542fc0756c51e091818e0d1a7a05b5  gcc/testsuite/gcc.target/powerpc/pr47197.c
! 967f6832bb6f1ab5d402913b1b8538ca  gcc/testsuite/gcc.target/powerpc/pr47251.c
! 6ecaae0a25dba0eb825847f11901ca3a  gcc/testsuite/gcc.target/powerpc/pr47755-2.c
! fe6db7eff51c50e85f226495a5339ddb  gcc/testsuite/gcc.target/powerpc/pr47755.c
! ae6d5cdb4609aae6b10d7bee406e56da  gcc/testsuite/gcc.target/powerpc/pr47862.c
  187f203dd54fe5ba94f23b9af10db192  gcc/testsuite/gcc.target/powerpc/pr48053-1.c
  e3647ff87eca8354091eead60728a16f  gcc/testsuite/gcc.target/powerpc/pr48053-2.c
! d39205796264dad7907e1f3df0b7a31c  gcc/testsuite/gcc.target/powerpc/pr48053-3.c
! 115eb58763c9dfc7eb5047754ab40675  gcc/testsuite/gcc.target/powerpc/pr48192.c
! 55b94638d2666fc4e4ec5e0cd572cba1  gcc/testsuite/gcc.target/powerpc/pr48226.c
! da2291066e916919dc2b22f81c4b6659  gcc/testsuite/gcc.target/powerpc/pr48258-1.c
! c51087a64459f2030c35f4ac0d2601f4  gcc/testsuite/gcc.target/powerpc/pr48258-2.c
  fe0ac584cf475bdf88cf0c5379e02068  gcc/testsuite/gcc.target/powerpc/pr48344-1.c
! 347c14e9e46077dd96f288e290e14b32  gcc/testsuite/gcc.target/powerpc/pr48857.c
! c638e8830a3520905caf5144fa3bfd4e  gcc/testsuite/gcc.target/powerpc/pr51513.c
  2079afb39b02aee453b1737c8beaa071  gcc/testsuite/gcc.target/powerpc/pr51623.c
! b7b37333d472ecbb52390ddcbb4ec3f7  gcc/testsuite/gcc.target/powerpc/pr52199.c
! 63b51f97473d3376b0c54be6c0666a36  gcc/testsuite/gcc.target/powerpc/pr52457.c
! 547cdf2b1ecee14af931dc2d5919d4ed  gcc/testsuite/gcc.target/powerpc/pr52775.c
! 40f7e69ed9d37686633a8eb7a1dc6496  gcc/testsuite/gcc.target/powerpc/pr53199.c
! 289e3254cea5ce5329288e7305e4099f  gcc/testsuite/gcc.target/powerpc/pr53487.c
  3fafe888a5a347cd1b88c764346a31b0  gcc/testsuite/gcc.target/powerpc/pr54009.c
  8933434b3ab7fe26a9aef502ad22f542  gcc/testsuite/gcc.target/powerpc/pr54240.c
  5213ba15f0ce83b375c1cb6fab3a91a2  gcc/testsuite/gcc.target/powerpc/pr55033.c
  e4531bd522b146b22bdbf991fc3d207e  gcc/testsuite/gcc.target/powerpc/pr56256.c
! f010384f25dad73f8db764735b5c2cda  gcc/testsuite/gcc.target/powerpc/pr56605.c
! c85fe3179b25d0274cf9bb45d0986783  gcc/testsuite/gcc.target/powerpc/pr57150.c
  7a49a99d1d678fcb8065029344b893d5  gcc/testsuite/gcc.target/powerpc/pr57363.c
! 5a1a59664a12f41e649ce85cf2f2ab77  gcc/testsuite/gcc.target/powerpc/pr57744.c
! f02eeb6cf6befd77b21375ae0cbb214d  gcc/testsuite/gcc.target/powerpc/pr57949-1.c
! bb4b9d3fb43ff86bd4ff29c295f15b12  gcc/testsuite/gcc.target/powerpc/pr57949-2.c
  d58a248fbbaa40f8533b7dd68594b12c  gcc/testsuite/gcc.target/powerpc/pr58330.c
! b3ba2f078db852912c6a0e119605bc89  gcc/testsuite/gcc.target/powerpc/pr58673-1.c
! 83eb0a1e133985bd13169a24306e1eab  gcc/testsuite/gcc.target/powerpc/pr58673-2.c
! 59f319e4b1005169e0af8039f10e42da  gcc/testsuite/gcc.target/powerpc/pr59054.c
  e2be005a17035d4d4c6269830259fd72  gcc/testsuite/gcc.target/powerpc/pr60032.c
! 63ad63730844fd57a6686a63c12ff312  gcc/testsuite/gcc.target/powerpc/pr60102.c
! 8797c5868ef493bfd013f608a14997a0  gcc/testsuite/gcc.target/powerpc/pr60137.c
! 02cf135d832005e55949b852236d9b3c  gcc/testsuite/gcc.target/powerpc/pr60158.c
! f46688282e01953b7b30222804d9d13f  gcc/testsuite/gcc.target/powerpc/pr60203.c
! 3b524466e86226eb48cd827732e6d523  gcc/testsuite/gcc.target/powerpc/pr60676.c
! bf51ab11cd48a1ad105702c5ab6ac663  gcc/testsuite/gcc.target/powerpc/pr60735.c
  20ff46b0608216382ea6e9abd325e184  gcc/testsuite/gcc.target/powerpc/pr61977-1.c
  a8716538a35e149e6421a6a569b0d882  gcc/testsuite/gcc.target/powerpc/pr61977-2.c
  b5f67a5154b009c6dec03e4ced76145b  gcc/testsuite/gcc.target/powerpc/pr63335.c
  90631e1f2929b792894198b96774c9fc  gcc/testsuite/gcc.target/powerpc/pr63354.c
! 04a0032cc5edd0bc278f243f6959cd70  gcc/testsuite/gcc.target/powerpc/pr63491.c
! b5e8ef9958a6aa3dfdb0759b64d46722  gcc/testsuite/gcc.target/powerpc/pr64019.c
! b5d79d6bf4e28d0d317e05267972c454  gcc/testsuite/gcc.target/powerpc/pr64205.c
! ce56e41279d8db54c64a5fd047e0cfcf  gcc/testsuite/gcc.target/powerpc/pr64505.c
  564b9b7942b8363816b2ed8864ac1b7a  gcc/testsuite/gcc.target/powerpc/pr65058.c
  a284d0dacfcd6f771fef90d01d3a6372  gcc/testsuite/gcc.target/powerpc/pr65456.c
  b62881b057884522f471a0045de91404  gcc/testsuite/gcc.target/powerpc/pr65787.c
  cc7ed1a5f0820650491b04c8f265c0b2  gcc/testsuite/gcc.target/powerpc/pr66144-1.c
  b7ddb38736229a3775407a30ca145c36  gcc/testsuite/gcc.target/powerpc/pr66144-2.c
  07dc5fc12919cb64acca88d16b64eb49  gcc/testsuite/gcc.target/powerpc/pr66144-3.c
  2a1787dcc3b02479649fef85916a9b05  gcc/testsuite/gcc.target/powerpc/pr67071-1.c
  66d729391a8bf7a535f421e52f7d2ddf  gcc/testsuite/gcc.target/powerpc/pr67071-2.c
  1dc925cae1c688a77865627d749d015c  gcc/testsuite/gcc.target/powerpc/pr67071-3.c
! 7609b29cc525d34b4ba732f1f0e4a209  gcc/testsuite/gcc.target/powerpc/pr67789.c
! 88a3e9fbb8d6b27f263c091f86866838  gcc/testsuite/gcc.target/powerpc/pr67808.c
! aa32a238045a33a852e5d9310ed09842  gcc/testsuite/gcc.target/powerpc/pr68163.c
! 10275f113c23c2540c4983ca700eeaac  gcc/testsuite/gcc.target/powerpc/pr68805.c
  d369a7045eda68cbec3227a16d5de67b  gcc/testsuite/gcc.target/powerpc/pr68872.c
  faf2ed46677346059dd2b7fd42254985  gcc/testsuite/gcc.target/powerpc/pr69252.c
! 2dafa1128afc74d49fa120837106d572  gcc/testsuite/gcc.target/powerpc/pr69461.c
! 3b3600883b142990a643f5b787bb22cb  gcc/testsuite/gcc.target/powerpc/pr69548.c
! c12c18f334b92db27768fc61c21a1b4a  gcc/testsuite/gcc.target/powerpc/pr69946.c
  03eb7b91e6fcf641d03ca949346d2dc9  gcc/testsuite/gcc.target/powerpc/pr69969.c
  a31fef5f59c5f12ea342e66137c45ae7  gcc/testsuite/gcc.target/powerpc/pr70117.c
  222fda9019693e635c2d63ebdda27d2b  gcc/testsuite/gcc.target/powerpc/pr70640.c
  0a81f0b3117fb4f77424c3bc81a2a663  gcc/testsuite/gcc.target/powerpc/pr70669.c
  bb6ec828efc211131c5a036203ac7c94  gcc/testsuite/gcc.target/powerpc/pr70866.c
! 24b7a92e5a99b046be56d397f6c596c5  gcc/testsuite/gcc.target/powerpc/pr70963.c
  31132ce703c42e34a14c7d103e655da2  gcc/testsuite/gcc.target/powerpc/pr71186.c
  ab54a4817911d7d3bbe757072d7001e4  gcc/testsuite/gcc.target/powerpc/pr71297.c
  f417c588db95ee3f7fbced361af8dbfa  gcc/testsuite/gcc.target/powerpc/pr71310.c
  18f516c22671e1293affe8823881c35c  gcc/testsuite/gcc.target/powerpc/pr71493-1.c
  7d83053012a7579379ae3f803b73b2ec  gcc/testsuite/gcc.target/powerpc/pr71493-2.c
! c9b0e6a1691a38bdd6d5045a4df02574  gcc/testsuite/gcc.target/powerpc/pr71656-1.c
! 3bf4976128e14b1bebc878e38dbe0723  gcc/testsuite/gcc.target/powerpc/pr71656-2.c
  30988a9b60b0a17d2a7d8a82ababf72d  gcc/testsuite/gcc.target/powerpc/pr71670.c
! 854d197ae0679bd69feca506a04c8e22  gcc/testsuite/gcc.target/powerpc/pr71680.c
! 43bb198cb008845fd64b0a0f340be13c  gcc/testsuite/gcc.target/powerpc/pr71698.c
! 140c404b55422d7f1ea527d9803d6b5f  gcc/testsuite/gcc.target/powerpc/pr71720.c
  d9ccfe0048f3d64bbe5861c9aea6294f  gcc/testsuite/gcc.target/powerpc/pr71763.c
  a1a29a276bb3f6f8436c361b1ef31e74  gcc/testsuite/gcc.target/powerpc/pr71785.c
  743729f568d85b4bd156413e92dea820  gcc/testsuite/gcc.target/powerpc/pr71805.c
! 10c2cc153d28f4b411dd877ecf747261  gcc/testsuite/gcc.target/powerpc/pr71977-1.c
! 3c9ef43b11806c6399ebc3c9458c2ec3  gcc/testsuite/gcc.target/powerpc/pr71977-2.c
! 3203e6ade169c068d78bff97e876832d  gcc/testsuite/gcc.target/powerpc/pr72717.c
  93265198c16d9ecf158a219f866ac902  gcc/testsuite/gcc.target/powerpc/pr72804.c
! 91f1a7ff77ab6b79bd896a83acbd220b  gcc/testsuite/gcc.target/powerpc/pr72853.c
  d13df2d4752807dad63a970f45225730  gcc/testsuite/gcc.target/powerpc/pr72863.c
! f6c5cf8447337d2e2af227a2bcc6219c  gcc/testsuite/gcc.target/powerpc/pr77289.c
! a7fbfa33161a7ccf08ca1c71d9bccc3c  gcc/testsuite/gcc.target/powerpc/pr77416.c
  ad6a1f1ff4c5f5f604858aaf552068c2  gcc/testsuite/gcc.target/powerpc/pr77687.c
  3f243eca6047477f2cc97272970035eb  gcc/testsuite/gcc.target/powerpc/pr78056-1.c
  0c9a61ae785a4f93a5a6acfd111db302  gcc/testsuite/gcc.target/powerpc/pr78056-2.c
*************** d6d671730ade912b1ca7b6a767c50f50  gcc/te
*** 46897,46908 ****
  393ede082a774d3c338adc1d03559fb0  gcc/testsuite/gcc.target/powerpc/pr78056-5.c
  431ae736c95b2ad0d4dda38a0f0f7966  gcc/testsuite/gcc.target/powerpc/pr78056-6.c
  7217b02b18698d76f2b32698846a6412  gcc/testsuite/gcc.target/powerpc/pr78056-7.c
! 650e21a7c62876858436fe015fb9012b  gcc/testsuite/gcc.target/powerpc/pr78458.c
! 8fab8f018ebf5d442e39b9cc4bdf5300  gcc/testsuite/gcc.target/powerpc/pr78543.c
! 6e1865dc80976f58fc301c4d4baafb8e  gcc/testsuite/gcc.target/powerpc/pr78604.c
  93b28b04847919ef72a6579a060e94e4  gcc/testsuite/gcc.target/powerpc/pr78658.c
  e77f24f1b3f26aacf550086da8e1c63b  gcc/testsuite/gcc.target/powerpc/pr78691-ppc.c
! a61de66574df2c9c51a3eb161cfbcf62  gcc/testsuite/gcc.target/powerpc/pr78953.c
  fffd5958ea9aa15024de22578c9d898b  gcc/testsuite/gcc.target/powerpc/pr79004.c
  b2c022f4eb86847a4ca4f5ce8f909dc3  gcc/testsuite/gcc.target/powerpc/pr79038-1.c
  fb131f3896466dcc86b6cb615cf76c79  gcc/testsuite/gcc.target/powerpc/pr79066.c
--- 50067,50078 ----
  393ede082a774d3c338adc1d03559fb0  gcc/testsuite/gcc.target/powerpc/pr78056-5.c
  431ae736c95b2ad0d4dda38a0f0f7966  gcc/testsuite/gcc.target/powerpc/pr78056-6.c
  7217b02b18698d76f2b32698846a6412  gcc/testsuite/gcc.target/powerpc/pr78056-7.c
! bd06a53539e9540f2b947af5f6e2737e  gcc/testsuite/gcc.target/powerpc/pr78458.c
! caab8043e9c1b155a5308b9f92878850  gcc/testsuite/gcc.target/powerpc/pr78543.c
! 8fbad860a9be47a79536d0bb5c99c0f4  gcc/testsuite/gcc.target/powerpc/pr78604.c
  93b28b04847919ef72a6579a060e94e4  gcc/testsuite/gcc.target/powerpc/pr78658.c
  e77f24f1b3f26aacf550086da8e1c63b  gcc/testsuite/gcc.target/powerpc/pr78691-ppc.c
! 90819efbf887a1cc82b84c68f51e3e71  gcc/testsuite/gcc.target/powerpc/pr78953.c
  fffd5958ea9aa15024de22578c9d898b  gcc/testsuite/gcc.target/powerpc/pr79004.c
  b2c022f4eb86847a4ca4f5ce8f909dc3  gcc/testsuite/gcc.target/powerpc/pr79038-1.c
  fb131f3896466dcc86b6cb615cf76c79  gcc/testsuite/gcc.target/powerpc/pr79066.c
*************** fb131f3896466dcc86b6cb615cf76c79  gcc/te
*** 46910,46937 ****
  fb524be9fd12ca8094bde96a06f3bdd5  gcc/testsuite/gcc.target/powerpc/pr79197.c
  adae1df378f0cd835ec237a059a15d89  gcc/testsuite/gcc.target/powerpc/pr79268.c
  e16e95e49a068e3c198ca05f1f517f27  gcc/testsuite/gcc.target/powerpc/pr79354.c
! 2ade3ead61d3cab26f7ebe4b285b9137  gcc/testsuite/gcc.target/powerpc/pr79439.c
  8c1e3ce96b0244e674ef5e0620a4b88e  gcc/testsuite/gcc.target/powerpc/pr79544.c
  10bc4b6172ee1fc37b5d7f8da24537ee  gcc/testsuite/gcc.target/powerpc/pr79799-1.c
! 7e1a5eef488ae4e6b47fc8fdc00352f3  gcc/testsuite/gcc.target/powerpc/pr79799-2.c
  14b9e39f78e01528365eded066632779  gcc/testsuite/gcc.target/powerpc/pr79799-3.c
  467b382b65b1ebbac6326ad8455010b0  gcc/testsuite/gcc.target/powerpc/pr79799-4.c
  6fb3807ef298bd1214fdd2135b1c617a  gcc/testsuite/gcc.target/powerpc/pr79799-5.c
! 193063767498ad5eeaed2c356a368d0f  gcc/testsuite/gcc.target/powerpc/pr79907.c
! 642c9f1dcfbb4e02caa3fdaa9add4539  gcc/testsuite/gcc.target/powerpc/pr79909.c
  c4116b75f2059a7e1bab2e403b724598  gcc/testsuite/gcc.target/powerpc/pr79947.c
  8fe70e669118bfd74ac64bf553741d89  gcc/testsuite/gcc.target/powerpc/pr79951.c
! 1224dd35ef12806b3401158f5e60cb18  gcc/testsuite/gcc.target/powerpc/pr80098-1.c
! 6775ef19364f1963b95086955e1607c2  gcc/testsuite/gcc.target/powerpc/pr80098-2.c
! bd6080bcefedf055449f94e0852dd7d8  gcc/testsuite/gcc.target/powerpc/pr80098-3.c
! 074ce09ab5db2a32e068dc45a5f214f8  gcc/testsuite/gcc.target/powerpc/pr80098-4.c
! d216c565fe7e49c6d18dc42e4a01b80a  gcc/testsuite/gcc.target/powerpc/pr80099-1.c
! 7ff5d4b3567d5d62add87a8275423151  gcc/testsuite/gcc.target/powerpc/pr80099-2.c
! f836e066bf7362a4c98962931153e731  gcc/testsuite/gcc.target/powerpc/pr80099-3.c
! 6ff9911eb69017df6937bbfdbfabcaea  gcc/testsuite/gcc.target/powerpc/pr80099-4.c
! 641c02efa8079ef3086b94358b04dbbe  gcc/testsuite/gcc.target/powerpc/pr80099-5.c
  e3724d1b8faf6dcacb8d047defe64496  gcc/testsuite/gcc.target/powerpc/pr80101-1.c
- a63b5847eb3daabd4a56b649ab602f4c  gcc/testsuite/gcc.target/powerpc/pr80103-1.c
  66ae7647dd692b6ddc6355ddda4f0fa6  gcc/testsuite/gcc.target/powerpc/pr80125.c
  0c08f4c83d90538f2c1ff74965ce6a2b  gcc/testsuite/gcc.target/powerpc/pr80210-2.c
  32dc6ec7c4a1a3cefe2efbb3b602ef2c  gcc/testsuite/gcc.target/powerpc/pr80210.c
--- 50080,50103 ----
  fb524be9fd12ca8094bde96a06f3bdd5  gcc/testsuite/gcc.target/powerpc/pr79197.c
  adae1df378f0cd835ec237a059a15d89  gcc/testsuite/gcc.target/powerpc/pr79268.c
  e16e95e49a068e3c198ca05f1f517f27  gcc/testsuite/gcc.target/powerpc/pr79354.c
! 6b95f87c7496463c3ca9c6e7e3e14f05  gcc/testsuite/gcc.target/powerpc/pr79439-1.c
! 1df15c1f8d0ba70bb676a5f87a035494  gcc/testsuite/gcc.target/powerpc/pr79439-2.c
! 3f6f1808be041f8f52badef7796aa576  gcc/testsuite/gcc.target/powerpc/pr79439-3.c
  8c1e3ce96b0244e674ef5e0620a4b88e  gcc/testsuite/gcc.target/powerpc/pr79544.c
  10bc4b6172ee1fc37b5d7f8da24537ee  gcc/testsuite/gcc.target/powerpc/pr79799-1.c
! 751b4e054465cb49b8e06dd1775c4f1d  gcc/testsuite/gcc.target/powerpc/pr79799-2.c
  14b9e39f78e01528365eded066632779  gcc/testsuite/gcc.target/powerpc/pr79799-3.c
  467b382b65b1ebbac6326ad8455010b0  gcc/testsuite/gcc.target/powerpc/pr79799-4.c
  6fb3807ef298bd1214fdd2135b1c617a  gcc/testsuite/gcc.target/powerpc/pr79799-5.c
! e88cc112bb1e58cac7a9d9b275f446e1  gcc/testsuite/gcc.target/powerpc/pr79907.c
! 1f37d371237a2549ab8743e019930f85  gcc/testsuite/gcc.target/powerpc/pr79909.c
! 5cf4cc3547cf50f1b1d82e4e1a8f3f42  gcc/testsuite/gcc.target/powerpc/pr79916.c
  c4116b75f2059a7e1bab2e403b724598  gcc/testsuite/gcc.target/powerpc/pr79947.c
  8fe70e669118bfd74ac64bf553741d89  gcc/testsuite/gcc.target/powerpc/pr79951.c
! f2403ecf9bc868f8ced8c5516eebb625  gcc/testsuite/gcc.target/powerpc/pr80098-1.c
! f3c185b1d8600748afca8de2e673d9d4  gcc/testsuite/gcc.target/powerpc/pr80098-2.c
! 5ad121df1443ca4f01565b0e4dc9152d  gcc/testsuite/gcc.target/powerpc/pr80098-3.c
  e3724d1b8faf6dcacb8d047defe64496  gcc/testsuite/gcc.target/powerpc/pr80101-1.c
  66ae7647dd692b6ddc6355ddda4f0fa6  gcc/testsuite/gcc.target/powerpc/pr80125.c
  0c08f4c83d90538f2c1ff74965ce6a2b  gcc/testsuite/gcc.target/powerpc/pr80210-2.c
  32dc6ec7c4a1a3cefe2efbb3b602ef2c  gcc/testsuite/gcc.target/powerpc/pr80210.c
*************** ec245c99d37391d98e0206a55deeecc7  gcc/te
*** 46943,46967 ****
  735f25ac91d08f3de3f9e159e3752531  gcc/testsuite/gcc.target/powerpc/pr80343.c
  72ae35ee6424648259ebc86bd0a39eac  gcc/testsuite/gcc.target/powerpc/pr80510-1.c
  d47ea1598c1321fc4399901853c2e875  gcc/testsuite/gcc.target/powerpc/pr80510-2.c
! 77a5e775e41230e0965d55e156a3cd4a  gcc/testsuite/gcc.target/powerpc/pr80695-p8.c
! 6998ed5bc17f2c2cae45a8fe179c2d16  gcc/testsuite/gcc.target/powerpc/pr80695-p9.c
! 12068e972df8c5dd156551254f178638  gcc/testsuite/gcc.target/powerpc/pr80718.c
  301df4d12681f11583133c52aaa21227  gcc/testsuite/gcc.target/powerpc/pr81348.c
  d8a50436a257e5e490d186255b113b43  gcc/testsuite/gcc.target/powerpc/pr81622.c
  91aa94bfbc5294b4a595ae532afc83cc  gcc/testsuite/gcc.target/powerpc/pr81833-1.c
  19cfa2a5c1f2939acd4ac7362754d9b0  gcc/testsuite/gcc.target/powerpc/pr81833-2.c
  8594eb52b8a7ff0cff5ca6a853090510  gcc/testsuite/gcc.target/powerpc/pr81959.c
  118dd26456facc5560611716506ec4a3  gcc/testsuite/gcc.target/powerpc/pr82112.c
  af41d1f7ab09c5aeb8e8a2984b5dab5b  gcc/testsuite/gcc.target/powerpc/pr83629.c
  d301886da183d8d6d112b1ec7d01024d  gcc/testsuite/gcc.target/powerpc/pr83677.c
! 17f878b62dd2e08735d53fce64232a47  gcc/testsuite/gcc.target/powerpc/quad-atomic.c
  171a411d14f30e8450dc3f2ef38b1bd7  gcc/testsuite/gcc.target/powerpc/recip-1.c
  6b7c4920c070e84f6819377bcdb90c0d  gcc/testsuite/gcc.target/powerpc/recip-2.c
  4c141025d42fcd5aca075f11f8ac88a7  gcc/testsuite/gcc.target/powerpc/recip-3.c
  e1869fbff80d1b8fe558d9c73382efe7  gcc/testsuite/gcc.target/powerpc/recip-4.c
! 5ec4ab595bf2ea19c9e4ef5467a64cf5  gcc/testsuite/gcc.target/powerpc/recip-5.c
! c1f779c38939bbe55af8c826dacfe902  gcc/testsuite/gcc.target/powerpc/recip-6.c
! bf69abc3f52a43c04e0ff40eed064fd7  gcc/testsuite/gcc.target/powerpc/recip-7.c
  d5996de5fff2f6671069f4dc43b8aa53  gcc/testsuite/gcc.target/powerpc/recip-sqrtf.c
  fe9225d1abdaae2f673f090f614da1a6  gcc/testsuite/gcc.target/powerpc/recip-test.h
  9675d8b7d035b4752fb02e00ceb957d4  gcc/testsuite/gcc.target/powerpc/recip-test2.h
--- 50109,50159 ----
  735f25ac91d08f3de3f9e159e3752531  gcc/testsuite/gcc.target/powerpc/pr80343.c
  72ae35ee6424648259ebc86bd0a39eac  gcc/testsuite/gcc.target/powerpc/pr80510-1.c
  d47ea1598c1321fc4399901853c2e875  gcc/testsuite/gcc.target/powerpc/pr80510-2.c
! b7a3ad77faea7762a55c40c1b581f3eb  gcc/testsuite/gcc.target/powerpc/pr80695-p8.c
! fc700e4392ba4e46b8c8cca30dddc3da  gcc/testsuite/gcc.target/powerpc/pr80695-p9.c
! 5fe94f3f74d07efe0f4799329f0297fd  gcc/testsuite/gcc.target/powerpc/pr80718.c
  301df4d12681f11583133c52aaa21227  gcc/testsuite/gcc.target/powerpc/pr81348.c
+ 4400c1c9f663abff19e28961ea1e4b32  gcc/testsuite/gcc.target/powerpc/pr81572.c
  d8a50436a257e5e490d186255b113b43  gcc/testsuite/gcc.target/powerpc/pr81622.c
  91aa94bfbc5294b4a595ae532afc83cc  gcc/testsuite/gcc.target/powerpc/pr81833-1.c
  19cfa2a5c1f2939acd4ac7362754d9b0  gcc/testsuite/gcc.target/powerpc/pr81833-2.c
  8594eb52b8a7ff0cff5ca6a853090510  gcc/testsuite/gcc.target/powerpc/pr81959.c
+ c44334ad53e7fd3fe5f49d0cc881d3d8  gcc/testsuite/gcc.target/powerpc/pr82015.c
  118dd26456facc5560611716506ec4a3  gcc/testsuite/gcc.target/powerpc/pr82112.c
+ 9d01972355938afb2a4de9ba1d316dc0  gcc/testsuite/gcc.target/powerpc/pr82333.c
+ ea50ad0d71f532e863446139cc360b18  gcc/testsuite/gcc.target/powerpc/pr82748-1.c
+ d00f702a3eabc4c4562d778ce7c43884  gcc/testsuite/gcc.target/powerpc/pr82748-2.c
+ 94063e07a1d46fd61e894aa64b40ebaf  gcc/testsuite/gcc.target/powerpc/pr82848.c
+ ea551d3ae1683b94dcf15935e3841a31  gcc/testsuite/gcc.target/powerpc/pr83399.c
  af41d1f7ab09c5aeb8e8a2984b5dab5b  gcc/testsuite/gcc.target/powerpc/pr83629.c
+ 860273d37b5f68029eb640244a47ea24  gcc/testsuite/gcc.target/powerpc/pr83660.C
  d301886da183d8d6d112b1ec7d01024d  gcc/testsuite/gcc.target/powerpc/pr83677.c
! 649c25d197e82583d1f58ca7dc0e0b9b  gcc/testsuite/gcc.target/powerpc/pr83862.c
! 93ce5760f7fb22029a66ef2e9fa06d50  gcc/testsuite/gcc.target/powerpc/pr83926.c
! 97363ed47bfba39cb4cdc1518084a7ca  gcc/testsuite/gcc.target/powerpc/pr83969.c
! b0ac7cd0c9eeb503dd45cff546014616  gcc/testsuite/gcc.target/powerpc/pr84014.c
! 5cb2f7712695b118dcb89097e3a66f14  gcc/testsuite/gcc.target/powerpc/pr84112.c
! f933cd0da11eebb48da12afacd0c1f1b  gcc/testsuite/gcc.target/powerpc/pr84154-1.c
! 4fd6082802d1baf586110097c4b248b7  gcc/testsuite/gcc.target/powerpc/pr84154-2.c
! 7dece685b3ae3bc15f2ebbbe188ef463  gcc/testsuite/gcc.target/powerpc/pr84154-3.c
! 332b33a6c444a0e7215458dfbe7ecd98  gcc/testsuite/gcc.target/powerpc/pr84220-sld.c
! a7864c94ff253ae4bd05b0b0881dd53d  gcc/testsuite/gcc.target/powerpc/pr84220-sld2.c
! af7dc861a4500601b67924732c8cc38f  gcc/testsuite/gcc.target/powerpc/pr84220-sldw.c
! ef31dac4dd4a4633f786cc30b8ab9090  gcc/testsuite/gcc.target/powerpc/pr84220-xxperm.c
! 2ce6e3fc9b3735559827af50cead8ad5  gcc/testsuite/gcc.target/powerpc/pr84220-xxsld.c
! 1760a327fffca563d72a1725596acc0f  gcc/testsuite/gcc.target/powerpc/pr84226.c
! 051202397c19754b2a90622d9c2bc23f  gcc/testsuite/gcc.target/powerpc/pr84700.c
! 874e5579ccc7cea1bb0bdaa8eabfdcb3  gcc/testsuite/gcc.target/powerpc/pr84878.c
! 7cea7f65ba47496f2826936268c00bfa  gcc/testsuite/gcc.target/powerpc/pr85456.c
! fb5aed78c31f2dd1317f24c4fa7835bb  gcc/testsuite/gcc.target/powerpc/quad-atomic.c
! 4c4c29d599264356e1c6bc46cac8a876  gcc/testsuite/gcc.target/powerpc/r2_shrink-wrap.c
  171a411d14f30e8450dc3f2ef38b1bd7  gcc/testsuite/gcc.target/powerpc/recip-1.c
  6b7c4920c070e84f6819377bcdb90c0d  gcc/testsuite/gcc.target/powerpc/recip-2.c
  4c141025d42fcd5aca075f11f8ac88a7  gcc/testsuite/gcc.target/powerpc/recip-3.c
  e1869fbff80d1b8fe558d9c73382efe7  gcc/testsuite/gcc.target/powerpc/recip-4.c
! 574cbfb4b1312a5e3ba4f94d933b9df5  gcc/testsuite/gcc.target/powerpc/recip-5.c
! 02ae588b3be2fdf57423ef927ca55732  gcc/testsuite/gcc.target/powerpc/recip-6.c
! 58a0e8bd8883e5974c0d9f70d96ce644  gcc/testsuite/gcc.target/powerpc/recip-7.c
  d5996de5fff2f6671069f4dc43b8aa53  gcc/testsuite/gcc.target/powerpc/recip-sqrtf.c
  fe9225d1abdaae2f673f090f614da1a6  gcc/testsuite/gcc.target/powerpc/recip-test.h
  9675d8b7d035b4752fb02e00ceb957d4  gcc/testsuite/gcc.target/powerpc/recip-test2.h
*************** bf385d7310a8dab90ee44f86832aa03b  gcc/te
*** 46994,47011 ****
  afd35ba530c1198a75e9e1a79650add6  gcc/testsuite/gcc.target/powerpc/rs6000-ldouble-1.c
  7aacc521251d44cf2fa3a75a564c4270  gcc/testsuite/gcc.target/powerpc/rs6000-ldouble-2.c
  b21c33d525f0c97602d4a2348994de36  gcc/testsuite/gcc.target/powerpc/rs6000-ldouble-3.c
! 589b520b24be329639b6a19bf46a21be  gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-1.c
! 991657dd32fa10208631317b8b971fc8  gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-2.c
! 185454bb81c4040670a29160d3887ae5  gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-3.c
! 12993ee5ee0dfc0b45dc8aeeffb00431  gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-4.c
! a9f59812e009ec10fa71a45c0eb87893  gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-5.c
! 9cfacfcd00bdbf48ea7285479e96fad9  gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-6.c
! 1ebc8b36658f5a909752cc23480793d6  gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-7.c
! c15cdd2288e98bbf31d2967424ef41a2  gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-8.c
  f66a7c7a9b7cdd49a6b9860dbb16d90a  gcc/testsuite/gcc.target/powerpc/savres.c
! 98a0676ba42103cce9e60b2313f8b2ef  gcc/testsuite/gcc.target/powerpc/sd-pwr6.c
! 65a53924a48d5df99017fa40a01962f4  gcc/testsuite/gcc.target/powerpc/sd-vsx.c
! a53a4937c325ba3bc85e0bdea0b94e11  gcc/testsuite/gcc.target/powerpc/shift-dot.c
  416332739a98fa1f2023fe8c217782e4  gcc/testsuite/gcc.target/powerpc/shift-int.c
  862ac833b3d2f974e0f5cecc6abee95b  gcc/testsuite/gcc.target/powerpc/shrink-wrap-separate-0.c
  63c119f5703b1b66e32b794c15f04320  gcc/testsuite/gcc.target/powerpc/shrink-wrap-separate-1.c
--- 50186,50206 ----
  afd35ba530c1198a75e9e1a79650add6  gcc/testsuite/gcc.target/powerpc/rs6000-ldouble-1.c
  7aacc521251d44cf2fa3a75a564c4270  gcc/testsuite/gcc.target/powerpc/rs6000-ldouble-2.c
  b21c33d525f0c97602d4a2348994de36  gcc/testsuite/gcc.target/powerpc/rs6000-ldouble-3.c
! ea174970897965faf63723778a9865af  gcc/testsuite/gcc.target/powerpc/sad-vectorize-1.c
! 6d1873d2fbd2d019218b78d3b706b27b  gcc/testsuite/gcc.target/powerpc/sad-vectorize-2.c
! 76c0fa8a6799cc205e741501f506d07e  gcc/testsuite/gcc.target/powerpc/sad-vectorize-3.c
! 17056c52f1056b5b1839e452c96d0fa8  gcc/testsuite/gcc.target/powerpc/sad-vectorize-4.c
! e8409a903c25e73258a07cc7263f0fff  gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-1.c
! 15bd7d0b1c9766ac9c14300c015d5793  gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-2.c
! fecbca1485084d70d917631126a31ef1  gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-3.c
! 440a279cd4b54a0d56f1725ad5e57d55  gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-4.c
! ef8eb7cbf624be95837254f86c894d5b  gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-5.c
! 24a2f6cdda4929c5eaa245cc358ce7c6  gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-6.c
! ca1b282ad40b24683e13c46737288d7e  gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-7.c
  f66a7c7a9b7cdd49a6b9860dbb16d90a  gcc/testsuite/gcc.target/powerpc/savres.c
! 3584a721dbb6f8ff33bc626409267e7d  gcc/testsuite/gcc.target/powerpc/sd-pwr6.c
! a3970046e11425ef91be8092d326328d  gcc/testsuite/gcc.target/powerpc/sd-vsx.c
! 7f79e51f48a45300891b035ea6938b2f  gcc/testsuite/gcc.target/powerpc/shift-dot.c
  416332739a98fa1f2023fe8c217782e4  gcc/testsuite/gcc.target/powerpc/shift-int.c
  862ac833b3d2f974e0f5cecc6abee95b  gcc/testsuite/gcc.target/powerpc/shrink-wrap-separate-0.c
  63c119f5703b1b66e32b794c15f04320  gcc/testsuite/gcc.target/powerpc/shrink-wrap-separate-1.c
*************** b3e9870bc5d831fd67c299ee87dfb2f7  gcc/te
*** 47017,47025 ****
  89537cc7476c27c7c10b811da61def34  gcc/testsuite/gcc.target/powerpc/spe-small-data-1.c
  9d04892083c467f0ebf1fc75e043d6d8  gcc/testsuite/gcc.target/powerpc/spe-small-data-2.c
  5621f40c865fca710b0c765df76942f6  gcc/testsuite/gcc.target/powerpc/spe-unwind-1.c
! caf83f2b272138041945d99cf818ff06  gcc/testsuite/gcc.target/powerpc/spe-vector-memcpy.c
  aefbc9c117b311a9394883e9c890efb9  gcc/testsuite/gcc.target/powerpc/spe-vector-memset.c
! 32bb5e201dd78c548aed0cdf044779ec  gcc/testsuite/gcc.target/powerpc/spe1.c
  c4da621e2f792bd21112c40ff73a206d  gcc/testsuite/gcc.target/powerpc/ssp-1.c
  28df2b90767c1ab9ffd06127b47b30f9  gcc/testsuite/gcc.target/powerpc/ssp-2.c
  c9be7e0cc9ba390460928b1de506fa70  gcc/testsuite/gcc.target/powerpc/stabs-attrib-vect-darwin.c
--- 50212,50419 ----
  89537cc7476c27c7c10b811da61def34  gcc/testsuite/gcc.target/powerpc/spe-small-data-1.c
  9d04892083c467f0ebf1fc75e043d6d8  gcc/testsuite/gcc.target/powerpc/spe-small-data-2.c
  5621f40c865fca710b0c765df76942f6  gcc/testsuite/gcc.target/powerpc/spe-unwind-1.c
! 31d586e0441dc6ae2d999f97d64dcf92  gcc/testsuite/gcc.target/powerpc/spe-vector-memcpy.c
  aefbc9c117b311a9394883e9c890efb9  gcc/testsuite/gcc.target/powerpc/spe-vector-memset.c
! 9d9e8d8282ff5bb95e77c7a31c2efd6f  gcc/testsuite/gcc.target/powerpc/spe1.c
! 88922713d728acf906b95c66645c2539  gcc/testsuite/gcc.target/powerpc/spec-barr-1.c
! 6c4e50344a9a562f1cda2882cd52818d  gcc/testsuite/gcc.target/powerpc/sse-addps-1.c
! 118abacb2b8996a6812b8329848c72f6  gcc/testsuite/gcc.target/powerpc/sse-addss-1.c
! 047b7ea1716e0312c4be53b318dcb9d8  gcc/testsuite/gcc.target/powerpc/sse-andnps-1.c
! d0d0c5fe2e74e061eb2078e7f19e6607  gcc/testsuite/gcc.target/powerpc/sse-andps-1.c
! eeeb143a3b991b0bc639f8584fd85d90  gcc/testsuite/gcc.target/powerpc/sse-check.h
! 0a6cb2301ff3b0d240db77243697773e  gcc/testsuite/gcc.target/powerpc/sse-cmpss-1.c
! ea872ba66b35b8359ae5822703920cd4  gcc/testsuite/gcc.target/powerpc/sse-cvtpi16ps-1.c
! bc6b49cdf23b3489795abc067ad4b271  gcc/testsuite/gcc.target/powerpc/sse-cvtpi32ps-1.c
! 61822c71a94c4e550d3089fb50ba700f  gcc/testsuite/gcc.target/powerpc/sse-cvtpi32x2ps-1.c
! d42a86caa33454603be128199518300a  gcc/testsuite/gcc.target/powerpc/sse-cvtpi8ps-1.c
! 9d8ecc1fb5e057a997e9546dc82adcf6  gcc/testsuite/gcc.target/powerpc/sse-cvtpspi16-1.c
! 1af1ec76c623a30766712f0f8666f969  gcc/testsuite/gcc.target/powerpc/sse-cvtpspi8-1.c
! b2477e777bf9af395764d34e340aa9c1  gcc/testsuite/gcc.target/powerpc/sse-cvtpu16ps-1.c
! 4630c468a07eff692a189c0b8886cbb6  gcc/testsuite/gcc.target/powerpc/sse-cvtpu8ps-1.c
! 277e786101b9bea0e92e37f33498d9a8  gcc/testsuite/gcc.target/powerpc/sse-cvtsi2ss-1.c
! 93a0ed7c30264e2bddb217c0ce92a195  gcc/testsuite/gcc.target/powerpc/sse-cvtsi2ss-2.c
! 2e516d063a024c17ae122661173d10d3  gcc/testsuite/gcc.target/powerpc/sse-cvtss2si-1.c
! 1fb604d9612b2451dc60f1e167d18666  gcc/testsuite/gcc.target/powerpc/sse-cvtss2si-2.c
! 02ff17d3e3de129472f18d469e16c460  gcc/testsuite/gcc.target/powerpc/sse-cvttss2si-1.c
! 8ef04dfc0dad482d7e3ee2e31f3e3ac4  gcc/testsuite/gcc.target/powerpc/sse-cvttss2si-2.c
! ba069f2fc8e338033f2e11e0774123d7  gcc/testsuite/gcc.target/powerpc/sse-divps-1.c
! fc8a4591e7d70c5acf1952fa573b905c  gcc/testsuite/gcc.target/powerpc/sse-divss-1.c
! 1616bfbb4e95e0b593f96b3444a469d6  gcc/testsuite/gcc.target/powerpc/sse-maxps-1.c
! e442c672823ebf9709e5d38de82b8802  gcc/testsuite/gcc.target/powerpc/sse-maxps-2.c
! d9661f5bffe7653a4e7cab4eead22992  gcc/testsuite/gcc.target/powerpc/sse-maxss-1.c
! 4449b5ea543723b9f7803accda477c37  gcc/testsuite/gcc.target/powerpc/sse-minps-1.c
! 9a5ff47a9511ac358fc37f31610b6f76  gcc/testsuite/gcc.target/powerpc/sse-minps-2.c
! 93effaaa27e0f559d26998c3c222efd5  gcc/testsuite/gcc.target/powerpc/sse-minss-1.c
! 89574cb3683d1e4c90c53b071277035d  gcc/testsuite/gcc.target/powerpc/sse-movaps-1.c
! 2b7db00308f1efe97eed1019867ba5f4  gcc/testsuite/gcc.target/powerpc/sse-movaps-2.c
! 7a6bfd5fa46bfa51cc9629ea7d10d0e9  gcc/testsuite/gcc.target/powerpc/sse-movhlps-1.c
! 6ea849619ff501c6e9703c4e5619d64f  gcc/testsuite/gcc.target/powerpc/sse-movhps-1.c
! 341e4e8be1b94307884cadda49455069  gcc/testsuite/gcc.target/powerpc/sse-movhps-2.c
! 57d41a4172a36ff85c00e38080faaca7  gcc/testsuite/gcc.target/powerpc/sse-movlhps-1.c
! b034a703ed0ecd7a38234bc58f19d17d  gcc/testsuite/gcc.target/powerpc/sse-movlps-1.c
! 26dcf54f572b4f600c885689d623dbba  gcc/testsuite/gcc.target/powerpc/sse-movlps-2.c
! 7123dc44249865fc3f0d05bd3e2aeca9  gcc/testsuite/gcc.target/powerpc/sse-movmskb-1.c
! a59c9fa1181167d42399dc98fa6e3062  gcc/testsuite/gcc.target/powerpc/sse-movmskps-1.c
! ca1053f8c70b5fe6f0e97bcc502d5042  gcc/testsuite/gcc.target/powerpc/sse-movss-1.c
! 3ebe2f3877fa467663797f3a41e44e06  gcc/testsuite/gcc.target/powerpc/sse-movss-2.c
! 94cf0e8c2eac4b63762eff62ba114b7e  gcc/testsuite/gcc.target/powerpc/sse-movss-3.c
! d32a4c4b9105e08a480fcdee319c3ade  gcc/testsuite/gcc.target/powerpc/sse-mulps-1.c
! 9e66c600a60b542077e9116c0c6afa7a  gcc/testsuite/gcc.target/powerpc/sse-mulss-1.c
! 6fd2c6bae1a99b43564e69d7f7ef73e6  gcc/testsuite/gcc.target/powerpc/sse-orps-1.c
! ba356b568da5a7bad51db1780df28951  gcc/testsuite/gcc.target/powerpc/sse-pavgw-1.c
! 5ac74b9db29891632c50fd584d7530c8  gcc/testsuite/gcc.target/powerpc/sse-pmaxsw-1.c
! 5c2c16ac804b54a3d0dabf29d6c071e1  gcc/testsuite/gcc.target/powerpc/sse-pmaxub-1.c
! c6de0a70a80ffb6b6eb22ce8fbb1b434  gcc/testsuite/gcc.target/powerpc/sse-pminsw-1.c
! 72b25b65a95b05c0195e9fc654b20d20  gcc/testsuite/gcc.target/powerpc/sse-pminub-1.c
! 616816ebd0570fcedb8692dc7cf5ccd0  gcc/testsuite/gcc.target/powerpc/sse-pmulhuw-1.c
! 75f9bf10de4f8017d37f7cf288d4d828  gcc/testsuite/gcc.target/powerpc/sse-psadbw-1.c
! cbbcee9d1f16f0a6148b18d886d41eab  gcc/testsuite/gcc.target/powerpc/sse-rcpps-1.c
! 5b54b6b5cc4a85db3447b3eef467fe79  gcc/testsuite/gcc.target/powerpc/sse-rsqrtps-1.c
! 15f455b7c7a232c27fcde002605b2d0a  gcc/testsuite/gcc.target/powerpc/sse-shufps-1.c
! 3422c90ea140e1a6ab1c02b893147e40  gcc/testsuite/gcc.target/powerpc/sse-sqrtps-1.c
! 465fc71201ab4a69970410d6d24d87f2  gcc/testsuite/gcc.target/powerpc/sse-subps-1.c
! 0d21c1f3d40692a7837ad9a724a55f7b  gcc/testsuite/gcc.target/powerpc/sse-subss-1.c
! 100583dde89eae6a9e0f2884478e49af  gcc/testsuite/gcc.target/powerpc/sse-ucomiss-1.c
! 4f348debf66f354158dcd969af808ba2  gcc/testsuite/gcc.target/powerpc/sse-ucomiss-2.c
! b337db165e2849ccd554032634beba1c  gcc/testsuite/gcc.target/powerpc/sse-ucomiss-3.c
! f3d98abd9328c0adf1ad754f23e49dad  gcc/testsuite/gcc.target/powerpc/sse-ucomiss-4.c
! e2e6cf06b80dfe140d038754e1450d68  gcc/testsuite/gcc.target/powerpc/sse-ucomiss-5.c
! b4c3b1e8869232e3e868b16465231aae  gcc/testsuite/gcc.target/powerpc/sse-ucomiss-6.c
! e89c5b60f315f79400476a84c3c049b0  gcc/testsuite/gcc.target/powerpc/sse-unpckhps-1.c
! 2102738a9aea6923694754df09b7b432  gcc/testsuite/gcc.target/powerpc/sse-unpcklps-1.c
! ed6e4ba8dc32c942fdd52ed8286d825c  gcc/testsuite/gcc.target/powerpc/sse-xorps-1.c
! d637c97ab608ed4c3a5e9530e4f7e950  gcc/testsuite/gcc.target/powerpc/sse2-addpd-1.c
! fbd95529a2924101c9a54f8e90e79a9f  gcc/testsuite/gcc.target/powerpc/sse2-addsd-1.c
! a50887f499263c3f705ddcf0fa2ff1be  gcc/testsuite/gcc.target/powerpc/sse2-andnpd-1.c
! 18fc7cf74aca443f3edda17c75082dc4  gcc/testsuite/gcc.target/powerpc/sse2-andpd-1.c
! 190e59d99808d4836c287c969d2e4066  gcc/testsuite/gcc.target/powerpc/sse2-check.h
! 6095d60eb87b6af206c972ec54fa7e1f  gcc/testsuite/gcc.target/powerpc/sse2-cmppd-1.c
! 619d0c84324deb7de793f4a782e361fe  gcc/testsuite/gcc.target/powerpc/sse2-cmpsd-1.c
! c4df083ddac0ee30c8d064d0dd4f42a8  gcc/testsuite/gcc.target/powerpc/sse2-comisd-1.c
! 8e996de2d7d836cddcbd1510cdbff53f  gcc/testsuite/gcc.target/powerpc/sse2-comisd-2.c
! 2fc397444e5366052c6bdf99659e99b0  gcc/testsuite/gcc.target/powerpc/sse2-comisd-3.c
! 05ee0c85bcb503d1f5dae174dc1bebf4  gcc/testsuite/gcc.target/powerpc/sse2-comisd-4.c
! fee07d9a7bf94d263e87924d3b03ab1d  gcc/testsuite/gcc.target/powerpc/sse2-comisd-5.c
! 378ede965cdc1e4a8ca7954873ad1e73  gcc/testsuite/gcc.target/powerpc/sse2-comisd-6.c
! 572035695e3aa733a7449e7f15c88c36  gcc/testsuite/gcc.target/powerpc/sse2-cvtdq2pd-1.c
! 6bb388b778f92d8e288a616174088a56  gcc/testsuite/gcc.target/powerpc/sse2-cvtdq2ps-1.c
! aac96e0569d390704f897d01ea9e70c4  gcc/testsuite/gcc.target/powerpc/sse2-cvtpd2dq-1.c
! 3b7e9e880f6c21296a147978cc63a2c5  gcc/testsuite/gcc.target/powerpc/sse2-cvtpd2ps-1.c
! bb62a656329894e4f953374bf35728ad  gcc/testsuite/gcc.target/powerpc/sse2-cvtps2dq-1.c
! 3ec2dcbb87c5b220ec12ef52261dbc72  gcc/testsuite/gcc.target/powerpc/sse2-cvtps2pd-1.c
! 5e5fd9813ac191fca0fa6c05cfc8f67b  gcc/testsuite/gcc.target/powerpc/sse2-cvtsd2si-1.c
! a7b2699df8affce148084a988c591b80  gcc/testsuite/gcc.target/powerpc/sse2-cvtsd2si-2.c
! 0cb558eedaa379e036d4848ebc0c3c5e  gcc/testsuite/gcc.target/powerpc/sse2-cvtsd2ss-1.c
! 9200b718c109b63eb2405b3c1e2c0225  gcc/testsuite/gcc.target/powerpc/sse2-cvtsi2sd-1.c
! c42f00b2ccb8c595d7c201bb81c43560  gcc/testsuite/gcc.target/powerpc/sse2-cvtsi2sd-2.c
! 71d7c01006a0c4fd79cc398ade1987b1  gcc/testsuite/gcc.target/powerpc/sse2-cvtss2sd-1.c
! 04b6fac03efe8570f933befee749c240  gcc/testsuite/gcc.target/powerpc/sse2-cvttpd2dq-1.c
! 6f0178f8e7344b74c0d7581590550506  gcc/testsuite/gcc.target/powerpc/sse2-cvttps2dq-1.c
! 7ce2ab5db9062fd80fa25bf57bfaa325  gcc/testsuite/gcc.target/powerpc/sse2-cvttsd2si-1.c
! 7081d12fb305bf7435ca09f12e2e5810  gcc/testsuite/gcc.target/powerpc/sse2-cvttsd2si-2.c
! 04af07cab5448a55c553f91d65c7fea2  gcc/testsuite/gcc.target/powerpc/sse2-divpd-1.c
! 63fd8869d3be100286a4dc20bd1b31cc  gcc/testsuite/gcc.target/powerpc/sse2-divsd-1.c
! a84a47a8925e695174b10c83520f8d46  gcc/testsuite/gcc.target/powerpc/sse2-maxpd-1.c
! 381d5fd4643c83c93e77c2ff52d9192b  gcc/testsuite/gcc.target/powerpc/sse2-maxsd-1.c
! 1cb60e722c90e6f1f56ac6d07b1fd4c5  gcc/testsuite/gcc.target/powerpc/sse2-minpd-1.c
! 08ee978dfff86db947f9b962f4c5b97c  gcc/testsuite/gcc.target/powerpc/sse2-minsd-1.c
! 144af6e5f3685dd15e9d7913bbfef404  gcc/testsuite/gcc.target/powerpc/sse2-mmx.c
! a3f04d697110de0dbbab5c99c037ffa2  gcc/testsuite/gcc.target/powerpc/sse2-movhpd-1.c
! bbe5b7ab3c433993658d3309121238b5  gcc/testsuite/gcc.target/powerpc/sse2-movhpd-2.c
! 5d84485a9317f8c200305e7eec26b425  gcc/testsuite/gcc.target/powerpc/sse2-movlpd-1.c
! ddd7ca30fafd3c262e4152947bbd9d44  gcc/testsuite/gcc.target/powerpc/sse2-movlpd-2.c
! 9c050a6e4e9408cfb108b88f5500b1b9  gcc/testsuite/gcc.target/powerpc/sse2-movmskpd-1.c
! b5b909ce9135567fe7b2d0e0ab1f50fd  gcc/testsuite/gcc.target/powerpc/sse2-movq-1.c
! e1152322f45ced5d3ff020143b9271a0  gcc/testsuite/gcc.target/powerpc/sse2-movq-2.c
! eb83fb917dd98594d2fda37839622da4  gcc/testsuite/gcc.target/powerpc/sse2-movq-3.c
! b62e4ae016be33bdb9eb28c02dfa67a5  gcc/testsuite/gcc.target/powerpc/sse2-movsd-1.c
! e78455fadbed865241a892c062999846  gcc/testsuite/gcc.target/powerpc/sse2-movsd-2.c
! 9551837d549216985b8226fbd100e6a9  gcc/testsuite/gcc.target/powerpc/sse2-movsd-3.c
! 4e566f5e0605167e43571d0799638dba  gcc/testsuite/gcc.target/powerpc/sse2-mulpd-1.c
! a922bdaa5036861cdafde58d4c1e0a2f  gcc/testsuite/gcc.target/powerpc/sse2-mulsd-1.c
! 2f3e611a482a31f1de1d4e27113f12fc  gcc/testsuite/gcc.target/powerpc/sse2-orpd-1.c
! c63c579b9ee5f306014ac1f7de6541a0  gcc/testsuite/gcc.target/powerpc/sse2-packssdw-1.c
! 7fd47171a6ebb9b98cfb7098f98cc370  gcc/testsuite/gcc.target/powerpc/sse2-packsswb-1.c
! 899628b0346d7b8c14b5fcbddf49f5ee  gcc/testsuite/gcc.target/powerpc/sse2-packuswb-1.c
! f2450a8ee987d7523b9274ab937262a5  gcc/testsuite/gcc.target/powerpc/sse2-paddb-1.c
! 1fe84fc8c0bcdcfbdd38ab777cb8abc0  gcc/testsuite/gcc.target/powerpc/sse2-paddd-1.c
! 68e98a3688c015297cafbc80cd426fc6  gcc/testsuite/gcc.target/powerpc/sse2-paddq-1.c
! 23900eb4a3ddb92cbe71b95fe128a791  gcc/testsuite/gcc.target/powerpc/sse2-paddsb-1.c
! 360f33af27371410eb1c713ab93bfff8  gcc/testsuite/gcc.target/powerpc/sse2-paddsw-1.c
! 718172ba4e27ad542bff70d81fcf427e  gcc/testsuite/gcc.target/powerpc/sse2-paddusb-1.c
! fcc583602799bfb629147387e9d29761  gcc/testsuite/gcc.target/powerpc/sse2-paddusw-1.c
! c570bd96dc10104d2fbb6b8f8d987d7a  gcc/testsuite/gcc.target/powerpc/sse2-paddw-1.c
! 3ab32a82b018000fd889432c5a3bc2b5  gcc/testsuite/gcc.target/powerpc/sse2-pavgb-1.c
! d4e19449f213aedcae4c8a44d27d119f  gcc/testsuite/gcc.target/powerpc/sse2-pavgw-1.c
! 94bc7bd5b7c56d66b1c7993181c6b933  gcc/testsuite/gcc.target/powerpc/sse2-pcmpeqb-1.c
! d7d048a29835c5cb5c1adc3bbe0699d0  gcc/testsuite/gcc.target/powerpc/sse2-pcmpeqd-1.c
! a72ac2f1ab7dd25f702303893071f27f  gcc/testsuite/gcc.target/powerpc/sse2-pcmpeqw-1.c
! 00f4af51608c132ed86832125010f7f3  gcc/testsuite/gcc.target/powerpc/sse2-pcmpgtb-1.c
! 0f2f796a2df799d73f8602850f954bcb  gcc/testsuite/gcc.target/powerpc/sse2-pcmpgtd-1.c
! ed5ceb9b9d74848fae1dfb4e71852b5f  gcc/testsuite/gcc.target/powerpc/sse2-pcmpgtw-1.c
! fa3d08f05c0e7f24cc43fa25b8588089  gcc/testsuite/gcc.target/powerpc/sse2-pextrw.c
! 3efa5f29e231104c802cd9318ebc3a6c  gcc/testsuite/gcc.target/powerpc/sse2-pinsrw.c
! 26baa0161bdf406024fa095201f34746  gcc/testsuite/gcc.target/powerpc/sse2-pmaddwd-1.c
! f89a7f46c32310bc6cb0ae0b59d1ff58  gcc/testsuite/gcc.target/powerpc/sse2-pmaxsw-1.c
! ad2ed8b969d4bbbcf506d81ca613b796  gcc/testsuite/gcc.target/powerpc/sse2-pmaxub-1.c
! 49552fa8e17e29205898de1be3c3df4a  gcc/testsuite/gcc.target/powerpc/sse2-pminsw-1.c
! f63038eaba7b6c9742b21aedfefc0089  gcc/testsuite/gcc.target/powerpc/sse2-pminub-1.c
! 4913577c440e4529b232c4612956fc6d  gcc/testsuite/gcc.target/powerpc/sse2-pmovmskb-1.c
! a330979b93021fcc09d9438776be46f2  gcc/testsuite/gcc.target/powerpc/sse2-pmulhuw-1.c
! f0bd64b900bee234ffd5ffc79b0f3587  gcc/testsuite/gcc.target/powerpc/sse2-pmulhw-1.c
! 80e1afca4c36cb309e03089ecc199780  gcc/testsuite/gcc.target/powerpc/sse2-pmullw-1.c
! 5fc7559457d395cc0d586088af007ca4  gcc/testsuite/gcc.target/powerpc/sse2-pmuludq-1.c
! b9220e1c3893845d46718606d9f2a4c2  gcc/testsuite/gcc.target/powerpc/sse2-psadbw-1.c
! 3c84471507e2e648dee7beb6e53ff57b  gcc/testsuite/gcc.target/powerpc/sse2-pshufd-1.c
! c667e5e0ae373518d12a3609d33cb30e  gcc/testsuite/gcc.target/powerpc/sse2-pshufhw-1.c
! a3412f494969e9be680204b1638e713e  gcc/testsuite/gcc.target/powerpc/sse2-pshuflw-1.c
! 48b62a99e6a554516e27f3513eb4fbd0  gcc/testsuite/gcc.target/powerpc/sse2-pslld-1.c
! 79ce8b6082c362317ff079680191b7bb  gcc/testsuite/gcc.target/powerpc/sse2-pslld-2.c
! aaa0e008aeb8bc06372b7186d8e9c305  gcc/testsuite/gcc.target/powerpc/sse2-pslldq-1.c
! 0a8a92da9da8d72eee284a0fbbacf3c9  gcc/testsuite/gcc.target/powerpc/sse2-psllq-1.c
! 1ae3b97510a2a31bbb9c847a117563f6  gcc/testsuite/gcc.target/powerpc/sse2-psllq-2.c
! 6ad6b0615ce0362eba709361ea0b7e52  gcc/testsuite/gcc.target/powerpc/sse2-psllw-1.c
! 3527a42324df885ecf89afbee0f712fc  gcc/testsuite/gcc.target/powerpc/sse2-psllw-2.c
! 1e6c16ea97ee824b535bfcc44e7e1683  gcc/testsuite/gcc.target/powerpc/sse2-psrad-1.c
! 3d6bb68007e123683665e8694de47c62  gcc/testsuite/gcc.target/powerpc/sse2-psrad-2.c
! afc01f55db486765b409b72190f3a570  gcc/testsuite/gcc.target/powerpc/sse2-psraw-1.c
! 66e85009720ae93aa8e2b407989c5303  gcc/testsuite/gcc.target/powerpc/sse2-psraw-2.c
! 51fb7a7c4542250ac8e28272fd9a7b47  gcc/testsuite/gcc.target/powerpc/sse2-psrld-1.c
! f3bde897c23507cb6227e286dd8d078a  gcc/testsuite/gcc.target/powerpc/sse2-psrld-2.c
! f147a0d8913af213b8f9296700f5615d  gcc/testsuite/gcc.target/powerpc/sse2-psrldq-1.c
! 8bd589e234934f7c43fe8fae91983b74  gcc/testsuite/gcc.target/powerpc/sse2-psrlq-1.c
! 593529f54f973353ea5f9dd46daedef3  gcc/testsuite/gcc.target/powerpc/sse2-psrlq-2.c
! 40e0ffcbba1cf0bd5405615c76da2e66  gcc/testsuite/gcc.target/powerpc/sse2-psrlw-1.c
! f63c3d0ab9f45631cb31775d5e52e7d7  gcc/testsuite/gcc.target/powerpc/sse2-psrlw-2.c
! e818cbb72a0a81fbf0e25b63f334de88  gcc/testsuite/gcc.target/powerpc/sse2-psubb-1.c
! 31a3d00afa11adf0975ce0b6f5371204  gcc/testsuite/gcc.target/powerpc/sse2-psubd-1.c
! 1fb4e9db5fa2cd7f3ac1b37ff4f60060  gcc/testsuite/gcc.target/powerpc/sse2-psubq-1.c
! c1e867b10aeff1d4d85415f976f11074  gcc/testsuite/gcc.target/powerpc/sse2-psubsb-1.c
! abdbbf9ddd1b647a8ac10a9e9fb1c5cc  gcc/testsuite/gcc.target/powerpc/sse2-psubsw-1.c
! f4c5155c07b2bbc0f151393474385cb0  gcc/testsuite/gcc.target/powerpc/sse2-psubusb-1.c
! 2912a2433bb1eb958c4931e78f84ad33  gcc/testsuite/gcc.target/powerpc/sse2-psubusw-1.c
! 60ee2e1a88c65bb7b7f4d84eaa29f659  gcc/testsuite/gcc.target/powerpc/sse2-psubw-1.c
! 4096d2c56b500445d28666b5b429491c  gcc/testsuite/gcc.target/powerpc/sse2-punpckhbw-1.c
! dbbf68783743a7c2e019e11492afa0d4  gcc/testsuite/gcc.target/powerpc/sse2-punpckhdq-1.c
! 207d725c2aa52cb9da4c5c5ebef21bbd  gcc/testsuite/gcc.target/powerpc/sse2-punpckhqdq-1.c
! 10d90e960a9004d5079485ca739a45dc  gcc/testsuite/gcc.target/powerpc/sse2-punpckhwd-1.c
! 18655bcbc9d4ee02d2f343fe0b8cee9c  gcc/testsuite/gcc.target/powerpc/sse2-punpcklbw-1.c
! 65ee89fad55b383a9e5e28d8659102cf  gcc/testsuite/gcc.target/powerpc/sse2-punpckldq-1.c
! bc6dcc7b66fe17025513909ffeb9189c  gcc/testsuite/gcc.target/powerpc/sse2-punpcklqdq-1.c
! a03575d3b5bacef28b4283d321295281  gcc/testsuite/gcc.target/powerpc/sse2-punpcklwd-1.c
! 2b34ebe1ded30b655fce71ae1fb5e5a9  gcc/testsuite/gcc.target/powerpc/sse2-shufpd-1.c
! 24c078a62a6600e27de601d724cc4e02  gcc/testsuite/gcc.target/powerpc/sse2-sqrtpd-1.c
! 94de27cf58096e1f8cc4d1a0238581e9  gcc/testsuite/gcc.target/powerpc/sse2-subpd-1.c
! 42ac6c3f657a0f2e7afa34522d4e894e  gcc/testsuite/gcc.target/powerpc/sse2-subsd-1.c
! 87b5860c4d8a06a36cea308f98d6ab1d  gcc/testsuite/gcc.target/powerpc/sse2-ucomisd-1.c
! bb0c5a875adcbc65ee9cdca5f4a2c772  gcc/testsuite/gcc.target/powerpc/sse2-ucomisd-2.c
! a226de552e0f4de7b4cbb4686a508c86  gcc/testsuite/gcc.target/powerpc/sse2-ucomisd-3.c
! 4204e978121d2fdad307a655c84e8ec7  gcc/testsuite/gcc.target/powerpc/sse2-ucomisd-4.c
! fc6c4639a884cd2e95ed73c9119a86f9  gcc/testsuite/gcc.target/powerpc/sse2-ucomisd-5.c
! 628bf8f0193ca00a7f929e51a79cc6f8  gcc/testsuite/gcc.target/powerpc/sse2-ucomisd-6.c
! 56560db6e6921f24c23671e7dd6a00c2  gcc/testsuite/gcc.target/powerpc/sse2-unpckhpd-1.c
! e35651111f46b8456024a97df88e8c67  gcc/testsuite/gcc.target/powerpc/sse2-unpcklpd-1.c
! f420517d07cdb4deff1e9937f6e5d432  gcc/testsuite/gcc.target/powerpc/sse2-xorpd-1.c
  c4da621e2f792bd21112c40ff73a206d  gcc/testsuite/gcc.target/powerpc/ssp-1.c
  28df2b90767c1ab9ffd06127b47b30f9  gcc/testsuite/gcc.target/powerpc/ssp-2.c
  c9be7e0cc9ba390460928b1de506fa70  gcc/testsuite/gcc.target/powerpc/stabs-attrib-vect-darwin.c
*************** c891211b25d5266010cad8266c02fe3c  gcc/te
*** 47042,47063 ****
  8cb758ec48a4fd3447970d6f85159dea  gcc/testsuite/gcc.target/powerpc/swaps-p8-23.c
  99bc5494b60bcbe35a2499e7bc74a125  gcc/testsuite/gcc.target/powerpc/swaps-p8-24.c
  a2e47a22218959dff98bce634778ac59  gcc/testsuite/gcc.target/powerpc/swaps-p8-25.c
! 6a3e75b25610f78efa0cbd974726d1df  gcc/testsuite/gcc.target/powerpc/swaps-p8-26.c
  6fe65c4dc12e9e595c44e7bbf8f65dea  gcc/testsuite/gcc.target/powerpc/swaps-p8-27.c
  84237fc0555dd56c639a0274a8f4dbde  gcc/testsuite/gcc.target/powerpc/swaps-p8-3.c
  0df14a19fd6ee081105fc2b90003a0b4  gcc/testsuite/gcc.target/powerpc/swaps-p8-4.c
  26517c689d143f1397c457beaff12ae6  gcc/testsuite/gcc.target/powerpc/swaps-p8-5.c
  0822c3753f3d5eb389f4e197f60558d9  gcc/testsuite/gcc.target/powerpc/swaps-p8-6.c
  b8cea10d187ee0ff03310bf53b54d85e  gcc/testsuite/gcc.target/powerpc/swaps-p8-7.c
  ce6b26ef67ffe555b789e4205dc2e809  gcc/testsuite/gcc.target/powerpc/swaps-p8-8.c
  8abb62ec1d013c705390c6c55084378d  gcc/testsuite/gcc.target/powerpc/swaps-p8-9.c
  f138cfa6e387e1bc85747da2fc38e305  gcc/testsuite/gcc.target/powerpc/swaps-stack-protector.c
! fab68b66029b2b5783a7c4764ceb0280  gcc/testsuite/gcc.target/powerpc/tfmode_off.c
  c2edbb1afba546ea3ac8a5efcaca9c38  gcc/testsuite/gcc.target/powerpc/ti_math1.c
  c3d0d51284479d220a6166a0f362536c  gcc/testsuite/gcc.target/powerpc/ti_math2.c
! d1f9b55044b5c80d668c846e0f160115  gcc/testsuite/gcc.target/powerpc/timode_off.c
! fe21d9465e0313b29a24703b2cef2b7e  gcc/testsuite/gcc.target/powerpc/upper-regs-df.c
! 7f45b205e570d7d45266076bd4fd4f4c  gcc/testsuite/gcc.target/powerpc/upper-regs-sf.c
  fe1198a185fcf0cf3c192cb7e0f554af  gcc/testsuite/gcc.target/powerpc/vadsdu-0.c
  0623613fbcbc6fa96d28c319582034e3  gcc/testsuite/gcc.target/powerpc/vadsdu-1.c
  9ee678d38841407e553ad5d916841cbd  gcc/testsuite/gcc.target/powerpc/vadsdu-2.c
--- 50436,50477 ----
  8cb758ec48a4fd3447970d6f85159dea  gcc/testsuite/gcc.target/powerpc/swaps-p8-23.c
  99bc5494b60bcbe35a2499e7bc74a125  gcc/testsuite/gcc.target/powerpc/swaps-p8-24.c
  a2e47a22218959dff98bce634778ac59  gcc/testsuite/gcc.target/powerpc/swaps-p8-25.c
! 322df4f528943df51411f1909557ca66  gcc/testsuite/gcc.target/powerpc/swaps-p8-26.c
  6fe65c4dc12e9e595c44e7bbf8f65dea  gcc/testsuite/gcc.target/powerpc/swaps-p8-27.c
+ 64e98c37f3ca7e393c50dd085f3b1643  gcc/testsuite/gcc.target/powerpc/swaps-p8-28.c
+ 6ca8423a31c249f3d5f985a8083f58a2  gcc/testsuite/gcc.target/powerpc/swaps-p8-29.c
  84237fc0555dd56c639a0274a8f4dbde  gcc/testsuite/gcc.target/powerpc/swaps-p8-3.c
+ 67dc561eb35ef155625e3db05918faa4  gcc/testsuite/gcc.target/powerpc/swaps-p8-30.c
+ 5cd1f51fb8e75b9e30ef965b3f07882c  gcc/testsuite/gcc.target/powerpc/swaps-p8-31.c
+ 956a74984bf8cc306d298661ba586b62  gcc/testsuite/gcc.target/powerpc/swaps-p8-32.c
+ 8b42a8a41c15991d82d6d20a4f2cc2c6  gcc/testsuite/gcc.target/powerpc/swaps-p8-33.c
+ 1754ceb3cd48b859618244cfcf8ede47  gcc/testsuite/gcc.target/powerpc/swaps-p8-34.c
+ 84d3644b8ae514d85c261abacd4df0b9  gcc/testsuite/gcc.target/powerpc/swaps-p8-35.c
+ 263cbd768cdabf3a92cafd567cd52a79  gcc/testsuite/gcc.target/powerpc/swaps-p8-36.c
+ d806816076579a907c81c2ffc5768f2e  gcc/testsuite/gcc.target/powerpc/swaps-p8-37.c
+ 0b3c798bfd848700513232ca4baadb20  gcc/testsuite/gcc.target/powerpc/swaps-p8-38.c
+ cd496a66273906c2c7e2fb202e1fae8b  gcc/testsuite/gcc.target/powerpc/swaps-p8-39.c
  0df14a19fd6ee081105fc2b90003a0b4  gcc/testsuite/gcc.target/powerpc/swaps-p8-4.c
+ 210ac6c8a9f9b630914035e125ad5ef9  gcc/testsuite/gcc.target/powerpc/swaps-p8-40.c
+ c1c3dc68a6487f4589b66366d53b8283  gcc/testsuite/gcc.target/powerpc/swaps-p8-41.c
+ d3ad61e688023b761e93031d0b5969d2  gcc/testsuite/gcc.target/powerpc/swaps-p8-42.c
+ b4c9bbd51c532fca7933cd8f54d9a2a5  gcc/testsuite/gcc.target/powerpc/swaps-p8-43.c
+ 46369a57f4d52d7479ddf3b27660bbc4  gcc/testsuite/gcc.target/powerpc/swaps-p8-44.c
+ b61426bd96256938389e3397939e2d79  gcc/testsuite/gcc.target/powerpc/swaps-p8-45.c
+ d67cbfac4392dc796baa96af78236b3f  gcc/testsuite/gcc.target/powerpc/swaps-p8-46.c
  26517c689d143f1397c457beaff12ae6  gcc/testsuite/gcc.target/powerpc/swaps-p8-5.c
  0822c3753f3d5eb389f4e197f60558d9  gcc/testsuite/gcc.target/powerpc/swaps-p8-6.c
  b8cea10d187ee0ff03310bf53b54d85e  gcc/testsuite/gcc.target/powerpc/swaps-p8-7.c
  ce6b26ef67ffe555b789e4205dc2e809  gcc/testsuite/gcc.target/powerpc/swaps-p8-8.c
  8abb62ec1d013c705390c6c55084378d  gcc/testsuite/gcc.target/powerpc/swaps-p8-9.c
  f138cfa6e387e1bc85747da2fc38e305  gcc/testsuite/gcc.target/powerpc/swaps-stack-protector.c
! 5c3fdb0f9a583053d2e26ed8b1626207  gcc/testsuite/gcc.target/powerpc/tfmode_off.c
  c2edbb1afba546ea3ac8a5efcaca9c38  gcc/testsuite/gcc.target/powerpc/ti_math1.c
  c3d0d51284479d220a6166a0f362536c  gcc/testsuite/gcc.target/powerpc/ti_math2.c
! 7575745afcdc61f7a986b099e4ae2c34  gcc/testsuite/gcc.target/powerpc/timode_off.c
! a14c591e58bf3694825ea4225ad99294  gcc/testsuite/gcc.target/powerpc/undef-bool-2.c
! 9093b56a583f3d138f67d9f3abe56e03  gcc/testsuite/gcc.target/powerpc/upper-regs-df.c
! e1df009178cfaca93ae0610bea364053  gcc/testsuite/gcc.target/powerpc/upper-regs-sf.c
  fe1198a185fcf0cf3c192cb7e0f554af  gcc/testsuite/gcc.target/powerpc/vadsdu-0.c
  0623613fbcbc6fa96d28c319582034e3  gcc/testsuite/gcc.target/powerpc/vadsdu-1.c
  9ee678d38841407e553ad5d916841cbd  gcc/testsuite/gcc.target/powerpc/vadsdu-2.c
*************** f89bc692aa33f0a854308215a8c5a45c  gcc/te
*** 47075,47094 ****
  422d9e88f8edf200d9d0df63d8ee7f6b  gcc/testsuite/gcc.target/powerpc/vec-addec-int128.c
  182ec0a62dc1280101f06641c08f7cb2  gcc/testsuite/gcc.target/powerpc/vec-addec.c
  6359ddccab89d64974aacae92509fc9e  gcc/testsuite/gcc.target/powerpc/vec-cg.c
! 4137a1d7e936bac5292a51f907266de1  gcc/testsuite/gcc.target/powerpc/vec-cmp-sel.c
! 2d193a6a4c276dd8b48c488c547c2063  gcc/testsuite/gcc.target/powerpc/vec-cmp.c
! 141e066227a8aec69accfef543319e28  gcc/testsuite/gcc.target/powerpc/vec-cmpne-long.c
  1c31aae0733209346937e6b2d6369020  gcc/testsuite/gcc.target/powerpc/vec-cmpne.c
  f60cfb65abc87ba5727c12a22c87de01  gcc/testsuite/gcc.target/powerpc/vec-constvolatile.c
! 33a5579e09be6d029f97773d84839a31  gcc/testsuite/gcc.target/powerpc/vec-extract-1.c
! e0ad524c10740bb81960dfd2b8e3c6b9  gcc/testsuite/gcc.target/powerpc/vec-extract-2.c
! 4b3f561ec70539214231b4b4489104ea  gcc/testsuite/gcc.target/powerpc/vec-extract-3.c
! 161c9d47ca843516d90781efb946e691  gcc/testsuite/gcc.target/powerpc/vec-extract-4.c
! e1d0f48ef3f5ad5024aa68b2846ceab4  gcc/testsuite/gcc.target/powerpc/vec-extract-5.c
! 47d9b661200608385ffaaccea58fc4d1  gcc/testsuite/gcc.target/powerpc/vec-extract-6.c
! 2d50edc7d6c2af7c695bdafc06d15556  gcc/testsuite/gcc.target/powerpc/vec-extract-7.c
! e3fefbaf3ebb589e2ccc28b73788df22  gcc/testsuite/gcc.target/powerpc/vec-extract-8.c
! fca76fdfa8cd69914a318fb873bc4e4a  gcc/testsuite/gcc.target/powerpc/vec-extract-9.c
  54b4e79e3e68990bbb35785a9baebefe  gcc/testsuite/gcc.target/powerpc/vec-extract-v16qi-df.c
  17dc541115d43f98928aa98aec2e8966  gcc/testsuite/gcc.target/powerpc/vec-extract-v16qi.c
  fa4d484cedb3e830a8c4ed23fcac60f1  gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-df.c
--- 50489,50508 ----
  422d9e88f8edf200d9d0df63d8ee7f6b  gcc/testsuite/gcc.target/powerpc/vec-addec-int128.c
  182ec0a62dc1280101f06641c08f7cb2  gcc/testsuite/gcc.target/powerpc/vec-addec.c
  6359ddccab89d64974aacae92509fc9e  gcc/testsuite/gcc.target/powerpc/vec-cg.c
! adcc53f70ca7a7b520048b1d3d9ac8d7  gcc/testsuite/gcc.target/powerpc/vec-cmp-sel.c
! c9863c6444f57d49ecd3d9f8731c84c4  gcc/testsuite/gcc.target/powerpc/vec-cmp.c
! fc88ecd1e352f2b01594d92863fdd2d6  gcc/testsuite/gcc.target/powerpc/vec-cmpne-long.c
  1c31aae0733209346937e6b2d6369020  gcc/testsuite/gcc.target/powerpc/vec-cmpne.c
  f60cfb65abc87ba5727c12a22c87de01  gcc/testsuite/gcc.target/powerpc/vec-constvolatile.c
! c570a18312b6235faa5e1a9101cabebd  gcc/testsuite/gcc.target/powerpc/vec-extract-1.c
! 3ba5a8b2f265a56bfead096ead537f00  gcc/testsuite/gcc.target/powerpc/vec-extract-2.c
! eeb2ec960f6054b62c4b3b189e0ccbff  gcc/testsuite/gcc.target/powerpc/vec-extract-3.c
! 2edeae7b8243417699814b1e881a75d3  gcc/testsuite/gcc.target/powerpc/vec-extract-4.c
! 967681dada6b6fc02d14fe5b07c88569  gcc/testsuite/gcc.target/powerpc/vec-extract-5.c
! 4c7d8a49695ed246d1e2832bb901bedf  gcc/testsuite/gcc.target/powerpc/vec-extract-6.c
! 1e56f0ea78871a273311a21548cf1a82  gcc/testsuite/gcc.target/powerpc/vec-extract-7.c
! a9588b44f59f602da82cabee09ec5c08  gcc/testsuite/gcc.target/powerpc/vec-extract-8.c
! 6e5ad8eedab2080d5180006b968c41a4  gcc/testsuite/gcc.target/powerpc/vec-extract-9.c
  54b4e79e3e68990bbb35785a9baebefe  gcc/testsuite/gcc.target/powerpc/vec-extract-v16qi-df.c
  17dc541115d43f98928aa98aec2e8966  gcc/testsuite/gcc.target/powerpc/vec-extract-v16qi.c
  fa4d484cedb3e830a8c4ed23fcac60f1  gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-df.c
*************** d3619153f5a9f9fda69607541f40a702  gcc/te
*** 47107,47132 ****
  a1d3f701c2464b01166a4e89754de1bb  gcc/testsuite/gcc.target/powerpc/vec-extract.h
  70e478e88e6cd64d5051fc9c33052849  gcc/testsuite/gcc.target/powerpc/vec-init-1.c
  5b5983b88d6e8ce870ee923e4c1a8e0e  gcc/testsuite/gcc.target/powerpc/vec-init-2.c
! 783b6141f45e0801eed70291e071ed3a  gcc/testsuite/gcc.target/powerpc/vec-init-3.c
  59820c385775b42530b45effe6f4cd95  gcc/testsuite/gcc.target/powerpc/vec-init-4.c
  d640c7442203d3640c0c3b90c7249e29  gcc/testsuite/gcc.target/powerpc/vec-init-5.c
! 77286ff26e4a9788bc1ec5da074f8b17  gcc/testsuite/gcc.target/powerpc/vec-init-6.c
! 5b0139c3dc03c5066902e9d22d3abcd7  gcc/testsuite/gcc.target/powerpc/vec-init-7.c
  7c6efaef9bc25c6c8e3ed16c192a20e7  gcc/testsuite/gcc.target/powerpc/vec-init-8.c
  a628c45aa79269366e26081d563ef685  gcc/testsuite/gcc.target/powerpc/vec-init-9.c
  360c8747370c9864a9f63909109c4c36  gcc/testsuite/gcc.target/powerpc/vec-mul.c
  8a3d5e23a1722a45edbaa43f5b3a54b5  gcc/testsuite/gcc.target/powerpc/vec-mult-char-1.c
  fa102cb45e48c286b356759209443dea  gcc/testsuite/gcc.target/powerpc/vec-mult-char-2.c
  e091bd72e4f1d4f30c1cae31bc637af8  gcc/testsuite/gcc.target/powerpc/vec-rlmi-rlnm.c
! 482b9b1b76b04a1d88ef2005c8cb3434  gcc/testsuite/gcc.target/powerpc/vec-set-char.c
! 45adb3d4e0f9fc3a3da3b6588fb0371d  gcc/testsuite/gcc.target/powerpc/vec-set-int.c
! f7f85077552bf213e30bf9933b67dbee  gcc/testsuite/gcc.target/powerpc/vec-set-short.c
  f61dde83045622013a9f854e004ebb31  gcc/testsuite/gcc.target/powerpc/vec-setup-be-double.c
! 3c3394dfdb1989129c715246de336ddc  gcc/testsuite/gcc.target/powerpc/vec-setup-be-long.c
  0f558496ddbe67d86ad3a904b74a9976  gcc/testsuite/gcc.target/powerpc/vec-setup-double.c
  4033d9346e564b4afb0c33b67995a199  gcc/testsuite/gcc.target/powerpc/vec-setup-long.c
  b64815bd648790f932a5ad69bfda140b  gcc/testsuite/gcc.target/powerpc/vec-setup.h
! bbd74596ca12fe9aac0347c6253db300  gcc/testsuite/gcc.target/powerpc/vec-shift.c
  8ee50015e788404267646adf1ac95972  gcc/testsuite/gcc.target/powerpc/vec-shr.c
  2f7d0faae17249a4c0239bf8d90e399a  gcc/testsuite/gcc.target/powerpc/vec-xxpermdi.c
  cfe95399d48da5db32fbce7f0c697a3c  gcc/testsuite/gcc.target/powerpc/versioned-copy-loop.c
--- 50521,50547 ----
  a1d3f701c2464b01166a4e89754de1bb  gcc/testsuite/gcc.target/powerpc/vec-extract.h
  70e478e88e6cd64d5051fc9c33052849  gcc/testsuite/gcc.target/powerpc/vec-init-1.c
  5b5983b88d6e8ce870ee923e4c1a8e0e  gcc/testsuite/gcc.target/powerpc/vec-init-2.c
! e3275ef4d506804db73e42be9b3a9cb3  gcc/testsuite/gcc.target/powerpc/vec-init-3.c
  59820c385775b42530b45effe6f4cd95  gcc/testsuite/gcc.target/powerpc/vec-init-4.c
  d640c7442203d3640c0c3b90c7249e29  gcc/testsuite/gcc.target/powerpc/vec-init-5.c
! 75c0ed5f4eda2667307226f625146788  gcc/testsuite/gcc.target/powerpc/vec-init-6.c
! 4f495245abe6a125e92200e515ad6db0  gcc/testsuite/gcc.target/powerpc/vec-init-7.c
  7c6efaef9bc25c6c8e3ed16c192a20e7  gcc/testsuite/gcc.target/powerpc/vec-init-8.c
  a628c45aa79269366e26081d563ef685  gcc/testsuite/gcc.target/powerpc/vec-init-9.c
+ e95008bad5edfab2ab0eb99d3fba6505  gcc/testsuite/gcc.target/powerpc/vec-ldl-1.c
  360c8747370c9864a9f63909109c4c36  gcc/testsuite/gcc.target/powerpc/vec-mul.c
  8a3d5e23a1722a45edbaa43f5b3a54b5  gcc/testsuite/gcc.target/powerpc/vec-mult-char-1.c
  fa102cb45e48c286b356759209443dea  gcc/testsuite/gcc.target/powerpc/vec-mult-char-2.c
  e091bd72e4f1d4f30c1cae31bc637af8  gcc/testsuite/gcc.target/powerpc/vec-rlmi-rlnm.c
! 6bfed254c787b2634db6d10f499992ba  gcc/testsuite/gcc.target/powerpc/vec-set-char.c
! 331348c01d2623f04581ce6b901f6d34  gcc/testsuite/gcc.target/powerpc/vec-set-int.c
! d91a153a89cf92086446dffaf2757ea3  gcc/testsuite/gcc.target/powerpc/vec-set-short.c
  f61dde83045622013a9f854e004ebb31  gcc/testsuite/gcc.target/powerpc/vec-setup-be-double.c
! 0232b9482413f88979c492e55ec47868  gcc/testsuite/gcc.target/powerpc/vec-setup-be-long.c
  0f558496ddbe67d86ad3a904b74a9976  gcc/testsuite/gcc.target/powerpc/vec-setup-double.c
  4033d9346e564b4afb0c33b67995a199  gcc/testsuite/gcc.target/powerpc/vec-setup-long.c
  b64815bd648790f932a5ad69bfda140b  gcc/testsuite/gcc.target/powerpc/vec-setup.h
! e7f078068765a3f68308819d9438c734  gcc/testsuite/gcc.target/powerpc/vec-shift.c
  8ee50015e788404267646adf1ac95972  gcc/testsuite/gcc.target/powerpc/vec-shr.c
  2f7d0faae17249a4c0239bf8d90e399a  gcc/testsuite/gcc.target/powerpc/vec-xxpermdi.c
  cfe95399d48da5db32fbce7f0c697a3c  gcc/testsuite/gcc.target/powerpc/versioned-copy-loop.c
*************** ece23438684739a98f7d08d31573dd40  gcc/te
*** 47155,47161 ****
  958809b1873a38c751050ece9b9c0ace  gcc/testsuite/gcc.target/powerpc/vsu/vec-all-nez-4.c
  05aec7e6dcf88aa4061587b3ec8b98be  gcc/testsuite/gcc.target/powerpc/vsu/vec-all-nez-5.c
  0ec32fdf4439dcad795387c605bbb86a  gcc/testsuite/gcc.target/powerpc/vsu/vec-all-nez-6.c
! 36b418ca6ff4bbfce8a95df2b250bd71  gcc/testsuite/gcc.target/powerpc/vsu/vec-all-nez-7.c
  b264a22a5b4d4e038739d5c486125f81  gcc/testsuite/gcc.target/powerpc/vsu/vec-any-eq-0.c
  a8b1c2e8be3284f9ebef2dc22f852398  gcc/testsuite/gcc.target/powerpc/vsu/vec-any-eq-1.c
  1d0d13c7a0903a50fad60a9acf368196  gcc/testsuite/gcc.target/powerpc/vsu/vec-any-eq-10.c
--- 50570,50576 ----
  958809b1873a38c751050ece9b9c0ace  gcc/testsuite/gcc.target/powerpc/vsu/vec-all-nez-4.c
  05aec7e6dcf88aa4061587b3ec8b98be  gcc/testsuite/gcc.target/powerpc/vsu/vec-all-nez-5.c
  0ec32fdf4439dcad795387c605bbb86a  gcc/testsuite/gcc.target/powerpc/vsu/vec-all-nez-6.c
! 146b9c4371b23269939ff9185223549d  gcc/testsuite/gcc.target/powerpc/vsu/vec-all-nez-7.c
  b264a22a5b4d4e038739d5c486125f81  gcc/testsuite/gcc.target/powerpc/vsu/vec-any-eq-0.c
  a8b1c2e8be3284f9ebef2dc22f852398  gcc/testsuite/gcc.target/powerpc/vsu/vec-any-eq-1.c
  1d0d13c7a0903a50fad60a9acf368196  gcc/testsuite/gcc.target/powerpc/vsu/vec-any-eq-10.c
*************** b7d8972a3d4c9729134bf51305860672  gcc/te
*** 47177,47190 ****
  03ebe00d93896bfa62da16428e1f650a  gcc/testsuite/gcc.target/powerpc/vsu/vec-any-eqz-4.c
  3f2fa112d592fef06727a3a5c323e483  gcc/testsuite/gcc.target/powerpc/vsu/vec-any-eqz-5.c
  ce78be42ada8cb6c6c016ad673f192c2  gcc/testsuite/gcc.target/powerpc/vsu/vec-any-eqz-6.c
! 3784923fa1669cc79593742dc8ed783e  gcc/testsuite/gcc.target/powerpc/vsu/vec-any-eqz-7.c
! 225d86ed42490bc9ab18d4bb4d14340b  gcc/testsuite/gcc.target/powerpc/vsu/vec-cmpne-0.c
! 127fc090536772f85cb4164a75f1b62d  gcc/testsuite/gcc.target/powerpc/vsu/vec-cmpne-1.c
! 2284285984d82be8cca292a60eebfc9f  gcc/testsuite/gcc.target/powerpc/vsu/vec-cmpne-2.c
! 1612cf824ef64b8a8921b80f92605985  gcc/testsuite/gcc.target/powerpc/vsu/vec-cmpne-3.c
! 254a8d5f737fe32cdcfa169cb95b97e0  gcc/testsuite/gcc.target/powerpc/vsu/vec-cmpne-4.c
! 0d89dcbf7854a227f5a7fca68ab9e575  gcc/testsuite/gcc.target/powerpc/vsu/vec-cmpne-5.c
! 71e967d222216ace2c8f4ee2b6c7aa14  gcc/testsuite/gcc.target/powerpc/vsu/vec-cmpne-6.c
  b1ca4c7456ccaa1c1e59507a566406a1  gcc/testsuite/gcc.target/powerpc/vsu/vec-cmpne-8.c
  c6c94b1c9808598e8322bc9aaf291588  gcc/testsuite/gcc.target/powerpc/vsu/vec-cmpne-9.c
  9a3564243a035fd3dc0a0186e5066571  gcc/testsuite/gcc.target/powerpc/vsu/vec-cmpnez-1.c
--- 50592,50605 ----
  03ebe00d93896bfa62da16428e1f650a  gcc/testsuite/gcc.target/powerpc/vsu/vec-any-eqz-4.c
  3f2fa112d592fef06727a3a5c323e483  gcc/testsuite/gcc.target/powerpc/vsu/vec-any-eqz-5.c
  ce78be42ada8cb6c6c016ad673f192c2  gcc/testsuite/gcc.target/powerpc/vsu/vec-any-eqz-6.c
! df92b2d4b0527371e96a9ce2e6e1ea4a  gcc/testsuite/gcc.target/powerpc/vsu/vec-any-eqz-7.c
! 6e5f4aa34c0bc0c081b12b37498636e6  gcc/testsuite/gcc.target/powerpc/vsu/vec-cmpne-0.c
! 89ed6865a4dfef4338357fa26feb7993  gcc/testsuite/gcc.target/powerpc/vsu/vec-cmpne-1.c
! 0a6b798e5cde5f65d4a17762a3c75581  gcc/testsuite/gcc.target/powerpc/vsu/vec-cmpne-2.c
! ff1c064a5f9fa9e2601cc2b0b5492a8e  gcc/testsuite/gcc.target/powerpc/vsu/vec-cmpne-3.c
! ef59a22522d140f4bf19f54369d2fda9  gcc/testsuite/gcc.target/powerpc/vsu/vec-cmpne-4.c
! 5d7b8ada2503e73ee588df82edc86d63  gcc/testsuite/gcc.target/powerpc/vsu/vec-cmpne-5.c
! 0ca47464beee3313da1580432272e3a9  gcc/testsuite/gcc.target/powerpc/vsu/vec-cmpne-6.c
  b1ca4c7456ccaa1c1e59507a566406a1  gcc/testsuite/gcc.target/powerpc/vsu/vec-cmpne-8.c
  c6c94b1c9808598e8322bc9aaf291588  gcc/testsuite/gcc.target/powerpc/vsu/vec-cmpne-9.c
  9a3564243a035fd3dc0a0186e5066571  gcc/testsuite/gcc.target/powerpc/vsu/vec-cmpnez-1.c
*************** c01f6a6ddc6db3eaadb3b3b410fbd890  gcc/te
*** 47193,47211 ****
  8431bae684befa6db25ca1deba0f62ee  gcc/testsuite/gcc.target/powerpc/vsu/vec-cmpnez-4.c
  2d4ac5f686979b005cb0a755ede609e4  gcc/testsuite/gcc.target/powerpc/vsu/vec-cmpnez-5.c
  c1aad2a0ab892b351e5ad32d04421bf1  gcc/testsuite/gcc.target/powerpc/vsu/vec-cmpnez-6.c
! 1a0000df5c00bdc57d94e13a5161bdaf  gcc/testsuite/gcc.target/powerpc/vsu/vec-cmpnez-7.c
  b156295368db595b831693d73989bdd7  gcc/testsuite/gcc.target/powerpc/vsu/vec-cntlz-lsbb-0.c
  5ec63c94ab402c6a76aca14a3c163752  gcc/testsuite/gcc.target/powerpc/vsu/vec-cntlz-lsbb-1.c
! 85a2011d3bc2a61367ebc192dab39b95  gcc/testsuite/gcc.target/powerpc/vsu/vec-cntlz-lsbb-2.c
  9879386a1119b4c622a5149d09675f64  gcc/testsuite/gcc.target/powerpc/vsu/vec-cnttz-lsbb-0.c
  f782a1b690356b2335ad3f1b662d181f  gcc/testsuite/gcc.target/powerpc/vsu/vec-cnttz-lsbb-1.c
! 37ba479f410d5c3bfe0b3e9e8d016051  gcc/testsuite/gcc.target/powerpc/vsu/vec-cnttz-lsbb-2.c
  25d16a60b8cf39f9249058d4d583192d  gcc/testsuite/gcc.target/powerpc/vsu/vec-xl-len-0.c
  ac8fdaf2eea84cdecd60aba71cebbecd  gcc/testsuite/gcc.target/powerpc/vsu/vec-xl-len-1.c
  a94aaf1cdf432513639c30586acfca26  gcc/testsuite/gcc.target/powerpc/vsu/vec-xl-len-10.c
  bb3d620c5cdcbfb25ead17fff0428f5c  gcc/testsuite/gcc.target/powerpc/vsu/vec-xl-len-11.c
! 0ab3e81611d934249f8a443de45b7e05  gcc/testsuite/gcc.target/powerpc/vsu/vec-xl-len-12.c
! 4a970740a9f47113c7227f10c2556ddd  gcc/testsuite/gcc.target/powerpc/vsu/vec-xl-len-13.c
  ea8023476c736522b48a43a2d7b20003  gcc/testsuite/gcc.target/powerpc/vsu/vec-xl-len-2.c
  4fb495c7deade24b98571d4e251aec54  gcc/testsuite/gcc.target/powerpc/vsu/vec-xl-len-3.c
  f0fbbcb4af85f52c05921b199a1edafd  gcc/testsuite/gcc.target/powerpc/vsu/vec-xl-len-4.c
--- 50608,50626 ----
  8431bae684befa6db25ca1deba0f62ee  gcc/testsuite/gcc.target/powerpc/vsu/vec-cmpnez-4.c
  2d4ac5f686979b005cb0a755ede609e4  gcc/testsuite/gcc.target/powerpc/vsu/vec-cmpnez-5.c
  c1aad2a0ab892b351e5ad32d04421bf1  gcc/testsuite/gcc.target/powerpc/vsu/vec-cmpnez-6.c
! 9ad7954b71ef8edc9143ad5916ece2ef  gcc/testsuite/gcc.target/powerpc/vsu/vec-cmpnez-7.c
  b156295368db595b831693d73989bdd7  gcc/testsuite/gcc.target/powerpc/vsu/vec-cntlz-lsbb-0.c
  5ec63c94ab402c6a76aca14a3c163752  gcc/testsuite/gcc.target/powerpc/vsu/vec-cntlz-lsbb-1.c
! 410fdb60075d07ccef0c28d7c20186b5  gcc/testsuite/gcc.target/powerpc/vsu/vec-cntlz-lsbb-2.c
  9879386a1119b4c622a5149d09675f64  gcc/testsuite/gcc.target/powerpc/vsu/vec-cnttz-lsbb-0.c
  f782a1b690356b2335ad3f1b662d181f  gcc/testsuite/gcc.target/powerpc/vsu/vec-cnttz-lsbb-1.c
! bf3f52c9984400918e744de2e634ad4f  gcc/testsuite/gcc.target/powerpc/vsu/vec-cnttz-lsbb-2.c
  25d16a60b8cf39f9249058d4d583192d  gcc/testsuite/gcc.target/powerpc/vsu/vec-xl-len-0.c
  ac8fdaf2eea84cdecd60aba71cebbecd  gcc/testsuite/gcc.target/powerpc/vsu/vec-xl-len-1.c
  a94aaf1cdf432513639c30586acfca26  gcc/testsuite/gcc.target/powerpc/vsu/vec-xl-len-10.c
  bb3d620c5cdcbfb25ead17fff0428f5c  gcc/testsuite/gcc.target/powerpc/vsu/vec-xl-len-11.c
! 3154bb5ab7dcad189eacf2e82551c654  gcc/testsuite/gcc.target/powerpc/vsu/vec-xl-len-12.c
! cfdd709fad37a50cac4a5be7765bd680  gcc/testsuite/gcc.target/powerpc/vsu/vec-xl-len-13.c
  ea8023476c736522b48a43a2d7b20003  gcc/testsuite/gcc.target/powerpc/vsu/vec-xl-len-2.c
  4fb495c7deade24b98571d4e251aec54  gcc/testsuite/gcc.target/powerpc/vsu/vec-xl-len-3.c
  f0fbbcb4af85f52c05921b199a1edafd  gcc/testsuite/gcc.target/powerpc/vsu/vec-xl-len-4.c
*************** cceb173c0e8436f024b369aad7401ef1  gcc/te
*** 47221,47227 ****
  8e3331d77853a3a2641dd1e21b5445ff  gcc/testsuite/gcc.target/powerpc/vsu/vec-xlx-4.c
  6b9d101b4f47f6ec186e069a8d9db7f3  gcc/testsuite/gcc.target/powerpc/vsu/vec-xlx-5.c
  97b4c67a9f1721e1db1df7f0343a4f55  gcc/testsuite/gcc.target/powerpc/vsu/vec-xlx-6.c
! d964b549b262b49d17a1fd4d6fe6ff98  gcc/testsuite/gcc.target/powerpc/vsu/vec-xlx-7.c
  5318022a1e64e0d9604ec81ead0d851d  gcc/testsuite/gcc.target/powerpc/vsu/vec-xrx-0.c
  86b0d25486f9d3f690fa8647ad3eae3b  gcc/testsuite/gcc.target/powerpc/vsu/vec-xrx-1.c
  ebb361d1ca6bad7a6aa3286fd1cb3f61  gcc/testsuite/gcc.target/powerpc/vsu/vec-xrx-2.c
--- 50636,50642 ----
  8e3331d77853a3a2641dd1e21b5445ff  gcc/testsuite/gcc.target/powerpc/vsu/vec-xlx-4.c
  6b9d101b4f47f6ec186e069a8d9db7f3  gcc/testsuite/gcc.target/powerpc/vsu/vec-xlx-5.c
  97b4c67a9f1721e1db1df7f0343a4f55  gcc/testsuite/gcc.target/powerpc/vsu/vec-xlx-6.c
! 978d1717015833ac3a262e4209ecdff6  gcc/testsuite/gcc.target/powerpc/vsu/vec-xlx-7.c
  5318022a1e64e0d9604ec81ead0d851d  gcc/testsuite/gcc.target/powerpc/vsu/vec-xrx-0.c
  86b0d25486f9d3f690fa8647ad3eae3b  gcc/testsuite/gcc.target/powerpc/vsu/vec-xrx-1.c
  ebb361d1ca6bad7a6aa3286fd1cb3f61  gcc/testsuite/gcc.target/powerpc/vsu/vec-xrx-2.c
*************** f4d8b383b318d3ba3d9615a9d7b7b3a6  gcc/te
*** 47229,47241 ****
  3310b6e2ae1e0545fcd05fcd1bfc4b0d  gcc/testsuite/gcc.target/powerpc/vsu/vec-xrx-4.c
  a4beea406b6621154f47ad04903679cf  gcc/testsuite/gcc.target/powerpc/vsu/vec-xrx-5.c
  87544ce2b34399fe174e8cbcb26617cb  gcc/testsuite/gcc.target/powerpc/vsu/vec-xrx-6.c
! 8f24eec3394335de4c345df840e36b49  gcc/testsuite/gcc.target/powerpc/vsu/vec-xrx-7.c
  27ccfcae4457ef33331fe27ada8242b6  gcc/testsuite/gcc.target/powerpc/vsu/vec-xst-len-0.c
  afc2380b19212997fb36290608520124  gcc/testsuite/gcc.target/powerpc/vsu/vec-xst-len-1.c
  6bef7a4565134e8e9d18cedc8507ec09  gcc/testsuite/gcc.target/powerpc/vsu/vec-xst-len-10.c
  3ce52f7c3e376d32aa039bc1202ff5a2  gcc/testsuite/gcc.target/powerpc/vsu/vec-xst-len-11.c
! 61dc8786fc85854fe18a8378a8d3a108  gcc/testsuite/gcc.target/powerpc/vsu/vec-xst-len-12.c
! 19d3d3c91716eab03d578a46d1632f95  gcc/testsuite/gcc.target/powerpc/vsu/vec-xst-len-13.c
  f0528163d3f2787ef58fd1e06a0e2bbd  gcc/testsuite/gcc.target/powerpc/vsu/vec-xst-len-2.c
  318fff0970ca7e829979c0ea510f0cc2  gcc/testsuite/gcc.target/powerpc/vsu/vec-xst-len-3.c
  0aff2ce4b71c2855cc56f0dbe464ce2f  gcc/testsuite/gcc.target/powerpc/vsu/vec-xst-len-4.c
--- 50644,50656 ----
  3310b6e2ae1e0545fcd05fcd1bfc4b0d  gcc/testsuite/gcc.target/powerpc/vsu/vec-xrx-4.c
  a4beea406b6621154f47ad04903679cf  gcc/testsuite/gcc.target/powerpc/vsu/vec-xrx-5.c
  87544ce2b34399fe174e8cbcb26617cb  gcc/testsuite/gcc.target/powerpc/vsu/vec-xrx-6.c
! 7e6336a801a816c6493ca984fa558c95  gcc/testsuite/gcc.target/powerpc/vsu/vec-xrx-7.c
  27ccfcae4457ef33331fe27ada8242b6  gcc/testsuite/gcc.target/powerpc/vsu/vec-xst-len-0.c
  afc2380b19212997fb36290608520124  gcc/testsuite/gcc.target/powerpc/vsu/vec-xst-len-1.c
  6bef7a4565134e8e9d18cedc8507ec09  gcc/testsuite/gcc.target/powerpc/vsu/vec-xst-len-10.c
  3ce52f7c3e376d32aa039bc1202ff5a2  gcc/testsuite/gcc.target/powerpc/vsu/vec-xst-len-11.c
! 32dd0dcdecafbe3c023cd82e1e0f76b7  gcc/testsuite/gcc.target/powerpc/vsu/vec-xst-len-12.c
! 4fa64bb22a2d54bc3408e0e40b92aa84  gcc/testsuite/gcc.target/powerpc/vsu/vec-xst-len-13.c
  f0528163d3f2787ef58fd1e06a0e2bbd  gcc/testsuite/gcc.target/powerpc/vsu/vec-xst-len-2.c
  318fff0970ca7e829979c0ea510f0cc2  gcc/testsuite/gcc.target/powerpc/vsu/vec-xst-len-3.c
  0aff2ce4b71c2855cc56f0dbe464ce2f  gcc/testsuite/gcc.target/powerpc/vsu/vec-xst-len-4.c
*************** f0528163d3f2787ef58fd1e06a0e2bbd  gcc/te
*** 47244,47308 ****
  322a55cb84af973a00c5a3750ef08c4e  gcc/testsuite/gcc.target/powerpc/vsu/vec-xst-len-7.c
  415232ff7d42d45b489b5968120ad4cc  gcc/testsuite/gcc.target/powerpc/vsu/vec-xst-len-8.c
  96ef4a5ea4fce11b1b86e842a4455ebd  gcc/testsuite/gcc.target/powerpc/vsu/vec-xst-len-9.c
! c0e5b1d38588a8004b42aa28e765606d  gcc/testsuite/gcc.target/powerpc/vsu/vsu.exp
! 4ceb6855c2485b8644bf41d0692dce88  gcc/testsuite/gcc.target/powerpc/vsx-builtin-1.c
! 9e3c77c5253ece30391881a511c37067  gcc/testsuite/gcc.target/powerpc/vsx-builtin-2.c
! d6aef2cc5b6d426a696fad3f9bd0cf2c  gcc/testsuite/gcc.target/powerpc/vsx-builtin-3.c
! 6246ea29025c11b1b9f4c6b8d036cbc3  gcc/testsuite/gcc.target/powerpc/vsx-builtin-4.c
! acf95bd1a1e2b9b14c0640b45f2e75f5  gcc/testsuite/gcc.target/powerpc/vsx-builtin-5.c
! 0b61a376e7164778a523a0766df4ce6e  gcc/testsuite/gcc.target/powerpc/vsx-builtin-6.c
! aec0aad4ad9d1a50c30d68081c0f2184  gcc/testsuite/gcc.target/powerpc/vsx-builtin-7.c
! 88cd9f4d3675a8897d01117429ae8094  gcc/testsuite/gcc.target/powerpc/vsx-builtin-8.c
! 29415c0ab3cf79b03ca4a55fa764901b  gcc/testsuite/gcc.target/powerpc/vsx-extract-1.c
! ad77cf7854ac810c73e5ad0184232f20  gcc/testsuite/gcc.target/powerpc/vsx-extract-2.c
! e4ac7f141f61cf4cf8934fe3ee7cf407  gcc/testsuite/gcc.target/powerpc/vsx-extract-3.c
! 5d9954b1c4d0bad6c1879667cd5d5042  gcc/testsuite/gcc.target/powerpc/vsx-extract-4.c
! 1bd5c1e28ec364fdd845a9e6a7cf6aec  gcc/testsuite/gcc.target/powerpc/vsx-extract-5.c
  d7469557e85d85a69ef07fd54698e9ab  gcc/testsuite/gcc.target/powerpc/vsx-extract-6.c
  41e7ca8976b463f66edc46b546b64718  gcc/testsuite/gcc.target/powerpc/vsx-extract-7.c
! 91fc70d5de085e5b429a41f63786468c  gcc/testsuite/gcc.target/powerpc/vsx-float0.c
! 8082d80c41a30b86c76de9af46e820a4  gcc/testsuite/gcc.target/powerpc/vsx-himode.c
! 171658bcbc23affe71e4f623de4d01bd  gcc/testsuite/gcc.target/powerpc/vsx-himode2.c
! bb1c21411484f3d6418f599554aace07  gcc/testsuite/gcc.target/powerpc/vsx-himode3.c
! 806d8ee21f43a7de620d9a945b15ab80  gcc/testsuite/gcc.target/powerpc/vsx-mass-1.c
! 99bf10beba1935f46d18be242a8f6035  gcc/testsuite/gcc.target/powerpc/vsx-qimode.c
! bfb1a48c2104eb13d087d4c244a4b728  gcc/testsuite/gcc.target/powerpc/vsx-qimode2.c
! 9b9702e7029f87b4dace5f4e4e53c3df  gcc/testsuite/gcc.target/powerpc/vsx-qimode3.c
! 8d2bd0ea293adf62bd5e0f09d564632f  gcc/testsuite/gcc.target/powerpc/vsx-sfminmax.c
! 14017f0b8371fecf34c3d24fb313fea6  gcc/testsuite/gcc.target/powerpc/vsx-simode.c
! f2e63276a47d8f8b8b832297252ce292  gcc/testsuite/gcc.target/powerpc/vsx-simode2.c
! 7f224422603bcae78d207828373a75c2  gcc/testsuite/gcc.target/powerpc/vsx-simode3.c
! af342c50defde2d3bc67d77ec6beb0aa  gcc/testsuite/gcc.target/powerpc/vsx-vector-1.c
! 73400907aa7b9be93512269ee82b0415  gcc/testsuite/gcc.target/powerpc/vsx-vector-2.c
! 4a05f2cb2b0a410f90bff4713a58165f  gcc/testsuite/gcc.target/powerpc/vsx-vector-3.c
! 4ddb7eeffe7b9f8698918a3dbe8154ac  gcc/testsuite/gcc.target/powerpc/vsx-vector-4.c
! a7b9c04e0f20eab9e51d1bdd023d94af  gcc/testsuite/gcc.target/powerpc/vsx-vector-5.c
! a2072ad74a24ce30e97fe2d798e82f17  gcc/testsuite/gcc.target/powerpc/vsx-vector-6.c
! 5c438f6c6002a682ed88deac9a40303f  gcc/testsuite/gcc.target/powerpc/vsx-vector-7.c
! 9c09a9e1fbe05972f2c7ae287e8beb97  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-1.c
! d10764d77e5bf498f053a1dcc3189476  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-2.c
! 42bc8c71b5a9ad931698f20cd98f13c0  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-3.c
! 1fc06796d41381836e9344ef7f9229ab  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-4.c
! 68b1fcd75d0c334e63c3b6f10374049b  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-5.c
! 245dcb032bfffd6eb1f4d061772b4bbe  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-6.c
! bd49be19b83d45c209260e0ce7a74076  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-7.c
! f21f1ccb428aa3d728272b28733d173e  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-8.c
! e3bb35a748eed44522e5a2c187cf22f8  gcc/testsuite/gcc.target/powerpc/vsxcopy.c
! 8b5c58cdeae1cc3d92696c3c863690e8  gcc/testsuite/gcc.target/powerpc/warn-1.c
! c88c25be01895313981c649a1f57b4c6  gcc/testsuite/gcc.target/powerpc/warn-2.c
  a416d38760a620b535b56c151a15e3f4  gcc/testsuite/gcc.target/powerpc/warn-lvsl-lvsr.c
  e38cc032ecb8846b9483954c34ed88b9  gcc/testsuite/gcc.target/riscv/riscv.exp
  6bd569a0881471228538a06acf78338a  gcc/testsuite/gcc.target/riscv/save-restore-1.c
! 1e57f96eb8dd84bbb02349afb5597be9  gcc/testsuite/gcc.target/rl78/rl78.exp
  08a6a665d3a592b70dd51e3b59945801  gcc/testsuite/gcc.target/rl78/test_addm3.c
  98f7b6c0475f99b06b8ecb140f1be921  gcc/testsuite/gcc.target/rx/builtins.c
  327e909c4263a2282a27e2e41d1835af  gcc/testsuite/gcc.target/rx/i272091.c
  150c9e23ee6b580f3ffde8cd62afd908  gcc/testsuite/gcc.target/rx/interrupts.c
  2400785c359089b68fb8051944b2b03f  gcc/testsuite/gcc.target/rx/pack.c
  1854cae6bc69cd8d1d547a850a4e43f0  gcc/testsuite/gcc.target/rx/packed-struct.c
  853c27a897cefbe98ebdbb934bbedef0  gcc/testsuite/gcc.target/rx/rx-abi-function-tests.c
! f4d90c2bc86def69fb8e907cc962356c  gcc/testsuite/gcc.target/rx/rx.exp
! ff9c04503832f3d305f4d5b3d832ea5e  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
--- 50659,50741 ----
  322a55cb84af973a00c5a3750ef08c4e  gcc/testsuite/gcc.target/powerpc/vsu/vec-xst-len-7.c
  415232ff7d42d45b489b5968120ad4cc  gcc/testsuite/gcc.target/powerpc/vsu/vec-xst-len-8.c
  96ef4a5ea4fce11b1b86e842a4455ebd  gcc/testsuite/gcc.target/powerpc/vsu/vec-xst-len-9.c
! b2d687bbb31ba5dec8bf205866996794  gcc/testsuite/gcc.target/powerpc/vsu/vsu.exp
! aaeb960a2e271bc474363e9917aecb51  gcc/testsuite/gcc.target/powerpc/vsx-13.c
! 588084e34957bfd3309007d462d75b67  gcc/testsuite/gcc.target/powerpc/vsx-7-be.c
! dda33ad7be60f57b58ed431fa32786d2  gcc/testsuite/gcc.target/powerpc/vsx-7.h
! b707e1f72127566e2aa7521320d4818f  gcc/testsuite/gcc.target/powerpc/vsx-builtin-1.c
! 48340c75e0602ad1923b6940b4c23e61  gcc/testsuite/gcc.target/powerpc/vsx-builtin-2.c
! 5684c60d3a35f107d7f0f5b4b4a7876a  gcc/testsuite/gcc.target/powerpc/vsx-builtin-3.c
! e51201063924b6407317c441d400073d  gcc/testsuite/gcc.target/powerpc/vsx-builtin-4.c
! 7e66f87dd06b95da1686ec402326cda3  gcc/testsuite/gcc.target/powerpc/vsx-builtin-5.c
! 4193c32bf9ad46a7f16d0519d29c38d0  gcc/testsuite/gcc.target/powerpc/vsx-builtin-6.c
! 93a224e2e5e545039eac6aa09d4a1897  gcc/testsuite/gcc.target/powerpc/vsx-builtin-7.c
! 66ac24fd431ded59ec3ab33526bcf6e2  gcc/testsuite/gcc.target/powerpc/vsx-builtin-8.c
! d3469962c4213b0187a321587ac8965b  gcc/testsuite/gcc.target/powerpc/vsx-extract-1.c
! f6fa44988b5f5b91a692ad90d5722e4b  gcc/testsuite/gcc.target/powerpc/vsx-extract-2.c
! 4b2dc66c2fc3e7e7ec27087bb497b6a8  gcc/testsuite/gcc.target/powerpc/vsx-extract-3.c
! dec02c6849739d38da91e21f49a00bf8  gcc/testsuite/gcc.target/powerpc/vsx-extract-4.c
! 7ce3731c526acf637c9972c10a938e24  gcc/testsuite/gcc.target/powerpc/vsx-extract-5.c
  d7469557e85d85a69ef07fd54698e9ab  gcc/testsuite/gcc.target/powerpc/vsx-extract-6.c
  41e7ca8976b463f66edc46b546b64718  gcc/testsuite/gcc.target/powerpc/vsx-extract-7.c
! e70d32bcfe1913bf3f59c33955651290  gcc/testsuite/gcc.target/powerpc/vsx-float0.c
! c057a73c297dfac12c6019420af283ec  gcc/testsuite/gcc.target/powerpc/vsx-himode.c
! 83365d30c6a13fd015ceefee387d8650  gcc/testsuite/gcc.target/powerpc/vsx-himode2.c
! 98a1182a0d598b1e567621b79e595ae2  gcc/testsuite/gcc.target/powerpc/vsx-himode3.c
! 05427e19af048da8fa619c4327fdc813  gcc/testsuite/gcc.target/powerpc/vsx-mass-1.c
! f23fb86dfb5665b8661248193571de17  gcc/testsuite/gcc.target/powerpc/vsx-qimode.c
! 51bbe959c9f82966c8b18b781e52a650  gcc/testsuite/gcc.target/powerpc/vsx-qimode2.c
! 45e6445ab28087ebb25831d7e9422084  gcc/testsuite/gcc.target/powerpc/vsx-qimode3.c
! 8967f676be41e2d2c35d24c1a7da39c0  gcc/testsuite/gcc.target/powerpc/vsx-sfminmax.c
! 686cb176daa4b954462a234af85a3436  gcc/testsuite/gcc.target/powerpc/vsx-simode.c
! 47b8776c6592187fd719d18f3f84ca7f  gcc/testsuite/gcc.target/powerpc/vsx-simode2.c
! 0a66d27a53d3e213751006aa8430fe02  gcc/testsuite/gcc.target/powerpc/vsx-simode3.c
! 7b674e9b4897a5f5a1044d428371ab0f  gcc/testsuite/gcc.target/powerpc/vsx-vector-1.c
! d92bc9803448e08033925743f2b8dc07  gcc/testsuite/gcc.target/powerpc/vsx-vector-2.c
! f8c4981c2c19f664fea6f2f882b231b3  gcc/testsuite/gcc.target/powerpc/vsx-vector-3.c
! f1e4d52207f884282e3b50330d7aae50  gcc/testsuite/gcc.target/powerpc/vsx-vector-4.c
! 7a993b28c4adbb0781ebe59524ca7151  gcc/testsuite/gcc.target/powerpc/vsx-vector-5.c
! d4046f864b1747fa6dca649cd64b3789  gcc/testsuite/gcc.target/powerpc/vsx-vector-6-be.c
! 3edf8784efcf33f741cfb2d156110cea  gcc/testsuite/gcc.target/powerpc/vsx-vector-6-le.c
! 75700b95e2488137067a0ae602ef5d1f  gcc/testsuite/gcc.target/powerpc/vsx-vector-6-le.p9.c
! 907c102904d25aa7a0420b0908b65c26  gcc/testsuite/gcc.target/powerpc/vsx-vector-6.h
! 3a2f5599f0ad3bd3ed6b0fc913a81e46  gcc/testsuite/gcc.target/powerpc/vsx-vector-7.c
! 134610d64f5f49670fd63049ff2e9617  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-1.c
! 081341ae5096a0f3611499aaaffe717d  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-2.c
! 3e7c714c1cd6d55d2c7c57151f56b703  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-3.c
! c2958ac23c2b73d07db91dbe8a4a8a7e  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-4.c
! b4b1e886c6207150978b1569f7411f84  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-5.c
! aae6afd4d9a2054d572638ee18a6836a  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-6.c
! 8a9e10dcee691dae92ce8e81e337482c  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-7.c
! 6dcdd57a18d03d29066f5a37dbbfb838  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-8.c
! 4c3eb1e50370d0549d9119858d74ac36  gcc/testsuite/gcc.target/powerpc/vsxcopy.c
! 19586a972239313759dbc646f690dd00  gcc/testsuite/gcc.target/powerpc/warn-1.c
! ea0ee90903900008dafd89bff7612b2f  gcc/testsuite/gcc.target/powerpc/warn-2.c
  a416d38760a620b535b56c151a15e3f4  gcc/testsuite/gcc.target/powerpc/warn-lvsl-lvsr.c
+ 14c90f84d8058b60faff46b00c097a9c  gcc/testsuite/gcc.target/riscv/pr84660.c
  e38cc032ecb8846b9483954c34ed88b9  gcc/testsuite/gcc.target/riscv/riscv.exp
  6bd569a0881471228538a06acf78338a  gcc/testsuite/gcc.target/riscv/save-restore-1.c
! 150aa4eb381ea8572b1fe3f201704777  gcc/testsuite/gcc.target/riscv/shift-and-1.c
! 9b847cd0a308530a3fd894de275aab48  gcc/testsuite/gcc.target/riscv/shift-and-2.c
! c8d42675ec79f56ceeed3c3797669b7c  gcc/testsuite/gcc.target/riscv/zero-extend-1.c
! c3ce6b52f1909da2cedd31c51bf02d6f  gcc/testsuite/gcc.target/riscv/zero-extend-2.c
! c3eed8a5cded8ce0f4df5f4136bc5a2e  gcc/testsuite/gcc.target/riscv/zero-extend-3.c
! a3b8d54effeae9107d81958755eb9ef6  gcc/testsuite/gcc.target/riscv/zero-extend-4.c
! 8dc12026c9e06817720daf81d3722712  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
  98f7b6c0475f99b06b8ecb140f1be921  gcc/testsuite/gcc.target/rx/builtins.c
  327e909c4263a2282a27e2e41d1835af  gcc/testsuite/gcc.target/rx/i272091.c
  150c9e23ee6b580f3ffde8cd62afd908  gcc/testsuite/gcc.target/rx/interrupts.c
+ 8f38df60724105f3da901d3c1dfa4d9c  gcc/testsuite/gcc.target/rx/mjsr.c
+ 121e65ca68c77d3b608bf89704588b04  gcc/testsuite/gcc.target/rx/movsicc.c
  2400785c359089b68fb8051944b2b03f  gcc/testsuite/gcc.target/rx/pack.c
  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
! 940b9c719d608702444c4173954538b6  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
*************** e4935aebfbac92efa594724b44e77822  gcc/te
*** 47335,47352 ****
  9b770970bea6710409e92c9a84d3a5d3  gcc/testsuite/gcc.target/s390/frame-addr1.c
  c7958dc9fa4da0d50fe09b45a6790ac0  gcc/testsuite/gcc.target/s390/frame-addr2.c
  eea57369a3afa9b43f8fac279b571b19  gcc/testsuite/gcc.target/s390/gpr2fprsavecfi.c
! 8c37c08cb87640598d8c44c4e62aae6d  gcc/testsuite/gcc.target/s390/hotpatch-1.c
! f50d243045ec4f6114799ad47bdc2066  gcc/testsuite/gcc.target/s390/hotpatch-10.c
! 786c63733e9f7bcdad9d8a41fd9208c3  gcc/testsuite/gcc.target/s390/hotpatch-11.c
! d3bc9c186595698075d1f33ab5cc863c  gcc/testsuite/gcc.target/s390/hotpatch-12.c
! ab3291f02326710684ca11513866522e  gcc/testsuite/gcc.target/s390/hotpatch-13.c
! 5d954aecc50b3a6fcd04aaf5d2b34e1d  gcc/testsuite/gcc.target/s390/hotpatch-14.c
! ed8da2bf9071aa584210e41930846887  gcc/testsuite/gcc.target/s390/hotpatch-15.c
! 7aa00dab8a26a63a592bf1149af09157  gcc/testsuite/gcc.target/s390/hotpatch-16.c
! 29058053b180f16a54a0341f898961d0  gcc/testsuite/gcc.target/s390/hotpatch-17.c
! 6f171d2d3b972a4bcfe93f152f8ff6d0  gcc/testsuite/gcc.target/s390/hotpatch-18.c
! 88ad395e871ccb6e726914ac1d8891bd  gcc/testsuite/gcc.target/s390/hotpatch-19.c
! c433a426f714be37d17740759d956e00  gcc/testsuite/gcc.target/s390/hotpatch-2.c
  16214d0069b78923a6e56d80d47c10d8  gcc/testsuite/gcc.target/s390/hotpatch-20.c
  0f1e9a42f062a76c78a8eef0f0baa2fb  gcc/testsuite/gcc.target/s390/hotpatch-21.c
  e40969dcaf599127a656c9cabcbced3f  gcc/testsuite/gcc.target/s390/hotpatch-22.c
--- 50768,50785 ----
  9b770970bea6710409e92c9a84d3a5d3  gcc/testsuite/gcc.target/s390/frame-addr1.c
  c7958dc9fa4da0d50fe09b45a6790ac0  gcc/testsuite/gcc.target/s390/frame-addr2.c
  eea57369a3afa9b43f8fac279b571b19  gcc/testsuite/gcc.target/s390/gpr2fprsavecfi.c
! 4a7872d58055694ce19a3dccca7d9d57  gcc/testsuite/gcc.target/s390/hotpatch-1.c
! 2d300096d1e7a13f3fc501f67f9dd80b  gcc/testsuite/gcc.target/s390/hotpatch-10.c
! 919dfac7451848d0df108b0d8eeaeb47  gcc/testsuite/gcc.target/s390/hotpatch-11.c
! 682b5a32b07c5f833118be0606bb5101  gcc/testsuite/gcc.target/s390/hotpatch-12.c
! c0b433631b5e2109ecec3975153e5756  gcc/testsuite/gcc.target/s390/hotpatch-13.c
! d891ca4296f09081f526452d62e172c2  gcc/testsuite/gcc.target/s390/hotpatch-14.c
! 247a2089ff7795e5c1fd9551abd012ae  gcc/testsuite/gcc.target/s390/hotpatch-15.c
! b849de08e27f4b304b282d65eb6d5b60  gcc/testsuite/gcc.target/s390/hotpatch-16.c
! 9ef3c8c08968382cb26aea5059ed8070  gcc/testsuite/gcc.target/s390/hotpatch-17.c
! 592b6c5ec247a011dabecc3786ad3ca6  gcc/testsuite/gcc.target/s390/hotpatch-18.c
! f6e560267fcd3811467c6daee6b20a74  gcc/testsuite/gcc.target/s390/hotpatch-19.c
! cdb98736e42e7dbe802d2f32684abca2  gcc/testsuite/gcc.target/s390/hotpatch-2.c
  16214d0069b78923a6e56d80d47c10d8  gcc/testsuite/gcc.target/s390/hotpatch-20.c
  0f1e9a42f062a76c78a8eef0f0baa2fb  gcc/testsuite/gcc.target/s390/hotpatch-21.c
  e40969dcaf599127a656c9cabcbced3f  gcc/testsuite/gcc.target/s390/hotpatch-22.c
*************** e7da12246bbce890bcdc9607eeb1c7f6  gcc/te
*** 47356,47368 ****
  88554ab44b89e0928fed2d74bbbfce12  gcc/testsuite/gcc.target/s390/hotpatch-26.c
  fd01bf00dc8ecf269d1e85fe477ccf6f  gcc/testsuite/gcc.target/s390/hotpatch-27.c
  754afec9d855385511dcda8770b4b13d  gcc/testsuite/gcc.target/s390/hotpatch-28.c
! 02f57cbeabd9848ee8af229c80ecc707  gcc/testsuite/gcc.target/s390/hotpatch-3.c
! 548421c9c2f7501d90f7ad38ad2e51f0  gcc/testsuite/gcc.target/s390/hotpatch-4.c
! 725b56c0374c73e598a561fbc00a1fb7  gcc/testsuite/gcc.target/s390/hotpatch-5.c
! 18c6fadf8a55fe129bb36cbac11865fa  gcc/testsuite/gcc.target/s390/hotpatch-6.c
! 54cb97874b7adf9c106c3a98a629a80c  gcc/testsuite/gcc.target/s390/hotpatch-7.c
! 11cfdc452d96ff3be4be169c237178a4  gcc/testsuite/gcc.target/s390/hotpatch-8.c
! e8cbbdc51ed80c5344e8f3ffbdc339e7  gcc/testsuite/gcc.target/s390/hotpatch-9.c
  8afaac9ea63a2e3093f009231f305b7b  gcc/testsuite/gcc.target/s390/hotpatch-compile-1.c
  9603eb38bc72a91e326dc13c1608b6c2  gcc/testsuite/gcc.target/s390/hotpatch-compile-10.c
  2cfbfabcdd4e767c043a004e78c79292  gcc/testsuite/gcc.target/s390/hotpatch-compile-11.c
--- 50789,50801 ----
  88554ab44b89e0928fed2d74bbbfce12  gcc/testsuite/gcc.target/s390/hotpatch-26.c
  fd01bf00dc8ecf269d1e85fe477ccf6f  gcc/testsuite/gcc.target/s390/hotpatch-27.c
  754afec9d855385511dcda8770b4b13d  gcc/testsuite/gcc.target/s390/hotpatch-28.c
! 46058e7af52c236f490fecbdc71dc647  gcc/testsuite/gcc.target/s390/hotpatch-3.c
! e8449fd4185673ad26dcfc014a019a2a  gcc/testsuite/gcc.target/s390/hotpatch-4.c
! 338293180901b5a7df467b7b21c358ce  gcc/testsuite/gcc.target/s390/hotpatch-5.c
! 984cd81c8f2e035bf9cbc473efc55df6  gcc/testsuite/gcc.target/s390/hotpatch-6.c
! 9998d7bc968daf6a89e1fe2bba10438a  gcc/testsuite/gcc.target/s390/hotpatch-7.c
! 17516baefa1bd0b8c3174ce28f08fd84  gcc/testsuite/gcc.target/s390/hotpatch-8.c
! 6f4e581b92443e6d2bdcd3fce0d36402  gcc/testsuite/gcc.target/s390/hotpatch-9.c
  8afaac9ea63a2e3093f009231f305b7b  gcc/testsuite/gcc.target/s390/hotpatch-compile-1.c
  9603eb38bc72a91e326dc13c1608b6c2  gcc/testsuite/gcc.target/s390/hotpatch-compile-10.c
  2cfbfabcdd4e767c043a004e78c79292  gcc/testsuite/gcc.target/s390/hotpatch-compile-11.c
*************** bb08fa1f6627522f43f5fe89dadd04a3  gcc/te
*** 47411,47416 ****
--- 50844,50877 ----
  a57f54483446dc5f464df08f79495bf7  gcc/testsuite/gcc.target/s390/memset-2.c
  a105158cf4633c30f58d84f95c33ee67  gcc/testsuite/gcc.target/s390/morestack.c
  ee3f00537b1c391d545c37c6ea4a145c  gcc/testsuite/gcc.target/s390/nearestint-1.c
+ 062259b85f76e8eaa4f342bcb50de319  gcc/testsuite/gcc.target/s390/nobp-function-pointer-attr.c
+ fea682ccb6ddf5d48ba2e5b9a2ef8ae6  gcc/testsuite/gcc.target/s390/nobp-function-pointer-nothunk.c
+ f470a64f5fa76b61ccc1b696fc104257  gcc/testsuite/gcc.target/s390/nobp-function-pointer-z10.c
+ fd86b7ccb5768e7a2d450e84f1f92ab5  gcc/testsuite/gcc.target/s390/nobp-function-pointer-z900.c
+ f94a714ea89af757b2fbeea46e5e4785  gcc/testsuite/gcc.target/s390/nobp-indirect-jump-attr.c
+ 3ded1361a1c121a538059f23afec68ef  gcc/testsuite/gcc.target/s390/nobp-indirect-jump-inline-attr.c
+ 92ed3b6ae3bc561ddf22524222cf59a7  gcc/testsuite/gcc.target/s390/nobp-indirect-jump-inline-z10.c
+ cf099f048fb412c0177515bf4d2c2867  gcc/testsuite/gcc.target/s390/nobp-indirect-jump-inline-z900.c
+ ee503be3b266ab1c4ddc1f4777eef09b  gcc/testsuite/gcc.target/s390/nobp-indirect-jump-nothunk.c
+ e69045f2efe9ce842e75eb186c58fc4f  gcc/testsuite/gcc.target/s390/nobp-indirect-jump-z10.c
+ 0f7a2f99d225d5a5420e0694c65199ad  gcc/testsuite/gcc.target/s390/nobp-indirect-jump-z900.c
+ 87cfd8a21239ff00441153de8c51a367  gcc/testsuite/gcc.target/s390/nobp-no-dwarf2-cfi.c
+ 239288b3c1d2c6ad3d7c27c16343437c  gcc/testsuite/gcc.target/s390/nobp-return-attr-all.c
+ b684d45c88d2d681994f187439cd14f4  gcc/testsuite/gcc.target/s390/nobp-return-attr-neg.c
+ 22a2c9c093a2ce7f30ecfda493e4c35c  gcc/testsuite/gcc.target/s390/nobp-return-mem-attr.c
+ 37270da1ca7fc4b46ee4d2c668fe6515  gcc/testsuite/gcc.target/s390/nobp-return-mem-nothunk.c
+ db4cbdfd9248064e4e5f35f37f19f3b3  gcc/testsuite/gcc.target/s390/nobp-return-mem-z10.c
+ f6c9a1626e9a01ba8b1e1747c7ec32e9  gcc/testsuite/gcc.target/s390/nobp-return-mem-z900.c
+ 68f4f5fc6c6bb154f39fafd3be8bc57b  gcc/testsuite/gcc.target/s390/nobp-return-reg-attr.c
+ b8264f568a96c8a4f482377d2149b99f  gcc/testsuite/gcc.target/s390/nobp-return-reg-mixed.c
+ 3c3b24e4e96dd2749db97eb637e27ea4  gcc/testsuite/gcc.target/s390/nobp-return-reg-nothunk.c
+ b412cfef2c17bbb3667d188ea07e88d8  gcc/testsuite/gcc.target/s390/nobp-return-reg-z10.c
+ 702518f6d91053d4346822b49e5f21c8  gcc/testsuite/gcc.target/s390/nobp-return-reg-z900.c
+ d10ede3615cc75687ebe5e233896851a  gcc/testsuite/gcc.target/s390/nobp-table-jump-inline-z10.c
+ 8f2deb25c94340c19360ebdf6d822acf  gcc/testsuite/gcc.target/s390/nobp-table-jump-inline-z900.c
+ ce04de73ecbaa0a12a0313d3aed72942  gcc/testsuite/gcc.target/s390/nobp-table-jump-z10.c
+ dfee7fa2ec55ccfb935c28226ca15fe3  gcc/testsuite/gcc.target/s390/nobp-table-jump-z900.c
+ 072ce7bc21cfc745bbb8cf2fc02bdf8c  gcc/testsuite/gcc.target/s390/nodatarel-1.c
  7ea6fcf7afbdc4bcd57407e5299e712a  gcc/testsuite/gcc.target/s390/nolrl-1.c
  eb96a92710915622b3f65dba4a30955d  gcc/testsuite/gcc.target/s390/oscbreak-1.c
  25c3bd00fd3d097e42ac8cfc215fd0c4  gcc/testsuite/gcc.target/s390/pfpo.c
*************** ce26782ee37449dbeb4aa20623d96c52  gcc/te
*** 47431,47450 ****
  07661378c4a77c128ba05293b961afad  gcc/testsuite/gcc.target/s390/pr69709.c
  10c5bf1c96a78ca5da30c4248cf1332c  gcc/testsuite/gcc.target/s390/pr70478.c
  a067974c2b2a9c78ccd257277b876c9b  gcc/testsuite/gcc.target/s390/pr70674.c
! 075ee4e55c3bc2f1efe649df6cd40049  gcc/testsuite/gcc.target/s390/pr77822-1.C
! 30254de108fb4e3ea5f68bfe292fe573  gcc/testsuite/gcc.target/s390/pr77822-2.c
  acda2f0eed359b6c50d33952658d4fad  gcc/testsuite/gcc.target/s390/pr79240.c
  1ac7e049ebfb6360748da2ac0c754846  gcc/testsuite/gcc.target/s390/pr79890.c
  d127ee93571cc359b60fa89c63392525  gcc/testsuite/gcc.target/s390/pr79895.c
  8b4969fbf314851ec142b17e9a328088  gcc/testsuite/gcc.target/s390/pr80725.c
  735bf8da0d759e7de791e71467439655  gcc/testsuite/gcc.target/s390/pr81534.c
  f9de3c4e9d9e8c3a707e1f51e48901b6  gcc/testsuite/gcc.target/s390/return-addr1.c
  5368e8759352b798ae1db6bc79919aa2  gcc/testsuite/gcc.target/s390/return-addr2.c
  f974e5ff639dd74404435089c4a7a5b2  gcc/testsuite/gcc.target/s390/risbg-ll-1.c
  3e2bca2d688ab6340326c2742977ff06  gcc/testsuite/gcc.target/s390/risbg-ll-2.c
  ea12ed37aad31ea3af6f54de7b8f66f6  gcc/testsuite/gcc.target/s390/risbg-ll-3.c
! 81de49852f07c9f244fd9cf16bffb6c1  gcc/testsuite/gcc.target/s390/s390.exp
  3a9ba61f8844739d1b5989c7c7e2b6c1  gcc/testsuite/gcc.target/s390/stackcheck1.c
  35ab7c04e766f935b3433bb1b39220a8  gcc/testsuite/gcc.target/s390/target-attribute/tattr-1.c
  3eadbba9f114de154af023b82b998dba  gcc/testsuite/gcc.target/s390/target-attribute/tattr-10.c
  df32ee2c85133188b09e051e4034671f  gcc/testsuite/gcc.target/s390/target-attribute/tattr-11.c
--- 50892,50913 ----
  07661378c4a77c128ba05293b961afad  gcc/testsuite/gcc.target/s390/pr69709.c
  10c5bf1c96a78ca5da30c4248cf1332c  gcc/testsuite/gcc.target/s390/pr70478.c
  a067974c2b2a9c78ccd257277b876c9b  gcc/testsuite/gcc.target/s390/pr70674.c
! ee22235cbb7d245ac6cb6636af0fa9d2  gcc/testsuite/gcc.target/s390/pr77822-1.c
! 6ff76dc23d114b0bb99123d1d82afc87  gcc/testsuite/gcc.target/s390/pr77822-2.c
  acda2f0eed359b6c50d33952658d4fad  gcc/testsuite/gcc.target/s390/pr79240.c
  1ac7e049ebfb6360748da2ac0c754846  gcc/testsuite/gcc.target/s390/pr79890.c
  d127ee93571cc359b60fa89c63392525  gcc/testsuite/gcc.target/s390/pr79895.c
  8b4969fbf314851ec142b17e9a328088  gcc/testsuite/gcc.target/s390/pr80725.c
  735bf8da0d759e7de791e71467439655  gcc/testsuite/gcc.target/s390/pr81534.c
+ d8d4be7f8d46a289e2ef8e7db7fd3f21  gcc/testsuite/gcc.target/s390/pr84295.c
  f9de3c4e9d9e8c3a707e1f51e48901b6  gcc/testsuite/gcc.target/s390/return-addr1.c
  5368e8759352b798ae1db6bc79919aa2  gcc/testsuite/gcc.target/s390/return-addr2.c
  f974e5ff639dd74404435089c4a7a5b2  gcc/testsuite/gcc.target/s390/risbg-ll-1.c
  3e2bca2d688ab6340326c2742977ff06  gcc/testsuite/gcc.target/s390/risbg-ll-2.c
  ea12ed37aad31ea3af6f54de7b8f66f6  gcc/testsuite/gcc.target/s390/risbg-ll-3.c
! 0c322b4c6129c9a01350bdda2e6c146f  gcc/testsuite/gcc.target/s390/s390.exp
  3a9ba61f8844739d1b5989c7c7e2b6c1  gcc/testsuite/gcc.target/s390/stackcheck1.c
+ 440663fed0925afcad33c76bdde54f80  gcc/testsuite/gcc.target/s390/target-attribute/pr82012.c
  35ab7c04e766f935b3433bb1b39220a8  gcc/testsuite/gcc.target/s390/target-attribute/tattr-1.c
  3eadbba9f114de154af023b82b998dba  gcc/testsuite/gcc.target/s390/target-attribute/tattr-10.c
  df32ee2c85133188b09e051e4034671f  gcc/testsuite/gcc.target/s390/target-attribute/tattr-11.c
*************** f8fda1b5b427ecffec0a8835386c4342  gcc/te
*** 47534,47540 ****
  201a36e4a6548d10d83352d305b4284a  gcc/testsuite/gcc.target/s390/tf_to_di-1.c
  8a6c46e492362a7ae789676034c82a23  gcc/testsuite/gcc.target/s390/vector/int128-1.c
  f8ddf98d23fed8fdb81fc0b6b8a34fa4  gcc/testsuite/gcc.target/s390/vector/stpcpy-1.c
! fadf923d9722c80534bb3b32a5da1615  gcc/testsuite/gcc.target/s390/vector/vcond-shift.c
  8fa9b68cf0196b4198ce00a304191744  gcc/testsuite/gcc.target/s390/vector/vec-abi-1.c
  3a8a70f0c80bb59f0c702d13290890cd  gcc/testsuite/gcc.target/s390/vector/vec-abi-2.c
  9aa9bf85698e7ef21c53f1f2dd13ee75  gcc/testsuite/gcc.target/s390/vector/vec-abi-3.c
--- 50997,51003 ----
  201a36e4a6548d10d83352d305b4284a  gcc/testsuite/gcc.target/s390/tf_to_di-1.c
  8a6c46e492362a7ae789676034c82a23  gcc/testsuite/gcc.target/s390/vector/int128-1.c
  f8ddf98d23fed8fdb81fc0b6b8a34fa4  gcc/testsuite/gcc.target/s390/vector/stpcpy-1.c
! c6799efe253acc955e2b9dcf44075d99  gcc/testsuite/gcc.target/s390/vector/vcond-shift.c
  8fa9b68cf0196b4198ce00a304191744  gcc/testsuite/gcc.target/s390/vector/vec-abi-1.c
  3a8a70f0c80bb59f0c702d13290890cd  gcc/testsuite/gcc.target/s390/vector/vec-abi-2.c
  9aa9bf85698e7ef21c53f1f2dd13ee75  gcc/testsuite/gcc.target/s390/vector/vec-abi-3.c
*************** f6942a3fba9c800bffade3bb79196479  gcc/te
*** 47563,47568 ****
--- 51026,51032 ----
  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
  03ba06d58e7f65b8e47eace2aff32bda  gcc/testsuite/gcc.target/s390/vector/vec-scalar-cmp-1.c
  8de36944e18edbbcc735c9baad533f52  gcc/testsuite/gcc.target/s390/vector/vec-shift-1.c
  cea49877a5895e80cb13491b6cdfa2a2  gcc/testsuite/gcc.target/s390/vector/vec-sub-1.c
*************** d9c7cdb9278996c3e1dfb12b0fea17bd  gcc/te
*** 47574,47581 ****
  9fac5c4be550f2336dbb8ee22a9db221  gcc/testsuite/gcc.target/s390/vxe/vllezlf-1.c
  dc95f2902df894907c8cd4f00960f509  gcc/testsuite/gcc.target/s390/warn-dynamicstack-1.c
  7d0eb00954092ab19d710323c872dd2a  gcc/testsuite/gcc.target/s390/zvector/pr79893.c
  6924d62f235015dbe0a12e676b094f6d  gcc/testsuite/gcc.target/s390/zvector/vec-cmp-1.c
! bb894f21fe3b3c694eb81f45bc0b0bba  gcc/testsuite/gcc.target/s390/zvector/vec-cmp-2.c
  ccdf3c2d3031ce42906139030ba856e1  gcc/testsuite/gcc.target/s390/zvector/vec-dbl-math-compile-1.c
  f42e228f92a8dfb9e1ded9cb20bc6622  gcc/testsuite/gcc.target/s390/zvector/vec-elem-1.c
  a7f2bd9fee8c03add8265ce21e47cb8f  gcc/testsuite/gcc.target/s390/zvector/vec-genbytemask-1.c
--- 51038,51049 ----
  9fac5c4be550f2336dbb8ee22a9db221  gcc/testsuite/gcc.target/s390/vxe/vllezlf-1.c
  dc95f2902df894907c8cd4f00960f509  gcc/testsuite/gcc.target/s390/warn-dynamicstack-1.c
  7d0eb00954092ab19d710323c872dd2a  gcc/testsuite/gcc.target/s390/zvector/pr79893.c
+ 8bc7e55288af53eddbd5437d08f5f9a1  gcc/testsuite/gcc.target/s390/zvector/pr82317.c
+ c5f2f4df3f7c11977663ad182d69c2a7  gcc/testsuite/gcc.target/s390/zvector/pr82322.c
+ 2a1b20d2e3e33de7b491ea6c0228526b  gcc/testsuite/gcc.target/s390/zvector/pr82463.c
+ 7915a7e0fd1a86504253e59af42ac369  gcc/testsuite/gcc.target/s390/zvector/pr82465.c
  6924d62f235015dbe0a12e676b094f6d  gcc/testsuite/gcc.target/s390/zvector/vec-cmp-1.c
! c16bd7eec0ebe296eddd356e2f483cf9  gcc/testsuite/gcc.target/s390/zvector/vec-cmp-2.c
  ccdf3c2d3031ce42906139030ba856e1  gcc/testsuite/gcc.target/s390/zvector/vec-dbl-math-compile-1.c
  f42e228f92a8dfb9e1ded9cb20bc6622  gcc/testsuite/gcc.target/s390/zvector/vec-elem-1.c
  a7f2bd9fee8c03add8265ce21e47cb8f  gcc/testsuite/gcc.target/s390/zvector/vec-genbytemask-1.c
*************** db7a02bef0ea1d74a99297c9ee53c525  gcc/te
*** 47765,47771 ****
  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
! c76d1c43e8edd072cf45aaed0d45af03  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
--- 51233,51239 ----
  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
! 89f5e24521fe6a8b641f37db83b67872  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
*** 47804,47810 ****
  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
! 9e8eb31495a44a89792a161f9654b20d  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
--- 51272,51278 ----
  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
! ef3849ff90a9bb86f058ef6a4f5e54ea  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
*************** f93502f8ad3cd9e7d59557e15b807d01  gcc/te
*** 47909,47914 ****
--- 51377,51383 ----
  358dc199e97ca39bd8ebbefa73ced70c  gcc/testsuite/gcc.target/sparc/setcc-7.c
  7064161cb3e6285f9215b55421a4fc6c  gcc/testsuite/gcc.target/sparc/setcc-8.c
  c51a16c76fd1df5c182c5e6b77d1acfa  gcc/testsuite/gcc.target/sparc/setcc-9.c
+ 4e80e6b98cca129bebf1c24925966558  gcc/testsuite/gcc.target/sparc/setjmp-1.c
  438ea8b2cc3dd028f6b33b12541b2b7f  gcc/testsuite/gcc.target/sparc/sibcall-dslot.c
  9ffd7b94418f62e4bc1700c00a93b9ff  gcc/testsuite/gcc.target/sparc/sparc-align-1.c
  0fdc378e88ad378a181a8f7ba247889f  gcc/testsuite/gcc.target/sparc/sparc-constant-1.c
*************** eb9fea9eb3ccdd5fb4d85ac011c10dc5  gcc/te
*** 47921,47927 ****
  111c6ff31ffc23f4b402354941b88338  gcc/testsuite/gcc.target/sparc/sparc-ret-2.c
  96ac755e92338efd01e188e2e94bbf8f  gcc/testsuite/gcc.target/sparc/sparc-ret-3.c
  1943f3e1f1253e644f6fe445637c2dec  gcc/testsuite/gcc.target/sparc/sparc-trap-1.c
! 91441cf444e7cb6158d5e4a48e88a6f9  gcc/testsuite/gcc.target/sparc/sparc.exp
  9d0e2b5fe42dfe4e33a910954d24877b  gcc/testsuite/gcc.target/sparc/struct-ret-check-1.c
  8e13d07524eb18b1e933aa690c21a993  gcc/testsuite/gcc.target/sparc/struct-ret-check-2.c
  25b3fbaad3a2016e2d2b3cdf5fea854d  gcc/testsuite/gcc.target/sparc/ultrasp1.c
--- 51390,51396 ----
  111c6ff31ffc23f4b402354941b88338  gcc/testsuite/gcc.target/sparc/sparc-ret-2.c
  96ac755e92338efd01e188e2e94bbf8f  gcc/testsuite/gcc.target/sparc/sparc-ret-3.c
  1943f3e1f1253e644f6fe445637c2dec  gcc/testsuite/gcc.target/sparc/sparc-trap-1.c
! 2e5a48b85ed4492e9b77c9473b1bef7a  gcc/testsuite/gcc.target/sparc/sparc.exp
  9d0e2b5fe42dfe4e33a910954d24877b  gcc/testsuite/gcc.target/sparc/struct-ret-check-1.c
  8e13d07524eb18b1e933aa690c21a993  gcc/testsuite/gcc.target/sparc/struct-ret-check-2.c
  25b3fbaad3a2016e2d2b3cdf5fea854d  gcc/testsuite/gcc.target/sparc/ultrasp1.c
*************** c743e0cdebd780532edc2e21e3de15e4  gcc/te
*** 47956,47962 ****
  c6e8cea536062af6f23168b438e096e3  gcc/testsuite/gcc.target/sparc/vis4misc.c
  56b799e8f22e02ad94a3b78e432a129c  gcc/testsuite/gcc.target/sparc/wrgsr.c
  8ab1e95b1174d62330ff11c4ce7c22d3  gcc/testsuite/gcc.target/sparc/xmul.c
! 723fd6618b2db81b9d1ef55c7f12b2d5  gcc/testsuite/gcc.target/spu/Wmain.c
  cd628e8143acc1fc9416cf604c8bb7fe  gcc/testsuite/gcc.target/spu/abi.c
  c80f2b0a26d2d91c75091651c7738d87  gcc/testsuite/gcc.target/spu/compare-dp.c
  55b709a182195d3fc0edb0228cfa7571  gcc/testsuite/gcc.target/spu/cpat-1.c
--- 51425,51431 ----
  c6e8cea536062af6f23168b438e096e3  gcc/testsuite/gcc.target/sparc/vis4misc.c
  56b799e8f22e02ad94a3b78e432a129c  gcc/testsuite/gcc.target/sparc/wrgsr.c
  8ab1e95b1174d62330ff11c4ce7c22d3  gcc/testsuite/gcc.target/sparc/xmul.c
! 7a6abcc4d236006fcb00e81eb8106031  gcc/testsuite/gcc.target/spu/Wmain.c
  cd628e8143acc1fc9416cf604c8bb7fe  gcc/testsuite/gcc.target/spu/abi.c
  c80f2b0a26d2d91c75091651c7738d87  gcc/testsuite/gcc.target/spu/compare-dp.c
  55b709a182195d3fc0edb0228cfa7571  gcc/testsuite/gcc.target/spu/cpat-1.c
*************** d138790534b7792a22fb6025efb0d364  gcc/te
*** 47972,47980 ****
  632f9d364652fcc9b34248669ec89a07  gcc/testsuite/gcc.target/spu/ea/compile1.c
  49e2ebe9bd0c6587817b8f16fa7e057e  gcc/testsuite/gcc.target/spu/ea/compile2.c
  c7cdc9e3b9db7e54dbff6a5d078cac90  gcc/testsuite/gcc.target/spu/ea/cppdefine.c
! 5dffb49fce4abc7f3379cb5b398c6d5f  gcc/testsuite/gcc.target/spu/ea/ea.exp
  1e5ceb6250e9c2f2f4f297f4846a92e5  gcc/testsuite/gcc.target/spu/ea/errors1.c
! ebc603557b9ba0e26162c9af94c55846  gcc/testsuite/gcc.target/spu/ea/errors2.c
  e810234150b54f4fe13ff0b54064e98c  gcc/testsuite/gcc.target/spu/ea/execute1.c
  d26d8c4e2bc2b2faf63fb96e8178ecad  gcc/testsuite/gcc.target/spu/ea/execute2.c
  40b3685036fc5e747857f94bf711ddda  gcc/testsuite/gcc.target/spu/ea/execute3.c
--- 51441,51449 ----
  632f9d364652fcc9b34248669ec89a07  gcc/testsuite/gcc.target/spu/ea/compile1.c
  49e2ebe9bd0c6587817b8f16fa7e057e  gcc/testsuite/gcc.target/spu/ea/compile2.c
  c7cdc9e3b9db7e54dbff6a5d078cac90  gcc/testsuite/gcc.target/spu/ea/cppdefine.c
! 0723390d67bc62eac6f18a032caa7864  gcc/testsuite/gcc.target/spu/ea/ea.exp
  1e5ceb6250e9c2f2f4f297f4846a92e5  gcc/testsuite/gcc.target/spu/ea/errors1.c
! dea08cf1f96397e01c535c501e7767d8  gcc/testsuite/gcc.target/spu/ea/errors2.c
  e810234150b54f4fe13ff0b54064e98c  gcc/testsuite/gcc.target/spu/ea/execute1.c
  d26d8c4e2bc2b2faf63fb96e8178ecad  gcc/testsuite/gcc.target/spu/ea/execute2.c
  40b3685036fc5e747857f94bf711ddda  gcc/testsuite/gcc.target/spu/ea/execute3.c
*************** aa1cf577dd2bbd515e2785904d4ca99e  gcc/te
*** 47985,47997 ****
  24ba2a0a512f1a0aff047ca5dbe6b71b  gcc/testsuite/gcc.target/spu/ea/test-sizes.c
  6f2c25a9d20067886bf1c4c561d2dda4  gcc/testsuite/gcc.target/spu/fixed-range-bad.c
  f000fdcd855b1a8e1790fdb7dc31bed6  gcc/testsuite/gcc.target/spu/fixed-range.c
! 4ed623422edf8e50d92b6f01b6126c16  gcc/testsuite/gcc.target/spu/intrinsics-1.c
  3d71b2ed8c8527cc39573de9ec13fe60  gcc/testsuite/gcc.target/spu/intrinsics-2.c
  2fcddb779a096335c9db6c4c0f7c21f3  gcc/testsuite/gcc.target/spu/intrinsics-3.c
  e6baa5f795c72565e5f7f03238ce2c77  gcc/testsuite/gcc.target/spu/intrinsics-sr.c
  9df57366b567dbd3aef49e217449dbff  gcc/testsuite/gcc.target/spu/muldivti3.c
  1f2f2bf150f003c7a7193d1892b53f62  gcc/testsuite/gcc.target/spu/pr40001.c
! 7609b7290bf35754b8f22ed5b4aa07d6  gcc/testsuite/gcc.target/spu/spu.exp
  08caefeab58c45a32303e75dc0184a34  gcc/testsuite/gcc.target/spu/subti3.c
  fe48c0b447763dc5471f675fe1a2546a  gcc/testsuite/gcc.target/spu/tag_manager.c
  7fbed99e4106d7c92f9f96ec7cd92071  gcc/testsuite/gcc.target/spu/vector-ansi.c
--- 51454,51466 ----
  24ba2a0a512f1a0aff047ca5dbe6b71b  gcc/testsuite/gcc.target/spu/ea/test-sizes.c
  6f2c25a9d20067886bf1c4c561d2dda4  gcc/testsuite/gcc.target/spu/fixed-range-bad.c
  f000fdcd855b1a8e1790fdb7dc31bed6  gcc/testsuite/gcc.target/spu/fixed-range.c
! 1ef23f3ef1fae1634bb82a5afe40d1f1  gcc/testsuite/gcc.target/spu/intrinsics-1.c
  3d71b2ed8c8527cc39573de9ec13fe60  gcc/testsuite/gcc.target/spu/intrinsics-2.c
  2fcddb779a096335c9db6c4c0f7c21f3  gcc/testsuite/gcc.target/spu/intrinsics-3.c
  e6baa5f795c72565e5f7f03238ce2c77  gcc/testsuite/gcc.target/spu/intrinsics-sr.c
  9df57366b567dbd3aef49e217449dbff  gcc/testsuite/gcc.target/spu/muldivti3.c
  1f2f2bf150f003c7a7193d1892b53f62  gcc/testsuite/gcc.target/spu/pr40001.c
! c4b5a9d29c1e19664ea446210535960e  gcc/testsuite/gcc.target/spu/spu.exp
  08caefeab58c45a32303e75dc0184a34  gcc/testsuite/gcc.target/spu/subti3.c
  fe48c0b447763dc5471f675fe1a2546a  gcc/testsuite/gcc.target/spu/tag_manager.c
  7fbed99e4106d7c92f9f96ec7cd92071  gcc/testsuite/gcc.target/spu/vector-ansi.c
*************** e564d0032d6bd114296dbffaad36dd8b  gcc/te
*** 48000,48006 ****
  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
! 2d26e47708284a9390f22a0190da0c5e  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
--- 51469,51475 ----
  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
! 02cdda7d94ad5bdafb90d4c20467448f  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
*** 48016,48026 ****
  baa04394e3ff6b7cba6819b89fb4e822  gcc/testsuite/gcc.target/tic6x/longcalls.c
  f84309613c0a7282e626909d82e4ad41  gcc/testsuite/gcc.target/tic6x/rotdi16-scan.c
  9373dfa296a424e3396f81925fbd59bc  gcc/testsuite/gcc.target/tic6x/rotdi16.c
! 1894d5fa3d40ba581e6c819aaf6fb45f  gcc/testsuite/gcc.target/tic6x/tic6x.exp
  670857f86bef69c76dcf7d725b01b954  gcc/testsuite/gcc.target/tic6x/weak-call.c
  bce543225b38f67d8c3d77856df8c002  gcc/testsuite/gcc.target/vax/bswapdi-1.c
  303827dc5d4539997ff7a236a7a3f1bf  gcc/testsuite/gcc.target/vax/pr56875.c
! e50bdeb794060625423bcc6231582cab  gcc/testsuite/gcc.target/vax/vax.exp
  ca7d1d2f02184bea4a69863559ffb06d  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
--- 51485,51495 ----
  baa04394e3ff6b7cba6819b89fb4e822  gcc/testsuite/gcc.target/tic6x/longcalls.c
  f84309613c0a7282e626909d82e4ad41  gcc/testsuite/gcc.target/tic6x/rotdi16-scan.c
  9373dfa296a424e3396f81925fbd59bc  gcc/testsuite/gcc.target/tic6x/rotdi16.c
! 0fa37218f3e6fdbc2a1d4f8ccaa4ddc5  gcc/testsuite/gcc.target/tic6x/tic6x.exp
  670857f86bef69c76dcf7d725b01b954  gcc/testsuite/gcc.target/tic6x/weak-call.c
  bce543225b38f67d8c3d77856df8c002  gcc/testsuite/gcc.target/vax/bswapdi-1.c
  303827dc5d4539997ff7a236a7a3f1bf  gcc/testsuite/gcc.target/vax/pr56875.c
! 8769b65bc51d5abcd2ab5acb6550b976  gcc/testsuite/gcc.target/vax/vax.exp
  ca7d1d2f02184bea4a69863559ffb06d  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
*************** c9e04bd8134e82ab916c548124d71ad4  gcc/te
*** 48029,48044 ****
  d78b257974ef0a198363b84d7f7cdd7c  gcc/testsuite/gcc.target/visium/cstore_uns.c
  c607b2b035973b5f7226250bd6fe11f8  gcc/testsuite/gcc.target/visium/long_branch.c
  da335bd5b7d24260be92152ec43c9c69  gcc/testsuite/gcc.target/visium/loop_clear.c
! fa804286199303928e807b43822a9e6e  gcc/testsuite/gcc.target/visium/overflow16.c
! 184dac2a6e7bf5c474e55a56f2b6ca9c  gcc/testsuite/gcc.target/visium/overflow32.c
! 05ea5075df56f805eabc7fd1b6137fb7  gcc/testsuite/gcc.target/visium/overflow8.c
! 8a8fba24aa35f1ceb4c681077804031f  gcc/testsuite/gcc.target/visium/visium.exp
! 9c18bfa596a8599c54da6a9040b0283c  gcc/testsuite/gcc.target/x86_64/abi/README.gcc
! 9b088509af1a3b03cae84e9ff4c3b28b  gcc/testsuite/gcc.target/x86_64/abi/abi-x86_64.exp
  4599244d74ba4aabbd69240d86d2fe79  gcc/testsuite/gcc.target/x86_64/abi/args.h
  00a7756c300412476dc7df5636d760dd  gcc/testsuite/gcc.target/x86_64/abi/asm-support-darwin.s
  3003646df75711be87357346568aa8b2  gcc/testsuite/gcc.target/x86_64/abi/asm-support.S
! 93e2be6e941082bc6be7ef4044f4e8f0  gcc/testsuite/gcc.target/x86_64/abi/avx/abi-avx.exp
  f559d61e72669fec3c7c3bb1345a001f  gcc/testsuite/gcc.target/x86_64/abi/avx/args.h
  2ab990bb306a8a9c1f146095795ed0bb  gcc/testsuite/gcc.target/x86_64/abi/avx/asm-support.S
  4061363418adffdceb4cff80966eaf32  gcc/testsuite/gcc.target/x86_64/abi/avx/avx-check.h
--- 51498,51513 ----
  d78b257974ef0a198363b84d7f7cdd7c  gcc/testsuite/gcc.target/visium/cstore_uns.c
  c607b2b035973b5f7226250bd6fe11f8  gcc/testsuite/gcc.target/visium/long_branch.c
  da335bd5b7d24260be92152ec43c9c69  gcc/testsuite/gcc.target/visium/loop_clear.c
! 23880231c8ea7e502c260ff1d7538b69  gcc/testsuite/gcc.target/visium/overflow16.c
! feffd3025714ba008bffa3f41d3cb00b  gcc/testsuite/gcc.target/visium/overflow32.c
! 29adeac527e353dcde2d35d9fa4fb2d0  gcc/testsuite/gcc.target/visium/overflow8.c
! 941aa6662b1b6362b62c685e454076f5  gcc/testsuite/gcc.target/visium/visium.exp
! 4be23ac7f01fa18f00c4971973258f72  gcc/testsuite/gcc.target/x86_64/abi/README.gcc
! c8fdbb7eab97a9faead0d35da727ebf6  gcc/testsuite/gcc.target/x86_64/abi/abi-x86_64.exp
  4599244d74ba4aabbd69240d86d2fe79  gcc/testsuite/gcc.target/x86_64/abi/args.h
  00a7756c300412476dc7df5636d760dd  gcc/testsuite/gcc.target/x86_64/abi/asm-support-darwin.s
  3003646df75711be87357346568aa8b2  gcc/testsuite/gcc.target/x86_64/abi/asm-support.S
! 030f51d5ee514141a58f62ad21d9e0d5  gcc/testsuite/gcc.target/x86_64/abi/avx/abi-avx.exp
  f559d61e72669fec3c7c3bb1345a001f  gcc/testsuite/gcc.target/x86_64/abi/avx/args.h
  2ab990bb306a8a9c1f146095795ed0bb  gcc/testsuite/gcc.target/x86_64/abi/avx/asm-support.S
  4061363418adffdceb4cff80966eaf32  gcc/testsuite/gcc.target/x86_64/abi/avx/avx-check.h
*************** d3c71d269c1b4265e86c5ace1089e848  gcc/te
*** 48046,48052 ****
  b43e5e8d171dcdbec5cac42b0b9a298c  gcc/testsuite/gcc.target/x86_64/abi/avx/test_passing_m256.c
  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
! a571e2595a04525bc92ee6892034d8d3  gcc/testsuite/gcc.target/x86_64/abi/avx512f/abi-avx512f.exp
  2cf03d73572ce81dab43dcceeeacf5c4  gcc/testsuite/gcc.target/x86_64/abi/avx512f/args.h
  341c91bf54efad299e2f11e9329738fa  gcc/testsuite/gcc.target/x86_64/abi/avx512f/asm-support.S
  1c4dc628c680a1d3ad4767c3a1455499  gcc/testsuite/gcc.target/x86_64/abi/avx512f/avx512f-check.h
--- 51515,51521 ----
  b43e5e8d171dcdbec5cac42b0b9a298c  gcc/testsuite/gcc.target/x86_64/abi/avx/test_passing_m256.c
  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
! e0cbb0807f6e9896214abcfc73d00e2d  gcc/testsuite/gcc.target/x86_64/abi/avx512f/abi-avx512f.exp
  2cf03d73572ce81dab43dcceeeacf5c4  gcc/testsuite/gcc.target/x86_64/abi/avx512f/args.h
  341c91bf54efad299e2f11e9329738fa  gcc/testsuite/gcc.target/x86_64/abi/avx512f/asm-support.S
  1c4dc628c680a1d3ad4767c3a1455499  gcc/testsuite/gcc.target/x86_64/abi/avx512f/avx512f-check.h
*************** a571e2595a04525bc92ee6892034d8d3  gcc/te
*** 48054,48060 ****
  9c2b013a549bbd28ac8dbd2c2d9cd181  gcc/testsuite/gcc.target/x86_64/abi/avx512f/test_passing_m512.c
  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
! b64b5c60cd7e2e01dc3d1d5d83bbd578  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
--- 51523,51529 ----
  9c2b013a549bbd28ac8dbd2c2d9cd181  gcc/testsuite/gcc.target/x86_64/abi/avx512f/test_passing_m512.c
  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
! 19b33610816e7b68b3be19c6edda69f8  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
*** 48075,48080 ****
--- 51544,51553 ----
  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
+ 3c2e53157a9f2fa7f0afcb538acd4e94  gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/do-test.S
+ ba6fc57124466febe6d63a25e8e14cb2  gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/gen.cc
+ a1df9c353e080f136b0c25f19aab882f  gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/ms-sysv.c
+ 2e42c51378cb3022ebaa4b8ec55d93da  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
*** 48299,48306 ****
  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
! 26fd0db3b58b32c0d3f5055bca323c8f  gcc/testsuite/gcc.target/xstormy16/xstormy16.exp
! 9b779b56f6f0a46c474dcc9d5e634501  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
--- 51772,51779 ----
  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
! af865daf998742be7e3d3a252c5042fb  gcc/testsuite/gcc.target/xstormy16/xstormy16.exp
! ae16482620cfa57017bd6d82a13bc594  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
*************** c67f2b54ec1cb34f9911a4cbe8dcc7e4  gcc/te
*** 48312,48332 ****
  4bb2caab9df6f4777b5b8ac85a5913e7  gcc/testsuite/gcc.test-framework/dg-do-run-sft-exp-F.c
  ab78a4dbfe041924fcdc56de60eaffbc  gcc/testsuite/gcc.test-framework/dg-do-run-sft-exp-P.c
  c389d1cbb4cb391c1b9054f303b01fb1  gcc/testsuite/gcc.test-framework/dg-do-run-sft-nocache-exp-P.c
! 2a3da81d896a292df8dcc91690ac0d24  gcc/testsuite/gcc.test-framework/dg-do-run-xrif-exp-F.c
! 9eb8a147ccaa89ec8b487738693e751f  gcc/testsuite/gcc.test-framework/dg-do-run-xrif-exp-P.c
! 6f754b5f1533f7cc8d4979e5e849914c  gcc/testsuite/gcc.test-framework/dg-do-run-xrif-exp-XF.c
! 1f001ae124a4b83321c6fd2873396cf6  gcc/testsuite/gcc.test-framework/dg-do-run-xrif-exp-XP.c
! f967d603a371753b0065741cac5a454f  gcc/testsuite/gcc.test-framework/dg-do-run-xrif-nocache-exp-XF.c
  a6313be69fbbba7767a5eec1889c256f  gcc/testsuite/gcc.test-framework/dg-dot-run-exp-P.c
  5b7c92d83f3c70816ff19d8159b0b99e  gcc/testsuite/gcc.test-framework/dg-dot-run-exp-U.c
! 9f8f4ea16ba2646996879f7608b9b52d  gcc/testsuite/gcc.test-framework/dg-dot-run-sif-exp-P.c
! 9a87899151da235984fb6749b28907be  gcc/testsuite/gcc.test-framework/dg-dot-run-sif-exp-U.c
! cd70dd0ba16b9864289de2ea9edf48fd  gcc/testsuite/gcc.test-framework/dg-dot-run-xif-exp-P.c
! ef4cdaeca533b915db4979161ac9cba3  gcc/testsuite/gcc.test-framework/dg-dot-run-xif-exp-XP.c
! ecb1afd556af9881b1e42c62ed2f9047  gcc/testsuite/gcc.test-framework/dg-dot-run-xrif-exp-F.c
! c2483cb00274babb63f2f8277d1c043c  gcc/testsuite/gcc.test-framework/dg-dot-run-xrif-exp-P.c
! daf243d971d92b636bc7a9af11df4cc7  gcc/testsuite/gcc.test-framework/dg-dot-run-xrif-exp-XF.c
! ca31954df29548c2a0185855ef525e9f  gcc/testsuite/gcc.test-framework/dg-dot-run-xrif-exp-XP.c
  57c10a0c0410d339d538a11cea5aa5cd  gcc/testsuite/gcc.test-framework/dg-dox-run-exp-XF.c
  37435bb1dffc13ad82891b6a292e4e56  gcc/testsuite/gcc.test-framework/dg-dox-run-sf-exp-XF.c
  9add9fc17f0fc60e632153a8099852f2  gcc/testsuite/gcc.test-framework/dg-dox-run-sf-exp-XP.c
--- 51785,51805 ----
  4bb2caab9df6f4777b5b8ac85a5913e7  gcc/testsuite/gcc.test-framework/dg-do-run-sft-exp-F.c
  ab78a4dbfe041924fcdc56de60eaffbc  gcc/testsuite/gcc.test-framework/dg-do-run-sft-exp-P.c
  c389d1cbb4cb391c1b9054f303b01fb1  gcc/testsuite/gcc.test-framework/dg-do-run-sft-nocache-exp-P.c
! 4c9e9c832ee67d24de969e56b27a91bd  gcc/testsuite/gcc.test-framework/dg-do-run-xrif-exp-F.c
! f10b966d4f6259f96bf89d7e59aa5cfe  gcc/testsuite/gcc.test-framework/dg-do-run-xrif-exp-P.c
! 8e6fc8dbec22b261e1154c4113830322  gcc/testsuite/gcc.test-framework/dg-do-run-xrif-exp-XF.c
! c402ed7b09715a4a79e1226d041fe8aa  gcc/testsuite/gcc.test-framework/dg-do-run-xrif-exp-XP.c
! 03babe552389950a19bdba73180b9f11  gcc/testsuite/gcc.test-framework/dg-do-run-xrif-nocache-exp-XF.c
  a6313be69fbbba7767a5eec1889c256f  gcc/testsuite/gcc.test-framework/dg-dot-run-exp-P.c
  5b7c92d83f3c70816ff19d8159b0b99e  gcc/testsuite/gcc.test-framework/dg-dot-run-exp-U.c
! 3d1e49037511453a9fc19b2cf6408417  gcc/testsuite/gcc.test-framework/dg-dot-run-sif-exp-P.c
! fda18b67daf75b392fbb49f78bc4bac0  gcc/testsuite/gcc.test-framework/dg-dot-run-sif-exp-U.c
! 9e35b7362da4d9814764ff02ccbf13a7  gcc/testsuite/gcc.test-framework/dg-dot-run-xif-exp-P.c
! abc98d0e4d5a58eb80ad1efad9e6a880  gcc/testsuite/gcc.test-framework/dg-dot-run-xif-exp-XP.c
! ca8ad41a7966c5b056831edb911fdbec  gcc/testsuite/gcc.test-framework/dg-dot-run-xrif-exp-F.c
! 48e0a69436a1c4d3d5851ea9499f02cb  gcc/testsuite/gcc.test-framework/dg-dot-run-xrif-exp-P.c
! 5e1b3069f62111679b1e5554c6025d75  gcc/testsuite/gcc.test-framework/dg-dot-run-xrif-exp-XF.c
! f99c3b53990a0656eb2fd03c56d36f40  gcc/testsuite/gcc.test-framework/dg-dot-run-xrif-exp-XP.c
  57c10a0c0410d339d538a11cea5aa5cd  gcc/testsuite/gcc.test-framework/dg-dox-run-exp-XF.c
  37435bb1dffc13ad82891b6a292e4e56  gcc/testsuite/gcc.test-framework/dg-dox-run-sf-exp-XF.c
  9add9fc17f0fc60e632153a8099852f2  gcc/testsuite/gcc.test-framework/dg-dox-run-sf-exp-XP.c
*************** f5165bc52be6d76aae5a0a6deb629fda  gcc/te
*** 48337,48346 ****
  734dc5c6db137d083a1d15aff870648d  gcc/testsuite/gcc.test-framework/dg-excess-errors-exp-XF.c
  75ded3562d15f4b91a8b19c3e63ab5cc  gcc/testsuite/gcc.test-framework/dg-excess-errors-exp-XP.c
  071c2e4d3cf5dda579215d19f367c2c6  gcc/testsuite/gcc.test-framework/dg-nocache-scanasm-exp-XF.c
! ff0b577be37e62e309e4cc935a5b35c7  gcc/testsuite/gcc.test-framework/dg-nocache-sif-exp-P.c
! 61a0fbec4ed00c10e6fefa0b23433b2f  gcc/testsuite/gcc.test-framework/dg-nocache-sif-exp-U.c
! f13be079e9b27bb8d986b0f715ba1241  gcc/testsuite/gcc.test-framework/dg-nocache-xif-exp-P.c
! d535853afde851b66de8bf61bda92b00  gcc/testsuite/gcc.test-framework/dg-nocache-xif-exp-XP.c
  cf826d99da7b7b0bb7cbfc6dcb9f9566  gcc/testsuite/gcc.test-framework/dg-outexists-exp-F.c
  f062cb0a2876f333f28f92446947c4ba  gcc/testsuite/gcc.test-framework/dg-outexists-exp-P.c
  110f2b0e49c56797a21c2c0891ac9e2a  gcc/testsuite/gcc.test-framework/dg-outexists-exp-XP.c
--- 51810,51819 ----
  734dc5c6db137d083a1d15aff870648d  gcc/testsuite/gcc.test-framework/dg-excess-errors-exp-XF.c
  75ded3562d15f4b91a8b19c3e63ab5cc  gcc/testsuite/gcc.test-framework/dg-excess-errors-exp-XP.c
  071c2e4d3cf5dda579215d19f367c2c6  gcc/testsuite/gcc.test-framework/dg-nocache-scanasm-exp-XF.c
! 66925edb3590e3ed8cb3ddeaee877f98  gcc/testsuite/gcc.test-framework/dg-nocache-sif-exp-P.c
! e2839c806320c7c2d2da25691b547dea  gcc/testsuite/gcc.test-framework/dg-nocache-sif-exp-U.c
! 90357a3c2b194e5862dc985d16e11277  gcc/testsuite/gcc.test-framework/dg-nocache-xif-exp-P.c
! 2639ae666676c2d160b420253ae51ce5  gcc/testsuite/gcc.test-framework/dg-nocache-xif-exp-XP.c
  cf826d99da7b7b0bb7cbfc6dcb9f9566  gcc/testsuite/gcc.test-framework/dg-outexists-exp-F.c
  f062cb0a2876f333f28f92446947c4ba  gcc/testsuite/gcc.test-framework/dg-outexists-exp-P.c
  110f2b0e49c56797a21c2c0891ac9e2a  gcc/testsuite/gcc.test-framework/dg-outexists-exp-XP.c
*************** f062cb0a2876f333f28f92446947c4ba  gcc/te
*** 48352,48369 ****
  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
! 0cc15a108beed2a60551b41eecccb6a1  gcc/testsuite/gcc.test-framework/gen_directive_tests
! 201ec337399ff7b56217e99a2a95a5d5  gcc/testsuite/gcc.test-framework/test-framework.awk
! aafefcdfeee623f5d86f894a99929978  gcc/testsuite/gcc.test-framework/test-framework.exp
  36cd9c1e3875c80db22097b9c2ad49b3  gcc/testsuite/gfortran.dg/PR19754_1.f90
! 0c95496297d3f7c6f4da308bb248095b  gcc/testsuite/gfortran.dg/PR19754_2.f90
! c835e26c02b37171b452acf68df9d289  gcc/testsuite/gfortran.dg/PR19872.f
  e610c44a50486d89cefb12161b0f892e  gcc/testsuite/gfortran.dg/PR24188.f
  329e9e80c60ab998e37a9ac1bd8c51d6  gcc/testsuite/gfortran.dg/PR37039.f90
  e81a681901aa58d870e549b414327a20  gcc/testsuite/gfortran.dg/PR40660.f90
! 5d89e165ceb5718f86b2393a288a76c6  gcc/testsuite/gfortran.dg/PR49268.f90
! b80e3aa36f6b4809c7dae27108e5c211  gcc/testsuite/gfortran.dg/Wall.f90
! 070618890ae93cbb3859341fa4b0a544  gcc/testsuite/gfortran.dg/Wno-all.f90
  340c46a8b74627b3ac516b9c17881c09  gcc/testsuite/gfortran.dg/abstract_type_1.f90
  09f3e24de8c49256786c712188c639a9  gcc/testsuite/gfortran.dg/abstract_type_2.f03
  33e9340128611895b68e7a3f309d4fad  gcc/testsuite/gfortran.dg/abstract_type_3.f03
--- 51825,51843 ----
  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
! 9daac0f4b32b04dc4b4b9f8d3bf4a60a  gcc/testsuite/gcc.test-framework/gen_directive_tests
! 1ad038a35a4d0cfeaf1dfa6fd5e619f9  gcc/testsuite/gcc.test-framework/test-framework.awk
! 4d2ebe2e254496c7274c76f84f1c06c0  gcc/testsuite/gcc.test-framework/test-framework.exp
  36cd9c1e3875c80db22097b9c2ad49b3  gcc/testsuite/gfortran.dg/PR19754_1.f90
! e8f29c2ce9f345e588516849caa9db8f  gcc/testsuite/gfortran.dg/PR19754_2.f90
! 7ea18cc404b53eee2348e3e57683bb56  gcc/testsuite/gfortran.dg/PR19872.f
  e610c44a50486d89cefb12161b0f892e  gcc/testsuite/gfortran.dg/PR24188.f
  329e9e80c60ab998e37a9ac1bd8c51d6  gcc/testsuite/gfortran.dg/PR37039.f90
  e81a681901aa58d870e549b414327a20  gcc/testsuite/gfortran.dg/PR40660.f90
! 264e3819dac395c8ef1f19270db55463  gcc/testsuite/gfortran.dg/PR49268.f90
! 5dc95d72848e7d5b3c56ed9e2b800fb3  gcc/testsuite/gfortran.dg/Wall.f90
! d4b81cf21855418328fc275b64177b54  gcc/testsuite/gfortran.dg/Wno-all.f90
! bccffb200355c36e33c86388445db26a  gcc/testsuite/gfortran.dg/abort_shouldfail.f90
  340c46a8b74627b3ac516b9c17881c09  gcc/testsuite/gfortran.dg/abstract_type_1.f90
  09f3e24de8c49256786c712188c639a9  gcc/testsuite/gfortran.dg/abstract_type_2.f03
  33e9340128611895b68e7a3f309d4fad  gcc/testsuite/gfortran.dg/abstract_type_3.f03
*************** da393c0e46b95f01536c25b8859e8ffe  gcc/te
*** 48376,48448 ****
  cf2e5f994d73facd869825d0076237eb  gcc/testsuite/gfortran.dg/access_spec_1.f90
  4fdfb1fed8968a235fb049567881faab  gcc/testsuite/gfortran.dg/access_spec_2.f90
  1336e2d3b3a54693490533e8a41fc353  gcc/testsuite/gfortran.dg/access_spec_3.f90
! ce32673088c3b07b2450b05154ff077f  gcc/testsuite/gfortran.dg/achar_1.f90
! 60e1f501eb290d0096e0f78fd22d5f3d  gcc/testsuite/gfortran.dg/achar_2.f90
  3a9c1e1a017255b161b18463ec08af8b  gcc/testsuite/gfortran.dg/achar_3.f90
! aa33a9e3fd021cdd35e2a6759b5e0735  gcc/testsuite/gfortran.dg/achar_4.f90
  2090226d50461c5eb8636ff1a06b5795  gcc/testsuite/gfortran.dg/achar_5.f90
! adc0eb00219635dd070fea1765eaea0f  gcc/testsuite/gfortran.dg/achar_6.F90
! 91716f26bc7ca7b8d81fcfcb59c7881a  gcc/testsuite/gfortran.dg/actual_array_constructor_1.f90
! 87cec4a2de8161fc453c6bd9657b09fc  gcc/testsuite/gfortran.dg/actual_array_constructor_2.f90
! 90a85866f0eaaaef7096cd50de601bd6  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
! ca795c1e3b594c6907aab3a0d293d8fb  gcc/testsuite/gfortran.dg/actual_array_offset_1.f90
! 9fe686601c49825a375e07fc5e76e934  gcc/testsuite/gfortran.dg/actual_array_result_1.f90
! 34959919da3b97a43fb3f415fe8e30f7  gcc/testsuite/gfortran.dg/actual_array_substr_1.f90
! 7a300b081e47b640c644b904366e081e  gcc/testsuite/gfortran.dg/actual_array_substr_2.f90
  777ea3356726306ad54815decc4f1d40  gcc/testsuite/gfortran.dg/actual_array_vect_1.f90
! ee4577437ecbe059cb38b9bcfd6cd506  gcc/testsuite/gfortran.dg/actual_pointer_function_1.f90
! 46617c4f3d35ac700d84aed2f04d829d  gcc/testsuite/gfortran.dg/actual_procedure_1.f90
  4e3c6f25050e7692e7a76475da821251  gcc/testsuite/gfortran.dg/actual_rank_check_1.f90
! 4a0dedd542d04578ce9edb0c1b869458  gcc/testsuite/gfortran.dg/adjustl_1.f90
! 97d97e0cf5e1abec8627bad7ec28f455  gcc/testsuite/gfortran.dg/advance_1.f90
  1f98e4f4da707441647f8b118a1375c8  gcc/testsuite/gfortran.dg/advance_2.f90
  b307041dd8a62e74a3083ce06f86ab6b  gcc/testsuite/gfortran.dg/advance_3.f90
! c221a4406b3fe3a48b32de161302a155  gcc/testsuite/gfortran.dg/advance_4.f90
! fb3e5d83f1c4442fb85e040332a898b1  gcc/testsuite/gfortran.dg/advance_5.f90
! f1badcf3a75e0f6f28834bb392c274f9  gcc/testsuite/gfortran.dg/advance_6.f90
! 83ab9728c8f2b2bdabe98873de2e6115  gcc/testsuite/gfortran.dg/aint_anint_1.f90
! f67c379ca084c8c44b7fc50cf7df6208  gcc/testsuite/gfortran.dg/aliasing_array_result_1.f90
! 46304ad9626c3290b7d914d632a3da42  gcc/testsuite/gfortran.dg/aliasing_dummy_1.f90
  8b4552e37a00ca309f85af9759908a94  gcc/testsuite/gfortran.dg/aliasing_dummy_2.f90
  a083a600a2313f038c16b43b7b4401b7  gcc/testsuite/gfortran.dg/aliasing_dummy_3.f90
! 3e49369cb2578494e46a7a1b763e90c7  gcc/testsuite/gfortran.dg/aliasing_dummy_4.f90
! 9bc28489e37e54116d211a292126b5b4  gcc/testsuite/gfortran.dg/aliasing_dummy_5.f90
  24b512d84abed6259b98219d8d44e490  gcc/testsuite/gfortran.dg/all_bounds_1.f90
  f69995fb8ed9056e4c9629c7b3ec4d2a  gcc/testsuite/gfortran.dg/alloc_alloc_expr_1.f90
  0c032a47fcd66c28edb88141b892affc  gcc/testsuite/gfortran.dg/alloc_alloc_expr_2.f90
  dc5bd15d39629bdb9c6791eb1b939d2b  gcc/testsuite/gfortran.dg/alloc_alloc_expr_3.f90
! 8d3f0a2208970d24217e0bf38ad3699b  gcc/testsuite/gfortran.dg/alloc_comp_assign_1.f90
! 70d80b2797ab5d1bb52deb917d268146  gcc/testsuite/gfortran.dg/alloc_comp_assign_10.f90
! 0b24a8e21fadfaa7291731dc19549036  gcc/testsuite/gfortran.dg/alloc_comp_assign_11.f90
! 105f895ee37ad11359731dc24ce86bb0  gcc/testsuite/gfortran.dg/alloc_comp_assign_12.f03
! 1d2cf79427b4c041f17470d0205af957  gcc/testsuite/gfortran.dg/alloc_comp_assign_13.f08
! ce3c5ae7cd8e4635a87d230d5d263ab0  gcc/testsuite/gfortran.dg/alloc_comp_assign_14.f08
! a7d3d47dae489c27b136ee114e9cb610  gcc/testsuite/gfortran.dg/alloc_comp_assign_15.f03
! d3cc31f30dcc8ad53b212e34a4909874  gcc/testsuite/gfortran.dg/alloc_comp_assign_2.f90
! afdc1d937c6fbd1b064165c9325fa117  gcc/testsuite/gfortran.dg/alloc_comp_assign_3.f90
! 4177396dbf37d479cedf198fee04fbe1  gcc/testsuite/gfortran.dg/alloc_comp_assign_4.f90
! aac08746a1749b4611104688b026a672  gcc/testsuite/gfortran.dg/alloc_comp_assign_5.f90
! 4bb8b6103df744004d509833eb5a1c53  gcc/testsuite/gfortran.dg/alloc_comp_assign_6.f90
! 6595a7d8e1433b85b97e461c1fc600f6  gcc/testsuite/gfortran.dg/alloc_comp_assign_7.f90
! 591b401939d7c22cb5775787145d0571  gcc/testsuite/gfortran.dg/alloc_comp_assign_8.f90
! 58538aa20ac15960285d34bfa47e2327  gcc/testsuite/gfortran.dg/alloc_comp_assign_9.f90
! 231853ec949fed3197cd7b9550dccdae  gcc/testsuite/gfortran.dg/alloc_comp_auto_array_1.f90
! 9fc8324fd5ca1c607ae169dcec8cc7a6  gcc/testsuite/gfortran.dg/alloc_comp_auto_array_2.f90
  71efc95b03105a916c949839be8aec51  gcc/testsuite/gfortran.dg/alloc_comp_auto_array_3.f90
! b7632688c0f7c6cb990aa4d22b415474  gcc/testsuite/gfortran.dg/alloc_comp_basics_1.f90
! c246da22001f26a4ed16d193e775d0e8  gcc/testsuite/gfortran.dg/alloc_comp_basics_2.f90
  8b7900064da86d65153abf5f6284186c  gcc/testsuite/gfortran.dg/alloc_comp_basics_3.f90
  6e253e7e71bc8f971291913c72ccf77d  gcc/testsuite/gfortran.dg/alloc_comp_basics_4.f90
! 79b7cbd1171287ebb79390a6c6a1b791  gcc/testsuite/gfortran.dg/alloc_comp_basics_5.f90
  721bec79b1d55c9e25da78fee9934826  gcc/testsuite/gfortran.dg/alloc_comp_basics_6.f90
! d4debc2ce0bb1e80387f6234b4a6b4f3  gcc/testsuite/gfortran.dg/alloc_comp_bounds_1.f90
! 6230b8636476b5203bd2e2b66435e901  gcc/testsuite/gfortran.dg/alloc_comp_class_1.f90
! 551756ec526f17a3c44cd2ca37c79789  gcc/testsuite/gfortran.dg/alloc_comp_class_2.f90
  52d1ff97d60e0604c88137e39d6ee817  gcc/testsuite/gfortran.dg/alloc_comp_class_3.f03
! 2ce10eaf2ca59b264163757f7f8bc173  gcc/testsuite/gfortran.dg/alloc_comp_class_4.f03
! a1bd30b80f1242828c22797c8748b0a6  gcc/testsuite/gfortran.dg/alloc_comp_class_5.f03
  f87a2c3e25c614f7c7331df1491f1a03  gcc/testsuite/gfortran.dg/alloc_comp_constraint_1.f90
  3c67ddbdd5451204f415b2315005e09e  gcc/testsuite/gfortran.dg/alloc_comp_constraint_2.f90
  3e06208aa88b798596871aff811fe396  gcc/testsuite/gfortran.dg/alloc_comp_constraint_3.f90
--- 51850,51922 ----
  cf2e5f994d73facd869825d0076237eb  gcc/testsuite/gfortran.dg/access_spec_1.f90
  4fdfb1fed8968a235fb049567881faab  gcc/testsuite/gfortran.dg/access_spec_2.f90
  1336e2d3b3a54693490533e8a41fc353  gcc/testsuite/gfortran.dg/access_spec_3.f90
! 024b0c6ed27c498f9827c6d8a6298e56  gcc/testsuite/gfortran.dg/achar_1.f90
! 053b79f4520555ad7134c3f252544b69  gcc/testsuite/gfortran.dg/achar_2.f90
  3a9c1e1a017255b161b18463ec08af8b  gcc/testsuite/gfortran.dg/achar_3.f90
! 931a0a6eddba0f0870458a4f0d21cc3c  gcc/testsuite/gfortran.dg/achar_4.f90
  2090226d50461c5eb8636ff1a06b5795  gcc/testsuite/gfortran.dg/achar_5.f90
! e1958079bf09a34c02c047726c40e9a8  gcc/testsuite/gfortran.dg/achar_6.F90
! 6603b8137b1d2b12a2316304b2e28e1c  gcc/testsuite/gfortran.dg/actual_array_constructor_1.f90
! 77c53461b9592bc7c739c7968778a554  gcc/testsuite/gfortran.dg/actual_array_constructor_2.f90
! 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
  777ea3356726306ad54815decc4f1d40  gcc/testsuite/gfortran.dg/actual_array_vect_1.f90
! 2c4f99ded669dbb5f61003acc0df50c8  gcc/testsuite/gfortran.dg/actual_pointer_function_1.f90
! 55f04e692d8438ae5dd1d7d237e67389  gcc/testsuite/gfortran.dg/actual_procedure_1.f90
  4e3c6f25050e7692e7a76475da821251  gcc/testsuite/gfortran.dg/actual_rank_check_1.f90
! 5470ca70abecb2cb8bc009a0ab9478d6  gcc/testsuite/gfortran.dg/adjustl_1.f90
! cf77cb6d37596bd0e27a58102462c242  gcc/testsuite/gfortran.dg/advance_1.f90
  1f98e4f4da707441647f8b118a1375c8  gcc/testsuite/gfortran.dg/advance_2.f90
  b307041dd8a62e74a3083ce06f86ab6b  gcc/testsuite/gfortran.dg/advance_3.f90
! 950d4b59c008b31536611f44f78327de  gcc/testsuite/gfortran.dg/advance_4.f90
! 3a0f34f6112f998eda25afed5e59c5fc  gcc/testsuite/gfortran.dg/advance_5.f90
! d4b4b4bcc6dcd02542142d705a240525  gcc/testsuite/gfortran.dg/advance_6.f90
! 5e6384aa45f8fdb9655ed3dd85ee19a0  gcc/testsuite/gfortran.dg/aint_anint_1.f90
! e0135cee32746e48b5ed9fa5d5d98377  gcc/testsuite/gfortran.dg/aliasing_array_result_1.f90
! 6921911318cbc5dfff85a331d2abbfb7  gcc/testsuite/gfortran.dg/aliasing_dummy_1.f90
  8b4552e37a00ca309f85af9759908a94  gcc/testsuite/gfortran.dg/aliasing_dummy_2.f90
  a083a600a2313f038c16b43b7b4401b7  gcc/testsuite/gfortran.dg/aliasing_dummy_3.f90
! 12cc66b2c60fce62b831cdd3a0975181  gcc/testsuite/gfortran.dg/aliasing_dummy_4.f90
! 958a5a6d113fe8f9d4972f67bd610290  gcc/testsuite/gfortran.dg/aliasing_dummy_5.f90
  24b512d84abed6259b98219d8d44e490  gcc/testsuite/gfortran.dg/all_bounds_1.f90
  f69995fb8ed9056e4c9629c7b3ec4d2a  gcc/testsuite/gfortran.dg/alloc_alloc_expr_1.f90
  0c032a47fcd66c28edb88141b892affc  gcc/testsuite/gfortran.dg/alloc_alloc_expr_2.f90
  dc5bd15d39629bdb9c6791eb1b939d2b  gcc/testsuite/gfortran.dg/alloc_alloc_expr_3.f90
! b027ec42897289c77db5816e99552694  gcc/testsuite/gfortran.dg/alloc_comp_assign_1.f90
! 3476724cd6a874cf79a4b225b4fddfd9  gcc/testsuite/gfortran.dg/alloc_comp_assign_10.f90
! acd0b640f94ab2d779f3375113f2cfdf  gcc/testsuite/gfortran.dg/alloc_comp_assign_11.f90
! ecd55c346e988960141afb7553a98ae5  gcc/testsuite/gfortran.dg/alloc_comp_assign_12.f03
! d922e822af6878c17645657a31f3a9ee  gcc/testsuite/gfortran.dg/alloc_comp_assign_13.f08
! f082841753f64949d8329e00653460ec  gcc/testsuite/gfortran.dg/alloc_comp_assign_14.f08
! 85b8ed4293af5c7bd2103a9d510c2d38  gcc/testsuite/gfortran.dg/alloc_comp_assign_15.f03
! 552851693306221f925e1819ce51de3f  gcc/testsuite/gfortran.dg/alloc_comp_assign_2.f90
! 42f08bf1aab342b9e46a1eca61a4eba8  gcc/testsuite/gfortran.dg/alloc_comp_assign_3.f90
! 46cc93b771f780be474234fcd524c4e6  gcc/testsuite/gfortran.dg/alloc_comp_assign_4.f90
! a934b71d1c8396bb06cefde1f067c1c1  gcc/testsuite/gfortran.dg/alloc_comp_assign_5.f90
! ca8eb6db97f18fddd890561a22a8cfbb  gcc/testsuite/gfortran.dg/alloc_comp_assign_6.f90
! 9d58c36e3fd89d060205c66e6fb24b1c  gcc/testsuite/gfortran.dg/alloc_comp_assign_7.f90
! 288d652f35b357f9426336dab36542ff  gcc/testsuite/gfortran.dg/alloc_comp_assign_8.f90
! b199d329559fc3f1b7e43203cdc460a8  gcc/testsuite/gfortran.dg/alloc_comp_assign_9.f90
! f3e77fcc01f3018d64a5ab3fb3368fd1  gcc/testsuite/gfortran.dg/alloc_comp_auto_array_1.f90
! 948fbff88548392e63b67e446403f2b3  gcc/testsuite/gfortran.dg/alloc_comp_auto_array_2.f90
  71efc95b03105a916c949839be8aec51  gcc/testsuite/gfortran.dg/alloc_comp_auto_array_3.f90
! 01702b87b457a827628539076733715b  gcc/testsuite/gfortran.dg/alloc_comp_basics_1.f90
! c161df8775b21819cda81ffa8bd1b23f  gcc/testsuite/gfortran.dg/alloc_comp_basics_2.f90
  8b7900064da86d65153abf5f6284186c  gcc/testsuite/gfortran.dg/alloc_comp_basics_3.f90
  6e253e7e71bc8f971291913c72ccf77d  gcc/testsuite/gfortran.dg/alloc_comp_basics_4.f90
! 90484683ec65b56a3670cb53473d5b6b  gcc/testsuite/gfortran.dg/alloc_comp_basics_5.f90
  721bec79b1d55c9e25da78fee9934826  gcc/testsuite/gfortran.dg/alloc_comp_basics_6.f90
! 01ce8d13f86e2c85f83ca4efb7539502  gcc/testsuite/gfortran.dg/alloc_comp_bounds_1.f90
! ae1746e87e5762c6b68826278ee28628  gcc/testsuite/gfortran.dg/alloc_comp_class_1.f90
! dfee92253f572cefadfc9896e31aa911  gcc/testsuite/gfortran.dg/alloc_comp_class_2.f90
  52d1ff97d60e0604c88137e39d6ee817  gcc/testsuite/gfortran.dg/alloc_comp_class_3.f03
! ea89ea8f65090a4151fb0cc736157f55  gcc/testsuite/gfortran.dg/alloc_comp_class_4.f03
! 344f8d4e949089ff45b60afe587aec49  gcc/testsuite/gfortran.dg/alloc_comp_class_5.f03
  f87a2c3e25c614f7c7331df1491f1a03  gcc/testsuite/gfortran.dg/alloc_comp_constraint_1.f90
  3c67ddbdd5451204f415b2315005e09e  gcc/testsuite/gfortran.dg/alloc_comp_constraint_2.f90
  3e06208aa88b798596871aff811fe396  gcc/testsuite/gfortran.dg/alloc_comp_constraint_3.f90
*************** f87a2c3e25c614f7c7331df1491f1a03  gcc/te
*** 48450,48567 ****
  bb6f5ded9e5d89706f3f4b7f1cbbfb59  gcc/testsuite/gfortran.dg/alloc_comp_constraint_5.f90
  ff39279b1b1d1b2cf717cd934ad7fff9  gcc/testsuite/gfortran.dg/alloc_comp_constraint_6.f90
  f505a34120cb4a5eb9452abb59150388  gcc/testsuite/gfortran.dg/alloc_comp_constraint_7.f90
! 4c027226ad2f9f267d82750c9e6d54f4  gcc/testsuite/gfortran.dg/alloc_comp_constructor_1.f90
! 9720c59e20d646f2e411ddae51b1158f  gcc/testsuite/gfortran.dg/alloc_comp_constructor_2.f90
! 392ca53ec29088da797cbfd8afc0f8d3  gcc/testsuite/gfortran.dg/alloc_comp_constructor_3.f90
! 6a569cc4857c096f02b029a2248b8f90  gcc/testsuite/gfortran.dg/alloc_comp_constructor_4.f90
! 9bf673c5350c6d8f47d86ab99bafdb63  gcc/testsuite/gfortran.dg/alloc_comp_constructor_5.f90
! 8456ae26128d9b6f4af4d8939310eb94  gcc/testsuite/gfortran.dg/alloc_comp_constructor_6.f90
! 8e3bfc9d62232142a30c2c327dd4a77b  gcc/testsuite/gfortran.dg/alloc_comp_constructor_7.f90
! badc70777bf5cbca02fc0f9a1878bedd  gcc/testsuite/gfortran.dg/alloc_comp_deep_copy_1.f03
! 26baecd77e518d9c3b705eff4bd65cb5  gcc/testsuite/gfortran.dg/alloc_comp_deep_copy_2.f03
! fa0f95571c1b3b9eeb59f0a4e8118cd4  gcc/testsuite/gfortran.dg/alloc_comp_deep_copy_3.f03
! e008c4462a077365656911a374178ac7  gcc/testsuite/gfortran.dg/alloc_comp_default_init_1.f90
! 6a9d046370949d2b37ace56fea1b7225  gcc/testsuite/gfortran.dg/alloc_comp_default_init_2.f90
  bb1218e53c344866c49d1bec5ea6f283  gcc/testsuite/gfortran.dg/alloc_comp_init_expr.f03
! 3e43e6908cd137e77cb95c5dfe01d550  gcc/testsuite/gfortran.dg/alloc_comp_initializer_1.f90
  3e06208aa88b798596871aff811fe396  gcc/testsuite/gfortran.dg/alloc_comp_initializer_2.f90
  256a2d9bc97dda2831f9c186b6b01a7a  gcc/testsuite/gfortran.dg/alloc_comp_initializer_3.f90
! ec9254a5e4f3b3921a7f654464214989  gcc/testsuite/gfortran.dg/alloc_comp_initializer_4.f03
  fbf6eb41453bed2d7b01d6d3ecd3b075  gcc/testsuite/gfortran.dg/alloc_comp_misc_1.f90
! ab9fdfef16d9f4a8e9153b12a588c914  gcc/testsuite/gfortran.dg/alloc_comp_optional_1.f90
! abb436a978d0d64583eab435e96b0786  gcc/testsuite/gfortran.dg/alloc_comp_result_1.f90
! a1c8b8a9ad6e582e6286ca1d8d2a3326  gcc/testsuite/gfortran.dg/alloc_comp_result_2.f90
! 716a7d40e401be66e1a15ca29b902c28  gcc/testsuite/gfortran.dg/alloc_comp_scalar_1.f90
  243cbfa77a9448c9019b236137e7803d  gcc/testsuite/gfortran.dg/alloc_comp_std.f90
! b13aabbc51ba8655f68f625191d3d633  gcc/testsuite/gfortran.dg/alloc_comp_transformational_1.f90
! 4484b499a092fb494d8cca5a956f1827  gcc/testsuite/gfortran.dg/allocatable_dummy_1.f90
  56cdd5c6ada96e8035ed20712fda44d5  gcc/testsuite/gfortran.dg/allocatable_dummy_2.f90
! eeacef5f0f483093796720efe0af6b90  gcc/testsuite/gfortran.dg/allocatable_dummy_3.f90
! 9535ab4b635b57fa0e1984fa99a3dfb4  gcc/testsuite/gfortran.dg/allocatable_function_1.f90
! 9f97d831a6f6f4a07b31cf15cf10ad28  gcc/testsuite/gfortran.dg/allocatable_function_10.f90
  188ed4e66439989e93ff27a2bdcc86e5  gcc/testsuite/gfortran.dg/allocatable_function_2.f90
! 0550db37e49991034cbd99333bd67739  gcc/testsuite/gfortran.dg/allocatable_function_3.f90
  395e73dc6644069f80ba22c2096b8078  gcc/testsuite/gfortran.dg/allocatable_function_4.f90
! f49b54ba1324c9645d5ab321e82b6873  gcc/testsuite/gfortran.dg/allocatable_function_5.f90
! a1252b99fdac49d6a298e94e77bea067  gcc/testsuite/gfortran.dg/allocatable_function_6.f90
! 5204edb24b79e494174f82a33f3de0ac  gcc/testsuite/gfortran.dg/allocatable_function_7.f90
! b2180d1eb01a232e3eadd66e1a921466  gcc/testsuite/gfortran.dg/allocatable_function_8.f90
  16255c1e6ab922bb040b8772e92bf5c2  gcc/testsuite/gfortran.dg/allocatable_function_9.f90
  0eaf05114b7069214e95edca38338c8d  gcc/testsuite/gfortran.dg/allocatable_module_1.f90
! 118b37f650281121c6f7a6e4cf4aa38b  gcc/testsuite/gfortran.dg/allocatable_scalar_1.f90
! 02dd67e4175ac48686f16220da9b9eeb  gcc/testsuite/gfortran.dg/allocatable_scalar_10.f90
  cabccc0c34b98263f6396cbf679be03f  gcc/testsuite/gfortran.dg/allocatable_scalar_11.f90
! 0bae42a523575ae8558a8311800954bd  gcc/testsuite/gfortran.dg/allocatable_scalar_12.f90
! 0bc51a69c9ac9a55fac659de43fcaa4c  gcc/testsuite/gfortran.dg/allocatable_scalar_13.f90
  fa4377be01ca69ae5c5bef2dac378c95  gcc/testsuite/gfortran.dg/allocatable_scalar_2.f90
! 7854ba2689048325ac7e9aaf4eecfe45  gcc/testsuite/gfortran.dg/allocatable_scalar_3.f90
! 991bf8e6fc3e700db70a444ca1e4c9c4  gcc/testsuite/gfortran.dg/allocatable_scalar_4.f90
! 0452d2ae2ad0ba85d44b0e4fc32be86e  gcc/testsuite/gfortran.dg/allocatable_scalar_5.f90
! aad2f9f0db664a3b7edac15f2083c164  gcc/testsuite/gfortran.dg/allocatable_scalar_6.f90
! 0cf46fb1b972cef547a15b98c99067ed  gcc/testsuite/gfortran.dg/allocatable_scalar_7.f90
! fea5e495c3693fa83e789fad350b77c1  gcc/testsuite/gfortran.dg/allocatable_scalar_8.f90
! 4a889a7fef27e234354d8ab8c8afda42  gcc/testsuite/gfortran.dg/allocatable_scalar_9.f90
  b2bb9a39d2749a07d2ef93fb4bd4b9b1  gcc/testsuite/gfortran.dg/allocate_alloc_opt_1.f90
! a85311f77c807137eeb26b218ec3a3e4  gcc/testsuite/gfortran.dg/allocate_alloc_opt_10.f90
  da5d5b7965daec91596c4c854f913229  gcc/testsuite/gfortran.dg/allocate_alloc_opt_11.f90
  690e1952bbd8580233f07cf2ebf12bb6  gcc/testsuite/gfortran.dg/allocate_alloc_opt_12.f90
  defe3a05f941a9b5c9f6a22338429ba8  gcc/testsuite/gfortran.dg/allocate_alloc_opt_13.f90
  3c813b0a7d13f9aa20c4646947272369  gcc/testsuite/gfortran.dg/allocate_alloc_opt_2.f90
! d2e2db611a120ae0c8ccc46d77f60b4f  gcc/testsuite/gfortran.dg/allocate_alloc_opt_3.f90
  99d5a861de70768d4b39b55425f3fbe6  gcc/testsuite/gfortran.dg/allocate_alloc_opt_4.f90
  41880aff4e6fc2f7230d0d90d9e456c7  gcc/testsuite/gfortran.dg/allocate_alloc_opt_5.f90
! 8cea99e7e751f86e3165c30c3e55ae97  gcc/testsuite/gfortran.dg/allocate_alloc_opt_6.f90
  597103d48c04622391db357f32409a4d  gcc/testsuite/gfortran.dg/allocate_alloc_opt_7.f90
  5e798936b9fb2d772485a6a5a7fc344f  gcc/testsuite/gfortran.dg/allocate_alloc_opt_8.f90
  90a5c6f59d30dae22d02074a82b8cf2d  gcc/testsuite/gfortran.dg/allocate_alloc_opt_9.f90
! b4a7703b0fdb74fb104e9430417f16e6  gcc/testsuite/gfortran.dg/allocate_assumed_charlen_1.f90
  7ad72f1f76221dbdec0ab077ae3b8dd8  gcc/testsuite/gfortran.dg/allocate_char_star_scalar_1.f90
  c8af6a632c789d3dc3fb0b76448852dd  gcc/testsuite/gfortran.dg/allocate_class_1.f90
  5d06d590dfc06d981d4fd70c9246eb64  gcc/testsuite/gfortran.dg/allocate_class_2.f90
! 3d127290e55d43d0800d42e2b2c9dbae  gcc/testsuite/gfortran.dg/allocate_class_3.f90
! 868beade88be6c00a9168db4df30e3c2  gcc/testsuite/gfortran.dg/allocate_class_4.f90
! 29eaba72c86bd46d593da70b40f81617  gcc/testsuite/gfortran.dg/allocate_deferred_char_scalar_1.f03
! 99eb73c31ab5aa2a657823367814f1c5  gcc/testsuite/gfortran.dg/allocate_deferred_char_scalar_2.f03
  ff2e982bde22ac51a61fd6cb3b87bbf5  gcc/testsuite/gfortran.dg/allocate_derived_1.f90
  06dc937b7f96471c2676fbd37045a96e  gcc/testsuite/gfortran.dg/allocate_derived_2.f90
  6941791b2bcce63c7b4dedc3e2e6dce4  gcc/testsuite/gfortran.dg/allocate_derived_3.f90
  7489adc4a057289a0a380306d774dc64  gcc/testsuite/gfortran.dg/allocate_derived_4.f90
! a23833047aaf1e0f01cb61df77184fa9  gcc/testsuite/gfortran.dg/allocate_derived_5.f90
  6afacc0454383443e609022b1a7fca39  gcc/testsuite/gfortran.dg/allocate_error_1.f90
  25b2bea765ebf56779e032ecc6218872  gcc/testsuite/gfortran.dg/allocate_error_2.f90
  f82795c799ca353989b767d7ea2af8bf  gcc/testsuite/gfortran.dg/allocate_error_3.f90
  b985d75d4d77d7f24d29efbb0266b7c1  gcc/testsuite/gfortran.dg/allocate_error_4.f90
  5fe2682fb743a002bbc041fa74b379a2  gcc/testsuite/gfortran.dg/allocate_error_5.f90
  3e270457a0730f64cb7deaefe7256b90  gcc/testsuite/gfortran.dg/allocate_error_6.f90
  fb64bc7d356ec60804fbf43d60862c56  gcc/testsuite/gfortran.dg/allocate_scalar_with_shape.f90
  85b517b1e2ad96a7d4e84672378d9fc3  gcc/testsuite/gfortran.dg/allocate_stat.f90
  253a002731f9a4dd5588b787f6b8b83c  gcc/testsuite/gfortran.dg/allocate_stat_2.f90
! ff3f13c9787c4de8c525fed52a7cf077  gcc/testsuite/gfortran.dg/allocate_with_arrayspec_1.f90
! 21039e5391c81439295b5f228ebb435c  gcc/testsuite/gfortran.dg/allocate_with_mold_1.f90
! 38e31a9c8efb7f50005c46dfb7e1d27e  gcc/testsuite/gfortran.dg/allocate_with_source_1.f90
! b7a38e6411c1c3bdc53bf81a10203dfc  gcc/testsuite/gfortran.dg/allocate_with_source_10.f08
! eb2a7d116743913f7db6287a6d095620  gcc/testsuite/gfortran.dg/allocate_with_source_11.f08
! ff429bd0bc475a448da7367e1eaa0b9e  gcc/testsuite/gfortran.dg/allocate_with_source_12.f03
  7eb26a0ecf38b62a277060acb6ecd19a  gcc/testsuite/gfortran.dg/allocate_with_source_13.f03
  e983e31f5907aa7a18c2e0f43cdf3d9a  gcc/testsuite/gfortran.dg/allocate_with_source_14.f03
! 9250c471454be335a2368df6387e29c3  gcc/testsuite/gfortran.dg/allocate_with_source_15.f03
! b258ddf78d1fcab864d262758b6e66d2  gcc/testsuite/gfortran.dg/allocate_with_source_16.f90
! 72563762990fad004371ce515720ae4d  gcc/testsuite/gfortran.dg/allocate_with_source_17.f03
! 64f8c5ad89b6221999b048eb2ce143f1  gcc/testsuite/gfortran.dg/allocate_with_source_18.f03
  946a2383e227552184dd73f6cbb173d8  gcc/testsuite/gfortran.dg/allocate_with_source_19.f08
! f4a7a7cae5d96eb1020cfcf8e519b49b  gcc/testsuite/gfortran.dg/allocate_with_source_2.f90
! 8c1d244f6031789916017b9201b706b1  gcc/testsuite/gfortran.dg/allocate_with_source_20.f03
  90475765bad6f2c344f6920081fb9acf  gcc/testsuite/gfortran.dg/allocate_with_source_21.f03
! 2de4f91af3d32f127032b5fc5913705c  gcc/testsuite/gfortran.dg/allocate_with_source_22.f03
! 462422da48acec551f442f5e99f19957  gcc/testsuite/gfortran.dg/allocate_with_source_23.f03
! c1d7f15897b6cab5f86384b9df80508d  gcc/testsuite/gfortran.dg/allocate_with_source_24.f90
  8cd7bcf0efad3a6d0e1f5b5492a6cdf7  gcc/testsuite/gfortran.dg/allocate_with_source_3.f90
  6e6cc1fe5ed4f0f5c650bc8b6e0634b0  gcc/testsuite/gfortran.dg/allocate_with_source_4.f90
! 3fcbffe2fe66e1f4163169ee4796df91  gcc/testsuite/gfortran.dg/allocate_with_source_5.f90
! caf8fc2439a844f255292d11dfd8a57a  gcc/testsuite/gfortran.dg/allocate_with_source_6.f90
! ed07778e1f8401fbc6dceb72b50077e9  gcc/testsuite/gfortran.dg/allocate_with_source_7.f08
! fb6a9ed182347fd8bf5930ea2f0fc47e  gcc/testsuite/gfortran.dg/allocate_with_source_8.f08
! c4845928f0ee02b0b900e67e8df65563  gcc/testsuite/gfortran.dg/allocate_with_source_9.f08
  f365398908b2ecaec275ddf13d417ae8  gcc/testsuite/gfortran.dg/allocate_with_typespec_1.f90
  9453460bf698fbd1b7dc5f2476a12927  gcc/testsuite/gfortran.dg/allocate_with_typespec_2.f
  70168a20f67f55e5aa30c5b3248d2eaf  gcc/testsuite/gfortran.dg/allocate_with_typespec_3.f90
--- 51924,52044 ----
  bb6f5ded9e5d89706f3f4b7f1cbbfb59  gcc/testsuite/gfortran.dg/alloc_comp_constraint_5.f90
  ff39279b1b1d1b2cf717cd934ad7fff9  gcc/testsuite/gfortran.dg/alloc_comp_constraint_6.f90
  f505a34120cb4a5eb9452abb59150388  gcc/testsuite/gfortran.dg/alloc_comp_constraint_7.f90
! 9e9d65a5506ecabd30fb137f138a5805  gcc/testsuite/gfortran.dg/alloc_comp_constructor_1.f90
! c11bec535a925c305052103b7b65a881  gcc/testsuite/gfortran.dg/alloc_comp_constructor_2.f90
! 4d583444edcbee67eef767c7fd27dc90  gcc/testsuite/gfortran.dg/alloc_comp_constructor_3.f90
! 2b815bd385c4d92893def6f23e361a90  gcc/testsuite/gfortran.dg/alloc_comp_constructor_4.f90
! 30573851701269f63a154b391fbb05c1  gcc/testsuite/gfortran.dg/alloc_comp_constructor_5.f90
! a44209b4b22b50ba22251b2901229b35  gcc/testsuite/gfortran.dg/alloc_comp_constructor_6.f90
! 2d61f518f515d9ae9820a34503d1c10a  gcc/testsuite/gfortran.dg/alloc_comp_constructor_7.f90
! 313c2cc84996c4d6499e018b8055abd1  gcc/testsuite/gfortran.dg/alloc_comp_deep_copy_1.f03
! 291144a665a881ed73c245a048408de6  gcc/testsuite/gfortran.dg/alloc_comp_deep_copy_2.f03
! 63268580aa4691498e32913a93d4c74e  gcc/testsuite/gfortran.dg/alloc_comp_deep_copy_3.f03
! 4d1758fe9739756fdf38a4fc8d5687bb  gcc/testsuite/gfortran.dg/alloc_comp_default_init_1.f90
! 3ac49823c9b600313f371a6ed0f57568  gcc/testsuite/gfortran.dg/alloc_comp_default_init_2.f90
  bb1218e53c344866c49d1bec5ea6f283  gcc/testsuite/gfortran.dg/alloc_comp_init_expr.f03
! 22a4efd3aae79be1169c7006f37fa9dc  gcc/testsuite/gfortran.dg/alloc_comp_initializer_1.f90
  3e06208aa88b798596871aff811fe396  gcc/testsuite/gfortran.dg/alloc_comp_initializer_2.f90
  256a2d9bc97dda2831f9c186b6b01a7a  gcc/testsuite/gfortran.dg/alloc_comp_initializer_3.f90
! a2dc91e5ef7c3260f3dc266b3b789b07  gcc/testsuite/gfortran.dg/alloc_comp_initializer_4.f03
  fbf6eb41453bed2d7b01d6d3ecd3b075  gcc/testsuite/gfortran.dg/alloc_comp_misc_1.f90
! 5cd9e1ec9b054f33f1c534522273276d  gcc/testsuite/gfortran.dg/alloc_comp_optional_1.f90
! 7e9332be20adf5e7f109dd5d06ab8a5d  gcc/testsuite/gfortran.dg/alloc_comp_result_1.f90
! 3c9aee015dd5628d69558a2af0f2e6b5  gcc/testsuite/gfortran.dg/alloc_comp_result_2.f90
! 39525fca12dae051a4414dad3ab2cb02  gcc/testsuite/gfortran.dg/alloc_comp_scalar_1.f90
  243cbfa77a9448c9019b236137e7803d  gcc/testsuite/gfortran.dg/alloc_comp_std.f90
! 909cf7d56a64fc559ec64c2bb71d1197  gcc/testsuite/gfortran.dg/alloc_comp_transformational_1.f90
! c59ad781dee7ec8e48a5f7ca04827100  gcc/testsuite/gfortran.dg/allocatable_dummy_1.f90
  56cdd5c6ada96e8035ed20712fda44d5  gcc/testsuite/gfortran.dg/allocatable_dummy_2.f90
! b44c3949481c974b2c6896675c16886c  gcc/testsuite/gfortran.dg/allocatable_dummy_3.f90
! 7dbb81fc5caccc0726f3a31aad5cfd22  gcc/testsuite/gfortran.dg/allocatable_function_1.f90
! 1160767b791edf9bac41312fc92b112a  gcc/testsuite/gfortran.dg/allocatable_function_10.f90
  188ed4e66439989e93ff27a2bdcc86e5  gcc/testsuite/gfortran.dg/allocatable_function_2.f90
! 92aecb9e6b0b8bf046c0afb4d76e55c6  gcc/testsuite/gfortran.dg/allocatable_function_3.f90
  395e73dc6644069f80ba22c2096b8078  gcc/testsuite/gfortran.dg/allocatable_function_4.f90
! 7700a3dd6c4c26a4bb7cd0535eac9ba4  gcc/testsuite/gfortran.dg/allocatable_function_5.f90
! a412f66041d99e3f1f3ee5dd93fb1ada  gcc/testsuite/gfortran.dg/allocatable_function_6.f90
! d00145de5e69e4d964abaa0baebc8c0e  gcc/testsuite/gfortran.dg/allocatable_function_7.f90
! def8ea3836a599ae2a0d62d897cb9617  gcc/testsuite/gfortran.dg/allocatable_function_8.f90
  16255c1e6ab922bb040b8772e92bf5c2  gcc/testsuite/gfortran.dg/allocatable_function_9.f90
  0eaf05114b7069214e95edca38338c8d  gcc/testsuite/gfortran.dg/allocatable_module_1.f90
! 405f380e9ecba9b52cabf176e55381c9  gcc/testsuite/gfortran.dg/allocatable_scalar_1.f90
! 50fa463fc31e07aec160d27e660bca34  gcc/testsuite/gfortran.dg/allocatable_scalar_10.f90
  cabccc0c34b98263f6396cbf679be03f  gcc/testsuite/gfortran.dg/allocatable_scalar_11.f90
! 776569363fd633834cdb518729295841  gcc/testsuite/gfortran.dg/allocatable_scalar_12.f90
! 95a42da0b14c707b93f885fe98e016a8  gcc/testsuite/gfortran.dg/allocatable_scalar_13.f90
  fa4377be01ca69ae5c5bef2dac378c95  gcc/testsuite/gfortran.dg/allocatable_scalar_2.f90
! c47f65db3d738b1865a53824aa8bb73a  gcc/testsuite/gfortran.dg/allocatable_scalar_3.f90
! 5e08e0b169828fe66ef91fcf4aa232f2  gcc/testsuite/gfortran.dg/allocatable_scalar_4.f90
! 19f21a43c0f4c0516548e9bf8a8426ad  gcc/testsuite/gfortran.dg/allocatable_scalar_5.f90
! b3694822ec55a65cded0eb547112d6c3  gcc/testsuite/gfortran.dg/allocatable_scalar_6.f90
! 34fbe4198d72f8bce6b3de228d2ce5d6  gcc/testsuite/gfortran.dg/allocatable_scalar_7.f90
! 6c10589f9d19cd11cc81a64dd2582850  gcc/testsuite/gfortran.dg/allocatable_scalar_8.f90
! f8d746a87a77bbbeb5c122d7f9cab06a  gcc/testsuite/gfortran.dg/allocatable_scalar_9.f90
  b2bb9a39d2749a07d2ef93fb4bd4b9b1  gcc/testsuite/gfortran.dg/allocate_alloc_opt_1.f90
! 28c653ee16e10f980aff3ca6f50289a9  gcc/testsuite/gfortran.dg/allocate_alloc_opt_10.f90
  da5d5b7965daec91596c4c854f913229  gcc/testsuite/gfortran.dg/allocate_alloc_opt_11.f90
  690e1952bbd8580233f07cf2ebf12bb6  gcc/testsuite/gfortran.dg/allocate_alloc_opt_12.f90
  defe3a05f941a9b5c9f6a22338429ba8  gcc/testsuite/gfortran.dg/allocate_alloc_opt_13.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
  41880aff4e6fc2f7230d0d90d9e456c7  gcc/testsuite/gfortran.dg/allocate_alloc_opt_5.f90
! 3162e656f0f87f9864c9db26f113d416  gcc/testsuite/gfortran.dg/allocate_alloc_opt_6.f90
  597103d48c04622391db357f32409a4d  gcc/testsuite/gfortran.dg/allocate_alloc_opt_7.f90
  5e798936b9fb2d772485a6a5a7fc344f  gcc/testsuite/gfortran.dg/allocate_alloc_opt_8.f90
  90a5c6f59d30dae22d02074a82b8cf2d  gcc/testsuite/gfortran.dg/allocate_alloc_opt_9.f90
! 0ff3906a5d2a79515fe4bc342d371ffc  gcc/testsuite/gfortran.dg/allocate_assumed_charlen_1.f90
! 421060d5d03bd827379d2d95e2b371ab  gcc/testsuite/gfortran.dg/allocate_assumed_charlen_2.f90
! 9651fbe7aa57f3b86f75961263b21aa5  gcc/testsuite/gfortran.dg/allocate_assumed_charlen_3.f90
  7ad72f1f76221dbdec0ab077ae3b8dd8  gcc/testsuite/gfortran.dg/allocate_char_star_scalar_1.f90
  c8af6a632c789d3dc3fb0b76448852dd  gcc/testsuite/gfortran.dg/allocate_class_1.f90
  5d06d590dfc06d981d4fd70c9246eb64  gcc/testsuite/gfortran.dg/allocate_class_2.f90
! 3b873bdedde645be3f26094030bc29a6  gcc/testsuite/gfortran.dg/allocate_class_3.f90
! 6fa4e8002e9d69d571d9ec8598f9889a  gcc/testsuite/gfortran.dg/allocate_class_4.f90
! 8a886493e1b962cbfbe3ce9aa829d3a7  gcc/testsuite/gfortran.dg/allocate_deferred_char_scalar_1.f03
! 215caa91f9d220e3892c4f395e00b7d8  gcc/testsuite/gfortran.dg/allocate_deferred_char_scalar_2.f03
  ff2e982bde22ac51a61fd6cb3b87bbf5  gcc/testsuite/gfortran.dg/allocate_derived_1.f90
  06dc937b7f96471c2676fbd37045a96e  gcc/testsuite/gfortran.dg/allocate_derived_2.f90
  6941791b2bcce63c7b4dedc3e2e6dce4  gcc/testsuite/gfortran.dg/allocate_derived_3.f90
  7489adc4a057289a0a380306d774dc64  gcc/testsuite/gfortran.dg/allocate_derived_4.f90
! b1824e12af47d8aa529858e73c9b06f3  gcc/testsuite/gfortran.dg/allocate_derived_5.f90
  6afacc0454383443e609022b1a7fca39  gcc/testsuite/gfortran.dg/allocate_error_1.f90
  25b2bea765ebf56779e032ecc6218872  gcc/testsuite/gfortran.dg/allocate_error_2.f90
  f82795c799ca353989b767d7ea2af8bf  gcc/testsuite/gfortran.dg/allocate_error_3.f90
  b985d75d4d77d7f24d29efbb0266b7c1  gcc/testsuite/gfortran.dg/allocate_error_4.f90
  5fe2682fb743a002bbc041fa74b379a2  gcc/testsuite/gfortran.dg/allocate_error_5.f90
  3e270457a0730f64cb7deaefe7256b90  gcc/testsuite/gfortran.dg/allocate_error_6.f90
+ 5104ce5f1f698379877a63ce2e5b7747  gcc/testsuite/gfortran.dg/allocate_error_7.f90
  fb64bc7d356ec60804fbf43d60862c56  gcc/testsuite/gfortran.dg/allocate_scalar_with_shape.f90
  85b517b1e2ad96a7d4e84672378d9fc3  gcc/testsuite/gfortran.dg/allocate_stat.f90
  253a002731f9a4dd5588b787f6b8b83c  gcc/testsuite/gfortran.dg/allocate_stat_2.f90
! 6d3f169e1cbf329f60af4c22a88530ea  gcc/testsuite/gfortran.dg/allocate_with_arrayspec_1.f90
! bff4f86cadc34cdb60ab04c217d46dbd  gcc/testsuite/gfortran.dg/allocate_with_mold_1.f90
! 8525309ee0a25fc4ec16a87c02a27e9a  gcc/testsuite/gfortran.dg/allocate_with_source_1.f90
! 31f46b6f8cf8a1610b258ea73d0033de  gcc/testsuite/gfortran.dg/allocate_with_source_10.f08
! 3e69f8fb58e06a24fc9934b0040bc33c  gcc/testsuite/gfortran.dg/allocate_with_source_11.f08
! d76b12105ec17a95100b1c0109eba21e  gcc/testsuite/gfortran.dg/allocate_with_source_12.f03
  7eb26a0ecf38b62a277060acb6ecd19a  gcc/testsuite/gfortran.dg/allocate_with_source_13.f03
  e983e31f5907aa7a18c2e0f43cdf3d9a  gcc/testsuite/gfortran.dg/allocate_with_source_14.f03
! 7750d599d9ba89b3f5a9b83001a920ef  gcc/testsuite/gfortran.dg/allocate_with_source_15.f03
! f68a5464b779f75e7ff8e50d9d8b199e  gcc/testsuite/gfortran.dg/allocate_with_source_16.f90
! bd4118fd768f3467307efc9602103e4c  gcc/testsuite/gfortran.dg/allocate_with_source_17.f03
! 5775f153c5494d50400e6626e02f5961  gcc/testsuite/gfortran.dg/allocate_with_source_18.f03
  946a2383e227552184dd73f6cbb173d8  gcc/testsuite/gfortran.dg/allocate_with_source_19.f08
! 2b2d4a61c562f2603583f54a939ce7e2  gcc/testsuite/gfortran.dg/allocate_with_source_2.f90
! 8cec3c5d5a497a01139233c25d6e5dae  gcc/testsuite/gfortran.dg/allocate_with_source_20.f03
  90475765bad6f2c344f6920081fb9acf  gcc/testsuite/gfortran.dg/allocate_with_source_21.f03
! 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
  8cd7bcf0efad3a6d0e1f5b5492a6cdf7  gcc/testsuite/gfortran.dg/allocate_with_source_3.f90
  6e6cc1fe5ed4f0f5c650bc8b6e0634b0  gcc/testsuite/gfortran.dg/allocate_with_source_4.f90
! 6df025374b593e0339c7b746700d109e  gcc/testsuite/gfortran.dg/allocate_with_source_5.f90
! 7f6a8b7d1a41fd76b5f7f49b5f8f978a  gcc/testsuite/gfortran.dg/allocate_with_source_6.f90
! dd0fe30232453853a9ac016a3b770647  gcc/testsuite/gfortran.dg/allocate_with_source_7.f08
! a2f1591d0fea9f038067fca427f45b68  gcc/testsuite/gfortran.dg/allocate_with_source_8.f08
! 9d8b13b0d407777c4406fac7e457d097  gcc/testsuite/gfortran.dg/allocate_with_source_9.f08
  f365398908b2ecaec275ddf13d417ae8  gcc/testsuite/gfortran.dg/allocate_with_typespec_1.f90
  9453460bf698fbd1b7dc5f2476a12927  gcc/testsuite/gfortran.dg/allocate_with_typespec_2.f
  70168a20f67f55e5aa30c5b3248d2eaf  gcc/testsuite/gfortran.dg/allocate_with_typespec_3.f90
*************** f365398908b2ecaec275ddf13d417ae8  gcc/te
*** 48569,48645 ****
  a7ba3204ddef00d1d0278c5b0eba1e4a  gcc/testsuite/gfortran.dg/allocate_with_typespec_5.f90
  a400c157529619600d21c8ab0d9d4ccc  gcc/testsuite/gfortran.dg/allocate_with_typespec_6.f90
  fe3a537d232e11c904ccb01a3aab7662  gcc/testsuite/gfortran.dg/allocate_with_typespec_7.f90
! b2726c808fbff578b101a8bd04559d31  gcc/testsuite/gfortran.dg/allocate_zerosize_1.f90
  12f3d33d5ae0d7cf655d8f39f073d9a9  gcc/testsuite/gfortran.dg/allocate_zerosize_2.f90
! dfe83972bd363b408d4abcf6d4b7ad17  gcc/testsuite/gfortran.dg/allocate_zerosize_3.f
  6a729cf1f6bf67aa0e2493345f68e5fc  gcc/testsuite/gfortran.dg/altreturn_1.f90
  7cbc1f043d9ba68898b8a84dff22a6f7  gcc/testsuite/gfortran.dg/altreturn_2.f90
! 77922fe0c3e40fd9558aacbd5dd10492  gcc/testsuite/gfortran.dg/altreturn_3.f90
  b852529cec3b92b7d12cc9eec0f3559f  gcc/testsuite/gfortran.dg/altreturn_4.f90
! 2ea5aa752f5e87f5a8e62c90bd37b6d1  gcc/testsuite/gfortran.dg/altreturn_5.f90
  9b31f9f4ca2bcd7c062e04bc30721dc3  gcc/testsuite/gfortran.dg/altreturn_6.f90
! 6a910b032025fe47523df7cd010b4a31  gcc/testsuite/gfortran.dg/altreturn_7.f90
! 233eef9f00992461977dfc6c8ec80c9f  gcc/testsuite/gfortran.dg/altreturn_8.f90
  5efcafe8829b585812ac42002ce9079c  gcc/testsuite/gfortran.dg/ambiguous_reference_1.f90
  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
! 8fba5f57076c3a9c12aae16ada053e3c  gcc/testsuite/gfortran.dg/and_or_xor.f90
! a06a0d43c8e204b48634d1f21aaf3fd1  gcc/testsuite/gfortran.dg/anint_1.f90
! 7f0a822ca0d70f606f0f4c3848f0400b  gcc/testsuite/gfortran.dg/any_all_1.f90
  5b461aef3cf8d05dc4596493df9d7d61  gcc/testsuite/gfortran.dg/any_all_2.f90
  653613c1aa45ec0044128e707a82b730  gcc/testsuite/gfortran.dg/any_loc.f90
! 8828ed4ce0c32d74d2fb34eb557c2eea  gcc/testsuite/gfortran.dg/anyallcount_1.f90
! 7c49b5aae0452b3d9de83c951ecc812f  gcc/testsuite/gfortran.dg/append_1.f90
! 5460a5f0cceb38ed7489027fb858074c  gcc/testsuite/gfortran.dg/argument_checking_1.f90
! a6ea59b4d1728e5c25c81f238c7e4590  gcc/testsuite/gfortran.dg/argument_checking_10.f90
  76e77c51925120f48cf48c0811e8e2fc  gcc/testsuite/gfortran.dg/argument_checking_11.f90
  76ffaeb49d8f6b0d2645829fb196c220  gcc/testsuite/gfortran.dg/argument_checking_12.f90
! 6ac3c475ee98eebdc3f521a9d8d92b8b  gcc/testsuite/gfortran.dg/argument_checking_13.f90
  75637f318d12921b9ae87cf37cdb9216  gcc/testsuite/gfortran.dg/argument_checking_14.f90
! a14b17cf1e2ff2b51280729790c30ec4  gcc/testsuite/gfortran.dg/argument_checking_15.f90
  2f5a10924c0b14d8e5917293d1055742  gcc/testsuite/gfortran.dg/argument_checking_16.f90
  6e283f775be3991e1a1dda6a0da414c3  gcc/testsuite/gfortran.dg/argument_checking_17.f90
! 9f1460a675b6aeaadf7dd05ee0c0b7f9  gcc/testsuite/gfortran.dg/argument_checking_18.f90
! 43d05959a703f65ae5578471ec825915  gcc/testsuite/gfortran.dg/argument_checking_2.f90
! 0b1d72470827e63cf41494869a3bd61f  gcc/testsuite/gfortran.dg/argument_checking_3.f90
! 03695687553e3cca7daa12623306b717  gcc/testsuite/gfortran.dg/argument_checking_4.f90
! 69af5c58e4f909f32ecfe45175c6ff0b  gcc/testsuite/gfortran.dg/argument_checking_5.f90
! cce53319afa0e85db402ea30f6cd6dd5  gcc/testsuite/gfortran.dg/argument_checking_6.f90
  3fabcfeb9fbe60fcace7516e5730b62d  gcc/testsuite/gfortran.dg/argument_checking_7.f90
! e0bfbb1ca3f13f57e03913eacb17449a  gcc/testsuite/gfortran.dg/argument_checking_8.f90
  ae5c0c1a40358f4209139ab1ba4c93a1  gcc/testsuite/gfortran.dg/argument_checking_9.f90
  f2050f4ab1ae68ef71906c613ddc6d03  gcc/testsuite/gfortran.dg/arith_divide.f
  3130a308b1d1471577ea44bf582c1bec  gcc/testsuite/gfortran.dg/arith_divide_no_check.f
! 897c0fee824d06d765a59b65fed064f8  gcc/testsuite/gfortran.dg/arithmetic_if.f90
  ad54c15b47e17edab3af8726783901c3  gcc/testsuite/gfortran.dg/arithmetic_overflow_1.f90
! 91775ce54ebd3e79f1c1d61923dcc451  gcc/testsuite/gfortran.dg/array_1.f90
! 54298982a8a4fc33f10b2261a004d138  gcc/testsuite/gfortran.dg/array_2.f90
  05a8e8fe320b8ec1d79b799c4d7a8693  gcc/testsuite/gfortran.dg/array_3.f90
  ba4a4be22e02a07d190e1a4ffc9a1eb5  gcc/testsuite/gfortran.dg/array_4.f90
  1789b0dbbeb024d74a58228c294b01f1  gcc/testsuite/gfortran.dg/array_5.f90
! b42d261b92ea5108d457aab87607ef6f  gcc/testsuite/gfortran.dg/array_alloc_1.f90
! d4d7d9762e46d64cdf8e541a56ed0f63  gcc/testsuite/gfortran.dg/array_alloc_2.f90
! a057ce5dee83affed1d7948f47b80405  gcc/testsuite/gfortran.dg/array_alloc_3.f90
! 30055279048e25969d0ba22857a43384  gcc/testsuite/gfortran.dg/array_assignment_1.F90
! 451eff3b315cac70a5645fe62c20bd97  gcc/testsuite/gfortran.dg/array_assignment_5.f90
! 38868e4ba036e139b29b1895c721ed4e  gcc/testsuite/gfortran.dg/array_constructor_1.f90
! cb05105269864c2be54d40dd22c77bde  gcc/testsuite/gfortran.dg/array_constructor_10.f90
! 3158f789746701693b371a4a47da37f2  gcc/testsuite/gfortran.dg/array_constructor_11.f90
! e18cf3703bc6769d2530bbc218b7120f  gcc/testsuite/gfortran.dg/array_constructor_12.f90
  58b8131b7ff4a1c8d15e4f78abbe3b5d  gcc/testsuite/gfortran.dg/array_constructor_13.f90
  e6a1ab1bc382fda525c8953445b6bc13  gcc/testsuite/gfortran.dg/array_constructor_14.f90
! d5ecaff1d0b852d056444c7e8ef91442  gcc/testsuite/gfortran.dg/array_constructor_15.f90
! 24ce83f6e52a78c24cfc4008bec92ad2  gcc/testsuite/gfortran.dg/array_constructor_16.f90
! 355033034fec45ba90e54500e5638243  gcc/testsuite/gfortran.dg/array_constructor_17.f90
  5b64d7b3d86b3e63d9a21f3cd5f923c6  gcc/testsuite/gfortran.dg/array_constructor_18.f90
! 6597a09caaf0f2892b06986aa07893f6  gcc/testsuite/gfortran.dg/array_constructor_19.f90
  c404924b69df8e1ff68ec61e74f21d6b  gcc/testsuite/gfortran.dg/array_constructor_2.f90
  278fdb131ea33a33211b39532b557980  gcc/testsuite/gfortran.dg/array_constructor_20.f90
  4baabc156db23e2e888965d0ddb3e0b9  gcc/testsuite/gfortran.dg/array_constructor_21.f90
  a6bd048866027ea6bf597acb23ef25d0  gcc/testsuite/gfortran.dg/array_constructor_22.f90
! 02d67df422b75276f6a95d5a60796b9b  gcc/testsuite/gfortran.dg/array_constructor_23.f
! 3da281b068891ab68547f22bcc2f9943  gcc/testsuite/gfortran.dg/array_constructor_24.f
  e1c301e198e52e75cc41d51cb75f5d30  gcc/testsuite/gfortran.dg/array_constructor_25.f03
  8ce528e13a8cd6b6ce743c2f0874ad48  gcc/testsuite/gfortran.dg/array_constructor_26.f03
  5ca9cc7c393792c1c73cb103841df1e1  gcc/testsuite/gfortran.dg/array_constructor_27.f03
--- 52046,52122 ----
  a7ba3204ddef00d1d0278c5b0eba1e4a  gcc/testsuite/gfortran.dg/allocate_with_typespec_5.f90
  a400c157529619600d21c8ab0d9d4ccc  gcc/testsuite/gfortran.dg/allocate_with_typespec_6.f90
  fe3a537d232e11c904ccb01a3aab7662  gcc/testsuite/gfortran.dg/allocate_with_typespec_7.f90
! 7cc510b039d09672cfbf8d1dec88953c  gcc/testsuite/gfortran.dg/allocate_zerosize_1.f90
  12f3d33d5ae0d7cf655d8f39f073d9a9  gcc/testsuite/gfortran.dg/allocate_zerosize_2.f90
! ce98de1957479e069ab10632545c5afa  gcc/testsuite/gfortran.dg/allocate_zerosize_3.f
  6a729cf1f6bf67aa0e2493345f68e5fc  gcc/testsuite/gfortran.dg/altreturn_1.f90
  7cbc1f043d9ba68898b8a84dff22a6f7  gcc/testsuite/gfortran.dg/altreturn_2.f90
! ab15f72b5cb8d2d12ce756b7de1444a2  gcc/testsuite/gfortran.dg/altreturn_3.f90
  b852529cec3b92b7d12cc9eec0f3559f  gcc/testsuite/gfortran.dg/altreturn_4.f90
! 4e2fee392a0e21c3fb0c5784b82c7f63  gcc/testsuite/gfortran.dg/altreturn_5.f90
  9b31f9f4ca2bcd7c062e04bc30721dc3  gcc/testsuite/gfortran.dg/altreturn_6.f90
! eae1c01e9cd07e06f5b2053c9c8e8d0c  gcc/testsuite/gfortran.dg/altreturn_7.f90
! 60795209d96fe6d73334d162b3138c27  gcc/testsuite/gfortran.dg/altreturn_8.f90
  5efcafe8829b585812ac42002ce9079c  gcc/testsuite/gfortran.dg/ambiguous_reference_1.f90
  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
! b9a4dd9ce1dc5ec1be98f33811c4eba8  gcc/testsuite/gfortran.dg/and_or_xor.f90
! fb1c5569f69a4b48d53284a6e6fe1b9e  gcc/testsuite/gfortran.dg/anint_1.f90
! f19486a23086c5de84ef69f54a0e6794  gcc/testsuite/gfortran.dg/any_all_1.f90
  5b461aef3cf8d05dc4596493df9d7d61  gcc/testsuite/gfortran.dg/any_all_2.f90
  653613c1aa45ec0044128e707a82b730  gcc/testsuite/gfortran.dg/any_loc.f90
! f33e23b93568c0fa1093b6d619fba342  gcc/testsuite/gfortran.dg/anyallcount_1.f90
! 2adc50cd15b328cf3fce0bcc794cb41b  gcc/testsuite/gfortran.dg/append_1.f90
! 8f1c2f4b8b18ea7d62c3d727fb30c382  gcc/testsuite/gfortran.dg/argument_checking_1.f90
! dbfad5e8b5cf874428e1b4374f3f75e1  gcc/testsuite/gfortran.dg/argument_checking_10.f90
  76e77c51925120f48cf48c0811e8e2fc  gcc/testsuite/gfortran.dg/argument_checking_11.f90
  76ffaeb49d8f6b0d2645829fb196c220  gcc/testsuite/gfortran.dg/argument_checking_12.f90
! d7f6c4379850044c9408d015d4dad1e1  gcc/testsuite/gfortran.dg/argument_checking_13.f90
  75637f318d12921b9ae87cf37cdb9216  gcc/testsuite/gfortran.dg/argument_checking_14.f90
! 1902ff87d35e0bf5b994fc85e38c8e91  gcc/testsuite/gfortran.dg/argument_checking_15.f90
  2f5a10924c0b14d8e5917293d1055742  gcc/testsuite/gfortran.dg/argument_checking_16.f90
  6e283f775be3991e1a1dda6a0da414c3  gcc/testsuite/gfortran.dg/argument_checking_17.f90
! 9b7ce5d3bab9b5892af4076e08ba2181  gcc/testsuite/gfortran.dg/argument_checking_18.f90
! 17ebec4d3ef2aa5b49eebfb183b3ca58  gcc/testsuite/gfortran.dg/argument_checking_2.f90
! 9420e2390509236501a51aceaffd8fec  gcc/testsuite/gfortran.dg/argument_checking_3.f90
! ca22fc708f8e1b6425943105c693f41e  gcc/testsuite/gfortran.dg/argument_checking_4.f90
! 6ef91b131477d21bf8c75369daea1d04  gcc/testsuite/gfortran.dg/argument_checking_5.f90
! a265bfcab0ca803759d6c4d3ea6defd8  gcc/testsuite/gfortran.dg/argument_checking_6.f90
  3fabcfeb9fbe60fcace7516e5730b62d  gcc/testsuite/gfortran.dg/argument_checking_7.f90
! 9a6dc039d47b29ccb678823eb76c7e6c  gcc/testsuite/gfortran.dg/argument_checking_8.f90
  ae5c0c1a40358f4209139ab1ba4c93a1  gcc/testsuite/gfortran.dg/argument_checking_9.f90
  f2050f4ab1ae68ef71906c613ddc6d03  gcc/testsuite/gfortran.dg/arith_divide.f
  3130a308b1d1471577ea44bf582c1bec  gcc/testsuite/gfortran.dg/arith_divide_no_check.f
! 9f88f5ececa8e91571e1a769c9375575  gcc/testsuite/gfortran.dg/arithmetic_if.f90
  ad54c15b47e17edab3af8726783901c3  gcc/testsuite/gfortran.dg/arithmetic_overflow_1.f90
! a9062c0997ab4b5ad27ce315aa0297b6  gcc/testsuite/gfortran.dg/array_1.f90
! 273b15994d9555f1b73c7cfac1fe3512  gcc/testsuite/gfortran.dg/array_2.f90
  05a8e8fe320b8ec1d79b799c4d7a8693  gcc/testsuite/gfortran.dg/array_3.f90
  ba4a4be22e02a07d190e1a4ffc9a1eb5  gcc/testsuite/gfortran.dg/array_4.f90
  1789b0dbbeb024d74a58228c294b01f1  gcc/testsuite/gfortran.dg/array_5.f90
! 098b40aa8490c65082fe7289da9ff417  gcc/testsuite/gfortran.dg/array_alloc_1.f90
! 7d761cd6b2087ae6172f19bef9bc0d04  gcc/testsuite/gfortran.dg/array_alloc_2.f90
! d11fd56e557f549d1e0c49f29ed529be  gcc/testsuite/gfortran.dg/array_alloc_3.f90
! 351419da18973629312b9d2a74627483  gcc/testsuite/gfortran.dg/array_assignment_1.F90
! d36e8cbbfe5dfc0bff8a77b9a38e620a  gcc/testsuite/gfortran.dg/array_assignment_5.f90
! f057e2b1996c9202f91f2f144462bc5b  gcc/testsuite/gfortran.dg/array_constructor_1.f90
! 17ac54de0cca8fb3fd23a8f060bbbd5a  gcc/testsuite/gfortran.dg/array_constructor_10.f90
! ff80e8fd2060d02d9391b108878b860c  gcc/testsuite/gfortran.dg/array_constructor_11.f90
! 631f17661764ce2684bab7b25970b288  gcc/testsuite/gfortran.dg/array_constructor_12.f90
  58b8131b7ff4a1c8d15e4f78abbe3b5d  gcc/testsuite/gfortran.dg/array_constructor_13.f90
  e6a1ab1bc382fda525c8953445b6bc13  gcc/testsuite/gfortran.dg/array_constructor_14.f90
! bd416d4c3bb16b04f624406aa74a9970  gcc/testsuite/gfortran.dg/array_constructor_15.f90
! 83d37efb36eab0c6bcc1150b8bed70d9  gcc/testsuite/gfortran.dg/array_constructor_16.f90
! 40bc64f19632173292e897f69eeba839  gcc/testsuite/gfortran.dg/array_constructor_17.f90
  5b64d7b3d86b3e63d9a21f3cd5f923c6  gcc/testsuite/gfortran.dg/array_constructor_18.f90
! 90462773ed66c8c9177af1e817c2bf77  gcc/testsuite/gfortran.dg/array_constructor_19.f90
  c404924b69df8e1ff68ec61e74f21d6b  gcc/testsuite/gfortran.dg/array_constructor_2.f90
  278fdb131ea33a33211b39532b557980  gcc/testsuite/gfortran.dg/array_constructor_20.f90
  4baabc156db23e2e888965d0ddb3e0b9  gcc/testsuite/gfortran.dg/array_constructor_21.f90
  a6bd048866027ea6bf597acb23ef25d0  gcc/testsuite/gfortran.dg/array_constructor_22.f90
! 4a46c6b3be4c9e31b6aed49d50742729  gcc/testsuite/gfortran.dg/array_constructor_23.f
! 4b6234f94ce908b4dac224e5063ab0de  gcc/testsuite/gfortran.dg/array_constructor_24.f
  e1c301e198e52e75cc41d51cb75f5d30  gcc/testsuite/gfortran.dg/array_constructor_25.f03
  8ce528e13a8cd6b6ce743c2f0874ad48  gcc/testsuite/gfortran.dg/array_constructor_26.f03
  5ca9cc7c393792c1c73cb103841df1e1  gcc/testsuite/gfortran.dg/array_constructor_27.f03
*************** d75b0075c8c6384eac9f0e38dc4e226f  gcc/te
*** 48648,48749 ****
  1f97b4f0dca764838294052acc156f85  gcc/testsuite/gfortran.dg/array_constructor_3.f90
  24de8e23530c98333db98bb0d182f552  gcc/testsuite/gfortran.dg/array_constructor_30.f03
  9556e61bd2895f28168a9c53a5a5f128  gcc/testsuite/gfortran.dg/array_constructor_31.f90
! 2cee9fb4f8702771f983d4b5e9ae6311  gcc/testsuite/gfortran.dg/array_constructor_32.f90
  77ac752b07dc733cf768b421cc6fd37c  gcc/testsuite/gfortran.dg/array_constructor_33.f90
  f1b700c675136dc9369ad35e275a760c  gcc/testsuite/gfortran.dg/array_constructor_34.f90
  f1f9f0cb02d6f65f6defd4f55db09f8d  gcc/testsuite/gfortran.dg/array_constructor_35.f90
! 0dfb9655aa32f6379a0b1e9f324b60da  gcc/testsuite/gfortran.dg/array_constructor_36.f90
  45cf70388fb5515a0fcecfd6b4688303  gcc/testsuite/gfortran.dg/array_constructor_37.f90
  d1b3d4e4c143cb9bbd957eb5541743c0  gcc/testsuite/gfortran.dg/array_constructor_38.f90
! 4890875c0605ae09fb1e81064ffcf1ff  gcc/testsuite/gfortran.dg/array_constructor_39.f90
! 6b96d70766eaf58b5853527d5eb75dce  gcc/testsuite/gfortran.dg/array_constructor_4.f90
! f2390e0deadb4d64d1795409462fbb4c  gcc/testsuite/gfortran.dg/array_constructor_40.f90
  f048652a7b189e0aaae1edd316859135  gcc/testsuite/gfortran.dg/array_constructor_41.f90
  ac01d06b5123c7f1ba78810fb8dc8ade  gcc/testsuite/gfortran.dg/array_constructor_42.f90
  b24d59096aa5d18a6788d39e73be44ec  gcc/testsuite/gfortran.dg/array_constructor_43.f90
! 3b29578b85c3079bd04befe52e74430c  gcc/testsuite/gfortran.dg/array_constructor_44.f90
! 977f8d5d42e0873fbc0e4a620ace2e24  gcc/testsuite/gfortran.dg/array_constructor_45.f90
! d5ea8f5a9e2574f03e0f07aefb628587  gcc/testsuite/gfortran.dg/array_constructor_46.f90
! 43de0ab156de7b0350c7425df3859e4a  gcc/testsuite/gfortran.dg/array_constructor_47.f90
  71b1b67746cb3b141002319b6af5c534  gcc/testsuite/gfortran.dg/array_constructor_48.f90
! b3fed1ef4a2d1acbb8f29ba81a3ade35  gcc/testsuite/gfortran.dg/array_constructor_49.f90
! 9918ac77cf760a3800e94da773f0a74b  gcc/testsuite/gfortran.dg/array_constructor_5.f90
! 7b8fbbe044e7a6ab2be8274984852be8  gcc/testsuite/gfortran.dg/array_constructor_50.f90
! 6dc05669b848d267b25c38806e59d51f  gcc/testsuite/gfortran.dg/array_constructor_6.f90
! 0965c3437a2116ac32e573441184fdee  gcc/testsuite/gfortran.dg/array_constructor_7.f90
! b4019b0f6faabbc51d698bec4f4094ee  gcc/testsuite/gfortran.dg/array_constructor_8.f90
! f51979fbd89c7c2a189f663dbf93fa38  gcc/testsuite/gfortran.dg/array_constructor_9.f90
! 21cb54a3e862b855c4e8d430f87ea438  gcc/testsuite/gfortran.dg/array_constructor_type_1.f03
! c2f79fed5b1d7d716b7782123d941a9e  gcc/testsuite/gfortran.dg/array_constructor_type_10.f03
! 939afb98b6e28572f7b77b971b4afbe9  gcc/testsuite/gfortran.dg/array_constructor_type_11.f03
! 41c9406c3f36552251cfdcc27096be59  gcc/testsuite/gfortran.dg/array_constructor_type_12.f03
! 81485dc2b6f5ce36a9ca0259ea699efa  gcc/testsuite/gfortran.dg/array_constructor_type_13.f90
! 555a7b37b9cceac3b53ab0330ecaad3e  gcc/testsuite/gfortran.dg/array_constructor_type_14.f03
  f7090ed5f04523943c3fbe421638278d  gcc/testsuite/gfortran.dg/array_constructor_type_15.f03
! cd8f8d07b860e948a90c29cc6b8ef529  gcc/testsuite/gfortran.dg/array_constructor_type_16.f03
  cd3073b7b6b5923db1621a7543cb2de3  gcc/testsuite/gfortran.dg/array_constructor_type_17.f03
  bbbfd35fcaf4fb0a059b62fed067d6b8  gcc/testsuite/gfortran.dg/array_constructor_type_18.f03
  1d779caf21d83c97d311052f0f302ebc  gcc/testsuite/gfortran.dg/array_constructor_type_19.f03
! 92222a7dd31525df7e2634672463204c  gcc/testsuite/gfortran.dg/array_constructor_type_2.f03
  e3550741128a8b20f15cb6bdad6fb91e  gcc/testsuite/gfortran.dg/array_constructor_type_20.f03
  0e33a200efb3c9ada5441e658cdcfc79  gcc/testsuite/gfortran.dg/array_constructor_type_21.f03
! 0e48e37cbf531efc077cea1c06bda62d  gcc/testsuite/gfortran.dg/array_constructor_type_22.f03
! 0a880ac80cd5e88b11e97a6f5dd7cbb4  gcc/testsuite/gfortran.dg/array_constructor_type_3.f03
! a307d1f7f7c7c0cf222c6185515f1ad4  gcc/testsuite/gfortran.dg/array_constructor_type_4.f03
! a665074c9d37da1eeb1d261fe4259056  gcc/testsuite/gfortran.dg/array_constructor_type_5.f03
! 50de83008f77a413f68bc40df35ae05f  gcc/testsuite/gfortran.dg/array_constructor_type_6.f03
! 3fa7a5cf74e5bd1567de2ea0a4b84704  gcc/testsuite/gfortran.dg/array_constructor_type_7.f03
  66cf672a0d9e01d80e5d04dd43a9586e  gcc/testsuite/gfortran.dg/array_constructor_type_8.f03
  4afe2c619ccaae47cf397fe69d0fc8a2  gcc/testsuite/gfortran.dg/array_constructor_type_9.f
! 8d36acf9b80d76568708d4d99291ee40  gcc/testsuite/gfortran.dg/array_function_1.f90
  3afaa99751f4b884afdb193178002cf8  gcc/testsuite/gfortran.dg/array_function_2.f90
  784dbde53c3024a9ece796b66df76ad0  gcc/testsuite/gfortran.dg/array_function_3.f90
  299c77bc10af8aa7d4d3369c9802de55  gcc/testsuite/gfortran.dg/array_function_4.f90
! 0b943a7b1268dc0f7948d9697c3bfe44  gcc/testsuite/gfortran.dg/array_function_5.f90
  8f75e90f6ecbefe7ac0df22a21373888  gcc/testsuite/gfortran.dg/array_function_6.f90
! f7deaa09f12d6b0d7167e9ea3c764992  gcc/testsuite/gfortran.dg/array_initializer_1.f90
! f089112961eb27984a439266fde9cf16  gcc/testsuite/gfortran.dg/array_initializer_2.f90
  2b4bef0c22c911f907559277d9291ac5  gcc/testsuite/gfortran.dg/array_initializer_3.f90
  021599e65323169090e12174251e8a88  gcc/testsuite/gfortran.dg/array_memcpy_1.f90
  6db23df20fcfa5ffcb500ca0fd0be821  gcc/testsuite/gfortran.dg/array_memcpy_2.f90
  8765b47c330e73bab802dd963be5347e  gcc/testsuite/gfortran.dg/array_memcpy_3.f90
  bf6adc4a22ea07b1ef96cd964979323f  gcc/testsuite/gfortran.dg/array_memcpy_4.f90
! 7029bad88623a397be367f1908a2531a  gcc/testsuite/gfortran.dg/array_memcpy_5.f90
  6532af12e8af70e4024e14c839ff731d  gcc/testsuite/gfortran.dg/array_memset_1.f90
! 53dcdb6818b9f5ac15b343e94b356aaf  gcc/testsuite/gfortran.dg/array_memset_2.f90
! 1f74387e33d7423d5fa4474d482c6a28  gcc/testsuite/gfortran.dg/array_reference_1.f90
! 22b21f2806a208a0d320c5cc6fa097e3  gcc/testsuite/gfortran.dg/array_return_value_1.f90
! 04c19c74029c91cc7438ba06e104a4cf  gcc/testsuite/gfortran.dg/array_section_1.f90
  a815d3d0eea1fbd2ee087c99d9a5efd8  gcc/testsuite/gfortran.dg/array_section_2.f90
  5b5bc94459770a027d345e2bf3659077  gcc/testsuite/gfortran.dg/array_section_3.f90
  f5353af0320c98076a2cef99b20b32d5  gcc/testsuite/gfortran.dg/array_simplify_1.f90
  eaa667329c0ac254f7386a2733317553  gcc/testsuite/gfortran.dg/array_temporaries_1.f90
  ef0448750b54bdfee0bf2b23c2eb77bf  gcc/testsuite/gfortran.dg/array_temporaries_2.f90
! e91eb75619ee2c34111f64e6f824abb3  gcc/testsuite/gfortran.dg/array_temporaries_3.f90
  1a5fac20b3c5bae4bfab9480278e61ab  gcc/testsuite/gfortran.dg/array_temporaries_4.f90
  63d876b9a58e7a10ea9368ee778012a7  gcc/testsuite/gfortran.dg/arrayio_0.f90
! 4ba1e87f7a6ad266a9d23d91d2a295f6  gcc/testsuite/gfortran.dg/arrayio_1.f90
! bab9a93e2fbce2377987fb7f67e82a7a  gcc/testsuite/gfortran.dg/arrayio_10.f90
! 4d48a42bc964040c164c122d032b8664  gcc/testsuite/gfortran.dg/arrayio_11.f90
! e101afd93c6605938c295b10be41823a  gcc/testsuite/gfortran.dg/arrayio_12.f90
! 8eeabeddf3eeabedb9644e95525e98f3  gcc/testsuite/gfortran.dg/arrayio_13.f90
! c59bae6f311e172f040e939b3bcf1fa4  gcc/testsuite/gfortran.dg/arrayio_14.f90
  3a163eca93a1b5da0cb1aa1265c1fc34  gcc/testsuite/gfortran.dg/arrayio_15.f90
! 3b626835faa28accd28b7b44c1aa2964  gcc/testsuite/gfortran.dg/arrayio_16.f90
! 46396e4a37a64cec9c047113bad6eadc  gcc/testsuite/gfortran.dg/arrayio_2.f90
! 464fdf5b0f515ce504fe0f8e2ee07c6b  gcc/testsuite/gfortran.dg/arrayio_3.f90
! 4042242806976787cc2719282ff81591  gcc/testsuite/gfortran.dg/arrayio_4.f90
! 3d6948c55ae3ecc98582866566484795  gcc/testsuite/gfortran.dg/arrayio_5.f90
! 5bcacd12a0d03db4bcc76616bd9dd8dc  gcc/testsuite/gfortran.dg/arrayio_6.f90
! d405c64637ec7e3cb6d34de294235397  gcc/testsuite/gfortran.dg/arrayio_7.f90
! d678b8a3c2253343619fd9956743a29d  gcc/testsuite/gfortran.dg/arrayio_8.f90
! ffc4812ab681ed0d7c8bc0134bb4a06c  gcc/testsuite/gfortran.dg/arrayio_9.f90
! 3625eebfc04db1a9277e8713bdb408cb  gcc/testsuite/gfortran.dg/arrayio_derived_1.f90
  2b2c726e08ba1c26507c7392e63e1029  gcc/testsuite/gfortran.dg/arrayio_derived_2.f90
  28bbca8fc062ad301c676d4eb94d000d  gcc/testsuite/gfortran.dg/assign-debug.f90
  7ad5faf60f3a1cebebfbb2c9e52516d7  gcc/testsuite/gfortran.dg/assign.f90
  4fd44d78ecb3264e1dd3d6bbb0ca8ea6  gcc/testsuite/gfortran.dg/assign_1.f90
! 631dc09ff2f676165ad0d05de95d9580  gcc/testsuite/gfortran.dg/assign_10.f90
  d13716000aff2182530213b6daeb5f10  gcc/testsuite/gfortran.dg/assign_2.f90
  a0494aa37ce786eddcb2107da73e9e9d  gcc/testsuite/gfortran.dg/assign_3.f90
  bd3eaa5ee0e2bbe2c28826271bd7069f  gcc/testsuite/gfortran.dg/assign_4.f
--- 52125,52230 ----
  1f97b4f0dca764838294052acc156f85  gcc/testsuite/gfortran.dg/array_constructor_3.f90
  24de8e23530c98333db98bb0d182f552  gcc/testsuite/gfortran.dg/array_constructor_30.f03
  9556e61bd2895f28168a9c53a5a5f128  gcc/testsuite/gfortran.dg/array_constructor_31.f90
! 1ad7bc630dbb18fbb8a19e7c5e831c52  gcc/testsuite/gfortran.dg/array_constructor_32.f90
  77ac752b07dc733cf768b421cc6fd37c  gcc/testsuite/gfortran.dg/array_constructor_33.f90
  f1b700c675136dc9369ad35e275a760c  gcc/testsuite/gfortran.dg/array_constructor_34.f90
  f1f9f0cb02d6f65f6defd4f55db09f8d  gcc/testsuite/gfortran.dg/array_constructor_35.f90
! abc4e961ff8571cd9bbfbfdcae8d7ef9  gcc/testsuite/gfortran.dg/array_constructor_36.f90
  45cf70388fb5515a0fcecfd6b4688303  gcc/testsuite/gfortran.dg/array_constructor_37.f90
  d1b3d4e4c143cb9bbd957eb5541743c0  gcc/testsuite/gfortran.dg/array_constructor_38.f90
! 7d8c234b2d43ef48c8f56edefe6f7978  gcc/testsuite/gfortran.dg/array_constructor_39.f90
! c0099358de3886ad8df6e07bbcc8e8a4  gcc/testsuite/gfortran.dg/array_constructor_4.f90
! 57d2105d7ea5426c39c685e226ea2585  gcc/testsuite/gfortran.dg/array_constructor_40.f90
  f048652a7b189e0aaae1edd316859135  gcc/testsuite/gfortran.dg/array_constructor_41.f90
  ac01d06b5123c7f1ba78810fb8dc8ade  gcc/testsuite/gfortran.dg/array_constructor_42.f90
  b24d59096aa5d18a6788d39e73be44ec  gcc/testsuite/gfortran.dg/array_constructor_43.f90
! c7916ab15935fd48bee07441fd6818c6  gcc/testsuite/gfortran.dg/array_constructor_44.f90
! b93c04fd558d561a06c1dc69325e53e3  gcc/testsuite/gfortran.dg/array_constructor_45.f90
! 3058b90f80ecffe24dcd6d940a68ab91  gcc/testsuite/gfortran.dg/array_constructor_46.f90
! 56f8eba8ec367b3eb2eabc2ba49ecacf  gcc/testsuite/gfortran.dg/array_constructor_47.f90
  71b1b67746cb3b141002319b6af5c534  gcc/testsuite/gfortran.dg/array_constructor_48.f90
! 9d6431184a7f9e9c9d34bb49680f90c6  gcc/testsuite/gfortran.dg/array_constructor_49.f90
! c8e89c3bb1a8878396e32769b9a78d05  gcc/testsuite/gfortran.dg/array_constructor_5.f90
! 66d0edd72f36b957c617ae07956b95c6  gcc/testsuite/gfortran.dg/array_constructor_50.f90
! 1ce7c326ac35602dfab388e47338c640  gcc/testsuite/gfortran.dg/array_constructor_51.f90
! 74902cf57199c682dc3775323dd67fe3  gcc/testsuite/gfortran.dg/array_constructor_52.f90
! 2cd50431749fd2782a60804098abc805  gcc/testsuite/gfortran.dg/array_constructor_53.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
! 59860e250c8578ec49b77990f2e5e5ee  gcc/testsuite/gfortran.dg/array_constructor_9.f90
! 8f8bd7fdfca2c3cc194392e6b822841d  gcc/testsuite/gfortran.dg/array_constructor_type_1.f03
! b905873956547f7071e377f3e89c7833  gcc/testsuite/gfortran.dg/array_constructor_type_10.f03
! 8ab6a2973dc94f9e8652bf649a54a049  gcc/testsuite/gfortran.dg/array_constructor_type_11.f03
! 3fe5be2672fa2bd118760d385c68eacd  gcc/testsuite/gfortran.dg/array_constructor_type_12.f03
! 9aa17630c582da910c6df8a086d39b4d  gcc/testsuite/gfortran.dg/array_constructor_type_13.f90
! 10919a3c2f528221591b662f8ab6afaa  gcc/testsuite/gfortran.dg/array_constructor_type_14.f03
  f7090ed5f04523943c3fbe421638278d  gcc/testsuite/gfortran.dg/array_constructor_type_15.f03
! 4c08daaed6e9635ce905398e4be89ad1  gcc/testsuite/gfortran.dg/array_constructor_type_16.f03
  cd3073b7b6b5923db1621a7543cb2de3  gcc/testsuite/gfortran.dg/array_constructor_type_17.f03
  bbbfd35fcaf4fb0a059b62fed067d6b8  gcc/testsuite/gfortran.dg/array_constructor_type_18.f03
  1d779caf21d83c97d311052f0f302ebc  gcc/testsuite/gfortran.dg/array_constructor_type_19.f03
! 36e752b22195ea4cc80ce204019f1e6d  gcc/testsuite/gfortran.dg/array_constructor_type_2.f03
  e3550741128a8b20f15cb6bdad6fb91e  gcc/testsuite/gfortran.dg/array_constructor_type_20.f03
  0e33a200efb3c9ada5441e658cdcfc79  gcc/testsuite/gfortran.dg/array_constructor_type_21.f03
! 3c67142ae7de488d41482305bd1b39b6  gcc/testsuite/gfortran.dg/array_constructor_type_22.f03
! 6befbd066ac5d4bc332933dede335d18  gcc/testsuite/gfortran.dg/array_constructor_type_3.f03
! eaedafd94edc172bf968be767adbfbca  gcc/testsuite/gfortran.dg/array_constructor_type_4.f03
! 6772d523abd68711db7d947004569afe  gcc/testsuite/gfortran.dg/array_constructor_type_5.f03
! a2d9a0d935dd860f2e485600db57ecb8  gcc/testsuite/gfortran.dg/array_constructor_type_6.f03
! f4a1e0c66adc8865d3ed362a2b0afa51  gcc/testsuite/gfortran.dg/array_constructor_type_7.f03
  66cf672a0d9e01d80e5d04dd43a9586e  gcc/testsuite/gfortran.dg/array_constructor_type_8.f03
  4afe2c619ccaae47cf397fe69d0fc8a2  gcc/testsuite/gfortran.dg/array_constructor_type_9.f
! 7de10c270cdf9e6ae0d118fe6a75e3d0  gcc/testsuite/gfortran.dg/array_function_1.f90
  3afaa99751f4b884afdb193178002cf8  gcc/testsuite/gfortran.dg/array_function_2.f90
  784dbde53c3024a9ece796b66df76ad0  gcc/testsuite/gfortran.dg/array_function_3.f90
  299c77bc10af8aa7d4d3369c9802de55  gcc/testsuite/gfortran.dg/array_function_4.f90
! 0763438da457167c891c41e345353e81  gcc/testsuite/gfortran.dg/array_function_5.f90
  8f75e90f6ecbefe7ac0df22a21373888  gcc/testsuite/gfortran.dg/array_function_6.f90
! 9779eee93c45694c4e815e7ca1b6c6c5  gcc/testsuite/gfortran.dg/array_initializer_1.f90
! f3a0a84d4a4a1d1fba1105d21046304c  gcc/testsuite/gfortran.dg/array_initializer_2.f90
  2b4bef0c22c911f907559277d9291ac5  gcc/testsuite/gfortran.dg/array_initializer_3.f90
  021599e65323169090e12174251e8a88  gcc/testsuite/gfortran.dg/array_memcpy_1.f90
  6db23df20fcfa5ffcb500ca0fd0be821  gcc/testsuite/gfortran.dg/array_memcpy_2.f90
  8765b47c330e73bab802dd963be5347e  gcc/testsuite/gfortran.dg/array_memcpy_3.f90
  bf6adc4a22ea07b1ef96cd964979323f  gcc/testsuite/gfortran.dg/array_memcpy_4.f90
! b6760654ceec06f2d9d8da1fb2905d41  gcc/testsuite/gfortran.dg/array_memcpy_5.f90
  6532af12e8af70e4024e14c839ff731d  gcc/testsuite/gfortran.dg/array_memset_1.f90
! 9cd9ba395957dcb0b99267b33e0e4f3a  gcc/testsuite/gfortran.dg/array_memset_2.f90
! 0d5c79107b268381899526d4acc0698d  gcc/testsuite/gfortran.dg/array_reference_1.f90
! ed7776896bbbdf2c7a28485ae192850f  gcc/testsuite/gfortran.dg/array_return_value_1.f90
! 9e232ed353f6720a409956fdb813a957  gcc/testsuite/gfortran.dg/array_section_1.f90
  a815d3d0eea1fbd2ee087c99d9a5efd8  gcc/testsuite/gfortran.dg/array_section_2.f90
  5b5bc94459770a027d345e2bf3659077  gcc/testsuite/gfortran.dg/array_section_3.f90
  f5353af0320c98076a2cef99b20b32d5  gcc/testsuite/gfortran.dg/array_simplify_1.f90
+ 3367aa297ac136720888c4078cbfb863  gcc/testsuite/gfortran.dg/array_simplify_2.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
  63d876b9a58e7a10ea9368ee778012a7  gcc/testsuite/gfortran.dg/arrayio_0.f90
! 461601d497b77c8abb87e07baa00daf3  gcc/testsuite/gfortran.dg/arrayio_1.f90
! 0753d4253101bbf28138fb06de226c83  gcc/testsuite/gfortran.dg/arrayio_10.f90
! 42211f0f420a980eee03b47286e66266  gcc/testsuite/gfortran.dg/arrayio_11.f90
! 26f7b1c15318b9cfea76411a5fe7b08a  gcc/testsuite/gfortran.dg/arrayio_12.f90
! 5f59a3b5976cad589117a72109806678  gcc/testsuite/gfortran.dg/arrayio_13.f90
! e3ace35904856c6e6f4cd5b09005ae47  gcc/testsuite/gfortran.dg/arrayio_14.f90
  3a163eca93a1b5da0cb1aa1265c1fc34  gcc/testsuite/gfortran.dg/arrayio_15.f90
! ddd3dcf2ceb28f2d011692c2c17cea09  gcc/testsuite/gfortran.dg/arrayio_16.f90
! e5208768da07f04781f190374a83d144  gcc/testsuite/gfortran.dg/arrayio_2.f90
! 496ad28335b6a5a577e943ae440ed836  gcc/testsuite/gfortran.dg/arrayio_3.f90
! c92093973924d9ebcfab2e668972e64f  gcc/testsuite/gfortran.dg/arrayio_4.f90
! 4b59d40d703feab1689697775f842be1  gcc/testsuite/gfortran.dg/arrayio_5.f90
! 38fe20b7c805d3cf9c7b28ef88d6a8d1  gcc/testsuite/gfortran.dg/arrayio_6.f90
! f7e8519e6068cc3e0c54132a4d22fb2e  gcc/testsuite/gfortran.dg/arrayio_7.f90
! ca5ed9b7a4b086d732df1a505d87813b  gcc/testsuite/gfortran.dg/arrayio_8.f90
! 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
  28bbca8fc062ad301c676d4eb94d000d  gcc/testsuite/gfortran.dg/assign-debug.f90
  7ad5faf60f3a1cebebfbb2c9e52516d7  gcc/testsuite/gfortran.dg/assign.f90
  4fd44d78ecb3264e1dd3d6bbb0ca8ea6  gcc/testsuite/gfortran.dg/assign_1.f90
! f2cedc3451f5473670a7da81315b0151  gcc/testsuite/gfortran.dg/assign_10.f90
  d13716000aff2182530213b6daeb5f10  gcc/testsuite/gfortran.dg/assign_2.f90
  a0494aa37ce786eddcb2107da73e9e9d  gcc/testsuite/gfortran.dg/assign_3.f90
  bd3eaa5ee0e2bbe2c28826271bd7069f  gcc/testsuite/gfortran.dg/assign_4.f
*************** f501ad9fe36a5716a92695db1f43f9de  gcc/te
*** 48751,48803 ****
  7a9255b8194890e4998558c6c4abb2e9  gcc/testsuite/gfortran.dg/assign_6.f
  22f24d3c246ad7fac63a61b19149cfb1  gcc/testsuite/gfortran.dg/assign_7.f
  2779f3b7637bc1b158a396626b4ae673  gcc/testsuite/gfortran.dg/assign_8.f90
! 2e10cbcc45f15baa55d70037154b46ce  gcc/testsuite/gfortran.dg/assign_9.f90
! 8a3f0942bd4a75e57daf738c679f4094  gcc/testsuite/gfortran.dg/assign_func_dtcomp_1.f90
! 09f1ca3fec4d3b62915bbb73f081cb1d  gcc/testsuite/gfortran.dg/assignment_1.f90
  3228ea30d2b48ca5c4aff6e33085dc11  gcc/testsuite/gfortran.dg/assignment_2.f90
  44cf157d4e973a542bce54f60c00fe3a  gcc/testsuite/gfortran.dg/assignment_3.f90
  240ff5e184e81d41dcfb72c096e33e61  gcc/testsuite/gfortran.dg/assignment_4.f90
! 52233e4745a4f9bcfd1be3e6fe2d3155  gcc/testsuite/gfortran.dg/associate_1.f03
  75afdf677e5a36ffd8e2c2879e337776  gcc/testsuite/gfortran.dg/associate_10.f90
! 4f0aab584951f7578140d7e33d4bc0c4  gcc/testsuite/gfortran.dg/associate_11.f90
! cf4d952c77026c12dcef405f6e7f2e49  gcc/testsuite/gfortran.dg/associate_12.f90
! 984ec0158ef522fe661e4163a5708f35  gcc/testsuite/gfortran.dg/associate_13.f90
  7ad97bcf7457ca3c0309724df0caad5e  gcc/testsuite/gfortran.dg/associate_14.f90
! 229584e99cd0fefd1f1309fe2cfe60db  gcc/testsuite/gfortran.dg/associate_15.f90
  0ed1ec5c859d3837356536ddd0e6f9ac  gcc/testsuite/gfortran.dg/associate_16.f90
! d8912284402d7f10695694e5d787c65c  gcc/testsuite/gfortran.dg/associate_17.f90
! a712e1158c459cccb046feb2733487e1  gcc/testsuite/gfortran.dg/associate_18.f08
! 51658915613d35a7cd8a266de01822f1  gcc/testsuite/gfortran.dg/associate_19.f03
  c066328da870ad9b313bf9491c5b72d6  gcc/testsuite/gfortran.dg/associate_2.f95
! 86f24c51a4e1b8c258758936dc8bbe53  gcc/testsuite/gfortran.dg/associate_20.f03
  79c66e6ef8d2160f4b4fcb4c44322791  gcc/testsuite/gfortran.dg/associate_21.f90
! 8af1b6b8d72f3c807df4def38ed13d8c  gcc/testsuite/gfortran.dg/associate_22.f90
! 5b5357774a2f8eb00f77bc3c7c791ad9  gcc/testsuite/gfortran.dg/associate_23.f90
  c0997c9e951767642f9b109c7f40a532  gcc/testsuite/gfortran.dg/associate_26.f90
! 4b9b0ccd789fc7a96fd32e1478a0d390  gcc/testsuite/gfortran.dg/associate_27.f90
! 0035e7a4d34420e29e254e40238cdb9c  gcc/testsuite/gfortran.dg/associate_28.f90
  9236179c94e8ef2f6258dcf917d9dee9  gcc/testsuite/gfortran.dg/associate_29.f90
  ada9a3758cef9c8c02a55f1139c4f13b  gcc/testsuite/gfortran.dg/associate_3.f03
  49705e479c6ca71ab3678aef4ee07687  gcc/testsuite/gfortran.dg/associate_30.f90
  a1f5f0d8423367d45fe9382b407ce7e9  gcc/testsuite/gfortran.dg/associate_4.f08
  5dfaf5e9c3d8b8b8f835046ca42ccbf4  gcc/testsuite/gfortran.dg/associate_5.f03
! b9a80d4815a13a74f89c8e64782f5c16  gcc/testsuite/gfortran.dg/associate_6.f03
! 794e238fe8d1288b6698f51d3c536d13  gcc/testsuite/gfortran.dg/associate_7.f03
! 85288186efa05a973348b7811b9ef6bd  gcc/testsuite/gfortran.dg/associate_8.f03
! 0a58bde8f91285893842eb12b3bd936e  gcc/testsuite/gfortran.dg/associate_9.f03
! 514e25cca6e1b2c448e16c8d7106a6ca  gcc/testsuite/gfortran.dg/associated_1.f90
! 0acf70526e24bbdc87a58040093f4b0b  gcc/testsuite/gfortran.dg/associated_2.f90
  dd5a4a295ba62a8846fa5d3878b5dfa6  gcc/testsuite/gfortran.dg/associated_3.f90
  0f2a65cfddbb45fcf9cbe7ed6d6a2577  gcc/testsuite/gfortran.dg/associated_4.f90
! 3f42fad2694e05b0c6caac75725fd3f2  gcc/testsuite/gfortran.dg/associated_5.f90
! b7f01a81edfe7f425379808a1088defd  gcc/testsuite/gfortran.dg/associated_6.f90
  ed08ee0bcaabca9d5a128ae929308739  gcc/testsuite/gfortran.dg/associated_7.f90
  32b4a71d6d649eeafd569b412f4ca3cf  gcc/testsuite/gfortran.dg/associated_target_1.f90
  14ea917bbb9224466ca398e5094e8874  gcc/testsuite/gfortran.dg/associated_target_2.f90
! a87fab23ac5172d60d8a012e32ef0f72  gcc/testsuite/gfortran.dg/associated_target_3.f90
! 3488bb34b473c54bc39b64980f869190  gcc/testsuite/gfortran.dg/associated_target_4.f90
! 10c0224e23787fed9604e98c5f77fcc7  gcc/testsuite/gfortran.dg/associated_target_5.f03
! d0629b5942c7b9d52676fafc97ea41b1  gcc/testsuite/gfortran.dg/associated_target_6.f03
  6376d7ef6f137372a501dd7c8547864d  gcc/testsuite/gfortran.dg/associative_1.f90
  04280cc7719e51d18a6ad4510745c528  gcc/testsuite/gfortran.dg/assumed_charlen_arg_1.f90
  e41613f37c052bf20cb9d34a7bb40da1  gcc/testsuite/gfortran.dg/assumed_charlen_arg_2.f90
--- 52232,52292 ----
  7a9255b8194890e4998558c6c4abb2e9  gcc/testsuite/gfortran.dg/assign_6.f
  22f24d3c246ad7fac63a61b19149cfb1  gcc/testsuite/gfortran.dg/assign_7.f
  2779f3b7637bc1b158a396626b4ae673  gcc/testsuite/gfortran.dg/assign_8.f90
! 61d179988000e5ee98325cd826e8c364  gcc/testsuite/gfortran.dg/assign_9.f90
! 75b3d2fb11e672723b7e9a9c1abf0683  gcc/testsuite/gfortran.dg/assign_func_dtcomp_1.f90
! a6350cd42adc8349005fb5f48146a864  gcc/testsuite/gfortran.dg/assignment_1.f90
  3228ea30d2b48ca5c4aff6e33085dc11  gcc/testsuite/gfortran.dg/assignment_2.f90
  44cf157d4e973a542bce54f60c00fe3a  gcc/testsuite/gfortran.dg/assignment_3.f90
  240ff5e184e81d41dcfb72c096e33e61  gcc/testsuite/gfortran.dg/assignment_4.f90
! 73705f344d4c0a150014edc622ca6d2d  gcc/testsuite/gfortran.dg/associate_1.f03
  75afdf677e5a36ffd8e2c2879e337776  gcc/testsuite/gfortran.dg/associate_10.f90
! e2ac51297e6e988475ff8448d1ef067d  gcc/testsuite/gfortran.dg/associate_11.f90
! eec93a5ffceefe0bbf836b3b44d10883  gcc/testsuite/gfortran.dg/associate_12.f90
! 0d21282a51e42cd1ed804863721431a8  gcc/testsuite/gfortran.dg/associate_13.f90
  7ad97bcf7457ca3c0309724df0caad5e  gcc/testsuite/gfortran.dg/associate_14.f90
! 7d88e461cafb6d502c300da93f0f8cab  gcc/testsuite/gfortran.dg/associate_15.f90
  0ed1ec5c859d3837356536ddd0e6f9ac  gcc/testsuite/gfortran.dg/associate_16.f90
! e5d38d1979d558a4b1a5e4dd9fa3cd2d  gcc/testsuite/gfortran.dg/associate_17.f90
! 2011687df22f57818a1572014d3e0782  gcc/testsuite/gfortran.dg/associate_18.f08
! e98ac68a090ffce50129c6da0237c745  gcc/testsuite/gfortran.dg/associate_19.f03
  c066328da870ad9b313bf9491c5b72d6  gcc/testsuite/gfortran.dg/associate_2.f95
! 2f3e702355026af6fa7d53c38284b898  gcc/testsuite/gfortran.dg/associate_20.f03
  79c66e6ef8d2160f4b4fcb4c44322791  gcc/testsuite/gfortran.dg/associate_21.f90
! 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
  ada9a3758cef9c8c02a55f1139c4f13b  gcc/testsuite/gfortran.dg/associate_3.f03
  49705e479c6ca71ab3678aef4ee07687  gcc/testsuite/gfortran.dg/associate_30.f90
+ 4c227011c3d554a292526dea236870bb  gcc/testsuite/gfortran.dg/associate_32.f03
+ f023f2a531d000e8c23860928425ebf3  gcc/testsuite/gfortran.dg/associate_33.f03
+ 43344cd1eb7b62636ca48b194376c578  gcc/testsuite/gfortran.dg/associate_34.f90
+ 8c3ba9312a438098d484049d8c813bf7  gcc/testsuite/gfortran.dg/associate_35.f90
+ 3ff2903cd2631cd656c7cc0a7e337801  gcc/testsuite/gfortran.dg/associate_36.f90
+ 03bc3bb33729707f2902aae17a29bee6  gcc/testsuite/gfortran.dg/associate_37.f90
  a1f5f0d8423367d45fe9382b407ce7e9  gcc/testsuite/gfortran.dg/associate_4.f08
  5dfaf5e9c3d8b8b8f835046ca42ccbf4  gcc/testsuite/gfortran.dg/associate_5.f03
! 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
! 51f82584276ab8f411b8d9d7e84fadc8  gcc/testsuite/gfortran.dg/associated_1.f90
! 76b7fa8062aee263b1ef942bd8bc01bf  gcc/testsuite/gfortran.dg/associated_2.f90
  dd5a4a295ba62a8846fa5d3878b5dfa6  gcc/testsuite/gfortran.dg/associated_3.f90
  0f2a65cfddbb45fcf9cbe7ed6d6a2577  gcc/testsuite/gfortran.dg/associated_4.f90
! e8c458194678efd669b67ee1555bd703  gcc/testsuite/gfortran.dg/associated_5.f90
! 16acf798060dc8edd4b9c73422f7ce2a  gcc/testsuite/gfortran.dg/associated_6.f90
  ed08ee0bcaabca9d5a128ae929308739  gcc/testsuite/gfortran.dg/associated_7.f90
  32b4a71d6d649eeafd569b412f4ca3cf  gcc/testsuite/gfortran.dg/associated_target_1.f90
  14ea917bbb9224466ca398e5094e8874  gcc/testsuite/gfortran.dg/associated_target_2.f90
! 7edaeef95006ed8758d6af207a504b5c  gcc/testsuite/gfortran.dg/associated_target_3.f90
! 408f82dd557d8d77f4652347ea5412e4  gcc/testsuite/gfortran.dg/associated_target_4.f90
! c8dcd0248b062389c3ebfd88d9473a64  gcc/testsuite/gfortran.dg/associated_target_5.f03
! f7cfdbf4de38d945e0085b02ebb99e8d  gcc/testsuite/gfortran.dg/associated_target_6.f03
  6376d7ef6f137372a501dd7c8547864d  gcc/testsuite/gfortran.dg/associative_1.f90
  04280cc7719e51d18a6ad4510745c528  gcc/testsuite/gfortran.dg/assumed_charlen_arg_1.f90
  e41613f37c052bf20cb9d34a7bb40da1  gcc/testsuite/gfortran.dg/assumed_charlen_arg_2.f90
*************** e6719846a0d56fb08570363cc942d985  gcc/te
*** 48810,48840 ****
  1eb74813f6083e8ae40cefdc0ddd1755  gcc/testsuite/gfortran.dg/assumed_charlen_function_6.f90
  5893a88ec7ab47fda1daa4953b37559d  gcc/testsuite/gfortran.dg/assumed_charlen_in_main.f90
  9593ca2177be6b3e0aee7138f62389c4  gcc/testsuite/gfortran.dg/assumed_charlen_needed_1.f90
  994aa6997da39a67cf365954885c693e  gcc/testsuite/gfortran.dg/assumed_charlen_sharing.f90
  99fbd7567ee971b88ebc11f905c14953  gcc/testsuite/gfortran.dg/assumed_charlen_substring_1.f90
! f9560349fe697cf56f8bbe006a5e7609  gcc/testsuite/gfortran.dg/assumed_dummy_1.f90
  bcbf9fad4afb806903e19c6e3defccbd  gcc/testsuite/gfortran.dg/assumed_dummy_2.f90
  c024a7d3605725f398283d3e6351a637  gcc/testsuite/gfortran.dg/assumed_len.f90
  4ea579a901f2ba867f7acca09b97b2d8  gcc/testsuite/gfortran.dg/assumed_present.f90
! aa62cef37602fad57a16f5be33ed1282  gcc/testsuite/gfortran.dg/assumed_rank_1.f90
! 18a19e1b23803bbfc7ea96928f4acccf  gcc/testsuite/gfortran.dg/assumed_rank_10.f90
  902ad8d66d78f508c5a7a8e21a177906  gcc/testsuite/gfortran.dg/assumed_rank_11.f90
  7b5ed633a8322cf6570abdcd1f341dad  gcc/testsuite/gfortran.dg/assumed_rank_12.f90
  93ff0ad792c55f57799a102080fa1412  gcc/testsuite/gfortran.dg/assumed_rank_13.f90
  d6f30c8e29ab67ebb49be7bca4d7e8bf  gcc/testsuite/gfortran.dg/assumed_rank_1_c.c
! a2d91ef8d92f36690244cc280037c31d  gcc/testsuite/gfortran.dg/assumed_rank_2.f90
  9478ccb330ec844df5877a48096c9976  gcc/testsuite/gfortran.dg/assumed_rank_3.f90
  a97591ca0f7ec68f4a27f9437d09cb92  gcc/testsuite/gfortran.dg/assumed_rank_4.f90
  6573c190492964e88947fae5a8c31d43  gcc/testsuite/gfortran.dg/assumed_rank_5.f90
  99409441ba2b365b6496267b1c1ae7c6  gcc/testsuite/gfortran.dg/assumed_rank_6.f90
! d22edfa11126c4de6f2fd0327ce4230b  gcc/testsuite/gfortran.dg/assumed_rank_7.f90
! d76697c206a9563d98f8acb9cf8e9dd7  gcc/testsuite/gfortran.dg/assumed_rank_8.f90
  acebc3b5f82cb5b3adb2dfc611ab18a6  gcc/testsuite/gfortran.dg/assumed_rank_8_c.c
! 1d8b16a3186eb2cd0ac42978a9fd545c  gcc/testsuite/gfortran.dg/assumed_rank_9.f90
! d4cf9f10a73be20040551cea9d4c6391  gcc/testsuite/gfortran.dg/assumed_rank_bounds_1.f90
! b91d322e1b2019704eecd255b73974e3  gcc/testsuite/gfortran.dg/assumed_rank_bounds_2.f90
  38b96d93ac6e0f9b41ba46f0e5089131  gcc/testsuite/gfortran.dg/assumed_shape_ranks_1.f90
! 042535d44d0c5da0bb20634d7a1a0de6  gcc/testsuite/gfortran.dg/assumed_shape_ranks_2.f90
  bd5ff6db107b9430b2910d499614a059  gcc/testsuite/gfortran.dg/assumed_size_1.f90
  f38416d17dca3a9330976fd24749e371  gcc/testsuite/gfortran.dg/assumed_size_2.f90
  cdbd174fba27a1cc2fe42d6e10b97afd  gcc/testsuite/gfortran.dg/assumed_size_dt_dummy.f90
--- 52299,52330 ----
  1eb74813f6083e8ae40cefdc0ddd1755  gcc/testsuite/gfortran.dg/assumed_charlen_function_6.f90
  5893a88ec7ab47fda1daa4953b37559d  gcc/testsuite/gfortran.dg/assumed_charlen_in_main.f90
  9593ca2177be6b3e0aee7138f62389c4  gcc/testsuite/gfortran.dg/assumed_charlen_needed_1.f90
+ ca87784564232e0a6814ebeab8eba19d  gcc/testsuite/gfortran.dg/assumed_charlen_parameter.f90
  994aa6997da39a67cf365954885c693e  gcc/testsuite/gfortran.dg/assumed_charlen_sharing.f90
  99fbd7567ee971b88ebc11f905c14953  gcc/testsuite/gfortran.dg/assumed_charlen_substring_1.f90
! 70b2151c9f2f443d5d8bc3034957089e  gcc/testsuite/gfortran.dg/assumed_dummy_1.f90
  bcbf9fad4afb806903e19c6e3defccbd  gcc/testsuite/gfortran.dg/assumed_dummy_2.f90
  c024a7d3605725f398283d3e6351a637  gcc/testsuite/gfortran.dg/assumed_len.f90
  4ea579a901f2ba867f7acca09b97b2d8  gcc/testsuite/gfortran.dg/assumed_present.f90
! 553be15ef977f991d775c0fd75e2cf7d  gcc/testsuite/gfortran.dg/assumed_rank_1.f90
! 1b4b7864496f1def7c7b47799a0f5ad1  gcc/testsuite/gfortran.dg/assumed_rank_10.f90
  902ad8d66d78f508c5a7a8e21a177906  gcc/testsuite/gfortran.dg/assumed_rank_11.f90
  7b5ed633a8322cf6570abdcd1f341dad  gcc/testsuite/gfortran.dg/assumed_rank_12.f90
  93ff0ad792c55f57799a102080fa1412  gcc/testsuite/gfortran.dg/assumed_rank_13.f90
  d6f30c8e29ab67ebb49be7bca4d7e8bf  gcc/testsuite/gfortran.dg/assumed_rank_1_c.c
! 7619e0aa4aa95c5a3a1e9a940ad9e9b5  gcc/testsuite/gfortran.dg/assumed_rank_2.f90
  9478ccb330ec844df5877a48096c9976  gcc/testsuite/gfortran.dg/assumed_rank_3.f90
  a97591ca0f7ec68f4a27f9437d09cb92  gcc/testsuite/gfortran.dg/assumed_rank_4.f90
  6573c190492964e88947fae5a8c31d43  gcc/testsuite/gfortran.dg/assumed_rank_5.f90
  99409441ba2b365b6496267b1c1ae7c6  gcc/testsuite/gfortran.dg/assumed_rank_6.f90
! 82cb316b995fa88f4a4f25413f990b72  gcc/testsuite/gfortran.dg/assumed_rank_7.f90
! 9c427600c048a9ea99e32ddd2a6796c1  gcc/testsuite/gfortran.dg/assumed_rank_8.f90
  acebc3b5f82cb5b3adb2dfc611ab18a6  gcc/testsuite/gfortran.dg/assumed_rank_8_c.c
! d5695486fe6a7bb7d94e2599ecc5ec1a  gcc/testsuite/gfortran.dg/assumed_rank_9.f90
! 9307e994084b547ff359d8f128f2c63b  gcc/testsuite/gfortran.dg/assumed_rank_bounds_1.f90
! a84a4ce73143d7e316b39e8a3f0d48c8  gcc/testsuite/gfortran.dg/assumed_rank_bounds_2.f90
  38b96d93ac6e0f9b41ba46f0e5089131  gcc/testsuite/gfortran.dg/assumed_shape_ranks_1.f90
! 0ea2ab91194b7db399228bc69b5e76f1  gcc/testsuite/gfortran.dg/assumed_shape_ranks_2.f90
  bd5ff6db107b9430b2910d499614a059  gcc/testsuite/gfortran.dg/assumed_size_1.f90
  f38416d17dca3a9330976fd24749e371  gcc/testsuite/gfortran.dg/assumed_size_2.f90
  cdbd174fba27a1cc2fe42d6e10b97afd  gcc/testsuite/gfortran.dg/assumed_size_dt_dummy.f90
*************** cdbd174fba27a1cc2fe42d6e10b97afd  gcc/te
*** 48843,48849 ****
  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
! 64d76b59391d15dc8c8c058b9862973a  gcc/testsuite/gfortran.dg/assumed_type_2.f90
  27b0b5ad82abb1d06990db9025f0c992  gcc/testsuite/gfortran.dg/assumed_type_3.f90
  efe423227b9fdac2ac81898e5770a7d9  gcc/testsuite/gfortran.dg/assumed_type_4.f90
  4700aa6f851cace7a18c8476fe6d6872  gcc/testsuite/gfortran.dg/assumed_type_5.f90
--- 52333,52339 ----
  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
! a6cc14805164447521e48dfbdeed7a0b  gcc/testsuite/gfortran.dg/assumed_type_2.f90
  27b0b5ad82abb1d06990db9025f0c992  gcc/testsuite/gfortran.dg/assumed_type_3.f90
  efe423227b9fdac2ac81898e5770a7d9  gcc/testsuite/gfortran.dg/assumed_type_4.f90
  4700aa6f851cace7a18c8476fe6d6872  gcc/testsuite/gfortran.dg/assumed_type_5.f90
*************** b2c61cbd0846a917af450b44d42b4b63  gcc/te
*** 48854,48915 ****
  3b9736dd37f61512493ba813ae1290ed  gcc/testsuite/gfortran.dg/asynchronous_2.f90
  2f49a8307acc9193ceb8e2169049214a  gcc/testsuite/gfortran.dg/asynchronous_3.f03
  ee834071fbdbf11553b04e2dab5a50e0  gcc/testsuite/gfortran.dg/asynchronous_4.f90
! ce524722e893737e59016bef1f8bacf0  gcc/testsuite/gfortran.dg/atan2_1.f90
  fa450718dba3ab168e51f1ea0a7395d9  gcc/testsuite/gfortran.dg/atan2_2.f90
! 1e7f74d6532554c8c19294f2cb8ebfdb  gcc/testsuite/gfortran.dg/auto_array_1.f90
! c0b04bd602243f30800d803b5c95ffcf  gcc/testsuite/gfortran.dg/auto_char_dummy_array_1.f90
  8ade04864380b4070b95d7f88364789e  gcc/testsuite/gfortran.dg/auto_char_dummy_array_2.f90
! 31cec8f19a60b1ae39f195ca47854206  gcc/testsuite/gfortran.dg/auto_char_dummy_array_3.f90
  845aeda86eafe27d17a28287c7c6d603  gcc/testsuite/gfortran.dg/auto_char_len_1.f90
  eb841a974c7fa19b58afba3c772bb55d  gcc/testsuite/gfortran.dg/auto_char_len_2.f90
! 112bf7a18b812bb963e8c18d6af80738  gcc/testsuite/gfortran.dg/auto_char_len_3.f90
  1e47b587f8ee47fa0833f5f318257ccb  gcc/testsuite/gfortran.dg/auto_char_len_4.f90
! 7657b0c01147202a02e93da740397d56  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
! 17e7238834a16b4bc23c3e0a89357cd0  gcc/testsuite/gfortran.dg/auto_internal_assumed.f90
! 50416b575a9dc0ce0b31e79a3b9b7f8c  gcc/testsuite/gfortran.dg/auto_pointer_array_result_1.f90
  31e9278c6f1c25f6970f1455223ed3c0  gcc/testsuite/gfortran.dg/auto_save_1.f90
! d736b542d4ef5e539b6ab402b0d757c1  gcc/testsuite/gfortran.dg/auto_save_2.f90
  b347390b63a364594179b619dec33a75  gcc/testsuite/gfortran.dg/automatic_char_len_1.f90
  0bb10fbdd251207409a82e8715768a6e  gcc/testsuite/gfortran.dg/automatic_char_len_2.f90
! 3ac3473c59bc5aca3c919aa527aa2503  gcc/testsuite/gfortran.dg/automatic_default_init_1.f90
! d5b2ee81246f6427b4f5a7f1e1c7156d  gcc/testsuite/gfortran.dg/automatic_module_variable.f90
! 54d92b19e932e4a9883f0853756d5bbd  gcc/testsuite/gfortran.dg/backslash_1.f90
! 239114651bbe9b53f1996646af1a1149  gcc/testsuite/gfortran.dg/backslash_2.f90
! 0b4a6c1ad97418a1e5b7698a54d99ac8  gcc/testsuite/gfortran.dg/backslash_3.f
! 570f894ee58cbe5c2cd30655e1b5b181  gcc/testsuite/gfortran.dg/backspace_1.f
! 298d1101c8165c3722924fe7e7d6a2d6  gcc/testsuite/gfortran.dg/backspace_10.f90
! cfcf4e07fcc415616be8e3c131d4a8bf  gcc/testsuite/gfortran.dg/backspace_11.f90
! 18ba0d4df7fb8ae95d1c72b4738b4768  gcc/testsuite/gfortran.dg/backspace_2.f
! 9aa1c10ef4f0b494c94c9d4834821ab0  gcc/testsuite/gfortran.dg/backspace_3.f
! e380ee240bef5ba4ef76004d28c8e451  gcc/testsuite/gfortran.dg/backspace_4.f
! 26a6575442784c465f73660edcbc2e5d  gcc/testsuite/gfortran.dg/backspace_5.f
! 0515607d86d0549ea961494c7873d735  gcc/testsuite/gfortran.dg/backspace_6.f
! 789463a92e23d1d0d2e63e1ffd217be3  gcc/testsuite/gfortran.dg/backspace_7.f90
! b0a1eabf595071c300d6a5f2ad5c3de0  gcc/testsuite/gfortran.dg/backspace_8.f
! 5329cced0d79c6bc5e98309b48ec3103  gcc/testsuite/gfortran.dg/backspace_9.f
  91d6853dde1f32b190a55c30188a48c7  gcc/testsuite/gfortran.dg/backtrace_1.f90
! 1caecf47c75a5289cf7aaab54f8f3116  gcc/testsuite/gfortran.dg/bad_automatic_objects_1.f90
  d863afb920048efbca3bf6b678a61dec  gcc/testsuite/gfortran.dg/badline.f
! 41f643d6c81415110d1ab61fb7f523ab  gcc/testsuite/gfortran.dg/bessel_1.f90
! 4a1b60a52196cc2e6c4bb8912eac8359  gcc/testsuite/gfortran.dg/bessel_2.f90
  8b8adb9a69b37127c49e2dedd05a5f8e  gcc/testsuite/gfortran.dg/bessel_3.f90
  f98c4c5663f30de86f0afb3d79ad29d9  gcc/testsuite/gfortran.dg/bessel_4.f90
! f5da45ab40c08aa0305c91935e5c40ca  gcc/testsuite/gfortran.dg/bessel_5.f90
! a7a9e9ddc9f68284ca1adb507332ac49  gcc/testsuite/gfortran.dg/bessel_6.f90
! d504ff17b1e5f334da13d52f7e741b06  gcc/testsuite/gfortran.dg/bessel_7.f90
  9969185b5b657469b14a9f67f9a454ce  gcc/testsuite/gfortran.dg/besxy.f90
  1d40b0510b949ab372f9c441e7095709  gcc/testsuite/gfortran.dg/bind_c_18.f90
  da3d053014e0ff4892cca32d6bf23866  gcc/testsuite/gfortran.dg/bind_c_array_params.f03
! 6520ef8f7df76927124be0bf4d43084e  gcc/testsuite/gfortran.dg/bind_c_array_params_2.f90
  64b1da6deddc65df427e780f5980935a  gcc/testsuite/gfortran.dg/bind_c_bool_1.f90
  0be2d54dc75c98c5a88980df010d53b7  gcc/testsuite/gfortran.dg/bind_c_coms.f90
  4889c13f805870ea7ba977bf711c64c4  gcc/testsuite/gfortran.dg/bind_c_coms_driver.c
  f0d7ecd83d8615f2d87f3c44e97b3d23  gcc/testsuite/gfortran.dg/bind_c_dts.f90
! d4fe5b4ca9ccad68a57210b768e878b0  gcc/testsuite/gfortran.dg/bind_c_dts_2.f03
  b96b0917568c41c9e26061dd3ace7e7e  gcc/testsuite/gfortran.dg/bind_c_dts_2_driver.c
! eff56276e8a6af1d5ffbba342ad87d71  gcc/testsuite/gfortran.dg/bind_c_dts_3.f03
  f67bf789222aca1ff5d48cab6c1ec64c  gcc/testsuite/gfortran.dg/bind_c_dts_4.f03
  23e66363f285e5bb44a031bcd887ea71  gcc/testsuite/gfortran.dg/bind_c_dts_5.f90
  be8936d928c2cd968e9d77975d4626be  gcc/testsuite/gfortran.dg/bind_c_dts_driver.c
--- 52344,52408 ----
  3b9736dd37f61512493ba813ae1290ed  gcc/testsuite/gfortran.dg/asynchronous_2.f90
  2f49a8307acc9193ceb8e2169049214a  gcc/testsuite/gfortran.dg/asynchronous_3.f03
  ee834071fbdbf11553b04e2dab5a50e0  gcc/testsuite/gfortran.dg/asynchronous_4.f90
! c45eedde0562a60cdbc393433096fcce  gcc/testsuite/gfortran.dg/atan2_1.f90
  fa450718dba3ab168e51f1ea0a7395d9  gcc/testsuite/gfortran.dg/atan2_2.f90
! 1de887a6713de99b4d24dece9810994f  gcc/testsuite/gfortran.dg/auto_array_1.f90
! 5728d828f281df7854b3c34318983790  gcc/testsuite/gfortran.dg/auto_char_dummy_array_1.f90
  8ade04864380b4070b95d7f88364789e  gcc/testsuite/gfortran.dg/auto_char_dummy_array_2.f90
! 9ecf3f83ce1a0a75c515b0fb65a5e485  gcc/testsuite/gfortran.dg/auto_char_dummy_array_3.f90
  845aeda86eafe27d17a28287c7c6d603  gcc/testsuite/gfortran.dg/auto_char_len_1.f90
  eb841a974c7fa19b58afba3c772bb55d  gcc/testsuite/gfortran.dg/auto_char_len_2.f90
! a2b1720fb52e74e61ef6219cf15146ec  gcc/testsuite/gfortran.dg/auto_char_len_3.f90
  1e47b587f8ee47fa0833f5f318257ccb  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
! c4b15a25aeb90adb2fe3894279378ec7  gcc/testsuite/gfortran.dg/auto_internal_assumed.f90
! 61fcee0335e2dade3122b72286de036f  gcc/testsuite/gfortran.dg/auto_pointer_array_result_1.f90
  31e9278c6f1c25f6970f1455223ed3c0  gcc/testsuite/gfortran.dg/auto_save_1.f90
! 1a947433e8a63996953999f840b27565  gcc/testsuite/gfortran.dg/auto_save_2.f90
! bfe48b30aaf214bae7afa7bb0bbc78bf  gcc/testsuite/gfortran.dg/automatic_1.f90
  b347390b63a364594179b619dec33a75  gcc/testsuite/gfortran.dg/automatic_char_len_1.f90
  0bb10fbdd251207409a82e8715768a6e  gcc/testsuite/gfortran.dg/automatic_char_len_2.f90
! c8b2f59a74a35af78ffe04eabc9fc9e5  gcc/testsuite/gfortran.dg/automatic_default_init_1.f90
! 73d6e8707024d85b939354155ff259a3  gcc/testsuite/gfortran.dg/automatic_module_variable.f90
! 04b2c2629dc8be462a47a9e7c03ce216  gcc/testsuite/gfortran.dg/automatic_repeat.f90
! 8d52fbc1897771f76d52b98ba13757f3  gcc/testsuite/gfortran.dg/automatic_save.f90
! 9a2a92b933a602b09976e12db2bfe305  gcc/testsuite/gfortran.dg/backslash_1.f90
! 8f3952ea79591538171729e1b0a0113a  gcc/testsuite/gfortran.dg/backslash_2.f90
! 33f62ff4c3dc6f706ee3185a30cdef4a  gcc/testsuite/gfortran.dg/backslash_3.f
! c3186c747ce87aab0c5528529d475605  gcc/testsuite/gfortran.dg/backspace_1.f
! de42318472cdf90f48a359bb6c1ccb8a  gcc/testsuite/gfortran.dg/backspace_10.f90
! 225ab6c6edd319fa57a22bbabee439bd  gcc/testsuite/gfortran.dg/backspace_11.f90
! 148bf51cd2dda576be100b522da56e28  gcc/testsuite/gfortran.dg/backspace_2.f
! ff7ee254a67bb7a2be5b7efc27b57bbc  gcc/testsuite/gfortran.dg/backspace_3.f
! c0051b0d9c109f9d12b3e1cc3644edef  gcc/testsuite/gfortran.dg/backspace_4.f
! 491da9227493d444ea01d559631946bf  gcc/testsuite/gfortran.dg/backspace_5.f
! bfed05f226fdb785d1f1696ce7ac7b13  gcc/testsuite/gfortran.dg/backspace_6.f
! dd8f4f3981de46c6d41cc99ca047b188  gcc/testsuite/gfortran.dg/backspace_7.f90
! c7b4b66548f050511f0a3316a0f049c8  gcc/testsuite/gfortran.dg/backspace_8.f
! 8b8f3fd2a1f66c8d9430ac60d35b7046  gcc/testsuite/gfortran.dg/backspace_9.f
  91d6853dde1f32b190a55c30188a48c7  gcc/testsuite/gfortran.dg/backtrace_1.f90
! 8571429fea8df6ee2c97c22a846b432a  gcc/testsuite/gfortran.dg/bad_automatic_objects_1.f90
  d863afb920048efbca3bf6b678a61dec  gcc/testsuite/gfortran.dg/badline.f
! 4bbbafb00ed3654d5f517026c6a6817e  gcc/testsuite/gfortran.dg/bessel_1.f90
! 614970fa66f9e6f94bffab59cdcbea9e  gcc/testsuite/gfortran.dg/bessel_2.f90
  8b8adb9a69b37127c49e2dedd05a5f8e  gcc/testsuite/gfortran.dg/bessel_3.f90
  f98c4c5663f30de86f0afb3d79ad29d9  gcc/testsuite/gfortran.dg/bessel_4.f90
! 7c6a0363c8e5760a8743dd93665ea8ac  gcc/testsuite/gfortran.dg/bessel_5.f90
! be0405b4a56c0ba1a3fe8a34945a1be5  gcc/testsuite/gfortran.dg/bessel_6.f90
! a2a8d60336baf77f1c51872999693b38  gcc/testsuite/gfortran.dg/bessel_7.f90
  9969185b5b657469b14a9f67f9a454ce  gcc/testsuite/gfortran.dg/besxy.f90
  1d40b0510b949ab372f9c441e7095709  gcc/testsuite/gfortran.dg/bind_c_18.f90
  da3d053014e0ff4892cca32d6bf23866  gcc/testsuite/gfortran.dg/bind_c_array_params.f03
! 4bcc3bb027d41411684837a0fcc51669  gcc/testsuite/gfortran.dg/bind_c_array_params_2.f90
  64b1da6deddc65df427e780f5980935a  gcc/testsuite/gfortran.dg/bind_c_bool_1.f90
  0be2d54dc75c98c5a88980df010d53b7  gcc/testsuite/gfortran.dg/bind_c_coms.f90
  4889c13f805870ea7ba977bf711c64c4  gcc/testsuite/gfortran.dg/bind_c_coms_driver.c
  f0d7ecd83d8615f2d87f3c44e97b3d23  gcc/testsuite/gfortran.dg/bind_c_dts.f90
! 20e6e63baa86ba4c4c95005cd1019651  gcc/testsuite/gfortran.dg/bind_c_dts_2.f03
  b96b0917568c41c9e26061dd3ace7e7e  gcc/testsuite/gfortran.dg/bind_c_dts_2_driver.c
! 3c51f311ae228b28beaa58e503b84f98  gcc/testsuite/gfortran.dg/bind_c_dts_3.f03
  f67bf789222aca1ff5d48cab6c1ec64c  gcc/testsuite/gfortran.dg/bind_c_dts_4.f03
  23e66363f285e5bb44a031bcd887ea71  gcc/testsuite/gfortran.dg/bind_c_dts_5.f90
  be8936d928c2cd968e9d77975d4626be  gcc/testsuite/gfortran.dg/bind_c_dts_driver.c
*************** a36b44815629dbcd75c464bc0fa19b07  gcc/te
*** 48923,48932 ****
  c72b9de82bd36fb1a66cb73f1fc234be  gcc/testsuite/gfortran.dg/bind_c_usage_12.f03
  5081cd93f685da759aa9346a1314df15  gcc/testsuite/gfortran.dg/bind_c_usage_13.f03
  653d36e16ddb0e9ae7b0ce688415e59c  gcc/testsuite/gfortran.dg/bind_c_usage_14.f03
! 4953698b0067b9cd4cd9dddb6f98a9f7  gcc/testsuite/gfortran.dg/bind_c_usage_15.f90
! 2521cdafbcc557aa2b8e672deabb1601  gcc/testsuite/gfortran.dg/bind_c_usage_16.f03
  5ed280cf205b07950c5b80b0f82e1f64  gcc/testsuite/gfortran.dg/bind_c_usage_16_c.c
! de2efd75287f4d29072653a3e766befa  gcc/testsuite/gfortran.dg/bind_c_usage_17.f90
  63a16e805141bb5326e4bbe72ea154bd  gcc/testsuite/gfortran.dg/bind_c_usage_17_c.c
  baed3c35b0f46ac8dc4a234ce7da475f  gcc/testsuite/gfortran.dg/bind_c_usage_18.f90
  5c29119b72f30d064cee4998de430755  gcc/testsuite/gfortran.dg/bind_c_usage_19.f90
--- 52416,52425 ----
  c72b9de82bd36fb1a66cb73f1fc234be  gcc/testsuite/gfortran.dg/bind_c_usage_12.f03
  5081cd93f685da759aa9346a1314df15  gcc/testsuite/gfortran.dg/bind_c_usage_13.f03
  653d36e16ddb0e9ae7b0ce688415e59c  gcc/testsuite/gfortran.dg/bind_c_usage_14.f03
! 717658e3dda20a2456d24fb01548f751  gcc/testsuite/gfortran.dg/bind_c_usage_15.f90
! 18e7d597ce3350fbb7aaf9bf978ac233  gcc/testsuite/gfortran.dg/bind_c_usage_16.f03
  5ed280cf205b07950c5b80b0f82e1f64  gcc/testsuite/gfortran.dg/bind_c_usage_16_c.c
! bb09bf889b4152e3367500bbe7c39883  gcc/testsuite/gfortran.dg/bind_c_usage_17.f90
  63a16e805141bb5326e4bbe72ea154bd  gcc/testsuite/gfortran.dg/bind_c_usage_17_c.c
  baed3c35b0f46ac8dc4a234ce7da475f  gcc/testsuite/gfortran.dg/bind_c_usage_18.f90
  5c29119b72f30d064cee4998de430755  gcc/testsuite/gfortran.dg/bind_c_usage_19.f90
*************** baed3c35b0f46ac8dc4a234ce7da475f  gcc/te
*** 48935,48941 ****
  159a728dbe70f600e5bf4e17e1cb6d2a  gcc/testsuite/gfortran.dg/bind_c_usage_21.f90
  8e21501d1a1e9e337d439751151629f3  gcc/testsuite/gfortran.dg/bind_c_usage_22.f90
  17e586065b197e5555d7deff8b92789e  gcc/testsuite/gfortran.dg/bind_c_usage_23.f90
! c84e3fec8d45ee40d98dd5855de31ace  gcc/testsuite/gfortran.dg/bind_c_usage_24.f90
  c9299752f9eca1873ed3ab59584ec54d  gcc/testsuite/gfortran.dg/bind_c_usage_24_c.c
  c52067b256112da11ecb5382b7e8ca64  gcc/testsuite/gfortran.dg/bind_c_usage_25.f90
  2b32d8a4bff143fafbab91bd6b7bf8b7  gcc/testsuite/gfortran.dg/bind_c_usage_26.f90
--- 52428,52434 ----
  159a728dbe70f600e5bf4e17e1cb6d2a  gcc/testsuite/gfortran.dg/bind_c_usage_21.f90
  8e21501d1a1e9e337d439751151629f3  gcc/testsuite/gfortran.dg/bind_c_usage_22.f90
  17e586065b197e5555d7deff8b92789e  gcc/testsuite/gfortran.dg/bind_c_usage_23.f90
! b7326765f86449e6d544bc594f0ac4c6  gcc/testsuite/gfortran.dg/bind_c_usage_24.f90
  c9299752f9eca1873ed3ab59584ec54d  gcc/testsuite/gfortran.dg/bind_c_usage_24_c.c
  c52067b256112da11ecb5382b7e8ca64  gcc/testsuite/gfortran.dg/bind_c_usage_25.f90
  2b32d8a4bff143fafbab91bd6b7bf8b7  gcc/testsuite/gfortran.dg/bind_c_usage_26.f90
*************** c52067b256112da11ecb5382b7e8ca64  gcc/te
*** 48943,48948 ****
--- 52436,52443 ----
  929bade7b8cf5439d343f888598eccef  gcc/testsuite/gfortran.dg/bind_c_usage_28.f90
  1a02be1b1f594a9dfd2776e6e2b51723  gcc/testsuite/gfortran.dg/bind_c_usage_29.f90
  0e516dce0f7c0ff75b5d6af3cd5b34ed  gcc/testsuite/gfortran.dg/bind_c_usage_3.f03
+ fd5aa0aeb583bf1c520647699c09098c  gcc/testsuite/gfortran.dg/bind_c_usage_30.f90
+ 56704cc567795acbfacfd33c6a91578e  gcc/testsuite/gfortran.dg/bind_c_usage_31.f90
  d245d9e737fbf5c0213b3df7d060446c  gcc/testsuite/gfortran.dg/bind_c_usage_5.f03
  1b4c4194bd216642b83f69c705e997b9  gcc/testsuite/gfortran.dg/bind_c_usage_6.f03
  913f70b74c51fb51dcd11d1b86a39db5  gcc/testsuite/gfortran.dg/bind_c_usage_7.f03
*************** df195f87abf669bdde944bcddc1b0ff8  gcc/te
*** 48950,48967 ****
  5be271a074f249c9f9a18bf854945cfe  gcc/testsuite/gfortran.dg/bind_c_usage_9.f03
  b4ca41d859dbd0ba1ef6ceb3740adf4d  gcc/testsuite/gfortran.dg/bind_c_vars.f90
  1045386fbecb818e51e4f827691c180a  gcc/testsuite/gfortran.dg/bind_c_vars_driver.c
! 7a720ac26ca591e8fba78127d11db038  gcc/testsuite/gfortran.dg/binding_c_table_15_1.f03
  94509e767501b7090ebb5ee664348878  gcc/testsuite/gfortran.dg/binding_label_tests.f03
  702e417cdb89bd88afaec3233a3996a2  gcc/testsuite/gfortran.dg/binding_label_tests_10.f03
! c7e81822a715273004d65e69ed7ff7b0  gcc/testsuite/gfortran.dg/binding_label_tests_10_main.f03
  503b4f7d82157078801294fc18551444  gcc/testsuite/gfortran.dg/binding_label_tests_11.f03
! 82e7b5dce4ef77811dc943a5b5651826  gcc/testsuite/gfortran.dg/binding_label_tests_11_main.f03
  51ed8448ae4143485d9cff2cea92b59c  gcc/testsuite/gfortran.dg/binding_label_tests_12.f03
  37da752d28ea72bb8aa5906517459b26  gcc/testsuite/gfortran.dg/binding_label_tests_13.f03
! 6dfb3fa6a3e005f723729ea00c46836b  gcc/testsuite/gfortran.dg/binding_label_tests_13_main.f03
  edb6eda8bfd4eb1c9f00d2218c9d5325  gcc/testsuite/gfortran.dg/binding_label_tests_14.f03
  3eead8b3df3b02195d270e11849cc5c9  gcc/testsuite/gfortran.dg/binding_label_tests_15.f03
! c15b7ef52298b67db755256338452441  gcc/testsuite/gfortran.dg/binding_label_tests_16.f03
  dc628f4641c74a9676acf108aa9840dd  gcc/testsuite/gfortran.dg/binding_label_tests_17.f90
  b0c0572cb277d0461f63125ba7926d73  gcc/testsuite/gfortran.dg/binding_label_tests_18.f90
  b7dd2764ce814a0926ea4d77ef8d9c8e  gcc/testsuite/gfortran.dg/binding_label_tests_19.f90
--- 52445,52462 ----
  5be271a074f249c9f9a18bf854945cfe  gcc/testsuite/gfortran.dg/bind_c_usage_9.f03
  b4ca41d859dbd0ba1ef6ceb3740adf4d  gcc/testsuite/gfortran.dg/bind_c_vars.f90
  1045386fbecb818e51e4f827691c180a  gcc/testsuite/gfortran.dg/bind_c_vars_driver.c
! e3ed0a7ee1d06462d44eb459caf13083  gcc/testsuite/gfortran.dg/binding_c_table_15_1.f03
  94509e767501b7090ebb5ee664348878  gcc/testsuite/gfortran.dg/binding_label_tests.f03
  702e417cdb89bd88afaec3233a3996a2  gcc/testsuite/gfortran.dg/binding_label_tests_10.f03
! 37ae056bc2dc73257f72e51b2eeb9386  gcc/testsuite/gfortran.dg/binding_label_tests_10_main.f03
  503b4f7d82157078801294fc18551444  gcc/testsuite/gfortran.dg/binding_label_tests_11.f03
! 2f1855ecd44e86d0125aaf56ff16670f  gcc/testsuite/gfortran.dg/binding_label_tests_11_main.f03
  51ed8448ae4143485d9cff2cea92b59c  gcc/testsuite/gfortran.dg/binding_label_tests_12.f03
  37da752d28ea72bb8aa5906517459b26  gcc/testsuite/gfortran.dg/binding_label_tests_13.f03
! 70cbc08e51332aab22b94509dc0e9318  gcc/testsuite/gfortran.dg/binding_label_tests_13_main.f03
  edb6eda8bfd4eb1c9f00d2218c9d5325  gcc/testsuite/gfortran.dg/binding_label_tests_14.f03
  3eead8b3df3b02195d270e11849cc5c9  gcc/testsuite/gfortran.dg/binding_label_tests_15.f03
! 80a097851ae9d9d7a2335bd0e9689753  gcc/testsuite/gfortran.dg/binding_label_tests_16.f03
  dc628f4641c74a9676acf108aa9840dd  gcc/testsuite/gfortran.dg/binding_label_tests_17.f90
  b0c0572cb277d0461f63125ba7926d73  gcc/testsuite/gfortran.dg/binding_label_tests_18.f90
  b7dd2764ce814a0926ea4d77ef8d9c8e  gcc/testsuite/gfortran.dg/binding_label_tests_19.f90
*************** b7dd2764ce814a0926ea4d77ef8d9c8e  gcc/te
*** 48969,49008 ****
  18fe9a238ae718da3925496277094183  gcc/testsuite/gfortran.dg/binding_label_tests_20.f90
  f72ecac7fbcaaf2324089933afd1cb6a  gcc/testsuite/gfortran.dg/binding_label_tests_21.f90
  09d3da234a8db85d0e4b41b8d2503f9e  gcc/testsuite/gfortran.dg/binding_label_tests_22.f90
! d490f42a118b6f6a31217d544f2571ed  gcc/testsuite/gfortran.dg/binding_label_tests_23.f90
  ea7e9688dec298fa61eef31972b6c8cd  gcc/testsuite/gfortran.dg/binding_label_tests_24.f90
  5cef22ffdd6b58d13bbab02ae5e85195  gcc/testsuite/gfortran.dg/binding_label_tests_25.f90
  ec29931f9b3f84e65c0addc59ccb39bf  gcc/testsuite/gfortran.dg/binding_label_tests_26a.f90
  524014cc930fc384a29d75d9885c914f  gcc/testsuite/gfortran.dg/binding_label_tests_26b.f90
  9dfb6e19dab1724fd7bc6c7ddd36dfeb  gcc/testsuite/gfortran.dg/binding_label_tests_27.f90
  3da0c43e404ea44650ab9a963fa41bee  gcc/testsuite/gfortran.dg/binding_label_tests_3.f03
! 3013bc9de3bacac5bf462e52231abf50  gcc/testsuite/gfortran.dg/binding_label_tests_4.f03
  27695dee78547e7050f28a42fe933cf4  gcc/testsuite/gfortran.dg/binding_label_tests_5.f03
! 430fa43d0c3ae8503b805e49e562838a  gcc/testsuite/gfortran.dg/binding_label_tests_6.f03
! 9dc7bce53fad04715f34e84131039294  gcc/testsuite/gfortran.dg/binding_label_tests_7.f03
! dea1cb60c6d773d72f9b8b8c8d90cce3  gcc/testsuite/gfortran.dg/binding_label_tests_8.f03
  27287860f62493c0bced36b54fd65cee  gcc/testsuite/gfortran.dg/binding_label_tests_9.f03
! ab4a9f5d0daf8ea269db422cfed7f8f1  gcc/testsuite/gfortran.dg/bit_comparison_1.F90
! 5b17cb9bc3772630e87b26675951b730  gcc/testsuite/gfortran.dg/bit_comparison_2.F90
! 114d383322b8eef014cbde7ca48cce15  gcc/testsuite/gfortran.dg/block_1.f08
  922ce3d61b02084ff2b09d1bc3cf2d0b  gcc/testsuite/gfortran.dg/block_10.f90
  95057d2fd3f24d177bf5d5af0d6f9432  gcc/testsuite/gfortran.dg/block_11.f90
  f51770c9e128c7de21f5a23197bdf0c7  gcc/testsuite/gfortran.dg/block_12.f90
! 8cbc4935010ccd8170d2118767dddc13  gcc/testsuite/gfortran.dg/block_13.f08
! aacd6d9a419ee34948d1630a828e4bc6  gcc/testsuite/gfortran.dg/block_14.f90
  90449ea3743d628deeed9105efb3d065  gcc/testsuite/gfortran.dg/block_15.f08
! 4a383b067120231d05db10f9d86c7cc5  gcc/testsuite/gfortran.dg/block_2.f08
  c20765c7d7a394e2f5b7ef52556e7d8a  gcc/testsuite/gfortran.dg/block_3.f90
  9aedc90117c617edc5005f1325a84322  gcc/testsuite/gfortran.dg/block_4.f08
  5826a28855d2689ca0b6a96e416b00a7  gcc/testsuite/gfortran.dg/block_5.f08
! 8e2914920c2adfe768804baecf334be9  gcc/testsuite/gfortran.dg/block_6.f08
! 0857fdf78c4e17184ba1ff109aac40b2  gcc/testsuite/gfortran.dg/block_7.f08
! bc41ab08474094af032c03c30c2f8b45  gcc/testsuite/gfortran.dg/block_8.f08
  d6fbab5adc927361e8f7c4b8f3e420d5  gcc/testsuite/gfortran.dg/block_9.f08
  bd6eb17303abbc4e9007d3120de885aa  gcc/testsuite/gfortran.dg/block_end_error_1.f90
  467e3192431dc9f382e940356a5e9e31  gcc/testsuite/gfortran.dg/block_name_1.f90
  af3c12f2a878273c530d8127f9dea7fb  gcc/testsuite/gfortran.dg/block_name_2.f90
! ad949a7d41c107c01e619cb4276aa8e5  gcc/testsuite/gfortran.dg/blockdata_1.f90
  d7ced503ea09a16752521a1f4b1fddc8  gcc/testsuite/gfortran.dg/blockdata_2.f90
  8f473f427228b27b02d4863c73894c8b  gcc/testsuite/gfortran.dg/blockdata_3.f90
  e8876e93b76b208250265dc7c4145e96  gcc/testsuite/gfortran.dg/blockdata_4.f90
--- 52464,52505 ----
  18fe9a238ae718da3925496277094183  gcc/testsuite/gfortran.dg/binding_label_tests_20.f90
  f72ecac7fbcaaf2324089933afd1cb6a  gcc/testsuite/gfortran.dg/binding_label_tests_21.f90
  09d3da234a8db85d0e4b41b8d2503f9e  gcc/testsuite/gfortran.dg/binding_label_tests_22.f90
! 7144a90f04af4d6a1a7e075e45988352  gcc/testsuite/gfortran.dg/binding_label_tests_23.f90
  ea7e9688dec298fa61eef31972b6c8cd  gcc/testsuite/gfortran.dg/binding_label_tests_24.f90
  5cef22ffdd6b58d13bbab02ae5e85195  gcc/testsuite/gfortran.dg/binding_label_tests_25.f90
  ec29931f9b3f84e65c0addc59ccb39bf  gcc/testsuite/gfortran.dg/binding_label_tests_26a.f90
  524014cc930fc384a29d75d9885c914f  gcc/testsuite/gfortran.dg/binding_label_tests_26b.f90
  9dfb6e19dab1724fd7bc6c7ddd36dfeb  gcc/testsuite/gfortran.dg/binding_label_tests_27.f90
+ 0cc03e2fd3571908f49f70d6dabaa128  gcc/testsuite/gfortran.dg/binding_label_tests_28.f90
+ fbe4a90945f5cbcde230db8b880a4d7a  gcc/testsuite/gfortran.dg/binding_label_tests_29.f90
  3da0c43e404ea44650ab9a963fa41bee  gcc/testsuite/gfortran.dg/binding_label_tests_3.f03
! 91cd6ad63a324b639449d9463b1a1e66  gcc/testsuite/gfortran.dg/binding_label_tests_4.f03
  27695dee78547e7050f28a42fe933cf4  gcc/testsuite/gfortran.dg/binding_label_tests_5.f03
! 07f203142fb7f0e2e9ab4fdd1b57c16f  gcc/testsuite/gfortran.dg/binding_label_tests_6.f03
! 92c3aa6793310e0fc0ef96627b7115b6  gcc/testsuite/gfortran.dg/binding_label_tests_7.f03
! 1ba5e1aa94f2e353584000ae5e1760f2  gcc/testsuite/gfortran.dg/binding_label_tests_8.f03
  27287860f62493c0bced36b54fd65cee  gcc/testsuite/gfortran.dg/binding_label_tests_9.f03
! 4dcec81a95bc80bdc09eb14c2f3d69c8  gcc/testsuite/gfortran.dg/bit_comparison_1.F90
! 5ad9801370ec52af61582b228e96e186  gcc/testsuite/gfortran.dg/bit_comparison_2.F90
! ab820ecd153dabad89c24a80b70749f3  gcc/testsuite/gfortran.dg/block_1.f08
  922ce3d61b02084ff2b09d1bc3cf2d0b  gcc/testsuite/gfortran.dg/block_10.f90
  95057d2fd3f24d177bf5d5af0d6f9432  gcc/testsuite/gfortran.dg/block_11.f90
  f51770c9e128c7de21f5a23197bdf0c7  gcc/testsuite/gfortran.dg/block_12.f90
! 3a9ac78b1a6d2e7f803df03f3ce71f72  gcc/testsuite/gfortran.dg/block_13.f08
! c91185a3ccff03eaf3228522d82e998b  gcc/testsuite/gfortran.dg/block_14.f90
  90449ea3743d628deeed9105efb3d065  gcc/testsuite/gfortran.dg/block_15.f08
! 10f179cb673e09df610043e9f3876bb2  gcc/testsuite/gfortran.dg/block_2.f08
  c20765c7d7a394e2f5b7ef52556e7d8a  gcc/testsuite/gfortran.dg/block_3.f90
  9aedc90117c617edc5005f1325a84322  gcc/testsuite/gfortran.dg/block_4.f08
  5826a28855d2689ca0b6a96e416b00a7  gcc/testsuite/gfortran.dg/block_5.f08
! 4fb51a4755c21d64590119dbf88abe51  gcc/testsuite/gfortran.dg/block_6.f08
! 8d3e16c367e706d4f2c75d63f786b01c  gcc/testsuite/gfortran.dg/block_7.f08
! 73539c7a04a550c234266dd2d4f75ac9  gcc/testsuite/gfortran.dg/block_8.f08
  d6fbab5adc927361e8f7c4b8f3e420d5  gcc/testsuite/gfortran.dg/block_9.f08
  bd6eb17303abbc4e9007d3120de885aa  gcc/testsuite/gfortran.dg/block_end_error_1.f90
  467e3192431dc9f382e940356a5e9e31  gcc/testsuite/gfortran.dg/block_name_1.f90
  af3c12f2a878273c530d8127f9dea7fb  gcc/testsuite/gfortran.dg/block_name_2.f90
! d9e1d07ea9cf0a2f95002225bdeea245  gcc/testsuite/gfortran.dg/blockdata_1.f90
  d7ced503ea09a16752521a1f4b1fddc8  gcc/testsuite/gfortran.dg/blockdata_2.f90
  8f473f427228b27b02d4863c73894c8b  gcc/testsuite/gfortran.dg/blockdata_3.f90
  e8876e93b76b208250265dc7c4145e96  gcc/testsuite/gfortran.dg/blockdata_4.f90
*************** a5a99907b8c623279a0b0d0db3958026  gcc/te
*** 49020,49058 ****
  95c395ac08b13f94c7daf05c4d66ccad  gcc/testsuite/gfortran.dg/bom_error.f90
  8e06e8745650074e8cb2b65d5aab44a6  gcc/testsuite/gfortran.dg/bom_include.f90
  761d9eb1b46c67f846b7ea81652f2c9f  gcc/testsuite/gfortran.dg/bom_include.inc
! e1e6e91037e7eac695683515f951782c  gcc/testsuite/gfortran.dg/bound_1.f90
! fdf82762b4c6cd9369a13e652b002c07  gcc/testsuite/gfortran.dg/bound_2.f90
! e5dd5caa0d377abb13c206fa1e6588fc  gcc/testsuite/gfortran.dg/bound_3.f90
! 164db3505f650edd6fbdcb7ea0e7cfc8  gcc/testsuite/gfortran.dg/bound_4.f90
! 495917d801603f5f9fa62b339095e0f0  gcc/testsuite/gfortran.dg/bound_5.f90
! eb4f0a26ced1fad3038c3b6420b0628a  gcc/testsuite/gfortran.dg/bound_6.f90
! a97bf3a1e8be737aecd0bf42b4028dc7  gcc/testsuite/gfortran.dg/bound_7.f90
! ba81c56f4ae046764e9b2817436e7a3f  gcc/testsuite/gfortran.dg/bound_8.f90
! c11c3e70b80fd634798147d1dfc7baac  gcc/testsuite/gfortran.dg/bound_9.f90
! e0fe6ad94e65bffec1944b000f4adfe7  gcc/testsuite/gfortran.dg/bound_simplification_1.f90
  8b8b75dedb610d7b3ddcb48b2cce5c86  gcc/testsuite/gfortran.dg/bound_simplification_2.f90
! 8dccbf7b7cc6b348e36af88196c5fa19  gcc/testsuite/gfortran.dg/bound_simplification_3.f90
! 0afcbd33c72980e506011f6ffbe630f4  gcc/testsuite/gfortran.dg/bound_simplification_4.f90
! 4b72dc54ab65f54b6a9a1015d09f06ea  gcc/testsuite/gfortran.dg/bound_simplification_5.f90
! 5f1b804f39c06e308c6f377c76987236  gcc/testsuite/gfortran.dg/bound_simplification_6.f90
! 566a28d1eaa499d210caf795db3e6f58  gcc/testsuite/gfortran.dg/bounds_check_1.f90
  224affc6eb571605f5b1d1c7af58536c  gcc/testsuite/gfortran.dg/bounds_check_10.f90
  cded3f5f45f16c3f0117b2deb934a3be  gcc/testsuite/gfortran.dg/bounds_check_11.f90
! 8401a3b6e2b52bcb70ab1fb601b00f0d  gcc/testsuite/gfortran.dg/bounds_check_12.f90
  6c9bebc4de66a09395065b15142c00dc  gcc/testsuite/gfortran.dg/bounds_check_13.f
! c5ed1cf2ac6ae4e23d635046d9f264bc  gcc/testsuite/gfortran.dg/bounds_check_14.f90
! b1da43cac61fda6e983110b863ca3ca9  gcc/testsuite/gfortran.dg/bounds_check_15.f90
  d35ce9760f77bd2d4bbbbd6554852080  gcc/testsuite/gfortran.dg/bounds_check_16.f90
  a0645f58d7ace0f67d18f1c73fdfe406  gcc/testsuite/gfortran.dg/bounds_check_17.f90
  0b4eefd6027e96ad691dd0deaa010ca4  gcc/testsuite/gfortran.dg/bounds_check_18.f90
  b890668874e1bc07a00cd706581c6fd1  gcc/testsuite/gfortran.dg/bounds_check_2.f
  1ff91e96da26ef6e7839e53e2b71499d  gcc/testsuite/gfortran.dg/bounds_check_3.f90
  a9119407c225c716d99c309178d77952  gcc/testsuite/gfortran.dg/bounds_check_4.f90
  167a95fa41d2abf20f66591e1389d059  gcc/testsuite/gfortran.dg/bounds_check_5.f90
  5b9fcdc4b879de530c80831db98dc3d6  gcc/testsuite/gfortran.dg/bounds_check_6.f90
  585c37a485922befd092c7c6bc8a5277  gcc/testsuite/gfortran.dg/bounds_check_7.f90
! c0ef1b5ac00b1fb3665673a6d562b95f  gcc/testsuite/gfortran.dg/bounds_check_8.f90
! 0ea0a04f07cfbeaa2220c53a5eaf3f03  gcc/testsuite/gfortran.dg/bounds_check_9.f90
  f37d3c37ad79e69f79a41a29ac20430e  gcc/testsuite/gfortran.dg/bounds_check_array_ctor_1.f90
  b2f85812e45cfcb393cc6903c070eff8  gcc/testsuite/gfortran.dg/bounds_check_array_ctor_2.f90
  a556af75edec3ac1999331e11088e5cb  gcc/testsuite/gfortran.dg/bounds_check_array_ctor_3.f90
--- 52517,52556 ----
  95c395ac08b13f94c7daf05c4d66ccad  gcc/testsuite/gfortran.dg/bom_error.f90
  8e06e8745650074e8cb2b65d5aab44a6  gcc/testsuite/gfortran.dg/bom_include.f90
  761d9eb1b46c67f846b7ea81652f2c9f  gcc/testsuite/gfortran.dg/bom_include.inc
! f5b6a54df6c2ecc49508d0a9f2caeee7  gcc/testsuite/gfortran.dg/bound_1.f90
! 45001a1060a15e2bd6fb6fff362ce54c  gcc/testsuite/gfortran.dg/bound_2.f90
! 4aea0814f3a1d876259efcc366c8a278  gcc/testsuite/gfortran.dg/bound_3.f90
! 1f06cd6c63ba29e93e14f7eb5bf15cd0  gcc/testsuite/gfortran.dg/bound_4.f90
! a2f76eca5ccc5ab54f50921f58e74199  gcc/testsuite/gfortran.dg/bound_5.f90
! a10bdff349043061c24ed4617b114c28  gcc/testsuite/gfortran.dg/bound_6.f90
! f36c2ee69da3a20951ff618d8c153000  gcc/testsuite/gfortran.dg/bound_7.f90
! 79ae6408deb6de8873553a468eefd03c  gcc/testsuite/gfortran.dg/bound_8.f90
! 20b4378ec5d7f67596986f854f336780  gcc/testsuite/gfortran.dg/bound_9.f90
! c790ba1b682d5921194128ba48f39633  gcc/testsuite/gfortran.dg/bound_simplification_1.f90
  8b8b75dedb610d7b3ddcb48b2cce5c86  gcc/testsuite/gfortran.dg/bound_simplification_2.f90
! ff9c91471b4ce5ab6577afccb4c338c3  gcc/testsuite/gfortran.dg/bound_simplification_3.f90
! f163a929162b84c921c534094a61ee6d  gcc/testsuite/gfortran.dg/bound_simplification_4.f90
! 8da00332161b12f533a48f6f4b133c93  gcc/testsuite/gfortran.dg/bound_simplification_5.f90
! 89ef43a5db63dead844540416ec15fe0  gcc/testsuite/gfortran.dg/bound_simplification_6.f90
! 0c37f25c0a329b1f8023a969afa947bc  gcc/testsuite/gfortran.dg/bounds_check_1.f90
  224affc6eb571605f5b1d1c7af58536c  gcc/testsuite/gfortran.dg/bounds_check_10.f90
  cded3f5f45f16c3f0117b2deb934a3be  gcc/testsuite/gfortran.dg/bounds_check_11.f90
! c837dbfa3635dd41b5accfaadd35177e  gcc/testsuite/gfortran.dg/bounds_check_12.f90
  6c9bebc4de66a09395065b15142c00dc  gcc/testsuite/gfortran.dg/bounds_check_13.f
! b16b14e80503f70d30cbefeb30a45109  gcc/testsuite/gfortran.dg/bounds_check_14.f90
! 9c7c16884c10047b3f6f9d1f1fead983  gcc/testsuite/gfortran.dg/bounds_check_15.f90
  d35ce9760f77bd2d4bbbbd6554852080  gcc/testsuite/gfortran.dg/bounds_check_16.f90
  a0645f58d7ace0f67d18f1c73fdfe406  gcc/testsuite/gfortran.dg/bounds_check_17.f90
  0b4eefd6027e96ad691dd0deaa010ca4  gcc/testsuite/gfortran.dg/bounds_check_18.f90
+ f77d86492e84d13e004ea59f1da3d69d  gcc/testsuite/gfortran.dg/bounds_check_19.f90
  b890668874e1bc07a00cd706581c6fd1  gcc/testsuite/gfortran.dg/bounds_check_2.f
  1ff91e96da26ef6e7839e53e2b71499d  gcc/testsuite/gfortran.dg/bounds_check_3.f90
  a9119407c225c716d99c309178d77952  gcc/testsuite/gfortran.dg/bounds_check_4.f90
  167a95fa41d2abf20f66591e1389d059  gcc/testsuite/gfortran.dg/bounds_check_5.f90
  5b9fcdc4b879de530c80831db98dc3d6  gcc/testsuite/gfortran.dg/bounds_check_6.f90
  585c37a485922befd092c7c6bc8a5277  gcc/testsuite/gfortran.dg/bounds_check_7.f90
! 28287b66d534923ec4b13ea3327183e6  gcc/testsuite/gfortran.dg/bounds_check_8.f90
! eaa430295b59349341b0d0a4177c4b93  gcc/testsuite/gfortran.dg/bounds_check_9.f90
  f37d3c37ad79e69f79a41a29ac20430e  gcc/testsuite/gfortran.dg/bounds_check_array_ctor_1.f90
  b2f85812e45cfcb393cc6903c070eff8  gcc/testsuite/gfortran.dg/bounds_check_array_ctor_2.f90
  a556af75edec3ac1999331e11088e5cb  gcc/testsuite/gfortran.dg/bounds_check_array_ctor_3.f90
*************** da7a2177083dc9e263b344147ecc140c  gcc/te
*** 49062,49070 ****
  e24c326967c71085d330235fe698c50f  gcc/testsuite/gfortran.dg/bounds_check_array_ctor_7.f90
  e06600cf8f1de183da16e99ce1747e70  gcc/testsuite/gfortran.dg/bounds_check_array_ctor_8.f90
  2bcc28a5973212f9bcec16dc090e6973  gcc/testsuite/gfortran.dg/bounds_check_fail_1.f90
! 8abc7dbb5332f9203dd65ef4ec667267  gcc/testsuite/gfortran.dg/bounds_check_fail_2.f90
! 283d675eb1076656e705ce94dd65baa2  gcc/testsuite/gfortran.dg/bounds_check_fail_3.f90
! e2fa324bd643dad4595427c0cf6e27fd  gcc/testsuite/gfortran.dg/bounds_check_fail_4.f90
  47cd7c4192bcfdf1b9792fc175c39955  gcc/testsuite/gfortran.dg/bounds_check_strlen_1.f90
  f33baaa73ebbc0a23938401a171f0b68  gcc/testsuite/gfortran.dg/bounds_check_strlen_2.f90
  f145202f2e2e4fd5f13808086de4de58  gcc/testsuite/gfortran.dg/bounds_check_strlen_3.f90
--- 52560,52568 ----
  e24c326967c71085d330235fe698c50f  gcc/testsuite/gfortran.dg/bounds_check_array_ctor_7.f90
  e06600cf8f1de183da16e99ce1747e70  gcc/testsuite/gfortran.dg/bounds_check_array_ctor_8.f90
  2bcc28a5973212f9bcec16dc090e6973  gcc/testsuite/gfortran.dg/bounds_check_fail_1.f90
! 3eb71e71d36f8988db1e8934d157ec58  gcc/testsuite/gfortran.dg/bounds_check_fail_2.f90
! b94e6520bb4d9fc5a33c40c5e524d9c6  gcc/testsuite/gfortran.dg/bounds_check_fail_3.f90
! 2caea0d3fcb22f340b61190a4263ca51  gcc/testsuite/gfortran.dg/bounds_check_fail_4.f90
  47cd7c4192bcfdf1b9792fc175c39955  gcc/testsuite/gfortran.dg/bounds_check_strlen_1.f90
  f33baaa73ebbc0a23938401a171f0b68  gcc/testsuite/gfortran.dg/bounds_check_strlen_2.f90
  f145202f2e2e4fd5f13808086de4de58  gcc/testsuite/gfortran.dg/bounds_check_strlen_3.f90
*************** f145202f2e2e4fd5f13808086de4de58  gcc/te
*** 49075,49127 ****
  c30e78fbf3112b007eba97e774e774dc  gcc/testsuite/gfortran.dg/bounds_check_strlen_8.f90
  34236eab75fb8d629eaf4c8cc9b07287  gcc/testsuite/gfortran.dg/bounds_check_strlen_9.f90
  48a0a6419e6dd7d01cfee97271120f06  gcc/testsuite/gfortran.dg/bounds_temporaries_1.f90
! 384651a1a39351e4ad3e12164140f2d3  gcc/testsuite/gfortran.dg/boz_1.f90
  8339a9514746340637f9b7a33fc41264  gcc/testsuite/gfortran.dg/boz_10.f90
! 17b98bad25040ffd1f98ec8e044f2e8f  gcc/testsuite/gfortran.dg/boz_11.f90
  4cf8c87e409407d6fa4a6074d3ca9688  gcc/testsuite/gfortran.dg/boz_12.f90
! 1beb510547fa7b15d2238ec1062e6711  gcc/testsuite/gfortran.dg/boz_13.f90
! e0e909fa8a8c096ee83999e1d9d5fdad  gcc/testsuite/gfortran.dg/boz_14.f90
! a5e1e3fe7c5fb85da6e3213d0ded7ec8  gcc/testsuite/gfortran.dg/boz_15.f90
! 5d5194f597bfe0b4f5f596cd43dbd05b  gcc/testsuite/gfortran.dg/boz_3.f90
  b87d9e6c413d4f8ab0b74203734a7315  gcc/testsuite/gfortran.dg/boz_4.f90
  50b8ea121016f94e2c0c93e00eb07d33  gcc/testsuite/gfortran.dg/boz_5.f90
! f4eda2a91b3f1d79985435e1a8052ace  gcc/testsuite/gfortran.dg/boz_6.f90
  77ce60d1b670936c7255436c32b6e175  gcc/testsuite/gfortran.dg/boz_7.f90
  e5054b6498692a21bb3137280b1d78b8  gcc/testsuite/gfortran.dg/boz_8.f90
! d24202e03865bc6c7b065012f5b50aa9  gcc/testsuite/gfortran.dg/boz_9.f90
  22e53935cf175dd2fbe59b4440950526  gcc/testsuite/gfortran.dg/btest_1.f90
! dbab7052c49d479a8d2e25e0b571b1d8  gcc/testsuite/gfortran.dg/byte_1.f90
! d04db9714722a890fe3f299c043d6607  gcc/testsuite/gfortran.dg/byte_2.f90
! 4f9563018c9cc84eb08854d1cad6dbdb  gcc/testsuite/gfortran.dg/c_assoc.f90
! c8cfe1aa8aa45b48e7c2b8f8ee8f2b70  gcc/testsuite/gfortran.dg/c_assoc_2.f03
! 2b97f1cb4868fd97cb12455cd6c2a56e  gcc/testsuite/gfortran.dg/c_assoc_3.f90
  02f524bf53c504b18b887bbe53c78952  gcc/testsuite/gfortran.dg/c_assoc_4.f90
  85765b6794108949ee955541b1efb540  gcc/testsuite/gfortran.dg/c_assoc_5.f90
  1e7649b256bbeeebbd2063422e65deb7  gcc/testsuite/gfortran.dg/c_by_val.c
! a7dfa88a3db218310d3d606d8f2632fc  gcc/testsuite/gfortran.dg/c_by_val_1.f
  2e01e4009d12269c05b8f480e81cd06d  gcc/testsuite/gfortran.dg/c_by_val_2.f90
  813d55579374e020bb56ba96bcaca976  gcc/testsuite/gfortran.dg/c_by_val_3.f90
  c976bb6d4dfaa0c0883ce8e498e42afc  gcc/testsuite/gfortran.dg/c_by_val_4.f
! 0397601fe64815b40428ebd400ef9e82  gcc/testsuite/gfortran.dg/c_by_val_5.f90
  e1bd0cbb4fd7e7d2bdf8b6e16bec09d4  gcc/testsuite/gfortran.dg/c_char_driver.c
! 73ab8645cb712ac75a8c4d4996b1d9a2  gcc/testsuite/gfortran.dg/c_char_tests.f03
! 0dacafcd08797b7139c4609401df707e  gcc/testsuite/gfortran.dg/c_char_tests_2.f03
! daabdf97ca553d025f2b0ecdd1474f69  gcc/testsuite/gfortran.dg/c_f_pointer_complex.f03
  f1171b22010cb5ffdc5f3d7a3370bdcf  gcc/testsuite/gfortran.dg/c_f_pointer_complex_driver.c
! 07b2b61e430e1db9360c24e376f47330  gcc/testsuite/gfortran.dg/c_f_pointer_logical.f03
  714b95efbc27be7c9d3a1476268dd317  gcc/testsuite/gfortran.dg/c_f_pointer_logical_driver.c
! c0c54c4f8cf8ce74d46fb963339c1f29  gcc/testsuite/gfortran.dg/c_f_pointer_shape_test.f90
! 3a212b080c4f52cb8a32cf1d55ddda8d  gcc/testsuite/gfortran.dg/c_f_pointer_shape_tests_2.f03
  0137a0eb0d17c670894c279c5bdc08dd  gcc/testsuite/gfortran.dg/c_f_pointer_shape_tests_2_driver.c
  79ad65a07c5fba41141d69b8eb8101eb  gcc/testsuite/gfortran.dg/c_f_pointer_shape_tests_3.f03
! 2b369c863b3bc99fdea62a51d39b2f77  gcc/testsuite/gfortran.dg/c_f_pointer_shape_tests_4.f03
  0137a0eb0d17c670894c279c5bdc08dd  gcc/testsuite/gfortran.dg/c_f_pointer_shape_tests_4_driver.c
! 186fda7a4015d5a4ea1afb70bea895e7  gcc/testsuite/gfortran.dg/c_f_pointer_shape_tests_5.f90
  e63e1cb2a2a983de3e177c8704129d32  gcc/testsuite/gfortran.dg/c_f_pointer_shape_tests_6.f90
! c2c17242536d4da570a377b53cd9fadb  gcc/testsuite/gfortran.dg/c_f_pointer_tests.f90
  bcf9cbe8f6dcade38e751db85acbf9b4  gcc/testsuite/gfortran.dg/c_f_pointer_tests_2.f03
  3fe88d45ed4469bd39dc91bac863922d  gcc/testsuite/gfortran.dg/c_f_pointer_tests_3.f90
! f8ef64739fd44ab4b2b84a7c0ba4bcbe  gcc/testsuite/gfortran.dg/c_f_pointer_tests_4.f90
  c346b2fefbaf50e43e1029f18ab9a9ef  gcc/testsuite/gfortran.dg/c_f_pointer_tests_5.f90
  36631952429ffa51dc94ebb3a36267a0  gcc/testsuite/gfortran.dg/c_f_pointer_tests_6.f90
  0b80eb392f4e3e83bc15612cb9208b4d  gcc/testsuite/gfortran.dg/c_f_pointer_tests_7.f90
--- 52573,52625 ----
  c30e78fbf3112b007eba97e774e774dc  gcc/testsuite/gfortran.dg/bounds_check_strlen_8.f90
  34236eab75fb8d629eaf4c8cc9b07287  gcc/testsuite/gfortran.dg/bounds_check_strlen_9.f90
  48a0a6419e6dd7d01cfee97271120f06  gcc/testsuite/gfortran.dg/bounds_temporaries_1.f90
! 65a63794bd52ddc74e28a23f8fe3dc72  gcc/testsuite/gfortran.dg/boz_1.f90
  8339a9514746340637f9b7a33fc41264  gcc/testsuite/gfortran.dg/boz_10.f90
! 5c2f7c8ffe9e682d4c0712a7d13259db  gcc/testsuite/gfortran.dg/boz_11.f90
  4cf8c87e409407d6fa4a6074d3ca9688  gcc/testsuite/gfortran.dg/boz_12.f90
! 9593db5530224ea15be6eba996eab875  gcc/testsuite/gfortran.dg/boz_13.f90
! cac8b420fc56c8b0b597965bd2f61680  gcc/testsuite/gfortran.dg/boz_14.f90
! 7bc216647522ab98ae9e00f393ae8945  gcc/testsuite/gfortran.dg/boz_15.f90
! 0e8b4f3aa9231f627d082e8ede5af454  gcc/testsuite/gfortran.dg/boz_3.f90
  b87d9e6c413d4f8ab0b74203734a7315  gcc/testsuite/gfortran.dg/boz_4.f90
  50b8ea121016f94e2c0c93e00eb07d33  gcc/testsuite/gfortran.dg/boz_5.f90
! 419ae3530d42286f3ba1c7264dfd7ad8  gcc/testsuite/gfortran.dg/boz_6.f90
  77ce60d1b670936c7255436c32b6e175  gcc/testsuite/gfortran.dg/boz_7.f90
  e5054b6498692a21bb3137280b1d78b8  gcc/testsuite/gfortran.dg/boz_8.f90
! 68996d5e1c89e42114e47bd5ab8ba1b9  gcc/testsuite/gfortran.dg/boz_9.f90
  22e53935cf175dd2fbe59b4440950526  gcc/testsuite/gfortran.dg/btest_1.f90
! 11f657071ec097a22514856fdd7ffa62  gcc/testsuite/gfortran.dg/byte_1.f90
! 8de8ecc2393f168ffb4dd12bfc65a498  gcc/testsuite/gfortran.dg/byte_2.f90
! 1b401bdae1b8b765397b10aa78d39feb  gcc/testsuite/gfortran.dg/c_assoc.f90
! 836175653a8d0cef54e1b053f6226dfa  gcc/testsuite/gfortran.dg/c_assoc_2.f03
! 0c01f4864b877d36b3d6e539f521f58b  gcc/testsuite/gfortran.dg/c_assoc_3.f90
  02f524bf53c504b18b887bbe53c78952  gcc/testsuite/gfortran.dg/c_assoc_4.f90
  85765b6794108949ee955541b1efb540  gcc/testsuite/gfortran.dg/c_assoc_5.f90
  1e7649b256bbeeebbd2063422e65deb7  gcc/testsuite/gfortran.dg/c_by_val.c
! 98c66ad7dd05e6247dc46f829750600d  gcc/testsuite/gfortran.dg/c_by_val_1.f
  2e01e4009d12269c05b8f480e81cd06d  gcc/testsuite/gfortran.dg/c_by_val_2.f90
  813d55579374e020bb56ba96bcaca976  gcc/testsuite/gfortran.dg/c_by_val_3.f90
  c976bb6d4dfaa0c0883ce8e498e42afc  gcc/testsuite/gfortran.dg/c_by_val_4.f
! c5ff5c10906478ae973c32c49eafcc63  gcc/testsuite/gfortran.dg/c_by_val_5.f90
  e1bd0cbb4fd7e7d2bdf8b6e16bec09d4  gcc/testsuite/gfortran.dg/c_char_driver.c
! bacc3e482af5248b7f44b5ea0c8d320b  gcc/testsuite/gfortran.dg/c_char_tests.f03
! d8bc762babe74d57d0fb247c2e5852c6  gcc/testsuite/gfortran.dg/c_char_tests_2.f03
! 9d232d8c034e13b77a9fae602ea40c00  gcc/testsuite/gfortran.dg/c_f_pointer_complex.f03
  f1171b22010cb5ffdc5f3d7a3370bdcf  gcc/testsuite/gfortran.dg/c_f_pointer_complex_driver.c
! 29c532057814482ac15d86376b90909b  gcc/testsuite/gfortran.dg/c_f_pointer_logical.f03
  714b95efbc27be7c9d3a1476268dd317  gcc/testsuite/gfortran.dg/c_f_pointer_logical_driver.c
! 3f1850aff3d8555d7f9a5c35024e4640  gcc/testsuite/gfortran.dg/c_f_pointer_shape_test.f90
! 315077a613b8102e36f21e22539cc788  gcc/testsuite/gfortran.dg/c_f_pointer_shape_tests_2.f03
  0137a0eb0d17c670894c279c5bdc08dd  gcc/testsuite/gfortran.dg/c_f_pointer_shape_tests_2_driver.c
  79ad65a07c5fba41141d69b8eb8101eb  gcc/testsuite/gfortran.dg/c_f_pointer_shape_tests_3.f03
! 7157afa87951c0b05ed794a1539bfd38  gcc/testsuite/gfortran.dg/c_f_pointer_shape_tests_4.f03
  0137a0eb0d17c670894c279c5bdc08dd  gcc/testsuite/gfortran.dg/c_f_pointer_shape_tests_4_driver.c
! 6292043fad207297ab75ed0d1f1422be  gcc/testsuite/gfortran.dg/c_f_pointer_shape_tests_5.f90
  e63e1cb2a2a983de3e177c8704129d32  gcc/testsuite/gfortran.dg/c_f_pointer_shape_tests_6.f90
! 0aa6e86dc29b145c26a1e0c9347d3b44  gcc/testsuite/gfortran.dg/c_f_pointer_tests.f90
  bcf9cbe8f6dcade38e751db85acbf9b4  gcc/testsuite/gfortran.dg/c_f_pointer_tests_2.f03
  3fe88d45ed4469bd39dc91bac863922d  gcc/testsuite/gfortran.dg/c_f_pointer_tests_3.f90
! e981ae3c610dd9839cfb023166f7eff9  gcc/testsuite/gfortran.dg/c_f_pointer_tests_4.f90
  c346b2fefbaf50e43e1029f18ab9a9ef  gcc/testsuite/gfortran.dg/c_f_pointer_tests_5.f90
  36631952429ffa51dc94ebb3a36267a0  gcc/testsuite/gfortran.dg/c_f_pointer_tests_6.f90
  0b80eb392f4e3e83bc15612cb9208b4d  gcc/testsuite/gfortran.dg/c_f_pointer_tests_7.f90
*************** c346b2fefbaf50e43e1029f18ab9a9ef  gcc/te
*** 49129,49135 ****
  d4987bd92136fbe1dc0dbed4d878bc35  gcc/testsuite/gfortran.dg/c_f_tests_driver.c
  6225c3ed3e9774c1780dabafdb403bbb  gcc/testsuite/gfortran.dg/c_funloc_tests.f03
  e3d7c198fc7009b223f98b2e4884b462  gcc/testsuite/gfortran.dg/c_funloc_tests_2.f03
! 5a760481d200bd4ccb94dfee0f6a80aa  gcc/testsuite/gfortran.dg/c_funloc_tests_3.f03
  4e9d85f4aad841105271457e917b0066  gcc/testsuite/gfortran.dg/c_funloc_tests_3_funcs.c
  7462a4f11336164c2d9edb7b835cd7df  gcc/testsuite/gfortran.dg/c_funloc_tests_4.f03
  369aef7f75f5b20a85f41e161e1ffb04  gcc/testsuite/gfortran.dg/c_funloc_tests_4_driver.c
--- 52627,52633 ----
  d4987bd92136fbe1dc0dbed4d878bc35  gcc/testsuite/gfortran.dg/c_f_tests_driver.c
  6225c3ed3e9774c1780dabafdb403bbb  gcc/testsuite/gfortran.dg/c_funloc_tests.f03
  e3d7c198fc7009b223f98b2e4884b462  gcc/testsuite/gfortran.dg/c_funloc_tests_2.f03
! 98e3aa16d995b23cb7838243c47d7edf  gcc/testsuite/gfortran.dg/c_funloc_tests_3.f03
  4e9d85f4aad841105271457e917b0066  gcc/testsuite/gfortran.dg/c_funloc_tests_3_funcs.c
  7462a4f11336164c2d9edb7b835cd7df  gcc/testsuite/gfortran.dg/c_funloc_tests_4.f03
  369aef7f75f5b20a85f41e161e1ffb04  gcc/testsuite/gfortran.dg/c_funloc_tests_4_driver.c
*************** cd3aad9da106691903e91c9c088f78a8  gcc/te
*** 49138,49155 ****
  50f4b315c9bd0e25bc32f9dd348dd475  gcc/testsuite/gfortran.dg/c_funloc_tests_7.f90
  59490e9c85587d64c753922197bc3806  gcc/testsuite/gfortran.dg/c_funloc_tests_8.f90
  4b6d52265411683cdb8530282a8dff39  gcc/testsuite/gfortran.dg/c_kind_int128_test1.f03
! 0733118e389e1606ac84d84f59389db8  gcc/testsuite/gfortran.dg/c_kind_int128_test2.f03
! a4cc3575cb70912e0c1e8f6d5f3ba75a  gcc/testsuite/gfortran.dg/c_kind_params.f90
  355f498c55b13831ca171779f95e36fb  gcc/testsuite/gfortran.dg/c_kind_tests_2.f03
  8ea4e4814e885262209c30dc520746e6  gcc/testsuite/gfortran.dg/c_kind_tests_3.f03
  a5428fe640510977b939e14f94c2c823  gcc/testsuite/gfortran.dg/c_kinds.c
  1c120da458e563fecf6a1aa0390655bd  gcc/testsuite/gfortran.dg/c_loc_driver.c
  1e9f49d0b8f9cdb2f02c46e29526a2bb  gcc/testsuite/gfortran.dg/c_loc_pure_1.f90
! 8ea00fe12cdbf059a3a863f43b717c51  gcc/testsuite/gfortran.dg/c_loc_test.f90
  dcbb272bfb83c583f753cae164df356b  gcc/testsuite/gfortran.dg/c_loc_test_17.f90
  bb310597e71d8648c4c14b69f7d31131  gcc/testsuite/gfortran.dg/c_loc_test_18.f90
  ffa5f5d7a334ba55226b8772a20e8323  gcc/testsuite/gfortran.dg/c_loc_test_19.f90
! 8e35d5e975eeecd76eb64d4acab34df4  gcc/testsuite/gfortran.dg/c_loc_test_20.f90
  5fae9540f12ce154ae745a63dba06487  gcc/testsuite/gfortran.dg/c_loc_test_21.f90
  fa80d108ce3491727107bcb543344b8d  gcc/testsuite/gfortran.dg/c_loc_test_22.f90
  e445fb633b48b36bea498fca43cce336  gcc/testsuite/gfortran.dg/c_loc_tests_10.f03
--- 52636,52653 ----
  50f4b315c9bd0e25bc32f9dd348dd475  gcc/testsuite/gfortran.dg/c_funloc_tests_7.f90
  59490e9c85587d64c753922197bc3806  gcc/testsuite/gfortran.dg/c_funloc_tests_8.f90
  4b6d52265411683cdb8530282a8dff39  gcc/testsuite/gfortran.dg/c_kind_int128_test1.f03
! 658d011c4cc8c45ac45ada7fff90dbaf  gcc/testsuite/gfortran.dg/c_kind_int128_test2.f03
! 421bf50a9ce00c5599261c08ccf5152d  gcc/testsuite/gfortran.dg/c_kind_params.f90
  355f498c55b13831ca171779f95e36fb  gcc/testsuite/gfortran.dg/c_kind_tests_2.f03
  8ea4e4814e885262209c30dc520746e6  gcc/testsuite/gfortran.dg/c_kind_tests_3.f03
  a5428fe640510977b939e14f94c2c823  gcc/testsuite/gfortran.dg/c_kinds.c
  1c120da458e563fecf6a1aa0390655bd  gcc/testsuite/gfortran.dg/c_loc_driver.c
  1e9f49d0b8f9cdb2f02c46e29526a2bb  gcc/testsuite/gfortran.dg/c_loc_pure_1.f90
! c02f41ce2eee81667ad0cf8d39947545  gcc/testsuite/gfortran.dg/c_loc_test.f90
  dcbb272bfb83c583f753cae164df356b  gcc/testsuite/gfortran.dg/c_loc_test_17.f90
  bb310597e71d8648c4c14b69f7d31131  gcc/testsuite/gfortran.dg/c_loc_test_18.f90
  ffa5f5d7a334ba55226b8772a20e8323  gcc/testsuite/gfortran.dg/c_loc_test_19.f90
! 6de843415c284c1e56a51ee768d59f6a  gcc/testsuite/gfortran.dg/c_loc_test_20.f90
  5fae9540f12ce154ae745a63dba06487  gcc/testsuite/gfortran.dg/c_loc_test_21.f90
  fa80d108ce3491727107bcb543344b8d  gcc/testsuite/gfortran.dg/c_loc_test_22.f90
  e445fb633b48b36bea498fca43cce336  gcc/testsuite/gfortran.dg/c_loc_tests_10.f03
*************** e445fb633b48b36bea498fca43cce336  gcc/te
*** 49160,49166 ****
  8bfcda4182e4668d7545f0db6406fcfa  gcc/testsuite/gfortran.dg/c_loc_tests_15.f90
  23d996778f884e561151bf33f0b2c1a7  gcc/testsuite/gfortran.dg/c_loc_tests_16.f90
  61443915585228786b0dc25554aed735  gcc/testsuite/gfortran.dg/c_loc_tests_17.f90
! e18a5a443f621f1cc2669f44393061bb  gcc/testsuite/gfortran.dg/c_loc_tests_2.f03
  0964e6f0b156fd3c6caea4a7d18f2fc9  gcc/testsuite/gfortran.dg/c_loc_tests_2_funcs.c
  936e28bd80b175d6f1b031e74468ea10  gcc/testsuite/gfortran.dg/c_loc_tests_3.f03
  b7c1dbe440130c4b25ef24660f2d7875  gcc/testsuite/gfortran.dg/c_loc_tests_4.f03
--- 52658,52664 ----
  8bfcda4182e4668d7545f0db6406fcfa  gcc/testsuite/gfortran.dg/c_loc_tests_15.f90
  23d996778f884e561151bf33f0b2c1a7  gcc/testsuite/gfortran.dg/c_loc_tests_16.f90
  61443915585228786b0dc25554aed735  gcc/testsuite/gfortran.dg/c_loc_tests_17.f90
! 9b2fb011358f183021e375408b5f99d7  gcc/testsuite/gfortran.dg/c_loc_tests_2.f03
  0964e6f0b156fd3c6caea4a7d18f2fc9  gcc/testsuite/gfortran.dg/c_loc_tests_2_funcs.c
  936e28bd80b175d6f1b031e74468ea10  gcc/testsuite/gfortran.dg/c_loc_tests_3.f03
  b7c1dbe440130c4b25ef24660f2d7875  gcc/testsuite/gfortran.dg/c_loc_tests_4.f03
*************** c33cbd90fec311e266c488e253f588b9  gcc/te
*** 49174,49181 ****
  31a2a055da7c94fe365fefdd276823c4  gcc/testsuite/gfortran.dg/c_ptr_tests_11.f03
  ce72f8a3e4144de6f4924d35c12e7244  gcc/testsuite/gfortran.dg/c_ptr_tests_12.f03
  d1b107332fd2ca83ba6ac402e54202d6  gcc/testsuite/gfortran.dg/c_ptr_tests_13.f03
! 001704a3cc63ca773b22098ce2c85ca0  gcc/testsuite/gfortran.dg/c_ptr_tests_14.f90
! d1999f6a0eaf5632d582305034467208  gcc/testsuite/gfortran.dg/c_ptr_tests_15.f90
  ef5c9b71cfe2a7ae0c7eda3f4213cb68  gcc/testsuite/gfortran.dg/c_ptr_tests_16.f90
  ac91e127e05ae13da7cec3fc1053a789  gcc/testsuite/gfortran.dg/c_ptr_tests_17.f90
  7a873f03774fb774534f537314416225  gcc/testsuite/gfortran.dg/c_ptr_tests_18.f90
--- 52672,52679 ----
  31a2a055da7c94fe365fefdd276823c4  gcc/testsuite/gfortran.dg/c_ptr_tests_11.f03
  ce72f8a3e4144de6f4924d35c12e7244  gcc/testsuite/gfortran.dg/c_ptr_tests_12.f03
  d1b107332fd2ca83ba6ac402e54202d6  gcc/testsuite/gfortran.dg/c_ptr_tests_13.f03
! 1b3e3692430674b2cde54819e8cc23b7  gcc/testsuite/gfortran.dg/c_ptr_tests_14.f90
! 5c69660ab54dbf580dc090f8f23477b8  gcc/testsuite/gfortran.dg/c_ptr_tests_15.f90
  ef5c9b71cfe2a7ae0c7eda3f4213cb68  gcc/testsuite/gfortran.dg/c_ptr_tests_16.f90
  ac91e127e05ae13da7cec3fc1053a789  gcc/testsuite/gfortran.dg/c_ptr_tests_17.f90
  7a873f03774fb774534f537314416225  gcc/testsuite/gfortran.dg/c_ptr_tests_18.f90
*************** a18acb295fbe60dfb260cde9a97d93d7  gcc/te
*** 49187,49300 ****
  1c6c3f7db0516744fc8e78a4858a3a7b  gcc/testsuite/gfortran.dg/c_ptr_tests_9.f03
  3db7c8246d155117123c4ed63fb717be  gcc/testsuite/gfortran.dg/c_ptr_tests_driver.c
  6c39718a7a8dbcede0650e9e219b6c4a  gcc/testsuite/gfortran.dg/c_size_t_driver.c
! f5e728464d1f714659e667740cbc2831  gcc/testsuite/gfortran.dg/c_size_t_test.f03
! d4d9ac04289889791cad0e9fe88390d3  gcc/testsuite/gfortran.dg/c_sizeof_1.f90
  d55ff65ae64c08b6f8d2c09a69250e6e  gcc/testsuite/gfortran.dg/c_sizeof_2.f90
  aa59a3baf7de5feb8be06ee05faaa11a  gcc/testsuite/gfortran.dg/c_sizeof_3.f90
  184fc7c04eaf8fc894c4849895ae47ef  gcc/testsuite/gfortran.dg/c_sizeof_4.f90
! c10ea5ee46f0b76b2f3a5519ee704960  gcc/testsuite/gfortran.dg/c_sizeof_5.f90
! a307fad1a12a38746bc9f12ad0d0ce3d  gcc/testsuite/gfortran.dg/c_sizeof_6.f90
  ae61c2dcc3bff5189d5648a6564b3745  gcc/testsuite/gfortran.dg/change_symbol_attributes_1.f90
! 21921f9efcdb91d31c985a519b24958c  gcc/testsuite/gfortran.dg/char4_iunit_1.f03
! a10f4c5dbe816f7b66345b6a3d6c8612  gcc/testsuite/gfortran.dg/char4_iunit_2.f03
! 084b5d657975b08c63f7ca7860d6e91b  gcc/testsuite/gfortran.dg/char_allocation_1.f90
  2c7a478d24889d07e00d91954870afaf  gcc/testsuite/gfortran.dg/char_array_arg_1.f90
! 38a8c95894a093a6286c3f6b32697cb4  gcc/testsuite/gfortran.dg/char_array_constructor.f90
  edc4a84b76a182bbd35fc0110dd89003  gcc/testsuite/gfortran.dg/char_array_constructor_2.f90
  17ac1cd1806c8d0ef2c54707891edcb5  gcc/testsuite/gfortran.dg/char_array_constructor_3.f90
! b0cf32b122155baa6792a788326db52a  gcc/testsuite/gfortran.dg/char_array_structure_constructor.f90
! 5226285dc150095fb10e2578655abf27  gcc/testsuite/gfortran.dg/char_assign_1.f90
! 9c89ef1cca24790678c93ba1101a3b30  gcc/testsuite/gfortran.dg/char_associated_1.f90
  0231aff5c69531f3756a770658126f0e  gcc/testsuite/gfortran.dg/char_bounds_check_fail_1.f90
  67d12cf6eb0d8b2ab490ef191aa922d0  gcc/testsuite/gfortran.dg/char_cast_1.f90
! 949cc482ca82372b599264658b30087a  gcc/testsuite/gfortran.dg/char_cast_2.f90
! ea4bf17508b91b0bd1d48f095c0900a8  gcc/testsuite/gfortran.dg/char_comparison_1.f
! 74a90bfd3d7791a2a108f238098a08b1  gcc/testsuite/gfortran.dg/char_component_initializer_1.f90
! af67b96107f7aaf312daddce9d70c35c  gcc/testsuite/gfortran.dg/char_component_initializer_2.f90
  d86e3f32a70a92a26987c454587bda35  gcc/testsuite/gfortran.dg/char_component_initializer_3.f90
! 2ece262499e232c9e25d0ea13efdac6a  gcc/testsuite/gfortran.dg/char_cons_len.f90
! fb0f7da99ef3aeb43030acfce7396449  gcc/testsuite/gfortran.dg/char_conversion.f90
! 2df12c6a93046b8c4d62b805a2c66a40  gcc/testsuite/gfortran.dg/char_cshift_1.f90
! 509a2dea562a88df3dbb02e71fb5b263  gcc/testsuite/gfortran.dg/char_cshift_2.f90
  2aa3f196963d256b61b5a9ad29d39ccf  gcc/testsuite/gfortran.dg/char_cshift_3.f90
  a28298c508c281d5e222f97f1e0c3bcd  gcc/testsuite/gfortran.dg/char_decl_1.f90
! 8c293d249976d537abdbfa927c1a59dc  gcc/testsuite/gfortran.dg/char_decl_2.f90
! 75c47eb93a14d5d213b3f60c8b5973ab  gcc/testsuite/gfortran.dg/char_eoshift_1.f90
! b49e8e45ad4a01e1f573af7b0b859b92  gcc/testsuite/gfortran.dg/char_eoshift_2.f90
! 70e5e3ee5ffcfa26bf246cd743fcc9b0  gcc/testsuite/gfortran.dg/char_eoshift_3.f90
! a5383ad3b0fefa0235741a43dfa16374  gcc/testsuite/gfortran.dg/char_eoshift_4.f90
! 17ec5b403772a831bb9f4ff49d70cb48  gcc/testsuite/gfortran.dg/char_eoshift_5.f90
! 961fadac760894effe0197f91f12ee01  gcc/testsuite/gfortran.dg/char_expr_1.f90
  431910773a58ff1c397e7de34ac574dd  gcc/testsuite/gfortran.dg/char_expr_2.f90
! a8f0deb24e0b52ee52e9910b4863f54c  gcc/testsuite/gfortran.dg/char_expr_3.f90
! 87359e1fd869d556f5e97df895a428c3  gcc/testsuite/gfortran.dg/char_initialiser_actual.f90
  32354abee1ac6254c489621cdad0c115  gcc/testsuite/gfortran.dg/char_length_1.f90
  08500dfe24b9bc010a5b9805b6011821  gcc/testsuite/gfortran.dg/char_length_10.f90
  fc61b2514c1873396dcafdad0395eeec  gcc/testsuite/gfortran.dg/char_length_11.f90
! 1ced92f894d6888c37ed36e6404a782a  gcc/testsuite/gfortran.dg/char_length_12.f90
  227fa07cd7e71562efcb78051ad7a082  gcc/testsuite/gfortran.dg/char_length_13.f90
! 66fed999facbc01566a78ecdb72f4023  gcc/testsuite/gfortran.dg/char_length_14.f90
! 76828eeb1ca03c395e3e0983594cb0b4  gcc/testsuite/gfortran.dg/char_length_15.f90
  93f1eac7f265cbf9f398f76c9323230e  gcc/testsuite/gfortran.dg/char_length_16.f90
! aa0e2a027878c167afc0183cea32eae7  gcc/testsuite/gfortran.dg/char_length_17.f90
  b04cbe8a3294aaa3956667efc2d42369  gcc/testsuite/gfortran.dg/char_length_18.f90
  eac4bd2510ba616cca70f5cf075e6181  gcc/testsuite/gfortran.dg/char_length_19.f90
  264562146a4e2af868e5679d5eb30c6e  gcc/testsuite/gfortran.dg/char_length_2.f90
! 202038aa826f5076c3a56b6b42dacbf5  gcc/testsuite/gfortran.dg/char_length_20.f90
! 18bbc4f784ca44ae21f41aeb52218097  gcc/testsuite/gfortran.dg/char_length_21.f90
  b2e1d2ed1aab51063eaf609837a841c8  gcc/testsuite/gfortran.dg/char_length_3.f90
  42288e3a6a5e65a93ff263a2699523f8  gcc/testsuite/gfortran.dg/char_length_4.f90
! 174fd80882a233ceb361cbfdf9373339  gcc/testsuite/gfortran.dg/char_length_5.f90
! 8b0babb312b47c5117cc4472708cdf37  gcc/testsuite/gfortran.dg/char_length_6.f90
! 1fda1c1eb773d3b83f274ef6ed63abe5  gcc/testsuite/gfortran.dg/char_length_7.f90
! eec7d28c1162d55cac49e6b1c25dfe30  gcc/testsuite/gfortran.dg/char_length_8.f90
  6b0259e1dd76d7ebabf9a518e020d35d  gcc/testsuite/gfortran.dg/char_length_9.f90
! f570030b90e009805fc32fef7360536e  gcc/testsuite/gfortran.dg/char_pack_1.f90
! 5b78075b3385a72bb848282a910bc1d8  gcc/testsuite/gfortran.dg/char_pack_2.f90
! 793d8999df700dc49b298e9984b9ed5b  gcc/testsuite/gfortran.dg/char_pointer_assign.f90
  f644d887f39031b5af20b0a57a7894c4  gcc/testsuite/gfortran.dg/char_pointer_assign_2.f90
! 65cd54d5978767949d04e9c14d864ae3  gcc/testsuite/gfortran.dg/char_pointer_assign_3.f90
  96b30f56a9de104b5d79a66d116b672a  gcc/testsuite/gfortran.dg/char_pointer_assign_4.f90
  37eb7ba9eb77543854f7607067c520c8  gcc/testsuite/gfortran.dg/char_pointer_assign_5.f90
  05bbfce165dd596cf7612b34c8952dac  gcc/testsuite/gfortran.dg/char_pointer_assign_6.f90
! d53f14813aa1509776d377b9e182bc10  gcc/testsuite/gfortran.dg/char_pointer_comp_assign.f90
! cbad417c7a356d185f91b45f0166ff31  gcc/testsuite/gfortran.dg/char_pointer_dependency.f90
! 9914fd7b97b011b99c288e9707878ff7  gcc/testsuite/gfortran.dg/char_pointer_dummy.f90
! 4a76716ceb492110a81a5ff2354816af  gcc/testsuite/gfortran.dg/char_pointer_func.f90
! 20e99cf4aeea0d603a681f08f02c73a1  gcc/testsuite/gfortran.dg/char_reshape_1.f90
! eb9b1f9becb3e2a0e65e424a29804cb6  gcc/testsuite/gfortran.dg/char_result_1.f90
  84353330a329a78551b2beb2c5ac65e3  gcc/testsuite/gfortran.dg/char_result_10.f90
  ca6bbc99fbc23476b8d70ee57510d9fb  gcc/testsuite/gfortran.dg/char_result_11.f90
! 11d29990e363a652705e27662aa0fc5d  gcc/testsuite/gfortran.dg/char_result_12.f90
! 60135372c2ced86e74240348b67f736f  gcc/testsuite/gfortran.dg/char_result_13.f90
! aa76a700f1775b4615f5bc59e6a6f86f  gcc/testsuite/gfortran.dg/char_result_14.f90
! 2c012b25be62885e19ecb346e3e0b8c0  gcc/testsuite/gfortran.dg/char_result_15.f90
  a8c885ea4e0c6bc88f0ace8c9441b54c  gcc/testsuite/gfortran.dg/char_result_16.f90
! addbd6613662098935525e2467474eb4  gcc/testsuite/gfortran.dg/char_result_2.f90
! 7aca40512679e7e9da0693bc91c40364  gcc/testsuite/gfortran.dg/char_result_3.f90
! 1d3114221c526ae44bd098b162824d82  gcc/testsuite/gfortran.dg/char_result_4.f90
! f7d230606b53d7b328f30f5b3d6608dc  gcc/testsuite/gfortran.dg/char_result_5.f90
! 00cbda87a0197e80adc24929dea11307  gcc/testsuite/gfortran.dg/char_result_6.f90
! 2cc1cffa8dca181a520ddcb6d337aff1  gcc/testsuite/gfortran.dg/char_result_7.f90
! 72e3b4aefed542507d5abe9256ee067f  gcc/testsuite/gfortran.dg/char_result_8.f90
  5093ae73a32a476b807d4a5128b4ed80  gcc/testsuite/gfortran.dg/char_result_9.f90
! db8a40e5c81b6bb7faee95d2cfe924a8  gcc/testsuite/gfortran.dg/char_spread_1.f90
! 97538021b1b31ffd7b7c9f1f6dc0e49f  gcc/testsuite/gfortran.dg/char_transpose_1.f90
! 282e86050baa24c488dcf2d912a3b1ac  gcc/testsuite/gfortran.dg/char_type_len.f90
  646339b27ede96c3259e492e2bf3b264  gcc/testsuite/gfortran.dg/char_type_len_2.f90
! d1940306fe5a3d3fd7c9cc49a49912c1  gcc/testsuite/gfortran.dg/char_unpack_1.f90
! f49d34a82c898cf3391989ab79571b0d  gcc/testsuite/gfortran.dg/char_unpack_2.f90
! e59c30db5dbb50b114df0bc591ff9e84  gcc/testsuite/gfortran.dg/character_array_constructor_1.f90
  5fbba08e564330b3afdb07324b333a7d  gcc/testsuite/gfortran.dg/character_assign_1.f90
! 26cdfbb8dcb93922804d0453aedf4249  gcc/testsuite/gfortran.dg/character_comparison_1.f90
! 28a707debf250b6772da55d1dbad29ae  gcc/testsuite/gfortran.dg/character_comparison_2.f90
! 7691ce6ce9ee70e039e6a5fe077b7641  gcc/testsuite/gfortran.dg/character_comparison_3.f90
! fa72376175009c0c0cf2ae004ca08e94  gcc/testsuite/gfortran.dg/character_comparison_4.f90
! 71eedae79144c455699ddc0bedf7563f  gcc/testsuite/gfortran.dg/character_comparison_5.f90
! 12b16cbe92a48bdeceb367d01932fc6b  gcc/testsuite/gfortran.dg/character_comparison_6.f90
! 9e8572dd68ec793f5ac458df99b1711b  gcc/testsuite/gfortran.dg/character_comparison_7.f90
! 24fc542eae1b1b67ba1d77c9b8b6de20  gcc/testsuite/gfortran.dg/character_comparison_8.f90
! 3eba0ae445008d7b9f7607a346e54a1a  gcc/testsuite/gfortran.dg/character_comparison_9.f90
  50a996cd9c41e5c61f567b57a9d68a2d  gcc/testsuite/gfortran.dg/charlen_01.f90
  df26b34bc7ab97ed1f739b2ee67c8985  gcc/testsuite/gfortran.dg/charlen_02.f90
  8ed6eae1ec67baf9a6e17a1a8bf88aac  gcc/testsuite/gfortran.dg/charlen_04.f90
--- 52685,52800 ----
  1c6c3f7db0516744fc8e78a4858a3a7b  gcc/testsuite/gfortran.dg/c_ptr_tests_9.f03
  3db7c8246d155117123c4ed63fb717be  gcc/testsuite/gfortran.dg/c_ptr_tests_driver.c
  6c39718a7a8dbcede0650e9e219b6c4a  gcc/testsuite/gfortran.dg/c_size_t_driver.c
! 3611a4ab02b914ce03f3728bfd481c99  gcc/testsuite/gfortran.dg/c_size_t_test.f03
! 325a254eb059b329b58e4ace3b0cf590  gcc/testsuite/gfortran.dg/c_sizeof_1.f90
  d55ff65ae64c08b6f8d2c09a69250e6e  gcc/testsuite/gfortran.dg/c_sizeof_2.f90
  aa59a3baf7de5feb8be06ee05faaa11a  gcc/testsuite/gfortran.dg/c_sizeof_3.f90
  184fc7c04eaf8fc894c4849895ae47ef  gcc/testsuite/gfortran.dg/c_sizeof_4.f90
! 10969643d8dd76f6ab66a3a0f7f3ad9c  gcc/testsuite/gfortran.dg/c_sizeof_5.f90
! 674fcb118703afdce719a2584839b8ed  gcc/testsuite/gfortran.dg/c_sizeof_6.f90
  ae61c2dcc3bff5189d5648a6564b3745  gcc/testsuite/gfortran.dg/change_symbol_attributes_1.f90
! ec82d3d18663e7e4ac414f05eda615bf  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
  2c7a478d24889d07e00d91954870afaf  gcc/testsuite/gfortran.dg/char_array_arg_1.f90
! abda7a1cc59e13d9ae64469d146d30e9  gcc/testsuite/gfortran.dg/char_array_constructor.f90
  edc4a84b76a182bbd35fc0110dd89003  gcc/testsuite/gfortran.dg/char_array_constructor_2.f90
  17ac1cd1806c8d0ef2c54707891edcb5  gcc/testsuite/gfortran.dg/char_array_constructor_3.f90
! 312078205fe94f89f831d09a9750ca1f  gcc/testsuite/gfortran.dg/char_array_structure_constructor.f90
! af1f8e346e5a95d713525a5514b5b04d  gcc/testsuite/gfortran.dg/char_assign_1.f90
! bf9ec3d04bc6da4c4da71826eb967c7b  gcc/testsuite/gfortran.dg/char_associated_1.f90
  0231aff5c69531f3756a770658126f0e  gcc/testsuite/gfortran.dg/char_bounds_check_fail_1.f90
  67d12cf6eb0d8b2ab490ef191aa922d0  gcc/testsuite/gfortran.dg/char_cast_1.f90
! f4e90061a8e30315b03d2385cc9076e4  gcc/testsuite/gfortran.dg/char_cast_2.f90
! f69de001990224fa61e33f3158d41ff2  gcc/testsuite/gfortran.dg/char_comparison_1.f
! 91cf9af67521083f13bb4c880df3e6d2  gcc/testsuite/gfortran.dg/char_component_initializer_1.f90
! 25fe5cf0c6bc96b742b2162ebbfd7d3a  gcc/testsuite/gfortran.dg/char_component_initializer_2.f90
  d86e3f32a70a92a26987c454587bda35  gcc/testsuite/gfortran.dg/char_component_initializer_3.f90
! ec36e832307e3737cd41b67f42ca9817  gcc/testsuite/gfortran.dg/char_cons_len.f90
! 55674dbcc50d15a8ee4e9dc276048862  gcc/testsuite/gfortran.dg/char_conversion.f90
! 2ba965770571e96c34f9301118906ba1  gcc/testsuite/gfortran.dg/char_cshift_1.f90
! 2e33830c6c48f5879aabf69afc99dc04  gcc/testsuite/gfortran.dg/char_cshift_2.f90
  2aa3f196963d256b61b5a9ad29d39ccf  gcc/testsuite/gfortran.dg/char_cshift_3.f90
  a28298c508c281d5e222f97f1e0c3bcd  gcc/testsuite/gfortran.dg/char_decl_1.f90
! 2763d7d2df42ee41f9ad9fc12bf975a8  gcc/testsuite/gfortran.dg/char_decl_2.f90
! 10840c533d8f75ca7280b97530e7f30e  gcc/testsuite/gfortran.dg/char_eoshift_1.f90
! f19b4c4ce5ab33a3c3c44b0aa62c364c  gcc/testsuite/gfortran.dg/char_eoshift_2.f90
! c9df9f0a334954582db6527603fa214f  gcc/testsuite/gfortran.dg/char_eoshift_3.f90
! 3f022932163e109b4c0f814f4bb18e9b  gcc/testsuite/gfortran.dg/char_eoshift_4.f90
! 0cb6987c4bdef44de243003a13a30d7f  gcc/testsuite/gfortran.dg/char_eoshift_5.f90
! 6f94c8ab956aec608b28dc0a0c5937f3  gcc/testsuite/gfortran.dg/char_expr_1.f90
  431910773a58ff1c397e7de34ac574dd  gcc/testsuite/gfortran.dg/char_expr_2.f90
! b26a37e802ac6478da73adad5f1d1456  gcc/testsuite/gfortran.dg/char_expr_3.f90
! ad6d0021c9ddd70a0c4a353c2a5b54a8  gcc/testsuite/gfortran.dg/char_initialiser_actual.f90
  32354abee1ac6254c489621cdad0c115  gcc/testsuite/gfortran.dg/char_length_1.f90
  08500dfe24b9bc010a5b9805b6011821  gcc/testsuite/gfortran.dg/char_length_10.f90
  fc61b2514c1873396dcafdad0395eeec  gcc/testsuite/gfortran.dg/char_length_11.f90
! 9902c73e3bcf76d2e8f1c5c40f3c9d96  gcc/testsuite/gfortran.dg/char_length_12.f90
  227fa07cd7e71562efcb78051ad7a082  gcc/testsuite/gfortran.dg/char_length_13.f90
! e0216c4d20ce76f6b001520707f40fb9  gcc/testsuite/gfortran.dg/char_length_14.f90
! b27d6d9db1f35eaa02e9b67c59e45eed  gcc/testsuite/gfortran.dg/char_length_15.f90
  93f1eac7f265cbf9f398f76c9323230e  gcc/testsuite/gfortran.dg/char_length_16.f90
! 110d95b0ed1d980f356ccb1a57f44b1f  gcc/testsuite/gfortran.dg/char_length_17.f90
  b04cbe8a3294aaa3956667efc2d42369  gcc/testsuite/gfortran.dg/char_length_18.f90
  eac4bd2510ba616cca70f5cf075e6181  gcc/testsuite/gfortran.dg/char_length_19.f90
  264562146a4e2af868e5679d5eb30c6e  gcc/testsuite/gfortran.dg/char_length_2.f90
! e4d7ef475af82a5dc1b05dd73885bacd  gcc/testsuite/gfortran.dg/char_length_20.f90
! 6a998347f3136efdc8133a58d643c28a  gcc/testsuite/gfortran.dg/char_length_21.f90
  b2e1d2ed1aab51063eaf609837a841c8  gcc/testsuite/gfortran.dg/char_length_3.f90
  42288e3a6a5e65a93ff263a2699523f8  gcc/testsuite/gfortran.dg/char_length_4.f90
! aaac5efdc99114f02621a434cad13c72  gcc/testsuite/gfortran.dg/char_length_5.f90
! c7b02f7179910772238aef0d2a8c6a01  gcc/testsuite/gfortran.dg/char_length_6.f90
! 91d4f830b6cf50cbaef3c536708ce873  gcc/testsuite/gfortran.dg/char_length_7.f90
! 0eeb0884f098f93d066cc01af0c7a98c  gcc/testsuite/gfortran.dg/char_length_8.f90
  6b0259e1dd76d7ebabf9a518e020d35d  gcc/testsuite/gfortran.dg/char_length_9.f90
! fbba847c3c1dee93ecba9c6e419f53fd  gcc/testsuite/gfortran.dg/char_pack_1.f90
! c8ecd8ccc04ca0db79c03834a8859fdc  gcc/testsuite/gfortran.dg/char_pack_2.f90
! 63b0f34110157118de4b42ba544769f1  gcc/testsuite/gfortran.dg/char_pointer_assign.f90
  f644d887f39031b5af20b0a57a7894c4  gcc/testsuite/gfortran.dg/char_pointer_assign_2.f90
! 7552d7512b3e8d60918c3a81c9b7fb02  gcc/testsuite/gfortran.dg/char_pointer_assign_3.f90
  96b30f56a9de104b5d79a66d116b672a  gcc/testsuite/gfortran.dg/char_pointer_assign_4.f90
  37eb7ba9eb77543854f7607067c520c8  gcc/testsuite/gfortran.dg/char_pointer_assign_5.f90
  05bbfce165dd596cf7612b34c8952dac  gcc/testsuite/gfortran.dg/char_pointer_assign_6.f90
! dd8a633154df2c14213e24aa617b08a2  gcc/testsuite/gfortran.dg/char_pointer_assign_icb_1.f90
! ddf9f77e66c4a8135a264b7cc863b0b6  gcc/testsuite/gfortran.dg/char_pointer_comp_assign.f90
! 064ebf7ad523c69997a5cd603b66eb56  gcc/testsuite/gfortran.dg/char_pointer_dependency.f90
! 9d2d9162499537e7238bb02f64a77be8  gcc/testsuite/gfortran.dg/char_pointer_dummy.f90
! d559ca28e57a9673bc0d7369189826d8  gcc/testsuite/gfortran.dg/char_pointer_func.f90
! 7ff37b27f3699e7fb1ea6af947ee7b34  gcc/testsuite/gfortran.dg/char_reshape_1.f90
! 6e3b3579b92ed0b17c69c70c8f599fa9  gcc/testsuite/gfortran.dg/char_result_1.f90
  84353330a329a78551b2beb2c5ac65e3  gcc/testsuite/gfortran.dg/char_result_10.f90
  ca6bbc99fbc23476b8d70ee57510d9fb  gcc/testsuite/gfortran.dg/char_result_11.f90
! 75ac18224bc5090f5fe883464ffa6488  gcc/testsuite/gfortran.dg/char_result_12.f90
! 6a0f6efe0044905a1b6d932c9d52cdfd  gcc/testsuite/gfortran.dg/char_result_13.f90
! 1a63dab0fc33829cb511fc77cdea1af8  gcc/testsuite/gfortran.dg/char_result_14.f90
! ced365db03e0b33ad236199eb1a30741  gcc/testsuite/gfortran.dg/char_result_15.f90
  a8c885ea4e0c6bc88f0ace8c9441b54c  gcc/testsuite/gfortran.dg/char_result_16.f90
! b04e8da3ed092a0886eb038f4181da94  gcc/testsuite/gfortran.dg/char_result_17.f90
! b9fd5c26379f980be6e5d0375d100c1d  gcc/testsuite/gfortran.dg/char_result_2.f90
! 7b4ed16894be70d364eb086487f8813f  gcc/testsuite/gfortran.dg/char_result_3.f90
! cf6f60622f81de4bec4a3308815ca361  gcc/testsuite/gfortran.dg/char_result_4.f90
! 02e5ac0b5b2c6a9d20c14ddfe573c60f  gcc/testsuite/gfortran.dg/char_result_5.f90
! a9d96fe47ff920da6b8376da1113bd80  gcc/testsuite/gfortran.dg/char_result_6.f90
! 8028b8274946e7feb9f3d4850e17af3f  gcc/testsuite/gfortran.dg/char_result_7.f90
! b0dc2d0a6ea7474b02cb85a70b3ad102  gcc/testsuite/gfortran.dg/char_result_8.f90
  5093ae73a32a476b807d4a5128b4ed80  gcc/testsuite/gfortran.dg/char_result_9.f90
! 053c33c2d1200e52cbe9a4ae1b95d7c3  gcc/testsuite/gfortran.dg/char_spread_1.f90
! 4506436296784a8aec337002f8009e99  gcc/testsuite/gfortran.dg/char_transpose_1.f90
! b63e59c90ea7e532d83d3417eab591c7  gcc/testsuite/gfortran.dg/char_type_len.f90
  646339b27ede96c3259e492e2bf3b264  gcc/testsuite/gfortran.dg/char_type_len_2.f90
! d4d1fb340ca478a299745df75daaea7d  gcc/testsuite/gfortran.dg/char_unpack_1.f90
! 20062ee27793a3ab6304771a89feeaac  gcc/testsuite/gfortran.dg/char_unpack_2.f90
! 6bc2e3b27ca09507bcb5682f989dc26f  gcc/testsuite/gfortran.dg/character_array_constructor_1.f90
  5fbba08e564330b3afdb07324b333a7d  gcc/testsuite/gfortran.dg/character_assign_1.f90
! c8bc51d14c4f8a9d5774e81afeecbcc5  gcc/testsuite/gfortran.dg/character_comparison_1.f90
! bd0712a60eec446e744ad00df746504f  gcc/testsuite/gfortran.dg/character_comparison_2.f90
! 220c4cc3df982ea4c34bdf7f2ee5bd6f  gcc/testsuite/gfortran.dg/character_comparison_3.f90
! 5f12aa370f52dd6f4d00709cec02bbdc  gcc/testsuite/gfortran.dg/character_comparison_4.f90
! 579ab6d1b7ae0b3dde5d0b41e9862c0d  gcc/testsuite/gfortran.dg/character_comparison_5.f90
! c9785c9fd5f854a6bb32eb226663d4a6  gcc/testsuite/gfortran.dg/character_comparison_6.f90
! 11a31aa2380371f1c21376730157c2e7  gcc/testsuite/gfortran.dg/character_comparison_7.f90
! 52155afcdc7f61593bf6506ef7ca2348  gcc/testsuite/gfortran.dg/character_comparison_8.f90
! e095a5844fa090e86a92405f5c0b0dba  gcc/testsuite/gfortran.dg/character_comparison_9.f90
  50a996cd9c41e5c61f567b57a9d68a2d  gcc/testsuite/gfortran.dg/charlen_01.f90
  df26b34bc7ab97ed1f739b2ee67c8985  gcc/testsuite/gfortran.dg/charlen_02.f90
  8ed6eae1ec67baf9a6e17a1a8bf88aac  gcc/testsuite/gfortran.dg/charlen_04.f90
*************** f3d0c2f9dd3430fcde70c063f5f1f609  gcc/te
*** 49307,49319 ****
  443deceb6d3b1cead5b2c58d61178be8  gcc/testsuite/gfortran.dg/charlen_12.f90
  6bad81f30a25556523514c32a8e6eeae  gcc/testsuite/gfortran.dg/charlen_13.f90
  a172ca937d7924e5b9285065ca6b21dd  gcc/testsuite/gfortran.dg/charlen_14.f90
! 2206de0890f2534a89c4aae24ad16449  gcc/testsuite/gfortran.dg/charlen_15.f90
! 02d6fd55abf3af692a9be6039454369c  gcc/testsuite/gfortran.dg/charlen_16.f90
! e17d3a2ee93edbc78761cd7b4bc7a07b  gcc/testsuite/gfortran.dg/chkbits.f90
! 3878b20ca157f84a63efc3ed7d107f76  gcc/testsuite/gfortran.dg/chmod_1.f90
! 8734b41ae39408708165754bbf06ee09  gcc/testsuite/gfortran.dg/chmod_2.f90
! 5332f86392867cb11c0abeb2358930e0  gcc/testsuite/gfortran.dg/chmod_3.f90
! bb94f607e30a982b0a8a17830daf0807  gcc/testsuite/gfortran.dg/class_1.f03
  20bd1b31d1f2e41f87c0a0d89dfebdc3  gcc/testsuite/gfortran.dg/class_10.f03
  5fae283c69599e688889630964adf8da  gcc/testsuite/gfortran.dg/class_11.f03
  9035a48ba403bad1e9224f06a7ddf0fd  gcc/testsuite/gfortran.dg/class_12.f03
--- 52807,52819 ----
  443deceb6d3b1cead5b2c58d61178be8  gcc/testsuite/gfortran.dg/charlen_12.f90
  6bad81f30a25556523514c32a8e6eeae  gcc/testsuite/gfortran.dg/charlen_13.f90
  a172ca937d7924e5b9285065ca6b21dd  gcc/testsuite/gfortran.dg/charlen_14.f90
! d4173ba9944470c8a1ee298c68c8c1d5  gcc/testsuite/gfortran.dg/charlen_15.f90
! b83b7e261a9a0e3827f879ddb426c6e0  gcc/testsuite/gfortran.dg/charlen_16.f90
! 8611f395b5429bd54cab0aef125f4641  gcc/testsuite/gfortran.dg/chkbits.f90
! 8f0b4ff7bcb5c59492a4c90c9a6af8c7  gcc/testsuite/gfortran.dg/chmod_1.f90
! 012967ce36e9117ef73d95a30a332d60  gcc/testsuite/gfortran.dg/chmod_2.f90
! 1c5ce1d0ded2665f41826d2d42f9f6f7  gcc/testsuite/gfortran.dg/chmod_3.f90
! 107cbea3246d2a8d48d1c8c8c133bca7  gcc/testsuite/gfortran.dg/class_1.f03
  20bd1b31d1f2e41f87c0a0d89dfebdc3  gcc/testsuite/gfortran.dg/class_10.f03
  5fae283c69599e688889630964adf8da  gcc/testsuite/gfortran.dg/class_11.f03
  9035a48ba403bad1e9224f06a7ddf0fd  gcc/testsuite/gfortran.dg/class_12.f03
*************** fe7c73eb462d11030e30acfd789aa0d9  gcc/te
*** 49322,49329 ****
  45cfc433b8d98085785e6c2026c77e24  gcc/testsuite/gfortran.dg/class_15.f03
  df59ad8c257021b22605a0633d33af8d  gcc/testsuite/gfortran.dg/class_16.f03
  a198cfc0e8e8c67199b182f588c58303  gcc/testsuite/gfortran.dg/class_17.f03
! 134804df03423aae885f45ff11bf5da6  gcc/testsuite/gfortran.dg/class_18.f03
! 2743363e4e9d367354247dee695c5146  gcc/testsuite/gfortran.dg/class_19.f03
  7a5c1c6bae7fe36f04a4e8b72c0e34a1  gcc/testsuite/gfortran.dg/class_2.f03
  356105520e0a2e9c2af674abdda72de5  gcc/testsuite/gfortran.dg/class_20.f03
  2e8e1ba2ff2f221c5eca27c772516c7a  gcc/testsuite/gfortran.dg/class_21.f03
--- 52822,52829 ----
  45cfc433b8d98085785e6c2026c77e24  gcc/testsuite/gfortran.dg/class_15.f03
  df59ad8c257021b22605a0633d33af8d  gcc/testsuite/gfortran.dg/class_16.f03
  a198cfc0e8e8c67199b182f588c58303  gcc/testsuite/gfortran.dg/class_17.f03
! 538a6cf14e51b189f149bb06aadde890  gcc/testsuite/gfortran.dg/class_18.f03
! fde2a7ce3e9a4e855a44800a6f7b6571  gcc/testsuite/gfortran.dg/class_19.f03
  7a5c1c6bae7fe36f04a4e8b72c0e34a1  gcc/testsuite/gfortran.dg/class_2.f03
  356105520e0a2e9c2af674abdda72de5  gcc/testsuite/gfortran.dg/class_20.f03
  2e8e1ba2ff2f221c5eca27c772516c7a  gcc/testsuite/gfortran.dg/class_21.f03
*************** f4e3a289ebf783d4149d435acf2197b0  gcc/te
*** 49341,49347 ****
  0c2669c5ea94378abb398dbd0790098e  gcc/testsuite/gfortran.dg/class_32.f90
  4f20a7007c988b77f99a94b68ff04026  gcc/testsuite/gfortran.dg/class_33.f90
  7e7de27c4f5f50b75c2cf3abe4a99b2e  gcc/testsuite/gfortran.dg/class_34.f90
! 2f91d452c92b65e63907a8a7ef73f84e  gcc/testsuite/gfortran.dg/class_35.f90
  1822945d6ae27d5b8d4f0c63610b6920  gcc/testsuite/gfortran.dg/class_36.f03
  e1e3085011ded155e4dd749c2d2071aa  gcc/testsuite/gfortran.dg/class_37.f03
  a96c798f2a88111776b1676a9f641a92  gcc/testsuite/gfortran.dg/class_38.f03
--- 52841,52847 ----
  0c2669c5ea94378abb398dbd0790098e  gcc/testsuite/gfortran.dg/class_32.f90
  4f20a7007c988b77f99a94b68ff04026  gcc/testsuite/gfortran.dg/class_33.f90
  7e7de27c4f5f50b75c2cf3abe4a99b2e  gcc/testsuite/gfortran.dg/class_34.f90
! 433ffa1d26e8b097b84d973a766d7ff4  gcc/testsuite/gfortran.dg/class_35.f90
  1822945d6ae27d5b8d4f0c63610b6920  gcc/testsuite/gfortran.dg/class_36.f03
  e1e3085011ded155e4dd749c2d2071aa  gcc/testsuite/gfortran.dg/class_37.f03
  a96c798f2a88111776b1676a9f641a92  gcc/testsuite/gfortran.dg/class_38.f03
*************** c2ddebc4cd8ac7d8d525832fccfa0888  gcc/te
*** 49353,49531 ****
  a5424b709666933176bde11df2edd06b  gcc/testsuite/gfortran.dg/class_44.f03
  4488705fe58480e3a272f5f2a7caf96c  gcc/testsuite/gfortran.dg/class_45a.f03
  6e9f92e8224f44e792cd8795bd7a651b  gcc/testsuite/gfortran.dg/class_45b.f03
! 98486c2e56957d45d4fef6b90e8be2a4  gcc/testsuite/gfortran.dg/class_46.f03
  e04cdad9c5e7fc68a197ccfee05b8024  gcc/testsuite/gfortran.dg/class_47.f90
! 8e1e0d6808b91a9c241d726e16e1d805  gcc/testsuite/gfortran.dg/class_48.f90
  f7f95dc8771e4f6e56ef6918eec3579e  gcc/testsuite/gfortran.dg/class_49.f90
! 364bcad74602e3c86a974e0b522a7631  gcc/testsuite/gfortran.dg/class_4a.f03
  2acbeccb24d305cd42c2538142cd5683  gcc/testsuite/gfortran.dg/class_4b.f03
  e22aa437c55ee962c7781d739761dfd4  gcc/testsuite/gfortran.dg/class_4c.f03
  54ba9c589b350f18a3c07dab2d5bfe92  gcc/testsuite/gfortran.dg/class_5.f03
! 51ed847c9989a98ea3a39c4969e12166  gcc/testsuite/gfortran.dg/class_51.f90
! 2efaf022140dbb8c31abe935a05c1d20  gcc/testsuite/gfortran.dg/class_52.f90
  8d809b66660194f8798820811cb91257  gcc/testsuite/gfortran.dg/class_53.f90
! c1739c1d8511416f1680a66955e5799a  gcc/testsuite/gfortran.dg/class_54.f90
  da95c5400735f4c2f4fc34487feb21f8  gcc/testsuite/gfortran.dg/class_55.f90
  081b7861449ee503eb0eafc38aa74102  gcc/testsuite/gfortran.dg/class_56.f90
  2fbf5aa2a748bac8f14f06f6aecf4b6a  gcc/testsuite/gfortran.dg/class_57.f90
  e5fb2c5d38e11474d612c7ab279406ba  gcc/testsuite/gfortran.dg/class_58.f90
  dd2c7b1cf9668f23e882c3d64580ab34  gcc/testsuite/gfortran.dg/class_59.f90
! 58bc4a716942caffe0323c7d0b20a63e  gcc/testsuite/gfortran.dg/class_6.f03
  e8904afb9adfeb76555179cf83d18504  gcc/testsuite/gfortran.dg/class_60.f90
  0d77f03fd7fa41cc7efc9bf5d51b1b81  gcc/testsuite/gfortran.dg/class_61.f90
  28b51cf2f3868e0d992356221459b6b8  gcc/testsuite/gfortran.dg/class_62.f90
! 96edfbbf02b9106a48eb73f24d4ea360  gcc/testsuite/gfortran.dg/class_63.f90
! 0ce4624d38091f6542bcf6fab4486b51  gcc/testsuite/gfortran.dg/class_64.f90
! 123e8fdbca935f6b90c89e509f0a97f7  gcc/testsuite/gfortran.dg/class_65.f90
! 6cc892c72c07b16501f3fb172d19f06e  gcc/testsuite/gfortran.dg/class_66.f90
  cc0c048415b8d0593fe7e5b164763dc7  gcc/testsuite/gfortran.dg/class_7.f03
  765b5ae237d318aee8909def266c457e  gcc/testsuite/gfortran.dg/class_8.f03
! dac9a57a157d95214c44d80cc02bd042  gcc/testsuite/gfortran.dg/class_9.f03
! a313810ee094ad33d3ec706a89d356a4  gcc/testsuite/gfortran.dg/class_alias.f90
! 594a1879bea29083a23b7e4377e6eb23  gcc/testsuite/gfortran.dg/class_allocate_1.f03
! 636d06bc6c6b96e4a40e6a5ec9394be3  gcc/testsuite/gfortran.dg/class_allocate_10.f03
  9ea1a684de44b0d02518bc6d62e6d2a1  gcc/testsuite/gfortran.dg/class_allocate_11.f03
  5d7780be87fb96bcba9da330feac063f  gcc/testsuite/gfortran.dg/class_allocate_12.f90
! f6c8b5b50b51f2ab2004f4e6a27e0e8a  gcc/testsuite/gfortran.dg/class_allocate_13.f90
! 5da92013f2d3400b54848412896c6440  gcc/testsuite/gfortran.dg/class_allocate_14.f90
! 322c19744d6ef29d62b9cfef2a207ef3  gcc/testsuite/gfortran.dg/class_allocate_15.f90
  5fd6766ae89634554bcce63bcb3d7d24  gcc/testsuite/gfortran.dg/class_allocate_16.f90
  c8820f95c5d93bc4a880a5ee3f341977  gcc/testsuite/gfortran.dg/class_allocate_17.f90
  9375e43c7c4df51161a432f538bff911  gcc/testsuite/gfortran.dg/class_allocate_18.f90
! 1b136c656e5667aa39fb5dcd9cf60909  gcc/testsuite/gfortran.dg/class_allocate_19.f03
  29fb0e972591bb1c0d18986cfd4000c1  gcc/testsuite/gfortran.dg/class_allocate_2.f03
  f6a460bc285cf4a1329239e4defe5338  gcc/testsuite/gfortran.dg/class_allocate_20.f90
! cf9cf352b2e6aa04dc8caca6180a78d0  gcc/testsuite/gfortran.dg/class_allocate_21.f90
! eb8c288c009652b3261376e7d8447bec  gcc/testsuite/gfortran.dg/class_allocate_22.f90
  fba89cf5c457ae04c3d9c870a80b8aed  gcc/testsuite/gfortran.dg/class_allocate_23.f08
  68a9d702e4b68375c4738b0eca713815  gcc/testsuite/gfortran.dg/class_allocate_24.f90
! 429d52f4933a6ef04052e7b8faa6314a  gcc/testsuite/gfortran.dg/class_allocate_3.f03
! d40289e198c5b62af940ac46912169f0  gcc/testsuite/gfortran.dg/class_allocate_4.f03
! 6e9ab24784e1dd81f4c59180c6dd6b09  gcc/testsuite/gfortran.dg/class_allocate_5.f90
! c12cd7efc00b9c3ccc9b4281e63bc81d  gcc/testsuite/gfortran.dg/class_allocate_6.f03
! a34662c686c737fce9826cf28529cdfc  gcc/testsuite/gfortran.dg/class_allocate_7.f03
! 92db5d411ac94b95ab2c34be58940490  gcc/testsuite/gfortran.dg/class_allocate_8.f03
! 09150e26613803faa9d40b64eaf6a899  gcc/testsuite/gfortran.dg/class_allocate_9.f03
! 5e5e66f3e1fa293922eb8774f2ce4f26  gcc/testsuite/gfortran.dg/class_array_1.f03
  989326514273fca5ec2eaf71b3ae76cd  gcc/testsuite/gfortran.dg/class_array_10.f03
  af62f8e63487374ab7f55bf98ba22f9f  gcc/testsuite/gfortran.dg/class_array_11.f03
  211e434394ea8ce43ce8f5c2e671416d  gcc/testsuite/gfortran.dg/class_array_12.f03
  7d1b70fed6324f2dae86399e70c60cb7  gcc/testsuite/gfortran.dg/class_array_13.f90
! 2880265b32eb89ea2a2339848e096186  gcc/testsuite/gfortran.dg/class_array_14.f90
! c5f474387f5cb1c43ed4aa2f3a47f7f3  gcc/testsuite/gfortran.dg/class_array_15.f03
! 7d1a0af2ddad615ff2dd1256bf213d62  gcc/testsuite/gfortran.dg/class_array_16.f90
  db91c4c4aafba393cb88a89c0beacd9c  gcc/testsuite/gfortran.dg/class_array_17.f90
  c51442df4b78a56b7cd5dc0dacc16f6b  gcc/testsuite/gfortran.dg/class_array_18.f90
  d0b05c7eceb29f8275e804b49c76c2ce  gcc/testsuite/gfortran.dg/class_array_19.f90
! 50b3c8143d77c8ce5bb9d993685e5e6b  gcc/testsuite/gfortran.dg/class_array_2.f03
! b69583ccb90b55baf9d920885f82ae11  gcc/testsuite/gfortran.dg/class_array_20.f03
! 547b3d7e1da615a9e1057434c23dad05  gcc/testsuite/gfortran.dg/class_array_21.f03
  91de14bd0e1e34515a91a4245b3da873  gcc/testsuite/gfortran.dg/class_array_22.f03
! 3c6c7feaa5267df5f131a4ddb69162d9  gcc/testsuite/gfortran.dg/class_array_3.f03
! cb5261f2acfcf95396bea9e699efcd14  gcc/testsuite/gfortran.dg/class_array_4.f03
  b4dd99bc2d3d2741e6f3769df3b8d9e0  gcc/testsuite/gfortran.dg/class_array_5.f03
  826768412dc3b1ae79e39caa5721e2c6  gcc/testsuite/gfortran.dg/class_array_6.f03
! 46968d1293b3ee4a8782589c009004ec  gcc/testsuite/gfortran.dg/class_array_7.f03
! 15ba4fabc3155702c2220a084b7f2201  gcc/testsuite/gfortran.dg/class_array_8.f03
! 5195c1675288b44e3d465f22f143f069  gcc/testsuite/gfortran.dg/class_array_9.f03
  84ff5b2a64c12f33f78c6409e1e6ffc2  gcc/testsuite/gfortran.dg/class_assign_1.f08
! 1c00c450f39001364318dca0be99c35e  gcc/testsuite/gfortran.dg/class_defined_operator_1.f03
! b12e3fddfbda0f65e4066a21e4cb6441  gcc/testsuite/gfortran.dg/class_dummy_1.f03
  695856ffada7ab91f95f3d41b3079166  gcc/testsuite/gfortran.dg/class_dummy_2.f03
  dbc20d52e3c86639db916ad3c6392de8  gcc/testsuite/gfortran.dg/class_dummy_3.f03
! 5f181ba693f76776d1a4c592a1e24222  gcc/testsuite/gfortran.dg/class_dummy_4.f03
! 310b9a6517bcef711edeafd328dc1591  gcc/testsuite/gfortran.dg/class_dummy_5.f90
  2f2b6b89c03eb0121abcd60df79d27ee  gcc/testsuite/gfortran.dg/class_is_1.f90
  84f9ccdf2ee8c8cfe397a0c82a7730af  gcc/testsuite/gfortran.dg/class_nameclash.f90
! 2e9cfe9a03e4e4986413af50c1aaeb6b  gcc/testsuite/gfortran.dg/class_optional_1.f90
! 9d2e1be7c7b774543dde26355644bb63  gcc/testsuite/gfortran.dg/class_optional_2.f90
  7c2579227e2041f067b68fc6f25175f5  gcc/testsuite/gfortran.dg/class_result_1.f03
  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
! 8746ede5426086e012fc58165b5830c1  gcc/testsuite/gfortran.dg/class_result_5.f90
! 894cc2b33f311beb495041521f42028a  gcc/testsuite/gfortran.dg/class_result_6.f90
! 5d07b7c2ecf498e131ae5188ddbe6b92  gcc/testsuite/gfortran.dg/class_to_type_1.f03
! 21073ee635adb08a389a867157f17f96  gcc/testsuite/gfortran.dg/class_to_type_2.f90
! c9fdcdd06c1c6e20c522e1369363b98c  gcc/testsuite/gfortran.dg/class_to_type_3.f03
! c9e793d2feeddf25f794bff9a7251257  gcc/testsuite/gfortran.dg/class_to_type_4.f90
  b51c285d2aa337ba9d51a48947b0788a  gcc/testsuite/gfortran.dg/cmplx_intrinsic_1.f90
  05232ac9689380c9c4954d057d56c002  gcc/testsuite/gfortran.dg/co_reduce_1.f90
! 1d6fcc4629df1c6b4a3254b893a8d85d  gcc/testsuite/gfortran.dg/coarray/alloc_comp_1.f90
  939e6c8975a11f2e646a768bac9293f9  gcc/testsuite/gfortran.dg/coarray/alloc_comp_2.f90
  72674e7da2e86dedff70420da3d45132  gcc/testsuite/gfortran.dg/coarray/alloc_comp_3.f90
! 888a219d2a1aba902b8c959d77064e64  gcc/testsuite/gfortran.dg/coarray/alloc_comp_4.f90
  5b5ec82dd29e86e4e8c1ffdcc8f1fff4  gcc/testsuite/gfortran.dg/coarray/alloc_comp_5.f90
! afecbef3bd5f68f4872a7ed414762932  gcc/testsuite/gfortran.dg/coarray/allocate_errgmsg.f90
! 77a59a37262e649592960648d8f49884  gcc/testsuite/gfortran.dg/coarray/atomic_1.f90
! 66a73e153495da5e9139cb83e979ea52  gcc/testsuite/gfortran.dg/coarray/atomic_2.f90
! 4465280c9d8af39d0e631134b63fe18d  gcc/testsuite/gfortran.dg/coarray/caf.exp
! bc1ad7d1140827fd94c615e483ec80a0  gcc/testsuite/gfortran.dg/coarray/codimension.f90
  5458460c74c7764eb6fc6ca41f3520cb  gcc/testsuite/gfortran.dg/coarray/codimension_2.f90
  9604ece34279ee35811c44344503ca51  gcc/testsuite/gfortran.dg/coarray/codimension_2a.f90
  c2fcd3c1508ec38085828e5481ea280c  gcc/testsuite/gfortran.dg/coarray/codimension_2b.f90
! 4a732471f9622e841a1a19e094c03346  gcc/testsuite/gfortran.dg/coarray/coindexed_1.f90
! 6ea5de107bc810ffb0a0a4b6e2229cf4  gcc/testsuite/gfortran.dg/coarray/collectives_1.f90
! 6969a274e6c6353208916590adc69f66  gcc/testsuite/gfortran.dg/coarray/collectives_2.f90
! 4803ed5ed26534bcf387ec50567457ac  gcc/testsuite/gfortran.dg/coarray/collectives_3.f90
! 71a07048053779563f3780e56f612dbf  gcc/testsuite/gfortran.dg/coarray/collectives_4.f90
! fed16f1f7d3b8c720c68cbd01b83fa43  gcc/testsuite/gfortran.dg/coarray/cosubscript_1.f90
  bc2e49396148d7be346be065b8879d1b  gcc/testsuite/gfortran.dg/coarray/data_1.f90
! 393c735e4ed3573f46d59b6be8dfe555  gcc/testsuite/gfortran.dg/coarray/dummy_1.f90
! 145d35dc06fc9f1f4dedae6e06844cc4  gcc/testsuite/gfortran.dg/coarray/event_1.f90
! 82478fce64f3e0b6eabec854f96800c2  gcc/testsuite/gfortran.dg/coarray/event_2.f90
  7bdec35df5c34a10372c7a54a6b5ab8f  gcc/testsuite/gfortran.dg/coarray/event_3.f08
  69e67a47c4572bb8954e710fb63e1241  gcc/testsuite/gfortran.dg/coarray/event_4.f08
  d5151e59e2e1e14dc716281be617a2b7  gcc/testsuite/gfortran.dg/coarray/fail_image_1.f08
  f2e0d8eab800c2440470c47e27dbc818  gcc/testsuite/gfortran.dg/coarray/fail_image_2.f08
  550ba8c1ff1a87edf22c84bbaf1b23c8  gcc/testsuite/gfortran.dg/coarray/failed_images_1.f08
  46fd85e4e0f66017776125b64c85dcae  gcc/testsuite/gfortran.dg/coarray/failed_images_2.f08
! 7d4c5cfc3c55e28060d2d7c4a70d70d9  gcc/testsuite/gfortran.dg/coarray/get_array.f90
! 6cb57e0edb7420fbfa56608c6eaa63df  gcc/testsuite/gfortran.dg/coarray/image_index_1.f90
! c9182edacbb3ad98cf9b81ced7356078  gcc/testsuite/gfortran.dg/coarray/image_index_2.f90
! c5358ecc3b389637c6a699d4be4f5206  gcc/testsuite/gfortran.dg/coarray/image_index_3.f90
  68c7f39bcc384d6a12c665b99acc0286  gcc/testsuite/gfortran.dg/coarray/image_status_1.f08
  5b9d9e29d54188b581dc483d442cd2a3  gcc/testsuite/gfortran.dg/coarray/image_status_2.f08
! 426618ac89b519e5d63b825a6be0342a  gcc/testsuite/gfortran.dg/coarray/lib_realloc_1.f90
! 143059aa487d4d95f7261ef14685227e  gcc/testsuite/gfortran.dg/coarray/lock_1.f90
! 1efd7d52c5341b313d437f0200c29e6e  gcc/testsuite/gfortran.dg/coarray/lock_2.f90
! 1a4ce1cb4ad40481d54d1cc5234792b5  gcc/testsuite/gfortran.dg/coarray/move_alloc_1.f90
! 59f02bd49733e4af041192ce996bcd86  gcc/testsuite/gfortran.dg/coarray/poly_run_1.f90
! 77a5dc6dd1d1855e3dc4674effe8b6ee  gcc/testsuite/gfortran.dg/coarray/poly_run_2.f90
! bd8c8adb2c44a03f20cb480af18ed04a  gcc/testsuite/gfortran.dg/coarray/poly_run_3.f90
  b324389289606e577a87ba1c672a3812  gcc/testsuite/gfortran.dg/coarray/ptr_comp_1.f08
  7f10b2e799cec0c22aaebfa60b26756a  gcc/testsuite/gfortran.dg/coarray/ptr_comp_2.f08
! 5ed665650af277c5c9bcdf24b13277b4  gcc/testsuite/gfortran.dg/coarray/ptr_comp_3.f08
  89fee2c127f49444ff8b90507cb38fba  gcc/testsuite/gfortran.dg/coarray/ptr_comp_4.f08
! ceddb6136040087e15f0d2fdf1474cb6  gcc/testsuite/gfortran.dg/coarray/registering_1.f90
! f74ccffe9729045ba4061775e2d10960  gcc/testsuite/gfortran.dg/coarray/scalar_alloc_1.f90
! 9b4e39782c54b93d20ce89aae6042441  gcc/testsuite/gfortran.dg/coarray/scalar_alloc_2.f90
! 01329fb6b8f74096c9ef2b3f621a3a41  gcc/testsuite/gfortran.dg/coarray/send_array.f90
! 6fe98f70ffae0920ca5411e7edd1afd5  gcc/testsuite/gfortran.dg/coarray/send_char_array_1.f90
! 3c015c26017630e11b5f58786fa9b766  gcc/testsuite/gfortran.dg/coarray/sendget_array.f90
  3e02c7e9c64dcef76ab4fc3f8db928c1  gcc/testsuite/gfortran.dg/coarray/stopped_images_1.f08
  ab6cc384c283380a5b6bdf00c3fbeb30  gcc/testsuite/gfortran.dg/coarray/stopped_images_2.f08
! 94782970c5da6f4e9613ff8d649af377  gcc/testsuite/gfortran.dg/coarray/subobject_1.f90
! 0ef2cf6e286c0e32baee364b1c6104f7  gcc/testsuite/gfortran.dg/coarray/sync_1.f90
! 2d08d3835017a1b35e99cf192fb08881  gcc/testsuite/gfortran.dg/coarray/sync_3.f90
! 80bf9d7e914defffe4a9cd9632187b7a  gcc/testsuite/gfortran.dg/coarray/this_image_1.f90
! 213b8f7668efb3d642eed880c25cf236  gcc/testsuite/gfortran.dg/coarray/this_image_2.f90
  006a73081fcf3549f75666795a40153d  gcc/testsuite/gfortran.dg/coarray_1.f90
  556050f34b46dd462db787077cccaf59  gcc/testsuite/gfortran.dg/coarray_10.f90
  67aaadc572d2c00aa2d3389f87f0bd5d  gcc/testsuite/gfortran.dg/coarray_11.f90
  7e3b8c86ae974b8e72515cbd7d6243d8  gcc/testsuite/gfortran.dg/coarray_12.f90
! e68bd85c1a5923ac7b99d79883ee9323  gcc/testsuite/gfortran.dg/coarray_13.f90
  e08486b636a2e274b143c8af55f6777e  gcc/testsuite/gfortran.dg/coarray_14.f90
! df8d6b4684571c7dee5ebb9979e2f8eb  gcc/testsuite/gfortran.dg/coarray_15.f90
! b70dbaa45149bdb531208fed86693171  gcc/testsuite/gfortran.dg/coarray_16.f90
  f3811361487b4309fbf46c6f31aefaa2  gcc/testsuite/gfortran.dg/coarray_17.f90
! 38db78ed0ea36e3e14193c7ec6237cd7  gcc/testsuite/gfortran.dg/coarray_18.f90
  2b63b6d167021f94a7d5cc9ca81d1951  gcc/testsuite/gfortran.dg/coarray_19.f90
! a2410d696f2108d546edd56739d75ca5  gcc/testsuite/gfortran.dg/coarray_2.f90
  885933bf8106d00cac760ae81208b9f2  gcc/testsuite/gfortran.dg/coarray_20.f90
  df49f9b01d72c5086ff78dff85245753  gcc/testsuite/gfortran.dg/coarray_21.f90
  8f7fe44a774eb00a7216d998abe0f380  gcc/testsuite/gfortran.dg/coarray_22.f90
! b20ea0d34f8e1117be103a2c3efe7485  gcc/testsuite/gfortran.dg/coarray_23.f90
  b33383bf7ec63573cb66cd355ee88e5a  gcc/testsuite/gfortran.dg/coarray_24.f90
  ccea5fe2d622c1b4b11ac162a1a5ab5d  gcc/testsuite/gfortran.dg/coarray_25.f90
  5fef6472f3bdd94ce9a78ab69162d0ea  gcc/testsuite/gfortran.dg/coarray_26.f90
--- 52853,53036 ----
  a5424b709666933176bde11df2edd06b  gcc/testsuite/gfortran.dg/class_44.f03
  4488705fe58480e3a272f5f2a7caf96c  gcc/testsuite/gfortran.dg/class_45a.f03
  6e9f92e8224f44e792cd8795bd7a651b  gcc/testsuite/gfortran.dg/class_45b.f03
! 9d25a936a6171cb60e9c3c0b7367668d  gcc/testsuite/gfortran.dg/class_46.f03
  e04cdad9c5e7fc68a197ccfee05b8024  gcc/testsuite/gfortran.dg/class_47.f90
! 2b20a6d7e460c3ac03c904c056430064  gcc/testsuite/gfortran.dg/class_48.f90
  f7f95dc8771e4f6e56ef6918eec3579e  gcc/testsuite/gfortran.dg/class_49.f90
! 0fac1343ca1fa07bd0289fc6f9e5ec73  gcc/testsuite/gfortran.dg/class_4a.f03
  2acbeccb24d305cd42c2538142cd5683  gcc/testsuite/gfortran.dg/class_4b.f03
  e22aa437c55ee962c7781d739761dfd4  gcc/testsuite/gfortran.dg/class_4c.f03
  54ba9c589b350f18a3c07dab2d5bfe92  gcc/testsuite/gfortran.dg/class_5.f03
! 93e2aeef40bcfe24b0602298a6251916  gcc/testsuite/gfortran.dg/class_51.f90
! 453107bc7ce49839928f1a4a15c42faf  gcc/testsuite/gfortran.dg/class_52.f90
  8d809b66660194f8798820811cb91257  gcc/testsuite/gfortran.dg/class_53.f90
! 0bc2c7120531dadad7393b528008127e  gcc/testsuite/gfortran.dg/class_54.f90
  da95c5400735f4c2f4fc34487feb21f8  gcc/testsuite/gfortran.dg/class_55.f90
  081b7861449ee503eb0eafc38aa74102  gcc/testsuite/gfortran.dg/class_56.f90
  2fbf5aa2a748bac8f14f06f6aecf4b6a  gcc/testsuite/gfortran.dg/class_57.f90
  e5fb2c5d38e11474d612c7ab279406ba  gcc/testsuite/gfortran.dg/class_58.f90
  dd2c7b1cf9668f23e882c3d64580ab34  gcc/testsuite/gfortran.dg/class_59.f90
! 3559a2034886d45662cf5cdbdd177000  gcc/testsuite/gfortran.dg/class_6.f03
  e8904afb9adfeb76555179cf83d18504  gcc/testsuite/gfortran.dg/class_60.f90
  0d77f03fd7fa41cc7efc9bf5d51b1b81  gcc/testsuite/gfortran.dg/class_61.f90
  28b51cf2f3868e0d992356221459b6b8  gcc/testsuite/gfortran.dg/class_62.f90
! aa6d648b297882875678f70a3dfe1170  gcc/testsuite/gfortran.dg/class_63.f90
! d6c98e30022f3526561612d15bd04f8d  gcc/testsuite/gfortran.dg/class_64.f90
! 542b946933674b8f3d2eee02f1fcc697  gcc/testsuite/gfortran.dg/class_65.f90
! 903b107542f23de9c4c2a8b6350f640f  gcc/testsuite/gfortran.dg/class_66.f90
! a8f104492778b738ac5730dd1605432a  gcc/testsuite/gfortran.dg/class_67.f90
! 63b1355ac520a42bac806d64920510a4  gcc/testsuite/gfortran.dg/class_68.f90
  cc0c048415b8d0593fe7e5b164763dc7  gcc/testsuite/gfortran.dg/class_7.f03
  765b5ae237d318aee8909def266c457e  gcc/testsuite/gfortran.dg/class_8.f03
! 6ad3d2ed9f82c5534e18375c93ce8c03  gcc/testsuite/gfortran.dg/class_9.f03
! eff35de84f2c16f8b8abcbc407237414  gcc/testsuite/gfortran.dg/class_alias.f90
! fbcf62ed3741219ecd67b08e4d7ace10  gcc/testsuite/gfortran.dg/class_allocate_1.f03
! abd30b604da19897ac6a7726e7db607a  gcc/testsuite/gfortran.dg/class_allocate_10.f03
  9ea1a684de44b0d02518bc6d62e6d2a1  gcc/testsuite/gfortran.dg/class_allocate_11.f03
  5d7780be87fb96bcba9da330feac063f  gcc/testsuite/gfortran.dg/class_allocate_12.f90
! be1277c4d999803dc2bc803bb3bad8df  gcc/testsuite/gfortran.dg/class_allocate_13.f90
! 2f29cfe6c35b276d309b1ba0bafd66b8  gcc/testsuite/gfortran.dg/class_allocate_14.f90
! 82323069aa22811bceb7ef23d1d95a4b  gcc/testsuite/gfortran.dg/class_allocate_15.f90
  5fd6766ae89634554bcce63bcb3d7d24  gcc/testsuite/gfortran.dg/class_allocate_16.f90
  c8820f95c5d93bc4a880a5ee3f341977  gcc/testsuite/gfortran.dg/class_allocate_17.f90
  9375e43c7c4df51161a432f538bff911  gcc/testsuite/gfortran.dg/class_allocate_18.f90
! 6f22911cf4f27c8c426fe3f91f44731b  gcc/testsuite/gfortran.dg/class_allocate_19.f03
  29fb0e972591bb1c0d18986cfd4000c1  gcc/testsuite/gfortran.dg/class_allocate_2.f03
  f6a460bc285cf4a1329239e4defe5338  gcc/testsuite/gfortran.dg/class_allocate_20.f90
! cc056bc499d8d93174e979c3557caa71  gcc/testsuite/gfortran.dg/class_allocate_21.f90
! 9b678e7d367fecaae7df9ff085983430  gcc/testsuite/gfortran.dg/class_allocate_22.f90
  fba89cf5c457ae04c3d9c870a80b8aed  gcc/testsuite/gfortran.dg/class_allocate_23.f08
  68a9d702e4b68375c4738b0eca713815  gcc/testsuite/gfortran.dg/class_allocate_24.f90
! 2ba22c9b198d4131574e734a851c6f8b  gcc/testsuite/gfortran.dg/class_allocate_3.f03
! f389dcf854edab6691a1c36965bca655  gcc/testsuite/gfortran.dg/class_allocate_4.f03
! de34e5d5f5aff3cbab1c39348058f5d2  gcc/testsuite/gfortran.dg/class_allocate_5.f90
! 05145e40bce3dd794b81c38eee7a4976  gcc/testsuite/gfortran.dg/class_allocate_6.f03
! 085588c561df3bb9a03a0f2ed32b7b13  gcc/testsuite/gfortran.dg/class_allocate_7.f03
! 1ac86bf78d140646e94de25ad76c4219  gcc/testsuite/gfortran.dg/class_allocate_8.f03
! acd00b53205440584c29bbf3100324d0  gcc/testsuite/gfortran.dg/class_allocate_9.f03
! 58b49b8ea7655d3c3c8db84ba4ff85a8  gcc/testsuite/gfortran.dg/class_array_1.f03
  989326514273fca5ec2eaf71b3ae76cd  gcc/testsuite/gfortran.dg/class_array_10.f03
  af62f8e63487374ab7f55bf98ba22f9f  gcc/testsuite/gfortran.dg/class_array_11.f03
  211e434394ea8ce43ce8f5c2e671416d  gcc/testsuite/gfortran.dg/class_array_12.f03
  7d1b70fed6324f2dae86399e70c60cb7  gcc/testsuite/gfortran.dg/class_array_13.f90
! c846364e17a1733317b1f609e1a937f9  gcc/testsuite/gfortran.dg/class_array_14.f90
! 147dbd0be1d3264d76ab3806ad66121a  gcc/testsuite/gfortran.dg/class_array_15.f03
! 26e53d866d760ca631e05275ed5d5281  gcc/testsuite/gfortran.dg/class_array_16.f90
  db91c4c4aafba393cb88a89c0beacd9c  gcc/testsuite/gfortran.dg/class_array_17.f90
  c51442df4b78a56b7cd5dc0dacc16f6b  gcc/testsuite/gfortran.dg/class_array_18.f90
  d0b05c7eceb29f8275e804b49c76c2ce  gcc/testsuite/gfortran.dg/class_array_19.f90
! bd5f87ec53f49e6a8981f467e5bb9e41  gcc/testsuite/gfortran.dg/class_array_2.f03
! 1b431c2ca34f46ffbfa6bfc03d0674c7  gcc/testsuite/gfortran.dg/class_array_20.f03
! d7de9573af1b1b97fe9d86450aa3a0af  gcc/testsuite/gfortran.dg/class_array_21.f03
  91de14bd0e1e34515a91a4245b3da873  gcc/testsuite/gfortran.dg/class_array_22.f03
! ead9e764a198bfb098ed6bc432712080  gcc/testsuite/gfortran.dg/class_array_23.f03
! b5fd99d851b46b95300feac81c24ebf1  gcc/testsuite/gfortran.dg/class_array_3.f03
! 38a17a95f960b99768a15d9116701526  gcc/testsuite/gfortran.dg/class_array_4.f03
  b4dd99bc2d3d2741e6f3769df3b8d9e0  gcc/testsuite/gfortran.dg/class_array_5.f03
  826768412dc3b1ae79e39caa5721e2c6  gcc/testsuite/gfortran.dg/class_array_6.f03
! dd62cadd38044f71b1ac16d76d9d4a72  gcc/testsuite/gfortran.dg/class_array_7.f03
! c4d10be1a596349b248991dbaa0ea19e  gcc/testsuite/gfortran.dg/class_array_8.f03
! 9afd99f6247dfa0cc116cdc37cd8cf39  gcc/testsuite/gfortran.dg/class_array_9.f03
  84ff5b2a64c12f33f78c6409e1e6ffc2  gcc/testsuite/gfortran.dg/class_assign_1.f08
! 5e140393b972a46e3ea39e2ef34f7a13  gcc/testsuite/gfortran.dg/class_defined_operator_1.f03
! bffd58c6eb392174540e5effb5007d27  gcc/testsuite/gfortran.dg/class_dummy_1.f03
  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
! 198585d6f5262127fa1756b228e70921  gcc/testsuite/gfortran.dg/class_dummy_5.f90
  2f2b6b89c03eb0121abcd60df79d27ee  gcc/testsuite/gfortran.dg/class_is_1.f90
  84f9ccdf2ee8c8cfe397a0c82a7730af  gcc/testsuite/gfortran.dg/class_nameclash.f90
! 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
  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
! 501549cb6b29ee1beb8fa58fee1e24f1  gcc/testsuite/gfortran.dg/class_to_type_1.f03
! fda1f206c2e1ff5cd9f550d75873293b  gcc/testsuite/gfortran.dg/class_to_type_2.f90
! b7e881e628c247d750478033fea18cb3  gcc/testsuite/gfortran.dg/class_to_type_3.f03
! 363a8e7237fe405caaa21bb126f5a3a6  gcc/testsuite/gfortran.dg/class_to_type_4.f90
  b51c285d2aa337ba9d51a48947b0788a  gcc/testsuite/gfortran.dg/cmplx_intrinsic_1.f90
  05232ac9689380c9c4954d057d56c002  gcc/testsuite/gfortran.dg/co_reduce_1.f90
! aedf93982d6c056c9d1650f5e7e4d506  gcc/testsuite/gfortran.dg/coarray/alloc_comp_1.f90
  939e6c8975a11f2e646a768bac9293f9  gcc/testsuite/gfortran.dg/coarray/alloc_comp_2.f90
  72674e7da2e86dedff70420da3d45132  gcc/testsuite/gfortran.dg/coarray/alloc_comp_3.f90
! 734994954589fd9c52a0f9f5e65df97a  gcc/testsuite/gfortran.dg/coarray/alloc_comp_4.f90
  5b5ec82dd29e86e4e8c1ffdcc8f1fff4  gcc/testsuite/gfortran.dg/coarray/alloc_comp_5.f90
! 0383efb987613ad7ba5897bf853a7c3d  gcc/testsuite/gfortran.dg/coarray/allocate_errgmsg.f90
! 21f18575fa619cf0b7fba877cb8db97f  gcc/testsuite/gfortran.dg/coarray/atomic_1.f90
! 0268d93e6cda40e43a982efb5b3db96a  gcc/testsuite/gfortran.dg/coarray/atomic_2.f90
! 49ad97d1f9e8ba586a9b2a1b9c3bea16  gcc/testsuite/gfortran.dg/coarray/caf.exp
! a8535ad2a515ec0df0ef730df6f14831  gcc/testsuite/gfortran.dg/coarray/codimension.f90
  5458460c74c7764eb6fc6ca41f3520cb  gcc/testsuite/gfortran.dg/coarray/codimension_2.f90
  9604ece34279ee35811c44344503ca51  gcc/testsuite/gfortran.dg/coarray/codimension_2a.f90
  c2fcd3c1508ec38085828e5481ea280c  gcc/testsuite/gfortran.dg/coarray/codimension_2b.f90
! ee39ad592286c583f1d1379691059313  gcc/testsuite/gfortran.dg/coarray/coindexed_1.f90
! f3a5dbd5b18b49f30a47e9c6ddf0ef10  gcc/testsuite/gfortran.dg/coarray/collectives_1.f90
! 57d5669b2d7c4384f4f2cbf7f42c55e5  gcc/testsuite/gfortran.dg/coarray/collectives_2.f90
! 7a0bf8e143e7c4ebaf6f3ce4b0caaef3  gcc/testsuite/gfortran.dg/coarray/collectives_3.f90
! f4aec2f0ed199113d979b69a74d8afa5  gcc/testsuite/gfortran.dg/coarray/collectives_4.f90
! 6254722cb2fb8666108848130a4de4ef  gcc/testsuite/gfortran.dg/coarray/cosubscript_1.f90
  bc2e49396148d7be346be065b8879d1b  gcc/testsuite/gfortran.dg/coarray/data_1.f90
! c1d0b436da831f1ba2bf97a1a37b6eea  gcc/testsuite/gfortran.dg/coarray/dummy_1.f90
! f90f6361d794d8b822e8dbb0cce15e43  gcc/testsuite/gfortran.dg/coarray/event_1.f90
! 5c76c994fc104238808f24409769c109  gcc/testsuite/gfortran.dg/coarray/event_2.f90
  7bdec35df5c34a10372c7a54a6b5ab8f  gcc/testsuite/gfortran.dg/coarray/event_3.f08
  69e67a47c4572bb8954e710fb63e1241  gcc/testsuite/gfortran.dg/coarray/event_4.f08
  d5151e59e2e1e14dc716281be617a2b7  gcc/testsuite/gfortran.dg/coarray/fail_image_1.f08
  f2e0d8eab800c2440470c47e27dbc818  gcc/testsuite/gfortran.dg/coarray/fail_image_2.f08
  550ba8c1ff1a87edf22c84bbaf1b23c8  gcc/testsuite/gfortran.dg/coarray/failed_images_1.f08
  46fd85e4e0f66017776125b64c85dcae  gcc/testsuite/gfortran.dg/coarray/failed_images_2.f08
! 88d10faf7f4df40c6602b0e2d7316de4  gcc/testsuite/gfortran.dg/coarray/get_array.f90
! e3489bfc8266709eba8fcf20caaaa62b  gcc/testsuite/gfortran.dg/coarray/get_to_indexed_array_1.f90
! b7cd4ce2d77c6bd4ba77204cafd677bd  gcc/testsuite/gfortran.dg/coarray/get_to_indirect_array.f90
! c6f860136fe695a933bc71d65019f925  gcc/testsuite/gfortran.dg/coarray/image_index_1.f90
! 733aa7c8343bbc5aaaa63a38f663a43d  gcc/testsuite/gfortran.dg/coarray/image_index_2.f90
! f53ac06d9bda6a69841a8fb389e20622  gcc/testsuite/gfortran.dg/coarray/image_index_3.f90
  68c7f39bcc384d6a12c665b99acc0286  gcc/testsuite/gfortran.dg/coarray/image_status_1.f08
  5b9d9e29d54188b581dc483d442cd2a3  gcc/testsuite/gfortran.dg/coarray/image_status_2.f08
! 39fd5d0aa5cb6030accb3b9880487667  gcc/testsuite/gfortran.dg/coarray/lib_realloc_1.f90
! 80d7d0dcda96c20555328dd0ff1064f8  gcc/testsuite/gfortran.dg/coarray/lock_1.f90
! 06868f26c24bc0b607bb50867f5157ec  gcc/testsuite/gfortran.dg/coarray/lock_2.f90
! 359106b5cc9ca83cd061d945135080c8  gcc/testsuite/gfortran.dg/coarray/move_alloc_1.f90
! 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
  b324389289606e577a87ba1c672a3812  gcc/testsuite/gfortran.dg/coarray/ptr_comp_1.f08
  7f10b2e799cec0c22aaebfa60b26756a  gcc/testsuite/gfortran.dg/coarray/ptr_comp_2.f08
! febcb2298d9879a0df44772e249cb87a  gcc/testsuite/gfortran.dg/coarray/ptr_comp_3.f08
  89fee2c127f49444ff8b90507cb38fba  gcc/testsuite/gfortran.dg/coarray/ptr_comp_4.f08
! 8715742fbc5b4ca8ca6cd4d384da4933  gcc/testsuite/gfortran.dg/coarray/registering_1.f90
! 6ff0066981556cd34c2887256d16c8ac  gcc/testsuite/gfortran.dg/coarray/scalar_alloc_1.f90
! 228af371eab204116a57e2cef13ec783  gcc/testsuite/gfortran.dg/coarray/scalar_alloc_2.f90
! 082fb3d24d8ca582dc6866adc5d40bad  gcc/testsuite/gfortran.dg/coarray/send_array.f90
! 68ade3bf8b261511d0f8228d5fc7103b  gcc/testsuite/gfortran.dg/coarray/send_char_array_1.f90
! 284655b85e1918e14f547da9c373682d  gcc/testsuite/gfortran.dg/coarray/sendget_array.f90
  3e02c7e9c64dcef76ab4fc3f8db928c1  gcc/testsuite/gfortran.dg/coarray/stopped_images_1.f08
  ab6cc384c283380a5b6bdf00c3fbeb30  gcc/testsuite/gfortran.dg/coarray/stopped_images_2.f08
! 7c2291ce8741b3d7e4f420982ab8a504  gcc/testsuite/gfortran.dg/coarray/subobject_1.f90
! e1dcfba76a21d9ab2aa004b9381b0cf7  gcc/testsuite/gfortran.dg/coarray/sync_1.f90
! 82fcf23f3e2e6a5c36448298923969b8  gcc/testsuite/gfortran.dg/coarray/sync_3.f90
! 5822c2d89d9063829c412517b5498373  gcc/testsuite/gfortran.dg/coarray/this_image_1.f90
! ac59a53542ba1c45e3d363202502b8d7  gcc/testsuite/gfortran.dg/coarray/this_image_2.f90
  006a73081fcf3549f75666795a40153d  gcc/testsuite/gfortran.dg/coarray_1.f90
  556050f34b46dd462db787077cccaf59  gcc/testsuite/gfortran.dg/coarray_10.f90
  67aaadc572d2c00aa2d3389f87f0bd5d  gcc/testsuite/gfortran.dg/coarray_11.f90
  7e3b8c86ae974b8e72515cbd7d6243d8  gcc/testsuite/gfortran.dg/coarray_12.f90
! 153a17a1d1205d1ac64bf6bbb965d841  gcc/testsuite/gfortran.dg/coarray_13.f90
  e08486b636a2e274b143c8af55f6777e  gcc/testsuite/gfortran.dg/coarray_14.f90
! 3f13567f9ad391e0016c04e83d62970f  gcc/testsuite/gfortran.dg/coarray_15.f90
! c6a0c1d2cb2a007db6f999e0e1fccf1f  gcc/testsuite/gfortran.dg/coarray_16.f90
  f3811361487b4309fbf46c6f31aefaa2  gcc/testsuite/gfortran.dg/coarray_17.f90
! 717f0ca66afa7ed79d83786031c55906  gcc/testsuite/gfortran.dg/coarray_18.f90
  2b63b6d167021f94a7d5cc9ca81d1951  gcc/testsuite/gfortran.dg/coarray_19.f90
! 19c9d3824a82474ce0933af97c95dabf  gcc/testsuite/gfortran.dg/coarray_2.f90
  885933bf8106d00cac760ae81208b9f2  gcc/testsuite/gfortran.dg/coarray_20.f90
  df49f9b01d72c5086ff78dff85245753  gcc/testsuite/gfortran.dg/coarray_21.f90
  8f7fe44a774eb00a7216d998abe0f380  gcc/testsuite/gfortran.dg/coarray_22.f90
! a957e517d8ef9fba2034fd5b8977a493  gcc/testsuite/gfortran.dg/coarray_23.f90
  b33383bf7ec63573cb66cd355ee88e5a  gcc/testsuite/gfortran.dg/coarray_24.f90
  ccea5fe2d622c1b4b11ac162a1a5ab5d  gcc/testsuite/gfortran.dg/coarray_25.f90
  5fef6472f3bdd94ce9a78ab69162d0ea  gcc/testsuite/gfortran.dg/coarray_26.f90
*************** ce022dd06d4bbcef98eafafee33de6d5  gcc/te
*** 49546,49576 ****
  0e47be18672968c2ac12fce3fa10eccf  gcc/testsuite/gfortran.dg/coarray_38.f90
  ac773563b3252cd5f895af702a441868  gcc/testsuite/gfortran.dg/coarray_39.f90
  ad8ecfdba25ace790b9bfc8e94e0e05f  gcc/testsuite/gfortran.dg/coarray_4.f90
! a0baae37f57b46ddb5f4e90b382dcd9b  gcc/testsuite/gfortran.dg/coarray_40.f90
  cf7cfa2032f638ac67ce56b7d4e08a3d  gcc/testsuite/gfortran.dg/coarray_41.f90
  248d8d9892330b8d193515001f8f85ab  gcc/testsuite/gfortran.dg/coarray_42.f90
  b67430669a5503a2b6f70e534e303644  gcc/testsuite/gfortran.dg/coarray_43.f90
  ef172e1d19584d7e55648b555dbf8fa3  gcc/testsuite/gfortran.dg/coarray_5.f90
  337935b709715398df39ee0eeaaec67b  gcc/testsuite/gfortran.dg/coarray_6.f90
  8cd45380911a9bd61eac7c6b76c8862b  gcc/testsuite/gfortran.dg/coarray_7.f90
! cd9743d87e2443efef86a0f60dacdc41  gcc/testsuite/gfortran.dg/coarray_8.f90
  8050aad4b4793d0de2c06e98903ca98b  gcc/testsuite/gfortran.dg/coarray_9.f90
! 33e90ac4b81b1481bfb534ddfd6b939b  gcc/testsuite/gfortran.dg/coarray_alloc_comp_1.f08
! ae0859f4706c53c70278bf18187aed93  gcc/testsuite/gfortran.dg/coarray_alloc_comp_2.f08
  de6a038b8eedc74e26db5e5afe1cdba6  gcc/testsuite/gfortran.dg/coarray_alloc_comp_3.f08
  04473a5a6b711b07a1e6a87b46039f60  gcc/testsuite/gfortran.dg/coarray_alloc_comp_4.f08
  fd555c460e9a2fe3d73c2849790b7206  gcc/testsuite/gfortran.dg/coarray_alloc_with_implicit_sync_1.f90
  eda6cad3c6c6f004e3137cf3e30aedf1  gcc/testsuite/gfortran.dg/coarray_alloc_with_implicit_sync_2.f90
  964249eae6cd40820f1f28256a0bf3aa  gcc/testsuite/gfortran.dg/coarray_allocate_1.f90
! 7f7ada77f8ccf2a006c41d9c27523532  gcc/testsuite/gfortran.dg/coarray_allocate_10.f08
! 285b5b3c2c36332e70a6fca024996fbd  gcc/testsuite/gfortran.dg/coarray_allocate_2.f08
! 978bd13bbc4b2c95d2299d14606fb122  gcc/testsuite/gfortran.dg/coarray_allocate_3.f08
! d990f539ac9bc71eee9dd4cc02f84412  gcc/testsuite/gfortran.dg/coarray_allocate_4.f08
! 65f3c80cbaecbf860b3be1e3ccd9f72b  gcc/testsuite/gfortran.dg/coarray_allocate_5.f08
  a50602d906d76b4a21f37294673e31af  gcc/testsuite/gfortran.dg/coarray_allocate_6.f08
! 4eb86d2b786b416a3336e29864f2e812  gcc/testsuite/gfortran.dg/coarray_allocate_7.f08
! 12ec552ef2fb90d0035d929f647fbe8e  gcc/testsuite/gfortran.dg/coarray_allocate_8.f08
! bdd14b013a444cf92681e637ad42ac66  gcc/testsuite/gfortran.dg/coarray_allocate_9.f08
  5090aecedde7cbffa29a2966b1367a69  gcc/testsuite/gfortran.dg/coarray_args_1.f90
  f3b8d83af012a8804b15f5016664e973  gcc/testsuite/gfortran.dg/coarray_args_2.f90
  6fbd28360c3bd1d0a34264b8b2690fde  gcc/testsuite/gfortran.dg/coarray_atomic_1.f90
--- 53051,53088 ----
  0e47be18672968c2ac12fce3fa10eccf  gcc/testsuite/gfortran.dg/coarray_38.f90
  ac773563b3252cd5f895af702a441868  gcc/testsuite/gfortran.dg/coarray_39.f90
  ad8ecfdba25ace790b9bfc8e94e0e05f  gcc/testsuite/gfortran.dg/coarray_4.f90
! 74b2d9d67ebf3d7de2732dbd98a273b7  gcc/testsuite/gfortran.dg/coarray_40.f90
  cf7cfa2032f638ac67ce56b7d4e08a3d  gcc/testsuite/gfortran.dg/coarray_41.f90
  248d8d9892330b8d193515001f8f85ab  gcc/testsuite/gfortran.dg/coarray_42.f90
  b67430669a5503a2b6f70e534e303644  gcc/testsuite/gfortran.dg/coarray_43.f90
+ 2986ad0025053cce67b288803cf4087f  gcc/testsuite/gfortran.dg/coarray_44.f90
+ ae84ff8684b83df37cd04c93355bb779  gcc/testsuite/gfortran.dg/coarray_45.f90
+ bdfb211ff859c6346ab45b3805256ba0  gcc/testsuite/gfortran.dg/coarray_46.f90
+ 0196f422e481e5ac5cb151f859805e29  gcc/testsuite/gfortran.dg/coarray_47.f90
  ef172e1d19584d7e55648b555dbf8fa3  gcc/testsuite/gfortran.dg/coarray_5.f90
  337935b709715398df39ee0eeaaec67b  gcc/testsuite/gfortran.dg/coarray_6.f90
  8cd45380911a9bd61eac7c6b76c8862b  gcc/testsuite/gfortran.dg/coarray_7.f90
! 8ee88d8049750d443475d7289d4c08f2  gcc/testsuite/gfortran.dg/coarray_8.f90
  8050aad4b4793d0de2c06e98903ca98b  gcc/testsuite/gfortran.dg/coarray_9.f90
! c6086bb2f74e754b43ef691cf1b6ea3e  gcc/testsuite/gfortran.dg/coarray_alloc_comp_1.f08
! 3ea4f1bb6cd27632f86f990dd870771e  gcc/testsuite/gfortran.dg/coarray_alloc_comp_2.f08
  de6a038b8eedc74e26db5e5afe1cdba6  gcc/testsuite/gfortran.dg/coarray_alloc_comp_3.f08
  04473a5a6b711b07a1e6a87b46039f60  gcc/testsuite/gfortran.dg/coarray_alloc_comp_4.f08
+ 4479f1d27bd27783f1bee1c82742f214  gcc/testsuite/gfortran.dg/coarray_alloc_comp_6.f08
+ 348779956729103b5d6f50b0e4d087c2  gcc/testsuite/gfortran.dg/coarray_alloc_comp_7.f08
+ 2faa0db0bed8f81259c7f2ebf21912a0  gcc/testsuite/gfortran.dg/coarray_alloc_comp_8.f08
  fd555c460e9a2fe3d73c2849790b7206  gcc/testsuite/gfortran.dg/coarray_alloc_with_implicit_sync_1.f90
  eda6cad3c6c6f004e3137cf3e30aedf1  gcc/testsuite/gfortran.dg/coarray_alloc_with_implicit_sync_2.f90
  964249eae6cd40820f1f28256a0bf3aa  gcc/testsuite/gfortran.dg/coarray_allocate_1.f90
! 0224c1e3add89d8da53743943781c0d8  gcc/testsuite/gfortran.dg/coarray_allocate_10.f08
! 8c719d89a1e3531bbdb311dfa763167b  gcc/testsuite/gfortran.dg/coarray_allocate_2.f08
! c2616fae76af07a79e5d72322ffa2b9f  gcc/testsuite/gfortran.dg/coarray_allocate_3.f08
! e63a013eba2d6fe4cbef12573cb14e52  gcc/testsuite/gfortran.dg/coarray_allocate_4.f08
! da65b12e59b7e4e5e809eb0ee6b98e43  gcc/testsuite/gfortran.dg/coarray_allocate_5.f08
  a50602d906d76b4a21f37294673e31af  gcc/testsuite/gfortran.dg/coarray_allocate_6.f08
! c7c2a8716011744890a7811cf4d01f3e  gcc/testsuite/gfortran.dg/coarray_allocate_7.f08
! a1d0bd22c430ddee1c83cad2686e4980  gcc/testsuite/gfortran.dg/coarray_allocate_8.f08
! da900379c7ad3371ef804c985d374b29  gcc/testsuite/gfortran.dg/coarray_allocate_9.f08
  5090aecedde7cbffa29a2966b1367a69  gcc/testsuite/gfortran.dg/coarray_args_1.f90
  f3b8d83af012a8804b15f5016664e973  gcc/testsuite/gfortran.dg/coarray_args_2.f90
  6fbd28360c3bd1d0a34264b8b2690fde  gcc/testsuite/gfortran.dg/coarray_atomic_1.f90
*************** d8b0925104e27edfd7554327aec7e656  gcc/te
*** 49598,49626 ****
  e7f7c38c4530db86c8bf560b1800b017  gcc/testsuite/gfortran.dg/coarray_collectives_9.f90
  967c97a8edd55b3e24d9f53bacf51ab2  gcc/testsuite/gfortran.dg/coarray_critical_1.f90
  ae24a8ba632b111617b5af3d9ec9ed23  gcc/testsuite/gfortran.dg/coarray_event_1.f08
  a863774927689ef296949ebaa242ffb2  gcc/testsuite/gfortran.dg/coarray_fail_st.f90
  3ba815ec354d8e22623cd34e97c404af  gcc/testsuite/gfortran.dg/coarray_failed_images_1.f08
  e4976ca0446d73c3929df8b036747a1b  gcc/testsuite/gfortran.dg/coarray_image_status_1.f08
  cfe684f5b35d41e24c9205e3f305bb02  gcc/testsuite/gfortran.dg/coarray_lib_alloc_1.f90
  9127925813480208932fb9d8668ceff0  gcc/testsuite/gfortran.dg/coarray_lib_alloc_2.f90
  67bd05aeb98a1f66f977d0e67035deac  gcc/testsuite/gfortran.dg/coarray_lib_alloc_3.f90
! d88ff2ab0c2de5894fe654132c28ab51  gcc/testsuite/gfortran.dg/coarray_lib_alloc_4.f90
! 8e31c01a9045465f1ee783ec7168be81  gcc/testsuite/gfortran.dg/coarray_lib_comm_1.f90
  fb3fff2823ee279a3e0c3a44eb7956ab  gcc/testsuite/gfortran.dg/coarray_lib_move_alloc_1.f90
! 8e6320cab0d0a19628f0d163955d0f9a  gcc/testsuite/gfortran.dg/coarray_lib_realloc_1.f90
  86e1c68d070859c3fb832b2183d75771  gcc/testsuite/gfortran.dg/coarray_lib_this_image_1.f90
! 54439b9710fb4d3555a1d536e5128a63  gcc/testsuite/gfortran.dg/coarray_lib_this_image_2.f90
! 21ab4c56d52dddd9407f1ffff6158807  gcc/testsuite/gfortran.dg/coarray_lib_token_1.f90
! 64c1f38bf5b5e61f74abed10d34890f0  gcc/testsuite/gfortran.dg/coarray_lib_token_2.f90
  0e643af8d5f9171f617bab48e7717c78  gcc/testsuite/gfortran.dg/coarray_lib_token_3.f90
! cd5682160f67e9bfdf9f60736adbf4a3  gcc/testsuite/gfortran.dg/coarray_lib_token_4.f90
  2d0699c77682dc9d6a0ceba649b61a15  gcc/testsuite/gfortran.dg/coarray_lock_1.f90
  f7a47ce438683c4f8c5566d174e4525b  gcc/testsuite/gfortran.dg/coarray_lock_2.f90
  bb8d56d19a9b76a2194076b6f5de055f  gcc/testsuite/gfortran.dg/coarray_lock_3.f90
  c132dbfa1738d526e8055c025c1641e0  gcc/testsuite/gfortran.dg/coarray_lock_4.f90
  074eddb0df81baa8fa98afe087fec459  gcc/testsuite/gfortran.dg/coarray_lock_5.f90
  5a1674540bf58193c6febb71d5f4b58b  gcc/testsuite/gfortran.dg/coarray_lock_6.f90
! 10b44fa37903d9e34e858ef9b0fc9218  gcc/testsuite/gfortran.dg/coarray_lock_7.f90
  363f712216477dd98bef29eaa7b022e7  gcc/testsuite/gfortran.dg/coarray_poly_1.f90
  be78a9a8d107997dfb6a26a694e767f6  gcc/testsuite/gfortran.dg/coarray_poly_2.f90
  7c19739bc10d458b120fb0ab4ca4dbf2  gcc/testsuite/gfortran.dg/coarray_poly_3.f90
--- 53110,53139 ----
  e7f7c38c4530db86c8bf560b1800b017  gcc/testsuite/gfortran.dg/coarray_collectives_9.f90
  967c97a8edd55b3e24d9f53bacf51ab2  gcc/testsuite/gfortran.dg/coarray_critical_1.f90
  ae24a8ba632b111617b5af3d9ec9ed23  gcc/testsuite/gfortran.dg/coarray_event_1.f08
+ fbd2090d586a51d16a8ccd3d6c9359e6  gcc/testsuite/gfortran.dg/coarray_event_2.f08
  a863774927689ef296949ebaa242ffb2  gcc/testsuite/gfortran.dg/coarray_fail_st.f90
  3ba815ec354d8e22623cd34e97c404af  gcc/testsuite/gfortran.dg/coarray_failed_images_1.f08
  e4976ca0446d73c3929df8b036747a1b  gcc/testsuite/gfortran.dg/coarray_image_status_1.f08
  cfe684f5b35d41e24c9205e3f305bb02  gcc/testsuite/gfortran.dg/coarray_lib_alloc_1.f90
  9127925813480208932fb9d8668ceff0  gcc/testsuite/gfortran.dg/coarray_lib_alloc_2.f90
  67bd05aeb98a1f66f977d0e67035deac  gcc/testsuite/gfortran.dg/coarray_lib_alloc_3.f90
! ba5c61a5e57ac99ac998f20ae677d722  gcc/testsuite/gfortran.dg/coarray_lib_alloc_4.f90
! 3d0274e2642d1bbe1af6a072fc5a6046  gcc/testsuite/gfortran.dg/coarray_lib_comm_1.f90
  fb3fff2823ee279a3e0c3a44eb7956ab  gcc/testsuite/gfortran.dg/coarray_lib_move_alloc_1.f90
! b2e83f0dafb1ceb02152eeb61a07f460  gcc/testsuite/gfortran.dg/coarray_lib_realloc_1.f90
  86e1c68d070859c3fb832b2183d75771  gcc/testsuite/gfortran.dg/coarray_lib_this_image_1.f90
! 50afb3316769bf31ed08b1cef60cdc84  gcc/testsuite/gfortran.dg/coarray_lib_this_image_2.f90
! 357b9e5f07c1acadbad5d6aba8104feb  gcc/testsuite/gfortran.dg/coarray_lib_token_1.f90
! 29ddc6fc8819d6192a801e29730124b2  gcc/testsuite/gfortran.dg/coarray_lib_token_2.f90
  0e643af8d5f9171f617bab48e7717c78  gcc/testsuite/gfortran.dg/coarray_lib_token_3.f90
! 61e12b437eeaa3bad13cc520039e5d8a  gcc/testsuite/gfortran.dg/coarray_lib_token_4.f90
  2d0699c77682dc9d6a0ceba649b61a15  gcc/testsuite/gfortran.dg/coarray_lock_1.f90
  f7a47ce438683c4f8c5566d174e4525b  gcc/testsuite/gfortran.dg/coarray_lock_2.f90
  bb8d56d19a9b76a2194076b6f5de055f  gcc/testsuite/gfortran.dg/coarray_lock_3.f90
  c132dbfa1738d526e8055c025c1641e0  gcc/testsuite/gfortran.dg/coarray_lock_4.f90
  074eddb0df81baa8fa98afe087fec459  gcc/testsuite/gfortran.dg/coarray_lock_5.f90
  5a1674540bf58193c6febb71d5f4b58b  gcc/testsuite/gfortran.dg/coarray_lock_6.f90
! 693dd0db1db8265c1383717aaa5dd88a  gcc/testsuite/gfortran.dg/coarray_lock_7.f90
  363f712216477dd98bef29eaa7b022e7  gcc/testsuite/gfortran.dg/coarray_poly_1.f90
  be78a9a8d107997dfb6a26a694e767f6  gcc/testsuite/gfortran.dg/coarray_poly_2.f90
  7c19739bc10d458b120fb0ab4ca4dbf2  gcc/testsuite/gfortran.dg/coarray_poly_3.f90
*************** c36ce428dcaec854709426fbefc380b0  gcc/te
*** 49629,49655 ****
  ae191d945f94558bf67bd86a9035dc26  gcc/testsuite/gfortran.dg/coarray_poly_6.f90
  5e2ee8605be13759d0fb3c20d655c64c  gcc/testsuite/gfortran.dg/coarray_poly_7.f90
  fc7ba8781070ef3c0da1ee4929b801e4  gcc/testsuite/gfortran.dg/coarray_poly_8.f90
! b7f18923e087d40cd6cfedaa44a2024d  gcc/testsuite/gfortran.dg/coarray_ptr_comp_1.f08
! 6506c1d098e3222ebdff6c81cb809355  gcc/testsuite/gfortran.dg/coarray_ptr_comp_2.f08
  dd830c7ec7cea0f5ab7dbd19f76c38cb  gcc/testsuite/gfortran.dg/coarray_ptr_comp_3.f08
! e67cd383e989120b5ba72e3df8c2ebb2  gcc/testsuite/gfortran.dg/coarray_send_by_ref_1.f08
! 89a1cc9f86503d09ac417727dfe21a35  gcc/testsuite/gfortran.dg/coarray_stat_2.f90
  087a3be095c98ee4bda36068c99224d4  gcc/testsuite/gfortran.dg/coarray_stat_function.f90
  77f1bd831abf2ff29f84109d3f3bab3b  gcc/testsuite/gfortran.dg/coarray_stat_whitespace.f90
  7e0ae006a51c482281b3ce9e41151630  gcc/testsuite/gfortran.dg/coarray_stopped_images_1.f08
! 5b54ca684c74aac719329406c34cd183  gcc/testsuite/gfortran.dg/coarray_subobject_1.f90
  87ae412e381a4c934bbbd6a7549adb39  gcc/testsuite/gfortran.dg/coarray_sync_memory.f90
  658e444e52b22ea496105ef9bc744b46  gcc/testsuite/gfortran.dg/coarray_this_image_1.f90
  df6beb93b53ebd5769af2eb7ec60add0  gcc/testsuite/gfortran.dg/coarray_this_image_2.f90
! 8c3ee69bcf179351c88607cb172e8a9d  gcc/testsuite/gfortran.dg/coindexed_1.f90
  f921a7c5a0e4098dd6b6edf4e317a4e1  gcc/testsuite/gfortran.dg/com_block_driver.f90
! 2595b7b0d8e86ae62cf503bd5080ee45  gcc/testsuite/gfortran.dg/comma.f
  ca9b384b7523fa630f1d4edff3cd4267  gcc/testsuite/gfortran.dg/comma_IO_extension_1.f90
  7b4fe3be18cf5d3e2bcac0b98a2191d6  gcc/testsuite/gfortran.dg/comma_IO_extension_2.f90
  b68510025102f4e42c5ab3a0ebf1b5aa  gcc/testsuite/gfortran.dg/comma_format_extension_1.f
  e9f174aaa655ec093b7c3dc075581e89  gcc/testsuite/gfortran.dg/comma_format_extension_2.f
! e38edb0e607a003fddf67b7597b40626  gcc/testsuite/gfortran.dg/comma_format_extension_3.f
! 98ccfd52a304ae6f57a2247d77115f41  gcc/testsuite/gfortran.dg/comma_format_extension_4.f
  ad56b8ccf93a09af1f57171e13ba7a6a  gcc/testsuite/gfortran.dg/common_1.f90
  e9483e1a9611925f796174b3be2bff6e  gcc/testsuite/gfortran.dg/common_10.f90
  d519ae8dfb3045e80bc57c7c107eb06c  gcc/testsuite/gfortran.dg/common_11.f90
--- 53142,53168 ----
  ae191d945f94558bf67bd86a9035dc26  gcc/testsuite/gfortran.dg/coarray_poly_6.f90
  5e2ee8605be13759d0fb3c20d655c64c  gcc/testsuite/gfortran.dg/coarray_poly_7.f90
  fc7ba8781070ef3c0da1ee4929b801e4  gcc/testsuite/gfortran.dg/coarray_poly_8.f90
! ec4bb6022b07b7f8cb9cc0cbc6b36d3f  gcc/testsuite/gfortran.dg/coarray_ptr_comp_1.f08
! 7653a4686829bd63b9b7a535c8b7c035  gcc/testsuite/gfortran.dg/coarray_ptr_comp_2.f08
  dd830c7ec7cea0f5ab7dbd19f76c38cb  gcc/testsuite/gfortran.dg/coarray_ptr_comp_3.f08
! 912bc1f4886cfe09232f3684fc1e4084  gcc/testsuite/gfortran.dg/coarray_send_by_ref_1.f08
! c15a01f85f0059696c3135040a4f2fc3  gcc/testsuite/gfortran.dg/coarray_stat_2.f90
  087a3be095c98ee4bda36068c99224d4  gcc/testsuite/gfortran.dg/coarray_stat_function.f90
  77f1bd831abf2ff29f84109d3f3bab3b  gcc/testsuite/gfortran.dg/coarray_stat_whitespace.f90
  7e0ae006a51c482281b3ce9e41151630  gcc/testsuite/gfortran.dg/coarray_stopped_images_1.f08
! 02137ab63da8c69fd9162c7b4a473d96  gcc/testsuite/gfortran.dg/coarray_subobject_1.f90
  87ae412e381a4c934bbbd6a7549adb39  gcc/testsuite/gfortran.dg/coarray_sync_memory.f90
  658e444e52b22ea496105ef9bc744b46  gcc/testsuite/gfortran.dg/coarray_this_image_1.f90
  df6beb93b53ebd5769af2eb7ec60add0  gcc/testsuite/gfortran.dg/coarray_this_image_2.f90
! ff3b26c2d8addd32975c0a4975b95c1c  gcc/testsuite/gfortran.dg/coindexed_1.f90
  f921a7c5a0e4098dd6b6edf4e317a4e1  gcc/testsuite/gfortran.dg/com_block_driver.f90
! 082efd8f928b26368f7bd7dc47edc279  gcc/testsuite/gfortran.dg/comma.f
  ca9b384b7523fa630f1d4edff3cd4267  gcc/testsuite/gfortran.dg/comma_IO_extension_1.f90
  7b4fe3be18cf5d3e2bcac0b98a2191d6  gcc/testsuite/gfortran.dg/comma_IO_extension_2.f90
  b68510025102f4e42c5ab3a0ebf1b5aa  gcc/testsuite/gfortran.dg/comma_format_extension_1.f
  e9f174aaa655ec093b7c3dc075581e89  gcc/testsuite/gfortran.dg/comma_format_extension_2.f
! cc4fd56c375338d8c90f15498b4ab793  gcc/testsuite/gfortran.dg/comma_format_extension_3.f
! 3163b0c9d7dcb20867826fb6ce1259b6  gcc/testsuite/gfortran.dg/comma_format_extension_4.f
  ad56b8ccf93a09af1f57171e13ba7a6a  gcc/testsuite/gfortran.dg/common_1.f90
  e9483e1a9611925f796174b3be2bff6e  gcc/testsuite/gfortran.dg/common_10.f90
  d519ae8dfb3045e80bc57c7c107eb06c  gcc/testsuite/gfortran.dg/common_11.f90
*************** af48ab22b7ab737b6bda79506c549444  gcc/te
*** 49661,49928 ****
  06a362c99e9e68bae02db528f69b449a  gcc/testsuite/gfortran.dg/common_17.f90
  1dabded3ebc55aef714dcb54e4ba035c  gcc/testsuite/gfortran.dg/common_18.f90
  089692456b49d761a35992663e4bbb71  gcc/testsuite/gfortran.dg/common_19.f90
! 1a3f0a95a819503c9a7f4ee394db0fae  gcc/testsuite/gfortran.dg/common_2.f90
  12fec303851959d537303ad2bba9aa02  gcc/testsuite/gfortran.dg/common_20.f90
  19d12ed2a13126b3a920f744ce92b00c  gcc/testsuite/gfortran.dg/common_21.f90
  f1da6751bbd1a6186b7f03b7f7e77113  gcc/testsuite/gfortran.dg/common_22.f90
  06e2065883402fa9fd2aeb3912ca2fb7  gcc/testsuite/gfortran.dg/common_23.f90
  d3d62d1603bee1c8f8a03953e6eebba0  gcc/testsuite/gfortran.dg/common_24.f
  d5539b20ee7c35bfc0fcb236052a68ea  gcc/testsuite/gfortran.dg/common_25.f90
! c2a0876dd85c6ece5d309ef2cf58c533  gcc/testsuite/gfortran.dg/common_3.f90
! 92c11ac3992f23a38197e7f8043b96a0  gcc/testsuite/gfortran.dg/common_4.f90
  d2308c0b53d688aae1dcd0e309cb63c2  gcc/testsuite/gfortran.dg/common_5.f
  efd711390e553828ec90bbbf4d5fdcf6  gcc/testsuite/gfortran.dg/common_6.f90
  054cf620f6d51cebdfc5a52741618b82  gcc/testsuite/gfortran.dg/common_7.f90
  fdee583e00d96e902af808b9912f7183  gcc/testsuite/gfortran.dg/common_8.f90
  5fd3a22b21c4eda7c4b414322233a9a2  gcc/testsuite/gfortran.dg/common_9.f90
! 7fc1fe1bd25ec63f216fdd0fc7444400  gcc/testsuite/gfortran.dg/common_align_1.f90
! 53b060797ca5d4e747668fd35e62690c  gcc/testsuite/gfortran.dg/common_align_2.f90
! c2a62eaad6d91833a21f583e497677ce  gcc/testsuite/gfortran.dg/common_equivalence_1.f
  978219b964916ad90c1c856565c5cd03  gcc/testsuite/gfortran.dg/common_equivalence_2.f
  7a04e00a061694524e6a58fb9d90aff0  gcc/testsuite/gfortran.dg/common_equivalence_3.f
  9c85cd23ac5fff822b8aa40ea9eea929  gcc/testsuite/gfortran.dg/common_errors_1.f90
! 1a863b860aa1c3085939d9de58db3424  gcc/testsuite/gfortran.dg/common_pointer_1.f90
! 4414f756f91f07406f878fc8e76de2f3  gcc/testsuite/gfortran.dg/common_resize_1.f
  8901ea0d542b37025e06a070d4f9f6a6  gcc/testsuite/gfortran.dg/compiler-directive_1.f90
  5fcb72595e9b6b0307b878501d384720  gcc/testsuite/gfortran.dg/compiler-directive_2.f
  cfd54d23052dc6b16ad17bcf76406ff1  gcc/testsuite/gfortran.dg/complex_int_1.f90
! de1b5d5dc97f6005532533e028a29670  gcc/testsuite/gfortran.dg/complex_intrinsic_1.f90
  7c823bfc6fe5a1777f3e40fc0e756cd0  gcc/testsuite/gfortran.dg/complex_intrinsic_2.f90
! 64eeee2b2c3107527c5ffe552a2c3aff  gcc/testsuite/gfortran.dg/complex_intrinsic_3.f90
  c312ba22ca873c6ebd86b882af92d0b1  gcc/testsuite/gfortran.dg/complex_intrinsic_4.f90
! fc4bb6d1cafe3ebaf81c2f202c9a28c3  gcc/testsuite/gfortran.dg/complex_intrinsic_5.f90
  0024de6d7c6edf9954d07b73b07348a3  gcc/testsuite/gfortran.dg/complex_intrinsic_6.f90
! 15ae13c06f6bdf12197cbd811b0df78b  gcc/testsuite/gfortran.dg/complex_intrinsic_7.f90
  990346e7e1216ca50431033a5ee16b5d  gcc/testsuite/gfortran.dg/complex_intrinsic_8.f90
  de38f54398a61c2c6a449996c42e911f  gcc/testsuite/gfortran.dg/complex_parameter_1.f90
! a907f56ff5fbcb365ee5b99c2e5d87ca  gcc/testsuite/gfortran.dg/complex_read.f90
! d7579b8d3e86545a00a17e2f17b2b860  gcc/testsuite/gfortran.dg/complex_write.f90
  b9804b4b0a71d39afd82b778f0536a3e  gcc/testsuite/gfortran.dg/compliant_elemental_intrinsics_1.f90
  d57b192629fc2adfa507680ea3f866e8  gcc/testsuite/gfortran.dg/compliant_elemental_intrinsics_2.f90
  b2591a1967b937b0841fc5fb3f73d5ce  gcc/testsuite/gfortran.dg/conflicts.f90
  64f1ee1dbe6f1744d125233e48c831fa  gcc/testsuite/gfortran.dg/conflicts_2.f90
! 9c8fa5f2f155ce74f6167719d3fb9e1f  gcc/testsuite/gfortran.dg/constant_shape.f90
! fc2c9ce66c34cedb05c7fc4d41cb66ef  gcc/testsuite/gfortran.dg/constant_substring.f
  407db943d891796588cfa3a7f6a60084  gcc/testsuite/gfortran.dg/constructor_1.f90
! 0d887c40896aed88a9d30cdc998a021e  gcc/testsuite/gfortran.dg/constructor_2.f90
! 03be93e6eb59902bba09c96fe465d532  gcc/testsuite/gfortran.dg/constructor_3.f90
  9a0048d909e1867ac9a1b5a534413466  gcc/testsuite/gfortran.dg/constructor_4.f90
  619768fd793694132e5c28e25786baaa  gcc/testsuite/gfortran.dg/constructor_5.f90
! 7e10a175b99ade82933e15c4963326de  gcc/testsuite/gfortran.dg/constructor_6.f90
  56b724accc20820757e0cf32dec06d6d  gcc/testsuite/gfortran.dg/constructor_7.f90
  8beaf054e69adb46d0eb3735e8ee9014  gcc/testsuite/gfortran.dg/constructor_8.f90
! 22f819c932645c45520e6ca87cb08bd7  gcc/testsuite/gfortran.dg/constructor_9.f90
! c726108aa1cbfbc0c1b801b6ba5ab484  gcc/testsuite/gfortran.dg/contained_1.f90
! 556af1b29302148741811577d3a8de25  gcc/testsuite/gfortran.dg/contained_3.f90
! 28bf1a74da5c8d8e9638411e2d180e30  gcc/testsuite/gfortran.dg/contained_equivalence_1.f90
! 2fd63b9af31a9865475a4c70078e7ecd  gcc/testsuite/gfortran.dg/contained_module_proc_1.f90
  5ef57c417e62facddfc178a3d99c781e  gcc/testsuite/gfortran.dg/contains.f90
  b3bd24f0c174a1694bc02107df47994b  gcc/testsuite/gfortran.dg/contains_empty_1.f03
  9b58c072c6e2ec7e5710c4d2b243f04a  gcc/testsuite/gfortran.dg/contains_empty_2.f03
  15d395123762efd5ca05e607a91f1572  gcc/testsuite/gfortran.dg/contiguous_1.f90
  9975df3f787a3eaea63dd5664ff235eb  gcc/testsuite/gfortran.dg/contiguous_2.f90
  4e6553417634a09cb0af43204aa204c3  gcc/testsuite/gfortran.dg/contiguous_3.f90
! 5d479475bf7572f10fb12f02d81e1f4e  gcc/testsuite/gfortran.dg/continuation_1.f90
  3c614c06c041b57a9bfb2da993bb9cf5  gcc/testsuite/gfortran.dg/continuation_10.f90
! cbc8eb8291d2d84353fd20ba26b98633  gcc/testsuite/gfortran.dg/continuation_11.f90
! 920d8879b7f7225f40b117664e025958  gcc/testsuite/gfortran.dg/continuation_12.f90
! 7a0f2ec25a690c7b5eed654d0149d368  gcc/testsuite/gfortran.dg/continuation_13.f90
! f261d43936bff6064733f9e74613629d  gcc/testsuite/gfortran.dg/continuation_14.f
  49739f5cf7585f44f02462b166a5f926  gcc/testsuite/gfortran.dg/continuation_2.f90
  a173a721e029bdc0b90a673b0904b8d6  gcc/testsuite/gfortran.dg/continuation_3.f90
  7ec20aeb68f3228eeccb78e6acbb62b7  gcc/testsuite/gfortran.dg/continuation_4.f90
  97fd3920e3bcbfb1f92a0cc46d66f1b0  gcc/testsuite/gfortran.dg/continuation_5.f
  1656140b0635b7a2f10251969334f48c  gcc/testsuite/gfortran.dg/continuation_6.f
  1eecf61741a3663c2efb087d8f798246  gcc/testsuite/gfortran.dg/continuation_7.f90
! cf819df0f006d043a8659177d1574456  gcc/testsuite/gfortran.dg/continuation_8.f90
  877cc876f2799692e91bc959b2bc7c68  gcc/testsuite/gfortran.dg/continuation_9.f90
  3e6601d715c346714d5942c158ecc96f  gcc/testsuite/gfortran.dg/convert_1.f90
! 90e49f402d4f552a68e32f637bcfce28  gcc/testsuite/gfortran.dg/convert_2.f90
! 9cb8dadc408fa799a47a33b540893529  gcc/testsuite/gfortran.dg/convert_implied_open.f90
! aa9b2006005e6ab72526a2495276d14d  gcc/testsuite/gfortran.dg/count_init_expr.f03
  f8a4ca21ccf302214564ec0d59e8fd51  gcc/testsuite/gfortran.dg/count_mask_1.f90
! 0f69fed692c7480664d7891f27db0443  gcc/testsuite/gfortran.dg/cr_lf.f90
  33604a92da75a7b5ee0f958ab81b1328  gcc/testsuite/gfortran.dg/cray_pointers_1.f90
! 1d44af9bd997323c65ffc1ac7e394957  gcc/testsuite/gfortran.dg/cray_pointers_10.f90
  74dd2b09e2326c23ec50a90bf151d3b9  gcc/testsuite/gfortran.dg/cray_pointers_11.f90
! 9b498b2d4cff83ed58620c1998f47f87  gcc/testsuite/gfortran.dg/cray_pointers_2.f90
  49ea5999b0fbbd860fa0b8b1e6a01397  gcc/testsuite/gfortran.dg/cray_pointers_3.f90
  c00f3a9d2f365b0dab03e2415fabbc16  gcc/testsuite/gfortran.dg/cray_pointers_4.f90
! 985ed487b1fd75c4094127537afaacd7  gcc/testsuite/gfortran.dg/cray_pointers_5.f90
  0d094557c6c49c80b76513914e5bf9a5  gcc/testsuite/gfortran.dg/cray_pointers_6.f90
! 8461fa7e6d9ee75ce836ebfceab02122  gcc/testsuite/gfortran.dg/cray_pointers_7.f90
! b57fe3f9d368a31bfe0a475cc6d31c09  gcc/testsuite/gfortran.dg/cray_pointers_8.f90
  114897796165566d95d9ba8d4a407e34  gcc/testsuite/gfortran.dg/cray_pointers_9.f90
  df10550af9bfee62312dc75d7ef2b5e7  gcc/testsuite/gfortran.dg/cshift_bounds_1.f90
  f583596821f17c2f5db8bd7c26c596b3  gcc/testsuite/gfortran.dg/cshift_bounds_2.f90
  4566b7e9dacf21af84f1f5c78713999c  gcc/testsuite/gfortran.dg/cshift_bounds_3.f90
  ee8b9bf264074de495a143392e4e1bf1  gcc/testsuite/gfortran.dg/cshift_bounds_4.f90
! 03564bfd5215ae775d968f8578cd58a1  gcc/testsuite/gfortran.dg/cshift_large_1.f90
! 56f1c59c8b391f816fc871c61b938c63  gcc/testsuite/gfortran.dg/cshift_nan_1.f90
  5e271c0c08fb2052cfb5703e481b7910  gcc/testsuite/gfortran.dg/cshift_shift_real_1.f90
  6386c6eb72012a216a14486c6b01cf25  gcc/testsuite/gfortran.dg/cshift_shift_real_2.f90
! cedd396c7a2423c117e67b26dae02f03  gcc/testsuite/gfortran.dg/csqrt_2.f
  6471aea295a020f644e93de1eb60c2a7  gcc/testsuite/gfortran.dg/ctrl-z.f90
  83532a23dfd59d84167330d06154c78b  gcc/testsuite/gfortran.dg/d_lines_1.f
  1a302a979ad4a0b3fcc309e0ba686fd6  gcc/testsuite/gfortran.dg/d_lines_2.f
  987f880150c0dbd1e6567b250ddb9842  gcc/testsuite/gfortran.dg/d_lines_3.f
  b494fac3983a388281d078b0757553e5  gcc/testsuite/gfortran.dg/d_lines_4.f
  ad1671c9a89b0639af833c746c8e6caf  gcc/testsuite/gfortran.dg/d_lines_5.f
! b7d89e8d12585a9f475b54ab7958bccd  gcc/testsuite/gfortran.dg/data_array_1.f90
  910886a0b00b95c0be918b92f3e80374  gcc/testsuite/gfortran.dg/data_array_2.f90
  0c23cb38de53b31d72539467084c3487  gcc/testsuite/gfortran.dg/data_array_3.f90
  ba80841da4b4a0e5982fbcf93b136bfc  gcc/testsuite/gfortran.dg/data_array_4.f90
  898b470ca20458dcd409748bb5ce3481  gcc/testsuite/gfortran.dg/data_array_5.f90
  76386a9e40ac13aed9db89cefaa67ba5  gcc/testsuite/gfortran.dg/data_array_6.f
  b4aba9c1942c276db0411d7beeaa71e8  gcc/testsuite/gfortran.dg/data_bounds_1.f90
! 7cee9fc4a4bf87f25e5132f7ac497ffb  gcc/testsuite/gfortran.dg/data_char_1.f90
! 2f85629e7226a9fa811d9ce79e5f6730  gcc/testsuite/gfortran.dg/data_char_2.f90
! a1227914cb43a159c0a0621b4ad71144  gcc/testsuite/gfortran.dg/data_char_3.f90
  43b77886b68f7c4f9a354c43d800dbcf  gcc/testsuite/gfortran.dg/data_components_1.f90
  5810d819d200905a36ae8cb98ed752bc  gcc/testsuite/gfortran.dg/data_constraints_1.f90
  3ece70a5bb9b24671d4c8179edf9b97a  gcc/testsuite/gfortran.dg/data_constraints_2.f90
  231ca920a35ba7b483bc1c958d857bf5  gcc/testsuite/gfortran.dg/data_constraints_3.f90
! 88c3eff0ce67fac558bd8e99011afc63  gcc/testsuite/gfortran.dg/data_implied_do_1.f90
  433440f2bc7400a428ec319b70a4c7c4  gcc/testsuite/gfortran.dg/data_initialized.f90
  f7e6506db3e2a2cf1acda6f7ed5bb367  gcc/testsuite/gfortran.dg/data_initialized_2.f90
  7c629d12ce2ea9831030b62a2361a453  gcc/testsuite/gfortran.dg/data_initialized_3.f90
  933976674d89973b726184d45668d1af  gcc/testsuite/gfortran.dg/data_invalid.f90
! 5d5172533259b8e20dca6557e26c18a0  gcc/testsuite/gfortran.dg/data_namelist_conflict.f90
  bca7e4fe42af4bdc8c5dce540cb962e5  gcc/testsuite/gfortran.dg/data_pointer_1.f90
  503918b2128c29daa249b849ffe01756  gcc/testsuite/gfortran.dg/data_value_1.f90
  10f0c8adce060dc0f3e77c644f08c68b  gcc/testsuite/gfortran.dg/deallocate_alloc_opt_1.f90
  079ebbd99b715d218c0619d77fffa7f4  gcc/testsuite/gfortran.dg/deallocate_alloc_opt_2.f90
! 1f4b25a7361bcab591c1e3f9dd109880  gcc/testsuite/gfortran.dg/deallocate_alloc_opt_3.f90
  bed6e5db54bbf80cf32d9482e2a1f7e4  gcc/testsuite/gfortran.dg/deallocate_error_1.f90
  adf3e611b5d9dd41324a93faee4fe2c9  gcc/testsuite/gfortran.dg/deallocate_error_2.f90
! 2b25720bbab3dd5097001c5ca8a09002  gcc/testsuite/gfortran.dg/deallocate_stat.f90
! e62cb07af37a3023dea48cda7bae2544  gcc/testsuite/gfortran.dg/deallocate_stat_2.f90
! 1f6d173ba353df6282857ed63520cb21  gcc/testsuite/gfortran.dg/debug/debug.exp
  c8fe955f02d446b949b45194c7d29caf  gcc/testsuite/gfortran.dg/debug/pr35154-dwarf2.f
! 2eac2116b9d52581b9b5d185acecd1e2  gcc/testsuite/gfortran.dg/debug/pr35154-stabs.f
! 67306648e7f17b3880c7c867fad9e0c9  gcc/testsuite/gfortran.dg/debug/pr37738.f
  788a70497a0a2ddba0abf97330a47c01  gcc/testsuite/gfortran.dg/debug/pr43166.f
  f49bca9d2dccbedebe34c595e7e099d0  gcc/testsuite/gfortran.dg/debug/pr46756.f
  311f4c5de7848479e7c29ad08de71190  gcc/testsuite/gfortran.dg/debug/trivial.f
  431530310efb9ec01e397a4a411f8e67  gcc/testsuite/gfortran.dg/debug_1.f90
  f12fc8f8c675ad90dacda21c47b123cf  gcc/testsuite/gfortran.dg/debug_2.f
! e432cf66a57dae444ad00828ac6ea04a  gcc/testsuite/gfortran.dg/dec_bitwise_ops_1.f90
! 0a96d9a9b2b775e85deaf16153f7a7c8  gcc/testsuite/gfortran.dg/dec_bitwise_ops_2.f90
! a75951962a21c63c916a767e729c4e0f  gcc/testsuite/gfortran.dg/dec_exp_1.f90
  024c931122e2929630f9e3a5b4456937  gcc/testsuite/gfortran.dg/dec_exp_2.f90
  0d5cdb7963da6a935155bd9af7c61a1d  gcc/testsuite/gfortran.dg/dec_exp_3.f90
! 76dd68cf7cc9135e26f023c64aaf8b56  gcc/testsuite/gfortran.dg/dec_init_1.f90
! e12c0c1eae24bdfc96a18ed477d59e7d  gcc/testsuite/gfortran.dg/dec_init_2.f90
! ade29b1d64d736e0106c5464ccbe2df4  gcc/testsuite/gfortran.dg/dec_init_3.f90
! 3d382143519ebb540e3da466a7541abf  gcc/testsuite/gfortran.dg/dec_init_4.f90
  103d5b5fb3d0b17bc2b6c54766f7cd11  gcc/testsuite/gfortran.dg/dec_intrinsic_ints.f90
! 314ed0ac3e87944ea20c6569209776b3  gcc/testsuite/gfortran.dg/dec_io_1.f90
! f32ad08a02b92f28b5033f6ba186eb06  gcc/testsuite/gfortran.dg/dec_io_2.f90
! 2d840e7e0b917ada7c6b73af7215912e  gcc/testsuite/gfortran.dg/dec_io_2a.f90
  2281acfc72ee0e66cf6996a4d82e9093  gcc/testsuite/gfortran.dg/dec_io_3.f90
  2ada96ce37351248ef56546938578256  gcc/testsuite/gfortran.dg/dec_io_4.f90
  9c6a351303b4ec280db9d0ed7e860548  gcc/testsuite/gfortran.dg/dec_io_5.f90
! 5a8d5f1b2d30ed3ccf488e27e832ca66  gcc/testsuite/gfortran.dg/dec_io_6.f90
! 2800d477c66e955e1df1d8f7510d1059  gcc/testsuite/gfortran.dg/dec_loc_rval_1.f90
  2dc0f6c955198cc4bcd26f99b59a4bf2  gcc/testsuite/gfortran.dg/dec_loc_rval_2.f90
  0229d0bdec4feb0e938443f65c9b0f56  gcc/testsuite/gfortran.dg/dec_loc_rval_3.f03
! 50c897153afa4238274cbe7ad38ff977  gcc/testsuite/gfortran.dg/dec_logical_xor_1.f90
  519c3622603d8bdfcdd819606ab71a39  gcc/testsuite/gfortran.dg/dec_logical_xor_2.f90
  7634f260da3c6ee6123a7feaf3e1ab68  gcc/testsuite/gfortran.dg/dec_logical_xor_3.f03
! fb60e7442033f45f458bd0789a2ce5f4  gcc/testsuite/gfortran.dg/dec_math.f90
! 5e0b3d3fa1ada1bb42e175338e87caa8  gcc/testsuite/gfortran.dg/dec_parameter_1.f
! 5a5eb1ec87835f8e77414939fb96a635  gcc/testsuite/gfortran.dg/dec_parameter_2.f90
  fda7b33d4e9546e000649a147e272b6b  gcc/testsuite/gfortran.dg/dec_parameter_3.f90
  b5027dd480b5ebe7e0147828f05aed61  gcc/testsuite/gfortran.dg/dec_parameter_4.f90
! 640600acbf9052225ff291f1cb90596d  gcc/testsuite/gfortran.dg/dec_static_1.f90
! 8950eef6c9d1c7cf0a1744940ac09837  gcc/testsuite/gfortran.dg/dec_static_2.f90
  8b9914356cbe37424443f1aabb020d62  gcc/testsuite/gfortran.dg/dec_static_3.f90
  778cefd9d555f940a3e22cc6b12de783  gcc/testsuite/gfortran.dg/dec_static_4.f90
! 299b547bcb6b486a2e1f3e6ff0e387b8  gcc/testsuite/gfortran.dg/dec_structure_1.f90
! facc0d311d19c38571f70f8db13044bc  gcc/testsuite/gfortran.dg/dec_structure_10.f90
  bebb7b5cba927374343e4d102d6bdef2  gcc/testsuite/gfortran.dg/dec_structure_11.f90
  c7371f966fa8fe05eb7f3540fda3af92  gcc/testsuite/gfortran.dg/dec_structure_12.f90
  f49f855af4f970d26d54c898d689cf45  gcc/testsuite/gfortran.dg/dec_structure_13.f90
  5420066ea47f8652a0c02abc68b7c185  gcc/testsuite/gfortran.dg/dec_structure_14.f90
! a72e275582cc00af9666fcd65f11856b  gcc/testsuite/gfortran.dg/dec_structure_15.f90
  0c2deddf183b1829738b6c015b933f07  gcc/testsuite/gfortran.dg/dec_structure_16.f90
  6609d701473c6ac18cb7eaf33f217448  gcc/testsuite/gfortran.dg/dec_structure_17.f90
! c065ec9eab467c19e2503ea2b5ec35f6  gcc/testsuite/gfortran.dg/dec_structure_2.f90
! 17d1e3238da3930c57838b7f1d610c40  gcc/testsuite/gfortran.dg/dec_structure_3.f90
! 17bdec7f0e2ee1d7fce0b23ebd82610a  gcc/testsuite/gfortran.dg/dec_structure_4.f90
! e60b5448cb28834a5043d778f28b0029  gcc/testsuite/gfortran.dg/dec_structure_5.f90
! 5276660c4588b2f9922aacd54e303a2d  gcc/testsuite/gfortran.dg/dec_structure_6.f90
! b7df816a5764cf98d0af9a21fc087015  gcc/testsuite/gfortran.dg/dec_structure_7.f90
  a3842131746a182a4d0d806a0ead8cf9  gcc/testsuite/gfortran.dg/dec_structure_8.f90
  ba7bd70d8f9beaa28febfa1d800b3cf7  gcc/testsuite/gfortran.dg/dec_structure_9.f90
  cad42db351ade11e383560c34e3e978b  gcc/testsuite/gfortran.dg/dec_type_print.f90
! 13560c998f2fbbcc2fd45b4777d0e4c9  gcc/testsuite/gfortran.dg/dec_union_1.f90
  54fa8897424354fe36b1147275b1b014  gcc/testsuite/gfortran.dg/dec_union_10.f90
  10c14f289f146d801c8860e6ec73a8f8  gcc/testsuite/gfortran.dg/dec_union_11.f90
! 069da68835dead9331318c2f9a653aec  gcc/testsuite/gfortran.dg/dec_union_2.f90
! 83928614f196067ade7992b31468aef9  gcc/testsuite/gfortran.dg/dec_union_3.f90
! 0557177e9e8702f52b8f249aa7941985  gcc/testsuite/gfortran.dg/dec_union_4.f90
! 3f6b8d2969f783d7204a320cf8b95cd2  gcc/testsuite/gfortran.dg/dec_union_5.f90
  ac7e4f8e406a6c26533909c71fa6b3fd  gcc/testsuite/gfortran.dg/dec_union_6.f90
  3bf903f4b6b040909bf42cbcf85d3330  gcc/testsuite/gfortran.dg/dec_union_7.f90
  21bd8b9bc74bb0c85792a956a6bd1aad  gcc/testsuite/gfortran.dg/dec_union_8.f90
  ad49d41a6e763bbfd0eae1190d0fc6fe  gcc/testsuite/gfortran.dg/dec_union_9.f90
! 24aa7ef3c5125fd57a6bf5b0d5a11a5f  gcc/testsuite/gfortran.dg/default_format_1.f90
  42dc43ca59716a600a5d47ef02504fc7  gcc/testsuite/gfortran.dg/default_format_1.inc
! 6639ce11899c92de50597c547e431fe7  gcc/testsuite/gfortran.dg/default_format_2.f90
  c286b196507e9ffee9aad5b53cf42fd7  gcc/testsuite/gfortran.dg/default_format_2.inc
! c767d7f22474c8ad0d004a14d5e33668  gcc/testsuite/gfortran.dg/default_format_denormal_1.f90
! b5e2a794aa966e632257cbb3c85b5f03  gcc/testsuite/gfortran.dg/default_format_denormal_2.f90
  42b3bc794999b325dd25fadf49212667  gcc/testsuite/gfortran.dg/default_initialization_1.f90
  ba730e52e3b48dd9a54bf3a8e2b06575  gcc/testsuite/gfortran.dg/default_initialization_2.f90
! 82fe74ac8e598a41632b7047330d6d36  gcc/testsuite/gfortran.dg/default_initialization_3.f90
! e1561f7f059e5bb075e02a82ec852507  gcc/testsuite/gfortran.dg/default_initialization_4.f90
! c9aad2c267a47d3a479b554e6700575b  gcc/testsuite/gfortran.dg/default_initialization_5.f90
  f7e099d81831ba1513789eae564fc258  gcc/testsuite/gfortran.dg/default_initialization_6.f90
  08911b04c850915fc3643836f57a0d11  gcc/testsuite/gfortran.dg/default_initialization_7.f90
  a45fcdc7acbcd6829bfea8ef270f0d75  gcc/testsuite/gfortran.dg/default_numeric_type_1.f90
! 1aec71f1d9b1a196544b56f2b032e599  gcc/testsuite/gfortran.dg/deferred_character_1.f90
! 49f417b9f945383720567dad7ed1cc6e  gcc/testsuite/gfortran.dg/deferred_character_10.f90
! 7af9c4dec81633bbb449f53a238b514c  gcc/testsuite/gfortran.dg/deferred_character_11.f90
! 6a53b26b5e9839a763765bf974236311  gcc/testsuite/gfortran.dg/deferred_character_12.f90
! 498c6fa46bd45c09f68727890e523f8a  gcc/testsuite/gfortran.dg/deferred_character_13.f90
! c26c871bf08605ce024253a49da3b53a  gcc/testsuite/gfortran.dg/deferred_character_14.f90
! 1c4f05212f5447da65bd477a1f755ce9  gcc/testsuite/gfortran.dg/deferred_character_15.f90
! bcdb84ffa3c50231ecd967d3114134ae  gcc/testsuite/gfortran.dg/deferred_character_16.f90
  c2d3fe3d7d640f7941cc2bc632a62dae  gcc/testsuite/gfortran.dg/deferred_character_17.f90
  1a26e360dc164c3593384827ba0ea576  gcc/testsuite/gfortran.dg/deferred_character_18.f90
! 0065ab4e114bfcdbbb2b3374d1ffdc63  gcc/testsuite/gfortran.dg/deferred_character_2.f90
! dfd1a256ace2833d668ae709e8f43f9e  gcc/testsuite/gfortran.dg/deferred_character_3.f90
! 1d0633419cdd140f8ca51872f6219b2d  gcc/testsuite/gfortran.dg/deferred_character_4.f90
! b90b86dcee8b12dac9cb174a3177fc66  gcc/testsuite/gfortran.dg/deferred_character_5.f90
! 8f0e0ad0341dea63051e52e1afc7a198  gcc/testsuite/gfortran.dg/deferred_character_6.f90
! 0e2a56dea2313fdbffd190450ebbea1c  gcc/testsuite/gfortran.dg/deferred_character_7.f90
! 88d74e66f37372bdc7877ee7bce22c5b  gcc/testsuite/gfortran.dg/deferred_character_8.f90
! 3540bc5b52de2f2f08528de45358ef67  gcc/testsuite/gfortran.dg/deferred_character_9.f90
! fb418162f4fd7fe5a8e69e257f3b6a1d  gcc/testsuite/gfortran.dg/deferred_character_assignment_1.f90
! 44bcbb273ed97aa95ffc9d0cb8833af6  gcc/testsuite/gfortran.dg/deferred_type_component_1.f90
! 83dae0de828e3a7e57c8b26c48ac8013  gcc/testsuite/gfortran.dg/deferred_type_component_2.f90
  76039d665e1ef71cfe2721af0afa187b  gcc/testsuite/gfortran.dg/deferred_type_param_1.f90
! 8c2b4ff96da50e855afb293e0f216c76  gcc/testsuite/gfortran.dg/deferred_type_param_2.f90
  e189b6467dfc0f9dfe164cf2b5324f07  gcc/testsuite/gfortran.dg/deferred_type_param_3.f90
! 3a58e3a8c84507497b5874ea450f3423  gcc/testsuite/gfortran.dg/deferred_type_param_4.f90
! 98908e89681740516f5aa5ab83b279ca  gcc/testsuite/gfortran.dg/deferred_type_param_5.f90
! de89a5b8b3743f78d835de078f641341  gcc/testsuite/gfortran.dg/deferred_type_param_6.f90
! 1693632bb41df4629507ee4aeea40b4e  gcc/testsuite/gfortran.dg/deferred_type_param_8.f90
! 72b56de3de202aa2dad59f98f92591c1  gcc/testsuite/gfortran.dg/deferred_type_param_9.f90
! c36fd31b877966c80efb601cae605f16  gcc/testsuite/gfortran.dg/deferred_type_proc_pointer_1.f90
! 9a7f5816052bca62e6c6a9777872b7b0  gcc/testsuite/gfortran.dg/deferred_type_proc_pointer_2.f90
! ba35c559ce8aa2c85326f745d0bf31d8  gcc/testsuite/gfortran.dg/defined_assignment_1.f90
! cafcdf838286f089f2577e7255224779  gcc/testsuite/gfortran.dg/defined_assignment_10.f90
! 0ee43b837e0fe5d5783a1adc88172ac7  gcc/testsuite/gfortran.dg/defined_assignment_11.f90
! 7e1ecee5b2a91e4fec24b46b4c781369  gcc/testsuite/gfortran.dg/defined_assignment_2.f90
! c9a45934edb20c40a51ac89a94e33410  gcc/testsuite/gfortran.dg/defined_assignment_3.f90
! a12e8334fef336658cec44241ce5d959  gcc/testsuite/gfortran.dg/defined_assignment_4.f90
! e9ccf054f489cbd6d5cdf5c5489ef4d9  gcc/testsuite/gfortran.dg/defined_assignment_5.f90
  b6d3fcdac45694e2e7c717b1f9afc657  gcc/testsuite/gfortran.dg/defined_assignment_6.f90
  fda3bca3f9cb8baab5563f99a2f8bdc7  gcc/testsuite/gfortran.dg/defined_assignment_7.f90
! 37c86f326c8695aba776bcd32f9d2d30  gcc/testsuite/gfortran.dg/defined_assignment_8.f90
! 6bb99d80deb71a9c9ac1f00e4f613af6  gcc/testsuite/gfortran.dg/defined_assignment_9.f90
  8fb5a7af58c63a8d3155701ac2dfb0f3  gcc/testsuite/gfortran.dg/defined_operators_1.f90
  2d5af451897a230f5c4e75f539402003  gcc/testsuite/gfortran.dg/deftype_1.f90
  f1315c405d72b632bf1260f77c98f35b  gcc/testsuite/gfortran.dg/dependency_1.f90
--- 53174,53460 ----
  06a362c99e9e68bae02db528f69b449a  gcc/testsuite/gfortran.dg/common_17.f90
  1dabded3ebc55aef714dcb54e4ba035c  gcc/testsuite/gfortran.dg/common_18.f90
  089692456b49d761a35992663e4bbb71  gcc/testsuite/gfortran.dg/common_19.f90
! 46fc0e335342f8f0944e95adf5b0fdeb  gcc/testsuite/gfortran.dg/common_2.f90
  12fec303851959d537303ad2bba9aa02  gcc/testsuite/gfortran.dg/common_20.f90
  19d12ed2a13126b3a920f744ce92b00c  gcc/testsuite/gfortran.dg/common_21.f90
  f1da6751bbd1a6186b7f03b7f7e77113  gcc/testsuite/gfortran.dg/common_22.f90
  06e2065883402fa9fd2aeb3912ca2fb7  gcc/testsuite/gfortran.dg/common_23.f90
  d3d62d1603bee1c8f8a03953e6eebba0  gcc/testsuite/gfortran.dg/common_24.f
  d5539b20ee7c35bfc0fcb236052a68ea  gcc/testsuite/gfortran.dg/common_25.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
  efd711390e553828ec90bbbf4d5fdcf6  gcc/testsuite/gfortran.dg/common_6.f90
  054cf620f6d51cebdfc5a52741618b82  gcc/testsuite/gfortran.dg/common_7.f90
  fdee583e00d96e902af808b9912f7183  gcc/testsuite/gfortran.dg/common_8.f90
  5fd3a22b21c4eda7c4b414322233a9a2  gcc/testsuite/gfortran.dg/common_9.f90
! ae1974cbcb595452de6f5a78d027a348  gcc/testsuite/gfortran.dg/common_align_1.f90
! 3d6b0a1f539768a97b3a9e81858d708f  gcc/testsuite/gfortran.dg/common_align_2.f90
! cc15d700b2201abf15a3b13b9acfdbb3  gcc/testsuite/gfortran.dg/common_equivalence_1.f
  978219b964916ad90c1c856565c5cd03  gcc/testsuite/gfortran.dg/common_equivalence_2.f
  7a04e00a061694524e6a58fb9d90aff0  gcc/testsuite/gfortran.dg/common_equivalence_3.f
  9c85cd23ac5fff822b8aa40ea9eea929  gcc/testsuite/gfortran.dg/common_errors_1.f90
! 108a394927c2967c84750866c2b47cbe  gcc/testsuite/gfortran.dg/common_pointer_1.f90
! f770055e72021d6538853fe3a1ea0e97  gcc/testsuite/gfortran.dg/common_resize_1.f
  8901ea0d542b37025e06a070d4f9f6a6  gcc/testsuite/gfortran.dg/compiler-directive_1.f90
  5fcb72595e9b6b0307b878501d384720  gcc/testsuite/gfortran.dg/compiler-directive_2.f
  cfd54d23052dc6b16ad17bcf76406ff1  gcc/testsuite/gfortran.dg/complex_int_1.f90
! 5179c7f50f083ae353700bc7b9e916cb  gcc/testsuite/gfortran.dg/complex_intrinsic_1.f90
  7c823bfc6fe5a1777f3e40fc0e756cd0  gcc/testsuite/gfortran.dg/complex_intrinsic_2.f90
! aad610dce9ea33b35dce6531d18875a6  gcc/testsuite/gfortran.dg/complex_intrinsic_3.f90
  c312ba22ca873c6ebd86b882af92d0b1  gcc/testsuite/gfortran.dg/complex_intrinsic_4.f90
! efec6300019062b3ec75a9241ae94e40  gcc/testsuite/gfortran.dg/complex_intrinsic_5.f90
  0024de6d7c6edf9954d07b73b07348a3  gcc/testsuite/gfortran.dg/complex_intrinsic_6.f90
! 3536f8e99839e50dd2ad731e3e7b9d88  gcc/testsuite/gfortran.dg/complex_intrinsic_7.f90
  990346e7e1216ca50431033a5ee16b5d  gcc/testsuite/gfortran.dg/complex_intrinsic_8.f90
  de38f54398a61c2c6a449996c42e911f  gcc/testsuite/gfortran.dg/complex_parameter_1.f90
! d638b45296c13f0789f6ce82d511bb31  gcc/testsuite/gfortran.dg/complex_read.f90
! 6428b158457136009640e18a3e6db4a8  gcc/testsuite/gfortran.dg/complex_write.f90
  b9804b4b0a71d39afd82b778f0536a3e  gcc/testsuite/gfortran.dg/compliant_elemental_intrinsics_1.f90
  d57b192629fc2adfa507680ea3f866e8  gcc/testsuite/gfortran.dg/compliant_elemental_intrinsics_2.f90
  b2591a1967b937b0841fc5fb3f73d5ce  gcc/testsuite/gfortran.dg/conflicts.f90
  64f1ee1dbe6f1744d125233e48c831fa  gcc/testsuite/gfortran.dg/conflicts_2.f90
! 54782d6556ddbba18903dff6510de207  gcc/testsuite/gfortran.dg/constant_shape.f90
! 53a755b1b7f731c82c202980db1428c1  gcc/testsuite/gfortran.dg/constant_substring.f
  407db943d891796588cfa3a7f6a60084  gcc/testsuite/gfortran.dg/constructor_1.f90
! 1bbd445e27de1f7dcbbc6655fc596900  gcc/testsuite/gfortran.dg/constructor_2.f90
! dc0c5a14d61855bcf7901ec1cc9f8631  gcc/testsuite/gfortran.dg/constructor_3.f90
  9a0048d909e1867ac9a1b5a534413466  gcc/testsuite/gfortran.dg/constructor_4.f90
  619768fd793694132e5c28e25786baaa  gcc/testsuite/gfortran.dg/constructor_5.f90
! ae633d6fb8f755e4438f03dc66af961e  gcc/testsuite/gfortran.dg/constructor_6.f90
  56b724accc20820757e0cf32dec06d6d  gcc/testsuite/gfortran.dg/constructor_7.f90
  8beaf054e69adb46d0eb3735e8ee9014  gcc/testsuite/gfortran.dg/constructor_8.f90
! 8772dce62d3f6c0db03915f5dce1537b  gcc/testsuite/gfortran.dg/constructor_9.f90
! b5dbb6eac05af22301cc4be0f75bc8c7  gcc/testsuite/gfortran.dg/contained_1.f90
! ad78b834951932a616057d1d3e242e54  gcc/testsuite/gfortran.dg/contained_3.f90
! 483a3e34479d51ff6b8a35b7b161e745  gcc/testsuite/gfortran.dg/contained_equivalence_1.f90
! d9bb21b2f1afd9c2ab941b2e00142e60  gcc/testsuite/gfortran.dg/contained_module_proc_1.f90
  5ef57c417e62facddfc178a3d99c781e  gcc/testsuite/gfortran.dg/contains.f90
  b3bd24f0c174a1694bc02107df47994b  gcc/testsuite/gfortran.dg/contains_empty_1.f03
  9b58c072c6e2ec7e5710c4d2b243f04a  gcc/testsuite/gfortran.dg/contains_empty_2.f03
  15d395123762efd5ca05e607a91f1572  gcc/testsuite/gfortran.dg/contiguous_1.f90
  9975df3f787a3eaea63dd5664ff235eb  gcc/testsuite/gfortran.dg/contiguous_2.f90
  4e6553417634a09cb0af43204aa204c3  gcc/testsuite/gfortran.dg/contiguous_3.f90
! ca573ddae6855b41e822af260d7460aa  gcc/testsuite/gfortran.dg/contiguous_4.f90
! 55d6dfee9ae827da90cab84000238f36  gcc/testsuite/gfortran.dg/contiguous_5.f90
! c023e0a33575555c4fdeb791d5d41ad0  gcc/testsuite/gfortran.dg/contiguous_6.f90
! 28877a027862f64189ecda1cf9485fec  gcc/testsuite/gfortran.dg/continuation_1.f90
  3c614c06c041b57a9bfb2da993bb9cf5  gcc/testsuite/gfortran.dg/continuation_10.f90
! bb6da1fae598452b743d9abf13df084f  gcc/testsuite/gfortran.dg/continuation_11.f90
! c328c2f39088b37a00d617231b1b4ba4  gcc/testsuite/gfortran.dg/continuation_12.f90
! 428e9897af8aad931c6d536f688f55cc  gcc/testsuite/gfortran.dg/continuation_13.f90
! 6338b1bd0bab5dcc6fd438e06a3741cf  gcc/testsuite/gfortran.dg/continuation_14.f
  49739f5cf7585f44f02462b166a5f926  gcc/testsuite/gfortran.dg/continuation_2.f90
  a173a721e029bdc0b90a673b0904b8d6  gcc/testsuite/gfortran.dg/continuation_3.f90
  7ec20aeb68f3228eeccb78e6acbb62b7  gcc/testsuite/gfortran.dg/continuation_4.f90
  97fd3920e3bcbfb1f92a0cc46d66f1b0  gcc/testsuite/gfortran.dg/continuation_5.f
  1656140b0635b7a2f10251969334f48c  gcc/testsuite/gfortran.dg/continuation_6.f
  1eecf61741a3663c2efb087d8f798246  gcc/testsuite/gfortran.dg/continuation_7.f90
! 6ddd06b5e06168d8510ab431318b065c  gcc/testsuite/gfortran.dg/continuation_8.f90
  877cc876f2799692e91bc959b2bc7c68  gcc/testsuite/gfortran.dg/continuation_9.f90
  3e6601d715c346714d5942c158ecc96f  gcc/testsuite/gfortran.dg/convert_1.f90
! 7324ef3f1b4d2fab3c0499953f90a804  gcc/testsuite/gfortran.dg/convert_2.f90
! b73e43096f62363b41d344c3d78cf850  gcc/testsuite/gfortran.dg/convert_implied_open.f90
! cb123993b8b746b2fefcde93c5977299  gcc/testsuite/gfortran.dg/count_init_expr.f03
  f8a4ca21ccf302214564ec0d59e8fd51  gcc/testsuite/gfortran.dg/count_mask_1.f90
! 3b90418e0228dbd1fcbbe97fe82554a6  gcc/testsuite/gfortran.dg/cr_lf.f90
  33604a92da75a7b5ee0f958ab81b1328  gcc/testsuite/gfortran.dg/cray_pointers_1.f90
! 6c5fde96cb793d7badc2635511fec23b  gcc/testsuite/gfortran.dg/cray_pointers_10.f90
  74dd2b09e2326c23ec50a90bf151d3b9  gcc/testsuite/gfortran.dg/cray_pointers_11.f90
! e973e5ebed82feb1ac5ff4990efdfe76  gcc/testsuite/gfortran.dg/cray_pointers_2.f90
  49ea5999b0fbbd860fa0b8b1e6a01397  gcc/testsuite/gfortran.dg/cray_pointers_3.f90
  c00f3a9d2f365b0dab03e2415fabbc16  gcc/testsuite/gfortran.dg/cray_pointers_4.f90
! b97f5efe433d04510fdaae3ffbcc4218  gcc/testsuite/gfortran.dg/cray_pointers_5.f90
  0d094557c6c49c80b76513914e5bf9a5  gcc/testsuite/gfortran.dg/cray_pointers_6.f90
! eaa4019084ccec85168491282c779e02  gcc/testsuite/gfortran.dg/cray_pointers_7.f90
! 8700b2eab7924866c2e0908e5eb3ffb7  gcc/testsuite/gfortran.dg/cray_pointers_8.f90
  114897796165566d95d9ba8d4a407e34  gcc/testsuite/gfortran.dg/cray_pointers_9.f90
+ 3927209e5b372476689b3cfc24d0518f  gcc/testsuite/gfortran.dg/cshift_1.f90
+ 00d2833fb4a373a75d29055715222f82  gcc/testsuite/gfortran.dg/cshift_2.f90
  df10550af9bfee62312dc75d7ef2b5e7  gcc/testsuite/gfortran.dg/cshift_bounds_1.f90
  f583596821f17c2f5db8bd7c26c596b3  gcc/testsuite/gfortran.dg/cshift_bounds_2.f90
  4566b7e9dacf21af84f1f5c78713999c  gcc/testsuite/gfortran.dg/cshift_bounds_3.f90
  ee8b9bf264074de495a143392e4e1bf1  gcc/testsuite/gfortran.dg/cshift_bounds_4.f90
! 6f6eed29256b2006ec012299663b7981  gcc/testsuite/gfortran.dg/cshift_large_1.f90
! c5397ac7608ba10d6228e56eb82e4496  gcc/testsuite/gfortran.dg/cshift_nan_1.f90
  5e271c0c08fb2052cfb5703e481b7910  gcc/testsuite/gfortran.dg/cshift_shift_real_1.f90
  6386c6eb72012a216a14486c6b01cf25  gcc/testsuite/gfortran.dg/cshift_shift_real_2.f90
! fdb08a75fd76694b14251a7ace50b410  gcc/testsuite/gfortran.dg/csqrt_2.f
  6471aea295a020f644e93de1eb60c2a7  gcc/testsuite/gfortran.dg/ctrl-z.f90
  83532a23dfd59d84167330d06154c78b  gcc/testsuite/gfortran.dg/d_lines_1.f
  1a302a979ad4a0b3fcc309e0ba686fd6  gcc/testsuite/gfortran.dg/d_lines_2.f
  987f880150c0dbd1e6567b250ddb9842  gcc/testsuite/gfortran.dg/d_lines_3.f
  b494fac3983a388281d078b0757553e5  gcc/testsuite/gfortran.dg/d_lines_4.f
  ad1671c9a89b0639af833c746c8e6caf  gcc/testsuite/gfortran.dg/d_lines_5.f
! 2a399d916a69dcebaf7fe3685343586c  gcc/testsuite/gfortran.dg/data_array_1.f90
  910886a0b00b95c0be918b92f3e80374  gcc/testsuite/gfortran.dg/data_array_2.f90
  0c23cb38de53b31d72539467084c3487  gcc/testsuite/gfortran.dg/data_array_3.f90
  ba80841da4b4a0e5982fbcf93b136bfc  gcc/testsuite/gfortran.dg/data_array_4.f90
  898b470ca20458dcd409748bb5ce3481  gcc/testsuite/gfortran.dg/data_array_5.f90
  76386a9e40ac13aed9db89cefaa67ba5  gcc/testsuite/gfortran.dg/data_array_6.f
  b4aba9c1942c276db0411d7beeaa71e8  gcc/testsuite/gfortran.dg/data_bounds_1.f90
! 65cb3bb00eeb006c593981f91beb2404  gcc/testsuite/gfortran.dg/data_char_1.f90
! 1f7b6464a7e2f21249dc7d689d91819f  gcc/testsuite/gfortran.dg/data_char_2.f90
! b7a24b5cb693244e2892fc1269ed73bc  gcc/testsuite/gfortran.dg/data_char_3.f90
  43b77886b68f7c4f9a354c43d800dbcf  gcc/testsuite/gfortran.dg/data_components_1.f90
  5810d819d200905a36ae8cb98ed752bc  gcc/testsuite/gfortran.dg/data_constraints_1.f90
  3ece70a5bb9b24671d4c8179edf9b97a  gcc/testsuite/gfortran.dg/data_constraints_2.f90
  231ca920a35ba7b483bc1c958d857bf5  gcc/testsuite/gfortran.dg/data_constraints_3.f90
! 098f28a07f68f958bc2fda46a9b385e8  gcc/testsuite/gfortran.dg/data_derived_1.f90
! b85f62a13d3cc36bdf0f22f1d532889f  gcc/testsuite/gfortran.dg/data_implied_do_1.f90
! 7f9f5d6eccf0c5a1be67404095988075  gcc/testsuite/gfortran.dg/data_implied_do_2.f90
  433440f2bc7400a428ec319b70a4c7c4  gcc/testsuite/gfortran.dg/data_initialized.f90
  f7e6506db3e2a2cf1acda6f7ed5bb367  gcc/testsuite/gfortran.dg/data_initialized_2.f90
  7c629d12ce2ea9831030b62a2361a453  gcc/testsuite/gfortran.dg/data_initialized_3.f90
  933976674d89973b726184d45668d1af  gcc/testsuite/gfortran.dg/data_invalid.f90
! 75c2602db09095225b6558bf5ee7a00d  gcc/testsuite/gfortran.dg/data_namelist_conflict.f90
  bca7e4fe42af4bdc8c5dce540cb962e5  gcc/testsuite/gfortran.dg/data_pointer_1.f90
+ ea42e7a04380338a9946ffc999ea6767  gcc/testsuite/gfortran.dg/data_substring.f90
  503918b2128c29daa249b849ffe01756  gcc/testsuite/gfortran.dg/data_value_1.f90
  10f0c8adce060dc0f3e77c644f08c68b  gcc/testsuite/gfortran.dg/deallocate_alloc_opt_1.f90
  079ebbd99b715d218c0619d77fffa7f4  gcc/testsuite/gfortran.dg/deallocate_alloc_opt_2.f90
! 3ddb3f58e99f728c3c7b34b22ec9e56b  gcc/testsuite/gfortran.dg/deallocate_alloc_opt_3.f90
  bed6e5db54bbf80cf32d9482e2a1f7e4  gcc/testsuite/gfortran.dg/deallocate_error_1.f90
  adf3e611b5d9dd41324a93faee4fe2c9  gcc/testsuite/gfortran.dg/deallocate_error_2.f90
! 52586650fe9ae6a4d43afc25f3b01e7a  gcc/testsuite/gfortran.dg/deallocate_error_3.f90
! 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
! 279165fc801ed4c60e49d3bc903d0909  gcc/testsuite/gfortran.dg/debug/debug.exp
  c8fe955f02d446b949b45194c7d29caf  gcc/testsuite/gfortran.dg/debug/pr35154-dwarf2.f
! 41cb16f7881b373f4b3a8cf5a1c9b678  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
  311f4c5de7848479e7c29ad08de71190  gcc/testsuite/gfortran.dg/debug/trivial.f
  431530310efb9ec01e397a4a411f8e67  gcc/testsuite/gfortran.dg/debug_1.f90
  f12fc8f8c675ad90dacda21c47b123cf  gcc/testsuite/gfortran.dg/debug_2.f
! b496d07e8ed4463418ab44cb2f8567f5  gcc/testsuite/gfortran.dg/dec_bitwise_ops_1.f90
! 28f856b78ae5405a9408bc99a05db096  gcc/testsuite/gfortran.dg/dec_bitwise_ops_2.f90
! c6963f1245c42ce7d7b614a37da312d2  gcc/testsuite/gfortran.dg/dec_d_lines_1.f
! 6d74902a840dc3e155df461201be2f34  gcc/testsuite/gfortran.dg/dec_d_lines_2.f
! 47057c01a40e07abfc7ac4926bc3ef60  gcc/testsuite/gfortran.dg/dec_exp_1.f90
  024c931122e2929630f9e3a5b4456937  gcc/testsuite/gfortran.dg/dec_exp_2.f90
  0d5cdb7963da6a935155bd9af7c61a1d  gcc/testsuite/gfortran.dg/dec_exp_3.f90
! 92a09ba85c1129a5c02ebd5b89b411e6  gcc/testsuite/gfortran.dg/dec_init_1.f90
! 5f517aafb394d1ff1cf1d8950ded585e  gcc/testsuite/gfortran.dg/dec_init_2.f90
! 0fad0d537027af7d1297d42f87f90993  gcc/testsuite/gfortran.dg/dec_init_3.f90
! ea87431a0369f9e7268297efe801335a  gcc/testsuite/gfortran.dg/dec_init_4.f90
  103d5b5fb3d0b17bc2b6c54766f7cd11  gcc/testsuite/gfortran.dg/dec_intrinsic_ints.f90
! ec8381fca3141962496a31ffb461ea8f  gcc/testsuite/gfortran.dg/dec_io_1.f90
! 0b9b8813e8dd700071f84eb04916c91d  gcc/testsuite/gfortran.dg/dec_io_2.f90
! 81cefcba5f5fa78c6cae921d728c027b  gcc/testsuite/gfortran.dg/dec_io_2a.f90
  2281acfc72ee0e66cf6996a4d82e9093  gcc/testsuite/gfortran.dg/dec_io_3.f90
  2ada96ce37351248ef56546938578256  gcc/testsuite/gfortran.dg/dec_io_4.f90
  9c6a351303b4ec280db9d0ed7e860548  gcc/testsuite/gfortran.dg/dec_io_5.f90
! 088615c8c9aa96154e1a5350b5605ec5  gcc/testsuite/gfortran.dg/dec_io_6.f90
! 3755727bf4654982d6f6e6e4b53bbcd6  gcc/testsuite/gfortran.dg/dec_loc_rval_1.f90
  2dc0f6c955198cc4bcd26f99b59a4bf2  gcc/testsuite/gfortran.dg/dec_loc_rval_2.f90
  0229d0bdec4feb0e938443f65c9b0f56  gcc/testsuite/gfortran.dg/dec_loc_rval_3.f03
! 762985a925b90674163cd0316a6f3ff0  gcc/testsuite/gfortran.dg/dec_logical_xor_1.f90
  519c3622603d8bdfcdd819606ab71a39  gcc/testsuite/gfortran.dg/dec_logical_xor_2.f90
  7634f260da3c6ee6123a7feaf3e1ab68  gcc/testsuite/gfortran.dg/dec_logical_xor_3.f03
! 724045b65919f28f54aecd5ea6dc507a  gcc/testsuite/gfortran.dg/dec_math.f90
! 9f5739a83e88bd4a8b6a45ff713e1e4f  gcc/testsuite/gfortran.dg/dec_parameter_1.f
! 5d6d04868c5d0b68526b644166397060  gcc/testsuite/gfortran.dg/dec_parameter_2.f90
  fda7b33d4e9546e000649a147e272b6b  gcc/testsuite/gfortran.dg/dec_parameter_3.f90
  b5027dd480b5ebe7e0147828f05aed61  gcc/testsuite/gfortran.dg/dec_parameter_4.f90
! c34ae76379c299702b101d1fadcf26f9  gcc/testsuite/gfortran.dg/dec_static_1.f90
! 71f420a3e8b9bcab56bce67d4e017132  gcc/testsuite/gfortran.dg/dec_static_2.f90
  8b9914356cbe37424443f1aabb020d62  gcc/testsuite/gfortran.dg/dec_static_3.f90
  778cefd9d555f940a3e22cc6b12de783  gcc/testsuite/gfortran.dg/dec_static_4.f90
! 349dabcf3c1edf96db9fca520eab7474  gcc/testsuite/gfortran.dg/dec_structure_1.f90
! 408911b4ce843554d18cc144f1ff5a9e  gcc/testsuite/gfortran.dg/dec_structure_10.f90
  bebb7b5cba927374343e4d102d6bdef2  gcc/testsuite/gfortran.dg/dec_structure_11.f90
  c7371f966fa8fe05eb7f3540fda3af92  gcc/testsuite/gfortran.dg/dec_structure_12.f90
  f49f855af4f970d26d54c898d689cf45  gcc/testsuite/gfortran.dg/dec_structure_13.f90
  5420066ea47f8652a0c02abc68b7c185  gcc/testsuite/gfortran.dg/dec_structure_14.f90
! b29ee6efe14c26c18ac8d17c71e3e43b  gcc/testsuite/gfortran.dg/dec_structure_15.f90
  0c2deddf183b1829738b6c015b933f07  gcc/testsuite/gfortran.dg/dec_structure_16.f90
  6609d701473c6ac18cb7eaf33f217448  gcc/testsuite/gfortran.dg/dec_structure_17.f90
! 3c1c699bcbdad8dc4aebddb7b291352a  gcc/testsuite/gfortran.dg/dec_structure_18.f90
! 9ced3c950f3984fe6369947c219ea6e5  gcc/testsuite/gfortran.dg/dec_structure_19.f90
! cdeb437bbe1cc227d30775be50d5a68c  gcc/testsuite/gfortran.dg/dec_structure_2.f90
! b0da24f3dc3073fdd36d0b56cf3fbd82  gcc/testsuite/gfortran.dg/dec_structure_20.f90
! 127ad22c853284a0a1f838db50b2c3f9  gcc/testsuite/gfortran.dg/dec_structure_21.f90
! 1efbd8c40c0b0a5237143bc618c059b8  gcc/testsuite/gfortran.dg/dec_structure_22.f90
! e2a1e1b15aac566b0fdce1a94c97eea0  gcc/testsuite/gfortran.dg/dec_structure_23.f90
! e5a640ebe19a6bd41dfe88505578d600  gcc/testsuite/gfortran.dg/dec_structure_3.f90
! 3e93f5723765624d8a866daa57bbef33  gcc/testsuite/gfortran.dg/dec_structure_4.f90
! 0b1ee443f4f10ca947aec630d3abf2a9  gcc/testsuite/gfortran.dg/dec_structure_5.f90
! 27e4cd9e237db6bf217854593185c0cd  gcc/testsuite/gfortran.dg/dec_structure_6.f90
! 4660293b5ffaa2ef0c15c7a10a8d621f  gcc/testsuite/gfortran.dg/dec_structure_7.f90
  a3842131746a182a4d0d806a0ead8cf9  gcc/testsuite/gfortran.dg/dec_structure_8.f90
  ba7bd70d8f9beaa28febfa1d800b3cf7  gcc/testsuite/gfortran.dg/dec_structure_9.f90
  cad42db351ade11e383560c34e3e978b  gcc/testsuite/gfortran.dg/dec_type_print.f90
! 8336562dd939d9f2e4d7fa9f352ebdd5  gcc/testsuite/gfortran.dg/dec_union_1.f90
  54fa8897424354fe36b1147275b1b014  gcc/testsuite/gfortran.dg/dec_union_10.f90
  10c14f289f146d801c8860e6ec73a8f8  gcc/testsuite/gfortran.dg/dec_union_11.f90
! ff04d1928f316f16787d0be012e0d169  gcc/testsuite/gfortran.dg/dec_union_2.f90
! 85cd1980dadce1ec2db721b54e8725bf  gcc/testsuite/gfortran.dg/dec_union_3.f90
! a4db5df7b9375240006aa16fab80e2c0  gcc/testsuite/gfortran.dg/dec_union_4.f90
! b5e3fc5e0a1df885b377151a3289ee0b  gcc/testsuite/gfortran.dg/dec_union_5.f90
  ac7e4f8e406a6c26533909c71fa6b3fd  gcc/testsuite/gfortran.dg/dec_union_6.f90
  3bf903f4b6b040909bf42cbcf85d3330  gcc/testsuite/gfortran.dg/dec_union_7.f90
  21bd8b9bc74bb0c85792a956a6bd1aad  gcc/testsuite/gfortran.dg/dec_union_8.f90
  ad49d41a6e763bbfd0eae1190d0fc6fe  gcc/testsuite/gfortran.dg/dec_union_9.f90
! d376c8e5af71db8945113edc894afe82  gcc/testsuite/gfortran.dg/default_format_1.f90
  42dc43ca59716a600a5d47ef02504fc7  gcc/testsuite/gfortran.dg/default_format_1.inc
! 4038a30a77040c8796a16b1060bbcd0d  gcc/testsuite/gfortran.dg/default_format_2.f90
  c286b196507e9ffee9aad5b53cf42fd7  gcc/testsuite/gfortran.dg/default_format_2.inc
! 5f168d82d38e1c754570ded8cfb73dc9  gcc/testsuite/gfortran.dg/default_format_denormal_1.f90
! 4867bb913b8c2ac8368d857dd12330ea  gcc/testsuite/gfortran.dg/default_format_denormal_2.f90
  42b3bc794999b325dd25fadf49212667  gcc/testsuite/gfortran.dg/default_initialization_1.f90
  ba730e52e3b48dd9a54bf3a8e2b06575  gcc/testsuite/gfortran.dg/default_initialization_2.f90
! 7af7a0ca7606f9ae6e52e14e617baec0  gcc/testsuite/gfortran.dg/default_initialization_3.f90
! e5c67c7209669704817f1e57335a887b  gcc/testsuite/gfortran.dg/default_initialization_4.f90
! aa88143a10f1f489528f244cc8838e04  gcc/testsuite/gfortran.dg/default_initialization_5.f90
  f7e099d81831ba1513789eae564fc258  gcc/testsuite/gfortran.dg/default_initialization_6.f90
  08911b04c850915fc3643836f57a0d11  gcc/testsuite/gfortran.dg/default_initialization_7.f90
  a45fcdc7acbcd6829bfea8ef270f0d75  gcc/testsuite/gfortran.dg/default_numeric_type_1.f90
! bb317fffe5adec4899b34963da968312  gcc/testsuite/gfortran.dg/deferred_character_1.f90
! 4295d84fd81e07ca1114460d3e99c92b  gcc/testsuite/gfortran.dg/deferred_character_10.f90
! 6b4d459c976d30362d9f3b4aac704d11  gcc/testsuite/gfortran.dg/deferred_character_11.f90
! 017e8257dc22a18f93239b364ca1752a  gcc/testsuite/gfortran.dg/deferred_character_12.f90
! d5f538fe68904b1784d8b0a2a459c8a4  gcc/testsuite/gfortran.dg/deferred_character_13.f90
! ba365a2701ea3b0fc6771efdf4f3e387  gcc/testsuite/gfortran.dg/deferred_character_14.f90
! 682a1b0221ad32f91fdcadaf624fc3cd  gcc/testsuite/gfortran.dg/deferred_character_15.f90
! fa45f3c3b004c914daeccfa3f8ab74b1  gcc/testsuite/gfortran.dg/deferred_character_16.f90
  c2d3fe3d7d640f7941cc2bc632a62dae  gcc/testsuite/gfortran.dg/deferred_character_17.f90
  1a26e360dc164c3593384827ba0ea576  gcc/testsuite/gfortran.dg/deferred_character_18.f90
! 2337fab48f0af327b627dffd78987500  gcc/testsuite/gfortran.dg/deferred_character_19.f90
! 4dda35461dd9482e65dbb912150ec1c8  gcc/testsuite/gfortran.dg/deferred_character_2.f90
! 8711c9282d7601e5aaa4a9f3dd7b5b43  gcc/testsuite/gfortran.dg/deferred_character_3.f90
! 5eede6c791f6d272034f9b84850ac6af  gcc/testsuite/gfortran.dg/deferred_character_4.f90
! 981b809300de368e8fac65be4b40099c  gcc/testsuite/gfortran.dg/deferred_character_5.f90
! b8df78111bec4d4d4b97da6a15228361  gcc/testsuite/gfortran.dg/deferred_character_6.f90
! 6163ba94de2460d966743791f731e1d6  gcc/testsuite/gfortran.dg/deferred_character_7.f90
! b7baca8d40e9ecc8734524fc4f1bf8bf  gcc/testsuite/gfortran.dg/deferred_character_8.f90
! 53312fcc3203475810a76139da3af7e0  gcc/testsuite/gfortran.dg/deferred_character_9.f90
! 34d20b349b168faa99540e560ffa33cd  gcc/testsuite/gfortran.dg/deferred_character_assignment_1.f90
! e1813cbce75ed499d9bf3a4b69a253f0  gcc/testsuite/gfortran.dg/deferred_type_component_1.f90
! fc8c48568d0e81b1e5f437a9e734f18f  gcc/testsuite/gfortran.dg/deferred_type_component_2.f90
  76039d665e1ef71cfe2721af0afa187b  gcc/testsuite/gfortran.dg/deferred_type_param_1.f90
! 4a871ea5bd79e294e3b6409324d16c32  gcc/testsuite/gfortran.dg/deferred_type_param_2.f90
  e189b6467dfc0f9dfe164cf2b5324f07  gcc/testsuite/gfortran.dg/deferred_type_param_3.f90
! c1927d2bd7107b7c372ab25e66f1250d  gcc/testsuite/gfortran.dg/deferred_type_param_4.f90
! 839fbe774a28d6671eea71b2ed8e7890  gcc/testsuite/gfortran.dg/deferred_type_param_5.f90
! 5a90cff7942f5483f48ae696c9dde275  gcc/testsuite/gfortran.dg/deferred_type_param_6.f90
! 31b84e1a7efd515dff264e572ef3114f  gcc/testsuite/gfortran.dg/deferred_type_param_8.f90
! baf382b7a2d174b867b58e8e8b38c566  gcc/testsuite/gfortran.dg/deferred_type_param_9.f90
! ae3f4c1b78646e97fc572c6d3e6fb09b  gcc/testsuite/gfortran.dg/deferred_type_proc_pointer_1.f90
! 90b6bc5a8e16697912190383839f4ce0  gcc/testsuite/gfortran.dg/deferred_type_proc_pointer_2.f90
! dee6967c044d8780d274607ace40fce8  gcc/testsuite/gfortran.dg/defined_assignment_1.f90
! 13645fae1c2e64ba0baf240c765ebdd1  gcc/testsuite/gfortran.dg/defined_assignment_10.f90
! e92d2c6eb8e82818db7d81de4f67b94d  gcc/testsuite/gfortran.dg/defined_assignment_11.f90
! a423bfbbbd88739f2a162bbc16b0033e  gcc/testsuite/gfortran.dg/defined_assignment_2.f90
! 5d8c271e027729075b343b50faf2dd71  gcc/testsuite/gfortran.dg/defined_assignment_3.f90
! fd8ae494dd71724cf339b0bf0b1957b2  gcc/testsuite/gfortran.dg/defined_assignment_4.f90
! d8e36976521c505decbc63dbf562d77f  gcc/testsuite/gfortran.dg/defined_assignment_5.f90
  b6d3fcdac45694e2e7c717b1f9afc657  gcc/testsuite/gfortran.dg/defined_assignment_6.f90
  fda3bca3f9cb8baab5563f99a2f8bdc7  gcc/testsuite/gfortran.dg/defined_assignment_7.f90
! aa88374eb9400656c4d901f917bcb987  gcc/testsuite/gfortran.dg/defined_assignment_8.f90
! 98b222897004aba8c46ed6bf33f9e076  gcc/testsuite/gfortran.dg/defined_assignment_9.f90
  8fb5a7af58c63a8d3155701ac2dfb0f3  gcc/testsuite/gfortran.dg/defined_operators_1.f90
  2d5af451897a230f5c4e75f539402003  gcc/testsuite/gfortran.dg/deftype_1.f90
  f1315c405d72b632bf1260f77c98f35b  gcc/testsuite/gfortran.dg/dependency_1.f90
*************** a2f6dac74be10a81fe12174ada85ef6b  gcc/te
*** 49936,49949 ****
  b394efb71ace6d4ad4215b5f8cfd3b3d  gcc/testsuite/gfortran.dg/dependency_17.f90
  8a865a9cc55b31cd9188d91c4ce4599f  gcc/testsuite/gfortran.dg/dependency_18.f90
  af3d59f8700a3bfd37e0d70054a0815e  gcc/testsuite/gfortran.dg/dependency_19.f90
! fa7652316a6597ee94b3275a13242a48  gcc/testsuite/gfortran.dg/dependency_2.f90
  33df5084f9cb477602d0bb8cc6233d0f  gcc/testsuite/gfortran.dg/dependency_20.f90
! 33b29ccda90f5032a880d8873385d91d  gcc/testsuite/gfortran.dg/dependency_21.f90
! 95f25ebcf96a9eb9c624c8ae2416c964  gcc/testsuite/gfortran.dg/dependency_22.f90
! 35c58bf288ddfa31825c1c5e7c5c2ba6  gcc/testsuite/gfortran.dg/dependency_23.f90
! 272ae6b719c56b520a27edcf228dc1bf  gcc/testsuite/gfortran.dg/dependency_24.f90
! defbd550f1e99582e17d4c60742c4d6c  gcc/testsuite/gfortran.dg/dependency_25.f90
! da9416cefbde01706cd582e0e8a1cbca  gcc/testsuite/gfortran.dg/dependency_26.f90
  5fbd3b7ef508ea3f6054c7f48130b461  gcc/testsuite/gfortran.dg/dependency_27.f90
  66360fed22ada49d6d344b8971ee6918  gcc/testsuite/gfortran.dg/dependency_28.f90
  8639f6749500c4356f471039c1b63533  gcc/testsuite/gfortran.dg/dependency_29.f90
--- 53468,53481 ----
  b394efb71ace6d4ad4215b5f8cfd3b3d  gcc/testsuite/gfortran.dg/dependency_17.f90
  8a865a9cc55b31cd9188d91c4ce4599f  gcc/testsuite/gfortran.dg/dependency_18.f90
  af3d59f8700a3bfd37e0d70054a0815e  gcc/testsuite/gfortran.dg/dependency_19.f90
! 5687a821468b33a9f5df9beaf8ef177d  gcc/testsuite/gfortran.dg/dependency_2.f90
  33df5084f9cb477602d0bb8cc6233d0f  gcc/testsuite/gfortran.dg/dependency_20.f90
! 3c9d1a6906ebb0a1f0131262d617c956  gcc/testsuite/gfortran.dg/dependency_21.f90
! 721026007149b4c2a1a8dfeee4e457ce  gcc/testsuite/gfortran.dg/dependency_22.f90
! 6750fa25b7e952a46b4e723cf11e04aa  gcc/testsuite/gfortran.dg/dependency_23.f90
! 10cda01d8c97767b91e2bec27f658e78  gcc/testsuite/gfortran.dg/dependency_24.f90
! 92687c97aac70f2b94b7a24e7b171397  gcc/testsuite/gfortran.dg/dependency_25.f90
! a271851f6770b048d5fc779dd492ab27  gcc/testsuite/gfortran.dg/dependency_26.f90
  5fbd3b7ef508ea3f6054c7f48130b461  gcc/testsuite/gfortran.dg/dependency_27.f90
  66360fed22ada49d6d344b8971ee6918  gcc/testsuite/gfortran.dg/dependency_28.f90
  8639f6749500c4356f471039c1b63533  gcc/testsuite/gfortran.dg/dependency_29.f90
*************** b697022c211753c6e3f026bc337e8683  gcc/te
*** 49957,50047 ****
  6a7e5851a991a1404393d6e4fb22c3e1  gcc/testsuite/gfortran.dg/dependency_36.f90
  06037801c78747c9592680e7793a7cb1  gcc/testsuite/gfortran.dg/dependency_37.f90
  580be56625ecab542cd5268ce87b9f4d  gcc/testsuite/gfortran.dg/dependency_38.f90
! 235ac1fc2b2fd8ddbe691f0b0c4d8751  gcc/testsuite/gfortran.dg/dependency_39.f90
  55ea0bb4caefc75f86f66a957766ca17  gcc/testsuite/gfortran.dg/dependency_4.f90
! 1b7708b4e095e35597e73eb8136394b2  gcc/testsuite/gfortran.dg/dependency_40.f90
! 4494fd8495c030eb26875946d73421dd  gcc/testsuite/gfortran.dg/dependency_41.f90
! 14557cb6edcda0eff3fa327f7ea23aaa  gcc/testsuite/gfortran.dg/dependency_42.f90
! dca63cf93efe22616e44d9f46b5b1933  gcc/testsuite/gfortran.dg/dependency_43.f90
! 52a475961b0e9c97d571fa626e1754b5  gcc/testsuite/gfortran.dg/dependency_44.f90
! 9908775fdc0125fcca5e0250d562cdb1  gcc/testsuite/gfortran.dg/dependency_45.f90
  18bd6a173b22bb353c669d8ab0cbe6df  gcc/testsuite/gfortran.dg/dependency_46.f90
  83ed09b1543e3059e9067be926a73b31  gcc/testsuite/gfortran.dg/dependency_47.f90
  0b500dcd3858e049021939919e789ac4  gcc/testsuite/gfortran.dg/dependency_48.f90
! c9817191c2bb4937bf557342ac314361  gcc/testsuite/gfortran.dg/dependency_49.f90
  590a99c4ec44cc37aa92b225e93d6e87  gcc/testsuite/gfortran.dg/dependency_5.f90
  03218919538313b26e09fa1b8f0efda0  gcc/testsuite/gfortran.dg/dependency_6.f90
  699f1378f5c1fcdc54eb21fdb4a59be1  gcc/testsuite/gfortran.dg/dependency_7.f90
  89a3206dfabae1e31ea62ec7fa264ee6  gcc/testsuite/gfortran.dg/dependency_8.f90
  bed947f18e24a0489e41529f588cfef4  gcc/testsuite/gfortran.dg/dependency_9.f90
! 9362e52b8a4d899e2d6af4bc6af7aa6c  gcc/testsuite/gfortran.dg/dependent_decls_1.f90
! 95f2419e774289de06c61e6b37f84b63  gcc/testsuite/gfortran.dg/der_array_1.f90
! 991ccdd308ef1dab1ba68f872f38490c  gcc/testsuite/gfortran.dg/der_array_io_1.f90
! 3a47bd8038ca3fa916376ff539118e95  gcc/testsuite/gfortran.dg/der_array_io_2.f90
! 5136beaea9d0ad9fce76a9bc56410e47  gcc/testsuite/gfortran.dg/der_array_io_3.f90
  d8550edab8d5e7f71c87159df4ae1257  gcc/testsuite/gfortran.dg/der_charlen_1.f90
! 54d58321c463de955b80652c000a0a1e  gcc/testsuite/gfortran.dg/der_io_1.f90
  07a8fe6cc42f3849a2fbc06a2603c2c6  gcc/testsuite/gfortran.dg/der_io_2.f90
! 6a91e26e17ef5fad6eed0f1623da0184  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
! bf5b308cd1f07ab2684c62117e3344ce  gcc/testsuite/gfortran.dg/der_pointer_2.f90
  bf70cd429d2bb96e66108ecbde6782f6  gcc/testsuite/gfortran.dg/der_pointer_3.f90
  453104c9daee3cf8cadc6e7af53d91c0  gcc/testsuite/gfortran.dg/der_pointer_4.f90
  e18724265ec6aab79c0620180f09bb92  gcc/testsuite/gfortran.dg/der_ptr_component_1.f90
  d66e8eae686e166d7cb944804e5b15a9  gcc/testsuite/gfortran.dg/der_ptr_component_2.f90
  e81e4865af303cc263e179c1c0642d96  gcc/testsuite/gfortran.dg/derived_array_intrinisics_1.f90
! d333e8680e74874bb20201886bbc639a  gcc/testsuite/gfortran.dg/derived_comp_array_ref_1.f90
! 491b1b38b12db99f6ff4b25d93a06f41  gcc/testsuite/gfortran.dg/derived_comp_array_ref_2.f90
  a1e709d7c93853353c0797ba2949dca8  gcc/testsuite/gfortran.dg/derived_comp_array_ref_3.f90
! 3dd112041abfdec72b23c39783b2cad0  gcc/testsuite/gfortran.dg/derived_comp_array_ref_4.f90
  e5f02b68e5aa2fee50c3ff70ad3d8f97  gcc/testsuite/gfortran.dg/derived_comp_array_ref_5.f90
  026bd8fa710214d25691eae8c1dbcdfd  gcc/testsuite/gfortran.dg/derived_comp_array_ref_6.f90
! 742bb84abfdbbfff7df1ad0cbbcdfe61  gcc/testsuite/gfortran.dg/derived_comp_array_ref_7.f90
  3ac6e6c4ed41e85971024e19ad69e6a1  gcc/testsuite/gfortran.dg/derived_comp_array_ref_8.f90
  3cb6f5885bbdd2d68c73753351eee1b3  gcc/testsuite/gfortran.dg/derived_constructor_char_1.f90
  36d65cd99e01688bd380279fd0c74558  gcc/testsuite/gfortran.dg/derived_constructor_char_2.f90
! 55b92643aa69aa9592d82688fe769713  gcc/testsuite/gfortran.dg/derived_constructor_char_3.f90
! 9e987a5acfa32ade6b20d81c855b184f  gcc/testsuite/gfortran.dg/derived_constructor_comps_1.f90
  14becf7c5ac1f3826b69f362e23e2804  gcc/testsuite/gfortran.dg/derived_constructor_comps_2.f90
  cb44893d94f03877d3d146a8c1da8bd8  gcc/testsuite/gfortran.dg/derived_constructor_comps_3.f90
! 4c9fd221f8c449b4ce8004984aea7749  gcc/testsuite/gfortran.dg/derived_constructor_comps_4.f90
! 193596e95c998adb2d1d104f9ce8e914  gcc/testsuite/gfortran.dg/derived_constructor_comps_5.f90
! f640a56e60ed1182ad510441a7bad9d5  gcc/testsuite/gfortran.dg/derived_constructor_comps_6.f90
! beea5da72f98be108939b606fa5f03b4  gcc/testsuite/gfortran.dg/derived_external_function_1.f90
  e08a65ae23ffa55d956b33c09e1c4cb8  gcc/testsuite/gfortran.dg/derived_function_interface_1.f90
! a466fd6c42d7959249200b6a5f8d0976  gcc/testsuite/gfortran.dg/derived_init_1.f90
! 50df0f0ca74b6d1ce1bf210729d0571f  gcc/testsuite/gfortran.dg/derived_init_2.f90
! fc282adfa584992baca2c49e1159c999  gcc/testsuite/gfortran.dg/derived_init_3.f90
! d27bb9e22541996b55df9f830715f098  gcc/testsuite/gfortran.dg/derived_init_4.f90
  bfacdce690dd804fd8596a41cca5e1d8  gcc/testsuite/gfortran.dg/derived_name_1.f90
  83e722dbb79574dcea48de4b591f9764  gcc/testsuite/gfortran.dg/derived_name_2.f
! fce84d21ee6ff370ffe985495a21211b  gcc/testsuite/gfortran.dg/derived_pointer_null_1.f90
  1e90fa4ec744a619f14e720b5d7d4a77  gcc/testsuite/gfortran.dg/derived_pointer_recursion.f90
! 2f5cc16aa5c6e6d2c92154b34ae91e42  gcc/testsuite/gfortran.dg/derived_pointer_recursion_2.f90
  21dd790eb5de9f5842955d3e4168f143  gcc/testsuite/gfortran.dg/derived_recursion.f90
  e9e8f279200f5692fad235f157925873  gcc/testsuite/gfortran.dg/derived_result.f90
  dd5ecf2c74eaa6c3f2c981a9dcb2caa3  gcc/testsuite/gfortran.dg/derived_result_2.f90
  b522fadd1464db48d2fe8165d2a66e70  gcc/testsuite/gfortran.dg/derived_sub.f90
! adbce17b40220bfd236ee3eae3f70a9d  gcc/testsuite/gfortran.dg/dev_null.F90
! d655f69be703cce0cf887b416272ea61  gcc/testsuite/gfortran.dg/dfloat_1.f90
! c9f9c3ba98632df0c5de87ebce48fce4  gcc/testsuite/gfortran.dg/dg.exp
  cf9206e8c02e17079f63e1e6860bdb3b  gcc/testsuite/gfortran.dg/dim_range_1.f90
  ea4b46f100a2bfd145edbb489c0084b0  gcc/testsuite/gfortran.dg/direct_io_1.f90
! 2a1539169ac7a352e0c4d17620d0cc9a  gcc/testsuite/gfortran.dg/direct_io_10.f
! 6189c74cd63d04b06db2b4ec34dbd296  gcc/testsuite/gfortran.dg/direct_io_11.f90
! 0a74880cdc5658a52b7a196aed00c73b  gcc/testsuite/gfortran.dg/direct_io_12.f90
! 58fddbd45a5f6360bf094077ac79586d  gcc/testsuite/gfortran.dg/direct_io_2.f90
! df2f28f9f16982ad455240a03d5df8d9  gcc/testsuite/gfortran.dg/direct_io_3.f90
! 284b669e1d4a30d12cb5bda22c4025f3  gcc/testsuite/gfortran.dg/direct_io_4.f90
! b09ba436f0343837db1213dc689657dd  gcc/testsuite/gfortran.dg/direct_io_5.f90
! 0f89f2531dac68656b2e229314ff1bec  gcc/testsuite/gfortran.dg/direct_io_6.f90
! 3a4b7fe0061d3c6f2a760a9cd3112724  gcc/testsuite/gfortran.dg/direct_io_7.f90
! 33a6a52759a7280a438a18d8d0785192  gcc/testsuite/gfortran.dg/direct_io_8.f90
! abfaf4c564bbaf3c85104f7601877f3f  gcc/testsuite/gfortran.dg/direct_io_9.f
! 0be2b7fda129fcfbb009ffa2e2c8fe39  gcc/testsuite/gfortran.dg/do_1.f90
  b59a9e83027833130c5ee12a722d5ab6  gcc/testsuite/gfortran.dg/do_2.f90
! ce0dcf60629b098c1b8e9f0aca41414b  gcc/testsuite/gfortran.dg/do_3.F90
  adae2090c78550da71bc0d69ad7f2410  gcc/testsuite/gfortran.dg/do_4.f
  cdbdebe9161bcc4a79df17d5f5732b28  gcc/testsuite/gfortran.dg/do_5.f90
  772ca6a2275433a18fdf36006544a355  gcc/testsuite/gfortran.dg/do_check_1.f90
--- 53489,53590 ----
  6a7e5851a991a1404393d6e4fb22c3e1  gcc/testsuite/gfortran.dg/dependency_36.f90
  06037801c78747c9592680e7793a7cb1  gcc/testsuite/gfortran.dg/dependency_37.f90
  580be56625ecab542cd5268ce87b9f4d  gcc/testsuite/gfortran.dg/dependency_38.f90
! c539b7cbc4f13bf5a44beae698dce8a1  gcc/testsuite/gfortran.dg/dependency_39.f90
  55ea0bb4caefc75f86f66a957766ca17  gcc/testsuite/gfortran.dg/dependency_4.f90
! 746e3a6da073a9fa08d3eceb4f97b326  gcc/testsuite/gfortran.dg/dependency_40.f90
! 3ff120ddb4a3528a25d04ec4ca3c4940  gcc/testsuite/gfortran.dg/dependency_41.f90
! e9a4d3424f60d0f712f3e952f8a24008  gcc/testsuite/gfortran.dg/dependency_42.f90
! de26e50850edde76a764d108782037a4  gcc/testsuite/gfortran.dg/dependency_43.f90
! 2c8d33d2e8e568d6a6787bca9cfae42c  gcc/testsuite/gfortran.dg/dependency_44.f90
! 2cb673aa3afe3e226ebea1fc54c7587c  gcc/testsuite/gfortran.dg/dependency_45.f90
  18bd6a173b22bb353c669d8ab0cbe6df  gcc/testsuite/gfortran.dg/dependency_46.f90
  83ed09b1543e3059e9067be926a73b31  gcc/testsuite/gfortran.dg/dependency_47.f90
  0b500dcd3858e049021939919e789ac4  gcc/testsuite/gfortran.dg/dependency_48.f90
! b708a831578a6c876ea16b95695f6103  gcc/testsuite/gfortran.dg/dependency_49.f90
  590a99c4ec44cc37aa92b225e93d6e87  gcc/testsuite/gfortran.dg/dependency_5.f90
+ 05077d112c5b175bda81d3ed2d1d2318  gcc/testsuite/gfortran.dg/dependency_50.f90
+ e3dcdcb7fb8e68b8ccf780af3eb56518  gcc/testsuite/gfortran.dg/dependency_51.f90
  03218919538313b26e09fa1b8f0efda0  gcc/testsuite/gfortran.dg/dependency_6.f90
  699f1378f5c1fcdc54eb21fdb4a59be1  gcc/testsuite/gfortran.dg/dependency_7.f90
  89a3206dfabae1e31ea62ec7fa264ee6  gcc/testsuite/gfortran.dg/dependency_8.f90
  bed947f18e24a0489e41529f588cfef4  gcc/testsuite/gfortran.dg/dependency_9.f90
! 67277aa32b5b5873080f3f4293a6ae8c  gcc/testsuite/gfortran.dg/dependent_decls_1.f90
! f83ad6bd054390e6c1c83e3617a0ca54  gcc/testsuite/gfortran.dg/der_array_1.f90
! 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
  453104c9daee3cf8cadc6e7af53d91c0  gcc/testsuite/gfortran.dg/der_pointer_4.f90
  e18724265ec6aab79c0620180f09bb92  gcc/testsuite/gfortran.dg/der_ptr_component_1.f90
  d66e8eae686e166d7cb944804e5b15a9  gcc/testsuite/gfortran.dg/der_ptr_component_2.f90
  e81e4865af303cc263e179c1c0642d96  gcc/testsuite/gfortran.dg/derived_array_intrinisics_1.f90
! a3b84a106e9b419dca25b480e8eb4ec1  gcc/testsuite/gfortran.dg/derived_comp_array_ref_1.f90
! 7ba70d5d34480b9bd965f9d020266fbf  gcc/testsuite/gfortran.dg/derived_comp_array_ref_2.f90
  a1e709d7c93853353c0797ba2949dca8  gcc/testsuite/gfortran.dg/derived_comp_array_ref_3.f90
! 439e0a30d10fe3624d1e6fb4c420461f  gcc/testsuite/gfortran.dg/derived_comp_array_ref_4.f90
  e5f02b68e5aa2fee50c3ff70ad3d8f97  gcc/testsuite/gfortran.dg/derived_comp_array_ref_5.f90
  026bd8fa710214d25691eae8c1dbcdfd  gcc/testsuite/gfortran.dg/derived_comp_array_ref_6.f90
! 0bee796fdb071ab50d5faf5c678fefa5  gcc/testsuite/gfortran.dg/derived_comp_array_ref_7.f90
  3ac6e6c4ed41e85971024e19ad69e6a1  gcc/testsuite/gfortran.dg/derived_comp_array_ref_8.f90
  3cb6f5885bbdd2d68c73753351eee1b3  gcc/testsuite/gfortran.dg/derived_constructor_char_1.f90
  36d65cd99e01688bd380279fd0c74558  gcc/testsuite/gfortran.dg/derived_constructor_char_2.f90
! 3c2f8f5e24883308b8a24313e9e5df89  gcc/testsuite/gfortran.dg/derived_constructor_char_3.f90
! f024936b2bb3be33b204bc283db65a94  gcc/testsuite/gfortran.dg/derived_constructor_comps_1.f90
  14becf7c5ac1f3826b69f362e23e2804  gcc/testsuite/gfortran.dg/derived_constructor_comps_2.f90
  cb44893d94f03877d3d146a8c1da8bd8  gcc/testsuite/gfortran.dg/derived_constructor_comps_3.f90
! 1985d33efa2fb91552f8a4d90653edd7  gcc/testsuite/gfortran.dg/derived_constructor_comps_4.f90
! b90644647498c9ab9c17c0d5ea8d1b82  gcc/testsuite/gfortran.dg/derived_constructor_comps_5.f90
! b2ca02520bfaffc03c538a5319e61893  gcc/testsuite/gfortran.dg/derived_constructor_comps_6.f90
! cff987fa6f89201aa37245231d20c023  gcc/testsuite/gfortran.dg/derived_external_function_1.f90
  e08a65ae23ffa55d956b33c09e1c4cb8  gcc/testsuite/gfortran.dg/derived_function_interface_1.f90
! fdf6add00f0bd7ce436abe942eb65cf3  gcc/testsuite/gfortran.dg/derived_init_1.f90
! 7f4a9d70ecb927e710c83b20b3a90df5  gcc/testsuite/gfortran.dg/derived_init_2.f90
! 83f56ef2860b76c167321eddfa3089b3  gcc/testsuite/gfortran.dg/derived_init_3.f90
! 07fab892951fdbb2c35b3e8978ea647a  gcc/testsuite/gfortran.dg/derived_init_4.f90
! a19ffb5a22d6663608efe30bfaaa6c3e  gcc/testsuite/gfortran.dg/derived_init_5.f90
  bfacdce690dd804fd8596a41cca5e1d8  gcc/testsuite/gfortran.dg/derived_name_1.f90
  83e722dbb79574dcea48de4b591f9764  gcc/testsuite/gfortran.dg/derived_name_2.f
! 1437ef5bc0341f947a22ccc26daa8e22  gcc/testsuite/gfortran.dg/derived_pointer_null_1.f90
  1e90fa4ec744a619f14e720b5d7d4a77  gcc/testsuite/gfortran.dg/derived_pointer_recursion.f90
! 47eddf7374a4a0c455eea525e9b3c6b3  gcc/testsuite/gfortran.dg/derived_pointer_recursion_2.f90
  21dd790eb5de9f5842955d3e4168f143  gcc/testsuite/gfortran.dg/derived_recursion.f90
  e9e8f279200f5692fad235f157925873  gcc/testsuite/gfortran.dg/derived_result.f90
  dd5ecf2c74eaa6c3f2c981a9dcb2caa3  gcc/testsuite/gfortran.dg/derived_result_2.f90
  b522fadd1464db48d2fe8165d2a66e70  gcc/testsuite/gfortran.dg/derived_sub.f90
! 652fa12d630d17b29894c33b10c6b1b8  gcc/testsuite/gfortran.dg/dev_null.F90
! 94ce3208dac145ea14fc3f821f662788  gcc/testsuite/gfortran.dg/dfloat_1.f90
! 6225aa701ea238d6bc3b5ad76ce51526  gcc/testsuite/gfortran.dg/dg.exp
  cf9206e8c02e17079f63e1e6860bdb3b  gcc/testsuite/gfortran.dg/dim_range_1.f90
+ 9233bdc80c05466b893a5980013b72e8  gcc/testsuite/gfortran.dg/dim_sum_1.f90
+ a0eae83f56a58410e0887f2da41f7c3b  gcc/testsuite/gfortran.dg/dim_sum_2.f90
+ 46ee6570a5be67a47edb4ec8974b7fe1  gcc/testsuite/gfortran.dg/dim_sum_3.f90
  ea4b46f100a2bfd145edbb489c0084b0  gcc/testsuite/gfortran.dg/direct_io_1.f90
! cea9f746a49ae212c3cd5423c67e734b  gcc/testsuite/gfortran.dg/direct_io_10.f
! e359893cd691e360c90a5f3ded897f86  gcc/testsuite/gfortran.dg/direct_io_11.f90
! f189508012dd3747ce759d0a31609a77  gcc/testsuite/gfortran.dg/direct_io_12.f90
! 2975059d2f61ed951dd9cd37f3337529  gcc/testsuite/gfortran.dg/direct_io_2.f90
! 2cbc95abf41dd3807b0905ed538fd1ee  gcc/testsuite/gfortran.dg/direct_io_3.f90
! d9c11cd9199b12810ac670474468adbb  gcc/testsuite/gfortran.dg/direct_io_4.f90
! 3f74f43241089a8526f7c2ddff6eefde  gcc/testsuite/gfortran.dg/direct_io_5.f90
! fe1848ffc428a6713d10551d5977e464  gcc/testsuite/gfortran.dg/direct_io_6.f90
! ce3034bb6ce3013fdae30190e52fa31e  gcc/testsuite/gfortran.dg/direct_io_7.f90
! c3d849e8aa39dc0d14cc0b60719501eb  gcc/testsuite/gfortran.dg/direct_io_8.f90
! ac4ba6f5f598f2a50f552c87ef9cddca  gcc/testsuite/gfortran.dg/direct_io_9.f
! 4ce49c664c6ed9112fb75e4e4e5fb247  gcc/testsuite/gfortran.dg/directive_unroll_1.f90
! f0d354752ee1014d5577d3a67cd73282  gcc/testsuite/gfortran.dg/directive_unroll_2.f90
! 55f549830c78d9f034190f32857a7428  gcc/testsuite/gfortran.dg/directive_unroll_3.f90
! 2a7df85d6760265f24aa5fdcd9dba5b2  gcc/testsuite/gfortran.dg/directive_unroll_4.f90
! df0a3db0f5b87c7a64ef9bebbf3723af  gcc/testsuite/gfortran.dg/directive_unroll_5.f90
! 62804b9931608efbe7f6506d1b679e64  gcc/testsuite/gfortran.dg/do_1.f90
  b59a9e83027833130c5ee12a722d5ab6  gcc/testsuite/gfortran.dg/do_2.f90
! 527f706ecad7d9a9178b8e5fb63caac9  gcc/testsuite/gfortran.dg/do_3.F90
  adae2090c78550da71bc0d69ad7f2410  gcc/testsuite/gfortran.dg/do_4.f
  cdbdebe9161bcc4a79df17d5f5732b28  gcc/testsuite/gfortran.dg/do_5.f90
  772ca6a2275433a18fdf36006544a355  gcc/testsuite/gfortran.dg/do_check_1.f90
*************** ffb5a682b1c8bb98feb925db34c42db2  gcc/te
*** 50054,50148 ****
  616992b74a87a78033c22f13469877ec  gcc/testsuite/gfortran.dg/do_check_5.f90
  d46ea4699f717904d6e5bcdcda65d695  gcc/testsuite/gfortran.dg/do_check_6.f90
  bd4bc520857f0ac91a2842fc99e9f070  gcc/testsuite/gfortran.dg/do_check_7.f90
! e08c2e72cd93e10b7b7caa1b4798b0ba  gcc/testsuite/gfortran.dg/do_check_8.f90
  91d5f3178f55e04655e0ac948132175a  gcc/testsuite/gfortran.dg/do_check_9.f90
  cc944e9209313a0d97bd7bed7198665c  gcc/testsuite/gfortran.dg/do_concurrent_1.f90
! 49e32881ce6b119e8005b026f99ceec6  gcc/testsuite/gfortran.dg/do_concurrent_2.f90
  8352f532d473468c61cc2391cb3b72ed  gcc/testsuite/gfortran.dg/do_concurrent_3.f90
! 8a2f9b65705538fa75e8251390b31c0b  gcc/testsuite/gfortran.dg/do_concurrent_4.f90
! bf055125cfcbbe094f5857994bd35011  gcc/testsuite/gfortran.dg/do_corner_warn.f90
  8a29329028fba5406c50b33634ee840c  gcc/testsuite/gfortran.dg/do_iterator.f90
! 15bb051fc6bbfd9626464dfbc9b0e60e  gcc/testsuite/gfortran.dg/do_iterator_2.f90
  7d8c65a65d2d7c5bd8b9ada9a3dd140b  gcc/testsuite/gfortran.dg/do_pointer_1.f90
  a7c723754d10ef5541785fffb91b0578  gcc/testsuite/gfortran.dg/do_while_1.f90
! 89a29a36e872746cadea68f28ae330ea  gcc/testsuite/gfortran.dg/dollar_edit_descriptor_1.f
! d12a9389410ada682190e66aef95d2ef  gcc/testsuite/gfortran.dg/dollar_edit_descriptor_2.f
  e26c1f7f5f5bf58bc20b92b7f15df396  gcc/testsuite/gfortran.dg/dollar_edit_descriptor_3.f
  05870f48404bf1cf7ee24b20b89766c9  gcc/testsuite/gfortran.dg/dollar_sym_1.f90
  bee33f45b2081d3f23f2f3b508893078  gcc/testsuite/gfortran.dg/dollar_sym_2.f90
  29c20967118eb556752a80b78d61daa9  gcc/testsuite/gfortran.dg/dollar_sym_3.f
! 81c02ab79001889d92651612f04f4029  gcc/testsuite/gfortran.dg/dos_eol.f
! 47318dcb4acfe6f2932913c638511078  gcc/testsuite/gfortran.dg/dot_product_1.f03
! 06677485b0f0e9039f5718cbbe534d13  gcc/testsuite/gfortran.dg/dot_product_2.f90
  56b87b8faca0cadde3460f89f290587d  gcc/testsuite/gfortran.dg/dot_product_3.f90
  28c9ee70843b7ef41ef74327bc08fb12  gcc/testsuite/gfortran.dg/double_complex_1.f90
! 9ce87f920f9f5536194a351e33dbbeb6  gcc/testsuite/gfortran.dg/dshift_1.F90
! 187310d2d84779c767a852f19eacaaad  gcc/testsuite/gfortran.dg/dshift_2.F90
  b77540934baa222e51abc3df6ff7017e  gcc/testsuite/gfortran.dg/dshift_3.f90
! 2d79b0cd7006646e8d77ada2e733efa5  gcc/testsuite/gfortran.dg/dtio_1.f90
! c0457b2d3e2d61eb22bdc15e5b3044e9  gcc/testsuite/gfortran.dg/dtio_10.f90
  3562eeed3364b43ff9bf9c2e9f1a5629  gcc/testsuite/gfortran.dg/dtio_11.f90
! 2a2669c9658f161db6e816fe43afb240  gcc/testsuite/gfortran.dg/dtio_12.f90
! 130bf410c52e7527d3956ceb4733256e  gcc/testsuite/gfortran.dg/dtio_13.f90
! aff433ba8d0749dd17c2a5a870d1dd50  gcc/testsuite/gfortran.dg/dtio_14.f90
! 839dd54626db1af235d841316c59148b  gcc/testsuite/gfortran.dg/dtio_15.f90
! bfdf59493a7a2cb5c206032bbfc797ac  gcc/testsuite/gfortran.dg/dtio_16.f90
! 818f2e8c0406ca8b81747b6959887bd1  gcc/testsuite/gfortran.dg/dtio_17.f90
  ee75802ea56b38abc636e7ee07fdd457  gcc/testsuite/gfortran.dg/dtio_18.f90
! cd9ea07b1c9c0dd408ebbf47c3f30fa5  gcc/testsuite/gfortran.dg/dtio_19.f90
! b1e5574874e83906a246a8afa69b6ff2  gcc/testsuite/gfortran.dg/dtio_2.f90
! a4f1006153caa74d7b1df36d903d5db7  gcc/testsuite/gfortran.dg/dtio_20.f03
! 628e7d4f8be26be5c1406976dd895cdc  gcc/testsuite/gfortran.dg/dtio_21.f90
! 04568b286d250c0f7c9652cccdb276c5  gcc/testsuite/gfortran.dg/dtio_22.f90
  4be521506e4eeeef4204dc7184c8f719  gcc/testsuite/gfortran.dg/dtio_23.f90
! e6c500fa4b0a6b6eac370932d6eb61ff  gcc/testsuite/gfortran.dg/dtio_24.f90
! 98237f23ae56b7a45df18da7418cc3b7  gcc/testsuite/gfortran.dg/dtio_25.f90
! f0073efa206e67436edf82d5b1b1ac57  gcc/testsuite/gfortran.dg/dtio_26.f03
! 5b3fd432b8ac0d49d15683e3b0460e45  gcc/testsuite/gfortran.dg/dtio_27.f90
! 27715f21d10d39429d2aa62a97937b83  gcc/testsuite/gfortran.dg/dtio_28.f03
  2dfca8c6da6bd3ea5e5d2c6cd01715b7  gcc/testsuite/gfortran.dg/dtio_29.f03
! d3a013e31715689e4a2c23fc628a3af5  gcc/testsuite/gfortran.dg/dtio_3.f90
! b9ebd23de05032302385bda27f5e8957  gcc/testsuite/gfortran.dg/dtio_30.f03
! 3a76d6d057dd90f4e2e2b6fdcafb9cb1  gcc/testsuite/gfortran.dg/dtio_4.f90
! 63874443ed01ba6c28361f50cad6cda9  gcc/testsuite/gfortran.dg/dtio_5.f90
  5c6704b3b1b7266ea126e709df28bebe  gcc/testsuite/gfortran.dg/dtio_6.f90
! e662745418d77784b7c7152151949aad  gcc/testsuite/gfortran.dg/dtio_7.f90
! 5976ae5cea2ecc998add0b565d94885a  gcc/testsuite/gfortran.dg/dtio_8.f90
! 4519f3cee55a9ca21654300adf1a7916  gcc/testsuite/gfortran.dg/dtio_9.f90
  eab02fbb223a2efc295eb3541b208a5c  gcc/testsuite/gfortran.dg/dummy_functions_1.f90
  8f2cd08ff6c7f2da646ec61c190742f7  gcc/testsuite/gfortran.dg/dummy_optional_arg.f90
  aa587ea16c93c473e39853a8323414b3  gcc/testsuite/gfortran.dg/dummy_procedure_1.f90
  df8f738c1c56d7f97d8f23a57813710f  gcc/testsuite/gfortran.dg/dummy_procedure_10.f90
  d04b0c3a2c904d46837b8b4cd01a4eb3  gcc/testsuite/gfortran.dg/dummy_procedure_11.f90
  2f54899059a44fb9ec6dd65dd36dcdd4  gcc/testsuite/gfortran.dg/dummy_procedure_2.f90
! bff982decdfdb9cf607bd7ae9c9f929f  gcc/testsuite/gfortran.dg/dummy_procedure_3.f90
  a0572a1bab68b675e7ec3a07fdfcbf07  gcc/testsuite/gfortran.dg/dummy_procedure_4.f90
  4b7612d5637347837278b4ed88513c0c  gcc/testsuite/gfortran.dg/dummy_procedure_5.f90
  23a4bec5e77fdd2d778693195581f210  gcc/testsuite/gfortran.dg/dummy_procedure_6.f90
! da07814152e66ab3b749adc106d6ad19  gcc/testsuite/gfortran.dg/dummy_procedure_7.f90
  00a1d927ffb12ee1a6a28b645ea99401  gcc/testsuite/gfortran.dg/dummy_procedure_8.f90
  5f12475cc648a26a838db8b56b0da0a4  gcc/testsuite/gfortran.dg/dummy_procedure_9.f90
! 5e7607096bc0170833ae836938198c1e  gcc/testsuite/gfortran.dg/dup_save_1.f90
! ed8b3783b559cd46c4ace89e97254082  gcc/testsuite/gfortran.dg/dup_save_2.f90
  a6123bf77f221c60e8ae2f81bf6d0479  gcc/testsuite/gfortran.dg/duplicate_labels.f90
  e40638792418f370fabf94b973bb629c  gcc/testsuite/gfortran.dg/duplicate_labels_2.f
  cbbe52c4a4a14b77dd9dc589b31313a8  gcc/testsuite/gfortran.dg/duplicate_type_1.f90
  d783c3768ae4abd6b4ecf2eb0ec3f62a  gcc/testsuite/gfortran.dg/duplicate_type_2.f90
  f840f866ed45ad34dfb9ad0c63e0ba6a  gcc/testsuite/gfortran.dg/duplicate_type_3.f90
! ae959c50bdd88ef37f7efc1db05cf1b7  gcc/testsuite/gfortran.dg/dynamic_dispatch_1.f03
  964e888cbcf20e4e255bf6d97cf04045  gcc/testsuite/gfortran.dg/dynamic_dispatch_10.f03
! ebe9e777390b8a381a0704e35db1889f  gcc/testsuite/gfortran.dg/dynamic_dispatch_11.f03
! 8303b52256c192f599ba7d662c2bd381  gcc/testsuite/gfortran.dg/dynamic_dispatch_12.f90
! 752283b60ddff5b798dae1c4aa15962d  gcc/testsuite/gfortran.dg/dynamic_dispatch_2.f03
! 077e59854f8f5d4156924d398020136c  gcc/testsuite/gfortran.dg/dynamic_dispatch_3.f03
! de13be162f9bffc65445ddbfe2a4a19e  gcc/testsuite/gfortran.dg/dynamic_dispatch_4.f03
! 08c69fc09d1b5b8a4f65d7f2c7c942de  gcc/testsuite/gfortran.dg/dynamic_dispatch_5.f03
  4b59bf0c44a7eace63fee6c4a9acfd5a  gcc/testsuite/gfortran.dg/dynamic_dispatch_6.f03
! 100a4018f6286ad5fd06c0a7af673932  gcc/testsuite/gfortran.dg/dynamic_dispatch_7.f03
! 05e472222a28daa81526b18798d0745c  gcc/testsuite/gfortran.dg/dynamic_dispatch_8.f03
! 04146ac8400e51acf9dbf6ecf4548cb9  gcc/testsuite/gfortran.dg/dynamic_dispatch_9.f03
! 8ba5d6439c391cb6a6ad44a6b0972279  gcc/testsuite/gfortran.dg/e_d_fmt.f90
! bc732ef71b3a1163386a19879233bbac  gcc/testsuite/gfortran.dg/edit_real_1.f90
  1ca998f810cc468a20cfcb95e9b68e5f  gcc/testsuite/gfortran.dg/elemental_args_check_1.f90
  b20d6567c64e586142f5c87cd8df5714  gcc/testsuite/gfortran.dg/elemental_args_check_2.f90
  c87ebd6bb5443355c5bdebf35a8197a2  gcc/testsuite/gfortran.dg/elemental_args_check_3.f90
--- 53597,53698 ----
  616992b74a87a78033c22f13469877ec  gcc/testsuite/gfortran.dg/do_check_5.f90
  d46ea4699f717904d6e5bcdcda65d695  gcc/testsuite/gfortran.dg/do_check_6.f90
  bd4bc520857f0ac91a2842fc99e9f070  gcc/testsuite/gfortran.dg/do_check_7.f90
! 500de4fc2d28a7592533f9b970e73543  gcc/testsuite/gfortran.dg/do_check_8.f90
  91d5f3178f55e04655e0ac948132175a  gcc/testsuite/gfortran.dg/do_check_9.f90
  cc944e9209313a0d97bd7bed7198665c  gcc/testsuite/gfortran.dg/do_concurrent_1.f90
! 63df64d9f21a92b59ec77a898548d661  gcc/testsuite/gfortran.dg/do_concurrent_2.f90
  8352f532d473468c61cc2391cb3b72ed  gcc/testsuite/gfortran.dg/do_concurrent_3.f90
! 32e106b8f080a6a519f1a6031f8706cf  gcc/testsuite/gfortran.dg/do_concurrent_4.f90
! 9d269b2625bbee464f27409d4076d552  gcc/testsuite/gfortran.dg/do_concurrent_6.f90
! 1d93eba1af31ae1574ed4ae6686c8f10  gcc/testsuite/gfortran.dg/do_corner_warn.f90
  8a29329028fba5406c50b33634ee840c  gcc/testsuite/gfortran.dg/do_iterator.f90
! 375a8a74b19d3cbe445b71aac53fed90  gcc/testsuite/gfortran.dg/do_iterator_2.f90
  7d8c65a65d2d7c5bd8b9ada9a3dd140b  gcc/testsuite/gfortran.dg/do_pointer_1.f90
+ 8458b67d26bd265665097f2319d6e2f1  gcc/testsuite/gfortran.dg/do_subscript_1.f90
+ d37e7d4d6baf021e73df70552ca853bf  gcc/testsuite/gfortran.dg/do_subscript_2.f90
  a7c723754d10ef5541785fffb91b0578  gcc/testsuite/gfortran.dg/do_while_1.f90
! 23e59fcc0f241300d3822da5f55f6ab5  gcc/testsuite/gfortran.dg/dollar_edit_descriptor_1.f
! eeb8d6e07dce7e2db9e441c445bdd3ac  gcc/testsuite/gfortran.dg/dollar_edit_descriptor_2.f
  e26c1f7f5f5bf58bc20b92b7f15df396  gcc/testsuite/gfortran.dg/dollar_edit_descriptor_3.f
  05870f48404bf1cf7ee24b20b89766c9  gcc/testsuite/gfortran.dg/dollar_sym_1.f90
  bee33f45b2081d3f23f2f3b508893078  gcc/testsuite/gfortran.dg/dollar_sym_2.f90
  29c20967118eb556752a80b78d61daa9  gcc/testsuite/gfortran.dg/dollar_sym_3.f
! effb75cdb31e3dbcd1a7b85592b84c1f  gcc/testsuite/gfortran.dg/dos_eol.f
! 952c16a38ae15d1e36ed9b9562c250d5  gcc/testsuite/gfortran.dg/dot_product_1.f03
! 026122ead1ea6dbb8a504ecdcd82b431  gcc/testsuite/gfortran.dg/dot_product_2.f90
  56b87b8faca0cadde3460f89f290587d  gcc/testsuite/gfortran.dg/dot_product_3.f90
+ 59b2f935bfcc5f831c3ea6bf7284f9ae  gcc/testsuite/gfortran.dg/dot_product_4.f90
  28c9ee70843b7ef41ef74327bc08fb12  gcc/testsuite/gfortran.dg/double_complex_1.f90
! 2b14c637e88779e7d227240202ac5109  gcc/testsuite/gfortran.dg/dshift_1.F90
! 798f21dafaa793f02ec0270a78e9ff64  gcc/testsuite/gfortran.dg/dshift_2.F90
  b77540934baa222e51abc3df6ff7017e  gcc/testsuite/gfortran.dg/dshift_3.f90
! 15dba5b61e8cb3d4661427c07c19198d  gcc/testsuite/gfortran.dg/dtio_1.f90
! a0c2924965358ad11ea7a96bb88a26f4  gcc/testsuite/gfortran.dg/dtio_10.f90
  3562eeed3364b43ff9bf9c2e9f1a5629  gcc/testsuite/gfortran.dg/dtio_11.f90
! 98de7403535c4bf88b1998a6fb41ad66  gcc/testsuite/gfortran.dg/dtio_12.f90
! 7d3434eb83319524de4b69b158d3414b  gcc/testsuite/gfortran.dg/dtio_13.f90
! 225c7c600cafc37a0ca107f2d5a28617  gcc/testsuite/gfortran.dg/dtio_14.f90
! 651557099602376b623a8f6091bf1c0d  gcc/testsuite/gfortran.dg/dtio_15.f90
! 41f2a4098c0c933523a707738847972d  gcc/testsuite/gfortran.dg/dtio_16.f90
! 20a8b92819e39f5a7fced640c61e15bb  gcc/testsuite/gfortran.dg/dtio_17.f90
  ee75802ea56b38abc636e7ee07fdd457  gcc/testsuite/gfortran.dg/dtio_18.f90
! 95d2472574ef48d0a3fd7f4224b3a69c  gcc/testsuite/gfortran.dg/dtio_19.f90
! 99b2afc06ceb8067247052f95871eb7b  gcc/testsuite/gfortran.dg/dtio_2.f90
! eb787080d1b25dcd7c85df0cf60869bd  gcc/testsuite/gfortran.dg/dtio_20.f03
! 21052386129df576c2901be04b6193bc  gcc/testsuite/gfortran.dg/dtio_21.f90
! 3135c1f8094a7fd54090c6099d491b2a  gcc/testsuite/gfortran.dg/dtio_22.f90
  4be521506e4eeeef4204dc7184c8f719  gcc/testsuite/gfortran.dg/dtio_23.f90
! f10c4681bf625e46adae521a3de13a48  gcc/testsuite/gfortran.dg/dtio_24.f90
! 827cd017720b8fdbd993d27445c97ab8  gcc/testsuite/gfortran.dg/dtio_25.f90
! 3c65210cfd6b0cb280ecfe12c8c6cffb  gcc/testsuite/gfortran.dg/dtio_26.f03
! 351e22361863f45f993c69f71231e1c0  gcc/testsuite/gfortran.dg/dtio_27.f90
! 8a8e9807b9e54dfdb05a6e8214e7ed3f  gcc/testsuite/gfortran.dg/dtio_28.f03
  2dfca8c6da6bd3ea5e5d2c6cd01715b7  gcc/testsuite/gfortran.dg/dtio_29.f03
! 09d4b95dee69420451a7356dc6a9a43d  gcc/testsuite/gfortran.dg/dtio_3.f90
! 67cb2a7e7acee5005b228fe95dc4008f  gcc/testsuite/gfortran.dg/dtio_30.f03
! 6ecde2e2aba141ac0bad8cb9a28a2f02  gcc/testsuite/gfortran.dg/dtio_31.f03
! 79321cf77f987c907fe44d702b9abc52  gcc/testsuite/gfortran.dg/dtio_32.f03
! c9bae3926493665cd6a3a6bca4b52e53  gcc/testsuite/gfortran.dg/dtio_33.f90
! 98feff72bfe6f9469278b8b049519af2  gcc/testsuite/gfortran.dg/dtio_4.f90
! 5f7b1d1f57ac24dc9129e7dc2e9bc2f4  gcc/testsuite/gfortran.dg/dtio_5.f90
  5c6704b3b1b7266ea126e709df28bebe  gcc/testsuite/gfortran.dg/dtio_6.f90
! 416c852bc110486241a963ccac6a32e0  gcc/testsuite/gfortran.dg/dtio_7.f90
! 515e452fcd5a94727ccb2b88572ca94b  gcc/testsuite/gfortran.dg/dtio_8.f90
! 9e1a92cb81bf0591af7d695eb2a39cf6  gcc/testsuite/gfortran.dg/dtio_9.f90
  eab02fbb223a2efc295eb3541b208a5c  gcc/testsuite/gfortran.dg/dummy_functions_1.f90
  8f2cd08ff6c7f2da646ec61c190742f7  gcc/testsuite/gfortran.dg/dummy_optional_arg.f90
  aa587ea16c93c473e39853a8323414b3  gcc/testsuite/gfortran.dg/dummy_procedure_1.f90
  df8f738c1c56d7f97d8f23a57813710f  gcc/testsuite/gfortran.dg/dummy_procedure_10.f90
  d04b0c3a2c904d46837b8b4cd01a4eb3  gcc/testsuite/gfortran.dg/dummy_procedure_11.f90
  2f54899059a44fb9ec6dd65dd36dcdd4  gcc/testsuite/gfortran.dg/dummy_procedure_2.f90
! 927ca319f6523c512463b28e4a6a174d  gcc/testsuite/gfortran.dg/dummy_procedure_3.f90
  a0572a1bab68b675e7ec3a07fdfcbf07  gcc/testsuite/gfortran.dg/dummy_procedure_4.f90
  4b7612d5637347837278b4ed88513c0c  gcc/testsuite/gfortran.dg/dummy_procedure_5.f90
  23a4bec5e77fdd2d778693195581f210  gcc/testsuite/gfortran.dg/dummy_procedure_6.f90
! 970d1b360cecc9360ef0c7874c385ba9  gcc/testsuite/gfortran.dg/dummy_procedure_7.f90
  00a1d927ffb12ee1a6a28b645ea99401  gcc/testsuite/gfortran.dg/dummy_procedure_8.f90
  5f12475cc648a26a838db8b56b0da0a4  gcc/testsuite/gfortran.dg/dummy_procedure_9.f90
! ebf292482a4af112fc8854c1242c9d2c  gcc/testsuite/gfortran.dg/dup_save_1.f90
! e5953f3282246d5f9930f3e8d95d717a  gcc/testsuite/gfortran.dg/dup_save_2.f90
  a6123bf77f221c60e8ae2f81bf6d0479  gcc/testsuite/gfortran.dg/duplicate_labels.f90
  e40638792418f370fabf94b973bb629c  gcc/testsuite/gfortran.dg/duplicate_labels_2.f
  cbbe52c4a4a14b77dd9dc589b31313a8  gcc/testsuite/gfortran.dg/duplicate_type_1.f90
  d783c3768ae4abd6b4ecf2eb0ec3f62a  gcc/testsuite/gfortran.dg/duplicate_type_2.f90
  f840f866ed45ad34dfb9ad0c63e0ba6a  gcc/testsuite/gfortran.dg/duplicate_type_3.f90
! 15c849a6c7642a58644696c3dc805dbf  gcc/testsuite/gfortran.dg/dynamic_dispatch_1.f03
  964e888cbcf20e4e255bf6d97cf04045  gcc/testsuite/gfortran.dg/dynamic_dispatch_10.f03
! b20ac0694cc9f5cd50670d9fb1937e22  gcc/testsuite/gfortran.dg/dynamic_dispatch_11.f03
! 7417f8b8486958585534e10447c0b3ba  gcc/testsuite/gfortran.dg/dynamic_dispatch_12.f90
! ed385d9e717244e5d05866b9cb454905  gcc/testsuite/gfortran.dg/dynamic_dispatch_2.f03
! 319173fc9f954753b6469a01b0696448  gcc/testsuite/gfortran.dg/dynamic_dispatch_3.f03
! 5cdc56347d3aab4f3e473c221b10cdd0  gcc/testsuite/gfortran.dg/dynamic_dispatch_4.f03
! 9c565bf3ee2bc8eadbd5d1aef161efb9  gcc/testsuite/gfortran.dg/dynamic_dispatch_5.f03
  4b59bf0c44a7eace63fee6c4a9acfd5a  gcc/testsuite/gfortran.dg/dynamic_dispatch_6.f03
! dd0c1c857031fcb77db2e68d93532305  gcc/testsuite/gfortran.dg/dynamic_dispatch_7.f03
! dd013ee4400372db84f09ca56d8b3ba3  gcc/testsuite/gfortran.dg/dynamic_dispatch_8.f03
! 971f2ffe3a968e94613324a9dd4c1923  gcc/testsuite/gfortran.dg/dynamic_dispatch_9.f03
! a1e324dbac8b102aef7ffffd392b4a70  gcc/testsuite/gfortran.dg/e_d_fmt.f90
! ab75703951551fc147b1dd27c8bfd042  gcc/testsuite/gfortran.dg/edit_real_1.f90
  1ca998f810cc468a20cfcb95e9b68e5f  gcc/testsuite/gfortran.dg/elemental_args_check_1.f90
  b20d6567c64e586142f5c87cd8df5714  gcc/testsuite/gfortran.dg/elemental_args_check_2.f90
  c87ebd6bb5443355c5bdebf35a8197a2  gcc/testsuite/gfortran.dg/elemental_args_check_3.f90
*************** b9659895d4a6323adbf764de6fd7a0aa  gcc/te
*** 50151,50191 ****
  945bb7a0d110a838c661559b0a1b10a4  gcc/testsuite/gfortran.dg/elemental_args_check_6.f90
  b7077bdd651a28345dfba505e670814d  gcc/testsuite/gfortran.dg/elemental_args_check_7.f90
  7a31c26108321afbdb6ada13fa49f4a7  gcc/testsuite/gfortran.dg/elemental_bind_c.f90
! 53ad0c53c46b6424ef306c9ba1e7bef4  gcc/testsuite/gfortran.dg/elemental_by_value_1.f90
! 587babf8034cd974ef9562927a2c4c4f  gcc/testsuite/gfortran.dg/elemental_dependency_1.f90
  79f1d5e6b62a6f8680ac42ebea078d91  gcc/testsuite/gfortran.dg/elemental_dependency_2.f90
  1c0cbe42268472d90d401b8a2fcb2369  gcc/testsuite/gfortran.dg/elemental_dependency_3.f90
! 46eae59131af0b3ebbc0e4e2a026e60c  gcc/testsuite/gfortran.dg/elemental_dependency_4.f90
! a765bd8170c4d956c1d86eb359857f3a  gcc/testsuite/gfortran.dg/elemental_dependency_5.f90
! a6988a790ad5cb9dbaa189d420812cbc  gcc/testsuite/gfortran.dg/elemental_dependency_6.f90
  4e458aeb8e0b923bab1f2dfc693d5a71  gcc/testsuite/gfortran.dg/elemental_function_1.f90
  e228c219820da6c0d4d312bd5bd2165a  gcc/testsuite/gfortran.dg/elemental_initializer_1.f90
  bb58a11f51652cefd566851a1485c6f0  gcc/testsuite/gfortran.dg/elemental_intrinsic_1.f03
  4c1ec6aea32b30a4a1edeb92c4abb5d3  gcc/testsuite/gfortran.dg/elemental_non_intrinsic_dummy_1.f90
  a237f52cf9e04e4f33058f6fcba6aac1  gcc/testsuite/gfortran.dg/elemental_optional_args_1.f90
! f965eb5cb8724bb9df7d7088a3022215  gcc/testsuite/gfortran.dg/elemental_optional_args_2.f90
! 003ac2c7bb9bf6bb95b03f335440179e  gcc/testsuite/gfortran.dg/elemental_optional_args_3.f90
! 93128ff638b746732daa28ce118f4bfa  gcc/testsuite/gfortran.dg/elemental_optional_args_4.f90
! 49835b0eeaead1be26f076392318d744  gcc/testsuite/gfortran.dg/elemental_optional_args_5.f03
! 8711c111720472c20ceb1a5630bd6700  gcc/testsuite/gfortran.dg/elemental_optional_args_6.f90
! 1e85c2553ea646be670a07a6703b78e1  gcc/testsuite/gfortran.dg/elemental_optional_args_7.f90
  0152497e60abd10da3f36bf800ddb07d  gcc/testsuite/gfortran.dg/elemental_pointer_1.f90
  abaadf21748f33f90675ab8a752db0c2  gcc/testsuite/gfortran.dg/elemental_result_1.f90
! 5d20ddd15981b444b60f8ddadf036a94  gcc/testsuite/gfortran.dg/elemental_scalar_args_1.f90
! 15b80e2c0594e1d505af383fb303e298  gcc/testsuite/gfortran.dg/elemental_scalar_args_2.f90
! 510b443dabc94cb8c285eff72d463931  gcc/testsuite/gfortran.dg/elemental_subroutine_1.f90
! bf258978cdb981395ca44a6dd91bc009  gcc/testsuite/gfortran.dg/elemental_subroutine_10.f90
! b2656f6f2810f13652a4b549acc6b268  gcc/testsuite/gfortran.dg/elemental_subroutine_11.f90
! 7b6fe5df19fa73b86862a3a0bc2394a0  gcc/testsuite/gfortran.dg/elemental_subroutine_2.f90
! 05320bfe94e838a305418857e528d87f  gcc/testsuite/gfortran.dg/elemental_subroutine_3.f90
  ead98760a8d86055f509d45731be5048  gcc/testsuite/gfortran.dg/elemental_subroutine_4.f90
  09a12005831f85730627c01a6d1e9024  gcc/testsuite/gfortran.dg/elemental_subroutine_5.f90
  c78a81914b4d147d96ed3ec46cd15a54  gcc/testsuite/gfortran.dg/elemental_subroutine_6.f90
! ac19ee1e489c101e40d62d762c9465cc  gcc/testsuite/gfortran.dg/elemental_subroutine_7.f90
  15519642ff7affe6c5f84e52dc0af8e7  gcc/testsuite/gfortran.dg/elemental_subroutine_8.f90
! c468b3ffd72a4bd31e3ea0da9685d6e4  gcc/testsuite/gfortran.dg/elemental_subroutine_9.f90
  ef7a86fef107a422a6e67ac0cde11d12  gcc/testsuite/gfortran.dg/empty_derived_type.f90
! f63076ef26944496b1c43542ea168c73  gcc/testsuite/gfortran.dg/empty_format_1.f90
  f001da63348b64d8eb6a4bac1d826392  gcc/testsuite/gfortran.dg/empty_function_1.f90
  f6f745177e1846c89284fbd15e18b909  gcc/testsuite/gfortran.dg/empty_label.f
  a96e1c3712ceeb06eeaf71bb72fd91c3  gcc/testsuite/gfortran.dg/empty_label.f90
--- 53701,53741 ----
  945bb7a0d110a838c661559b0a1b10a4  gcc/testsuite/gfortran.dg/elemental_args_check_6.f90
  b7077bdd651a28345dfba505e670814d  gcc/testsuite/gfortran.dg/elemental_args_check_7.f90
  7a31c26108321afbdb6ada13fa49f4a7  gcc/testsuite/gfortran.dg/elemental_bind_c.f90
! 88cce3195111731e0bf8d8931bbb2d51  gcc/testsuite/gfortran.dg/elemental_by_value_1.f90
! c8e3da1f40192d7cdd52bdc76494e242  gcc/testsuite/gfortran.dg/elemental_dependency_1.f90
  79f1d5e6b62a6f8680ac42ebea078d91  gcc/testsuite/gfortran.dg/elemental_dependency_2.f90
  1c0cbe42268472d90d401b8a2fcb2369  gcc/testsuite/gfortran.dg/elemental_dependency_3.f90
! 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
  4e458aeb8e0b923bab1f2dfc693d5a71  gcc/testsuite/gfortran.dg/elemental_function_1.f90
  e228c219820da6c0d4d312bd5bd2165a  gcc/testsuite/gfortran.dg/elemental_initializer_1.f90
  bb58a11f51652cefd566851a1485c6f0  gcc/testsuite/gfortran.dg/elemental_intrinsic_1.f03
  4c1ec6aea32b30a4a1edeb92c4abb5d3  gcc/testsuite/gfortran.dg/elemental_non_intrinsic_dummy_1.f90
  a237f52cf9e04e4f33058f6fcba6aac1  gcc/testsuite/gfortran.dg/elemental_optional_args_1.f90
! fa9157510afc1b63296c677f231f9dbe  gcc/testsuite/gfortran.dg/elemental_optional_args_2.f90
! dbf9d97edfea0a9adbf9d609aa223675  gcc/testsuite/gfortran.dg/elemental_optional_args_3.f90
! 726c22d1b4536296164f9f9d7a1b1074  gcc/testsuite/gfortran.dg/elemental_optional_args_4.f90
! 78c94bf645ddf38530d8d6506f1bef98  gcc/testsuite/gfortran.dg/elemental_optional_args_5.f03
! f05a634766967d1e7d4ffb729200b5f8  gcc/testsuite/gfortran.dg/elemental_optional_args_6.f90
! c2032e256cba834bb98ed078d4f35a6e  gcc/testsuite/gfortran.dg/elemental_optional_args_7.f90
  0152497e60abd10da3f36bf800ddb07d  gcc/testsuite/gfortran.dg/elemental_pointer_1.f90
  abaadf21748f33f90675ab8a752db0c2  gcc/testsuite/gfortran.dg/elemental_result_1.f90
! 7ccc7650bcbbb93e78493bef82845108  gcc/testsuite/gfortran.dg/elemental_scalar_args_1.f90
! a5072fad1c64d8a1506f23b09e9ff752  gcc/testsuite/gfortran.dg/elemental_scalar_args_2.f90
! 67e8e5bdf2c0371bd2f603b37c23e8e1  gcc/testsuite/gfortran.dg/elemental_subroutine_1.f90
! 62a3659a580fb9e901474e4e5a51c5ad  gcc/testsuite/gfortran.dg/elemental_subroutine_10.f90
! 9fe5d08a434680e5dd3d07a99ef150e1  gcc/testsuite/gfortran.dg/elemental_subroutine_11.f90
! 09232eed6386a022b298421083f91c9d  gcc/testsuite/gfortran.dg/elemental_subroutine_2.f90
! 211fdca574b061e95cbd727e0779c144  gcc/testsuite/gfortran.dg/elemental_subroutine_3.f90
  ead98760a8d86055f509d45731be5048  gcc/testsuite/gfortran.dg/elemental_subroutine_4.f90
  09a12005831f85730627c01a6d1e9024  gcc/testsuite/gfortran.dg/elemental_subroutine_5.f90
  c78a81914b4d147d96ed3ec46cd15a54  gcc/testsuite/gfortran.dg/elemental_subroutine_6.f90
! c26d4506badcfb975bcc871cc4ccc5e4  gcc/testsuite/gfortran.dg/elemental_subroutine_7.f90
  15519642ff7affe6c5f84e52dc0af8e7  gcc/testsuite/gfortran.dg/elemental_subroutine_8.f90
! a7921a85af871672f671c9f7b66abb61  gcc/testsuite/gfortran.dg/elemental_subroutine_9.f90
  ef7a86fef107a422a6e67ac0cde11d12  gcc/testsuite/gfortran.dg/empty_derived_type.f90
! 399dc8661293f602eaf53ec38309a214  gcc/testsuite/gfortran.dg/empty_format_1.f90
  f001da63348b64d8eb6a4bac1d826392  gcc/testsuite/gfortran.dg/empty_function_1.f90
  f6f745177e1846c89284fbd15e18b909  gcc/testsuite/gfortran.dg/empty_label.f
  a96e1c3712ceeb06eeaf71bb72fd91c3  gcc/testsuite/gfortran.dg/empty_label.f90
*************** a8b86b2c225edea78fe14e19992f81a8  gcc/te
*** 50195,50233 ****
  5a7e9d3b2b7da1b9e965216a8fa090ee  gcc/testsuite/gfortran.dg/end_block_label_1.f90
  5cf677494a4ddc70edf142f8d29d30a2  gcc/testsuite/gfortran.dg/end_subroutine_1.f90
  f7f5eb47fb840661ab7954bf34c00851  gcc/testsuite/gfortran.dg/end_subroutine_2.f90
! ee4b4d80fe61032942726ef5584aaa91  gcc/testsuite/gfortran.dg/endfile.f
! e93ae23dc626db7d199e655efb508066  gcc/testsuite/gfortran.dg/endfile.f90
! aee31a1383ac64d36c1841c06e6d4efd  gcc/testsuite/gfortran.dg/endfile_2.f90
  c78eea8dc991f1d155d3c51ceb146c23  gcc/testsuite/gfortran.dg/endfile_3.f90
  9c514fc18e9a5ecf3ff680c3bce4a7b6  gcc/testsuite/gfortran.dg/endfile_4.f90
! d567d5b4840878ab834bb0c7bbc09c37  gcc/testsuite/gfortran.dg/entry_1.f90
! 948ae30374a27b838a5593e45ecabecd  gcc/testsuite/gfortran.dg/entry_10.f90
  18585d9300f842588210b22ceac413a9  gcc/testsuite/gfortran.dg/entry_11.f90
! 8a829a1855604240048cdad0dfb56c01  gcc/testsuite/gfortran.dg/entry_12.f90
! 32ef4f9b43149997e1c7461d2f0492d7  gcc/testsuite/gfortran.dg/entry_13.f90
! 54348ebbe78df3f35606081f94e22ec0  gcc/testsuite/gfortran.dg/entry_14.f90
  6555086fbaf26d81529a5004aa2bd6e0  gcc/testsuite/gfortran.dg/entry_15.f90
! 48b960f743f3103f156bf3b5220091d5  gcc/testsuite/gfortran.dg/entry_16.f90
  5fa9aaa9fb85b7c7831d962928d8fb31  gcc/testsuite/gfortran.dg/entry_17.f90
  c3b9b0c7f1876d8989f1efa78c168e18  gcc/testsuite/gfortran.dg/entry_18.f90
  fe5fde412958e201197383cf5ae0b542  gcc/testsuite/gfortran.dg/entry_19.f90
  dde6c08dab677880bb894b2143cf090b  gcc/testsuite/gfortran.dg/entry_2.f90
  df7fd6f7581d27330f0013f9a3246e99  gcc/testsuite/gfortran.dg/entry_20.f90
  72628f114c4fb8fab6905f4a0f29e09f  gcc/testsuite/gfortran.dg/entry_21.f90
! 9ed1fb10bd35039c373802778017d0b3  gcc/testsuite/gfortran.dg/entry_3.f90
  b38bdeb67849d262a6ff0a7a985e1835  gcc/testsuite/gfortran.dg/entry_4.f90
  d9c60fad31625139f9e0a67c69d59e59  gcc/testsuite/gfortran.dg/entry_5.f90
! 3883562c129087c85dcab980ce46f39c  gcc/testsuite/gfortran.dg/entry_6.f90
  6395447cae0ab3861d3c71240340b479  gcc/testsuite/gfortran.dg/entry_7.f90
  3abd4c13a5e9f5e3fee74f3281695e3a  gcc/testsuite/gfortran.dg/entry_8.f90
! c3ad133d952132d3042d66d9e19f0cdc  gcc/testsuite/gfortran.dg/entry_9.f90
  07aa700fb1b164ac15ab72253b3872d0  gcc/testsuite/gfortran.dg/entry_array_specs_1.f90
! a5bba0e569178351983183c6eb729108  gcc/testsuite/gfortran.dg/entry_array_specs_2.f
  45a2f5650337d4e57bb0dcad885dc763  gcc/testsuite/gfortran.dg/entry_array_specs_3.f90
  6e81144fa42f28da0b4a9531866c5e5e  gcc/testsuite/gfortran.dg/entry_dummy_ref_1.f90
  1e94bd95f79e749a798aa87b8ad12cc2  gcc/testsuite/gfortran.dg/entry_dummy_ref_2.f90
  c599b1680d2f488fd6ad59c782c4c43a  gcc/testsuite/gfortran.dg/entry_dummy_ref_3.f90
! de78aeeaad1f81a03574b4b2a40ea5bf  gcc/testsuite/gfortran.dg/enum_1.f90
  04cf22d4d30474efdc2a85b44f31083a  gcc/testsuite/gfortran.dg/enum_10.c
  0454dcbbb5f15ffd3c8e9af5c0207d73  gcc/testsuite/gfortran.dg/enum_10.f90
  13a8b034c5b9efc7a97ce7e8e16af9cf  gcc/testsuite/gfortran.dg/enum_2.f90
--- 53745,53783 ----
  5a7e9d3b2b7da1b9e965216a8fa090ee  gcc/testsuite/gfortran.dg/end_block_label_1.f90
  5cf677494a4ddc70edf142f8d29d30a2  gcc/testsuite/gfortran.dg/end_subroutine_1.f90
  f7f5eb47fb840661ab7954bf34c00851  gcc/testsuite/gfortran.dg/end_subroutine_2.f90
! 8d05fb998090eccd69cd036980819d72  gcc/testsuite/gfortran.dg/endfile.f
! e573acf63840bae4577c00f5bcaf0915  gcc/testsuite/gfortran.dg/endfile.f90
! 39a811a723e63905d3a48473e277f874  gcc/testsuite/gfortran.dg/endfile_2.f90
  c78eea8dc991f1d155d3c51ceb146c23  gcc/testsuite/gfortran.dg/endfile_3.f90
  9c514fc18e9a5ecf3ff680c3bce4a7b6  gcc/testsuite/gfortran.dg/endfile_4.f90
! 090cd9c6c2f084a2272d43d7887186ae  gcc/testsuite/gfortran.dg/entry_1.f90
! eadc37555535deda17391663896984d8  gcc/testsuite/gfortran.dg/entry_10.f90
  18585d9300f842588210b22ceac413a9  gcc/testsuite/gfortran.dg/entry_11.f90
! 486dfd466ade5d3c615037f72ef4f6b5  gcc/testsuite/gfortran.dg/entry_12.f90
! 64efe9cf6e0ef17c5f621f989e51c6ca  gcc/testsuite/gfortran.dg/entry_13.f90
! b4b167867f63ca237d55146c750a4c9e  gcc/testsuite/gfortran.dg/entry_14.f90
  6555086fbaf26d81529a5004aa2bd6e0  gcc/testsuite/gfortran.dg/entry_15.f90
! d48c60676ce29b99510e5fb9ff74bca5  gcc/testsuite/gfortran.dg/entry_16.f90
  5fa9aaa9fb85b7c7831d962928d8fb31  gcc/testsuite/gfortran.dg/entry_17.f90
  c3b9b0c7f1876d8989f1efa78c168e18  gcc/testsuite/gfortran.dg/entry_18.f90
  fe5fde412958e201197383cf5ae0b542  gcc/testsuite/gfortran.dg/entry_19.f90
  dde6c08dab677880bb894b2143cf090b  gcc/testsuite/gfortran.dg/entry_2.f90
  df7fd6f7581d27330f0013f9a3246e99  gcc/testsuite/gfortran.dg/entry_20.f90
  72628f114c4fb8fab6905f4a0f29e09f  gcc/testsuite/gfortran.dg/entry_21.f90
! 0f79e5c423680a19e0f1ac49f4a91670  gcc/testsuite/gfortran.dg/entry_3.f90
  b38bdeb67849d262a6ff0a7a985e1835  gcc/testsuite/gfortran.dg/entry_4.f90
  d9c60fad31625139f9e0a67c69d59e59  gcc/testsuite/gfortran.dg/entry_5.f90
! de0c3c9c9c23101826d53117929928f9  gcc/testsuite/gfortran.dg/entry_6.f90
  6395447cae0ab3861d3c71240340b479  gcc/testsuite/gfortran.dg/entry_7.f90
  3abd4c13a5e9f5e3fee74f3281695e3a  gcc/testsuite/gfortran.dg/entry_8.f90
! b75989f5db80b7aee99e7a1de31e46d2  gcc/testsuite/gfortran.dg/entry_9.f90
  07aa700fb1b164ac15ab72253b3872d0  gcc/testsuite/gfortran.dg/entry_array_specs_1.f90
! 4e55bb2a5f5846a6acd01af6bfcf6571  gcc/testsuite/gfortran.dg/entry_array_specs_2.f
  45a2f5650337d4e57bb0dcad885dc763  gcc/testsuite/gfortran.dg/entry_array_specs_3.f90
  6e81144fa42f28da0b4a9531866c5e5e  gcc/testsuite/gfortran.dg/entry_dummy_ref_1.f90
  1e94bd95f79e749a798aa87b8ad12cc2  gcc/testsuite/gfortran.dg/entry_dummy_ref_2.f90
  c599b1680d2f488fd6ad59c782c4c43a  gcc/testsuite/gfortran.dg/entry_dummy_ref_3.f90
! 50f9f4df45e63c013fac72efda79ca46  gcc/testsuite/gfortran.dg/enum_1.f90
  04cf22d4d30474efdc2a85b44f31083a  gcc/testsuite/gfortran.dg/enum_10.c
  0454dcbbb5f15ffd3c8e9af5c0207d73  gcc/testsuite/gfortran.dg/enum_10.f90
  13a8b034c5b9efc7a97ce7e8e16af9cf  gcc/testsuite/gfortran.dg/enum_2.f90
*************** fde2950a31cbe78fdcfb79f85f2eb622  gcc/te
*** 50237,50398 ****
  6a7bc2a04e4974cd132b48419594b5ad  gcc/testsuite/gfortran.dg/enum_6.f90
  bf00af26b66f4e2c81bccc3378de8a64  gcc/testsuite/gfortran.dg/enum_7.f90
  bedbfa7559dcab9252036586887ef053  gcc/testsuite/gfortran.dg/enum_8.f90
! 7f0b720ab4305a497e8f6e600092e1bc  gcc/testsuite/gfortran.dg/enum_9.f90
! 7ab702c0c5c00cd9a2eeea0ee8dacf87  gcc/testsuite/gfortran.dg/eof_1.f90
! 015463de1e45aea184a6fc4fa3d85c7b  gcc/testsuite/gfortran.dg/eof_2.f90
  13491ddbf6de8262d5d57552a484c85e  gcc/testsuite/gfortran.dg/eof_3.f90
! 652c24d97cbb6cd80f3850c8a85f5ab7  gcc/testsuite/gfortran.dg/eof_4.f90
! 7160714902e8526c3f517837d9224c99  gcc/testsuite/gfortran.dg/eof_5.f90
  b2cbcfb2f5b6181bb94c3c59ec9d0da3  gcc/testsuite/gfortran.dg/eor_1.f90
! 9d52889ef66573e2ab4d49f5ddf52ad2  gcc/testsuite/gfortran.dg/eor_handling_1.f90
! 78de548a7a8c2423d47f208aad705a5c  gcc/testsuite/gfortran.dg/eor_handling_2.f90
! fbfb93faf7606e6e79f5ada1190b2701  gcc/testsuite/gfortran.dg/eor_handling_3.f90
! 7fd3797f34d994ec7a8ac6fc95b2ba00  gcc/testsuite/gfortran.dg/eor_handling_4.f90
! 2271271a30a843847d2c01dfbcc208a8  gcc/testsuite/gfortran.dg/eor_handling_5.f90
  555016d7b0cf326a219bd5609eb70233  gcc/testsuite/gfortran.dg/eoshift.f90
  65e96916326bcd87cfe7f6790959bdb2  gcc/testsuite/gfortran.dg/eoshift_2.f90
  d23c3cf960da52cea7987d80d427ca33  gcc/testsuite/gfortran.dg/eoshift_bounds_1.f90
! 3612eecd5dc644dfd619a1894a781783  gcc/testsuite/gfortran.dg/eoshift_large_1.f90
  ab70a97d276544b94e7ac094c3d3e859  gcc/testsuite/gfortran.dg/equiv_1.f90
  22bd6673bb33ef6c04f0188d8cb01b3e  gcc/testsuite/gfortran.dg/equiv_2.f90
  81fca82d5cbacf45dab41afd015c381d  gcc/testsuite/gfortran.dg/equiv_5.f90
! aaf9c2e0bb4fa927c2371b1e8454e16b  gcc/testsuite/gfortran.dg/equiv_6.f90
! 8ab1d79b7a3a0729aa7b4f7a7ac7630f  gcc/testsuite/gfortran.dg/equiv_7.f90
  1c72610e8ff044e67659c818bbc5dea6  gcc/testsuite/gfortran.dg/equiv_8.f90
! a91955b8e2325c94a71cd5d13ad67600  gcc/testsuite/gfortran.dg/equiv_9.f90
  007a185cab4821daf8f77132f4d4a74a  gcc/testsuite/gfortran.dg/equiv_constraint_1.f90
  2f170d7d98ee5f95dbba824777873f0f  gcc/testsuite/gfortran.dg/equiv_constraint_2.f90
  4b6e23df6a0c150955e57d759c8cb77a  gcc/testsuite/gfortran.dg/equiv_constraint_3.f90
! 9d7fe38fcdaa6d1edb4d178d6b4873a2  gcc/testsuite/gfortran.dg/equiv_constraint_4.f90
  e318befd0c3b18d7301d38ff5b28f23a  gcc/testsuite/gfortran.dg/equiv_constraint_5.f90
  011e025aadf505d11b0788e0bab74323  gcc/testsuite/gfortran.dg/equiv_constraint_6.f90
  63b1381908c78be3eecff308f4451c21  gcc/testsuite/gfortran.dg/equiv_constraint_7.f90
  45574735841eba4b3b61909348336fcb  gcc/testsuite/gfortran.dg/equiv_constraint_8.f90
  d9dcad9e03bd8c27d5f76eaa4cf71a0e  gcc/testsuite/gfortran.dg/equiv_constraint_9.f90
  6a23911290c611310b0fa83dd28addb1  gcc/testsuite/gfortran.dg/equiv_constraint_bind_c.f90
! 99482fdb2fae9268b6d2c4fa63901d2a  gcc/testsuite/gfortran.dg/equiv_pure.f90
  7068ea1b9ef6f4e1c0602de0112c99c8  gcc/testsuite/gfortran.dg/equiv_substr.f90
  1a93c19b7b17152e8d50abaa1075e512  gcc/testsuite/gfortran.dg/erf.f90
! 604dd8597b2f16715ae50fb1f754e243  gcc/testsuite/gfortran.dg/erf_2.F90
! 0478bf438b58fef6e738f867c4df9974  gcc/testsuite/gfortran.dg/erf_3.F90
! 0eb845c5452926de4930216a03ec5901  gcc/testsuite/gfortran.dg/erfc_scaled_1.f90
  6ff6465694368d012e66b39c130fe7ae  gcc/testsuite/gfortran.dg/erfc_scaled_2.f90
  1602fcf07de342d8b9d0889ca1190b7a  gcc/testsuite/gfortran.dg/errnocheck_1.f90
  aaddd233c21720244832702f0c8b31f3  gcc/testsuite/gfortran.dg/error_format.f90
! c7ce97fdbc07c1f50837bb6ee44f2a8b  gcc/testsuite/gfortran.dg/error_format_2.f90
  ff3e9d3f824a6daa8aec61fa05490e62  gcc/testsuite/gfortran.dg/error_recovery_1.f90
  40311a010c9456142b92523ccecedfa1  gcc/testsuite/gfortran.dg/error_recovery_2.f90
  652764a9d9c1d3d89855a32a2885f17c  gcc/testsuite/gfortran.dg/error_recovery_3.f90
  fcded1a161a5e4e72160c1c3335ef6eb  gcc/testsuite/gfortran.dg/error_recovery_4.f90
! 85a421c80a5acaba21bb27c52987c442  gcc/testsuite/gfortran.dg/error_recovery_5.f90
  6b99ea3456530382a5ad24ab6471e411  gcc/testsuite/gfortran.dg/error_stop_1.f08
  fb235ce4282f67d4a702c173152e416f  gcc/testsuite/gfortran.dg/error_stop_2.f08
! 8ee178dbe95d7e558c8d376093749af4  gcc/testsuite/gfortran.dg/error_stop_3.f90
! 179a59ec9b4c69617eb006b728b3cabc  gcc/testsuite/gfortran.dg/error_stop_4.f90
  0ca82a84dc74da448e40d93f3315da3f  gcc/testsuite/gfortran.dg/execute_command_line_1.f90
! fadf7b8cfcfdf666b5255138b25f11f3  gcc/testsuite/gfortran.dg/execute_command_line_2.f90
! 0023dac255122c19e53ce47a35916ee5  gcc/testsuite/gfortran.dg/execute_command_line_3.f90
! b3d836c21b21e9a9c286cec049d09f39  gcc/testsuite/gfortran.dg/exit_1.f08
  3caf7d42fa2f30bfa956eeb72b42bef2  gcc/testsuite/gfortran.dg/exit_2.f08
! dc477d471c26336a1e32bb016376bc9d  gcc/testsuite/gfortran.dg/exit_3.f08
  3699c9dfdbc050c3abd8ea8057f15dd2  gcc/testsuite/gfortran.dg/exit_4.f08
  ee478d85aa892ebcfab70ab167d53520  gcc/testsuite/gfortran.dg/exit_5.f03
! a63a7b8242052318c442feca7de32008  gcc/testsuite/gfortran.dg/exponent_1.f90
! a0b74fda00f9c5255be3c14e5cade4fb  gcc/testsuite/gfortran.dg/exponent_2.f90
! 67b1a5f1fc1b03b37fe0ddb31db8314f  gcc/testsuite/gfortran.dg/extended_char_comparison_1.f
! 2a20ea5b0c45c04aee1ab3cbf795ad69  gcc/testsuite/gfortran.dg/extends_1.f03
  0e44b2eb2c1a529f05be5d12105a377a  gcc/testsuite/gfortran.dg/extends_10.f03
  6334ad8fcee8d591255fc679d233c894  gcc/testsuite/gfortran.dg/extends_11.f03
  b7e2413270f6481d88fa6592dfc294f5  gcc/testsuite/gfortran.dg/extends_12.f03
  d4e27af6507d9c4c9757a560f61cf4b0  gcc/testsuite/gfortran.dg/extends_13.f03
  47fb1ab6628d7320424113485c1be2c0  gcc/testsuite/gfortran.dg/extends_14.f03
! f6c55ba9fac9976bcf395b70165dadb9  gcc/testsuite/gfortran.dg/extends_15.f90
! b548bb0b7feaba31a7b00bfc777f13ec  gcc/testsuite/gfortran.dg/extends_16.f90
! 503d76cdae7d0df9a8e89e1b079854ba  gcc/testsuite/gfortran.dg/extends_2.f03
! 4e2e74ccab51adc96cc4338b49156069  gcc/testsuite/gfortran.dg/extends_3.f03
! 0ae9943aa572f1bffdc269081c0ebb26  gcc/testsuite/gfortran.dg/extends_4.f03
  9d11f2a397ee14b8041a2fce9a864883  gcc/testsuite/gfortran.dg/extends_5.f03
  43803fe546ec3856f64feb8ac4a24806  gcc/testsuite/gfortran.dg/extends_6.f03
  60361d8b741cfcbf3e7d9af2af480b6e  gcc/testsuite/gfortran.dg/extends_7.f03
  924b21bac3e311e95118ff6cd66ee5ef  gcc/testsuite/gfortran.dg/extends_8.f03
  8226a4361c480063e7d5f12e2c912654  gcc/testsuite/gfortran.dg/extends_9.f03
! 2e24b5c52856c87eaacc1ab507836e95  gcc/testsuite/gfortran.dg/extends_type_of_1.f03
! e2f900b7d3f108cf2755f6050abacbb5  gcc/testsuite/gfortran.dg/extends_type_of_2.f03
! b539fd4b41c407a1132080b110904416  gcc/testsuite/gfortran.dg/extends_type_of_3.f90
  df764dd66e24cfa5a1af1a03b983104b  gcc/testsuite/gfortran.dg/external_implicit_none.f90
  4eca303332980555d4132fbdc52d774a  gcc/testsuite/gfortran.dg/external_initializer.f90
  e858d42afb6c6feb41d75f84594d0e1f  gcc/testsuite/gfortran.dg/external_procedures_1.f90
  ecf30036a6f1dd697da6f19c378c5e40  gcc/testsuite/gfortran.dg/external_procedures_2.f90
! 30fc885998cadb53a6bbad1bf7ad6539  gcc/testsuite/gfortran.dg/external_procedures_3.f90
! 96ba9de93044ca0087e427d9332640c6  gcc/testsuite/gfortran.dg/f2003_inquire_1.f03
! 8971e66c89c628fc86cf11372d11c0de  gcc/testsuite/gfortran.dg/f2003_io_1.f03
  6cf29d776ec43acb0920fdcf0409369e  gcc/testsuite/gfortran.dg/f2003_io_2.f03
  4fc0af8a51c36ba359b5799e535d7d63  gcc/testsuite/gfortran.dg/f2003_io_3.f03
! d37f9966900f5adb68129737be64f6aa  gcc/testsuite/gfortran.dg/f2003_io_4.f03
! 69ee7c64b8468bf364fa86c68fac354e  gcc/testsuite/gfortran.dg/f2003_io_5.f03
! 8d2d06bd6a066a2593f758a334a12358  gcc/testsuite/gfortran.dg/f2003_io_6.f03
! 9ed0eb69004af743ae0b80e35ab7af4c  gcc/testsuite/gfortran.dg/f2003_io_7.f03
  49b9793fde5f56d0b65adbd039a64a16  gcc/testsuite/gfortran.dg/f2003_io_8.f03
! 2c31bf65fe9d807e4c5584060770c00f  gcc/testsuite/gfortran.dg/f2c_1.f90
! 6782a9dee9dcf0dd117c57d403dc7640  gcc/testsuite/gfortran.dg/f2c_2.f90
! 6634e6f80768c1f0c1177c0d979f206b  gcc/testsuite/gfortran.dg/f2c_3.f90
  913ca5c713b1966169c08bed2ad9e622  gcc/testsuite/gfortran.dg/f2c_4.c
! 84874ee5868a0acafe23a775a7554ba0  gcc/testsuite/gfortran.dg/f2c_4.f90
  415705f715d6aea7da295239300cfe4c  gcc/testsuite/gfortran.dg/f2c_5.c
  f8d151c2f54f4221a4e3d69b694bb148  gcc/testsuite/gfortran.dg/f2c_5.f90
! b6f944f2d0b9c35dadb903213638bb1a  gcc/testsuite/gfortran.dg/f2c_6.f90
! 02d5a7602f5811cd38f0fc605c91dccc  gcc/testsuite/gfortran.dg/f2c_7.f90
  cb48bc9a0566f3bcad450b477a411d19  gcc/testsuite/gfortran.dg/f2c_8.f90
! c97065b51ddecb2dd0bed020f4e461ed  gcc/testsuite/gfortran.dg/f2c_9.f90
  b2260dd74c0c2b606b400d2e461aaf77  gcc/testsuite/gfortran.dg/feed_1.f90
  06a2412335a46d2c0d1fc2f8d8bd6231  gcc/testsuite/gfortran.dg/feed_2.f90
! 119af5d2a294f56dc05ae8e93a0a6b9a  gcc/testsuite/gfortran.dg/fgetc_1.f90
! 8d8068df6ac24ffed1c07629391baa04  gcc/testsuite/gfortran.dg/fgetc_2.f90
! a5092dd9571c4f2b5be00428c0f86f5a  gcc/testsuite/gfortran.dg/filename_null.f90
  5131e5c566230f78ec144630a732c7a7  gcc/testsuite/gfortran.dg/filepos1.f90
  18131393256651d0bd551639eab3e10e  gcc/testsuite/gfortran.dg/fimplicit_none_1.f90
  c77a0a5fc1106230319c2398b807df5c  gcc/testsuite/gfortran.dg/fimplicit_none_2.f90
  c031807c998e0243776199536a506418  gcc/testsuite/gfortran.dg/finalize_1.f08
  15ab8e9eee9458ca251042b82b7b69d5  gcc/testsuite/gfortran.dg/finalize_10.f90
  784234f297364a91d0841e02c618213b  gcc/testsuite/gfortran.dg/finalize_11.f90
! a2aa53a6bef2147f79ec86d1dfb8cddb  gcc/testsuite/gfortran.dg/finalize_12.f90
! e5b94cbffe7f99e7c12ce6ad807e6fee  gcc/testsuite/gfortran.dg/finalize_13.f90
  3ef469ce81ffe6b5487c2d7cee539969  gcc/testsuite/gfortran.dg/finalize_14.f90
! 1414510a2d39f19e1f8597e4ff2a61bd  gcc/testsuite/gfortran.dg/finalize_15.f90
  27b1fb056fe18ed877f988e451c87c49  gcc/testsuite/gfortran.dg/finalize_16.f90
! ab958563be2a71811940dfb45e00fcf7  gcc/testsuite/gfortran.dg/finalize_17.f90
! 0736b6bc82e037ad035abec57bf7756f  gcc/testsuite/gfortran.dg/finalize_18.f90
  734a74c9eedb936f25342b0800ca3cbf  gcc/testsuite/gfortran.dg/finalize_19.f90
  5b8d5791a59292907708289dbb400629  gcc/testsuite/gfortran.dg/finalize_2.f03
  4183801ee39a268dcebb82252112c302  gcc/testsuite/gfortran.dg/finalize_21.f90
! d88c4f69c4e8abbcf539c35db1c38c47  gcc/testsuite/gfortran.dg/finalize_22.f90
! 694cfd8a3b55175c1a6e16f7d7f60038  gcc/testsuite/gfortran.dg/finalize_23.f90
  7777e7da27f0f204cb380c5791769371  gcc/testsuite/gfortran.dg/finalize_24.f90
! 9d8695ba5d9b84a617601b19fbc15f3e  gcc/testsuite/gfortran.dg/finalize_25.f90
  41d2ab1f1acf2bfddbbdceb10c9ae399  gcc/testsuite/gfortran.dg/finalize_27.f90
  efc9cd9348a3f56180139e80d960002c  gcc/testsuite/gfortran.dg/finalize_28.f90
! b0b40e9272a3a3ddc92029a3f499ef91  gcc/testsuite/gfortran.dg/finalize_29.f08
  fd6f56591cff43978fb9e37af994eec0  gcc/testsuite/gfortran.dg/finalize_3.f03
  e100c711627c65e22ec895f123885efe  gcc/testsuite/gfortran.dg/finalize_30.f90
! 5df1306fb500720b7f7dafdb58f4a46d  gcc/testsuite/gfortran.dg/finalize_31.f90
  92b4ca27645d88cb11543d720382b004  gcc/testsuite/gfortran.dg/finalize_4.f03
  ce817f495edb0ac306d6ae1052014e67  gcc/testsuite/gfortran.dg/finalize_5.f03
  00394d3b18b9e094a6751225fef04a51  gcc/testsuite/gfortran.dg/finalize_6.f90
  520ae6cd723f43e02411aa72bb807bb5  gcc/testsuite/gfortran.dg/finalize_7.f03
  a1de3ecdc32a070009986504b0fcaf97  gcc/testsuite/gfortran.dg/finalize_8.f03
  2127f420195e5f6cdb58fe18800b4c33  gcc/testsuite/gfortran.dg/finalize_9.f90
! 3834f58fecf91e569a9047ce45bfc75f  gcc/testsuite/gfortran.dg/float_1.f90
! cc020964052c7087490283f3ca78e678  gcc/testsuite/gfortran.dg/flush_1.f90
! d6f3f64d5a6dc77e985ad2d5e9428cb2  gcc/testsuite/gfortran.dg/fmt_bz_bn.f
! 8918e3d6c72d7872297ddd701c6efca7  gcc/testsuite/gfortran.dg/fmt_bz_bn_err.f
! bd770f92979b126cbcf56a2a993f4ea7  gcc/testsuite/gfortran.dg/fmt_cache_1.f
! e697f5c1b7f1072ed01fa9440c3ec58f  gcc/testsuite/gfortran.dg/fmt_cache_2.f
! fea289794657d0339a8bdd13d6de1827  gcc/testsuite/gfortran.dg/fmt_cache_3.f90
! d03bfc790f803c45e2d4540b3b702989  gcc/testsuite/gfortran.dg/fmt_colon.f90
! 8e2de748202740d5a36e1c0a58734441  gcc/testsuite/gfortran.dg/fmt_e.f90
! 520d4392c65a4ec1c5aa9284976e145f  gcc/testsuite/gfortran.dg/fmt_en.f90
  51f4c68b5c689084070ee71c915fb347  gcc/testsuite/gfortran.dg/fmt_error.f90
! b404b82d240cb1d56b3fdbaced6ebf82  gcc/testsuite/gfortran.dg/fmt_error_10.f
  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
--- 53787,53957 ----
  6a7bc2a04e4974cd132b48419594b5ad  gcc/testsuite/gfortran.dg/enum_6.f90
  bf00af26b66f4e2c81bccc3378de8a64  gcc/testsuite/gfortran.dg/enum_7.f90
  bedbfa7559dcab9252036586887ef053  gcc/testsuite/gfortran.dg/enum_8.f90
! bcfcf77d6b7dda70dce84ca685ace61c  gcc/testsuite/gfortran.dg/enum_9.f90
! 33062e2117253c469fb2772b0f63e1b4  gcc/testsuite/gfortran.dg/eof_1.f90
! ab0027e37c53e4de2faf80a49af5c70e  gcc/testsuite/gfortran.dg/eof_2.f90
  13491ddbf6de8262d5d57552a484c85e  gcc/testsuite/gfortran.dg/eof_3.f90
! 80cd70fc61c375df2fe8a3fcac7a55a4  gcc/testsuite/gfortran.dg/eof_4.f90
! 0a5c2dd5647ff9c0a031479cb94312f1  gcc/testsuite/gfortran.dg/eof_5.f90
  b2cbcfb2f5b6181bb94c3c59ec9d0da3  gcc/testsuite/gfortran.dg/eor_1.f90
! aebb8d08fc0b290e576f86423f6ca59f  gcc/testsuite/gfortran.dg/eor_handling_1.f90
! 294ba1a377b97aa6a9b5e6d2fdfefbae  gcc/testsuite/gfortran.dg/eor_handling_2.f90
! d81f48fb709cb415740904f8c05dbefd  gcc/testsuite/gfortran.dg/eor_handling_3.f90
! 3cda3b8ac4ce611ba5e684499a72ac1a  gcc/testsuite/gfortran.dg/eor_handling_4.f90
! 815065a1186a79cbd8d7092df2b5d280  gcc/testsuite/gfortran.dg/eor_handling_5.f90
  555016d7b0cf326a219bd5609eb70233  gcc/testsuite/gfortran.dg/eoshift.f90
  65e96916326bcd87cfe7f6790959bdb2  gcc/testsuite/gfortran.dg/eoshift_2.f90
+ 6a3c25b50b1fde54edfe250a1c0e7686  gcc/testsuite/gfortran.dg/eoshift_3.f90
+ 64b13d487e8732baca3db57667d8d46c  gcc/testsuite/gfortran.dg/eoshift_4.f90
+ f9b7a86e792764d97f0b5939361c929d  gcc/testsuite/gfortran.dg/eoshift_5.f90
+ 01f5663dbbe448ffcae13215519a2976  gcc/testsuite/gfortran.dg/eoshift_6.f90
+ adae9a19ec811bbf55918625d353631f  gcc/testsuite/gfortran.dg/eoshift_7.f90
+ 66a20460746717880ff13c94688798f8  gcc/testsuite/gfortran.dg/eoshift_8.f90
  d23c3cf960da52cea7987d80d427ca33  gcc/testsuite/gfortran.dg/eoshift_bounds_1.f90
! 498461068b03a38305d4fb9508177f88  gcc/testsuite/gfortran.dg/eoshift_large_1.f90
  ab70a97d276544b94e7ac094c3d3e859  gcc/testsuite/gfortran.dg/equiv_1.f90
  22bd6673bb33ef6c04f0188d8cb01b3e  gcc/testsuite/gfortran.dg/equiv_2.f90
  81fca82d5cbacf45dab41afd015c381d  gcc/testsuite/gfortran.dg/equiv_5.f90
! 379f7f267f5fe8c92f71f777f2208b8d  gcc/testsuite/gfortran.dg/equiv_6.f90
! cd298cd3f7dce06964b44ae69c572af7  gcc/testsuite/gfortran.dg/equiv_7.f90
  1c72610e8ff044e67659c818bbc5dea6  gcc/testsuite/gfortran.dg/equiv_8.f90
! a24d40b161f41c4d743647525f12d018  gcc/testsuite/gfortran.dg/equiv_9.f90
  007a185cab4821daf8f77132f4d4a74a  gcc/testsuite/gfortran.dg/equiv_constraint_1.f90
  2f170d7d98ee5f95dbba824777873f0f  gcc/testsuite/gfortran.dg/equiv_constraint_2.f90
  4b6e23df6a0c150955e57d759c8cb77a  gcc/testsuite/gfortran.dg/equiv_constraint_3.f90
! 41c2ac0d44c6ae48c8d11df2b745c8f0  gcc/testsuite/gfortran.dg/equiv_constraint_4.f90
  e318befd0c3b18d7301d38ff5b28f23a  gcc/testsuite/gfortran.dg/equiv_constraint_5.f90
  011e025aadf505d11b0788e0bab74323  gcc/testsuite/gfortran.dg/equiv_constraint_6.f90
  63b1381908c78be3eecff308f4451c21  gcc/testsuite/gfortran.dg/equiv_constraint_7.f90
  45574735841eba4b3b61909348336fcb  gcc/testsuite/gfortran.dg/equiv_constraint_8.f90
  d9dcad9e03bd8c27d5f76eaa4cf71a0e  gcc/testsuite/gfortran.dg/equiv_constraint_9.f90
  6a23911290c611310b0fa83dd28addb1  gcc/testsuite/gfortran.dg/equiv_constraint_bind_c.f90
! debb6284910bc9893ee8d64655d67794  gcc/testsuite/gfortran.dg/equiv_pure.f90
  7068ea1b9ef6f4e1c0602de0112c99c8  gcc/testsuite/gfortran.dg/equiv_substr.f90
  1a93c19b7b17152e8d50abaa1075e512  gcc/testsuite/gfortran.dg/erf.f90
! d6f93532e66c312b62c2aa27828ccf79  gcc/testsuite/gfortran.dg/erf_2.F90
! 0f4d1329772008e2530303224de54a68  gcc/testsuite/gfortran.dg/erf_3.F90
! 4896a13f6fa4af7bce5540bb1d7edf28  gcc/testsuite/gfortran.dg/erfc_scaled_1.f90
  6ff6465694368d012e66b39c130fe7ae  gcc/testsuite/gfortran.dg/erfc_scaled_2.f90
  1602fcf07de342d8b9d0889ca1190b7a  gcc/testsuite/gfortran.dg/errnocheck_1.f90
  aaddd233c21720244832702f0c8b31f3  gcc/testsuite/gfortran.dg/error_format.f90
! 6bce3657f433adba97093270535b79c2  gcc/testsuite/gfortran.dg/error_format_2.f90
  ff3e9d3f824a6daa8aec61fa05490e62  gcc/testsuite/gfortran.dg/error_recovery_1.f90
  40311a010c9456142b92523ccecedfa1  gcc/testsuite/gfortran.dg/error_recovery_2.f90
  652764a9d9c1d3d89855a32a2885f17c  gcc/testsuite/gfortran.dg/error_recovery_3.f90
  fcded1a161a5e4e72160c1c3335ef6eb  gcc/testsuite/gfortran.dg/error_recovery_4.f90
! f948f755382a6d7229e984f426ade9e6  gcc/testsuite/gfortran.dg/error_recovery_5.f90
  6b99ea3456530382a5ad24ab6471e411  gcc/testsuite/gfortran.dg/error_stop_1.f08
  fb235ce4282f67d4a702c173152e416f  gcc/testsuite/gfortran.dg/error_stop_2.f08
! b19f706d91972113b0118b4ebd56b3d7  gcc/testsuite/gfortran.dg/error_stop_3.f90
! 59044456a4e11728f6c1ddac17ea51e5  gcc/testsuite/gfortran.dg/error_stop_4.f90
  0ca82a84dc74da448e40d93f3315da3f  gcc/testsuite/gfortran.dg/execute_command_line_1.f90
! 7ddd5aaa7c3aeec90cec2e2dcf18e77c  gcc/testsuite/gfortran.dg/execute_command_line_2.f90
! 84b36c339d39559aaae00e4b3605b35b  gcc/testsuite/gfortran.dg/execute_command_line_3.f90
! 8f3fb799364952563bc398e06c2b2e01  gcc/testsuite/gfortran.dg/exit_1.f08
  3caf7d42fa2f30bfa956eeb72b42bef2  gcc/testsuite/gfortran.dg/exit_2.f08
! 00f295da6bb2ea83196b559ed8851367  gcc/testsuite/gfortran.dg/exit_3.f08
  3699c9dfdbc050c3abd8ea8057f15dd2  gcc/testsuite/gfortran.dg/exit_4.f08
  ee478d85aa892ebcfab70ab167d53520  gcc/testsuite/gfortran.dg/exit_5.f03
! aba05b23ecd1251a580dd9c49543c477  gcc/testsuite/gfortran.dg/explicit_shape_1.f90
! 3c44513b8398e7984754b142c860752d  gcc/testsuite/gfortran.dg/exponent_1.f90
! d2fda050ef5d1c911716bd1457cec22c  gcc/testsuite/gfortran.dg/exponent_2.f90
! 7e429c9e8f60d8637e2a3806d3e72027  gcc/testsuite/gfortran.dg/extended_char_comparison_1.f
! 44e07df3ed25c9cf6930a63a5b48a195  gcc/testsuite/gfortran.dg/extends_1.f03
  0e44b2eb2c1a529f05be5d12105a377a  gcc/testsuite/gfortran.dg/extends_10.f03
  6334ad8fcee8d591255fc679d233c894  gcc/testsuite/gfortran.dg/extends_11.f03
  b7e2413270f6481d88fa6592dfc294f5  gcc/testsuite/gfortran.dg/extends_12.f03
  d4e27af6507d9c4c9757a560f61cf4b0  gcc/testsuite/gfortran.dg/extends_13.f03
  47fb1ab6628d7320424113485c1be2c0  gcc/testsuite/gfortran.dg/extends_14.f03
! 2d55d194805f8c4b476dfce4d605381e  gcc/testsuite/gfortran.dg/extends_15.f90
! c76e8a972c5f66eb2e8148902beb3f16  gcc/testsuite/gfortran.dg/extends_16.f90
! d23f094715e8561709ba3267d33dbe6d  gcc/testsuite/gfortran.dg/extends_2.f03
! bf2ca054d24e06523331d95407dee17a  gcc/testsuite/gfortran.dg/extends_3.f03
! 12935fe44dc5bdb6106d2316f81bd056  gcc/testsuite/gfortran.dg/extends_4.f03
  9d11f2a397ee14b8041a2fce9a864883  gcc/testsuite/gfortran.dg/extends_5.f03
  43803fe546ec3856f64feb8ac4a24806  gcc/testsuite/gfortran.dg/extends_6.f03
  60361d8b741cfcbf3e7d9af2af480b6e  gcc/testsuite/gfortran.dg/extends_7.f03
  924b21bac3e311e95118ff6cd66ee5ef  gcc/testsuite/gfortran.dg/extends_8.f03
  8226a4361c480063e7d5f12e2c912654  gcc/testsuite/gfortran.dg/extends_9.f03
! d5c2becdf2a2a9b3476dac72cfc54877  gcc/testsuite/gfortran.dg/extends_type_of_1.f03
! 400c9de8234ec3d29a78be5af6d85a84  gcc/testsuite/gfortran.dg/extends_type_of_2.f03
! 3485cc1f6803a287f97032484eec3440  gcc/testsuite/gfortran.dg/extends_type_of_3.f90
  df764dd66e24cfa5a1af1a03b983104b  gcc/testsuite/gfortran.dg/external_implicit_none.f90
  4eca303332980555d4132fbdc52d774a  gcc/testsuite/gfortran.dg/external_initializer.f90
  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
! 6c1ffa5a3f385ca7c11b01e8727a6d29  gcc/testsuite/gfortran.dg/extract_recip_1.f
! ed7c54ff7c06dfabebe92f99baeee987  gcc/testsuite/gfortran.dg/f2003_inquire_1.f03
! dd95bc708540876ec31e17fe2d04eb8b  gcc/testsuite/gfortran.dg/f2003_io_1.f03
  6cf29d776ec43acb0920fdcf0409369e  gcc/testsuite/gfortran.dg/f2003_io_2.f03
  4fc0af8a51c36ba359b5799e535d7d63  gcc/testsuite/gfortran.dg/f2003_io_3.f03
! db1d5eafd5e70f307b6828e43f43c0b4  gcc/testsuite/gfortran.dg/f2003_io_4.f03
! af4cd1d8d6f93d0e8e9437ee30bf5767  gcc/testsuite/gfortran.dg/f2003_io_5.f03
! ea90081d3cd8fedd1e22f5d111802ece  gcc/testsuite/gfortran.dg/f2003_io_6.f03
! 7fa8e9c2ccdac20cdb13dd112da81f1e  gcc/testsuite/gfortran.dg/f2003_io_7.f03
  49b9793fde5f56d0b65adbd039a64a16  gcc/testsuite/gfortran.dg/f2003_io_8.f03
! fb55216bd0744514c188eeb84963b03f  gcc/testsuite/gfortran.dg/f2c_1.f90
! a42a974196e09643d05bdb96e0546552  gcc/testsuite/gfortran.dg/f2c_2.f90
! 3c82a031eb37e37c44380cff87f69b1b  gcc/testsuite/gfortran.dg/f2c_3.f90
  913ca5c713b1966169c08bed2ad9e622  gcc/testsuite/gfortran.dg/f2c_4.c
! 0072e290752f3382213949292e82bdb5  gcc/testsuite/gfortran.dg/f2c_4.f90
  415705f715d6aea7da295239300cfe4c  gcc/testsuite/gfortran.dg/f2c_5.c
  f8d151c2f54f4221a4e3d69b694bb148  gcc/testsuite/gfortran.dg/f2c_5.f90
! 2ea4a874c1507e1f29290faed759bd28  gcc/testsuite/gfortran.dg/f2c_6.f90
! 94137209f4ed50c75c038fdad284a72b  gcc/testsuite/gfortran.dg/f2c_7.f90
  cb48bc9a0566f3bcad450b477a411d19  gcc/testsuite/gfortran.dg/f2c_8.f90
! b060001875a843faa2fbb059b6065205  gcc/testsuite/gfortran.dg/f2c_9.f90
  b2260dd74c0c2b606b400d2e461aaf77  gcc/testsuite/gfortran.dg/feed_1.f90
  06a2412335a46d2c0d1fc2f8d8bd6231  gcc/testsuite/gfortran.dg/feed_2.f90
! 50fdb3b1afaf5f61132c104e8d9e3e56  gcc/testsuite/gfortran.dg/fgetc_1.f90
! c868fab8002e99e9fefce05d9715bee5  gcc/testsuite/gfortran.dg/fgetc_2.f90
! 470d25e8efadbc9ce18e959c15f8ba1c  gcc/testsuite/gfortran.dg/filename_null.f90
  5131e5c566230f78ec144630a732c7a7  gcc/testsuite/gfortran.dg/filepos1.f90
  18131393256651d0bd551639eab3e10e  gcc/testsuite/gfortran.dg/fimplicit_none_1.f90
  c77a0a5fc1106230319c2398b807df5c  gcc/testsuite/gfortran.dg/fimplicit_none_2.f90
  c031807c998e0243776199536a506418  gcc/testsuite/gfortran.dg/finalize_1.f08
  15ab8e9eee9458ca251042b82b7b69d5  gcc/testsuite/gfortran.dg/finalize_10.f90
  784234f297364a91d0841e02c618213b  gcc/testsuite/gfortran.dg/finalize_11.f90
! 7515141e4dead46e71edb320290fc859  gcc/testsuite/gfortran.dg/finalize_12.f90
! aa76dde0c8f8c461af7f6702bc38655e  gcc/testsuite/gfortran.dg/finalize_13.f90
  3ef469ce81ffe6b5487c2d7cee539969  gcc/testsuite/gfortran.dg/finalize_14.f90
! 3e25ec8080a9605c8e9e122ed0d193f9  gcc/testsuite/gfortran.dg/finalize_15.f90
  27b1fb056fe18ed877f988e451c87c49  gcc/testsuite/gfortran.dg/finalize_16.f90
! 4faa5b855aad90ff16751ead249e004c  gcc/testsuite/gfortran.dg/finalize_17.f90
! 9da62927e11695a13589c21d6fd3be27  gcc/testsuite/gfortran.dg/finalize_18.f90
  734a74c9eedb936f25342b0800ca3cbf  gcc/testsuite/gfortran.dg/finalize_19.f90
  5b8d5791a59292907708289dbb400629  gcc/testsuite/gfortran.dg/finalize_2.f03
  4183801ee39a268dcebb82252112c302  gcc/testsuite/gfortran.dg/finalize_21.f90
! 2fe96fdad5d5561b7bb542bd5b2c74fa  gcc/testsuite/gfortran.dg/finalize_22.f90
! 21d13233bec4266d223cc4964985df91  gcc/testsuite/gfortran.dg/finalize_23.f90
  7777e7da27f0f204cb380c5791769371  gcc/testsuite/gfortran.dg/finalize_24.f90
! ee54ae40d5eeac0613d226e05644ee24  gcc/testsuite/gfortran.dg/finalize_25.f90
  41d2ab1f1acf2bfddbbdceb10c9ae399  gcc/testsuite/gfortran.dg/finalize_27.f90
  efc9cd9348a3f56180139e80d960002c  gcc/testsuite/gfortran.dg/finalize_28.f90
! 990865cd966f264913b80c5f4aac4498  gcc/testsuite/gfortran.dg/finalize_29.f08
  fd6f56591cff43978fb9e37af994eec0  gcc/testsuite/gfortran.dg/finalize_3.f03
  e100c711627c65e22ec895f123885efe  gcc/testsuite/gfortran.dg/finalize_30.f90
! bf2746f6ebfcb7ed0ee105a55caf722b  gcc/testsuite/gfortran.dg/finalize_31.f90
! 5fc1e3c1d9863bacaa0e67ce6c523324  gcc/testsuite/gfortran.dg/finalize_32.f90
  92b4ca27645d88cb11543d720382b004  gcc/testsuite/gfortran.dg/finalize_4.f03
  ce817f495edb0ac306d6ae1052014e67  gcc/testsuite/gfortran.dg/finalize_5.f03
  00394d3b18b9e094a6751225fef04a51  gcc/testsuite/gfortran.dg/finalize_6.f90
  520ae6cd723f43e02411aa72bb807bb5  gcc/testsuite/gfortran.dg/finalize_7.f03
  a1de3ecdc32a070009986504b0fcaf97  gcc/testsuite/gfortran.dg/finalize_8.f03
  2127f420195e5f6cdb58fe18800b4c33  gcc/testsuite/gfortran.dg/finalize_9.f90
! dcdc431d3eebcd38c61326f1e9a107c4  gcc/testsuite/gfortran.dg/float_1.f90
! 6d61a0e1310090a27fbd2ef3d9f7ea19  gcc/testsuite/gfortran.dg/flush_1.f90
! dfe8c326dde7ba4070312da0fb9fb955  gcc/testsuite/gfortran.dg/fmt_bz_bn.f
! 71640780d4cc70ecb0a33dde1964df97  gcc/testsuite/gfortran.dg/fmt_bz_bn_err.f
! 5783d8fc41c74f161ada1458842993b5  gcc/testsuite/gfortran.dg/fmt_cache_1.f
! ed0ed90517bd964cce5576312009f30d  gcc/testsuite/gfortran.dg/fmt_cache_2.f
! 29846974333bc8858d019bbde62b18f8  gcc/testsuite/gfortran.dg/fmt_cache_3.f90
! cff02ee06837fc928051c3d36f6a221f  gcc/testsuite/gfortran.dg/fmt_colon.f90
! 4be707447c62f15b76c9925814f75913  gcc/testsuite/gfortran.dg/fmt_e.f90
! f2d180bc7a2579992acdc041304e7e88  gcc/testsuite/gfortran.dg/fmt_en.f90
  51f4c68b5c689084070ee71c915fb347  gcc/testsuite/gfortran.dg/fmt_error.f90
! d965889b67a1f15e2e5723a6b0227deb  gcc/testsuite/gfortran.dg/fmt_error_10.f
  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
*************** c237984a5b096d8915d27ea8b8da7368  gcc/te
*** 50401,50554 ****
  c3e37177f04544909dafcce880927eae  gcc/testsuite/gfortran.dg/fmt_error_6.f90
  1e7d4a86bc2f441f3a0a44e43d19dcb5  gcc/testsuite/gfortran.dg/fmt_error_7.f
  3202501db7e278e84ba2a8b94c5667f8  gcc/testsuite/gfortran.dg/fmt_error_8.f
! 2cd0d821484ead5903b0156e4431e2eb  gcc/testsuite/gfortran.dg/fmt_error_9.f
! 0319fb72317528e8a41aae0c6aac0bdd  gcc/testsuite/gfortran.dg/fmt_exhaust.f90
! 2e56a2b2a4898ade0505bb0628e7677a  gcc/testsuite/gfortran.dg/fmt_f0_1.f90
  5b038361b618b37d8d8bca512dffc34b  gcc/testsuite/gfortran.dg/fmt_f0_2.f90
  b695330fcab05a9cc4afd7861a1199ca  gcc/testsuite/gfortran.dg/fmt_f0_3.f90
! 7acc94e75d1605dc43690505b642cc5e  gcc/testsuite/gfortran.dg/fmt_f_an_p.f
  fc5f0a711651b7257f0db9b771929dff  gcc/testsuite/gfortran.dg/fmt_float.f90
! f8ccbd5e5f4c76f712e1d7a49c157a76  gcc/testsuite/gfortran.dg/fmt_fw_d.f90
! 607ca4ad593e154838e2f6bb94ad0483  gcc/testsuite/gfortran.dg/fmt_g.f
! 6cc591011fc4b4a776c19a0d8eddfb8d  gcc/testsuite/gfortran.dg/fmt_g0_1.f08
! 52c6b13131416b7095b963178aa6b262  gcc/testsuite/gfortran.dg/fmt_g0_2.f08
  d216b76ed81c95ec2cbca83beb2a093d  gcc/testsuite/gfortran.dg/fmt_g0_3.f08
! 5f37b68a67573ed5b3b954e3a730f7aa  gcc/testsuite/gfortran.dg/fmt_g0_4.f08
! 0b72a70e14402c124750e107566af599  gcc/testsuite/gfortran.dg/fmt_g0_5.f08
! 4cc20d4be04c2046885aac22f0d2cd9c  gcc/testsuite/gfortran.dg/fmt_g0_6.f08
! b24952896ec6435725eb663ffac140a8  gcc/testsuite/gfortran.dg/fmt_g0_7.f08
! 86b4ecfeb8e8ca81eb695a0802f8087f  gcc/testsuite/gfortran.dg/fmt_g_1.f90
  1614a240091165ed607a20fdcc4af923  gcc/testsuite/gfortran.dg/fmt_huge.f90
! ba8b04701489c6c9dd6281e160362171  gcc/testsuite/gfortran.dg/fmt_int_sign.f90
! 8493d2e832f19aabb79eac33e5a118f7  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
! e2e9a0e7391b69ea4fc0e112a61388ef  gcc/testsuite/gfortran.dg/fmt_missing_period_2.f
! a6ca22a2951e1f360bef43e2f103a3e5  gcc/testsuite/gfortran.dg/fmt_missing_period_3.f
! 6c1cc67ce685cd82b7752b403da435c7  gcc/testsuite/gfortran.dg/fmt_p_1.f90
! 3a89904959bf6e4d165a8ba4e483db9c  gcc/testsuite/gfortran.dg/fmt_pf.f90
! 038cbd43ca2c9e8c5b73e40c42b96d18  gcc/testsuite/gfortran.dg/fmt_read.f90
  be93d174873e7f12c3cf80e9ec41c14f  gcc/testsuite/gfortran.dg/fmt_read_2.f90
  94e11726d57310818025d13ea1cf0ea3  gcc/testsuite/gfortran.dg/fmt_read_3.f90
  e483ed156816d5eadb1c29eb4aa771d5  gcc/testsuite/gfortran.dg/fmt_read_4.f90
  817f12fc29f7089a206f5b9ea00a6eb7  gcc/testsuite/gfortran.dg/fmt_read_5.f
! 7e4b2f7a4d717183ffe6323abb51513f  gcc/testsuite/gfortran.dg/fmt_read_bz_bn.f90
! c32350da82df632ecbd7ca1c2fd0d5d7  gcc/testsuite/gfortran.dg/fmt_t_1.f90
! cf6a8208b8c1f85d72c0d6ad794b175b  gcc/testsuite/gfortran.dg/fmt_t_2.f90
! 519ce178997fc608d592541afca54ba1  gcc/testsuite/gfortran.dg/fmt_t_3.f90
! eaf23174c6029667231249368fe23589  gcc/testsuite/gfortran.dg/fmt_t_4.f90
! 5b794289929a15d260c59f382cfe8811  gcc/testsuite/gfortran.dg/fmt_t_5.f90
! 9c6bd875f3fd65a51cdb51c78adfb02e  gcc/testsuite/gfortran.dg/fmt_t_6.f
! 4fa11e7dddaa11d12a44f35882072dbc  gcc/testsuite/gfortran.dg/fmt_t_7.f
  29caa60344c27f263a0dcb74df9f823f  gcc/testsuite/gfortran.dg/fmt_t_8.f90
! 3f87ad026e8e229565569c7c330e0a69  gcc/testsuite/gfortran.dg/fmt_t_9.f
  f312b4d8b000961161786994ea516f6b  gcc/testsuite/gfortran.dg/fmt_tab_1.f90
  ddcbb4a37fd7ccd116523d6aabc1c31d  gcc/testsuite/gfortran.dg/fmt_tab_2.f90
! 8ba0d4541559e2d3061e83bbc985d7bb  gcc/testsuite/gfortran.dg/fmt_tl.f
! 7d5c3194707a80c14b16ca70275eb9cf  gcc/testsuite/gfortran.dg/fmt_unlimited.f90
! 2cd4ba45c382f10ebb400ee6c53960af  gcc/testsuite/gfortran.dg/fmt_white.f
  3741d7228a9abe59ccc090bf896b8b24  gcc/testsuite/gfortran.dg/fmt_with_extra.f
  701fade2a840cb9e3bf581edbedf810c  gcc/testsuite/gfortran.dg/fmt_zero_check.f90
! 0f72e74129218f27960e596c630f220f  gcc/testsuite/gfortran.dg/fmt_zero_digits.f90
  b1197d10275db9dfbbc44635670b9b1e  gcc/testsuite/gfortran.dg/fmt_zero_precision.f90
! a7e72ef4efd3bc474bfad62d98a78b37  gcc/testsuite/gfortran.dg/fold_nearest.f90
! 61891007d1e9dca11ef477ca94fc6cc6  gcc/testsuite/gfortran.dg/forall_1.f90
! bdd6e385b8405d5209e23d83be182209  gcc/testsuite/gfortran.dg/forall_10.f90
  d4c2d7e500c2c0292260e400fd5b1b35  gcc/testsuite/gfortran.dg/forall_11.f90
! bd7bbdbb919480db2a8bb5dfa22ec399  gcc/testsuite/gfortran.dg/forall_12.f90
! f5e676182c3ece6f6ba4e0ce914c5292  gcc/testsuite/gfortran.dg/forall_13.f90
  88ba07228275e9f723d0ff27b19fb77c  gcc/testsuite/gfortran.dg/forall_14.f90
! cd9eb88ea17bf9b09a3d523fdaa744c7  gcc/testsuite/gfortran.dg/forall_15.f90
  674de0e9b0693fe66b62c929b5455f39  gcc/testsuite/gfortran.dg/forall_16.f90
  8e8eb52d04f70625b3d219d75404ef60  gcc/testsuite/gfortran.dg/forall_17.f90
  d0fbcfc827c29dc44f64559d48817278  gcc/testsuite/gfortran.dg/forall_18.f90
  52a3f13b979b92e74930c12598ca953e  gcc/testsuite/gfortran.dg/forall_2.f90
  2a37c865afb27d8a80cb1bb50744c3ac  gcc/testsuite/gfortran.dg/forall_3.f90
! bee539d260330f8ac4ac6e60f403dcc8  gcc/testsuite/gfortran.dg/forall_4.f90
! df30baf2f2818837703776c0ec623d96  gcc/testsuite/gfortran.dg/forall_5.f90
! 4fc708ee9c76d96a445cb83e7fa022dd  gcc/testsuite/gfortran.dg/forall_6.f90
! a15b12faedf2d4e35bb0b127937cac1a  gcc/testsuite/gfortran.dg/forall_7.f90
  4663464f3ccae37b1f6794f233059527  gcc/testsuite/gfortran.dg/forall_8.f90
  b6b4108dcca558ec326a12208c7b987b  gcc/testsuite/gfortran.dg/forall_9.f90
  09bfd74d912ac96d66544c23c2a3f678  gcc/testsuite/gfortran.dg/forall_char_dependencies_1.f90
  3098e163c08693a0809a78044b71c940  gcc/testsuite/gfortran.dg/format_string.f
! 5e1c28219133b5f5bb7a6e734cdd96de  gcc/testsuite/gfortran.dg/fraction.f90
! 5a3e002a3d5265e7572e991e6c5871f1  gcc/testsuite/gfortran.dg/fseek.f90
! fa1886fa5dd54e469939cee73f4cf669  gcc/testsuite/gfortran.dg/ftell_1.f90
! ffc0006ba15e6184838651596951add9  gcc/testsuite/gfortran.dg/ftell_2.f90
! 7b4a5cf52ca0766c941e707ebb31fc74  gcc/testsuite/gfortran.dg/ftell_3.f90
  eafbd5ff2448fd48e92bb178d4df571f  gcc/testsuite/gfortran.dg/func_assign.f90
! 333497b1f9bafabd91fca257ecdde17b  gcc/testsuite/gfortran.dg/func_assign_2.f90
! ee9998b1906236293945377f8d26b2bd  gcc/testsuite/gfortran.dg/func_assign_3.f90
  204ffc7a69df2edfcaabe11c98fdfa4a  gcc/testsuite/gfortran.dg/func_decl_1.f90
  ec209e94ef3aab6140f89ba12707399d  gcc/testsuite/gfortran.dg/func_decl_2.f90
  8bcede2033b1972094929cb146f8b4c9  gcc/testsuite/gfortran.dg/func_decl_3.f90
  df46ce74cb7a7b956ac8f9a2e7df0fd3  gcc/testsuite/gfortran.dg/func_decl_4.f90
  1186018d581236db68fe8e4a8b53f091  gcc/testsuite/gfortran.dg/func_decl_5.f90
! a6d487672f1ef0c857a1edf5f43b7a28  gcc/testsuite/gfortran.dg/func_derived_1.f90
! 8c4007074355fd9e3acc7ff961f28cb4  gcc/testsuite/gfortran.dg/func_derived_2.f90
! bdc048ffb5a0c40795e425a12332d4d7  gcc/testsuite/gfortran.dg/func_derived_3.f90
  08b46bf2a5ed8131d366dcf9c87bdcc0  gcc/testsuite/gfortran.dg/func_derived_4.f90
  34010b2c0d5e0d9f03c823b349dd80e7  gcc/testsuite/gfortran.dg/func_derived_5.f90
! 930974e34efb1a1c646912b60f73726e  gcc/testsuite/gfortran.dg/func_result_1.f90
! 709719590ee0f3a1f7e5152821123ab2  gcc/testsuite/gfortran.dg/func_result_2.f90
  0b800d0ac9052e8fe8ea440fe9082c6f  gcc/testsuite/gfortran.dg/func_result_3.f90
  438d0d975add65d1d15b2e8c3450b867  gcc/testsuite/gfortran.dg/func_result_4.f90
  48b9425c261c7d0241c6039112a57d37  gcc/testsuite/gfortran.dg/func_result_5.f90
! a7e9ee12f044107cf322802d1270ac1f  gcc/testsuite/gfortran.dg/func_result_6.f90
! 304fd214f937d38e91d7cba8c4b84671  gcc/testsuite/gfortran.dg/func_result_7.f90
  4d6a30403727d33b5324687b0cf26a2b  gcc/testsuite/gfortran.dg/function_charlen_1.f90
! ccdf4b98bf06ac5cf9b9fea7c05da7b1  gcc/testsuite/gfortran.dg/function_charlen_2.f90
! e32f614d1ecbbe82af488472e50ea93d  gcc/testsuite/gfortran.dg/function_charlen_3.f
! cfbfbf34a0935f2b44a057caeeca703b  gcc/testsuite/gfortran.dg/function_kinds_1.f90
  cbb70c4ec8b88d436fb61acf9486c6bf  gcc/testsuite/gfortran.dg/function_kinds_2.f90
  9d6188e05d3cc7589bb0f30729072f80  gcc/testsuite/gfortran.dg/function_kinds_3.f90
! 1c44428c1a922888ef8a4917532a0b9c  gcc/testsuite/gfortran.dg/function_kinds_4.f90
  ee421b3a0829f99994d3021ff3a4bd48  gcc/testsuite/gfortran.dg/function_kinds_5.f90
  3eb2c0453ffd85e9c0c11a2ee865f9bf  gcc/testsuite/gfortran.dg/function_optimize_1.f90
! ae2215946bf0fa8aba57167fa78677ce  gcc/testsuite/gfortran.dg/function_optimize_10.f90
! 842cf28ec6da9138754d930f5672c19a  gcc/testsuite/gfortran.dg/function_optimize_11.f90
! bf5ab49ef4f9c3e47ab7abe59c50ca15  gcc/testsuite/gfortran.dg/function_optimize_12.f90
  bc29a518b9281ff69fd8ea51a8b3ab39  gcc/testsuite/gfortran.dg/function_optimize_2.f90
  81f2af6ce428c8e4209ee916c662aa3d  gcc/testsuite/gfortran.dg/function_optimize_3.f90
! 20657c41b91c58c81ddf074537710649  gcc/testsuite/gfortran.dg/function_optimize_4.f90
  6ac9872187d5f25de61a033457b4a167  gcc/testsuite/gfortran.dg/function_optimize_5.f90
  7f25a0515ca6072c1b15e7821221fd52  gcc/testsuite/gfortran.dg/function_optimize_6.f90
  2df5f01c60abe5d7ca4fc9a050d88a2d  gcc/testsuite/gfortran.dg/function_optimize_7.f90
! b954f6864883e209da7c7c762e850638  gcc/testsuite/gfortran.dg/function_optimize_8.f90
  3ddc814ec620c84686ecaa1e636bab47  gcc/testsuite/gfortran.dg/function_optimize_9.f90
  927c267b97f11ec2aa8090c78129faae  gcc/testsuite/gfortran.dg/function_types_1.f90
  67434d12fc66811a7db4ca9446f02d44  gcc/testsuite/gfortran.dg/function_types_2.f90
  b05a34a45ca39e12daaeeb66a2e4c8a1  gcc/testsuite/gfortran.dg/function_types_3.f90
  877bcb109c291e807b0f25e03b6b7500  gcc/testsuite/gfortran.dg/g77/12002.f
  c1f4e4693c58ad539cde2cd3690cb83c  gcc/testsuite/gfortran.dg/g77/12632.f
! 556d3e8f9ae488f09addc5cbca3addd2  gcc/testsuite/gfortran.dg/g77/13037.f
  4cad78aca0c2d9e768c5e96a81b1488e  gcc/testsuite/gfortran.dg/g77/13060.f
! 2594616b6f5e8095d0d6e40850e93f8d  gcc/testsuite/gfortran.dg/g77/1832.f
! fc54ee27f55573d6b68516b302136f47  gcc/testsuite/gfortran.dg/g77/19981119-0.f
  546de13dbc63055baff7ed4abc3b685e  gcc/testsuite/gfortran.dg/g77/19981216-0.f
  e62315ad6950a36a6ab9ae1ee7276346  gcc/testsuite/gfortran.dg/g77/19990218-0.f
  75e5c964de195c578c8a68e999af919f  gcc/testsuite/gfortran.dg/g77/19990218-1.f
  992d377644f91f3ae8af9b9a47321afa  gcc/testsuite/gfortran.dg/g77/19990305-0.f
! 65b18f3d404f5afe93c0f5ac75d4122b  gcc/testsuite/gfortran.dg/g77/19990313-0.f
! 3b05db541ed81dd7a8bd7c4bcd11dcba  gcc/testsuite/gfortran.dg/g77/19990313-1.f
! 11838d9f355653a616642bd630be4319  gcc/testsuite/gfortran.dg/g77/19990313-2.f
! 06c4456c26e20b290d738ed0a72bb3b9  gcc/testsuite/gfortran.dg/g77/19990313-3.f
  94a54ca0a5a0f6710c92444bb6d5859c  gcc/testsuite/gfortran.dg/g77/19990419-0.f
! a116bf819adc5ddac0039048d7c1226d  gcc/testsuite/gfortran.dg/g77/19990419-1.f
  096a67d2fb9701f68c468be3867c0915  gcc/testsuite/gfortran.dg/g77/19990502-0.f
  243b628c1fba0171470e31d85796be8a  gcc/testsuite/gfortran.dg/g77/19990502-1.f
  0bd53b2664f69432d200444ace36b1ce  gcc/testsuite/gfortran.dg/g77/19990525-0.f
! 99af2d5f8bed55d4f9540aca739feac6  gcc/testsuite/gfortran.dg/g77/19990826-0.f
  2f79897a6309a4808ba46bbd9f7f340d  gcc/testsuite/gfortran.dg/g77/19990826-1.f
! ebc059e4ba4f886284afb1153a02cb8f  gcc/testsuite/gfortran.dg/g77/19990826-2.f
  bbdee21d25b69e90945742c967227ddd  gcc/testsuite/gfortran.dg/g77/19990826-3.f
  9fedb8683ade739cb98db70d4ee9ec98  gcc/testsuite/gfortran.dg/g77/19990905-0.f
  03f90d267c1042299d09705acec68251  gcc/testsuite/gfortran.dg/g77/19990905-1.f
  7bbda5abcb7c64c5d9c0ec3db752da11  gcc/testsuite/gfortran.dg/g77/19990905-2.f
  5b8bdd4ab957f222af460db90d89b2b7  gcc/testsuite/gfortran.dg/g77/20000412-1.f
! 93f2fa18c03960506da2fc4ac6e07a63  gcc/testsuite/gfortran.dg/g77/20000503-1.f
  9e2081f4f469ca919521650977f1d1c7  gcc/testsuite/gfortran.dg/g77/20000511-1.f
  4b76ff6aa5ed21c9241451ab6d4e7515  gcc/testsuite/gfortran.dg/g77/20000511-2.f
  8c1b6e37f20e059b9d33078948483a18  gcc/testsuite/gfortran.dg/g77/20000518.f
--- 53960,54113 ----
  c3e37177f04544909dafcce880927eae  gcc/testsuite/gfortran.dg/fmt_error_6.f90
  1e7d4a86bc2f441f3a0a44e43d19dcb5  gcc/testsuite/gfortran.dg/fmt_error_7.f
  3202501db7e278e84ba2a8b94c5667f8  gcc/testsuite/gfortran.dg/fmt_error_8.f
! 6130a7e7e46c1bc93656680d4ee95d19  gcc/testsuite/gfortran.dg/fmt_error_9.f
! 8505735e49679460bb5480ec5be876b2  gcc/testsuite/gfortran.dg/fmt_exhaust.f90
! 804e1ea3a88a045adfd9b5c6ea8fa012  gcc/testsuite/gfortran.dg/fmt_f0_1.f90
  5b038361b618b37d8d8bca512dffc34b  gcc/testsuite/gfortran.dg/fmt_f0_2.f90
  b695330fcab05a9cc4afd7861a1199ca  gcc/testsuite/gfortran.dg/fmt_f0_3.f90
! bf2de279dad52afa7b31dd6f72b1b0f7  gcc/testsuite/gfortran.dg/fmt_f_an_p.f
  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
! e3a0f3ed872ed9b377820f0e8b2044a7  gcc/testsuite/gfortran.dg/fmt_g0_2.f08
  d216b76ed81c95ec2cbca83beb2a093d  gcc/testsuite/gfortran.dg/fmt_g0_3.f08
! 0d5844e3555fdce5f791ab86af468a84  gcc/testsuite/gfortran.dg/fmt_g0_4.f08
! 957923206e336d4dc3dae1bbae2de5db  gcc/testsuite/gfortran.dg/fmt_g0_5.f08
! 3ec16d55fb3ea81714ad032e89713244  gcc/testsuite/gfortran.dg/fmt_g0_6.f08
! 7ef97197f6af4e5e90b35d194812643f  gcc/testsuite/gfortran.dg/fmt_g0_7.f08
! 0d55e77e92e8eba68564b926759ea52f  gcc/testsuite/gfortran.dg/fmt_g_1.f90
  1614a240091165ed607a20fdcc4af923  gcc/testsuite/gfortran.dg/fmt_huge.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
! d3d37d254644cdaff95d2388a5b7c0c5  gcc/testsuite/gfortran.dg/fmt_p_1.f90
! 982630e8e12fd9d9ef6044fd455a1556  gcc/testsuite/gfortran.dg/fmt_pf.f90
! f4c40499fd82d7b0c80894e2cd0778b0  gcc/testsuite/gfortran.dg/fmt_read.f90
  be93d174873e7f12c3cf80e9ec41c14f  gcc/testsuite/gfortran.dg/fmt_read_2.f90
  94e11726d57310818025d13ea1cf0ea3  gcc/testsuite/gfortran.dg/fmt_read_3.f90
  e483ed156816d5eadb1c29eb4aa771d5  gcc/testsuite/gfortran.dg/fmt_read_4.f90
  817f12fc29f7089a206f5b9ea00a6eb7  gcc/testsuite/gfortran.dg/fmt_read_5.f
! 43e2fd9433bc1ee1fb07cd35d02dbec3  gcc/testsuite/gfortran.dg/fmt_read_bz_bn.f90
! 1ccf86cc72f856d844dbbf28175cd618  gcc/testsuite/gfortran.dg/fmt_t_1.f90
! d52b68f807bdfb7ad44183615bef7972  gcc/testsuite/gfortran.dg/fmt_t_2.f90
! 6fe1eae7825f29f89583c88c0651bd9f  gcc/testsuite/gfortran.dg/fmt_t_3.f90
! ab284a204891b5c5562bc3cd7291a666  gcc/testsuite/gfortran.dg/fmt_t_4.f90
! e1dc52170302f0616083aabff89ed26f  gcc/testsuite/gfortran.dg/fmt_t_5.f90
! f9b36e03268b8fbf3e158db0411d848e  gcc/testsuite/gfortran.dg/fmt_t_6.f
! 0ad7a8819f05de8b23b8283b0c8e029f  gcc/testsuite/gfortran.dg/fmt_t_7.f
  29caa60344c27f263a0dcb74df9f823f  gcc/testsuite/gfortran.dg/fmt_t_8.f90
! 23e100c6e40d413c8810f6734f7fe220  gcc/testsuite/gfortran.dg/fmt_t_9.f
  f312b4d8b000961161786994ea516f6b  gcc/testsuite/gfortran.dg/fmt_tab_1.f90
  ddcbb4a37fd7ccd116523d6aabc1c31d  gcc/testsuite/gfortran.dg/fmt_tab_2.f90
! 1b1373434d1b6713e6286ef214a7615c  gcc/testsuite/gfortran.dg/fmt_tl.f
! 3b451ba30a155a5d9ad6d75d569e6569  gcc/testsuite/gfortran.dg/fmt_unlimited.f90
! afb11a602b566cba010f9624d3692084  gcc/testsuite/gfortran.dg/fmt_white.f
  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
! 93823024165c02ff6aafa96f78929937  gcc/testsuite/gfortran.dg/fold_nearest.f90
! 75a4fd131c42b25fa39d55337b1c123a  gcc/testsuite/gfortran.dg/forall_1.f90
! 38dac57f72b75131409460563ea3b3ce  gcc/testsuite/gfortran.dg/forall_10.f90
  d4c2d7e500c2c0292260e400fd5b1b35  gcc/testsuite/gfortran.dg/forall_11.f90
! 7fea73690acb135439c5be195008dc64  gcc/testsuite/gfortran.dg/forall_12.f90
! 3e047c1540fce783c3f266e6ee67ad44  gcc/testsuite/gfortran.dg/forall_13.f90
  88ba07228275e9f723d0ff27b19fb77c  gcc/testsuite/gfortran.dg/forall_14.f90
! d654548d92083da2f840d851c1da8d63  gcc/testsuite/gfortran.dg/forall_15.f90
  674de0e9b0693fe66b62c929b5455f39  gcc/testsuite/gfortran.dg/forall_16.f90
  8e8eb52d04f70625b3d219d75404ef60  gcc/testsuite/gfortran.dg/forall_17.f90
  d0fbcfc827c29dc44f64559d48817278  gcc/testsuite/gfortran.dg/forall_18.f90
  52a3f13b979b92e74930c12598ca953e  gcc/testsuite/gfortran.dg/forall_2.f90
  2a37c865afb27d8a80cb1bb50744c3ac  gcc/testsuite/gfortran.dg/forall_3.f90
! f88f5259a88a4ec54b75880cc2655ce4  gcc/testsuite/gfortran.dg/forall_4.f90
! 6e72af044e91124ecd07c0a1620921f0  gcc/testsuite/gfortran.dg/forall_5.f90
! 2244f369a7d6a707a35800e89b0842ae  gcc/testsuite/gfortran.dg/forall_6.f90
! c9d7849e9bf07d8d1051fe1466e74f13  gcc/testsuite/gfortran.dg/forall_7.f90
  4663464f3ccae37b1f6794f233059527  gcc/testsuite/gfortran.dg/forall_8.f90
  b6b4108dcca558ec326a12208c7b987b  gcc/testsuite/gfortran.dg/forall_9.f90
  09bfd74d912ac96d66544c23c2a3f678  gcc/testsuite/gfortran.dg/forall_char_dependencies_1.f90
  3098e163c08693a0809a78044b71c940  gcc/testsuite/gfortran.dg/format_string.f
! 8a4cfd5df9dfd8195495d064e5985321  gcc/testsuite/gfortran.dg/fraction.f90
! bc8ec83d0e86697bd998aefe10e0634d  gcc/testsuite/gfortran.dg/fseek.f90
! 42a1a90ad11f1510edffe5725f734d0a  gcc/testsuite/gfortran.dg/ftell_1.f90
! 10bef6bdbca43b5667ddef932c3355f1  gcc/testsuite/gfortran.dg/ftell_2.f90
! e4887dedddc27c023daf6748c02b6e63  gcc/testsuite/gfortran.dg/ftell_3.f90
  eafbd5ff2448fd48e92bb178d4df571f  gcc/testsuite/gfortran.dg/func_assign.f90
! a16c1c0efdb2a162e94ac60f60370a7d  gcc/testsuite/gfortran.dg/func_assign_2.f90
! f97121393bffedf02831e8737a34443d  gcc/testsuite/gfortran.dg/func_assign_3.f90
  204ffc7a69df2edfcaabe11c98fdfa4a  gcc/testsuite/gfortran.dg/func_decl_1.f90
  ec209e94ef3aab6140f89ba12707399d  gcc/testsuite/gfortran.dg/func_decl_2.f90
  8bcede2033b1972094929cb146f8b4c9  gcc/testsuite/gfortran.dg/func_decl_3.f90
  df46ce74cb7a7b956ac8f9a2e7df0fd3  gcc/testsuite/gfortran.dg/func_decl_4.f90
  1186018d581236db68fe8e4a8b53f091  gcc/testsuite/gfortran.dg/func_decl_5.f90
! f2fd44ae955f7833252da55d2e140e6b  gcc/testsuite/gfortran.dg/func_derived_1.f90
! 461a68b71d7c67f58dac7b03d7195006  gcc/testsuite/gfortran.dg/func_derived_2.f90
! c4ff958c7424124b0ee823af5b303872  gcc/testsuite/gfortran.dg/func_derived_3.f90
  08b46bf2a5ed8131d366dcf9c87bdcc0  gcc/testsuite/gfortran.dg/func_derived_4.f90
  34010b2c0d5e0d9f03c823b349dd80e7  gcc/testsuite/gfortran.dg/func_derived_5.f90
! 3f0bb94f1c69c7ed4eeeb58657549cbd  gcc/testsuite/gfortran.dg/func_result_1.f90
! 477fcf4b0602432f56fcbc337c88a583  gcc/testsuite/gfortran.dg/func_result_2.f90
  0b800d0ac9052e8fe8ea440fe9082c6f  gcc/testsuite/gfortran.dg/func_result_3.f90
  438d0d975add65d1d15b2e8c3450b867  gcc/testsuite/gfortran.dg/func_result_4.f90
  48b9425c261c7d0241c6039112a57d37  gcc/testsuite/gfortran.dg/func_result_5.f90
! 41acf156517143bc88838968d8476761  gcc/testsuite/gfortran.dg/func_result_6.f90
! 38582b6ab31c16471cea06f96b15e38e  gcc/testsuite/gfortran.dg/func_result_7.f90
  4d6a30403727d33b5324687b0cf26a2b  gcc/testsuite/gfortran.dg/function_charlen_1.f90
! d7737217545ebcdba2eec10ee6151f38  gcc/testsuite/gfortran.dg/function_charlen_2.f90
! 4a958755730ebf90567051f0b55b3b6b  gcc/testsuite/gfortran.dg/function_charlen_3.f
! c71397aec804c0b5ce001a1d5dbdb76e  gcc/testsuite/gfortran.dg/function_kinds_1.f90
  cbb70c4ec8b88d436fb61acf9486c6bf  gcc/testsuite/gfortran.dg/function_kinds_2.f90
  9d6188e05d3cc7589bb0f30729072f80  gcc/testsuite/gfortran.dg/function_kinds_3.f90
! c69b86dd6284fc228eebe1af3216f600  gcc/testsuite/gfortran.dg/function_kinds_4.f90
  ee421b3a0829f99994d3021ff3a4bd48  gcc/testsuite/gfortran.dg/function_kinds_5.f90
  3eb2c0453ffd85e9c0c11a2ee865f9bf  gcc/testsuite/gfortran.dg/function_optimize_1.f90
! 0f94c426acf1539c8d60c0bbe4d7a5e4  gcc/testsuite/gfortran.dg/function_optimize_10.f90
! 6fed503c40eeae1f2a2cff04cc37419b  gcc/testsuite/gfortran.dg/function_optimize_11.f90
! 90eaef7374621c3d2fbcd64c32021fd9  gcc/testsuite/gfortran.dg/function_optimize_12.f90
  bc29a518b9281ff69fd8ea51a8b3ab39  gcc/testsuite/gfortran.dg/function_optimize_2.f90
  81f2af6ce428c8e4209ee916c662aa3d  gcc/testsuite/gfortran.dg/function_optimize_3.f90
! 4920f906d0034ac57a2d43ea1746eb17  gcc/testsuite/gfortran.dg/function_optimize_4.f90
  6ac9872187d5f25de61a033457b4a167  gcc/testsuite/gfortran.dg/function_optimize_5.f90
  7f25a0515ca6072c1b15e7821221fd52  gcc/testsuite/gfortran.dg/function_optimize_6.f90
  2df5f01c60abe5d7ca4fc9a050d88a2d  gcc/testsuite/gfortran.dg/function_optimize_7.f90
! 32925b6c4b336faaf1fe582f0350d617  gcc/testsuite/gfortran.dg/function_optimize_8.f90
  3ddc814ec620c84686ecaa1e636bab47  gcc/testsuite/gfortran.dg/function_optimize_9.f90
  927c267b97f11ec2aa8090c78129faae  gcc/testsuite/gfortran.dg/function_types_1.f90
  67434d12fc66811a7db4ca9446f02d44  gcc/testsuite/gfortran.dg/function_types_2.f90
  b05a34a45ca39e12daaeeb66a2e4c8a1  gcc/testsuite/gfortran.dg/function_types_3.f90
  877bcb109c291e807b0f25e03b6b7500  gcc/testsuite/gfortran.dg/g77/12002.f
  c1f4e4693c58ad539cde2cd3690cb83c  gcc/testsuite/gfortran.dg/g77/12632.f
! f97789a9a2cd4864d88aaaf414a3deee  gcc/testsuite/gfortran.dg/g77/13037.f
  4cad78aca0c2d9e768c5e96a81b1488e  gcc/testsuite/gfortran.dg/g77/13060.f
! 890e7ed5bfee594d32fa609f28ca7c5f  gcc/testsuite/gfortran.dg/g77/1832.f
! a2133a65ae8437ef6537f168d31c0321  gcc/testsuite/gfortran.dg/g77/19981119-0.f
  546de13dbc63055baff7ed4abc3b685e  gcc/testsuite/gfortran.dg/g77/19981216-0.f
  e62315ad6950a36a6ab9ae1ee7276346  gcc/testsuite/gfortran.dg/g77/19990218-0.f
  75e5c964de195c578c8a68e999af919f  gcc/testsuite/gfortran.dg/g77/19990218-1.f
  992d377644f91f3ae8af9b9a47321afa  gcc/testsuite/gfortran.dg/g77/19990305-0.f
! 68f4548c4b7d1058b956f0374144cbf5  gcc/testsuite/gfortran.dg/g77/19990313-0.f
! 570887f8543a76fc549c6169e3a6efe8  gcc/testsuite/gfortran.dg/g77/19990313-1.f
! e8995f8817939546df453ca1cb01ae24  gcc/testsuite/gfortran.dg/g77/19990313-2.f
! 74ffeac9c1bd720aed0aa268d7ac26e4  gcc/testsuite/gfortran.dg/g77/19990313-3.f
  94a54ca0a5a0f6710c92444bb6d5859c  gcc/testsuite/gfortran.dg/g77/19990419-0.f
! c7601996b4df38c44478a9284b049315  gcc/testsuite/gfortran.dg/g77/19990419-1.f
  096a67d2fb9701f68c468be3867c0915  gcc/testsuite/gfortran.dg/g77/19990502-0.f
  243b628c1fba0171470e31d85796be8a  gcc/testsuite/gfortran.dg/g77/19990502-1.f
  0bd53b2664f69432d200444ace36b1ce  gcc/testsuite/gfortran.dg/g77/19990525-0.f
! 6355365452ab3b57efc064cc355290d7  gcc/testsuite/gfortran.dg/g77/19990826-0.f
  2f79897a6309a4808ba46bbd9f7f340d  gcc/testsuite/gfortran.dg/g77/19990826-1.f
! 496ae2bcc523af127fea61ec81cba8fc  gcc/testsuite/gfortran.dg/g77/19990826-2.f
  bbdee21d25b69e90945742c967227ddd  gcc/testsuite/gfortran.dg/g77/19990826-3.f
  9fedb8683ade739cb98db70d4ee9ec98  gcc/testsuite/gfortran.dg/g77/19990905-0.f
  03f90d267c1042299d09705acec68251  gcc/testsuite/gfortran.dg/g77/19990905-1.f
  7bbda5abcb7c64c5d9c0ec3db752da11  gcc/testsuite/gfortran.dg/g77/19990905-2.f
  5b8bdd4ab957f222af460db90d89b2b7  gcc/testsuite/gfortran.dg/g77/20000412-1.f
! 12244cc6b8bf44b98968172f41e09851  gcc/testsuite/gfortran.dg/g77/20000503-1.f
  9e2081f4f469ca919521650977f1d1c7  gcc/testsuite/gfortran.dg/g77/20000511-1.f
  4b76ff6aa5ed21c9241451ab6d4e7515  gcc/testsuite/gfortran.dg/g77/20000511-2.f
  8c1b6e37f20e059b9d33078948483a18  gcc/testsuite/gfortran.dg/g77/20000518.f
*************** bbdee21d25b69e90945742c967227ddd  gcc/te
*** 50556,50584 ****
  10e717dd526d3363aa4e249c2cc2e357  gcc/testsuite/gfortran.dg/g77/20000601-2.f
  5b80bb5360ede8eda5c74010870db1d2  gcc/testsuite/gfortran.dg/g77/20000629-1.f
  19b93e092c4b3e9134da9a834883f202  gcc/testsuite/gfortran.dg/g77/20000630-2.f
! ac69e35ec8a83847603877736e8cd46a  gcc/testsuite/gfortran.dg/g77/20001111.f
  787568d0c1679686795dc0dd96859066  gcc/testsuite/gfortran.dg/g77/20010115.f
! 4ac29f03ab9532fc859714497d9a4c6c  gcc/testsuite/gfortran.dg/g77/20010116.f
! f4db0bae683efa07045ff8aff9b3d33d  gcc/testsuite/gfortran.dg/g77/20010216-1.f
  42bd075e2f01e62a447bb5c3c46bc179  gcc/testsuite/gfortran.dg/g77/20010321-1.f
  61fb23590346bcc01103183661548acc  gcc/testsuite/gfortran.dg/g77/20010426-1.f
  5f189a7e89f7d801de4cb2d11b5e3be8  gcc/testsuite/gfortran.dg/g77/20010426.f
! f6c03f65429e0d090361d63745d26d31  gcc/testsuite/gfortran.dg/g77/20010430.f
  cde0e5030c6957fbc293df0842a16277  gcc/testsuite/gfortran.dg/g77/20010519-1.f
! 3e93fe3ed379cf6c0386f58de8698507  gcc/testsuite/gfortran.dg/g77/20010610.f
  bb13ee578486af76d8c6b8657a382915  gcc/testsuite/gfortran.dg/g77/20020307-1.f
! e0eaf28d0a125f258bf9a42fe74100e5  gcc/testsuite/gfortran.dg/g77/20030326-1.f
! 631891a247898fb310df32d8fe06a54d  gcc/testsuite/gfortran.dg/g77/6177.f
! b24f067dcba71c9828e34889ff389717  gcc/testsuite/gfortran.dg/g77/7388.f
  9490b574bedee884fe74b0e876e2ec29  gcc/testsuite/gfortran.dg/g77/8485.f
! 4dde1c61d85b401b8b0447eeae19b7b9  gcc/testsuite/gfortran.dg/g77/9263.f
! f55177cdb300a4ef5bfbeffcad230a57  gcc/testsuite/gfortran.dg/g77/947.f
! 28c11f535cbfe9b6b96636172fe49d87  gcc/testsuite/gfortran.dg/g77/960317-1.f
  b53679d037558aff69ef730e1f31755f  gcc/testsuite/gfortran.dg/g77/970125-0.f
! a2644754c56e1228dc2ba0cfaa95ca6b  gcc/testsuite/gfortran.dg/g77/970625-2.f
  e48a6adf7417be2e9e5c431aeaf89800  gcc/testsuite/gfortran.dg/g77/970816-3.f
  a2b1e430bb2cc8d70eba7fac7bd65222  gcc/testsuite/gfortran.dg/g77/970915-0.f
! 0cd1e0fffa14d0102c0e6f5118ff9c6a  gcc/testsuite/gfortran.dg/g77/971102-1.f
  af9c112eb07711d9fd15f399baaf4056  gcc/testsuite/gfortran.dg/g77/980310-1.f
  5603b62c2dfbcfbf268ea90890767b9a  gcc/testsuite/gfortran.dg/g77/980310-2.f
  2a3386168fe0b5cf5284f2afc906a444  gcc/testsuite/gfortran.dg/g77/980310-3.f
--- 54115,54143 ----
  10e717dd526d3363aa4e249c2cc2e357  gcc/testsuite/gfortran.dg/g77/20000601-2.f
  5b80bb5360ede8eda5c74010870db1d2  gcc/testsuite/gfortran.dg/g77/20000629-1.f
  19b93e092c4b3e9134da9a834883f202  gcc/testsuite/gfortran.dg/g77/20000630-2.f
! 68fd27d8eafd5176252922d066aa24ad  gcc/testsuite/gfortran.dg/g77/20001111.f
  787568d0c1679686795dc0dd96859066  gcc/testsuite/gfortran.dg/g77/20010115.f
! cc71eac567d656d1205b021701d7a58c  gcc/testsuite/gfortran.dg/g77/20010116.f
! 218e1670e5bae37f949c9d46dc96da4a  gcc/testsuite/gfortran.dg/g77/20010216-1.f
  42bd075e2f01e62a447bb5c3c46bc179  gcc/testsuite/gfortran.dg/g77/20010321-1.f
  61fb23590346bcc01103183661548acc  gcc/testsuite/gfortran.dg/g77/20010426-1.f
  5f189a7e89f7d801de4cb2d11b5e3be8  gcc/testsuite/gfortran.dg/g77/20010426.f
! 3b4ed739b7defb94d679b4cc6413270f  gcc/testsuite/gfortran.dg/g77/20010430.f
  cde0e5030c6957fbc293df0842a16277  gcc/testsuite/gfortran.dg/g77/20010519-1.f
! 1567d40a15ff62f8e5a86dfed5c47748  gcc/testsuite/gfortran.dg/g77/20010610.f
  bb13ee578486af76d8c6b8657a382915  gcc/testsuite/gfortran.dg/g77/20020307-1.f
! 99d66188731656e7003bc05560fb63cd  gcc/testsuite/gfortran.dg/g77/20030326-1.f
! f58c27c007929e2bc84bc9ea65174594  gcc/testsuite/gfortran.dg/g77/6177.f
! 95f60d287a47724c49a15432392e0eeb  gcc/testsuite/gfortran.dg/g77/7388.f
  9490b574bedee884fe74b0e876e2ec29  gcc/testsuite/gfortran.dg/g77/8485.f
! fab68699c26ec79a8fcf803f8f0755d2  gcc/testsuite/gfortran.dg/g77/9263.f
! 6fed915411031a4f3f34465bc2dda040  gcc/testsuite/gfortran.dg/g77/947.f
! 69443fcbf91bf12a2c1dfbb8680ea12d  gcc/testsuite/gfortran.dg/g77/960317-1.f
  b53679d037558aff69ef730e1f31755f  gcc/testsuite/gfortran.dg/g77/970125-0.f
! b523ca57f59758b9ff343c76e6a18d19  gcc/testsuite/gfortran.dg/g77/970625-2.f
  e48a6adf7417be2e9e5c431aeaf89800  gcc/testsuite/gfortran.dg/g77/970816-3.f
  a2b1e430bb2cc8d70eba7fac7bd65222  gcc/testsuite/gfortran.dg/g77/970915-0.f
! 187b6bafbcb47078a9179429514df673  gcc/testsuite/gfortran.dg/g77/971102-1.f
  af9c112eb07711d9fd15f399baaf4056  gcc/testsuite/gfortran.dg/g77/980310-1.f
  5603b62c2dfbcfbf268ea90890767b9a  gcc/testsuite/gfortran.dg/g77/980310-2.f
  2a3386168fe0b5cf5284f2afc906a444  gcc/testsuite/gfortran.dg/g77/980310-3.f
*************** f18e25de58b98ac8e8ffbb9fd068860c  gcc/te
*** 50591,50641 ****
  ac13e0ae44c41cb0aee56de205b24a6e  gcc/testsuite/gfortran.dg/g77/980427-0.f
  ae928a3982a066d928063d50ace97dc6  gcc/testsuite/gfortran.dg/g77/980519-2.f
  f1124c308c03c9e6e0a7401b2a083000  gcc/testsuite/gfortran.dg/g77/980520-1.f
! 5570b5d53384a28d8a51863481cddf3f  gcc/testsuite/gfortran.dg/g77/980615-0.f
  b4439c3fe8d10267be11141987cfe3ed  gcc/testsuite/gfortran.dg/g77/980616-0.f
! c3ddecbeab19b90677541cf76acaac9d  gcc/testsuite/gfortran.dg/g77/980628-0.f
! 1e0e70eb38a08984269d69576d372475  gcc/testsuite/gfortran.dg/g77/980628-1.f
! 360f5bbb4cd238bbbcce4270b63d928f  gcc/testsuite/gfortran.dg/g77/980628-10.f
! 2b6f8af2b8030c6f9a28cf456ab32b96  gcc/testsuite/gfortran.dg/g77/980628-2.f
! a20daa288cc22699844b9c9175679280  gcc/testsuite/gfortran.dg/g77/980628-3.f
! e343f08719f64d19c54050cab2a03006  gcc/testsuite/gfortran.dg/g77/980628-7.f
! fefba559d3e038653dd9d384ff504208  gcc/testsuite/gfortran.dg/g77/980628-8.f
! dcd45e6612250cdb489e7ef027eea681  gcc/testsuite/gfortran.dg/g77/980628-9.f
! 3fa79dedbeeef1dbf8bbb00f7e784688  gcc/testsuite/gfortran.dg/g77/980701-0.f
! d585d34dc180093e68a600ba5dc9b52e  gcc/testsuite/gfortran.dg/g77/980701-1.f
  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
! bbe6b6a8bb6ef023e7d83e2e4704bea5  gcc/testsuite/gfortran.dg/g77/README
  4593fcff4c64feb2721eea31b88dfb95  gcc/testsuite/gfortran.dg/g77/alpha1.f
! 582ef217d5926fbd781d123d748479e9  gcc/testsuite/gfortran.dg/g77/cabs.f
! a4a9439954bb9313486577766e1438df  gcc/testsuite/gfortran.dg/g77/check0.f
! 43b72c8efdccf45c88f385d0e1ddc98f  gcc/testsuite/gfortran.dg/g77/claus.f
! 8ab9ec4971f59cb107bdaa1f422c1298  gcc/testsuite/gfortran.dg/g77/complex_1.f
  c1e3048c9a8fb1bb9d39012f2c0ddc2a  gcc/testsuite/gfortran.dg/g77/cpp.F
  838830e7d365923d03ad13761ee33432  gcc/testsuite/gfortran.dg/g77/cpp2.F
! e95eb46eac54d455ceafb71fb7dfbe7e  gcc/testsuite/gfortran.dg/g77/cpp3.F
! b16daa3c55ff19c914e51b9cae954fea  gcc/testsuite/gfortran.dg/g77/cpp4.F
! 5a5e3afc8c793dfb32dbe721f8047219  gcc/testsuite/gfortran.dg/g77/cpp5.F
  1e8dd92b58660d098e4cdc12a84be128  gcc/testsuite/gfortran.dg/g77/cpp5.h
  f2d4fcb471aa8f0cf129964a1a121b8b  gcc/testsuite/gfortran.dg/g77/cpp5inc.h
  025919412f50cf054f4df48775f2b65c  gcc/testsuite/gfortran.dg/g77/cpp6.f
! 80bb5aaec505e20de95b0bd2cfec49cc  gcc/testsuite/gfortran.dg/g77/dcomplex.f
! 027776187609b0bc972f0d81985b3cd1  gcc/testsuite/gfortran.dg/g77/dnrm2.f
! 03928a3dffea80f63474ee9665a7b120  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
! b9c91dc5e8a1b91076ff66d1f835856d  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
! 872f062704269b952308ae67d36a7f9e  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
! 23733a12bd23700fe1c05c2d88adaad8  gcc/testsuite/gfortran.dg/g77/f90-intrinsic-bit.f
! abd59bf787fa16689fefb79e92a01bdc  gcc/testsuite/gfortran.dg/g77/f90-intrinsic-mathematical.f
! a96df20cee2e5770e7a64ab1d0c332a6  gcc/testsuite/gfortran.dg/g77/f90-intrinsic-numeric.f
  96977883421b175b67be1118b794bd56  gcc/testsuite/gfortran.dg/g77/ffixed-form-1.f
  29ff9a4381ca8c02a6e5817b0a713d27  gcc/testsuite/gfortran.dg/g77/ffixed-form-2.f
  57194471031e9d956071d8b5b26dad72  gcc/testsuite/gfortran.dg/g77/ffixed-line-length-0.f
--- 54150,54200 ----
  ac13e0ae44c41cb0aee56de205b24a6e  gcc/testsuite/gfortran.dg/g77/980427-0.f
  ae928a3982a066d928063d50ace97dc6  gcc/testsuite/gfortran.dg/g77/980519-2.f
  f1124c308c03c9e6e0a7401b2a083000  gcc/testsuite/gfortran.dg/g77/980520-1.f
! e4378076af1f41ed44b26b970ac3dd69  gcc/testsuite/gfortran.dg/g77/980615-0.f
  b4439c3fe8d10267be11141987cfe3ed  gcc/testsuite/gfortran.dg/g77/980616-0.f
! 08c058b568a3284e52e743cb37b3e111  gcc/testsuite/gfortran.dg/g77/980628-0.f
! c774df11cc424dda17c178c89fea228d  gcc/testsuite/gfortran.dg/g77/980628-1.f
! cc0151cb2b3e73c235e0bac3b162d5ca  gcc/testsuite/gfortran.dg/g77/980628-10.f
! 4b05c1a1a070bc10a93293147ec31a0d  gcc/testsuite/gfortran.dg/g77/980628-2.f
! dd6d31201a6e9ba5a45a733ebd835a85  gcc/testsuite/gfortran.dg/g77/980628-3.f
! 2e074b54b28ba7a5457dd1f27bdd9378  gcc/testsuite/gfortran.dg/g77/980628-7.f
! 4f8ed9ddd98a1a5938c1423636dbc613  gcc/testsuite/gfortran.dg/g77/980628-8.f
! a355e26c4e3957e16c3c4af5cbe509f0  gcc/testsuite/gfortran.dg/g77/980628-9.f
! f87880c019d70b5c8e9649c7f81decb8  gcc/testsuite/gfortran.dg/g77/980701-0.f
! 8732ee940e66951c0c687b84c8087ffd  gcc/testsuite/gfortran.dg/g77/980701-1.f
  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
! 62e1df447e8451722b30b2230c292a0c  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
! c49e7a34243fb8222eadc5256508439e  gcc/testsuite/gfortran.dg/g77/claus.f
! 68cae54c4f9a1ada97ea2bbb73b041c2  gcc/testsuite/gfortran.dg/g77/complex_1.f
  c1e3048c9a8fb1bb9d39012f2c0ddc2a  gcc/testsuite/gfortran.dg/g77/cpp.F
  838830e7d365923d03ad13761ee33432  gcc/testsuite/gfortran.dg/g77/cpp2.F
! 78f8a136c50dd09b731add6ca3263a6d  gcc/testsuite/gfortran.dg/g77/cpp3.F
! 95b2cf2df9b10ce13ada22b7c1405046  gcc/testsuite/gfortran.dg/g77/cpp4.F
! 132a36c56ef7e00499cca92c582d5509  gcc/testsuite/gfortran.dg/g77/cpp5.F
  1e8dd92b58660d098e4cdc12a84be128  gcc/testsuite/gfortran.dg/g77/cpp5.h
  f2d4fcb471aa8f0cf129964a1a121b8b  gcc/testsuite/gfortran.dg/g77/cpp5inc.h
  025919412f50cf054f4df48775f2b65c  gcc/testsuite/gfortran.dg/g77/cpp6.f
! 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
  96977883421b175b67be1118b794bd56  gcc/testsuite/gfortran.dg/g77/ffixed-form-1.f
  29ff9a4381ca8c02a6e5817b0a713d27  gcc/testsuite/gfortran.dg/g77/ffixed-form-2.f
  57194471031e9d956071d8b5b26dad72  gcc/testsuite/gfortran.dg/g77/ffixed-line-length-0.f
*************** c34f0338bfd38cc5789eae9ef9b39d98  gcc/te
*** 50647,50696 ****
  536d1ae729593f200381628d100a2b86  gcc/testsuite/gfortran.dg/g77/ffree-form-3.f
  b76273e7af403caabc68f7f1973b211c  gcc/testsuite/gfortran.dg/g77/fno-underscoring.f
  51a2c0c69a512565c359338191e9e39e  gcc/testsuite/gfortran.dg/g77/funderscoring.f
! 4ef4fced408b1eb7aac84475388ec11b  gcc/testsuite/gfortran.dg/g77/int8421.f
! 0359ea7900fa257c4b5aa3ece8aac208  gcc/testsuite/gfortran.dg/g77/intrinsic-unix-bessel.f
! eeb1076395b9033c0dd4f2a74228a5f3  gcc/testsuite/gfortran.dg/g77/intrinsic-unix-erf.f
  b95bed0058de43a18f0b95b0a13babee  gcc/testsuite/gfortran.dg/g77/labug1.f
  5cd5db2f5585dc7595a6f6ad12e9e45d  gcc/testsuite/gfortran.dg/g77/large_vec.f
! 29f3edfa4d9e8710746d03b0803588c0  gcc/testsuite/gfortran.dg/g77/le.f
! 6095084913bf923ac5b0f60746f606db  gcc/testsuite/gfortran.dg/g77/pr9258.f
! d106118ac4cd7b8ac71897807af311b0  gcc/testsuite/gfortran.dg/g77/short.f
  632f6b94f0110d72eedbee7641bd627f  gcc/testsuite/gfortran.dg/g77/strlen0.f
  26374b4f17ec9ded8cafd5c6666580d5  gcc/testsuite/gfortran.dg/g77/toon_1.f
  507107b1fe21bc057b23f80e4813a779  gcc/testsuite/gfortran.dg/g77/xformat.f
  014a33cc6026bde4bc2454106ccd756a  gcc/testsuite/gfortran.dg/g77_intrinsics_funcs.f
  2d18a14a9628d16cb6b1e5971754464b  gcc/testsuite/gfortran.dg/g77_intrinsics_sub.f
! 1575a90d87cf18406ecb95befa34dcd7  gcc/testsuite/gfortran.dg/gamma_1.f90
  2c27507397dd8bbae0e2ecc3cc607284  gcc/testsuite/gfortran.dg/gamma_2.f90
  885f70bd504990deca1b7719c0ca929e  gcc/testsuite/gfortran.dg/gamma_3.f90
! a98c0982476fea99653051a93d120ea1  gcc/testsuite/gfortran.dg/gamma_4.f90
! d7f603ba6f6efe48191e19b7cbd8b8e9  gcc/testsuite/gfortran.dg/gamma_5.f90
  176b7a49d60c5170e3547883e19d1aa6  gcc/testsuite/gfortran.dg/generic_1.f90
  7f514bc534dbccd66b5e416120b5b1f8  gcc/testsuite/gfortran.dg/generic_10.f90
  b64d18123593b8b2ce7fc63ee89ee03e  gcc/testsuite/gfortran.dg/generic_11.f90
  388dea3ced468203b2b284ea57797a83  gcc/testsuite/gfortran.dg/generic_12.f90
! 41500cec5372f11b14041bb5a31ba9ea  gcc/testsuite/gfortran.dg/generic_13.f90
  fad6868107118304443313651549e906  gcc/testsuite/gfortran.dg/generic_14.f90
! 17466d506173a6f9a4f556a8b67b77d5  gcc/testsuite/gfortran.dg/generic_15.f90
  9f26800be7076785d360ee0ada334f97  gcc/testsuite/gfortran.dg/generic_16.f90
  a87d93a1552bfc8fc028739aed334cf2  gcc/testsuite/gfortran.dg/generic_17.f90
  ebf5aff3f99dfd0709ee3182af0fe5ef  gcc/testsuite/gfortran.dg/generic_18.f90
! 88f6e21711cb1b6f625a012c48fc88d1  gcc/testsuite/gfortran.dg/generic_19.f90
  950e0227bc118a7f1b3b9a411904385b  gcc/testsuite/gfortran.dg/generic_2.f90
! f77ed50574cf8dfbfd9745041b51cc82  gcc/testsuite/gfortran.dg/generic_20.f90
  c4d372d448bde5067d0d31a1fce097de  gcc/testsuite/gfortran.dg/generic_21.f90
  acd12be1c18f778e7db38f96897b9167  gcc/testsuite/gfortran.dg/generic_22.f03
! 870bbbfeef81a30ada01057a28603967  gcc/testsuite/gfortran.dg/generic_23.f03
  c85923703b837982022aebc967285423  gcc/testsuite/gfortran.dg/generic_24.f90
! 85cb0fcdf57f151f8149dcce3ba18952  gcc/testsuite/gfortran.dg/generic_25.f90
! e9942e139acb1ae144a36c74886786a4  gcc/testsuite/gfortran.dg/generic_26.f90
! aac30443117734b3e7052646be882d77  gcc/testsuite/gfortran.dg/generic_27.f90
  5df587bf68b379e222fd29da0a71c261  gcc/testsuite/gfortran.dg/generic_28.f90
  0cac1bd9f7b24db2798b1245c0bec977  gcc/testsuite/gfortran.dg/generic_29.f90
  8903ef8f818c080ee22a33c4093134b8  gcc/testsuite/gfortran.dg/generic_3.f90
  9f63f9825952be23ec6a3769a960c639  gcc/testsuite/gfortran.dg/generic_30.f90
! 8a51f0c660263f5d592b1689ce1bc829  gcc/testsuite/gfortran.dg/generic_31.f90
! d21248018105fd7ccacf9fa869f57e0a  gcc/testsuite/gfortran.dg/generic_4.f90
  6b638ae392f7e94c1592d0efbc053876  gcc/testsuite/gfortran.dg/generic_5.f90
  dc5927a86c1c614c2ff8285c60cf86f9  gcc/testsuite/gfortran.dg/generic_6.f90
  2f21314d0435e2408c284efafe65e576  gcc/testsuite/gfortran.dg/generic_7.f90
--- 54206,54255 ----
  536d1ae729593f200381628d100a2b86  gcc/testsuite/gfortran.dg/g77/ffree-form-3.f
  b76273e7af403caabc68f7f1973b211c  gcc/testsuite/gfortran.dg/g77/fno-underscoring.f
  51a2c0c69a512565c359338191e9e39e  gcc/testsuite/gfortran.dg/g77/funderscoring.f
! 38ab98bd5d8549b0b5d1751e0a010433  gcc/testsuite/gfortran.dg/g77/int8421.f
! 338eb90af5e7e87b307a46204faa4341  gcc/testsuite/gfortran.dg/g77/intrinsic-unix-bessel.f
! ae88a47a36ff81768bbc94c2fccb750c  gcc/testsuite/gfortran.dg/g77/intrinsic-unix-erf.f
  b95bed0058de43a18f0b95b0a13babee  gcc/testsuite/gfortran.dg/g77/labug1.f
  5cd5db2f5585dc7595a6f6ad12e9e45d  gcc/testsuite/gfortran.dg/g77/large_vec.f
! 7ebb2b647b7391d93f548e6b083eeb94  gcc/testsuite/gfortran.dg/g77/le.f
! 08b2d0aa4e5c504bd6c05415aec457fb  gcc/testsuite/gfortran.dg/g77/pr9258.f
! db8b6c06ec8fa683359365a4c0484581  gcc/testsuite/gfortran.dg/g77/short.f
  632f6b94f0110d72eedbee7641bd627f  gcc/testsuite/gfortran.dg/g77/strlen0.f
  26374b4f17ec9ded8cafd5c6666580d5  gcc/testsuite/gfortran.dg/g77/toon_1.f
  507107b1fe21bc057b23f80e4813a779  gcc/testsuite/gfortran.dg/g77/xformat.f
  014a33cc6026bde4bc2454106ccd756a  gcc/testsuite/gfortran.dg/g77_intrinsics_funcs.f
  2d18a14a9628d16cb6b1e5971754464b  gcc/testsuite/gfortran.dg/g77_intrinsics_sub.f
! 04c9ca293f1fff6898507f486c3904e9  gcc/testsuite/gfortran.dg/gamma_1.f90
  2c27507397dd8bbae0e2ecc3cc607284  gcc/testsuite/gfortran.dg/gamma_2.f90
  885f70bd504990deca1b7719c0ca929e  gcc/testsuite/gfortran.dg/gamma_3.f90
! b2dab7cf63d07072e0211a0ec871e5c9  gcc/testsuite/gfortran.dg/gamma_4.f90
! c4995ffda486ea745c5067041a6124ed  gcc/testsuite/gfortran.dg/gamma_5.f90
  176b7a49d60c5170e3547883e19d1aa6  gcc/testsuite/gfortran.dg/generic_1.f90
  7f514bc534dbccd66b5e416120b5b1f8  gcc/testsuite/gfortran.dg/generic_10.f90
  b64d18123593b8b2ce7fc63ee89ee03e  gcc/testsuite/gfortran.dg/generic_11.f90
  388dea3ced468203b2b284ea57797a83  gcc/testsuite/gfortran.dg/generic_12.f90
! f6fa64e5e352b4b654d561fa798dd94b  gcc/testsuite/gfortran.dg/generic_13.f90
  fad6868107118304443313651549e906  gcc/testsuite/gfortran.dg/generic_14.f90
! 9758abd9f9c499de95bc21fa4207367d  gcc/testsuite/gfortran.dg/generic_15.f90
  9f26800be7076785d360ee0ada334f97  gcc/testsuite/gfortran.dg/generic_16.f90
  a87d93a1552bfc8fc028739aed334cf2  gcc/testsuite/gfortran.dg/generic_17.f90
  ebf5aff3f99dfd0709ee3182af0fe5ef  gcc/testsuite/gfortran.dg/generic_18.f90
! c981b0fa146832487b5a5e4411345437  gcc/testsuite/gfortran.dg/generic_19.f90
  950e0227bc118a7f1b3b9a411904385b  gcc/testsuite/gfortran.dg/generic_2.f90
! 5127bf13f0a3fb851db3bae2d41e0c74  gcc/testsuite/gfortran.dg/generic_20.f90
  c4d372d448bde5067d0d31a1fce097de  gcc/testsuite/gfortran.dg/generic_21.f90
  acd12be1c18f778e7db38f96897b9167  gcc/testsuite/gfortran.dg/generic_22.f03
! 9058257765fdd1b4f874616842c6a848  gcc/testsuite/gfortran.dg/generic_23.f03
  c85923703b837982022aebc967285423  gcc/testsuite/gfortran.dg/generic_24.f90
! 2602430ae77f0c72c482499b81b3e85e  gcc/testsuite/gfortran.dg/generic_25.f90
! 5f90ee1b60ccb7b30873c6586768135e  gcc/testsuite/gfortran.dg/generic_26.f90
! 0fcbb17365c2dcbc4c5340fa5dd643b2  gcc/testsuite/gfortran.dg/generic_27.f90
  5df587bf68b379e222fd29da0a71c261  gcc/testsuite/gfortran.dg/generic_28.f90
  0cac1bd9f7b24db2798b1245c0bec977  gcc/testsuite/gfortran.dg/generic_29.f90
  8903ef8f818c080ee22a33c4093134b8  gcc/testsuite/gfortran.dg/generic_3.f90
  9f63f9825952be23ec6a3769a960c639  gcc/testsuite/gfortran.dg/generic_30.f90
! b05969f53054593dd395b4ea04ad9c70  gcc/testsuite/gfortran.dg/generic_31.f90
! a5a419e931b944ccee23f03064f3067a  gcc/testsuite/gfortran.dg/generic_4.f90
  6b638ae392f7e94c1592d0efbc053876  gcc/testsuite/gfortran.dg/generic_5.f90
  dc5927a86c1c614c2ff8285c60cf86f9  gcc/testsuite/gfortran.dg/generic_6.f90
  2f21314d0435e2408c284efafe65e576  gcc/testsuite/gfortran.dg/generic_7.f90
*************** fae23b41460270e976cf93da0fa8c1ca  gcc/te
*** 50701,50711 ****
  dde1a2efd44a1842615d10e590968dd6  gcc/testsuite/gfortran.dg/getenv_1.f90
  c0e505ce7e71351fb9249932cf5da47d  gcc/testsuite/gfortran.dg/global_references_1.f90
  1c14a592aabd1b4c2de0629363654cb6  gcc/testsuite/gfortran.dg/global_references_2.f90
! 7dac67bba3be8b8fdd640023dc422f1f  gcc/testsuite/gfortran.dg/global_vars_c_init.f90
  b49db20880b8ab9cfe53b41838e49798  gcc/testsuite/gfortran.dg/global_vars_c_init_driver.c
! f09b279084dd78c867deb4c29a351c13  gcc/testsuite/gfortran.dg/global_vars_f90_init.f90
  1e220f6220b76cc8c3a456baadfdbc39  gcc/testsuite/gfortran.dg/global_vars_f90_init_driver.c
! 55e7857d1dafac193e2cd5a0a381424f  gcc/testsuite/gfortran.dg/gnu_logical_1.F
  fcddec2c8be6f5c85fd4943091dc86d1  gcc/testsuite/gfortran.dg/gnu_logical_2.f90
  c925a5d7c22256c99d83f11fb7a6916a  gcc/testsuite/gfortran.dg/goacc/acc_on_device-1.f95
  1bb13022cfc4df10f7b288df9b2ceaa7  gcc/testsuite/gfortran.dg/goacc/acc_on_device-2-off.f95
--- 54260,54270 ----
  dde1a2efd44a1842615d10e590968dd6  gcc/testsuite/gfortran.dg/getenv_1.f90
  c0e505ce7e71351fb9249932cf5da47d  gcc/testsuite/gfortran.dg/global_references_1.f90
  1c14a592aabd1b4c2de0629363654cb6  gcc/testsuite/gfortran.dg/global_references_2.f90
! 731708bbc082437782346d95a62b177e  gcc/testsuite/gfortran.dg/global_vars_c_init.f90
  b49db20880b8ab9cfe53b41838e49798  gcc/testsuite/gfortran.dg/global_vars_c_init_driver.c
! 708ae800b065b3150aec34fde7e5396d  gcc/testsuite/gfortran.dg/global_vars_f90_init.f90
  1e220f6220b76cc8c3a456baadfdbc39  gcc/testsuite/gfortran.dg/global_vars_f90_init_driver.c
! b32a087554a1b01d316e7fb5f39b0063  gcc/testsuite/gfortran.dg/gnu_logical_1.F
  fcddec2c8be6f5c85fd4943091dc86d1  gcc/testsuite/gfortran.dg/gnu_logical_2.f90
  c925a5d7c22256c99d83f11fb7a6916a  gcc/testsuite/gfortran.dg/goacc/acc_on_device-1.f95
  1bb13022cfc4df10f7b288df9b2ceaa7  gcc/testsuite/gfortran.dg/goacc/acc_on_device-2-off.f95
*************** e5c0af740e47a34c175a9ceb878b8228  gcc/te
*** 50719,50724 ****
--- 54278,54287 ----
  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
+ f0056b7a4518a44b12bd5467dd05a3d3  gcc/testsuite/gfortran.dg/goacc/classify-kernels-unparallelized.f95
+ cf12517aa167bcb04f7a9b024f96b243  gcc/testsuite/gfortran.dg/goacc/classify-kernels.f95
+ c4a37eb8f0c9f71a0feeb9bb7334504a  gcc/testsuite/gfortran.dg/goacc/classify-parallel.f95
+ bfd8c4badaef5ba7d9bad06c34146efb  gcc/testsuite/gfortran.dg/goacc/classify-routine.f95
  83d4a89dbb466047d65da89db7eebee2  gcc/testsuite/gfortran.dg/goacc/coarray.f95
  802487ba26d5909068b6a8fd851b3b28  gcc/testsuite/gfortran.dg/goacc/coarray_2.f90
  55f389e7d2475dfd568dc4cfc36ee031  gcc/testsuite/gfortran.dg/goacc/combined-directives.f90
*************** decf3300196fa1217139ef97f2e0edda  gcc/te
*** 50731,50763 ****
  cf1b8cb94fd316d9739bca6a5a62b7c8  gcc/testsuite/gfortran.dg/goacc/data-tree.f95
  361134d8942c24e6fcbf9834694862d3  gcc/testsuite/gfortran.dg/goacc/declare-1.f95
  b13cb2185ec6913fd62d6344461f86be  gcc/testsuite/gfortran.dg/goacc/declare-2.f95
! 4988f26db9764dd18f3c246f206f0ede  gcc/testsuite/gfortran.dg/goacc/default.f95
  7a1a98a21be337079ded815d6a575f0d  gcc/testsuite/gfortran.dg/goacc/default_none.f95
  a7ce5795f938dbc0e5adb77b4d86afa9  gcc/testsuite/gfortran.dg/goacc/enter-exit-data.f95
  5df16712bea807f97abc1370c1e9959a  gcc/testsuite/gfortran.dg/goacc/firstprivate-1.f95
! 60cacaa2e043c71ce6aa9f8d54374f86  gcc/testsuite/gfortran.dg/goacc/fixed-1.f
! ff4f962ba14d4405dfbd8685998c478c  gcc/testsuite/gfortran.dg/goacc/fixed-2.f
  d4c2919d4f88b391fb32fcbe225f7214  gcc/testsuite/gfortran.dg/goacc/fixed-3.f
  d6fc5ccccdf283b89871056a603002b0  gcc/testsuite/gfortran.dg/goacc/fixed-4.f
! 3f7ac5f0160724c763709d9716ce290d  gcc/testsuite/gfortran.dg/goacc/gang-static.f95
! 7e275d0d04e771fc78e4be78e5df238d  gcc/testsuite/gfortran.dg/goacc/goacc.exp
  384971f27ba07b4da37242e36e9a1337  gcc/testsuite/gfortran.dg/goacc/host_data-tree.f95
  0a980846e59d2913b99c250e76fa99cf  gcc/testsuite/gfortran.dg/goacc/if.f95
  ce74911a246da843d2626a4a20b1b0c4  gcc/testsuite/gfortran.dg/goacc/kernels-alias-2.f95
  d5dc508fa5f0c7f41320b204b50e6bc2  gcc/testsuite/gfortran.dg/goacc/kernels-alias-3.f95
! 60e6738878a90bec1f4f070a03f9a09f  gcc/testsuite/gfortran.dg/goacc/kernels-alias-4.f95
  7c77903590fd7c726078e8f685cade4a  gcc/testsuite/gfortran.dg/goacc/kernels-alias.f95
! b0bd0bb3bdbad78b6e58388874beba1f  gcc/testsuite/gfortran.dg/goacc/kernels-loop-2.f95
! 0f109677300fb161c3249465887861ec  gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-2.f95
! aadfe7687447d7efd97cb1d17d27ad14  gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-enter-exit-2.f95
! 924fa8675a8ece92c94616929fea70e0  gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-enter-exit.f95
! 8fd590dfde4fcc05f127abdb48eddf5b  gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-update.f95
! 7b7bc69043c1c331b82097c637771bc3  gcc/testsuite/gfortran.dg/goacc/kernels-loop-data.f95
  0088add359c8b14863928253089c9056  gcc/testsuite/gfortran.dg/goacc/kernels-loop-inner.f95
! 9c7075f288eab874d09dc7395b920b41  gcc/testsuite/gfortran.dg/goacc/kernels-loop-n.f95
! fd95718fb6a447b748591ce77147b970  gcc/testsuite/gfortran.dg/goacc/kernels-loop.f95
  12fccbb98b6c2bfc3ac90b38fc6e14af  gcc/testsuite/gfortran.dg/goacc/kernels-loops-adjacent.f95
! b3ec1dda65c543c847dd7dddd2c4225d  gcc/testsuite/gfortran.dg/goacc/kernels-tree.f95
  06b73d60b58c93568ae83a067a3fcd9d  gcc/testsuite/gfortran.dg/goacc/list.f95
  e6dbc70731a1d1ca5862632bc04ef617  gcc/testsuite/gfortran.dg/goacc/literal.f95
  b26795c8c89b35d75e8f259a55524874  gcc/testsuite/gfortran.dg/goacc/loop-1-2.f95
--- 54294,54330 ----
  cf1b8cb94fd316d9739bca6a5a62b7c8  gcc/testsuite/gfortran.dg/goacc/data-tree.f95
  361134d8942c24e6fcbf9834694862d3  gcc/testsuite/gfortran.dg/goacc/declare-1.f95
  b13cb2185ec6913fd62d6344461f86be  gcc/testsuite/gfortran.dg/goacc/declare-2.f95
! 7afa26213bd0c94c0267d8a959f6f792  gcc/testsuite/gfortran.dg/goacc/default-1.f95
! ddc259bc019bc6ffb974c21e45a27721  gcc/testsuite/gfortran.dg/goacc/default-2.f
! 8a8869b692be6025b8d25893e126a5bd  gcc/testsuite/gfortran.dg/goacc/default-3.f95
! 446e3901df93539790e51afb6b4b0166  gcc/testsuite/gfortran.dg/goacc/default-4.f
! 4c9397b6b905d9a862759562ff42d768  gcc/testsuite/gfortran.dg/goacc/default-5.f
  7a1a98a21be337079ded815d6a575f0d  gcc/testsuite/gfortran.dg/goacc/default_none.f95
  a7ce5795f938dbc0e5adb77b4d86afa9  gcc/testsuite/gfortran.dg/goacc/enter-exit-data.f95
  5df16712bea807f97abc1370c1e9959a  gcc/testsuite/gfortran.dg/goacc/firstprivate-1.f95
! 80979b6cc7e2aaefc5c01c5a5ec35f63  gcc/testsuite/gfortran.dg/goacc/fixed-1.f
! a2e2e82a9ba48ccb237461a95e525152  gcc/testsuite/gfortran.dg/goacc/fixed-2.f
  d4c2919d4f88b391fb32fcbe225f7214  gcc/testsuite/gfortran.dg/goacc/fixed-3.f
  d6fc5ccccdf283b89871056a603002b0  gcc/testsuite/gfortran.dg/goacc/fixed-4.f
! f47f079a6e8bea88ed65bfb0d0cdaa69  gcc/testsuite/gfortran.dg/goacc/gang-static.f95
! e1fd4a4811ca095fdf9ac9b6910e7268  gcc/testsuite/gfortran.dg/goacc/goacc.exp
  384971f27ba07b4da37242e36e9a1337  gcc/testsuite/gfortran.dg/goacc/host_data-tree.f95
  0a980846e59d2913b99c250e76fa99cf  gcc/testsuite/gfortran.dg/goacc/if.f95
  ce74911a246da843d2626a4a20b1b0c4  gcc/testsuite/gfortran.dg/goacc/kernels-alias-2.f95
  d5dc508fa5f0c7f41320b204b50e6bc2  gcc/testsuite/gfortran.dg/goacc/kernels-alias-3.f95
! 32c29c5c89fa00146b3a2febdd2b0b26  gcc/testsuite/gfortran.dg/goacc/kernels-alias-4.f95
  7c77903590fd7c726078e8f685cade4a  gcc/testsuite/gfortran.dg/goacc/kernels-alias.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
  0088add359c8b14863928253089c9056  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
! debc73f524a292de226262fa748822a3  gcc/testsuite/gfortran.dg/goacc/kernels-tree.f95
  06b73d60b58c93568ae83a067a3fcd9d  gcc/testsuite/gfortran.dg/goacc/list.f95
  e6dbc70731a1d1ca5862632bc04ef617  gcc/testsuite/gfortran.dg/goacc/literal.f95
  b26795c8c89b35d75e8f259a55524874  gcc/testsuite/gfortran.dg/goacc/loop-1-2.f95
*************** f89d863f93581b48d43a32a8190ba33e  gcc/te
*** 50772,50778 ****
  8acc04efc98db4b4029c51746d1568e7  gcc/testsuite/gfortran.dg/goacc/loop-tree-1.f90
  a7d01192484b5c937807678ca75537ad  gcc/testsuite/gfortran.dg/goacc/multi-clause.f90
  d8029a1c26556a69cbb64f6e00104fc1  gcc/testsuite/gfortran.dg/goacc/nested-function-1.f90
! 0eceec0214676eaf97b87027864084f8  gcc/testsuite/gfortran.dg/goacc/omp-fixed.f
  7ac95438e9a28b224841f382a0cd1c73  gcc/testsuite/gfortran.dg/goacc/omp.f95
  858af9153dd1e561ac2db5bbc63970fc  gcc/testsuite/gfortran.dg/goacc/parallel-kernels-clauses.f95
  1ba4b22dac74c58581a0548cc088e27d  gcc/testsuite/gfortran.dg/goacc/parallel-kernels-regions.f95
--- 54339,54345 ----
  8acc04efc98db4b4029c51746d1568e7  gcc/testsuite/gfortran.dg/goacc/loop-tree-1.f90
  a7d01192484b5c937807678ca75537ad  gcc/testsuite/gfortran.dg/goacc/multi-clause.f90
  d8029a1c26556a69cbb64f6e00104fc1  gcc/testsuite/gfortran.dg/goacc/nested-function-1.f90
! 131cc54b265b6417c369ede28849c7ba  gcc/testsuite/gfortran.dg/goacc/omp-fixed.f
  7ac95438e9a28b224841f382a0cd1c73  gcc/testsuite/gfortran.dg/goacc/omp.f95
  858af9153dd1e561ac2db5bbc63970fc  gcc/testsuite/gfortran.dg/goacc/parallel-kernels-clauses.f95
  1ba4b22dac74c58581a0548cc088e27d  gcc/testsuite/gfortran.dg/goacc/parallel-kernels-regions.f95
*************** f111c33f57aecc85e59e669c980e4436  gcc/te
*** 50780,50786 ****
--- 54347,54356 ----
  4f9ac2d37e02e4f60dbb47924519e3ad  gcc/testsuite/gfortran.dg/goacc/parameter.f95
  b4f5bf838607d6206aae8d768d23c64e  gcc/testsuite/gfortran.dg/goacc/pr71704.f90
  dff0c4a3dcd2aac51063c6e05c6d4665  gcc/testsuite/gfortran.dg/goacc/pr72743.f90
+ afef16c2771512fb51bd89dace9f7c11  gcc/testsuite/gfortran.dg/goacc/pr77765.f90
  fc686524ed127ce392011e6c6d596cb9  gcc/testsuite/gfortran.dg/goacc/pr78027.f90
+ 77b32efd84a7f238f0fa5166b3b2fde1  gcc/testsuite/gfortran.dg/goacc/pr84217.f90
+ 98021166ee2b55420ca83360835ea78c  gcc/testsuite/gfortran.dg/goacc/pr84963.f90
  93028fbaf2e1d8a3907db1cacb627cf7  gcc/testsuite/gfortran.dg/goacc/private-1.f95
  24e251dd88a9ea6377e535f5ee5f31ed  gcc/testsuite/gfortran.dg/goacc/private-2.f95
  a70416eb409bcd3ad178b3d0127d84e8  gcc/testsuite/gfortran.dg/goacc/private-3.f95
*************** d3ab76f25073383b9b4da99d0ae1d5da  gcc/te
*** 50791,50814 ****
  46fd853a6275991852de09ff935972f6  gcc/testsuite/gfortran.dg/goacc/reduction.f95
  98a9635d961b647b2f7ee8a0788d11b0  gcc/testsuite/gfortran.dg/goacc/routine-1.f90
  02135bc0b797b99a2d2126798e1e461b  gcc/testsuite/gfortran.dg/goacc/routine-2.f90
! 60a63e7dea69f1a44771355914ccfbee  gcc/testsuite/gfortran.dg/goacc/routine-3.f90
  9e49765a05b94d921dee5f80e5fcab54  gcc/testsuite/gfortran.dg/goacc/routine-4.f90
  d8bda8310290b20e70bf191a6dd5db15  gcc/testsuite/gfortran.dg/goacc/routine-5.f90
  fdb9c1879b86eaeaa21ceda2573b1ff4  gcc/testsuite/gfortran.dg/goacc/routine-6.f90
  b1c4bb573e81ab633ef763b4cf17f540  gcc/testsuite/gfortran.dg/goacc/sentinel-free-form.f95
  1de77dbd04bee79fc48688363255fcd9  gcc/testsuite/gfortran.dg/goacc/several-directives.f95
! f06b08508075bc5860b3aef6a69260fe  gcc/testsuite/gfortran.dg/goacc/sie.f95
  0e15f3419b917d14108d176cf7e21bf5  gcc/testsuite/gfortran.dg/goacc/subarrays.f95
  e0fa0cf86af035c1b67ad88962ce26b4  gcc/testsuite/gfortran.dg/goacc/tile-1.f90
  9271d76d87f6fa51aadceb07265aa68a  gcc/testsuite/gfortran.dg/goacc/tile-2.f90
  19ae649d727cd1230ec6e28183ffa84d  gcc/testsuite/gfortran.dg/goacc/tile-lowering.f95
  2fcae0aca98e7612762a0d64de5d1b4d  gcc/testsuite/gfortran.dg/goacc/uninit-copy-clause.f95
! 1b773656b8a7d541df7a20f4cb0b21c5  gcc/testsuite/gfortran.dg/goacc/uninit-dim-clause.f95
  dd2a54a711f3f1fc2d508534164228f9  gcc/testsuite/gfortran.dg/goacc/uninit-firstprivate-clause.f95
  602bf490ed457bd125825c97354123d3  gcc/testsuite/gfortran.dg/goacc/uninit-if-clause.f95
  641a662dc120c49d5293b1d1a5e0873f  gcc/testsuite/gfortran.dg/goacc/uninit-use-device-clause.f95
  5c6b557fbcefd15ad6ec6ef08ade9d19  gcc/testsuite/gfortran.dg/goacc/update.f95
  e9972505e1a87fdeda00b94d99cf711b  gcc/testsuite/gfortran.dg/goacc/vector_length.f90
  fe34d9d42d37b9776459e695b904bc39  gcc/testsuite/gfortran.dg/gomp/affinity-1.f90
  5633756a662441452bd869456e985808  gcc/testsuite/gfortran.dg/gomp/allocatable_components_1.f90
  a2a78b9dfd24cc5b801a51ebf7713787  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.1.1.f90
--- 54361,54385 ----
  46fd853a6275991852de09ff935972f6  gcc/testsuite/gfortran.dg/goacc/reduction.f95
  98a9635d961b647b2f7ee8a0788d11b0  gcc/testsuite/gfortran.dg/goacc/routine-1.f90
  02135bc0b797b99a2d2126798e1e461b  gcc/testsuite/gfortran.dg/goacc/routine-2.f90
! 626c79e2d08f68f4ec1db30fd124ebd1  gcc/testsuite/gfortran.dg/goacc/routine-3.f90
  9e49765a05b94d921dee5f80e5fcab54  gcc/testsuite/gfortran.dg/goacc/routine-4.f90
  d8bda8310290b20e70bf191a6dd5db15  gcc/testsuite/gfortran.dg/goacc/routine-5.f90
  fdb9c1879b86eaeaa21ceda2573b1ff4  gcc/testsuite/gfortran.dg/goacc/routine-6.f90
  b1c4bb573e81ab633ef763b4cf17f540  gcc/testsuite/gfortran.dg/goacc/sentinel-free-form.f95
  1de77dbd04bee79fc48688363255fcd9  gcc/testsuite/gfortran.dg/goacc/several-directives.f95
! c583b36d70d71ede56a065c07a8d0ca5  gcc/testsuite/gfortran.dg/goacc/sie.f95
  0e15f3419b917d14108d176cf7e21bf5  gcc/testsuite/gfortran.dg/goacc/subarrays.f95
  e0fa0cf86af035c1b67ad88962ce26b4  gcc/testsuite/gfortran.dg/goacc/tile-1.f90
  9271d76d87f6fa51aadceb07265aa68a  gcc/testsuite/gfortran.dg/goacc/tile-2.f90
  19ae649d727cd1230ec6e28183ffa84d  gcc/testsuite/gfortran.dg/goacc/tile-lowering.f95
  2fcae0aca98e7612762a0d64de5d1b4d  gcc/testsuite/gfortran.dg/goacc/uninit-copy-clause.f95
! 8cc93f2def35232588cd1ddad4a3d8d3  gcc/testsuite/gfortran.dg/goacc/uninit-dim-clause.f95
  dd2a54a711f3f1fc2d508534164228f9  gcc/testsuite/gfortran.dg/goacc/uninit-firstprivate-clause.f95
  602bf490ed457bd125825c97354123d3  gcc/testsuite/gfortran.dg/goacc/uninit-if-clause.f95
  641a662dc120c49d5293b1d1a5e0873f  gcc/testsuite/gfortran.dg/goacc/uninit-use-device-clause.f95
  5c6b557fbcefd15ad6ec6ef08ade9d19  gcc/testsuite/gfortran.dg/goacc/update.f95
  e9972505e1a87fdeda00b94d99cf711b  gcc/testsuite/gfortran.dg/goacc/vector_length.f90
+ ca7b1430257c87857673c1facde6a8d8  gcc/testsuite/gfortran.dg/goacc/wait.f90
  fe34d9d42d37b9776459e695b904bc39  gcc/testsuite/gfortran.dg/gomp/affinity-1.f90
  5633756a662441452bd869456e985808  gcc/testsuite/gfortran.dg/gomp/allocatable_components_1.f90
  a2a78b9dfd24cc5b801a51ebf7713787  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.1.1.f90
*************** c0627a80d39d5dc33d5191270789a95b  gcc/te
*** 50836,50849 ****
  e892480f878db9fb2d75388365b0d38f  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.23.3.f90
  8c9fe83571afc9c5215a588cf630be06  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.23.4.f90
  4a00bd38a551e52f3dc463664dc5c758  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.23.5.f90
! 712e3b03f2849d50e126128546802d3d  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.24.1.f90
  8967546182bcd121c3f99d78d5cc53b3  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.25.1.f90
  9118d63cdf8bff7d2771f4a40bb703ff  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.26.2.f90
  2aa2d73f7d03a61e25d221d421eaf81d  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.27.1.f90
  53059af4b001b877b193a648ed0c69f4  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.30.1.f90
  87d438d380fe4278f5240b8d1fd0d3db  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.31.1.f90
  0467067c8e8499996af77b64afbb8c31  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.31.2.f90
! 291e78adbe93a2f84d2a41707864c4d2  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.31.3.f90
  182731c8064c6ef83beb1d10cd03700b  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.32.1.f90
  157bb81ef8b8706d56531116aacc2653  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.33.1.f90
  4ab99a44c0b5a623c5d27396d9bd8a6b  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.33.2.f90
--- 54407,54420 ----
  e892480f878db9fb2d75388365b0d38f  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.23.3.f90
  8c9fe83571afc9c5215a588cf630be06  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.23.4.f90
  4a00bd38a551e52f3dc463664dc5c758  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.23.5.f90
! 5940a7ab6e923d166e0cefe1ed148942  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.24.1.f90
  8967546182bcd121c3f99d78d5cc53b3  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.25.1.f90
  9118d63cdf8bff7d2771f4a40bb703ff  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.26.2.f90
  2aa2d73f7d03a61e25d221d421eaf81d  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.27.1.f90
  53059af4b001b877b193a648ed0c69f4  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.30.1.f90
  87d438d380fe4278f5240b8d1fd0d3db  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.31.1.f90
  0467067c8e8499996af77b64afbb8c31  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.31.2.f90
! 99ee5875ce6758020fa75de42d1b90b0  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.31.3.f90
  182731c8064c6ef83beb1d10cd03700b  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.32.1.f90
  157bb81ef8b8706d56531116aacc2653  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.33.1.f90
  4ab99a44c0b5a623c5d27396d9bd8a6b  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.33.2.f90
*************** c8bcf6337f95b605de3d54a7f8e5ab84  gcc/te
*** 50872,50878 ****
  4009d52a55ca8f5b28f926033fbbbabe  gcc/testsuite/gfortran.dg/gomp/crayptr2.f90
  2cf9d85cd13917a968c4480125a70d0e  gcc/testsuite/gfortran.dg/gomp/crayptr3.f90
  1c6644a88dc4bee98beb52bb4342fee9  gcc/testsuite/gfortran.dg/gomp/crayptr4.f90
! 5752af36ad97d8ba0a6600c514a1eb76  gcc/testsuite/gfortran.dg/gomp/crayptr5.f90
  3637ee280cfe64316f44286f354db90d  gcc/testsuite/gfortran.dg/gomp/declare-simd-1.f90
  10b7fa8c03c3dfc00eb7345f9e992ad6  gcc/testsuite/gfortran.dg/gomp/declare-simd-2.f90
  3efc7a1651bd3761d7b6f4bbc264313a  gcc/testsuite/gfortran.dg/gomp/declare-target-1.f90
--- 54443,54449 ----
  4009d52a55ca8f5b28f926033fbbbabe  gcc/testsuite/gfortran.dg/gomp/crayptr2.f90
  2cf9d85cd13917a968c4480125a70d0e  gcc/testsuite/gfortran.dg/gomp/crayptr3.f90
  1c6644a88dc4bee98beb52bb4342fee9  gcc/testsuite/gfortran.dg/gomp/crayptr4.f90
! 4a434ccf995f8c325ad483ae77b66d9f  gcc/testsuite/gfortran.dg/gomp/crayptr5.f90
  3637ee280cfe64316f44286f354db90d  gcc/testsuite/gfortran.dg/gomp/declare-simd-1.f90
  10b7fa8c03c3dfc00eb7345f9e992ad6  gcc/testsuite/gfortran.dg/gomp/declare-simd-2.f90
  3efc7a1651bd3761d7b6f4bbc264313a  gcc/testsuite/gfortran.dg/gomp/declare-target-1.f90
*************** fa41d6dd0ec4bc45beb3cbce04bf821d  gcc/te
*** 50882,50888 ****
  a467591fa5a7397d62aff928d63eb0ad  gcc/testsuite/gfortran.dg/gomp/fixed-1.f
  14ab6dfa2149c533128a3f201531e525  gcc/testsuite/gfortran.dg/gomp/free-1.f90
  b7bb651884d39c2e5dce7d57d46f40a5  gcc/testsuite/gfortran.dg/gomp/free-2.f90
! 451c1484314027f2764594ce6ba22e15  gcc/testsuite/gfortran.dg/gomp/gomp.exp
  8e4a5865bff79f8a7b38bfa39af6d395  gcc/testsuite/gfortran.dg/gomp/gridify-1.f90
  c6b23e36c3423a3454fb19b0ec6f0e01  gcc/testsuite/gfortran.dg/gomp/intentin1.f90
  fcfec1b14709740892410ae1c647ba42  gcc/testsuite/gfortran.dg/gomp/linear-1.f90
--- 54453,54459 ----
  a467591fa5a7397d62aff928d63eb0ad  gcc/testsuite/gfortran.dg/gomp/fixed-1.f
  14ab6dfa2149c533128a3f201531e525  gcc/testsuite/gfortran.dg/gomp/free-1.f90
  b7bb651884d39c2e5dce7d57d46f40a5  gcc/testsuite/gfortran.dg/gomp/free-2.f90
! 556edf4b5f8e8dc4c4578fbec0c6341d  gcc/testsuite/gfortran.dg/gomp/gomp.exp
  8e4a5865bff79f8a7b38bfa39af6d395  gcc/testsuite/gfortran.dg/gomp/gridify-1.f90
  c6b23e36c3423a3454fb19b0ec6f0e01  gcc/testsuite/gfortran.dg/gomp/intentin1.f90
  fcfec1b14709740892410ae1c647ba42  gcc/testsuite/gfortran.dg/gomp/linear-1.f90
*************** b1d0dcbfd8ebb1bf70bf3d4c08b4e6a8  gcc/te
*** 50929,50936 ****
  e55a83728b52b20bf008159cae59e4b3  gcc/testsuite/gfortran.dg/gomp/pr47331.f90
  128d8dd37fe27c11274b9de08392f9b9  gcc/testsuite/gfortran.dg/gomp/pr48117.f90
  62851f39d208792f5cfb76e509e86f00  gcc/testsuite/gfortran.dg/gomp/pr48611.f90
! 89431f6777941a7387427ae306dabd9e  gcc/testsuite/gfortran.dg/gomp/pr48794-2.f90
! f367132a9ea192e66f847909ff9856ed  gcc/testsuite/gfortran.dg/gomp/pr48794.f90
  f34c2982ae3dab5c27b1c82ed291a71e  gcc/testsuite/gfortran.dg/gomp/pr51089.f90
  c3337fca3f88f029dfd4e52aa1a4108d  gcc/testsuite/gfortran.dg/gomp/pr52531.f90
  e321ec3eb6a878488b42bdb5e70a1821  gcc/testsuite/gfortran.dg/gomp/pr56052.f90
--- 54500,54507 ----
  e55a83728b52b20bf008159cae59e4b3  gcc/testsuite/gfortran.dg/gomp/pr47331.f90
  128d8dd37fe27c11274b9de08392f9b9  gcc/testsuite/gfortran.dg/gomp/pr48117.f90
  62851f39d208792f5cfb76e509e86f00  gcc/testsuite/gfortran.dg/gomp/pr48611.f90
! a48ce96e50db497ce8703576a8ef40a4  gcc/testsuite/gfortran.dg/gomp/pr48794-2.f90
! 66c2d2d7f643cc553c6340c0786db036  gcc/testsuite/gfortran.dg/gomp/pr48794.f90
  f34c2982ae3dab5c27b1c82ed291a71e  gcc/testsuite/gfortran.dg/gomp/pr51089.f90
  c3337fca3f88f029dfd4e52aa1a4108d  gcc/testsuite/gfortran.dg/gomp/pr52531.f90
  e321ec3eb6a878488b42bdb5e70a1821  gcc/testsuite/gfortran.dg/gomp/pr56052.f90
*************** a21e59357a45d319e791dda388391242  gcc/te
*** 50949,50960 ****
  7d3f1abdbdd106580173760b443a9b40  gcc/testsuite/gfortran.dg/gomp/pr71705.f90
  d07d71ded0663c9dc2e67b06e6231cfc  gcc/testsuite/gfortran.dg/gomp/pr71758.f90
  f6108f19e8f9a62245e83b9286604fca  gcc/testsuite/gfortran.dg/gomp/pr72716.f90
! d0892e108e85058833061d6406956eba  gcc/testsuite/gfortran.dg/gomp/pr72744.f90
  a1bbf4178ffd02f1b329d498e029e857  gcc/testsuite/gfortran.dg/gomp/pr77352.f90
  f81d3d002ef2f6bfb951ec744c2e816a  gcc/testsuite/gfortran.dg/gomp/pr77374.f08
  bb35c5bd7245c0d5e4e5f3ed549e7fef  gcc/testsuite/gfortran.dg/gomp/pr77500.f90
  61c7a9b491dd0f06cdf83249a67b7d34  gcc/testsuite/gfortran.dg/gomp/pr77516.f90
! 8688817c97ff87e4020efce6973a3d5b  gcc/testsuite/gfortran.dg/gomp/pr77665.f90
  e5f0ff2c94fb41e447563955917d04b7  gcc/testsuite/gfortran.dg/gomp/pr77666.f90
  8968b6642e6ba9ea7870f963ca23770a  gcc/testsuite/gfortran.dg/gomp/pr77973.f90
  3a11d068cb262058109de03c2147fc09  gcc/testsuite/gfortran.dg/gomp/pr78026.f03
--- 54520,54531 ----
  7d3f1abdbdd106580173760b443a9b40  gcc/testsuite/gfortran.dg/gomp/pr71705.f90
  d07d71ded0663c9dc2e67b06e6231cfc  gcc/testsuite/gfortran.dg/gomp/pr71758.f90
  f6108f19e8f9a62245e83b9286604fca  gcc/testsuite/gfortran.dg/gomp/pr72716.f90
! b666ff482cb25c4b7cdd40f194a0d061  gcc/testsuite/gfortran.dg/gomp/pr72744.f90
  a1bbf4178ffd02f1b329d498e029e857  gcc/testsuite/gfortran.dg/gomp/pr77352.f90
  f81d3d002ef2f6bfb951ec744c2e816a  gcc/testsuite/gfortran.dg/gomp/pr77374.f08
  bb35c5bd7245c0d5e4e5f3ed549e7fef  gcc/testsuite/gfortran.dg/gomp/pr77500.f90
  61c7a9b491dd0f06cdf83249a67b7d34  gcc/testsuite/gfortran.dg/gomp/pr77516.f90
! 47d37571010202f39839c25cbfc3f791  gcc/testsuite/gfortran.dg/gomp/pr77665.f90
  e5f0ff2c94fb41e447563955917d04b7  gcc/testsuite/gfortran.dg/gomp/pr77666.f90
  8968b6642e6ba9ea7870f963ca23770a  gcc/testsuite/gfortran.dg/gomp/pr77973.f90
  3a11d068cb262058109de03c2147fc09  gcc/testsuite/gfortran.dg/gomp/pr78026.f03
*************** c77cea4fe3e6db60cec6014217b3e898  gcc/te
*** 50965,50970 ****
--- 54536,54546 ----
  89009b94c2292a295111511b7690212f  gcc/testsuite/gfortran.dg/gomp/pr79154-1.f90
  eaa9f5415777a4aa8e9cb87901c13910  gcc/testsuite/gfortran.dg/gomp/pr79154-2.f90
  9b10d6e97e6ec036398bc75fe623a968  gcc/testsuite/gfortran.dg/gomp/pr80918.f90
+ f5bcea31678114301e0da9c5d60bb564  gcc/testsuite/gfortran.dg/gomp/pr81887.f90
+ 92640e276a3deabcb0817b450e3c007f  gcc/testsuite/gfortran.dg/gomp/pr82568.f90
+ 13b62b43e8c430a8a748b9782ee8d3d1  gcc/testsuite/gfortran.dg/gomp/pr83977.f90
+ 28b8381f9a6407f3fbdf2a45fe796f66  gcc/testsuite/gfortran.dg/gomp/pr84116.f90
+ 900e29bb957f49d5b8cee27818655396  gcc/testsuite/gfortran.dg/gomp/pr85313.f90
  b4be3f9de7631846875a711ae9b67293  gcc/testsuite/gfortran.dg/gomp/proc_ptr_1.f90
  87885556568e657ef4c936c53e1c7305  gcc/testsuite/gfortran.dg/gomp/proc_ptr_2.f90
  59e444df8ec8f5ea9859b5aef4d75865  gcc/testsuite/gfortran.dg/gomp/reduction1.f90
*************** b75e4a6eaec211becf176c75768a3f3d  gcc/te
*** 50985,51000 ****
  85dc0f63e4f8c72af7690c5b3e31232d  gcc/testsuite/gfortran.dg/gomp/udr5.f90
  4be69272338362c6a969ab47082c5fcc  gcc/testsuite/gfortran.dg/gomp/udr6.f90
  186f9bb4f37e50c00e5be84dc3319bb0  gcc/testsuite/gfortran.dg/gomp/udr7.f90
! 2f369bc0187e2b8a78573295b630c96f  gcc/testsuite/gfortran.dg/gomp/udr8.f90
  41759f5578782a6f4ae3601bff797650  gcc/testsuite/gfortran.dg/gomp/workshare1.f90
! aa61af393f4a333c9faa64945fc76b5b  gcc/testsuite/gfortran.dg/gomp/workshare2.f90
! 8d8453f66b6d37145240e2377c39a893  gcc/testsuite/gfortran.dg/gomp/workshare3.f90
! 361bf8573acec01a7db297dcb95d5da7  gcc/testsuite/gfortran.dg/goto_1.f
! 35d98079f4ed6bd3c4e5b272ed4c6b4e  gcc/testsuite/gfortran.dg/goto_2.f90
  7b3748d559d39bb98bfcaf6c65b5ef38  gcc/testsuite/gfortran.dg/goto_3.f90
! e8eac6a12452586547dfae15f5daa659  gcc/testsuite/gfortran.dg/goto_4.f90
  3b37dca1d8e6e4d63d2b53ad0c135012  gcc/testsuite/gfortran.dg/goto_5.f90
! 9e2ae270710ddfcb48d26c42fe935ffc  gcc/testsuite/gfortran.dg/goto_6.f
  edb7ed608dd0713c11d3d0bdebea3e9d  gcc/testsuite/gfortran.dg/goto_7.f
  8fac5cb04c80b8be3572ef84e39fe23b  gcc/testsuite/gfortran.dg/goto_8.f90
  2136d5343b3cf41829868ece4add6513  gcc/testsuite/gfortran.dg/graphite/PR53852.f90
--- 54561,54576 ----
  85dc0f63e4f8c72af7690c5b3e31232d  gcc/testsuite/gfortran.dg/gomp/udr5.f90
  4be69272338362c6a969ab47082c5fcc  gcc/testsuite/gfortran.dg/gomp/udr6.f90
  186f9bb4f37e50c00e5be84dc3319bb0  gcc/testsuite/gfortran.dg/gomp/udr7.f90
! 20bfe17efe2daa15a962d3237694089d  gcc/testsuite/gfortran.dg/gomp/udr8.f90
  41759f5578782a6f4ae3601bff797650  gcc/testsuite/gfortran.dg/gomp/workshare1.f90
! e9dd9cdecfd6e8d5c1161ad9f708f9c9  gcc/testsuite/gfortran.dg/gomp/workshare2.f90
! ee975088783cbb32ae11692ecfe38fc0  gcc/testsuite/gfortran.dg/gomp/workshare3.f90
! 7cbc93f21fd757da3e9a35f549b08dba  gcc/testsuite/gfortran.dg/goto_1.f
! eedbd268a5555a87fcc139f65ed0fdc1  gcc/testsuite/gfortran.dg/goto_2.f90
  7b3748d559d39bb98bfcaf6c65b5ef38  gcc/testsuite/gfortran.dg/goto_3.f90
! 58fa38735d9f083f14c52dcc6010b371  gcc/testsuite/gfortran.dg/goto_4.f90
  3b37dca1d8e6e4d63d2b53ad0c135012  gcc/testsuite/gfortran.dg/goto_5.f90
! d683224b92f30f47ac260172c543709b  gcc/testsuite/gfortran.dg/goto_6.f
  edb7ed608dd0713c11d3d0bdebea3e9d  gcc/testsuite/gfortran.dg/goto_7.f
  8fac5cb04c80b8be3572ef84e39fe23b  gcc/testsuite/gfortran.dg/goto_8.f90
  2136d5343b3cf41829868ece4add6513  gcc/testsuite/gfortran.dg/graphite/PR53852.f90
*************** b668767cebd1d81ba2d2ca1138456cbe  gcc/te
*** 51003,51009 ****
  64431ba4080c1a3e0a9cb9ec183ccf65  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
! c8cd47f3c219382e6cf484d9b4281d54  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
--- 54579,54585 ----
  64431ba4080c1a3e0a9cb9ec183ccf65  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
! 3de5cb9089c265aab316f7a6ca37a460  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
*************** f181978f268d92eb9ccc7e3d9e157e82  gcc/te
*** 51022,51028 ****
  7a819152b297e3b1f246f8b11101d41b  gcc/testsuite/gfortran.dg/graphite/id-23.f
  7b5eaa02c0d8c382baeff3489690cbcb  gcc/testsuite/gfortran.dg/graphite/id-24.f
  4aa2b4197e1cb87d2d80e115651a3ffd  gcc/testsuite/gfortran.dg/graphite/id-25.f
! 63f5e201eff5baada71d59d268445a01  gcc/testsuite/gfortran.dg/graphite/id-26.f03
  eb6baf0efaafc0b112b76a3b9bbb99b1  gcc/testsuite/gfortran.dg/graphite/id-3.f90
  2b1bafc9c065c8c90885e4bc3ae9f75c  gcc/testsuite/gfortran.dg/graphite/id-4.f90
  03c0b6f0361ec2435471b8b19b6c651c  gcc/testsuite/gfortran.dg/graphite/id-5.f
--- 54598,54606 ----
  7a819152b297e3b1f246f8b11101d41b  gcc/testsuite/gfortran.dg/graphite/id-23.f
  7b5eaa02c0d8c382baeff3489690cbcb  gcc/testsuite/gfortran.dg/graphite/id-24.f
  4aa2b4197e1cb87d2d80e115651a3ffd  gcc/testsuite/gfortran.dg/graphite/id-25.f
! 852736ff7d8e2c6262d151e1becba413  gcc/testsuite/gfortran.dg/graphite/id-26.f03
! 78214da8dec722518b381d86ce5aa9a5  gcc/testsuite/gfortran.dg/graphite/id-27.f90
! e8baf42cf324228bf0f67b85642b0e68  gcc/testsuite/gfortran.dg/graphite/id-28.f90
  eb6baf0efaafc0b112b76a3b9bbb99b1  gcc/testsuite/gfortran.dg/graphite/id-3.f90
  2b1bafc9c065c8c90885e4bc3ae9f75c  gcc/testsuite/gfortran.dg/graphite/id-4.f90
  03c0b6f0361ec2435471b8b19b6c651c  gcc/testsuite/gfortran.dg/graphite/id-5.f
*************** efbd043ca7a4195ae0c3ba673751d834  gcc/te
*** 51031,51049 ****
  ea1724498a27db961bdca42cf83f0e03  gcc/testsuite/gfortran.dg/graphite/id-8.f
  9f4e660229e0ebf426368c20dad56714  gcc/testsuite/gfortran.dg/graphite/id-9.f
  6c86b06a9bf80c2cff2cfd9017b5e12d  gcc/testsuite/gfortran.dg/graphite/id-pr43354.f
! 8a501cb145717111ab0fe0096b642016  gcc/testsuite/gfortran.dg/graphite/id-pr45370.f90
  a4c577f061fc150f215f415ecc0e6bec  gcc/testsuite/gfortran.dg/graphite/id-pr46994.f90
  82fa036a73d28d367cfc080ca806b8fa  gcc/testsuite/gfortran.dg/graphite/id-pr46995.f90
  7bbc7493f19a3c42e2de8e531f15cfac  gcc/testsuite/gfortran.dg/graphite/id-pr47691.f
  d5513ca9cb7a4e4df6eb38b3d29aff18  gcc/testsuite/gfortran.dg/graphite/interchange-1.f
  a694bd805dd3aeebdb0f7e0a7f45a745  gcc/testsuite/gfortran.dg/graphite/interchange-2.f
! abb8588574afb0ab31770148d402bb2f  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
! 846775db2edb2185b45267aa75c1c697  gcc/testsuite/gfortran.dg/graphite/pr14741.f90
  f7134dbe0fa84d721d192cd67175ff61  gcc/testsuite/gfortran.dg/graphite/pr29290.f90
! 8a8bf8cec47060178472d613091f0994  gcc/testsuite/gfortran.dg/graphite/pr29581.f90
! 2f47b5241b4bc52cf7777f0d4b6947a1  gcc/testsuite/gfortran.dg/graphite/pr29832.f90
  ad5d0cc33a7d094f0bdd0dedff5dceaa  gcc/testsuite/gfortran.dg/graphite/pr36286.f90
  cec7b350b054a17b7f0b5726d4a21711  gcc/testsuite/gfortran.dg/graphite/pr36922.f
  5754b3cf46378cb45f6e5a1d41b0cd4a  gcc/testsuite/gfortran.dg/graphite/pr37852.f90
--- 54609,54627 ----
  ea1724498a27db961bdca42cf83f0e03  gcc/testsuite/gfortran.dg/graphite/id-8.f
  9f4e660229e0ebf426368c20dad56714  gcc/testsuite/gfortran.dg/graphite/id-9.f
  6c86b06a9bf80c2cff2cfd9017b5e12d  gcc/testsuite/gfortran.dg/graphite/id-pr43354.f
! b472c12867625e63f2727d1926c03c39  gcc/testsuite/gfortran.dg/graphite/id-pr45370.f90
  a4c577f061fc150f215f415ecc0e6bec  gcc/testsuite/gfortran.dg/graphite/id-pr46994.f90
  82fa036a73d28d367cfc080ca806b8fa  gcc/testsuite/gfortran.dg/graphite/id-pr46995.f90
  7bbc7493f19a3c42e2de8e531f15cfac  gcc/testsuite/gfortran.dg/graphite/id-pr47691.f
  d5513ca9cb7a4e4df6eb38b3d29aff18  gcc/testsuite/gfortran.dg/graphite/interchange-1.f
  a694bd805dd3aeebdb0f7e0a7f45a745  gcc/testsuite/gfortran.dg/graphite/interchange-2.f
! 954d015d93bdde7a7282189f11cb1dae  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
! 0e0032acf3995632e5da45c38bdb6512  gcc/testsuite/gfortran.dg/graphite/pr14741.f90
  f7134dbe0fa84d721d192cd67175ff61  gcc/testsuite/gfortran.dg/graphite/pr29290.f90
! b2341f4b53422560907f06b2d2c09962  gcc/testsuite/gfortran.dg/graphite/pr29581.f90
! 253f8a3fdd5daa0a3d85212a3b40589c  gcc/testsuite/gfortran.dg/graphite/pr29832.f90
  ad5d0cc33a7d094f0bdd0dedff5dceaa  gcc/testsuite/gfortran.dg/graphite/pr36286.f90
  cec7b350b054a17b7f0b5726d4a21711  gcc/testsuite/gfortran.dg/graphite/pr36922.f
  5754b3cf46378cb45f6e5a1d41b0cd4a  gcc/testsuite/gfortran.dg/graphite/pr37852.f90
*************** d056a2044b7a3f7f763fe76fad38958d  gcc/te
*** 51053,51079 ****
  2f361e4dc036f2a777b5340709d7cbad  gcc/testsuite/gfortran.dg/graphite/pr38459.f90
  68989e2f56ab16cebeffc96df65b3c7d  gcc/testsuite/gfortran.dg/graphite/pr38953.f90
  c5c4a63aba69d822a86d91f0242eb7c9  gcc/testsuite/gfortran.dg/graphite/pr39516.f
! 8fd7a645ea0f8d179b7e39edeb0c21e3  gcc/testsuite/gfortran.dg/graphite/pr40982.f90
  9e50c53a49bf18390382fafa032ad23a  gcc/testsuite/gfortran.dg/graphite/pr41924.f90
  b1297075cfa26bb16f204a367831ec6c  gcc/testsuite/gfortran.dg/graphite/pr42050.f90
  54b7ee62837f3dd5e99176533677045b  gcc/testsuite/gfortran.dg/graphite/pr42180.f90
  fa18761001a4441ff116b992a638200f  gcc/testsuite/gfortran.dg/graphite/pr42181.f90
  801dd947fc425bf70cf4b3819e22033e  gcc/testsuite/gfortran.dg/graphite/pr42185.f90
  62a48b70efa8208eafc6f3825fcebf39  gcc/testsuite/gfortran.dg/graphite/pr42186.f90
! 259303b28eb85cd5c9bd313788a4659f  gcc/testsuite/gfortran.dg/graphite/pr42285.f90
! 88df429910af4fab68a83d62469c5fb9  gcc/testsuite/gfortran.dg/graphite/pr42326-1.f90
! 37715299b9cfffc7be68965efec8529c  gcc/testsuite/gfortran.dg/graphite/pr42326.f90
! 98ec282a53dd588fbd12eee066d21235  gcc/testsuite/gfortran.dg/graphite/pr42334-1.f
! 1973dfe17fa1ec32b2fcaeb22af12a00  gcc/testsuite/gfortran.dg/graphite/pr42334.f90
  dec1bdb7bde0cb1073e6b3d4a7b1e88f  gcc/testsuite/gfortran.dg/graphite/pr42393-1.f90
  9af7f1991b41b9f17573a15ab82e90e5  gcc/testsuite/gfortran.dg/graphite/pr42393.f90
  b3194ceb811f07a263b4b3018c8b7155  gcc/testsuite/gfortran.dg/graphite/pr42732.f
  47ca002b4cfc0dd3bfccf9e228b17b78  gcc/testsuite/gfortran.dg/graphite/pr43097.f
! 14ef0b0fb7468bddc8da80d525db505d  gcc/testsuite/gfortran.dg/graphite/pr43349.f
  cf66c78971cc0a0ccbbe06e8285499fb  gcc/testsuite/gfortran.dg/graphite/pr45758.f90
  c35834551693365c4a94cd2ef2b4bd6d  gcc/testsuite/gfortran.dg/graphite/pr47019.f
  43ae588e162498dfca9dfa3a28b50e21  gcc/testsuite/gfortran.dg/graphite/pr59586.f
! f993bc6aecd63bdc6b9e8b64e54b0800  gcc/testsuite/gfortran.dg/graphite/pr59817.f
  ee786527b04e37973a677fb52c1eff4c  gcc/testsuite/gfortran.dg/graphite/pr68279.f90
  032109ea7f84ee69c79c593fa2341664  gcc/testsuite/gfortran.dg/graphite/pr68335.f90
  be53a89455edc62ddff9cf2521ef44b2  gcc/testsuite/gfortran.dg/graphite/pr68453.f90
--- 54631,54657 ----
  2f361e4dc036f2a777b5340709d7cbad  gcc/testsuite/gfortran.dg/graphite/pr38459.f90
  68989e2f56ab16cebeffc96df65b3c7d  gcc/testsuite/gfortran.dg/graphite/pr38953.f90
  c5c4a63aba69d822a86d91f0242eb7c9  gcc/testsuite/gfortran.dg/graphite/pr39516.f
! a03ba18f093f38cdcfc397cff3f91335  gcc/testsuite/gfortran.dg/graphite/pr40982.f90
  9e50c53a49bf18390382fafa032ad23a  gcc/testsuite/gfortran.dg/graphite/pr41924.f90
  b1297075cfa26bb16f204a367831ec6c  gcc/testsuite/gfortran.dg/graphite/pr42050.f90
  54b7ee62837f3dd5e99176533677045b  gcc/testsuite/gfortran.dg/graphite/pr42180.f90
  fa18761001a4441ff116b992a638200f  gcc/testsuite/gfortran.dg/graphite/pr42181.f90
  801dd947fc425bf70cf4b3819e22033e  gcc/testsuite/gfortran.dg/graphite/pr42185.f90
  62a48b70efa8208eafc6f3825fcebf39  gcc/testsuite/gfortran.dg/graphite/pr42186.f90
! de1d9be368b47c7191bb000ebe19e8d1  gcc/testsuite/gfortran.dg/graphite/pr42285.f90
! 3bb33b1d086259efd7ec3d9c5b10c7f4  gcc/testsuite/gfortran.dg/graphite/pr42326-1.f90
! eacbcd86e796ea235bc4c464ec5a130c  gcc/testsuite/gfortran.dg/graphite/pr42326.f90
! 8830553c1823a50fe57c7df7bf342575  gcc/testsuite/gfortran.dg/graphite/pr42334-1.f
! 0fd4f8eee1f467e9ec737f49e413e01a  gcc/testsuite/gfortran.dg/graphite/pr42334.f90
  dec1bdb7bde0cb1073e6b3d4a7b1e88f  gcc/testsuite/gfortran.dg/graphite/pr42393-1.f90
  9af7f1991b41b9f17573a15ab82e90e5  gcc/testsuite/gfortran.dg/graphite/pr42393.f90
  b3194ceb811f07a263b4b3018c8b7155  gcc/testsuite/gfortran.dg/graphite/pr42732.f
  47ca002b4cfc0dd3bfccf9e228b17b78  gcc/testsuite/gfortran.dg/graphite/pr43097.f
! d032868abd85299ac30edd10001afabf  gcc/testsuite/gfortran.dg/graphite/pr43349.f
  cf66c78971cc0a0ccbbe06e8285499fb  gcc/testsuite/gfortran.dg/graphite/pr45758.f90
  c35834551693365c4a94cd2ef2b4bd6d  gcc/testsuite/gfortran.dg/graphite/pr47019.f
  43ae588e162498dfca9dfa3a28b50e21  gcc/testsuite/gfortran.dg/graphite/pr59586.f
! 9ccd4ffcb8667b85d7dda7c99f424889  gcc/testsuite/gfortran.dg/graphite/pr59817.f
  ee786527b04e37973a677fb52c1eff4c  gcc/testsuite/gfortran.dg/graphite/pr68279.f90
  032109ea7f84ee69c79c593fa2341664  gcc/testsuite/gfortran.dg/graphite/pr68335.f90
  be53a89455edc62ddff9cf2521ef44b2  gcc/testsuite/gfortran.dg/graphite/pr68453.f90
*************** be53a89455edc62ddff9cf2521ef44b2  gcc/te
*** 51083,51166 ****
  4432798dc5e3364a963101fa55194085  gcc/testsuite/gfortran.dg/graphite/pr68692.f90
  b274b656fbe98cfebcf68217b94f1f5a  gcc/testsuite/gfortran.dg/graphite/pr68693.f90
  026c570c34c7d2ecfa8bf583c074be5d  gcc/testsuite/gfortran.dg/graphite/pr68715.f90
  538880d53c77364eb5de1f816934b1fc  gcc/testsuite/gfortran.dg/graphite/pr71898.f90
! daa53e999b30e1103a7ea6f3e62ecd91  gcc/testsuite/gfortran.dg/graphite/run-id-1.f
! f284b8f4f2a5b32dc60a00731241ca8e  gcc/testsuite/gfortran.dg/graphite/run-id-2.f90
! c46e5bcf9ae84ddd608cf4b76789bec2  gcc/testsuite/gfortran.dg/graphite/run-id-3.f90
  daa1172ed1d5a6072057b20aaca3b1ec  gcc/testsuite/gfortran.dg/graphite/scop-1.f
  c6ccb0077483440bf572afc0c07cf295  gcc/testsuite/gfortran.dg/graphite/vect-pr40979.f90
  f9932e22f4bc6baa989154035dbac7c1  gcc/testsuite/gfortran.dg/guality/arg1.f90
  49b421794f66b18bf7f66026f68f035f  gcc/testsuite/gfortran.dg/guality/guality.exp
! d4523e218e3a6d976774e7e026bca339  gcc/testsuite/gfortran.dg/guality/pr41558.f90
! 85b827d8051a3d9581ba2a6e6709d5c9  gcc/testsuite/gfortran.dg/hollerith.f90
  855af7807ad9d75aef7ff85c2859a0c2  gcc/testsuite/gfortran.dg/hollerith2.f90
  ac7abff09db32e7d44719f0d0472dc64  gcc/testsuite/gfortran.dg/hollerith3.f90
! d6aaca752994097795d40ec307363662  gcc/testsuite/gfortran.dg/hollerith4.f90
  5c5b5ff976476a993c6c53ff8f47233b  gcc/testsuite/gfortran.dg/hollerith5.f90
! 9a0e52ea812467a5163995c9ee464fb5  gcc/testsuite/gfortran.dg/hollerith6.f90
  3804a606661c44dcde42354efd909caf  gcc/testsuite/gfortran.dg/hollerith7.f90
! 1072376197754f76d8c5f7153ee6c519  gcc/testsuite/gfortran.dg/hollerith8.f90
! 86f7f7216d43115e25f97fe90b000957  gcc/testsuite/gfortran.dg/hollerith_1.f90
! b6d7911e817f104071330470269c730f  gcc/testsuite/gfortran.dg/hollerith_f95.f90
! 32692b900656d6c216aa5b8837826319  gcc/testsuite/gfortran.dg/hollerith_legacy.f90
  8b23b7f340ee0a8abc35d4b112b40c1b  gcc/testsuite/gfortran.dg/host_assoc_blockdata_1.f90
  ed29028bdd173278f7b2196e6e6fd450  gcc/testsuite/gfortran.dg/host_assoc_blockdata_2.f90
  165cffb46ddb4a4cae6cc9d1592b9cef  gcc/testsuite/gfortran.dg/host_assoc_call_1.f90
  6fd82a4be4c6e9972bc42d014ff26398  gcc/testsuite/gfortran.dg/host_assoc_call_2.f90
! 17a57c0cf6325af56f5afcb7d135ddd6  gcc/testsuite/gfortran.dg/host_assoc_call_3.f90
  daacba4648eadf9505e3859e6ca7f69e  gcc/testsuite/gfortran.dg/host_assoc_call_4.f90
  c225a3f61482dd45e859c1e2f310a92e  gcc/testsuite/gfortran.dg/host_assoc_call_5.f90
  e4a6d632a26093e7c478af48d26e18e4  gcc/testsuite/gfortran.dg/host_assoc_call_6.f90
! 4c50546abd47646f7927ebb5db166fa8  gcc/testsuite/gfortran.dg/host_assoc_function_1.f90
  11795b3391668b8603ee47a541c0f217  gcc/testsuite/gfortran.dg/host_assoc_function_2.f90
! d5d5076cd9ecd7d2ce159f22d3a52846  gcc/testsuite/gfortran.dg/host_assoc_function_3.f90
! d5b0fa1dd5106aac4e27a3a4ae2284a2  gcc/testsuite/gfortran.dg/host_assoc_function_4.f90
  fc2ce16af4a1e7fdf734244e96f39547  gcc/testsuite/gfortran.dg/host_assoc_function_5.f90
  f0ba27aab937e1048d16d9a49dab3afe  gcc/testsuite/gfortran.dg/host_assoc_function_6.f90
  a42c24979a3d8ef0f9c541fb68648383  gcc/testsuite/gfortran.dg/host_assoc_function_7.f90
! 64b1b01a6890555eb94662c2faee2c35  gcc/testsuite/gfortran.dg/host_assoc_function_9.f90
  c9420f1f2ea601e2c2146dec5c91b107  gcc/testsuite/gfortran.dg/host_assoc_types_1.f90
  30e464d4eb2c2269a726ec8da9199aaa  gcc/testsuite/gfortran.dg/host_assoc_types_2.f90
  5def3fe43697f28a09c7dbe135494bf4  gcc/testsuite/gfortran.dg/host_assoc_variable_1.f90
! f1fc80bf1bccb109a59dfbe026760a25  gcc/testsuite/gfortran.dg/host_dummy_index_1.f90
  dbee4ce70df4de716a599649b8dec3bf  gcc/testsuite/gfortran.dg/host_used_types_1.f90
! 1269ef018bebe4f6c1aa791cdf526512  gcc/testsuite/gfortran.dg/hypot_1.f90
! 4d60cbf4696ff7660f09b105e222ee07  gcc/testsuite/gfortran.dg/iall_iany_iparity_1.f90
  6b64979a75144f340a804c566da6e598  gcc/testsuite/gfortran.dg/iall_iany_iparity_2.f90
! 7a755761cf587f0e925f0fd9d7e1d93d  gcc/testsuite/gfortran.dg/iargc.f90
  7c6d282fb7219ea8b6437744a0db709a  gcc/testsuite/gfortran.dg/ibclr_1.f90
! 4a14f8c5fc20306209e32b99dd1eb2bf  gcc/testsuite/gfortran.dg/ibits.f90
  e6c37a9def09433a6a2f8bc1d9220133  gcc/testsuite/gfortran.dg/ibits_1.f90
  9f3ccb4943f5f4737bc99acb427e11b0  gcc/testsuite/gfortran.dg/ibset_1.f90
! e75d952c59fd79d136d9f20ac5f9d493  gcc/testsuite/gfortran.dg/ichar_1.f90
! 9f00cdde2669030be42ca86f95884598  gcc/testsuite/gfortran.dg/ichar_2.f90
  b614ce421f97fb4ab6fa10f1f1c47ab0  gcc/testsuite/gfortran.dg/ichar_3.f90
! 61a90a701bdb712772bc39dc480bf8d1  gcc/testsuite/gfortran.dg/ieee/ieee.exp
! d4e79f3d59da8bf78ed9abd64e14a66e  gcc/testsuite/gfortran.dg/ieee/ieee_1.F90
! c160ba4534ede110d46792244ef13084  gcc/testsuite/gfortran.dg/ieee/ieee_2.f90
! 11531bb40c1766300ca1cb9d0343c12c  gcc/testsuite/gfortran.dg/ieee/ieee_3.f90
! 13f9a82ccf323ec3f3ecbe7696e5709f  gcc/testsuite/gfortran.dg/ieee/ieee_4.f90
  d7dcbbbf51853a9d7416a34ec7d5e19b  gcc/testsuite/gfortran.dg/ieee/ieee_5.f90
! f8001e5ff999e231155adc24abcaa170  gcc/testsuite/gfortran.dg/ieee/ieee_6.f90
! 6b7d55f4d078ac26a06aa03c93a28176  gcc/testsuite/gfortran.dg/ieee/ieee_7.f90
! 27870a0fa7e7595f4761c360842acd19  gcc/testsuite/gfortran.dg/ieee/ieee_8.f90
! bfd28208c7b1f6a5bf27d778e77b30a1  gcc/testsuite/gfortran.dg/ieee/intrinsics_1.f90
! 5b4c9cca5fe34ca3db33f17cc3b0ae09  gcc/testsuite/gfortran.dg/ieee/intrinsics_2.F90
! def2defa5db0500aa6c7419b8bd3f643  gcc/testsuite/gfortran.dg/ieee/large_1.f90
! 52f8591aad1435bb14af53cc9bb65625  gcc/testsuite/gfortran.dg/ieee/large_2.f90
! 3d2a2008e1771358822267602e29ed0c  gcc/testsuite/gfortran.dg/ieee/large_3.F90
! 08136ebd32e270a21f7c7c3ab109df5e  gcc/testsuite/gfortran.dg/ieee/large_4.f90
  5b088816bf399445be998bb7b0f307bd  gcc/testsuite/gfortran.dg/ieee/pr77372.f90
  d19c8b732b5cf70aa6edcc4165fe30b3  gcc/testsuite/gfortran.dg/ieee/pr77507.f90
! 817bcd68ef086363a121829f06905660  gcc/testsuite/gfortran.dg/ieee/rounding_1.f90
! 7dc8b356113d0ea92e104407ded23209  gcc/testsuite/gfortran.dg/ieee/underflow_1.f90
  d827b941652feab002a335b27a4dd9f2  gcc/testsuite/gfortran.dg/imag_1.f
  ea74ac57d54861ae078dd5b164c4e692  gcc/testsuite/gfortran.dg/implicit_1.f90
! b80c1e38c62d812b5a8a4f5a284dcab3  gcc/testsuite/gfortran.dg/implicit_10.f90
  ff44a28de56f83ea9834311300df991e  gcc/testsuite/gfortran.dg/implicit_11.f90
! 694c3efb61e73f8406b8c1209fa7fa10  gcc/testsuite/gfortran.dg/implicit_12.f90
  f436694f48f2c6fe96b03f6c430bb0bb  gcc/testsuite/gfortran.dg/implicit_13.f90
! 5a9a4cfc2acb899d9707c4f8d5236bbc  gcc/testsuite/gfortran.dg/implicit_14.f90
  bce73433010fe7cdd8b3917347c0f73b  gcc/testsuite/gfortran.dg/implicit_15.f90
  fc1ccf1c66e20c49b9657c71cf806970  gcc/testsuite/gfortran.dg/implicit_16.f90
  64f1f368548042ba6814a03f6bea8f36  gcc/testsuite/gfortran.dg/implicit_2.f90
--- 54661,54756 ----
  4432798dc5e3364a963101fa55194085  gcc/testsuite/gfortran.dg/graphite/pr68692.f90
  b274b656fbe98cfebcf68217b94f1f5a  gcc/testsuite/gfortran.dg/graphite/pr68693.f90
  026c570c34c7d2ecfa8bf583c074be5d  gcc/testsuite/gfortran.dg/graphite/pr68715.f90
+ 3dbd08441374ff809bb1ab337f5afebb  gcc/testsuite/gfortran.dg/graphite/pr69728.f90
+ 564995b4d090ef22bf3a9cfac9726489  gcc/testsuite/gfortran.dg/graphite/pr71351.f90
  538880d53c77364eb5de1f816934b1fc  gcc/testsuite/gfortran.dg/graphite/pr71898.f90
! fe41c671f9138abff9ec46b93ee23a5d  gcc/testsuite/gfortran.dg/graphite/pr82449.f
! ef10ff9e5d020f8b8c959c669cef1519  gcc/testsuite/gfortran.dg/graphite/pr82451.f
! 21a7cab5b67fdc35c2508b8742a41506  gcc/testsuite/gfortran.dg/graphite/pr82672.f90
! ccb1954a8e334f76679180ff6418e93d  gcc/testsuite/gfortran.dg/graphite/pr83887.f
! 45cddca5069377a3c0de7685f38feda3  gcc/testsuite/gfortran.dg/graphite/pr83887.f90
! 3503a9cbe64cf76d3600eb2c05657d98  gcc/testsuite/gfortran.dg/graphite/pr83963.f
! dbffb0fef9d29324958740fabb2c1064  gcc/testsuite/gfortran.dg/graphite/pr84223.f90
! 2e6f76f3cd539870b471dce2c8e14179  gcc/testsuite/gfortran.dg/graphite/run-id-1.f
! c5a256733781be2dc88ea518b8758391  gcc/testsuite/gfortran.dg/graphite/run-id-2.f90
! 6c187a54a92f49b5734ee67b739b6e74  gcc/testsuite/gfortran.dg/graphite/run-id-3.f90
  daa1172ed1d5a6072057b20aaca3b1ec  gcc/testsuite/gfortran.dg/graphite/scop-1.f
  c6ccb0077483440bf572afc0c07cf295  gcc/testsuite/gfortran.dg/graphite/vect-pr40979.f90
  f9932e22f4bc6baa989154035dbac7c1  gcc/testsuite/gfortran.dg/guality/arg1.f90
  49b421794f66b18bf7f66026f68f035f  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
  ac7abff09db32e7d44719f0d0472dc64  gcc/testsuite/gfortran.dg/hollerith3.f90
! fd1ab87dcb96b3b35e429092acdf62f6  gcc/testsuite/gfortran.dg/hollerith4.f90
  5c5b5ff976476a993c6c53ff8f47233b  gcc/testsuite/gfortran.dg/hollerith5.f90
! a805b53e8b625f6394676474b375610b  gcc/testsuite/gfortran.dg/hollerith6.f90
  3804a606661c44dcde42354efd909caf  gcc/testsuite/gfortran.dg/hollerith7.f90
! e992963ff624b2f80160e0a8f9aac1bb  gcc/testsuite/gfortran.dg/hollerith8.f90
! 28f596789f308540326b3fac6fbf8670  gcc/testsuite/gfortran.dg/hollerith_1.f90
! f31f6526046c5b28c1e7c52a531c8cae  gcc/testsuite/gfortran.dg/hollerith_character_array_constructor.f90
! 3bd31693d62de8131d8e4953932d1526  gcc/testsuite/gfortran.dg/hollerith_f95.f90
! fdc145e0520a462a0b558ea477edebd5  gcc/testsuite/gfortran.dg/hollerith_legacy.f90
  8b23b7f340ee0a8abc35d4b112b40c1b  gcc/testsuite/gfortran.dg/host_assoc_blockdata_1.f90
  ed29028bdd173278f7b2196e6e6fd450  gcc/testsuite/gfortran.dg/host_assoc_blockdata_2.f90
  165cffb46ddb4a4cae6cc9d1592b9cef  gcc/testsuite/gfortran.dg/host_assoc_call_1.f90
  6fd82a4be4c6e9972bc42d014ff26398  gcc/testsuite/gfortran.dg/host_assoc_call_2.f90
! 0c49c6f7f48aecf3a02a59c5763b75b9  gcc/testsuite/gfortran.dg/host_assoc_call_3.f90
  daacba4648eadf9505e3859e6ca7f69e  gcc/testsuite/gfortran.dg/host_assoc_call_4.f90
  c225a3f61482dd45e859c1e2f310a92e  gcc/testsuite/gfortran.dg/host_assoc_call_5.f90
  e4a6d632a26093e7c478af48d26e18e4  gcc/testsuite/gfortran.dg/host_assoc_call_6.f90
! c464f13e5293dd73c26a066f166622fc  gcc/testsuite/gfortran.dg/host_assoc_function_1.f90
  11795b3391668b8603ee47a541c0f217  gcc/testsuite/gfortran.dg/host_assoc_function_2.f90
! a70532ad217ae7b3845f22c680dd8892  gcc/testsuite/gfortran.dg/host_assoc_function_3.f90
! ee8a4da4361ecb2144ac5bebfb7f2a29  gcc/testsuite/gfortran.dg/host_assoc_function_4.f90
  fc2ce16af4a1e7fdf734244e96f39547  gcc/testsuite/gfortran.dg/host_assoc_function_5.f90
  f0ba27aab937e1048d16d9a49dab3afe  gcc/testsuite/gfortran.dg/host_assoc_function_6.f90
  a42c24979a3d8ef0f9c541fb68648383  gcc/testsuite/gfortran.dg/host_assoc_function_7.f90
! 710a652d2fa70c5eb74c5efd929fdc58  gcc/testsuite/gfortran.dg/host_assoc_function_9.f90
  c9420f1f2ea601e2c2146dec5c91b107  gcc/testsuite/gfortran.dg/host_assoc_types_1.f90
  30e464d4eb2c2269a726ec8da9199aaa  gcc/testsuite/gfortran.dg/host_assoc_types_2.f90
  5def3fe43697f28a09c7dbe135494bf4  gcc/testsuite/gfortran.dg/host_assoc_variable_1.f90
! 41f23b49c4afaaf3f88a2b9791848e9f  gcc/testsuite/gfortran.dg/host_dummy_index_1.f90
  dbee4ce70df4de716a599649b8dec3bf  gcc/testsuite/gfortran.dg/host_used_types_1.f90
! 8654273be15ecccc3865b8c21ec0fb9b  gcc/testsuite/gfortran.dg/hypot_1.f90
! 0faef150bfa1a7116d3d524d68682770  gcc/testsuite/gfortran.dg/iall_iany_iparity_1.f90
  6b64979a75144f340a804c566da6e598  gcc/testsuite/gfortran.dg/iall_iany_iparity_2.f90
! 61134d39d5af09e7425d0c6ac8c53de0  gcc/testsuite/gfortran.dg/iargc.f90
  7c6d282fb7219ea8b6437744a0db709a  gcc/testsuite/gfortran.dg/ibclr_1.f90
! 6a04d13dcce81060d6576c1c945b91c1  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
! 21b47d43ccf27f4a5059937e0e63487b  gcc/testsuite/gfortran.dg/ieee/ieee.exp
! 0099e59ef340f8e2088656dfac86c17f  gcc/testsuite/gfortran.dg/ieee/ieee_1.F90
! 629e2eea5e2091391dc3e08bcadcb8cd  gcc/testsuite/gfortran.dg/ieee/ieee_2.f90
! b15c44040c4efe2f8b119bb3df34f610  gcc/testsuite/gfortran.dg/ieee/ieee_3.f90
! 23d004fe8b6e382ce48a045daf3e229d  gcc/testsuite/gfortran.dg/ieee/ieee_4.f90
  d7dcbbbf51853a9d7416a34ec7d5e19b  gcc/testsuite/gfortran.dg/ieee/ieee_5.f90
! 11feba5e976c6c537840363f5f59f09d  gcc/testsuite/gfortran.dg/ieee/ieee_6.f90
! 936dd9c26cd1c2d9a4711fd40b1f3d8c  gcc/testsuite/gfortran.dg/ieee/ieee_7.f90
! 2795b0ff6a69fe3ff99c3aa33f49b27d  gcc/testsuite/gfortran.dg/ieee/ieee_8.f90
! 3edf3db930f2307fe20f5876079afacb  gcc/testsuite/gfortran.dg/ieee/intrinsics_1.f90
! 838403b2438b8f997d80b7cef8537bf0  gcc/testsuite/gfortran.dg/ieee/intrinsics_2.F90
! 23021f89830f412805914d2b920c93c2  gcc/testsuite/gfortran.dg/ieee/large_1.f90
! 2c5ba4bfc5befe663ca1b7256103e585  gcc/testsuite/gfortran.dg/ieee/large_2.f90
! 50a6484505ec970335e3f3ccb48b9a52  gcc/testsuite/gfortran.dg/ieee/large_3.F90
! 5f02866630df707d2f890c9458d7ef34  gcc/testsuite/gfortran.dg/ieee/large_4.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
! e8ea43c66fd6d11794019ae65955f295  gcc/testsuite/gfortran.dg/ieee/underflow_1.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
  ea74ac57d54861ae078dd5b164c4e692  gcc/testsuite/gfortran.dg/implicit_1.f90
! faa9258aa87c8731e1568fbef0fa3cef  gcc/testsuite/gfortran.dg/implicit_10.f90
  ff44a28de56f83ea9834311300df991e  gcc/testsuite/gfortran.dg/implicit_11.f90
! 6184b3481c1f6509fc79d9c70a4292ca  gcc/testsuite/gfortran.dg/implicit_12.f90
  f436694f48f2c6fe96b03f6c430bb0bb  gcc/testsuite/gfortran.dg/implicit_13.f90
! 159b6bfc655887dfda2d9c00c680befd  gcc/testsuite/gfortran.dg/implicit_14.f90
  bce73433010fe7cdd8b3917347c0f73b  gcc/testsuite/gfortran.dg/implicit_15.f90
  fc1ccf1c66e20c49b9657c71cf806970  gcc/testsuite/gfortran.dg/implicit_16.f90
  64f1f368548042ba6814a03f6bea8f36  gcc/testsuite/gfortran.dg/implicit_2.f90
*************** f91933b2213ae0e2eb08e9d25f71bae4  gcc/te
*** 51172,51199 ****
  3c5ecf89b27d609316fa0d51e960ad5d  gcc/testsuite/gfortran.dg/implicit_8.f90
  33abb10bad4f7df76004cd5a3c5d1b3c  gcc/testsuite/gfortran.dg/implicit_9.f90
  7ffdc4eec8557d699afcdf7dd3c50d18  gcc/testsuite/gfortran.dg/implicit_actual.f90
! f3be1d32293038252ff0344e6fbf51d0  gcc/testsuite/gfortran.dg/implicit_class_1.f90
  2932a51aef4149737f6e8e1cfcd1c916  gcc/testsuite/gfortran.dg/implicit_derived_type_1.f90
! de6e16c026cfee9d026f5b2916db7e3e  gcc/testsuite/gfortran.dg/implicit_pure_1.f90
  93148e4c6a89c569a6e7498111515906  gcc/testsuite/gfortran.dg/implicit_pure_2.f90
  eb00bea0923fcc4ca2121a3cad715f0f  gcc/testsuite/gfortran.dg/implicit_pure_3.f90
  ed9b46b80fba02ea5657d6ed2bf9073a  gcc/testsuite/gfortran.dg/implicit_pure_4.f90
! 2348275de36b4052b5aaeb2ae73a6494  gcc/testsuite/gfortran.dg/implied_do_1.f90
! 42d282b943d10363c33bec69d3d4f846  gcc/testsuite/gfortran.dg/implied_shape_1.f08
  f9528d7042bf84bf037d6e2b109272ec  gcc/testsuite/gfortran.dg/implied_shape_2.f90
  1b2b68c816459c1a9395771e9851de87  gcc/testsuite/gfortran.dg/implied_shape_3.f08
! 69ceb7228e3cdd64512c65dffbb169d6  gcc/testsuite/gfortran.dg/import.f90
  ea1b1f8cf0ee787e7d0c693d6c3fc9e2  gcc/testsuite/gfortran.dg/import10.f90
  16022a993227b688a8bfceb5feae8495  gcc/testsuite/gfortran.dg/import11.f90
  94cf154a5c4d1c75d4ab7c9ed320a2c9  gcc/testsuite/gfortran.dg/import2.f90
  7502ee662ca0c26ef7b3a6547c048936  gcc/testsuite/gfortran.dg/import3.f90
! 3faa2e61bb4a0c3d0fadb3d9570bb6cb  gcc/testsuite/gfortran.dg/import4.f90
  c72354bb17ff03ee11a1bd2d82c56207  gcc/testsuite/gfortran.dg/import5.f90
  a3cc802a819f33ed71f4945553bb4ac6  gcc/testsuite/gfortran.dg/import6.f90
  8b0707c7dfc602aed2393333468f1db2  gcc/testsuite/gfortran.dg/import7.f90
  44bbb6e6c531f303f4214f698b76c873  gcc/testsuite/gfortran.dg/import8.f90
  60bf4f30dfbc9ad7a45d13031307f4ed  gcc/testsuite/gfortran.dg/import9.f90
! 8d5793bc03293698a5f8464416be8851  gcc/testsuite/gfortran.dg/impure_1.f08
  4645b424620b3b70376fb118030da7c3  gcc/testsuite/gfortran.dg/impure_2.f08
  d60741802a9de8f2fe965fdbcf4abcb7  gcc/testsuite/gfortran.dg/impure_3.f90
  5ccd01633f899aebaf2dc043b3c43a8c  gcc/testsuite/gfortran.dg/impure_actual_1.f90
--- 54762,54795 ----
  3c5ecf89b27d609316fa0d51e960ad5d  gcc/testsuite/gfortran.dg/implicit_8.f90
  33abb10bad4f7df76004cd5a3c5d1b3c  gcc/testsuite/gfortran.dg/implicit_9.f90
  7ffdc4eec8557d699afcdf7dd3c50d18  gcc/testsuite/gfortran.dg/implicit_actual.f90
! bd8143f490a3a81bec7ef0554252d179  gcc/testsuite/gfortran.dg/implicit_class_1.f90
  2932a51aef4149737f6e8e1cfcd1c916  gcc/testsuite/gfortran.dg/implicit_derived_type_1.f90
! b60bb5c7178a6406b7fce19be4f94f42  gcc/testsuite/gfortran.dg/implicit_pure_1.f90
  93148e4c6a89c569a6e7498111515906  gcc/testsuite/gfortran.dg/implicit_pure_2.f90
  eb00bea0923fcc4ca2121a3cad715f0f  gcc/testsuite/gfortran.dg/implicit_pure_3.f90
  ed9b46b80fba02ea5657d6ed2bf9073a  gcc/testsuite/gfortran.dg/implicit_pure_4.f90
! 59abe5f1f158e0816b2237fd238c777c  gcc/testsuite/gfortran.dg/implied_do_1.f90
! 79d235d8144a6b966e05d500c1aec29d  gcc/testsuite/gfortran.dg/implied_do_2.f90
! 5065379e91a4d65a73a912a4ec5a4dce  gcc/testsuite/gfortran.dg/implied_do_io_1.f90
! 9fd9e2d26f02a28f5dd5a9964e433600  gcc/testsuite/gfortran.dg/implied_do_io_2.f90
! 4b57cf5b0a32bb03de538f4d89b2ec2c  gcc/testsuite/gfortran.dg/implied_do_io_3.f90
! 9042c8fc68be853afcc846869e788bd5  gcc/testsuite/gfortran.dg/implied_do_io_4.f90
! 156dc7e9c954310ba5c74c0fbcaa4f42  gcc/testsuite/gfortran.dg/implied_do_io_5.f90
! a8761a2aaffb7680e80dcad5eceada12  gcc/testsuite/gfortran.dg/implied_shape_1.f08
  f9528d7042bf84bf037d6e2b109272ec  gcc/testsuite/gfortran.dg/implied_shape_2.f90
  1b2b68c816459c1a9395771e9851de87  gcc/testsuite/gfortran.dg/implied_shape_3.f08
! e6959f502764a61ef25925560ccc35a1  gcc/testsuite/gfortran.dg/import.f90
  ea1b1f8cf0ee787e7d0c693d6c3fc9e2  gcc/testsuite/gfortran.dg/import10.f90
  16022a993227b688a8bfceb5feae8495  gcc/testsuite/gfortran.dg/import11.f90
  94cf154a5c4d1c75d4ab7c9ed320a2c9  gcc/testsuite/gfortran.dg/import2.f90
  7502ee662ca0c26ef7b3a6547c048936  gcc/testsuite/gfortran.dg/import3.f90
! 149a0814da75f9fc28e2a049ff78ce07  gcc/testsuite/gfortran.dg/import4.f90
  c72354bb17ff03ee11a1bd2d82c56207  gcc/testsuite/gfortran.dg/import5.f90
  a3cc802a819f33ed71f4945553bb4ac6  gcc/testsuite/gfortran.dg/import6.f90
  8b0707c7dfc602aed2393333468f1db2  gcc/testsuite/gfortran.dg/import7.f90
  44bbb6e6c531f303f4214f698b76c873  gcc/testsuite/gfortran.dg/import8.f90
  60bf4f30dfbc9ad7a45d13031307f4ed  gcc/testsuite/gfortran.dg/import9.f90
! 22a0b49da6b057bcddfb035654319f42  gcc/testsuite/gfortran.dg/impure_1.f08
  4645b424620b3b70376fb118030da7c3  gcc/testsuite/gfortran.dg/impure_2.f08
  d60741802a9de8f2fe965fdbcf4abcb7  gcc/testsuite/gfortran.dg/impure_3.f90
  5ccd01633f899aebaf2dc043b3c43a8c  gcc/testsuite/gfortran.dg/impure_actual_1.f90
*************** c45672a19e66d4e6b11b094d697caeec  gcc/te
*** 51214,51239 ****
  57badb82ce45709d956ef2be6050cefa  gcc/testsuite/gfortran.dg/include_7.f90
  d0fdfb1260988468dbfc57fc49c04ccf  gcc/testsuite/gfortran.dg/include_8.f90
  13b818017e15db82a77afaf63a92492a  gcc/testsuite/gfortran.dg/include_9.f90
! c2e6604c8b6154e7ac2d4caaeb333e75  gcc/testsuite/gfortran.dg/index.f90
! dad4002c56704f8859ae12ceb2ecee92  gcc/testsuite/gfortran.dg/index_2.f90
! 279dd4fea235edaf4642b45c8b3db4b3  gcc/testsuite/gfortran.dg/init_flag_1.f90
! 1d1e21121359761815ffc4445de94a80  gcc/testsuite/gfortran.dg/init_flag_10.f90
  5d1c191f5b96c1cf77ba0d546e6d4917  gcc/testsuite/gfortran.dg/init_flag_11.f90
  42dcb15f62f37f4b66d4674597adee68  gcc/testsuite/gfortran.dg/init_flag_12.f90
  aa404e052ee988b1fefe2904b2b8406e  gcc/testsuite/gfortran.dg/init_flag_13.f90
  a5fd5796dd882ac9dd4b4ac0c6f0055a  gcc/testsuite/gfortran.dg/init_flag_14.f90
! 5522cc2c539cf5dcdec2304d07b669e5  gcc/testsuite/gfortran.dg/init_flag_15.f03
! f3a235d09bce4c144233db13cafc71c2  gcc/testsuite/gfortran.dg/init_flag_2.f90
! d6ec5bc83de3b5682a4df257dae96146  gcc/testsuite/gfortran.dg/init_flag_3.f90
! 8e49fde0fcd93481c7abf8e8b248041a  gcc/testsuite/gfortran.dg/init_flag_4.f90
! 275ca0fa36ccf915f6d392c94d075265  gcc/testsuite/gfortran.dg/init_flag_5.f90
! 9864bde111104b43a9312052b7e2e56c  gcc/testsuite/gfortran.dg/init_flag_6.f90
! 3c8074974a2eb14ce7916cbaa5c00a27  gcc/testsuite/gfortran.dg/init_flag_7.f90
  da1ca07d70e49c6fe9ac2fcf9629c4c2  gcc/testsuite/gfortran.dg/init_flag_8.f90
! 47c2ce750b73835866876f7cb37835af  gcc/testsuite/gfortran.dg/init_flag_9.f90
  5c1d12146fd07ebda76ee916779c943c  gcc/testsuite/gfortran.dg/initialization_1.f90
  6f358f055501ab4e134cbcd5da99c79f  gcc/testsuite/gfortran.dg/initialization_10.f90
! 15c26a27db0d5bbe2b60dc71c3e4847d  gcc/testsuite/gfortran.dg/initialization_11.f90
  bdd7b4687a9561717d886f07a1d5dba9  gcc/testsuite/gfortran.dg/initialization_12.f90
  29b359f2371c064c1c62b644c30ff504  gcc/testsuite/gfortran.dg/initialization_13.f90
  cbba9e0b9f17ffb46780a0b986aa6d83  gcc/testsuite/gfortran.dg/initialization_14.f90
--- 54810,54837 ----
  57badb82ce45709d956ef2be6050cefa  gcc/testsuite/gfortran.dg/include_7.f90
  d0fdfb1260988468dbfc57fc49c04ccf  gcc/testsuite/gfortran.dg/include_8.f90
  13b818017e15db82a77afaf63a92492a  gcc/testsuite/gfortran.dg/include_9.f90
! 9ea49858cb54b399bb49c3128d73aada  gcc/testsuite/gfortran.dg/index.f90
! 72b9f769cd2283ce9b7b556b1c93f39d  gcc/testsuite/gfortran.dg/index_2.f90
! d214b4cb15e7435b90b28ff143b06510  gcc/testsuite/gfortran.dg/init_char_with_nonchar_ctr.f90
! 3b7a3a6914e202c00024fd409f044ac6  gcc/testsuite/gfortran.dg/init_flag_1.f90
! 81f86933515fbed978400842d42b3937  gcc/testsuite/gfortran.dg/init_flag_10.f90
  5d1c191f5b96c1cf77ba0d546e6d4917  gcc/testsuite/gfortran.dg/init_flag_11.f90
  42dcb15f62f37f4b66d4674597adee68  gcc/testsuite/gfortran.dg/init_flag_12.f90
  aa404e052ee988b1fefe2904b2b8406e  gcc/testsuite/gfortran.dg/init_flag_13.f90
  a5fd5796dd882ac9dd4b4ac0c6f0055a  gcc/testsuite/gfortran.dg/init_flag_14.f90
! b09143fad2eb6d292ad26da0cf93422d  gcc/testsuite/gfortran.dg/init_flag_15.f03
! abe13e92940dbd61d55c4753f2c87af6  gcc/testsuite/gfortran.dg/init_flag_16.f03
! a8cb344220f60d2c728bc48355ffd45d  gcc/testsuite/gfortran.dg/init_flag_2.f90
! 33a01669bfd744c3805ee7c2f1e1b017  gcc/testsuite/gfortran.dg/init_flag_3.f90
! 3eba1c6fff032e730f8d7f6e6291e600  gcc/testsuite/gfortran.dg/init_flag_4.f90
! 89724c13baf81cc43caef52887206d18  gcc/testsuite/gfortran.dg/init_flag_5.f90
! dec11e2f965efe7cee675ee3a3b88bc7  gcc/testsuite/gfortran.dg/init_flag_6.f90
! e7b2d9a533257a89ced34351ac2365cb  gcc/testsuite/gfortran.dg/init_flag_7.f90
  da1ca07d70e49c6fe9ac2fcf9629c4c2  gcc/testsuite/gfortran.dg/init_flag_8.f90
! a35f932b5475c26b45985b1a97b21a7f  gcc/testsuite/gfortran.dg/init_flag_9.f90
  5c1d12146fd07ebda76ee916779c943c  gcc/testsuite/gfortran.dg/initialization_1.f90
  6f358f055501ab4e134cbcd5da99c79f  gcc/testsuite/gfortran.dg/initialization_10.f90
! b57ee9051d5280b929992d2898d8f034  gcc/testsuite/gfortran.dg/initialization_11.f90
  bdd7b4687a9561717d886f07a1d5dba9  gcc/testsuite/gfortran.dg/initialization_12.f90
  29b359f2371c064c1c62b644c30ff504  gcc/testsuite/gfortran.dg/initialization_13.f90
  cbba9e0b9f17ffb46780a0b986aa6d83  gcc/testsuite/gfortran.dg/initialization_14.f90
*************** cbba9e0b9f17ffb46780a0b986aa6d83  gcc/te
*** 51241,51341 ****
  84583e7a928db46dd854d137d0ed4b45  gcc/testsuite/gfortran.dg/initialization_16.f90
  8647608d3b7299c8acdc568fa4eddd23  gcc/testsuite/gfortran.dg/initialization_17.f90
  c1714f4dbb001a685444a57acf31f134  gcc/testsuite/gfortran.dg/initialization_18.f90
! c64f1c3b8dedd2760c6ceff98a2b104f  gcc/testsuite/gfortran.dg/initialization_19.f90
! 5906e117db9dc43c47c0e6d8ed2e3e51  gcc/testsuite/gfortran.dg/initialization_2.f90
  852b076fb2f0c98fed50396220e38c75  gcc/testsuite/gfortran.dg/initialization_20.f90
  a34e5f9728cdee4c4355a4c6f8be88dd  gcc/testsuite/gfortran.dg/initialization_21.f90
! 2fb633bfac4c93dc2152baf6d8497336  gcc/testsuite/gfortran.dg/initialization_22.f90
  9be9d985ecc24cf474817be79e382a1b  gcc/testsuite/gfortran.dg/initialization_23.f90
  903171b937fc9d67604647c46d157077  gcc/testsuite/gfortran.dg/initialization_24.f90
  97281199f55a3e20f06e873dcc601bea  gcc/testsuite/gfortran.dg/initialization_25.f90
  6cfa0f24177aa6c04c5b23460476e31c  gcc/testsuite/gfortran.dg/initialization_26.f90
! 1514c6414f7e04652f307bcc525e16d0  gcc/testsuite/gfortran.dg/initialization_27.f90
  658fd1c56fc4835e60064d1eec650767  gcc/testsuite/gfortran.dg/initialization_28.f90
  5fed001031d03f4122b58077df7130d6  gcc/testsuite/gfortran.dg/initialization_29.f90
  0759f2d3acf484e54f39c4c01e5f2536  gcc/testsuite/gfortran.dg/initialization_3.f90
  ec558a82bb4b8209168624a762e13383  gcc/testsuite/gfortran.dg/initialization_4.f90
! 838d14dbac1d143acaf81ce65b0b760e  gcc/testsuite/gfortran.dg/initialization_5.f90
! 0ed08a94ad488dd443c3bc7a6520d815  gcc/testsuite/gfortran.dg/initialization_6.f90
  e2e6d32ef70bb983976f2fbe2daea977  gcc/testsuite/gfortran.dg/initialization_7.f90
  cc4d6e061d5fbfc0742e0c48dad42d09  gcc/testsuite/gfortran.dg/initialization_8.f90
  d4d8a181bcb7eb756cf1498c62c9f6e7  gcc/testsuite/gfortran.dg/initialization_9.f90
! 2d5620eebd7ac18f08a2e08cb5feb02a  gcc/testsuite/gfortran.dg/inline_matmul_1.f90
! e8188e2c780d2b7eb70536d3e37268dd  gcc/testsuite/gfortran.dg/inline_matmul_10.f90
! fb9155a8d162bbc757ffe94a5fbb780a  gcc/testsuite/gfortran.dg/inline_matmul_11.f90
  acad20cfccb57d2647ecdf23fe5b886a  gcc/testsuite/gfortran.dg/inline_matmul_12.f90
! 5135df163bc5b691e32b58951ac51b60  gcc/testsuite/gfortran.dg/inline_matmul_13.f90
! 5abbe3af3cfa0676bdd7f6167d713f0d  gcc/testsuite/gfortran.dg/inline_matmul_18.f90
! f795a637ed0930936889b850d661485d  gcc/testsuite/gfortran.dg/inline_matmul_2.f90
! 3b5fafa7209a9785dd1f1b9b3260691d  gcc/testsuite/gfortran.dg/inline_matmul_3.f90
! 5f091280b988f874dd17d1b57d12a3ce  gcc/testsuite/gfortran.dg/inline_matmul_4.f90
! b7b9d3c7b676446c76d5444b469e69b9  gcc/testsuite/gfortran.dg/inline_matmul_5.f90
! 218495cc1833aea7ddadd26b3b51d8e4  gcc/testsuite/gfortran.dg/inline_matmul_6.f90
! c781b3f46bb51b4e27e09b1cdecdbbe8  gcc/testsuite/gfortran.dg/inline_matmul_7.f90
! 46fed3d216ee7b7f45b7ac3aff8860a6  gcc/testsuite/gfortran.dg/inline_matmul_8.f90
! 7de92571bd710a14dfd2df2d8161f53f  gcc/testsuite/gfortran.dg/inline_matmul_9.f90
  64774f7a2d0e5afd2810ebd45aec81e1  gcc/testsuite/gfortran.dg/inline_product_1.f90
! ac5234f01fbc0f6454071501dde2209d  gcc/testsuite/gfortran.dg/inline_sum_1.f90
  f279c23f64da248a23ac4678746ff811  gcc/testsuite/gfortran.dg/inline_sum_2.f90
! 9ca8d5cd81ef49491a4220319297780e  gcc/testsuite/gfortran.dg/inline_sum_3.f90
  49d13efbffd28fc321f8e9af3bdc8c25  gcc/testsuite/gfortran.dg/inline_sum_4.f90
! 6942e5979cd0329d46fe600174fb507a  gcc/testsuite/gfortran.dg/inline_sum_5.f90
  0324473511cbe15ef22bba21da72923d  gcc/testsuite/gfortran.dg/inline_sum_bounds_check_1.f90
  cd4289a23a1c1ceafe65b10e1489224f  gcc/testsuite/gfortran.dg/inline_sum_bounds_check_2.f90
! bf43b55074727bb834862096ebb6accd  gcc/testsuite/gfortran.dg/inline_transpose_1.f90
! 8b8b6023f7cb77eb5ef45a5e631ba8c9  gcc/testsuite/gfortran.dg/inquire-complex.f90
! 18169e14794b1e6b665f797a39c55dfe  gcc/testsuite/gfortran.dg/inquire.f90
! 50dd5b99b66be9296dce8dd7ec827fe4  gcc/testsuite/gfortran.dg/inquire_10.f90
  13af8332b0267269cf0e4dde8c31d1e2  gcc/testsuite/gfortran.dg/inquire_11.f90
  26b0a0cdeab7238082ec140ee040bf69  gcc/testsuite/gfortran.dg/inquire_12.f90
! fe4f5eeb546eda9f57d05796db3291be  gcc/testsuite/gfortran.dg/inquire_13.f90
  a85d9b173509ec81f0e8eea4f903aedf  gcc/testsuite/gfortran.dg/inquire_14.f90
! 83afca5041b4e1bc04aa54f0efed9e5a  gcc/testsuite/gfortran.dg/inquire_15.f90
! 44cdb6f6eed5f646190e5ec3eb4b5886  gcc/testsuite/gfortran.dg/inquire_16.f90
! 709b7d5db0659cf45b4d7a89c9c7e176  gcc/testsuite/gfortran.dg/inquire_17.f90
! 46381b0ac618fd43b13d9fe6a0683198  gcc/testsuite/gfortran.dg/inquire_5.f90
! 416611b673267dc72f7c7b52abfa5158  gcc/testsuite/gfortran.dg/inquire_6.f90
! 8283bb4be36f05c63ad546fdd62f3531  gcc/testsuite/gfortran.dg/inquire_7.f90
  39b40793ece3e8c584665b0dc674ff07  gcc/testsuite/gfortran.dg/inquire_8.f90
! 97b970b0cc5f2afe70808d85444f9d09  gcc/testsuite/gfortran.dg/inquire_9.f90
! ba5ca4bc88cb0228b15a134fc77b011f  gcc/testsuite/gfortran.dg/inquire_internal.f90
  1724a18e756515a495e846a6b7144795  gcc/testsuite/gfortran.dg/inquire_iolength.f90
! d1119e1f2ace27f1355041e562ac60e3  gcc/testsuite/gfortran.dg/inquire_size.f90
! 800c1b502ce9f979f1020489d34a5b7e  gcc/testsuite/gfortran.dg/int_1.f90
  237886a0b756c8b89a124de63f69aefc  gcc/testsuite/gfortran.dg/int_2.f90
  1c33ddb023260200cdcf3434b09db9b0  gcc/testsuite/gfortran.dg/int_3.f90
! 09f1968317820bb929798d96b88ed196  gcc/testsuite/gfortran.dg/int_conv_1.f90
! 57b1ce41fe3403ef887645173ff75ea7  gcc/testsuite/gfortran.dg/int_conv_2.f90
! 58d5cef0d1605b961b7283cef3fafbc6  gcc/testsuite/gfortran.dg/int_range_io_1.f90
  8ad0e5ed51c054fefd4a1619ce84a9e3  gcc/testsuite/gfortran.dg/integer_exponentiation_1.f90
! 064e47a20db02b260feabd3024d929ec  gcc/testsuite/gfortran.dg/integer_exponentiation_2.f90
! fa2faf183145bf87d1497a8e18cf67c2  gcc/testsuite/gfortran.dg/integer_exponentiation_3.F90
  901fdf8ccfce7240b5e2cfa3f7fcb07c  gcc/testsuite/gfortran.dg/integer_exponentiation_4.f90
! ebd2c7181d1d1a74fb8d92fa4d5dcadf  gcc/testsuite/gfortran.dg/integer_exponentiation_5.F90
  5436c9710c4dbacc08026642a5d88b2d  gcc/testsuite/gfortran.dg/integer_exponentiation_6.F90
  0015da9ffa828cd555fcffad1c400715  gcc/testsuite/gfortran.dg/integer_exponentiation_7.f90
  9a94a4b4c3991300273d3eff16279572  gcc/testsuite/gfortran.dg/intent_optimize_1.f90
  6ad3133cfe62e722e018d386dbfd3404  gcc/testsuite/gfortran.dg/intent_out_1.f90
! 56f012500f1600964f96a00b144bd1bb  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
! 1c4dc78d9e4158fb02233cdb76ebbae4  gcc/testsuite/gfortran.dg/intent_out_5.f90
! be75868610ff1587128bb264b0c0ec14  gcc/testsuite/gfortran.dg/intent_out_6.f90
  f9a43adfc4af366b318d50762899f08c  gcc/testsuite/gfortran.dg/intent_out_7.f90
  195e986d0a8cd5a820d416afd69aed0d  gcc/testsuite/gfortran.dg/intent_out_8.f90
  b1ec980ba94d7e1c6c7d31cc50534af7  gcc/testsuite/gfortran.dg/intent_out_9.f90
  4cd7b571c93976bb5fcf7cfbede61f45  gcc/testsuite/gfortran.dg/intent_used_1.f90
! e6b2d2e83ce0e80a8f43c9fa432bae4d  gcc/testsuite/gfortran.dg/interface_1.f90
  33e547cda651d44d88bb5f3f586fc334  gcc/testsuite/gfortran.dg/interface_10.f90
  aaf42fffbdb274f0f43b9ed58d6cde7f  gcc/testsuite/gfortran.dg/interface_11.f90
! a49af9a72f4037f19070d3939fab3178  gcc/testsuite/gfortran.dg/interface_12.f90
  b81939fbc1e04cd0f35d5940d11a69b2  gcc/testsuite/gfortran.dg/interface_13.f90
  85acf338bc6bb2a0c454031cec28f2e3  gcc/testsuite/gfortran.dg/interface_14.f90
  d924bdc542707fe8acced1b7741859cd  gcc/testsuite/gfortran.dg/interface_15.f90
  c56e26fb28b30b5d6bc86f44ec3d4fe4  gcc/testsuite/gfortran.dg/interface_16.f90
  1ceed116ae517ff6cfc92393589f25bf  gcc/testsuite/gfortran.dg/interface_17.f90
  0e38de22b8a37860231db85750ab6248  gcc/testsuite/gfortran.dg/interface_18.f90
! 2dfe304b0f2a04fe72dd26a05ccd4e55  gcc/testsuite/gfortran.dg/interface_19.f90
  17c4562b792e274c16da9b6a78b41db8  gcc/testsuite/gfortran.dg/interface_2.f90
  b968fdb26012cf5077b9b7e9fa166d9e  gcc/testsuite/gfortran.dg/interface_20.f90
  55f12020029e4a4f6bb9ac997226bf49  gcc/testsuite/gfortran.dg/interface_21.f90
--- 54839,54951 ----
  84583e7a928db46dd854d137d0ed4b45  gcc/testsuite/gfortran.dg/initialization_16.f90
  8647608d3b7299c8acdc568fa4eddd23  gcc/testsuite/gfortran.dg/initialization_17.f90
  c1714f4dbb001a685444a57acf31f134  gcc/testsuite/gfortran.dg/initialization_18.f90
! f950bd834036df5b4d693d677e8e2747  gcc/testsuite/gfortran.dg/initialization_19.f90
! 7a220b810f70b8abeb571ca8bc7dde99  gcc/testsuite/gfortran.dg/initialization_2.f90
  852b076fb2f0c98fed50396220e38c75  gcc/testsuite/gfortran.dg/initialization_20.f90
  a34e5f9728cdee4c4355a4c6f8be88dd  gcc/testsuite/gfortran.dg/initialization_21.f90
! 5ba9ff818c0b4a5583e6cc868df5e611  gcc/testsuite/gfortran.dg/initialization_22.f90
  9be9d985ecc24cf474817be79e382a1b  gcc/testsuite/gfortran.dg/initialization_23.f90
  903171b937fc9d67604647c46d157077  gcc/testsuite/gfortran.dg/initialization_24.f90
  97281199f55a3e20f06e873dcc601bea  gcc/testsuite/gfortran.dg/initialization_25.f90
  6cfa0f24177aa6c04c5b23460476e31c  gcc/testsuite/gfortran.dg/initialization_26.f90
! 101c0d844eba19dc1c8de7fa89f2103d  gcc/testsuite/gfortran.dg/initialization_27.f90
  658fd1c56fc4835e60064d1eec650767  gcc/testsuite/gfortran.dg/initialization_28.f90
  5fed001031d03f4122b58077df7130d6  gcc/testsuite/gfortran.dg/initialization_29.f90
  0759f2d3acf484e54f39c4c01e5f2536  gcc/testsuite/gfortran.dg/initialization_3.f90
  ec558a82bb4b8209168624a762e13383  gcc/testsuite/gfortran.dg/initialization_4.f90
! 389f80d4cc6b54919b42dee3887e2fba  gcc/testsuite/gfortran.dg/initialization_5.f90
! 488f14e62a4815a2fdf65173e83ea2af  gcc/testsuite/gfortran.dg/initialization_6.f90
  e2e6d32ef70bb983976f2fbe2daea977  gcc/testsuite/gfortran.dg/initialization_7.f90
  cc4d6e061d5fbfc0742e0c48dad42d09  gcc/testsuite/gfortran.dg/initialization_8.f90
  d4d8a181bcb7eb756cf1498c62c9f6e7  gcc/testsuite/gfortran.dg/initialization_9.f90
! 1cc76d4c1acac6297df84e3574966378  gcc/testsuite/gfortran.dg/inline_matmul_1.f90
! 77f3febffafae6303787ea418d1d31d5  gcc/testsuite/gfortran.dg/inline_matmul_10.f90
! 78ba6e618e4a1cd6e7597233a5e8e65d  gcc/testsuite/gfortran.dg/inline_matmul_11.f90
  acad20cfccb57d2647ecdf23fe5b886a  gcc/testsuite/gfortran.dg/inline_matmul_12.f90
! aec1caa79e5f6be7471c78a611946357  gcc/testsuite/gfortran.dg/inline_matmul_13.f90
! 3f2f902262a56ac5434afbf85af50515  gcc/testsuite/gfortran.dg/inline_matmul_14.f90
! e1d41ca4f2aa83b4da000936a2c3d91f  gcc/testsuite/gfortran.dg/inline_matmul_15.f90
! 056ab99385f1b6887e368b3c6ad2d5e1  gcc/testsuite/gfortran.dg/inline_matmul_16.f90
! eca2f5c77b5469fc0b437c332e655511  gcc/testsuite/gfortran.dg/inline_matmul_17.f90
! dee6ff6cec856fe1f42312c1d4fd4807  gcc/testsuite/gfortran.dg/inline_matmul_18.f90
! 2d0cc489aae9a8f125cf641cb1912f6c  gcc/testsuite/gfortran.dg/inline_matmul_19.f90
! 785565c0646eaf528f4603fa81c0392a  gcc/testsuite/gfortran.dg/inline_matmul_2.f90
! 1fc8b86fa60d2244da6fa28f222e334d  gcc/testsuite/gfortran.dg/inline_matmul_20.f90
! 5947090e435148f2fce477285a544142  gcc/testsuite/gfortran.dg/inline_matmul_21.f90
! e5a418513e079e50ea576e021cf5ad8e  gcc/testsuite/gfortran.dg/inline_matmul_22.f90
! ffdb4ca68f61f3bd618415335c9c7c21  gcc/testsuite/gfortran.dg/inline_matmul_3.f90
! f95e5fd479c839cfa9cb3ac127ee7584  gcc/testsuite/gfortran.dg/inline_matmul_4.f90
! 6cb787ca0dac6ea814c8af4ac7cb8022  gcc/testsuite/gfortran.dg/inline_matmul_5.f90
! 615d63002fbbdecf7e2e14a7ed34b7e2  gcc/testsuite/gfortran.dg/inline_matmul_6.f90
! 29a68efddc17a581a9b4e8354fca51b8  gcc/testsuite/gfortran.dg/inline_matmul_7.f90
! 451ec0712f3e904483e24d5f999f3572  gcc/testsuite/gfortran.dg/inline_matmul_8.f90
! de25568cf3b7775dc7e7664201aa99c9  gcc/testsuite/gfortran.dg/inline_matmul_9.f90
  64774f7a2d0e5afd2810ebd45aec81e1  gcc/testsuite/gfortran.dg/inline_product_1.f90
! 2fc9caa5afc65b37bc4924a3869fe3f0  gcc/testsuite/gfortran.dg/inline_sum_1.f90
  f279c23f64da248a23ac4678746ff811  gcc/testsuite/gfortran.dg/inline_sum_2.f90
! 80d13794c7c7bc2d0eb6df8ebdd72ce9  gcc/testsuite/gfortran.dg/inline_sum_3.f90
  49d13efbffd28fc321f8e9af3bdc8c25  gcc/testsuite/gfortran.dg/inline_sum_4.f90
! 5fc6f953ba415c76860833de2391d199  gcc/testsuite/gfortran.dg/inline_sum_5.f90
  0324473511cbe15ef22bba21da72923d  gcc/testsuite/gfortran.dg/inline_sum_bounds_check_1.f90
  cd4289a23a1c1ceafe65b10e1489224f  gcc/testsuite/gfortran.dg/inline_sum_bounds_check_2.f90
! 91fef1b38ebf951a702358b4a6997097  gcc/testsuite/gfortran.dg/inline_transpose_1.f90
! 8c79ff330950eca59cae75b68067d6c1  gcc/testsuite/gfortran.dg/inquire-complex.f90
! b870d8eadcf3c9aab42672d99c782543  gcc/testsuite/gfortran.dg/inquire.f90
! a90d3698d25791a6988776ea7b197842  gcc/testsuite/gfortran.dg/inquire_10.f90
  13af8332b0267269cf0e4dde8c31d1e2  gcc/testsuite/gfortran.dg/inquire_11.f90
  26b0a0cdeab7238082ec140ee040bf69  gcc/testsuite/gfortran.dg/inquire_12.f90
! 49070cff97ea0e2efb1d85896c2b5719  gcc/testsuite/gfortran.dg/inquire_13.f90
  a85d9b173509ec81f0e8eea4f903aedf  gcc/testsuite/gfortran.dg/inquire_14.f90
! 3ed0ad1bfe70a1baf62b1093cd8a86e9  gcc/testsuite/gfortran.dg/inquire_15.f90
! ca32378e68606ab9b3dcfa93d69e29c8  gcc/testsuite/gfortran.dg/inquire_16.f90
! fc199a6d73ed5e7f0718a050e6c4e891  gcc/testsuite/gfortran.dg/inquire_17.f90
! af5dbdb1d8b1712a4beb02208513ced7  gcc/testsuite/gfortran.dg/inquire_18.f90
! 95bd7d5ee0b0f6b1b4217afe4f7be751  gcc/testsuite/gfortran.dg/inquire_19.f90
! f6acaa4a3e082cac8858ca2288026cca  gcc/testsuite/gfortran.dg/inquire_5.f90
! 5879b35d44b2d01e992df13871c86777  gcc/testsuite/gfortran.dg/inquire_6.f90
! 49839e2cb30e5db72706873435174394  gcc/testsuite/gfortran.dg/inquire_7.f90
  39b40793ece3e8c584665b0dc674ff07  gcc/testsuite/gfortran.dg/inquire_8.f90
! 46f60ab100688980f23ade8d2b3425f7  gcc/testsuite/gfortran.dg/inquire_9.f90
! 73d16ea8dadfff89fdb962be9c5810ab  gcc/testsuite/gfortran.dg/inquire_internal.f90
  1724a18e756515a495e846a6b7144795  gcc/testsuite/gfortran.dg/inquire_iolength.f90
! 3d02595b1c37f4acb0f0bb9b0db2fba3  gcc/testsuite/gfortran.dg/inquire_recl_f2018.f90
! 7664349957b7d6787138b3fd95966ad9  gcc/testsuite/gfortran.dg/inquire_size.f90
! 7b3179321b390998d95ad39afea45624  gcc/testsuite/gfortran.dg/int_1.f90
  237886a0b756c8b89a124de63f69aefc  gcc/testsuite/gfortran.dg/int_2.f90
  1c33ddb023260200cdcf3434b09db9b0  gcc/testsuite/gfortran.dg/int_3.f90
! 8acce712335e8a2d51693e46638baaae  gcc/testsuite/gfortran.dg/int_conv_1.f90
! 5bfbb5f01c825c0fa125b3aca520e37d  gcc/testsuite/gfortran.dg/int_conv_2.f90
! 666e3cc15f36ed1a1563118d5ffb6869  gcc/testsuite/gfortran.dg/int_range_io_1.f90
  8ad0e5ed51c054fefd4a1619ce84a9e3  gcc/testsuite/gfortran.dg/integer_exponentiation_1.f90
! 8572c732bc0359bb6bbf907bad34e05e  gcc/testsuite/gfortran.dg/integer_exponentiation_2.f90
! 487a86d9fe2843502d5d8b56d241377a  gcc/testsuite/gfortran.dg/integer_exponentiation_3.F90
  901fdf8ccfce7240b5e2cfa3f7fcb07c  gcc/testsuite/gfortran.dg/integer_exponentiation_4.f90
! 11865904a9b40290411365c9248db032  gcc/testsuite/gfortran.dg/integer_exponentiation_5.F90
  5436c9710c4dbacc08026642a5d88b2d  gcc/testsuite/gfortran.dg/integer_exponentiation_6.F90
  0015da9ffa828cd555fcffad1c400715  gcc/testsuite/gfortran.dg/integer_exponentiation_7.f90
+ 1ef169842cbe8c6ba2f9cec849cc7d6f  gcc/testsuite/gfortran.dg/integer_plus.f90
  9a94a4b4c3991300273d3eff16279572  gcc/testsuite/gfortran.dg/intent_optimize_1.f90
  6ad3133cfe62e722e018d386dbfd3404  gcc/testsuite/gfortran.dg/intent_out_1.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
! a624c9882b68ba914ff958a8206bfce9  gcc/testsuite/gfortran.dg/intent_out_5.f90
! f874af3c0d301777ee1a08124ea1f0da  gcc/testsuite/gfortran.dg/intent_out_6.f90
  f9a43adfc4af366b318d50762899f08c  gcc/testsuite/gfortran.dg/intent_out_7.f90
  195e986d0a8cd5a820d416afd69aed0d  gcc/testsuite/gfortran.dg/intent_out_8.f90
  b1ec980ba94d7e1c6c7d31cc50534af7  gcc/testsuite/gfortran.dg/intent_out_9.f90
  4cd7b571c93976bb5fcf7cfbede61f45  gcc/testsuite/gfortran.dg/intent_used_1.f90
! b63b04a519d79e9e9d3b0bf7d697a8d7  gcc/testsuite/gfortran.dg/interface_1.f90
  33e547cda651d44d88bb5f3f586fc334  gcc/testsuite/gfortran.dg/interface_10.f90
  aaf42fffbdb274f0f43b9ed58d6cde7f  gcc/testsuite/gfortran.dg/interface_11.f90
! 6df92acc1217a6bf2ab36bb1a78879a9  gcc/testsuite/gfortran.dg/interface_12.f90
  b81939fbc1e04cd0f35d5940d11a69b2  gcc/testsuite/gfortran.dg/interface_13.f90
  85acf338bc6bb2a0c454031cec28f2e3  gcc/testsuite/gfortran.dg/interface_14.f90
  d924bdc542707fe8acced1b7741859cd  gcc/testsuite/gfortran.dg/interface_15.f90
  c56e26fb28b30b5d6bc86f44ec3d4fe4  gcc/testsuite/gfortran.dg/interface_16.f90
  1ceed116ae517ff6cfc92393589f25bf  gcc/testsuite/gfortran.dg/interface_17.f90
  0e38de22b8a37860231db85750ab6248  gcc/testsuite/gfortran.dg/interface_18.f90
! 9d523e845bda900d7e8d6428e3203666  gcc/testsuite/gfortran.dg/interface_19.f90
  17c4562b792e274c16da9b6a78b41db8  gcc/testsuite/gfortran.dg/interface_2.f90
  b968fdb26012cf5077b9b7e9fa166d9e  gcc/testsuite/gfortran.dg/interface_20.f90
  55f12020029e4a4f6bb9ac997226bf49  gcc/testsuite/gfortran.dg/interface_21.f90
*************** fc2b293a2d13f23c8a72aa82b137a7b1  gcc/te
*** 51358,51376 ****
  46b3ee442f85d67ff5afae28ae3f4702  gcc/testsuite/gfortran.dg/interface_37.f90
  941e1ef8f703d6e5c3cefe39c67ecb85  gcc/testsuite/gfortran.dg/interface_38.f90
  6e3222282c29d4f4e30d8d92c1def6b3  gcc/testsuite/gfortran.dg/interface_39.f90
! 46314c1c8afc8b271fe6647ff2e4415f  gcc/testsuite/gfortran.dg/interface_4.f90
  79c3ef8a8610d213e1de2702a8e7d1c5  gcc/testsuite/gfortran.dg/interface_40.f90
! dd9e2fc1a583154b041bbab80861551a  gcc/testsuite/gfortran.dg/interface_5.f90
  a63ff5460cdc25350f43a09d899581db  gcc/testsuite/gfortran.dg/interface_6.f90
  b4d472d28fc0ac004218dc87eb241306  gcc/testsuite/gfortran.dg/interface_7.f90
  9b6e2c6769e8d31142faefbb1e2b8fa0  gcc/testsuite/gfortran.dg/interface_8.f90
! 80a92c3f67f472b62fe319a1fcb37f1d  gcc/testsuite/gfortran.dg/interface_9.f90
  892cbfad36ad226f6afb6018dd69a6c0  gcc/testsuite/gfortran.dg/interface_abstract_1.f90
  b3de2cdb7dfd995e8d4a97fabcc29a38  gcc/testsuite/gfortran.dg/interface_abstract_2.f90
  e797a26594e33f4316a85af1fe223cbc  gcc/testsuite/gfortran.dg/interface_abstract_3.f90
  a30d85d2601e16438a18162122cbc190  gcc/testsuite/gfortran.dg/interface_abstract_4.f90
! b5ce20e569dd18b2200d162ba545aaa9  gcc/testsuite/gfortran.dg/interface_assignment_1.f90
! 2fc809c732294a8d3020830bc126420d  gcc/testsuite/gfortran.dg/interface_assignment_2.f90
  91f77567fb0079c826db40c2ce9296c0  gcc/testsuite/gfortran.dg/interface_assignment_3.f90
  82ab75dd24ad68ccda82fa0944a3a7e3  gcc/testsuite/gfortran.dg/interface_assignment_4.f90
  8cd72f01b62a0fd0fb9a9a71f37ebfba  gcc/testsuite/gfortran.dg/interface_assignment_5.f90
--- 54968,54989 ----
  46b3ee442f85d67ff5afae28ae3f4702  gcc/testsuite/gfortran.dg/interface_37.f90
  941e1ef8f703d6e5c3cefe39c67ecb85  gcc/testsuite/gfortran.dg/interface_38.f90
  6e3222282c29d4f4e30d8d92c1def6b3  gcc/testsuite/gfortran.dg/interface_39.f90
! dea9cddedab08869b79a4cb11ed9e211  gcc/testsuite/gfortran.dg/interface_4.f90
  79c3ef8a8610d213e1de2702a8e7d1c5  gcc/testsuite/gfortran.dg/interface_40.f90
! 7381840ff5e15738d4111258de81b4ee  gcc/testsuite/gfortran.dg/interface_41.f90
! 5ff61fa568b9e26c75a4e907d8a14198  gcc/testsuite/gfortran.dg/interface_42.f90
! ae1ac6fa9b32ceaa5c06695b6d03672f  gcc/testsuite/gfortran.dg/interface_43.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
  9b6e2c6769e8d31142faefbb1e2b8fa0  gcc/testsuite/gfortran.dg/interface_8.f90
! 741aacf0bd439f6874a87ea56712aadc  gcc/testsuite/gfortran.dg/interface_9.f90
  892cbfad36ad226f6afb6018dd69a6c0  gcc/testsuite/gfortran.dg/interface_abstract_1.f90
  b3de2cdb7dfd995e8d4a97fabcc29a38  gcc/testsuite/gfortran.dg/interface_abstract_2.f90
  e797a26594e33f4316a85af1fe223cbc  gcc/testsuite/gfortran.dg/interface_abstract_3.f90
  a30d85d2601e16438a18162122cbc190  gcc/testsuite/gfortran.dg/interface_abstract_4.f90
! 33a2f608c30f217c3799ca2ecec2ffec  gcc/testsuite/gfortran.dg/interface_assignment_1.f90
! 4f0c646f0732570a97ff9a9dc8755be6  gcc/testsuite/gfortran.dg/interface_assignment_2.f90
  91f77567fb0079c826db40c2ce9296c0  gcc/testsuite/gfortran.dg/interface_assignment_3.f90
  82ab75dd24ad68ccda82fa0944a3a7e3  gcc/testsuite/gfortran.dg/interface_assignment_4.f90
  8cd72f01b62a0fd0fb9a9a71f37ebfba  gcc/testsuite/gfortran.dg/interface_assignment_5.f90
*************** a08d9bbd98c5af88aaa1623767543abb  gcc/te
*** 51379,51408 ****
  2a631c7e95f8fa6bcf4c05a5bbb5c8af  gcc/testsuite/gfortran.dg/interface_operator_2.f90
  c5721500972020048be7b305fb352507  gcc/testsuite/gfortran.dg/interface_proc_end.f90
  6a001e94aca863d35df3e7b08dd78a0b  gcc/testsuite/gfortran.dg/internal_dummy_1.f90
! 1db50047c200e3769e9c3b9f3ce2b167  gcc/testsuite/gfortran.dg/internal_dummy_2.f08
! abc5bc35e155bea664b253fff315f23a  gcc/testsuite/gfortran.dg/internal_dummy_3.f08
! 61d465ee1e4a29748fdd716ed400a473  gcc/testsuite/gfortran.dg/internal_dummy_4.f08
  d35205d170172e3a3f55fd933b318bcc  gcc/testsuite/gfortran.dg/internal_io_unf.f90
! 1b1af0edd2d2d4eaa41d753d4e885e15  gcc/testsuite/gfortran.dg/internal_pack_1.f90
! 2a10f48871b3410a1e20c7c022209de8  gcc/testsuite/gfortran.dg/internal_pack_10.f90
  5acc8a3034aa0c082876ec10b8b780f1  gcc/testsuite/gfortran.dg/internal_pack_11.f90
! d3b36061f3b8da5f842e7c096a22faf1  gcc/testsuite/gfortran.dg/internal_pack_12.f90
! 68c3478445465050be4a74ca6ec011c6  gcc/testsuite/gfortran.dg/internal_pack_13.f90
! c7682d3c6493ed40168b7c348ab52330  gcc/testsuite/gfortran.dg/internal_pack_14.f90
! a2e42e2c7d056f0a04014447693aff2f  gcc/testsuite/gfortran.dg/internal_pack_15.f90
! 71ffca46dbef72f72be192371fcbfcc5  gcc/testsuite/gfortran.dg/internal_pack_2.f90
! bd68d54ca4cd7f67cf7d07a390db2d1f  gcc/testsuite/gfortran.dg/internal_pack_3.f90
! 541eeb0d012cea89a16cd727a03f0b81  gcc/testsuite/gfortran.dg/internal_pack_4.f90
  f9123d0c7f33c1d2503169f8bb93bf4b  gcc/testsuite/gfortran.dg/internal_pack_5.f90
! 08f2c76e23e5360af101bce4a7d262b9  gcc/testsuite/gfortran.dg/internal_pack_6.f90
  7f74223b5a3e59ecb838f9850ae9a67d  gcc/testsuite/gfortran.dg/internal_pack_7.f90
! dfc37d019220bddbc006e5388d50e9a7  gcc/testsuite/gfortran.dg/internal_pack_8.f90
  da742ef45d27d1dbabf578376b793b06  gcc/testsuite/gfortran.dg/internal_pack_9.f90
! f83b1bf4d5da4b9b222cbb323f92f831  gcc/testsuite/gfortran.dg/internal_readwrite_1.f90
! 8bf8dab685dfc8db514b460e22648f80  gcc/testsuite/gfortran.dg/internal_readwrite_2.f90
! 2cc95ecc20be055b39f34f4641169852  gcc/testsuite/gfortran.dg/internal_readwrite_3.f90
  e82fa551841033a84bee9fc477e55194  gcc/testsuite/gfortran.dg/internal_readwrite_4.f90
! 447249af7d2fd8c44e94ff5e234f1965  gcc/testsuite/gfortran.dg/internal_references_1.f90
  d0c6db8313177997e1e7250226095e1d  gcc/testsuite/gfortran.dg/internal_references_2.f90
  1307f861e759364c3550be7b5ef0d46c  gcc/testsuite/gfortran.dg/internal_write_1.f90
  c7381103ca4fbef62989010c882fc4ce  gcc/testsuite/gfortran.dg/interop_params.f03
--- 54992,55021 ----
  2a631c7e95f8fa6bcf4c05a5bbb5c8af  gcc/testsuite/gfortran.dg/interface_operator_2.f90
  c5721500972020048be7b305fb352507  gcc/testsuite/gfortran.dg/interface_proc_end.f90
  6a001e94aca863d35df3e7b08dd78a0b  gcc/testsuite/gfortran.dg/internal_dummy_1.f90
! 39d7e2026e65a3d115728a0cdcde35ac  gcc/testsuite/gfortran.dg/internal_dummy_2.f08
! b2772a3ab9ea94ecf88b3da0109c1091  gcc/testsuite/gfortran.dg/internal_dummy_3.f08
! 6ce1c2220734b653f7bb169341465ecd  gcc/testsuite/gfortran.dg/internal_dummy_4.f08
  d35205d170172e3a3f55fd933b318bcc  gcc/testsuite/gfortran.dg/internal_io_unf.f90
! 2c0e0a362ff8c542d435e8c37713c0bd  gcc/testsuite/gfortran.dg/internal_pack_1.f90
! ff51501f41dd7c1ff34a4f5d80619b32  gcc/testsuite/gfortran.dg/internal_pack_10.f90
  5acc8a3034aa0c082876ec10b8b780f1  gcc/testsuite/gfortran.dg/internal_pack_11.f90
! 94cffad766d58f210358510fc770762e  gcc/testsuite/gfortran.dg/internal_pack_12.f90
! 33e3eaa7b68f7b451be19fb9552e41f5  gcc/testsuite/gfortran.dg/internal_pack_13.f90
! 4c5f797105bc0e62eb4d0ce55ad9e62e  gcc/testsuite/gfortran.dg/internal_pack_14.f90
! 70095ccc711638a30a1dc748ca4d7dd7  gcc/testsuite/gfortran.dg/internal_pack_15.f90
! 075293b9e6916e80adae1dba43d81f80  gcc/testsuite/gfortran.dg/internal_pack_2.f90
! 89ec6815f2492d322aa92f5cff0f66b5  gcc/testsuite/gfortran.dg/internal_pack_3.f90
! 4b7e46c9e1b7bb3dbeb6d94f81d677d7  gcc/testsuite/gfortran.dg/internal_pack_4.f90
  f9123d0c7f33c1d2503169f8bb93bf4b  gcc/testsuite/gfortran.dg/internal_pack_5.f90
! c4c3f206ae2d2b14ad566a43d2280ebe  gcc/testsuite/gfortran.dg/internal_pack_6.f90
  7f74223b5a3e59ecb838f9850ae9a67d  gcc/testsuite/gfortran.dg/internal_pack_7.f90
! 0101f9affc666314d93b07f010ea58a9  gcc/testsuite/gfortran.dg/internal_pack_8.f90
  da742ef45d27d1dbabf578376b793b06  gcc/testsuite/gfortran.dg/internal_pack_9.f90
! 28bc7af6250fc44c5ebfce7cd4b2ecb6  gcc/testsuite/gfortran.dg/internal_readwrite_1.f90
! ad3b1f9d253882ed19ad222cdbf60155  gcc/testsuite/gfortran.dg/internal_readwrite_2.f90
! ce7facb3a77421389a1cd1b1fff75ecf  gcc/testsuite/gfortran.dg/internal_readwrite_3.f90
  e82fa551841033a84bee9fc477e55194  gcc/testsuite/gfortran.dg/internal_readwrite_4.f90
! 4ae3ee8af36214c0f4a1bbbf4e3e2823  gcc/testsuite/gfortran.dg/internal_references_1.f90
  d0c6db8313177997e1e7250226095e1d  gcc/testsuite/gfortran.dg/internal_references_2.f90
  1307f861e759364c3550be7b5ef0d46c  gcc/testsuite/gfortran.dg/internal_write_1.f90
  c7381103ca4fbef62989010c882fc4ce  gcc/testsuite/gfortran.dg/interop_params.f03
*************** e1470ece82d6d63b2a8eb05aebfedb92  gcc/te
*** 51415,51456 ****
  c20fd15a7b2e66c8ae01f70d95fb7779  gcc/testsuite/gfortran.dg/intrinsic_6.f90
  6dcc05c37c143cf798f6fa5b932f6c2d  gcc/testsuite/gfortran.dg/intrinsic_7.f90
  0bcb7123fd1f81435989d3aa7937dffe  gcc/testsuite/gfortran.dg/intrinsic_8.f90
! a8889ae36a75144adaaf39185b202def  gcc/testsuite/gfortran.dg/intrinsic_actual_1.f
! 7b6777f1bf3c12d38c270da75ab86b64  gcc/testsuite/gfortran.dg/intrinsic_actual_2.f90
  783e2c030e71ba529911e2569d83793f  gcc/testsuite/gfortran.dg/intrinsic_actual_3.f90
! cd5b04d5ce4b45ee81a1d2ec08379a1c  gcc/testsuite/gfortran.dg/intrinsic_actual_4.f90
  6a393f5eb99e093b9217f6ea5f8bb9d0  gcc/testsuite/gfortran.dg/intrinsic_argument_conformance_1.f90
! 667d8e0d4c06067ae838a35092841d3c  gcc/testsuite/gfortran.dg/intrinsic_argument_conformance_2.f90
! 8bcd3bf666cb5a7530dc935e55665845  gcc/testsuite/gfortran.dg/intrinsic_char_1.f90
  9d81b3b5bd29cc9db81b575cf5a6a4d5  gcc/testsuite/gfortran.dg/intrinsic_cmplx.f90
  158148c8114ef87230684d4013a74def  gcc/testsuite/gfortran.dg/intrinsic_external_1.f90
! cda7326b348930cf4a6bae1122ef6b01  gcc/testsuite/gfortran.dg/intrinsic_ifunction_1.f90
  111737206fac40b9679b3591d986e7c8  gcc/testsuite/gfortran.dg/intrinsic_ifunction_2.f90
  d45379bc70cd62e1018f6a89d6d3dc32  gcc/testsuite/gfortran.dg/intrinsic_intent_1.f03
! fa319bdd335ad2c9c2a50fa4627455cd  gcc/testsuite/gfortran.dg/intrinsic_intkinds_1.f90
! 90b3155638c5685439fb666f6912408c  gcc/testsuite/gfortran.dg/intrinsic_modulo_1.f90
  9ecac424cdaf840622239656867130dd  gcc/testsuite/gfortran.dg/intrinsic_numeric_arg.f
  d17db9f8ad66e660e8b9eb0683c41b29  gcc/testsuite/gfortran.dg/intrinsic_optional_char_arg_1.f90
! 09e46ae239bc513dd67f9fa8c76e39ad  gcc/testsuite/gfortran.dg/intrinsic_pack_1.f90
! fe865725bfa3323563a596d77f333f3f  gcc/testsuite/gfortran.dg/intrinsic_pack_2.f90
! f27ef090905c80404a023a7225a306d6  gcc/testsuite/gfortran.dg/intrinsic_pack_3.f90
  46c6f0a832541ad6ca2cbb32c01ab20d  gcc/testsuite/gfortran.dg/intrinsic_pack_4.f90
! d893e21be9605b4a95d4846656e49484  gcc/testsuite/gfortran.dg/intrinsic_pack_5.f90
! eae017e25fe53b50ef578428423c5340  gcc/testsuite/gfortran.dg/intrinsic_product_1.f90
  66b3fac50616e3319e3fd00fcd93d9be  gcc/testsuite/gfortran.dg/intrinsic_shadow_1.f03
  3e9903b1c6a155e12c646ca9ffb971fc  gcc/testsuite/gfortran.dg/intrinsic_shadow_2.f03
  3b9e5ff0a852722c4c102e31fb0d0ae7  gcc/testsuite/gfortran.dg/intrinsic_shadow_3.f03
  ef044c6d243e3e94ef014e454b67b06e  gcc/testsuite/gfortran.dg/intrinsic_shadow_4.f90
! 16a34bce67ede005a57adb2cd98f7249  gcc/testsuite/gfortran.dg/intrinsic_sign_1.f90
! 8b685da78a172e8df7b455c33b4eb87a  gcc/testsuite/gfortran.dg/intrinsic_sign_2.f90
  06b142ff77c28e5ad037aebd3cf8f0ea  gcc/testsuite/gfortran.dg/intrinsic_signal.f90
  ef88aa1dd533ebfe61a7c64077a41a2d  gcc/testsuite/gfortran.dg/intrinsic_size.f90
  88febfaea080d516b63b22735cd9e4cd  gcc/testsuite/gfortran.dg/intrinsic_size_2.f90
  700f48bef21273b976892c41285a7789  gcc/testsuite/gfortran.dg/intrinsic_size_3.f90
  68194e1c6f466545a4a8a5e4585e2131  gcc/testsuite/gfortran.dg/intrinsic_size_4.f90
! db48759b0d572bf666a42ce2084f1138  gcc/testsuite/gfortran.dg/intrinsic_spread_1.f90
! 22d694f02c4b4c2b0e990ef755be6293  gcc/testsuite/gfortran.dg/intrinsic_spread_2.f90
! d6250b74092c1688e1104bb85700075c  gcc/testsuite/gfortran.dg/intrinsic_spread_3.f90
  d02c24c3de13d6c070264b5d9e16604a  gcc/testsuite/gfortran.dg/intrinsic_std_1.f90
  c6a0801db8ca9ea3be256832f36128bf  gcc/testsuite/gfortran.dg/intrinsic_std_2.f90
  ee3fcfb399b308a51a832bfe3f7c2f2e  gcc/testsuite/gfortran.dg/intrinsic_std_3.f90
--- 55028,55071 ----
  c20fd15a7b2e66c8ae01f70d95fb7779  gcc/testsuite/gfortran.dg/intrinsic_6.f90
  6dcc05c37c143cf798f6fa5b932f6c2d  gcc/testsuite/gfortran.dg/intrinsic_7.f90
  0bcb7123fd1f81435989d3aa7937dffe  gcc/testsuite/gfortran.dg/intrinsic_8.f90
! 8de5b5da5c0b6404e976e90dd262d8ee  gcc/testsuite/gfortran.dg/intrinsic_actual_1.f
! 01e0ee064d6086b30abccca8fc43a7e3  gcc/testsuite/gfortran.dg/intrinsic_actual_2.f90
  783e2c030e71ba529911e2569d83793f  gcc/testsuite/gfortran.dg/intrinsic_actual_3.f90
! 8bbf9648b56711afd349b09f68edd79c  gcc/testsuite/gfortran.dg/intrinsic_actual_4.f90
  6a393f5eb99e093b9217f6ea5f8bb9d0  gcc/testsuite/gfortran.dg/intrinsic_argument_conformance_1.f90
! 73b6ad811e05c03fda87e9cec3f657cc  gcc/testsuite/gfortran.dg/intrinsic_argument_conformance_2.f90
! 11c58964c4de125227080f9765b50025  gcc/testsuite/gfortran.dg/intrinsic_bounds_1.f90
! 3325e9abeca0d5ee06fc452132f09032  gcc/testsuite/gfortran.dg/intrinsic_char_1.f90
  9d81b3b5bd29cc9db81b575cf5a6a4d5  gcc/testsuite/gfortran.dg/intrinsic_cmplx.f90
  158148c8114ef87230684d4013a74def  gcc/testsuite/gfortran.dg/intrinsic_external_1.f90
! 11cb8e3ab99e5942854e418fb88f45ba  gcc/testsuite/gfortran.dg/intrinsic_ifunction_1.f90
  111737206fac40b9679b3591d986e7c8  gcc/testsuite/gfortran.dg/intrinsic_ifunction_2.f90
  d45379bc70cd62e1018f6a89d6d3dc32  gcc/testsuite/gfortran.dg/intrinsic_intent_1.f03
! 8b5bd0422878d37b9f10e0d2ee5fb0c1  gcc/testsuite/gfortran.dg/intrinsic_intkinds_1.f90
! aa50d7a5f0ff52563a252ca47a93fc91  gcc/testsuite/gfortran.dg/intrinsic_modulo_1.f90
  9ecac424cdaf840622239656867130dd  gcc/testsuite/gfortran.dg/intrinsic_numeric_arg.f
  d17db9f8ad66e660e8b9eb0683c41b29  gcc/testsuite/gfortran.dg/intrinsic_optional_char_arg_1.f90
! b92c519562ca676683f6a8a310b7215f  gcc/testsuite/gfortran.dg/intrinsic_pack_1.f90
! f8c7e022d2cfc56df6b55d414dce657a  gcc/testsuite/gfortran.dg/intrinsic_pack_2.f90
! 02e405fa02b5f4208a935814170c08d1  gcc/testsuite/gfortran.dg/intrinsic_pack_3.f90
  46c6f0a832541ad6ca2cbb32c01ab20d  gcc/testsuite/gfortran.dg/intrinsic_pack_4.f90
! 68e85a91fdebd8186e987268b78d2812  gcc/testsuite/gfortran.dg/intrinsic_pack_5.f90
! 709c1a0557c6130d855211d157dc235b  gcc/testsuite/gfortran.dg/intrinsic_param_1.f90
! 83483a96e8562d98a9a895352987cf66  gcc/testsuite/gfortran.dg/intrinsic_product_1.f90
  66b3fac50616e3319e3fd00fcd93d9be  gcc/testsuite/gfortran.dg/intrinsic_shadow_1.f03
  3e9903b1c6a155e12c646ca9ffb971fc  gcc/testsuite/gfortran.dg/intrinsic_shadow_2.f03
  3b9e5ff0a852722c4c102e31fb0d0ae7  gcc/testsuite/gfortran.dg/intrinsic_shadow_3.f03
  ef044c6d243e3e94ef014e454b67b06e  gcc/testsuite/gfortran.dg/intrinsic_shadow_4.f90
! c7dca57276630bcb1006d3470e110234  gcc/testsuite/gfortran.dg/intrinsic_sign_1.f90
! 965a150057329cab600a5364f16d0447  gcc/testsuite/gfortran.dg/intrinsic_sign_2.f90
  06b142ff77c28e5ad037aebd3cf8f0ea  gcc/testsuite/gfortran.dg/intrinsic_signal.f90
  ef88aa1dd533ebfe61a7c64077a41a2d  gcc/testsuite/gfortran.dg/intrinsic_size.f90
  88febfaea080d516b63b22735cd9e4cd  gcc/testsuite/gfortran.dg/intrinsic_size_2.f90
  700f48bef21273b976892c41285a7789  gcc/testsuite/gfortran.dg/intrinsic_size_3.f90
  68194e1c6f466545a4a8a5e4585e2131  gcc/testsuite/gfortran.dg/intrinsic_size_4.f90
! add8e945b16afc5c09b91f1999f6081e  gcc/testsuite/gfortran.dg/intrinsic_spread_1.f90
! 1a528bff50a52ed3e856afb741ac283a  gcc/testsuite/gfortran.dg/intrinsic_spread_2.f90
! 245c275c411dc9a94467fa859f7bbfb1  gcc/testsuite/gfortran.dg/intrinsic_spread_3.f90
  d02c24c3de13d6c070264b5d9e16604a  gcc/testsuite/gfortran.dg/intrinsic_std_1.f90
  c6a0801db8ca9ea3be256832f36128bf  gcc/testsuite/gfortran.dg/intrinsic_std_2.f90
  ee3fcfb399b308a51a832bfe3f7c2f2e  gcc/testsuite/gfortran.dg/intrinsic_std_3.f90
*************** ee3fcfb399b308a51a832bfe3f7c2f2e  gcc/te
*** 51458,51468 ****
  d628bdf68bbcca4146799174c3b0cf36  gcc/testsuite/gfortran.dg/intrinsic_std_5.f03
  07c43d57b2ba8a48c265fb2a0189dbe8  gcc/testsuite/gfortran.dg/intrinsic_std_6.f90
  0baca3fe07bcbb641d530021b071c1e7  gcc/testsuite/gfortran.dg/intrinsic_subroutine.f90
! d56b13f333814fa8102f7a3db74c4999  gcc/testsuite/gfortran.dg/intrinsic_unpack_1.f90
! 361e8a639aff1ed18ca7db71457abb3b  gcc/testsuite/gfortran.dg/intrinsic_unpack_2.f90
! 00a52d54b6fe56657affeb61be57b92c  gcc/testsuite/gfortran.dg/intrinsic_unpack_3.f90
! 3bbb1901584e77f5fff0a4ba7e9a9933  gcc/testsuite/gfortran.dg/intrinsic_verify_1.f90
! 8bbff36388905fbac50aa66d9d133939  gcc/testsuite/gfortran.dg/intrinsics_kind_argument_1.f90
  72a40c8eac8721e99b2a127f08dbe4d0  gcc/testsuite/gfortran.dg/invalid_contains_1.f90
  8407aba68173d22bf6409ffedcb7536d  gcc/testsuite/gfortran.dg/invalid_contains_2.f90
  9cf20b378a83e3ec18b3c34171141908  gcc/testsuite/gfortran.dg/invalid_interface_assignment.f90
--- 55073,55083 ----
  d628bdf68bbcca4146799174c3b0cf36  gcc/testsuite/gfortran.dg/intrinsic_std_5.f03
  07c43d57b2ba8a48c265fb2a0189dbe8  gcc/testsuite/gfortran.dg/intrinsic_std_6.f90
  0baca3fe07bcbb641d530021b071c1e7  gcc/testsuite/gfortran.dg/intrinsic_subroutine.f90
! 273eacff4941cc32b9dd73e4660b3f6f  gcc/testsuite/gfortran.dg/intrinsic_unpack_1.f90
! 520aa974fafe4182537adc009656bdf5  gcc/testsuite/gfortran.dg/intrinsic_unpack_2.f90
! a52595f7f657fd8302c7beb55229b0c4  gcc/testsuite/gfortran.dg/intrinsic_unpack_3.f90
! fd3d955b5efba2c2a2e976a2155ede00  gcc/testsuite/gfortran.dg/intrinsic_verify_1.f90
! c00773edfc881b17f13e26aebff995c8  gcc/testsuite/gfortran.dg/intrinsics_kind_argument_1.f90
  72a40c8eac8721e99b2a127f08dbe4d0  gcc/testsuite/gfortran.dg/invalid_contains_1.f90
  8407aba68173d22bf6409ffedcb7536d  gcc/testsuite/gfortran.dg/invalid_contains_2.f90
  9cf20b378a83e3ec18b3c34171141908  gcc/testsuite/gfortran.dg/invalid_interface_assignment.f90
*************** c98833fbd70a07ed455392f1eee2388f  gcc/te
*** 51481,51508 ****
  8c0a11e945a1452aa18e58cb9f1f52b3  gcc/testsuite/gfortran.dg/io_constraints_7.f03
  9c1d34cd469b9d90c521a05cc5838e83  gcc/testsuite/gfortran.dg/io_constraints_8.f90
  a91ddb7fe4097805065a6b3d245d720f  gcc/testsuite/gfortran.dg/io_constraints_9.f90
! 7bd85cc772d620f49f9e56f0122980d8  gcc/testsuite/gfortran.dg/io_err_1.f90
  b970e12e9b81e2fa5708fa8924a00c7d  gcc/testsuite/gfortran.dg/io_invalid_1.f90
! 902305e817f46f9a6ee2248d34dca9e8  gcc/testsuite/gfortran.dg/io_real_boz.f90
! 34aba1f4adf8c7eef45c0a3c4fe97094  gcc/testsuite/gfortran.dg/io_real_boz2.f90
  c597edafbb60adae6b17608a301848e5  gcc/testsuite/gfortran.dg/io_real_boz_3.f90
  882bac7cd94f33632644120f8cd9b231  gcc/testsuite/gfortran.dg/io_real_boz_4.f90
  9977568d6f43d7f5a89d2a5981c36781  gcc/testsuite/gfortran.dg/io_real_boz_5.f90
! cc34944f35fd296fff8397c20df05007  gcc/testsuite/gfortran.dg/iomsg_1.f90
  b6831acf4a0c71cd7caa2d62af0a56a7  gcc/testsuite/gfortran.dg/iomsg_2.f90
! b7304d50b4a45d453cab3d197a166686  gcc/testsuite/gfortran.dg/iostat_1.f90
! d07dc9bd1fcd7cfa5ca75d0babd7b523  gcc/testsuite/gfortran.dg/iostat_2.f90
  1ab416b16eeeaf5612e3c0656b73c4d5  gcc/testsuite/gfortran.dg/iostat_3.f90
! 8cf0c36c12cf62958bc2e81c96ab091b  gcc/testsuite/gfortran.dg/iostat_4.f90
  ae3f6e29ad3108163b5c5c6a5f70ef7c  gcc/testsuite/gfortran.dg/ipcp-array-1.f90
! ab62a61f1963bec60f5c01534f7f48ce  gcc/testsuite/gfortran.dg/is_iostat_end_eor_1.f90
  ca491b51342a862f4f525db35073fe93  gcc/testsuite/gfortran.dg/is_iostat_end_eor_2.f90
! 401f6fb5eb7e23838be93598139f9063  gcc/testsuite/gfortran.dg/ishft_1.f90
! bc64c3b2288ea1b545e16b5880fcb81f  gcc/testsuite/gfortran.dg/ishft_2.f90
  a704846ad082c08266e269b9c6a39a3d  gcc/testsuite/gfortran.dg/ishft_3.f90
! 14b37c657946eee136c78b6358592f90  gcc/testsuite/gfortran.dg/ishft_4.f90
! 946c060c19d5240b0d4eb6ffe75413bf  gcc/testsuite/gfortran.dg/isnan_1.f90
! ebda18b926926080c88c923eb23ad7e0  gcc/testsuite/gfortran.dg/isnan_2.f90
  339b2ac7960a6a700c8bc790f867edbb  gcc/testsuite/gfortran.dg/iso_c_binding_c_loc_char_1.f03
  80c2bb0f7a0a00732842956aae4eff11  gcc/testsuite/gfortran.dg/iso_c_binding_class.f03
  0a1c6409eb75f8da4ebbd4cc2bf56887  gcc/testsuite/gfortran.dg/iso_c_binding_compiler_1.f90
--- 55096,55123 ----
  8c0a11e945a1452aa18e58cb9f1f52b3  gcc/testsuite/gfortran.dg/io_constraints_7.f03
  9c1d34cd469b9d90c521a05cc5838e83  gcc/testsuite/gfortran.dg/io_constraints_8.f90
  a91ddb7fe4097805065a6b3d245d720f  gcc/testsuite/gfortran.dg/io_constraints_9.f90
! ac78b2fa12300d2c84f3f0ecc1b99410  gcc/testsuite/gfortran.dg/io_err_1.f90
  b970e12e9b81e2fa5708fa8924a00c7d  gcc/testsuite/gfortran.dg/io_invalid_1.f90
! 6041a5d78e021c640d90d9fbc64c8e58  gcc/testsuite/gfortran.dg/io_real_boz.f90
! 83a6c4770ae3630cad40886c8691dd71  gcc/testsuite/gfortran.dg/io_real_boz2.f90
  c597edafbb60adae6b17608a301848e5  gcc/testsuite/gfortran.dg/io_real_boz_3.f90
  882bac7cd94f33632644120f8cd9b231  gcc/testsuite/gfortran.dg/io_real_boz_4.f90
  9977568d6f43d7f5a89d2a5981c36781  gcc/testsuite/gfortran.dg/io_real_boz_5.f90
! d18c42f2770444ddfc1deed5fd34e2da  gcc/testsuite/gfortran.dg/iomsg_1.f90
  b6831acf4a0c71cd7caa2d62af0a56a7  gcc/testsuite/gfortran.dg/iomsg_2.f90
! 52b10f101bd16f715423bd8065f4c348  gcc/testsuite/gfortran.dg/iostat_1.f90
! 40a3bf3d449424b5f78272828b07837e  gcc/testsuite/gfortran.dg/iostat_2.f90
  1ab416b16eeeaf5612e3c0656b73c4d5  gcc/testsuite/gfortran.dg/iostat_3.f90
! 04a2d725b724b6a943b8e587f2d0d579  gcc/testsuite/gfortran.dg/iostat_4.f90
  ae3f6e29ad3108163b5c5c6a5f70ef7c  gcc/testsuite/gfortran.dg/ipcp-array-1.f90
! 765cb2ca72a98a43c69ea99a61aa0a59  gcc/testsuite/gfortran.dg/is_iostat_end_eor_1.f90
  ca491b51342a862f4f525db35073fe93  gcc/testsuite/gfortran.dg/is_iostat_end_eor_2.f90
! 7490dabda4b7b75984bc8aee6ffaa00c  gcc/testsuite/gfortran.dg/ishft_1.f90
! 0a74286818476489377027f29708812a  gcc/testsuite/gfortran.dg/ishft_2.f90
  a704846ad082c08266e269b9c6a39a3d  gcc/testsuite/gfortran.dg/ishft_3.f90
! 13f9f64101cfcb8d1baba18ecd855ce4  gcc/testsuite/gfortran.dg/ishft_4.f90
! 5914f27e4ff5ed346cc321cb31df65ac  gcc/testsuite/gfortran.dg/isnan_1.f90
! a4aa11b84941a336d0201e075c1c6b99  gcc/testsuite/gfortran.dg/isnan_2.f90
  339b2ac7960a6a700c8bc790f867edbb  gcc/testsuite/gfortran.dg/iso_c_binding_c_loc_char_1.f03
  80c2bb0f7a0a00732842956aae4eff11  gcc/testsuite/gfortran.dg/iso_c_binding_class.f03
  0a1c6409eb75f8da4ebbd4cc2bf56887  gcc/testsuite/gfortran.dg/iso_c_binding_compiler_1.f90
*************** faf94f259228f259201e2bdc538676b8  gcc/te
*** 51513,51532 ****
  0b21fc0d3cf1f094f5307091505f2a74  gcc/testsuite/gfortran.dg/iso_c_binding_only.f03
  2c91847b88a36ec0037dc22e6c8ccd3f  gcc/testsuite/gfortran.dg/iso_c_binding_param_1.f90
  e5dfa7c2f8ba90de7a4892a9bc45ed42  gcc/testsuite/gfortran.dg/iso_c_binding_param_2.f90
! 760e6ad4d02ee083f93a6fef6841685f  gcc/testsuite/gfortran.dg/iso_c_binding_rename_1.f03
  5becf7d51467525a12f23455265acd40  gcc/testsuite/gfortran.dg/iso_c_binding_rename_1_driver.c
! b0720fef5d90ee41a7a87b1e69884967  gcc/testsuite/gfortran.dg/iso_c_binding_rename_2.f03
  67e1b276903384d7446a43925fe3647b  gcc/testsuite/gfortran.dg/iso_c_binding_rename_2_driver.c
  2b43cc5962b2c3f3545ac6cc53f78e0d  gcc/testsuite/gfortran.dg/iso_c_binding_rename_3.f90
! 7300589bb405bf8ddd2273dac51aa354  gcc/testsuite/gfortran.dg/iso_fortran_env_1.f90
  97f70359a4ebf271cf65c225b7542c8a  gcc/testsuite/gfortran.dg/iso_fortran_env_2.f90
! 772885d141494d4fd7f3a3c3b812d090  gcc/testsuite/gfortran.dg/iso_fortran_env_3.f90
  240e024c618e7b6016659afe3dc5cb44  gcc/testsuite/gfortran.dg/iso_fortran_env_4.f90
! 04340e47d94de474404d54b351edfe95  gcc/testsuite/gfortran.dg/iso_fortran_env_5.f90
! ccd5e95e4ab962bacac3b538eaf89624  gcc/testsuite/gfortran.dg/iso_fortran_env_6.f90
  9d12cbb1450af9531102644949a6f708  gcc/testsuite/gfortran.dg/iso_fortran_env_7.f90
! 32ef71bccd3e52446a80c907e6c9047f  gcc/testsuite/gfortran.dg/itime_idate_1.f
! cfaec05b1fe71f817e6d16076f6eb53d  gcc/testsuite/gfortran.dg/itime_idate_2.f
  f592eed5ce30fb678bf0e5ab1542fb13  gcc/testsuite/gfortran.dg/keyword_symbol_1.f90
  38bf3003c684ccd492954aad93babb73  gcc/testsuite/gfortran.dg/kind_1.f90
  a4f70a7a5addff1f8587ac41d15b405d  gcc/testsuite/gfortran.dg/kind_tests_2.f03
--- 55128,55147 ----
  0b21fc0d3cf1f094f5307091505f2a74  gcc/testsuite/gfortran.dg/iso_c_binding_only.f03
  2c91847b88a36ec0037dc22e6c8ccd3f  gcc/testsuite/gfortran.dg/iso_c_binding_param_1.f90
  e5dfa7c2f8ba90de7a4892a9bc45ed42  gcc/testsuite/gfortran.dg/iso_c_binding_param_2.f90
! 7896b3934cddd8cadc8ede28d8b589e4  gcc/testsuite/gfortran.dg/iso_c_binding_rename_1.f03
  5becf7d51467525a12f23455265acd40  gcc/testsuite/gfortran.dg/iso_c_binding_rename_1_driver.c
! 0c937dd1e8fa965a27f36d585f135251  gcc/testsuite/gfortran.dg/iso_c_binding_rename_2.f03
  67e1b276903384d7446a43925fe3647b  gcc/testsuite/gfortran.dg/iso_c_binding_rename_2_driver.c
  2b43cc5962b2c3f3545ac6cc53f78e0d  gcc/testsuite/gfortran.dg/iso_c_binding_rename_3.f90
! 84a50740ea41615ea1822c929d822f56  gcc/testsuite/gfortran.dg/iso_fortran_env_1.f90
  97f70359a4ebf271cf65c225b7542c8a  gcc/testsuite/gfortran.dg/iso_fortran_env_2.f90
! dcf43aa63a8733ded28e4e330d5c91a5  gcc/testsuite/gfortran.dg/iso_fortran_env_3.f90
  240e024c618e7b6016659afe3dc5cb44  gcc/testsuite/gfortran.dg/iso_fortran_env_4.f90
! b775a0b6d45fd825c612e3efaf97f10e  gcc/testsuite/gfortran.dg/iso_fortran_env_5.f90
! 22b7589b416ec44c108aa0fc63791146  gcc/testsuite/gfortran.dg/iso_fortran_env_6.f90
  9d12cbb1450af9531102644949a6f708  gcc/testsuite/gfortran.dg/iso_fortran_env_7.f90
! f616cfd0aadbda269d067f4d7445d5c4  gcc/testsuite/gfortran.dg/itime_idate_1.f
! b3d3e005230c0680a7f9376b302a348b  gcc/testsuite/gfortran.dg/itime_idate_2.f
  f592eed5ce30fb678bf0e5ab1542fb13  gcc/testsuite/gfortran.dg/keyword_symbol_1.f90
  38bf3003c684ccd492954aad93babb73  gcc/testsuite/gfortran.dg/kind_1.f90
  a4f70a7a5addff1f8587ac41d15b405d  gcc/testsuite/gfortran.dg/kind_tests_2.f03
*************** c6039f0e145d8f76bd362c2053b76b3a  gcc/te
*** 51536,51557 ****
  42f3b3ba2d4378acfb69d1d5a708d707  gcc/testsuite/gfortran.dg/label_2.f90
  5c21638a23021ec31be29f64895144f6  gcc/testsuite/gfortran.dg/label_4.f90
  ae892a009bc504ad4f8820dc7d572645  gcc/testsuite/gfortran.dg/label_5.f90
! 60297964f612376548102cc11e03a8f8  gcc/testsuite/gfortran.dg/large_integer_kind_1.f90
! b016fed1faa74c59125643e97bb95a1b  gcc/testsuite/gfortran.dg/large_integer_kind_2.f90
! ff2574558b65657e30d8f83a57af1064  gcc/testsuite/gfortran.dg/large_real_kind_1.f90
! 1202a3ddb2daeb82b5775fd4799a2a02  gcc/testsuite/gfortran.dg/large_real_kind_2.F90
! 283f7fcb1fc8d39b001642a5f0830f8f  gcc/testsuite/gfortran.dg/large_real_kind_3.F90
! b58a5bf7e2e2de57f05b2709f1f8edb0  gcc/testsuite/gfortran.dg/large_real_kind_form_io_1.f90
! 885115665960c9302227ab70cf37d11f  gcc/testsuite/gfortran.dg/large_real_kind_form_io_2.f90
! 2ed2d7f29c5120f1709a6f40f2592c15  gcc/testsuite/gfortran.dg/large_unit_1.f90
! 459a3065851ea2ba930c1b6fa57a245a  gcc/testsuite/gfortran.dg/large_unit_2.f90
! 4f674de130200a007cf1ee068838e622  gcc/testsuite/gfortran.dg/largeequiv_1.f90
  b72340715ddf2464ef8a1730408f7055  gcc/testsuite/gfortran.dg/ldist-1.f90
  6d57ece984402c58287d372c8f34bedf  gcc/testsuite/gfortran.dg/ldist-pr43023.f90
  e4885845bf10e9e5ffc3dd22467dfdbe  gcc/testsuite/gfortran.dg/ldist-pr45199.f
! 3060db0d25b846c4f6d281ee576490ab  gcc/testsuite/gfortran.dg/leadz_trailz_1.f90
! f07067a63274ac12158fd539dfb3b2b6  gcc/testsuite/gfortran.dg/leadz_trailz_2.f90
! 04ca8338448854fb0364bf37f28c9b5d  gcc/testsuite/gfortran.dg/leadz_trailz_3.f90
  603828b585296b52648297f368e12a8a  gcc/testsuite/gfortran.dg/line_length_1.f
  3d88660e061311dc6929921b7ea8a0bf  gcc/testsuite/gfortran.dg/line_length_10.f90
  b9215c113216ae2e0acfffc4a35eb451  gcc/testsuite/gfortran.dg/line_length_11.f90
--- 55151,55173 ----
  42f3b3ba2d4378acfb69d1d5a708d707  gcc/testsuite/gfortran.dg/label_2.f90
  5c21638a23021ec31be29f64895144f6  gcc/testsuite/gfortran.dg/label_4.f90
  ae892a009bc504ad4f8820dc7d572645  gcc/testsuite/gfortran.dg/label_5.f90
! f852b9f91d30e73316d460936e5e489e  gcc/testsuite/gfortran.dg/large_integer_kind_1.f90
! afd58315dfe7d7b19dc94f267a1616e1  gcc/testsuite/gfortran.dg/large_integer_kind_2.f90
! 2a246abf7b33ea8657b5d40004fcbab9  gcc/testsuite/gfortran.dg/large_real_kind_1.f90
! 472d4b019951b5b3f0dfd61561d368a2  gcc/testsuite/gfortran.dg/large_real_kind_2.F90
! ba3e6621bef4e4727431ce4f33af5ac5  gcc/testsuite/gfortran.dg/large_real_kind_3.F90
! 490695b7e340671bc076ba4bb8c8fac9  gcc/testsuite/gfortran.dg/large_real_kind_form_io_1.f90
! 95e371d49ebbc2c94e5764f7f602d724  gcc/testsuite/gfortran.dg/large_real_kind_form_io_2.f90
! 26ce4d30e6d3856514b4d232c2b1bad0  gcc/testsuite/gfortran.dg/large_recl.f90
! 1c63b1ba8a1f0b2a204fbf2d4bb86e5c  gcc/testsuite/gfortran.dg/large_unit_1.f90
! e8f52cb0b7a420ed4af8a32682172df1  gcc/testsuite/gfortran.dg/large_unit_2.f90
! 3e9cd5177649883cf3ab9efc8b826d76  gcc/testsuite/gfortran.dg/largeequiv_1.f90
  b72340715ddf2464ef8a1730408f7055  gcc/testsuite/gfortran.dg/ldist-1.f90
  6d57ece984402c58287d372c8f34bedf  gcc/testsuite/gfortran.dg/ldist-pr43023.f90
  e4885845bf10e9e5ffc3dd22467dfdbe  gcc/testsuite/gfortran.dg/ldist-pr45199.f
! 3ea87bc1a1467cf1c31f4102e9687a8b  gcc/testsuite/gfortran.dg/leadz_trailz_1.f90
! e1a74d6b2c4042f286e1438d2a3b50bc  gcc/testsuite/gfortran.dg/leadz_trailz_2.f90
! 3329f56791c14faaef6977e445b9d78d  gcc/testsuite/gfortran.dg/leadz_trailz_3.f90
  603828b585296b52648297f368e12a8a  gcc/testsuite/gfortran.dg/line_length_1.f
  3d88660e061311dc6929921b7ea8a0bf  gcc/testsuite/gfortran.dg/line_length_10.f90
  b9215c113216ae2e0acfffc4a35eb451  gcc/testsuite/gfortran.dg/line_length_11.f90
*************** d57fac299b3332771a75171d9ddb0a97  gcc/te
*** 51564,51605 ****
  19902917f56cfb4d365b86adc756ebf4  gcc/testsuite/gfortran.dg/line_length_8.f90
  a861d94317cc250d3d5ada1171fa6a73  gcc/testsuite/gfortran.dg/line_length_9.f90
  fc437ac99c80ded40e13df8066e49a91  gcc/testsuite/gfortran.dg/linked_list_1.f90
! 6b10115fba6bad4e5a0a58ba881f0ab8  gcc/testsuite/gfortran.dg/list_read_1.f90
! 16b03bca05a6acc43f24be44e1f2ff05  gcc/testsuite/gfortran.dg/list_read_10.f90
! e76e21ee6abb6a701aa6c131c97d9312  gcc/testsuite/gfortran.dg/list_read_11.f90
! f14c190f1eb335fd350bb4cf589f69c0  gcc/testsuite/gfortran.dg/list_read_12.f90
! a9116f1431f2fcd98ac937aaf225727c  gcc/testsuite/gfortran.dg/list_read_13.f
! 744f994dd0f1ca1f417c58a92a09d12d  gcc/testsuite/gfortran.dg/list_read_14.f90
! 67997f845ffceb239257b26970956c2d  gcc/testsuite/gfortran.dg/list_read_2.f90
! 799ffeafd700d24bd3e365a8addcfa10  gcc/testsuite/gfortran.dg/list_read_3.f90
! 36e928b3a5b9a5d89ecebae1c130be22  gcc/testsuite/gfortran.dg/list_read_4.f90
! 6865e579c8e5e1e588c392353fab593d  gcc/testsuite/gfortran.dg/list_read_5.f90
! 11d4944ddff821b42094c5fdd2c134a6  gcc/testsuite/gfortran.dg/list_read_6.f90
! de18c211eef5753b3a23d53164bfbde5  gcc/testsuite/gfortran.dg/list_read_7.f90
! d1c618954a6b3640d16667de9c60db01  gcc/testsuite/gfortran.dg/list_read_8.f90
! 4312437181614f1edf78f9446ac19521  gcc/testsuite/gfortran.dg/list_read_9.f90
! c30d93cd56b74ca3bca7e17183c6fb62  gcc/testsuite/gfortran.dg/literal_character_constant_1.inc
  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
  216d406d940fe0e645023a615aa3efa6  gcc/testsuite/gfortran.dg/loc_1.f90
! 204b66801e37e06af75fc118953cb94d  gcc/testsuite/gfortran.dg/loc_2.f90
! aca3b48364bb26fa52ca166e78970b8d  gcc/testsuite/gfortran.dg/logical_1.f90
  eaf85485d1421620a4a3895b334ef211  gcc/testsuite/gfortran.dg/logical_2.f90
  e3c9788d90071688e2490dada0714d02  gcc/testsuite/gfortran.dg/logical_3.f90
  621fd5ac482c79d82a2dd2a2467ad138  gcc/testsuite/gfortran.dg/logical_comp.f90
  d790ddb406b38b67d83bc92f76cdf315  gcc/testsuite/gfortran.dg/logical_data_1.f90
! 69d608435fd45e0b4560c3d20903ac1c  gcc/testsuite/gfortran.dg/logical_dot_product.f90
! 9566e00c53c33ebc65b5974c25819fa4  gcc/testsuite/gfortran.dg/logical_temp_io.f90
! de850b0782993ce4912c307b1e5acaa6  gcc/testsuite/gfortran.dg/logical_temp_io_kind8.f90
  2cde76e6e4f3175cf21675c3a4e3dcc4  gcc/testsuite/gfortran.dg/logint_1.f
  e8369cf8500479fa8592d6ad221df22b  gcc/testsuite/gfortran.dg/logint_2.f
  cc537c18cadc7f751e2b61f5197b80e7  gcc/testsuite/gfortran.dg/logint_3.f
  bceaa8a4fe443dfa65fe359c0d6dc0fe  gcc/testsuite/gfortran.dg/longline.f
  e389abe51628b7a64b697ca8b137280e  gcc/testsuite/gfortran.dg/lrshift_1.c
! 726ec797a297adbf1b1f9bb404d5f316  gcc/testsuite/gfortran.dg/lrshift_1.f90
! 20d61dc90a622b3e2e98558679419c3b  gcc/testsuite/gfortran.dg/ltime_gmtime_1.f90
! 84b6592d83994d239c51c99de0a1ae19  gcc/testsuite/gfortran.dg/ltime_gmtime_2.f90
  a50aae7296164245305033ac9ad76f9e  gcc/testsuite/gfortran.dg/lto/20091015-1_0.f
  cce764967a53580b4da5528603b77e0c  gcc/testsuite/gfortran.dg/lto/20091015-1_1.f
  b15d12ceedaec19ba0c3dccda0ff8ff3  gcc/testsuite/gfortran.dg/lto/20091015-1_2.f
--- 55180,55223 ----
  19902917f56cfb4d365b86adc756ebf4  gcc/testsuite/gfortran.dg/line_length_8.f90
  a861d94317cc250d3d5ada1171fa6a73  gcc/testsuite/gfortran.dg/line_length_9.f90
  fc437ac99c80ded40e13df8066e49a91  gcc/testsuite/gfortran.dg/linked_list_1.f90
! f771dbe49f2c11d202f285f81bd5a16a  gcc/testsuite/gfortran.dg/list_read_1.f90
! 9f5e3efecd2771beea6ad9dd7c847aa5  gcc/testsuite/gfortran.dg/list_read_10.f90
! 64a135e5b282d7415e9fc23af64a2bd4  gcc/testsuite/gfortran.dg/list_read_11.f90
! f93d49462fc48a45196810416cfb7bcb  gcc/testsuite/gfortran.dg/list_read_12.f90
! 05fa73f4570d36e52b6f25a9f8da0d64  gcc/testsuite/gfortran.dg/list_read_13.f
! f8e7f8df4d20f0e442060a59fef7ec32  gcc/testsuite/gfortran.dg/list_read_14.f90
! cdfd7badb1561ed527ca2e8497d0c422  gcc/testsuite/gfortran.dg/list_read_2.f90
! b240dde759e6dde41575b9223141e41f  gcc/testsuite/gfortran.dg/list_read_3.f90
! 2aca57aba497e73811d524dce52f9ed1  gcc/testsuite/gfortran.dg/list_read_4.f90
! 4db5f480ff537f1087eecae398edc294  gcc/testsuite/gfortran.dg/list_read_5.f90
! 44a8206ff94c08eb144cda0a47518bba  gcc/testsuite/gfortran.dg/list_read_6.f90
! f95e2e6d05e807613ccc50aa16eabca6  gcc/testsuite/gfortran.dg/list_read_7.f90
! b7f4de6c1abff581a48a9587b5969002  gcc/testsuite/gfortran.dg/list_read_8.f90
! ef11b4dad49dd1f386efcc34acc584dc  gcc/testsuite/gfortran.dg/list_read_9.f90
! 6c696b054824254906ec2d4cba8d89cf  gcc/testsuite/gfortran.dg/literal_character_constant_1.inc
  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
  216d406d940fe0e645023a615aa3efa6  gcc/testsuite/gfortran.dg/loc_1.f90
! fe9cce4d0817f89d4e60de501adfaccb  gcc/testsuite/gfortran.dg/loc_2.f90
! 9db6334e52b121d0e2608f5e942e19d4  gcc/testsuite/gfortran.dg/logical_1.f90
  eaf85485d1421620a4a3895b334ef211  gcc/testsuite/gfortran.dg/logical_2.f90
  e3c9788d90071688e2490dada0714d02  gcc/testsuite/gfortran.dg/logical_3.f90
+ 50e095d12df1b2426732dfdb5b2a0512  gcc/testsuite/gfortran.dg/logical_assignment_1.f90
  621fd5ac482c79d82a2dd2a2467ad138  gcc/testsuite/gfortran.dg/logical_comp.f90
  d790ddb406b38b67d83bc92f76cdf315  gcc/testsuite/gfortran.dg/logical_data_1.f90
! e2f3f19b83060815c53b212000c73b90  gcc/testsuite/gfortran.dg/logical_dot_product.f90
! a6d9cfceb231c2cf1ded28bdcd94313b  gcc/testsuite/gfortran.dg/logical_temp_io.f90
! 553c4ee37d5fee12e3d387355bbd176b  gcc/testsuite/gfortran.dg/logical_temp_io_kind8.f90
  2cde76e6e4f3175cf21675c3a4e3dcc4  gcc/testsuite/gfortran.dg/logint_1.f
  e8369cf8500479fa8592d6ad221df22b  gcc/testsuite/gfortran.dg/logint_2.f
  cc537c18cadc7f751e2b61f5197b80e7  gcc/testsuite/gfortran.dg/logint_3.f
  bceaa8a4fe443dfa65fe359c0d6dc0fe  gcc/testsuite/gfortran.dg/longline.f
+ 6c3c532ad4024941faec1e9a3d703f48  gcc/testsuite/gfortran.dg/loop_interchange_1.f90
  e389abe51628b7a64b697ca8b137280e  gcc/testsuite/gfortran.dg/lrshift_1.c
! b44d8b591ff1f6d52bb845f824c37dd5  gcc/testsuite/gfortran.dg/lrshift_1.f90
! 35898239313276fce18ae50e056f79b2  gcc/testsuite/gfortran.dg/ltime_gmtime_1.f90
! f94023bf826e84f4f4acf3bd656067b0  gcc/testsuite/gfortran.dg/ltime_gmtime_2.f90
  a50aae7296164245305033ac9ad76f9e  gcc/testsuite/gfortran.dg/lto/20091015-1_0.f
  cce764967a53580b4da5528603b77e0c  gcc/testsuite/gfortran.dg/lto/20091015-1_1.f
  b15d12ceedaec19ba0c3dccda0ff8ff3  gcc/testsuite/gfortran.dg/lto/20091015-1_2.f
*************** eee4e4b1f7234702e72fe778c0d2621b  gcc/te
*** 51625,51634 ****
  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
! ee85d9d2bee3421eee59971519420be8  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
! 23d0ea3a6807d973fa8ed07944af048c  gcc/testsuite/gfortran.dg/lto/pr40725_0.f03
  da58478f6e2cb8ee5d73c5d4cb9b5900  gcc/testsuite/gfortran.dg/lto/pr40725_1.c
  71bed6789298e43c9b472da87d1b4342  gcc/testsuite/gfortran.dg/lto/pr41069_0.f90
  500c35d3771443884287458985df94cf  gcc/testsuite/gfortran.dg/lto/pr41069_1.f90
--- 55243,55252 ----
  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
! 4aab0c950bf11d559ca554117dc05862  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
  da58478f6e2cb8ee5d73c5d4cb9b5900  gcc/testsuite/gfortran.dg/lto/pr40725_1.c
  71bed6789298e43c9b472da87d1b4342  gcc/testsuite/gfortran.dg/lto/pr41069_0.f90
  500c35d3771443884287458985df94cf  gcc/testsuite/gfortran.dg/lto/pr41069_1.f90
*************** ffadc206334cb6e77ecfd2b941387169  gcc/te
*** 51636,51642 ****
  cda7b072052c9e3567331e89b9f7e06c  gcc/testsuite/gfortran.dg/lto/pr41521_0.f90
  31dcbfb8af43389bdf47d0784ea2a90c  gcc/testsuite/gfortran.dg/lto/pr41521_1.f90
  05df043ed0329a16044a5389083dff08  gcc/testsuite/gfortran.dg/lto/pr41576_0.f90
! 01ca532478775b4bbd50738987116ecf  gcc/testsuite/gfortran.dg/lto/pr41576_1.f90
  bfa9a267882a7026883895af0a0932ce  gcc/testsuite/gfortran.dg/lto/pr41764_0.f
  368998a14ba05a03985e4d5b2710b26e  gcc/testsuite/gfortran.dg/lto/pr45586-2_0.f90
  e93fee21d60c4d93e4b8b8ee14b4cd29  gcc/testsuite/gfortran.dg/lto/pr45586_0.f90
--- 55254,55260 ----
  cda7b072052c9e3567331e89b9f7e06c  gcc/testsuite/gfortran.dg/lto/pr41521_0.f90
  31dcbfb8af43389bdf47d0784ea2a90c  gcc/testsuite/gfortran.dg/lto/pr41521_1.f90
  05df043ed0329a16044a5389083dff08  gcc/testsuite/gfortran.dg/lto/pr41576_0.f90
! 5f95c6eace3a32835b5ad8cdc5f491c3  gcc/testsuite/gfortran.dg/lto/pr41576_1.f90
  bfa9a267882a7026883895af0a0932ce  gcc/testsuite/gfortran.dg/lto/pr41764_0.f
  368998a14ba05a03985e4d5b2710b26e  gcc/testsuite/gfortran.dg/lto/pr45586-2_0.f90
  e93fee21d60c4d93e4b8b8ee14b4cd29  gcc/testsuite/gfortran.dg/lto/pr45586_0.f90
*************** f388840da10adfc224269f398590a10a  gcc/te
*** 51648,51693 ****
  a9d014274eb56078098dae3d4f9a8fe7  gcc/testsuite/gfortran.dg/lto/pr60635_0.f90
  a8ba679c6307cb7e937915e91616c861  gcc/testsuite/gfortran.dg/lto/pr60635_1.c
  f4d0f3a9eea039a45f8f40d5a4d52efb  gcc/testsuite/gfortran.dg/lto/pr79108_0.f90
! 90434c89063bd3bdc5d9a8c4eee70ada  gcc/testsuite/gfortran.dg/make_unit.f90
  b49070ec831f64c85f249772acd9a59f  gcc/testsuite/gfortran.dg/malloc_free_1.f90
! fac981decf60a31ee9a61ded4eff6076  gcc/testsuite/gfortran.dg/mapping_1.f90
! 47140f86bfe3a4024f59f60ac0ead444  gcc/testsuite/gfortran.dg/mapping_2.f90
! 29bcfcf1c74a523f0b61bcb3c96fc439  gcc/testsuite/gfortran.dg/mapping_3.f90
! 140967fc7fd44936c43646c35127c2d5  gcc/testsuite/gfortran.dg/masklr_1.F90
! 3634c451c65d1d4d29394e48107baa74  gcc/testsuite/gfortran.dg/masklr_2.F90
! 171ff4e94d0631976b7afcc00a2dd130  gcc/testsuite/gfortran.dg/matmul_1.f90
! a8e887e483dcb669e4ab67ac3a395984  gcc/testsuite/gfortran.dg/matmul_10.f90
  f578301d06fba98fdd392618b3c322f6  gcc/testsuite/gfortran.dg/matmul_11.f90
! 79fefa6fdd4bcb44095e689d1acb5333  gcc/testsuite/gfortran.dg/matmul_12.f90
  c9a22258dbea705376b48eb2fbe99636  gcc/testsuite/gfortran.dg/matmul_13.f90
  e34a90228a66e89a0c0a370802385705  gcc/testsuite/gfortran.dg/matmul_14.f90
! 851305f3320a34134ae8fcb9fab1819b  gcc/testsuite/gfortran.dg/matmul_16.f90
! c70b8c35324518269d3ef8bda8b25b6a  gcc/testsuite/gfortran.dg/matmul_17.f90
! b58f69ad9bb6c867d81cede0c0e07f7f  gcc/testsuite/gfortran.dg/matmul_18.f90
! dbdf35443d83e42784b2ce5428caa176  gcc/testsuite/gfortran.dg/matmul_2.f90
! c7d10888999cf076991164b5bf57c6fc  gcc/testsuite/gfortran.dg/matmul_3.f90
! cfbd43357d41fab8685ac1c11a54db26  gcc/testsuite/gfortran.dg/matmul_4.f90
! 41df433fca40ae389e2d9958943c63df  gcc/testsuite/gfortran.dg/matmul_5.f90
! fba22baa22c8890f362f20e036ab9199  gcc/testsuite/gfortran.dg/matmul_6.f90
  f2ea8cac46240547e280d6a47be8828d  gcc/testsuite/gfortran.dg/matmul_7.f90
! 3f4b1318366e167a4cb315e528f0c9fb  gcc/testsuite/gfortran.dg/matmul_8.f03
! d53eed77659562e5b66d14b3a5271897  gcc/testsuite/gfortran.dg/matmul_9.f90
  368ecceacb36bc8031de56fda6503830  gcc/testsuite/gfortran.dg/matmul_argument_types.f90
  6ed82ab65a659c5528ba6467505d80bd  gcc/testsuite/gfortran.dg/matmul_bounds_1.f90
  6afa8720ca49e185b4be9435bcad728e  gcc/testsuite/gfortran.dg/matmul_bounds_10.f90
! e14d55bfbb5ec45341e5817637d87094  gcc/testsuite/gfortran.dg/matmul_bounds_12.f90
  593ee7fab776b72ccabee9746364f3ec  gcc/testsuite/gfortran.dg/matmul_bounds_2.f90
  04b6384e6df8392804f84acedfe4c7b9  gcc/testsuite/gfortran.dg/matmul_bounds_3.f90
  1b539cfef798bf4060dbbccd58b5337c  gcc/testsuite/gfortran.dg/matmul_bounds_4.f90
  1723b5abbe2a48916d2fcee044a8bb34  gcc/testsuite/gfortran.dg/matmul_bounds_5.f90
! fe28afe7f9810e42c427b8255d92da09  gcc/testsuite/gfortran.dg/matmul_bounds_6.f90
  113fca60ed9cef03a1103a58567d9296  gcc/testsuite/gfortran.dg/matmul_bounds_7.f90
  a57b62aa12e483031baa4ffa748bfcaf  gcc/testsuite/gfortran.dg/matmul_bounds_8.f90
  c627becc9c040a6d6fc80de439e9653a  gcc/testsuite/gfortran.dg/matmul_bounds_9.f90
  972c75c45fe63e2fd205d48d266f9af9  gcc/testsuite/gfortran.dg/maxerrors.f90
! c60b22787099293d12b274f5bfb806b5  gcc/testsuite/gfortran.dg/maxloc_1.f90
! 473edde1f84fbcc87f36034a288da68c  gcc/testsuite/gfortran.dg/maxloc_2.f90
! cc5d09270d3e8991041831b365574c6f  gcc/testsuite/gfortran.dg/maxloc_3.f90
  7484edd46e9332f90826571948d1fecc  gcc/testsuite/gfortran.dg/maxloc_bounds_1.f90
  f031e0b024eae2004e37d1f655715a50  gcc/testsuite/gfortran.dg/maxloc_bounds_2.f90
  2ebe2e8add5d45aed8bf4922dd58029c  gcc/testsuite/gfortran.dg/maxloc_bounds_3.f90
--- 55266,55317 ----
  a9d014274eb56078098dae3d4f9a8fe7  gcc/testsuite/gfortran.dg/lto/pr60635_0.f90
  a8ba679c6307cb7e937915e91616c861  gcc/testsuite/gfortran.dg/lto/pr60635_1.c
  f4d0f3a9eea039a45f8f40d5a4d52efb  gcc/testsuite/gfortran.dg/lto/pr79108_0.f90
! fa332a69f92c8cb51e4ce0ae67697034  gcc/testsuite/gfortran.dg/lto/pr84645_0.f90
! e05291f83b2b7501a2be29b7516a5330  gcc/testsuite/gfortran.dg/make_unit.f90
  b49070ec831f64c85f249772acd9a59f  gcc/testsuite/gfortran.dg/malloc_free_1.f90
! 0b622e34294c6a21c1029f87514f6ad4  gcc/testsuite/gfortran.dg/mapping_1.f90
! dedca43c52c260d19411f38a82dc83bb  gcc/testsuite/gfortran.dg/mapping_2.f90
! 2aeec838c3d9844f1e53be622ad9336a  gcc/testsuite/gfortran.dg/mapping_3.f90
! 5da2f9c73e817a24b64df05a72384631  gcc/testsuite/gfortran.dg/masklr_1.F90
! f6f60ff72b964c84a0c87c6c6e27a192  gcc/testsuite/gfortran.dg/masklr_2.F90
! 04fd8afc21ce98ab772712fec94448df  gcc/testsuite/gfortran.dg/matmul_1.f90
! 914f17301d655a87d03174d3e0f5089d  gcc/testsuite/gfortran.dg/matmul_10.f90
  f578301d06fba98fdd392618b3c322f6  gcc/testsuite/gfortran.dg/matmul_11.f90
! a9ea0d022b130cb24d6e3e6931a84ec9  gcc/testsuite/gfortran.dg/matmul_12.f90
  c9a22258dbea705376b48eb2fbe99636  gcc/testsuite/gfortran.dg/matmul_13.f90
  e34a90228a66e89a0c0a370802385705  gcc/testsuite/gfortran.dg/matmul_14.f90
! 539851fc4796098bfa1a0f60e39d29db  gcc/testsuite/gfortran.dg/matmul_15.f90
! a8bc8cb79c233cad92fa0b7312c3bf76  gcc/testsuite/gfortran.dg/matmul_16.f90
! 0d39f0957cd5252dfdbf4995b9992123  gcc/testsuite/gfortran.dg/matmul_17.f90
! 1c43220df440a5b3d4ce8067abf4aa1d  gcc/testsuite/gfortran.dg/matmul_18.f90
! 1c818dfe5b55cadd7242c8b0d99cc20a  gcc/testsuite/gfortran.dg/matmul_2.f90
! f748ca326fd02ea31db022d361127f6c  gcc/testsuite/gfortran.dg/matmul_3.f90
! 26eb0fb53e95ec50381d25150adc73e5  gcc/testsuite/gfortran.dg/matmul_4.f90
! 9a14fd821051696d1f5724a08fdb7efe  gcc/testsuite/gfortran.dg/matmul_5.f90
! 716bc506ef47e73be0eb1a92b67896a2  gcc/testsuite/gfortran.dg/matmul_6.f90
  f2ea8cac46240547e280d6a47be8828d  gcc/testsuite/gfortran.dg/matmul_7.f90
! 7fc12e000f1a9e3fa556606f0bebd9e9  gcc/testsuite/gfortran.dg/matmul_8.f03
! 3b6165e40be92d1322c9e7feb5c90f0e  gcc/testsuite/gfortran.dg/matmul_9.f90
  368ecceacb36bc8031de56fda6503830  gcc/testsuite/gfortran.dg/matmul_argument_types.f90
  6ed82ab65a659c5528ba6467505d80bd  gcc/testsuite/gfortran.dg/matmul_bounds_1.f90
  6afa8720ca49e185b4be9435bcad728e  gcc/testsuite/gfortran.dg/matmul_bounds_10.f90
! 46295b2a5d0add9c3fe15a121e9e4ccc  gcc/testsuite/gfortran.dg/matmul_bounds_11.f90
! a09fae674a7e104e1d3d8e56122f7598  gcc/testsuite/gfortran.dg/matmul_bounds_12.f90
  593ee7fab776b72ccabee9746364f3ec  gcc/testsuite/gfortran.dg/matmul_bounds_2.f90
  04b6384e6df8392804f84acedfe4c7b9  gcc/testsuite/gfortran.dg/matmul_bounds_3.f90
  1b539cfef798bf4060dbbccd58b5337c  gcc/testsuite/gfortran.dg/matmul_bounds_4.f90
  1723b5abbe2a48916d2fcee044a8bb34  gcc/testsuite/gfortran.dg/matmul_bounds_5.f90
! 722ca9762b6ff5219e24f7b7c4e617c0  gcc/testsuite/gfortran.dg/matmul_bounds_6.f90
  113fca60ed9cef03a1103a58567d9296  gcc/testsuite/gfortran.dg/matmul_bounds_7.f90
  a57b62aa12e483031baa4ffa748bfcaf  gcc/testsuite/gfortran.dg/matmul_bounds_8.f90
  c627becc9c040a6d6fc80de439e9653a  gcc/testsuite/gfortran.dg/matmul_bounds_9.f90
+ f0b2675b7cef4aeb6508db823cdde529  gcc/testsuite/gfortran.dg/matmul_const.f90
+ a7713918ec13950e8efe9741aec82184  gcc/testsuite/gfortran.dg/matmul_rank_1.f90
  972c75c45fe63e2fd205d48d266f9af9  gcc/testsuite/gfortran.dg/maxerrors.f90
! 78b7cd32261843d59e70c57af2ce0c8e  gcc/testsuite/gfortran.dg/maxloc_1.f90
! 24af73ff6c48b57ab188d9a338da0e7a  gcc/testsuite/gfortran.dg/maxloc_2.f90
! f65bbfca3f40fc7270a3d0d92053a0f8  gcc/testsuite/gfortran.dg/maxloc_3.f90
! 5777644284cf974328e5e9d3e07dd341  gcc/testsuite/gfortran.dg/maxloc_4.f90
  7484edd46e9332f90826571948d1fecc  gcc/testsuite/gfortran.dg/maxloc_bounds_1.f90
  f031e0b024eae2004e37d1f655715a50  gcc/testsuite/gfortran.dg/maxloc_bounds_2.f90
  2ebe2e8add5d45aed8bf4922dd58029c  gcc/testsuite/gfortran.dg/maxloc_bounds_3.f90
*************** c0efda6bb29b89690fe5d76d526a4ab3  gcc/te
*** 51697,51842 ****
  de1e98dde053bc067885c05b22d539bb  gcc/testsuite/gfortran.dg/maxloc_bounds_7.f90
  5abd04b2309d22e2b2ec46487000a50e  gcc/testsuite/gfortran.dg/maxloc_bounds_8.f90
  2c6df0c6a7adcf1338f72e811c48c0a6  gcc/testsuite/gfortran.dg/maxloc_shape_1.f90
! a2f7ce24b5562fcd72891f0218c48b93  gcc/testsuite/gfortran.dg/maxlocval_1.f90
! 8600c66c66cfc47eb283237f7d328890  gcc/testsuite/gfortran.dg/maxlocval_2.f90
! d735114dcbe176a4f1fb70ec5840f1b5  gcc/testsuite/gfortran.dg/maxlocval_3.f90
! 71d288b310b74f3f3c2ee29c98a1fe91  gcc/testsuite/gfortran.dg/maxlocval_4.f90
  f3b8e8cbad1f135fa5c691b9358a507b  gcc/testsuite/gfortran.dg/maxval_maxloc_conformance_1.f90
! 3fba4c981425f50410a2588d3dd3519d  gcc/testsuite/gfortran.dg/mclock.f90
! 8c228ab7a76c9504e410528af68ff501  gcc/testsuite/gfortran.dg/merge_bits_1.F90
! 23ea2b0b3c15268705ffec3e45084f70  gcc/testsuite/gfortran.dg/merge_bits_2.F90
! f58ad36aa6f8b1de09b3d7b1bac4aa6a  gcc/testsuite/gfortran.dg/merge_char_1.f90
  ee322b8d6152e0c959f795cffc6f038e  gcc/testsuite/gfortran.dg/merge_char_2.f90
  ab5a022b83d2491d59465942397cce40  gcc/testsuite/gfortran.dg/merge_char_3.f90
  eeec051d497127f1ede77e4c9b0a4d06  gcc/testsuite/gfortran.dg/merge_char_const.f90
! 942de64e2f05faded58415a6d78e5d4c  gcc/testsuite/gfortran.dg/merge_init_expr.f90
  34b7dd5bb35790a8b688fa839e2524e6  gcc/testsuite/gfortran.dg/merge_init_expr_2.f90
  143aa543e8d65be64d945e78ac62f5e3  gcc/testsuite/gfortran.dg/min_max_conformance.f90
  653e6e7bc45c6a565bcba36f3c235791  gcc/testsuite/gfortran.dg/min_max_conformance_2.f90
! 11c0eeff7be02784c512d40795e50459  gcc/testsuite/gfortran.dg/min_max_optional_1.f90
! b800c3640393d52952a849db159811ff  gcc/testsuite/gfortran.dg/min_max_optional_5.f90
! df3cdd8be8fb70d465bee7df04a6913b  gcc/testsuite/gfortran.dg/minloc_1.f90
! 5452d7d385e973e6a894b21a21a8cc46  gcc/testsuite/gfortran.dg/minloc_2.f90
! 65d0c28d24892a103235547fc2bf9424  gcc/testsuite/gfortran.dg/minloc_3.f90
! 63ea8aaa740ee34b5cb5cdf12fb0596d  gcc/testsuite/gfortran.dg/minlocval_1.f90
! 23ef6c6066773512a4697bd7f188d434  gcc/testsuite/gfortran.dg/minlocval_2.f90
! 85f915384cfc260be848e206cde2683f  gcc/testsuite/gfortran.dg/minlocval_3.f90
! 401113b81a7125fc5fb9a2120eff87a1  gcc/testsuite/gfortran.dg/minlocval_4.f90
! 746f955338c2b655a054808c14af36a2  gcc/testsuite/gfortran.dg/minmax_char_1.f90
  9dd707bee77dfefd21e2f1b0cfae766b  gcc/testsuite/gfortran.dg/minmax_char_2.f90
! be4917560cb59279e1bc1f0b2581cef7  gcc/testsuite/gfortran.dg/minmaxloc_1.f90
! 3342a3af8843a0c03c7d13783a1d7d5e  gcc/testsuite/gfortran.dg/minmaxloc_2.f90
! 1cb024ce9932c212aa67b18843f130ba  gcc/testsuite/gfortran.dg/minmaxloc_3.f90
! 2c07ef6adf57ba27764d9ac00b26a4b9  gcc/testsuite/gfortran.dg/minmaxloc_4.f90
! ba971facaaa58a878d3dcf39691678c2  gcc/testsuite/gfortran.dg/minmaxloc_5.f90
! 521310deeb2b919af885d61fb727683d  gcc/testsuite/gfortran.dg/minmaxloc_6.f90
! 265b889db1e7adc3a9c7ced79c8b367a  gcc/testsuite/gfortran.dg/minmaxloc_7.f90
  bfce6907d55bac00c669263625b5989e  gcc/testsuite/gfortran.dg/minmaxloc_integer_kinds_1.f90
! dadedc4eef775362743c87909cc73771  gcc/testsuite/gfortran.dg/minmaxval_1.f90
  977425fc74c00e367d0b6ca3cc8c8c5f  gcc/testsuite/gfortran.dg/misplaced_implicit_character.f90
  3e8808e92aec2411acd61ba068e50ed9  gcc/testsuite/gfortran.dg/misplaced_statement.f90
  eea205b718351957b32fa829e352cae7  gcc/testsuite/gfortran.dg/missing_derived_type_1.f90
! 3bf2bb643a8d0c12dd5796ef9a72dce1  gcc/testsuite/gfortran.dg/missing_optional_dummy_1.f90
! 3e0a2280d4fcb66c54a00bd7004af987  gcc/testsuite/gfortran.dg/missing_optional_dummy_2.f90
  59daeee77ca3256e2cab9604a95d50bf  gcc/testsuite/gfortran.dg/missing_optional_dummy_3.f90
  2b10e892941663b283421e581e64fe9f  gcc/testsuite/gfortran.dg/missing_optional_dummy_4.f90
  9bf3b913fc6553f2af000ca472ab43c0  gcc/testsuite/gfortran.dg/missing_optional_dummy_5.f90
! a7ee13180a8d764275b521337c01224a  gcc/testsuite/gfortran.dg/missing_optional_dummy_6.f90
! 30b989aa76362c91983e8e32e7c2d557  gcc/testsuite/gfortran.dg/missing_parens_1.f90
! a3b88192dd0fe4f0ee264708c5f8d028  gcc/testsuite/gfortran.dg/missing_parens_2.f90
  39267eb2a7da9bb2c75e76503586d534  gcc/testsuite/gfortran.dg/mixed_io_1.c
  4f32f8e4bc77f9febc6fa786cb7092fc  gcc/testsuite/gfortran.dg/mixed_io_1.f90
! 730dd65c363018dad2f5ef203c5561f5  gcc/testsuite/gfortran.dg/mod_large_1.f90
! 1aeddd80d08907cff1bac8664dad6fb0  gcc/testsuite/gfortran.dg/mod_sign0_1.f90
! a029b56b8736406acb57911d05ebc71c  gcc/testsuite/gfortran.dg/module_blank_common.f90
! 6b1edec2e22c8e2c78a35cf715c3d2fd  gcc/testsuite/gfortran.dg/module_commons_1.f90
  810f80e192669e2fbeda3ff19a37222e  gcc/testsuite/gfortran.dg/module_commons_2.f90
! cb030cb1898ad770174156f0f8118aa4  gcc/testsuite/gfortran.dg/module_commons_3.f90
! 62093ac81c7c614b1acbe3392d2ed11f  gcc/testsuite/gfortran.dg/module_double_reuse.f90
! 01903f22f37284ead8d3eb270e47421b  gcc/testsuite/gfortran.dg/module_equivalence_1.f90
! f862d51a0237c8563aad4a517115f782  gcc/testsuite/gfortran.dg/module_equivalence_2.f90
! dbf0cdf0b9f34b57d5799c2993cb9e69  gcc/testsuite/gfortran.dg/module_equivalence_3.f90
  c59392582fbfe35af66449f41e6233fd  gcc/testsuite/gfortran.dg/module_equivalence_4.f90
! d897729f99de6c59cbf446386ef429ea  gcc/testsuite/gfortran.dg/module_equivalence_5.f90
  acfac3a0ba2e4d36498b2885cbdd936a  gcc/testsuite/gfortran.dg/module_equivalence_6.f90
  3a45f90e37af2f5d4dbfc11d7938bd81  gcc/testsuite/gfortran.dg/module_error_1.f90
  1c2860e06c4c171b07a09848f10e9753  gcc/testsuite/gfortran.dg/module_function_type_1.f90
  cee8f32acb5435cd91e0bf7381211b38  gcc/testsuite/gfortran.dg/module_implicit_conversion.f90
! 70a782cf7be0664677d02fb91e33bf8b  gcc/testsuite/gfortran.dg/module_interface_1.f90
  45b08b174907490232ac6fd9014f52f6  gcc/testsuite/gfortran.dg/module_interface_2.f90
  aedab00c95be355c3ec0c7306612ae62  gcc/testsuite/gfortran.dg/module_naming_1.f90
! a3c79cd7c1faa56add605a7c1a6d72ca  gcc/testsuite/gfortran.dg/module_nan.f90
  bcd06aff3687f3f238806a9663c12a72  gcc/testsuite/gfortran.dg/module_parameter_array_refs_1.f90
  38871edb72439a4017f330c646f35bba  gcc/testsuite/gfortran.dg/module_parameter_array_refs_2.f90
  89a9de2b0cafeb53a607f32b62e97a7d  gcc/testsuite/gfortran.dg/module_private_1.f90
  38991a7b3b01dda59db6b907061a225a  gcc/testsuite/gfortran.dg/module_private_2.f90
! 96bdab59596557470700712acf19df0a  gcc/testsuite/gfortran.dg/module_private_array_refs_1.f90
  478fc43019f81e4b49fc455a31b7b167  gcc/testsuite/gfortran.dg/module_proc_external_dummy.f90
! db1778e271a2cea024d5fa5e5c8d09f6  gcc/testsuite/gfortran.dg/module_procedure_1.f90
  49beb6d05bcf0381e08675884e9499cd  gcc/testsuite/gfortran.dg/module_procedure_2.f90
  800437d2b52021485c33cad30f74b0ed  gcc/testsuite/gfortran.dg/module_procedure_double_colon_1.f90
  70e09e7551a5a711743bb28c24171db1  gcc/testsuite/gfortran.dg/module_procedure_double_colon_2.f90
  137d9dce5f451f1b13b66c9e9a9ad24c  gcc/testsuite/gfortran.dg/module_procedure_double_colon_3.f90
  24372311701fbd6f59b558618e803bd0  gcc/testsuite/gfortran.dg/module_procedure_double_colon_4.f90
! f44b8290ef55d28920e41607475d02ac  gcc/testsuite/gfortran.dg/module_read_1.f90
! c1f6e8d5474b7cc6e799bdce6f2cdcb2  gcc/testsuite/gfortran.dg/module_read_2.f90
  2dcd7cc40600216e3b66458cf8518cc4  gcc/testsuite/gfortran.dg/module_variable_1.f90
  034cd94719c7f11645da786ed1f7c74a  gcc/testsuite/gfortran.dg/module_variable_2.f90
! c80d9ddcd9d1ba51ce9d4f8f646bf009  gcc/testsuite/gfortran.dg/module_widestring_1.f90
  b90d45d488551172203c5805488e51c8  gcc/testsuite/gfortran.dg/module_write_1.f90
  e2d7817fb979c570de1d1ec245d73737  gcc/testsuite/gfortran.dg/modulo_1.f90
! f4df42c36841a7e731883e9a6a7f0b38  gcc/testsuite/gfortran.dg/move_alloc.f90
! 200afc1f1a646a105383da0651b9acb2  gcc/testsuite/gfortran.dg/move_alloc_10.f90
  645b6b4b36489dac04618c450d130861  gcc/testsuite/gfortran.dg/move_alloc_12.f90
! 1eadd615c7e46530bfa56188e3be9b9a  gcc/testsuite/gfortran.dg/move_alloc_13.f90
! 3bb5768c594c32010a87a1fbe4a65823  gcc/testsuite/gfortran.dg/move_alloc_14.f90
! c155c0bf4e01937c2ca90481a4f6c489  gcc/testsuite/gfortran.dg/move_alloc_15.f90
! cc0e53ea9c25d87a549f778d4456cf44  gcc/testsuite/gfortran.dg/move_alloc_16.f90
  e1e5a4925af334c9600c11958ed2f050  gcc/testsuite/gfortran.dg/move_alloc_17.f90
  82ce482d0ea01e87bea4c152503a35bf  gcc/testsuite/gfortran.dg/move_alloc_18.f90
! bbde88d91784fbdb7447f444c1ca2811  gcc/testsuite/gfortran.dg/move_alloc_2.f90
  90c4233696a4210dd1411df4ce816345  gcc/testsuite/gfortran.dg/move_alloc_3.f90
  b0771aa8a26d9687e9c6aa4f179d533d  gcc/testsuite/gfortran.dg/move_alloc_4.f90
! 0e7d906db1fd35696cb88ce3cfc9a166  gcc/testsuite/gfortran.dg/move_alloc_5.f90
! 5d4d72a5ea287c4222e904fe82defe45  gcc/testsuite/gfortran.dg/move_alloc_6.f90
  0c726588b85b64cfb855301e343930a8  gcc/testsuite/gfortran.dg/move_alloc_7.f90
  71254f3390003edda7e2c46eb3990787  gcc/testsuite/gfortran.dg/move_alloc_8.f90
! da3934ec301590a31291f4cdf2b0af72  gcc/testsuite/gfortran.dg/move_alloc_9.f90
! 8e8d0a6acb79e506affde3ab76f0e2a9  gcc/testsuite/gfortran.dg/multiple_allocation_1.f90
  6b63ce8de65e063edbff7748ee8ead42  gcc/testsuite/gfortran.dg/multiple_allocation_2.f90
! b4ead097168db27892517c1352af646f  gcc/testsuite/gfortran.dg/multiple_allocation_3.f90
! e75425358b69c17cdba9cfa7fb130573  gcc/testsuite/gfortran.dg/mvbits_1.f90
! ec327024db3d4d04a87add250e3b45cb  gcc/testsuite/gfortran.dg/mvbits_2.f90
! c46a319f9a75db80f9fe596e622b0381  gcc/testsuite/gfortran.dg/mvbits_3.f90
! c04eacc20afa205bb4b6f1edf895e426  gcc/testsuite/gfortran.dg/mvbits_4.f90
  c32ce34cb402014e9d7c5119bfe2327d  gcc/testsuite/gfortran.dg/mvbits_5.f90
  c31049d80a6d5f251553cf67a645cfbc  gcc/testsuite/gfortran.dg/mvbits_6.f90
! 77a635834f240bbf76b909c32e16841c  gcc/testsuite/gfortran.dg/mvbits_7.f90
! e4b88011e1ed48d9302d9d8ad22f628b  gcc/testsuite/gfortran.dg/mvbits_8.f90
  cda99c4f9b1e1ca808103eba31168058  gcc/testsuite/gfortran.dg/mvbits_9.f90
  ab43a12e9d7dd4f0eed4d087fc19a84f  gcc/testsuite/gfortran.dg/named_interface.f90
! 41fabfed6789708fd01fe5dcc87777b2  gcc/testsuite/gfortran.dg/namelist_1.f90
! f636e160e90cfda627b6d67dc01a78ac  gcc/testsuite/gfortran.dg/namelist_11.f
! d5aef5865ffc73d33361fd13f6f04f16  gcc/testsuite/gfortran.dg/namelist_12.f
! 067c57b6eb8ed249c4d2680e2ccdfdfd  gcc/testsuite/gfortran.dg/namelist_13.f90
! 545a87d71b0782f88fbce03116e5c027  gcc/testsuite/gfortran.dg/namelist_14.f90
! e9bc0a672472b90e79e7d66cf7a39503  gcc/testsuite/gfortran.dg/namelist_15.f90
! 1966e4eb56d2152bb7331ac3bba7364a  gcc/testsuite/gfortran.dg/namelist_16.f90
! 6287a7e85d43fd474429c5fab5201b5b  gcc/testsuite/gfortran.dg/namelist_17.f90
! 0104700e6c9601d0b4fb92e815299311  gcc/testsuite/gfortran.dg/namelist_18.f90
! 1b1be5c9f972fd35fb4e4e28515421a3  gcc/testsuite/gfortran.dg/namelist_19.f90
! cd112962907d7cdcead33a96010fbfd8  gcc/testsuite/gfortran.dg/namelist_2.f90
! 616c505c906c398d6dba9d204cb485c3  gcc/testsuite/gfortran.dg/namelist_20.f90
! 007a4578cb5649dda9254c8ca92c41e2  gcc/testsuite/gfortran.dg/namelist_21.f90
! 230bde66910717af005877f3b8f23aee  gcc/testsuite/gfortran.dg/namelist_22.f90
! 56c8e2399d9dd1b146105db07e8403e8  gcc/testsuite/gfortran.dg/namelist_23.f90
! e00e3e83851325e664ef77cb7398632f  gcc/testsuite/gfortran.dg/namelist_24.f90
  a2ad9319cf9ce9e70a5b98ecbdb4d741  gcc/testsuite/gfortran.dg/namelist_25.f90
! 884f091b68676c6fa91431dfa5a7e089  gcc/testsuite/gfortran.dg/namelist_26.f90
! 7f3c6cf58fde83281f706f760249a63b  gcc/testsuite/gfortran.dg/namelist_27.f90
! aae873d49ae8dd1936f5abcd8ae16aa6  gcc/testsuite/gfortran.dg/namelist_28.f90
! 08614cfba5d121bbfc836b9f53500b33  gcc/testsuite/gfortran.dg/namelist_29.f90
! 9ab4fea37afdf39037febde449b29212  gcc/testsuite/gfortran.dg/namelist_3.f90
  1f1b749b1b460d9d7a513636b0ecb306  gcc/testsuite/gfortran.dg/namelist_30.f90
  949edd4ec489878eeef586da2da3f261  gcc/testsuite/gfortran.dg/namelist_31.f90
  66154fee1020a0a24d30dceed64aa503  gcc/testsuite/gfortran.dg/namelist_32.f90
--- 55321,55485 ----
  de1e98dde053bc067885c05b22d539bb  gcc/testsuite/gfortran.dg/maxloc_bounds_7.f90
  5abd04b2309d22e2b2ec46487000a50e  gcc/testsuite/gfortran.dg/maxloc_bounds_8.f90
  2c6df0c6a7adcf1338f72e811c48c0a6  gcc/testsuite/gfortran.dg/maxloc_shape_1.f90
! 91b41258a546d6cf4262b0062e3e6040  gcc/testsuite/gfortran.dg/maxloc_string_1.f90
! b69d020b3fcf30b8b905d3e28e1a8f8d  gcc/testsuite/gfortran.dg/maxlocval_1.f90
! 23a1a46f8cee69ae9491f338583dde8e  gcc/testsuite/gfortran.dg/maxlocval_2.f90
! 991fc912c3306b48ab1a3a953d91e0c1  gcc/testsuite/gfortran.dg/maxlocval_3.f90
! 419739b0bbe00ed037ac9a92053c4942  gcc/testsuite/gfortran.dg/maxlocval_4.f90
! 474f3efa416a3034fab742f027088378  gcc/testsuite/gfortran.dg/maxval_char_1.f90
! d8787ced368ea2bc328514bda2bda4b9  gcc/testsuite/gfortran.dg/maxval_char_2.f90
! 849506dc63ffdf66a572ecd44ffae716  gcc/testsuite/gfortran.dg/maxval_char_3.f90
! 0e3b655571429ad4105f1b6cf82f3dc5  gcc/testsuite/gfortran.dg/maxval_char_4.f90
  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
! aea99015fe78116b04337336205f4360  gcc/testsuite/gfortran.dg/merge_bits_1.F90
! 25f819b4cc85efec00388ab069b0bdd8  gcc/testsuite/gfortran.dg/merge_bits_2.F90
! 67c26aa41674dbf36f43cdd2e814a31b  gcc/testsuite/gfortran.dg/merge_char_1.f90
  ee322b8d6152e0c959f795cffc6f038e  gcc/testsuite/gfortran.dg/merge_char_2.f90
  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
  143aa543e8d65be64d945e78ac62f5e3  gcc/testsuite/gfortran.dg/min_max_conformance.f90
  653e6e7bc45c6a565bcba36f3c235791  gcc/testsuite/gfortran.dg/min_max_conformance_2.f90
! e88201894b7f8f5345f56f48a5f3651b  gcc/testsuite/gfortran.dg/min_max_optional_1.f90
! b145a156c563a26a90340bfbdab30850  gcc/testsuite/gfortran.dg/min_max_optional_5.f90
! f7fa65c09b6327cd6d60151e7ca99478  gcc/testsuite/gfortran.dg/minloc_1.f90
! cfda9d3486db9936581c66643ac47d80  gcc/testsuite/gfortran.dg/minloc_2.f90
! 3646bc1c1f91198054509495fb715a5f  gcc/testsuite/gfortran.dg/minloc_3.f90
! 6b91e9920e47f2e232a1997dfa78becc  gcc/testsuite/gfortran.dg/minloc_4.f90
! e4128d2660a59902da65544b9b5aa664  gcc/testsuite/gfortran.dg/minloc_string_1.f90
! 8f83d730c873ff88b1850b71ce59348f  gcc/testsuite/gfortran.dg/minlocval_1.f90
! ba58c467fd61638cacc24c25881386b3  gcc/testsuite/gfortran.dg/minlocval_2.f90
! 119360a64c7409d636bfa7e0507e5858  gcc/testsuite/gfortran.dg/minlocval_3.f90
! 0fb72642fdd08117cf7512ef4c2f0889  gcc/testsuite/gfortran.dg/minlocval_4.f90
! eb886d9cef53ce001fb32c92d24edd1f  gcc/testsuite/gfortran.dg/minmax_char_1.f90
  9dd707bee77dfefd21e2f1b0cfae766b  gcc/testsuite/gfortran.dg/minmax_char_2.f90
! 397ae6b13abbe18399ca347232107ec7  gcc/testsuite/gfortran.dg/minmaxloc_1.f90
! 891aaec3c50013512c01d4e4ed2c01e5  gcc/testsuite/gfortran.dg/minmaxloc_10.f90
! e0fb9480b5079656bce9c871925a9aa5  gcc/testsuite/gfortran.dg/minmaxloc_11.f90
! 04175a5a67cc257e87134132faed701e  gcc/testsuite/gfortran.dg/minmaxloc_2.f90
! d01a31e0da5b62b2ae4bf92d05e0d307  gcc/testsuite/gfortran.dg/minmaxloc_3.f90
! f740ddfd6cbf2afa8d24ebd39f421cf1  gcc/testsuite/gfortran.dg/minmaxloc_4.f90
! 172a8ebb57393e92e822ce81c067da0d  gcc/testsuite/gfortran.dg/minmaxloc_5.f90
! ea97c729128944ed7b9955f82a1dd48a  gcc/testsuite/gfortran.dg/minmaxloc_6.f90
! 65913eec4eac39a62a792253d05bff7f  gcc/testsuite/gfortran.dg/minmaxloc_7.f90
! eb2474355d3d73a1a931f4cd41432baf  gcc/testsuite/gfortran.dg/minmaxloc_8.f90
! 5fde56cb88a1346cbdbd87003ba22e37  gcc/testsuite/gfortran.dg/minmaxloc_9.f90
  bfce6907d55bac00c669263625b5989e  gcc/testsuite/gfortran.dg/minmaxloc_integer_kinds_1.f90
! 97696e5fa1810b74f7f170a576b934c9  gcc/testsuite/gfortran.dg/minmaxloc_zerosize_1.f90
! ee115a62a3ef18d5486d6af3b32b080b  gcc/testsuite/gfortran.dg/minmaxval_1.f90
! cb7c27cf05d4c2291c84d546ef022815  gcc/testsuite/gfortran.dg/minval_char_1.f90
! a73df3e16ee56443ebe27d9de578a5b5  gcc/testsuite/gfortran.dg/minval_char_2.f90
! 0fd6297d6329b7f3afbee4bc3c344c30  gcc/testsuite/gfortran.dg/minval_char_3.f90
! d2c54fffd169a993c9b970fe00e2fc9d  gcc/testsuite/gfortran.dg/minval_char_4.f90
! 4187f2279135b1eb4ccfac31fba3fb4c  gcc/testsuite/gfortran.dg/minval_char_5.f90
! ef4bad76c84d9ecd6e16018240f039ae  gcc/testsuite/gfortran.dg/minval_parameter_1.f90
  977425fc74c00e367d0b6ca3cc8c8c5f  gcc/testsuite/gfortran.dg/misplaced_implicit_character.f90
  3e8808e92aec2411acd61ba068e50ed9  gcc/testsuite/gfortran.dg/misplaced_statement.f90
  eea205b718351957b32fa829e352cae7  gcc/testsuite/gfortran.dg/missing_derived_type_1.f90
! 005a022bfa31b907fcd31e07dda64b62  gcc/testsuite/gfortran.dg/missing_optional_dummy_1.f90
! e972ad6e0a543eb12481e61ddb341c93  gcc/testsuite/gfortran.dg/missing_optional_dummy_2.f90
  59daeee77ca3256e2cab9604a95d50bf  gcc/testsuite/gfortran.dg/missing_optional_dummy_3.f90
  2b10e892941663b283421e581e64fe9f  gcc/testsuite/gfortran.dg/missing_optional_dummy_4.f90
  9bf3b913fc6553f2af000ca472ab43c0  gcc/testsuite/gfortran.dg/missing_optional_dummy_5.f90
! 2466c861eca3bae88e06eb43a92065f8  gcc/testsuite/gfortran.dg/missing_optional_dummy_6.f90
! 53cf202b76cef1a0ef4407f2b23bd971  gcc/testsuite/gfortran.dg/missing_parens_1.f90
! 27588883c00e0436a67ce824817657b8  gcc/testsuite/gfortran.dg/missing_parens_2.f90
  39267eb2a7da9bb2c75e76503586d534  gcc/testsuite/gfortran.dg/mixed_io_1.c
  4f32f8e4bc77f9febc6fa786cb7092fc  gcc/testsuite/gfortran.dg/mixed_io_1.f90
! ad3071ec00b97c67ae462e306795a5d5  gcc/testsuite/gfortran.dg/mod_large_1.f90
! dc1a224b14bc249ed968e13b0c50e43b  gcc/testsuite/gfortran.dg/mod_sign0_1.f90
! 1b7bae541699a3a589945de099b872a0  gcc/testsuite/gfortran.dg/module_blank_common.f90
! 5e010ab1c9fc3fe67e186286051656c7  gcc/testsuite/gfortran.dg/module_commons_1.f90
  810f80e192669e2fbeda3ff19a37222e  gcc/testsuite/gfortran.dg/module_commons_2.f90
! c330c92aefd341f6749a2bdfbb9ab41b  gcc/testsuite/gfortran.dg/module_commons_3.f90
! 2a1d0c2fc2f0c3cbd974c54342f3f806  gcc/testsuite/gfortran.dg/module_double_reuse.f90
! c60427040706f99402a11fa32185f40d  gcc/testsuite/gfortran.dg/module_equivalence_1.f90
! af800127356af2639f24f1da6aa83756  gcc/testsuite/gfortran.dg/module_equivalence_2.f90
! 9d8f8cc06ab5a956057197d0bc64d7be  gcc/testsuite/gfortran.dg/module_equivalence_3.f90
  c59392582fbfe35af66449f41e6233fd  gcc/testsuite/gfortran.dg/module_equivalence_4.f90
! 0a89e5b7f2d7572793de214b194ea32d  gcc/testsuite/gfortran.dg/module_equivalence_5.f90
  acfac3a0ba2e4d36498b2885cbdd936a  gcc/testsuite/gfortran.dg/module_equivalence_6.f90
  3a45f90e37af2f5d4dbfc11d7938bd81  gcc/testsuite/gfortran.dg/module_error_1.f90
  1c2860e06c4c171b07a09848f10e9753  gcc/testsuite/gfortran.dg/module_function_type_1.f90
  cee8f32acb5435cd91e0bf7381211b38  gcc/testsuite/gfortran.dg/module_implicit_conversion.f90
! 071d95dd9fdc085795dc4a3ca12b422d  gcc/testsuite/gfortran.dg/module_interface_1.f90
  45b08b174907490232ac6fd9014f52f6  gcc/testsuite/gfortran.dg/module_interface_2.f90
  aedab00c95be355c3ec0c7306612ae62  gcc/testsuite/gfortran.dg/module_naming_1.f90
! 8ee495327a5510142a34acb10f66018d  gcc/testsuite/gfortran.dg/module_nan.f90
  bcd06aff3687f3f238806a9663c12a72  gcc/testsuite/gfortran.dg/module_parameter_array_refs_1.f90
  38871edb72439a4017f330c646f35bba  gcc/testsuite/gfortran.dg/module_parameter_array_refs_2.f90
  89a9de2b0cafeb53a607f32b62e97a7d  gcc/testsuite/gfortran.dg/module_private_1.f90
  38991a7b3b01dda59db6b907061a225a  gcc/testsuite/gfortran.dg/module_private_2.f90
! caecc4fd8aa5de5428a7b4a6c3ee736b  gcc/testsuite/gfortran.dg/module_private_array_refs_1.f90
  478fc43019f81e4b49fc455a31b7b167  gcc/testsuite/gfortran.dg/module_proc_external_dummy.f90
! dc51be0dd4adb5f65c5a6c3ffad81c8f  gcc/testsuite/gfortran.dg/module_procedure_1.f90
  49beb6d05bcf0381e08675884e9499cd  gcc/testsuite/gfortran.dg/module_procedure_2.f90
  800437d2b52021485c33cad30f74b0ed  gcc/testsuite/gfortran.dg/module_procedure_double_colon_1.f90
  70e09e7551a5a711743bb28c24171db1  gcc/testsuite/gfortran.dg/module_procedure_double_colon_2.f90
  137d9dce5f451f1b13b66c9e9a9ad24c  gcc/testsuite/gfortran.dg/module_procedure_double_colon_3.f90
  24372311701fbd6f59b558618e803bd0  gcc/testsuite/gfortran.dg/module_procedure_double_colon_4.f90
! 9967b931e99da866603e6ccd3ba2e1f1  gcc/testsuite/gfortran.dg/module_read_1.f90
! 47e0809dd8eaac64fa7db766c3d310be  gcc/testsuite/gfortran.dg/module_read_2.f90
  2dcd7cc40600216e3b66458cf8518cc4  gcc/testsuite/gfortran.dg/module_variable_1.f90
  034cd94719c7f11645da786ed1f7c74a  gcc/testsuite/gfortran.dg/module_variable_2.f90
! b2a8e625edbd571254956c9782034424  gcc/testsuite/gfortran.dg/module_widestring_1.f90
  b90d45d488551172203c5805488e51c8  gcc/testsuite/gfortran.dg/module_write_1.f90
  e2d7817fb979c570de1d1ec245d73737  gcc/testsuite/gfortran.dg/modulo_1.f90
! 7b95771e74b4db9019fa5288844d8bd7  gcc/testsuite/gfortran.dg/move_alloc.f90
! 8fa7ec6193e5858a8b302fe6da84427b  gcc/testsuite/gfortran.dg/move_alloc_10.f90
  645b6b4b36489dac04618c450d130861  gcc/testsuite/gfortran.dg/move_alloc_12.f90
! 48c1f0421f6bed37fe20c8dcbf82b981  gcc/testsuite/gfortran.dg/move_alloc_13.f90
! ce4a2de4f48ab6400126ed2d15424c28  gcc/testsuite/gfortran.dg/move_alloc_14.f90
! fa45a68b1f0fccc59f371c18a1f265c0  gcc/testsuite/gfortran.dg/move_alloc_15.f90
! 0e048a66dda3a47f54544f258962b75e  gcc/testsuite/gfortran.dg/move_alloc_16.f90
  e1e5a4925af334c9600c11958ed2f050  gcc/testsuite/gfortran.dg/move_alloc_17.f90
  82ce482d0ea01e87bea4c152503a35bf  gcc/testsuite/gfortran.dg/move_alloc_18.f90
! 11c0852d95fb0533b2ebca5a9a4c929f  gcc/testsuite/gfortran.dg/move_alloc_2.f90
  90c4233696a4210dd1411df4ce816345  gcc/testsuite/gfortran.dg/move_alloc_3.f90
  b0771aa8a26d9687e9c6aa4f179d533d  gcc/testsuite/gfortran.dg/move_alloc_4.f90
! 8d2c9767bfa9b064e0efaf0685019480  gcc/testsuite/gfortran.dg/move_alloc_5.f90
! 0912ae78a386198aad205729d12d008b  gcc/testsuite/gfortran.dg/move_alloc_6.f90
  0c726588b85b64cfb855301e343930a8  gcc/testsuite/gfortran.dg/move_alloc_7.f90
  71254f3390003edda7e2c46eb3990787  gcc/testsuite/gfortran.dg/move_alloc_8.f90
! 4f9cc1fa8df27c10af708433794537e6  gcc/testsuite/gfortran.dg/move_alloc_9.f90
! 340ebc9d35f808d2fff378f796de48ab  gcc/testsuite/gfortran.dg/multiple_allocation_1.f90
  6b63ce8de65e063edbff7748ee8ead42  gcc/testsuite/gfortran.dg/multiple_allocation_2.f90
! 9efb505ddf3adf277274e1b2d93b8a58  gcc/testsuite/gfortran.dg/multiple_allocation_3.f90
! 7a6d2f934714ac6d238509638c01afbf  gcc/testsuite/gfortran.dg/mvbits_1.f90
! c4623bdf46dec3d577b13560efc4d02b  gcc/testsuite/gfortran.dg/mvbits_2.f90
! 38a100cf40ee8f68b15502ba3c287725  gcc/testsuite/gfortran.dg/mvbits_3.f90
! c86eae6f0737ef196954fe99e513c9b8  gcc/testsuite/gfortran.dg/mvbits_4.f90
  c32ce34cb402014e9d7c5119bfe2327d  gcc/testsuite/gfortran.dg/mvbits_5.f90
  c31049d80a6d5f251553cf67a645cfbc  gcc/testsuite/gfortran.dg/mvbits_6.f90
! 1e59762c39f0246b31e878cbfccb0d51  gcc/testsuite/gfortran.dg/mvbits_7.f90
! 80522de9c24224cb4704e745bf914011  gcc/testsuite/gfortran.dg/mvbits_8.f90
  cda99c4f9b1e1ca808103eba31168058  gcc/testsuite/gfortran.dg/mvbits_9.f90
  ab43a12e9d7dd4f0eed4d087fc19a84f  gcc/testsuite/gfortran.dg/named_interface.f90
! 7841bdfa2894b1c8f28e061e0d78ca99  gcc/testsuite/gfortran.dg/namelist_1.f90
! 02a533763d199c5afa28bec631ca6b9e  gcc/testsuite/gfortran.dg/namelist_11.f
! fadabd8643639e650a8499262b9a767e  gcc/testsuite/gfortran.dg/namelist_12.f
! 637100e10c22e1d286db1ce10741e289  gcc/testsuite/gfortran.dg/namelist_13.f90
! dbf4de4b0844e0eb1991b9e2646594d4  gcc/testsuite/gfortran.dg/namelist_14.f90
! 16421ac3314a27e600e8a84cb4b648a3  gcc/testsuite/gfortran.dg/namelist_15.f90
! ebf2eb6422e2d66ad12169627007df29  gcc/testsuite/gfortran.dg/namelist_16.f90
! c7e0694abb6ed9266f259af78516d3ac  gcc/testsuite/gfortran.dg/namelist_17.f90
! 75ab55d0e615c8e38449bdafd5ab5759  gcc/testsuite/gfortran.dg/namelist_18.f90
! 7d56038dc54087d4aeaf85f8fb9c6792  gcc/testsuite/gfortran.dg/namelist_19.f90
! f138642b12dd4ad1805eb2c100594970  gcc/testsuite/gfortran.dg/namelist_2.f90
! 59b8cbfc7c531b451bab06b690b11174  gcc/testsuite/gfortran.dg/namelist_20.f90
! 4df9f09d77dd4af0897418cd4e4c25ee  gcc/testsuite/gfortran.dg/namelist_21.f90
! 61541cde2dc371111ad05db64f6a0a35  gcc/testsuite/gfortran.dg/namelist_22.f90
! 9e782b00da3f5174da5a0dc59467431a  gcc/testsuite/gfortran.dg/namelist_23.f90
! 6de92d5717f06fad037a39d1aa12c75c  gcc/testsuite/gfortran.dg/namelist_24.f90
  a2ad9319cf9ce9e70a5b98ecbdb4d741  gcc/testsuite/gfortran.dg/namelist_25.f90
! f406b993ace63f9ac8714b54a8d29cb5  gcc/testsuite/gfortran.dg/namelist_26.f90
! 8d079170ba3864225656ab2dd16509a6  gcc/testsuite/gfortran.dg/namelist_27.f90
! ba51ed5a376bb082e291b37d630d6a98  gcc/testsuite/gfortran.dg/namelist_28.f90
! b5748299ae15f365e2229c0d5d80ba10  gcc/testsuite/gfortran.dg/namelist_29.f90
! 7e514600802e1f2334066be6361da1b4  gcc/testsuite/gfortran.dg/namelist_3.f90
  1f1b749b1b460d9d7a513636b0ecb306  gcc/testsuite/gfortran.dg/namelist_30.f90
  949edd4ec489878eeef586da2da3f261  gcc/testsuite/gfortran.dg/namelist_31.f90
  66154fee1020a0a24d30dceed64aa503  gcc/testsuite/gfortran.dg/namelist_32.f90
*************** aae873d49ae8dd1936f5abcd8ae16aa6  gcc/te
*** 51844,52002 ****
  7edbf7702c951c3e0a0ca2cf976756da  gcc/testsuite/gfortran.dg/namelist_34.f90
  ea3c8aeb506b4c30f03aaff80bc6ee7a  gcc/testsuite/gfortran.dg/namelist_35.f90
  373abe3a1f3a9c3faa08c086af049046  gcc/testsuite/gfortran.dg/namelist_36.f90
! 878fd51163150eeab6260b0a215fad18  gcc/testsuite/gfortran.dg/namelist_37.f90
! d25bab1a4535c5703bd1905a879459f0  gcc/testsuite/gfortran.dg/namelist_38.f90
! cfc48f3bcb583cc95cbfdcb401f89160  gcc/testsuite/gfortran.dg/namelist_39.f90
  3edd2195cb059b134e2507cf9d3a1fd5  gcc/testsuite/gfortran.dg/namelist_4.f90
! 9a395f888730c26c7d7873543d7ae2b1  gcc/testsuite/gfortran.dg/namelist_40.f90
! 75f6c398fd3c72b8454295e9906b3d2e  gcc/testsuite/gfortran.dg/namelist_41.f90
! 5c2fbfd6d01b35a5c6d100cbcf8fbe6a  gcc/testsuite/gfortran.dg/namelist_42.f90
! ef4d5fa3cb3b76c331152b55a21bb4af  gcc/testsuite/gfortran.dg/namelist_43.f90
! ad719415fcfe8f0a8eab1b58b6cc8844  gcc/testsuite/gfortran.dg/namelist_44.f90
  3323b03ab02322d6cafa6c30c26c25c5  gcc/testsuite/gfortran.dg/namelist_45.f90
  04714ed92ea63f10bc8f26d084d85ec1  gcc/testsuite/gfortran.dg/namelist_46.f90
! 02e1cd920dd85fbe4d7a9264999d43bc  gcc/testsuite/gfortran.dg/namelist_47.f90
! 06f1fc338fca326ba6a654df9556cdd4  gcc/testsuite/gfortran.dg/namelist_48.f90
! cf9ce6c87883d5ed421b10c68719526d  gcc/testsuite/gfortran.dg/namelist_49.f90
  c55a3f1959ffd76433be0ad57f12b681  gcc/testsuite/gfortran.dg/namelist_5.f90
! a2f9c43fac7c6742e5173c1a42be987a  gcc/testsuite/gfortran.dg/namelist_50.f90
! f0d6527105879f6c4ca2e3ac76d32982  gcc/testsuite/gfortran.dg/namelist_51.f90
! 103731a10f9cb2cef2eb9cd70f18ecb5  gcc/testsuite/gfortran.dg/namelist_52.f90
! 2fbc77741785a5a1ebc4290cdcfb153f  gcc/testsuite/gfortran.dg/namelist_53.f90
! 93ae57fced67d1dac7f2d3c0d3f34a8a  gcc/testsuite/gfortran.dg/namelist_54.f90
! e131e31e2901c71a42579f606dcd4b01  gcc/testsuite/gfortran.dg/namelist_55.f90
! f8eccfee24f44f9d4c2087355079b3d0  gcc/testsuite/gfortran.dg/namelist_56.f90
! 7cfc8a3cb206eea2addd967abf013624  gcc/testsuite/gfortran.dg/namelist_57.f90
! 26decd8a6fe821fa895e83e4777a43f6  gcc/testsuite/gfortran.dg/namelist_58.f90
! 63d2e92590b5d57498384177af7622a2  gcc/testsuite/gfortran.dg/namelist_59.f90
! 7a932f8d1201cefbdd2545a21119e539  gcc/testsuite/gfortran.dg/namelist_60.f90
! 90f9e0225b27df1270a47a96b26e0900  gcc/testsuite/gfortran.dg/namelist_61.f90
  63a9903ac7050fbcb5fceab5d99940cc  gcc/testsuite/gfortran.dg/namelist_62.f90
  1a77f58a5bbe7ab3ea11e337a4ff5baf  gcc/testsuite/gfortran.dg/namelist_63.f90
! 9982ecb4ec300608d8c229fdf2f68c37  gcc/testsuite/gfortran.dg/namelist_64.f90
! 96eb89156e7872bfbbcf7c31f9cb7f0d  gcc/testsuite/gfortran.dg/namelist_65.f90
  41f2464d86e65ebe0eaf5dd31c37c4d3  gcc/testsuite/gfortran.dg/namelist_66.f90
  fff1dec1ff55e7f0c4df6b2c87f63cf6  gcc/testsuite/gfortran.dg/namelist_67.f90
  be4372cc3bf01909c31f2a6fa02bc23a  gcc/testsuite/gfortran.dg/namelist_68.f90
! 2b40e24a6ab5997446eacc5520d58d4b  gcc/testsuite/gfortran.dg/namelist_69.f90
! 636c5a278fc1498be3ddb6ec72e806d9  gcc/testsuite/gfortran.dg/namelist_70.f90
! d65b9f8a0b3983b834c3856cc2ed5fa7  gcc/testsuite/gfortran.dg/namelist_71.f90
! 7a5fb4d5ecef8d741bfddfe3fecceb5c  gcc/testsuite/gfortran.dg/namelist_72.f
! 57c379378f1c1751d823354af2ad3344  gcc/testsuite/gfortran.dg/namelist_73.f90
  0f226e1334636bb1d113dca9fe6b029b  gcc/testsuite/gfortran.dg/namelist_74.f90
  de8d6a1c06b4a610092fc5ca2618716e  gcc/testsuite/gfortran.dg/namelist_75.f90
! 3c3ad3169524c54687ffec5e64ff3af3  gcc/testsuite/gfortran.dg/namelist_76.f90
! c911cdf0b838c9d0ab9f89a2c1a70c5e  gcc/testsuite/gfortran.dg/namelist_77.f90
! 4418eab648edcdcd7b7d42d4644920c2  gcc/testsuite/gfortran.dg/namelist_78.f90
! e665391e41c97a4015c89b3d0a2470d1  gcc/testsuite/gfortran.dg/namelist_79.f90
! 95370517d71b6093cd718ee2cd671d97  gcc/testsuite/gfortran.dg/namelist_80.f90
! cf4a855736a5f39a3e98895e0a9876ce  gcc/testsuite/gfortran.dg/namelist_81.f90
! 0f145e652284e8e1519bd52af6c21937  gcc/testsuite/gfortran.dg/namelist_82.f90
  7fcd29e2cf1d6789f4849f6a4b70d2d8  gcc/testsuite/gfortran.dg/namelist_83.f90
  22266f4109dcc292b6a3c9a8342fffc2  gcc/testsuite/gfortran.dg/namelist_83_2.f90
! f7a6d95010c982f683429c683e7cf5f0  gcc/testsuite/gfortran.dg/namelist_84.f90
! 345e0af5ab072ea7fef5af08907c1d59  gcc/testsuite/gfortran.dg/namelist_85.f90
! e1d9529615ee393bcd26c894368a6218  gcc/testsuite/gfortran.dg/namelist_86.f90
! fec7274f12ad58ba111ee97c209eab90  gcc/testsuite/gfortran.dg/namelist_87.f90
! ca386a76e9a345aefe2a4fb9e5c66ed8  gcc/testsuite/gfortran.dg/namelist_88.f90
! 2668f9c1b3ddd89016b64a6931739ded  gcc/testsuite/gfortran.dg/namelist_89.f90
! 5aaf8fc3255579614c27bdf43512d3fc  gcc/testsuite/gfortran.dg/namelist_90.f
  20bb07eff1484cfb0a4bf5163c24d6c6  gcc/testsuite/gfortran.dg/namelist_91.f90
  51160c49eed98e14da5d3920d056e019  gcc/testsuite/gfortran.dg/namelist_92.f90
  7b88fbd78fb236f8e230a23c888d825f  gcc/testsuite/gfortran.dg/namelist_93.f90
  ef829c1a33829b47520efa96e8980360  gcc/testsuite/gfortran.dg/namelist_94.f90
! 11930c5a5221c4562be90adbacf23fe0  gcc/testsuite/gfortran.dg/namelist_95.f90
  5bb683cd1debaa1e9955a1a2744501e2  gcc/testsuite/gfortran.dg/namelist_args.f90
  b8f12d194aa9b2cfb5214297f897456c  gcc/testsuite/gfortran.dg/namelist_assumed_char.f90
  73de646ecd69b0bf965fecc1ccd64052  gcc/testsuite/gfortran.dg/namelist_blockdata.f
! 069dbff7c2c727c922c2a492f0feb75e  gcc/testsuite/gfortran.dg/namelist_char_only.f90
! 3dfc7e6347ed0523230d48e97d9042b3  gcc/testsuite/gfortran.dg/namelist_empty.f90
! 87e0b59db8a6083898dd74753c88ce60  gcc/testsuite/gfortran.dg/namelist_internal.f90
  d141d10a4cfc146257cc0abe77e2cdb4  gcc/testsuite/gfortran.dg/namelist_print_1.f
! e0d5d7f85bba8e168fd923e2a3baf213  gcc/testsuite/gfortran.dg/namelist_print_2.f
! 77a863456c920f8b38c23f942aff8668  gcc/testsuite/gfortran.dg/namelist_use.f90
! 70c4358d84683df78b118d7999bb1b73  gcc/testsuite/gfortran.dg/namelist_use_only.f90
! dc694cc929b8ef9ef2232f2ec23251d9  gcc/testsuite/gfortran.dg/namelist_utf8.f90
! 664b0c1459b8074fec8e240bd2271fc0  gcc/testsuite/gfortran.dg/nan_1.f90
! 852651c9bc7a912599f5e0a5627bc9a6  gcc/testsuite/gfortran.dg/nan_2.f90
! 2cf2302fda4a8c67ca49246b6706fa2e  gcc/testsuite/gfortran.dg/nan_3.f90
! 71e4cd480159723319c04bf80dfab0d2  gcc/testsuite/gfortran.dg/nan_4.f90
! b4b0c78f22f11c6c53d8d59ba064c55c  gcc/testsuite/gfortran.dg/nan_5.f90
! 005863302ec77ca9b1fb734b02887eb1  gcc/testsuite/gfortran.dg/nan_6.f90
! aac111856679c009c996d3b758d6a17d  gcc/testsuite/gfortran.dg/nan_7.f90
! 867c1c3a51bff0f40bf7e40b4cc18b0f  gcc/testsuite/gfortran.dg/nearest_1.f90
! f1966e1c67c9ba2dfcdda16abd2ace94  gcc/testsuite/gfortran.dg/nearest_2.f90
! 38d9e1cb44baabfc1344cf1601a11bfd  gcc/testsuite/gfortran.dg/nearest_3.f90
  07145278f20c5f56fba9fc10e9fbfba2  gcc/testsuite/gfortran.dg/nearest_4.f90
  e5f705447cfe3093ee85b04291d3f80c  gcc/testsuite/gfortran.dg/nearest_5.f90
! 1862cb9eebd4e552a120cfc0f5f7b9a3  gcc/testsuite/gfortran.dg/negative-z-descriptor.f90
! a21f25777b4cda2a6316642c11adb6d1  gcc/testsuite/gfortran.dg/negative_automatic_size.f90
! 8eedb73d9dfd28018ce1332aadfe1cb3  gcc/testsuite/gfortran.dg/negative_unit.f
! 9a3bd7abc822066c79161494b4b2e0f3  gcc/testsuite/gfortran.dg/negative_unit2.f90
  7c221920791262769e9d37d2b9e911ba  gcc/testsuite/gfortran.dg/negative_unit_check.f90
! 66a878d99164f6e218cdba1ebed21e1e  gcc/testsuite/gfortran.dg/negative_unit_int8.f
  ab537546a52738245cb944c4d7a60e26  gcc/testsuite/gfortran.dg/nested_allocatables_1.f90
  d0de8c6e722838d2c649fd8dc996ac1d  gcc/testsuite/gfortran.dg/nested_array_constructor_1.f90
! e72cd643c617fd37a801eb036400ab95  gcc/testsuite/gfortran.dg/nested_array_constructor_2.f90
! 57927c088d5b58d5af2a3ab1269af6bc  gcc/testsuite/gfortran.dg/nested_array_constructor_3.f90
! f968d2ff1a5c9937aa6cdd5b5bfa8863  gcc/testsuite/gfortran.dg/nested_array_constructor_4.f90
  4dafecb55107a2abac0649671f367a0c  gcc/testsuite/gfortran.dg/nested_array_constructor_5.f90
  b550f0ef17e2d2dafc080a2821b4b744  gcc/testsuite/gfortran.dg/nested_array_constructor_6.f90
  e0d690246c1c48efdad4d0671ecda387  gcc/testsuite/gfortran.dg/nested_forall_1.f
! 6bf0b500db6bb39b1c1d2baaa97b0c88  gcc/testsuite/gfortran.dg/nested_modules_1.f90
! 4168640d7ca9eb502c19fd80288a82c7  gcc/testsuite/gfortran.dg/nested_modules_2.f90
! 80506fe15e570fa26cacd88f038cb89b  gcc/testsuite/gfortran.dg/nested_modules_3.f90
  b90601c72fd006ff2aa77fcdb00aa6ce  gcc/testsuite/gfortran.dg/nested_modules_4.f90
  73619cb120e4635548d1b5a21cdd499b  gcc/testsuite/gfortran.dg/nested_modules_5.f90
  4d3ffeebc8630b590e4055dcd235bedc  gcc/testsuite/gfortran.dg/nested_modules_6.f90
  730255e540584d9c74033c64ae070925  gcc/testsuite/gfortran.dg/nested_reshape.f90
! 7a5c853472af3c05a8afc2f8d7ad7adb  gcc/testsuite/gfortran.dg/nesting_1.f90
  6b992b6c61a7c0311f95207c9fb8ccaa  gcc/testsuite/gfortran.dg/nesting_2.f90
  65ed039732aa02c5d870a2ab5b4ab69a  gcc/testsuite/gfortran.dg/nesting_3.f90
! 03d2c53154a6fdfb847bc51265711478  gcc/testsuite/gfortran.dg/new_line.f90
! 49edf8163e973d94178cd2d612a7b4b2  gcc/testsuite/gfortran.dg/newunit_1.f90
  98b3add6564d9cb2c9fce79f49339208  gcc/testsuite/gfortran.dg/newunit_2.f90
! 6aa623107a603714b8177f7ed1641e4d  gcc/testsuite/gfortran.dg/newunit_3.f90
  5e23e9344ec40ae6abce368533f2f757  gcc/testsuite/gfortran.dg/newunit_4.f90
! cf1aadbb18d5e6f8399c252ebc5de0bf  gcc/testsuite/gfortran.dg/nint_1.f90
! 13d28611ec12cad2c98a2b98760c1cfa  gcc/testsuite/gfortran.dg/nint_2.f90
  f867bd2d1caf94b8344ac3386b825ea1  gcc/testsuite/gfortran.dg/nint_p7.f90
  03b84fc5eca43cc5d1a0b1a93937da73  gcc/testsuite/gfortran.dg/no_arg_check_1.f90
! 303a890b2110e8215f31f06f3296a575  gcc/testsuite/gfortran.dg/no_arg_check_2.f90
  b737c11615e1c006ec919afcf954359a  gcc/testsuite/gfortran.dg/no_arg_check_3.f90
! b8ed55f3a0b0c5b3a0d9e46a8d126422  gcc/testsuite/gfortran.dg/no_range_check_1.f90
! 10ba36a54e4167012d313c9d133e2697  gcc/testsuite/gfortran.dg/no_range_check_2.f90
! 7a7b003567018991df7e9b92b1a727e8  gcc/testsuite/gfortran.dg/no_range_check_3.f90
  af0220988dae78874b44c32c38151dba  gcc/testsuite/gfortran.dg/no_unit_error_1.f90
! dcf2b1740ef71dad5a682ea69da7143e  gcc/testsuite/gfortran.dg/noadv_size.f90
  40fc0414c2765c255df26d0c34749b0e  gcc/testsuite/gfortran.dg/non_module_public.f90
! 35eb73c9b56e47a30bea45c41325ad03  gcc/testsuite/gfortran.dg/nonreturning_statements.f90
! 1f67067979d7199fd7dbba39004a3fe4  gcc/testsuite/gfortran.dg/norm2_1.f90
  6f54fe79e2eb8cb9328952596d21ee2f  gcc/testsuite/gfortran.dg/norm2_2.f90
! 44c34fe70136778642bfd549f5a8c10c  gcc/testsuite/gfortran.dg/norm2_3.f90
  0e5768746e4be176f4198f70b4bcd7bf  gcc/testsuite/gfortran.dg/norm2_4.f90
  41f479f6658a7460d21bd2db7170b23b  gcc/testsuite/gfortran.dg/norm2_5.f90
! b2823ca785899e4525f0fc17a220141f  gcc/testsuite/gfortran.dg/nosigned_zero_1.f90
! 1b365995caecbc534832648bf925fa96  gcc/testsuite/gfortran.dg/nosigned_zero_2.f90
! 91353d61f3211c7a23b612772e08fd95  gcc/testsuite/gfortran.dg/nosigned_zero_3.f90
  159e718b6cdc3ab81ad5a1d7d7784a9e  gcc/testsuite/gfortran.dg/null1.f90
  3fb21e1a3ab7abb4fda4c7de5e911da6  gcc/testsuite/gfortran.dg/null_1.f90
  395e8ab85b617da87692d07766c92d12  gcc/testsuite/gfortran.dg/null_2.f90
  4a039c37a090768395179ad5abf300cc  gcc/testsuite/gfortran.dg/null_3.f90
! e5fa40276b7e0de18f35bf0ad1ffb8bc  gcc/testsuite/gfortran.dg/null_4.f90
  65ff08beb375c1acdb951386b5902413  gcc/testsuite/gfortran.dg/null_5.f90
  e67abf33c2578358a5d5bab3e11f00e9  gcc/testsuite/gfortran.dg/null_6.f90
  4f1c65ac34bcf6b5e6d3fa579b4e5be7  gcc/testsuite/gfortran.dg/null_7.f90
  a268bf435ff3e542009031168b6619a0  gcc/testsuite/gfortran.dg/null_8.f90
! ec5957a6e0e29cbef74656afc663b247  gcc/testsuite/gfortran.dg/null_9.f90
  fb9d6abbd9b9049c00ee6e992d1a8859  gcc/testsuite/gfortran.dg/null_actual.f90
  eb6af590881f3e995fc6b2c78089f277  gcc/testsuite/gfortran.dg/nullify_1.f
  f202e3843710f9492560538fa53c3847  gcc/testsuite/gfortran.dg/nullify_2.f90
! 7c88f708900f1ab1e33baa8ab2493749  gcc/testsuite/gfortran.dg/nullify_3.f90
  5917ff71bf25a141d882878e441dc15d  gcc/testsuite/gfortran.dg/nullify_4.f90
! 888d6e31ae9d0c8f115f976ee906cea6  gcc/testsuite/gfortran.dg/num_images_1.f90
  97d9003b405f5e3d56a941b54189717c  gcc/testsuite/gfortran.dg/old_style_init.f90
! 771ea0a57fe756d8e7d972b01fe06d71  gcc/testsuite/gfortran.dg/oldstyle_1.f90
  a6de0d0b913df7bf4f7e924d87693c5e  gcc/testsuite/gfortran.dg/oldstyle_2.f90
  22eb37df11114e6c809b504360ee7009  gcc/testsuite/gfortran.dg/oldstyle_3.f90
  3dd41260093d8cf9e7bbb41939229a8c  gcc/testsuite/gfortran.dg/oldstyle_4.f90
--- 55487,55647 ----
  7edbf7702c951c3e0a0ca2cf976756da  gcc/testsuite/gfortran.dg/namelist_34.f90
  ea3c8aeb506b4c30f03aaff80bc6ee7a  gcc/testsuite/gfortran.dg/namelist_35.f90
  373abe3a1f3a9c3faa08c086af049046  gcc/testsuite/gfortran.dg/namelist_36.f90
! 513af3a227e4096c3cc84aa6d904c99a  gcc/testsuite/gfortran.dg/namelist_37.f90
! 23a7eba590f0e92297cfe998826840ea  gcc/testsuite/gfortran.dg/namelist_38.f90
! 692c5f326734d09e4cc39080826d1bf5  gcc/testsuite/gfortran.dg/namelist_39.f90
  3edd2195cb059b134e2507cf9d3a1fd5  gcc/testsuite/gfortran.dg/namelist_4.f90
! 2cda9deb8eef0ce04452629ebaab569e  gcc/testsuite/gfortran.dg/namelist_40.f90
! 991c2beb9a4db0c3b864d7500049c6ea  gcc/testsuite/gfortran.dg/namelist_41.f90
! ba6d2f79d37acebb8a91ba057315885d  gcc/testsuite/gfortran.dg/namelist_42.f90
! 732629a66b2428e3812776ea7f02ab36  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
! 37c54f0459aea0308c9acf97dbd71683  gcc/testsuite/gfortran.dg/namelist_50.f90
! 15a7e3aa39944dcab6bc9ea932f4b9b0  gcc/testsuite/gfortran.dg/namelist_51.f90
! d8f3b5eed26251adb7bfe52f527367f0  gcc/testsuite/gfortran.dg/namelist_52.f90
! f87b0ba9a1d145bf3c643d6d97d9f423  gcc/testsuite/gfortran.dg/namelist_53.f90
! 0fa400c8c61efbd1c07cce6a3b9d0913  gcc/testsuite/gfortran.dg/namelist_54.f90
! 4c693b5864894ede36e23f9a46c8dbe1  gcc/testsuite/gfortran.dg/namelist_55.f90
! f681477f489c74c44d4984c74a9a68f7  gcc/testsuite/gfortran.dg/namelist_56.f90
! 604aa3807835e381fb22953902a19f00  gcc/testsuite/gfortran.dg/namelist_57.f90
! b92381025912fb51f31e49e111d1104f  gcc/testsuite/gfortran.dg/namelist_58.f90
! 30309b4743fae315372faf0662922f6e  gcc/testsuite/gfortran.dg/namelist_59.f90
! dc5afe095c6bafe14f1418a9207cdfdc  gcc/testsuite/gfortran.dg/namelist_60.f90
! 3f924e1bfe883cff8dae67b605ff7743  gcc/testsuite/gfortran.dg/namelist_61.f90
  63a9903ac7050fbcb5fceab5d99940cc  gcc/testsuite/gfortran.dg/namelist_62.f90
  1a77f58a5bbe7ab3ea11e337a4ff5baf  gcc/testsuite/gfortran.dg/namelist_63.f90
! 5bd96770b043ad2d447feb6b67068201  gcc/testsuite/gfortran.dg/namelist_64.f90
! a6028f8edf2fe30f2feafd17fb317448  gcc/testsuite/gfortran.dg/namelist_65.f90
  41f2464d86e65ebe0eaf5dd31c37c4d3  gcc/testsuite/gfortran.dg/namelist_66.f90
  fff1dec1ff55e7f0c4df6b2c87f63cf6  gcc/testsuite/gfortran.dg/namelist_67.f90
  be4372cc3bf01909c31f2a6fa02bc23a  gcc/testsuite/gfortran.dg/namelist_68.f90
! 9d7b9be097a8f1c901d253d70d1dcff6  gcc/testsuite/gfortran.dg/namelist_69.f90
! bc0fefa8b7e824804302732a242d7003  gcc/testsuite/gfortran.dg/namelist_70.f90
! 6e8c179a0071f4b44d20719195b152f9  gcc/testsuite/gfortran.dg/namelist_71.f90
! 7b514a6119d11e8260fd744fda53631a  gcc/testsuite/gfortran.dg/namelist_72.f
! a11f6a67dcef56efb1561aabfa1ee00a  gcc/testsuite/gfortran.dg/namelist_73.f90
  0f226e1334636bb1d113dca9fe6b029b  gcc/testsuite/gfortran.dg/namelist_74.f90
  de8d6a1c06b4a610092fc5ca2618716e  gcc/testsuite/gfortran.dg/namelist_75.f90
! 6c84482a316676e8f70efc9c6669cdb6  gcc/testsuite/gfortran.dg/namelist_76.f90
! 9dcff711ba4929a4d87dfc2288afd5c1  gcc/testsuite/gfortran.dg/namelist_77.f90
! eab8a087d9da7ea49efedd484776db59  gcc/testsuite/gfortran.dg/namelist_78.f90
! be64442c3059368345434e204fade392  gcc/testsuite/gfortran.dg/namelist_79.f90
! 39d43a564d586b8d587dde0730b1092b  gcc/testsuite/gfortran.dg/namelist_80.f90
! 6166be9196d844b8e54877ec8a569a0b  gcc/testsuite/gfortran.dg/namelist_81.f90
! a296908ecff4ded4e2606e013ec0101c  gcc/testsuite/gfortran.dg/namelist_82.f90
  7fcd29e2cf1d6789f4849f6a4b70d2d8  gcc/testsuite/gfortran.dg/namelist_83.f90
  22266f4109dcc292b6a3c9a8342fffc2  gcc/testsuite/gfortran.dg/namelist_83_2.f90
! 0ee2acf1f10c590b79ea8cd2adf581d8  gcc/testsuite/gfortran.dg/namelist_84.f90
! 5d3ea4b58fe27f7cc38a9fff445ffae0  gcc/testsuite/gfortran.dg/namelist_85.f90
! 8a44abecadad60d4f50b23cf86e46a71  gcc/testsuite/gfortran.dg/namelist_86.f90
! 5fdaa4ec499888c9f6c5a1418d8380a9  gcc/testsuite/gfortran.dg/namelist_87.f90
! c61ed5cd4078f56dac02eb35cd94fbbc  gcc/testsuite/gfortran.dg/namelist_88.f90
! dc493efcf939729cfce285bf639caddb  gcc/testsuite/gfortran.dg/namelist_89.f90
! 4ef787d3b329ba8e72fd71e43eeab01a  gcc/testsuite/gfortran.dg/namelist_90.f
  20bb07eff1484cfb0a4bf5163c24d6c6  gcc/testsuite/gfortran.dg/namelist_91.f90
  51160c49eed98e14da5d3920d056e019  gcc/testsuite/gfortran.dg/namelist_92.f90
  7b88fbd78fb236f8e230a23c888d825f  gcc/testsuite/gfortran.dg/namelist_93.f90
  ef829c1a33829b47520efa96e8980360  gcc/testsuite/gfortran.dg/namelist_94.f90
! f6900646010877f1bf8da73bad033bbb  gcc/testsuite/gfortran.dg/namelist_95.f90
  5bb683cd1debaa1e9955a1a2744501e2  gcc/testsuite/gfortran.dg/namelist_args.f90
  b8f12d194aa9b2cfb5214297f897456c  gcc/testsuite/gfortran.dg/namelist_assumed_char.f90
  73de646ecd69b0bf965fecc1ccd64052  gcc/testsuite/gfortran.dg/namelist_blockdata.f
! 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
! 3f4adc5369c82fc68c4d2f0324ae1584  gcc/testsuite/gfortran.dg/namelist_utf8.f90
! 9f0bef10427640d2c4c18b50fd7123d6  gcc/testsuite/gfortran.dg/nan_1.f90
! 128d72d6780e60c7c3eeb5c8d1774a1a  gcc/testsuite/gfortran.dg/nan_2.f90
! e9df91557e2042620e5ee9da159995f4  gcc/testsuite/gfortran.dg/nan_3.f90
! 55c820614f205150f0f72b2996be1bad  gcc/testsuite/gfortran.dg/nan_4.f90
! 3c6d9d4cb0dcfd2eb52f29378db36b42  gcc/testsuite/gfortran.dg/nan_5.f90
! 76fd99a361b25a1b37f271ff1254c5ec  gcc/testsuite/gfortran.dg/nan_6.f90
! 4277e715a78a4042a9eb70f20e475c08  gcc/testsuite/gfortran.dg/nan_7.f90
! ec8ad27c7b7f915615238a857e84135c  gcc/testsuite/gfortran.dg/nearest_1.f90
! 10bf2ae021eab57e87235d0b432e3f1d  gcc/testsuite/gfortran.dg/nearest_2.f90
! af75b5cd39ee4dd2cfa36f1249275586  gcc/testsuite/gfortran.dg/nearest_3.f90
  07145278f20c5f56fba9fc10e9fbfba2  gcc/testsuite/gfortran.dg/nearest_4.f90
  e5f705447cfe3093ee85b04291d3f80c  gcc/testsuite/gfortran.dg/nearest_5.f90
! 5d4401879d53df84adcf50a08316a8f8  gcc/testsuite/gfortran.dg/negative-z-descriptor.f90
! d2f9406b4dddc3388ec13c7a6343827c  gcc/testsuite/gfortran.dg/negative_automatic_size.f90
! e1c6d38824a9f8693b5457db2f9968c6  gcc/testsuite/gfortran.dg/negative_unit.f
! ffd3c63a032ebdbd1bcf3a606aca77c4  gcc/testsuite/gfortran.dg/negative_unit2.f90
  7c221920791262769e9d37d2b9e911ba  gcc/testsuite/gfortran.dg/negative_unit_check.f90
! 3ca5437e5d3b71c885991cf2a51bd989  gcc/testsuite/gfortran.dg/negative_unit_int8.f
  ab537546a52738245cb944c4d7a60e26  gcc/testsuite/gfortran.dg/nested_allocatables_1.f90
  d0de8c6e722838d2c649fd8dc996ac1d  gcc/testsuite/gfortran.dg/nested_array_constructor_1.f90
! 4fc858942e917d4f2c2eb1c3c3cac5b3  gcc/testsuite/gfortran.dg/nested_array_constructor_2.f90
! 7da9d0c37beb8de47769dc8516a40f25  gcc/testsuite/gfortran.dg/nested_array_constructor_3.f90
! 7bb9ecf9c1999676b534f244530f0a48  gcc/testsuite/gfortran.dg/nested_array_constructor_4.f90
  4dafecb55107a2abac0649671f367a0c  gcc/testsuite/gfortran.dg/nested_array_constructor_5.f90
  b550f0ef17e2d2dafc080a2821b4b744  gcc/testsuite/gfortran.dg/nested_array_constructor_6.f90
  e0d690246c1c48efdad4d0671ecda387  gcc/testsuite/gfortran.dg/nested_forall_1.f
! 4d4e53f43d6483a8fa9c3ca73c828ba2  gcc/testsuite/gfortran.dg/nested_modules_1.f90
! 80dcf4de9d622710e5f442069dc5db95  gcc/testsuite/gfortran.dg/nested_modules_2.f90
! 5e8dbba6c4844e149a7765dfc6fe4eeb  gcc/testsuite/gfortran.dg/nested_modules_3.f90
  b90601c72fd006ff2aa77fcdb00aa6ce  gcc/testsuite/gfortran.dg/nested_modules_4.f90
  73619cb120e4635548d1b5a21cdd499b  gcc/testsuite/gfortran.dg/nested_modules_5.f90
  4d3ffeebc8630b590e4055dcd235bedc  gcc/testsuite/gfortran.dg/nested_modules_6.f90
  730255e540584d9c74033c64ae070925  gcc/testsuite/gfortran.dg/nested_reshape.f90
! feca0a0c225621f2fca71b12ab07a76f  gcc/testsuite/gfortran.dg/nesting_1.f90
  6b992b6c61a7c0311f95207c9fb8ccaa  gcc/testsuite/gfortran.dg/nesting_2.f90
  65ed039732aa02c5d870a2ab5b4ab69a  gcc/testsuite/gfortran.dg/nesting_3.f90
! df35ee2a2e87269c6dbeb50e7dd8b6f5  gcc/testsuite/gfortran.dg/new_line.f90
! 619d918964cd5bda0aab70ff07a852dd  gcc/testsuite/gfortran.dg/newunit_1.f90
  98b3add6564d9cb2c9fce79f49339208  gcc/testsuite/gfortran.dg/newunit_2.f90
! 13709534f424482b5ede04c30fa01207  gcc/testsuite/gfortran.dg/newunit_3.f90
  5e23e9344ec40ae6abce368533f2f757  gcc/testsuite/gfortran.dg/newunit_4.f90
! 963f1d68f1bcd015432cfa14959483d0  gcc/testsuite/gfortran.dg/newunit_5.f90.f90
! 25543ea4ce258c615de028583580ae15  gcc/testsuite/gfortran.dg/nint_1.f90
! 16d9cc312dc3603f84627c0edcbc49a2  gcc/testsuite/gfortran.dg/nint_2.f90
  f867bd2d1caf94b8344ac3386b825ea1  gcc/testsuite/gfortran.dg/nint_p7.f90
  03b84fc5eca43cc5d1a0b1a93937da73  gcc/testsuite/gfortran.dg/no_arg_check_1.f90
! dc211466d922cffe5d004141df4e7358  gcc/testsuite/gfortran.dg/no_arg_check_2.f90
  b737c11615e1c006ec919afcf954359a  gcc/testsuite/gfortran.dg/no_arg_check_3.f90
! 549a1f2c46b7c149d7bd62f485d2e1a9  gcc/testsuite/gfortran.dg/no_range_check_1.f90
! 1b8a194599702e6446e415880e67121d  gcc/testsuite/gfortran.dg/no_range_check_2.f90
! 7f478cdb5ae81598870d41b88b95710c  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
  40fc0414c2765c255df26d0c34749b0e  gcc/testsuite/gfortran.dg/non_module_public.f90
! 77360dec8f5c7897afaa0c9d1c0c4a0c  gcc/testsuite/gfortran.dg/nonreturning_statements.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
  0e5768746e4be176f4198f70b4bcd7bf  gcc/testsuite/gfortran.dg/norm2_4.f90
  41f479f6658a7460d21bd2db7170b23b  gcc/testsuite/gfortran.dg/norm2_5.f90
! e173c730fdb1e59540526990a6a25637  gcc/testsuite/gfortran.dg/nosigned_zero_1.f90
! 0c35b20ecb7e3f8f1294f1cb87227793  gcc/testsuite/gfortran.dg/nosigned_zero_2.f90
! 341a14e8091fc87f2723562c4d8c22c6  gcc/testsuite/gfortran.dg/nosigned_zero_3.f90
  159e718b6cdc3ab81ad5a1d7d7784a9e  gcc/testsuite/gfortran.dg/null1.f90
  3fb21e1a3ab7abb4fda4c7de5e911da6  gcc/testsuite/gfortran.dg/null_1.f90
  395e8ab85b617da87692d07766c92d12  gcc/testsuite/gfortran.dg/null_2.f90
  4a039c37a090768395179ad5abf300cc  gcc/testsuite/gfortran.dg/null_3.f90
! b6566af38ae48224fe3e5a1df4414624  gcc/testsuite/gfortran.dg/null_4.f90
  65ff08beb375c1acdb951386b5902413  gcc/testsuite/gfortran.dg/null_5.f90
  e67abf33c2578358a5d5bab3e11f00e9  gcc/testsuite/gfortran.dg/null_6.f90
  4f1c65ac34bcf6b5e6d3fa579b4e5be7  gcc/testsuite/gfortran.dg/null_7.f90
  a268bf435ff3e542009031168b6619a0  gcc/testsuite/gfortran.dg/null_8.f90
! f1e3cfba25a768bf7f9073932a36c7db  gcc/testsuite/gfortran.dg/null_9.f90
  fb9d6abbd9b9049c00ee6e992d1a8859  gcc/testsuite/gfortran.dg/null_actual.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
  5917ff71bf25a141d882878e441dc15d  gcc/testsuite/gfortran.dg/nullify_4.f90
! bcf5d721d90103bd1208f8548c93c54e  gcc/testsuite/gfortran.dg/num_images_1.f90
! 2b630ef1ec72104833ded7049a1347a1  gcc/testsuite/gfortran.dg/o_fast_stacksize.f90
  97d9003b405f5e3d56a941b54189717c  gcc/testsuite/gfortran.dg/old_style_init.f90
! 07622fe916d0b006deb7094aca26b228  gcc/testsuite/gfortran.dg/oldstyle_1.f90
  a6de0d0b913df7bf4f7e924d87693c5e  gcc/testsuite/gfortran.dg/oldstyle_2.f90
  22eb37df11114e6c809b504360ee7009  gcc/testsuite/gfortran.dg/oldstyle_3.f90
  3dd41260093d8cf9e7bbb41939229a8c  gcc/testsuite/gfortran.dg/oldstyle_4.f90
*************** a6de0d0b913df7bf4f7e924d87693c5e  gcc/te
*** 52004,52018 ****
  adbcc21a5778904b9a3a281e08e68479  gcc/testsuite/gfortran.dg/only_clause_main.c
  2ec0da16b8d33ec015c6c20f193ee162  gcc/testsuite/gfortran.dg/open-options-blanks.f
  941113644c9b039dadaf2ea8f8b4331d  gcc/testsuite/gfortran.dg/open_access_1.f90
! 13009e66dc6f9b16721a16a34cde667c  gcc/testsuite/gfortran.dg/open_access_append_1.f90
! 07bbca2a92e271da49863d1a9c23302e  gcc/testsuite/gfortran.dg/open_access_append_2.f90
! 056ffae88b3088dd3d1b3518d375e777  gcc/testsuite/gfortran.dg/open_errors.f90
  6fb7dc6e08b30cbdd066ca308858d827  gcc/testsuite/gfortran.dg/open_errors_2.f90
! fb6ee241a35e8387776b1c1e3c6ed91d  gcc/testsuite/gfortran.dg/open_negative_unit_1.f90
! 628a0780d0bb94b745768dc18180fe34  gcc/testsuite/gfortran.dg/open_new.f90
  78a78f353adc1405f6edacf2b38e9f04  gcc/testsuite/gfortran.dg/open_new_segv.f90
  ef1a09bc092a9a36cc34b1e31d30a244  gcc/testsuite/gfortran.dg/open_nounit.f90
! 7ec3bc06ec3c9c7b8766d56d6b76386f  gcc/testsuite/gfortran.dg/open_readonly_1.f90
  5ccf7de561546930e7dadd4fdbad8762  gcc/testsuite/gfortran.dg/open_status_1.f90
  38f698a558e9b8d54f6f0ae2970a5b41  gcc/testsuite/gfortran.dg/open_status_2.f90
  e548fbe30e98c9d7ac1106482dbc7e3e  gcc/testsuite/gfortran.dg/open_status_3.f90
--- 55649,55663 ----
  adbcc21a5778904b9a3a281e08e68479  gcc/testsuite/gfortran.dg/only_clause_main.c
  2ec0da16b8d33ec015c6c20f193ee162  gcc/testsuite/gfortran.dg/open-options-blanks.f
  941113644c9b039dadaf2ea8f8b4331d  gcc/testsuite/gfortran.dg/open_access_1.f90
! 19378b7087a6c99331796584a6ce003e  gcc/testsuite/gfortran.dg/open_access_append_1.f90
! 71446ab9655e9bc9f1baaf1053988893  gcc/testsuite/gfortran.dg/open_access_append_2.f90
! b107c7836f091c7e9cddaebbd3bcba8b  gcc/testsuite/gfortran.dg/open_errors.f90
  6fb7dc6e08b30cbdd066ca308858d827  gcc/testsuite/gfortran.dg/open_errors_2.f90
! 9fe509e58430d4ddd800ef68157ebdfc  gcc/testsuite/gfortran.dg/open_negative_unit_1.f90
! 120a5df13a5d1da5b8e715bc70c4f3d6  gcc/testsuite/gfortran.dg/open_new.f90
  78a78f353adc1405f6edacf2b38e9f04  gcc/testsuite/gfortran.dg/open_new_segv.f90
  ef1a09bc092a9a36cc34b1e31d30a244  gcc/testsuite/gfortran.dg/open_nounit.f90
! 7d23330c4638c305a1e8b988c264b0bb  gcc/testsuite/gfortran.dg/open_readonly_1.f90
  5ccf7de561546930e7dadd4fdbad8762  gcc/testsuite/gfortran.dg/open_status_1.f90
  38f698a558e9b8d54f6f0ae2970a5b41  gcc/testsuite/gfortran.dg/open_status_2.f90
  e548fbe30e98c9d7ac1106482dbc7e3e  gcc/testsuite/gfortran.dg/open_status_3.f90
*************** eb1c5329e2d84903d42f49f3c0a75350  gcc/te
*** 52022,52028 ****
  13b9efd2d6877e1ce4634b24aac8b5fc  gcc/testsuite/gfortran.dg/openmp-define-1.f90
  7c3311ed70efe122c0482f92398333c9  gcc/testsuite/gfortran.dg/openmp-define-2.f90
  9fb28c099543f7f38e9a0dbcdb890070  gcc/testsuite/gfortran.dg/openmp-define-3.f90
! 343d2117bb7c6e6b90b647727aa8bad0  gcc/testsuite/gfortran.dg/operator_1.f90
  b17cec21502c8794736dc737cec00cef  gcc/testsuite/gfortran.dg/operator_2.f90
  0dd70087c9deb3c1435a846982d5b717  gcc/testsuite/gfortran.dg/operator_3.f90
  70da80358a0fbfbd9aca186ba868460e  gcc/testsuite/gfortran.dg/operator_4.f90
--- 55667,55673 ----
  13b9efd2d6877e1ce4634b24aac8b5fc  gcc/testsuite/gfortran.dg/openmp-define-1.f90
  7c3311ed70efe122c0482f92398333c9  gcc/testsuite/gfortran.dg/openmp-define-2.f90
  9fb28c099543f7f38e9a0dbcdb890070  gcc/testsuite/gfortran.dg/openmp-define-3.f90
! 1053eca20a7e15049ebb36ade3724790  gcc/testsuite/gfortran.dg/operator_1.f90
  b17cec21502c8794736dc737cec00cef  gcc/testsuite/gfortran.dg/operator_2.f90
  0dd70087c9deb3c1435a846982d5b717  gcc/testsuite/gfortran.dg/operator_3.f90
  70da80358a0fbfbd9aca186ba868460e  gcc/testsuite/gfortran.dg/operator_4.f90
*************** b364b3ff21603caf412b448a464408d0  gcc/te
*** 52030,52101 ****
  7b68aa707542aea02754d20e021f0046  gcc/testsuite/gfortran.dg/operator_6.f90
  ff989302c0eaa3dd486cbb3c28260163  gcc/testsuite/gfortran.dg/operator_7.f90
  42e0fc1830b7ed49ee54d17cf4cbdabd  gcc/testsuite/gfortran.dg/operator_c1202.f90
! 6f6725210595ae4ed04fab6690a29ead  gcc/testsuite/gfortran.dg/optional_absent_1.f90
! b38378f89611f4ae3fbc2816a1d98c91  gcc/testsuite/gfortran.dg/optional_absent_2.f90
! f33e090759181aa4f98b1e724a4d0363  gcc/testsuite/gfortran.dg/optional_absent_3.f90
  ba5fab0a3379b1d0cdf3afb12ac1dd20  gcc/testsuite/gfortran.dg/optional_assumed_charlen_1.f90
! ed1f23fc4b66b1d18aca614bc2750900  gcc/testsuite/gfortran.dg/optional_class_1.f90
  7fedb812261e488372bc4439b553156f  gcc/testsuite/gfortran.dg/optional_dim.f90
! 93c5cc54a63cfe4d2742f118580c6eac  gcc/testsuite/gfortran.dg/optional_dim_2.f90
! 9d32902c6d619726c8603ca062847f7e  gcc/testsuite/gfortran.dg/optional_dim_3.f90
  69260505aedbce8dd9e070f70eaf7c12  gcc/testsuite/gfortran.dg/optional_mask.f90
! c074d0b17ee97b46a78e3fe132336b7f  gcc/testsuite/gfortran.dg/output_exponents_1.f90
! 094dd4021b3c65f856bd1600ddc142f1  gcc/testsuite/gfortran.dg/overload_1.f90
! a2257a682113189ebd1e25dcac5c1e54  gcc/testsuite/gfortran.dg/overload_2.f90
! 1be3360c24e41628de34f2a5815ee94f  gcc/testsuite/gfortran.dg/overwrite_1.f
  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
  d880b124cb04a632ccbd4e865126efb9  gcc/testsuite/gfortran.dg/pack_vector_1.f90
! ca8a7af6f8bb7f6ff4a50754b6ccaf23  gcc/testsuite/gfortran.dg/pad_no.f90
  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
! 40b659893ff3514f321bc4fcfbf94a0c  gcc/testsuite/gfortran.dg/parameter_array_init_1.f90
! 124ff0a0db2974c0a910151063e9ad60  gcc/testsuite/gfortran.dg/parameter_array_init_2.f90
  7eb8ecb8ef883ba9e4633147c30b66c6  gcc/testsuite/gfortran.dg/parameter_array_init_3.f90
! 743f4035acb3ea39dabb3983484b1186  gcc/testsuite/gfortran.dg/parameter_array_init_4.f90
! 0737f2d5184ef66b181d52d7180fd618  gcc/testsuite/gfortran.dg/parameter_array_init_5.f90
  d46e6ca33ad0c6569ce38b09a28782f5  gcc/testsuite/gfortran.dg/parameter_array_init_6.f90
  61cf2ad0a3d886ac7684b6999c179389  gcc/testsuite/gfortran.dg/parameter_array_init_7.f90
  32c99065e26b34dfb314fdea08f82fe4  gcc/testsuite/gfortran.dg/parameter_array_ref_1.f90
  302ab3504a83b13e3ec7d1096f84ae36  gcc/testsuite/gfortran.dg/parameter_array_ref_2.f90
  23dcadce604501908a5e668b385325f3  gcc/testsuite/gfortran.dg/parameter_array_section_1.f90
! 24a45a5ae4e568e98331d7c7156527a6  gcc/testsuite/gfortran.dg/parameter_array_section_2.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
! 8186fee5d689f45d8c0b17dd1086bf5d  gcc/testsuite/gfortran.dg/parens_3.f90
  e105e31832fc448a5431c6aa3d02cf0c  gcc/testsuite/gfortran.dg/parens_4.f90
! 0ae66ee88a1484536a30b569ebc2a2e7  gcc/testsuite/gfortran.dg/parens_5.f90
! ed489587512c1d7394f661dd37f2d219  gcc/testsuite/gfortran.dg/parens_6.f90
  3f060b1d1d03f274c24c10dea64e0e03  gcc/testsuite/gfortran.dg/parens_7.f90
! 6cd7724311e20be8b7bd250f8f52d67c  gcc/testsuite/gfortran.dg/parent_result_ref_1.f90
! 855d7453a088e0ca71d04669339bd702  gcc/testsuite/gfortran.dg/parent_result_ref_2.f90
! db20f30e6be946f6f484e80c5c73c3db  gcc/testsuite/gfortran.dg/parent_result_ref_3.f90
! b5f0f449d26542aac867c4095c66d554  gcc/testsuite/gfortran.dg/parent_result_ref_4.f90
! 43f566531ccc93ae5087693b6d651240  gcc/testsuite/gfortran.dg/parity_1.f90
  02ee7d4d03a5c543289e7bc68bf7c89b  gcc/testsuite/gfortran.dg/parity_2.f90
  a9302b907ec874084e4eec106e266432  gcc/testsuite/gfortran.dg/parity_3.f90
  5e6b63c9dcbd7769758d2ef044fb0a70  gcc/testsuite/gfortran.dg/parloops-exit-first-loop-alt-2.f95
  c61e4e9f6a32de1ca3041987ea6be2b8  gcc/testsuite/gfortran.dg/parloops-exit-first-loop-alt.f95
! 167e2c845977efe871ac5273625f18f4  gcc/testsuite/gfortran.dg/past_eor.f90
! e55919acdbb92c4efc5ba0cb2575ee35  gcc/testsuite/gfortran.dg/pointer_1.f90
  b836f09e53badc9a7066eb5692c28f74  gcc/testsuite/gfortran.dg/pointer_2.f90
  914ea2a0f7d0ad0e0524582a226dc29c  gcc/testsuite/gfortran.dg/pointer_assign_1.f90
! 2d1deaa396e8d7213284a905ea649f73  gcc/testsuite/gfortran.dg/pointer_assign_10.f90
! 6ded07f2e5f72fbe8da9aa5e8cb110f3  gcc/testsuite/gfortran.dg/pointer_assign_11.f90
  8716a372c931ca96cb06c0d77f6b27b1  gcc/testsuite/gfortran.dg/pointer_assign_2.f90
  9ff66a633865089dac5ced6229e1b3ba  gcc/testsuite/gfortran.dg/pointer_assign_3.f90
! 9d8b36dc0742011600653530623196c3  gcc/testsuite/gfortran.dg/pointer_assign_4.f90
  e2574152cb018b64d853d9c16cca8a48  gcc/testsuite/gfortran.dg/pointer_assign_5.f90
  428a98108de64d4c5e386550a78e7e98  gcc/testsuite/gfortran.dg/pointer_assign_6.f90
  fbecf805fcbd7b044ba50f01fe01ac0b  gcc/testsuite/gfortran.dg/pointer_assign_7.f90
! 80f234360c2ab3ae12d579282a4f1d26  gcc/testsuite/gfortran.dg/pointer_assign_8.f90
! be8e1046cba770985ff2571fc3926e11  gcc/testsuite/gfortran.dg/pointer_assign_9.f90
  069218b62dabb2d37cc99a988a6e16fc  gcc/testsuite/gfortran.dg/pointer_check_1.f90
! b2a541a0e14827e1ea961e3c4f6314ee  gcc/testsuite/gfortran.dg/pointer_check_10.f90
  eb194938d2c2fe84d215ede719f501c0  gcc/testsuite/gfortran.dg/pointer_check_11.f90
  4db68e1eec67942dd893a17d7e547d6e  gcc/testsuite/gfortran.dg/pointer_check_12.f90
  ccf9944fa34b0e93e5415a91ad21e966  gcc/testsuite/gfortran.dg/pointer_check_13.f90
--- 55675,55788 ----
  7b68aa707542aea02754d20e021f0046  gcc/testsuite/gfortran.dg/operator_6.f90
  ff989302c0eaa3dd486cbb3c28260163  gcc/testsuite/gfortran.dg/operator_7.f90
  42e0fc1830b7ed49ee54d17cf4cbdabd  gcc/testsuite/gfortran.dg/operator_c1202.f90
! 22f7aca59da7d6e1f570808dbd33aea4  gcc/testsuite/gfortran.dg/optional_absent_1.f90
! 312210dc1ff1e05299f1119ee49985a6  gcc/testsuite/gfortran.dg/optional_absent_2.f90
! 4550d5bd4f2bf82443d2fabda1853aa1  gcc/testsuite/gfortran.dg/optional_absent_3.f90
  ba5fab0a3379b1d0cdf3afb12ac1dd20  gcc/testsuite/gfortran.dg/optional_assumed_charlen_1.f90
! f676bdc486e460e9520582c3779a664a  gcc/testsuite/gfortran.dg/optional_class_1.f90
  7fedb812261e488372bc4439b553156f  gcc/testsuite/gfortran.dg/optional_dim.f90
! d14391d3ef215e7090f2482b1fb51242  gcc/testsuite/gfortran.dg/optional_dim_2.f90
! 4e39e84a6993508e47f3307461b281b8  gcc/testsuite/gfortran.dg/optional_dim_3.f90
  69260505aedbce8dd9e070f70eaf7c12  gcc/testsuite/gfortran.dg/optional_mask.f90
! 84bf1c77b23739b713d38c685e5dc0be  gcc/testsuite/gfortran.dg/output_exponents_1.f90
! 967b958bce8187f291f4a772e4548afe  gcc/testsuite/gfortran.dg/overload_1.f90
! 97e6af3887a4b07dce47c09a1d987e61  gcc/testsuite/gfortran.dg/overload_2.f90
! ce01df6835a25865cf1b057eedd850d3  gcc/testsuite/gfortran.dg/overwrite_1.f
  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
  d880b124cb04a632ccbd4e865126efb9  gcc/testsuite/gfortran.dg/pack_vector_1.f90
! 68c2ba7b60f8a149c807d828fa97f408  gcc/testsuite/gfortran.dg/pad_no.f90
  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
! 0f3a8b034189be0675510408db4dfea3  gcc/testsuite/gfortran.dg/parameter_array_format.f90
! 2ec8418b04e5c58ce37a28d90fd9a0b0  gcc/testsuite/gfortran.dg/parameter_array_init_1.f90
! 33a278ac374a09eed1abfd7123c6d4b2  gcc/testsuite/gfortran.dg/parameter_array_init_2.f90
  7eb8ecb8ef883ba9e4633147c30b66c6  gcc/testsuite/gfortran.dg/parameter_array_init_3.f90
! efbb6ce3288a6ccfd0b8e00a0b638ffd  gcc/testsuite/gfortran.dg/parameter_array_init_4.f90
! 8b0b6b89a6f9358c1b8def3660850c03  gcc/testsuite/gfortran.dg/parameter_array_init_5.f90
  d46e6ca33ad0c6569ce38b09a28782f5  gcc/testsuite/gfortran.dg/parameter_array_init_6.f90
  61cf2ad0a3d886ac7684b6999c179389  gcc/testsuite/gfortran.dg/parameter_array_init_7.f90
  32c99065e26b34dfb314fdea08f82fe4  gcc/testsuite/gfortran.dg/parameter_array_ref_1.f90
  302ab3504a83b13e3ec7d1096f84ae36  gcc/testsuite/gfortran.dg/parameter_array_ref_2.f90
  23dcadce604501908a5e668b385325f3  gcc/testsuite/gfortran.dg/parameter_array_section_1.f90
! d190e02a8ae85f12d6539440b8df8892  gcc/testsuite/gfortran.dg/parameter_array_section_2.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
! 1eb6fbe04d6a8fbc56a10c41d12b8e3f  gcc/testsuite/gfortran.dg/parens_6.f90
  3f060b1d1d03f274c24c10dea64e0e03  gcc/testsuite/gfortran.dg/parens_7.f90
! 7b1fa37dac0b35b6fb3f889445e03065  gcc/testsuite/gfortran.dg/parent_result_ref_1.f90
! 36044f274932be143497955366659d92  gcc/testsuite/gfortran.dg/parent_result_ref_2.f90
! 00d678a43cdd2d90c2676a3579a03574  gcc/testsuite/gfortran.dg/parent_result_ref_3.f90
! f4babd60b14bbbfcdec1b2c87a0c7b04  gcc/testsuite/gfortran.dg/parent_result_ref_4.f90
! 01c998344134fe2e55148c40ade7f197  gcc/testsuite/gfortran.dg/parity_1.f90
  02ee7d4d03a5c543289e7bc68bf7c89b  gcc/testsuite/gfortran.dg/parity_2.f90
  a9302b907ec874084e4eec106e266432  gcc/testsuite/gfortran.dg/parity_3.f90
  5e6b63c9dcbd7769758d2ef044fb0a70  gcc/testsuite/gfortran.dg/parloops-exit-first-loop-alt-2.f95
  c61e4e9f6a32de1ca3041987ea6be2b8  gcc/testsuite/gfortran.dg/parloops-exit-first-loop-alt.f95
! 4091b0cda1b37aa9933aa0582f11916a  gcc/testsuite/gfortran.dg/past_eor.f90
! 32e3a39285b3fee302b4ce0aa317c62f  gcc/testsuite/gfortran.dg/pdt_1.f03
! 87a73e9cfd1a075484405f19dbac3abe  gcc/testsuite/gfortran.dg/pdt_10.f03
! bbf73734b60d2500381f37fc07248411  gcc/testsuite/gfortran.dg/pdt_11.f03
! 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
! b513b4bf15b1449723618433325ad444  gcc/testsuite/gfortran.dg/pdt_16.f03
! 4483aa08269048d225897572d0fe2d01  gcc/testsuite/gfortran.dg/pdt_17.f03
! be693b3847d0256fa77c5e6d96396c97  gcc/testsuite/gfortran.dg/pdt_18.f03
! 1be387788d3dfc3e6ad6918a8d5f4291  gcc/testsuite/gfortran.dg/pdt_19.f03
! 3d1ced13c0fde7696153e2188eee96b6  gcc/testsuite/gfortran.dg/pdt_2.f03
! 9d88d900642baf2f0a480cf44ee666db  gcc/testsuite/gfortran.dg/pdt_20.f03
! 28c0797012a570952b5f39fde15bd010  gcc/testsuite/gfortran.dg/pdt_21.f03
! 28a0c6d98df2dac988135f6fd894acea  gcc/testsuite/gfortran.dg/pdt_22.f03
! d17e376a8cc641dbedaeffcce81d5297  gcc/testsuite/gfortran.dg/pdt_23.f03
! 74618f98f612c4722b0e366283ec8ca8  gcc/testsuite/gfortran.dg/pdt_24.f03
! eb4039c3932c35d645f8bcf1a7359daa  gcc/testsuite/gfortran.dg/pdt_25.f03
! d3869facbd48cd5e82791bacd1d3302e  gcc/testsuite/gfortran.dg/pdt_26.f03
! f67cfd0ae4d38f1ca5dc8d7f6e954087  gcc/testsuite/gfortran.dg/pdt_27.f03
! 119c5ba4d9c57d119d3a3ab40317d933  gcc/testsuite/gfortran.dg/pdt_28.f03
! 68b10a194ff6797eee8ecb042129b08f  gcc/testsuite/gfortran.dg/pdt_29.f03
! 467e7b0f7ffea3a05b9ac591c2ac05ee  gcc/testsuite/gfortran.dg/pdt_3.f03
! b01b9ceba6ffee67e956395356b126b5  gcc/testsuite/gfortran.dg/pdt_4.f03
! c5c92af1413fa2462f388d2ff5077773  gcc/testsuite/gfortran.dg/pdt_5.f03
! 65d2ad728417ad3174fc1ce2b51a458d  gcc/testsuite/gfortran.dg/pdt_6.f03
! d2c9dae0c6e2385c5712aba8e12a70ba  gcc/testsuite/gfortran.dg/pdt_7.f03
! e21f38a2db39f95405441b61c12cf1e6  gcc/testsuite/gfortran.dg/pdt_8.f03
! c621629f10feffbfa9fef1441a610e53  gcc/testsuite/gfortran.dg/pdt_9.f03
! 4555f630cb01a40d0eaf421fd7ad9e77  gcc/testsuite/gfortran.dg/pointer_1.f90
  b836f09e53badc9a7066eb5692c28f74  gcc/testsuite/gfortran.dg/pointer_2.f90
+ 620a59a97d6aa806a934ba7f7e67e932  gcc/testsuite/gfortran.dg/pointer_array_1.f90
+ 770f1ab071468199cc11d39d277e60e0  gcc/testsuite/gfortran.dg/pointer_array_2.f90
+ c17f47cef447c9ed69614ec0daa92b54  gcc/testsuite/gfortran.dg/pointer_array_3.f90
+ dfcbac44563ca824b08d9aae911c293a  gcc/testsuite/gfortran.dg/pointer_array_4.f90
+ 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
  914ea2a0f7d0ad0e0524582a226dc29c  gcc/testsuite/gfortran.dg/pointer_assign_1.f90
! d3ff5b316cd12c550dcd3a53eb6f9f8a  gcc/testsuite/gfortran.dg/pointer_assign_10.f90
! 5f97724392e43ad9b4aa51d588df9034  gcc/testsuite/gfortran.dg/pointer_assign_11.f90
  8716a372c931ca96cb06c0d77f6b27b1  gcc/testsuite/gfortran.dg/pointer_assign_2.f90
  9ff66a633865089dac5ced6229e1b3ba  gcc/testsuite/gfortran.dg/pointer_assign_3.f90
! 7d74d21e75c683b97fd68d13a54b02a1  gcc/testsuite/gfortran.dg/pointer_assign_4.f90
  e2574152cb018b64d853d9c16cca8a48  gcc/testsuite/gfortran.dg/pointer_assign_5.f90
  428a98108de64d4c5e386550a78e7e98  gcc/testsuite/gfortran.dg/pointer_assign_6.f90
  fbecf805fcbd7b044ba50f01fe01ac0b  gcc/testsuite/gfortran.dg/pointer_assign_7.f90
! 8dd121c1412524842dee105ae001f438  gcc/testsuite/gfortran.dg/pointer_assign_8.f90
! b9b73a57dd48739958a7cf6a364a410d  gcc/testsuite/gfortran.dg/pointer_assign_9.f90
  069218b62dabb2d37cc99a988a6e16fc  gcc/testsuite/gfortran.dg/pointer_check_1.f90
! 367c47d35ec81eb7fd1b80218a9110a1  gcc/testsuite/gfortran.dg/pointer_check_10.f90
  eb194938d2c2fe84d215ede719f501c0  gcc/testsuite/gfortran.dg/pointer_check_11.f90
  4db68e1eec67942dd893a17d7e547d6e  gcc/testsuite/gfortran.dg/pointer_check_12.f90
  ccf9944fa34b0e93e5415a91ad21e966  gcc/testsuite/gfortran.dg/pointer_check_13.f90
*************** ccf9944fa34b0e93e5415a91ad21e966  gcc/te
*** 52106,52212 ****
  bccf373219c2b18caf5fc387a98ef6c7  gcc/testsuite/gfortran.dg/pointer_check_6.f90
  13f204152d7f1039d26e0e0660e8da05  gcc/testsuite/gfortran.dg/pointer_check_7.f90
  d3eacc9eeebc922f1f5e4d6d5e3572e5  gcc/testsuite/gfortran.dg/pointer_check_8.f90
! acaeb1a96bd3b2f5a955b6a9d45405ee  gcc/testsuite/gfortran.dg/pointer_check_9.f90
  dee49a212dd5107b329f77509812986c  gcc/testsuite/gfortran.dg/pointer_comp_init_1.f90
  f054254e454828510bea70958afa02a8  gcc/testsuite/gfortran.dg/pointer_component_type_1.f90
! 4a32a5e4f2ce64fdc583aa08feed17fb  gcc/testsuite/gfortran.dg/pointer_function_actual_1.f90
! 53df30aa4d33665f06dffc149edb1acc  gcc/testsuite/gfortran.dg/pointer_function_actual_2.f90
! ca3502e61ad4ad83ad0d8c0bd4258847  gcc/testsuite/gfortran.dg/pointer_function_result_1.f90
! b8411fe9cca01b5165020fe5db99ea7f  gcc/testsuite/gfortran.dg/pointer_init_1.f90
  d65add36c892fbd171b2a6230e3df47a  gcc/testsuite/gfortran.dg/pointer_init_2.f90
! 420bfb631f3b55335367be5626fee801  gcc/testsuite/gfortran.dg/pointer_init_3.f90
! 4d72723b2b5af10ed43643040e25b44a  gcc/testsuite/gfortran.dg/pointer_init_4.f90
! 453ecb034e724f36fa5bedfa34421eb7  gcc/testsuite/gfortran.dg/pointer_init_5.f90
  d72c5595a92cdc30ae5c763e89917fad  gcc/testsuite/gfortran.dg/pointer_init_6.f90
  04a911b96a459127d681989557ce10aa  gcc/testsuite/gfortran.dg/pointer_init_7.f90
! 3207d3004ca83ffbdfb378e718c43744  gcc/testsuite/gfortran.dg/pointer_init_8.f90
! ea510da8f62c8fefcddeee09623cb9e9  gcc/testsuite/gfortran.dg/pointer_intent_1.f90
! df45593ceab569302723dbccf3cd63de  gcc/testsuite/gfortran.dg/pointer_intent_2.f90
! 9bb45e748921409aa8ed658c7f890789  gcc/testsuite/gfortran.dg/pointer_intent_3.f90
! 031abd1be1a5d4fe8ae675636a7cbb5c  gcc/testsuite/gfortran.dg/pointer_intent_4.f90
! 839f56bb5ca13b7135ab0bcf2db9f28d  gcc/testsuite/gfortran.dg/pointer_intent_5.f90
  e459085c84d8d965d44b2c8d69d7d0f3  gcc/testsuite/gfortran.dg/pointer_intent_6.f90
  32cd4c061b4a40c2cc07c876ae54d223  gcc/testsuite/gfortran.dg/pointer_intent_7.f90
  4cb0e95eb0d20ee0fcc1725ab11d6144  gcc/testsuite/gfortran.dg/pointer_remapping_1.f90
! 4697c9e74a72266374cb5c4662cd23af  gcc/testsuite/gfortran.dg/pointer_remapping_10.f90
  6b175e97afb4595e4ac40a6f738d0650  gcc/testsuite/gfortran.dg/pointer_remapping_2.f03
  841eb06a4452cf99c93590bce0d0b55f  gcc/testsuite/gfortran.dg/pointer_remapping_3.f08
! 97e39c6389f4945d8909eebac589ead3  gcc/testsuite/gfortran.dg/pointer_remapping_4.f03
! b4bcffcae1b7603d524ccc6f557e15c3  gcc/testsuite/gfortran.dg/pointer_remapping_5.f08
  9fe7220795bf2ba5b08766a8d3fe8872  gcc/testsuite/gfortran.dg/pointer_remapping_6.f08
  42d0b3637cf0fc17c6c348d7482fdc81  gcc/testsuite/gfortran.dg/pointer_remapping_7.f90
  12bee345e1e5943e7693700d9bf840b8  gcc/testsuite/gfortran.dg/pointer_remapping_8.f90
! f1c012312f9bf1ae9ce3870901d9c0c1  gcc/testsuite/gfortran.dg/pointer_remapping_9.f90
! c16280609dc7730832a35feb0e6580d7  gcc/testsuite/gfortran.dg/pointer_target_1.f90
! c5d46febe5bf7d0037cd3f088648815c  gcc/testsuite/gfortran.dg/pointer_target_2.f90
  f6b6005914441775d818c2e6aee2be62  gcc/testsuite/gfortran.dg/pointer_target_3.f90
  a9bf4794f30ae634c052287a5ba2cdf1  gcc/testsuite/gfortran.dg/pointer_target_4.f90
  969246e96b430086f177c2236957cc14  gcc/testsuite/gfortran.dg/pointer_to_substring.f90
! f7ee65e3499d1ea69e1d0d94a5d42207  gcc/testsuite/gfortran.dg/popcnt_poppar_1.F90
! 8c9f11a68f21d4aa99eb3568f1594b00  gcc/testsuite/gfortran.dg/popcnt_poppar_2.F90
! c47875bcd653c4574e99444029c51b62  gcc/testsuite/gfortran.dg/power.f90
! 26d9dbe0ae1eb5e0f06e479f6f9093e3  gcc/testsuite/gfortran.dg/power1.f90
  4481fbf7802bf5b9ef2d0c2cc5864d67  gcc/testsuite/gfortran.dg/power2.f90
! 90e297ae869d018726dbf021cf26ff59  gcc/testsuite/gfortran.dg/power_3.f90
! c90f7e25726cc6898d590f98aee096d5  gcc/testsuite/gfortran.dg/power_4.f90
! 9a44d42654a526adbe450d1ef2d6f771  gcc/testsuite/gfortran.dg/power_5.f90
  a3ab8fbef738997039cfd45f350461a3  gcc/testsuite/gfortran.dg/power_6.f90
! 41cf415c6e21f209054052055d3b27e2  gcc/testsuite/gfortran.dg/pr12884.f
! f2f5d37f01f228930742b800f664a82b  gcc/testsuite/gfortran.dg/pr15129.f90
! 84a2259df58a58af62b88732f4acd394  gcc/testsuite/gfortran.dg/pr15140.f90
  fb5f15b3c2517fe0b8083e8530c9bf2c  gcc/testsuite/gfortran.dg/pr15164.f90
! e856749a2f697d7f749055113e13a589  gcc/testsuite/gfortran.dg/pr15324.f90
! 0d49fe645c8bea4a403bf3eae7b4f6ec  gcc/testsuite/gfortran.dg/pr15332.f
  8569ddcb6485735077eff9f8bc355cee  gcc/testsuite/gfortran.dg/pr15754.f90
! 1064decb924f5160c5e679a826f47e77  gcc/testsuite/gfortran.dg/pr15957.f90
! 0296e5005333f2738bde95916625e019  gcc/testsuite/gfortran.dg/pr15959.f90
  ad1e12b0ee81b1c3058eb8ab9e285856  gcc/testsuite/gfortran.dg/pr16433.f
! c1664c5856f10474f433c1e8ab2e0171  gcc/testsuite/gfortran.dg/pr16597.f90
! a865a1b8fb2e27e3aaed7d95ad51a646  gcc/testsuite/gfortran.dg/pr16861.f90
  b7a6911e8fd3d3495dd0c48f723ecd83  gcc/testsuite/gfortran.dg/pr16935.f90
! e6648976e2e071c2d54ab7b1776a2f6c  gcc/testsuite/gfortran.dg/pr16938.f90
! 2bd7746b5b00b3df4fb38ae88daab005  gcc/testsuite/gfortran.dg/pr17090.f90
! d7b05f50e0308e7383d8b9331ed709bd  gcc/testsuite/gfortran.dg/pr17143.f90
! 34377ca3b6b0f72842218630e32f9fd3  gcc/testsuite/gfortran.dg/pr17164.f90
! 2e6f08546411ac6b177a5b4c708eceea  gcc/testsuite/gfortran.dg/pr17229.f
! 5536aee36343b23fff04ade3f6d4b5e5  gcc/testsuite/gfortran.dg/pr17285.f90
! 03fff15fe4f67881604c55607a8b3161  gcc/testsuite/gfortran.dg/pr17286.f90
! c47286695aa1b32f4890ea3de3b97646  gcc/testsuite/gfortran.dg/pr17472.f
! 222935db052aa742d2280bbda7340c79  gcc/testsuite/gfortran.dg/pr17612.f90
  48355196bcd7b95718ac99bb45de0103  gcc/testsuite/gfortran.dg/pr17615.f90
! a52ca99baacbe1af3d4c56b85bf2b7ed  gcc/testsuite/gfortran.dg/pr17706.f90
! 35b1683ab1fa453e9dabc5f0351359a3  gcc/testsuite/gfortran.dg/pr18025.f90
! ba2bc26e474a12a64d37ec3397c8589e  gcc/testsuite/gfortran.dg/pr18122.f90
! 3f50da8d9a18151ea2ebf9c715777c39  gcc/testsuite/gfortran.dg/pr18210.f90
! f9796b29ff5836464caab271b6d6fcd1  gcc/testsuite/gfortran.dg/pr18392.f90
! f514fa10c63980979c7a95b679ad7652  gcc/testsuite/gfortran.dg/pr19155.f
! 75e5ba36ae960a7e91a1f30c8835317f  gcc/testsuite/gfortran.dg/pr19216.f
! e438a8b638f669284ddf9fd1adbd7068  gcc/testsuite/gfortran.dg/pr19467.f90
! 00574db204a101f5bd852a0916a950a6  gcc/testsuite/gfortran.dg/pr19657.f
! ad2d44ff3edbc62e2015767d29642b15  gcc/testsuite/gfortran.dg/pr19926.f90
! 436429eb3bdf8e747e9baaf8030bbb4f  gcc/testsuite/gfortran.dg/pr19928-1.f90
! f9ceb2733fa7f30d63522b5c011b756f  gcc/testsuite/gfortran.dg/pr19928-2.f90
  3c1b21be918629039e10a6e59277c1bc  gcc/testsuite/gfortran.dg/pr19936_1.f90
  7fe5c318350a52400c5dbd328ca6b65f  gcc/testsuite/gfortran.dg/pr19936_2.f90
  a21cc4ab33b1cfd66732338936f2a4af  gcc/testsuite/gfortran.dg/pr19936_3.f90
! cb223efe34189d9896d0ce03642cccad  gcc/testsuite/gfortran.dg/pr20086.f90
! 72826984dececdeb4b637d32162bc923  gcc/testsuite/gfortran.dg/pr20124.f90
! 9a50ef705535ba09dbc6a8fd51438e90  gcc/testsuite/gfortran.dg/pr20163-2.f
! c6ce8ecc6c551d0297ab9962dca9fd6b  gcc/testsuite/gfortran.dg/pr20257.f90
! edfeecfc08651770dbce7ace561a6340  gcc/testsuite/gfortran.dg/pr20480.f90
! cf5290bb744487a97a10142f31277c9b  gcc/testsuite/gfortran.dg/pr20755.f
  7dbe1cf435cea8cdd4cc39e38447ddc4  gcc/testsuite/gfortran.dg/pr20865.f90
! 33c4a99e0d079d82323cb649c1ae2cf8  gcc/testsuite/gfortran.dg/pr20950.f
  9154ac7f3a89faaa7ea9e0dd5a858430  gcc/testsuite/gfortran.dg/pr20954.f
! b4eada0068eb23085e582567514188e7  gcc/testsuite/gfortran.dg/pr21177.f90
! 94c7741a42e1619f7af3844ae092ec61  gcc/testsuite/gfortran.dg/pr21730.f
! 1b57ac7ba822339cd8d85369f81b8f96  gcc/testsuite/gfortran.dg/pr22491.f
  dbfc80ddde02e81da94749ff32a32bd6  gcc/testsuite/gfortran.dg/pr23095.f
  18a963a12a2b15e718085744526b1722  gcc/testsuite/gfortran.dg/pr24823.f
! f1f0a1b63c158c6d6d8e894c0aea0483  gcc/testsuite/gfortran.dg/pr25603.f
  4f00dc3933336f591084f1b375009e07  gcc/testsuite/gfortran.dg/pr25923.f90
  66453cc49ba536feb5c18a7ac0ff04b7  gcc/testsuite/gfortran.dg/pr26246_1.f90
! 99247ee311ac878d4e077c9c22b99064  gcc/testsuite/gfortran.dg/pr26246_2.f90
  c5691130bd4c286f7eee40a2c5c77152  gcc/testsuite/gfortran.dg/pr26524.f
  9f6528d064e574fc551b12a4d61c890a  gcc/testsuite/gfortran.dg/pr28158.f90
  a677e692ddc8db95c44027d781286bb1  gcc/testsuite/gfortran.dg/pr28971.f90
--- 55793,55899 ----
  bccf373219c2b18caf5fc387a98ef6c7  gcc/testsuite/gfortran.dg/pointer_check_6.f90
  13f204152d7f1039d26e0e0660e8da05  gcc/testsuite/gfortran.dg/pointer_check_7.f90
  d3eacc9eeebc922f1f5e4d6d5e3572e5  gcc/testsuite/gfortran.dg/pointer_check_8.f90
! d858fb914a7dc267274b45a146b2baaf  gcc/testsuite/gfortran.dg/pointer_check_9.f90
  dee49a212dd5107b329f77509812986c  gcc/testsuite/gfortran.dg/pointer_comp_init_1.f90
  f054254e454828510bea70958afa02a8  gcc/testsuite/gfortran.dg/pointer_component_type_1.f90
! 6fb977abd18a4869ff8bb6608a7695f9  gcc/testsuite/gfortran.dg/pointer_function_actual_1.f90
! 5e77d8f7b840b6366d58246346c92b83  gcc/testsuite/gfortran.dg/pointer_function_actual_2.f90
! 05ded343d5757a1d80c1350087ddf1bf  gcc/testsuite/gfortran.dg/pointer_function_result_1.f90
! 091f26dce3f1337f614dd7d2bd57a24c  gcc/testsuite/gfortran.dg/pointer_init_1.f90
  d65add36c892fbd171b2a6230e3df47a  gcc/testsuite/gfortran.dg/pointer_init_2.f90
! 3c38f9677dcc8f4e2c42a0fd0cdeaa1d  gcc/testsuite/gfortran.dg/pointer_init_3.f90
! 3247bb0ee74a49cfeb46ba67cba9f540  gcc/testsuite/gfortran.dg/pointer_init_4.f90
! caa2926d7c04c6e94cd297a75e4b5b27  gcc/testsuite/gfortran.dg/pointer_init_5.f90
  d72c5595a92cdc30ae5c763e89917fad  gcc/testsuite/gfortran.dg/pointer_init_6.f90
  04a911b96a459127d681989557ce10aa  gcc/testsuite/gfortran.dg/pointer_init_7.f90
! 34debb190232d7a7d7ce70fab69c74a1  gcc/testsuite/gfortran.dg/pointer_init_8.f90
! 9ab9fe8f8f8f9a5addc7aeca15b824e0  gcc/testsuite/gfortran.dg/pointer_intent_1.f90
! 8f082970902b20e66b1d7de8946cb67d  gcc/testsuite/gfortran.dg/pointer_intent_2.f90
! 0bce4fe69b2109624408af870f003408  gcc/testsuite/gfortran.dg/pointer_intent_3.f90
! 959cd4b9044d52443d6a4959a8bc7496  gcc/testsuite/gfortran.dg/pointer_intent_4.f90
! 057bd7ad221bf91e2f022c2984e20cd7  gcc/testsuite/gfortran.dg/pointer_intent_5.f90
  e459085c84d8d965d44b2c8d69d7d0f3  gcc/testsuite/gfortran.dg/pointer_intent_6.f90
  32cd4c061b4a40c2cc07c876ae54d223  gcc/testsuite/gfortran.dg/pointer_intent_7.f90
  4cb0e95eb0d20ee0fcc1725ab11d6144  gcc/testsuite/gfortran.dg/pointer_remapping_1.f90
! cb90f303a1add40fdcfa44f9441d6094  gcc/testsuite/gfortran.dg/pointer_remapping_10.f90
  6b175e97afb4595e4ac40a6f738d0650  gcc/testsuite/gfortran.dg/pointer_remapping_2.f03
  841eb06a4452cf99c93590bce0d0b55f  gcc/testsuite/gfortran.dg/pointer_remapping_3.f08
! e540cc6a8cb72e77be208adc35ee8b6c  gcc/testsuite/gfortran.dg/pointer_remapping_4.f03
! b8aab92021e97be0b5e567b7f8f35d70  gcc/testsuite/gfortran.dg/pointer_remapping_5.f08
  9fe7220795bf2ba5b08766a8d3fe8872  gcc/testsuite/gfortran.dg/pointer_remapping_6.f08
  42d0b3637cf0fc17c6c348d7482fdc81  gcc/testsuite/gfortran.dg/pointer_remapping_7.f90
  12bee345e1e5943e7693700d9bf840b8  gcc/testsuite/gfortran.dg/pointer_remapping_8.f90
! d8216f1c6f58164941a4f30d1d01b735  gcc/testsuite/gfortran.dg/pointer_remapping_9.f90
! c331a12c7feb0099b427b615ae04dce5  gcc/testsuite/gfortran.dg/pointer_target_1.f90
! 200b6e38e58328bdc0670ea54e3585b7  gcc/testsuite/gfortran.dg/pointer_target_2.f90
  f6b6005914441775d818c2e6aee2be62  gcc/testsuite/gfortran.dg/pointer_target_3.f90
  a9bf4794f30ae634c052287a5ba2cdf1  gcc/testsuite/gfortran.dg/pointer_target_4.f90
  969246e96b430086f177c2236957cc14  gcc/testsuite/gfortran.dg/pointer_to_substring.f90
! 9447bbd3fcc4dcc71a0d1fbb28c4a362  gcc/testsuite/gfortran.dg/popcnt_poppar_1.F90
! 77d4e23700ce974339f5611f2e624c27  gcc/testsuite/gfortran.dg/popcnt_poppar_2.F90
! 3869225f03fb5d001028059c121d9134  gcc/testsuite/gfortran.dg/power.f90
! 11045741b4ed7c5c974c0263bda7d4e5  gcc/testsuite/gfortran.dg/power1.f90
  4481fbf7802bf5b9ef2d0c2cc5864d67  gcc/testsuite/gfortran.dg/power2.f90
! 085c39a4166c2bb920ee3f8775d41bb5  gcc/testsuite/gfortran.dg/power_3.f90
! e56589659150235b708a1f6ca0f9b2fa  gcc/testsuite/gfortran.dg/power_4.f90
! c893cc6bcb01079435bb1e32e1ab471e  gcc/testsuite/gfortran.dg/power_5.f90
  a3ab8fbef738997039cfd45f350461a3  gcc/testsuite/gfortran.dg/power_6.f90
! 984f8307f36d56a0b48b5acce2dd5eb5  gcc/testsuite/gfortran.dg/pr12884.f
! 64075248b9d1bffd6f380bb4e2a6eae0  gcc/testsuite/gfortran.dg/pr15129.f90
! e9cbd51db4e16292fc5dd1fead2e5a49  gcc/testsuite/gfortran.dg/pr15140.f90
  fb5f15b3c2517fe0b8083e8530c9bf2c  gcc/testsuite/gfortran.dg/pr15164.f90
! 146cca656e75166f32a0ec1cdb216ee2  gcc/testsuite/gfortran.dg/pr15324.f90
! 7f8e1de010f46d132b567298a02ba30d  gcc/testsuite/gfortran.dg/pr15332.f
  8569ddcb6485735077eff9f8bc355cee  gcc/testsuite/gfortran.dg/pr15754.f90
! 230c9c4f2a1327245ade01c25a409c3c  gcc/testsuite/gfortran.dg/pr15957.f90
! 9f6cefc0fe59d7d1c7d8299193164e03  gcc/testsuite/gfortran.dg/pr15959.f90
  ad1e12b0ee81b1c3058eb8ab9e285856  gcc/testsuite/gfortran.dg/pr16433.f
! 3c993a8cbfb38016132602138022cbac  gcc/testsuite/gfortran.dg/pr16597.f90
! b682ddcefc4889948bb9f5db0f52b18c  gcc/testsuite/gfortran.dg/pr16861.f90
  b7a6911e8fd3d3495dd0c48f723ecd83  gcc/testsuite/gfortran.dg/pr16935.f90
! 117986c4993a94dcfde34e9245866805  gcc/testsuite/gfortran.dg/pr16938.f90
! bbfc2994405ab4f819f4dfc639513cff  gcc/testsuite/gfortran.dg/pr17090.f90
! 4fd145b6431439495eba7a6c5becb6a5  gcc/testsuite/gfortran.dg/pr17143.f90
! d3bd969f46d957e2071d11596e73f046  gcc/testsuite/gfortran.dg/pr17164.f90
! d5a6a132461b96855569729028e6c916  gcc/testsuite/gfortran.dg/pr17229.f
! 55ca3baa611f8767d6e61e712d04f077  gcc/testsuite/gfortran.dg/pr17285.f90
! 46a0b6a2efffd698a932078c7c78c296  gcc/testsuite/gfortran.dg/pr17286.f90
! 17f2ee5d01ab1daad62c43938cdb14d9  gcc/testsuite/gfortran.dg/pr17472.f
! 3d6962e8b011ea47727a1d05cfb71e34  gcc/testsuite/gfortran.dg/pr17612.f90
  48355196bcd7b95718ac99bb45de0103  gcc/testsuite/gfortran.dg/pr17615.f90
! 9e07dc977965505998fff37fc99d6a9c  gcc/testsuite/gfortran.dg/pr17706.f90
! 104a4a3f4225f0d63fcd5c91111a3d24  gcc/testsuite/gfortran.dg/pr18025.f90
! 13632d0830a0de2dde125a9c0b3b7502  gcc/testsuite/gfortran.dg/pr18122.f90
! 2bbcc66660df2da380776a2e4d56447e  gcc/testsuite/gfortran.dg/pr18210.f90
! 20db176ae80603505d4e27bc97a09d14  gcc/testsuite/gfortran.dg/pr18392.f90
! 530fbf0f2cfba1b0389b238bca4521cb  gcc/testsuite/gfortran.dg/pr19155.f
! 1eb80785e03059cbe3b1ad4a412aaa5a  gcc/testsuite/gfortran.dg/pr19216.f
! 2a4e967caab96db53cc3c3a5a9228f42  gcc/testsuite/gfortran.dg/pr19467.f90
! 2a7775cc617271066cd9380bac43ad09  gcc/testsuite/gfortran.dg/pr19657.f
! ac0e280cb83d5297c7d0776abfa9c1ca  gcc/testsuite/gfortran.dg/pr19926.f90
! f851b163e156a483d8a18c14113e9005  gcc/testsuite/gfortran.dg/pr19928-1.f90
! 59f095c12bb14d9b84d24e8e25c09d99  gcc/testsuite/gfortran.dg/pr19928-2.f90
  3c1b21be918629039e10a6e59277c1bc  gcc/testsuite/gfortran.dg/pr19936_1.f90
  7fe5c318350a52400c5dbd328ca6b65f  gcc/testsuite/gfortran.dg/pr19936_2.f90
  a21cc4ab33b1cfd66732338936f2a4af  gcc/testsuite/gfortran.dg/pr19936_3.f90
! b1fe6db6bcd57e8bc562a71aa19e1572  gcc/testsuite/gfortran.dg/pr20086.f90
! 01a68912089c2a49dcfdd51df5cbad6f  gcc/testsuite/gfortran.dg/pr20124.f90
! d91f06baabd88440484dcf05933f814b  gcc/testsuite/gfortran.dg/pr20163-2.f
! 27d119d98978b2c6e6b53f05b30b3fc0  gcc/testsuite/gfortran.dg/pr20257.f90
! febdb201af158f6c486ef5b23291d661  gcc/testsuite/gfortran.dg/pr20480.f90
! 8596601e2b877c5c38def6a9134482de  gcc/testsuite/gfortran.dg/pr20755.f
  7dbe1cf435cea8cdd4cc39e38447ddc4  gcc/testsuite/gfortran.dg/pr20865.f90
! 38f508ba46b75a12cfee1b97834d202c  gcc/testsuite/gfortran.dg/pr20950.f
  9154ac7f3a89faaa7ea9e0dd5a858430  gcc/testsuite/gfortran.dg/pr20954.f
! 3734c7a72803e6540177a0747973abba  gcc/testsuite/gfortran.dg/pr21177.f90
! 85a0a14e8ba84e2ea3ffc40ea9bf815d  gcc/testsuite/gfortran.dg/pr21730.f
! 675ac351a6cbfb5b6437cf4db2932442  gcc/testsuite/gfortran.dg/pr22491.f
  dbfc80ddde02e81da94749ff32a32bd6  gcc/testsuite/gfortran.dg/pr23095.f
  18a963a12a2b15e718085744526b1722  gcc/testsuite/gfortran.dg/pr24823.f
! d6aa66ac0eb04a33f2c32b1111032266  gcc/testsuite/gfortran.dg/pr25603.f
  4f00dc3933336f591084f1b375009e07  gcc/testsuite/gfortran.dg/pr25923.f90
  66453cc49ba536feb5c18a7ac0ff04b7  gcc/testsuite/gfortran.dg/pr26246_1.f90
! 4e416e7ae2f1c6c13f24abe380a7ad3e  gcc/testsuite/gfortran.dg/pr26246_2.f90
  c5691130bd4c286f7eee40a2c5c77152  gcc/testsuite/gfortran.dg/pr26524.f
  9f6528d064e574fc551b12a4d61c890a  gcc/testsuite/gfortran.dg/pr28158.f90
  a677e692ddc8db95c44027d781286bb1  gcc/testsuite/gfortran.dg/pr28971.f90
*************** ffd01b14f6492b1e26eab10e15d06ddf  gcc/te
*** 52215,52225 ****
  b1d2ae1f9fe6fb4add603f895862ce5f  gcc/testsuite/gfortran.dg/pr30391-1.f90
  ec5c278964987904454c249c035eb114  gcc/testsuite/gfortran.dg/pr30667.f
  d7afa5477feea41da7fcbefa1a4e4562  gcc/testsuite/gfortran.dg/pr31025.f90
! e940dc722b5dc7829733d76ac0f77e35  gcc/testsuite/gfortran.dg/pr32136.f90
  a8620b5068ca05a3433e64997db77b60  gcc/testsuite/gfortran.dg/pr32222.f90
  dd0523e844b80015d2e266a4ad9f02ab  gcc/testsuite/gfortran.dg/pr32238.f90
  fa042d8fa0ac7641005939a723075502  gcc/testsuite/gfortran.dg/pr32242.f90
! be85c9c6f6aaecaa76d0f8066a9c15dd  gcc/testsuite/gfortran.dg/pr32533.f90
  0321146421a51d31992fa691ff881090  gcc/testsuite/gfortran.dg/pr32535.f90
  dcca844ceface60b717026a0fdffdeb0  gcc/testsuite/gfortran.dg/pr32599.f03
  ce64fc302236001bcd3614a913db1ba3  gcc/testsuite/gfortran.dg/pr32601.f03
--- 55902,55912 ----
  b1d2ae1f9fe6fb4add603f895862ce5f  gcc/testsuite/gfortran.dg/pr30391-1.f90
  ec5c278964987904454c249c035eb114  gcc/testsuite/gfortran.dg/pr30667.f
  d7afa5477feea41da7fcbefa1a4e4562  gcc/testsuite/gfortran.dg/pr31025.f90
! c88ec7dce26fbfaf94e51466bd14dfbc  gcc/testsuite/gfortran.dg/pr32136.f90
  a8620b5068ca05a3433e64997db77b60  gcc/testsuite/gfortran.dg/pr32222.f90
  dd0523e844b80015d2e266a4ad9f02ab  gcc/testsuite/gfortran.dg/pr32238.f90
  fa042d8fa0ac7641005939a723075502  gcc/testsuite/gfortran.dg/pr32242.f90
! 58421a5127a747195af89da21694d0d8  gcc/testsuite/gfortran.dg/pr32533.f90
  0321146421a51d31992fa691ff881090  gcc/testsuite/gfortran.dg/pr32535.f90
  dcca844ceface60b717026a0fdffdeb0  gcc/testsuite/gfortran.dg/pr32599.f03
  ce64fc302236001bcd3614a913db1ba3  gcc/testsuite/gfortran.dg/pr32601.f03
*************** d14cb4010fa07e2ab474df9a73203c50  gcc/te
*** 52233,52245 ****
  03218ed9c8b60bcc6c4747b3821b8740  gcc/testsuite/gfortran.dg/pr33074.f90
  c22c5fcb7376badaea646e51947b3b9d  gcc/testsuite/gfortran.dg/pr33449.f90
  a5e0103722a22ee4318dbc6a09066b4b  gcc/testsuite/gfortran.dg/pr33646.f90
! f37aff73f33e31695d9a33c68e406840  gcc/testsuite/gfortran.dg/pr33794.f90
  ff7d6bedf25daa2dd953d19c3f530ec4  gcc/testsuite/gfortran.dg/pr34163.f90
! 3d101411c99362e8f11666e807ec7bc0  gcc/testsuite/gfortran.dg/pr35662.f90
  6b74d1849a69dc7a1ded9d0ae64797e1  gcc/testsuite/gfortran.dg/pr35849.f90
! c3d8d9d591ce2602aec62d28145126dc  gcc/testsuite/gfortran.dg/pr35944-1.f90
! ce802e660dd6ddcab25947ffd916c160  gcc/testsuite/gfortran.dg/pr35944-2.f90
! 8d453cb6e0829391049253a2100009e1  gcc/testsuite/gfortran.dg/pr35983.f90
  6bdc9be1ca8f36ebcf314fea2b599543  gcc/testsuite/gfortran.dg/pr36006-1.f90
  f51d307d3bddd2d401de4b39a6e1442d  gcc/testsuite/gfortran.dg/pr36006-2.f90
  4c30860c528ceb0bfadc02314c856a3d  gcc/testsuite/gfortran.dg/pr36192.f90
--- 55920,55932 ----
  03218ed9c8b60bcc6c4747b3821b8740  gcc/testsuite/gfortran.dg/pr33074.f90
  c22c5fcb7376badaea646e51947b3b9d  gcc/testsuite/gfortran.dg/pr33449.f90
  a5e0103722a22ee4318dbc6a09066b4b  gcc/testsuite/gfortran.dg/pr33646.f90
! 4d1ebe2fb21ce9161b64d4b311914f5d  gcc/testsuite/gfortran.dg/pr33794.f90
  ff7d6bedf25daa2dd953d19c3f530ec4  gcc/testsuite/gfortran.dg/pr34163.f90
! 297c26611426c3ce86cd2898dfcd107c  gcc/testsuite/gfortran.dg/pr35662.f90
  6b74d1849a69dc7a1ded9d0ae64797e1  gcc/testsuite/gfortran.dg/pr35849.f90
! 2a2d9807667677590e3ac12781d24084  gcc/testsuite/gfortran.dg/pr35944-1.f90
! 8152986fee819761d0809a675bf6c01c  gcc/testsuite/gfortran.dg/pr35944-2.f90
! 0f9b7a9141e8a0c2cc5248494b602be5  gcc/testsuite/gfortran.dg/pr35983.f90
  6bdc9be1ca8f36ebcf314fea2b599543  gcc/testsuite/gfortran.dg/pr36006-1.f90
  f51d307d3bddd2d401de4b39a6e1442d  gcc/testsuite/gfortran.dg/pr36006-2.f90
  4c30860c528ceb0bfadc02314c856a3d  gcc/testsuite/gfortran.dg/pr36192.f90
*************** a96bcaba231d868e55f5131bd40acf4f  gcc/te
*** 52256,52262 ****
  c28f56ac28d07d5c6a114a4d14c467c6  gcc/testsuite/gfortran.dg/pr39152.f
  a9b6bd0717cd606ed255a3cc5e3d4343  gcc/testsuite/gfortran.dg/pr39666-1.f90
  22f478e101a15c3e611a0140bcb54089  gcc/testsuite/gfortran.dg/pr39666-2.f90
! c36a0ce75048e948b2856036a4345b07  gcc/testsuite/gfortran.dg/pr39865.f90
  128d1f5873432fbeef9032aaaa925a0a  gcc/testsuite/gfortran.dg/pr40587.f
  dde08f832232073a8cfbe9c29db74aea  gcc/testsuite/gfortran.dg/pr40839.f90
  25e9c7caaf25cd373c50b46f458466f4  gcc/testsuite/gfortran.dg/pr40999.f
--- 55943,55949 ----
  c28f56ac28d07d5c6a114a4d14c467c6  gcc/testsuite/gfortran.dg/pr39152.f
  a9b6bd0717cd606ed255a3cc5e3d4343  gcc/testsuite/gfortran.dg/pr39666-1.f90
  22f478e101a15c3e611a0140bcb54089  gcc/testsuite/gfortran.dg/pr39666-2.f90
! 6538a1bf717a767c8b613e4a6e213685  gcc/testsuite/gfortran.dg/pr39865.f90
  128d1f5873432fbeef9032aaaa925a0a  gcc/testsuite/gfortran.dg/pr40587.f
  dde08f832232073a8cfbe9c29db74aea  gcc/testsuite/gfortran.dg/pr40839.f90
  25e9c7caaf25cd373c50b46f458466f4  gcc/testsuite/gfortran.dg/pr40999.f
*************** df1c444ce706b498047a1dc088b5bd32  gcc/te
*** 52264,52270 ****
  87db7da7fa3903f49a2b7e9debf84bc7  gcc/testsuite/gfortran.dg/pr41043.f90
  ecfd0b4a9534a80a0116f800e59bfe69  gcc/testsuite/gfortran.dg/pr41126.f90
  a7d7af093c8bc9ae9ee2e1f6c7147a31  gcc/testsuite/gfortran.dg/pr41162.f
! 1196c643204f2501964b71073ae640a7  gcc/testsuite/gfortran.dg/pr41212.f90
  38ec947ac2565424f1508621f66a31bb  gcc/testsuite/gfortran.dg/pr41225.f90
  b9e2c750274471b80970250d22b1f7dd  gcc/testsuite/gfortran.dg/pr41229.f90
  b0352cfde4ae60cc2b0b0f5e8074caec  gcc/testsuite/gfortran.dg/pr41347.f90
--- 55951,55957 ----
  87db7da7fa3903f49a2b7e9debf84bc7  gcc/testsuite/gfortran.dg/pr41043.f90
  ecfd0b4a9534a80a0116f800e59bfe69  gcc/testsuite/gfortran.dg/pr41126.f90
  a7d7af093c8bc9ae9ee2e1f6c7147a31  gcc/testsuite/gfortran.dg/pr41162.f
! c5548e326fa4b42367798073ad36067e  gcc/testsuite/gfortran.dg/pr41212.f90
  38ec947ac2565424f1508621f66a31bb  gcc/testsuite/gfortran.dg/pr41225.f90
  b9e2c750274471b80970250d22b1f7dd  gcc/testsuite/gfortran.dg/pr41229.f90
  b0352cfde4ae60cc2b0b0f5e8074caec  gcc/testsuite/gfortran.dg/pr41347.f90
*************** e0e601f63ab17d3caeb1e6c3ad45832e  gcc/te
*** 52276,52321 ****
  e9492e33936305b8eb98c7a7ae9d4989  gcc/testsuite/gfortran.dg/pr42166.f90
  dea25cd4946ae97018629b3297a599d6  gcc/testsuite/gfortran.dg/pr42246-2.f
  f1399f574a85ff7b80c0043665c30725  gcc/testsuite/gfortran.dg/pr42294.f
  7f250967671ff3b657404ee17aa72a10  gcc/testsuite/gfortran.dg/pr43229.f90
  0808d46b345e8db382dc37c40a89e446  gcc/testsuite/gfortran.dg/pr43475.f90
  721fcde2cdf213ef439e0776d541c301  gcc/testsuite/gfortran.dg/pr43505.f90
  688a0baf5c87664e672ef3946cf5568a  gcc/testsuite/gfortran.dg/pr43688.f90
  6b34d6664b5c2213feca77be9db07265  gcc/testsuite/gfortran.dg/pr43793.f90
  eaee3644bb72757f7c01f19f8c77dfbd  gcc/testsuite/gfortran.dg/pr43796.f90
! 3de53aa237563907f8912ddae2087219  gcc/testsuite/gfortran.dg/pr43808.f90
  2185b7aa8c377d749a70cb4872ee56f8  gcc/testsuite/gfortran.dg/pr43866.f90
  14f3866051d030f1fe3aa68c16775d53  gcc/testsuite/gfortran.dg/pr43984.f90
  c86efca0876ea8b42851b885f6a07b46  gcc/testsuite/gfortran.dg/pr43996.f90
! d3b293eecaa4492a7c3a436f79a36dbd  gcc/testsuite/gfortran.dg/pr44592.f90
  b825380a4b4b28ec13e27baf423c281f  gcc/testsuite/gfortran.dg/pr44691.f
! cc1eefb16c8a037aa7b09d8f1397134a  gcc/testsuite/gfortran.dg/pr44735.f90
  b3f13781d906da7a75a40903d63cc1dc  gcc/testsuite/gfortran.dg/pr44882.f90
! 2e741bee112f2d5c0b472a7829df5be2  gcc/testsuite/gfortran.dg/pr45308.f03
  7985b288d5df4b01f30e4783da0f94c0  gcc/testsuite/gfortran.dg/pr45578.f90
! 16acbf4950b65c0f02c76ea71d81c168  gcc/testsuite/gfortran.dg/pr45636.f90
  0d4b2c0d29c28b1cd20728559b6a8885  gcc/testsuite/gfortran.dg/pr46190.f90
  8a9de3c07a283d99e510926211d935da  gcc/testsuite/gfortran.dg/pr46259.f
! b61443ad6c84af516b3da307e5136289  gcc/testsuite/gfortran.dg/pr46297.f
  5deec8d7e041b019e3bf0e15771507ed  gcc/testsuite/gfortran.dg/pr46519-1.f
  173adce61f31c3aa737a5248c8958174  gcc/testsuite/gfortran.dg/pr46519-2.f90
! e8e366bc77bed6754d021b45842ebb96  gcc/testsuite/gfortran.dg/pr46588.f90
! b78e2c66385bd1c2c0c70bd729de8c39  gcc/testsuite/gfortran.dg/pr46665.f90
  bd3571f835db5f5cd3f13d46f65eaf7d  gcc/testsuite/gfortran.dg/pr46755.f
! 2193be737981067fd30810b8c622f7bf  gcc/testsuite/gfortran.dg/pr46804.f90
  109804248d2d2663242977ebea3d07e1  gcc/testsuite/gfortran.dg/pr46884.f
  3446ad679d644b2617b8836226b9d724  gcc/testsuite/gfortran.dg/pr46945.f90
  2dbd0baf5cc71bd396aa0b27c82b3aa6  gcc/testsuite/gfortran.dg/pr46985.f90
! 68cf4d03f396e637d8abac74efaa1036  gcc/testsuite/gfortran.dg/pr47008.f03
  18cfa159030f8b4b160fe0d8e9420c68  gcc/testsuite/gfortran.dg/pr47574.f90
! 1c89ab6cba0b457dac9727af524dde9e  gcc/testsuite/gfortran.dg/pr47614.f
  9ff6a3335f233c3bfe3926ceefc544b9  gcc/testsuite/gfortran.dg/pr47757-1.f90
  f3e2e80b3229e8fec07b3263f3453fed  gcc/testsuite/gfortran.dg/pr47757-2.f90
  9d5355ff4338853aec406e4f5edae9ea  gcc/testsuite/gfortran.dg/pr47757-3.f90
! 7aa9bc3443338aed31ba70b3363d63b0  gcc/testsuite/gfortran.dg/pr47878.f90
  c990799f48f87a3c6fc164699d2b1c87  gcc/testsuite/gfortran.dg/pr48636-2.f90
! 93e4ddb238ee0a098cb383a91454cab4  gcc/testsuite/gfortran.dg/pr48636.f90
  4762590cbaf90296cf135774873215b8  gcc/testsuite/gfortran.dg/pr48757.f
! a88975958119ca20486a6a4efdc92876  gcc/testsuite/gfortran.dg/pr49103.f90
  5ad239ce189c063ac8a5f73f48d37684  gcc/testsuite/gfortran.dg/pr49179.f90
  73bdfac4d8e167437515c960a865a9d5  gcc/testsuite/gfortran.dg/pr49308.f90
  fa72f395e574b6eafd55c8f281faff1a  gcc/testsuite/gfortran.dg/pr49472.f90
--- 55963,56009 ----
  e9492e33936305b8eb98c7a7ae9d4989  gcc/testsuite/gfortran.dg/pr42166.f90
  dea25cd4946ae97018629b3297a599d6  gcc/testsuite/gfortran.dg/pr42246-2.f
  f1399f574a85ff7b80c0043665c30725  gcc/testsuite/gfortran.dg/pr42294.f
+ e2637c83485c528a7b74e6133790946a  gcc/testsuite/gfortran.dg/pr42651.f90
  7f250967671ff3b657404ee17aa72a10  gcc/testsuite/gfortran.dg/pr43229.f90
  0808d46b345e8db382dc37c40a89e446  gcc/testsuite/gfortran.dg/pr43475.f90
  721fcde2cdf213ef439e0776d541c301  gcc/testsuite/gfortran.dg/pr43505.f90
  688a0baf5c87664e672ef3946cf5568a  gcc/testsuite/gfortran.dg/pr43688.f90
  6b34d6664b5c2213feca77be9db07265  gcc/testsuite/gfortran.dg/pr43793.f90
  eaee3644bb72757f7c01f19f8c77dfbd  gcc/testsuite/gfortran.dg/pr43796.f90
! 01105ac33c879bbf155ed9ca32d65195  gcc/testsuite/gfortran.dg/pr43808.f90
  2185b7aa8c377d749a70cb4872ee56f8  gcc/testsuite/gfortran.dg/pr43866.f90
  14f3866051d030f1fe3aa68c16775d53  gcc/testsuite/gfortran.dg/pr43984.f90
  c86efca0876ea8b42851b885f6a07b46  gcc/testsuite/gfortran.dg/pr43996.f90
! 45efd7b795745a9bb948863ac1ebcca0  gcc/testsuite/gfortran.dg/pr44592.f90
  b825380a4b4b28ec13e27baf423c281f  gcc/testsuite/gfortran.dg/pr44691.f
! 3699b0bce4de04a62b5fbcbe73602273  gcc/testsuite/gfortran.dg/pr44735.f90
  b3f13781d906da7a75a40903d63cc1dc  gcc/testsuite/gfortran.dg/pr44882.f90
! 9017d8bc0bf36400cadfb36c726cf4f6  gcc/testsuite/gfortran.dg/pr45308.f03
  7985b288d5df4b01f30e4783da0f94c0  gcc/testsuite/gfortran.dg/pr45578.f90
! 1bd40bda5ad7a3c63474de6b5e34acb4  gcc/testsuite/gfortran.dg/pr45636.f90
  0d4b2c0d29c28b1cd20728559b6a8885  gcc/testsuite/gfortran.dg/pr46190.f90
  8a9de3c07a283d99e510926211d935da  gcc/testsuite/gfortran.dg/pr46259.f
! ad843c572cc90615c2d869cd2c3056a8  gcc/testsuite/gfortran.dg/pr46297.f
  5deec8d7e041b019e3bf0e15771507ed  gcc/testsuite/gfortran.dg/pr46519-1.f
  173adce61f31c3aa737a5248c8958174  gcc/testsuite/gfortran.dg/pr46519-2.f90
! c2ddd95e551250584c03c2dd23da9081  gcc/testsuite/gfortran.dg/pr46588.f90
! 6c8efa45d31cf9d8d3998966dcaa7095  gcc/testsuite/gfortran.dg/pr46665.f90
  bd3571f835db5f5cd3f13d46f65eaf7d  gcc/testsuite/gfortran.dg/pr46755.f
! c6955ae136d4fa069bbe0e27a371e3ee  gcc/testsuite/gfortran.dg/pr46804.f90
  109804248d2d2663242977ebea3d07e1  gcc/testsuite/gfortran.dg/pr46884.f
  3446ad679d644b2617b8836226b9d724  gcc/testsuite/gfortran.dg/pr46945.f90
  2dbd0baf5cc71bd396aa0b27c82b3aa6  gcc/testsuite/gfortran.dg/pr46985.f90
! cca539dda55db1fe3d9ab628330a364e  gcc/testsuite/gfortran.dg/pr47008.f03
  18cfa159030f8b4b160fe0d8e9420c68  gcc/testsuite/gfortran.dg/pr47574.f90
! 0280bd4bfb5b153f438a9cfd70e3cd82  gcc/testsuite/gfortran.dg/pr47614.f
  9ff6a3335f233c3bfe3926ceefc544b9  gcc/testsuite/gfortran.dg/pr47757-1.f90
  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
! 66ff77107a65ebff7c75bfae7e38e6f6  gcc/testsuite/gfortran.dg/pr49103.f90
  5ad239ce189c063ac8a5f73f48d37684  gcc/testsuite/gfortran.dg/pr49179.f90
  73bdfac4d8e167437515c960a865a9d5  gcc/testsuite/gfortran.dg/pr49308.f90
  fa72f395e574b6eafd55c8f281faff1a  gcc/testsuite/gfortran.dg/pr49472.f90
*************** de6c28d79afade8cd24dfe8ec77696fa  gcc/te
*** 52325,52337 ****
  19bd548eb4984b50af83dc692c42efbe  gcc/testsuite/gfortran.dg/pr49675.f90
  a7f1ac7ef80efe661e72cd8935b9d68f  gcc/testsuite/gfortran.dg/pr49698.f90
  71ab97a4b3546d48ac2035e76efb332d  gcc/testsuite/gfortran.dg/pr49721-1.f
! f687c2bae87e50ac2773852543037742  gcc/testsuite/gfortran.dg/pr50069_1.f90
  58ef52a5a164af942250c1ed58c78a9d  gcc/testsuite/gfortran.dg/pr50069_2.f90
! baba316baa03ee3527448735c40da508  gcc/testsuite/gfortran.dg/pr50769.f90
  6d40b8b2b18fefbafaa1495c64dc7b65  gcc/testsuite/gfortran.dg/pr50875.f90
  392a9020525f62a719dfb6ec68012809  gcc/testsuite/gfortran.dg/pr51993.f90
  bb7add9250612f62914277baa59b409c  gcc/testsuite/gfortran.dg/pr52370.f90
! d427f4eb6f044237726ce98aa1dc9754  gcc/testsuite/gfortran.dg/pr52608.f90
  cc1f32e49ccc36b48a493abb17c42e3a  gcc/testsuite/gfortran.dg/pr52621.f90
  877bb3da514ce7c575d032c4f5a834b6  gcc/testsuite/gfortran.dg/pr52678.f
  9b6c4fc5f0fd6602f5c340829a594cde  gcc/testsuite/gfortran.dg/pr52701.f90
--- 56013,56026 ----
  19bd548eb4984b50af83dc692c42efbe  gcc/testsuite/gfortran.dg/pr49675.f90
  a7f1ac7ef80efe661e72cd8935b9d68f  gcc/testsuite/gfortran.dg/pr49698.f90
  71ab97a4b3546d48ac2035e76efb332d  gcc/testsuite/gfortran.dg/pr49721-1.f
! 23f5416fbc05d5ab74e23fdf64353554  gcc/testsuite/gfortran.dg/pr50069_1.f90
  58ef52a5a164af942250c1ed58c78a9d  gcc/testsuite/gfortran.dg/pr50069_2.f90
! 1d25f44577483b953a0c9a5958b04ec3  gcc/testsuite/gfortran.dg/pr50769.f90
  6d40b8b2b18fefbafaa1495c64dc7b65  gcc/testsuite/gfortran.dg/pr50875.f90
+ 106b6d8b2bc880f0a9cd862194a6c34e  gcc/testsuite/gfortran.dg/pr51434.f90
  392a9020525f62a719dfb6ec68012809  gcc/testsuite/gfortran.dg/pr51993.f90
  bb7add9250612f62914277baa59b409c  gcc/testsuite/gfortran.dg/pr52370.f90
! ff074071c44ee5311f8ec1ead27ae205  gcc/testsuite/gfortran.dg/pr52608.f90
  cc1f32e49ccc36b48a493abb17c42e3a  gcc/testsuite/gfortran.dg/pr52621.f90
  877bb3da514ce7c575d032c4f5a834b6  gcc/testsuite/gfortran.dg/pr52678.f
  9b6c4fc5f0fd6602f5c340829a594cde  gcc/testsuite/gfortran.dg/pr52701.f90
*************** c8646ca00d10d23022de604a2af8bdf2  gcc/te
*** 52343,52361 ****
  9f0f693907d6b2758b64855de54f98f1  gcc/testsuite/gfortran.dg/pr54967.f90
  d60f250902b60a5ec3b8ea677b78406f  gcc/testsuite/gfortran.dg/pr55086_1.f90
  27b979f2b80bfd2d2bf3ea956b195a66  gcc/testsuite/gfortran.dg/pr55086_1_tfat.f90
! 1a15ee38ba57e16c5ddb19ce7e0d0d19  gcc/testsuite/gfortran.dg/pr55086_2.f90
! b33497b455646e43345fb696a0979fb1  gcc/testsuite/gfortran.dg/pr55086_2_tfat.f90
! d2c81d07304e5e26eeb17a891d526ca0  gcc/testsuite/gfortran.dg/pr55086_aliasing_dummy_4_tfat.f90
! 5fa89c66192aaec916b4bbd962f73af9  gcc/testsuite/gfortran.dg/pr55330.f90
  cf36b3bf9a5087adcfad87869ff8afe0  gcc/testsuite/gfortran.dg/pr56007.f
  fdaea22f3dd65502f5644127ed2e70d7  gcc/testsuite/gfortran.dg/pr56007.f90
! d04c732857d272204c2f3b489519a1e2  gcc/testsuite/gfortran.dg/pr56015.f90
  35095ef90c21c16235bf3df7da89822d  gcc/testsuite/gfortran.dg/pr56520.f90
  8aa5b6642e370ed445067158f529c724  gcc/testsuite/gfortran.dg/pr56852.f90
  26040f18cc9280975831612c9f67aedf  gcc/testsuite/gfortran.dg/pr57393-1.f90
  b1bcd10927ea1037a071d0a016eb0dad  gcc/testsuite/gfortran.dg/pr57393-2.f90
  424a3dd5ff48738905e189b439c7175c  gcc/testsuite/gfortran.dg/pr57904.f90
! bc19dbb4d91a5469b70893ade61c086e  gcc/testsuite/gfortran.dg/pr57910.f90
  a3fc06fbb8d6c53a22462ce8a5fade30  gcc/testsuite/gfortran.dg/pr57987.f90
  81f4e8de062c12971e225844fc9fdd90  gcc/testsuite/gfortran.dg/pr58027.f90
  1ca63f28ae284979c3b2b1c01dc88abf  gcc/testsuite/gfortran.dg/pr58290.f90
--- 56032,56050 ----
  9f0f693907d6b2758b64855de54f98f1  gcc/testsuite/gfortran.dg/pr54967.f90
  d60f250902b60a5ec3b8ea677b78406f  gcc/testsuite/gfortran.dg/pr55086_1.f90
  27b979f2b80bfd2d2bf3ea956b195a66  gcc/testsuite/gfortran.dg/pr55086_1_tfat.f90
! bde1a75c2fa0975ec2f33186d43859b5  gcc/testsuite/gfortran.dg/pr55086_2.f90
! 8fef2d59400d6849ae545a1cffb5a98e  gcc/testsuite/gfortran.dg/pr55086_2_tfat.f90
! faf82fcbb346984bbb53f6cb7b24410d  gcc/testsuite/gfortran.dg/pr55086_aliasing_dummy_4_tfat.f90
! d8e9cca8fb7a075f21f83b89d2738df7  gcc/testsuite/gfortran.dg/pr55330.f90
  cf36b3bf9a5087adcfad87869ff8afe0  gcc/testsuite/gfortran.dg/pr56007.f
  fdaea22f3dd65502f5644127ed2e70d7  gcc/testsuite/gfortran.dg/pr56007.f90
! c356c0f0c0129834a5aef6fbc73873f5  gcc/testsuite/gfortran.dg/pr56015.f90
  35095ef90c21c16235bf3df7da89822d  gcc/testsuite/gfortran.dg/pr56520.f90
  8aa5b6642e370ed445067158f529c724  gcc/testsuite/gfortran.dg/pr56852.f90
  26040f18cc9280975831612c9f67aedf  gcc/testsuite/gfortran.dg/pr57393-1.f90
  b1bcd10927ea1037a071d0a016eb0dad  gcc/testsuite/gfortran.dg/pr57393-2.f90
  424a3dd5ff48738905e189b439c7175c  gcc/testsuite/gfortran.dg/pr57904.f90
! bf52ead5dfd76237b802b9ad0640f00f  gcc/testsuite/gfortran.dg/pr57910.f90
  a3fc06fbb8d6c53a22462ce8a5fade30  gcc/testsuite/gfortran.dg/pr57987.f90
  81f4e8de062c12971e225844fc9fdd90  gcc/testsuite/gfortran.dg/pr58027.f90
  1ca63f28ae284979c3b2b1c01dc88abf  gcc/testsuite/gfortran.dg/pr58290.f90
*************** d09d9e61d93384cc4510957f1243b371  gcc/te
*** 52364,52414 ****
  54642dc29547df928c052d04531cae6f  gcc/testsuite/gfortran.dg/pr59440-1.f90
  29517347731146172a1733a27581daa9  gcc/testsuite/gfortran.dg/pr59440-2.f90
  f5878abe544570f500d4148c17a74cc4  gcc/testsuite/gfortran.dg/pr59440-3.f90
! c611fd3ec6ef0920474cf7ec76d81929  gcc/testsuite/gfortran.dg/pr59700.f90
  896a650820f1e92f30e2b2e4435e6335  gcc/testsuite/gfortran.dg/pr59706.f90
  31f41b11c36de9a6e9353abe63042a24  gcc/testsuite/gfortran.dg/pr59910.f90
  649ea9d3e6b33e6ac70422c5becd7c00  gcc/testsuite/gfortran.dg/pr60126.f90
  d03f1dd77bd6dee9a89da7373579df73  gcc/testsuite/gfortran.dg/pr61209.f90
! 42d2f6829d59339ccc9ed3c123a5fc25  gcc/testsuite/gfortran.dg/pr61318.f90
  b4a7352be56f63fec4426a00db50fae5  gcc/testsuite/gfortran.dg/pr61335.f90
  6dedb63c784b5018b208a0535bbce9a1  gcc/testsuite/gfortran.dg/pr61454.f90
  2c95c461b017b811d75f842a5f254b83  gcc/testsuite/gfortran.dg/pr61669.f90
  4a29b0cc0691a044e0395d99832117d4  gcc/testsuite/gfortran.dg/pr61921.f90
  d598feb4dba76cbaf492a9ee6686e19a  gcc/testsuite/gfortran.dg/pr61960.f90
! f7993d3f2e1e940d6cd1e3bbe859e52d  gcc/testsuite/gfortran.dg/pr62125.f90
  23809d15c621567e576a52586993ed9e  gcc/testsuite/gfortran.dg/pr62135.f90
  4cbfef7e413a52675ae38f22b2777d01  gcc/testsuite/gfortran.dg/pr62695.f90
  2ab32374fe63527656c5652f6804cd06  gcc/testsuite/gfortran.dg/pr63331.f90
  603263e08fedbbf88311bc089fe3cc34  gcc/testsuite/gfortran.dg/pr63778.f
  397b25a42e5d0cf5eca320bdb2909d9c  gcc/testsuite/gfortran.dg/pr63821.f90
  c35d65ea2827d93eaf5b83cc8d96a6f0  gcc/testsuite/gfortran.dg/pr63883.f90
  c04ed077a9fe2c4b36a264eaa130003c  gcc/testsuite/gfortran.dg/pr64230.f90
  1e9cfb40b3307f2fd2466b7c533b2a10  gcc/testsuite/gfortran.dg/pr64528.f90
! 65d3c7db0cee9d876a3079342615ac8e  gcc/testsuite/gfortran.dg/pr64530.f90
  4047d07445fe08369ee1ce1c93021886  gcc/testsuite/gfortran.dg/pr64589.f90
  bcd64217acf1df6b8a291afee3064409  gcc/testsuite/gfortran.dg/pr64925.f90
  70268db03e46845d4b55fdf0d0f32e09  gcc/testsuite/gfortran.dg/pr64980.f03
  f9bd0f155bedcd3e724bcdab0799b3d2  gcc/testsuite/gfortran.dg/pr65045.f90
! 1e508dbbc1b6dd41e7c0aa8e44a99f29  gcc/testsuite/gfortran.dg/pr65429.f90
! a7d0e45320243070a480eeee13682ca3  gcc/testsuite/gfortran.dg/pr65450.f90
! c4a8a09fc45863c77a2a6b80d33772a9  gcc/testsuite/gfortran.dg/pr65504.f90
! 4d8c9a213b736bc9aa808dafff69edb1  gcc/testsuite/gfortran.dg/pr65903.f90
  3b1f0df2e476202d303bc30096291958  gcc/testsuite/gfortran.dg/pr65996.f90
  0d23d54873f8b9aba9c7c7d40352bcc7  gcc/testsuite/gfortran.dg/pr66107.f90
! 1355feed8efccc6687b4862ac14070f4  gcc/testsuite/gfortran.dg/pr66311.f90
  47db6e1bf5af94654f13e645fa846fb1  gcc/testsuite/gfortran.dg/pr66465.f90
  edbd7c48e790b853659ae6687570ec57  gcc/testsuite/gfortran.dg/pr66545_1.f90
  74f23d2dd345ea2804a91ad76531c953  gcc/testsuite/gfortran.dg/pr66545_2.f90
  cfa8c58e4ebe92d53be4cb3789eeca7c  gcc/testsuite/gfortran.dg/pr66575.f90
  5dc208225d5f298bcc489c29a82253de  gcc/testsuite/gfortran.dg/pr66725.f90
! a5e3e9b00ccc4c2969d794ded6bfcf7b  gcc/testsuite/gfortran.dg/pr66864.f90
  3d3b05c7e77ab453c0427090d8d2648c  gcc/testsuite/gfortran.dg/pr66979.f90
! e9258eac556aeb11e8d9f02d45975fd0  gcc/testsuite/gfortran.dg/pr67140.f90
  22f16100b888eb2f29183bd742e8844c  gcc/testsuite/gfortran.dg/pr67170.f90
  afc19bbe4dc2d18c8475f50f2daf594f  gcc/testsuite/gfortran.dg/pr67219.f90
  5d72f1fa0f7c57ab29e6da33e71c3fd9  gcc/testsuite/gfortran.dg/pr67460.f90
  44079451cbc9099e1b147b1705b44043  gcc/testsuite/gfortran.dg/pr67496.f90
! bf41141715e20ed734f32d9329dca8ea  gcc/testsuite/gfortran.dg/pr67524.f90
  0cb48be5b05e29ca819d65f1da0ec5f5  gcc/testsuite/gfortran.dg/pr67525.f90
  25c324c3b0d12b5db0935ecb12d4d182  gcc/testsuite/gfortran.dg/pr67526.f90
  7ade9a557f491731cdaf5490b032e03f  gcc/testsuite/gfortran.dg/pr67614.f90
--- 56053,56107 ----
  54642dc29547df928c052d04531cae6f  gcc/testsuite/gfortran.dg/pr59440-1.f90
  29517347731146172a1733a27581daa9  gcc/testsuite/gfortran.dg/pr59440-2.f90
  f5878abe544570f500d4148c17a74cc4  gcc/testsuite/gfortran.dg/pr59440-3.f90
! 6579c829af512b3c778648284d6029c7  gcc/testsuite/gfortran.dg/pr59700.f90
  896a650820f1e92f30e2b2e4435e6335  gcc/testsuite/gfortran.dg/pr59706.f90
  31f41b11c36de9a6e9353abe63042a24  gcc/testsuite/gfortran.dg/pr59910.f90
  649ea9d3e6b33e6ac70422c5becd7c00  gcc/testsuite/gfortran.dg/pr60126.f90
  d03f1dd77bd6dee9a89da7373579df73  gcc/testsuite/gfortran.dg/pr61209.f90
! 4b67b2370defe3383e0985c7ffe3c3bd  gcc/testsuite/gfortran.dg/pr61318.f90
  b4a7352be56f63fec4426a00db50fae5  gcc/testsuite/gfortran.dg/pr61335.f90
  6dedb63c784b5018b208a0535bbce9a1  gcc/testsuite/gfortran.dg/pr61454.f90
  2c95c461b017b811d75f842a5f254b83  gcc/testsuite/gfortran.dg/pr61669.f90
+ 7b90c70cbc880439a85c8761bb9d61c0  gcc/testsuite/gfortran.dg/pr61775.f90
  4a29b0cc0691a044e0395d99832117d4  gcc/testsuite/gfortran.dg/pr61921.f90
  d598feb4dba76cbaf492a9ee6686e19a  gcc/testsuite/gfortran.dg/pr61960.f90
! 7d11996e748039538cf74be5d5eb3d7f  gcc/testsuite/gfortran.dg/pr62125.f90
  23809d15c621567e576a52586993ed9e  gcc/testsuite/gfortran.dg/pr62135.f90
  4cbfef7e413a52675ae38f22b2777d01  gcc/testsuite/gfortran.dg/pr62695.f90
  2ab32374fe63527656c5652f6804cd06  gcc/testsuite/gfortran.dg/pr63331.f90
  603263e08fedbbf88311bc089fe3cc34  gcc/testsuite/gfortran.dg/pr63778.f
  397b25a42e5d0cf5eca320bdb2909d9c  gcc/testsuite/gfortran.dg/pr63821.f90
  c35d65ea2827d93eaf5b83cc8d96a6f0  gcc/testsuite/gfortran.dg/pr63883.f90
+ 961f5b3f9101d60209ddc2ff945ac6e6  gcc/testsuite/gfortran.dg/pr64107.f90
+ 02ddefab3da701a0eba517923d7c056d  gcc/testsuite/gfortran.dg/pr64124.f90
  c04ed077a9fe2c4b36a264eaa130003c  gcc/testsuite/gfortran.dg/pr64230.f90
  1e9cfb40b3307f2fd2466b7c533b2a10  gcc/testsuite/gfortran.dg/pr64528.f90
! bb7ae3d8cb227128a6b68021f141597c  gcc/testsuite/gfortran.dg/pr64530.f90
  4047d07445fe08369ee1ce1c93021886  gcc/testsuite/gfortran.dg/pr64589.f90
  bcd64217acf1df6b8a291afee3064409  gcc/testsuite/gfortran.dg/pr64925.f90
  70268db03e46845d4b55fdf0d0f32e09  gcc/testsuite/gfortran.dg/pr64980.f03
  f9bd0f155bedcd3e724bcdab0799b3d2  gcc/testsuite/gfortran.dg/pr65045.f90
! c8cbd8a65f0511bc970384b9a2efd766  gcc/testsuite/gfortran.dg/pr65429.f90
! 87b0fbb110ed8953705e9fdd33634a02  gcc/testsuite/gfortran.dg/pr65450.f90
! 9c8e6469038c2d19eb2320129ef2769a  gcc/testsuite/gfortran.dg/pr65453.f90
! fec24ab230452c9c77d3c525bcc23d80  gcc/testsuite/gfortran.dg/pr65504.f90
! 301c33de3f3eab3bc184a1448494af68  gcc/testsuite/gfortran.dg/pr65903.f90
  3b1f0df2e476202d303bc30096291958  gcc/testsuite/gfortran.dg/pr65996.f90
  0d23d54873f8b9aba9c7c7d40352bcc7  gcc/testsuite/gfortran.dg/pr66107.f90
! 3264680b057eb38e5a28517d3e49cfac  gcc/testsuite/gfortran.dg/pr66311.f90
  47db6e1bf5af94654f13e645fa846fb1  gcc/testsuite/gfortran.dg/pr66465.f90
  edbd7c48e790b853659ae6687570ec57  gcc/testsuite/gfortran.dg/pr66545_1.f90
  74f23d2dd345ea2804a91ad76531c953  gcc/testsuite/gfortran.dg/pr66545_2.f90
  cfa8c58e4ebe92d53be4cb3789eeca7c  gcc/testsuite/gfortran.dg/pr66575.f90
  5dc208225d5f298bcc489c29a82253de  gcc/testsuite/gfortran.dg/pr66725.f90
! ea349b1624eaa3ae8c50ede5626af62b  gcc/testsuite/gfortran.dg/pr66864.f90
  3d3b05c7e77ab453c0427090d8d2648c  gcc/testsuite/gfortran.dg/pr66979.f90
! 32a076ad4a0ed5abddae44a8156961bb  gcc/testsuite/gfortran.dg/pr67140.f90
  22f16100b888eb2f29183bd742e8844c  gcc/testsuite/gfortran.dg/pr67170.f90
  afc19bbe4dc2d18c8475f50f2daf594f  gcc/testsuite/gfortran.dg/pr67219.f90
  5d72f1fa0f7c57ab29e6da33e71c3fd9  gcc/testsuite/gfortran.dg/pr67460.f90
  44079451cbc9099e1b147b1705b44043  gcc/testsuite/gfortran.dg/pr67496.f90
! c37cf579044bfef981cfa2ddcb25a453  gcc/testsuite/gfortran.dg/pr67524.f90
  0cb48be5b05e29ca819d65f1da0ec5f5  gcc/testsuite/gfortran.dg/pr67525.f90
  25c324c3b0d12b5db0935ecb12d4d182  gcc/testsuite/gfortran.dg/pr67526.f90
  7ade9a557f491731cdaf5490b032e03f  gcc/testsuite/gfortran.dg/pr67614.f90
*************** f7b255646efb403e4fd6d6c4c721b6c6  gcc/te
*** 52418,52432 ****
  25ba12fafaad4b70dcbbe6690162a999  gcc/testsuite/gfortran.dg/pr67803.f90
  bbee45365f7b5bd7b2e40a3921a1271c  gcc/testsuite/gfortran.dg/pr67805.f90
  d67c65ab4e579ec1a9ed16fa540e87f1  gcc/testsuite/gfortran.dg/pr67805_2.f90
! dafd0ec424b7951754678a25f688bd0a  gcc/testsuite/gfortran.dg/pr67885.f90
  60853550b35c1efdadb2d417aa6eec8b  gcc/testsuite/gfortran.dg/pr67900.f90
  658762833e1eac5a3f3f05e0147153f1  gcc/testsuite/gfortran.dg/pr67939.f90
  954cb84b6364f949ad2e6702e8a469d0  gcc/testsuite/gfortran.dg/pr67987.f90
  9c7060d377f62548d71c01d004b6256d  gcc/testsuite/gfortran.dg/pr68019.f90
! 94f364f344a24b9d3d2108481337124b  gcc/testsuite/gfortran.dg/pr68053.f90
  6d8a1b66ddd71f72cd6f8b2f956d1e1a  gcc/testsuite/gfortran.dg/pr68054.f90
  0aa9836d6fb22c69b7e76e9f495f4762  gcc/testsuite/gfortran.dg/pr68055.f90
! e0d39305ef6ef2f34cf15771365925be  gcc/testsuite/gfortran.dg/pr68078.f90
  8b70141743602a92904051fd2d8d35fe  gcc/testsuite/gfortran.dg/pr68146.f
  72204a8f7a7d531531023b6f9efc86ff  gcc/testsuite/gfortran.dg/pr68151.f90
  ee9456d99483e48af158f154c01b835c  gcc/testsuite/gfortran.dg/pr68153.f90
--- 56111,56125 ----
  25ba12fafaad4b70dcbbe6690162a999  gcc/testsuite/gfortran.dg/pr67803.f90
  bbee45365f7b5bd7b2e40a3921a1271c  gcc/testsuite/gfortran.dg/pr67805.f90
  d67c65ab4e579ec1a9ed16fa540e87f1  gcc/testsuite/gfortran.dg/pr67805_2.f90
! 43c5a1fae295d640d1a3feb2fd70c04c  gcc/testsuite/gfortran.dg/pr67885.f90
  60853550b35c1efdadb2d417aa6eec8b  gcc/testsuite/gfortran.dg/pr67900.f90
  658762833e1eac5a3f3f05e0147153f1  gcc/testsuite/gfortran.dg/pr67939.f90
  954cb84b6364f949ad2e6702e8a469d0  gcc/testsuite/gfortran.dg/pr67987.f90
  9c7060d377f62548d71c01d004b6256d  gcc/testsuite/gfortran.dg/pr68019.f90
! ba9c0a45b4114d6c3d80129312c3731c  gcc/testsuite/gfortran.dg/pr68053.f90
  6d8a1b66ddd71f72cd6f8b2f956d1e1a  gcc/testsuite/gfortran.dg/pr68054.f90
  0aa9836d6fb22c69b7e76e9f495f4762  gcc/testsuite/gfortran.dg/pr68055.f90
! f15d85cfec6e3cdd76e6667f5c30ef44  gcc/testsuite/gfortran.dg/pr68078.f90
  8b70141743602a92904051fd2d8d35fe  gcc/testsuite/gfortran.dg/pr68146.f
  72204a8f7a7d531531023b6f9efc86ff  gcc/testsuite/gfortran.dg/pr68151.f90
  ee9456d99483e48af158f154c01b835c  gcc/testsuite/gfortran.dg/pr68153.f90
*************** c0ada255b8d4b02a2bf3f62ec3fd9223  gcc/te
*** 52435,52498 ****
  4239cbc5229572dbb1b8db5b9e534c59  gcc/testsuite/gfortran.dg/pr68227.f90
  9b3855eb7267f08dfbb31622bb7ccd2f  gcc/testsuite/gfortran.dg/pr68251.f90
  62de51c227f08efdca419f1251a72597  gcc/testsuite/gfortran.dg/pr68283.f90
! 53367d2d1c3060e4cca1dbeebef89967  gcc/testsuite/gfortran.dg/pr68318_1.f90
  b3ef2aaf4796b96c50079acc822669c9  gcc/testsuite/gfortran.dg/pr68318_2.f90
  94426d6f9de03e56102a32084142c32c  gcc/testsuite/gfortran.dg/pr68319.f90
  72efb9f6fc6b90e2038662cf5300c2b9  gcc/testsuite/gfortran.dg/pr68379-1.f90
  eea87284cbfbd1719101caddb4ac38a8  gcc/testsuite/gfortran.dg/pr68379-2.f
! 2f9568ad37c56b0f20f67f32b2afa76c  gcc/testsuite/gfortran.dg/pr68566.f90
  31ac2e9d47442e542327ca97ee352b0a  gcc/testsuite/gfortran.dg/pr68592.f
  073f594f4ecd427a8718c4569b9ff787  gcc/testsuite/gfortran.dg/pr68627.f
  55c75f66cc73c9bf311237125996574c  gcc/testsuite/gfortran.dg/pr68817.f90
  08ac83e05f38ebf756a253414d9f87b0  gcc/testsuite/gfortran.dg/pr68864.f90
  b9749045f7e8d01ce770bef143077398  gcc/testsuite/gfortran.dg/pr69055.f90
  4dfe5b03dbae8d8845caac4e7f7c0a89  gcc/testsuite/gfortran.dg/pr69155.f90
! af40f4dedd6541b74e692dc2ab3d113d  gcc/testsuite/gfortran.dg/pr69514_1.f90
! a76232d35f35517cbd958d99d1ca3975  gcc/testsuite/gfortran.dg/pr69514_2.f90
  f0a6995f73ec38a5c8e24e5d968a365b  gcc/testsuite/gfortran.dg/pr69554-1.F90
  fe55b4afdea6006daace9aa79199e551  gcc/testsuite/gfortran.dg/pr69554-2.F90
  68938073de3c2383615f40d0ec615519  gcc/testsuite/gfortran.dg/pr69603.f90
! 98e6c7786cece9272dca0a1d1898bb55  gcc/testsuite/gfortran.dg/pr69739.f90
  ad1c20f5706de185c8d1a0e845e5710d  gcc/testsuite/gfortran.dg/pr69867.f90
  5d287811020bdabb61dcc6757135eb94  gcc/testsuite/gfortran.dg/pr69955.f90
  29610fdfa7dcc34c2dbc61b21af1103e  gcc/testsuite/gfortran.dg/pr69962.f90
  c718be52c08cbfe5941dc1bb7a50bcb5  gcc/testsuite/gfortran.dg/pr69987.f90
! 1e3beec10530abe0c48aa254080544a5  gcc/testsuite/gfortran.dg/pr70006.f90
  7f656e5a6d13d6ab788f5c3e8fb90572  gcc/testsuite/gfortran.dg/pr70040.f90
! 23dc11b0707086a8168e76c17d13d620  gcc/testsuite/gfortran.dg/pr70673.f90
  b476378eb8250b54f4b3b5f63d128940  gcc/testsuite/gfortran.dg/pr70754.f90
  0e424f05f2fdeb786b877ace2617112d  gcc/testsuite/gfortran.dg/pr70931.f90
  768e159c79aa0aa1e1ae6e13122ed1b2  gcc/testsuite/gfortran.dg/pr70937.f90
  a16162b0759105febc1efc1311184688  gcc/testsuite/gfortran.dg/pr71047.f08
  2adcf4116aa4365895bb3d287e182ddd  gcc/testsuite/gfortran.dg/pr71067_1.f90
  17102b0b3177b5b5beb36730bd460100  gcc/testsuite/gfortran.dg/pr71067_2.f90
  75b8abd1f0f9d2e236605ecc6792b9fb  gcc/testsuite/gfortran.dg/pr71204.f90
  89bbeaec468d2179f3fa27a03f16ea55  gcc/testsuite/gfortran.dg/pr71230-1.f90
  5aee7aca4bb8bc17bcd259efbba8d8fe  gcc/testsuite/gfortran.dg/pr71230-2.f90
  d90a8e0b54b4cae4641a5a9a657ea148  gcc/testsuite/gfortran.dg/pr71252.f90
  f0bf2e9015ba3f518919bfadd773f284  gcc/testsuite/gfortran.dg/pr71523_1.f90
! 3c4f87c3cca87599328588e44e440da2  gcc/testsuite/gfortran.dg/pr71523_2.f90
  e8e59f069c4b37c57b85939b49c5f51d  gcc/testsuite/gfortran.dg/pr71526.f90
  7ba418a27a13483d7dc03ce4a2d4328f  gcc/testsuite/gfortran.dg/pr71642.f90
  0cc1ff0cd700d2363a2db1360345b7db  gcc/testsuite/gfortran.dg/pr71649.f90
  dffe49f90e191f0e0d1a1c6f8d53f854  gcc/testsuite/gfortran.dg/pr71688.f90
  1aa045033f7cb52ec480e9dcc3daf999  gcc/testsuite/gfortran.dg/pr71730.f90
! ea322d8eb84f224e47f5c54a96e8cd2d  gcc/testsuite/gfortran.dg/pr71764.f90
  71aa02c8e336e26a15cc65118a5c7776  gcc/testsuite/gfortran.dg/pr71799.f90
  47c2b1d1e6313ea63cccc86bf3e3641a  gcc/testsuite/gfortran.dg/pr71859.f90
  dd9b9e2af54cd4e735dad195cc1b9818  gcc/testsuite/gfortran.dg/pr71862.f90
  a5f4703aabb6d4a57c3b221a398aae60  gcc/testsuite/gfortran.dg/pr71883.f90
  ea6f420ce4d3bbc8e6c948a8f185ace7  gcc/testsuite/gfortran.dg/pr71895.f90
  e621f9143e37cc56334096cf3c636382  gcc/testsuite/gfortran.dg/pr71935.f90
! 000ce2c7042160052125874cc82a4790  gcc/testsuite/gfortran.dg/pr77260_1.f90
! e0d908d5f885bc381038df323bdf79ed  gcc/testsuite/gfortran.dg/pr77260_2.f90
  ab680d2f6cc0648921a054114a485973  gcc/testsuite/gfortran.dg/pr77351.f90
  0e6eddcfc83690ffde7c6675dbaf7f56  gcc/testsuite/gfortran.dg/pr77380.f90
  c80f60155bcb84d08e36147df56ee2a7  gcc/testsuite/gfortran.dg/pr77391.f90
  98fa011f3b9cb0fda809c579d18e2aff  gcc/testsuite/gfortran.dg/pr77406.f90
  273708f3f44a1085948126b236c9f875  gcc/testsuite/gfortran.dg/pr77420_1.f90
  85915b4b10039334da3368e57192ff34  gcc/testsuite/gfortran.dg/pr77420_2.f90
! e88169f0671cbd27372fc637327b8b76  gcc/testsuite/gfortran.dg/pr77420_3.f90
  d085febf0a75173f181533e5b551f555  gcc/testsuite/gfortran.dg/pr77420_4.f90
  79a74b829d4929d4e9c60d5d66d528d7  gcc/testsuite/gfortran.dg/pr77429.f90
  b41dce20e2213fb234886325f924905e  gcc/testsuite/gfortran.dg/pr77460.f90
--- 56128,56197 ----
  4239cbc5229572dbb1b8db5b9e534c59  gcc/testsuite/gfortran.dg/pr68227.f90
  9b3855eb7267f08dfbb31622bb7ccd2f  gcc/testsuite/gfortran.dg/pr68251.f90
  62de51c227f08efdca419f1251a72597  gcc/testsuite/gfortran.dg/pr68283.f90
! 698bcf6aa622bf31c97dfd828d0975f7  gcc/testsuite/gfortran.dg/pr68318_1.f90
  b3ef2aaf4796b96c50079acc822669c9  gcc/testsuite/gfortran.dg/pr68318_2.f90
  94426d6f9de03e56102a32084142c32c  gcc/testsuite/gfortran.dg/pr68319.f90
  72efb9f6fc6b90e2038662cf5300c2b9  gcc/testsuite/gfortran.dg/pr68379-1.f90
  eea87284cbfbd1719101caddb4ac38a8  gcc/testsuite/gfortran.dg/pr68379-2.f
! 139863847705c940567609315eea8334  gcc/testsuite/gfortran.dg/pr68566.f90
  31ac2e9d47442e542327ca97ee352b0a  gcc/testsuite/gfortran.dg/pr68592.f
  073f594f4ecd427a8718c4569b9ff787  gcc/testsuite/gfortran.dg/pr68627.f
  55c75f66cc73c9bf311237125996574c  gcc/testsuite/gfortran.dg/pr68817.f90
  08ac83e05f38ebf756a253414d9f87b0  gcc/testsuite/gfortran.dg/pr68864.f90
  b9749045f7e8d01ce770bef143077398  gcc/testsuite/gfortran.dg/pr69055.f90
  4dfe5b03dbae8d8845caac4e7f7c0a89  gcc/testsuite/gfortran.dg/pr69155.f90
! ed38cfd514aa0a70b18745aff4616ca3  gcc/testsuite/gfortran.dg/pr69395.f90
! 39a58b86266ffa82ee6ef911ebf3cb11  gcc/testsuite/gfortran.dg/pr69497.f90
! 96518037a7c5060a69f1bee697816618  gcc/testsuite/gfortran.dg/pr69514_1.f90
! cdcc7573cb338d6147f60cd5f685cd75  gcc/testsuite/gfortran.dg/pr69514_2.f90
  f0a6995f73ec38a5c8e24e5d968a365b  gcc/testsuite/gfortran.dg/pr69554-1.F90
  fe55b4afdea6006daace9aa79199e551  gcc/testsuite/gfortran.dg/pr69554-2.F90
  68938073de3c2383615f40d0ec615519  gcc/testsuite/gfortran.dg/pr69603.f90
! f98605838f661ab05c8e58bbe0ec37a4  gcc/testsuite/gfortran.dg/pr69739.f90
  ad1c20f5706de185c8d1a0e845e5710d  gcc/testsuite/gfortran.dg/pr69867.f90
  5d287811020bdabb61dcc6757135eb94  gcc/testsuite/gfortran.dg/pr69955.f90
  29610fdfa7dcc34c2dbc61b21af1103e  gcc/testsuite/gfortran.dg/pr69962.f90
  c718be52c08cbfe5941dc1bb7a50bcb5  gcc/testsuite/gfortran.dg/pr69987.f90
! e3df725d919fbea72dd53c26d3c3fc1b  gcc/testsuite/gfortran.dg/pr70006.f90
  7f656e5a6d13d6ab788f5c3e8fb90572  gcc/testsuite/gfortran.dg/pr70040.f90
! 9e9bc408643c6665aef0267621e54b9e  gcc/testsuite/gfortran.dg/pr70330.f90
! aa6073708fcde459f6b44a5e294fd6b0  gcc/testsuite/gfortran.dg/pr70409.f90
! 2761c4711c65ea8a97d2345710e8bf1e  gcc/testsuite/gfortran.dg/pr70673.f90
  b476378eb8250b54f4b3b5f63d128940  gcc/testsuite/gfortran.dg/pr70754.f90
  0e424f05f2fdeb786b877ace2617112d  gcc/testsuite/gfortran.dg/pr70931.f90
  768e159c79aa0aa1e1ae6e13122ed1b2  gcc/testsuite/gfortran.dg/pr70937.f90
  a16162b0759105febc1efc1311184688  gcc/testsuite/gfortran.dg/pr71047.f08
  2adcf4116aa4365895bb3d287e182ddd  gcc/testsuite/gfortran.dg/pr71067_1.f90
  17102b0b3177b5b5beb36730bd460100  gcc/testsuite/gfortran.dg/pr71067_2.f90
+ c31ee0cba51f9635f36dcdaea3239684  gcc/testsuite/gfortran.dg/pr71085.f90
  75b8abd1f0f9d2e236605ecc6792b9fb  gcc/testsuite/gfortran.dg/pr71204.f90
  89bbeaec468d2179f3fa27a03f16ea55  gcc/testsuite/gfortran.dg/pr71230-1.f90
  5aee7aca4bb8bc17bcd259efbba8d8fe  gcc/testsuite/gfortran.dg/pr71230-2.f90
  d90a8e0b54b4cae4641a5a9a657ea148  gcc/testsuite/gfortran.dg/pr71252.f90
  f0bf2e9015ba3f518919bfadd773f284  gcc/testsuite/gfortran.dg/pr71523_1.f90
! 346aef7b9c4b69444314886e127bf700  gcc/testsuite/gfortran.dg/pr71523_2.f90
  e8e59f069c4b37c57b85939b49c5f51d  gcc/testsuite/gfortran.dg/pr71526.f90
  7ba418a27a13483d7dc03ce4a2d4328f  gcc/testsuite/gfortran.dg/pr71642.f90
  0cc1ff0cd700d2363a2db1360345b7db  gcc/testsuite/gfortran.dg/pr71649.f90
  dffe49f90e191f0e0d1a1c6f8d53f854  gcc/testsuite/gfortran.dg/pr71688.f90
  1aa045033f7cb52ec480e9dcc3daf999  gcc/testsuite/gfortran.dg/pr71730.f90
! b310ef8caef5ed95412a60d1546be16a  gcc/testsuite/gfortran.dg/pr71764.f90
  71aa02c8e336e26a15cc65118a5c7776  gcc/testsuite/gfortran.dg/pr71799.f90
  47c2b1d1e6313ea63cccc86bf3e3641a  gcc/testsuite/gfortran.dg/pr71859.f90
  dd9b9e2af54cd4e735dad195cc1b9818  gcc/testsuite/gfortran.dg/pr71862.f90
  a5f4703aabb6d4a57c3b221a398aae60  gcc/testsuite/gfortran.dg/pr71883.f90
  ea6f420ce4d3bbc8e6c948a8f185ace7  gcc/testsuite/gfortran.dg/pr71895.f90
  e621f9143e37cc56334096cf3c636382  gcc/testsuite/gfortran.dg/pr71935.f90
! 66a69fa3f665ad36d8275af5ac99b1ae  gcc/testsuite/gfortran.dg/pr77260_1.f90
! 7262366d4c0e8a739b1ce3e990334144  gcc/testsuite/gfortran.dg/pr77260_2.f90
  ab680d2f6cc0648921a054114a485973  gcc/testsuite/gfortran.dg/pr77351.f90
  0e6eddcfc83690ffde7c6675dbaf7f56  gcc/testsuite/gfortran.dg/pr77380.f90
  c80f60155bcb84d08e36147df56ee2a7  gcc/testsuite/gfortran.dg/pr77391.f90
  98fa011f3b9cb0fda809c579d18e2aff  gcc/testsuite/gfortran.dg/pr77406.f90
+ 861a6e0fb19177aad919ae63aa50d43e  gcc/testsuite/gfortran.dg/pr77414.f90
  273708f3f44a1085948126b236c9f875  gcc/testsuite/gfortran.dg/pr77420_1.f90
  85915b4b10039334da3368e57192ff34  gcc/testsuite/gfortran.dg/pr77420_2.f90
! 2549339a920645cd51edb2c436ea56ab  gcc/testsuite/gfortran.dg/pr77420_3.f90
  d085febf0a75173f181533e5b551f555  gcc/testsuite/gfortran.dg/pr77420_4.f90
  79a74b829d4929d4e9c60d5d66d528d7  gcc/testsuite/gfortran.dg/pr77429.f90
  b41dce20e2213fb234886325f924905e  gcc/testsuite/gfortran.dg/pr77460.f90
*************** f55a4e8f8a1e79f11c9cd9ad6d9eca57  gcc/te
*** 52509,52532 ****
  a997ec96c9e5b5703664c90f0b844fe1  gcc/testsuite/gfortran.dg/pr77978_3.f90
  8a24e4a427745cf896bba391a3e4cc60  gcc/testsuite/gfortran.dg/pr78033.f90
  e54adfde54f7051d2c213313e32967ac  gcc/testsuite/gfortran.dg/pr78061.f
! 6701f92b9541522f589f8caf4f94fe71  gcc/testsuite/gfortran.dg/pr78092.f90
  46b05b28d9c2a5643e5c9999f913781a  gcc/testsuite/gfortran.dg/pr78259.f90
  38417bf1cb92bb7d70724f9be2c325ca  gcc/testsuite/gfortran.dg/pr78279.f90
  c8893a59741e05d503a560b19c9684a9  gcc/testsuite/gfortran.dg/pr78297.f90
  b0372de9ab64f58fe8095fafb7257fab  gcc/testsuite/gfortran.dg/pr78619.f90
! 4066e9daf333a7637b737c7b1c244da5  gcc/testsuite/gfortran.dg/pr78686.f90
  18ef55c7791c30ff0793ca246df65036  gcc/testsuite/gfortran.dg/pr78758.f90
  ee35970003b8954b57c5ce45c7fd506c  gcc/testsuite/gfortran.dg/pr79315.f90
  7dde52ec5dffa2ae8586c577cf97f742  gcc/testsuite/gfortran.dg/pr79886.f90
! 738d9f86dfcf06ffa972e45acfb4fa07  gcc/testsuite/gfortran.dg/pr80107.f
  2726988d026410339c6efa9ff66b2464  gcc/testsuite/gfortran.dg/pr80752.f90
  d6ba5de6e97cfb946328be25aba5d7db  gcc/testsuite/gfortran.dg/pr81175.f
  ff48bac9fecdd1e7a7054b92e1959192  gcc/testsuite/gfortran.dg/pr81723.f
  d1aef01880835db4a541fe2fb5d9b4b4  gcc/testsuite/gfortran.dg/pr81735.f90
  b6ff04901e3aee18765a74bf65804e38  gcc/testsuite/gfortran.dg/pr82253.f90
! 3e5e2dd987641b643ea03f228e33bc00  gcc/testsuite/gfortran.dg/pr83864.f90
! 34ffb26eca5fadb11dd891f51b3e475e  gcc/testsuite/gfortran.dg/pr83874.f90
! 6ff99f4b0021f30bee039a61db7cba9d  gcc/testsuite/gfortran.dg/predcom-1.f
  20a411a7e5a57891297c4c6a96d92009  gcc/testsuite/gfortran.dg/predcom-2.f
  93166017899716f4c3742eda5aaf4087  gcc/testsuite/gfortran.dg/predict-1.f90
  14cc18b33d098716ab46d0b43283d1c1  gcc/testsuite/gfortran.dg/predict-2.f90
--- 56208,56255 ----
  a997ec96c9e5b5703664c90f0b844fe1  gcc/testsuite/gfortran.dg/pr77978_3.f90
  8a24e4a427745cf896bba391a3e4cc60  gcc/testsuite/gfortran.dg/pr78033.f90
  e54adfde54f7051d2c213313e32967ac  gcc/testsuite/gfortran.dg/pr78061.f
! b85a08682c81be65955c4ba92597115b  gcc/testsuite/gfortran.dg/pr78092.f90
! de9e390d5bfffcb1b19afeb73bf0cb56  gcc/testsuite/gfortran.dg/pr78240.f90
  46b05b28d9c2a5643e5c9999f913781a  gcc/testsuite/gfortran.dg/pr78259.f90
  38417bf1cb92bb7d70724f9be2c325ca  gcc/testsuite/gfortran.dg/pr78279.f90
  c8893a59741e05d503a560b19c9684a9  gcc/testsuite/gfortran.dg/pr78297.f90
  b0372de9ab64f58fe8095fafb7257fab  gcc/testsuite/gfortran.dg/pr78619.f90
! 5b2aa5e5d8aa97b69f0cc98bc9709f3f  gcc/testsuite/gfortran.dg/pr78741.f90
  18ef55c7791c30ff0793ca246df65036  gcc/testsuite/gfortran.dg/pr78758.f90
  ee35970003b8954b57c5ce45c7fd506c  gcc/testsuite/gfortran.dg/pr79315.f90
  7dde52ec5dffa2ae8586c577cf97f742  gcc/testsuite/gfortran.dg/pr79886.f90
! 7306c8ac0b80e42ab74b2de5f00a351a  gcc/testsuite/gfortran.dg/pr79966.f90
! 21b5f06229f04696cc787b63748c5de0  gcc/testsuite/gfortran.dg/pr80494.f90
! 8b9f5c1760222d8600a5216a165e1f97  gcc/testsuite/gfortran.dg/pr80668.f90
  2726988d026410339c6efa9ff66b2464  gcc/testsuite/gfortran.dg/pr80752.f90
  d6ba5de6e97cfb946328be25aba5d7db  gcc/testsuite/gfortran.dg/pr81175.f
+ 5a792ae442226ba99f4ea3efdc8de773  gcc/testsuite/gfortran.dg/pr81303.f
+ c76dee177cc45a84271ecad86acabd2b  gcc/testsuite/gfortran.dg/pr81464.f90
+ 30d97b59ea5a55ae9c31d2317ff04ec9  gcc/testsuite/gfortran.dg/pr81529.f90
  ff48bac9fecdd1e7a7054b92e1959192  gcc/testsuite/gfortran.dg/pr81723.f
  d1aef01880835db4a541fe2fb5d9b4b4  gcc/testsuite/gfortran.dg/pr81735.f90
+ 58ba9db10feed5572dd1e17134e5d88c  gcc/testsuite/gfortran.dg/pr81889.f90
+ e338cfba2f466abedf9af92b52cd6fb3  gcc/testsuite/gfortran.dg/pr82004.f90
  b6ff04901e3aee18765a74bf65804e38  gcc/testsuite/gfortran.dg/pr82253.f90
! 7f04eca318ca64e1442ceabc31fab9fb  gcc/testsuite/gfortran.dg/pr82397.f
! 616772c135ee9b14c410dcd23fdbc3e4  gcc/testsuite/gfortran.dg/pr82973.f90
! 3efdf6eef62b5bb55c7bd5d6342e1943  gcc/testsuite/gfortran.dg/pr83149.f90
! b7e5bb91d4ee23a891d1d4b6fb4ad916  gcc/testsuite/gfortran.dg/pr83149_1.f90
! a0d91b3e4bc44943398d32213588392c  gcc/testsuite/gfortran.dg/pr83149_a.f90
! b7a2ebc3f20996032962acc5e26b8851  gcc/testsuite/gfortran.dg/pr83149_b.f90
! 57b279918a08b737f9e74a8e471a8e37  gcc/testsuite/gfortran.dg/pr83864.f90
! 267a9074cb3dfa3c389c41dda22210ff  gcc/testsuite/gfortran.dg/pr83874.f90
! 3d847069ff4f87a831062ece033f3bf1  gcc/testsuite/gfortran.dg/pr83939.f90
! 95b2ba5b10167fedc1a075877a7a103b  gcc/testsuite/gfortran.dg/pr84088.f90
! ee7b5aa850a8be8a1ed15f2fcdca347a  gcc/testsuite/gfortran.dg/pr84117.f90
! c41bc69547a048a19ccb1adc57ce3bca  gcc/testsuite/gfortran.dg/pr84155.f90
! 12af81a97aa86950b63e458f115e45c9  gcc/testsuite/gfortran.dg/pr84523.f90
! 6d593814cbde3b81eb21e9501a48bac2  gcc/testsuite/gfortran.dg/pr84565.f90
! 7cb3611bc701529711c1f596921afaa3  gcc/testsuite/gfortran.dg/pr84734.f90
! cc82665e1d54c6a2d5a100788c474853  gcc/testsuite/gfortran.dg/pr84957.f90
! 42d21294436ebefdc995a697f0266fd9  gcc/testsuite/gfortran.dg/pr85082.f90
! 286fa2d8f5b3fa55fd3173261d6b4eea  gcc/testsuite/gfortran.dg/pr85520.f90
! 891574fabddfbfea0c1fe4cf0cd69927  gcc/testsuite/gfortran.dg/predcom-1.f
  20a411a7e5a57891297c4c6a96d92009  gcc/testsuite/gfortran.dg/predcom-2.f
  93166017899716f4c3742eda5aaf4087  gcc/testsuite/gfortran.dg/predict-1.f90
  14cc18b33d098716ab46d0b43283d1c1  gcc/testsuite/gfortran.dg/predict-2.f90
*************** c95af06464c4c021512cb22cd33ad36d  gcc/te
*** 52559,52573 ****
  161e8015aad6b5952aca6473327e132f  gcc/testsuite/gfortran.dg/proc_decl_1.f90
  584123cccedb618236264d7d3689df55  gcc/testsuite/gfortran.dg/proc_decl_10.f90
  216b36bde5ae816a7ea77764a27619c1  gcc/testsuite/gfortran.dg/proc_decl_11.f90
! 09eb74e0784755b0f1979afa84676e0e  gcc/testsuite/gfortran.dg/proc_decl_12.f90
! 9997ded3dfe0b2194a90a52550486fbd  gcc/testsuite/gfortran.dg/proc_decl_13.f90
  3020021eb316e5e165ca9828d6241561  gcc/testsuite/gfortran.dg/proc_decl_14.f90
! f7ae48d1d0397ed56d650668a67bdd82  gcc/testsuite/gfortran.dg/proc_decl_15.f90
  ae647f5d98965ece72f2a6227b24af5d  gcc/testsuite/gfortran.dg/proc_decl_16.f90
! 791d2d5a48f4a90678a76b4364682f6a  gcc/testsuite/gfortran.dg/proc_decl_17.f90
! 4496c4dc2040f7b07c7874f850faad25  gcc/testsuite/gfortran.dg/proc_decl_18.f90
  15bfde0fe3f7b713911df130caf72ef5  gcc/testsuite/gfortran.dg/proc_decl_19.f90
! 568aed6baafae86770333c8fcec2c06b  gcc/testsuite/gfortran.dg/proc_decl_2.f90
  9ce98afe4e73b5f2e8033ebf32a5a7f3  gcc/testsuite/gfortran.dg/proc_decl_20.f90
  055690da1e6be0ea20e775a394d3bab7  gcc/testsuite/gfortran.dg/proc_decl_21.f90
  6fbfe88af58b6adfff6415b4fcd37c0b  gcc/testsuite/gfortran.dg/proc_decl_22.f90
--- 56282,56296 ----
  161e8015aad6b5952aca6473327e132f  gcc/testsuite/gfortran.dg/proc_decl_1.f90
  584123cccedb618236264d7d3689df55  gcc/testsuite/gfortran.dg/proc_decl_10.f90
  216b36bde5ae816a7ea77764a27619c1  gcc/testsuite/gfortran.dg/proc_decl_11.f90
! 46428fe8c48f38045614cdc94da89fd1  gcc/testsuite/gfortran.dg/proc_decl_12.f90
! 7e9712127d6843fc63c48ca44eb2e57f  gcc/testsuite/gfortran.dg/proc_decl_13.f90
  3020021eb316e5e165ca9828d6241561  gcc/testsuite/gfortran.dg/proc_decl_14.f90
! 0a41f303d446a93d0a703faa11205a92  gcc/testsuite/gfortran.dg/proc_decl_15.f90
  ae647f5d98965ece72f2a6227b24af5d  gcc/testsuite/gfortran.dg/proc_decl_16.f90
! a0b6c9317d7c79d76a355b0923552133  gcc/testsuite/gfortran.dg/proc_decl_17.f90
! 2e1d31d77ad2d1ba92e5c669d7bc958d  gcc/testsuite/gfortran.dg/proc_decl_18.f90
  15bfde0fe3f7b713911df130caf72ef5  gcc/testsuite/gfortran.dg/proc_decl_19.f90
! 94936ee36d72c5d650aee894b1299f21  gcc/testsuite/gfortran.dg/proc_decl_2.f90
  9ce98afe4e73b5f2e8033ebf32a5a7f3  gcc/testsuite/gfortran.dg/proc_decl_20.f90
  055690da1e6be0ea20e775a394d3bab7  gcc/testsuite/gfortran.dg/proc_decl_21.f90
  6fbfe88af58b6adfff6415b4fcd37c0b  gcc/testsuite/gfortran.dg/proc_decl_22.f90
*************** fd451ea4b1a79fa9abd2cf68f7412b28  gcc/te
*** 52580,52655 ****
  2934e7195cdccd1e48244488c1c65fe0  gcc/testsuite/gfortran.dg/proc_decl_29.f90
  16c107e1f480b5af263a3b24682145bf  gcc/testsuite/gfortran.dg/proc_decl_3.f90
  a8525fbfa5dd7f02a6b578bdaa7287ee  gcc/testsuite/gfortran.dg/proc_decl_4.f90
! 66b7e63d7b21d6b89af33f24e9df40d5  gcc/testsuite/gfortran.dg/proc_decl_5.f90
  db3fe18298b61a4ca63d026cd283db3b  gcc/testsuite/gfortran.dg/proc_decl_6.f90
  b968fdb26012cf5077b9b7e9fa166d9e  gcc/testsuite/gfortran.dg/proc_decl_7.f90
  87fa68aaed9a0b28cd6cc0d07329836b  gcc/testsuite/gfortran.dg/proc_decl_8.f90
! c1b47393a67605f41881237fb9437258  gcc/testsuite/gfortran.dg/proc_decl_9.f90
! a5baa3d5370d024d437b58a945a44ea4  gcc/testsuite/gfortran.dg/proc_ptr_1.f90
! 64d7b0adb74d2193a8fc1e6247ea36fc  gcc/testsuite/gfortran.dg/proc_ptr_10.f90
  96f67829feb27c6a858729c88cccbb3f  gcc/testsuite/gfortran.dg/proc_ptr_11.f90
! 91d92db97ac0b90c934b5871e09b29df  gcc/testsuite/gfortran.dg/proc_ptr_12.f90
  e7245d180b89fbb53ddba43251fb7708  gcc/testsuite/gfortran.dg/proc_ptr_13.f90
  78bfa2b482feaf43c045b6185b48d1e9  gcc/testsuite/gfortran.dg/proc_ptr_14.f90
  1cefcf4f0b53d22710b3a14eb9f9f736  gcc/testsuite/gfortran.dg/proc_ptr_15.f90
  ad313a34eec91b619ecaa8b83a042f74  gcc/testsuite/gfortran.dg/proc_ptr_16.f90
  10824b5ccb3153e750203fdb839b7836  gcc/testsuite/gfortran.dg/proc_ptr_17.f90
! 1f826e8b13d576f39903e1643694c202  gcc/testsuite/gfortran.dg/proc_ptr_18.f90
! 1afa60b3ea4dc80a0ddc37ad4a65555a  gcc/testsuite/gfortran.dg/proc_ptr_19.f90
  3e7b02b00f29e0444ce2a747b5eb5794  gcc/testsuite/gfortran.dg/proc_ptr_2.f90
  22d48068381a7619441a95eddbdb8eb4  gcc/testsuite/gfortran.dg/proc_ptr_20.f90
! 0eef6387c434fdf14c531ec0cb249a55  gcc/testsuite/gfortran.dg/proc_ptr_21.f90
! 10642884daafccd451fdc87171197a9b  gcc/testsuite/gfortran.dg/proc_ptr_22.f90
! 5de20185dfc8cae979d7e418844ca34a  gcc/testsuite/gfortran.dg/proc_ptr_23.f90
  a52c06a38bced8afc26e44692bea287e  gcc/testsuite/gfortran.dg/proc_ptr_24.f90
! a3b679e1fde75f217e3c0ea27c541e4f  gcc/testsuite/gfortran.dg/proc_ptr_25.f90
! 88666ee949b37b884848c1fb9690a810  gcc/testsuite/gfortran.dg/proc_ptr_26.f90
  556d229f9a1321617b43059f34bf47bb  gcc/testsuite/gfortran.dg/proc_ptr_27.f90
  3d40e832f3d2fec3c525c980ee9a812e  gcc/testsuite/gfortran.dg/proc_ptr_28.f90
  b79feefd58ca4b0dd192b32a3878c385  gcc/testsuite/gfortran.dg/proc_ptr_29.f90
! 6556cdffe682f8b7484084baa505907a  gcc/testsuite/gfortran.dg/proc_ptr_3.f90
  cfa8928d4701fe4595e327a2ee3672b7  gcc/testsuite/gfortran.dg/proc_ptr_30.f90
  25cd59345ed31aefa8f5b149058cf722  gcc/testsuite/gfortran.dg/proc_ptr_31.f90
  00d050c5cbb4f1d5da41a9ceee7dfb3d  gcc/testsuite/gfortran.dg/proc_ptr_32.f90
  002bdb60f650fc62098fd976f309b791  gcc/testsuite/gfortran.dg/proc_ptr_33.f90
  cbfe07c32a97f2569d49d86f022b871e  gcc/testsuite/gfortran.dg/proc_ptr_34.f90
  c8c701ef024a1d25f59e1ad1d9fa47ec  gcc/testsuite/gfortran.dg/proc_ptr_35.f90
! 3a2df810222cd1c0d58ceb987f6097d9  gcc/testsuite/gfortran.dg/proc_ptr_36.f90
  36de89b3792d8def34d9cf7254f7af6a  gcc/testsuite/gfortran.dg/proc_ptr_37.f90
  bc0f5bf4f379f171c2687a86fdae9b51  gcc/testsuite/gfortran.dg/proc_ptr_38.f90
! 258552570aaa844288548f74451c8075  gcc/testsuite/gfortran.dg/proc_ptr_39.f90
  8109d84f58f630a5d29c8b76a38b145c  gcc/testsuite/gfortran.dg/proc_ptr_4.f90
  4be6c82e80d48eed7fe78ec45124b99d  gcc/testsuite/gfortran.dg/proc_ptr_40.f90
! b56e9f2b05e65e28487a8445ef02657c  gcc/testsuite/gfortran.dg/proc_ptr_41.f90
! 046af16cbaa722a036eba3298fc5b451  gcc/testsuite/gfortran.dg/proc_ptr_42.f90
  2d9a92734dd60f1d0e1c02fba024a973  gcc/testsuite/gfortran.dg/proc_ptr_43.f90
  4ac62e187f7206c11f44f881173e8a49  gcc/testsuite/gfortran.dg/proc_ptr_44.f90
  3112dbb40c03404d9c8244c53b09b776  gcc/testsuite/gfortran.dg/proc_ptr_45.f90
  fbfcfdd0751320bb90e2488052dfe7de  gcc/testsuite/gfortran.dg/proc_ptr_46.f90
! 81e72e4ab4eb9b9c94a4c6b8c55d5ea5  gcc/testsuite/gfortran.dg/proc_ptr_47.f90
! 0336d1b3744f35876d457535208fd1ef  gcc/testsuite/gfortran.dg/proc_ptr_48.f90
  a50ed014f3fd628f8e8e8e09f44f8c0f  gcc/testsuite/gfortran.dg/proc_ptr_49.f90
! 8315cc72db332168e57edf018a4b8f1f  gcc/testsuite/gfortran.dg/proc_ptr_5.f90
! 2e1358865c3ec02c3c45568f5eebb128  gcc/testsuite/gfortran.dg/proc_ptr_6.f90
  3648c097522ae5858550c7d7776afd28  gcc/testsuite/gfortran.dg/proc_ptr_7.c
! 03be7ba134a9b19dcfa3ec09f4064fc4  gcc/testsuite/gfortran.dg/proc_ptr_7.f90
  e36adc4a6e3cf9cc75229d8283bef09e  gcc/testsuite/gfortran.dg/proc_ptr_8.c
! b5d302bd08e002d1f15f1725f6a501c0  gcc/testsuite/gfortran.dg/proc_ptr_8.f90
  2ac8ea3d49bf5b547a7a41c68b3cbc8e  gcc/testsuite/gfortran.dg/proc_ptr_9.f90
! e15fc7994da7f150d3375ec381c4a779  gcc/testsuite/gfortran.dg/proc_ptr_common_1.f90
! 3c11c2890b0f70ea9dae0f1426d0be53  gcc/testsuite/gfortran.dg/proc_ptr_common_2.f90
! 828d2360106aa6037f2a3f46f33a4178  gcc/testsuite/gfortran.dg/proc_ptr_comp_1.f90
  51e38253f328f442ad6ebdbbb94fa9b9  gcc/testsuite/gfortran.dg/proc_ptr_comp_10.f90
! e375c67ed7e7377bbdf5e4f7ab9c3f30  gcc/testsuite/gfortran.dg/proc_ptr_comp_11.f90
! 583604631edf1613d26a44bb794f4866  gcc/testsuite/gfortran.dg/proc_ptr_comp_12.f90
! 4c9b05efdb0670bcef603ba463d16288  gcc/testsuite/gfortran.dg/proc_ptr_comp_13.f90
! 9d8f8ff891be84ec5e6d4d0072764ebb  gcc/testsuite/gfortran.dg/proc_ptr_comp_14.f90
! 9f60ed03ecc40ea88f7c70ce08c1d1b9  gcc/testsuite/gfortran.dg/proc_ptr_comp_15.f90
! 5bf8a0004a31c8ffcc7e5133ca4ed393  gcc/testsuite/gfortran.dg/proc_ptr_comp_16.f90
! 3ffacb88e295b77c277657e05f634642  gcc/testsuite/gfortran.dg/proc_ptr_comp_17.f90
! 04b2b865967d3afff58122cd6b92b5a9  gcc/testsuite/gfortran.dg/proc_ptr_comp_18.f90
! 8271cf1095ed0b1a151dd93ccd0ca811  gcc/testsuite/gfortran.dg/proc_ptr_comp_19.f90
! c01441c4cb21ba2a5386171ce10b83b8  gcc/testsuite/gfortran.dg/proc_ptr_comp_2.f90
  3bc8e353ebe36fc359fbd4b5eba1ab88  gcc/testsuite/gfortran.dg/proc_ptr_comp_20.f90
  9ee4fd614b272197dfe65f86a6a28a4f  gcc/testsuite/gfortran.dg/proc_ptr_comp_21.f90
  48fde83c156999eef68dd4c2e8fdfc4b  gcc/testsuite/gfortran.dg/proc_ptr_comp_22.f90
--- 56303,56378 ----
  2934e7195cdccd1e48244488c1c65fe0  gcc/testsuite/gfortran.dg/proc_decl_29.f90
  16c107e1f480b5af263a3b24682145bf  gcc/testsuite/gfortran.dg/proc_decl_3.f90
  a8525fbfa5dd7f02a6b578bdaa7287ee  gcc/testsuite/gfortran.dg/proc_decl_4.f90
! fe8d4f1e3d50a724aa39ae0786c170a8  gcc/testsuite/gfortran.dg/proc_decl_5.f90
  db3fe18298b61a4ca63d026cd283db3b  gcc/testsuite/gfortran.dg/proc_decl_6.f90
  b968fdb26012cf5077b9b7e9fa166d9e  gcc/testsuite/gfortran.dg/proc_decl_7.f90
  87fa68aaed9a0b28cd6cc0d07329836b  gcc/testsuite/gfortran.dg/proc_decl_8.f90
! 3e0f975081d5c49779612ea7f7cc69db  gcc/testsuite/gfortran.dg/proc_decl_9.f90
! 557738bff5385d2aaf19c82b3e57f5e3  gcc/testsuite/gfortran.dg/proc_ptr_1.f90
! c3b70511c2a2656194216b3903b741e8  gcc/testsuite/gfortran.dg/proc_ptr_10.f90
  96f67829feb27c6a858729c88cccbb3f  gcc/testsuite/gfortran.dg/proc_ptr_11.f90
! 5fa844d35940bdee86e61f84b3797b3e  gcc/testsuite/gfortran.dg/proc_ptr_12.f90
  e7245d180b89fbb53ddba43251fb7708  gcc/testsuite/gfortran.dg/proc_ptr_13.f90
  78bfa2b482feaf43c045b6185b48d1e9  gcc/testsuite/gfortran.dg/proc_ptr_14.f90
  1cefcf4f0b53d22710b3a14eb9f9f736  gcc/testsuite/gfortran.dg/proc_ptr_15.f90
  ad313a34eec91b619ecaa8b83a042f74  gcc/testsuite/gfortran.dg/proc_ptr_16.f90
  10824b5ccb3153e750203fdb839b7836  gcc/testsuite/gfortran.dg/proc_ptr_17.f90
! c53f1ad8114bf1001dab68dc27bb167c  gcc/testsuite/gfortran.dg/proc_ptr_18.f90
! 8dd9b52059f41ad26dbafd8f51f867b0  gcc/testsuite/gfortran.dg/proc_ptr_19.f90
  3e7b02b00f29e0444ce2a747b5eb5794  gcc/testsuite/gfortran.dg/proc_ptr_2.f90
  22d48068381a7619441a95eddbdb8eb4  gcc/testsuite/gfortran.dg/proc_ptr_20.f90
! 0d1a05886c3fd2327e69e50ec2bd812e  gcc/testsuite/gfortran.dg/proc_ptr_21.f90
! cacf2b43b27b3c0bb3bc40b91489766b  gcc/testsuite/gfortran.dg/proc_ptr_22.f90
! 26fb2913a50aa93e849769b462e5b117  gcc/testsuite/gfortran.dg/proc_ptr_23.f90
  a52c06a38bced8afc26e44692bea287e  gcc/testsuite/gfortran.dg/proc_ptr_24.f90
! 50e5eb88dcf716b3f8c5f0117c71b565  gcc/testsuite/gfortran.dg/proc_ptr_25.f90
! a927dd7d502f5774f9b81fa546c0de42  gcc/testsuite/gfortran.dg/proc_ptr_26.f90
  556d229f9a1321617b43059f34bf47bb  gcc/testsuite/gfortran.dg/proc_ptr_27.f90
  3d40e832f3d2fec3c525c980ee9a812e  gcc/testsuite/gfortran.dg/proc_ptr_28.f90
  b79feefd58ca4b0dd192b32a3878c385  gcc/testsuite/gfortran.dg/proc_ptr_29.f90
! 34f32b0ae2dd90c50fdae1a141d367bb  gcc/testsuite/gfortran.dg/proc_ptr_3.f90
  cfa8928d4701fe4595e327a2ee3672b7  gcc/testsuite/gfortran.dg/proc_ptr_30.f90
  25cd59345ed31aefa8f5b149058cf722  gcc/testsuite/gfortran.dg/proc_ptr_31.f90
  00d050c5cbb4f1d5da41a9ceee7dfb3d  gcc/testsuite/gfortran.dg/proc_ptr_32.f90
  002bdb60f650fc62098fd976f309b791  gcc/testsuite/gfortran.dg/proc_ptr_33.f90
  cbfe07c32a97f2569d49d86f022b871e  gcc/testsuite/gfortran.dg/proc_ptr_34.f90
  c8c701ef024a1d25f59e1ad1d9fa47ec  gcc/testsuite/gfortran.dg/proc_ptr_35.f90
! af6d2c7523c3bb44d4ca84db8a7f2181  gcc/testsuite/gfortran.dg/proc_ptr_36.f90
  36de89b3792d8def34d9cf7254f7af6a  gcc/testsuite/gfortran.dg/proc_ptr_37.f90
  bc0f5bf4f379f171c2687a86fdae9b51  gcc/testsuite/gfortran.dg/proc_ptr_38.f90
! bbe20301938351577e717931fe6576bb  gcc/testsuite/gfortran.dg/proc_ptr_39.f90
  8109d84f58f630a5d29c8b76a38b145c  gcc/testsuite/gfortran.dg/proc_ptr_4.f90
  4be6c82e80d48eed7fe78ec45124b99d  gcc/testsuite/gfortran.dg/proc_ptr_40.f90
! 2249882b91b6e353aa645bc96b07b5b8  gcc/testsuite/gfortran.dg/proc_ptr_41.f90
! 8bcca50f812857ccd666bba6ae62e821  gcc/testsuite/gfortran.dg/proc_ptr_42.f90
  2d9a92734dd60f1d0e1c02fba024a973  gcc/testsuite/gfortran.dg/proc_ptr_43.f90
  4ac62e187f7206c11f44f881173e8a49  gcc/testsuite/gfortran.dg/proc_ptr_44.f90
  3112dbb40c03404d9c8244c53b09b776  gcc/testsuite/gfortran.dg/proc_ptr_45.f90
  fbfcfdd0751320bb90e2488052dfe7de  gcc/testsuite/gfortran.dg/proc_ptr_46.f90
! b90c4bfff20a61ee3729212e2f203a6f  gcc/testsuite/gfortran.dg/proc_ptr_47.f90
! b4b03f1c1fdfb443168b64ca0b187ea5  gcc/testsuite/gfortran.dg/proc_ptr_48.f90
  a50ed014f3fd628f8e8e8e09f44f8c0f  gcc/testsuite/gfortran.dg/proc_ptr_49.f90
! 10c589d311b0a73db8c553ec42336631  gcc/testsuite/gfortran.dg/proc_ptr_5.f90
! aa07bccd48fbde93e47db111bac1ce8c  gcc/testsuite/gfortran.dg/proc_ptr_6.f90
  3648c097522ae5858550c7d7776afd28  gcc/testsuite/gfortran.dg/proc_ptr_7.c
! fe310c69dfb181cb04f271dad6a3f1d5  gcc/testsuite/gfortran.dg/proc_ptr_7.f90
  e36adc4a6e3cf9cc75229d8283bef09e  gcc/testsuite/gfortran.dg/proc_ptr_8.c
! d122b96d2d109934dfb538c1bae6e06f  gcc/testsuite/gfortran.dg/proc_ptr_8.f90
  2ac8ea3d49bf5b547a7a41c68b3cbc8e  gcc/testsuite/gfortran.dg/proc_ptr_9.f90
! 60c8447e7b658ce506762938715cd603  gcc/testsuite/gfortran.dg/proc_ptr_common_1.f90
! f211e304daefbe76c9f3c80c43685f9f  gcc/testsuite/gfortran.dg/proc_ptr_common_2.f90
! 38d9bcf9d5236900a721a1ba835bd4a0  gcc/testsuite/gfortran.dg/proc_ptr_comp_1.f90
  51e38253f328f442ad6ebdbbb94fa9b9  gcc/testsuite/gfortran.dg/proc_ptr_comp_10.f90
! 47d0b6da113bb78eda01875e5bac9424  gcc/testsuite/gfortran.dg/proc_ptr_comp_11.f90
! c77723243c6f9834021b8973d053b218  gcc/testsuite/gfortran.dg/proc_ptr_comp_12.f90
! 94d2cc5d175e38de4a753b76898de363  gcc/testsuite/gfortran.dg/proc_ptr_comp_13.f90
! 59c1802aa4ebbc1f5bbb51a373a5c1a9  gcc/testsuite/gfortran.dg/proc_ptr_comp_14.f90
! b914a6d0ba99ec8b643416e7946a5be0  gcc/testsuite/gfortran.dg/proc_ptr_comp_15.f90
! d02e9b38d607bf974198c9da6e85e8bb  gcc/testsuite/gfortran.dg/proc_ptr_comp_16.f90
! b04b7105dd36cf5047be989618f8fa77  gcc/testsuite/gfortran.dg/proc_ptr_comp_17.f90
! c5d2d265b0f871b77b4abd4b5cbe4a47  gcc/testsuite/gfortran.dg/proc_ptr_comp_18.f90
! 1805adc7f16d1e5abba66fff79724034  gcc/testsuite/gfortran.dg/proc_ptr_comp_19.f90
! f4c3481e90c7e17062618096e8b2ce1e  gcc/testsuite/gfortran.dg/proc_ptr_comp_2.f90
  3bc8e353ebe36fc359fbd4b5eba1ab88  gcc/testsuite/gfortran.dg/proc_ptr_comp_20.f90
  9ee4fd614b272197dfe65f86a6a28a4f  gcc/testsuite/gfortran.dg/proc_ptr_comp_21.f90
  48fde83c156999eef68dd4c2e8fdfc4b  gcc/testsuite/gfortran.dg/proc_ptr_comp_22.f90
*************** c01441c4cb21ba2a5386171ce10b83b8  gcc/te
*** 52659,52665 ****
  628999eed04eb65ab6650341417ba07b  gcc/testsuite/gfortran.dg/proc_ptr_comp_26.f90
  4e1da2b478d5f0cfb574607a5592cbdf  gcc/testsuite/gfortran.dg/proc_ptr_comp_27.f90
  50c98bf06a6f3286efc7b18a46888a69  gcc/testsuite/gfortran.dg/proc_ptr_comp_28.f90
! 6b9a2248d5d0ede7133ff3036ab92017  gcc/testsuite/gfortran.dg/proc_ptr_comp_29.f90
  c1e07333160aed6503f3f936cb6dc14e  gcc/testsuite/gfortran.dg/proc_ptr_comp_3.f90
  50de3dd33d517cbb251bbecb2ffc5cb1  gcc/testsuite/gfortran.dg/proc_ptr_comp_30.f90
  1a3ec013a8217b9e7a4fb116fa6ae7e8  gcc/testsuite/gfortran.dg/proc_ptr_comp_31.f90
--- 56382,56388 ----
  628999eed04eb65ab6650341417ba07b  gcc/testsuite/gfortran.dg/proc_ptr_comp_26.f90
  4e1da2b478d5f0cfb574607a5592cbdf  gcc/testsuite/gfortran.dg/proc_ptr_comp_27.f90
  50c98bf06a6f3286efc7b18a46888a69  gcc/testsuite/gfortran.dg/proc_ptr_comp_28.f90
! ff36b0110e8b93782d9244cd2620d608  gcc/testsuite/gfortran.dg/proc_ptr_comp_29.f90
  c1e07333160aed6503f3f936cb6dc14e  gcc/testsuite/gfortran.dg/proc_ptr_comp_3.f90
  50de3dd33d517cbb251bbecb2ffc5cb1  gcc/testsuite/gfortran.dg/proc_ptr_comp_30.f90
  1a3ec013a8217b9e7a4fb116fa6ae7e8  gcc/testsuite/gfortran.dg/proc_ptr_comp_31.f90
*************** b6ac544b62c3a4ab9f63cee55f1fc90a  gcc/te
*** 52675,52730 ****
  d93a9e353ffa27762f707c539093d6ce  gcc/testsuite/gfortran.dg/proc_ptr_comp_40.f90
  58a78be7547257e1c3bc1f20ac313cd8  gcc/testsuite/gfortran.dg/proc_ptr_comp_41.f90
  1fa54d7e23c9a902321237919de21d21  gcc/testsuite/gfortran.dg/proc_ptr_comp_42.f90
! 7e0250e09f1d6fd62c3c197b85915c43  gcc/testsuite/gfortran.dg/proc_ptr_comp_43.f90
  72f01172bd92b8cb8853693a0a79310d  gcc/testsuite/gfortran.dg/proc_ptr_comp_44.f90
! c7c6f9039ee8a7d60608874366e1f0e6  gcc/testsuite/gfortran.dg/proc_ptr_comp_45.f90
  d36ea2b7c1445a8f52096a9b8fe5fa4c  gcc/testsuite/gfortran.dg/proc_ptr_comp_46.f90
! 6272ad72c281d46591f9252a56802c4c  gcc/testsuite/gfortran.dg/proc_ptr_comp_47.f90
  abeccc9329f27ef7418a69fc30360183  gcc/testsuite/gfortran.dg/proc_ptr_comp_48.f90
  c75d4858dc637cf3362d7fd34a2b2c12  gcc/testsuite/gfortran.dg/proc_ptr_comp_49.f90
! 9440b7a38d0f8e2941673b44554c91fe  gcc/testsuite/gfortran.dg/proc_ptr_comp_5.f90
  301350ead67fb8e45886f0d873e81b06  gcc/testsuite/gfortran.dg/proc_ptr_comp_50.f90
! 6347d321213f9347afa49d4354eb67f7  gcc/testsuite/gfortran.dg/proc_ptr_comp_6.f90
  f41c3a8af3a63f5aef54c294fa8cd9c5  gcc/testsuite/gfortran.dg/proc_ptr_comp_7.f90
! a43898fbcd332118da14c8be5eec75b3  gcc/testsuite/gfortran.dg/proc_ptr_comp_8.f90
! 373dec00d6afa9b356160ef04ca32d99  gcc/testsuite/gfortran.dg/proc_ptr_comp_9.f90
! bcb6e6a594597dc4232136ef33c8e7c6  gcc/testsuite/gfortran.dg/proc_ptr_comp_pass_1.f90
! eb91b12e54705c2fd9ec3fa2a476656b  gcc/testsuite/gfortran.dg/proc_ptr_comp_pass_2.f90
! 375440f631b5fc66495596bebf6e13c3  gcc/testsuite/gfortran.dg/proc_ptr_comp_pass_3.f90
! ed6fa850e9582e85c72830299ea8259c  gcc/testsuite/gfortran.dg/proc_ptr_comp_pass_4.f90
! f66ab982893853fa57ac37f6eda6f65e  gcc/testsuite/gfortran.dg/proc_ptr_comp_pass_5.f90
  6b568d966a3a5b62dd0e2548772ac3fa  gcc/testsuite/gfortran.dg/proc_ptr_comp_pass_6.f90
  d0d0c5e014e720d14becdb10cd74d6bb  gcc/testsuite/gfortran.dg/proc_ptr_comp_pass_7.f90
! a23b8e0b47c69a036c5a3f80e5e4490e  gcc/testsuite/gfortran.dg/proc_ptr_result_1.f90
  1d8b0f817c3e15835b9007418f494485  gcc/testsuite/gfortran.dg/proc_ptr_result_2.f90
! 90f69cc020a534147d6a0c1edabe3b90  gcc/testsuite/gfortran.dg/proc_ptr_result_3.f90
  76b52d7a16ce6fa235be52e3a578b9bf  gcc/testsuite/gfortran.dg/proc_ptr_result_4.f90
  3f471be6394e7a6eb4166b2f7ccccfb3  gcc/testsuite/gfortran.dg/proc_ptr_result_5.f90
! f26d3170bfbbf45a0167b0681c5a9df7  gcc/testsuite/gfortran.dg/proc_ptr_result_6.f90
! 1accbc58ae6fe9afd006fc88862ffb89  gcc/testsuite/gfortran.dg/proc_ptr_result_7.f90
! 241c5805006be6db66466970b4819af6  gcc/testsuite/gfortran.dg/proc_ptr_result_8.f90
  6cafac779e307ea3e5eea77636f44059  gcc/testsuite/gfortran.dg/procedure_lvalue.f90
! 78dc24056b651bdc45bcf776afb61df9  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
! f80d2e236cc32743089ebd5d7d08a1b0  gcc/testsuite/gfortran.dg/prof/prof.exp
  ddf26540873573967a534a14385f92dd  gcc/testsuite/gfortran.dg/program_name_1.f90
! 922e064b372c933f5b23e30c55a5fbb5  gcc/testsuite/gfortran.dg/promotion.f90
! b834be9ced389e5d9e0d98202ab71362  gcc/testsuite/gfortran.dg/promotion_2.f90
! 4d0a46240200616b20ae9f6070905a7d  gcc/testsuite/gfortran.dg/protected_1.f90
! 7d142bcf00ce3cd81ab40a8625d929d6  gcc/testsuite/gfortran.dg/protected_2.f90
! 0f8801d92f2ceab06710ba897f8c687e  gcc/testsuite/gfortran.dg/protected_3.f90
! 34b3c115febe9aa8e90d8455b35bff64  gcc/testsuite/gfortran.dg/protected_4.f90
! 0c4ac21d758cedb1c0b2db0bb9eccb8b  gcc/testsuite/gfortran.dg/protected_5.f90
! 2e4a663c984791612b0442426ba38a3a  gcc/testsuite/gfortran.dg/protected_6.f90
  52dff839978be3dcf2e894769b9a6a7c  gcc/testsuite/gfortran.dg/protected_7.f90
  8823218c8e39e313a365821aff2faabe  gcc/testsuite/gfortran.dg/protected_8.f90
  73ab7ba9b0a193e7d3835ba4228e5045  gcc/testsuite/gfortran.dg/protected_9.f90
! b1af3996950def8fd6459e855d42bd47  gcc/testsuite/gfortran.dg/ptr-func-1.f90
! 5e78e437c59039417525bd758d3c1474  gcc/testsuite/gfortran.dg/ptr-func-2.f90
! 3a6a01230289d4ea81dfdfa97a113a89  gcc/testsuite/gfortran.dg/ptr_func_assign_1.f08
! bece3bdd29dea9f82fad8f5e6162aa5d  gcc/testsuite/gfortran.dg/ptr_func_assign_2.f08
! 3ba73ea19eff54d63f7d39eed191abc3  gcc/testsuite/gfortran.dg/ptr_func_assign_3.f08
  389e953b7230302dc01a242926959fa7  gcc/testsuite/gfortran.dg/ptr_func_assign_4.f08
  1bdd54ec3c3cda30429d4442e8a439e5  gcc/testsuite/gfortran.dg/public_private_module.f90
  53bfb4bd5468c34fc1b1a819ebc75855  gcc/testsuite/gfortran.dg/public_private_module_2.f90
--- 56398,56456 ----
  d93a9e353ffa27762f707c539093d6ce  gcc/testsuite/gfortran.dg/proc_ptr_comp_40.f90
  58a78be7547257e1c3bc1f20ac313cd8  gcc/testsuite/gfortran.dg/proc_ptr_comp_41.f90
  1fa54d7e23c9a902321237919de21d21  gcc/testsuite/gfortran.dg/proc_ptr_comp_42.f90
! dfd2df2e7f435ff81fc84d70816aaffe  gcc/testsuite/gfortran.dg/proc_ptr_comp_43.f90
  72f01172bd92b8cb8853693a0a79310d  gcc/testsuite/gfortran.dg/proc_ptr_comp_44.f90
! a5aece827084f2e798e8c04901f1c705  gcc/testsuite/gfortran.dg/proc_ptr_comp_45.f90
  d36ea2b7c1445a8f52096a9b8fe5fa4c  gcc/testsuite/gfortran.dg/proc_ptr_comp_46.f90
! 5045d1e41abc8149055f3ee8ff0c029c  gcc/testsuite/gfortran.dg/proc_ptr_comp_47.f90
  abeccc9329f27ef7418a69fc30360183  gcc/testsuite/gfortran.dg/proc_ptr_comp_48.f90
  c75d4858dc637cf3362d7fd34a2b2c12  gcc/testsuite/gfortran.dg/proc_ptr_comp_49.f90
! 413879b7cb241bd067b975ca6069cdf7  gcc/testsuite/gfortran.dg/proc_ptr_comp_5.f90
  301350ead67fb8e45886f0d873e81b06  gcc/testsuite/gfortran.dg/proc_ptr_comp_50.f90
! 0dd95ef147a026dc2d07a5c91995c129  gcc/testsuite/gfortran.dg/proc_ptr_comp_51.f90
! 0a5c35e1c686199c602eb079c1609d62  gcc/testsuite/gfortran.dg/proc_ptr_comp_6.f90
  f41c3a8af3a63f5aef54c294fa8cd9c5  gcc/testsuite/gfortran.dg/proc_ptr_comp_7.f90
! d3e8e56011aae6c4a66fe7865f87061c  gcc/testsuite/gfortran.dg/proc_ptr_comp_8.f90
! e4beaa31d55d6d677b99161ce2aed850  gcc/testsuite/gfortran.dg/proc_ptr_comp_9.f90
! bd8b3068d85a1f881ac4136c2cdec400  gcc/testsuite/gfortran.dg/proc_ptr_comp_pass_1.f90
! cde7bf2e783209a31f7006ddda5df65e  gcc/testsuite/gfortran.dg/proc_ptr_comp_pass_2.f90
! d326a464b96d3be534b0ef59d3e1f339  gcc/testsuite/gfortran.dg/proc_ptr_comp_pass_3.f90
! b7744427fa5c6fc1079af674356026c3  gcc/testsuite/gfortran.dg/proc_ptr_comp_pass_4.f90
! 2d847ed891fa09da9b3e2ed4bf013c8b  gcc/testsuite/gfortran.dg/proc_ptr_comp_pass_5.f90
  6b568d966a3a5b62dd0e2548772ac3fa  gcc/testsuite/gfortran.dg/proc_ptr_comp_pass_6.f90
  d0d0c5e014e720d14becdb10cd74d6bb  gcc/testsuite/gfortran.dg/proc_ptr_comp_pass_7.f90
! 7b40a69b6da84331919673150a105794  gcc/testsuite/gfortran.dg/proc_ptr_result_1.f90
  1d8b0f817c3e15835b9007418f494485  gcc/testsuite/gfortran.dg/proc_ptr_result_2.f90
! 8fade27ecde73ad23cc9187addb53676  gcc/testsuite/gfortran.dg/proc_ptr_result_3.f90
  76b52d7a16ce6fa235be52e3a578b9bf  gcc/testsuite/gfortran.dg/proc_ptr_result_4.f90
  3f471be6394e7a6eb4166b2f7ccccfb3  gcc/testsuite/gfortran.dg/proc_ptr_result_5.f90
! 87345d6aca5d6bb9dadf055c45143fb2  gcc/testsuite/gfortran.dg/proc_ptr_result_6.f90
! c273afb240dd8ee8117b49f657c81476  gcc/testsuite/gfortran.dg/proc_ptr_result_7.f90
! 1bc2a24244817d91ffb8efd08f27b2df  gcc/testsuite/gfortran.dg/proc_ptr_result_8.f90
  6cafac779e307ea3e5eea77636f44059  gcc/testsuite/gfortran.dg/procedure_lvalue.f90
! 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
! a397992f25eeee450fc70d31e050fc02  gcc/testsuite/gfortran.dg/prof/prof.exp
  ddf26540873573967a534a14385f92dd  gcc/testsuite/gfortran.dg/program_name_1.f90
! 451cb2bde6f52f6e44db85652688fbea  gcc/testsuite/gfortran.dg/promotion.f90
! 77cd4e7b5dc1188c4c4a3d8c92634487  gcc/testsuite/gfortran.dg/promotion_2.f90
! f1f0f9bac4e13e165109b371cc936631  gcc/testsuite/gfortran.dg/promotion_3.f90
! 19a91afd368620bca0ab4c614401b1d1  gcc/testsuite/gfortran.dg/promotion_4.f90
! 3b81044ad74fc72995c147471de2236b  gcc/testsuite/gfortran.dg/protected_1.f90
! d1fb25c2d89c26a98edcfffc14882c3e  gcc/testsuite/gfortran.dg/protected_2.f90
! 5443d9f93bfa03886cffd45a14ed799b  gcc/testsuite/gfortran.dg/protected_3.f90
! a163939fe8f6a2144e201bb5f5eca684  gcc/testsuite/gfortran.dg/protected_4.f90
! 5d7bbbfcefc1b5f07177f63161d102c1  gcc/testsuite/gfortran.dg/protected_5.f90
! 4252838d29a407956339af29a2deff79  gcc/testsuite/gfortran.dg/protected_6.f90
  52dff839978be3dcf2e894769b9a6a7c  gcc/testsuite/gfortran.dg/protected_7.f90
  8823218c8e39e313a365821aff2faabe  gcc/testsuite/gfortran.dg/protected_8.f90
  73ab7ba9b0a193e7d3835ba4228e5045  gcc/testsuite/gfortran.dg/protected_9.f90
! 9bd44f03cb1f3b37599ac931fdefe6cc  gcc/testsuite/gfortran.dg/ptr-func-1.f90
! b6c22a1a69dfaeda3ed576a61060580d  gcc/testsuite/gfortran.dg/ptr-func-2.f90
! c3fb068a6513a1b586c18e7f98aee0e3  gcc/testsuite/gfortran.dg/ptr_func_assign_1.f08
! 1e99e686da2b4f91da550dc5cbd8e4b4  gcc/testsuite/gfortran.dg/ptr_func_assign_2.f08
! deda23d08864e8fd5de581142c84d0c3  gcc/testsuite/gfortran.dg/ptr_func_assign_3.f08
  389e953b7230302dc01a242926959fa7  gcc/testsuite/gfortran.dg/ptr_func_assign_4.f08
  1bdd54ec3c3cda30429d4442e8a439e5  gcc/testsuite/gfortran.dg/public_private_module.f90
  53bfb4bd5468c34fc1b1a819ebc75855  gcc/testsuite/gfortran.dg/public_private_module_2.f90
*************** a7c876a660d440bd1bfe0f762107a374  gcc/te
*** 52734,52742 ****
  4f0edc34b7b5794a38c4e4a20c07c404  gcc/testsuite/gfortran.dg/public_private_module_6.f90
  61ecb108069d9936f4052101c4821b4d  gcc/testsuite/gfortran.dg/public_private_module_7.f90
  955bea9146bbe6215229285af568e9f2  gcc/testsuite/gfortran.dg/public_private_module_8.f90
! 82ac84f934151e2b1dfbc40c3c8dee08  gcc/testsuite/gfortran.dg/pure_byref_1.f90
! 7a2b2219499e14b32d0d693849c4033e  gcc/testsuite/gfortran.dg/pure_byref_2.f90
! cbdd56d6d0a1f0740293b92cb7939fd4  gcc/testsuite/gfortran.dg/pure_byref_3.f90
  3091020bf5f71dbd074a0f5c3489e265  gcc/testsuite/gfortran.dg/pure_dummy_length_1.f90
  ab12b8d2cb689ac3315a894182697f56  gcc/testsuite/gfortran.dg/pure_formal_1.f90
  cd7ab393242b39b928bbd829b1b0591b  gcc/testsuite/gfortran.dg/pure_formal_2.f90
--- 56460,56468 ----
  4f0edc34b7b5794a38c4e4a20c07c404  gcc/testsuite/gfortran.dg/public_private_module_6.f90
  61ecb108069d9936f4052101c4821b4d  gcc/testsuite/gfortran.dg/public_private_module_7.f90
  955bea9146bbe6215229285af568e9f2  gcc/testsuite/gfortran.dg/public_private_module_8.f90
! fb25d86bd7f82a05dc6183df6a9066f7  gcc/testsuite/gfortran.dg/pure_byref_1.f90
! 493586b435409bfed03105c632c3fc74  gcc/testsuite/gfortran.dg/pure_byref_2.f90
! 89567835c985900d9ee730feee919f80  gcc/testsuite/gfortran.dg/pure_byref_3.f90
  3091020bf5f71dbd074a0f5c3489e265  gcc/testsuite/gfortran.dg/pure_dummy_length_1.f90
  ab12b8d2cb689ac3315a894182697f56  gcc/testsuite/gfortran.dg/pure_formal_1.f90
  cd7ab393242b39b928bbd829b1b0591b  gcc/testsuite/gfortran.dg/pure_formal_2.f90
*************** e9e87e079e88e1bdbe28a6f7713a7a67  gcc/te
*** 52748,52837 ****
  e004777cc16d5ca611aa373cfeb2476d  gcc/testsuite/gfortran.dg/pure_initializer_2.f90
  78598283a1854329ecefb2cb4f92fead  gcc/testsuite/gfortran.dg/pure_initializer_3.f90
  b2cfcc9d08774d6140c45f9ef26bf787  gcc/testsuite/gfortran.dg/quad_1.f90
! 207395f2ce456a08b57dba3ed5c71812  gcc/testsuite/gfortran.dg/quad_2.f90
! 755a1c50e707a9ded05963749f5da8c9  gcc/testsuite/gfortran.dg/quad_3.f90
! b5625946db523f9eaf929f20c1896995  gcc/testsuite/gfortran.dg/random_3.f90
! 15cabd9aa609418ad4eabaeae235f604  gcc/testsuite/gfortran.dg/random_4.f90
  3d99d0f474b658c1e2bd87b68f692cbb  gcc/testsuite/gfortran.dg/random_5.f90
  92f4ac995ec9ebb80403685dfb1fbca1  gcc/testsuite/gfortran.dg/random_6.f90
! 730004e198c245600e249561314512cc  gcc/testsuite/gfortran.dg/random_7.f90
  187afe5a007deb23f65e6d670f0c7c2c  gcc/testsuite/gfortran.dg/random_seed_1.f90
  ace255953fd7471cd3423ebaca9146d4  gcc/testsuite/gfortran.dg/random_seed_2.f90
  cab6cd156d51aaf529ae97e7ec3c39e9  gcc/testsuite/gfortran.dg/random_seed_3.f90
! 53b9fcb86f68522006657f84bea01f21  gcc/testsuite/gfortran.dg/rank_1.f90
  0d215cb4a86a28d05ad4e7e8e9beb5bd  gcc/testsuite/gfortran.dg/rank_2.f90
  591040a24db132c54df170a3b26a0081  gcc/testsuite/gfortran.dg/rank_3.f90
  a26f10ba75c82df26cd87f3d948e714c  gcc/testsuite/gfortran.dg/rank_4.f90
  6485c10c0b3a95e55dc33b2e2c5d858a  gcc/testsuite/gfortran.dg/read_1.f90
! b3b504a22f520fe94f43c9da9aedc54a  gcc/testsuite/gfortran.dg/read_2.f90
! f347c3f6ce5ab6cc54c696668ace903a  gcc/testsuite/gfortran.dg/read_3.f90
! 92cad37a53df06853b5a1609f5e7a16a  gcc/testsuite/gfortran.dg/read_4.f90
! 21414be0188472aa7c5c52988b2dd22f  gcc/testsuite/gfortran.dg/read_5.f90
! 6c23e88eae5058306e4075c26d0fecfc  gcc/testsuite/gfortran.dg/read_bad_advance.f90
! 72fd6f1e97d8b8dda3114603e65ae0f4  gcc/testsuite/gfortran.dg/read_bang.f90
! bd5fca9aeb017e36d1ae6505ef4fab47  gcc/testsuite/gfortran.dg/read_bang4.f90
! f1368abf78b7377b4233685d8e40b957  gcc/testsuite/gfortran.dg/read_comma.f
! 8d30474deb2ef0f390f7359374b023ed  gcc/testsuite/gfortran.dg/read_dir.f90
! 4827186742c74f5e47624b8550b9666f  gcc/testsuite/gfortran.dg/read_empty_file.f
! 3e27975e40574b24f2d11658e4424a86  gcc/testsuite/gfortran.dg/read_eof_1.f90
! 184afce80151330e438b567cc90fb5f1  gcc/testsuite/gfortran.dg/read_eof_2.f90
! a4a5193a593a9d92e6ce6e869e36d3b4  gcc/testsuite/gfortran.dg/read_eof_3.f90
! 70ceae60f98ae4b3d81b7610ce41a5d4  gcc/testsuite/gfortran.dg/read_eof_4.f90
! 0b62b5ce4f62377ff0bb92414ad376d7  gcc/testsuite/gfortran.dg/read_eof_5.f90
! 4827186742c74f5e47624b8550b9666f  gcc/testsuite/gfortran.dg/read_eof_6.f
! 56d7784ce0b24a643e868249f2866218  gcc/testsuite/gfortran.dg/read_eof_7.f90
! 75c9ccde166c05a6f8dfa56ceec54229  gcc/testsuite/gfortran.dg/read_eof_8.f90
! 99cc06fefcaa4300337c0e83c574c9a8  gcc/testsuite/gfortran.dg/read_eof_all.f90
! 382397c22e020d3edb44b1406a556931  gcc/testsuite/gfortran.dg/read_eor.f90
! ec1c89345df371299b87b6a0f87c5e3c  gcc/testsuite/gfortran.dg/read_float_1.f90
! f1701af1c4082146439a1f80ee35f408  gcc/testsuite/gfortran.dg/read_float_2.f03
! 7b86eccf29e6d28844e8dfdbf44a1473  gcc/testsuite/gfortran.dg/read_float_3.f90
! 300dbf559e36091542939f4544987e18  gcc/testsuite/gfortran.dg/read_float_4.f90
! 1a09098ac0951765a8501e30582e5ea1  gcc/testsuite/gfortran.dg/read_infnan_1.f90
! 1fb1ea03e5ae1bc7893b78187c150c7e  gcc/testsuite/gfortran.dg/read_list_eof_1.f90
! 6368f92e6de4e74e13ce6dd2f7c937f4  gcc/testsuite/gfortran.dg/read_logical.f90
! a0c95bcf27393cbce0fb60164c3f83b4  gcc/testsuite/gfortran.dg/read_many_1.f
! 93e182eb9bbcb5b763c2ce6d3fd22745  gcc/testsuite/gfortran.dg/read_no_eor.f90
! 2247ab4e69745fa00f2ac26a0539b578  gcc/testsuite/gfortran.dg/read_noadvance.f90
! 730a2e2d525117e79a0a2d3b33fd15c5  gcc/testsuite/gfortran.dg/read_repeat.f90
! e084d448dd148271f87dd113d7d64968  gcc/testsuite/gfortran.dg/read_repeat_2.f90
! f67deb441f41081bf660775c02db2c3f  gcc/testsuite/gfortran.dg/read_size_noadvance.f90
! e856ce9862609ab963f808f23453b17b  gcc/testsuite/gfortran.dg/read_x_eof.f90
  bdca0b807a5951306c8f20e3d3df1914  gcc/testsuite/gfortran.dg/read_x_eor.f90
! 609a92aa69347947cf5d79157289f2e6  gcc/testsuite/gfortran.dg/read_x_past.f
! 73ff93a712c9916d4a8ee58cd04a5269  gcc/testsuite/gfortran.dg/readwrite_unf_direct_eor_1.f90
  35bebc978ac572310c7f145764f70e7b  gcc/testsuite/gfortran.dg/real_compare_1.f90
! 7919f7fe5728e532ca7141b09ddd62cd  gcc/testsuite/gfortran.dg/real_const_1.f
! 68f10c8f9f2989d7477294a7adb9b04d  gcc/testsuite/gfortran.dg/real_const_2.f90
! 22dd2fcb336c54d37e9f1338e2f8bb1e  gcc/testsuite/gfortran.dg/real_const_3.f90
  d904afb729c329dfa7ad5113a628788f  gcc/testsuite/gfortran.dg/real_dimension_1.f
! 0e858ea2573a1dc0b7ee94553ea893b4  gcc/testsuite/gfortran.dg/real_do_1.f90
! b228541dba5ac8fb67ed965213fb7cd7  gcc/testsuite/gfortran.dg/real_index_1.f90
! 42eba4ce5e621d7d9e40bf7a14f96926  gcc/testsuite/gfortran.dg/realloc_on_assign_1.f03
! 8df1387de7e93b9739eb07389f04ab12  gcc/testsuite/gfortran.dg/realloc_on_assign_10.f90
! ecd0b803d9243933baa7a2b459304124  gcc/testsuite/gfortran.dg/realloc_on_assign_11.f90
! 66a3f960a63dfe31d32c312a3b07c55a  gcc/testsuite/gfortran.dg/realloc_on_assign_12.f90
  1faaf6d9a749230db1745e988ec1b6c4  gcc/testsuite/gfortran.dg/realloc_on_assign_13.f90
  ac33f98b9f60aef9a6f3d49375becd9b  gcc/testsuite/gfortran.dg/realloc_on_assign_14.f90
  46de19d9973b1adb2caa22a4a23a2fea  gcc/testsuite/gfortran.dg/realloc_on_assign_15.f90
! 6b2f39b5c5f7c526a5718f47334c5b5f  gcc/testsuite/gfortran.dg/realloc_on_assign_16.f90
! 2904f77ba0c3cacc148a0dab8898e684  gcc/testsuite/gfortran.dg/realloc_on_assign_17.f90
! 496958e94a1ab201878b95fe4dfb2e23  gcc/testsuite/gfortran.dg/realloc_on_assign_18.f90
  3a775c091a9bde0d038a2b3da1c26df0  gcc/testsuite/gfortran.dg/realloc_on_assign_19.f90
! dfd36ed15f9361dc2718de2da17f2118  gcc/testsuite/gfortran.dg/realloc_on_assign_2.f03
  e7c2d02458f702cc0b7a63dc66256cd9  gcc/testsuite/gfortran.dg/realloc_on_assign_20.f90
  1e7d36e9ece9bffb14a76976f3e78eeb  gcc/testsuite/gfortran.dg/realloc_on_assign_21.f90
  99e8c97c5b3e0029f06de5719d645823  gcc/testsuite/gfortran.dg/realloc_on_assign_22.f90
! c4ab590e1a84db0ed7c686c504deea8d  gcc/testsuite/gfortran.dg/realloc_on_assign_23.f90
  7c2988bf2d788d39fc96e4716d3fa82e  gcc/testsuite/gfortran.dg/realloc_on_assign_24.f90
! 6da090aaff0dee1f6b557a0ebdf387d1  gcc/testsuite/gfortran.dg/realloc_on_assign_25.f90
! 77311ad18cfec3fcffefaedf658436db  gcc/testsuite/gfortran.dg/realloc_on_assign_26.f90
! ec0143539e2f0fdc39289e17828e2b3c  gcc/testsuite/gfortran.dg/realloc_on_assign_27.f08
! 10876d611fdffc7b6cf97c8e1abf90b2  gcc/testsuite/gfortran.dg/realloc_on_assign_3.f03
! f49b54ba1324c9645d5ab321e82b6873  gcc/testsuite/gfortran.dg/realloc_on_assign_4.f03
! 600455d0e569cd93d229832b42ef84a2  gcc/testsuite/gfortran.dg/realloc_on_assign_5.f03
  b200cea4f37b8ec05400029eddd3317b  gcc/testsuite/gfortran.dg/realloc_on_assign_6.f03
! f076af76aa5fe21f2d17cfb18fadbd5b  gcc/testsuite/gfortran.dg/realloc_on_assign_7.f03
  27e54cc7143e6c0d743c7f48b3f718d3  gcc/testsuite/gfortran.dg/realloc_on_assign_8.f90
  8128c3c4c6837a43912e1c601bea514d  gcc/testsuite/gfortran.dg/realloc_on_assign_9.f90
  baaf044dff29d44956739f99fc57b579  gcc/testsuite/gfortran.dg/reassoc_1.f90
--- 56474,56566 ----
  e004777cc16d5ca611aa373cfeb2476d  gcc/testsuite/gfortran.dg/pure_initializer_2.f90
  78598283a1854329ecefb2cb4f92fead  gcc/testsuite/gfortran.dg/pure_initializer_3.f90
  b2cfcc9d08774d6140c45f9ef26bf787  gcc/testsuite/gfortran.dg/quad_1.f90
! fbd7c496dd01e2a55c3629660efbc939  gcc/testsuite/gfortran.dg/quad_2.f90
! e60be2de79803cde8c8bb591d7bc648a  gcc/testsuite/gfortran.dg/quad_3.f90
! 42ed4d70ce58979a5d8903960e7b7d20  gcc/testsuite/gfortran.dg/random_3.f90
! a009fc114a572bdda6f78daee7de0fdc  gcc/testsuite/gfortran.dg/random_4.f90
  3d99d0f474b658c1e2bd87b68f692cbb  gcc/testsuite/gfortran.dg/random_5.f90
  92f4ac995ec9ebb80403685dfb1fbca1  gcc/testsuite/gfortran.dg/random_6.f90
! 9270cf3db4395b952863dae4e6a9a4bd  gcc/testsuite/gfortran.dg/random_7.f90
  187afe5a007deb23f65e6d670f0c7c2c  gcc/testsuite/gfortran.dg/random_seed_1.f90
  ace255953fd7471cd3423ebaca9146d4  gcc/testsuite/gfortran.dg/random_seed_2.f90
  cab6cd156d51aaf529ae97e7ec3c39e9  gcc/testsuite/gfortran.dg/random_seed_3.f90
! b03cb437c3ed5f6eb016768e491f5ceb  gcc/testsuite/gfortran.dg/rank_1.f90
  0d215cb4a86a28d05ad4e7e8e9beb5bd  gcc/testsuite/gfortran.dg/rank_2.f90
  591040a24db132c54df170a3b26a0081  gcc/testsuite/gfortran.dg/rank_3.f90
  a26f10ba75c82df26cd87f3d948e714c  gcc/testsuite/gfortran.dg/rank_4.f90
  6485c10c0b3a95e55dc33b2e2c5d858a  gcc/testsuite/gfortran.dg/read_1.f90
! dff717996ec397268dc8894f0cd4dbcb  gcc/testsuite/gfortran.dg/read_2.f90
! b8479a7a69e081564e76ba6d391e99af  gcc/testsuite/gfortran.dg/read_3.f90
! e8d03cbf38ab184b18d66a51289a4dbd  gcc/testsuite/gfortran.dg/read_4.f90
! 22b534c5e5afb20ce936bbb5592c82aa  gcc/testsuite/gfortran.dg/read_5.f90
! 845ec0e4064acee859b056d7e5b34734  gcc/testsuite/gfortran.dg/read_bad_advance.f90
! 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
! de137a990ee26b6a33259d180986e460  gcc/testsuite/gfortran.dg/read_eof_3.f90
! 25d4908f6f2cb14e5724c60b589cb16e  gcc/testsuite/gfortran.dg/read_eof_4.f90
! 81e289bf4ae6fe73215151a53603a79d  gcc/testsuite/gfortran.dg/read_eof_5.f90
! 01bec4189b55cdc5263e3a24643963ab  gcc/testsuite/gfortran.dg/read_eof_6.f
! f514583657f5a22865ab351c19529cfc  gcc/testsuite/gfortran.dg/read_eof_7.f90
! 4b0d95aa44fa98ba1052aa329747f1aa  gcc/testsuite/gfortran.dg/read_eof_8.f90
! 27d0e3457ef00c5cf45d367323e1b51d  gcc/testsuite/gfortran.dg/read_eof_all.f90
! cd09f39b5639b01d25201bb9f73dc5fc  gcc/testsuite/gfortran.dg/read_eor.f90
! 16e3b312a4dd550be043a41e4bd6f219  gcc/testsuite/gfortran.dg/read_float_1.f90
! 443a526979916dfb02fe614d9f602185  gcc/testsuite/gfortran.dg/read_float_2.f03
! a37a246c0c9f2640851389dfad5a46ec  gcc/testsuite/gfortran.dg/read_float_3.f90
! dc523fffe30d380d361c5dba71ebd4a2  gcc/testsuite/gfortran.dg/read_float_4.f90
! be41fdba8ce3cd447bc461c020e06851  gcc/testsuite/gfortran.dg/read_infnan_1.f90
! ec2d83ab73dc0865b36de0a5dcb8c54d  gcc/testsuite/gfortran.dg/read_list_eof_1.f90
! 243fa89b04ef3952c6693c289bda7253  gcc/testsuite/gfortran.dg/read_logical.f90
! 178925732928648e59651a1e8ee89346  gcc/testsuite/gfortran.dg/read_many_1.f
! e05763bb1ee15c5e455f30971f633227  gcc/testsuite/gfortran.dg/read_no_eor.f90
! 5935316c91a8d9a5a66ca48552ecee27  gcc/testsuite/gfortran.dg/read_noadvance.f90
! 9ad1ca0a020cbbde9b67e296b00e8409  gcc/testsuite/gfortran.dg/read_repeat.f90
! b55b29248fe669c0de9a0a1e0f71dea0  gcc/testsuite/gfortran.dg/read_repeat_2.f90
! 0c3f97470f64cad0074afa7d6345e4c7  gcc/testsuite/gfortran.dg/read_size_noadvance.f90
! 6def59c34a873de05e0981153ac82fba  gcc/testsuite/gfortran.dg/read_x_eof.f90
  bdca0b807a5951306c8f20e3d3df1914  gcc/testsuite/gfortran.dg/read_x_eor.f90
! 1b60be6299810378b88c2a370caaa752  gcc/testsuite/gfortran.dg/read_x_past.f
! 671ac47678505ff69a3ca453e48c9ff0  gcc/testsuite/gfortran.dg/readwrite_unf_direct_eor_1.f90
  35bebc978ac572310c7f145764f70e7b  gcc/testsuite/gfortran.dg/real_compare_1.f90
! 02c23070bb4c6c04205728f47c038fc8  gcc/testsuite/gfortran.dg/real_const_1.f
! 10fd764faeaec6000b1a390ab78a3e2b  gcc/testsuite/gfortran.dg/real_const_2.f90
! 0f16e3d801cd076aa0c39f89289acc68  gcc/testsuite/gfortran.dg/real_const_3.f90
  d904afb729c329dfa7ad5113a628788f  gcc/testsuite/gfortran.dg/real_dimension_1.f
! eff0666d620e79a6cef6c7a5ea6b0c03  gcc/testsuite/gfortran.dg/real_do_1.f90
! 2c94c61d56b263f47e3a76c96eb2ace4  gcc/testsuite/gfortran.dg/real_index_1.f90
! c279588bf94d2f758374d0938d4de558  gcc/testsuite/gfortran.dg/realloc_on_assign_1.f03
! 1be94ddae8305f7b8217a2d40808e64e  gcc/testsuite/gfortran.dg/realloc_on_assign_10.f90
! 2f3eaf67550a0a1d5cb6120b17ffaaae  gcc/testsuite/gfortran.dg/realloc_on_assign_11.f90
! 822a8c52a83292f4c014901f3caf6cda  gcc/testsuite/gfortran.dg/realloc_on_assign_12.f90
  1faaf6d9a749230db1745e988ec1b6c4  gcc/testsuite/gfortran.dg/realloc_on_assign_13.f90
  ac33f98b9f60aef9a6f3d49375becd9b  gcc/testsuite/gfortran.dg/realloc_on_assign_14.f90
  46de19d9973b1adb2caa22a4a23a2fea  gcc/testsuite/gfortran.dg/realloc_on_assign_15.f90
! 890f38769107bebdaa4798748136f125  gcc/testsuite/gfortran.dg/realloc_on_assign_16.f90
! 94efd38c4fad352a9c65a189cfb7892a  gcc/testsuite/gfortran.dg/realloc_on_assign_16a.f90
! 7145607b0479d4ec8e3d593c894947f0  gcc/testsuite/gfortran.dg/realloc_on_assign_17.f90
! e78edf4cacbb1083afaef747a0dca977  gcc/testsuite/gfortran.dg/realloc_on_assign_18.f90
  3a775c091a9bde0d038a2b3da1c26df0  gcc/testsuite/gfortran.dg/realloc_on_assign_19.f90
! 5b90fa3f0eea13d7b9b0b787a5594fe7  gcc/testsuite/gfortran.dg/realloc_on_assign_2.f03
  e7c2d02458f702cc0b7a63dc66256cd9  gcc/testsuite/gfortran.dg/realloc_on_assign_20.f90
  1e7d36e9ece9bffb14a76976f3e78eeb  gcc/testsuite/gfortran.dg/realloc_on_assign_21.f90
  99e8c97c5b3e0029f06de5719d645823  gcc/testsuite/gfortran.dg/realloc_on_assign_22.f90
! 5d1f86ab23325fba58bfbae5e05d7841  gcc/testsuite/gfortran.dg/realloc_on_assign_23.f90
  7c2988bf2d788d39fc96e4716d3fa82e  gcc/testsuite/gfortran.dg/realloc_on_assign_24.f90
! 1cd6bbc706da2e1af33d61091cf2a538  gcc/testsuite/gfortran.dg/realloc_on_assign_25.f90
! f2f0c5b9f44c6a8279cd239fffdac4bf  gcc/testsuite/gfortran.dg/realloc_on_assign_26.f90
! f7d5b364c213c1ff6646e2cf9412a0bf  gcc/testsuite/gfortran.dg/realloc_on_assign_27.f08
! c24e2538596994c5492d889f56a5053e  gcc/testsuite/gfortran.dg/realloc_on_assign_28.f90
! 50a5326b8ea76403cd2d44076c856a3a  gcc/testsuite/gfortran.dg/realloc_on_assign_29.f90
! 171d9be0c08d572997b761fab63ef55f  gcc/testsuite/gfortran.dg/realloc_on_assign_3.f03
! 7700a3dd6c4c26a4bb7cd0535eac9ba4  gcc/testsuite/gfortran.dg/realloc_on_assign_4.f03
! b97c068c039a1c71a14fd278ab3f15b6  gcc/testsuite/gfortran.dg/realloc_on_assign_5.f03
  b200cea4f37b8ec05400029eddd3317b  gcc/testsuite/gfortran.dg/realloc_on_assign_6.f03
! cdd136d31d9b139c8f66c18c29c1988e  gcc/testsuite/gfortran.dg/realloc_on_assign_7.f03
  27e54cc7143e6c0d743c7f48b3f718d3  gcc/testsuite/gfortran.dg/realloc_on_assign_8.f90
  8128c3c4c6837a43912e1c601bea514d  gcc/testsuite/gfortran.dg/realloc_on_assign_9.f90
  baaf044dff29d44956739f99fc57b579  gcc/testsuite/gfortran.dg/reassoc_1.f90
*************** cfb627686cc251101a90d4d91b646dad  gcc/te
*** 52846,52858 ****
  f517fa0a7bbf66a26bff5200725f76bb  gcc/testsuite/gfortran.dg/reassoc_7.f
  1bab6a3f0a8a537548b5249b77bc7a66  gcc/testsuite/gfortran.dg/reassoc_8.f
  cb407bbc0ab11a408d7c23a8533943b2  gcc/testsuite/gfortran.dg/reassoc_9.f
! f755dd7e171c1df4577ccbc5e8db753c  gcc/testsuite/gfortran.dg/record_marker_1.f90
! bbba721f3cfd3c31867b630d4781b303  gcc/testsuite/gfortran.dg/record_marker_2.f
! 5247bfae39f7c9107f95402054836515  gcc/testsuite/gfortran.dg/record_marker_3.f90
! 34af8c1cf0e3fe55d93f03d6baf71a4d  gcc/testsuite/gfortran.dg/recursive_alloc_comp_1.f08
! a3c7072fd165ceda0126a26c404bcd04  gcc/testsuite/gfortran.dg/recursive_alloc_comp_2.f08
! 01d1768b95a84c8adb398ad15cf79d72  gcc/testsuite/gfortran.dg/recursive_alloc_comp_3.f08
! 023177832d53f6bfeb38c1a7bfcb75f0  gcc/testsuite/gfortran.dg/recursive_alloc_comp_4.f08
  3f76ccfe2c1760d8b85f37e3680f2018  gcc/testsuite/gfortran.dg/recursive_check_1.f
  04c3e51d2500bea77088dee1fefae8b1  gcc/testsuite/gfortran.dg/recursive_check_10.f90
  2d67e08127af810151885831dc542430  gcc/testsuite/gfortran.dg/recursive_check_11.f90
--- 56575,56587 ----
  f517fa0a7bbf66a26bff5200725f76bb  gcc/testsuite/gfortran.dg/reassoc_7.f
  1bab6a3f0a8a537548b5249b77bc7a66  gcc/testsuite/gfortran.dg/reassoc_8.f
  cb407bbc0ab11a408d7c23a8533943b2  gcc/testsuite/gfortran.dg/reassoc_9.f
! 4fe0eed277f91c35530667a3dddc743c  gcc/testsuite/gfortran.dg/record_marker_1.f90
! 68f469c6c2c74690160a4068ce0acd9e  gcc/testsuite/gfortran.dg/record_marker_2.f
! a3332c022e0dcf34224cf0e72c7cbe1a  gcc/testsuite/gfortran.dg/record_marker_3.f90
! d942e17eca945999ebca50cbd433a694  gcc/testsuite/gfortran.dg/recursive_alloc_comp_1.f08
! fbca6044e55b414cf52e618cabefc35a  gcc/testsuite/gfortran.dg/recursive_alloc_comp_2.f08
! bfc750d856b50d00fe727fd7720a08fd  gcc/testsuite/gfortran.dg/recursive_alloc_comp_3.f08
! 17d07cb7d93b7e05c9ca400e3ae7927b  gcc/testsuite/gfortran.dg/recursive_alloc_comp_4.f08
  3f76ccfe2c1760d8b85f37e3680f2018  gcc/testsuite/gfortran.dg/recursive_check_1.f
  04c3e51d2500bea77088dee1fefae8b1  gcc/testsuite/gfortran.dg/recursive_check_10.f90
  2d67e08127af810151885831dc542430  gcc/testsuite/gfortran.dg/recursive_check_11.f90
*************** ffe79edcf9b34dadb8fd169df22b8ca9  gcc/te
*** 52865,53014 ****
  f4d567993a23834af1926af8a5c3a3d9  gcc/testsuite/gfortran.dg/recursive_check_4.f03
  1393b06df013b11adbb3adf891e355c4  gcc/testsuite/gfortran.dg/recursive_check_5.f03
  4410dcab14f41883384c6c871cbc9ede  gcc/testsuite/gfortran.dg/recursive_check_6.f03
! f9d1d81379ff642cf3c0b84cb8cd51e2  gcc/testsuite/gfortran.dg/recursive_check_7.f90
  3be5431b492a0bef7b21cfbda65f2d9f  gcc/testsuite/gfortran.dg/recursive_check_8.f90
  be933f6d011da4a12bd74f3f07878603  gcc/testsuite/gfortran.dg/recursive_check_9.f90
  cf3ca59ca4207298a222b8e7662eebff  gcc/testsuite/gfortran.dg/recursive_interface_1.f90
  d8a9f1260e74e0077151d976c7d10349  gcc/testsuite/gfortran.dg/recursive_interface_2.f90
  2e7d5fec04c2c7f37db35971e145eb94  gcc/testsuite/gfortran.dg/recursive_parameter_1.f90
! 1a936e12c23543c470babc983063d4d9  gcc/testsuite/gfortran.dg/recursive_reference_1.f90
! 7cdbea5189a867015f9a54de3f68cebb  gcc/testsuite/gfortran.dg/recursive_reference_2.f90
! 883cc40b152158fdf7e6d45ee586a1e1  gcc/testsuite/gfortran.dg/recursive_stack.f90
  367c718b77a74a1255ad2e38adeacfb7  gcc/testsuite/gfortran.dg/recursive_statement_functions.f90
  04deba654b2206894b96a6288761847b  gcc/testsuite/gfortran.dg/redefined_intrinsic_assignment.f90
  c943c42a4b8bdcc298f24b4b88cd0e9c  gcc/testsuite/gfortran.dg/redefined_intrinsic_assignment_2.f90
! 7374e874fd37a55d08d2a48e44e60dca  gcc/testsuite/gfortran.dg/reduction.f90
! ce8e9c4e5215513b6ae5dede9ae23b46  gcc/testsuite/gfortran.dg/repack_arrays_1.f90
! b42d7469f2a1eb67aed9ac935649f672  gcc/testsuite/gfortran.dg/repeat_1.f90
! a84c3b5a35114043520d5841ccfce367  gcc/testsuite/gfortran.dg/repeat_2.f90
! a51d1d27901bf24f2925622dc97bc63e  gcc/testsuite/gfortran.dg/repeat_3.f90
! bdb1cb964326755de675f0ae4b2d5928  gcc/testsuite/gfortran.dg/repeat_4.f90
  ca6d87fa41c86b058f08e752f82e63b8  gcc/testsuite/gfortran.dg/repeat_5.f90
! 3f8e1b49e16832eddcdc9c6e0e2298ef  gcc/testsuite/gfortran.dg/repeat_6.f90
! fec1b6ce565025020ec539c5de80446c  gcc/testsuite/gfortran.dg/reshape-alloc.f90
! 81f4d28ee3870be17bd0927078276074  gcc/testsuite/gfortran.dg/reshape-complex.f90
! d088cd1dddd94a5cc78135c60659e17e  gcc/testsuite/gfortran.dg/reshape.f90
! a89f453dab80af696af0503df43a152e  gcc/testsuite/gfortran.dg/reshape_2.f90
  d3828a0469af571ee4a9715d5b69ba18  gcc/testsuite/gfortran.dg/reshape_3.f90
  28e648e5d9b58d4e60affb7acc6a4a36  gcc/testsuite/gfortran.dg/reshape_4.f90
  2872b99cf6c4e5736159d59646eacf73  gcc/testsuite/gfortran.dg/reshape_5.f90
  7f3d8930925f93d0224885fccf19768f  gcc/testsuite/gfortran.dg/reshape_6.f90
! 975c1e06d7c8553d3a13e2142dfb4546  gcc/testsuite/gfortran.dg/reshape_7.f90
! aa04f0460fcc0a00892a803f217a200b  gcc/testsuite/gfortran.dg/reshape_empty_1.f03
  a427cc5a5e1ff29f34ae42c060001529  gcc/testsuite/gfortran.dg/reshape_order_1.f90
  76cb0afc35b5327c7c7e5d8ddad735c6  gcc/testsuite/gfortran.dg/reshape_order_2.f90
  d56fc10944fdd0dbb52600e05490a955  gcc/testsuite/gfortran.dg/reshape_order_3.f90
  5efde5feca9db5459eadd6c53c7cf1c7  gcc/testsuite/gfortran.dg/reshape_order_4.f90
  a8b8a98f768e4e1e0e5753a852ef5533  gcc/testsuite/gfortran.dg/reshape_order_5.f90
! fd1fd2a468fe8a0a7b9d2885f59d202a  gcc/testsuite/gfortran.dg/reshape_pad_1.f90
! dad102820948ce7d13120a91b4fce2e0  gcc/testsuite/gfortran.dg/reshape_rank7.f90
  82e933fdaa16cdd8a68cea29568b24f8  gcc/testsuite/gfortran.dg/reshape_shape_1.f90
  90dad8b6cf8141a17677751052b77127  gcc/testsuite/gfortran.dg/reshape_source_size_1.f90
! 54c55ab6622f6c37ae48d795438579e5  gcc/testsuite/gfortran.dg/reshape_transpose_1.f90
  b60cb27a87581046d44ce97bb381b07e  gcc/testsuite/gfortran.dg/reshape_zerosize_1.f90
  fc86ba2e4ab1d9fa02cd4b46197f62b8  gcc/testsuite/gfortran.dg/reshape_zerosize_2.f90
! f2fe771c8a9b43e5dd9ef03492fb4bdd  gcc/testsuite/gfortran.dg/reshape_zerosize_3.f90
  f39d7669eca2c6b465340ae2f336d83f  gcc/testsuite/gfortran.dg/restricted_expression_1.f90
  ee4f324a68696b1259fc4e0034a3f686  gcc/testsuite/gfortran.dg/restricted_expression_2.f90
  ecf3cbf334096b6668127b767e5755b6  gcc/testsuite/gfortran.dg/restricted_expression_3.f90
  75becefbcb00d828af20df8ef069cfe1  gcc/testsuite/gfortran.dg/result_1.f90
  23a25b7f3bc0d298154be22ee2d9a72e  gcc/testsuite/gfortran.dg/result_2.f90
! f65265038663a9ceecae5d2f99f7518f  gcc/testsuite/gfortran.dg/result_default_init_1.f90
! 5f980e27fb422cefa0222fbda786ca9e  gcc/testsuite/gfortran.dg/result_in_spec_1.f90
! 8300081ee1d2185b317c35578bcbf307  gcc/testsuite/gfortran.dg/result_in_spec_2.f90
  87318cdf1dbad66e17a0a32c02318160  gcc/testsuite/gfortran.dg/result_in_spec_3.f90
  0cc4d47146059c3b56b72b6a334c57c4  gcc/testsuite/gfortran.dg/result_in_spec_4.f90
! b6d62abcada60cbdca4e99091f35f5f0  gcc/testsuite/gfortran.dg/ret_array_1.f90
! ba4309199b6de8e3f6569168576b672d  gcc/testsuite/gfortran.dg/ret_pointer_1.f90
! 997f28c8a9ecbc34e215835b53eea5c4  gcc/testsuite/gfortran.dg/ret_pointer_2.f90
  3f5219d34a5a28fe569a2415155603c9  gcc/testsuite/gfortran.dg/return_1.f90
! 197f641fc30975e9b70c4fb1703af678  gcc/testsuite/gfortran.dg/rewind_1.f90
! 7bdbcf6bda9a84f72f0ce9ff5baa35b3  gcc/testsuite/gfortran.dg/round_1.f03
! 8c6826e188281f4ba61e0e09942cb319  gcc/testsuite/gfortran.dg/round_2.f03
! 1e6dca49810e611218d8671ef4acade6  gcc/testsuite/gfortran.dg/round_3.f08
! b5c45b48cd0d9d785838c0464e3f0e62  gcc/testsuite/gfortran.dg/round_4.f90
! 795c3a5486634878e59848252e62aa82  gcc/testsuite/gfortran.dg/rrspacing_1.f90
! 54535416585a8a8a084e4b2896243778  gcc/testsuite/gfortran.dg/runtime_warning_1.f90
  cf312106ea57ecf768f6b24b13308511  gcc/testsuite/gfortran.dg/same_name_1.f90
  f90e05bac6c9b27d6793dafbe29e34c5  gcc/testsuite/gfortran.dg/same_name_2.f90
  de1cf2edc8bf67d9e1bc215c160d5383  gcc/testsuite/gfortran.dg/same_type_as_1.f03
! 2aba5e2b114384c2bfd44ef6e020f590  gcc/testsuite/gfortran.dg/same_type_as_2.f03
! 01c34510575349d4973b342276bfbf03  gcc/testsuite/gfortran.dg/save_1.f90
  e6c7c7cbf695fec200c964f4e3b125ec  gcc/testsuite/gfortran.dg/save_2.f90
  996705a733a5e7c6d233456d0b211dcc  gcc/testsuite/gfortran.dg/save_3.f90
  eef9c4fb4632664f421c4067e9f7dd53  gcc/testsuite/gfortran.dg/save_4.f90
! 4ae3e5edd6261e66832a7e6be8e20d92  gcc/testsuite/gfortran.dg/save_5.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
  1b62cb7446cd049efaae944964c35d12  gcc/testsuite/gfortran.dg/saved_automatic_1.f90
! 1079269efa97c5da28bf3cf48ceb8dd7  gcc/testsuite/gfortran.dg/scalar_mask_1.f90
! 89161e631bd4150bb565850f36bb191b  gcc/testsuite/gfortran.dg/scalar_mask_2.f90
  0fdbee4524fee6cd7f7f0889ec757efe  gcc/testsuite/gfortran.dg/scalar_return_1.f90
! dbdd61283a200b7194557806f51b48d7  gcc/testsuite/gfortran.dg/scalarize_parameter_array_1.f90
! 0944816956cbd579fd7a671afc0db963  gcc/testsuite/gfortran.dg/scale_1.f90
! f3a8c32c1afad77bd5582cb35e2af30c  gcc/testsuite/gfortran.dg/scan_1.f90
! 8352ebf0ff1d01bc9ac50c10743f8877  gcc/testsuite/gfortran.dg/scan_2.f90
! 244389dbd1b736cc6cccec6d4a11189c  gcc/testsuite/gfortran.dg/scratch_1.f90
! 418e9a7d3ef0d2996fa6779e3451d95f  gcc/testsuite/gfortran.dg/secnds-1.f
! a4970ba3ac67c763a6a1827efbd92c3d  gcc/testsuite/gfortran.dg/secnds.f
! ab76721865850a0b6434fc07f1856cd7  gcc/testsuite/gfortran.dg/select_1.f90
! f88e2e63dd6f4af4e0cf6b122d5ce33a  gcc/testsuite/gfortran.dg/select_2.f90
! 6adef87d7db611b1be5b65dd0232ca97  gcc/testsuite/gfortran.dg/select_3.f90
  a8915b84412b8a80d6a5acd416b43e64  gcc/testsuite/gfortran.dg/select_4.f90
! 867cbe22902cd6e7ae0737cc8b433103  gcc/testsuite/gfortran.dg/select_5.f90
  9e82f5f55056c564d24a8093166b6705  gcc/testsuite/gfortran.dg/select_6.f90
  423eb8a7672e7c232252493e95d51cdd  gcc/testsuite/gfortran.dg/select_7.f90
  f9b829c93dd5a44a9568469b7e0deda1  gcc/testsuite/gfortran.dg/select_8.f90
! 55e40fc225c557c5b337afa66c68a3b0  gcc/testsuite/gfortran.dg/select_char_1.f90
! 9413de23311a9b739aab9bde0c448096  gcc/testsuite/gfortran.dg/select_char_2.f90
  9f98379d27ae7878917fe08a1c19379f  gcc/testsuite/gfortran.dg/select_char_3.f90
! fd65a0eb14e0d44389edd44d7f66c4c4  gcc/testsuite/gfortran.dg/select_type_1.f03
  cfc1f17ea1421c22ece9a1d3936945cc  gcc/testsuite/gfortran.dg/select_type_10.f03
  e7fc4e45d93d73096eb5455e0afc91c2  gcc/testsuite/gfortran.dg/select_type_11.f03
  ce44f4cf705ad7e0d25c9b14aecc308e  gcc/testsuite/gfortran.dg/select_type_12.f03
! e88e37a5a54f99406f552f3c81a872d2  gcc/testsuite/gfortran.dg/select_type_13.f03
! ccde6249d938a464720da26b99bb7440  gcc/testsuite/gfortran.dg/select_type_14.f03
! ff9f72e992cd84994f04c531d5d46e20  gcc/testsuite/gfortran.dg/select_type_15.f03
  74dbaaa0ee594948619c43f00415c8e4  gcc/testsuite/gfortran.dg/select_type_16.f03
  3c41ff5b8b11b5d04c8550dc1fe173cb  gcc/testsuite/gfortran.dg/select_type_17.f03
  812f9bf95f0fc8fec2bb399b1cdd182d  gcc/testsuite/gfortran.dg/select_type_18.f03
! fa802d5182c77efb60a3f1173270ea28  gcc/testsuite/gfortran.dg/select_type_19.f03
! f2719d39e3b3c8a6ecb7cdabf34f8ca1  gcc/testsuite/gfortran.dg/select_type_2.f03
  d81874f8195ddc31b323c17fc3accee0  gcc/testsuite/gfortran.dg/select_type_20.f90
  d6dac5533d7f006edcaf4385ed540a54  gcc/testsuite/gfortran.dg/select_type_21.f90
  268d8dcf633cdf1815a9d6dc563fd033  gcc/testsuite/gfortran.dg/select_type_22.f03
  75ad65bb60ec054db9060abd679fccf9  gcc/testsuite/gfortran.dg/select_type_23.f03
  8925c714f00fc0d72e5772f20ff084f7  gcc/testsuite/gfortran.dg/select_type_24.f90
  ddd27e01040409354206e2226df16f94  gcc/testsuite/gfortran.dg/select_type_25.f90
! 3ed6d854c63433d2b820af41dfd4d60e  gcc/testsuite/gfortran.dg/select_type_26.f03
! 9f924f0df8426c98d7a5c27daa8ee051  gcc/testsuite/gfortran.dg/select_type_27.f03
! 8e3c5a52a2a3013f227e07f95ee434ca  gcc/testsuite/gfortran.dg/select_type_28.f03
  9814dd914157fc7139af3f5013222d60  gcc/testsuite/gfortran.dg/select_type_29.f03
! 09680b058de9c1912971e46fa02a6d67  gcc/testsuite/gfortran.dg/select_type_3.f03
  bc6f4b8427180f3d7fe9596b5eb507d7  gcc/testsuite/gfortran.dg/select_type_30.f03
  e4078fcf84bae622e034eda4e4a7bd1b  gcc/testsuite/gfortran.dg/select_type_31.f03
  0fa3636ab8c629eaf962c9d4116c05fb  gcc/testsuite/gfortran.dg/select_type_32.f90
  65d1bc4754dda94ab063cc52f230bad4  gcc/testsuite/gfortran.dg/select_type_33.f03
  8400e196604f257ef8d8e9269bae6945  gcc/testsuite/gfortran.dg/select_type_34.f90
! d0d3f92f35bb90787623ca24c03d4429  gcc/testsuite/gfortran.dg/select_type_35.f03
! a9670c9c4db6be8cbf121e47fb09e3ad  gcc/testsuite/gfortran.dg/select_type_36.f03
! 6231191d7082d7799fdf881d42c4be03  gcc/testsuite/gfortran.dg/select_type_37.f03
  8be92dfb3cc0e7954dcf0c7c1a64b2a7  gcc/testsuite/gfortran.dg/select_type_38.f03
! ec40f6628038f9f6e9ba16e588a9b8c2  gcc/testsuite/gfortran.dg/select_type_39.f03
! 402dd7c959e0269e964ee68c701dfb67  gcc/testsuite/gfortran.dg/select_type_4.f90
! 3ab901522e5a6c2930daa42a08c5a4c3  gcc/testsuite/gfortran.dg/select_type_5.f03
! 08871f191c3a23bf7de4d00e2c1959a3  gcc/testsuite/gfortran.dg/select_type_6.f03
! 2ba60576db34ceefab51c78da10da0b6  gcc/testsuite/gfortran.dg/select_type_7.f03
! d4af832994c72f75a6e3f96fac56a690  gcc/testsuite/gfortran.dg/select_type_8.f03
  28a9a0bb23f10b81739f2425be1ed3ed  gcc/testsuite/gfortran.dg/select_type_9.f03
! 87312b4401aa176290634d055d8e4850  gcc/testsuite/gfortran.dg/selected_char_kind_1.f90
  0e35a1975bf41869c373887bbd6467a2  gcc/testsuite/gfortran.dg/selected_char_kind_2.f90
  214d58043f273f06acaa3b8ed9e7d3d4  gcc/testsuite/gfortran.dg/selected_char_kind_3.f90
! 95017c0e7d72b7019d7a3b4177965b8e  gcc/testsuite/gfortran.dg/selected_char_kind_4.f90
! 51383bd1576fbb2170a62fc7e93a5634  gcc/testsuite/gfortran.dg/selected_kind_1.f90
  e8a78f7bb05b9a61dc889d88a7195f56  gcc/testsuite/gfortran.dg/selected_real_kind_1.f90
! ee1102334267ff125d31db5ead41a16d  gcc/testsuite/gfortran.dg/selected_real_kind_2.f90
  c6f31959a6f27a049ee01954f0a811f0  gcc/testsuite/gfortran.dg/selected_real_kind_3.f90
  2ff3e2bd5f874c2b33a4f6d9e6fe83a5  gcc/testsuite/gfortran.dg/semicolon_fixed.f
  353c9033fc1cae854b893ff3b46e5ac0  gcc/testsuite/gfortran.dg/semicolon_fixed_2.f
--- 56594,56748 ----
  f4d567993a23834af1926af8a5c3a3d9  gcc/testsuite/gfortran.dg/recursive_check_4.f03
  1393b06df013b11adbb3adf891e355c4  gcc/testsuite/gfortran.dg/recursive_check_5.f03
  4410dcab14f41883384c6c871cbc9ede  gcc/testsuite/gfortran.dg/recursive_check_6.f03
! 6bf2445d7e78508038a3049e7cf6eb0e  gcc/testsuite/gfortran.dg/recursive_check_7.f90
  3be5431b492a0bef7b21cfbda65f2d9f  gcc/testsuite/gfortran.dg/recursive_check_8.f90
  be933f6d011da4a12bd74f3f07878603  gcc/testsuite/gfortran.dg/recursive_check_9.f90
  cf3ca59ca4207298a222b8e7662eebff  gcc/testsuite/gfortran.dg/recursive_interface_1.f90
  d8a9f1260e74e0077151d976c7d10349  gcc/testsuite/gfortran.dg/recursive_interface_2.f90
  2e7d5fec04c2c7f37db35971e145eb94  gcc/testsuite/gfortran.dg/recursive_parameter_1.f90
! 83a0ac39bfc50ad3e26215503647388b  gcc/testsuite/gfortran.dg/recursive_reference_1.f90
! 1d1c7d54db9ad825f6d03ee25b705983  gcc/testsuite/gfortran.dg/recursive_reference_2.f90
! a7003da5c2f301959c7f21193538e7eb  gcc/testsuite/gfortran.dg/recursive_stack.f90
  367c718b77a74a1255ad2e38adeacfb7  gcc/testsuite/gfortran.dg/recursive_statement_functions.f90
  04deba654b2206894b96a6288761847b  gcc/testsuite/gfortran.dg/redefined_intrinsic_assignment.f90
  c943c42a4b8bdcc298f24b4b88cd0e9c  gcc/testsuite/gfortran.dg/redefined_intrinsic_assignment_2.f90
! 0aefff5947933799bf59c99f45d05d35  gcc/testsuite/gfortran.dg/reduction.f90
! 659a9cd87fe918f94f8c8cd41199a9fc  gcc/testsuite/gfortran.dg/repack_arrays_1.f90
! a9dc4010fc583f8af80941c642ac4682  gcc/testsuite/gfortran.dg/repeat_1.f90
! ee18b01427857982a15676a1f446e094  gcc/testsuite/gfortran.dg/repeat_2.f90
! f94ae1b55b54285691c897eacc97196a  gcc/testsuite/gfortran.dg/repeat_3.f90
! 9f7ac72e573343f82216ba24695581c9  gcc/testsuite/gfortran.dg/repeat_4.f90
  ca6d87fa41c86b058f08e752f82e63b8  gcc/testsuite/gfortran.dg/repeat_5.f90
! 904d3f5f660559e097b416af3822a52d  gcc/testsuite/gfortran.dg/repeat_6.f90
! 880f249310fa47e28f0f62031d079f2b  gcc/testsuite/gfortran.dg/repeat_7.f90
! 1f66f4b85d9cc7b56a0c71212eb50a41  gcc/testsuite/gfortran.dg/reshape-alloc.f90
! 6ee21df6b68e48d84f37c60933dd19f0  gcc/testsuite/gfortran.dg/reshape-complex.f90
! 979b1e416f7084b906506f9c453293a8  gcc/testsuite/gfortran.dg/reshape.f90
! a7ac818521c5f61d92e2adf17f6ccede  gcc/testsuite/gfortran.dg/reshape_2.f90
  d3828a0469af571ee4a9715d5b69ba18  gcc/testsuite/gfortran.dg/reshape_3.f90
  28e648e5d9b58d4e60affb7acc6a4a36  gcc/testsuite/gfortran.dg/reshape_4.f90
  2872b99cf6c4e5736159d59646eacf73  gcc/testsuite/gfortran.dg/reshape_5.f90
  7f3d8930925f93d0224885fccf19768f  gcc/testsuite/gfortran.dg/reshape_6.f90
! fa9603988fa43c3b4979b2745c515cd4  gcc/testsuite/gfortran.dg/reshape_7.f90
! c7b463bfe5fc5984c177ad3ceb638178  gcc/testsuite/gfortran.dg/reshape_empty_1.f03
  a427cc5a5e1ff29f34ae42c060001529  gcc/testsuite/gfortran.dg/reshape_order_1.f90
  76cb0afc35b5327c7c7e5d8ddad735c6  gcc/testsuite/gfortran.dg/reshape_order_2.f90
  d56fc10944fdd0dbb52600e05490a955  gcc/testsuite/gfortran.dg/reshape_order_3.f90
  5efde5feca9db5459eadd6c53c7cf1c7  gcc/testsuite/gfortran.dg/reshape_order_4.f90
  a8b8a98f768e4e1e0e5753a852ef5533  gcc/testsuite/gfortran.dg/reshape_order_5.f90
! 5fd9fe976b0de499cf640ffc69ee816b  gcc/testsuite/gfortran.dg/reshape_pad_1.f90
! a83298fcf93f4b95a8fd48b3972e3d75  gcc/testsuite/gfortran.dg/reshape_rank7.f90
  82e933fdaa16cdd8a68cea29568b24f8  gcc/testsuite/gfortran.dg/reshape_shape_1.f90
  90dad8b6cf8141a17677751052b77127  gcc/testsuite/gfortran.dg/reshape_source_size_1.f90
! afbbe7a3662a692cb231ca26135afc31  gcc/testsuite/gfortran.dg/reshape_transpose_1.f90
  b60cb27a87581046d44ce97bb381b07e  gcc/testsuite/gfortran.dg/reshape_zerosize_1.f90
  fc86ba2e4ab1d9fa02cd4b46197f62b8  gcc/testsuite/gfortran.dg/reshape_zerosize_2.f90
! e1605517999212e457fdfb0dd09cd81f  gcc/testsuite/gfortran.dg/reshape_zerosize_3.f90
  f39d7669eca2c6b465340ae2f336d83f  gcc/testsuite/gfortran.dg/restricted_expression_1.f90
  ee4f324a68696b1259fc4e0034a3f686  gcc/testsuite/gfortran.dg/restricted_expression_2.f90
  ecf3cbf334096b6668127b767e5755b6  gcc/testsuite/gfortran.dg/restricted_expression_3.f90
  75becefbcb00d828af20df8ef069cfe1  gcc/testsuite/gfortran.dg/result_1.f90
  23a25b7f3bc0d298154be22ee2d9a72e  gcc/testsuite/gfortran.dg/result_2.f90
! 31bb6b1899746cf184074d68adc37e08  gcc/testsuite/gfortran.dg/result_default_init_1.f90
! 416e3b9c0491e7386f91190006b0b8ae  gcc/testsuite/gfortran.dg/result_in_spec_1.f90
! 9739d6b17ad825e10f91a99e482ed20a  gcc/testsuite/gfortran.dg/result_in_spec_2.f90
  87318cdf1dbad66e17a0a32c02318160  gcc/testsuite/gfortran.dg/result_in_spec_3.f90
  0cc4d47146059c3b56b72b6a334c57c4  gcc/testsuite/gfortran.dg/result_in_spec_4.f90
! b3784d58c29b97eeac15b8871ce68dce  gcc/testsuite/gfortran.dg/ret_array_1.f90
! a10262b27f49f95b731837f2725ca0c6  gcc/testsuite/gfortran.dg/ret_pointer_1.f90
! ed27fe0e7b9d880f9308e509ecca8e0f  gcc/testsuite/gfortran.dg/ret_pointer_2.f90
  3f5219d34a5a28fe569a2415155603c9  gcc/testsuite/gfortran.dg/return_1.f90
! ca064c83442c75f472e456f8b5b82940  gcc/testsuite/gfortran.dg/rewind_1.f90
! 0304a65b16ee6541b5057ab89f048a78  gcc/testsuite/gfortran.dg/round_1.f03
! 00b17c519cf474bba6274a29fac35585  gcc/testsuite/gfortran.dg/round_2.f03
! ebf073b780152d56c9faeb75c0f26be6  gcc/testsuite/gfortran.dg/round_3.f08
! ec2a7fe4fcc1def6802efe45e9a2422d  gcc/testsuite/gfortran.dg/round_4.f90
! 15bc5a5a0ab6aa96b883b05947f15943  gcc/testsuite/gfortran.dg/rrspacing_1.f90
! c3ced508b2e9387572a0a97e0715ad08  gcc/testsuite/gfortran.dg/runtime_warning_1.f90
  cf312106ea57ecf768f6b24b13308511  gcc/testsuite/gfortran.dg/same_name_1.f90
  f90e05bac6c9b27d6793dafbe29e34c5  gcc/testsuite/gfortran.dg/same_name_2.f90
  de1cf2edc8bf67d9e1bc215c160d5383  gcc/testsuite/gfortran.dg/same_type_as_1.f03
! c5c5f03961bf570872740568c2f30415  gcc/testsuite/gfortran.dg/same_type_as_2.f03
! 46acd85e5b7588369481da935062d4b1  gcc/testsuite/gfortran.dg/save_1.f90
  e6c7c7cbf695fec200c964f4e3b125ec  gcc/testsuite/gfortran.dg/save_2.f90
  996705a733a5e7c6d233456d0b211dcc  gcc/testsuite/gfortran.dg/save_3.f90
  eef9c4fb4632664f421c4067e9f7dd53  gcc/testsuite/gfortran.dg/save_4.f90
! 9619c507201f560eff2135e49692d052  gcc/testsuite/gfortran.dg/save_5.f90
! bcec3240f40aa5093a05d7cd8024acf3  gcc/testsuite/gfortran.dg/save_6.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
  1b62cb7446cd049efaae944964c35d12  gcc/testsuite/gfortran.dg/saved_automatic_1.f90
! cc540bd58f40242b9ecd126e5974401c  gcc/testsuite/gfortran.dg/scalar_mask_1.f90
! 6c2009aba9fde9a5adc99b628eac7b9c  gcc/testsuite/gfortran.dg/scalar_mask_2.f90
! d0c1a1dbda34e8d0ec0ed56c1b67f31f  gcc/testsuite/gfortran.dg/scalar_pointer_1.f90
  0fdbee4524fee6cd7f7f0889ec757efe  gcc/testsuite/gfortran.dg/scalar_return_1.f90
! b198a8799fec95e3600f79cd9a255ac5  gcc/testsuite/gfortran.dg/scalarize_parameter_array_1.f90
! 9ea656cf108583ba6666fa98e506c8eb  gcc/testsuite/gfortran.dg/scale_1.f90
! 3b618ef9e1a1595d5b6c02293da45582  gcc/testsuite/gfortran.dg/scan_1.f90
! addd1043771dffce28807852233ccb30  gcc/testsuite/gfortran.dg/scan_2.f90
! 3a5440c14565a366a54d532eb164e0e1  gcc/testsuite/gfortran.dg/scratch_1.f90
! 38a7c558deef461cddfb279a5119604b  gcc/testsuite/gfortran.dg/secnds-1.f
! 5b1985cdecce2ba9c6a5f3f91b6f9bd7  gcc/testsuite/gfortran.dg/secnds.f
! 8b29dba04c0b7c476ba5ab8cfd2354cc  gcc/testsuite/gfortran.dg/select_1.f90
! b130cf5d79de16257965eb6e9e94cb09  gcc/testsuite/gfortran.dg/select_2.f90
! 8240eae2c8bfc8dd6337b31af59965be  gcc/testsuite/gfortran.dg/select_3.f90
  a8915b84412b8a80d6a5acd416b43e64  gcc/testsuite/gfortran.dg/select_4.f90
! 9f58d75da32c37de1aaca3d48b5c27e1  gcc/testsuite/gfortran.dg/select_5.f90
  9e82f5f55056c564d24a8093166b6705  gcc/testsuite/gfortran.dg/select_6.f90
  423eb8a7672e7c232252493e95d51cdd  gcc/testsuite/gfortran.dg/select_7.f90
  f9b829c93dd5a44a9568469b7e0deda1  gcc/testsuite/gfortran.dg/select_8.f90
! b7f0fac05667f630e8f9b90aebe1fea4  gcc/testsuite/gfortran.dg/select_char_1.f90
! 4bf875de20300472ec17d50aced7e0ab  gcc/testsuite/gfortran.dg/select_char_2.f90
  9f98379d27ae7878917fe08a1c19379f  gcc/testsuite/gfortran.dg/select_char_3.f90
! e91693e025c4186322babf06bd1ed7d5  gcc/testsuite/gfortran.dg/select_type_1.f03
  cfc1f17ea1421c22ece9a1d3936945cc  gcc/testsuite/gfortran.dg/select_type_10.f03
  e7fc4e45d93d73096eb5455e0afc91c2  gcc/testsuite/gfortran.dg/select_type_11.f03
  ce44f4cf705ad7e0d25c9b14aecc308e  gcc/testsuite/gfortran.dg/select_type_12.f03
! d7d66f48f0167e744f7c8b28a03c1da0  gcc/testsuite/gfortran.dg/select_type_13.f03
! 14ecae635e6c6454dd3fb7128108cacc  gcc/testsuite/gfortran.dg/select_type_14.f03
! 05b2c58bbf571c0d79bcb93b6a2bde06  gcc/testsuite/gfortran.dg/select_type_15.f03
  74dbaaa0ee594948619c43f00415c8e4  gcc/testsuite/gfortran.dg/select_type_16.f03
  3c41ff5b8b11b5d04c8550dc1fe173cb  gcc/testsuite/gfortran.dg/select_type_17.f03
  812f9bf95f0fc8fec2bb399b1cdd182d  gcc/testsuite/gfortran.dg/select_type_18.f03
! 270283ff5f0d2744a9f841e340ab2ab8  gcc/testsuite/gfortran.dg/select_type_19.f03
! c3f9f767707edc8a520035ab6fde4172  gcc/testsuite/gfortran.dg/select_type_2.f03
  d81874f8195ddc31b323c17fc3accee0  gcc/testsuite/gfortran.dg/select_type_20.f90
  d6dac5533d7f006edcaf4385ed540a54  gcc/testsuite/gfortran.dg/select_type_21.f90
  268d8dcf633cdf1815a9d6dc563fd033  gcc/testsuite/gfortran.dg/select_type_22.f03
  75ad65bb60ec054db9060abd679fccf9  gcc/testsuite/gfortran.dg/select_type_23.f03
  8925c714f00fc0d72e5772f20ff084f7  gcc/testsuite/gfortran.dg/select_type_24.f90
  ddd27e01040409354206e2226df16f94  gcc/testsuite/gfortran.dg/select_type_25.f90
! 1b36c90a64f29fcd1eb853bb67a3f216  gcc/testsuite/gfortran.dg/select_type_26.f03
! b355ae66b5e36d1d0829bcfd50bbcb88  gcc/testsuite/gfortran.dg/select_type_27.f03
! 9f2fadd0407d1bd8052f269460f61bba  gcc/testsuite/gfortran.dg/select_type_28.f03
  9814dd914157fc7139af3f5013222d60  gcc/testsuite/gfortran.dg/select_type_29.f03
! 8d9e842435e7ef027b5e3520a944d16c  gcc/testsuite/gfortran.dg/select_type_3.f03
  bc6f4b8427180f3d7fe9596b5eb507d7  gcc/testsuite/gfortran.dg/select_type_30.f03
  e4078fcf84bae622e034eda4e4a7bd1b  gcc/testsuite/gfortran.dg/select_type_31.f03
  0fa3636ab8c629eaf962c9d4116c05fb  gcc/testsuite/gfortran.dg/select_type_32.f90
  65d1bc4754dda94ab063cc52f230bad4  gcc/testsuite/gfortran.dg/select_type_33.f03
  8400e196604f257ef8d8e9269bae6945  gcc/testsuite/gfortran.dg/select_type_34.f90
! 17bcfe633f956b7c00d45d639c636a18  gcc/testsuite/gfortran.dg/select_type_35.f03
! 7261a39a9ae963b6408a66c1477d9c75  gcc/testsuite/gfortran.dg/select_type_36.f03
! 36bdb347450cb7d83504aea5ea393021  gcc/testsuite/gfortran.dg/select_type_37.f03
  8be92dfb3cc0e7954dcf0c7c1a64b2a7  gcc/testsuite/gfortran.dg/select_type_38.f03
! decc0d3e6b015ac0bd3cd0699e061ecc  gcc/testsuite/gfortran.dg/select_type_39.f03
! 11fd9ddc87d7c66fd62a4843cc2af19f  gcc/testsuite/gfortran.dg/select_type_4.f90
! e89fd7896cb639b6f282d37cefd8c3be  gcc/testsuite/gfortran.dg/select_type_40.f90
! 3040c1e84327028f026493d2815ce052  gcc/testsuite/gfortran.dg/select_type_41.f90
! 652809f8153234254b8b67a7efca979e  gcc/testsuite/gfortran.dg/select_type_5.f03
! d4874fed6108821dfa28ab998af7855a  gcc/testsuite/gfortran.dg/select_type_6.f03
! 3acc63d3709ace8561c2455ee8125fbc  gcc/testsuite/gfortran.dg/select_type_7.f03
! 701c50cf2ae8ae92625bdf57c4ff5f6f  gcc/testsuite/gfortran.dg/select_type_8.f03
  28a9a0bb23f10b81739f2425be1ed3ed  gcc/testsuite/gfortran.dg/select_type_9.f03
! 5bae73fc0706740227316a7396de1358  gcc/testsuite/gfortran.dg/selected_char_kind_1.f90
  0e35a1975bf41869c373887bbd6467a2  gcc/testsuite/gfortran.dg/selected_char_kind_2.f90
  214d58043f273f06acaa3b8ed9e7d3d4  gcc/testsuite/gfortran.dg/selected_char_kind_3.f90
! ecada7f4c8aef8feb09804c559f55b47  gcc/testsuite/gfortran.dg/selected_char_kind_4.f90
! 3586d8f2f456c87dfd622a49c2ebf80e  gcc/testsuite/gfortran.dg/selected_kind_1.f90
  e8a78f7bb05b9a61dc889d88a7195f56  gcc/testsuite/gfortran.dg/selected_real_kind_1.f90
! e2e6ce9bd83e073dc8e29ce806611160  gcc/testsuite/gfortran.dg/selected_real_kind_2.f90
  c6f31959a6f27a049ee01954f0a811f0  gcc/testsuite/gfortran.dg/selected_real_kind_3.f90
  2ff3e2bd5f874c2b33a4f6d9e6fe83a5  gcc/testsuite/gfortran.dg/semicolon_fixed.f
  353c9033fc1cae854b893ff3b46e5ac0  gcc/testsuite/gfortran.dg/semicolon_fixed_2.f
*************** c137ead9ed9a3cbd4ca5f75d50965b1c  gcc/te
*** 53017,53161 ****
  e5ae2b5b89173ed8361161ef10e352e2  gcc/testsuite/gfortran.dg/sequence_types_1.f90
  cd908f2e51ce36e1d1deeca7c6ee72f6  gcc/testsuite/gfortran.dg/set_vm_limit.c
  8c21b488e7773e67f9472b6a064868b9  gcc/testsuite/gfortran.dg/shape_1.f90
! fea00a25c51823141987f52b7ea776b8  gcc/testsuite/gfortran.dg/shape_2.f90
  3c6dfb31a52f344f631d36f369e069bf  gcc/testsuite/gfortran.dg/shape_3.f90
! aaa18907547c7140df6b3dd8f4bf4f59  gcc/testsuite/gfortran.dg/shape_4.f90
! eed94040461dc3f4fa1bba34b2b82dca  gcc/testsuite/gfortran.dg/shape_5.f90
  311fedd0eb4347d62531750c8df6e3cd  gcc/testsuite/gfortran.dg/shape_6.f90
! ec53b4e26212c9f5f878bda9043ca979  gcc/testsuite/gfortran.dg/shape_7.f90
! 8ea0bac9f18b067195563f8be8fbbfe4  gcc/testsuite/gfortran.dg/shape_8.f90
  30fc9ad5840248ef596a1216e5c12bc9  gcc/testsuite/gfortran.dg/shift-alloc.f90
  7b1184e923af066c99dfd04c9b054ebd  gcc/testsuite/gfortran.dg/shift-kind.f90
! bc8bd628ea9b26898618898ace33fc92  gcc/testsuite/gfortran.dg/shift-kind_2.f90
! 73397e8d32e6ef73c578365aca450159  gcc/testsuite/gfortran.dg/shiftalr_1.F90
! 068331a3f45c5af95c21181da0cfa629  gcc/testsuite/gfortran.dg/shiftalr_2.F90
  2eab04416fddb6b1a6575b8340902c27  gcc/testsuite/gfortran.dg/sibling_dummy_procedure_1.f90
  abc7dd8bdb0e5b712800eb9cf9fec4db  gcc/testsuite/gfortran.dg/sibling_dummy_procedure_2.f90
  73e017874e8c06097ec8707a950faaf5  gcc/testsuite/gfortran.dg/sibling_dummy_procedure_3.f90
! 70de57c924e76dc6d1e498e2259aeb38  gcc/testsuite/gfortran.dg/simpleif_1.f90
  91056d9ca23bef5e1c2753b954256442  gcc/testsuite/gfortran.dg/simpleif_2.f90
! 3326234d8872d8aaba7b837bec9ecdff  gcc/testsuite/gfortran.dg/simplify_argN_1.f90
! f3e925be07ee5b00bfaa862a35865f3e  gcc/testsuite/gfortran.dg/simplify_cshift_1.f90
  7a3c123368ae7a7d4cd04f96638e4174  gcc/testsuite/gfortran.dg/simplify_cshift_2.f90
  cee66ec5b389cd7c4cb8c22f5584f9dd  gcc/testsuite/gfortran.dg/simplify_cshift_3.f90
! 0bd4a476c1e494cf5646e7afc7922748  gcc/testsuite/gfortran.dg/simplify_modulo.f90
! e584299aed0c0721f0a4a4cca5af2634  gcc/testsuite/gfortran.dg/single_char_string.f90
! a7a1df45b7a28cb48abc9616e9267c7b  gcc/testsuite/gfortran.dg/size_dim.f90
  76b6a643d27059d9c8114652d1d2ae9f  gcc/testsuite/gfortran.dg/size_kind.f90
  5a93d89b88a4dab967e9247a9cce78ca  gcc/testsuite/gfortran.dg/size_kind_2.f90
  06fc303bb9c257b08d6c089dc0b90562  gcc/testsuite/gfortran.dg/size_kind_3.f90
! a7172fbfc13114b77e730c7f3dc8b2dc  gcc/testsuite/gfortran.dg/size_optional_dim_1.f90
! f3f0ffa916b31c3181088a86aea21a29  gcc/testsuite/gfortran.dg/sizeof.f90
  365e93d8ad0f49947cb4a16064a8dfbc  gcc/testsuite/gfortran.dg/sizeof_2.f90
  ef6455481f972947ec2caf636b0b11f1  gcc/testsuite/gfortran.dg/sizeof_3.f90
! a06f264a49edde56de5a2856e025a36e  gcc/testsuite/gfortran.dg/sizeof_4.f90
  aa889457a016aa03e609133a71bc8fac  gcc/testsuite/gfortran.dg/sizeof_5.f90
  92646d2f35fb17d0cd6d1d443b1fb05a  gcc/testsuite/gfortran.dg/sizeof_proc.f90
! 902d29439cf81a252237ce8758bff284  gcc/testsuite/gfortran.dg/slash_1.f90
! 01255a3f70f801c9a5482962be46313f  gcc/testsuite/gfortran.dg/sms-1.f90
! c4cabd36df4ad9307d522a1facfbe440  gcc/testsuite/gfortran.dg/sms-2.f90
  85bef460546bfc479debba6e0beb0a8f  gcc/testsuite/gfortran.dg/spec_expr_1.f90
  e50338827fa0a2f4c86e55a9d77c7e7d  gcc/testsuite/gfortran.dg/spec_expr_2.f90
  85a3fbfb1341a70371686604393b4608  gcc/testsuite/gfortran.dg/spec_expr_3.f90
  1e9c6ae2bc18589c137aeedb6317ba90  gcc/testsuite/gfortran.dg/spec_expr_4.f90
  aad042410419391c67cbcfe80381dfd6  gcc/testsuite/gfortran.dg/spec_expr_5.f90
  2bee0a62aec05aa423ff23129c00c965  gcc/testsuite/gfortran.dg/spec_expr_6.f90
! d558e49315c837bdad519bdc4731ac98  gcc/testsuite/gfortran.dg/spec_expr_7.f90
  4561b9231cf8d91cc26cafd4dfa4eb9d  gcc/testsuite/gfortran.dg/specification_type_resolution_1.f90
  f5153e8883f791f3cc0646a71b5c6e9b  gcc/testsuite/gfortran.dg/specification_type_resolution_2.f90
! 2ac57932cac8d32fa6f038539e479c77  gcc/testsuite/gfortran.dg/specifics_1.f90
  cedac13505e8a5175fa43ac2c3c4834d  gcc/testsuite/gfortran.dg/specifics_2.f90
  1fdd8f1d3aa20721e1933ead1efffc62  gcc/testsuite/gfortran.dg/spread_bounds_1.f90
! daf0222210712781403f97bde0118f88  gcc/testsuite/gfortran.dg/spread_init_expr.f03
  9739831622df43894c7628df7fbfdbe7  gcc/testsuite/gfortran.dg/spread_init_expr_2.f90
! 010cfcdec31146aa14377199603e5cca  gcc/testsuite/gfortran.dg/spread_scalar_source.f90
! 654688402ffab04ce051df7b4f572427  gcc/testsuite/gfortran.dg/spread_shape_1.f90
  4a6636fb35b05d54b152a2bb04221e10  gcc/testsuite/gfortran.dg/spread_size_limit.f90
  660cebcc8ffff86cb4ccb16d81f894fb  gcc/testsuite/gfortran.dg/spread_zerosize_1.f90
! f9876044f9f8cff199e7e8790d078f14  gcc/testsuite/gfortran.dg/stat_1.f90
! 471e27504b954c62f2f64eb6ffc11426  gcc/testsuite/gfortran.dg/stat_2.f90
  8297205d0fd462057bf77c41569c1427  gcc/testsuite/gfortran.dg/static_linking_1.c
  fdcc241cfe92b58fca2cd6843c525442  gcc/testsuite/gfortran.dg/static_linking_1.f
! 473702ed9f48aef8d5a3691a01c19c73  gcc/testsuite/gfortran.dg/stfunc_1.f90
  71087dd3d8e303803a7d757baed6544f  gcc/testsuite/gfortran.dg/stfunc_2.f90
  c1bde8e55849ef4868618f4cd69d2266  gcc/testsuite/gfortran.dg/stfunc_3.f90
! 791b69f5561228390e24755d3a1cd600  gcc/testsuite/gfortran.dg/stfunc_4.f90
  364cb869de78e4e9587eac8a31604a53  gcc/testsuite/gfortran.dg/stfunc_5.f90
! e734589a92caa8173037071c19049050  gcc/testsuite/gfortran.dg/stfunc_6.f90
  399c49d893a75743e673ca8169a88756  gcc/testsuite/gfortran.dg/stfunc_7.f90
  8dc27d9a1fbd9003b65a2cd089962721  gcc/testsuite/gfortran.dg/stfunc_8.f90
  eda033d11dfa20d82831e890722e7b13  gcc/testsuite/gfortran.dg/stmt_func_1.f90
! daa82e620ad11816202f0371d14e546a  gcc/testsuite/gfortran.dg/storage_size_1.f08
  d05a12266ad47ee1cc684d7801d940a9  gcc/testsuite/gfortran.dg/storage_size_2.f08
! 9f9a102c20bd7b1a65beb305a960abc4  gcc/testsuite/gfortran.dg/storage_size_3.f08
! 5c322984f361fbe33c83c4b497b39cc2  gcc/testsuite/gfortran.dg/storage_size_4.f90
  cff431afd58d8fc76bce899d42dfd678  gcc/testsuite/gfortran.dg/storage_size_5.f90
  badc90ad1c40dd1ff7af93ded0b4dafe  gcc/testsuite/gfortran.dg/storage_size_6.f90
  187ed98bc6c4ad9278e3bfc17380d52c  gcc/testsuite/gfortran.dg/str_comp_optimize_1.f90
! c493cc1dd6aabb50cb30ff4eace72dd8  gcc/testsuite/gfortran.dg/streamio_1.f90
! 9de6bd7e68930e9f33925ce64750a208  gcc/testsuite/gfortran.dg/streamio_10.f90
! 5e203b3ef2b8d7a585bcb8a40951fcaf  gcc/testsuite/gfortran.dg/streamio_11.f90
! acdacef68ef065d4eae109bbac0a0ec8  gcc/testsuite/gfortran.dg/streamio_12.f90
! 012745aa6899620d343ce99e57b5532a  gcc/testsuite/gfortran.dg/streamio_13.f90
! e0e8a4d59abc4ebd92e7e05cb65e3b36  gcc/testsuite/gfortran.dg/streamio_14.f90
! 30c10bd261c5e83d45ab656037fac805  gcc/testsuite/gfortran.dg/streamio_15.f90
! 023414fc22911e1752a3ecd5efaaec83  gcc/testsuite/gfortran.dg/streamio_16.f90
! 9d16166637fe054a937fc8a3bee70dbb  gcc/testsuite/gfortran.dg/streamio_17.f90
! ae6bb2e432ba1e7e725181f322d02558  gcc/testsuite/gfortran.dg/streamio_2.f90
! b9ea93c0f6ff4d3338e02106a76267f3  gcc/testsuite/gfortran.dg/streamio_3.f90
! b11b4d563738ada20248783b365f3980  gcc/testsuite/gfortran.dg/streamio_4.f90
! 31a8e210c33ca631cdf7789c8498f37d  gcc/testsuite/gfortran.dg/streamio_5.f90
! 813cbcbb70ba1120441039e4c5471226  gcc/testsuite/gfortran.dg/streamio_6.f90
! ea39811facfe401b6975ebe21482cd7b  gcc/testsuite/gfortran.dg/streamio_7.f90
! 84efca1c150a6d2a27e94ab3832f9276  gcc/testsuite/gfortran.dg/streamio_8.f90
! a87910755f552078a01e95ab8f989c14  gcc/testsuite/gfortran.dg/streamio_9.f90
! d0c335c9c64250a585f4c18a9d3537cc  gcc/testsuite/gfortran.dg/string_0xfe_0xff_1.f90
! c5f122cb6195d360a63111bbda5afe4d  gcc/testsuite/gfortran.dg/string_1.f90
  a00260c290b6ba548b2a1fff5f55cdfd  gcc/testsuite/gfortran.dg/string_2.f90
! c5eaedf274e7757f10ff4d85f12bc64d  gcc/testsuite/gfortran.dg/string_3.f90
! dfa3465f74bc2d3593b88bca4e376132  gcc/testsuite/gfortran.dg/string_4.f90
  c8b0d6393a41cf9eb55a5d2e1b706da5  gcc/testsuite/gfortran.dg/string_5.f90
  b049a93bb885fff9b901963c525f8f7a  gcc/testsuite/gfortran.dg/string_array_constructor_1.f90
! 1e2719e15e692bcaa829b833cb704a00  gcc/testsuite/gfortran.dg/string_array_constructor_2.f90
  c42a30583403fb080a182c51bf903430  gcc/testsuite/gfortran.dg/string_array_constructor_3.f90
  31ce36c8c330d44a992ca049d1676a77  gcc/testsuite/gfortran.dg/string_assign_1.f90
! 7a50dd2e351b685daa4a1a16f5349c42  gcc/testsuite/gfortran.dg/string_assign_2.f90
! ff858231afd3b1c45a0f35fd51662a9a  gcc/testsuite/gfortran.dg/string_compare_1.f90
! c82e3d4ced9692fe4990fecf9df45032  gcc/testsuite/gfortran.dg/string_compare_2.f90
! 1c56321d29fdc7ecb670b4b3fbc6f53a  gcc/testsuite/gfortran.dg/string_compare_3.f90
  e06a98e41f37e04f10fab8e4da7ab1a4  gcc/testsuite/gfortran.dg/string_compare_4.f90
! 1c47ac1ad9850bdd467c47a14971211e  gcc/testsuite/gfortran.dg/string_ctor_1.f90
! b1f748dc53cd2b4d995595954b8f1b1c  gcc/testsuite/gfortran.dg/string_length_1.f90
! 9d0baf35a7bdd6b1b84ce9a8d0dbc111  gcc/testsuite/gfortran.dg/string_length_2.f90
! 99908b0af6994996f1c93547721b5740  gcc/testsuite/gfortran.dg/string_length_3.f90
! 38c7e9e2021ac2e5aa9ac72f64c3def0  gcc/testsuite/gfortran.dg/string_length_4.f90
! f664c3c8552e12e2a8d7f4d3566f9877  gcc/testsuite/gfortran.dg/string_null_compare_1.f
! 230f3ac65d829fdd4d14a340c2dcc070  gcc/testsuite/gfortran.dg/string_pad_trunc.f90
! 4682a1485627795a4c59238a19670fbb  gcc/testsuite/gfortran.dg/structure_constructor_1.f03
  2cfe25292a29a79e2d9e118cd4eee6c7  gcc/testsuite/gfortran.dg/structure_constructor_10.f90
! 492ebe281a3faebbee10ea1ab7400e80  gcc/testsuite/gfortran.dg/structure_constructor_11.f90
  90625f0ab3aede8acdf99aa6e5b1bbd8  gcc/testsuite/gfortran.dg/structure_constructor_12.f90
! bff8a1f7d00d68994b2ef13f6582e0fc  gcc/testsuite/gfortran.dg/structure_constructor_13.f03
! 337c2b2463c1a46c0e1af9b390db0377  gcc/testsuite/gfortran.dg/structure_constructor_2.f03
  b4cea5ac2c6cc89ab88ca3d7673f1483  gcc/testsuite/gfortran.dg/structure_constructor_3.f03
  cf05250e492fd4f294f0298ffb5c8bdb  gcc/testsuite/gfortran.dg/structure_constructor_4.f03
! e983510319d347c44046777044096f49  gcc/testsuite/gfortran.dg/structure_constructor_5.f03
  587f82ad25f57cceff73f82afb7d781e  gcc/testsuite/gfortran.dg/structure_constructor_6.f03
  efca3c0c5b68406fe373475bbaf52c74  gcc/testsuite/gfortran.dg/structure_constructor_7.f03
  09b7366d147b36ed483432327ffbe1b8  gcc/testsuite/gfortran.dg/structure_constructor_8.f03
  1b4199459240df20399bbbee2041836e  gcc/testsuite/gfortran.dg/structure_constructor_9.f90
! 9532ba43d2cf026ef84d90d230bf1ffd  gcc/testsuite/gfortran.dg/submodule_1.f08
! 9bfeff486cc98218bc774eb2a6064bb7  gcc/testsuite/gfortran.dg/submodule_10.f08
! 3318d144c2d4abef44dd2d14c35a6adc  gcc/testsuite/gfortran.dg/submodule_11.f08
  9542945224c8744c6179ede6b10e8b0d  gcc/testsuite/gfortran.dg/submodule_12.f08
  f52d9c0fcdf271bd2e5abda2cc3b4855  gcc/testsuite/gfortran.dg/submodule_13.f08
! 04974d3f93910435057c4f73f05e14cd  gcc/testsuite/gfortran.dg/submodule_14.f08
! adcecf1db1bbd9194a601cae633dbba7  gcc/testsuite/gfortran.dg/submodule_15.f08
  76252beb42c84ee49919cc34174e21af  gcc/testsuite/gfortran.dg/submodule_16.f08
! ed46c8518346f2d7541fbd9f524634aa  gcc/testsuite/gfortran.dg/submodule_17.f08
! 05fc9a3c7e9137124388bb9ec99e3025  gcc/testsuite/gfortran.dg/submodule_18.f08
! 7ec3aba83cb3dc8728e78a86df5c15ae  gcc/testsuite/gfortran.dg/submodule_19.f08
! 97424405e3e17827757a639a19573fa4  gcc/testsuite/gfortran.dg/submodule_2.f08
  43bb9cc7a18987bdea7408e3ee156485  gcc/testsuite/gfortran.dg/submodule_20.f08
  970aae252f9aced89cf731d6e1ee1a88  gcc/testsuite/gfortran.dg/submodule_21.f08
  2d6b9c10ee531746fc5c371c23349641  gcc/testsuite/gfortran.dg/submodule_22.f08
--- 56751,56911 ----
  e5ae2b5b89173ed8361161ef10e352e2  gcc/testsuite/gfortran.dg/sequence_types_1.f90
  cd908f2e51ce36e1d1deeca7c6ee72f6  gcc/testsuite/gfortran.dg/set_vm_limit.c
  8c21b488e7773e67f9472b6a064868b9  gcc/testsuite/gfortran.dg/shape_1.f90
! 83165f49617d33a60724f58032240b93  gcc/testsuite/gfortran.dg/shape_2.f90
  3c6dfb31a52f344f631d36f369e069bf  gcc/testsuite/gfortran.dg/shape_3.f90
! 3a839d4a8d0dfd6f0b50c08763804e26  gcc/testsuite/gfortran.dg/shape_4.f90
! bfc82dc7ee1692dedcc482217e13a740  gcc/testsuite/gfortran.dg/shape_5.f90
  311fedd0eb4347d62531750c8df6e3cd  gcc/testsuite/gfortran.dg/shape_6.f90
! 39987cbf267e0f3d6d41fb2901cb802f  gcc/testsuite/gfortran.dg/shape_7.f90
! 301404fa099247deaa25fec8b38d0403  gcc/testsuite/gfortran.dg/shape_8.f90
! 53748508ab37964b0a94e0569bd37d9f  gcc/testsuite/gfortran.dg/shape_9.f90
  30fc9ad5840248ef596a1216e5c12bc9  gcc/testsuite/gfortran.dg/shift-alloc.f90
  7b1184e923af066c99dfd04c9b054ebd  gcc/testsuite/gfortran.dg/shift-kind.f90
! d57dfe11fdeff81bfd7e9f60c8e8572e  gcc/testsuite/gfortran.dg/shift-kind_2.f90
! e741796e6c1133c27c2ec454e37efd2d  gcc/testsuite/gfortran.dg/shiftalr_1.F90
! 5cdd785b760e61c964da25ac40654245  gcc/testsuite/gfortran.dg/shiftalr_2.F90
  2eab04416fddb6b1a6575b8340902c27  gcc/testsuite/gfortran.dg/sibling_dummy_procedure_1.f90
  abc7dd8bdb0e5b712800eb9cf9fec4db  gcc/testsuite/gfortran.dg/sibling_dummy_procedure_2.f90
  73e017874e8c06097ec8707a950faaf5  gcc/testsuite/gfortran.dg/sibling_dummy_procedure_3.f90
! f4292a6253c083744adc81c628aebb23  gcc/testsuite/gfortran.dg/simpleif_1.f90
  91056d9ca23bef5e1c2753b954256442  gcc/testsuite/gfortran.dg/simpleif_2.f90
! e5b189998f851622a73dfa0f57dc1819  gcc/testsuite/gfortran.dg/simplify_argN_1.f90
! 6f4c664ebe4c8da6589a773bd5de0a0f  gcc/testsuite/gfortran.dg/simplify_cshift_1.f90
  7a3c123368ae7a7d4cd04f96638e4174  gcc/testsuite/gfortran.dg/simplify_cshift_2.f90
  cee66ec5b389cd7c4cb8c22f5584f9dd  gcc/testsuite/gfortran.dg/simplify_cshift_3.f90
! 28a244004e8ba327c433443abce7ab99  gcc/testsuite/gfortran.dg/simplify_cshift_4.f90
! 5f071cefe6d0139f5e773fb59ce9b140  gcc/testsuite/gfortran.dg/simplify_eoshift_1.f90
! 6b24371f697cce6c0fd1cf135ea84ac8  gcc/testsuite/gfortran.dg/simplify_modulo.f90
! 29b8f5f46ac26ff58d6a98b81cfd7b83  gcc/testsuite/gfortran.dg/single_char_string.f90
! 56a0d5d53c2a28d6b8b29a125a19f731  gcc/testsuite/gfortran.dg/size_dim.f90
  76b6a643d27059d9c8114652d1d2ae9f  gcc/testsuite/gfortran.dg/size_kind.f90
  5a93d89b88a4dab967e9247a9cce78ca  gcc/testsuite/gfortran.dg/size_kind_2.f90
  06fc303bb9c257b08d6c089dc0b90562  gcc/testsuite/gfortran.dg/size_kind_3.f90
! 51c5f01c056b65ab767dda0a765eb68a  gcc/testsuite/gfortran.dg/size_optional_dim_1.f90
! 3b2c2a5206047f06585f5eaa51118fb1  gcc/testsuite/gfortran.dg/sizeof.f90
  365e93d8ad0f49947cb4a16064a8dfbc  gcc/testsuite/gfortran.dg/sizeof_2.f90
  ef6455481f972947ec2caf636b0b11f1  gcc/testsuite/gfortran.dg/sizeof_3.f90
! 16ea464f9304ec12032fdb578b3edd09  gcc/testsuite/gfortran.dg/sizeof_4.f90
  aa889457a016aa03e609133a71bc8fac  gcc/testsuite/gfortran.dg/sizeof_5.f90
  92646d2f35fb17d0cd6d1d443b1fb05a  gcc/testsuite/gfortran.dg/sizeof_proc.f90
! 98de29bd3d4515adf03faf99e1097da3  gcc/testsuite/gfortran.dg/slash_1.f90
! 94331e49e12dbf9bc1f4bd6bb4316cb1  gcc/testsuite/gfortran.dg/sms-1.f90
! c672a2c11c154db645d9d2499372129e  gcc/testsuite/gfortran.dg/sms-2.f90
  85bef460546bfc479debba6e0beb0a8f  gcc/testsuite/gfortran.dg/spec_expr_1.f90
  e50338827fa0a2f4c86e55a9d77c7e7d  gcc/testsuite/gfortran.dg/spec_expr_2.f90
  85a3fbfb1341a70371686604393b4608  gcc/testsuite/gfortran.dg/spec_expr_3.f90
  1e9c6ae2bc18589c137aeedb6317ba90  gcc/testsuite/gfortran.dg/spec_expr_4.f90
  aad042410419391c67cbcfe80381dfd6  gcc/testsuite/gfortran.dg/spec_expr_5.f90
  2bee0a62aec05aa423ff23129c00c965  gcc/testsuite/gfortran.dg/spec_expr_6.f90
! 74d9192c674d36c49dd61638c0ed9427  gcc/testsuite/gfortran.dg/spec_expr_7.f90
  4561b9231cf8d91cc26cafd4dfa4eb9d  gcc/testsuite/gfortran.dg/specification_type_resolution_1.f90
  f5153e8883f791f3cc0646a71b5c6e9b  gcc/testsuite/gfortran.dg/specification_type_resolution_2.f90
! d8e60069f2b97e982ac574a084348519  gcc/testsuite/gfortran.dg/specifics_1.f90
  cedac13505e8a5175fa43ac2c3c4834d  gcc/testsuite/gfortran.dg/specifics_2.f90
+ 6bf379a197471bb5af838582a9573e82  gcc/testsuite/gfortran.dg/spellcheck-operator.f90
+ 11cef0c39a62e58007e6d2429bb39e5c  gcc/testsuite/gfortran.dg/spellcheck-parameter.f90
+ d3b8cb87c0d4560033de0eefb87ccd93  gcc/testsuite/gfortran.dg/spellcheck-procedure_1.f90
+ 615c3c141205bbe081c8a3e34df2c7a5  gcc/testsuite/gfortran.dg/spellcheck-procedure_2.f90
+ 2839437f9a11c4c8b6415703f56a7325  gcc/testsuite/gfortran.dg/spellcheck-structure.f90
  1fdd8f1d3aa20721e1933ead1efffc62  gcc/testsuite/gfortran.dg/spread_bounds_1.f90
! 90560dd43afb04df0d4436add6187afd  gcc/testsuite/gfortran.dg/spread_init_expr.f03
  9739831622df43894c7628df7fbfdbe7  gcc/testsuite/gfortran.dg/spread_init_expr_2.f90
! 4d184b91375f44c5b92a49fa87c9a38e  gcc/testsuite/gfortran.dg/spread_scalar_source.f90
! 1d00f5b498cd877e60af5bf7a6780831  gcc/testsuite/gfortran.dg/spread_shape_1.f90
  4a6636fb35b05d54b152a2bb04221e10  gcc/testsuite/gfortran.dg/spread_size_limit.f90
  660cebcc8ffff86cb4ccb16d81f894fb  gcc/testsuite/gfortran.dg/spread_zerosize_1.f90
! c261a331f783e0e77510fea0a4181472  gcc/testsuite/gfortran.dg/stat_1.f90
! 3fe235d1f1fd3811931f6728caac65ba  gcc/testsuite/gfortran.dg/stat_2.f90
! 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
  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
  71087dd3d8e303803a7d757baed6544f  gcc/testsuite/gfortran.dg/stfunc_2.f90
  c1bde8e55849ef4868618f4cd69d2266  gcc/testsuite/gfortran.dg/stfunc_3.f90
! 2d295beb924c8a038fd672c652f3f22a  gcc/testsuite/gfortran.dg/stfunc_4.f90
  364cb869de78e4e9587eac8a31604a53  gcc/testsuite/gfortran.dg/stfunc_5.f90
! 4752a994518da594cef70d639980096a  gcc/testsuite/gfortran.dg/stfunc_6.f90
  399c49d893a75743e673ca8169a88756  gcc/testsuite/gfortran.dg/stfunc_7.f90
  8dc27d9a1fbd9003b65a2cd089962721  gcc/testsuite/gfortran.dg/stfunc_8.f90
  eda033d11dfa20d82831e890722e7b13  gcc/testsuite/gfortran.dg/stmt_func_1.f90
! ccb214601d7acab9a7a82e97b469c0c1  gcc/testsuite/gfortran.dg/stop_shouldfail.f90
! 34548104ff9657cfd8eb971e0dad58e7  gcc/testsuite/gfortran.dg/storage_size_1.f08
  d05a12266ad47ee1cc684d7801d940a9  gcc/testsuite/gfortran.dg/storage_size_2.f08
! 4cef3dba38f16ee30a80ced7f0f8dd4d  gcc/testsuite/gfortran.dg/storage_size_3.f08
! 59dc2252743acc1ead6c32c9e43e01c4  gcc/testsuite/gfortran.dg/storage_size_4.f90
  cff431afd58d8fc76bce899d42dfd678  gcc/testsuite/gfortran.dg/storage_size_5.f90
  badc90ad1c40dd1ff7af93ded0b4dafe  gcc/testsuite/gfortran.dg/storage_size_6.f90
  187ed98bc6c4ad9278e3bfc17380d52c  gcc/testsuite/gfortran.dg/str_comp_optimize_1.f90
! 2af34d6f3f5fb66212d16d6fa862bcf3  gcc/testsuite/gfortran.dg/streamio_1.f90
! 0d4b684f470d06cc0aa31820d157d114  gcc/testsuite/gfortran.dg/streamio_10.f90
! d23f2c1495f799495ab5ec094c256418  gcc/testsuite/gfortran.dg/streamio_11.f90
! 0293df0ef0e2ad8deea7d6e84ff651ab  gcc/testsuite/gfortran.dg/streamio_12.f90
! 781f8602aadef2707c4ea00a5b2e31c7  gcc/testsuite/gfortran.dg/streamio_13.f90
! ce5a21a69bff33360348e98834eb26dd  gcc/testsuite/gfortran.dg/streamio_14.f90
! 809108ab99d66e4cd3c97f5907f5e42d  gcc/testsuite/gfortran.dg/streamio_15.f90
! 5c471a5a2baacf7f5d3e95c36897d15f  gcc/testsuite/gfortran.dg/streamio_16.f90
! c6e6702db98bfd0226defb828dc129a4  gcc/testsuite/gfortran.dg/streamio_17.f90
! 30fbe8f82f3ae117749d33f0cbecb0f9  gcc/testsuite/gfortran.dg/streamio_2.f90
! ecc66620574916f4b154ee3802866490  gcc/testsuite/gfortran.dg/streamio_3.f90
! ab6b23d963a5b8985972c2fa89516a18  gcc/testsuite/gfortran.dg/streamio_4.f90
! 57a76f69f44d9b0bdbacbf4fa5eec514  gcc/testsuite/gfortran.dg/streamio_5.f90
! 0deb7cd84f31ead5bf3513062317bc77  gcc/testsuite/gfortran.dg/streamio_6.f90
! 0d553f41bea8c600d41310a3f97c6e82  gcc/testsuite/gfortran.dg/streamio_7.f90
! 4a479a72469ca787fc2fe4205c647fe8  gcc/testsuite/gfortran.dg/streamio_8.f90
! 9d5d209ef0f3b22a6a431412eb8b978b  gcc/testsuite/gfortran.dg/streamio_9.f90
! fcfabf8674a4790f50314787758e7246  gcc/testsuite/gfortran.dg/string_0xfe_0xff_1.f90
! d4f8f93ec4d27ab680cbc8ad90ba78fa  gcc/testsuite/gfortran.dg/string_1.f90
! bb4a6248051c3fed6533c234a648221c  gcc/testsuite/gfortran.dg/string_1_lp64.f90
  a00260c290b6ba548b2a1fff5f55cdfd  gcc/testsuite/gfortran.dg/string_2.f90
! bbb2a82e94e99133ce5af69123ac13b2  gcc/testsuite/gfortran.dg/string_3.f90
! 81bdf9b09f387f1733b2a818b06203e4  gcc/testsuite/gfortran.dg/string_3_lp64.f90
! 4ec9da458cb0c2b197c4f0dec20e522b  gcc/testsuite/gfortran.dg/string_4.f90
  c8b0d6393a41cf9eb55a5d2e1b706da5  gcc/testsuite/gfortran.dg/string_5.f90
  b049a93bb885fff9b901963c525f8f7a  gcc/testsuite/gfortran.dg/string_array_constructor_1.f90
! 13d6f88aeeff911702e36d2e3dc09715  gcc/testsuite/gfortran.dg/string_array_constructor_2.f90
  c42a30583403fb080a182c51bf903430  gcc/testsuite/gfortran.dg/string_array_constructor_3.f90
  31ce36c8c330d44a992ca049d1676a77  gcc/testsuite/gfortran.dg/string_assign_1.f90
! 6c2109b0fba944cce6055da135dd7fc7  gcc/testsuite/gfortran.dg/string_assign_2.f90
! 2b6e51ff41746a997a9d452462485739  gcc/testsuite/gfortran.dg/string_compare_1.f90
! 855d27f702299b15518ac5d126bcb962  gcc/testsuite/gfortran.dg/string_compare_2.f90
! b6f11682c7ce0a517cf7c66620a580e2  gcc/testsuite/gfortran.dg/string_compare_3.f90
  e06a98e41f37e04f10fab8e4da7ab1a4  gcc/testsuite/gfortran.dg/string_compare_4.f90
! 98beb64e741443837bc69cd40002eb6b  gcc/testsuite/gfortran.dg/string_ctor_1.f90
! a613feb27e8e5adc7cb1fa1ae85d2092  gcc/testsuite/gfortran.dg/string_length_1.f90
! 22ee495f1a896edbc49a08ff4c8ab74f  gcc/testsuite/gfortran.dg/string_length_2.f90
! e963c4744d55ef72757f5498e8f5d24a  gcc/testsuite/gfortran.dg/string_length_3.f90
! 20d9ed8c5a22a61701284d70e137fca6  gcc/testsuite/gfortran.dg/string_length_4.f90
! 97c8198bad4ee1d737d8dcf71ef53812  gcc/testsuite/gfortran.dg/string_null_compare_1.f
! 1580c27fb69ee08df42bbee7b629c607  gcc/testsuite/gfortran.dg/string_pad_trunc.f90
! 3194cca2b2581964987280c70f05554a  gcc/testsuite/gfortran.dg/structure_constructor_1.f03
  2cfe25292a29a79e2d9e118cd4eee6c7  gcc/testsuite/gfortran.dg/structure_constructor_10.f90
! 9eac5e48797138bb8cec2f5d886ea311  gcc/testsuite/gfortran.dg/structure_constructor_11.f90
  90625f0ab3aede8acdf99aa6e5b1bbd8  gcc/testsuite/gfortran.dg/structure_constructor_12.f90
! caa7da29771aad612f545bdeb544b4c9  gcc/testsuite/gfortran.dg/structure_constructor_13.f03
! 5cdebe330092a8119284be48c532d8d9  gcc/testsuite/gfortran.dg/structure_constructor_14.f90
! a8c69bca898ff29ba3a6ae2924078fa7  gcc/testsuite/gfortran.dg/structure_constructor_15.f90
! 34b1847b506e1397548db8e0aa2a5dee  gcc/testsuite/gfortran.dg/structure_constructor_2.f03
  b4cea5ac2c6cc89ab88ca3d7673f1483  gcc/testsuite/gfortran.dg/structure_constructor_3.f03
  cf05250e492fd4f294f0298ffb5c8bdb  gcc/testsuite/gfortran.dg/structure_constructor_4.f03
! 89fa3200d7136ede426b295c5df3dc61  gcc/testsuite/gfortran.dg/structure_constructor_5.f03
  587f82ad25f57cceff73f82afb7d781e  gcc/testsuite/gfortran.dg/structure_constructor_6.f03
  efca3c0c5b68406fe373475bbaf52c74  gcc/testsuite/gfortran.dg/structure_constructor_7.f03
  09b7366d147b36ed483432327ffbe1b8  gcc/testsuite/gfortran.dg/structure_constructor_8.f03
  1b4199459240df20399bbbee2041836e  gcc/testsuite/gfortran.dg/structure_constructor_9.f90
! 120108ca58b428ca1b6d5320c8f3588f  gcc/testsuite/gfortran.dg/submodule_1.f08
! 43c1a59eedc5eb389c662954c8605d21  gcc/testsuite/gfortran.dg/submodule_10.f08
! c5c423f619065775d57095b6232e392b  gcc/testsuite/gfortran.dg/submodule_11.f08
  9542945224c8744c6179ede6b10e8b0d  gcc/testsuite/gfortran.dg/submodule_12.f08
  f52d9c0fcdf271bd2e5abda2cc3b4855  gcc/testsuite/gfortran.dg/submodule_13.f08
! 4e3f3b2c0298217b924aac028ea28b9e  gcc/testsuite/gfortran.dg/submodule_14.f08
! 70cf3e1358f8069784ea6d3051f3ee2a  gcc/testsuite/gfortran.dg/submodule_15.f08
  76252beb42c84ee49919cc34174e21af  gcc/testsuite/gfortran.dg/submodule_16.f08
! 20a0f71e120663f9b52d5f4048a4b637  gcc/testsuite/gfortran.dg/submodule_17.f08
! 732c593462618b82ae14a95b681f69c0  gcc/testsuite/gfortran.dg/submodule_18.f08
! ea403df1c7238d712f2c9605ee89339a  gcc/testsuite/gfortran.dg/submodule_19.f08
! 8e641bb094c9b5966a62745fdf14168c  gcc/testsuite/gfortran.dg/submodule_2.f08
  43bb9cc7a18987bdea7408e3ee156485  gcc/testsuite/gfortran.dg/submodule_20.f08
  970aae252f9aced89cf731d6e1ee1a88  gcc/testsuite/gfortran.dg/submodule_21.f08
  2d6b9c10ee531746fc5c371c23349641  gcc/testsuite/gfortran.dg/submodule_22.f08
*************** ed46c8518346f2d7541fbd9f524634aa  gcc/te
*** 53163,53357 ****
  ccb4961f10894d6cecba430ba5429481  gcc/testsuite/gfortran.dg/submodule_24.f08
  246b2f641ad26d811da35adb0b318bad  gcc/testsuite/gfortran.dg/submodule_25.f08
  1a357d1a6209523cf7353089bac999dd  gcc/testsuite/gfortran.dg/submodule_26.f08
! e1ecc346f86103555c66ea6afae29102  gcc/testsuite/gfortran.dg/submodule_27.f08
! d1663fd4e1368341812629ea5580dde9  gcc/testsuite/gfortran.dg/submodule_28.f08
! 147400141f6bbfa5c2a66612b85d0557  gcc/testsuite/gfortran.dg/submodule_29.f08
  aa943f2bec85bb461999d2cb2adfc73a  gcc/testsuite/gfortran.dg/submodule_3.f08
  68f9f70d888318a31160ba732171726f  gcc/testsuite/gfortran.dg/submodule_4.f08
! 1fbed56af4313e533e45631365afe8d6  gcc/testsuite/gfortran.dg/submodule_5.f08
! ab6a5345256483144d5cd961b6f2889c  gcc/testsuite/gfortran.dg/submodule_6.f08
! 9260d8751498c534d5adf93188acf408  gcc/testsuite/gfortran.dg/submodule_7.f08
! f3eff99771f6559e1de72b2086332eb4  gcc/testsuite/gfortran.dg/submodule_8.f08
! 6476d97298d8d4ff99175be1787f7fef  gcc/testsuite/gfortran.dg/submodule_9.f08
  83aae3d2902f46d94fad6d8bc10e2163  gcc/testsuite/gfortran.dg/submodule_twice.f90
  83c3576872a648d3e88b3ed27521cda8  gcc/testsuite/gfortran.dg/submodule_unexp.f90
! 61ae637c594b34019ba57391c63641f5  gcc/testsuite/gfortran.dg/subnormal_1.f90
! 85239fd79e7a114b351469cf16cd3313  gcc/testsuite/gfortran.dg/subref_array_pointer_1.f90
! c2bd7e7682daec9150e75d2e85fbf8f9  gcc/testsuite/gfortran.dg/subref_array_pointer_2.f90
  6649bac79415db2a58d58487a25296a1  gcc/testsuite/gfortran.dg/subref_array_pointer_3.f90
! 6870e92f74631cde7316ebba15485330  gcc/testsuite/gfortran.dg/subref_array_pointer_4.f90
  71dffcb6221f7e2e83d5145dc8cb6398  gcc/testsuite/gfortran.dg/substr_1.f90
! 580288434e9346b5af337ac5b32dbd93  gcc/testsuite/gfortran.dg/substr_2.f
! 5efd48a9890debf4529a7efb0d892c93  gcc/testsuite/gfortran.dg/substr_3.f
! 54ca69a57360749ce53d66326de612bf  gcc/testsuite/gfortran.dg/substr_4.f
! bf66f208d7797887cee493a4d92891dc  gcc/testsuite/gfortran.dg/substr_5.f90
! 327b2a4eda3c6063869d2d5747b50364  gcc/testsuite/gfortran.dg/substr_6.f90
! a3ac12113c7dc116967444ab2f371495  gcc/testsuite/gfortran.dg/substr_alloc_string_comp_1.f90
  a925dc24dc88f988a2c3d72d6db706b6  gcc/testsuite/gfortran.dg/substring_equivalence.f90
  84bf7759315587d026e1a8e2d80563a7  gcc/testsuite/gfortran.dg/substring_integer_index.f90
! 30ac7a1d157a380b92404255c05e0ca3  gcc/testsuite/gfortran.dg/sum_init_expr.f03
! 79ed10d342278bf4bb9dafe0803f23a3  gcc/testsuite/gfortran.dg/sum_zero_array_1.f90
  a396a8f96432614ba5105975d1f15d38  gcc/testsuite/gfortran.dg/system_clock_1.f90
  0224a5946d88b059a3e270f56ffa697b  gcc/testsuite/gfortran.dg/system_clock_2.f90
! b7a62e7e66660ff27fee98bbb6e14702  gcc/testsuite/gfortran.dg/system_clock_3.f08
! 3b4201ec9c6aea178a28aa44df4df077  gcc/testsuite/gfortran.dg/t_editing.f
  c44df1b5d22bd3481e75627f7f0214f9  gcc/testsuite/gfortran.dg/tab_continuation.f
! a5cd2889d5b26628860e7d35908c096a  gcc/testsuite/gfortran.dg/temporary_1.f90
  b9668073458516366faa48a7cc09f2d3  gcc/testsuite/gfortran.dg/test_bind_c_parens.f03
  255b06daed4005b05a1ecbd6ba613761  gcc/testsuite/gfortran.dg/test_c_assoc.c
! c9f0cf78756c2fab307aaf7ba7991497  gcc/testsuite/gfortran.dg/test_com_block.f90
  fa7ba2e5c11da787ccd6270e1c5b47f8  gcc/testsuite/gfortran.dg/test_common_binding_labels.f03
  9ad43640e9f6b02a0d09ba051145c61e  gcc/testsuite/gfortran.dg/test_common_binding_labels_2.f03
  163f27302f6f575df83c94c8fff6c6cc  gcc/testsuite/gfortran.dg/test_common_binding_labels_2_main.f03
  3836879af4c1fdc3b8fa24479110206a  gcc/testsuite/gfortran.dg/test_common_binding_labels_3.f03
! 3bd9364dc02cc78335719630713b5da0  gcc/testsuite/gfortran.dg/test_common_binding_labels_3_main.f03
! 572add9ce576e5d13d45b4a0ea5ce175  gcc/testsuite/gfortran.dg/test_only_clause.f90
! 5424f3bff4c9d1e6157821ae991f0b7d  gcc/testsuite/gfortran.dg/tiny_1.f90
! 4daea39a2fe2e879af278efc47b3c78c  gcc/testsuite/gfortran.dg/tiny_2.f90
! 6937e112d2f28b8a8563f7228d88d5e1  gcc/testsuite/gfortran.dg/tl_editing.f90
  feae5c6b3876f53ada61b3aa3da68e31  gcc/testsuite/gfortran.dg/trans-mem-skel.f90
! 1776223c7f1911d6e858b889f1e34a05  gcc/testsuite/gfortran.dg/transfer_array_intrinsic_1.f90
! 6a175be32d12f31960a67cfe9115728b  gcc/testsuite/gfortran.dg/transfer_array_intrinsic_2.f90
! 98da4c56a2b46dfc741a9142ce8ceb12  gcc/testsuite/gfortran.dg/transfer_array_intrinsic_3.f90
! ba15d3550cc10aa9105eb30214e51185  gcc/testsuite/gfortran.dg/transfer_array_intrinsic_4.f90
  c5cef3aa9c3895b4e6b38e993481ff14  gcc/testsuite/gfortran.dg/transfer_array_intrinsic_5.f90
! 91007def11958955a860d4ca6b985427  gcc/testsuite/gfortran.dg/transfer_assumed_size_1.f90
  0d5a3d18a1eeb0de1ca65d86e1cd68f8  gcc/testsuite/gfortran.dg/transfer_check_1.f90
  9a2953b8d7639d3d68a7693a2cb88846  gcc/testsuite/gfortran.dg/transfer_check_2.f90
  b16324a7bb85ab60eb71418a0761e565  gcc/testsuite/gfortran.dg/transfer_check_3.f90
  1374d10203871ed68c005e2af626fbeb  gcc/testsuite/gfortran.dg/transfer_check_4.f90
  76406e3436f42466e7735ed9f5762bd7  gcc/testsuite/gfortran.dg/transfer_class_1.f90
! e04a0c2a5155b4b3487e9d55ea8525ce  gcc/testsuite/gfortran.dg/transfer_class_2.f90
  dc67674921059cc6c14a48ba9f6e8515  gcc/testsuite/gfortran.dg/transfer_hollerith_1.f90
! 3904bd497d546f0ea46afa8b0cc7e0f4  gcc/testsuite/gfortran.dg/transfer_intrinsic_1.f90
! 5f8c3382a00823fe2620469344806fa1  gcc/testsuite/gfortran.dg/transfer_intrinsic_2.f90
! 555fb529d24597e1674b14b43dd22a0a  gcc/testsuite/gfortran.dg/transfer_intrinsic_3.f90
  ea5b93d114291b99d509c890190b87e6  gcc/testsuite/gfortran.dg/transfer_intrinsic_4.f
! 1436414e1567857b5667b2b6403a5f18  gcc/testsuite/gfortran.dg/transfer_intrinsic_5.f90
  07be770f3069b25db5431a5d88001a52  gcc/testsuite/gfortran.dg/transfer_intrinsic_6.f90
  d68fb0123f87274c2d884716d42b47b9  gcc/testsuite/gfortran.dg/transfer_null_1.f90
! fb06cac22180b4daf49f140f6a9ad4c3  gcc/testsuite/gfortran.dg/transfer_resolve_1.f90
  fca7571238596b88ba0b767cd69041d7  gcc/testsuite/gfortran.dg/transfer_resolve_2.f90
  82b9a61bd3e68f58dfdc2381ed5ca05c  gcc/testsuite/gfortran.dg/transfer_resolve_3.f90
  61dc845871f386f900b0ac50b8a1ed35  gcc/testsuite/gfortran.dg/transfer_resolve_4.f90
! 099850a87aba56ec7cc45b0bd6ddec3c  gcc/testsuite/gfortran.dg/transfer_simplify_1.f90
! 219217c8d0844a2d281c9287ca2dd74d  gcc/testsuite/gfortran.dg/transfer_simplify_10.f90
! 789da1b64102b3a56b850f5d9021f5ad  gcc/testsuite/gfortran.dg/transfer_simplify_11.f90
! 822e02d754b1ec692df3009472c2a165  gcc/testsuite/gfortran.dg/transfer_simplify_2.f90
! fec6159228c1b6437be318f47fd24431  gcc/testsuite/gfortran.dg/transfer_simplify_3.f90
! 068fb740f991d4d3229cf813e34fa2b7  gcc/testsuite/gfortran.dg/transfer_simplify_4.f90
  7a2c72c430eb2b6cf677f63ffc1ac705  gcc/testsuite/gfortran.dg/transfer_simplify_5.f90
  c21e0bfd8ee91a196124fe19178877fd  gcc/testsuite/gfortran.dg/transfer_simplify_6.f90
  cc3385c2618f833db398c0c9393afb6a  gcc/testsuite/gfortran.dg/transfer_simplify_7.f90
! c8c736f898bc903bf0ed5c9edb3be29d  gcc/testsuite/gfortran.dg/transfer_simplify_8.f90
! c0d16d1a673446033215c8abab6279a5  gcc/testsuite/gfortran.dg/transfer_simplify_9.f90
! 0f41fc8239525508a716c08a80330b2e  gcc/testsuite/gfortran.dg/transpose_1.f90
  6f9f3b95a613370e1acc3a70c798db3c  gcc/testsuite/gfortran.dg/transpose_2.f90
! 6503baacfaa43a834cdd5c3ef5e67451  gcc/testsuite/gfortran.dg/transpose_3.f03
! 643e4777dbb7af84c4b036a59b179fac  gcc/testsuite/gfortran.dg/transpose_4.f90
! 00cbe6b873bd1880822328184f523c16  gcc/testsuite/gfortran.dg/transpose_conjg_1.f90
! 0502b6dcdd05540c43dc077064b36be6  gcc/testsuite/gfortran.dg/transpose_intrinsic_func_call_1.f90
! 7d1413f888e57998f439abaf1d5acc18  gcc/testsuite/gfortran.dg/transpose_optimization_1.f90
! 834a572cf0b9ab21bcb35223b7f0604c  gcc/testsuite/gfortran.dg/transpose_optimization_2.f90
  32ed89d0a0d70ae9ee467c7ecd483ca3  gcc/testsuite/gfortran.dg/transpose_reshape_r10.f90
! 8f0fcb5b6ae6091c8cf6804033172847  gcc/testsuite/gfortran.dg/trim_1.f90
! 54074971f9e06fe0fb3d279d8ca2d674  gcc/testsuite/gfortran.dg/trim_optimize_1.f90
! 69c6b3114af9efdc955a4d9277f32125  gcc/testsuite/gfortran.dg/trim_optimize_2.f90
! 9f40c0653a949ac7ef209367c3b17621  gcc/testsuite/gfortran.dg/trim_optimize_3.f90
! 8eb4bb374b431bd8a127137e229e12a5  gcc/testsuite/gfortran.dg/trim_optimize_4.f90
! c5907a8aa90e5e07169010535954662e  gcc/testsuite/gfortran.dg/trim_optimize_5.f90
! 45e7ee496388f1e344779194a1d90592  gcc/testsuite/gfortran.dg/trim_optimize_6.f90
! bf482784098b0fb6e15009fbde26b025  gcc/testsuite/gfortran.dg/trim_optimize_7.f90
! 5859426c45c6ec27bb74704a72dd9afb  gcc/testsuite/gfortran.dg/trim_optimize_8.f90
  6506a123d51822842dbe5e02506d47b2  gcc/testsuite/gfortran.dg/type_decl_1.f90
  c0cc1239e52334af5a04ed643213a49a  gcc/testsuite/gfortran.dg/type_decl_2.f90
  2c63f395713929a496928e4aff896804  gcc/testsuite/gfortran.dg/type_decl_3.f90
  9eb2dbda6d1dd1e34890f2674a4eccae  gcc/testsuite/gfortran.dg/type_decl_4.f90
  ff2f764b4ce4d63b5d7f275525c26c9f  gcc/testsuite/gfortran.dg/type_is_1.f90
! b6b351a9a6361cfeabc7ee30143ed4ad  gcc/testsuite/gfortran.dg/type_to_class_1.f03
! 37644b30f4d8b85311b58a66b1a032ca  gcc/testsuite/gfortran.dg/type_to_class_2.f03
! 777dab94299146ad2d1d8f04887b11b7  gcc/testsuite/gfortran.dg/type_to_class_3.f03
  13fde3c7c86cb2097894981561ac0edb  gcc/testsuite/gfortran.dg/typebound_assignment_1.f03
  6c5b23546be836a08c83012dd0783dd1  gcc/testsuite/gfortran.dg/typebound_assignment_2.f03
  c574d56b20424111e8fc7f0d3f572ddb  gcc/testsuite/gfortran.dg/typebound_assignment_3.f03
  14a43d1dc93ef80eff5b1f4cf379f1dc  gcc/testsuite/gfortran.dg/typebound_assignment_4.f90
! 249726a2d429b1b061494d34f8a850e5  gcc/testsuite/gfortran.dg/typebound_assignment_5.f03
! a63b301173c2f934144e4be6337e9e13  gcc/testsuite/gfortran.dg/typebound_assignment_6.f03
! 99c1418e575b1b48c03eeb92117f2cc6  gcc/testsuite/gfortran.dg/typebound_assignment_7.f90
  63f5f7330df85d2fe251bccdc63ed27d  gcc/testsuite/gfortran.dg/typebound_assignment_8.f90
! 5369d345a143cf2ccebdbd49e20274aa  gcc/testsuite/gfortran.dg/typebound_call_1.f03
  0ad5689156e92fa36cab4d6e8da7f385  gcc/testsuite/gfortran.dg/typebound_call_10.f03
  7bdacf4cd0e572dbe1ee1b851ae96275  gcc/testsuite/gfortran.dg/typebound_call_11.f03
  46490b526091598a9658a1d250d045e6  gcc/testsuite/gfortran.dg/typebound_call_12.f03
! 763f8f7b40f482374b361464c117ae20  gcc/testsuite/gfortran.dg/typebound_call_13.f03
  438f8506b64a1473499802b0734f52b0  gcc/testsuite/gfortran.dg/typebound_call_14.f03
  1a4a382fd4cef5353a290e67f021fce9  gcc/testsuite/gfortran.dg/typebound_call_15.f03
  ed2098b0ec8c3c622e9c2107b7b188da  gcc/testsuite/gfortran.dg/typebound_call_16.f03
  bc4473a2aaf28f99551d675fa69f668f  gcc/testsuite/gfortran.dg/typebound_call_17.f03
! f9269758373d79e679302736b415cdd9  gcc/testsuite/gfortran.dg/typebound_call_18.f03
! 02722c27185824da05dcbc47da0af83d  gcc/testsuite/gfortran.dg/typebound_call_19.f03
! 8a69ec897376d01b80c77054ccc0043e  gcc/testsuite/gfortran.dg/typebound_call_2.f03
! cbd03a807a2992bcd9f3e43bf9f02fd8  gcc/testsuite/gfortran.dg/typebound_call_20.f03
  67bddeaf3f1aac764a1a2d6cde13a74f  gcc/testsuite/gfortran.dg/typebound_call_21.f03
  ae819334e5fdf2696689ff3cb31bb420  gcc/testsuite/gfortran.dg/typebound_call_22.f03
  61a6b4dd718fff8eb7fbfc73c71f3ff9  gcc/testsuite/gfortran.dg/typebound_call_23.f03
! c70bb629c62c1aa88bfa41b14306f0bb  gcc/testsuite/gfortran.dg/typebound_call_24.f03
! f095a1b7969fbd1fd5b158263d0779f8  gcc/testsuite/gfortran.dg/typebound_call_25.f90
  38c750df9a5a122b5fa6bae9ad7e4387  gcc/testsuite/gfortran.dg/typebound_call_26.f90
  a18db0f290273eb6ffb776a39e482c04  gcc/testsuite/gfortran.dg/typebound_call_27.f90
  d2d93582c21090659dca30ce13f7055b  gcc/testsuite/gfortran.dg/typebound_call_28.f90
! 9a5811f2a020d71586230bfc691759c1  gcc/testsuite/gfortran.dg/typebound_call_3.f03
  4cf1c294547d5f462319442857d5d0f4  gcc/testsuite/gfortran.dg/typebound_call_4.f03
  e439c1e36134811626e9fd4e06b46bd9  gcc/testsuite/gfortran.dg/typebound_call_5.f03
  638af9cb01e779b9373e39ceaaea38ae  gcc/testsuite/gfortran.dg/typebound_call_6.f03
  c08a71ec9ef9f4d3efc7444f683bf3ba  gcc/testsuite/gfortran.dg/typebound_call_7.f03
  8bb5cc4e3fcd900894029aaf2a450666  gcc/testsuite/gfortran.dg/typebound_call_8.f03
  0e014ea32573daed07e44b66d2b24da5  gcc/testsuite/gfortran.dg/typebound_call_9.f03
! 958aefb7b089904bf1ed765ca39df97a  gcc/testsuite/gfortran.dg/typebound_deferred_1.f90
  05fbb6f6c448f72acd8eeb8addc7e67b  gcc/testsuite/gfortran.dg/typebound_generic_1.f03
  7411d53be9d3e7f174ed2c69ceb7e32b  gcc/testsuite/gfortran.dg/typebound_generic_10.f03
  983462e0781728a2da8c69f47c5574fd  gcc/testsuite/gfortran.dg/typebound_generic_11.f90
! 59f96819a94c93fafda6aa4255197b1d  gcc/testsuite/gfortran.dg/typebound_generic_12.f03
! de028226074140a718c3c0ee55049838  gcc/testsuite/gfortran.dg/typebound_generic_13.f03
! b0231a94bd8f2884e93ab30ee111411e  gcc/testsuite/gfortran.dg/typebound_generic_14.f03
! 30c1827660f592dee082bfbdb76d283d  gcc/testsuite/gfortran.dg/typebound_generic_15.f90
  8342cf4df375bbf9d0cc9b4bb6028cae  gcc/testsuite/gfortran.dg/typebound_generic_16.f90
  49f0c24b421711b8a488c34f84429c2f  gcc/testsuite/gfortran.dg/typebound_generic_2.f03
  f560313f9140682d0a4c82e816a75fa1  gcc/testsuite/gfortran.dg/typebound_generic_3.f03
  930a825557bb70aab78950cd00bc351a  gcc/testsuite/gfortran.dg/typebound_generic_4.f03
! 7915c92d0019568d2655aa945bcbba57  gcc/testsuite/gfortran.dg/typebound_generic_5.f03
! eb6d507bb43a0fe8b41e90bc25d825aa  gcc/testsuite/gfortran.dg/typebound_generic_6.f03
  e8af63be9ae436e9221405ef17abc69e  gcc/testsuite/gfortran.dg/typebound_generic_7.f03
  ecc71cd6d82756285a18c16c977836a3  gcc/testsuite/gfortran.dg/typebound_generic_8.f03
! 0771a628a3caf153ecf734f7ad299275  gcc/testsuite/gfortran.dg/typebound_generic_9.f03
  9e1ffd61dea93c5ea96d4a94050e4184  gcc/testsuite/gfortran.dg/typebound_operator_1.f03
  105d96172bd2eddf7cfa5433e7dce03f  gcc/testsuite/gfortran.dg/typebound_operator_10.f03
  cdcf583b5e45cc2a1c17b917d632b276  gcc/testsuite/gfortran.dg/typebound_operator_11.f90
! 0561aec0ac202d2e7d4a6a22f00e3e5e  gcc/testsuite/gfortran.dg/typebound_operator_12.f03
! 8dcaf6d4bed48d781bf778f593f7f05e  gcc/testsuite/gfortran.dg/typebound_operator_13.f03
  1dc5969a5a731394a151df856f7f0982  gcc/testsuite/gfortran.dg/typebound_operator_14.f90
! 3d9cbbbf7f622c9c349250ef84c9b9f3  gcc/testsuite/gfortran.dg/typebound_operator_15.f90
! c4048d1316962bdfac9778e053901dfc  gcc/testsuite/gfortran.dg/typebound_operator_16.f03
  0ae86be55029fca92079e8fc7d98eba1  gcc/testsuite/gfortran.dg/typebound_operator_17.f90
! 7bde7428320ee998e08e8e07f5dc1ea3  gcc/testsuite/gfortran.dg/typebound_operator_18.f90
  6109430f6899356517f898692df26e9b  gcc/testsuite/gfortran.dg/typebound_operator_19.f90
  5f3c96941b279475857dc86caa259e97  gcc/testsuite/gfortran.dg/typebound_operator_2.f03
! 7002c2ecd1b22ace8e7586a45c537016  gcc/testsuite/gfortran.dg/typebound_operator_20.f90
  815596917e70f83c2b97b9e48191ea9a  gcc/testsuite/gfortran.dg/typebound_operator_21.f03
! 62c27193ce31348dff362d70299cedf6  gcc/testsuite/gfortran.dg/typebound_operator_3.f03
  fedf7b956040f6f16a43b80819a8f7de  gcc/testsuite/gfortran.dg/typebound_operator_4.f03
  a0ec0eaa57721661722789d40b59235f  gcc/testsuite/gfortran.dg/typebound_operator_5.f03
! 934f972fe0ba9a2aa34d4e20d88e5753  gcc/testsuite/gfortran.dg/typebound_operator_6.f03
! ac5c092dfb7ce6ee6fe91699bdf80f18  gcc/testsuite/gfortran.dg/typebound_operator_7.f03
! 0c58fec22dd189da2dfc82f61e1d2980  gcc/testsuite/gfortran.dg/typebound_operator_8.f03
! 6abcc1f7fb5a230fa4f857d7687d0c6b  gcc/testsuite/gfortran.dg/typebound_operator_9.f03
  9077555eeccde21e49ae58741abd43ac  gcc/testsuite/gfortran.dg/typebound_override_1.f90
  effa091894b3e888f170c035d58686bb  gcc/testsuite/gfortran.dg/typebound_override_2.f90
! c9aeca1e7c268b3e0cbe5461cbf85bcd  gcc/testsuite/gfortran.dg/typebound_override_3.f90
! dfe56985ac49b60e7afb7d6be50c095c  gcc/testsuite/gfortran.dg/typebound_override_4.f90
! 5bfbbe3ef28e2935b3492eec8f98423c  gcc/testsuite/gfortran.dg/typebound_override_5.f90
! 7642680359ac19ae7c62ac52ac7db879  gcc/testsuite/gfortran.dg/typebound_override_6.f90
! 093615c064d7ca1927d3aa2e4c63e51e  gcc/testsuite/gfortran.dg/typebound_override_7.f90
  b8f4745b35601a2d347854f6571f941c  gcc/testsuite/gfortran.dg/typebound_proc_1.f08
  2dc3ab48b20eb9f992bdb4c1579776d1  gcc/testsuite/gfortran.dg/typebound_proc_10.f03
  832e1f61727ceca8dd5bde39eb1ca531  gcc/testsuite/gfortran.dg/typebound_proc_11.f03
--- 56913,57117 ----
  ccb4961f10894d6cecba430ba5429481  gcc/testsuite/gfortran.dg/submodule_24.f08
  246b2f641ad26d811da35adb0b318bad  gcc/testsuite/gfortran.dg/submodule_25.f08
  1a357d1a6209523cf7353089bac999dd  gcc/testsuite/gfortran.dg/submodule_26.f08
! b95ab185af1650bbc03d926b4c997f34  gcc/testsuite/gfortran.dg/submodule_27.f08
! 2556178f63b62be3c8d8c44286c96911  gcc/testsuite/gfortran.dg/submodule_28.f08
! 30a5538a3f43dcf5de9806f617542ec6  gcc/testsuite/gfortran.dg/submodule_29.f08
  aa943f2bec85bb461999d2cb2adfc73a  gcc/testsuite/gfortran.dg/submodule_3.f08
+ 1150b8f6fefdb0cd92bc1b1145ca90bd  gcc/testsuite/gfortran.dg/submodule_30.f08
+ 701cab3628ee98dbcccc1d64e72d4ed6  gcc/testsuite/gfortran.dg/submodule_31.f08
  68f9f70d888318a31160ba732171726f  gcc/testsuite/gfortran.dg/submodule_4.f08
! d470cf2de70b478f82f67f0729c09b76  gcc/testsuite/gfortran.dg/submodule_5.f08
! 125419a41557152ac79de8af903ef20a  gcc/testsuite/gfortran.dg/submodule_6.f08
! 8b4b5d6a33ef9520206432c7652a183f  gcc/testsuite/gfortran.dg/submodule_7.f08
! 0588325ee7072ce91be610f63a4baee1  gcc/testsuite/gfortran.dg/submodule_8.f08
! bbf9d850641248605c066ac6bca34a54  gcc/testsuite/gfortran.dg/submodule_9.f08
  83aae3d2902f46d94fad6d8bc10e2163  gcc/testsuite/gfortran.dg/submodule_twice.f90
  83c3576872a648d3e88b3ed27521cda8  gcc/testsuite/gfortran.dg/submodule_unexp.f90
! 4b03a1050fa7469f4a1b8a73b6c04f2f  gcc/testsuite/gfortran.dg/subnormal_1.f90
! ccb2c405c07377f7654e2eb4d44d2805  gcc/testsuite/gfortran.dg/subref_array_pointer_1.f90
! b48b0b0bccb7566825a45154da80da66  gcc/testsuite/gfortran.dg/subref_array_pointer_2.f90
  6649bac79415db2a58d58487a25296a1  gcc/testsuite/gfortran.dg/subref_array_pointer_3.f90
! 83b134baa29f5debbbf70eaa30934d43  gcc/testsuite/gfortran.dg/subref_array_pointer_4.f90
  71dffcb6221f7e2e83d5145dc8cb6398  gcc/testsuite/gfortran.dg/substr_1.f90
! 26d39d8e4442b239b8381f23828d8c08  gcc/testsuite/gfortran.dg/substr_2.f
! dccf53db514265c48f2c92d1e6aa8319  gcc/testsuite/gfortran.dg/substr_3.f
! 6d054e85164109252d8cb0e433ff57ad  gcc/testsuite/gfortran.dg/substr_4.f
! 9cbfabac96be8748ebd2e7c0bed4bb91  gcc/testsuite/gfortran.dg/substr_5.f90
! 6fc9f98159d986738e731d5b07a7109b  gcc/testsuite/gfortran.dg/substr_6.f90
! 5aacec7f3b63a41c71f1f83e8d5bcdb0  gcc/testsuite/gfortran.dg/substr_7.f90
! acc5d5ef0b41f88cee2142a7f82c4fe1  gcc/testsuite/gfortran.dg/substr_alloc_string_comp_1.f90
  a925dc24dc88f988a2c3d72d6db706b6  gcc/testsuite/gfortran.dg/substring_equivalence.f90
  84bf7759315587d026e1a8e2d80563a7  gcc/testsuite/gfortran.dg/substring_integer_index.f90
! 84e210a9e07675721302c604b7c706f8  gcc/testsuite/gfortran.dg/sum_init_expr.f03
! 30d06b9e964f9e56b5a13c857c5c89e8  gcc/testsuite/gfortran.dg/sum_zero_array_1.f90
  a396a8f96432614ba5105975d1f15d38  gcc/testsuite/gfortran.dg/system_clock_1.f90
  0224a5946d88b059a3e270f56ffa697b  gcc/testsuite/gfortran.dg/system_clock_2.f90
! 97033a019176e90709df47b0f178a8ea  gcc/testsuite/gfortran.dg/system_clock_3.f08
! 8e267cb653bd786b2d52174413cdf5c5  gcc/testsuite/gfortran.dg/t_editing.f
  c44df1b5d22bd3481e75627f7f0214f9  gcc/testsuite/gfortran.dg/tab_continuation.f
! f5ffda893867e5bb3e11896536b411b9  gcc/testsuite/gfortran.dg/team_change_1.f90
! 9ad3f21542a6018c6af843e0389b2a4e  gcc/testsuite/gfortran.dg/team_end_1.f90
! a579a2ebae177c6c8937cb2a5faa8bb7  gcc/testsuite/gfortran.dg/team_form_1.f90
! 15ed3e89c4ebdef04cdbb00f244e973d  gcc/testsuite/gfortran.dg/team_number_1.f90
! 6c122fbf3d741247673a2078eece276c  gcc/testsuite/gfortran.dg/temporary_1.f90
  b9668073458516366faa48a7cc09f2d3  gcc/testsuite/gfortran.dg/test_bind_c_parens.f03
  255b06daed4005b05a1ecbd6ba613761  gcc/testsuite/gfortran.dg/test_c_assoc.c
! 408dba769fa4a658391365108592fe02  gcc/testsuite/gfortran.dg/test_com_block.f90
  fa7ba2e5c11da787ccd6270e1c5b47f8  gcc/testsuite/gfortran.dg/test_common_binding_labels.f03
  9ad43640e9f6b02a0d09ba051145c61e  gcc/testsuite/gfortran.dg/test_common_binding_labels_2.f03
  163f27302f6f575df83c94c8fff6c6cc  gcc/testsuite/gfortran.dg/test_common_binding_labels_2_main.f03
  3836879af4c1fdc3b8fa24479110206a  gcc/testsuite/gfortran.dg/test_common_binding_labels_3.f03
! f26641a54df644cd8b50bc3607f8e58a  gcc/testsuite/gfortran.dg/test_common_binding_labels_3_main.f03
! 661223f9174a0791db7951fb3873b871  gcc/testsuite/gfortran.dg/test_only_clause.f90
! 02a0f9e15b7cb2adb9552be3add057ec  gcc/testsuite/gfortran.dg/tiny_1.f90
! 5ec4af2f4267209dca625981c15b351d  gcc/testsuite/gfortran.dg/tiny_2.f90
! aa8d0dae2b0e7305b491dfc5d56bf690  gcc/testsuite/gfortran.dg/tl_editing.f90
  feae5c6b3876f53ada61b3aa3da68e31  gcc/testsuite/gfortran.dg/trans-mem-skel.f90
! 17ebfdfde9676d9fe30bf6cfdead22cb  gcc/testsuite/gfortran.dg/transfer_array_intrinsic_1.f90
! 4de99cf02dd1858adb81f3bca39064d4  gcc/testsuite/gfortran.dg/transfer_array_intrinsic_2.f90
! c00e10e2dedc2a4d4050941a3ae36ab2  gcc/testsuite/gfortran.dg/transfer_array_intrinsic_3.f90
! d175a283aab741037bd1bdee76a76fa5  gcc/testsuite/gfortran.dg/transfer_array_intrinsic_4.f90
  c5cef3aa9c3895b4e6b38e993481ff14  gcc/testsuite/gfortran.dg/transfer_array_intrinsic_5.f90
! fdabd8c65dcb8fb1bfe06c29c937c219  gcc/testsuite/gfortran.dg/transfer_assumed_size_1.f90
  0d5a3d18a1eeb0de1ca65d86e1cd68f8  gcc/testsuite/gfortran.dg/transfer_check_1.f90
  9a2953b8d7639d3d68a7693a2cb88846  gcc/testsuite/gfortran.dg/transfer_check_2.f90
  b16324a7bb85ab60eb71418a0761e565  gcc/testsuite/gfortran.dg/transfer_check_3.f90
  1374d10203871ed68c005e2af626fbeb  gcc/testsuite/gfortran.dg/transfer_check_4.f90
  76406e3436f42466e7735ed9f5762bd7  gcc/testsuite/gfortran.dg/transfer_class_1.f90
! 7f1199fe5fa90085dcbb4f81cbcf7062  gcc/testsuite/gfortran.dg/transfer_class_2.f90
  dc67674921059cc6c14a48ba9f6e8515  gcc/testsuite/gfortran.dg/transfer_hollerith_1.f90
! adc172acf631bf550ac06d92fba37d99  gcc/testsuite/gfortran.dg/transfer_intrinsic_1.f90
! e26ab1b7e21f778b1135b8600958bcd1  gcc/testsuite/gfortran.dg/transfer_intrinsic_2.f90
! 18381ef13ccd5d9178f169ef2ea37770  gcc/testsuite/gfortran.dg/transfer_intrinsic_3.f90
  ea5b93d114291b99d509c890190b87e6  gcc/testsuite/gfortran.dg/transfer_intrinsic_4.f
! 83824a79b77e8dce3ee9ad196bd94ac7  gcc/testsuite/gfortran.dg/transfer_intrinsic_5.f90
  07be770f3069b25db5431a5d88001a52  gcc/testsuite/gfortran.dg/transfer_intrinsic_6.f90
  d68fb0123f87274c2d884716d42b47b9  gcc/testsuite/gfortran.dg/transfer_null_1.f90
! 65282c52f64f083fe05307e59441c346  gcc/testsuite/gfortran.dg/transfer_resolve_1.f90
  fca7571238596b88ba0b767cd69041d7  gcc/testsuite/gfortran.dg/transfer_resolve_2.f90
  82b9a61bd3e68f58dfdc2381ed5ca05c  gcc/testsuite/gfortran.dg/transfer_resolve_3.f90
  61dc845871f386f900b0ac50b8a1ed35  gcc/testsuite/gfortran.dg/transfer_resolve_4.f90
! 30d8f168d50a2e4c7035918791efd17a  gcc/testsuite/gfortran.dg/transfer_simplify_1.f90
! 0e37859572cdbc7ec9804e5e5f50a0d9  gcc/testsuite/gfortran.dg/transfer_simplify_10.f90
! 28072dd7f3eef057672f7c38728a4ba6  gcc/testsuite/gfortran.dg/transfer_simplify_11.f90
! 37010897279c0577b0975bdcac554324  gcc/testsuite/gfortran.dg/transfer_simplify_2.f90
! dde58017dce31b9f86dea653194c266e  gcc/testsuite/gfortran.dg/transfer_simplify_3.f90
! f969144a4ccabad799704e5ecdde6afc  gcc/testsuite/gfortran.dg/transfer_simplify_4.f90
  7a2c72c430eb2b6cf677f63ffc1ac705  gcc/testsuite/gfortran.dg/transfer_simplify_5.f90
  c21e0bfd8ee91a196124fe19178877fd  gcc/testsuite/gfortran.dg/transfer_simplify_6.f90
  cc3385c2618f833db398c0c9393afb6a  gcc/testsuite/gfortran.dg/transfer_simplify_7.f90
! 14eead4116aeea2754a05cef0e207a21  gcc/testsuite/gfortran.dg/transfer_simplify_8.f90
! 8011b40cf1f0e784fc31b2fc88d1d98e  gcc/testsuite/gfortran.dg/transfer_simplify_9.f90
! 1ee61b0fe4f1158c85f98013920f31aa  gcc/testsuite/gfortran.dg/transpose_1.f90
  6f9f3b95a613370e1acc3a70c798db3c  gcc/testsuite/gfortran.dg/transpose_2.f90
! b7485082d61fffaf492190e4c29bed35  gcc/testsuite/gfortran.dg/transpose_3.f03
! aca4fbb65d8aa4cc8ec405a43a78098c  gcc/testsuite/gfortran.dg/transpose_4.f90
! 478c89f389bf3278481bc92533e8e66c  gcc/testsuite/gfortran.dg/transpose_conjg_1.f90
! 3cf036b7034efaa23bd3d26ca8cf3283  gcc/testsuite/gfortran.dg/transpose_intrinsic_func_call_1.f90
! 85db2a6cf6ca2d6c94792c2d028ff272  gcc/testsuite/gfortran.dg/transpose_optimization_1.f90
! 3452ac23a0b7a9067800b408ea30bded  gcc/testsuite/gfortran.dg/transpose_optimization_2.f90
  32ed89d0a0d70ae9ee467c7ecd483ca3  gcc/testsuite/gfortran.dg/transpose_reshape_r10.f90
! 250cd83d324826e163003cc65309e6c3  gcc/testsuite/gfortran.dg/trim_1.f90
! f7b65ba4a0bca5d191b122de209dc237  gcc/testsuite/gfortran.dg/trim_optimize_1.f90
! 64b094992df6f196a8eec88d8248b009  gcc/testsuite/gfortran.dg/trim_optimize_2.f90
! 34f9ca6c01dd096288d082b462fc66bc  gcc/testsuite/gfortran.dg/trim_optimize_3.f90
! 0c642c39144d9daa1b61536f14ef916d  gcc/testsuite/gfortran.dg/trim_optimize_4.f90
! 1e584eaed305f536ea1a881413dce686  gcc/testsuite/gfortran.dg/trim_optimize_5.f90
! 086c584fc6a653f1d258f3157f9dfa6c  gcc/testsuite/gfortran.dg/trim_optimize_6.f90
! c77b00b7235962a02d7bde8bcd17b20f  gcc/testsuite/gfortran.dg/trim_optimize_7.f90
! c3562b25bbde0ac0aeb749a4afe59879  gcc/testsuite/gfortran.dg/trim_optimize_8.f90
  6506a123d51822842dbe5e02506d47b2  gcc/testsuite/gfortran.dg/type_decl_1.f90
  c0cc1239e52334af5a04ed643213a49a  gcc/testsuite/gfortran.dg/type_decl_2.f90
  2c63f395713929a496928e4aff896804  gcc/testsuite/gfortran.dg/type_decl_3.f90
  9eb2dbda6d1dd1e34890f2674a4eccae  gcc/testsuite/gfortran.dg/type_decl_4.f90
  ff2f764b4ce4d63b5d7f275525c26c9f  gcc/testsuite/gfortran.dg/type_is_1.f90
! 7db061a54fcd1fe50dd761bc1b281c79  gcc/testsuite/gfortran.dg/type_to_class_1.f03
! a581b4a246199727cb7f3cfbc50daf0a  gcc/testsuite/gfortran.dg/type_to_class_2.f03
! d92cb848a0308b1bcea693e043de8c76  gcc/testsuite/gfortran.dg/type_to_class_3.f03
! 6df56ce7512093e6345528a56bde4966  gcc/testsuite/gfortran.dg/type_to_class_4.f03
! 0f0b8b7cfff43f982b52207671a6925c  gcc/testsuite/gfortran.dg/type_to_class_5.f03
  13fde3c7c86cb2097894981561ac0edb  gcc/testsuite/gfortran.dg/typebound_assignment_1.f03
  6c5b23546be836a08c83012dd0783dd1  gcc/testsuite/gfortran.dg/typebound_assignment_2.f03
  c574d56b20424111e8fc7f0d3f572ddb  gcc/testsuite/gfortran.dg/typebound_assignment_3.f03
  14a43d1dc93ef80eff5b1f4cf379f1dc  gcc/testsuite/gfortran.dg/typebound_assignment_4.f90
! 502da58f5bc657738223e489f11f6246  gcc/testsuite/gfortran.dg/typebound_assignment_5.f03
! ebedc688acb10029d528083fdfb677b0  gcc/testsuite/gfortran.dg/typebound_assignment_6.f03
! 1b27239cd4e39b7e5fb9b4c7026741b8  gcc/testsuite/gfortran.dg/typebound_assignment_7.f90
  63f5f7330df85d2fe251bccdc63ed27d  gcc/testsuite/gfortran.dg/typebound_assignment_8.f90
! edaa0e7c261cbc9222158fc50e609501  gcc/testsuite/gfortran.dg/typebound_call_1.f03
  0ad5689156e92fa36cab4d6e8da7f385  gcc/testsuite/gfortran.dg/typebound_call_10.f03
  7bdacf4cd0e572dbe1ee1b851ae96275  gcc/testsuite/gfortran.dg/typebound_call_11.f03
  46490b526091598a9658a1d250d045e6  gcc/testsuite/gfortran.dg/typebound_call_12.f03
! 25aa42c9a77d669f12b51439d102f4e5  gcc/testsuite/gfortran.dg/typebound_call_13.f03
  438f8506b64a1473499802b0734f52b0  gcc/testsuite/gfortran.dg/typebound_call_14.f03
  1a4a382fd4cef5353a290e67f021fce9  gcc/testsuite/gfortran.dg/typebound_call_15.f03
  ed2098b0ec8c3c622e9c2107b7b188da  gcc/testsuite/gfortran.dg/typebound_call_16.f03
  bc4473a2aaf28f99551d675fa69f668f  gcc/testsuite/gfortran.dg/typebound_call_17.f03
! 77845cb7b65880e8783ae9891f951865  gcc/testsuite/gfortran.dg/typebound_call_18.f03
! 9019c48b2f7bd98c9018a63987472046  gcc/testsuite/gfortran.dg/typebound_call_19.f03
! b60aedd89a49deff08c86a7d60b68c51  gcc/testsuite/gfortran.dg/typebound_call_2.f03
! 6b12f1d602ea65599a050f792fe357f6  gcc/testsuite/gfortran.dg/typebound_call_20.f03
  67bddeaf3f1aac764a1a2d6cde13a74f  gcc/testsuite/gfortran.dg/typebound_call_21.f03
  ae819334e5fdf2696689ff3cb31bb420  gcc/testsuite/gfortran.dg/typebound_call_22.f03
  61a6b4dd718fff8eb7fbfc73c71f3ff9  gcc/testsuite/gfortran.dg/typebound_call_23.f03
! 61c17aa3a99394cf5ad569789e9cecf1  gcc/testsuite/gfortran.dg/typebound_call_24.f03
! eaa7b651fe3b13ff9f0d8fd0e85e6612  gcc/testsuite/gfortran.dg/typebound_call_25.f90
  38c750df9a5a122b5fa6bae9ad7e4387  gcc/testsuite/gfortran.dg/typebound_call_26.f90
  a18db0f290273eb6ffb776a39e482c04  gcc/testsuite/gfortran.dg/typebound_call_27.f90
  d2d93582c21090659dca30ce13f7055b  gcc/testsuite/gfortran.dg/typebound_call_28.f90
! 9a7acb3533963ec283150ba49e475f11  gcc/testsuite/gfortran.dg/typebound_call_29.f90
! a7a4f548757bb5cae91204ded14b3798  gcc/testsuite/gfortran.dg/typebound_call_3.f03
  4cf1c294547d5f462319442857d5d0f4  gcc/testsuite/gfortran.dg/typebound_call_4.f03
  e439c1e36134811626e9fd4e06b46bd9  gcc/testsuite/gfortran.dg/typebound_call_5.f03
  638af9cb01e779b9373e39ceaaea38ae  gcc/testsuite/gfortran.dg/typebound_call_6.f03
  c08a71ec9ef9f4d3efc7444f683bf3ba  gcc/testsuite/gfortran.dg/typebound_call_7.f03
  8bb5cc4e3fcd900894029aaf2a450666  gcc/testsuite/gfortran.dg/typebound_call_8.f03
  0e014ea32573daed07e44b66d2b24da5  gcc/testsuite/gfortran.dg/typebound_call_9.f03
! eeef03cab178f3a7ec21991f41e0fdab  gcc/testsuite/gfortran.dg/typebound_deferred_1.f90
  05fbb6f6c448f72acd8eeb8addc7e67b  gcc/testsuite/gfortran.dg/typebound_generic_1.f03
  7411d53be9d3e7f174ed2c69ceb7e32b  gcc/testsuite/gfortran.dg/typebound_generic_10.f03
  983462e0781728a2da8c69f47c5574fd  gcc/testsuite/gfortran.dg/typebound_generic_11.f90
! 42a40c887cc44b8483dca8d2bef3d2a3  gcc/testsuite/gfortran.dg/typebound_generic_12.f03
! 522a806ee3fa0a61f0e81365ee22588e  gcc/testsuite/gfortran.dg/typebound_generic_13.f03
! 07d937558676bd6854d80ba4b2305069  gcc/testsuite/gfortran.dg/typebound_generic_14.f03
! 6cd5105815f2fadba757fb30c0504356  gcc/testsuite/gfortran.dg/typebound_generic_15.f90
  8342cf4df375bbf9d0cc9b4bb6028cae  gcc/testsuite/gfortran.dg/typebound_generic_16.f90
  49f0c24b421711b8a488c34f84429c2f  gcc/testsuite/gfortran.dg/typebound_generic_2.f03
  f560313f9140682d0a4c82e816a75fa1  gcc/testsuite/gfortran.dg/typebound_generic_3.f03
  930a825557bb70aab78950cd00bc351a  gcc/testsuite/gfortran.dg/typebound_generic_4.f03
! 2ae05e1ad32050a344a77867703362e3  gcc/testsuite/gfortran.dg/typebound_generic_5.f03
! 443cdb44a200539b892910f11275e342  gcc/testsuite/gfortran.dg/typebound_generic_6.f03
  e8af63be9ae436e9221405ef17abc69e  gcc/testsuite/gfortran.dg/typebound_generic_7.f03
  ecc71cd6d82756285a18c16c977836a3  gcc/testsuite/gfortran.dg/typebound_generic_8.f03
! 20dd40319106957394837b99efe40c83  gcc/testsuite/gfortran.dg/typebound_generic_9.f03
  9e1ffd61dea93c5ea96d4a94050e4184  gcc/testsuite/gfortran.dg/typebound_operator_1.f03
  105d96172bd2eddf7cfa5433e7dce03f  gcc/testsuite/gfortran.dg/typebound_operator_10.f03
  cdcf583b5e45cc2a1c17b917d632b276  gcc/testsuite/gfortran.dg/typebound_operator_11.f90
! f3bcf5b6a2de93fff22cc223b0d2fae5  gcc/testsuite/gfortran.dg/typebound_operator_12.f03
! 42f51f75179c560f60e2bd19affd12b3  gcc/testsuite/gfortran.dg/typebound_operator_13.f03
  1dc5969a5a731394a151df856f7f0982  gcc/testsuite/gfortran.dg/typebound_operator_14.f90
! c835566e0945abc694d87337a172ee3f  gcc/testsuite/gfortran.dg/typebound_operator_15.f90
! 950a749913ffe78be0c5b633ef4e859c  gcc/testsuite/gfortran.dg/typebound_operator_16.f03
  0ae86be55029fca92079e8fc7d98eba1  gcc/testsuite/gfortran.dg/typebound_operator_17.f90
! 7fcdf213775a940d61b24e9feea0d8d1  gcc/testsuite/gfortran.dg/typebound_operator_18.f90
  6109430f6899356517f898692df26e9b  gcc/testsuite/gfortran.dg/typebound_operator_19.f90
  5f3c96941b279475857dc86caa259e97  gcc/testsuite/gfortran.dg/typebound_operator_2.f03
! 0f00551c30fe24d2039a3e951de4ce0b  gcc/testsuite/gfortran.dg/typebound_operator_20.f90
  815596917e70f83c2b97b9e48191ea9a  gcc/testsuite/gfortran.dg/typebound_operator_21.f03
! 8f9377dd694f4cab5b6b3e0345bf8262  gcc/testsuite/gfortran.dg/typebound_operator_3.f03
  fedf7b956040f6f16a43b80819a8f7de  gcc/testsuite/gfortran.dg/typebound_operator_4.f03
  a0ec0eaa57721661722789d40b59235f  gcc/testsuite/gfortran.dg/typebound_operator_5.f03
! b01225b997ddba7ee9db87062bc5a857  gcc/testsuite/gfortran.dg/typebound_operator_6.f03
! fc77ad7640de51a39a00c4d3cfbe99dd  gcc/testsuite/gfortran.dg/typebound_operator_7.f03
! 4ed82c5b73a67b1e78a603febe15b707  gcc/testsuite/gfortran.dg/typebound_operator_8.f03
! 617d726be77dba676ba505425fd6f912  gcc/testsuite/gfortran.dg/typebound_operator_9.f03
  9077555eeccde21e49ae58741abd43ac  gcc/testsuite/gfortran.dg/typebound_override_1.f90
  effa091894b3e888f170c035d58686bb  gcc/testsuite/gfortran.dg/typebound_override_2.f90
! 9b3918cd86079c8c28a09632950a1ff5  gcc/testsuite/gfortran.dg/typebound_override_3.f90
! 41c002c26bfdf9f31e679df8300ac468  gcc/testsuite/gfortran.dg/typebound_override_4.f90
! 827256de228f15597034cc1d0f1622d8  gcc/testsuite/gfortran.dg/typebound_override_5.f90
! caf35ee5d7bd8239af7e208fa08a60f8  gcc/testsuite/gfortran.dg/typebound_override_6.f90
! c681bbbb1992f40314e6ef9157089d2a  gcc/testsuite/gfortran.dg/typebound_override_7.f90
  b8f4745b35601a2d347854f6571f941c  gcc/testsuite/gfortran.dg/typebound_proc_1.f08
  2dc3ab48b20eb9f992bdb4c1579776d1  gcc/testsuite/gfortran.dg/typebound_proc_10.f03
  832e1f61727ceca8dd5bde39eb1ca531  gcc/testsuite/gfortran.dg/typebound_proc_11.f03
*************** c36f04f0a672d8973620fa3d5d57b162  gcc/te
*** 53362,53387 ****
  a06d1fae378bbfce147f342a8741739c  gcc/testsuite/gfortran.dg/typebound_proc_16.f03
  47d226546a2528a67a49361dbdd91fc4  gcc/testsuite/gfortran.dg/typebound_proc_17.f03
  ec0716581c0ecd4e4df475984e3671f9  gcc/testsuite/gfortran.dg/typebound_proc_18.f03
! a677fab428848a236714b0fc66290d31  gcc/testsuite/gfortran.dg/typebound_proc_19.f90
  56f39be8ad56181a7aae0ecedaca1d31  gcc/testsuite/gfortran.dg/typebound_proc_2.f90
! 38dad104e452c4b85d13f9a4a4c5b0ce  gcc/testsuite/gfortran.dg/typebound_proc_20.f90
  c9950f221879107913e1f1744490b1c4  gcc/testsuite/gfortran.dg/typebound_proc_21.f90
  3461eb271d7982b2da05179e492e1deb  gcc/testsuite/gfortran.dg/typebound_proc_22.f90
! 5f00965e6c5da2218e20045d4a7e7ac0  gcc/testsuite/gfortran.dg/typebound_proc_23.f90
  a56e5f61ed1f96b90868d57e6ae7cc44  gcc/testsuite/gfortran.dg/typebound_proc_24.f03
  ce1af85f65e3c2bbe5e6d0be41f7630b  gcc/testsuite/gfortran.dg/typebound_proc_25.f90
  519c04f3282242a253bd7fa8517bbedf  gcc/testsuite/gfortran.dg/typebound_proc_26.f90
! f6ce409b35bfe680baf2eb6a418cfd56  gcc/testsuite/gfortran.dg/typebound_proc_27.f03
! e9021328816f5723aa15deb5c9f25744  gcc/testsuite/gfortran.dg/typebound_proc_28.f03
! d9f92de1e9ad0c38b43865e080ef2e61  gcc/testsuite/gfortran.dg/typebound_proc_29.f90
  3d956f557e018281bb8093e19c43052b  gcc/testsuite/gfortran.dg/typebound_proc_3.f03
! e037876e10ff67588872661e14eb5fe3  gcc/testsuite/gfortran.dg/typebound_proc_30.f90
! a0d15cb58d5be89e3ac3346c05d54cde  gcc/testsuite/gfortran.dg/typebound_proc_31.f90
! 535243935a3e86462ce476cfcbe5e3cf  gcc/testsuite/gfortran.dg/typebound_proc_32.f90
! 4b72996d3d40cfba872c79978844e194  gcc/testsuite/gfortran.dg/typebound_proc_33.f90
  917b6e6fd74a4efa4864899ecc42acb6  gcc/testsuite/gfortran.dg/typebound_proc_34.f90
! e97979b0f8627009589defb1d5445a99  gcc/testsuite/gfortran.dg/typebound_proc_35.f90
! 76e27e04cf7a7ab462a836597d503b47  gcc/testsuite/gfortran.dg/typebound_proc_36.f90
  5a85f8e544f2db7331aec686a5caf7ee  gcc/testsuite/gfortran.dg/typebound_proc_4.f03
  a7d68db5c429562164ea47edc8677d14  gcc/testsuite/gfortran.dg/typebound_proc_5.f03
  2bba47d31700cbba32684f0f2e15c7bc  gcc/testsuite/gfortran.dg/typebound_proc_6.f03
--- 57122,57147 ----
  a06d1fae378bbfce147f342a8741739c  gcc/testsuite/gfortran.dg/typebound_proc_16.f03
  47d226546a2528a67a49361dbdd91fc4  gcc/testsuite/gfortran.dg/typebound_proc_17.f03
  ec0716581c0ecd4e4df475984e3671f9  gcc/testsuite/gfortran.dg/typebound_proc_18.f03
! 1fd3b2490a756660dcb54ed4e8a3b12e  gcc/testsuite/gfortran.dg/typebound_proc_19.f90
  56f39be8ad56181a7aae0ecedaca1d31  gcc/testsuite/gfortran.dg/typebound_proc_2.f90
! 19a24acc63f328b731e2f45b3c7308fd  gcc/testsuite/gfortran.dg/typebound_proc_20.f90
  c9950f221879107913e1f1744490b1c4  gcc/testsuite/gfortran.dg/typebound_proc_21.f90
  3461eb271d7982b2da05179e492e1deb  gcc/testsuite/gfortran.dg/typebound_proc_22.f90
! 4aa5d4bec63b9932d6858e480ba626ab  gcc/testsuite/gfortran.dg/typebound_proc_23.f90
  a56e5f61ed1f96b90868d57e6ae7cc44  gcc/testsuite/gfortran.dg/typebound_proc_24.f03
  ce1af85f65e3c2bbe5e6d0be41f7630b  gcc/testsuite/gfortran.dg/typebound_proc_25.f90
  519c04f3282242a253bd7fa8517bbedf  gcc/testsuite/gfortran.dg/typebound_proc_26.f90
! 958aa35517898433de49c6fe55f922fa  gcc/testsuite/gfortran.dg/typebound_proc_27.f03
! ae0326cf99e9b68a162dcd9de923ab05  gcc/testsuite/gfortran.dg/typebound_proc_28.f03
! fc5ef7561c467edc56fa5c1f8a607979  gcc/testsuite/gfortran.dg/typebound_proc_29.f90
  3d956f557e018281bb8093e19c43052b  gcc/testsuite/gfortran.dg/typebound_proc_3.f03
! c6e090e400a15cd6ef9604a460b0fd25  gcc/testsuite/gfortran.dg/typebound_proc_30.f90
! f981528e3743691a3921acec000624f0  gcc/testsuite/gfortran.dg/typebound_proc_31.f90
! c6c7d4df1f4d51fa5130fff1d0bee014  gcc/testsuite/gfortran.dg/typebound_proc_32.f90
! 80118748fda4a19ed13d092eb63901c8  gcc/testsuite/gfortran.dg/typebound_proc_33.f90
  917b6e6fd74a4efa4864899ecc42acb6  gcc/testsuite/gfortran.dg/typebound_proc_34.f90
! 6f0db16d23971cc9286fbfc7285ac3a7  gcc/testsuite/gfortran.dg/typebound_proc_35.f90
! 2cda046fdaa5a4fe554a850e00141273  gcc/testsuite/gfortran.dg/typebound_proc_36.f90
  5a85f8e544f2db7331aec686a5caf7ee  gcc/testsuite/gfortran.dg/typebound_proc_4.f03
  a7d68db5c429562164ea47edc8677d14  gcc/testsuite/gfortran.dg/typebound_proc_5.f03
  2bba47d31700cbba32684f0f2e15c7bc  gcc/testsuite/gfortran.dg/typebound_proc_6.f03
*************** fb80981377fd06c0a07fcda56094a91b  gcc/te
*** 53391,53447 ****
  a9c38f145300eee1aaca2ccee4d418fd  gcc/testsuite/gfortran.dg/typed_subroutine_1.f90
  1623cb39a42976237e7817a8a94f1a4a  gcc/testsuite/gfortran.dg/unary_operator.f90
  0e692a977ecc4ab86f2eddee444794b4  gcc/testsuite/gfortran.dg/uncommon_block_data_1.f90
! 6f108a647e3b73bca74907355e7a2d85  gcc/testsuite/gfortran.dg/unconstrained_commons.f
! 2fb717fe29fa528056cd388b7064ce96  gcc/testsuite/gfortran.dg/underflow.f90
  a7494f7b00a8d4f7d5c77fd348f591b4  gcc/testsuite/gfortran.dg/unexp_attribute.f90
  39050472f0bc284f515f1898b0c79a2e  gcc/testsuite/gfortran.dg/unexpected_eof.f
  d2d68a7aaef314bb7285b15d1f2c4e4e  gcc/testsuite/gfortran.dg/unexpected_eof_2.f90
  d47649d2d1a61262a659a9351e0d0fa7  gcc/testsuite/gfortran.dg/unexpected_eof_3.f90
  3679bea1816efaf43208c44d9aa84928  gcc/testsuite/gfortran.dg/unexpected_eof_4.f90
  7b6179afe920e46575539bf900b34222  gcc/testsuite/gfortran.dg/unexpected_interface.f90
! deb2555ff248a9775b72c008e6de9795  gcc/testsuite/gfortran.dg/unf_io_convert_1.f90
! 52c34a568acefcf68e800ca5c3b7f7e8  gcc/testsuite/gfortran.dg/unf_io_convert_2.f90
! 16e2f8aee72f71cd6b32d200e66da3ef  gcc/testsuite/gfortran.dg/unf_io_convert_3.f90
! ee8d03929f4d61ca6a8f5a65ddacf3cf  gcc/testsuite/gfortran.dg/unf_io_convert_4.f90
! 649a91d5820853a43827a82f1861dcdc  gcc/testsuite/gfortran.dg/unf_read_corrupted_1.f90
! aa8b7dda77210b77a551d2bd749a4cd5  gcc/testsuite/gfortran.dg/unf_read_corrupted_2.f90
! b2894fa39de9e0d0ed80917f01ff6923  gcc/testsuite/gfortran.dg/unf_short_record_1.f90
! 949c855ab54f62d0c0579a3fd62a6d0e  gcc/testsuite/gfortran.dg/unformatted_recl_1.f90
! c8e503b708a47987b118d4f0994bd0b4  gcc/testsuite/gfortran.dg/unformatted_subrecord_1.f90
! f4f968a71251bd464432e9b764c176e3  gcc/testsuite/gfortran.dg/unit_1.f90
! 7dfedaeac35864310c309a5338d8f8d0  gcc/testsuite/gfortran.dg/unlimited_fmt_1.f08
! e37e8fa39cdb137d14534b658cdab2ca  gcc/testsuite/gfortran.dg/unlimited_polymorphic_1.f03
  e336504744585626d433619998a53bf4  gcc/testsuite/gfortran.dg/unlimited_polymorphic_10.f90
  cd287a2b16479e41f754113092c08925  gcc/testsuite/gfortran.dg/unlimited_polymorphic_11.f90
  5c157a9399b1fafe51470e1cc5abd2a2  gcc/testsuite/gfortran.dg/unlimited_polymorphic_12.f90
! 0ad90bc046ab38759744ae56a17d215f  gcc/testsuite/gfortran.dg/unlimited_polymorphic_13.f90
! 2f6fcddac3a73e2ab4f40a5548584665  gcc/testsuite/gfortran.dg/unlimited_polymorphic_14.f90
  af10bdc4e75faf8960c8c02fcb1cf9ae  gcc/testsuite/gfortran.dg/unlimited_polymorphic_15.f90
! 3ae1d55b18b2ef94645250a07ca83cad  gcc/testsuite/gfortran.dg/unlimited_polymorphic_16.f90
! 61f13b2b94c596460defcaa08ecb2a67  gcc/testsuite/gfortran.dg/unlimited_polymorphic_17.f90
! ce8cf44dfb4ba410329c47d58b1efd7b  gcc/testsuite/gfortran.dg/unlimited_polymorphic_18.f90
! 81cdd7208749892cd7203b71d3fedd85  gcc/testsuite/gfortran.dg/unlimited_polymorphic_19.f90
  e3703578f807dddc12e9d91738a4b709  gcc/testsuite/gfortran.dg/unlimited_polymorphic_2.f03
! 46ebb16b69004b6ca5e0cfcbf3ab684b  gcc/testsuite/gfortran.dg/unlimited_polymorphic_20.f90
! 4e348d5c13b21d015f0d4ba235131ade  gcc/testsuite/gfortran.dg/unlimited_polymorphic_21.f90
! b3a43bafc8e7200eb67008c977cfe543  gcc/testsuite/gfortran.dg/unlimited_polymorphic_22.f90
! 2eb58ce364074ffb399c7add62c12f20  gcc/testsuite/gfortran.dg/unlimited_polymorphic_23.f90
! 5c51743bf5cb7978bd362e772315eafd  gcc/testsuite/gfortran.dg/unlimited_polymorphic_24.f03
  704d788a688c20ca8301b043406fce3b  gcc/testsuite/gfortran.dg/unlimited_polymorphic_25.f03
! 2c2a072b05218226207ba40936fc82aa  gcc/testsuite/gfortran.dg/unlimited_polymorphic_25.f90
! 7bc0e1c2dd386e9692865fceeb21dffd  gcc/testsuite/gfortran.dg/unlimited_polymorphic_26.f90
  1ed74102999daaa6c4980638954407ec  gcc/testsuite/gfortran.dg/unlimited_polymorphic_27.f90
! a1930b128a7add0a89bb806192040714  gcc/testsuite/gfortran.dg/unlimited_polymorphic_3.f03
  27f9d22da25fab9449a6d82ad7501184  gcc/testsuite/gfortran.dg/unlimited_polymorphic_4.f03
! 0ba9f1a9802f64d7ebf0bbc66606237b  gcc/testsuite/gfortran.dg/unlimited_polymorphic_5.f90
! 77922855d5f19416bc6a859ef3ed99e6  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
! 5531d5c2ed331ce420c748e4d754d570  gcc/testsuite/gfortran.dg/unpack_init_expr.f03
  77425eab660cd99123828c97f2657ca9  gcc/testsuite/gfortran.dg/unpack_mask_1.f90
  21ad1ac865ebfe7d633e040a09836574  gcc/testsuite/gfortran.dg/unpack_zerosize_1.f90
  fbd9ec98233c6fecb3330e95ece01679  gcc/testsuite/gfortran.dg/unreferenced_use_assoc_1.f90
--- 57151,57209 ----
  a9c38f145300eee1aaca2ccee4d418fd  gcc/testsuite/gfortran.dg/typed_subroutine_1.f90
  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
! 16b7f45a2d175a9540ec055c77edad2a  gcc/testsuite/gfortran.dg/underflow.f90
  a7494f7b00a8d4f7d5c77fd348f591b4  gcc/testsuite/gfortran.dg/unexp_attribute.f90
  39050472f0bc284f515f1898b0c79a2e  gcc/testsuite/gfortran.dg/unexpected_eof.f
  d2d68a7aaef314bb7285b15d1f2c4e4e  gcc/testsuite/gfortran.dg/unexpected_eof_2.f90
  d47649d2d1a61262a659a9351e0d0fa7  gcc/testsuite/gfortran.dg/unexpected_eof_3.f90
  3679bea1816efaf43208c44d9aa84928  gcc/testsuite/gfortran.dg/unexpected_eof_4.f90
  7b6179afe920e46575539bf900b34222  gcc/testsuite/gfortran.dg/unexpected_interface.f90
! 753bcd5956a9bbdea1a3875c6a5af0d8  gcc/testsuite/gfortran.dg/unf_io_convert_1.f90
! fba7a3f764c4e70b93a12566de081733  gcc/testsuite/gfortran.dg/unf_io_convert_2.f90
! 9ac1da62933f21306727b999559538bc  gcc/testsuite/gfortran.dg/unf_io_convert_3.f90
! e0fd36da28b8de5efbdff70f3f200cfb  gcc/testsuite/gfortran.dg/unf_io_convert_4.f90
! 1f3c5b369abbb7440e12da7cc3bcd4f0  gcc/testsuite/gfortran.dg/unf_read_corrupted_1.f90
! 2d49c993248052a927174fd32e61540b  gcc/testsuite/gfortran.dg/unf_read_corrupted_2.f90
! 7c844cba0e38b815d49067773f28e590  gcc/testsuite/gfortran.dg/unf_short_record_1.f90
! 63185ab5f80a208647eabe7a86f67036  gcc/testsuite/gfortran.dg/unformatted_recl_1.f90
! d4d8bd848a80a271d5cec0d30aefe4a4  gcc/testsuite/gfortran.dg/unformatted_subrecord_1.f90
! b772f2057ff09d2637070d66e6ab4c96  gcc/testsuite/gfortran.dg/unit_1.f90
! 007ddcd692dd0d667d69422852df3244  gcc/testsuite/gfortran.dg/unlimited_fmt_1.f08
! 68856f8332b8ea898f41c1913cf43f83  gcc/testsuite/gfortran.dg/unlimited_polymorphic_1.f03
  e336504744585626d433619998a53bf4  gcc/testsuite/gfortran.dg/unlimited_polymorphic_10.f90
  cd287a2b16479e41f754113092c08925  gcc/testsuite/gfortran.dg/unlimited_polymorphic_11.f90
  5c157a9399b1fafe51470e1cc5abd2a2  gcc/testsuite/gfortran.dg/unlimited_polymorphic_12.f90
! f77fd5a3a7564cdecb23fd1efc6dd9a9  gcc/testsuite/gfortran.dg/unlimited_polymorphic_13.f90
! 0614e464a966dc4fb17b286f74da917b  gcc/testsuite/gfortran.dg/unlimited_polymorphic_14.f90
  af10bdc4e75faf8960c8c02fcb1cf9ae  gcc/testsuite/gfortran.dg/unlimited_polymorphic_15.f90
! 9069f1612ecaec755f6edac54efdaa18  gcc/testsuite/gfortran.dg/unlimited_polymorphic_16.f90
! 960a38340124fb7cc4000847f578be59  gcc/testsuite/gfortran.dg/unlimited_polymorphic_17.f90
! f31ac6ca72cdaf71b7502188bd6ae198  gcc/testsuite/gfortran.dg/unlimited_polymorphic_18.f90
! 5fdaf587e1d7de4edabb8cdaf99e875f  gcc/testsuite/gfortran.dg/unlimited_polymorphic_19.f90
  e3703578f807dddc12e9d91738a4b709  gcc/testsuite/gfortran.dg/unlimited_polymorphic_2.f03
! d1a8a5a441199df01760376e7036a19a  gcc/testsuite/gfortran.dg/unlimited_polymorphic_20.f90
! abba27a7d6ff9a2b115326ab5eb34647  gcc/testsuite/gfortran.dg/unlimited_polymorphic_21.f90
! 0b3a11ede512ab4cb2abcb9e1e042d24  gcc/testsuite/gfortran.dg/unlimited_polymorphic_22.f90
! 8728f941c5cac97cff7dc24499031fe4  gcc/testsuite/gfortran.dg/unlimited_polymorphic_23.f90
! 31491fb01bd296d79ed7771d2afa6d47  gcc/testsuite/gfortran.dg/unlimited_polymorphic_24.f03
  704d788a688c20ca8301b043406fce3b  gcc/testsuite/gfortran.dg/unlimited_polymorphic_25.f03
! c5c095a1207e8ebb9df3221cce7dd889  gcc/testsuite/gfortran.dg/unlimited_polymorphic_25.f90
! 2962b03e92b8de163aff58cd5c92f4b4  gcc/testsuite/gfortran.dg/unlimited_polymorphic_26.f90
  1ed74102999daaa6c4980638954407ec  gcc/testsuite/gfortran.dg/unlimited_polymorphic_27.f90
! ecade1b66b84e107c521641739e3cb99  gcc/testsuite/gfortran.dg/unlimited_polymorphic_28.f90
! 7e7a7ae9debf426cb9a72de5784be0f1  gcc/testsuite/gfortran.dg/unlimited_polymorphic_29.f90
! 9416e6463a32e0db92b1430a5ece704c  gcc/testsuite/gfortran.dg/unlimited_polymorphic_3.f03
  27f9d22da25fab9449a6d82ad7501184  gcc/testsuite/gfortran.dg/unlimited_polymorphic_4.f03
! 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
  21ad1ac865ebfe7d633e040a09836574  gcc/testsuite/gfortran.dg/unpack_zerosize_1.f90
  fbd9ec98233c6fecb3330e95ece01679  gcc/testsuite/gfortran.dg/unreferenced_use_assoc_1.f90
*************** fbd9ec98233c6fecb3330e95ece01679  gcc/te
*** 53449,53458 ****
  e129d02ece9c3131335abb4373cf1721  gcc/testsuite/gfortran.dg/unresolved_fixup_2.f90
  de05d2a4b7edcd1154264118b11a9a77  gcc/testsuite/gfortran.dg/unused_artificial_dummies_1.f90
  af23489c25cf37ffd216eb038f4a82d8  gcc/testsuite/gfortran.dg/use_1.f90
! c7e3f8f8a4fba4e7d49f3e4b94e8eab4  gcc/testsuite/gfortran.dg/use_10.f90
! 441b640af507700ef8e15945b45a2610  gcc/testsuite/gfortran.dg/use_11.f90
  71259a734476392fd9bd4328063ab4bd  gcc/testsuite/gfortran.dg/use_12.f90
! f1f635ffe74ae872ae5161531a683b7f  gcc/testsuite/gfortran.dg/use_13.f90
  02d37ad899915ac342daefcded6da39a  gcc/testsuite/gfortran.dg/use_14.f90
  2c3c63fcc3a92bf38c4f22303a13dcd2  gcc/testsuite/gfortran.dg/use_15.f90
  d62d0339c456b157f5fc35d29c279441  gcc/testsuite/gfortran.dg/use_16.f90
--- 57211,57220 ----
  e129d02ece9c3131335abb4373cf1721  gcc/testsuite/gfortran.dg/unresolved_fixup_2.f90
  de05d2a4b7edcd1154264118b11a9a77  gcc/testsuite/gfortran.dg/unused_artificial_dummies_1.f90
  af23489c25cf37ffd216eb038f4a82d8  gcc/testsuite/gfortran.dg/use_1.f90
! f6789d5bbf020938f286cfd7da2a68e2  gcc/testsuite/gfortran.dg/use_10.f90
! a5bacc6abd14312805d91c2c53d4d15e  gcc/testsuite/gfortran.dg/use_11.f90
  71259a734476392fd9bd4328063ab4bd  gcc/testsuite/gfortran.dg/use_12.f90
! 4fea03e3aefdee14f32f96947e3173a6  gcc/testsuite/gfortran.dg/use_13.f90
  02d37ad899915ac342daefcded6da39a  gcc/testsuite/gfortran.dg/use_14.f90
  2c3c63fcc3a92bf38c4f22303a13dcd2  gcc/testsuite/gfortran.dg/use_15.f90
  d62d0339c456b157f5fc35d29c279441  gcc/testsuite/gfortran.dg/use_16.f90
*************** d62d0339c456b157f5fc35d29c279441  gcc/te
*** 53464,53507 ****
  a6add3d78e0a5d8824bf5dc7a0bb3077  gcc/testsuite/gfortran.dg/use_21.f90
  2a29ea21f99a5898a93e9a2afbe93f35  gcc/testsuite/gfortran.dg/use_22.f90
  201e822ce431ac49cc71e68a022a9334  gcc/testsuite/gfortran.dg/use_23.f90
! b7fee6814c91e8eabf3a9b812c60942a  gcc/testsuite/gfortran.dg/use_24.f90
  11a63f89ae04899ae3232a6bcac4bf88  gcc/testsuite/gfortran.dg/use_25.f90
  b901a88b454d7825c0db0571e62c9944  gcc/testsuite/gfortran.dg/use_26.f90
! a1aea473d60b54462b6cf51bf868c93a  gcc/testsuite/gfortran.dg/use_27.f90
  5b57495125ee9306be1b2dd3b0ff762b  gcc/testsuite/gfortran.dg/use_28.f90
  aa0dfadd71d3f03426fb0f846d07e63b  gcc/testsuite/gfortran.dg/use_29.f90
  9ca8384adf4fc331598e3bcd1cbb8ffe  gcc/testsuite/gfortran.dg/use_3.f90
  0c64a8a6f9a898ee90f8cccc71a7f782  gcc/testsuite/gfortran.dg/use_4.f90
! c011e9a04d62e1471412a9cb947b4a99  gcc/testsuite/gfortran.dg/use_5.f90
  3ccf2307581a4141eac7b094a0461b40  gcc/testsuite/gfortran.dg/use_6.f90
  4c9006d723fb283367463dc0e53f1792  gcc/testsuite/gfortran.dg/use_7.f90
  d38ea460211b9bb867b36021bc67dc80  gcc/testsuite/gfortran.dg/use_8.f90
  89c1eec916d5c3d84c4f97ee1c99747a  gcc/testsuite/gfortran.dg/use_9.f90
! 3fbf4177ee06fcb76a0344d70e79d1b8  gcc/testsuite/gfortran.dg/use_allocated_1.f90
  29b41d1b9929855ce2d5ed33a9fe7d13  gcc/testsuite/gfortran.dg/use_iso_c_binding.f90
! 994c426df627b0c7e743710ea3e11f52  gcc/testsuite/gfortran.dg/use_only_1.f90
  2949dc3fa7229ee86f33eb0a01e7aa86  gcc/testsuite/gfortran.dg/use_only_2.f90
! 3e3317f081a6232ba40dafd984ff029e  gcc/testsuite/gfortran.dg/use_only_3.f90
  7005ad6464486a50c2bc9c94a84af493  gcc/testsuite/gfortran.dg/use_only_3.inc
! 26fdd2f3b7491d6bbfb3e53258c0dc75  gcc/testsuite/gfortran.dg/use_only_4.f90
  ed757944c5eca5f36eaa6c42a33c04db  gcc/testsuite/gfortran.dg/use_only_5.f90
  e67a4a11f35c66e08fb4bb3279634a7a  gcc/testsuite/gfortran.dg/use_only_6.f90
  6fac87544cba607bd825cef815200556  gcc/testsuite/gfortran.dg/use_rename_1.f90
! 7eca2286c7b9fbb5ec4493dc679d3302  gcc/testsuite/gfortran.dg/use_rename_2.f90
  56d36b08080e432e1860759131695014  gcc/testsuite/gfortran.dg/use_rename_3.f90
! d4dd79b7179b6279157fa22788ebb6fa  gcc/testsuite/gfortran.dg/use_rename_4.f90
  f915c7e347a13904541e64ecfbf96b9e  gcc/testsuite/gfortran.dg/use_rename_5.f90
  ad43c4d3cb4733e86d9206b28785afd0  gcc/testsuite/gfortran.dg/use_rename_6.f90
  da9a5416920599f30fb0c82c34d88084  gcc/testsuite/gfortran.dg/use_rename_7.f90
  2101a506b2c2f7a637be977cd5b76008  gcc/testsuite/gfortran.dg/use_rename_8.f90
! 377e6ef13d443f36582877a60050917b  gcc/testsuite/gfortran.dg/use_without_only_1.f90
  15c120470a7413dda29cbfafbfc57725  gcc/testsuite/gfortran.dg/used_before_typed_1.f90
  4f6c103439659c20e74976784818e299  gcc/testsuite/gfortran.dg/used_before_typed_2.f90
  bb95c123e31592731cdd870dc921de1d  gcc/testsuite/gfortran.dg/used_before_typed_3.f90
  7fba07e1f2a8eb6d4f590b9bd3f4470b  gcc/testsuite/gfortran.dg/used_before_typed_4.f90
  e0e1bd02d004d5cd3c1ca138bc2f0025  gcc/testsuite/gfortran.dg/used_before_typed_5.f90
  12a8df5700b813e27c867c02618fa548  gcc/testsuite/gfortran.dg/used_before_typed_6.f90
! fdcf9bfdd9450b6f6cf9915e936190e1  gcc/testsuite/gfortran.dg/used_dummy_types_1.f90
  1b482dce377e98f1cf6ba65db90c710c  gcc/testsuite/gfortran.dg/used_dummy_types_2.f90
  926e0a74aa2f2d473a7b3feb57e7d150  gcc/testsuite/gfortran.dg/used_dummy_types_3.f90
  d8fbaf49f0f1e614e393060ae3ad4fc1  gcc/testsuite/gfortran.dg/used_dummy_types_4.f90
--- 57226,57270 ----
  a6add3d78e0a5d8824bf5dc7a0bb3077  gcc/testsuite/gfortran.dg/use_21.f90
  2a29ea21f99a5898a93e9a2afbe93f35  gcc/testsuite/gfortran.dg/use_22.f90
  201e822ce431ac49cc71e68a022a9334  gcc/testsuite/gfortran.dg/use_23.f90
! d539c1e36fe08ad759cc76ea9db3a73d  gcc/testsuite/gfortran.dg/use_24.f90
  11a63f89ae04899ae3232a6bcac4bf88  gcc/testsuite/gfortran.dg/use_25.f90
  b901a88b454d7825c0db0571e62c9944  gcc/testsuite/gfortran.dg/use_26.f90
! 67db66930ac5c3e52e41d2f37510b9ee  gcc/testsuite/gfortran.dg/use_27.f90
  5b57495125ee9306be1b2dd3b0ff762b  gcc/testsuite/gfortran.dg/use_28.f90
  aa0dfadd71d3f03426fb0f846d07e63b  gcc/testsuite/gfortran.dg/use_29.f90
  9ca8384adf4fc331598e3bcd1cbb8ffe  gcc/testsuite/gfortran.dg/use_3.f90
+ e3915d16f4c6f728ab91bc8f9638bf61  gcc/testsuite/gfortran.dg/use_30.f90
  0c64a8a6f9a898ee90f8cccc71a7f782  gcc/testsuite/gfortran.dg/use_4.f90
! 4e842fdc63e80db58b1de3e5a39f4573  gcc/testsuite/gfortran.dg/use_5.f90
  3ccf2307581a4141eac7b094a0461b40  gcc/testsuite/gfortran.dg/use_6.f90
  4c9006d723fb283367463dc0e53f1792  gcc/testsuite/gfortran.dg/use_7.f90
  d38ea460211b9bb867b36021bc67dc80  gcc/testsuite/gfortran.dg/use_8.f90
  89c1eec916d5c3d84c4f97ee1c99747a  gcc/testsuite/gfortran.dg/use_9.f90
! 66ee3f28c287c856a6d941137daba81b  gcc/testsuite/gfortran.dg/use_allocated_1.f90
  29b41d1b9929855ce2d5ed33a9fe7d13  gcc/testsuite/gfortran.dg/use_iso_c_binding.f90
! 0815a5f295ad9faf095341a90f134162  gcc/testsuite/gfortran.dg/use_only_1.f90
  2949dc3fa7229ee86f33eb0a01e7aa86  gcc/testsuite/gfortran.dg/use_only_2.f90
! 77e322e7edcfac5c11ef4801498946fd  gcc/testsuite/gfortran.dg/use_only_3.f90
  7005ad6464486a50c2bc9c94a84af493  gcc/testsuite/gfortran.dg/use_only_3.inc
! 0bc12188c69d6278707d2df2084ee089  gcc/testsuite/gfortran.dg/use_only_4.f90
  ed757944c5eca5f36eaa6c42a33c04db  gcc/testsuite/gfortran.dg/use_only_5.f90
  e67a4a11f35c66e08fb4bb3279634a7a  gcc/testsuite/gfortran.dg/use_only_6.f90
  6fac87544cba607bd825cef815200556  gcc/testsuite/gfortran.dg/use_rename_1.f90
! 7047ce88a57d708d3d2c2ac3c3ca337e  gcc/testsuite/gfortran.dg/use_rename_2.f90
  56d36b08080e432e1860759131695014  gcc/testsuite/gfortran.dg/use_rename_3.f90
! 4c6c9f47b5091f92496b13e280371057  gcc/testsuite/gfortran.dg/use_rename_4.f90
  f915c7e347a13904541e64ecfbf96b9e  gcc/testsuite/gfortran.dg/use_rename_5.f90
  ad43c4d3cb4733e86d9206b28785afd0  gcc/testsuite/gfortran.dg/use_rename_6.f90
  da9a5416920599f30fb0c82c34d88084  gcc/testsuite/gfortran.dg/use_rename_7.f90
  2101a506b2c2f7a637be977cd5b76008  gcc/testsuite/gfortran.dg/use_rename_8.f90
! 3be1aba2041e7638b2f7647c61986b6e  gcc/testsuite/gfortran.dg/use_without_only_1.f90
  15c120470a7413dda29cbfafbfc57725  gcc/testsuite/gfortran.dg/used_before_typed_1.f90
  4f6c103439659c20e74976784818e299  gcc/testsuite/gfortran.dg/used_before_typed_2.f90
  bb95c123e31592731cdd870dc921de1d  gcc/testsuite/gfortran.dg/used_before_typed_3.f90
  7fba07e1f2a8eb6d4f590b9bd3f4470b  gcc/testsuite/gfortran.dg/used_before_typed_4.f90
  e0e1bd02d004d5cd3c1ca138bc2f0025  gcc/testsuite/gfortran.dg/used_before_typed_5.f90
  12a8df5700b813e27c867c02618fa548  gcc/testsuite/gfortran.dg/used_before_typed_6.f90
! 611d089c21576c6422a030a2cdc612aa  gcc/testsuite/gfortran.dg/used_dummy_types_1.f90
  1b482dce377e98f1cf6ba65db90c710c  gcc/testsuite/gfortran.dg/used_dummy_types_2.f90
  926e0a74aa2f2d473a7b3feb57e7d150  gcc/testsuite/gfortran.dg/used_dummy_types_3.f90
  d8fbaf49f0f1e614e393060ae3ad4fc1  gcc/testsuite/gfortran.dg/used_dummy_types_4.f90
*************** d8fbaf49f0f1e614e393060ae3ad4fc1  gcc/te
*** 53509,53515 ****
  9dde10c031fd7751a2ec159b3324ddbb  gcc/testsuite/gfortran.dg/used_dummy_types_6.f90
  a90017179112864c1708296ac1d44b40  gcc/testsuite/gfortran.dg/used_dummy_types_7.f90
  21289bab407d7174b9a004bd143b384e  gcc/testsuite/gfortran.dg/used_dummy_types_8.f90
! 8fb79adf35b362f7eab8c9ce97e47d5e  gcc/testsuite/gfortran.dg/used_interface_ref.f90
  88757509261c1ab1d2855aff838986eb  gcc/testsuite/gfortran.dg/used_types_1.f90
  f8302f7a36a1da5ba1b3d1a0c3412c58  gcc/testsuite/gfortran.dg/used_types_10.f90
  bd154d825065562574e01a929fd6b231  gcc/testsuite/gfortran.dg/used_types_11.f90
--- 57272,57278 ----
  9dde10c031fd7751a2ec159b3324ddbb  gcc/testsuite/gfortran.dg/used_dummy_types_6.f90
  a90017179112864c1708296ac1d44b40  gcc/testsuite/gfortran.dg/used_dummy_types_7.f90
  21289bab407d7174b9a004bd143b384e  gcc/testsuite/gfortran.dg/used_dummy_types_8.f90
! 356b46918970cf31feb6cf196fffcb29  gcc/testsuite/gfortran.dg/used_interface_ref.f90
  88757509261c1ab1d2855aff838986eb  gcc/testsuite/gfortran.dg/used_types_1.f90
  f8302f7a36a1da5ba1b3d1a0c3412c58  gcc/testsuite/gfortran.dg/used_types_10.f90
  bd154d825065562574e01a929fd6b231  gcc/testsuite/gfortran.dg/used_types_11.f90
*************** fc2fd48f14119ddf3ceaf42db200a7a1  gcc/te
*** 53532,53570 ****
  4892b692ddac04cc32fb331d62806c84  gcc/testsuite/gfortran.dg/used_types_27.f90
  3c6444805a4fdcb2e41627a4aaeb6dd7  gcc/testsuite/gfortran.dg/used_types_3.f90
  6199333d2c6bd837c6482165c046dfc8  gcc/testsuite/gfortran.dg/used_types_4.f90
! a1f7d63507f1b8c200d3905b3e5e0154  gcc/testsuite/gfortran.dg/used_types_5.f90
  a2354af5ba0cfb618818c8a971fe6a7c  gcc/testsuite/gfortran.dg/used_types_6.f90
  cec1ec6b2f905bb78b1700c94091bc21  gcc/testsuite/gfortran.dg/used_types_7.f90
  5bcc92c91cb70c135e0d126778db795b  gcc/testsuite/gfortran.dg/used_types_8.f90
  92fe0100c42072101328af359472f98a  gcc/testsuite/gfortran.dg/used_types_9.f90
  8c8581f233f11335eed2db8be4bc82df  gcc/testsuite/gfortran.dg/userdef_operator_1.f90
  39cb197667c91bd9ed379d30af098425  gcc/testsuite/gfortran.dg/userdef_operator_2.f90
! 0939a957ad0ceecd646673360ab27bfd  gcc/testsuite/gfortran.dg/utf8_1.f03
! 09082df305b28528f1d623194b789d8c  gcc/testsuite/gfortran.dg/utf8_2.f03
! ceee71c277b59302a3ed76066088c1da  gcc/testsuite/gfortran.dg/value_1.f90
! e6a702ed26f3aa5b93447eb354a3ad66  gcc/testsuite/gfortran.dg/value_2.f90
  f55ce021238826090cc2feb968b15b3d  gcc/testsuite/gfortran.dg/value_3.f90
  044c3ac7d69169cd8171c69b76f48001  gcc/testsuite/gfortran.dg/value_4.c
! 539f120bbb5c48bffdc9aa04fbd2103f  gcc/testsuite/gfortran.dg/value_4.f90
  f0b6d172971190f9810729d6cf81bef7  gcc/testsuite/gfortran.dg/value_5.f90
! 233141bb895f5fdb6469b3edd72b499e  gcc/testsuite/gfortran.dg/value_6.f03
! 7ddfbcddbe4f94d29d5bdc2c22ce3ddb  gcc/testsuite/gfortran.dg/value_7.f03
! f544f9913088ff079e7ef68554e65c61  gcc/testsuite/gfortran.dg/value_test.f90
  726b4cde834cb3dc1ab0ada4c8388762  gcc/testsuite/gfortran.dg/value_tests_f03.f90
  2275410732e79dcfc00faf303cb53d17  gcc/testsuite/gfortran.dg/vect/O3-pr36119.f90
  1454ba871ddfcd5aa0d4ee0bb7396904  gcc/testsuite/gfortran.dg/vect/O3-pr39595.f
  711b74ce954f9e1413a8488fd57dc7c0  gcc/testsuite/gfortran.dg/vect/O3-pr49957.f
  c9b4147ed72dbcf7fb445df8a53c6fcb  gcc/testsuite/gfortran.dg/vect/Ofast-pr50414.f90
  b0e1d086d792aaa6f0448d6f6045949c  gcc/testsuite/gfortran.dg/vect/cost-model-pr34445.f
  115f2e02ba073f210a61f2c5461983a4  gcc/testsuite/gfortran.dg/vect/cost-model-pr34445a.f
! 1eb1d6624dcd52ff9db43163f7184521  gcc/testsuite/gfortran.dg/vect/fast-math-mgrid-resid.f
! 57c057c5fd3ab796669c2dcfb8bc7ef0  gcc/testsuite/gfortran.dg/vect/fast-math-pr33299.f90
  eb8f63c129d8618d429aa78bba083c23  gcc/testsuite/gfortran.dg/vect/fast-math-pr37021.f90
! a1e257b4abb88d397a775e3fb6b510bb  gcc/testsuite/gfortran.dg/vect/fast-math-pr38968.f90
  e871e2ebc515b55aca26aac10d43819c  gcc/testsuite/gfortran.dg/vect/fast-math-real8-pr40801.f90
  666bbe38184b24b7685eea553de2eb5a  gcc/testsuite/gfortran.dg/vect/fast-math-rnflow-trs2a2.f90
  eddd77f861f74465d78c92f841676d26  gcc/testsuite/gfortran.dg/vect/fast-math-vect-8.f90
! 6821e97375de3ccd7495557253943540  gcc/testsuite/gfortran.dg/vect/no-fre-no-copy-prop-O3-pr51704.f90
  ca22fb0f028313d733f9f90efd6b98e6  gcc/testsuite/gfortran.dg/vect/no-vfa-pr32377.f90
  19e92e71600fa931dce3409e389d0482  gcc/testsuite/gfortran.dg/vect/no-vfa-pr32457.f90
  a17cb1ab891a5af3471298da97331dda  gcc/testsuite/gfortran.dg/vect/pr19049.f90
--- 57295,57335 ----
  4892b692ddac04cc32fb331d62806c84  gcc/testsuite/gfortran.dg/used_types_27.f90
  3c6444805a4fdcb2e41627a4aaeb6dd7  gcc/testsuite/gfortran.dg/used_types_3.f90
  6199333d2c6bd837c6482165c046dfc8  gcc/testsuite/gfortran.dg/used_types_4.f90
! 302590f2b153de92601b9c3718b5410c  gcc/testsuite/gfortran.dg/used_types_5.f90
  a2354af5ba0cfb618818c8a971fe6a7c  gcc/testsuite/gfortran.dg/used_types_6.f90
  cec1ec6b2f905bb78b1700c94091bc21  gcc/testsuite/gfortran.dg/used_types_7.f90
  5bcc92c91cb70c135e0d126778db795b  gcc/testsuite/gfortran.dg/used_types_8.f90
  92fe0100c42072101328af359472f98a  gcc/testsuite/gfortran.dg/used_types_9.f90
  8c8581f233f11335eed2db8be4bc82df  gcc/testsuite/gfortran.dg/userdef_operator_1.f90
  39cb197667c91bd9ed379d30af098425  gcc/testsuite/gfortran.dg/userdef_operator_2.f90
! 4f9c3d189be3981f6cb9ddd0a07a8829  gcc/testsuite/gfortran.dg/utf8_1.f03
! 8454549da966b8a759972284f6ec3aec  gcc/testsuite/gfortran.dg/utf8_2.f03
! 17a95a4c64acfd3e2b0ddfd821176912  gcc/testsuite/gfortran.dg/value_1.f90
! c0b7e645eca87d1072072c6b6e4a9126  gcc/testsuite/gfortran.dg/value_2.f90
  f55ce021238826090cc2feb968b15b3d  gcc/testsuite/gfortran.dg/value_3.f90
  044c3ac7d69169cd8171c69b76f48001  gcc/testsuite/gfortran.dg/value_4.c
! 81cc5897f9202983678b62dcd60ff750  gcc/testsuite/gfortran.dg/value_4.f90
  f0b6d172971190f9810729d6cf81bef7  gcc/testsuite/gfortran.dg/value_5.f90
! e0681ebf1cc0d7c0c6333d4894f4bb3d  gcc/testsuite/gfortran.dg/value_6.f03
! 976eb36133da7e21bc4e6438427f2a37  gcc/testsuite/gfortran.dg/value_7.f03
! 0d717003a2688af8d432e36362750a72  gcc/testsuite/gfortran.dg/value_test.f90
  726b4cde834cb3dc1ab0ada4c8388762  gcc/testsuite/gfortran.dg/value_tests_f03.f90
+ 6955f4b4c2942cbbeef05b640bfbe5fe  gcc/testsuite/gfortran.dg/vax_structure_1.f90
  2275410732e79dcfc00faf303cb53d17  gcc/testsuite/gfortran.dg/vect/O3-pr36119.f90
  1454ba871ddfcd5aa0d4ee0bb7396904  gcc/testsuite/gfortran.dg/vect/O3-pr39595.f
  711b74ce954f9e1413a8488fd57dc7c0  gcc/testsuite/gfortran.dg/vect/O3-pr49957.f
  c9b4147ed72dbcf7fb445df8a53c6fcb  gcc/testsuite/gfortran.dg/vect/Ofast-pr50414.f90
  b0e1d086d792aaa6f0448d6f6045949c  gcc/testsuite/gfortran.dg/vect/cost-model-pr34445.f
  115f2e02ba073f210a61f2c5461983a4  gcc/testsuite/gfortran.dg/vect/cost-model-pr34445a.f
! b3dc6ae3807e79a629dbd287b8db29df  gcc/testsuite/gfortran.dg/vect/fast-math-mgrid-resid.f
! ac8f5b820a1162a057bd4f98f8edb48c  gcc/testsuite/gfortran.dg/vect/fast-math-pr33299.f90
  eb8f63c129d8618d429aa78bba083c23  gcc/testsuite/gfortran.dg/vect/fast-math-pr37021.f90
! 5b7763b48d017e67bac2ada753e63c9c  gcc/testsuite/gfortran.dg/vect/fast-math-pr38968.f90
  e871e2ebc515b55aca26aac10d43819c  gcc/testsuite/gfortran.dg/vect/fast-math-real8-pr40801.f90
  666bbe38184b24b7685eea553de2eb5a  gcc/testsuite/gfortran.dg/vect/fast-math-rnflow-trs2a2.f90
  eddd77f861f74465d78c92f841676d26  gcc/testsuite/gfortran.dg/vect/fast-math-vect-8.f90
! 83e10153ac0827ff314148f5779aa542  gcc/testsuite/gfortran.dg/vect/mask-store-1.f90
! c4cdbb7826f698ed16a2354d36deafa1  gcc/testsuite/gfortran.dg/vect/no-fre-no-copy-prop-O3-pr51704.f90
  ca22fb0f028313d733f9f90efd6b98e6  gcc/testsuite/gfortran.dg/vect/no-vfa-pr32377.f90
  19e92e71600fa931dce3409e389d0482  gcc/testsuite/gfortran.dg/vect/no-vfa-pr32457.f90
  a17cb1ab891a5af3471298da97331dda  gcc/testsuite/gfortran.dg/vect/pr19049.f90
*************** f86889411b55e8f3c30379082c193f04  gcc/te
*** 53582,53617 ****
  a2d04ed105569f8d74d2d9e79dff01be  gcc/testsuite/gfortran.dg/vect/pr51058.f90
  61fb9e8fcac7c7279c3dba78b0e0fef0  gcc/testsuite/gfortran.dg/vect/pr51285.f90
  2cf9d5735b94c358a4738714171e6d11  gcc/testsuite/gfortran.dg/vect/pr52580.f
  6f2ea640c75070bee29b6c46e6ab584b  gcc/testsuite/gfortran.dg/vect/pr62283-2.f
  193bdf53d1fc554853e00fcc30d9841c  gcc/testsuite/gfortran.dg/vect/pr62283.f
  e3ed6ec2719e9380031e3e22af66563e  gcc/testsuite/gfortran.dg/vect/pr69466.f90
! 418d80eca7e8ca543daeccdcccb39f3b  gcc/testsuite/gfortran.dg/vect/pr69882.f90
! 60b6c0b296cd87bb7d567f85b1d5706e  gcc/testsuite/gfortran.dg/vect/pr69980.f90
! dff7a17c6c288d124c6557a801b20ab1  gcc/testsuite/gfortran.dg/vect/pr70043.f90
! ac371bdfdb4930c6ce11f698db046cdf  gcc/testsuite/gfortran.dg/vect/pr77848.f
  0e65ff4a3d90f2b73a5088d94b53586a  gcc/testsuite/gfortran.dg/vect/vect-1.f90
! 8e654b3e9bc1768b128007f0eeeb537a  gcc/testsuite/gfortran.dg/vect/vect-2.f90
! e2b81c1f2d366c255252a0c7cd3fb4c3  gcc/testsuite/gfortran.dg/vect/vect-3.f90
! 8c7e8b3a469918120c8113324aab62f0  gcc/testsuite/gfortran.dg/vect/vect-4.f90
! 69abd376166a839aecf6edfd725966ac  gcc/testsuite/gfortran.dg/vect/vect-5.f90
  85e276d35cb7a8b2c21db0e98b73186b  gcc/testsuite/gfortran.dg/vect/vect-6.f
  c92f16f306f4e92e783e01428ccd23b3  gcc/testsuite/gfortran.dg/vect/vect-7.f90
! 87bde9f027667def48122dcfbe27c899  gcc/testsuite/gfortran.dg/vect/vect-8.f90
  9e3ba50dd73757cc5b6e9d6265e4ff1a  gcc/testsuite/gfortran.dg/vect/vect-9.f90
! 028d59afe2bd9a6a396d98218a0a049a  gcc/testsuite/gfortran.dg/vect/vect-do-concurrent-1.f90
  51d61a0ffbe2e176d92badb55eaf6889  gcc/testsuite/gfortran.dg/vect/vect-gems.f90
! 034a7dac87f746936d50f888512e0e33  gcc/testsuite/gfortran.dg/vect/vect.exp
! ae79af47097b6fa393f61536baee22e0  gcc/testsuite/gfortran.dg/vector_subscript_1.f90
! 9206e2127fe7833b7ffdd6daf40b63ac  gcc/testsuite/gfortran.dg/vector_subscript_2.f90
! d519b7207c9ad543969b05a5a67e3706  gcc/testsuite/gfortran.dg/vector_subscript_3.f90
  a9914f639ee6c6e95daf38d8cd34e2d8  gcc/testsuite/gfortran.dg/vector_subscript_4.f90
! f32320454477b18df0b6c7636059343c  gcc/testsuite/gfortran.dg/vector_subscript_5.f90
  3a63b08dbdaf6914a5e5f93825edc589  gcc/testsuite/gfortran.dg/vector_subscript_6.f90
  f04149fa9287219afced4adec2ff3068  gcc/testsuite/gfortran.dg/vector_subscript_7.f90
  924936955033d95bb05336b4c435341a  gcc/testsuite/gfortran.dg/vector_subscript_bound_1.f90
! 0b0125ba875b7318567d7b5ba1efeccc  gcc/testsuite/gfortran.dg/verify_2.f90
  626dfffa6c450f32677ecf2e391385e4  gcc/testsuite/gfortran.dg/volatile.f90
! 6dc5b76179f19417b9eb5626e5d9bccc  gcc/testsuite/gfortran.dg/volatile10.f90
  666c3297f8f2a7745ac5fe969663ee45  gcc/testsuite/gfortran.dg/volatile11.f90
  81ccd97ddab969a4117c3034748ef905  gcc/testsuite/gfortran.dg/volatile12.f90
  0c5406f43c84cd785df95bc42b214dbc  gcc/testsuite/gfortran.dg/volatile13.f90
--- 57347,57388 ----
  a2d04ed105569f8d74d2d9e79dff01be  gcc/testsuite/gfortran.dg/vect/pr51058.f90
  61fb9e8fcac7c7279c3dba78b0e0fef0  gcc/testsuite/gfortran.dg/vect/pr51285.f90
  2cf9d5735b94c358a4738714171e6d11  gcc/testsuite/gfortran.dg/vect/pr52580.f
+ 2a9c0c068208d3e070d9de9ee9c7f322  gcc/testsuite/gfortran.dg/vect/pr60510.f
+ 0bc81b88699fb163be2b934a787aab50  gcc/testsuite/gfortran.dg/vect/pr61171.f
  6f2ea640c75070bee29b6c46e6ab584b  gcc/testsuite/gfortran.dg/vect/pr62283-2.f
  193bdf53d1fc554853e00fcc30d9841c  gcc/testsuite/gfortran.dg/vect/pr62283.f
  e3ed6ec2719e9380031e3e22af66563e  gcc/testsuite/gfortran.dg/vect/pr69466.f90
! e908da4224e8c1e801b93e3fde2381b1  gcc/testsuite/gfortran.dg/vect/pr69882.f90
! 8be888cc0b6731a3a012553b4bf9398b  gcc/testsuite/gfortran.dg/vect/pr69980.f90
! cefc2799ac1f1f0963931200eb469fc0  gcc/testsuite/gfortran.dg/vect/pr70043.f90
! 58582a4ac642cec92bb942d31698a6eb  gcc/testsuite/gfortran.dg/vect/pr77848.f
! abf68e470c0aa7bc77cac4f589082522  gcc/testsuite/gfortran.dg/vect/pr81303.f
! da356a11fb290d449be866aee84d6410  gcc/testsuite/gfortran.dg/vect/pr83232.f90
! 8b92a1fffaa166252123bd512e3f07ff  gcc/testsuite/gfortran.dg/vect/pr84913.f90
  0e65ff4a3d90f2b73a5088d94b53586a  gcc/testsuite/gfortran.dg/vect/vect-1.f90
! 7886c35ca82f9de875dceabbd1785187  gcc/testsuite/gfortran.dg/vect/vect-2.f90
! efd1f1f270b2c6b9006463ae5b59cdde  gcc/testsuite/gfortran.dg/vect/vect-3.f90
! aa736710de9a33e3fef68c15454f9da1  gcc/testsuite/gfortran.dg/vect/vect-4.f90
! 04ef603fb1be6e4be3042853a0ce2a67  gcc/testsuite/gfortran.dg/vect/vect-5.f90
  85e276d35cb7a8b2c21db0e98b73186b  gcc/testsuite/gfortran.dg/vect/vect-6.f
  c92f16f306f4e92e783e01428ccd23b3  gcc/testsuite/gfortran.dg/vect/vect-7.f90
! 12b081efbc69691b464d442ddd9153f9  gcc/testsuite/gfortran.dg/vect/vect-8.f90
  9e3ba50dd73757cc5b6e9d6265e4ff1a  gcc/testsuite/gfortran.dg/vect/vect-9.f90
! 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
! 76a799a3771dbabf4643612bca3eae7c  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
  a9914f639ee6c6e95daf38d8cd34e2d8  gcc/testsuite/gfortran.dg/vector_subscript_4.f90
! 3d9122574ac7b969a76692259e67a709  gcc/testsuite/gfortran.dg/vector_subscript_5.f90
  3a63b08dbdaf6914a5e5f93825edc589  gcc/testsuite/gfortran.dg/vector_subscript_6.f90
  f04149fa9287219afced4adec2ff3068  gcc/testsuite/gfortran.dg/vector_subscript_7.f90
  924936955033d95bb05336b4c435341a  gcc/testsuite/gfortran.dg/vector_subscript_bound_1.f90
! 81a2acf083f450e5ea888954fa1d6911  gcc/testsuite/gfortran.dg/verify_2.f90
  626dfffa6c450f32677ecf2e391385e4  gcc/testsuite/gfortran.dg/volatile.f90
! 54245d287c2da60f819b17340da156b8  gcc/testsuite/gfortran.dg/volatile10.f90
  666c3297f8f2a7745ac5fe969663ee45  gcc/testsuite/gfortran.dg/volatile11.f90
  81ccd97ddab969a4117c3034748ef905  gcc/testsuite/gfortran.dg/volatile12.f90
  0c5406f43c84cd785df95bc42b214dbc  gcc/testsuite/gfortran.dg/volatile13.f90
*************** bbc300d5c73a5a93f8c444d724c94f4e  gcc/te
*** 53626,53632 ****
  d69ead0593d15c9de778cb143ce5d609  gcc/testsuite/gfortran.dg/volatile9.f90
  fe3aeafe60d9d200fe6d6bde4f1ddd73  gcc/testsuite/gfortran.dg/warn_alias.f90
  4b2cb0b83786fd0b9880b55165c7abd6  gcc/testsuite/gfortran.dg/warn_align_commons.f90
! 91b6dafb4a727778bd7d500662b812df  gcc/testsuite/gfortran.dg/warn_argument_mismatch_1.f90
  660f5862b298d573d0321c73779e592e  gcc/testsuite/gfortran.dg/warn_conversion.f90
  f0b0e40083e166f0ec356c0f059cdb13  gcc/testsuite/gfortran.dg/warn_conversion_2.f90
  fb059aee8dd3ce08978867270c115969  gcc/testsuite/gfortran.dg/warn_conversion_3.f90
--- 57397,57404 ----
  d69ead0593d15c9de778cb143ce5d609  gcc/testsuite/gfortran.dg/volatile9.f90
  fe3aeafe60d9d200fe6d6bde4f1ddd73  gcc/testsuite/gfortran.dg/warn_alias.f90
  4b2cb0b83786fd0b9880b55165c7abd6  gcc/testsuite/gfortran.dg/warn_align_commons.f90
! c9aa879c6243649372231ee73da80c1e  gcc/testsuite/gfortran.dg/warn_argument_mismatch_1.f90
! 15fa84e625f28950bc33d8fb0e272b85  gcc/testsuite/gfortran.dg/warn_concat.f90
  660f5862b298d573d0321c73779e592e  gcc/testsuite/gfortran.dg/warn_conversion.f90
  f0b0e40083e166f0ec356c0f059cdb13  gcc/testsuite/gfortran.dg/warn_conversion_2.f90
  fb059aee8dd3ce08978867270c115969  gcc/testsuite/gfortran.dg/warn_conversion_3.f90
*************** faef1baec47674d096569b4803422d64  gcc/te
*** 53651,53658 ****
  9cdfca84c19b8b4bfd5f9be4a921f068  gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_2.f90
  62c8995bb923620e3509b9bd179b618c  gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_3.f90
  fa2d697a6cf010eb6e082b1cf14cfb0a  gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_4.f90
! 5ed4aed6865b1e3f49698db244b646ef  gcc/testsuite/gfortran.dg/warn_unused_function.f90
! 1b3805c8c508498bff44d111ee962eb7  gcc/testsuite/gfortran.dg/warn_unused_function_2.f90
  ae95981491a9741922c27b078d9a628c  gcc/testsuite/gfortran.dg/warn_unused_function_3.f90
  025932868233d92449d247c6dacf72a1  gcc/testsuite/gfortran.dg/warn_unused_var.f90
  505984a29bdb4c6918091f5ecf8088e8  gcc/testsuite/gfortran.dg/warn_unused_var_2.f90
--- 57423,57430 ----
  9cdfca84c19b8b4bfd5f9be4a921f068  gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_2.f90
  62c8995bb923620e3509b9bd179b618c  gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_3.f90
  fa2d697a6cf010eb6e082b1cf14cfb0a  gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_4.f90
! a889821a76a43cd0bc42032f92d62143  gcc/testsuite/gfortran.dg/warn_unused_function.f90
! babf649d09171c4fca19c8092348ee07  gcc/testsuite/gfortran.dg/warn_unused_function_2.f90
  ae95981491a9741922c27b078d9a628c  gcc/testsuite/gfortran.dg/warn_unused_function_3.f90
  025932868233d92449d247c6dacf72a1  gcc/testsuite/gfortran.dg/warn_unused_var.f90
  505984a29bdb4c6918091f5ecf8088e8  gcc/testsuite/gfortran.dg/warn_unused_var_2.f90
*************** d7e90d5ac1ba80ab977e039c5c23bdf1  gcc/te
*** 53665,53693 ****
  d16986202af25e97a574c025915332a7  gcc/testsuite/gfortran.dg/warnings_are_errors_1.f90
  8f632367e477a017a8638d374f10d7fb  gcc/testsuite/gfortran.dg/wdate-time.F90
  2cc5aa8cdc10a24dfcac8454523cd16d  gcc/testsuite/gfortran.dg/wextra_1.f
! 44bae72b0d75677144f79e13875a55e1  gcc/testsuite/gfortran.dg/where_1.f90
  e2dd8115622860575ce72139d603a847  gcc/testsuite/gfortran.dg/where_2.f90
  3516e7a52673173d6551f02dca2c1f39  gcc/testsuite/gfortran.dg/where_3.f90
  4179a357d57c03402f3b139d65faa997  gcc/testsuite/gfortran.dg/where_4.f90
  182a4bf9b505e389529f505ad87bcede  gcc/testsuite/gfortran.dg/where_5.f90
  1d287cc9e958f47ab705383330836258  gcc/testsuite/gfortran.dg/where_6.f90
  355f71857e4d70eec2b706ae1ab82a95  gcc/testsuite/gfortran.dg/where_nested_1.f90
! 9ed3fb7c28651e33f2d22957e7ad8da6  gcc/testsuite/gfortran.dg/where_operator_assign_1.f90
! e065fb63b7634d2874e6ce1fb7f3c610  gcc/testsuite/gfortran.dg/where_operator_assign_2.f90
! 2f4902472c0cb82fbe55cc391a2ded0b  gcc/testsuite/gfortran.dg/where_operator_assign_3.f90
  089362febc6d74d99095d2dffb09c0d4  gcc/testsuite/gfortran.dg/where_operator_assign_4.f90
  1cdd410910c34aa8e52f11777c54eb40  gcc/testsuite/gfortran.dg/whole_file_1.f90
  033c853db6ecb08ac7ab52eed1509da6  gcc/testsuite/gfortran.dg/whole_file_10.f90
  458bb26c2723b32c6ccee9c21e558e0d  gcc/testsuite/gfortran.dg/whole_file_11.f90
  b8bd2252e7744993e70e9211c4084b21  gcc/testsuite/gfortran.dg/whole_file_12.f90
! 8cc4142f37400f4dea1baeabe46d15c7  gcc/testsuite/gfortran.dg/whole_file_13.f90
  8ae79064666f119777d7d521f73d7b92  gcc/testsuite/gfortran.dg/whole_file_14.f90
  67efd06d2f8a735f3c1543b65d76d760  gcc/testsuite/gfortran.dg/whole_file_15.f90
  fce187373e61a63196774f4533244a5f  gcc/testsuite/gfortran.dg/whole_file_16.f90
  a81b2528ab27af469899aef58703515a  gcc/testsuite/gfortran.dg/whole_file_17.f90
  0b1486df10a373ec2451d25f8b53e269  gcc/testsuite/gfortran.dg/whole_file_18.f90
  d011a65683076ad9dd43f7742625d05f  gcc/testsuite/gfortran.dg/whole_file_19.f90
! 7e0902493e1b901ad2cd5902405a1e80  gcc/testsuite/gfortran.dg/whole_file_2.f90
  a24f9ce3e5afc627dff91dc044b96906  gcc/testsuite/gfortran.dg/whole_file_20.f03
  6b4ee0836270382d2156cb123c8a81cc  gcc/testsuite/gfortran.dg/whole_file_21.f90
  95904efb0094351524b8a8c3e4d346b3  gcc/testsuite/gfortran.dg/whole_file_22.f90
--- 57437,57465 ----
  d16986202af25e97a574c025915332a7  gcc/testsuite/gfortran.dg/warnings_are_errors_1.f90
  8f632367e477a017a8638d374f10d7fb  gcc/testsuite/gfortran.dg/wdate-time.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
  3516e7a52673173d6551f02dca2c1f39  gcc/testsuite/gfortran.dg/where_3.f90
  4179a357d57c03402f3b139d65faa997  gcc/testsuite/gfortran.dg/where_4.f90
  182a4bf9b505e389529f505ad87bcede  gcc/testsuite/gfortran.dg/where_5.f90
  1d287cc9e958f47ab705383330836258  gcc/testsuite/gfortran.dg/where_6.f90
  355f71857e4d70eec2b706ae1ab82a95  gcc/testsuite/gfortran.dg/where_nested_1.f90
! 628fe7e510541278739eddc54963c6ea  gcc/testsuite/gfortran.dg/where_operator_assign_1.f90
! ecd80a55965684753d0fc250137445d0  gcc/testsuite/gfortran.dg/where_operator_assign_2.f90
! f3f8d2c8e48ac2ae4046bc54f287b539  gcc/testsuite/gfortran.dg/where_operator_assign_3.f90
  089362febc6d74d99095d2dffb09c0d4  gcc/testsuite/gfortran.dg/where_operator_assign_4.f90
  1cdd410910c34aa8e52f11777c54eb40  gcc/testsuite/gfortran.dg/whole_file_1.f90
  033c853db6ecb08ac7ab52eed1509da6  gcc/testsuite/gfortran.dg/whole_file_10.f90
  458bb26c2723b32c6ccee9c21e558e0d  gcc/testsuite/gfortran.dg/whole_file_11.f90
  b8bd2252e7744993e70e9211c4084b21  gcc/testsuite/gfortran.dg/whole_file_12.f90
! 1dc59a612a30f367b1b8117a0cdff75a  gcc/testsuite/gfortran.dg/whole_file_13.f90
  8ae79064666f119777d7d521f73d7b92  gcc/testsuite/gfortran.dg/whole_file_14.f90
  67efd06d2f8a735f3c1543b65d76d760  gcc/testsuite/gfortran.dg/whole_file_15.f90
  fce187373e61a63196774f4533244a5f  gcc/testsuite/gfortran.dg/whole_file_16.f90
  a81b2528ab27af469899aef58703515a  gcc/testsuite/gfortran.dg/whole_file_17.f90
  0b1486df10a373ec2451d25f8b53e269  gcc/testsuite/gfortran.dg/whole_file_18.f90
  d011a65683076ad9dd43f7742625d05f  gcc/testsuite/gfortran.dg/whole_file_19.f90
! b51377886d8aee05a9295b13f5dd8086  gcc/testsuite/gfortran.dg/whole_file_2.f90
  a24f9ce3e5afc627dff91dc044b96906  gcc/testsuite/gfortran.dg/whole_file_20.f03
  6b4ee0836270382d2156cb123c8a81cc  gcc/testsuite/gfortran.dg/whole_file_21.f90
  95904efb0094351524b8a8c3e4d346b3  gcc/testsuite/gfortran.dg/whole_file_22.f90
*************** cfffba3d7694ada851eb1d566013cf5f  gcc/te
*** 53713,53775 ****
  8d6780e08eece56f9ec98adc87781415  gcc/testsuite/gfortran.dg/whole_file_9.f90
  c21b79165d40a9a110e5edf0ea3b1838  gcc/testsuite/gfortran.dg/widechar_1.f90
  386beab2975c65320519d70721eda661  gcc/testsuite/gfortran.dg/widechar_10.f90
! 47081eb69588062b5b25c7f1c24e15db  gcc/testsuite/gfortran.dg/widechar_2.f90
  157586a450c3ac1908fbc6b6945d042d  gcc/testsuite/gfortran.dg/widechar_3.f90
! 86a9fa8e4fbc2c458968aa7f54102b6d  gcc/testsuite/gfortran.dg/widechar_4.f90
! b036b04a2bc93761077ea125d7e891c7  gcc/testsuite/gfortran.dg/widechar_5.f90
! 7c690667cf7821812cbee9056e13ea90  gcc/testsuite/gfortran.dg/widechar_6.f90
  6c7b868ad2250f53b98aa4230b37bf45  gcc/testsuite/gfortran.dg/widechar_7.f90
! 9a9265f1488d883172b6383bc1085927  gcc/testsuite/gfortran.dg/widechar_8.f90
  941569080b7485504761ba65ce4f687e  gcc/testsuite/gfortran.dg/widechar_9.f90
! 031c73500d993a3ecbf7f8033e38b25f  gcc/testsuite/gfortran.dg/widechar_IO_1.f90
! 6e3d11061d3fedad371f0d17d6275a36  gcc/testsuite/gfortran.dg/widechar_IO_2.f90
! ff4a498bd6f7005f9e8f5dbb271bd6c8  gcc/testsuite/gfortran.dg/widechar_IO_3.f90
! 500f01eb75dffc344b0331e109cfd3fc  gcc/testsuite/gfortran.dg/widechar_IO_4.f90
! c9fe1e98d7b41a8332de060a9a672e8d  gcc/testsuite/gfortran.dg/widechar_compare_1.f90
  48e5e881f2c9c2ad2d0376c78fe0fb8f  gcc/testsuite/gfortran.dg/widechar_intrinsics_1.f90
! ec94a6994147abd5af3e977c92a6e821  gcc/testsuite/gfortran.dg/widechar_intrinsics_10.f90
  576907551174735f360f9b4c63c442d0  gcc/testsuite/gfortran.dg/widechar_intrinsics_2.f90
  dbd0fdf5fa1f1bde64728d49698e23a6  gcc/testsuite/gfortran.dg/widechar_intrinsics_3.f90
! a82bd307e85f5a9229c52ddba89f05cb  gcc/testsuite/gfortran.dg/widechar_intrinsics_4.f90
! f160ee1fe772e2bf8bb5e421c38e5c7b  gcc/testsuite/gfortran.dg/widechar_intrinsics_5.f90
! 0cc68b587e1a97033aa086e794b2277e  gcc/testsuite/gfortran.dg/widechar_intrinsics_6.f90
! c4ace81efac87b2630b849616b5c3935  gcc/testsuite/gfortran.dg/widechar_intrinsics_7.f90
! 2c6f8b4dac5147d8b99e7a5cb01e59c6  gcc/testsuite/gfortran.dg/widechar_intrinsics_8.f90
! 94095d94672a585a458ce08d5ee2c54f  gcc/testsuite/gfortran.dg/widechar_intrinsics_9.f90
! 8468cec1d51de48078c1312e37b82e55  gcc/testsuite/gfortran.dg/widechar_select_1.f90
  d3c61dd4623a5eb5d98c562bf9c8b345  gcc/testsuite/gfortran.dg/widechar_select_2.f90
! b790bedfc6a8d811946fc195d3543e8f  gcc/testsuite/gfortran.dg/winapi.f90
! b03597d62ffc90b37e2a1765bda01163  gcc/testsuite/gfortran.dg/write_0_pe_format.f90
! bee12a4b43f89139f2231c90184c9445  gcc/testsuite/gfortran.dg/write_back.f
  4d3290bb9c47f6cef69890341e362e7b  gcc/testsuite/gfortran.dg/write_check.f90
  cb5139ff1203d8543d7ca5ad86478edb  gcc/testsuite/gfortran.dg/write_check2.f90
! a7d976809b4da0dca959bf9ac7fdfd38  gcc/testsuite/gfortran.dg/write_check3.f90
  6413c71d9de1ab58f2d48a539d26b702  gcc/testsuite/gfortran.dg/write_check4.f90
! 9b28d787691092f1d882f96684eda32e  gcc/testsuite/gfortran.dg/write_direct_eor.f90
  e39759fe6382bdb9de0ea83b23a8631f  gcc/testsuite/gfortran.dg/write_fmt_trim.f90
  fd8dcc27b8288504cc425fa65ed675e8  gcc/testsuite/gfortran.dg/write_invalid_format.f90
! 7473ac1b4a52104cfad7b6f694ce6a82  gcc/testsuite/gfortran.dg/write_padding.f90
! ce330397e91ceeb343552eae3cad3430  gcc/testsuite/gfortran.dg/write_recursive.f90
! bd878b188ced3dbd0a77d907a11d087f  gcc/testsuite/gfortran.dg/write_rewind_1.f
! 9e409e01d18310e567bfbbb51bbb3c47  gcc/testsuite/gfortran.dg/write_rewind_2.f
  b05f74c460f84fe564962dd72b8f9911  gcc/testsuite/gfortran.dg/write_to_null.F90
! 19512b1d219a04e9711fdaf387b536c7  gcc/testsuite/gfortran.dg/write_zero_array.f90
  c9823efc4e3d9bdf48de2ccdbac46410  gcc/testsuite/gfortran.dg/wtruncate.f
  01cac9d3343abed2d1ed65ab5a782622  gcc/testsuite/gfortran.dg/wtruncate.f90
  695f4821cfc3d581586e00ce3b00b6cc  gcc/testsuite/gfortran.dg/wtruncate_fix.f
  ba29d8e2c036ab7319a984089a922f73  gcc/testsuite/gfortran.dg/wunused-parameter.f90
! 28f51640144b5a8009aa5d092dc62f52  gcc/testsuite/gfortran.dg/x_slash_1.f
! 379edf760eeee5bad13710bcfa6c7399  gcc/testsuite/gfortran.dg/x_slash_2.f
! 50edb88b02fc149c3682456f6841524d  gcc/testsuite/gfortran.dg/zero_array_components_1.f90
! e91c677bcd14c0db6e01572476137e31  gcc/testsuite/gfortran.dg/zero_length_1.f90
! 5d6111b1960626214c0d6022ef96f9f4  gcc/testsuite/gfortran.dg/zero_length_2.f90
! 195b4b909ff8182f764dd4a132bb032d  gcc/testsuite/gfortran.dg/zero_sized_1.f90
  0f1a8c7977a278e2a345da387450d769  gcc/testsuite/gfortran.dg/zero_sized_2.f90
! 4ea74bd53de8899a5c63659fc23999be  gcc/testsuite/gfortran.dg/zero_sized_3.f90
  2f6f0e3a0d47789cf8b781d741978eb1  gcc/testsuite/gfortran.dg/zero_sized_4.f90
  c5ec1fb0fc8c345f8307ecf2c67b9da4  gcc/testsuite/gfortran.dg/zero_sized_5.f90
  a44046465668c70aba5221e56a70ddce  gcc/testsuite/gfortran.dg/zero_sized_6.f90
  dc0b200beddab198b48f113266d75959  gcc/testsuite/gfortran.dg/zero_sized_7.f90
  43fd784e3b97014a5b329c6afad28d39  gcc/testsuite/gfortran.dg/zero_stride_1.f90
  2e53eeb757ac8134127639b4b18c5d14  gcc/testsuite/gfortran.fortran-torture/ChangeLog.g95
  13ad78f861b40e328aaa387670abf015  gcc/testsuite/gfortran.fortran-torture/compile/20080806-1.f90
--- 57485,57550 ----
  8d6780e08eece56f9ec98adc87781415  gcc/testsuite/gfortran.dg/whole_file_9.f90
  c21b79165d40a9a110e5edf0ea3b1838  gcc/testsuite/gfortran.dg/widechar_1.f90
  386beab2975c65320519d70721eda661  gcc/testsuite/gfortran.dg/widechar_10.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
! 24c8a3b7924d56f0f252e2367faf664d  gcc/testsuite/gfortran.dg/widechar_5.f90
! 5e2b419aa0a6393c2c3eb88f3c6e6163  gcc/testsuite/gfortran.dg/widechar_6.f90
  6c7b868ad2250f53b98aa4230b37bf45  gcc/testsuite/gfortran.dg/widechar_7.f90
! e94073599f1cc4b6faa1d852e99497aa  gcc/testsuite/gfortran.dg/widechar_8.f90
  941569080b7485504761ba65ce4f687e  gcc/testsuite/gfortran.dg/widechar_9.f90
! 268606705687452c360e05e69d4826a6  gcc/testsuite/gfortran.dg/widechar_IO_1.f90
! 1db2fadfa40fda066faf666b0b07a4bb  gcc/testsuite/gfortran.dg/widechar_IO_2.f90
! 7d0ba960ec1ac167314fa1f549a01f09  gcc/testsuite/gfortran.dg/widechar_IO_3.f90
! e5c54339c7ab9fdda847903e91f9209a  gcc/testsuite/gfortran.dg/widechar_IO_4.f90
! 3f0d10fdfc1797e6c2232111a5bd5502  gcc/testsuite/gfortran.dg/widechar_compare_1.f90
  48e5e881f2c9c2ad2d0376c78fe0fb8f  gcc/testsuite/gfortran.dg/widechar_intrinsics_1.f90
! 467b1a807a6f8dd8bfcc59438f9c2be2  gcc/testsuite/gfortran.dg/widechar_intrinsics_10.f90
  576907551174735f360f9b4c63c442d0  gcc/testsuite/gfortran.dg/widechar_intrinsics_2.f90
  dbd0fdf5fa1f1bde64728d49698e23a6  gcc/testsuite/gfortran.dg/widechar_intrinsics_3.f90
! 6fc23a3b62ccdc3ec77ce3ae7887bd53  gcc/testsuite/gfortran.dg/widechar_intrinsics_4.f90
! 3e7d8570ed550d13313101620d6ca89e  gcc/testsuite/gfortran.dg/widechar_intrinsics_5.f90
! 1543c9ead76d46d4b5db81e44b1b3d58  gcc/testsuite/gfortran.dg/widechar_intrinsics_6.f90
! 190764d5b9ccbb1e6972df2484b234f8  gcc/testsuite/gfortran.dg/widechar_intrinsics_7.f90
! 3a4019b255fcf813169957a63f1359b7  gcc/testsuite/gfortran.dg/widechar_intrinsics_8.f90
! d6481dc90a9e37945e1660b705f89508  gcc/testsuite/gfortran.dg/widechar_intrinsics_9.f90
! 192c4e91a98a301e42c121636fd11579  gcc/testsuite/gfortran.dg/widechar_select_1.f90
  d3c61dd4623a5eb5d98c562bf9c8b345  gcc/testsuite/gfortran.dg/widechar_select_2.f90
! 1a65801af26772797c3a095c3643aef5  gcc/testsuite/gfortran.dg/winapi.f90
! 1d7b54c72ff9e4bc39d60ef158521552  gcc/testsuite/gfortran.dg/write_0_pe_format.f90
! 6dd84be38a74efdf68fdaf7be790013a  gcc/testsuite/gfortran.dg/write_back.f
  4d3290bb9c47f6cef69890341e362e7b  gcc/testsuite/gfortran.dg/write_check.f90
  cb5139ff1203d8543d7ca5ad86478edb  gcc/testsuite/gfortran.dg/write_check2.f90
! 8ace787d3d27ccbe360b0e1e95f940a8  gcc/testsuite/gfortran.dg/write_check3.f90
  6413c71d9de1ab58f2d48a539d26b702  gcc/testsuite/gfortran.dg/write_check4.f90
! 1040bbc62ffe6e2672a1bc74d15e509a  gcc/testsuite/gfortran.dg/write_direct_eor.f90
  e39759fe6382bdb9de0ea83b23a8631f  gcc/testsuite/gfortran.dg/write_fmt_trim.f90
  fd8dcc27b8288504cc425fa65ed675e8  gcc/testsuite/gfortran.dg/write_invalid_format.f90
! ab8e9368052b2141f5e8a758c7440e04  gcc/testsuite/gfortran.dg/write_padding.f90
! 2943baa2f90df6657d04ef2aedee12a2  gcc/testsuite/gfortran.dg/write_recursive.f90
! 53ca8c43576a2ce997ac790d91d60287  gcc/testsuite/gfortran.dg/write_rewind_1.f
! 8820af7cf1b79da7822ebec518555b7d  gcc/testsuite/gfortran.dg/write_rewind_2.f
  b05f74c460f84fe564962dd72b8f9911  gcc/testsuite/gfortran.dg/write_to_null.F90
! fe240ea152fa2fef32bb6edbb1591ba3  gcc/testsuite/gfortran.dg/write_zero_array.f90
  c9823efc4e3d9bdf48de2ccdbac46410  gcc/testsuite/gfortran.dg/wtruncate.f
  01cac9d3343abed2d1ed65ab5a782622  gcc/testsuite/gfortran.dg/wtruncate.f90
  695f4821cfc3d581586e00ce3b00b6cc  gcc/testsuite/gfortran.dg/wtruncate_fix.f
  ba29d8e2c036ab7319a984089a922f73  gcc/testsuite/gfortran.dg/wunused-parameter.f90
! 6241896c88fbdcb0db012a34e8b95e65  gcc/testsuite/gfortran.dg/x_slash_1.f
! ba8277e5e7a193bd234c3801e4e5e435  gcc/testsuite/gfortran.dg/x_slash_2.f
! 118deed9d7384913bfa909eabcd7efae  gcc/testsuite/gfortran.dg/zero_array_components_1.f90
! f32f4f6650669a28c4176a48b729c5a7  gcc/testsuite/gfortran.dg/zero_length_1.f90
! 15e2537a04fec8566fc8218994de4a60  gcc/testsuite/gfortran.dg/zero_length_2.f90
! a276e704774544b67f696562f2ca037a  gcc/testsuite/gfortran.dg/zero_sized_1.f90
! 86f79727a2585651e7f8988e8f2b9b6b  gcc/testsuite/gfortran.dg/zero_sized_10.f90
  0f1a8c7977a278e2a345da387450d769  gcc/testsuite/gfortran.dg/zero_sized_2.f90
! 8606cc4e6bb5d1f50b6fb4d023496291  gcc/testsuite/gfortran.dg/zero_sized_3.f90
  2f6f0e3a0d47789cf8b781d741978eb1  gcc/testsuite/gfortran.dg/zero_sized_4.f90
  c5ec1fb0fc8c345f8307ecf2c67b9da4  gcc/testsuite/gfortran.dg/zero_sized_5.f90
  a44046465668c70aba5221e56a70ddce  gcc/testsuite/gfortran.dg/zero_sized_6.f90
  dc0b200beddab198b48f113266d75959  gcc/testsuite/gfortran.dg/zero_sized_7.f90
+ fc3da337d5e4791bf0b7b5777804497d  gcc/testsuite/gfortran.dg/zero_sized_8.f90
+ b60b1e83048adf872f1f5827680dc3ed  gcc/testsuite/gfortran.dg/zero_sized_9.f90
  43fd784e3b97014a5b329c6afad28d39  gcc/testsuite/gfortran.dg/zero_stride_1.f90
  2e53eeb757ac8134127639b4b18c5d14  gcc/testsuite/gfortran.fortran-torture/ChangeLog.g95
  13ad78f861b40e328aaa387670abf015  gcc/testsuite/gfortran.fortran-torture/compile/20080806-1.f90
*************** dc0b200beddab198b48f113266d75959  gcc/te
*** 53778,53784 ****
  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
! cf8059744e8e7b3601e6b8376e38ba8a  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
--- 57553,57559 ----
  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
! d0742b1e3ce44e50c517f5a1751c189d  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
*************** ffab36f9b71dbe7b3f39b6a912963d1b  gcc/te
*** 53816,53824 ****
  a895293476b8909ca2dd6cd3808f1a25  gcc/testsuite/gfortran.fortran-torture/compile/name_clash.f90
  9f61d5747f719f27ca0f7848d34011e3  gcc/testsuite/gfortran.fortran-torture/compile/named_args.f90
  6cba82b767a5a95d18cb7d6700dc0fbc  gcc/testsuite/gfortran.fortran-torture/compile/named_args_2.f90
! f490e694b59104dd03f0c8a253b5d6cf  gcc/testsuite/gfortran.fortran-torture/compile/nested.f90
  a4007eed3efba0125bcf797792cd3e5e  gcc/testsuite/gfortran.fortran-torture/compile/noncontinuation_1.f
! 6ed3cf4eaf6247dc7dcf33e32bee0f62  gcc/testsuite/gfortran.fortran-torture/compile/parameter_1.f90
  cef7fda06429875db1e236b1b8b0e693  gcc/testsuite/gfortran.fortran-torture/compile/parameter_2.f90
  d796036ce3011cd3d8162d51df7d142c  gcc/testsuite/gfortran.fortran-torture/compile/parameter_3.f90
  275b09a1267290ddf06dfeed6646e987  gcc/testsuite/gfortran.fortran-torture/compile/pr24136.f
--- 57591,57599 ----
  a895293476b8909ca2dd6cd3808f1a25  gcc/testsuite/gfortran.fortran-torture/compile/name_clash.f90
  9f61d5747f719f27ca0f7848d34011e3  gcc/testsuite/gfortran.fortran-torture/compile/named_args.f90
  6cba82b767a5a95d18cb7d6700dc0fbc  gcc/testsuite/gfortran.fortran-torture/compile/named_args_2.f90
! 4569e8176bd0cf2b6cc68f2028426b5d  gcc/testsuite/gfortran.fortran-torture/compile/nested.f90
  a4007eed3efba0125bcf797792cd3e5e  gcc/testsuite/gfortran.fortran-torture/compile/noncontinuation_1.f
! b4ee9cf2bafdeae4829b22ffae879dbf  gcc/testsuite/gfortran.fortran-torture/compile/parameter_1.f90
  cef7fda06429875db1e236b1b8b0e693  gcc/testsuite/gfortran.fortran-torture/compile/parameter_2.f90
  d796036ce3011cd3d8162d51df7d142c  gcc/testsuite/gfortran.fortran-torture/compile/parameter_3.f90
  275b09a1267290ddf06dfeed6646e987  gcc/testsuite/gfortran.fortran-torture/compile/pr24136.f
*************** d0171ed05b99dc6a37226ff000e81cc8  gcc/te
*** 53851,54100 ****
  8970763a0d6640ed8045b377b1d8169d  gcc/testsuite/gfortran.fortran-torture/compile/pr77798.f90
  410f18b3d4cb0a5385b6b174bbb60601  gcc/testsuite/gfortran.fortran-torture/compile/pr80158.f
  60ec5373de19f8eb86d53d7b8bd09c1a  gcc/testsuite/gfortran.fortran-torture/compile/pr80464.f90
  7602f8cc2d0ebd2bf0bb974069a764e0  gcc/testsuite/gfortran.fortran-torture/compile/shape_reshape.f90
  d5ee9d72b3b02f47b393934ca0c89627  gcc/testsuite/gfortran.fortran-torture/compile/stoppause.f90
  0be215e4a53f9370c44eaa153bf1ed6e  gcc/testsuite/gfortran.fortran-torture/compile/strparm_1.f90
  715b145bef951b5e003576d07e400282  gcc/testsuite/gfortran.fortran-torture/compile/transfer-1.f90
  9d68b84e86e71b1e5c1540498c47a649  gcc/testsuite/gfortran.fortran-torture/compile/vrp_1.f90
  a43b835e8821eca7a1f12a310ddc40cb  gcc/testsuite/gfortran.fortran-torture/compile/write.f90
! fce86c62dd49c3161a99ac4ae1b7d887  gcc/testsuite/gfortran.fortran-torture/execute/a_edit_1.f90
! 4f37a795d4f1865d6db01207cabc5863  gcc/testsuite/gfortran.fortran-torture/execute/adjustr.f90
! f1ff939456fdbc0913fc5244e123bf14  gcc/testsuite/gfortran.fortran-torture/execute/allocate.f90
! ed7a09faf95b18a92a2f26439d4ce4e4  gcc/testsuite/gfortran.fortran-torture/execute/alternate_return.f90
! 58cecb6385a9dece51c5f9ec1e9b0ab5  gcc/testsuite/gfortran.fortran-torture/execute/args.f90
! b73f4a9fe4eec4cdcf7a0fdbd82fadff  gcc/testsuite/gfortran.fortran-torture/execute/arithmeticif.f90
! 40f9bd50c220b9ddb6556c7065d68b8b  gcc/testsuite/gfortran.fortran-torture/execute/arrayarg.f90
! b472e8d78837e7cd1c046689ca5f4ef6  gcc/testsuite/gfortran.fortran-torture/execute/arrayarg2.f90
! 798813b7b4c7d039cdb2fa14212172c1  gcc/testsuite/gfortran.fortran-torture/execute/arraysave.f90
! 64ca863d45841b8773c29cdf77fcc757  gcc/testsuite/gfortran.fortran-torture/execute/assumed_size.f90
! 66c355e8d88312f38fce402649874dd0  gcc/testsuite/gfortran.fortran-torture/execute/backspace.f90
  032ae8d42cc38d24fdd0735b133f40f5  gcc/testsuite/gfortran.fortran-torture/execute/backspace.x
! 5a6ba37705b7c1240a304836423b1593  gcc/testsuite/gfortran.fortran-torture/execute/bounds.f90
! a5715c449cdfa0f0ab5174f7be514686  gcc/testsuite/gfortran.fortran-torture/execute/character_passing.f90
! 18efd19454ef000fdbc1ef3a7678b15f  gcc/testsuite/gfortran.fortran-torture/execute/character_select_1.f90
! 488da2c4aee3238172453ff7220515fb  gcc/testsuite/gfortran.fortran-torture/execute/cmplx.f90
! fbdfdad81e30f1354e5c67fbbb95c39f  gcc/testsuite/gfortran.fortran-torture/execute/common.f90
! d91e08b0f5e67a31244058a83c43f0fa  gcc/testsuite/gfortran.fortran-torture/execute/common_2.f90
! a1591a604184f400b0d315c2bb47e370  gcc/testsuite/gfortran.fortran-torture/execute/common_init_1.f90
! 363e95e5a35bbe189a4b3b20920ce85d  gcc/testsuite/gfortran.fortran-torture/execute/common_size.f90
! dcf5cec7f28755b47e0142a736f21553  gcc/testsuite/gfortran.fortran-torture/execute/constructor.f90
! 2e599cb99e4b7bb3173a83d1c5479443  gcc/testsuite/gfortran.fortran-torture/execute/contained.f90
! cf30259086a317d1309d3e396980d579  gcc/testsuite/gfortran.fortran-torture/execute/contained2.f90
! f66afdc56e9f35535b2b4f3c0b28b826  gcc/testsuite/gfortran.fortran-torture/execute/contained_3.f90
! cc7a2018eff57f2e9bf42015366bc3cf  gcc/testsuite/gfortran.fortran-torture/execute/csqrt_1.f90
! ffa5a0675c25b284711603a3bfc14624  gcc/testsuite/gfortran.fortran-torture/execute/data.f90
! e55322e24a9d4dbccf359cfa253343aa  gcc/testsuite/gfortran.fortran-torture/execute/data_2.f90
! 52fd499e8fede8a1bf525f76bc312fdb  gcc/testsuite/gfortran.fortran-torture/execute/data_3.f90
! 9ed6d6a418d5afda8caa4315456978ed  gcc/testsuite/gfortran.fortran-torture/execute/data_4.f90
  86f50fdf7db294e69d74df7a734d79d4  gcc/testsuite/gfortran.fortran-torture/execute/date_time_1.f90
! e5eef72370fb50f140a5a499c08f1c55  gcc/testsuite/gfortran.fortran-torture/execute/dep_fails.f90
! d4fa40fb9d469dab6545305cbf28cadb  gcc/testsuite/gfortran.fortran-torture/execute/der_init.f90
! da9eb78d7804738b3f511bae59c3a4cd  gcc/testsuite/gfortran.fortran-torture/execute/der_init_2.f90
! 7514d4d3ef66ec82555f6d8fc331ed66  gcc/testsuite/gfortran.fortran-torture/execute/der_init_3.f90
! 1f748fcbc62016da368c3de9cc6b29ca  gcc/testsuite/gfortran.fortran-torture/execute/der_init_4.f90
! b54a1a7e6b302d9233e3170b2dbee246  gcc/testsuite/gfortran.fortran-torture/execute/der_init_5.f90
! ddce144cbf16fd2248ad90b513d166d3  gcc/testsuite/gfortran.fortran-torture/execute/der_io.f90
! 5dd6a207310cc981b88619561d15adf3  gcc/testsuite/gfortran.fortran-torture/execute/der_point.f90
! 472216ad91c9e3a3ab10c212c16bc52b  gcc/testsuite/gfortran.fortran-torture/execute/der_type.f90
! df5ac022802534f2a23f2fb1b118b8d6  gcc/testsuite/gfortran.fortran-torture/execute/direct_io.f90
! 9b7da2a68d5b54ca2b40e7e2013bcebf  gcc/testsuite/gfortran.fortran-torture/execute/elemental.f90
! 08cb46e799697e4ec0c7dc6b6a4234d9  gcc/testsuite/gfortran.fortran-torture/execute/empty_format.f90
! ef8d6bb021bb240908ae614c67fe1db9  gcc/testsuite/gfortran.fortran-torture/execute/emptyif.f90
! f4ffc01d5df41a17fea5266d2eaacc2d  gcc/testsuite/gfortran.fortran-torture/execute/entry_1.f90
! d248fa7dddb1805a0fd21ab10542722a  gcc/testsuite/gfortran.fortran-torture/execute/entry_10.f90
! 92d32267cbc00a5bf0963988c37aa8fe  gcc/testsuite/gfortran.fortran-torture/execute/entry_11.f90
! 8a169f9861f03d1d496ab5cd7c24d29a  gcc/testsuite/gfortran.fortran-torture/execute/entry_2.f90
! 0da710449afb281fd04dd22f24251482  gcc/testsuite/gfortran.fortran-torture/execute/entry_3.f90
! 02bc8d360db773aea62cde70acf74529  gcc/testsuite/gfortran.fortran-torture/execute/entry_4.f90
! 9ac602a17aaf4bc3127104eca10e1283  gcc/testsuite/gfortran.fortran-torture/execute/entry_5.f90
! 2b7beb28b9cae8f18416ef79d02ce8ea  gcc/testsuite/gfortran.fortran-torture/execute/entry_6.f90
! 9ebdf507ccfe0ab06ad461824776b790  gcc/testsuite/gfortran.fortran-torture/execute/entry_7.f90
! 54e9ea5ae6c883be14200b1601f588e7  gcc/testsuite/gfortran.fortran-torture/execute/entry_8.f90
! 51a6da13d9260e38a2c4736789563626  gcc/testsuite/gfortran.fortran-torture/execute/entry_9.f90
! 080ecfa318edb87bf0ce9aecdbaf0391  gcc/testsuite/gfortran.fortran-torture/execute/enum_1.f90
! 2f871b1da9b674614c4e1ca075ebffac  gcc/testsuite/gfortran.fortran-torture/execute/enum_2.f90
! 286e72553e650c4774c3a9278f897ea1  gcc/testsuite/gfortran.fortran-torture/execute/enum_3.f90
! 056645b9bd407fd3dea6d8d13e5b259f  gcc/testsuite/gfortran.fortran-torture/execute/enum_4.f90
! 42a641078f071973c4952980fe881f4e  gcc/testsuite/gfortran.fortran-torture/execute/equiv_1.f90
! 7c1fe2e65bd6764a489dbf7e0b6435ef  gcc/testsuite/gfortran.fortran-torture/execute/equiv_2.f90
! afc90fd730d588915b9e0f3e68d4f3f0  gcc/testsuite/gfortran.fortran-torture/execute/equiv_3.f90
! 3f7aad9ef2e32401c255424624a6d534  gcc/testsuite/gfortran.fortran-torture/execute/equiv_4.f90
  39b975ad31741b72a1b9d129fa059ceb  gcc/testsuite/gfortran.fortran-torture/execute/equiv_5.f
! 5468c314e679782b098df90704b52287  gcc/testsuite/gfortran.fortran-torture/execute/equiv_init_1.f90
! 8181aaae8c0f5d23eabf3f5fea063c33  gcc/testsuite/gfortran.fortran-torture/execute/execute.exp
! e29ba4ef7327796599cfa794be5f281c  gcc/testsuite/gfortran.fortran-torture/execute/f2_edit_1.f90
! 6f6d56288c39e4c068cbc93b2c642881  gcc/testsuite/gfortran.fortran-torture/execute/forall.f90
! 906a73a3f92ed05efcd5b5d1be488fbd  gcc/testsuite/gfortran.fortran-torture/execute/forall_1.f90
! d4a49bdc124f5a14571070b2b50b6215  gcc/testsuite/gfortran.fortran-torture/execute/forall_2.f90
! c2f7ec20520ad282c5e32c55a0e280f0  gcc/testsuite/gfortran.fortran-torture/execute/forall_3.f90
! b6834773296e9e937a07811c3c389234  gcc/testsuite/gfortran.fortran-torture/execute/forall_4.f90
! 8598114da531bdf1aec88489e18f65e0  gcc/testsuite/gfortran.fortran-torture/execute/forall_5.f90
! 80c54ef7568b0de173572f631541ff7e  gcc/testsuite/gfortran.fortran-torture/execute/forall_6.f90
! 4fe65f74c2b119cbd1dcd3bb580f6a12  gcc/testsuite/gfortran.fortran-torture/execute/forall_7.f90
! bea9d994c2bf04f9c8d8d84abd32f53e  gcc/testsuite/gfortran.fortran-torture/execute/function_module_1.f90
! 4bdeb05f45ffccd69ebd0830fa1b4073  gcc/testsuite/gfortran.fortran-torture/execute/getarg_1.f90
  9c96fb3226f737c9a0922049155777ee  gcc/testsuite/gfortran.fortran-torture/execute/getarg_1.x
! 3981599206c2b6dfc9928185121da7e1  gcc/testsuite/gfortran.fortran-torture/execute/hollerith.f90
! 77ea68f9247bab9b94a9eb2d6318fc41  gcc/testsuite/gfortran.fortran-torture/execute/in-pack.f90
! c3d8016114797f856f6503100a4715cd  gcc/testsuite/gfortran.fortran-torture/execute/initialization_1.f90
! e2e20fa5fba30aa404524bd89e9b5bfe  gcc/testsuite/gfortran.fortran-torture/execute/initializer.f90
! 2aae55c835b8e6741f9f2d1be2015a04  gcc/testsuite/gfortran.fortran-torture/execute/inquire_1.f90
! 8c332b898ec36f6ab2e1833100c53f31  gcc/testsuite/gfortran.fortran-torture/execute/inquire_2.f90
! 1d2da2514c7b3540772084da94ca5bec  gcc/testsuite/gfortran.fortran-torture/execute/inquire_3.f90
! 82c39da8d2434d75308b7fa6cbcb2ec3  gcc/testsuite/gfortran.fortran-torture/execute/inquire_4.f90
! cb4446d41f77e034910a573f87fd34c4  gcc/testsuite/gfortran.fortran-torture/execute/inquire_5.f90
! 4e62bf0859394332d134e10d40b398f6  gcc/testsuite/gfortran.fortran-torture/execute/integer_select.f90
! 56dae04ea5d5076cfc1b28905b5aa772  gcc/testsuite/gfortran.fortran-torture/execute/integer_select_1.f90
! 3fcbfc408dd0207ced332d7b7960f27c  gcc/testsuite/gfortran.fortran-torture/execute/internal_write.f90
! 0a3df575abfff28d1da0eeeb30184883  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_abs.f90
! 63a148eb2bed7d14b39d0df1717deacf  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_achar.f90
! fa6f7e52457d7f45c5bfadd9801d4d45  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_aint_anint.f90
! 1210bb35937f79a68623aef985015bb4  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_anyall.f90
! eb7c494e7d9050c01b1e9a536ee5b047  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_associated.f90
! 50ae824a3ee6951777b67092ac94d7eb  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_associated_2.f90
! 4586c8f24e4ab7ed6c310d8a43f7344b  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_bitops.f90
! ea9dd467240cddf7e5c2a84445a3a70f  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_count.f90
! e4bb83b1fe2f5ca6f41a44d4da522d34  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_cshift.f90
! a5326ecd8d7c980f2d935aad5d2ed8ba  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_dim.f90
! b79599b0d571e57edf5d0ecd27306f37  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_dotprod.f90
! 5b1372525357090f7dfe84a956e82ee6  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_dprod.f90
! 2f16e672213b188887608ffd7788867f  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_dummy.f90
! 8a9df047a9a4f8b706f55cf5deb2f4bb  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_eoshift.f90
! 19f6c27de873aa2109f5da1f67ded4aa  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_fraction_exponent.f90
  185dbe70ca3e91e8bbbfdb86a33aa985  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_fraction_exponent.x
! 1dbeb75034bfe3389b654b44a05102d0  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_index.f90
! 19d6539b4eb27cc34085a0343cb5f15d  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_integer.f90
! ab45f47526b21cabc21952bf9319b522  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_leadz.f90
! 7a02fd937fa702a8901ac0e2a6756087  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_len.f90
! 43c554e0e57f965d582258fae55fe1ee  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_matmul.f90
! 2de0d8d705988b1868b25d486815fbd1  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_merge.f90
! 5e2517bddcd04b61441503ed4217492f  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_minmax.f90
! 317a9c7f87ee9e97cef8fe9802ad4b42  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_mmloc.f90
! 116e5377f2f9d32aaa8ec8d6f46029e3  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_mmloc_2.f90
! 9cbac5ab56a235c7521ec751273fd93d  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_mmloc_3.f90
! 42f250604a456f57d2f1c3e3d13cfa55  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_mmloc_4.f90
! f216b4c4eb66411cb4aceae72f86c774  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_mmval.f90
! 9c6b3fa1016a4ffae74a04fd15807e73  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_mod_ulo.f90
! 0a1dce4e8727062327b411cc43a46996  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_mvbits.f90
! 666e3adc6f1276b62df676914719cda6  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_nearest.f90
  d5d5200f601480bbc316b3f0c7b1742a  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_nearest.x
! 82841463a6773a347f8c5f66c59180aa  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_pack.f90
! 821ad5126cb0337071c9c43b03c831ad  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_present.f90
! 98fbe917cf34db6969db5b5fec5152ed  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_product.f90
! 12832a90cdf4ed95adf9aed5ff8986ff  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_rrspacing.f90
! c1c7cab1fdd5a6b21c6506ae2ee96d84  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_scale.f90
! 223a15b76891759ff43c88a93c69116a  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_set_exponent.f90
  10c346a0d51bfa96e7e37d5be5ea51c5  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_set_exponent.x
! 88ad7a7cd00e8f4ae8775f46b93a03ff  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_shape.f90
! 42fe21051f5d74571940b5526cb2e5d8  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_si_kind.f90
! 207689fd6cb5c5d42348ecf02855227f  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_sign.f90
! 7fcb19c32afd0953c3b87c1ed4c1cbcf  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_size.f90
! 982cc897721baf0aec02f03bafc9804e  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_spacing.f90
  185dbe70ca3e91e8bbbfdb86a33aa985  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_spacing.x
! c4d3be7388d372dd8d6f5bde9a512a3d  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_spread.f90
! b5555b0f9532feabdd947af1b2b0d53c  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_sr_kind.f90
! af9dc9c89cbe0562ec01cfe23c7c79e3  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_sum.f90
! 4f91aa4a84ae7ced5f15c106d5a33ed2  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_trailz.f90
! ff484a62e047ae046f45567bfa04a945  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_transpose.f90
! f8fda2cf129c99595d11cdae7dab64db  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_trim.f90
! c684e0bfee2d2ffdd309785df326e7ee  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_unpack.f90
! b82301385fecae86e80cd5397e93da37  gcc/testsuite/gfortran.fortran-torture/execute/iolength_1.f90
! 66bfb619cbdccbeb223b6516d2b74583  gcc/testsuite/gfortran.fortran-torture/execute/iolength_2.f90
! 2825fc33b6a5a1dc03fce6b25db1e5c3  gcc/testsuite/gfortran.fortran-torture/execute/iolength_3.f90
! 8b40e2323e23c0f74e3b225c9451c96c  gcc/testsuite/gfortran.fortran-torture/execute/list_read_1.f90
  032ae8d42cc38d24fdd0735b133f40f5  gcc/testsuite/gfortran.fortran-torture/execute/list_read_1.x
! d98c16e21423908933498ab9989dc4c8  gcc/testsuite/gfortran.fortran-torture/execute/logical_select_1.f90
! 2a2fb3d04c9fd71184e27386972106ae  gcc/testsuite/gfortran.fortran-torture/execute/mainsub.f90
! 4c67aa02ad5bc73e0f9c245b1b93be43  gcc/testsuite/gfortran.fortran-torture/execute/math.f90
! c4e10e78c39a9ffb239ab82829d5b575  gcc/testsuite/gfortran.fortran-torture/execute/module_init_1.f90
  aa3df6f01d468f8fe2f9aa6ab8b989eb  gcc/testsuite/gfortran.fortran-torture/execute/module_interface.f90
! cb027452db3c4db0a24aacba8e099053  gcc/testsuite/gfortran.fortran-torture/execute/module_interface_2.f90
  3d06947d09f055c84e158f6cbf88a58e  gcc/testsuite/gfortran.fortran-torture/execute/mystery_proc.f90
! 32efe36a3844bc8426f8d7fd35e164bd  gcc/testsuite/gfortran.fortran-torture/execute/nan_inf_fmt.f90
  caa0cf76445da1695f7083aa2ed6fa60  gcc/testsuite/gfortran.fortran-torture/execute/nan_inf_fmt.x
! 3d8b1c4567e12bc884019922ef599f27  gcc/testsuite/gfortran.fortran-torture/execute/nestcons.f90
! 6ca1d288706e88a63c2d2db40d0d3426  gcc/testsuite/gfortran.fortran-torture/execute/nullarg.f90
  e924b097d77ae2b285bcda5ad2ae2e8e  gcc/testsuite/gfortran.fortran-torture/execute/open_replace.f90
! 1c729321e7f9b26a72efb7a9d5fcb306  gcc/testsuite/gfortran.fortran-torture/execute/optstring_1.f90
! ae40217bed30e1ba041b0ddce9f64348  gcc/testsuite/gfortran.fortran-torture/execute/parameter_1.f90
! 8afc7939f15729e23fbb5741016cf08a  gcc/testsuite/gfortran.fortran-torture/execute/parameter_2.f90
! bf42a844d5392372f628d55dcd25a0ed  gcc/testsuite/gfortran.fortran-torture/execute/partparm.f90
! 1b3c8103e577d6573dbb820adbe8d138  gcc/testsuite/gfortran.fortran-torture/execute/plusconst_1.f90
! 240543a22e9182330b10db910c8569cc  gcc/testsuite/gfortran.fortran-torture/execute/power.f90
! aa816d8f5ef5d24a6e170c281a0e6293  gcc/testsuite/gfortran.fortran-torture/execute/pr19269-1.f90
! 594fbc7ad162e540f2bad75ec6d72c7e  gcc/testsuite/gfortran.fortran-torture/execute/pr23373-1.f90
! 0d357eca53b4d95a16db7166f87b7439  gcc/testsuite/gfortran.fortran-torture/execute/pr23373-2.f90
! 07667f24ae28f6d6a2b702f73564e72f  gcc/testsuite/gfortran.fortran-torture/execute/pr32140.f90
  5c446847c788f3f0940dc6877970d396  gcc/testsuite/gfortran.fortran-torture/execute/pr32604.f90
! 0277cb8618f5a94496d3d935dccfcba0  gcc/testsuite/gfortran.fortran-torture/execute/pr40021.f
! 18d76094e6dbeab187d55c32505d6af4  gcc/testsuite/gfortran.fortran-torture/execute/pr43390.f90
! dd40d4b957380ba6ca3ab6addb8a5a14  gcc/testsuite/gfortran.fortran-torture/execute/pr54767.f90
! c617506fdfdc576d1ca5f17b049e5ce8  gcc/testsuite/gfortran.fortran-torture/execute/pr57396.f90
! 78df18b9400c1b2f401164418dc104c0  gcc/testsuite/gfortran.fortran-torture/execute/procarg.f90
! 54b26651618ba6afa7aae0c3b8994e66  gcc/testsuite/gfortran.fortran-torture/execute/ptr.f90
! eae8dc541702830d5c63bf337333c15b  gcc/testsuite/gfortran.fortran-torture/execute/random_1.f90
! 0a82e51f37a5f5e8a02befe2b38757dc  gcc/testsuite/gfortran.fortran-torture/execute/random_2.f90
! 21bd552a5f13dac27f928684ea6d4b98  gcc/testsuite/gfortran.fortran-torture/execute/random_init.f90
! 0d6f215881f586b1c663f21801ef0c14  gcc/testsuite/gfortran.fortran-torture/execute/read_eof.f90
! 63e101d84ac93b10d7fb272568c3da6f  gcc/testsuite/gfortran.fortran-torture/execute/read_null_string.f90
  032ae8d42cc38d24fdd0735b133f40f5  gcc/testsuite/gfortran.fortran-torture/execute/read_null_string.x
! ae6603961f751b81b00fdd411932f246  gcc/testsuite/gfortran.fortran-torture/execute/retarray.f90
! 09ec49247f4f4175745fd200841e1112  gcc/testsuite/gfortran.fortran-torture/execute/retarray_2.f90
! 782cc2188a40be9c05823726f5004872  gcc/testsuite/gfortran.fortran-torture/execute/save_1.f90
! d9e7212ca2c8b61d299beec5e8b6e23b  gcc/testsuite/gfortran.fortran-torture/execute/save_2.f90
! b0d4bea247f90bad5b3e070067a952c1  gcc/testsuite/gfortran.fortran-torture/execute/scalarize.f90
! cbe630d093895dfc907df7134c9956a2  gcc/testsuite/gfortran.fortran-torture/execute/scalarize2.f90
! 50f47fbaa1ba0e95584369952871d97e  gcc/testsuite/gfortran.fortran-torture/execute/scalarize3.f90
! 99950c57c0956054d3030d759dd96887  gcc/testsuite/gfortran.fortran-torture/execute/select_1.f90
! 5b3053f54aaa301e8a5b083b1b2f746d  gcc/testsuite/gfortran.fortran-torture/execute/seq_io.f90
  032ae8d42cc38d24fdd0735b133f40f5  gcc/testsuite/gfortran.fortran-torture/execute/seq_io.x
! 2295097d3690cb024a099e47a419cee6  gcc/testsuite/gfortran.fortran-torture/execute/slash_edit.f90
  032ae8d42cc38d24fdd0735b133f40f5  gcc/testsuite/gfortran.fortran-torture/execute/slash_edit.x
! 6e75408986788e87e2f419f12dac0e50  gcc/testsuite/gfortran.fortran-torture/execute/spec_abs.f90
! 42fab7dbcf29060275ae15c96c8dce5b  gcc/testsuite/gfortran.fortran-torture/execute/specifics.f90
! 1682c1a2789b9926df8e7e2971db8e5c  gcc/testsuite/gfortran.fortran-torture/execute/st_function.f90
! 8600f82ef19305e959f67b4201ee4877  gcc/testsuite/gfortran.fortran-torture/execute/st_function_1.f90
! 8bb888d9f7549c153d7c290d6ba3b3f4  gcc/testsuite/gfortran.fortran-torture/execute/st_function_2.f90
! 1f90a7a2f8406f1adcab8787f5ca6ec9  gcc/testsuite/gfortran.fortran-torture/execute/stack_varsize.f90
! 814b36214655431d9f0ad1b5c00485de  gcc/testsuite/gfortran.fortran-torture/execute/straret.f90
! 11910c087fcaa75005dd6fe790040c25  gcc/testsuite/gfortran.fortran-torture/execute/strarray_1.f90
! 5fef8edc9d5e218173e1cae6964813e0  gcc/testsuite/gfortran.fortran-torture/execute/strarray_2.f90
! 8f11c95e1d90beca0ab4cf297ab795ba  gcc/testsuite/gfortran.fortran-torture/execute/strarray_3.f90
! 7ec3a3984b13a2907dde23c185087983  gcc/testsuite/gfortran.fortran-torture/execute/strarray_4.f90
! e27eedd059455ffd918a120035cf38e3  gcc/testsuite/gfortran.fortran-torture/execute/strcmp.f90
! 2035f74375bc30dabefa35602c007b28  gcc/testsuite/gfortran.fortran-torture/execute/strcommon_1.f90
! 0887a951d44c4d6a247dcb3ad37fc210  gcc/testsuite/gfortran.fortran-torture/execute/string.f90
! 0f688426b64ff7d764e6887a3a99de98  gcc/testsuite/gfortran.fortran-torture/execute/strlen.f90
! 66a75b57c29375ebeb2ee2a330f1a1d7  gcc/testsuite/gfortran.fortran-torture/execute/strret.f90
! 7be5bd8af03d50041a91a64fb6b0dc67  gcc/testsuite/gfortran.fortran-torture/execute/t_edit.f90
! 431c051aa9b4cdf90c28742e78717498  gcc/testsuite/gfortran.fortran-torture/execute/test_slice.f90
! a52e0f98420131b6fd7b5e2d20456c15  gcc/testsuite/gfortran.fortran-torture/execute/transfer1.f90
! 4229a88a1897d7f7d79ee72564098727  gcc/testsuite/gfortran.fortran-torture/execute/transfer2.f90
! 24ff8e5f1541b6a17ffd9a70a229c775  gcc/testsuite/gfortran.fortran-torture/execute/unopened_unit_1.f90
  032ae8d42cc38d24fdd0735b133f40f5  gcc/testsuite/gfortran.fortran-torture/execute/unopened_unit_1.x
! b151b8faf66986b8e14e9a21043e59fc  gcc/testsuite/gfortran.fortran-torture/execute/userop.f90
! e8bfb639c2d2fa4e4d98ce7cc7273526  gcc/testsuite/gfortran.fortran-torture/execute/where17.f90
! 55144e97b667fd446a927e6f79cb1c89  gcc/testsuite/gfortran.fortran-torture/execute/where18.f90
! 35d860773f48530375c97ca32804016b  gcc/testsuite/gfortran.fortran-torture/execute/where19.f90
! 1b806d415a32a3fd1cbbbca8617dbcb4  gcc/testsuite/gfortran.fortran-torture/execute/where20.f90
! 187531b8bd3e5b5048b4718492045289  gcc/testsuite/gfortran.fortran-torture/execute/where21.f90
! 166523115ac3cb51fddead7ffd929b79  gcc/testsuite/gfortran.fortran-torture/execute/where_1.f90
! 2db495dccbe083ce5d3437242cc14384  gcc/testsuite/gfortran.fortran-torture/execute/where_10.f90
! 75e0e4554f294ac69aa1aab6117f6379  gcc/testsuite/gfortran.fortran-torture/execute/where_11.f90
  7e5a4c1d928ba72f30b1c700f7c38780  gcc/testsuite/gfortran.fortran-torture/execute/where_12.f90
  81a97337f8ae90dd185791c665fed3f7  gcc/testsuite/gfortran.fortran-torture/execute/where_13.f90
! 539689ad2fa9369efdd4f01d149b7413  gcc/testsuite/gfortran.fortran-torture/execute/where_14.f90
! 1f5f80af27351c5982bb3aaec5c37827  gcc/testsuite/gfortran.fortran-torture/execute/where_15.f90
! 5b19a7d5443988e6df3ffaf65707bd73  gcc/testsuite/gfortran.fortran-torture/execute/where_16.f90
! 53c6a3de9220c2ac692ebd9ce2203126  gcc/testsuite/gfortran.fortran-torture/execute/where_2.f90
! 65c22e3815e83f69d82c4e496232b0c0  gcc/testsuite/gfortran.fortran-torture/execute/where_3.f90
! 8925b1eab2abe9ccb3f3dbc6b516b076  gcc/testsuite/gfortran.fortran-torture/execute/where_4.f90
! 196672be0ab0a3f66d1e713fc9e6a8fc  gcc/testsuite/gfortran.fortran-torture/execute/where_5.f90
! 71c8286d3f667f42a71121212f6d0b0b  gcc/testsuite/gfortran.fortran-torture/execute/where_6.f90
! d12068da26dea9491f04cfe03a0f20b9  gcc/testsuite/gfortran.fortran-torture/execute/where_7.f90
! 303d2ed346b5877c874e82c368c784ba  gcc/testsuite/gfortran.fortran-torture/execute/where_8.f90
! d67eed00ffebcafb164b4683c564d121  gcc/testsuite/gfortran.fortran-torture/execute/write_a_1.f90
! be634afd323491ebdde9405975234d0c  gcc/testsuite/gfortran.fortran-torture/execute/write_logical.f90
  683a49e44d3e676e614119b1a0681414  gcc/testsuite/gnat.dg/abstract1.adb
  97e62e221b278ff05353a4d7b98ec6f8  gcc/testsuite/gnat.dg/abstract1.ads
  f8aa1b9b6d8605d6d8f8640d0af378d3  gcc/testsuite/gnat.dg/abstract_with_anonymous_result.adb
--- 57626,57878 ----
  8970763a0d6640ed8045b377b1d8169d  gcc/testsuite/gfortran.fortran-torture/compile/pr77798.f90
  410f18b3d4cb0a5385b6b174bbb60601  gcc/testsuite/gfortran.fortran-torture/compile/pr80158.f
  60ec5373de19f8eb86d53d7b8bd09c1a  gcc/testsuite/gfortran.fortran-torture/compile/pr80464.f90
+ 07d63f713ab5eefef2156e5123da01a8  gcc/testsuite/gfortran.fortran-torture/compile/pr83189.f90
  7602f8cc2d0ebd2bf0bb974069a764e0  gcc/testsuite/gfortran.fortran-torture/compile/shape_reshape.f90
  d5ee9d72b3b02f47b393934ca0c89627  gcc/testsuite/gfortran.fortran-torture/compile/stoppause.f90
  0be215e4a53f9370c44eaa153bf1ed6e  gcc/testsuite/gfortran.fortran-torture/compile/strparm_1.f90
  715b145bef951b5e003576d07e400282  gcc/testsuite/gfortran.fortran-torture/compile/transfer-1.f90
  9d68b84e86e71b1e5c1540498c47a649  gcc/testsuite/gfortran.fortran-torture/compile/vrp_1.f90
  a43b835e8821eca7a1f12a310ddc40cb  gcc/testsuite/gfortran.fortran-torture/compile/write.f90
! a06c2b76915b09ba1adac20d486f9826  gcc/testsuite/gfortran.fortran-torture/execute/a_edit_1.f90
! ee3efb5607a7c68b5d139880d2bd7166  gcc/testsuite/gfortran.fortran-torture/execute/adjustr.f90
! 32f1e6882aef93de1125f690c37f499b  gcc/testsuite/gfortran.fortran-torture/execute/allocate.f90
! 3a564fc2584567db19c75458a1b57362  gcc/testsuite/gfortran.fortran-torture/execute/alternate_return.f90
! 2a998b65d8d66e432778e7afc78cc7a8  gcc/testsuite/gfortran.fortran-torture/execute/args.f90
! c367ff440f44a5d500b4d3e8f47fde2b  gcc/testsuite/gfortran.fortran-torture/execute/arithmeticif.f90
! 67f6a24a6ca38ec3094c1fba05689609  gcc/testsuite/gfortran.fortran-torture/execute/arrayarg.f90
! 91c5bc892286a6de4e0114962903efc4  gcc/testsuite/gfortran.fortran-torture/execute/arrayarg2.f90
! 609f743681d34a9bc496363643ed9255  gcc/testsuite/gfortran.fortran-torture/execute/arraysave.f90
! 537cdcc241641d38cb9f85b930a0035f  gcc/testsuite/gfortran.fortran-torture/execute/assumed_size.f90
! 24eb7f16da0aa431506982d05adb85f5  gcc/testsuite/gfortran.fortran-torture/execute/backspace.f90
  032ae8d42cc38d24fdd0735b133f40f5  gcc/testsuite/gfortran.fortran-torture/execute/backspace.x
! 7e4ccd10bb14cc57b6d110677dea0b74  gcc/testsuite/gfortran.fortran-torture/execute/bounds.f90
! 4e458cde33a6d8408a1ebc6eda6c5bd7  gcc/testsuite/gfortran.fortran-torture/execute/character_passing.f90
! e4b100b702c1ddbdd0ce7f05bae29f42  gcc/testsuite/gfortran.fortran-torture/execute/character_select_1.f90
! 10f1532a1be1e823ad9f462c3527dd53  gcc/testsuite/gfortran.fortran-torture/execute/cmplx.f90
! c81ad355fc95914596226c94b2215b1e  gcc/testsuite/gfortran.fortran-torture/execute/common.f90
! ef39bf99c31ad1c67ba849fa2996b001  gcc/testsuite/gfortran.fortran-torture/execute/common_2.f90
! 405fd184ea3e4a7e566f383362b8853a  gcc/testsuite/gfortran.fortran-torture/execute/common_init_1.f90
! cc4ff1541fa5c8d836a544475d100f45  gcc/testsuite/gfortran.fortran-torture/execute/common_size.f90
! 97e2b2a5d4449201fcbcc80ca6ebe84f  gcc/testsuite/gfortran.fortran-torture/execute/constructor.f90
! 12ffb2fab2ca203c4b785939b89d0928  gcc/testsuite/gfortran.fortran-torture/execute/contained.f90
! 5651d2d31c09372099323e41e890d467  gcc/testsuite/gfortran.fortran-torture/execute/contained2.f90
! 70c2d958f38d2b923ad5fe1348a2dd18  gcc/testsuite/gfortran.fortran-torture/execute/contained_3.f90
! 24b2bae6993a38b1ec79b2c96e8578bc  gcc/testsuite/gfortran.fortran-torture/execute/csqrt_1.f90
! eeb99710922300016d2c45bacf3e0e84  gcc/testsuite/gfortran.fortran-torture/execute/data.f90
! 3ad3cdd6a3790d1e08b6b81b88c6c04f  gcc/testsuite/gfortran.fortran-torture/execute/data_2.f90
! fd85757a24a22c8ce7aea6f1e70524b3  gcc/testsuite/gfortran.fortran-torture/execute/data_3.f90
! 4c816b12422f34c1f377d09e691345bf  gcc/testsuite/gfortran.fortran-torture/execute/data_4.f90
  86f50fdf7db294e69d74df7a734d79d4  gcc/testsuite/gfortran.fortran-torture/execute/date_time_1.f90
! 406e3a52fee4d25f6a7cd945d6bb6097  gcc/testsuite/gfortran.fortran-torture/execute/dep_fails.f90
! 809a60444ffba56636280666fe227dc9  gcc/testsuite/gfortran.fortran-torture/execute/der_init.f90
! c0567939efcd4f3de56773ba2ccc8fdf  gcc/testsuite/gfortran.fortran-torture/execute/der_init_2.f90
! e962c599e830b63a3001a6f861ddf655  gcc/testsuite/gfortran.fortran-torture/execute/der_init_3.f90
! 4dc63e5ae5800544e8cd31a3c388665d  gcc/testsuite/gfortran.fortran-torture/execute/der_init_4.f90
! 0f720a4c982fb1246db424397b76194c  gcc/testsuite/gfortran.fortran-torture/execute/der_init_5.f90
! e20ef40cce5c02629d74ff74bddb5bdd  gcc/testsuite/gfortran.fortran-torture/execute/der_io.f90
! 5b4cdbb5c70831c677c6e7e73f9632bb  gcc/testsuite/gfortran.fortran-torture/execute/der_point.f90
! 03277924717213b5c13bab249f470362  gcc/testsuite/gfortran.fortran-torture/execute/der_type.f90
! a86974470390ac8155a367dd5b4045d6  gcc/testsuite/gfortran.fortran-torture/execute/direct_io.f90
! d2c2d4bd2ef49070ee202ea92ba6538a  gcc/testsuite/gfortran.fortran-torture/execute/elemental.f90
! 4c98906131b100b42d85b177a3fc5ebb  gcc/testsuite/gfortran.fortran-torture/execute/empty_format.f90
! 09bf54de541e34daefcac11919aabfa7  gcc/testsuite/gfortran.fortran-torture/execute/emptyif.f90
! 8a05d52c763b83c62190594d6a540b4d  gcc/testsuite/gfortran.fortran-torture/execute/entry_1.f90
! 80289bb43f4df0d9b2701b1deffe09a9  gcc/testsuite/gfortran.fortran-torture/execute/entry_10.f90
! 18e52f133c536e6358f8ef93c255d5fb  gcc/testsuite/gfortran.fortran-torture/execute/entry_11.f90
! ab53db4130911627f394974ebc7598d2  gcc/testsuite/gfortran.fortran-torture/execute/entry_2.f90
! 9439c3a3ef8089799b228729e91705b4  gcc/testsuite/gfortran.fortran-torture/execute/entry_3.f90
! 8e055aead1ec8088ea5920e9c58000a6  gcc/testsuite/gfortran.fortran-torture/execute/entry_4.f90
! ddd33507442378a04e3be9d1ad6f5f44  gcc/testsuite/gfortran.fortran-torture/execute/entry_5.f90
! fdbade3f16d724aa886852d069eae3e1  gcc/testsuite/gfortran.fortran-torture/execute/entry_6.f90
! acdbf86962af5b47aba91cf1eeac5490  gcc/testsuite/gfortran.fortran-torture/execute/entry_7.f90
! 7de14ffb44427fd62650ad396c56cb7e  gcc/testsuite/gfortran.fortran-torture/execute/entry_8.f90
! 36714b4cfacfa6c4d06e71c9f5ce57b7  gcc/testsuite/gfortran.fortran-torture/execute/entry_9.f90
! 804b250ef29f578ec35f731edcce71be  gcc/testsuite/gfortran.fortran-torture/execute/enum_1.f90
! bb5b9a612a95c42ff069b93e2b824271  gcc/testsuite/gfortran.fortran-torture/execute/enum_2.f90
! b34b25b967cd77639e123317e2df451f  gcc/testsuite/gfortran.fortran-torture/execute/enum_3.f90
! 52d9cbe59fd0b2def0ae58088d55d503  gcc/testsuite/gfortran.fortran-torture/execute/enum_4.f90
! 2a4747d4fa0fd965dda9064856d3ba85  gcc/testsuite/gfortran.fortran-torture/execute/equiv_1.f90
! 724f86a4a5b51beb7624b5d62316feba  gcc/testsuite/gfortran.fortran-torture/execute/equiv_2.f90
! 939702eb05d1863388a7c9b1dfa85188  gcc/testsuite/gfortran.fortran-torture/execute/equiv_3.f90
! 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
! 8a3fec970beab73d2075ab44a742296e  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
! 1787d16cb9866c69c2ce8e785b13b9ad  gcc/testsuite/gfortran.fortran-torture/execute/forall_2.f90
! 6c21b323d45dce3f55e8e5663ab66d04  gcc/testsuite/gfortran.fortran-torture/execute/forall_3.f90
! ca34683b9e9b7fad5e8c6d6e8196f8dc  gcc/testsuite/gfortran.fortran-torture/execute/forall_4.f90
! ce4c005c9a8ce41be3c8308c56057c85  gcc/testsuite/gfortran.fortran-torture/execute/forall_5.f90
! d7a15b78143251dade624b93954122c6  gcc/testsuite/gfortran.fortran-torture/execute/forall_6.f90
! 4d0d5375679ca4a4030516df177d0808  gcc/testsuite/gfortran.fortran-torture/execute/forall_7.f90
! 6180fbd2eec4756dc123ab139c71eda8  gcc/testsuite/gfortran.fortran-torture/execute/function_module_1.f90
! a30d9e00f2ced1c22aabbc92c0f8b0d8  gcc/testsuite/gfortran.fortran-torture/execute/getarg_1.f90
  9c96fb3226f737c9a0922049155777ee  gcc/testsuite/gfortran.fortran-torture/execute/getarg_1.x
! 07604e85d2552e7b1bbdaf4096d7f1b4  gcc/testsuite/gfortran.fortran-torture/execute/hollerith.f90
! 64926061c83f322e9bf862c2ecedcd7c  gcc/testsuite/gfortran.fortran-torture/execute/in-pack.f90
! b77ea74590b7c7410510800b60984bef  gcc/testsuite/gfortran.fortran-torture/execute/initialization_1.f90
! f5628f0e8cf36121483de6547d994be7  gcc/testsuite/gfortran.fortran-torture/execute/initializer.f90
! 7113444576cf70d4b87438fcea5f243e  gcc/testsuite/gfortran.fortran-torture/execute/inquire_1.f90
! 786b1935afc80c8ca14f558273ae7efb  gcc/testsuite/gfortran.fortran-torture/execute/inquire_2.f90
! 67793dca4f6c33166d7dfcee8d4569cd  gcc/testsuite/gfortran.fortran-torture/execute/inquire_3.f90
! 5635518b6d1040578cf7b1994f3a222b  gcc/testsuite/gfortran.fortran-torture/execute/inquire_4.f90
! a794ee4838cd2921e8da368b4e86978c  gcc/testsuite/gfortran.fortran-torture/execute/inquire_5.f90
! 47df742274fa4f54c3b827891fcd7de7  gcc/testsuite/gfortran.fortran-torture/execute/integer_select.f90
! d57fa62b538c90405c8027fb93aaa9b4  gcc/testsuite/gfortran.fortran-torture/execute/integer_select_1.f90
! 1b1f00b0cfe457233cec74cadf68030e  gcc/testsuite/gfortran.fortran-torture/execute/internal_write.f90
! 3c4a8576da82bae41fbb563a0c9b7ad4  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_abs.f90
! 46e093aa23d274b490ca8d4d4f682b21  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_achar.f90
! f73bd54e1b08457c768cce499e91f587  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_aint_anint.f90
! 00c55c12a7e071fea9f84e06beec782b  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_anyall.f90
! 5426913f1f6c1f23e6aca2411a10fbee  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_associated.f90
! 0b45ccb770c99bf263fc896ebc6538f4  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_associated_2.f90
! 32c15d9b5b19346d0a2cc252bc8c3b44  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_bitops.f90
! 8756e5947260792f382aa6fb65a38f1c  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_count.f90
! 3a90cfa89da3a931301af037ecc8a77f  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_cshift.f90
! af0c7f6ae23a88ce4d51a3e656d2175e  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_dim.f90
! c17939e653ab4e1f56a9e50273b560c4  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_dotprod.f90
! b5ea144eeee2a5c42763d94384a11810  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_dprod.f90
! a112c416d44a8786ba7b455bba939195  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_dummy.f90
! c5256258e68e74c45b8f8daacb21fbe5  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_eoshift.f90
! a2d379600abd89cd9c84a1ca06b00227  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_fraction_exponent.f90
  185dbe70ca3e91e8bbbfdb86a33aa985  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_fraction_exponent.x
! 55976ff63926f9b1ebf60a68b1f79169  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_index.f90
! 57970c6e920939242128ec6d6fbf8639  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_integer.f90
! a5575e847571bef54c2e3d9765cf8a07  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_leadz.f90
! ee7be3bcf1a67deaf380aae2127fb31c  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_len.f90
! e19b35e856c041a8f792f79a8cdff9ea  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_matmul.f90
! 453c4989f98835330715422dd25f0a23  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_merge.f90
! 6ebe5fb25e3657d5ee20f0471fa2e337  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_minmax.f90
! 217361212fc79eeb2cc9f08eced7aaf8  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_mmloc.f90
! c5b7f9562b5f4ba4bf4495729fa7e952  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_mmloc_2.f90
! 03670800c1df6d49ecd4f6b8f85b3bde  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_mmloc_3.f90
! 17af5539ee965af636e22b464446ffd7  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_mmloc_4.f90
! 68cf05d7b27276371c07cbb579b8aafb  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_mmval.f90
! 4cb5601b2a799859035060dc0979a188  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_mod_ulo.f90
! 035b11ab50ed1ee8662d57038e7d9dc9  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_mvbits.f90
! 8bf586d8c09b85b704e7871fe8743975  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_nearest.f90
  d5d5200f601480bbc316b3f0c7b1742a  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_nearest.x
! 70fb5e95086401cd8b0da3d61cdcb7c2  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_pack.f90
! 989f2c918346ed8be31c3f74f33b5da3  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_present.f90
! 3b75df0e3455297ed8f439c0577af3e3  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_product.f90
! fcdbf61cb1845979ab5a1c6d1085292e  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_rrspacing.f90
! 01c288237f5f5ed17239a583868ac41e  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_scale.f90
! 3dfee79b19785048814dcb460e4939b1  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_set_exponent.f90
  10c346a0d51bfa96e7e37d5be5ea51c5  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_set_exponent.x
! 30fceaaff9c55817abdf7cda04c2f834  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_shape.f90
! 78d3d4dbb9fb7782fcf9c528c589f97f  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_si_kind.f90
! a9377416d898f41d323fc4b2ba8d09ba  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_sign.f90
! e8fca43e4e1f88f53fb68fc846e196d2  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_size.f90
! 874d136eb34166fc50599d213085f4ee  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_spacing.f90
  185dbe70ca3e91e8bbbfdb86a33aa985  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_spacing.x
! 5fe5529078f088ee0331b9f5853cb50e  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_spread.f90
! 8a7e4f03c272364cf1cc6b49ac592da1  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_sr_kind.f90
! 21f295efad6313a7275991e40d59c3ea  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_sum.f90
! ecffcf36ea7b3296ab7e06503df86dd2  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_trailz.f90
! 1908f979b876898faba61a95600552e1  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_transpose.f90
! 4c1be8603ab6cf816ebaede4f2a29a94  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_trim.f90
! 1dc1eb731c1e0a3e987979d8663d8687  gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_unpack.f90
! 6896f6a1ab4f900badbe164bb30aa1bf  gcc/testsuite/gfortran.fortran-torture/execute/iolength_1.f90
! b57cfd51590b8bffaa8a8aed7c85e117  gcc/testsuite/gfortran.fortran-torture/execute/iolength_2.f90
! 38fa09e5a1f05ae0883882ee74543efb  gcc/testsuite/gfortran.fortran-torture/execute/iolength_3.f90
! 93a42791c395fc875bfc9ca1bed80ac3  gcc/testsuite/gfortran.fortran-torture/execute/list_read_1.f90
  032ae8d42cc38d24fdd0735b133f40f5  gcc/testsuite/gfortran.fortran-torture/execute/list_read_1.x
! c76802c58f5ae8ab37eed86cbecca38b  gcc/testsuite/gfortran.fortran-torture/execute/logical_select_1.f90
! 87afc7b05bb1fb78339cb7c8636a4d23  gcc/testsuite/gfortran.fortran-torture/execute/mainsub.f90
! c7240602f1013e26173c42516c0729fd  gcc/testsuite/gfortran.fortran-torture/execute/math.f90
! df98429cf471868e248286c6a00985a6  gcc/testsuite/gfortran.fortran-torture/execute/module_init_1.f90
  aa3df6f01d468f8fe2f9aa6ab8b989eb  gcc/testsuite/gfortran.fortran-torture/execute/module_interface.f90
! 859a627f8f569a8e707b05cefc2ce4dc  gcc/testsuite/gfortran.fortran-torture/execute/module_interface_2.f90
  3d06947d09f055c84e158f6cbf88a58e  gcc/testsuite/gfortran.fortran-torture/execute/mystery_proc.f90
! 275c00ecbcb90cadb68b6bd528822da9  gcc/testsuite/gfortran.fortran-torture/execute/nan_inf_fmt.f90
  caa0cf76445da1695f7083aa2ed6fa60  gcc/testsuite/gfortran.fortran-torture/execute/nan_inf_fmt.x
! 876223f3e9e33c4e472cb83935e63108  gcc/testsuite/gfortran.fortran-torture/execute/nestcons.f90
! b1b0b6563863f958762cad58a38f9bd4  gcc/testsuite/gfortran.fortran-torture/execute/nullarg.f90
  e924b097d77ae2b285bcda5ad2ae2e8e  gcc/testsuite/gfortran.fortran-torture/execute/open_replace.f90
! 26c4dc1a122d22c42e176ecf9deea185  gcc/testsuite/gfortran.fortran-torture/execute/optstring_1.f90
! f77534e506ccdcc39a4f660524f52cbd  gcc/testsuite/gfortran.fortran-torture/execute/parameter_1.f90
! 0288bb823ab9b98094993dbd9c8029fd  gcc/testsuite/gfortran.fortran-torture/execute/parameter_2.f90
! 6cf3fc5987a47a06887fc8d1fb176891  gcc/testsuite/gfortran.fortran-torture/execute/partparm.f90
! 9bed673035dd0388f6ddf1cce3500aae  gcc/testsuite/gfortran.fortran-torture/execute/plusconst_1.f90
! 50c43c7a6c3ff642b6d32a966599d209  gcc/testsuite/gfortran.fortran-torture/execute/power.f90
! 739d59d6f8a2369ec23e44f084582cbc  gcc/testsuite/gfortran.fortran-torture/execute/pr19269-1.f90
! 7136dc5a5434ebf5c2106b882f5cdd67  gcc/testsuite/gfortran.fortran-torture/execute/pr23373-1.f90
! 3ad8cc12f54d7c672adba7d638c88cda  gcc/testsuite/gfortran.fortran-torture/execute/pr23373-2.f90
! 21053e15fa3fadfe3c8e94f3dd208eba  gcc/testsuite/gfortran.fortran-torture/execute/pr32140.f90
  5c446847c788f3f0940dc6877970d396  gcc/testsuite/gfortran.fortran-torture/execute/pr32604.f90
! f377617fb3b6fefd1a792bba6538085b  gcc/testsuite/gfortran.fortran-torture/execute/pr40021.f
! 4f482857c823676abc85414ce49469c8  gcc/testsuite/gfortran.fortran-torture/execute/pr43390.f90
! d579f9fdf0d2f05a3179a4132a819d7d  gcc/testsuite/gfortran.fortran-torture/execute/pr54767.f90
! b76b316fe506710d882b75e16b5f6bae  gcc/testsuite/gfortran.fortran-torture/execute/pr57396.f90
! ea21bf08253040de02882b16e1b791e8  gcc/testsuite/gfortran.fortran-torture/execute/procarg.f90
! 0a542ec48a9d58c3d3c80890025d1391  gcc/testsuite/gfortran.fortran-torture/execute/ptr.f90
! 26890000c03243347888b49211c7069f  gcc/testsuite/gfortran.fortran-torture/execute/random_1.f90
! 0121c0e3d76b20754ce8b5daebe5c257  gcc/testsuite/gfortran.fortran-torture/execute/random_2.f90
! d1a91971723e076138a17c66342827aa  gcc/testsuite/gfortran.fortran-torture/execute/random_init.f90
! abb8122d42375483d8b930d0c41dedc0  gcc/testsuite/gfortran.fortran-torture/execute/read_eof.f90
! 02fd05b93073ae9c91981585977ce1e9  gcc/testsuite/gfortran.fortran-torture/execute/read_null_string.f90
  032ae8d42cc38d24fdd0735b133f40f5  gcc/testsuite/gfortran.fortran-torture/execute/read_null_string.x
! 62de72ddfadd347169ac7ecd24b641dc  gcc/testsuite/gfortran.fortran-torture/execute/retarray.f90
! 651e5015a40351de1d591ad1b93171da  gcc/testsuite/gfortran.fortran-torture/execute/retarray_2.f90
! 725276dc39f785115cddcb7e49342f37  gcc/testsuite/gfortran.fortran-torture/execute/save_1.f90
! 7e46ae00bbb03d7f24e125cc7ab5d780  gcc/testsuite/gfortran.fortran-torture/execute/save_2.f90
! a958ac467961584da3f9434816506eb2  gcc/testsuite/gfortran.fortran-torture/execute/scalarize.f90
! 30e606f656c1cb8dbc448f874eccba3c  gcc/testsuite/gfortran.fortran-torture/execute/scalarize2.f90
! 518bd6eb33e92951a6097b866dc4ebee  gcc/testsuite/gfortran.fortran-torture/execute/scalarize3.f90
! dfed75465b259e4e7d192a0fc7f90571  gcc/testsuite/gfortran.fortran-torture/execute/select_1.f90
! 57ee8e18499ce7d2bbbf840fc2bef188  gcc/testsuite/gfortran.fortran-torture/execute/seq_io.f90
  032ae8d42cc38d24fdd0735b133f40f5  gcc/testsuite/gfortran.fortran-torture/execute/seq_io.x
! c304142d46ada639cd5e1c9ea5d8dcad  gcc/testsuite/gfortran.fortran-torture/execute/slash_edit.f90
  032ae8d42cc38d24fdd0735b133f40f5  gcc/testsuite/gfortran.fortran-torture/execute/slash_edit.x
! 60960df78bb4143dc38acce5938e1015  gcc/testsuite/gfortran.fortran-torture/execute/spec_abs.f90
! bd0653ba8e02f68dae2dad8f2cbd1eda  gcc/testsuite/gfortran.fortran-torture/execute/specifics.f90
! 5b337993ca94ea9e79a1f834b63ce8b1  gcc/testsuite/gfortran.fortran-torture/execute/st_function.f90
! ff548f4181051048359ee30e741740aa  gcc/testsuite/gfortran.fortran-torture/execute/st_function_1.f90
! 401fc632f36970094d7d7076bbc1bcf1  gcc/testsuite/gfortran.fortran-torture/execute/st_function_2.f90
! 85965a37c57ee1a92cad9f84e38c9c19  gcc/testsuite/gfortran.fortran-torture/execute/stack_varsize.f90
! 2d22c81603b94f9ff6a2e9c75e58318b  gcc/testsuite/gfortran.fortran-torture/execute/straret.f90
! e65910b4d8bcdc31b2909a46adaf5393  gcc/testsuite/gfortran.fortran-torture/execute/strarray_1.f90
! f997772a4e8834955ea4d3ce7ca327f4  gcc/testsuite/gfortran.fortran-torture/execute/strarray_2.f90
! a173a661166d8c0544e13ea93ee94a04  gcc/testsuite/gfortran.fortran-torture/execute/strarray_3.f90
! 4b235dbacec14df4a56acffd057c0217  gcc/testsuite/gfortran.fortran-torture/execute/strarray_4.f90
! 1875b7ba4bc16807c8b97f029a0086d9  gcc/testsuite/gfortran.fortran-torture/execute/strcmp.f90
! 4a98084e2989a004786094f740349321  gcc/testsuite/gfortran.fortran-torture/execute/strcommon_1.f90
! e71cc494256a4f36feca479536898657  gcc/testsuite/gfortran.fortran-torture/execute/string.f90
! 9c654bba93232c26fc3e98f1161e6fb9  gcc/testsuite/gfortran.fortran-torture/execute/strlen.f90
! 99b5d1346a0f5d14a9598d04411796c0  gcc/testsuite/gfortran.fortran-torture/execute/strret.f90
! 679c895a3cabf9c22d6f08d9c2e4d77d  gcc/testsuite/gfortran.fortran-torture/execute/t_edit.f90
! 0e1e3fe47dc3dfbeb49eb9bba23addc3  gcc/testsuite/gfortran.fortran-torture/execute/test_slice.f90
! 38c225b97b57ab0d2b24b8dccf045ef4  gcc/testsuite/gfortran.fortran-torture/execute/transfer1.f90
! 3e5324ed319ef685eccbad2b4d4fa74e  gcc/testsuite/gfortran.fortran-torture/execute/transfer2.f90
! 564bafb009130b525e7466ae6a476f06  gcc/testsuite/gfortran.fortran-torture/execute/unopened_unit_1.f90
  032ae8d42cc38d24fdd0735b133f40f5  gcc/testsuite/gfortran.fortran-torture/execute/unopened_unit_1.x
! b7cf029943b510753ce9010d90c7a7ee  gcc/testsuite/gfortran.fortran-torture/execute/userop.f90
! 17f40a76353c5ad4563cf98d785f2349  gcc/testsuite/gfortran.fortran-torture/execute/where17.f90
! c496188025757ca9ccc7125f4e308c25  gcc/testsuite/gfortran.fortran-torture/execute/where18.f90
! 3db9b581fa525d23548a9bf61e715c05  gcc/testsuite/gfortran.fortran-torture/execute/where19.f90
! 163bc88a918fa958566403ce29311340  gcc/testsuite/gfortran.fortran-torture/execute/where20.f90
! ba7263f991b7325978b37a45a48529f2  gcc/testsuite/gfortran.fortran-torture/execute/where21.f90
! ab9933d389e69c2f3c3b28dfebd2bf11  gcc/testsuite/gfortran.fortran-torture/execute/where_1.f90
! 728ad1662ef9f1030a9b35c7d4461d17  gcc/testsuite/gfortran.fortran-torture/execute/where_10.f90
! 01a6985541a5d492379ac8cf5f1a9602  gcc/testsuite/gfortran.fortran-torture/execute/where_11.f90
  7e5a4c1d928ba72f30b1c700f7c38780  gcc/testsuite/gfortran.fortran-torture/execute/where_12.f90
  81a97337f8ae90dd185791c665fed3f7  gcc/testsuite/gfortran.fortran-torture/execute/where_13.f90
! 0ee5f428543f1020a438473436869c8c  gcc/testsuite/gfortran.fortran-torture/execute/where_14.f90
! 8d5b677569e9b13d284e826b9b7c7c65  gcc/testsuite/gfortran.fortran-torture/execute/where_15.f90
! 6e1e494b0ed979e54b807aa0798cad69  gcc/testsuite/gfortran.fortran-torture/execute/where_16.f90
! df67e5683681f81ce938b4e544ec0d1a  gcc/testsuite/gfortran.fortran-torture/execute/where_2.f90
! 9226df3cdd38c41ec185e3228d35cb26  gcc/testsuite/gfortran.fortran-torture/execute/where_3.f90
! c9c55a21526c86966f8b4aa9749ac3ab  gcc/testsuite/gfortran.fortran-torture/execute/where_4.f90
! ac904eb632d38a2d749bad679246b301  gcc/testsuite/gfortran.fortran-torture/execute/where_5.f90
! 356700729d8c4afb2783ead19d28003a  gcc/testsuite/gfortran.fortran-torture/execute/where_6.f90
! b7777c6604106297693e31038efb5ae1  gcc/testsuite/gfortran.fortran-torture/execute/where_7.f90
! 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
  f8aa1b9b6d8605d6d8f8640d0af378d3  gcc/testsuite/gnat.dg/abstract_with_anonymous_result.adb
*************** e22a73416ff2fd193f2c78a86cb4f706  gcc/te
*** 54156,54161 ****
--- 57934,57941 ----
  d1761b5aeb44651e4fb14099289d169a  gcc/testsuite/gnat.dg/aggr21.adb
  9f0b1af027d77b51f40f8dc897706196  gcc/testsuite/gnat.dg/aggr21_pkg.adb
  d0b1bae52ad49484cf02a56de75f2bd3  gcc/testsuite/gnat.dg/aggr21_pkg.ads
+ 2ae10080f3e6049629dd031d50dfda2e  gcc/testsuite/gnat.dg/aggr22.adb
+ 9be79f345187d0278d38c2f3129fe3cc  gcc/testsuite/gnat.dg/aggr22.ads
  674ef7d1ee7e35c007365502de84ded5  gcc/testsuite/gnat.dg/aggr3.adb
  35168b6dce753ec723ff0dcf21d977d0  gcc/testsuite/gnat.dg/aggr4.adb
  a12ec40d7ebc1ab08b05b0d1f6a57bc4  gcc/testsuite/gnat.dg/aggr7.adb
*************** e152953638eb43ef2573565e5bff18dc  gcc/te
*** 54177,54185 ****
  1eb3cbc728b3b4745a79e57c0a884e48  gcc/testsuite/gnat.dg/aligned_vla.adb
  c937e00c9ea683419dcc198a58233ede  gcc/testsuite/gnat.dg/alignment1.adb
  2f7f0b370ca300192c4d24649a219982  gcc/testsuite/gnat.dg/alignment10.adb
  3e04e3aa84b2902e9b7155f66856e159  gcc/testsuite/gnat.dg/alignment13.adb
  212d4d6c7f98bb3c9f78d2ef06d0e6ca  gcc/testsuite/gnat.dg/alignment2.adb
! 11503f47ea295354ab10fc127a67f7a3  gcc/testsuite/gnat.dg/alignment3.adb
  a9c8dd283cf041a6a2fb8d49c1421144  gcc/testsuite/gnat.dg/alignment4.adb
  9e021c9a1950875152a18cd9175a6787  gcc/testsuite/gnat.dg/alignment5.adb
  6a5dc20cb924123833d22ab46b435dfe  gcc/testsuite/gnat.dg/alignment6.adb
--- 57957,57967 ----
  1eb3cbc728b3b4745a79e57c0a884e48  gcc/testsuite/gnat.dg/aligned_vla.adb
  c937e00c9ea683419dcc198a58233ede  gcc/testsuite/gnat.dg/alignment1.adb
  2f7f0b370ca300192c4d24649a219982  gcc/testsuite/gnat.dg/alignment10.adb
+ bda7acf0d24d57466a356930053816bf  gcc/testsuite/gnat.dg/alignment11.adb
+ 8b1f87db1d3f7fb907713fd4959be602  gcc/testsuite/gnat.dg/alignment12.adb
  3e04e3aa84b2902e9b7155f66856e159  gcc/testsuite/gnat.dg/alignment13.adb
  212d4d6c7f98bb3c9f78d2ef06d0e6ca  gcc/testsuite/gnat.dg/alignment2.adb
! 280c7ef033b3683ec80ceb1ef92a55b8  gcc/testsuite/gnat.dg/alignment3.adb
  a9c8dd283cf041a6a2fb8d49c1421144  gcc/testsuite/gnat.dg/alignment4.adb
  9e021c9a1950875152a18cd9175a6787  gcc/testsuite/gnat.dg/alignment5.adb
  6a5dc20cb924123833d22ab46b435dfe  gcc/testsuite/gnat.dg/alignment6.adb
*************** ce3465c950e55fea4ab2dc6fef270190  gcc/te
*** 54196,54202 ****
  4384340b82a3264f85bd960f81292b76  gcc/testsuite/gnat.dg/array1.adb
  2ba96fdcf6eb85d783b1a3431a416086  gcc/testsuite/gnat.dg/array1.ads
  927aa515c48c440b5b3f566fd2f3573e  gcc/testsuite/gnat.dg/array10.adb
! 19886fea006babf4586f2cc9ba6d3852  gcc/testsuite/gnat.dg/array11.adb
  d4d8b82dbf85cb4c9b2e380b2a68a04c  gcc/testsuite/gnat.dg/array12.adb
  6a4540c8c64eaa3333190cd6d89d5bb8  gcc/testsuite/gnat.dg/array13.adb
  e6da6f873a575042dfab209c84088ecf  gcc/testsuite/gnat.dg/array13.ads
--- 57978,57984 ----
  4384340b82a3264f85bd960f81292b76  gcc/testsuite/gnat.dg/array1.adb
  2ba96fdcf6eb85d783b1a3431a416086  gcc/testsuite/gnat.dg/array1.ads
  927aa515c48c440b5b3f566fd2f3573e  gcc/testsuite/gnat.dg/array10.adb
! ad0497f6027cba0c8f369ed487f6291d  gcc/testsuite/gnat.dg/array11.adb
  d4d8b82dbf85cb4c9b2e380b2a68a04c  gcc/testsuite/gnat.dg/array12.adb
  6a4540c8c64eaa3333190cd6d89d5bb8  gcc/testsuite/gnat.dg/array13.adb
  e6da6f873a575042dfab209c84088ecf  gcc/testsuite/gnat.dg/array13.ads
*************** d3c3ea85a2d542a334f54886bc6d0e68  gcc/te
*** 54255,54260 ****
--- 58037,58043 ----
  4be5e03b411318fc574c05cf953667bd  gcc/testsuite/gnat.dg/asynch.adb
  926c8b6a28f7843bfa4b034ba910f7e1  gcc/testsuite/gnat.dg/asynch.ads
  ab8d6519d24b9674ec96064e6d94523a  gcc/testsuite/gnat.dg/atomic1.adb
+ 9ce4c689bc12967210dc4a43e1d06aef  gcc/testsuite/gnat.dg/atomic10.adb
  134e987dac4a9abc6fd991f3297cc9bf  gcc/testsuite/gnat.dg/atomic1_pkg.ads
  7966f699a3ba62fa5c78b3d850519539  gcc/testsuite/gnat.dg/atomic2.adb
  12ea6845a333f3c9ac717bd30d70f3cd  gcc/testsuite/gnat.dg/atomic3.adb
*************** cd8ba5dd4250a5b2e05a86d17653003a  gcc/te
*** 54277,54286 ****
--- 58060,58072 ----
  dc0d018c7ef4988da05274a87a491db9  gcc/testsuite/gnat.dg/atomic7_pkg2.adb
  1e3f2b6f0d918e36ae539ab32f3a4b31  gcc/testsuite/gnat.dg/atomic7_pkg2.ads
  16c10ef2b56763079ce902fa8a6be517  gcc/testsuite/gnat.dg/atomic8.adb
+ 9cf0427260327c8df6b99da823648ff4  gcc/testsuite/gnat.dg/atomic9.adb
  3a29826c9a71b419b0c2323869c82f42  gcc/testsuite/gnat.dg/bad_array.adb
  aae39b549f5bb7a2b837495c637aaa94  gcc/testsuite/gnat.dg/biased_subtype.adb
  9bbc182ee19d36c4abbd7d6046ac5664  gcc/testsuite/gnat.dg/biased_uc.adb
  faf4a0c852ea85d2eab4ec4413be5fba  gcc/testsuite/gnat.dg/bip_aggregate_bug.adb
+ 6f1998e037428770cdf69c9d3df81696  gcc/testsuite/gnat.dg/bip_overlay.adb
+ a126edfdd72e5c579e8ef99056d093bd  gcc/testsuite/gnat.dg/bip_overlay.ads
  6044ac207f7472a4725aeb0f351b7051  gcc/testsuite/gnat.dg/bip_prim_func.adb
  e37d448c1ef40f326dbf7f65021cb6d5  gcc/testsuite/gnat.dg/bip_prim_func.ads
  09119b3b3872c06a7d771250d604aa6a  gcc/testsuite/gnat.dg/bit_packed_array1.adb
*************** e59d302bdc50de69c699117c5837868a  gcc/te
*** 54323,54330 ****
--- 58109,58122 ----
  821c2d88d8b2e5d28c9b2526eba206c1  gcc/testsuite/gnat.dg/class_wide1.adb
  30b6ec52201e2f3e8871ec34e84d8f92  gcc/testsuite/gnat.dg/class_wide2.adb
  5bb8792f3381e5e6de6a0da45cd5b7be  gcc/testsuite/gnat.dg/class_wide2.ads
+ 9daa84030e5d675bb327642b6886d6bb  gcc/testsuite/gnat.dg/class_wide3.adb
+ 74eb012a36b16218bfede783d193f202  gcc/testsuite/gnat.dg/class_wide3_pkg.ads
+ 65e579aa57b1b9e070f227a64d366aa3  gcc/testsuite/gnat.dg/class_wide4.adb
+ a6e35afa831e08d00bea9f8dd9d1c5cc  gcc/testsuite/gnat.dg/class_wide4_pkg.ads
+ 6f0b71d19accf04ffe787577bc890101  gcc/testsuite/gnat.dg/class_wide4_pkg2.ads
  74ca656bc33692c00600828733edeca3  gcc/testsuite/gnat.dg/complex1.adb
  eabd848befe131fde7677a9da2ddf20b  gcc/testsuite/gnat.dg/complex1_pkg.ads
+ 0b8796322445f41bce527a08ee2783de  gcc/testsuite/gnat.dg/component_size.adb
  65f042f7c7f3ba5cd72d9c078386a46e  gcc/testsuite/gnat.dg/compose.adb
  ac069379af0132c56a9f326aa688d9f0  gcc/testsuite/gnat.dg/concat1.adb
  d0d9950b243700f01e3cfad18d2b6139  gcc/testsuite/gnat.dg/concat1_pkg.adb
*************** a6968b39f4440beda38a5993d299e7ca  gcc/te
*** 54344,54353 ****
  b22b52334e11c2d49e8dcbbe6accbdea  gcc/testsuite/gnat.dg/constant4.adb
  130aefbfac0eaa3754a6869351629f97  gcc/testsuite/gnat.dg/constant4_pkg.ads
  f056e95f23cf6779db9f285ee4c0e92d  gcc/testsuite/gnat.dg/controlled1.ads
! b233956dd3e0d9ce150402c407d71096  gcc/testsuite/gnat.dg/controlled2.adb
  3fb8818dd674e4401fa416de46f535ed  gcc/testsuite/gnat.dg/controlled2.ads
  9de2218de5e49f8ccbfae3200f30704e  gcc/testsuite/gnat.dg/controlled3.ads
! a325345316f3935ffa1ae476ff21cfc0  gcc/testsuite/gnat.dg/controlled4.adb
  f7ee60c64ac6726ce99f88467b31bb87  gcc/testsuite/gnat.dg/controlled4.ads
  e9dc75c2c39e8308efa5e2252a2f2758  gcc/testsuite/gnat.dg/controlled5.adb
  772e9fca5205274feada5801953988ec  gcc/testsuite/gnat.dg/controlled5_pkg.adb
--- 58136,58145 ----
  b22b52334e11c2d49e8dcbbe6accbdea  gcc/testsuite/gnat.dg/constant4.adb
  130aefbfac0eaa3754a6869351629f97  gcc/testsuite/gnat.dg/constant4_pkg.ads
  f056e95f23cf6779db9f285ee4c0e92d  gcc/testsuite/gnat.dg/controlled1.ads
! 6a6a12fa2702d86160acfed5f24c69a2  gcc/testsuite/gnat.dg/controlled2.adb
  3fb8818dd674e4401fa416de46f535ed  gcc/testsuite/gnat.dg/controlled2.ads
  9de2218de5e49f8ccbfae3200f30704e  gcc/testsuite/gnat.dg/controlled3.ads
! 0e8679ac24363ab1313090e479a183c2  gcc/testsuite/gnat.dg/controlled4.adb
  f7ee60c64ac6726ce99f88467b31bb87  gcc/testsuite/gnat.dg/controlled4.ads
  e9dc75c2c39e8308efa5e2252a2f2758  gcc/testsuite/gnat.dg/controlled5.adb
  772e9fca5205274feada5801953988ec  gcc/testsuite/gnat.dg/controlled5_pkg.adb
*************** b11b424dc6dd1b3f784296fcb193bb31  gcc/te
*** 54368,54375 ****
  f7f0e097ef2b08042951719eb78231a0  gcc/testsuite/gnat.dg/debug1.ads
  bbbfd9f14b08a711a62fcfd5d9102acc  gcc/testsuite/gnat.dg/debug10.adb
  9581911974689dc418d8ea3c85fd8603  gcc/testsuite/gnat.dg/debug10_pkg.ads
! 5d1ed201c2083aeeda0b30815f95280e  gcc/testsuite/gnat.dg/debug13.adb
  bb7c02e58e40d63edfc3b849db48ec73  gcc/testsuite/gnat.dg/debug13.ads
  8c481e5a0e1ba1c11baee252a8f52edc  gcc/testsuite/gnat.dg/debug2.adb
  d5b17f0a1969c63659288225fe45fac0  gcc/testsuite/gnat.dg/debug2.ads
  fdb068baf7b1989ef7f7e9285dfd7ad6  gcc/testsuite/gnat.dg/debug2_pkg.ads
--- 58160,58174 ----
  f7f0e097ef2b08042951719eb78231a0  gcc/testsuite/gnat.dg/debug1.ads
  bbbfd9f14b08a711a62fcfd5d9102acc  gcc/testsuite/gnat.dg/debug10.adb
  9581911974689dc418d8ea3c85fd8603  gcc/testsuite/gnat.dg/debug10_pkg.ads
! de311b998bc6409568ccca2e9735ab19  gcc/testsuite/gnat.dg/debug11.adb
! b1f9b8597d7059fd58cbcc5c1174a13a  gcc/testsuite/gnat.dg/debug11_pkg.adb
! b524d049b26e6932280aebc3c3c189b1  gcc/testsuite/gnat.dg/debug11_pkg.ads
! eb1fa836a2d4ac00db3800fd50dfcad2  gcc/testsuite/gnat.dg/debug11_pkg2.ads
! 3a53871df22b0b0282b6fdcc2df03e64  gcc/testsuite/gnat.dg/debug12.adb
! 6af972503b91df2a465ed8ef446792d1  gcc/testsuite/gnat.dg/debug12.ads
! f5445d4481e7be7a6aa89b05d4ba765e  gcc/testsuite/gnat.dg/debug13.adb
  bb7c02e58e40d63edfc3b849db48ec73  gcc/testsuite/gnat.dg/debug13.ads
+ 1732a264df55c5557e5416ff3d8ddb5b  gcc/testsuite/gnat.dg/debug14.adb
  8c481e5a0e1ba1c11baee252a8f52edc  gcc/testsuite/gnat.dg/debug2.adb
  d5b17f0a1969c63659288225fe45fac0  gcc/testsuite/gnat.dg/debug2.ads
  fdb068baf7b1989ef7f7e9285dfd7ad6  gcc/testsuite/gnat.dg/debug2_pkg.ads
*************** a886032c55852c4ea79971d1f377b057  gcc/te
*** 54381,54393 ****
  c1bc8b0ecc894424728b5b4911bf1cc6  gcc/testsuite/gnat.dg/debug5.adb
  46342754320a69e9460ef15bd9083012  gcc/testsuite/gnat.dg/debug6.adb
  d4437a017f549cff71da36c10a005fb6  gcc/testsuite/gnat.dg/debug6_pkg.ads
! b947010cf232dcdc0c1d0e7a544e7ad3  gcc/testsuite/gnat.dg/debug7.adb
  11e8a77e3f82205694f75161de14e347  gcc/testsuite/gnat.dg/debug7.ads
  09f541c74ade4c594ef8526421d6239c  gcc/testsuite/gnat.dg/debug8.adb
! fee36d425314a7f00308e88ec8c9e376  gcc/testsuite/gnat.dg/debug9.adb
  11735efa0b9cef4f67d8e3f4899d5dcb  gcc/testsuite/gnat.dg/decl_ctx_def.ads
  1e3eab2cf62e279c000f95051138781d  gcc/testsuite/gnat.dg/decl_ctx_use.adb
  d647ddf65b566e41973afeb047912147  gcc/testsuite/gnat.dg/decl_ctx_use.ads
  f25487db77c308d651233a1775a2c2ef  gcc/testsuite/gnat.dg/deferred_const1.adb
  3abd7dffdfff3d053350c9d4189bffc6  gcc/testsuite/gnat.dg/deferred_const2.adb
  7aaca0d449c0c1e8432a2c6276ab110f  gcc/testsuite/gnat.dg/deferred_const2_pkg.adb
--- 58180,58195 ----
  c1bc8b0ecc894424728b5b4911bf1cc6  gcc/testsuite/gnat.dg/debug5.adb
  46342754320a69e9460ef15bd9083012  gcc/testsuite/gnat.dg/debug6.adb
  d4437a017f549cff71da36c10a005fb6  gcc/testsuite/gnat.dg/debug6_pkg.ads
! 3de2a8e9791d79bd1522a44033bf9695  gcc/testsuite/gnat.dg/debug7.adb
  11e8a77e3f82205694f75161de14e347  gcc/testsuite/gnat.dg/debug7.ads
  09f541c74ade4c594ef8526421d6239c  gcc/testsuite/gnat.dg/debug8.adb
! c4817633ff79ccb713b8638d01594f81  gcc/testsuite/gnat.dg/debug9.adb
  11735efa0b9cef4f67d8e3f4899d5dcb  gcc/testsuite/gnat.dg/decl_ctx_def.ads
  1e3eab2cf62e279c000f95051138781d  gcc/testsuite/gnat.dg/decl_ctx_use.adb
  d647ddf65b566e41973afeb047912147  gcc/testsuite/gnat.dg/decl_ctx_use.ads
+ 839cdc2c466fc3faf1447862370efe69  gcc/testsuite/gnat.dg/default_pkg_actual.adb
+ 1cf3fd07b4b2bd0c4fa32fb2cbb250f0  gcc/testsuite/gnat.dg/default_pkg_actual2.adb
+ 7108726a4c797873b4236e8aae5de94d  gcc/testsuite/gnat.dg/default_variants.adb
  f25487db77c308d651233a1775a2c2ef  gcc/testsuite/gnat.dg/deferred_const1.adb
  3abd7dffdfff3d053350c9d4189bffc6  gcc/testsuite/gnat.dg/deferred_const2.adb
  7aaca0d449c0c1e8432a2c6276ab110f  gcc/testsuite/gnat.dg/deferred_const2_pkg.adb
*************** e2c1bf8583ed2261f12ac6c532974d59  gcc/te
*** 54398,54403 ****
--- 58200,58206 ----
  3eeab2bd08a00582cc22fdd798a6deee  gcc/testsuite/gnat.dg/deferred_const4.adb
  4a86daea024283963522c42bcfe9d46b  gcc/testsuite/gnat.dg/deferred_const4.ads
  d6745dcdcf31b04bf69ee5368bf82671  gcc/testsuite/gnat.dg/deferred_const4_pkg.ads
+ 68055ce2b46ce547b48f2e4d7c4a03ac  gcc/testsuite/gnat.dg/delta_aggr.adb
  7bdc6c07150329cbe95aaed4711d4dc3  gcc/testsuite/gnat.dg/deques.ads
  f687233fcc6d98dbcb96055885a9ee66  gcc/testsuite/gnat.dg/deref1.ads
  f8a4e9fa10d4ee5c8acc1db41a267fe2  gcc/testsuite/gnat.dg/deref2.ads
*************** d3eb595728c80fe1533eeadd47bbac4b  gcc/te
*** 54409,54415 ****
  e5bd49e8c788391f35f34bceed7fa4ec  gcc/testsuite/gnat.dg/derived_type3_pkg.adb
  ad8ce74eac7cc4f0ae430f16af0d18e8  gcc/testsuite/gnat.dg/derived_type3_pkg.ads
  6c8e3993e0ed6214b39c1e62e0745a5b  gcc/testsuite/gnat.dg/derived_type4.adb
! b722293d843bf0f496fac1aa91c62813  gcc/testsuite/gnat.dg/dg.exp
  9b662de4b51f0d5130e9f01529a1a8ef  gcc/testsuite/gnat.dg/discr1.ads
  942ccf55f9f50ea930255bc5a0972701  gcc/testsuite/gnat.dg/discr10.adb
  ea1e80f9630041b2ba3a90424c768bf3  gcc/testsuite/gnat.dg/discr10.ads
--- 58212,58222 ----
  e5bd49e8c788391f35f34bceed7fa4ec  gcc/testsuite/gnat.dg/derived_type3_pkg.adb
  ad8ce74eac7cc4f0ae430f16af0d18e8  gcc/testsuite/gnat.dg/derived_type3_pkg.ads
  6c8e3993e0ed6214b39c1e62e0745a5b  gcc/testsuite/gnat.dg/derived_type4.adb
! f5b545465e83981c80e3d7c01214b904  gcc/testsuite/gnat.dg/dflt_init_cond.adb
! 2fbb62544d92c6af0d0b351a83112cd0  gcc/testsuite/gnat.dg/dflt_init_cond_pkg.ads
! 07b2df462844a5b3455d986ec6a241d4  gcc/testsuite/gnat.dg/dg.exp
! ca2670a9b24cc9d0cf8852e656a65373  gcc/testsuite/gnat.dg/dimensions.adb
! f28a5b105f7585427df0167f61bf7240  gcc/testsuite/gnat.dg/dimensions.ads
  9b662de4b51f0d5130e9f01529a1a8ef  gcc/testsuite/gnat.dg/discr1.ads
  942ccf55f9f50ea930255bc5a0972701  gcc/testsuite/gnat.dg/discr10.adb
  ea1e80f9630041b2ba3a90424c768bf3  gcc/testsuite/gnat.dg/discr10.ads
*************** c9344fabd909272a74350ec933e58693  gcc/te
*** 54489,54494 ****
--- 58296,58303 ----
  fde25bc1895a7cd298ce73cdbf1a78b2  gcc/testsuite/gnat.dg/discr46.adb
  6b288d196590751b637a4bffb615a84f  gcc/testsuite/gnat.dg/discr46.ads
  c0cb675cb411da6d7c94b8d283353a91  gcc/testsuite/gnat.dg/discr47.adb
+ 873083e0671ab9a20a5d222d258136c1  gcc/testsuite/gnat.dg/discr48.adb
+ f624972ea43061dacca291f1b0307d17  gcc/testsuite/gnat.dg/discr48_pkg.ads
  fe51b5d7f2580febe7dbfa6ab9b9391f  gcc/testsuite/gnat.dg/discr5.adb
  5ecce02a24b9db283dee01453682f913  gcc/testsuite/gnat.dg/discr7.adb
  6676509ce09b0e8b59ddf049ee91cdd9  gcc/testsuite/gnat.dg/discr8.adb
*************** b14ff5af6d465c52e8a4c926aa190ef4  gcc/te
*** 54501,54511 ****
  dcaafd57f9217fff0e685a7456812b58  gcc/testsuite/gnat.dg/discr_range_check.adb
  ff0f2d0f8e8de90bdcfbf3e74d699b90  gcc/testsuite/gnat.dg/discr_test.adb
  d3867a1a352f43bb512b03878716ccfe  gcc/testsuite/gnat.dg/discr_test2.adb
! 17878ed91e7c2e6da32e5528711f2192  gcc/testsuite/gnat.dg/dispatch1.adb
! 5e2d09b5eedbe75f1e0a5d063d6dc819  gcc/testsuite/gnat.dg/dispatch1_p.ads
! 5a8fcfacf8591e1423937e7b30ac36a1  gcc/testsuite/gnat.dg/dispatch2.adb
! f3658aaaeec6e98b555363b4d59e648e  gcc/testsuite/gnat.dg/dispatch2_p.adb
! 636ded24b317e36ac4ad221b0a525709  gcc/testsuite/gnat.dg/dispatch2_p.ads
  3ff72ebe3cf496e89941efc9df26c8cf  gcc/testsuite/gnat.dg/div_no_warning.adb
  d65bcf76d480f439aab679b09d9c0371  gcc/testsuite/gnat.dg/dse_step.adb
  ad16edae9320a0014102921e32b92dab  gcc/testsuite/gnat.dg/dse_step.ads
--- 58310,58320 ----
  dcaafd57f9217fff0e685a7456812b58  gcc/testsuite/gnat.dg/discr_range_check.adb
  ff0f2d0f8e8de90bdcfbf3e74d699b90  gcc/testsuite/gnat.dg/discr_test.adb
  d3867a1a352f43bb512b03878716ccfe  gcc/testsuite/gnat.dg/discr_test2.adb
! 1d6953d72fa7261547fd53375c4c8ea9  gcc/testsuite/gnat.dg/disp1.adb
! be12d3fb109247c1aaf6b19f5a65234e  gcc/testsuite/gnat.dg/disp1_pkg.ads
! 502f6df206148707eccf5d2169dc3a0c  gcc/testsuite/gnat.dg/disp2.adb
! 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
  d65bcf76d480f439aab679b09d9c0371  gcc/testsuite/gnat.dg/dse_step.adb
  ad16edae9320a0014102921e32b92dab  gcc/testsuite/gnat.dg/dse_step.ads
*************** d19a973a4e684acb20581bc20038f182  gcc/te
*** 54517,54528 ****
--- 58326,58342 ----
  8831c48c5d14098d8f72fce65794721e  gcc/testsuite/gnat.dg/dynamic_elab_pkg.ads
  ce4ee7b431ccdb81508b0ab7cd82292a  gcc/testsuite/gnat.dg/elab1.ads
  cb4be40885a73c8f1fd456ea82428fd8  gcc/testsuite/gnat.dg/elab2.adb
+ 9a50c28df48ad9545b8ee9a4cf33d333  gcc/testsuite/gnat.dg/elab3.adb
+ ee972e4533538ca6af3f5b9014690401  gcc/testsuite/gnat.dg/elab3.ads
+ 3d7bc2f0a0f1d4e46dd54b7befc53854  gcc/testsuite/gnat.dg/elab3_pkg.adb
+ 38ca177933a25afe9ecdd00c6c3b8309  gcc/testsuite/gnat.dg/elab3_pkg.ads
  058f10fed173d3418b94602abb2df15b  gcc/testsuite/gnat.dg/elim1.adb
  2dc2b121b14a0c39e69e6f0e7fab34ce  gcc/testsuite/gnat.dg/elim1.ads
  be881a289d2be408a786e92e1f7ad820  gcc/testsuite/gnat.dg/elim2.adb
  e7bf0e87ce8d1c68b39818fb7e1edf8d  gcc/testsuite/gnat.dg/empty_vector_length.adb
  a22dac614adec7200ac46b985a9973bc  gcc/testsuite/gnat.dg/enclosing_record_reference.adb
  37c10256cdea5e4a48fcbd848b8a2b13  gcc/testsuite/gnat.dg/enclosing_record_reference.ads
+ 71242fce64dcfb6ec1e37ef2151ec271  gcc/testsuite/gnat.dg/entry_family.adb
  2d633b8d37e6290acb1eee1f7cad3c81  gcc/testsuite/gnat.dg/entry_queues.adb
  ec7ae5b41af0b730610dc9a22fa581ed  gcc/testsuite/gnat.dg/entry_queues2.adb
  041f51dbb8dd2777cbdea620e3b40259  gcc/testsuite/gnat.dg/entry_queues3.adb
*************** a4f52bfabfe2bc7e231d6ecd5aeefaf6  gcc/te
*** 54537,54547 ****
  ac078127defcf36b65f032b5ee27a98c  gcc/testsuite/gnat.dg/equal_access.adb
  ffbfba4b21f9d9dd5810c096ebf59ca7  gcc/testsuite/gnat.dg/exp0_eval.adb
  04c43d85e3d04ddfccf734b31f0ca8d4  gcc/testsuite/gnat.dg/expect1.adb
  173180d23a5cbae9c7f69cea81aede6b  gcc/testsuite/gnat.dg/ext1.ads
  589ef4bc3b67f205fa44fef81a5c5f2c  gcc/testsuite/gnat.dg/fatp_sra.adb
! 8df04674427dba2b164aaa292d1343db  gcc/testsuite/gnat.dg/finalized.adb
  3de1dace544ce52d5c29cd3e92898e29  gcc/testsuite/gnat.dg/fixce.adb
  4c228100345ce64024a62f0fe15d8a90  gcc/testsuite/gnat.dg/fixedpnt.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
--- 58351,58371 ----
  ac078127defcf36b65f032b5ee27a98c  gcc/testsuite/gnat.dg/equal_access.adb
  ffbfba4b21f9d9dd5810c096ebf59ca7  gcc/testsuite/gnat.dg/exp0_eval.adb
  04c43d85e3d04ddfccf734b31f0ca8d4  gcc/testsuite/gnat.dg/expect1.adb
+ 08832fd756ad0cb273ce543349892e4e  gcc/testsuite/gnat.dg/expr_func2.adb
+ c30f9659b4ccb7b52085f0cf8114f945  gcc/testsuite/gnat.dg/expr_func2.ads
+ b690c75a28c712fb384a3508df3888b0  gcc/testsuite/gnat.dg/expr_func3.adb
+ 17f0a3c3fc2ed49cd4afe3528fdd5346  gcc/testsuite/gnat.dg/expr_func3.ads
+ 5d5c373440270a030499138be7277a93  gcc/testsuite/gnat.dg/expr_func4.adb
+ a2279695b106c27a07fa740e7bc9ac98  gcc/testsuite/gnat.dg/expr_func_main.adb
+ 7a2c5b9d031da5417a58ed8613c21c98  gcc/testsuite/gnat.dg/expr_func_pkg.adb
+ fb78b69d589fdc324e9872e0fc0666fc  gcc/testsuite/gnat.dg/expr_func_pkg.ads
  173180d23a5cbae9c7f69cea81aede6b  gcc/testsuite/gnat.dg/ext1.ads
  589ef4bc3b67f205fa44fef81a5c5f2c  gcc/testsuite/gnat.dg/fatp_sra.adb
! 8a0d334a3a107b542ac737ea3c4fd722  gcc/testsuite/gnat.dg/finalized.adb
  3de1dace544ce52d5c29cd3e92898e29  gcc/testsuite/gnat.dg/fixce.adb
  4c228100345ce64024a62f0fe15d8a90  gcc/testsuite/gnat.dg/fixedpnt.adb
+ bed16083637372a03289c41b60b529ab  gcc/testsuite/gnat.dg/fixedpnt2.adb
+ e813bcee70909f964b1cf397949d97dd  gcc/testsuite/gnat.dg/fixedpnt2.ads
  07c827c1c798d5da11bdc0d1d9f65a5a  gcc/testsuite/gnat.dg/forward_anon.adb
  ea0d2d9dbbbc9c7d79f067fa40139669  gcc/testsuite/gnat.dg/forward_anon.ads
  89e72099b779566d88618d4a64407eec  gcc/testsuite/gnat.dg/forward_vla.adb
*************** cef4cbf18f95208dd8c0b2e5062761c5  gcc/te
*** 54552,54562 ****
  8c236e214d430f44a72a4fb521b9961f  gcc/testsuite/gnat.dg/frunaligned1.ads
  d0689d7d2df99b8a9bdfa7461addbca6  gcc/testsuite/gnat.dg/g_tables.adb
  42a1a84a561d8513a3ddb03c1873df86  gcc/testsuite/gnat.dg/g_tables.ads
  98054bebce7ebc5df6d4a6a4178bf29c  gcc/testsuite/gnat.dg/gen_disp.adb
  8ce8ee3ebe319b0b6252b4307844d6c5  gcc/testsuite/gnat.dg/gen_disp.ads
! 378515f5abe94360ef1c9648e98250ff  gcc/testsuite/gnat.dg/generic_dispatch.adb
! 7d925d3bd1ab2e82703371c4e1998436  gcc/testsuite/gnat.dg/generic_dispatch_p.adb
! ee2b6ca79560241f2072641970442abe  gcc/testsuite/gnat.dg/generic_dispatch_p.ads
  cc4ebe6ac2f1c00b421a891817d2d911  gcc/testsuite/gnat.dg/gnat_malloc.adb
  82cb70c21ba1318cac8f07e58a6b386d  gcc/testsuite/gnat.dg/gnatg.adb
  622a5855bd8db0ed030a5154bd9c3266  gcc/testsuite/gnat.dg/graphic.adb
--- 58376,58388 ----
  8c236e214d430f44a72a4fb521b9961f  gcc/testsuite/gnat.dg/frunaligned1.ads
  d0689d7d2df99b8a9bdfa7461addbca6  gcc/testsuite/gnat.dg/g_tables.adb
  42a1a84a561d8513a3ddb03c1873df86  gcc/testsuite/gnat.dg/g_tables.ads
+ e0d843a3b7f190ee400816b919cc276e  gcc/testsuite/gnat.dg/gcov/check.adb
+ b54c95d0cbba6d9ca61357dbc2924e45  gcc/testsuite/gnat.dg/gcov/gcov.exp
  98054bebce7ebc5df6d4a6a4178bf29c  gcc/testsuite/gnat.dg/gen_disp.adb
  8ce8ee3ebe319b0b6252b4307844d6c5  gcc/testsuite/gnat.dg/gen_disp.ads
! 26c448ca0e6aaa93e38582d3d912525d  gcc/testsuite/gnat.dg/generic_disp.adb
! f1692f526c4f792a7f4bb9ab70c04d62  gcc/testsuite/gnat.dg/generic_disp_pkg.adb
! 408f13c04910fcb870929fb8095f4f09  gcc/testsuite/gnat.dg/generic_disp_pkg.ads
  cc4ebe6ac2f1c00b421a891817d2d911  gcc/testsuite/gnat.dg/gnat_malloc.adb
  82cb70c21ba1318cac8f07e58a6b386d  gcc/testsuite/gnat.dg/gnatg.adb
  622a5855bd8db0ed030a5154bd9c3266  gcc/testsuite/gnat.dg/graphic.adb
*************** f0f9c32735cc34a1187b60dd5192343a  gcc/te
*** 54592,54598 ****
--- 58418,58428 ----
  ec24a8a99cf8886b89a434ba3934fb71  gcc/testsuite/gnat.dg/incomplete5.ads
  651fc5caf55c00c58ba5ab24a19f3aac  gcc/testsuite/gnat.dg/incomplete5_pkg.adb
  3f4a2354fcc2609213c77c82600136da  gcc/testsuite/gnat.dg/incomplete5_pkg.ads
+ b7e24879332d72f72c91833c27ceef33  gcc/testsuite/gnat.dg/incomplete6.adb
+ d24c1f2d3c7c5ce631b8e820352deb2a  gcc/testsuite/gnat.dg/incomplete6.ads
  2d278c8204ff052ae1bda719e5201baa  gcc/testsuite/gnat.dg/init_scalar1.adb
+ 3479acc931417b59027c8944440c51a6  gcc/testsuite/gnat.dg/initializes.adb
+ 4c9f08106824a08b0375a36c6163ca80  gcc/testsuite/gnat.dg/initializes.ads
  94ef7861c55a3bf8630572c31b937e61  gcc/testsuite/gnat.dg/inline1.adb
  2ff5a76e1b9c8d88e54196699c7dbd0b  gcc/testsuite/gnat.dg/inline10.adb
  b85e5940ec63d3356da41f7c66fb50d4  gcc/testsuite/gnat.dg/inline10_pkg.adb
*************** cbf026af05c5b60523dd28a23294df41  gcc/te
*** 54676,54681 ****
--- 58506,58519 ----
  b71ee3747e7cae181e9915eafbefb500  gcc/testsuite/gnat.dg/limited_with4.adb
  d71372eb1447d265131df0e97541650d  gcc/testsuite/gnat.dg/limited_with4.ads
  2368fdbb6427ad6df9341237c611a510  gcc/testsuite/gnat.dg/limited_with4_pkg.ads
+ 01508f9861fb472e739d942523393bb6  gcc/testsuite/gnat.dg/limited_with5.adb
+ 73b25461992fc222ddd1f1b20c836435  gcc/testsuite/gnat.dg/limited_with5.ads
+ a50708b2ae0a8d395dd1659976c1ce1f  gcc/testsuite/gnat.dg/limited_with5_pkg.adb
+ 59e0bc1e2212259c779dd1ba3c19099d  gcc/testsuite/gnat.dg/limited_with5_pkg.ads
+ 10c57992994d409ac02155cd4584d1d0  gcc/testsuite/gnat.dg/limited_with6.adb
+ 6d5b5981855930d08eb8740d213beecc  gcc/testsuite/gnat.dg/limited_with6.ads
+ ebbb64365e62d1b2063f7acc77adc75f  gcc/testsuite/gnat.dg/limited_with6_pkg.adb
+ fb6550ce07cad44a375af2fd3012b578  gcc/testsuite/gnat.dg/limited_with6_pkg.ads
  40dfe1efcee13ecd8e542eb0c4dbb341  gcc/testsuite/gnat.dg/loop_address.adb
  f0b84a52fd304069c6d2f79acc1c5551  gcc/testsuite/gnat.dg/loop_address2.adb
  5c63f1a5018a20c715a0d6e4ee36a5f2  gcc/testsuite/gnat.dg/loop_boolean.adb
*************** d3d92ae7ca7f3a3c04916ae099bc5f83  gcc/te
*** 54739,54744 ****
--- 58577,58583 ----
  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
*************** fe9f5b8cc8d6ee8ee3b5236910d52a38  gcc/te
*** 54766,54778 ****
  9594afe49df5931fa1d4cc1f69d9d1d1  gcc/testsuite/gnat.dg/lto1_pkg.adb
  b58ee9d30ed9df61678b89c82432b601  gcc/testsuite/gnat.dg/lto1_pkg.ads
  eb14edc52ba7ab1584d13c38fb136ed8  gcc/testsuite/gnat.dg/lto2.adb
! 0509e7df7136e3aba0d71a4dadd6e890  gcc/testsuite/gnat.dg/lto20.adb
  66c1d94274e100871904c388583bfd29  gcc/testsuite/gnat.dg/lto20_pkg.adb
  39f0b1624959fa20b3c9e82bf29d50c0  gcc/testsuite/gnat.dg/lto20_pkg.ads
  e94a52734714dab69cf88da8861564f9  gcc/testsuite/gnat.dg/lto21.adb
  68bc8e3f54cb7d5e558c065ffe0a5f21  gcc/testsuite/gnat.dg/lto21_pkg1.ads
  d9ed5d8d94cefc81f6e8f1e096e44c85  gcc/testsuite/gnat.dg/lto21_pkg2.adb
  8f86927734b7d79c5fbbfec944551567  gcc/testsuite/gnat.dg/lto21_pkg2.ads
  2acb4cc31994f1569a3db6ac6613928d  gcc/testsuite/gnat.dg/lto4.adb
  9b38247c8e825c514f87e2965d931dad  gcc/testsuite/gnat.dg/lto4.ads
  959fb8bdf4cd1c34347ecfbab19ea60b  gcc/testsuite/gnat.dg/lto5.adb
--- 58605,58621 ----
  9594afe49df5931fa1d4cc1f69d9d1d1  gcc/testsuite/gnat.dg/lto1_pkg.adb
  b58ee9d30ed9df61678b89c82432b601  gcc/testsuite/gnat.dg/lto1_pkg.ads
  eb14edc52ba7ab1584d13c38fb136ed8  gcc/testsuite/gnat.dg/lto2.adb
! a9a575a51f3128c375a887f3cc2e3d17  gcc/testsuite/gnat.dg/lto20.adb
  66c1d94274e100871904c388583bfd29  gcc/testsuite/gnat.dg/lto20_pkg.adb
  39f0b1624959fa20b3c9e82bf29d50c0  gcc/testsuite/gnat.dg/lto20_pkg.ads
  e94a52734714dab69cf88da8861564f9  gcc/testsuite/gnat.dg/lto21.adb
  68bc8e3f54cb7d5e558c065ffe0a5f21  gcc/testsuite/gnat.dg/lto21_pkg1.ads
  d9ed5d8d94cefc81f6e8f1e096e44c85  gcc/testsuite/gnat.dg/lto21_pkg2.adb
  8f86927734b7d79c5fbbfec944551567  gcc/testsuite/gnat.dg/lto21_pkg2.ads
+ 3ad3de2f117f9583db600c0bd1bc44da  gcc/testsuite/gnat.dg/lto22.adb
+ fa0a217ef7773f18e2100deca65155e8  gcc/testsuite/gnat.dg/lto22_pkg1.ads
+ 42c63ff6c62141b282c3de6014c66376  gcc/testsuite/gnat.dg/lto22_pkg2.adb
+ 57519860c7ff9212e8c352b54168aebc  gcc/testsuite/gnat.dg/lto22_pkg2.ads
  2acb4cc31994f1569a3db6ac6613928d  gcc/testsuite/gnat.dg/lto4.adb
  9b38247c8e825c514f87e2965d931dad  gcc/testsuite/gnat.dg/lto4.ads
  959fb8bdf4cd1c34347ecfbab19ea60b  gcc/testsuite/gnat.dg/lto5.adb
*************** dd6635d3aceca8757f948c8b9351c8f5  gcc/te
*** 54828,54834 ****
  d66ff67d9165d4efe50d59f49c8f3c0d  gcc/testsuite/gnat.dg/no_exc_prop.adb
  74258871b5e6fdf01a93ebd2441d6e7c  gcc/testsuite/gnat.dg/no_exc_prop.ads
  d7f4025c6d1a979973b2a83add4cdc7c  gcc/testsuite/gnat.dg/no_final.adb
! 0783b381de54772e38186dc5a4a0aa86  gcc/testsuite/gnat.dg/noinline2.adb
  1b357c86d7a35ebbc18bba827c7f9560  gcc/testsuite/gnat.dg/noinline2.ads
  56d38ab112bd9465fc0a46f1eb03d328  gcc/testsuite/gnat.dg/noreturn1.adb
  533a60a3cb4282982c4a7ab1f306f377  gcc/testsuite/gnat.dg/noreturn1.ads
--- 58671,58677 ----
  d66ff67d9165d4efe50d59f49c8f3c0d  gcc/testsuite/gnat.dg/no_exc_prop.adb
  74258871b5e6fdf01a93ebd2441d6e7c  gcc/testsuite/gnat.dg/no_exc_prop.ads
  d7f4025c6d1a979973b2a83add4cdc7c  gcc/testsuite/gnat.dg/no_final.adb
! 12a0edd8857cc59ad33cd4a1b9dbf073  gcc/testsuite/gnat.dg/noinline2.adb
  1b357c86d7a35ebbc18bba827c7f9560  gcc/testsuite/gnat.dg/noinline2.ads
  56d38ab112bd9465fc0a46f1eb03d328  gcc/testsuite/gnat.dg/noreturn1.adb
  533a60a3cb4282982c4a7ab1f306f377  gcc/testsuite/gnat.dg/noreturn1.ads
*************** fe3289c7493b99d78ab8ea45e1f6b8f9  gcc/te
*** 54843,54858 ****
  5ac9ac562fddac1d8385d31dd03fee42  gcc/testsuite/gnat.dg/noreturn5.ads
  4bc2c394a21020e8c9725519ba294558  gcc/testsuite/gnat.dg/not_null.adb
  210a12989054c999f3b84ea7db7a0319  gcc/testsuite/gnat.dg/notnot.adb
! a5867890b026eed2903d692d23100203  gcc/testsuite/gnat.dg/null_pointer_deref1.adb
! 470aad2b0de3fb4bc247e35707bf6377  gcc/testsuite/gnat.dg/null_pointer_deref2.adb
  0ff4b31c7435f35d138a9cbe28757cc2  gcc/testsuite/gnat.dg/null_pointer_deref3.adb
  fc981669e9edb4257f4d7aa1d746a985  gcc/testsuite/gnat.dg/oalign1.ads
  18d8b818d36450ab34b392635110ddf4  gcc/testsuite/gnat.dg/oalign2.ads
! 673fbe32e75e755439a989a9f83ffbc2  gcc/testsuite/gnat.dg/object_overflow1.adb
! 250b61811a4e87b9d344dc4219c70a0b  gcc/testsuite/gnat.dg/object_overflow2.adb
! e99769fb5c8087e854da5fe47e32d7f1  gcc/testsuite/gnat.dg/object_overflow3.adb
! b4be325e2ef433aa552715d0ce79ba10  gcc/testsuite/gnat.dg/object_overflow4.adb
! d33c6169911884bb60e2c357a890f018  gcc/testsuite/gnat.dg/object_overflow5.adb
  e4e9b879fcb6c0fae2ce6dc54901dbba  gcc/testsuite/gnat.dg/oconst1.adb
  54f4ef39aa8725fc1134c89f1a561281  gcc/testsuite/gnat.dg/oconst1.ads
  f1b41bfbdd33a295a1045fdcee8eb9fd  gcc/testsuite/gnat.dg/oconst2.adb
--- 58686,58701 ----
  5ac9ac562fddac1d8385d31dd03fee42  gcc/testsuite/gnat.dg/noreturn5.ads
  4bc2c394a21020e8c9725519ba294558  gcc/testsuite/gnat.dg/not_null.adb
  210a12989054c999f3b84ea7db7a0319  gcc/testsuite/gnat.dg/notnot.adb
! 08d9ac04b6c6a6ea0190fc9ee03a463f  gcc/testsuite/gnat.dg/null_pointer_deref1.adb
! 7d4719891171be201858a3edf37fcb2f  gcc/testsuite/gnat.dg/null_pointer_deref2.adb
  0ff4b31c7435f35d138a9cbe28757cc2  gcc/testsuite/gnat.dg/null_pointer_deref3.adb
  fc981669e9edb4257f4d7aa1d746a985  gcc/testsuite/gnat.dg/oalign1.ads
  18d8b818d36450ab34b392635110ddf4  gcc/testsuite/gnat.dg/oalign2.ads
! e2c8479333425ea75c63f23a2938caf3  gcc/testsuite/gnat.dg/object_overflow1.adb
! 26f9931288d2f5e635011e0da09f5923  gcc/testsuite/gnat.dg/object_overflow2.adb
! d50145f03dccc1452d670a7462c428c6  gcc/testsuite/gnat.dg/object_overflow3.adb
! a855945053dc41dfa1c42e3b145ac9af  gcc/testsuite/gnat.dg/object_overflow4.adb
! 4c53d9e0e30637a7ed0c2d2612c24354  gcc/testsuite/gnat.dg/object_overflow5.adb
  e4e9b879fcb6c0fae2ce6dc54901dbba  gcc/testsuite/gnat.dg/oconst1.adb
  54f4ef39aa8725fc1134c89f1a561281  gcc/testsuite/gnat.dg/oconst1.ads
  f1b41bfbdd33a295a1045fdcee8eb9fd  gcc/testsuite/gnat.dg/oconst2.adb
*************** d0d4dc0dad8534e17498c1e5e9bd30b9  gcc/te
*** 54956,54962 ****
  1519d7581dc2d9f7a7e00b19f6470211  gcc/testsuite/gnat.dg/opt48_pkg1.ads
  85c720637cd9d17e7842e28fe2d17be0  gcc/testsuite/gnat.dg/opt48_pkg2.adb
  db1f6b82d662e78fa1b88b4ed3fb6ee4  gcc/testsuite/gnat.dg/opt48_pkg2.ads
! f77f10db2f1f5c407d934a6003defe22  gcc/testsuite/gnat.dg/opt49.adb
  3d44b5cac38d62a85266069665682f5d  gcc/testsuite/gnat.dg/opt5.adb
  c7f2a6c3667283987c34aa15a161b4dc  gcc/testsuite/gnat.dg/opt50.adb
  8afef5d59a4680485194e0fc42c6403c  gcc/testsuite/gnat.dg/opt50_pkg.adb
--- 58799,58805 ----
  1519d7581dc2d9f7a7e00b19f6470211  gcc/testsuite/gnat.dg/opt48_pkg1.ads
  85c720637cd9d17e7842e28fe2d17be0  gcc/testsuite/gnat.dg/opt48_pkg2.adb
  db1f6b82d662e78fa1b88b4ed3fb6ee4  gcc/testsuite/gnat.dg/opt48_pkg2.ads
! 7d2067d57c4c669995cd3d4caecb2b17  gcc/testsuite/gnat.dg/opt49.adb
  3d44b5cac38d62a85266069665682f5d  gcc/testsuite/gnat.dg/opt5.adb
  c7f2a6c3667283987c34aa15a161b4dc  gcc/testsuite/gnat.dg/opt50.adb
  8afef5d59a4680485194e0fc42c6403c  gcc/testsuite/gnat.dg/opt50_pkg.adb
*************** a49d1e123ee08614689c5765807a82f0  gcc/te
*** 54991,54996 ****
--- 58834,58845 ----
  c3ef9e48285eae6079481e8321568f5d  gcc/testsuite/gnat.dg/opt64_pkg.adb
  fa4c27f02bb3b9657f76e2ed18da2f02  gcc/testsuite/gnat.dg/opt64_pkg.ads
  9075248e7e59db04dd99a0be9a4c82bb  gcc/testsuite/gnat.dg/opt65.adb
+ 2a0c822107ebb9c18ffbb58765eb2d00  gcc/testsuite/gnat.dg/opt66.adb
+ 076c1df491f187199fea40a39efd0494  gcc/testsuite/gnat.dg/opt67.adb
+ f9768f447ef38df8a8ca3c0b895024fe  gcc/testsuite/gnat.dg/opt67_pkg.adb
+ bd7cfb59776ddee7c7f89b15c48c7208  gcc/testsuite/gnat.dg/opt67_pkg.ads
+ 89b7f460f467b639ae0bed5f7798c51b  gcc/testsuite/gnat.dg/opt68.adb
+ 3dc4339a32da20adb0e45b312037d259  gcc/testsuite/gnat.dg/opt68.ads
  ecc4c6c9f42f03d3d6a69b2ab6a2f13c  gcc/testsuite/gnat.dg/opt69.adb
  a441d166cc0d4b34342468308b350060  gcc/testsuite/gnat.dg/opt7.adb
  8ea613067c21d3bbf860fb8bb4013c79  gcc/testsuite/gnat.dg/opt7.ads
*************** a441d166cc0d4b34342468308b350060  gcc/te
*** 55000,55012 ****
--- 58849,58868 ----
  08a96545787824356817a3169afee7d9  gcc/testsuite/gnat.dg/opt8_pkg.ads
  ba51f2b4ff3e6536d2d6f2acd9443799  gcc/testsuite/gnat.dg/opt9.adb
  feb376d91f5514b647b1ad61b025d828  gcc/testsuite/gnat.dg/opt9_pkg.ads
+ 9f62042ad37161c5182cb92d70d0b24d  gcc/testsuite/gnat.dg/out_param.adb
  fec5c039983cc172fd81dc506725f69c  gcc/testsuite/gnat.dg/outer_agg_bitfield_constructor.adb
  4d9b7573a99095e98a73ab165f18724d  gcc/testsuite/gnat.dg/overflow_fixed.adb
  a2d243fe1c9cc4acb1eab0db0f587b81  gcc/testsuite/gnat.dg/overflow_sum.adb
  94d7b3cc1345f58f5547ed8c8973d6c0  gcc/testsuite/gnat.dg/overflow_sum2.adb
  092d63dd73ca979cdf5cf84157d6de82  gcc/testsuite/gnat.dg/overflow_sum3.adb
+ e81da7d12be2af252591f8dda9265d6b  gcc/testsuite/gnat.dg/overload.adb
+ e5b45801d18c6fbf929d3e920140720b  gcc/testsuite/gnat.dg/overload.ads
  562961be442c02c3c6c5b534016f3fc1  gcc/testsuite/gnat.dg/overriding_ops.adb
  736e3c4d05fbbe73e747e11bf252f2cf  gcc/testsuite/gnat.dg/overriding_ops.ads
+ aa9b41bda4b59df27041ac63ca4d8121  gcc/testsuite/gnat.dg/overriding_ops2.adb
+ 5c5b3b67aed8eea60a2ee9ca5d1440e2  gcc/testsuite/gnat.dg/overriding_ops2.ads
+ 8f51300dceebe7b986ff401482f27946  gcc/testsuite/gnat.dg/overriding_ops2_pkg-high.ads
+ e9ae3a275209c1b36159bb5f2489dd01  gcc/testsuite/gnat.dg/overriding_ops2_pkg.ads
  abff657724c8f6010d92ad49d50daf9c  gcc/testsuite/gnat.dg/overriding_ops_p.ads
  f476a43c6c200e5d7a310f5fd7e24c43  gcc/testsuite/gnat.dg/pack1.ads
  c2d53946c785e88dcd4062b0883ce3b9  gcc/testsuite/gnat.dg/pack10.adb
*************** e4461427e25c8277dd4832501c3f6ccd  gcc/te
*** 55063,55068 ****
--- 58919,58925 ----
  064d12236a5c1215b72e88bd09d6696a  gcc/testsuite/gnat.dg/prefix1.ads
  44b1484811be62cb2477a1085cf56d34  gcc/testsuite/gnat.dg/prefix2.adb
  32f82de6508bf8f6a0d20f850f638498  gcc/testsuite/gnat.dg/prefix2.ads
+ 1cd7dd16873b27f1e5bc896924554185  gcc/testsuite/gnat.dg/private_overriding.adb
  67fc1f73b2e24628841b19a37424a4dd  gcc/testsuite/gnat.dg/profile_warning.adb
  3be6aedb24cbe63f63ad93e27d8946b1  gcc/testsuite/gnat.dg/profile_warning.ads
  3e3f795c65f24ce065e35e4836676a81  gcc/testsuite/gnat.dg/profile_warning_p.adb
*************** d610552f4ea2d1327494884e4fbe72e2  gcc/te
*** 55073,55081 ****
--- 58930,58946 ----
  ea217462fb02deca69a51d157dc77fd8  gcc/testsuite/gnat.dg/prot2_pkg1.ads
  5c0dd1ded75b5d8dbe8869fa698a559f  gcc/testsuite/gnat.dg/prot2_pkg2.adb
  4425b69ff6c1bdb8a67769183e53832d  gcc/testsuite/gnat.dg/prot2_pkg2.ads
+ b41ce2938f97909d07c7e12fb8e4fbde  gcc/testsuite/gnat.dg/prot3.adb
+ 59da87167c81199d22df8ccc3f46dcca  gcc/testsuite/gnat.dg/prot3_pkg.adb
+ 37406422deec51fe735bbe0b1018bc91  gcc/testsuite/gnat.dg/prot3_pkg.ads
  8b9d81034e4a3268cbc4aae764775fd9  gcc/testsuite/gnat.dg/prot_def.adb
+ 006231aea775ec72d89b16ccf48f7cd5  gcc/testsuite/gnat.dg/protected_func.adb
+ f010d95f371dbccc1be8c51d48eb4db5  gcc/testsuite/gnat.dg/protected_func.ads
+ ce1ec39ed99de56ced45d8b9f86bc85a  gcc/testsuite/gnat.dg/protected_null.adb
  e6da11fd6483154a13820d7470de4efb  gcc/testsuite/gnat.dg/protected_self_ref1.adb
  bffe9a3ac9d57a27e4b093a45da1b8bf  gcc/testsuite/gnat.dg/protected_self_ref2.adb
+ 004d0a4eab7269238d8df3bd245f540d  gcc/testsuite/gnat.dg/pure_subp_body.adb
+ 2cac0c26d493dcb2a6bc9eb14b048d12  gcc/testsuite/gnat.dg/pure_subp_body_pkg.ads
  86264155418d37c3c433352efc4d7216  gcc/testsuite/gnat.dg/quote.adb
  14ca6ec6ac239ab1d151eea57c9f41a0  gcc/testsuite/gnat.dg/raise_ce.adb
  81e1a68d860f91ed5f934074e947a421  gcc/testsuite/gnat.dg/raise_from_pure.adb
*************** fbf0530479ab08f3dbb0fb73b2725ecc  gcc/te
*** 55088,55093 ****
--- 58953,58960 ----
  5457827e708b7bfc92ffe5610655a443  gcc/testsuite/gnat.dg/ref_type.ads
  222b5d10f23a2e8e8a5e4d41e86e66ed  gcc/testsuite/gnat.dg/regpat1.adb
  937e634810359d92f37cab588f19e1c0  gcc/testsuite/gnat.dg/release_unc_maxalign.adb
+ d1eb3c018998a0148ec38f5289953cb4  gcc/testsuite/gnat.dg/remote_call_iface.adb
+ 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
*************** b2160f370c10caaf4f72e3d51c63032f  gcc/te
*** 55101,55108 ****
  9c415422ce59266c9af89e8d3fd1df74  gcc/testsuite/gnat.dg/renaming4.ads
  385875f6fab80dc1485a0742fcf53b3b  gcc/testsuite/gnat.dg/renaming5.adb
  a7443b7e83fb0b9f7c853f71fbc6426b  gcc/testsuite/gnat.dg/renaming5.ads
! 8aa74ad878084a7e8bc8b6ac5ff50dbf  gcc/testsuite/gnat.dg/renaming6.adb
! e1a302767873cb27a361547598bafbaf  gcc/testsuite/gnat.dg/renaming6.ads
  161c8a313ccfe175a0bb0d9e179e5e90  gcc/testsuite/gnat.dg/renaming7.adb
  d4e9df35ef494a0d5acd623c15459942  gcc/testsuite/gnat.dg/renaming7_pkg.ads
  3f1c22322e0fe6b6cb43ddfe3b2f2997  gcc/testsuite/gnat.dg/renaming8.adb
--- 58968,58975 ----
  9c415422ce59266c9af89e8d3fd1df74  gcc/testsuite/gnat.dg/renaming4.ads
  385875f6fab80dc1485a0742fcf53b3b  gcc/testsuite/gnat.dg/renaming5.adb
  a7443b7e83fb0b9f7c853f71fbc6426b  gcc/testsuite/gnat.dg/renaming5.ads
! 5915e23316759ebba1df7b57dd2df38b  gcc/testsuite/gnat.dg/renaming6.adb
! 1b1179354abf72e91da113ce375ba44b  gcc/testsuite/gnat.dg/renaming6.ads
  161c8a313ccfe175a0bb0d9e179e5e90  gcc/testsuite/gnat.dg/renaming7.adb
  d4e9df35ef494a0d5acd623c15459942  gcc/testsuite/gnat.dg/renaming7_pkg.ads
  3f1c22322e0fe6b6cb43ddfe3b2f2997  gcc/testsuite/gnat.dg/renaming8.adb
*************** abe14a1ac8ff19714a07b9e460b5fa25  gcc/te
*** 55202,55208 ****
  778c3fb394bd22381e5d6dc833b0e536  gcc/testsuite/gnat.dg/specs/atomic3.ads
  c32b716552779677ae176058dfb0e811  gcc/testsuite/gnat.dg/specs/attribute_parsing.ads
  f816d4862285932d8e7b70c2efc94426  gcc/testsuite/gnat.dg/specs/box1.ads
! ac65d1222b8d3a24ba83bbbb5c7a051f  gcc/testsuite/gnat.dg/specs/clause_on_volatile.ads
  6ddb33b9bab31efa0f5ebea912ad04a7  gcc/testsuite/gnat.dg/specs/concat1.ads
  e4425aac5fb5227ddf52028562a63704  gcc/testsuite/gnat.dg/specs/concat1_pkg.ads
  de3a8d42e10071e7f2dab8b41ed160f1  gcc/testsuite/gnat.dg/specs/cond_expr1.ads
--- 59069,59075 ----
  778c3fb394bd22381e5d6dc833b0e536  gcc/testsuite/gnat.dg/specs/atomic3.ads
  c32b716552779677ae176058dfb0e811  gcc/testsuite/gnat.dg/specs/attribute_parsing.ads
  f816d4862285932d8e7b70c2efc94426  gcc/testsuite/gnat.dg/specs/box1.ads
! 37a732088ec6ef7a91636f203cb8bd9f  gcc/testsuite/gnat.dg/specs/clause_on_volatile.ads
  6ddb33b9bab31efa0f5ebea912ad04a7  gcc/testsuite/gnat.dg/specs/concat1.ads
  e4425aac5fb5227ddf52028562a63704  gcc/testsuite/gnat.dg/specs/concat1_pkg.ads
  de3a8d42e10071e7f2dab8b41ed160f1  gcc/testsuite/gnat.dg/specs/cond_expr1.ads
*************** e63c264218dd1c2dc831e7d0283b1f18  gcc/te
*** 55218,55225 ****
  94bcb9682bc5eeab5b3cc1deadc2abfe  gcc/testsuite/gnat.dg/specs/delta_small.ads
  5c96de7de27b274bfad50619af8e7a5d  gcc/testsuite/gnat.dg/specs/discr1.ads
  77c452564ee2e144d1a6d67bba2ab58d  gcc/testsuite/gnat.dg/specs/discr1_pkg.ads
! 4c9a3025378ab46f0680e9d8a7c6f9fc  gcc/testsuite/gnat.dg/specs/discr_private.ads
! d8f376811548df36b4854b4d222016a1  gcc/testsuite/gnat.dg/specs/discr_record_constant.ads
  a78fb7cbf02009e1325caab8c3a179c2  gcc/testsuite/gnat.dg/specs/double_record_extension1.ads
  7b07a208cf739b0fe10deedba049a3bc  gcc/testsuite/gnat.dg/specs/double_record_extension2.ads
  35336c4ca96cbe852e268dc958a45791  gcc/testsuite/gnat.dg/specs/double_record_extension3.ads
--- 59085,59094 ----
  94bcb9682bc5eeab5b3cc1deadc2abfe  gcc/testsuite/gnat.dg/specs/delta_small.ads
  5c96de7de27b274bfad50619af8e7a5d  gcc/testsuite/gnat.dg/specs/discr1.ads
  77c452564ee2e144d1a6d67bba2ab58d  gcc/testsuite/gnat.dg/specs/discr1_pkg.ads
! 3261d16285b824a95b0b4e90f9519e6f  gcc/testsuite/gnat.dg/specs/discr2.ads
! 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
  a78fb7cbf02009e1325caab8c3a179c2  gcc/testsuite/gnat.dg/specs/double_record_extension1.ads
  7b07a208cf739b0fe10deedba049a3bc  gcc/testsuite/gnat.dg/specs/double_record_extension2.ads
  35336c4ca96cbe852e268dc958a45791  gcc/testsuite/gnat.dg/specs/double_record_extension3.ads
*************** b605c919a473b8d6808dd232aa7eaf49  gcc/te
*** 55242,55248 ****
  f0f859863b2bb6251359cf35dc6ffbf5  gcc/testsuite/gnat.dg/specs/iface_eq_test-child.ads
  e79713b5757a3f8a05926964d5c26b04  gcc/testsuite/gnat.dg/specs/iface_eq_test.ads
  9ee91f98fa091f6a23c52ae740005659  gcc/testsuite/gnat.dg/specs/import_abstract.ads
! 18b43ed50b94e487d6c6f0f068e0849e  gcc/testsuite/gnat.dg/specs/integer_value.ads
  bb0e77998b46620c791eef69edc120e4  gcc/testsuite/gnat.dg/specs/interface5.ads
  2964ca5392547150aa2109dc092cc2e2  gcc/testsuite/gnat.dg/specs/last_bit.ads
  843de13b4d5cc30db54743bb74dedbf4  gcc/testsuite/gnat.dg/specs/limited1.ads
--- 59111,59117 ----
  f0f859863b2bb6251359cf35dc6ffbf5  gcc/testsuite/gnat.dg/specs/iface_eq_test-child.ads
  e79713b5757a3f8a05926964d5c26b04  gcc/testsuite/gnat.dg/specs/iface_eq_test.ads
  9ee91f98fa091f6a23c52ae740005659  gcc/testsuite/gnat.dg/specs/import_abstract.ads
! 7c3f9af495ab6c4f86eaa0e82683faa8  gcc/testsuite/gnat.dg/specs/integer_value.ads
  bb0e77998b46620c791eef69edc120e4  gcc/testsuite/gnat.dg/specs/interface5.ads
  2964ca5392547150aa2109dc092cc2e2  gcc/testsuite/gnat.dg/specs/last_bit.ads
  843de13b4d5cc30db54743bb74dedbf4  gcc/testsuite/gnat.dg/specs/limited1.ads
*************** bac1e8c2c28486c2dacd74f69ad37ca6  gcc/te
*** 55263,55269 ****
  bd5a6ea89b23bd5629784ef6f9f822ab  gcc/testsuite/gnat.dg/specs/machine_attribute.ads
  a573c4fbee048b518c86be4ea7e21d27  gcc/testsuite/gnat.dg/specs/no_streams.ads
  d470d680d139ab860f9207e4c6a63125  gcc/testsuite/gnat.dg/specs/noinline1.ads
! 8daf99b9384aadc3b08021e718c6dafa  gcc/testsuite/gnat.dg/specs/noinline3.ads
  f95d01108183f1b13d5300ff27ea8047  gcc/testsuite/gnat.dg/specs/noinline3_pkg.adb
  3766264d0e2095c1e82f5a6503959e43  gcc/testsuite/gnat.dg/specs/noinline3_pkg.ads
  bc9e693a63b338619703ea41ddab830f  gcc/testsuite/gnat.dg/specs/not_null1.ads
--- 59132,59138 ----
  bd5a6ea89b23bd5629784ef6f9f822ab  gcc/testsuite/gnat.dg/specs/machine_attribute.ads
  a573c4fbee048b518c86be4ea7e21d27  gcc/testsuite/gnat.dg/specs/no_streams.ads
  d470d680d139ab860f9207e4c6a63125  gcc/testsuite/gnat.dg/specs/noinline1.ads
! 750425a1e2a00ca741c599016cfcbb7b  gcc/testsuite/gnat.dg/specs/noinline3.ads
  f95d01108183f1b13d5300ff27ea8047  gcc/testsuite/gnat.dg/specs/noinline3_pkg.adb
  3766264d0e2095c1e82f5a6503959e43  gcc/testsuite/gnat.dg/specs/noinline3_pkg.ads
  bc9e693a63b338619703ea41ddab830f  gcc/testsuite/gnat.dg/specs/not_null1.ads
*************** aca39671a4d090d6d3c7a2abf4ee74a6  gcc/te
*** 55277,55282 ****
--- 59146,59152 ----
  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
*************** f93ebc1592802334f747adde7fd25afb  gcc/te
*** 55322,55328 ****
  142fe3065f4e59020a245e120978d93e  gcc/testsuite/gnat.dg/specs/size_clause2.ads
  da7f5a0022c765a7755527e9ae93c6b5  gcc/testsuite/gnat.dg/specs/size_clause3.ads
  f381006ab319a77a628dc42fb91642d1  gcc/testsuite/gnat.dg/specs/small_alignment.ads
! 007197fbcbb8da40733ae7a5eb3c1891  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
--- 59192,59198 ----
  142fe3065f4e59020a245e120978d93e  gcc/testsuite/gnat.dg/specs/size_clause2.ads
  da7f5a0022c765a7755527e9ae93c6b5  gcc/testsuite/gnat.dg/specs/size_clause3.ads
  f381006ab319a77a628dc42fb91642d1  gcc/testsuite/gnat.dg/specs/small_alignment.ads
! bf6cbc0c65c1d06e4b32999d8758e185  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
*************** ac78c396effa4859b1c3270e50e530dc  gcc/te
*** 55352,55358 ****
  32d18c664c80e0567f098ad3f5c64c62  gcc/testsuite/gnat.dg/specs/varsize_return_pkg2.ads
  fafeaea1e6dc6430a977c194dcce2366  gcc/testsuite/gnat.dg/specs/vfa1.ads
  2d6bea14f8e514f5f34e005d6b116ff9  gcc/testsuite/gnat.dg/specs/vfa2.ads
! 04891a883bf8735f0e4bc34592cff6dd  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
--- 59222,59228 ----
  32d18c664c80e0567f098ad3f5c64c62  gcc/testsuite/gnat.dg/specs/varsize_return_pkg2.ads
  fafeaea1e6dc6430a977c194dcce2366  gcc/testsuite/gnat.dg/specs/vfa1.ads
  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
*************** ee874e3a5ed130d124c36bc00620ecf7  gcc/te
*** 55414,55420 ****
  f98695363c137c382d6de62ada73bc3c  gcc/testsuite/gnat.dg/sso/s6.adb
  932dcf06c9a657de839f1236ad1ce3a7  gcc/testsuite/gnat.dg/sso/s7.adb
  f876cc05ea75ed91c3f5cfb97ed0a9ae  gcc/testsuite/gnat.dg/sso/s8.adb
! 6678e2ef6e78a2c1ae016fa7caffd6fa  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
--- 59284,59290 ----
  f98695363c137c382d6de62ada73bc3c  gcc/testsuite/gnat.dg/sso/s6.adb
  932dcf06c9a657de839f1236ad1ce3a7  gcc/testsuite/gnat.dg/sso/s7.adb
  f876cc05ea75ed91c3f5cfb97ed0a9ae  gcc/testsuite/gnat.dg/sso/s8.adb
! b29f557b4fb9d1576bf4f30af31d6ca3  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
*************** cce4578d630a50acb2e3a4f2535af90b  gcc/te
*** 55439,55447 ****
  6547028813699cf5a1bebf9380db3b22  gcc/testsuite/gnat.dg/sso5.adb
  fe04b533a1bd519280c1aca23dae94ee  gcc/testsuite/gnat.dg/sso6.adb
  19c0b391fd234424564d1de0c71471e6  gcc/testsuite/gnat.dg/sso7.adb
! 12815ccc7e18f86def66a34726141be0  gcc/testsuite/gnat.dg/stack_check1.adb
! 56a70c1688afe9c1548527bf032883eb  gcc/testsuite/gnat.dg/stack_check2.adb
! 69c671d19f8e7a23132fc0c3cec794be  gcc/testsuite/gnat.dg/stack_check3.adb
  9b9f371ac88351d2ce0f7b3bd69193c1  gcc/testsuite/gnat.dg/stack_check3.ads
  1eaaf2506701c7ef67f43802eab8a1e5  gcc/testsuite/gnat.dg/stack_usage1.adb
  eb1afc233879c153d1d38664b2d76289  gcc/testsuite/gnat.dg/stack_usage1_pkg.adb
--- 59309,59319 ----
  6547028813699cf5a1bebf9380db3b22  gcc/testsuite/gnat.dg/sso5.adb
  fe04b533a1bd519280c1aca23dae94ee  gcc/testsuite/gnat.dg/sso6.adb
  19c0b391fd234424564d1de0c71471e6  gcc/testsuite/gnat.dg/sso7.adb
! 3a59c0b7008fb25e31d4d07f9898d97a  gcc/testsuite/gnat.dg/sso8.adb
! 592072285391f0188b5f02ebe95defa6  gcc/testsuite/gnat.dg/sso8_pkg.ads
! 01b725baf06af2145cc194f2f41d03af  gcc/testsuite/gnat.dg/stack_check1.adb
! 43d7ee51ec7fad6f1e3933365ccef1c4  gcc/testsuite/gnat.dg/stack_check2.adb
! 96ae3c1ca5866400f1b0f8ecdac4d86e  gcc/testsuite/gnat.dg/stack_check3.adb
  9b9f371ac88351d2ce0f7b3bd69193c1  gcc/testsuite/gnat.dg/stack_check3.ads
  1eaaf2506701c7ef67f43802eab8a1e5  gcc/testsuite/gnat.dg/stack_usage1.adb
  eb1afc233879c153d1d38664b2d76289  gcc/testsuite/gnat.dg/stack_usage1_pkg.adb
*************** eb1afc233879c153d1d38664b2d76289  gcc/te
*** 55451,55456 ****
--- 59323,59330 ----
  623a134e3e63beed37437c1d2aea9275  gcc/testsuite/gnat.dg/stack_usage2.adb
  6d8d844906335bd743634b05aeac94ed  gcc/testsuite/gnat.dg/stack_usage3.adb
  7c21ff74be18a3ef4fb68757c50e1b9f  gcc/testsuite/gnat.dg/stack_usage3_pkg.ads
+ 1d0c008639c090f51720d46c97a8b1c2  gcc/testsuite/gnat.dg/stack_usage4.adb
+ 2d4aff7a28b0da70277cd8324fef5334  gcc/testsuite/gnat.dg/stack_usage4_pkg.ads
  ba642eb20538a570a8e13d1991ab7d47  gcc/testsuite/gnat.dg/statically_matching.ads
  75cf5d1b57d648a031611389b621ac7a  gcc/testsuite/gnat.dg/str1.adb
  45c664157f392a00cad114bc9808f669  gcc/testsuite/gnat.dg/string_comparison.adb
*************** ba642eb20538a570a8e13d1991ab7d47  gcc/te
*** 55458,55465 ****
--- 59332,59346 ----
  1ef4c3b0bb5f3ee30e19875868fb5e2f  gcc/testsuite/gnat.dg/string_slice2.adb
  782494d902dc38e7e31209882cbc10d2  gcc/testsuite/gnat.dg/subp_elim_errors.adb
  cf6061ac7a16f74b48144be58c3da5e2  gcc/testsuite/gnat.dg/subp_elim_errors.ads
+ 83548cc110b5dea61f198392d0b5ba60  gcc/testsuite/gnat.dg/subp_inst.adb
+ 0e21fedbcd64e4f36839cc7fe179d80b  gcc/testsuite/gnat.dg/subp_inst_pkg.adb
+ 840b0c423abf6b2fae281aeda3118ba0  gcc/testsuite/gnat.dg/subp_inst_pkg.ads
  c087d7cad0ff48806e04cef1eb71ab0b  gcc/testsuite/gnat.dg/sync1.adb
  3c71d6cd56c1a37f60a6d6770fb99296  gcc/testsuite/gnat.dg/sync1.ads
+ 6cd2247ce30f79797f7d04c146a8645c  gcc/testsuite/gnat.dg/sync_iface_call.adb
+ 657f80b9cc95c111ccf12b6ca7d7b1ca  gcc/testsuite/gnat.dg/sync_iface_call_pkg.ads
+ c9f2a425fde8c31e16075570e1c219a0  gcc/testsuite/gnat.dg/sync_iface_call_pkg2.adb
+ d77e6b2bfdc6a2694842892193859ea0  gcc/testsuite/gnat.dg/sync_iface_call_pkg2.ads
  8156f147fe428f54705e52707eba49c8  gcc/testsuite/gnat.dg/sync_iface_test.adb
  70f1f4752af997552f327ae93f3e9c81  gcc/testsuite/gnat.dg/sync_iface_test.ads
  e871828ce7fa5b73ca3150aa57083b62  gcc/testsuite/gnat.dg/taft_type1.adb
*************** b834fcf03b5fb459726913bac61272d7  gcc/te
*** 55471,55478 ****
--- 59352,59363 ----
  e86c36026330e1992e30edcde9c47711  gcc/testsuite/gnat.dg/taft_type2_pkg.ads
  a2d1b1d81f30cebf6450190e60832dbd  gcc/testsuite/gnat.dg/taft_type3.adb
  c942637f11d6af9196b4084ffea5b58a  gcc/testsuite/gnat.dg/taft_type3_pkg.ads
+ ed3107ee131d494c8d87dc28affd1c65  gcc/testsuite/gnat.dg/taft_type4.adb
+ c2e61c9a91ac80e8c693588a2ae2d445  gcc/testsuite/gnat.dg/taft_type4_pkg.adb
+ 311a46f0c48e21dc5fe5ad551b2e094c  gcc/testsuite/gnat.dg/taft_type4_pkg.ads
  ed172c06e81fb2f6dc483054d3ef7c58  gcc/testsuite/gnat.dg/tag1.adb
  d8319b2f811af06cb44f146ec7da6b96  gcc/testsuite/gnat.dg/tagged_alloc_free.adb
+ 481efead7e3aedfaed28a222a16aea4f  gcc/testsuite/gnat.dg/tagged_prefix_call.adb
  c2b9db57c79a5ca86ff5b7f76be0a238  gcc/testsuite/gnat.dg/tagged_type_pkg.adb
  2529bf1a15402f5ed09f8f69c84815b0  gcc/testsuite/gnat.dg/tagged_type_pkg.ads
  835d4fbb08057391a3b6fdf59a922548  gcc/testsuite/gnat.dg/tail_call.adb
*************** e8e39c388c32e8e9b60efbb677b05921  gcc/te
*** 55557,55567 ****
--- 59442,59467 ----
  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
+ 22691e0b30f29e2232672977844f75c1  gcc/testsuite/gnat.dg/unchecked_union3.adb
  9bcc7fe177662a52afe92c8e863cb022  gcc/testsuite/gnat.dg/uninit_array.adb
  8e53621d67942b5d53e2c54dd1648dd7  gcc/testsuite/gnat.dg/uninit_array.ads
  be51b72e76043adb990a3e95f4c40554  gcc/testsuite/gnat.dg/uninit_array_pkg.ads
  eb307affba2801df64df853c5bef48a7  gcc/testsuite/gnat.dg/uninit_func.adb
+ e75228bb639049d22943d0199ceed3a8  gcc/testsuite/gnat.dg/unreferenced.adb
+ 9de43a0d5e23bff9b082896cf2ad5f0c  gcc/testsuite/gnat.dg/unroll1.adb
+ 289b6830cb051c5fb4345c439b2a8bfc  gcc/testsuite/gnat.dg/unroll1.ads
+ d5c5b8637af9b5e6d01ed3275f556ed9  gcc/testsuite/gnat.dg/unroll2.adb
+ 8e7308f7a249ff8075a6767a45dab8a0  gcc/testsuite/gnat.dg/unroll2.ads
+ 5e19dca2b0e9d93d826bb402134f8709  gcc/testsuite/gnat.dg/unroll3.adb
+ 2a4241b6f1ef29480dbf94696290330e  gcc/testsuite/gnat.dg/unroll3.ads
+ 69256ac8845b16c3ef667ad86f85469c  gcc/testsuite/gnat.dg/unroll4.adb
+ 7d073fe12b9aad1d0208bc4837ded6fb  gcc/testsuite/gnat.dg/unroll4.ads
+ 9ea3823af135f00304442c546f455041  gcc/testsuite/gnat.dg/unroll4_pkg.ads
  9e88b7ce099b1d8cf08618b19708a2f3  gcc/testsuite/gnat.dg/valid1.adb
+ 54c3a51bfffb1449ddb2f96d64bc4ed6  gcc/testsuite/gnat.dg/validity_check.adb
+ dd9e1c79a365f3c5572752bd8ddcfe84  gcc/testsuite/gnat.dg/validity_check2.adb
+ da0ce573bcb3ddebededa8ee3a72be25  gcc/testsuite/gnat.dg/validity_check2_pkg.ads
  be705ea9eb2b2a25acd0c7f8bce18372  gcc/testsuite/gnat.dg/valued_proc.adb
  4513681c73046063b5b42df22c9ffc1e  gcc/testsuite/gnat.dg/valued_proc_pkg.ads
  b98dad271fa48ba2b9248ffeb13133e0  gcc/testsuite/gnat.dg/varsize1.adb
*************** bde52ed2aec45f963132bc6495131b08  gcc/te
*** 55588,55599 ****
  86a59a635a95da514e81ab7723882fce  gcc/testsuite/gnat.dg/vect13.adb
  8f43871522c03ff459eacc98e269f865  gcc/testsuite/gnat.dg/vect13.ads
  07330a8290336cf3c90df9ddb0d7452e  gcc/testsuite/gnat.dg/vect14.adb
! 0bcfdd353f5c2325a45c5c389d745665  gcc/testsuite/gnat.dg/vect15.adb
! 90f200b6ac4e48c728bfbb0a17384f81  gcc/testsuite/gnat.dg/vect15.ads
! f05b181a06ade86922526a94952379e4  gcc/testsuite/gnat.dg/vect16.adb
! 47241a0f278b89c56b8e8b9229bccd10  gcc/testsuite/gnat.dg/vect16.ads
! c162dd1f57467dd1cd9a1c2547219d18  gcc/testsuite/gnat.dg/vect17.adb
! 908675d4c4c83c34f8679263a4eb28dc  gcc/testsuite/gnat.dg/vect17.ads
  9ad8e3c0bd2394501db2ab8d4d6969c5  gcc/testsuite/gnat.dg/vect18.adb
  061f8b3edbdb38a5059a5f71b88e29b3  gcc/testsuite/gnat.dg/vect18.ads
  aba88b50a3b92ff875cca1546236f2ef  gcc/testsuite/gnat.dg/vect1_pkg.ads
--- 59488,59499 ----
  86a59a635a95da514e81ab7723882fce  gcc/testsuite/gnat.dg/vect13.adb
  8f43871522c03ff459eacc98e269f865  gcc/testsuite/gnat.dg/vect13.ads
  07330a8290336cf3c90df9ddb0d7452e  gcc/testsuite/gnat.dg/vect14.adb
! 3da2a772c472f6ea9930613dc67a4859  gcc/testsuite/gnat.dg/vect15.adb
! 4bad7e06d1d11bb4a9eb495e8a0b6205  gcc/testsuite/gnat.dg/vect15.ads
! a3b42c057449bd7a2264e8b26a74f2d3  gcc/testsuite/gnat.dg/vect16.adb
! 6b59b4866b6cd1a96551cbb40ed3eb9a  gcc/testsuite/gnat.dg/vect16.ads
! 21afe3a12b297f9b5a836178c1360695  gcc/testsuite/gnat.dg/vect17.adb
! 0be620055c94064f491efaae19cdebea  gcc/testsuite/gnat.dg/vect17.ads
  9ad8e3c0bd2394501db2ab8d4d6969c5  gcc/testsuite/gnat.dg/vect18.adb
  061f8b3edbdb38a5059a5f71b88e29b3  gcc/testsuite/gnat.dg/vect18.ads
  aba88b50a3b92ff875cca1546236f2ef  gcc/testsuite/gnat.dg/vect1_pkg.ads
*************** e4f810d480db4aab70255e3feac28e96  gcc/te
*** 55670,55676 ****
  2f484daa4249470c60f012e48e028ba5  gcc/testsuite/gnat.dg/wide_boolean_pkg.ads
  77aaeb8d16afbdd42fa33c22011ad66f  gcc/testsuite/gnat.dg/wide_pi.adb
  067dba883e26668ff9d0a937d7332052  gcc/testsuite/gnat.dg/wide_test.adb
! 0061543aa5d577f3cf1232427ffba895  gcc/testsuite/go.dg/dg.exp
  df3ff5f9e0759960e0959e71a0d0583f  gcc/testsuite/go.dg/err-1.go
  ec0e3914d3f5df5bec3a4fd8dcf1c0af  gcc/testsuite/go.dg/goto-1.go
  a15752f522823a4bb86ac0b6d5e86305  gcc/testsuite/go.dg/undef-1.go
--- 59570,59576 ----
  2f484daa4249470c60f012e48e028ba5  gcc/testsuite/gnat.dg/wide_boolean_pkg.ads
  77aaeb8d16afbdd42fa33c22011ad66f  gcc/testsuite/gnat.dg/wide_pi.adb
  067dba883e26668ff9d0a937d7332052  gcc/testsuite/gnat.dg/wide_test.adb
! b3a5d8460dfdd0719a2051df5454ae03  gcc/testsuite/go.dg/dg.exp
  df3ff5f9e0759960e0959e71a0d0583f  gcc/testsuite/go.dg/err-1.go
  ec0e3914d3f5df5bec3a4fd8dcf1c0af  gcc/testsuite/go.dg/goto-1.go
  a15752f522823a4bb86ac0b6d5e86305  gcc/testsuite/go.dg/undef-1.go
*************** a06ac97125a90b106e6e0dfd7a0cd8cb  gcc/te
*** 55679,55685 ****
  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
! ce170fee23f4c702f23af070a0a47f16  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
--- 59579,59585 ----
  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
! 5381334979126b043f33e188304112f7  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
*************** d21cd792a83f6582a1e628fcd8577ba0  gcc/te
*** 55691,55698 ****
--- 59591,59600 ----
  c867474899077a97082d831f95446038  gcc/testsuite/go.go-torture/execute/goto-1.go
  bf24b8b02daf19abb2002af2babeddf0  gcc/testsuite/go.go-torture/execute/map-1.go
  82bbbae6318f74c9bc5927afe19e72f9  gcc/testsuite/go.go-torture/execute/method-1.go
+ 3f5cca5ff99750a6e02ed913ffb2e0e2  gcc/testsuite/go.go-torture/execute/names-1.go
  16d8326b6b5702353bfece15576754e2  gcc/testsuite/go.go-torture/execute/nested-1.go
  02a2e149fbb2cded10b7f6b4efb90de7  gcc/testsuite/go.go-torture/execute/pointer-1.go
+ 08f3d763affe6e8f6dcf380605e99d03  gcc/testsuite/go.go-torture/execute/printnil.go
  72c1a1eea1de350a50bd66eedded1d47  gcc/testsuite/go.go-torture/execute/return-1.go
  5910eeca2cae4822b220911693a6117d  gcc/testsuite/go.go-torture/execute/return-2.go
  ff4b329ac33dad7b77ca1254608e9ca4  gcc/testsuite/go.go-torture/execute/return-3.go
*************** f37d4791cfa22e9a20848922ea5de498  gcc/te
*** 55705,55711 ****
  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
! cb5513db234e4b5dc21ca7ee8d613ef6  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
--- 59607,59613 ----
  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
! 1c5a52283bfd2d86ba6baf09303e898e  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
*************** eb75062d9d1af2015bd5f411a366d90c  gcc/te
*** 56155,56161 ****
  4f7fce135333047054a36b2f7cd5d94d  gcc/testsuite/go.test/test/fixedbugs/bug269.go
  d8b06593fa294ebe96699b9d2fc2f341  gcc/testsuite/go.test/test/fixedbugs/bug271.go
  e64341475b049a5a242aa3d79213e97f  gcc/testsuite/go.test/test/fixedbugs/bug272.go
! 8f0832c64917c4b423902d0f36b4171f  gcc/testsuite/go.test/test/fixedbugs/bug273.go
  45df6bf13258b3e84e01ae4a5e5635cd  gcc/testsuite/go.test/test/fixedbugs/bug274.go
  9c95cd4331e0d89ae56c8a70f8f74e9e  gcc/testsuite/go.test/test/fixedbugs/bug275.go
  c7f98dd3eb33fe5e0d92d5e8ba0b0b98  gcc/testsuite/go.test/test/fixedbugs/bug276.go
--- 60057,60063 ----
  4f7fce135333047054a36b2f7cd5d94d  gcc/testsuite/go.test/test/fixedbugs/bug269.go
  d8b06593fa294ebe96699b9d2fc2f341  gcc/testsuite/go.test/test/fixedbugs/bug271.go
  e64341475b049a5a242aa3d79213e97f  gcc/testsuite/go.test/test/fixedbugs/bug272.go
! cf8814b825fff0e5d5510309854c8560  gcc/testsuite/go.test/test/fixedbugs/bug273.go
  45df6bf13258b3e84e01ae4a5e5635cd  gcc/testsuite/go.test/test/fixedbugs/bug274.go
  9c95cd4331e0d89ae56c8a70f8f74e9e  gcc/testsuite/go.test/test/fixedbugs/bug275.go
  c7f98dd3eb33fe5e0d92d5e8ba0b0b98  gcc/testsuite/go.test/test/fixedbugs/bug276.go
*************** b18ee66b072d3ab1e29e06d842909b21  gcc/te
*** 56762,56768 ****
  d235036e1f0b17e05560c35858511621  gcc/testsuite/go.test/test/simassign.go
  258c0849b0f59565301ead52e63c67a7  gcc/testsuite/go.test/test/sinit.go
  7e6551aee8fb95dd0ad9cb9b21463251  gcc/testsuite/go.test/test/sizeof.go
! 19d4c7e94c9ea38b32f0a94f64ae9125  gcc/testsuite/go.test/test/slice3.go
  68c7257988cba93035ae65d79cfe5940  gcc/testsuite/go.test/test/slice3err.go
  4f4a375df736485666c299baed6d06ca  gcc/testsuite/go.test/test/solitaire.go
  7cfeb1954cdc6e89e7d49d9508f972e3  gcc/testsuite/go.test/test/stack.go
--- 60664,60670 ----
  d235036e1f0b17e05560c35858511621  gcc/testsuite/go.test/test/simassign.go
  258c0849b0f59565301ead52e63c67a7  gcc/testsuite/go.test/test/sinit.go
  7e6551aee8fb95dd0ad9cb9b21463251  gcc/testsuite/go.test/test/sizeof.go
! 1a0ee7a0e5ecdeadc721266c8bdd72d7  gcc/testsuite/go.test/test/slice3.go
  68c7257988cba93035ae65d79cfe5940  gcc/testsuite/go.test/test/slice3err.go
  4f4a375df736485666c299baed6d06ca  gcc/testsuite/go.test/test/solitaire.go
  7cfeb1954cdc6e89e7d49d9508f972e3  gcc/testsuite/go.test/test/stack.go
*************** cd644384eebc8c1b05a70f19e4fc8854  gcc/te
*** 56807,56821 ****
  12c130dc1acf2f81aa1688b7a7154b76  gcc/testsuite/go.test/test/varerr.go
  50c0f03762d429c13fd0302c79d90157  gcc/testsuite/go.test/test/varinit.go
  7f822ef283b31994d8382c63460fb884  gcc/testsuite/go.test/test/zerodivide.go
! 5becb0dfc2b10ba8254a2d76d92856ef  gcc/testsuite/jit.dg/all-non-failing-tests.h
  7bc42e89ae77872c8fc581b4babf1832  gcc/testsuite/jit.dg/create-code-for-hello-world-executable.h
  e2d6abe9d39ef55e33a36bbe4db25586  gcc/testsuite/jit.dg/harness.h
! b160f12ef4b551e62f7a29fa0a9f8b1b  gcc/testsuite/jit.dg/jit.exp
  790dcf4e4a5c3dce84639ef815265f21  gcc/testsuite/jit.dg/test-accessing-struct.c
  60caef14bfb482627a962469a4524fce  gcc/testsuite/jit.dg/test-accessing-union.c
  c9f821ccc1905c2cf6da3b515300cc71  gcc/testsuite/jit.dg/test-arith-overflow.c
  978312b6ef29d047612e4077b2776108  gcc/testsuite/jit.dg/test-array-as-pointer.c
  b6b657ddbcecefb50b21259cc5711010  gcc/testsuite/jit.dg/test-arrays.c
  3f5b0ae02ffd9c801777cd40eeb400a9  gcc/testsuite/jit.dg/test-benchmark.c
  af0a18ef8912906bb36ca88219c06667  gcc/testsuite/jit.dg/test-calling-external-function.c
  fcf20b943f3e9affe23adec9277064a7  gcc/testsuite/jit.dg/test-calling-function-ptr.c
--- 60709,60726 ----
  12c130dc1acf2f81aa1688b7a7154b76  gcc/testsuite/go.test/test/varerr.go
  50c0f03762d429c13fd0302c79d90157  gcc/testsuite/go.test/test/varinit.go
  7f822ef283b31994d8382c63460fb884  gcc/testsuite/go.test/test/zerodivide.go
! 36bcbbba4ed3804fdbd424f2a08cc17e  gcc/testsuite/jit.dg/all-non-failing-tests.h
  7bc42e89ae77872c8fc581b4babf1832  gcc/testsuite/jit.dg/create-code-for-hello-world-executable.h
  e2d6abe9d39ef55e33a36bbe4db25586  gcc/testsuite/jit.dg/harness.h
! cb61e55e1ba144e4554711ed4cb20085  gcc/testsuite/jit.dg/jit.exp
  790dcf4e4a5c3dce84639ef815265f21  gcc/testsuite/jit.dg/test-accessing-struct.c
  60caef14bfb482627a962469a4524fce  gcc/testsuite/jit.dg/test-accessing-union.c
+ c233136ab18af5e948dfb6afa5fee7b7  gcc/testsuite/jit.dg/test-alignment.c
+ c96b8b75ba517dc647306c0f299c9b2d  gcc/testsuite/jit.dg/test-alignment.cc
  c9f821ccc1905c2cf6da3b515300cc71  gcc/testsuite/jit.dg/test-arith-overflow.c
  978312b6ef29d047612e4077b2776108  gcc/testsuite/jit.dg/test-array-as-pointer.c
  b6b657ddbcecefb50b21259cc5711010  gcc/testsuite/jit.dg/test-arrays.c
+ cc1b167a1d5eaf426dbf6721a80c93e7  gcc/testsuite/jit.dg/test-autovectorize.c
  3f5b0ae02ffd9c801777cd40eeb400a9  gcc/testsuite/jit.dg/test-benchmark.c
  af0a18ef8912906bb36ca88219c06667  gcc/testsuite/jit.dg/test-calling-external-function.c
  fcf20b943f3e9affe23adec9277064a7  gcc/testsuite/jit.dg/test-calling-function-ptr.c
*************** da2633ae9e3039a064e79583ac2ed729  gcc/te
*** 56831,56837 ****
  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
! fc64fb2e78ec5391711c86cb68679ffb  gcc/testsuite/jit.dg/test-error-array-bounds.c
  667a8f1d72273ce306bbb8b76f2ab2d2  gcc/testsuite/jit.dg/test-error-bad-cast.c
  5de6c111bd3ae983370113c7ae2dbbee  gcc/testsuite/jit.dg/test-error-block-in-wrong-function.c
  4ee80d56c3318e647c19bcd09cb20d00  gcc/testsuite/jit.dg/test-error-call-through-ptr-with-mismatching-args.c
--- 60736,60742 ----
  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
! 4e589beffb07ce4585fd7c6d5a310e31  gcc/testsuite/jit.dg/test-error-array-bounds.c
  667a8f1d72273ce306bbb8b76f2ab2d2  gcc/testsuite/jit.dg/test-error-bad-cast.c
  5de6c111bd3ae983370113c7ae2dbbee  gcc/testsuite/jit.dg/test-error-block-in-wrong-function.c
  4ee80d56c3318e647c19bcd09cb20d00  gcc/testsuite/jit.dg/test-error-call-through-ptr-with-mismatching-args.c
*************** bcd00aa9e006316640c3bf84704c9810  gcc/te
*** 56848,56853 ****
--- 60753,60759 ----
  bb89285767406b5a1889295ccd7f67a3  gcc/testsuite/jit.dg/test-error-gcc_jit_block_end_with_switch-NULL-case.c
  d55f20c5f3cf00102cbec281658ff7bf  gcc/testsuite/jit.dg/test-error-gcc_jit_block_end_with_switch-mismatching-case-type.c
  8a3fd1a833ab3379685a11bf3edf5271  gcc/testsuite/jit.dg/test-error-gcc_jit_block_end_with_switch-overlapping-ranges.c
+ edcaa86bbc44b476ee7c7f8b934111f2  gcc/testsuite/jit.dg/test-error-gcc_jit_context_get_builtin_function-unknown-builtin.c
  5aa56a592051ab5ff0f97b35c07030c3  gcc/testsuite/jit.dg/test-error-gcc_jit_context_new_case-non-const-label.c
  c698e1c602213fa103f64d4a140c4a77  gcc/testsuite/jit.dg/test-error-gcc_jit_context_new_case-non-integer-type.c
  3e1a7c74341993d455e36ff9afc47553  gcc/testsuite/jit.dg/test-error-gcc_jit_context_new_case-reversed-endpoints.c
*************** cf9089e548a3c7655fcf44ba01855156  gcc/te
*** 56859,56868 ****
--- 60765,60778 ----
  8f1f297b3c467bbd4d76b287188bc38b  gcc/testsuite/jit.dg/test-error-gcc_jit_rvalue_dereference_field-wrong-struct.c
  882fc8d47141352fdb573123d262e84a  gcc/testsuite/jit.dg/test-error-gcc_jit_timer_pop-mismatch.c
  fe03880708c49230842f6063941c3a6d  gcc/testsuite/jit.dg/test-error-gcc_jit_timer_pop-too-many.c
+ 70e8694ca0d15d096d920a4e4a3dc94e  gcc/testsuite/jit.dg/test-error-gcc_jit_type_get_aligned-non-power-of-two.c
+ c22c503dc3bb157300ee4059c866d3d6  gcc/testsuite/jit.dg/test-error-gcc_jit_type_get_vector-bad-type.c
+ dc27837daa9e72b19179ead218efbbbf  gcc/testsuite/jit.dg/test-error-gcc_jit_type_get_vector-non-power-of-two.c
  c598a1fe66543f17fd9c475fbbd32f15  gcc/testsuite/jit.dg/test-error-get-type-bad-enum.c
  1c46030d316755aa57d2e4bc9ab71f72  gcc/testsuite/jit.dg/test-error-impossible-must-tail-call.c
  44f838482cec805a0b62f60dbb637074  gcc/testsuite/jit.dg/test-error-index-not-a-numeric-type.c
  458e3bddb454410827b163729a08ec20  gcc/testsuite/jit.dg/test-error-local-used-from-other-function.c
+ 59405aa3ae28110136ced21d59bec6ff  gcc/testsuite/jit.dg/test-error-mismatching-types-in-assignment-fn-ptr.c
  7db20d35b83f985e178be60d7ab67ed6  gcc/testsuite/jit.dg/test-error-mismatching-types-in-assignment-op.c
  90002ca9ba13097162df2874c51fb64e  gcc/testsuite/jit.dg/test-error-mismatching-types-in-assignment.c
  37145ab118afacedfe09957bd38a1d8f  gcc/testsuite/jit.dg/test-error-mismatching-types-in-call.c
*************** c9c33e452e2adfd9c4e9baf94b297ac1  gcc/te
*** 56881,56887 ****
  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
! 09679b518362b59bc7f271496bfe40e0  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
--- 60791,60797 ----
  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
*************** b02011c7edbcfca8dfb3bd46815567fc  gcc/te
*** 56893,56904 ****
  1b066c36dfae0d4f419e39345b537a56  gcc/testsuite/jit.dg/test-long-names.c
  c36d06171cf29aa67856b3136828352f  gcc/testsuite/jit.dg/test-nested-contexts.c
  e476b3e50d2451ccb2e83dcb94690dc6  gcc/testsuite/jit.dg/test-nested-loops.c
! 3bf17216559dc2f55aae92782ae349e9  gcc/testsuite/jit.dg/test-operator-overloading.cc
  f23c8426b4779d93458122aa6f97231a  gcc/testsuite/jit.dg/test-pr66700-observing-write-through-ptr.c
  1e13f203827617338962b7f4bc0aef4d  gcc/testsuite/jit.dg/test-pr66779.c
  1f18cb1e4926db574b25c58a26e71a53  gcc/testsuite/jit.dg/test-quadratic.c
! 95c937f311fc2d9ae4612d3e7cbf6a8a  gcc/testsuite/jit.dg/test-quadratic.cc
  df424c268791473ace062ef873c388e2  gcc/testsuite/jit.dg/test-reading-struct.c
  c8398a3f73dd4b289b3b1e611cb3bf23  gcc/testsuite/jit.dg/test-string-literal.c
  5d549ab9d46394d9f411c75f9fe0e934  gcc/testsuite/jit.dg/test-sum-of-squares.c
  bca3f58a8fb9ee1db76c5883c6d533f3  gcc/testsuite/jit.dg/test-switch.c
--- 60803,60815 ----
  1b066c36dfae0d4f419e39345b537a56  gcc/testsuite/jit.dg/test-long-names.c
  c36d06171cf29aa67856b3136828352f  gcc/testsuite/jit.dg/test-nested-contexts.c
  e476b3e50d2451ccb2e83dcb94690dc6  gcc/testsuite/jit.dg/test-nested-loops.c
! 3dd91ef7035565601d335ad5b9e073e4  gcc/testsuite/jit.dg/test-operator-overloading.cc
  f23c8426b4779d93458122aa6f97231a  gcc/testsuite/jit.dg/test-pr66700-observing-write-through-ptr.c
  1e13f203827617338962b7f4bc0aef4d  gcc/testsuite/jit.dg/test-pr66779.c
  1f18cb1e4926db574b25c58a26e71a53  gcc/testsuite/jit.dg/test-quadratic.c
! ce096ee573017f44e9c3cd0933f0d297  gcc/testsuite/jit.dg/test-quadratic.cc
  df424c268791473ace062ef873c388e2  gcc/testsuite/jit.dg/test-reading-struct.c
+ 2819f51a64e319d697134a1319b760b1  gcc/testsuite/jit.dg/test-returning-function-ptr.c
  c8398a3f73dd4b289b3b1e611cb3bf23  gcc/testsuite/jit.dg/test-string-literal.c
  5d549ab9d46394d9f411c75f9fe0e934  gcc/testsuite/jit.dg/test-sum-of-squares.c
  bca3f58a8fb9ee1db76c5883c6d533f3  gcc/testsuite/jit.dg/test-switch.c
*************** bca3f58a8fb9ee1db76c5883c6d533f3  gcc/te
*** 56907,56976 ****
  62cfd298f75d5b02e37418640347757d  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
  96ac85af1dde837e4f4e2444d083cf22  gcc/testsuite/jit.dg/test-volatile.c
  6477c66fcebff4d502d26e2d247251ce  gcc/testsuite/jit.dg/verify-dynamic-library.c
! eceeb0831d52533015e20292ddcf0a6f  gcc/testsuite/lib/asan-dg.exp
! 712536fdd4b1dac860516c9f0b9b03d5  gcc/testsuite/lib/atomic-dg.exp
! d2a2358961bc030192dee9c51f8feb96  gcc/testsuite/lib/brig-dg.exp
! 65262bff8c5d2ea2fd48a2d267be36b0  gcc/testsuite/lib/brig.exp
! a4417f6bdd603867fe6e3601e33361fb  gcc/testsuite/lib/c-compat.exp
! 4572b7cf7e1fc6069e52061f319347f6  gcc/testsuite/lib/c-torture.exp
! 6564aca2f1870f684432f189611df29d  gcc/testsuite/lib/cilk-plus-dg.exp
! f0b9cd46bd84795beb409e93fe56bc49  gcc/testsuite/lib/clearcap.exp
! db53053e613b0c13a2ba0c3ee92c82f0  gcc/testsuite/lib/compat.exp
! b4bc465b043e5fb3dd95e018d454e349  gcc/testsuite/lib/copy-file.exp
! c71e3a2ce0b50266aef8c195063972d0  gcc/testsuite/lib/dejapatches.exp
! 2e4bb510110fc0db73a503fc19175c05  gcc/testsuite/lib/dg-pch.exp
! c729cf05e04cfd8184e06f38d9f5e8fb  gcc/testsuite/lib/file-format.exp
! 05344e5085c2000c5479d85823b26340  gcc/testsuite/lib/fortran-modules.exp
! 8d0819a52d24c5880f5bc4d8932343ee  gcc/testsuite/lib/fortran-torture.exp
! 09f3dc05f6e97f7439cfbfc812390190  gcc/testsuite/lib/g++-dg.exp
! 3d14bcfb320fdbaa63bebccc6d54e73d  gcc/testsuite/lib/g++.exp
! dddb20493539e2df474f446429fbf5c2  gcc/testsuite/lib/gcc-defs.exp
! 3686c7884ce6d5b4ac6f5d18c3f544f1  gcc/testsuite/lib/gcc-dg.exp
! 8cf78f7f71ffd7d39fe693a143d52cee  gcc/testsuite/lib/gcc-gdb-test.exp
! fbe3c079e0364b9381748b259e3a8d75  gcc/testsuite/lib/gcc-simulate-thread.exp
! 7d26741b8376a204544ea4bfb4561454  gcc/testsuite/lib/gcc.exp
! fd8cec86b58cd83a3212e2f2e2fcfe53  gcc/testsuite/lib/gcov.exp
! 81e38a222dcfb81bf38e8c0082bf2143  gcc/testsuite/lib/gfortran-dg.exp
! 87a6e8bf119253c213c75000f95be0d7  gcc/testsuite/lib/gfortran.exp
! 14068335e536e2efc5865bf3f3cb5a2f  gcc/testsuite/lib/gnat-dg.exp
! af9a64eaf3431386a06e9ffffd2eeed6  gcc/testsuite/lib/gnat.exp
! 65bf1b4193d63a663db1fa14a1bae4ca  gcc/testsuite/lib/go-dg.exp
! e6438ecc1b9570dad204e17562e4ca57  gcc/testsuite/lib/go-torture.exp
! a0970ac97ef294c126398c984f620eca  gcc/testsuite/lib/go.exp
! 7ef4a1ea6c42599c68e507324cbb81ce  gcc/testsuite/lib/lto.exp
! 00cab9871001510b0a35a521ed29043d  gcc/testsuite/lib/mike-g++.exp
! 7bdcc01a9b7069141a233cd02489ecd3  gcc/testsuite/lib/mike-gcc.exp
! 297cc94e22047c36cd21faa88d1acdf5  gcc/testsuite/lib/mpx-dg.exp
! 0d8272135de1172f98bd3e0b6ce61a3b  gcc/testsuite/lib/multiline.exp
! 1b392919375e07e15cf301253ce28290  gcc/testsuite/lib/obj-c++-dg.exp
! b5fcbb6902add3437c8005d91e0ba72f  gcc/testsuite/lib/obj-c++.exp
! d6a9ca756a1aa49d715b8cddbb455bc9  gcc/testsuite/lib/objc-dg.exp
! 601840db2c33aa0f1d65a17c464f58aa  gcc/testsuite/lib/objc-torture.exp
! 8758c2cb8366a6244e6e34ac4c080823  gcc/testsuite/lib/objc.exp
! 3be117a3834bb555505f132cf0247274  gcc/testsuite/lib/options.exp
! 839e980bac44a823cd11f689f2ec13f3  gcc/testsuite/lib/plugin-support.exp
! 8c1541dcedd895d11cda13061421a478  gcc/testsuite/lib/profopt.exp
! 7bdccb186f8ebe4b810dfbc4f9a21091  gcc/testsuite/lib/prune.exp
! 9c6d33569cf604413f68d57c0afe8ace  gcc/testsuite/lib/scanasm.exp
! 7d82573b4996625ff7ef4fdb21835322  gcc/testsuite/lib/scandump.exp
! 05bb46135f5008e82061df74c4ed3466  gcc/testsuite/lib/scanipa.exp
! 2064cb12b37bbe5952470fbddb00e45a  gcc/testsuite/lib/scanrtl.exp
! 3b3f36e96e89e5aaa2ffc3b3e75eea8a  gcc/testsuite/lib/scantree.exp
! b1df537fb91fd69120df252f52b27873  gcc/testsuite/lib/target-libpath.exp
! e079de022f07dc380fbd4e8490136cd1  gcc/testsuite/lib/target-supports-dg.exp
! 4b4a0f8a68935680202d5ec3f0c73422  gcc/testsuite/lib/target-supports.exp
! d064f4e641d32cc8ccbe1f2853cc502c  gcc/testsuite/lib/target-utils.exp
! b96a73aab1d3f546b8911126a60bec69  gcc/testsuite/lib/timeout-dg.exp
! 31892baa0052b423e00975b658dcfd9f  gcc/testsuite/lib/timeout.exp
! 077a353719095819b7a71a7bccb6d602  gcc/testsuite/lib/torture-options.exp
! 2f2ff23c9b64ed5ca290bb2404db049f  gcc/testsuite/lib/tsan-dg.exp
! 76577a88d1c107b6c82027b6b3245d80  gcc/testsuite/lib/ubsan-dg.exp
! 89b31c440def3d5855c802001db81c11  gcc/testsuite/lib/wrapper.exp
  55160ccf08a9b1444b32deb900dac569  gcc/testsuite/obj-c++.dg/Wimplicit-fallthrough-1.mm
  84caaa988ddff2a3ef9a3c9c9bfe6fbf  gcc/testsuite/obj-c++.dg/at-class-1.mm
! b042e3bf52f9d5769f175204078c660a  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
  20e89698b24eeafa990cb80d6777719f  gcc/testsuite/obj-c++.dg/attributes/class-attribute-1.mm
--- 60818,60889 ----
  62cfd298f75d5b02e37418640347757d  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
+ fc650de429b1e302c5befad897716c07  gcc/testsuite/jit.dg/test-vector-rvalues.cc
+ 97200377fda6e0eacaebef74c6eab900  gcc/testsuite/jit.dg/test-vector-types.cc
  96ac85af1dde837e4f4e2444d083cf22  gcc/testsuite/jit.dg/test-volatile.c
  6477c66fcebff4d502d26e2d247251ce  gcc/testsuite/jit.dg/verify-dynamic-library.c
! 695762d2b37d2809991490d4815b9253  gcc/testsuite/lib/asan-dg.exp
! c2a69fe00f41a2a41a96de47d44d6c02  gcc/testsuite/lib/atomic-dg.exp
! ecf7acf9b529928bd48be1891f8c90a9  gcc/testsuite/lib/brig-dg.exp
! 0e7f72cd07b5d5da5c46e9652817030c  gcc/testsuite/lib/brig.exp
! 1fd1b71b3bc389026e8b9da608b07b24  gcc/testsuite/lib/c-compat.exp
! 734e7e6e9685facea9e53f0d29ccedd9  gcc/testsuite/lib/c-torture.exp
! 47da3e22d08a053ad46c27155465741f  gcc/testsuite/lib/clearcap.exp
! 4d4a189517def643a65f2d7a867506ab  gcc/testsuite/lib/compat.exp
! a76346ea6c2a65a1463fe3ee7469e70e  gcc/testsuite/lib/copy-file.exp
! 9d538c5ea64ba16f0120c57a5cc51a6b  gcc/testsuite/lib/dejapatches.exp
! f786e5622d39dcb72e92ff56af52b75e  gcc/testsuite/lib/dg-pch.exp
! 3884f492320a3101e0d5e5cfb72bbf82  gcc/testsuite/lib/file-format.exp
! 481c0dd8747a7f8a0fc052d264e661cb  gcc/testsuite/lib/fortran-modules.exp
! 50ca1077bda50df4ec74673075ebcfe6  gcc/testsuite/lib/fortran-torture.exp
! 76a95a9ca4b0f0f550120f3037ea633b  gcc/testsuite/lib/g++-dg.exp
! 9d318ca46f5423cb088e69f30e402d06  gcc/testsuite/lib/g++.exp
! 8d5ccc10d11cc89a15dd266cdbcb78c2  gcc/testsuite/lib/gcc-defs.exp
! 65a928142575a05708748fa8d02f36ef  gcc/testsuite/lib/gcc-dg.exp
! b3cc4931c00239f16573c0b68f6de757  gcc/testsuite/lib/gcc-gdb-test.exp
! a8fe15c086b06afb70f23a993cbbf577  gcc/testsuite/lib/gcc-simulate-thread.exp
! 28417cb893df3f1cd301e94edd0b0d7f  gcc/testsuite/lib/gcc.exp
! ad30471a28e882aa956e75e9276825d1  gcc/testsuite/lib/gcov.exp
! 757c6daddc2230e3f35dad0ea8c34597  gcc/testsuite/lib/gfortran-dg.exp
! 25fef15767312109a4b7b4ff54189b76  gcc/testsuite/lib/gfortran.exp
! b828648c1a2ec8b33442196f987604a5  gcc/testsuite/lib/gnat-dg.exp
! b62340aba6683a86eb80bc004ddc53b6  gcc/testsuite/lib/gnat.exp
! 67c6206500d8ceaaff3ace93b248328f  gcc/testsuite/lib/go-dg.exp
! 2afc6008a4a8d9ecda0e0a3a1ebafbf0  gcc/testsuite/lib/go-torture.exp
! 77adf95cedbd48c05e4f8208c0bee9ab  gcc/testsuite/lib/go.exp
! 13aa9e403ce6bd67dfcbbd46e5d1a141  gcc/testsuite/lib/lto.exp
! 787d115dd69da9b1d14b6881f6b4f8b7  gcc/testsuite/lib/mike-g++.exp
! 5eaea48ac94c7360497dbc2824a2fb2a  gcc/testsuite/lib/mike-gcc.exp
! 4f8f55b7af60d7414e4504f491ab66f2  gcc/testsuite/lib/mpx-dg.exp
! 491e6be33cd1760590fd5cb06b48be49  gcc/testsuite/lib/multiline.exp
! ea3059511945ae1a8c16826df976c283  gcc/testsuite/lib/obj-c++-dg.exp
! 3fa0c61ddb302bcf2b042819c4290fac  gcc/testsuite/lib/obj-c++.exp
! c34f86aaaaf88c9444ef1c49fbdbc9ad  gcc/testsuite/lib/objc-dg.exp
! 9ce93914d1f543c9148318848e59e393  gcc/testsuite/lib/objc-torture.exp
! a708f9e3767ed1076dcbe9bf9202276f  gcc/testsuite/lib/objc.exp
! 35b70ede8588eec8a5469c89d24c173b  gcc/testsuite/lib/options.exp
! d92cb3e1ca384ebd58aaa338e2ea20ea  gcc/testsuite/lib/plugin-support.exp
! 32b31bdb6b5fc80de3de9971550aecd0  gcc/testsuite/lib/profopt.exp
! 7552821ef1b74c74838216d6469987ee  gcc/testsuite/lib/prune.exp
! b5bfbe74c3d87ea643e58b43da042805  gcc/testsuite/lib/scanasm.exp
! c2081b5aed4c76bfaae467387f62438a  gcc/testsuite/lib/scandump.exp
! 04ca404890233243eb647c6bf77e4a24  gcc/testsuite/lib/scanipa.exp
! ddefd72c6263d00ab5296309ca73181b  gcc/testsuite/lib/scanlang.exp
! d4f13cbd7469ff86299e34adc8f06bea  gcc/testsuite/lib/scanrtl.exp
! 8a317f68f0d1e94ff7dbdfcfbe8ae0fb  gcc/testsuite/lib/scantree.exp
! 07ca5814aec67eb6ed534d9dd52f3eec  gcc/testsuite/lib/target-libpath.exp
! 5682b9a0ff87b238280adf3fe197e404  gcc/testsuite/lib/target-supports-dg.exp
! 558dcf383188e4f57e8367a3ed52795c  gcc/testsuite/lib/target-supports.exp
! a9d44f9fd714411fce92289acdd8488b  gcc/testsuite/lib/target-utils.exp
! 9e059b60a69a5b27cfcdacb9d4a2395e  gcc/testsuite/lib/timeout-dg.exp
! 625975eac95de5690fe871409e0458aa  gcc/testsuite/lib/timeout.exp
! 0e7b7f2c3e8c96da120ee9c607460c41  gcc/testsuite/lib/torture-options.exp
! 48fe3410e7e1311f2dfea03de2baef2f  gcc/testsuite/lib/tsan-dg.exp
! 12f68d78e596a05f4e45fdb40fa66353  gcc/testsuite/lib/ubsan-dg.exp
! d3b54b42414795d1bf2d14bec52ab324  gcc/testsuite/lib/wrapper.exp
  55160ccf08a9b1444b32deb900dac569  gcc/testsuite/obj-c++.dg/Wimplicit-fallthrough-1.mm
  84caaa988ddff2a3ef9a3c9c9bfe6fbf  gcc/testsuite/obj-c++.dg/at-class-1.mm
! 8b368f10238e145ad9668d4ad89576c4  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
  20e89698b24eeafa990cb80d6777719f  gcc/testsuite/obj-c++.dg/attributes/class-attribute-1.mm
*************** ecc894e836dbc3bef578f67919f5455a  gcc/te
*** 56997,57007 ****
  68bcba6df58945a6a350cb84c428c23e  gcc/testsuite/obj-c++.dg/bad-forward-decl.mm
  11f5d0b194fe59806fef2650cc53b3e9  gcc/testsuite/obj-c++.dg/bad-receiver-type.mm
  7de56313f5a271649dd6fb775354dce8  gcc/testsuite/obj-c++.dg/basic.mm
! f105054c4def913067d5743ddfb44463  gcc/testsuite/obj-c++.dg/bitfield-1.mm
  6e457b5b15d0d7c7d8d56e298302d945  gcc/testsuite/obj-c++.dg/bitfield-2.mm
  65eb816e2a117c6a91f4e21c67c3d3ce  gcc/testsuite/obj-c++.dg/bitfield-3.mm
! b65b1dce4c672b6d4432fef2832340eb  gcc/testsuite/obj-c++.dg/bitfield-4.mm
! d9f96f9f3306018ad08cef55bc5349f7  gcc/testsuite/obj-c++.dg/bitfield-5.mm
  d4bd3446d638246d3ff8c9a942389090  gcc/testsuite/obj-c++.dg/class-extension-1.mm
  307b13378572a31adb9ae2ae97c104b6  gcc/testsuite/obj-c++.dg/class-extension-2.mm
  959a8bf5ce99cb1c213b1f6d5f460925  gcc/testsuite/obj-c++.dg/class-extension-3.mm
--- 60910,60920 ----
  68bcba6df58945a6a350cb84c428c23e  gcc/testsuite/obj-c++.dg/bad-forward-decl.mm
  11f5d0b194fe59806fef2650cc53b3e9  gcc/testsuite/obj-c++.dg/bad-receiver-type.mm
  7de56313f5a271649dd6fb775354dce8  gcc/testsuite/obj-c++.dg/basic.mm
! 69986776c899cdb031e09af4082c9d99  gcc/testsuite/obj-c++.dg/bitfield-1.mm
  6e457b5b15d0d7c7d8d56e298302d945  gcc/testsuite/obj-c++.dg/bitfield-2.mm
  65eb816e2a117c6a91f4e21c67c3d3ce  gcc/testsuite/obj-c++.dg/bitfield-3.mm
! 05fa3322109bc30efaf8f6f527875507  gcc/testsuite/obj-c++.dg/bitfield-4.mm
! 559811f2ad6c1eb3e081da1fce4f9fe1  gcc/testsuite/obj-c++.dg/bitfield-5.mm
  d4bd3446d638246d3ff8c9a942389090  gcc/testsuite/obj-c++.dg/class-extension-1.mm
  307b13378572a31adb9ae2ae97c104b6  gcc/testsuite/obj-c++.dg/class-extension-2.mm
  959a8bf5ce99cb1c213b1f6d5f460925  gcc/testsuite/obj-c++.dg/class-extension-3.mm
*************** e6c2549d74aa54ce001fb39b8bd77572  gcc/te
*** 57018,57024 ****
  f2fc36166a21e21a4a4bc94e5da78028  gcc/testsuite/obj-c++.dg/comp-types-5.mm
  894aeb71c71db100059dd6acfd69f3cc  gcc/testsuite/obj-c++.dg/comp-types-6.mm
  ac0b35dcfcf72480c040349b2b8a874b  gcc/testsuite/obj-c++.dg/comp-types-7.mm
! 9ce88bec8d5f2bfce2db6bd95858e9ee  gcc/testsuite/obj-c++.dg/comp-types-8.mm
  35ac1f0068533d0098d25eae3c59d4b4  gcc/testsuite/obj-c++.dg/comp-types-9.mm
  f6a135d669303e10360f4a9e17664aa7  gcc/testsuite/obj-c++.dg/cxx-class-1.mm
  7a5a474af4c3ae26683ee29295314d7b  gcc/testsuite/obj-c++.dg/cxx-ivars-1.mm
--- 60931,60937 ----
  f2fc36166a21e21a4a4bc94e5da78028  gcc/testsuite/obj-c++.dg/comp-types-5.mm
  894aeb71c71db100059dd6acfd69f3cc  gcc/testsuite/obj-c++.dg/comp-types-6.mm
  ac0b35dcfcf72480c040349b2b8a874b  gcc/testsuite/obj-c++.dg/comp-types-7.mm
! 93a9e944505470365fc5fd7f4696bb30  gcc/testsuite/obj-c++.dg/comp-types-8.mm
  35ac1f0068533d0098d25eae3c59d4b4  gcc/testsuite/obj-c++.dg/comp-types-9.mm
  f6a135d669303e10360f4a9e17664aa7  gcc/testsuite/obj-c++.dg/cxx-class-1.mm
  7a5a474af4c3ae26683ee29295314d7b  gcc/testsuite/obj-c++.dg/cxx-ivars-1.mm
*************** cca9a4ce8eba1acccfd6ad6cb92b40e7  gcc/te
*** 57029,57038 ****
  4d63d224c8c642188a58882a0609e394  gcc/testsuite/obj-c++.dg/defs.mm
  e40d4b7e1e14ee92eea55e290a15be06  gcc/testsuite/obj-c++.dg/demangle-1.mm
  a8b37269f50a182ecbfdb84e3054c9df  gcc/testsuite/obj-c++.dg/demangle-2.mm
! 0771abdaa5bf2e6ed3817aa86045da36  gcc/testsuite/obj-c++.dg/demangle-3.mm
! 797cc41cd150fe21244d6a82fb101d34  gcc/testsuite/obj-c++.dg/dg.exp
  4491984172a7df82c5cf29ec107cd3d4  gcc/testsuite/obj-c++.dg/duplicate-class-1.mm
! ed3fa31bab465eae06e4ef6aeedbed03  gcc/testsuite/obj-c++.dg/dwarf-2.mm
  ff09985655f304be699aaf3b8ac7d0c6  gcc/testsuite/obj-c++.dg/empty-private-1.mm
  ae6cf165075aa5d7db18a98e7893869a  gcc/testsuite/obj-c++.dg/encode-1-next.mm
  340171255cd130d10be8abd7b0b319e0  gcc/testsuite/obj-c++.dg/encode-1.mm
--- 60942,60951 ----
  4d63d224c8c642188a58882a0609e394  gcc/testsuite/obj-c++.dg/defs.mm
  e40d4b7e1e14ee92eea55e290a15be06  gcc/testsuite/obj-c++.dg/demangle-1.mm
  a8b37269f50a182ecbfdb84e3054c9df  gcc/testsuite/obj-c++.dg/demangle-2.mm
! c3631f0b5e6d552bec75c75cf5cbe0dd  gcc/testsuite/obj-c++.dg/demangle-3.mm
! e7fe0d2bea7d6f75f21213b44fe1d417  gcc/testsuite/obj-c++.dg/dg.exp
  4491984172a7df82c5cf29ec107cd3d4  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
  ae6cf165075aa5d7db18a98e7893869a  gcc/testsuite/obj-c++.dg/encode-1-next.mm
  340171255cd130d10be8abd7b0b319e0  gcc/testsuite/obj-c++.dg/encode-1.mm
*************** e5b9f9a44ce01382be2feb246ccb5ad4  gcc/te
*** 57050,57059 ****
  3f2a93d293bef7fad64048537a3de594  gcc/testsuite/obj-c++.dg/except-1.mm
  873359db94a30e2e7b83394a75ec386f  gcc/testsuite/obj-c++.dg/exceptions-1.mm
  75c69779710528ad6eb5c5a4e15d704d  gcc/testsuite/obj-c++.dg/exceptions-2.mm
! 2c4344e09397f6e56de6870106354dbe  gcc/testsuite/obj-c++.dg/exceptions-3.mm
  e5ccb6958988fd277f24e299b281c626  gcc/testsuite/obj-c++.dg/exceptions-4.mm
! 19acf68fb7b38ee1d42a853fabc88f0d  gcc/testsuite/obj-c++.dg/exceptions-5.mm
! 8616828466a22d683c2426ccc81d4762  gcc/testsuite/obj-c++.dg/exceptions-6.mm
  a6aad066984a23da19fb3353abeb2c33  gcc/testsuite/obj-c++.dg/exceptions-7.mm
  f4087f18e0094d7a210e142256c41875  gcc/testsuite/obj-c++.dg/extern-c-1.mm
  e7fb320f22d720d1153b22a297d68332  gcc/testsuite/obj-c++.dg/extra-semi.mm
--- 60963,60972 ----
  3f2a93d293bef7fad64048537a3de594  gcc/testsuite/obj-c++.dg/except-1.mm
  873359db94a30e2e7b83394a75ec386f  gcc/testsuite/obj-c++.dg/exceptions-1.mm
  75c69779710528ad6eb5c5a4e15d704d  gcc/testsuite/obj-c++.dg/exceptions-2.mm
! fe9220a8a6e1ea22431a3bd8f6b31a20  gcc/testsuite/obj-c++.dg/exceptions-3.mm
  e5ccb6958988fd277f24e299b281c626  gcc/testsuite/obj-c++.dg/exceptions-4.mm
! 800857cec62e86423166393999d7974b  gcc/testsuite/obj-c++.dg/exceptions-5.mm
! 0110458e18c092060cdecc03e9be4252  gcc/testsuite/obj-c++.dg/exceptions-6.mm
  a6aad066984a23da19fb3353abeb2c33  gcc/testsuite/obj-c++.dg/exceptions-7.mm
  f4087f18e0094d7a210e142256c41875  gcc/testsuite/obj-c++.dg/extern-c-1.mm
  e7fb320f22d720d1153b22a297d68332  gcc/testsuite/obj-c++.dg/extra-semi.mm
*************** e7fb320f22d720d1153b22a297d68332  gcc/te
*** 57063,57069 ****
  e8affe34d309c5c4b9875f4964f32791  gcc/testsuite/obj-c++.dg/fobjc-exceptions-3.mm
  c933197e638db636698c9e6bd22bfaeb  gcc/testsuite/obj-c++.dg/fobjc-std-1.mm
  736ae9c9ef80f64429d956ad3a423bf0  gcc/testsuite/obj-c++.dg/fsf-nsstring-format-1.mm
! 67d1b3f75e4dc1bec4b6f7fd26167a09  gcc/testsuite/obj-c++.dg/fsf-package-0.m
  b649c51cad75f98f3a4d6f89f846a6a4  gcc/testsuite/obj-c++.dg/gnu-api-2-class-meta.mm
  6d739792ccebcd894ebd54eae08cf851  gcc/testsuite/obj-c++.dg/gnu-api-2-class.mm
  d17a736222e245bfc6ed9bb3710fa5a8  gcc/testsuite/obj-c++.dg/gnu-api-2-ivar.mm
--- 60976,60982 ----
  e8affe34d309c5c4b9875f4964f32791  gcc/testsuite/obj-c++.dg/fobjc-exceptions-3.mm
  c933197e638db636698c9e6bd22bfaeb  gcc/testsuite/obj-c++.dg/fobjc-std-1.mm
  736ae9c9ef80f64429d956ad3a423bf0  gcc/testsuite/obj-c++.dg/fsf-nsstring-format-1.mm
! a333adf32bc5f8f653cefef562f5ce65  gcc/testsuite/obj-c++.dg/fsf-package-0.m
  b649c51cad75f98f3a4d6f89f846a6a4  gcc/testsuite/obj-c++.dg/gnu-api-2-class-meta.mm
  6d739792ccebcd894ebd54eae08cf851  gcc/testsuite/obj-c++.dg/gnu-api-2-class.mm
  d17a736222e245bfc6ed9bb3710fa5a8  gcc/testsuite/obj-c++.dg/gnu-api-2-ivar.mm
*************** b93884370065d3c94f7fc005e43f7756  gcc/te
*** 57079,57085 ****
  003f433c2c1cd9b8db81e61ca94d311b  gcc/testsuite/obj-c++.dg/gnu-runtime-2.mm
  000a9198807c2e4ce1ba284e1a6e79ed  gcc/testsuite/obj-c++.dg/gnu-runtime-3.mm
  a19c2dad4a197a57d5e1bd9cd0135705  gcc/testsuite/obj-c++.dg/invalid-method-2.mm
! 310ccda91f187af52d2e650cf1e5222f  gcc/testsuite/obj-c++.dg/invalid-type-1.mm
  f8e8a6e463c96943e1055a954a109c82  gcc/testsuite/obj-c++.dg/isa-field-1.mm
  de4ec57b2d55fc5567fd5f9b20445ea0  gcc/testsuite/obj-c++.dg/ivar-invalid-type-1.mm
  e9e1c689bbfe17a7c0ca833caf159485  gcc/testsuite/obj-c++.dg/ivar-list-semi.mm
--- 60992,60998 ----
  003f433c2c1cd9b8db81e61ca94d311b  gcc/testsuite/obj-c++.dg/gnu-runtime-2.mm
  000a9198807c2e4ce1ba284e1a6e79ed  gcc/testsuite/obj-c++.dg/gnu-runtime-3.mm
  a19c2dad4a197a57d5e1bd9cd0135705  gcc/testsuite/obj-c++.dg/invalid-method-2.mm
! 9c81b01209a656cc36ac861574867c96  gcc/testsuite/obj-c++.dg/invalid-type-1.mm
  f8e8a6e463c96943e1055a954a109c82  gcc/testsuite/obj-c++.dg/isa-field-1.mm
  de4ec57b2d55fc5567fd5f9b20445ea0  gcc/testsuite/obj-c++.dg/ivar-invalid-type-1.mm
  e9e1c689bbfe17a7c0ca833caf159485  gcc/testsuite/obj-c++.dg/ivar-list-semi.mm
*************** e9e1c689bbfe17a7c0ca833caf159485  gcc/te
*** 57092,57107 ****
  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
! f4131a099dd956b5e267d100c5069226  gcc/testsuite/obj-c++.dg/lto/lto.exp
! b14f107c2307ad622915410354bef39d  gcc/testsuite/obj-c++.dg/lto/trivial-1_0.mm
! e5590a2a3f8b22c8f340429d19038365  gcc/testsuite/obj-c++.dg/method-1.mm
  19f8317903ba8bee4bf9fa945f98478d  gcc/testsuite/obj-c++.dg/method-10.mm
  6eecfde212363a6364af0934a93626ab  gcc/testsuite/obj-c++.dg/method-11.mm
! 57b48131572609b8d98689442c57ce0b  gcc/testsuite/obj-c++.dg/method-12.mm
! 6ca3817076f143ec57e6a6743595198c  gcc/testsuite/obj-c++.dg/method-13.mm
  172164daa5b2292983d23e0e5d5a94eb  gcc/testsuite/obj-c++.dg/method-14.mm
! d2a8f4c408689b2dcc7fe986e13a12d9  gcc/testsuite/obj-c++.dg/method-15.mm
! f067a6b4da2c17a33faef7fbf6a9ce5f  gcc/testsuite/obj-c++.dg/method-16.mm
  c6a3118297883f488d8e82989fa454c4  gcc/testsuite/obj-c++.dg/method-17.mm
  956a4f445f1949a644580e9b460afe4b  gcc/testsuite/obj-c++.dg/method-18.mm
  85e2e9dbc23dfbfec1bfec3d3030c7f8  gcc/testsuite/obj-c++.dg/method-19.mm
--- 61005,61020 ----
  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
! 9e0dbf6911e264ccbc03ba52d61b1c97  gcc/testsuite/obj-c++.dg/lto/lto.exp
! a4fafaaca8b4ffbde57040a179508896  gcc/testsuite/obj-c++.dg/lto/trivial-1_0.mm
! 4d5d8b6477be6dbfb8f04b2e9bb4e034  gcc/testsuite/obj-c++.dg/method-1.mm
  19f8317903ba8bee4bf9fa945f98478d  gcc/testsuite/obj-c++.dg/method-10.mm
  6eecfde212363a6364af0934a93626ab  gcc/testsuite/obj-c++.dg/method-11.mm
! 61b08b5a55109a7531aab01e05cb0892  gcc/testsuite/obj-c++.dg/method-12.mm
! 2ab9aca4333e9e1ffb6580c6af5e92d0  gcc/testsuite/obj-c++.dg/method-13.mm
  172164daa5b2292983d23e0e5d5a94eb  gcc/testsuite/obj-c++.dg/method-14.mm
! ce4b0bdda2827c892e1c96c7b66d459e  gcc/testsuite/obj-c++.dg/method-15.mm
! d5144d082c3ad26c3de112edcb4faed9  gcc/testsuite/obj-c++.dg/method-16.mm
  c6a3118297883f488d8e82989fa454c4  gcc/testsuite/obj-c++.dg/method-17.mm
  956a4f445f1949a644580e9b460afe4b  gcc/testsuite/obj-c++.dg/method-18.mm
  85e2e9dbc23dfbfec1bfec3d3030c7f8  gcc/testsuite/obj-c++.dg/method-19.mm
*************** bb8ccf448c201adbf05356ac551899fb  gcc/te
*** 57133,57144 ****
  e415aeb15f15e2eedb7356be8f6a959e  gcc/testsuite/obj-c++.dg/objc-gc-3.mm
  bd3b42583db47ebcc7fac037f85f00ed  gcc/testsuite/obj-c++.dg/overload-1.mm
  1cfb07f2eb35f604a99dcbe63a567416  gcc/testsuite/obj-c++.dg/plugin/diagnostic-test-expressions-1.mm
! 3745702e02a6aac99619afba6111b2d7  gcc/testsuite/obj-c++.dg/plugin/plugin.exp
  8aa79ecb56c90fe51464150a135fe71f  gcc/testsuite/obj-c++.dg/pr23709.mm
  8480d22a4388c485c49d1c703c34f7f7  gcc/testsuite/obj-c++.dg/pr24393.mm
  2e9567e68880e80a9fa203bba6e86d7f  gcc/testsuite/obj-c++.dg/pr28049.mm
  501a08776d7e5d9d5ab50b8cc394144d  gcc/testsuite/obj-c++.dg/pr45735.mm
! 4cd3108e87a1585670bb243f0ba93f9d  gcc/testsuite/obj-c++.dg/pr48187.mm
  c1d24514e97259a51ce837ee3271bc0b  gcc/testsuite/obj-c++.dg/pragma-1.mm
  05fd50ce3311545c4dfe190b89320967  gcc/testsuite/obj-c++.dg/pragma-2.mm
  405eabc39e96165095c8f1cb77dd47d4  gcc/testsuite/obj-c++.dg/private-1.mm
--- 61046,61057 ----
  e415aeb15f15e2eedb7356be8f6a959e  gcc/testsuite/obj-c++.dg/objc-gc-3.mm
  bd3b42583db47ebcc7fac037f85f00ed  gcc/testsuite/obj-c++.dg/overload-1.mm
  1cfb07f2eb35f604a99dcbe63a567416  gcc/testsuite/obj-c++.dg/plugin/diagnostic-test-expressions-1.mm
! 37471f00c435e2be34b4817d8e9407fb  gcc/testsuite/obj-c++.dg/plugin/plugin.exp
  8aa79ecb56c90fe51464150a135fe71f  gcc/testsuite/obj-c++.dg/pr23709.mm
  8480d22a4388c485c49d1c703c34f7f7  gcc/testsuite/obj-c++.dg/pr24393.mm
  2e9567e68880e80a9fa203bba6e86d7f  gcc/testsuite/obj-c++.dg/pr28049.mm
  501a08776d7e5d9d5ab50b8cc394144d  gcc/testsuite/obj-c++.dg/pr45735.mm
! 9092ab472c37bc7499376730f631427a  gcc/testsuite/obj-c++.dg/pr48187.mm
  c1d24514e97259a51ce837ee3271bc0b  gcc/testsuite/obj-c++.dg/pragma-1.mm
  05fd50ce3311545c4dfe190b89320967  gcc/testsuite/obj-c++.dg/pragma-2.mm
  405eabc39e96165095c8f1cb77dd47d4  gcc/testsuite/obj-c++.dg/private-1.mm
*************** f0ecb5df67af707e7db478658cc84b6d  gcc/te
*** 57152,57158 ****
  1780bbfd604efee63a723746273fce9e  gcc/testsuite/obj-c++.dg/property/at-property-15.mm
  9f74a3130445eff5bfbd27f659572a50  gcc/testsuite/obj-c++.dg/property/at-property-16.mm
  554dc469f8d52126cf0dd4f2008316ba  gcc/testsuite/obj-c++.dg/property/at-property-17.mm
! 379b5b9fdb5c3a84949cfd95a0e03dd7  gcc/testsuite/obj-c++.dg/property/at-property-18.mm
  90db711d07cb40e0e86da5a538b8d6af  gcc/testsuite/obj-c++.dg/property/at-property-19.mm
  dfe27c16534b8e96ff1f17bf51c76ee9  gcc/testsuite/obj-c++.dg/property/at-property-2.mm
  f47a8d9816afdbe667d379046315c97d  gcc/testsuite/obj-c++.dg/property/at-property-20.mm
--- 61065,61071 ----
  1780bbfd604efee63a723746273fce9e  gcc/testsuite/obj-c++.dg/property/at-property-15.mm
  9f74a3130445eff5bfbd27f659572a50  gcc/testsuite/obj-c++.dg/property/at-property-16.mm
  554dc469f8d52126cf0dd4f2008316ba  gcc/testsuite/obj-c++.dg/property/at-property-17.mm
! efd9e4653bed75a1c95660de1113ba50  gcc/testsuite/obj-c++.dg/property/at-property-18.mm
  90db711d07cb40e0e86da5a538b8d6af  gcc/testsuite/obj-c++.dg/property/at-property-19.mm
  dfe27c16534b8e96ff1f17bf51c76ee9  gcc/testsuite/obj-c++.dg/property/at-property-2.mm
  f47a8d9816afdbe667d379046315c97d  gcc/testsuite/obj-c++.dg/property/at-property-20.mm
*************** a3781faeea4156e43d225c4ae8c8d42a  gcc/te
*** 57160,57173 ****
  71de5c21ef5a5f5dfb048a298924ae3b  gcc/testsuite/obj-c++.dg/property/at-property-22.mm
  7b34d829b28c7a0fe641b9658091708c  gcc/testsuite/obj-c++.dg/property/at-property-23.mm
  cffbe1f056bdf203ff8701c9c496a6d2  gcc/testsuite/obj-c++.dg/property/at-property-24.mm
! e92188b066d1f51c91572dde7f065cef  gcc/testsuite/obj-c++.dg/property/at-property-25.mm
  b27fb2202f603a2efecfe3a3745cb8d6  gcc/testsuite/obj-c++.dg/property/at-property-26.mm
  f9e1d849f4fc728633fda1eeec779521  gcc/testsuite/obj-c++.dg/property/at-property-27.mm
  961c05748c8a277af44692e8c308b59e  gcc/testsuite/obj-c++.dg/property/at-property-28.mm
  05225c32a0685ae8029619d8c0addcd8  gcc/testsuite/obj-c++.dg/property/at-property-29.mm
  065b66d1324a373459e1ee6098eb02e3  gcc/testsuite/obj-c++.dg/property/at-property-3.mm
  99dc26b93be199dc4082ca902a30ca47  gcc/testsuite/obj-c++.dg/property/at-property-4.mm
! b217017505d1906dea58502bac2faa74  gcc/testsuite/obj-c++.dg/property/at-property-5.mm
  28f341c0311a3d54b55dc3b447465eca  gcc/testsuite/obj-c++.dg/property/at-property-6.mm
  93ce746f95da16b7220fe9dcf51da961  gcc/testsuite/obj-c++.dg/property/at-property-7.mm
  5ea5867c5648c06348af32f3bcc2bd94  gcc/testsuite/obj-c++.dg/property/at-property-8.mm
--- 61073,61086 ----
  71de5c21ef5a5f5dfb048a298924ae3b  gcc/testsuite/obj-c++.dg/property/at-property-22.mm
  7b34d829b28c7a0fe641b9658091708c  gcc/testsuite/obj-c++.dg/property/at-property-23.mm
  cffbe1f056bdf203ff8701c9c496a6d2  gcc/testsuite/obj-c++.dg/property/at-property-24.mm
! 896d5c0a877aaf8f7086fd6e319614b9  gcc/testsuite/obj-c++.dg/property/at-property-25.mm
  b27fb2202f603a2efecfe3a3745cb8d6  gcc/testsuite/obj-c++.dg/property/at-property-26.mm
  f9e1d849f4fc728633fda1eeec779521  gcc/testsuite/obj-c++.dg/property/at-property-27.mm
  961c05748c8a277af44692e8c308b59e  gcc/testsuite/obj-c++.dg/property/at-property-28.mm
  05225c32a0685ae8029619d8c0addcd8  gcc/testsuite/obj-c++.dg/property/at-property-29.mm
  065b66d1324a373459e1ee6098eb02e3  gcc/testsuite/obj-c++.dg/property/at-property-3.mm
  99dc26b93be199dc4082ca902a30ca47  gcc/testsuite/obj-c++.dg/property/at-property-4.mm
! 3a4be2c34a7d7f90c7bb490085bd07fd  gcc/testsuite/obj-c++.dg/property/at-property-5.mm
  28f341c0311a3d54b55dc3b447465eca  gcc/testsuite/obj-c++.dg/property/at-property-6.mm
  93ce746f95da16b7220fe9dcf51da961  gcc/testsuite/obj-c++.dg/property/at-property-7.mm
  5ea5867c5648c06348af32f3bcc2bd94  gcc/testsuite/obj-c++.dg/property/at-property-8.mm
*************** e469331a9543b20d3db3dbb8cad3ea40  gcc/te
*** 57200,57206 ****
  7520702fc48e84ce809a08f676919358  gcc/testsuite/obj-c++.dg/property/dotsyntax-9.mm
  6f1aef0eaa693eade4382edab17f6c83  gcc/testsuite/obj-c++.dg/property/dotsyntax-deprecated-1.mm
  a1b5720ed96300ee5d6343e86dec31fd  gcc/testsuite/obj-c++.dg/property/dynamic-1.mm
! 82ab39ae9987cffaa32feb4f728bb869  gcc/testsuite/obj-c++.dg/property/dynamic-2.mm
  7fc8014203c4f5c658701b3aa2d81caa  gcc/testsuite/obj-c++.dg/property/dynamic-3.mm
  f3257df0423e2afdb9ace613f46ea170  gcc/testsuite/obj-c++.dg/property/dynamic-4.mm
  94e3f44009eac8392713455e1c74a647  gcc/testsuite/obj-c++.dg/property/dynamic-5.mm
--- 61113,61119 ----
  7520702fc48e84ce809a08f676919358  gcc/testsuite/obj-c++.dg/property/dotsyntax-9.mm
  6f1aef0eaa693eade4382edab17f6c83  gcc/testsuite/obj-c++.dg/property/dotsyntax-deprecated-1.mm
  a1b5720ed96300ee5d6343e86dec31fd  gcc/testsuite/obj-c++.dg/property/dynamic-1.mm
! e103c5236bee355ba538bab7cc993036  gcc/testsuite/obj-c++.dg/property/dynamic-2.mm
  7fc8014203c4f5c658701b3aa2d81caa  gcc/testsuite/obj-c++.dg/property/dynamic-3.mm
  f3257df0423e2afdb9ace613f46ea170  gcc/testsuite/obj-c++.dg/property/dynamic-4.mm
  94e3f44009eac8392713455e1c74a647  gcc/testsuite/obj-c++.dg/property/dynamic-5.mm
*************** ace736cd9b88d92508e7dc206c83a89f  gcc/te
*** 57212,57223 ****
  a9ed81f0b2b7a198a2c165663a00789d  gcc/testsuite/obj-c++.dg/property/property-encoding-1.mm
  5b85d5006f591e2a04cd983b74c614c4  gcc/testsuite/obj-c++.dg/property/property-neg-1.mm
  f7c80492fabd33b2030264938643704e  gcc/testsuite/obj-c++.dg/property/property-neg-2.mm
! 79e264df694cc1adcd3044c29fdabe5a  gcc/testsuite/obj-c++.dg/property/property-neg-3.mm
  7882bafba8b7796120cc23af5d441202  gcc/testsuite/obj-c++.dg/property/property-neg-4.mm
  46896a53d202d39ebcdefc0f78554362  gcc/testsuite/obj-c++.dg/property/property-neg-5.mm
  2aabf1a0c895ae7fab2963b19790d1d1  gcc/testsuite/obj-c++.dg/property/property-neg-6.mm
  ef7216f0d4dd0d6b22598260f7e0ee71  gcc/testsuite/obj-c++.dg/property/property-neg-7.mm
! 2674ec257c97ffc3dd46d9181657decc  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
--- 61125,61136 ----
  a9ed81f0b2b7a198a2c165663a00789d  gcc/testsuite/obj-c++.dg/property/property-encoding-1.mm
  5b85d5006f591e2a04cd983b74c614c4  gcc/testsuite/obj-c++.dg/property/property-neg-1.mm
  f7c80492fabd33b2030264938643704e  gcc/testsuite/obj-c++.dg/property/property-neg-2.mm
! a8c4b8171533defe44e443926dc705ce  gcc/testsuite/obj-c++.dg/property/property-neg-3.mm
  7882bafba8b7796120cc23af5d441202  gcc/testsuite/obj-c++.dg/property/property-neg-4.mm
  46896a53d202d39ebcdefc0f78554362  gcc/testsuite/obj-c++.dg/property/property-neg-5.mm
  2aabf1a0c895ae7fab2963b19790d1d1  gcc/testsuite/obj-c++.dg/property/property-neg-6.mm
  ef7216f0d4dd0d6b22598260f7e0ee71  gcc/testsuite/obj-c++.dg/property/property-neg-7.mm
! 18515a832838e08477b49b867f98591f  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
*************** fd29bc4e26ebfbde2219d16bcd57ff44  gcc/te
*** 57241,57248 ****
  4cd57b67eb48bda4d17d7be6cbbf3651  gcc/testsuite/obj-c++.dg/proto-qual-1.mm
  cf4aa34add213bab910de4918a4bb01d  gcc/testsuite/obj-c++.dg/protocol-forward-1.mm
  30d24d440a6063d356f6a53af5141ba5  gcc/testsuite/obj-c++.dg/protocol-forward-2.mm
! 947eba4128b4206c988686a723a67c93  gcc/testsuite/obj-c++.dg/protocol-inheritance-1.mm
! c195a9190c5975a66c572dbe3742474d  gcc/testsuite/obj-c++.dg/protocol-inheritance-2.mm
  5e94c540e8c80f67f410219fbbb8290c  gcc/testsuite/obj-c++.dg/protocol-optional-1.mm
  92402d5d0ed140a870d7d3438040c1fa  gcc/testsuite/obj-c++.dg/protocol-qualifier-1.mm
  3acfbf9e5283f39582515ae6ee0f8bcc  gcc/testsuite/obj-c++.dg/protocol-qualifier-2.mm
--- 61154,61161 ----
  4cd57b67eb48bda4d17d7be6cbbf3651  gcc/testsuite/obj-c++.dg/proto-qual-1.mm
  cf4aa34add213bab910de4918a4bb01d  gcc/testsuite/obj-c++.dg/protocol-forward-1.mm
  30d24d440a6063d356f6a53af5141ba5  gcc/testsuite/obj-c++.dg/protocol-forward-2.mm
! caaf3448e346d63b2c9d138c397e34ea  gcc/testsuite/obj-c++.dg/protocol-inheritance-1.mm
! 66598bd0d8651533ded6434b3ab3ad9c  gcc/testsuite/obj-c++.dg/protocol-inheritance-2.mm
  5e94c540e8c80f67f410219fbbb8290c  gcc/testsuite/obj-c++.dg/protocol-optional-1.mm
  92402d5d0ed140a870d7d3438040c1fa  gcc/testsuite/obj-c++.dg/protocol-qualifier-1.mm
  3acfbf9e5283f39582515ae6ee0f8bcc  gcc/testsuite/obj-c++.dg/protocol-qualifier-2.mm
*************** c2f326ebd57afc69cfee9d8f6b441323  gcc/te
*** 57265,57280 ****
  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
! 94fde91caef514d313cb940969a79838  gcc/testsuite/obj-c++.dg/strings/strings.exp
  581ec601f0a03f162804a727e94271f1  gcc/testsuite/obj-c++.dg/stubify-1.mm
  7158cf8b003c2491d8aaa20750064528  gcc/testsuite/obj-c++.dg/stubify-2.mm
! ce13a192bc01f6b2a54070a80cd8622d  gcc/testsuite/obj-c++.dg/super-class-1.mm
  348dead166b98af1745eea549652a4e0  gcc/testsuite/obj-c++.dg/super-class-2.mm
  5f7cf7eb1290cd0ac7cc810aca461fcb  gcc/testsuite/obj-c++.dg/super-dealloc-1.mm
  43c780cbecdb5565a2bda8b0795d5cf8  gcc/testsuite/obj-c++.dg/super-dealloc-2.mm
  6d77d7810e6a1711e9c3e10911fdf7f5  gcc/testsuite/obj-c++.dg/sync-2.mm
  c1db611d2e6bb0f9226c7b773e41bec6  gcc/testsuite/obj-c++.dg/sync-3.mm
! 748c7566fb8449a9c4cf464bde2a00c3  gcc/testsuite/obj-c++.dg/syntax-error-1.mm
  76c552ffde73821d35ce37029bf52fb7  gcc/testsuite/obj-c++.dg/syntax-error-10.mm
  fcc3247af976d648bb2eb1348d0828a8  gcc/testsuite/obj-c++.dg/syntax-error-2.mm
  6090398b844ba0e695f8af2946ade6c8  gcc/testsuite/obj-c++.dg/syntax-error-3.mm
--- 61178,61193 ----
  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
! 27d43539135f45463462f9f8179c085b  gcc/testsuite/obj-c++.dg/strings/strings.exp
  581ec601f0a03f162804a727e94271f1  gcc/testsuite/obj-c++.dg/stubify-1.mm
  7158cf8b003c2491d8aaa20750064528  gcc/testsuite/obj-c++.dg/stubify-2.mm
! 0827dd859e38ad893f65d76bf7a5b5e1  gcc/testsuite/obj-c++.dg/super-class-1.mm
  348dead166b98af1745eea549652a4e0  gcc/testsuite/obj-c++.dg/super-class-2.mm
  5f7cf7eb1290cd0ac7cc810aca461fcb  gcc/testsuite/obj-c++.dg/super-dealloc-1.mm
  43c780cbecdb5565a2bda8b0795d5cf8  gcc/testsuite/obj-c++.dg/super-dealloc-2.mm
  6d77d7810e6a1711e9c3e10911fdf7f5  gcc/testsuite/obj-c++.dg/sync-2.mm
  c1db611d2e6bb0f9226c7b773e41bec6  gcc/testsuite/obj-c++.dg/sync-3.mm
! 7539455b61449559a26b90acb57c727d  gcc/testsuite/obj-c++.dg/syntax-error-1.mm
  76c552ffde73821d35ce37029bf52fb7  gcc/testsuite/obj-c++.dg/syntax-error-10.mm
  fcc3247af976d648bb2eb1348d0828a8  gcc/testsuite/obj-c++.dg/syntax-error-2.mm
  6090398b844ba0e695f8af2946ade6c8  gcc/testsuite/obj-c++.dg/syntax-error-3.mm
*************** d778dd9dccd75f9ef8f93e35202dcdf3  gcc/te
*** 57301,57307 ****
  d267a74f4e663f295117a1a5c8b6f691  gcc/testsuite/obj-c++.dg/tls/init-1.mm
  ec6c7e65d57e2a70cb1a6852131a0f16  gcc/testsuite/obj-c++.dg/tls/init-2.mm
  05e5e60d7c796eda35a3fd315ecca3fc  gcc/testsuite/obj-c++.dg/tls/static-1.mm
! aa2a188b9c0f3f1d276b12c9f7e0c7c2  gcc/testsuite/obj-c++.dg/tls/static-1a.mm
  d951d115e8add5e2e78e8e2e56aebc7f  gcc/testsuite/obj-c++.dg/tls/tls.exp
  7212556766805451a098e554a8ab648e  gcc/testsuite/obj-c++.dg/tls/trivial.m
  1131c9137e46b5311c2d803288f2e4d0  gcc/testsuite/obj-c++.dg/too-many-args.mm
--- 61214,61220 ----
  d267a74f4e663f295117a1a5c8b6f691  gcc/testsuite/obj-c++.dg/tls/init-1.mm
  ec6c7e65d57e2a70cb1a6852131a0f16  gcc/testsuite/obj-c++.dg/tls/init-2.mm
  05e5e60d7c796eda35a3fd315ecca3fc  gcc/testsuite/obj-c++.dg/tls/static-1.mm
! 5c41d5d8d71bbe4a670eed7158496942  gcc/testsuite/obj-c++.dg/tls/static-1a.mm
  d951d115e8add5e2e78e8e2e56aebc7f  gcc/testsuite/obj-c++.dg/tls/tls.exp
  7212556766805451a098e554a8ab648e  gcc/testsuite/obj-c++.dg/tls/trivial.m
  1131c9137e46b5311c2d803288f2e4d0  gcc/testsuite/obj-c++.dg/too-many-args.mm
*************** bc7815bb9a08dccb57fe4e22b74eb729  gcc/te
*** 57317,57323 ****
  69c47926ef31db0bb79c5cd3cea4fa0b  gcc/testsuite/obj-c++.dg/torture/strings/const-str-8.mm
  019ec55674cd5d821fa8a7357a379cfc  gcc/testsuite/obj-c++.dg/torture/strings/const-str-9.mm
  38bba22e495d1876db60c1ae29146fbe  gcc/testsuite/obj-c++.dg/torture/strings/string1.mm
! 2216d810b119e15f12b654334284f817  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
--- 61230,61236 ----
  69c47926ef31db0bb79c5cd3cea4fa0b  gcc/testsuite/obj-c++.dg/torture/strings/const-str-8.mm
  019ec55674cd5d821fa8a7357a379cfc  gcc/testsuite/obj-c++.dg/torture/strings/const-str-9.mm
  38bba22e495d1876db60c1ae29146fbe  gcc/testsuite/obj-c++.dg/torture/strings/string1.mm
! 8dd3aed68da5e5d82a5d8b4a4adc4f36  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
*************** f1f7032c657f1d2102a3760375786139  gcc/te
*** 57329,57335 ****
  49889360a17310a94a0d85c87ca03271  gcc/testsuite/obj-c++.dg/try-catch-10.mm
  65b30ce3fa7e707247f859f7235dcc28  gcc/testsuite/obj-c++.dg/try-catch-11.mm
  0547cf34f9cf4f3a578623b4ceb22a99  gcc/testsuite/obj-c++.dg/try-catch-12.mm
! a594dfeb4c4795ca2b4b60c69a953dbb  gcc/testsuite/obj-c++.dg/try-catch-13.mm
  6903c5d6d4064f5feedc5c257e151f84  gcc/testsuite/obj-c++.dg/try-catch-14.mm
  849d39ba112d67a138c180c56c5b988a  gcc/testsuite/obj-c++.dg/try-catch-15.mm
  749123fd933ccbf7d2de0ef981fa5ab2  gcc/testsuite/obj-c++.dg/try-catch-16.mm
--- 61242,61248 ----
  49889360a17310a94a0d85c87ca03271  gcc/testsuite/obj-c++.dg/try-catch-10.mm
  65b30ce3fa7e707247f859f7235dcc28  gcc/testsuite/obj-c++.dg/try-catch-11.mm
  0547cf34f9cf4f3a578623b4ceb22a99  gcc/testsuite/obj-c++.dg/try-catch-12.mm
! c4a6f12cba3fe479319845130b67dda9  gcc/testsuite/obj-c++.dg/try-catch-13.mm
  6903c5d6d4064f5feedc5c257e151f84  gcc/testsuite/obj-c++.dg/try-catch-14.mm
  849d39ba112d67a138c180c56c5b988a  gcc/testsuite/obj-c++.dg/try-catch-15.mm
  749123fd933ccbf7d2de0ef981fa5ab2  gcc/testsuite/obj-c++.dg/try-catch-16.mm
*************** cbd8c5394b3188c8a0b698fffb29e761  gcc/te
*** 57348,57354 ****
  677e021d0f4c6a2c24627bc9093ea7d6  gcc/testsuite/obj-c++.dg/warn6.mm
  cf1e5660ee1cd060f1bf1da012306d6b  gcc/testsuite/obj-c++.dg/warn7.mm
  1aca10b408347876905ccdeb2ec47665  gcc/testsuite/objc-obj-c++-shared/TestsuiteObject.h
! 76c24a679d6d0f7e05fe9008a647d03c  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
--- 61261,61267 ----
  677e021d0f4c6a2c24627bc9093ea7d6  gcc/testsuite/obj-c++.dg/warn6.mm
  cf1e5660ee1cd060f1bf1da012306d6b  gcc/testsuite/obj-c++.dg/warn7.mm
  1aca10b408347876905ccdeb2ec47665  gcc/testsuite/objc-obj-c++-shared/TestsuiteObject.h
! 08a1d6008be828f1fe9360c7a07244db  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
*** 57362,57368 ****
  3b8fd8c2ee22e0099d80e4fa89e2befc  gcc/testsuite/objc.dg/alias.m
  a1be9e5501b4997f5240469850890333  gcc/testsuite/objc.dg/anon-1.m
  84caaa988ddff2a3ef9a3c9c9bfe6fbf  gcc/testsuite/objc.dg/at-class-1.m
! 6c3c82ad777a66e9758ae4abc525b5e1  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
  e1730ed4ad91eefb842782a31a9e8c61  gcc/testsuite/objc.dg/attributes/class-attribute-1.m
--- 61275,61281 ----
  3b8fd8c2ee22e0099d80e4fa89e2befc  gcc/testsuite/objc.dg/alias.m
  a1be9e5501b4997f5240469850890333  gcc/testsuite/objc.dg/anon-1.m
  84caaa988ddff2a3ef9a3c9c9bfe6fbf  gcc/testsuite/objc.dg/at-class-1.m
! 167c91167ba11dc14c14f1921ac2da4a  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
  e1730ed4ad91eefb842782a31a9e8c61  gcc/testsuite/objc.dg/attributes/class-attribute-1.m
*************** f778be5aaf35346b17dc27a24d7ed563  gcc/te
*** 57391,57404 ****
  4f6182faf640ce5814af65c644a4c950  gcc/testsuite/objc.dg/bitfield-1.m
  6f2a2a20a94ae93a8fa18e08774e1a79  gcc/testsuite/objc.dg/bitfield-2.m
  dcedbf84975c836b8e3f62c8e74f2cfc  gcc/testsuite/objc.dg/bitfield-3.m
! 61e7138c23da7374ed5112117f28b6f2  gcc/testsuite/objc.dg/bitfield-4.m
  2db004c178fd7c1d4adb28427369f772  gcc/testsuite/objc.dg/bitfield-5.m
  6d7dd7461922f5f0f277c2ac8f9c63dd  gcc/testsuite/objc.dg/break-in-ifstmt.m
  a3a9688e7af865bc24450fcfecb1d3b7  gcc/testsuite/objc.dg/call-super-1.m
  4644abe7df4c179a8f55b46da76b3507  gcc/testsuite/objc.dg/call-super-2.m
  e912bbb4b576b8aba80ff033b0f7cc3b  gcc/testsuite/objc.dg/call-super-3.m
  0632e7aa9c84e23212520846e144f459  gcc/testsuite/objc.dg/category-1.m
! e14f8ce7c1cf0a9aa852e809639149ff  gcc/testsuite/objc.dg/class-1.m
  68d6b6f6dc97d7d21ab3b14f7fd55e08  gcc/testsuite/objc.dg/class-2.m
  d4bd3446d638246d3ff8c9a942389090  gcc/testsuite/objc.dg/class-extension-1.m
  307b13378572a31adb9ae2ae97c104b6  gcc/testsuite/objc.dg/class-extension-2.m
--- 61304,61317 ----
  4f6182faf640ce5814af65c644a4c950  gcc/testsuite/objc.dg/bitfield-1.m
  6f2a2a20a94ae93a8fa18e08774e1a79  gcc/testsuite/objc.dg/bitfield-2.m
  dcedbf84975c836b8e3f62c8e74f2cfc  gcc/testsuite/objc.dg/bitfield-3.m
! 8d7e675801f4f7d558e935a2888cf3ed  gcc/testsuite/objc.dg/bitfield-4.m
  2db004c178fd7c1d4adb28427369f772  gcc/testsuite/objc.dg/bitfield-5.m
  6d7dd7461922f5f0f277c2ac8f9c63dd  gcc/testsuite/objc.dg/break-in-ifstmt.m
  a3a9688e7af865bc24450fcfecb1d3b7  gcc/testsuite/objc.dg/call-super-1.m
  4644abe7df4c179a8f55b46da76b3507  gcc/testsuite/objc.dg/call-super-2.m
  e912bbb4b576b8aba80ff033b0f7cc3b  gcc/testsuite/objc.dg/call-super-3.m
  0632e7aa9c84e23212520846e144f459  gcc/testsuite/objc.dg/category-1.m
! 052e038811bc7c123d18f6b343b9558f  gcc/testsuite/objc.dg/class-1.m
  68d6b6f6dc97d7d21ab3b14f7fd55e08  gcc/testsuite/objc.dg/class-2.m
  d4bd3446d638246d3ff8c9a942389090  gcc/testsuite/objc.dg/class-extension-1.m
  307b13378572a31adb9ae2ae97c104b6  gcc/testsuite/objc.dg/class-extension-2.m
*************** fcbd6d34fab967afc68044cbc6bebd90  gcc/te
*** 57422,57431 ****
  3653e7170b213177620560b1489ee3c4  gcc/testsuite/objc.dg/demangle-1.m
  57aa6dd0c3563c95541cf9b6a750d73f  gcc/testsuite/objc.dg/desig-init-1.m
  35496e95171f548a40cf930fea45d49f  gcc/testsuite/objc.dg/desig-init-2.m
! b4076458eb421bbf652fd9dca9c46472  gcc/testsuite/objc.dg/dg.exp
  d3de59bd591c81e839bddbd2e1ef363e  gcc/testsuite/objc.dg/duplicate-class-1.m
! 6b43fed194ff0cc629fee40f6b658784  gcc/testsuite/objc.dg/dwarf-1.m
! 3b12778c53419955dc6a10080d7d292d  gcc/testsuite/objc.dg/dwarf-2.m
  53443690ca665ae75ecc6ea991307bfc  gcc/testsuite/objc.dg/encode-1.m
  d41bdbf8fd720cd2fb1c999d1e580ba5  gcc/testsuite/objc.dg/encode-10.m
  7c5ab8c1e32dc1b6afe8dba2152db2cd  gcc/testsuite/objc.dg/encode-11.m
--- 61335,61344 ----
  3653e7170b213177620560b1489ee3c4  gcc/testsuite/objc.dg/demangle-1.m
  57aa6dd0c3563c95541cf9b6a750d73f  gcc/testsuite/objc.dg/desig-init-1.m
  35496e95171f548a40cf930fea45d49f  gcc/testsuite/objc.dg/desig-init-2.m
! 1b20bbb026ecab91a0063688265412a2  gcc/testsuite/objc.dg/dg.exp
  d3de59bd591c81e839bddbd2e1ef363e  gcc/testsuite/objc.dg/duplicate-class-1.m
! e93baeeda9bc4b65e5eea748a076d816  gcc/testsuite/objc.dg/dwarf-1.m
! 0a836d2fda427c66107feaabe420bcf3  gcc/testsuite/objc.dg/dwarf-2.m
  53443690ca665ae75ecc6ea991307bfc  gcc/testsuite/objc.dg/encode-1.m
  d41bdbf8fd720cd2fb1c999d1e580ba5  gcc/testsuite/objc.dg/encode-10.m
  7c5ab8c1e32dc1b6afe8dba2152db2cd  gcc/testsuite/objc.dg/encode-11.m
*************** edbfca17600aa79dc7ea8e7975c68e88  gcc/te
*** 57448,57454 ****
  75f619b88d1c62b8c9fec813ea618918  gcc/testsuite/objc.dg/exceptions-3.m
  b76251dacf5f8db762e247df70ea34dc  gcc/testsuite/objc.dg/exceptions-4.m
  d7afd33ef5fa155b1dab29b9c7141fad  gcc/testsuite/objc.dg/exceptions-5.m
! 8616828466a22d683c2426ccc81d4762  gcc/testsuite/objc.dg/exceptions-6.m
  a6aad066984a23da19fb3353abeb2c33  gcc/testsuite/objc.dg/exceptions-7.m
  e7fb320f22d720d1153b22a297d68332  gcc/testsuite/objc.dg/extra-semi.m
  3441c66cc61f0166382e58663017495e  gcc/testsuite/objc.dg/fix-and-continue-1.m
--- 61361,61367 ----
  75f619b88d1c62b8c9fec813ea618918  gcc/testsuite/objc.dg/exceptions-3.m
  b76251dacf5f8db762e247df70ea34dc  gcc/testsuite/objc.dg/exceptions-4.m
  d7afd33ef5fa155b1dab29b9c7141fad  gcc/testsuite/objc.dg/exceptions-5.m
! 76449a3fff9481589a9dda65f4bfb416  gcc/testsuite/objc.dg/exceptions-6.m
  a6aad066984a23da19fb3353abeb2c33  gcc/testsuite/objc.dg/exceptions-7.m
  e7fb320f22d720d1153b22a297d68332  gcc/testsuite/objc.dg/extra-semi.m
  3441c66cc61f0166382e58663017495e  gcc/testsuite/objc.dg/fix-and-continue-1.m
*************** a253e38875bfdb13fd36a19e5f71a790  gcc/te
*** 57486,57492 ****
  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
! a43a653bb49c901f072ea817baeed1e5  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
  550e608729695dd01ea09faf26f72fd5  gcc/testsuite/objc.dg/gnu-encoding/struct-layout-encoding-1_generate.c
--- 61399,61405 ----
  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
! fc761c758b8b2b0af334ee32f614e568  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
  550e608729695dd01ea09faf26f72fd5  gcc/testsuite/objc.dg/gnu-encoding/struct-layout-encoding-1_generate.c
*************** f95bd6372c4bf77d12d57a628fc5bb39  gcc/te
*** 57522,57533 ****
  ef027ba6682833a14c376b2fcb64444e  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
! 9fdc35ce2e76ccb19f7cc7f42c27780e  gcc/testsuite/objc.dg/lto/lto.exp
! 3ad334d3129ad865a3afc16a2047a1df  gcc/testsuite/objc.dg/lto/trivial-1_0.m
  b1a80cc8c0c5d5294699c5aeb20817a4  gcc/testsuite/objc.dg/member-1.m
  654818ea7c74a49a5e08ba69f43984f7  gcc/testsuite/objc.dg/method-1.m
  3e263f2f9ed001e19a2a726838ec4a3e  gcc/testsuite/objc.dg/method-10.m
! 34cde8bd62d1a29495c806acf0e99014  gcc/testsuite/objc.dg/method-11.m
  956a4f445f1949a644580e9b460afe4b  gcc/testsuite/objc.dg/method-12.m
  410946e2a013b1d1c2773ad2139341bd  gcc/testsuite/objc.dg/method-13.m
  c0e3440d87797991072d80bcf576ef1f  gcc/testsuite/objc.dg/method-14.m
--- 61435,61446 ----
  ef027ba6682833a14c376b2fcb64444e  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
! 0972c2b6f542735da491fc495e246f65  gcc/testsuite/objc.dg/lto/lto.exp
! 6dcc154e9bcfbcb29a13b08669614f81  gcc/testsuite/objc.dg/lto/trivial-1_0.m
  b1a80cc8c0c5d5294699c5aeb20817a4  gcc/testsuite/objc.dg/member-1.m
  654818ea7c74a49a5e08ba69f43984f7  gcc/testsuite/objc.dg/method-1.m
  3e263f2f9ed001e19a2a726838ec4a3e  gcc/testsuite/objc.dg/method-10.m
! c0d034a8cd6ecd57c2549adf5fdcd989  gcc/testsuite/objc.dg/method-11.m
  956a4f445f1949a644580e9b460afe4b  gcc/testsuite/objc.dg/method-12.m
  410946e2a013b1d1c2773ad2139341bd  gcc/testsuite/objc.dg/method-13.m
  c0e3440d87797991072d80bcf576ef1f  gcc/testsuite/objc.dg/method-14.m
*************** a0a34ff20eea5cde5cc34cb5d51d4e4f  gcc/te
*** 57542,57551 ****
  9153d82237cc99af905bfcb58426980b  gcc/testsuite/objc.dg/method-3.m
  1857e378233cbdb0ef09315d0ee04fc9  gcc/testsuite/objc.dg/method-4.m
  8f76938d87b469c207104bcf02c7f39b  gcc/testsuite/objc.dg/method-5.m
! 67e16adf190ff1faf7208cf4868c0501  gcc/testsuite/objc.dg/method-6.m
! 18a0c6f46fc24f7061fe0cf1144950f3  gcc/testsuite/objc.dg/method-7.m
  172164daa5b2292983d23e0e5d5a94eb  gcc/testsuite/objc.dg/method-8.m
! a0e99708ed21408889158b47d71b2a1c  gcc/testsuite/objc.dg/method-9.m
  2a7616b9c1cd0cadb5e83a9bfa917a8e  gcc/testsuite/objc.dg/method-conflict-1.m
  a14143ecfb8bf86238a675e92e7ad689  gcc/testsuite/objc.dg/method-conflict-2.m
  377b3707579f2f48b9bc007c87897edc  gcc/testsuite/objc.dg/method-conflict-3.m
--- 61455,61464 ----
  9153d82237cc99af905bfcb58426980b  gcc/testsuite/objc.dg/method-3.m
  1857e378233cbdb0ef09315d0ee04fc9  gcc/testsuite/objc.dg/method-4.m
  8f76938d87b469c207104bcf02c7f39b  gcc/testsuite/objc.dg/method-5.m
! cc0bfd17577d76434dbf0c4690d50b55  gcc/testsuite/objc.dg/method-6.m
! 1d4f49a7f4d9f57ba0929cecbd7a7f28  gcc/testsuite/objc.dg/method-7.m
  172164daa5b2292983d23e0e5d5a94eb  gcc/testsuite/objc.dg/method-8.m
! b534c3ae3ab49fe3be9e7560d558fdf3  gcc/testsuite/objc.dg/method-9.m
  2a7616b9c1cd0cadb5e83a9bfa917a8e  gcc/testsuite/objc.dg/method-conflict-1.m
  a14143ecfb8bf86238a675e92e7ad689  gcc/testsuite/objc.dg/method-conflict-2.m
  377b3707579f2f48b9bc007c87897edc  gcc/testsuite/objc.dg/method-conflict-3.m
*************** a14143ecfb8bf86238a675e92e7ad689  gcc/te
*** 57553,57562 ****
  70af39b0f054bd5760af6520dd5858e2  gcc/testsuite/objc.dg/method-lookup-1.m
  69bacf80761635c545d87c91cc287531  gcc/testsuite/objc.dg/missing-proto-1.m
  56651a021e1eb7eb1a267d430fca0f45  gcc/testsuite/objc.dg/missing-proto-2.m
! 494f6eff8713b3cc956d568636ad0d81  gcc/testsuite/objc.dg/missing-proto-3.m
  b6a4bff612a08ec461838ac1b3bd23f1  gcc/testsuite/objc.dg/msg-in-protocol.m
  fcd05c4c0185fc0b317bc6ea1cbc3895  gcc/testsuite/objc.dg/naming-1.m
! 9ffc9358d33eac4fe2613bb45ab691fe  gcc/testsuite/objc.dg/naming-2.m
  ba9c85f123a269332f97289544f0c272  gcc/testsuite/objc.dg/naming-3.m
  3fea30ccc792eee96ee06ec1c7571dc2  gcc/testsuite/objc.dg/naming-4.m
  5fdb8f7d4099246a47b9b2adc8f98807  gcc/testsuite/objc.dg/naming-5.m
--- 61466,61475 ----
  70af39b0f054bd5760af6520dd5858e2  gcc/testsuite/objc.dg/method-lookup-1.m
  69bacf80761635c545d87c91cc287531  gcc/testsuite/objc.dg/missing-proto-1.m
  56651a021e1eb7eb1a267d430fca0f45  gcc/testsuite/objc.dg/missing-proto-2.m
! 8c8f4be40ef527420131ee0bfad12e64  gcc/testsuite/objc.dg/missing-proto-3.m
  b6a4bff612a08ec461838ac1b3bd23f1  gcc/testsuite/objc.dg/msg-in-protocol.m
  fcd05c4c0185fc0b317bc6ea1cbc3895  gcc/testsuite/objc.dg/naming-1.m
! 99a266629e7ff08c3c048e7d076b7d72  gcc/testsuite/objc.dg/naming-2.m
  ba9c85f123a269332f97289544f0c272  gcc/testsuite/objc.dg/naming-3.m
  3fea30ccc792eee96ee06ec1c7571dc2  gcc/testsuite/objc.dg/naming-4.m
  5fdb8f7d4099246a47b9b2adc8f98807  gcc/testsuite/objc.dg/naming-5.m
*************** e2b871afc37f1772b337d989244b97c6  gcc/te
*** 57575,57583 ****
  6eed5537eae24ed6634c3706c12f2114  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
! da0270834968989ae6154c0649b3689f  gcc/testsuite/objc.dg/pch/pch.exp
  5fef9f0c990ff2c42750c2300d343f56  gcc/testsuite/objc.dg/plugin/diagnostic-test-expressions-1.m
! 73b472b6c5084f7aab189497f4000b15  gcc/testsuite/objc.dg/plugin/plugin.exp
  4bde0ee2020d54cbaccb19eddeb1ff93  gcc/testsuite/objc.dg/pr18255.m
  92850ceb26e638315f91054c730aacc8  gcc/testsuite/objc.dg/pr23214.m
  e220e57343bac32bbc315171b87b1bba  gcc/testsuite/objc.dg/pr23709.m
--- 61488,61496 ----
  6eed5537eae24ed6634c3706c12f2114  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
! 7f90237fc39f8b5071e14328f9b3d970  gcc/testsuite/objc.dg/pch/pch.exp
  5fef9f0c990ff2c42750c2300d343f56  gcc/testsuite/objc.dg/plugin/diagnostic-test-expressions-1.m
! 6aa39a4acd45af327fa67f9249039652  gcc/testsuite/objc.dg/plugin/plugin.exp
  4bde0ee2020d54cbaccb19eddeb1ff93  gcc/testsuite/objc.dg/pr18255.m
  92850ceb26e638315f91054c730aacc8  gcc/testsuite/objc.dg/pr23214.m
  e220e57343bac32bbc315171b87b1bba  gcc/testsuite/objc.dg/pr23709.m
*************** c13f51499cc098460ca1bf4de378d8a9  gcc/te
*** 57600,57608 ****
  93119adb51959324caf77d0824455a1a  gcc/testsuite/objc.dg/property/at-property-13.m
  f26a7fefcf0b731be377d24aa6e685fb  gcc/testsuite/objc.dg/property/at-property-14.m
  1780bbfd604efee63a723746273fce9e  gcc/testsuite/objc.dg/property/at-property-15.m
! 152c4e7111012aa05d68cc4f66b1f60f  gcc/testsuite/objc.dg/property/at-property-16.m
  554dc469f8d52126cf0dd4f2008316ba  gcc/testsuite/objc.dg/property/at-property-17.m
! a19ca1e6a1741f11a4485e0100afe888  gcc/testsuite/objc.dg/property/at-property-18.m
  90db711d07cb40e0e86da5a538b8d6af  gcc/testsuite/objc.dg/property/at-property-19.m
  c38e3835bda0d023a5c9b642d5e22d05  gcc/testsuite/objc.dg/property/at-property-2.m
  8a9e4a6a888f562ca2f1867d6b9f0d7c  gcc/testsuite/objc.dg/property/at-property-20.m
--- 61513,61521 ----
  93119adb51959324caf77d0824455a1a  gcc/testsuite/objc.dg/property/at-property-13.m
  f26a7fefcf0b731be377d24aa6e685fb  gcc/testsuite/objc.dg/property/at-property-14.m
  1780bbfd604efee63a723746273fce9e  gcc/testsuite/objc.dg/property/at-property-15.m
! c5a79ae65886230d3051322d8e3ad25c  gcc/testsuite/objc.dg/property/at-property-16.m
  554dc469f8d52126cf0dd4f2008316ba  gcc/testsuite/objc.dg/property/at-property-17.m
! 47e4161495f3f8cf2acc6d1ae7753c8d  gcc/testsuite/objc.dg/property/at-property-18.m
  90db711d07cb40e0e86da5a538b8d6af  gcc/testsuite/objc.dg/property/at-property-19.m
  c38e3835bda0d023a5c9b642d5e22d05  gcc/testsuite/objc.dg/property/at-property-2.m
  8a9e4a6a888f562ca2f1867d6b9f0d7c  gcc/testsuite/objc.dg/property/at-property-20.m
*************** a3781faeea4156e43d225c4ae8c8d42a  gcc/te
*** 57610,57623 ****
  71de5c21ef5a5f5dfb048a298924ae3b  gcc/testsuite/objc.dg/property/at-property-22.m
  3721c3a6adabe9b7f4a938b169451d9c  gcc/testsuite/objc.dg/property/at-property-23.m
  cffbe1f056bdf203ff8701c9c496a6d2  gcc/testsuite/objc.dg/property/at-property-24.m
! e92188b066d1f51c91572dde7f065cef  gcc/testsuite/objc.dg/property/at-property-25.m
  b27fb2202f603a2efecfe3a3745cb8d6  gcc/testsuite/objc.dg/property/at-property-26.m
  f9e1d849f4fc728633fda1eeec779521  gcc/testsuite/objc.dg/property/at-property-27.m
  961c05748c8a277af44692e8c308b59e  gcc/testsuite/objc.dg/property/at-property-28.m
  05225c32a0685ae8029619d8c0addcd8  gcc/testsuite/objc.dg/property/at-property-29.m
  d3b40e4f3c66992ae3b8efe17e6ab426  gcc/testsuite/objc.dg/property/at-property-3.m
  99dc26b93be199dc4082ca902a30ca47  gcc/testsuite/objc.dg/property/at-property-4.m
! edba228620ece81936a0033058597ac9  gcc/testsuite/objc.dg/property/at-property-5.m
  5f3c35f44b41c062d9b52673fcce9fd1  gcc/testsuite/objc.dg/property/at-property-6.m
  24be423b07143ba53a7dfdccedc9c3ee  gcc/testsuite/objc.dg/property/at-property-7.m
  27094307878a577672206ed6a5f2d207  gcc/testsuite/objc.dg/property/at-property-8.m
--- 61523,61536 ----
  71de5c21ef5a5f5dfb048a298924ae3b  gcc/testsuite/objc.dg/property/at-property-22.m
  3721c3a6adabe9b7f4a938b169451d9c  gcc/testsuite/objc.dg/property/at-property-23.m
  cffbe1f056bdf203ff8701c9c496a6d2  gcc/testsuite/objc.dg/property/at-property-24.m
! 896d5c0a877aaf8f7086fd6e319614b9  gcc/testsuite/objc.dg/property/at-property-25.m
  b27fb2202f603a2efecfe3a3745cb8d6  gcc/testsuite/objc.dg/property/at-property-26.m
  f9e1d849f4fc728633fda1eeec779521  gcc/testsuite/objc.dg/property/at-property-27.m
  961c05748c8a277af44692e8c308b59e  gcc/testsuite/objc.dg/property/at-property-28.m
  05225c32a0685ae8029619d8c0addcd8  gcc/testsuite/objc.dg/property/at-property-29.m
  d3b40e4f3c66992ae3b8efe17e6ab426  gcc/testsuite/objc.dg/property/at-property-3.m
  99dc26b93be199dc4082ca902a30ca47  gcc/testsuite/objc.dg/property/at-property-4.m
! 103c7ace01e641ad49f8c6f25b07be13  gcc/testsuite/objc.dg/property/at-property-5.m
  5f3c35f44b41c062d9b52673fcce9fd1  gcc/testsuite/objc.dg/property/at-property-6.m
  24be423b07143ba53a7dfdccedc9c3ee  gcc/testsuite/objc.dg/property/at-property-7.m
  27094307878a577672206ed6a5f2d207  gcc/testsuite/objc.dg/property/at-property-8.m
*************** e469331a9543b20d3db3dbb8cad3ea40  gcc/te
*** 57648,57654 ****
  7520702fc48e84ce809a08f676919358  gcc/testsuite/objc.dg/property/dotsyntax-9.m
  6f1aef0eaa693eade4382edab17f6c83  gcc/testsuite/objc.dg/property/dotsyntax-deprecated-1.m
  f216d6696984e64e4a96ad364eeeeb0c  gcc/testsuite/objc.dg/property/dynamic-1.m
! 3219cd54a38ec821b895f52e9fbc5102  gcc/testsuite/objc.dg/property/dynamic-2.m
  7fc8014203c4f5c658701b3aa2d81caa  gcc/testsuite/objc.dg/property/dynamic-3.m
  f3257df0423e2afdb9ace613f46ea170  gcc/testsuite/objc.dg/property/dynamic-4.m
  94e3f44009eac8392713455e1c74a647  gcc/testsuite/objc.dg/property/dynamic-5.m
--- 61561,61567 ----
  7520702fc48e84ce809a08f676919358  gcc/testsuite/objc.dg/property/dotsyntax-9.m
  6f1aef0eaa693eade4382edab17f6c83  gcc/testsuite/objc.dg/property/dotsyntax-deprecated-1.m
  f216d6696984e64e4a96ad364eeeeb0c  gcc/testsuite/objc.dg/property/dynamic-1.m
! 051dc76fcc24d1cb8c055ed2bc6b1911  gcc/testsuite/objc.dg/property/dynamic-2.m
  7fc8014203c4f5c658701b3aa2d81caa  gcc/testsuite/objc.dg/property/dynamic-3.m
  f3257df0423e2afdb9ace613f46ea170  gcc/testsuite/objc.dg/property/dynamic-4.m
  94e3f44009eac8392713455e1c74a647  gcc/testsuite/objc.dg/property/dynamic-5.m
*************** ed3272651231fd9961500a4a972e7445  gcc/te
*** 57660,57671 ****
  a9ed81f0b2b7a198a2c165663a00789d  gcc/testsuite/objc.dg/property/property-encoding-1.m
  5b85d5006f591e2a04cd983b74c614c4  gcc/testsuite/objc.dg/property/property-neg-1.m
  f7c80492fabd33b2030264938643704e  gcc/testsuite/objc.dg/property/property-neg-2.m
! 79e264df694cc1adcd3044c29fdabe5a  gcc/testsuite/objc.dg/property/property-neg-3.m
  7882bafba8b7796120cc23af5d441202  gcc/testsuite/objc.dg/property/property-neg-4.m
  46896a53d202d39ebcdefc0f78554362  gcc/testsuite/objc.dg/property/property-neg-5.m
  ea4fb9865bd07122883de2bcf725a13f  gcc/testsuite/objc.dg/property/property-neg-6.m
  ef7216f0d4dd0d6b22598260f7e0ee71  gcc/testsuite/objc.dg/property/property-neg-7.m
! 6da4ba8e85b47d85b4311d0aae5f3a88  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
--- 61573,61584 ----
  a9ed81f0b2b7a198a2c165663a00789d  gcc/testsuite/objc.dg/property/property-encoding-1.m
  5b85d5006f591e2a04cd983b74c614c4  gcc/testsuite/objc.dg/property/property-neg-1.m
  f7c80492fabd33b2030264938643704e  gcc/testsuite/objc.dg/property/property-neg-2.m
! baf9036868eba04aebdd06e708a665ec  gcc/testsuite/objc.dg/property/property-neg-3.m
  7882bafba8b7796120cc23af5d441202  gcc/testsuite/objc.dg/property/property-neg-4.m
  46896a53d202d39ebcdefc0f78554362  gcc/testsuite/objc.dg/property/property-neg-5.m
  ea4fb9865bd07122883de2bcf725a13f  gcc/testsuite/objc.dg/property/property-neg-6.m
  ef7216f0d4dd0d6b22598260f7e0ee71  gcc/testsuite/objc.dg/property/property-neg-7.m
! 3776c7be86eb3c9af0ee503bd6feaddd  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
*** 57683,57697 ****
  4d4bd4a6e94f7ca1dcbd85c5c66e8f14  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
! 613e0d9387f50f78866c315391b5550b  gcc/testsuite/objc.dg/proto-lossage-4.m
  40b981421154ac96e17299bce5569949  gcc/testsuite/objc.dg/proto-lossage-5.m
  d26b84bd4fece35e5ae1ec9a7c6d4f15  gcc/testsuite/objc.dg/proto-lossage-6.m
  6975286133171cd693b6f659097de913  gcc/testsuite/objc.dg/proto-lossage-7.m
  604faba6fd06b505d44d4837836124fa  gcc/testsuite/objc.dg/proto-qual-1.m
  4afd2785a0050e517e5c3818d2d5ea46  gcc/testsuite/objc.dg/protocol-forward-1.m
  30d24d440a6063d356f6a53af5141ba5  gcc/testsuite/objc.dg/protocol-forward-2.m
! 947eba4128b4206c988686a723a67c93  gcc/testsuite/objc.dg/protocol-inheritance-1.m
! c195a9190c5975a66c572dbe3742474d  gcc/testsuite/objc.dg/protocol-inheritance-2.m
  5e94c540e8c80f67f410219fbbb8290c  gcc/testsuite/objc.dg/protocol-optional-1.m
  92402d5d0ed140a870d7d3438040c1fa  gcc/testsuite/objc.dg/protocol-qualifier-1.m
  3acfbf9e5283f39582515ae6ee0f8bcc  gcc/testsuite/objc.dg/protocol-qualifier-2.m
--- 61596,61610 ----
  4d4bd4a6e94f7ca1dcbd85c5c66e8f14  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
! 2891bbb5e156296e3ee3040d4a7c833e  gcc/testsuite/objc.dg/proto-lossage-4.m
  40b981421154ac96e17299bce5569949  gcc/testsuite/objc.dg/proto-lossage-5.m
  d26b84bd4fece35e5ae1ec9a7c6d4f15  gcc/testsuite/objc.dg/proto-lossage-6.m
  6975286133171cd693b6f659097de913  gcc/testsuite/objc.dg/proto-lossage-7.m
  604faba6fd06b505d44d4837836124fa  gcc/testsuite/objc.dg/proto-qual-1.m
  4afd2785a0050e517e5c3818d2d5ea46  gcc/testsuite/objc.dg/protocol-forward-1.m
  30d24d440a6063d356f6a53af5141ba5  gcc/testsuite/objc.dg/protocol-forward-2.m
! caaf3448e346d63b2c9d138c397e34ea  gcc/testsuite/objc.dg/protocol-inheritance-1.m
! 66598bd0d8651533ded6434b3ab3ad9c  gcc/testsuite/objc.dg/protocol-inheritance-2.m
  5e94c540e8c80f67f410219fbbb8290c  gcc/testsuite/objc.dg/protocol-optional-1.m
  92402d5d0ed140a870d7d3438040c1fa  gcc/testsuite/objc.dg/protocol-qualifier-1.m
  3acfbf9e5283f39582515ae6ee0f8bcc  gcc/testsuite/objc.dg/protocol-qualifier-2.m
*************** c531fbd47d6cd6f34fd4a1161fe41d36  gcc/te
*** 57713,57719 ****
  b5566392b676a4381c9fba425af46d22  gcc/testsuite/objc.dg/special/load-category-3.h
  f2dc49ff1ffe202416387a2b188d21fa  gcc/testsuite/objc.dg/special/load-category-3.m
  84e0d0ac9e785e6c7a2c3961f9fef351  gcc/testsuite/objc.dg/special/load-category-3a.m
! 8f7245c8161e9c3c900c8765959a78ca  gcc/testsuite/objc.dg/special/special.exp
  8f22f33dddabee33212506ee7b2ef346  gcc/testsuite/objc.dg/special/unclaimed-category-1.h
  2e84c4ad1f0b28dba08fbd95a108dc46  gcc/testsuite/objc.dg/special/unclaimed-category-1.m
  fd73b19f16303df474ad98a05e01cd6a  gcc/testsuite/objc.dg/special/unclaimed-category-1a.m
--- 61626,61632 ----
  b5566392b676a4381c9fba425af46d22  gcc/testsuite/objc.dg/special/load-category-3.h
  f2dc49ff1ffe202416387a2b188d21fa  gcc/testsuite/objc.dg/special/load-category-3.m
  84e0d0ac9e785e6c7a2c3961f9fef351  gcc/testsuite/objc.dg/special/load-category-3a.m
! dee9f6235f8a5ebf07eaa0693c1ad805  gcc/testsuite/objc.dg/special/special.exp
  8f22f33dddabee33212506ee7b2ef346  gcc/testsuite/objc.dg/special/unclaimed-category-1.h
  2e84c4ad1f0b28dba08fbd95a108dc46  gcc/testsuite/objc.dg/special/unclaimed-category-1.m
  fd73b19f16303df474ad98a05e01cd6a  gcc/testsuite/objc.dg/special/unclaimed-category-1a.m
*************** e435b5f971ceb7adfd4ad4a826e98257  gcc/te
*** 57731,57737 ****
  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
! 026e018ea0fbcf9b695d9c38992b48a4  gcc/testsuite/objc.dg/strings/strings.exp
  e725bc4ca7d60a0fa96e088c77b44ba3  gcc/testsuite/objc.dg/stubify-1.m
  b9a053b6534bf53cd94aa5a5ae0b528c  gcc/testsuite/objc.dg/stubify-2.m
  7e68d7fe39ddc6065769f26089764fd6  gcc/testsuite/objc.dg/super-class-1.m
--- 61644,61650 ----
  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
! ff654aadda87037110073b4a855a875f  gcc/testsuite/objc.dg/strings/strings.exp
  e725bc4ca7d60a0fa96e088c77b44ba3  gcc/testsuite/objc.dg/stubify-1.m
  b9a053b6534bf53cd94aa5a5ae0b528c  gcc/testsuite/objc.dg/stubify-2.m
  7e68d7fe39ddc6065769f26089764fd6  gcc/testsuite/objc.dg/super-class-1.m
*************** a8a9f4264b042cb130bb43f35157c620  gcc/te
*** 57769,57775 ****
  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
! ff0d9dbbbf254cfa960087cbcf8a1fd5  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
--- 61682,61688 ----
  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
! ca11947986939747afb67c73d68bba06  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
*************** ff0d9dbbbf254cfa960087cbcf8a1fd5  gcc/te
*** 57780,57793 ****
  8b7ac12bdba32ccf16e2bbe416ae4a2a  gcc/testsuite/objc.dg/try-catch-1.m
  65b30ce3fa7e707247f859f7235dcc28  gcc/testsuite/objc.dg/try-catch-10.m
  0547cf34f9cf4f3a578623b4ceb22a99  gcc/testsuite/objc.dg/try-catch-11.m
! 88472dca7d499d00e61fde850b4a5185  gcc/testsuite/objc.dg/try-catch-12.m
  e3f9c3908c841723be9991ee57398c20  gcc/testsuite/objc.dg/try-catch-3.m
  51214bb792c2a1e650ea6fb65e91228a  gcc/testsuite/objc.dg/try-catch-4.m
  c9db324887da3ead3dcfa5f4a10d2053  gcc/testsuite/objc.dg/try-catch-5.m
  72ce46a212fc20aa8a45cb3593ae39cb  gcc/testsuite/objc.dg/try-catch-6.m
  cbd8c5394b3188c8a0b698fffb29e761  gcc/testsuite/objc.dg/try-catch-7.m
  b1f8112005c5b7ced748bb83e7d79af2  gcc/testsuite/objc.dg/try-catch-9.m
! ea941057196bd1661d23223e9e9234b8  gcc/testsuite/objc.dg/two-types-1.m
  cee5b403be8cfe2d27154cd31820e280  gcc/testsuite/objc.dg/type-size-1.m
  b903a9692408e7207f2a32edeab43ab5  gcc/testsuite/objc.dg/type-size-2.m
  5ab344f63b686f2b67cbca8c31a23ec6  gcc/testsuite/objc.dg/type-size-3.m
--- 61693,61706 ----
  8b7ac12bdba32ccf16e2bbe416ae4a2a  gcc/testsuite/objc.dg/try-catch-1.m
  65b30ce3fa7e707247f859f7235dcc28  gcc/testsuite/objc.dg/try-catch-10.m
  0547cf34f9cf4f3a578623b4ceb22a99  gcc/testsuite/objc.dg/try-catch-11.m
! 676b9fa9f36baef074324581de2eb899  gcc/testsuite/objc.dg/try-catch-12.m
  e3f9c3908c841723be9991ee57398c20  gcc/testsuite/objc.dg/try-catch-3.m
  51214bb792c2a1e650ea6fb65e91228a  gcc/testsuite/objc.dg/try-catch-4.m
  c9db324887da3ead3dcfa5f4a10d2053  gcc/testsuite/objc.dg/try-catch-5.m
  72ce46a212fc20aa8a45cb3593ae39cb  gcc/testsuite/objc.dg/try-catch-6.m
  cbd8c5394b3188c8a0b698fffb29e761  gcc/testsuite/objc.dg/try-catch-7.m
  b1f8112005c5b7ced748bb83e7d79af2  gcc/testsuite/objc.dg/try-catch-9.m
! 9b538baec17d908e3e8aa869aed0e47b  gcc/testsuite/objc.dg/two-types-1.m
  cee5b403be8cfe2d27154cd31820e280  gcc/testsuite/objc.dg/type-size-1.m
  b903a9692408e7207f2a32edeab43ab5  gcc/testsuite/objc.dg/type-size-2.m
  5ab344f63b686f2b67cbca8c31a23ec6  gcc/testsuite/objc.dg/type-size-3.m
*************** c6f92ed8e0845d4f49274791f11f8632  gcc/te
*** 57803,57809 ****
  a86dde4579f2a917b3ba4488f0c82a58  gcc/testsuite/objc.dg/zero-link-3.m
  0d71c48c831bf5882b80c4cd6ca9d9d8  gcc/testsuite/objc/compile/20011211-1.m
  9b70591be7f91f15d0a53c89bdc94bf4  gcc/testsuite/objc/compile/20060406-1.m
! f9121cfae0f96307949de6b1503ddeac  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
--- 61716,61722 ----
  a86dde4579f2a917b3ba4488f0c82a58  gcc/testsuite/objc.dg/zero-link-3.m
  0d71c48c831bf5882b80c4cd6ca9d9d8  gcc/testsuite/objc/compile/20011211-1.m
  9b70591be7f91f15d0a53c89bdc94bf4  gcc/testsuite/objc/compile/20060406-1.m
! 63390432ecf16f7577842ecf7fce9e42  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
*** 57861,57867 ****
  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
! 3c215d7817758fd3fcdb067fe5972f64  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
--- 61774,61780 ----
  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
! 96377dd5e26be45ae9107d32fa98fa3b  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
*************** e9b8822effadb281ff59150cc70ef17f  gcc/te
*** 57871,57877 ****
  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
! 04e825ab5a1dd359222673010368a890  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
--- 61784,61790 ----
  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
! 89bfa2f1a3a57e88791117470c2ff266  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
*************** cd3354c77105e0720cfab6100803d9cf  gcc/te
*** 57932,58181 ****
  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
! 5d66151cc23ca43047e52aba59bff3d8  gcc/timevar.c
! a6e36faf2adc39e4bd4947d8fb693069  gcc/timevar.def
! 5cf8f98404e08ab29130ca1a202ef8e8  gcc/timevar.h
! f6b27d32bbcd5170a02e9787e6f5484e  gcc/tlink.c
! 3044cf6e2d7286f0f1bb0676ef1675c3  gcc/toplev.c
! 60ecb3eee8840237e7cbeee4f717acee  gcc/toplev.h
! 3ed6e4b64889eeac8078f80defb280e4  gcc/tracer.c
! 536d5f5c3a36295b251cd838717dd68f  gcc/tracer.h
! 62ff30eaf4ac83173f04d708d6c1734b  gcc/trans-mem.c
! 8ea74d18df5f3773ca43896888cfc755  gcc/trans-mem.h
! bf1ca0c8d6f7aa3ec077ca07f81fb48d  gcc/tree-affine.c
! 284126de2a59b6236d8ac9c724fb0fc1  gcc/tree-affine.h
! 3603e3d075155f4470364e64801460b9  gcc/tree-call-cdce.c
! b45735e394ef3a941126f6505cc65133  gcc/tree-cfg.c
! 44a714fe5a2bb4ca8dd0f32aa310c7f7  gcc/tree-cfg.h
! 907aeb3baac97f2aff5fcaf76bccac85  gcc/tree-cfgcleanup.c
! 8158974f8a5252ada87cd6fa950cb1bf  gcc/tree-cfgcleanup.h
! 736086185764b5502d82ed181191b9b6  gcc/tree-chkp-opt.c
! 405f10037825c7f9b0725da7872a4912  gcc/tree-chkp.c
! e30b9695c5cc0f195e5fc0ae04029306  gcc/tree-chkp.h
! d3b531c744233e39c8d1680d100db262  gcc/tree-chrec.c
! 561ccb6dc10b34beacb8dbc925d6c08e  gcc/tree-chrec.h
! 58c34bac40cd180f4f67c63c55f83339  gcc/tree-complex.c
! 8474bb7c121b2597050f38a2eb42c634  gcc/tree-core.h
! 7d78717aa6a0f789a43aa1ba33be3da9  gcc/tree-data-ref.c
! 0e39400878554545caaf195808c5126a  gcc/tree-data-ref.h
! 4c623cca1af3bb93d4e124f3ec018565  gcc/tree-dfa.c
! 67a9e2efaa9690ae165df4c23ebef3fa  gcc/tree-dfa.h
! 051fa8613d33abf3756316de9fa9f30f  gcc/tree-diagnostic.c
! cdd8772724226d41e49acfaae2bb846b  gcc/tree-diagnostic.h
! e99bf85c6ababdb83b4347bb43d3fa82  gcc/tree-dump.c
! 466495caa48c842c98b4d0fe6ca75cd5  gcc/tree-dump.h
! edac3ced744a1f0105010c26d5714c8d  gcc/tree-eh.c
! 1e8e77672f05264f6b3137d48fa05276  gcc/tree-eh.h
! fb5a184de27472cda879bcb534d515c1  gcc/tree-emutls.c
! c6c6e56ccc550a7826b1cdb5ca62f4e8  gcc/tree-hash-traits.h
! fbd4781af8861fb55dcdcdd79809a1ed  gcc/tree-hasher.h
! 4c4f30cef773d8c10ba55ab4a3cfadc1  gcc/tree-if-conv.c
! 26f079f6fb72717b74fd761099b24329  gcc/tree-if-conv.h
! 6b03d70d856a27560a011b4823961fab  gcc/tree-inline.c
! 5b5c7e160316ca96ead85364ab90c2fc  gcc/tree-inline.h
! bc9d14687fd8689e05b55f0db6b61b64  gcc/tree-into-ssa.c
! 514b25ed7303f88e6212e1467ef200c7  gcc/tree-into-ssa.h
! 5db9595a7abc4022f5d19147cd5062f4  gcc/tree-iterator.c
! ab133fc7fbc83e7d29268492f52749b6  gcc/tree-iterator.h
! 0756bf9990a411f1afa9f11ff88ece95  gcc/tree-loop-distribution.c
! a5e0b9750390cf52a6a7ecbb3471065e  gcc/tree-nested.c
! 72ca8dc800ffbbff1e54e359ddfe785e  gcc/tree-nested.h
! cab3ca8e14ee509fb6e8147d9944cd6e  gcc/tree-nrv.c
! 2d79e7d9f9e55daf22483cb05e161335  gcc/tree-object-size.c
! 679a50dd021eb9ba20205cb9c70b9af5  gcc/tree-object-size.h
! d24150d4f8760056afd561808434af7c  gcc/tree-outof-ssa.c
! d146d6b43c7f778dbf6a630a055a1e43  gcc/tree-outof-ssa.h
! a73b531cee0ddd9dd1f93d8dbe97139b  gcc/tree-parloops.c
! de93f2c155c4a1e3b4e95604993815fb  gcc/tree-parloops.h
! ec29076445192fd88ec553290cde1704  gcc/tree-pass.h
! 36bea65ced3fce4818308b42e79a2c02  gcc/tree-phinodes.c
! 652bbae0b3e3916c3332141996469cb3  gcc/tree-phinodes.h
! 0b188336cd0d361b10dea49e50bb1332  gcc/tree-predcom.c
! 62586f938f5cd2aa42d284277760013f  gcc/tree-pretty-print.c
! 8edf9c8f71a9679705eefd4273eb3c6e  gcc/tree-pretty-print.h
! ad8ba88c167af34a585819fe74d00c8b  gcc/tree-profile.c
! 473621df97cbf00e502a5e815d90636a  gcc/tree-scalar-evolution.c
! 1b02e05670920c8792f7c76edbe076c4  gcc/tree-scalar-evolution.h
! 2b2454b4960b00caf6fcd817050f19f5  gcc/tree-sra.c
! 68e463ff24e74c8bb36fc91cf7ea35d1  gcc/tree-ssa-address.c
! 4f144c99892514a4414ffeb8afcf8113  gcc/tree-ssa-address.h
! 668322898a2a53ae391a2f4ea217a384  gcc/tree-ssa-alias.c
! ac310ca90f0632bb654ed1c7646d07f2  gcc/tree-ssa-alias.h
! e9658082cc9e989af0d0b066205bff03  gcc/tree-ssa-ccp.c
! ca3aa63e717a70af149945d4ee9d8b7f  gcc/tree-ssa-ccp.h
! faab3dc9502edbab7409dd8797fd94af  gcc/tree-ssa-coalesce.c
! 317ddaf9aa0104dddd20233e702e01ab  gcc/tree-ssa-coalesce.h
! 3252dc3a1fadf7ca3634cbe87932e24f  gcc/tree-ssa-copy.c
! 582a150658a512e1f066b33ea03d6c91  gcc/tree-ssa-dce.c
! b7109254a84860974b0d55d580b68626  gcc/tree-ssa-dom.c
! 9c38d0bc9dbb2e6e2a080d94ffbb3730  gcc/tree-ssa-dom.h
! 55e322cd8dc0b29e6e44dd929e7ded51  gcc/tree-ssa-dse.c
! 29bf730fe691bd967a0837089bd59a07  gcc/tree-ssa-forwprop.c
! 389cb071722144f72ebf78289ec82965  gcc/tree-ssa-ifcombine.c
! 2747af87035e55b411af1a2dfd1982ed  gcc/tree-ssa-live.c
! 27f182c46da4e0babeb83f0dc3a6fe44  gcc/tree-ssa-live.h
! 732da9ae7eb44e25bbe52e825cbea716  gcc/tree-ssa-loop-ch.c
! f56c3e2b82fb07bf466feff827a22669  gcc/tree-ssa-loop-im.c
! 40a1e1211106ff6d7c6147330a4f2277  gcc/tree-ssa-loop-ivcanon.c
! f198a805f2cdb8b1498286e1269fb2bf  gcc/tree-ssa-loop-ivopts.c
! 8e29657be03c1b4a6b31bb0f3c04532d  gcc/tree-ssa-loop-ivopts.h
! 9235efdadb6242e3ec1be0a1f77a8bd2  gcc/tree-ssa-loop-manip.c
! bd52a938042a3d9ee70f78865379c60c  gcc/tree-ssa-loop-manip.h
! 4991a8e9e93fedbde5ddbbee9f032130  gcc/tree-ssa-loop-niter.c
! a53387a05fd56f1c0a7b258041d09524  gcc/tree-ssa-loop-niter.h
! 4dbfc3b9f8f9c989a279e20ebed7411c  gcc/tree-ssa-loop-prefetch.c
! 7bb19ef1c822c0df63d1d066943cf499  gcc/tree-ssa-loop-split.c
! 01b379e1106a6dfd62ccf26fa40e1207  gcc/tree-ssa-loop-unswitch.c
! 134e4686a91b6b14309cd423625de906  gcc/tree-ssa-loop.c
! 7c883977ae5ca8f99c7baef499ec819d  gcc/tree-ssa-loop.h
! 4773e8d0e06dc739c64840ae3ff866d9  gcc/tree-ssa-math-opts.c
! f3a1ba8cdac9b155fe4b3d2bfd7c0e04  gcc/tree-ssa-operands.c
! faf546a32913cc858b6e35a17288bf4a  gcc/tree-ssa-operands.h
! 8886d357d83d57390c1f023dfd8d3d04  gcc/tree-ssa-phionlycprop.c
! 3111ecbd2dc501cbece38863c5588190  gcc/tree-ssa-phiopt.c
! 885c59dc4630d2a2790254654a35a785  gcc/tree-ssa-phiprop.c
! e94a9fccb0425b54e3140c37fe9c6282  gcc/tree-ssa-pre.c
! 236253ad5db25fc718d0c974ebca50f6  gcc/tree-ssa-propagate.c
! 3e37daab7057d09f238f1b5a1107d339  gcc/tree-ssa-propagate.h
! e805649a2d042e676b630fda0e92060a  gcc/tree-ssa-reassoc.c
! beeeb865cef7b6db9a5291815ec48b3e  gcc/tree-ssa-sccvn.c
! 855a6a94016da8307d4a7f81ac586a02  gcc/tree-ssa-sccvn.h
! 52aad650c67052f4d0fb05119b5b33d2  gcc/tree-ssa-scopedtables.c
! f7c97819a8d6cd14e1ba52ff42f9519b  gcc/tree-ssa-scopedtables.h
! 26212a5bd2bf0ebc8b5eb1d44ffedfbd  gcc/tree-ssa-sink.c
! e9fbcbbd081eef6ddecc218bb001fa4e  gcc/tree-ssa-strlen.c
! 42a84dc7a2a7700bc7df1a80fa7f9a36  gcc/tree-ssa-structalias.c
! fb5dee46b6b91059ab1db6d5cb9cc478  gcc/tree-ssa-tail-merge.c
! 983e049bd2b8555cefd79a1857036f27  gcc/tree-ssa-ter.c
! 629b1346e41d0eaf7999d9273d12343b  gcc/tree-ssa-ter.h
! d4c6c6ceed8639bbc2aeb01cbeaa97cd  gcc/tree-ssa-threadbackward.c
! 2531acc8f242075bd5d980f9cab4511f  gcc/tree-ssa-threadbackward.h
! 1fbd8e356085bd3b411b6a844289f188  gcc/tree-ssa-threadedge.c
! aeb197a9ce8db0f44a2c21accdfc4252  gcc/tree-ssa-threadedge.h
! 11cb35df02283d309a3a429ace1dfc67  gcc/tree-ssa-threadupdate.c
! a1c75828ecf8fd1c6eaf74c6ec6ff367  gcc/tree-ssa-threadupdate.h
! 48f066aa5a376e7a36880dda3175f693  gcc/tree-ssa-uncprop.c
! 8352e9f09efc638da2e95e7caedde2df  gcc/tree-ssa-uninit.c
! ff8c6f3ea3a80efdb5465075b830bdba  gcc/tree-ssa.c
! 40537e4def470af52fd09e8f581a87a4  gcc/tree-ssa.h
! a4ec23ea5dc99ee2c0f433cc4380cf71  gcc/tree-ssanames.c
! 7b878704c463f54f6e5169fc3e4e0e11  gcc/tree-ssanames.h
! 7532580926e6ea62c157bfde93eabc3e  gcc/tree-stdarg.c
! f074a5b3661311f44cd97298ce2721c8  gcc/tree-stdarg.h
! 2d7ba2551388b812856087b1b11a9636  gcc/tree-streamer-in.c
! 43dd2170e9247f738b555038efc4a743  gcc/tree-streamer-out.c
! 258742a6a20e3226f6a1bb968e470187  gcc/tree-streamer.c
! ddb2dd33dea05630b1bcaf17cf1e6fe6  gcc/tree-streamer.h
! 1dae91fc5487d137906e2984f737b2fc  gcc/tree-switch-conversion.c
! 4f1437900d1eae97e34eee340c78d8f0  gcc/tree-tailcall.c
! 60ac277fe744bdffc1d3cc8d23c114e3  gcc/tree-vect-data-refs.c
! 9c4b793372502f0d56cc72e8bf4bd0c3  gcc/tree-vect-generic.c
! de2a4509a3f3fdf59c0e96c1fb5d368c  gcc/tree-vect-loop-manip.c
! 46e827311bbf8fdfb1591039c2eacc58  gcc/tree-vect-loop.c
! 13b9ab9878d38fbb5b9ab9e2a3b9fc3e  gcc/tree-vect-patterns.c
! f197c7c8e99de5214d384509ebb6944f  gcc/tree-vect-slp.c
! 141eed5be7d6df1c702136c8533627f6  gcc/tree-vect-stmts.c
! 6491d8028906ba909a4fd71f061f338f  gcc/tree-vectorizer.c
! 76daa3059be9109db2b7dce0d0cf119a  gcc/tree-vectorizer.h
! b03da7a5c9800ea4e58962dbc7df7d13  gcc/tree-vrp.c
! d0b07570d4815d6988ff91b7d96f35c1  gcc/tree-vrp.h
! 8893b18805ad8418a04858636de77a47  gcc/tree.c
! c54cff3017739446f22655474c5be4d4  gcc/tree.def
! 223a81503038013bef7ce9d880566d21  gcc/tree.h
! f8aeb637e24e2147a52ec643e9c28aef  gcc/treestruct.def
! 920500c599697836ec34d26fcdc64054  gcc/tsan.c
! 4a8b8b62b3cda63b7ce4273fb84b74fa  gcc/tsan.h
! 71ad76c42975f4172982a1fd4a2ed1ab  gcc/tsystem.h
! 5efa8f3343ecdf353e4049ac62790fd1  gcc/typeclass.h
! aab19944e5d4ede282dca320f8ad2758  gcc/typed-splay-tree.c
! 8546cfccd93736ce37e8356167a8c8d3  gcc/typed-splay-tree.h
! 37dab9d9536027628de494391d84137a  gcc/ubsan.c
! abd69325eb08fa62d523a28ffb55a64c  gcc/ubsan.h
! c8b43ae28a594feb1a7832ffcf1ff166  gcc/valtrack.c
! fe46b58c2d968098a9ae6e7a7445cae3  gcc/valtrack.h
! 98fdc9a291306955c55665ff6b44c42b  gcc/value-prof.c
! ac107bcf2a6f3e451007922fe6c8da2a  gcc/value-prof.h
! 08bf2c7378d10540c4ebbbdf57a90827  gcc/var-tracking.c
! de0aa24b5d1dcbba68b0797102ca4b12  gcc/varasm.c
! 3075dcabae19eef70790c35d5576a237  gcc/varasm.h
! a1e741d53ddf1d949ec51b34ae13e6d5  gcc/varpool.c
! c77ffc837d830d397f3be14b28431037  gcc/vec.c
! d494f7267d3ff1290b8f6e9b0ce5e012  gcc/vec.h
! ca4f6963e6fd01c43e6c4f82f1af83bf  gcc/version.c
  206ce76c6ce744048f99fdcc938dc713  gcc/version.h
! 4d5472949ea84a6c049baaf1031f9c8e  gcc/vmsdbg.h
! c7fbaaef606f61c1aa583d1a0e56057a  gcc/vmsdbgout.c
! 94aebbb48447d837161ece5b2d4f0faa  gcc/vtable-verify.c
! 5778d6a9b39a1f9f47ebab37005e1e5e  gcc/vtable-verify.h
! bf9aae8885dc1968da10c6a7115941f2  gcc/web.c
! ae2494df80e1f4593b6b693054302d08  gcc/wide-int-print.cc
! 92f7f95e2490cfc450d9a7952e1c4c3b  gcc/wide-int-print.h
! af685becb5c1a01e42a76fc820bdeb91  gcc/wide-int.cc
! e48b954d508e3167f06f4a8d82ea5cd8  gcc/wide-int.h
! 4610af587f4dc950fe9a6ef2235dfff9  gcc/xcoff.h
! d7feb10b49afbc551ef8ef0e7c8b382a  gcc/xcoffout.c
! 8ac0a7cac3c2354f43d17230a00549ee  gcc/xcoffout.h
! 335e82b464efbb300226d808cf24ca72  gnattools/ChangeLog
! aaa671ca98fa9f94bfedd0ab395c5505  gnattools/Makefile.in
  c59f18e88cbf4b04095185094daf9a84  gnattools/configure
  eb3f980bf11ec11e25ddc6f29983830a  gnattools/configure.ac
! 2f22e44a2af15334163d3276c7d8321c  gotools/ChangeLog
! 240cdfac222bad04b3c6c59b6e33224f  gotools/Makefile.am
! b135327a9b19851bf704c9bdac3735cf  gotools/Makefile.in
  7e23031e2e274aaa07b61c1e8f18dc99  gotools/README
  5044050ba43f94607253851087522f3a  gotools/aclocal.m4
  0fb2c6f51fa8ca46b7b719a84c48eb70  gotools/config/go.m4
! 375e7fabfe7b588d185476e5c03afdb8  gotools/configure
! a02a9f68ef852cb0a878e9f3f86dac1e  gotools/configure.ac
  c4e8176c1964a5ebe0a55900f2141299  gotools/go.1
  eb2aeb3a6cffe7b26a8f1c8a2da23dcd  gotools/gofmt.1
  59530bdf33659b29e73d4adb9f9f6552  include/COPYING
  d32239bcb673463ab874e80d47fae504  include/COPYING3
! 9715299feb9a5a57527e6fe033fa28e7  include/ChangeLog
  4263432a72ff47ed8bf420208ee7eea5  include/ChangeLog-9103
  a43d76108493b20da790f953f829c6a5  include/ChangeLog.jit
! f5224d917e0ec7656fa5c368c93b1c13  include/ansidecl.h
! c7e4c5253047a252cb017026d5d2d001  include/demangle.h
! e6709bc4025d2a61913071537bcf9d7b  include/dwarf2.def
! 30af01ce4e0195fdbacf983279e07b80  include/dwarf2.h
! e8eff8bd68d89c32b3bdd02dd51c41b9  include/dyn-string.h
! 785bd81e62b35fbe26e9de0b4229123a  include/environ.h
! 1fb622dc06c1214f15568652f339f1f8  include/fibheap.h
! be2a8159cc57ae59dbd6b768803fe27f  include/filenames.h
! b8948975f5d9beb03b8b685c274aabc8  include/floatformat.h
! eb8388aa550e8719cf6445160071f6c0  include/fnmatch.h
! 27841bf69ea0b4e022af8427474c27b8  include/gcc-c-fe.def
! 3b51af9c5d23e08836e43f68f9a1a42c  include/gcc-c-interface.h
! 1921566304030122d1e3e6150093d75b  include/gcc-cp-fe.def
! 2c1f7bdaf4d9e121fc27381d255466b1  include/gcc-cp-interface.h
! 337d3c2716349b6f12270b01660e2e50  include/gcc-interface.h
! 414c36cfc19c396ed5ac56d7d35014c3  include/gdb/gdb-index.h
! e657595101fb96caef4c3f216a7d9e0c  include/getopt.h
! 68d015ec9817ab5100f9598d478e9ccd  include/gomp-constants.h
! b485b8eefdc60030d51b61cbbfa0ea89  include/hashtab.h
! 59796df87aa49c9d2611f44fa5afe89d  include/hsa.h
! 9487c43b82684414a669f5417e14a500  include/leb128.h
! fcbe1219fcac3076ea27790fe20bff1a  include/libiberty.h
! 7ea76aac6ae077face12ff1c6d012e4c  include/longlong.h
! a87d20ee15eb2d28ffbd30c8e579d353  include/lto-symtab.h
! 886ca526e06d3ee9171ee559afab581e  include/md5.h
! c2cf894f134a86c5ffeffe80c41a6f62  include/objalloc.h
! 90d03f7e93ca98c3c7b4f5b868c7de96  include/obstack.h
! 6565216d5b2d20e956c0cd86cbe633b2  include/partition.h
! 2c9a93ddb0b426cdf615a9f8c63b930d  include/plugin-api.h
! 24693bb39ebf16dc766495cf4dd3c1bc  include/safe-ctype.h
! ebaf91fa0417eb4f8ed6a16ee1e04548  include/sha1.h
! b79da93b169045b1286dca4031f60e2a  include/simple-object.h
! 8e1a01711f79ae88c9c42e746406ef34  include/sort.h
! 07ab991f776d5bb981e8cd92e9131670  include/splay-tree.h
! b93c2a82c5bace531e0be337e3fd8f28  include/symcat.h
! a2c2be56ed85992d72e0a1e16388ce83  include/timeval-utils.h
! 927146323f2e6884a069a743290049f4  include/vtv-change-permission.h
  53bdfdb5cd3c0c7831611602041cda52  include/xregex.h
! a3809e336de193fa8866271870dd0443  include/xregex2.h
! 323e072fba874802e42a3a1a6468b335  include/xtensa-config.h
  361482dd6b5b5eb7090fff3986fba68a  install-sh
! 8db5696095c153c4474f4caa06b74736  intl/ChangeLog
  cad1d6fab2274517783de7433c0faa74  intl/Makefile.in
  6ec998bb4716c744bf8185e607f69301  intl/README
  76ca170a525d5b84d90f0478fe788931  intl/VERSION
--- 61845,62105 ----
  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
! c5c9ff03c8513ded25ac3a967b48085a  gcc/timevar.c
! 7b9d3e33b917199158b977af4c108355  gcc/timevar.def
! 3c23c5ab690742eb1792aaab452d0439  gcc/timevar.h
! 494c54b7d1757cab69e8bd45419d9791  gcc/tlink.c
! 26c822a669875d2c2fc227678929740d  gcc/toplev.c
! f96d6de70f3f0590828430414de64703  gcc/toplev.h
! a7c3617db28bcdc07bc6db0b3e77a11d  gcc/tracer.c
! a31e20be1f17efb9449295d8115b8e44  gcc/tracer.h
! 1bee0b7ee662a3526ec5767d5c24de6e  gcc/trans-mem.c
! b073b36289942334fccdeb4d24ff9439  gcc/trans-mem.h
! ce824f0d0f96ea15352bec5c3455e176  gcc/tree-affine.c
! b5ed1742deb1ddcfd19853bacd23df0c  gcc/tree-affine.h
! 549ba70a91042bce1b00d4e4991302e8  gcc/tree-call-cdce.c
! 157141d15af81c46e62cac9e0cd63ba7  gcc/tree-cfg.c
! 6812214afe0d37d4881606855f992f2e  gcc/tree-cfg.h
! b29c65f5752d09d1b4cab9355704b298  gcc/tree-cfgcleanup.c
! 19662777bb8b601c7711286936133e81  gcc/tree-cfgcleanup.h
! 3edd81a1b44e3317af2d1f1ea439b154  gcc/tree-chkp-opt.c
! 35266a6f0ff4b2b78c22e1ed7ff7c10f  gcc/tree-chkp.c
! 3e2dde29d3501136096958570a5113ba  gcc/tree-chkp.h
! f83d66c8199ba00e93d5a893eb317720  gcc/tree-chrec.c
! b3894073e587c4c8d29f0edcfbe0b34b  gcc/tree-chrec.h
! 8f3571d824f44ace153a888be97e8303  gcc/tree-complex.c
! 6892982901a16bc3574dc59ed95175b3  gcc/tree-core.h
! 06ea56d9f1232e6a42567284d57c692e  gcc/tree-data-ref.c
! 14d4baf16cedad6bee8b2c7a19621032  gcc/tree-data-ref.h
! e4ebe06aec52a07fea129dd62c885552  gcc/tree-dfa.c
! 6630d3c22ad7f58a6038456404da34f2  gcc/tree-dfa.h
! 346ce5448fc1d59e42c687eed1e064c2  gcc/tree-diagnostic.c
! 66a982787c9ff0ec1e4f342af2be3a93  gcc/tree-diagnostic.h
! deacb1b9fe82509695210773fcee84d3  gcc/tree-dump.c
! 5a6bbe4eb717cea3779c8195071ff539  gcc/tree-dump.h
! 2b7e2ffa28d6b6560f12920d20d90c21  gcc/tree-eh.c
! 08d4d817e19d78e6456f793ace117b13  gcc/tree-eh.h
! 98f97a51a7fe1663cabe8b5c2994ae44  gcc/tree-emutls.c
! 7f719d0f8f75a12b72ef5745d8d8a697  gcc/tree-hash-traits.h
! 03cb0c4b258ea53578fa8138e1cc5372  gcc/tree-hasher.h
! 37387628580470e7d51c967495e7ba7c  gcc/tree-if-conv.c
! e80967aedf2457305e0aff6c41d9cc9a  gcc/tree-if-conv.h
! 77415a42153d42d5457b08f58e736cd4  gcc/tree-inline.c
! efe74ab43ea19b414cfaafab72bfa0aa  gcc/tree-inline.h
! dd830fdd8c80ae21257316bb6a5c1222  gcc/tree-into-ssa.c
! e440c1749aab3001199704be2d30efca  gcc/tree-into-ssa.h
! e38fb6ceb8f4f44ec45d6b4d3ed1a7ac  gcc/tree-iterator.c
! 4f0ad0d3335a4684713361ee3321765a  gcc/tree-iterator.h
! 4b5a5ceec796001b0b0cf8fb0c31c01d  gcc/tree-loop-distribution.c
! 636a9ae0fea02548a7142a269ed40039  gcc/tree-nested.c
! 47ed5446a111478fa7dee5eec3c96f69  gcc/tree-nested.h
! bf4fae554ec2382d216fd2781876cdb3  gcc/tree-nrv.c
! 4b85a9124fd1b7f5de196e5140a4baee  gcc/tree-object-size.c
! e9b423e15a82c54595b215e4305612f0  gcc/tree-object-size.h
! 6947fc4bd173552a2bd4b8392cbe3cab  gcc/tree-outof-ssa.c
! 251e6b365cf0a560cb73bbdbdfadc456  gcc/tree-outof-ssa.h
! 77d0e442f31ed32355cc700c1268c05c  gcc/tree-parloops.c
! a88b6325c8d27f1be5d33fefae43dd13  gcc/tree-parloops.h
! ac9e8a0de63ab275489d211a3a796392  gcc/tree-pass.h
! ee4074b4f4c0c58f5f0847dee454736c  gcc/tree-phinodes.c
! 25c97c740c9f8dde32ef1d129df03b76  gcc/tree-phinodes.h
! 10094e678a6b1a85a9e0bb3169b1a99c  gcc/tree-predcom.c
! 1865e59171c3c3d2c7ddea0db0c4de91  gcc/tree-pretty-print.c
! dc34864230a643baba022d69a49744b2  gcc/tree-pretty-print.h
! d930a96956677203299362c28126fc73  gcc/tree-profile.c
! 0c2cb1fc1ee0521b0cfe4101383a03c7  gcc/tree-scalar-evolution.c
! 1df2143b3f0cb1ce22d2cfa583874fb2  gcc/tree-scalar-evolution.h
! 29a357d0cd24c2b1df800cbb0ceef84e  gcc/tree-sra.c
! af72f578e72eb426bb6bf973587a6e5f  gcc/tree-ssa-address.c
! 2961f3256d67a49c5142d98c7daf1b0b  gcc/tree-ssa-address.h
! c7efb6947bfc86627c43b7631b03b6c9  gcc/tree-ssa-alias.c
! 50cabeffb777e9a0048455215798d0e1  gcc/tree-ssa-alias.h
! 624afd9211981cd922160b7ca33f4698  gcc/tree-ssa-ccp.c
! b93c5df974f247818960f3e25694de0a  gcc/tree-ssa-ccp.h
! 29fed089ff82dc896553710e3a7710e9  gcc/tree-ssa-coalesce.c
! 3dc60007c5d00a63cdbaa8ef066efb47  gcc/tree-ssa-coalesce.h
! b765c5a1022443044c03e0fcae8eda3f  gcc/tree-ssa-copy.c
! 1584b70280e8cf485ee6bdfdaefba0cd  gcc/tree-ssa-dce.c
! bdaaee6c48f269500d1c76712f0caf86  gcc/tree-ssa-dce.h
! 8b9f43aca79a64df551ec28e6fa30ae2  gcc/tree-ssa-dom.c
! 43fe745538b891ae59c3dd8f125ed47c  gcc/tree-ssa-dom.h
! fcf371db4cdac403edbb5ecc1cac91af  gcc/tree-ssa-dse.c
! cedeb40fa8dc851a09938f6034e628c0  gcc/tree-ssa-forwprop.c
! 9a0ef789018a8eed18431615fc075af3  gcc/tree-ssa-ifcombine.c
! 98c63bbf0ac6b3825216eeb39444b6b5  gcc/tree-ssa-live.c
! 511bbde3fb207a200f12733094eaa532  gcc/tree-ssa-live.h
! c687c45eeec499f866ea3dc172ded6cd  gcc/tree-ssa-loop-ch.c
! da467bf0a58425a7e437393a71122636  gcc/tree-ssa-loop-im.c
! c6ed2b4a0faf6267425f570dd0f42f09  gcc/tree-ssa-loop-ivcanon.c
! dbdcf3716a4415e0023d2a8cc50c3c5f  gcc/tree-ssa-loop-ivopts.c
! b24a34706d28c13a5c55498688e0f588  gcc/tree-ssa-loop-ivopts.h
! d8daffca48c8b9ab6c7a7221b0bf3ba5  gcc/tree-ssa-loop-manip.c
! 6787dc4f74dd9bf5d729f97deb59dd5b  gcc/tree-ssa-loop-manip.h
! ea9a5bdc5270de8dd4bf9416101cf97e  gcc/tree-ssa-loop-niter.c
! fc4786e4c472002b80266eb3e28ad56f  gcc/tree-ssa-loop-niter.h
! be566f69fed68625ba16bcf888b31312  gcc/tree-ssa-loop-prefetch.c
! 5a195f9a1cf86b867e2d5dc70089b110  gcc/tree-ssa-loop-split.c
! 176933e1ce86bcabf1a33c149f14796e  gcc/tree-ssa-loop-unswitch.c
! 7114410589ddaa7669db456897cc5ae6  gcc/tree-ssa-loop.c
! 3ed2e9566c2046e9841d3694ecbc85a3  gcc/tree-ssa-loop.h
! 1ec4e658f131a2b0de5480d5a404a8d5  gcc/tree-ssa-math-opts.c
! 686469c12c5b0b9858a19d6be32db183  gcc/tree-ssa-operands.c
! 53e8a3e97330ba181edb03d5cbad277e  gcc/tree-ssa-operands.h
! f3e4edc8603185c711541a617916d3dd  gcc/tree-ssa-phionlycprop.c
! f51fdf0f76e21a5cae07dcfda480c88d  gcc/tree-ssa-phiopt.c
! f21471f7529ac6d5323b6d1e6ad2152d  gcc/tree-ssa-phiprop.c
! a7a1c92875fef0ab7c9a1eadf1956864  gcc/tree-ssa-pre.c
! 702e2d0100d8be037b0538a81a05aa07  gcc/tree-ssa-propagate.c
! 818e7e255ada490053c8685b8323f07b  gcc/tree-ssa-propagate.h
! 45a48d8263308adc7a741573f5b0699b  gcc/tree-ssa-reassoc.c
! e205dd51f1e896e66f13dcb9ac31a874  gcc/tree-ssa-sccvn.c
! 300e778ffea51f198c086f5be52a4978  gcc/tree-ssa-sccvn.h
! c2fbccd0fc4bd7fd2f03ff926418cfaa  gcc/tree-ssa-scopedtables.c
! 670c490967a3463f58cb8e4381a5488c  gcc/tree-ssa-scopedtables.h
! a40b0cfb359cb2a010d76f22f61db81c  gcc/tree-ssa-sink.c
! be75324532d12a74f94faa8f95e34ccb  gcc/tree-ssa-strlen.c
! d73e873d76f34bec090783585e86bf67  gcc/tree-ssa-strlen.h
! a3903240237b103b7e8beaeb5028618c  gcc/tree-ssa-structalias.c
! e549bf0b1305de51abfd651d2a9d7fc2  gcc/tree-ssa-tail-merge.c
! 5c94cdc798a80b3e229a1f4133946e67  gcc/tree-ssa-ter.c
! 247a650230c7d35508b2ebe441d65830  gcc/tree-ssa-ter.h
! 14fd92d830f3c9e6755dd7944fcea08a  gcc/tree-ssa-threadbackward.c
! a77853ef52d48b8ec3fa737f3e034869  gcc/tree-ssa-threadedge.c
! e8fc403b81e4a7fdbd073ce71eb45e1d  gcc/tree-ssa-threadedge.h
! b56163f85abb92ad0171f74e588ed7c0  gcc/tree-ssa-threadupdate.c
! 96435771448e811fca9a79e7c04c50dd  gcc/tree-ssa-threadupdate.h
! bcf044402b3dfce498ed64a240aca078  gcc/tree-ssa-uncprop.c
! 45842e3a0183c230915d8f2e0e5258f8  gcc/tree-ssa-uninit.c
! 727909e0f8537aa19582f0386525eb1a  gcc/tree-ssa.c
! caea81e6f2839d094a100791fb9ec6ae  gcc/tree-ssa.h
! 2b944d03c500740eabfb356744b88293  gcc/tree-ssanames.c
! 1b87e3247b58babbed39ff66bef600b8  gcc/tree-ssanames.h
! 8193a7f9aaf5116eb0c34b19ca038cf2  gcc/tree-stdarg.c
! 2135d8d0c4f5b9c2ff2504e907dc874d  gcc/tree-stdarg.h
! d6c0881bf2c60f082f56b82748b73896  gcc/tree-streamer-in.c
! 9edbcc443c1b9ab59b4e66ea749f7e86  gcc/tree-streamer-out.c
! c456a11cada23fb2127f5259f4537e34  gcc/tree-streamer.c
! d9a2bd6dded27bebc37d7c2bc156524d  gcc/tree-streamer.h
! 5a2c15ae6cbbe77d1089f3f4523d531d  gcc/tree-switch-conversion.c
! 5906b90c55e0463d667d5af5e8379b3c  gcc/tree-tailcall.c
! 415924c947f695d67d6f4410150a0b53  gcc/tree-vect-data-refs.c
! d2beb1efc36c00971206cdec9e53e253  gcc/tree-vect-generic.c
! 91fc7e04bb827833ad082ad8bb75fc9e  gcc/tree-vect-loop-manip.c
! 37523bd95fcee5c1a9c9975d3268122f  gcc/tree-vect-loop.c
! 1df304065324e663625d332fc94ba156  gcc/tree-vect-patterns.c
! 19093338ac933a7ebf2dc0c402a36473  gcc/tree-vect-slp.c
! 8708fbb5495f5583bf93eeb3b8071c5d  gcc/tree-vect-stmts.c
! e035d135a4ebda8d67b856410b198921  gcc/tree-vector-builder.c
! fbd200943bb098b7b20bed8aca29dcb0  gcc/tree-vector-builder.h
! 4a231e763a7f6f010133585b68978eaa  gcc/tree-vectorizer.c
! eabe969c9db0dd9c094c1513d2802d7b  gcc/tree-vectorizer.h
! f66f689ea1740b2bcf5f3f82394cff69  gcc/tree-vrp.c
! 1e25c89f27af241e417f5e2d758fa93a  gcc/tree-vrp.h
! 29126e32c3f81acb59e7a9484ef7073c  gcc/tree.c
! 73344dcb00ff6e62d367712374b32414  gcc/tree.def
! e9fad7d27723d80942e732e31b33b0ab  gcc/tree.h
! 9df11f16b55536bbbdb8d4febc6319f5  gcc/treestruct.def
! 1ad3fdcbf70aa43b2c9312df6e814061  gcc/tsan.c
! ef6f8fd7131e05972fe682fe7422638d  gcc/tsan.h
! a4e170d4e8c86607a4b9e22c3598e304  gcc/tsystem.h
! 6c3d50194fda6cbfc870c0c9a774222e  gcc/typeclass.h
! 9e0442dd1d63298fb1490110242b73db  gcc/typed-splay-tree.c
! 29babf320d2ffec51f41883b0aac6b3c  gcc/typed-splay-tree.h
! f0ec4cd2c5df8bbc42cfd9658a233885  gcc/ubsan.c
! 7f926c1ef961ec4036cf1ffe73b73fb0  gcc/ubsan.h
! bd2c43c15d0101aa9e927bbc89472dec  gcc/unique-ptr-tests.cc
! a869387a76b5ec77b926a3c5fc080e99  gcc/valtrack.c
! 2aab7148d720804ec91b091b4f33995c  gcc/valtrack.h
! 04c59403cc59dd3d9878eda94285e090  gcc/value-prof.c
! ea1edc6797e654a0deabe1cfdef1039a  gcc/value-prof.h
! 661bcc2313898cf27cb75c156ba33147  gcc/var-tracking.c
! 29c6953513705a648f049efa599865bd  gcc/varasm.c
! 3bba6cf1d877e25e32ba561be9844970  gcc/varasm.h
! aa08183bbee5429ddc2ed4ca894a633e  gcc/varpool.c
! 08677e5c9772c4d0129648f259eae830  gcc/vec-perm-indices.c
! 4bd1292142bab0370fab471a56be4579  gcc/vec-perm-indices.h
! 2480103327e75e1b2ba0bdc18b21327d  gcc/vec.c
! c0af0788917acbed69be12c102c6cc5d  gcc/vec.h
! ae1d46990e94e55031e43886e5eb239f  gcc/vector-builder.h
! d3423359c8bfd615274fffedfd6e224a  gcc/version.c
  206ce76c6ce744048f99fdcc938dc713  gcc/version.h
! bd908587aa86e13de9b43c92158b2654  gcc/vmsdbg.h
! 284d2b1e7808087cf6ee2865d7ae5d3e  gcc/vmsdbgout.c
! 609a0933243982d8ed063464e2eda9c1  gcc/vr-values.c
! 494d1cece340246b2f88fcb08390e32c  gcc/vr-values.h
! ed635f0900933cab641be37c384ad5b3  gcc/vtable-verify.c
! 6e9e207b95a2b3a4c6e796dde85573cf  gcc/vtable-verify.h
! 2e338cecada0820a3745276de5fe276e  gcc/web.c
! f201eaf3a05a76ee9e9aebfa200dbd44  gcc/wide-int-bitmask.h
! 4f391d552fcb9a89024be9f1bd9c75cb  gcc/wide-int-print.cc
! 7d5c19ce5955d16dd5c09da10bbcc3ea  gcc/wide-int-print.h
! fe9e18c439a31c611d835fc962b19fe0  gcc/wide-int.cc
! f5153b535728560e3880688e236fff93  gcc/wide-int.h
! 9a63654193e6cbafcc12996b4a8ebeb4  gcc/xcoff.h
! e21f4268bb304b5533df2cac46df25ed  gcc/xcoffout.c
! f2988b9b6e6e66e3c09aa846bb0a3f90  gcc/xcoffout.h
! 281e10e4435c7cb907b2827fb61cc3be  gnattools/ChangeLog
! 7986b2a0505087ef1c51ed6d14c087bd  gnattools/Makefile.in
  c59f18e88cbf4b04095185094daf9a84  gnattools/configure
  eb3f980bf11ec11e25ddc6f29983830a  gnattools/configure.ac
! f708363417f9f539b140c788d00f544d  gotools/ChangeLog
! 5af1e762ec9fd76b4e30859e71d6fc84  gotools/Makefile.am
! 3cf4a50693efbeba28443117be009e52  gotools/Makefile.in
  7e23031e2e274aaa07b61c1e8f18dc99  gotools/README
  5044050ba43f94607253851087522f3a  gotools/aclocal.m4
  0fb2c6f51fa8ca46b7b719a84c48eb70  gotools/config/go.m4
! 3c485b1b80bb892a818fdf1f652a7d0c  gotools/configure
! 5a3c944b0134a1b928ca32a6fd64f63a  gotools/configure.ac
  c4e8176c1964a5ebe0a55900f2141299  gotools/go.1
  eb2aeb3a6cffe7b26a8f1c8a2da23dcd  gotools/gofmt.1
  59530bdf33659b29e73d4adb9f9f6552  include/COPYING
  d32239bcb673463ab874e80d47fae504  include/COPYING3
! 138253dca9de4a602ff27f427a9319c7  include/ChangeLog
  4263432a72ff47ed8bf420208ee7eea5  include/ChangeLog-9103
  a43d76108493b20da790f953f829c6a5  include/ChangeLog.jit
! f70613c5e950c483a27bfa7eb0402116  include/ansidecl.h
! 35a9e2ae2c1f5c00c6d7566b20a6d947  include/demangle.h
! 7b9b0530aeece7f59114c1099618362d  include/dwarf2.def
! 2e319cf6885cada567a107c7d4edb71b  include/dwarf2.h
! 0109815bce024e5a11a37c6adaec69b1  include/dyn-string.h
! 1b996be692169955139a5a11164368ff  include/environ.h
! b5e4c5a63f55f91d209087edef1340eb  include/fibheap.h
! 1cc64c7ec7b7065e8ae4a879369655e4  include/filenames.h
! 71a8377cc3d3defc2979a148c94532c7  include/floatformat.h
! 8af22d46ec3fffc1bd07722dd54e145f  include/fnmatch.h
! 7c956dbf8c54b3b9c37652cd683b3c91  include/gcc-c-fe.def
! ce92221b99f9826ac4855837651c3661  include/gcc-c-interface.h
! fc46ef2f51a7805de53ce2f3c391ee1e  include/gcc-cp-fe.def
! 23530eb693c7ef001eebab87cd044c43  include/gcc-cp-interface.h
! e8bf8dd17f26a9cf31a3a56106772180  include/gcc-interface.h
! d985ab01898df8d0fd88d101cbad7f25  include/gdb/gdb-index.h
! 30766584300fbdc2e992173ff184dc8d  include/getopt.h
! 49c6ee784aebcd847fdb3fbff82ee76e  include/gomp-constants.h
! 810af656d62bf4d126e8ac209c33fb19  include/hashtab.h
! 24e907d23829b166ecd782579cc8ea10  include/hsa.h
! b3c5fa00fb401092d926b6443579d686  include/leb128.h
! 6265413b4ad7b4acbb600439fc255766  include/libiberty.h
! de94e5207678971c47448f1ef37dcf47  include/longlong.h
! 355be0b1dc4559409ec784e971f279a3  include/lto-symtab.h
! 4f03f3474216e21ef5cabd131bd5e78b  include/md5.h
! de14c7a5d8d1ce55fda864a08a3d1990  include/objalloc.h
! e5b2d5baa5d942c1eef8155cca8d8795  include/obstack.h
! 84eb7b0d513927d61ec129266ca1c5a4  include/partition.h
! 1bd1bbad5babee6aef2ba372bcc92a84  include/plugin-api.h
! 2473f072b54d2d1dc3e12b495675a2bb  include/safe-ctype.h
! 782fa4a3466cf64a9bc7c19a9390fc73  include/sha1.h
! cc08cd4cddc61e66bc488bd71ebc3572  include/simple-object.h
! 9813764968d64c4bab37874b2e3b661f  include/sort.h
! 4aeeb52aa52171b54dd3cd19dc28770d  include/splay-tree.h
! 853f8c73e25aebb37bee7ecfef2008aa  include/symcat.h
! 3695f27151c3e8b53ff0a11c93175e8a  include/timeval-utils.h
! 952a4f5b94d29f315d83761071d0d3e9  include/unique-ptr.h
! 766ef7dee3446f81f776c6092ad27f8f  include/vtv-change-permission.h
  53bdfdb5cd3c0c7831611602041cda52  include/xregex.h
! 14385d807191a7ad0a4a4a103756a3a6  include/xregex2.h
! dcaace4a60bd6d7cd29251ac4849575d  include/xtensa-config.h
  361482dd6b5b5eb7090fff3986fba68a  install-sh
! 5be79c41a05922c98aef3d9ad1c665d0  intl/ChangeLog
  cad1d6fab2274517783de7433c0faa74  intl/Makefile.in
  6ec998bb4716c744bf8185e607f69301  intl/README
  76ca170a525d5b84d90f0478fe788931  intl/VERSION
*************** cad1d6fab2274517783de7433c0faa74  intl/M
*** 58183,58190 ****
  d4abe82ea322701d2385778a2fcd0804  intl/bindtextdom.c
  56f6438cd2c28d67b1bfa7e076f63acd  intl/config.h.in
  8a751062d7db9b6e8163667e5626fcb5  intl/config.intl.in
! 258712fb6b4caec5206fbfc6d5c7dff7  intl/configure
! 13576a23b957f53b84954feaf7908d49  intl/configure.ac
  ff5c358b1507e45a2106b23b7e6c70a3  intl/dcgettext.c
  81b58accbd88cd8159471d322723c42d  intl/dcigettext.c
  0cfc94e602bc20d958f014c77ebf357c  intl/dcngettext.c
--- 62107,62114 ----
  d4abe82ea322701d2385778a2fcd0804  intl/bindtextdom.c
  56f6438cd2c28d67b1bfa7e076f63acd  intl/config.h.in
  8a751062d7db9b6e8163667e5626fcb5  intl/config.intl.in
! f49d79d0eff337e45e38c7d37f349628  intl/configure
! 6482fe64d6721cf11accf8e30ee72e98  intl/configure.ac
  ff5c358b1507e45a2106b23b7e6c70a3  intl/dcgettext.c
  81b58accbd88cd8159471d322723c42d  intl/dcigettext.c
  0cfc94e602bc20d958f014c77ebf357c  intl/dcngettext.c
*************** d50a8c6c5b41089930accbdce767d3c0  intl/p
*** 58217,58283 ****
  b4758a0194e3e41362b939911472ce62  intl/relocatable.c
  bedade7bcfc3bc5eb09a2c6844f637f3  intl/relocatable.h
  43f287d082528203fc85c1d2d81bf30d  intl/textdomain.c
! 667592b34a262e9ae2c75b66c55d929b  libada/ChangeLog
! 85a2c02d6be7c7bbef19b47329e3f001  libada/Makefile.in
! e5e690bd9711d1a0ae3494a605a70916  libada/configure
! e29be9defcc56c307519b82f9be9bf6b  libada/configure.ac
  46d3fe6da7a771cc2d5420c4137a6861  libatomic/.gitignore
! b88e69ba2978aa781b28dc5e4f54aed4  libatomic/ChangeLog
! 0e2617e8dd9c8750a069dec0be5238aa  libatomic/Makefile.am
! a4b4277b02f2c77ee920b5da5684fc9f  libatomic/Makefile.in
! 361fca640a8f8ae0534948c6464cd031  libatomic/acinclude.m4
! cbeb120f3cb8c120de8a74a3dee23e10  libatomic/aclocal.m4
! 86968fd3cc9ab0d790ab1dcd2c082330  libatomic/auto-config.h.in
! 78a7d4808f46537eb090d18fb8ee8e82  libatomic/cas_n.c
! ac791ed35d1bdf32bc121e2119e386ee  libatomic/config/arm/arm-config.h
! d3927070789fa35a907969dce0783c4f  libatomic/config/arm/exch_n.c
  6b272347b6495b829ff036ddf4d65e93  libatomic/config/arm/host-config.h
  db43cf5a187a91251ef3198570679f95  libatomic/config/ia64/host-config.h
! 7d3f50d3d72f9d715d9403df0c33d6a9  libatomic/config/linux/arm/host-config.h
! 6c915abd41f52db61de0b9051a6e6d80  libatomic/config/linux/arm/init.c
! b045981f1596898d6e97a9d6ac3edbc6  libatomic/config/linux/arm/load_n.c
! 49c6522159e708384e089c54d694e3f6  libatomic/config/linux/arm/store_n.c
! 00e68c755eaec9e8dd62bf7b57f3a76e  libatomic/config/mingw/host-config.h
! 60ca3b1f1cc337f05cba84f2f4b5d16e  libatomic/config/mingw/lock.c
! 1ad8078cc374fad569e7aebbe3adfdc8  libatomic/config/posix/host-config.h
! 44dfbc1055ccad005ab28fda2e62b538  libatomic/config/posix/lock.c
  d04f86e742ddfedb71fb4a3d0ceede39  libatomic/config/powerpc/host-config.h
! 4db19ba7f910c89ddcbb4aec36832042  libatomic/config/rtems/host-config.h
! c3178d6b66484de4ef9336f2e82647fa  libatomic/config/rtems/lock.c
! b2ef19d0807b749f16df8f44d8336643  libatomic/config/x86/fenv.c
! e78ffe700baea724b0a891a96e9e67b1  libatomic/config/x86/host-config.h
! f603ed775018887a9778942f081b8163  libatomic/config/x86/init.c
! 9c7c26d950ce75cfc19e929595374e20  libatomic/configure
! 449b252221ed88ce03289a80f8263985  libatomic/configure.ac
! 5a68cd0599bd2fb35dfb3e64e9f8f454  libatomic/configure.tgt
! 0d0291952f3d023962d0562ef683caa0  libatomic/exch_n.c
! 64680733e3d789032a74049ddeacf961  libatomic/fadd_n.c
  ee6f02fad9bd551a906477f16740578f  libatomic/fand_n.c
! ca486920d573b7d9f6fbf4f879db07dd  libatomic/fence.c
! 894f6f37c82aba2cc4cf5b378de3c954  libatomic/fenv.c
  2939db87e049993b583497188f079e6d  libatomic/fior_n.c
! 19826d75383cf71dbf051e8174c4a628  libatomic/flag.c
  b3ccae58518e27bb730ed84c99a2eb0c  libatomic/fnand_n.c
! 3378971e9fc59549a9c92a7dd0b3d8b2  libatomic/fop_n.c
  834a4e99e9b5231aaa54e4802aecb241  libatomic/fsub_n.c
  fb7579412eac2bf65459985ea4c7f320  libatomic/fxor_n.c
! 5dbcbeebb6b3529e3b5388054e2fa602  libatomic/gcas.c
! 94332504af30678963cec7100b6dc7b2  libatomic/gexch.c
! b07c4c22a8c6c330afb676286107766d  libatomic/glfree.c
! 44b15415ee72856a64c546db100f28c2  libatomic/gload.c
! 8d80c8b0f460f02d46bd6eacb954b464  libatomic/gstore.c
! de916065805ae6e1bafa27dba0eafb12  libatomic/host-config.h
  0e7ef9ed2b60ec1c9afc38701d815f6c  libatomic/init.c
  2fe463a1aa0855eab0961f927f300752  libatomic/libatomic.map
! 828a64a8a68fcc68d2e0314ef7034229  libatomic/libatomic_i.h
! 7c9167a5e72caa712767c617a5cbca36  libatomic/load_n.c
! 3a43ca03aeb7ce309af7041b00318099  libatomic/store_n.c
! 341ecd2f275ae5a22103860234f13a04  libatomic/tas_n.c
  c11bb77f9d8171fb781ba38a102c5f70  libatomic/testsuite/Makefile.am
! 0dc4de9a8c3e00a0711c64b3c3fb3c92  libatomic/testsuite/Makefile.in
! c950270407e1c681d87e5373b62b33d1  libatomic/testsuite/config/default.exp
  3e77a79fd1e00a1f4e5fbf507474e1e5  libatomic/testsuite/lib/libatomic-dg.exp
! 38581fc85fbde23d8b56f0720b2f74af  libatomic/testsuite/lib/libatomic.exp
  6b8763cc8b07ca01040138d742a984f0  libatomic/testsuite/libatomic.c/atomic-compare-exchange-1.c
  773f995ba0a3ab509251361826397852  libatomic/testsuite/libatomic.c/atomic-compare-exchange-2.c
  71f01b6652a351daec3cc54b70b2468f  libatomic/testsuite/libatomic.c/atomic-compare-exchange-3.c
--- 62141,62209 ----
  b4758a0194e3e41362b939911472ce62  intl/relocatable.c
  bedade7bcfc3bc5eb09a2c6844f637f3  intl/relocatable.h
  43f287d082528203fc85c1d2d81bf30d  intl/textdomain.c
! f3f7bda11ab839fe50e66a756374bca3  libada/ChangeLog
! db6a3dbf8982da7bdb6f5751dbd4220d  libada/Makefile.in
! 93014f4dcca5072ee02feb9d5e0b9332  libada/configure
! 542c75154d0bab6cb8cf52e857cbee5f  libada/configure.ac
  46d3fe6da7a771cc2d5420c4137a6861  libatomic/.gitignore
! c9698badeaf790db4d2790e14b0d04ea  libatomic/ChangeLog
! bab8e570f9b81dac64cd8140e7293848  libatomic/Makefile.am
! 016c688d522ef7663f914e8c2c61af54  libatomic/Makefile.in
! 27dd743f20b2729e63803be4b6d17776  libatomic/acinclude.m4
! bbb42fe939298369ed46dc8f9c9247b3  libatomic/aclocal.m4
! b741b38c451feebdcd9aedce6e37b702  libatomic/auto-config.h.in
! 6e8498737960c6fa53cd637c2128c146  libatomic/cas_n.c
! ef39b549196035615d28f1e8778f69d2  libatomic/config/arm/arm-config.h
! 2295de9cb7518ef70c8160cac4593a4e  libatomic/config/arm/exch_n.c
  6b272347b6495b829ff036ddf4d65e93  libatomic/config/arm/host-config.h
  db43cf5a187a91251ef3198570679f95  libatomic/config/ia64/host-config.h
! 0a8ae18d6cf8b6111eb650aa3dff05ca  libatomic/config/linux/aarch64/host-config.h
! df8766778dd424717215ba8ea5d4c275  libatomic/config/linux/arm/host-config.h
! 23f42300a27ba0f20d2dda45f92fe5b1  libatomic/config/linux/arm/init.c
! 5fb9c2f2469357b7f763419d51409354  libatomic/config/linux/arm/load_n.c
! 092e5ab43d335d09fed1c9518c14b39c  libatomic/config/linux/arm/store_n.c
! 381cfc1b9aef2ca3e9d2cec1c9290907  libatomic/config/mingw/host-config.h
! f61efb0ce17c8055f1493b0bdffc1925  libatomic/config/mingw/lock.c
! 33a0cf3845117f1d54d95f4583773568  libatomic/config/posix/host-config.h
! bb4ca22f9437644928e082e6cb3bf5cb  libatomic/config/posix/lock.c
  d04f86e742ddfedb71fb4a3d0ceede39  libatomic/config/powerpc/host-config.h
! 4e103ff4a9c2e9128912bfd3320cb979  libatomic/config/rtems/host-config.h
! 5b12e87c113261066be9ae46f6e6c21f  libatomic/config/rtems/lock.c
! 0ab581d09f5c9f35fec15bf82097e678  libatomic/config/s390/exch_n.c
! 314380f1bdc39e8fd18d47ecd444349d  libatomic/config/x86/fenv.c
! d5499ef0cdc2a3ece18d23aa1924f26f  libatomic/config/x86/host-config.h
! 8c357c770abf452a9e048c1c760fb67e  libatomic/config/x86/init.c
! 405849fce69e46e708821c861987cea0  libatomic/configure
! a6171e8793791f95b15ab91c746b11ec  libatomic/configure.ac
! 9541e5ae9ca8e45e4ab7ee8455adb584  libatomic/configure.tgt
! 2118cac789d53fc14271f5baf5502e02  libatomic/exch_n.c
! f5d2192b28b04055c6baca20b4028bbe  libatomic/fadd_n.c
  ee6f02fad9bd551a906477f16740578f  libatomic/fand_n.c
! 5ac5615e93630d0c7c8e1a86f047c521  libatomic/fence.c
! 57aa4d758303dde9e67197c66c4afab7  libatomic/fenv.c
  2939db87e049993b583497188f079e6d  libatomic/fior_n.c
! 7e673521f8948779736b73d837d8e646  libatomic/flag.c
  b3ccae58518e27bb730ed84c99a2eb0c  libatomic/fnand_n.c
! 2c84758a490fdffac76a4ab1f5665f0d  libatomic/fop_n.c
  834a4e99e9b5231aaa54e4802aecb241  libatomic/fsub_n.c
  fb7579412eac2bf65459985ea4c7f320  libatomic/fxor_n.c
! 3e9036986ce50095a7bb06427d36f84a  libatomic/gcas.c
! e3b550e2f2784c4a8f76ca41a366b1f1  libatomic/gexch.c
! 7e65f731ca8484eb6c9e0a0c96a43b2b  libatomic/glfree.c
! 0dbe413608ece0c53e7ef46c3c05d9e0  libatomic/gload.c
! e9daa13b55d2252846c465bf04e3fe7f  libatomic/gstore.c
! 2d0249c3cd6ab3703ee28e1c1caf2e59  libatomic/host-config.h
  0e7ef9ed2b60ec1c9afc38701d815f6c  libatomic/init.c
  2fe463a1aa0855eab0961f927f300752  libatomic/libatomic.map
! 6f7d49c851e6d0563fe1e5defd19403a  libatomic/libatomic_i.h
! 29265847e2d23fe3bce309405770a660  libatomic/load_n.c
! 139ea0130bd0312a7562c9b8df9bbf59  libatomic/store_n.c
! b2394d853e4ee942d6505102a27b0010  libatomic/tas_n.c
  c11bb77f9d8171fb781ba38a102c5f70  libatomic/testsuite/Makefile.am
! a4523037c537b58368fa79417ee62e62  libatomic/testsuite/Makefile.in
! 13bdde3a503be855576184442e5b6c40  libatomic/testsuite/config/default.exp
  3e77a79fd1e00a1f4e5fbf507474e1e5  libatomic/testsuite/lib/libatomic-dg.exp
! ef115b95fb952cec3c4457dae5a7c6a7  libatomic/testsuite/lib/libatomic.exp
  6b8763cc8b07ca01040138d742a984f0  libatomic/testsuite/libatomic.c/atomic-compare-exchange-1.c
  773f995ba0a3ab509251361826397852  libatomic/testsuite/libatomic.c/atomic-compare-exchange-2.c
  71f01b6652a351daec3cc54b70b2468f  libatomic/testsuite/libatomic.c/atomic-compare-exchange-3.c
*************** c03a072efac9b30f8f8429ac52fd246b  libato
*** 58306,58642 ****
  8a7308fda7ed1543cb9e3be0f8e47bce  libatomic/testsuite/libatomic.c/atomic-store-5.c
  40618200985a15bcba64f871863da498  libatomic/testsuite/libatomic.c/c.exp
  97b0c9cdfcb733664bdf4efe0f5dc449  libatomic/testsuite/libatomic.c/generic-2.c
! b1fa4188808da237c034a12a86cf7910  libbacktrace/ChangeLog
  eb3a88b53140eb234a99a4b3a55e56bf  libbacktrace/ChangeLog.jit
! be5cf12569500d943e2cb547bdf7a602  libbacktrace/Makefile.am
! d470ca14200db6955e2aa4b9e0bdb4ad  libbacktrace/Makefile.in
  1987c0495aeee1bc47709f399772173b  libbacktrace/README
! 64efbba7afa1d05c1765b02dac54dba2  libbacktrace/aclocal.m4
! 5a97411a1a73b100cf89e8af2b805aed  libbacktrace/alloc.c
! cc945b909b09185e82df5565f447ebed  libbacktrace/atomic.c
! 9c992a3add81080c23a5f76fa33b4288  libbacktrace/backtrace-supported.h.in
! 21d0c2f3b8298eda135bee1623f526ac  libbacktrace/backtrace.c
! 086592f2adf60c4b3cbce50ef87c3c17  libbacktrace/backtrace.h
! ea59e6affbd3dfdc4d250a1016205286  libbacktrace/btest.c
! 5b4bf4c2024de747eca639dda1fd0a12  libbacktrace/config.h.in
! 795c4fbfd104d584f9e29969ebcaa030  libbacktrace/configure
! e99e9036b14ccebd7aa36958fe6a41a1  libbacktrace/configure.ac
! 6cce3ef18b54d7447814e3f615d5628b  libbacktrace/dwarf.c
! f328ad0ea404e0c1dffcfc486082d1b1  libbacktrace/elf.c
! 75591e75e1d21192dad40f60c1c41eaf  libbacktrace/fileline.c
! 51926f4b28baf759f214371541616bd8  libbacktrace/filetype.awk
! 361354df8f6239a47e807cfafe5b8e2b  libbacktrace/internal.h
! 27b5a8b052f70a64dbcfd8961edacf88  libbacktrace/mmap.c
! 75aea59c095be83bb57c6779ed509592  libbacktrace/mmapio.c
! 10bddb213b8840d79d8eea82b82d63f5  libbacktrace/nounwind.c
! 831656fc96f8ff3db9ddc677e21dc5f6  libbacktrace/pecoff.c
! 28a5d0d0f43746a3843862682fdaf48c  libbacktrace/posix.c
! f3bfa4aecf3a51dd7a8e831c188029c1  libbacktrace/print.c
! d147867e51296ef1d846b8a794433004  libbacktrace/read.c
! 3c3f414f8eeaefa40c03d715f2ef90d5  libbacktrace/simple.c
! ba2412bc59c92c67dbc379a84dd9f9e8  libbacktrace/sort.c
! 2fbbbd9fd16e0d40ff744a53d93672f4  libbacktrace/state.c
! 2659132b1c1fb664296bed58947a1327  libbacktrace/stest.c
! 0c34f70856e684a5a2d88cef4d26a433  libbacktrace/unknown.c
! 7a139742f98fc9574b714535d7f1f324  libcc1/ChangeLog
! a046123da46f45ef05c23464bda5ea4c  libcc1/Makefile.am
! 3b8fea7df7b2debbea080163365ba6ae  libcc1/Makefile.in
  5f253fc15bb29a40419f12ce42f92147  libcc1/aclocal.m4
! 32d43337a8a89f57a798f01e92d8a474  libcc1/callbacks.cc
! 986cd35281253252d52d38a839bdcc6d  libcc1/callbacks.hh
  9d81ce1461f24e4af7c8639d94f06789  libcc1/cc1plugin-config.h.in
! 4d2da8fd4e7c184bb32ca60f025e4f24  libcc1/configure
! c04a64dcf539d1a1b0fa85fa90dd66d8  libcc1/configure.ac
! 8e2e71449878c03083f063b27d1ed55c  libcc1/connection.cc
! b8cc2f74e62b1e39c0ed98b672edcbe3  libcc1/connection.hh
! ea2b506bbf13c56790642fd05d3b96cb  libcc1/findcomp.cc
! 54e808101c83de5c80b93db5948f76f6  libcc1/findcomp.hh
! 5bba56bb165dd77c2ed1ce032afaa00e  libcc1/libcc1.cc
  99b3a25ce17ed584d9f0aa42b4713938  libcc1/libcc1.sym
! 6a49289956bbcb25d81ca99e025ae2aa  libcc1/libcc1plugin.cc
  75503db6a0981a95d9c29d9607b29380  libcc1/libcc1plugin.sym
! b5d5e4696b1bba942ef91146880fc6ad  libcc1/libcp1.cc
! 135594059ba562da343b742a68d83b73  libcc1/libcp1plugin.cc
  75503db6a0981a95d9c29d9607b29380  libcc1/libcp1plugin.sym
! 736fdd03ca1adf0b003d0e0fcfb6f1fa  libcc1/marshall-c.hh
! 7b172843f97c3b7dd6c47e0666d4923f  libcc1/marshall-cp.hh
! fde8ade9e9c2e66ef85c81dae978bf01  libcc1/marshall.cc
! adf6e179394cf6ed80e1c2c7fcf92d1f  libcc1/marshall.hh
! 34176a4500ac0868edb99e407ac08d09  libcc1/names.cc
! c66f2f1d1887d636535fd09532a98f2f  libcc1/names.hh
! 4e2e588c20bbaefa4ce3a333e0ba9a98  libcc1/rpc.hh
! e0b03ce59463dc7215bdec25060a78fe  libcc1/status.hh
! 883e47907e8fe25752928170cbfd04b6  libcilkrts/ChangeLog
! c60cb24ed9572dea78562531f0136e1d  libcilkrts/Makefile.am
! 6e9956a8b6e5fc457cc5ddb53701d8ca  libcilkrts/Makefile.in
! ec72a9778565ec08ebbe13cb95aa7245  libcilkrts/README
! 49cb389d7dff64b95e25b4d7e85c7ecf  libcilkrts/aclocal.m4
! 25dc8f37c52a7657cc1318797c2e0363  libcilkrts/configure
! 91a17f4cbc90b10e4ce7ec4106b65dea  libcilkrts/configure.ac
! 61b7389e182015ae1d68f27d53e10cfc  libcilkrts/configure.tgt
! b525d80111c9415a4a40edd78f6bb474  libcilkrts/include/cilk/cilk.h
! 6d0f32f8df4d835d649fd06f52d11360  libcilkrts/include/cilk/cilk_api.h
! 549c48ec5addff2fe1718cd3b2083f20  libcilkrts/include/cilk/cilk_api_linux.h
! 6d85a54df90ae6cf3b30abba406fcc92  libcilkrts/include/cilk/cilk_stub.h
! e58c55466cc0bd8890db350b627ebcf5  libcilkrts/include/cilk/cilk_undocumented.h
! 4254e253054a4eff84f031eaefdb5795  libcilkrts/include/cilk/common.h
! b3624edc9261d70f0a88ed05c286f4ec  libcilkrts/include/cilk/holder.h
! 0790a13811bcc36dd2b75d37802f4b32  libcilkrts/include/cilk/hyperobject_base.h
! d98e750f301cfb3e0f6dcb17686a7115  libcilkrts/include/cilk/metaprogramming.h
! 60a35026ee1bde7288695b70ff053c39  libcilkrts/include/cilk/reducer.h
! 2e68ffdb38a48861cadb6e4b448cb6c6  libcilkrts/include/cilk/reducer_file.h
! 6076312359cb25b789a566f9842cfb8b  libcilkrts/include/cilk/reducer_list.h
! d0d6317798e12751b8b49cfff7848c2d  libcilkrts/include/cilk/reducer_max.h
! c1ec73c1900eb4fb298b8207c4b3bec8  libcilkrts/include/cilk/reducer_min.h
! 246471a42934084c2ad93103e75834e6  libcilkrts/include/cilk/reducer_min_max.h
! 265696d18a22c28cfb8ad4f8daab191a  libcilkrts/include/cilk/reducer_opadd.h
! e14872842c2e18d77887d55a4bc7e2e1  libcilkrts/include/cilk/reducer_opand.h
! 883a2a9800982451c86c0faa75393941  libcilkrts/include/cilk/reducer_opmul.h
! 153d0b0392ed72d1c10071759ee9d107  libcilkrts/include/cilk/reducer_opor.h
! a434f774e05e61bde5f1a1d81753f4f4  libcilkrts/include/cilk/reducer_opxor.h
! 3654f034020d5812016dd7f4249f9a04  libcilkrts/include/cilk/reducer_ostream.h
! f8b65f044b99fb1fefc3a68291c1bd2a  libcilkrts/include/cilk/reducer_string.h
! 49811cf3cc4d1adc8b77aedf3bfb9f25  libcilkrts/include/cilk/reducer_vector.h
! 816f80092444c06da1d01735a379ac0c  libcilkrts/include/cilktools/cilkscreen.h
! 6e31b813d5f4c068eb91c66ecf4155b2  libcilkrts/include/cilktools/cilkview.h
! 64ea1bc99f445cbeb4a82ab87cce9a5e  libcilkrts/include/cilktools/fake_mutex.h
! 8a3fe268f6aeba0df1df87728bea80d3  libcilkrts/include/cilktools/lock_guard.h
! e50d40e209f9accac2fc2f8be5345ede  libcilkrts/include/internal/abi.h
! c9c2c11818da0c62e4a00696e788f694  libcilkrts/include/internal/cilk_fake.h
! 8796a720a2d0e7c9700ea62d7404f7c5  libcilkrts/include/internal/cilk_version.h
! 25b4813858fd781b2dc67bcc0ce17977  libcilkrts/include/internal/metacall.h
! cda2f1ad3ee1ddbb09c0b68093d38e03  libcilkrts/include/internal/rev.mk
! 37e2791e30f774e91285ca474483eb10  libcilkrts/libcilkrts.spec.in
! bb64a2c5bdc5d52bbd2d93f9b768f379  libcilkrts/mk/cilk-version.mk
! 600810b98cab1e9520d2fc0988f2c5ef  libcilkrts/runtime/acknowledgements.dox
! 870f46e3a7ea71e0f8cc101597d07169  libcilkrts/runtime/bug.cpp
! 0438075e27a33c5508366d4884fb72a3  libcilkrts/runtime/bug.h
! 84315f632c8d2e841f4b9e54f4e381ea  libcilkrts/runtime/c_reducers.c
! a1a4ca9416fa69d0b319a47bf893f18c  libcilkrts/runtime/cilk-abi-cilk-for.cpp
! 7d8f71f7d283d51e228f0c7e2102c42f  libcilkrts/runtime/cilk-abi-vla-internal.c
! 22dcde725b84c68ce57e555a4ccad4ff  libcilkrts/runtime/cilk-abi-vla-internal.h
! be199a3244284c35e4536991410adfec  libcilkrts/runtime/cilk-abi.c
! 5d05587e257701fbb89f5e7124155357  libcilkrts/runtime/cilk-ittnotify.h
! ad1490535a2dbbeb72503b5c5168a0f6  libcilkrts/runtime/cilk-tbb-interop.h
! ff4173c30eb364ff4a179e0a5b765a09  libcilkrts/runtime/cilk_api.c
! d5eb050cb5009cc20d378e164220238f  libcilkrts/runtime/cilk_fiber-unix.cpp
! 8b5444452ed10a4eeb920b6ef6c189bf  libcilkrts/runtime/cilk_fiber-unix.h
! 42138417e7c625afb65cb6242d20f1c8  libcilkrts/runtime/cilk_fiber.cpp
! 237d0b7985cb78605b17ed737899743d  libcilkrts/runtime/cilk_fiber.h
! 2447ddc32082c5719d19da095abee663  libcilkrts/runtime/cilk_malloc.c
! 0b6447f298842c7a9cd331e91fa59634  libcilkrts/runtime/cilk_malloc.h
! 61fbf2cde9c57b8c392b935078603148  libcilkrts/runtime/cilk_str_mem.h
! 6ab4654c1fc07e4969dc208a209c8b1e  libcilkrts/runtime/component.h
! c0f56eaf0c2666b2eab64272177ac60a  libcilkrts/runtime/config/arm/cilk-abi-vla.c
! 73cd6e9ec832cc8e914da5d4698db284  libcilkrts/runtime/config/arm/os-fence.h
! 75b17abeded44900494d3a9b8542277a  libcilkrts/runtime/config/arm/os-unix-sysdep.c
! 2faeba4c86593c1e37db71f1a55d2d35  libcilkrts/runtime/config/generic/cilk-abi-vla.c
! 0615e615c58aaf579b0cf1c10f728df5  libcilkrts/runtime/config/generic/os-fence.h
! 75b17abeded44900494d3a9b8542277a  libcilkrts/runtime/config/generic/os-unix-sysdep.c
! c0f56eaf0c2666b2eab64272177ac60a  libcilkrts/runtime/config/sparc/cilk-abi-vla.c
! ab2d7bca9f8a8218f59935809bc401ff  libcilkrts/runtime/config/sparc/os-fence.h
! 743554e88d58c67dc6bf444e88d25186  libcilkrts/runtime/config/sparc/os-unix-sysdep.c
! 9a48494212ea47d0dfdb894c4725dfb4  libcilkrts/runtime/config/x86/cilk-abi-vla.c
! d621f31f550b11d4094f496026872e9b  libcilkrts/runtime/config/x86/os-fence.h
! 655e3bd191be9d8265aa9bd8f91b5c0d  libcilkrts/runtime/config/x86/os-unix-sysdep.c
! cf703953d4396c8fcda1c72cec5c3306  libcilkrts/runtime/declare-alloca.h
! 1e403b55fa321f588b5cdcd328151cce  libcilkrts/runtime/doxygen-layout.xml
! f6f1ce9024f3e89d611333435b37be42  libcilkrts/runtime/doxygen.cfg
! a8f6ff64ee0fa7d9716975ae774d71de  libcilkrts/runtime/except-gcc.cpp
! 9d884b39b422635b0fca01aa18ea182a  libcilkrts/runtime/except-gcc.h
! ee0d0e21e7bc07a7a6b283fc47e710a4  libcilkrts/runtime/except.h
! 32c846d0f44591a1e7ce496492eeebd2  libcilkrts/runtime/frame_malloc.c
! 2dea573933ecf93af46e3f2191344239  libcilkrts/runtime/frame_malloc.h
! 9ced676ec36940f674f52c293efdf562  libcilkrts/runtime/full_frame.c
! 70b0bde7f422e3be26995c9b0146ea51  libcilkrts/runtime/full_frame.h
! 9c087fb8220ac4a7268192c176e7a55a  libcilkrts/runtime/global_state.cpp
! 2730fe74d46b18bee36cb46da36c3a06  libcilkrts/runtime/global_state.h
! 2fd9617712405673eae8547e48f0acf1  libcilkrts/runtime/jmpbuf.c
! efd4578344d3f1354a3919fe2e2b1bef  libcilkrts/runtime/jmpbuf.h
! 23877ecabcc5f18e4e75e178c8a3e814  libcilkrts/runtime/linux-symbols.ver
! 427b224a0ad5fcd0ce3a9a9f95e43ab7  libcilkrts/runtime/local_state.c
! 37a3690cd1fc5b26bc4bc643f69f1210  libcilkrts/runtime/local_state.h
! 57de9377e4726a61c048c20c217cef87  libcilkrts/runtime/mac-symbols.txt
! 93ab5ea938278474a8c1e592450e6eb7  libcilkrts/runtime/metacall_impl.c
! b2834e98915263d466914b04dbb29bf7  libcilkrts/runtime/metacall_impl.h
! 71383c0a8346b6c28b39998cdbbb5a26  libcilkrts/runtime/os-unix.c
! cdb6594f66213d7320854289d865733c  libcilkrts/runtime/os.h
! 9dd7ced346552d4e165e733f23d61c06  libcilkrts/runtime/os_mutex-unix.c
! cf9c3f178c5ca46e4f9d9b494f058e7b  libcilkrts/runtime/os_mutex.h
! b96d59635960c1debf4321ca8f1e8d32  libcilkrts/runtime/pedigrees.c
! 337d1b5f0af5b7490207801fb4d24372  libcilkrts/runtime/pedigrees.h
! d8cf046636af6cfa8c21b5218114db38  libcilkrts/runtime/record-replay.cpp
! 720cd917a8d3b7f6d7f69a2a758928cd  libcilkrts/runtime/record-replay.h
! c1da43798688b4c492cf006be5dff738  libcilkrts/runtime/reducer_impl.cpp
! 17b69120edee0ea82ce5668cfee6e2f6  libcilkrts/runtime/reducer_impl.h
! bba5c3266297697b6515829306cb17e1  libcilkrts/runtime/rts-common.h
! 2e74409a91b752c27db401220cded40d  libcilkrts/runtime/scheduler.c
! 380d761cf6e078eabc8b323fd61a21b9  libcilkrts/runtime/scheduler.h
! edf9819a97001913177b3af4a7519523  libcilkrts/runtime/signal_node.c
! 9a3f452837114a05d28c29ec50f6cfdc  libcilkrts/runtime/signal_node.h
! d89d8dd2ed296f2fd2374ceeae7c4f4b  libcilkrts/runtime/spin_mutex.c
! faf492af4b6b34e12be0cc9edc679d0a  libcilkrts/runtime/spin_mutex.h
! dbcf7b1f4ebe04adb594a8cde1a517bc  libcilkrts/runtime/sslib/ignore_handler_s.c
! f0c7ec4b918d8d8ad0d8af89fe261147  libcilkrts/runtime/sslib/safe_lib.h
! bdaa490cdaa07396d2882c1a57c5bb70  libcilkrts/runtime/sslib/safe_lib_errno.h
! 0c94e731f2caf9bd6067b36feae733e2  libcilkrts/runtime/sslib/safe_str_constraint.c
! 8bbf9900d2759503e56697a94423c294  libcilkrts/runtime/sslib/safe_str_constraint.h
! 5f72b648cdf9a758699e25402787a80a  libcilkrts/runtime/sslib/safe_str_lib.h
! 8e866a05ae1a0c265a1a4f0f2395848f  libcilkrts/runtime/sslib/safe_types.h
! 37dc429a3029298035623c09a658722e  libcilkrts/runtime/sslib/safeclib_private.h
! 1420f107f0feec5ef21c25441e2f195b  libcilkrts/runtime/sslib/snprintf_s.h
! d2d9b079bff10fcaaaaf8814146c4af7  libcilkrts/runtime/sslib/snprintf_support.c
! fd19f1504473524bcc315611496323fd  libcilkrts/runtime/sslib/strcpy_s.c
! 570565674ccbed66f080cb6b251ebbaa  libcilkrts/runtime/sslib/strncpy_s.c
! a1eeabab2c4d2d4c271a314ea6a3a016  libcilkrts/runtime/sslib/strnlen_s.c
! ed7c4b18a37a9956d38cc2de890d5c0f  libcilkrts/runtime/stats.c
! 1cb91c13e0e8baa03464cbde3a9f6958  libcilkrts/runtime/stats.h
! 4cd14b2e389978184026f01d897043b8  libcilkrts/runtime/sysdep-unix.c
! 0c426f98ab2644f7789533e26a81622e  libcilkrts/runtime/sysdep.h
! 2c3a3b2209bf4b41ad77b803856dc02a  libcilkrts/runtime/worker_mutex.c
! ef828695a2adb12b2c20e35ffae8e0c8  libcilkrts/runtime/worker_mutex.h
! 859b1092c134f37db673b8b6cbfa7ffa  libcpp/ChangeLog
  2bd831b17997584e38305782cebe6948  libcpp/ChangeLog.jit
! 09398b05cc9619875b188b5b9b5fb8a0  libcpp/Makefile.in
  efb9decde4743620252ededfe7310a3d  libcpp/aclocal.m4
! 1444bb7fe244550ab738a0839b9f72c6  libcpp/charset.c
  67d8c774e9f69cadb111e2f0fb47fb41  libcpp/config.in
  7eb9e6e3b2606f2c140419da02733ff7  libcpp/configure
  73b767fba0a1de33253732df4197743c  libcpp/configure.ac
! af5a73790219530ef8274d0f16b14954  libcpp/directives-only.c
! f540dc78729e0fc41291444c97cc971a  libcpp/directives.c
! 13d15c92383e23ae5386a8ed74e3fd2a  libcpp/errors.c
! f597dd77b708b28fd08dd9d83302dda4  libcpp/expr.c
! 9665490b6f74bfd3b4bb5b8982fd7b94  libcpp/files.c
! ed5ae555e8b77d54908f99c283c3c9e3  libcpp/identifiers.c
! 88917cb13d68faf310e60022f49dbe12  libcpp/include/cpp-id-data.h
! 1a3c4f602b07b321fd191c9380d6bc4c  libcpp/include/cpplib.h
! 61fc4a831fbf27ff095616c451d88eab  libcpp/include/line-map.h
! 8dd2c69613d2429827c48234ca9a4e18  libcpp/include/mkdeps.h
! 256e5394d29351bac347fd897d54b1e8  libcpp/include/symtab.h
! 97ee7d4a3afe6532296b07ebbb2b15f9  libcpp/init.c
! b618c6ecc923dab6711dc34f8ed6881f  libcpp/internal.h
! 7485b7c49eff198df495f1913b1cb9d9  libcpp/lex.c
! f74674c346dfa1c3fbd08fa9869f6a48  libcpp/line-map.c
  eba197e195fb1c007bf0724c8bed75ea  libcpp/location-example.txt
! c5c375af513d7883fd2eb47dfc975855  libcpp/macro.c
! 5bd25c7374dce6b4204276b21cdfa31d  libcpp/makeucnid.c
! e70c5326d8d9cbbf9ca5ae4ca2dc1370  libcpp/mkdeps.c
! 9f76d47dc04496af0317d5a8d0a1bcbd  libcpp/pch.c
! 861ed67759d42c659a9fa48d8c2c021e  libcpp/po/ChangeLog
! 17a463bdc4264f83ff6f5deb2fc0b3a6  libcpp/po/be.gmo
! 674a2819e662ae2d8bfbb6285a7ad2c4  libcpp/po/be.po
! c4f0b21d10c51c5c842d92f8c6bd1e2b  libcpp/po/ca.gmo
! 7d49046cf1aa73e6ec548fe43857544d  libcpp/po/ca.po
! 0f6308220c696003b05dc89f5e1e52d2  libcpp/po/cpplib.pot
! 3dfe45bd3ef20a75d48f21e63852c817  libcpp/po/da.gmo
! f6dc3e7bb9a49a9d66acb933b6925df6  libcpp/po/da.po
! b33652095dda21e00202c652d7cd7c43  libcpp/po/de.gmo
! 75337eedba8bf8e47384937ad188e2c7  libcpp/po/de.po
! 93d245b36a7c4628c9bcd41ce362ceab  libcpp/po/el.gmo
! d8c3d6aae7064ee331e54e82a3f0787d  libcpp/po/el.po
! 71468d8324a25ac16f1ab0fa4e877703  libcpp/po/eo.gmo
! 641c76e94c025d01036fdd843a487ff1  libcpp/po/eo.po
! edf7bb2d3973491538da8fdc767bc737  libcpp/po/es.gmo
! c463abb1a14b7a0a985c9b402ea21bb8  libcpp/po/es.po
! 3c747d26f7fe40b8c33b3e6f54eaa284  libcpp/po/fi.gmo
! d247504918a909ed4200a007839e4fdb  libcpp/po/fi.po
! f243048bc661d1fcb1bec6387de590a0  libcpp/po/fr.gmo
! ec771d35ebf2529ee19a61cf58f2acd1  libcpp/po/fr.po
! a85c16f732adcd0aa3c4c31decd56068  libcpp/po/id.gmo
! 7f6b0c989a74c72a5aac01fd3eb724b5  libcpp/po/id.po
! 778394f68161a405da2ede3e9804a5ce  libcpp/po/ja.gmo
! cc09e8ed8cdd87ea1cdee21650970b05  libcpp/po/ja.po
! 61d7da02f568eb04e8d427ff7fb0cc1a  libcpp/po/nl.gmo
! eda91235d2354e927f187249aea62754  libcpp/po/nl.po
! 6b9160cde2ce1fb295344ea75d17e30b  libcpp/po/pt_BR.gmo
! 792b9fd0611fe2d5306d6a26b50be5a3  libcpp/po/pt_BR.po
! c975b370192f9ab32a354f13d575462f  libcpp/po/ru.gmo
! 4ec252db69d32f0534baa1560f595a8f  libcpp/po/ru.po
! 115272da2526ab0ffc198f7ba9564a96  libcpp/po/sr.gmo
! 1b2908842262efb2676d549bb03c8225  libcpp/po/sr.po
! fac1f70bed4fc982da44b865ea8fd1ce  libcpp/po/sv.gmo
! 1cfeb3b5fa6ad1406a056cdb1bcc212a  libcpp/po/sv.po
! c203aa14daa75a8c6c86dbc3ced18542  libcpp/po/tr.gmo
! 5bd43acdd563f8bd667749b7e591f5ec  libcpp/po/tr.po
! c4ad3f837493735ffb3d4c4ff0866bec  libcpp/po/uk.gmo
! 7f54f3f3db010d6961b88338e6bf9133  libcpp/po/uk.po
! 798b5da0017f69dfecca9c3d1942fe92  libcpp/po/vi.gmo
! bba925b89abde1ce7bf009abeb6cfb37  libcpp/po/vi.po
! 53a83e99dc10abeb11a1fafe957d0277  libcpp/po/zh_CN.gmo
! 21eda3910f17f982c8f63a39af759247  libcpp/po/zh_CN.po
! 3994edf2f7bcd6f9045637f56a1f9256  libcpp/po/zh_TW.gmo
! 736b75a3b1e019a555f42e9cc074b04c  libcpp/po/zh_TW.po
! ebd4a0c892d3fcca288f6f37cf3e8cd8  libcpp/symtab.c
! ff183a65de336d785700a5f4b77527e2  libcpp/system.h
! cea4768b3d4d14d9a800773faf100388  libcpp/traditional.c
! a62eb585eca6fd68a7bbe8b9294972d4  libcpp/ucnid.h
! 29a3c2eb1562ff70daad7253fabaeffb  libcpp/ucnid.tab
  a6c2b3de06c7424706b16f4c206396a1  libdecnumber/.gitignore
! f68ff63672ed87f646d41249f7396b0b  libdecnumber/ChangeLog
  2bd831b17997584e38305782cebe6948  libdecnumber/ChangeLog.jit
! 1a6bde55e34f3c983baa5211a6400cba  libdecnumber/Makefile.in
  b9ab907f769f0664ed31991a9c9bf3bb  libdecnumber/aclocal.m4
! c6f76cb858b01de593d2beb70db2d038  libdecnumber/bid/bid-dpd.h
! 14f713402bd10cd03bcb2c8331ae7e3e  libdecnumber/bid/bid2dpd_dpd2bid.c
! be18fad5a03a0b9d1ad5abcf27e97e67  libdecnumber/bid/bid2dpd_dpd2bid.h
! 3dae4bcfba8654ab118e9c99ee7a8bb0  libdecnumber/bid/decimal128.c
  47afd72790bc284aceb5a23597cc6146  libdecnumber/bid/decimal128.h
  f8df5b96d86c867ad233c6f0d3e2541f  libdecnumber/bid/decimal128Local.h
  eab7eeba10520ab4a805774d42b8f9dd  libdecnumber/bid/decimal128Symbols.h
! 4a21bee169de92c6878e39c79fdbd958  libdecnumber/bid/decimal32.c
  43b6b2bd872ad984104804b1b20fb10c  libdecnumber/bid/decimal32.h
  c5864ab84549ca0f34188ce5b057bbee  libdecnumber/bid/decimal32Symbols.h
! 7bdcd46ca87dcf915504f6988f03a738  libdecnumber/bid/decimal64.c
  8c612aadae9886f1a72212f93d8651c0  libdecnumber/bid/decimal64.h
  9f903ba71afb574bfa3a0f3cd2f9fbc7  libdecnumber/bid/decimal64Symbols.h
! a37338150bf01d3d9c7e1af583743e1b  libdecnumber/bid/host-ieee128.c
! 80045189ef26b34b85011a7ef4169b67  libdecnumber/bid/host-ieee32.c
! c8df448c1cd906be02c6441669c8fe31  libdecnumber/bid/host-ieee64.c
  76d4afd0dd1c0f5e776cbc40cf2e91b3  libdecnumber/config.in
  8d45ac8ae4853b00e9378fc15b01abb2  libdecnumber/configure
! fca94878ee5f69c873090d2faa60640d  libdecnumber/configure.ac
! 9b1c4477e5365472703db47bc59d5f6c  libdecnumber/dconfig.h
! ac46062f1c5ea90c710bd1bfb518ec3c  libdecnumber/decBasic.c
! 7f499f0620c6327d95abf221ee8c5985  libdecnumber/decCommon.c
  2f89d012c7a8a2912e7dce02bd4a08dc  libdecnumber/decCommonSymbols.h
! 67e322718fee4046b5f8aa80a27c516a  libdecnumber/decContext.c
! e2706c0ebbae8d8bc175cde91e16eccc  libdecnumber/decContext.h
  53b67627dab6d36fba960317d84c1487  libdecnumber/decContextSymbols.h
! 5f89876161a3c20681cb355298dcdb37  libdecnumber/decDPD.h
  8f3ac08d4cc421cc89035e90c890bb09  libdecnumber/decDPDSymbols.h
! 32934e2c3e4839a12e350486d74cbe7c  libdecnumber/decDouble.c
! f045e9907e9e697c40462811880b505b  libdecnumber/decDouble.h
  22e16083bf3d0b76c4736f7f6382cfb6  libdecnumber/decDoubleSymbols.h
! 54119e1d76f3beaee6b0632820e826d9  libdecnumber/decExcept.c
! d01344b7793a9cbc4f41d9bae6032392  libdecnumber/decExcept.h
! 83833dce3abebc96a77af7f4a4190354  libdecnumber/decLibrary.c
! 3be4a787e533c54ed9a82c998db570e7  libdecnumber/decNumber.c
! 4785a981fc25684024fa6d6747e37403  libdecnumber/decNumber.h
! 0b3a5316956ed81203538c775688685f  libdecnumber/decNumberLocal.h
  dd46d36cafe0d7dcb669ad059fbed9b6  libdecnumber/decNumberSymbols.h
! 69345b072b6dffdd90ee896476e6fb35  libdecnumber/decPacked.c
! 48a059faaf54d68d237c429bf68d0856  libdecnumber/decPacked.h
  287ad6ebf8b8179aa843368e9600a3fb  libdecnumber/decPackedSymbols.h
! 2ddc105cfa4153ae6d04c330f2ffe0c9  libdecnumber/decQuad.c
! 9ca32db2d3ebc5c4049c5a339d7821e3  libdecnumber/decQuad.h
  3851bae03416db42a85be1c5610f438b  libdecnumber/decQuadSymbols.h
! 69a4057eb40ae73ea7992c4b4b414d8f  libdecnumber/decRound.c
! fc576e9f2a1e3fd92c1b69a07bf8fd28  libdecnumber/decRound.h
! 08334cfdc6844a5b221e409d95c1a223  libdecnumber/decSingle.c
! e174fa0ecdb8ad0431d2dce44bd3d143  libdecnumber/decSingle.h
  8998c4f3e69ea3d218b574a2defb9a98  libdecnumber/decSingleSymbols.h
! 468f83791f53d1cae980ce80297484b5  libdecnumber/dpd/decimal128.c
! 6db15bd45c3998c4dacd1de49462b950  libdecnumber/dpd/decimal128.h
! 7817b74dc42858bbe99e22b48b58a989  libdecnumber/dpd/decimal128Local.h
  2f6da07ba897ca626a4f6d283feeef93  libdecnumber/dpd/decimal128Symbols.h
! 546b1be255dac21eba18beaddfe87942  libdecnumber/dpd/decimal32.c
! af6d22a77dfda051e4eb9092427341bc  libdecnumber/dpd/decimal32.h
  a97c47969dfc92a7666dfe3c2e1e1448  libdecnumber/dpd/decimal32Symbols.h
! f8f385e8ac437b3cec6d5d257a8ca92b  libdecnumber/dpd/decimal64.c
! c44ad1b41c2725fb70917c5f60b033d2  libdecnumber/dpd/decimal64.h
  0f6db29710e7075c2fd62bc4478b3b8d  libdecnumber/dpd/decimal64Symbols.h
! 0881e1571c2df2a1339ed96cd7f9a597  libffi/ChangeLog
  ba66fc19311348d373ec271be939a659  libffi/ChangeLog.libffi
  fbbc216bc25d759a72ea3e6d734af56b  libffi/ChangeLog.libgcj
  d946d2b97454ad50a1dbfbf48923c5be  libffi/ChangeLog.v1
--- 62232,62447 ----
  8a7308fda7ed1543cb9e3be0f8e47bce  libatomic/testsuite/libatomic.c/atomic-store-5.c
  40618200985a15bcba64f871863da498  libatomic/testsuite/libatomic.c/c.exp
  97b0c9cdfcb733664bdf4efe0f5dc449  libatomic/testsuite/libatomic.c/generic-2.c
! c87c5f6732aceef85ed6a02c393aa08a  libbacktrace/ChangeLog
  eb3a88b53140eb234a99a4b3a55e56bf  libbacktrace/ChangeLog.jit
! ad25c936950517ab39514411d44f1c4e  libbacktrace/Makefile.am
! 1a3441233d4403c0924c2303de6ebfd4  libbacktrace/Makefile.in
  1987c0495aeee1bc47709f399772173b  libbacktrace/README
! 813c4426d9f8d300a14557aa32794366  libbacktrace/aclocal.m4
! 9d69d6270f5242b531db6d70f620a1d0  libbacktrace/alloc.c
! 7e9d5186ada628cc8212a5664bd12ca3  libbacktrace/atomic.c
! be3ababce9aea662e02d7b41f3d3ccc7  libbacktrace/backtrace-supported.h.in
! d9c0d3f88218fd51d145352b26ba9446  libbacktrace/backtrace.c
! 8e8c383fc7515580db1d305bbf3371fd  libbacktrace/backtrace.h
! 3eb83cdf3a6a7f33a2f07cf0dbc719cf  libbacktrace/btest.c
! 1d4bfc3f4163aa82fe966efc124c93d0  libbacktrace/config.h.in
! 49b61fb896bfa8e31cbfe797c384477a  libbacktrace/configure
! 9e33a3fc3717209c5bc5b1b9e9f122aa  libbacktrace/configure.ac
! f4618ec233ddbdd359e883b8a06ef065  libbacktrace/dwarf.c
! 2c8f1c3391264d93ad88710404662283  libbacktrace/edtest.c
! 2a72324d41b3417ff635bf0a08d57759  libbacktrace/edtest2.c
! b73455a85277724f0838d8b41eb6c763  libbacktrace/elf.c
! 1acab5539e8dba2a647bb155c9382a5b  libbacktrace/fileline.c
! babe8fbbbaf421cfc76aee1d7ceb5f6c  libbacktrace/filetype.awk
! e6f544ecdd616ab91e217487ec70eed1  libbacktrace/internal.h
! 1c61707601aef48a975a9eaf7fc5c495  libbacktrace/mmap.c
! dc1ec84e9b2fa64ef7f2a468a51194ae  libbacktrace/mmapio.c
! 9847619646c34b72bd49e88e7832e67b  libbacktrace/nounwind.c
! f2a17095e6281a1c6759385e7760a79f  libbacktrace/pecoff.c
! 25c6009e5c8adb45f6992e1c29dba6f0  libbacktrace/posix.c
! 60508fba93149565203a730c121e9c13  libbacktrace/print.c
! 21c2c305e6e770ee39387e43650010a3  libbacktrace/read.c
! b57340faebf3c35b65ae9e5c74b519d5  libbacktrace/simple.c
! f7c7311149304cb751a667cbafb9a481  libbacktrace/sort.c
! 5626bc6ce92046269ae9ffa843b3cd37  libbacktrace/state.c
! b66905154700550ecbb1df7c185908a0  libbacktrace/stest.c
! 1c787ba7bfeaec78410f45bd4aa878b1  libbacktrace/testlib.c
! ca5461092019e2e64d65d2bb1489004e  libbacktrace/testlib.h
! dbe2e11593f3102953f57ee51a60695f  libbacktrace/ttest.c
! 8f36e84a19a6895e5de34668be47906f  libbacktrace/unknown.c
! 76d9ac93dae8cb5d9ab7f770c5c33d59  libbacktrace/xcoff.c
! abb1e3c205164a92fc76bc8e9f7447b7  libbacktrace/ztest.c
! ef30cac96e3066c4e15adb90af25fd31  libcc1/ChangeLog
! 70cc59d5aaf376266e5614d3e43f1907  libcc1/Makefile.am
! fe9ad920449dc057290126f8611fe395  libcc1/Makefile.in
  5f253fc15bb29a40419f12ce42f92147  libcc1/aclocal.m4
! 1836f7fef6a540474136534dec670d1a  libcc1/callbacks.cc
! 579d0ee802aec77d23a42584855be97c  libcc1/callbacks.hh
  9d81ce1461f24e4af7c8639d94f06789  libcc1/cc1plugin-config.h.in
! 62ccf9b0522655e8faceecefe1d68abe  libcc1/compiler-name.hh
! 9d3e08f9ac995f7183fbb39be059a49b  libcc1/configure
! 3f24f400cec40258399986651b82ca4f  libcc1/configure.ac
! 842a09e9e641c2328866ded89a7bddb0  libcc1/connection.cc
! f08fea391b6a490c3c3c16fd5854754d  libcc1/connection.hh
! 199b140c2d37def90c8f18454ff5504c  libcc1/findcomp.cc
! 578884f8c923b7a0aa42ebf40b27f8d0  libcc1/findcomp.hh
! 5fa6efdb634bd47595cc1c4c1a1eb37a  libcc1/libcc1.cc
  99b3a25ce17ed584d9f0aa42b4713938  libcc1/libcc1.sym
! d5ea626069a3dd4351502c58e86a46a6  libcc1/libcc1plugin.cc
  75503db6a0981a95d9c29d9607b29380  libcc1/libcc1plugin.sym
! c5ee26d736bb736f11f4106d05a7a3de  libcc1/libcp1.cc
! 73d3350160a183eef1971285d11a3a47  libcc1/libcp1plugin.cc
  75503db6a0981a95d9c29d9607b29380  libcc1/libcp1plugin.sym
! 8511bf945c45da439c84207a30bdd98f  libcc1/marshall-c.hh
! 3b20ed6c0f21f2769c2e732845cf8cf6  libcc1/marshall-cp.hh
! a43a09a0c7f16a554b08e89daf8d3228  libcc1/marshall.cc
! b5ada73fbc6a19380bf513b3790335f5  libcc1/marshall.hh
! 59696fc15f78db9250e6f106a976da2e  libcc1/names.cc
! c6f9b1f960acb9cf871a06c4f935912b  libcc1/names.hh
! 49d258234dff741a726cf0043a954f95  libcc1/rpc.hh
! 9dbb43e8d518ce0857f62abd7167ae08  libcc1/status.hh
! b92e43d87caa364f6ddd49b51101c403  libcpp/ChangeLog
  2bd831b17997584e38305782cebe6948  libcpp/ChangeLog.jit
! d2dac1b8128e62b1d6295cb9b74bbb14  libcpp/Makefile.in
  efb9decde4743620252ededfe7310a3d  libcpp/aclocal.m4
! 80a98ca3b977cf93bfc98bd2cc16cb3f  libcpp/charset.c
  67d8c774e9f69cadb111e2f0fb47fb41  libcpp/config.in
  7eb9e6e3b2606f2c140419da02733ff7  libcpp/configure
  73b767fba0a1de33253732df4197743c  libcpp/configure.ac
! 04fe8da82e27a7848109482e22884813  libcpp/directives-only.c
! d1bb6329c43c19bfad6e938f1c72be90  libcpp/directives.c
! b56a38589c174867ac11e0e3c2dc4707  libcpp/errors.c
! 4188aa2608cd2f002abf684aef847ea3  libcpp/expr.c
! 7a1b45e6b7f022562b43647046f3a060  libcpp/files.c
! 1e7307cca6299ab0a8577464365be6d5  libcpp/identifiers.c
! b1fcb4f298a8708a28f9fe4dbf855d77  libcpp/include/cpp-id-data.h
! 185c59cca6efd0b336be73c85045ea58  libcpp/include/cpplib.h
! 9d150861d643f7fad1e4719edbc940a0  libcpp/include/line-map.h
! fa76ed3877ad4129127c5ae931c65811  libcpp/include/mkdeps.h
! 6b6e26f811660777d1617f7bbc354078  libcpp/include/symtab.h
! f66a125c666db415d08e8cc438043e0d  libcpp/init.c
! 6e3214db2e9fb91358bc66199df63467  libcpp/internal.h
! b5ad79d0629d14c73cc766d3d47f85e6  libcpp/lex.c
! c773b9017e7af21eb40b7b60623894ec  libcpp/line-map.c
  eba197e195fb1c007bf0724c8bed75ea  libcpp/location-example.txt
! 9f391357162982e2304266f63bfa1497  libcpp/macro.c
! f22cafdb8ea5106643a28cf941c5fc0e  libcpp/makeucnid.c
! c36f661613f171be8fee3d72b7e1c09f  libcpp/mkdeps.c
! 94eab18602c5e57b824e51964fff7446  libcpp/pch.c
! bd6d8a7547f179249faf8327490328fa  libcpp/po/ChangeLog
! eb8d613ca08cf1cce8d884839b51d450  libcpp/po/be.gmo
! ff3e5011d3f58f27c539ffb7b0db5898  libcpp/po/be.po
! 7757431651664b1e9c06c78d93bfd77c  libcpp/po/ca.gmo
! 8c21371cf13c57361d15574f6bf9d618  libcpp/po/ca.po
! 3943972cb32767bba42dd16c9f5d928c  libcpp/po/cpplib.pot
! 9234ffe6be46544bb4366f2be15757c0  libcpp/po/da.gmo
! 13932e3239a8adf87daa77dc447f0294  libcpp/po/da.po
! 327adb3e80358ed6c9ce6985019429f8  libcpp/po/de.gmo
! 2d464bf0fe25449548c4f4fe145df907  libcpp/po/de.po
! 04a9cf7c44e221595d7858c0c6765b24  libcpp/po/el.gmo
! ba756586de7d9a70d22435d728cb19a8  libcpp/po/el.po
! f8f0550e9b6706cb3482ae4d388ba7cd  libcpp/po/eo.gmo
! d2095fc443c2dde6c8c25ac7589c7f8e  libcpp/po/eo.po
! a6536ce2c05b171125bf0be5fa4e479f  libcpp/po/es.gmo
! de96ab88aab92dec7b27728f9426b574  libcpp/po/es.po
! 822138336d176ade62c706e372b456e6  libcpp/po/fi.gmo
! 375e52c35c9bf8dd047e77ce3776890f  libcpp/po/fi.po
! 4bbb46e60c824371c6dbe8774df76a51  libcpp/po/fr.gmo
! 521ac8ccc64e0a2e4258e6b559ae5753  libcpp/po/fr.po
! 469afdeda9f0ee9173da9dc533c0c495  libcpp/po/id.gmo
! 6710a5d3a7d5da3d63cdcbfec3774af4  libcpp/po/id.po
! 5102abd1f8013e8596cfc0d7680e8997  libcpp/po/ja.gmo
! 3c2a92f5893c6bcec4256fe9232b855d  libcpp/po/ja.po
! 9e7c2d46cb8eda55108b035611f120ff  libcpp/po/nl.gmo
! bffe61bdf1ac1920b6464c497cbf9d1f  libcpp/po/nl.po
! 589fdcaae87b4a8ec0410de1c032268a  libcpp/po/pt_BR.gmo
! 2ae0cdd97054f28a5a1b927d7d3e582a  libcpp/po/pt_BR.po
! 42037022882e03cba8c4d9e94d8964c0  libcpp/po/ru.gmo
! 902fed3655d77d3aab8cb26cb8eb14a0  libcpp/po/ru.po
! 2adf509160c3eae1c153d864f07290d9  libcpp/po/sr.gmo
! 5115888cc6d7ea1959e57df7f6c9cb52  libcpp/po/sr.po
! f798c7ea63f9d3ade41e66263492ec5d  libcpp/po/sv.gmo
! 90585d5293e19dd20bf8c9ed28e878e3  libcpp/po/sv.po
! 8b5c4da123a834679bdf8d798e3ba094  libcpp/po/tr.gmo
! 92b63611fe3a60e1c14d5f22d49b3143  libcpp/po/tr.po
! 6dd803ee957dfc79a88370489782bf7e  libcpp/po/uk.gmo
! 17876544974f1ae2385404de1e0f6db9  libcpp/po/uk.po
! e4a9c37eeb26e66c2b28ff236b3eb8dd  libcpp/po/vi.gmo
! 18bc5473f2e24e45771c40f842488c3b  libcpp/po/vi.po
! 73aed14e29e9ad9c2c21102a7886eb1b  libcpp/po/zh_CN.gmo
! d745dd17d264f16d10c70ed3db781a36  libcpp/po/zh_CN.po
! b15931a050066d215da0588f00ae1db7  libcpp/po/zh_TW.gmo
! e5171a21b0242f77a5dfd0e609e21e15  libcpp/po/zh_TW.po
! e9e1d9b077e73185b037c93a8c771622  libcpp/symtab.c
! da0e27c48fd0ce5f2d3e37e41af99cf2  libcpp/system.h
! 51895993512263ca3d2f24f0158da684  libcpp/traditional.c
! 36946b653677056e322ef20e95f6b80e  libcpp/ucnid.h
! 80847d07e519c55c76ac9e1a89b0b7e8  libcpp/ucnid.tab
  a6c2b3de06c7424706b16f4c206396a1  libdecnumber/.gitignore
! 66335b429c17811e863dcbb44f6c9428  libdecnumber/ChangeLog
  2bd831b17997584e38305782cebe6948  libdecnumber/ChangeLog.jit
! 57ec341dbbf2ad937be2f9a710932b57  libdecnumber/Makefile.in
  b9ab907f769f0664ed31991a9c9bf3bb  libdecnumber/aclocal.m4
! 728c92a81977f6b1ce57146d7a66076c  libdecnumber/bid/bid-dpd.h
! 12230c29a88550a7f662f60696680206  libdecnumber/bid/bid2dpd_dpd2bid.c
! e6d087e338c023920a35188158b74578  libdecnumber/bid/bid2dpd_dpd2bid.h
! ea69a6d83c0278792d3acc4f6b069c82  libdecnumber/bid/decimal128.c
  47afd72790bc284aceb5a23597cc6146  libdecnumber/bid/decimal128.h
  f8df5b96d86c867ad233c6f0d3e2541f  libdecnumber/bid/decimal128Local.h
  eab7eeba10520ab4a805774d42b8f9dd  libdecnumber/bid/decimal128Symbols.h
! 70e969f148d8b9fa58b2b78dea3d4e4e  libdecnumber/bid/decimal32.c
  43b6b2bd872ad984104804b1b20fb10c  libdecnumber/bid/decimal32.h
  c5864ab84549ca0f34188ce5b057bbee  libdecnumber/bid/decimal32Symbols.h
! 1639393fa356e435abfd665e376a9bf6  libdecnumber/bid/decimal64.c
  8c612aadae9886f1a72212f93d8651c0  libdecnumber/bid/decimal64.h
  9f903ba71afb574bfa3a0f3cd2f9fbc7  libdecnumber/bid/decimal64Symbols.h
! 7bf8ced2827725463bd5ae851407043e  libdecnumber/bid/host-ieee128.c
! 641724c6fc243fd4d0448f2533401554  libdecnumber/bid/host-ieee32.c
! 510aa882d7973ab728d24af922c5ec67  libdecnumber/bid/host-ieee64.c
  76d4afd0dd1c0f5e776cbc40cf2e91b3  libdecnumber/config.in
  8d45ac8ae4853b00e9378fc15b01abb2  libdecnumber/configure
! 2113a2435f70f13e2e6651482ff7a92e  libdecnumber/configure.ac
! 7491c7795c6c03d7a2a8b278490ca898  libdecnumber/dconfig.h
! aa51c887f31905ea292407060a6f8a5e  libdecnumber/decBasic.c
! fc0304097041af8de1c67dd83066ea14  libdecnumber/decCommon.c
  2f89d012c7a8a2912e7dce02bd4a08dc  libdecnumber/decCommonSymbols.h
! 5425a6733a823197355b8300cbd06524  libdecnumber/decContext.c
! 4ddc06f2c811639fa14beb3e6cc3fa32  libdecnumber/decContext.h
  53b67627dab6d36fba960317d84c1487  libdecnumber/decContextSymbols.h
! 3dde62830c9325c7752d44584a837d39  libdecnumber/decDPD.h
  8f3ac08d4cc421cc89035e90c890bb09  libdecnumber/decDPDSymbols.h
! d02a047fb1fa09dfe54ac69489693cd1  libdecnumber/decDouble.c
! 7c87617750d1b98dc73651fe5e304779  libdecnumber/decDouble.h
  22e16083bf3d0b76c4736f7f6382cfb6  libdecnumber/decDoubleSymbols.h
! 6b3d38ddffa7f13ce3215b4d09e9484b  libdecnumber/decExcept.c
! 4f847be768ae6810ccfc10b3e07aab89  libdecnumber/decExcept.h
! dd054d8a7b37d7c966b69cb9f1de8d4b  libdecnumber/decLibrary.c
! e8c7308ce5716c1c64c6894097ff7bac  libdecnumber/decNumber.c
! 3423f460d0273790302c0f9d01790301  libdecnumber/decNumber.h
! 2ff776f9e3651435022092b000151422  libdecnumber/decNumberLocal.h
  dd46d36cafe0d7dcb669ad059fbed9b6  libdecnumber/decNumberSymbols.h
! c2e8e00770012c27928fd039c71f588e  libdecnumber/decPacked.c
! 9678f392a5f91876203f26e3c70ef287  libdecnumber/decPacked.h
  287ad6ebf8b8179aa843368e9600a3fb  libdecnumber/decPackedSymbols.h
! 6768e55c274f86452a2659c2c14117f2  libdecnumber/decQuad.c
! 1b89a5bc4842fd26ecde038c8a017ad6  libdecnumber/decQuad.h
  3851bae03416db42a85be1c5610f438b  libdecnumber/decQuadSymbols.h
! 7d452ade6ccb9a38c45915fe23ff97a2  libdecnumber/decRound.c
! b0edada33cd27ac39d929b258c442adb  libdecnumber/decRound.h
! aef74e5dbc8c3f804d9dd8ed22e9c6c5  libdecnumber/decSingle.c
! 14bca761b4ae83667b69345bac5d1613  libdecnumber/decSingle.h
  8998c4f3e69ea3d218b574a2defb9a98  libdecnumber/decSingleSymbols.h
! 6556faedd7609493dbaf68a58ab9de9f  libdecnumber/dpd/decimal128.c
! f76b24b61366da5ec859d5d7f2eb169f  libdecnumber/dpd/decimal128.h
! 32cc0742460198c0a98cd868dbf9f159  libdecnumber/dpd/decimal128Local.h
  2f6da07ba897ca626a4f6d283feeef93  libdecnumber/dpd/decimal128Symbols.h
! 87d51d3a1bed477f16f6a03d7d12c40a  libdecnumber/dpd/decimal32.c
! dffdcb83cf14ca1a6f6c7221cb803536  libdecnumber/dpd/decimal32.h
  a97c47969dfc92a7666dfe3c2e1e1448  libdecnumber/dpd/decimal32Symbols.h
! 1b3ac8f16152273c87e1f2ec5f887016  libdecnumber/dpd/decimal64.c
! e2fdfe70083dbc8a6bec996d90813407  libdecnumber/dpd/decimal64.h
  0f6db29710e7075c2fd62bc4478b3b8d  libdecnumber/dpd/decimal64Symbols.h
! 66a75d40cc57692aa38fb7dc9d7e371f  libffi/ChangeLog
  ba66fc19311348d373ec271be939a659  libffi/ChangeLog.libffi
  fbbc216bc25d759a72ea3e6d734af56b  libffi/ChangeLog.libgcj
  d946d2b97454ad50a1dbfbf48923c5be  libffi/ChangeLog.v1
*************** d946d2b97454ad50a1dbfbf48923c5be  libffi
*** 58646,58652 ****
  f0aff67c9a90cc128022ee5b0055b968  libffi/README
  e0338ba1ce12fd810fe35fed3a694725  libffi/acinclude.m4
  82458c2895926a7a6da1788cb3bb26f4  libffi/aclocal.m4
! 35c77080c241b6cd736c725e77a07274  libffi/configure
  4c7d6d08dda5a535e8c8d970ae159680  libffi/configure.ac
  84d2d9f2ebfac28a1697db5dc956a25b  libffi/configure.host
  cfec4a5a1bb5d36550e15ac051c14148  libffi/doc/libffi.texi
--- 62451,62457 ----
  f0aff67c9a90cc128022ee5b0055b968  libffi/README
  e0338ba1ce12fd810fe35fed3a694725  libffi/acinclude.m4
  82458c2895926a7a6da1788cb3bb26f4  libffi/aclocal.m4
! 0ffd2b54a40b8ad337e9585a6758f004  libffi/configure
  4c7d6d08dda5a535e8c8d970ae159680  libffi/configure.ac
  84d2d9f2ebfac28a1697db5dc956a25b  libffi/configure.host
  cfec4a5a1bb5d36550e15ac051c14148  libffi/doc/libffi.texi
*************** cf11f05b0ece088d52d21699f3e7f6a4  libffi
*** 58737,58753 ****
  2b43d8fbef25dbf6a65c6d6e6045c52c  libffi/src/pa/ffitarget.h
  8c23f17c79eb2520dc8ec662cb259ace  libffi/src/pa/hpux32.S
  3ebd6a515e65ee7136babf16939ecc71  libffi/src/pa/linux.S
! ed0ed7c70618d57074197d4c4f8cd15d  libffi/src/powerpc/aix.S
! 3df2eb07e3c44ca666673ccf197fe497  libffi/src/powerpc/aix_closure.S
  c1917bbd6c116317e71dbc2d92d7f163  libffi/src/powerpc/asm.h
  fcf4949764155e3174447f2ee55b0db7  libffi/src/powerpc/darwin.S
  ac5d077a8245b3e30d71eaa451737dba  libffi/src/powerpc/darwin_closure.S
  1a058371d25e428564cbed129eb85763  libffi/src/powerpc/ffi.c
! 3cbb35b66745e8087d362c37d7c07427  libffi/src/powerpc/ffi_darwin.c
  bcd5ffc3bd920135d83c8ae0993ebb02  libffi/src/powerpc/ffi_linux64.c
  9c686cd2998b6360ec5ce8b1ba3c79dc  libffi/src/powerpc/ffi_powerpc.h
  b3dfde8013f5032762b6b7b21b089599  libffi/src/powerpc/ffi_sysv.c
! bd70a02819db180e1863576b4214084b  libffi/src/powerpc/ffitarget.h
  cce6ae7ec0baf2d5e373ce0a43e82816  libffi/src/powerpc/linux64.S
  954526cffe81830a0f8a41a27e5a76f0  libffi/src/powerpc/linux64_closure.S
  deba483bab067974966ec684fe6af5e2  libffi/src/powerpc/ppc_closure.S
--- 62542,62558 ----
  2b43d8fbef25dbf6a65c6d6e6045c52c  libffi/src/pa/ffitarget.h
  8c23f17c79eb2520dc8ec662cb259ace  libffi/src/pa/hpux32.S
  3ebd6a515e65ee7136babf16939ecc71  libffi/src/pa/linux.S
! 184c7714b9cf25fbbbe0bcc89a26dcfa  libffi/src/powerpc/aix.S
! 551ede9bd56160e1c6cd39409bfec751  libffi/src/powerpc/aix_closure.S
  c1917bbd6c116317e71dbc2d92d7f163  libffi/src/powerpc/asm.h
  fcf4949764155e3174447f2ee55b0db7  libffi/src/powerpc/darwin.S
  ac5d077a8245b3e30d71eaa451737dba  libffi/src/powerpc/darwin_closure.S
  1a058371d25e428564cbed129eb85763  libffi/src/powerpc/ffi.c
! 30fc0a0f14928f935fe7145a8ed73e98  libffi/src/powerpc/ffi_darwin.c
  bcd5ffc3bd920135d83c8ae0993ebb02  libffi/src/powerpc/ffi_linux64.c
  9c686cd2998b6360ec5ce8b1ba3c79dc  libffi/src/powerpc/ffi_powerpc.h
  b3dfde8013f5032762b6b7b21b089599  libffi/src/powerpc/ffi_sysv.c
! eff67b72c8facab9f308a18417acce6d  libffi/src/powerpc/ffitarget.h
  cce6ae7ec0baf2d5e373ce0a43e82816  libffi/src/powerpc/linux64.S
  954526cffe81830a0f8a41a27e5a76f0  libffi/src/powerpc/linux64_closure.S
  deba483bab067974966ec684fe6af5e2  libffi/src/powerpc/ppc_closure.S
*************** d47c79b281339983862a8e52d8c73f0f  libffi
*** 58993,59097 ****
  291be426192f460f6a07dfe1c96ab094  libffi/testsuite/libffi.special/special.exp
  93fc3ea311b79f64004992807ce75d1e  libffi/testsuite/libffi.special/unwindtest.cc
  185d0795017fbbe253a13db8e34085f9  libffi/testsuite/libffi.special/unwindtest_ffi_call.cc
! f4e7baa344f6fd2468153b84bf994ee6  libgcc/ChangeLog
! 14791b3aecdd572b8a4ecb3ea32778db  libgcc/Makefile.in
! 186f54217a4d7fe1af46a0228b0997b4  libgcc/config.host
! d379c1b8013b8714e8c9b01110f0ceb9  libgcc/config.in
! 0ec94edef92736a572f23163aecddb69  libgcc/config/aarch64/aarch64-unwind.h
! 0f24438599446b7705f90a715e825b26  libgcc/config/aarch64/crtfastmath.c
! d6d365fcf448131efee853326011f3c6  libgcc/config/aarch64/crti.S
! 5a13b858b4e81ccc7cf05370a910b193  libgcc/config/aarch64/crtn.S
! b799fa1d5c2e0691a927210cc626f66f  libgcc/config/aarch64/freebsd-unwind.h
! 82ec832201b743bbcc44eff9baabb90a  libgcc/config/aarch64/linux-unwind.h
! e1a47779a0836598fcf92d3367929ea3  libgcc/config/aarch64/sfp-exceptions.c
! bb0a6423543a778cadccc7d00f43925a  libgcc/config/aarch64/sfp-machine.h
! 2b79c5b1752d9a31bc329327ba546453  libgcc/config/aarch64/sync-cache.c
! bd1aa20cc910eec89467ac7766d3f72b  libgcc/config/aarch64/t-aarch64
  3a7564780070d43ba461bc58622771af  libgcc/config/aarch64/t-softfp
! 67e8a2ad5026053a6e2749b31f3bdc5a  libgcc/config/aarch64/value-unwind.h
! 3ae447ab8fb0460c7fcd37b685308db3  libgcc/config/alpha/crtfastmath.c
! d943dce2bf35e1cbbe500322e7a0e213  libgcc/config/alpha/libgcc-alpha-ldbl.ver
! 292ff5c1bc41061e12a2db6387ec08ae  libgcc/config/alpha/linux-unwind.h
! 444ed2225f21ae2923f85d6d4d658a87  libgcc/config/alpha/qrnnd.S
  e06033e6f9902c9e703e237d511df6c4  libgcc/config/alpha/t-alpha
  95db551210150c5b18529c72cfdaeabf  libgcc/config/alpha/t-ieee
  70f7baadf7c58b1adae96daa38a6843f  libgcc/config/alpha/t-linux
  600b5cfe4987de3985ad1ff7316166cc  libgcc/config/alpha/t-vms
! f6bc90373c368af30ca4e44880f5d501  libgcc/config/alpha/vms-dwarf2.S
! 8e840fb4999f0ea12a5c6884d5ed481b  libgcc/config/alpha/vms-dwarf2eh.S
! 5f6046dacc584278f325e6dfc38c8251  libgcc/config/alpha/vms-gcc_shell_handler.c
! f3f827977c316d4c1b8b0611e3359821  libgcc/config/alpha/vms-unwind.h
! cb481a78e0bcbf4add3a72f6e28cd328  libgcc/config/arc/asm.h
! 286407e3aa17f5132b3704fefc03d02e  libgcc/config/arc/crti.S
! 7af145a3b55a69244f3e3c56125fd4d7  libgcc/config/arc/crtn.S
! a7f592e9935a18c26fcccbf68aba300a  libgcc/config/arc/crttls.S
! 701b15f16a71e934fd6ad536a66fa985  libgcc/config/arc/divtab-arc700.c
! a4b5cb0a58998df69e4c5f4ae4ebeadf  libgcc/config/arc/dp-hack.h
! 826c7f7516fe6fcb19d423c0e8234813  libgcc/config/arc/fp-hack.h
! d2f8a1bc991cb6fdfc532a930b4f9a36  libgcc/config/arc/ieee-754/adddf3.S
! 7385d8a49de1a1fb88b3012eb0cdf636  libgcc/config/arc/ieee-754/addsf3.S
! 76054c5ff8cebe06d1be5b91f868f56c  libgcc/config/arc/ieee-754/arc-ieee-754.h
! 7691e98e2c383b868af247fba62c4215  libgcc/config/arc/ieee-754/arc600-dsp/divdf3.S
! 17824ee58da71c7fb5993210687a36f5  libgcc/config/arc/ieee-754/arc600-dsp/divsf3.S
! c0e80354ac5a9b849546633aa4b20a9a  libgcc/config/arc/ieee-754/arc600-dsp/muldf3.S
! e466bfddf0868dccb36aeaa8ab380461  libgcc/config/arc/ieee-754/arc600-dsp/mulsf3.S
! 501b6438d20a8033aa253bcae1377952  libgcc/config/arc/ieee-754/arc600-mul64/divdf3.S
! 145b8d906223cfc7e10d8f7bcbf98409  libgcc/config/arc/ieee-754/arc600-mul64/divsf3.S
! 641fdcd66ec95cc0bf3b220246446741  libgcc/config/arc/ieee-754/arc600-mul64/muldf3.S
! 49effa1876137b4c4fb70d8e45d7d2ca  libgcc/config/arc/ieee-754/arc600-mul64/mulsf3.S
! 810f181bce7786f991a0f728ad515728  libgcc/config/arc/ieee-754/arc600/divsf3.S
! 9e983879b62be5983d518b17ecebd0c1  libgcc/config/arc/ieee-754/arc600/mulsf3.S
! 34b357fccaed44604d4a3ffcef937d48  libgcc/config/arc/ieee-754/divdf3.S
! eb9a8baa68b06bcd6abd62478d688654  libgcc/config/arc/ieee-754/divsf3-stdmul.S
! 4def4e36aa61b133d88e900ce11724e1  libgcc/config/arc/ieee-754/divsf3.S
! 0fe3be979abd7bea2e523e2432bda41f  libgcc/config/arc/ieee-754/divtab-arc-df.c
! b43710200992e4d2180de55a6b6e30ae  libgcc/config/arc/ieee-754/divtab-arc-sf.c
! 2633ad245b75733a675dc40bcad85e76  libgcc/config/arc/ieee-754/eqdf2.S
! a07c029a8b9e7ccc6fafe625b977c314  libgcc/config/arc/ieee-754/eqsf2.S
! 14b8b93e65de1ea7df24108df062aae3  libgcc/config/arc/ieee-754/extendsfdf2.S
! 4d8031d90acde9be7c10523b351c692d  libgcc/config/arc/ieee-754/fixdfsi.S
! a53dff01986d91079617111ecb0a09cc  libgcc/config/arc/ieee-754/fixsfsi.S
! d1bf52208bb3ad8e50df165211381494  libgcc/config/arc/ieee-754/fixunsdfsi.S
! db9076fb3d13be7e54e04f86b871174a  libgcc/config/arc/ieee-754/floatsidf.S
! ed07ab156f2780d57dee750c1e07aa13  libgcc/config/arc/ieee-754/floatsisf.S
! be77aea5c38c6b0aa8119866c553e0b8  libgcc/config/arc/ieee-754/floatunsidf.S
! 2565c5ef6d552eb8ec98169a2c1ece47  libgcc/config/arc/ieee-754/gedf2.S
! ffb42c7f51bf8c8bce9aa8139ddc0b12  libgcc/config/arc/ieee-754/gesf2.S
! 64984fd7666b4ef2badafcc47e031f18  libgcc/config/arc/ieee-754/gtdf2.S
! 447055191f523a8e5b2e1de1c6183bc5  libgcc/config/arc/ieee-754/gtsf2.S
! b9a4f858757579267818c685528e16e0  libgcc/config/arc/ieee-754/muldf3.S
! 7b1a8de7757e71e7c4b24be03f65ff83  libgcc/config/arc/ieee-754/mulsf3.S
! 59ca63972dd65ee93be09fecc3cd185c  libgcc/config/arc/ieee-754/orddf2.S
! 2828ae8f06070e0079536c2e110a36e9  libgcc/config/arc/ieee-754/ordsf2.S
! bb6bd580e396e69da5bf40f4a259dbf6  libgcc/config/arc/ieee-754/truncdfsf2.S
! 666e1aa3e6dcffe35f458a7ccd23baf2  libgcc/config/arc/ieee-754/uneqdf2.S
! fdc3cf4f1a8bbc0acec9f20189daa67a  libgcc/config/arc/ieee-754/uneqsf2.S
! df85a42d62309a5c608f6d81626e8338  libgcc/config/arc/initfini.c
! 8f220ed3d042d855acab58a92b0186c3  libgcc/config/arc/lib1funcs.S
! 2f24694b3eb1bf64b07890ceb3c12962  libgcc/config/arc/libgcc-excl.ver
! 6ed3e5181d4a27a7d49d856df4d7dd60  libgcc/config/arc/t-arc
! 6da36b9852a046adb1d7004ee9a371a3  libgcc/config/arc/t-arc-uClibc
! ef028014ee051f9d75991f8e0ed72451  libgcc/config/arm/bpabi-lib.h
! 81f767e5fe256f1cf14545872c660777  libgcc/config/arm/bpabi-v6m.S
! 76e8065adada128ea5126a3ea8b1d219  libgcc/config/arm/bpabi.S
! 2228c20bff4e1b6d941c9651ecde6355  libgcc/config/arm/bpabi.c
! 5e337e71f785213b71ed954593895bda  libgcc/config/arm/cmse.c
! b1d4286d6fd33f745d7419343a5444ce  libgcc/config/arm/cmse_nonsecure_call.S
! 403316d730be517f32fa2e0a1fdc99a4  libgcc/config/arm/crtfastmath.c
! f6069a5a82c5ef1fe057510083e29c94  libgcc/config/arm/crti.S
! 3d6ceb3eae75c9db95101c5e53a434f1  libgcc/config/arm/crtn.S
! d2ccc65e31482e95764eb37cf2c78fe9  libgcc/config/arm/fp16.c
! eb1cbf9bd511738bf251c38eae57ad99  libgcc/config/arm/freebsd-atomic.c
! 7f68a28f74a3842c5b7354cde7736d3b  libgcc/config/arm/ieee754-df.S
! f5a04cbbd822f53964a92f568448e984  libgcc/config/arm/ieee754-sf.S
! cbd329fcd7d7ea6e4a1e7fd9e34e81cb  libgcc/config/arm/lib1funcs.S
! 9661ab083cd707b2aa7a37b9fce2874c  libgcc/config/arm/libgcc-bpabi.ver
! 05c2addd48f833d81615c38815b9dd9d  libgcc/config/arm/libunwind.S
! ee3a48c440ee094d22a07830cfd34a20  libgcc/config/arm/linux-atomic-64bit.c
! fe1f16e10e05e2ab74f3a62a348a5982  libgcc/config/arm/linux-atomic.c
! 1ed6df319806affa986d340e4b593af9  libgcc/config/arm/pr-support.c
  131990bf9b0a8ab71c7abf0c49d4fbfa  libgcc/config/arm/sfp-machine.h
! cc0e512f2deda0ec10ab36804629f3b3  libgcc/config/arm/symbian-lib.h
  66fdc8dc1e384d61a9a0c704401bc4bc  libgcc/config/arm/t-arm
  95ccb8d9807e7229274f546d4664a038  libgcc/config/arm/t-bpabi
  0db380bd8877d8414c75bef98a8920e8  libgcc/config/arm/t-elf
--- 62798,62904 ----
  291be426192f460f6a07dfe1c96ab094  libffi/testsuite/libffi.special/special.exp
  93fc3ea311b79f64004992807ce75d1e  libffi/testsuite/libffi.special/unwindtest.cc
  185d0795017fbbe253a13db8e34085f9  libffi/testsuite/libffi.special/unwindtest_ffi_call.cc
! 5d092e7f39a903f0db305fcedb1eb4e9  libgcc/ChangeLog
! 709335298d900a72f48092ad0056f60d  libgcc/Makefile.in
! 5d9265327c85f8961ccb448fa2c53f45  libgcc/config.host
! dbd4c68a64e3be09ab49bad953cf29cd  libgcc/config.in
! 36e58f05f226663c441c805c4042fdea  libgcc/config/aarch64/aarch64-unwind.h
! f85b457b3c170683ab135af0907ac329  libgcc/config/aarch64/crtfastmath.c
! f217f95eb3dbc137938c31bb981db49f  libgcc/config/aarch64/crti.S
! b5b2ae88b4d09e7d9182fccaaa9b4379  libgcc/config/aarch64/crtn.S
! 83220b953f42277456bc225bd3ade6a8  libgcc/config/aarch64/freebsd-unwind.h
! 7f8e01b2916818fc2ada3f9bf00a5355  libgcc/config/aarch64/linux-unwind.h
! 07d3732b0b340d7ab0adcbbf887ccad5  libgcc/config/aarch64/sfp-exceptions.c
! 41518e29607dd842d58e9dd94f83ed13  libgcc/config/aarch64/sfp-machine.h
! 7628a76bb190d25e359266fab493a345  libgcc/config/aarch64/sync-cache.c
! f02d3af18c9e16783374410aca962b01  libgcc/config/aarch64/t-aarch64
  3a7564780070d43ba461bc58622771af  libgcc/config/aarch64/t-softfp
! daff2bdcad3fcf9312d6a535f40a9cf5  libgcc/config/aarch64/value-unwind.h
! bc9e232398f43c5404303e5f12953378  libgcc/config/alpha/crtfastmath.c
! e98ca95c0891d736e2b5861a1530f5e7  libgcc/config/alpha/libgcc-alpha-ldbl.ver
! 7880acbfe18a7808d47104b196ce226e  libgcc/config/alpha/linux-unwind.h
! a8445899176e8dc4607cffbd723ba6cf  libgcc/config/alpha/qrnnd.S
  e06033e6f9902c9e703e237d511df6c4  libgcc/config/alpha/t-alpha
  95db551210150c5b18529c72cfdaeabf  libgcc/config/alpha/t-ieee
  70f7baadf7c58b1adae96daa38a6843f  libgcc/config/alpha/t-linux
  600b5cfe4987de3985ad1ff7316166cc  libgcc/config/alpha/t-vms
! c9bc7dc291eaca8fd47db5ef73a58a55  libgcc/config/alpha/vms-dwarf2.S
! bc1d1cc1aa9a490ef17d9703569f0a41  libgcc/config/alpha/vms-dwarf2eh.S
! 8f5a47f11250676315eb6d7d2f714c46  libgcc/config/alpha/vms-gcc_shell_handler.c
! 90bf5f74963d214c27407087ac18440c  libgcc/config/alpha/vms-unwind.h
! a818be14ef08687d8d71363a8e4081b3  libgcc/config/arc/asm.h
! 3e4fd6c45fc14e4d1979b47886936fa6  libgcc/config/arc/crti.S
! 71395a7d6a05c46983df20fe7d8c00e0  libgcc/config/arc/crtn.S
! 039858f514d090f5e8bbadea434b6747  libgcc/config/arc/crttls.S
! e4ea23e7b2a9dab57a10da4e31c8f907  libgcc/config/arc/divtab-arc700.c
! 1e5caa1fad36bca6b8eaf1f6f09c7ad1  libgcc/config/arc/dp-hack.h
! 61f0fa25bd90537461e653c0b55b1ffd  libgcc/config/arc/fp-hack.h
! fd1314bbe4285aa79b1699318ca4cec9  libgcc/config/arc/ieee-754/adddf3.S
! f1d6002f28f945494fefef45d4066204  libgcc/config/arc/ieee-754/addsf3.S
! 471a95e1703cec3a12ab8a8e034b7f7a  libgcc/config/arc/ieee-754/arc-ieee-754.h
! 7f48476d2bbfcbe22bdbfcb260e231e9  libgcc/config/arc/ieee-754/arc600-dsp/divdf3.S
! 4eaa3c29fcb1f1a82a8e29acce1eddd7  libgcc/config/arc/ieee-754/arc600-dsp/divsf3.S
! be154818e7ec72b81182da7f23e6fbf7  libgcc/config/arc/ieee-754/arc600-dsp/muldf3.S
! 4432774414e27b7e9857367deebcf9cb  libgcc/config/arc/ieee-754/arc600-dsp/mulsf3.S
! 8dd52cf9cfa8aa915bb5e8960a7ff42c  libgcc/config/arc/ieee-754/arc600-mul64/divdf3.S
! 8a80e690cf690e7b94da1169f71d72fe  libgcc/config/arc/ieee-754/arc600-mul64/divsf3.S
! a597dac60a53906578bf88f5dfe62b29  libgcc/config/arc/ieee-754/arc600-mul64/muldf3.S
! b05b8f1fdcae89f496956ab18b47f464  libgcc/config/arc/ieee-754/arc600-mul64/mulsf3.S
! 9817d352aeff8949996a2131134608ec  libgcc/config/arc/ieee-754/arc600/divsf3.S
! 61970f8ff1f8b608db91aee868b45bc3  libgcc/config/arc/ieee-754/arc600/mulsf3.S
! 3df0b5a318d85d61bf7aa63e662a0bd7  libgcc/config/arc/ieee-754/divdf3.S
! 595112a1fd9346eb0c603451ee6ba319  libgcc/config/arc/ieee-754/divsf3-stdmul.S
! 7891aec159277005c06da9d39d2568d9  libgcc/config/arc/ieee-754/divsf3.S
! 084cad25c6aeacf3c837a2e163fbfb55  libgcc/config/arc/ieee-754/divtab-arc-df.c
! b588ca4f3a6a46753e41001454221204  libgcc/config/arc/ieee-754/divtab-arc-sf.c
! 84721f6e3f68cd2bfc721e3012480c85  libgcc/config/arc/ieee-754/eqdf2.S
! f5d58c6b21520a7316ec66948a6714f6  libgcc/config/arc/ieee-754/eqsf2.S
! 8207f5719b519a66a4d5291009ee4de4  libgcc/config/arc/ieee-754/extendsfdf2.S
! 711b40fee290943fed957380d256934b  libgcc/config/arc/ieee-754/fixdfsi.S
! 3ae4373af4fd27ed9034067e68fa9147  libgcc/config/arc/ieee-754/fixsfsi.S
! c29df0f1157cf023f037c3b576d82311  libgcc/config/arc/ieee-754/fixunsdfsi.S
! 7fe75b60b6a17f66e1aa39bd8183ffa2  libgcc/config/arc/ieee-754/floatsidf.S
! e02651c4f9d42063f92eefb51aa90914  libgcc/config/arc/ieee-754/floatsisf.S
! 3b126550d0a288d20b62016836abbb7b  libgcc/config/arc/ieee-754/floatunsidf.S
! 1e8189d1b4101dd9ae84ad7fbb9d1828  libgcc/config/arc/ieee-754/gedf2.S
! 1729c0b03ca78837c7456fd6e164ce59  libgcc/config/arc/ieee-754/gesf2.S
! fe6c612b61da19017de2baa83461def8  libgcc/config/arc/ieee-754/gtdf2.S
! 4a12baf0916eea1de7f066dbd0a3139b  libgcc/config/arc/ieee-754/gtsf2.S
! bfe88fb99f44d75fa7b663b9880a65c8  libgcc/config/arc/ieee-754/muldf3.S
! 0415e4e7d6c99d22914b01d8b8733331  libgcc/config/arc/ieee-754/mulsf3.S
! a8b250608fb253754ddf9b94e37b311b  libgcc/config/arc/ieee-754/orddf2.S
! 6b93f6c4cac3f54d8af36e5c84472e47  libgcc/config/arc/ieee-754/ordsf2.S
! 6178f07c33e035c8089cdedad5994bb3  libgcc/config/arc/ieee-754/truncdfsf2.S
! 32d7fd9af8db2c51cb5592a1778688ac  libgcc/config/arc/ieee-754/uneqdf2.S
! 3a525020acefc5824cd9f2465f8debd1  libgcc/config/arc/ieee-754/uneqsf2.S
! 33b82ea4bbf14daf444fcb89da3363ef  libgcc/config/arc/initfini.c
! 69d2b37f10f79e30b7592df11b0271fb  libgcc/config/arc/lib1funcs.S
! 16802d1a93b2b905352cb21252060177  libgcc/config/arc/libgcc-excl.ver
! be67bcff1b161585743260acce917083  libgcc/config/arc/linux-unwind-reg.def
! 162e3d9e501cbe40118dbf4a7e6cbb07  libgcc/config/arc/linux-unwind.h
! 7bd91a0d61b9c481145a1ea5affdad12  libgcc/config/arc/t-arc
! b54abcf264ded5f2e525bd743e3f4df7  libgcc/config/arc/t-arc-uClibc
! b137e3a1eab76fb30d98c544e9707268  libgcc/config/arm/bpabi-lib.h
! 6149c20977af50aeff5c71afdc09ff2d  libgcc/config/arm/bpabi-v6m.S
! 46e1b18340e7f75990c6c69536b08235  libgcc/config/arm/bpabi.S
! d3a4d85e45455b12a5088c77acf64691  libgcc/config/arm/bpabi.c
! 1ba01eba65ce70ac2d2eab9f61dcbbb1  libgcc/config/arm/cmse.c
! 767aca54b116d152d50b917e3c6585b2  libgcc/config/arm/cmse_nonsecure_call.S
! 46e13fcf708354775f63e966aa8a4a64  libgcc/config/arm/crtfastmath.c
! 3b8adab43540756ddba7eb5f08f9bc44  libgcc/config/arm/crti.S
! b843b40eab3199bd0d877832922c4e63  libgcc/config/arm/crtn.S
! 61a2d4a133bc917f201501a6bad6c9f4  libgcc/config/arm/fp16.c
! 56ef73183d72145fba27e0f4c7ec7e31  libgcc/config/arm/freebsd-atomic.c
! 06b0ba76989fbb34b2d4580bddaf06ee  libgcc/config/arm/ieee754-df.S
! 466229186e960b3a29bf2d52e40e9cdc  libgcc/config/arm/ieee754-sf.S
! 460b663c5b8c8f2c22067745f4d29529  libgcc/config/arm/lib1funcs.S
! 4f724d439b82b1fbaf5163d72121d913  libgcc/config/arm/libgcc-bpabi.ver
! 6e1c8c3e2c7d30815a81802b063f6b71  libgcc/config/arm/libunwind.S
! 06b6dfcd7a64af9e76e9b6e5823ad002  libgcc/config/arm/linux-atomic-64bit.c
! 34e039861a7a5305db42847339885fca  libgcc/config/arm/linux-atomic.c
! c186e446a7635ab2a7908886135e0e4d  libgcc/config/arm/pr-support.c
  131990bf9b0a8ab71c7abf0c49d4fbfa  libgcc/config/arm/sfp-machine.h
! 46ef997f671b1c49f1bded67ca8e29fd  libgcc/config/arm/symbian-lib.h
  66fdc8dc1e384d61a9a0c704401bc4bc  libgcc/config/arm/t-arm
  95ccb8d9807e7229274f546d4664a038  libgcc/config/arm/t-bpabi
  0db380bd8877d8414c75bef98a8920e8  libgcc/config/arm/t-elf
*************** f1b505a32bcf62e674988eec0748c12b  libgcc
*** 59102,59211 ****
  dd1ccf1641e646fd2c36d154c45a78f3  libgcc/config/arm/t-softfp
  85c2b00db81a0aa187f2e2dfe5ace0b1  libgcc/config/arm/t-strongarm-elf
  fc87e45e073829d21e9427a38f435e3b  libgcc/config/arm/t-symbian
  0b61332cccc4af9b144b6db99e213dcb  libgcc/config/arm/t-wince-pe
! 70a16725f4cbb3369c2086af7752dd17  libgcc/config/arm/unaligned-funcs.c
! 0403e157c9deed6b2d504c192dd6e673  libgcc/config/arm/unwind-arm.c
! 0a62a31d1297312d779395f1d079471e  libgcc/config/arm/unwind-arm.h
! 65c21a5ccb1d18ca52deb9336dc5b0cb  libgcc/config/avr/avr-lib.h
! 30ccc505e2e79c3cb960f64048440316  libgcc/config/avr/lib1funcs-fixed.S
! 51474f31c7676cb9fafd2c32dc3973e5  libgcc/config/avr/lib1funcs.S
  622f81485f02d0eac2caaafa7d3a2fd1  libgcc/config/avr/lib2-object.mk
! cc19c0d61b306f73b1915f22e38bd296  libgcc/config/avr/lib2funcs.c
  3c482476c0d7dea9863a5a5ace4040bf  libgcc/config/avr/t-avr
  2982871abe13fbaed3df1b502fb18d2f  libgcc/config/avr/t-avrlibc
! 206e168fc675f1f5a977ac2c5272191e  libgcc/config/bfin/crti.S
! 1fd9fd07c36e51da338213c09206380a  libgcc/config/bfin/crtlibid.S
! 48c1d10756bf94923cbb700db8b7d7c9  libgcc/config/bfin/crtn.S
! 0995dfa2a3aafb7a6843126106e3fc6b  libgcc/config/bfin/lib1funcs.S
! 7e13562c80372308b76dfca1454f0d5e  libgcc/config/bfin/libgcc-glibc.ver
! dea89c7fb3124a14d042f3568339dfd2  libgcc/config/bfin/linux-unwind.h
  4e54ca63fc628fdd56df2687a2bf457e  libgcc/config/bfin/t-bfin
  a5e909e203a6fbf202b2eaad6bff3601  libgcc/config/bfin/t-crtlibid
  17298642a82c8a2809260d1eb08f7e4e  libgcc/config/bfin/t-crtstuff
  046cf1a86c627fa8bdd6ee2554a9b39f  libgcc/config/bfin/t-linux
! 05a7f2d23f1b4af118af98176e93b7a7  libgcc/config/c6x/c6x-abi.h
! c600ff527c93848c8e9a45eba37c8e8a  libgcc/config/c6x/crti.S
! dab4897ff1876c95bb08440bf9a37a95  libgcc/config/c6x/crtn.S
! c709479c891995531ce6fdeeba3912e3  libgcc/config/c6x/eqd.c
! 76ab33b21dc35d2cd1e3cabc346d100f  libgcc/config/c6x/eqf.c
! 2810da0a50f030564f2ca28e7a759d91  libgcc/config/c6x/ged.c
! bc1d7cfe8fbf6219a5746f35adc4a9dc  libgcc/config/c6x/gef.c
! 83fe16c098f26861425b6ffbebfbda2d  libgcc/config/c6x/gtd.c
! 7b9300155913b5878cb04a9ddbf42341  libgcc/config/c6x/gtf.c
! 75721ec6113a1e4ec4b9a59a1c2225f7  libgcc/config/c6x/led.c
! 7e2287a7477df497047cbbf69684ba8b  libgcc/config/c6x/lef.c
! 7cd9199fb2c5efb014bbb5be2e856e6c  libgcc/config/c6x/lib1funcs.S
! efc2db1f7e786efd752971b94bbcd11a  libgcc/config/c6x/libgcc-eabi.ver
  4a76cb88901443653c00054f976322c0  libgcc/config/c6x/libunwind.S
! 0f3aefbcd4312f79d5891646a28bd229  libgcc/config/c6x/ltd.c
! 598b9da5f805075a8b416cbf410bdd34  libgcc/config/c6x/ltf.c
! 45ef4cff69e2ef1f1570732fb41532d7  libgcc/config/c6x/pr-support.c
! 856c45df77d0c818021a46802a86013a  libgcc/config/c6x/sfp-machine.h
  e001c742f33c68e3a33a709c345e0c3f  libgcc/config/c6x/t-elf
  7be94443a1640eded81b166ae8fe575f  libgcc/config/c6x/t-uclinux
! ed6863f28e05c82ce043c0e9dc4e321b  libgcc/config/c6x/unwind-c6x.c
! fe77863c9e6878842304330a94bef76d  libgcc/config/c6x/unwind-c6x.h
! 97c61a9402a1d9955a70838c245c40bc  libgcc/config/cr16/crti.S
! 1bcd73804f84b9610e07c6dfc12ac1b2  libgcc/config/cr16/crtlibid.S
! 0ecd3386e6cc28551e82166ff3ca565d  libgcc/config/cr16/crtn.S
! 2146f008c2e39e7e483c0c17b7edc753  libgcc/config/cr16/divmodhi3.c
! 2769a91f30a2670169e9b2cf8b608d6c  libgcc/config/cr16/lib1funcs.S
! 776c2cd21144d55c83a1264cc317646c  libgcc/config/cr16/t-cr16
! 60f932ae90a6dd8a1271250e59ba146e  libgcc/config/cr16/t-crtlibid
! ece6f351a29fc51ddb417f3a555a6c5b  libgcc/config/cr16/unwind-cr16.c
! 1afd467dcaa5287de5d54f97b048f00b  libgcc/config/cr16/unwind-dw2.h
! f0928cf75bdd5b01da5c6a057a2281e7  libgcc/config/cris/arit.c
  b297586b3a27e883f4a2a383318fa952  libgcc/config/cris/libgcc-glibc.ver
! 1175ba71360294484ac8f30a776694e2  libgcc/config/cris/mulsi3.S
! ef8b25de213ded1f0902a6294d25fad4  libgcc/config/cris/sfp-machine.h
  9a0bcef0779a9665ae5b963049e27ac8  libgcc/config/cris/t-cris
  b9dc89a49f32db0757703a40d18557af  libgcc/config/cris/t-elfmulti
  f838221a8c8d146ecd073adbd477c282  libgcc/config/cris/t-linux
! 2fab80d03a8c79d527a9454c3c19abe4  libgcc/config/cris/umulsidi3.S
! 9371518551234fcb8a51a7ddf6562cb3  libgcc/config/darwin-64.c
! 40bf1fa324d6e401f8eb321d3337c6eb  libgcc/config/darwin-crt-tm.c
! f3a3d56d848285ed463cdc6dd347c42b  libgcc/config/darwin-crt3.c
! 6b47304513a9651ccb9ebb6a59a399ca  libgcc/config/epiphany/crti.S
! bb02de89a5a7ce46325192851b9639d0  libgcc/config/epiphany/crtint.S
! 269c7f794adc51cd946f11ba95b87094  libgcc/config/epiphany/crtm1reg-r43.S
! a42e38141aea716fd599da6e1a0dbd15  libgcc/config/epiphany/crtm1reg-r63.S
! c4daa11543eb8b4d1c309144f1d702f8  libgcc/config/epiphany/crtn.S
! 44ab3cff92b275ae7d44934cd95252ac  libgcc/config/epiphany/crtrunc.S
! b2f57c4a3066f76a0032666058adefec  libgcc/config/epiphany/divsi3-float.S
! 090e1d07178178c0d49da7bb14471e13  libgcc/config/epiphany/divsi3.S
! 4072487ef633cccaf0f279c4ab74391b  libgcc/config/epiphany/divsi3.c
! 8c87d1bc6174abc85301c18e8239b084  libgcc/config/epiphany/epiphany-asm.h
! fcfdb49c4f07b5199a70eccb0395faf4  libgcc/config/epiphany/ieee-754/eqsf2.S
! a634224a98f5f336c05f86d5c36dfa71  libgcc/config/epiphany/ieee-754/fast_div.S
! cb3d308c022b07935f6913c1d52dc221  libgcc/config/epiphany/ieee-754/gtesf2.S
! efdb3ca10f88eaf87e68533ea37de61d  libgcc/config/epiphany/ieee-754/ordsf2.S
! 57a3c9eeb85bd7820d35c4097ef76986  libgcc/config/epiphany/ieee-754/uneqsf2.S
! 827be2fddce8bfd3fc257bd33a7837f0  libgcc/config/epiphany/modsi3-float.S
! fed202306666ff62879f552201fcad59  libgcc/config/epiphany/modsi3.S
! 6904cb359281944c29acee72b5f9bd63  libgcc/config/epiphany/modsi3.c
! bdc4885955f69c9dbece3d6ce18603ad  libgcc/config/epiphany/mulsi3.c
  d76fc3e367e9f20ca1d6e4b8ef979bd9  libgcc/config/epiphany/t-custom-eqsf
! 0394322895d4e50ee752feafc0dbb1a5  libgcc/config/epiphany/t-epiphany
! ef286dcfbafedf986b3c41c93cc32425  libgcc/config/epiphany/udivsi3-float.S
! b0aabfc0de0376a0862357696abcd293  libgcc/config/epiphany/udivsi3-float.c
! 074b55aab7dc7ff028c28e2bff4262e6  libgcc/config/epiphany/udivsi3.S
! 0cc11c0fa4fef89e8dfec3e85df9af2c  libgcc/config/epiphany/udivsi3.c
! acec6c488a10fc6cd3b27e57ff0aaca8  libgcc/config/epiphany/umodsi3-float.S
! d8a2c965e331f41dc85fc23a19ce170a  libgcc/config/epiphany/umodsi3.S
! 16b97d8292477f477fb0fd2c7083f162  libgcc/config/epiphany/umodsi3.c
! e819dc857d0223bc98ed169e5f380d01  libgcc/config/fr30/crti.S
! acdab7fb355e153353f4d4ee9be89ca1  libgcc/config/fr30/crtn.S
! 6066d6d50bac6a515b5df8bf95cbe278  libgcc/config/fr30/lib1funcs.S
  ee1781f6076fe4696c4710d29bcaa9f2  libgcc/config/fr30/t-fr30
! 35fbb83b84da24fc479cce1b39b2b041  libgcc/config/frv/cmovd.c
! b2f7c33d58b9aa3770bb9abb8c6c554a  libgcc/config/frv/cmovh.c
! 2ddd725583d6409cbeb69e2d6c3829dd  libgcc/config/frv/cmovw.c
! ba31e40c0f76e17784458b69f47cd293  libgcc/config/frv/elf-lib.h
! 8e6bf8b75c5c30823ea9bb7c918274bc  libgcc/config/frv/frv-abi.h
! fee699936ed42c7200d6771d83a36557  libgcc/config/frv/frvbegin.c
! 8ba37a05a806fc004c9e161dcda4c9aa  libgcc/config/frv/frvend.c
! 8a6b4e11e8a82b1d53214aa0eb44d287  libgcc/config/frv/lib1funcs.S
! 8b7d07c4af47b74cbede31c65e365a3c  libgcc/config/frv/libgcc-glibc.ver
  519042a46e82243706e07f0df8d12e35  libgcc/config/frv/modi.c
  f7d4923f0512faafd07369fa6bccd718  libgcc/config/frv/t-frv
  edf3d4afc7174e81e4b47c0bb0de7522  libgcc/config/frv/t-linux
--- 62909,63020 ----
  dd1ccf1641e646fd2c36d154c45a78f3  libgcc/config/arm/t-softfp
  85c2b00db81a0aa187f2e2dfe5ace0b1  libgcc/config/arm/t-strongarm-elf
  fc87e45e073829d21e9427a38f435e3b  libgcc/config/arm/t-symbian
+ 49da02954caef0527c55b87af2bd1c4b  libgcc/config/arm/t-vxworks7
  0b61332cccc4af9b144b6db99e213dcb  libgcc/config/arm/t-wince-pe
! 6a7c45ca06c640ac7fa110a36820581b  libgcc/config/arm/unaligned-funcs.c
! aa244b49140e42d19067fded0dcd1a57  libgcc/config/arm/unwind-arm-vxworks.c
! efdbef3a79bf02b5e3a2dd9831354dfb  libgcc/config/arm/unwind-arm.c
! 8f29e19ff90b0184887fe2c42d1d7058  libgcc/config/arm/unwind-arm.h
! ebc83ec5546aaed8984441ff56d87404  libgcc/config/avr/avr-lib.h
! 597affa085975a34af50453b7d10c1aa  libgcc/config/avr/lib1funcs-fixed.S
! 5d983137dd79e15bedd1b5a87dd38709  libgcc/config/avr/lib1funcs.S
  622f81485f02d0eac2caaafa7d3a2fd1  libgcc/config/avr/lib2-object.mk
! 3b31ff2ef2b3a1cef2d78bace45a3623  libgcc/config/avr/lib2funcs.c
  3c482476c0d7dea9863a5a5ace4040bf  libgcc/config/avr/t-avr
  2982871abe13fbaed3df1b502fb18d2f  libgcc/config/avr/t-avrlibc
! 462ffe04c245545de006a5a9c40d6fb2  libgcc/config/bfin/crti.S
! 3b6cc721e8fba89c5a14acd4d00af356  libgcc/config/bfin/crtlibid.S
! 304f86901cf35a8248addf820af0f900  libgcc/config/bfin/crtn.S
! 84dc2c917cae2825d870b11992561d26  libgcc/config/bfin/lib1funcs.S
! 036920db8f13c2dd5222c1ffc9b9871c  libgcc/config/bfin/libgcc-glibc.ver
! bfb3e8727390563e04827465ac409e95  libgcc/config/bfin/linux-unwind.h
  4e54ca63fc628fdd56df2687a2bf457e  libgcc/config/bfin/t-bfin
  a5e909e203a6fbf202b2eaad6bff3601  libgcc/config/bfin/t-crtlibid
  17298642a82c8a2809260d1eb08f7e4e  libgcc/config/bfin/t-crtstuff
  046cf1a86c627fa8bdd6ee2554a9b39f  libgcc/config/bfin/t-linux
! 570b37742744f37db3d3fdfc02b970c9  libgcc/config/c6x/c6x-abi.h
! 77dd21590754c4478bb412995f4da54c  libgcc/config/c6x/crti.S
! 328d57cdfded30dedc08b5c777e0d2f8  libgcc/config/c6x/crtn.S
! 912c364b0db5c5b8506796f5f2a49f1d  libgcc/config/c6x/eqd.c
! c6463a73050a19246ecb8f9ab4aae67a  libgcc/config/c6x/eqf.c
! 808bac6cc5795ec48a4d0dbb916f397a  libgcc/config/c6x/ged.c
! a88d32f37707bcbaab82b5a279d38c68  libgcc/config/c6x/gef.c
! 7ce0764cbe9f39251312f15be77e3ae2  libgcc/config/c6x/gtd.c
! 4b08870b97e1b9c7d5301810a69d8422  libgcc/config/c6x/gtf.c
! 3174a9ad1f0fdb0e5353930de29fd590  libgcc/config/c6x/led.c
! da84f3a1ed9fe5c0aebd573c1a217490  libgcc/config/c6x/lef.c
! 749bfcb5db361cb8d48bc193ba2c7318  libgcc/config/c6x/lib1funcs.S
! ec2d0f1e7a8388f4bd5848865b8e2653  libgcc/config/c6x/libgcc-eabi.ver
  4a76cb88901443653c00054f976322c0  libgcc/config/c6x/libunwind.S
! fbcb3216ba1b9fd8f02e31ef7e54d4a4  libgcc/config/c6x/ltd.c
! 415c48a527344e07ef5ea198d7e72d0f  libgcc/config/c6x/ltf.c
! 906c62e39f13d2be738f6561dce6b203  libgcc/config/c6x/pr-support.c
! 7ea9035d3488216e249d16360d1c7476  libgcc/config/c6x/sfp-machine.h
  e001c742f33c68e3a33a709c345e0c3f  libgcc/config/c6x/t-elf
  7be94443a1640eded81b166ae8fe575f  libgcc/config/c6x/t-uclinux
! eb5c0f0ebc61ac91f6ba975d890b2095  libgcc/config/c6x/unwind-c6x.c
! 74f1536be31ef581628b9859e534ac41  libgcc/config/c6x/unwind-c6x.h
! b7df371d5e0a896820a5fc2444c46fec  libgcc/config/cr16/crti.S
! 64157b3dc122d994dc625ff8fde6f36c  libgcc/config/cr16/crtlibid.S
! 06c489b80b1b87806f3ca1aa43203b16  libgcc/config/cr16/crtn.S
! 010cb085596a9ad93fef3b64ba9a4288  libgcc/config/cr16/divmodhi3.c
! 8f0044baa3bdf2bd48cad9a0a2364677  libgcc/config/cr16/lib1funcs.S
! 7c562c5efce84f3ffc931c41a9e4e9fd  libgcc/config/cr16/t-cr16
! a01346de90693336937cfbc82d6f4344  libgcc/config/cr16/t-crtlibid
! 6499d5e7ea13759ef621da856a1b35e8  libgcc/config/cr16/unwind-cr16.c
! c00383c58b6604c79d270a1efe0e7a8d  libgcc/config/cr16/unwind-dw2.h
! 5ba843f9c7acb90d09b3bae7df75eecc  libgcc/config/cris/arit.c
  b297586b3a27e883f4a2a383318fa952  libgcc/config/cris/libgcc-glibc.ver
! a4a469f1e44ff5c4077faf560f6cb8d7  libgcc/config/cris/mulsi3.S
! 549a2f544b886ba5febed42bc3c77ed4  libgcc/config/cris/sfp-machine.h
  9a0bcef0779a9665ae5b963049e27ac8  libgcc/config/cris/t-cris
  b9dc89a49f32db0757703a40d18557af  libgcc/config/cris/t-elfmulti
  f838221a8c8d146ecd073adbd477c282  libgcc/config/cris/t-linux
! a55effb76dcceef84e79bf4b5322db4d  libgcc/config/cris/umulsidi3.S
! 3636c5e571f21f8711fc787fe2e4f28c  libgcc/config/darwin-64.c
! d4d62340af9ab9e967d5b5d7c3eee5bf  libgcc/config/darwin-crt-tm.c
! 8e0eeb754ed41375dc86efb939247c31  libgcc/config/darwin-crt3.c
! ef356e373799c50929a9db46b7d2846b  libgcc/config/epiphany/crti.S
! 1d2e357f726c98ca3c135369c9d765d6  libgcc/config/epiphany/crtint.S
! efe360978ed94b1ab6a6ec49a2e4e678  libgcc/config/epiphany/crtm1reg-r43.S
! 9ca87bfc04be07c47b8b0e287481fbca  libgcc/config/epiphany/crtm1reg-r63.S
! 7548287ebc3551d0390f2e8df836b175  libgcc/config/epiphany/crtn.S
! 443adf0c368de316f9328dcce58b0591  libgcc/config/epiphany/crtrunc.S
! 5931a60d5eb103a02fdf60b71b6a52de  libgcc/config/epiphany/divsi3-float.S
! 18c98af3dce512828b4015619572a931  libgcc/config/epiphany/divsi3.S
! bba9cc1a72d9f3db5a254f3edf4a1fea  libgcc/config/epiphany/divsi3.c
! f382727f91eceb76205e2180b07eb213  libgcc/config/epiphany/epiphany-asm.h
! 0d3b7f4844b8df0096d5036a66068dd5  libgcc/config/epiphany/ieee-754/eqsf2.S
! 2770e9e92f43e3e0af1b527a4bd9633d  libgcc/config/epiphany/ieee-754/fast_div.S
! 415eb3fb6c77691941f604b8c8d8ff7f  libgcc/config/epiphany/ieee-754/gtesf2.S
! 12de7eccb4b05e57285dc38c9f7b10d6  libgcc/config/epiphany/ieee-754/ordsf2.S
! 78269e4c79ca9d7bac5cfc885e29d767  libgcc/config/epiphany/ieee-754/uneqsf2.S
! 4841c6af59af2483aedb7ac6404a4487  libgcc/config/epiphany/modsi3-float.S
! cbcd82394eb951e02cb93936e4c37d05  libgcc/config/epiphany/modsi3.S
! d7a535ec59eba48defe3fb524dd913fe  libgcc/config/epiphany/modsi3.c
! 333d864990f64421ea115de008c43ca7  libgcc/config/epiphany/mulsi3.c
  d76fc3e367e9f20ca1d6e4b8ef979bd9  libgcc/config/epiphany/t-custom-eqsf
! c3f791f5b6621cd84f60cb58dcff5516  libgcc/config/epiphany/t-epiphany
! fe443224bd8eebba54935957bf711dbb  libgcc/config/epiphany/udivsi3-float.S
! 22cba55e74001b2d7ebd3e1d057df711  libgcc/config/epiphany/udivsi3-float.c
! 63269503265513e3ad7f9b02685cceca  libgcc/config/epiphany/udivsi3.S
! 6e6396ce20fbc2f0ba31a115386130c0  libgcc/config/epiphany/udivsi3.c
! fcc7772d9bf686c1e748a7a73220a448  libgcc/config/epiphany/umodsi3-float.S
! b39a7c96970e1959977e03d3ffc30ccf  libgcc/config/epiphany/umodsi3.S
! 83188e83f796c4286f3e95bd00e56f06  libgcc/config/epiphany/umodsi3.c
! a9543dab7759d1da09f70d8f44f07b5e  libgcc/config/fr30/crti.S
! 80bf22efa2117cee9ca2346e076ef401  libgcc/config/fr30/crtn.S
! 74e46706da17523ac9c4b22df9a54365  libgcc/config/fr30/lib1funcs.S
  ee1781f6076fe4696c4710d29bcaa9f2  libgcc/config/fr30/t-fr30
! a7c3b004c3d9619dbf0693ac5b61d7ec  libgcc/config/frv/cmovd.c
! 3aaf13baedf8c08df7c5decbe09152f1  libgcc/config/frv/cmovh.c
! 921ed04c51eabb8364498b5209d37d22  libgcc/config/frv/cmovw.c
! eee706379c99b89d578440e596ed4a5a  libgcc/config/frv/elf-lib.h
! 608e50f1c2115ce2ce5a437a8fcf6edb  libgcc/config/frv/frv-abi.h
! 5942ec6c2026c3b960cb0146e0499a37  libgcc/config/frv/frvbegin.c
! 0d2ba30b95b8d5656533c83fdea6cb62  libgcc/config/frv/frvend.c
! b4a66c69fce5eb0fba4debce58ccc149  libgcc/config/frv/lib1funcs.S
! afb1aa4105d82cf6ed9f9c8d4bd3a417  libgcc/config/frv/libgcc-glibc.ver
  519042a46e82243706e07f0df8d12e35  libgcc/config/frv/modi.c
  f7d4923f0512faafd07369fa6bccd718  libgcc/config/frv/t-frv
  edf3d4afc7174e81e4b47c0bb0de7522  libgcc/config/frv/t-linux
*************** a69068beb04e8a98db92cd1d366e5a6f  libgcc
*** 59214,59247 ****
  c363a68408b30fe1ae97782cfb8a4ac1  libgcc/config/frv/ulltod.c
  8655cce7a18893493cc17391c6ce08d5  libgcc/config/frv/ulltof.c
  756aa4a0c6f33a0203e0ea6594c19e38  libgcc/config/frv/umodi.c
! 1b2609468aceab14bab6df3e817f4373  libgcc/config/ft32/crti-hw.S
! 0269a0afd616ee3e6953dbeae2393e02  libgcc/config/ft32/crti.S
! 4368f5d3f66855ff2f8533a3f5e3ad54  libgcc/config/ft32/crtn.S
  4d440904c0919d8bade72af495ee932b  libgcc/config/ft32/epilog.S
! d91d7d462e54a58068681aed789e0215  libgcc/config/ft32/lib1funcs.S
  fd43d6ac7bf2546f0be1ff27b92cf494  libgcc/config/ft32/prolog.S
  7651ba55a7767a127d4d8d9e1798196d  libgcc/config/ft32/sfp-machine.h
  de53de7ae179ee6c1472a52a63fffec9  libgcc/config/ft32/t-ft32
! 554b134f50c2e68e562b1df11a64f998  libgcc/config/gthr-lynx.h
! c2d141186e8f1b4541db27fc09e82c25  libgcc/config/gthr-rtems.h
! 30680f90191a26b58691eec005ab126a  libgcc/config/gthr-vxworks.h
! 1721e0d5f49d1f66aedb9aae8d5a07d4  libgcc/config/h8300/clzhi2.c
! 7a2a24697b3ccb6561092fac93c9735a  libgcc/config/h8300/crti.S
! 4b0d0cd4021b23a8cead478a8aa92be3  libgcc/config/h8300/crtn.S
! fee1d0f8988e73f2a0d2e245809f8ff2  libgcc/config/h8300/ctzhi2.c
! 24e823c8e8faa83c22fbb25643050171  libgcc/config/h8300/fixunssfsi.c
  378e602ed89f497e602776d99b46d7ad  libgcc/config/h8300/h8300-lib.h
! 13e616187848b12bcecb93f984821a9c  libgcc/config/h8300/lib1funcs.S
! 201485a2db217d80534602e601088975  libgcc/config/h8300/parityhi2.c
! 9d25e865b93717446977962afa276381  libgcc/config/h8300/popcounthi2.c
! 3a14cd345fb37d4e60fde2b8a67a5344  libgcc/config/h8300/sfp-machine.h
  e002eff640bc32723d0216927bc99406  libgcc/config/h8300/t-h8300
  5e306047059c21ece876039122734094  libgcc/config/h8300/t-linux
! 19c5170c5dec8a03edfa1b5ee177bd82  libgcc/config/hardfp.c
  a8754cebd217459a0e9d14503d180eab  libgcc/config/i386/32/sfp-machine.h
  33fdee54eed1c202a39234d129f2a7ae  libgcc/config/i386/32/t-iamcu
  8271562f1de2b3fa5b976454b83bfdc0  libgcc/config/i386/32/t-softfp
! 4e3473b222a95cb3c4c3f8bcfeab0c14  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
--- 63023,63056 ----
  c363a68408b30fe1ae97782cfb8a4ac1  libgcc/config/frv/ulltod.c
  8655cce7a18893493cc17391c6ce08d5  libgcc/config/frv/ulltof.c
  756aa4a0c6f33a0203e0ea6594c19e38  libgcc/config/frv/umodi.c
! 63a86c0eba76d6ea5b13351162b69e89  libgcc/config/ft32/crti-hw.S
! 939c988b1111b1d7b316e6e3026e3055  libgcc/config/ft32/crti.S
! 39f019a91953a4e800b28293d1a094b2  libgcc/config/ft32/crtn.S
  4d440904c0919d8bade72af495ee932b  libgcc/config/ft32/epilog.S
! f3d9211d92fb2850b23db70c0a52c853  libgcc/config/ft32/lib1funcs.S
  fd43d6ac7bf2546f0be1ff27b92cf494  libgcc/config/ft32/prolog.S
  7651ba55a7767a127d4d8d9e1798196d  libgcc/config/ft32/sfp-machine.h
  de53de7ae179ee6c1472a52a63fffec9  libgcc/config/ft32/t-ft32
! 91ca82081f419f797598768c3707b7cd  libgcc/config/gthr-lynx.h
! 96e81a8d689a5abdb50931b027865d4c  libgcc/config/gthr-rtems.h
! 5e3217a1628eb95c7e5c9688e40c2731  libgcc/config/gthr-vxworks.h
! c51459d3317193ef8dd7214d9e73cf58  libgcc/config/h8300/clzhi2.c
! 5691180a36474575feed64676b617e24  libgcc/config/h8300/crti.S
! 1e308c18f35b19a96bccdcd9eefd0530  libgcc/config/h8300/crtn.S
! 1b3c53e32407a8e3b866b6ffb70806e9  libgcc/config/h8300/ctzhi2.c
! 43ac0984c9e17d920529fc89e40d15b3  libgcc/config/h8300/fixunssfsi.c
  378e602ed89f497e602776d99b46d7ad  libgcc/config/h8300/h8300-lib.h
! 9381c5474bebcbd0df0e5a8289b60e2f  libgcc/config/h8300/lib1funcs.S
! d6631c5750d2a2253e069e4367deccc2  libgcc/config/h8300/parityhi2.c
! 2b7a3cc26f60ecf03fbcf94565e18beb  libgcc/config/h8300/popcounthi2.c
! af64f4c20447edd91a7f20b155153ba1  libgcc/config/h8300/sfp-machine.h
  e002eff640bc32723d0216927bc99406  libgcc/config/h8300/t-h8300
  5e306047059c21ece876039122734094  libgcc/config/h8300/t-linux
! 67fe5ca97e806329bef19d266ccb27a0  libgcc/config/hardfp.c
  a8754cebd217459a0e9d14503d180eab  libgcc/config/i386/32/sfp-machine.h
  33fdee54eed1c202a39234d129f2a7ae  libgcc/config/i386/32/t-iamcu
  8271562f1de2b3fa5b976454b83bfdc0  libgcc/config/i386/32/t-softfp
! f397808afa63ea59a6eb0db2c84b608d  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
*************** b2bcf8b944f937cb4f3799c02670dcee  libgcc
*** 59250,59283 ****
  a92aa384cf96b81c0dbb642826200dd7  libgcc/config/i386/64/letf2.c
  d1337b28acd8dbde9817492f9027dbc3  libgcc/config/i386/64/sfp-machine.h
  498bbaf506a5bbdaa793f66399ece491  libgcc/config/i386/64/t-softfp-compat
! bcf7d34813251ae035fd569e9b344cbc  libgcc/config/i386/cpuinfo.c
! fbfb418db9224afc8668787ab053ea28  libgcc/config/i386/cpuinfo.h
! 8234b9407339e72e409cf68df3a04562  libgcc/config/i386/crtfastmath.c
! 628f5b3a30682dae361a41bcb7a01584  libgcc/config/i386/crti.S
! 8ada7440e6c59cd2fb887a40a4b143ba  libgcc/config/i386/crtn.S
! 955d4df53bbd2454c1d5ede43567ab97  libgcc/config/i386/crtprec.c
! c0849f930fdce7aae6375eff1e71563a  libgcc/config/i386/cygming-crtbegin.c
! a15c0e15f0a6c9989393afdf26fb8d30  libgcc/config/i386/cygming-crtend.c
! 9c072823f180d7d3bdd78f0320373fd9  libgcc/config/i386/cygwin.S
! 834278e2edcb6ba6fc0f5fc9e68e87a1  libgcc/config/i386/darwin-lib.h
! 920049a2261f8bd7966f7bc02ed26954  libgcc/config/i386/dragonfly-unwind.h
! eba0fa18705d83070595c471d6663ee1  libgcc/config/i386/elf-lib.h
! 95e880092a36064dfae4fb4fd2cb60a6  libgcc/config/i386/enable-execute-stack-mingw32.c
! 8cb90584522452f1f644dba6971e1fbd  libgcc/config/i386/freebsd-unwind.h
! 81a125c25b28c03ba8d18c8590c93ef1  libgcc/config/i386/gthr-win32.c
! 35160d5e260cecc05023387a8a4411e0  libgcc/config/i386/gthr-win32.h
! f8fdbd2a13bbc3ba81f75a069ad8c59a  libgcc/config/i386/libgcc-bsd.ver
! ca5a5f8410fd3b99ed2fd3eef336fc8b  libgcc/config/i386/libgcc-cygming.ver
! cea0210f0c071b362b49db3d0f9985af  libgcc/config/i386/libgcc-darwin.10.4.ver
! 5aaaa4ed215c4ab2b93a13c0461e870e  libgcc/config/i386/libgcc-darwin.10.5.ver
! 6c531dff2b0b516fe61b79251c85c3e2  libgcc/config/i386/libgcc-glibc.ver
! 18e641be752a4acd75eb9ebfca9f3520  libgcc/config/i386/libgcc-sol2.ver
! 9db8911373869918ef86f5590d868b14  libgcc/config/i386/linux-unwind.h
! c279b955db9fa9cb3d07e3a101ad5a7d  libgcc/config/i386/morestack.S
! 2da63dfccefa922b713e390a2a8f0db1  libgcc/config/i386/sfp-exceptions.c
! eff2f552940053c3c5d9d09dee943b13  libgcc/config/i386/sfp-machine.h
! a40997270ce6fa775a5c2e12b2443096  libgcc/config/i386/sol2-c1.S
! 6ac88defcc34e69a8eb5433c3e2a488b  libgcc/config/i386/sol2-unwind.h
  659ac3a437c6f9ca693e1d3ef6e7fe4a  libgcc/config/i386/t-chkstk
  1201000dc1a51cde975c1718ea1967b5  libgcc/config/i386/t-cpuinfo
  38dbc5389f2a0356da55f21c984affbc  libgcc/config/i386/t-cpuinfo-static
--- 63059,63112 ----
  a92aa384cf96b81c0dbb642826200dd7  libgcc/config/i386/64/letf2.c
  d1337b28acd8dbde9817492f9027dbc3  libgcc/config/i386/64/sfp-machine.h
  498bbaf506a5bbdaa793f66399ece491  libgcc/config/i386/64/t-softfp-compat
! 81f82acfc38a3bfdce249066001d9818  libgcc/config/i386/avx_resms64.S
! d4cd30e890b5d772946c79359704fc0b  libgcc/config/i386/avx_resms64f.S
! 793f1f3f3c09d77ed96b1a0d7399432c  libgcc/config/i386/avx_resms64fx.S
! 0987e17186e8a33dbf7c39d7934d4861  libgcc/config/i386/avx_resms64x.S
! ef88ad808d3f1101d7e96fae5706660f  libgcc/config/i386/avx_savms64.S
! 12b992c114b195cf886a7a218b0d1e54  libgcc/config/i386/avx_savms64f.S
! 34ceece41db0ba2124ff75c15b17d820  libgcc/config/i386/cpuinfo.c
! 0199631b6b313cd680cf67ccd88ca056  libgcc/config/i386/cpuinfo.h
! 71363ae0875b66c23d19f889195019f4  libgcc/config/i386/crtfastmath.c
! e1c25634f7745487a2bccfc09e994abc  libgcc/config/i386/crti.S
! 95bab3d8694997922ba724e994ed7d0f  libgcc/config/i386/crtn.S
! 723ebf6df6f990ab62084bd9218939dd  libgcc/config/i386/crtprec.c
! 0efdd4b6897175cddcd05b288144a5a2  libgcc/config/i386/cygming-crtbegin.c
! 8562814d6701a7d28868a20e4f420774  libgcc/config/i386/cygming-crtend.c
! 56c91a8865601db18c5d8cfc71142cd0  libgcc/config/i386/cygwin.S
! 69ef062953252b43b3123d021ff58047  libgcc/config/i386/darwin-lib.h
! 459bda9402b7697238657e170b9bee15  libgcc/config/i386/dragonfly-unwind.h
! 91b09056cec15250342bf8fb028fc9d9  libgcc/config/i386/elf-lib.h
! 581c18fad391d9cee08aaba5ebf98238  libgcc/config/i386/enable-execute-stack-mingw32.c
! 489de14657776414135f80dc0415a408  libgcc/config/i386/freebsd-unwind.h
! f885d1707b4656c59a5fa1dbf8a99093  libgcc/config/i386/gthr-win32.c
! 6c2cf3eb619e3795160f2e5bf09d0c4f  libgcc/config/i386/gthr-win32.h
! b2115fe4ae58453e04a0317ac8b717a8  libgcc/config/i386/i386-asm.h
! 471016e468514fe04ced07d9539944ac  libgcc/config/i386/libgcc-bsd.ver
! becb3143d424fd60f44ab945dfd77f84  libgcc/config/i386/libgcc-cygming.ver
! fb8be577b54c0f7a1be6db4ad5ca3cf6  libgcc/config/i386/libgcc-darwin.10.4.ver
! 3a10b924b5fd2b99d1d9f8db1ce3dd9b  libgcc/config/i386/libgcc-darwin.10.5.ver
! c75b06b02a7b654686448d804e7f87c2  libgcc/config/i386/libgcc-glibc.ver
! 9cc98e8c8165f2ee8db8a1be0d63a0f0  libgcc/config/i386/libgcc-sol2.ver
! 67917e67a5d71d55a8988535d597ae03  libgcc/config/i386/linux-unwind.h
! c0032e5b258b42aed220f123e002e398  libgcc/config/i386/morestack.S
! 76e40139babee3034dd77fa91a622a45  libgcc/config/i386/resms64.h
! 2371489fa6ed3047312dd1db349d1f4f  libgcc/config/i386/resms64f.h
! 603ccc18e884798932f23d6c7e61e29d  libgcc/config/i386/resms64fx.h
! 377237cac8e69fe5e902c1fdb626792d  libgcc/config/i386/resms64x.h
! ce93c7e46603d30ddf390c30651ede3e  libgcc/config/i386/savms64.h
! 8e22b0810d12d90c224b4cb23a5208e6  libgcc/config/i386/savms64f.h
! 3a2604d40c8466f458c927787a919379  libgcc/config/i386/sfp-exceptions.c
! d34238cdb06dae0b56a3a517467683d3  libgcc/config/i386/sfp-machine.h
! fcb34ec9e4373e174ef7f83010187b3b  libgcc/config/i386/shadow-stack-unwind.h
! 9a71d5555eea406e9a8551a44af6769b  libgcc/config/i386/sol2-c1.S
! ecdbe6068ed717541e6b0756938f3ddb  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
! d1e5750257486a0678b18dd1b73aea0a  libgcc/config/i386/sse_resms64x.S
! c648b3441acf03960443d5a3d1b7e4d7  libgcc/config/i386/sse_savms64.S
! 0b8786e5c43d0c19f3d52d2e9054f118  libgcc/config/i386/sse_savms64f.S
  659ac3a437c6f9ca693e1d3ef6e7fe4a  libgcc/config/i386/t-chkstk
  1201000dc1a51cde975c1718ea1967b5  libgcc/config/i386/t-cpuinfo
  38dbc5389f2a0356da55f21c984affbc  libgcc/config/i386/t-cpuinfo-static
*************** cf50005afc3de52e15cbcb0af41fd862  libgcc
*** 59292,59300 ****
  3bf8d762f9c0bcbc4bfd5fe36b97ae23  libgcc/config/i386/t-dw2-eh
  9d82d05d119f031c6327b2b2a6015871  libgcc/config/i386/t-freebsd
  e80484726d0a295b22e75d2a9f801304  libgcc/config/i386/t-gthr-win32
! 81dfe16712a874b28558e87a329733a5  libgcc/config/i386/t-linux
  80f832afb70afb11a4a1c2e403944b73  libgcc/config/i386/t-mingw-pthread
  226cdff862bdab3d98ad952ff21a40a8  libgcc/config/i386/t-mingw32
  0c1d77cb54c2a81694d96a9ff5e8180c  libgcc/config/i386/t-nto
  12cdd13a4838418e9805277c7b2fcd92  libgcc/config/i386/t-seh-eh
  aae3ba90f7a9172b2dff6b8d61c25735  libgcc/config/i386/t-sjlj-eh
--- 63121,63130 ----
  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
*** 59302,59327 ****
  7f83cb5269303d6f2bc8693886cfecc2  libgcc/config/i386/t-softfp
  e3f37cf5fbd829324e763c71726907a2  libgcc/config/i386/t-sol2
  89444a8a78bd3aa7426e9525cdd7ce25  libgcc/config/i386/t-stack-i386
! 90d400225fc4c3e8dbf82df668086f1c  libgcc/config/i386/value-unwind.h
! 0a2b93dfc515ec3f737293f3058688d6  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
! c8cf46406782c83cfe90a3106ef37f10  libgcc/config/ia64/crtbegin.S
! f6062c09fa74fe84a87e3520824c050c  libgcc/config/ia64/crtend.S
! aa8f886e9de750423a1f5927b97185e3  libgcc/config/ia64/crtfastmath.c
! 6fb63a2a1152fbec7c0a1c84b16a94b3  libgcc/config/ia64/crti.S
! 261f2bb50f1c5cd1758047d4d5b3f3c1  libgcc/config/ia64/crtn.S
! 621efc6eadf427d8c1229c60cb646e3f  libgcc/config/ia64/fde-glibc.c
! d4c2ea5883a287e9e7ae81024df22d7b  libgcc/config/ia64/fde-vms.c
! 77d1f7a7945ffd72b79a09e759b965c5  libgcc/config/ia64/lib1funcs.S
! da3be8838f694ef567c236defbf4ba83  libgcc/config/ia64/libgcc-glibc.ver
! a83cbd5238e18c0db408097bfc89b219  libgcc/config/ia64/libgcc-ia64.ver
! e10507f45e40f74dacfd8597d8bebf37  libgcc/config/ia64/linux-unwind.h
! 708ea85e5222058957d3925567d023ee  libgcc/config/ia64/quadlib.c
! 6c73d9d863552441ef76e9772b7d443f  libgcc/config/ia64/sfp-exceptions.c
! dc08f6ebd9fcfa309c66abeefe10bdfd  libgcc/config/ia64/sfp-machine.h
  0bb88f6d16035394a23c622ba320a824  libgcc/config/ia64/t-eh-ia64
  33399ed8e4f636769acf666b91d227c6  libgcc/config/ia64/t-hpux
  73b444740292477655cb064fb49344ff  libgcc/config/ia64/t-ia64
--- 63132,63157 ----
  7f83cb5269303d6f2bc8693886cfecc2  libgcc/config/i386/t-softfp
  e3f37cf5fbd829324e763c71726907a2  libgcc/config/i386/t-sol2
  89444a8a78bd3aa7426e9525cdd7ce25  libgcc/config/i386/t-stack-i386
! 19231bc29cea61a503e22a96d69406f5  libgcc/config/i386/value-unwind.h
! 428d5e1d026cc5fcf15f318ca464393a  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
! 6c910e3b1c5f330f2e3096155fb99b5e  libgcc/config/ia64/crtbegin.S
! e8f76131acd472899ab0e21b2828e84a  libgcc/config/ia64/crtend.S
! b90bbf0fe39e9a3d6cc92af245605467  libgcc/config/ia64/crtfastmath.c
! 9e72ec1692795dfacaad1243d2ceb538  libgcc/config/ia64/crti.S
! 828a60340b3429b0a406210b2ccf69fd  libgcc/config/ia64/crtn.S
! 30b9f885908cca6f76f221b43a7eaa16  libgcc/config/ia64/fde-glibc.c
! 79b9315867a6b6fc5a3e00026ab7d9f3  libgcc/config/ia64/fde-vms.c
! 888a21401ef313343725d7efec442bd5  libgcc/config/ia64/lib1funcs.S
! 6e6cb69aea8c7f9d85932728a8827818  libgcc/config/ia64/libgcc-glibc.ver
! 32857a47f438b1b63abbad699cbf5222  libgcc/config/ia64/libgcc-ia64.ver
! d9f71427beea3a186124d3f478583029  libgcc/config/ia64/linux-unwind.h
! 34be32b497bcf20d3828991b4fafd5b0  libgcc/config/ia64/quadlib.c
! 998e39a24bc8b24b7e3828bfcfe6fae2  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
  73b444740292477655cb064fb49344ff  libgcc/config/ia64/t-ia64
*************** bbd02bc575b39b813abb3651cde980d7  libgcc
*** 59332,59882 ****
  3cc3f3d4611f64c4d5fc225a72d8ccc4  libgcc/config/ia64/t-softfp
  3586c7fe82ea27e7999b410f999857ec  libgcc/config/ia64/t-softfp-compat
  552ede49162d3a4fb9e1e113de11e8b5  libgcc/config/ia64/t-vms
! e8ba4116276e7713f582c7b0193fac3f  libgcc/config/ia64/tf-signs.c
! 8155acdda5d6079f71a1bd2de654039b  libgcc/config/ia64/unwind-ia64.c
! 919e87415d74eaafd70f313447d7f8d8  libgcc/config/ia64/unwind-ia64.h
! 753ee3ecdbcd0b743a981a617c6fd2c1  libgcc/config/ia64/vms-crtinit.S
! 19e293667c8b673f1c0e2284b85f9b99  libgcc/config/ia64/vms-unwind.h
! 57c6f8e50666a31bd88fbbebfbd77725  libgcc/config/iq2000/lib2funcs.c
  102f7dad8ad6b54434a1b8313d1e42c4  libgcc/config/iq2000/t-iq2000
! 39f998db687cee6b109fb6e51abf0da5  libgcc/config/libbid/ChangeLog
! bf92e3d9d8c85d16491b46e9b705e9d6  libgcc/config/libbid/_addsub_dd.c
! 07fb00a8e3903086b062319087bfd206  libgcc/config/libbid/_addsub_sd.c
! 7ae95dbcf6a647ed194b9156e261646f  libgcc/config/libbid/_addsub_td.c
! 45c1db18ac7d45aa9900bbeaa15437e1  libgcc/config/libbid/_dd_to_df.c
! 4988bd1324a780e8e2139d23dadf329b  libgcc/config/libbid/_dd_to_di.c
! 80a1e584a9402ddf7fb9ab779ca5e1d4  libgcc/config/libbid/_dd_to_sd.c
! f7567fdac9e08cf89de0ba7ba3cd6849  libgcc/config/libbid/_dd_to_sf.c
! d6f225723394bf128f9222c5303a6986  libgcc/config/libbid/_dd_to_si.c
! 43669ca7ee83d6cff68f3574b6ca452c  libgcc/config/libbid/_dd_to_td.c
! 6f6b49bdf67d37f18b51e6724de55dd8  libgcc/config/libbid/_dd_to_tf.c
! 4e5d8362517564353fcda0fe6dcb4ff8  libgcc/config/libbid/_dd_to_udi.c
! 6b9c1140757630c45c47b22e15e21bd0  libgcc/config/libbid/_dd_to_usi.c
! b7fe41b134c9639e6b995adbe18d22b1  libgcc/config/libbid/_dd_to_xf.c
! d678084c6e06f22eda8210843d9260b7  libgcc/config/libbid/_df_to_dd.c
! f34708705daf0fa565fdfdbeb8f9d788  libgcc/config/libbid/_df_to_sd.c
! a5af0ee3c45e35998c1cdbf2c676eff8  libgcc/config/libbid/_df_to_td.c
! 14c96268503ed1fd8c6135b0eda6744d  libgcc/config/libbid/_di_to_dd.c
! 29ed6307afae440e1bc99d6bde6d6211  libgcc/config/libbid/_di_to_sd.c
! 5abd46ec3dcb772dac105fc94c27ccef  libgcc/config/libbid/_di_to_td.c
! 6ca3888810377ef50febcabd944679be  libgcc/config/libbid/_div_dd.c
! 116aea76bb486dd2a44a5907debb02ff  libgcc/config/libbid/_div_sd.c
! 6b985c7ef001299dd1ec8a9c94a55af9  libgcc/config/libbid/_div_td.c
! 8a5a79dba63edfce9192586e7b7a0176  libgcc/config/libbid/_eq_dd.c
! 1a9989593a63c4b97fd97a841fb93e7b  libgcc/config/libbid/_eq_sd.c
! c130296cbc5dd79bca907ea464d874ec  libgcc/config/libbid/_eq_td.c
! 5aa31adbc4addb8c923b7a572b52d4ca  libgcc/config/libbid/_ge_dd.c
! 20bb24fbedd1fa0106a559d39741589c  libgcc/config/libbid/_ge_sd.c
! 3355fe4487aee0aa328c9df35c5bc463  libgcc/config/libbid/_ge_td.c
! 90a1c8e3dcd93e566d32fa76ce6b7d1d  libgcc/config/libbid/_gt_dd.c
! 51076d3e8ba032c52796f79a2ee675f7  libgcc/config/libbid/_gt_sd.c
! a2b209c02c69527277ec28f4982162d5  libgcc/config/libbid/_gt_td.c
! 6ea8835c4d372c587ed167092e276678  libgcc/config/libbid/_isinfd128.c
! f93c3d76ee83f6265183a586523535e0  libgcc/config/libbid/_isinfd32.c
! 167b362c8d75d116e2a04c935201b648  libgcc/config/libbid/_isinfd64.c
! afec058c44a16c4277bcba5eebb3a161  libgcc/config/libbid/_le_dd.c
! 33fe841ff6054c6f6c8caeb4a82f7ff0  libgcc/config/libbid/_le_sd.c
! 5cdfbea17f6bdff49cd86a0d2f372f71  libgcc/config/libbid/_le_td.c
! 6e698afeacab0ff40f43682dcff4f510  libgcc/config/libbid/_lt_dd.c
! 6ddae11f3e31c14a5f61ebbc9ef71972  libgcc/config/libbid/_lt_sd.c
! cbe685bf24e9d48e8f27633b73195082  libgcc/config/libbid/_lt_td.c
! a34f2f01750f52c4a4d137dc703dca98  libgcc/config/libbid/_mul_dd.c
! 90a6e4f9a915d7b5ee0d166041294907  libgcc/config/libbid/_mul_sd.c
! 15fe0c27ce6ebbfce38bf699f4c482c0  libgcc/config/libbid/_mul_td.c
! 18ad5040ea4e0cd0052627fea4aac7fa  libgcc/config/libbid/_ne_dd.c
! ee112011d944d3770e80ad7aad998660  libgcc/config/libbid/_ne_sd.c
! 1d4839232e70412b175d750b4a268f05  libgcc/config/libbid/_ne_td.c
! e5ab08ea3fb0119450caaf62cad6e342  libgcc/config/libbid/_sd_to_dd.c
! afd4882ef8922ac8ec923c977e7d449b  libgcc/config/libbid/_sd_to_df.c
! fc81d07464296b3ccaf94993d0ca82a1  libgcc/config/libbid/_sd_to_di.c
! 3ff7309d5db630dac418b1ffe19c8d90  libgcc/config/libbid/_sd_to_sf.c
! 2805dd54dcd3c6a8150efa92cfb996e6  libgcc/config/libbid/_sd_to_si.c
! 8f5df6a8e04f4120d723776ffdddadfd  libgcc/config/libbid/_sd_to_td.c
! 05c041b11be71389772752483b62c4b6  libgcc/config/libbid/_sd_to_tf.c
! 3b3e043eb009b8ae51f01814c40783b1  libgcc/config/libbid/_sd_to_udi.c
! 3d77273540c8ae3a741b4fd1e1c24400  libgcc/config/libbid/_sd_to_usi.c
! bf21349e88ac838032068edf7281651c  libgcc/config/libbid/_sd_to_xf.c
! 36f98f8f83b97b692641f0a725ffcc1a  libgcc/config/libbid/_sf_to_dd.c
! a121064534d12fc69effcacb2edea8b0  libgcc/config/libbid/_sf_to_sd.c
! f2c59413dab967d3d4f251e9e48cff7c  libgcc/config/libbid/_sf_to_td.c
! c34dac4e3a373c576dc42f32faabedcd  libgcc/config/libbid/_si_to_dd.c
! d03f384ea7cc15bba0cabb4678eaadde  libgcc/config/libbid/_si_to_sd.c
! 35618f088d5401545b6e1f90b5ff4632  libgcc/config/libbid/_si_to_td.c
! 7639db5c21e7c6d68f46962d1e629a6e  libgcc/config/libbid/_td_to_dd.c
! 4d49033d7bf2aae0fc72545de6f5610f  libgcc/config/libbid/_td_to_df.c
! cc3c61cdea63423154d1c96819942f1a  libgcc/config/libbid/_td_to_di.c
! e4a446aed5efd87cedd06afb2f0fba01  libgcc/config/libbid/_td_to_sd.c
! af0c10b748c5837a314f6321bc9f0605  libgcc/config/libbid/_td_to_sf.c
! 8f8942e5bcb4daf332f74437faaa577f  libgcc/config/libbid/_td_to_si.c
! 55ea0e860100de705d9bfcb6043cdf4f  libgcc/config/libbid/_td_to_tf.c
! 634cab4b689947a127c8e82c3ae3f158  libgcc/config/libbid/_td_to_udi.c
! 9fae2df35fd89b1122eb918a8bb3f9cf  libgcc/config/libbid/_td_to_usi.c
! e947c7c5629bbb83bcbdb7466f6c909e  libgcc/config/libbid/_td_to_xf.c
! fe73003df2a5bcc7ba22504cb109d81a  libgcc/config/libbid/_tf_to_dd.c
! a0b77db838efd9d7f653989f2ac5a281  libgcc/config/libbid/_tf_to_sd.c
! 1f86ed8540476bbe8b486684cc4d8642  libgcc/config/libbid/_tf_to_td.c
! b29bd80ab901067ff6ffa3b982571f3a  libgcc/config/libbid/_udi_to_dd.c
! bbd8b4db1f9cb20cfc425af3bcba015b  libgcc/config/libbid/_udi_to_sd.c
! fdb5e086fdfbb93b54dd86209208d44b  libgcc/config/libbid/_udi_to_td.c
! 4f2e0ec3fe74f49d8d7177f7aea1a0f7  libgcc/config/libbid/_unord_dd.c
! 6fc8f9b6773a326ff43a25a4d9c6f2f3  libgcc/config/libbid/_unord_sd.c
! 6b586735aab4640402745cbd590204ce  libgcc/config/libbid/_unord_td.c
! 7fc3fc259a67dcc25f482d5133a81b10  libgcc/config/libbid/_usi_to_dd.c
! cc2907bc01defaee2b785584b4c8fc18  libgcc/config/libbid/_usi_to_sd.c
! 281ac54ceca79d60c0cc5736c6eb0d5d  libgcc/config/libbid/_usi_to_td.c
! 0308748269a7bb845dcb558ac045f634  libgcc/config/libbid/_xf_to_dd.c
! f89fec055c20b8823b927861a9743dd4  libgcc/config/libbid/_xf_to_sd.c
! 15828f1dfaebeebb85d9565dd97f6d47  libgcc/config/libbid/_xf_to_td.c
! e8058647debf029d956e1181261b6506  libgcc/config/libbid/bid128.c
! 951746611873b9c604bf0c1a7f5bdad2  libgcc/config/libbid/bid128_2_str.h
! 96ec183337448b9c7f8ff1a0dc083fac  libgcc/config/libbid/bid128_2_str_macros.h
! 5f97c86cb9b2b17e8c01ed2b97b4c4cf  libgcc/config/libbid/bid128_2_str_tables.c
! 94162b65718b13b614cf4509eb5f4145  libgcc/config/libbid/bid128_add.c
! e52f6329c46231f9579595eec2260071  libgcc/config/libbid/bid128_compare.c
! e4b57d7c68dd5110e435c3d410f900d6  libgcc/config/libbid/bid128_div.c
! 95c3112980e2f2e9c1becd1b6b719644  libgcc/config/libbid/bid128_fma.c
! 43156b6e1bbe8b30cae94c5c63da2cd8  libgcc/config/libbid/bid128_logb.c
! dc03bee7ba22ef55a0a149f7f14dfd6e  libgcc/config/libbid/bid128_minmax.c
! ea01f61aca9f6724cba0cdb0a712bf91  libgcc/config/libbid/bid128_mul.c
! 81d68163253620924cc4ba9e388cd844  libgcc/config/libbid/bid128_next.c
! 71615b681d1a5989a71f21c68f45733d  libgcc/config/libbid/bid128_noncomp.c
! 43c7e037a9d02c9cb73dce81909e6da2  libgcc/config/libbid/bid128_quantize.c
! b17105c098e4a7909e7d22f465cd29a0  libgcc/config/libbid/bid128_rem.c
! 096cf31e2da42775b9e1c9f19a10f6e6  libgcc/config/libbid/bid128_round_integral.c
! 885211220cd97e9eac981a9243127752  libgcc/config/libbid/bid128_scalb.c
! 97056145c462d420fa9b08237c209d3e  libgcc/config/libbid/bid128_sqrt.c
! 933cd12b81e0ff3958b5ce1aaa085331  libgcc/config/libbid/bid128_string.c
! 29451cc76b63b2d1b677f0438f8e8ab6  libgcc/config/libbid/bid128_to_int16.c
! 2311cbeb30a26dfcb46d245361cf706b  libgcc/config/libbid/bid128_to_int32.c
! 243a4aaeba65a6ad614344d3cf4b5b30  libgcc/config/libbid/bid128_to_int64.c
! 1ba9ac762338473ec0aeb1962519f8dd  libgcc/config/libbid/bid128_to_int8.c
! e981b01e94c2cad51842a534657a1969  libgcc/config/libbid/bid128_to_uint16.c
! c18a8f110dbd75725331a8d392da8303  libgcc/config/libbid/bid128_to_uint32.c
! 1a9dbf183695e30a0d042f2382298916  libgcc/config/libbid/bid128_to_uint64.c
! 914d25b6061ef43c624d3ea358c2741f  libgcc/config/libbid/bid128_to_uint8.c
! 6dc3f86e53553a1b04b3a4daa997cba2  libgcc/config/libbid/bid32_to_bid128.c
! 975b1fe58f08a046b7f94975f0541f9c  libgcc/config/libbid/bid32_to_bid64.c
! e3db5defeb87e5a97146b5587a838afb  libgcc/config/libbid/bid64_add.c
! 5e4021cfe86fb5f425240aa7c7b61df4  libgcc/config/libbid/bid64_compare.c
! 272d030223874049b112069fa9251cb9  libgcc/config/libbid/bid64_div.c
! 770bce637869d9e365852a8c0d88124d  libgcc/config/libbid/bid64_fma.c
! 642e2a49b53650e520e9db39f3c69c7d  libgcc/config/libbid/bid64_logb.c
! c16925294da139d18f92c8ba33755546  libgcc/config/libbid/bid64_minmax.c
! 596156e68d3e4d4e02f54a272a1863bc  libgcc/config/libbid/bid64_mul.c
! 568cf8c228b9f1ebc936c06862985a86  libgcc/config/libbid/bid64_next.c
! 16c8fc825e826ae73c495806c1312940  libgcc/config/libbid/bid64_noncomp.c
! 875403ea36e6fbb6b5f8ef4c506e62c8  libgcc/config/libbid/bid64_quantize.c
! 46b05b911a1622722e9804845eedd5fc  libgcc/config/libbid/bid64_rem.c
! 187f51e72bf157b218a32bdc2f33833c  libgcc/config/libbid/bid64_round_integral.c
! 296f0cf2488ec02a91daea49c16349cc  libgcc/config/libbid/bid64_scalb.c
! 2d921bfbae9793bac015c8b862004a97  libgcc/config/libbid/bid64_sqrt.c
! 112da2e182484f66ad89fa9bdd06f436  libgcc/config/libbid/bid64_string.c
! f39b2f8547c356141ddccea201a2d720  libgcc/config/libbid/bid64_to_bid128.c
! 711384edf51c0b85989bdc96b943d611  libgcc/config/libbid/bid64_to_int16.c
! 8bc543244229a6b6aa8e60741cc4171c  libgcc/config/libbid/bid64_to_int32.c
! ffee2512e5c1d277825cbf1dba26ce74  libgcc/config/libbid/bid64_to_int64.c
! 5cdcefec22e3c2f69d5244ff68abc149  libgcc/config/libbid/bid64_to_int8.c
! 3a2a3df68c1d831ed1e5ba3fe25adfa5  libgcc/config/libbid/bid64_to_uint16.c
! d9dbcb51828ca15b0f8fcd5d9dfe0bdc  libgcc/config/libbid/bid64_to_uint32.c
! b158f62872283eedf44356df88621776  libgcc/config/libbid/bid64_to_uint64.c
! ea8f39dc029c453106947a6f36cfe184  libgcc/config/libbid/bid64_to_uint8.c
! 4ad820328b57d3cfb689477b2073db78  libgcc/config/libbid/bid_b2d.h
! 3af6aa7b26d43c8d0ba046466a9b385c  libgcc/config/libbid/bid_binarydecimal.c
! e364fe9e62b9aafd7ab0173065917e77  libgcc/config/libbid/bid_conf.h
! 43ed5d8b163329797b731ab7c0bde9b3  libgcc/config/libbid/bid_convert_data.c
! 8e5788fd375911d45a60b70c80436f52  libgcc/config/libbid/bid_decimal_data.c
! 8cd8214e55b055302145630c262c507a  libgcc/config/libbid/bid_decimal_globals.c
! 68122a58205bd948103c58de831d5a8d  libgcc/config/libbid/bid_div_macros.h
! 1271aa3277c3fd67e4adbd817b52ebc0  libgcc/config/libbid/bid_dpd.c
! 5d999b26f1adedbc1c15b675ef609e54  libgcc/config/libbid/bid_flag_operations.c
! c301336aa009a89b08fb15bc0134396b  libgcc/config/libbid/bid_from_int.c
! fc84423ef45c363011f30f0bc46a02d9  libgcc/config/libbid/bid_functions.h
! 2bae5328c1c958d643ec5258078f27e5  libgcc/config/libbid/bid_gcc_intrinsics.h
! 7092f23fba362b818afac244b14ed82e  libgcc/config/libbid/bid_inline_add.h
! b31706f1e203f326cd5c43561dca3a50  libgcc/config/libbid/bid_internal.h
! f076264ac29f03abaff20c380964bbd2  libgcc/config/libbid/bid_round.c
! 55f9deef551bf0b346f626ca5d1d5e8d  libgcc/config/libbid/bid_sqrt_macros.h
! 4eb4c3db5823078b69abf936645ec7ad  libgcc/config/libgcc-glibc.ver
  5e552844975595b21cbaabb9a26fd91e  libgcc/config/libgcc-libsystem.ver
! 96bf092ec4bf141814dd151ce9e10094  libgcc/config/lm32/_ashlsi3.S
! 1522ab0a307e841935b8cc6d76fa028f  libgcc/config/lm32/_ashrsi3.S
! c387ea23a62fbbca9a30eb76e09a0047  libgcc/config/lm32/_divsi3.c
! 717dae17f2f9db851b9a255deba8d4f0  libgcc/config/lm32/_lshrsi3.S
! 46d64850944fcc63013a461e4884a08c  libgcc/config/lm32/_modsi3.c
! b3b3c97dcee39a49069289b3a52760bf  libgcc/config/lm32/_mulsi3.c
! 24f9b8d5a0135e35dc21176b35dc7793  libgcc/config/lm32/_udivmodsi4.c
! 4e9abf7f1f0327f56b78746299ca30ad  libgcc/config/lm32/_udivsi3.c
! 3365e08e81a17adf2ac0fa35cdcd0be7  libgcc/config/lm32/_umodsi3.c
! d52e4d6c961d3114c8a6dd36bfdd4469  libgcc/config/lm32/crti.S
! 1ee5d6617a9dd716297679f739573f39  libgcc/config/lm32/crtn.S
! 32955ae6e7d6425fe1d7d6d4b25c0fea  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
! 2a2479909ca0a7df8f33fb0f443cdb6b  libgcc/config/m32c/lib1funcs.S
! e9b3f9fac7b27bbfcba6c4a44dd47768  libgcc/config/m32c/lib2funcs.c
  9f1fc3a0f039273ded002a6713908bd3  libgcc/config/m32c/t-m32c
! fc9c587565a210bc4c16597ef25fa0e4  libgcc/config/m32c/trapv.c
! 0b9e48591588d057deb2c0bbbfeeeaa8  libgcc/config/m32r/initfini.c
! 9bbb695cfc3c9eaabb59223933c518c5  libgcc/config/m32r/libgcc-glibc.ver
  a5b8b5a1404938f1f4b598db7eb1669e  libgcc/config/m32r/t-linux
  e252c161ec4eb09d3b5a62d902b3d00f  libgcc/config/m32r/t-m32r
! a0114ec25c7e859f344635065c6b4fb6  libgcc/config/m68k/crti.S
! cc0c762c0303d6b0540388d46b5fae02  libgcc/config/m68k/crtn.S
  c88d87907a20077db176016165428d4b  libgcc/config/m68k/fpgnulib.c
! 3e845fdbea2c3a2ff8c12e50c3789864  libgcc/config/m68k/lb1sf68.S
! c22c36802ae13c7a655e939271fcc829  libgcc/config/m68k/linux-atomic.c
! 8fa6a96386e85c4f9553506b2a3a4a2e  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
! e2c3553e72d5a287a58c096df07fb0da  libgcc/config/mcore/crti.S
! cc1e8a95b40a12899b635df4a6aaa135  libgcc/config/mcore/crtn.S
! 149c08399d88a6991bf46eae51fb159c  libgcc/config/mcore/lib1funcs.S
  ef74fd63202d842bfe7120864186128c  libgcc/config/mcore/t-mcore
! 6e660a6155af6543faca50140ec57302  libgcc/config/microblaze/crti.S
! 7d0564a34a25bab0eeb2b415edde916a  libgcc/config/microblaze/crtn.S
! a9912ab655619bb7a777afe102e2ebbf  libgcc/config/microblaze/divsi3.S
! 9c4b6c7375547e4e87546cc6b8a0ed12  libgcc/config/microblaze/divsi3_table.c
! 842c87ef5a35a8f5b3d06cee97cdd9c1  libgcc/config/microblaze/moddi3.S
! 3356f773f5e167113b7e810a12a5026b  libgcc/config/microblaze/modsi3.S
! 354698d0c11ace75c857c1df8592da30  libgcc/config/microblaze/muldi3_hard.S
! 4d1eca00ef5d94d4e9e41e2db786c3b3  libgcc/config/microblaze/mulsi3.S
! 15cbd969e36b6df6b010a6c8915f7815  libgcc/config/microblaze/stack_overflow_exit.S
  702cd2045c2c31581ecd56232d96d5f5  libgcc/config/microblaze/t-microblaze
! 84e195e344811f2a8f16b33c6a8a3cd0  libgcc/config/microblaze/udivsi3.S
! 1a0421c7aecbc78569f3920dbc0ea4c5  libgcc/config/microblaze/umodsi3.S
! 2f5e1578bf5b40571beb52c48ea7a491  libgcc/config/mips/crtfastmath.c
! 256af848db016e86bc294ba38c06dd53  libgcc/config/mips/crti.S
! 7b1bec5b29098e1067a7261a4042198b  libgcc/config/mips/crtn.S
! b3c8ec55548509acb991e848d92a7cf7  libgcc/config/mips/gthr-mipssde.h
! 45f9aba412909765d05856082697ee59  libgcc/config/mips/lib2funcs.c
! 31ab1fb5f4359cea5ad5b26591d0074f  libgcc/config/mips/libgcc-mips16.ver
! 76bf6e4cef9f70a1bc84ee1f7ca8c569  libgcc/config/mips/linux-unwind.h
! ad25c19b55c77b75eea2d19ced43ea80  libgcc/config/mips/mips16.S
! 76bde4f9e82768e3241da25e4eb105d1  libgcc/config/mips/sfp-machine.h
  5b43c15f4e003338742d215bcfdf5029  libgcc/config/mips/t-crtstuff
  33f2c96b7ccbbb062839ec1e7329e6bb  libgcc/config/mips/t-elf
  501be8fccb18eca4dbd8b404d7b4c9fa  libgcc/config/mips/t-mips
! 94381fdd4f8e65bb921b5981aa53ca99  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
! 4d872f125f10a95c20e4d11d93823791  libgcc/config/mips/vr4120-div.S
! 1d46b905c42e2f56a432190bc59b6630  libgcc/config/mmix/crti.S
! 7b0e5c9763b3dcda014b805f907ced32  libgcc/config/mmix/crtn.S
  41478efd1b19b3c7c9426d8e843f3b39  libgcc/config/mmix/t-mmix
! be784d8db69c9d251c6a42963dd2726d  libgcc/config/moxie/crti.S
! 42d1838a345321be0c6af8092a9bf247  libgcc/config/moxie/crtn.S
  5d570ff5cd40fc6fba8876bdebd59a6b  libgcc/config/moxie/sfp-machine.h
  9b7000ea173c226d39e6a6dc116fdaf1  libgcc/config/msp430/cmpd.c
! c4559099e84435c746a91615de5832ef  libgcc/config/msp430/cmpsi2.S
! df4dce1a85335638eee8b6ad5c0811a6  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
! 11adeb15f38b3144ec66805a92466664  libgcc/config/msp430/lib2bitcountHI.c
! 3e1a1e32c9f1fe8e03f66d846c70cd95  libgcc/config/msp430/lib2divHI.c
! 5f6854befaeefabd5d3a9f24c96467fc  libgcc/config/msp430/lib2divQI.c
! d785ace51e8a239021ecb6eb5ecff401  libgcc/config/msp430/lib2divSI.c
! a497ef3cbae204acae9ef44a8665a996  libgcc/config/msp430/lib2hw_mul.S
! 19ea72de3c3bd8443a16d177e2be2f6a  libgcc/config/msp430/lib2mul.c
! a8e842a27652543356c26e90769423e8  libgcc/config/msp430/lib2shift.c
  585dda5cb05623da62e4f4aad3bdbbb6  libgcc/config/msp430/mpy.c
! 4a5087cc17907b2df5d2ca78f80d99bc  libgcc/config/msp430/msp430-divmod.h
! 278ee630647a01ffc1aa9f2276d5bcb7  libgcc/config/msp430/msp430-mul.h
! 7cf7f8273f65577623db012e84a56d1f  libgcc/config/msp430/slli.S
! 9687d72186435bb3c0a4bf21f97ca1de  libgcc/config/msp430/srai.S
! dd7817afd77e323381e19c7101a3e138  libgcc/config/msp430/srli.S
! 4809425f20fc8c5e8ddfd2db46499ca8  libgcc/config/msp430/t-msp430
! 2fdf63d9a54df5ec509f7b72f21ba384  libgcc/config/nds32/crtzero.S
! 644d18d074fa411dde494e6a031a2dc0  libgcc/config/nds32/initfini.c
! 017d90cc9bd132a58a84c730004b6296  libgcc/config/nds32/isr-library/adj_intr_lvl.inc
! 0297a2a3116d9787b838ecf35330b20b  libgcc/config/nds32/isr-library/excp_isr.S
! a89b909f45840a645cfb0686036984fd  libgcc/config/nds32/isr-library/excp_isr_4b.S
! cc50dfb947f010060ac88b80e41a0e96  libgcc/config/nds32/isr-library/intr_isr.S
! b2811c16bf00a05e215340ca70a24e1a  libgcc/config/nds32/isr-library/intr_isr_4b.S
! 04f882404f8b52def5aa56ac739be79d  libgcc/config/nds32/isr-library/jmptbl_vid00.S
! 3ed2f0d2fadcad9603dd5cd426e2257e  libgcc/config/nds32/isr-library/jmptbl_vid01.S
! 3b566c2e69018af6b9b277affd4d7c7c  libgcc/config/nds32/isr-library/jmptbl_vid02.S
! 97a1b49efb02bb9aafefb12748950bfe  libgcc/config/nds32/isr-library/jmptbl_vid03.S
! a4f649fdaf82c2cff147b2d6eb7c4032  libgcc/config/nds32/isr-library/jmptbl_vid04.S
! 2865a30b5f18a0d234ec668efa7c3ba3  libgcc/config/nds32/isr-library/jmptbl_vid05.S
! 856290f0f0ab6aeb0a5c673adbf55121  libgcc/config/nds32/isr-library/jmptbl_vid06.S
! aee76e5a2b0fd58dddb9027bb454ec68  libgcc/config/nds32/isr-library/jmptbl_vid07.S
! 35e3db98fecb4b400a1569a8c87cd64c  libgcc/config/nds32/isr-library/jmptbl_vid08.S
! 01d51ecc0eb03ec43e4ab2b04bb0f51f  libgcc/config/nds32/isr-library/jmptbl_vid09.S
! 35cebd3bab2a1564f50905d5ff3c81e9  libgcc/config/nds32/isr-library/jmptbl_vid10.S
! 2a42632309a4341d883a81a9c4340712  libgcc/config/nds32/isr-library/jmptbl_vid11.S
! 7a1a07717d6ed781b485a513025f17c5  libgcc/config/nds32/isr-library/jmptbl_vid12.S
! e4989c6f6b10caeab9ae390bf42f5e48  libgcc/config/nds32/isr-library/jmptbl_vid13.S
! 518801e92dbdc8a5520729deecbd24d5  libgcc/config/nds32/isr-library/jmptbl_vid14.S
! e3df3949a3cef654f86c9b2c9324f70f  libgcc/config/nds32/isr-library/jmptbl_vid15.S
! ddf65d055df76fdcad3e7cc68daa59eb  libgcc/config/nds32/isr-library/jmptbl_vid16.S
! c38cb984a179e106679b73786cdcf7af  libgcc/config/nds32/isr-library/jmptbl_vid17.S
! 34232d3277e224a6c4fd6c73077bc288  libgcc/config/nds32/isr-library/jmptbl_vid18.S
! 132b6060a50bf854994993e3a34cae7c  libgcc/config/nds32/isr-library/jmptbl_vid19.S
! f30d24619ed8ec61f18413b67df4689a  libgcc/config/nds32/isr-library/jmptbl_vid20.S
! a00c17af3520060476713e773fabd64b  libgcc/config/nds32/isr-library/jmptbl_vid21.S
! cc6b2ff378e06978a1766390261fd017  libgcc/config/nds32/isr-library/jmptbl_vid22.S
! 7015d5613122c64f1b7f8da4f1ae0be6  libgcc/config/nds32/isr-library/jmptbl_vid23.S
! 06f4980254c0de9f0096fe2596fe3a7e  libgcc/config/nds32/isr-library/jmptbl_vid24.S
! 3253951c192bf0e96c38855a34577187  libgcc/config/nds32/isr-library/jmptbl_vid25.S
! 92e8e9cf14f88c346cbe908bf96cff93  libgcc/config/nds32/isr-library/jmptbl_vid26.S
! be92e568eb870970b88e5327730f86f1  libgcc/config/nds32/isr-library/jmptbl_vid27.S
! e89aa366300c0d032013d7c530cb2a6e  libgcc/config/nds32/isr-library/jmptbl_vid28.S
! 16416ecdfbeb246c507e5183c4e20f96  libgcc/config/nds32/isr-library/jmptbl_vid29.S
! b39383f1edc557168ab6d437df88c81d  libgcc/config/nds32/isr-library/jmptbl_vid30.S
! 4817cc0f65bfe3bf1888de92d006a30c  libgcc/config/nds32/isr-library/jmptbl_vid31.S
! f2c2108db898e8c1423b4d152f6471a3  libgcc/config/nds32/isr-library/jmptbl_vid32.S
! dc70e40c2db308a83362cb32a46f1ce5  libgcc/config/nds32/isr-library/jmptbl_vid33.S
! 6949653085e6d1a087398ef678c276b4  libgcc/config/nds32/isr-library/jmptbl_vid34.S
! 3f23645846c75f1d40704ce00db27b08  libgcc/config/nds32/isr-library/jmptbl_vid35.S
! 497815bca0e1067ba530e89a260c859d  libgcc/config/nds32/isr-library/jmptbl_vid36.S
! 27cb9ef6a81717652bf482ca49f57d31  libgcc/config/nds32/isr-library/jmptbl_vid37.S
! 5c25978033893e28cedef092b0250973  libgcc/config/nds32/isr-library/jmptbl_vid38.S
! 10417293070f400aae27f9b6bfb4c8a1  libgcc/config/nds32/isr-library/jmptbl_vid39.S
! 524aef3956499575f1fcaa394358991f  libgcc/config/nds32/isr-library/jmptbl_vid40.S
! 7a35adf23e19613de0c2687e53c96be9  libgcc/config/nds32/isr-library/jmptbl_vid41.S
! 968bb88c9f63cde7f2291bfb85b7f815  libgcc/config/nds32/isr-library/jmptbl_vid42.S
! 61c553372633887e33fd5ac09f3debb2  libgcc/config/nds32/isr-library/jmptbl_vid43.S
! dcd3be292eee27e29b9ee7e684f6ba63  libgcc/config/nds32/isr-library/jmptbl_vid44.S
! 11f8e9253751dc5f3e9f41cb425dab59  libgcc/config/nds32/isr-library/jmptbl_vid45.S
! f893a664ea1747224214d4b4c45fb9d5  libgcc/config/nds32/isr-library/jmptbl_vid46.S
! f3cc5a7e1337243c613e88e4e173d448  libgcc/config/nds32/isr-library/jmptbl_vid47.S
! cbcfa91a0d3dddad3f6cc7d33e9dd5b0  libgcc/config/nds32/isr-library/jmptbl_vid48.S
! e8d2a954ad09ac20fd99678862479e12  libgcc/config/nds32/isr-library/jmptbl_vid49.S
! ada19719c118fc1eeed3df4ab127473c  libgcc/config/nds32/isr-library/jmptbl_vid50.S
! a527f93c642cc347e800cdc9e78b805e  libgcc/config/nds32/isr-library/jmptbl_vid51.S
! b3dbd46fef27733aaa2f8754ddf224db  libgcc/config/nds32/isr-library/jmptbl_vid52.S
! 93d53a1eb21b011aa327258af00eca17  libgcc/config/nds32/isr-library/jmptbl_vid53.S
! e851978d67659c3cacc251477becc4b0  libgcc/config/nds32/isr-library/jmptbl_vid54.S
! 6069f9c6ebd45b9c1aed6daa6c6b3100  libgcc/config/nds32/isr-library/jmptbl_vid55.S
! 475700af6751dbd5d22789366de85c56  libgcc/config/nds32/isr-library/jmptbl_vid56.S
! a3fb60cd375fa6eabe821f565c9400a1  libgcc/config/nds32/isr-library/jmptbl_vid57.S
! d2505ac0dbdbcc8dad26c8a59a390967  libgcc/config/nds32/isr-library/jmptbl_vid58.S
! 6de42f1456ab52b0fc8be1f287027fda  libgcc/config/nds32/isr-library/jmptbl_vid59.S
! 15d251ae808fc5faca640c9c0c1e7423  libgcc/config/nds32/isr-library/jmptbl_vid60.S
! 0061ea9b94127e3e923e2cf65f4f9066  libgcc/config/nds32/isr-library/jmptbl_vid61.S
! 3c8684930afe9b6c2e9602a57930db12  libgcc/config/nds32/isr-library/jmptbl_vid62.S
! 7543ad4e43ad6ad89fadb6d5849d7610  libgcc/config/nds32/isr-library/jmptbl_vid63.S
! 33ef92a7fa0903451eb8ddde194ccc85  libgcc/config/nds32/isr-library/jmptbl_vid64.S
! 86b74849eb7bed35489cdc944bc4dd77  libgcc/config/nds32/isr-library/jmptbl_vid65.S
! 41b3f3d5e3df976c0a446dba1d6cf0ec  libgcc/config/nds32/isr-library/jmptbl_vid66.S
! 9500104d4861cedb42aa4b9deaa816b2  libgcc/config/nds32/isr-library/jmptbl_vid67.S
! 51f5db6f11474433f313d6031e166500  libgcc/config/nds32/isr-library/jmptbl_vid68.S
! 9de523269c27f705fb93f2ce55f7561d  libgcc/config/nds32/isr-library/jmptbl_vid69.S
! 7bb7189151356da7042f64f3f9ff923b  libgcc/config/nds32/isr-library/jmptbl_vid70.S
! 496f005d59c12561793cadfdad9fce37  libgcc/config/nds32/isr-library/jmptbl_vid71.S
! b93e47fb7830b9655774ec78d235f953  libgcc/config/nds32/isr-library/jmptbl_vid72.S
! 4e6682fef40aab623a16f7eb849e6a81  libgcc/config/nds32/isr-library/nmih.S
! 89838883e39b5b158309c6a53c2bc81a  libgcc/config/nds32/isr-library/reset.S
! 4344cc2346d5b86f2742eb6dfaededde  libgcc/config/nds32/isr-library/reset_4b.S
! 01d4ad53c0dd690eb65fa0fe40c41ff8  libgcc/config/nds32/isr-library/restore_all.inc
! 5717b27d6b434b7cd683fbcba86bce85  libgcc/config/nds32/isr-library/restore_fpu_regs.inc
! 7a023aed18dcbd6e2b64ddda6814e2a5  libgcc/config/nds32/isr-library/restore_fpu_regs_00.inc
! 7656edab4762f80771fe13757af88656  libgcc/config/nds32/isr-library/restore_fpu_regs_01.inc
! ce8c70da2cd515ed2d62f5f47ec3f9e8  libgcc/config/nds32/isr-library/restore_fpu_regs_02.inc
! 96b7cdc739cf5d5da1029762d742e98d  libgcc/config/nds32/isr-library/restore_fpu_regs_03.inc
! 573cd991ebffc36f3a2ad43ea34cc533  libgcc/config/nds32/isr-library/restore_mac_regs.inc
! d0545bb152324df719c7654f6a982a08  libgcc/config/nds32/isr-library/restore_partial.inc
! 465b12e7a8cbf64c446d5419e973cdca  libgcc/config/nds32/isr-library/save_all.inc
! ab1c176db143114a5daea623e559c3b4  libgcc/config/nds32/isr-library/save_fpu_regs.inc
! c1b7aa56ca8a1dfe7420b9103bb10d46  libgcc/config/nds32/isr-library/save_fpu_regs_00.inc
! 1abbf688e99be0ea8fdad7d7b4615778  libgcc/config/nds32/isr-library/save_fpu_regs_01.inc
! 43d0f894462b455d6a438463d809491b  libgcc/config/nds32/isr-library/save_fpu_regs_02.inc
! 4d5431a73ef6dd15d0d50831449a28da  libgcc/config/nds32/isr-library/save_fpu_regs_03.inc
! 4639abfe17e1145a500559396599f96c  libgcc/config/nds32/isr-library/save_mac_regs.inc
! 7639b2790faa94d3866cdd432e656321  libgcc/config/nds32/isr-library/save_partial.inc
! 9faedd698d2c765c47e241b6498dc2fc  libgcc/config/nds32/isr-library/vec_vid00.S
! 746626d63c47352a4e0e41a9515f525f  libgcc/config/nds32/isr-library/vec_vid00_4b.S
! 1963dc5e7a3f66c7db5dc420242af166  libgcc/config/nds32/isr-library/vec_vid01.S
! 50c39f7a0860092311d1ac896d15c6a5  libgcc/config/nds32/isr-library/vec_vid01_4b.S
! b804b3cf1f0e69c025f4363e15c303d6  libgcc/config/nds32/isr-library/vec_vid02.S
! e39bd73f6a2c6a12c8b9ca913578f7a8  libgcc/config/nds32/isr-library/vec_vid02_4b.S
! b611c12375b4c5ba61833d6febcd78df  libgcc/config/nds32/isr-library/vec_vid03.S
! ec22ea1afa961a478e5646ffaa5b157e  libgcc/config/nds32/isr-library/vec_vid03_4b.S
! 74b8c958e08dce06e7dbf5a9e31ab6d2  libgcc/config/nds32/isr-library/vec_vid04.S
! d713f52d6123b01a3b5191f63f85ecb7  libgcc/config/nds32/isr-library/vec_vid04_4b.S
! 91ef7bc5c4d3a999ccb8073ace930644  libgcc/config/nds32/isr-library/vec_vid05.S
! 638fdfe6215834fbf09cd5f5c43c8e39  libgcc/config/nds32/isr-library/vec_vid05_4b.S
! 4d1ed1d9d6c49a278d4d141922047458  libgcc/config/nds32/isr-library/vec_vid06.S
! 9efac2c6a867506f9f55a59ea72e173b  libgcc/config/nds32/isr-library/vec_vid06_4b.S
! b7445f8a1f9f56197e19111629722b1e  libgcc/config/nds32/isr-library/vec_vid07.S
! b98aa722ae9469d9a4eb3f67b04dda7f  libgcc/config/nds32/isr-library/vec_vid07_4b.S
! f304b1fd246f37fddee9f0f2cceefb91  libgcc/config/nds32/isr-library/vec_vid08.S
! 98533659da1d8ddc34d84f74aaec06a5  libgcc/config/nds32/isr-library/vec_vid08_4b.S
! e30bfc0790b00493126d3c1d5695957e  libgcc/config/nds32/isr-library/vec_vid09.S
! 2f2bef6ebca1ab870152de9abeccca7e  libgcc/config/nds32/isr-library/vec_vid09_4b.S
! 79b69f200213e02bb722dddd98e0bff4  libgcc/config/nds32/isr-library/vec_vid10.S
! 72b4f797ec4717f8e92af788f9c7ac95  libgcc/config/nds32/isr-library/vec_vid10_4b.S
! 04bdacd0810e0c42380883ae6eecf3ab  libgcc/config/nds32/isr-library/vec_vid11.S
! 78a14e0682d9376b4843e96d18edcf74  libgcc/config/nds32/isr-library/vec_vid11_4b.S
! 248e5defd524eeffd0f55bf0fcb8440f  libgcc/config/nds32/isr-library/vec_vid12.S
! 7a9ce146bdd1926a0d4d755247925b6a  libgcc/config/nds32/isr-library/vec_vid12_4b.S
! 60e2817a021e29884c11532f750b8856  libgcc/config/nds32/isr-library/vec_vid13.S
! 26736161cf0f055709df48d3982cfd79  libgcc/config/nds32/isr-library/vec_vid13_4b.S
! 13b5d52dd4dc5e10aa119dba47aed914  libgcc/config/nds32/isr-library/vec_vid14.S
! b2b4c681b80261419fe88e4f102bfc49  libgcc/config/nds32/isr-library/vec_vid14_4b.S
! 5f8a40e429c28120d78ec5be8d697308  libgcc/config/nds32/isr-library/vec_vid15.S
! ff7d17bb0ab93f6a9d7d5ded3d9c20ec  libgcc/config/nds32/isr-library/vec_vid15_4b.S
! e97c7954ff9104c5f091dff37d1af29f  libgcc/config/nds32/isr-library/vec_vid16.S
! 5d2d0941c4fdda7551126c8bc97e6206  libgcc/config/nds32/isr-library/vec_vid16_4b.S
! d0e8b19766a8aa87205ce076f8d76f33  libgcc/config/nds32/isr-library/vec_vid17.S
! b1ee59b58a4531e74cb6330da874dd4a  libgcc/config/nds32/isr-library/vec_vid17_4b.S
! 85c05ac1851e6a4c5656821afa5f43eb  libgcc/config/nds32/isr-library/vec_vid18.S
! c260ae3b7a7cf0fee6730212fb29266c  libgcc/config/nds32/isr-library/vec_vid18_4b.S
! 204cbc3e261bd580b5c92cfb1fb652e8  libgcc/config/nds32/isr-library/vec_vid19.S
! f340134e1d7ec41c721d92ebab4e4eaa  libgcc/config/nds32/isr-library/vec_vid19_4b.S
! 3202a5acdb694f3fc957d7e39e5d1fbd  libgcc/config/nds32/isr-library/vec_vid20.S
! 64efe5a63a5fb7d812fe179cce03c082  libgcc/config/nds32/isr-library/vec_vid20_4b.S
! 6ceb74fd443cfbe36abe738360441de1  libgcc/config/nds32/isr-library/vec_vid21.S
! 523b4e486d431bc60999df78caa862c8  libgcc/config/nds32/isr-library/vec_vid21_4b.S
! 1d1e46e0b531ed7ed217e1cacdbaabcf  libgcc/config/nds32/isr-library/vec_vid22.S
! 7928bf8ab189e19088939c436e725469  libgcc/config/nds32/isr-library/vec_vid22_4b.S
! b0c81aac7e3406fb130f759ad658692f  libgcc/config/nds32/isr-library/vec_vid23.S
! 187da4bfb66d1f615936e635361ebb58  libgcc/config/nds32/isr-library/vec_vid23_4b.S
! 3621ddf5dc7eca2e6e494af6d6198c40  libgcc/config/nds32/isr-library/vec_vid24.S
! 419c30795497f223005855fe0a27a7a6  libgcc/config/nds32/isr-library/vec_vid24_4b.S
! 91afa3d702e360b95e781934ebd34145  libgcc/config/nds32/isr-library/vec_vid25.S
! 8f26a7bd7bba4ba6fe145a029d824c33  libgcc/config/nds32/isr-library/vec_vid25_4b.S
! 07ebe3925de57f76fc2e22441663f2ca  libgcc/config/nds32/isr-library/vec_vid26.S
! 5fc2e0d02fa7990b6df96baf7b3adad8  libgcc/config/nds32/isr-library/vec_vid26_4b.S
! 3d0b4deec86b156d50aa4d607ed4542c  libgcc/config/nds32/isr-library/vec_vid27.S
! 752a2fddfd3164a21324c97a53dd2d6f  libgcc/config/nds32/isr-library/vec_vid27_4b.S
! 34dd143ad425dfe63ee08da9aa6c8eb2  libgcc/config/nds32/isr-library/vec_vid28.S
! 93716f533c7e5d13932da28913ea6ad7  libgcc/config/nds32/isr-library/vec_vid28_4b.S
! 160d6cf369fddba22d5cda1cf8e6acfa  libgcc/config/nds32/isr-library/vec_vid29.S
! e2318563a9a4b0b1c82e6f82d132cf11  libgcc/config/nds32/isr-library/vec_vid29_4b.S
! ebcedaed538a8abea5acc6c9ebe705c5  libgcc/config/nds32/isr-library/vec_vid30.S
! 6755dcf9d8628c87407e861f0e40baaf  libgcc/config/nds32/isr-library/vec_vid30_4b.S
! aa14e4cd2e7903e7b3c0b462ee64b753  libgcc/config/nds32/isr-library/vec_vid31.S
! 3cfcaa29bd95a030b9ef4ea4abbc85d9  libgcc/config/nds32/isr-library/vec_vid31_4b.S
! adab1e21841251266bbcda643e40ce1c  libgcc/config/nds32/isr-library/vec_vid32.S
! 151d37928f2a9c557ee77e586ea4eb02  libgcc/config/nds32/isr-library/vec_vid32_4b.S
! 23c6175a58331e563f0fc7aa4eca6b22  libgcc/config/nds32/isr-library/vec_vid33.S
! 7896943d5a8b756099a688060d484faa  libgcc/config/nds32/isr-library/vec_vid33_4b.S
! 8371172a418f5a0e157028b242c2b3ef  libgcc/config/nds32/isr-library/vec_vid34.S
! 8de8441272eb252568b7447af07e1985  libgcc/config/nds32/isr-library/vec_vid34_4b.S
! e0f0383025d71e740b2f290dc0c5c3cb  libgcc/config/nds32/isr-library/vec_vid35.S
! eb54a1061003e1706c2fd446711f4426  libgcc/config/nds32/isr-library/vec_vid35_4b.S
! 91d77f0db25df9b0ced13ad7ca304d09  libgcc/config/nds32/isr-library/vec_vid36.S
! 0bfb0bd59703c63c0a3f4b7de6f3b1a1  libgcc/config/nds32/isr-library/vec_vid36_4b.S
! ab637e06c8e8144a7b46016894638ecd  libgcc/config/nds32/isr-library/vec_vid37.S
! 10cd77d51f6758890e6b66e0121616b4  libgcc/config/nds32/isr-library/vec_vid37_4b.S
! 459831c1bbed7e3cd652ed183e2cf729  libgcc/config/nds32/isr-library/vec_vid38.S
! b805a18ef8688736dde74d7a139bf44e  libgcc/config/nds32/isr-library/vec_vid38_4b.S
! a921292c3c5de542949420db609b60ee  libgcc/config/nds32/isr-library/vec_vid39.S
! 74b0616ed4268d447d911d09f564e3ea  libgcc/config/nds32/isr-library/vec_vid39_4b.S
! c7dcf425b034afc3d0e0d5689e7a8215  libgcc/config/nds32/isr-library/vec_vid40.S
! 1f0d743c3f8ac8be54846b9e630561f6  libgcc/config/nds32/isr-library/vec_vid40_4b.S
! 742864d1e3c7e7d5955ffc5ca2530ffe  libgcc/config/nds32/isr-library/vec_vid41.S
! 681bb89d412df0f0b741287075cbf1f1  libgcc/config/nds32/isr-library/vec_vid41_4b.S
! 10d21945d22a1331a97bdbceff5d65f1  libgcc/config/nds32/isr-library/vec_vid42.S
! 89633f6dbb13ce87effc948f5963723e  libgcc/config/nds32/isr-library/vec_vid42_4b.S
! eacae4dffeb465b055f5dc13a40f290b  libgcc/config/nds32/isr-library/vec_vid43.S
! 9dc642b049c5900f09226c4f937a2b05  libgcc/config/nds32/isr-library/vec_vid43_4b.S
! 79a2fe8e4e230502dec822c2b40ef799  libgcc/config/nds32/isr-library/vec_vid44.S
! 147e36aa940711a4c24cb30cf8054235  libgcc/config/nds32/isr-library/vec_vid44_4b.S
! 2138cc0584536d8a523c1e3cf09acea0  libgcc/config/nds32/isr-library/vec_vid45.S
! 3918ec2e9d554e79eb31cd30ea6f4bd8  libgcc/config/nds32/isr-library/vec_vid45_4b.S
! ae4135fcf820f7a4ee99bb59683abeb4  libgcc/config/nds32/isr-library/vec_vid46.S
! ecff506fd1f78ceefc65b9612e7d5334  libgcc/config/nds32/isr-library/vec_vid46_4b.S
! 529c3ddfc99e724ff1fd19fdf2ad1e91  libgcc/config/nds32/isr-library/vec_vid47.S
! f93ed30cdcd9588ff41fb17b0694ca58  libgcc/config/nds32/isr-library/vec_vid47_4b.S
! a2b224934daa4430580fa8b9835b8a46  libgcc/config/nds32/isr-library/vec_vid48.S
! 2f1f754b98f5625d95eab0d1feef9d24  libgcc/config/nds32/isr-library/vec_vid48_4b.S
! b12b009cd27484da68521dbf57e5c48d  libgcc/config/nds32/isr-library/vec_vid49.S
! f7352c15dc8b7ace9a88e79735b24e4f  libgcc/config/nds32/isr-library/vec_vid49_4b.S
! ffc6ec5ee0f8ad6f10a9a969166ca234  libgcc/config/nds32/isr-library/vec_vid50.S
! 4abe7e188de32e9f70b98c9b7c137934  libgcc/config/nds32/isr-library/vec_vid50_4b.S
! 30a7eedf1a4044b1bca23a9234ce0e23  libgcc/config/nds32/isr-library/vec_vid51.S
! dc475e0f903bf79dcc0e13b09b9791bd  libgcc/config/nds32/isr-library/vec_vid51_4b.S
! 7223c7b292a592e30468b01a7f6e3303  libgcc/config/nds32/isr-library/vec_vid52.S
! 0986b94e39d2f5c09b91e665bf48a88d  libgcc/config/nds32/isr-library/vec_vid52_4b.S
! d9527ae9d32c618b2317913af998c869  libgcc/config/nds32/isr-library/vec_vid53.S
! 9a30d49c5618125de25309bd66a2bbcf  libgcc/config/nds32/isr-library/vec_vid53_4b.S
! 9f34333bc49ea004a0d9d2705f625190  libgcc/config/nds32/isr-library/vec_vid54.S
! 82efc9d405249cfdc9a0a6d6516e59d7  libgcc/config/nds32/isr-library/vec_vid54_4b.S
! dd4ef37b3ec5eeabdf83cbe95df423f6  libgcc/config/nds32/isr-library/vec_vid55.S
! 3297bb9cc9ae61d18000170ea5de1275  libgcc/config/nds32/isr-library/vec_vid55_4b.S
! c350d9d4eab7396238c818813d9dcd2e  libgcc/config/nds32/isr-library/vec_vid56.S
! 109770698d7ffc62f7346d251bef9e34  libgcc/config/nds32/isr-library/vec_vid56_4b.S
! e2660a4b6bdb3bde2d91df946b1fe28e  libgcc/config/nds32/isr-library/vec_vid57.S
! 4770ab50e67c3e8589991ebcfaf0fd97  libgcc/config/nds32/isr-library/vec_vid57_4b.S
! 6ee9e81f958873b1fdc3ca516e3d5db1  libgcc/config/nds32/isr-library/vec_vid58.S
! 1ccabd673662c674f842a477199bc0ef  libgcc/config/nds32/isr-library/vec_vid58_4b.S
! a7a72cb5ed89a0b29df6f921bbce9fb3  libgcc/config/nds32/isr-library/vec_vid59.S
! 7c2895e8871cf3cce1874af94d99faa3  libgcc/config/nds32/isr-library/vec_vid59_4b.S
! b7e7603625a1aa2a5c84f590584b20fc  libgcc/config/nds32/isr-library/vec_vid60.S
! 4684b9c9aa91995236899edb57ab192e  libgcc/config/nds32/isr-library/vec_vid60_4b.S
! 08f5f6cad1c0400966038ce9593542b2  libgcc/config/nds32/isr-library/vec_vid61.S
! 34e454d222a4b31e8af8b01b55fe1b07  libgcc/config/nds32/isr-library/vec_vid61_4b.S
! 9bb3691784697ba529f207ea682fc7d5  libgcc/config/nds32/isr-library/vec_vid62.S
! 0e1d50e906c7bdf9f7fd4afd2fbaf5f4  libgcc/config/nds32/isr-library/vec_vid62_4b.S
! 1966e89130e674e6f8fc4633cddb47e3  libgcc/config/nds32/isr-library/vec_vid63.S
! 3b3b2871194b344e469aa0a1efd67d99  libgcc/config/nds32/isr-library/vec_vid63_4b.S
! 73e41c082193b6d30b7d20b6a9571289  libgcc/config/nds32/isr-library/vec_vid64.S
! ce7c56543445c5eed59bd1faaf1f9f6d  libgcc/config/nds32/isr-library/vec_vid64_4b.S
! 8bd371a0e8263b8e9e552acaed9629fe  libgcc/config/nds32/isr-library/vec_vid65.S
! 79881809c7979e4753a164ed2379f9d1  libgcc/config/nds32/isr-library/vec_vid65_4b.S
! 0746225870e70700ede036b6e8154010  libgcc/config/nds32/isr-library/vec_vid66.S
! 1b5509d4b270525044441e2ae63afa6f  libgcc/config/nds32/isr-library/vec_vid66_4b.S
! cb7c905d1ef92bfa43832932be71bf95  libgcc/config/nds32/isr-library/vec_vid67.S
! 929f7326c169d4e076c95a63a794e7d1  libgcc/config/nds32/isr-library/vec_vid67_4b.S
! e629b9d9b94340962e7ea3b9e9c96491  libgcc/config/nds32/isr-library/vec_vid68.S
! 98619d51e7824b438a81c99b8dbd1e42  libgcc/config/nds32/isr-library/vec_vid68_4b.S
! 2951258c4303a09604778fb633a95c91  libgcc/config/nds32/isr-library/vec_vid69.S
! 2d98e0f127b7573fbc73564a25d235cf  libgcc/config/nds32/isr-library/vec_vid69_4b.S
! 6927bfe786b80343c529c61abf74c04c  libgcc/config/nds32/isr-library/vec_vid70.S
! d7bb1a9ebcb65587d955877c6dd7f309  libgcc/config/nds32/isr-library/vec_vid70_4b.S
! d27c3aa73b710cfe1b1a218c02f9a73a  libgcc/config/nds32/isr-library/vec_vid71.S
! 417ab9f16baced7ce9a23ec22fca431c  libgcc/config/nds32/isr-library/vec_vid71_4b.S
! 963bd6612865d0e9f9934b65d1821eb1  libgcc/config/nds32/isr-library/vec_vid72.S
! 7a833bb174478f4e827c889850cdb311  libgcc/config/nds32/isr-library/vec_vid72_4b.S
! 384e92d0b7233cb9cfda3b6df691cf37  libgcc/config/nds32/isr-library/wrh.S
! 3efa00234edb670b73af98cb3ff37936  libgcc/config/nds32/lib1asmsrc-mculib.S
! eabc5119b63bbbe97abd8c7a32ec3975  libgcc/config/nds32/lib1asmsrc-newlib.S
! 28a3b8b2227c7ed9743d79f979b9486b  libgcc/config/nds32/lib2csrc-mculib/_clzdi2.c
! eb4e18ed44b8c652767532bf51cdaa8e  libgcc/config/nds32/lib2csrc-mculib/_clzsi2.c
! 69d1db22c637bc3a9f8d0f60fb1b7940  libgcc/config/nds32/sfp-machine.h
! 1fb2bfea14f606aa65472346e3ac9eb0  libgcc/config/nds32/t-nds32
! e85aa3a55fa2e8bf9e00f1931e33d571  libgcc/config/nds32/t-nds32-isr
! 1b2ccf46f8a95e1b84d2f4f82da932fe  libgcc/config/nds32/t-nds32-mculib
! ff5e4f71ea032dff40109ad0f37c7f9f  libgcc/config/nds32/t-nds32-newlib
! 0eb7cf2e23326d80b0a87d77d5a13440  libgcc/config/nios2/crti.S
! 2788f02b342cf4611f2f3948c47a3c85  libgcc/config/nios2/crtn.S
! 9e50982429c6d4aeb317d9c12efccee5  libgcc/config/nios2/lib2-divmod-hi.c
! 5522d9a59b63bcc91c585e5ee194dfb3  libgcc/config/nios2/lib2-divmod.c
! 9d29b01e87b6e9b36e3ccdf89cc343b7  libgcc/config/nios2/lib2-divtable.c
! db8b7b65ba6f6db4183ca0c0904b141c  libgcc/config/nios2/lib2-mul.c
! 7e6043632c08eac92d56c3555559eee3  libgcc/config/nios2/lib2-nios2.h
! 30eb310ffcdb54e28b49c131148d59af  libgcc/config/nios2/linux-atomic.c
! b26e3309861c547054a4c59330e9d86b  libgcc/config/nios2/linux-unwind.h
! a060e9058c6f6549f0288f58adb410ae  libgcc/config/nios2/sfp-machine.h
  598bde069aeebadde9b08f8703ab2c77  libgcc/config/nios2/t-linux
  058cf7bee1e8fb40a62590a2558c7f76  libgcc/config/nios2/t-nios2
! b1f845636d1810009a13dbe02bb76b61  libgcc/config/nios2/tramp.c
  d554f3fc7ee3cecc697c448b8c5f61bb  libgcc/config/no-sfp-machine.h
  b70010a8e3a6734ae04ba484992563c5  libgcc/config/no-unwind.h
! 1e1e9915a7032457e83516a29efb6a4e  libgcc/config/nvptx/crt0.c
! ac9e935b6261d1ec4cd82699c0b2214b  libgcc/config/nvptx/mgomp.c
! b9f28602618ae206adea3fe582c282cc  libgcc/config/nvptx/nvptx-malloc.h
! be145b314d4451b42ac7f63db0bd7720  libgcc/config/nvptx/reduction.c
  dffcd9969bf41775f6581a1dd31f351f  libgcc/config/nvptx/t-nvptx
! 67582c27cc5cf6c4f93d0d45faad65bf  libgcc/config/pa/fptr.c
! d0b094f86833c0a1cc783cb88c345bd6  libgcc/config/pa/gthr-dce.h
! a7d11931dfa53cd28d81ec5f0632ceaa  libgcc/config/pa/hpux-unwind.h
! e5cfeef8cdbb60163d03728934368168  libgcc/config/pa/lib2funcs.S
! db1e514e68c0fd5b47f4fc7ad54bbb66  libgcc/config/pa/linux-atomic.c
! 55cc3e42404133a33058f7028530ddef  libgcc/config/pa/linux-unwind.h
! 2521f808a86e3d3248618bbfdd26cd33  libgcc/config/pa/milli64.S
! 841e2cfad5c8e939812e14367b9fc152  libgcc/config/pa/pa64-hpux-lib.h
! bb36262bc27529757335f1a6c54c2c2c  libgcc/config/pa/quadlib.c
! 7712daccb18725b9250896a9713e36fe  libgcc/config/pa/stublib.c
  8a3964d4f1eddb14d9260a0a72a23493  libgcc/config/pa/t-hpux
  73420715a92f162a61d33bbfbe7c4dee  libgcc/config/pa/t-hpux10
  3e293a3e5a4bcd16fb9846c60502af9b  libgcc/config/pa/t-linux
--- 63162,63712 ----
  3cc3f3d4611f64c4d5fc225a72d8ccc4  libgcc/config/ia64/t-softfp
  3586c7fe82ea27e7999b410f999857ec  libgcc/config/ia64/t-softfp-compat
  552ede49162d3a4fb9e1e113de11e8b5  libgcc/config/ia64/t-vms
! 6916d32fa63942affd71d07f463b5ea0  libgcc/config/ia64/tf-signs.c
! ff9dfacf1d2fe2fe2be328831f559783  libgcc/config/ia64/unwind-ia64.c
! 9782d09b81f1f6b80aaa9e72cb3374c8  libgcc/config/ia64/unwind-ia64.h
! 30186df25fa46749ec6fb4baf852f719  libgcc/config/ia64/vms-crtinit.S
! b271243f3ea668919b7aa0bc58063de6  libgcc/config/ia64/vms-unwind.h
! 6a404f703b0a7e76acc46ccaae1d725d  libgcc/config/iq2000/lib2funcs.c
  102f7dad8ad6b54434a1b8313d1e42c4  libgcc/config/iq2000/t-iq2000
! e15f828d91dce6beced7aa3a43a1bf51  libgcc/config/libbid/ChangeLog
! bc4a84dca1d7640acb8977fddc50b727  libgcc/config/libbid/_addsub_dd.c
! ad8b5daba470d3a6579d78248ffa7c92  libgcc/config/libbid/_addsub_sd.c
! eec7e38d96b43c9118b42fc3cbee2a5f  libgcc/config/libbid/_addsub_td.c
! f0c95ca56ce854a104ba462a552aca31  libgcc/config/libbid/_dd_to_df.c
! f5e2512c16a497c177fda1cb3a37e6c5  libgcc/config/libbid/_dd_to_di.c
! ba9c1fe566ac7cf2f09cb3bb74aecd36  libgcc/config/libbid/_dd_to_sd.c
! c4bcb1724a1faec5c573fb15cfc2ce7f  libgcc/config/libbid/_dd_to_sf.c
! 34210cbcad219331307568357f458452  libgcc/config/libbid/_dd_to_si.c
! 7dd6f2ca3cdebbd1e535874557d4c519  libgcc/config/libbid/_dd_to_td.c
! 917959979695dd782f849ed591b2732a  libgcc/config/libbid/_dd_to_tf.c
! 8f8f97e466839386cd32566ad712d7bb  libgcc/config/libbid/_dd_to_udi.c
! 0aabe01a0d6c6992264a611b9819fdd5  libgcc/config/libbid/_dd_to_usi.c
! bedd04b037f45ddffa3a7db12c30e461  libgcc/config/libbid/_dd_to_xf.c
! ee373be047261f8e7a4a42300aeedab1  libgcc/config/libbid/_df_to_dd.c
! 458c03f737929adece95c2ef9d89b7f2  libgcc/config/libbid/_df_to_sd.c
! 48f059dea2460a5d7505447943618009  libgcc/config/libbid/_df_to_td.c
! 57bf279edd36ec770c372512177e8fac  libgcc/config/libbid/_di_to_dd.c
! abe521e0226feceeee33afc8185a9f68  libgcc/config/libbid/_di_to_sd.c
! 9a30a5f6306ad955cd47f1cc0a1b2cfe  libgcc/config/libbid/_di_to_td.c
! 7d24902d62d4812d0f3d4036369bd82e  libgcc/config/libbid/_div_dd.c
! b9f265f5344ed48c5cf986a705859bea  libgcc/config/libbid/_div_sd.c
! 9388a7a82ae1a07fb738d710079def75  libgcc/config/libbid/_div_td.c
! 5c81109111224f38785675ca5b831866  libgcc/config/libbid/_eq_dd.c
! ef59af301f8cad327dffcce7c553776b  libgcc/config/libbid/_eq_sd.c
! 41c6e62566252bbf28b2953e263ee8a3  libgcc/config/libbid/_eq_td.c
! 60552c5d2eee44ed2a250441608ff3b2  libgcc/config/libbid/_ge_dd.c
! baf7d8bb4efca3e8810a5b2991995d83  libgcc/config/libbid/_ge_sd.c
! 7829b46abbc1547708804781b1975dbe  libgcc/config/libbid/_ge_td.c
! e3af252db7fe87698bdb70cdcf1b44b2  libgcc/config/libbid/_gt_dd.c
! 93f49e15f9d0a5232ddd3d62b0b973b9  libgcc/config/libbid/_gt_sd.c
! ee39421fd63f909cb65524d7abcc234f  libgcc/config/libbid/_gt_td.c
! 33542c04b2854b7e5ead4c5aa54949a1  libgcc/config/libbid/_isinfd128.c
! 42e0dc49be8da9f80538db3391803cdd  libgcc/config/libbid/_isinfd32.c
! 2a488f4f567f91a19d5dd7bd68d49c73  libgcc/config/libbid/_isinfd64.c
! df9c6c5a2673af830261490da9f235c9  libgcc/config/libbid/_le_dd.c
! 145ae947a5968d431624ef727e3de359  libgcc/config/libbid/_le_sd.c
! 6510541a651d5a96459e6f80ba55d4c6  libgcc/config/libbid/_le_td.c
! e5dcee2601ed6474ee5a11fbde52f3cb  libgcc/config/libbid/_lt_dd.c
! 2e076bd2e9bdc39db711c02690c1264e  libgcc/config/libbid/_lt_sd.c
! e2b6d38de2112d1e6ed98c2a62b74f29  libgcc/config/libbid/_lt_td.c
! 7d5a852251d9de9b9933ccca20522d60  libgcc/config/libbid/_mul_dd.c
! cf7025fa928a61ec01f5678c54e5c7ea  libgcc/config/libbid/_mul_sd.c
! 72749aed8bc30cba715172ac8f6293ba  libgcc/config/libbid/_mul_td.c
! 1729b2491cab6380a665d871f9d92736  libgcc/config/libbid/_ne_dd.c
! c548ea10410a2419c8af17b5dc6fe838  libgcc/config/libbid/_ne_sd.c
! e988f1fc696bbb159563fdc8693f2e29  libgcc/config/libbid/_ne_td.c
! a44b20a07c7d57c5e88302f7c5a78bc6  libgcc/config/libbid/_sd_to_dd.c
! ae7d2005a727d0362b75ce7dcd5b4507  libgcc/config/libbid/_sd_to_df.c
! e8609b5e6f285404e0d1be8d96ffbf3b  libgcc/config/libbid/_sd_to_di.c
! 92b6ac402066c4614dc2b65632593cf0  libgcc/config/libbid/_sd_to_sf.c
! d6df32ca9294b571a1ec8e0410e9d9e9  libgcc/config/libbid/_sd_to_si.c
! 7f0fd8e868a27ec80cec8c39f5188e28  libgcc/config/libbid/_sd_to_td.c
! b18e5519982bdc6670d54b440263c47d  libgcc/config/libbid/_sd_to_tf.c
! cb9c949af02c1c96c5a9bb6d5060e85c  libgcc/config/libbid/_sd_to_udi.c
! 4484e123166fb7d058bea8bf772aa45a  libgcc/config/libbid/_sd_to_usi.c
! c206d610ea8f1a35c0ee267e33e7a353  libgcc/config/libbid/_sd_to_xf.c
! 8261ea3ca02bdb74569815e2f3dfcaca  libgcc/config/libbid/_sf_to_dd.c
! 02f24c23c89fad9f8e030418b7d386b7  libgcc/config/libbid/_sf_to_sd.c
! 532dfacf804da14f3cc6b2c3f90dc8c3  libgcc/config/libbid/_sf_to_td.c
! 97a42f5828a1b1e78bd8dca6fd751d4e  libgcc/config/libbid/_si_to_dd.c
! 173eb916fa05d42164b47e3733ebb9e8  libgcc/config/libbid/_si_to_sd.c
! 9d78794b872f1145d21b28020c22b88d  libgcc/config/libbid/_si_to_td.c
! 2c84d8aa91fa9539193c99d73d3f18d3  libgcc/config/libbid/_td_to_dd.c
! 5f5e09fd1048fafc4edb86a679d1fe01  libgcc/config/libbid/_td_to_df.c
! d87b40ac7e413dce742de4f372519023  libgcc/config/libbid/_td_to_di.c
! 73853996cc7f63f0ab24e3dfb500b095  libgcc/config/libbid/_td_to_sd.c
! 2d0f9b4fde7edea05c5dd41baf0f5c9e  libgcc/config/libbid/_td_to_sf.c
! 51ff874bde66256e2c6d824db726f928  libgcc/config/libbid/_td_to_si.c
! 53e170eeb91e8e6b1c5be028c22c941c  libgcc/config/libbid/_td_to_tf.c
! d23fc56b9d5ee179de7a042921c9fb8d  libgcc/config/libbid/_td_to_udi.c
! d40a44e502ffd53160bc6e78ecbfd0f0  libgcc/config/libbid/_td_to_usi.c
! c5ae768dbad5e2bf20b6dbd4137aaa01  libgcc/config/libbid/_td_to_xf.c
! 8f2978f13c92436b98ef7a9c2dd9a9fd  libgcc/config/libbid/_tf_to_dd.c
! cc54bf4b4e21e141b5cb3f5b4d35c8fe  libgcc/config/libbid/_tf_to_sd.c
! 858869f3279e3d173b2ac7a722cc4294  libgcc/config/libbid/_tf_to_td.c
! 24440d564f2ce13a1a269c5bd607dc16  libgcc/config/libbid/_udi_to_dd.c
! 279b860467e5a0fbb45e5e23d34b9ab2  libgcc/config/libbid/_udi_to_sd.c
! 6e87ae1102266e2404071b469b24a23d  libgcc/config/libbid/_udi_to_td.c
! 6b2176c24d1e3891a47cffeb41d59b12  libgcc/config/libbid/_unord_dd.c
! 932d62ba17fe9ab2a26ea5ba03fcafa7  libgcc/config/libbid/_unord_sd.c
! 93ffc16dc39ef099accc10f19d785947  libgcc/config/libbid/_unord_td.c
! dd55df82109cad712fafd7cc4cdf415f  libgcc/config/libbid/_usi_to_dd.c
! b72b08132635c0d6a762b5a2c9a87ccc  libgcc/config/libbid/_usi_to_sd.c
! 0c31e1fde8b0ec9ca6e048b5a881de3c  libgcc/config/libbid/_usi_to_td.c
! 902b64e84ace8e05c42dcb6a47cc4fba  libgcc/config/libbid/_xf_to_dd.c
! e8970f49c93549179f0e9a2c01f16834  libgcc/config/libbid/_xf_to_sd.c
! a565b500a399c126e8a73209c28848a7  libgcc/config/libbid/_xf_to_td.c
! c0716f45e33cf6a91115420f7dd30396  libgcc/config/libbid/bid128.c
! 7a695cf7f99cfb08366adc66708a454c  libgcc/config/libbid/bid128_2_str.h
! 5293b3bb329185b21a971e560df487c7  libgcc/config/libbid/bid128_2_str_macros.h
! 565b8f44576886d0592568452c77ac12  libgcc/config/libbid/bid128_2_str_tables.c
! d278fd78a4cec50a22d8ce4fdc4d36e6  libgcc/config/libbid/bid128_add.c
! 459eae79f2024cfad2e543d63140ae5f  libgcc/config/libbid/bid128_compare.c
! 3d15ffa289c1879c1ff4fdf83e1bbe71  libgcc/config/libbid/bid128_div.c
! 982bc40f3c6b3b32ce7a07e6a66628db  libgcc/config/libbid/bid128_fma.c
! 83a046cc60621e5a7f530072e0c7027b  libgcc/config/libbid/bid128_logb.c
! 2a1bd1e12d905a6122fff9ee40d37e5c  libgcc/config/libbid/bid128_minmax.c
! ab1109987821292802926f8cd8c7f010  libgcc/config/libbid/bid128_mul.c
! f847ef294f3725057a162340e4265fc0  libgcc/config/libbid/bid128_next.c
! cae6090189494123fab164d6ad716632  libgcc/config/libbid/bid128_noncomp.c
! 357986dc4367bae3dfa3163060e7c83b  libgcc/config/libbid/bid128_quantize.c
! 7bb5e9bfce842a40ff502809237f465e  libgcc/config/libbid/bid128_rem.c
! 0cc3b81a4902e52b811b0650b33f06d4  libgcc/config/libbid/bid128_round_integral.c
! 4b9d5e97f49c56ab883f7767999ba9da  libgcc/config/libbid/bid128_scalb.c
! 0295906fc2802e02e2d9b4892ecd692b  libgcc/config/libbid/bid128_sqrt.c
! db10da8cf6599eefc7618c8f3c9d6037  libgcc/config/libbid/bid128_string.c
! 061c1c0d6da7c5db313a19b30ab30e6a  libgcc/config/libbid/bid128_to_int16.c
! 6ee52b0435e8b046d7d4b9f6b2fdf3c3  libgcc/config/libbid/bid128_to_int32.c
! 37dca1a61d5be2c73e28d9eafde389fd  libgcc/config/libbid/bid128_to_int64.c
! 784b73f86b756ded9a52cbade105ddc6  libgcc/config/libbid/bid128_to_int8.c
! fa5b4371460fb7d7b3308af803693df1  libgcc/config/libbid/bid128_to_uint16.c
! 5f2339fce8a3d9515d6b7cd323e341ba  libgcc/config/libbid/bid128_to_uint32.c
! 8599583d8fcd06bc1228388bbedd3f61  libgcc/config/libbid/bid128_to_uint64.c
! 6d754ee74c839e8b6435c0ac9968c388  libgcc/config/libbid/bid128_to_uint8.c
! 6200733c542e8db669584312eee74cd2  libgcc/config/libbid/bid32_to_bid128.c
! 37de5106a7e88034aac8a69be5dbb248  libgcc/config/libbid/bid32_to_bid64.c
! f37bbdf0b7f3486e7a0384286c0e24a9  libgcc/config/libbid/bid64_add.c
! c743ae9c68c2c7b08441cdfe2f8ebd5f  libgcc/config/libbid/bid64_compare.c
! c21ed0ce62d5fdd9d4794bbaf519f399  libgcc/config/libbid/bid64_div.c
! 662120a740e4ce46d290c8874dac8a76  libgcc/config/libbid/bid64_fma.c
! 159ad1d86bc206db2d1712f5d82a89bf  libgcc/config/libbid/bid64_logb.c
! 896e09bbae816b1e0ff0e3fed509a560  libgcc/config/libbid/bid64_minmax.c
! e575d6d22fe18b78568110bb3605e9f7  libgcc/config/libbid/bid64_mul.c
! 08b1e254c04d1dfd8cb7660f18e41f7a  libgcc/config/libbid/bid64_next.c
! 647297b050ab6f06015deb3c8ff1c137  libgcc/config/libbid/bid64_noncomp.c
! 7a42fc59b8ba8df5f1abf7232c3c69a8  libgcc/config/libbid/bid64_quantize.c
! 53dbcf21e305eb08aef17a535221989b  libgcc/config/libbid/bid64_rem.c
! b2cea34a442f97a0e81effca0c40d519  libgcc/config/libbid/bid64_round_integral.c
! 14ef4cc98590cbd94368d5a6d6e4ef8d  libgcc/config/libbid/bid64_scalb.c
! 32031af23e293362baf2c9da831c441d  libgcc/config/libbid/bid64_sqrt.c
! 8599fe68ee58d721d7317a8744adc4a2  libgcc/config/libbid/bid64_string.c
! 5b33a2a97aad2674047011f7dec7c6a6  libgcc/config/libbid/bid64_to_bid128.c
! 2e64caff1331c8dcf1ffab6bc200a8dd  libgcc/config/libbid/bid64_to_int16.c
! e9af49ec8035d386cb0539bb4a055848  libgcc/config/libbid/bid64_to_int32.c
! 2b783b43ce434aa419f1bdf44276985f  libgcc/config/libbid/bid64_to_int64.c
! e8d2fc3b8dfb502a0bbb619d9aa05dab  libgcc/config/libbid/bid64_to_int8.c
! b10e2a69b40147fb595d9bb303953141  libgcc/config/libbid/bid64_to_uint16.c
! af9c7c7371572517c0d25f6c42abae3a  libgcc/config/libbid/bid64_to_uint32.c
! 0a10617532fca6993f96b3d536e4edbf  libgcc/config/libbid/bid64_to_uint64.c
! ab94a2f6a8eaff1f04834b45aeb61c14  libgcc/config/libbid/bid64_to_uint8.c
! 55f95bec860fbf14c05cc978132738f2  libgcc/config/libbid/bid_b2d.h
! 952f664c4e207ce1298c62978d2c07c7  libgcc/config/libbid/bid_binarydecimal.c
! 626486d565e0292bd29d43a035b73192  libgcc/config/libbid/bid_conf.h
! a9015c696f9cc9a2d1816d3cab9b635c  libgcc/config/libbid/bid_convert_data.c
! 15f92cd6c240b5f1325360e3e528a147  libgcc/config/libbid/bid_decimal_data.c
! 0f44076fa32c2a0958902143cc949b10  libgcc/config/libbid/bid_decimal_globals.c
! 1e5c607b763dcc1b3ce1a1bfafa33437  libgcc/config/libbid/bid_div_macros.h
! 43961e4ff16bf977fad1844a56f53a02  libgcc/config/libbid/bid_dpd.c
! 3f8805da52ec5738baf3d0c80e425717  libgcc/config/libbid/bid_flag_operations.c
! 1bf05ec785195d0b095a8ae1177dec18  libgcc/config/libbid/bid_from_int.c
! 273594c2f7d131308754f8628802e57a  libgcc/config/libbid/bid_functions.h
! 156929f5c4946ef4cce23237add00330  libgcc/config/libbid/bid_gcc_intrinsics.h
! f1ee4f0f9c90f6ba669a98cd28a779d3  libgcc/config/libbid/bid_inline_add.h
! 933f61447b2f980370f74a5001cae532  libgcc/config/libbid/bid_internal.h
! c9e2b9dc24ce6af78b4186071598c3b0  libgcc/config/libbid/bid_round.c
! b8c7ad34e8851a52ee44fb312bffcd62  libgcc/config/libbid/bid_sqrt_macros.h
! bff5b3255b80d5aef1ff50951cce066c  libgcc/config/libgcc-glibc.ver
  5e552844975595b21cbaabb9a26fd91e  libgcc/config/libgcc-libsystem.ver
! 5d3c4c244ef3e343aa7ec20b6ec051b8  libgcc/config/lm32/_ashlsi3.S
! e6e17687f17e9cce8124c4e2907b621a  libgcc/config/lm32/_ashrsi3.S
! 5ffaead64fe382fa579d9e9028ba2bfe  libgcc/config/lm32/_divsi3.c
! 80e7bd42ffed34dff7690c979aeebc25  libgcc/config/lm32/_lshrsi3.S
! ddc75359e831682598f9f0fd85548fa8  libgcc/config/lm32/_modsi3.c
! 76bb981b6f47cfeeac66ccb507bd3142  libgcc/config/lm32/_mulsi3.c
! 6c5978800633005a312c14b8353b795a  libgcc/config/lm32/_udivmodsi4.c
! eb3e4af17184a87ab8abd272e302de8e  libgcc/config/lm32/_udivsi3.c
! af176e2a5620210058221f43b1267f9d  libgcc/config/lm32/_umodsi3.c
! 853e9ee179b0b8c1d2f6333f58671ee1  libgcc/config/lm32/crti.S
! a92f1b278afb08442716312edb58d0b1  libgcc/config/lm32/crtn.S
! a9125f3bfba0e81d18b5148f3afe35a6  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
! 954766f9649a982202e1d7b0e5e2183e  libgcc/config/m32c/lib1funcs.S
! 9b6daae0974a2d118d040ee6ae46c466  libgcc/config/m32c/lib2funcs.c
  9f1fc3a0f039273ded002a6713908bd3  libgcc/config/m32c/t-m32c
! 60a3f1468373ac6a8a40718c06e96512  libgcc/config/m32c/trapv.c
! 69137a2c42a02d70e0e1ab08fee4fbad  libgcc/config/m32r/initfini.c
! 7c90cfd7acb9c15543ffbfd87034adb5  libgcc/config/m32r/libgcc-glibc.ver
  a5b8b5a1404938f1f4b598db7eb1669e  libgcc/config/m32r/t-linux
  e252c161ec4eb09d3b5a62d902b3d00f  libgcc/config/m32r/t-m32r
! b650d29cb343bbe88c8cbd4536acd6ea  libgcc/config/m68k/crti.S
! 8df5d44a19543e7b3e45260eaddd6f09  libgcc/config/m68k/crtn.S
  c88d87907a20077db176016165428d4b  libgcc/config/m68k/fpgnulib.c
! 77301eaa81ff7751708ef5e294d4909f  libgcc/config/m68k/lb1sf68.S
! a6c6e7db3cf2ffb0db241a2abbcad0a9  libgcc/config/m68k/linux-atomic.c
! b7a690beaf8140975729b8a68dcca505  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
! efc74b6db71f3632f98e2ba3002e1f4f  libgcc/config/mcore/crti.S
! f2b30019374435416ec1dd97fba3ef59  libgcc/config/mcore/crtn.S
! 3be587cd7ba2f78b402f78d327ee7e79  libgcc/config/mcore/lib1funcs.S
  ef74fd63202d842bfe7120864186128c  libgcc/config/mcore/t-mcore
! 0cfe6932b00234ffa228703984acab9c  libgcc/config/microblaze/crti.S
! e76f952776b10c45510ab39fbfabc5db  libgcc/config/microblaze/crtn.S
! f8a5a61d1bc3cfd359676c4c6349ca53  libgcc/config/microblaze/divsi3.S
! d6b4d3c21ca626a41f5430d961a79fb3  libgcc/config/microblaze/divsi3_table.c
! 1e12af6bfee5aa63e75ba894597c2646  libgcc/config/microblaze/moddi3.S
! d4517be1d19844ca9ea29d151afb8749  libgcc/config/microblaze/modsi3.S
! 386ba1a3b4cefbc06da24a60697e6bdf  libgcc/config/microblaze/muldi3_hard.S
! 0ceedd9942689685b9b91f51b4977f32  libgcc/config/microblaze/mulsi3.S
! ab90ea540c1b00882f45d352cafec426  libgcc/config/microblaze/stack_overflow_exit.S
  702cd2045c2c31581ecd56232d96d5f5  libgcc/config/microblaze/t-microblaze
! c67dc5eff322cd19ab088f7a346f425e  libgcc/config/microblaze/udivsi3.S
! f4a63bb38feeaad85f8a1ae3c9c7afdb  libgcc/config/microblaze/umodsi3.S
! 93631c63eec1c3ac51e943e3b67888f8  libgcc/config/mips/crtfastmath.c
! 348e6ae3c64f0cfc7ef483af18e7126f  libgcc/config/mips/crti.S
! 004a5de68dea7889677f88f3a23cfef5  libgcc/config/mips/crtn.S
! 9d733429aa03c33b7caef06cf8879e64  libgcc/config/mips/gthr-mipssde.h
! acb593b06e0791eac816f8d6ccf0ae5a  libgcc/config/mips/lib2funcs.c
! e17613f300721a10eafc23664fa8370b  libgcc/config/mips/libgcc-mips16.ver
! f6b59c43e0571b76872c0f4412da566d  libgcc/config/mips/linux-unwind.h
! 9e30497568d537cc85013ca8d5df9c8e  libgcc/config/mips/mips16.S
! cbca09f94ec250e29405bd00c8b62466  libgcc/config/mips/sfp-machine.h
  5b43c15f4e003338742d215bcfdf5029  libgcc/config/mips/t-crtstuff
  33f2c96b7ccbbb062839ec1e7329e6bb  libgcc/config/mips/t-elf
  501be8fccb18eca4dbd8b404d7b4c9fa  libgcc/config/mips/t-mips
! a237f0949763b6b249c61b57cae8c9d4  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
! e835481c94fdaf2b4a1fdda03d80b50a  libgcc/config/mips/vr4120-div.S
! 5b340e0f7eb77c5538bad578a13481dc  libgcc/config/mmix/crti.S
! d51c4dc7d5c89be81faa072c0cec82f9  libgcc/config/mmix/crtn.S
  41478efd1b19b3c7c9426d8e843f3b39  libgcc/config/mmix/t-mmix
! f97dcef7f44c873c5d9c5965ac374b08  libgcc/config/moxie/crti.S
! 1e6e61d3786fe9cd46135dd76508df84  libgcc/config/moxie/crtn.S
  5d570ff5cd40fc6fba8876bdebd59a6b  libgcc/config/moxie/sfp-machine.h
  9b7000ea173c226d39e6a6dc116fdaf1  libgcc/config/msp430/cmpd.c
! 98913a34c14548a3bfb80b392f3fecb3  libgcc/config/msp430/cmpsi2.S
! 35c58b8222e30b4cd9124e465875405d  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
! 58bb75676676e249a7d829e921d7c309  libgcc/config/msp430/lib2bitcountHI.c
! 8c66a9eae069a9f5cf9a01c7943a2db5  libgcc/config/msp430/lib2divHI.c
! 1ea86c4fb47a8f732126990de54a561e  libgcc/config/msp430/lib2divQI.c
! f931adb32e925dc79c59c74f68986134  libgcc/config/msp430/lib2divSI.c
! 5688746b93dd074d8528c14465f40e97  libgcc/config/msp430/lib2hw_mul.S
! 8947b41c7ef67d822953379073df3a7f  libgcc/config/msp430/lib2mul.c
! 1889f9bea576bf05f241af820f32a0f1  libgcc/config/msp430/lib2shift.c
  585dda5cb05623da62e4f4aad3bdbbb6  libgcc/config/msp430/mpy.c
! b3c75d0d822e969d13c04df9996b6225  libgcc/config/msp430/msp430-divmod.h
! a67fe5f56ee77ebce43803f85c983a50  libgcc/config/msp430/msp430-mul.h
! f99717ba7bcbe082132af0a940ea1e6c  libgcc/config/msp430/slli.S
! ad4798e80eca7ca8d29d6ef9a8b03a39  libgcc/config/msp430/srai.S
! fdbe763026f51eda043d60a88f4f02f8  libgcc/config/msp430/srli.S
! 758f9ad9532c4d22043e7413fbdaf8d9  libgcc/config/msp430/t-msp430
! 947311de8a9766e30a9b2aff020b1aae  libgcc/config/nds32/crtzero.S
! e946edd3d55f50ff21e2043702d05959  libgcc/config/nds32/initfini.c
! 587b9b98d2085253da30ee8435a00d6b  libgcc/config/nds32/isr-library/adj_intr_lvl.inc
! 012f6a233ee5feeb5104185c401881a3  libgcc/config/nds32/isr-library/excp_isr.S
! e1188e05e4fd1335bbfa025c81538b5a  libgcc/config/nds32/isr-library/excp_isr_4b.S
! a71397cc0d5708109a42d391143bb54b  libgcc/config/nds32/isr-library/intr_isr.S
! ef9ae0ea67d17c8f3b016344776d5acb  libgcc/config/nds32/isr-library/intr_isr_4b.S
! 34b890b2b28f4884e3c2173723cfc564  libgcc/config/nds32/isr-library/jmptbl_vid00.S
! 609efbddaaf5eb83b7e987be826c6f77  libgcc/config/nds32/isr-library/jmptbl_vid01.S
! fe383685bc4ea5a83d88eabd0044ccef  libgcc/config/nds32/isr-library/jmptbl_vid02.S
! ea6858c9801e2e6251d33d6f418ae244  libgcc/config/nds32/isr-library/jmptbl_vid03.S
! bcc27c564b1918489ee54d0de215c106  libgcc/config/nds32/isr-library/jmptbl_vid04.S
! 847452b0fcfe6426f209b0c4be6e9b36  libgcc/config/nds32/isr-library/jmptbl_vid05.S
! bb932a8ac2919317b9f042bf2d9fbe4c  libgcc/config/nds32/isr-library/jmptbl_vid06.S
! d92849fd5c0e870a64963c0a86f0e09f  libgcc/config/nds32/isr-library/jmptbl_vid07.S
! f0501b1fe74b484e0b625a4316372cbf  libgcc/config/nds32/isr-library/jmptbl_vid08.S
! 200537afc8cdd15001d1c7aae158cd4e  libgcc/config/nds32/isr-library/jmptbl_vid09.S
! a52a6a09d3de78b761347dd652f74a8e  libgcc/config/nds32/isr-library/jmptbl_vid10.S
! af57a927ea180f5673ac7512cbc09f0f  libgcc/config/nds32/isr-library/jmptbl_vid11.S
! 6c6608e11094dc09fbf29b165493f489  libgcc/config/nds32/isr-library/jmptbl_vid12.S
! 6bafbd37037de2a9d5f90aca1b417912  libgcc/config/nds32/isr-library/jmptbl_vid13.S
! 494d41eca725440c3a5847c85f4e814a  libgcc/config/nds32/isr-library/jmptbl_vid14.S
! 204dce96302e6ce007a3462ad30210ec  libgcc/config/nds32/isr-library/jmptbl_vid15.S
! f4373f521360489d169f19137ab1fb35  libgcc/config/nds32/isr-library/jmptbl_vid16.S
! 77ce783bf95ebff1e00df27f8e23698b  libgcc/config/nds32/isr-library/jmptbl_vid17.S
! 885c9bbd79f0c84797c48ca51d8ae791  libgcc/config/nds32/isr-library/jmptbl_vid18.S
! 35ea1deb46c5510934841656d0e58627  libgcc/config/nds32/isr-library/jmptbl_vid19.S
! ad2f5f164e1003ce47da8ad736ab4c01  libgcc/config/nds32/isr-library/jmptbl_vid20.S
! 62f35a8d0b6627b4d088d7c77b5060a8  libgcc/config/nds32/isr-library/jmptbl_vid21.S
! b751a694d5735f3ba8e66c0c1dfc53b1  libgcc/config/nds32/isr-library/jmptbl_vid22.S
! 6cb6864a6404fb1788d97d7ef9d27f6b  libgcc/config/nds32/isr-library/jmptbl_vid23.S
! 6e90b9f7825e53c9d9720f454a74ab95  libgcc/config/nds32/isr-library/jmptbl_vid24.S
! 2e81da4d5f723dd82dc5a660a7c32cc6  libgcc/config/nds32/isr-library/jmptbl_vid25.S
! 20e782dc10c907d8aac72e636d8100f9  libgcc/config/nds32/isr-library/jmptbl_vid26.S
! 9b8b3a401793f87af22c655e1556d0f5  libgcc/config/nds32/isr-library/jmptbl_vid27.S
! 0fffc35cd5f64a39e7b301454829c91b  libgcc/config/nds32/isr-library/jmptbl_vid28.S
! a8ab2237d0cb3e44b1980f1bcbaa0c8f  libgcc/config/nds32/isr-library/jmptbl_vid29.S
! a27d1dd4d9966caed6cb6ccc1c163d01  libgcc/config/nds32/isr-library/jmptbl_vid30.S
! 24c145cf787cb47aacf770630deba6d0  libgcc/config/nds32/isr-library/jmptbl_vid31.S
! 648a9da30d1584ef5172167340a9e865  libgcc/config/nds32/isr-library/jmptbl_vid32.S
! c83e5503c5f9bd95a4a5fc15e7b1b4c2  libgcc/config/nds32/isr-library/jmptbl_vid33.S
! 38f2560af20f79c3976d995efcb2dd9d  libgcc/config/nds32/isr-library/jmptbl_vid34.S
! 9ee0235106478b0c46b227c07d20422f  libgcc/config/nds32/isr-library/jmptbl_vid35.S
! 38c36ef015ba34ac95158d352cc5f008  libgcc/config/nds32/isr-library/jmptbl_vid36.S
! da5c1d928d4905b0d3b5c980b2652cc9  libgcc/config/nds32/isr-library/jmptbl_vid37.S
! ef4b1d0089bd96d98341e30b84ad0c0f  libgcc/config/nds32/isr-library/jmptbl_vid38.S
! a00287f192f0ffe65d931409053ed790  libgcc/config/nds32/isr-library/jmptbl_vid39.S
! f8d993958ed89f93059a8c088c8c97e3  libgcc/config/nds32/isr-library/jmptbl_vid40.S
! 669e4bc992faefe093db05aa0b2bb74f  libgcc/config/nds32/isr-library/jmptbl_vid41.S
! 74d40bdfc1c352306da91e1e1bd2ecb2  libgcc/config/nds32/isr-library/jmptbl_vid42.S
! 09c7f42798e02e625dfae13dbf286d34  libgcc/config/nds32/isr-library/jmptbl_vid43.S
! 144ba4dae56516a9a83421072ff8fa17  libgcc/config/nds32/isr-library/jmptbl_vid44.S
! f589eb3fd0dbdabfab46d2ec131204b6  libgcc/config/nds32/isr-library/jmptbl_vid45.S
! b6992f81b369ed4636a1b1191fabaa34  libgcc/config/nds32/isr-library/jmptbl_vid46.S
! 6e4952c22747bade14c2743cda7bd94e  libgcc/config/nds32/isr-library/jmptbl_vid47.S
! 51159d95ed736889c8b5bafe6bc5594c  libgcc/config/nds32/isr-library/jmptbl_vid48.S
! dd3a2e0fbcfe8c408463715b56a27259  libgcc/config/nds32/isr-library/jmptbl_vid49.S
! 3601f253613c4f6e47fdcc9d2092bb91  libgcc/config/nds32/isr-library/jmptbl_vid50.S
! 411ea9421b21fa00c3ece184424be286  libgcc/config/nds32/isr-library/jmptbl_vid51.S
! d1edb4d69fdd40735f73a1cbd07b0d5b  libgcc/config/nds32/isr-library/jmptbl_vid52.S
! 96d3bd549ec410c824e07bd806761123  libgcc/config/nds32/isr-library/jmptbl_vid53.S
! 1eec309efdc892bf2bd3f9b5f4503e58  libgcc/config/nds32/isr-library/jmptbl_vid54.S
! 17a0fba32a9a632d144c27c391f2cbc0  libgcc/config/nds32/isr-library/jmptbl_vid55.S
! c664d0cd541701beb456b8225f5360fe  libgcc/config/nds32/isr-library/jmptbl_vid56.S
! 21bcb6bbf37549ddd51cf9217a3c2402  libgcc/config/nds32/isr-library/jmptbl_vid57.S
! 5205e65df369639983fdc919e93360ac  libgcc/config/nds32/isr-library/jmptbl_vid58.S
! ff8187da5fcff2ec105052e0ff39013d  libgcc/config/nds32/isr-library/jmptbl_vid59.S
! f0873edb6915ac25ce27fd549af28e16  libgcc/config/nds32/isr-library/jmptbl_vid60.S
! f5ff7ef094a5d3d535c99033407ca8d0  libgcc/config/nds32/isr-library/jmptbl_vid61.S
! 5509f1bf77826ff946f86e831671f639  libgcc/config/nds32/isr-library/jmptbl_vid62.S
! ad46b32fa9c0ed6b262d0d3932d148b9  libgcc/config/nds32/isr-library/jmptbl_vid63.S
! 56480a2d1afe59aa2e70da91f1047043  libgcc/config/nds32/isr-library/jmptbl_vid64.S
! a537f93d6e803085a2ef284c42176f87  libgcc/config/nds32/isr-library/jmptbl_vid65.S
! 1fe0850d12632a0f20c875ce73dce129  libgcc/config/nds32/isr-library/jmptbl_vid66.S
! 455282c14a6f816da1dd1a8120862d09  libgcc/config/nds32/isr-library/jmptbl_vid67.S
! a09c39f03253df462b32541b18b8cbfe  libgcc/config/nds32/isr-library/jmptbl_vid68.S
! 11e88b0f7718e355771b942e2ffe8306  libgcc/config/nds32/isr-library/jmptbl_vid69.S
! cb245c63c6f75357ac9fdad85f27ddb5  libgcc/config/nds32/isr-library/jmptbl_vid70.S
! 66a92fb855146c17a6c7c354b6aeee39  libgcc/config/nds32/isr-library/jmptbl_vid71.S
! ad3f7e7418f6d42b17633f168ec09f62  libgcc/config/nds32/isr-library/jmptbl_vid72.S
! 67d628e491bc04daf64d427d23a8cee6  libgcc/config/nds32/isr-library/nmih.S
! 17648e24b68b7a24edb2c38218ff3fdf  libgcc/config/nds32/isr-library/reset.S
! 3a699d6d805143436de63b0cf59edff8  libgcc/config/nds32/isr-library/reset_4b.S
! 751aa7f890f7cb01a723a02c8bdb0ee2  libgcc/config/nds32/isr-library/restore_all.inc
! 0150fe58f7d7688df0ac0aefb4417147  libgcc/config/nds32/isr-library/restore_fpu_regs.inc
! 16fbc8d683a6ca2590e3174e0535eb0f  libgcc/config/nds32/isr-library/restore_fpu_regs_00.inc
! aeb6a9f67b82d9bf83102c0dfd2e5e1f  libgcc/config/nds32/isr-library/restore_fpu_regs_01.inc
! d97e52a04c383f84eec2d76e2a93f873  libgcc/config/nds32/isr-library/restore_fpu_regs_02.inc
! 7f34fa0b27bbfbf19150113772ce231a  libgcc/config/nds32/isr-library/restore_fpu_regs_03.inc
! 2e60a91b1e0b517a7e15fde44c869d4c  libgcc/config/nds32/isr-library/restore_mac_regs.inc
! 6e3c901ffae73e854accc2c0c9736bc2  libgcc/config/nds32/isr-library/restore_partial.inc
! 31788bc172ed5832fa160ab781f43d34  libgcc/config/nds32/isr-library/save_all.inc
! 90d5dfe45fb81c5ff735d7f6d402ca3f  libgcc/config/nds32/isr-library/save_fpu_regs.inc
! 1c0981e2839db42880bd0c8310e8b10a  libgcc/config/nds32/isr-library/save_fpu_regs_00.inc
! 5cc55bce1ba77802f10819866aef1730  libgcc/config/nds32/isr-library/save_fpu_regs_01.inc
! 6c85279e1a359be97006751d69d70e19  libgcc/config/nds32/isr-library/save_fpu_regs_02.inc
! e87065545c6a3b6c6deb7875e0c1fcd2  libgcc/config/nds32/isr-library/save_fpu_regs_03.inc
! 03a7cbb14c4077481c9e661c9290ba4c  libgcc/config/nds32/isr-library/save_mac_regs.inc
! 70352d256c8dc4928492e4d6c8e96001  libgcc/config/nds32/isr-library/save_partial.inc
! 73e5c6ae0adc8110683f0dba698be140  libgcc/config/nds32/isr-library/vec_vid00.S
! 7da1e087a59ce0983ade581f9977f790  libgcc/config/nds32/isr-library/vec_vid00_4b.S
! 877b5b66ff7424d6168bcb77433861bf  libgcc/config/nds32/isr-library/vec_vid01.S
! 90b8690d151c22976a8d6d9c8e1b0cfc  libgcc/config/nds32/isr-library/vec_vid01_4b.S
! a134f80b0a59fe16b09705ab62a63793  libgcc/config/nds32/isr-library/vec_vid02.S
! f37089347e08456408ecaffddb06043e  libgcc/config/nds32/isr-library/vec_vid02_4b.S
! 9cc4d3f209fbdfbc100c8faaf9c57d75  libgcc/config/nds32/isr-library/vec_vid03.S
! 0cefb56c079ef06f7594999f186b6d70  libgcc/config/nds32/isr-library/vec_vid03_4b.S
! 0c12c2f56d0c1829c7a8874ba2155d64  libgcc/config/nds32/isr-library/vec_vid04.S
! ff6b54afb17fe3d98a8fae81e56f59c3  libgcc/config/nds32/isr-library/vec_vid04_4b.S
! 986190767936bbf048a5adcaaefb5af2  libgcc/config/nds32/isr-library/vec_vid05.S
! 7d7f92d45158461665894565a05d866c  libgcc/config/nds32/isr-library/vec_vid05_4b.S
! e45fb9b9afa5e2f84a3e0797811a8055  libgcc/config/nds32/isr-library/vec_vid06.S
! 7224d4215b66991ad0f3309c6567ae05  libgcc/config/nds32/isr-library/vec_vid06_4b.S
! 6e68891c1747da030561ccad728792ca  libgcc/config/nds32/isr-library/vec_vid07.S
! af2b274e382df4fe3859846802313318  libgcc/config/nds32/isr-library/vec_vid07_4b.S
! d2d5f24d538c9020067563dac6d2a4e2  libgcc/config/nds32/isr-library/vec_vid08.S
! 26175f93e0bda2f00bfa7744332faa84  libgcc/config/nds32/isr-library/vec_vid08_4b.S
! 47066e3f7ee1df51d3b6e5f2dc81f623  libgcc/config/nds32/isr-library/vec_vid09.S
! 0278f9ceb27adaa920bef63d6be30775  libgcc/config/nds32/isr-library/vec_vid09_4b.S
! 7edfdab63e579cb5106385b48a4f411b  libgcc/config/nds32/isr-library/vec_vid10.S
! 5aaff47bf662bb07cc41efa5d8dfccb8  libgcc/config/nds32/isr-library/vec_vid10_4b.S
! dc465685dc0d1e9b4261049b36405402  libgcc/config/nds32/isr-library/vec_vid11.S
! e55da90f16063cb002ad37983f7493c6  libgcc/config/nds32/isr-library/vec_vid11_4b.S
! a7e98637baa12917c0f977575e7ff734  libgcc/config/nds32/isr-library/vec_vid12.S
! e8a2871d6a57f96ee52fabeea5ec7726  libgcc/config/nds32/isr-library/vec_vid12_4b.S
! b262436f332659f84d6f9ef72430ad93  libgcc/config/nds32/isr-library/vec_vid13.S
! a9e59805c5263215d86e013466eb8e0b  libgcc/config/nds32/isr-library/vec_vid13_4b.S
! 6f0a1d61e056dbe0dcdc65df35e15844  libgcc/config/nds32/isr-library/vec_vid14.S
! dba5f63906b9de1dab9fdb6aad778c69  libgcc/config/nds32/isr-library/vec_vid14_4b.S
! 4b70ce15e797d98664c4b8245feca22c  libgcc/config/nds32/isr-library/vec_vid15.S
! c9c49ec7bc42b7f42ccb55d62df22bd3  libgcc/config/nds32/isr-library/vec_vid15_4b.S
! fa3c55907ec05749a6cfd74c242a60a0  libgcc/config/nds32/isr-library/vec_vid16.S
! d6da8551836e80528a682bad5716ed81  libgcc/config/nds32/isr-library/vec_vid16_4b.S
! ef6bedc9f1d6699005f8d5ba00862d04  libgcc/config/nds32/isr-library/vec_vid17.S
! edc3bced79ca0331efa4d98d7b95bceb  libgcc/config/nds32/isr-library/vec_vid17_4b.S
! 7a2dd774e5756af53e82dd82ee251f6e  libgcc/config/nds32/isr-library/vec_vid18.S
! 353ba337c7afb5bf8c8371a3c89d9575  libgcc/config/nds32/isr-library/vec_vid18_4b.S
! 2a8ed19157137b0dd9cd55ef5cf85a86  libgcc/config/nds32/isr-library/vec_vid19.S
! c8e14df57ce3e95a5b317a065482ec10  libgcc/config/nds32/isr-library/vec_vid19_4b.S
! c92835f719720813e2a6c59d08aec448  libgcc/config/nds32/isr-library/vec_vid20.S
! a17af8ce5f92004e8648e4fe6fac1c92  libgcc/config/nds32/isr-library/vec_vid20_4b.S
! 8c43d171e56776595315b4e832f6ae5c  libgcc/config/nds32/isr-library/vec_vid21.S
! 6bfa4de190d4137b01a9cfdc74265c8e  libgcc/config/nds32/isr-library/vec_vid21_4b.S
! c778c067079d077949425f0e58d7b143  libgcc/config/nds32/isr-library/vec_vid22.S
! ef002b33538febd5dd2ef3b745011a14  libgcc/config/nds32/isr-library/vec_vid22_4b.S
! fcf21401ef0ade89dc529f81516b4267  libgcc/config/nds32/isr-library/vec_vid23.S
! 7875832dab3a94595e8a79c44ff23a2c  libgcc/config/nds32/isr-library/vec_vid23_4b.S
! 33268f9de88e6234b384267c5e8351aa  libgcc/config/nds32/isr-library/vec_vid24.S
! 82d0535d8a9e59fb6ae465b07b303485  libgcc/config/nds32/isr-library/vec_vid24_4b.S
! 348290fd70f0057049fdc309d334622b  libgcc/config/nds32/isr-library/vec_vid25.S
! 0eb652f1a5a93b5478db3b690eceaf26  libgcc/config/nds32/isr-library/vec_vid25_4b.S
! c2198f4c3b7a0454d56e89b259408410  libgcc/config/nds32/isr-library/vec_vid26.S
! 48448de16df9ba1de50f3b7e6836ec2a  libgcc/config/nds32/isr-library/vec_vid26_4b.S
! 3d40a454dca9b435a9ab7e9e53e85f35  libgcc/config/nds32/isr-library/vec_vid27.S
! 7ee04ffab0e1c6666dde6bff52605b6e  libgcc/config/nds32/isr-library/vec_vid27_4b.S
! 581cfa332c49a3162844230a81d230b4  libgcc/config/nds32/isr-library/vec_vid28.S
! 2ad0acd8c67c3b6a9749362f4a8144af  libgcc/config/nds32/isr-library/vec_vid28_4b.S
! f379efd7b2dbc11abe9cb2b33baca680  libgcc/config/nds32/isr-library/vec_vid29.S
! df4a02b70ceb2c85762d1c1c8591680f  libgcc/config/nds32/isr-library/vec_vid29_4b.S
! 30462d9830167e371c74e3c423e2cff7  libgcc/config/nds32/isr-library/vec_vid30.S
! fa503f7676c0db55718af5de8f921683  libgcc/config/nds32/isr-library/vec_vid30_4b.S
! 8e7ed1080d9f61bd45429e9a30231b5e  libgcc/config/nds32/isr-library/vec_vid31.S
! 59efcc733d58f337fb223d9714bfbc36  libgcc/config/nds32/isr-library/vec_vid31_4b.S
! 193d86ec9848754c586a15d0d5f6451d  libgcc/config/nds32/isr-library/vec_vid32.S
! 1325766ce0319fca08277b22ce9d8b38  libgcc/config/nds32/isr-library/vec_vid32_4b.S
! 1bdb5d44585f296410795e071098c1c7  libgcc/config/nds32/isr-library/vec_vid33.S
! bf05b587a63999c06851c2a01858792f  libgcc/config/nds32/isr-library/vec_vid33_4b.S
! 8df5d98bf0c1040fbd81c6d1a08502e8  libgcc/config/nds32/isr-library/vec_vid34.S
! b82acb0133c5feb07c006aee9680b38f  libgcc/config/nds32/isr-library/vec_vid34_4b.S
! 9036f5b48f266d262cc46b66d91e45b8  libgcc/config/nds32/isr-library/vec_vid35.S
! 722d46b335885e161c01e9a21f093072  libgcc/config/nds32/isr-library/vec_vid35_4b.S
! 8f9be85e08bed361410a64b9af77506c  libgcc/config/nds32/isr-library/vec_vid36.S
! 8c74143790f23f18ed3e3344b0e1d95f  libgcc/config/nds32/isr-library/vec_vid36_4b.S
! c43335906b1599c363afb79e9679f1e6  libgcc/config/nds32/isr-library/vec_vid37.S
! 1bda66988cf18c35a0f01e4a51840d0a  libgcc/config/nds32/isr-library/vec_vid37_4b.S
! 8b8668027d7fee1d75141f34786015b2  libgcc/config/nds32/isr-library/vec_vid38.S
! 123ec712b0476f4486bb4a8c8eefb2b6  libgcc/config/nds32/isr-library/vec_vid38_4b.S
! 3e6e89db6588285d094209b30da87d2e  libgcc/config/nds32/isr-library/vec_vid39.S
! b95bdf4b7442b33f8d71dc3102b04b87  libgcc/config/nds32/isr-library/vec_vid39_4b.S
! 87af929b2149075bc20ce889dd21088e  libgcc/config/nds32/isr-library/vec_vid40.S
! 0bfd4a1680c1a8b27d261d52d3630254  libgcc/config/nds32/isr-library/vec_vid40_4b.S
! 221807a1521991e28e5214daad08d41b  libgcc/config/nds32/isr-library/vec_vid41.S
! 2f439b350e8ea9c7a25a3a111a2f304d  libgcc/config/nds32/isr-library/vec_vid41_4b.S
! 7051f7998136ad028a331681efb17d8d  libgcc/config/nds32/isr-library/vec_vid42.S
! 0b01af6d28f0ac8722b5071ed49584d4  libgcc/config/nds32/isr-library/vec_vid42_4b.S
! 21a7e6fac1cdc9f57b38ce82987873f4  libgcc/config/nds32/isr-library/vec_vid43.S
! bed770164fe20f19244694337e9ea917  libgcc/config/nds32/isr-library/vec_vid43_4b.S
! 9a98e4d6fbc648c5cc007f6ac837f7b2  libgcc/config/nds32/isr-library/vec_vid44.S
! b75df7aef8966a285918b0fddcd4063b  libgcc/config/nds32/isr-library/vec_vid44_4b.S
! 9679b32dd22e99d0795a2fcc5e90c1d1  libgcc/config/nds32/isr-library/vec_vid45.S
! a56cce952dbaeeb522128cc3370f63a1  libgcc/config/nds32/isr-library/vec_vid45_4b.S
! a56c5cfd8a7e28b2c712d9a46dd76f6b  libgcc/config/nds32/isr-library/vec_vid46.S
! b851d602b4e8ef01c0a463a430fdca95  libgcc/config/nds32/isr-library/vec_vid46_4b.S
! 93bc409a0939659bac28dee39bce2c85  libgcc/config/nds32/isr-library/vec_vid47.S
! 1f3d9250e9fc4b62afc5ce76166a9e56  libgcc/config/nds32/isr-library/vec_vid47_4b.S
! 93be33bf18c408b675f0c660ce647ff3  libgcc/config/nds32/isr-library/vec_vid48.S
! ce5f1c047426bf359d5171aeac2dbac4  libgcc/config/nds32/isr-library/vec_vid48_4b.S
! 99a5c1943350e24b02fe17e0203b660a  libgcc/config/nds32/isr-library/vec_vid49.S
! 541512fc9bf62ae46e6c13c769bf2d38  libgcc/config/nds32/isr-library/vec_vid49_4b.S
! 5fab6cb169815b7d432a1aad03c9f674  libgcc/config/nds32/isr-library/vec_vid50.S
! 0cefd1213b91b569ea4fb13c48617a8e  libgcc/config/nds32/isr-library/vec_vid50_4b.S
! 823e5599f8a464bde24156e7f45d83f1  libgcc/config/nds32/isr-library/vec_vid51.S
! fb4d12f475f285fb5d3818a19058c600  libgcc/config/nds32/isr-library/vec_vid51_4b.S
! d482740b18d6763ab736ca22f2e66641  libgcc/config/nds32/isr-library/vec_vid52.S
! 28647a6c6dea43e8eec56f24a5a5d751  libgcc/config/nds32/isr-library/vec_vid52_4b.S
! 9bd182dbaa9b166f0126e7c5cce98caa  libgcc/config/nds32/isr-library/vec_vid53.S
! 8ff52bc2f9a504c731a2409af240fc16  libgcc/config/nds32/isr-library/vec_vid53_4b.S
! 684cce9c9ddd700e3f8b59689db0a473  libgcc/config/nds32/isr-library/vec_vid54.S
! 12895f9ff943a163966cdeb1153b220d  libgcc/config/nds32/isr-library/vec_vid54_4b.S
! 27ef5f736b07796663a089b522e698b4  libgcc/config/nds32/isr-library/vec_vid55.S
! 9ad6c224e8101e3e6052f6ec6a716a0f  libgcc/config/nds32/isr-library/vec_vid55_4b.S
! 25123a9156a6ae78c7d83dea3f312119  libgcc/config/nds32/isr-library/vec_vid56.S
! 4c2ca9299c654226f730ab6d94aeb8a7  libgcc/config/nds32/isr-library/vec_vid56_4b.S
! 6fc4f570153b2f53db4d123f64354251  libgcc/config/nds32/isr-library/vec_vid57.S
! 3785e5e570a167b6d34105b7c0fdb637  libgcc/config/nds32/isr-library/vec_vid57_4b.S
! c0aeb489006ec2fd465249d120c04409  libgcc/config/nds32/isr-library/vec_vid58.S
! a199041b999c92e197e62d7796406103  libgcc/config/nds32/isr-library/vec_vid58_4b.S
! 7dc6af9f1c3affc9d09369cdb2cf3d27  libgcc/config/nds32/isr-library/vec_vid59.S
! 0cf602eb8b6b10eb15bde2053da59557  libgcc/config/nds32/isr-library/vec_vid59_4b.S
! 04cfb726a51acb24f9eb437fbde1e13a  libgcc/config/nds32/isr-library/vec_vid60.S
! 0aa68bc8a6dc05d8e286e01d5c0c8b4a  libgcc/config/nds32/isr-library/vec_vid60_4b.S
! 7c4dd27517c55baca14d5c018cfaf22c  libgcc/config/nds32/isr-library/vec_vid61.S
! 6503078946ba370c1226124c4ecbc1c2  libgcc/config/nds32/isr-library/vec_vid61_4b.S
! dc9074d5f9ba43aadfa724b800bdefda  libgcc/config/nds32/isr-library/vec_vid62.S
! 4e91e0c1958f1bba0ececb1b6916df43  libgcc/config/nds32/isr-library/vec_vid62_4b.S
! 5107bcb4af25ca2c75dc4c437b453a2f  libgcc/config/nds32/isr-library/vec_vid63.S
! 9ef186069dadc464d73d6856534f5e8f  libgcc/config/nds32/isr-library/vec_vid63_4b.S
! ed79b060f7a2e67493cab4274a799d0e  libgcc/config/nds32/isr-library/vec_vid64.S
! 5ce07b924a77a07af56accdb13425b14  libgcc/config/nds32/isr-library/vec_vid64_4b.S
! a4adf0ad1a859a50d9e06a1b1c080416  libgcc/config/nds32/isr-library/vec_vid65.S
! 9ed19fb5dae320961b9459315c0d7ada  libgcc/config/nds32/isr-library/vec_vid65_4b.S
! 6071cd1f51e02d2d6a50affc14b8a6c4  libgcc/config/nds32/isr-library/vec_vid66.S
! b8ba5a0a7a7de8ce388e35598c0f8e68  libgcc/config/nds32/isr-library/vec_vid66_4b.S
! e1f4997a553cc35e711eead8b1301a90  libgcc/config/nds32/isr-library/vec_vid67.S
! 61cf4e79005dce816856b2f7ea5bfb34  libgcc/config/nds32/isr-library/vec_vid67_4b.S
! 62a6f04030f623e56bd0c7e81ca42629  libgcc/config/nds32/isr-library/vec_vid68.S
! a0e3dd2188c4e3c991b9efe1daa12b29  libgcc/config/nds32/isr-library/vec_vid68_4b.S
! 100bd10347a9e1692234b2ea7ab60725  libgcc/config/nds32/isr-library/vec_vid69.S
! 2bd2f60cbcdc3513eb9ea54bd4c48109  libgcc/config/nds32/isr-library/vec_vid69_4b.S
! 4b64d3bea9647bed505bdfb3eded4af4  libgcc/config/nds32/isr-library/vec_vid70.S
! 34bf8e2825e0c45f24a74d416695def0  libgcc/config/nds32/isr-library/vec_vid70_4b.S
! 9192a44107d5e7ed8b555ac65c6120d3  libgcc/config/nds32/isr-library/vec_vid71.S
! f8404e6fb5d35412cac3044c36cf8511  libgcc/config/nds32/isr-library/vec_vid71_4b.S
! 78f8d9cc099cda66e458add446416ce5  libgcc/config/nds32/isr-library/vec_vid72.S
! b5520e10adc8ebefb1765ee130c5aa89  libgcc/config/nds32/isr-library/vec_vid72_4b.S
! 53d9659d9a09a06013dfb94d3b38a33d  libgcc/config/nds32/isr-library/wrh.S
! 4fc742f1ca374bc5ee51d9637da07393  libgcc/config/nds32/lib1asmsrc-mculib.S
! d1f38f822ef7969fefe20f26b3772507  libgcc/config/nds32/lib1asmsrc-newlib.S
! 94e357f737e69253f25b644c1fb14688  libgcc/config/nds32/lib2csrc-mculib/_clzdi2.c
! 00b93d00c86381a903e7171983ca5e91  libgcc/config/nds32/lib2csrc-mculib/_clzsi2.c
! ba8956e1c10f667351c5e4a99c6df9dd  libgcc/config/nds32/sfp-machine.h
! 0efae04b505538d90e81f67301c101b8  libgcc/config/nds32/t-nds32
! f8c9251f2852dddf65a0b7361fbb56de  libgcc/config/nds32/t-nds32-isr
! 3c015d3b057e562941c4ab2c6a9c94f2  libgcc/config/nds32/t-nds32-mculib
! f57972e3184e65acd5289950fb7fa3a8  libgcc/config/nds32/t-nds32-newlib
! fc6cf00843685a353d96feb3263d0f76  libgcc/config/nios2/crti.S
! ce3bd2ed6e0995f847efe282ab1f964c  libgcc/config/nios2/crtn.S
! d6787cda0b1c1e0ff06b1faa95ab38f1  libgcc/config/nios2/lib2-divmod-hi.c
! e49afe5cd0d86cc7f86b31b452c0d67d  libgcc/config/nios2/lib2-divmod.c
! 3e2d5b59bc7db14898d97f8dc150a5b1  libgcc/config/nios2/lib2-divtable.c
! f5f42b167c2a7dd0c3da42ceb2180bce  libgcc/config/nios2/lib2-mul.c
! d0a85419704cd4b3ff0bc7d5da28e8dd  libgcc/config/nios2/lib2-nios2.h
! 87f90263caaf9b4f2c198e1e036b4207  libgcc/config/nios2/linux-atomic.c
! 84a8493881eb893f62db96dad58b7834  libgcc/config/nios2/linux-unwind.h
! 1c4cae3aca5d09a90c6c10af52b47079  libgcc/config/nios2/sfp-machine.h
  598bde069aeebadde9b08f8703ab2c77  libgcc/config/nios2/t-linux
  058cf7bee1e8fb40a62590a2558c7f76  libgcc/config/nios2/t-nios2
! 414624a5fa33cc0b96c0e6a45d943f57  libgcc/config/nios2/tramp.c
  d554f3fc7ee3cecc697c448b8c5f61bb  libgcc/config/no-sfp-machine.h
  b70010a8e3a6734ae04ba484992563c5  libgcc/config/no-unwind.h
! 165585c2d7e55066603243be554f99e7  libgcc/config/nvptx/crt0.c
! b8976f2dd9f18cb249502ba793c2155d  libgcc/config/nvptx/mgomp.c
! 6bc2cab83a131e477cf374b606f1d239  libgcc/config/nvptx/nvptx-malloc.h
! 63522f5e1f92380eaa6ef2c752d6b6de  libgcc/config/nvptx/reduction.c
  dffcd9969bf41775f6581a1dd31f351f  libgcc/config/nvptx/t-nvptx
! c7cc3cf12f9adba6e11b9f036e67fb36  libgcc/config/pa/fptr.c
! b5ea7db9f2a22b5b7b8f31f6f8edd956  libgcc/config/pa/gthr-dce.h
! beadcbb36e29db4af5eb65522e70813e  libgcc/config/pa/hpux-unwind.h
! c54c3a2c39e79a12c73ddf0c5e37b6fd  libgcc/config/pa/lib2funcs.S
! 1b9fc3234805aee6086dd464fad8fbf8  libgcc/config/pa/linux-atomic.c
! a7dec62b6949025d65111d42c351ea73  libgcc/config/pa/linux-unwind.h
! d997b655dbdb8f99d36e0f0c34755d19  libgcc/config/pa/milli64.S
! dce608a3c87e08193d64cbdaa54e2233  libgcc/config/pa/pa64-hpux-lib.h
! ecb2861bf5e34f2220ef551dc49b81c5  libgcc/config/pa/quadlib.c
! 37555ac91c34eff5b83f116fb104e0bb  libgcc/config/pa/stublib.c
  8a3964d4f1eddb14d9260a0a72a23493  libgcc/config/pa/t-hpux
  73420715a92f162a61d33bbfbe7c4dee  libgcc/config/pa/t-hpux10
  3e293a3e5a4bcd16fb9846c60502af9b  libgcc/config/pa/t-linux
*************** bb36262bc27529757335f1a6c54c2c2c  libgcc
*** 59884,60004 ****
  3a7526d23d38b3c358e838a89cf3ad94  libgcc/config/pa/t-openbsd
  4c55604fec5e632606f19c2f176f1a6c  libgcc/config/pa/t-pa64
  6b7616abedce76aaa866d73b08ea3a07  libgcc/config/pa/t-slibgcc-dwarf-ver
! 0fa00b1c96e29d799c4b33d31f529a65  libgcc/config/pa/t-slibgcc-hpux
  463a4121da251ad8e53013810a31914a  libgcc/config/pa/t-slibgcc-sjlj-ver
! 964be72d0cacc353ffda1509b63add90  libgcc/config/pa/t-stublib
  9fada10ae0357777c210ca3b7108b602  libgcc/config/pdp11/t-pdp11
! 4b1ab3028011e7be9bc8ac2716c636ed  libgcc/config/riscv/atomic.c
  d61879f5ed9372bd52bba7f21bb79dbc  libgcc/config/riscv/crti.S
  0485c6e233af87295472bb7a9f2767e0  libgcc/config/riscv/crtn.S
! ab55375f33bbe64cdd1916541cee968e  libgcc/config/riscv/div.S
! 75668fe744871406e254a9fd4361352f  libgcc/config/riscv/linux-unwind.h
! 41375b9c08176d18f04abd68d2837303  libgcc/config/riscv/muldi3.S
! 50b8d54dea07c4986890cefa8ecdecec  libgcc/config/riscv/multi3.S
! ae586a5b488c0f415617a9af58495d44  libgcc/config/riscv/save-restore.S
! ba1a43b2478b56629b1750e09fcf8bb7  libgcc/config/riscv/sfp-machine.h
! a8a0224a088a6e6666df454ba555496d  libgcc/config/riscv/t-elf
  02fdd22ff5d39903f17ad235a8fe0f65  libgcc/config/riscv/t-elf32
  02fdd22ff5d39903f17ad235a8fe0f65  libgcc/config/riscv/t-elf64
  1b37fedc3afce7df2536876292dabf24  libgcc/config/riscv/t-softfp32
  e96d0afc94e59431832f4cff3a794bd8  libgcc/config/riscv/t-softfp64
! f266b8f672663fd574dc9a13301d8c53  libgcc/config/rl78/bit-count.S
! d4f39068a8c735bbb2578d7eb7ea050c  libgcc/config/rl78/cmpsi2.S
! 005c75f145f89775e02eec270bdcd35c  libgcc/config/rl78/divmodhi.S
! bb185fbb52aaf864f557d1f9f2c9e8c0  libgcc/config/rl78/divmodqi.S
! ff68d816bfb674e8e84993e7f68d73f5  libgcc/config/rl78/divmodsi.S
  63e9b57af30110b61c3221ba465e2c5b  libgcc/config/rl78/fpbit-sf.S
  9099dff71d89768f77ed3ef7908d4265  libgcc/config/rl78/fpmath-sf.S
! c442e16a891e1dfda20232f3e3a648f8  libgcc/config/rl78/lib2div.c
! 3c166e371a1252c5f2bcb1c739f57f0c  libgcc/config/rl78/lib2mul.c
! 7d3ee9e25a557e03ceac8587be6577dc  libgcc/config/rl78/lib2shift.c
! 43179e7f29cd19c46c5cbdb521bf8c27  libgcc/config/rl78/lshrsi3.S
! 02ec7530c8e8ff7ec76a5393403f5ac1  libgcc/config/rl78/mulsi3.S
! 0b308f8ee22f35a25e43a3f1d0f5dbf8  libgcc/config/rl78/rl78-divmod.h
! 278ee630647a01ffc1aa9f2276d5bcb7  libgcc/config/rl78/rl78-mul.h
! df32e5d82b4e794db7d9b3002b8420b9  libgcc/config/rl78/signbit.S
! 63c4e0ed3382722804ebdf7c98500ac9  libgcc/config/rl78/t-rl78
! 72aacbd85537160c88647f7bd9f2257e  libgcc/config/rl78/trampoline.S
  760912f22e59adbfe0317ee3df1b4849  libgcc/config/rl78/vregs.h
! 582ebf7618f16a8afd22f749dafaec98  libgcc/config/rs6000/_divkc3.c
! 35cd3c2ad3d27ebd6b44800ebd236204  libgcc/config/rs6000/_mulkc3.c
! ea4543acbe687c698a2d70a5be600c40  libgcc/config/rs6000/aix-unwind.h
  737841f917469789a5f925e6f08da1de  libgcc/config/rs6000/aixinitfini.c
! 2ff51dec4981b2579788ff4a96346f99  libgcc/config/rs6000/atexit.c
! 95c75745455d289829425fcafef3b46e  libgcc/config/rs6000/crtcxa.c
! 1e7ba717a80ec49672170e8d7f98d2b1  libgcc/config/rs6000/crtdbase.S
! 617db89963241165e1c04b5dfe27c0aa  libgcc/config/rs6000/crtresfpr.S
! 9b05698f30a826827b6e44f7df06e1b4  libgcc/config/rs6000/crtresgpr.S
! 7d120a39acd2723fcf50b8e136c6acd5  libgcc/config/rs6000/crtrestvr.S
! ae5f0849b677f9aec1c1efd4d2393967  libgcc/config/rs6000/crtresxfpr.S
! 2936682d4b6a0bf209cb88871582d83a  libgcc/config/rs6000/crtresxgpr.S
! f34434cd9dfd15d145545cb2ef40f828  libgcc/config/rs6000/crtsavevr.S
! 45dc3bf8616071c3beb5d046fa674c61  libgcc/config/rs6000/crtsavfpr.S
! 9e76d327e791926012d097ce511b8527  libgcc/config/rs6000/crtsavgpr.S
! 144cad2930e5a55fdebea508c2f83027  libgcc/config/rs6000/cxa_atexit.c
! 0f0e2f281fc0f872c598e78d4ef0e84a  libgcc/config/rs6000/cxa_finalize.c
! ff5c22ffc4cf3ed5bac7eb27bca92e46  libgcc/config/rs6000/darwin-asm.h
! fabc9e2002d212adfdd6108e5bbef07e  libgcc/config/rs6000/darwin-crt2.c
! bcff9ea3caa40d2d6fc8a3cc05cc7734  libgcc/config/rs6000/darwin-fallback.c
! d705890648b8556099f61b657262240c  libgcc/config/rs6000/darwin-fpsave.S
! 50c2a76718166ba7ec3f398a328ebc67  libgcc/config/rs6000/darwin-gpsave.S
! b6d19f8ec7cf590254ef0dbaba05760e  libgcc/config/rs6000/darwin-tramp.S
! c15911bafd756a989c9ffe27b9ca9d2d  libgcc/config/rs6000/darwin-unwind.h
! 9d46f8b1e68f378ac4032f9ad5056b5a  libgcc/config/rs6000/darwin-vecsave.S
! 165bf1ad817dd1aee3a1300247c4be5e  libgcc/config/rs6000/darwin-world.S
! 3c56874b1d495be6a4d8492de83b0fa5  libgcc/config/rs6000/e500crtres32gpr.S
! 1c94e8b00dbee9251b657132125ae2cf  libgcc/config/rs6000/e500crtres64gpr.S
! c9d567564bdffeee4a351d88807dd77a  libgcc/config/rs6000/e500crtres64gprctr.S
! 16f769728da6fe0ee8bcf096dc4aff55  libgcc/config/rs6000/e500crtrest32gpr.S
! 159575fb1f7d800107fdf1ae6e9d19b8  libgcc/config/rs6000/e500crtrest64gpr.S
! d3baface4b85377aca27e695d3337ea5  libgcc/config/rs6000/e500crtresx32gpr.S
! c923bde8697ad0469ef378226596f163  libgcc/config/rs6000/e500crtresx64gpr.S
! d1221db49c6a061e297d2b182b735ed8  libgcc/config/rs6000/e500crtsav32gpr.S
! 238c9313a4594cbfb6c25f8a92b2ce19  libgcc/config/rs6000/e500crtsav64gpr.S
! 47fa97ebd9554c8f0035f486c46f4349  libgcc/config/rs6000/e500crtsav64gprctr.S
! 950b4d4ef6f34cd2b6d4b84626928f1d  libgcc/config/rs6000/e500crtsavg32gpr.S
! e812f2b924e80287242c7d80278e5cdd  libgcc/config/rs6000/e500crtsavg64gpr.S
! de017c2b85211d64cea9581e612757de  libgcc/config/rs6000/e500crtsavg64gprctr.S
! e2e5f076a9d39274b62d08545b399c7c  libgcc/config/rs6000/eabi-ci.S
! 575eee370814aa34fd6e4ff3c419a7ab  libgcc/config/rs6000/eabi-cn.S
! 52cb2344a93791ca24498ff55afafef7  libgcc/config/rs6000/eabi.S
! a03b73b6d428e7704ecc8d52b183c557  libgcc/config/rs6000/exit.h
! faa6d739794597bae0ecd19673eef579  libgcc/config/rs6000/extendkftf2-sw.c
! 49232f9972ea7c0392412c1d33dea471  libgcc/config/rs6000/fixkfti.c
! eb005043d6f76521406af341004522ca  libgcc/config/rs6000/fixunskfti.c
! ec4a24030f02c4bb27c74984df1294c4  libgcc/config/rs6000/float128-hw.c
! 8856c0e44fd0426b725f1b00cbe3ac38  libgcc/config/rs6000/float128-ifunc.c
  e30148cb7f3ce0ea8ba55383e38c66df  libgcc/config/rs6000/float128-sed
  ae9fbb2d21d9ac45513f6d3df94f3d59  libgcc/config/rs6000/float128-sed-hw
! 6d9071b00706a6c3f3d053b44008a256  libgcc/config/rs6000/floattikf.c
! ba4a725672c3bed3753c5fb26b1109a2  libgcc/config/rs6000/floatuntikf.c
! 109a3f4fc36082a22ce03c432d813577  libgcc/config/rs6000/freebsd-unwind.h
! adc747733b839a9b0d1245cd40033cd7  libgcc/config/rs6000/gthr-aix.h
! 39a111c9e0d4a7d3fd904dd2b9b36925  libgcc/config/rs6000/ibm-ldouble-format
! 696252c604bcc1d3cc5d55bd3cdcf43b  libgcc/config/rs6000/ibm-ldouble.c
  13bc252ed5254cf124822256760c6df0  libgcc/config/rs6000/libgcc-aix-cxa.ver
! fe30eda0fd8dbe5256e63ce951b2769b  libgcc/config/rs6000/libgcc-darwin.10.4.ver
! 27400d28fd81ae779cff1797220bae53  libgcc/config/rs6000/libgcc-darwin.10.5.ver
! e301389869bb1c774bc05ee9ca9b8de7  libgcc/config/rs6000/libgcc-glibc.ver
  7aa6f4e782960be3e2b43998ef395330  libgcc/config/rs6000/libgcc-ibm-ldouble.ver
! e6c219f345f7b00f29c05717b1d06402  libgcc/config/rs6000/linux-unwind.h
! 0864ad3ee05dd7a758153a9b9b06c7d3  libgcc/config/rs6000/morestack.S
! cbc12b1723271b3fa86112f378d47e9c  libgcc/config/rs6000/on_exit.c
! f8a1637c4773e28d65ce04bcd6a155c5  libgcc/config/rs6000/ppc64-fp.c
! d5f07262fdfba23abe8eebcc679459bd  libgcc/config/rs6000/quad-float128.h
! 7560a81a090b4cee0cd5dbe5fbaf78d9  libgcc/config/rs6000/sfp-exceptions.c
! 8ec74aa9b81fc396f992f9900794bfc0  libgcc/config/rs6000/sfp-machine.h
! a9b9d96b82d427f3ff98d6e29cd30bdd  libgcc/config/rs6000/sol-ci.S
! 17dbf83b86e21f858dc18d7aaed5d66e  libgcc/config/rs6000/sol-cn.S
  8e65197842ba39fd658038728475e572  libgcc/config/rs6000/t-aix-cxa
! 3c3fc29e8ce89e9bbebf4cfbd71a6b54  libgcc/config/rs6000/t-crtstuff
  fbf232aa523ca2f4bcf139e827eba2da  libgcc/config/rs6000/t-darwin
  d7cdc73d7a8e658f872ea07474837bc2  libgcc/config/rs6000/t-darwin64
! 46fe69a2a0410b862f850e0f02b9cfe0  libgcc/config/rs6000/t-e500v1-fp
! a8a0ffa08b5571d31c438e772a671c39  libgcc/config/rs6000/t-e500v2-fp
! b9b0914220774c0a3a5958018b9adf0d  libgcc/config/rs6000/t-float128
! 6b46d6077e82665fed06030e9dbf0d0c  libgcc/config/rs6000/t-float128-hw
! 22eaa1f67c551ff2d7f211f956976425  libgcc/config/rs6000/t-freebsd
  4976aac1da0b181cf133fe8ef7243000  libgcc/config/rs6000/t-freebsd64
  565e9d6288ad496063af26b57e5fa264  libgcc/config/rs6000/t-ibm-ldouble
  39682ae630351f3ce3a63f65ec4fd0f9  libgcc/config/rs6000/t-linux
--- 63714,63843 ----
  3a7526d23d38b3c358e838a89cf3ad94  libgcc/config/pa/t-openbsd
  4c55604fec5e632606f19c2f176f1a6c  libgcc/config/pa/t-pa64
  6b7616abedce76aaa866d73b08ea3a07  libgcc/config/pa/t-slibgcc-dwarf-ver
! 6ee8b1d990c0662d8b366653bc41e963  libgcc/config/pa/t-slibgcc-hpux
  463a4121da251ad8e53013810a31914a  libgcc/config/pa/t-slibgcc-sjlj-ver
! ba8a69f0334760e3bbdd210764f62003  libgcc/config/pa/t-stublib
  9fada10ae0357777c210ca3b7108b602  libgcc/config/pdp11/t-pdp11
! 3c119784e68eba5b3dd8a30bc2abeb75  libgcc/config/riscv/atomic.c
  d61879f5ed9372bd52bba7f21bb79dbc  libgcc/config/riscv/crti.S
  0485c6e233af87295472bb7a9f2767e0  libgcc/config/riscv/crtn.S
! 4fd8a6f7c8ebbc6d32e968786a844f2e  libgcc/config/riscv/div.S
! 2670fc9a78149090041e489f8797c24b  libgcc/config/riscv/linux-unwind.h
! 9681a830855079e6387739e201d1b252  libgcc/config/riscv/muldi3.S
! fe96232c0fe04e82c2032e56d08151bd  libgcc/config/riscv/multi3.c
! 69f5b3e57796fe6eddcbaf1cb57fb582  libgcc/config/riscv/riscv-asm.h
! aef26a39e146bfb7d23245a417f06760  libgcc/config/riscv/save-restore.S
! a6efb6242797dc5d9b36b30c279e019c  libgcc/config/riscv/sfp-machine.h
! 58fd6db5bcb1ee35d04b7b38b4c78984  libgcc/config/riscv/t-elf
  02fdd22ff5d39903f17ad235a8fe0f65  libgcc/config/riscv/t-elf32
  02fdd22ff5d39903f17ad235a8fe0f65  libgcc/config/riscv/t-elf64
  1b37fedc3afce7df2536876292dabf24  libgcc/config/riscv/t-softfp32
  e96d0afc94e59431832f4cff3a794bd8  libgcc/config/riscv/t-softfp64
! ba1a2a03a4378c169fda6c6ebe4e16ae  libgcc/config/rl78/adddi3.S
! 66686814eb106c5ce0c68ca4915f150f  libgcc/config/rl78/anddi3.S
! 0962edb3840dd55e7154b9bc98e4e1c2  libgcc/config/rl78/bit-count.S
! de502d9d83d3f521d6ee3437d079686e  libgcc/config/rl78/cmpsi2.S
! a22bfe4b1761103e4d808fefc8a6a378  libgcc/config/rl78/divmodhi.S
! 4d37ee05151929fe861d16c0fb7ca693  libgcc/config/rl78/divmodqi.S
! d013e5508241086ac48537f4d2526281  libgcc/config/rl78/divmodsi.S
  63e9b57af30110b61c3221ba465e2c5b  libgcc/config/rl78/fpbit-sf.S
  9099dff71d89768f77ed3ef7908d4265  libgcc/config/rl78/fpmath-sf.S
! 805a5b2abe54409220ebfb427e126d74  libgcc/config/rl78/lib2div.c
! 589aba8def5c7c67927d9489315a0698  libgcc/config/rl78/lib2mul.c
! 10bdb7466a9ce13ef361d8b8c9057b4e  libgcc/config/rl78/lib2shift.c
! d1381c53dd6775781fc1782875999b0b  libgcc/config/rl78/lshrsi3.S
! acf867d352bc412661b523e4cab42b39  libgcc/config/rl78/mulsi3.S
! da60c02d70b4a476541ff1c5ff10a865  libgcc/config/rl78/rl78-divmod.h
! a67fe5f56ee77ebce43803f85c983a50  libgcc/config/rl78/rl78-mul.h
! e7fb503ea85e16c18a845ecfb87082bf  libgcc/config/rl78/signbit.S
! cdf43de53be1e3ef2ee0d32f77059f29  libgcc/config/rl78/smaxdi3.S
! 42b58cc14e27e811e6ea95db11c43408  libgcc/config/rl78/smindi3.S
! 584032d1f63c6ca64f69db2d7bd69b67  libgcc/config/rl78/subdi3.S
! 9ef84edd771e3cf591acef88b281043f  libgcc/config/rl78/t-rl78
! 4172ec8989c291c04245948c961d5744  libgcc/config/rl78/trampoline.S
! 2597264d481c4f2186fcbfc415154bc2  libgcc/config/rl78/umaxdi3.S
! 51772d95a3a5d0958dc7e90f67fee8a7  libgcc/config/rl78/umindi3.S
  760912f22e59adbfe0317ee3df1b4849  libgcc/config/rl78/vregs.h
! 414ed7f3fa8a0225b38c1cefb5e5b574  libgcc/config/rs6000/_divkc3.c
! 1932d3fba717fb631f70b3dbb8cfaa28  libgcc/config/rs6000/_mulkc3.c
! 420bdbd01419b55da63219f00dfca1fc  libgcc/config/rs6000/_powikf2.c
! 6b8576741ceaeff48e1d2f7584810f81  libgcc/config/rs6000/aix-unwind.h
  737841f917469789a5f925e6f08da1de  libgcc/config/rs6000/aixinitfini.c
! 432afeaf7d4dcc04f9b1b82e49b4c2d5  libgcc/config/rs6000/atexit.c
! 9b26d0e474bb804ff5a76c4e0358c71e  libgcc/config/rs6000/crtcxa.c
! 4f4f79cf8ad02c51eae3eb9c94d20db5  libgcc/config/rs6000/crtdbase.S
! a2eccc98e4b1009f4a71b3d8f70c36be  libgcc/config/rs6000/crtresfpr.S
! 9b976aff4b91824fa0886147e782e97d  libgcc/config/rs6000/crtresgpr.S
! 861c76f37bb62a3b741cbd7997066b6f  libgcc/config/rs6000/crtrestvr.S
! c80629b133e040d7153c474d636077e1  libgcc/config/rs6000/crtresxfpr.S
! e5396ae7d3a1bb73e1a49335287989c8  libgcc/config/rs6000/crtresxgpr.S
! bd12e95ade17875c71ca0120f9c6fa0d  libgcc/config/rs6000/crtsavevr.S
! fbf1c949c6389c52456c72216928af95  libgcc/config/rs6000/crtsavfpr.S
! 56c5712caeedc666e1f48c14a4707d13  libgcc/config/rs6000/crtsavgpr.S
! 5bb3b9109c9c5f9f24b1c3b464c9f123  libgcc/config/rs6000/cxa_atexit.c
! eda1ed255c9053c49af45eeba4680d4a  libgcc/config/rs6000/cxa_finalize.c
! 3bcb6876ef96ee7fe82260b890ba7cfc  libgcc/config/rs6000/darwin-asm.h
! f584c910dc94c329b6a700440b565fd2  libgcc/config/rs6000/darwin-crt2.c
! e04fe3d20b9a5c6c4cf56cd67382a1ad  libgcc/config/rs6000/darwin-fallback.c
! 57fcf89c14b0f433ff540810b467e941  libgcc/config/rs6000/darwin-fpsave.S
! 6e2a071fe17f9ac12ea2fa2f412fbc69  libgcc/config/rs6000/darwin-gpsave.S
! 6eb18581e71673540bbfcb96372ee6fb  libgcc/config/rs6000/darwin-tramp.S
! 9d1aadd59f952cd852c0f483affc8f89  libgcc/config/rs6000/darwin-unwind.h
! 0a63e8624e12851e29c9935e23fc3f49  libgcc/config/rs6000/darwin-vecsave.S
! ae33e115f78bec8c83666519f341bb32  libgcc/config/rs6000/darwin-world.S
! 553b5b3861d8220121a4c020091396a8  libgcc/config/rs6000/e500crtres32gpr.S
! 9be7cb0a472ef2e70a76844966c79f20  libgcc/config/rs6000/e500crtres64gpr.S
! 5c4e4db65f8b852d20c15d504cbe1451  libgcc/config/rs6000/e500crtres64gprctr.S
! ab78c8f4de7d3598df297d367e217a15  libgcc/config/rs6000/e500crtrest32gpr.S
! 9a1617573abae2421f0939fc3bfaf3f7  libgcc/config/rs6000/e500crtrest64gpr.S
! 6759a71b7287fe3bc0002db4285ac57e  libgcc/config/rs6000/e500crtresx32gpr.S
! 95e25e7ddb663af44eeb5a2998c7c4c7  libgcc/config/rs6000/e500crtresx64gpr.S
! 4176ee21b09584971fb4cc437ceecd05  libgcc/config/rs6000/e500crtsav32gpr.S
! 88528744c821f2f28d82aa65c9f7122b  libgcc/config/rs6000/e500crtsav64gpr.S
! aab7a347a7a9f28d9a099cb36c438b17  libgcc/config/rs6000/e500crtsav64gprctr.S
! 59bc60bcedee3b048624f60d9da4f382  libgcc/config/rs6000/e500crtsavg32gpr.S
! 4cc58ce0edbeece50a4673c902aba97f  libgcc/config/rs6000/e500crtsavg64gpr.S
! 5db711ad82579ee06ba087702a9c96dc  libgcc/config/rs6000/e500crtsavg64gprctr.S
! bbd8ac9550064bdabcf21ba807249af2  libgcc/config/rs6000/eabi-ci.S
! 8b73390791d88f1a11d878d7fe7f917e  libgcc/config/rs6000/eabi-cn.S
! a4a0f9902d6dff9f62cc78b56b96b125  libgcc/config/rs6000/eabi.S
! 76343c3902db1d24b8572177cbe2343f  libgcc/config/rs6000/exit.h
! 25b73cb850d18bda70d49aa3c3867469  libgcc/config/rs6000/extendkftf2-sw.c
! 6a7cbe1b33f0ce61560eeccb71cc98a1  libgcc/config/rs6000/fixkfti.c
! e8bcbe5ae425431b9b4c91b5702634bb  libgcc/config/rs6000/fixunskfti.c
! 292bf5f0f014b7375f18a3318ebf0d17  libgcc/config/rs6000/float128-hw.c
! f9d452dc2c6812f02839085eb0b73008  libgcc/config/rs6000/float128-ifunc.c
  e30148cb7f3ce0ea8ba55383e38c66df  libgcc/config/rs6000/float128-sed
  ae9fbb2d21d9ac45513f6d3df94f3d59  libgcc/config/rs6000/float128-sed-hw
! 649c31f83ffa15a1f25f5e12d275c12a  libgcc/config/rs6000/floattikf.c
! 3bad46a9dbd3d3e28724eba6d8d85a81  libgcc/config/rs6000/floatuntikf.c
! 3f4b340c2b64da925f569efcd52d844e  libgcc/config/rs6000/freebsd-unwind.h
! 00ea22c43d81649ca76818df37b064c1  libgcc/config/rs6000/gthr-aix.h
! 5241c4bd942d0f3949d3c0d0ac09a5ef  libgcc/config/rs6000/ibm-ldouble-format
! 7efb022855961374216f239c23201df1  libgcc/config/rs6000/ibm-ldouble.c
  13bc252ed5254cf124822256760c6df0  libgcc/config/rs6000/libgcc-aix-cxa.ver
! 9247cd390e546bdcb9750bc20c28f9b9  libgcc/config/rs6000/libgcc-darwin.10.4.ver
! 43f23312c89e19f57d111b9d14a851fb  libgcc/config/rs6000/libgcc-darwin.10.5.ver
! 1f8aea735f32620b770d12eef97dae38  libgcc/config/rs6000/libgcc-glibc.ver
  7aa6f4e782960be3e2b43998ef395330  libgcc/config/rs6000/libgcc-ibm-ldouble.ver
! 3dfa46fa6d93ce6309299cda82dbd547  libgcc/config/rs6000/linux-unwind.h
! 4f997bf8da06591fdee344a07420bd3f  libgcc/config/rs6000/morestack.S
! 203308697ec677f5f2fc53382d9dc255  libgcc/config/rs6000/on_exit.c
! 166039789f9bedc93278d406e66d99e9  libgcc/config/rs6000/ppc64-fp.c
! 5e8bfbf88aa148bd027c4dc41ac60233  libgcc/config/rs6000/quad-float128.h
! 6597b1931038134b3631768db0880085  libgcc/config/rs6000/sfp-exceptions.c
! 41c3896f925900fa6b81c0215a60075f  libgcc/config/rs6000/sfp-machine.h
! 54ce4103a5827089dc66d908d2da8751  libgcc/config/rs6000/sol-ci.S
! 6dcccb0e93492b49bd7e2a1bfc2175c2  libgcc/config/rs6000/sol-cn.S
  8e65197842ba39fd658038728475e572  libgcc/config/rs6000/t-aix-cxa
! 0d6637a7e112c021e7ce371918c7659c  libgcc/config/rs6000/t-crtstuff
  fbf232aa523ca2f4bcf139e827eba2da  libgcc/config/rs6000/t-darwin
  d7cdc73d7a8e658f872ea07474837bc2  libgcc/config/rs6000/t-darwin64
! 6bcbbeccaa021da0a7d1bdbd456a3435  libgcc/config/rs6000/t-e500v1-fp
! ef7d3fefd129fa59acb1b31acbb29702  libgcc/config/rs6000/t-e500v2-fp
! 3035bf9dbe99e87f96833c46a1f935e9  libgcc/config/rs6000/t-float128
! f7adc85f14760138418048967dbb44ce  libgcc/config/rs6000/t-float128-hw
! 76e02de6e319201f0114687544d213b2  libgcc/config/rs6000/t-freebsd
  4976aac1da0b181cf133fe8ef7243000  libgcc/config/rs6000/t-freebsd64
  565e9d6288ad496063af26b57e5fa264  libgcc/config/rs6000/t-ibm-ldouble
  39682ae630351f3ce3a63f65ec4fd0f9  libgcc/config/rs6000/t-linux
*************** ad6ae6684d4dec9ddd78efad67d1af4b  libgcc
*** 60007,60084 ****
  d7a240410399b38f142973a475855f0b  libgcc/config/rs6000/t-ppc64-fp
  bd7ceb31787a37d9cb144c41d41acfb3  libgcc/config/rs6000/t-ppccomm
  89dc5367808582c503f03a34193e467b  libgcc/config/rs6000/t-savresfgpr
! dc048ea455a63b87ffd489881caa3594  libgcc/config/rs6000/t-slibgcc-aix
  1d9dab8390b84ff0de504beefb72ce61  libgcc/config/rs6000/t-stack-rs6000
! bcf6568d09b70154538dcd845428a391  libgcc/config/rs6000/tramp.S
! 4ceef7182553d0cc0f540c54fc50b52c  libgcc/config/rs6000/trunctfkf2-sw.c
! 5b075daddf325a60ddc14d9f344521d9  libgcc/config/rx/rx-abi-functions.c
! aff4646f8d2d53c65ff5c7004a2cce0d  libgcc/config/rx/rx-abi.h
  da7bc70013c60be91cf9f085fed52f1a  libgcc/config/rx/rx-lib.h
! 9bf1e8cc49481a5618ab0214395ac060  libgcc/config/rx/t-rx
! 4ab990cf5ce724b9b74758959870ebd3  libgcc/config/s390/32/_fixdfdi.c
! 9e18b0da9df9319bc36d6c475129ae5c  libgcc/config/s390/32/_fixsfdi.c
! 24a7bf37e7306e421566bb7f9bc06b8c  libgcc/config/s390/32/_fixtfdi.c
! 172bbf2ba4dffc8a58ac9a9e72ce66fb  libgcc/config/s390/32/_fixunsdfdi.c
! d37a3a15c453b8aba54e1bb3188bac16  libgcc/config/s390/32/_fixunssfdi.c
! 6c96bde8c92bc72976c7c42b179276f7  libgcc/config/s390/32/_fixunstfdi.c
  6101649604e2b3fdd6179e1aa53066bf  libgcc/config/s390/32/t-floattodi
! 163cec25fa3d4d5a66c50307a5fdf1c0  libgcc/config/s390/gthr-tpf.h
! b6cfabfd13b42d0d02dbe1688dd64910  libgcc/config/s390/libgcc-glibc.ver
! 36bc96c4d19bcb9726664b9de27d0467  libgcc/config/s390/linux-unwind.h
! 1f245ba58511024aec01d5f474b5ae4c  libgcc/config/s390/morestack.S
  c150e28c734710584eba8e77d2ff5105  libgcc/config/s390/t-crtstuff
  35a77f8c50ecf16802e00e647ad94026  libgcc/config/s390/t-linux
  26d353eea9229af01124cc46b2e0cebd  libgcc/config/s390/t-stack-s390
! 724ea616d268118fd234a23f9568a959  libgcc/config/s390/tpf-unwind.h
! 283dcd01e0f4fdcd0c98d3aeb13ab2ea  libgcc/config/score/crti.S
! 288c83ce707a1983a22eb03bdf32d00f  libgcc/config/score/crtn.S
  5d570ff5cd40fc6fba8876bdebd59a6b  libgcc/config/score/sfp-machine.h
! 84e2653a3a026b22715977a2abfada41  libgcc/config/sh/crt.h
! ac8aca297a8b9d3055da7409b502ee67  libgcc/config/sh/crt1.S
! 64f665903692af7a1dfbe2e084438115  libgcc/config/sh/crti.S
! 156473c0e54300b453068fa67fae60a6  libgcc/config/sh/crtn.S
! 9e5caf128720c8010c5c70435cadb311  libgcc/config/sh/lib1funcs-4-300.S
! 9810456b28ae86e88d53d6b296ee11d5  libgcc/config/sh/lib1funcs-Os-4-200.S
! f7a2bd2e8a4e6e8687fe6eef071b2a70  libgcc/config/sh/lib1funcs.S
! 0ac6ead401d959117c8b991f4af31275  libgcc/config/sh/lib1funcs.h
  68ddef94ef228a2e500c6f84ca5c5f73  libgcc/config/sh/libgcc-excl.ver
! 9504a2bcb95cb16bc633fb2d27d8abcb  libgcc/config/sh/libgcc-glibc.ver
! 2da97d18a2353f9e4f4808a2a333afad  libgcc/config/sh/linux-atomic.c
! 779193b2f9e23cbc60f59c431b992e27  libgcc/config/sh/linux-unwind.h
  d915cb58faa1ad2108733b662853057e  libgcc/config/sh/t-linux
  be1b06de574a22c34d2cf93d2d68a4f1  libgcc/config/sh/t-netbsd
! af4d0171177804d191bde785efb951a4  libgcc/config/sh/t-sh
  00d4a30e4ed4a68cd6ec53feb398914b  libgcc/config/sh/t-superh
! 5c4258746f1e76995512d61f11aaade9  libgcc/config/sol2/crtp.c
! cfd3f0c9c25c11eb9056d6cf0e56abf4  libgcc/config/sol2/crtpg.c
  5e87cfc189f02028b142950527a73c54  libgcc/config/sol2/gmon.c
! 51302367996e01675d4265b56c45fc28  libgcc/config/sol2/t-sol2
! 0c5f87ef5fd91cc4f20c3302f2d624f3  libgcc/config/sparc/crtfastmath.c
! ca3957a368429a42052c38887a2a02f7  libgcc/config/sparc/crti.S
! 58dd93c4e8f6ac83b3e22362954b568d  libgcc/config/sparc/crtn.S
  b2a26791cd6002e4af29a7fa32510b3b  libgcc/config/sparc/lb1spc.S
! f69bb006a2bb6a22e48934571e240e5f  libgcc/config/sparc/libgcc-glibc.ver
! 39b96b430755a91ebdf6d84af87d9f60  libgcc/config/sparc/linux-unwind.h
! 962d110cccec208ebc7429a16d2df136  libgcc/config/sparc/sol2-c1.S
! a2409ae52bb4006720880c663b67fe3d  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/config/sparc/t-sol2
! 160fd2416ebf26f88631796d1542c01f  libgcc/config/spu/cache.S
! 3adc4f2fb8d517d69bf5cc32fce5d413  libgcc/config/spu/cachemgr.c
! 3ea711931a300220be849b21b5323847  libgcc/config/spu/divmodti4.c
! e69b7245dd4f7541f84233963afd6376  libgcc/config/spu/divv2df3.c
! 2662445ad01687c5245c726b83806935  libgcc/config/spu/float_disf.c
! dedb6450a944301eabc074fec0fc1e18  libgcc/config/spu/float_unsdidf.c
! c19d317586be8c8a0ca91a8f457081df  libgcc/config/spu/float_unsdisf.c
! 955e7628d86253dedfef4d42a0554883  libgcc/config/spu/float_unssidf.c
! ac661dc1bdb73d9106ee3b704d53a403  libgcc/config/spu/mfc_multi_tag_release.c
! 79d1b9197c17a2a963574be814ec098b  libgcc/config/spu/mfc_multi_tag_reserve.c
! 04dfe5c2f430f755ec0f1192d56bcc64  libgcc/config/spu/mfc_tag_release.c
! b9bc47ffb800ff45d8de805a0f65dab6  libgcc/config/spu/mfc_tag_reserve.c
! 4f0b8967727b25a9d44b9e9254b9addf  libgcc/config/spu/mfc_tag_table.c
! 244ee4e74b8acd764292b0bdaf39e528  libgcc/config/spu/multi3.c
  72dba142581294b021734ccff6ef989e  libgcc/config/spu/t-elf
  68562e9ac6ce0883779dcc3aa21d758e  libgcc/config/stormy16/ashlsi3.c
  47744edc253a5317caf4e23e6be95c25  libgcc/config/stormy16/ashrsi3.c
--- 63846,63923 ----
  d7a240410399b38f142973a475855f0b  libgcc/config/rs6000/t-ppc64-fp
  bd7ceb31787a37d9cb144c41d41acfb3  libgcc/config/rs6000/t-ppccomm
  89dc5367808582c503f03a34193e467b  libgcc/config/rs6000/t-savresfgpr
! 038311739d1293b4e9e85cf8ca415560  libgcc/config/rs6000/t-slibgcc-aix
  1d9dab8390b84ff0de504beefb72ce61  libgcc/config/rs6000/t-stack-rs6000
! 1b324c64e40d67a2d2c990e85afb601e  libgcc/config/rs6000/tramp.S
! a4570b4475a4199f2b0d8d625e9e69fd  libgcc/config/rs6000/trunctfkf2-sw.c
! db5b4e441938a51740525eb1d6a925a6  libgcc/config/rx/rx-abi-functions.c
! aa7f23ff3dfe2b503f59b6d7869bab5c  libgcc/config/rx/rx-abi.h
  da7bc70013c60be91cf9f085fed52f1a  libgcc/config/rx/rx-lib.h
! e36455c24fb46bc8960e4f8635a7f59e  libgcc/config/rx/t-rx
! 5cfe861da5d392dab8ab3fd4d4800565  libgcc/config/s390/32/_fixdfdi.c
! e128a661ed05e6eb5397fc645c891080  libgcc/config/s390/32/_fixsfdi.c
! 311fe377979e866de85a87ec16bc89f0  libgcc/config/s390/32/_fixtfdi.c
! cc02172f44ca161ae0bfe2312383e237  libgcc/config/s390/32/_fixunsdfdi.c
! d75960c0dd1eaa21b9903536bf7a6deb  libgcc/config/s390/32/_fixunssfdi.c
! 99980ffa8d71f7ebac44bbdcc3f7e671  libgcc/config/s390/32/_fixunstfdi.c
  6101649604e2b3fdd6179e1aa53066bf  libgcc/config/s390/32/t-floattodi
! 2733bef9f2a98d2862d2170cbd435ea0  libgcc/config/s390/gthr-tpf.h
! 6183892c1c4ee2a319c0d036633b8357  libgcc/config/s390/libgcc-glibc.ver
! 730139ea1bfc70127b32f38d11491352  libgcc/config/s390/linux-unwind.h
! 1e4c8583ec64b6ac334a35214dbad235  libgcc/config/s390/morestack.S
  c150e28c734710584eba8e77d2ff5105  libgcc/config/s390/t-crtstuff
  35a77f8c50ecf16802e00e647ad94026  libgcc/config/s390/t-linux
  26d353eea9229af01124cc46b2e0cebd  libgcc/config/s390/t-stack-s390
! e2b1457cc262e88e12ed4897a5beaa40  libgcc/config/s390/tpf-unwind.h
! e58e970f44b6d430a84ddba3bfd9b2f1  libgcc/config/score/crti.S
! a203d4b5f611bff05f8262fe41f8ada2  libgcc/config/score/crtn.S
  5d570ff5cd40fc6fba8876bdebd59a6b  libgcc/config/score/sfp-machine.h
! 7f8796c749788d45480a4d29b13874d6  libgcc/config/sh/crt.h
! 8fc142022e5f32b1cf95e63053ee43ea  libgcc/config/sh/crt1.S
! ae0e4468127dc42ecc58d4d030ae679a  libgcc/config/sh/crti.S
! 59c35ca40dc6a1adfa94447fa95defbc  libgcc/config/sh/crtn.S
! 18f757b89df9115b3a2f45741aa0abc2  libgcc/config/sh/lib1funcs-4-300.S
! e941e2137711301b700892c42754a81e  libgcc/config/sh/lib1funcs-Os-4-200.S
! e7cc1bd342d2e85172612922a80b0971  libgcc/config/sh/lib1funcs.S
! edeecdb1bdfc9dfa5adfa24c51bdfa26  libgcc/config/sh/lib1funcs.h
  68ddef94ef228a2e500c6f84ca5c5f73  libgcc/config/sh/libgcc-excl.ver
! 477942ceb785127e4bcf440923c76ee6  libgcc/config/sh/libgcc-glibc.ver
! 3922c1c74fa197356476716631c16e87  libgcc/config/sh/linux-atomic.c
! 2f8dae8bf1e7414e13f9a5616abdf456  libgcc/config/sh/linux-unwind.h
  d915cb58faa1ad2108733b662853057e  libgcc/config/sh/t-linux
  be1b06de574a22c34d2cf93d2d68a4f1  libgcc/config/sh/t-netbsd
! cb9f766b426cfd09a06ce62babc5ae7b  libgcc/config/sh/t-sh
  00d4a30e4ed4a68cd6ec53feb398914b  libgcc/config/sh/t-superh
! 4f77db0e422a4ce26385a012aae79242  libgcc/config/sol2/crtp.c
! ee5966bef403115b97698f03659182aa  libgcc/config/sol2/crtpg.c
  5e87cfc189f02028b142950527a73c54  libgcc/config/sol2/gmon.c
! 83970080932d044caaa5d3560ee7536b  libgcc/config/sol2/t-sol2
! 79d4ab9b4c663ffced404192798e2f60  libgcc/config/sparc/crtfastmath.c
! 8cc5df2c8b74aa52949ec2b21f820133  libgcc/config/sparc/crti.S
! 1b8baea312daee32353b97958e89bae6  libgcc/config/sparc/crtn.S
  b2a26791cd6002e4af29a7fa32510b3b  libgcc/config/sparc/lb1spc.S
! 99ac103367b1f81920f3784432909d7c  libgcc/config/sparc/libgcc-glibc.ver
! bdb71596836f33be8e005b784593481a  libgcc/config/sparc/linux-unwind.h
! 6b41e3562064a35ce69a3612ad595603  libgcc/config/sparc/sol2-c1.S
! 124fbbf065286cce49a8d79761e54b8e  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/config/sparc/t-sol2
! cf6ad0f0d9c16cba3bbc3fa865876782  libgcc/config/spu/cache.S
! 39ef18a2f17d82d3c795d65a46729c2c  libgcc/config/spu/cachemgr.c
! 2e9bb71d9adea0cf089401263b15a3e7  libgcc/config/spu/divmodti4.c
! 207e9290910c02b07e0f86c6c7c2a268  libgcc/config/spu/divv2df3.c
! 23ba0e716d1d3df143345ca68659833b  libgcc/config/spu/float_disf.c
! 4f1ac0a46d84d197198aee3ad0705997  libgcc/config/spu/float_unsdidf.c
! 2a7357939b0dc8f6bcbb4dec1191cf6f  libgcc/config/spu/float_unsdisf.c
! 30e65bd7618b7364c71b4e6d56692679  libgcc/config/spu/float_unssidf.c
! c9ebc571fd4dd76d74a29dde7e351347  libgcc/config/spu/mfc_multi_tag_release.c
! d12d97e38745976f5787050a02db469b  libgcc/config/spu/mfc_multi_tag_reserve.c
! 21079eb8320e10029f7c22c0c40616c1  libgcc/config/spu/mfc_tag_release.c
! ff82e07b561b3555230847fff810a827  libgcc/config/spu/mfc_tag_reserve.c
! bbb8338d222bcefc3e88e099716b7c1e  libgcc/config/spu/mfc_tag_table.c
! 51235987f04aeda0c0d933832ea96cb5  libgcc/config/spu/multi3.c
  72dba142581294b021734ccff6ef989e  libgcc/config/spu/t-elf
  68562e9ac6ce0883779dcc3aa21d758e  libgcc/config/stormy16/ashlsi3.c
  47744edc253a5317caf4e23e6be95c25  libgcc/config/stormy16/ashrsi3.c
*************** b9bc47ffb800ff45d8de805a0f65dab6  libgcc
*** 60088,60099 ****
  6cb0675d48c7276d43aa201bcc2fd60c  libgcc/config/stormy16/ctzhi2.c
  5bc65cdd345cb629c202f3e96a0410dd  libgcc/config/stormy16/divsi3.c
  3e736ac64edb45dddbedbcc751674354  libgcc/config/stormy16/ffshi2.c
! cb6958d3dee812e339d36ead381def99  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
! 5490b4d6bfe49a180fe4c0853c4d269f  libgcc/config/stormy16/t-stormy16
  ada9a39786da3b2e999f7440a17a1ed7  libgcc/config/stormy16/ucmpsi2.c
  0db895a315f3ea78e45253f9c2c8e7f8  libgcc/config/stormy16/udivmodsi4.c
  6dca6fc4737c716575c264f3934bb6d9  libgcc/config/stormy16/udivsi3.c
--- 63927,63938 ----
  6cb0675d48c7276d43aa201bcc2fd60c  libgcc/config/stormy16/ctzhi2.c
  5bc65cdd345cb629c202f3e96a0410dd  libgcc/config/stormy16/divsi3.c
  3e736ac64edb45dddbedbcc751674354  libgcc/config/stormy16/ffshi2.c
! 27e732a59b1e3f71d7c838a055067c19  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
! 5e8b015474b5e8e84a839a0aa80cdc82  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
*** 60108,60132 ****
  3f230948d2b7453224d6a6dc08d40674  libgcc/config/t-fpbit
  3041aeb5427a9c4af20f03d4d32bbe7c  libgcc/config/t-freebsd-thread
  0b243f3a28ce47802ce08f1b67a63b78  libgcc/config/t-gnu-prefix
! 5e3992770dd794a7cc9729567b4fba48  libgcc/config/t-hardfp
! c06b30aec8cdde8c8037ac323e2869da  libgcc/config/t-hardfp-sfdf
  5b1981686da4ef8b1b62a20f10b3e715  libgcc/config/t-libgcc-pic
  5c40347f0b1274c8b5759d0ed9d1ccf8  libgcc/config/t-libunwind
! fa51fb9e37e8a9d1342f762dc8fa337a  libgcc/config/t-libunwind-elf
  397d06701a9c354f5606477c578c9efb  libgcc/config/t-linux
  eb3161bf886026cdcf8a78cea885fdd2  libgcc/config/t-openbsd-thread
  474d97884b393e08b0ce416dd09493bc  libgcc/config/t-rtems
! 5666fbef1b7236f1107a4416c598b337  libgcc/config/t-slibgcc
  4b78cd38aff781bc4f8087e2813bcccf  libgcc/config/t-slibgcc-darwin
  57f27c60e5d8c572d2645821ec5935e0  libgcc/config/t-slibgcc-elf-ver
  57e4154cb283fd7d9f323f5d85d534d9  libgcc/config/t-slibgcc-gld
  226b6f10bc32786901a79b070ed13468  libgcc/config/t-slibgcc-gld-nover
  429659ae1ff2531e3ba2fd0c676a320d  libgcc/config/t-slibgcc-hpux
! ec2bbda46ea5dbfeca9042a4d7560137  libgcc/config/t-slibgcc-libgcc
  b5d3fe85dff400a82befa6b901b438ec  libgcc/config/t-slibgcc-nolc-override
  7324b7b2d5416a7ab9bd659184c79194  libgcc/config/t-slibgcc-sld
  39082f76e7ff28af867afdb6b93b1891  libgcc/config/t-slibgcc-vms
! 2a949ae4f4a9762ab35adf1e9fb4ec70  libgcc/config/t-softfp
  1ec9425eada0171d381f5f9b47b613a9  libgcc/config/t-softfp-compat
  72f41afb67b3c3c67809819763244452  libgcc/config/t-softfp-excl
  14ecf481060b3893ba43c6e09ff40eab  libgcc/config/t-softfp-sfdf
--- 63947,63972 ----
  3f230948d2b7453224d6a6dc08d40674  libgcc/config/t-fpbit
  3041aeb5427a9c4af20f03d4d32bbe7c  libgcc/config/t-freebsd-thread
  0b243f3a28ce47802ce08f1b67a63b78  libgcc/config/t-gnu-prefix
! 9ba14f43e24b1d0b88050e30d09b37cf  libgcc/config/t-hardfp
! 99dd310cc5d5bf3745329eb741f436c9  libgcc/config/t-hardfp-sfdf
  5b1981686da4ef8b1b62a20f10b3e715  libgcc/config/t-libgcc-pic
  5c40347f0b1274c8b5759d0ed9d1ccf8  libgcc/config/t-libunwind
! ebfd7e56dbee16f60e9b676fa9ce04ab  libgcc/config/t-libunwind-elf
  397d06701a9c354f5606477c578c9efb  libgcc/config/t-linux
  eb3161bf886026cdcf8a78cea885fdd2  libgcc/config/t-openbsd-thread
  474d97884b393e08b0ce416dd09493bc  libgcc/config/t-rtems
! cddb76a1bef0c835b1c9a1aa141371a1  libgcc/config/t-slibgcc
  4b78cd38aff781bc4f8087e2813bcccf  libgcc/config/t-slibgcc-darwin
  57f27c60e5d8c572d2645821ec5935e0  libgcc/config/t-slibgcc-elf-ver
+ 12bb3327bbc9eaca9b53f30d7a99bccf  libgcc/config/t-slibgcc-fuchsia
  57e4154cb283fd7d9f323f5d85d534d9  libgcc/config/t-slibgcc-gld
  226b6f10bc32786901a79b070ed13468  libgcc/config/t-slibgcc-gld-nover
  429659ae1ff2531e3ba2fd0c676a320d  libgcc/config/t-slibgcc-hpux
! e1088b98f69c16665539f29aeff7b19b  libgcc/config/t-slibgcc-libgcc
  b5d3fe85dff400a82befa6b901b438ec  libgcc/config/t-slibgcc-nolc-override
  7324b7b2d5416a7ab9bd659184c79194  libgcc/config/t-slibgcc-sld
  39082f76e7ff28af867afdb6b93b1891  libgcc/config/t-slibgcc-vms
! 32df2e5850d7e6958f8121524b2840c9  libgcc/config/t-softfp
  1ec9425eada0171d381f5f9b47b613a9  libgcc/config/t-softfp-compat
  72f41afb67b3c3c67809819763244452  libgcc/config/t-softfp-excl
  14ecf481060b3893ba43c6e09ff40eab  libgcc/config/t-softfp-sfdf
*************** aa5fd95cba7a4d8329be007695e43d15  libgcc
*** 60134,60239 ****
  981f25965afcab131261c8bfc6c90e2f  libgcc/config/t-softfp-tf
  94681cc09c7ff0bb9a14356eff90be51  libgcc/config/t-stack
  685f35f0db36731a13637c087658e7a9  libgcc/config/t-tls
! 88cae38054102bfef2cb4e3a4b0e7758  libgcc/config/t-vxworks
  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
! a7bc2e6214ac23810f706f68b210dc73  libgcc/config/tilepro/atomic.c
! a6dcb87106739924ce50432d9c9e4ce9  libgcc/config/tilepro/atomic.h
! 52a8f0bdeb26d9c5ddfd8e361c1df4d1  libgcc/config/tilepro/linux-unwind.h
  c319c87cee2bc57b33cd850fb03731b5  libgcc/config/tilepro/sfp-machine.h
! 690758d4bb8a4655c1dc1352271be13f  libgcc/config/tilepro/softdivide.c
! 65e0211c344f497d4fe245a8ed282efc  libgcc/config/tilepro/softmpy.S
  4927dec2e58bebc9fec4d0405177eaea  libgcc/config/tilepro/t-crtstuff
  a6ca3e93e70a2a92d62823faefdc072f  libgcc/config/tilepro/t-tilepro
! 9340d9b0db795f33aae036372558aeaf  libgcc/config/unwind-dw2-fde-darwin.c
! 6c2d52d6ec2b0302e6e2c8b929b8c52b  libgcc/config/v850/lib1funcs.S
  015fdb6e6a2a23f553dc5105691f7a6a  libgcc/config/v850/t-v850
! 11a83068ee0b3fdcd01558d396204a68  libgcc/config/vax/lib1funcs.S
  c668e63cf08f878538a0db39860696dc  libgcc/config/vax/t-linux
! 357cfdd4a3174d92f12617d4c99ffc8a  libgcc/config/visium/crti.S
! e0f9a174882b02fa4833cab14579cab9  libgcc/config/visium/crtn.S
! de60c1a2e1fc629423df23c5185d2165  libgcc/config/visium/divdi3.c
! 127e2c9a6760132e68041166023e5618  libgcc/config/visium/lib2funcs.c
! 7e909029d48ccc91ef94c909a541e86a  libgcc/config/visium/memcpy.c
! dc196c9c60d2ec57dc017f99b6e8c585  libgcc/config/visium/memcpy.h
! fc7c312d2c89e290db1328b903c79f99  libgcc/config/visium/memset.c
! e8a43de35e3b3f5befb15797a6700463  libgcc/config/visium/memset.h
! 88e94c13c9a6f2e0067d9f51e26e26e3  libgcc/config/visium/moddi3.c
! 48055944468a26cc95de07c9a08dda4f  libgcc/config/visium/set_trampoline_parity.c
! 02d6099f3e8eb94cb4d22119d150cb3d  libgcc/config/visium/t-visium
! 0ead61e57ab2b17100f1a0294b8c1f93  libgcc/config/visium/udivdi3.c
! 3e30716587d10957a9b6a895e1ec220c  libgcc/config/visium/udivmoddi4.c
! 59ae81c07d61713c0cda5e486a6d9164  libgcc/config/visium/umoddi3.c
  9383115b20d4126cf07541b5d7bf6c2a  libgcc/config/vms/t-vms
! b9cd590f5c1e6238b6ab206e07305458  libgcc/config/vms/vms-ucrt0.c
! 3fa3ad22575b1686b885ddb3b7301fb7  libgcc/config/vxlib-tls.c
! 2ce85317187cb677233d85814961e347  libgcc/config/vxlib.c
! abb50614554adbd89fd57730481cf2fd  libgcc/config/xtensa/crti.S
! 80a0d063d42ac902c4ee9de56d80c91c  libgcc/config/xtensa/crtn.S
! 7a62a4c550efc9a29d72c0d5dbd1d68f  libgcc/config/xtensa/ieee754-df.S
! 00e7cf351e56f1fa8f6495e7c8afa39a  libgcc/config/xtensa/ieee754-sf.S
! 51d0d68dfa013f26914d51e64c7eea73  libgcc/config/xtensa/lib1funcs.S
! 6d331228694c1d2aae30404724c9bbfa  libgcc/config/xtensa/lib2funcs.S
  8074695f5eea7b961c59ee9608973dac  libgcc/config/xtensa/libgcc-glibc.ver
! 6f3a948e6c9c3b05d717cd065aa4062a  libgcc/config/xtensa/linux-unwind.h
  d437dc5394da39dbe1ece64723e90a76  libgcc/config/xtensa/t-elf
  4f2c91d0f57a675cc91b287ce2ad76aa  libgcc/config/xtensa/t-linux
  ce614fa17d52c2d7121d7e2d6f80b02d  libgcc/config/xtensa/t-windowed
  9acbec9b3406a3560d608714300a7edf  libgcc/config/xtensa/t-xtensa
! 52c63e24e865e7d3438d8cd7525e0929  libgcc/config/xtensa/unwind-dw2-xtensa.c
! d5a4b2ace6f8b31a12c87968726af4a1  libgcc/config/xtensa/unwind-dw2-xtensa.h
! cb28e057ef5e061bab1c7c1982c0f488  libgcc/configure
! 02f85646f1b3d27965a5ceaf5c168384  libgcc/configure.ac
! 991b872cd62bda98ff01a541d9a824d1  libgcc/crtstuff.c
! 9e127f1f1924d9f6ff6bf02146b8f5d3  libgcc/dfp-bit.c
! 8ce0088459d3236d365b9dd8e3b0b558  libgcc/dfp-bit.h
! 6827539f6392acc6bdd73e9b6c6f580f  libgcc/divmod.c
  b9a5bcda72f7b8809010f38227353353  libgcc/empty.mk
! b11d074cf350976a2b4b5e4cecc1e14d  libgcc/emutls.c
  aa52a8f7cb881c00c125ed5fd04ed4df  libgcc/enable-execute-stack-empty.c
! fd5870cd8e4843d45fa9541ca468339a  libgcc/enable-execute-stack-mprotect.c
! 74be6247bfeb270c49239747be839ee4  libgcc/find-symver.awk
! 8d5dde6f6fff27a54669072d41210c78  libgcc/fixed-bit.c
! 610bfd88b9f7655951d1fd68c54d37dd  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
! 0f01bf79ff8e25a4263924049aede378  libgcc/fp-bit.c
! 6687ff43d72721f9e798c23a0c32b2e5  libgcc/fp-bit.h
! e1d4c69af6f7a3fa018100f27e9d3a6c  libgcc/gbl-ctors.h
! 56fb0d0656c24360a21e01c7d5fbf79a  libgcc/gcov.h
  c7b70dcc1f2024624fcba54a60ffcdda  libgcc/gen-fixed.sh
! 079e8ebf18b4b8c368d9978e4c5770b8  libgcc/generic-morestack-thread.c
! 0f9477ac57d6492e9c90a0eed7416f92  libgcc/generic-morestack.c
! a9312a1ce54529746da4d3b2bca61be6  libgcc/generic-morestack.h
  971ff834e82a1a1964a019bfdac21c5c  libgcc/gstdint.h
! a32570525f8279f0d808583967306ed5  libgcc/gthr-posix.h
! f7e65caf8363def17fd55e32366e751e  libgcc/gthr-single.h
! 76d07cb565825976b394e18969785af4  libgcc/gthr.h
! a5c670285223c3603b11db17aa8c91d5  libgcc/libgcc-std.ver.in
! 8ec4a99466553d16e61c898669edc720  libgcc/libgcc2.c
! e960194e9ce4960066adb5c22b16a736  libgcc/libgcc2.h
! 31818e38d439a78412d056be79a0691c  libgcc/libgcov-driver-system.c
! 7626876b23251978d21cf91f55d6173f  libgcc/libgcov-driver.c
! 0d5c751a52c93ae4c86ba26fbd739bcc  libgcc/libgcov-interface.c
! 31035212a913292afdb1efc79b592b3d  libgcc/libgcov-merge.c
! 7ba5669c0f81ae6a47922868b01d7958  libgcc/libgcov-profiler.c
! b036c500fbb5c711a919d74f57095544  libgcc/libgcov-util.c
! 6b81681f69e61a44ca8c4b3f7a9714b9  libgcc/libgcov.h
  06287f034722081687f831dcb61e986c  libgcc/memcmp.c
  dad9e98504e8f79e6e97aa29c6b49d96  libgcc/memcpy.c
  135a2882c25ab6f90748b020a6cc2f02  libgcc/memmove.c
  eb54d3066646204ecc21ba5ecb67d572  libgcc/memset.c
! 8fa4c665d54eb4e922a1ba98f578e836  libgcc/mkheader.sh
! 8e4c552d2dfbbaa6a245f190694ab23f  libgcc/mkmap-flat.awk
! 9a4d221c1a20903f464691a567ea7570  libgcc/mkmap-symver.awk
! 655fc018947a6b3be512c9a430c53a4e  libgcc/offloadstuff.c
  0503a6ec2dc990ec5a02ea1d5ece9082  libgcc/shared-object.mk
  4320671e90e14eb5b9f91f106f923072  libgcc/siditi-object.mk
  5476b2a3295a19a0fb558d1db1aa17ae  libgcc/soft-fp/README
--- 63974,64080 ----
  981f25965afcab131261c8bfc6c90e2f  libgcc/config/t-softfp-tf
  94681cc09c7ff0bb9a14356eff90be51  libgcc/config/t-stack
  685f35f0db36731a13637c087658e7a9  libgcc/config/t-tls
! d4c5f5b0000dea28612e764025babb08  libgcc/config/t-vxworks
! fcd06837f1b6d535c7959d6207cf22bf  libgcc/config/t-vxworks7
  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
! 382f651cc22234a94b6314f4c2f8898d  libgcc/config/tilepro/atomic.c
! ade24e88ece609239f50884bdb1d2411  libgcc/config/tilepro/atomic.h
! 3783670bec5279840c324ded9253506c  libgcc/config/tilepro/linux-unwind.h
  c319c87cee2bc57b33cd850fb03731b5  libgcc/config/tilepro/sfp-machine.h
! 8ab9096e7b7184836648a9c29d43a4e1  libgcc/config/tilepro/softdivide.c
! 0a7375bcead74785a80edaec887edc6a  libgcc/config/tilepro/softmpy.S
  4927dec2e58bebc9fec4d0405177eaea  libgcc/config/tilepro/t-crtstuff
  a6ca3e93e70a2a92d62823faefdc072f  libgcc/config/tilepro/t-tilepro
! 604824bdf085957896d57e4bf9ddadb4  libgcc/config/unwind-dw2-fde-darwin.c
! 627cfd6e0758b08dc95f8e73dedc077f  libgcc/config/v850/lib1funcs.S
  015fdb6e6a2a23f553dc5105691f7a6a  libgcc/config/v850/t-v850
! d66aa1f236f83922c78e17a4bda39829  libgcc/config/vax/lib1funcs.S
  c668e63cf08f878538a0db39860696dc  libgcc/config/vax/t-linux
! bba19feb2b9f75c19cbf5a113f7bdd2c  libgcc/config/visium/crti.S
! c682bc6fe4c9dbc37ec68a0ab3ec1617  libgcc/config/visium/crtn.S
! ff41a26b6f791f1cb4cba672ea8b6787  libgcc/config/visium/divdi3.c
! afe0344d26e6170785fb8ee2f495f350  libgcc/config/visium/lib2funcs.c
! 704a5605fee61b7ae9ed34b0d7363c62  libgcc/config/visium/memcpy.c
! ba0c54b5c3edf0ce812ec1dc5dad7a91  libgcc/config/visium/memcpy.h
! 40aa611a4d468bec1dc7c2d082179ff9  libgcc/config/visium/memset.c
! a79b484ac966714464760ffdda8a2898  libgcc/config/visium/memset.h
! dbe296dc1ea4905a0946e10d4a0bdf31  libgcc/config/visium/moddi3.c
! 8ddaf52d0732dfc16e17dee43381f050  libgcc/config/visium/set_trampoline_parity.c
! 176668735357e81b7cd9e9f7b451f04c  libgcc/config/visium/t-visium
! c64e8030ced314db838260884f108f21  libgcc/config/visium/udivdi3.c
! 65ec9257cb6c9f26852e2203c2c09500  libgcc/config/visium/udivmoddi4.c
! 54c502c6339da260f8bcc8b99b4e4ab6  libgcc/config/visium/umoddi3.c
  9383115b20d4126cf07541b5d7bf6c2a  libgcc/config/vms/t-vms
! 3871f34f6d28b57a0da1465eb1b2de2d  libgcc/config/vms/vms-ucrt0.c
! e2a1c76b627817d81f8153fb98a1ba98  libgcc/config/vxlib-tls.c
! 15506cd066b3540822aa1e99b0f5dd21  libgcc/config/vxlib.c
! 4b67f7764a2ac835154b433438e53baa  libgcc/config/xtensa/crti.S
! e6a778f4be7f701964f31d50e0772220  libgcc/config/xtensa/crtn.S
! 6f2e8e5ad684ae65433d6f36c6c721b8  libgcc/config/xtensa/ieee754-df.S
! 444bf127e9fb354b793ba6432a3fafa3  libgcc/config/xtensa/ieee754-sf.S
! e57a1f70479da292ad91b9174f0cb46b  libgcc/config/xtensa/lib1funcs.S
! eb66b487b74529bb3d1d1653be19e5b2  libgcc/config/xtensa/lib2funcs.S
  8074695f5eea7b961c59ee9608973dac  libgcc/config/xtensa/libgcc-glibc.ver
! a5239c44bdcf61eee150a59625045468  libgcc/config/xtensa/linux-unwind.h
  d437dc5394da39dbe1ece64723e90a76  libgcc/config/xtensa/t-elf
  4f2c91d0f57a675cc91b287ce2ad76aa  libgcc/config/xtensa/t-linux
  ce614fa17d52c2d7121d7e2d6f80b02d  libgcc/config/xtensa/t-windowed
  9acbec9b3406a3560d608714300a7edf  libgcc/config/xtensa/t-xtensa
! a25931c5e15c90a116612efd9e86c7fe  libgcc/config/xtensa/unwind-dw2-xtensa.c
! 282ac26679fdb0148aafcf71a30c9726  libgcc/config/xtensa/unwind-dw2-xtensa.h
! 8ba25acba67697b23e8f41f5748dd55e  libgcc/configure
! 66fbac651b2769db69558cfbacd90e3c  libgcc/configure.ac
! 6f5476a42fb32437439b83b8ca0f4101  libgcc/crtstuff.c
! bb126edcc93b31510ee6f3a5606d0bdd  libgcc/dfp-bit.c
! 77c0391edfb0e29d43d37dfebf93431b  libgcc/dfp-bit.h
! 4c49ae305ee424a7bb2c49b28774fc4a  libgcc/divmod.c
  b9a5bcda72f7b8809010f38227353353  libgcc/empty.mk
! 7f8a634ba20ed8e1882cf116ba1e0afb  libgcc/emutls.c
  aa52a8f7cb881c00c125ed5fd04ed4df  libgcc/enable-execute-stack-empty.c
! 48a4ebb44971238d874cbb553f751fcc  libgcc/enable-execute-stack-mprotect.c
! cb0d5c6b0debe4db66c561800b58a999  libgcc/find-symver.awk
! 7ed089460969266dee8db145f9e76fb5  libgcc/fixed-bit.c
! d959974a2aa421b8e684dc447bee3386  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
! cd496e16eeb7a8cb610cbf62de080ab5  libgcc/fp-bit.c
! 9830f464cdd85d95d650f29c786b5223  libgcc/fp-bit.h
! 550b8a65afa78e12ee2f28c708bb89d7  libgcc/gbl-ctors.h
! cf4f6ca95fd475550e330336127627ed  libgcc/gcov.h
  c7b70dcc1f2024624fcba54a60ffcdda  libgcc/gen-fixed.sh
! c6a46e9de483cc259e652417dd77e6ad  libgcc/generic-morestack-thread.c
! a9721ce15dd1167cd6fe356bf7ff164a  libgcc/generic-morestack.c
! 45b90650e46a48f35456a9a8a8bd15a1  libgcc/generic-morestack.h
  971ff834e82a1a1964a019bfdac21c5c  libgcc/gstdint.h
! fabf00554e5a04c162071567f9fa35e9  libgcc/gthr-posix.h
! c34fc1bca57617d5afda2ad892bee870  libgcc/gthr-single.h
! 340c4e0a06944ed7d33e6419184d950d  libgcc/gthr.h
! bb45c09fada261a27cfa2aa0ef96a242  libgcc/libgcc-std.ver.in
! eb68b6e09c0d967e5a20d15d89c27c50  libgcc/libgcc2.c
! 93b0df26770aaa1a9b1fcd7472a252ef  libgcc/libgcc2.h
! 7fa064f2c609de02cff99631a222f270  libgcc/libgcov-driver-system.c
! 248cc0b3f992f51a652deb40418ec60f  libgcc/libgcov-driver.c
! fabb83864235b070848dca62149155b6  libgcc/libgcov-interface.c
! 5e389254607b64d269a6aaa23601654b  libgcc/libgcov-merge.c
! db18cdfa820929806aa886793065032e  libgcc/libgcov-profiler.c
! 484c3b9fd82500d4af8f1854d4d9ac40  libgcc/libgcov-util.c
! b6d5f60bf5f518fbdd54ff63652a3f28  libgcc/libgcov.h
  06287f034722081687f831dcb61e986c  libgcc/memcmp.c
  dad9e98504e8f79e6e97aa29c6b49d96  libgcc/memcpy.c
  135a2882c25ab6f90748b020a6cc2f02  libgcc/memmove.c
  eb54d3066646204ecc21ba5ecb67d572  libgcc/memset.c
! 88ac2cb6f8addf486a11f6bd3fd4c1a6  libgcc/mkheader.sh
! e8e758586584eea2aac3f59b97749d30  libgcc/mkmap-flat.awk
! f7e4d5568ff361e15eab3d20f826071b  libgcc/mkmap-symver.awk
! 82ac7b4e02e9ac3911cd1d4e2fa9ffdc  libgcc/offloadstuff.c
  0503a6ec2dc990ec5a02ea1d5ece9082  libgcc/shared-object.mk
  4320671e90e14eb5b9f91f106f923072  libgcc/siditi-object.mk
  5476b2a3295a19a0fb558d1db1aa17ae  libgcc/soft-fp/README
*************** c101f2be78bc3353615d482a15fe3120  libgcc
*** 60326,60354 ****
  e6544a6db4f2a112e6841a5ea1873364  libgcc/soft-fp/unordsf2.c
  dcc9a526deb86a675ebe46829139a810  libgcc/soft-fp/unordtf2.c
  8c64184cccab0ab994c69899c63f3260  libgcc/static-object.mk
! 7cf331821f9cf2e01476eb9109aade70  libgcc/sync.c
! 05036a7f07cd08c5c22b80a4d2abd32a  libgcc/udivmod.c
! 53549bbc7bc2c9e4f1b3d260eb6ba4cc  libgcc/udivmodsi4.c
! 53a7309fca53bd493addd233e35e404d  libgcc/unwind-arm-common.inc
! dad8e3c9a0a186305a0bc2271c93c2da  libgcc/unwind-c.c
! ea9f6cc84a6cdfef1a20862ad9405ae8  libgcc/unwind-compat.c
! a53bb0fac509fc9b2148574e543400c0  libgcc/unwind-compat.h
! ffab35108f48c3853211560930874440  libgcc/unwind-dw2-fde-compat.c
! b2833f087b676c248a36eeb3e85e3138  libgcc/unwind-dw2-fde-dip.c
! 1c3b29dcfdee06495852a317110d6662  libgcc/unwind-dw2-fde.c
! 0921eed37a4504009c16a2859236edd6  libgcc/unwind-dw2-fde.h
! 2c8fe15cb3047e2b62f66615e61bc2fc  libgcc/unwind-dw2.c
! 1afd467dcaa5287de5d54f97b048f00b  libgcc/unwind-dw2.h
! ec410862daa2b9e2c1c63039901154c3  libgcc/unwind-generic.h
! 04211a2580fbf67de67fa59504b3fe12  libgcc/unwind-pe.h
! def8eb8348b4ef12e5f4f6b14c9c79b8  libgcc/unwind-seh.c
! 499a346f005ebd29d87c0da28eee427e  libgcc/unwind-sjlj.c
! 5d6aac4d0dd0df454fd91778d9ac814a  libgcc/unwind.inc
! 5ee6444fc816ac22480d78f3dac105fa  libgcc/vtv_end.c
! 85a736ad90e4160d44daa22a1ee856e0  libgcc/vtv_end_preinit.c
! fc4b471f8466a3e259cd068859f264ed  libgcc/vtv_start.c
! 9f844965cec8eed0fa3ddc704bfb5262  libgcc/vtv_start_preinit.c
! 14c297b83959185f26a3222d9d15133d  libgfortran/ChangeLog
  9aca36338382e5b4b730e7779170b24d  libgfortran/ChangeLog-2002
  80d3edc880c2da0b7a2beec2e2c4f774  libgfortran/ChangeLog-2003
  9f0239429993a5e64ed793eb6c55a5c1  libgfortran/ChangeLog-2004
--- 64167,64195 ----
  e6544a6db4f2a112e6841a5ea1873364  libgcc/soft-fp/unordsf2.c
  dcc9a526deb86a675ebe46829139a810  libgcc/soft-fp/unordtf2.c
  8c64184cccab0ab994c69899c63f3260  libgcc/static-object.mk
! dbb0f63e767eb964280becb56f41e586  libgcc/sync.c
! da0d0cc84d2f729d8ac3d1ff0c3df045  libgcc/udivmod.c
! c62686d8577745018ffe216d7289fb62  libgcc/udivmodsi4.c
! f347426787a8ccf3925ffcdeeb77434f  libgcc/unwind-arm-common.inc
! 340535f8ba6990e5a7a48a10d1212fa7  libgcc/unwind-c.c
! 4a1af11e4b9cc80ae5e24b9429e2dc60  libgcc/unwind-compat.c
! 5ccf43c25299a778818744d275c2b891  libgcc/unwind-compat.h
! d2ebac74684a040d12f317eee4e01238  libgcc/unwind-dw2-fde-compat.c
! 676600e3dc48b8e11fb2d2b24cc97f7e  libgcc/unwind-dw2-fde-dip.c
! 14c1525e96c0d6f535933479bcf53e7e  libgcc/unwind-dw2-fde.c
! 76733383284b8eb64795aa64b407526b  libgcc/unwind-dw2-fde.h
! 404bdb248bee6cdd90eff289bfa483da  libgcc/unwind-dw2.c
! c00383c58b6604c79d270a1efe0e7a8d  libgcc/unwind-dw2.h
! e5420e2cefe18b0e9ebf711bf6944a26  libgcc/unwind-generic.h
! 9852651db02d9a629f7234ac2301736f  libgcc/unwind-pe.h
! 75ad1c9d31df1e0e0ccecadca5fc9dae  libgcc/unwind-seh.c
! 7a5f07ec4e509a7e559941358e7a91b1  libgcc/unwind-sjlj.c
! c06e4c4a3c2053ca645f972bdbcf6ab8  libgcc/unwind.inc
! f5e07b4d53f51bc6c745e21ee9160a2e  libgcc/vtv_end.c
! 0aa8ba2bb5350d77b57720aaa4f27d15  libgcc/vtv_end_preinit.c
! 61dd4e929b7360c913bb73da6785fc3d  libgcc/vtv_start.c
! ff8ccb48fa2495fe0bf8e6e56992bceb  libgcc/vtv_start_preinit.c
! 71c32cb91ee5e0d355af3af020d270cc  libgfortran/ChangeLog
  9aca36338382e5b4b730e7779170b24d  libgfortran/ChangeLog-2002
  80d3edc880c2da0b7a2beec2e2c4f774  libgfortran/ChangeLog-2003
  9f0239429993a5e64ed793eb6c55a5c1  libgfortran/ChangeLog-2004
*************** f565223da2dcb17328986889fbb15fa8  libgfo
*** 60364,61030 ****
  7fcae7dd71256c9d8fc486e6b5aee74c  libgfortran/ChangeLog-2014
  9e2925d753b1ba53f0dc0754d82741eb  libgfortran/ChangeLog-2015
  7571681cce824f7aa6dbe65248c60423  libgfortran/ChangeLog-2016
! 05ca3246cb7f82726428bed7c40c9425  libgfortran/Makefile.am
! 4c73129bb6f2dc3404a712b2ac88f306  libgfortran/Makefile.in
! 24cf7dc2c639881c71742804ad21f83a  libgfortran/acinclude.m4
  5a2806274e28e8c5f15d40fb2fff1f66  libgfortran/aclocal.m4
! ea0a33a5c0ae0cffffdca91c87f49241  libgfortran/c99_protos.h
! 300636297c09422e0c38c97d52407418  libgfortran/caf/libcaf.h
! 64aa3945ef06f4171359fce52cf3c149  libgfortran/caf/mpi.c
! 4d09b737a48e0d51eacd790e1f23abc6  libgfortran/caf/single.c
! 3b6bc8b8918c416c2bb2cb13fe538ac3  libgfortran/config.h.in
! 539332e692144a2b2294faa5d63b0dbd  libgfortran/config/fpu-387.h
! 67eb396c95f535ced6391995968f036c  libgfortran/config/fpu-aix.h
! 5868cacfd4c9ed84c5d0d1fc576e500a  libgfortran/config/fpu-generic.h
! ddc8a754f84f3720f8e6e61fd97a3072  libgfortran/config/fpu-glibc.h
! 0a21f9e003e23203ed2bcec2bb3ab547  libgfortran/config/fpu-sysv.h
! 6ad9f5b2ecc6948c50ca607f246f34ea  libgfortran/configure
! 17fde774fca767004246c3356516a1dd  libgfortran/configure.ac
  26d3d2f20028a910fbd80fc9c770806a  libgfortran/configure.host
! 70a9c856b02f7d8c9eb0a7a01ad50f48  libgfortran/generated/_abs_c10.F90
! f3f64044cfdfcbcd5add5f8686a3ea16  libgfortran/generated/_abs_c16.F90
! acf3c9563236cad1b303142f45d42e6f  libgfortran/generated/_abs_c4.F90
! b8d2408b5e40da700a1fd72cbeb3336b  libgfortran/generated/_abs_c8.F90
! 9406ba8464e4de872d719814cc05e367  libgfortran/generated/_abs_i16.F90
! b293c2e46903e8ef321e3924e4003762  libgfortran/generated/_abs_i4.F90
! 72ae844d632080750d2c28f2c9f285ff  libgfortran/generated/_abs_i8.F90
! cb4ce316503c2fcaa3545233af2de2df  libgfortran/generated/_abs_r10.F90
! e31efb0268b41fd8824631ea880ef5b5  libgfortran/generated/_abs_r16.F90
! 300a18c2f85170422b228645680899fd  libgfortran/generated/_abs_r4.F90
! c475d3f860267537a84f0946708204b1  libgfortran/generated/_abs_r8.F90
! c6cb041145f89d0a5d14c4eca4d41cd1  libgfortran/generated/_acos_r10.F90
! 5a376833d4ca90e4561283995e26572e  libgfortran/generated/_acos_r16.F90
! 723eb48a30b9eb439b8655a3251c8904  libgfortran/generated/_acos_r4.F90
! b5a02f04818faf1b0dc80cc4c89116d1  libgfortran/generated/_acos_r8.F90
! 1619028e191f32764e9f6a25d04f8713  libgfortran/generated/_acosh_r10.F90
! 2cf4a35947c2d1f7c6748edf0d4a82e9  libgfortran/generated/_acosh_r16.F90
! f5d38b15a65f8ed8f6e731378b91aa22  libgfortran/generated/_acosh_r4.F90
! 50d168b9f42e5b85eb60140dd6c2dc4b  libgfortran/generated/_acosh_r8.F90
! 1fc1fc6e6cfe282b882b41f129160eb3  libgfortran/generated/_aimag_c10.F90
! 2fa4adaf5564ce37d477e7235a951c5b  libgfortran/generated/_aimag_c16.F90
! 514397679b13abf215c9f82a57bef9f9  libgfortran/generated/_aimag_c4.F90
! 86001901839900f6f46818b5f57872e7  libgfortran/generated/_aimag_c8.F90
! 76cdc2b45a70a5ccf1a7ba407823d2d7  libgfortran/generated/_aint_r10.F90
! 18150e73f4a5922dd6bbfa8d063846ae  libgfortran/generated/_aint_r16.F90
! e9cbd0818366e23f0b2d9432e926713e  libgfortran/generated/_aint_r4.F90
! e679fe6b16324994b9b143a5310cf560  libgfortran/generated/_aint_r8.F90
! f1dea914832bcefef13ff40590754e1f  libgfortran/generated/_anint_r10.F90
! 63f35ed30c1bf9d9687d441b29838ef2  libgfortran/generated/_anint_r16.F90
! f21589cd3a5b1b279118e68d4edcf18e  libgfortran/generated/_anint_r4.F90
! edbb582e25ff1ccf52c767dbd6c980b9  libgfortran/generated/_anint_r8.F90
! 4e50e1cb834cb7125fb3b1de9f1210f4  libgfortran/generated/_asin_r10.F90
! 804195560251573e6263b3d81e762d71  libgfortran/generated/_asin_r16.F90
! 5e9b4cf157cc2af28f3f657e59cdca9f  libgfortran/generated/_asin_r4.F90
! de4eec005a79fba06e8734e00d8db28e  libgfortran/generated/_asin_r8.F90
! bfc04dd09cd97071e556c71c693baead  libgfortran/generated/_asinh_r10.F90
! bb04f688d069581a96ed8db261a1d0e7  libgfortran/generated/_asinh_r16.F90
! b136fd4efa94cacbff8428d1941ad6d0  libgfortran/generated/_asinh_r4.F90
! 0fcb240ec52a2063f6e1d4ab57dee287  libgfortran/generated/_asinh_r8.F90
! 5647d52af8b849a562662a606b100832  libgfortran/generated/_atan2_r10.F90
! c83784d78e034b4b7b812cf02d42b339  libgfortran/generated/_atan2_r16.F90
! c6b6c8864df1f5107a25e5fd55fcff1e  libgfortran/generated/_atan2_r4.F90
! aeba92875ffa20f2e3d6f8e9a08fa187  libgfortran/generated/_atan2_r8.F90
! 689b57dfe75c7e64eaae4f17655e7604  libgfortran/generated/_atan_r10.F90
! 8623d0f7dc579a5293f19a30c0bfc0b1  libgfortran/generated/_atan_r16.F90
! 2fa70ec986cfd12f9cc5586c6cc374b7  libgfortran/generated/_atan_r4.F90
! 4dc1abbe2d68083c63306efa67f6474a  libgfortran/generated/_atan_r8.F90
! 40bcb161e19f6b706b3f418844d36da7  libgfortran/generated/_atanh_r10.F90
! 9c07437c5d6db18e0cfdc04a1175e555  libgfortran/generated/_atanh_r16.F90
! b2c575f8015878441ee91b932905e365  libgfortran/generated/_atanh_r4.F90
! b3e13b2a9c8b86841bc08897da3c746b  libgfortran/generated/_atanh_r8.F90
! 8d6f1b537d38812bd22be707190fce08  libgfortran/generated/_conjg_c10.F90
! 27f402b6f0e5c83d7fd39ddd2c195fc5  libgfortran/generated/_conjg_c16.F90
! 6cb2fb888e66a60551d49b0938aa7d30  libgfortran/generated/_conjg_c4.F90
! 0d004f2690b94dce9686e1e1577ed148  libgfortran/generated/_conjg_c8.F90
! cf516895dc72695206b02d83d1687f99  libgfortran/generated/_cos_c10.F90
! 53541657f2be54f59d91b66eb968dd3a  libgfortran/generated/_cos_c16.F90
! 13ee3f64979297f3a04e174a4e0f34f3  libgfortran/generated/_cos_c4.F90
! 7964799c476594aa2fe69b32579cda48  libgfortran/generated/_cos_c8.F90
! f868fdd952ccdf1b1b55218c223cf4f5  libgfortran/generated/_cos_r10.F90
! 8fe9e74810ea3220271e59b2c72422e6  libgfortran/generated/_cos_r16.F90
! c81abb92677eff0b7ec86eb2c0d07a57  libgfortran/generated/_cos_r4.F90
! c160f8105dac0c9101610f4e8889fd26  libgfortran/generated/_cos_r8.F90
! e49441700fe1b4fa8ba2e89a62093b1d  libgfortran/generated/_cosh_r10.F90
! fd3ebc83d2d90b3ee4602f6e48ab5a95  libgfortran/generated/_cosh_r16.F90
! 7e81614a849294644e0da0bb5ef2d47f  libgfortran/generated/_cosh_r4.F90
! 70804cbb2a7b2fdda65770d919c1f4e6  libgfortran/generated/_cosh_r8.F90
! 086c867c9535663e89f928d7e802cab6  libgfortran/generated/_dim_i16.F90
! e1529c2aa8a6165877347066322e132d  libgfortran/generated/_dim_i4.F90
! 8b3175d25f73431799d2838f3d713992  libgfortran/generated/_dim_i8.F90
! dbced14993f15f664eb2ca2008e1160e  libgfortran/generated/_dim_r10.F90
! 673adba33351f7bf41050fc80878e9da  libgfortran/generated/_dim_r16.F90
! 17494b693a381c8e58d1ddbfa4076ebd  libgfortran/generated/_dim_r4.F90
! 9a6afd634e11d931dfdbcf83fc7be1a6  libgfortran/generated/_dim_r8.F90
! 92c3d23842d67232bae48bdd6d0b1348  libgfortran/generated/_exp_c10.F90
! 24625e1545686fb180249139e9674c4a  libgfortran/generated/_exp_c16.F90
! 965f6c0c6384806bb3df646efb0c1f93  libgfortran/generated/_exp_c4.F90
! e564c3495879fc9e52a6d95d3bc52634  libgfortran/generated/_exp_c8.F90
! c0fbba31d93a4c76a0b75732984c9ddb  libgfortran/generated/_exp_r10.F90
! 534ecf4c9a6ea04976f90cb6aa296a1e  libgfortran/generated/_exp_r16.F90
! 647506de158972d86651d16624a0a0dc  libgfortran/generated/_exp_r4.F90
! 2e999b96a2940381d2531e9e430708ad  libgfortran/generated/_exp_r8.F90
! adea7597190a7bfd48c22c783a173fd9  libgfortran/generated/_log10_r10.F90
! 72cf3297bae431f47beb74fe988e80fb  libgfortran/generated/_log10_r16.F90
! cc42904a83ce124de5a43101ec412262  libgfortran/generated/_log10_r4.F90
! f369d4f2363671f2af310fecb8053f29  libgfortran/generated/_log10_r8.F90
! 130e16756b107a109c7a625a5bc0bf60  libgfortran/generated/_log_c10.F90
! 09c8bf8b996600777cdf62866e644293  libgfortran/generated/_log_c16.F90
! 8a0d221b3c27e588b21315f2728d291d  libgfortran/generated/_log_c4.F90
! e23d2f0b84047ef08d8305560142febc  libgfortran/generated/_log_c8.F90
! 9b73a0efb4af832a4b6f4bfc7b9816c2  libgfortran/generated/_log_r10.F90
! dcc7e26366d517f521b3f86f541db08a  libgfortran/generated/_log_r16.F90
! 2859497e058471235ac45a21f41f3cae  libgfortran/generated/_log_r4.F90
! 1f3466aee4338d84b9d68c67ba71872e  libgfortran/generated/_log_r8.F90
! 1e73f6572f6bcb381eb6b42d34c8e79c  libgfortran/generated/_mod_i16.F90
! 82cc7a15f8ca5a6f17527a9a3af5b967  libgfortran/generated/_mod_i4.F90
! 64257033a1514ea3fd78187dcc75d819  libgfortran/generated/_mod_i8.F90
! 0a1bc5dab01437019b692b1f05fd5bba  libgfortran/generated/_mod_r10.F90
! 82464a4321dad7eec4b513c00c2c410b  libgfortran/generated/_mod_r16.F90
! 598b66c33db692ae9dc6395cd190c67d  libgfortran/generated/_mod_r4.F90
! 1516f9a50354faab7cf76c9cc2cc9046  libgfortran/generated/_mod_r8.F90
! 96f99b1fe0ac27d6f59a9b4a20748246  libgfortran/generated/_sign_i16.F90
! b8bbaaf881121ec1ff480d0c1b7a2c64  libgfortran/generated/_sign_i4.F90
! f6058970c42c65d3895b3c8f5e2edf55  libgfortran/generated/_sign_i8.F90
! 5c0a8dd9777bd4e291f6e0ad6f02dd5e  libgfortran/generated/_sign_r10.F90
! 264795adbbeee87abe9c3f02ea09c3d1  libgfortran/generated/_sign_r16.F90
! 4140a1457259195b23dda1c093c28b28  libgfortran/generated/_sign_r4.F90
! 0f8aaa39f9ddfe0b7cf97b5404a7b385  libgfortran/generated/_sign_r8.F90
! fef9b7d2b84b246f2ea9fcdf8834996a  libgfortran/generated/_sin_c10.F90
! 94f08e6eacc816926ff8a07f9cdac293  libgfortran/generated/_sin_c16.F90
! 5c35e8c533e50de0cfc34161e58d8536  libgfortran/generated/_sin_c4.F90
! 45241824fc98f6106cbbb14f5a24ada1  libgfortran/generated/_sin_c8.F90
! e6dbe4da304c05ee513dfbe83b458de3  libgfortran/generated/_sin_r10.F90
! f571ba5f6a5fdce1a1067895465f11e4  libgfortran/generated/_sin_r16.F90
! 6a523d597af423b5ea33d0e439e6bc0c  libgfortran/generated/_sin_r4.F90
! 810b3fed8a46b79aa1638ef249e51394  libgfortran/generated/_sin_r8.F90
! 9f9cbc3a978b8771ed9f63514034a6c1  libgfortran/generated/_sinh_r10.F90
! b4a562a6c56135570778d8825f6cde08  libgfortran/generated/_sinh_r16.F90
! 5602c39f259f0f01d9953ee768547e54  libgfortran/generated/_sinh_r4.F90
! b708c1d8bf19c45d6457e81625657fba  libgfortran/generated/_sinh_r8.F90
! e9f86275723d7dc840f553500aa60ce6  libgfortran/generated/_sqrt_c10.F90
! 997b8a01cf934b8e824019b02f986068  libgfortran/generated/_sqrt_c16.F90
! 938b720435c90d41c0be7d5bf66d322c  libgfortran/generated/_sqrt_c4.F90
! b730095ffdd32f90ce83816d6d313724  libgfortran/generated/_sqrt_c8.F90
! 7fda0816083f8a451b57ec42a39701c4  libgfortran/generated/_sqrt_r10.F90
! c59d2ea21d7d5d25eed71c8087c4d29e  libgfortran/generated/_sqrt_r16.F90
! fb797ce9f25b7670a013d4a9e82229c2  libgfortran/generated/_sqrt_r4.F90
! b6d0e5cdc3de77f0df501a94bb294298  libgfortran/generated/_sqrt_r8.F90
! d5a86b234ec1050800edfa30951bdb8c  libgfortran/generated/_tan_r10.F90
! 2916b26087650311bfedff414bb7f6d9  libgfortran/generated/_tan_r16.F90
! d7eda1869dae16b5aecb700963ee23f6  libgfortran/generated/_tan_r4.F90
! 1a6e743e5e4b6209ccc12d3aa99c9658  libgfortran/generated/_tan_r8.F90
! a81e8be0c40706e220f37d55622f77f9  libgfortran/generated/_tanh_r10.F90
! fd10e014a2ca5ad6bcbb95be53458213  libgfortran/generated/_tanh_r16.F90
! 8c43d4b045bec22049a7c026aea3fa74  libgfortran/generated/_tanh_r4.F90
! bd88d60de6aa1c1a6b53ab4c80b5519d  libgfortran/generated/_tanh_r8.F90
! d77fdc493dcaf7bc325fb54772aba2a5  libgfortran/generated/all_l1.c
! 19862779da1380cd76b1700a700f4731  libgfortran/generated/all_l16.c
! ff1494a7bd2b995a1a2eecc17d47c2bd  libgfortran/generated/all_l2.c
! 43ca9872763e2e04ef9cfc5ab532d0f2  libgfortran/generated/all_l4.c
! 63f844a1aca99e515894a1ff8eadaba4  libgfortran/generated/all_l8.c
! d9dec8cf6730382d0e1cb86a43f7b7b6  libgfortran/generated/any_l1.c
! cda0bc414c257385ad979c7ff0d083cb  libgfortran/generated/any_l16.c
! d4df866b20c868d7711eab640504c172  libgfortran/generated/any_l2.c
! d47f7360e33fee338eb0fbcb8f3a4f7e  libgfortran/generated/any_l4.c
! dd5e53434c36df83e77e1e10d03e92d5  libgfortran/generated/any_l8.c
! 09b2bb57914566da15b8a70fbf9d32ce  libgfortran/generated/bessel_r10.c
! 70e87e33db2e94507c7261aa3a6fb9ac  libgfortran/generated/bessel_r16.c
! 9c93dff1b3ce112b8bfa6ab57778dea0  libgfortran/generated/bessel_r4.c
! f4f2d7051da8edd606c83f11f4b26a37  libgfortran/generated/bessel_r8.c
! 8c7eccd13d3cf95ed5b8947d764a3b54  libgfortran/generated/count_16_l.c
! 8d497c05515a3bb4a49689ecdcac2480  libgfortran/generated/count_1_l.c
! ef69a89d03c836900a27e798ca0dc931  libgfortran/generated/count_2_l.c
! e5d40f765137c959518be9042aafaa39  libgfortran/generated/count_4_l.c
! f6edd9ca4e828ac61e03b93340e66d5b  libgfortran/generated/count_8_l.c
! 09bf7615ee15d385d4fb52e53846cc59  libgfortran/generated/cshift0_c10.c
! 87bee1b6958c1d4291c9c81023a9332d  libgfortran/generated/cshift0_c16.c
! 56490c6b707b05b75f4c287204c070b7  libgfortran/generated/cshift0_c4.c
! 1796c7748498c99638c7239bb8f64184  libgfortran/generated/cshift0_c8.c
! f0afd71d5789bda1c45d991c4e41a283  libgfortran/generated/cshift0_i1.c
! bf4f6bfe1e19071faeef1e40f57c6694  libgfortran/generated/cshift0_i16.c
! 35e50b7790b3667ab0cfb86add5b0657  libgfortran/generated/cshift0_i2.c
! 8c12a24a60d3ee83bb8bb9fd13bd2cac  libgfortran/generated/cshift0_i4.c
! 2a2aa5d250b246256972f9ba174c29a2  libgfortran/generated/cshift0_i8.c
! e2ace66c4c7e6f0bd76249d468d4e195  libgfortran/generated/cshift0_r10.c
! 9fc5bc4e367c08ecbdad2c869592eeec  libgfortran/generated/cshift0_r16.c
! 976cba8f2c8d2b8c674556ca4b68e9a3  libgfortran/generated/cshift0_r4.c
! 584f7322147d774d3c37af86ebf74ff6  libgfortran/generated/cshift0_r8.c
! d85f4418537f955c021ac1412bd1a642  libgfortran/generated/cshift1_16.c
! 5022d4119f0d59ccdb1de4c8ca429400  libgfortran/generated/cshift1_4.c
! aa9c252965ff211ea886e1a96a1741dc  libgfortran/generated/cshift1_8.c
! bc5e238cc82e3f1b46f71e4582d89390  libgfortran/generated/eoshift1_16.c
! 605ff34764ba155c52ecaf3b6b264356  libgfortran/generated/eoshift1_4.c
! 3e1ff4c7d2f1792f4486d9b44334253b  libgfortran/generated/eoshift1_8.c
! 429697b9df07d09901372121379b8ae1  libgfortran/generated/eoshift3_16.c
! 166a6470e29e8929a34e7c201eba4f3c  libgfortran/generated/eoshift3_4.c
! 3949594c343a4e48623b3d85528e360e  libgfortran/generated/eoshift3_8.c
! f61f867ad8bd31334c6ae286840be365  libgfortran/generated/iall_i1.c
! 5a5a69dddd63ede115cb220741e48972  libgfortran/generated/iall_i16.c
! c7871a4d82735a77580ac32a2137fdf1  libgfortran/generated/iall_i2.c
! 6f96f1e93fb8b4a614e43a21f72536b3  libgfortran/generated/iall_i4.c
! 241f5ad6167aec1b3b36b15c9c30a367  libgfortran/generated/iall_i8.c
! 192a4deca6d3bb99410ba10f9905dba9  libgfortran/generated/iany_i1.c
! a5a4b4d6cccf2a70dd1b2b15d78467d7  libgfortran/generated/iany_i16.c
! 529106f786c5c5134d9f0da9c60d6a89  libgfortran/generated/iany_i2.c
! e2057557ab6fdf44073d3e36af21a2a5  libgfortran/generated/iany_i4.c
! 30dc0df9459a3cc04fe365062c0ea2f3  libgfortran/generated/iany_i8.c
! a8948f9eac257b6fe25959370b908733  libgfortran/generated/in_pack_c10.c
! 8a6e6632dc25ffc8f28dabf7d7beeca8  libgfortran/generated/in_pack_c16.c
! 8e391512ab94ef76bb37be72c1abac3e  libgfortran/generated/in_pack_c4.c
! 1e3fbd861bb8eb3a58f709cd9efc558f  libgfortran/generated/in_pack_c8.c
! 41de0e477ba558a040245205e309862e  libgfortran/generated/in_pack_i1.c
! 9646e0f38fb4d2892effcef6cc03209c  libgfortran/generated/in_pack_i16.c
! ad34a8edfe348470c69953d75bde4ebb  libgfortran/generated/in_pack_i2.c
! baa3fc281f656f33bb873e79a409d5d2  libgfortran/generated/in_pack_i4.c
! 6b838e434686c9fa752040cdeee49311  libgfortran/generated/in_pack_i8.c
! 190feb156678bf72b746cb9e03632e2e  libgfortran/generated/in_pack_r10.c
! 0a194821097ec92e76ce1bd9793e28c7  libgfortran/generated/in_pack_r16.c
! cad3aacf75e7b03c24b1a5faa2cade77  libgfortran/generated/in_pack_r4.c
! 7748355e5931c2587c32d06e8a44b25d  libgfortran/generated/in_pack_r8.c
! 6ab75988efa00822867a3ce31f318b8d  libgfortran/generated/in_unpack_c10.c
! c935e4bcd789d360f8017eb0e48689ef  libgfortran/generated/in_unpack_c16.c
! c7f3ce2ae2cbf2747df531f8d27a1470  libgfortran/generated/in_unpack_c4.c
! 58d764edc8dabe1d37ffd6e0eed7a8e2  libgfortran/generated/in_unpack_c8.c
! 5e16074b3a13c3f74ba958524c28fc99  libgfortran/generated/in_unpack_i1.c
! 6d5b0c45b25c93f15eb868a8a0e63297  libgfortran/generated/in_unpack_i16.c
! 0df30be7602ec4a6d9c9ac642870dd30  libgfortran/generated/in_unpack_i2.c
! 9e0ad46acfcd5691b536f3d947fc7d66  libgfortran/generated/in_unpack_i4.c
! d7f215af4ed0931058235807288a231c  libgfortran/generated/in_unpack_i8.c
! fd3f944755395d38f31fdd1c9d7f2317  libgfortran/generated/in_unpack_r10.c
! 7b69b450a955ed3cc38e42be6910e950  libgfortran/generated/in_unpack_r16.c
! b52809624ee7969d76904ac5d79ee118  libgfortran/generated/in_unpack_r4.c
! 52dc5c1467bada091ed6729b99bf87a4  libgfortran/generated/in_unpack_r8.c
! 96f048f16ea73388dccee91737d6d088  libgfortran/generated/iparity_i1.c
! 25bfebe61a16716930d6510f4fc59a59  libgfortran/generated/iparity_i16.c
! fc00e570b9fad8f62471a0714b18d339  libgfortran/generated/iparity_i2.c
! efd5dc7907281ef77288304528af92c7  libgfortran/generated/iparity_i4.c
! e4fa01a63a2aa68e3e48d22fc1d1234b  libgfortran/generated/iparity_i8.c
! db5db98616fbce86bbfca5af36a60ab3  libgfortran/generated/matmul_c10.c
! 0ef2cfed1d37e36e167d8c8c975c9944  libgfortran/generated/matmul_c16.c
! 3f5913e3948662835ab39d380fe7c4f6  libgfortran/generated/matmul_c4.c
! 3b7836b84bd3e341e1a630d75c4e4bf8  libgfortran/generated/matmul_c8.c
! f7df971445f42b23fa3834f8541d536a  libgfortran/generated/matmul_i1.c
! e2900c6a1d0a6b2735ff0c835d18451e  libgfortran/generated/matmul_i16.c
! 04dae2f6e5d8bfdc87328103d6672d42  libgfortran/generated/matmul_i2.c
! 92b5909c9bb221836a672066e1115e10  libgfortran/generated/matmul_i4.c
! 643587b66136e89147e77760bfc020e6  libgfortran/generated/matmul_i8.c
! cedcd4dc81382fc0f5c47c5091d646c8  libgfortran/generated/matmul_l16.c
! f487fcf53e946f947711ea5dcbcf90cd  libgfortran/generated/matmul_l4.c
! 77cae3de10355eae008ee99136076bf1  libgfortran/generated/matmul_l8.c
! b3f304fd03d3b9aea0aed43a5f4b340d  libgfortran/generated/matmul_r10.c
! f8b3cd9f704c8306c789e2ab1ee2cb5f  libgfortran/generated/matmul_r16.c
! b39156b4dd804ad42627c57aca1c2ce0  libgfortran/generated/matmul_r4.c
! a382676303604778c8645d3dcd0393cb  libgfortran/generated/matmul_r8.c
! 7847039918c6249a0b5e757dd79176cf  libgfortran/generated/maxloc0_16_i1.c
! bcff85b93eeb6591d72d7baeea055863  libgfortran/generated/maxloc0_16_i16.c
! 3bfedc430f24fdcb4c9ed8006296189c  libgfortran/generated/maxloc0_16_i2.c
! b4d0294af80683d3ef3e00fabefb2fb0  libgfortran/generated/maxloc0_16_i4.c
! e3437deca80eb9a0d4946d93b6c60068  libgfortran/generated/maxloc0_16_i8.c
! 284ada0b2c359c3380704db37340c6c4  libgfortran/generated/maxloc0_16_r10.c
! 08af8a91d517b557f5fd20d9caa8402d  libgfortran/generated/maxloc0_16_r16.c
! 1417d20fda6a7d8ec56548e34e3cbcb6  libgfortran/generated/maxloc0_16_r4.c
! e4e65b49e0a0604352440ee61bb4e062  libgfortran/generated/maxloc0_16_r8.c
! 48df4cd2fbdc4df3dee4b6b4db1e38a7  libgfortran/generated/maxloc0_4_i1.c
! 75925bff23ca4906bf089a53b6cb0173  libgfortran/generated/maxloc0_4_i16.c
! 8f27e0321614de826bbaf08ccf5df30f  libgfortran/generated/maxloc0_4_i2.c
! 478c9491c28c2fca2867602f83467637  libgfortran/generated/maxloc0_4_i4.c
! 7d0b06b29f666e14062fd836c532e23b  libgfortran/generated/maxloc0_4_i8.c
! 80feb73ed7656417080c784feb74402e  libgfortran/generated/maxloc0_4_r10.c
! 7291c68c48a20918ab4b45ff5b433128  libgfortran/generated/maxloc0_4_r16.c
! 895608d397b1b288aa883c8f08719886  libgfortran/generated/maxloc0_4_r4.c
! c9be59628840e2a2e6351d8507b552a6  libgfortran/generated/maxloc0_4_r8.c
! b1cc3b7b21508fc991863fa1f4a783e8  libgfortran/generated/maxloc0_8_i1.c
! 3e53da1c2016f5324c37df5df5df1e01  libgfortran/generated/maxloc0_8_i16.c
! 6a78589c485bbb220bd4d08522c78cda  libgfortran/generated/maxloc0_8_i2.c
! 5efc68baa9c4cca9a5dc44449b1ffcec  libgfortran/generated/maxloc0_8_i4.c
! 8ec6b375999d3fa259a3875534c9e8ea  libgfortran/generated/maxloc0_8_i8.c
! 0a6653d528347082f2641c558edb55c9  libgfortran/generated/maxloc0_8_r10.c
! 9c330c76630712f683a46451e400cf45  libgfortran/generated/maxloc0_8_r16.c
! 8bdadb6f7fed88b83a4776d980ae3f77  libgfortran/generated/maxloc0_8_r4.c
! bf2a3badb00d8adf1da29554048468dd  libgfortran/generated/maxloc0_8_r8.c
! e6790eb6f1847edd8d3a10c7f3d7f6b1  libgfortran/generated/maxloc1_16_i1.c
! aa868c58ecf71cfbc91723026813a18c  libgfortran/generated/maxloc1_16_i16.c
! bd036b03fc7b4cf4837d3a5c30b90e88  libgfortran/generated/maxloc1_16_i2.c
! 6ba6da5bda47a8002bce7efeba0436b5  libgfortran/generated/maxloc1_16_i4.c
! 91f5d05e27db3560e0963a7d9f2b6eae  libgfortran/generated/maxloc1_16_i8.c
! fc843a54ab36185bc4ee13ed5b4b9747  libgfortran/generated/maxloc1_16_r10.c
! 1e0290bec06fd4df1b6ea9ed07c57759  libgfortran/generated/maxloc1_16_r16.c
! 5d4699c92129d8965eece120db561962  libgfortran/generated/maxloc1_16_r4.c
! 3fe05169e382a9e755f77c7ee138ecaf  libgfortran/generated/maxloc1_16_r8.c
! a0c4a9f9fb82758c85d5bbbfc1807746  libgfortran/generated/maxloc1_4_i1.c
! 39617e6eaade3bb4ecf2c7f122d1b6f3  libgfortran/generated/maxloc1_4_i16.c
! 2526d1d025dba98383f0b9083d312bfa  libgfortran/generated/maxloc1_4_i2.c
! 2d762fa24da3fe61f41ddf7e9be4d92a  libgfortran/generated/maxloc1_4_i4.c
! 725f17ec63bda1010524813ff3000c9d  libgfortran/generated/maxloc1_4_i8.c
! 577123d087e1aff6846f7f209ebce48c  libgfortran/generated/maxloc1_4_r10.c
! 74838c2fffa354e162639ff30e2a97b0  libgfortran/generated/maxloc1_4_r16.c
! 0e5d8e73cee8b3d88613dc0387fb9c05  libgfortran/generated/maxloc1_4_r4.c
! ee06976854a43589c4d2eb88b5a00793  libgfortran/generated/maxloc1_4_r8.c
! b4edd428b60f95cfadbcac5891233353  libgfortran/generated/maxloc1_8_i1.c
! 1e0319afa99c497233bd7716164c1f3f  libgfortran/generated/maxloc1_8_i16.c
! 95217914fa25780b3b3f90631baa31d7  libgfortran/generated/maxloc1_8_i2.c
! a225729e9a988b48de1dff97b25b82d0  libgfortran/generated/maxloc1_8_i4.c
! 77aa774cbcdd657b01757c6c758dbb21  libgfortran/generated/maxloc1_8_i8.c
! 4a159440d85b951c64b0ceb6f2cc2593  libgfortran/generated/maxloc1_8_r10.c
! ce4dd0964b0c3551a5c651090e76477e  libgfortran/generated/maxloc1_8_r16.c
! bcda5643829f3f773437553e173600e7  libgfortran/generated/maxloc1_8_r4.c
! 55631a471a7c004bcd95c53770bbd98b  libgfortran/generated/maxloc1_8_r8.c
! c5e14102b9f859f1238d14ef2374015c  libgfortran/generated/maxval_i1.c
! 28ce799b6ca046fa94aaf5d07799d9b5  libgfortran/generated/maxval_i16.c
! a8491728e524e76b1968358166043422  libgfortran/generated/maxval_i2.c
! 26ed0e39fe98f9b248afd57dc6c527c7  libgfortran/generated/maxval_i4.c
! 847600a31a7dcf9bd9fe61a4d0123042  libgfortran/generated/maxval_i8.c
! 10aea6eb3a7e6047bb90d11642e3f630  libgfortran/generated/maxval_r10.c
! d664ac6b73cd7fc7960e80845fa174dc  libgfortran/generated/maxval_r16.c
! f49bc3c74ef9282be31000b1f96fae3e  libgfortran/generated/maxval_r4.c
! 4386aa8e193ad63ede903d6dc6036413  libgfortran/generated/maxval_r8.c
! 08c8ffd150e5431e70a62399021931df  libgfortran/generated/minloc0_16_i1.c
! 4fc16eb89d36a0c2668cfc06ef2e57b0  libgfortran/generated/minloc0_16_i16.c
! f5480d0e23cf6a5ee1f14d5f0fbceff4  libgfortran/generated/minloc0_16_i2.c
! c7ded78bcc28c1c84e67a2dbc9da1dd6  libgfortran/generated/minloc0_16_i4.c
! c3e3dd0fde35c15f9b41f9e24022f23b  libgfortran/generated/minloc0_16_i8.c
! a13488feb41082edcdd141c782e80018  libgfortran/generated/minloc0_16_r10.c
! ca41c4104bcdab89316f3baf7d9c5e8d  libgfortran/generated/minloc0_16_r16.c
! 1b621ccdba6c3c7d537c6cc4be288e04  libgfortran/generated/minloc0_16_r4.c
! fce48d00fee24125a1e9623e9c7cc323  libgfortran/generated/minloc0_16_r8.c
! fc21ce114f0b06e87e44f44be4642cf6  libgfortran/generated/minloc0_4_i1.c
! 25d40862a0a5148d21123c9a57bf797f  libgfortran/generated/minloc0_4_i16.c
! d305f86977970ab029eb1a467e5d9072  libgfortran/generated/minloc0_4_i2.c
! 64e3ba78240e3bf4dd2b45426540a414  libgfortran/generated/minloc0_4_i4.c
! f2ff968081b4562656a79710a7740676  libgfortran/generated/minloc0_4_i8.c
! e0dcd5c18173147ecd8a03b6cc61d92e  libgfortran/generated/minloc0_4_r10.c
! 42f786176462e3ab75ad0a32e664a20f  libgfortran/generated/minloc0_4_r16.c
! 1ca48817e4d230ed133ed991f38ee340  libgfortran/generated/minloc0_4_r4.c
! bbf86398ecbc64af956e542b9c388a77  libgfortran/generated/minloc0_4_r8.c
! a06697396df7a1371c0ddea67b0f3c19  libgfortran/generated/minloc0_8_i1.c
! 5614d3f18578e417ecc40e17748437e7  libgfortran/generated/minloc0_8_i16.c
! ab8935b500e36b841efbd93f84dd4a22  libgfortran/generated/minloc0_8_i2.c
! 461801bdb3f006e4a351f86416fa04d5  libgfortran/generated/minloc0_8_i4.c
! 0b9e325123645fcdbae7720d752f4261  libgfortran/generated/minloc0_8_i8.c
! c66c33d5e586cca2a574ee173f50b500  libgfortran/generated/minloc0_8_r10.c
! 0d5f25c875c818905fa8c480ba3ea1be  libgfortran/generated/minloc0_8_r16.c
! 6fb158e5712f74e12b2dff924a831af2  libgfortran/generated/minloc0_8_r4.c
! a0fbd3a16cdd682772a086d28f75f3c8  libgfortran/generated/minloc0_8_r8.c
! 76e262291de27026c293e108cbf8393c  libgfortran/generated/minloc1_16_i1.c
! 9fc72ff3809646fe6db4c8bdac50ceb1  libgfortran/generated/minloc1_16_i16.c
! 84f2c1aa6edfed63c44bcd4c4308ecf5  libgfortran/generated/minloc1_16_i2.c
! dd47b6fc09a67ca72c9c9637bb2525ee  libgfortran/generated/minloc1_16_i4.c
! 2e658ab7dfd4644cef8105c13e0e1ca4  libgfortran/generated/minloc1_16_i8.c
! b63df3fcd85e46ce5cccf5b2a308d5d4  libgfortran/generated/minloc1_16_r10.c
! 757cf77f158f7cd1396e990e3b441712  libgfortran/generated/minloc1_16_r16.c
! ae1587f41fdf51b67232a74229b67261  libgfortran/generated/minloc1_16_r4.c
! 397ac7f9d5de07f3a50e34a616512cf7  libgfortran/generated/minloc1_16_r8.c
! 9c092fe23c29a9220deb8c51541b21dd  libgfortran/generated/minloc1_4_i1.c
! bc94d319b665285cec5d8e6f695cb521  libgfortran/generated/minloc1_4_i16.c
! e28a6c214097df5cd1fcfc4a85bed628  libgfortran/generated/minloc1_4_i2.c
! 7f1dff2cab12d632dbb96002c67b7688  libgfortran/generated/minloc1_4_i4.c
! e33c97e9b77b278e739d47ddb16b42f3  libgfortran/generated/minloc1_4_i8.c
! 49cdb362a6421fd8e09de1b2af8d72e7  libgfortran/generated/minloc1_4_r10.c
! 2d4fb3d90fa3f81311719683738640c0  libgfortran/generated/minloc1_4_r16.c
! aee1044d5e19d1455e90337994f631f5  libgfortran/generated/minloc1_4_r4.c
! f854bc66ed7c296d7d502777f9a974b0  libgfortran/generated/minloc1_4_r8.c
! abf7ca7b61e060d05cb2dea803e9eb13  libgfortran/generated/minloc1_8_i1.c
! 1eda4abb629145dba496f1e2fa9357b7  libgfortran/generated/minloc1_8_i16.c
! 8278478a953afa36893a27ac1aa5657d  libgfortran/generated/minloc1_8_i2.c
! 15a6cd8afe9dde429727b9a6e1d93fc4  libgfortran/generated/minloc1_8_i4.c
! d0b5e1599cd66a4a6bce8f1ab403c760  libgfortran/generated/minloc1_8_i8.c
! 88b44d6d4834ed9215d7d1dc6e7bcf76  libgfortran/generated/minloc1_8_r10.c
! 0240173146d2ddead3e5de00eb74e8c4  libgfortran/generated/minloc1_8_r16.c
! 32391abc99550f8bb44480a7f447f433  libgfortran/generated/minloc1_8_r4.c
! 7b9fd358da3e45bafa2f6ba4dfc0af7c  libgfortran/generated/minloc1_8_r8.c
! c8038d2e8e72460af01fb9df93c0299c  libgfortran/generated/minval_i1.c
! a4e6eb0169f461334c2c08b9d74f0c92  libgfortran/generated/minval_i16.c
! 5471f67ddb97b0cdc9182fb36a5c48dd  libgfortran/generated/minval_i2.c
! 305c355efd507cf3c711aedcccfff5bd  libgfortran/generated/minval_i4.c
! ce90f54ce8b302aa0f63ae87880557a3  libgfortran/generated/minval_i8.c
! 5577052956c358136de3a0fc2056bb73  libgfortran/generated/minval_r10.c
! a9d4efa89f286ccd4e318dc54daa2803  libgfortran/generated/minval_r16.c
! e45ef25dc4afbeea9bec931f0c41ec51  libgfortran/generated/minval_r4.c
! 2fbdbcfb6b6886121539e24e2e71fb7d  libgfortran/generated/minval_r8.c
! ac12656039a7707a99b263a13a1552c3  libgfortran/generated/misc_specifics.F90
! 9b00b918d36a2866b937deaa5d0123be  libgfortran/generated/norm2_r10.c
! 110593cbcbf6512dbb0d22b71eceeaf4  libgfortran/generated/norm2_r16.c
! ea27c90ab618632765bf858053856ccb  libgfortran/generated/norm2_r4.c
! da2a9ffba8f0ec2c7cb5f50a8cf3cede  libgfortran/generated/norm2_r8.c
! e92c105d2db28cb4adc1f206fb356aba  libgfortran/generated/pack_c10.c
! c9bcefc456f016e5e0b619df35cb65b7  libgfortran/generated/pack_c16.c
! f16ab10d44ffab382408fabe948bccaf  libgfortran/generated/pack_c4.c
! 1ec0311c14234c9a70480f10c77544c6  libgfortran/generated/pack_c8.c
! fe073d09d2cf1bdc452a4178375297bc  libgfortran/generated/pack_i1.c
! 5f0440c18840e82245673757054f02a8  libgfortran/generated/pack_i16.c
! 65cfc2909fe575f372c973c22342bfcf  libgfortran/generated/pack_i2.c
! 9874c645dabd160a5accd5db9bd9204f  libgfortran/generated/pack_i4.c
! 297eb77536946ee481a97f0a74592c9f  libgfortran/generated/pack_i8.c
! e7b2c181d6184239429f6999f427cf0a  libgfortran/generated/pack_r10.c
! d439f593e75f0cb49dd35f97ac738e98  libgfortran/generated/pack_r16.c
! 2a29fe128abebd3461edc91f705acab7  libgfortran/generated/pack_r4.c
! 17ccc00f26ef68e5dba41c27b91708ac  libgfortran/generated/pack_r8.c
! 20a694e59e74342319c71eb94c30119c  libgfortran/generated/parity_l1.c
! 8e7e34688f8c8469a7c3056825219aa9  libgfortran/generated/parity_l16.c
! 452cef61f8d8efdaf9db4dae11d5fdbe  libgfortran/generated/parity_l2.c
! 544209286400ffada360912a0b5e5c2f  libgfortran/generated/parity_l4.c
! 81609315cc67f3b85833f2619778ba41  libgfortran/generated/parity_l8.c
! 1d0df619186cb04025853bef7f352f9b  libgfortran/generated/pow_c10_i16.c
! 22406761ffd70c167c23bf3326610f81  libgfortran/generated/pow_c10_i4.c
! 4b0567cef4be639cbb3eeaaf6f21e1cc  libgfortran/generated/pow_c10_i8.c
! 9fa4695853e3df6dbe4a4b34fcfa9b81  libgfortran/generated/pow_c16_i16.c
! da767bfb2f16c09ba7812decce5658b0  libgfortran/generated/pow_c16_i4.c
! 8f9762142565bb40edc56504c9b2cd86  libgfortran/generated/pow_c16_i8.c
! 1b156ce9a1276a0a35f7ae59fb54ed2a  libgfortran/generated/pow_c4_i16.c
! 9d4575b1753c4bff32851a9b32be9ffe  libgfortran/generated/pow_c4_i4.c
! 2e70190a1a5df11b6befee611e3a5d75  libgfortran/generated/pow_c4_i8.c
! 1d0c8a606b8b6c85f9546b3df80c9690  libgfortran/generated/pow_c8_i16.c
! 5f0989837c9d98b3cf9bbed9eef99653  libgfortran/generated/pow_c8_i4.c
! 3d9001f27940295c8ee4e68190ec08d8  libgfortran/generated/pow_c8_i8.c
! 652f65af90e29560e10b0e4a29ce67ec  libgfortran/generated/pow_i16_i16.c
! 94be2386f3108b9aca81fc85981ab939  libgfortran/generated/pow_i16_i4.c
! c95056e9ce8a4c19b0b9d9209076fcde  libgfortran/generated/pow_i16_i8.c
! b09030126186ab3fd6e3c0e5fdc00598  libgfortran/generated/pow_i4_i16.c
! 143784956eccbdfa3026fa9a02d7379e  libgfortran/generated/pow_i4_i4.c
! 89dc269db48f25c89ec02dbbe0963e58  libgfortran/generated/pow_i4_i8.c
! 60148e9335b5408071f053a2eaa806a4  libgfortran/generated/pow_i8_i16.c
! 148626a315a13e26c9043aa6bb471de5  libgfortran/generated/pow_i8_i4.c
! 59e6c33172da3c3849b1a431a9994323  libgfortran/generated/pow_i8_i8.c
! bb10e2b0f73c9c48cf274fe860e89fff  libgfortran/generated/pow_r10_i16.c
! 8783074d75622a4256632bbe9e6fd768  libgfortran/generated/pow_r10_i8.c
! 450b5c2712cdf4f9eb44f9e40ecbece1  libgfortran/generated/pow_r16_i16.c
! d7ae6958030119241f19ae21111ab826  libgfortran/generated/pow_r16_i4.c
! 333f6927856cb11fc081e0472d100ba6  libgfortran/generated/pow_r16_i8.c
! af8f70c73d865a57954cdc650740217f  libgfortran/generated/pow_r4_i16.c
! 9f6bc6120b1d9833143d47fdc34f550f  libgfortran/generated/pow_r4_i8.c
! 03d6eac952c3c960997bf3df135287f8  libgfortran/generated/pow_r8_i16.c
! 824337de14fa7fab9cd4e0a1b7b40919  libgfortran/generated/pow_r8_i8.c
! 50f682178222126e061baff1c4a1b17f  libgfortran/generated/product_c10.c
! 61ea8e4d696e42d420c9ed7e1560ff59  libgfortran/generated/product_c16.c
! 3e171d839089a6ab1c1a1b677753e323  libgfortran/generated/product_c4.c
! fea1bb87eb5632df960615ba64852ef8  libgfortran/generated/product_c8.c
! 790976e0a7766ffa6004dc16f943074d  libgfortran/generated/product_i1.c
! 9fd8ceba7d88312106c632a75d0f2545  libgfortran/generated/product_i16.c
! 79624486a327e6804e06093063f7f018  libgfortran/generated/product_i2.c
! 524bb6ce38821a200b0821611ad5ce55  libgfortran/generated/product_i4.c
! ca464ffc8770cbf50be3a16f96ff51ba  libgfortran/generated/product_i8.c
! dd1e21fa232268ebcea7ffaa5744b07f  libgfortran/generated/product_r10.c
! cdab9a573410272bcdf613e3592d646e  libgfortran/generated/product_r16.c
! 391feed8babaa501131d644111e01260  libgfortran/generated/product_r4.c
! 69e753bbd1ca879463d4bd50497b42cc  libgfortran/generated/product_r8.c
! 816cb88ca638b72cdbcbc0e3483de167  libgfortran/generated/reshape_c10.c
! c650afcb346ddd8e82ef9cd3ec595912  libgfortran/generated/reshape_c16.c
! 156c079aa76c53381358619620747327  libgfortran/generated/reshape_c4.c
! 73026a9f79a49dccfa74cc42ea267b94  libgfortran/generated/reshape_c8.c
! 4162494baa32abaf6ac153976e6f0f35  libgfortran/generated/reshape_i16.c
! e0ddea24e41a1e7265acf4fe09b31361  libgfortran/generated/reshape_i4.c
! fba0b239a2354158f3996bb6c488176c  libgfortran/generated/reshape_i8.c
! c3eb7dbbc565e2f4774fa3250b6c6543  libgfortran/generated/reshape_r10.c
! 10fd6c8d68f4834c7ade685b097de386  libgfortran/generated/reshape_r16.c
! 0a1042ac56b4e7e0e7ec3088d7aa1bde  libgfortran/generated/reshape_r4.c
! f94d29dc2aa2bb435e949716f5d071dc  libgfortran/generated/reshape_r8.c
! 1756a99e2b6b5e45ba1b4acd37fbf208  libgfortran/generated/shape_i1.c
! 99f56bbb468b7ddd4e55e2cef3fa2dcb  libgfortran/generated/shape_i16.c
! 2060d2390eb61e56275a3c99829c8b9c  libgfortran/generated/shape_i2.c
! 2212c19cb56cd9ed030e5cd69bf6c0c0  libgfortran/generated/shape_i4.c
! c2084776e95495a9d1c58d82cdbf7978  libgfortran/generated/shape_i8.c
! 5947b77049e99a165111f744646720ea  libgfortran/generated/spread_c10.c
! 07a5121dd51fe884ca8ed94389bfe358  libgfortran/generated/spread_c16.c
! 95df7e056363616df875891c916ed1ef  libgfortran/generated/spread_c4.c
! 98049fc0ac32b6ee3d0650331d0eaf8d  libgfortran/generated/spread_c8.c
! 2358c60507a0f71540667c68217d857b  libgfortran/generated/spread_i1.c
! c326e179e0de4909a47bdbeed1d0f5c6  libgfortran/generated/spread_i16.c
! 57f0ef8401106707adea5caedd689d3f  libgfortran/generated/spread_i2.c
! c6fda912fa435c5a7bbf272ff243f3c2  libgfortran/generated/spread_i4.c
! bb2eb0b9b4682903e4db618b85bb46f0  libgfortran/generated/spread_i8.c
! 510b3c8376f887eb6394ec1b859b1009  libgfortran/generated/spread_r10.c
! 2ad82d9f69ef0bd3da2ad673df68ee8c  libgfortran/generated/spread_r16.c
! 93bad72d06a28aa9d2a8ff50583373e0  libgfortran/generated/spread_r4.c
! 1a858832e28fc881ef015aa35628ca96  libgfortran/generated/spread_r8.c
! 79ef312dd418a9e464ba65ce71ade057  libgfortran/generated/sum_c10.c
! 18f1553ccd9f50f476b5e45cb8f4f0da  libgfortran/generated/sum_c16.c
! bba33a5b747cdf5cf8c491903d8207d1  libgfortran/generated/sum_c4.c
! 34e85704d54d2c471e7d59c07f8f681e  libgfortran/generated/sum_c8.c
! 5913eaf6093b847cafba6b1c3545eda1  libgfortran/generated/sum_i1.c
! 2dd622d85ec5b3ed228deaa805759520  libgfortran/generated/sum_i16.c
! 10f7be65163e35a95d098f3b90e13064  libgfortran/generated/sum_i2.c
! 6ee488bf4e040c01fc1558a830546dfc  libgfortran/generated/sum_i4.c
! 46a8e6383bb6b9d241ea4e5143f6696a  libgfortran/generated/sum_i8.c
! c54fc39a3961f6c55749787437d0929c  libgfortran/generated/sum_r10.c
! 9fc0f14986e1ebacca2e515b9e34f110  libgfortran/generated/sum_r16.c
! 02033fb81a529af35c5c5e123b19b2f8  libgfortran/generated/sum_r4.c
! 708a7afd94c2a1f2f82efe85e3392d76  libgfortran/generated/sum_r8.c
! 42e020280a9fccd10eede5bcf91aacb2  libgfortran/generated/unpack_c10.c
! fb7070dc330486855ac7c608e320e025  libgfortran/generated/unpack_c16.c
! e27ac709665854e0d58388e9b2ed012e  libgfortran/generated/unpack_c4.c
! f1f0b6e4cec5eae9c449d1b2c1442b84  libgfortran/generated/unpack_c8.c
! 88fe718e8d38c5cadb6da586ca773d3f  libgfortran/generated/unpack_i1.c
! 4f6cc38aa14e051148908a0be08dcd3c  libgfortran/generated/unpack_i16.c
! 39fc908a23b45d3f0e90eadf3d64e8ef  libgfortran/generated/unpack_i2.c
! ae798a03c4456cc28740a7cd946050f6  libgfortran/generated/unpack_i4.c
! 646e163f186f0aca20a3fe090d9a4ad7  libgfortran/generated/unpack_i8.c
! 22e63f4b949fee644cfd1702c109e33b  libgfortran/generated/unpack_r10.c
! 0243e696153f50d5b06755a71f7ed119  libgfortran/generated/unpack_r16.c
! 1f2ba4c8848b453b365a42a671ffef7f  libgfortran/generated/unpack_r4.c
! ad02420a72de3104e8a01c816568ae37  libgfortran/generated/unpack_r8.c
! 48996cc6465dcdce2cf4c04041a63e30  libgfortran/gfortran.map
! 0519a4970c6502f77f297a095b3f21ef  libgfortran/ieee/ieee_arithmetic.F90
! f903fd8a832dbcab9b803fd1f98c3260  libgfortran/ieee/ieee_exceptions.F90
! 7745eaaa96d74d3f62bb43443dc03a3c  libgfortran/ieee/ieee_features.F90
! 9556a122db87b2d9d23a6a12182e5485  libgfortran/ieee/ieee_helper.c
! ad0a6b42806777b020139aa449086a5b  libgfortran/intrinsics/abort.c
! 875eaceaa0f3434c9033e9c4c7bbc9bc  libgfortran/intrinsics/access.c
! 7c72013319b98c2a62c90a3aee17fa00  libgfortran/intrinsics/args.c
! 3428639053f71db87d6a83a08e71f6b2  libgfortran/intrinsics/associated.c
! d511dfb91753f748f3049682e3b2e674  libgfortran/intrinsics/c99_functions.c
! c62e3f2ccba75845d6ee3408c0197a9f  libgfortran/intrinsics/chdir.c
! 335f24834eb846dfe235b6876f8ea260  libgfortran/intrinsics/chmod.c
! 2206e14e51b46b008f45889a6fb0accc  libgfortran/intrinsics/clock.c
! 1bb9b9912597e10e69e6868c0bb212ec  libgfortran/intrinsics/cpu_time.c
! 2478d42fa16f0915336ef06d583c9b69  libgfortran/intrinsics/cshift0.c
! 6827a95f2bf694f3db024d2891d177f4  libgfortran/intrinsics/ctime.c
! 380d3b8c5654c81c7556fb151b7a4230  libgfortran/intrinsics/date_and_time.c
! a4383d9e5a9b7611221d798ca1fe36d0  libgfortran/intrinsics/dprod_r8.f90
! 32213de970c53c2d5a2f4f21db1eff19  libgfortran/intrinsics/dtime.c
! 5d6479e473a377469ef18a41042e0082  libgfortran/intrinsics/env.c
! 96adf745d90aa778f0e7c532b9312da0  libgfortran/intrinsics/eoshift0.c
! ef9cbfff178917648c1a740bb7589fb4  libgfortran/intrinsics/eoshift2.c
! a6f4f8d6342b90bfbd88a1244ec4abf8  libgfortran/intrinsics/erfc_scaled.c
! 6fbe9875bbd526c42d0bcbdbb2257edb  libgfortran/intrinsics/erfc_scaled_inc.c
! dffcc096263f3c80b0ebc35d85bc62d4  libgfortran/intrinsics/etime.c
! 0867ce1bb17caae6740b053d1a9fdecf  libgfortran/intrinsics/execute_command_line.c
! df9bac312e21be9aca3fe9d3634af98c  libgfortran/intrinsics/exit.c
! fc360649f3dc8d22608724dbc5755cdb  libgfortran/intrinsics/extends_type_of.c
! 72b53ca96b591c2cce9f96a6a14899b3  libgfortran/intrinsics/f2c_specifics.F90
! 0b87082fb37db59271b0c233075d2e3b  libgfortran/intrinsics/fnum.c
! dc025b8af1786610d4f65912585c2cfb  libgfortran/intrinsics/gerror.c
! 5ec213c201f5cc279ca2fef8713bbd2a  libgfortran/intrinsics/getXid.c
! 093a5e53be6e91bf9d9fa64547842957  libgfortran/intrinsics/getcwd.c
! 6af6ab78af7f34e547a2061a2073a97d  libgfortran/intrinsics/getlog.c
! 95b49fea460bb4fe4f10ccf1381a8a5d  libgfortran/intrinsics/hostnm.c
! f73f17fe75d9e87992b83cd889f03eb6  libgfortran/intrinsics/ierrno.c
! 982be69f08c0616dd6398ecdaf910158  libgfortran/intrinsics/ishftc.c
! bd7d3d71d2365707603bba30a0b69f29  libgfortran/intrinsics/kill.c
! e28e9d5281a3cda2c004a2f7477a88e2  libgfortran/intrinsics/link.c
! 45801e4104bb0730edf03171dd044e63  libgfortran/intrinsics/move_alloc.c
! d4804ea671d9b2fd39d87b719bff93de  libgfortran/intrinsics/mvbits.c
! cc6b766e477364673f6055c4038af7dd  libgfortran/intrinsics/pack_generic.c
! a7a8a8ce63e547db13d0e57ddeadae8d  libgfortran/intrinsics/perror.c
! 33a0f958d466c29ebd956413b9266e39  libgfortran/intrinsics/rand.c
! f19f20fde5fa34cac20cb707703775f0  libgfortran/intrinsics/random.c
! 4e003061f8f287eb2dd5ccdd49aa1679  libgfortran/intrinsics/rename.c
! 3da0ade0bbdcdd88462d8b66a0fabd05  libgfortran/intrinsics/reshape_generic.c
! cae9765457d7072b8afed0365157d64b  libgfortran/intrinsics/reshape_packed.c
! 5af7289a7c532b1a84e43071c1369bbd  libgfortran/intrinsics/selected_char_kind.c
! 9c2f60ae55a85643953fa3058d438cbb  libgfortran/intrinsics/selected_int_kind.f90
! 4a51e480dcd30693dc1d4ab2a39a7f14  libgfortran/intrinsics/selected_real_kind.f90
! 1fd44e2277008e7d3ca6e3f164cd56b4  libgfortran/intrinsics/signal.c
! f575dd2272993e60c667f31cbf9b61e1  libgfortran/intrinsics/size.c
! b8ce84bee9e570b1990aec696d0b700c  libgfortran/intrinsics/sleep.c
! 6340dbea706170c6a0ae1d618386821a  libgfortran/intrinsics/spread_generic.c
! f757ee7c05b4b64c0b030acbf4dacf1e  libgfortran/intrinsics/stat.c
! 19afa43adb26fed1dccaee254d455365  libgfortran/intrinsics/string_intrinsics.c
! 2d41bbf840ed5d6f38ac03b528c9efc6  libgfortran/intrinsics/string_intrinsics_inc.c
! c5abf40a776a39907813c587fdebc2aa  libgfortran/intrinsics/symlnk.c
! 1570117e9098a3baf588c0c83e64c1c0  libgfortran/intrinsics/system.c
! 9b63ac399bd60426dd011db9d6deabd8  libgfortran/intrinsics/system_clock.c
! 2a109c8f0c90c055e00d74895a4ab070  libgfortran/intrinsics/time.c
! b6e52668e3894622ea89b94c199d26ae  libgfortran/intrinsics/time_1.h
! 61bec0e62526e49a59541acc89b80cb0  libgfortran/intrinsics/umask.c
! b30f2596faa8d21830b04696efd1b4b0  libgfortran/intrinsics/unlink.c
! c0483537bb9ba818ee3aa55cc04f0583  libgfortran/intrinsics/unpack_generic.c
! d6fdb691f829666c2f963b0f5bc54baa  libgfortran/io/close.c
! ffdfa716b85d33300947cfb00ac4a60f  libgfortran/io/fbuf.c
! 322bb696e6a56c4c313c89de1d12a62a  libgfortran/io/fbuf.h
! 72fedb723a832841438b848e0276dc46  libgfortran/io/file_pos.c
! c867aa8a138f90ad717ed2067fbe6dab  libgfortran/io/format.c
! e1e47a4933e8cc465c4d32cce0d04e0a  libgfortran/io/format.h
! 90cec54bd94497b006b00584256aad6f  libgfortran/io/inquire.c
! 354cc9a41c9be8fc58337ee054842616  libgfortran/io/intrinsics.c
! 45793601b3127f64e8988f7cf1a82ea4  libgfortran/io/io.h
! 3ee5e675423e68221227de63841b3b78  libgfortran/io/list_read.c
! aeb36c8b750c3ab57c7d50774a26e33a  libgfortran/io/lock.c
! b33b5e02e59f46d957995c354c77f4c9  libgfortran/io/open.c
! 840308a2421c73db0a7e6ad265f3177e  libgfortran/io/read.c
! 622a2a1592ced0d5e333d7d3735be2ee  libgfortran/io/size_from_kind.c
! 7bf113902f35f1e7e886d6638f9c6e6c  libgfortran/io/transfer.c
! e4c9061ab7a41f4935f0b0ad09a288ce  libgfortran/io/transfer128.c
! 69d3d919a65ad9154c7967beafdd4fbc  libgfortran/io/unit.c
! 3703118401401376f41ff9bf56e1eba7  libgfortran/io/unix.c
! 3aca9110d24b2377aff7692c40f8d4c0  libgfortran/io/unix.h
! 26f7567b4b956b10959a981cd4f003e7  libgfortran/io/write.c
! dab1a1143c48fb478a836dd3f0bb7619  libgfortran/io/write_float.def
! 2d7080a94650ac19727c9b138db44765  libgfortran/kinds-override.h
! 92ef6b7697422b2ad083fa00fb93d763  libgfortran/libgfortran.h
  2527bb19b82f08b34038b07b172d029d  libgfortran/libgfortran.spec.in
! 7f7fab9c4011d09ba1d6e9ee8458421c  libgfortran/libtool-version
! 2a33924dbd2943c881a8d51013de7d77  libgfortran/m4/all.m4
! b5adfa07e0f97c8e2b3e06cd3a1b46b8  libgfortran/m4/any.m4
! 28b0d53b557eba873b09c4d488d0d336  libgfortran/m4/bessel.m4
! 542b0f93473218cbe93752cefa53d0b3  libgfortran/m4/count.m4
! 957f28c66fdd063e59cdc2a4aa2bccb6  libgfortran/m4/cshift0.m4
! 83d8587de3c624e307ceed457f0a1ab1  libgfortran/m4/cshift1.m4
! a983180c33ab6c71d6534b385c1bc3f5  libgfortran/m4/eoshift1.m4
! 17c5b3785661670259a1694cb159a102  libgfortran/m4/eoshift3.m4
! acd6117f19aafabeef6cf575d60c67f9  libgfortran/m4/head.m4
! f55146372afe57b734d8a79df2a334ce  libgfortran/m4/iall.m4
! 69222e6343b1ebae64d04a038b446709  libgfortran/m4/iany.m4
! 9cf01e318db9cda951179249f5061b79  libgfortran/m4/iforeach.m4
! 8753bd2ebd34184c5e2986bc1bbb3944  libgfortran/m4/ifunction.m4
! 65c74097a4d5858f60becfb67e915c5e  libgfortran/m4/ifunction_logical.m4
! 268ae83d2e1bd8687bae558a27b20ee0  libgfortran/m4/in_pack.m4
! 6c6f68ddaa1c50264d3995d155224c14  libgfortran/m4/in_unpack.m4
! c38ce10c4a55805896c58af920c1ec30  libgfortran/m4/iparity.m4
! 0d1690940d450a19bacdbcc7df3dc877  libgfortran/m4/iparm.m4
! 29e5d4d6cb74ab5b87a1cb14fac5ec04  libgfortran/m4/matmul.m4
! f5b3dc30d43e7eb4c3aaef2926b47289  libgfortran/m4/matmul_internal.m4
! fcb69cf3a35424c795d2cad8dbf956a9  libgfortran/m4/matmull.m4
! 88e4b68aeb1a50127c5a0c67a9e59b52  libgfortran/m4/maxloc0.m4
! 221ebfa6e894bacd5fe2800f50ef97f1  libgfortran/m4/maxloc1.m4
! 422d069cd54d10e9c1518ff382bf6778  libgfortran/m4/maxval.m4
! b02fd1905b50a4b8f18272fc25da51e7  libgfortran/m4/minloc0.m4
! 9fa7aac955d86edc7a73bf91f20b4e0e  libgfortran/m4/minloc1.m4
! a48832d73a5609feb7c71c103b5b7c5c  libgfortran/m4/minval.m4
  6d8cbcd1d1489f643839e7ac2c00a736  libgfortran/m4/misc_specifics.m4
  9b81a1acd09bfbf8e218728b9c6197c2  libgfortran/m4/mtype.m4
! bf1b406c03b3d1f08eeca91b270bc02f  libgfortran/m4/norm2.m4
! a66366a5e99d61a78fabdb429f456678  libgfortran/m4/pack.m4
! c8fad89f17cb443e6c44a816829bcc4d  libgfortran/m4/parity.m4
! c56a6a7bab14efa757f95c3152d9581d  libgfortran/m4/pow.m4
! 6fd7cdce8008db171f2105587f40ef07  libgfortran/m4/product.m4
! 5fc00d49fc7541a31cabaa9552451ca4  libgfortran/m4/reshape.m4
! b08cc719fbe473e01a25fef0b6afd68c  libgfortran/m4/shape.m4
  2478642167175833018a8947cc98b3fd  libgfortran/m4/specific.m4
  4c60f3c3d2948ee7eb2668aa9cc61a04  libgfortran/m4/specific2.m4
! f8fd822329b6ef545539c23078da2bde  libgfortran/m4/spread.m4
! 40a7898175637f76f9ec3fea46b24a21  libgfortran/m4/sum.m4
  0ad0318f00c85db29d184dc3dff12276  libgfortran/m4/types.m4
! f53e7864169abcd13c87797406f8b981  libgfortran/m4/unpack.m4
  cef25b7bceffde6fc5728a173e842a62  libgfortran/mk-kinds-h.sh
  764579ddc54916182288fc40bdf0e544  libgfortran/mk-sik-inc.sh
  f81db480cbfdc2b1d2291623c6cadb5f  libgfortran/mk-srk-inc.sh
! 199d7d444fc282ef629d26f6d1232a15  libgfortran/runtime/backtrace.c
! c88e7ed76a15e57bb7ed9b8595c50fae  libgfortran/runtime/bounds.c
! 64e508edf262ebdb62d2ebccb1c14baa  libgfortran/runtime/compile_options.c
! 1a88ad180dd7e38c2ac0a3e9c7abc699  libgfortran/runtime/convert_char.c
! fc23eda7b420476c3f994245896a36ba  libgfortran/runtime/environ.c
! 4375c9690aa0e4075fd0727f01cfa58c  libgfortran/runtime/error.c
! d84445997cc0caed5b9714727e659cfa  libgfortran/runtime/fpu.c
! 7a146055912cca25ad097fcb5b8452de  libgfortran/runtime/in_pack_generic.c
! d9b6faa6239020a4c8bca97796c68e14  libgfortran/runtime/in_unpack_generic.c
! 6a80fba11c6a97151c995bc2e872803d  libgfortran/runtime/main.c
! abfcfbec646c64dd69459dccd2260330  libgfortran/runtime/memory.c
! 799058eb0a08de57771d8ea013cf0762  libgfortran/runtime/minimal.c
! a0eebbac95bbfb27f4ef589bcc6afa01  libgfortran/runtime/pause.c
! 09915ef5b0fc27cca5e3ecb9d9a7f255  libgfortran/runtime/select.c
! 0167f149b60fba9bbb7aa38be6d7641c  libgfortran/runtime/select_inc.c
! 51b81112d32fac007d49077ab9183d47  libgfortran/runtime/stop.c
! 205895fdf6a08ae7f8864a082ef09a3f  libgfortran/runtime/string.c
  5d4950ecb7b26d2c5e4e7b4e0dd74707  libgo/LICENSE
! ea0f4a1480efcc07a20a821d9436da7e  libgo/MERGE
! 64151242bc367050b5195ac9d30096ac  libgo/Makefile.am
! 9233b2ed0afc20f6d7146037708d868a  libgo/Makefile.in
  3a55d95595a6f9e37dee53826b4daff2  libgo/PATENTS
  3a3d1f64c9a8149b9c46b1dcdd8df630  libgo/README
  d46376034c1fd6df47c8ba2cd5de9d0a  libgo/README.gcc
! b373c4f422ac2181d23d1cf35833507c  libgo/VERSION
  4f1e6c347a5a119166bee289ca2e824c  libgo/aclocal.m4
! c9bf0d4d612472a5ca23d60dc326006b  libgo/config.h.in
  ad1ce707d70b18d5d14bdbcfef82a9bb  libgo/config/README
  9a6e33ac95f7d5857d34f53bde4cb610  libgo/config/go.m4
  ee0c1ad26a748f688dcc7bdb83fb9ba1  libgo/config/libtool.m4
--- 64205,64984 ----
  7fcae7dd71256c9d8fc486e6b5aee74c  libgfortran/ChangeLog-2014
  9e2925d753b1ba53f0dc0754d82741eb  libgfortran/ChangeLog-2015
  7571681cce824f7aa6dbe65248c60423  libgfortran/ChangeLog-2016
! e9051611daf30b5672939006d2ab936c  libgfortran/ChangeLog-2017
! 5af4177470c6f7885e90f58b684006c0  libgfortran/Makefile.am
! cc4514b22f51958cdc8dd2d31b8e5607  libgfortran/Makefile.in
! d7427a1e227b48a1368e4fc5f66e96f6  libgfortran/acinclude.m4
  5a2806274e28e8c5f15d40fb2fff1f66  libgfortran/aclocal.m4
! c7e071de9ac67b474fe9654d54484dad  libgfortran/c99_protos.h
! e705982628203a7cab86f885de9a2f94  libgfortran/caf/libcaf.h
! 25c4950354f65d24aed8e435c80b6ce4  libgfortran/caf/mpi.c
! ccf9a4f0359b4b9b0cbf8b1ba172e058  libgfortran/caf/single.c
! baab4c4e4e1670f93c069ab7eb849359  libgfortran/config.h.in
! b593738e5457d47a2fa5437bae03bc78  libgfortran/config/fpu-387.h
! 292e8beeece3c96500af27fc6b8d5196  libgfortran/config/fpu-aix.h
! 9cdeddfa60a88e5655e67ab5858f021d  libgfortran/config/fpu-generic.h
! 9608768cdcf8e3df15eb1ed8bbaf269d  libgfortran/config/fpu-glibc.h
! 8704b108a663a93470f8800c80be7069  libgfortran/config/fpu-sysv.h
! d2a2992726bdb52cb6fc57e6118a4aea  libgfortran/configure
! f29ee72c2efd527cd52ef098d77a11ed  libgfortran/configure.ac
  26d3d2f20028a910fbd80fc9c770806a  libgfortran/configure.host
! 0a7fc59f8ecbcabd637599fd3f4628c0  libgfortran/generated/_abs_c10.F90
! 7330f9d2139fdc8dac9d71a46ea69ea1  libgfortran/generated/_abs_c16.F90
! ab1dc94ed007ca09098ef92b28f2f525  libgfortran/generated/_abs_c4.F90
! 844f271b95386fe09c5410b5a56a26ef  libgfortran/generated/_abs_c8.F90
! 41f5330e8503563d600bc5a61b669ee2  libgfortran/generated/_abs_i16.F90
! dee87c697c732dec5392bf935bedfdc0  libgfortran/generated/_abs_i4.F90
! 18ae0c3b74329c5f653991827ef87b76  libgfortran/generated/_abs_i8.F90
! d653ccedb2354eb73b6a02bcf2e17c6f  libgfortran/generated/_abs_r10.F90
! 5f4e60fdcb9f4295dc6cd772740a097e  libgfortran/generated/_abs_r16.F90
! 18a45f62f2fae7aa15d1683ba8228391  libgfortran/generated/_abs_r4.F90
! 145e4952432ec546af1b1d5af3d6bd5d  libgfortran/generated/_abs_r8.F90
! ea827d388eb81eca3a258e6d9ff85dcd  libgfortran/generated/_acos_r10.F90
! 57e4854b7706623229ef32f1282d4041  libgfortran/generated/_acos_r16.F90
! ac3c7907a5b3d906bc8e29870b88aa81  libgfortran/generated/_acos_r4.F90
! 79e21c6cceecb4a05c3bf5b6a43941e0  libgfortran/generated/_acos_r8.F90
! a4fd716ec360130cce6c78b20a904799  libgfortran/generated/_acosh_r10.F90
! 62e98447ffb9c8c6c2488761968089af  libgfortran/generated/_acosh_r16.F90
! 18f8f768b5524d789d01097c4afe0b72  libgfortran/generated/_acosh_r4.F90
! 373cc1391836fdc61d4be96f3c30922f  libgfortran/generated/_acosh_r8.F90
! 778e584f5057ae14caf3d46c73cbdda0  libgfortran/generated/_aimag_c10.F90
! 099abc978acee7ff6311878d56ede0de  libgfortran/generated/_aimag_c16.F90
! 4d4c7aa531692dd6caa7d11fbd2a04a7  libgfortran/generated/_aimag_c4.F90
! 3e55a34ead016df60b0d5496497d9385  libgfortran/generated/_aimag_c8.F90
! 3f1b43c6ff9d4eb6f60ce1f527903447  libgfortran/generated/_aint_r10.F90
! 57c0069e3d751d6ea02a5b857bd14137  libgfortran/generated/_aint_r16.F90
! e14a280063d9546d2d9788b60b6e965c  libgfortran/generated/_aint_r4.F90
! 5c9476ae676a32bf4870af553d0735ae  libgfortran/generated/_aint_r8.F90
! cf3f011ece434e3c60ca398ab047fd68  libgfortran/generated/_anint_r10.F90
! f65523779314241409b36247a8ddcff1  libgfortran/generated/_anint_r16.F90
! 42ce8b3e0d8f64dc85dfd5d9bd2bb147  libgfortran/generated/_anint_r4.F90
! 4854f4e7ce495945c2039574de154f5a  libgfortran/generated/_anint_r8.F90
! 281fec67e6aaaba07ec664eed7582fc3  libgfortran/generated/_asin_r10.F90
! 61f84057017836dd6f0a086618b6823c  libgfortran/generated/_asin_r16.F90
! e5565ab85e4d1e3219a2dedc819ce284  libgfortran/generated/_asin_r4.F90
! 733f4f368aa9f0cb24a0110e5b3008de  libgfortran/generated/_asin_r8.F90
! a37f32514368f676e312bea03b567bb6  libgfortran/generated/_asinh_r10.F90
! 1d202484403298a6f4cec7ed004989fb  libgfortran/generated/_asinh_r16.F90
! fe7eecdad563c5b55cc16ba1ea0fe99c  libgfortran/generated/_asinh_r4.F90
! 1e65b8da45ff7a2f4f6e2918dfe5a836  libgfortran/generated/_asinh_r8.F90
! 758c0f939a992441c811412672018737  libgfortran/generated/_atan2_r10.F90
! 9c10a64232764acaee469840588bb2ff  libgfortran/generated/_atan2_r16.F90
! cf13bf3be3bd8721a4c27f3ada1ac2aa  libgfortran/generated/_atan2_r4.F90
! 5eb305d16a53389bc0fa3fca6cc7986d  libgfortran/generated/_atan2_r8.F90
! 1546de8be7ed0feb3714e3b43a86dd98  libgfortran/generated/_atan_r10.F90
! e04c0437bfee3f36a63e12adcaa873bb  libgfortran/generated/_atan_r16.F90
! 674f5af83c04d7f82c7709fa1c90296a  libgfortran/generated/_atan_r4.F90
! 0f6fff8ee949781b3b58d3979e365626  libgfortran/generated/_atan_r8.F90
! 87b6bd4ddce65fcbee9c2ed7b8a0789b  libgfortran/generated/_atanh_r10.F90
! 00e1effbc91245d171138f7b05d16ddc  libgfortran/generated/_atanh_r16.F90
! c7745701759dd1830fc0a3aa03162569  libgfortran/generated/_atanh_r4.F90
! 9a9ae07c44f1bdc4dd54b5c04249306c  libgfortran/generated/_atanh_r8.F90
! 6599403944e9af577669c157a4d83b26  libgfortran/generated/_conjg_c10.F90
! fc9afee4a06ae747d4978c936a4a90a0  libgfortran/generated/_conjg_c16.F90
! be5fd9b917e23aa83e83c4af1d777ebc  libgfortran/generated/_conjg_c4.F90
! 32d5c5c4b55b72616fd002af2ca81140  libgfortran/generated/_conjg_c8.F90
! 5c06e80488b5488fc8bb43b702fdb14f  libgfortran/generated/_cos_c10.F90
! 82d8ebeedc80f6d6ce16d438110de808  libgfortran/generated/_cos_c16.F90
! fb66bd47d6ca8cf7c1ef6306eaf611ba  libgfortran/generated/_cos_c4.F90
! 1c121a4586cdea850c05d60bec2af9dc  libgfortran/generated/_cos_c8.F90
! ef6e9f7bb693e4ff2bdafb156332de22  libgfortran/generated/_cos_r10.F90
! 6c909701d348e8f6795eb78391d8308c  libgfortran/generated/_cos_r16.F90
! 116fe13ff183055feb05a1808db030cb  libgfortran/generated/_cos_r4.F90
! 47260b986f7625be74d3ee7b030896aa  libgfortran/generated/_cos_r8.F90
! 8e020c521b1d2f76400a1e730b5cadf2  libgfortran/generated/_cosh_r10.F90
! 6cfd88c93bf5a7e57d52cb9f67684cc1  libgfortran/generated/_cosh_r16.F90
! f74f8b4d87e76f965f728da0d3eff7ee  libgfortran/generated/_cosh_r4.F90
! 3ede9d87bca2248952dd4a9a80ebda24  libgfortran/generated/_cosh_r8.F90
! 58b11cefbf9c27b8e4d8ddcb12f2dd4e  libgfortran/generated/_dim_i16.F90
! 1af92bc37f3fe8c145b0dabc89000276  libgfortran/generated/_dim_i4.F90
! 66af4829f9762ed9cfd69bf5e46d5cfb  libgfortran/generated/_dim_i8.F90
! 3d8d3952ee3ab25d2ef5663bf6e2bdbf  libgfortran/generated/_dim_r10.F90
! d87f904d22776cefb861c805c55676c1  libgfortran/generated/_dim_r16.F90
! d3b9f7931361c50b55f4a9f4aa0149a1  libgfortran/generated/_dim_r4.F90
! f7264bb5857321e86b0cb3f8680c48b3  libgfortran/generated/_dim_r8.F90
! 12fa897c83c1706097c674516c825481  libgfortran/generated/_exp_c10.F90
! f21e90e89c75ddeb77865ee8de19156e  libgfortran/generated/_exp_c16.F90
! eb2bff9aa9a6310d91a1a6ad68276cab  libgfortran/generated/_exp_c4.F90
! 9ce1c5617663293575102cbae647d889  libgfortran/generated/_exp_c8.F90
! ba3d4e4eb068c7de62d9616f8416edf2  libgfortran/generated/_exp_r10.F90
! ee600a0e86ab29dfcb73522fa1d71a3b  libgfortran/generated/_exp_r16.F90
! af59bb6ed5bd17407064539a2bac4097  libgfortran/generated/_exp_r4.F90
! 59e21ecd429a01c7c6efb189656f1b83  libgfortran/generated/_exp_r8.F90
! 190ab81c1adf7cd2aff55f2b899fdadc  libgfortran/generated/_log10_r10.F90
! e6f5664b3ba83ed83d004ebb9d222146  libgfortran/generated/_log10_r16.F90
! b9afbbca5a448ebb11f7f2ac9b50e121  libgfortran/generated/_log10_r4.F90
! 02461177b92402e0ea74b7f475938fff  libgfortran/generated/_log10_r8.F90
! 23b9177e8704fad7f2782d5c790dc9e5  libgfortran/generated/_log_c10.F90
! be7cc2901b91acbcdb6039b72268aafb  libgfortran/generated/_log_c16.F90
! 93c84364ee30b76ae8be9eca0d408fc3  libgfortran/generated/_log_c4.F90
! 3cdcb1bc48f3e294b8b9fccaecd4eebf  libgfortran/generated/_log_c8.F90
! ec7bbe06d55ab7ec119ede0b67715ec2  libgfortran/generated/_log_r10.F90
! 83aaac8aff96a27d4eb8ec1c1751bdaa  libgfortran/generated/_log_r16.F90
! 2b0e4971d275bb7ea004c48dff3b1881  libgfortran/generated/_log_r4.F90
! 91a4c14dc91ea83d2794de662fa10bdc  libgfortran/generated/_log_r8.F90
! ae799e7a0bc80a913957f8e7a035ee26  libgfortran/generated/_mod_i16.F90
! 1ed0cc44abe156f374e912a6868f5264  libgfortran/generated/_mod_i4.F90
! d5e1f797ec0890181e4e868cf0c983c5  libgfortran/generated/_mod_i8.F90
! b8d818ef73cedc934800b1b4563c06a0  libgfortran/generated/_mod_r10.F90
! a398cdd81e91e5776f60caf8a3a0499a  libgfortran/generated/_mod_r16.F90
! bdded915305b9a44d3345595431b832c  libgfortran/generated/_mod_r4.F90
! a23ffa71fc67620e9ae23fa2bc1deb2a  libgfortran/generated/_mod_r8.F90
! 8fa9c177aee9d85635eef03a2879740f  libgfortran/generated/_sign_i16.F90
! dafab7181215ebba7972e356a893a059  libgfortran/generated/_sign_i4.F90
! 2d7522c8d4a1a90f042d9709da3d9f65  libgfortran/generated/_sign_i8.F90
! dfb618826d039a59bc4cf73757aed117  libgfortran/generated/_sign_r10.F90
! a3700ed59d11f79c576b4bb92feea286  libgfortran/generated/_sign_r16.F90
! 9fbb9811782730b2931e165f714e7f98  libgfortran/generated/_sign_r4.F90
! cf0ddcbfa289e22a135432f1de639187  libgfortran/generated/_sign_r8.F90
! dff57ff8b5edb3f03c2f6be98947e656  libgfortran/generated/_sin_c10.F90
! 08fd7a06e0a6e24f8cf06387d284fc34  libgfortran/generated/_sin_c16.F90
! 330c00d9b50eec20f4faab9aa0dc634d  libgfortran/generated/_sin_c4.F90
! 9b75e1ac59ee4227bc83981110e43bc8  libgfortran/generated/_sin_c8.F90
! 0fabb11fd1c0d6c78134eb20586b8fd1  libgfortran/generated/_sin_r10.F90
! a639349613851482754b30b5746dde1b  libgfortran/generated/_sin_r16.F90
! 84930fc264ddbc8bfe91bf1f3581f661  libgfortran/generated/_sin_r4.F90
! bb0cb9e4adf2f0c751b30a4580495cf2  libgfortran/generated/_sin_r8.F90
! 2ec1309994c2192ad3994a0091181521  libgfortran/generated/_sinh_r10.F90
! 6c2ea88384637202e0c6a2dfd5114887  libgfortran/generated/_sinh_r16.F90
! fa2d1ef8eb1f33123b994acce015912c  libgfortran/generated/_sinh_r4.F90
! e7b1bf3edb0ad2d8daf278d1c4f6c94e  libgfortran/generated/_sinh_r8.F90
! f3ff6845933747bcc834a5b39adbb0f4  libgfortran/generated/_sqrt_c10.F90
! b3f4ad9fbc5398ca363264d04a2d2713  libgfortran/generated/_sqrt_c16.F90
! fa771d34a0f1a67fab11b24bb08b6550  libgfortran/generated/_sqrt_c4.F90
! d98afc59202182c7600fd47ed7be85bf  libgfortran/generated/_sqrt_c8.F90
! ae52e84edb0c391f1a6af774ae5410b3  libgfortran/generated/_sqrt_r10.F90
! b6f6c6894b8b1ee0837b1cc106255d24  libgfortran/generated/_sqrt_r16.F90
! 4931d486387e42a2849c2925f069e22b  libgfortran/generated/_sqrt_r4.F90
! faf3aabb07ccd91ef5429120442e7780  libgfortran/generated/_sqrt_r8.F90
! 82b0976d7a0bb8da07a62d26aa1fdbc6  libgfortran/generated/_tan_r10.F90
! 5f4a9a85e10f8123434ec9649ed1b9c5  libgfortran/generated/_tan_r16.F90
! 9e4af59459324462382a9cd842d8aec0  libgfortran/generated/_tan_r4.F90
! 136d365f8d35f18737ff9c291dfaf347  libgfortran/generated/_tan_r8.F90
! 0bce28b8ae5b5a115010d93823709c7b  libgfortran/generated/_tanh_r10.F90
! 33f206dfff107194cfc548563d30acc9  libgfortran/generated/_tanh_r16.F90
! a3b1d7515e9524d2a697b2c0cd3056d1  libgfortran/generated/_tanh_r4.F90
! 427f4ff51f191ff89c67f78e84c21fbf  libgfortran/generated/_tanh_r8.F90
! c303655eab8b728bdbc6cb56c4747803  libgfortran/generated/all_l1.c
! f7844928615b897ea108a0c8bc991534  libgfortran/generated/all_l16.c
! 538b14db942897c7298ff8e42acf19a7  libgfortran/generated/all_l2.c
! 0afba02cac222c332bf5bab2f5d7fac3  libgfortran/generated/all_l4.c
! 0b89793ffa8b1ab7310ad188bea59b52  libgfortran/generated/all_l8.c
! e3b0f1acb0b53f746c1d9eec8a2074c9  libgfortran/generated/any_l1.c
! a0314fb1dbfa3f420d5ba63e8da82b91  libgfortran/generated/any_l16.c
! c9593d681befbd7f480be1aeaede777c  libgfortran/generated/any_l2.c
! 467f4b3911dac163533474addb6242b0  libgfortran/generated/any_l4.c
! d9146ad961ff41b480c26dcd6f54d9b9  libgfortran/generated/any_l8.c
! 86cc596c7c95c5e9b58489a4ab96d212  libgfortran/generated/bessel_r10.c
! 716516272b54d75a1171a165a95cb7e8  libgfortran/generated/bessel_r16.c
! f433859f2e3e00682e0ed39ab05161b7  libgfortran/generated/bessel_r4.c
! 4232248e266a23bd60b14ab2b50e9d9e  libgfortran/generated/bessel_r8.c
! e52f157a624d43801e8dc608f912c389  libgfortran/generated/count_16_l.c
! 148143bf9ba452d8270acb1d181fdb83  libgfortran/generated/count_1_l.c
! 39939a570daa250db3eebddec804d308  libgfortran/generated/count_2_l.c
! 589f865b2849de1ad527b19193aa120f  libgfortran/generated/count_4_l.c
! ea6b10df1f1dbd0ff8bfe82058f68a5a  libgfortran/generated/count_8_l.c
! fa2153b9cb30ca9b5e34c67becd4f96c  libgfortran/generated/cshift0_c10.c
! bebcae79eebd7fb2244399040037e01e  libgfortran/generated/cshift0_c16.c
! 7136b62963a3307c128b5f60c30504bc  libgfortran/generated/cshift0_c4.c
! 761c939f0fb282e679c40a551f19c3be  libgfortran/generated/cshift0_c8.c
! 070b612c2d5354156384db41dc492a7d  libgfortran/generated/cshift0_i1.c
! 8f2c277246373c625a405c0abebc2fdb  libgfortran/generated/cshift0_i16.c
! 6dd28ba90cd64a91f00846fcea135e9e  libgfortran/generated/cshift0_i2.c
! 6486f9d9d58aec8d508d7d92102b46b5  libgfortran/generated/cshift0_i4.c
! 34c9820048d23463c17d9d0ae73778ed  libgfortran/generated/cshift0_i8.c
! 439d091c1341b383403282df97b19810  libgfortran/generated/cshift0_r10.c
! 8f625e681405ac1dfb032be9409a6516  libgfortran/generated/cshift0_r16.c
! 37fee1aec1757b5d8842a1483b95cc5c  libgfortran/generated/cshift0_r4.c
! fa89c91ac6f26235a66125eb71651ed8  libgfortran/generated/cshift0_r8.c
! be9d711f5d3bc0f9cb1c919d771bd1d8  libgfortran/generated/cshift1_16.c
! c501a86a96c0e57631715ca616aa4397  libgfortran/generated/cshift1_16_c10.c
! 23976b415c2d220ed375460783366c1c  libgfortran/generated/cshift1_16_c16.c
! 9132217d925fb39e23e519483ee96cd0  libgfortran/generated/cshift1_16_c4.c
! 7e2d6eec3dcf87a3725e78eae39a0315  libgfortran/generated/cshift1_16_c8.c
! b41ffec2cd9733a5930e818d26706df5  libgfortran/generated/cshift1_16_i1.c
! 0728b18108dc0f4d1ff12895f9ca1950  libgfortran/generated/cshift1_16_i16.c
! 9962d39bb22ad13669130d6276b3486b  libgfortran/generated/cshift1_16_i2.c
! fd0587ab02f3ed3299244cd91dae3f44  libgfortran/generated/cshift1_16_i4.c
! 0de8d502ab784a57caba5702d0204f44  libgfortran/generated/cshift1_16_i8.c
! f93183b511f038e704836db9340a70f8  libgfortran/generated/cshift1_16_r10.c
! 7b12025f6662604bb6939c1083cf8c19  libgfortran/generated/cshift1_16_r16.c
! 01c90318642b92114874c2fa0d786449  libgfortran/generated/cshift1_16_r4.c
! e3ed333e028a528b61836ef170bb4584  libgfortran/generated/cshift1_16_r8.c
! 58595473eaec3304758060a23d448326  libgfortran/generated/cshift1_4.c
! 5a85ad4ba994c256e153c921cf2387ae  libgfortran/generated/cshift1_4_c10.c
! a481cb6fc35f3893eeca279fc3ef805e  libgfortran/generated/cshift1_4_c16.c
! 6ea1f293152aee2b7d0ef225b274f022  libgfortran/generated/cshift1_4_c4.c
! f36b759ca13ee4c6d3bba068550b7be8  libgfortran/generated/cshift1_4_c8.c
! 4534dd7fddaa5a4859f055d3b6fddf3e  libgfortran/generated/cshift1_4_i1.c
! 10bb1e9fc8e99f6cd3d3faca2fd5d264  libgfortran/generated/cshift1_4_i16.c
! a7c0cd03b0e82c08e3418bf20d99e4bf  libgfortran/generated/cshift1_4_i2.c
! 12dabbbff12dc7aac298d3a60b0aea59  libgfortran/generated/cshift1_4_i4.c
! eb34f7efb1f3e7a84157731f7132518c  libgfortran/generated/cshift1_4_i8.c
! 9f13dbad72d83cb6c3ded2d1e85fabe8  libgfortran/generated/cshift1_4_r10.c
! 46692beaa1b9a4bbc79c2c4fbafe8163  libgfortran/generated/cshift1_4_r16.c
! 09cee81df1df46f6f8614b5b44f0b9b5  libgfortran/generated/cshift1_4_r4.c
! 6ac86009d6fe91e069e40359fc357fad  libgfortran/generated/cshift1_4_r8.c
! 4c547802774ba4df50c307c459f3bd71  libgfortran/generated/cshift1_8.c
! ab23b7f67817d93360b3150b31c0f223  libgfortran/generated/cshift1_8_c10.c
! 825b0c0d1d40948b885b1400daee46ee  libgfortran/generated/cshift1_8_c16.c
! e68b788d151be08839e5dd7ba58485d6  libgfortran/generated/cshift1_8_c4.c
! 94daf171eda1e5d41ceabd2b28fc386b  libgfortran/generated/cshift1_8_c8.c
! d4b96c5ca2a753a941dfa1c9225c3088  libgfortran/generated/cshift1_8_i1.c
! c3959c81c5c231efabd1f551afec9306  libgfortran/generated/cshift1_8_i16.c
! 487ca306561c9ff59f3ac699e6955519  libgfortran/generated/cshift1_8_i2.c
! 65fabc52cabf77b8c7483ee3b9b3c9b9  libgfortran/generated/cshift1_8_i4.c
! 175dd47e7220f141cdb0273160fe6d3c  libgfortran/generated/cshift1_8_i8.c
! 29524fc9932cd0aa4fc1e8ac256377cb  libgfortran/generated/cshift1_8_r10.c
! f07cc20640c0068882929599f78da08c  libgfortran/generated/cshift1_8_r16.c
! 8d761217f2d567b06cbb1f3f1f514804  libgfortran/generated/cshift1_8_r4.c
! ab46411b7faf70cb0c2006303396e5fd  libgfortran/generated/cshift1_8_r8.c
! 7fbed6a0f01d83c28bb63a9c0adb875d  libgfortran/generated/eoshift1_16.c
! a532e0cc9aa461a952e431b3e89292cf  libgfortran/generated/eoshift1_4.c
! 4eb86d4526282b701493d8d0593a2ad5  libgfortran/generated/eoshift1_8.c
! e63e558fcd0d96828718dfbe206d616a  libgfortran/generated/eoshift3_16.c
! f94f97da4abc1d946acb9e4402e24710  libgfortran/generated/eoshift3_4.c
! 50d4b19f84dff69eba7f4df9f48ddea2  libgfortran/generated/eoshift3_8.c
! db59837fb7676fa2641b93827d15e661  libgfortran/generated/iall_i1.c
! 1795fa31a416d77ab6bb13bdbf3cf596  libgfortran/generated/iall_i16.c
! bdd14e2ec2eb31c646430d8c9788c76a  libgfortran/generated/iall_i2.c
! b33f028fae18e5db5ea6d49027f50ed1  libgfortran/generated/iall_i4.c
! 71cfaa189926c4d6fc9cb1575a002c77  libgfortran/generated/iall_i8.c
! 7fdb6f166de6af331a5c88b301a7cd28  libgfortran/generated/iany_i1.c
! 9e5acadb8d286b9cc3f0cba115b0595e  libgfortran/generated/iany_i16.c
! 017ac9fa78b4d23d71096f5093947944  libgfortran/generated/iany_i2.c
! 1d4093910256494c60ffd0ed856e3681  libgfortran/generated/iany_i4.c
! 24a15c404c8d2b661f5f069c78425d81  libgfortran/generated/iany_i8.c
! 021aa0d88d779962a0b152a2da8df305  libgfortran/generated/in_pack_c10.c
! 6d6cafded36ad2dbaec475e2d77e2754  libgfortran/generated/in_pack_c16.c
! 068a6421d69992a18b8a91afb51e9c4c  libgfortran/generated/in_pack_c4.c
! e94bfeb7bd9aa45c1203f732495c3324  libgfortran/generated/in_pack_c8.c
! ea7d6bc65d0fa226dbce84bab07eca41  libgfortran/generated/in_pack_i1.c
! fef9465155f48219a9c2a9a1a7a160cf  libgfortran/generated/in_pack_i16.c
! 7513100983acd4543112903f71e9aca5  libgfortran/generated/in_pack_i2.c
! 09b98a9ea503eafce0e02a2043a92983  libgfortran/generated/in_pack_i4.c
! 122fb383adc707c102f4e8e0b5a03b70  libgfortran/generated/in_pack_i8.c
! b871a05a746d5c148c3e88e0e4c1feb6  libgfortran/generated/in_pack_r10.c
! a1da7a137cd88cede0019b23e0aecbcd  libgfortran/generated/in_pack_r16.c
! 7c1841f72c48562a52ef50183f5000c3  libgfortran/generated/in_pack_r4.c
! c3557233df602cec5ce6b383d14f5078  libgfortran/generated/in_pack_r8.c
! 0c502ea8d8025f4d6058f7f23ef6c15f  libgfortran/generated/in_unpack_c10.c
! 895bece84389cc8b82d7ab62712848ad  libgfortran/generated/in_unpack_c16.c
! 0ce6e8c95723e9d6e55b36493301face  libgfortran/generated/in_unpack_c4.c
! 932bd8db809f220aa4f41dcfcff082fb  libgfortran/generated/in_unpack_c8.c
! 5b2da212e1943ec4d5fa878cdd04a709  libgfortran/generated/in_unpack_i1.c
! c72fca05d79cd28947d2fc731715f5f9  libgfortran/generated/in_unpack_i16.c
! c6b8ba1a560dcdc214fe05907789d68d  libgfortran/generated/in_unpack_i2.c
! 2a986479db7f834193a6e195f0fb9777  libgfortran/generated/in_unpack_i4.c
! ed0d8fd32d5031db302c4196f7d53bb0  libgfortran/generated/in_unpack_i8.c
! 5306c56fd270cc191f594b61740f6742  libgfortran/generated/in_unpack_r10.c
! 430ea92a61a3dc74755a05fdfc974c07  libgfortran/generated/in_unpack_r16.c
! 03b481b361493f2c99fb974937036ac5  libgfortran/generated/in_unpack_r4.c
! 6b95c1727df267218998892f637f7d0c  libgfortran/generated/in_unpack_r8.c
! 74275e0addf74fcd9b2d66de2bac5ea0  libgfortran/generated/iparity_i1.c
! 314a1ddc354c8bab7eaf539b50018256  libgfortran/generated/iparity_i16.c
! 2dde446cf835099492a0fd727cf9306e  libgfortran/generated/iparity_i2.c
! ab64165bb997bf297979eff0d94baffb  libgfortran/generated/iparity_i4.c
! 681a609489facee9695b6a3204791bb0  libgfortran/generated/iparity_i8.c
! 263f979099aec434a6391b5f97068f0d  libgfortran/generated/matmul_c10.c
! d01f5ef58f1ceb44bce7927f89b8feac  libgfortran/generated/matmul_c16.c
! f028eec1209e08b38a038e7212e53661  libgfortran/generated/matmul_c4.c
! 90c1fcd613d11e5b978685328e5a645b  libgfortran/generated/matmul_c8.c
! 85f1e7fa14de77041ea758eed89cfd51  libgfortran/generated/matmul_i1.c
! efb0cd7fb3eb49f28d774a124da6b9f5  libgfortran/generated/matmul_i16.c
! 2d5f6fec6e746ff09e76b9385afd3360  libgfortran/generated/matmul_i2.c
! aca9962ea3d8706e08cb533ab849cebd  libgfortran/generated/matmul_i4.c
! f09880fb1eeaccf1ee89ed197d09226a  libgfortran/generated/matmul_i8.c
! c75d2fe2aebd6d2d37b65b14de58ff53  libgfortran/generated/matmul_l16.c
! e0e73a6fe3c3b0a1e4f44ea7af14fc3f  libgfortran/generated/matmul_l4.c
! bbe623f437452500f635ad61916b1074  libgfortran/generated/matmul_l8.c
! 8444dcbba65d93764aabb076a73ba9b2  libgfortran/generated/matmul_r10.c
! 3b76adf9292b7495b7383554ba12251a  libgfortran/generated/matmul_r16.c
! f3db6b73ab85720266238f864f225b43  libgfortran/generated/matmul_r4.c
! fb17ad62c08769afb1e1cf3ee723c60b  libgfortran/generated/matmul_r8.c
! 50df8aee59e68ac814959e19a50290c7  libgfortran/generated/matmulavx128_c10.c
! b98f6f5bbe53c7db32de7e212c7fe724  libgfortran/generated/matmulavx128_c16.c
! 0adefbeb962613eba692318b442ac1dd  libgfortran/generated/matmulavx128_c4.c
! 279bc075ae50b8ff7957aff98d8b9101  libgfortran/generated/matmulavx128_c8.c
! 74c332588e62125fbb586f25d104bb0a  libgfortran/generated/matmulavx128_i1.c
! bba41739a9d3d87118c55d6f013c1199  libgfortran/generated/matmulavx128_i16.c
! fc7ed99192395134a1835e34916ec047  libgfortran/generated/matmulavx128_i2.c
! 58f37cdded0b49a03f29d63797a35eb0  libgfortran/generated/matmulavx128_i4.c
! 29dd3070eedea38c7313c4722663b32f  libgfortran/generated/matmulavx128_i8.c
! e49e5b2c203c1e294d37039559d63f35  libgfortran/generated/matmulavx128_r10.c
! 541defc8075745a29e44ceb1bd533d4c  libgfortran/generated/matmulavx128_r16.c
! ddbf6c925907ce5ce705f30bc859fa4b  libgfortran/generated/matmulavx128_r4.c
! 1030d6786abf9417d93c4cf927f330e4  libgfortran/generated/matmulavx128_r8.c
! 03b7053b4699a9b5672a1f6c4c9da828  libgfortran/generated/maxloc0_16_i1.c
! 344d00df27ae407fd95d659e4e2faa24  libgfortran/generated/maxloc0_16_i16.c
! 8ff6c02dadbbe4ccdd45527737715f18  libgfortran/generated/maxloc0_16_i2.c
! e8b46885f364d88e3b0e7c7f4e35e361  libgfortran/generated/maxloc0_16_i4.c
! 034532d78449fdc21fc3cc6b452f4239  libgfortran/generated/maxloc0_16_i8.c
! 62b4ded34587a9b2ee5ff4e43a33f8fd  libgfortran/generated/maxloc0_16_r10.c
! 7acc2accb60668380435e87358988fa1  libgfortran/generated/maxloc0_16_r16.c
! bc63c6c30dce4263021587d0c4c1fa81  libgfortran/generated/maxloc0_16_r4.c
! 819cc4d8f1112230ad1f0cfceb4d5a46  libgfortran/generated/maxloc0_16_r8.c
! ad4dc3757b952780c4f57456eae2d403  libgfortran/generated/maxloc0_16_s1.c
! b8673682929020bebf654571596fd423  libgfortran/generated/maxloc0_16_s4.c
! 94450fad6cb19f9c871ca838acbc9969  libgfortran/generated/maxloc0_4_i1.c
! 6e06fd68c0a6fc608e78f36483192a15  libgfortran/generated/maxloc0_4_i16.c
! d8b59c7908de146ad8a177324e9afaf9  libgfortran/generated/maxloc0_4_i2.c
! 8efcad8836a83d68c9ba32e7a9223dc7  libgfortran/generated/maxloc0_4_i4.c
! 055dec166b9f3dd66dd94cead9c412cf  libgfortran/generated/maxloc0_4_i8.c
! 7e5656a92b488335ad902b7bd68cd472  libgfortran/generated/maxloc0_4_r10.c
! 6f5fd1f393780accfb4d29041babc443  libgfortran/generated/maxloc0_4_r16.c
! 27298653992da8c6aaa052edf2f2c8d0  libgfortran/generated/maxloc0_4_r4.c
! ae59d658a738ff89c938f15db4422816  libgfortran/generated/maxloc0_4_r8.c
! 0fd432e29480d4412aa93ea5c0236bfe  libgfortran/generated/maxloc0_4_s1.c
! 6f7c98e456f91b22ccf1901112fe5d85  libgfortran/generated/maxloc0_4_s4.c
! 2ef2e12ae5b043576895461a29ac2514  libgfortran/generated/maxloc0_8_i1.c
! cc95e59dc486da668beb233c100c853f  libgfortran/generated/maxloc0_8_i16.c
! 170aec04913c251153a62a9f549d70c4  libgfortran/generated/maxloc0_8_i2.c
! c861c61de458c1ab94891fcbf64e9e4b  libgfortran/generated/maxloc0_8_i4.c
! 9901d9634bfc0dc0fb4bd1ff0a01278a  libgfortran/generated/maxloc0_8_i8.c
! 2db56d8bc9e5819b12f5fa4534ce583c  libgfortran/generated/maxloc0_8_r10.c
! 8e07f18280c21a9c57116ca4bc8b0233  libgfortran/generated/maxloc0_8_r16.c
! c7c775dac8631067269a6dc1a9e76903  libgfortran/generated/maxloc0_8_r4.c
! 61a46a38c32a0648ece627ef1dd2f8b2  libgfortran/generated/maxloc0_8_r8.c
! b10d5ca87dde63e7dd85e4b354a443e2  libgfortran/generated/maxloc0_8_s1.c
! 686c20156e4428dbd8dab1b863360a24  libgfortran/generated/maxloc0_8_s4.c
! c925f4dc611fbdd1098fdee2ea7a6761  libgfortran/generated/maxloc1_16_i1.c
! fe15181c7687b2f358cab5329c3a8405  libgfortran/generated/maxloc1_16_i16.c
! 4b8a5618a06c83dd48a221ca567e88bb  libgfortran/generated/maxloc1_16_i2.c
! 82c7175bfc918c41ea17b0cd67ebf3a3  libgfortran/generated/maxloc1_16_i4.c
! b67267d085f42920deff90af00cbea0f  libgfortran/generated/maxloc1_16_i8.c
! 3689cbcf6b6a695a9ee766099496c3c9  libgfortran/generated/maxloc1_16_r10.c
! 05d259d05467af982a09ee49594cb186  libgfortran/generated/maxloc1_16_r16.c
! 8475af29c94eb71c6ef0cb560856954b  libgfortran/generated/maxloc1_16_r4.c
! 60fa146d82d3904342de7b0af8c4fad8  libgfortran/generated/maxloc1_16_r8.c
! 60ab3f93ef44639ab5c6bd2631b2045c  libgfortran/generated/maxloc1_16_s1.c
! 3b384b67b86760151d04b868faf0d693  libgfortran/generated/maxloc1_16_s4.c
! befc76b55c0bd08a6de5b9dc21a0798a  libgfortran/generated/maxloc1_4_i1.c
! f9ef105460d4d612210e232edcb1d978  libgfortran/generated/maxloc1_4_i16.c
! f65ca178597a93acb8f65b99e362fc93  libgfortran/generated/maxloc1_4_i2.c
! 5753a89d187e6811d2c77fd027c5ce9e  libgfortran/generated/maxloc1_4_i4.c
! 0b3d11b832840aa35c67564236fdb3ef  libgfortran/generated/maxloc1_4_i8.c
! 16bf52181a2bb53fed4efa9b74da1f1d  libgfortran/generated/maxloc1_4_r10.c
! e9b91276cfdcdf6037bdc9152492ef84  libgfortran/generated/maxloc1_4_r16.c
! 84d60719cb041e812893e63bbdcd75fe  libgfortran/generated/maxloc1_4_r4.c
! 531e1c403705a9f206e198352d2de0f8  libgfortran/generated/maxloc1_4_r8.c
! 9fd32a882d93779b1c8dc088bd66e2c0  libgfortran/generated/maxloc1_4_s1.c
! 6222c2a21dd818d5a0a150a319887fb7  libgfortran/generated/maxloc1_4_s4.c
! 700efcf2b6f191304932ab38e7e84ee0  libgfortran/generated/maxloc1_8_i1.c
! 884cf41dd7b5a8d4bd58b69061bf6415  libgfortran/generated/maxloc1_8_i16.c
! 0d02e6b6598938a49f64d2440f3b7e75  libgfortran/generated/maxloc1_8_i2.c
! 50af201254408c52e39acf34b07bf032  libgfortran/generated/maxloc1_8_i4.c
! 696fccfb0f15a66208b6d3161b27df27  libgfortran/generated/maxloc1_8_i8.c
! b12b4684d7aa6302cc2be66c20f6e86a  libgfortran/generated/maxloc1_8_r10.c
! 0cac7f855c12443fd764805efd61a525  libgfortran/generated/maxloc1_8_r16.c
! 98fa88f2365ef6ad3b6ac31ec875c6a9  libgfortran/generated/maxloc1_8_r4.c
! 022548e955ed6814299e36822a79f2fb  libgfortran/generated/maxloc1_8_r8.c
! c753c9aca42b868b50781c3755c304c4  libgfortran/generated/maxloc1_8_s1.c
! 72f24ff3eb94ac8089f92415a8868066  libgfortran/generated/maxloc1_8_s4.c
! 171cf6f831b269f5b278256fa139bdaf  libgfortran/generated/maxloc2_16_s1.c
! 75ff4986959a95ad6b16aad2acba538e  libgfortran/generated/maxloc2_16_s4.c
! c073445412287f3fd7d4000e86488f3b  libgfortran/generated/maxloc2_4_s1.c
! 3a81ac5572ea95c7885db2e097999b06  libgfortran/generated/maxloc2_4_s4.c
! 0528fa0a7837f80efca5515a32f0c58a  libgfortran/generated/maxloc2_8_s1.c
! fcc247170339355b6f5f15dfceef7361  libgfortran/generated/maxloc2_8_s4.c
! 45700b07e98fcde9399283738d978f17  libgfortran/generated/maxval0_s1.c
! 8bbbdf47813fb722b5847ff928256f04  libgfortran/generated/maxval0_s4.c
! 2b2a639fb8507938daa9d5f7039c4071  libgfortran/generated/maxval1_s1.c
! 44540fc2eb3fbcc928e78e27bdb3b8ee  libgfortran/generated/maxval1_s4.c
! 82fec2905d72acc3b428baee2af924f9  libgfortran/generated/maxval_i1.c
! 7a1257953fb0d2a90a9bb725f52dbe45  libgfortran/generated/maxval_i16.c
! 19066d0c5a94fa93b9c28ff6ee642ae9  libgfortran/generated/maxval_i2.c
! 0c737056b5630651f031829d0e88565a  libgfortran/generated/maxval_i4.c
! de2b9d022b1edd11284798d2627d16f2  libgfortran/generated/maxval_i8.c
! b22bba3899c16d8e72674aba23452eef  libgfortran/generated/maxval_r10.c
! 4d7c453db71636fb4c1e5ed60bb25fad  libgfortran/generated/maxval_r16.c
! 689cf89193ed8f380b77cf6da6045450  libgfortran/generated/maxval_r4.c
! 379c914a297337644dcf81ba9554545c  libgfortran/generated/maxval_r8.c
! 34a1cf7837febf1ae8114ce07e2c1b8b  libgfortran/generated/minloc0_16_i1.c
! 4789025066116eadc1263b41176f86af  libgfortran/generated/minloc0_16_i16.c
! 205889b55d8eda2d6251d33cb3c134ae  libgfortran/generated/minloc0_16_i2.c
! dbcb5ac5634b76914e508af487098ab0  libgfortran/generated/minloc0_16_i4.c
! 80b9fa4a52da5b6b3a40a64f18efc447  libgfortran/generated/minloc0_16_i8.c
! 58880852f86520e13abd7e5c1ac849c0  libgfortran/generated/minloc0_16_r10.c
! f8a89a20d20bac7ff8d36ee5084b1b95  libgfortran/generated/minloc0_16_r16.c
! d68c14bd0cb5b54bb1d7cb07534ab6d4  libgfortran/generated/minloc0_16_r4.c
! 42cd15cddc2bb55c6e3e5165e0707a44  libgfortran/generated/minloc0_16_r8.c
! 1dc7724c457bf7cce5adeb77c84c607b  libgfortran/generated/minloc0_16_s1.c
! cf01afbc588bdad0eb953588898bb9ac  libgfortran/generated/minloc0_16_s4.c
! 2bdc63ee1569115c62a3b066534442e6  libgfortran/generated/minloc0_4_i1.c
! b1159e20d2b494058e381a459586cbc1  libgfortran/generated/minloc0_4_i16.c
! d8fc6affc6b1fc0bc065cbe29ecf233c  libgfortran/generated/minloc0_4_i2.c
! 0b89eda0be74e374d4d49426df2c558c  libgfortran/generated/minloc0_4_i4.c
! 68eb4db5e3f9eb9dd3c40d30324ea106  libgfortran/generated/minloc0_4_i8.c
! 198d01bd8246160c0dbfb496168d3919  libgfortran/generated/minloc0_4_r10.c
! a6574f99540c84967a7601ee8bcce0fc  libgfortran/generated/minloc0_4_r16.c
! 929fde2e94b8e12a391aae4a75029c92  libgfortran/generated/minloc0_4_r4.c
! 38eca169ce963f1e47b6bedf60c4db72  libgfortran/generated/minloc0_4_r8.c
! ad486df9918f2bf4d3eaf0dead8bc137  libgfortran/generated/minloc0_4_s1.c
! fb2e471e31f797d9e17957046a7294a0  libgfortran/generated/minloc0_4_s4.c
! 3e92747f10b93ac8f720435abd9cb7be  libgfortran/generated/minloc0_8_i1.c
! 550f677f8605aed20b487effd0145c3e  libgfortran/generated/minloc0_8_i16.c
! 9c9e1774025eeed2d779eddd11576905  libgfortran/generated/minloc0_8_i2.c
! 609099e987bc9026f6d4cf86ede7d551  libgfortran/generated/minloc0_8_i4.c
! cf2147c87f5909cfc15731eb7107aa34  libgfortran/generated/minloc0_8_i8.c
! 8973693a1c5bc42dd3e255b1b9046f8a  libgfortran/generated/minloc0_8_r10.c
! 88f9aeb05d5b4ab828d69e04ed2313b3  libgfortran/generated/minloc0_8_r16.c
! 69d76ece184e95eb7bd4c65b030b7002  libgfortran/generated/minloc0_8_r4.c
! 862d2307957535f9482687eb6d36fc8f  libgfortran/generated/minloc0_8_r8.c
! 42c600c88acd4629d76baac0c713456f  libgfortran/generated/minloc0_8_s1.c
! c19a2f905b7b3d82c7d1c64b2e0b9dfe  libgfortran/generated/minloc0_8_s4.c
! 901300e8deecfc79f867f9be6e1b7ecf  libgfortran/generated/minloc1_16_i1.c
! 1478e0e7698bb1176c11ebe9806bc17d  libgfortran/generated/minloc1_16_i16.c
! 5726e05bcf5113ef239d77ef82902374  libgfortran/generated/minloc1_16_i2.c
! 11e0988585c504c21b374483a849301a  libgfortran/generated/minloc1_16_i4.c
! efabcb87c21d87210349a3389ce23390  libgfortran/generated/minloc1_16_i8.c
! eb168814d06c53a979232e01f4cb2ef1  libgfortran/generated/minloc1_16_r10.c
! 63a22cf099c79c000a33f7712d0a20a9  libgfortran/generated/minloc1_16_r16.c
! aa46d48528501e71d34efa0c06bf1b95  libgfortran/generated/minloc1_16_r4.c
! 6e3f4baed1ddfecaf88b2e2fb0252f16  libgfortran/generated/minloc1_16_r8.c
! 5bf2398f7b913903f13a48515dd9e360  libgfortran/generated/minloc1_16_s1.c
! b49fbb4646151e31c929fb246b4394f1  libgfortran/generated/minloc1_16_s4.c
! 4cb51968865af421ec41ed73f60a6ddf  libgfortran/generated/minloc1_4_i1.c
! bb8bf3e4785e93e5c04899f3bd92d28c  libgfortran/generated/minloc1_4_i16.c
! 675b1a9fe0d85de98825dfc4ca13380f  libgfortran/generated/minloc1_4_i2.c
! 035a7d06860c7b085ef06f692ebea6e7  libgfortran/generated/minloc1_4_i4.c
! ceb455f2256b3e3d9ef10da4cc213ff9  libgfortran/generated/minloc1_4_i8.c
! 484bc2950b4ba0df4c8457adbc8fae7d  libgfortran/generated/minloc1_4_r10.c
! a206f43ef2241bc27ea4a93ad22bc6e0  libgfortran/generated/minloc1_4_r16.c
! 9daa313a1eacd5b2c171eae85e61ee60  libgfortran/generated/minloc1_4_r4.c
! 63bda7e89388d3a11efd2124d0ef4b0d  libgfortran/generated/minloc1_4_r8.c
! 940ff66e750abe2eba92133e147fb6df  libgfortran/generated/minloc1_4_s1.c
! cbade4410bb7a08c23560de3594b0582  libgfortran/generated/minloc1_4_s4.c
! 517eff0ed33ce500954e0a52a53ebc95  libgfortran/generated/minloc1_8_i1.c
! e6790f1953758e078c74192fde7fc4dc  libgfortran/generated/minloc1_8_i16.c
! cb8f2cdbb7e52a6b9399e43c8f498eb7  libgfortran/generated/minloc1_8_i2.c
! 09a25fa3b34dee6b80424376c7e3d142  libgfortran/generated/minloc1_8_i4.c
! 634c3ffab7169292e46c71d4704bbf25  libgfortran/generated/minloc1_8_i8.c
! ec16ec8525e095b8266cd63be1631e47  libgfortran/generated/minloc1_8_r10.c
! 2094af4dce2deb41830c54f58560e24c  libgfortran/generated/minloc1_8_r16.c
! 37a6e6d28c2d4adce9dc998bf1414002  libgfortran/generated/minloc1_8_r4.c
! df9578db987a3418075c369122a24080  libgfortran/generated/minloc1_8_r8.c
! 30b8b2bb591337e128b2586eb9d13d13  libgfortran/generated/minloc1_8_s1.c
! 843b0e6d11192735ce6971c0aa8f10a5  libgfortran/generated/minloc1_8_s4.c
! 88021b34f25e398298ce25946bf36074  libgfortran/generated/minloc2_16_s1.c
! ed73c44987da54bda704c2c8b4510dd0  libgfortran/generated/minloc2_16_s4.c
! 5fbde833bc94e2701dd5fb761f008c97  libgfortran/generated/minloc2_4_s1.c
! 318794180569c39fa987dc38e5a4faab  libgfortran/generated/minloc2_4_s4.c
! b33778cd5e2923d00389687c0c3678a3  libgfortran/generated/minloc2_8_s1.c
! 64a01aa1d6aa920d9cecec45e5704b64  libgfortran/generated/minloc2_8_s4.c
! 2a0fcc9ca4e6a143c9b0e8d3a4e0a868  libgfortran/generated/minval0_s1.c
! 8b7ad838fbe491dbf583d7241794801f  libgfortran/generated/minval0_s4.c
! 95bb5067fdc90e6ee79e3270f80f8ebf  libgfortran/generated/minval1_s1.c
! a3f8cf05c6123a731a437f196b98868c  libgfortran/generated/minval1_s4.c
! 0c19324652e7f84c923e490f8d864f64  libgfortran/generated/minval_i1.c
! bc4b92cf8562bd093e13a228b3d6327f  libgfortran/generated/minval_i16.c
! 0ee5520841cf52cd1c4ee76c789843f8  libgfortran/generated/minval_i2.c
! 8fb2b3d7c92861f46a700cb30ee6ffca  libgfortran/generated/minval_i4.c
! 20f0ba55d302b7fab5024f32b3354023  libgfortran/generated/minval_i8.c
! e03d77c60ce5af33ffaffb9d6f7fdb67  libgfortran/generated/minval_r10.c
! f105ecbd74c2422bff3f794397227a97  libgfortran/generated/minval_r16.c
! c0fff83fa3546d89b0f259792a357312  libgfortran/generated/minval_r4.c
! d69393030577b5d522e5837076d814e9  libgfortran/generated/minval_r8.c
! 95f9cbb64b1d1d90feb6c435fc95aaa0  libgfortran/generated/misc_specifics.F90
! 6e10230893a2024c4aa25fc229501644  libgfortran/generated/norm2_r10.c
! 61f91574ba075ad903d0f73e81b8a9fc  libgfortran/generated/norm2_r16.c
! 7c61c549b5014e3904a9d2a5969583f9  libgfortran/generated/norm2_r4.c
! dad01327cb288f6deb11e40a2f10d8cf  libgfortran/generated/norm2_r8.c
! 5c2dabcf12c7899cf21b933e8dc3d318  libgfortran/generated/pack_c10.c
! 4de35aaf51f07207bd2521bd8684d453  libgfortran/generated/pack_c16.c
! f47eb3d29fa694c8e38e3a4413ea128b  libgfortran/generated/pack_c4.c
! 4760e204c5a8879e08df9313aa0ded65  libgfortran/generated/pack_c8.c
! 4b2476ff3839d633d0ea72d6789a2cd7  libgfortran/generated/pack_i1.c
! e2bf98e5da7a336ddd9ecfefd12bcf30  libgfortran/generated/pack_i16.c
! 5f0f4d152d7483f1682094d2154d8b5e  libgfortran/generated/pack_i2.c
! e8cee8bcad7cf6cff9fc550047105214  libgfortran/generated/pack_i4.c
! 13b5adfba3b7b75a423dd04b87a78d8c  libgfortran/generated/pack_i8.c
! bf009171e30229e96f6b8340be199aad  libgfortran/generated/pack_r10.c
! a62e3d2c5490160b38c5db315762360b  libgfortran/generated/pack_r16.c
! cc9a52a63694a996e1205985b392dbf0  libgfortran/generated/pack_r4.c
! 4ae5380fb3f167aec2315153ac1617c8  libgfortran/generated/pack_r8.c
! 004eae51f1b14dc394e4fd0736263f73  libgfortran/generated/parity_l1.c
! 7994596d5e3a7cf78eda21a332f17f15  libgfortran/generated/parity_l16.c
! 54454632074d19caa8663b913b8d8ddd  libgfortran/generated/parity_l2.c
! 5946c48a8bb4390a7ac91794ebb7a77d  libgfortran/generated/parity_l4.c
! 3de83dc5f9684b577c9fa77de60355e8  libgfortran/generated/parity_l8.c
! 55435f87dd5a8cfdab165369b691314a  libgfortran/generated/pow_c10_i16.c
! e3d4be81a6fe89b25ddd686ef556b5fb  libgfortran/generated/pow_c10_i4.c
! 0ffe52b2f70907051a3adc52ce1343e5  libgfortran/generated/pow_c10_i8.c
! 551703b5a922caa9d4d99d1ffe7ef36f  libgfortran/generated/pow_c16_i16.c
! 0535146d3948a34e92db627e098b55e5  libgfortran/generated/pow_c16_i4.c
! eddc979271b55ae562f61fe14dbca397  libgfortran/generated/pow_c16_i8.c
! 2957021bf837c9828ea9dd39043b8166  libgfortran/generated/pow_c4_i16.c
! 28b0bf4edd79fecacfd10d69a39b7da3  libgfortran/generated/pow_c4_i4.c
! 0f263eabf5e6c6195646010521546573  libgfortran/generated/pow_c4_i8.c
! b90630de82f37cadd2ba4a2dc9ca1cfa  libgfortran/generated/pow_c8_i16.c
! dbc67e05b8e6cc2f9c30dcda99d95d00  libgfortran/generated/pow_c8_i4.c
! 633669f0619e4170aa5a43929686c6b2  libgfortran/generated/pow_c8_i8.c
! bce1e06526609c68d4a08565ed6c8d69  libgfortran/generated/pow_i16_i16.c
! 7b2cbf5da702ac90d99a570aeb6d6521  libgfortran/generated/pow_i16_i4.c
! 125e4c6cd16d9d6d94228c725ac48967  libgfortran/generated/pow_i16_i8.c
! df53e7c744443f070ed93918ebddb4be  libgfortran/generated/pow_i4_i16.c
! b0af5e4fd13563671fd0bf089ae2cd22  libgfortran/generated/pow_i4_i4.c
! 861a40c91e3b78c31d25387514d9a92e  libgfortran/generated/pow_i4_i8.c
! f31c4b8d79148cbd2308ea0e802095ea  libgfortran/generated/pow_i8_i16.c
! 855a4ee44ed9ec33e1176bc5ae831633  libgfortran/generated/pow_i8_i4.c
! 4c331dd89a03b13de67f6e49feb73084  libgfortran/generated/pow_i8_i8.c
! a43e8bcbea2e9023a4441558805edfb4  libgfortran/generated/pow_r10_i16.c
! 6459d794172f713a0d640567cae42436  libgfortran/generated/pow_r10_i8.c
! 44c10dd836a8691af64d5f301619ee80  libgfortran/generated/pow_r16_i16.c
! c007e4ee2f7203b44fe78e09315a7f0a  libgfortran/generated/pow_r16_i4.c
! 6fcf6cf13d0489c0b904a3d94efa0c9f  libgfortran/generated/pow_r16_i8.c
! 5e85e99204eb2af79abe515c64c4fc5d  libgfortran/generated/pow_r4_i16.c
! c059a415e8f61322b05867a8045ab223  libgfortran/generated/pow_r4_i8.c
! f6324fe25367c10ba4cdf5f038775942  libgfortran/generated/pow_r8_i16.c
! a136716541c09afa180cf5f8c4511e57  libgfortran/generated/pow_r8_i8.c
! 0821f37bc7b5eecc8d28e7bb2b543d56  libgfortran/generated/product_c10.c
! 369a6f6cb9174a04e3d463ffb2cdf1be  libgfortran/generated/product_c16.c
! cab18bbd554a2fb3a4329eb4aad8b7e0  libgfortran/generated/product_c4.c
! 2f43830ada80bb733d6438dfd5b5ad50  libgfortran/generated/product_c8.c
! 3ba8d2c07ad22a93d57509b948a94f51  libgfortran/generated/product_i1.c
! 10d561a814bc9d596c420eef1e125f62  libgfortran/generated/product_i16.c
! 7b4fa02f9a681ad55b8d651d1dfca3b4  libgfortran/generated/product_i2.c
! 7853739791506044f7a8f009ebe89897  libgfortran/generated/product_i4.c
! 797b417742bd31c53c79df609229d499  libgfortran/generated/product_i8.c
! 3e0406e877b6337c0ce3a3304141983f  libgfortran/generated/product_r10.c
! 0c07afea09755fd33f108c32f2b915a9  libgfortran/generated/product_r16.c
! 604dc8a479707764191be4f404d095cb  libgfortran/generated/product_r4.c
! 3cf5adce7fe3913505077e766dfe2200  libgfortran/generated/product_r8.c
! 82a467e78a88bfab174b49a0426f198f  libgfortran/generated/reshape_c10.c
! 47b49356fe232ad7c4c41a0dce6f482e  libgfortran/generated/reshape_c16.c
! 264465e8e0943789874c319de655e7ff  libgfortran/generated/reshape_c4.c
! 1458f157cdc28adb22a944e4b81adec8  libgfortran/generated/reshape_c8.c
! 2edaa49880e9596aba132d8692563cea  libgfortran/generated/reshape_i16.c
! 716f09a91bf1d1c4493b796af0279365  libgfortran/generated/reshape_i4.c
! 1a3570f8c6e26df7b4bd24687ea13f6f  libgfortran/generated/reshape_i8.c
! fd93e53e7d0242fc1800e6e4fc638aa0  libgfortran/generated/reshape_r10.c
! df2e2dffc763d267e98249e6e9b7bede  libgfortran/generated/reshape_r16.c
! a356e3d038c390f0388c65920bdeb421  libgfortran/generated/reshape_r4.c
! b85fe99ff0acf5590afb0cab9492b579  libgfortran/generated/reshape_r8.c
! b3e329808726a39acaf64363b64204cd  libgfortran/generated/shape_i1.c
! fadeafc1fe4b3660e9ba0abc23707ce7  libgfortran/generated/shape_i16.c
! af103ee234215c9fbda8c090bd09bda9  libgfortran/generated/shape_i2.c
! 0e04f88b268415c087cb6afa1457dc4b  libgfortran/generated/shape_i4.c
! 3152f7753e2470e7d5203757f837ea0d  libgfortran/generated/shape_i8.c
! eee2c6a297e19b608838f083f63f4d88  libgfortran/generated/spread_c10.c
! 9929d90afbc1496c968e656029789605  libgfortran/generated/spread_c16.c
! 84f23ca5596849c7af661849de20da40  libgfortran/generated/spread_c4.c
! 62b4313220df27f3e5822f2b7c6dd79a  libgfortran/generated/spread_c8.c
! a49c44a0884462fd1a6eb301e3dd48db  libgfortran/generated/spread_i1.c
! f0093167893227aad80145c799d725c7  libgfortran/generated/spread_i16.c
! e0cc83a9bdb71e03f4dc8f5afc766f8e  libgfortran/generated/spread_i2.c
! dd6d62344aad2f1c1acd1c48c2478115  libgfortran/generated/spread_i4.c
! e4ef1a99201256eb89cd685091c784c4  libgfortran/generated/spread_i8.c
! 94e5987df03c0146b6147a067e55ac2e  libgfortran/generated/spread_r10.c
! 82d97e7c5e5a975b7fc3b12912290df7  libgfortran/generated/spread_r16.c
! 10f3eea03030ef6025540d3bdc379e5f  libgfortran/generated/spread_r4.c
! 609f95a0f6669d6cd7c36d4dac3c5339  libgfortran/generated/spread_r8.c
! d5122565ebb901faccdf0638170b0823  libgfortran/generated/sum_c10.c
! 8617f893a346270453135a09527fe249  libgfortran/generated/sum_c16.c
! a4826796954557822729eacf30013e31  libgfortran/generated/sum_c4.c
! fb7ce1df5c60477f2b4b660ae5b930d2  libgfortran/generated/sum_c8.c
! b1b87916c30582e867610f2607b1b41f  libgfortran/generated/sum_i1.c
! 4b95faeeb6a6f67d5c54da585bbe789d  libgfortran/generated/sum_i16.c
! cb9d13eb57f0fc27829a74733ae64b2f  libgfortran/generated/sum_i2.c
! bc569bc5b1181fe53e4db4cf884bdf47  libgfortran/generated/sum_i4.c
! c7f82905c18bf1bd34ba82a31d017ef6  libgfortran/generated/sum_i8.c
! 86e2e226f8da942cea761f5cd6d153f6  libgfortran/generated/sum_r10.c
! d45581ae33d774a18fec2fb4a37742a9  libgfortran/generated/sum_r16.c
! c4bf9764e6ca6e71e9afa4ccfad002c5  libgfortran/generated/sum_r4.c
! dd397644e55af0ce9cd956c7ab93266d  libgfortran/generated/sum_r8.c
! 449f9fb87b3975841ac0bd4f52e488bb  libgfortran/generated/unpack_c10.c
! 611708ed808eff9e3356e25163b812f6  libgfortran/generated/unpack_c16.c
! eb27a65011cf6b1ebd43a35e8a5ae00c  libgfortran/generated/unpack_c4.c
! f9cfc8e42390edc8797aad1014fb1af1  libgfortran/generated/unpack_c8.c
! a71e493613954b33fd7a4f68cd6d39ab  libgfortran/generated/unpack_i1.c
! c348df3f47b2fbf8b664e57223c895f8  libgfortran/generated/unpack_i16.c
! 66c2665f1267e093b01ceac31e3eff4c  libgfortran/generated/unpack_i2.c
! c9e1289784843477bb114b3edf216460  libgfortran/generated/unpack_i4.c
! 84537c047f28c8ee7a10d205584c0f21  libgfortran/generated/unpack_i8.c
! cdb8b0806e7cf9a64f36f9a4edd89197  libgfortran/generated/unpack_r10.c
! 0fff6ca99d7d2f299fb4a13948f0bbcd  libgfortran/generated/unpack_r16.c
! 4624053331da651229bd16a16d4d1bd1  libgfortran/generated/unpack_r4.c
! 2634154e2fcbb942c1eabf0fbdb1ad08  libgfortran/generated/unpack_r8.c
! 0f8094a6f73ffb2d6192a24e14bf9ec2  libgfortran/gfortran.map
! b207cb918562bce08aa28527a176de26  libgfortran/ieee/ieee_arithmetic.F90
! e1fc5aa613ffa26104b721c194f9ca7c  libgfortran/ieee/ieee_exceptions.F90
! d20a8ce52aa3120049953b0adc5bd691  libgfortran/ieee/ieee_features.F90
! 122ec6708e7f7a51cd345514c2ee8c20  libgfortran/ieee/ieee_helper.c
! 2394847d90392bddd94d0094b2f69cc9  libgfortran/intrinsics/abort.c
! 987078671f171c8e7d5027a32dfe3397  libgfortran/intrinsics/access.c
! 9e3c839af807d3a8b0d58f25f0699863  libgfortran/intrinsics/args.c
! ad223f2d7008985110f5543ab7bdd72b  libgfortran/intrinsics/associated.c
! d0ab416baeb1d3a46b556bfe1eae463c  libgfortran/intrinsics/c99_functions.c
! 2e621cf7705c1628321035449746844b  libgfortran/intrinsics/chdir.c
! be153b6c8e9f38408d42c9e84eb182d3  libgfortran/intrinsics/chmod.c
! dcaf732b07cb84421a7de6a5a532f2a1  libgfortran/intrinsics/clock.c
! 9f7c4055d6792dfbede57e6497c21af3  libgfortran/intrinsics/cpu_time.c
! a4850543e18114318f0853f4c1ee9d34  libgfortran/intrinsics/cshift0.c
! ecc1ce2ee275852113180ba5d9f2fea0  libgfortran/intrinsics/ctime.c
! 5ea4d8cac96f77faa0c230a56a42a0e3  libgfortran/intrinsics/date_and_time.c
! d7604b0c71ca35e58510bac27ef8402f  libgfortran/intrinsics/dprod_r8.f90
! 603703edfe884ddec71a20168bd0ad67  libgfortran/intrinsics/dtime.c
! cde7f9e0a525e7c5c4f6ba306d15b589  libgfortran/intrinsics/env.c
! f19c9aa4d8a336dd9e3f70a2552608bb  libgfortran/intrinsics/eoshift0.c
! 8fed6533927bc7e40ebe7ac939d5f940  libgfortran/intrinsics/eoshift2.c
! b3128714eb94033ca3fbf08fbdec6873  libgfortran/intrinsics/erfc_scaled.c
! 6a095ad8613ac26a460551dcc41425a6  libgfortran/intrinsics/erfc_scaled_inc.c
! fe9c6b80f989a12193d6beae00b14740  libgfortran/intrinsics/etime.c
! e9dc3ab3d183a6396a4f6ca44b79887c  libgfortran/intrinsics/execute_command_line.c
! 4a8e0901410ce31eaeca65497b31b200  libgfortran/intrinsics/exit.c
! 18c4f0957b07827fb508cc4c911e119c  libgfortran/intrinsics/extends_type_of.c
! 3cbfc2b5747f54a5d56f9f1916d3576d  libgfortran/intrinsics/f2c_specifics.F90
! 96fc54251d7cb726c074fe56452e45c8  libgfortran/intrinsics/fnum.c
! 73bc9b9fdded35b093aba5a6d65659f7  libgfortran/intrinsics/gerror.c
! f57321d171754c1649155b9d8aa8896d  libgfortran/intrinsics/getXid.c
! 63841d3a48dbc227ac8465b176dc6914  libgfortran/intrinsics/getcwd.c
! 8bc03313b59dfa44ce54fe507b982f8e  libgfortran/intrinsics/getlog.c
! 95c8f9fc3089f38c7c5079b49f578548  libgfortran/intrinsics/hostnm.c
! adff22d4586a475617a68d0cae8f5bb5  libgfortran/intrinsics/ierrno.c
! bd42f52995b3ec934ff0b47ce2d2dc43  libgfortran/intrinsics/ishftc.c
! 4665a07d037085a53e97d1163b0086be  libgfortran/intrinsics/kill.c
! f281a90f9c3ce551256344af337248ae  libgfortran/intrinsics/link.c
! 65f0b27a707d85f767fdf62905e773c3  libgfortran/intrinsics/move_alloc.c
! 5863856e55221352d67043bc01d0b6a0  libgfortran/intrinsics/mvbits.c
! 60e1efa124856c90bf75f4aad4025c3a  libgfortran/intrinsics/pack_generic.c
! be06b0a84413d3b2b040a27a23ba5f7a  libgfortran/intrinsics/perror.c
! 78d85f8c99956917c9b5c8fc6235a06b  libgfortran/intrinsics/rand.c
! 7ddd95cfefbf679622cf9f4bf55d81a4  libgfortran/intrinsics/random.c
! e9d4d53f546d779165363d6cbbf22939  libgfortran/intrinsics/rename.c
! ee1f64e03f035d6efd7b612f78243233  libgfortran/intrinsics/reshape_generic.c
! 3a7470aaa3be1e4df83d6008a1e5b203  libgfortran/intrinsics/reshape_packed.c
! 8f9a798cd3b986ec67f7c6a0e2950c0e  libgfortran/intrinsics/selected_char_kind.c
! 5487cd42c226d7ef8caaad6e9dc59080  libgfortran/intrinsics/selected_int_kind.f90
! d0b4b54c4a85db7342af3c354a22184c  libgfortran/intrinsics/selected_real_kind.f90
! 7faaf25ffe67fdf8ee7c43891b6d890a  libgfortran/intrinsics/signal.c
! dd579f350f09fc8d287a2f35a312f7f1  libgfortran/intrinsics/size.c
! 0dbd0abfaa663e90ac8785d1b72f2401  libgfortran/intrinsics/sleep.c
! d4741e406659109d082e634671d9833d  libgfortran/intrinsics/spread_generic.c
! c716beac48c579f8f390a8232f1a8e10  libgfortran/intrinsics/stat.c
! dbb2f6180611bea35dac9c2741ab8aad  libgfortran/intrinsics/string_intrinsics.c
! 422d9772b3d4bf464104a7f25043cc9c  libgfortran/intrinsics/string_intrinsics_inc.c
! e72cf66687a2484118eb2b4a946b2717  libgfortran/intrinsics/symlnk.c
! f77170aa2a6af7a3e505b0950757e872  libgfortran/intrinsics/system.c
! 012f95d9c9dbfc5f7482ee815021c47d  libgfortran/intrinsics/system_clock.c
! 7a0023b45564d4c4a25184a700f454d0  libgfortran/intrinsics/time.c
! 343f55a9d251f0939eaea3da4fe7cf24  libgfortran/intrinsics/time_1.h
! 875c553f6b7f68a0b3698c459f2ff88c  libgfortran/intrinsics/umask.c
! 3c8116b91a5fd4ed6c84c584e857b7ef  libgfortran/intrinsics/unlink.c
! 5885b48f8e6cab42ede8bcf96f813d1b  libgfortran/intrinsics/unpack_generic.c
! 1ac5cc6ab71d58df099409c8d5106b2e  libgfortran/io/close.c
! 7dc50bbffc606e5b1e695795c170369f  libgfortran/io/fbuf.c
! 71e0d0ad94bfa124b31a26e49b51dd0c  libgfortran/io/fbuf.h
! e735bc6badd6c15280405038275f0f91  libgfortran/io/file_pos.c
! 344b06acb7d5ff663e418775ac1151e2  libgfortran/io/format.c
! 785a60869bfd2de94207a9307aa52284  libgfortran/io/format.h
! 92f5f568115c5084ae101f5ed511ca6e  libgfortran/io/inquire.c
! 630b7b0974a269ee49c4ade5c4e5f363  libgfortran/io/intrinsics.c
! d3c5751d0e4704983f167646f7985cf9  libgfortran/io/io.h
! f920d9e29f61422e2c56275467c4f3df  libgfortran/io/list_read.c
! ea6f74ca36ed9b8e4e0a090302ae62aa  libgfortran/io/lock.c
! e133e57ae72775ac51698436cf3d6d7b  libgfortran/io/open.c
! 8540963a24bd87b37cd3e2ef3befd25c  libgfortran/io/read.c
! 1c7c4368a1a6cc4cbc206abd1c68934a  libgfortran/io/size_from_kind.c
! c9e80fe1ee7fc3e19d39b5e002b80132  libgfortran/io/transfer.c
! 4c2c7eafd2d0335795f53c1a63829e6d  libgfortran/io/transfer128.c
! a5f94c6e898523027475fd1beb16a402  libgfortran/io/unit.c
! 009092cf7e9a1a63fb000e4614c044d4  libgfortran/io/unix.c
! b693858bb490e3d3f86b419ea3032f26  libgfortran/io/unix.h
! 937e073c5f41d2785f0fc2662d6dadae  libgfortran/io/write.c
! 2656655f32fe40c8f3c685303f4cbe3e  libgfortran/io/write_float.def
! 72d31c0b0a88f4512eb82ff83ef87081  libgfortran/kinds-override.h
! ceb841989d32b3932d135dcb12fba465  libgfortran/libgfortran.h
  2527bb19b82f08b34038b07b172d029d  libgfortran/libgfortran.spec.in
! dc1a87f5ed3520558b0fe9f43e4f5ba8  libgfortran/libtool-version
! 27e8037b40eb0ce8e9127cd1c6689a42  libgfortran/m4/all.m4
! a91c71f347bdade2712079ce25583290  libgfortran/m4/any.m4
! 44885a5c40652167431e71c3d3de03f0  libgfortran/m4/bessel.m4
! 583371986b87d26a558910aff900ccac  libgfortran/m4/count.m4
! 36500519837f74d59ea60a7ae9b233fd  libgfortran/m4/cshift0.m4
! 6e58b5a128ff2e3731ef1b94eb9b26f6  libgfortran/m4/cshift1.m4
! 3c93197f0b837d7ae975ad8f0b85b42b  libgfortran/m4/cshift1a.m4
! c2184161a69f1b1763566843cbc89cad  libgfortran/m4/eoshift1.m4
! a79162ee1f08e86d169e8f91634411d4  libgfortran/m4/eoshift3.m4
! 1f3f64487321771cede919fa9b59e864  libgfortran/m4/head.m4
! f0e804778815f711d77d1b7c469a5889  libgfortran/m4/iall.m4
! 5de369424561c61d033b97eebf9ba332  libgfortran/m4/iany.m4
! d284d08f42bce1c15f44bb8b563d4711  libgfortran/m4/iforeach-s.m4
! a781de04f2855c191f71b6b32a5effe8  libgfortran/m4/iforeach-s2.m4
! bc8179b17657cc6e8053d07c97956dc3  libgfortran/m4/iforeach.m4
! 99641d024711a73cb872ad2f40204723  libgfortran/m4/ifunction-s.m4
! 2cc0f69529890bdd15dd32fcdee8c643  libgfortran/m4/ifunction-s2.m4
! 37f59c428d80f8084d55c6d5a1072121  libgfortran/m4/ifunction.m4
! a6bf3d114ef26d37fa09ff37d208b9bd  libgfortran/m4/ifunction_logical.m4
! 2f4c17619aa80891fd10670c9f968759  libgfortran/m4/in_pack.m4
! f61e761dfc698eea7c135fc6b905c58c  libgfortran/m4/in_unpack.m4
! 4ee5525cd51cf22317d346a9b688e0e3  libgfortran/m4/iparity.m4
! 62625a4378e66dd402934492e9844404  libgfortran/m4/iparm.m4
! 48a3b3feeb87835ba71b711456c2c3a2  libgfortran/m4/matmul.m4
! 83647b30ac050426653047d557d93079  libgfortran/m4/matmul_internal.m4
! 5cc28827d48d5ffaa9154427564ab252  libgfortran/m4/matmulavx128.m4
! 68b0a8eacff0be2414ece80a9765d658  libgfortran/m4/matmull.m4
! 4fc586511a36f1b2bfd09db5ac8f428a  libgfortran/m4/maxloc0.m4
! 9102c7f4fdf3e776f9780d2c83ef5ae9  libgfortran/m4/maxloc0s.m4
! 76388a244d366c34b4d24cddf1c955f0  libgfortran/m4/maxloc1.m4
! 732d6e3fd76bd918d15ffb533e5a9fab  libgfortran/m4/maxloc1s.m4
! 8aa3431f8e20d9d2356bb08485765de1  libgfortran/m4/maxloc2s.m4
! 60816bb6ee713d7a7c9f7e8ae7806e64  libgfortran/m4/maxval.m4
! d648f70c6cf7a535a64a338f2b917acf  libgfortran/m4/maxval0s.m4
! 3a4dbdcb245a28d5d4650425a8435790  libgfortran/m4/maxval1s.m4
! 7bdea76deea656bcfc472117ed92d073  libgfortran/m4/minloc0.m4
! 0437da906990d64ec99bcd6299d0c68b  libgfortran/m4/minloc0s.m4
! 5c0e150116d28695d72bb473fe78bdfe  libgfortran/m4/minloc1.m4
! e52a83a2e148f17c5bbebd360640d04c  libgfortran/m4/minloc1s.m4
! f2436d6c04c3010d2b51befca236e230  libgfortran/m4/minloc2s.m4
! 8971fd53b5820f8bbcca2c600ad29810  libgfortran/m4/minval.m4
! 982afbc4a0c89edc91a0b5c71ed43c9d  libgfortran/m4/minval0s.m4
! a3dfd214e30ed36b3242cde5815e4b6c  libgfortran/m4/minval1s.m4
  6d8cbcd1d1489f643839e7ac2c00a736  libgfortran/m4/misc_specifics.m4
  9b81a1acd09bfbf8e218728b9c6197c2  libgfortran/m4/mtype.m4
! aec7bb778fa0a32ddca6e5cfcbc2a792  libgfortran/m4/norm2.m4
! c70e8095c6d364c03c30e6081b2ac9f9  libgfortran/m4/pack.m4
! 997d325ab12783eaf4d3f676fd6c840b  libgfortran/m4/parity.m4
! f9674ac06fb42b550eec2949ba5efa7c  libgfortran/m4/pow.m4
! 138c53f55c66b2fd0528ebd09b895688  libgfortran/m4/product.m4
! b1f213f528ac81e92bb216e691be8c95  libgfortran/m4/reshape.m4
! c2ff45a0e26bee43153966e08205c406  libgfortran/m4/shape.m4
  2478642167175833018a8947cc98b3fd  libgfortran/m4/specific.m4
  4c60f3c3d2948ee7eb2668aa9cc61a04  libgfortran/m4/specific2.m4
! dffb47afe138adc51a5178a2d2810eae  libgfortran/m4/spread.m4
! 949ed543085079c080104c174a5d6edc  libgfortran/m4/sum.m4
  0ad0318f00c85db29d184dc3dff12276  libgfortran/m4/types.m4
! 1057765ee38df0b4d71494f45a237ab8  libgfortran/m4/unpack.m4
  cef25b7bceffde6fc5728a173e842a62  libgfortran/mk-kinds-h.sh
  764579ddc54916182288fc40bdf0e544  libgfortran/mk-sik-inc.sh
  f81db480cbfdc2b1d2291623c6cadb5f  libgfortran/mk-srk-inc.sh
! 9b7ddd8363022b8976d04109330bb478  libgfortran/runtime/backtrace.c
! 0fb080dbaa04216bfb04bd243735c223  libgfortran/runtime/bounds.c
! f96b7ba641dd7f660f58803aa27fed1f  libgfortran/runtime/compile_options.c
! 98f64a559e67c2fa65e8ab00dda3e7e4  libgfortran/runtime/convert_char.c
! 5b25a70df8484bd60d5122e72208f8a6  libgfortran/runtime/environ.c
! 9ace3784d184a40569396db4b5e0fa83  libgfortran/runtime/error.c
! a78ceec3862f92ccf50b8bfec91520eb  libgfortran/runtime/fpu.c
! 65c6fcf9febb54182a2bf88aec251646  libgfortran/runtime/in_pack_generic.c
! 869987bea80e651cba628a5471abfcdf  libgfortran/runtime/in_unpack_generic.c
! c4d6cb53cd3a862fdc246b6b709b19a4  libgfortran/runtime/main.c
! 8ef0127e76e7ad4adf6d9210a2c487e6  libgfortran/runtime/memory.c
! d8d04d9e5d1fc7beb130bbc6eca8781d  libgfortran/runtime/minimal.c
! c1910d12750729e0ee13ca8db0bb7f58  libgfortran/runtime/pause.c
! e5be77365be5603ea8f7162daf0024c3  libgfortran/runtime/select.c
! 4d3e52b31074810d39d6b34a4017a4bc  libgfortran/runtime/select_inc.c
! e8799bede8ac5301ad4cb189faf469b4  libgfortran/runtime/stop.c
! a17aa4314e9fb42754b73205331ccecc  libgfortran/runtime/string.c
  5d4950ecb7b26d2c5e4e7b4e0dd74707  libgo/LICENSE
! 61dad49559b5a8dde46d757da4dc988b  libgo/MERGE
! 87f76baad1673b623bd1c04d41e76cb6  libgo/Makefile.am
! d4dd89fd2430c5a12b304c576536d5c3  libgo/Makefile.in
  3a55d95595a6f9e37dee53826b4daff2  libgo/PATENTS
  3a3d1f64c9a8149b9c46b1dcdd8df630  libgo/README
  d46376034c1fd6df47c8ba2cd5de9d0a  libgo/README.gcc
! c118220584e7a2cffcc8eac8a89bd94f  libgo/VERSION
  4f1e6c347a5a119166bee289ca2e824c  libgo/aclocal.m4
! 5226a5bd816126fc840beccad968d34d  libgo/config.h.in
  ad1ce707d70b18d5d14bdbcfef82a9bb  libgo/config/README
  9a6e33ac95f7d5857d34f53bde4cb610  libgo/config/go.m4
  ee0c1ad26a748f688dcc7bdb83fb9ba1  libgo/config/libtool.m4
*************** dee72a6a60e99528b0d17bf3ff9a1e15  libgo/
*** 61033,61055 ****
  bc2f6032c98896249eadb56177c7d357  libgo/config/ltsugar.m4
  c30cd33c496505f13d9fbdb6970c7c33  libgo/config/ltversion.m4
  293853a13b7e218e3a4342cf85fbbf25  libgo/config/lt~obsolete.m4
! 7f82fef95905f7e6f8e823d99ad0bbd7  libgo/configure
! b33eb5ccad030c632490ab4bcebf1005  libgo/configure.ac
! b047120e81fd6aa1ce65e8ac44ed1f02  libgo/go/archive/tar/common.go
! 927641dcc41cc2bd851f9cd61570fce0  libgo/go/archive/tar/format.go
! ba12113bc44e06830ee742c17c3d4678  libgo/go/archive/tar/reader.go
! d4119ceed2190c30134ce93ea92a2d43  libgo/go/archive/tar/reader_test.go
! 04dca0381c536402ac82b876d1f192b5  libgo/go/archive/tar/stat_atim.go
! f24d0e0a8444fa94e8cf245a1b0655b1  libgo/go/archive/tar/stat_atimespec.go
! 5e6f09362f5baa847e37b9daaa34c80b  libgo/go/archive/tar/stat_unix.go
! c64ca60f4c68d4ca0bfb47a5938e5ea0  libgo/go/archive/tar/strconv.go
! df7694d13bf244e249bafd1bc2fa307f  libgo/go/archive/tar/strconv_test.go
! 7ec6437cf5ee9413da4e0989175a0789  libgo/go/archive/tar/tar_test.go
  8ec27a5ea3e63f3ba68dccfc90fa7cfa  libgo/go/archive/tar/testdata/gnu-incremental.tar
  218a53f411cd15c4191d860bc058d187  libgo/go/archive/tar/testdata/gnu-multi-hdrs.tar
  d36839a53022ca7143744431d9d5aa65  libgo/go/archive/tar/testdata/gnu.tar
  9c9b5dc5f668110783c733d0e3067193  libgo/go/archive/tar/testdata/hardlink.tar
  222170e664f63edc115bbe883d3ac62a  libgo/go/archive/tar/testdata/hdr-only.tar
  be675f5f216228fe58ee17f52370a241  libgo/go/archive/tar/testdata/issue10968.tar
  e130de0d99ab05d372169104cd849f3c  libgo/go/archive/tar/testdata/issue11169.tar
  d134c0b867e73db82de91625be151eba  libgo/go/archive/tar/testdata/issue12435.tar
--- 64987,65016 ----
  bc2f6032c98896249eadb56177c7d357  libgo/config/ltsugar.m4
  c30cd33c496505f13d9fbdb6970c7c33  libgo/config/ltversion.m4
  293853a13b7e218e3a4342cf85fbbf25  libgo/config/lt~obsolete.m4
! 7a8285c91b2508fe1e2504d7aa8daec1  libgo/configure
! 87ce15c0da32c788c1f9bf897067265c  libgo/configure.ac
! e82f80fbf29e34dcbd9d3b47db84073d  libgo/go/archive/tar/common.go
! 5b5175c49c2e1dcb4f1e9dc30f702780  libgo/go/archive/tar/format.go
! c458cca5c8f3fce842b1d84508ba1fbe  libgo/go/archive/tar/reader.go
! 845f989e5085aa143e73e0152ba2605e  libgo/go/archive/tar/reader_test.go
! e554a07898f90e310050999230c89ad9  libgo/go/archive/tar/stat_actime1.go
! f24d0e0a8444fa94e8cf245a1b0655b1  libgo/go/archive/tar/stat_actime2.go
! c6aa6e59b7eddf4910eb64306bef133f  libgo/go/archive/tar/stat_unix.go
! a528691491fded711101a5ca5428527c  libgo/go/archive/tar/strconv.go
! 2194c0da00833d306887bf2a37ea931b  libgo/go/archive/tar/strconv_test.go
! d4c9efb51750fbef8b4bd08d5af6f394  libgo/go/archive/tar/tar_test.go
  8ec27a5ea3e63f3ba68dccfc90fa7cfa  libgo/go/archive/tar/testdata/gnu-incremental.tar
+ 5234643c1f7c26ef4703a7ed6b1c3a90  libgo/go/archive/tar/testdata/gnu-long-nul.tar
  218a53f411cd15c4191d860bc058d187  libgo/go/archive/tar/testdata/gnu-multi-hdrs.tar
+ 3aa3a3af2aebdb616a33afb66a2ae37e  libgo/go/archive/tar/testdata/gnu-nil-sparse-data.tar
+ a7de2bddf4cca71d95d986b608adefd6  libgo/go/archive/tar/testdata/gnu-nil-sparse-hole.tar
+ 00a5aeb94e0171885a2e1061add56adf  libgo/go/archive/tar/testdata/gnu-not-utf8.tar
+ 31cb0693b22ecdead68d3c7625fdc5f6  libgo/go/archive/tar/testdata/gnu-sparse-big.tar
+ 15b247ebaf6c4d500ae5e5019bdd80ea  libgo/go/archive/tar/testdata/gnu-utf8.tar
  d36839a53022ca7143744431d9d5aa65  libgo/go/archive/tar/testdata/gnu.tar
  9c9b5dc5f668110783c733d0e3067193  libgo/go/archive/tar/testdata/hardlink.tar
  222170e664f63edc115bbe883d3ac62a  libgo/go/archive/tar/testdata/hdr-only.tar
+ 63dd795a48c7cf4d3343e93f95a576b7  libgo/go/archive/tar/testdata/invalid-go17.tar
  be675f5f216228fe58ee17f52370a241  libgo/go/archive/tar/testdata/issue10968.tar
  e130de0d99ab05d372169104cd849f3c  libgo/go/archive/tar/testdata/issue11169.tar
  d134c0b867e73db82de91625be151eba  libgo/go/archive/tar/testdata/issue12435.tar
*************** d134c0b867e73db82de91625be151eba  libgo/
*** 61057,61084 ****
  51e441b8759d6f1cbbf082e4cfefc3e2  libgo/go/archive/tar/testdata/nil-uid.tar
  c5421960508385c39ee9ad722fb93c8a  libgo/go/archive/tar/testdata/pax-bad-hdr-file.tar
  7b20a310698a0d22aabb610013d6afee  libgo/go/archive/tar/testdata/pax-bad-mtime-file.tar
  cb54fbdc25065d7771ab509070b61e4b  libgo/go/archive/tar/testdata/pax-multi-hdrs.tar
  9bcdb456e865b1f43da92779d979f505  libgo/go/archive/tar/testdata/pax-path-hdr.tar
! be4c9618758b9682dfceeb88100ddf5a  libgo/go/archive/tar/testdata/pax-pos-size-file.tar
  f578fe90dd8a45ac3618adf6c881211f  libgo/go/archive/tar/testdata/pax.tar
  e38b27eaccb4391bdec553a7f3ae6b2f  libgo/go/archive/tar/testdata/small.txt
  c65bd2e50a56a2138bf1716f2fd56fe9  libgo/go/archive/tar/testdata/small2.txt
  10b9959a5f8951c09a8575f69ccaaad4  libgo/go/archive/tar/testdata/sparse-formats.tar
  2e308433b209b3af3be588c55838c217  libgo/go/archive/tar/testdata/star.tar
  aad07c243d63c6dc24f218cb649b9c31  libgo/go/archive/tar/testdata/ustar-file-reg.tar
- 44cfa63959c6d6b428175ca9e3385a7a  libgo/go/archive/tar/testdata/ustar.issue12594.tar
  2adf93d4ee327e554d256152b0bafc7e  libgo/go/archive/tar/testdata/ustar.tar
  9a4e79a89eb3490ff21b53303324301f  libgo/go/archive/tar/testdata/v7.tar
! 26d5037a3621a6d7418b2baf61a3256a  libgo/go/archive/tar/testdata/writer-big-long.tar
! ab1694ea9d7ccb2c70b435188acfa6e9  libgo/go/archive/tar/testdata/writer-big.tar
  88712af2a004429d7101fd0c710baa8f  libgo/go/archive/tar/testdata/writer.tar
  d76dc07e475b2905b5fec1cf319b6356  libgo/go/archive/tar/testdata/xattrs.tar
! 723c878c69064fca4476eecdecb25c99  libgo/go/archive/tar/writer.go
! fb02807cb735cf7c655cc008bd20961e  libgo/go/archive/tar/writer_test.go
! a0091f6236bc3434eba8c740040a68b6  libgo/go/archive/zip/reader.go
! edc7a6054cc148b2256d06739fa53361  libgo/go/archive/zip/reader_test.go
! 58e95d663b86512b5fb2bb4e1d946939  libgo/go/archive/zip/register.go
! 6480d78a8a9945dc8f179cda1b9da589  libgo/go/archive/zip/struct.go
  0e5c6061f34579a29cd9e706200e3fc5  libgo/go/archive/zip/testdata/crc32-not-streamed.zip
  a0dc0660d6847cfdefd1e34811fa3e2a  libgo/go/archive/zip/testdata/dd.zip
  abb58ce61c08e3f2b2498ee654e13589  libgo/go/archive/zip/testdata/go-no-datadesc-sig.zip
--- 65018,65053 ----
  51e441b8759d6f1cbbf082e4cfefc3e2  libgo/go/archive/tar/testdata/nil-uid.tar
  c5421960508385c39ee9ad722fb93c8a  libgo/go/archive/tar/testdata/pax-bad-hdr-file.tar
  7b20a310698a0d22aabb610013d6afee  libgo/go/archive/tar/testdata/pax-bad-mtime-file.tar
+ edb35c7b2e487c6aa8b307aabb0950c0  libgo/go/archive/tar/testdata/pax-global-records.tar
  cb54fbdc25065d7771ab509070b61e4b  libgo/go/archive/tar/testdata/pax-multi-hdrs.tar
+ 1358d9f0999e0c57d8862e907ca77e01  libgo/go/archive/tar/testdata/pax-nil-sparse-data.tar
+ ce1c24ebffad9746e20422045bc48113  libgo/go/archive/tar/testdata/pax-nil-sparse-hole.tar
+ f5d12f6cd83b937bdc62b02365690591  libgo/go/archive/tar/testdata/pax-nul-path.tar
+ cb743a00060f33008f001a0a77ea1648  libgo/go/archive/tar/testdata/pax-nul-xattrs.tar
  9bcdb456e865b1f43da92779d979f505  libgo/go/archive/tar/testdata/pax-path-hdr.tar
! 4af8d437fa76eaa10334876aaacbaf71  libgo/go/archive/tar/testdata/pax-pos-size-file.tar
! 0e08b69a32893b3f4de3f3220f519734  libgo/go/archive/tar/testdata/pax-records.tar
! 6208e4cb31659da52e3783a63c088fab  libgo/go/archive/tar/testdata/pax-sparse-big.tar
  f578fe90dd8a45ac3618adf6c881211f  libgo/go/archive/tar/testdata/pax.tar
  e38b27eaccb4391bdec553a7f3ae6b2f  libgo/go/archive/tar/testdata/small.txt
  c65bd2e50a56a2138bf1716f2fd56fe9  libgo/go/archive/tar/testdata/small2.txt
  10b9959a5f8951c09a8575f69ccaaad4  libgo/go/archive/tar/testdata/sparse-formats.tar
  2e308433b209b3af3be588c55838c217  libgo/go/archive/tar/testdata/star.tar
+ 3c830a780a8e4cf6fce81bdc9e6a7d11  libgo/go/archive/tar/testdata/trailing-slash.tar
+ e61f707dc2f53be43fa3305268a100df  libgo/go/archive/tar/testdata/ustar-file-devs.tar
  aad07c243d63c6dc24f218cb649b9c31  libgo/go/archive/tar/testdata/ustar-file-reg.tar
  2adf93d4ee327e554d256152b0bafc7e  libgo/go/archive/tar/testdata/ustar.tar
  9a4e79a89eb3490ff21b53303324301f  libgo/go/archive/tar/testdata/v7.tar
! c27492a55346ce5cd8ba5907f0f6c80d  libgo/go/archive/tar/testdata/writer-big-long.tar
! c41d3ee8d26caffff1a839bff5fdd38b  libgo/go/archive/tar/testdata/writer-big.tar
  88712af2a004429d7101fd0c710baa8f  libgo/go/archive/tar/testdata/writer.tar
  d76dc07e475b2905b5fec1cf319b6356  libgo/go/archive/tar/testdata/xattrs.tar
! a22d413f4a530bf677a46923ec77dcef  libgo/go/archive/tar/writer.go
! ed1e655a53e3daee8bf4f2557c00a275  libgo/go/archive/tar/writer_test.go
! 8b4e57d6f5924b0de3b0f2c036ae6631  libgo/go/archive/zip/reader.go
! 795fd7a3069695eee0ad30cedb3f9750  libgo/go/archive/zip/reader_test.go
! c8550052ae1d8d8f02d9dc11b88189ac  libgo/go/archive/zip/register.go
! ef5f1d8a9ec0932eaea5746cac2105b0  libgo/go/archive/zip/struct.go
  0e5c6061f34579a29cd9e706200e3fc5  libgo/go/archive/zip/testdata/crc32-not-streamed.zip
  a0dc0660d6847cfdefd1e34811fa3e2a  libgo/go/archive/zip/testdata/dd.zip
  abb58ce61c08e3f2b2498ee654e13589  libgo/go/archive/zip/testdata/go-no-datadesc-sig.zip
*************** d70296d7cb9f64744ca8f042fb3bc366  libgo/
*** 61089,61168 ****
  c405e9ec3c7566b1b42e5d52fd916619  libgo/go/archive/zip/testdata/symlink.zip
  f919ed2101b4fece8facfd3ccf238f95  libgo/go/archive/zip/testdata/test-trailing-junk.zip
  d8df365fbb6fac417a9fbde8585a9270  libgo/go/archive/zip/testdata/test.zip
  f1dcd13397f7e578380b3fa564156b46  libgo/go/archive/zip/testdata/unix.zip
  384be2e5e01c2618a144579f16ba024b  libgo/go/archive/zip/testdata/winxp.zip
  1547ce4f101eeb5c10d94718c6a226c9  libgo/go/archive/zip/testdata/zip64-2.zip
  8ae15e579d181b7b7837c197f02bbd5e  libgo/go/archive/zip/testdata/zip64.zip
! a5c3ea714b0ef729229684f72edb4d09  libgo/go/archive/zip/writer.go
! fb2ad1b2afa8a143a7327bc89d519fa9  libgo/go/archive/zip/writer_test.go
! 2815bc09d5c4eba354fcf8cca1b9e841  libgo/go/archive/zip/zip_test.go
! 3e84e4db8441517b6314b4048548143b  libgo/go/bufio/bufio.go
! 38c820552b6ec5666d9443cfcbcb16dc  libgo/go/bufio/bufio_test.go
  2a01cc49c4920902a10798d833b8ada0  libgo/go/bufio/example_test.go
! 57dbb550ccddbac1f19975154c727f6c  libgo/go/bufio/export_test.go
! 69f91266009ab7ed880e0b8780a99dac  libgo/go/bufio/scan.go
! 1eab8c1f56d0bbc160fb95d49fdf5a84  libgo/go/bufio/scan_test.go
! 4d6411855c0add06d51ea39cb85ef62f  libgo/go/builtin/builtin.go
! b75fd564f65ddf30df59ff18b4220e39  libgo/go/bytes/buffer.go
! 424d63085fc3f6958a31b9db38927821  libgo/go/bytes/buffer_test.go
! 40b6200d3798dd1a75a0dd8ea0291bda  libgo/go/bytes/bytes.go
! 5d48dfac517a29aa8d988491ba161883  libgo/go/bytes/bytes_amd64.go
  3e8c1ed8cbd5aacf6767c020d97deb29  libgo/go/bytes/bytes_decl.go
! b859c0ba0a8d9d62b7024970c0734126  libgo/go/bytes/bytes_generic.go
! de613e2243b72271570c95d6e072d7c3  libgo/go/bytes/bytes_s390x.go
! 81bb964a3a14207536295644532eaeb7  libgo/go/bytes/bytes_test.go
  09df27191a3176178abdf282c05d95ea  libgo/go/bytes/compare_test.go
! f3df4b7c059a2351eae00ceadced3ff4  libgo/go/bytes/equal_test.go
! eb7e88630cb5b267960062e1b92f199b  libgo/go/bytes/example_test.go
! 412d6cc36b1ce545eb83e0a0fb9a59fd  libgo/go/bytes/export_test.go
  d7566d11c30b0cd4ab36b38565366637  libgo/go/bytes/indexbyte.c
! bc4108615b2530662ec61debb216038d  libgo/go/bytes/reader.go
! 997aac369fa82f8b2ad2263639350cab  libgo/go/bytes/reader_test.go
! 003d3429dfabfa2ccbc566e492fccff0  libgo/go/cmd/cgo/ast.go
! e6bd914918caaff96efa86df5c0a0809  libgo/go/cmd/cgo/doc.go
! 21602f57ace55ff98b8889281c96361c  libgo/go/cmd/cgo/gcc.go
  944792ddea61b43a5e1307b079a682e2  libgo/go/cmd/cgo/godefs.go
! f20c1de76b107722a4202667d3037f20  libgo/go/cmd/cgo/main.go
! c08673f88cda97cc8daa39c85c5512be  libgo/go/cmd/cgo/out.go
  20f4ce54c3021ae87f2682eea92b104d  libgo/go/cmd/cgo/util.go
! 16a024d475cedd007d25a96adf2cf001  libgo/go/cmd/go/alldocs.go
! 181c2b3dc32dcb70affa07751519f718  libgo/go/cmd/go/bootstrap.go
! 0476b81d2735f79d66d505b420198d29  libgo/go/cmd/go/bug.go
! adac16fb0602fbadb3f7370574f7c4d3  libgo/go/cmd/go/build.go
! b16d519b5e3cb0de66f076900da91053  libgo/go/cmd/go/build_test.go
! 743b2830e49a4508aaa854ed5a449c21  libgo/go/cmd/go/clean.go
! 224cbfc50a9e800f2f2e3747061d92f7  libgo/go/cmd/go/context.go
! 6875633f2a39e3034acda31d1806f78a  libgo/go/cmd/go/discovery.go
! 53a8706bca48e84ff0b19c0091094ddd  libgo/go/cmd/go/doc.go
! a6ccf44455faf08d2a24238b6e4da319  libgo/go/cmd/go/env.go
! e40915efd7f71b6f89e57204c9c80a45  libgo/go/cmd/go/fix.go
! 190c51b2d8ebe576d1444728922daa5d  libgo/go/cmd/go/fmt.go
! 7969e9b621311b8541a014430586acc9  libgo/go/cmd/go/generate.go
! bcfd383f261ac5c210baf0d3aebde601  libgo/go/cmd/go/generate_test.go
! f845cc1128eeff52f8f491c9adce8f37  libgo/go/cmd/go/get.go
  37def72439f93e8e61475c283db6a01a  libgo/go/cmd/go/go11.go
! 32792132f67cb23793cf976cba27403d  libgo/go/cmd/go/go_test.go
! e387fc3bce8729bd6101346bcf226105  libgo/go/cmd/go/go_unix_test.go
! 83bc6049b5f422b2626cf28940ba0547  libgo/go/cmd/go/go_windows_test.go
! 3e3b54adef2462507b8f3af6dbb62384  libgo/go/cmd/go/help.go
! ee4efd81d695458c971c26d5b749b473  libgo/go/cmd/go/http.go
! dea098bcc4a76d3be434b00202af16e0  libgo/go/cmd/go/list.go
! 40bb174640b1d2ccbe2e1a225c00155f  libgo/go/cmd/go/main.go
! e9bd4391aaab5c8c7334fb626d78470f  libgo/go/cmd/go/match_test.go
  44744e559c90cf3e6101fc65cdddeee2  libgo/go/cmd/go/mkdoc.sh
! c3223f0fbe63b4dc35104596226ca6c3  libgo/go/cmd/go/note.go
! c8025118eadb6886297448ec7e34e7e3  libgo/go/cmd/go/note_test.go
! 54a276f4f6e3e47ca35e33cf34fae333  libgo/go/cmd/go/pkg.go
! 7a6de3990062b4c58ce424c53989d233  libgo/go/cmd/go/pkg_test.go
! 0d42dbbab19229929cee126c431b9bd2  libgo/go/cmd/go/run.go
! b69ed14ece5e2df76aaa56919ce4b603  libgo/go/cmd/go/script
! bebb67b5799a05cc3e22b5dcada7800a  libgo/go/cmd/go/script.txt
! 877a8da402b623061c366e80ea51627b  libgo/go/cmd/go/signal.go
! b9c476d0116aa78e6123e6d31a355116  libgo/go/cmd/go/signal_notunix.go
! 02bdd90b1d59d20cbed19016b8916b8c  libgo/go/cmd/go/signal_unix.go
! 213562d36367866a279d33f74a81fe80  libgo/go/cmd/go/tag_test.go
! 38888aa65c32310f57ba04fe0d32d0d5  libgo/go/cmd/go/test.bash
! 95e080500f2581b53d49a8a337c15808  libgo/go/cmd/go/test.go
  f35bb134d2b6f938d0cb6217c369ccb5  libgo/go/cmd/go/testdata/dep_test.go
  40f04f8211fc1ff2bace7a16c7cd42e0  libgo/go/cmd/go/testdata/example1_test.go
  504e5b15f3642c4e97189505093d2972  libgo/go/cmd/go/testdata/example2_test.go
--- 65058,65187 ----
  c405e9ec3c7566b1b42e5d52fd916619  libgo/go/archive/zip/testdata/symlink.zip
  f919ed2101b4fece8facfd3ccf238f95  libgo/go/archive/zip/testdata/test-trailing-junk.zip
  d8df365fbb6fac417a9fbde8585a9270  libgo/go/archive/zip/testdata/test.zip
+ 35cd7f4f002ba93b55a5b832198f3643  libgo/go/archive/zip/testdata/time-22738.zip
+ bfcf4ce71aef66857505b73e2f2c9bb1  libgo/go/archive/zip/testdata/time-7zip.zip
+ b55779dcd04fdb4d4963def6e3362e24  libgo/go/archive/zip/testdata/time-go.zip
+ 4d52570443721cf73810aa4f26e58d8a  libgo/go/archive/zip/testdata/time-infozip.zip
+ 64061c03a8ce4a945bc93b274570ce08  libgo/go/archive/zip/testdata/time-osx.zip
+ 6937b0d1aa22f7d372eb94e7e6bc57f4  libgo/go/archive/zip/testdata/time-win7.zip
+ 48fa7ac0937ecfe1b4473cf037d2ac21  libgo/go/archive/zip/testdata/time-winrar.zip
+ 55ce9ca2ffe0cd9cea36ef607a977b1c  libgo/go/archive/zip/testdata/time-winzip.zip
  f1dcd13397f7e578380b3fa564156b46  libgo/go/archive/zip/testdata/unix.zip
+ 2e593fbc513c32ddd7f3d8e341773c2d  libgo/go/archive/zip/testdata/utf8-7zip.zip
+ aa9c1a2a335be08945c565697c487c09  libgo/go/archive/zip/testdata/utf8-infozip.zip
+ 7939aedb59ada13a9ff176d62d680f3d  libgo/go/archive/zip/testdata/utf8-osx.zip
+ ef798b17dbd597b930070b057efbe211  libgo/go/archive/zip/testdata/utf8-winrar.zip
+ 579b6e4de5a42ea74bd21e2c25627c29  libgo/go/archive/zip/testdata/utf8-winzip.zip
  384be2e5e01c2618a144579f16ba024b  libgo/go/archive/zip/testdata/winxp.zip
  1547ce4f101eeb5c10d94718c6a226c9  libgo/go/archive/zip/testdata/zip64-2.zip
  8ae15e579d181b7b7837c197f02bbd5e  libgo/go/archive/zip/testdata/zip64.zip
! 5a353e33ace8b46d1f8124b45d9031b1  libgo/go/archive/zip/writer.go
! 4aea2cedc7823d16fb9419c73cff9225  libgo/go/archive/zip/writer_test.go
! b14e964ec55fe5a59a48b0de7cfed7bb  libgo/go/archive/zip/zip_test.go
! 10ba30a49654b416182c58a4debef15b  libgo/go/bufio/bufio.go
! 17220b64602fb285359ef9267908a200  libgo/go/bufio/bufio_test.go
  2a01cc49c4920902a10798d833b8ada0  libgo/go/bufio/example_test.go
! bacdebd82802cbd0f42f243c2aca0761  libgo/go/bufio/export_test.go
! 0e2035f092b290a06841ccfabf95a3f6  libgo/go/bufio/scan.go
! d6192a49d4cc35a0da4805e807512214  libgo/go/bufio/scan_test.go
! 4704e83780318f2aec6f4d2145db65cf  libgo/go/builtin/builtin.go
! cc4b1f41f772919beaaddbd10c8c990d  libgo/go/bytes/boundary_test.go
! feb2cdb63dc97c7b38dbb3c148f54984  libgo/go/bytes/buffer.go
! 55079fd504008b2db023cfb3bb917137  libgo/go/bytes/buffer_test.go
! 76e8208d2f3538bf1b0a8bc3146bb4a3  libgo/go/bytes/bytes.go
! 690ea27688a1b54b9a568ba4d99b00af  libgo/go/bytes/bytes_amd64.go
! e089786dde4b9691e30327553758c99c  libgo/go/bytes/bytes_arm64.go
  3e8c1ed8cbd5aacf6767c020d97deb29  libgo/go/bytes/bytes_decl.go
! 72c39f2bd0bf46212986d07d9b541269  libgo/go/bytes/bytes_generic.go
! 16d0da2fb3a059fbcaa0af1c8ff03b2a  libgo/go/bytes/bytes_s390x.go
! 55d9784a33a9b13b75962a814bb43885  libgo/go/bytes/bytes_test.go
  09df27191a3176178abdf282c05d95ea  libgo/go/bytes/compare_test.go
! 89c16bcec3ff71851dfb79a4871b0c1e  libgo/go/bytes/example_test.go
! 2c1743f178f9c1781a57ee13d8db43c7  libgo/go/bytes/export_test.go
  d7566d11c30b0cd4ab36b38565366637  libgo/go/bytes/indexbyte.c
! e0cfd7e63d85f7095586442cd3ccdd03  libgo/go/bytes/reader.go
! 75dc45543312bef9dded3a9822d4f106  libgo/go/bytes/reader_test.go
! 5a47529edcbc7723d59a82429588e2f4  libgo/go/cmd/buildid/buildid.go
! 7a3b8823d79387f7ff99452154b18940  libgo/go/cmd/buildid/doc.go
! 79c3d2ceec09c2037ca667a9fce3b4f7  libgo/go/cmd/cgo/ast.go
! 4ebe80114f286af656bbb684337181c3  libgo/go/cmd/cgo/doc.go
! b673fe82d1666d84b13e7892bccf4b2a  libgo/go/cmd/cgo/gcc.go
  944792ddea61b43a5e1307b079a682e2  libgo/go/cmd/cgo/godefs.go
! 13b82c762822143cd0130894644fb889  libgo/go/cmd/cgo/main.go
! c2d81b4b5055aeaecab93f25228b44d7  libgo/go/cmd/cgo/out.go
  20f4ce54c3021ae87f2682eea92b104d  libgo/go/cmd/cgo/util.go
! 702047a156bcf1e6731d1da3c60c0f03  libgo/go/cmd/go/alldocs.go
  37def72439f93e8e61475c283db6a01a  libgo/go/cmd/go/go11.go
! 0a104af8a83cfa8d7be19bf534c4673b  libgo/go/cmd/go/go_test.go
! c1f416ae6b4b8661522ddff170c6ad70  libgo/go/cmd/go/go_unix_test.go
! 46b050f2ed91ecbc2c22ee07b7832e56  libgo/go/cmd/go/go_windows_test.go
! 68747919de56bddadc66b134df9c126f  libgo/go/cmd/go/internal/base/base.go
! 2868eb1ceeeee35e5d781eaf5047d000  libgo/go/cmd/go/internal/base/env.go
! 5cf1bfd04780ef89384028888663beab  libgo/go/cmd/go/internal/base/flag.go
! e13389c7f3a934a3f3dad9b1f8d183a7  libgo/go/cmd/go/internal/base/path.go
! e9add7bd85b2ba8626c7cb1f00b40e84  libgo/go/cmd/go/internal/base/signal.go
! d2b5e73adbbf5e07a05303239c7f4128  libgo/go/cmd/go/internal/base/signal_notunix.go
! ee0a55abe0d4ed0e4e6c097d75d4e88b  libgo/go/cmd/go/internal/base/signal_unix.go
! 9c33108683f58b8ba4fd464e37396d21  libgo/go/cmd/go/internal/base/tool.go
! f93b92e615904c87f45403183af1b00c  libgo/go/cmd/go/internal/bug/bug.go
! 7ab79c19fb8f5ab41a4bf29312df0b7c  libgo/go/cmd/go/internal/cache/cache.go
! ea3a6539a33d9d2d2c0376a647fbaf82  libgo/go/cmd/go/internal/cache/cache_test.go
! 4a02a70a111dfa5a09822abaf293162c  libgo/go/cmd/go/internal/cache/default.go
! f5467addd715a27df7e906986d396f3e  libgo/go/cmd/go/internal/cache/hash.go
! e51e4ea1dd9836b29bde9a822bda936c  libgo/go/cmd/go/internal/cache/hash_test.go
! c490d71aefbb36f03612027d3e8fda9c  libgo/go/cmd/go/internal/cfg/cfg.go
! 60feca429724c834fac841c3aadea11e  libgo/go/cmd/go/internal/clean/clean.go
! f098659c54e0612ef8d4c6a00904bf77  libgo/go/cmd/go/internal/cmdflag/flag.go
! 8b5a82df41c25f51fb8dc5b04f80f113  libgo/go/cmd/go/internal/doc/doc.go
! 966fd066e371a51c944b52dee9612ca8  libgo/go/cmd/go/internal/envcmd/env.go
! 0685838f3af4e64be62b200642d930a7  libgo/go/cmd/go/internal/fix/fix.go
! f8d7fb0cb42c25d2adcafd36719dc6c4  libgo/go/cmd/go/internal/fmtcmd/fmt.go
! 6773f55b5f23c2eb9077760d2e9048ea  libgo/go/cmd/go/internal/generate/generate.go
! 620e5b1693e68872ab5b2e3e6d66d778  libgo/go/cmd/go/internal/generate/generate_test.go
! 07239f589ad0730df618bfa161d66cd4  libgo/go/cmd/go/internal/get/discovery.go
! ab2e2beba26d136d1474eae1140ee815  libgo/go/cmd/go/internal/get/get.go
! 9677d6fd02983d557b5a65d1e3023175  libgo/go/cmd/go/internal/get/pkg_test.go
! 96113e4fc82645aeb2e115fbd468fcb8  libgo/go/cmd/go/internal/get/tag_test.go
! 5d445754b7ff4e9d4d11ab5b1513bf1c  libgo/go/cmd/go/internal/get/vcs.go
! 6631d15e013913fb9ffb5dec56c5a1e8  libgo/go/cmd/go/internal/get/vcs_test.go
! 8577b0b76a874518d4a9c5994c3dfb50  libgo/go/cmd/go/internal/help/help.go
! 411bead05508ca550d1cb37b3eb2c824  libgo/go/cmd/go/internal/help/helpdoc.go
! ffbbbb13bb2522e5cebe0f8a57972529  libgo/go/cmd/go/internal/list/context.go
! 234795eb7afe68343a5cba6f6a851538  libgo/go/cmd/go/internal/list/list.go
! 951e2fa9c2a49264b244c26e103e6512  libgo/go/cmd/go/internal/load/flag.go
! 94fca467c2106c7d6fe48cdb396c70ac  libgo/go/cmd/go/internal/load/flag_test.go
! dee1cd1bd5ea329d3ce9d6e829174fa2  libgo/go/cmd/go/internal/load/icfg.go
! 5c1abc1b0baea31ab1ea68e3395466ec  libgo/go/cmd/go/internal/load/match_test.go
! dce1583245779aeb60af64af1f451696  libgo/go/cmd/go/internal/load/path.go
! 3ea7ecee60b63957f13d55b32db22449  libgo/go/cmd/go/internal/load/pkg.go
! b72e99b4a5fde53fa148b92c6968c8f2  libgo/go/cmd/go/internal/load/search.go
! 349b55428d6f8806756336333daf716e  libgo/go/cmd/go/internal/run/run.go
! c9b3c4b50c83d1900151b043f6ab573c  libgo/go/cmd/go/internal/str/path.go
! b0412c22237ffa4718db4c2b86a3bf7b  libgo/go/cmd/go/internal/str/str.go
! fb53f401fa8ea52cf2d8e1a45723e6ac  libgo/go/cmd/go/internal/test/cover.go
! 1f13ec4f3b3898fdc4a0d85cf5117057  libgo/go/cmd/go/internal/test/test.go
! b61ad175843e09686ca3ddda09e2e428  libgo/go/cmd/go/internal/test/testflag.go
! e9a5df2ecf6a126e2b85f8c05695f0d7  libgo/go/cmd/go/internal/tool/tool.go
! 92567d2260cf620668868061c9f3df03  libgo/go/cmd/go/internal/version/version.go
! b482e64cfdd6f76fa5d4c7513cb0efde  libgo/go/cmd/go/internal/vet/vet.go
! 66425c88403478b2886a4f07b4f28002  libgo/go/cmd/go/internal/vet/vetflag.go
! 2ede4c6f702277a26bb7fb6bc76e82e5  libgo/go/cmd/go/internal/web/bootstrap.go
! 8c7bac390afd14ce8b52a0b76f00ca50  libgo/go/cmd/go/internal/web/http.go
! 8af4644bbb2c980d3058b8a38afa4712  libgo/go/cmd/go/internal/web/security.go
! c6a6597731be7858f77a83a458a47495  libgo/go/cmd/go/internal/work/action.go
! 344174efdb240146e0b9880058e81d20  libgo/go/cmd/go/internal/work/build.go
! 8d1a0ee47362e76f6bfe4256e2f8a39f  libgo/go/cmd/go/internal/work/build_test.go
! 3c75455e243dba098f55bc06cc4e5165  libgo/go/cmd/go/internal/work/buildid.go
! fb5f34818d1f617b1dd6bed184ae6b7f  libgo/go/cmd/go/internal/work/exec.go
! c77c2165c8f52f14a772c299b2c45c4c  libgo/go/cmd/go/internal/work/gc.go
! d8233456eb15d1a8e587b9931e16bb72  libgo/go/cmd/go/internal/work/gccgo.go
! c509af2bbde850ff537b8fa2bc8679b0  libgo/go/cmd/go/internal/work/init.go
! e8bf79e69cbfcf2c826413dd37d5426e  libgo/go/cmd/go/internal/work/security.go
! 0e14fdada2b344043c720347aa8e45ad  libgo/go/cmd/go/internal/work/security_test.go
! 44529b3840dab683a7b62c004800dd8d  libgo/go/cmd/go/internal/work/testgo.go
! 2bbe569768af86b11872d43433da14cd  libgo/go/cmd/go/main.go
  44744e559c90cf3e6101fc65cdddeee2  libgo/go/cmd/go/mkdoc.sh
! 5eb0d4c401fde4d82a054a9d5b9a719a  libgo/go/cmd/go/note_test.go
  f35bb134d2b6f938d0cb6217c369ccb5  libgo/go/cmd/go/testdata/dep_test.go
  40f04f8211fc1ff2bace7a16c7cd42e0  libgo/go/cmd/go/testdata/example1_test.go
  504e5b15f3642c4e97189505093d2972  libgo/go/cmd/go/testdata/example2_test.go
*************** cdfe4e01e6b87944caa1b010a62ed70b  libgo/
*** 61190,61195 ****
--- 65209,65215 ----
  54eef8cf6b28473c2993ac57903a32df  libgo/go/cmd/go/testdata/local/sub/sub/subsub.go
  77dc70d9ba1eac52ae0d437dcae26355  libgo/go/cmd/go/testdata/norunexample/example_test.go
  e71d3b2866cdfbccecf38a631cfb0d4e  libgo/go/cmd/go/testdata/norunexample/test_test.go
+ d7b5869a32f0286956d27c6cbe279734  libgo/go/cmd/go/testdata/print_goroot.go
  98ab3c79c3a0e5fcced00e8433fecdca  libgo/go/cmd/go/testdata/rundir/sub/sub.go
  98ab3c79c3a0e5fcced00e8433fecdca  libgo/go/cmd/go/testdata/rundir/x.go
  4651555d01ee08df6a07c5d8f555e1b8  libgo/go/cmd/go/testdata/shadow/root1/src/foo/foo.go
*************** cc85519843b031c38ad202996206ea36  libgo/
*** 61203,61213 ****
--- 65223,65236 ----
  7f5070c4ac8f4ff0c9ffc9bd5b45a8bc  libgo/go/cmd/go/testdata/src/badtest/badsyntax/x_test.go
  edfcb20b131ab15b4d0b98a0528671dc  libgo/go/cmd/go/testdata/src/badtest/badvar/x.go
  c0a54ddf7723703de9780b1cae8788c7  libgo/go/cmd/go/testdata/src/badtest/badvar/x_test.go
+ c0f5903dce7aafe128ab8634edcd14f1  libgo/go/cmd/go/testdata/src/bench/x_test.go
  e56f3d7d74bb4818e08d13bf64c8aece  libgo/go/cmd/go/testdata/src/benchfatal/x_test.go
  2c2939eab43d5052c33a91d1fa88703b  libgo/go/cmd/go/testdata/src/canonical/a/a.go
  f2fca4cebccb297b9c9d3a955fa15ab9  libgo/go/cmd/go/testdata/src/canonical/a/vendor/c/c.go
  0b51ef62e48405d3b1bd1196c534f147  libgo/go/cmd/go/testdata/src/canonical/b/b.go
  8666e1c19139f2c60e2e8b25d361130f  libgo/go/cmd/go/testdata/src/canonical/d/d.go
+ a1f77591e7cfdd671c794ce8050715b1  libgo/go/cmd/go/testdata/src/cgoasm/p.go
+ 8fb5f5f02552528e4819eda01ea59fa2  libgo/go/cmd/go/testdata/src/cgoasm/p.s
  693e628fa432bb46d7b506083f6c7cde  libgo/go/cmd/go/testdata/src/cgocover/p.go
  7a232a911748d69605456f6c837772c9  libgo/go/cmd/go/testdata/src/cgocover/p_test.go
  693e628fa432bb46d7b506083f6c7cde  libgo/go/cmd/go/testdata/src/cgocover2/p.go
*************** cfe6243535753642d049831fd13501c6  libgo/
*** 61219,61224 ****
--- 65242,65271 ----
  693e628fa432bb46d7b506083f6c7cde  libgo/go/cmd/go/testdata/src/cgocover4/p.go
  3341ed59f19ed1523b9309edcfb6d48e  libgo/go/cmd/go/testdata/src/cgocover4/x_test.go
  eb921f86e1d1c1cd34e2800378e612a0  libgo/go/cmd/go/testdata/src/cgotest/m.go
+ d6e45b285c40c76d0cb617c504bf38e4  libgo/go/cmd/go/testdata/src/complex/main.go
+ 8e23a01cc8ca425634c61cdf156a67ab  libgo/go/cmd/go/testdata/src/complex/nest/sub/test12/p.go
+ 995f56f2fa867c98dbe1fe74e2651c70  libgo/go/cmd/go/testdata/src/complex/nest/sub/test23/p.go
+ f2aa4599a1f6b68a612aee290772d564  libgo/go/cmd/go/testdata/src/complex/nest/sub/vendor/v2/v2.go
+ c20eb8c8c816e5c99c282cd4c8fc525c  libgo/go/cmd/go/testdata/src/complex/nest/vendor/v1/v1.go
+ 0b9075b836f6de0a9a23cf2adc15a585  libgo/go/cmd/go/testdata/src/complex/nest/vendor/v2/v2.go
+ 51fdd3141251e30aba656af21aa2e85c  libgo/go/cmd/go/testdata/src/complex/nest/vendor/v3/v3.go
+ 9aa1f36f505e7aef2cfa910197845a2b  libgo/go/cmd/go/testdata/src/complex/vendor/v/v.go
+ 277ea39f4ec35fc31c8ef05719dae627  libgo/go/cmd/go/testdata/src/complex/w/w.go
+ df7756ec4fe28319c9c41209413f6a65  libgo/go/cmd/go/testdata/src/coverasm/p.go
+ 8efb885073bf334a8accce56732980df  libgo/go/cmd/go/testdata/src/coverasm/p.s
+ e26302aa25007ca4d8e72cd2eea650f1  libgo/go/cmd/go/testdata/src/coverasm/p_test.go
+ fb948ff5604170caa08a9f29689a3e7e  libgo/go/cmd/go/testdata/src/coverbad/p.go
+ 7dbab7a6312b498fea15d733c43f5a13  libgo/go/cmd/go/testdata/src/coverbad/p1.go
+ 9695ad48ebc4a01123118f3782d70933  libgo/go/cmd/go/testdata/src/coverbad/p_test.go
+ 8227819c267b56e27a163219e706fe98  libgo/go/cmd/go/testdata/src/coverdep/p.go
+ 726b8a82a1c281793bef2cd967726fae  libgo/go/cmd/go/testdata/src/coverdep/p1/p1.go
+ 8a1f5a7e9b327b3e85972df8fc3d6794  libgo/go/cmd/go/testdata/src/coverdep/p_test.go
+ 403de933c0a84ee756cfa697455f411c  libgo/go/cmd/go/testdata/src/coverdep2/p1/p.go
+ b521dd407a3e6d0e440752e9e8ad381d  libgo/go/cmd/go/testdata/src/coverdep2/p1/p_test.go
+ a12f3d9b328d17da302678def9e9c9d7  libgo/go/cmd/go/testdata/src/coverdep2/p2/p2.go
+ 608afeb89ce7ace23b9a50121f3a5f24  libgo/go/cmd/go/testdata/src/coverdot1/p.go
+ ef5f9a3e26a41b72c169dde3473e848a  libgo/go/cmd/go/testdata/src/coverdot2/p.go
+ 32ca1c986fa3eab15dd3e81f978348ff  libgo/go/cmd/go/testdata/src/coverdot2/p_test.go
  645aad3a296beaccd50155a33a6fa02a  libgo/go/cmd/go/testdata/src/dupload/dupload.go
  73f06e46b599567be5e873ddebe090ec  libgo/go/cmd/go/testdata/src/dupload/p/p.go
  a1738a1186e845aa5ba8d48b78d1b445  libgo/go/cmd/go/testdata/src/dupload/p2/p2.go
*************** cfc8eb0d9a477d3d3d04e7ba48b64723  libgo/
*** 61235,61240 ****
--- 65282,65292 ----
  73f06e46b599567be5e873ddebe090ec  libgo/go/cmd/go/testdata/src/empty/testxtest/test_test.go
  cfc8eb0d9a477d3d3d04e7ba48b64723  libgo/go/cmd/go/testdata/src/empty/testxtest/xtest_test.go
  cfc8eb0d9a477d3d3d04e7ba48b64723  libgo/go/cmd/go/testdata/src/empty/xtest/xtest_test.go
+ d41d8cd98f00b204e9800998ecf8427e  libgo/go/cmd/go/testdata/src/exclude/empty/x.txt
+ ece39f757fb0881fddadab76f785e9d5  libgo/go/cmd/go/testdata/src/exclude/ignore/_x.go
+ 5d01c4c6d2d95f1b5c0aaf2e6fe3b220  libgo/go/cmd/go/testdata/src/exclude/x.go
+ fbb77437669c6adee4139f14a6932450  libgo/go/cmd/go/testdata/src/exclude/x_linux.go
+ 0cf320a9d3c79aa616e16846cece55da  libgo/go/cmd/go/testdata/src/failfast_test.go
  f0434e9cfbdf541fcd43eca33c996417  libgo/go/cmd/go/testdata/src/gencycle/gencycle.go
  a917a087fb2c44e151125d54a3a1d269  libgo/go/cmd/go/testdata/src/go-cmd-test/helloworld.go
  7ce2a13bb1662b69c18b42abaed7957f  libgo/go/cmd/go/testdata/src/importmain/ismain/main.go
*************** a917a087fb2c44e151125d54a3a1d269  libgo/
*** 61242,61256 ****
--- 65294,65315 ----
  f5737864a1a0387079cc90c1ad9b5b0c  libgo/go/cmd/go/testdata/src/importmain/test/test_test.go
  5d254a74463cfabb1158cbd282c160e5  libgo/go/cmd/go/testdata/src/main_test/m.go
  972df480ee23c5b32267c20c453e8a6d  libgo/go/cmd/go/testdata/src/main_test/m_test.go
+ 6c5a049bb2ec33c6449d9420d2ceb404  libgo/go/cmd/go/testdata/src/multimain/multimain_test.go
  f948e5500252bae75b154f879552bbaf  libgo/go/cmd/go/testdata/src/my.pkg/main/main.go
  768f2afb03eee40ea793f601494a9458  libgo/go/cmd/go/testdata/src/my.pkg/pkg.go
+ 6fd16e63e25582e272a842ec5abd9370  libgo/go/cmd/go/testdata/src/not_main/not_main.go
  dd69d39a2ffc5ffa18cd62ca641c49b1  libgo/go/cmd/go/testdata/src/notest/hello.go
  7968a2c864a0587b37bde0545232c680  libgo/go/cmd/go/testdata/src/run/bad.go
  d0f9c08fd28c3697b935aeac6c08033a  libgo/go/cmd/go/testdata/src/run/good.go
  2757a6889c7b6422cf6372596483e62d  libgo/go/cmd/go/testdata/src/run/internal/internal.go
  a4b7cd72589a5d19df9ae2d9a5c2ff67  libgo/go/cmd/go/testdata/src/run/subdir/internal/private/private.go
+ 3152431f650dd215d7c571d498dc63f3  libgo/go/cmd/go/testdata/src/skipper/skip_test.go
+ 2a644bbe079ba654cd6ea08a8e43e4fe  libgo/go/cmd/go/testdata/src/sleepy1/p_test.go
+ 2a644bbe079ba654cd6ea08a8e43e4fe  libgo/go/cmd/go/testdata/src/sleepy2/p_test.go
+ b65faffa765c7e0e12fed07d1ba0db90  libgo/go/cmd/go/testdata/src/sleepybad/p.go
  73f06e46b599567be5e873ddebe090ec  libgo/go/cmd/go/testdata/src/syntaxerror/x.go
  4d48c0cd948db12d7d7a711104aeb333  libgo/go/cmd/go/testdata/src/syntaxerror/x_test.go
+ d08d2e6d0ebb7522e72f76604a340394  libgo/go/cmd/go/testdata/src/testcache/testcache_test.go
  64f389b3cf16240b2edece9d8f71896f  libgo/go/cmd/go/testdata/src/testcycle/p1/p1.go
  b5bb415847a20eaf8286faf533b66477  libgo/go/cmd/go/testdata/src/testcycle/p1/p1_test.go
  92b480cfd6851187e3dd5fb4a445e64d  libgo/go/cmd/go/testdata/src/testcycle/p2/p2.go
*************** a61866ee638182ff4bfb83d9b54e6c11  libgo/
*** 61262,61268 ****
  6efdee3ffcedbdb64c20b05b5d520466  libgo/go/cmd/go/testdata/src/testdep/p1/p1_test.go
  b975e5fe7f8f095eaec57fad0cc0d33d  libgo/go/cmd/go/testdata/src/testdep/p2/p2.go
  2ea9dfad0bbb9210f8425491024b3147  libgo/go/cmd/go/testdata/src/testdep/p3/p3.go
! 53c29f4428d2d132b12d67e237518233  libgo/go/cmd/go/testdata/src/testrace/race_test.go
  9db6272ce5a953b135201898df4fd647  libgo/go/cmd/go/testdata/src/vend/bad.go
  ae393481947b7a614327a9059173b4f2  libgo/go/cmd/go/testdata/src/vend/dir1/dir1.go
  c280e485814ac6a32a3f76125d0277e7  libgo/go/cmd/go/testdata/src/vend/good.go
--- 65321,65332 ----
  6efdee3ffcedbdb64c20b05b5d520466  libgo/go/cmd/go/testdata/src/testdep/p1/p1_test.go
  b975e5fe7f8f095eaec57fad0cc0d33d  libgo/go/cmd/go/testdata/src/testdep/p2/p2.go
  2ea9dfad0bbb9210f8425491024b3147  libgo/go/cmd/go/testdata/src/testdep/p3/p3.go
! 2de7172c70903546e0dccbbac3f35853  libgo/go/cmd/go/testdata/src/testlist/bench_test.go
! 96286132d39a8ef8649196dfb79afef2  libgo/go/cmd/go/testdata/src/testlist/example_test.go
! d9682de9694b486d40d171bc8081b4f0  libgo/go/cmd/go/testdata/src/testlist/test_test.go
! d4386d1ed89c5fdfe6a88d49988f6ac1  libgo/go/cmd/go/testdata/src/testrace/race_test.go
! 5e74f8aafbf35ae1e97cf885bb89ee53  libgo/go/cmd/go/testdata/src/testregexp/x_test.go
! b17c3d551640c101732bba4a66612e1d  libgo/go/cmd/go/testdata/src/testregexp/z_test.go
  9db6272ce5a953b135201898df4fd647  libgo/go/cmd/go/testdata/src/vend/bad.go
  ae393481947b7a614327a9059173b4f2  libgo/go/cmd/go/testdata/src/vend/dir1/dir1.go
  c280e485814ac6a32a3f76125d0277e7  libgo/go/cmd/go/testdata/src/vend/good.go
*************** cadaa9df0ea1bcaf6cc77085646d28d5  libgo/
*** 61280,61285 ****
--- 65344,65353 ----
  2e72e94cfb212a0c607b0622a19d046e  libgo/go/cmd/go/testdata/src/vend/x/vendor/p/p/p.go
  214c8034011d6497b7e7f35e3825ed3a  libgo/go/cmd/go/testdata/src/vend/x/vendor/r/r.go
  b6396d9bf651f9cf9e8390af0777ae61  libgo/go/cmd/go/testdata/src/vend/x/x.go
+ 1a6b1f83665ac7e72f054ab4c42d3094  libgo/go/cmd/go/testdata/src/vetcycle/p.go
+ 5d496ebf9965661f1c284a28369e0c03  libgo/go/cmd/go/testdata/src/vetfail/p1/p1.go
+ 4eebccfb3a36e9ff63c34985b73e6b8f  libgo/go/cmd/go/testdata/src/vetfail/p2/p2.go
+ 0a8a47478f9bb090683980b36c4a98ca  libgo/go/cmd/go/testdata/src/vetfail/p2/p2_test.go
  cfc8eb0d9a477d3d3d04e7ba48b64723  libgo/go/cmd/go/testdata/src/vetpkg/a_test.go
  61eb1aca1eb18dac980619d3f6606937  libgo/go/cmd/go/testdata/src/vetpkg/b.go
  645874849db0b8013a55b5c125ea00fe  libgo/go/cmd/go/testdata/src/vetpkg/c.go
*************** cfc8eb0d9a477d3d3d04e7ba48b64723  libgo/
*** 61287,61292 ****
--- 65355,65362 ----
  135aa314a16ab626d5b4ccc81029bdf1  libgo/go/cmd/go/testdata/src/xtestonly/f_test.go
  996c5fa6dc227f8b2fec495bb3a8fc79  libgo/go/cmd/go/testdata/standalone_benchmark_test.go
  02efc5cfda08a5dcbb3aa29b25be4b4f  libgo/go/cmd/go/testdata/standalone_fail_sub_test.go
+ 06ad0edd68b60aae94637a07ab470feb  libgo/go/cmd/go/testdata/standalone_main_normal_test.go
+ 3db5fc59ef57be6c92349b4fca697294  libgo/go/cmd/go/testdata/standalone_main_wrong_test.go
  a33d9c7920a3333ea64e3529788edcec  libgo/go/cmd/go/testdata/standalone_parallel_sub_test.go
  a16600c7850f7e83e8169ccc7e3962d6  libgo/go/cmd/go/testdata/standalone_sub_test.go
  024187500d356e5d0ad299a798dfb8ba  libgo/go/cmd/go/testdata/standalone_test.go
*************** de834fca939fb2530d1269d53ef8393a  libgo/
*** 61311,61330 ****
  e5ddee27c430efc13ac06f49ea236f59  libgo/go/cmd/go/testdata/testvendor2/src/p/p.go
  ece39f757fb0881fddadab76f785e9d5  libgo/go/cmd/go/testdata/testvendor2/vendor/x/x.go
  a1f29ff972cb9c303bda5a634ec3f6d6  libgo/go/cmd/go/testdata/timeoutbench_test.go
! 751a955f23739a43bada4c9ac1e3c6be  libgo/go/cmd/go/testflag.go
! 828a01f296140dd18e4a4e418a8462e6  libgo/go/cmd/go/testgo.go
! 0a6611a9580ec3694b6e6708f63bce7a  libgo/go/cmd/go/tool.go
! 54378840b005a81e9eb0a8800333b720  libgo/go/cmd/go/vcs.go
! a98a106273bcca488b940d0956bb2580  libgo/go/cmd/go/vcs_test.go
! 8b77ab8083ec70f90185585226558083  libgo/go/cmd/go/vendor_test.go
! f82985557fc20b0fa8eda5f791d1e50b  libgo/go/cmd/go/version.go
! 4aee4d4b4c535d87129a8ed48ee2522a  libgo/go/cmd/go/vet.go
! a18a33aa41fa64073b586a1bac3f2525  libgo/go/cmd/gofmt/doc.go
! d2aeecaa53a73b99262d60f94b8c5efa  libgo/go/cmd/gofmt/gofmt.go
! b9e732c65dae0c3d4f72ae78bddab5b3  libgo/go/cmd/gofmt/gofmt_test.go
  7425e93d2d709f08b6d9c55a2db29b5a  libgo/go/cmd/gofmt/internal.go
  97e6cf995b01e2b02091287c44f6a0f4  libgo/go/cmd/gofmt/long_test.go
! 08443dbeffb54c60a4cc04cdf3e322f3  libgo/go/cmd/gofmt/rewrite.go
  8cbd03fcc467680232794c829d6dfcb2  libgo/go/cmd/gofmt/simplify.go
  03bee86190c5c4c3de3e3226adfe5d22  libgo/go/cmd/gofmt/testdata/comments.golden
  03bee86190c5c4c3de3e3226adfe5d22  libgo/go/cmd/gofmt/testdata/comments.input
--- 65381,65393 ----
  e5ddee27c430efc13ac06f49ea236f59  libgo/go/cmd/go/testdata/testvendor2/src/p/p.go
  ece39f757fb0881fddadab76f785e9d5  libgo/go/cmd/go/testdata/testvendor2/vendor/x/x.go
  a1f29ff972cb9c303bda5a634ec3f6d6  libgo/go/cmd/go/testdata/timeoutbench_test.go
! afbdc2b4c5e474f8d6c0cb01bb6a12d0  libgo/go/cmd/go/vendor_test.go
! ebf01e2a6cf40d4f3551d7ce9137e9a8  libgo/go/cmd/gofmt/doc.go
! 99746b8ed6724aeaf810efaf6a31ecaa  libgo/go/cmd/gofmt/gofmt.go
! 59ef02fbb27b6516b34fd12851b81ec7  libgo/go/cmd/gofmt/gofmt_test.go
  7425e93d2d709f08b6d9c55a2db29b5a  libgo/go/cmd/gofmt/internal.go
  97e6cf995b01e2b02091287c44f6a0f4  libgo/go/cmd/gofmt/long_test.go
! a2d4657145d758293f04b392e2b434bc  libgo/go/cmd/gofmt/rewrite.go
  8cbd03fcc467680232794c829d6dfcb2  libgo/go/cmd/gofmt/simplify.go
  03bee86190c5c4c3de3e3226adfe5d22  libgo/go/cmd/gofmt/testdata/comments.golden
  03bee86190c5c4c3de3e3226adfe5d22  libgo/go/cmd/gofmt/testdata/comments.input
*************** d983cd097582ed0127066af052e92347  libgo/
*** 61372,61382 ****
  fce50e14e5b1986e7646e0ada2935de8  libgo/go/cmd/gofmt/testdata/stdin7.input
  882c2b700d34e10e6b7634ab219c5b38  libgo/go/cmd/gofmt/testdata/typeswitch.golden
  0211f1b6a9bcd60c1d8bf9989b01168c  libgo/go/cmd/gofmt/testdata/typeswitch.input
! c962445988c2db9e7859c01deb9bbaa3  libgo/go/cmd/internal/browser/browser.go
  2751bc45c7c671452400b155c492052f  libgo/go/compress/bzip2/bit_reader.go
! 80e3139ec523a072d42943835c262c03  libgo/go/compress/bzip2/bzip2.go
! 05eefd6cd036841620a63c98e07aa4e1  libgo/go/compress/bzip2/bzip2_test.go
! f37b6f444f2e598662089bbad0620f89  libgo/go/compress/bzip2/huffman.go
  22e3daca4fc3cc00dade3db05ef0b000  libgo/go/compress/bzip2/move_to_front.go
  95da7ca97a8b8f5955fb7eb329784489  libgo/go/compress/bzip2/testdata/Mark.Twain-Tom.Sawyer.txt.bz2
  866d1b75ceb5d34415bbbebd354d072d  libgo/go/compress/bzip2/testdata/e.txt.bz2
--- 65435,65599 ----
  fce50e14e5b1986e7646e0ada2935de8  libgo/go/cmd/gofmt/testdata/stdin7.input
  882c2b700d34e10e6b7634ab219c5b38  libgo/go/cmd/gofmt/testdata/typeswitch.golden
  0211f1b6a9bcd60c1d8bf9989b01168c  libgo/go/cmd/gofmt/testdata/typeswitch.input
! 72f099b8daefed699d6006c333a18319  libgo/go/cmd/internal/browser/browser.go
! 074258f3dd1b04e063585beb03edd7f7  libgo/go/cmd/internal/buildid/buildid.go
! 9b67e9a8449fb19866ae6ffb261b7770  libgo/go/cmd/internal/buildid/buildid_test.go
! cd738c49132d9837184c842e687685eb  libgo/go/cmd/internal/buildid/note.go
! 931b51af11f0f217078a79d94ae93333  libgo/go/cmd/internal/buildid/rewrite.go
! b945db3019058425774a99fbc2f558a1  libgo/go/cmd/internal/buildid/testdata/a.elf
! 78804bb4cda0fbbde0a8fcd54a9883df  libgo/go/cmd/internal/buildid/testdata/a.macho
! defd93d5dbf0b5c75fac294210b48fe0  libgo/go/cmd/internal/buildid/testdata/a.pe
! a66a3593ef05ee5a840b5ab97161da90  libgo/go/cmd/internal/buildid/testdata/p.a
! ee83232ed44d0b93433f04b9ebf7b257  libgo/go/cmd/internal/edit/edit.go
! 3af1ecc2c190e82042995e259be4fbdf  libgo/go/cmd/internal/edit/edit_test.go
! 0b847d108cd8f38f616a0acf92ad1566  libgo/go/cmd/internal/objabi/autotype.go
! bc6b013b444d67b0785a2e23884fa963  libgo/go/cmd/internal/objabi/doc.go
! 04a932524da9dbf0cbc5ae12dbcbbf09  libgo/go/cmd/internal/objabi/flag.go
! d7eee141d86e220c265a62b678916ad6  libgo/go/cmd/internal/objabi/funcdata.go
! 703d152d0ae8e8143bd819f7051aac51  libgo/go/cmd/internal/objabi/head.go
! c871e81f99896cdf0a99abeabf9ac976  libgo/go/cmd/internal/objabi/line.go
! e9209d90dcfff3795c4e8c204c2b6f16  libgo/go/cmd/internal/objabi/path.go
! 5400317c37f34db5e225d1831d8bdecf  libgo/go/cmd/internal/objabi/path_test.go
! 5c22ee4a0ef164a17b641bbd44175620  libgo/go/cmd/internal/objabi/reloctype.go
! e789f6ce7339a54e6f7d10d1d242d752  libgo/go/cmd/internal/objabi/reloctype_string.go
! a731a6a048b89c5f3f3ff6f0325e178d  libgo/go/cmd/internal/objabi/stack.go
! 29a0ae48bf177dcc6fd4d0c4b1505ae3  libgo/go/cmd/internal/objabi/symkind.go
! 9c537f51821f85880c5dde457d1fbd23  libgo/go/cmd/internal/objabi/symkind_string.go
! f48d9dd05b78c0bfc41d13c12f180a56  libgo/go/cmd/internal/objabi/typekind.go
! c122316d9faa0e0564f34a0e7a567810  libgo/go/cmd/internal/objabi/util.go
! f527259e0ad6ad8925bc02d4a2661c8d  libgo/go/cmd/internal/test2json/test2json.go
! c578afa830020b698532bad3e68e3207  libgo/go/cmd/internal/test2json/test2json_test.go
! a97b278a09fba3081091218371290ecf  libgo/go/cmd/internal/test2json/testdata/ascii.json
! 1c175713541ed5815e6fc54fe1755112  libgo/go/cmd/internal/test2json/testdata/ascii.test
! 3805f9f74b9b09fbdb2c8f5ffdf0260c  libgo/go/cmd/internal/test2json/testdata/smiley.json
! 0356d475ad93acd0b8c1f11f572321be  libgo/go/cmd/internal/test2json/testdata/smiley.test
! 7c6bb6c010a117765c60f0842ba81ce8  libgo/go/cmd/internal/test2json/testdata/unicode.json
! 83f40559c1c41931ab89fc25ff03a043  libgo/go/cmd/internal/test2json/testdata/unicode.test
! 3f4aabe867e04f2d4b36cd363ca0b3b4  libgo/go/cmd/internal/test2json/testdata/vet.json
! 73cdba538cd7004bdd40ac625faf19ac  libgo/go/cmd/internal/test2json/testdata/vet.test
! 1e7a89f1b5a64b9db103cd447122b94b  libgo/go/cmd/test2json/main.go
! 9eb6700aaba7ff06c6c4f36cfc3264b5  libgo/go/cmd/vet/README
! 68105ff2a3d8e061b477116e95a5fca1  libgo/go/cmd/vet/all/main.go
! 3a7eecb14d07702d9480d16d4e5f3155  libgo/go/cmd/vet/all/whitelist/386.txt
! 7f7a4600e86f4aad47b8c9cb8c7710fd  libgo/go/cmd/vet/all/whitelist/all.txt
! 2959c04afc3cf6715603a1545341989f  libgo/go/cmd/vet/all/whitelist/amd64.txt
! 5c3f70c77ec4458165175c743a3bc05f  libgo/go/cmd/vet/all/whitelist/android_386.txt
! 7074176ff5276f5f45a876bb3163fbbc  libgo/go/cmd/vet/all/whitelist/android_amd64.txt
! 7aeeba25df2ca44e46721ffb6c35828a  libgo/go/cmd/vet/all/whitelist/android_arm.txt
! b7e37322396d65554f99569aa7cefdf5  libgo/go/cmd/vet/all/whitelist/arm.txt
! 66a1c628440cabd08cfd5aaa8b99a7d3  libgo/go/cmd/vet/all/whitelist/arm64.txt
! 0fe42566f259816d8952fe46d1088ad6  libgo/go/cmd/vet/all/whitelist/darwin_386.txt
! 05ebbc7cda9a9eaa59b7f89df0aacf4b  libgo/go/cmd/vet/all/whitelist/darwin_amd64.txt
! aef8c3dcf1f9a9acf3ff7cb9d18ea611  libgo/go/cmd/vet/all/whitelist/darwin_arm.txt
! 60e7ed667b7b9c36a241b5c46ace0c0c  libgo/go/cmd/vet/all/whitelist/darwin_arm64.txt
! b5502b2284479d83cd3bce5c4c72fbd5  libgo/go/cmd/vet/all/whitelist/dragonfly_amd64.txt
! b8f7973eac10b82adcc59e583951eb78  libgo/go/cmd/vet/all/whitelist/freebsd_386.txt
! 8a52ee8b05ec1250c366b8375e46bbc2  libgo/go/cmd/vet/all/whitelist/freebsd_amd64.txt
! 3add5267e75de1b436a26030e5a36b84  libgo/go/cmd/vet/all/whitelist/freebsd_arm.txt
! 6ee4946f3a4ed76cfaabdb00e7f00148  libgo/go/cmd/vet/all/whitelist/linux_386.txt
! 9c4b98066aa0e027476c266fb6edc779  libgo/go/cmd/vet/all/whitelist/linux_amd64.txt
! 29a9239bb1e1ea9f20f78138c0d532c3  libgo/go/cmd/vet/all/whitelist/linux_arm.txt
! c2c37e5c0aacac395f0cad3383a8323c  libgo/go/cmd/vet/all/whitelist/linux_arm64.txt
! ba48bdbeb652db9ade79b9b7ecee9a25  libgo/go/cmd/vet/all/whitelist/linux_ppc64x.txt
! c0c6938010bace2fc706f7afaae93c29  libgo/go/cmd/vet/all/whitelist/mips.txt
! 25d3aea491ab4957eb04090d2c392828  libgo/go/cmd/vet/all/whitelist/mips64x.txt
! 2044357b1e1afc9e956c103c9f1c51f5  libgo/go/cmd/vet/all/whitelist/mipsle.txt
! 5d3d9d645cb44cd738d6270b0786b084  libgo/go/cmd/vet/all/whitelist/mipsx.txt
! 76ff63d9038ad9b3719d4a788e80edad  libgo/go/cmd/vet/all/whitelist/nacl_386.txt
! f76d9ea75e50071f46d9e5fc570501f0  libgo/go/cmd/vet/all/whitelist/nacl_amd64p32.txt
! 36dd67589e698831b001db8301c7ad88  libgo/go/cmd/vet/all/whitelist/nacl_arm.txt
! 56185541122a930ac99789e61467649b  libgo/go/cmd/vet/all/whitelist/netbsd.txt
! c516f07e90b6dc084be334cd9e9c5277  libgo/go/cmd/vet/all/whitelist/netbsd_386.txt
! eb4b6e853b842df7a4f2e9d9dfce64d0  libgo/go/cmd/vet/all/whitelist/netbsd_amd64.txt
! e15ba63f9af5953c27f9936538c85e34  libgo/go/cmd/vet/all/whitelist/netbsd_arm.txt
! c4b03315511ba97e59d0fd5cd1366215  libgo/go/cmd/vet/all/whitelist/openbsd_386.txt
! ffdd2e2a3ca55e76950be3c332a014ff  libgo/go/cmd/vet/all/whitelist/openbsd_amd64.txt
! 01398e2627bcf50032feeb64c6e6e2cc  libgo/go/cmd/vet/all/whitelist/openbsd_arm.txt
! 54ef9532c84398730d28a0047790d55e  libgo/go/cmd/vet/all/whitelist/plan9_386.txt
! b3e23dfd71c0cdb5441bc77e7faacdb1  libgo/go/cmd/vet/all/whitelist/plan9_amd64.txt
! a6639298890411d6095e4bf92adc7ab3  libgo/go/cmd/vet/all/whitelist/plan9_arm.txt
! ddb75ff652a7b6078d3fadaf2d37c917  libgo/go/cmd/vet/all/whitelist/ppc64x.txt
! 0e120417aaeeb0c18b8c411e89531a1d  libgo/go/cmd/vet/all/whitelist/readme.txt
! 308977d4351e431ef877626eb0092fa5  libgo/go/cmd/vet/all/whitelist/s390x.txt
! ad06276384ebc339e1931751e52b24ce  libgo/go/cmd/vet/all/whitelist/solaris_amd64.txt
! 45a443f3e7ffbf195a565f658f84ec86  libgo/go/cmd/vet/all/whitelist/windows.txt
! c7299a0bef92dc930694803a9b6caac2  libgo/go/cmd/vet/all/whitelist/windows_386.txt
! e4376cd78f4a0716559be206efa306cd  libgo/go/cmd/vet/all/whitelist/windows_amd64.txt
! a7ee63b9417732d305be95abc42cd8e7  libgo/go/cmd/vet/asmdecl.go
! 83a409018fbdbba44324a05c34b2d4b3  libgo/go/cmd/vet/assign.go
! ca5e100a38ab1a8115a1996e918b4b36  libgo/go/cmd/vet/atomic.go
! ec190420f530f3b7e646b45fac03c470  libgo/go/cmd/vet/bool.go
! 39a3aadf760e268edfd52e3ed622951a  libgo/go/cmd/vet/buildtag.go
! 692101e818305333f74ffd0ca2b22ebf  libgo/go/cmd/vet/cgo.go
! f29ae57d126382c7da09d0e8bb513d5c  libgo/go/cmd/vet/composite.go
! af1a93c8f508bc04112b12ebb41562d4  libgo/go/cmd/vet/copylock.go
! 4077c0cc7df84c8a6c8dc455957c4e0c  libgo/go/cmd/vet/dead.go
! 047f6415d433e2259088da4c38f69fd1  libgo/go/cmd/vet/deadcode.go
! 7bb0d2835995deb495e379bba2154dc4  libgo/go/cmd/vet/doc.go
! 88102127c74b11d408d0ea170e707274  libgo/go/cmd/vet/httpresponse.go
! 897d803cb1395fc58b2d6ad7eea5cc40  libgo/go/cmd/vet/internal/cfg/builder.go
! 3a20b658cd92a48a72a8f322d8d5705a  libgo/go/cmd/vet/internal/cfg/cfg.go
! 62969636201e6a1fa3dd322caa28639d  libgo/go/cmd/vet/internal/cfg/cfg_test.go
! bcfae3ba6d73cdfc99d8888d9162bb23  libgo/go/cmd/vet/internal/whitelist/whitelist.go
! 9641cb7fe95a2e2a694350af4378736e  libgo/go/cmd/vet/lostcancel.go
! d2c87370b71d240c70abf010a30cfb02  libgo/go/cmd/vet/main.go
! 329cf540fdec8b4880d6a2a949f4a030  libgo/go/cmd/vet/method.go
! b9cf0a0ee0843e300d1459b77efd3306  libgo/go/cmd/vet/nilfunc.go
! 002a3007a9ce45ed56b9ffd94bd10ba8  libgo/go/cmd/vet/print.go
! 5ad6257930f5b8ebbc7fd1b672d179a6  libgo/go/cmd/vet/rangeloop.go
! 8a28a80291b686409acfead7b149f46d  libgo/go/cmd/vet/shadow.go
! 1b0ce47ad9409ae4b9d658a7e81f2993  libgo/go/cmd/vet/shift.go
! ee260eadcc0b7c86e769de4a6b1c8cdc  libgo/go/cmd/vet/structtag.go
! 22a273c3fb27b45bb470f39cc8f0fe68  libgo/go/cmd/vet/testdata/asm/asm.go
! a2d704b0e99f0d2a50208949b17af27f  libgo/go/cmd/vet/testdata/asm/asm1.s
! 8632c5be19b322dc5d875e1f5c5577a3  libgo/go/cmd/vet/testdata/asm/asm2.s
! c674978fef52c51099b04a0c2fa0f2ba  libgo/go/cmd/vet/testdata/asm/asm3.s
! 23f389152d03079813f454a63826ead4  libgo/go/cmd/vet/testdata/asm/asm4.s
! a4a8e6369cd2e4d05c451a0667c026e0  libgo/go/cmd/vet/testdata/asm/asm5.s
! 5c5b006e22bc2a79c0a831bf0f171643  libgo/go/cmd/vet/testdata/asm/asm6.s
! 88f1a809d693ef3197eb3d6108d77a4e  libgo/go/cmd/vet/testdata/asm/asm7.s
! b80cbbcf1b7637f60d9f52c4f5ee5109  libgo/go/cmd/vet/testdata/asm8.s
! 6b722dc9e3040915853113ca1dc0f81b  libgo/go/cmd/vet/testdata/assign.go
! 99da54edcdde1edaacf4e0af12c48063  libgo/go/cmd/vet/testdata/atomic.go
! 1e755d27532eedb5fa26966fa8f75a88  libgo/go/cmd/vet/testdata/bool.go
! bf7aa725e0101661932b22d5c80d6587  libgo/go/cmd/vet/testdata/buildtag/buildtag.go
! 2a3e604f91f5c8abe6ee3f24da2d28e5  libgo/go/cmd/vet/testdata/buildtag/buildtag_bad.go
! 3d8b191c81284306116e464a600ff044  libgo/go/cmd/vet/testdata/cgo/cgo.go
! a5f1780105b8ffcc39f8a268fb564936  libgo/go/cmd/vet/testdata/cgo/cgo2.go
! 2613a0ae384cf2a6ced0e2877e84ec2f  libgo/go/cmd/vet/testdata/cgo/cgo3.go
! f5410ed224924c7765af142d4d095230  libgo/go/cmd/vet/testdata/cgo/cgo4.go
! c3aa65208ab55810d56ae5583c24bc26  libgo/go/cmd/vet/testdata/composite.go
! 064fe3b853fc59572c1cf65635644357  libgo/go/cmd/vet/testdata/copylock.go
! dadcd91494784896494554805f21f90a  libgo/go/cmd/vet/testdata/copylock_func.go
! 724e932986c583121fcd8c64857e42b9  libgo/go/cmd/vet/testdata/copylock_range.go
! 2d69f28884987f2d5b6dfb2e274c3394  libgo/go/cmd/vet/testdata/deadcode.go
! c228bc60ed8e2a12e10a97890e376f5c  libgo/go/cmd/vet/testdata/divergent/buf.go
! 773165776b0030ed36c18d9a1deab336  libgo/go/cmd/vet/testdata/divergent/buf_test.go
! e1dc0364dc708e2de5ea859b0016b3e1  libgo/go/cmd/vet/testdata/httpresponse.go
! 7f044fe4728930b8dc6ca823f8a1e7c8  libgo/go/cmd/vet/testdata/incomplete/examples_test.go
! c6c3891e7dc3ec9bc8333e9dd2a27368  libgo/go/cmd/vet/testdata/lostcancel.go
! 9c1673b5fe9e9f2fc64e2d719c140686  libgo/go/cmd/vet/testdata/method.go
! cb170574be78290cf6e09ede284db4f4  libgo/go/cmd/vet/testdata/nilfunc.go
! b9b0fb6c1d41c558f9fa444465913976  libgo/go/cmd/vet/testdata/print.go
! c8061170a0417b4817ccc2651ec9cb1a  libgo/go/cmd/vet/testdata/rangeloop.go
! b343b96b4f352e503d86ed2cc9c6ba1f  libgo/go/cmd/vet/testdata/shadow.go
! cc2b5d4afca90819aafadb8375a43ed0  libgo/go/cmd/vet/testdata/shift.go
! 4868d519490aa156427563e79d912c39  libgo/go/cmd/vet/testdata/structtag.go
! 21fd9ad36cdb9428b2a66825893a59f5  libgo/go/cmd/vet/testdata/tagtest/file1.go
! ca55e39ef7ed91cf779d72c2ed318e8e  libgo/go/cmd/vet/testdata/tagtest/file2.go
! 3819419931bbd5ac1b0606799f69232d  libgo/go/cmd/vet/testdata/testingpkg/tests.go
! 6b8e318e80e4a86145e5fcd29724f716  libgo/go/cmd/vet/testdata/testingpkg/tests_test.go
! 2dd6002f28fb7e936b401c9cf9030f48  libgo/go/cmd/vet/testdata/unsafeptr.go
! 422ecf8881117d78c2bc915b6c6cf7ae  libgo/go/cmd/vet/testdata/unused.go
! 2e309d09eb4e38773c8d3e0c4369cb9d  libgo/go/cmd/vet/tests.go
! 6c7776c2a641b1618bc6fa56fbb27413  libgo/go/cmd/vet/types.go
! 6d4470ca602adf0ca4d84b94317a103a  libgo/go/cmd/vet/unsafeptr.go
! 0712b86b86be74ac392bdc3e3b105c18  libgo/go/cmd/vet/unused.go
! 9601397c67c1570ad081bf002426138e  libgo/go/cmd/vet/vet_test.go
  2751bc45c7c671452400b155c492052f  libgo/go/compress/bzip2/bit_reader.go
! 9c9b70ed4a67a332e8a243d7ffb13850  libgo/go/compress/bzip2/bzip2.go
! 619dfa8b21029caf5170769a7ff80f3e  libgo/go/compress/bzip2/bzip2_test.go
! 4dda4d83ebc72192625f4c61afb5f4e9  libgo/go/compress/bzip2/huffman.go
  22e3daca4fc3cc00dade3db05ef0b000  libgo/go/compress/bzip2/move_to_front.go
  95da7ca97a8b8f5955fb7eb329784489  libgo/go/compress/bzip2/testdata/Mark.Twain-Tom.Sawyer.txt.bz2
  866d1b75ceb5d34415bbbebd354d072d  libgo/go/compress/bzip2/testdata/e.txt.bz2
*************** a798b1916cad0d7db359d6ad21265bc8  libgo/
*** 61394,61406 ****
  5d5be0409eea1ea8062b40daa04ea7ed  libgo/go/compress/flate/dict_decoder_test.go
  b71112b16a367dc717703eefdcd6a8f0  libgo/go/compress/flate/example_test.go
  c0c5c25be332d4257ae3e537f6a934f5  libgo/go/compress/flate/flate_test.go
! 181ae1b2443f289ff2b1815c69288a92  libgo/go/compress/flate/huffman_bit_writer.go
  aca2822401ac3bc3ce991859fc90670b  libgo/go/compress/flate/huffman_bit_writer_test.go
! c89a7a10136c65e442495fcd81986021  libgo/go/compress/flate/huffman_code.go
! ae7eb31cfa59c1c6808ccaa51c0ca02a  libgo/go/compress/flate/inflate.go
  682d383deb5d16067de8e3a30eb81beb  libgo/go/compress/flate/inflate_test.go
  11c028711aabc02dc61097c7a778cbd8  libgo/go/compress/flate/reader_test.go
- 48792cacbd0a79b295e68f6275f05a23  libgo/go/compress/flate/reverse_bits.go
  f6f6f5ec1bcf65517d8a90788c4e2460  libgo/go/compress/flate/testdata/huffman-null-max.dyn.expect
  f6f6f5ec1bcf65517d8a90788c4e2460  libgo/go/compress/flate/testdata/huffman-null-max.dyn.expect-noinput
  3ff7cda75fa3e655851583416d874fa7  libgo/go/compress/flate/testdata/huffman-null-max.golden
--- 65611,65622 ----
  5d5be0409eea1ea8062b40daa04ea7ed  libgo/go/compress/flate/dict_decoder_test.go
  b71112b16a367dc717703eefdcd6a8f0  libgo/go/compress/flate/example_test.go
  c0c5c25be332d4257ae3e537f6a934f5  libgo/go/compress/flate/flate_test.go
! 85bbc10b94064efca435457bfe446e21  libgo/go/compress/flate/huffman_bit_writer.go
  aca2822401ac3bc3ce991859fc90670b  libgo/go/compress/flate/huffman_bit_writer_test.go
! 4e7b9c037bab4ba28700e2b46b60a50b  libgo/go/compress/flate/huffman_code.go
! d502d3c2f66ecd939a38fc56cac147c4  libgo/go/compress/flate/inflate.go
  682d383deb5d16067de8e3a30eb81beb  libgo/go/compress/flate/inflate_test.go
  11c028711aabc02dc61097c7a778cbd8  libgo/go/compress/flate/reader_test.go
  f6f6f5ec1bcf65517d8a90788c4e2460  libgo/go/compress/flate/testdata/huffman-null-max.dyn.expect
  f6f6f5ec1bcf65517d8a90788c4e2460  libgo/go/compress/flate/testdata/huffman-null-max.dyn.expect-noinput
  3ff7cda75fa3e655851583416d874fa7  libgo/go/compress/flate/testdata/huffman-null-max.golden
*************** bc1906600d9696359786593b02e64d5b  libgo/
*** 61456,61469 ****
  e29770657936ab1baf47d457b55381ba  libgo/go/compress/flate/token.go
  d09aa5beb07e40bdd3ca2eea8aa2a379  libgo/go/compress/flate/writer_test.go
  301efd82f6e8cf944b6780aa7fd0ffae  libgo/go/compress/gzip/example_test.go
! a416ef8af781be5e9ddc2fcc485c377a  libgo/go/compress/gzip/gunzip.go
  52729701af0fda1de112bb18096a60f5  libgo/go/compress/gzip/gunzip_test.go
! 8ef55909ad0cb044ed301d585ce1171a  libgo/go/compress/gzip/gzip.go
  f087c42e44c1157998f2e1c6160f37b9  libgo/go/compress/gzip/gzip_test.go
  b08de43d6ea293c8ca623eda299e15e2  libgo/go/compress/gzip/issue14937_test.go
  d6f120454728089a8fa72861f400737d  libgo/go/compress/gzip/testdata/issue6550.gz
! 82abe1457cc0e67aeb2ce1b72cd14787  libgo/go/compress/lzw/reader.go
! 72e9baf66d59276167d58e166132be85  libgo/go/compress/lzw/reader_test.go
  23f13d3d7299a89acadc774db245f2fb  libgo/go/compress/lzw/writer.go
  69e09f5cf0bb31a15d8e83d6adc93e07  libgo/go/compress/lzw/writer_test.go
  24bde34ecb5632ac6637325e8a334a9c  libgo/go/compress/testdata/Mark.Twain-Tom.Sawyer.txt
--- 65672,65685 ----
  e29770657936ab1baf47d457b55381ba  libgo/go/compress/flate/token.go
  d09aa5beb07e40bdd3ca2eea8aa2a379  libgo/go/compress/flate/writer_test.go
  301efd82f6e8cf944b6780aa7fd0ffae  libgo/go/compress/gzip/example_test.go
! 0374cb6c25880fc266439159a24f8fa8  libgo/go/compress/gzip/gunzip.go
  52729701af0fda1de112bb18096a60f5  libgo/go/compress/gzip/gunzip_test.go
! a535844c65353889c8cb29d1c8bbdf42  libgo/go/compress/gzip/gzip.go
  f087c42e44c1157998f2e1c6160f37b9  libgo/go/compress/gzip/gzip_test.go
  b08de43d6ea293c8ca623eda299e15e2  libgo/go/compress/gzip/issue14937_test.go
  d6f120454728089a8fa72861f400737d  libgo/go/compress/gzip/testdata/issue6550.gz
! c0a6ef2116dbfd19d4def3f033301e42  libgo/go/compress/lzw/reader.go
! b3bc8b903dd33070907a8b452fa536e4  libgo/go/compress/lzw/reader_test.go
  23f13d3d7299a89acadc774db245f2fb  libgo/go/compress/lzw/writer.go
  69e09f5cf0bb31a15d8e83d6adc93e07  libgo/go/compress/lzw/writer_test.go
  24bde34ecb5632ac6637325e8a334a9c  libgo/go/compress/testdata/Mark.Twain-Tom.Sawyer.txt
*************** e654f83f0131cd51b41eebac2949f005  libgo/
*** 61474,61489 ****
  025ccf611272c60677d8e569267d8955  libgo/go/compress/zlib/reader_test.go
  28d2e4f83fa35ec3e6ac4244989c98a7  libgo/go/compress/zlib/writer.go
  a86e4036a41bd0e9d3ad17cec6ef8bc9  libgo/go/compress/zlib/writer_test.go
! 6dc5e9a9e796cc66f755af131a5b5840  libgo/go/container/heap/heap.go
! 1bc7c31176137253f71eb27b91659bb1  libgo/go/container/heap/heap_test.go
! f3c5bda75bee5532b20e1c69eacc91eb  libgo/go/container/list/list.go
  7cb4aca0766678d1d5ccf4d04908ce45  libgo/go/container/list/list_test.go
  04f808f97d2480ea07eb40b3a54bf51b  libgo/go/container/ring/ring.go
  c3331f30fe3145f4f313b6392b3e7d1e  libgo/go/container/ring/ring_test.go
! 5ff533ab72a01fd6b2ca71bb1f43c7bb  libgo/go/context/benchmark_test.go
! bb1f861d40a53412257696dfbd207e66  libgo/go/context/context.go
! 06e25621629f3c3de570e8c3299d8cf2  libgo/go/context/context_test.go
! 10ca01a1f6c8efe7ef0b9fe1fc771b21  libgo/go/context/example_test.go
  6292e417f26ba5bb4a6dc5cbd34f2635  libgo/go/context/net_test.go
  d349b29d798d435a90de863193f26b4f  libgo/go/context/x_test.go
  187e6813e7374dda9b998df10f90ad62  libgo/go/crypto/aes/aes_gcm.go
--- 65690,65706 ----
  025ccf611272c60677d8e569267d8955  libgo/go/compress/zlib/reader_test.go
  28d2e4f83fa35ec3e6ac4244989c98a7  libgo/go/compress/zlib/writer.go
  a86e4036a41bd0e9d3ad17cec6ef8bc9  libgo/go/compress/zlib/writer_test.go
! 6b23b191d1d75980713bf0e8360bfd84  libgo/go/container/heap/heap.go
! 3442cea2ff783d4c4e1a941aaf0e58b4  libgo/go/container/heap/heap_test.go
! 94b008c0c5c1e9307194530c0e0db060  libgo/go/container/list/list.go
  7cb4aca0766678d1d5ccf4d04908ce45  libgo/go/container/list/list_test.go
+ 970cb7d1638b20f73dd2f7da9fab264f  libgo/go/container/ring/example_test.go
  04f808f97d2480ea07eb40b3a54bf51b  libgo/go/container/ring/ring.go
  c3331f30fe3145f4f313b6392b3e7d1e  libgo/go/container/ring/ring_test.go
! 4f8f76f15150e2546ba420e19f957a41  libgo/go/context/benchmark_test.go
! bac9496c102e688a74891533744b73d3  libgo/go/context/context.go
! 3c4ed39f7bb03979f11af5ccab8fba22  libgo/go/context/context_test.go
! 99f434e488d18226ec58b39a25c4622d  libgo/go/context/example_test.go
  6292e417f26ba5bb4a6dc5cbd34f2635  libgo/go/context/net_test.go
  d349b29d798d435a90de863193f26b4f  libgo/go/context/x_test.go
  187e6813e7374dda9b998df10f90ad62  libgo/go/crypto/aes/aes_gcm.go
*************** b3a15ff867ce2879f3265523080faa60  libgo/
*** 61492,61651 ****
  f5eb44b7726cfa20d0d1dc0f86c4407c  libgo/go/crypto/aes/cbc_s390x.go
  575e179c16fc89c75d51dcbc4852b779  libgo/go/crypto/aes/cipher.go
  eac79ed8588bc32f337a8eac2f212a42  libgo/go/crypto/aes/cipher_amd64.go
! 1d4ae677c37a13f0e5cd67a913e927aa  libgo/go/crypto/aes/cipher_generic.go
  7bf73cb69481ae963c1b16fa4209d9ad  libgo/go/crypto/aes/cipher_s390x.go
  d0a37ce7ee562dc7c3766a764ffa4fe3  libgo/go/crypto/aes/const.go
! 75e03235b57d79944b0897810e270834  libgo/go/crypto/aes/ctr_s390x.go
! b5b1fea364669c52374e7e561f785eb8  libgo/go/crypto/aes/gcm_s390x.go
  52b5cf3916b43e66938a9f0d1f2f51f4  libgo/go/crypto/aes/modes.go
  1a04299854b1b4aeb975a0889f930b80  libgo/go/crypto/aes/modes_test.go
! f485f646b9a93a016c567e56d54a5dbc  libgo/go/crypto/cipher/benchmark_test.go
  635b713658e0a7963aa0bbc21d6c268e  libgo/go/crypto/cipher/cbc.go
  2f1635814518f21d34a2654122de6351  libgo/go/crypto/cipher/cbc_aes_test.go
  e4833ecfed7a59dbd11e099d1551622b  libgo/go/crypto/cipher/cfb.go
  71277b7ea7dff520b2529a1c42547453  libgo/go/crypto/cipher/cfb_test.go
! 5a5af3e4b50ac58b1584b97e9112d3a9  libgo/go/crypto/cipher/cipher.go
  a2eeb6a8efe129b4123853606ee29820  libgo/go/crypto/cipher/cipher_test.go
  81d8d687d1fabfecb21a90f9182cfe3e  libgo/go/crypto/cipher/common_test.go
  32a4d6f096817c0f5d20879fa6f4a825  libgo/go/crypto/cipher/ctr.go
  b271cef78c34fc4ea2859b963aff6149  libgo/go/crypto/cipher/ctr_aes_test.go
  682518f3b62dc36547871e6d3f8de3e5  libgo/go/crypto/cipher/ctr_test.go
! 976e381e044fdc47250b2dc6f8c69a52  libgo/go/crypto/cipher/example_test.go
! 4172a240bc3b5acb84ded460ce50baad  libgo/go/crypto/cipher/gcm.go
  a3f616eebb57beae9c58a76453e996df  libgo/go/crypto/cipher/gcm_test.go
! d5467a08de50d574db3680d9f038c2a1  libgo/go/crypto/cipher/io.go
! 3fe903cf3eef8ae9989da94e6d30024f  libgo/go/crypto/cipher/ofb.go
  4d22c5a31ed3d5a3827c3c74a203d991  libgo/go/crypto/cipher/ofb_test.go
! 386c46ccc211dabfbe4ce3803de41385  libgo/go/crypto/cipher/xor.go
  6d8d8bb68b1311904f75b163c29a029c  libgo/go/crypto/cipher/xor_test.go
! 5f0326a8f3a32eed80b5a0fba0489d77  libgo/go/crypto/crypto.go
! 95c64c483223e6bd1678f9adedeef006  libgo/go/crypto/des/block.go
! 39423b1d39539aecac6d7fa8e83a8663  libgo/go/crypto/des/cipher.go
! 13fcc9e8fe8cf78d1ba089361c58a142  libgo/go/crypto/des/const.go
! 92b9073fa9d943a9decf525ef2b4474f  libgo/go/crypto/des/des_test.go
! 6ffc2d2c9c71b0e291ef390d25a62892  libgo/go/crypto/dsa/dsa.go
! 7b791285c9863dbb3667048e2d810832  libgo/go/crypto/dsa/dsa_test.go
! 309b354afc649597e338a95dd44618b6  libgo/go/crypto/ecdsa/ecdsa.go
! f8f1a66d06d0397100ba4e89aa299655  libgo/go/crypto/ecdsa/ecdsa_test.go
  0029cd1da64f60898b152b066ced6605  libgo/go/crypto/ecdsa/testdata/SigVer.rsp.bz2
! 3cfa1d96843438ac9a276593333aaaf6  libgo/go/crypto/elliptic/elliptic.go
! a556921edc761d8851511c87f724f2b2  libgo/go/crypto/elliptic/elliptic_test.go
  0ef08f335f25efea77aa3ff4ce1ba27f  libgo/go/crypto/elliptic/p224.go
  dc67e4ed0c45d557134ef9df1bc21811  libgo/go/crypto/elliptic/p224_test.go
  0e11e0dcd5095d7e0ca59a2096960003  libgo/go/crypto/elliptic/p256.go
! b382691f7f314cf8859de3845d992ccc  libgo/go/crypto/elliptic/p256_amd64.go
  02013709c060ef8c350adb218698db00  libgo/go/crypto/elliptic/p256_generic.go
! 9fdff27469f771b18cafe28292943a0a  libgo/go/crypto/elliptic/p256_s390x.go
! e9375b0cf9ec26ddc793b3db4ac60f46  libgo/go/crypto/hmac/hmac.go
  df1f2b5c3abf98cc724c925a31593afc  libgo/go/crypto/hmac/hmac_test.go
  79e443ea24f9203292121e2de469ea0a  libgo/go/crypto/internal/cipherhw/cipherhw_amd64.go
  9058d726c02eb2253d9f885b30a7a3e5  libgo/go/crypto/internal/cipherhw/cipherhw_s390x.go
  77fc63797137427f4eb5fb5cc4b68ef5  libgo/go/crypto/internal/cipherhw/doc.go
  adc5155458b804ba2d0bb52e59035a59  libgo/go/crypto/internal/cipherhw/generic.go
  c7f55df08fee42d0c2bfe0c3016daa9d  libgo/go/crypto/md5/gen.go
! 28af546b19982dce170c727a369294a1  libgo/go/crypto/md5/md5.go
! 76b3777961c9a035338643227c5c64a9  libgo/go/crypto/md5/md5_test.go
  779db69b1d132bf147f011bacb1d63b8  libgo/go/crypto/md5/md5block.go
  c8be955083247ccf62ebf94759ea873b  libgo/go/crypto/md5/md5block_decl.go
  41f5133bfb57afb635af9cea9e9cc696  libgo/go/crypto/md5/md5block_generic.go
! 3c492f629177415097fc768b35746e8d  libgo/go/crypto/rand/eagain.go
  6b70ab1d07cc9e46f71ac834dc71ac4e  libgo/go/crypto/rand/rand.go
! 6f04b7d98a1524264adbd68478dd01c0  libgo/go/crypto/rand/rand_linux.go
  056f9af0010c1093db173851d879797c  libgo/go/crypto/rand/rand_openbsd.go
  ac766ed9ce82e6a75dec0f207442090c  libgo/go/crypto/rand/rand_test.go
! 98d4e45955ecdd765fc1630431ecd943  libgo/go/crypto/rand/rand_unix.go
  cb2efa655e4ac64c8054c4c6699c31e9  libgo/go/crypto/rand/rand_windows.go
! 9b3cfd9861215cc942759ff774d16757  libgo/go/crypto/rand/util.go
! 32ce083a30e5f7a9861dc9681095d83b  libgo/go/crypto/rand/util_test.go
! 273234da96d1d4d835575e5f36c07fe3  libgo/go/crypto/rc4/rc4.go
! ee331b06e082fe777728bc4051ab7c37  libgo/go/crypto/rc4/rc4_asm.go
! 4a958c9dc90a63fc58954d451885cabc  libgo/go/crypto/rc4/rc4_ref.go
  f4fee0a20f57762e290a8f5301a8eef7  libgo/go/crypto/rc4/rc4_test.go
  ec859e8a0415db3df648748878f1fda9  libgo/go/crypto/rsa/example_test.go
  607bc3bc2e3763f64c78aa78bf53aa7a  libgo/go/crypto/rsa/pkcs1v15.go
  01d689d8b1030b5a869799e13cf28dda  libgo/go/crypto/rsa/pkcs1v15_test.go
! 0c2c1efd20d953c590619d430933bac2  libgo/go/crypto/rsa/pss.go
  4d1d8b2b573a4bdd3b9648113618fca4  libgo/go/crypto/rsa/pss_test.go
! 284f860b90691ade5c1cc551ded1df2d  libgo/go/crypto/rsa/rsa.go
  b5f6d9451a7d175381c880ccfe20d86d  libgo/go/crypto/rsa/rsa_test.go
  164dcaca31277eda4b7aaeec705a46c8  libgo/go/crypto/rsa/testdata/pss-vect.txt.bz2
  886be768c52b2baa7c7ecc36a53392f6  libgo/go/crypto/sha1/fallback_test.go
  5d4d18f168eed89bda710584887e6233  libgo/go/crypto/sha1/issue15617_test.go
! c7ee9ed376096f366368b149470cf2c1  libgo/go/crypto/sha1/sha1.go
! bb24a9fe9cf8542f416e42789387a2ba  libgo/go/crypto/sha1/sha1_test.go
! 56dd0fffae562beee5c587ba567c376c  libgo/go/crypto/sha1/sha1block.go
! 8b06d64b87a975102604083e2b5b3b0d  libgo/go/crypto/sha1/sha1block_amd64.go
  58f3227ae3b9ec2a5d15565c3792ae5b  libgo/go/crypto/sha1/sha1block_decl.go
! 73a518544bfb421f7a2b9c260ef9c3b5  libgo/go/crypto/sha1/sha1block_generic.go
! 5f37031262e3b839740d02f4c1ae67ef  libgo/go/crypto/sha1/sha1block_s390x.go
  c4d129a56bb7cee6d0d538e9b1bfa222  libgo/go/crypto/sha256/example_test.go
  23073c440e1de9767d0f9e25226b266b  libgo/go/crypto/sha256/fallback_test.go
! 8eff9e07e8505daf290dddb18a587dce  libgo/go/crypto/sha256/sha256.go
! 78de294be396059a6fe5dce80eef8827  libgo/go/crypto/sha256/sha256_test.go
  a2f6e8d53d9a2a2356d36a335301258a  libgo/go/crypto/sha256/sha256block.go
  c0ccca27330c109cf261c6640c3c8446  libgo/go/crypto/sha256/sha256block_decl.go
! b287d0177d0a539fc7f4847324607ff6  libgo/go/crypto/sha256/sha256block_generic.go
  f56308a87a8e5c97bcffc2e6f7cc7b4a  libgo/go/crypto/sha256/sha256block_s390x.go
  7d42ee3c9a4e2c573f3065d523f5d279  libgo/go/crypto/sha512/fallback_test.go
! 907051cf173afde42410dd34d76c917f  libgo/go/crypto/sha512/sha512.go
! 5cb5dd2a7324aefa8f89c4b264883ac1  libgo/go/crypto/sha512/sha512_test.go
  59ef47a4a1603d510b11c9289c6e042c  libgo/go/crypto/sha512/sha512block.go
! 4e87a0a177013e24fc9c7558c9d92dbf  libgo/go/crypto/sha512/sha512block_decl.go
  4e468a00f97280d818fc07fdc538395e  libgo/go/crypto/sha512/sha512block_generic.go
  09c0e65254407bbc81127e88b9e1a399  libgo/go/crypto/sha512/sha512block_s390x.go
! 5c07317c938ed9315e1814790eab3595  libgo/go/crypto/subtle/constant_time.go
! eb549690f0bb6a865bd8e676944a3c71  libgo/go/crypto/subtle/constant_time_test.go
  144e4fc44614b1677994da9f8d338f9b  libgo/go/crypto/tls/alert.go
  efb3b9380e03fcc86730b36eefcaa490  libgo/go/crypto/tls/cipher_suites.go
! b26ccdb1c548bb2c1c725422e9d0f6db  libgo/go/crypto/tls/common.go
! ae5a8696a92534c3e005906707fef788  libgo/go/crypto/tls/conn.go
! 7ec5effd3f8c6eb0756ac64df65ea216  libgo/go/crypto/tls/conn_test.go
! 3d63b1a07a5c61ee88927db9975bdfd0  libgo/go/crypto/tls/generate_cert.go
! aee4c2d4ce753c19baa139e3e5636095  libgo/go/crypto/tls/handshake_client.go
! a3cb48a1cc118b55db56a7c36a7337b1  libgo/go/crypto/tls/handshake_client_test.go
! c1956a16cb27624a4635376a13d7f2eb  libgo/go/crypto/tls/handshake_messages.go
! 65023a519c756d0d185f40a4c0a82da3  libgo/go/crypto/tls/handshake_messages_test.go
! 3570a4ab53ef24b1c560bc191f112ed7  libgo/go/crypto/tls/handshake_server.go
! e997806c952fb197592da19fe5e3ab52  libgo/go/crypto/tls/handshake_server_test.go
! 3d648b245aa86f97633cd50a2ebb1e8f  libgo/go/crypto/tls/handshake_test.go
! bb2e4b6bb8c4616bab53ad0213df8cd9  libgo/go/crypto/tls/key_agreement.go
! 9c1c82475ca91a9ddbd34f3867f50901  libgo/go/crypto/tls/prf.go
  a79cb989c00451768c7df33f2373ef8a  libgo/go/crypto/tls/prf_test.go
! 4e67d45dcd177bb84e5e5646c3ca3218  libgo/go/crypto/tls/testdata/Client-TLSv10-ClientCert-ECDSA-ECDSA
! 217a90e235ef0d4d77db12884e26ff35  libgo/go/crypto/tls/testdata/Client-TLSv10-ClientCert-ECDSA-RSA
! a85d86693230c7509353afce4e393834  libgo/go/crypto/tls/testdata/Client-TLSv10-ClientCert-RSA-ECDSA
! 79336e296415eb1d4cb1edff82da4952  libgo/go/crypto/tls/testdata/Client-TLSv10-ClientCert-RSA-RSA
! 8fac8f5bfb6e846ed5773243a83fb808  libgo/go/crypto/tls/testdata/Client-TLSv10-ECDHE-ECDSA-AES
! f2541f19fc69e6e371e1d2292d42fee8  libgo/go/crypto/tls/testdata/Client-TLSv10-ECDHE-RSA-AES
! f0f9432bf35899b18ea030bf419b0030  libgo/go/crypto/tls/testdata/Client-TLSv10-RSA-RC4
! 9d283d69e4d5e4ec3625f97be386b1ce  libgo/go/crypto/tls/testdata/Client-TLSv11-ECDHE-ECDSA-AES
! 6c4752734d6e623724cbe4d132782990  libgo/go/crypto/tls/testdata/Client-TLSv11-ECDHE-RSA-AES
! bd49605406f15693619555efec7ec42a  libgo/go/crypto/tls/testdata/Client-TLSv11-RSA-RC4
! ec315725c7ad7dba7b1df66f80cdc107  libgo/go/crypto/tls/testdata/Client-TLSv12-AES128-GCM-SHA256
! 5157a1b37b819e4b11d8f5847694a020  libgo/go/crypto/tls/testdata/Client-TLSv12-AES128-SHA256
! 701dc5f980f738af69884d93b63bcd29  libgo/go/crypto/tls/testdata/Client-TLSv12-AES256-GCM-SHA384
! 247193fe5b75e0ddf335493034f7f17f  libgo/go/crypto/tls/testdata/Client-TLSv12-ALPN
  81b50093430f5cef3d1f2517c004bb8b  libgo/go/crypto/tls/testdata/Client-TLSv12-ALPN-NoMatch
! 5faa5596d3bd660074f3fd6425427b7c  libgo/go/crypto/tls/testdata/Client-TLSv12-ClientCert-ECDSA-ECDSA
! 26e35c2a7c6fdc8a0011586e164fbac3  libgo/go/crypto/tls/testdata/Client-TLSv12-ClientCert-ECDSA-RSA
! 33ac94743ca0483f574b52c19e939ea0  libgo/go/crypto/tls/testdata/Client-TLSv12-ClientCert-RSA-AES256-GCM-SHA384
! 1c65d2bbc0954739ef35bd0346e80630  libgo/go/crypto/tls/testdata/Client-TLSv12-ClientCert-RSA-ECDSA
! f1050f92d07c378de156b9b3e9a8acdc  libgo/go/crypto/tls/testdata/Client-TLSv12-ClientCert-RSA-RSA
! f951cd83b6bfee7b8f2854aad8f3147c  libgo/go/crypto/tls/testdata/Client-TLSv12-ECDHE-ECDSA-AES
! 04d64407ca0c560ca81dffc5798d3fe0  libgo/go/crypto/tls/testdata/Client-TLSv12-ECDHE-ECDSA-AES-GCM
! ea2058c12e25649e075103b3c614645f  libgo/go/crypto/tls/testdata/Client-TLSv12-ECDHE-ECDSA-AES128-SHA256
! 2322ca38a0765f296b615e51127fe85d  libgo/go/crypto/tls/testdata/Client-TLSv12-ECDHE-ECDSA-AES256-GCM-SHA384
! 558d406dd57b193cdcb777463ce8c9ea  libgo/go/crypto/tls/testdata/Client-TLSv12-ECDHE-ECDSA-CHACHA20-POLY1305
! 93e638af9ecd17c4cf8ea120cf425bef  libgo/go/crypto/tls/testdata/Client-TLSv12-ECDHE-RSA-AES
! e11fdc2cbc69aec4e7529e3fe395cec6  libgo/go/crypto/tls/testdata/Client-TLSv12-ECDHE-RSA-AES128-SHA256
! 45984a7335de322fcdcd8e9d5d7dc7a3  libgo/go/crypto/tls/testdata/Client-TLSv12-ECDHE-RSA-CHACHA20-POLY1305
! e86558e2d1518288aa654b2f6ca828ae  libgo/go/crypto/tls/testdata/Client-TLSv12-RSA-RC4
! 469505d9f88d760fa21587e10c582539  libgo/go/crypto/tls/testdata/Client-TLSv12-RenegotiateOnce
! 5fd4b99af011cb1da22149fe25ecc2b8  libgo/go/crypto/tls/testdata/Client-TLSv12-RenegotiateTwice
! 80ee66f4f27403ea49cff96c1fa06e7c  libgo/go/crypto/tls/testdata/Client-TLSv12-RenegotiateTwiceRejected
! adb8d2739bd5c24f87948266580819fb  libgo/go/crypto/tls/testdata/Client-TLSv12-RenegotiationRejected
! e41884135761555e080e6243ca455131  libgo/go/crypto/tls/testdata/Client-TLSv12-SCT
! f07ba64649070f3894fa4ef1d5139884  libgo/go/crypto/tls/testdata/Client-TLSv12-X25519-ECDHE-RSA-AES-GCM
  7e25652a07b0087c504a98e325ff5c85  libgo/go/crypto/tls/testdata/Server-SSLv3-RSA-3DES
  4e7880900b50afdaeff7ebe23937fff0  libgo/go/crypto/tls/testdata/Server-SSLv3-RSA-AES
  bda70f168ba66a155740cbbad04b6b5b  libgo/go/crypto/tls/testdata/Server-SSLv3-RSA-RC4
--- 65709,65875 ----
  f5eb44b7726cfa20d0d1dc0f86c4407c  libgo/go/crypto/aes/cbc_s390x.go
  575e179c16fc89c75d51dcbc4852b779  libgo/go/crypto/aes/cipher.go
  eac79ed8588bc32f337a8eac2f212a42  libgo/go/crypto/aes/cipher_amd64.go
! c538d4fff741358ad1eb3654af8f8ef1  libgo/go/crypto/aes/cipher_generic.go
! b4e823d61381143187407628ccffe0c0  libgo/go/crypto/aes/cipher_ppc64le.go
  7bf73cb69481ae963c1b16fa4209d9ad  libgo/go/crypto/aes/cipher_s390x.go
  d0a37ce7ee562dc7c3766a764ffa4fe3  libgo/go/crypto/aes/const.go
! f298f1e760473f07fff61189505e0b4d  libgo/go/crypto/aes/ctr_s390x.go
! b384fcd6a496df596005613a426fac31  libgo/go/crypto/aes/gcm_s390x.go
  52b5cf3916b43e66938a9f0d1f2f51f4  libgo/go/crypto/aes/modes.go
  1a04299854b1b4aeb975a0889f930b80  libgo/go/crypto/aes/modes_test.go
! 515943d4ff6942d127f2bfdc749469e0  libgo/go/crypto/cipher/benchmark_test.go
  635b713658e0a7963aa0bbc21d6c268e  libgo/go/crypto/cipher/cbc.go
  2f1635814518f21d34a2654122de6351  libgo/go/crypto/cipher/cbc_aes_test.go
  e4833ecfed7a59dbd11e099d1551622b  libgo/go/crypto/cipher/cfb.go
  71277b7ea7dff520b2529a1c42547453  libgo/go/crypto/cipher/cfb_test.go
! b8a18b729c4942a13726a9ab3f62340f  libgo/go/crypto/cipher/cipher.go
  a2eeb6a8efe129b4123853606ee29820  libgo/go/crypto/cipher/cipher_test.go
  81d8d687d1fabfecb21a90f9182cfe3e  libgo/go/crypto/cipher/common_test.go
  32a4d6f096817c0f5d20879fa6f4a825  libgo/go/crypto/cipher/ctr.go
  b271cef78c34fc4ea2859b963aff6149  libgo/go/crypto/cipher/ctr_aes_test.go
  682518f3b62dc36547871e6d3f8de3e5  libgo/go/crypto/cipher/ctr_test.go
! aa15375a8ecbb36857bb7a075a8d30d8  libgo/go/crypto/cipher/example_test.go
! 6aa8e84261ac011b2a6495cc7b9b9b4d  libgo/go/crypto/cipher/gcm.go
  a3f616eebb57beae9c58a76453e996df  libgo/go/crypto/cipher/gcm_test.go
! ed80fb436d52d58edc59c787f0cb29a8  libgo/go/crypto/cipher/io.go
! cd26a94220fff743dfa0f511832406df  libgo/go/crypto/cipher/ofb.go
  4d22c5a31ed3d5a3827c3c74a203d991  libgo/go/crypto/cipher/ofb_test.go
! b9664072e5f141736b8767a311b2fb4b  libgo/go/crypto/cipher/xor.go
  6d8d8bb68b1311904f75b163c29a029c  libgo/go/crypto/cipher/xor_test.go
! b1c2a583020acc4dfe7580dfe4ff46fb  libgo/go/crypto/crypto.go
! 7e501a7732bc85609df717e6b14be4d3  libgo/go/crypto/des/block.go
! 6d9d2231ab16bfd8118ddfeb8747a25d  libgo/go/crypto/des/cipher.go
! d906bcfd596bbd97b0c5ef8207a0e28d  libgo/go/crypto/des/const.go
! cb096af6cecb093d35c299cf7ae9c236  libgo/go/crypto/des/des_test.go
! 289b5d1f8fcf56a61227fdd743634329  libgo/go/crypto/dsa/dsa.go
! 2bb211e002fd37dcc0e3bcd9c5f9d649  libgo/go/crypto/dsa/dsa_test.go
! a6e0173f53e984f8a1db38eeb242044d  libgo/go/crypto/ecdsa/ecdsa.go
! 843273a653cd8453f19c80c07b4066a3  libgo/go/crypto/ecdsa/ecdsa_test.go
  0029cd1da64f60898b152b066ced6605  libgo/go/crypto/ecdsa/testdata/SigVer.rsp.bz2
! 05d5a93aa150bb0c4b1cf00f521bcc4f  libgo/go/crypto/elliptic/elliptic.go
! 63d0843df82a35aa72abec1135641a85  libgo/go/crypto/elliptic/elliptic_test.go
  0ef08f335f25efea77aa3ff4ce1ba27f  libgo/go/crypto/elliptic/p224.go
  dc67e4ed0c45d557134ef9df1bc21811  libgo/go/crypto/elliptic/p224_test.go
  0e11e0dcd5095d7e0ca59a2096960003  libgo/go/crypto/elliptic/p256.go
! af9f6d540c4eba9e5677f0e82a432d2a  libgo/go/crypto/elliptic/p256_amd64.go
  02013709c060ef8c350adb218698db00  libgo/go/crypto/elliptic/p256_generic.go
! c5a34638c45806991445bfdadef4433c  libgo/go/crypto/elliptic/p256_s390x.go
! 7813076822ba9e4b4631d189fe918212  libgo/go/crypto/hmac/hmac.go
  df1f2b5c3abf98cc724c925a31593afc  libgo/go/crypto/hmac/hmac_test.go
  79e443ea24f9203292121e2de469ea0a  libgo/go/crypto/internal/cipherhw/cipherhw_amd64.go
  9058d726c02eb2253d9f885b30a7a3e5  libgo/go/crypto/internal/cipherhw/cipherhw_s390x.go
  77fc63797137427f4eb5fb5cc4b68ef5  libgo/go/crypto/internal/cipherhw/doc.go
  adc5155458b804ba2d0bb52e59035a59  libgo/go/crypto/internal/cipherhw/generic.go
+ 669523c34b97d66daa84c79e43853b86  libgo/go/crypto/issue21104_test.go
  c7f55df08fee42d0c2bfe0c3016daa9d  libgo/go/crypto/md5/gen.go
! 1cf5f20e418747695b9b557023cb4b2e  libgo/go/crypto/md5/md5.go
! 5ff12edf56854103d1774e07ae333d2f  libgo/go/crypto/md5/md5_test.go
  779db69b1d132bf147f011bacb1d63b8  libgo/go/crypto/md5/md5block.go
  c8be955083247ccf62ebf94759ea873b  libgo/go/crypto/md5/md5block_decl.go
  41f5133bfb57afb635af9cea9e9cc696  libgo/go/crypto/md5/md5block_generic.go
! 54cca454a4a207765c7b51d348f81d15  libgo/go/crypto/rand/eagain.go
  6b70ab1d07cc9e46f71ac834dc71ac4e  libgo/go/crypto/rand/rand.go
! ce0a7d79bd57a2d7a8b5d6f34a495e3a  libgo/go/crypto/rand/rand_linux.go
! 334548a51930b2211ff2be621c93cab1  libgo/go/crypto/rand/rand_linux_test.go
  056f9af0010c1093db173851d879797c  libgo/go/crypto/rand/rand_openbsd.go
  ac766ed9ce82e6a75dec0f207442090c  libgo/go/crypto/rand/rand_test.go
! 789e7b6fec946775b2c51bfc746e5d69  libgo/go/crypto/rand/rand_unix.go
  cb2efa655e4ac64c8054c4c6699c31e9  libgo/go/crypto/rand/rand_windows.go
! e75d13daca9a534d8c9cd611e5ba6ffc  libgo/go/crypto/rand/util.go
! 9463229d8efc4ef449fbec89be27a301  libgo/go/crypto/rand/util_test.go
! 6ec44633d7d4d53dfde123527b001caa  libgo/go/crypto/rc4/rc4.go
! bfcedd2bbfd9a25056afc09ab108b203  libgo/go/crypto/rc4/rc4_asm.go
! 23389c87dd6790430360465eab859aa1  libgo/go/crypto/rc4/rc4_ref.go
  f4fee0a20f57762e290a8f5301a8eef7  libgo/go/crypto/rc4/rc4_test.go
  ec859e8a0415db3df648748878f1fda9  libgo/go/crypto/rsa/example_test.go
  607bc3bc2e3763f64c78aa78bf53aa7a  libgo/go/crypto/rsa/pkcs1v15.go
  01d689d8b1030b5a869799e13cf28dda  libgo/go/crypto/rsa/pkcs1v15_test.go
! 9b6a17a2feb927cdeb6ebadfb41ba59b  libgo/go/crypto/rsa/pss.go
  4d1d8b2b573a4bdd3b9648113618fca4  libgo/go/crypto/rsa/pss_test.go
! 7455d3835ee05ead335dcacc8e2b467e  libgo/go/crypto/rsa/rsa.go
  b5f6d9451a7d175381c880ccfe20d86d  libgo/go/crypto/rsa/rsa_test.go
  164dcaca31277eda4b7aaeec705a46c8  libgo/go/crypto/rsa/testdata/pss-vect.txt.bz2
  886be768c52b2baa7c7ecc36a53392f6  libgo/go/crypto/sha1/fallback_test.go
  5d4d18f168eed89bda710584887e6233  libgo/go/crypto/sha1/issue15617_test.go
! 6ce1ea35d22478e040762c78f8a8aa77  libgo/go/crypto/sha1/sha1.go
! 74aa5911a7446dcf9a83e748e12f0d40  libgo/go/crypto/sha1/sha1_test.go
! 82470079b2d5690f6d9e3c0ae5c68534  libgo/go/crypto/sha1/sha1block.go
! 4ebe77c031daff6d9d486700716cdba2  libgo/go/crypto/sha1/sha1block_amd64.go
! 23c85f81aa5179d0b35673997e95545b  libgo/go/crypto/sha1/sha1block_arm64.go
  58f3227ae3b9ec2a5d15565c3792ae5b  libgo/go/crypto/sha1/sha1block_decl.go
! 1276fe692062b509ad84c97157548bc6  libgo/go/crypto/sha1/sha1block_generic.go
! fb36864eb322a6fa8c048c38b4762fea  libgo/go/crypto/sha1/sha1block_s390x.go
  c4d129a56bb7cee6d0d538e9b1bfa222  libgo/go/crypto/sha256/example_test.go
  23073c440e1de9767d0f9e25226b266b  libgo/go/crypto/sha256/fallback_test.go
! 81205138835fe7e6165b260e54a24a42  libgo/go/crypto/sha256/sha256.go
! 4b9441437db4618ab726ae6f47abaa4f  libgo/go/crypto/sha256/sha256_test.go
  a2f6e8d53d9a2a2356d36a335301258a  libgo/go/crypto/sha256/sha256block.go
+ e37f0ac97ae37f7dd1e726b9965e575a  libgo/go/crypto/sha256/sha256block_amd64.go
+ e0ed9a1a9c6defccefd768854cc68142  libgo/go/crypto/sha256/sha256block_arm64.go
  c0ccca27330c109cf261c6640c3c8446  libgo/go/crypto/sha256/sha256block_decl.go
! 6fd17124ad3afd74ce6d5254500b554e  libgo/go/crypto/sha256/sha256block_generic.go
  f56308a87a8e5c97bcffc2e6f7cc7b4a  libgo/go/crypto/sha256/sha256block_s390x.go
  7d42ee3c9a4e2c573f3065d523f5d279  libgo/go/crypto/sha512/fallback_test.go
! a240c89603701b9d5df45af312b7fd5b  libgo/go/crypto/sha512/sha512.go
! 5896024d0a3c2e3286a19b81a331e669  libgo/go/crypto/sha512/sha512_test.go
  59ef47a4a1603d510b11c9289c6e042c  libgo/go/crypto/sha512/sha512block.go
! 84648a2dea26c9969bde5a382bbac7ad  libgo/go/crypto/sha512/sha512block_amd64.go
! e86a6f534f375062e63acaad00707dad  libgo/go/crypto/sha512/sha512block_decl.go
  4e468a00f97280d818fc07fdc538395e  libgo/go/crypto/sha512/sha512block_generic.go
  09c0e65254407bbc81127e88b9e1a399  libgo/go/crypto/sha512/sha512block_s390x.go
! 4b1f61d886a7c67e06b60a4bf434afa7  libgo/go/crypto/subtle/constant_time.go
! 24a0e131c0fe0854057b893333a9d345  libgo/go/crypto/subtle/constant_time_test.go
  144e4fc44614b1677994da9f8d338f9b  libgo/go/crypto/tls/alert.go
  efb3b9380e03fcc86730b36eefcaa490  libgo/go/crypto/tls/cipher_suites.go
! 90aa1ca76e8404a8aaa82eec710cdd95  libgo/go/crypto/tls/common.go
! 3dd75035f1b1059ea1545df9155f5cab  libgo/go/crypto/tls/conn.go
! 9e499842d2ca14a6bfeaa9a505a4a560  libgo/go/crypto/tls/conn_test.go
! 358fac25095fe218beaf926476cc14ef  libgo/go/crypto/tls/generate_cert.go
! 5173a222b902ea6c1552917e5691a821  libgo/go/crypto/tls/handshake_client.go
! 75fbe29545458033c26fa421dc6c790b  libgo/go/crypto/tls/handshake_client_test.go
! 2445174d4ace61fd4314d5fbdb0889da  libgo/go/crypto/tls/handshake_messages.go
! cbf81246fdc6a8cc54dea8faf196d0e8  libgo/go/crypto/tls/handshake_messages_test.go
! 2d61e5856ae6c4e51f87052cee7047ae  libgo/go/crypto/tls/handshake_server.go
! 1a4b2efb9ed909416bbb46d309268320  libgo/go/crypto/tls/handshake_server_test.go
! c5366720f4b2afbaa06711d287b6f9ef  libgo/go/crypto/tls/handshake_test.go
! 39b6f7338e7de8e122e3794176f933ec  libgo/go/crypto/tls/key_agreement.go
! 7d3510dc0a11154dea4b03f990061c4c  libgo/go/crypto/tls/prf.go
  a79cb989c00451768c7df33f2373ef8a  libgo/go/crypto/tls/prf_test.go
! bf9412e02c3ba071c064f0870c5b451e  libgo/go/crypto/tls/testdata/Client-TLSv10-ClientCert-ECDSA-ECDSA
! 9e5954ee94b258a67eb208e8012ab2f8  libgo/go/crypto/tls/testdata/Client-TLSv10-ClientCert-ECDSA-RSA
! 5f4b1742e7c02a6e68960774ccbc2a58  libgo/go/crypto/tls/testdata/Client-TLSv10-ClientCert-RSA-ECDSA
! 8e7a892e821d6bf1651e34e7829a4741  libgo/go/crypto/tls/testdata/Client-TLSv10-ClientCert-RSA-RSA
! deb4ade19125df5e2075c9ce8a74e377  libgo/go/crypto/tls/testdata/Client-TLSv10-ECDHE-ECDSA-AES
! a9e3be1f8d66cb57024f212975464407  libgo/go/crypto/tls/testdata/Client-TLSv10-ECDHE-RSA-AES
! 2bc55d72e9bed32e3bfe65dfe8ab7a96  libgo/go/crypto/tls/testdata/Client-TLSv10-RSA-RC4
! d7867e999d549df19683d2862dd94a14  libgo/go/crypto/tls/testdata/Client-TLSv11-ECDHE-ECDSA-AES
! 282146197209c49ba7ab6fab953db8c8  libgo/go/crypto/tls/testdata/Client-TLSv11-ECDHE-RSA-AES
! b1fadbb3c9b6ab78d0894cba38dd9e94  libgo/go/crypto/tls/testdata/Client-TLSv11-RSA-RC4
! fea634c8dc9ffdb23a7b81f221926035  libgo/go/crypto/tls/testdata/Client-TLSv12-AES128-GCM-SHA256
! 43c5f6da7f504c233769b5f9200cec0a  libgo/go/crypto/tls/testdata/Client-TLSv12-AES128-SHA256
! 3dc69f049e8bc58cd92dd3d109a08090  libgo/go/crypto/tls/testdata/Client-TLSv12-AES256-GCM-SHA384
! b570eceaf5c5395f3e03e9c4febd831e  libgo/go/crypto/tls/testdata/Client-TLSv12-ALPN
  81b50093430f5cef3d1f2517c004bb8b  libgo/go/crypto/tls/testdata/Client-TLSv12-ALPN-NoMatch
! d2eb466438724e193b712788d4460ac2  libgo/go/crypto/tls/testdata/Client-TLSv12-ClientCert-ECDSA-ECDSA
! c0c4eac9abbf6179e6402e98dbaf20ef  libgo/go/crypto/tls/testdata/Client-TLSv12-ClientCert-ECDSA-RSA
! a913049a404db15af787aa61ca727337  libgo/go/crypto/tls/testdata/Client-TLSv12-ClientCert-RSA-AES256-GCM-SHA384
! c50e6138d02ef695ea47b333b81fcffa  libgo/go/crypto/tls/testdata/Client-TLSv12-ClientCert-RSA-ECDSA
! db3c18d3b3b728183eb5abfe3db6ab56  libgo/go/crypto/tls/testdata/Client-TLSv12-ClientCert-RSA-RSA
! 5f0ba961e5b2d0da3e9bd302271c3d05  libgo/go/crypto/tls/testdata/Client-TLSv12-ECDHE-ECDSA-AES
! ef9597e49eca6b5cd8cb86502abedace  libgo/go/crypto/tls/testdata/Client-TLSv12-ECDHE-ECDSA-AES-GCM
! b7c7e56523459813adbf3db61b3ee177  libgo/go/crypto/tls/testdata/Client-TLSv12-ECDHE-ECDSA-AES128-SHA256
! f3c5c1821e45ae5cecc62920de4637fa  libgo/go/crypto/tls/testdata/Client-TLSv12-ECDHE-ECDSA-AES256-GCM-SHA384
! e5520ffb87f7348fcded7f81f843c354  libgo/go/crypto/tls/testdata/Client-TLSv12-ECDHE-ECDSA-CHACHA20-POLY1305
! 2d9bbbb464311c2b0cbb1f0853d6b9a4  libgo/go/crypto/tls/testdata/Client-TLSv12-ECDHE-RSA-AES
! 94f03ff2f9a5d9424e0d121bcdd1fd2b  libgo/go/crypto/tls/testdata/Client-TLSv12-ECDHE-RSA-AES128-SHA256
! fcdf024b2162a7f48ed441275c87a631  libgo/go/crypto/tls/testdata/Client-TLSv12-ECDHE-RSA-CHACHA20-POLY1305
! a31de7bcd2e8a3a08148b550c07dba13  libgo/go/crypto/tls/testdata/Client-TLSv12-RSA-RC4
! 36069808da186ff54562689514b537e4  libgo/go/crypto/tls/testdata/Client-TLSv12-RenegotiateOnce
! b6e14c7f065c815ec98a2173eeef7ee9  libgo/go/crypto/tls/testdata/Client-TLSv12-RenegotiateTwice
! 24e9471c267eb8056b7d63142b10467d  libgo/go/crypto/tls/testdata/Client-TLSv12-RenegotiateTwiceRejected
! 9e8b7c4140890e4f51b523ca67fc8204  libgo/go/crypto/tls/testdata/Client-TLSv12-RenegotiationRejected
! 48f29180dc94bb74a4d9de2b9041fe14  libgo/go/crypto/tls/testdata/Client-TLSv12-SCT
! 146e573110039578b7575ffe1cb17bd9  libgo/go/crypto/tls/testdata/Client-TLSv12-X25519-ECDHE-RSA-AES-GCM
  7e25652a07b0087c504a98e325ff5c85  libgo/go/crypto/tls/testdata/Server-SSLv3-RSA-3DES
  4e7880900b50afdaeff7ebe23937fff0  libgo/go/crypto/tls/testdata/Server-SSLv3-RSA-AES
  bda70f168ba66a155740cbbad04b6b5b  libgo/go/crypto/tls/testdata/Server-SSLv3-RSA-RC4
*************** bda70f168ba66a155740cbbad04b6b5b  libgo/
*** 61655,61732 ****
  dfeaacf217ca8b36eb8a477d25d4f732  libgo/go/crypto/tls/testdata/Server-TLSv10-RSA-RC4
  d080f960aaf6d2d2eac626c139dd9c2c  libgo/go/crypto/tls/testdata/Server-TLSv11-FallbackSCSV
  eb11f007258fdf3e417df10cfd3b1b9b  libgo/go/crypto/tls/testdata/Server-TLSv11-RSA-RC4
! 6f7078ba18fd8f5900b0e5e7edb8400a  libgo/go/crypto/tls/testdata/Server-TLSv12-ALPN
! 0fac3cce7430ffc71bc638b025c2713c  libgo/go/crypto/tls/testdata/Server-TLSv12-ALPN-NoMatch
! 4a0949aa6a793a46e38fae741592d055  libgo/go/crypto/tls/testdata/Server-TLSv12-CipherSuiteCertPreferenceECDSA
! 53d624612d1a09ac6e08a9e8dd230ecd  libgo/go/crypto/tls/testdata/Server-TLSv12-CipherSuiteCertPreferenceRSA
! bc498e937e056af8a6ee43d332a61a12  libgo/go/crypto/tls/testdata/Server-TLSv12-ClientAuthRequestedAndECDSAGiven
! 1173f07572c518a477e0acbac3775291  libgo/go/crypto/tls/testdata/Server-TLSv12-ClientAuthRequestedAndGiven
! bce5e0e97efa25aca93f2c079e1f778a  libgo/go/crypto/tls/testdata/Server-TLSv12-ClientAuthRequestedNotGiven
! 75ee586e243238a3d18f40ae663ce1de  libgo/go/crypto/tls/testdata/Server-TLSv12-ECDHE-ECDSA-AES
  571fe4f5a56ad93d2310c5ddbd7709f1  libgo/go/crypto/tls/testdata/Server-TLSv12-IssueTicket
  cf4efbc4ecf26200846bd5269e0035d2  libgo/go/crypto/tls/testdata/Server-TLSv12-IssueTicketPreDisable
  b828d5f551ca959342347a52f1cc2ed9  libgo/go/crypto/tls/testdata/Server-TLSv12-RSA-3DES
  15660e8a29c785222608c8dad9360645  libgo/go/crypto/tls/testdata/Server-TLSv12-RSA-AES
! 2b76c8a2fb7bf35de2222b4eb4c8900c  libgo/go/crypto/tls/testdata/Server-TLSv12-RSA-AES-GCM
! 4765e8b44f362734714b19a7cdd70f1a  libgo/go/crypto/tls/testdata/Server-TLSv12-RSA-AES256-GCM-SHA384
  908dfc446116df1d2541fb13b24ff69d  libgo/go/crypto/tls/testdata/Server-TLSv12-RSA-RC4
  0104dfa0246a2cd2f4356efe03672f24  libgo/go/crypto/tls/testdata/Server-TLSv12-Resume
  bf6526c7c3ca5410275fe8324a806dc4  libgo/go/crypto/tls/testdata/Server-TLSv12-ResumeDisabled
  ead17901cc70e2d5a56d21a577331606  libgo/go/crypto/tls/testdata/Server-TLSv12-SNI
  093d7945abe3b126cfa5ab72a3bf28e2  libgo/go/crypto/tls/testdata/Server-TLSv12-SNI-GetCertificate
  ada71e991b0041048b0c500bd4d7e235  libgo/go/crypto/tls/testdata/Server-TLSv12-SNI-GetCertificateNotFound
! a2881a224e2098d601e38cbd4d010ec6  libgo/go/crypto/tls/testdata/Server-TLSv12-X25519-ECDHE-RSA-AES-GCM
  4a25672627d687a188976fd9da61d578  libgo/go/crypto/tls/ticket.go
  4ed5fcb9769b3017748ae016834d23c5  libgo/go/crypto/tls/tls.go
! 7249cb23ec2a57233558a40ec0395a5f  libgo/go/crypto/tls/tls_test.go
  ddff2aca00154dc29dd8c48e5fba8058  libgo/go/crypto/x509/cert_pool.go
  019cd0de93051604ec73259d63bff379  libgo/go/crypto/x509/pem_decrypt.go
  230879afde9677a0271203e8e16d7800  libgo/go/crypto/x509/pem_decrypt_test.go
! e6b071a474f3447b5d06d8d56c7fa44a  libgo/go/crypto/x509/pkcs1.go
! 83cf0482a86061b2fe9e4a3e31f5104e  libgo/go/crypto/x509/pkcs8.go
! c296b2c509a2a5e0322c789ed2dc5807  libgo/go/crypto/x509/pkcs8_test.go
! 7329a3dd0f71e01a216d8dbc079e48fb  libgo/go/crypto/x509/pkix/pkix.go
  117277d2eb637067ac41fdbd89fea851  libgo/go/crypto/x509/root.go
! 57725a25292e479b21dc2d92bf295be6  libgo/go/crypto/x509/root_bsd.go
! 62033c69288a0dacbb5059d31d6903d5  libgo/go/crypto/x509/root_cgo_darwin.go
! 2b41731e005b68f4c7a76f9fabaf5dc9  libgo/go/crypto/x509/root_darwin.go
! 1c796f03c0e22d264bec1876f9c98693  libgo/go/crypto/x509/root_darwin_arm_gen.go
! ad4f335e289e103214e510c7c5b8f40c  libgo/go/crypto/x509/root_darwin_armx.go
  a75ad5ca9ccbd919c5eb22b337c409ef  libgo/go/crypto/x509/root_linux.go
  028704b01b1303c87369ba249dd23181  libgo/go/crypto/x509/root_nacl.go
  59185e7130f20f5c1cafbf631adbc177  libgo/go/crypto/x509/root_nocgo_darwin.go
  56b5f7e4a24a9ede47d6e12705d8f994  libgo/go/crypto/x509/root_plan9.go
  cc06b79ec659b9f713f62b59de08335f  libgo/go/crypto/x509/root_solaris.go
! 545006bd1007ce52787ea4a4a2385dfc  libgo/go/crypto/x509/root_unix.go
! 999d6adc08e4642a3d82e2e40ba78915  libgo/go/crypto/x509/root_windows.go
! 069a7254eca8b3a71dd1127d1fb1dab9  libgo/go/crypto/x509/sec1.go
! 723da13ab985d31c6b047243153d9f4f  libgo/go/crypto/x509/sec1_test.go
  f0091d504a60680b712c7cb20517a960  libgo/go/crypto/x509/sha2_windows_test.go
! fbb3850313f8c767bac5fa7101178e57  libgo/go/crypto/x509/verify.go
! 1b8e55021d8a8bd494339df5da72f9a2  libgo/go/crypto/x509/verify_test.go
! 71431ef3876acb48c6c4e2c2689b6265  libgo/go/crypto/x509/x509.go
! e3ef06f390484c2d3fc7bee3c053ffd3  libgo/go/crypto/x509/x509_test.go
  4352c9a4d6dc2867f10435f9d2041a3a  libgo/go/crypto/x509/x509_test_import.go
! 7770788b7442dbafd7983d44cd1fe857  libgo/go/database/sql/convert.go
! da8c10e2fedccf355f8f2b92127ca9a8  libgo/go/database/sql/convert_test.go
! 8768f9c1a12a66bd97971ae05a18b4e5  libgo/go/database/sql/ctxutil.go
! bb0c29e9d96e8917759e3d55083f61a5  libgo/go/database/sql/driver/driver.go
  02f4ccbd55ef2dbd3ed2be2b5834c758  libgo/go/database/sql/driver/types.go
  1ba0cbcd6ef965b8b3791e7825c14237  libgo/go/database/sql/driver/types_test.go
! 0cbd689ee13da552e035c7c3fb450cdf  libgo/go/database/sql/fakedb_test.go
! c9fbc5609c77423409f7d643fb99b252  libgo/go/database/sql/sql.go
! 7a721e18aa42d1095139628a80a30067  libgo/go/database/sql/sql_test.go
  1d8842a6e32cac7cb54269d83219bc1c  libgo/go/debug/dwarf/buf.go
  408457b3225fd0eb9c14df20194b11d2  libgo/go/debug/dwarf/class_string.go
  91540c538fcbc5d4bb98fbcad31c21d0  libgo/go/debug/dwarf/const.go
! db6b852b2569fad462605301d41551a1  libgo/go/debug/dwarf/entry.go
! f445109ee9c3bb4221b9ecd1d5cf3a09  libgo/go/debug/dwarf/entry_test.go
! e80da6b430980d213b868a39e87d3c12  libgo/go/debug/dwarf/line.go
! 0a232684f859a40f6433ab64cf068be1  libgo/go/debug/dwarf/line_test.go
! 58809893e6097af419ab9f522d2847cb  libgo/go/debug/dwarf/open.go
  c48488233d6ad5097bba0895351ae989  libgo/go/debug/dwarf/testdata/cycle.c
  c23f993b006d7c48440e841566c9cee8  libgo/go/debug/dwarf/testdata/cycle.elf
  53be9821e20d51fc576404ee0d0cdb3b  libgo/go/debug/dwarf/testdata/line-clang.elf
  f73405447309d114781eb0331b37ffa2  libgo/go/debug/dwarf/testdata/line-gcc.elf
  644ab0e7301af5d40837759ee9f7a23e  libgo/go/debug/dwarf/testdata/line1.c
  12ea9859c82eaf47061782b44548c47a  libgo/go/debug/dwarf/testdata/line1.h
--- 65879,65963 ----
  dfeaacf217ca8b36eb8a477d25d4f732  libgo/go/crypto/tls/testdata/Server-TLSv10-RSA-RC4
  d080f960aaf6d2d2eac626c139dd9c2c  libgo/go/crypto/tls/testdata/Server-TLSv11-FallbackSCSV
  eb11f007258fdf3e417df10cfd3b1b9b  libgo/go/crypto/tls/testdata/Server-TLSv11-RSA-RC4
! db4b3fa88a456ca24fca6cb5efbfe6ce  libgo/go/crypto/tls/testdata/Server-TLSv12-ALPN
! 51779ab032392e7803dcc3e641cea28a  libgo/go/crypto/tls/testdata/Server-TLSv12-ALPN-NoMatch
! 731abd2c7f02f86b6dee328bd7ad7bcc  libgo/go/crypto/tls/testdata/Server-TLSv12-CipherSuiteCertPreferenceECDSA
! 3f511c547b8b5900dc9d727b6cdb926d  libgo/go/crypto/tls/testdata/Server-TLSv12-CipherSuiteCertPreferenceRSA
! c7757a062884731d8c044ffe3c92a2e5  libgo/go/crypto/tls/testdata/Server-TLSv12-ClientAuthRequestedAndECDSAGiven
! 2c413b11ba065ad58014a855f3a0a62d  libgo/go/crypto/tls/testdata/Server-TLSv12-ClientAuthRequestedAndGiven
! 82f0a0ec40be77ccc32205173b9125d6  libgo/go/crypto/tls/testdata/Server-TLSv12-ClientAuthRequestedNotGiven
! d8be4d0e441453140a10b11cb16644ff  libgo/go/crypto/tls/testdata/Server-TLSv12-ECDHE-ECDSA-AES
  571fe4f5a56ad93d2310c5ddbd7709f1  libgo/go/crypto/tls/testdata/Server-TLSv12-IssueTicket
  cf4efbc4ecf26200846bd5269e0035d2  libgo/go/crypto/tls/testdata/Server-TLSv12-IssueTicketPreDisable
  b828d5f551ca959342347a52f1cc2ed9  libgo/go/crypto/tls/testdata/Server-TLSv12-RSA-3DES
  15660e8a29c785222608c8dad9360645  libgo/go/crypto/tls/testdata/Server-TLSv12-RSA-AES
! d33c7021aae281bba83280d2ce3abf41  libgo/go/crypto/tls/testdata/Server-TLSv12-RSA-AES-GCM
! 50fdf47158317e11bc6d4a3b12db0c8b  libgo/go/crypto/tls/testdata/Server-TLSv12-RSA-AES256-GCM-SHA384
  908dfc446116df1d2541fb13b24ff69d  libgo/go/crypto/tls/testdata/Server-TLSv12-RSA-RC4
  0104dfa0246a2cd2f4356efe03672f24  libgo/go/crypto/tls/testdata/Server-TLSv12-Resume
  bf6526c7c3ca5410275fe8324a806dc4  libgo/go/crypto/tls/testdata/Server-TLSv12-ResumeDisabled
  ead17901cc70e2d5a56d21a577331606  libgo/go/crypto/tls/testdata/Server-TLSv12-SNI
  093d7945abe3b126cfa5ab72a3bf28e2  libgo/go/crypto/tls/testdata/Server-TLSv12-SNI-GetCertificate
  ada71e991b0041048b0c500bd4d7e235  libgo/go/crypto/tls/testdata/Server-TLSv12-SNI-GetCertificateNotFound
! c454d9e9e42729dcea7c22a2de705947  libgo/go/crypto/tls/testdata/Server-TLSv12-X25519-ECDHE-RSA-AES-GCM
  4a25672627d687a188976fd9da61d578  libgo/go/crypto/tls/ticket.go
  4ed5fcb9769b3017748ae016834d23c5  libgo/go/crypto/tls/tls.go
! fffdc03c7ee29d8a834f6c88d9cc31a8  libgo/go/crypto/tls/tls_test.go
  ddff2aca00154dc29dd8c48e5fba8058  libgo/go/crypto/x509/cert_pool.go
+ 53b2a58d3aa368569f3ece24ff58549c  libgo/go/crypto/x509/name_constraints_test.go
  019cd0de93051604ec73259d63bff379  libgo/go/crypto/x509/pem_decrypt.go
  230879afde9677a0271203e8e16d7800  libgo/go/crypto/x509/pem_decrypt_test.go
! 6fdfe9dcc21ae07e500fd8dba4bdfb2c  libgo/go/crypto/x509/pkcs1.go
! 97ead70fac4ab07211504071716ed303  libgo/go/crypto/x509/pkcs8.go
! cb7119cfcd90f9da11cfb6d16adfcb43  libgo/go/crypto/x509/pkcs8_test.go
! da9353063cc010a27d215befc3e3d901  libgo/go/crypto/x509/pkix/pkix.go
  117277d2eb637067ac41fdbd89fea851  libgo/go/crypto/x509/root.go
! ce2e52fce2b375e2e9bdd1bad9c864cc  libgo/go/crypto/x509/root_aix.go
! 88c5798b2d7468ea7b8aef13b2f48eaf  libgo/go/crypto/x509/root_bsd.go
! 157042a90bf9ee56d67a29aa4785d512  libgo/go/crypto/x509/root_cgo_darwin.go
! e8a3168757df68b96e535a1946150eb2  libgo/go/crypto/x509/root_darwin.go
! 7d23ff87fc14b24234f10c74a2936f69  libgo/go/crypto/x509/root_darwin_arm_gen.go
! 25c9edb50a5e21a551dd74dfc6d91280  libgo/go/crypto/x509/root_darwin_armx.go
  a75ad5ca9ccbd919c5eb22b337c409ef  libgo/go/crypto/x509/root_linux.go
  028704b01b1303c87369ba249dd23181  libgo/go/crypto/x509/root_nacl.go
  59185e7130f20f5c1cafbf631adbc177  libgo/go/crypto/x509/root_nocgo_darwin.go
  56b5f7e4a24a9ede47d6e12705d8f994  libgo/go/crypto/x509/root_plan9.go
  cc06b79ec659b9f713f62b59de08335f  libgo/go/crypto/x509/root_solaris.go
! 49b9ac99386ccb283f2d08b027201370  libgo/go/crypto/x509/root_unix.go
! d42ea13ed0bf50c5ca680bf6847e1129  libgo/go/crypto/x509/root_unix_test.go
! 56e6d1ac4de9975d38d162c83aa7b853  libgo/go/crypto/x509/root_windows.go
! 444dcd31188d02acf157527e22dfc199  libgo/go/crypto/x509/sec1.go
! e44b8fff7bea4930da77c05f9f1a3e3c  libgo/go/crypto/x509/sec1_test.go
  f0091d504a60680b712c7cb20517a960  libgo/go/crypto/x509/sha2_windows_test.go
! 18202f8d63fb43e053de6458d55872ad  libgo/go/crypto/x509/test-file.crt
! 53c378bcca2793c3fa7a4df52707eb56  libgo/go/crypto/x509/testdata/test-dir.crt
! 5c2da163ef4822dac8c87cf3deb5ea0a  libgo/go/crypto/x509/verify.go
! ce8c55f117be0c1aff5c344d8a4afcab  libgo/go/crypto/x509/verify_test.go
! 3f5309097fac2d7a44d69ac9ff5f4123  libgo/go/crypto/x509/x509.go
! aeeed7e03fe3e75e5537f7167a1fd986  libgo/go/crypto/x509/x509_test.go
  4352c9a4d6dc2867f10435f9d2041a3a  libgo/go/crypto/x509/x509_test_import.go
! 9e933bbd772df625b84c62e9b787842b  libgo/go/database/sql/convert.go
! fc64de069b1dc7d46b273e116a8862c1  libgo/go/database/sql/convert_test.go
! 5270871e7a3971600eb1bdcb656aa6e5  libgo/go/database/sql/ctxutil.go
! a1700d420a1f84b34036045c0ccde394  libgo/go/database/sql/driver/driver.go
  02f4ccbd55ef2dbd3ed2be2b5834c758  libgo/go/database/sql/driver/types.go
  1ba0cbcd6ef965b8b3791e7825c14237  libgo/go/database/sql/driver/types_test.go
! 50784fa60dcac9c26b01f5c2977e7ba9  libgo/go/database/sql/fakedb_test.go
! 2316b6a0a9593fc7846f3b3726d92a8a  libgo/go/database/sql/sql.go
! 9b1a888e2fe2874da9819201f35be3e0  libgo/go/database/sql/sql_test.go
  1d8842a6e32cac7cb54269d83219bc1c  libgo/go/debug/dwarf/buf.go
  408457b3225fd0eb9c14df20194b11d2  libgo/go/debug/dwarf/class_string.go
  91540c538fcbc5d4bb98fbcad31c21d0  libgo/go/debug/dwarf/const.go
! b6b9ad4ac75eebcc4ab72552a1812a18  libgo/go/debug/dwarf/entry.go
! e9b455aca645bb85581a7f3f303a43f5  libgo/go/debug/dwarf/entry_test.go
! 248287fbc820cab5a4276928ff9d7209  libgo/go/debug/dwarf/export_test.go
! fc0bed3dd5fa4a9d741eb20848991a45  libgo/go/debug/dwarf/line.go
! f8e829933facfa5e1adbe4ac1cc4c326  libgo/go/debug/dwarf/line_test.go
! bbca69ae176905ac6f5db24af2601a21  libgo/go/debug/dwarf/open.go
  c48488233d6ad5097bba0895351ae989  libgo/go/debug/dwarf/testdata/cycle.c
  c23f993b006d7c48440e841566c9cee8  libgo/go/debug/dwarf/testdata/cycle.elf
  53be9821e20d51fc576404ee0d0cdb3b  libgo/go/debug/dwarf/testdata/line-clang.elf
+ 4556640fe537f2e39652e7dddf3a6d3e  libgo/go/debug/dwarf/testdata/line-gcc-win.bin
  f73405447309d114781eb0331b37ffa2  libgo/go/debug/dwarf/testdata/line-gcc.elf
  644ab0e7301af5d40837759ee9f7a23e  libgo/go/debug/dwarf/testdata/line1.c
  12ea9859c82eaf47061782b44548c47a  libgo/go/debug/dwarf/testdata/line1.h
*************** b92b510ef6d88424dd0d9c8a4bc4dbb5  libgo/
*** 61739,61753 ****
  8c7e4f38f77d12641dd655ac2bf2b1ce  libgo/go/debug/dwarf/testdata/typedef.elf
  7099066229488f85aba68416dd33bf83  libgo/go/debug/dwarf/testdata/typedef.elf4
  64631e6b3ed893db85436dc8c1544486  libgo/go/debug/dwarf/testdata/typedef.macho
! a428e860dc8c5d4f47703e2ac3fac488  libgo/go/debug/dwarf/type.go
! 19e72b06a3e66e0aaf8554ef9d72a968  libgo/go/debug/dwarf/type_test.go
! 9c87e850e4763b500250b6159ffbc3e4  libgo/go/debug/dwarf/typeunit.go
! 61285a6d423aaaa33ed011f6b882783e  libgo/go/debug/dwarf/unit.go
! 455879b5564ae76554d20f9b2622c208  libgo/go/debug/elf/elf.go
  28eb6b9f4f46f23fd82e0d06f1365df2  libgo/go/debug/elf/elf_test.go
! 10335145ae6dabeb9c4154f0c13bd483  libgo/go/debug/elf/file.go
  3993f1b5854e2204d5ab7e3aa41700d6  libgo/go/debug/elf/file_test.go
! 372b0146b1a2068e8ef8108b3447f87e  libgo/go/debug/elf/reader.go
  41be99901b2a28d0e538ab451598c7c8  libgo/go/debug/elf/symbols_test.go
  e4fd8964522a2eb47fd40f7171a8ae1b  libgo/go/debug/elf/testdata/compressed-32.obj
  d3514f24cc62fec957dcc8222f081a96  libgo/go/debug/elf/testdata/compressed-64.obj
--- 65970,65984 ----
  8c7e4f38f77d12641dd655ac2bf2b1ce  libgo/go/debug/dwarf/testdata/typedef.elf
  7099066229488f85aba68416dd33bf83  libgo/go/debug/dwarf/testdata/typedef.elf4
  64631e6b3ed893db85436dc8c1544486  libgo/go/debug/dwarf/testdata/typedef.macho
! 7248f3b0a943933dc47b3249c0bedab4  libgo/go/debug/dwarf/type.go
! a2c4330ddd809e4f20a2ab104926cc4b  libgo/go/debug/dwarf/type_test.go
! fc0566dd79456cfae4d22ccb91b0ed1e  libgo/go/debug/dwarf/typeunit.go
! 6f4828f638cb6277eccebbddefaa40ca  libgo/go/debug/dwarf/unit.go
! baecde586a1108edc9c5a453ef6bace6  libgo/go/debug/elf/elf.go
  28eb6b9f4f46f23fd82e0d06f1365df2  libgo/go/debug/elf/elf_test.go
! 87e4c1115f0dfad1f75395820be4b729  libgo/go/debug/elf/file.go
  3993f1b5854e2204d5ab7e3aa41700d6  libgo/go/debug/elf/file_test.go
! f9f04dd77ce8b45403e77ea632d93590  libgo/go/debug/elf/reader.go
  41be99901b2a28d0e538ab451598c7c8  libgo/go/debug/elf/symbols_test.go
  e4fd8964522a2eb47fd40f7171a8ae1b  libgo/go/debug/elf/testdata/compressed-32.obj
  d3514f24cc62fec957dcc8222f081a96  libgo/go/debug/elf/testdata/compressed-64.obj
*************** f549e93bb4abecfa2f405787ace90ac7  libgo/
*** 61776,61794 ****
  0c042c48ee46b12d9e396c15d9f5998e  libgo/go/debug/gosym/pclinetest.s
  6921cd3ecf133c9577592509f7b06d2c  libgo/go/debug/gosym/pclntab.go
  e2493661f442a4df16e05e8595e39264  libgo/go/debug/gosym/pclntab_test.go
! 84d6502322f721a5b090ae29365cd21c  libgo/go/debug/gosym/symtab.go
  6b7db763944b7e5b9dbfc4c5f9ff5dea  libgo/go/debug/gosym/symtab_test.go
  20865a878811a9de0a514120158f3cec  libgo/go/debug/macho/fat.go
! c9586f0c0af2a212f9f138e042898bff  libgo/go/debug/macho/file.go
! c35db5f703bf7e4a07017cdf602f02e3  libgo/go/debug/macho/file_test.go
! f582759cfc9cbe17b937a27a88b1fdb3  libgo/go/debug/macho/macho.go
  ffa108d6667d7d630d8a7081c9de2e6b  libgo/go/debug/macho/testdata/fat-gcc-386-amd64-darwin-exec
  cf6fb2d5a91704e510e0ddb613f19e94  libgo/go/debug/macho/testdata/gcc-386-darwin-exec
  8ffa041aa4d89dd5184b281399f66c7c  libgo/go/debug/macho/testdata/gcc-amd64-darwin-exec
  4109ed5252718ccc1b0640a2c0bcf2bc  libgo/go/debug/macho/testdata/gcc-amd64-darwin-exec-debug
  16ac886f4f5d825a30306e935bbeb5a4  libgo/go/debug/macho/testdata/hello.c
  a4f8f5157bd819b75e1a27bdc59820fb  libgo/go/debug/pe/file.go
! d89911b387e0ee7e89d304be9863d1e5  libgo/go/debug/pe/file_test.go
  348c6b752d60b28e989407455d04aeb3  libgo/go/debug/pe/pe.go
  404dc2de3446caddf51b1e530890772d  libgo/go/debug/pe/section.go
  4399be3bd31338347f465025d6f9bcb3  libgo/go/debug/pe/string.go
--- 66007,66032 ----
  0c042c48ee46b12d9e396c15d9f5998e  libgo/go/debug/gosym/pclinetest.s
  6921cd3ecf133c9577592509f7b06d2c  libgo/go/debug/gosym/pclntab.go
  e2493661f442a4df16e05e8595e39264  libgo/go/debug/gosym/pclntab_test.go
! c70b8c1b37e1a5ce3791a64db68055b7  libgo/go/debug/gosym/symtab.go
  6b7db763944b7e5b9dbfc4c5f9ff5dea  libgo/go/debug/gosym/symtab_test.go
  20865a878811a9de0a514120158f3cec  libgo/go/debug/macho/fat.go
! 9d02b3dbd6fba5fc451549039cb82794  libgo/go/debug/macho/file.go
! 272b96678797109f01bbe6b906856686  libgo/go/debug/macho/file_test.go
! ad2b95f06a6763b6a7ebaa5af75a30df  libgo/go/debug/macho/macho.go
! 536d9629bf1af47f22a53d666d457f25  libgo/go/debug/macho/reloctype.go
! b14da0c8fe4d2541590c5d4c0423aa89  libgo/go/debug/macho/reloctype_string.go
! cb47bc1e92fd2aa41c081b85e1f7cc8c  libgo/go/debug/macho/testdata/clang-386-darwin-exec-with-rpath
! 50233749092aa5d5f2dd72e391731abf  libgo/go/debug/macho/testdata/clang-386-darwin.obj
! 120f5cfdec167ec0aa52db79130c0908  libgo/go/debug/macho/testdata/clang-amd64-darwin-exec-with-rpath
! 73ace7da11fdeefc5a11c5d76421cc1d  libgo/go/debug/macho/testdata/clang-amd64-darwin.obj
  ffa108d6667d7d630d8a7081c9de2e6b  libgo/go/debug/macho/testdata/fat-gcc-386-amd64-darwin-exec
  cf6fb2d5a91704e510e0ddb613f19e94  libgo/go/debug/macho/testdata/gcc-386-darwin-exec
  8ffa041aa4d89dd5184b281399f66c7c  libgo/go/debug/macho/testdata/gcc-amd64-darwin-exec
  4109ed5252718ccc1b0640a2c0bcf2bc  libgo/go/debug/macho/testdata/gcc-amd64-darwin-exec-debug
  16ac886f4f5d825a30306e935bbeb5a4  libgo/go/debug/macho/testdata/hello.c
  a4f8f5157bd819b75e1a27bdc59820fb  libgo/go/debug/pe/file.go
! 1aab25a4380f0c22365b051945ab2b20  libgo/go/debug/pe/file_cgo_test.go
! cb0f14046a09c619aa9604679c8420c2  libgo/go/debug/pe/file_test.go
  348c6b752d60b28e989407455d04aeb3  libgo/go/debug/pe/pe.go
  404dc2de3446caddf51b1e530890772d  libgo/go/debug/pe/section.go
  4399be3bd31338347f465025d6f9bcb3  libgo/go/debug/pe/string.go
*************** c4e5723498d4afada215d9eb0f77cfd1  libgo/
*** 61805,61945 ****
  5e87de15bf1da255815847ea34228460  libgo/go/debug/plan9obj/testdata/386-plan9-exec
  77680291e3ef7623370888042dd5ff21  libgo/go/debug/plan9obj/testdata/amd64-plan9-exec
  96cd8527213745606240ee5d83331f4a  libgo/go/debug/plan9obj/testdata/hello.c
  92462ac904ce7336d9743e4e831d7f23  libgo/go/encoding/ascii85/ascii85.go
! da6f6e80c86a5508147ba3bf07cb3b37  libgo/go/encoding/ascii85/ascii85_test.go
! e1e1c78f13683d741b791a61d253aa2c  libgo/go/encoding/asn1/asn1.go
! 76a72551ebe72dc6f88160a145eabba5  libgo/go/encoding/asn1/asn1_test.go
! 3abaa0f2fbf362e71adeb4dbe5e00c99  libgo/go/encoding/asn1/common.go
! 1ca14803bf94e9f295c5d4f87a7acf64  libgo/go/encoding/asn1/marshal.go
! 928116f9884a9b33e893afae4147b546  libgo/go/encoding/asn1/marshal_test.go
! f07347060e35a7d0693d5415e4c32945  libgo/go/encoding/base32/base32.go
! 3a0a55875244b9ff2e046d91c1960931  libgo/go/encoding/base32/base32_test.go
! e0ca200cf9feb4cda4f3a3995df06b4f  libgo/go/encoding/base64/base64.go
! 792cf96883d60f89971268987ee3b5ca  libgo/go/encoding/base64/base64_test.go
! 8bcfaac8bf8a27456d35e0640aff57f4  libgo/go/encoding/binary/binary.go
! ab1ebef8a854d2e05216842bb2f68ae1  libgo/go/encoding/binary/binary_test.go
! 739855b2248e9297dc5f335a5fcde6bb  libgo/go/encoding/binary/varint.go
  cf4f9c7b06e86b79dedfb7fa7c7f1da5  libgo/go/encoding/binary/varint_test.go
  f6233723882611d73c336c88a2eef5c3  libgo/go/encoding/csv/example_test.go
! 191480147cc5b9f67f848775ae4e0ae8  libgo/go/encoding/csv/reader.go
! 378545c6bc97580446dd49cf9c3510d3  libgo/go/encoding/csv/reader_test.go
! d813d8d2daa81c4dc57efaaa42bb7ea4  libgo/go/encoding/csv/writer.go
  106299120a3823dabac9d8833011ced2  libgo/go/encoding/csv/writer_test.go
  cf390c08a8bce581b43b6812e08876c9  libgo/go/encoding/encoding.go
! 4affafd009c634720fcd8a71648b1a1e  libgo/go/encoding/gob/codec_test.go
! d659d55434c247d95aed0d61a63f839d  libgo/go/encoding/gob/debug.go
  dbb8c63e4500a7f465567dcc1964ca3d  libgo/go/encoding/gob/dec_helpers.go
  e5b92d2f191d79f66cbee2af41e19666  libgo/go/encoding/gob/decgen.go
! 705777ce29a3635ebabb0740f958af88  libgo/go/encoding/gob/decode.go
! 9124157747b2d7edcbdf53fcb93f879c  libgo/go/encoding/gob/decoder.go
! 4d30130f68a3abd0f74dc495759b8e05  libgo/go/encoding/gob/doc.go
  5a6d15243feedb1eca701318de31977a  libgo/go/encoding/gob/dump.go
  342def1f1e23172f8586e6d1beb5fab3  libgo/go/encoding/gob/enc_helpers.go
  f073ea6a9b229a139c687d095b59d699  libgo/go/encoding/gob/encgen.go
! 42ed384e04781f232b6fda8c1644edf5  libgo/go/encoding/gob/encode.go
  6cae6076f1dc5af0f66c135414680baa  libgo/go/encoding/gob/encoder.go
! 8d57396cea5731cd3ec90b5c00c12e4f  libgo/go/encoding/gob/encoder_test.go
! 311ccde60653140a19f58bb5435669d1  libgo/go/encoding/gob/error.go
! 672371d7b44b3125fb2b8fc7aa421a3a  libgo/go/encoding/gob/gobencdec_test.go
! beed0828e410cc872d5e7593afda5c23  libgo/go/encoding/gob/timing_test.go
! fa8de10a5805b919531da5720738fab2  libgo/go/encoding/gob/type.go
! fcf5432af6d24f575bbb9b3173b769f8  libgo/go/encoding/gob/type_test.go
  11b281843bddf61011d9c959a2730813  libgo/go/encoding/hex/example_test.go
! 548b28b5dd5349c0d5b35673c4bd971b  libgo/go/encoding/hex/hex.go
! f8bc3aec5f190db2769315c88e18aaef  libgo/go/encoding/hex/hex_test.go
! fd5d8b3ab4459c743c1eb7122a6ee208  libgo/go/encoding/json/bench_test.go
! f49c6a20e35005d6e3cae84eab8af533  libgo/go/encoding/json/decode.go
! 4616c5455c74d32af90d6dc2f5eaae3d  libgo/go/encoding/json/decode_test.go
! c11da029e48e3d43cd46279acf3b805f  libgo/go/encoding/json/encode.go
! e2892136d543840a9ef088a0649ccfef  libgo/go/encoding/json/encode_test.go
  a8b7bfd44b9f814edbff88c2b2f7e724  libgo/go/encoding/json/example_marshaling_test.go
  58f0b67923caf5d1a8ea55470b6c0ac0  libgo/go/encoding/json/fold.go
  7cc305f2f6cf1de1cc99724a1748a7bc  libgo/go/encoding/json/fold_test.go
  eecc76d749247609ecfad310fe84d236  libgo/go/encoding/json/indent.go
  dff2950cbcec7e83970154fe71eae399  libgo/go/encoding/json/number_test.go
! b1311a2b7fd9361978c07643b253b4ba  libgo/go/encoding/json/scanner.go
! 7361d56d008e2d020977da623665ddda  libgo/go/encoding/json/scanner_test.go
! 77c627722950499a06ac8792208a227f  libgo/go/encoding/json/stream.go
! 189d3e703f1c4a4723681c2b29711a51  libgo/go/encoding/json/stream_test.go
  1277e282f6bf1c91d83f726aae7be95c  libgo/go/encoding/json/tables.go
  cf8d91034e9bab7b6cb38c7e5098954c  libgo/go/encoding/json/tagkey_test.go
  9f0b63408a1cf1c63f1ba0a556aa0ca0  libgo/go/encoding/json/tags.go
  89e4c307ea4a4f4ec3eb43d0cea004c0  libgo/go/encoding/json/tags_test.go
  9d281d5b21f0fcbbf6e840a2901d01c1  libgo/go/encoding/json/testdata/code.json.gz
! c6920f4d105c97c5e2a37fa770ae0fdb  libgo/go/encoding/pem/example_test.go
! b358a4406cc515e104eef4ab17c97e46  libgo/go/encoding/pem/pem.go
! ee885f25f83d7ed31f923578a7666732  libgo/go/encoding/pem/pem_test.go
! 659cbebb141452610ccfc7a0c5f2edfd  libgo/go/encoding/xml/atom_test.go
! f3d6d212b3d881872c81721b61935235  libgo/go/encoding/xml/marshal.go
! 5af64f9526cc67cac134a83f12609c01  libgo/go/encoding/xml/marshal_test.go
! 436b993d5ba282481badda514f88d39e  libgo/go/encoding/xml/read.go
! ff822204a4f9bb8a292483e8fe448188  libgo/go/encoding/xml/read_test.go
! 361d30b0fd3f48c478570ab6d9e1f4be  libgo/go/encoding/xml/typeinfo.go
! a0d44924ea46a89eb23ac1ddb976ab1e  libgo/go/encoding/xml/xml.go
! ec3dbc7e585cb13b729b4dae81c78ec5  libgo/go/encoding/xml/xml_test.go
  6cc42056846807834b12f937d7c7528a  libgo/go/errors/errors.go
  d3f785fb54dda63a9286d9e2038f5aeb  libgo/go/errors/errors_test.go
! 9570c2fcbe5c635e0f2723d92060ae0f  libgo/go/exp/README
! a73827f69c118add0c8490dbdac4351e  libgo/go/exp/proxy/direct.go
! 40c1d2d85e44e7d3011793c100f485aa  libgo/go/exp/proxy/per_host.go
! 05442517b16d2cd688f125b14ad2a608  libgo/go/exp/proxy/per_host_test.go
! 86a193e35715b46fd7397606ce679a79  libgo/go/exp/proxy/proxy.go
! 78856ab853a4a79946362744f1d31691  libgo/go/exp/proxy/proxy_test.go
! b131be6e3f6d7c94db74e920c464289c  libgo/go/exp/proxy/socks5.go
! c47536c131dbfd1f39faaf4221370b64  libgo/go/exp/terminal/terminal.go
! 002f23e1d4a0aa4a32ba2d1e7720ac08  libgo/go/exp/terminal/terminal_test.go
! 6c205d5769af494f06e3313404ca2cd6  libgo/go/exp/terminal/util.go
! f9c4ed9d001d59837ea535071d952d5d  libgo/go/expvar/expvar.go
! 5f8fd38391897b3bf46951d92405e262  libgo/go/expvar/expvar_test.go
  97c2f30cebb7bb49677b5c6216b7e495  libgo/go/flag/example_test.go
! 2fa90c085e57f25698b82ee22642c1eb  libgo/go/flag/export_test.go
! ebfe8e83f292625ea4570ed604956621  libgo/go/flag/flag.go
! 01174f2c031acd6f903779058754f9bd  libgo/go/flag/flag_test.go
! 286df175f1a0c3b44e95551e4e1b7268  libgo/go/fmt/doc.go
  4f3d783dffb31ae9d17c27343eb363d3  libgo/go/fmt/export_test.go
! c6dcef48985adfce008381f4503695f8  libgo/go/fmt/fmt_test.go
! c3398e5c45d3051d5cf1c01de9d8efb8  libgo/go/fmt/format.go
! 6adee4b12a2dcc0c6629f894753f24a7  libgo/go/fmt/print.go
! 5d2375483fed9a718cac754e15314445  libgo/go/fmt/scan.go
  32f724f094492dc549733a6623883678  libgo/go/fmt/scan_test.go
  2369824f08c60e32daa40b736d182964  libgo/go/fmt/stringer_test.go
! 490e3f0df026accc6adabb422265cb99  libgo/go/go/ast/ast.go
  f8d3946f87220cd03b7c011174b0fd23  libgo/go/go/ast/ast_test.go
  9f1f11f06f41ae838e8a0b1d1041291b  libgo/go/go/ast/commentmap.go
  889bfab30af17cf18a71cf952b6a0740  libgo/go/go/ast/commentmap_test.go
  f8a43e844d67505fad27481b09f6c630  libgo/go/go/ast/filter.go
  bf2c3134657aed37c679064ac0654d88  libgo/go/go/ast/filter_test.go
! 6b78bd9e8b13bc7cc76a94a6966ae65e  libgo/go/go/ast/import.go
  6b09f5a06414521cc8836ebcfb943a1a  libgo/go/go/ast/print.go
  37f0da8f9994ef23553dd3327895afa7  libgo/go/go/ast/print_test.go
  3be25bbb06e1daddd8871a53a5202517  libgo/go/go/ast/resolve.go
  a34425a8ac23d6af13812cc2f18b5e0b  libgo/go/go/ast/scope.go
  518c3e4a187ec8053a8721ab88b1b6c8  libgo/go/go/ast/walk.go
! 89cbc6821c7f40129774c06e4e6681c6  libgo/go/go/build/build.go
! 3a742c229bd1e19343d7a58f3cc64d8c  libgo/go/go/build/build_test.go
! cf0adb331b16043d4ddb61265d41f81e  libgo/go/go/build/deps_test.go
! 020b7067f306f80d1db2117d8a68ccdc  libgo/go/go/build/doc.go
  d48cbae850a60e76803d78aa5f102e08  libgo/go/go/build/read.go
  d659ad6924912592ff08162db629f037  libgo/go/go/build/read_test.go
! f13a766321475ab9041f4ecb13c42051  libgo/go/go/build/syslist.go
  a3e1b4a47759ac93d3a90b8bda10894f  libgo/go/go/build/syslist_test.go
  d41d8cd98f00b204e9800998ecf8427e  libgo/go/go/build/testdata/empty/dummy
  78d76f9ed4082cc04f88c2bd0a730b22  libgo/go/go/build/testdata/multi/file.go
  8ebac376c5cf2e57f01584c8cfd31d65  libgo/go/go/build/testdata/multi/file_appengine.go
  de6991b3771170d6d3ce31fe2c89b5f1  libgo/go/go/build/testdata/other/file/file.go
  0f6926e3a63df39bdeb382e093950776  libgo/go/go/build/testdata/other/main.go
! 36059949be3a99663e7b64e05ae6e3cd  libgo/go/go/constant/value.go
! 7fae50b281b7fb7557cd922c9572d1a3  libgo/go/go/constant/value_test.go
! 06be5936748192576140a1b982dfccd2  libgo/go/go/doc/comment.go
! 58e647a4fca14eeb393d486135dd33f1  libgo/go/go/doc/comment_test.go
  f17e3339531d895d832368e0256b269f  libgo/go/go/doc/doc.go
! d14e4ba8b93b6e91ea67a5310f3a1b7d  libgo/go/go/doc/doc_test.go
! efc53247c98c4601347f34875e6ba9dd  libgo/go/go/doc/example.go
  66476020738402e8070c412b0c3ca857  libgo/go/go/doc/example_test.go
! d4c6f719d3a5b8cdcc9b111452269c28  libgo/go/go/doc/exports.go
  a8c394bea00b685d8d0c5c3e24018879  libgo/go/go/doc/filter.go
  2c6c236d3cb1dbf706fda3f69426136e  libgo/go/go/doc/headscan.go
! dd629c166b5e9567bf8b68ef6b2033dc  libgo/go/go/doc/reader.go
  2d241708e28dbcfe28694db01886e714  libgo/go/go/doc/synopsis.go
  708582e08d18a7e7b64876e9ba4cf69d  libgo/go/go/doc/synopsis_test.go
  9696451e9ed297a37eeb6577a16d9494  libgo/go/go/doc/testdata/a.0.golden
--- 66043,66184 ----
  5e87de15bf1da255815847ea34228460  libgo/go/debug/plan9obj/testdata/386-plan9-exec
  77680291e3ef7623370888042dd5ff21  libgo/go/debug/plan9obj/testdata/amd64-plan9-exec
  96cd8527213745606240ee5d83331f4a  libgo/go/debug/plan9obj/testdata/hello.c
+ fa9a5ce9bde004eeff2c9ccca032da8b  libgo/go/debug/xcoff/file.go
+ 5cee6567fd7373ed60f5b97d7e8aa84c  libgo/go/debug/xcoff/file_test.go
+ 7141b5ed6769bf5082e51f8a25e6b596  libgo/go/debug/xcoff/testdata/gcc-ppc32-aix-dwarf2-exec
+ 14163551cb4828c6edef6862c0b9049f  libgo/go/debug/xcoff/testdata/gcc-ppc32-aix-exec
+ d141fe4ce073e954a739c2e351360bd7  libgo/go/debug/xcoff/testdata/gcc-ppc64-aix-dwarf2-exec
+ 52e5cd9a295cd10738a8d11a3f72e516  libgo/go/debug/xcoff/testdata/gcc-ppc64-aix-exec
+ 263c86bf4d1ceda8a3070abee7208219  libgo/go/debug/xcoff/testdata/hello.c
+ 8cc04b1db59fdf4acc68badc19499092  libgo/go/debug/xcoff/testdata/xlc-ppc32-aix-exec
+ 78797635724d3a8303f4a60746af071c  libgo/go/debug/xcoff/testdata/xlc-ppc64-aix-exec
+ 257dfc19ff2e8edabb5bc509f273bfab  libgo/go/debug/xcoff/xcoff.go
  92462ac904ce7336d9743e4e831d7f23  libgo/go/encoding/ascii85/ascii85.go
! f00e15f0c3e2a31d5404c679363f429a  libgo/go/encoding/ascii85/ascii85_test.go
! b0d474b89126a1669fe0f848b93af588  libgo/go/encoding/asn1/asn1.go
! bf69a485dd03feb9c32d224a3ca9e189  libgo/go/encoding/asn1/asn1_test.go
! a84285d658ceaba9cb2cb38d7c0114de  libgo/go/encoding/asn1/common.go
! 95c40536d052108a36be2cac1ce54f84  libgo/go/encoding/asn1/marshal.go
! 3b9029abb3bded86681f241403cd695e  libgo/go/encoding/asn1/marshal_test.go
! 079830496d639211c1caed74ce611b9c  libgo/go/encoding/base32/base32.go
! b06e68f4ec50dcd40a9312ca4bca3da9  libgo/go/encoding/base32/base32_test.go
! 40b81c07a6695e414a72ff1c4a42b76e  libgo/go/encoding/base64/base64.go
! 6362688454ee7cc042e58ff5a025e4a8  libgo/go/encoding/base64/base64_test.go
! a4705497a1a54421d623971003a5a635  libgo/go/encoding/binary/binary.go
! 307009c8f0d1f24fe84e39b3888002ff  libgo/go/encoding/binary/binary_test.go
! ab2d348d93a3265f3577e4745556414c  libgo/go/encoding/binary/varint.go
  cf4f9c7b06e86b79dedfb7fa7c7f1da5  libgo/go/encoding/binary/varint_test.go
  f6233723882611d73c336c88a2eef5c3  libgo/go/encoding/csv/example_test.go
! 68215332200595d63ad3b44c555d5b41  libgo/go/encoding/csv/reader.go
! 2fff2dcfac128664fcb11da48c8c7389  libgo/go/encoding/csv/reader_test.go
! 58202ce60fb312f04642aab3abcf5555  libgo/go/encoding/csv/writer.go
  106299120a3823dabac9d8833011ced2  libgo/go/encoding/csv/writer_test.go
  cf390c08a8bce581b43b6812e08876c9  libgo/go/encoding/encoding.go
! 6f2486e0be472e463571778e564b37d6  libgo/go/encoding/gob/codec_test.go
! e35904a2dcd7a30c41cef893ed3c49f9  libgo/go/encoding/gob/debug.go
  dbb8c63e4500a7f465567dcc1964ca3d  libgo/go/encoding/gob/dec_helpers.go
  e5b92d2f191d79f66cbee2af41e19666  libgo/go/encoding/gob/decgen.go
! 97c8b934aceb91d1ea86d489e08ba5f3  libgo/go/encoding/gob/decode.go
! 2fbe976a9903a9482b210d9d583e8f9b  libgo/go/encoding/gob/decoder.go
! c02beb67216ac97d17cd210cc045b49e  libgo/go/encoding/gob/doc.go
  5a6d15243feedb1eca701318de31977a  libgo/go/encoding/gob/dump.go
  342def1f1e23172f8586e6d1beb5fab3  libgo/go/encoding/gob/enc_helpers.go
  f073ea6a9b229a139c687d095b59d699  libgo/go/encoding/gob/encgen.go
! 65a233200884500a38e343ff7307ec9d  libgo/go/encoding/gob/encode.go
  6cae6076f1dc5af0f66c135414680baa  libgo/go/encoding/gob/encoder.go
! 6a832f7b5dcb3fb8404e291e5e5d3644  libgo/go/encoding/gob/encoder_test.go
! dfa08fd6d3fdf33eddcc3dbe126d0926  libgo/go/encoding/gob/error.go
! 00ec39ab97b544c629a9104fe7c46480  libgo/go/encoding/gob/gobencdec_test.go
! 58f5d1e91674343e771e58571daa2fca  libgo/go/encoding/gob/timing_test.go
! a19838c42be76f32233bbeebd11763c5  libgo/go/encoding/gob/type.go
! efc0a34fb6763c8c757f71b5f6dd87c2  libgo/go/encoding/gob/type_test.go
  11b281843bddf61011d9c959a2730813  libgo/go/encoding/hex/example_test.go
! 62001c9b8f3879bbab9ebc38869c5787  libgo/go/encoding/hex/hex.go
! 198e75ccb91584293d1b90e6c079705d  libgo/go/encoding/hex/hex_test.go
! 2a2313c9d3f39d9b16b336770aca6935  libgo/go/encoding/json/bench_test.go
! 4a44c2fca8696f61f324c639b4740d0f  libgo/go/encoding/json/decode.go
! 5ecd955ae340838ff0c5f2d64e26f03d  libgo/go/encoding/json/decode_test.go
! cca5a0e9fd49889dad6d6b35928284f0  libgo/go/encoding/json/encode.go
! 6882151a7a4f8e74b906101a1f05ed9a  libgo/go/encoding/json/encode_test.go
  a8b7bfd44b9f814edbff88c2b2f7e724  libgo/go/encoding/json/example_marshaling_test.go
  58f0b67923caf5d1a8ea55470b6c0ac0  libgo/go/encoding/json/fold.go
  7cc305f2f6cf1de1cc99724a1748a7bc  libgo/go/encoding/json/fold_test.go
  eecc76d749247609ecfad310fe84d236  libgo/go/encoding/json/indent.go
  dff2950cbcec7e83970154fe71eae399  libgo/go/encoding/json/number_test.go
! 9b43777ba19d70a15548686a8e5b6cb7  libgo/go/encoding/json/scanner.go
! 85a9c996d38c7d8c39920af71e6db081  libgo/go/encoding/json/scanner_test.go
! 4947a9e9b356e40b25cfda3e40ba44c8  libgo/go/encoding/json/stream.go
! 74de72b577918cec1d4c1ddc9e7f2d2b  libgo/go/encoding/json/stream_test.go
  1277e282f6bf1c91d83f726aae7be95c  libgo/go/encoding/json/tables.go
  cf8d91034e9bab7b6cb38c7e5098954c  libgo/go/encoding/json/tagkey_test.go
  9f0b63408a1cf1c63f1ba0a556aa0ca0  libgo/go/encoding/json/tags.go
  89e4c307ea4a4f4ec3eb43d0cea004c0  libgo/go/encoding/json/tags_test.go
  9d281d5b21f0fcbbf6e840a2901d01c1  libgo/go/encoding/json/testdata/code.json.gz
! 625d2edbd271819c3214444ea9944925  libgo/go/encoding/pem/example_test.go
! 23bf9f53b03b7089c0078d8e3684472a  libgo/go/encoding/pem/pem.go
! 01047272033720b5330ae5c4f0ded954  libgo/go/encoding/pem/pem_test.go
! f7065bcad9023fbf85033e459dd41594  libgo/go/encoding/xml/atom_test.go
! 43d29f2812eff6edff9b46070d4eb7f1  libgo/go/encoding/xml/marshal.go
! 329c957caa4c8fafaf26bb3b6593ed96  libgo/go/encoding/xml/marshal_test.go
! 87a2581e08049611b72306a673c5f7fe  libgo/go/encoding/xml/read.go
! fa97bb2f93f6dd8e2546eb678966c4ee  libgo/go/encoding/xml/read_test.go
! d25624583c6a0721a3d42f86f58fdeb9  libgo/go/encoding/xml/typeinfo.go
! 0f3100d5e917007029d4242fc8a1db31  libgo/go/encoding/xml/xml.go
! 63e5fe35174ce300baf97846304777de  libgo/go/encoding/xml/xml_test.go
  6cc42056846807834b12f937d7c7528a  libgo/go/errors/errors.go
  d3f785fb54dda63a9286d9e2038f5aeb  libgo/go/errors/errors_test.go
! 700be28e06b7c4c10126d4211ae35880  libgo/go/expvar/expvar.go
! 4876065fc9017856ce3d358fc8ddccf6  libgo/go/expvar/expvar_test.go
  97c2f30cebb7bb49677b5c6216b7e495  libgo/go/flag/example_test.go
! a69ac9ffc946290a3b40d54743810cb7  libgo/go/flag/export_test.go
! 4716388d6365da6c4c34e46d732f37c3  libgo/go/flag/flag.go
! f9e5e6283310b5b1600eb45110041ae6  libgo/go/flag/flag_test.go
! aef34aec7ee71c6c1de69a744c5c5566  libgo/go/fmt/doc.go
! 97558c347fe44ab9eb6a578c4ddd7386  libgo/go/fmt/example_test.go
  4f3d783dffb31ae9d17c27343eb363d3  libgo/go/fmt/export_test.go
! 84dbc3e107ec535bb8100460b0395eb3  libgo/go/fmt/fmt_test.go
! 14e3353ebc8444b61cb7e2faf3b9836e  libgo/go/fmt/format.go
! aded7e86fd226ada3290dd82cb309e33  libgo/go/fmt/print.go
! 820263177535c8c1ead59197ce40501e  libgo/go/fmt/scan.go
  32f724f094492dc549733a6623883678  libgo/go/fmt/scan_test.go
  2369824f08c60e32daa40b736d182964  libgo/go/fmt/stringer_test.go
! 0e8cf4bc2261e38d1aa1df64c07e724d  libgo/go/go/ast/ast.go
  f8d3946f87220cd03b7c011174b0fd23  libgo/go/go/ast/ast_test.go
  9f1f11f06f41ae838e8a0b1d1041291b  libgo/go/go/ast/commentmap.go
  889bfab30af17cf18a71cf952b6a0740  libgo/go/go/ast/commentmap_test.go
  f8a43e844d67505fad27481b09f6c630  libgo/go/go/ast/filter.go
  bf2c3134657aed37c679064ac0654d88  libgo/go/go/ast/filter_test.go
! 1b32623dd3d162c9cc6335464e96b556  libgo/go/go/ast/import.go
  6b09f5a06414521cc8836ebcfb943a1a  libgo/go/go/ast/print.go
  37f0da8f9994ef23553dd3327895afa7  libgo/go/go/ast/print_test.go
  3be25bbb06e1daddd8871a53a5202517  libgo/go/go/ast/resolve.go
  a34425a8ac23d6af13812cc2f18b5e0b  libgo/go/go/ast/scope.go
  518c3e4a187ec8053a8721ab88b1b6c8  libgo/go/go/ast/walk.go
! c9a1ec5092e4162c48aea1f1275f3116  libgo/go/go/build/build.go
! 047a9dbef4cdbea2244ffbc2b72a1348  libgo/go/go/build/build_test.go
! 518fb79039e959f89c78190d51b73f46  libgo/go/go/build/deps_test.go
! 65ef30ad2f9ef7758e9354990a1a66a0  libgo/go/go/build/doc.go
  d48cbae850a60e76803d78aa5f102e08  libgo/go/go/build/read.go
  d659ad6924912592ff08162db629f037  libgo/go/go/build/read_test.go
! 2ed6bb9ce742f8fe4d11b9abe7ff7f65  libgo/go/go/build/syslist.go
  a3e1b4a47759ac93d3a90b8bda10894f  libgo/go/go/build/syslist_test.go
  d41d8cd98f00b204e9800998ecf8427e  libgo/go/go/build/testdata/empty/dummy
  78d76f9ed4082cc04f88c2bd0a730b22  libgo/go/go/build/testdata/multi/file.go
  8ebac376c5cf2e57f01584c8cfd31d65  libgo/go/go/build/testdata/multi/file_appengine.go
  de6991b3771170d6d3ce31fe2c89b5f1  libgo/go/go/build/testdata/other/file/file.go
  0f6926e3a63df39bdeb382e093950776  libgo/go/go/build/testdata/other/main.go
! fb47d5ba17c3565551651db3885b677b  libgo/go/go/constant/value.go
! c6c87a61cd2d09355ea99626851f4d6d  libgo/go/go/constant/value_test.go
! 73f1969ee4d39df497e9080de5735307  libgo/go/go/doc/comment.go
! 530caa1fdd1c78bbb348995d81515be5  libgo/go/go/doc/comment_test.go
  f17e3339531d895d832368e0256b269f  libgo/go/go/doc/doc.go
! 9c1d79b223a2aa33d5a461bb4505f58a  libgo/go/go/doc/doc_test.go
! ac47945ea81982d7e988e39041bdf9d7  libgo/go/go/doc/example.go
  66476020738402e8070c412b0c3ca857  libgo/go/go/doc/example_test.go
! 0e71511fd2fd76cb6c3f56e8509ac53e  libgo/go/go/doc/exports.go
  a8c394bea00b685d8d0c5c3e24018879  libgo/go/go/doc/filter.go
  2c6c236d3cb1dbf706fda3f69426136e  libgo/go/go/doc/headscan.go
! dddb2a0a5c9b407e86754043513327df  libgo/go/go/doc/reader.go
  2d241708e28dbcfe28694db01886e714  libgo/go/go/doc/synopsis.go
  708582e08d18a7e7b64876e9ba4cf69d  libgo/go/go/doc/synopsis_test.go
  9696451e9ed297a37eeb6577a16d9494  libgo/go/go/doc/testdata/a.0.golden
*************** d2e1f55e788d6f5d6a2f81a1ab87be0f  libgo/
*** 61952,61961 ****
  e55a6d247f12d1e0c63ec812281121f8  libgo/go/go/doc/testdata/b.2.golden
  a4f1d2ab2cb8c6c3d04a7cb6cbbc78bd  libgo/go/go/doc/testdata/b.go
  8513108f86dd415519a560f65cd11c16  libgo/go/go/doc/testdata/benchmark.go
! dbcca7ff67d83978082306f22f35bd18  libgo/go/go/doc/testdata/blank.0.golden
! dfa961c02091fbf332653506f5c369aa  libgo/go/go/doc/testdata/blank.1.golden
! dbcca7ff67d83978082306f22f35bd18  libgo/go/go/doc/testdata/blank.2.golden
! 06d7c9e6fdd9ee373463762e4ad0921f  libgo/go/go/doc/testdata/blank.go
  7d2de9f48a2e6481fc97e4de36d12977  libgo/go/go/doc/testdata/bugpara.0.golden
  7d2de9f48a2e6481fc97e4de36d12977  libgo/go/go/doc/testdata/bugpara.1.golden
  7d2de9f48a2e6481fc97e4de36d12977  libgo/go/go/doc/testdata/bugpara.2.golden
--- 66191,66200 ----
  e55a6d247f12d1e0c63ec812281121f8  libgo/go/go/doc/testdata/b.2.golden
  a4f1d2ab2cb8c6c3d04a7cb6cbbc78bd  libgo/go/go/doc/testdata/b.go
  8513108f86dd415519a560f65cd11c16  libgo/go/go/doc/testdata/benchmark.go
! 267e85e0a0df6ced68bc86beda2aaadc  libgo/go/go/doc/testdata/blank.0.golden
! 38c3a3bb522e789906140ae1eb4b0721  libgo/go/go/doc/testdata/blank.1.golden
! 267e85e0a0df6ced68bc86beda2aaadc  libgo/go/go/doc/testdata/blank.2.golden
! 429ac19c3d2184c249dbfee15214b66f  libgo/go/go/doc/testdata/blank.go
  7d2de9f48a2e6481fc97e4de36d12977  libgo/go/go/doc/testdata/bugpara.0.golden
  7d2de9f48a2e6481fc97e4de36d12977  libgo/go/go/doc/testdata/bugpara.1.golden
  7d2de9f48a2e6481fc97e4de36d12977  libgo/go/go/doc/testdata/bugpara.2.golden
*************** e592a04afcaed071c4a99ccc07f22ec7  libgo/
*** 61990,61999 ****
--- 66229,66246 ----
  e592a04afcaed071c4a99ccc07f22ec7  libgo/go/go/doc/testdata/issue13742.1.golden
  e592a04afcaed071c4a99ccc07f22ec7  libgo/go/go/doc/testdata/issue13742.2.golden
  6a169a6dd92b4faeacf181aae31d4184  libgo/go/go/doc/testdata/issue13742.go
+ 08f5d571ffa8a83f77877cc52063da43  libgo/go/go/doc/testdata/issue16153.0.golden
+ 682e8887966145fbe4e3249a55ffc657  libgo/go/go/doc/testdata/issue16153.1.golden
+ 08f5d571ffa8a83f77877cc52063da43  libgo/go/go/doc/testdata/issue16153.2.golden
+ 80ac9ff383bd67677ff52b38a17fc777  libgo/go/go/doc/testdata/issue16153.go
  b3971fffc7d79554abec3c662ed0c2e7  libgo/go/go/doc/testdata/issue17788.0.golden
  b3971fffc7d79554abec3c662ed0c2e7  libgo/go/go/doc/testdata/issue17788.1.golden
  b3971fffc7d79554abec3c662ed0c2e7  libgo/go/go/doc/testdata/issue17788.2.golden
  c00c6c7f237b30e2238c4aa0f647c845  libgo/go/go/doc/testdata/issue17788.go
+ 70e085ce1eb66f30d175119b6553edda  libgo/go/go/doc/testdata/issue18063.0.golden
+ 70e085ce1eb66f30d175119b6553edda  libgo/go/go/doc/testdata/issue18063.1.golden
+ 70e085ce1eb66f30d175119b6553edda  libgo/go/go/doc/testdata/issue18063.2.golden
+ d58203f6f6b7efae009e3ba293d8f680  libgo/go/go/doc/testdata/issue18063.go
  3cb6d13949e193b4e7c311db70b58272  libgo/go/go/doc/testdata/predeclared.0.golden
  372da1471b6a2f3378691dd76a4c74d8  libgo/go/go/doc/testdata/predeclared.1.golden
  3cb6d13949e193b4e7c311db70b58272  libgo/go/go/doc/testdata/predeclared.2.golden
*************** f13e35e01236bc501949cc0b287f3bbd  libgo/
*** 62003,62062 ****
  b4aa32ac3afc28901c39479ed56c82cb  libgo/go/go/doc/testdata/testing.1.golden
  f13e35e01236bc501949cc0b287f3bbd  libgo/go/go/doc/testdata/testing.2.golden
  6fe45325395c5d54867b223e79ea5c58  libgo/go/go/doc/testdata/testing.go
! 0aa50e8e2c81b7bcc8b9a3c8df273738  libgo/go/go/format/format.go
  00220d187028d7a6208ee1597d636bd9  libgo/go/go/format/format_test.go
! cb0b34ba5e20100a69398ef49b3210f7  libgo/go/go/format/internal.go
! e55f161d92e3f740cc58c64c83039f8e  libgo/go/go/importer/importer.go
  f6dc38a7432526f560954efa9552534a  libgo/go/go/internal/gccgoimporter/gccgoinstallation.go
! c923bce5d81a2edc3bbe4156b89c1e34  libgo/go/go/internal/gccgoimporter/gccgoinstallation_test.go
! 8704268d2302e95c3134df8f68234376  libgo/go/go/internal/gccgoimporter/importer.go
! 04e9f8da79824b742a48883104f25f75  libgo/go/go/internal/gccgoimporter/importer_test.go
! 028e43bb967d9949dc4baeeb00fe0bdb  libgo/go/go/internal/gccgoimporter/parser.go
! eba85e7cb45c9140f69412eb9d9e0a7f  libgo/go/go/internal/gccgoimporter/parser_test.go
  12f75fc2f2ac764589ecd9d7718af226  libgo/go/go/internal/gccgoimporter/testdata/complexnums.go
  0e18e6acdf161ba0f2693311b7bfd227  libgo/go/go/internal/gccgoimporter/testdata/complexnums.gox
  f2aad2f9c531bec2bade4dc207de7e45  libgo/go/go/internal/gccgoimporter/testdata/conversions.go
  8c9de978716d5ab49005c2a95eb30802  libgo/go/go/internal/gccgoimporter/testdata/conversions.gox
  46fe645e3151a082174da2dcff88e52b  libgo/go/go/internal/gccgoimporter/testdata/imports.go
  37034e36b1e8e0942b2d842a0f6062de  libgo/go/go/internal/gccgoimporter/testdata/imports.gox
  d252c7977d4e0ba245d64fe2a5d30b26  libgo/go/go/internal/gccgoimporter/testdata/pointer.go
  7ba18b627fc4f0e18686f8ac6ab94ff1  libgo/go/go/internal/gccgoimporter/testdata/pointer.gox
  25905b474f8daf5c748fd1601d07ec2f  libgo/go/go/internal/gccgoimporter/testdata/time.gox
  6b7776e67ae5d53ca59f5656077e9ce9  libgo/go/go/internal/gccgoimporter/testdata/unicode.gox
! d3db66df4f3c46056585156ececd41b8  libgo/go/go/internal/gcimporter/bimport.go
  eb3940abadb512293f35d5547d38941c  libgo/go/go/internal/gcimporter/exportdata.go
! 30221762aa3b96d67e34c8d5e22b46fa  libgo/go/go/internal/gcimporter/gcimporter.go
! f788cbb686a68fc91838c293497938c3  libgo/go/go/internal/gcimporter/gcimporter_test.go
  fa2d73794ce8800e4017f58c09681818  libgo/go/go/internal/gcimporter/testdata/a.go
  d78cd93092154dfb7842feab562a6248  libgo/go/go/internal/gcimporter/testdata/b.go
  9e8ed7c39f3c1a3144c864751e2b78f9  libgo/go/go/internal/gcimporter/testdata/exports.go
  7a1634bb7320b0ea5c96273748430166  libgo/go/go/internal/gcimporter/testdata/issue15920.go
  99eeb77d4067ed91f9b9fd9ddaa8992e  libgo/go/go/internal/gcimporter/testdata/p.go
  b9e4efb9bb8109f6f287749c8972ae83  libgo/go/go/internal/gcimporter/testdata/versions/test.go
! 31261190cd38b2ed099022e97417e5fc  libgo/go/go/parser/error_test.go
  7f4cd77a6cf74567f27495ab62d74826  libgo/go/go/parser/interface.go
! 3d29bd0e63303ae209784d1b071ed0e0  libgo/go/go/parser/parser.go
! c15cca8b63d96d3e55f2e12955f39a14  libgo/go/go/parser/parser_test.go
! 8cbe1ae14e015bd3e14d48cc8c020b07  libgo/go/go/parser/performance_test.go
! 26569ef9f54a3b5503806e68ab767d0f  libgo/go/go/parser/short_test.go
  b72b1f0432aed37d275e66b0169f39fb  libgo/go/go/parser/testdata/commas.src
  1a130846a9251f6d348aca13acd2e01a  libgo/go/go/parser/testdata/issue3106.src
! 08cde9fa25faf77b949cb7ff9715b82c  libgo/go/go/printer/nodes.go
  a3b1bc0d9114a1883a56f0adbb5d8d96  libgo/go/go/printer/performance_test.go
! 4b18a3634b03474a91457d2a51e14034  libgo/go/go/printer/printer.go
! dc54886b22f626a017608cb133306867  libgo/go/go/printer/printer_test.go
! f9c27856563a012c5140c4e7be9713d4  libgo/go/go/printer/testdata/comments.golden
! bb198274be1ef5ad688cefbdcbd5bd6d  libgo/go/go/printer/testdata/comments.input
  e6e08677739f80de2dfe4d48b9d3bb45  libgo/go/go/printer/testdata/comments.x
  0d35a4a78bdb64311aca4ab86d9acc1a  libgo/go/go/printer/testdata/comments2.golden
  a52c8b3df904d8ce2206f860529ec368  libgo/go/go/printer/testdata/comments2.input
! f32941180032f40e8ae947ea68264909  libgo/go/go/printer/testdata/declarations.golden
! 00d945f9498840e355ce87114d1871c4  libgo/go/go/printer/testdata/declarations.input
  844f4638b6f2ac8ff51fb9b08ba912e2  libgo/go/go/printer/testdata/empty.golden
  844f4638b6f2ac8ff51fb9b08ba912e2  libgo/go/go/printer/testdata/empty.input
! bebc141691f5a54f4851c0a34077e8bf  libgo/go/go/printer/testdata/expressions.golden
! 1f4f63dda74083b2214d17f352f86672  libgo/go/go/printer/testdata/expressions.input
! 5188ab34dcb3d5e09cfd1492bba99984  libgo/go/go/printer/testdata/expressions.raw
  04935c79aa6c29d925b5b1fcb12cfc7c  libgo/go/go/printer/testdata/linebreaks.golden
  7704931177465e3ad10f0aad95b75c26  libgo/go/go/printer/testdata/linebreaks.input
  3c57a778e0dfa131e8721687c19b56b5  libgo/go/go/printer/testdata/parser.go
--- 66250,66321 ----
  b4aa32ac3afc28901c39479ed56c82cb  libgo/go/go/doc/testdata/testing.1.golden
  f13e35e01236bc501949cc0b287f3bbd  libgo/go/go/doc/testdata/testing.2.golden
  6fe45325395c5d54867b223e79ea5c58  libgo/go/go/doc/testdata/testing.go
! f22f7761e612fdfb660e95ee48d8561a  libgo/go/go/format/format.go
  00220d187028d7a6208ee1597d636bd9  libgo/go/go/format/format_test.go
! ba468fbb0494fe4b9e7bc2b2d14d47d3  libgo/go/go/format/internal.go
! 17e6bb9c47b14278810a68b6d677940f  libgo/go/go/importer/importer.go
! 7419ecea379a16cebc226dc8f17c4732  libgo/go/go/importer/importer_test.go
  f6dc38a7432526f560954efa9552534a  libgo/go/go/internal/gccgoimporter/gccgoinstallation.go
! 18a3b19b9cbc4c15ce8bd94ec8e580d7  libgo/go/go/internal/gccgoimporter/gccgoinstallation_test.go
! 4f270df1fc184e7ebb1709d74fd6d2f7  libgo/go/go/internal/gccgoimporter/importer.go
! 9fd4b2192627bd7b4f8a1d6b0b51da9d  libgo/go/go/internal/gccgoimporter/importer_test.go
! 3d7b6b8582bfddcbd16d87407cd30c1d  libgo/go/go/internal/gccgoimporter/parser.go
! 31d90cbc92ac4bc9f694c84c1b91270c  libgo/go/go/internal/gccgoimporter/parser_test.go
! b339b5d2b899d384333e8a299de34fb3  libgo/go/go/internal/gccgoimporter/testdata/alias.gox
  12f75fc2f2ac764589ecd9d7718af226  libgo/go/go/internal/gccgoimporter/testdata/complexnums.go
  0e18e6acdf161ba0f2693311b7bfd227  libgo/go/go/internal/gccgoimporter/testdata/complexnums.gox
  f2aad2f9c531bec2bade4dc207de7e45  libgo/go/go/internal/gccgoimporter/testdata/conversions.go
  8c9de978716d5ab49005c2a95eb30802  libgo/go/go/internal/gccgoimporter/testdata/conversions.gox
+ 8cc988510c2a6f4963b998f6d8448edf  libgo/go/go/internal/gccgoimporter/testdata/escapeinfo.go
+ a196d533e13f76c7e37376c5d9525508  libgo/go/go/internal/gccgoimporter/testdata/escapeinfo.gox
  46fe645e3151a082174da2dcff88e52b  libgo/go/go/internal/gccgoimporter/testdata/imports.go
  37034e36b1e8e0942b2d842a0f6062de  libgo/go/go/internal/gccgoimporter/testdata/imports.gox
  d252c7977d4e0ba245d64fe2a5d30b26  libgo/go/go/internal/gccgoimporter/testdata/pointer.go
  7ba18b627fc4f0e18686f8ac6ab94ff1  libgo/go/go/internal/gccgoimporter/testdata/pointer.gox
  25905b474f8daf5c748fd1601d07ec2f  libgo/go/go/internal/gccgoimporter/testdata/time.gox
  6b7776e67ae5d53ca59f5656077e9ce9  libgo/go/go/internal/gccgoimporter/testdata/unicode.gox
! 5d2e95e6fece808ece2701b0f9ee5c72  libgo/go/go/internal/gcimporter/bimport.go
  eb3940abadb512293f35d5547d38941c  libgo/go/go/internal/gcimporter/exportdata.go
! 37538818c117d24eeaa0f7d76d2bce5d  libgo/go/go/internal/gcimporter/gcimporter.go
! 407ee744046dd08a76df378b0a66ef93  libgo/go/go/internal/gcimporter/gcimporter_test.go
  fa2d73794ce8800e4017f58c09681818  libgo/go/go/internal/gcimporter/testdata/a.go
  d78cd93092154dfb7842feab562a6248  libgo/go/go/internal/gcimporter/testdata/b.go
  9e8ed7c39f3c1a3144c864751e2b78f9  libgo/go/go/internal/gcimporter/testdata/exports.go
  7a1634bb7320b0ea5c96273748430166  libgo/go/go/internal/gcimporter/testdata/issue15920.go
+ 91dabf42cdc4894d08abe3aff19cd9e0  libgo/go/go/internal/gcimporter/testdata/issue20046.go
  99eeb77d4067ed91f9b9fd9ddaa8992e  libgo/go/go/internal/gcimporter/testdata/p.go
  b9e4efb9bb8109f6f287749c8972ae83  libgo/go/go/internal/gcimporter/testdata/versions/test.go
! 0171cca53011fd5823fd0f3f3b09a3a4  libgo/go/go/internal/gcimporter/testdata/versions/test_go1.7_0.a
! bf14de558b361637cf2ad47ad9aba0c5  libgo/go/go/internal/gcimporter/testdata/versions/test_go1.7_1.a
! 5a0034304205c4a2c415093ecc5c04c8  libgo/go/go/internal/gcimporter/testdata/versions/test_go1.8_4.a
! 77e3c54dd4f4906536e53da7838b5be9  libgo/go/go/internal/gcimporter/testdata/versions/test_go1.8_5.a
! 8d887b8ac996681468ef2e0c5d0e6890  libgo/go/go/internal/srcimporter/srcimporter.go
! aad6303bba6b6a98f32f0e17f5b2807c  libgo/go/go/internal/srcimporter/srcimporter_test.go
! 5c5d6ebb692d11662cba1e0976c899cc  libgo/go/go/internal/srcimporter/testdata/issue20855/issue20855.go
! 6d29e2611cb06282812d300a6a3b3cd3  libgo/go/go/parser/error_test.go
  7f4cd77a6cf74567f27495ab62d74826  libgo/go/go/parser/interface.go
! 643993ff0ad1b8bef18fb1cf4298af62  libgo/go/go/parser/parser.go
! 34256ce1b152878c24028e9731e0d00e  libgo/go/go/parser/parser_test.go
! 785eea855ded220460b8f6bbc78a392a  libgo/go/go/parser/performance_test.go
! f2e4128a9fd6e21e1f4a3972e9c9b748  libgo/go/go/parser/short_test.go
  b72b1f0432aed37d275e66b0169f39fb  libgo/go/go/parser/testdata/commas.src
  1a130846a9251f6d348aca13acd2e01a  libgo/go/go/parser/testdata/issue3106.src
! eb391ac4c81667b7baf93b368e87e369  libgo/go/go/printer/nodes.go
  a3b1bc0d9114a1883a56f0adbb5d8d96  libgo/go/go/printer/performance_test.go
! 81e84332cc0678453cfd8bc985d0e90f  libgo/go/go/printer/printer.go
! 7253e7a6e26f06e6c6deffa9ffbe4d06  libgo/go/go/printer/printer_test.go
! 64a7b90c89beb990fb9c1ef7785a2b6d  libgo/go/go/printer/testdata/comments.golden
! 25b6fe181442cd5d604db99537dc42fe  libgo/go/go/printer/testdata/comments.input
  e6e08677739f80de2dfe4d48b9d3bb45  libgo/go/go/printer/testdata/comments.x
  0d35a4a78bdb64311aca4ab86d9acc1a  libgo/go/go/printer/testdata/comments2.golden
  a52c8b3df904d8ce2206f860529ec368  libgo/go/go/printer/testdata/comments2.input
! 64e0ca3705abdf1b40a3abb467d2cfee  libgo/go/go/printer/testdata/declarations.golden
! b9fd25f9636658afa591244caa09d205  libgo/go/go/printer/testdata/declarations.input
  844f4638b6f2ac8ff51fb9b08ba912e2  libgo/go/go/printer/testdata/empty.golden
  844f4638b6f2ac8ff51fb9b08ba912e2  libgo/go/go/printer/testdata/empty.input
! 0475f52459bd9ca1c93bb1f7338bbfa4  libgo/go/go/printer/testdata/expressions.golden
! f464c3f5e94d978350ffc105a3e672cf  libgo/go/go/printer/testdata/expressions.input
! 7eb7d2808ef1f4646bae851b2d047ac9  libgo/go/go/printer/testdata/expressions.raw
  04935c79aa6c29d925b5b1fcb12cfc7c  libgo/go/go/printer/testdata/linebreaks.golden
  7704931177465e3ad10f0aad95b75c26  libgo/go/go/printer/testdata/linebreaks.input
  3c57a778e0dfa131e8721687c19b56b5  libgo/go/go/printer/testdata/parser.go
*************** c32070e550551ee1057b8c015483f42d  libgo/
*** 62067,62141 ****
  edf121a0d1c71749f3ece109a73694d0  libgo/go/go/scanner/errors.go
  4798f9a7ef0432d990f397167e5d1dd0  libgo/go/go/scanner/scanner.go
  26b51a5fdb9cbf056357e82845044cd9  libgo/go/go/scanner/scanner_test.go
! 28233674f7bcc993d105251e87dc29e4  libgo/go/go/token/position.go
  c6c465a6f390e398925daf8a01b2c4e6  libgo/go/go/token/position_test.go
! 1d64ffbe92654fda0192d364e0598dfb  libgo/go/go/token/serialize.go
  7f96cc16b25fcc0687a856f1bd33e74f  libgo/go/go/token/serialize_test.go
  3db18ed197c48a309cfd489e718e0a69  libgo/go/go/token/token.go
! 1cb1bcd528675a6cef8fd5fdb0752854  libgo/go/go/types/api.go
! af174280afbd3fcbe42e0bab4910e629  libgo/go/go/types/api_test.go
! d9153186cbc1862ff9486fe4bf891a93  libgo/go/go/types/assignments.go
! da70bcef18a4837e09bd5c72670cf4c8  libgo/go/go/types/builtins.go
  cde321641c5ea1443b5ed29fd32d85d3  libgo/go/go/types/builtins_test.go
! c457f25d3a248950d713b95b54e7975d  libgo/go/go/types/call.go
! bff836d89eb54bacbfd38de201e803f8  libgo/go/go/types/check.go
! 1f77c6a1f230d03f72af47c872bdfe76  libgo/go/go/types/check_test.go
! c7f52e5d0e5289bde2b8a42f6b7b3675  libgo/go/go/types/conversions.go
! 2fe0434740258f540dc45b9b97c9c41f  libgo/go/go/types/decl.go
  59e5facdcd270eb045a7e0be41149d69  libgo/go/go/types/errors.go
  7daf45a3c7386786ddc9ce83fa3d4492  libgo/go/go/types/eval.go
  daeaf6eaa4ee1d04d7c827080535e4d9  libgo/go/go/types/eval_test.go
! eb5686bfa352d99179efd5cae1ad51e3  libgo/go/go/types/example_test.go
! 250a7ca28f8ce5dfaf6fc9c557ec064e  libgo/go/go/types/expr.go
! 97d90cd0c0b4b2ef31c2253879f9d79c  libgo/go/go/types/exprstring.go
  8ed6d8b0fb472274826f384ff6d90799  libgo/go/go/types/exprstring_test.go
! 5f0ba645d4d9cf36631d88164d15cbc1  libgo/go/go/types/gotype.go
! 803a8d1e6800d158a3e427f711459925  libgo/go/go/types/hilbert_test.go
  2408fbdab9b74b4a9e1df0d9f1518953  libgo/go/go/types/initorder.go
! 666bbf1175be6ed938d84b972390ffd7  libgo/go/go/types/issues_test.go
  658b32da38ee52a9d5f59102935d0d8c  libgo/go/go/types/labels.go
! a0b23022da1f707d72001c525fef0858  libgo/go/go/types/lookup.go
! f3c8728b5ef4281b201885bf4f8e8da7  libgo/go/go/types/methodset.go
! 38c50c10039654179dfc8bb25c4f75f2  libgo/go/go/types/object.go
  f2ff0868ba0ab2672cc4e85528cc2f7c  libgo/go/go/types/objset.go
! 817c11020ff9da47d1666022bbe26c74  libgo/go/go/types/operand.go
  9cb7e007b665cef38305627499340909  libgo/go/go/types/ordering.go
! 05b90809f0bd6bf75e13966e7be9faaf  libgo/go/go/types/package.go
! dfbe0aa508562e94572267686ee19072  libgo/go/go/types/predicates.go
! 444a7f86c90a96831b74e9deff250dde  libgo/go/go/types/resolver.go
  25fe964a60967efdafd8cbb1ba593ca0  libgo/go/go/types/resolver_test.go
  b703c025fd37992f7c3a38262d24ce12  libgo/go/go/types/return.go
! 38fac5e7d31386abd9e906b093ea8361  libgo/go/go/types/scope.go
  c74d7a869d33ead21e89db660e68ea6e  libgo/go/go/types/selection.go
  5227915f74fe2314c2146484dc903ce1  libgo/go/go/types/self_test.go
! 5e3e876240c6f7c90a599e63166ae504  libgo/go/go/types/sizes.go
  4e1e2589621b76695b808b6b677f39e6  libgo/go/go/types/sizes_test.go
! 7dbadcbd2001a0f0d6aa52169283507b  libgo/go/go/types/stdlib_test.go
! b7e7db310fffea4d33c1b97e9b749594  libgo/go/go/types/stmt.go
  008462149fe95dcefb74d6f667b079af  libgo/go/go/types/testdata/blank.src
! b526c992b13ca48a1785fa950966e7a2  libgo/go/go/types/testdata/builtins.src
  b1e3b72700c927de3560763b863cf388  libgo/go/go/types/testdata/const0.src
  8c449f1a8fb86e1997b04091718c3fe7  libgo/go/go/types/testdata/const1.src
  88227357c25d6f0a50f34f8beee8aa8d  libgo/go/go/types/testdata/constdecl.src
  1fe35ddc4ddb5b91c5bfe6afc171ab86  libgo/go/go/types/testdata/conversions.src
  94ced19e10ffde3473340cc1d79339e7  libgo/go/go/types/testdata/conversions2.src
! e6b295c162520fc1a69964c94af863c7  libgo/go/go/types/testdata/cycles.src
  e422e493f2eb6cf61258dd94b1abcfca  libgo/go/go/types/testdata/cycles1.src
  0803087027e8c8a8eeb045e2e3cad49b  libgo/go/go/types/testdata/cycles2.src
  ab169b1f25c1718df7a4ed16de5c7527  libgo/go/go/types/testdata/cycles3.src
! 504c4a77c5f0451810add2ad1422146a  libgo/go/go/types/testdata/cycles4.src
  df1e8a1c680077b134d24ffb7dea058d  libgo/go/go/types/testdata/decls0.src
! a0a49f96fc62a921062be612638a7da1  libgo/go/go/types/testdata/decls1.src
  12a09f4291016af1c6dadd60ba5fd9e4  libgo/go/go/types/testdata/decls2a.src
! da326ef9b539506b96f47ecdca5f514d  libgo/go/go/types/testdata/decls2b.src
  9291d7c0876ca13af5c0511d52488e7d  libgo/go/go/types/testdata/decls3.src
  6b681b4b91284a6d1042c639fc10c380  libgo/go/go/types/testdata/errors.src
  2031bfb47acd5d5bf3f870f3d420f66f  libgo/go/go/types/testdata/expr0.src
  57e7a7fbfbeed369224751e3e9b100f6  libgo/go/go/types/testdata/expr1.src
  858ddae1337f00a9e5fce6bb86698290  libgo/go/go/types/testdata/expr2.src
! bf6d917b125dceac4ab7ea229ee1fb37  libgo/go/go/types/testdata/expr3.src
  5c94eeb6b55885675d4f84c0e6b20ca8  libgo/go/go/types/testdata/gotos.src
! 32be412594ca596b99a23ba137fd18e2  libgo/go/go/types/testdata/importC.src
  3cf43e346a365e3e4238637fa15fc582  libgo/go/go/types/testdata/importdecl0a.src
  5b0d5208394b405398b8128a0f6aa4c3  libgo/go/go/types/testdata/importdecl0b.src
  32d124a7979f6e10d0326a3320acc2a8  libgo/go/go/types/testdata/importdecl1a.src
--- 66326,66401 ----
  edf121a0d1c71749f3ece109a73694d0  libgo/go/go/scanner/errors.go
  4798f9a7ef0432d990f397167e5d1dd0  libgo/go/go/scanner/scanner.go
  26b51a5fdb9cbf056357e82845044cd9  libgo/go/go/scanner/scanner_test.go
! 49977c58ec3a16b10f48bde10638813f  libgo/go/go/token/position.go
  c6c465a6f390e398925daf8a01b2c4e6  libgo/go/go/token/position_test.go
! 814b43a3b82369e7deed2ff7e7c6d079  libgo/go/go/token/serialize.go
  7f96cc16b25fcc0687a856f1bd33e74f  libgo/go/go/token/serialize_test.go
  3db18ed197c48a309cfd489e718e0a69  libgo/go/go/token/token.go
! 53c33c54989a1617c735709404fdecb2  libgo/go/go/types/api.go
! 1683a1eabdc5a5c1c4fc468a917a92fa  libgo/go/go/types/api_test.go
! 9864e14a4ce259725e4b325baccf277c  libgo/go/go/types/assignments.go
! 0ef65c6abdab026f4352a1eac84b6703  libgo/go/go/types/builtins.go
  cde321641c5ea1443b5ed29fd32d85d3  libgo/go/go/types/builtins_test.go
! f3f23911668821b7ecc5757cc1d82233  libgo/go/go/types/call.go
! 66b37ae2b10a329c3de678b94c1c7fc8  libgo/go/go/types/check.go
! 9a37ed458dc697b25acc5ed4714b7b91  libgo/go/go/types/check_test.go
! f08f6aaf60a02919e54991d9fcc729f2  libgo/go/go/types/conversions.go
! bcf6c428aaa9876cdfe8a52eb818e5e8  libgo/go/go/types/decl.go
  59e5facdcd270eb045a7e0be41149d69  libgo/go/go/types/errors.go
  7daf45a3c7386786ddc9ce83fa3d4492  libgo/go/go/types/eval.go
  daeaf6eaa4ee1d04d7c827080535e4d9  libgo/go/go/types/eval_test.go
! b9d6b1b10ab4b00ea1cabd4c4347b50b  libgo/go/go/types/example_test.go
! b57d23d39a458bec43f14deb5d03e377  libgo/go/go/types/expr.go
! 9bed1f6e6ef958381f2b6527b48b2847  libgo/go/go/types/exprstring.go
  8ed6d8b0fb472274826f384ff6d90799  libgo/go/go/types/exprstring_test.go
! ed78e5017d7d874f5f70c7ab3e276c67  libgo/go/go/types/gotype.go
! d0ec3e67e6111c59d9c4a0984fea3b63  libgo/go/go/types/hilbert_test.go
  2408fbdab9b74b4a9e1df0d9f1518953  libgo/go/go/types/initorder.go
! c244c249a021cc449f08b0c12a45e5ea  libgo/go/go/types/issues_test.go
  658b32da38ee52a9d5f59102935d0d8c  libgo/go/go/types/labels.go
! 93f6678f2c5859c8634f03332236928e  libgo/go/go/types/lookup.go
! 76681824cb713447a1b585279ca4bf1e  libgo/go/go/types/methodset.go
! fa688f1c9a925e1a4d3332f76f9c44ed  libgo/go/go/types/object.go
! a306d2571a3f803db0e3bc8424262a3e  libgo/go/go/types/object_test.go
  f2ff0868ba0ab2672cc4e85528cc2f7c  libgo/go/go/types/objset.go
! 9eca952218f6c5cf2e9535b540d3f430  libgo/go/go/types/operand.go
  9cb7e007b665cef38305627499340909  libgo/go/go/types/ordering.go
! f75410532ce21c9d655754c87f488235  libgo/go/go/types/package.go
! db5d4eebfa57cf3613df2560b1fdf126  libgo/go/go/types/predicates.go
! 0c41130915e6c71d54a54f9a1438ca51  libgo/go/go/types/resolver.go
  25fe964a60967efdafd8cbb1ba593ca0  libgo/go/go/types/resolver_test.go
  b703c025fd37992f7c3a38262d24ce12  libgo/go/go/types/return.go
! 5629cc2282064599532bd97347b65d72  libgo/go/go/types/scope.go
  c74d7a869d33ead21e89db660e68ea6e  libgo/go/go/types/selection.go
  5227915f74fe2314c2146484dc903ce1  libgo/go/go/types/self_test.go
! 45bdef971b0cb22d5a3134e6c9201680  libgo/go/go/types/sizes.go
  4e1e2589621b76695b808b6b677f39e6  libgo/go/go/types/sizes_test.go
! e0ec5041cb16f91e4419a0885914b520  libgo/go/go/types/stdlib_test.go
! c29e921968e5c1cb73d77a16dd40af8b  libgo/go/go/types/stmt.go
  008462149fe95dcefb74d6f667b079af  libgo/go/go/types/testdata/blank.src
! 632934bc5bbbd659c8c3a07796881d26  libgo/go/go/types/testdata/builtins.src
  b1e3b72700c927de3560763b863cf388  libgo/go/go/types/testdata/const0.src
  8c449f1a8fb86e1997b04091718c3fe7  libgo/go/go/types/testdata/const1.src
  88227357c25d6f0a50f34f8beee8aa8d  libgo/go/go/types/testdata/constdecl.src
  1fe35ddc4ddb5b91c5bfe6afc171ab86  libgo/go/go/types/testdata/conversions.src
  94ced19e10ffde3473340cc1d79339e7  libgo/go/go/types/testdata/conversions2.src
! 772e8f8bdfc452c2cae8260cc36958bf  libgo/go/go/types/testdata/cycles.src
  e422e493f2eb6cf61258dd94b1abcfca  libgo/go/go/types/testdata/cycles1.src
  0803087027e8c8a8eeb045e2e3cad49b  libgo/go/go/types/testdata/cycles2.src
  ab169b1f25c1718df7a4ed16de5c7527  libgo/go/go/types/testdata/cycles3.src
! 688634a94c7eae81a2d288ccf79b6e97  libgo/go/go/types/testdata/cycles4.src
  df1e8a1c680077b134d24ffb7dea058d  libgo/go/go/types/testdata/decls0.src
! 34b288781f9d8eebe0a2a9d38d5dc5cd  libgo/go/go/types/testdata/decls1.src
  12a09f4291016af1c6dadd60ba5fd9e4  libgo/go/go/types/testdata/decls2a.src
! 4c1381528b8b36bc96723dd601311fdf  libgo/go/go/types/testdata/decls2b.src
  9291d7c0876ca13af5c0511d52488e7d  libgo/go/go/types/testdata/decls3.src
  6b681b4b91284a6d1042c639fc10c380  libgo/go/go/types/testdata/errors.src
  2031bfb47acd5d5bf3f870f3d420f66f  libgo/go/go/types/testdata/expr0.src
  57e7a7fbfbeed369224751e3e9b100f6  libgo/go/go/types/testdata/expr1.src
  858ddae1337f00a9e5fce6bb86698290  libgo/go/go/types/testdata/expr2.src
! cb2030b98ea4a72c11111efe61fd64fb  libgo/go/go/types/testdata/expr3.src
  5c94eeb6b55885675d4f84c0e6b20ca8  libgo/go/go/types/testdata/gotos.src
! 537775d0137d8bfb6444ac4c7d586e5a  libgo/go/go/types/testdata/importC.src
  3cf43e346a365e3e4238637fa15fc582  libgo/go/go/types/testdata/importdecl0a.src
  5b0d5208394b405398b8128a0f6aa4c3  libgo/go/go/types/testdata/importdecl0b.src
  32d124a7979f6e10d0326a3320acc2a8  libgo/go/go/types/testdata/importdecl1a.src
*************** bf6d917b125dceac4ab7ea229ee1fb37  libgo/
*** 62143,62335 ****
  d4b71f671c77009b454dd13c4589969b  libgo/go/go/types/testdata/init0.src
  65d334e9813ba6e1367f9920ffede43b  libgo/go/go/types/testdata/init1.src
  82306de0bef1e661c90f9f77801cf752  libgo/go/go/types/testdata/init2.src
! 5ec75760bb86ed2b46c028c9504e8872  libgo/go/go/types/testdata/issues.src
  6970d9e692e79c1b9d7e65fe0567d01e  libgo/go/go/types/testdata/labels.src
  856a6274f3600a0ed09f5abde7cdad12  libgo/go/go/types/testdata/methodsets.src
! 305c8f021e6d0ef00fe59fdaab2265d1  libgo/go/go/types/testdata/shifts.src
! 8f0cf6f29e32915bdc27d6b20c805a68  libgo/go/go/types/testdata/stmt0.src
  aa1aff497b3d5bbd54f2f9be95d39df4  libgo/go/go/types/testdata/stmt1.src
! 54ec781d42b2eab354b95ad88146c825  libgo/go/go/types/testdata/vardecl.src
  4abe25acbffdb7feb1ba047129054611  libgo/go/go/types/token_test.go
! 6789f28288626f122bcba6d7c0faef44  libgo/go/go/types/type.go
! e584a9856d7c26049208aa6fdbcea524  libgo/go/go/types/typestring.go
! 423aff56d9d2c4a19d6162cb34dc2fa5  libgo/go/go/types/typestring_test.go
! 01510024eb2999ccf6978d3cc14736db  libgo/go/go/types/typexpr.go
! 246c7a9b3e5c032384098c5a44884c82  libgo/go/go/types/universe.go
! 5763c25e7d68702da3f6a427c4242493  libgo/go/golang_org/x/crypto/chacha20poly1305/chacha20poly1305.go
! 060a9a831080329a08c4327dff6396c6  libgo/go/golang_org/x/crypto/chacha20poly1305/chacha20poly1305_amd64.go
  bba5555d73d61641e0f1446d8212f0f3  libgo/go/golang_org/x/crypto/chacha20poly1305/chacha20poly1305_generic.go
  d1c02dce9e9c622684d992064f6d688c  libgo/go/golang_org/x/crypto/chacha20poly1305/chacha20poly1305_noasm.go
  b149a08e2b77bf9f10de748a8676f03d  libgo/go/golang_org/x/crypto/chacha20poly1305/chacha20poly1305_test.go
! 60b3f535de1f6acdfcd85d2c681af41a  libgo/go/golang_org/x/crypto/chacha20poly1305/chacha20poly1305_test_vectors.go
  268d4ca3077780c708768a06024f2354  libgo/go/golang_org/x/crypto/chacha20poly1305/internal/chacha20/chacha_generic.go
! 8afa1efe4eae3101d166b8d3d050ae5a  libgo/go/golang_org/x/crypto/chacha20poly1305/internal/chacha20/chacha_test.go
! a81e6b2577ca10617e385fe3cfe48930  libgo/go/golang_org/x/crypto/curve25519/curve25519.go
! 9178ab68add347cb3daac42e706deba8  libgo/go/golang_org/x/crypto/curve25519/curve25519_test.go
  62cbf7d76d06bf1c5c7bd193100249f2  libgo/go/golang_org/x/crypto/curve25519/doc.go
  d8d44b8acecfe0e12fd1376be8e3a5b2  libgo/go/golang_org/x/crypto/curve25519/mont25519_amd64.go
  321c7e84a7af8b81e73289d66e499b3c  libgo/go/golang_org/x/crypto/poly1305/poly1305.go
! 905810bb1d229df1c0c839ce26cdba5f  libgo/go/golang_org/x/crypto/poly1305/poly1305_test.go
  e1575b8b9a62d2226b18b8caa7231292  libgo/go/golang_org/x/crypto/poly1305/sum_amd64.go
  9d58682645799b12b66bac7a6d9c0c51  libgo/go/golang_org/x/crypto/poly1305/sum_arm.go
! 5f6b26a27d8b50bbc40bde02074b6c2a  libgo/go/golang_org/x/crypto/poly1305/sum_ref.go
! fda8e0c7d07e4bc05296cef6fc81d626  libgo/go/golang_org/x/net/http2/hpack/encode.go
! e182cd62964fac31e8842cc9b9c606e8  libgo/go/golang_org/x/net/http2/hpack/encode_test.go
! 08bff410f057255052ffff927549d062  libgo/go/golang_org/x/net/http2/hpack/hpack.go
! 8a55fc26fd865f6d71394d055e295f2d  libgo/go/golang_org/x/net/http2/hpack/hpack_test.go
  db09940680cd2c2b004f41e72f67d3e7  libgo/go/golang_org/x/net/http2/hpack/huffman.go
! f87a5199c5c7922c491d42539a5a90cf  libgo/go/golang_org/x/net/http2/hpack/tables.go
! 41fafe490ce362367ae4e12766abecf9  libgo/go/golang_org/x/net/idna/idna.go
  ea01cb52d37bf10e9a5e3e2e417de500  libgo/go/golang_org/x/net/idna/idna_test.go
! 20cd1e21c54f736dc3631d4349e316a7  libgo/go/golang_org/x/net/idna/punycode.go
  c1a582c087245490430a0d333c503411  libgo/go/golang_org/x/net/idna/punycode_test.go
  28352952be80e294a6f8b30e7bb9dfd3  libgo/go/golang_org/x/net/lex/httplex/httplex.go
  a7e183b644b91e366d6bf06d50f50eba  libgo/go/golang_org/x/net/lex/httplex/httplex_test.go
! bfa3c7c78e269b7a5c6a01d6e8cd305e  libgo/go/golang_org/x/net/lif/address.go
! d7a9b60b48ccd4ae7741268617373d42  libgo/go/golang_org/x/net/lif/address_test.go
! 1f06b9d3d7e7eafab882cb9a5913998c  libgo/go/golang_org/x/net/lif/binary.go
! a127e10e90ed837342e1d57417d8d723  libgo/go/golang_org/x/net/lif/defs_solaris.go
  a02121696cf6f775cdd9aae90e231e54  libgo/go/golang_org/x/net/lif/lif.go
! c28b9dc146af55a35aaeed5d4e8d62c4  libgo/go/golang_org/x/net/lif/link.go
! dba73b3a3c9490242d88c7e48fc51a7e  libgo/go/golang_org/x/net/lif/link_test.go
  c43a70009595bdd359eeb92a6f382e5c  libgo/go/golang_org/x/net/lif/syscall.go
  784e02ce997ae99cfa582697e844132c  libgo/go/golang_org/x/net/lif/zsys_solaris.go
! 0ca618d4609580b54ee7a3230f692536  libgo/go/golang_org/x/net/route/address.go
  ee3a3f041a31a00a63c1e1167dbe8650  libgo/go/golang_org/x/net/route/address_darwin_test.go
  44cf8b7424a76d2c1e350a26cc732c3b  libgo/go/golang_org/x/net/route/address_test.go
! 2bbcd334c5239d2dc68bad40af061ba4  libgo/go/golang_org/x/net/route/binary.go
! a1c2c23e3a983260467dd815d33aa5df  libgo/go/golang_org/x/net/route/defs_darwin.go
! 61fe1f460c4c27e7e4bfc694efcca7d3  libgo/go/golang_org/x/net/route/defs_dragonfly.go
! c111f4ad068acf2c4c813631b70bf659  libgo/go/golang_org/x/net/route/defs_freebsd.go
! 1ebcd60c7d3d58352af9f6c6aacb454d  libgo/go/golang_org/x/net/route/defs_netbsd.go
! 98f54381d4dec47cd9a92bd3133e7059  libgo/go/golang_org/x/net/route/defs_openbsd.go
  a84420511d2b0e38b22b1b42a68e9578  libgo/go/golang_org/x/net/route/interface.go
  452f46106eaa7f59893f258d2590a27f  libgo/go/golang_org/x/net/route/interface_announce.go
  ce1d8d9eb8cfcb85e8b82c6d43bcc4ad  libgo/go/golang_org/x/net/route/interface_classic.go
  c710caae4ba863d2129e62234442a0b4  libgo/go/golang_org/x/net/route/interface_freebsd.go
  4d1fcc318ff42997d12d9e1809470dbc  libgo/go/golang_org/x/net/route/interface_multicast.go
  fb888eeead4668205e2aa214dd7a9555  libgo/go/golang_org/x/net/route/interface_openbsd.go
! d81d2168083154237db3c1f7ab5d9c11  libgo/go/golang_org/x/net/route/message.go
! 94d6298d421bf88a24a908174cfca8d4  libgo/go/golang_org/x/net/route/message_darwin_test.go
! eeade95c59079df8b3c01f8e0b8ee1b0  libgo/go/golang_org/x/net/route/message_freebsd_test.go
! e940b95ac4984a0cd17f3ecd25a82462  libgo/go/golang_org/x/net/route/message_test.go
! 43a6f82b837804fd90051db452205cee  libgo/go/golang_org/x/net/route/route.go
! cabd0a219975dfb689b5660fdbf7e3ff  libgo/go/golang_org/x/net/route/route_classic.go
! b8aed6c60ac5fd3eaa23235636dc2a11  libgo/go/golang_org/x/net/route/route_openbsd.go
! ad2127aba417d2cb885db2b44919492b  libgo/go/golang_org/x/net/route/route_test.go
! 829a98832695bc6d84f7804f853cc30e  libgo/go/golang_org/x/net/route/sys.go
! 21a325fa40e91fa582996af5ebc6b900  libgo/go/golang_org/x/net/route/sys_darwin.go
! 0451b0f9cf3649bdbc867af16f6bafe5  libgo/go/golang_org/x/net/route/sys_dragonfly.go
! 4ca9f117962d0127a2a9c4e4104e470c  libgo/go/golang_org/x/net/route/sys_freebsd.go
! 211dd105a28ba130bc657765235008c7  libgo/go/golang_org/x/net/route/sys_netbsd.go
! 82ae34cf1156787c3ebc542778b43bf2  libgo/go/golang_org/x/net/route/sys_openbsd.go
! 938c11aec91b807185816ca8d90775e0  libgo/go/golang_org/x/net/route/syscall.go
! 5560b5da54d49b2769119c16d2a3ab32  libgo/go/golang_org/x/net/route/zsys_darwin.go
! c8769ca31f66c3f56320b676d75555f7  libgo/go/golang_org/x/net/route/zsys_dragonfly.go
! a13ad69c5c2a0e89e93c88dd33f77be2  libgo/go/golang_org/x/net/route/zsys_freebsd_386.go
! 8434d0a96e05f6d4e474a83cc41ad90a  libgo/go/golang_org/x/net/route/zsys_freebsd_amd64.go
! 93bad28c9dd273dcb343a53ef64f44f6  libgo/go/golang_org/x/net/route/zsys_freebsd_arm.go
! beb394b2bb5a00e8ab2c3c4d667b2c8e  libgo/go/golang_org/x/net/route/zsys_netbsd.go
! b9275893300ce81208802803e5e6bce7  libgo/go/golang_org/x/net/route/zsys_openbsd.go
! a0fa3d43e8c3ad83ab8d6473c6b5ccfa  libgo/go/golang_org/x/text/transform/transform.go
! 0e0823521be62cbe7e5c460f57def39c  libgo/go/golang_org/x/text/unicode/norm/composition.go
! 3950dd06512734169f44e9b35d514554  libgo/go/golang_org/x/text/unicode/norm/forminfo.go
! e4efba0f1d66b70c04c6e1caa4ec5abf  libgo/go/golang_org/x/text/unicode/norm/input.go
! 618f22459de5b3c264a5516687b9eb0a  libgo/go/golang_org/x/text/unicode/norm/iter.go
! b25fc396f97214077557549bd5a76153  libgo/go/golang_org/x/text/unicode/norm/normalize.go
! de7d66fb6701cb960be61a19bac71d64  libgo/go/golang_org/x/text/unicode/norm/readwriter.go
! 345d16bba72ceec1155bf71c9eb32a3c  libgo/go/golang_org/x/text/unicode/norm/tables.go
! 1afcd02551544cdac99ea4854aa9bbf2  libgo/go/golang_org/x/text/unicode/norm/transform.go
! 3aae5b2aa8a6489b1c0ae5ab31f1d356  libgo/go/golang_org/x/text/unicode/norm/trie.go
  eb2cd12bb796c90b28361ef22c52f5fc  libgo/go/golang_org/x/text/unicode/norm/triegen.go
  b63f0ac8f7376fb11493836687426bed  libgo/go/golang_org/x/text/width/kind_string.go
  a197da92744722fcc7f483380e35cee2  libgo/go/golang_org/x/text/width/tables.go
  3ba237ab0b122f112530788c7849713e  libgo/go/golang_org/x/text/width/transform.go
  4bbf727b3649c22ba5e96f3f1a2c0deb  libgo/go/golang_org/x/text/width/trieval.go
  a8d108ae3e98e70ff2ef4df4de8e096a  libgo/go/golang_org/x/text/width/width.go
! dcf0f59555d612c4cf027583e2353caa  libgo/go/hash/adler32/adler32.go
! 38a8db647c3cf7d81f4c9356efdd7ba5  libgo/go/hash/adler32/adler32_test.go
! 5e0e34b3099b17d54e3b0979c1ac6f85  libgo/go/hash/crc32/crc32.go
! b38b5d36a752c705c0628fbd7c7185bb  libgo/go/hash/crc32/crc32_amd64.go
! 908b07cb782feb1a3c84e04f8c141b60  libgo/go/hash/crc32/crc32_amd64p32.go
  672e27745433436913cf360b2dece8b5  libgo/go/hash/crc32/crc32_generic.go
! e6cc68523f605672f83eaca3ed7dd2ef  libgo/go/hash/crc32/crc32_otherarch.go
  c2885def28efe65033c7d61e2f112db4  libgo/go/hash/crc32/crc32_s390x.go
! 79a18cd9918b95b40b6a506256ee4713  libgo/go/hash/crc32/crc32_test.go
  12edd3e293a7b8c32e404f5223e5c86c  libgo/go/hash/crc32/example_test.go
! 0c0321dad9f16b117e5a6724d6fc47ef  libgo/go/hash/crc64/crc64.go
! e9602132e6ba22ccd51fc4b1239f42c9  libgo/go/hash/crc64/crc64_test.go
! 45f6de213452d6d6b681b4bbdf0bb355  libgo/go/hash/fnv/fnv.go
! 37e15f4621e5b85aa5819924b202d235  libgo/go/hash/fnv/fnv_test.go
! 79e97b3284596228a65e4d5e80175858  libgo/go/hash/hash.go
! 0a11bd3b506218577aec8e26aa097e0d  libgo/go/html/entity.go
  9499982502f6fab9b4c5d4c8c4814feb  libgo/go/html/entity_test.go
  de8e612d6d6b51a4889bf2e481653acc  libgo/go/html/escape.go
  86037b4a7db52b43eeb44b95a17f835a  libgo/go/html/escape_test.go
  fb5772ff1d769f8bd3e7b857d44352a7  libgo/go/html/example_test.go
! 68b51496e76a8f3243e3aaddac3f2746  libgo/go/html/template/attr.go
  2c510f9d27fce24f57f93f92accaa2f6  libgo/go/html/template/clone_test.go
! d42c609dba3da43168469ac04cbde386  libgo/go/html/template/content.go
! 458f67cfeb244a16ce4849f48a8f5fbd  libgo/go/html/template/content_test.go
! 6ec624bc956963d3ff8d01cb85f50ca5  libgo/go/html/template/context.go
  b5fd6a1abc11b06dd1c7377c750594a1  libgo/go/html/template/css.go
  55e9163874525f8c28e019f575a9ebba  libgo/go/html/template/css_test.go
! 0be7dfc49605b9fbef5f11f5c41ccae5  libgo/go/html/template/doc.go
! dd211c3f83876355676a55dd4f833708  libgo/go/html/template/error.go
! ddb4ef8dd74b634f24f0674d1af5e41e  libgo/go/html/template/escape.go
! 879ef0d8d9c11bbe0f4f474a0f96539c  libgo/go/html/template/escape_test.go
  fd24d85f2b984055b924e49cfc4de77b  libgo/go/html/template/example_test.go
  375f3b86737b26a639af336f545bed83  libgo/go/html/template/examplefiles_test.go
  c3768e208f729bee7abdda1eb80d1992  libgo/go/html/template/html.go
  168fb875c16d9bbe98e9f332d126c055  libgo/go/html/template/html_test.go
! 647ccde6cb1131927aade2a970b8152c  libgo/go/html/template/js.go
  b6c1b1782b145b2f8e7efe0924d66ef0  libgo/go/html/template/js_test.go
! 713b62dba23f6aaf27719dba555e565e  libgo/go/html/template/template.go
  ede4fa3f1203b3c9366a8e3901987d8d  libgo/go/html/template/template_test.go
! 356591b8d139cbfe10260e830e206309  libgo/go/html/template/transition.go
  794c76daefd189e7a55f97b5ce4bd9ed  libgo/go/html/template/transition_test.go
! c3b61ae58d3432c3defdef68c4391657  libgo/go/html/template/url.go
! acc5e4eff8396c29ef5a0b00631ccc85  libgo/go/html/template/url_test.go
! cfc70672f5b6a4e3d7169baae9f5983e  libgo/go/image/color/color.go
  5344162d8758c324a0b46dcc7e7508ec  libgo/go/image/color/palette/gen.go
  9351e4a2e64d6046298e943eb06ecf5c  libgo/go/image/color/palette/generate.go
  c58e0bd36b12eb14ef2ba6af777eec4a  libgo/go/image/color/palette/palette.go
! c087d9535585767b4e5e48f591b1b06f  libgo/go/image/color/ycbcr.go
  eb49954ae9c2cc1153e2b0ac76c25fda  libgo/go/image/color/ycbcr_test.go
  00c0dfbdae9c99ead3bed8bae89b16a4  libgo/go/image/decode_example_test.go
  3db16a455c995763f305fa7129a6a985  libgo/go/image/decode_test.go
  0cfc93a02fc67184d7414d683983b8db  libgo/go/image/draw/bench_test.go
  05b4c6b42b216ef3f39178bdedd124a6  libgo/go/image/draw/clip_test.go
! 4c9b7408306f51e218180652303437ab  libgo/go/image/draw/draw.go
! 22792c134b4ad5ba6ae666c581fdeda6  libgo/go/image/draw/draw_test.go
  d2b69238cdd7eeab708f8367d37c7656  libgo/go/image/draw/example_test.go
  1ed127d415b3c9f3a6f37444e810e93f  libgo/go/image/format.go
! a2e52f93187e2fc82e4451fc645e353f  libgo/go/image/geom.go
! da9b0ed2d832dc629d78f85260909a66  libgo/go/image/geom_test.go
! a80381102f0d37aa851ccb0ac62f61ca  libgo/go/image/gif/reader.go
! 1685c21060860cd45e7512a9b528ef7a  libgo/go/image/gif/reader_test.go
! 04f9ea9ea3beceea05bc5cfcad1258fc  libgo/go/image/gif/writer.go
! ba9debd9b197e64f30ec591e0135583a  libgo/go/image/gif/writer_test.go
  3e1f7e4777ce47370579739c2c8998ef  libgo/go/image/image.go
! 6b2448f0fcaf5e41f57d433a0c5687c3  libgo/go/image/image_test.go
! 31a3c4715b486946631c374e1e11f487  libgo/go/image/internal/imageutil/gen.go
  f17c0b78607a9db21a18e33d106ed160  libgo/go/image/internal/imageutil/imageutil.go
! e2f03be459ed97eda34535f697fa4cd2  libgo/go/image/internal/imageutil/impl.go
  e0649349326bee233728d0badff2e25b  libgo/go/image/jpeg/dct_test.go
  ba14c236db1bc45cc63d90ddf161877e  libgo/go/image/jpeg/fdct.go
! 6012e698243f5ddc6cefeb0b3830ccca  libgo/go/image/jpeg/huffman.go
  2f5a5cac3c1826aa5f4df8b8108ebeb6  libgo/go/image/jpeg/idct.go
! adc58c75f741aa2b2a105afc156efcf7  libgo/go/image/jpeg/reader.go
! c1b67a4b332ec0a1f1eb0cfa08c04ffc  libgo/go/image/jpeg/reader_test.go
! 545cc278d728d8ead2f83559854d66ac  libgo/go/image/jpeg/scan.go
! dbc5b29a8b2ee7a8c0c6101258676299  libgo/go/image/jpeg/writer.go
! 088d005d4eba6fcc5ecf614655ab17d9  libgo/go/image/jpeg/writer_test.go
  7a8c5dacd9ce342c1f6d93f43460cd1c  libgo/go/image/names.go
  85625542bbef21851c55a0f0e7bc3d05  libgo/go/image/png/example_test.go
  cae7ad20b122bf2b990fef70ff4877b4  libgo/go/image/png/paeth.go
  1caac54afaaad92487178b716e2727fe  libgo/go/image/png/paeth_test.go
! 6c3ee00ab31cd3ffe04bd691bb6d0c6b  libgo/go/image/png/reader.go
! 9a7fb2234e3a189ffa868a8edf2d64ef  libgo/go/image/png/reader_test.go
  02fc2ecfd2154905cb5b591c32c9f7c7  libgo/go/image/png/testdata/benchGray.png
  e53a3cd017e256b059f0c63055182f17  libgo/go/image/png/testdata/benchNRGBA-gradient.png
  dff276b9ce98522dce7be9b0c7ac050a  libgo/go/image/png/testdata/benchNRGBA-opaque.png
--- 66403,66645 ----
  d4b71f671c77009b454dd13c4589969b  libgo/go/go/types/testdata/init0.src
  65d334e9813ba6e1367f9920ffede43b  libgo/go/go/types/testdata/init1.src
  82306de0bef1e661c90f9f77801cf752  libgo/go/go/types/testdata/init2.src
! 23d673876cf4402999abcca40f28180f  libgo/go/go/types/testdata/issues.src
  6970d9e692e79c1b9d7e65fe0567d01e  libgo/go/go/types/testdata/labels.src
  856a6274f3600a0ed09f5abde7cdad12  libgo/go/go/types/testdata/methodsets.src
! 94c70cd39d7e47625b715023e9e3ef88  libgo/go/go/types/testdata/shifts.src
! d5ffaf88b2ad1c49bc1cd551fb005216  libgo/go/go/types/testdata/stmt0.src
  aa1aff497b3d5bbd54f2f9be95d39df4  libgo/go/go/types/testdata/stmt1.src
! 8612a7047beb09929fb29d6df5267a63  libgo/go/go/types/testdata/vardecl.src
  4abe25acbffdb7feb1ba047129054611  libgo/go/go/types/token_test.go
! 6051e2ef420eb1bbf1d76761f2bd0fe5  libgo/go/go/types/type.go
! cb870de805f427f13a98b51424b79285  libgo/go/go/types/typestring.go
! dd1c60af15fcc16594ba2a7bb0f973ec  libgo/go/go/types/typestring_test.go
! d807d6be61cb8011b152d280ee790079  libgo/go/go/types/typexpr.go
! f07cd0d8bde8dbc77c47a96d58e2715d  libgo/go/go/types/universe.go
! 07c6d4868ff668b62be271bd13eb1a20  libgo/go/golang_org/x/crypto/chacha20poly1305/chacha20poly1305.go
! 6152ba98464c88399fbfaf9736065b3c  libgo/go/golang_org/x/crypto/chacha20poly1305/chacha20poly1305_amd64.go
  bba5555d73d61641e0f1446d8212f0f3  libgo/go/golang_org/x/crypto/chacha20poly1305/chacha20poly1305_generic.go
  d1c02dce9e9c622684d992064f6d688c  libgo/go/golang_org/x/crypto/chacha20poly1305/chacha20poly1305_noasm.go
  b149a08e2b77bf9f10de748a8676f03d  libgo/go/golang_org/x/crypto/chacha20poly1305/chacha20poly1305_test.go
! 60b3f535de1f6acdfcd85d2c681af41a  libgo/go/golang_org/x/crypto/chacha20poly1305/chacha20poly1305_vectors_test.go
  268d4ca3077780c708768a06024f2354  libgo/go/golang_org/x/crypto/chacha20poly1305/internal/chacha20/chacha_generic.go
! beaa0896f1ce084dab21c2f670e1bcdb  libgo/go/golang_org/x/crypto/chacha20poly1305/internal/chacha20/chacha_test.go
! 4164d9f5314a85556eb26b674d601a38  libgo/go/golang_org/x/crypto/cryptobyte/asn1.go
! a852d2d0592351484d2ea6420359b481  libgo/go/golang_org/x/crypto/cryptobyte/asn1/asn1.go
! 37dffab0246f23b8e35b5b198f51f699  libgo/go/golang_org/x/crypto/cryptobyte/asn1_test.go
! 55b2bdc165b9945bfd4c4334ca4ffe8e  libgo/go/golang_org/x/crypto/cryptobyte/builder.go
! e75bb4c843a0038cfc8b56ec678c041d  libgo/go/golang_org/x/crypto/cryptobyte/cryptobyte_test.go
! eae163cb6649d1c17e42116e1d8f7392  libgo/go/golang_org/x/crypto/cryptobyte/example_test.go
! 805d787686506a5419c7e5184d7f647e  libgo/go/golang_org/x/crypto/cryptobyte/string.go
! cdf3cd675b874362a72acfc58d524c5b  libgo/go/golang_org/x/crypto/curve25519/curve25519.go
! 10945eb7d493a0c635fa6b6df1f425ac  libgo/go/golang_org/x/crypto/curve25519/curve25519_test.go
  62cbf7d76d06bf1c5c7bd193100249f2  libgo/go/golang_org/x/crypto/curve25519/doc.go
  d8d44b8acecfe0e12fd1376be8e3a5b2  libgo/go/golang_org/x/crypto/curve25519/mont25519_amd64.go
  321c7e84a7af8b81e73289d66e499b3c  libgo/go/golang_org/x/crypto/poly1305/poly1305.go
! fa2f7f6f9a0cb026eebd221f5a8b4b26  libgo/go/golang_org/x/crypto/poly1305/poly1305_test.go
  e1575b8b9a62d2226b18b8caa7231292  libgo/go/golang_org/x/crypto/poly1305/sum_amd64.go
  9d58682645799b12b66bac7a6d9c0c51  libgo/go/golang_org/x/crypto/poly1305/sum_arm.go
! 4f02b9af00ac547bcde5405fb14ce4a7  libgo/go/golang_org/x/crypto/poly1305/sum_ref.go
! 0e5e4b6f5e3421e40f1bd3e27c888f05  libgo/go/golang_org/x/net/http2/hpack/encode.go
! ead0ff138c5ec43156b3f6477889e64c  libgo/go/golang_org/x/net/http2/hpack/encode_test.go
! c9231dc890132e3e39d12c215535d047  libgo/go/golang_org/x/net/http2/hpack/hpack.go
! deb51670ba0f78866c9b5959e5b47718  libgo/go/golang_org/x/net/http2/hpack/hpack_test.go
  db09940680cd2c2b004f41e72f67d3e7  libgo/go/golang_org/x/net/http2/hpack/huffman.go
! 97af85184b5cb25cb3edd70f01383703  libgo/go/golang_org/x/net/http2/hpack/tables.go
! d21721350d2066b3127b3b92a7427725  libgo/go/golang_org/x/net/http2/hpack/tables_test.go
! 1b519592af3c4107ce1959d32f902d52  libgo/go/golang_org/x/net/idna/idna.go
  ea01cb52d37bf10e9a5e3e2e417de500  libgo/go/golang_org/x/net/idna/idna_test.go
! 33ea1bc0c96b90bc05b2e40c49242729  libgo/go/golang_org/x/net/idna/punycode.go
  c1a582c087245490430a0d333c503411  libgo/go/golang_org/x/net/idna/punycode_test.go
+ afbd1a366c7236ac4c84eaff1b4ba7a4  libgo/go/golang_org/x/net/idna/tables.go
+ 1d7b3e2ea7786cbe36a81d4fab3c2e38  libgo/go/golang_org/x/net/idna/trie.go
+ f4b52cb8fd044f2a13b343645365b0f1  libgo/go/golang_org/x/net/idna/trieval.go
+ baf274fc178da4fdbe2b6c09b6884e02  libgo/go/golang_org/x/net/internal/nettest/helper_bsd.go
+ b060539658fff8d6cec7c75defeaa5f8  libgo/go/golang_org/x/net/internal/nettest/helper_nobsd.go
+ e6883f8406974b1a3aff9b5e4c060112  libgo/go/golang_org/x/net/internal/nettest/helper_posix.go
+ 7ef2079cf03df88d07bf3997ba902b96  libgo/go/golang_org/x/net/internal/nettest/helper_stub.go
+ 9eac14e8fafc4787839bb4c7e2644477  libgo/go/golang_org/x/net/internal/nettest/helper_unix.go
+ c5291b060479e54338a42ba822911ace  libgo/go/golang_org/x/net/internal/nettest/helper_windows.go
+ 3a0478b44014fafa9b9a61a30dc9461c  libgo/go/golang_org/x/net/internal/nettest/interface.go
+ beae7aabc5fcf3cee6da7f34d73b7771  libgo/go/golang_org/x/net/internal/nettest/rlimit.go
+ 599f6bbfd8240373a82d3badd3a9f7e6  libgo/go/golang_org/x/net/internal/nettest/stack.go
  28352952be80e294a6f8b30e7bb9dfd3  libgo/go/golang_org/x/net/lex/httplex/httplex.go
  a7e183b644b91e366d6bf06d50f50eba  libgo/go/golang_org/x/net/lex/httplex/httplex_test.go
! 1537bd432b2514e259a17f30127013e6  libgo/go/golang_org/x/net/lif/address.go
! a84d4639ea4b0518f52fa0a47b3c85f9  libgo/go/golang_org/x/net/lif/address_test.go
! 24bea8c360bd3ca0665dd203efd10d47  libgo/go/golang_org/x/net/lif/binary.go
! 0c989a9e387d8c2626463598ffef615c  libgo/go/golang_org/x/net/lif/defs_solaris.go
  a02121696cf6f775cdd9aae90e231e54  libgo/go/golang_org/x/net/lif/lif.go
! dc1480a38224f44e05ce23f439cba485  libgo/go/golang_org/x/net/lif/link.go
! e1691716e717eb14d5ba17b5d9512014  libgo/go/golang_org/x/net/lif/link_test.go
! 8da32eb2e38b1a74ae7e6c0a35b519c2  libgo/go/golang_org/x/net/lif/sys.go
  c43a70009595bdd359eeb92a6f382e5c  libgo/go/golang_org/x/net/lif/syscall.go
  784e02ce997ae99cfa582697e844132c  libgo/go/golang_org/x/net/lif/zsys_solaris.go
! dad3597815fefbcb3fb7185bb3bf9ef7  libgo/go/golang_org/x/net/nettest/conntest.go
! 3c8757acbb0c031fe9e53acf7b90f573  libgo/go/golang_org/x/net/nettest/conntest_go16.go
! 1b970e2b474e962091e6ff79529afdf2  libgo/go/golang_org/x/net/nettest/conntest_go17.go
! c53334afc0f6ed8993fffd75849babb5  libgo/go/golang_org/x/net/nettest/conntest_test.go
! a73827f69c118add0c8490dbdac4351e  libgo/go/golang_org/x/net/proxy/direct.go
! f1e3b4b9ff6874bfbeda62cd3e0e40e8  libgo/go/golang_org/x/net/proxy/per_host.go
! 05442517b16d2cd688f125b14ad2a608  libgo/go/golang_org/x/net/proxy/per_host_test.go
! 6d99db817dfaf8220890cc37432f976d  libgo/go/golang_org/x/net/proxy/proxy.go
! 5bacd91bc6a795b6b5f4ba1730f81825  libgo/go/golang_org/x/net/proxy/proxy_test.go
! 3a4510415e645cf29ebc69bb636ff985  libgo/go/golang_org/x/net/proxy/socks5.go
! b52fa965ad189889946b3bad50f190ee  libgo/go/golang_org/x/net/route/address.go
  ee3a3f041a31a00a63c1e1167dbe8650  libgo/go/golang_org/x/net/route/address_darwin_test.go
  44cf8b7424a76d2c1e350a26cc732c3b  libgo/go/golang_org/x/net/route/address_test.go
! 2212f11eb8bbac2067c381bd530de27f  libgo/go/golang_org/x/net/route/binary.go
! f0d53fc50126f7907a813d9ada246646  libgo/go/golang_org/x/net/route/defs_darwin.go
! a6d0917f6298acc213492a546ee520c7  libgo/go/golang_org/x/net/route/defs_dragonfly.go
! 9ab15c32f8ec44fce3b9132b575157dc  libgo/go/golang_org/x/net/route/defs_freebsd.go
! f99c7620c32287477ad19b7e4a06bbde  libgo/go/golang_org/x/net/route/defs_netbsd.go
! 8126a4e7ebda32afb92382af44a8c696  libgo/go/golang_org/x/net/route/defs_openbsd.go
  a84420511d2b0e38b22b1b42a68e9578  libgo/go/golang_org/x/net/route/interface.go
  452f46106eaa7f59893f258d2590a27f  libgo/go/golang_org/x/net/route/interface_announce.go
  ce1d8d9eb8cfcb85e8b82c6d43bcc4ad  libgo/go/golang_org/x/net/route/interface_classic.go
  c710caae4ba863d2129e62234442a0b4  libgo/go/golang_org/x/net/route/interface_freebsd.go
  4d1fcc318ff42997d12d9e1809470dbc  libgo/go/golang_org/x/net/route/interface_multicast.go
  fb888eeead4668205e2aa214dd7a9555  libgo/go/golang_org/x/net/route/interface_openbsd.go
! 22553174247f92c2cedadf9d720cd8b1  libgo/go/golang_org/x/net/route/message.go
! 70418b3db7542324ea757aab5520a6ba  libgo/go/golang_org/x/net/route/message_darwin_test.go
! 169332f15ff66ea727dffda5dcbfb66d  libgo/go/golang_org/x/net/route/message_freebsd_test.go
! 7d0ce9bdc8ae4679dee1985e1501bd02  libgo/go/golang_org/x/net/route/message_test.go
! 708f52e58e1aee43522d2f63b2f3d5e8  libgo/go/golang_org/x/net/route/route.go
! 51122b7863085adcb4eee8ec71cb019f  libgo/go/golang_org/x/net/route/route_classic.go
! c2139a4ad02da0c00701d24f41567a20  libgo/go/golang_org/x/net/route/route_openbsd.go
! d0158913113c7be8430abfc01ab1d476  libgo/go/golang_org/x/net/route/route_test.go
! 6956800970f4bbd9120c822075526b68  libgo/go/golang_org/x/net/route/sys.go
! 383e5ad87a434a3a4e9234f50b9d801b  libgo/go/golang_org/x/net/route/sys_darwin.go
! e3e250906c4b213aa31bbe73b7b85bba  libgo/go/golang_org/x/net/route/sys_dragonfly.go
! 489ef2b1a28e17f7bdc31a65a6cec6f2  libgo/go/golang_org/x/net/route/sys_freebsd.go
! 520f1b7dbde20e5da0bb290a0d63f6cb  libgo/go/golang_org/x/net/route/sys_netbsd.go
! b7dc843f3a672dbdf122954810341366  libgo/go/golang_org/x/net/route/sys_openbsd.go
! 044f66d7767693604777a95aa8ed73c3  libgo/go/golang_org/x/net/route/syscall.go
! dc33a95dbb307feb44808995cdd48a5c  libgo/go/golang_org/x/net/route/zsys_darwin.go
! fdb9662ba83128ea8cdc42033a50b0a6  libgo/go/golang_org/x/net/route/zsys_dragonfly.go
! 20c2db0d58efbb04d3d902c0b11bf69c  libgo/go/golang_org/x/net/route/zsys_freebsd_386.go
! b3b3c6a776669518731acb53eea8df6d  libgo/go/golang_org/x/net/route/zsys_freebsd_amd64.go
! fdde0df5d8f80e815b896e173f0a7329  libgo/go/golang_org/x/net/route/zsys_freebsd_arm.go
! 7c5637aa72d615d0a3ff760bf66a2dfa  libgo/go/golang_org/x/net/route/zsys_netbsd.go
! 492bf83609fc0674e34c71cdccd07894  libgo/go/golang_org/x/net/route/zsys_openbsd.go
! ca2e271eeab170ff192468b95e09c746  libgo/go/golang_org/x/text/secure/bidirule/bidirule.go
! 9d2625cc51d77e668049c635bd39f038  libgo/go/golang_org/x/text/secure/doc.go
! 85daee25feb98ff275832e0b0ec20ef0  libgo/go/golang_org/x/text/transform/examples_test.go
! 9a005ebe6ed78bc45104921a22ff1a1c  libgo/go/golang_org/x/text/transform/transform.go
! 833af1f867955d37f83144b8c2167727  libgo/go/golang_org/x/text/unicode/bidi/bidi.go
! dc1d5e95abf636c34089e3f5939556aa  libgo/go/golang_org/x/text/unicode/bidi/bracket.go
! 3209407dc97fb53c4bc819cdbfe5ed6b  libgo/go/golang_org/x/text/unicode/bidi/core.go
! fe5eaf0558800cbc7505f1a589ed73a3  libgo/go/golang_org/x/text/unicode/bidi/example_test.go
! d0338ed2409fb20cda34f254ebcd0028  libgo/go/golang_org/x/text/unicode/bidi/prop.go
! 61a92308729ad508afba3163aab519f9  libgo/go/golang_org/x/text/unicode/bidi/tables.go
! b0ac8511f642b8e97c3126e32a7f6b4c  libgo/go/golang_org/x/text/unicode/bidi/trieval.go
! cd99a3116db911469dc3499e49070d45  libgo/go/golang_org/x/text/unicode/doc.go
! aff444e9a8f9fc630d88932dd5eab3c9  libgo/go/golang_org/x/text/unicode/norm/composition.go
! 54a49f4d50be4ab3dd26381101534be0  libgo/go/golang_org/x/text/unicode/norm/example_iter_test.go
! 07bfa7a36a2150746681d9562e202a6d  libgo/go/golang_org/x/text/unicode/norm/example_test.go
! 1c7ac30243da77c98f31efd9d1ac5fe0  libgo/go/golang_org/x/text/unicode/norm/forminfo.go
! 10a187ff73003e9c13e9d16f82386603  libgo/go/golang_org/x/text/unicode/norm/input.go
! 87bc14de13d6bf4af835395b81022bb0  libgo/go/golang_org/x/text/unicode/norm/iter.go
! d3b4ede778035c15f965c5d7b4f37497  libgo/go/golang_org/x/text/unicode/norm/normalize.go
! 7af284204f17ebde7a8e890d25eaecda  libgo/go/golang_org/x/text/unicode/norm/readwriter.go
! b753c35ddbfcaca4677c8c6d3f09b10b  libgo/go/golang_org/x/text/unicode/norm/tables.go
! 36f941451842972885eaff3ab0ca391d  libgo/go/golang_org/x/text/unicode/norm/transform.go
! b3504364af560f1da57813f455ca699b  libgo/go/golang_org/x/text/unicode/norm/trie.go
  eb2cd12bb796c90b28361ef22c52f5fc  libgo/go/golang_org/x/text/unicode/norm/triegen.go
  b63f0ac8f7376fb11493836687426bed  libgo/go/golang_org/x/text/width/kind_string.go
  a197da92744722fcc7f483380e35cee2  libgo/go/golang_org/x/text/width/tables.go
  3ba237ab0b122f112530788c7849713e  libgo/go/golang_org/x/text/width/transform.go
  4bbf727b3649c22ba5e96f3f1a2c0deb  libgo/go/golang_org/x/text/width/trieval.go
  a8d108ae3e98e70ff2ef4df4de8e096a  libgo/go/golang_org/x/text/width/width.go
! f8eee87504cb4018a26fdb2a48f4538e  libgo/go/hash/adler32/adler32.go
! 607bed9e7f8051c6870551da82ae7bfb  libgo/go/hash/adler32/adler32_test.go
! 592f721a18b6e2bad94bc671de8c61d4  libgo/go/hash/crc32/crc32.go
! 9e5c06cb4bd7d4f4bd01312ab279e508  libgo/go/hash/crc32/crc32_amd64.go
! e0c0d72c950b2fa6e4f939a49e8a633a  libgo/go/hash/crc32/crc32_amd64p32.go
! c9b7ea719b8526c48fbbf93a0e40a4f4  libgo/go/hash/crc32/crc32_arm64.go
  672e27745433436913cf360b2dece8b5  libgo/go/hash/crc32/crc32_generic.go
! 4a23a2ec252452b8f56af3a3803955a4  libgo/go/hash/crc32/crc32_otherarch.go
! ab076b6be5c97561bf79fab2c0569a64  libgo/go/hash/crc32/crc32_ppc64le.go
  c2885def28efe65033c7d61e2f112db4  libgo/go/hash/crc32/crc32_s390x.go
! d8543e6c12823667d360ced2c9d64e90  libgo/go/hash/crc32/crc32_test.go
  12edd3e293a7b8c32e404f5223e5c86c  libgo/go/hash/crc32/example_test.go
! a1e189f02427ace8e6a1516ce87e6978  libgo/go/hash/crc32/gen_const_ppc64le.go
! 6ef82a9f7b3efbd76235a3d9ed99f66d  libgo/go/hash/crc64/crc64.go
! 5df880aae862a51ae02c07e8fa47485e  libgo/go/hash/crc64/crc64_test.go
! 6ac6eee4221e89b40b255583595743d2  libgo/go/hash/example_test.go
! d35d25a03aa34c7fb6d7e3fd82c8e13e  libgo/go/hash/fnv/fnv.go
! bc4c5a7ede82eb4418b96c6d7738d4c9  libgo/go/hash/fnv/fnv_test.go
! c1a5611f8ea9c06ccb019508c3c2ed5c  libgo/go/hash/hash.go
! 055a6da6aec9eb5976d82f7aeb497dbd  libgo/go/hash/marshal_test.go
! 28627768057b6bd5909017232c24b0c2  libgo/go/html/entity.go
  9499982502f6fab9b4c5d4c8c4814feb  libgo/go/html/entity_test.go
  de8e612d6d6b51a4889bf2e481653acc  libgo/go/html/escape.go
  86037b4a7db52b43eeb44b95a17f835a  libgo/go/html/escape_test.go
  fb5772ff1d769f8bd3e7b857d44352a7  libgo/go/html/example_test.go
! dc60594b54b0cc3c0318a82a2230fceb  libgo/go/html/template/attr.go
  2c510f9d27fce24f57f93f92accaa2f6  libgo/go/html/template/clone_test.go
! cba1ee4e5fe81e65d467f13967525044  libgo/go/html/template/content.go
! 2e8ea62d3ca595cb3188505705f7711f  libgo/go/html/template/content_test.go
! c8d9919f1b4959136726952754cfa4c6  libgo/go/html/template/context.go
  b5fd6a1abc11b06dd1c7377c750594a1  libgo/go/html/template/css.go
  55e9163874525f8c28e019f575a9ebba  libgo/go/html/template/css_test.go
! 18b714df85686044f7a7cb6a591dec28  libgo/go/html/template/doc.go
! e1a59197f089f1ebaf97c96dc60f7f9e  libgo/go/html/template/error.go
! 9ed507f7863c91948ef9cd1ea11e093e  libgo/go/html/template/escape.go
! ce0624fe07c66844db72de9ec39f442a  libgo/go/html/template/escape_test.go
  fd24d85f2b984055b924e49cfc4de77b  libgo/go/html/template/example_test.go
  375f3b86737b26a639af336f545bed83  libgo/go/html/template/examplefiles_test.go
  c3768e208f729bee7abdda1eb80d1992  libgo/go/html/template/html.go
  168fb875c16d9bbe98e9f332d126c055  libgo/go/html/template/html_test.go
! 1e616b15d263174395945543df46f338  libgo/go/html/template/js.go
  b6c1b1782b145b2f8e7efe0924d66ef0  libgo/go/html/template/js_test.go
! 7c0c3f90edc1d66170c51032d9f974bf  libgo/go/html/template/template.go
  ede4fa3f1203b3c9366a8e3901987d8d  libgo/go/html/template/template_test.go
! aafa1db9fa19c47b3b9b25c9f7287481  libgo/go/html/template/transition.go
  794c76daefd189e7a55f97b5ce4bd9ed  libgo/go/html/template/transition_test.go
! 744dbd00821f89607dd6402a9e139a9b  libgo/go/html/template/url.go
! 08f8319972248363c1f6efd05c81153a  libgo/go/html/template/url_test.go
! 0ee9e1086d3be098c9d118eea9e2b35c  libgo/go/image/color/color.go
! 697ed61304b0fa02aea26470f306a495  libgo/go/image/color/color_test.go
  5344162d8758c324a0b46dcc7e7508ec  libgo/go/image/color/palette/gen.go
  9351e4a2e64d6046298e943eb06ecf5c  libgo/go/image/color/palette/generate.go
  c58e0bd36b12eb14ef2ba6af777eec4a  libgo/go/image/color/palette/palette.go
! 35f17df03f39bd33094583b44d365576  libgo/go/image/color/ycbcr.go
  eb49954ae9c2cc1153e2b0ac76c25fda  libgo/go/image/color/ycbcr_test.go
  00c0dfbdae9c99ead3bed8bae89b16a4  libgo/go/image/decode_example_test.go
  3db16a455c995763f305fa7129a6a985  libgo/go/image/decode_test.go
  0cfc93a02fc67184d7414d683983b8db  libgo/go/image/draw/bench_test.go
  05b4c6b42b216ef3f39178bdedd124a6  libgo/go/image/draw/clip_test.go
! 7e9b666a2de060b0d6575edb52f16b03  libgo/go/image/draw/draw.go
! e9eb815245adf4d6cf4c0a290df2ec33  libgo/go/image/draw/draw_test.go
  d2b69238cdd7eeab708f8367d37c7656  libgo/go/image/draw/example_test.go
  1ed127d415b3c9f3a6f37444e810e93f  libgo/go/image/format.go
! 645d16c9259015a7635dc3918e75d4ad  libgo/go/image/geom.go
! 9a8f5ed2c0cf944d5b4c93bd318889d2  libgo/go/image/geom_test.go
! 5086ba6049124429ea06f7c23145dc29  libgo/go/image/gif/reader.go
! ff982cb498a5c92b2d71d3581c567d9b  libgo/go/image/gif/reader_test.go
! 0ab8459a14285752601938d7a5c7afbe  libgo/go/image/gif/writer.go
! 211d1627c7ef13107359056e28b66627  libgo/go/image/gif/writer_test.go
  3e1f7e4777ce47370579739c2c8998ef  libgo/go/image/image.go
! 9ae2e52265ae35530ac2a606f5b299ed  libgo/go/image/image_test.go
! 3475bb78b62d849ce4631cb7871e75a1  libgo/go/image/internal/imageutil/gen.go
  f17c0b78607a9db21a18e33d106ed160  libgo/go/image/internal/imageutil/imageutil.go
! 575548957ac98eb832c641eb760afb38  libgo/go/image/internal/imageutil/impl.go
  e0649349326bee233728d0badff2e25b  libgo/go/image/jpeg/dct_test.go
  ba14c236db1bc45cc63d90ddf161877e  libgo/go/image/jpeg/fdct.go
! 9700c44ea13ff67daedd5dad2511a15f  libgo/go/image/jpeg/huffman.go
  2f5a5cac3c1826aa5f4df8b8108ebeb6  libgo/go/image/jpeg/idct.go
! 0dc2d2b2fb505574ab1c4e83e27281bd  libgo/go/image/jpeg/reader.go
! d0ff607dd283a97ef351755b06b6d601  libgo/go/image/jpeg/reader_test.go
! 29d39be2a9bf46121d6b23dd307ea4f9  libgo/go/image/jpeg/scan.go
! 6ab9412fbf1fd9c757c0b2b2c722861e  libgo/go/image/jpeg/writer.go
! ae478fd32f7c9015aead4b0213dbe4c6  libgo/go/image/jpeg/writer_test.go
  7a8c5dacd9ce342c1f6d93f43460cd1c  libgo/go/image/names.go
  85625542bbef21851c55a0f0e7bc3d05  libgo/go/image/png/example_test.go
  cae7ad20b122bf2b990fef70ff4877b4  libgo/go/image/png/paeth.go
  1caac54afaaad92487178b716e2727fe  libgo/go/image/png/paeth_test.go
! 093659fc453089f7df789bdb6540eece  libgo/go/image/png/reader.go
! 80501be409fc16f53c9eed4a75e92cf9  libgo/go/image/png/reader_test.go
  02fc2ecfd2154905cb5b591c32c9f7c7  libgo/go/image/png/testdata/benchGray.png
  e53a3cd017e256b059f0c63055182f17  libgo/go/image/png/testdata/benchNRGBA-gradient.png
  dff276b9ce98522dce7be9b0c7ac050a  libgo/go/image/png/testdata/benchNRGBA-opaque.png
*************** e4451d4233de3574bd2728193f2c9f24  libgo/
*** 62414,62421 ****
  843aabd1eee9aa042e0e210d6d04b0d2  libgo/go/image/png/testdata/pngsuite/ftp0n3p08.sng
  6207a3c0ebe11ad7aa3c0b859d7194b9  libgo/go/image/png/testdata/pngsuite/ftp1n3p08.png
  5c6ef37bff477455f8dd3db200ce09e2  libgo/go/image/png/testdata/pngsuite/ftp1n3p08.sng
! 4feee5b62c400cdd09fd21e15b7ced12  libgo/go/image/png/writer.go
! 0e6c964e03ec79ce7ce29d359740e8da  libgo/go/image/png/writer_test.go
  cdc71af61452de075b355596f429cea0  libgo/go/image/testdata/video-001.221212.jpeg
  2448220c1dbd15767fea75277a25725a  libgo/go/image/testdata/video-001.221212.png
  4525d5eeca18697cbb6af6a1ed405666  libgo/go/image/testdata/video-001.5bpp.gif
--- 66724,66731 ----
  843aabd1eee9aa042e0e210d6d04b0d2  libgo/go/image/png/testdata/pngsuite/ftp0n3p08.sng
  6207a3c0ebe11ad7aa3c0b859d7194b9  libgo/go/image/png/testdata/pngsuite/ftp1n3p08.png
  5c6ef37bff477455f8dd3db200ce09e2  libgo/go/image/png/testdata/pngsuite/ftp1n3p08.sng
! 45bf61255f46644f7631ed79d32d8d35  libgo/go/image/png/writer.go
! 149dfaa30f4aa8922b965cfa2f293b1f  libgo/go/image/png/writer_test.go
  cdc71af61452de075b355596f429cea0  libgo/go/image/testdata/video-001.221212.jpeg
  2448220c1dbd15767fea75277a25725a  libgo/go/image/testdata/video-001.221212.png
  4525d5eeca18697cbb6af6a1ed405666  libgo/go/image/testdata/video-001.5bpp.gif
*************** b34c5b95a2a1a0d1a152b553ffba2b61  libgo/
*** 62457,62475 ****
  466c92d784f128354149655cd726bb4d  libgo/go/index/suffixarray/qsufsort.go
  c18aefee1b7e8ebf602a98c849c4845b  libgo/go/index/suffixarray/suffixarray.go
  132319a6205d36f8f3120dff41ee5ff4  libgo/go/index/suffixarray/suffixarray_test.go
  3684d457c29d834d162bc6c54dabba5a  libgo/go/internal/nettrace/nettrace.go
! 097f3c10cbccf0ab1123e59476efef3c  libgo/go/internal/pprof/profile/encode.go
! 281c1506e6706053e9709407c23a3714  libgo/go/internal/pprof/profile/filter.go
! f215ab05a44b0b39da0130653d8b6473  libgo/go/internal/pprof/profile/legacy_profile.go
! 0e6f808c43faad6f438290593263f534  libgo/go/internal/pprof/profile/profile.go
! b0444ee7eda577cce633330363da86b9  libgo/go/internal/pprof/profile/profile_test.go
! a70340db97c93aa39b3b7937b51dad68  libgo/go/internal/pprof/profile/proto.go
! d434ed2afa9b019dd066da34dd384e7f  libgo/go/internal/pprof/profile/proto_test.go
! d3bec38805b7716ed269d85f46e818b5  libgo/go/internal/pprof/profile/prune.go
  4d0a5052a9c31a154e29aae1181fe6b4  libgo/go/internal/race/doc.go
  3334c451d82b93847b8ba2669beb36a8  libgo/go/internal/race/norace.go
  132fd81e2b9c683c70d9feb34fc9b1a0  libgo/go/internal/race/race.go
! 06b80192d26480d6781a69de7c0e55e0  libgo/go/internal/singleflight/singleflight.go
  b78e1191356fe399be19de306548c0cc  libgo/go/internal/singleflight/singleflight_test.go
  ad17fd7c7a01712ad2add81147c009c2  libgo/go/internal/syscall/unix/dummy.go
  14cedfa3a429812400e1fecdca4a87ee  libgo/go/internal/syscall/unix/getentropy_openbsd.go
--- 66767,66820 ----
  466c92d784f128354149655cd726bb4d  libgo/go/index/suffixarray/qsufsort.go
  c18aefee1b7e8ebf602a98c849c4845b  libgo/go/index/suffixarray/suffixarray.go
  132319a6205d36f8f3120dff41ee5ff4  libgo/go/index/suffixarray/suffixarray_test.go
+ 1b70845cd87c2f4eb4ae7ee4336191b0  libgo/go/internal/cpu/cpu.go
+ e7b86fe03249ce0916dac92273650389  libgo/go/internal/cpu/cpu_arm.go
+ 613946d033beb0fd1272e1645a59e548  libgo/go/internal/cpu/cpu_arm64.go
+ e7b86fe03249ce0916dac92273650389  libgo/go/internal/cpu/cpu_mips.go
+ e7b86fe03249ce0916dac92273650389  libgo/go/internal/cpu/cpu_mips64.go
+ e7b86fe03249ce0916dac92273650389  libgo/go/internal/cpu/cpu_mips64le.go
+ e7b86fe03249ce0916dac92273650389  libgo/go/internal/cpu/cpu_mipsle.go
+ d584bcfca49023804ad182e1bddf4daf  libgo/go/internal/cpu/cpu_ppc64x.go
+ c96ab4b62af03c7f0c5479e364308bc5  libgo/go/internal/cpu/cpu_s390x.go
+ 7892816fc2020c12c24678d7e2e74a54  libgo/go/internal/cpu/cpu_test.go
+ 057452ceac4e141884602538cbcfb575  libgo/go/internal/cpu/cpu_x86.go
  3684d457c29d834d162bc6c54dabba5a  libgo/go/internal/nettrace/nettrace.go
! 62431e0391691edec7faa57eaf545d65  libgo/go/internal/poll/export_posix_test.go
! ec209188a8bfd11890e98c94a4bcb7f2  libgo/go/internal/poll/export_test.go
! b268c43a787383b30fc7d66ccacff408  libgo/go/internal/poll/export_windows_test.go
! 40857a81e30b7a8121911b214947a7ce  libgo/go/internal/poll/fd.go
! 6e6c2602ebea534f5df8de7e9dc0f665  libgo/go/internal/poll/fd_io_plan9.go
! 9cce02807136a0e5a6f2096f3c0ee9c7  libgo/go/internal/poll/fd_mutex.go
! 90b72308fe0901d0b130907ceca6ea0e  libgo/go/internal/poll/fd_mutex_test.go
! 855c8819fac287d9f05e58818c37820e  libgo/go/internal/poll/fd_plan9.go
! 954f765e1f99f119a0358d60024aa539  libgo/go/internal/poll/fd_poll_nacl.go
! 90843643ecb08c6ec130e8448fcdbbb8  libgo/go/internal/poll/fd_poll_runtime.go
! 8cd49b4b64e6cfa414afb91008dff906  libgo/go/internal/poll/fd_posix.go
! d2de05890d8b7906b2fb06c6eee906b8  libgo/go/internal/poll/fd_posix_test.go
! 060f0f43f1de11aae2db9aad9f7372e1  libgo/go/internal/poll/fd_unix.go
! 7d8eb2c4269e0f0b68e3b5f29685009c  libgo/go/internal/poll/fd_windows.go
! 6590e98d43fdc0c2593220dfe36d67fd  libgo/go/internal/poll/fd_windows_test.go
! 8a7e72040a4502f21bb64f22b55ef2b4  libgo/go/internal/poll/hook_cloexec.go
! 7fd55f8408fa8f661f00485e83e7cba6  libgo/go/internal/poll/hook_unix.go
! f9e203c47c3495141cef11d4c2af02c9  libgo/go/internal/poll/hook_windows.go
! 1c43f5c4d05932660aeb1def8491e9d5  libgo/go/internal/poll/sendfile_bsd.go
! 98716eceed1053a0df3afaee885cce4f  libgo/go/internal/poll/sendfile_linux.go
! 9fc7b2794b68366dcf4a70702adc59c0  libgo/go/internal/poll/sendfile_solaris.go
! 9073cc06f3ab953415caeb44c020949c  libgo/go/internal/poll/sendfile_windows.go
! 308cbfbfb095892acd79ac310d339c13  libgo/go/internal/poll/sock_cloexec.go
! bdbdc04e3b3b44e8a292af1af4750cf0  libgo/go/internal/poll/sockopt.go
! 03c5e2154fbf3bd10e0b12987e5ef16d  libgo/go/internal/poll/sockopt_linux.go
! a35f96953e4f6148a83bc3ae5ed4fab7  libgo/go/internal/poll/sockopt_unix.go
! a63c6dd4bc5f02088c1dc3158d68bb07  libgo/go/internal/poll/sockopt_windows.go
! 35bbfd48e259c5ce45859dd6840d1731  libgo/go/internal/poll/sockoptip.go
! 126eec79336718067d9463116ff15194  libgo/go/internal/poll/strconv.go
! 54711a36e17555cd0543eb222e97a056  libgo/go/internal/poll/sys_cloexec.go
! 0c4948cba2523176cdb0ae10a35fa0a5  libgo/go/internal/poll/writev.go
! 7d3289a09320b4aacd68e8cd5d63f813  libgo/go/internal/poll/writev_test.go
  4d0a5052a9c31a154e29aae1181fe6b4  libgo/go/internal/race/doc.go
  3334c451d82b93847b8ba2669beb36a8  libgo/go/internal/race/norace.go
  132fd81e2b9c683c70d9feb34fc9b1a0  libgo/go/internal/race/race.go
! da885f6f9fcad309a3023265facd18d8  libgo/go/internal/singleflight/singleflight.go
  b78e1191356fe399be19de306548c0cc  libgo/go/internal/singleflight/singleflight_test.go
  ad17fd7c7a01712ad2add81147c009c2  libgo/go/internal/syscall/unix/dummy.go
  14cedfa3a429812400e1fecdca4a87ee  libgo/go/internal/syscall/unix/getentropy_openbsd.go
*************** ad17fd7c7a01712ad2add81147c009c2  libgo/
*** 62478,62484 ****
  83edb582b8ec98db073fcb180ecaf049  libgo/go/internal/syscall/unix/getrandom_linux_alpha.go
  e8a6fe0412741ea16edfeb6355696fee  libgo/go/internal/syscall/unix/getrandom_linux_amd64.go
  72fc988be1b6e3b8eed6c5cde010cce1  libgo/go/internal/syscall/unix/getrandom_linux_arm.go
! e2500543be0b8649523eb8d8024ab1ba  libgo/go/internal/syscall/unix/getrandom_linux_generic.go
  f1eab13ce71bd0b79c7fce50fd5f221c  libgo/go/internal/syscall/unix/getrandom_linux_ia64.go
  7f35aed28702173edff1131d2ab4bdb8  libgo/go/internal/syscall/unix/getrandom_linux_m68k.go
  a7b799b8d7258ec09d5fff3d4c6270d8  libgo/go/internal/syscall/unix/getrandom_linux_mips64p32x.go
--- 66823,66829 ----
  83edb582b8ec98db073fcb180ecaf049  libgo/go/internal/syscall/unix/getrandom_linux_alpha.go
  e8a6fe0412741ea16edfeb6355696fee  libgo/go/internal/syscall/unix/getrandom_linux_amd64.go
  72fc988be1b6e3b8eed6c5cde010cce1  libgo/go/internal/syscall/unix/getrandom_linux_arm.go
! ab03dc3fe1befc8dbf777c796f3a905e  libgo/go/internal/syscall/unix/getrandom_linux_generic.go
  f1eab13ce71bd0b79c7fce50fd5f221c  libgo/go/internal/syscall/unix/getrandom_linux_ia64.go
  7f35aed28702173edff1131d2ab4bdb8  libgo/go/internal/syscall/unix/getrandom_linux_m68k.go
  a7b799b8d7258ec09d5fff3d4c6270d8  libgo/go/internal/syscall/unix/getrandom_linux_mips64p32x.go
*************** fd79b2ebfa3daf7a2c6496008027f36f  libgo/
*** 62487,62494 ****
  8f0a345621433724ad7a3b158a619511  libgo/go/internal/syscall/unix/getrandom_linux_ppc64x.go
  3bd2510b9d70ed458b5a1a0991143ddf  libgo/go/internal/syscall/unix/getrandom_linux_s390.go
  3bd2510b9d70ed458b5a1a0991143ddf  libgo/go/internal/syscall/unix/getrandom_linux_s390x.go
  cc395bbeea96d24f9313faaac4648657  libgo/go/internal/syscall/unix/getrandom_linux_sparcx.go
! d896336f4ead4eef89141ab893ccca1e  libgo/go/internal/syscall/windows/mksyscall.go
  16b69449cf06972cee015e61b6af51e5  libgo/go/internal/syscall/windows/registry/export_test.go
  316347085b3658266624fd1d510937d0  libgo/go/internal/syscall/windows/registry/key.go
  cd7b0e89ec82d51719bb7451e0ce6a47  libgo/go/internal/syscall/windows/registry/mksyscall.go
--- 66832,66842 ----
  8f0a345621433724ad7a3b158a619511  libgo/go/internal/syscall/unix/getrandom_linux_ppc64x.go
  3bd2510b9d70ed458b5a1a0991143ddf  libgo/go/internal/syscall/unix/getrandom_linux_s390.go
  3bd2510b9d70ed458b5a1a0991143ddf  libgo/go/internal/syscall/unix/getrandom_linux_s390x.go
+ da3b487bce306c91385e608575b9ac1c  libgo/go/internal/syscall/unix/getrandom_linux_shx.go
  cc395bbeea96d24f9313faaac4648657  libgo/go/internal/syscall/unix/getrandom_linux_sparcx.go
! c4bc2a6d553edcf42b87eefab01c6210  libgo/go/internal/syscall/windows/exec_windows_test.go
! 6c0af5a588b6316f310b72df2256991c  libgo/go/internal/syscall/windows/mksyscall.go
! ccbb2330dfe78c312331a30db624eb3e  libgo/go/internal/syscall/windows/psapi_windows.go
  16b69449cf06972cee015e61b6af51e5  libgo/go/internal/syscall/windows/registry/export_test.go
  316347085b3658266624fd1d510937d0  libgo/go/internal/syscall/windows/registry/key.go
  cd7b0e89ec82d51719bb7451e0ce6a47  libgo/go/internal/syscall/windows/registry/mksyscall.go
*************** cd7b0e89ec82d51719bb7451e0ce6a47  libgo/
*** 62497,62515 ****
  76e8aab2f10000ea866454ce5ecc10b8  libgo/go/internal/syscall/windows/registry/value.go
  51b1a8542556ff9eadeffe8200cf533b  libgo/go/internal/syscall/windows/registry/zsyscall_windows.go
  20857556ecc70347639098407e9159a1  libgo/go/internal/syscall/windows/reparse_windows.go
! 6467b07cab67f63f9f3abaf32de5f8e1  libgo/go/internal/syscall/windows/security_windows.go
! ed736e8476387148473b72dd68ad73b0  libgo/go/internal/syscall/windows/syscall_windows.go
  f70b1b777968a4ea33d57ed01ec642bc  libgo/go/internal/syscall/windows/sysdll/sysdll.go
! b40d0dfeca677b473ebe2dd69f038365  libgo/go/internal/syscall/windows/zsyscall_windows.go
! b6e07009af3465868d5d7e00cd7ddbff  libgo/go/internal/testenv/testenv.go
  d12588db1f13411a3196285507549640  libgo/go/internal/testenv/testenv_cgo.go
! 6f3ab953b29548cff887f5eddf8ec88b  libgo/go/internal/testenv/testenv_notwin.go
! b449f74897a449d0a72c09daca07ae92  libgo/go/internal/testenv/testenv_windows.go
  e2d2911a1604d5705e3e4c3fd5bcd062  libgo/go/internal/trace/goroutines.go
  5394d35cbaa3168a9ad8264b3e484967  libgo/go/internal/trace/mkcanned.bash
  010cb5f562f5f4b8dae10096785ec8bb  libgo/go/internal/trace/order.go
! a62de5ab97e0176714e08b2395e7044f  libgo/go/internal/trace/parser.go
! dc7cb57e5b657d9227f4137eba2da55c  libgo/go/internal/trace/parser_test.go
  ed51cf6484537faf4a16d18dbaafafed  libgo/go/internal/trace/testdata/http_1_5_good
  c91dfcc0d1cdd719321f14079fb8f9c2  libgo/go/internal/trace/testdata/http_1_7_good
  f18a6c265e2035153348308f3e486e5f  libgo/go/internal/trace/testdata/stress_1_5_good
--- 66845,66864 ----
  76e8aab2f10000ea866454ce5ecc10b8  libgo/go/internal/syscall/windows/registry/value.go
  51b1a8542556ff9eadeffe8200cf533b  libgo/go/internal/syscall/windows/registry/zsyscall_windows.go
  20857556ecc70347639098407e9159a1  libgo/go/internal/syscall/windows/reparse_windows.go
! cf456127e99e4244e03850963cfdf50a  libgo/go/internal/syscall/windows/security_windows.go
! 752860ba89eb9350734dbf7d570024e7  libgo/go/internal/syscall/windows/syscall_windows.go
  f70b1b777968a4ea33d57ed01ec642bc  libgo/go/internal/syscall/windows/sysdll/sysdll.go
! 99f88691d05f320c594628d75d0a5a4d  libgo/go/internal/syscall/windows/zsyscall_windows.go
! 5ab0b59b9be446f3812c4ed115f1621e  libgo/go/internal/testenv/testenv.go
  d12588db1f13411a3196285507549640  libgo/go/internal/testenv/testenv_cgo.go
! 34d679a04e323604744d830235bdd6d5  libgo/go/internal/testenv/testenv_notwin.go
! 101dc05c7da46d12a36c1a13d5847d25  libgo/go/internal/testenv/testenv_windows.go
! f4df4d86b40e7880ca5dad3a8c8fc2d0  libgo/go/internal/testlog/log.go
  e2d2911a1604d5705e3e4c3fd5bcd062  libgo/go/internal/trace/goroutines.go
  5394d35cbaa3168a9ad8264b3e484967  libgo/go/internal/trace/mkcanned.bash
  010cb5f562f5f4b8dae10096785ec8bb  libgo/go/internal/trace/order.go
! 8418ec4ca25ee39faa21f77a77c59db2  libgo/go/internal/trace/parser.go
! ec0631f89483f8ba42152e273eb60961  libgo/go/internal/trace/parser_test.go
  ed51cf6484537faf4a16d18dbaafafed  libgo/go/internal/trace/testdata/http_1_5_good
  c91dfcc0d1cdd719321f14079fb8f9c2  libgo/go/internal/trace/testdata/http_1_7_good
  f18a6c265e2035153348308f3e486e5f  libgo/go/internal/trace/testdata/stress_1_5_good
*************** fed3fa3a7f72b84d425d8613c33876f5  libgo/
*** 62517,62601 ****
  7e02e4328ef6c48475cb0276d01330cc  libgo/go/internal/trace/testdata/stress_1_7_good
  3328c5cb947f05562e3560c414174b0a  libgo/go/internal/trace/testdata/stress_start_stop_1_5_good
  c4fbaf5d300d81134153d78fe396039a  libgo/go/internal/trace/testdata/stress_start_stop_1_7_good
! 905b9c385f57c3e344aaa36fb61c0e62  libgo/go/internal/trace/writer.go
! d89d6585442913c18f3f6472d390794a  libgo/go/io/example_test.go
! a2f6135e2cf53f37b03a8bf845358b71  libgo/go/io/io.go
! 54f35920de6f0cdbddc2af6e3f355870  libgo/go/io/io_test.go
! 3482a15eefd033164ad64da4637dee9a  libgo/go/io/ioutil/example_test.go
! f314d9121b6ce9ca593cb158940d0710  libgo/go/io/ioutil/ioutil.go
  63ed9cb1cba20f3251490e2140b79f0d  libgo/go/io/ioutil/ioutil_test.go
  2c4fc5764d5559588e9e78db1c6d656c  libgo/go/io/ioutil/tempfile.go
! 79c54869ca078da5a7cb976b7e2e273e  libgo/go/io/ioutil/tempfile_test.go
! 052c254b990ce7e83a44be17c86f0163  libgo/go/io/multi.go
! 1356524ccb60afd3d002ed59c7567948  libgo/go/io/multi_test.go
! c449f676b62aa683555e1e879c06effa  libgo/go/io/pipe.go
! 5bb9e03147c63c90652a7957ff99c2d5  libgo/go/io/pipe_test.go
! 9656299e1383c2d9608b0b72ab05c4b9  libgo/go/log/log.go
! ed9ddb884e2724b14286c5cc3f6f1481  libgo/go/log/log_test.go
  48018f9535d45bfbbb4cf4fe25b571e6  libgo/go/log/syslog/doc.go
  5b9676df601a12e01e560b4618defaf7  libgo/go/log/syslog/example_test.go
! 84ac2f757eaad0473030be5ec642081e  libgo/go/log/syslog/syslog.go
  539acc0320961711b88dbcc4b9cb3e49  libgo/go/log/syslog/syslog_c.c
  9f42a14ed1130e5bfb22285493c519c5  libgo/go/log/syslog/syslog_libc.go
  e2d098e076780a8b17bee11415d711e8  libgo/go/log/syslog/syslog_test.go
! 130f4d69faf76ffc81c666ff1670b49b  libgo/go/log/syslog/syslog_unix.go
! 8c1c22ade332d76321645c6253d7ff80  libgo/go/math/abs.go
! 77cd0766e488aa3cead23ff72420cf0c  libgo/go/math/acosh.go
! 64c2e1fb6d496e1c7d8a6f267b89eae0  libgo/go/math/all_test.go
! 1d52606e0a7a681bc35c0eadcf50f3ad  libgo/go/math/arith_s390x.go
! b216fc46e766d0fde74ef8e793f8c260  libgo/go/math/arith_s390x_test.go
  ee47bed0f44643a86454d881fa472627  libgo/go/math/asin.go
! 202beeb02fcb55a040175eb046f6d646  libgo/go/math/asinh.go
! 446aafd9767f29ff1e631fb337600784  libgo/go/math/atan.go
  a38c5d81ae7b5fa0749743a1f6d19480  libgo/go/math/atan2.go
! a440424ed0a30a18c19ce526a8367b16  libgo/go/math/atanh.go
  9cb94919a8331c5ab3399fd04fce4a20  libgo/go/math/big/accuracy_string.go
! afcd63624976bb5517a697f5ba2e2c8c  libgo/go/math/big/arith.go
! 09148e480cc8e51ff0d2d2a4ab3e212a  libgo/go/math/big/arith_decl.go
! ded56421ae31c1d18401f5212e43d993  libgo/go/math/big/arith_decl_pure.go
  8c7cba4de43356093588dbd80f507959  libgo/go/math/big/arith_decl_s390x.go
! b2b77f4311a4f60ba914e75fa0f0890d  libgo/go/math/big/arith_s390x_test.go
! 2545a34225fa1c6abb2b7efa31a65f4e  libgo/go/math/big/arith_test.go
  531c8219fcaf9855deccc82027b58363  libgo/go/math/big/bits_test.go
! a53d4ed46d3182e690f0adb196af3fd3  libgo/go/math/big/calibrate_test.go
! 81782a9f7784d410b7d4b6279a46f772  libgo/go/math/big/decimal.go
  71f75a06e14c8c009d5777e5f897dbcd  libgo/go/math/big/decimal_test.go
  aacd9e49acb2bfbf4a6969b4712ee33e  libgo/go/math/big/doc.go
  8fa87b2a38f52e6841a0e05b01a6f531  libgo/go/math/big/example_rat_test.go
! 8fd5d8fe41602af2b4988357e7fa0ebb  libgo/go/math/big/float.go
! ec2a29bbe22550914371fc598fa8df11  libgo/go/math/big/float_test.go
  28af1f6d3e3d50d59a672bf87e2f53cf  libgo/go/math/big/floatconv.go
! 9edddc6f9c6bdd5d59aaeb2b4c7397b4  libgo/go/math/big/floatconv_test.go
  0afd2c0e99de087e8069c10834339dd7  libgo/go/math/big/floatexample_test.go
  b0f20b2822c486d8711bc0d0fabf33de  libgo/go/math/big/floatmarsh.go
  1342d35236c16a9eec0b7d92aaf70ad2  libgo/go/math/big/floatmarsh_test.go
  96554e10ee8ef818aa40c6e0730e12f5  libgo/go/math/big/ftoa.go
  6f756735158cadf1b9f9f4672b21a357  libgo/go/math/big/gcd_test.go
  fb40193bf8426b322ecf298d83723925  libgo/go/math/big/hilbert_test.go
! ccf8d6cc22d41898015b7fec6fbf7b2b  libgo/go/math/big/int.go
! 221a77b452d33320351e1d84a52bbc97  libgo/go/math/big/int_test.go
! 2c12fac278dc2612e7ebae547da308bc  libgo/go/math/big/intconv.go
! 63b511dd6c23df54fd05a7ec4aaf2837  libgo/go/math/big/intconv_test.go
! bd8e0bb7eca0096f2911315b657e50b3  libgo/go/math/big/intmarsh.go
  b27cdb7ccf9576445e7184aade97c6f8  libgo/go/math/big/intmarsh_test.go
! 54acb9f2fbf9d827d3a550c0648c3f64  libgo/go/math/big/nat.go
! e4729ec6a739286cafe2e06566d9e6ba  libgo/go/math/big/nat_test.go
! 180e8d45e16741b4988ae3489a26e3f4  libgo/go/math/big/natconv.go
! 21d287164f320dd5a6c5eb5c0eaf35ae  libgo/go/math/big/natconv_test.go
! 9ff6078b8f324816a8a1a659f236fa9d  libgo/go/math/big/prime.go
! de3845f6a7f042dc199410b9ac250301  libgo/go/math/big/prime_test.go
! c1cffc25070915f79e5e506f35bf063c  libgo/go/math/big/rat.go
  64368a7c218b7bf66cfffba079972437  libgo/go/math/big/rat_test.go
! 8a2df32bc2d4b5ee92c97e4478d578ac  libgo/go/math/big/ratconv.go
  89e59791fe148831573d269b3472935c  libgo/go/math/big/ratconv_test.go
! f88ba196d13be26000b3b59b6f4011d8  libgo/go/math/big/ratmarsh.go
  3baa3e326bed1bcbda3688e0a423defb  libgo/go/math/big/ratmarsh_test.go
  21a5ec406c92a94eb0a2474b01368ba7  libgo/go/math/big/roundingmode_string.go
! ddf709091739c5322f72831e3ce18064  libgo/go/math/bits.go
! e014820483b4a5b10f94935e06bbe219  libgo/go/math/cbrt.go
  400bac022849ee5bc5e3e03de5e2d076  libgo/go/math/cmplx/abs.go
! 89f3b0ac4237b532fb7189c6593f91e3  libgo/go/math/cmplx/asin.go
! f516b9530e4e71b5d83c727e36eb9a3f  libgo/go/math/cmplx/cmath_test.go
  1928eb52ae51818eb4897ba32fde3792  libgo/go/math/cmplx/conj.go
  692f16c63205058d5aa78573a12e3786  libgo/go/math/cmplx/example_test.go
  0204d5c5dc63ea204583dd4d1034b2e9  libgo/go/math/cmplx/exp.go
--- 66866,66958 ----
  7e02e4328ef6c48475cb0276d01330cc  libgo/go/internal/trace/testdata/stress_1_7_good
  3328c5cb947f05562e3560c414174b0a  libgo/go/internal/trace/testdata/stress_start_stop_1_5_good
  c4fbaf5d300d81134153d78fe396039a  libgo/go/internal/trace/testdata/stress_start_stop_1_7_good
! 47bdba8ca1a18b87daae1a9fab5f18f3  libgo/go/internal/trace/writer.go
! e805be2344fe047eec607d87a7dbc91f  libgo/go/io/example_test.go
! e4a69acb55d4ee96197af900d7076d20  libgo/go/io/io.go
! d4c431d6ce26a7da97df79772ca8b904  libgo/go/io/io_test.go
! 45203cdb848c2fe686d870b73abab58a  libgo/go/io/ioutil/example_test.go
! abd9a5ddeafd86dab2845db771728418  libgo/go/io/ioutil/ioutil.go
  63ed9cb1cba20f3251490e2140b79f0d  libgo/go/io/ioutil/ioutil_test.go
  2c4fc5764d5559588e9e78db1c6d656c  libgo/go/io/ioutil/tempfile.go
! 5f8191033a4d60918623e1a3df768da8  libgo/go/io/ioutil/tempfile_test.go
! dbc2a44616cb2091eadd05a9e84e6fde  libgo/go/io/multi.go
! 4eb3345a06892831dba6e489049d8ec6  libgo/go/io/multi_test.go
! 7b302e266b323f258cb34be373b5d655  libgo/go/io/pipe.go
! f0ac47b2b2de418db7077cade5fec7cd  libgo/go/io/pipe_test.go
! a4212cda354ed3e15390c496b0e18149  libgo/go/log/log.go
! dd4321098f8e104dfb94ae4f7cc85d96  libgo/go/log/log_test.go
  48018f9535d45bfbbb4cf4fe25b571e6  libgo/go/log/syslog/doc.go
  5b9676df601a12e01e560b4618defaf7  libgo/go/log/syslog/example_test.go
! 296bf38fba66d2a9bf88b9f3fe7df0db  libgo/go/log/syslog/syslog.go
  539acc0320961711b88dbcc4b9cb3e49  libgo/go/log/syslog/syslog_c.c
  9f42a14ed1130e5bfb22285493c519c5  libgo/go/log/syslog/syslog_libc.go
  e2d098e076780a8b17bee11415d711e8  libgo/go/log/syslog/syslog_test.go
! 222f806a0f70ff3fb4a37b2efb9087be  libgo/go/log/syslog/syslog_unix.go
! bc0baa61ecd6897de3da3edb0f016806  libgo/go/math/abs.go
! 2fd331f8a07f89c4dd0fb1a0985231fc  libgo/go/math/acosh.go
! 96d367a53a2ec37885b7b3af093b99e1  libgo/go/math/all_test.go
! b340ed44fe78ca48252eba26043fd57d  libgo/go/math/arith_s390x.go
! bfecc5023664f4f5f590e1622c616030  libgo/go/math/arith_s390x_test.go
  ee47bed0f44643a86454d881fa472627  libgo/go/math/asin.go
! 56391c66d4b1272044c0b6e3be60a5a6  libgo/go/math/asinh.go
! 7ed813f8adb78ab5634b5b83e9474461  libgo/go/math/atan.go
  a38c5d81ae7b5fa0749743a1f6d19480  libgo/go/math/atan2.go
! 1a21b8de6f753a2af01c2c1bf116bc92  libgo/go/math/atanh.go
  9cb94919a8331c5ab3399fd04fce4a20  libgo/go/math/big/accuracy_string.go
! d0fed353f3144e9906c1c69e4183a54a  libgo/go/math/big/arith.go
! 8c437ca4b8a36f923021da51ba4004dd  libgo/go/math/big/arith_decl.go
! 8017dbb9f048823d6377e8ed8546c5e3  libgo/go/math/big/arith_decl_pure.go
  8c7cba4de43356093588dbd80f507959  libgo/go/math/big/arith_decl_s390x.go
! 8726925a09e7aaebd730029ade39c9aa  libgo/go/math/big/arith_s390x_test.go
! 2cecf665e0672b3a1c30a5a8ddfac6fe  libgo/go/math/big/arith_test.go
  531c8219fcaf9855deccc82027b58363  libgo/go/math/big/bits_test.go
! 5889f10c5959c90c356d46b1e4f2c8ce  libgo/go/math/big/calibrate_test.go
! 7441f413fd175be344ef87098768e583  libgo/go/math/big/decimal.go
  71f75a06e14c8c009d5777e5f897dbcd  libgo/go/math/big/decimal_test.go
  aacd9e49acb2bfbf4a6969b4712ee33e  libgo/go/math/big/doc.go
  8fa87b2a38f52e6841a0e05b01a6f531  libgo/go/math/big/example_rat_test.go
! ab39f35edc3b45c7a0cc73f0319f3197  libgo/go/math/big/float.go
! 981544ac1a316efc3286fd2a7e3838d3  libgo/go/math/big/float_test.go
  28af1f6d3e3d50d59a672bf87e2f53cf  libgo/go/math/big/floatconv.go
! 6ee3e15260b18e8787024e11b15195e6  libgo/go/math/big/floatconv_test.go
  0afd2c0e99de087e8069c10834339dd7  libgo/go/math/big/floatexample_test.go
  b0f20b2822c486d8711bc0d0fabf33de  libgo/go/math/big/floatmarsh.go
  1342d35236c16a9eec0b7d92aaf70ad2  libgo/go/math/big/floatmarsh_test.go
  96554e10ee8ef818aa40c6e0730e12f5  libgo/go/math/big/ftoa.go
  6f756735158cadf1b9f9f4672b21a357  libgo/go/math/big/gcd_test.go
  fb40193bf8426b322ecf298d83723925  libgo/go/math/big/hilbert_test.go
! 43da8fdd1b849fc34aee8d5831d2e60a  libgo/go/math/big/int.go
! f8f2421a9df950f811185bec0055276b  libgo/go/math/big/int_test.go
! f78cd5620e002f2038546b5e98e0a3ed  libgo/go/math/big/intconv.go
! 876fe1fe332ab1a922d104a5ed6ccd26  libgo/go/math/big/intconv_test.go
! f83cd650bde6dc9a8c2485bf06444de2  libgo/go/math/big/intmarsh.go
  b27cdb7ccf9576445e7184aade97c6f8  libgo/go/math/big/intmarsh_test.go
! 205bc268daf4cb84859e462e23deba61  libgo/go/math/big/nat.go
! b624e9526abe55fd36c9e43e070866c4  libgo/go/math/big/nat_test.go
! aafcbfec19d076193cdcc2c5dbe6d60d  libgo/go/math/big/natconv.go
! ddab0af02a6907df83e9e082c28738b2  libgo/go/math/big/natconv_test.go
! df3d8c5a7ee99e8061b2d7ef77be793b  libgo/go/math/big/prime.go
! 6e83c22b4f9a2667d6ab46ec5214953a  libgo/go/math/big/prime_test.go
! 8ac07069ccc47eb42c8f42db2d539e14  libgo/go/math/big/rat.go
  64368a7c218b7bf66cfffba079972437  libgo/go/math/big/rat_test.go
! 1924c9a94a15fe279566fa2af90eeac5  libgo/go/math/big/ratconv.go
  89e59791fe148831573d269b3472935c  libgo/go/math/big/ratconv_test.go
! 007fbce07bd46fbd343213a0c490069a  libgo/go/math/big/ratmarsh.go
  3baa3e326bed1bcbda3688e0a423defb  libgo/go/math/big/ratmarsh_test.go
  21a5ec406c92a94eb0a2474b01368ba7  libgo/go/math/big/roundingmode_string.go
! 19582808516d605a30e7bade32387878  libgo/go/math/big/sqrt.go
! c80f1846853ac8d0da81997cb90e28d1  libgo/go/math/big/sqrt_test.go
! 9e18366ae7543837f4de3a42b1f81755  libgo/go/math/bits.go
! 0b9bd12a93b7481b2270e72ef4e02a0c  libgo/go/math/bits/bits.go
! 24d83bc55817368d8e63f142c930b5d6  libgo/go/math/bits/bits_tables.go
! f2ea3f7cbe18fd4404e48eb1b6aca689  libgo/go/math/bits/bits_test.go
! 5d8c1c375da2ea3b5ef8d933de716ef1  libgo/go/math/bits/example_test.go
! 0da0bec26f46d959a2daa7413c5407b2  libgo/go/math/bits/make_examples.go
! 4004e5d9d547e5fe2ad42896c0708962  libgo/go/math/bits/make_tables.go
! e50f00b43d394a0cc319719168e913fd  libgo/go/math/cbrt.go
  400bac022849ee5bc5e3e03de5e2d076  libgo/go/math/cmplx/abs.go
! b0a0aa26b59448a782575f89831e5785  libgo/go/math/cmplx/asin.go
! 13a13936069a6167ffd189ba60162629  libgo/go/math/cmplx/cmath_test.go
  1928eb52ae51818eb4897ba32fde3792  libgo/go/math/cmplx/conj.go
  692f16c63205058d5aa78573a12e3786  libgo/go/math/cmplx/example_test.go
  0204d5c5dc63ea204583dd4d1034b2e9  libgo/go/math/cmplx/exp.go
*************** e9d3a2acfcb8f7aa22d34d60051dfc1e  libgo/
*** 62607,62672 ****
  8cbdd096f6634d12326df4683d26fd38  libgo/go/math/cmplx/pow.go
  7565544ab9a0ce7b52dfa406942bf593  libgo/go/math/cmplx/rect.go
  8286e3a435bb8c5bc60aa2b37bdf97db  libgo/go/math/cmplx/sin.go
! 8510d75009f72435a10041c17b1a9aab  libgo/go/math/cmplx/sqrt.go
  1cf3f2b5965186ea49fbf8dba54eeb36  libgo/go/math/cmplx/tan.go
! a1ff420e592379aea3fe64678edf53a8  libgo/go/math/const.go
  6996ff601a059b6529b5623dd0cd9cfe  libgo/go/math/copysign.go
! cbe9f99ed478023d78db97d708c049a1  libgo/go/math/dim.go
! d4fca7c2e4b4799072e044f741a55a20  libgo/go/math/erf.go
! 7fa2b27b460c3671b07cd212865f2a66  libgo/go/math/exp.go
! 8aa04fdf18f2d9728f78883985687608  libgo/go/math/expm1.go
! fadbe63a1bf298b59b599a752d37076e  libgo/go/math/export_s390x_test.go
  57ad0bb1e32e7306520b884e084f73a6  libgo/go/math/export_test.go
! bbefd764c349866598d34f7fd55ea82f  libgo/go/math/floor.go
! 8afc0957e8dc469f72904ddf4f193fa7  libgo/go/math/floor_asm.go
  4822cff972ca61cb955c6f6a36c2cc62  libgo/go/math/frexp.go
  9fee9eb1c4a27bde46ff9f47068ebc61  libgo/go/math/gamma.go
  99b6843725de4108099d5616fe1e1a33  libgo/go/math/hypot.go
  1a6708c0fb31fbcc20c1c50115cb4052  libgo/go/math/j0.go
  4c52297fee3f518c876534837306f0cf  libgo/go/math/j1.go
! a2a973f02841e825b0d5744cdc70f6a4  libgo/go/math/jn.go
! a346eb6265d33d1d03a2a0541a93d1dd  libgo/go/math/ldexp.go
  80b1dfc821a28e80c6dab8cdd8826120  libgo/go/math/lgamma.go
  6d248032462e296f305c0b8c9b14b355  libgo/go/math/log.go
  e07dbaf31b13d9cf786d4152690f2f77  libgo/go/math/log10.go
! 7fa782d51fb8a9c09ba2fe1803990ba0  libgo/go/math/log1p.go
  664e5b5d5a8d19bc2e7c91d3d980b67b  libgo/go/math/logb.go
  f775349b41104ab1d9a5796356f75fd6  libgo/go/math/mod.go
  870939d9b36a60ab96b01e95dd35adb2  libgo/go/math/modf.go
  4e7fefbb1739124aeff8c2e89658f153  libgo/go/math/nextafter.go
! 5c3b8630645320c3a5fc598aafe8cc09  libgo/go/math/pow.go
! 2cf31073c2b9d9b72520fe905306e01a  libgo/go/math/pow10.go
  df6b820f38f3fc266144d16294666cad  libgo/go/math/rand/exp.go
  f0a2035e6576998cb08c75753901c152  libgo/go/math/rand/gen_cooked.go
  f494cbe6b2548dae6f26cf4fb4a03b3a  libgo/go/math/rand/normal.go
  8073c269d6f074828a9db5f28229f721  libgo/go/math/rand/race_test.go
! f6dcb500e5a90196f3cdb6b2ae71d96a  libgo/go/math/rand/rand.go
! b9a5b9f0836e6791d5e7c92283160be1  libgo/go/math/rand/rand_test.go
  d0f2d7d2275e53f65b00e6953b618902  libgo/go/math/rand/regress_test.go
  2e62533b1a509766836a9bf39dacb08a  libgo/go/math/rand/rng.go
  c59029181577bcda5df58a7de276fa63  libgo/go/math/rand/zipf.go
  15f1fa699919be93d9e5e95125f35f3f  libgo/go/math/remainder.go
  be95fcee6784fe2c493051d6ca0c6dab  libgo/go/math/signbit.go
  b5da4eb0e0418770559ed7e40949682d  libgo/go/math/sin.go
! e56c5b5aba7902221bb0d345210520d2  libgo/go/math/sincos.go
  6c193bb2ec61202105f16f3e7937855b  libgo/go/math/sinh.go
  ad97db28333c0a8d0a47314dcfcdb7cd  libgo/go/math/sqrt.go
  8fb93979fefe83a4d6da51eba5a36553  libgo/go/math/tan.go
  e3e199dca9ef50f00e69d686f499c2a1  libgo/go/math/tanh.go
  4103ff95b1987b7619ca55fad881ed7f  libgo/go/math/unsafe.go
! 2f5ee0bdbc07ec7717e129c4b3b7d254  libgo/go/mime/encodedword.go
! 686b7dbec987577a0af8ca7173ef3f0b  libgo/go/mime/encodedword_test.go
  141277d075f9015d4af082435340faf5  libgo/go/mime/example_test.go
  e646cecd5158e36054301b0bb6704adf  libgo/go/mime/grammar.go
! caecbeeac7f02b6cdc38c62e323337a2  libgo/go/mime/mediatype.go
! 40bf9470bccf62168c2d12d4fe6e3f7e  libgo/go/mime/mediatype_test.go
! e334861412165070f200b94229fe52f8  libgo/go/mime/multipart/formdata.go
! 3f2aadd8c580c5baab3176152f9889a1  libgo/go/mime/multipart/formdata_test.go
  0d4fa3caefa7405ae52593e6edf98f39  libgo/go/mime/multipart/multipart.go
  476050d983b5c650e41eadf164166eee  libgo/go/mime/multipart/multipart_test.go
  ea13f3c87e9a921a7368f85cd6ae67d3  libgo/go/mime/multipart/testdata/nested-mime
! e775283998015379695dfab6160634eb  libgo/go/mime/multipart/writer.go
! 736afcacdf91e8916f163af7b7480a6c  libgo/go/mime/multipart/writer_test.go
  3612f09d2d1ecc54db8b0fbea8ede97f  libgo/go/mime/quotedprintable/example_test.go
  7b6e7b243bd459c9de17099e880f3cad  libgo/go/mime/quotedprintable/reader.go
  e625e87a6619a5c640666ef771b2e1c1  libgo/go/mime/quotedprintable/reader_test.go
--- 66964,67033 ----
  8cbdd096f6634d12326df4683d26fd38  libgo/go/math/cmplx/pow.go
  7565544ab9a0ce7b52dfa406942bf593  libgo/go/math/cmplx/rect.go
  8286e3a435bb8c5bc60aa2b37bdf97db  libgo/go/math/cmplx/sin.go
! c74550f284f8b4ad74386be6b1028382  libgo/go/math/cmplx/sqrt.go
  1cf3f2b5965186ea49fbf8dba54eeb36  libgo/go/math/cmplx/tan.go
! 76d51d6b78a918eb58974d3e180a1551  libgo/go/math/const.go
  6996ff601a059b6529b5623dd0cd9cfe  libgo/go/math/copysign.go
! 46c69e6939df96f2ead0127fd151cdc6  libgo/go/math/dim.go
! c696310a2a108fa2532395d36ccc7646  libgo/go/math/erf.go
! 83bce50f2a4801db5e75bd1f12f5634c  libgo/go/math/erfinv.go
! a122b90b33a5370e1d8dc09bc3362241  libgo/go/math/example_test.go
! 68c9f1cc4d8457a9a5f9622af53e7d8f  libgo/go/math/exp.go
! 5315fd7c6fa3c84976ccef4ca2312d38  libgo/go/math/exp_asm.go
! fb4b108669e64f9b5aea823c43a9a367  libgo/go/math/expm1.go
! f79fd24d6f9a8693688cdb5dfe744990  libgo/go/math/export_s390x_test.go
  57ad0bb1e32e7306520b884e084f73a6  libgo/go/math/export_test.go
! 6facf67e8c14558f364641464e7280ac  libgo/go/math/floor.go
! 3a339ea22235b0336628a4d47dc63a4f  libgo/go/math/floor_asm.go
  4822cff972ca61cb955c6f6a36c2cc62  libgo/go/math/frexp.go
  9fee9eb1c4a27bde46ff9f47068ebc61  libgo/go/math/gamma.go
  99b6843725de4108099d5616fe1e1a33  libgo/go/math/hypot.go
  1a6708c0fb31fbcc20c1c50115cb4052  libgo/go/math/j0.go
  4c52297fee3f518c876534837306f0cf  libgo/go/math/j1.go
! 8e94bf127ff998e2032acfc07deec456  libgo/go/math/jn.go
! e87ee1c73e3d9366c8bb61028e8f8f62  libgo/go/math/ldexp.go
  80b1dfc821a28e80c6dab8cdd8826120  libgo/go/math/lgamma.go
  6d248032462e296f305c0b8c9b14b355  libgo/go/math/log.go
  e07dbaf31b13d9cf786d4152690f2f77  libgo/go/math/log10.go
! 0ee70b1f74275c79f7cc4429ea1a2661  libgo/go/math/log1p.go
  664e5b5d5a8d19bc2e7c91d3d980b67b  libgo/go/math/logb.go
  f775349b41104ab1d9a5796356f75fd6  libgo/go/math/mod.go
  870939d9b36a60ab96b01e95dd35adb2  libgo/go/math/modf.go
  4e7fefbb1739124aeff8c2e89658f153  libgo/go/math/nextafter.go
! 13961c6d2447132bf569b5f7c46fb9fe  libgo/go/math/pow.go
! 68f05dfe608033365773b29625d8a6fd  libgo/go/math/pow10.go
  df6b820f38f3fc266144d16294666cad  libgo/go/math/rand/exp.go
  f0a2035e6576998cb08c75753901c152  libgo/go/math/rand/gen_cooked.go
  f494cbe6b2548dae6f26cf4fb4a03b3a  libgo/go/math/rand/normal.go
  8073c269d6f074828a9db5f28229f721  libgo/go/math/rand/race_test.go
! a690670054eeabd041502320cb6bf95f  libgo/go/math/rand/rand.go
! 891cef2a5cb3e95e471a0a8a67076258  libgo/go/math/rand/rand_test.go
  d0f2d7d2275e53f65b00e6953b618902  libgo/go/math/rand/regress_test.go
  2e62533b1a509766836a9bf39dacb08a  libgo/go/math/rand/rng.go
  c59029181577bcda5df58a7de276fa63  libgo/go/math/rand/zipf.go
  15f1fa699919be93d9e5e95125f35f3f  libgo/go/math/remainder.go
  be95fcee6784fe2c493051d6ca0c6dab  libgo/go/math/signbit.go
  b5da4eb0e0418770559ed7e40949682d  libgo/go/math/sin.go
! 174bd0cccab6142c5cc5c0cbe2ccd5c2  libgo/go/math/sincos.go
! dd28a7573580f1e242d01be10c615c16  libgo/go/math/sincos_386.go
  6c193bb2ec61202105f16f3e7937855b  libgo/go/math/sinh.go
  ad97db28333c0a8d0a47314dcfcdb7cd  libgo/go/math/sqrt.go
  8fb93979fefe83a4d6da51eba5a36553  libgo/go/math/tan.go
  e3e199dca9ef50f00e69d686f499c2a1  libgo/go/math/tanh.go
  4103ff95b1987b7619ca55fad881ed7f  libgo/go/math/unsafe.go
! bf12ec0caa88bca4c099d3c007e461dd  libgo/go/mime/encodedword.go
! 1e5eb3e828b05d4b7b9dfce0b37a7a6e  libgo/go/mime/encodedword_test.go
  141277d075f9015d4af082435340faf5  libgo/go/mime/example_test.go
  e646cecd5158e36054301b0bb6704adf  libgo/go/mime/grammar.go
! 373fd96b3cb2f08c71288ea6ffddefa4  libgo/go/mime/mediatype.go
! 31d250e3f67451492d5074d0e26fe4a5  libgo/go/mime/mediatype_test.go
! 3f9626ffb5308df829fc4947e38adf15  libgo/go/mime/multipart/formdata.go
! 474ec1fa836f92fcc4196b9fa1e80cc1  libgo/go/mime/multipart/formdata_test.go
  0d4fa3caefa7405ae52593e6edf98f39  libgo/go/mime/multipart/multipart.go
  476050d983b5c650e41eadf164166eee  libgo/go/mime/multipart/multipart_test.go
  ea13f3c87e9a921a7368f85cd6ae67d3  libgo/go/mime/multipart/testdata/nested-mime
! fda034715727f8bb6ac0134d6c9e7528  libgo/go/mime/multipart/writer.go
! 41805ca6489ce36835cbfb18359b14bc  libgo/go/mime/multipart/writer_test.go
  3612f09d2d1ecc54db8b0fbea8ede97f  libgo/go/mime/quotedprintable/example_test.go
  7b6e7b243bd459c9de17099e880f3cad  libgo/go/mime/quotedprintable/reader.go
  e625e87a6619a5c640666ef771b2e1c1  libgo/go/mime/quotedprintable/reader_test.go
*************** e625e87a6619a5c640666ef771b2e1c1  libgo/
*** 62675,62842 ****
  d7c2d693b83d74f542553f24afe3d013  libgo/go/mime/test.types
  d7c2d693b83d74f542553f24afe3d013  libgo/go/mime/testdata/test.types
  452e5eefd1071c8538b9315a6439994f  libgo/go/mime/testdata/test.types.plan9
! 27921c67f29d199acd7c6f66d70838b6  libgo/go/mime/type.go
  38cd804ecac4484ac521d769afedbefb  libgo/go/mime/type_dragonfly.go
  38cd804ecac4484ac521d769afedbefb  libgo/go/mime/type_freebsd.go
  eaef28a4e56cbee96692095f999e83f8  libgo/go/mime/type_openbsd.go
  5decf13646968cfa0292bce1e80d78da  libgo/go/mime/type_plan9.go
! 2e201a467c035cfea75a751735eb416e  libgo/go/mime/type_test.go
! ed8de65c6ab89e09cde2f727376313cd  libgo/go/mime/type_unix.go
  1a352a7ae6c8d9a9af3e85230e27c578  libgo/go/mime/type_windows.go
! 49f4cf2b48b634e712d065e3aeec24dd  libgo/go/net/addrselect.go
  01ac05b156fb4f4a65d2b8ff1b48d7bc  libgo/go/net/addrselect_test.go
  f7079b64aa3fe7192ad3ce4383a3c84e  libgo/go/net/cgo_android.go
  d9a30acea51cd178a93915ab1348f134  libgo/go/net/cgo_bsd.go
  58e7d96fd75c58122947481411649233  libgo/go/net/cgo_linux.go
  9e7f9e047965ebfd6d418cfd9b392b57  libgo/go/net/cgo_netbsd.go
  73d025a08469d0c2e9682cce11da59a2  libgo/go/net/cgo_openbsd.go
! 4364a74eb54cccdd1bdba491c4cbfa83  libgo/go/net/cgo_resnew.go
  964377dc305c8eec76449ee353a10616  libgo/go/net/cgo_resold.go
  a40b11b7e620d7da9f650f3c85e94228  libgo/go/net/cgo_socknew.go
! a0d42229c77a2034041ebe084f9f3f38  libgo/go/net/cgo_sockold.go
  45143e812d7fea77d7cba8db0a5634a1  libgo/go/net/cgo_solaris.go
  bd9aa4b0c3705d54d8b599f7182f49a7  libgo/go/net/cgo_stub.go
! 8e1da507e548fd31501175eedb6126a8  libgo/go/net/cgo_unix.go
! 3b8edace8a24c9646c61c8eb8407d9f3  libgo/go/net/cgo_unix_test.go
  1ae0c51bf7a5c7e6cc4577b948752c13  libgo/go/net/cgo_windows.go
! b28dbb7a53ddd0834d4056a8ad072aa6  libgo/go/net/conf.go
  5ac9aff1490640627a495d3645b2d715  libgo/go/net/conf_netcgo.go
  d5cc36c28c556a37d8877b234e2605ae  libgo/go/net/conf_test.go
  7b1d1c148f903b5cf9c1a8191616608b  libgo/go/net/conn_test.go
! 9d5db26f780e7242080ac6c4f79c9fcf  libgo/go/net/dial.go
! bb3f07c36f59f043a8b104350a5d9920  libgo/go/net/dial_test.go
! 71dc003d4c464d4dea19551dea1fd94b  libgo/go/net/dial_unix_test.go
  5bfe8e4c56e88204f7cdb613d850d75f  libgo/go/net/dnsclient.go
  7a4aac144286deb235b458f4d834d775  libgo/go/net/dnsclient_test.go
! 6d22063a1a5ca977b1d69863af9de6ba  libgo/go/net/dnsclient_unix.go
! b8ac8391b2502651d971e936bfcd2b81  libgo/go/net/dnsclient_unix_test.go
! f15fcd4972e357f259e214beb362702d  libgo/go/net/dnsconfig_unix.go
! 4a3296dbff292ac592bf14a2a99dc0bc  libgo/go/net/dnsconfig_unix_test.go
  8d344cb164337f795334190eec683eb6  libgo/go/net/dnsmsg.go
  2e5c37fcc9bdf4b7ddd9cae36f2b3e12  libgo/go/net/dnsmsg_test.go
  167768ac292dccd38032406853ff77ec  libgo/go/net/dnsname_test.go
  b8b3b08358f6c9491bd4480a65429bdb  libgo/go/net/error_plan9_test.go
  56b5bea56d7c6395d2494e5f8ae5fcaf  libgo/go/net/error_posix_test.go
! 9f651f6e0cfa6472a3f955e6c29b0973  libgo/go/net/error_test.go
  8d6e3589f7b3eb6ee9a5f60053166e9a  libgo/go/net/error_unix_test.go
  63f0353da8d8fce76096c47f4d2d6441  libgo/go/net/error_windows_test.go
! 4d4cf5cae85d4d78b413a5fc17bff66b  libgo/go/net/external_test.go
! c0add9d58201b3f587d27913bc39f6fb  libgo/go/net/fd_io_plan9.go
! 18a9f21cd52b508a6e17e9bb8473435c  libgo/go/net/fd_mutex.go
! 1487440278d977734f1e7b140c79d573  libgo/go/net/fd_mutex_test.go
! e1ba00594244dc1c8aba22e1f56fee10  libgo/go/net/fd_plan9.go
! 23e427831bb351f0d9ede3a2183f89bb  libgo/go/net/fd_poll_nacl.go
! 6c3fbc3ce4ebec0f52b21287c45d31a8  libgo/go/net/fd_poll_runtime.go
! 61749f1099e84f71728d151b2ecdf1fa  libgo/go/net/fd_posix.go
! f255a947de60df9e62b21f041a60d8bf  libgo/go/net/fd_posix_test.go
! 1782e283a3999d2d217e90a6c1377835  libgo/go/net/fd_unix.go
! 848e1a8e1d5b6f35067e685b5da73715  libgo/go/net/fd_windows.go
  30807e93edcd59f26692e6cb050eaf85  libgo/go/net/file.go
  7004487db6e4771ad0f4ad121c83ced2  libgo/go/net/file_plan9.go
  f9415afce0864ae4633a2257a00ea4bf  libgo/go/net/file_stub.go
! c87d9560a64d114e665f5e4489a50d43  libgo/go/net/file_test.go
! ff88e89f43e8323ec819b84da9724aa5  libgo/go/net/file_unix.go
  30876c1c5f58de3543d36ef2d38f4825  libgo/go/net/file_windows.go
  6ad33c4748d48cd5f47991e8ef92703c  libgo/go/net/hook.go
- 8c8b87609df0556790eb864cdb39910b  libgo/go/net/hook_cloexec.go
  ab6b66c47d7fc39618c8a400cd48a24e  libgo/go/net/hook_plan9.go
! d6f61c2833c14e8780c8dc5f23461184  libgo/go/net/hook_unix.go
! 8723060f96f6317a133ff8b2ff505743  libgo/go/net/hook_windows.go
  689805d1fa254e2914f5bbba3406dee3  libgo/go/net/hosts.go
! d3b942ec54a2a0651c9459834f78aa65  libgo/go/net/hosts_test.go
  77e1fec0f3af1cf49701683f11039637  libgo/go/net/hosts_testdata
  a50997c6e1686b5181a63d3113e58d79  libgo/go/net/http/cgi/child.go
  896d96bfbe8932bb87f8f91e61d2d4f7  libgo/go/net/http/cgi/child_test.go
  2f07c6f437396b1cd4f097a1efdddd8e  libgo/go/net/http/cgi/host.go
! b01fe4dc043ee07c410292091531d3eb  libgo/go/net/http/cgi/host_test.go
  55235ba80956fbb63247fbd3ef035e72  libgo/go/net/http/cgi/matryoshka_test.go
! 15916237881c26dbdd88c6464608d191  libgo/go/net/http/cgi/posix_test.go
  d7e85fa43c940035f4594614307de77a  libgo/go/net/http/cgi/testdata/test.cgi
! 93313905238a88f138b22e0a4eb34039  libgo/go/net/http/client.go
! 68e3bf8f4d5966e8293684f2c3b059cf  libgo/go/net/http/client_test.go
! f0c245544bb4b5fbc652635596b7854a  libgo/go/net/http/clientserver_test.go
! a4f28920bddae7078f6f63266274d8f0  libgo/go/net/http/cookie.go
! 0d64900e99020d7cb88718d24b41ddec  libgo/go/net/http/cookie_test.go
  803cd7a603598327094e9145d83224e1  libgo/go/net/http/cookiejar/dummy_publicsuffix_test.go
  bf105227a44b4517dc01599b5ba37d94  libgo/go/net/http/cookiejar/example_test.go
! bb4f5a4bf723a0daed7b58ace6376fd3  libgo/go/net/http/cookiejar/jar.go
! 297bc6c05c9ff31981119a605bfec77d  libgo/go/net/http/cookiejar/jar_test.go
  7aea102b9b4298e12caa878e7e70f330  libgo/go/net/http/cookiejar/punycode.go
  fabfb997332db4db285c4a3beaa6d742  libgo/go/net/http/cookiejar/punycode_test.go
  b50423cb8972e513fc81006625211254  libgo/go/net/http/doc.go
! fa4ef44680656e6cfe48d8b6cb7d01c9  libgo/go/net/http/example_test.go
! ceea0cb8225acca2efcf22d039ad6b3f  libgo/go/net/http/export_test.go
! 404e7c32c886f674de9965c1b28c7e27  libgo/go/net/http/fcgi/child.go
! 753b293fbf80b71a5b2bbc5fa6cb4b6d  libgo/go/net/http/fcgi/fcgi.go
! 759c13aac92c51afba07f254d191b8d9  libgo/go/net/http/fcgi/fcgi_test.go
  8f307dd7176f148925a44be015c37dba  libgo/go/net/http/filetransport.go
! 2bf97b4fbbfe4b8828ad513902192c85  libgo/go/net/http/filetransport_test.go
! f3ba82261f84904b15da51cbb83be192  libgo/go/net/http/fs.go
! 0a2a8563d70ef51354bd7cfcdeca26b6  libgo/go/net/http/fs_test.go
! e138fa58ee4998da8e329cb106df2980  libgo/go/net/http/h2_bundle.go
! c5e5e2ba8d5aae060571b514e229ed68  libgo/go/net/http/header.go
  a3668ebb380cb55bfa65a5404e7e5d3b  libgo/go/net/http/header_test.go
  9b7492afe9b043e78b2c14069edb43a7  libgo/go/net/http/http.go
  cc03bc0eab3ced6dae94768106c7dff0  libgo/go/net/http/http_test.go
  753b35f46ca755bbee4f49c46550bd56  libgo/go/net/http/httptest/httptest.go
  2b2722e4e80aa842828a2be0355b5e89  libgo/go/net/http/httptest/httptest_test.go
! 7101964a74d979e9745907bd8ceedfdb  libgo/go/net/http/httptest/recorder.go
! a21e2588da5795539e51d1ba3e0a356b  libgo/go/net/http/httptest/recorder_test.go
! 334ca1ba3676eaaad405eb05149649d2  libgo/go/net/http/httptest/server.go
! 3cc3bd2e8fa253aae639a0168c4a9924  libgo/go/net/http/httptest/server_test.go
  55f477ffc1c0f1b304584410a0feb720  libgo/go/net/http/httptrace/example_test.go
  351213f6fd0adb7f3458c0e4aed65ff7  libgo/go/net/http/httptrace/trace.go
  bb2a61d61c614a20bfdef885c91bb578  libgo/go/net/http/httptrace/trace_test.go
  804067d0622c038d5ce3aba387374778  libgo/go/net/http/httputil/dump.go
! e483b4ef63d360addb4058ed8ec7d8b3  libgo/go/net/http/httputil/dump_test.go
  666ad46f0df15ca49f1e27e140e96b57  libgo/go/net/http/httputil/example_test.go
  ca4acf017204dbc4b858f2b9ce3dd75c  libgo/go/net/http/httputil/httputil.go
  dbe85aba81ce0f44dbad46e06bd1a307  libgo/go/net/http/httputil/persist.go
! 053f563555f6bb301a40f9343aa680a1  libgo/go/net/http/httputil/reverseproxy.go
! 83ed0eb027d39b42f0bda2d90b2cb347  libgo/go/net/http/httputil/reverseproxy_test.go
  b82e509a97473beff04dfbd14467e006  libgo/go/net/http/internal/chunked.go
  9b9252666bb5bfc6b6bd22b8ed065237  libgo/go/net/http/internal/chunked_test.go
  6841203c1c36fa4fe4f17657eb2147a9  libgo/go/net/http/internal/testcert.go
  0f1b2ae9b087721dc8d532479b919c2e  libgo/go/net/http/jar.go
! 34efa322c74cef8fa6708c6ebff66320  libgo/go/net/http/main_test.go
  5b196501ffa7d98bd91bcb0561952a22  libgo/go/net/http/method.go
! 44764dba8a55410cafadf67a3eeff9a7  libgo/go/net/http/npn_test.go
! f9c3ba86a2f2a57b7b577ac40a5a88f1  libgo/go/net/http/pprof/pprof.go
! 44ca0902fb83657fec1a64de8b7aa3df  libgo/go/net/http/proxy_test.go
  bc778695336037a6f56a25943af2066c  libgo/go/net/http/race.go
  9a78c894b9046071d6fd6ecaaaa1537b  libgo/go/net/http/range_test.go
! 59c498b129c971cc38136e007987975e  libgo/go/net/http/readrequest_test.go
! f82ed0ce7589aa50cc39056f3bb32bfc  libgo/go/net/http/request.go
! 1794e5331962a844285adc05ce1adb90  libgo/go/net/http/request_test.go
  b2fbcc0ce95ad2d88d89974bde26cfde  libgo/go/net/http/requestwrite_test.go
! ad6fc4a11dd914214272f1516aa3c6a0  libgo/go/net/http/response.go
! 19bb853bbc70625ab2c91d4da15051f4  libgo/go/net/http/response_test.go
  06f5252495a364cbb74825a589b7467c  libgo/go/net/http/responsewrite_test.go
! 9e0c560775eddb50e056d3d0a0ffe4fb  libgo/go/net/http/serve_test.go
! b2f15f7a66aae18cb6b3792ab6bb9a95  libgo/go/net/http/server.go
! 0e79087393a4632b3ab5cf97e35e948f  libgo/go/net/http/sniff.go
! 9ba4643eff48add208f16dccf649fe93  libgo/go/net/http/sniff_test.go
  1425ccaed8db3229ee08a87c139e3d55  libgo/go/net/http/status.go
  3749f52bb326ae96782b42dc0a97b4c1  libgo/go/net/http/testdata/file
  39bf3a5cbcd978e0d9a9bab0f27787b4  libgo/go/net/http/testdata/index.html
  746f7bd76da133c7035108d0053a7e79  libgo/go/net/http/testdata/style.css
! a24d95a7900914734deff40607686899  libgo/go/net/http/transfer.go
  3b1b2b15c165a6f2bc9af3e23bcf2b70  libgo/go/net/http/transfer_test.go
! dce3777acee39b9f194ff8b83d402ed9  libgo/go/net/http/transport.go
! f4b0e969a3ed227ce49110d1db92c765  libgo/go/net/http/transport_internal_test.go
! 7feb5658c34f9c1be2a5bbefec6bd7a2  libgo/go/net/http/transport_test.go
  016c99288f02c6d4397ef766350a8a9d  libgo/go/net/http/triv.go
! f27e357c7b29aa2a32f4933ee2f7dc21  libgo/go/net/interface.go
  91b84b5dcfb51004c825b3c6f3292729  libgo/go/net/interface_bsd.go
  639a547cbdb4318d00b11355d164832c  libgo/go/net/interface_bsdvar.go
  cb8160ad57db1d7ce08cfc4ec62a8387  libgo/go/net/interface_darwin.go
  17e5f0043d6d243361dd72ea80a6000e  libgo/go/net/interface_freebsd.go
! d60e888e83ebc3e00b5926ed5651f380  libgo/go/net/interface_linux.go
  0e4be9e09440a8bdba95badf9d7061fa  libgo/go/net/interface_plan9.go
  eb0724ae08cadeb97ef83eeb0c3b7cd1  libgo/go/net/interface_solaris.go
! 7f9586300bed1fb8044b4c96303d8b28  libgo/go/net/interface_stub.go
! 4328e51f57ae72a40fef15a4d2cb113b  libgo/go/net/interface_test.go
! 3217e633ebc73d3e6a5bf79693937509  libgo/go/net/interface_windows.go
  0997a153e853c3f72d67314f869c2f57  libgo/go/net/interface_windows_test.go
  e6c8eb82a0a8c22a40db7ab0038c8ee1  libgo/go/net/internal/socktest/main_test.go
  fc0b137b84f7e17130db3d7b8f5dabb5  libgo/go/net/internal/socktest/main_unix_test.go
--- 67036,67197 ----
  d7c2d693b83d74f542553f24afe3d013  libgo/go/mime/test.types
  d7c2d693b83d74f542553f24afe3d013  libgo/go/mime/testdata/test.types
  452e5eefd1071c8538b9315a6439994f  libgo/go/mime/testdata/test.types.plan9
! aee74542baa99a9762f2bb351a94a07e  libgo/go/mime/type.go
  38cd804ecac4484ac521d769afedbefb  libgo/go/mime/type_dragonfly.go
  38cd804ecac4484ac521d769afedbefb  libgo/go/mime/type_freebsd.go
  eaef28a4e56cbee96692095f999e83f8  libgo/go/mime/type_openbsd.go
  5decf13646968cfa0292bce1e80d78da  libgo/go/mime/type_plan9.go
! 2b3e1d5d4f9d10216ec911eb6a95c663  libgo/go/mime/type_test.go
! 7544e78c332b76a8d5b8635c5dab64da  libgo/go/mime/type_unix.go
  1a352a7ae6c8d9a9af3e85230e27c578  libgo/go/mime/type_windows.go
! c6ee04c1f00c9ca003e35fa6c8f757b8  libgo/go/net/addrselect.go
  01ac05b156fb4f4a65d2b8ff1b48d7bc  libgo/go/net/addrselect_test.go
+ 9307247e641c97ad0f67a82ac8b9ef5b  libgo/go/net/cgo_aix.go
  f7079b64aa3fe7192ad3ce4383a3c84e  libgo/go/net/cgo_android.go
  d9a30acea51cd178a93915ab1348f134  libgo/go/net/cgo_bsd.go
  58e7d96fd75c58122947481411649233  libgo/go/net/cgo_linux.go
  9e7f9e047965ebfd6d418cfd9b392b57  libgo/go/net/cgo_netbsd.go
  73d025a08469d0c2e9682cce11da59a2  libgo/go/net/cgo_openbsd.go
! 4acd79993fa9b9d07260d410cf88f1f3  libgo/go/net/cgo_resnew.go
  964377dc305c8eec76449ee353a10616  libgo/go/net/cgo_resold.go
  a40b11b7e620d7da9f650f3c85e94228  libgo/go/net/cgo_socknew.go
! 448d8ca473991ead9fb8c22f2d0239b4  libgo/go/net/cgo_sockold.go
  45143e812d7fea77d7cba8db0a5634a1  libgo/go/net/cgo_solaris.go
  bd9aa4b0c3705d54d8b599f7182f49a7  libgo/go/net/cgo_stub.go
! d100ec4dda5abe33961f43727b608026  libgo/go/net/cgo_unix.go
! 4e662119a7fe5644b0b7ea246963f89a  libgo/go/net/cgo_unix_test.go
  1ae0c51bf7a5c7e6cc4577b948752c13  libgo/go/net/cgo_windows.go
! a2402250ebdf7f2b9de0fedaf88fb2c3  libgo/go/net/conf.go
  5ac9aff1490640627a495d3645b2d715  libgo/go/net/conf_netcgo.go
  d5cc36c28c556a37d8877b234e2605ae  libgo/go/net/conf_test.go
  7b1d1c148f903b5cf9c1a8191616608b  libgo/go/net/conn_test.go
! 83402c1de920164de79833a560fcbeab  libgo/go/net/dial.go
! 33f78a761658777f782ab0ca0eee1fe9  libgo/go/net/dial_test.go
! 2b7805ba61b893c29af27f1515bb4e66  libgo/go/net/dial_unix_test.go
  5bfe8e4c56e88204f7cdb613d850d75f  libgo/go/net/dnsclient.go
  7a4aac144286deb235b458f4d834d775  libgo/go/net/dnsclient_test.go
! be37ea6cb5841bf2ee7fa7cae55734f3  libgo/go/net/dnsclient_unix.go
! 12066d647adff725a7893401e066da76  libgo/go/net/dnsclient_unix_test.go
! 9921052269ecaf0c615e852b3f4ae847  libgo/go/net/dnsconfig_unix.go
! 9bb2c3d55130895c36ce05b5b7416b3d  libgo/go/net/dnsconfig_unix_test.go
  8d344cb164337f795334190eec683eb6  libgo/go/net/dnsmsg.go
  2e5c37fcc9bdf4b7ddd9cae36f2b3e12  libgo/go/net/dnsmsg_test.go
  167768ac292dccd38032406853ff77ec  libgo/go/net/dnsname_test.go
  b8b3b08358f6c9491bd4480a65429bdb  libgo/go/net/error_plan9_test.go
+ fe0703fc767680bc1af551d074cd7e0b  libgo/go/net/error_posix.go
  56b5bea56d7c6395d2494e5f8ae5fcaf  libgo/go/net/error_posix_test.go
! ea6a66611a6165b0c91f21b86b21a43b  libgo/go/net/error_test.go
  8d6e3589f7b3eb6ee9a5f60053166e9a  libgo/go/net/error_unix_test.go
  63f0353da8d8fce76096c47f4d2d6441  libgo/go/net/error_windows_test.go
! e38960b6b3edc3370706b4817fa9f7bc  libgo/go/net/external_test.go
! 1a7cde6a1d9067c085fb9501ea9e02dd  libgo/go/net/fd_plan9.go
! ad4d5868fccedddcab5606ab2fed5832  libgo/go/net/fd_unix.go
! 165fd17056d43758d77594476cec86fd  libgo/go/net/fd_windows.go
  30807e93edcd59f26692e6cb050eaf85  libgo/go/net/file.go
  7004487db6e4771ad0f4ad121c83ced2  libgo/go/net/file_plan9.go
  f9415afce0864ae4633a2257a00ea4bf  libgo/go/net/file_stub.go
! 28e7fbeff8cad48b29b6fde3ed325177  libgo/go/net/file_test.go
! 613de5484e985d60d0bd7de5d3251ba7  libgo/go/net/file_unix.go
  30876c1c5f58de3543d36ef2d38f4825  libgo/go/net/file_windows.go
  6ad33c4748d48cd5f47991e8ef92703c  libgo/go/net/hook.go
  ab6b66c47d7fc39618c8a400cd48a24e  libgo/go/net/hook_plan9.go
! cecad961966d2d6574fcdb56e85e4bfa  libgo/go/net/hook_unix.go
! f2e6fabae4c9d246bdbd8ff254f4e096  libgo/go/net/hook_windows.go
  689805d1fa254e2914f5bbba3406dee3  libgo/go/net/hosts.go
! 9a2343dbaa644fdbac9d74a72d812cf8  libgo/go/net/hosts_test.go
  77e1fec0f3af1cf49701683f11039637  libgo/go/net/hosts_testdata
  a50997c6e1686b5181a63d3113e58d79  libgo/go/net/http/cgi/child.go
  896d96bfbe8932bb87f8f91e61d2d4f7  libgo/go/net/http/cgi/child_test.go
  2f07c6f437396b1cd4f097a1efdddd8e  libgo/go/net/http/cgi/host.go
! 7e89e944eb9fbf6cd3e469758dc7db07  libgo/go/net/http/cgi/host_test.go
  55235ba80956fbb63247fbd3ef035e72  libgo/go/net/http/cgi/matryoshka_test.go
! e4400fedaf2630813552e8b089eab560  libgo/go/net/http/cgi/posix_test.go
  d7e85fa43c940035f4594614307de77a  libgo/go/net/http/cgi/testdata/test.cgi
! 0dbb1ff655c257691de519e961be4741  libgo/go/net/http/client.go
! 0fa63a0e30f48cc4f2d8ccdd09cba18a  libgo/go/net/http/client_test.go
! f2647d271eb11cb8bd31da1b62a79442  libgo/go/net/http/clientserver_test.go
! f4c1b68fdd79bef2833c147d068dccf9  libgo/go/net/http/cookie.go
! ba425a6d93584c56fd8e89309dd645d3  libgo/go/net/http/cookie_test.go
  803cd7a603598327094e9145d83224e1  libgo/go/net/http/cookiejar/dummy_publicsuffix_test.go
  bf105227a44b4517dc01599b5ba37d94  libgo/go/net/http/cookiejar/example_test.go
! f569b15cc848934bc765be9b0caa844f  libgo/go/net/http/cookiejar/jar.go
! 8c7a7c09f9bae622b62ae1560f37fdef  libgo/go/net/http/cookiejar/jar_test.go
  7aea102b9b4298e12caa878e7e70f330  libgo/go/net/http/cookiejar/punycode.go
  fabfb997332db4db285c4a3beaa6d742  libgo/go/net/http/cookiejar/punycode_test.go
  b50423cb8972e513fc81006625211254  libgo/go/net/http/doc.go
! e761f896b08f2ed16d91067a037aebfa  libgo/go/net/http/example_test.go
! 7dd5bda0d8a0c6274497aaa47af227ce  libgo/go/net/http/export_test.go
! c569eb9686d3933bc9a8555f65135897  libgo/go/net/http/fcgi/child.go
! 099422d1727eaeb3916c57a4e9824813  libgo/go/net/http/fcgi/fcgi.go
! 24f24cc41353df388b8c81592622fbd9  libgo/go/net/http/fcgi/fcgi_test.go
  8f307dd7176f148925a44be015c37dba  libgo/go/net/http/filetransport.go
! 0e1a9ae7ece248077c9fad98299e4483  libgo/go/net/http/filetransport_test.go
! 989fec8b2436c924a3064af0a75560b2  libgo/go/net/http/fs.go
! f3c44c394824946eb6ceaec5f41bd48b  libgo/go/net/http/fs_test.go
! 7240c9858a16c5de56a063738232b4b1  libgo/go/net/http/h2_bundle.go
! 8be3a39e9932a861ebd46a2e22da8b50  libgo/go/net/http/header.go
  a3668ebb380cb55bfa65a5404e7e5d3b  libgo/go/net/http/header_test.go
  9b7492afe9b043e78b2c14069edb43a7  libgo/go/net/http/http.go
  cc03bc0eab3ced6dae94768106c7dff0  libgo/go/net/http/http_test.go
  753b35f46ca755bbee4f49c46550bd56  libgo/go/net/http/httptest/httptest.go
  2b2722e4e80aa842828a2be0355b5e89  libgo/go/net/http/httptest/httptest_test.go
! 7b1bb837fc8c41b09fec1549ce61226c  libgo/go/net/http/httptest/recorder.go
! 36858e468da75dc1375e541e1daf807a  libgo/go/net/http/httptest/recorder_test.go
! d60d80ef7758f0eb365db4ea251d1b5f  libgo/go/net/http/httptest/server.go
! c89870b391b5a74e4b617267be944685  libgo/go/net/http/httptest/server_test.go
  55f477ffc1c0f1b304584410a0feb720  libgo/go/net/http/httptrace/example_test.go
  351213f6fd0adb7f3458c0e4aed65ff7  libgo/go/net/http/httptrace/trace.go
  bb2a61d61c614a20bfdef885c91bb578  libgo/go/net/http/httptrace/trace_test.go
  804067d0622c038d5ce3aba387374778  libgo/go/net/http/httputil/dump.go
! 1c3da2314552b9605f93d17651146d13  libgo/go/net/http/httputil/dump_test.go
  666ad46f0df15ca49f1e27e140e96b57  libgo/go/net/http/httputil/example_test.go
  ca4acf017204dbc4b858f2b9ce3dd75c  libgo/go/net/http/httputil/httputil.go
  dbe85aba81ce0f44dbad46e06bd1a307  libgo/go/net/http/httputil/persist.go
! 8eb8be5fc2684d72d840965803394fa7  libgo/go/net/http/httputil/reverseproxy.go
! a56e02524b109373ea3141b77f0979a4  libgo/go/net/http/httputil/reverseproxy_test.go
  b82e509a97473beff04dfbd14467e006  libgo/go/net/http/internal/chunked.go
  9b9252666bb5bfc6b6bd22b8ed065237  libgo/go/net/http/internal/chunked_test.go
  6841203c1c36fa4fe4f17657eb2147a9  libgo/go/net/http/internal/testcert.go
  0f1b2ae9b087721dc8d532479b919c2e  libgo/go/net/http/jar.go
! 6430c616ab3e7133de44ff15746dfbac  libgo/go/net/http/main_test.go
  5b196501ffa7d98bd91bcb0561952a22  libgo/go/net/http/method.go
! 3abcd3590b8166ca70ef6ad10851a7fe  libgo/go/net/http/npn_test.go
! 8c42fe591186adf9522ff65237a3bc4b  libgo/go/net/http/pprof/pprof.go
! e738b5d462f689ed322e213e919df4ea  libgo/go/net/http/proxy_test.go
  bc778695336037a6f56a25943af2066c  libgo/go/net/http/race.go
  9a78c894b9046071d6fd6ecaaaa1537b  libgo/go/net/http/range_test.go
! 8409e6fc3fa408c9a1e3b89cf9c0c0f1  libgo/go/net/http/readrequest_test.go
! 439b1afb98deff8f5cd31a2d025a3396  libgo/go/net/http/request.go
! ebf2852b5c326ff62368cbbc9e982db7  libgo/go/net/http/request_test.go
  b2fbcc0ce95ad2d88d89974bde26cfde  libgo/go/net/http/requestwrite_test.go
! acde2711936f01a3669cf27b3fdc8da1  libgo/go/net/http/response.go
! 79efd819a2ee43a34c3d1b72352e42a5  libgo/go/net/http/response_test.go
  06f5252495a364cbb74825a589b7467c  libgo/go/net/http/responsewrite_test.go
! dac8ad33fb65df32f8f96807ea2640b4  libgo/go/net/http/serve_test.go
! ba51708b508afc9da9ba858b4e572ade  libgo/go/net/http/server.go
! 9e5c2839207d079f5d82cfdcddd189bc  libgo/go/net/http/sniff.go
! db6a2d0886316d544d8188988d2bd172  libgo/go/net/http/sniff_test.go
  1425ccaed8db3229ee08a87c139e3d55  libgo/go/net/http/status.go
  3749f52bb326ae96782b42dc0a97b4c1  libgo/go/net/http/testdata/file
  39bf3a5cbcd978e0d9a9bab0f27787b4  libgo/go/net/http/testdata/index.html
  746f7bd76da133c7035108d0053a7e79  libgo/go/net/http/testdata/style.css
! b83cf91c5bc87040c221fb45f2b7191a  libgo/go/net/http/transfer.go
  3b1b2b15c165a6f2bc9af3e23bcf2b70  libgo/go/net/http/transfer_test.go
! 1a7bb551b201d770b95680cf0c878907  libgo/go/net/http/transport.go
! 85c516ce9af61ad837810733127b999f  libgo/go/net/http/transport_internal_test.go
! 8dc26cf69e68da17e4f60adb4167d5e6  libgo/go/net/http/transport_test.go
  016c99288f02c6d4397ef766350a8a9d  libgo/go/net/http/triv.go
! 34a9b8d05ac1494a8cbeb6ed4aece446  libgo/go/net/interface.go
  91b84b5dcfb51004c825b3c6f3292729  libgo/go/net/interface_bsd.go
  639a547cbdb4318d00b11355d164832c  libgo/go/net/interface_bsdvar.go
  cb8160ad57db1d7ce08cfc4ec62a8387  libgo/go/net/interface_darwin.go
  17e5f0043d6d243361dd72ea80a6000e  libgo/go/net/interface_freebsd.go
! 477b4e2fff4f36318811b100f7cfcac9  libgo/go/net/interface_linux.go
  0e4be9e09440a8bdba95badf9d7061fa  libgo/go/net/interface_plan9.go
  eb0724ae08cadeb97ef83eeb0c3b7cd1  libgo/go/net/interface_solaris.go
! 64ff38538ef131bff0dac8db5d3cca1f  libgo/go/net/interface_stub.go
! 2cf3b59169c793f99321f2e831a5577d  libgo/go/net/interface_test.go
! 7b6ea882472795e1ade6b7bbe35f2a1f  libgo/go/net/interface_windows.go
  0997a153e853c3f72d67314f869c2f57  libgo/go/net/interface_windows_test.go
  e6c8eb82a0a8c22a40db7ab0038c8ee1  libgo/go/net/internal/socktest/main_test.go
  fc0b137b84f7e17130db3d7b8f5dabb5  libgo/go/net/internal/socktest/main_unix_test.go
*************** fc0b137b84f7e17130db3d7b8f5dabb5  libgo/
*** 62844,62953 ****
  7191d08be01ea5c2171a415596ae18e9  libgo/go/net/internal/socktest/switch.go
  d533a96d403af07716cce570e7894e7f  libgo/go/net/internal/socktest/switch_posix.go
  210a4961c356382d8caa578085bdbdad  libgo/go/net/internal/socktest/switch_stub.go
! 746aede1632dc490547cf5d86e8b9a69  libgo/go/net/internal/socktest/switch_unix.go
  e545fc02b83eb3d301779219574da8e8  libgo/go/net/internal/socktest/switch_windows.go
! 53d7e4011e5b88f8481835b7d2586649  libgo/go/net/internal/socktest/sys_cloexec.go
! d2fea2a151d8bed143cd2e8410a71985  libgo/go/net/internal/socktest/sys_unix.go
! a4c62fc28117961924ffd1daeb4866a9  libgo/go/net/internal/socktest/sys_windows.go
! 737206cac94c1f9d7f280c4e4d65abcf  libgo/go/net/ip.go
! f39747ce524f5deaa1a408a537128075  libgo/go/net/ip_test.go
! 79f713a1a6ec87fc29bbd5791d6d726d  libgo/go/net/iprawsock.go
  88c22e061e792fc3e66ebe9f0ed8324f  libgo/go/net/iprawsock_plan9.go
! cbf50e2655d82ff76021eaecbd357ed3  libgo/go/net/iprawsock_posix.go
! c2404a408d5aa7fb3020ef8e232b0fc3  libgo/go/net/iprawsock_test.go
! 0221b828880daaeb53b0dbc2b8a1fba5  libgo/go/net/ipsock.go
! 3b882d1aa0d6848603e60b7559161e43  libgo/go/net/ipsock_plan9.go
! 65494a9cff0fe6fed8182b74cc3e91d3  libgo/go/net/ipsock_posix.go
! 0a3c2b91132a2cccb2fce2b69d86e834  libgo/go/net/ipsock_test.go
! d22ce26a86f6c5a266e4f84ca432ca97  libgo/go/net/listen_test.go
! 5bd2580b1f5bbfe2d3cbb6e165d638d2  libgo/go/net/lookup.go
  8502725c25129ae96e7d325c83d0c315  libgo/go/net/lookup_nacl.go
! c1abd35fd64874f57748435d18e28809  libgo/go/net/lookup_plan9.go
! b6fa38d4e8db15efe1886ae5cb523091  libgo/go/net/lookup_test.go
! b9736fa8783c6629d2ea3b3eca4770f2  libgo/go/net/lookup_unix.go
! 741ed7a2fc6cb032df561771647e191f  libgo/go/net/lookup_windows.go
  b5320c987ef9e63f1aae21d2499bdef6  libgo/go/net/mac.go
  6ce995d9b53c914a9c23ea837c12c486  libgo/go/net/mac_test.go
  e40a563149e083a1ea90d86f4214ccc2  libgo/go/net/mail/example_test.go
! bef186d84a8ab78ba2ed7bb5ed7c99ca  libgo/go/net/mail/message.go
! ecc955fba381db67a53170aff7f5f0eb  libgo/go/net/mail/message_test.go
! 6eb5ac418a2a45104b1f3a2875cca85c  libgo/go/net/main_cloexec_test.go
  ba864b529a514f91bdabe2495402802b  libgo/go/net/main_conf_test.go
  f4d0bd67822e7ccd02bb34050af724a5  libgo/go/net/main_noconf_test.go
  eda73809fd6152fe3ad6d2d02e53b5a2  libgo/go/net/main_plan9_test.go
  5981533fd2b7598e3cfbd5c5df565b62  libgo/go/net/main_posix_test.go
! 985d7bfb63a52ec965080875d458c10f  libgo/go/net/main_test.go
! e50355452e04534590e3b9fc1c191e9c  libgo/go/net/main_unix_test.go
! b4680de8920eb639afd983f1f6fc0c3f  libgo/go/net/main_windows_test.go
! 5a56c9ae3c6b6183c5cffea7c90d5780  libgo/go/net/mockserver_test.go
! 323f1d7505303ec96a3d127000660ee0  libgo/go/net/net.go
! fd48c89ab077c5f2ea03c2c3d61ac598  libgo/go/net/net_test.go
  d20ac26330c1e6fa5c87a58b79711acf  libgo/go/net/newpollserver_rtems.go
! b4df22d5cfbb5fab41c4f9f09e0b26bf  libgo/go/net/nss.go
  0bf1dd8ebf9f01369668edd2404104c6  libgo/go/net/nss_test.go
  09bf9e9ce1c09c06c5ae705b40a31940  libgo/go/net/packetconn_test.go
! b352bac3023ff14e8d2d1ec264500f20  libgo/go/net/parse.go
  3279d0b13595d5e1bfb99cb783442120  libgo/go/net/parse_test.go
! e49f44caf10231172cb6d78bcd05b57b  libgo/go/net/pipe.go
! e822363ccad1b085c8c2659358b442b1  libgo/go/net/pipe_test.go
! 805db917abf5125c40bc3e411f45e4c4  libgo/go/net/platform_test.go
! 13d1af753716c08b12bd39f6a89e109f  libgo/go/net/port.go
  978481de9c29c13c4a16a3830071185b  libgo/go/net/port_test.go
! bd3b7d158e5d38035659a80b6256bf17  libgo/go/net/port_unix.go
! 741c0b17e0ada0b738a8aa7ebfdb74d2  libgo/go/net/protoconn_test.go
  531cb278607143fb44dd3424f5b22df2  libgo/go/net/rpc/client.go
  7ed6efd44e39172bdea5972dd2b51659  libgo/go/net/rpc/client_test.go
! 5d09578f3ee253e7cf448b465f240464  libgo/go/net/rpc/debug.go
! 3d32641b2f03bb4b8857ce91d5053165  libgo/go/net/rpc/jsonrpc/all_test.go
! dd06cec3bf1adcda34f658f5c8e936e2  libgo/go/net/rpc/jsonrpc/client.go
  8c6fdfad63d6c4d640fbfd035195cf67  libgo/go/net/rpc/jsonrpc/server.go
! 67c2fea02e30f5515fc1df7cc4c9534e  libgo/go/net/rpc/server.go
! 132c5b444fb54bc230bc92ce858f5571  libgo/go/net/rpc/server_test.go
! 6586dd41d9bd7fd86cef8bdc71f38fa5  libgo/go/net/sendfile_dragonfly.go
! 4488d9345d8adea22d4c8e47e383fecb  libgo/go/net/sendfile_freebsd.go
! 02f6380bc628b89bda059c9cec3f2a9a  libgo/go/net/sendfile_linux.go
! 7a9a65b60873c4caf17314392ccc96cd  libgo/go/net/sendfile_solaris.go
! e0a4a2d18a6e3b0546af144dce9f2bf5  libgo/go/net/sendfile_stub.go
  d0da4926a92253861e8b668c69db5175  libgo/go/net/sendfile_test.go
! a7c96a51990d90873aea9742812e8731  libgo/go/net/sendfile_windows.go
  f43ebbe67a71580a74598e03d5628e3c  libgo/go/net/server_test.go
! c5f1bf7407965a76d59082fa2afcc9d5  libgo/go/net/smtp/auth.go
! 7b33613f5a44d683b183f240554f4df6  libgo/go/net/smtp/smtp.go
! 72fe8ea71cabfc7fdd7ffa168a1babcb  libgo/go/net/smtp/smtp_test.go
! 982f5fc0507d565068e131f7549a8e36  libgo/go/net/sock_bsd.go
! b2edd561bc889249e568cfc242066c09  libgo/go/net/sock_cloexec.go
  8f28ceaeb7fc96f283f045789e8112e5  libgo/go/net/sock_linux.go
  1745a4c17a11526e5b5264cf29f14a19  libgo/go/net/sock_plan9.go
! 9170bc77246840244205ad59ee32bd2a  libgo/go/net/sock_posix.go
! 92a39980023695b687f3de54adadd069  libgo/go/net/sock_stub.go
! c57009fcb99060761860dc3fee4159d1  libgo/go/net/sock_windows.go
! 257a859f2e2d0c1476df9c62db6e58f1  libgo/go/net/sockopt_bsd.go
  b3d3070c05591ca14e669733d519a05f  libgo/go/net/sockopt_linux.go
  144c11ac9965aac68530e61d45bc93d7  libgo/go/net/sockopt_plan9.go
! 0611dd43d70248f2df5d5d1d8d855b31  libgo/go/net/sockopt_posix.go
  b3d3070c05591ca14e669733d519a05f  libgo/go/net/sockopt_solaris.go
  645f9812183949b51da177f3dcd461c5  libgo/go/net/sockopt_stub.go
  d31ec179341939e5568d9e920d37ffa1  libgo/go/net/sockopt_windows.go
! 20c1213ad89a707e1f87868c857b8183  libgo/go/net/sockoptip_bsd.go
! 3a4e2f9231b20b991a40a4678286d53b  libgo/go/net/sockoptip_linux.go
! 9555f186e7a83fa861a45b092954b6c3  libgo/go/net/sockoptip_posix.go
! 17255088cb548d1142af8760a6154f9b  libgo/go/net/sockoptip_stub.go
! ad01c3795287d589f34ba3dd65563e93  libgo/go/net/sockoptip_windows.go
! 82471c2bf8c1b8385f864efd063541bf  libgo/go/net/sys_cloexec.go
! b60e86a74df44fe4d4244939ff60a9ee  libgo/go/net/tcpsock.go
! 4b38cdb2ed46c18aeefffd4e3c9465b9  libgo/go/net/tcpsock_plan9.go
! 5f80d86bdad5d4952f6ab9128d45e303  libgo/go/net/tcpsock_posix.go
! 96dd050a3769b3e03eadda129a9edbb3  libgo/go/net/tcpsock_test.go
! b123e4fad52c6adf6076904905cb500a  libgo/go/net/tcpsock_unix_test.go
! 12d963f7b8a24487a2633962990b7347  libgo/go/net/tcpsockopt_darwin.go
! 7a432ba768dd3632e625c47c71568abd  libgo/go/net/tcpsockopt_dragonfly.go
  dacd4b8cac046d51733a60b7993760bc  libgo/go/net/tcpsockopt_openbsd.go
  d2149b637c507484fa56de79cf9a24a9  libgo/go/net/tcpsockopt_plan9.go
! 252288d221de94b74f5365666dc63ec8  libgo/go/net/tcpsockopt_posix.go
! 0ef5fffb337bdeaf166cc8c6eeb6bd9f  libgo/go/net/tcpsockopt_solaris.go
  7bbf5e72a6c0aa748ed542e8af6c11ed  libgo/go/net/tcpsockopt_stub.go
! de943b690e09e4a7b7eee338ec3785ab  libgo/go/net/tcpsockopt_unix.go
! d028aa847002c92b46600aef1fd2eed4  libgo/go/net/tcpsockopt_windows.go
  24bde34ecb5632ac6637325e8a334a9c  libgo/go/net/testdata/Mark.Twain-Tom.Sawyer.txt
  f7acb47d9b57c691e05f51045394b28a  libgo/go/net/testdata/case-hosts
  15f42fa12b09b82e46f6c34644fca530  libgo/go/net/testdata/domain-resolv.conf
--- 67199,67312 ----
  7191d08be01ea5c2171a415596ae18e9  libgo/go/net/internal/socktest/switch.go
  d533a96d403af07716cce570e7894e7f  libgo/go/net/internal/socktest/switch_posix.go
  210a4961c356382d8caa578085bdbdad  libgo/go/net/internal/socktest/switch_stub.go
! 12ed31a8e5c533710dd4f84f7416f00a  libgo/go/net/internal/socktest/switch_unix.go
  e545fc02b83eb3d301779219574da8e8  libgo/go/net/internal/socktest/switch_windows.go
! 4f5f00755f36502dad944b73afd3ade3  libgo/go/net/internal/socktest/sys_cloexec.go
! 52f33f2f0c20b5f5cfd73f47901f65a1  libgo/go/net/internal/socktest/sys_unix.go
! a9793c2001dcdbae6de26c3126bfc146  libgo/go/net/internal/socktest/sys_windows.go
! b6fe5781a656fa6221dd045b5bcf5ef3  libgo/go/net/ip.go
! 03652c61e4ca01fce453986c397894c8  libgo/go/net/ip_test.go
! 4bfad1104fc37d4e055b31279e546743  libgo/go/net/iprawsock.go
  88c22e061e792fc3e66ebe9f0ed8324f  libgo/go/net/iprawsock_plan9.go
! 4f52e211423cadc26bca2c835e7919a9  libgo/go/net/iprawsock_posix.go
! 0a4c98a1fa97cf0f9509d07783d88cc2  libgo/go/net/iprawsock_test.go
! 203857a8e84d8e70b64f54f8a646d956  libgo/go/net/ipsock.go
! c49191932b504c394c3cd5b21531a6e6  libgo/go/net/ipsock_plan9.go
! 2ab2cde746b20b3ac85ca0140d7b0f51  libgo/go/net/ipsock_posix.go
! 07e3ace72b261ace00842ec4e545cca4  libgo/go/net/ipsock_test.go
! 780fecd6b46eb460bd89f31a9db704cf  libgo/go/net/listen_test.go
! b9fbbea94203906be07cc3e6502e9934  libgo/go/net/lookup.go
  8502725c25129ae96e7d325c83d0c315  libgo/go/net/lookup_nacl.go
! 25a04bfd2d0926a4eb2b3c548e21120b  libgo/go/net/lookup_plan9.go
! f675c8cea5fff6dbe7b8b3af0405a216  libgo/go/net/lookup_test.go
! fa634e310c93ed7966f6da30364932c2  libgo/go/net/lookup_unix.go
! 986299984e053d2d3ee763db5ac02685  libgo/go/net/lookup_windows.go
  b5320c987ef9e63f1aae21d2499bdef6  libgo/go/net/mac.go
  6ce995d9b53c914a9c23ea837c12c486  libgo/go/net/mac_test.go
  e40a563149e083a1ea90d86f4214ccc2  libgo/go/net/mail/example_test.go
! e9a90956c4b0a2d0dd2f2d5a0182a13e  libgo/go/net/mail/message.go
! b0446fdd0564b7d345c6f30563f68904  libgo/go/net/mail/message_test.go
! ce5768559239cdfef3aa402b4c765a30  libgo/go/net/main_cloexec_test.go
  ba864b529a514f91bdabe2495402802b  libgo/go/net/main_conf_test.go
  f4d0bd67822e7ccd02bb34050af724a5  libgo/go/net/main_noconf_test.go
  eda73809fd6152fe3ad6d2d02e53b5a2  libgo/go/net/main_plan9_test.go
  5981533fd2b7598e3cfbd5c5df565b62  libgo/go/net/main_posix_test.go
! 12a568d6d651813c626a3fa295c5656a  libgo/go/net/main_test.go
! 1925c0bd5bd9804ca0d4a783ddc4c23e  libgo/go/net/main_unix_test.go
! 843c1a9e232c2fedc1f7c555559b8dc9  libgo/go/net/main_windows_test.go
! 1f73e433bfd978442f71b7923a911330  libgo/go/net/mockserver_test.go
! 6a0fc94d1d5ca1b9d9870a0d6bd92665  libgo/go/net/net.go
! 2714ae86bb92657af3a779abfb00ff6b  libgo/go/net/net_test.go
  d20ac26330c1e6fa5c87a58b79711acf  libgo/go/net/newpollserver_rtems.go
! d17ad3cf74e66113cb12f43a9450c528  libgo/go/net/nss.go
  0bf1dd8ebf9f01369668edd2404104c6  libgo/go/net/nss_test.go
  09bf9e9ce1c09c06c5ae705b40a31940  libgo/go/net/packetconn_test.go
! 7d7243dd415e4eb2776d6014163f9c3e  libgo/go/net/parse.go
  3279d0b13595d5e1bfb99cb783442120  libgo/go/net/parse_test.go
! 4ac000d99e64d1c64a252251ba9a5373  libgo/go/net/pipe.go
! 4cf29d951c6d73ff6999655fffdc310f  libgo/go/net/pipe_test.go
! 6e87ede6919ddb084d2b25752678b344  libgo/go/net/platform_test.go
! af34e67f238a3a08bbeefc6183d29db7  libgo/go/net/port.go
  978481de9c29c13c4a16a3830071185b  libgo/go/net/port_test.go
! 858661e6b78cc1aa9e2433806bc5674e  libgo/go/net/port_unix.go
! 18fbc5c1770abd2b7bfb22d226b6dc9e  libgo/go/net/protoconn_test.go
! fc64268edf199832940ec1d79a642e37  libgo/go/net/rawconn.go
! c1d9d43681d7ebe9b3840cd33fe092f4  libgo/go/net/rawconn_unix_test.go
! 4374a5cf85a698d51c46da4a2c9ee827  libgo/go/net/rawconn_windows_test.go
  531cb278607143fb44dd3424f5b22df2  libgo/go/net/rpc/client.go
  7ed6efd44e39172bdea5972dd2b51659  libgo/go/net/rpc/client_test.go
! 762e605bffd0f0a556ee73f508ccbfdb  libgo/go/net/rpc/debug.go
! eaa2a38318b398653cd0f7f6a6cfe45e  libgo/go/net/rpc/jsonrpc/all_test.go
! ff795877f97b65357aa503243b45d315  libgo/go/net/rpc/jsonrpc/client.go
  8c6fdfad63d6c4d640fbfd035195cf67  libgo/go/net/rpc/jsonrpc/server.go
! 279a018be829f02982ab1e954fa2c869  libgo/go/net/rpc/server.go
! 815a2f3260866ae90071593c2226ce51  libgo/go/net/rpc/server_test.go
! 76792994f550a2c71a4b41a1c718170e  libgo/go/net/sendfile_bsd.go
! cbaa4303fc000de73ea229c21cf5934c  libgo/go/net/sendfile_linux.go
! 0f941bdc5bed392aadb0388be182bd58  libgo/go/net/sendfile_solaris.go
! d249ed39aeb441959af9d9402cb4341f  libgo/go/net/sendfile_stub.go
  d0da4926a92253861e8b668c69db5175  libgo/go/net/sendfile_test.go
! 915002dea6fc810b61c91a76debca132  libgo/go/net/sendfile_windows.go
  f43ebbe67a71580a74598e03d5628e3c  libgo/go/net/server_test.go
! 7afcebc4df1bf52412d0f986632e31b2  libgo/go/net/smtp/auth.go
! d727878898a4e269cefbc2ec8eafff2b  libgo/go/net/smtp/smtp.go
! 5ab32487a40f71f20491d6d9eee5da86  libgo/go/net/smtp/smtp_test.go
! 2830a0d463f118d7dbce6129f70b8eb0  libgo/go/net/sock_bsd.go
! de41571828d25e79d29d3b8ac7e1cc8a  libgo/go/net/sock_cloexec.go
  8f28ceaeb7fc96f283f045789e8112e5  libgo/go/net/sock_linux.go
  1745a4c17a11526e5b5264cf29f14a19  libgo/go/net/sock_plan9.go
! 5e0356bcde55fd42d5efccb5d7467f97  libgo/go/net/sock_posix.go
! ae06d086e6558e1cd0df65a93c73b82d  libgo/go/net/sock_stub.go
! 586c6c2dbd46b409eaa254d4303aa799  libgo/go/net/sock_windows.go
! 3c309265d01cd97291e6df9564b0e371  libgo/go/net/sockopt_aix.go
! c0b5f2c3ce1dce59fee93fcd04d2d6aa  libgo/go/net/sockopt_bsd.go
  b3d3070c05591ca14e669733d519a05f  libgo/go/net/sockopt_linux.go
  144c11ac9965aac68530e61d45bc93d7  libgo/go/net/sockopt_plan9.go
! 6b4ffbb8618d9cec538f869ccabf7319  libgo/go/net/sockopt_posix.go
  b3d3070c05591ca14e669733d519a05f  libgo/go/net/sockopt_solaris.go
  645f9812183949b51da177f3dcd461c5  libgo/go/net/sockopt_stub.go
  d31ec179341939e5568d9e920d37ffa1  libgo/go/net/sockopt_windows.go
! 6051c5b6f2696956028d3198d93c78be  libgo/go/net/sockoptip_aix.go
! 4ca66e7154ec1df6c5dfe3aafa27601c  libgo/go/net/sockoptip_bsdvar.go
! f8ae591103e20a0aa91d07b395965ad0  libgo/go/net/sockoptip_linux.go
! cb3d109119df1f7a58ffab25cb615835  libgo/go/net/sockoptip_posix.go
! e883c4d6358ff6ab9b68caf90dfb26f7  libgo/go/net/sockoptip_stub.go
! b5ee6bc6eee276205750c472b9ad6015  libgo/go/net/sockoptip_windows.go
! 41a72090ba28ec884e4cd89548c51616  libgo/go/net/sys_cloexec.go
! 4bf5fad6b85eead4d335471eac97900e  libgo/go/net/tcpsock.go
! f9cdd4ec11abfd3b437f0ca7ac899004  libgo/go/net/tcpsock_plan9.go
! 936fc1e8880b4eacccd68d6cb3f8cffd  libgo/go/net/tcpsock_posix.go
! 9114b2a2d2fdb2112dce6f13a4ea2124  libgo/go/net/tcpsock_test.go
! 1517ed3d0622bb849133dd27b6d67faf  libgo/go/net/tcpsock_unix_test.go
! bf9df15415482dd3b1635ebf8bd30e8f  libgo/go/net/tcpsockopt_darwin.go
! c907a136c4e9ce930a49a94734c6e85c  libgo/go/net/tcpsockopt_dragonfly.go
  dacd4b8cac046d51733a60b7993760bc  libgo/go/net/tcpsockopt_openbsd.go
  d2149b637c507484fa56de79cf9a24a9  libgo/go/net/tcpsockopt_plan9.go
! ac8c0af56d010adf934c1abeb3b1b615  libgo/go/net/tcpsockopt_posix.go
! bf6884301f0e854b948fc7a1059af9b0  libgo/go/net/tcpsockopt_solaris.go
  7bbf5e72a6c0aa748ed542e8af6c11ed  libgo/go/net/tcpsockopt_stub.go
! ceae13737e8d2a55428ddaf2ba8e49b5  libgo/go/net/tcpsockopt_unix.go
! 921eb4a886027d3f80f8e0fae90ab71d  libgo/go/net/tcpsockopt_windows.go
  24bde34ecb5632ac6637325e8a334a9c  libgo/go/net/testdata/Mark.Twain-Tom.Sawyer.txt
  f7acb47d9b57c691e05f51045394b28a  libgo/go/net/testdata/case-hosts
  15f42fa12b09b82e46f6c34644fca530  libgo/go/net/testdata/domain-resolv.conf
*************** a5ec50dad8232b18a7a8390ee2ae60f1  libgo/
*** 62966,63142 ****
  1e50713af550a622ccac96715544e530  libgo/go/net/testdata/singleline-hosts
  9dbc8afb7a2a7b31e934094c4bedfc2a  libgo/go/net/textproto/header.go
  1943646963304a31dcf10d5a53d39a9a  libgo/go/net/textproto/pipeline.go
! cbc684bce3b6d9310849cc875195293a  libgo/go/net/textproto/reader.go
! 07d03bb4a451f58548d1249edefbab4b  libgo/go/net/textproto/reader_test.go
  4129d0642056114957236c93c22da284  libgo/go/net/textproto/textproto.go
  2a8a6cb2b7a73465b2c75a8c37f3f8d6  libgo/go/net/textproto/writer.go
  1071ff120c2e9ff6f1f7416732593705  libgo/go/net/textproto/writer_test.go
! c13049c3e6522251d05877bd9015cdcf  libgo/go/net/timeout_test.go
! 78850a56c730be6b0d438855012d100b  libgo/go/net/udpsock.go
  a431fd247509e3fa4dfac9ab990ad240  libgo/go/net/udpsock_plan9.go
  1ca693f2711eadf9601689cab90dc4b1  libgo/go/net/udpsock_plan9_test.go
! 5da62960dd8ee1a1cf4aa5bb55e5928c  libgo/go/net/udpsock_posix.go
! c4ad1d09cccddf7f17925bad545565f9  libgo/go/net/udpsock_test.go
! 4962fecff5afd14094752fffc9f200d7  libgo/go/net/unixsock.go
  5ec2dffc3281ec8f3a492721ac5bcc69  libgo/go/net/unixsock_plan9.go
! f4caa5aaaf4b151d8258c9514144b50a  libgo/go/net/unixsock_posix.go
! 8705adb64f890d533dc98c382c09ef65  libgo/go/net/unixsock_test.go
! 29bbe42f21cf3722ce23cb88a3a1c8a9  libgo/go/net/url/url.go
! 915f728397c91de10f68e22392251a4c  libgo/go/net/url/url_test.go
! 4b306b6c722700a4f1bb33157487d074  libgo/go/net/writev_test.go
! 0efb50eec46c9e9c645b9ceee1fe9203  libgo/go/net/writev_unix.go
  66ab26acccc3ba5e7537a9ff11f07d94  libgo/go/os/dir.go
! 00bcf402ea96d6b37db340e16be1d100  libgo/go/os/dir_gccgo.go
! b6d94d2504fe577b853adaaa970657a6  libgo/go/os/dir_largefile.go
  d3cfe6799a6a88601cd99a34802996f0  libgo/go/os/dir_plan9.go
! fdd15b1209bfc78b290bf588c7b2ccc7  libgo/go/os/dir_regfile.go
! 5e45985b66615f178719fb4ed0cce5d0  libgo/go/os/dir_unix.go
! 9112da1b78eb79eba356d759073d4d98  libgo/go/os/env.go
! d7b99d4687ae91662e50bf6a0a6001bf  libgo/go/os/env_test.go
  3a5dbbe37720c94b242b1423356bd580  libgo/go/os/env_unix_test.go
! 26835192049b1609fd994e9cbe3fbc0b  libgo/go/os/error.go
! d36361a25e154336c069d119301a52d6  libgo/go/os/error_plan9.go
  35030f5621f5cd27d878f5884894fc28  libgo/go/os/error_test.go
! af13f6f592921a03e1b89cf31cc10c5c  libgo/go/os/error_unix.go
  9bcc841248f912f7749c00258cac2021  libgo/go/os/error_unix_test.go
  e05e3b47e7720782975caad76ae716b2  libgo/go/os/error_windows.go
  5775a5d025ee0c670d1e8c24cd8643a8  libgo/go/os/error_windows_test.go
! b0ac467a3d6ae0bc86eecb02519114b3  libgo/go/os/example_test.go
! 806663fffa86c03bd556c8f25a728dd4  libgo/go/os/exec.go
! b575e926ed4f42141211a531d22ef8b3  libgo/go/os/exec/exec.go
! c7b84c81ea5dbdae3b15d573ec82e27a  libgo/go/os/exec/exec_posix.go
! be6db7b9a160ff80d8ce50f296e37921  libgo/go/os/exec/exec_test.go
  2d239d712d33fb848065f13812a876ab  libgo/go/os/exec/internal_test.go
  9502b3c9b5e3729c4876732c362ad464  libgo/go/os/exec/lp_plan9.go
  41619b7d87d5ecc522bc2eafadf2f303  libgo/go/os/exec/lp_test.go
! 61084f25b83c256a592141ace5bd0f19  libgo/go/os/exec/lp_unix.go
  ce2ff59ee918caafe7b22eb133cf505e  libgo/go/os/exec/lp_unix_test.go
  73cda70d3a2673248ca5988ea9c01fd1  libgo/go/os/exec/lp_windows.go
! dbfa57f73840bce3a9628691c52dea0a  libgo/go/os/exec_plan9.go
! 23ae1fa9039087cb5aa095322c7ab203  libgo/go/os/exec_posix.go
! eca9c20136d67a23f957d0585a16750c  libgo/go/os/exec_unix.go
! 4567e1762b6db65678855793f8dcd757  libgo/go/os/exec_windows.go
! cbf19bd26fd67a723dee40af38b81d6f  libgo/go/os/executable.go
  806f8046066799685a5810067dfeea0c  libgo/go/os/executable_darwin.go
  4dc05db923782c8d7f49fd3099e0e711  libgo/go/os/executable_freebsd.go
  b7de93476c44316aaabb84d7439ad1ac  libgo/go/os/executable_plan9.go
! c9c23e22750a6e3db003c5a2ab6989d3  libgo/go/os/executable_procfs.go
  f24facbc8d785f440786274040d23dfb  libgo/go/os/executable_solaris.go
! 63b9370bcee2b1781e76bc8635b22097  libgo/go/os/executable_test.go
  76aa9403bfb354bc7e6c45c4ad819ba5  libgo/go/os/executable_windows.go
  1a476dd5f2a9b5c9b3dad5e8e1075db0  libgo/go/os/export_test.go
! d7cd09c76bddb2f22ebc056375a82b0e  libgo/go/os/export_windows_test.go
! 8eede59c01f8c17d147240b017737b2d  libgo/go/os/file.go
! 45e6e33e40091b685fcfec40149bf06e  libgo/go/os/file_plan9.go
! 93f18cc1f66e5203238677b752d13ec8  libgo/go/os/file_posix.go
! 65f769a965df0d61abda3921662a7866  libgo/go/os/file_unix.go
! 6f76f21f10e9f724cb69564b41b3178d  libgo/go/os/getwd.go
  946002a354047976f85f0555021ddf04  libgo/go/os/getwd_darwin.go
! 3ed27d2be0e26118fa15cb78aa31f58b  libgo/go/os/os_test.go
! a950028306354e7f4a4db8beee79b92f  libgo/go/os/os_unix_test.go
! c46058f06c2330a35d62eac13dd8e713  libgo/go/os/path.go
  17d790f184d67f93da9de65ce2b8970a  libgo/go/os/path_plan9.go
! 61047c0f3832ca0b861c9d4c1970bbbf  libgo/go/os/path_test.go
! bfd8a8bdac91050fa47b06d0435d908e  libgo/go/os/path_unix.go
  9c9eecc065f7f4888adb2dc599256fff  libgo/go/os/path_windows.go
  d9d730cee22e5c68b668334a7aaf39da  libgo/go/os/path_windows_test.go
! 05cad899f493a9e7125edbeb1bd8e8c6  libgo/go/os/pipe_bsd.go
! 203760c2f9bdd038dcef96f85a91ce33  libgo/go/os/pipe_linux.go
! b2620078fb0b9acaba8d525d38a799a8  libgo/go/os/pipe_test.go
! 2ad874439d26123b00bc557e5e5c0709  libgo/go/os/proc.go
! 1c20ed0ce700906e0c2f28329ebeb3b5  libgo/go/os/signal/doc.go
! ec0a37f84834d39b7b8584d93a849024  libgo/go/os/signal/signal.go
  52fa4a734928af045aafaf5019e9c9e8  libgo/go/os/signal/signal_plan9.go
  6cf1c60023e30d5d680ef01b501db3ee  libgo/go/os/signal/signal_plan9_test.go
! dd3f4c5f71c603fc843b00e590787f94  libgo/go/os/signal/signal_test.go
! 96a3acb89ce4e7d62c35b741e5f65823  libgo/go/os/signal/signal_unix.go
! 0938f05cd8832eac222d92a33d94feb0  libgo/go/os/stat.go
  d6d0b7f2dd297d5f935f2b4b5e8867d9  libgo/go/os/stat_atim.go
  935e4988e6d00ab23025096627435e65  libgo/go/os/stat_atimespec.go
  69889f3f3aa9c669ff47b492066de899  libgo/go/os/stat_dragonfly.go
  9b75cceaf80e502aa0b934930c14d183  libgo/go/os/stat_nacl.go
! 6de73666e366ecff43fc2948e0c3e644  libgo/go/os/stat_plan9.go
  3fa76abf938fab717fa51a63a7939245  libgo/go/os/stat_solaris.go
! af3840525d65ec3fa81d8dff29332052  libgo/go/os/stat_unix.go
  4dedd650473567ac04845fdeec68f466  libgo/go/os/sticky_bsd.go
  f0c2fdcb6855312f5aaf222eead51cb0  libgo/go/os/sticky_notbsd.go
  7278237d114b2684931308a7499ea925  libgo/go/os/str.go
  a43b2c4a6beb34efaaef34ae322824d7  libgo/go/os/sys.go
  fd34c02883b961541305e77e6b77db65  libgo/go/os/sys_bsd.go
! 33da686328506761499219ab004d2262  libgo/go/os/sys_darwin.go
! 5e0d9bc0f1f6ead793a29bb42b2d2569  libgo/go/os/sys_freebsd.go
  ce9d201edac3356b112501276aa1c207  libgo/go/os/sys_linux.go
  b2a71f1433e4e86c53bec03db8265b05  libgo/go/os/sys_nacl.go
  48f91a4fd8049ea550cd900cf26f7ac7  libgo/go/os/sys_plan9.go
! 7953fb89f5aa494dc33625f3a92880c2  libgo/go/os/sys_uname.go
! 7658733b988600cd72fa00d5e91a66dc  libgo/go/os/sys_unix.go
! 0f67c05d305071cf4084a1eb4ab39345  libgo/go/os/types.go
  fdc1a679906c3a2e0f863a13a92a1ae8  libgo/go/os/types_plan9.go
! 7cb210309aef2d78c05a98b67cc71333  libgo/go/os/types_unix.go
! cb85d088697f99a9692a6770fbe16d6a  libgo/go/os/types_windows.go
  432f92fc323362b66a4272e7e0115503  libgo/go/os/user/decls_solaris.go
  b588b16cc3211b73358b2c19901d4c4d  libgo/go/os/user/decls_unix.go
  4ab3810c819fc3dea6bfa0cccc511d97  libgo/go/os/user/listgroups_solaris.go
! 79e78c734601fdec34eb2f7df4ea4c85  libgo/go/os/user/listgroups_unix.go
! 76965afab9bf9a713b5fd4b65094e6a6  libgo/go/os/user/lookup.go
! cb580d4a536dbf8fc666f18cad713a53  libgo/go/os/user/lookup_android.go
  78195be327b1c1be4a1fba0a8ea9021d  libgo/go/os/user/lookup_plan9.go
! efdcbdfd33b789b4bea2dcb77b36ff53  libgo/go/os/user/lookup_stubs.go
! bff597465c50fd64e1864bded184d943  libgo/go/os/user/lookup_unix.go
  3010d91a5d72d54fa37f1468286ab8d4  libgo/go/os/user/lookup_windows.go
  27a35b997ca4b402f00b51fbf41e68af  libgo/go/os/user/user.go
! 3d41bc0343be233f13616a4f59946acb  libgo/go/os/user/user_test.go
! d6b973bc86528bbbeee1ed8d2c016d66  libgo/go/os/wait_unimp.go
! 207aee916798561491e33f825c1278e1  libgo/go/os/wait_wait6.go
! 48ef2b9c0e563a8981e21f60bd5935f8  libgo/go/os/wait_waitid.go
! 7683c60a82067644f484fde77529cda9  libgo/go/path/example_test.go
! e3adefc7eb7b08fb2cbd38bbe89474ba  libgo/go/path/filepath/example_unix_test.go
  d53439751e8554fd84fa78a0103cf17d  libgo/go/path/filepath/export_test.go
  4233036575e89add745849a436003709  libgo/go/path/filepath/export_windows_test.go
  c8f18a5b97d2c6be8ce07388fc7c89c5  libgo/go/path/filepath/match.go
! 9bdcdc9bb26de9325186de538058f61f  libgo/go/path/filepath/match_test.go
! e68543af35bef6f7b09a186ba79351a2  libgo/go/path/filepath/path.go
  182004ef31c7f7d0d6071a350a78deef  libgo/go/path/filepath/path_plan9.go
! a80a15de569e794640db6df9aecc4990  libgo/go/path/filepath/path_test.go
! 41cb9add049691e6e648bbceaf8cb8af  libgo/go/path/filepath/path_unix.go
! df1898b13b4474855acb6192e141bcb4  libgo/go/path/filepath/path_windows.go
  868bc1da420fcc7cf1a77e8b9259973a  libgo/go/path/filepath/symlink.go
  67d9ef4276c83f465159c29bb2e2bfa6  libgo/go/path/filepath/symlink_unix.go
! 4cf762b02f472b12d682754c87d3691f  libgo/go/path/filepath/symlink_windows.go
  c6be83bce11c259f2e54880b9a3396cd  libgo/go/path/match.go
  2934d1493d848660ffbd11a5ab41c6af  libgo/go/path/match_test.go
! 08f20d2b894119ad58b5f10f44082302  libgo/go/path/path.go
  f168f216090a9a3a290ff98b94a43b9f  libgo/go/path/path_test.go
! e4edb8ecc350abdbde6ad78cf626f99f  libgo/go/plugin/plugin.go
! e64586f1776fcc6639f8abb202afdd5e  libgo/go/plugin/plugin_dlopen.go
  cdafcae8004178d0abd62422ce751c74  libgo/go/plugin/plugin_stubs.go
! 84f6cd3f873a1531b88aebda0520e50f  libgo/go/reflect/all_test.go
! 0b93a354305042d0f10afd415a9d216d  libgo/go/reflect/deepequal.go
  6db4ea68e12d86479435bf2ca88f4206  libgo/go/reflect/example_test.go
! 162b745a00f511db5023a8bf670f63b1  libgo/go/reflect/export_test.go
  afdb129f8614d2ab1c3696f35cef28ae  libgo/go/reflect/makefunc.go
  4f33e002c65fab64bb4e0fca8d3b6e90  libgo/go/reflect/makefunc_ffi.go
  c2c98c5fd41ecc19f97cdd09b874fa07  libgo/go/reflect/makefunc_ffi_c.c
! e5b3b3bf07fe690a79dd38c8fb687a23  libgo/go/reflect/set_test.go
! 947bb15ac18883053602c79ceae3e506  libgo/go/reflect/swapper.go
  f85e1c21045db9a41164cb7c72373e9b  libgo/go/reflect/tostring_test.go
! b1e154df692c03eacdc815a68548d64e  libgo/go/reflect/type.go
! 838e33678561e76c29948ceb798d34e6  libgo/go/reflect/value.go
! 5daf9d1ea6fab3b12d8abe366ad19ac7  libgo/go/regexp/all_test.go
! 98a32ac542e26af5418edef0c3d9dbd7  libgo/go/regexp/backtrack.go
! 21ff30cdb469e92d9a05a2ce5e27a3df  libgo/go/regexp/exec.go
  b31d554eec2179c2bf7351f41210fbf2  libgo/go/regexp/exec2_test.go
! 23fc0abf34360c0a5b3c89c979675ec4  libgo/go/regexp/exec_test.go
  15459c9a0c3bf5eb4f80172319b21e12  libgo/go/regexp/find_test.go
! 590850286c6b69e00f0cdd556870f903  libgo/go/regexp/onepass.go
! eb3b015efdf0329d94dd7e806c4c9fce  libgo/go/regexp/onepass_test.go
! 5baca43cb1925760423b7dad7377f52c  libgo/go/regexp/regexp.go
  eda8061d00b9c308be33b1d805c5cef7  libgo/go/regexp/syntax/compile.go
  815786a44f6bd0b7e93266dc4ac4569e  libgo/go/regexp/syntax/doc.go
! 5ad95d72a8ad0596e582bbbfb8665135  libgo/go/regexp/syntax/parse.go
  3d1ee86a06e057e18a21fd7c279e6ea9  libgo/go/regexp/syntax/parse_test.go
  fa7a5c563b7be06e9ced902e305223f7  libgo/go/regexp/syntax/perl_groups.go
! 5606c9675129302990efb2b90f557a04  libgo/go/regexp/syntax/prog.go
  7fc9706a7e40f4f60e74cf93bd2feb43  libgo/go/regexp/syntax/prog_test.go
  128fbd29a205bb0ef3134b6fd28531d2  libgo/go/regexp/syntax/regexp.go
  c72cd882c3a1c4ab1e7b8dcbe79526f1  libgo/go/regexp/syntax/simplify.go
--- 67325,67521 ----
  1e50713af550a622ccac96715544e530  libgo/go/net/testdata/singleline-hosts
  9dbc8afb7a2a7b31e934094c4bedfc2a  libgo/go/net/textproto/header.go
  1943646963304a31dcf10d5a53d39a9a  libgo/go/net/textproto/pipeline.go
! 980751b52b78f2a64289edd50ed21c3d  libgo/go/net/textproto/reader.go
! 22aa2955265ade5ec80dbda4a4f1f4c8  libgo/go/net/textproto/reader_test.go
  4129d0642056114957236c93c22da284  libgo/go/net/textproto/textproto.go
  2a8a6cb2b7a73465b2c75a8c37f3f8d6  libgo/go/net/textproto/writer.go
  1071ff120c2e9ff6f1f7416732593705  libgo/go/net/textproto/writer_test.go
! 886a53c56519ab479cb3228a276fa58d  libgo/go/net/timeout_test.go
! 7c281694b25cdbf981326f868de440cd  libgo/go/net/udpsock.go
  a431fd247509e3fa4dfac9ab990ad240  libgo/go/net/udpsock_plan9.go
  1ca693f2711eadf9601689cab90dc4b1  libgo/go/net/udpsock_plan9_test.go
! 3caf513ea2ea241700c5bbb424f3b8d4  libgo/go/net/udpsock_posix.go
! a2140a3c2b630b9241b6477863f1ca77  libgo/go/net/udpsock_test.go
! 1a2f112ecddde4f232e8960ccc01e354  libgo/go/net/unixsock.go
! 3e9fbd3d3c9a4def683ac7883c6ee147  libgo/go/net/unixsock_linux_test.go
  5ec2dffc3281ec8f3a492721ac5bcc69  libgo/go/net/unixsock_plan9.go
! b6f6f07cc02a5f656fa865d3dfec986f  libgo/go/net/unixsock_posix.go
! cdff23f40b8daa1c7dd32d3b08b2cf66  libgo/go/net/unixsock_test.go
! ff70752b91feefc02896685d6e7a0c6a  libgo/go/net/url/url.go
! 65667433b7ee3cfb1543a6eb368cce0e  libgo/go/net/url/url_test.go
! 01c834d311c610d1b73b61b2d9f41f3e  libgo/go/net/write_unix_test.go
! 17cc8fa5fb291b730c9de1219bae05f1  libgo/go/net/writev_test.go
! 7f8311d51134aeee941d582c770e68e9  libgo/go/net/writev_unix.go
  66ab26acccc3ba5e7537a9ff11f07d94  libgo/go/os/dir.go
! fbdc8941a4f3fbb097a5c6030c0d6fdd  libgo/go/os/dir_gccgo.go
! 24a4f8597d8467cbe0a76560a8e79384  libgo/go/os/dir_largefile.go
! 8fca4753ba069e4d2414202931ee99e4  libgo/go/os/dir_libc64_gccgo.go
! 6097e345127fda81141e5225c238f092  libgo/go/os/dir_libc_gccgo.go
  d3cfe6799a6a88601cd99a34802996f0  libgo/go/os/dir_plan9.go
! e32b208b1b947d9e87ca5c9522dbc5dc  libgo/go/os/dir_regfile.go
! ecfe51b0a5745fb17c0be0ba1d4622e4  libgo/go/os/dir_unix.go
! eec41651ce7a0c9d260c59b3c0788809  libgo/go/os/env.go
! 938208d191d15fe72f2a3860523c0919  libgo/go/os/env_test.go
  3a5dbbe37720c94b242b1423356bd580  libgo/go/os/env_unix_test.go
! 18ab1699bd71d86d15c10782485d5de5  libgo/go/os/error.go
! e190a0993f7666c7e8a586d6c997a9fa  libgo/go/os/error_plan9.go
! aeb16711af4c4af5710dae62566b72b7  libgo/go/os/error_posix.go
  35030f5621f5cd27d878f5884894fc28  libgo/go/os/error_test.go
! 5466ef8a52025d53494298f1f6b24362  libgo/go/os/error_unix.go
  9bcc841248f912f7749c00258cac2021  libgo/go/os/error_unix_test.go
  e05e3b47e7720782975caad76ae716b2  libgo/go/os/error_windows.go
  5775a5d025ee0c670d1e8c24cd8643a8  libgo/go/os/error_windows_test.go
! 4401f523afde2d1763606706714cce6c  libgo/go/os/example_test.go
! db49bc05df7fde32bcac881539145091  libgo/go/os/exec.go
! 5da5764a4759c08543e5bc63e0d970f6  libgo/go/os/exec/env_test.go
! a25105829c19300ba74577615bf1391f  libgo/go/os/exec/exec.go
! d5e8a3b3a23209092af2c888842e8615  libgo/go/os/exec/exec_posix_test.go
! 792b35f8f61f8950c4893eadfb3ac326  libgo/go/os/exec/exec_test.go
! 67c24be7edf04e2c116de6e51c2189e5  libgo/go/os/exec/exec_unix.go
! fbb064eec8d475afa58a84d7e9b95eeb  libgo/go/os/exec/exec_windows.go
  2d239d712d33fb848065f13812a876ab  libgo/go/os/exec/internal_test.go
  9502b3c9b5e3729c4876732c362ad464  libgo/go/os/exec/lp_plan9.go
  41619b7d87d5ecc522bc2eafadf2f303  libgo/go/os/exec/lp_test.go
! aa7f48dfae2dc439cb095c9f5e1ea838  libgo/go/os/exec/lp_unix.go
  ce2ff59ee918caafe7b22eb133cf505e  libgo/go/os/exec/lp_unix_test.go
  73cda70d3a2673248ca5988ea9c01fd1  libgo/go/os/exec/lp_windows.go
! 6be5f9fae1f86192debea908704995df  libgo/go/os/exec_plan9.go
! 75c4762eea446e016491735707b46a57  libgo/go/os/exec_posix.go
! f974af1e0a1fd85d23067419969ba6a3  libgo/go/os/exec_unix.go
! 012e697a1bcd3446f6deb4f849a57cad  libgo/go/os/exec_windows.go
! d729378277a4a879c2988b5df1b92d22  libgo/go/os/executable.go
  806f8046066799685a5810067dfeea0c  libgo/go/os/executable_darwin.go
  4dc05db923782c8d7f49fd3099e0e711  libgo/go/os/executable_freebsd.go
+ fbe11481073d5075eefa66b42528677c  libgo/go/os/executable_path.go
  b7de93476c44316aaabb84d7439ad1ac  libgo/go/os/executable_plan9.go
! 1bb02ed2862cdd18b4ac8df2242441f7  libgo/go/os/executable_procfs.go
  f24facbc8d785f440786274040d23dfb  libgo/go/os/executable_solaris.go
! 165dc9523ed1408ec97207ecf51b11e1  libgo/go/os/executable_test.go
  76aa9403bfb354bc7e6c45c4ad819ba5  libgo/go/os/executable_windows.go
  1a476dd5f2a9b5c9b3dad5e8e1075db0  libgo/go/os/export_test.go
! 5eaec89a04438036b1e5dde518a8ae06  libgo/go/os/export_windows_test.go
! cb006c25dc08bfbc807dffd1d9c3eb90  libgo/go/os/file.go
! e1a5f35e2b903b8868faf1f10a715bc2  libgo/go/os/file_plan9.go
! 1030d83b2876a5b00fce37a26d51d1d0  libgo/go/os/file_posix.go
! c09732e6be231c42eb97de2c528e2a9f  libgo/go/os/file_unix.go
! 3040e1a73b2e16347d21e1660ebac89e  libgo/go/os/getwd.go
  946002a354047976f85f0555021ddf04  libgo/go/os/getwd_darwin.go
! a6ba6c9b4e732367df86931724fba3fe  libgo/go/os/os_test.go
! feec135a67930034d9d33128eb4e4046  libgo/go/os/os_unix_test.go
! e52a9273ac8195655c510fedac58fe4c  libgo/go/os/path.go
  17d790f184d67f93da9de65ce2b8970a  libgo/go/os/path_plan9.go
! 1ed7f8597d290246bdfca667f4397433  libgo/go/os/path_test.go
! cac9e3129bb4e7e5d0ac78a2e0f0fc3c  libgo/go/os/path_unix.go
  9c9eecc065f7f4888adb2dc599256fff  libgo/go/os/path_windows.go
  d9d730cee22e5c68b668334a7aaf39da  libgo/go/os/path_windows_test.go
! 1552ea1d48f19f83919fdc491757c639  libgo/go/os/pipe_bsd.go
! f71e9d760e903d2c9df070896650952c  libgo/go/os/pipe_freebsd.go
! 5d497616354e17b79b2cc256616405b6  libgo/go/os/pipe_linux.go
! b6536bbb69e5ee7cc2cd9a0e5cf9620b  libgo/go/os/pipe_test.go
! 4f6e9d2363f605390dbe800587695f63  libgo/go/os/proc.go
! 28c3f83d408b26588fcedd89a458f2a8  libgo/go/os/signal/doc.go
! 2cf30bee30b62298e43eb0b652769b1b  libgo/go/os/signal/internal/pty/pty.go
! 58759641336f8e390834157bdc4c9271  libgo/go/os/signal/signal.go
! 01507fcac301accaa2e51ae3b2dcdf97  libgo/go/os/signal/signal_cgo_test.go
  52fa4a734928af045aafaf5019e9c9e8  libgo/go/os/signal/signal_plan9.go
  6cf1c60023e30d5d680ef01b501db3ee  libgo/go/os/signal/signal_plan9_test.go
! cec2e268befb66839120f226260e3484  libgo/go/os/signal/signal_test.go
! 8f6ef83b1a3b1ea7c0030c5d3c71272f  libgo/go/os/signal/signal_unix.go
! c3a2764cad7b0e3d72287cbdaf77ac78  libgo/go/os/stat.go
! 35c5a228efa5788e048e8488f4ad3dfb  libgo/go/os/stat_aix.go
  d6d0b7f2dd297d5f935f2b4b5e8867d9  libgo/go/os/stat_atim.go
  935e4988e6d00ab23025096627435e65  libgo/go/os/stat_atimespec.go
  69889f3f3aa9c669ff47b492066de899  libgo/go/os/stat_dragonfly.go
  9b75cceaf80e502aa0b934930c14d183  libgo/go/os/stat_nacl.go
! 4da76f19b31b19427fdf8d219f0c73e3  libgo/go/os/stat_plan9.go
  3fa76abf938fab717fa51a63a7939245  libgo/go/os/stat_solaris.go
! c96853eb0e1e97b9fee62a6aee7f3e3f  libgo/go/os/stat_unix.go
  4dedd650473567ac04845fdeec68f466  libgo/go/os/sticky_bsd.go
  f0c2fdcb6855312f5aaf222eead51cb0  libgo/go/os/sticky_notbsd.go
  7278237d114b2684931308a7499ea925  libgo/go/os/str.go
  a43b2c4a6beb34efaaef34ae322824d7  libgo/go/os/sys.go
  fd34c02883b961541305e77e6b77db65  libgo/go/os/sys_bsd.go
! 7c2c44db1edef58f20afde6e3484b3cc  libgo/go/os/sys_darwin.go
! dfc56d9764bd65977236e145cadbd451  libgo/go/os/sys_freebsd.go
  ce9d201edac3356b112501276aa1c207  libgo/go/os/sys_linux.go
  b2a71f1433e4e86c53bec03db8265b05  libgo/go/os/sys_nacl.go
  48f91a4fd8049ea550cd900cf26f7ac7  libgo/go/os/sys_plan9.go
! 993b5e2893b5b89c5c4792d9b2080edd  libgo/go/os/sys_uname.go
! 08ff6ba06b76116f2685ddcbdd113bad  libgo/go/os/sys_unix.go
! eaf925a3dd0ae45ccdd3f398f8b1250c  libgo/go/os/timeout_test.go
! 5eb3d93bfe7e4d8a658f8e8379ff4cc2  libgo/go/os/types.go
  fdc1a679906c3a2e0f863a13a92a1ae8  libgo/go/os/types_plan9.go
! d4dfa6fa1d9d3cae77a56dd3aafa8bb5  libgo/go/os/types_unix.go
! 576a5cfc6d6ed23760850a028785679d  libgo/go/os/types_windows.go
! f57920211a8d9ed15687fc6e69b28bcd  libgo/go/os/user/cgo_lookup_unix.go
! b388c1955e55b763fd26b81b530f648e  libgo/go/os/user/cgo_unix_test.go
! 24be1c687e6c538507a64aaba948f83e  libgo/go/os/user/decls_aix.go
  432f92fc323362b66a4272e7e0115503  libgo/go/os/user/decls_solaris.go
  b588b16cc3211b73358b2c19901d4c4d  libgo/go/os/user/decls_unix.go
+ e066aa2b75bae3e2fb74844b72e5ba5c  libgo/go/os/user/listgroups_aix.go
  4ab3810c819fc3dea6bfa0cccc511d97  libgo/go/os/user/listgroups_solaris.go
! 56cc6bf2e0678c3e5e275a3674176069  libgo/go/os/user/listgroups_unix.go
! 3ded729d786484a8f1bf16bd2b5f9776  libgo/go/os/user/lookup.go
! 96980b26ee2386f37e644d277d6b667e  libgo/go/os/user/lookup_android.go
  78195be327b1c1be4a1fba0a8ea9021d  libgo/go/os/user/lookup_plan9.go
! f0ca5a7020fb6d708b77cea5bbd5e6f1  libgo/go/os/user/lookup_stubs.go
! 3255492ea20305b79d296ab5b386c42e  libgo/go/os/user/lookup_unix.go
! 8f2efb61cdc3a4e8d3723bbf2ff6acdd  libgo/go/os/user/lookup_unix_test.go
  3010d91a5d72d54fa37f1468286ab8d4  libgo/go/os/user/lookup_windows.go
  27a35b997ca4b402f00b51fbf41e68af  libgo/go/os/user/user.go
! ae5b4b1da338f92b68eca74fd6eb8870  libgo/go/os/user/user_test.go
! 54022b6f4980985bbd7a7fcd5a89e8a3  libgo/go/os/wait_unimp.go
! fdf059a2dc8b15335bd8a1fa68bc73ed  libgo/go/os/wait_wait6.go
! 37f908e0112d00afe6e6c4cf14036233  libgo/go/os/wait_waitid.go
! 73ed4c82174b4ef3fbe79b880af5f053  libgo/go/path/example_test.go
! eef9704166fe2f9f06cf45b0095357df  libgo/go/path/filepath/example_test.go
! da9603d940f8012c9f25079701a49c18  libgo/go/path/filepath/example_unix_test.go
  d53439751e8554fd84fa78a0103cf17d  libgo/go/path/filepath/export_test.go
  4233036575e89add745849a436003709  libgo/go/path/filepath/export_windows_test.go
  c8f18a5b97d2c6be8ce07388fc7c89c5  libgo/go/path/filepath/match.go
! af8bf3b44dbdbb4f8d3f0270d3a1d272  libgo/go/path/filepath/match_test.go
! d71b88726718a576f4cce5ad28982bc7  libgo/go/path/filepath/path.go
  182004ef31c7f7d0d6071a350a78deef  libgo/go/path/filepath/path_plan9.go
! 06caf8a7c55bfb914b6bf3de4fee4333  libgo/go/path/filepath/path_test.go
! ee7401c16f64cd8ff99b5343a4bdd501  libgo/go/path/filepath/path_unix.go
! e5eae9c2777b8336193ac50026beef1b  libgo/go/path/filepath/path_windows.go
  868bc1da420fcc7cf1a77e8b9259973a  libgo/go/path/filepath/symlink.go
  67d9ef4276c83f465159c29bb2e2bfa6  libgo/go/path/filepath/symlink_unix.go
! d2a05a7ed41ff56084b2b21155e8b8c5  libgo/go/path/filepath/symlink_windows.go
  c6be83bce11c259f2e54880b9a3396cd  libgo/go/path/match.go
  2934d1493d848660ffbd11a5ab41c6af  libgo/go/path/match_test.go
! c10a11dc4c879cbeb137e64ccd0142e8  libgo/go/path/path.go
  f168f216090a9a3a290ff98b94a43b9f  libgo/go/path/path_test.go
! 35fcba623d38b2d411c2483a560a1b3d  libgo/go/plugin/plugin.go
! 72b31e81308014a4754bcbecc80478aa  libgo/go/plugin/plugin_dlopen.go
  cdafcae8004178d0abd62422ce751c74  libgo/go/plugin/plugin_stubs.go
! 0f36aa517fb88234b67db4aa0a0267fd  libgo/go/reflect/all_test.go
! cf17048e714d02eb30dafdff0260a3ec  libgo/go/reflect/deepequal.go
  6db4ea68e12d86479435bf2ca88f4206  libgo/go/reflect/example_test.go
! 34cb3367aa488760da8c5cdce4745fb8  libgo/go/reflect/export_test.go
  afdb129f8614d2ab1c3696f35cef28ae  libgo/go/reflect/makefunc.go
  4f33e002c65fab64bb4e0fca8d3b6e90  libgo/go/reflect/makefunc_ffi.go
  c2c98c5fd41ecc19f97cdd09b874fa07  libgo/go/reflect/makefunc_ffi_c.c
! a3aea2dfd66c2270d9d6707e9f6f1102  libgo/go/reflect/set_test.go
! 56404290a9509c84dd6aa6a99573eb3b  libgo/go/reflect/swapper.go
  f85e1c21045db9a41164cb7c72373e9b  libgo/go/reflect/tostring_test.go
! a6963b079d2b37e0dd38bf06fd2db343  libgo/go/reflect/type.go
! e498f8f2400f37ae23740121cf2b166a  libgo/go/reflect/value.go
! d729da7b328f7a33fd7cb7d31b64bbe0  libgo/go/regexp/all_test.go
! 4c7311250ce3c09957b725553a307375  libgo/go/regexp/backtrack.go
! af84ec1fbb4d6bd4b1eeb018df5c8230  libgo/go/regexp/exec.go
  b31d554eec2179c2bf7351f41210fbf2  libgo/go/regexp/exec2_test.go
! 6c0bd077b450389496e05b390b8937f1  libgo/go/regexp/exec_test.go
  15459c9a0c3bf5eb4f80172319b21e12  libgo/go/regexp/find_test.go
! 366bac6db3eca78346c3ab64fbc45375  libgo/go/regexp/onepass.go
! 2d9339011711ef49ebd27407781fe905  libgo/go/regexp/onepass_test.go
! 42077c760ab8d47cc4c6b124a637b10f  libgo/go/regexp/regexp.go
  eda8061d00b9c308be33b1d805c5cef7  libgo/go/regexp/syntax/compile.go
  815786a44f6bd0b7e93266dc4ac4569e  libgo/go/regexp/syntax/doc.go
! 646b9fe55fa3736f172069c8158b1118  libgo/go/regexp/syntax/parse.go
  3d1ee86a06e057e18a21fd7c279e6ea9  libgo/go/regexp/syntax/parse_test.go
  fa7a5c563b7be06e9ced902e305223f7  libgo/go/regexp/syntax/perl_groups.go
! 127321b34aeb80364272ede1338bc2c6  libgo/go/regexp/syntax/prog.go
  7fc9706a7e40f4f60e74cf93bd2feb43  libgo/go/regexp/syntax/prog_test.go
  128fbd29a205bb0ef3134b6fd28531d2  libgo/go/regexp/syntax/regexp.go
  c72cd882c3a1c4ab1e7b8dcbe79526f1  libgo/go/regexp/syntax/simplify.go
*************** ce4d01bc256482203dedba6c2e6827df  libgo/
*** 63148,63455 ****
  3e1bb0bc67b431632da2eb15a8cb0149  libgo/go/regexp/testdata/re2-search.txt
  f99f99715745fe92f8a824f11d936a06  libgo/go/regexp/testdata/repetition.dat
  454e3934d6cbf6640a547548f78e70b9  libgo/go/regexp/testdata/testregex.c
! aee22d30dfa1f22f8aeaff012449a0e9  libgo/go/runtime/alg.go
! 5fc3a56fcb7a43a57d4db1e8f59728e7  libgo/go/runtime/append_test.go
  e7f29f036edb7b2a482b3e41fc6bd963  libgo/go/runtime/callers_test.go
! 0d4e34290bc3ac2ac66ea70c40cc3a48  libgo/go/runtime/cgo_gccgo.go
! e77e87fd804296065d71aaa8d363a3c0  libgo/go/runtime/cgocheck.go
! 9447bb04f6dc3fd0c3afae9630ecc27e  libgo/go/runtime/chan.go
! 8ee7307a18dbf21cda8f075e80e73f55  libgo/go/runtime/chan_test.go
  8ffae3495d4fb30049127cd979981436  libgo/go/runtime/chanbarrier_test.go
  fb78502ca8f0a4bfc5b6b5dbb4ff54d5  libgo/go/runtime/closure_test.go
  7971d50020cc0b08b89878bba0ec9d82  libgo/go/runtime/compiler.go
  e0c63ad8382340442573a02a97aebcda  libgo/go/runtime/complex_test.go
! 172c725ce3d361cb2fdb4fe932535dd5  libgo/go/runtime/cpuprof.go
! 2a5f8f64481f6f01debc3d6f3c2cfa80  libgo/go/runtime/cputicks.go
! ef1cbcd906908cdc1ee80e5dba03f5c9  libgo/go/runtime/crash_cgo_test.go
  daaf27f5a449364fc5230fd72182bc68  libgo/go/runtime/crash_nonunix_test.go
! c358322e50d0f66955f1ea87887e5192  libgo/go/runtime/crash_test.go
! 152e3fb62d88a0af77b1d6a31bd22e4b  libgo/go/runtime/crash_unix_test.go
! c1c5f6902038d665ea5aa1382b067031  libgo/go/runtime/debug.go
! 7a4c0d420ba36ec64697f11b39433034  libgo/go/runtime/debug/garbage.go
! f56841ca8824f3ea2b28de717296a720  libgo/go/runtime/debug/garbage_test.go
  886ff7ddc7468b26880da5d2a958e690  libgo/go/runtime/debug/heapdump_test.go
  324e61ddc62f45a1d1c3fd20a427062a  libgo/go/runtime/debug/stack.go
  ec8b10590da2a5a6bb5963eb53657892  libgo/go/runtime/debug/stack_test.go
  a85550fb24ca8225b8874b47efa133df  libgo/go/runtime/debug/stubs.go
! 8c23a5b714f7fdcd7610aaa3b6476897  libgo/go/runtime/env_posix.go
  6afbee4232da9dafe1ea6550571f0e4a  libgo/go/runtime/env_test.go
! 7f6d8f6a616656c2bff078cfca3eac01  libgo/go/runtime/error.go
  fa8fb2c58aeefaa0903c09cdc349b2c1  libgo/go/runtime/export_arm_test.go
  80be347c54d2cde7eb87a115d00fcdf1  libgo/go/runtime/export_linux_test.go
  549e9a5cd7c5a1d8939452a19e7c8096  libgo/go/runtime/export_mmap_test.go
! 74c5745e4bb2f4b341db9d67658c8e32  libgo/go/runtime/export_test.go
  6cf8e5461555704101c96680c126d3d9  libgo/go/runtime/export_windows_test.go
! 1f82b6ca8dc2afad375084b3869fc273  libgo/go/runtime/extern.go
! 13c992f93d0a47e3bbe9f3ca5be273e6  libgo/go/runtime/fastlog2.go
! 7db1505f342bef27d66c683aaea75012  libgo/go/runtime/fastlog2_test.go
! 3a03ab47d31331568db5f57265a3af75  libgo/go/runtime/fastlog2table.go
  0002f4b688cd2db0c9b444201dadd1f6  libgo/go/runtime/ffi.go
! c9111a913492d6c7c5a10781cf45fa00  libgo/go/runtime/gc_test.go
  f337a597a4f1a97884c416a80b0b9a0b  libgo/go/runtime/gcinfo_test.go
! d5d4786981eb9c4feae8e89c74647134  libgo/go/runtime/hash32.go
! ab5badbb77a9775192bce41f7865f737  libgo/go/runtime/hash64.go
! 63c80916751c357c99ede1c0b8553615  libgo/go/runtime/hashmap.go
! 0ca8326a8a6f26109fb732bb92f57199  libgo/go/runtime/hashmap_fast.go
  a6c32b4dd4b3f757481b3ec4c3dda7e5  libgo/go/runtime/iface.go
! 94b4a37feb20fd554f36841215d907bc  libgo/go/runtime/iface_test.go
! f9ea57f9d4a1b304d1593fdc48a39330  libgo/go/runtime/internal/atomic/atomic.c
! 6ec681da3da1661cd52c0e41b5225de0  libgo/go/runtime/internal/atomic/atomic_test.go
  2553a458d50628e4a54fc8c6d6a4c6cf  libgo/go/runtime/internal/atomic/bench_test.go
  f83c8a95c3e3dd03d3686f67102ee264  libgo/go/runtime/internal/atomic/gccgo.go
  7610ec5c66144ce30b1702e3af136483  libgo/go/runtime/internal/atomic/stubs.go
! 6e47373932eac50d8aec48ab51354976  libgo/go/runtime/internal/sys/intrinsics.go
! 28b91144c2d70da93ffa6674f9142dc3  libgo/go/runtime/internal/sys/intrinsics_test.go
! 054c7576b314d168546f7d251541d1ef  libgo/go/runtime/internal/sys/stubs.go
! e500aff46eba14adeacdfd82a6ccd69c  libgo/go/runtime/internal/sys/sys.go
! b9082ef932068399b5f7dad80736e47f  libgo/go/runtime/lfstack.go
! cbc80741c070fef3b32ad66d02889df1  libgo/go/runtime/lfstack_32bit.go
! adbf4acb1db83eba03e67d165061ec26  libgo/go/runtime/lfstack_64bit.go
  67fe49711e28c2362368b34e8bb09969  libgo/go/runtime/lfstack_test.go
! bf8fcac9bcb662b73656c02eb339ce38  libgo/go/runtime/lock_futex.go
! b14de3dd4c758bc52f3b25dc592ae899  libgo/go/runtime/lock_sema.go
! f743ceb4d1e5b0828e924130118e2887  libgo/go/runtime/malloc_test.go
! 1adf11b90e96a743c16f47249fae1ea4  libgo/go/runtime/map_test.go
! 0a4e4bf2e4d5ddaec6fd21e15284b3ca  libgo/go/runtime/mapspeed_test.go
! d30174981334399407f82b2ab9eb6624  libgo/go/runtime/mcache.go
! fa02f50d162ef92b760f2c7490181c7a  libgo/go/runtime/mfinal_test.go
  03ab18355c7ec77833a6c0553eb6a097  libgo/go/runtime/mkfastlog2table.go
! edc5a36c08c4f19e5dd802cbadf5185b  libgo/go/runtime/mksizeclasses.go
! 508e4dcbf2fb4a5b0cfa203f0957bae9  libgo/go/runtime/mprof.go
  1f8cbaaa29a05b35885b1271df731200  libgo/go/runtime/msan/msan.go
  400196169ecbd5bbad801a7d9075caa7  libgo/go/runtime/msan0.go
! 169eea81d7087f83d33e7d226bb525d3  libgo/go/runtime/mstats.go
! 78dfc4772319936d8286cadd953cd23e  libgo/go/runtime/mstkbar.go
! d7e7cd610e60e8caf1199415529c3548  libgo/go/runtime/net_plan9.go
! e0ebaa41d72e2f8f6cf921f82fc1da1b  libgo/go/runtime/netpoll.go
! eec1bfce6661017df13cdc7ff9bb66cc  libgo/go/runtime/netpoll_epoll.go
! 2189c0fc9a86d2dceb108803cf1f131e  libgo/go/runtime/netpoll_kqueue.go
! 1554f8fea60fe25e7eac89b4b712f10e  libgo/go/runtime/netpoll_nacl.go
! 4df6001b219b988e45fb69aab7ea8790  libgo/go/runtime/netpoll_solaris.go
! 536121e41053b1e735daa25179f933f3  libgo/go/runtime/netpoll_stub.go
! 29cbddeae537ba0c2476071059bc81fb  libgo/go/runtime/netpoll_windows.go
  f51f7ca4882f1066d7b003f60bcb10a4  libgo/go/runtime/norace_test.go
  5d5b45aca12c04c74eed7fb37c7363ae  libgo/go/runtime/os_darwin.go
  51683b22ceba1c150d1c6c3fdf336ec8  libgo/go/runtime/os_dragonfly.go
! 3f16e040bcd1a4909ce3382807b04080  libgo/go/runtime/os_freebsd.go
! 7276d12572fa9fce635e2a6099072d4b  libgo/go/runtime/os_gccgo.go
! 6dc2794d059aa2845794956c5b4c2d16  libgo/go/runtime/os_linux.go
! b0b41116e1bc10e911089c441a1bf01b  libgo/go/runtime/os_linux_ppc64x.go
! 2a2963395b190cffe32cc1e3c9c67f64  libgo/go/runtime/os_netbsd.go
  972decea7a907bbe54acaa14841f1351  libgo/go/runtime/os_openbsd.go
  6d7803bd939cea690145ad267cb353c2  libgo/go/runtime/os_solaris.go
! 6a7b2012f64a9a0900f562244e16a0cf  libgo/go/runtime/panic.go
! 03e3e952358e25a91bb45a2199df7206  libgo/go/runtime/pprof/internal/protopprof/protomemprofile.go
! f4b32030ea8c77c16e6dd4831677cd69  libgo/go/runtime/pprof/internal/protopprof/protomemprofile_test.go
! b7412e47774b4ebb4968f19a52cc148d  libgo/go/runtime/pprof/internal/protopprof/protopprof.go
! 5aba2b001349c910a16ba29cdf1602f5  libgo/go/runtime/pprof/internal/protopprof/protopprof_test.go
! 2901b711e20abe3680b27bfaecd483bd  libgo/go/runtime/pprof/mprof_test.go
! c6c847f0e8d5f6de1009393771adeb14  libgo/go/runtime/pprof/pprof.go
! a5403d29ab59f887b9938b1c84de607f  libgo/go/runtime/pprof/pprof_test.go
! e476ac5a976820a735c2bccd8ba52d30  libgo/go/runtime/print.go
! d637f1f287e61c00b12c36289aeb0337  libgo/go/runtime/proc.go
! 3f857a964df812f927e79d074359c8a6  libgo/go/runtime/proc_runtime_test.go
! fb498b75f09efe3ba1b71bed11f38b37  libgo/go/runtime/proc_test.go
  3635463231d5b3e540aa7758551a4f32  libgo/go/runtime/race0.go
  56128eed8000406a61eb314c4400f21d  libgo/go/runtime/rdebug.go
! 72c2f0c498a265e6877059413e082ec4  libgo/go/runtime/runtime-lldb_test.go
! 7c1b376185c3f44dbd147ae7aebed754  libgo/go/runtime/runtime.go
! fcd4b23dc1bff3197e20291aa27440de  libgo/go/runtime/runtime1.go
! c8a894eeb193c867c7a4272ca55ec7b0  libgo/go/runtime/runtime2.go
! c3d73fd4e89cc9df0a30bbd4f0550ec4  libgo/go/runtime/runtime_mmap_test.go
! 3686b4b353591905824e03cf9eb1bb12  libgo/go/runtime/runtime_test.go
! b9049af55aeb3cf372639927d3ca0c67  libgo/go/runtime/runtime_unix_test.go
! 1a4102d639b231790696e159166d8aee  libgo/go/runtime/select.go
! 9163a91bdc797e4c9a2545e9b49cc295  libgo/go/runtime/sema.go
! 9f3fc0803a14b415e10f4b7446acda59  libgo/go/runtime/signal_gccgo.go
! 96819b51631c3e354e8f519adee00d3a  libgo/go/runtime/signal_sighandler.go
! dbd468186e208d8c2e356dc9509135ff  libgo/go/runtime/signal_unix.go
! fb6d54e4b532ee7c7aa4d3a56825d26b  libgo/go/runtime/sigqueue.go
! b628342a580faa7575b8a50224fa42e6  libgo/go/runtime/sizeclasses.go
! afd6fcba326df4384505a4831432638c  libgo/go/runtime/slice.go
  dd8de854fcc707a4cd30321f3c68adb7  libgo/go/runtime/stack.go
! 8b04fdec20a29c5472ebf0e6aed86153  libgo/go/runtime/string.go
! ebce37e824ce1750ca082f2807dcb1ba  libgo/go/runtime/string_test.go
! cd32c3d7d523b714d59e13c1f4ee93e9  libgo/go/runtime/stubs.go
! 6c524be0555000c608636693aa19466e  libgo/go/runtime/stubs2.go
! 72d4059540366c60df637b8d045df8c1  libgo/go/runtime/symtab.go
! 5205d50826552c102726b76dd00e8eb5  libgo/go/runtime/symtab_test.go
! b60bfefd371c81208c0d6f9b0afafb25  libgo/go/runtime/testdata/testprog/crash.go
  bb30d6ba31e551a5688df10efb10b827  libgo/go/runtime/testdata/testprog/deadlock.go
! 748eba117edbc70f5f7f31dc98c27716  libgo/go/runtime/testdata/testprog/gc.go
  d9e02d0b5bbe11e3d270bbd949888cf8  libgo/go/runtime/testdata/testprog/main.go
  1e74a8f6718e1af4736e09e826b27dc4  libgo/go/runtime/testdata/testprog/map.go
  126ff9677509955c3bcd4cbcd0fcbc36  libgo/go/runtime/testdata/testprog/memprof.go
  e9e92bff3636bbec8c572dab5cdc5847  libgo/go/runtime/testdata/testprog/misc.go
  65f72b515bc986e5191ca32cbe37f249  libgo/go/runtime/testdata/testprog/signal.go
  b86bee5ad967b6809bba1a6e5ba90247  libgo/go/runtime/testdata/testprog/stringconcat.go
! e32485982b42f1a9c16b55f3dca5934a  libgo/go/runtime/testdata/testprog/syscall_windows.go
  b67ffc75ff026c7d58fadbab4cfc0ee8  libgo/go/runtime/testdata/testprogcgo/aprof.go
! 75e8c06b2c722661a21424a068591085  libgo/go/runtime/testdata/testprogcgo/callback.go
! 9fb3d3fa8c2af5bb46a45161236ae4b3  libgo/go/runtime/testdata/testprogcgo/cgo.go
! b60bfefd371c81208c0d6f9b0afafb25  libgo/go/runtime/testdata/testprogcgo/crash.go
  88e0bb6d68a5214c81759f62d5bf42c4  libgo/go/runtime/testdata/testprogcgo/deadlock.go
  9aa7f1011ace39f6b7db514a4f177285  libgo/go/runtime/testdata/testprogcgo/dll_windows.go
  817552d9d1b1e53369cd97b1187c63c9  libgo/go/runtime/testdata/testprogcgo/dropm.go
  459ea91b6e71cd736d3c50e96e8e459b  libgo/go/runtime/testdata/testprogcgo/dropm_stub.go
  d2eed097021be63a40c5fde6b816a699  libgo/go/runtime/testdata/testprogcgo/exec.go
  d9e02d0b5bbe11e3d270bbd949888cf8  libgo/go/runtime/testdata/testprogcgo/main.go
! a36043221b938742675c895095919d12  libgo/go/runtime/testdata/testprogcgo/pprof.go
! 48c5684829d2584ffebd4a39c394ceff  libgo/go/runtime/testdata/testprogcgo/raceprof.go
  1ce59c405589a9b13ae288bfffe64756  libgo/go/runtime/testdata/testprogcgo/racesig.go
  f130568d34a09b1fec48db4dc63abd45  libgo/go/runtime/testdata/testprogcgo/threadpanic.go
  21ca4bdb7d827c5d39c0f256ed673d6c  libgo/go/runtime/testdata/testprogcgo/threadpanic_unix.c
  4521507061b29e1f266a11e2a7a99698  libgo/go/runtime/testdata/testprogcgo/threadpanic_windows.c
! a4301096d4afcf12888ea76c2b517129  libgo/go/runtime/testdata/testprogcgo/threadpprof.go
  15f8cc955e22863859c5c3635107dbc4  libgo/go/runtime/testdata/testprogcgo/threadprof.go
! f5c9ef2c8be29a1385b25af8db902611  libgo/go/runtime/testdata/testprogcgo/traceback.go
! 927fc9ed6f675edac223e75481c763ce  libgo/go/runtime/testdata/testprogcgo/tracebackctxt.go
! 5349ffd7cee8947eb5d2b33abc261889  libgo/go/runtime/testdata/testprogcgo/tracebackctxt_c.c
  e54464bf9fe49e30bc8920e26aa4fbd3  libgo/go/runtime/testdata/testprogcgo/windows/win.go
  d9e02d0b5bbe11e3d270bbd949888cf8  libgo/go/runtime/testdata/testprognet/main.go
  286288807cc6c215bcfb8cc6ac39327e  libgo/go/runtime/testdata/testprognet/net.go
  1694e0722cde3899e720ba704eaf1360  libgo/go/runtime/testdata/testprognet/signal.go
! c16a5df37d47259a222b558bec27e3c0  libgo/go/runtime/time.go
! fda04a68c8aef72ec74087263899edd5  libgo/go/runtime/trace.go
! ba2c44f872c6301e93ae692300f99a34  libgo/go/runtime/trace/trace.go
! e017e5c039dc373cbd9a275f520ceacc  libgo/go/runtime/trace/trace_stack_test.go
! 3b113bf9ba732f09362203be3ba27c18  libgo/go/runtime/trace/trace_test.go
! 25c9eb91cad82dbf13223a9032963817  libgo/go/runtime/traceback_gccgo.go
! 63a6f0b9dd09bf428900ecfb656c1566  libgo/go/runtime/type.go
  48082aef9f09423dc8dc73ea4e9fc3e1  libgo/go/runtime/typekind.go
! 2f182554d899d5dbd2c5313f4dfe3606  libgo/go/runtime/unaligned1.go
! ed24affac73be1ab8800f7d301374fe3  libgo/go/runtime/unaligned2.go
  b013e3daff4fd579a590b725d1297bec  libgo/go/runtime/utf8.go
  825eb73ede469df9e8afe418993814be  libgo/go/runtime/vdso_none.go
  f44bd95750b08ffb83cfa731995cbeed  libgo/go/runtime/write_err.go
! c549bece88fa8cf031f4e87cad24e4bf  libgo/go/runtime/write_err_android.go
! 285d654375f5d584fb3fdc54114c4d70  libgo/go/sort/example_interface_test.go
! 3f3252dbe4111789cb78e675ffe83e6d  libgo/go/sort/example_keys_test.go
! 4f4c96fd3ac70feb7b80b85e8c09be65  libgo/go/sort/example_multi_test.go
  603bfbb67df6fcfbdafe37cb4a6422e8  libgo/go/sort/example_search_test.go
! c32c1622b9f2f19e9cce84fd98d2cfe5  libgo/go/sort/example_test.go
  21ebe3c56494e1ebc52acb3251a6f78a  libgo/go/sort/example_wrapper_test.go
  5ec468d74053964b118cc04effd2611c  libgo/go/sort/export_test.go
! 430c9de0299ba863d5ffa7071bda3705  libgo/go/sort/genzfunc.go
! 920dac8305f2842c6790f887c4dad0ea  libgo/go/sort/search.go
  3e876da36a15eeb8775010f13220c341  libgo/go/sort/search_test.go
! 80e2542ec2df329fa7c7d20dfd25d487  libgo/go/sort/sort.go
! db3f1da4d35a5c56cf5dffee98abd0dd  libgo/go/sort/sort_test.go
! 9ec81581e254960aa988d68a927a7422  libgo/go/sort/zfuncversion.go
  406086b494572e7e157e03b31b7fac2a  libgo/go/strconv/atob.go
  2b0e97637f1876802fd5251d27c86e27  libgo/go/strconv/atob_test.go
  d6cc2565be786f8310d233e9e97760f1  libgo/go/strconv/atof.go
! d15d9045c34b21cd6b25cd954baf7fd5  libgo/go/strconv/atof_test.go
! e322b856ccabda5b6b70fd9f29a224cd  libgo/go/strconv/atoi.go
! c6f0366a25bdba6db187520f464f4b6d  libgo/go/strconv/atoi_test.go
! 38821296d6863fcd9aa22f82d49571c5  libgo/go/strconv/decimal.go
  c8fbcf5ed89480898c8ad5a5f7e91a2f  libgo/go/strconv/decimal_test.go
  790da09b83530dac4ad162ec02e10298  libgo/go/strconv/doc.go
  afa472bc214a22060471683945670b62  libgo/go/strconv/example_test.go
! 437cefa445359779e2d5eef8f95f35e4  libgo/go/strconv/extfloat.go
  deae6f87af61351b28e00a4509bcf6a9  libgo/go/strconv/fp_test.go
  cae641b1b471058ef98c965eada7d7bc  libgo/go/strconv/ftoa.go
  f184358712647a185146e235615a3bb8  libgo/go/strconv/ftoa_test.go
  c85e39623b22d1a4ea56bf05e1010929  libgo/go/strconv/internal_test.go
! ddc82e97e139935e5d852dca75fce69f  libgo/go/strconv/isprint.go
! e9cdd547c4169e03f0c8d462a8ee1dab  libgo/go/strconv/itoa.go
! 6b3d13da961039a9baa19efddea65721  libgo/go/strconv/itoa_test.go
  8ee53ce1084ac8d79cfa87c2ffd9c3d8  libgo/go/strconv/makeisprint.go
! 542e27e6d6590c2a61100d4e362143d6  libgo/go/strconv/quote.go
  01eb323ab5b738610144b057dfafa7c1  libgo/go/strconv/quote_test.go
  b5f697a60a1a2cf0dc67b26073e5ae79  libgo/go/strconv/strconv_test.go
  dc1ca447fa01cae0bb5de6427d6aa4ae  libgo/go/strconv/testdata/testfp.txt
  dc1ca447fa01cae0bb5de6427d6aa4ae  libgo/go/strconv/testfp.txt
  5fc7909f4a161bb1377a9841315a6285  libgo/go/strings/compare.go
  b589c811c05e4cc835297d70fa72372e  libgo/go/strings/compare_test.go
! 724be430905596ed9c8d72e819aa9d87  libgo/go/strings/example_test.go
  71dc96ee07707f51b3e212e395920640  libgo/go/strings/export_test.go
  662bbb28b54637d6f21a4bc802e49805  libgo/go/strings/indexbyte.c
  5062d779106a6a4889ac816c59c181ee  libgo/go/strings/reader.go
  dc19b297c4e05e398dd7be102c8eb8af  libgo/go/strings/reader_test.go
  5d0c9368d321da9967fa2a8aae8e0fe5  libgo/go/strings/replace.go
! 1a682ddb74b6b12c59257fe45475a902  libgo/go/strings/replace_test.go
  97b6e2b538f36a21a939616a937151b0  libgo/go/strings/search.go
  a05591c865981302f636deae83006dc9  libgo/go/strings/search_test.go
! 58080c3dd2a7d7a7e8a0a19a2b4d5bc8  libgo/go/strings/strings.go
! ea299b99fc71be3d74bcc1a8b5fc4475  libgo/go/strings/strings_amd64.go
  b6a041a2afd2762d62939295123d2969  libgo/go/strings/strings_decl.go
! c6ad1c4f969a46888369c6de9d1f4365  libgo/go/strings/strings_generic.go
! b791aab16a6c5455e743a4044d7322ae  libgo/go/strings/strings_s390x.go
! 258899d661ba00162de16d1816da9b89  libgo/go/strings/strings_test.go
  276bd271d04a6354525785c2358f3a96  libgo/go/sync/atomic/64bit_arm.go
! 89dfd08574a97e4623d7d8f0e2823c42  libgo/go/sync/atomic/atomic.c
! 8b0d7319234e09ad405443d9b1f51155  libgo/go/sync/atomic/atomic_test.go
! 8975d4c6ae9e0cfedda9fab127bad986  libgo/go/sync/atomic/doc.go
! 5520d28ad187c53caa1764d6e9f2d269  libgo/go/sync/atomic/value.go
  4f347460c2cfe87c3662c40d0da68071  libgo/go/sync/atomic/value_test.go
  06ece0ce3f835256b09c76b569f08853  libgo/go/sync/cas.c
! ac1efbc92507c9739fa2f01fa4501bf1  libgo/go/sync/cond.go
  5f718d809cfe43214a86eadbed8dc0ce  libgo/go/sync/cond_test.go
  5e8ce2e0a595e04701e5deed174f386b  libgo/go/sync/example_pool_test.go
  379823b8233ddc7532c13535342b773c  libgo/go/sync/example_test.go
! ca2886b25dbc91e0909a91f085552445  libgo/go/sync/export_test.go
! 2b083a1f9be7b434b2b1c9ccec46d68c  libgo/go/sync/mutex.go
! 42decb6b329c709944b1b0a6e6b92598  libgo/go/sync/mutex_test.go
  00b3e6f759fa1123855558198d28ac7b  libgo/go/sync/once.go
  2c3240d310641137172167ba79ac92de  libgo/go/sync/once_test.go
! 77860760abb314d02d2740a8c1a66922  libgo/go/sync/pool.go
! fb919e0e15d3917c8ae164d1890625aa  libgo/go/sync/pool_test.go
! b0bbbabd8f6767382c30f4bcde7f85b0  libgo/go/sync/runtime.go
! 1e8a981bc4ab3e7ababe69b75268b39f  libgo/go/sync/runtime_sema_test.go
! c29d0d813223afc392e43b89199e9fa7  libgo/go/sync/rwmutex.go
! f99bc3f593c250da13e19a1ed6ef8a15  libgo/go/sync/rwmutex_test.go
! 97a4c9994562e49fae9643eb9f585b4b  libgo/go/sync/waitgroup.go
! 7f95708d30338fcc8ef43e8ca5830349  libgo/go/sync/waitgroup_test.go
  d9a06655122fa0366d7dc862ae70eb72  libgo/go/syscall/bpf_bsd.go
  bcba9c41e717ecc5f9fadedc63b51631  libgo/go/syscall/clone_linux.c
  59298e712286f79b16fe86c28ab48fc8  libgo/go/syscall/const_plan9.go
! a30c9d0167d3b7fb0b893368c3f515b0  libgo/go/syscall/creds_test.go
  f3bc6044d11bfddc8ddee276c7c3c8a0  libgo/go/syscall/dir_plan9.go
! b3110cd62c3d07c12daaa13272d83f68  libgo/go/syscall/dirent.go
! 875606e47127560e36183f2405f64fb8  libgo/go/syscall/endian_big.go
! 698cf46025551ba470cd05c52157ff54  libgo/go/syscall/endian_little.go
  9832868167a1d42c8a06590a112a2245  libgo/go/syscall/env_plan9.go
! ceab0859820d947a70ee38ed817cb66b  libgo/go/syscall/env_unix.go
  d41ae004fe224f7396c64cd869b7ee88  libgo/go/syscall/env_windows.go
! 76cf89ba805c0ab5b30db29ee4904f3c  libgo/go/syscall/errno.c
! 0c64daafb149cddc0df06fc0d2111124  libgo/go/syscall/errors_plan9.go
  1aabf75ca92dbeb562623989ba46ff3a  libgo/go/syscall/errstr.go
  329478caf0b70806a46a5c308fab8c52  libgo/go/syscall/errstr_linux.go
! 0a73db02192de796b33e8e2ebeeb3f15  libgo/go/syscall/exec_bsd.go
! 74cf70b67fd9621608133187363b3e54  libgo/go/syscall/exec_linux.go
! a24914344351010284e34c0f42cbc729  libgo/go/syscall/exec_linux_test.go
  e37f71a22ebb8d890d1917af8996c9d7  libgo/go/syscall/exec_stubs.go
! 0795cedc1ba9b34d3f6147e519e98943  libgo/go/syscall/exec_unix.go
! fcfbdf4a9d5ce403011860e077002466  libgo/go/syscall/exec_unix_test.go
! 4d2abeff1cc6e9ad73c6abb12cdb6e5b  libgo/go/syscall/exec_windows.go
  687f993fe615bbec0dd2869fc28d3640  libgo/go/syscall/export_test.go
! 48583839714a4fd506e1be588e7fb2d9  libgo/go/syscall/export_unix_test.go
  e8d7db901538b645809e281c373f185d  libgo/go/syscall/libcall_bsd.go
  e59e4cfb46884347fe7f82a32f20a8a4  libgo/go/syscall/libcall_irix.go
! b4b7b96d7096b40e64d8368bd039c3dc  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
! 8c2ee0a99e4cd87dfbabb848454eb4e4  libgo/go/syscall/libcall_linux_ustat.go
  b5f13f78bdec181d93be33d7c9e6e761  libgo/go/syscall/libcall_linux_utimesnano.go
! b45b2fa05ef81d9b535d276b115cc9bd  libgo/go/syscall/libcall_posix.go
! d0dd38e814cc1d369df66d3119fbd64a  libgo/go/syscall/libcall_posix_largefile.go
! fd1fb944956f3a15cfa0f403985a4afc  libgo/go/syscall/libcall_posix_regfile.go
! 7ea1e59e66968504e2a55cd8757ced86  libgo/go/syscall/libcall_posix_utimesnano.go
  0d15b09d1ea6051acbfbd14d967c5896  libgo/go/syscall/libcall_solaris_386.go
  db8674dc2f974e11a4dbb83d3538ef72  libgo/go/syscall/libcall_solaris_amd64.go
  9b6c3ba061ae00628e2837722268295e  libgo/go/syscall/libcall_solaris_sparc.go
  db8674dc2f974e11a4dbb83d3538ef72  libgo/go/syscall/libcall_solaris_sparc64.go
  245890ded83cf01a69151e347f18bb8b  libgo/go/syscall/libcall_support.go
  4a419aa6ee84d47246c4eee7e7e11188  libgo/go/syscall/libcall_uname.go
! b1d5fe6eea4796e7a26540ead689af5b  libgo/go/syscall/libcall_wait4.go
  3c4f9f4bc5b99a813125d248ad08e80f  libgo/go/syscall/lsf_linux.go
  1763536b012556ee2ab6948c630af24f  libgo/go/syscall/mksyscall.awk
! 8d62038a0161c74b2f1efd0f4b071fcc  libgo/go/syscall/mmap_unix_test.go
  c7faa8214b138ba27eed688d7bb69fc8  libgo/go/syscall/msan0.go
  d3e6f2d4f4ffdc8a6194895ce4b038b0  libgo/go/syscall/netlink_linux.go
  5584f312b0785c1e0a824dc8b8a7342f  libgo/go/syscall/pwd_plan9.go
  431aa916719c6809a26a18b8cdcf028f  libgo/go/syscall/route_bsd.go
--- 67527,67922 ----
  3e1bb0bc67b431632da2eb15a8cb0149  libgo/go/regexp/testdata/re2-search.txt
  f99f99715745fe92f8a824f11d936a06  libgo/go/regexp/testdata/repetition.dat
  454e3934d6cbf6640a547548f78e70b9  libgo/go/regexp/testdata/testregex.c
! 637889027f34ae4ce3845cfa6e8ab29b  libgo/go/runtime/alg.go
! b720227a496efdf48076e328a8846563  libgo/go/runtime/append_test.go
! 37c91d5c0730c6a668965ce5e5c29d3f  libgo/go/runtime/atomic_pointer.go
  e7f29f036edb7b2a482b3e41fc6bd963  libgo/go/runtime/callers_test.go
! 8844bc44348e17476e5970548502b2b7  libgo/go/runtime/cgo_gccgo.go
! 6f68ee9a3f352bce104486659fe5d62e  libgo/go/runtime/cgocall.go
! 685c7c2c6a348b7e46eb06da6dd79606  libgo/go/runtime/cgocheck.go
! 5d048887c0815605ed6585393b4e2960  libgo/go/runtime/chan.go
! dbd8465aa367f1faa7cf1a9bdc6e1855  libgo/go/runtime/chan_test.go
  8ffae3495d4fb30049127cd979981436  libgo/go/runtime/chanbarrier_test.go
  fb78502ca8f0a4bfc5b6b5dbb4ff54d5  libgo/go/runtime/closure_test.go
  7971d50020cc0b08b89878bba0ec9d82  libgo/go/runtime/compiler.go
  e0c63ad8382340442573a02a97aebcda  libgo/go/runtime/complex_test.go
! 1d839b3d4117eb0e8172f3543ae8cd82  libgo/go/runtime/cpuprof.go
! ef187dd90ca6e1853af6c27c75bdb11b  libgo/go/runtime/cputicks.go
! dda581c8789bac592b443ebeba71a3cd  libgo/go/runtime/crash_cgo_test.go
! 88eadbdce378032685b17efca5c713a9  libgo/go/runtime/crash_gccgo_test.go
  daaf27f5a449364fc5230fd72182bc68  libgo/go/runtime/crash_nonunix_test.go
! 48425564a8346838aed5cc5ae01c2902  libgo/go/runtime/crash_test.go
! a86992798a7e011d44815ab695ec2ec9  libgo/go/runtime/crash_unix_test.go
! 5f47319378e071d175b13763793f74eb  libgo/go/runtime/debug.go
! 56659816ee221b228427510ea5deaf6b  libgo/go/runtime/debug/garbage.go
! ad795ea82c891dcc44b81669415d5bb3  libgo/go/runtime/debug/garbage_test.go
  886ff7ddc7468b26880da5d2a958e690  libgo/go/runtime/debug/heapdump_test.go
  324e61ddc62f45a1d1c3fd20a427062a  libgo/go/runtime/debug/stack.go
  ec8b10590da2a5a6bb5963eb53657892  libgo/go/runtime/debug/stack_test.go
  a85550fb24ca8225b8874b47efa133df  libgo/go/runtime/debug/stubs.go
! cb7f514b663c77b2a342b3fc2da29531  libgo/go/runtime/env_posix.go
  6afbee4232da9dafe1ea6550571f0e4a  libgo/go/runtime/env_test.go
! a799d07c7c591de0cd4a5f504133f464  libgo/go/runtime/error.go
! d2050b8f18fa53158c75416e6fe6ebf7  libgo/go/runtime/example_test.go
  fa8fb2c58aeefaa0903c09cdc349b2c1  libgo/go/runtime/export_arm_test.go
  80be347c54d2cde7eb87a115d00fcdf1  libgo/go/runtime/export_linux_test.go
  549e9a5cd7c5a1d8939452a19e7c8096  libgo/go/runtime/export_mmap_test.go
! 8192311612e1160e1a9879ed2094d863  libgo/go/runtime/export_test.go
! b9b04fe90aeeab3c077cb0c1c57f3750  libgo/go/runtime/export_unix_test.go
  6cf8e5461555704101c96680c126d3d9  libgo/go/runtime/export_windows_test.go
! 8f662f216736deead858314126d66b2c  libgo/go/runtime/extern.go
! c320b7da530e4f0897ae4a0e5f245bdd  libgo/go/runtime/fastlog2.go
! 98fa37aa2849cd0923db32ac978bfcea  libgo/go/runtime/fastlog2_test.go
! 359282ba427dcd725c239f7f11fba690  libgo/go/runtime/fastlog2table.go
  0002f4b688cd2db0c9b444201dadd1f6  libgo/go/runtime/ffi.go
! f3e367be9f1303b808ba504b2992d9b0  libgo/go/runtime/float.go
! cc2f1bfb5d53c7c37c52cf26a3031d59  libgo/go/runtime/gc_test.go
  f337a597a4f1a97884c416a80b0b9a0b  libgo/go/runtime/gcinfo_test.go
! 0467b434fa1f90b4c7decfb482d9065e  libgo/go/runtime/hash32.go
! e5c94d2ac884a85b1673b5b4db59c61c  libgo/go/runtime/hash64.go
! 702b53c749cf3851680c199ef31ef015  libgo/go/runtime/hash_test.go
! ee261a6fc80222eda7f8a8af3b477d66  libgo/go/runtime/hashmap.go
! a711bc946b2d055377fa438dd296366f  libgo/go/runtime/hashmap_fast.go
! b61e4d0299aefeb4196466f7d72596f1  libgo/go/runtime/heapdump.go
  a6c32b4dd4b3f757481b3ec4c3dda7e5  libgo/go/runtime/iface.go
! f4e8953abb7d6bab5733d7367d88cd4d  libgo/go/runtime/iface_test.go
! 0b140f2a9483aefbc16314d7c7116a57  libgo/go/runtime/internal/atomic/atomic.c
! 3be6d78c209946df093a34977db6508b  libgo/go/runtime/internal/atomic/atomic_test.go
  2553a458d50628e4a54fc8c6d6a4c6cf  libgo/go/runtime/internal/atomic/bench_test.go
  f83c8a95c3e3dd03d3686f67102ee264  libgo/go/runtime/internal/atomic/gccgo.go
  7610ec5c66144ce30b1702e3af136483  libgo/go/runtime/internal/atomic/stubs.go
! ed43ab484812bf6c362e7d969405e840  libgo/go/runtime/internal/sys/intrinsics.go
! 3d0e0f78fa156fece5ea69a22b4257b0  libgo/go/runtime/internal/sys/intrinsics_test.go
! 03af967c43c39bc3bd839953c0d47c08  libgo/go/runtime/internal/sys/stubs.go
! 25743016e1c0daa81d5651f5651641e0  libgo/go/runtime/internal/sys/sys.go
! 50bdff2a9347f8c3d8b27582e02e6b80  libgo/go/runtime/lfstack.go
! c00aa0a01b30b73096de410269933341  libgo/go/runtime/lfstack_32bit.go
! 3831952f307a9acf9ff0678b55f934c5  libgo/go/runtime/lfstack_64bit.go
  67fe49711e28c2362368b34e8bb09969  libgo/go/runtime/lfstack_test.go
! 5922d0904d5c1fc629187fe18a017c6a  libgo/go/runtime/lock_futex.go
! 7f6984a092044f2f8eb7eae46fd2bb80  libgo/go/runtime/lock_sema.go
! 74b13eaa62dfc406144ebc9ec5acb290  libgo/go/runtime/malloc.go
! 6d8311ebec2d18f2535ae30b3ae507cb  libgo/go/runtime/malloc_test.go
! 9c994e229fe069ef3c7c30272d6859a3  libgo/go/runtime/map_test.go
! 5989b7be0ebea24011d779c0e7c677bd  libgo/go/runtime/mapspeed_test.go
! 017a480c81a58ba02bf76cd1618e0bfd  libgo/go/runtime/mbarrier.go
! a382fdf31dbbdff233e5716b5b1cfc02  libgo/go/runtime/mbitmap.go
! 91a87a2d01af2a332538bc1a3cdd8a84  libgo/go/runtime/mcache.go
! 721e601732ab1d8b6c209020d170be3b  libgo/go/runtime/mcentral.go
! ed11be025a3ba594d9e998a8728e748c  libgo/go/runtime/mem_gccgo.go
! 1095832a061dc7574bc9495bc5c9c345  libgo/go/runtime/memmove_linux_amd64_test.go
! a27774c6133a5ba708e68d97b4b53375  libgo/go/runtime/memmove_test.go
! 8e3397b3f00acea9c444e26a528f3376  libgo/go/runtime/mfinal.go
! bfbf41b480ab847220914454bd77cc57  libgo/go/runtime/mfinal_test.go
! 48b9cc3d9a1a8d70faa40949e575a260  libgo/go/runtime/mfixalloc.go
! 7b059f3cc10533d77b0329c2fcad6a5c  libgo/go/runtime/mgc.go
! 82dc7e10d82860f28e80e554c770668b  libgo/go/runtime/mgc_gccgo.go
! d5554d3b4b700a42adfbe068e3337493  libgo/go/runtime/mgclarge.go
! 6095a0c2ceb6a9bbdf62ae639ae08ff8  libgo/go/runtime/mgcmark.go
! c7b5464c545bdfb08753f9bcb8ef9095  libgo/go/runtime/mgcsweep.go
! 7e20b79c4c4686de84c4639fc3feb903  libgo/go/runtime/mgcsweepbuf.go
! 11e711edb04be413ca1c6734e13e572f  libgo/go/runtime/mgcwork.go
! 92f548d522da8b50a749042de993e8bd  libgo/go/runtime/mheap.go
  03ab18355c7ec77833a6c0553eb6a097  libgo/go/runtime/mkfastlog2table.go
! 153f891cf497a656d1b0a9c91b1d19bb  libgo/go/runtime/mksizeclasses.go
! 545e3e28f6b48b0318a07bdd43bff615  libgo/go/runtime/mprof.go
  1f8cbaaa29a05b35885b1271df731200  libgo/go/runtime/msan/msan.go
  400196169ecbd5bbad801a7d9075caa7  libgo/go/runtime/msan0.go
! 17ff799df52878c66edb0385b514106d  libgo/go/runtime/msize.go
! f1cf03c1cba0aa42b83cbb4251439bc0  libgo/go/runtime/mstats.go
! cda5da9f73864f3bdc91ecca7f3c6f23  libgo/go/runtime/mwbbuf.go
! d15ca1ed48549932497f923d35cbbf4f  libgo/go/runtime/net_plan9.go
! d80689662fae1d3fae6ab4e0e53a66f6  libgo/go/runtime/netpoll.go
! fffdcf0c12e73deadf284e90daa6d0df  libgo/go/runtime/netpoll_aix.go
! de8c2422c23b06592e8c27ac1d3c23f3  libgo/go/runtime/netpoll_epoll.go
! d802d6a2fd0d53edf721e7298f8286de  libgo/go/runtime/netpoll_kqueue.go
! 804fcbee9b9cc8a691e52a0e0e2ddba1  libgo/go/runtime/netpoll_nacl.go
! a85c9716f5401a3ed3e433cef13eec6a  libgo/go/runtime/netpoll_solaris.go
! 4af73eec80afa027b9bb46621890ab15  libgo/go/runtime/netpoll_stub.go
! 05f94ab40478901d137a8fda3eca71ac  libgo/go/runtime/netpoll_windows.go
  f51f7ca4882f1066d7b003f60bcb10a4  libgo/go/runtime/norace_test.go
+ abe03e43d221f9678964394a556d4cf6  libgo/go/runtime/numcpu_freebsd_test.go
+ 9c08ce830cbb3930d159a29d5815278c  libgo/go/runtime/os_aix.go
  5d5b45aca12c04c74eed7fb37c7363ae  libgo/go/runtime/os_darwin.go
  51683b22ceba1c150d1c6c3fdf336ec8  libgo/go/runtime/os_dragonfly.go
! d68252e7bfd68f5e5185150ecbf42536  libgo/go/runtime/os_freebsd.go
! 823e29cbc9880b9a092be20c188c250a  libgo/go/runtime/os_gccgo.go
! 7586631995d5fd09e9567f75914fe941  libgo/go/runtime/os_linux.go
! 7811a440eec44dd0a6a53857164d0140  libgo/go/runtime/os_linux_ppc64x.go
! 86843f007cfdb002a2c7a647557d5a94  libgo/go/runtime/os_netbsd.go
  972decea7a907bbe54acaa14841f1351  libgo/go/runtime/os_openbsd.go
  6d7803bd939cea690145ad267cb353c2  libgo/go/runtime/os_solaris.go
! 30c799ae3ca700cc1ef44dfadd928d15  libgo/go/runtime/panic.go
! 093fb8619e8f718d7c2a6748f7a0d4da  libgo/go/runtime/pprof/elf.go
! 097f3c10cbccf0ab1123e59476efef3c  libgo/go/runtime/pprof/internal/profile/encode.go
! 281c1506e6706053e9709407c23a3714  libgo/go/runtime/pprof/internal/profile/filter.go
! f215ab05a44b0b39da0130653d8b6473  libgo/go/runtime/pprof/internal/profile/legacy_profile.go
! b8b0846e3759302f584614e4528b3550  libgo/go/runtime/pprof/internal/profile/profile.go
! b0444ee7eda577cce633330363da86b9  libgo/go/runtime/pprof/internal/profile/profile_test.go
! a70340db97c93aa39b3b7937b51dad68  libgo/go/runtime/pprof/internal/profile/proto.go
! d434ed2afa9b019dd066da34dd384e7f  libgo/go/runtime/pprof/internal/profile/proto_test.go
! d3bec38805b7716ed269d85f46e818b5  libgo/go/runtime/pprof/internal/profile/prune.go
! 3e02800d126e6309b0a4a2638eae0efe  libgo/go/runtime/pprof/label.go
! 07c972ff91c049738cb5dbfbca3b536a  libgo/go/runtime/pprof/label_test.go
! a662461321b80199d0bfa6ba2f63cfba  libgo/go/runtime/pprof/map.go
! 2f734ca633b0b6b517be63baa2028967  libgo/go/runtime/pprof/mprof_test.go
! 4b2fa77e252a0520776978351d4820db  libgo/go/runtime/pprof/pprof.go
! c6369b1eba1cec28ae17af3b3281e98d  libgo/go/runtime/pprof/pprof_test.go
! ca449dbe634cf8289715c45cf1133c4e  libgo/go/runtime/pprof/proto.go
! 5cf6013974e9ecf9542aa2bc09c0b71f  libgo/go/runtime/pprof/proto_test.go
! 67d1caf2c57ece01a95a85053ad0afb3  libgo/go/runtime/pprof/protobuf.go
! 931a84ded44909f82b02bd81ddf58946  libgo/go/runtime/pprof/protomem.go
! b2c0349a980a3c1f8f5fb6752a41f958  libgo/go/runtime/pprof/protomem_test.go
! b3e056bd3692c7126671a4d02a0445b0  libgo/go/runtime/pprof/runtime.go
! 2ea1c28984ca3fcabe6f98ace0e16b28  libgo/go/runtime/pprof/runtime_test.go
! 0c7d2db997092069ee20a3a8e911d6e4  libgo/go/runtime/print.go
! 7254f655dea48ab77a7e44a33afb8406  libgo/go/runtime/proc.go
! ae6799d03b400a51be099b6b67904f9e  libgo/go/runtime/proc_runtime_test.go
! b89e5c9a13ccec6e57a7657ac9c69761  libgo/go/runtime/proc_test.go
! 05262f8d035dc7329132ff2204136f6a  libgo/go/runtime/profbuf.go
! d5e668c7e76529245dc2b9fa56fee3a8  libgo/go/runtime/profbuf_test.go
! 72530e8ee2ef9d6f18f5168552b61daf  libgo/go/runtime/proflabel.go
  3635463231d5b3e540aa7758551a4f32  libgo/go/runtime/race0.go
+ 19c3208f63da7f22f9daef8d469826f6  libgo/go/runtime/rand_test.go
  56128eed8000406a61eb314c4400f21d  libgo/go/runtime/rdebug.go
! 74fad87dade3574ab0087f79088ca092  libgo/go/runtime/relax_stub.go
! a58769a3dc683281206b62d6b523e51d  libgo/go/runtime/runtime-lldb_test.go
! ec3e0eb0c437b2023111a01fef662214  libgo/go/runtime/runtime.go
! 1c503019daae2dba9a2c9474470336f9  libgo/go/runtime/runtime1.go
! 7d6ffd9852de778bf0d5fbdeb247c14e  libgo/go/runtime/runtime2.go
! 2dec2c16e3fb2983b5ab1fcfc46b1868  libgo/go/runtime/runtime_mmap_test.go
! 2ada40ed6ed5bc15adc195de0085682d  libgo/go/runtime/runtime_test.go
! 0b70f713897e23ff55ae135a0f9413f4  libgo/go/runtime/runtime_unix_test.go
! d4fb4f46c2c52c0ef0bfc450aeaf479b  libgo/go/runtime/rwmutex.go
! d77b3fc6a55813585e0a009242f9db52  libgo/go/runtime/rwmutex_test.go
! 411f5721b672152fb958e97bba1e8dd7  libgo/go/runtime/select.go
! e6c76ca5c3349d7a32ae5e05039e561a  libgo/go/runtime/sema.go
! bb65b731ad5bc4540148c2260dd57d23  libgo/go/runtime/signal_gccgo.go
! 939316d943d4ca39f5efbe383ebc67fb  libgo/go/runtime/signal_sighandler.go
! aa5966a29832eadf78705d9a34fe0553  libgo/go/runtime/signal_unix.go
! a05df00d64f2d990ef89168dd4aa7619  libgo/go/runtime/sigqueue.go
! b75e8bd112fbd7896aaa57b26a8609cd  libgo/go/runtime/sizeclasses.go
! 2eb918d50aa547225e780a9bf95ff6b7  libgo/go/runtime/slice.go
  dd8de854fcc707a4cd30321f3c68adb7  libgo/go/runtime/stack.go
! 3eab5f3d9c9fda75943113257ee38630  libgo/go/runtime/string.go
! 0a2fc5f9c51d6375ef2c4db2359f3f40  libgo/go/runtime/string_test.go
! 8d7a926774249d54eb2b6caf1b698c4c  libgo/go/runtime/stubs.go
! 41e53dd32c8ff7181afd79642cc8d56a  libgo/go/runtime/stubs2.go
! 90eddb01ed47b20252651b3d131f7843  libgo/go/runtime/stubs_linux.go
! 6edce386dd1879a85a68762f90852156  libgo/go/runtime/stubs_nonlinux.go
! d8abb9ad532a082608912cff308bf61a  libgo/go/runtime/symtab.go
! f199411475b5635629898d23081f67be  libgo/go/runtime/symtab_test.go
! e16bfd00b1cef1b0b70864d179610bb4  libgo/go/runtime/testdata/testprog/badtraceback.go
! ebaf5edc08d3a26b8c824f217f07d4fa  libgo/go/runtime/testdata/testprog/crash.go
  bb30d6ba31e551a5688df10efb10b827  libgo/go/runtime/testdata/testprog/deadlock.go
! a3f92aeec5979423f95118741a89f683  libgo/go/runtime/testdata/testprog/gc.go
! bc8b9a2c4c8c56622ec52eaf584f21f9  libgo/go/runtime/testdata/testprog/gettid.go
! 227133de1d8e993df791788271839926  libgo/go/runtime/testdata/testprog/gettid_none.go
! 709ec727594bd31b12b01f569c28c2c7  libgo/go/runtime/testdata/testprog/lockosthread.go
  d9e02d0b5bbe11e3d270bbd949888cf8  libgo/go/runtime/testdata/testprog/main.go
  1e74a8f6718e1af4736e09e826b27dc4  libgo/go/runtime/testdata/testprog/map.go
  126ff9677509955c3bcd4cbcd0fcbc36  libgo/go/runtime/testdata/testprog/memprof.go
  e9e92bff3636bbec8c572dab5cdc5847  libgo/go/runtime/testdata/testprog/misc.go
+ c4074da15a80666a6b44d51523ff7937  libgo/go/runtime/testdata/testprog/numcpu_freebsd.go
+ c2048f4452acdf90e12de2313c902b9d  libgo/go/runtime/testdata/testprog/panicrace.go
  65f72b515bc986e5191ca32cbe37f249  libgo/go/runtime/testdata/testprog/signal.go
  b86bee5ad967b6809bba1a6e5ba90247  libgo/go/runtime/testdata/testprog/stringconcat.go
! ec6f3dd15e09fab6a391e7a9f9a6a831  libgo/go/runtime/testdata/testprog/syscall_windows.go
  b67ffc75ff026c7d58fadbab4cfc0ee8  libgo/go/runtime/testdata/testprogcgo/aprof.go
! 5dc55f4c3103703d8257e2fcdc4a7acb  libgo/go/runtime/testdata/testprogcgo/callback.go
! dcf976b46e73e0f15c5889e9d7035573  libgo/go/runtime/testdata/testprogcgo/catchpanic.go
! f49395d9977a4e6a20432c77725b2b4a  libgo/go/runtime/testdata/testprogcgo/cgo.go
! ebaf5edc08d3a26b8c824f217f07d4fa  libgo/go/runtime/testdata/testprogcgo/crash.go
  88e0bb6d68a5214c81759f62d5bf42c4  libgo/go/runtime/testdata/testprogcgo/deadlock.go
  9aa7f1011ace39f6b7db514a4f177285  libgo/go/runtime/testdata/testprogcgo/dll_windows.go
  817552d9d1b1e53369cd97b1187c63c9  libgo/go/runtime/testdata/testprogcgo/dropm.go
  459ea91b6e71cd736d3c50e96e8e459b  libgo/go/runtime/testdata/testprogcgo/dropm_stub.go
  d2eed097021be63a40c5fde6b816a699  libgo/go/runtime/testdata/testprogcgo/exec.go
+ 903c03147726e1b981db06c0c4871418  libgo/go/runtime/testdata/testprogcgo/lockosthread.c
+ 18b2c640cfae3adb7411c7431ecbc1fc  libgo/go/runtime/testdata/testprogcgo/lockosthread.go
  d9e02d0b5bbe11e3d270bbd949888cf8  libgo/go/runtime/testdata/testprogcgo/main.go
! 5331a97edc7df31b957949cbdf2d67a2  libgo/go/runtime/testdata/testprogcgo/numgoroutine.go
! c45b5b23bcb6726a6a1a0c75c43683cd  libgo/go/runtime/testdata/testprogcgo/pprof.go
! 0cd199346e099d4e0f0ee06541ff23a6  libgo/go/runtime/testdata/testprogcgo/raceprof.go
  1ce59c405589a9b13ae288bfffe64756  libgo/go/runtime/testdata/testprogcgo/racesig.go
+ 2a1d972b04491bafa8f369a961984aad  libgo/go/runtime/testdata/testprogcgo/sigpanic.go
+ 1f54ae6bcab87a6ef9275962df35824a  libgo/go/runtime/testdata/testprogcgo/sigstack.go
+ c178d94c2363d68c114e7e28c23b1a25  libgo/go/runtime/testdata/testprogcgo/stack_windows.go
  f130568d34a09b1fec48db4dc63abd45  libgo/go/runtime/testdata/testprogcgo/threadpanic.go
  21ca4bdb7d827c5d39c0f256ed673d6c  libgo/go/runtime/testdata/testprogcgo/threadpanic_unix.c
  4521507061b29e1f266a11e2a7a99698  libgo/go/runtime/testdata/testprogcgo/threadpanic_windows.c
! da638e34f467127c0b8efaece959f58c  libgo/go/runtime/testdata/testprogcgo/threadpprof.go
  15f8cc955e22863859c5c3635107dbc4  libgo/go/runtime/testdata/testprogcgo/threadprof.go
! e0df6460134564133be5653a51d5eb7f  libgo/go/runtime/testdata/testprogcgo/traceback.go
! e20920cf8f51db2555210dc9ef3691ae  libgo/go/runtime/testdata/testprogcgo/traceback_gccgo.go
! b02afeb4a15586ff5f18385717f595a2  libgo/go/runtime/testdata/testprogcgo/tracebackctxt.go
! de3b7e4e37795b5f85a1e6c05b9f5d6a  libgo/go/runtime/testdata/testprogcgo/tracebackctxt_c.c
  e54464bf9fe49e30bc8920e26aa4fbd3  libgo/go/runtime/testdata/testprogcgo/windows/win.go
+ 0b0ccb29e430d4c4a9ab19412c121273  libgo/go/runtime/testdata/testprogcxx/main.go
+ f8fc0effb485a49c8a192369654d9fea  libgo/go/runtime/testdata/testprogcxx/traceback.cc
+ 5af43c8e3a18016d151097514c73ce7b  libgo/go/runtime/testdata/testprogcxx/traceback.go
  d9e02d0b5bbe11e3d270bbd949888cf8  libgo/go/runtime/testdata/testprognet/main.go
  286288807cc6c215bcfb8cc6ac39327e  libgo/go/runtime/testdata/testprognet/net.go
  1694e0722cde3899e720ba704eaf1360  libgo/go/runtime/testdata/testprognet/signal.go
! c5fbacb05e941bf3f1efe84ec9709b49  libgo/go/runtime/testdata/testprognet/signalexec.go
! 8e7e8f15e326b07a7567bfdab94f0ca2  libgo/go/runtime/time.go
! 102d4137c4c7427c01432ced0e7dce1d  libgo/go/runtime/timeasm.go
! bb2ee4687a8054ac92b72f759c65067d  libgo/go/runtime/timestub.go
! 7b0fe1982fff9d8d34ddc0ef496a7889  libgo/go/runtime/trace.go
! a7d769d68ad4ca1c99aa2af1fd905b4e  libgo/go/runtime/trace/example_test.go
! b41e73a81ecf3854c4563114afcd6ebc  libgo/go/runtime/trace/trace.go
! 0390ffdf24ef840f196540d19592988e  libgo/go/runtime/trace/trace_stack_test.go
! 5d88d375a4458c173a478107b9c485a6  libgo/go/runtime/trace/trace_test.go
! 02f5133f2f67975681834aa60d4fc250  libgo/go/runtime/traceback_gccgo.go
! 70b364fe9d211aa768a6dcaa19815879  libgo/go/runtime/type.go
  48082aef9f09423dc8dc73ea4e9fc3e1  libgo/go/runtime/typekind.go
! 03ddb899ceefb0b7c42bdb97237a736b  libgo/go/runtime/unaligned1.go
! 4e8ceafab6a8756b7c01fc62a8be6af0  libgo/go/runtime/unaligned2.go
  b013e3daff4fd579a590b725d1297bec  libgo/go/runtime/utf8.go
  825eb73ede469df9e8afe418993814be  libgo/go/runtime/vdso_none.go
  f44bd95750b08ffb83cfa731995cbeed  libgo/go/runtime/write_err.go
! e68d47fd0603e0add7814515158184db  libgo/go/runtime/write_err_android.go
! ff84f5d56acf431dcdc3ea0b97c42ca3  libgo/go/sort/example_interface_test.go
! b89549ffb67af1968a2b38c8f879ec67  libgo/go/sort/example_keys_test.go
! 264a03e111dff061a89d470fab5b512d  libgo/go/sort/example_multi_test.go
  603bfbb67df6fcfbdafe37cb4a6422e8  libgo/go/sort/example_search_test.go
! b89a87e51c9a8363066de856ef127981  libgo/go/sort/example_test.go
  21ebe3c56494e1ebc52acb3251a6f78a  libgo/go/sort/example_wrapper_test.go
  5ec468d74053964b118cc04effd2611c  libgo/go/sort/export_test.go
! f6c815e4ece98982af5cda1bb81b0f36  libgo/go/sort/genzfunc.go
! ab69a9f941ac3f104b923190814c37f3  libgo/go/sort/search.go
  3e876da36a15eeb8775010f13220c341  libgo/go/sort/search_test.go
! 68747f5a196ce94f768363386e6ce0d1  libgo/go/sort/slice.go
! 5ebfe692db84773fd1a49b0c278317ff  libgo/go/sort/sort.go
! a438a4b42a4b2b976f74c1ab4281076e  libgo/go/sort/sort_test.go
! d1aaf6cca3765bb6aa63663370e45c55  libgo/go/sort/zfuncversion.go
  406086b494572e7e157e03b31b7fac2a  libgo/go/strconv/atob.go
  2b0e97637f1876802fd5251d27c86e27  libgo/go/strconv/atob_test.go
  d6cc2565be786f8310d233e9e97760f1  libgo/go/strconv/atof.go
! dafd9c807cd7e0da3feb1136b1035475  libgo/go/strconv/atof_test.go
! 5a2fabab011a6bc21c274e422af448d9  libgo/go/strconv/atoi.go
! fde7684603cb20146ad245cdfc34391b  libgo/go/strconv/atoi_test.go
! 437406951b80b7f1a169625d5cadf412  libgo/go/strconv/decimal.go
  c8fbcf5ed89480898c8ad5a5f7e91a2f  libgo/go/strconv/decimal_test.go
  790da09b83530dac4ad162ec02e10298  libgo/go/strconv/doc.go
  afa472bc214a22060471683945670b62  libgo/go/strconv/example_test.go
! b19af02747208a319da91b1301c9900f  libgo/go/strconv/export_test.go
! 08e6e6e2c4ddbcab0e50c4d59421b43f  libgo/go/strconv/extfloat.go
  deae6f87af61351b28e00a4509bcf6a9  libgo/go/strconv/fp_test.go
  cae641b1b471058ef98c965eada7d7bc  libgo/go/strconv/ftoa.go
  f184358712647a185146e235615a3bb8  libgo/go/strconv/ftoa_test.go
  c85e39623b22d1a4ea56bf05e1010929  libgo/go/strconv/internal_test.go
! ceb4e1d59b661578985fcb3425db50b6  libgo/go/strconv/isprint.go
! 7edf66d4eab99702e93762a5acf1d6b7  libgo/go/strconv/itoa.go
! 094f07904dfa4cbcfa32691d0029c2c9  libgo/go/strconv/itoa_test.go
  8ee53ce1084ac8d79cfa87c2ffd9c3d8  libgo/go/strconv/makeisprint.go
! b76bbd41c9639f0fc3418314e839b423  libgo/go/strconv/quote.go
  01eb323ab5b738610144b057dfafa7c1  libgo/go/strconv/quote_test.go
  b5f697a60a1a2cf0dc67b26073e5ae79  libgo/go/strconv/strconv_test.go
  dc1ca447fa01cae0bb5de6427d6aa4ae  libgo/go/strconv/testdata/testfp.txt
  dc1ca447fa01cae0bb5de6427d6aa4ae  libgo/go/strconv/testfp.txt
+ 424c73447457880e7b2143aa1baf1abd  libgo/go/strings/builder.go
+ 2a00b1b1eafedb2998e2ae55a1d715ee  libgo/go/strings/builder_test.go
  5fc7909f4a161bb1377a9841315a6285  libgo/go/strings/compare.go
  b589c811c05e4cc835297d70fa72372e  libgo/go/strings/compare_test.go
! 7220ebb14284e8c190399f06ff837ce2  libgo/go/strings/example_test.go
  71dc96ee07707f51b3e212e395920640  libgo/go/strings/export_test.go
  662bbb28b54637d6f21a4bc802e49805  libgo/go/strings/indexbyte.c
  5062d779106a6a4889ac816c59c181ee  libgo/go/strings/reader.go
  dc19b297c4e05e398dd7be102c8eb8af  libgo/go/strings/reader_test.go
  5d0c9368d321da9967fa2a8aae8e0fe5  libgo/go/strings/replace.go
! 3f8a61dbea1b3788851a32c3836f266c  libgo/go/strings/replace_test.go
  97b6e2b538f36a21a939616a937151b0  libgo/go/strings/search.go
  a05591c865981302f636deae83006dc9  libgo/go/strings/search_test.go
! ad50f0be593c9b21fd121a7adab19f87  libgo/go/strings/strings.go
! f0a37024ea9b07a5d75487ffe3f9376a  libgo/go/strings/strings_amd64.go
  b6a041a2afd2762d62939295123d2969  libgo/go/strings/strings_decl.go
! 9bd190c71cd576df6fc22ca10467fd30  libgo/go/strings/strings_generic.go
! ee59d8462567017705237a37525d68a3  libgo/go/strings/strings_s390x.go
! 64e2d856d96b9d1b62654c420ba94a97  libgo/go/strings/strings_test.go
  276bd271d04a6354525785c2358f3a96  libgo/go/sync/atomic/64bit_arm.go
! 41f5ad2947ba8006ae6142a6b5335303  libgo/go/sync/atomic/atomic.c
! 6e8e108083744e18d9828220a6ae6575  libgo/go/sync/atomic/atomic_test.go
! 66684347c8dc8b607ba05faaa170d8ef  libgo/go/sync/atomic/doc.go
! 81c084116d0d8145dde5ce2ffbc6ac3b  libgo/go/sync/atomic/value.go
  4f347460c2cfe87c3662c40d0da68071  libgo/go/sync/atomic/value_test.go
  06ece0ce3f835256b09c76b569f08853  libgo/go/sync/cas.c
! 9ea46f021643d633d2829ff0f66e61ac  libgo/go/sync/cond.go
  5f718d809cfe43214a86eadbed8dc0ce  libgo/go/sync/cond_test.go
  5e8ce2e0a595e04701e5deed174f386b  libgo/go/sync/example_pool_test.go
  379823b8233ddc7532c13535342b773c  libgo/go/sync/example_test.go
! 16b04ecdf27f0f7fb2cd9e6e22e0a0d4  libgo/go/sync/export_test.go
! 0277294689297fd9d509e14e8ccdafae  libgo/go/sync/map.go
! e68c83bf43a6a87336e9fcc3395dbaaa  libgo/go/sync/map_bench_test.go
! 6fdfc6af4e123915d96776f8242420aa  libgo/go/sync/map_reference_test.go
! 6872e3ae08d4aa6906ea5cd1740e9217  libgo/go/sync/map_test.go
! 4903304206096f6875dc8d9ee7451e8e  libgo/go/sync/mutex.go
! cdb42357e08a20a88b0336130a87c5d5  libgo/go/sync/mutex_test.go
  00b3e6f759fa1123855558198d28ac7b  libgo/go/sync/once.go
  2c3240d310641137172167ba79ac92de  libgo/go/sync/once_test.go
! 49574c51b17453398aa4a1d9f1f687b7  libgo/go/sync/pool.go
! 6043c8b66297bda93784c8a9a3077ee8  libgo/go/sync/pool_test.go
! 71b1c32a66f76d452d48ce0e45885b81  libgo/go/sync/runtime.go
! 16d409168b78c0209731279e1ee3abb4  libgo/go/sync/runtime_sema_test.go
! 6692803a60472f9c9abcd28110f9a977  libgo/go/sync/rwmutex.go
! 1eaba9dbfbc3a8734f20ea74d3e57a86  libgo/go/sync/rwmutex_test.go
! 9326b05671c66064cad457845d68a7a8  libgo/go/sync/waitgroup.go
! 025e25cd5f11a57f70bc03b94c6864bc  libgo/go/sync/waitgroup_test.go
  d9a06655122fa0366d7dc862ae70eb72  libgo/go/syscall/bpf_bsd.go
  bcba9c41e717ecc5f9fadedc63b51631  libgo/go/syscall/clone_linux.c
  59298e712286f79b16fe86c28ab48fc8  libgo/go/syscall/const_plan9.go
! 598132f71cd40ff38e768ec6f9993eaa  libgo/go/syscall/creds_test.go
  f3bc6044d11bfddc8ddee276c7c3c8a0  libgo/go/syscall/dir_plan9.go
! dfac7b2f6d4fc1e9a00ac1ab89940088  libgo/go/syscall/dirent.go
! 40ebb3339843bac09d8fd3fad178ebc0  libgo/go/syscall/endian_big.go
! bd233939dae9a41e3e36274dc2daaf04  libgo/go/syscall/endian_little.go
  9832868167a1d42c8a06590a112a2245  libgo/go/syscall/env_plan9.go
! 8d947ad420a9304cb12006aa9320619e  libgo/go/syscall/env_unix.go
  d41ae004fe224f7396c64cd869b7ee88  libgo/go/syscall/env_windows.go
! 9d171a1ced6ead793607cd7bcb7f1d58  libgo/go/syscall/errno.c
! e997bae42fe4ba0d7865f88e9f039a9c  libgo/go/syscall/errors_plan9.go
  1aabf75ca92dbeb562623989ba46ff3a  libgo/go/syscall/errstr.go
  329478caf0b70806a46a5c308fab8c52  libgo/go/syscall/errstr_linux.go
! 8fc5cfa0796eadc60060999885eca7e1  libgo/go/syscall/exec_bsd.go
! 904736092bd19e1c83bdbbe684f9fccd  libgo/go/syscall/exec_freebsd.go
! 8c0cdfa5b230a0f33dda98c2192e4ece  libgo/go/syscall/exec_linux.go
! 6d6d82afa8bd8e1c91df09ffed4b9a8a  libgo/go/syscall/exec_linux_test.go
  e37f71a22ebb8d890d1917af8996c9d7  libgo/go/syscall/exec_stubs.go
! a00d10b8815c5b84e527130551e7449f  libgo/go/syscall/exec_unix.go
! 1b4dce2e24eeb2267656fae536c54d3b  libgo/go/syscall/exec_unix_test.go
! b4169a4761f10a3a617d0a497dc88004  libgo/go/syscall/exec_windows.go
  687f993fe615bbec0dd2869fc28d3640  libgo/go/syscall/export_test.go
! e458695bacbb4841268caa237a938fb3  libgo/go/syscall/export_unix_test.go
! f7fd81a538ea3f3d8090049a4f82054a  libgo/go/syscall/forkpipe_bsd.go
! 085d8751f3a9614923e93f97fcaeee1d  libgo/go/syscall/libcall_aix.go
  e8d7db901538b645809e281c373f185d  libgo/go/syscall/libcall_bsd.go
  e59e4cfb46884347fe7f82a32f20a8a4  libgo/go/syscall/libcall_irix.go
! 75d2bf5f084b22dd7b7e332d89139875  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
! d52527b730022b1810782997a17c8be9  libgo/go/syscall/libcall_linux_ustat.go
  b5f13f78bdec181d93be33d7c9e6e761  libgo/go/syscall/libcall_linux_utimesnano.go
! 9f81975695db5869c971516f8db4c311  libgo/go/syscall/libcall_posix.go
! 1a2e08094ed9e7689934b9a5188f1b57  libgo/go/syscall/libcall_posix_largefile.go
! 8aa4c58100658504c3321734fd1d7f83  libgo/go/syscall/libcall_posix_regfile.go
! de8f4fe4ba328909fad91a00274bf85e  libgo/go/syscall/libcall_posix_utimesnano.go
! 0013e160769c03c1029fa1cca7f73373  libgo/go/syscall/libcall_solaris.go
  0d15b09d1ea6051acbfbd14d967c5896  libgo/go/syscall/libcall_solaris_386.go
  db8674dc2f974e11a4dbb83d3538ef72  libgo/go/syscall/libcall_solaris_amd64.go
  9b6c3ba061ae00628e2837722268295e  libgo/go/syscall/libcall_solaris_sparc.go
  db8674dc2f974e11a4dbb83d3538ef72  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
  3c4f9f4bc5b99a813125d248ad08e80f  libgo/go/syscall/lsf_linux.go
  1763536b012556ee2ab6948c630af24f  libgo/go/syscall/mksyscall.awk
! de3cee9f7e2c357300de7db47a851a42  libgo/go/syscall/mmap_unix_test.go
  c7faa8214b138ba27eed688d7bb69fc8  libgo/go/syscall/msan0.go
+ 5808b35c8c1918ec623642e26c82f67e  libgo/go/syscall/net.go
  d3e6f2d4f4ffdc8a6194895ce4b038b0  libgo/go/syscall/netlink_linux.go
  5584f312b0785c1e0a824dc8b8a7342f  libgo/go/syscall/pwd_plan9.go
  431aa916719c6809a26a18b8cdcf028f  libgo/go/syscall/route_bsd.go
*************** d13db977a1f8b505c859367325c65687  libgo/
*** 63463,63475 ****
  accd3e5d8f642858c7a6da4765ff3ede  libgo/go/syscall/security_windows.go
  0827d13911cf7a80de0a512987166356  libgo/go/syscall/setuidgid_32_linux.go
  ff30e822ed02e6ddb9ed76558a444dbf  libgo/go/syscall/setuidgid_linux.go
! 7fc0f648b393f8b19a9e81e29c5ab7ba  libgo/go/syscall/signame.c
  f6198757bf750b2e86c9f7f4920828a9  libgo/go/syscall/sleep_rtems.go
  b30e4fd94e74d91b5252cfd8eccad3cf  libgo/go/syscall/sleep_select.go
  e939aba3b7f84fd1a7a43effa86f2ae6  libgo/go/syscall/sockcmsg_linux.go
! a85752a7bab2bc29b60171eec2e7dc0d  libgo/go/syscall/sockcmsg_unix.go
! 6ca7e390a3fff29e4664299ba542b133  libgo/go/syscall/socket.go
! ff358800e9d23de4a1eb4a8e6ed6d62d  libgo/go/syscall/socket_bsd.go
  91b198a36357fdf64b728fcc898b62b0  libgo/go/syscall/socket_irix.go
  ed112d1c897af9d6ce0d5556eeeec5ca  libgo/go/syscall/socket_linux.go
  2f5321278738955c743661d8db6dc172  libgo/go/syscall/socket_linux_ppc64x_type.go
--- 67930,67943 ----
  accd3e5d8f642858c7a6da4765ff3ede  libgo/go/syscall/security_windows.go
  0827d13911cf7a80de0a512987166356  libgo/go/syscall/setuidgid_32_linux.go
  ff30e822ed02e6ddb9ed76558a444dbf  libgo/go/syscall/setuidgid_linux.go
! 301318f4cf3fbe695dacff8c8aaa3390  libgo/go/syscall/signame.c
  f6198757bf750b2e86c9f7f4920828a9  libgo/go/syscall/sleep_rtems.go
  b30e4fd94e74d91b5252cfd8eccad3cf  libgo/go/syscall/sleep_select.go
  e939aba3b7f84fd1a7a43effa86f2ae6  libgo/go/syscall/sockcmsg_linux.go
! c7007473353d13e6077be3deeef6168f  libgo/go/syscall/sockcmsg_unix.go
! ea4885da75bbc620ba5e0be4cf264c3b  libgo/go/syscall/socket.go
! 01b0700f486124c01ca7ca2150937e19  libgo/go/syscall/socket_aix.go
! 4f00fa5634d86ceb8985eed9308be8cb  libgo/go/syscall/socket_bsd.go
  91b198a36357fdf64b728fcc898b62b0  libgo/go/syscall/socket_irix.go
  ed112d1c897af9d6ce0d5556eeeec5ca  libgo/go/syscall/socket_linux.go
  2f5321278738955c743661d8db6dc172  libgo/go/syscall/socket_linux_ppc64x_type.go
*************** a32c8f38aef86961c1bfd750e18d94a1  libgo/
*** 63478,63600 ****
  57ed75694a025e8553fe2ba1de10d658  libgo/go/syscall/socket_solaris.go
  167f36ad5355fe6ed983982996c02d69  libgo/go/syscall/socket_xnet.go
  21b5a484bcf7f42415dfc0d1c2da3be5  libgo/go/syscall/str.go
! 10a70cc06a5dfbdbd48687e5e3520f07  libgo/go/syscall/syscall.go
  ba4c03de9f8e4f01b7e68cd654298b1b  libgo/go/syscall/syscall_darwin.go
! cb7293200e04882d44952572a48c7154  libgo/go/syscall/syscall_dragonfly.go
  003675400db3f6b3c8f1cb15f7ecea7f  libgo/go/syscall/syscall_errno.go
  d9361d43ef12dff92e57635f642be2a9  libgo/go/syscall/syscall_freebsd.go
  73f50229a579beb5237147b11393e823  libgo/go/syscall/syscall_linux.go
! a0090b126833084a9f2908291f50e6a0  libgo/go/syscall/syscall_linux_386.go
  76aaef7313d5941f3fbacda3ce01b730  libgo/go/syscall/syscall_linux_alpha.go
! 6369db28775124d9386571ec81d3df7d  libgo/go/syscall/syscall_linux_amd64.go
! 0217eb56fafc787fc95d7d3a903296db  libgo/go/syscall/syscall_linux_mipsx.go
! f218aa1ceea0921a007f55c84b389dee  libgo/go/syscall/syscall_linux_s390.go
! 1a8dda4b899b9d5fec7e4c07c32d1eda  libgo/go/syscall/syscall_linux_s390x.go
  d181c824b64a7db178bb551e79694a04  libgo/go/syscall/syscall_linux_test.go
  d9361d43ef12dff92e57635f642be2a9  libgo/go/syscall/syscall_netbsd.go
  d9361d43ef12dff92e57635f642be2a9  libgo/go/syscall/syscall_openbsd.go
  42f8185437f1661f70b62fd714eb4210  libgo/go/syscall/syscall_solaris.go
  09788499588dc7cf38e3ee01a5cb81b2  libgo/go/syscall/syscall_stubs.go
  345bc064ec950d8c0b28a335b8b8c908  libgo/go/syscall/syscall_test.go
! 34f023988884f5b0a0cbb7b4772cdbf2  libgo/go/syscall/syscall_unix.go
! 1c2ed0f3e0b5a2bab3d128351264e525  libgo/go/syscall/syscall_unix_test.go
! 01441adb7e2e967e25eea7cedecdd4cf  libgo/go/syscall/timestruct.go
! e4a4eeef4eae11289d3cf770b277e46e  libgo/go/syscall/wait.c
  a8b0651e692061a91726f593bf794765  libgo/go/testing/allocs.go
  fd587d4a53008cc7bcdc65dbd97333c5  libgo/go/testing/allocs_test.go
! a267743376896187a62df663267702ce  libgo/go/testing/benchmark.go
  0eac81ee43e77771ee9f0dafec46e6e8  libgo/go/testing/benchmark_test.go
  21ca66ce275937bb3aa25553473daf3b  libgo/go/testing/cover.go
! 2f28ce8344ba131c1692290b875f25b5  libgo/go/testing/example.go
  8c468b0d45228d86e02053a5d53e2253  libgo/go/testing/export_test.go
! 8cc426834cf4bcc15bcc94051606961e  libgo/go/testing/internal/testdeps/deps.go
! 29d3a6ecf5a24b1a1d73b9cff2a7d1cb  libgo/go/testing/iotest/logger.go
  02f261596073434f926e843ae73be2b7  libgo/go/testing/iotest/reader.go
  9217f1912a8069ffc6136a02aeeb2f4b  libgo/go/testing/iotest/writer.go
! 8a6d29e0ec1fc71f605eed611cab5848  libgo/go/testing/match.go
! 2b1bfb9f5523494a60f28d6a91e08468  libgo/go/testing/match_test.go
! b9fe0f033a6fecb31d6860af756318cc  libgo/go/testing/quick/quick.go
! d0bab87e64bb1972947bbd9afcd5e31b  libgo/go/testing/quick/quick_test.go
! 09841d5948b7dd406031fc025e22bb2e  libgo/go/testing/sub_test.go
! 9ce807e1964dc8a14493ddedaa44c572  libgo/go/testing/testing.go
  6bce532febdf978d2e44c87336681a34  libgo/go/testing/testing_test.go
! b3f33c46fdccddf8d45cfdd0257dd121  libgo/go/text/scanner/example_test.go
! 36f25786b9139843f104ec7de3ef6460  libgo/go/text/scanner/scanner.go
  ee7bc6e191db044bcb626a61d05ebc40  libgo/go/text/scanner/scanner_test.go
  610499705fdc72cc6842a53888e534f0  libgo/go/text/tabwriter/example_test.go
! 680b23bd848b3ce296c3a1d9579d5d65  libgo/go/text/tabwriter/tabwriter.go
  5d017406d837018ef3c8d0fc28329405  libgo/go/text/tabwriter/tabwriter_test.go
! 0721115733a2c71d6e8d610e15c79121  libgo/go/text/template/doc.go
! bd5500ca614732a5ef746d03dc8d75d1  libgo/go/text/template/exec.go
! d9bb8cf0af380dd659a4e0fe4440b9e2  libgo/go/text/template/exec_test.go
! 351eec0cadf92ceb5191619acba4b396  libgo/go/text/template/funcs.go
  072bb470b946c54a0acd093d622047a1  libgo/go/text/template/helper.go
! 315961fe9c5b67d8b69d73537a867368  libgo/go/text/template/multi_test.go
  f3066faeb273231ca51b072c3b55aa4e  libgo/go/text/template/option.go
! 8e1fc0829689fc5d89ca9fc13d7928a0  libgo/go/text/template/parse/lex.go
! e6b14a56dbc91b127099b16d2a866e6b  libgo/go/text/template/parse/lex_test.go
  758970acf3f4b4a94c65c419448713cd  libgo/go/text/template/parse/node.go
! 31533d22a9c91874729603926ded2cb9  libgo/go/text/template/parse/parse.go
  8856686d2f60fc3802d6788f4f835051  libgo/go/text/template/parse/parse_test.go
! 3f99f35518a9907ef7a3074b4be41119  libgo/go/text/template/template.go
  d6b6ff8eb45b5d3c6559c70664f2f9f3  libgo/go/text/template/testdata/file1.tmpl
  30ae547a79cfdc1dc838a5a0d9ed8198  libgo/go/text/template/testdata/file2.tmpl
  3bb3b4e20658955000386362214b8246  libgo/go/text/template/testdata/tmpl1.tmpl
  1fd8ef440f5fd08e0117c3c00500294b  libgo/go/text/template/testdata/tmpl2.tmpl
! 4d40ab5d780c8f46ae559e2f3816668f  libgo/go/time/example_test.go
! dedd53f450ca2beb0c3f60b3071615de  libgo/go/time/export_android_test.go
! 1c3977f70107abb205081eecec777adc  libgo/go/time/export_test.go
! 145e6f1be10c97b03b46825e63f8f886  libgo/go/time/format.go
! f2acbfed7c7ad032e0e24d72bd7a3682  libgo/go/time/format_test.go
! 98094f6b84a5a19941be1cb7beaba0a3  libgo/go/time/genzabbrs.go
! 3681d7b02c63ef85f3a183fb40201fa9  libgo/go/time/internal_test.go
! 5ca1ca13d24a3c145c0ffe3536c99cec  libgo/go/time/sleep.go
! 7d28b9d197964b53f258eaf340356d97  libgo/go/time/sleep_test.go
! e573effe75a2d8b482a3b74199fe7572  libgo/go/time/sys_plan9.go
! c51ecf9ff48cc967f0240ff56bdacd3e  libgo/go/time/sys_unix.go
! 373c3cd3475ce21bc20c03eabb8378ee  libgo/go/time/sys_windows.go
  345bd836d72ad14f2f054c5172a4c5e7  libgo/go/time/tick.go
! 2bc98870e4a1c259c13dcd010e750c7f  libgo/go/time/tick_test.go
! 0432f990d6e757d52cde1bcd7bd83761  libgo/go/time/time.go
! d501652202829003d8b065f401167b1a  libgo/go/time/time_test.go
! 538867f10c0258e26e68f8cb34b5595f  libgo/go/time/zoneinfo.go
! 22a4c2dffab54067e3879a2384565a19  libgo/go/time/zoneinfo_abbrs_windows.go
! 61c027660dbd55927beed1a874146518  libgo/go/time/zoneinfo_android.go
  805c52a6dfd07be8e0d5c805ef8c0180  libgo/go/time/zoneinfo_android_test.go
! 77799f1d75d0b9a3ad34d603d2cce8cc  libgo/go/time/zoneinfo_ios.go
! b19f59b14846c2c427fefe24b5614ca5  libgo/go/time/zoneinfo_plan9.go
! 4844b7143584e9d643d2526f2cb62417  libgo/go/time/zoneinfo_read.go
! fb1cebcf17b268eb0ce776076234c1ae  libgo/go/time/zoneinfo_test.go
! 147a2dcb3c2552a4aae15678a9bf8b46  libgo/go/time/zoneinfo_unix.go
! 12766bd52f16c83cbc4d56e697acb09d  libgo/go/time/zoneinfo_windows.go
  20462663527bbc31aa3bdf3fba3f978a  libgo/go/unicode/casetables.go
  06fbe90f41e9b74f0bd79e5303d67d2d  libgo/go/unicode/digit.go
  52e66b5dde148ddf6d9b349d93601cfe  libgo/go/unicode/digit_test.go
  82119e53d20f26b8a56ae2944e7663d5  libgo/go/unicode/example_test.go
  f5a0b22c681da7633cf7c31a08f3eb6b  libgo/go/unicode/graphic.go
  f21fa9794cb8a8f6a8340fd13ebd9029  libgo/go/unicode/graphic_test.go
! 702dd9d348ce7450d27c2184d5d7e94d  libgo/go/unicode/letter.go
  4afb6ffe55be8b31589d1c9e96e31dd5  libgo/go/unicode/letter_test.go
! db3539a61a36c58ab79f198a1dd73e1d  libgo/go/unicode/script_test.go
! 45d156bf03638aef7ade5e7b81e26ceb  libgo/go/unicode/tables.go
  02eca89a5d7dac849d7d937649f00c42  libgo/go/unicode/utf16/export_test.go
  38efab74303157974a2309158b6ceb79  libgo/go/unicode/utf16/utf16.go
  ff8c998ddf892c0d912656b7105025ac  libgo/go/unicode/utf16/utf16_test.go
  d493ccc4ea8c9c25684b75eed5cbd10f  libgo/go/unicode/utf8/example_test.go
! 2540861afc397374b779d0ad42a6b9c2  libgo/go/unicode/utf8/utf8.go
  93699a5b6bc2a03993a1697a2268254a  libgo/go/unicode/utf8/utf8_test.go
! 81e5bcbba50be6c9836177ec9aac0561  libgo/godeps.sh
! f18a0c26761d944c3a6fca5006c5a184  libgo/match.sh
! 85261e3c5824f1bba0ccba605fcdcc2e  libgo/merge.sh
! 60cbf2228462f7e6218f7e6af21cde60  libgo/mkrsysinfo.sh
! f2a98cc9e55dfdd055d75e7161cd6808  libgo/mksigtab.sh
! 3ffe0f4d647963802c44acba0fd3d9fe  libgo/mksysinfo.sh
  9c66bb618ec9c46d7e7dcadd04faf52b  libgo/mvifdiff.sh
  5dbb1bf0989af4c697305ed1fea714b6  libgo/runtime/aeshash.c
  06b0ddfbd036dbdfdf8c4c7efb8b746f  libgo/runtime/arch.h
  0d727dcfb3816731f56f174e8cbd29eb  libgo/runtime/array.h
  8fc341c18fc3cdc557312f0483aceb2b  libgo/runtime/defs.h
! f2bce6dc82f2e42aa05070cfbfb87df5  libgo/runtime/env_posix.c
  0bd75fb7a863be3c7dc871e77fa22575  libgo/runtime/getncpu-bsd.c
  6916c5f0bc038b0faecbe094685875f3  libgo/runtime/getncpu-irix.c
  cb6c56bb7ef9e3c90a4bb9fbec15ed7d  libgo/runtime/getncpu-linux.c
--- 67946,68392 ----
  57ed75694a025e8553fe2ba1de10d658  libgo/go/syscall/socket_solaris.go
  167f36ad5355fe6ed983982996c02d69  libgo/go/syscall/socket_xnet.go
  21b5a484bcf7f42415dfc0d1c2da3be5  libgo/go/syscall/str.go
! 087ca81f85fa7af71e5f26ba042fd631  libgo/go/syscall/syscall.go
! e0242f4ca0dc4122dc7d6ec522fd9c22  libgo/go/syscall/syscall_aix.go
! b3aed1c706891b6c383a2fbf00f5466c  libgo/go/syscall/syscall_aix_ppc.go
! 0e142cfb436483c276aea628de798a86  libgo/go/syscall/syscall_aix_ppc64.go
  ba4c03de9f8e4f01b7e68cd654298b1b  libgo/go/syscall/syscall_darwin.go
! 7beb5060a486bb38353f27f6cfb9b956  libgo/go/syscall/syscall_dragonfly.go
  003675400db3f6b3c8f1cb15f7ecea7f  libgo/go/syscall/syscall_errno.go
  d9361d43ef12dff92e57635f642be2a9  libgo/go/syscall/syscall_freebsd.go
  73f50229a579beb5237147b11393e823  libgo/go/syscall/syscall_linux.go
! 3bd2dc1d6ba2b9c4c1637f7c690d558a  libgo/go/syscall/syscall_linux_386.go
  76aaef7313d5941f3fbacda3ce01b730  libgo/go/syscall/syscall_linux_alpha.go
! 3e9b2f55c7ff79a34dc0b67bca3de753  libgo/go/syscall/syscall_linux_amd64.go
! 9ecd94464c4c67d7dc027ad9495abee1  libgo/go/syscall/syscall_linux_mipsx.go
! c6e4c1099b33e82cff86979650bbaa5f  libgo/go/syscall/syscall_linux_s390.go
! d3c1d74de872f3354ccf1fa4e12a17d1  libgo/go/syscall/syscall_linux_s390x.go
  d181c824b64a7db178bb551e79694a04  libgo/go/syscall/syscall_linux_test.go
  d9361d43ef12dff92e57635f642be2a9  libgo/go/syscall/syscall_netbsd.go
  d9361d43ef12dff92e57635f642be2a9  libgo/go/syscall/syscall_openbsd.go
  42f8185437f1661f70b62fd714eb4210  libgo/go/syscall/syscall_solaris.go
  09788499588dc7cf38e3ee01a5cb81b2  libgo/go/syscall/syscall_stubs.go
  345bc064ec950d8c0b28a335b8b8c908  libgo/go/syscall/syscall_test.go
! 8d0f4feef7521a477aaff7f51a026b66  libgo/go/syscall/syscall_unix.go
! 02c69c64164aa221fb71443d25cf84fd  libgo/go/syscall/syscall_unix_test.go
! e9714ac6c6fd6e551733d2e80f58ab23  libgo/go/syscall/timestruct.go
! 806a7500417aabee6c89f661c556939a  libgo/go/syscall/wait.c
  a8b0651e692061a91726f593bf794765  libgo/go/testing/allocs.go
  fd587d4a53008cc7bcdc65dbd97333c5  libgo/go/testing/allocs_test.go
! 4bfbc0d40280e0e620e81f3e3c45b9a8  libgo/go/testing/benchmark.go
  0eac81ee43e77771ee9f0dafec46e6e8  libgo/go/testing/benchmark_test.go
  21ca66ce275937bb3aa25553473daf3b  libgo/go/testing/cover.go
! 736c51c05bf8c578ceece95400ff8fa3  libgo/go/testing/example.go
  8c468b0d45228d86e02053a5d53e2253  libgo/go/testing/export_test.go
! d5091125728de3e4d395b32e4ae5f79b  libgo/go/testing/helper_test.go
! a02d49c4344bebbe2b425950bffdf10e  libgo/go/testing/helperfuncs_test.go
! 8b9e3431a14f3042986085267d89bce0  libgo/go/testing/internal/testdeps/deps.go
! c92087889bddee38d4a41461eefac76d  libgo/go/testing/iotest/logger.go
  02f261596073434f926e843ae73be2b7  libgo/go/testing/iotest/reader.go
  9217f1912a8069ffc6136a02aeeb2f4b  libgo/go/testing/iotest/writer.go
! 117791a674ed85f61a2c3e8e90c2b647  libgo/go/testing/match.go
! cacbe685a3aecedc1a5826107be94bf7  libgo/go/testing/match_test.go
! a0acb28ad1012bde80b0b5ae9e86c20e  libgo/go/testing/quick/quick.go
! 49acbf9ba7ebdad0cefcc4851358eb9f  libgo/go/testing/quick/quick_test.go
! 484a48b099c7c89d489396a902eff8fa  libgo/go/testing/sub_test.go
! 109a49c9127c7554a92538b83f801a3b  libgo/go/testing/testing.go
  6bce532febdf978d2e44c87336681a34  libgo/go/testing/testing_test.go
! a1ee7c6da75a5c1871359bc43c7c4517  libgo/go/text/scanner/example_test.go
! 28b60f15eed849b1323bbe2a6a3d00b1  libgo/go/text/scanner/scanner.go
  ee7bc6e191db044bcb626a61d05ebc40  libgo/go/text/scanner/scanner_test.go
  610499705fdc72cc6842a53888e534f0  libgo/go/text/tabwriter/example_test.go
! da97bf8f22573d286066f812085821b0  libgo/go/text/tabwriter/tabwriter.go
  5d017406d837018ef3c8d0fc28329405  libgo/go/text/tabwriter/tabwriter_test.go
! 470ddd6f3e3444ad91dc4eb9a4b9f71f  libgo/go/text/template/doc.go
! 976b10eef91e5ec3005d6957946137ba  libgo/go/text/template/exec.go
! 5005594c7a1ce4c92607999b7be7aef4  libgo/go/text/template/exec_test.go
! 08d72552c8f3704def5cbcb8c39e576c  libgo/go/text/template/funcs.go
  072bb470b946c54a0acd093d622047a1  libgo/go/text/template/helper.go
! b252869c9182047e04a09120c453ba53  libgo/go/text/template/multi_test.go
  f3066faeb273231ca51b072c3b55aa4e  libgo/go/text/template/option.go
! 5cc2a23ed89c5fc024c6238cd14e0968  libgo/go/text/template/parse/lex.go
! 6350326361e097cb91205aaca389725f  libgo/go/text/template/parse/lex_test.go
  758970acf3f4b4a94c65c419448713cd  libgo/go/text/template/parse/node.go
! 75eca8459d3f6d73e71fd656e36cb0bc  libgo/go/text/template/parse/parse.go
  8856686d2f60fc3802d6788f4f835051  libgo/go/text/template/parse/parse_test.go
! b472cc692a4443305f0e7269405f20dd  libgo/go/text/template/template.go
  d6b6ff8eb45b5d3c6559c70664f2f9f3  libgo/go/text/template/testdata/file1.tmpl
  30ae547a79cfdc1dc838a5a0d9ed8198  libgo/go/text/template/testdata/file2.tmpl
  3bb3b4e20658955000386362214b8246  libgo/go/text/template/testdata/tmpl1.tmpl
  1fd8ef440f5fd08e0117c3c00500294b  libgo/go/text/template/testdata/tmpl2.tmpl
! 811f93ac05bce809fd6f965b60c5f2ca  libgo/go/time/example_test.go
! f7096f0422dcb77d03e56eb3fb2f2f12  libgo/go/time/export_android_test.go
! bdd9eab2d4720706fe3c59d8691d3fa1  libgo/go/time/export_test.go
! ad30a02d45b1c028df21a301e94f8f5c  libgo/go/time/format.go
! f2d77d95bffb9c64e4d19fc90af6fbce  libgo/go/time/format_test.go
! 1ffd3999f39cd30fc66c63641ce8c8c3  libgo/go/time/genzabbrs.go
! ec48ecb06ee5ebe368153e44ea59d719  libgo/go/time/internal_test.go
! ef4b3752a38e904365f7b901d1a78aa4  libgo/go/time/mono_test.go
! 7aa5712233588c581afad89946f9436b  libgo/go/time/sleep.go
! 99d505f2a47b1f7802e0a4c2fa088cd7  libgo/go/time/sleep_test.go
! 5dbbfa399e9a3b3f215b5eb60054f52f  libgo/go/time/sys_plan9.go
! 1cd6e91272530d757daff2e27799f637  libgo/go/time/sys_unix.go
! bb0750db9ecbdac55664d532e548111d  libgo/go/time/sys_windows.go
  345bd836d72ad14f2f054c5172a4c5e7  libgo/go/time/tick.go
! 7d5550c08219b62d2eca6ca974b02819  libgo/go/time/tick_test.go
! c0fb1890b39331e5a75d5b679e85c0cf  libgo/go/time/time.go
! 69f9ed043bcca2e7197a8dc051e68f40  libgo/go/time/time_test.go
! 40cc3b4584e49648a97356780bd49d7d  libgo/go/time/zoneinfo.go
! ec93f669abaab34f4625a5a730785d4d  libgo/go/time/zoneinfo_abbrs_windows.go
! 49be09710f50b25dc6944864dc021555  libgo/go/time/zoneinfo_android.go
  805c52a6dfd07be8e0d5c805ef8c0180  libgo/go/time/zoneinfo_android_test.go
! a60ccce0e11714e82dcd2296ae340de9  libgo/go/time/zoneinfo_ios.go
! 3d248aad631a78cbd82f8b2106d19181  libgo/go/time/zoneinfo_plan9.go
! 15985230d846de2c10c00146dc881eed  libgo/go/time/zoneinfo_read.go
! ae4a6234ccacb05b65b68dfedd8f3ba6  libgo/go/time/zoneinfo_test.go
! f605b72388fd9cca148392c08d16f849  libgo/go/time/zoneinfo_unix.go
! 7a7152396cbf0954f24e857050b53781  libgo/go/time/zoneinfo_windows.go
  20462663527bbc31aa3bdf3fba3f978a  libgo/go/unicode/casetables.go
  06fbe90f41e9b74f0bd79e5303d67d2d  libgo/go/unicode/digit.go
  52e66b5dde148ddf6d9b349d93601cfe  libgo/go/unicode/digit_test.go
  82119e53d20f26b8a56ae2944e7663d5  libgo/go/unicode/example_test.go
  f5a0b22c681da7633cf7c31a08f3eb6b  libgo/go/unicode/graphic.go
  f21fa9794cb8a8f6a8340fd13ebd9029  libgo/go/unicode/graphic_test.go
! 69d48e22efc5d10fc5bced513e9f29ee  libgo/go/unicode/letter.go
  4afb6ffe55be8b31589d1c9e96e31dd5  libgo/go/unicode/letter_test.go
! 005d35bb9e122c88aa40eb35f0340df7  libgo/go/unicode/script_test.go
! 9fc161f7a0c257876ba6fd4a9506609b  libgo/go/unicode/tables.go
  02eca89a5d7dac849d7d937649f00c42  libgo/go/unicode/utf16/export_test.go
  38efab74303157974a2309158b6ceb79  libgo/go/unicode/utf16/utf16.go
  ff8c998ddf892c0d912656b7105025ac  libgo/go/unicode/utf16/utf16_test.go
  d493ccc4ea8c9c25684b75eed5cbd10f  libgo/go/unicode/utf8/example_test.go
! e82491634fa6ffc6d36009ae89d06458  libgo/go/unicode/utf8/utf8.go
  93699a5b6bc2a03993a1697a2268254a  libgo/go/unicode/utf8/utf8_test.go
! 66016512bde60be19426105b3a9cba1f  libgo/goarch.sh
! 342e21bbfbb708562a0417b169575759  libgo/godeps.sh
! b6c9aececc30fd32355c0415e1b547a5  libgo/libgo.imp
! 5b40d95fb9ab242b5446f0b607e0ae46  libgo/match.sh
! 22db4b5c2d92be8748eeb9feb6cc8f36  libgo/merge.sh
! b5e63201dbe8a2fc4e674a58cd1f9f6f  libgo/misc/cgo/errors/errors_test.go
! b47680424fb0c23bd9b4fd8f27953495  libgo/misc/cgo/errors/ptr_test.go
! 0c71a0276da133d722cfbc1fb4cf2d11  libgo/misc/cgo/errors/src/err1.go
! 22c87c68651406f95cac02c66bc527a3  libgo/misc/cgo/errors/src/err2.go
! df961ec40505c12760e682a4d9dca475  libgo/misc/cgo/errors/src/err3.go
! f5ff833d012c6254c9ccae703f44dc9e  libgo/misc/cgo/errors/src/err4.go
! 9b9b2fcfd0c70612df339f67add55602  libgo/misc/cgo/errors/src/issue11097a.go
! e9aaa4cff222232e2772dcf37aeee852  libgo/misc/cgo/errors/src/issue11097b.go
! 6d057e18140e521b8b92b7e0b9918082  libgo/misc/cgo/errors/src/issue13129.go
! 9ca88370dcd7953c5e6a610c69ab2ec0  libgo/misc/cgo/errors/src/issue13423.go
! c7f262ffd30ff2bcb6449c62fb1fed0a  libgo/misc/cgo/errors/src/issue13467.go
! 3139c11f4c9edd3dcbf78d5eb5ec7858  libgo/misc/cgo/errors/src/issue13635.go
! b4a1d0a9cf5f1ece07b6a3250bff5ba0  libgo/misc/cgo/errors/src/issue13830.go
! 8a99cb3ec1dfe0ff1278889581552233  libgo/misc/cgo/errors/src/issue14669.go
! 7fa78aa2ce4d6cf7323c55ed5bc5d22c  libgo/misc/cgo/errors/src/issue16116.go
! 745881cf2141171ca0a050c6aa3ecff0  libgo/misc/cgo/errors/src/issue16591.go
! e1738a28ecd6a43ffb8069ceb5653006  libgo/misc/cgo/errors/src/issue18452.go
! 688b98e0b6714f7210e7d47f77c1058b  libgo/misc/cgo/errors/src/issue18889.go
! 91f7a245841d984525f2b5814219fea1  libgo/misc/cgo/errors/src/issue7757.go
! d2e5b2b72b20dd269166a21d68d59e5a  libgo/misc/cgo/errors/src/issue8442.go
! 3cf4bb2a1a6c125774466ec8f453f1c3  libgo/misc/cgo/errors/src/long_double_size.go
! 116785aa37da4b63ef8cab040574414c  libgo/misc/cgo/errors/src/malloc.go
! 47580f3b4ac401623cfef8df159faaa5  libgo/misc/cgo/fortran/answer.f90
! 52c0002bf9f5dbda6598cb996af353e8  libgo/misc/cgo/fortran/fortran.go
! 49549f5e127b70da9bcf5ea08d3fe245  libgo/misc/cgo/fortran/fortran_test.go
! db27761a48b39d6df33113d394cb2e95  libgo/misc/cgo/fortran/helloworld/helloworld.f90
! dd7fda4cef7128a4d270ba68b1bbd99f  libgo/misc/cgo/fortran/test.bash
! c148cc9636bf2ff78c9feb6a5af9fce6  libgo/misc/cgo/gmp/fib.go
! 20524e3566221485343315706eae43a0  libgo/misc/cgo/gmp/gmp.go
! 0cbf65dd349d97ef4b23ea8268ccf5f5  libgo/misc/cgo/gmp/pi.go
! e333919bef801e9adcc46db19680d3b9  libgo/misc/cgo/life/c-life.c
! 8e85da088b6ede33773baafe37af2e37  libgo/misc/cgo/life/life.go
! dfdc119418aeb62974ddc5dbb70ecb78  libgo/misc/cgo/life/life.h
! f27abf89e277f47f4f3271216ce22060  libgo/misc/cgo/life/main.go
! 673bc99f453c8dcbc1649b210ed9f28a  libgo/misc/cgo/life/main.out
! d469ba248b8c5765a89a253d339046d6  libgo/misc/cgo/nocgo/nocgo.go
! f69b131d9819968c11688786945a3671  libgo/misc/cgo/nocgo/nocgo_test.go
! 82291738451f5302316b0c05ab5a0fb0  libgo/misc/cgo/stdio/chain.go
! a0d2f9386e0a43fc68d7a94fb48de9b8  libgo/misc/cgo/stdio/chain.out
! f5d59438102c09ff4650eac85c8deb4c  libgo/misc/cgo/stdio/fib.go
! dc0ebfa6a87f9494f5a1c95c20cf6e7b  libgo/misc/cgo/stdio/fib.out
! 39fc82a12842a2e83654b8840ad98524  libgo/misc/cgo/stdio/file.go
! 4e03fa909a266af46cfce4051154f1b1  libgo/misc/cgo/stdio/hello.go
! 22c3683b094136c3398391ae71b20f04  libgo/misc/cgo/stdio/hello.out
! 2afb97dd4e6009f59f703b3083f5eb60  libgo/misc/cgo/stdio/run.out
! 95e77a31170491326dd8742a0a1ebfb2  libgo/misc/cgo/stdio/stdio.go
! 2d468c64379c63abedea382815d342c4  libgo/misc/cgo/test/align.go
! 130d20c9744240494eb349fc0618a5c4  libgo/misc/cgo/test/api.go
! eaeb78fda062d986c76134fc2bbf2d51  libgo/misc/cgo/test/backdoor.go
! b832567313fd0ba2d8c6a033100ea65c  libgo/misc/cgo/test/basic.go
! 17244228322762ffa7ecdd8a727a6b71  libgo/misc/cgo/test/buildid_linux.go
! 8c09bd468fe6a59de507d845b49f66da  libgo/misc/cgo/test/callback.go
! 49335fbfcbae448f34377e51959082e1  libgo/misc/cgo/test/callback_c.c
! cc7244ffa840bb2bf6f2b383616d28d8  libgo/misc/cgo/test/callback_c_gc.c
! 96fff232701fc15784e771f3f3645d0f  libgo/misc/cgo/test/callback_c_gccgo.c
! 295da8ccf65832310b46d977d949af3f  libgo/misc/cgo/test/cflags.go
! 9ab0ea70ccc905b0484a1699e38179b9  libgo/misc/cgo/test/cgo_linux_test.go
! 3bd90609772d48a7dc93fd98441f88e8  libgo/misc/cgo/test/cgo_stubs_android_test.go
! 63bd31f20b5c267151170d060f11e604  libgo/misc/cgo/test/cgo_test.go
! 20e866126359dbe63b0c97b38410f574  libgo/misc/cgo/test/cgo_thread_lock.go
! d4bf41221286a234cf3efa8b8ca7c73e  libgo/misc/cgo/test/cgo_unix_test.go
! 3c928f1f9dd854a9693389818c4a0bbb  libgo/misc/cgo/test/checkconst.go
! 62a6200b4ae5075253519e3bb840af80  libgo/misc/cgo/test/complex.go
! 0cbf6a11b80d7f7d1187f374bfa40b62  libgo/misc/cgo/test/cthread.go
! 3ff78676096b9d24fc08907058aeefac  libgo/misc/cgo/test/cthread_unix.c
! f6c5c772dfcb6fe41dbccf8d1456bec3  libgo/misc/cgo/test/cthread_windows.c
! 2816498eaef26ed171cf4fb9bf4eabc7  libgo/misc/cgo/test/duplicate_symbol.go
! 252235f36326766309b2d56152224926  libgo/misc/cgo/test/env.go
! 84c7a0e97151a1ebfb0cc8a9f4b000d7  libgo/misc/cgo/test/exports.go
! 75b5f27a2ad73b16a1b35ce2de14f5e3  libgo/misc/cgo/test/fpvar.go
! bfdd83aa34c0b1196fea7abcee7436ae  libgo/misc/cgo/test/gcc68255.go
! 1075590fb58ab39afb9ce984c7033292  libgo/misc/cgo/test/gcc68255/a.go
! 86d9b33d99553a76543322632b44be53  libgo/misc/cgo/test/gcc68255/c.c
! c8a153bcb02cf4bebc886efc9a7f0b85  libgo/misc/cgo/test/gcc68255/c.h
! 32a40265b9cc46de000f4a1fc08f40fb  libgo/misc/cgo/test/helpers.go
! 066594f29b2a0f2bbb02e1db77ab2527  libgo/misc/cgo/test/issue10303.go
! e8a35c37326718b09cd21c1f7c37d70f  libgo/misc/cgo/test/issue11925.go
! 421c4719bd3f07429514bbb0cf7fae25  libgo/misc/cgo/test/issue12030.go
! e8fa3ba4fcbc83df2c8124758f7f4748  libgo/misc/cgo/test/issue1222.go
! 4482cca5b2541ab624be41f6a8814f9f  libgo/misc/cgo/test/issue1328.go
! 86610cd8ad2226edb5c72ca47a47d877  libgo/misc/cgo/test/issue13402.go
! 6377f0d6b64eb40ad4640f3c4edb773a  libgo/misc/cgo/test/issue13930.go
! ead0b68650c4410d1dff017d774bf82a  libgo/misc/cgo/test/issue14838.go
! 8e6259b0fd0baae795c03215bec8f4d9  libgo/misc/cgo/test/issue1560.go
! d4f4fecdd9ff6ce1e185682eb0e87e6b  libgo/misc/cgo/test/issue1635.go
! 2b9e8cb68073e290f470ea8aa5f5c624  libgo/misc/cgo/test/issue17065.go
! 3170ee7a781d06058abf03586b6f58f8  libgo/misc/cgo/test/issue17537.go
! d88c2b9f0ba0f52a4bbc0e2e120f2492  libgo/misc/cgo/test/issue18126.go
! c243fd744690e34fc87f99952e50794a  libgo/misc/cgo/test/issue18146.go
! 3cc923db28e25569f6ef43e53e3f0042  libgo/misc/cgo/test/issue18720.go
! 6a04eede3851814da12b4c73683084b5  libgo/misc/cgo/test/issue20129.go
! a8f6427617565f03d2512719cf133709  libgo/misc/cgo/test/issue20266.go
! 5cb42c32f45f6b21b158d277e555952f  libgo/misc/cgo/test/issue20266/issue20266.h
! 1a090f65c7ae0e2cc4af0750945a36cb  libgo/misc/cgo/test/issue20369.go
! e7e431ce6e7b5ae73377b4cfc1ad2077  libgo/misc/cgo/test/issue20910.c
! cece76f94e28a8af9f9fd59bd4113c66  libgo/misc/cgo/test/issue20910.go
! d34dc1688157d167f5138412a5a20838  libgo/misc/cgo/test/issue21668.go
! 97e6870201cb123795d2fbf4df58c392  libgo/misc/cgo/test/issue21708.go
! dcc79721bc6edfcc57345db383b54af4  libgo/misc/cgo/test/issue21809.go
! decd112bb307b94c45444d59be7033d2  libgo/misc/cgo/test/issue21897.go
! 592d353ddb7a12a9cc7479b353808d0e  libgo/misc/cgo/test/issue21897b.go
! 77bab4742d51ab4550bd687f1761e5ef  libgo/misc/cgo/test/issue22958.go
! 1e1470498f78c85cc09dc4b1da8f6081  libgo/misc/cgo/test/issue2462.go
! 452b4d3a3eaa1d93f19e65c43a73a6da  libgo/misc/cgo/test/issue3250.go
! eaf02618cd0d5b33f72267a340c120ce  libgo/misc/cgo/test/issue3250w.go
! 8e908fcee6281df521ecb3352d7c2003  libgo/misc/cgo/test/issue3261.go
! 97cfc4a1f6b8de0efdabf307e03742f7  libgo/misc/cgo/test/issue3729.go
! 1606f24c282aa6bdd97346b700402726  libgo/misc/cgo/test/issue3729w.go
! accfbd5b929f564da1183fd2a3bb2b57  libgo/misc/cgo/test/issue3741.go
! d2beceebeb2985dc63a8b83ddd377548  libgo/misc/cgo/test/issue3775.go
! 157366ba8dd01df20fa995f66417cccd  libgo/misc/cgo/test/issue3945.go
! c1040b9db03153f1fe07e5117a6c5a06  libgo/misc/cgo/test/issue4029.c
! 357851cb69b7005e59ce81ca300b637b  libgo/misc/cgo/test/issue4029.go
! 46cc3b6a53040c8b27ea50be02bf4dec  libgo/misc/cgo/test/issue4029w.go
! 69541c22cb09913e95a7150265498b6a  libgo/misc/cgo/test/issue4054a.go
! 301acfb9e7009dc7c3a30c3ad0dfd723  libgo/misc/cgo/test/issue4054b.go
! 6dbc3bfd1740a9d7d57bd1857cf29233  libgo/misc/cgo/test/issue4273.c
! 8e53c0246b8bd05729dd04f7d7466b7e  libgo/misc/cgo/test/issue4273b.c
! 3a001087af9f2ae09d8dc39dfac7655a  libgo/misc/cgo/test/issue4339.c
! 6ece6006ec9328b385a0153e8d69e629  libgo/misc/cgo/test/issue4339.go
! d20711600549558fc363989a12b0bc30  libgo/misc/cgo/test/issue4339.h
! d1abcf8c0bfdd9cfe07a1b8042e5bcb3  libgo/misc/cgo/test/issue4417.go
! 6b2086a731ea9be360e47e8118fb2654  libgo/misc/cgo/test/issue4857.go
! 1505a57be29572145636b173e395cea4  libgo/misc/cgo/test/issue5227.go
! d05d239f398ce0c601d790e4e8c9cd3a  libgo/misc/cgo/test/issue5242.go
! 6989f2d520e63a9048bbfcd9782dfa38  libgo/misc/cgo/test/issue5337.go
! 8af0f7bec4852b963d86f76b654a7e26  libgo/misc/cgo/test/issue5337w.go
! 82efc9f6acc8b62a3da57cdafc991db6  libgo/misc/cgo/test/issue5548.go
! f2e763ef51ca4b26b6b028db4434215d  libgo/misc/cgo/test/issue5548_c.c
! 8ce46d3357d0ed69487d219241a843b2  libgo/misc/cgo/test/issue5603.go
! 169605e88c7441d18e3ecb3c19875f48  libgo/misc/cgo/test/issue5740.go
! 4df5a7711e13876b523b8e26023c5ae8  libgo/misc/cgo/test/issue5740a.c
! 50f72cc237d8a40f5f04426ecdb051ef  libgo/misc/cgo/test/issue5740b.c
! f13764233e05013e3e143b68b336c085  libgo/misc/cgo/test/issue5986.go
! cbfcc2057e935b8573543835b409be63  libgo/misc/cgo/test/issue6128.go
! 070bfa86e38c419a1edb4f094f82e691  libgo/misc/cgo/test/issue6390.go
! b8a8ba6be9851b149adf7a299c0029c6  libgo/misc/cgo/test/issue6472.go
! 66c773872a797f761ac63b2c6b5a2bd9  libgo/misc/cgo/test/issue6506.go
! 1a9ce15f83649367797b6c6aefe26b13  libgo/misc/cgo/test/issue6612.go
! 10873847a792d2a7d2f10b1ee99c2f9f  libgo/misc/cgo/test/issue6833.go
! 3f38262e3ab8af462db06ba8599ae778  libgo/misc/cgo/test/issue6833_c.c
! e08391738c2b1205fc053ceecebcfed1  libgo/misc/cgo/test/issue6907.go
! bb3dffee662c2553ffa041a48c6189d6  libgo/misc/cgo/test/issue6907export.go
! 6498752c1d96cecd9a8af5ef809372b4  libgo/misc/cgo/test/issue6907export_c.c
! 074edef0b53cc462888881f8140b52d3  libgo/misc/cgo/test/issue6997_linux.c
! 3191719e8a1860195bc19a29951186b5  libgo/misc/cgo/test/issue6997_linux.go
! 92a0d86c1ceb2b2a2f2995ef9e39b7c7  libgo/misc/cgo/test/issue7234_test.go
! 351e22413056dabf43b7b7c0b6e6b2b8  libgo/misc/cgo/test/issue7560.go
! 831bb657e84b3ee017a625a95cb97c0d  libgo/misc/cgo/test/issue7665.go
! d45c6966c5509109e6cb798fa32f1bc1  libgo/misc/cgo/test/issue7786.go
! 1233c4adb2124b5c0792cfa182a98b6a  libgo/misc/cgo/test/issue7978.go
! 4e43036c0bcceaee9442e0b2c1772f6b  libgo/misc/cgo/test/issue8092.go
! 991b49c86f165efd7712a8626af694c0  libgo/misc/cgo/test/issue8148.go
! 2dfbbc92f3a5440122f0a20645c6af03  libgo/misc/cgo/test/issue8331.h
! 42cac981b53b2013e9c25fc197c56771  libgo/misc/cgo/test/issue8331a.go
! a9aacfb423bffcdc43c8dc57c517ceb1  libgo/misc/cgo/test/issue8331b.go
! a1c1f3c649520cc626db9ef0005961e4  libgo/misc/cgo/test/issue8428.go
! 3a6cb52c9f9e2fd38d577f3e1f110f78  libgo/misc/cgo/test/issue8441.go
! e679d0cc00ca8503a5adb8cfafdcba58  libgo/misc/cgo/test/issue8517.go
! 5f47bbf4ed9dbb6f5681b556a4c21beb  libgo/misc/cgo/test/issue8517_windows.c
! 59b12011bec082517d4d1f3bc83099a9  libgo/misc/cgo/test/issue8517_windows.go
! 91e7f56bc81da2c233ccc0d0bad0d775  libgo/misc/cgo/test/issue8694.go
! e949051d60d4987ee85db9c5fb9b6d0d  libgo/misc/cgo/test/issue8756.go
! 78befbe35ef08e8c4ba0c5930192445a  libgo/misc/cgo/test/issue8756/issue8756.go
! 8d3ea20893a9489ef5be4dcec9547f60  libgo/misc/cgo/test/issue8811.c
! 22fecbd395d78e2199620de3fc5099ff  libgo/misc/cgo/test/issue8811.go
! b9f49b78fe78d07e40c73511052dd8dc  libgo/misc/cgo/test/issue8828.go
! 8814a48cc3072ded0c47afa2d897e31d  libgo/misc/cgo/test/issue8828/issue8828.c
! 5f8d56a00da98056b83a1f6c378fda2e  libgo/misc/cgo/test/issue8828/trivial.go
! a1de569b3cbc69870791e874d9214481  libgo/misc/cgo/test/issue8945.go
! 71583d31a14fae4447b3931e1eaf0d04  libgo/misc/cgo/test/issue9026.go
! dac0f4df16d7a5a80a291823dd8a7ee5  libgo/misc/cgo/test/issue9026/issue9026.go
! 276cf293f75de9f4736f6e56835bbeab  libgo/misc/cgo/test/issue9400/asm_386.s
! becd1c2d6f8c108451b5891cf40b427b  libgo/misc/cgo/test/issue9400/asm_amd64x.s
! 35311129e5ee94ec50826622940c5ec0  libgo/misc/cgo/test/issue9400/asm_arm.s
! ecf2f57c0581ce3c50ea84abe67e8a36  libgo/misc/cgo/test/issue9400/asm_arm64.s
! 03860280564ecb90d3c1169d81455921  libgo/misc/cgo/test/issue9400/asm_mips64x.s
! a7e2e1d7682668e56e1e6dfe80eea8b6  libgo/misc/cgo/test/issue9400/asm_mipsx.s
! 29533c67786f80a6b2368a5ec9e5fd7a  libgo/misc/cgo/test/issue9400/asm_ppc64x.s
! 88bfbd9927e0341a4ad2aa3d40de8c60  libgo/misc/cgo/test/issue9400/asm_s390x.s
! 050b0c9810cc2ac7620223802714318c  libgo/misc/cgo/test/issue9400/gccgo.go
! 984d0adeadf8fe443f83237a40456cad  libgo/misc/cgo/test/issue9400/stubs.go
! 11dd2230fd00076eff74581a96c03acb  libgo/misc/cgo/test/issue9400_linux.go
! 3ec6e45f27c9a40ec4d2365c0b82774c  libgo/misc/cgo/test/issue9510.go
! f75c8000816f3eac1bceebafd1e8ffa2  libgo/misc/cgo/test/issue9510a/a.go
! 83bbcdcb1023f0de0807dbb2d7742f09  libgo/misc/cgo/test/issue9510b/b.go
! 93a1e8cabebdcc026e514cbb5b9dc4f2  libgo/misc/cgo/test/issue9557.go
! 23796df8a6c6ed3aad756f5ad7d647e4  libgo/misc/cgo/test/setgid_linux.go
! 0b6c73e8ac02bbfaa95d9b761bb7354b  libgo/misc/cgo/test/sigaltstack.go
! 8febe3cee8a992a2d9b134038488b7d2  libgo/misc/cgo/test/sigprocmask.c
! 3be5a9c678e030be0ceec21604cf9dcf  libgo/misc/cgo/test/sigprocmask.go
! d9db324ff91f1ef5c7a754e4fc6b5e0c  libgo/misc/cgo/test/test22906.go
! 25c8a596ac0a8b19bbedbfaba3309886  libgo/misc/cgo/testasan/main.go
! f69af62626423e257fca2fc01a748dfe  libgo/misc/cgo/testcarchive/carchive_test.go
! a4fd83ecf881c71ee4399ac6e23b9fdb  libgo/misc/cgo/testcarchive/main.c
! d96f4e6cad996cc51448bf4e6e0d271f  libgo/misc/cgo/testcarchive/main2.c
! 6fabf9e032a058cae04d19c02d41da9c  libgo/misc/cgo/testcarchive/main3.c
! ef8e09fb1a23928b76eba1b65d31be95  libgo/misc/cgo/testcarchive/main4.c
! 7fd25391a1aa53ac4138d65a1e45d246  libgo/misc/cgo/testcarchive/main5.c
! cfec2f087e0c44a1af6688aa685fc36d  libgo/misc/cgo/testcarchive/main6.c
! 0eb24473b6225dad1c4748ebd7a1a814  libgo/misc/cgo/testcarchive/main_unix.c
! 10233f35d78e18db246cf0fdf68d875e  libgo/misc/cgo/testcarchive/main_windows.c
! 020220f3cc66213e705b4c8181851603  libgo/misc/cgo/testcarchive/src/libgo/libgo.go
! 53753bff72eede1a577ac364c9cb22ed  libgo/misc/cgo/testcarchive/src/libgo2/libgo2.go
! 0ac6bd774a66c008c5f1a0591154c2c1  libgo/misc/cgo/testcarchive/src/libgo3/libgo3.go
! 434da68b49fe4214bdf6a3d4b1feacda  libgo/misc/cgo/testcarchive/src/libgo4/libgo4.go
! 1137de8f1569717ae4c7019eb42259da  libgo/misc/cgo/testcarchive/src/libgo6/sigprof.go
! 0b9a14f8a2750604ebb0ca8e0541cc2e  libgo/misc/cgo/testcarchive/src/p/p.go
! 32802c4531127f42e874090629139ee6  libgo/misc/cgo/testcshared/cshared_test.go
! 07911d782496252d2c39643db0d5828c  libgo/misc/cgo/testcshared/main0.c
! 499e9d0c55f46a460240f62e7e8ead0d  libgo/misc/cgo/testcshared/main1.c
! a65563af1318e2174688633a48e80965  libgo/misc/cgo/testcshared/main2.c
! 31525b64fca59ef4459fe8a9e5f007a2  libgo/misc/cgo/testcshared/main3.c
! 341586564ce04e67937aab286ca0fb5e  libgo/misc/cgo/testcshared/main4.c
! 11ac3b972b66a590472e34779065f63e  libgo/misc/cgo/testcshared/main5.c
! 164a61de298e1c6bef717a069243c576  libgo/misc/cgo/testcshared/src/libgo/libgo.go
! 9df4c9e28470325f133463d949f99b9c  libgo/misc/cgo/testcshared/src/libgo2/dup2.go
! e90a49f566d47347ff7aa3e14bec0e64  libgo/misc/cgo/testcshared/src/libgo2/dup3.go
! f11715e073d3d2ec3f327f24aa58d430  libgo/misc/cgo/testcshared/src/libgo2/libgo2.go
! e3f3c15f046056f657dd4a02626be4d8  libgo/misc/cgo/testcshared/src/libgo4/libgo4.go
! 6abb6f1115cbda57e3777a32809ac7cb  libgo/misc/cgo/testcshared/src/libgo5/libgo5.go
! 2b5b7e1e86b6eef671d58159c4d18745  libgo/misc/cgo/testcshared/src/p/p.go
! c7ae56cd405daae1108c6808d22058a7  libgo/misc/cgo/testgodefs/anonunion.go
! db2bc8bd45ed894b976b9475a5becabb  libgo/misc/cgo/testgodefs/issue8478.go
! 2485ba0b45110730a30d7fc0ed0e2112  libgo/misc/cgo/testgodefs/main.go
! 4f356a593ac554d0ee619514b4216dad  libgo/misc/cgo/testgodefs/test.bash
! b3330d10bd88d7aad002abd770127440  libgo/misc/cgo/testplugin/altpath/src/common/common.go
! 54f6e369f84f06017141e88687dd4785  libgo/misc/cgo/testplugin/altpath/src/plugin-mismatch/main.go
! 4494c6c69234e18bd292355275abb48f  libgo/misc/cgo/testplugin/src/common/common.go
! 6c784697875d26bec802dbe9be52c584  libgo/misc/cgo/testplugin/src/host/host.go
! e4eaa3bf4a22a025382acbc88dccf092  libgo/misc/cgo/testplugin/src/iface/main.go
! a2f55491704dc6c88ab3c00ecadcb445  libgo/misc/cgo/testplugin/src/iface_a/a.go
! a2f55491704dc6c88ab3c00ecadcb445  libgo/misc/cgo/testplugin/src/iface_b/b.go
! 2183c773bdd9d28f8e76db11307d0252  libgo/misc/cgo/testplugin/src/iface_i/i.go
! bc70ee57ccd02fd3f7a1a334e676ad6c  libgo/misc/cgo/testplugin/src/issue18584/main.go
! 9bf7d6d95c35854feb5ae50aac970b55  libgo/misc/cgo/testplugin/src/issue18584/plugin.go
! 7d22a22478b5ac35a4f2cb2fd6777a2a  libgo/misc/cgo/testplugin/src/issue18676/dynamodbstreamsevt/definition.go
! 96284e434311418fe7149be0c0364b75  libgo/misc/cgo/testplugin/src/issue18676/main.go
! 7585d66c3905e1a5d09788c5d7ae5c3f  libgo/misc/cgo/testplugin/src/issue18676/plugin.go
! 33d5a14be72683e68632ee4c97b212ce  libgo/misc/cgo/testplugin/src/issue19418/main.go
! 87c42a2a019d8b8a672cc3e133c00125  libgo/misc/cgo/testplugin/src/issue19418/plugin.go
! cea6c7bef76d1b88ae3030d98dd0f34f  libgo/misc/cgo/testplugin/src/issue19529/plugin.go
! c7b60576dcb37c95376bb68fdf1fbf3a  libgo/misc/cgo/testplugin/src/issue19534/main.go
! 355b08214c2adcf088861f7a9a99e23f  libgo/misc/cgo/testplugin/src/issue19534/plugin.go
! 2e06aa84379e22859b86520ebfbcad08  libgo/misc/cgo/testplugin/src/issue22175/main.go
! dce1779efe0fed03cabcfc4a63d09a59  libgo/misc/cgo/testplugin/src/issue22175/plugin1.go
! 668630c5d219dce32df53dc4aedb7df8  libgo/misc/cgo/testplugin/src/issue22175/plugin2.go
! 0ac31fcddb63fc6ad04ef0b4d1880633  libgo/misc/cgo/testplugin/src/issue22295.pkg/main.go
! f735b88214bb0d7314efc4176262991e  libgo/misc/cgo/testplugin/src/issue22295.pkg/plugin.go
! 889b423de79745212559ed7349279a65  libgo/misc/cgo/testplugin/src/plugin1/plugin1.go
! 37a3233fca8d6d0f032a4a7d04a29603  libgo/misc/cgo/testplugin/src/plugin2/plugin2.go
! 820cfc559868a07e3fe1bacfa1cf7303  libgo/misc/cgo/testplugin/src/sub/plugin1/plugin1.go
! ad72485861fbfca02bb699d921de8a98  libgo/misc/cgo/testplugin/test.bash
! 43ec245c918ec885226cd094ad520cf8  libgo/misc/cgo/testplugin/unnamed1/main.go
! b1140020de20bab7b5c2f1d9cec042ee  libgo/misc/cgo/testplugin/unnamed2/main.go
! 5e87dbedcc0f867b5c83a2503120a32d  libgo/misc/cgo/testsanitizers/cc_test.go
! cc2b8ba11008ea6a498e7b00974159f6  libgo/misc/cgo/testsanitizers/cshared_test.go
! 99e1cc0ad48b3f3a7f9cf9f81e69b756  libgo/misc/cgo/testsanitizers/msan_test.go
! 306ad24dba4a960089277ca997dfa740  libgo/misc/cgo/testsanitizers/src/msan.go
! 7f1cda8c94eef92c16f09c3c966b14e5  libgo/misc/cgo/testsanitizers/src/msan2.go
! 148f1af88cd5cba489c7cade511966a8  libgo/misc/cgo/testsanitizers/src/msan2_cmsan.go
! 4d385778d7df03fc28439a1d7f4d3299  libgo/misc/cgo/testsanitizers/src/msan3.go
! d5094826cb76b870851b25cb34f068ce  libgo/misc/cgo/testsanitizers/src/msan4.go
! 7b8ba99361c5f738ff8c95b826b59047  libgo/misc/cgo/testsanitizers/src/msan5.go
! bbfca19f56ecd3397f1ccda5daf5b156  libgo/misc/cgo/testsanitizers/src/msan_fail.go
! 62246d176148e932140dbc1f7d209594  libgo/misc/cgo/testsanitizers/src/msan_shared.go
! 9ad1ebeec513d9831beffde820167bdc  libgo/misc/cgo/testsanitizers/src/tsan.go
! a14ef7e86d4df94786e79f6fe5bc288a  libgo/misc/cgo/testsanitizers/src/tsan10.go
! 5c5159534b211fafc20bd2d4e78de685  libgo/misc/cgo/testsanitizers/src/tsan11.go
! 1d37485195546ee01991755131c5193a  libgo/misc/cgo/testsanitizers/src/tsan12.go
! d8546d45f42c0fef223db61d36c614b3  libgo/misc/cgo/testsanitizers/src/tsan2.go
! e3e0004eb12806fb543471c4aa1e97c0  libgo/misc/cgo/testsanitizers/src/tsan3.go
! 276d0a449800cd2ce4f82844295be3bd  libgo/misc/cgo/testsanitizers/src/tsan4.go
! 27eca2e83f8675cf543fb868719c5ddd  libgo/misc/cgo/testsanitizers/src/tsan5.go
! e3fc48de400ea2fc9bb17ad44864c375  libgo/misc/cgo/testsanitizers/src/tsan6.go
! 908678a5a3988c0249391b82067139ee  libgo/misc/cgo/testsanitizers/src/tsan7.go
! f5081bc39552f3e27dca3536687ebf54  libgo/misc/cgo/testsanitizers/src/tsan8.go
! 7115b5294073ca0bb6b4ae3af83087c5  libgo/misc/cgo/testsanitizers/src/tsan9.go
! b3939da3e573bc742d313c4c766f5677  libgo/misc/cgo/testsanitizers/src/tsan_shared.go
! 32afff6a513b574ad17963c3c3c2adac  libgo/misc/cgo/testsanitizers/tsan_test.go
! 88ba652504744b629f3362b283bab4be  libgo/misc/cgo/testshared/shared_test.go
! 9529dfe06dd9254380dcfa9cc2b6be5d  libgo/misc/cgo/testshared/src/dep2/dep2.go
! 1abcb05bb2c12dbe7de4b6d53b4ceff4  libgo/misc/cgo/testshared/src/dep3/dep3.go
! 63b42286a6fe26c98ebcc85a2cbf36b1  libgo/misc/cgo/testshared/src/depBase/asm.s
! 08d3cd035f36f5661001c734df94dc01  libgo/misc/cgo/testshared/src/depBase/dep.go
! 104486dd04e12b0f77fea2d647429293  libgo/misc/cgo/testshared/src/depBase/gccgo.go
! 22c6433d0f79f1add99a96046da47044  libgo/misc/cgo/testshared/src/depBase/stubs.go
! 95e72a8ad4fb5be55bcfd19a2206354d  libgo/misc/cgo/testshared/src/division/division.go
! 5639fc8028eec7fd6eee94bc7cd1c60b  libgo/misc/cgo/testshared/src/exe/exe.go
! 8f1e8162643a9dc50319168068623566  libgo/misc/cgo/testshared/src/exe2/exe2.go
! 06fb18becfab1be2234efc8bf5fbedc6  libgo/misc/cgo/testshared/src/exe3/exe3.go
! 26be48312516a0ce1cd441879559a7aa  libgo/misc/cgo/testshared/src/execgo/exe.go
! 3f9ba5afa10c30a10a6ede0d38f1a387  libgo/misc/cgo/testshared/src/explicit/explicit.go
! f6d3f830d7a086b3a27acb297b3e8086  libgo/misc/cgo/testshared/src/global/main.go
! a575b075bcce14e1d7279bdb6508ba06  libgo/misc/cgo/testshared/src/globallib/global.go
! 1040cc1e57dc8ff1cdd8de8ab603bd1a  libgo/misc/cgo/testshared/src/iface/main.go
! c6db79e8fedd5e3aa5c5b6bb0d74f45b  libgo/misc/cgo/testshared/src/iface_a/a.go
! 609a5d2008823b8dcc2718a85c6bf3c0  libgo/misc/cgo/testshared/src/iface_b/b.go
! 2183c773bdd9d28f8e76db11307d0252  libgo/misc/cgo/testshared/src/iface_i/i.go
! a453ecb62218416359af3cdf05e6a098  libgo/misc/cgo/testshared/src/implicit/implicit.go
! 16f84165a2fba407fde04f3eb5426f53  libgo/misc/cgo/testshared/src/implicitcmd/implicitcmd.go
! 72c1a1eea1de350a50bd66eedded1d47  libgo/misc/cgo/testshared/src/trivial/trivial.go
! 72167f1291e7feacb6018a58e7a0dce1  libgo/misc/cgo/testsigfwd/main.go
! d0edd1a393f698b3e2e1bc45939f64a3  libgo/misc/cgo/testso/cgoso.c
! 6057d151263a2c0f1d418b612f8ae194  libgo/misc/cgo/testso/cgoso.go
! 5f0edb351fa676c9ed0a264e27dfdd2c  libgo/misc/cgo/testso/cgoso_c.c
! 7cd27a938bd34642032aee24d1f8fada  libgo/misc/cgo/testso/cgoso_unix.go
! 0b7f7246c41018822785f3a79f1659ea  libgo/misc/cgo/testso/main.go
! 1abbaec1f9a8b6e270d00432885b50c0  libgo/misc/cgo/testsovar/cgoso.go
! d5161f9796e597a2feaef3607564562a  libgo/misc/cgo/testsovar/cgoso_c.c
! 8911a6ef43f6b3dc013db9ac307919dd  libgo/misc/cgo/testsovar/cgoso_c.h
! 9e70cd80cd76ebf01abdb54ab24e04c8  libgo/misc/cgo/testsovar/main.go
! fb40fc675164613c2ce0361a86ebd5d0  libgo/misc/cgo/testtls/tls.go
! 377645daa8bde69ae6669dcc00a689ff  libgo/misc/cgo/testtls/tls_test.go
! 696f9519af1fee77682869bb7037ecaf  libgo/misc/cgo/testtls/tls_unix.c
! c314cdee3ab16ba76053d8d23b0aabef  libgo/mkrsysinfo.sh
! 449aed25359885dfb83e86f17865fa64  libgo/mksigtab.sh
! f0346b49d902e102acb7b581dc0da3fd  libgo/mksysinfo.sh
  9c66bb618ec9c46d7e7dcadd04faf52b  libgo/mvifdiff.sh
  5dbb1bf0989af4c697305ed1fea714b6  libgo/runtime/aeshash.c
  06b0ddfbd036dbdfdf8c4c7efb8b746f  libgo/runtime/arch.h
  0d727dcfb3816731f56f174e8cbd29eb  libgo/runtime/array.h
  8fc341c18fc3cdc557312f0483aceb2b  libgo/runtime/defs.h
! c105ec40af6c706629c88548219039ba  libgo/runtime/env_posix.c
! 06a48f5e97db826dd337b4847f3822e4  libgo/runtime/getncpu-aix.c
  0bd75fb7a863be3c7dc871e77fa22575  libgo/runtime/getncpu-bsd.c
  6916c5f0bc038b0faecbe094685875f3  libgo/runtime/getncpu-irix.c
  cb6c56bb7ef9e3c90a4bb9fbec15ed7d  libgo/runtime/getncpu-linux.c
*************** cb6c56bb7ef9e3c90a4bb9fbec15ed7d  libgo/
*** 63602,63829 ****
  9ee34ac99a92a81dd6760a6252e458f6  libgo/runtime/getncpu-solaris.c
  6fb6a5d0012113bed4ea45325d64a0ae  libgo/runtime/go-assert.c
  15f566278d64ff0b58823d3875194e29  libgo/runtime/go-assert.h
! f8c17aeb5ad771890f2f006bae6aeee5  libgo/runtime/go-breakpoint.c
! b1f2335e85b1fdf3d4aaaf841d7cb543  libgo/runtime/go-caller.c
! 3e80944f904c0d442a33e63d6c2989e3  libgo/runtime/go-callers.c
  50987521ad86112e16576c245865263d  libgo/runtime/go-cdiv.c
  e4747f7482c2a2899139d6ee06867726  libgo/runtime/go-cgo.c
! 8131750cb90106be62365cb6d6013eda  libgo/runtime/go-construct-map.c
  92eada40e26107216875725b04929860  libgo/runtime/go-ffi.c
! ff7ead128428885465c99732400c66a1  libgo/runtime/go-fieldtrack.c
! 36848cf5915d3c488880d9c7ed665011  libgo/runtime/go-libmain.c
! ace645237ea95cb305ba4c8997bf0335  libgo/runtime/go-main.c
  bc8121acb97ddc7bf2ce153b0918ca35  libgo/runtime/go-matherr.c
  855c35e39bf41d4998a675404fd30cec  libgo/runtime/go-memclr.c
  2cf8717b732131fb1c18eea95c0f2aac  libgo/runtime/go-memcmp.c
  167968fbe9a3e1771ee1fc259c328e62  libgo/runtime/go-memequal.c
  51b81f3134d973362f57db61f9b873fb  libgo/runtime/go-memmove.c
  7df982797692ddc5295b798388e928dd  libgo/runtime/go-nanotime.c
! 1a57b7cd733a0a3a45f9375d9d2a0a01  libgo/runtime/go-new.c
! 65c1842cd13d5ee7adb548dac185840d  libgo/runtime/go-nosys.c
! 09ee29bb2bba3e018a1a7fbb8f018ff4  libgo/runtime/go-now.c
  7aae9930e04d19ef83937f36339a74fb  libgo/runtime/go-reflect-call.c
! cc3e963ebf93b5da88c77c07557e6d45  libgo/runtime/go-runtime-error.c
  b1affbed93e0d33f700cff4d87d48393  libgo/runtime/go-setenv.c
! 6b9e67d9ba19bce3fffe1bc19a8d61da  libgo/runtime/go-signal.c
  6ade856ecb3d86b341bf182f31679cfe  libgo/runtime/go-string.h
! 0613d4eb113f3214f4e84bca3fe3f2ad  libgo/runtime/go-strslice.c
! 6ce5268a41df148e60d56fd94bcd799e  libgo/runtime/go-type.h
  25666ff283df253ea6fe347037fc3ca8  libgo/runtime/go-typedesc-equal.c
! 9588402150b85f765ce72049577c7247  libgo/runtime/go-unsafe-new.c
! 8138fcd479472b6720be38b8f4212476  libgo/runtime/go-unsafe-newarray.c
! d8a03a27aba0578ca7bc8f1174466b41  libgo/runtime/go-unsafe-pointer.c
  467af0f8b43cdf3a816e5c032fd525a8  libgo/runtime/go-unsetenv.c
  1f824ca61492a01eb981700efd617d1e  libgo/runtime/go-unwind.c
  cb972270ceb03f7fa39a2833ad2ef549  libgo/runtime/go-varargs.c
! 48e890b3a567102dbcb9fce0ef5287a4  libgo/runtime/goc2c.c
! d1db3522c9b958ed96e5092397be6c05  libgo/runtime/heapdump.c
! 46b3de6e9a105d0ff121fdc67b707097  libgo/runtime/malloc.goc
! 0d68d8955c0121783d9280e6b6e3294c  libgo/runtime/malloc.h
! d94efbe4005b3190430546eb872c1309  libgo/runtime/mcache.c
! 26d11f32843796078fc62a0c7920ae35  libgo/runtime/mcentral.c
! eaa7f7e0dca051d0edb6b842d0a7fda6  libgo/runtime/mem.c
! 52aca0828fbeaedeef18f8f139831ba5  libgo/runtime/mem_posix_memalign.c
! ec646d3074384118062135dba38d8e0c  libgo/runtime/mfixalloc.c
! 0c84c5644d81b44603d2e54f1daad552  libgo/runtime/mgc0.c
! 3155108459440517bea30e2a2198f07a  libgo/runtime/mgc0.h
! 2844f36815f426e199ed061a087e224d  libgo/runtime/mheap.c
! 8c8fd0870ba4aaa73e99b0d4fa50ce43  libgo/runtime/msize.c
! aec02dd149eeafbafbcdfa01c5a78d77  libgo/runtime/panic.c
! 66e164fb5dc75d234fb7721a789e4d68  libgo/runtime/parfor.c
  fc1c7199fb443d3e4b49335b42e25886  libgo/runtime/print.c
! 8d9c64595b32939d4802b639456e7ef8  libgo/runtime/proc.c
  88236bd9baaae0e22c2fe3c097d9cfbf  libgo/runtime/rtems-task-variable-add.c
! 1381dee924f026de1acf29e507f7f2d4  libgo/runtime/runtime.h
! 11b7064ca857f234e3d6e181b636d116  libgo/runtime/runtime_c.c
! 6bf4709c05a115f54ad28117c0f59da2  libgo/runtime/thread-linux.c
! f1f99cdfebdcbc8a3f9ddff8373508ef  libgo/runtime/thread-sema.c
  a27782f03d1a06d6c45554841b18cdfd  libgo/runtime/thread.c
  f1f0917f45d626d15a5f129fef3d81e2  libgo/runtime/yield.c
! 7f512861fefb1d61307f65af941bbdb0  libgo/sysinfo.c
  3a8ddeaf36a9f143f9124fe1aada456a  libgo/testsuite/Makefile.am
! 6a8af847fffba7b0dcda7a8efae62d7a  libgo/testsuite/Makefile.in
  180c96a619276205ec9fc8e8217b67bd  libgo/testsuite/config/default.exp
! 4b7af0d38c597a7b2a6f9cb460b1428c  libgo/testsuite/gotest
  ead4e721beb57b319fcd7da8ddf10705  libgo/testsuite/lib/libgo.exp
  6df485581d2f02246f41b5ca46f5bb5d  libgo/testsuite/libgo.testmain/testmain.exp
! bf80a5a3e954b4657aa353b5a30ab975  libgomp/ChangeLog
  0d55aa862aee66efdc5f8d62c94ff8fb  libgomp/ChangeLog.graphite
  55534454ed4bb50459c2c58ed02cad59  libgomp/Makefile.am
! ac2f853393abd4fc51886e45bfd8a4c5  libgomp/Makefile.in
! f43cf8bb34a2b0d0f88f54a2ca0f2906  libgomp/acinclude.m4
  fd60a84665d54708b623191f7088ac75  libgomp/aclocal.m4
! 9a4602bb5f884ad9731ca1ea16339baf  libgomp/affinity.c
! 457aa79186630be19d4ae4b68ffb1b4d  libgomp/alloc.c
! d32eebb177269077f72c6dfc1c6e5e0f  libgomp/atomic.c
! 2cfe0b3e92664c97c9dc49fead78e3dc  libgomp/barrier.c
  6af9810c2c75e9039785debdbd355d4a  libgomp/config.h.in
! 2e390dcb5482f9ff94c36eecd373beb2  libgomp/config/bsd/proc.c
! 1464905918eb3241d6d8868c5d287fdf  libgomp/config/darwin/plugin-suffix.h
! 38a992710b86cc7bb5617d44cf3690f4  libgomp/config/darwin/thread-stacksize.h
! f1090d483fa6fb5da806b7dcc5c0dd32  libgomp/config/hpux/plugin-suffix.h
! be4f7d77bf9a472a66cc2ec063982b5e  libgomp/config/linux/affinity.c
! 2c8677b9ee201b61790202a6a5363e96  libgomp/config/linux/alpha/futex.h
! 09f916f0a3e3e80e112a169e69b44443  libgomp/config/linux/bar.c
! db8ff26300bcabdf6f67bdda761216e7  libgomp/config/linux/bar.h
! 045f8d640f8b01d5f9eb02ac5a42b5e1  libgomp/config/linux/doacross.h
! b9ca0191aae23b27ef19abe4d9fa6ddf  libgomp/config/linux/futex.h
! 697c9e891bfa2f377488bd6630296fa2  libgomp/config/linux/ia64/futex.h
! 0d1d8f84c9b7efd655a19f543cf2ae2b  libgomp/config/linux/lock.c
! 24d2846fbb0198e915514ef1c8d0c17a  libgomp/config/linux/mips/futex.h
! d6261ff8481e41ac2158b001186fc2a2  libgomp/config/linux/mutex.c
! a593a79bb292b5365ba26cc5e1c2c2a8  libgomp/config/linux/mutex.h
  7973e447504d3a02e64bae101b909b1a  libgomp/config/linux/omp-lock.h
! 9df3a003d02ebea115fa877ac8f8102c  libgomp/config/linux/powerpc/futex.h
! 8a40e2221896ad7407e95c850f217570  libgomp/config/linux/proc.c
! 585f615a4de5995664f465d20679bf0b  libgomp/config/linux/proc.h
! 0f49a9236a340b6311dc8758fc0d721f  libgomp/config/linux/ptrlock.c
! 11066019bc0b24811850896020b3df60  libgomp/config/linux/ptrlock.h
! 2d940bc0bd6d0e9c0b25c3690badf8de  libgomp/config/linux/s390/futex.h
! 466134f7494be9003df7fbf6dfc9844d  libgomp/config/linux/sem.c
! 0bd4cdf3cda3036e08319224a899ed9d  libgomp/config/linux/sem.h
! fa5e868e624c3ae642d9b49807eff443  libgomp/config/linux/sparc/futex.h
! b43c154f9e85abe62db29ba0f5d0b618  libgomp/config/linux/tile/futex.h
! 8a52c58ed009d27b725d52be3d8592db  libgomp/config/linux/wait.h
! c2831f6f9a303d796f46145fddee8dd7  libgomp/config/linux/x86/futex.h
! 8ceb4436f8ae25548ac81ac41e6ceb7c  libgomp/config/mingw32/proc.c
! 1a99e7056b1a6656de9680209d7cfe09  libgomp/config/mingw32/time.c
! 7d9d8ce0827a0a2758610a8842388b99  libgomp/config/nvptx/bar.c
! e075ee24caf8506ed23a21ad8dde37b5  libgomp/config/nvptx/bar.h
! 28c614cfed8e6a60582f4668594ded61  libgomp/config/nvptx/doacross.h
! 004fe56ca75356f16394866fbbd28cff  libgomp/config/nvptx/error.c
! 8548fe8db965c26c12c6a9fb4277600a  libgomp/config/nvptx/icv-device.c
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/nvptx/libgomp-plugin.c
! c015c1243f7ba9137c32a089f727c007  libgomp/config/nvptx/lock.c
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/nvptx/mutex.c
! 0c4c7df709671fb962add815e6af23f1  libgomp/config/nvptx/mutex.h
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/nvptx/oacc-async.c
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/nvptx/oacc-cuda.c
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/nvptx/oacc-host.c
! c7d358ceddaf042825f62ae1973eaaa9  libgomp/config/nvptx/oacc-init.c
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/nvptx/oacc-mem.c
! d4de342ff826ca71310770ba2c521570  libgomp/config/nvptx/oacc-parallel.c
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/nvptx/oacc-plugin.c
  7973e447504d3a02e64bae101b909b1a  libgomp/config/nvptx/omp-lock.h
! 979dd866ffc44bc098f06c375ec419dc  libgomp/config/nvptx/openacc.f90
! f1cfc2a37c97dd1ef87c5b16cb1227b0  libgomp/config/nvptx/pool.h
! f971879e954408eb71f96bdd8c638304  libgomp/config/nvptx/proc.c
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/nvptx/ptrlock.c
! 89905416491ee00eb4fd61f367396640  libgomp/config/nvptx/ptrlock.h
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/nvptx/sem.c
! a8d2c378ed624588390f57c7ef416a36  libgomp/config/nvptx/sem.h
! 13620b9cece7ae6173d33426ec565929  libgomp/config/nvptx/simple-bar.h
! f631ec9aa932afd299bb47af16da9ec3  libgomp/config/nvptx/target.c
! 53c00db52dcbfbf36e6d29d879d4a76c  libgomp/config/nvptx/task.c
! 1803626bbecc857f533648d6518ae0cc  libgomp/config/nvptx/team.c
! e23fb7f65db03d46a651f20261b9cb9a  libgomp/config/nvptx/thread-stacksize.h
! 725b2893fdc26fc82ae18dfaf440e3d5  libgomp/config/nvptx/time.c
! 7f07431158759b6e915e9dfa2cde6549  libgomp/config/posix/bar.c
! efd237a1986e6702d43d1d23ea0a35ad  libgomp/config/posix/bar.h
! c49602628117c348afe3a2a1c6efcf05  libgomp/config/posix/doacross.h
! b312b980a7d498e94118f2fc546153b2  libgomp/config/posix/lock.c
  efc434763cbe71b67359f1858f6c9480  libgomp/config/posix/mutex.c
! 673e682b27863b46ebdcf71d6de551a6  libgomp/config/posix/mutex.h
  e84e55894856b53abe34b30f6148b070  libgomp/config/posix/omp-lock.h
! 74ef02a7c339ef0ca2a6161188572567  libgomp/config/posix/plugin-suffix.h
! 8a12d2c8dc535dc353bcac838bf02fff  libgomp/config/posix/pool.h
! c3742422fc449734d192a53d127607b6  libgomp/config/posix/proc.c
  efc434763cbe71b67359f1858f6c9480  libgomp/config/posix/ptrlock.c
! 532f353fc8451099cabcffe81987cfd9  libgomp/config/posix/ptrlock.h
! eb0df2992660007a98f7f700e15b2a97  libgomp/config/posix/sem.c
! 3beb4cbedd1a385c756125bb7bd066a2  libgomp/config/posix/sem.h
! 0145519160bcc1413c768a87920998fe  libgomp/config/posix/simple-bar.h
! f2a697aed3cc81cdc06161ef44a88ee3  libgomp/config/posix/thread-stacksize.h
! 14893e658002e8f0eadfece5a718e613  libgomp/config/posix/time.c
! 8a71a28452a58d37048c772c419e2b04  libgomp/config/rtems/bar.c
! c5998fd6bdb12ad39035fda54ba94e56  libgomp/config/rtems/bar.h
  efc434763cbe71b67359f1858f6c9480  libgomp/config/rtems/mutex.c
! fe3fc018182ed83c766c8d5f0ac54fd9  libgomp/config/rtems/mutex.h
! d425de9b9e9393ec74a28283ac179bf1  libgomp/config/rtems/pool.h
! 374d41c2b6b2039244da2094f57545ea  libgomp/config/rtems/proc.c
  efc434763cbe71b67359f1858f6c9480  libgomp/config/rtems/sem.c
! 04b4db912e08a0f37db2e927bf9d856c  libgomp/config/rtems/sem.h
! 74959d2358e11a72e692bc6ad2271edb  libgomp/configure
! bc264e7536f750032b2f328087c97292  libgomp/configure.ac
  eed593bd598fef922cf359fe9cea6c63  libgomp/configure.tgt
! 36d68c63bd82b20202c11a29dda1a7d9  libgomp/critical.c
! 4f67033afd99ca0adc54fe6cb8e41ca2  libgomp/env.c
! 205a1e0bed3313986633a5ed528e6a53  libgomp/error.c
! ee1787a6a0d71eea130df67c906414da  libgomp/fortran.c
! 39f7853a0a7522c4babb6c88ed2f3a00  libgomp/hashtab.h
! 618c2bfd7e34645c7ad33f209aafb057  libgomp/icv-device.c
! 561bf917e907e72280766f4bc670f2e4  libgomp/icv.c
! fd519093dc23e7e1ba374de5c783a5d3  libgomp/iter.c
! 62f95b421c358a0b417271a6563c7f20  libgomp/iter_ull.c
! baa1c2b75501adfb0908cb243d1945bf  libgomp/libgomp-plugin.c
! c1cee0b720173c688c10b339a6bb8ff2  libgomp/libgomp-plugin.h
! a6f176f84802a193085fe268e0371f27  libgomp/libgomp.h
! 66665fac335585c52b5f3ecb4a71ba92  libgomp/libgomp.info
! 9a1ab09c02391af1c95e6d63cb8eb499  libgomp/libgomp.map
  8b2aa50aecad82171348a6918309afd6  libgomp/libgomp.spec.in
! c2311b843993357e9da9e17fa98bc7dd  libgomp/libgomp.texi
! 209a7feb80ed65c7a90ff4e12411af42  libgomp/libgomp_f.h.in
! cccf7452f0c271c1204ea8ab62e2c456  libgomp/libgomp_g.h
! 103f4d757aebb9e5fa488fdf43d82b6f  libgomp/lock.c
! b91904ff350d1973fedba221febe1190  libgomp/loop.c
! 3a35b36647594958f189a71b8b0ad238  libgomp/loop_ull.c
! 229fc79092e96a83a917e58cbaf0f97e  libgomp/oacc-async.c
! 13417f35717f8d506005443ddbd8b9fb  libgomp/oacc-cuda.c
! c772f27f202aca1297fb177af2623209  libgomp/oacc-host.c
! efa7c04821551a82adf721b904aa968a  libgomp/oacc-init.c
! 14cc9d5aad20e964f9bbc7a2f643332b  libgomp/oacc-int.h
! e866d28412e4eb8408a01327be2efe3f  libgomp/oacc-mem.c
! 30a8adf4553b5f822dd7a27e5f639249  libgomp/oacc-parallel.c
! 6ab2c4dd8a2f4ff6f8d3079bf06490da  libgomp/oacc-plugin.c
! 2eb2e6176b7a8a92f94edac2630f5520  libgomp/oacc-plugin.h
! 9ca3d6582b645b778142bd559c360222  libgomp/omp.h.in
! 71afd55c7fe0b5149e04e21fd11a2f5d  libgomp/omp_lib.f90.in
! 3af7e52a7a3a551cc580736edd65cd8b  libgomp/omp_lib.h.in
! 0dfae26d3da5401e7819db2af6297137  libgomp/openacc.f90
! 2764bd8d428c305533a8b64949e9de6e  libgomp/openacc.h
! 5cf0a6cabc94f134e889deddd7d6d337  libgomp/openacc_lib.h
! 6761ca26d69fd7be730d794afdc08be9  libgomp/ordered.c
! 635819c8823d0f127ed39fffc7140b3a  libgomp/parallel.c
! 4b2035b0f26bd18ab759a8332dd40222  libgomp/plugin/Makefrag.am
! 585b8f6e8c5649c47c6df61e68218f14  libgomp/plugin/configfrag.ac
! 06d950c946f31440d506d7242c8c2166  libgomp/plugin/cuda/cuda.h
! 2e6f32c299188c79ff21617d8251ffec  libgomp/plugin/hsa_ext_finalize.h
! c1ea9583b7bded7b803e2bc09a89a9f1  libgomp/plugin/plugin-hsa.c
! 447a1c3df31de266ea9028e832508571  libgomp/plugin/plugin-nvptx.c
! 4747da336287d1456993122f81ae7d49  libgomp/priority_queue.c
! 7bf260df8b8d17b4787b66d4ea1be588  libgomp/priority_queue.h
! 832d5fc769ce442e0435ba8347aa265e  libgomp/sections.c
! b8d4b4108a07131243af28ba0cc03e1a  libgomp/single.c
! f237a8908b1497e9f768389a20616ce2  libgomp/splay-tree.c
! ea1f663fdcb1b36eff6d771fecda1f10  libgomp/splay-tree.h
! e4a890d62485bb6d45603a5f7a8be3b5  libgomp/target.c
! 12224a2b822b93ee44c01ea142f668c7  libgomp/task.c
! 8a17b876b0d4f23619154b1c6a5c9a0a  libgomp/taskloop.c
! afedc5bea2d26a220457d231659e0f41  libgomp/team.c
  66e506f9237e2d510d17edef76e9ce8b  libgomp/testsuite/Makefile.am
! d2b987747d939637b9738bd0d5ed77bd  libgomp/testsuite/Makefile.in
! 11b042a5b703b9a2009e7c549403ddd0  libgomp/testsuite/config/default.exp
  6c859d1c520b245e51a29693632545d6  libgomp/testsuite/lib/libgomp-dg.exp
! 4aef1edae96c01c2f56d94cf4e584ca0  libgomp/testsuite/lib/libgomp.exp
  4cb43d83a2b779c97ec154c46d1d6850  libgomp/testsuite/libgomp-test-support.exp.in
  2cf1f823e10665f77ed445bc524240e7  libgomp/testsuite/libgomp.c++/affinity-1.C
  2c957d1d7acf181ac6aa27218cc24d76  libgomp/testsuite/libgomp.c++/atomic-1.C
--- 68394,68603 ----
  9ee34ac99a92a81dd6760a6252e458f6  libgo/runtime/getncpu-solaris.c
  6fb6a5d0012113bed4ea45325d64a0ae  libgo/runtime/go-assert.c
  15f566278d64ff0b58823d3875194e29  libgo/runtime/go-assert.h
! cfc9413e9c760d3ecdeff31db3f3c569  libgo/runtime/go-caller.c
! d13d38c4431d6cec28d2575f18693231  libgo/runtime/go-callers.c
  50987521ad86112e16576c245865263d  libgo/runtime/go-cdiv.c
  e4747f7482c2a2899139d6ee06867726  libgo/runtime/go-cgo.c
! 60d604db2e19bc599a1946ace05e6e6f  libgo/runtime/go-construct-map.c
  92eada40e26107216875725b04929860  libgo/runtime/go-ffi.c
! 44234f1ba15e2979e8ae96eeaa564540  libgo/runtime/go-fieldtrack.c
! 61d58b068d4b7b7039ed44a275ae73ea  libgo/runtime/go-libmain.c
! 6f8c288659d7e70f7f9bc99ee854ce10  libgo/runtime/go-main.c
  bc8121acb97ddc7bf2ce153b0918ca35  libgo/runtime/go-matherr.c
  855c35e39bf41d4998a675404fd30cec  libgo/runtime/go-memclr.c
  2cf8717b732131fb1c18eea95c0f2aac  libgo/runtime/go-memcmp.c
  167968fbe9a3e1771ee1fc259c328e62  libgo/runtime/go-memequal.c
  51b81f3134d973362f57db61f9b873fb  libgo/runtime/go-memmove.c
  7df982797692ddc5295b798388e928dd  libgo/runtime/go-nanotime.c
! 7f766af44d2f922e4cfd15b9867eab8d  libgo/runtime/go-nosys.c
! 5379dab4e0432ec3c2a17857feed985e  libgo/runtime/go-now.c
  7aae9930e04d19ef83937f36339a74fb  libgo/runtime/go-reflect-call.c
! 383fbcf453e0ba6e0c5f7df2ec044ad5  libgo/runtime/go-runtime-error.c
  b1affbed93e0d33f700cff4d87d48393  libgo/runtime/go-setenv.c
! 5ba1d535648e0f462a7107efdfdea4e8  libgo/runtime/go-signal.c
  6ade856ecb3d86b341bf182f31679cfe  libgo/runtime/go-string.h
! 6c74342c92c8c703ca4efe0cdaa85bec  libgo/runtime/go-strslice.c
! d1311c58f3d3985dcfcd2497dfaaafd9  libgo/runtime/go-type.h
  25666ff283df253ea6fe347037fc3ca8  libgo/runtime/go-typedesc-equal.c
! 8c0008954d6d71fc1af124d12f627895  libgo/runtime/go-unsafe-pointer.c
  467af0f8b43cdf3a816e5c032fd525a8  libgo/runtime/go-unsetenv.c
  1f824ca61492a01eb981700efd617d1e  libgo/runtime/go-unwind.c
  cb972270ceb03f7fa39a2833ad2ef549  libgo/runtime/go-varargs.c
! 5dac80ca205d3467b2761bc207e9cd0b  libgo/runtime/panic.c
  fc1c7199fb443d3e4b49335b42e25886  libgo/runtime/print.c
! c2ed65c9685723864be13eeb9722ab68  libgo/runtime/proc.c
  88236bd9baaae0e22c2fe3c097d9cfbf  libgo/runtime/rtems-task-variable-add.c
! 90c7eecef61c621aa87c353ddb47935b  libgo/runtime/runtime.h
! 93bb207fbf3d6a9be43add944dbcdc47  libgo/runtime/runtime_c.c
! b8e74cab9d2ca6f92016fdab00c555b3  libgo/runtime/stack.c
  a27782f03d1a06d6c45554841b18cdfd  libgo/runtime/thread.c
  f1f0917f45d626d15a5f129fef3d81e2  libgo/runtime/yield.c
! ed42d87bc89f065428ac0b33bcaaff71  libgo/sysinfo.c
  3a8ddeaf36a9f143f9124fe1aada456a  libgo/testsuite/Makefile.am
! d5b66d8ff7aa9646e9241ce25683afa2  libgo/testsuite/Makefile.in
  180c96a619276205ec9fc8e8217b67bd  libgo/testsuite/config/default.exp
! 5399e70b49321ce881a655dfb4603d1e  libgo/testsuite/gotest
  ead4e721beb57b319fcd7da8ddf10705  libgo/testsuite/lib/libgo.exp
  6df485581d2f02246f41b5ca46f5bb5d  libgo/testsuite/libgo.testmain/testmain.exp
! 44b7a359c50f13840fc80a186cf953f7  libgomp/ChangeLog
  0d55aa862aee66efdc5f8d62c94ff8fb  libgomp/ChangeLog.graphite
  55534454ed4bb50459c2c58ed02cad59  libgomp/Makefile.am
! 3afa7de402313c9d3311755688e27cb8  libgomp/Makefile.in
! fbc6e68e7bd89c3dbe3f538851f8d054  libgomp/acinclude.m4
  fd60a84665d54708b623191f7088ac75  libgomp/aclocal.m4
! c210a6598d54bb890a0755e8290a583e  libgomp/affinity.c
! aa1905bdd1c586c4aefa0bf9691ec342  libgomp/alloc.c
! 36fc95efb4744269db8daf907ee5bf3d  libgomp/atomic.c
! c2cd8628d007a5f962a38f0b1af1d9b1  libgomp/barrier.c
  6af9810c2c75e9039785debdbd355d4a  libgomp/config.h.in
! fca03c3023f3a4c38200fe6792a94db8  libgomp/config/bsd/proc.c
! 6b52ded0b2f015ae7664d440fce3020d  libgomp/config/darwin/plugin-suffix.h
! c1e42499e9cbccfe7ba2531980b378ea  libgomp/config/darwin/thread-stacksize.h
! 7f19e52c1d5f0c8ac853eaf1ca404b01  libgomp/config/hpux/plugin-suffix.h
! 207fd62f9fac57c547ce1cab2bc217bb  libgomp/config/linux/affinity.c
! d8986e3b4f8644541469d92d1163e902  libgomp/config/linux/alpha/futex.h
! 535400f8f6d8d308703112fdffc9486e  libgomp/config/linux/bar.c
! 7975dff9c3616d8966907ff5786c0dfd  libgomp/config/linux/bar.h
! fb0b8c60ecf52d0240dd4e4c948b4903  libgomp/config/linux/doacross.h
! 1f0de674711ee7eb04683c4b0a0a45bf  libgomp/config/linux/futex.h
! e3e0854733cfffc1eed7644e76928775  libgomp/config/linux/ia64/futex.h
! 22eec7df5583ed22687f47ea4d17b3bf  libgomp/config/linux/lock.c
! 38d5c774c03e5b0f411c37a287980e1d  libgomp/config/linux/mips/futex.h
! f7822ab7d39d843ac087c234419257ce  libgomp/config/linux/mutex.c
! c13d0f0b8e84faf4793a0561978b386e  libgomp/config/linux/mutex.h
  7973e447504d3a02e64bae101b909b1a  libgomp/config/linux/omp-lock.h
! e71d909b8b4883da99f09e0cf304e371  libgomp/config/linux/powerpc/futex.h
! d5ea029001c6d367fd711b75d991e350  libgomp/config/linux/proc.c
! 32d7e51cae09195ffe1008ea25558e93  libgomp/config/linux/proc.h
! 2814a6aa855ee1e4fcf8eb263af03871  libgomp/config/linux/ptrlock.c
! e450092598cdbafc1111c3292a300350  libgomp/config/linux/ptrlock.h
! 6931419cb74241d9ca813a77d5541749  libgomp/config/linux/s390/futex.h
! adbe7304b5c09fc61c488fbb438c1adb  libgomp/config/linux/sem.c
! e26ebb85d4edd25ddebe586bbb1ce240  libgomp/config/linux/sem.h
! 9d0d49af272211db2353d983311668b9  libgomp/config/linux/sparc/futex.h
! 76cbb0a7e9fa9beb7af15a7fc6366d0c  libgomp/config/linux/tile/futex.h
! e643e34608a619de8f18c68ce5371732  libgomp/config/linux/wait.h
! dc5599e9c130758e7a7efc073fc36775  libgomp/config/linux/x86/futex.h
! ac053d430b611d12bce94e8867d1f8c3  libgomp/config/mingw32/proc.c
! 17c24bd173f97bed2e56cc9af6086665  libgomp/config/mingw32/time.c
! 43c230e864c6a8438b97ef2239413ac4  libgomp/config/nvptx/bar.c
! 573a34479325668ec064fb5dad79731a  libgomp/config/nvptx/bar.h
! 799deede488f9ed772c6e17ed206e87a  libgomp/config/nvptx/doacross.h
! 22db617070dc89fc93cb41803bdd868b  libgomp/config/nvptx/error.c
! 6bee900c864ab16aac43a61a8a445bd1  libgomp/config/nvptx/icv-device.c
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/nvptx/libgomp-plugin.c
! 08662b3926e6a7806b1693f78b9f9c29  libgomp/config/nvptx/lock.c
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/nvptx/mutex.c
! 17635cbe4aeac5531df3307a9013ecb8  libgomp/config/nvptx/mutex.h
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/nvptx/oacc-async.c
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/nvptx/oacc-cuda.c
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/nvptx/oacc-host.c
! f9255ef67f96330b2ec611589ca4ce7e  libgomp/config/nvptx/oacc-init.c
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/nvptx/oacc-mem.c
! 87e94945b25ca0cd002cef2e633b3d93  libgomp/config/nvptx/oacc-parallel.c
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/nvptx/oacc-plugin.c
  7973e447504d3a02e64bae101b909b1a  libgomp/config/nvptx/omp-lock.h
! abbcc9eb3077690293d101ac19469fb1  libgomp/config/nvptx/openacc.f90
! 92c1b50733e768165418b43289555a57  libgomp/config/nvptx/pool.h
! 9b3eb4ee696bbea8194a4f7377c4577e  libgomp/config/nvptx/proc.c
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/nvptx/ptrlock.c
! 46f153272f9ef2d1e2b7949122746ac1  libgomp/config/nvptx/ptrlock.h
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/nvptx/sem.c
! 1bc1c1e192ec2e3f3e1622785dcce1da  libgomp/config/nvptx/sem.h
! 77473018c9f2d83ea5adde94cc267323  libgomp/config/nvptx/simple-bar.h
! 71c2a0ac81fe52a1162a81c4cb05d9ad  libgomp/config/nvptx/target.c
! 1ffd1111c01574e6d7cc1d86fbaced72  libgomp/config/nvptx/task.c
! ed8c925f26fae0086b57b1ccc2822ae0  libgomp/config/nvptx/team.c
! 232c5a8a609a837d412e8f48f7f9a3a0  libgomp/config/nvptx/thread-stacksize.h
! c499db9cb10973d9d09ddc665ef1631f  libgomp/config/nvptx/time.c
! 04c01aa99a6271ef22648a339b535c81  libgomp/config/posix/bar.c
! 2ae489c8792584ef4d474b8d0321beb4  libgomp/config/posix/bar.h
! 22339a061d57c83fb3f8b200cf1d0b4b  libgomp/config/posix/doacross.h
! 301962db3cfd9ebfa06e5f4a12559de6  libgomp/config/posix/lock.c
  efc434763cbe71b67359f1858f6c9480  libgomp/config/posix/mutex.c
! 1667fced9a68340be324feaedd15303c  libgomp/config/posix/mutex.h
  e84e55894856b53abe34b30f6148b070  libgomp/config/posix/omp-lock.h
! 923e0f535ad30341e5554e8030bebf55  libgomp/config/posix/plugin-suffix.h
! 5c0a80becf5a297df4f51b485fd8de5a  libgomp/config/posix/pool.h
! 9823d2670803fc7230f179be3cbaccc9  libgomp/config/posix/proc.c
  efc434763cbe71b67359f1858f6c9480  libgomp/config/posix/ptrlock.c
! f782ddc1898142be99a99476dc35e215  libgomp/config/posix/ptrlock.h
! 29b5dfe5bde219ed8425bd775d0a8399  libgomp/config/posix/sem.c
! f0ae907d911796c0eb7feeb7b1db7404  libgomp/config/posix/sem.h
! 20f6d8639f6945afeb9abd98739a2202  libgomp/config/posix/simple-bar.h
! 0353172b948bc76bfd257e2404931161  libgomp/config/posix/thread-stacksize.h
! d85e58805c4fdf42731c51483a5e6e4d  libgomp/config/posix/time.c
! 402118d207e262d5f72ffb7d005f8610  libgomp/config/rtems/bar.c
! ae8d5a99351de77282a21c720fdef7c0  libgomp/config/rtems/bar.h
  efc434763cbe71b67359f1858f6c9480  libgomp/config/rtems/mutex.c
! d4ab2d4cfc501cbfbfe935b826ac6099  libgomp/config/rtems/mutex.h
! 1171c9d6d051b3d34aecb089625f41b5  libgomp/config/rtems/pool.h
! 429e9874bd6ab892de2170df4d6168fc  libgomp/config/rtems/proc.c
  efc434763cbe71b67359f1858f6c9480  libgomp/config/rtems/sem.c
! 32b4dd0825d7e8e0fb280a361e0492d3  libgomp/config/rtems/sem.h
! 409bcac736c071302312b81ac266eadf  libgomp/configure
! 4897b76c951f23cf4d588494de38cce5  libgomp/configure.ac
  eed593bd598fef922cf359fe9cea6c63  libgomp/configure.tgt
! b14a597ed98cead672b82f47c4b083f7  libgomp/critical.c
! c7c65222f932f9cd757e81064e46fc30  libgomp/env.c
! feeceac6efc2e754089a4fcb82564a16  libgomp/error.c
! 1c399c4d0361407c21165bc09f4a1d0b  libgomp/fortran.c
! 797a377e7aaf3d7e051e2c32490f4e05  libgomp/hashtab.h
! 4dc92f538a235bdc4ce4d5ebe6b8759b  libgomp/icv-device.c
! 28ea1fb0fe0796d50cbb698045c8334a  libgomp/icv.c
! a54f4669a15e911c11ff0fedefe19978  libgomp/iter.c
! 837f2fce41cc92475164b80475d4581e  libgomp/iter_ull.c
! ada4ea858424a6a21e0ee1e4e465977e  libgomp/libgomp-plugin.c
! c23d02b17eaff15562a4955dc2ebe0e3  libgomp/libgomp-plugin.h
! c7058473fe2c0f358b3001fe79dc4a87  libgomp/libgomp.h
! 777fa7297a6e9a45be7a698a74e9a267  libgomp/libgomp.info
! 6336cd8ca3d4df3311f0ca240b779238  libgomp/libgomp.map
  8b2aa50aecad82171348a6918309afd6  libgomp/libgomp.spec.in
! d5e59429fefcadd89e400273ed3a64af  libgomp/libgomp.texi
! 20585eacd0fe586e4b164e1cef57f910  libgomp/libgomp_f.h.in
! f50c72dfdad157fc1b8a7a6f750e8410  libgomp/libgomp_g.h
! 080f24939d7611a4a671bfb31900bc00  libgomp/lock.c
! f2e3abab1161390ec02492ee5b386de5  libgomp/loop.c
! 3aef0a718d3374430127dd5674fb2a75  libgomp/loop_ull.c
! f621c54e42a9b1406b5504019f903c37  libgomp/oacc-async.c
! bbc40b6692c1f59483277e4ba216f818  libgomp/oacc-cuda.c
! c74e3d61fec95f38c9108b806e56b9f6  libgomp/oacc-host.c
! 4f9369afa10eee8c313c8c66cf4348a2  libgomp/oacc-init.c
! d508015b7fb857c3609bb4c7b3303862  libgomp/oacc-int.h
! 341eae5f7b1634b92a12c974d8a6d3d4  libgomp/oacc-mem.c
! ea43fa08f78f7529c0ce0b9aff4b279d  libgomp/oacc-parallel.c
! a3adecb174d96c98b914adb0813e2d1b  libgomp/oacc-plugin.c
! 63bc8475de67440376af5da9991171d2  libgomp/oacc-plugin.h
! 82168b0aa8cd6cc22be4951f50aa70c4  libgomp/omp.h.in
! 761eee4353e7277065b0368e8be8915f  libgomp/omp_lib.f90.in
! b9354d509f77a26fa976240e5dd8e8c0  libgomp/omp_lib.h.in
! 1dae47d97eec74bc20f12e69e90001c9  libgomp/openacc.f90
! 899b1b3af2790454645ed900385c1f59  libgomp/openacc.h
! bd287e782ca9ca3513b447031eeaf99a  libgomp/openacc_lib.h
! b4fa7988bcbb091f22826cc83dfe4fad  libgomp/ordered.c
! d9a7298e78e8ea76741e66f95462261f  libgomp/parallel.c
! 9a4550ce232364a04b2ccc158dec5626  libgomp/plugin/Makefrag.am
! b9f214e88e1727770afc1f9db29f2319  libgomp/plugin/configfrag.ac
! e16d8b74c66c42dfe1bfefef13b0a64f  libgomp/plugin/cuda/cuda.h
! 16ed69fb21aeb5b329cbba3aca7ba1ef  libgomp/plugin/hsa_ext_finalize.h
! b443b99c012094178fcb8fa2e9b63345  libgomp/plugin/plugin-hsa.c
! d0d22cb1f268380e88de92d2f38f0f68  libgomp/plugin/plugin-nvptx.c
! 349b1c204295e4c3de8a51e5c2bd1deb  libgomp/priority_queue.c
! dca40fe9954326a1c856393514df27be  libgomp/priority_queue.h
! 2a0113a893a00dc2a4c80962639c0ff0  libgomp/sections.c
! e3d506517e7bc7a878a72afbd2e5735c  libgomp/secure_getenv.h
! ee2e2e0a86d1463034c38497a912ce90  libgomp/single.c
! 3231a1ff9b1facdd12b8fae5a69dff50  libgomp/splay-tree.c
! 957b502c473dbf05c204b1d8744e071a  libgomp/splay-tree.h
! f9912eef75df4918e947979eeff780b6  libgomp/target.c
! 088cfdb948d2039e8caeb52bedb2321c  libgomp/task.c
! 513627b8b56b309114cc6ff33cd76932  libgomp/taskloop.c
! 752b9d4017ffc4a02da1541ef7c3d624  libgomp/team.c
  66e506f9237e2d510d17edef76e9ce8b  libgomp/testsuite/Makefile.am
! 49312e0eb7da886b7f42d8df42c98566  libgomp/testsuite/Makefile.in
! 046e9265048f833d3c3dbbbb4c9778b2  libgomp/testsuite/config/default.exp
  6c859d1c520b245e51a29693632545d6  libgomp/testsuite/lib/libgomp-dg.exp
! 5e855070c88d702be83007961006c896  libgomp/testsuite/lib/libgomp.exp
  4cb43d83a2b779c97ec154c46d1d6850  libgomp/testsuite/libgomp-test-support.exp.in
  2cf1f823e10665f77ed445bc524240e7  libgomp/testsuite/libgomp.c++/affinity-1.C
  2c957d1d7acf181ac6aa27218cc24d76  libgomp/testsuite/libgomp.c++/atomic-1.C
*************** b033e9045b45805b9c4de42aa8f1eb17  libgom
*** 63842,63855 ****
  7c7e2695a56575284cb08fd139d305e3  libgomp/testsuite/libgomp.c++/atomic-7.C
  d9f74ad4b5095a67f1961e49e03171fb  libgomp/testsuite/libgomp.c++/atomic-8.C
  f25833e3fd46b52ba86a77e5fe12fd99  libgomp/testsuite/libgomp.c++/atomic-9.C
! 829e192de215c09fd10ad7dfd79ae5f9  libgomp/testsuite/libgomp.c++/c++.exp
  40e00f7e2acb12d4a4edc44e244a8475  libgomp/testsuite/libgomp.c++/cancel-for-1.C
  1390d00e8471a40c55b009573ddeaf72  libgomp/testsuite/libgomp.c++/cancel-for-2.C
  cc0fc2d47b008343a233c7c3955be678  libgomp/testsuite/libgomp.c++/cancel-parallel-1.C
  b20d2ba53e37b4f1443c714276a614d1  libgomp/testsuite/libgomp.c++/cancel-parallel-2.C
  b63b7c5e4846e9b37ecd72ca0699c154  libgomp/testsuite/libgomp.c++/cancel-parallel-3.C
  9874d2651f8d264ffe5215b9ac3a9a67  libgomp/testsuite/libgomp.c++/cancel-sections-1.C
- 64cf98b489f8246a4393a49439157721  libgomp/testsuite/libgomp.c++/cancel-taskgroup-1.C
  59eb5d2d8d52e87d5eecc851095e66e6  libgomp/testsuite/libgomp.c++/cancel-taskgroup-2.C
  32ea51703b06ba963528c7c41d454527  libgomp/testsuite/libgomp.c++/cancel-taskgroup-3.C
  33f0025315295e3ad9afe1bedd12075d  libgomp/testsuite/libgomp.c++/cancel-test.h
--- 68616,68628 ----
  7c7e2695a56575284cb08fd139d305e3  libgomp/testsuite/libgomp.c++/atomic-7.C
  d9f74ad4b5095a67f1961e49e03171fb  libgomp/testsuite/libgomp.c++/atomic-8.C
  f25833e3fd46b52ba86a77e5fe12fd99  libgomp/testsuite/libgomp.c++/atomic-9.C
! f88d93d5b83ede82c3825b45f6e209a4  libgomp/testsuite/libgomp.c++/c++.exp
  40e00f7e2acb12d4a4edc44e244a8475  libgomp/testsuite/libgomp.c++/cancel-for-1.C
  1390d00e8471a40c55b009573ddeaf72  libgomp/testsuite/libgomp.c++/cancel-for-2.C
  cc0fc2d47b008343a233c7c3955be678  libgomp/testsuite/libgomp.c++/cancel-parallel-1.C
  b20d2ba53e37b4f1443c714276a614d1  libgomp/testsuite/libgomp.c++/cancel-parallel-2.C
  b63b7c5e4846e9b37ecd72ca0699c154  libgomp/testsuite/libgomp.c++/cancel-parallel-3.C
  9874d2651f8d264ffe5215b9ac3a9a67  libgomp/testsuite/libgomp.c++/cancel-sections-1.C
  59eb5d2d8d52e87d5eecc851095e66e6  libgomp/testsuite/libgomp.c++/cancel-taskgroup-2.C
  32ea51703b06ba963528c7c41d454527  libgomp/testsuite/libgomp.c++/cancel-taskgroup-3.C
  33f0025315295e3ad9afe1bedd12075d  libgomp/testsuite/libgomp.c++/cancel-test.h
*************** cf8630c02b905d98e08a439066bb9815  libgom
*** 63877,63883 ****
  e1ee4867ce68141a641f925070e14fdc  libgomp/testsuite/libgomp.c++/for-1.C
  325a8a87e18b89a296100f50ff483415  libgomp/testsuite/libgomp.c++/for-10.C
  dfe85033dffc4c50dfe322315583cac7  libgomp/testsuite/libgomp.c++/for-11.C
! d98683f8836a40114c1d49ea1b8034b1  libgomp/testsuite/libgomp.c++/for-12.C
  08c35f91ab33117abb170955c5b89577  libgomp/testsuite/libgomp.c++/for-13.C
  dd0685c9af808904319b876e758791ff  libgomp/testsuite/libgomp.c++/for-14.C
  b64542faf55a399e300d1e45dd199dea  libgomp/testsuite/libgomp.c++/for-2.C
--- 68650,68656 ----
  e1ee4867ce68141a641f925070e14fdc  libgomp/testsuite/libgomp.c++/for-1.C
  325a8a87e18b89a296100f50ff483415  libgomp/testsuite/libgomp.c++/for-10.C
  dfe85033dffc4c50dfe322315583cac7  libgomp/testsuite/libgomp.c++/for-11.C
! c9eb94dbdad80f90b93986917aba442f  libgomp/testsuite/libgomp.c++/for-12.C
  08c35f91ab33117abb170955c5b89577  libgomp/testsuite/libgomp.c++/for-13.C
  dd0685c9af808904319b876e758791ff  libgomp/testsuite/libgomp.c++/for-14.C
  b64542faf55a399e300d1e45dd199dea  libgomp/testsuite/libgomp.c++/for-2.C
*************** c5fa025c49fa4f84574bce84b4f41edf  libgom
*** 63896,63904 ****
  d8e6af7b0afca5e42961fa079dbec65e  libgomp/testsuite/libgomp.c++/loop-13.C
  bd2497c91aee23ff4f70e90b16e25413  libgomp/testsuite/libgomp.c++/loop-14.C
  a4487425f45f36fbc979c0331aa6fb35  libgomp/testsuite/libgomp.c++/loop-15.C
! 7d422e9589fd31ce814a2465d8342053  libgomp/testsuite/libgomp.c++/loop-2.C
  8f3bc76b2120d347e3809519041332d4  libgomp/testsuite/libgomp.c++/loop-3.C
! 59398898638181cfa7e418afc26a6c23  libgomp/testsuite/libgomp.c++/loop-4.C
  415849793602a06b6efea7e3cfc289f6  libgomp/testsuite/libgomp.c++/loop-5.C
  a143bccd15fda6acb915e48bf51be423  libgomp/testsuite/libgomp.c++/loop-6.C
  dfcc405ebd10d6186baef55d22ddcf08  libgomp/testsuite/libgomp.c++/loop-7.C
--- 68669,68677 ----
  d8e6af7b0afca5e42961fa079dbec65e  libgomp/testsuite/libgomp.c++/loop-13.C
  bd2497c91aee23ff4f70e90b16e25413  libgomp/testsuite/libgomp.c++/loop-14.C
  a4487425f45f36fbc979c0331aa6fb35  libgomp/testsuite/libgomp.c++/loop-15.C
! ef01090490728b068e2a5d47b76f1d20  libgomp/testsuite/libgomp.c++/loop-2.C
  8f3bc76b2120d347e3809519041332d4  libgomp/testsuite/libgomp.c++/loop-3.C
! 7372f17f86153bb7b17cdccfc0276de5  libgomp/testsuite/libgomp.c++/loop-4.C
  415849793602a06b6efea7e3cfc289f6  libgomp/testsuite/libgomp.c++/loop-5.C
  a143bccd15fda6acb915e48bf51be423  libgomp/testsuite/libgomp.c++/loop-6.C
  dfcc405ebd10d6186baef55d22ddcf08  libgomp/testsuite/libgomp.c++/loop-7.C
*************** bddf1919febc77ab73283f66e954b61e  libgom
*** 63918,63924 ****
  df872bb4e83cba46a7fdcea24d4655a7  libgomp/testsuite/libgomp.c++/nonmonotonic-1.C
  e5e4ea5d5b15f1b3621b96d667ae5157  libgomp/testsuite/libgomp.c++/nonmonotonic-2.C
  6e0d2993adb3162205b0b5c9b2307f0d  libgomp/testsuite/libgomp.c++/ordered-1.C
! b48459c2120edb3479414c307d6516ce  libgomp/testsuite/libgomp.c++/parallel-1.C
  c57d4e906a72b08e5f49bef40306b63f  libgomp/testsuite/libgomp.c++/pr24455-1.C
  e922df8c56b5c5885b9aa8d370725ea9  libgomp/testsuite/libgomp.c++/pr24455.C
  ebbf9a13ba035141ba01b3281fd27fea  libgomp/testsuite/libgomp.c++/pr26691.C
--- 68691,68697 ----
  df872bb4e83cba46a7fdcea24d4655a7  libgomp/testsuite/libgomp.c++/nonmonotonic-1.C
  e5e4ea5d5b15f1b3621b96d667ae5157  libgomp/testsuite/libgomp.c++/nonmonotonic-2.C
  6e0d2993adb3162205b0b5c9b2307f0d  libgomp/testsuite/libgomp.c++/ordered-1.C
! 3f755c96f4b692988ea0d1ddeef1ca9b  libgomp/testsuite/libgomp.c++/parallel-1.C
  c57d4e906a72b08e5f49bef40306b63f  libgomp/testsuite/libgomp.c++/pr24455-1.C
  e922df8c56b5c5885b9aa8d370725ea9  libgomp/testsuite/libgomp.c++/pr24455.C
  ebbf9a13ba035141ba01b3281fd27fea  libgomp/testsuite/libgomp.c++/pr26691.C
*************** c2bbc4b76546c42a68f404462f886332  libgom
*** 63949,63960 ****
  9a01399d6c5efcd8ed6cc173bb7a267d  libgomp/testsuite/libgomp.c++/pr66199-9.C
  d40927d27fc8aa0a3f0aca700ccbd13b  libgomp/testsuite/libgomp.c++/pr66702-1.C
  6a0d65e0168d4ec4bcb0e29154696f9d  libgomp/testsuite/libgomp.c++/pr66702-2.C
! 60e2e7752b7010464cbacb95d0a80928  libgomp/testsuite/libgomp.c++/pr69393.C
  3a212ac2024168bc7de1da7b0d3118e4  libgomp/testsuite/libgomp.c++/pr69555-1.C
  e05799ca0fb925e4de120a002da662ed  libgomp/testsuite/libgomp.c++/pr69555-2.C
  854c3912b1646c8771d7f3032a72cd1f  libgomp/testsuite/libgomp.c++/pr70376.C
  80258160ea88fc6c77ba4774e507a905  libgomp/testsuite/libgomp.c++/pr81130.C
  6050a57d353f711a4c93e9fc816d1fd8  libgomp/testsuite/libgomp.c++/pr81314.C
  a594cebdf052900dd0c8792068e14d85  libgomp/testsuite/libgomp.c++/reduction-1.C
  1473f55e3f6f9827b6dd281025b88b85  libgomp/testsuite/libgomp.c++/reduction-10.C
  bd119573b86fb5577edaf97dd86d2a6c  libgomp/testsuite/libgomp.c++/reduction-11.C
--- 68722,68735 ----
  9a01399d6c5efcd8ed6cc173bb7a267d  libgomp/testsuite/libgomp.c++/pr66199-9.C
  d40927d27fc8aa0a3f0aca700ccbd13b  libgomp/testsuite/libgomp.c++/pr66702-1.C
  6a0d65e0168d4ec4bcb0e29154696f9d  libgomp/testsuite/libgomp.c++/pr66702-2.C
! 63b2fec3d9f85e923f08d4dea8d8f60d  libgomp/testsuite/libgomp.c++/pr69389.C
! 5364311572ff5369855802faf5d414ac  libgomp/testsuite/libgomp.c++/pr69393.C
  3a212ac2024168bc7de1da7b0d3118e4  libgomp/testsuite/libgomp.c++/pr69555-1.C
  e05799ca0fb925e4de120a002da662ed  libgomp/testsuite/libgomp.c++/pr69555-2.C
  854c3912b1646c8771d7f3032a72cd1f  libgomp/testsuite/libgomp.c++/pr70376.C
  80258160ea88fc6c77ba4774e507a905  libgomp/testsuite/libgomp.c++/pr81130.C
  6050a57d353f711a4c93e9fc816d1fd8  libgomp/testsuite/libgomp.c++/pr81314.C
+ 31f6ec374e23bffe347a99f3b1f06174  libgomp/testsuite/libgomp.c++/pr82835.C
  a594cebdf052900dd0c8792068e14d85  libgomp/testsuite/libgomp.c++/reduction-1.C
  1473f55e3f6f9827b6dd281025b88b85  libgomp/testsuite/libgomp.c++/reduction-10.C
  bd119573b86fb5577edaf97dd86d2a6c  libgomp/testsuite/libgomp.c++/reduction-11.C
*************** ea7582b52459bee267a5af375cca9630  libgom
*** 63969,63975 ****
  7564a9cf2787e1ce01496a2c2d59cfb3  libgomp/testsuite/libgomp.c++/reduction-9.C
  3fc5ed7aa4ae9433ba1ad67a60ddf745  libgomp/testsuite/libgomp.c++/reference-1.C
  563f8ced1bddfb533121dc40dc3d8a33  libgomp/testsuite/libgomp.c++/sections-1.C
! 860ab4774cd57bc33c45802cc8ba5ad1  libgomp/testsuite/libgomp.c++/shared-1.C
  7805db616bcb6a1c8b84054f686fa607  libgomp/testsuite/libgomp.c++/shared-2.C
  93ea918112666e80ee6a27cff157a48c  libgomp/testsuite/libgomp.c++/simd-1.C
  30a3d3844d262653d7487eecac5d3d5c  libgomp/testsuite/libgomp.c++/simd-2.C
--- 68744,68750 ----
  7564a9cf2787e1ce01496a2c2d59cfb3  libgomp/testsuite/libgomp.c++/reduction-9.C
  3fc5ed7aa4ae9433ba1ad67a60ddf745  libgomp/testsuite/libgomp.c++/reference-1.C
  563f8ced1bddfb533121dc40dc3d8a33  libgomp/testsuite/libgomp.c++/sections-1.C
! 003510e932a56ec1059481151d56f334  libgomp/testsuite/libgomp.c++/shared-1.C
  7805db616bcb6a1c8b84054f686fa607  libgomp/testsuite/libgomp.c++/shared-2.C
  93ea918112666e80ee6a27cff157a48c  libgomp/testsuite/libgomp.c++/simd-1.C
  30a3d3844d262653d7487eecac5d3d5c  libgomp/testsuite/libgomp.c++/simd-2.C
*************** ea7582b52459bee267a5af375cca9630  libgom
*** 63985,63992 ****
  d77a6f7c75525de00d87d290884f19c7  libgomp/testsuite/libgomp.c++/simd12.C
  cc531e095ba759450d29e627697445cd  libgomp/testsuite/libgomp.c++/simd13.C
  8ccb1b76daa302735d09a059ffd4a814  libgomp/testsuite/libgomp.c++/simd14.C
! 989f18f6eb61c820627dc227d206e00d  libgomp/testsuite/libgomp.c++/single-1.C
! fa90d4613f21c2fc2203f662585b40a3  libgomp/testsuite/libgomp.c++/single-2.C
  7d0f24f8edab30e9e5aa2d3f5133e9f4  libgomp/testsuite/libgomp.c++/single-3.C
  130e99845504e36944b25622bd268c8f  libgomp/testsuite/libgomp.c++/target-1.C
  866b1595d3c521f9e048f3d196a4dea7  libgomp/testsuite/libgomp.c++/target-10.C
--- 68760,68767 ----
  d77a6f7c75525de00d87d290884f19c7  libgomp/testsuite/libgomp.c++/simd12.C
  cc531e095ba759450d29e627697445cd  libgomp/testsuite/libgomp.c++/simd13.C
  8ccb1b76daa302735d09a059ffd4a814  libgomp/testsuite/libgomp.c++/simd14.C
! 537fc9ac07046ce042391dfa19843e8c  libgomp/testsuite/libgomp.c++/single-1.C
! 6c9d8951c10a36292097716f431c385a  libgomp/testsuite/libgomp.c++/single-2.C
  7d0f24f8edab30e9e5aa2d3f5133e9f4  libgomp/testsuite/libgomp.c++/single-3.C
  130e99845504e36944b25622bd268c8f  libgomp/testsuite/libgomp.c++/target-1.C
  866b1595d3c521f9e048f3d196a4dea7  libgomp/testsuite/libgomp.c++/target-10.C
*************** f3fc31477cdff517af07a5eaed3977b4  libgom
*** 64019,64028 ****
  e58d1f21c043b7905dfd8072efa52a05  libgomp/testsuite/libgomp.c++/task-7.C
  c2392e28255d8ad9d2a56b86eddef4b4  libgomp/testsuite/libgomp.c++/task-8.C
  8578798fb9936f8addf78e6b2b068a18  libgomp/testsuite/libgomp.c++/taskgroup-1.C
! 1fe698bb6362a2d2b17c86b7c9b8ecdf  libgomp/testsuite/libgomp.c++/taskloop-1.C
  eac6027dc45c3ae2b355a362fc5430ab  libgomp/testsuite/libgomp.c++/taskloop-2.C
! c88f84d63efbe1cb36ba641afbb9c9c1  libgomp/testsuite/libgomp.c++/taskloop-3.C
! de31625c9bfc89af97ceb79de911bbbb  libgomp/testsuite/libgomp.c++/taskloop-4.C
  952a7f4c3daca43ae5ba697df18b089b  libgomp/testsuite/libgomp.c++/taskloop-5.C
  81911142ff8fca718d13016b3ee5dc84  libgomp/testsuite/libgomp.c++/taskloop-6.C
  b3611556d31dd93c92d3f5f0f9099804  libgomp/testsuite/libgomp.c++/taskloop-7.C
--- 68794,68803 ----
  e58d1f21c043b7905dfd8072efa52a05  libgomp/testsuite/libgomp.c++/task-7.C
  c2392e28255d8ad9d2a56b86eddef4b4  libgomp/testsuite/libgomp.c++/task-8.C
  8578798fb9936f8addf78e6b2b068a18  libgomp/testsuite/libgomp.c++/taskgroup-1.C
! 35e35e129d87e5fdbb0fe46677e77086  libgomp/testsuite/libgomp.c++/taskloop-1.C
  eac6027dc45c3ae2b355a362fc5430ab  libgomp/testsuite/libgomp.c++/taskloop-2.C
! 09a93505afb6a5bfb98bb0d2ce84809e  libgomp/testsuite/libgomp.c++/taskloop-3.C
! 323fd6eebc24fab2f19bee6aaaf90932  libgomp/testsuite/libgomp.c++/taskloop-4.C
  952a7f4c3daca43ae5ba697df18b089b  libgomp/testsuite/libgomp.c++/taskloop-5.C
  81911142ff8fca718d13016b3ee5dc84  libgomp/testsuite/libgomp.c++/taskloop-6.C
  b3611556d31dd93c92d3f5f0f9099804  libgomp/testsuite/libgomp.c++/taskloop-7.C
*************** ea9d7efadb5b2c25e305ce1e8aee8d04  libgom
*** 64047,64053 ****
  18bc8983002568fa3de20df48f9b2c2f  libgomp/testsuite/libgomp.c++/udr-7.C
  a0ed7c5ec445acca5bb4d3efd5041bbf  libgomp/testsuite/libgomp.c++/udr-8.C
  f8306bcde3b73b14f3e4d12cc73d9544  libgomp/testsuite/libgomp.c++/udr-9.C
! fb9a442a77037490b99bfc4cb2d7751f  libgomp/testsuite/libgomp.c/affinity-1.c
  1158aba9f91c847a376587e1a9d453a0  libgomp/testsuite/libgomp.c/affinity-2.c
  5b7669d833c280f2eb266ac1f26d1462  libgomp/testsuite/libgomp.c/appendix-a/a.15.1.c
  16dafd2aadb62eb39423e7b2deb46cc1  libgomp/testsuite/libgomp.c/appendix-a/a.16.1.c
--- 68822,68831 ----
  18bc8983002568fa3de20df48f9b2c2f  libgomp/testsuite/libgomp.c++/udr-7.C
  a0ed7c5ec445acca5bb4d3efd5041bbf  libgomp/testsuite/libgomp.c++/udr-8.C
  f8306bcde3b73b14f3e4d12cc73d9544  libgomp/testsuite/libgomp.c++/udr-9.C
! 025dfca2b02c470cf7f46afb552c078c  libgomp/testsuite/libgomp.c-c++-common/cancel-taskgroup-1.c
! 4066b4a4600721101ac384b659311782  libgomp/testsuite/libgomp.c-c++-common/pr81875.c
! 08611a968d3d5d8544391a554aa64d2e  libgomp/testsuite/libgomp.c-c++-common/pr83046.c
! a33f34c1b9c57d52227eae6f7812f713  libgomp/testsuite/libgomp.c/affinity-1.c
  1158aba9f91c847a376587e1a9d453a0  libgomp/testsuite/libgomp.c/affinity-2.c
  5b7669d833c280f2eb266ac1f26d1462  libgomp/testsuite/libgomp.c/appendix-a/a.15.1.c
  16dafd2aadb62eb39423e7b2deb46cc1  libgomp/testsuite/libgomp.c/appendix-a/a.16.1.c
*************** d8a4580727b203fa0b4b3bb5a6495aea  libgom
*** 64088,64101 ****
  e55bb2fa22ecfad155b92c445e4128e4  libgomp/testsuite/libgomp.c/autopar-7.c
  1332d360ab9db69538186f861d89a00c  libgomp/testsuite/libgomp.c/autopar-8.c
  c75783c8a3d7ab920c82ea2321e24d1d  libgomp/testsuite/libgomp.c/barrier-1.c
! 1f623b7b560c00b61366f71f080fb204  libgomp/testsuite/libgomp.c/c.exp
  02516a63eb7c2c6d10a65b41dd80b536  libgomp/testsuite/libgomp.c/cancel-for-1.c
  2d1ea3ca01ffa95de1462ac7de69f593  libgomp/testsuite/libgomp.c/cancel-for-2.c
  71b770bf06e4ead110256be4cc3e96fd  libgomp/testsuite/libgomp.c/cancel-parallel-1.c
  851225157c67a8c38811165a04ecd6ec  libgomp/testsuite/libgomp.c/cancel-parallel-2.c
  5c72770c5ffa9291a1c39a1c9ff883e3  libgomp/testsuite/libgomp.c/cancel-parallel-3.c
  a80f574f9fb408395feccb8942605971  libgomp/testsuite/libgomp.c/cancel-sections-1.c
- 025dfca2b02c470cf7f46afb552c078c  libgomp/testsuite/libgomp.c/cancel-taskgroup-1.c
  e84312e49f013526d73d8d431b003123  libgomp/testsuite/libgomp.c/cancel-taskgroup-2.c
  d3e6f53cba73258408f51757dc1643aa  libgomp/testsuite/libgomp.c/collapse-1.c
  2ca4437c4786147e01e6c4dc117ef80d  libgomp/testsuite/libgomp.c/collapse-2.c
--- 68866,68878 ----
  e55bb2fa22ecfad155b92c445e4128e4  libgomp/testsuite/libgomp.c/autopar-7.c
  1332d360ab9db69538186f861d89a00c  libgomp/testsuite/libgomp.c/autopar-8.c
  c75783c8a3d7ab920c82ea2321e24d1d  libgomp/testsuite/libgomp.c/barrier-1.c
! 01176a4ace2536b8f6397fe8304b23fe  libgomp/testsuite/libgomp.c/c.exp
  02516a63eb7c2c6d10a65b41dd80b536  libgomp/testsuite/libgomp.c/cancel-for-1.c
  2d1ea3ca01ffa95de1462ac7de69f593  libgomp/testsuite/libgomp.c/cancel-for-2.c
  71b770bf06e4ead110256be4cc3e96fd  libgomp/testsuite/libgomp.c/cancel-parallel-1.c
  851225157c67a8c38811165a04ecd6ec  libgomp/testsuite/libgomp.c/cancel-parallel-2.c
  5c72770c5ffa9291a1c39a1c9ff883e3  libgomp/testsuite/libgomp.c/cancel-parallel-3.c
  a80f574f9fb408395feccb8942605971  libgomp/testsuite/libgomp.c/cancel-sections-1.c
  e84312e49f013526d73d8d431b003123  libgomp/testsuite/libgomp.c/cancel-taskgroup-2.c
  d3e6f53cba73258408f51757dc1643aa  libgomp/testsuite/libgomp.c/collapse-1.c
  2ca4437c4786147e01e6c4dc117ef80d  libgomp/testsuite/libgomp.c/collapse-2.c
*************** c8a38164050e9ce322ff7c77a9f0f96c  libgom
*** 64166,64172 ****
  174e32454f5ca2836ef2918fcb6a42f2  libgomp/testsuite/libgomp.c/for-2.c
  df602d5027ba8aa943c3bfc8ae2f8023  libgomp/testsuite/libgomp.c/for-2.h
  1e0395365a8cdfaad7d9ad2642182a67  libgomp/testsuite/libgomp.c/for-3.c
! aa7e04dae80c94c31b286fa8e59981ff  libgomp/testsuite/libgomp.c/for-4.c
  30421f686039a497c10d9ccdaa0fe013  libgomp/testsuite/libgomp.c/for-5.c
  05235ddbf5a21300d206e3f2863d4b13  libgomp/testsuite/libgomp.c/for-6.c
  00d45ed4a463f0629d2d21a38fe0073a  libgomp/testsuite/libgomp.c/icv-1.c
--- 68943,68949 ----
  174e32454f5ca2836ef2918fcb6a42f2  libgomp/testsuite/libgomp.c/for-2.c
  df602d5027ba8aa943c3bfc8ae2f8023  libgomp/testsuite/libgomp.c/for-2.h
  1e0395365a8cdfaad7d9ad2642182a67  libgomp/testsuite/libgomp.c/for-3.c
! 42a2cc648d65b8027c23451c622c31e6  libgomp/testsuite/libgomp.c/for-4.c
  30421f686039a497c10d9ccdaa0fe013  libgomp/testsuite/libgomp.c/for-5.c
  05235ddbf5a21300d206e3f2863d4b13  libgomp/testsuite/libgomp.c/for-6.c
  00d45ed4a463f0629d2d21a38fe0073a  libgomp/testsuite/libgomp.c/icv-1.c
*************** dfaa61e4059d184085b04f03c6c34868  libgom
*** 64265,64272 ****
  862da22f7f0111529946bc01911de1c2  libgomp/testsuite/libgomp.c/pr38650.c
  e6e85a95036d356cc79f52a34c50bcff  libgomp/testsuite/libgomp.c/pr39154.c
  f99ab3b7fd574699701438b69e799987  libgomp/testsuite/libgomp.c/pr39591-1.c
! ced1dba5d35a4768f3826db0c75f01b6  libgomp/testsuite/libgomp.c/pr39591-2.c
! 362f45323b8a2ec5c23cdf78b5e58b7c  libgomp/testsuite/libgomp.c/pr39591-3.c
  006c9241a06131d8b1ad87c0a7a58349  libgomp/testsuite/libgomp.c/pr42029.c
  965ea816877f4bf791f4bf1a1aeef3cf  libgomp/testsuite/libgomp.c/pr42942.c
  3b6d62c4c9f8e8ce4656f6342157558e  libgomp/testsuite/libgomp.c/pr43893.c
--- 69042,69049 ----
  862da22f7f0111529946bc01911de1c2  libgomp/testsuite/libgomp.c/pr38650.c
  e6e85a95036d356cc79f52a34c50bcff  libgomp/testsuite/libgomp.c/pr39154.c
  f99ab3b7fd574699701438b69e799987  libgomp/testsuite/libgomp.c/pr39591-1.c
! 6fd74a6c08be72b827809ff23c581717  libgomp/testsuite/libgomp.c/pr39591-2.c
! 4f6e51fe37d470e8a8acce5caf4f7642  libgomp/testsuite/libgomp.c/pr39591-3.c
  006c9241a06131d8b1ad87c0a7a58349  libgomp/testsuite/libgomp.c/pr42029.c
  965ea816877f4bf791f4bf1a1aeef3cf  libgomp/testsuite/libgomp.c/pr42942.c
  3b6d62c4c9f8e8ce4656f6342157558e  libgomp/testsuite/libgomp.c/pr43893.c
*************** be881f5cc9989977aeedb5b25a571556  libgom
*** 64290,64305 ****
  c28350ecdcc618f3d0482bc83f7bbdcb  libgomp/testsuite/libgomp.c/pr66133.c
  e56e5a27a779ac1ffbfc5f8855994d32  libgomp/testsuite/libgomp.c/pr66199-1.c
  dc87921c80e455d76dfce51295ed5d0b  libgomp/testsuite/libgomp.c/pr66199-2.c
! c2c34fc2c9e80af1bc9098521e2031ea  libgomp/testsuite/libgomp.c/pr66199-3.c
! 3fca28e6597871eaee969560c978b611  libgomp/testsuite/libgomp.c/pr66199-4.c
  6dfc857e953d6edc4e5fcdbdbf9bb21c  libgomp/testsuite/libgomp.c/pr66199-5.c
! a78eae138c60567fc82530963386e74a  libgomp/testsuite/libgomp.c/pr66199-6.c
  5355014a06d1c467c4f049057fb98d1a  libgomp/testsuite/libgomp.c/pr66199-7.c
  3ee81bf6e44b7f9129c1687542ce39b0  libgomp/testsuite/libgomp.c/pr66199-8.c
  37654389272e34a44758a6f659f503a9  libgomp/testsuite/libgomp.c/pr66199-9.c
  0687dd4d8ae99f4e978b76d42978a0a5  libgomp/testsuite/libgomp.c/pr66714.c
  37da387849a1a7da3f75e528c47ee2cb  libgomp/testsuite/libgomp.c/pr68960.c
  9995ebc7d239ebe751419090068c6f33  libgomp/testsuite/libgomp.c/pr69110.c
  fae0065b967df85f2d4ef6b0d6a27837  libgomp/testsuite/libgomp.c/pr69805.c
  44e637116f58b1ad19c190f3b5a123fa  libgomp/testsuite/libgomp.c/pr70680-1.c
  2c3d1f7b987fcb66ad2f7ba2adc2dc73  libgomp/testsuite/libgomp.c/pr70680-2.c
--- 69067,69083 ----
  c28350ecdcc618f3d0482bc83f7bbdcb  libgomp/testsuite/libgomp.c/pr66133.c
  e56e5a27a779ac1ffbfc5f8855994d32  libgomp/testsuite/libgomp.c/pr66199-1.c
  dc87921c80e455d76dfce51295ed5d0b  libgomp/testsuite/libgomp.c/pr66199-2.c
! 9f1377bc273a32ecd0089adc3c37e5a4  libgomp/testsuite/libgomp.c/pr66199-3.c
! 877c3ffa6fe6d92f32519d89e68eb598  libgomp/testsuite/libgomp.c/pr66199-4.c
  6dfc857e953d6edc4e5fcdbdbf9bb21c  libgomp/testsuite/libgomp.c/pr66199-5.c
! 01f5f4f3072531ed85e8263b34ee704b  libgomp/testsuite/libgomp.c/pr66199-6.c
  5355014a06d1c467c4f049057fb98d1a  libgomp/testsuite/libgomp.c/pr66199-7.c
  3ee81bf6e44b7f9129c1687542ce39b0  libgomp/testsuite/libgomp.c/pr66199-8.c
  37654389272e34a44758a6f659f503a9  libgomp/testsuite/libgomp.c/pr66199-9.c
  0687dd4d8ae99f4e978b76d42978a0a5  libgomp/testsuite/libgomp.c/pr66714.c
  37da387849a1a7da3f75e528c47ee2cb  libgomp/testsuite/libgomp.c/pr68960.c
  9995ebc7d239ebe751419090068c6f33  libgomp/testsuite/libgomp.c/pr69110.c
+ 4891b9bdc801db05683bb9bcd26d27c4  libgomp/testsuite/libgomp.c/pr69389.c
  fae0065b967df85f2d4ef6b0d6a27837  libgomp/testsuite/libgomp.c/pr69805.c
  44e637116f58b1ad19c190f3b5a123fa  libgomp/testsuite/libgomp.c/pr70680-1.c
  2c3d1f7b987fcb66ad2f7ba2adc2dc73  libgomp/testsuite/libgomp.c/pr70680-2.c
*************** fbaa429fdd38498866cb27eca67eb819  libgom
*** 64311,64317 ****
  e768743d2af95f59780e3418077b7e1e  libgomp/testsuite/libgomp.c/pr80853.c
  9116b9dc2c0c3c11fdab95ea2ca66a18  libgomp/testsuite/libgomp.c/pr81687-1.c
  5996dc15da52a000b77c153bb70588f6  libgomp/testsuite/libgomp.c/pr81687-2.c
- 4066b4a4600721101ac384b659311782  libgomp/testsuite/libgomp.c/pr81875.c
  2a0a447db3ae892c0c62b0136b00360e  libgomp/testsuite/libgomp.c/priority.c
  ea7c9e74bda402b1663a903b26400fab  libgomp/testsuite/libgomp.c/private-1.c
  a594cebdf052900dd0c8792068e14d85  libgomp/testsuite/libgomp.c/reduction-1.c
--- 69089,69094 ----
*************** a2fe1187196581f584947961e875b325  libgom
*** 64353,64360 ****
  e770a162e63a8ef14578c664c60a1609  libgomp/testsuite/libgomp.c/simd-9.c
  21b382f164a90f3510cb97d72b5288b0  libgomp/testsuite/libgomp.c/single-1.c
  f96d46491425528d3d7b30c80c64952a  libgomp/testsuite/libgomp.c/single-2.c
! 3e1dabdcc6fb664c7bc7fae03b6c7824  libgomp/testsuite/libgomp.c/sort-1.c
  fe7fdb3688e9cc0090e8bf29500cd119  libgomp/testsuite/libgomp.c/static-chunk-size-one.c
  fa179f92bce747c523f38056959318ff  libgomp/testsuite/libgomp.c/target-1.c
  d01ee6246770101e0827d46c27fc4cc5  libgomp/testsuite/libgomp.c/target-10.c
  9db70785f4086ce177b8c657f8afcf53  libgomp/testsuite/libgomp.c/target-11.c
--- 69130,69139 ----
  e770a162e63a8ef14578c664c60a1609  libgomp/testsuite/libgomp.c/simd-9.c
  21b382f164a90f3510cb97d72b5288b0  libgomp/testsuite/libgomp.c/single-1.c
  f96d46491425528d3d7b30c80c64952a  libgomp/testsuite/libgomp.c/single-2.c
! 12813a7f0603caf87663cff4fad3b213  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
  fa179f92bce747c523f38056959318ff  libgomp/testsuite/libgomp.c/target-1.c
  d01ee6246770101e0827d46c27fc4cc5  libgomp/testsuite/libgomp.c/target-10.c
  9db70785f4086ce177b8c657f8afcf53  libgomp/testsuite/libgomp.c/target-11.c
*************** f7ff00e5f2a30832f7f427c91fa1f61b  libgom
*** 64400,64409 ****
  d3e7c403248ba696f161f0c29c1f87a6  libgomp/testsuite/libgomp.c/task-4.c
  1632e928ba733271be6ddd0108e94f71  libgomp/testsuite/libgomp.c/task-5.c
  9aeca4581b0d88b4cdaf4cd5fb964e23  libgomp/testsuite/libgomp.c/taskgroup-1.c
! 1b239ce557bfa6ad04f25eb87cf577ff  libgomp/testsuite/libgomp.c/taskloop-1.c
  4de0173cd4363135fdd9baf3678f2bed  libgomp/testsuite/libgomp.c/taskloop-2.c
! e01db3493c62b4b881e9e323d44ec5bc  libgomp/testsuite/libgomp.c/taskloop-3.c
! aff8d0732a84d0eefe6fef1a867448a0  libgomp/testsuite/libgomp.c/taskloop-4.c
  99028484e29de30f98a28ae8f9667616  libgomp/testsuite/libgomp.c/thread-limit-1.c
  c51095e89e7d25c69a19796fdd4d5257  libgomp/testsuite/libgomp.c/thread-limit-2.c
  099b6f9e6fd2c4becb3b005b67c87003  libgomp/testsuite/libgomp.c/thread-limit-3.c
--- 69179,69188 ----
  d3e7c403248ba696f161f0c29c1f87a6  libgomp/testsuite/libgomp.c/task-4.c
  1632e928ba733271be6ddd0108e94f71  libgomp/testsuite/libgomp.c/task-5.c
  9aeca4581b0d88b4cdaf4cd5fb964e23  libgomp/testsuite/libgomp.c/taskgroup-1.c
! 748e519f16dbd87680874ddc4bbcf61f  libgomp/testsuite/libgomp.c/taskloop-1.c
  4de0173cd4363135fdd9baf3678f2bed  libgomp/testsuite/libgomp.c/taskloop-2.c
! 8be751808fc216579a94d35deddaadbb  libgomp/testsuite/libgomp.c/taskloop-3.c
! 192e8a76776b74e70499b60a2a326369  libgomp/testsuite/libgomp.c/taskloop-4.c
  99028484e29de30f98a28ae8f9667616  libgomp/testsuite/libgomp.c/thread-limit-1.c
  c51095e89e7d25c69a19796fdd4d5257  libgomp/testsuite/libgomp.c/thread-limit-2.c
  099b6f9e6fd2c4becb3b005b67c87003  libgomp/testsuite/libgomp.c/thread-limit-3.c
*************** edfe0cd950eb6d29688ffe6e38c87d10  libgom
*** 64414,64439 ****
  35c4904668124586d73a652acb4ed703  libgomp/testsuite/libgomp.c/vla-1.c
  c6507fc0b39b314367d618a7592fbae1  libgomp/testsuite/libgomp.fortran/affinity1.f90
  a7ba1c005e2c0979fffc63313c6c2d42  libgomp/testsuite/libgomp.fortran/affinity2.f90
! 72f799d6a28401fdff759786ae76ed6e  libgomp/testsuite/libgomp.fortran/aligned1.f03
! 71944b8bef7f0e4b6f81cf656e8b99d8  libgomp/testsuite/libgomp.fortran/alloc-comp-1.f90
! b8dd09f53416d6c63bc6648223c60f11  libgomp/testsuite/libgomp.fortran/alloc-comp-2.f90
! 71f9dfa4865a762564750c9cb7de2ca7  libgomp/testsuite/libgomp.fortran/alloc-comp-3.f90
! 56a24835fa9d124fad3d523ffafe3b21  libgomp/testsuite/libgomp.fortran/allocatable1.f90
! 956fa22db4361f8a28a17d9ee348259a  libgomp/testsuite/libgomp.fortran/allocatable10.f90
! d21f2d58b9ffe5ef1aaf580180dfdad4  libgomp/testsuite/libgomp.fortran/allocatable11.f90
! 4cc63c460b69cefd0cf2a165978338c6  libgomp/testsuite/libgomp.fortran/allocatable12.f90
! 927bc460f431a751bec399f6f3f1eae7  libgomp/testsuite/libgomp.fortran/allocatable2.f90
! 1746499596b2e82f512b2f7679eba1b1  libgomp/testsuite/libgomp.fortran/allocatable3.f90
! f32aba254f0d07b32bb09a6665fa5d11  libgomp/testsuite/libgomp.fortran/allocatable4.f90
! 8e7d95f9f5e69d9ae1ea20e6b3554025  libgomp/testsuite/libgomp.fortran/allocatable5.f90
! 6bd96bc59a02f0cff14cedaa535e2b87  libgomp/testsuite/libgomp.fortran/allocatable6.f90
! 71d5213bf85633a62cd15b3c8d85606b  libgomp/testsuite/libgomp.fortran/allocatable7.f90
! a5c3b87debe112259e6655553f327b36  libgomp/testsuite/libgomp.fortran/allocatable8.f90
! ba13b71662af2e95ad0d09be9e3aa86a  libgomp/testsuite/libgomp.fortran/allocatable9.f90
  d69ebafdf43e748e354c0c05228cdd0c  libgomp/testsuite/libgomp.fortran/appendix-a/a.15.1.f90
  3f53f7b5eb9ab9c8cb9eb0edfeedad91  libgomp/testsuite/libgomp.fortran/appendix-a/a.16.1.f90
! 519d7f01f054c7eb7495ba49409d2c51  libgomp/testsuite/libgomp.fortran/appendix-a/a.18.1.f90
! 6e1e84c24eb971c8adedf6f318eaefa3  libgomp/testsuite/libgomp.fortran/appendix-a/a.19.1.f90
  db6a6e46a5c01896eb0ee22b2c2d15cc  libgomp/testsuite/libgomp.fortran/appendix-a/a.2.1.f90
  731474b46b36e2c9aa339b656ed74051  libgomp/testsuite/libgomp.fortran/appendix-a/a.21.1.f90
  d5dc75f796c37269c6b78ad510e0ac03  libgomp/testsuite/libgomp.fortran/appendix-a/a.22.7.f90
--- 69193,69218 ----
  35c4904668124586d73a652acb4ed703  libgomp/testsuite/libgomp.c/vla-1.c
  c6507fc0b39b314367d618a7592fbae1  libgomp/testsuite/libgomp.fortran/affinity1.f90
  a7ba1c005e2c0979fffc63313c6c2d42  libgomp/testsuite/libgomp.fortran/affinity2.f90
! 1ac954f90c55bea7a3686abde75b5687  libgomp/testsuite/libgomp.fortran/aligned1.f03
! 52b8564873fdd1436b823340c8875a19  libgomp/testsuite/libgomp.fortran/alloc-comp-1.f90
! 807b4dfae6b61d2ab4b6fe75a63a7f5e  libgomp/testsuite/libgomp.fortran/alloc-comp-2.f90
! d3308f7508adc61841a5f93ece8edb9e  libgomp/testsuite/libgomp.fortran/alloc-comp-3.f90
! 09ee10a67f6a7a11b313cfd9b5dab288  libgomp/testsuite/libgomp.fortran/allocatable1.f90
! 4db72e47f74849eb9a922e4cc9279eb5  libgomp/testsuite/libgomp.fortran/allocatable10.f90
! 359b979299bd768ee6b7538e48c8ad78  libgomp/testsuite/libgomp.fortran/allocatable11.f90
! 87a008e52770a20b5fff39803e64ab21  libgomp/testsuite/libgomp.fortran/allocatable12.f90
! e20448e895224ed01af079aaaccad295  libgomp/testsuite/libgomp.fortran/allocatable2.f90
! 5babd7b67de346ba5b3c9f69076cb4a2  libgomp/testsuite/libgomp.fortran/allocatable3.f90
! 5fbd2c388ce0709f2344b05c65c16a26  libgomp/testsuite/libgomp.fortran/allocatable4.f90
! 2106a136cf00daee56f2a1f4d946c1ac  libgomp/testsuite/libgomp.fortran/allocatable5.f90
! e55fdccff97fc9118673be905e1bc4d7  libgomp/testsuite/libgomp.fortran/allocatable6.f90
! eeec79cac336f3ac14503966fb86ba7b  libgomp/testsuite/libgomp.fortran/allocatable7.f90
! e8af8ae256f88bd943e34fd1d0fae91f  libgomp/testsuite/libgomp.fortran/allocatable8.f90
! 451adc11f39632df30fb23b16acbcb62  libgomp/testsuite/libgomp.fortran/allocatable9.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
! 98a991f8218180118484ad344609e284  libgomp/testsuite/libgomp.fortran/appendix-a/a.19.1.f90
  db6a6e46a5c01896eb0ee22b2c2d15cc  libgomp/testsuite/libgomp.fortran/appendix-a/a.2.1.f90
  731474b46b36e2c9aa339b656ed74051  libgomp/testsuite/libgomp.fortran/appendix-a/a.21.1.f90
  d5dc75f796c37269c6b78ad510e0ac03  libgomp/testsuite/libgomp.fortran/appendix-a/a.22.7.f90
*************** c41b35e438ba2e9b553b7a8b4ab48ae1  libgom
*** 64454,64693 ****
  f34e0c37442a4a7019dadca0b34ac11d  libgomp/testsuite/libgomp.fortran/appendix-a/a.40.1.f90
  04f8ab2d7e7bf368add9b8d8c9a8c1bf  libgomp/testsuite/libgomp.fortran/appendix-a/a.5.1.f90
  6116086a89b906c26bd9afe26e57a07a  libgomp/testsuite/libgomp.fortran/appendix-a/a10.1.f90
! ba05d0e1b584ec6c750d14a486ac83b2  libgomp/testsuite/libgomp.fortran/associate1.f90
! 41cd3ed9183e6bc7b20ef8836663fbdd  libgomp/testsuite/libgomp.fortran/associate2.f90
! aa03f95280189c0147b6c2ec288164ba  libgomp/testsuite/libgomp.fortran/associate3.f90
! cb0b79f7bddc47118981784eb7ba6f75  libgomp/testsuite/libgomp.fortran/cancel-do-1.f90
! 2a5fe3d97ff9f23e08df5e015a45e3bc  libgomp/testsuite/libgomp.fortran/cancel-do-2.f90
! a110324b7cb72dc5755c1ad39c5230fd  libgomp/testsuite/libgomp.fortran/cancel-parallel-1.f90
  e804e30e2adbfe3b45724f1d27673f8a  libgomp/testsuite/libgomp.fortran/cancel-parallel-3.f90
! b9afb6ff66c727dc1eae6ec7017f6d44  libgomp/testsuite/libgomp.fortran/cancel-sections-1.f90
! 11bef914844f26ca1de29fda6df378cb  libgomp/testsuite/libgomp.fortran/cancel-taskgroup-2.f90
! d647e114a637a61f5170b3f577ebeb09  libgomp/testsuite/libgomp.fortran/character1.f90
! 527829a886591ba771eaaa6b79d07ad6  libgomp/testsuite/libgomp.fortran/character2.f90
! 98f9782da53de2e437f3670c305d4ea2  libgomp/testsuite/libgomp.fortran/collapse1.f90
! 3e63124c13d5ef26360cc6b85b150224  libgomp/testsuite/libgomp.fortran/collapse2.f90
! 4a719d7f9cb4fb097b1ec8fde2d893f4  libgomp/testsuite/libgomp.fortran/collapse3.f90
! 92c16d443525ccf6df28ada587ff2e10  libgomp/testsuite/libgomp.fortran/collapse4.f90
! abc34e96ba72c420750e91c4b0ecabd8  libgomp/testsuite/libgomp.fortran/condinc1.f
  2f1fffd33e5b79debd286ea4d1c6668b  libgomp/testsuite/libgomp.fortran/condinc1.inc
  5c117e1d74f2b4f253e83682b499c979  libgomp/testsuite/libgomp.fortran/condinc2.f
! c4ac0f05c4dc83a45fe9be076ad84959  libgomp/testsuite/libgomp.fortran/condinc3.f90
  830c32b3e02911ba8619b6e823f94108  libgomp/testsuite/libgomp.fortran/condinc4.f90
! 4935884f21e6712b4f39b275079f0979  libgomp/testsuite/libgomp.fortran/crayptr1.f90
! 2fd37c1401303ca48058d885c14bbc9f  libgomp/testsuite/libgomp.fortran/crayptr2.f90
! a80ce4249b45880d8fb3896d2804747e  libgomp/testsuite/libgomp.fortran/crayptr3.f90
! f5efb536310d1e6326052b063becef4e  libgomp/testsuite/libgomp.fortran/declare-simd-1.f90
  c0ebd55529e9baf82532c7b2f51f3fe4  libgomp/testsuite/libgomp.fortran/declare-simd-2.f90
! 0ffd85be0cdc2738928b8085de5bcffc  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
! 1bab489b61e92eac0682ae4d998dab10  libgomp/testsuite/libgomp.fortran/declare-target-2.f90
! 6e835db912fa2be675117b66187801c7  libgomp/testsuite/libgomp.fortran/depend-1.f90
! 501e003d6de5432f0ae9aabf28a1785b  libgomp/testsuite/libgomp.fortran/depend-2.f90
! a569a86614b3eb780060b03cae7470a1  libgomp/testsuite/libgomp.fortran/depend-3.f90
! ed11df4baf7b08723fe3d9e881036bed  libgomp/testsuite/libgomp.fortran/do1.f90
! 3e9f4c16fbcd55d7ad1c66acde8a2a71  libgomp/testsuite/libgomp.fortran/do2.f90
! b3df52ee91832233f2d579f618d9d307  libgomp/testsuite/libgomp.fortran/doacross1.f90
! ae00261efef56a7df62ffd068de0e09f  libgomp/testsuite/libgomp.fortran/doacross2.f90
! 42c21d5b38ab299078643c580e9e37c9  libgomp/testsuite/libgomp.fortran/doacross3.f90
! 8d4191e9b8b791949307a8339772f75a  libgomp/testsuite/libgomp.fortran/examples-4/array_sections-3.f90
! 68c1f63af4da5cd4397a9e3370fa6cbf  libgomp/testsuite/libgomp.fortran/examples-4/array_sections-4.f90
! 68c2f8b91ddd6adeba531b674f6844af  libgomp/testsuite/libgomp.fortran/examples-4/async_target-1.f90
! fe679d8712737ddd0d9c54ff8e61c201  libgomp/testsuite/libgomp.fortran/examples-4/async_target-2.f90
! 892544b1060c3d00f83a16bfa23d7df6  libgomp/testsuite/libgomp.fortran/examples-4/declare_target-1.f90
! 2ea2edeb20a8546e6e12eec9c15cc2ae  libgomp/testsuite/libgomp.fortran/examples-4/declare_target-2.f90
! 8bafd027da2b92fcaf5f480ef3bcd364  libgomp/testsuite/libgomp.fortran/examples-4/declare_target-3.f90
! 94b934ca2ea6c4b51cd85a3378d7dcc2  libgomp/testsuite/libgomp.fortran/examples-4/declare_target-4.f90
! 3dd08dc98fe801d796f2b35bcae9a223  libgomp/testsuite/libgomp.fortran/examples-4/declare_target-5.f90
! f6ef6d758ae9fe303397221346673883  libgomp/testsuite/libgomp.fortran/examples-4/device-1.f90
! 37ae003f3e412d53c3c4e044b0b4bfc7  libgomp/testsuite/libgomp.fortran/examples-4/device-2.f90
! 5a67f6184db34697baf7dc00af051bdd  libgomp/testsuite/libgomp.fortran/examples-4/device-3.f90
! 6577ecf2e589a5ca226faab5b423d52c  libgomp/testsuite/libgomp.fortran/examples-4/simd-1.f90
! a6aa446933672623e6e3359a59deeca9  libgomp/testsuite/libgomp.fortran/examples-4/simd-2.f90
! 60c6664f438010fb677c8f12a73eb9df  libgomp/testsuite/libgomp.fortran/examples-4/simd-3.f90
! 5c73c3fc376d3ce65d4307975350f228  libgomp/testsuite/libgomp.fortran/examples-4/simd-4.f90
! fd79f1305b9fbfcff2e23cee8b01f811  libgomp/testsuite/libgomp.fortran/examples-4/simd-5.f90
! 5667fec253229006f64139131657cd81  libgomp/testsuite/libgomp.fortran/examples-4/simd-6.f90
! 1dee1dd3bcf94c5ec1cb17a707b0166b  libgomp/testsuite/libgomp.fortran/examples-4/simd-7.f90
! 04cc32e4329b62e16c169983879b45c3  libgomp/testsuite/libgomp.fortran/examples-4/simd-8.f90
! b92fbf047241a8c5eb1d33de88d3c334  libgomp/testsuite/libgomp.fortran/examples-4/target-1.f90
! 38fc7f87bb835634381f27e868dab4f4  libgomp/testsuite/libgomp.fortran/examples-4/target-2.f90
! 636bb179752c2cbe45be803c83e82b57  libgomp/testsuite/libgomp.fortran/examples-4/target-3.f90
! 94446ff51877ae799dfce00afb91c910  libgomp/testsuite/libgomp.fortran/examples-4/target-4.f90
! d69bd402226c963f3c87b9d30a1b5555  libgomp/testsuite/libgomp.fortran/examples-4/target-5.f90
! 055ffc59f6aa6973574bf0130645e505  libgomp/testsuite/libgomp.fortran/examples-4/target_data-1.f90
! f3478f32e72694be744a99fd4a7f7932  libgomp/testsuite/libgomp.fortran/examples-4/target_data-2.f90
! d8fe63ee36fd77fb8e3f50f442ad5d0b  libgomp/testsuite/libgomp.fortran/examples-4/target_data-3.f90
! b5e0e0a8fdd7266ae3ea759f8c441d0a  libgomp/testsuite/libgomp.fortran/examples-4/target_data-4.f90
! 2f314dac5b243f8e8f5c7d672b18dd90  libgomp/testsuite/libgomp.fortran/examples-4/target_data-5.f90
! b8724dc8831b42c11db6bcb72c0d759c  libgomp/testsuite/libgomp.fortran/examples-4/target_data-6.f90
! 26cbc1733b86ee73b3326bf45dc7222f  libgomp/testsuite/libgomp.fortran/examples-4/target_data-7.f90
! 69efac8a6602fff654e0564b4efccf49  libgomp/testsuite/libgomp.fortran/examples-4/target_update-1.f90
! 856b75a3b1432a7b081babc214a49bdb  libgomp/testsuite/libgomp.fortran/examples-4/target_update-2.f90
! ac86f548820e74e40102fa41053b6bd7  libgomp/testsuite/libgomp.fortran/examples-4/task_dep-1.f90
! ab9587b676fd7da8462aaf4e9142c2f4  libgomp/testsuite/libgomp.fortran/examples-4/task_dep-2.f90
! 64b745218adf83281e68143079a6fc39  libgomp/testsuite/libgomp.fortran/examples-4/task_dep-3.f90
! 9bfde27e2b0c9ded8071c1a1dbf542bb  libgomp/testsuite/libgomp.fortran/examples-4/task_dep-4.f90
! cfb59ecb50b8932769ef9cb0808fb71f  libgomp/testsuite/libgomp.fortran/examples-4/task_dep-5.f90
! fb7f9d5d886bac4b1da2fe75b82a85be  libgomp/testsuite/libgomp.fortran/examples-4/teams-2.f90
! 93fc856059dd264909ac6284ef920b7b  libgomp/testsuite/libgomp.fortran/examples-4/teams-3.f90
! 053728a452a1ebb6ff4ded99f1dbeb29  libgomp/testsuite/libgomp.fortran/examples-4/teams-4.f90
! c881cde68108524bc3dc1e88cd267964  libgomp/testsuite/libgomp.fortran/examples-4/teams-5.f90
! 70e1d3e886ae719efc6edba91dea0b8a  libgomp/testsuite/libgomp.fortran/examples-4/teams-6.f90
  9d247f0af4f050d701d0270be05e48b3  libgomp/testsuite/libgomp.fortran/fortran.exp
  aa1b03213ad6dd5ac0adf4a44e55144c  libgomp/testsuite/libgomp.fortran/jacobi.f
! c911068aa92fe6655b2c79c7f9df0389  libgomp/testsuite/libgomp.fortran/lastprivate1.f90
! 863b61004602696fa1e693fd6a3d263c  libgomp/testsuite/libgomp.fortran/lastprivate2.f90
! 09b940bd253e03a869ca86ff62ad46c6  libgomp/testsuite/libgomp.fortran/lib1.f90
! 836838589348a5561c07a9a3027fc617  libgomp/testsuite/libgomp.fortran/lib2.f
! 476ee029a9ab787e67582631025c0b36  libgomp/testsuite/libgomp.fortran/lib3.f
! 15980dc14cf018992dcc029381a20db3  libgomp/testsuite/libgomp.fortran/lib4.f90
! 895b29081e00d9d964b053f637201dab  libgomp/testsuite/libgomp.fortran/lock-1.f90
! ccf03021815006e5bdaa174f26aa33ef  libgomp/testsuite/libgomp.fortran/lock-2.f90
! 7e1395396863a04864086c50c6c2252b  libgomp/testsuite/libgomp.fortran/nested1.f90
! b8337eeb8f903e8cba864798369482ad  libgomp/testsuite/libgomp.fortran/nestedfn1.f90
! 8934ee3a053a4179545b9e79fd5cb2bb  libgomp/testsuite/libgomp.fortran/nestedfn2.f90
! a9ae54e23bafe9142ed3fee717823360  libgomp/testsuite/libgomp.fortran/nestedfn3.f90
! 61d44d5f6efe0553ec613e3f73ba1ed5  libgomp/testsuite/libgomp.fortran/nestedfn4.f90
! 1759d65e73eba6d1b0c60837e354e8be  libgomp/testsuite/libgomp.fortran/nestedfn5.f90
! e863b24ed37278eaafc48570498cbbda  libgomp/testsuite/libgomp.fortran/omp_atomic1.f90
! 2453d7412313367c31ca23e641719185  libgomp/testsuite/libgomp.fortran/omp_atomic2.f90
! 3245438b8d6d4d38923518299c0fcfe7  libgomp/testsuite/libgomp.fortran/omp_atomic3.f90
! b7ae32017adcedabb18b40d236b2c2ff  libgomp/testsuite/libgomp.fortran/omp_atomic4.f90
! a4dba85fc89bafd4bfeaca52301b1532  libgomp/testsuite/libgomp.fortran/omp_atomic5.f90
! 571baa2c0ffb5f61a61d1ee7e4744599  libgomp/testsuite/libgomp.fortran/omp_cond1.f
! 47ef1f5906cca9cb33adf59409c8422d  libgomp/testsuite/libgomp.fortran/omp_cond2.f
! 3f611530c87478c4eefc94de263b2ad6  libgomp/testsuite/libgomp.fortran/omp_cond3.F90
! e1de973eef001fede674c8c365bd2f62  libgomp/testsuite/libgomp.fortran/omp_cond4.F90
  622323a8b6d6827bf9a0ded81fb4d9cb  libgomp/testsuite/libgomp.fortran/omp_hello.f
  1d5baa651387120c1fda67e24dd2125c  libgomp/testsuite/libgomp.fortran/omp_orphan.f
! e98c9ef094189dadf79f0fa02389aca2  libgomp/testsuite/libgomp.fortran/omp_parse1.f90
! 5ac763fbc75f93dcc4ef36101b0fc7c8  libgomp/testsuite/libgomp.fortran/omp_parse2.f90
! 04eb91009dc05006a34c70f2e7cc6cc2  libgomp/testsuite/libgomp.fortran/omp_parse3.f90
! 197ac45970965123890e6a7030c57c1d  libgomp/testsuite/libgomp.fortran/omp_parse4.f90
  c910dfe57b9f53b8992d397c3571fd09  libgomp/testsuite/libgomp.fortran/omp_reduction.f
  77c80068c3418c0e379971a5e4ac91f1  libgomp/testsuite/libgomp.fortran/omp_workshare1.f
  4c7b256074253b51c44fe0f469b4512e  libgomp/testsuite/libgomp.fortran/omp_workshare2.f
! 6a73f20b5155fe0923bc65cb57d51d49  libgomp/testsuite/libgomp.fortran/openmp_version-1.f
! f927dde1c913dd426d4f2058d77943f7  libgomp/testsuite/libgomp.fortran/openmp_version-2.f90
! a4c6f8fa80ff014bae8a4f11fb41dc89  libgomp/testsuite/libgomp.fortran/parloops-exit-first-loop-alt-2.f95
! 95c66e7f35deb1fb16d8c25d1b72f16c  libgomp/testsuite/libgomp.fortran/parloops-exit-first-loop-alt.f95
! bd4f1fc88afdef5e17260c0d1f276b1b  libgomp/testsuite/libgomp.fortran/pointer1.f90
! 68926972a15f091338fdd2c4911d21c2  libgomp/testsuite/libgomp.fortran/pointer2.f90
! 6c679ff49d6363b86f77ad4d1ea6ee34  libgomp/testsuite/libgomp.fortran/pr25162.f
! 68b3cce243cc6166a5f521ecc7ce08ed  libgomp/testsuite/libgomp.fortran/pr25219.f90
! e753bc454dc9bc2fd8d740e4f7f9e277  libgomp/testsuite/libgomp.fortran/pr27395-1.f90
! 425b403dcbc763c2419fa543b27a4a4e  libgomp/testsuite/libgomp.fortran/pr27395-2.f90
! 9837abcb17ee059f172c012fe7a969cc  libgomp/testsuite/libgomp.fortran/pr27416-1.f90
! 8020cce552b901d2e141b96381e71100  libgomp/testsuite/libgomp.fortran/pr27916-1.f90
! a0160ccf1811bdebf882e7d1afccce29  libgomp/testsuite/libgomp.fortran/pr27916-2.f90
! 13c52db9eaba68e22eeea21c9e7cecc4  libgomp/testsuite/libgomp.fortran/pr28390.f
! 84fb96774849f24f040e77b85464c6a5  libgomp/testsuite/libgomp.fortran/pr29629.f90
  a5e2fb177a942980066d8ec7fa604701  libgomp/testsuite/libgomp.fortran/pr32359.f90
! 4dc6274c13889b234049789123b03c03  libgomp/testsuite/libgomp.fortran/pr32550.f90
! f62843db618435c4a27dcdfd8dad30be  libgomp/testsuite/libgomp.fortran/pr33880.f90
! c343d4416e5e61e5df024f2a3eb2dd00  libgomp/testsuite/libgomp.fortran/pr34020.f90
! ddd13da7e261528309013b3a49c05bca  libgomp/testsuite/libgomp.fortran/pr35130.f90
! 03980b5e2b32747cdeb7042e049e8ee9  libgomp/testsuite/libgomp.fortran/pr42162.f90
! 7c5ff4d01b52400e8efb919f24ee719e  libgomp/testsuite/libgomp.fortran/pr46753.f90
! 59e84625ad4e7a9efce95deaae9a6074  libgomp/testsuite/libgomp.fortran/pr48894.f90
! 40b8d47a0d185d1cd5afdf5de857c4db  libgomp/testsuite/libgomp.fortran/pr49792-1.f90
! d40bb4d01cb9e310f1f5f2f8112947c3  libgomp/testsuite/libgomp.fortran/pr49792-2.f90
! 1dac91934a3563a19d93ed80e90a1402  libgomp/testsuite/libgomp.fortran/pr63938-1.f90
! 0c0a333229738678ff439ed622473a71  libgomp/testsuite/libgomp.fortran/pr63938-2.f90
! 488472a1cb3fe3be092f96fa1fd4c844  libgomp/testsuite/libgomp.fortran/pr65597.f90
! 96b0e53c9cc9ec5f83e0122bf30117bc  libgomp/testsuite/libgomp.fortran/pr66199-1.f90
! 1923501d51b6000f925d6c1e13c673ed  libgomp/testsuite/libgomp.fortran/pr66199-2.f90
  090e14b3e3d9a95dbcd195aca47aeedf  libgomp/testsuite/libgomp.fortran/pr66680.f90
! f7782bc4547f59705a61ee03dc89372a  libgomp/testsuite/libgomp.fortran/pr71014.f90
  eaeadf99271f326c16618e5bfa7fa387  libgomp/testsuite/libgomp.fortran/pr71734-1.f90
  2d364f3055004bfd34a5395bfd835c8c  libgomp/testsuite/libgomp.fortran/pr71734-2.f90
! 7b247f3eafeb9482ddfb062c5c175cea  libgomp/testsuite/libgomp.fortran/pr81304.f90
! 947c6cd3f45fe3e7fdf8f49002b1e6da  libgomp/testsuite/libgomp.fortran/pr81841.f90
! ed38be90cae92afacea925b0c0c3c356  libgomp/testsuite/libgomp.fortran/procptr1.f90
! 4af6e9394ddc7a6c89dca2968cac162e  libgomp/testsuite/libgomp.fortran/recursion1.f90
! f7a52f7caa9a62d15b0f1270dc461c08  libgomp/testsuite/libgomp.fortran/reduction1.f90
! 0afa716c312eb72430b0e7e942b66c76  libgomp/testsuite/libgomp.fortran/reduction2.f90
! a1f50325f7d8b04ac3e9b9f7a0baf64e  libgomp/testsuite/libgomp.fortran/reduction3.f90
! ca60f938c4d7a4cc16d117cd304045ca  libgomp/testsuite/libgomp.fortran/reduction4.f90
! d9e80944aca37137cd9651ba2f265ad5  libgomp/testsuite/libgomp.fortran/reduction5.f90
! cb2c56bb89dee24463e799f86b987133  libgomp/testsuite/libgomp.fortran/reduction6.f90
! 7dabbf95eb889c0bebb6b54fa980e1aa  libgomp/testsuite/libgomp.fortran/reference1.f90
! d1aa9a0d9140de4ed5479375127bba4b  libgomp/testsuite/libgomp.fortran/reference2.f90
! 06b508a781eece905af67329a6a0e528  libgomp/testsuite/libgomp.fortran/retval1.f90
! 1f82243a8f0a7760c615332b7656be74  libgomp/testsuite/libgomp.fortran/retval2.f90
! 411e72fddee46be87cb1f3a53f2488e4  libgomp/testsuite/libgomp.fortran/sharing1.f90
! 3b56e022c6f666bfa9c89a3c28f0a500  libgomp/testsuite/libgomp.fortran/sharing2.f90
! dbb326b55c871713fdc1de45c38a7c23  libgomp/testsuite/libgomp.fortran/simd1.f90
! 8ceea2a4b33050312931a78e4f46bd6f  libgomp/testsuite/libgomp.fortran/simd2.f90
! 034f4c3fa611a401281064988a3e228f  libgomp/testsuite/libgomp.fortran/simd3.f90
! 462b4c390c030e55cc9db21a19137006  libgomp/testsuite/libgomp.fortran/simd4.f90
! 5861fe58475761f0cb54c8755c49499a  libgomp/testsuite/libgomp.fortran/simd5.f90
! d86df9609cefa51152b9350aacb817e1  libgomp/testsuite/libgomp.fortran/simd6.f90
! 870b23ab9545da157e901683ff994ce3  libgomp/testsuite/libgomp.fortran/simd7.f90
! 166b5da3db2f62a2df7c6d3b58af4eaf  libgomp/testsuite/libgomp.fortran/stack.f90
! ddb20b7f8cb9aa13372d922fad1ddb95  libgomp/testsuite/libgomp.fortran/strassen.f90
! be4a9506a28165677f79dbf7eea9dc39  libgomp/testsuite/libgomp.fortran/tabs1.f90
! a8af85b9fb1ec1aac107848d192f6c66  libgomp/testsuite/libgomp.fortran/tabs2.f
! 510eea5efdbce62755f50df6244acebe  libgomp/testsuite/libgomp.fortran/target1.f90
! e7b2e7644f4981570bf4e4d8123aa095  libgomp/testsuite/libgomp.fortran/target2.f90
! 11a77b021164127357401380e5d1d2da  libgomp/testsuite/libgomp.fortran/target3.f90
! caeb334baa8ee36948476cbdcbd484d2  libgomp/testsuite/libgomp.fortran/target4.f90
! da080fe37da01c114e251fc67e64287c  libgomp/testsuite/libgomp.fortran/target5.f90
! f66a5081bf7730dffebdba49894d2c54  libgomp/testsuite/libgomp.fortran/target6.f90
! 881ca68a517e287bc011679bb19d953a  libgomp/testsuite/libgomp.fortran/target7.f90
! a75ebee6d4c3f7b5a041b1208b48d7e3  libgomp/testsuite/libgomp.fortran/target8.f90
! 3a4bc67e69df5eb5726956f8c0f6b0c7  libgomp/testsuite/libgomp.fortran/task1.f90
! 58b7d380f359d6a326f0fc046f014c2d  libgomp/testsuite/libgomp.fortran/task2.f90
! 190771ec6fc8070c1b15d6bc4103cc9e  libgomp/testsuite/libgomp.fortran/task3.f90
! 99b0461034cab757c5038bc87a6a547a  libgomp/testsuite/libgomp.fortran/task4.f90
! 6fff773e2d31ef51153c030c719d62e5  libgomp/testsuite/libgomp.fortran/taskgroup1.f90
! 5048972f612338266911ce8dd66aca55  libgomp/testsuite/libgomp.fortran/taskloop1.f90
! 14347dd7b66f6be65c6b448ca29a1296  libgomp/testsuite/libgomp.fortran/taskloop2.f90
! e29a61654c8b01cb56c58fa02fc6805c  libgomp/testsuite/libgomp.fortran/taskloop3.f90
! e0782e332cfe0d68acd6478909108297  libgomp/testsuite/libgomp.fortran/taskloop4.f90
! 1d32702e4b540eb31abac9a94083a959  libgomp/testsuite/libgomp.fortran/threadprivate1.f90
! 789a1579a73a9912a2800d6c6717ad42  libgomp/testsuite/libgomp.fortran/threadprivate2.f90
! 0825abd8dca38d283771f7bb2d385fb8  libgomp/testsuite/libgomp.fortran/threadprivate3.f90
! 59c99788fd51984ac1ed8ab7c5df4d35  libgomp/testsuite/libgomp.fortran/threadprivate4.f90
! 211a08e0c9797a94e5c0c7220f19a139  libgomp/testsuite/libgomp.fortran/udr1.f90
! 4782493aba8c54c49e57d5c798e1781d  libgomp/testsuite/libgomp.fortran/udr10.f90
! 5e2c1bcf663ecf040fe096a5dce80be6  libgomp/testsuite/libgomp.fortran/udr11.f90
! f293f1be6e5cfc8c8b98dd542706cbce  libgomp/testsuite/libgomp.fortran/udr12.f90
! a4dd971f4d8eda45b0dd2611b3eed443  libgomp/testsuite/libgomp.fortran/udr13.f90
! f93bcd7e7f316e54a12fff301c8bb8e1  libgomp/testsuite/libgomp.fortran/udr14.f90
! 90e626816b064f1555d5fbf68caf5d43  libgomp/testsuite/libgomp.fortran/udr15.f90
! a05850a4a0bd9a2361ebfc916b7a9d00  libgomp/testsuite/libgomp.fortran/udr2.f90
! 84da432f1f34fe8f451cd8b9d8bce9fa  libgomp/testsuite/libgomp.fortran/udr3.f90
! 850b2de5fa999416ac7aa4cfd2676570  libgomp/testsuite/libgomp.fortran/udr4.f90
! b656a37206639af2edd615193df33ceb  libgomp/testsuite/libgomp.fortran/udr5.f90
! 7724c54f6ab053faed6ef4b726537a65  libgomp/testsuite/libgomp.fortran/udr6.f90
! 5373e3f88be1334dc28ffb71eadcf3f8  libgomp/testsuite/libgomp.fortran/udr7.f90
! 24dc784a193aeda044549291e21a0ad7  libgomp/testsuite/libgomp.fortran/udr8.f90
! b468dfcb8761e4a8f3e2caabdf9b2a62  libgomp/testsuite/libgomp.fortran/udr9.f90
  fd6becb20369d6ac5a1bacfc014b31a3  libgomp/testsuite/libgomp.fortran/use_intrinsic_1.f90
! 41d6cd26c0dd69586ce6eb144daf2093  libgomp/testsuite/libgomp.fortran/vla1.f90
! 4263959ee016933e58197580eb07520d  libgomp/testsuite/libgomp.fortran/vla2.f90
! 15788e85af0db0026c653beca46af778  libgomp/testsuite/libgomp.fortran/vla3.f90
! b7b104ed241490e2e0f5dc4ecb565c80  libgomp/testsuite/libgomp.fortran/vla4.f90
! e28fbeee7abab3ddfad5019b4f861309  libgomp/testsuite/libgomp.fortran/vla5.f90
! 7427a865726447de556ef77bffbb9314  libgomp/testsuite/libgomp.fortran/vla6.f90
! ee9b4e6286720c9e31c8afb5899375cf  libgomp/testsuite/libgomp.fortran/vla7.f90
! 8f18b38fecf2572f11b533c6194aab84  libgomp/testsuite/libgomp.fortran/vla8.f90
! 10994954f2e9828dd2a982c245ff4a59  libgomp/testsuite/libgomp.fortran/workshare1.f90
! 4975f92a29f06474c766a22eac220a62  libgomp/testsuite/libgomp.fortran/workshare2.f90
  5cbe5ce09b7be271cbfc863a87d14ce4  libgomp/testsuite/libgomp.graphite/bounds.c
  e7a61a11b74fb8e2e4d71f7a03078500  libgomp/testsuite/libgomp.graphite/force-parallel-1.c
  79fedad6d75bdc436c74c6ccabd1c317  libgomp/testsuite/libgomp.graphite/force-parallel-2.c
  7a00417999c02913b99a84c786868fd1  libgomp/testsuite/libgomp.graphite/force-parallel-3.c
! 858c21a1be9042895cea47989da43b02  libgomp/testsuite/libgomp.graphite/force-parallel-4.c
  d06f20463c71cc18a245131e421c6e37  libgomp/testsuite/libgomp.graphite/force-parallel-5.c
  bc89329871a4063322c6c6a75033c327  libgomp/testsuite/libgomp.graphite/force-parallel-6.c
  c7c454ddd0e7815a3bcc65d728543f0c  libgomp/testsuite/libgomp.graphite/force-parallel-7.c
  5a66165f62acdcd93ac4a96fd04c5e7c  libgomp/testsuite/libgomp.graphite/force-parallel-8.c
  afbfc00298798c7c56e3095384ac408a  libgomp/testsuite/libgomp.graphite/force-parallel-9.c
! b952b015c01f43ba7b6f596dc8a7ab7c  libgomp/testsuite/libgomp.graphite/graphite.exp
  b274f32716465c48bfe021ad40ae5184  libgomp/testsuite/libgomp.graphite/pr41118.c
  0a779303dcec02073cd1bd3896a9c8a0  libgomp/testsuite/libgomp.hsa.c/alloca-1.c
  c45b0483802d40293ffe9d8967cd8615  libgomp/testsuite/libgomp.hsa.c/bitfield-1.c
--- 69233,69475 ----
  f34e0c37442a4a7019dadca0b34ac11d  libgomp/testsuite/libgomp.fortran/appendix-a/a.40.1.f90
  04f8ab2d7e7bf368add9b8d8c9a8c1bf  libgomp/testsuite/libgomp.fortran/appendix-a/a.5.1.f90
  6116086a89b906c26bd9afe26e57a07a  libgomp/testsuite/libgomp.fortran/appendix-a/a10.1.f90
! 2c2ab56c5741226dd3be35ac891385a6  libgomp/testsuite/libgomp.fortran/associate1.f90
! b4c15022416962dcec51efe75df665a7  libgomp/testsuite/libgomp.fortran/associate2.f90
! 4a53fa8fb79d2d9f8e1498e0bc47f999  libgomp/testsuite/libgomp.fortran/associate3.f90
! 4d455a0a3b8e0006a359454c3fb17aec  libgomp/testsuite/libgomp.fortran/cancel-do-1.f90
! dd51543eb89b458e7a62739bd9e26d57  libgomp/testsuite/libgomp.fortran/cancel-do-2.f90
! 7f4a53305903de225bc7d7bb581cb477  libgomp/testsuite/libgomp.fortran/cancel-parallel-1.f90
  e804e30e2adbfe3b45724f1d27673f8a  libgomp/testsuite/libgomp.fortran/cancel-parallel-3.f90
! af9fa0684717448aa9e140d9a7da22b1  libgomp/testsuite/libgomp.fortran/cancel-sections-1.f90
! d386db6ffc7615166e1274ba39797978  libgomp/testsuite/libgomp.fortran/cancel-taskgroup-2.f90
! f9102a91eac2f666686f11a7f269e544  libgomp/testsuite/libgomp.fortran/character1.f90
! 76c24f123606ade34032dc18358cc20e  libgomp/testsuite/libgomp.fortran/character2.f90
! 917ea8aea9e7a9dcc64015427a92a7a4  libgomp/testsuite/libgomp.fortran/collapse1.f90
! a012ef9b9498d57805734c35c5a0a8ce  libgomp/testsuite/libgomp.fortran/collapse2.f90
! e8ba99528aa99905406a71c4aa655940  libgomp/testsuite/libgomp.fortran/collapse3.f90
! 3344f78ee806c28e2d4aaadaf0663bbd  libgomp/testsuite/libgomp.fortran/collapse4.f90
! a8a1d4819e69f862a14301cb3ed192c9  libgomp/testsuite/libgomp.fortran/condinc1.f
  2f1fffd33e5b79debd286ea4d1c6668b  libgomp/testsuite/libgomp.fortran/condinc1.inc
  5c117e1d74f2b4f253e83682b499c979  libgomp/testsuite/libgomp.fortran/condinc2.f
! 6a93bc13521437f84fc52b9fc3544dc4  libgomp/testsuite/libgomp.fortran/condinc3.f90
  830c32b3e02911ba8619b6e823f94108  libgomp/testsuite/libgomp.fortran/condinc4.f90
! 6fb06984fc44084179ce28bdccb811d2  libgomp/testsuite/libgomp.fortran/crayptr1.f90
! fe703cc1023abc59ffceb12283ee91cb  libgomp/testsuite/libgomp.fortran/crayptr2.f90
! 6a855dd177f051e5126085820d6409f6  libgomp/testsuite/libgomp.fortran/crayptr3.f90
! ab86403ca0975e3c2f09f8c191bb4109  libgomp/testsuite/libgomp.fortran/declare-simd-1.f90
  c0ebd55529e9baf82532c7b2f51f3fe4  libgomp/testsuite/libgomp.fortran/declare-simd-2.f90
! 692384a2f41c6da6364dfd09aba8cd65  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
! 0422b35aa605612c44f529382345ad96  libgomp/testsuite/libgomp.fortran/declare-target-2.f90
! 35d160b6dfb519385ba38d12147985a9  libgomp/testsuite/libgomp.fortran/depend-1.f90
! c25ff9f667010923826048fc18a547a7  libgomp/testsuite/libgomp.fortran/depend-2.f90
! 0fa216dc002a4d6b8991d5d35e599562  libgomp/testsuite/libgomp.fortran/depend-3.f90
! 8d9e54242af51f0c83a1840b1d3a83e5  libgomp/testsuite/libgomp.fortran/do1.f90
! bbdbb6f2f70186a14469f13b7f8896a4  libgomp/testsuite/libgomp.fortran/do2.f90
! 2566a4237f8056c8493a95e3bf03041c  libgomp/testsuite/libgomp.fortran/do_concurrent_5.f90
! a92f0245fecdba3e09042c732ead6042  libgomp/testsuite/libgomp.fortran/doacross1.f90
! 5af815089ab1b99cfcb417e0f50adda4  libgomp/testsuite/libgomp.fortran/doacross2.f90
! 7c48da537b1ee69be400dbd5e7573c3d  libgomp/testsuite/libgomp.fortran/doacross3.f90
! de9c2100ab489ec5e88786a0347fd725  libgomp/testsuite/libgomp.fortran/examples-4/array_sections-3.f90
! 4d2d13b83ce98eee1026b46b734dc87e  libgomp/testsuite/libgomp.fortran/examples-4/array_sections-4.f90
! b0d8ea8a48690353ae216a42e075ab7e  libgomp/testsuite/libgomp.fortran/examples-4/async_target-1.f90
! 713521a025812742569fdd61938ce26d  libgomp/testsuite/libgomp.fortran/examples-4/async_target-2.f90
! 0b37ea7da191807374d6b004863067d1  libgomp/testsuite/libgomp.fortran/examples-4/declare_target-1.f90
! 36c81b7dd65f254f3274fbf70f244652  libgomp/testsuite/libgomp.fortran/examples-4/declare_target-2.f90
! efd49b92ef7b34bba2edb7bda8947997  libgomp/testsuite/libgomp.fortran/examples-4/declare_target-3.f90
! d1c99137bb333b872082125e1d0339e6  libgomp/testsuite/libgomp.fortran/examples-4/declare_target-4.f90
! 1d36ec6e5ef1e8c2f341c1f5434292e3  libgomp/testsuite/libgomp.fortran/examples-4/declare_target-5.f90
! 9ed8706b71c39128495e07de0f7bc8cf  libgomp/testsuite/libgomp.fortran/examples-4/device-1.f90
! cd317b74463f709a0a2f144440883617  libgomp/testsuite/libgomp.fortran/examples-4/device-2.f90
! 0b72cb4618d168d3cbedb83c884cf10b  libgomp/testsuite/libgomp.fortran/examples-4/device-3.f90
! ea7c57f4abb73581ba74f4e86a0bf10b  libgomp/testsuite/libgomp.fortran/examples-4/simd-1.f90
! e0fa6dddaeb68ae4276c8a4a1ee4a8c7  libgomp/testsuite/libgomp.fortran/examples-4/simd-2.f90
! b81f6aa5c0b56d7bc51d1e24d5d5feac  libgomp/testsuite/libgomp.fortran/examples-4/simd-3.f90
! ef3caf79dbe9c137ca076eee622c6d79  libgomp/testsuite/libgomp.fortran/examples-4/simd-4.f90
! ff73146acc092c423fb537186066988f  libgomp/testsuite/libgomp.fortran/examples-4/simd-5.f90
! 39ccd2dbc690e5ee78aa136a2302ab77  libgomp/testsuite/libgomp.fortran/examples-4/simd-6.f90
! 667f675b253020d55b34c8b966b4f19c  libgomp/testsuite/libgomp.fortran/examples-4/simd-7.f90
! 21fe174e7212427454eff87f62c3c562  libgomp/testsuite/libgomp.fortran/examples-4/simd-8.f90
! 8ec6c11bf81c5900a4a5e077a7c8bddf  libgomp/testsuite/libgomp.fortran/examples-4/target-1.f90
! 8e6cb4af51c82b276a1a9f7a2e94c6b2  libgomp/testsuite/libgomp.fortran/examples-4/target-2.f90
! b43985b4f618729ea3efe8ecc9da6760  libgomp/testsuite/libgomp.fortran/examples-4/target-3.f90
! 3bca2b91deb59aafefbc1aa4a89b9135  libgomp/testsuite/libgomp.fortran/examples-4/target-4.f90
! ecf84010bf2db6b3fc401f385fc868cb  libgomp/testsuite/libgomp.fortran/examples-4/target-5.f90
! 7a8699204269cac1274b2a03b60f411e  libgomp/testsuite/libgomp.fortran/examples-4/target_data-1.f90
! 4f3f3f912a984f26365221e0530ef0ef  libgomp/testsuite/libgomp.fortran/examples-4/target_data-2.f90
! 9b19c624a89b300fdf887ea95ee3643d  libgomp/testsuite/libgomp.fortran/examples-4/target_data-3.f90
! e12c51b8cefb9e5b18b413d086842f7f  libgomp/testsuite/libgomp.fortran/examples-4/target_data-4.f90
! 377c48c170ca3612831e1f69f4b8e04c  libgomp/testsuite/libgomp.fortran/examples-4/target_data-5.f90
! 77b9f5b74e92bacdabe941c5c686e7cf  libgomp/testsuite/libgomp.fortran/examples-4/target_data-6.f90
! 5fc10a985ca6f34f64fb53f196896e91  libgomp/testsuite/libgomp.fortran/examples-4/target_data-7.f90
! 9029bfb51225f6cff52c9e1763995762  libgomp/testsuite/libgomp.fortran/examples-4/target_update-1.f90
! 3787191dcad2369e6414dd63ca6dcb5b  libgomp/testsuite/libgomp.fortran/examples-4/target_update-2.f90
! 5e618967b11e8a8e67238201f6c90d2c  libgomp/testsuite/libgomp.fortran/examples-4/task_dep-1.f90
! deb4c1c71a28bd1133cd44f72f76718d  libgomp/testsuite/libgomp.fortran/examples-4/task_dep-2.f90
! 6518c8797e347c6ff92c899f39adfac3  libgomp/testsuite/libgomp.fortran/examples-4/task_dep-3.f90
! 3fbead27d5117f175ae0b66000090642  libgomp/testsuite/libgomp.fortran/examples-4/task_dep-4.f90
! 3abf2efccaacf021cd44755d1ded6176  libgomp/testsuite/libgomp.fortran/examples-4/task_dep-5.f90
! 8ad1dd1f2c79bd26989c50adefe19a13  libgomp/testsuite/libgomp.fortran/examples-4/teams-2.f90
! a41c0980768be3bffe37ca6b9e438c44  libgomp/testsuite/libgomp.fortran/examples-4/teams-3.f90
! 891595203981ac55fe495b6c11d04b26  libgomp/testsuite/libgomp.fortran/examples-4/teams-4.f90
! 89ae668e78f15f7b9681413996493a4d  libgomp/testsuite/libgomp.fortran/examples-4/teams-5.f90
! 77b14cefa415296c9f9bd47ec11a1593  libgomp/testsuite/libgomp.fortran/examples-4/teams-6.f90
  9d247f0af4f050d701d0270be05e48b3  libgomp/testsuite/libgomp.fortran/fortran.exp
  aa1b03213ad6dd5ac0adf4a44e55144c  libgomp/testsuite/libgomp.fortran/jacobi.f
! 70f66727dcd6e516f433b7686ead6484  libgomp/testsuite/libgomp.fortran/lastprivate1.f90
! 1138dd2ecc49bcbfc82818f2fa46f3bc  libgomp/testsuite/libgomp.fortran/lastprivate2.f90
! 193cc6fc8a922a9fbad40b4511a9cd56  libgomp/testsuite/libgomp.fortran/lib1.f90
! 2a2bc2bab6cf13ee165852de0434ecf0  libgomp/testsuite/libgomp.fortran/lib2.f
! fbe0e124aba46c9f69f236a8199dee70  libgomp/testsuite/libgomp.fortran/lib3.f
! 2f2f2672e89d7354f82431d752059d67  libgomp/testsuite/libgomp.fortran/lib4.f90
! 5f6ab993c0a2ca51e1b010e0a742c97c  libgomp/testsuite/libgomp.fortran/lock-1.f90
! b80ca23b12fde142b40f7f354d1f2512  libgomp/testsuite/libgomp.fortran/lock-2.f90
! db834cf83b0754453f2319529d0cf340  libgomp/testsuite/libgomp.fortran/nested1.f90
! 18c568edbd0c5883694f35b83d1682ff  libgomp/testsuite/libgomp.fortran/nestedfn1.f90
! c446e4d80ec51896c5aaacd75b077384  libgomp/testsuite/libgomp.fortran/nestedfn2.f90
! 35c9c5a468e98acfa8bc0a96a8e30c17  libgomp/testsuite/libgomp.fortran/nestedfn3.f90
! caf989808d56950e09d7cef5ad4cea39  libgomp/testsuite/libgomp.fortran/nestedfn4.f90
! 4026bdd47765482ce0eb51f99340081d  libgomp/testsuite/libgomp.fortran/nestedfn5.f90
! 233cbc35a8fe348e45851cefa29198f6  libgomp/testsuite/libgomp.fortran/omp_atomic1.f90
! 1c2641cdfb506afd94d13006fcc3b30a  libgomp/testsuite/libgomp.fortran/omp_atomic2.f90
! a81321038d73697cf09b8f1b697e5519  libgomp/testsuite/libgomp.fortran/omp_atomic3.f90
! 836b85eea904ff08c83096c8c1c619bf  libgomp/testsuite/libgomp.fortran/omp_atomic4.f90
! 71a30d843b4efbec44ab587f427725c0  libgomp/testsuite/libgomp.fortran/omp_atomic5.f90
! e6bac8ac022bc4d70da707e0ea74725c  libgomp/testsuite/libgomp.fortran/omp_cond1.f
! 8d3ea22764a57fe9d027bc26630762ee  libgomp/testsuite/libgomp.fortran/omp_cond2.f
! d524c7e2def899a77e28ce058544cf50  libgomp/testsuite/libgomp.fortran/omp_cond3.F90
! fa72a8f60adadf5d23a9f93637097ca4  libgomp/testsuite/libgomp.fortran/omp_cond4.F90
  622323a8b6d6827bf9a0ded81fb4d9cb  libgomp/testsuite/libgomp.fortran/omp_hello.f
  1d5baa651387120c1fda67e24dd2125c  libgomp/testsuite/libgomp.fortran/omp_orphan.f
! a3eed5df243bda6ac25320fa373e0261  libgomp/testsuite/libgomp.fortran/omp_parse1.f90
! b277fe5365982cd6169af60cc9116d4c  libgomp/testsuite/libgomp.fortran/omp_parse2.f90
! d5cce492c6739c9bbe0bb326be081380  libgomp/testsuite/libgomp.fortran/omp_parse3.f90
! 8b44ad6709bf4b1226d6ef95282252a7  libgomp/testsuite/libgomp.fortran/omp_parse4.f90
  c910dfe57b9f53b8992d397c3571fd09  libgomp/testsuite/libgomp.fortran/omp_reduction.f
  77c80068c3418c0e379971a5e4ac91f1  libgomp/testsuite/libgomp.fortran/omp_workshare1.f
  4c7b256074253b51c44fe0f469b4512e  libgomp/testsuite/libgomp.fortran/omp_workshare2.f
! 7ede12eb7faf92e6ea8e9500e36145e4  libgomp/testsuite/libgomp.fortran/openmp_version-1.f
! 8386d12a6797a32813bb6eb1d5a53ffd  libgomp/testsuite/libgomp.fortran/openmp_version-2.f90
! 3ffbba1f8eabaedab25f83a6406303e3  libgomp/testsuite/libgomp.fortran/parloops-exit-first-loop-alt-2.f95
! 19ab1c5dc2f05a96e741ff9e9d2b9c52  libgomp/testsuite/libgomp.fortran/parloops-exit-first-loop-alt.f95
! d1aa85378d8902ff9082a3a09b66bf0e  libgomp/testsuite/libgomp.fortran/pointer1.f90
! e047f6f5c105e8039eec606a2582c361  libgomp/testsuite/libgomp.fortran/pointer2.f90
! 1e7de6c9f1376e7662fc088ab6ec5e64  libgomp/testsuite/libgomp.fortran/pr25162.f
! 2c0ef93f16a64dd3da2da4ee526905cd  libgomp/testsuite/libgomp.fortran/pr25219.f90
! 596beb5627b2de13a03d81a112554534  libgomp/testsuite/libgomp.fortran/pr27395-1.f90
! f2b4ca48d2a84010507bb485a5e669e7  libgomp/testsuite/libgomp.fortran/pr27395-2.f90
! ab4f7525739841ef109bc3411e80521a  libgomp/testsuite/libgomp.fortran/pr27416-1.f90
! ec6348d86136bc831782b98795edd5a0  libgomp/testsuite/libgomp.fortran/pr27916-1.f90
! 48cbe7a3583acd0256b0e2bf663f4eb4  libgomp/testsuite/libgomp.fortran/pr27916-2.f90
! 5dd3c67fcec80ac0f2b523fe25c71e95  libgomp/testsuite/libgomp.fortran/pr28390.f
! 70b83857846cd64e0b89c9331ddbd65f  libgomp/testsuite/libgomp.fortran/pr29629.f90
  a5e2fb177a942980066d8ec7fa604701  libgomp/testsuite/libgomp.fortran/pr32359.f90
! b4e48f02c79c32d88a6ad04a7cb6a866  libgomp/testsuite/libgomp.fortran/pr32550.f90
! e7999b039a535e3d073b7d33661d2513  libgomp/testsuite/libgomp.fortran/pr33880.f90
! 8490a4d5504e314c09ff2fd76af36211  libgomp/testsuite/libgomp.fortran/pr34020.f90
! 2d4128784c3c4b3962620f570467e0e4  libgomp/testsuite/libgomp.fortran/pr35130.f90
! 4a8e17eaf56ddc7c91a4029db1fe575e  libgomp/testsuite/libgomp.fortran/pr42162.f90
! 87c6eac0b74c7ba55cf2fa1dee652942  libgomp/testsuite/libgomp.fortran/pr46753.f90
! 16be68283f0b9ff2f64a1aca770580bf  libgomp/testsuite/libgomp.fortran/pr48894.f90
! 929a0761779d4a7cc85bbb767b4f5507  libgomp/testsuite/libgomp.fortran/pr49792-1.f90
! 136aa26dcee1daa0e9cf7e0ec9f42763  libgomp/testsuite/libgomp.fortran/pr49792-2.f90
! 6c619972755e03f29e9b9cc9cecde273  libgomp/testsuite/libgomp.fortran/pr63938-1.f90
! 8114fa80101789f922cce8c6b1554037  libgomp/testsuite/libgomp.fortran/pr63938-2.f90
! c5caba0ba52a0827eb7c8ab65ec5a6b4  libgomp/testsuite/libgomp.fortran/pr65597.f90
! 5e10c39ff27b58e2381cbde7c6a15e48  libgomp/testsuite/libgomp.fortran/pr66199-1.f90
! 222917046c55acc4a08420558965f127  libgomp/testsuite/libgomp.fortran/pr66199-2.f90
  090e14b3e3d9a95dbcd195aca47aeedf  libgomp/testsuite/libgomp.fortran/pr66680.f90
! 5e7e33d20b9a55b97698e02ed803828d  libgomp/testsuite/libgomp.fortran/pr71014.f90
  eaeadf99271f326c16618e5bfa7fa387  libgomp/testsuite/libgomp.fortran/pr71734-1.f90
  2d364f3055004bfd34a5395bfd835c8c  libgomp/testsuite/libgomp.fortran/pr71734-2.f90
! e2a4be02d5ff16e281999ccef0343cb2  libgomp/testsuite/libgomp.fortran/pr81304.f90
! f616dfde2679be806dca7ef9bf4ab104  libgomp/testsuite/libgomp.fortran/pr81841.f90
! 2e990f7e1310468b21aa93f17afd11b9  libgomp/testsuite/libgomp.fortran/pr84418-1.f90
! b2b97f08fc494950c9b5f4a914d55f45  libgomp/testsuite/libgomp.fortran/pr84418-2.f90
! 598a67d43dc33bd1a2c93ac14b5ff087  libgomp/testsuite/libgomp.fortran/procptr1.f90
! 4d5fc537afbe93377e6038267f59d66d  libgomp/testsuite/libgomp.fortran/recursion1.f90
! 68bea090a7dbf66b96e87c794d249c3c  libgomp/testsuite/libgomp.fortran/reduction1.f90
! f41fd101e296982422f96fd19b7af2fc  libgomp/testsuite/libgomp.fortran/reduction2.f90
! a9324defeb699d10f0a933480a143959  libgomp/testsuite/libgomp.fortran/reduction3.f90
! 8dfca52738afd8a06d34d8af00eeede2  libgomp/testsuite/libgomp.fortran/reduction4.f90
! ed67bed03a3fd7e69172a51b7f0bf096  libgomp/testsuite/libgomp.fortran/reduction5.f90
! 41591bbbf15798e88a392f68404740ff  libgomp/testsuite/libgomp.fortran/reduction6.f90
! bfa99a751da806c271071008ca897488  libgomp/testsuite/libgomp.fortran/reference1.f90
! 4b7fd03797df3baee1e11139d13d2505  libgomp/testsuite/libgomp.fortran/reference2.f90
! 31d0e97beeeabb4ca9b121f16f9be326  libgomp/testsuite/libgomp.fortran/retval1.f90
! 66dcba7942f44cb782bb22ec98d48c8d  libgomp/testsuite/libgomp.fortran/retval2.f90
! 640694dd27320de679009d7b3d96b43f  libgomp/testsuite/libgomp.fortran/sharing1.f90
! 7d529c4d9c995e1526ee2dc707b27f93  libgomp/testsuite/libgomp.fortran/sharing2.f90
! 400a9890fadd8101f91d8efee06e0f31  libgomp/testsuite/libgomp.fortran/simd1.f90
! 5f954a982a2e186a36f5c1ee6645d39f  libgomp/testsuite/libgomp.fortran/simd2.f90
! cca043b1b2a4efdc84fcd7f4855aa266  libgomp/testsuite/libgomp.fortran/simd3.f90
! dc38419a4ad14ea1c0c6f1bf7679a023  libgomp/testsuite/libgomp.fortran/simd4.f90
! 38288fda48eb6f788a68c5f407efd909  libgomp/testsuite/libgomp.fortran/simd5.f90
! 001e00cefa50637e7f36d4848425c68d  libgomp/testsuite/libgomp.fortran/simd6.f90
! 11f52bf9bee8afd530d6f1a1e34aab0f  libgomp/testsuite/libgomp.fortran/simd7.f90
! aa0dce4d4c93d016e1246843d5599afe  libgomp/testsuite/libgomp.fortran/stack.f90
! c687a709db46879b78016f0123d6f483  libgomp/testsuite/libgomp.fortran/strassen.f90
! 9c0b44785f883fd3d42e37d692708466  libgomp/testsuite/libgomp.fortran/tabs1.f90
! 29b66bd04f092e966162bf9cf6934a50  libgomp/testsuite/libgomp.fortran/tabs2.f
! 381b29ac79f2b593172fda20375e5a85  libgomp/testsuite/libgomp.fortran/target1.f90
! a0cad21e2a20a466b98784387e59ce83  libgomp/testsuite/libgomp.fortran/target2.f90
! 9e889b0fb0458ee2a971285923c883f2  libgomp/testsuite/libgomp.fortran/target3.f90
! ff114657b7eece4cf5d7a3fc4ca39335  libgomp/testsuite/libgomp.fortran/target4.f90
! bc4b0966da6d64808f35287b18b5a1f5  libgomp/testsuite/libgomp.fortran/target5.f90
! e57e01139671da2caef6b7d7f560f0f6  libgomp/testsuite/libgomp.fortran/target6.f90
! 3b70cda42a0347ee08588fd4748b1eaa  libgomp/testsuite/libgomp.fortran/target7.f90
! bb449e7ec62c30eb5ac50bba26d498f1  libgomp/testsuite/libgomp.fortran/target8.f90
! 103519200e9585a0b1490d87bac9e0ac  libgomp/testsuite/libgomp.fortran/task1.f90
! b1561b263815cbdebe644bc0f9674102  libgomp/testsuite/libgomp.fortran/task2.f90
! 9ae8f64782a30b1544590474d2570531  libgomp/testsuite/libgomp.fortran/task3.f90
! fcce0f1743f4f7bcac36af7c27f6a4bc  libgomp/testsuite/libgomp.fortran/task4.f90
! 8ec31ddb071d8cd015f3d538de865e03  libgomp/testsuite/libgomp.fortran/taskgroup1.f90
! d92c8bd9cb2b3b97f88a17847b450add  libgomp/testsuite/libgomp.fortran/taskloop1.f90
! c8135508c51a1d3b5d33a1d3ca981ffa  libgomp/testsuite/libgomp.fortran/taskloop2.f90
! 472d09371eff52f7ac194ff162eaf3ee  libgomp/testsuite/libgomp.fortran/taskloop3.f90
! 9e731643e703626b1b66f986974ec197  libgomp/testsuite/libgomp.fortran/taskloop4.f90
! a10b9147b8612472efe55cdea1e73fc4  libgomp/testsuite/libgomp.fortran/threadprivate1.f90
! 35a688281a008cdc348d2ff5d8397a31  libgomp/testsuite/libgomp.fortran/threadprivate2.f90
! e6d59cc36a28499a5a35af599cb7b51f  libgomp/testsuite/libgomp.fortran/threadprivate3.f90
! ec2af7816bc4253ef22cacd79ef71543  libgomp/testsuite/libgomp.fortran/threadprivate4.f90
! b4cdfed896bb64a07f590e3d8c1f79fe  libgomp/testsuite/libgomp.fortran/udr1.f90
! b6e689cc6401d4753a76ef0618bbe2d0  libgomp/testsuite/libgomp.fortran/udr10.f90
! 9804e010cd65704e0a99b29e441d9d65  libgomp/testsuite/libgomp.fortran/udr11.f90
! f44d509a4608f71e1dbe016e0d7cfdb3  libgomp/testsuite/libgomp.fortran/udr12.f90
! 3618f783bd53952d0a59119b12fd2a55  libgomp/testsuite/libgomp.fortran/udr13.f90
! 6c19a94fd16f4f5b4b440ab99e3a487b  libgomp/testsuite/libgomp.fortran/udr14.f90
! 35deb30308e4cd61e6cac9679bbf74b7  libgomp/testsuite/libgomp.fortran/udr15.f90
! cc8eab33f34985e0a3d3ab741c953ed1  libgomp/testsuite/libgomp.fortran/udr2.f90
! 7f368ed9446e33f80202a4fe4c62fdc3  libgomp/testsuite/libgomp.fortran/udr3.f90
! 370a1c2c2b36523614726c291aa86a06  libgomp/testsuite/libgomp.fortran/udr4.f90
! d77ee7f2d4e8910bc7988a3a22eb1c9a  libgomp/testsuite/libgomp.fortran/udr5.f90
! 2b5cc3882bac2afb16524d9dfb21e1bd  libgomp/testsuite/libgomp.fortran/udr6.f90
! a178f3261313088cd707e999fa192458  libgomp/testsuite/libgomp.fortran/udr7.f90
! 6a293a7a7174d398cbb69dc664988aa5  libgomp/testsuite/libgomp.fortran/udr8.f90
! 2007f84732d511e23f69ec1ffb189245  libgomp/testsuite/libgomp.fortran/udr9.f90
  fd6becb20369d6ac5a1bacfc014b31a3  libgomp/testsuite/libgomp.fortran/use_intrinsic_1.f90
! ac5aaba083c1139792978eccd2e04a46  libgomp/testsuite/libgomp.fortran/vla1.f90
! 559a096b1a558b74e3d00907068f6992  libgomp/testsuite/libgomp.fortran/vla2.f90
! ac41ffead8d10fe94aa633e03dda90f3  libgomp/testsuite/libgomp.fortran/vla3.f90
! f227a0cbb3117e3586a780570fa125e7  libgomp/testsuite/libgomp.fortran/vla4.f90
! e27b606e93b8684d1bf7153de9c71243  libgomp/testsuite/libgomp.fortran/vla5.f90
! 1e09f9fc3d32a823991f2c0d829a652f  libgomp/testsuite/libgomp.fortran/vla6.f90
! da664b7ac5be52b198bb7749dc02a618  libgomp/testsuite/libgomp.fortran/vla7.f90
! 3351380b167aa480205d2cb3c3e4043e  libgomp/testsuite/libgomp.fortran/vla8.f90
! 2dfe576e27dd088bb6b57ef0db7cab4c  libgomp/testsuite/libgomp.fortran/workshare1.f90
! 7e399d96a7d8fb423be2fa411462c4b2  libgomp/testsuite/libgomp.fortran/workshare2.f90
  5cbe5ce09b7be271cbfc863a87d14ce4  libgomp/testsuite/libgomp.graphite/bounds.c
  e7a61a11b74fb8e2e4d71f7a03078500  libgomp/testsuite/libgomp.graphite/force-parallel-1.c
  79fedad6d75bdc436c74c6ccabd1c317  libgomp/testsuite/libgomp.graphite/force-parallel-2.c
  7a00417999c02913b99a84c786868fd1  libgomp/testsuite/libgomp.graphite/force-parallel-3.c
! 6369565331031cf511f9670392b1a404  libgomp/testsuite/libgomp.graphite/force-parallel-4.c
  d06f20463c71cc18a245131e421c6e37  libgomp/testsuite/libgomp.graphite/force-parallel-5.c
  bc89329871a4063322c6c6a75033c327  libgomp/testsuite/libgomp.graphite/force-parallel-6.c
  c7c454ddd0e7815a3bcc65d728543f0c  libgomp/testsuite/libgomp.graphite/force-parallel-7.c
  5a66165f62acdcd93ac4a96fd04c5e7c  libgomp/testsuite/libgomp.graphite/force-parallel-8.c
  afbfc00298798c7c56e3095384ac408a  libgomp/testsuite/libgomp.graphite/force-parallel-9.c
! f74217cd9ad9c3492dc78c1a9bb95f3b  libgomp/testsuite/libgomp.graphite/graphite.exp
  b274f32716465c48bfe021ad40ae5184  libgomp/testsuite/libgomp.graphite/pr41118.c
  0a779303dcec02073cd1bd3896a9c8a0  libgomp/testsuite/libgomp.hsa.c/alloca-1.c
  c45b0483802d40293ffe9d8967cd8615  libgomp/testsuite/libgomp.hsa.c/bitfield-1.c
*************** ca035efd56fd9ee9889e49e15d34a627  libgom
*** 64705,64724 ****
  e3624c56baad41a2af157335cb4fd08f  libgomp/testsuite/libgomp.hsa.c/gridify-4.c
  bd7a8c53d3879d79861d120ec876f119  libgomp/testsuite/libgomp.hsa.c/memory-operations-1.c
  3dc56468bc91698c50d4295a20abbdd6  libgomp/testsuite/libgomp.hsa.c/pr69568.c
  dfc590b024995313958247342296f179  libgomp/testsuite/libgomp.hsa.c/rotate-1.c
  bfac6d74739b95deba27861d2be18215  libgomp/testsuite/libgomp.hsa.c/switch-1.c
  e410b9a2ecc042fbefbbbcff667b3510  libgomp/testsuite/libgomp.hsa.c/switch-branch-1.c
  ca9f24c1fc8b56e57a5e25787159b637  libgomp/testsuite/libgomp.hsa.c/switch-sbr-2.c
  4dca1deb9f7dda8472ad9702722d0283  libgomp/testsuite/libgomp.hsa.c/tiling-1.c
  0789ba2bf49504902e89571602479ea7  libgomp/testsuite/libgomp.hsa.c/tiling-2.c
! e4d2b044d4aee116d4062f8d22fe1113  libgomp/testsuite/libgomp.oacc-c++/c++.exp
  b27cecd237d0e2ce459988833e90f28a  libgomp/testsuite/libgomp.oacc-c++/declare-1.C
  aace2dcadcda64ce9ef8735017680f69  libgomp/testsuite/libgomp.oacc-c++/routine-1-auto.C
  7010b5509f59832faf41f6230dc9bb22  libgomp/testsuite/libgomp.oacc-c++/routine-1-template-auto.C
  262d8149840c072ef1db28e046ef2215  libgomp/testsuite/libgomp.oacc-c++/routine-1-template-trailing-return-type.C
  4785e73af05b6cf7a260c0ce574a9a5e  libgomp/testsuite/libgomp.oacc-c++/routine-1-template.C
  e644f885c2efb03b1823cfe4567adea8  libgomp/testsuite/libgomp.oacc-c++/routine-1-trailing-return-type.C
! 4b124b6e487c75fcb15e9f0e8d1f85b5  libgomp/testsuite/libgomp.oacc-c++/template-reduction.C
  451978dda3b58f6a597aa1b515da90e7  libgomp/testsuite/libgomp.oacc-c-c++-common/abort-1.c
  2187ea0d1f3ce15e1d66e17ed2fecfc6  libgomp/testsuite/libgomp.oacc-c-c++-common/abort-2.c
  659c1e7c321078b832a4fe638bb81184  libgomp/testsuite/libgomp.oacc-c-c++-common/abort-3.c
--- 69487,69509 ----
  e3624c56baad41a2af157335cb4fd08f  libgomp/testsuite/libgomp.hsa.c/gridify-4.c
  bd7a8c53d3879d79861d120ec876f119  libgomp/testsuite/libgomp.hsa.c/memory-operations-1.c
  3dc56468bc91698c50d4295a20abbdd6  libgomp/testsuite/libgomp.hsa.c/pr69568.c
+ 13a76d384f25b9b881feef571bd96cd6  libgomp/testsuite/libgomp.hsa.c/pr82416.c
  dfc590b024995313958247342296f179  libgomp/testsuite/libgomp.hsa.c/rotate-1.c
+ 2b5674485ffa980a9acbcac729ad705b  libgomp/testsuite/libgomp.hsa.c/staticvar.c
  bfac6d74739b95deba27861d2be18215  libgomp/testsuite/libgomp.hsa.c/switch-1.c
  e410b9a2ecc042fbefbbbcff667b3510  libgomp/testsuite/libgomp.hsa.c/switch-branch-1.c
  ca9f24c1fc8b56e57a5e25787159b637  libgomp/testsuite/libgomp.hsa.c/switch-sbr-2.c
  4dca1deb9f7dda8472ad9702722d0283  libgomp/testsuite/libgomp.hsa.c/tiling-1.c
  0789ba2bf49504902e89571602479ea7  libgomp/testsuite/libgomp.hsa.c/tiling-2.c
! 75ceac6f622f04bfee3031445f982de8  libgomp/testsuite/libgomp.oacc-c++/c++.exp
  b27cecd237d0e2ce459988833e90f28a  libgomp/testsuite/libgomp.oacc-c++/declare-1.C
+ b4fc04813771a8801e90ced112679b03  libgomp/testsuite/libgomp.oacc-c++/ref-1.C
  aace2dcadcda64ce9ef8735017680f69  libgomp/testsuite/libgomp.oacc-c++/routine-1-auto.C
  7010b5509f59832faf41f6230dc9bb22  libgomp/testsuite/libgomp.oacc-c++/routine-1-template-auto.C
  262d8149840c072ef1db28e046ef2215  libgomp/testsuite/libgomp.oacc-c++/routine-1-template-trailing-return-type.C
  4785e73af05b6cf7a260c0ce574a9a5e  libgomp/testsuite/libgomp.oacc-c++/routine-1-template.C
  e644f885c2efb03b1823cfe4567adea8  libgomp/testsuite/libgomp.oacc-c++/routine-1-trailing-return-type.C
! e791213d5152b9450d6c3d86211b78cd  libgomp/testsuite/libgomp.oacc-c++/template-reduction.C
  451978dda3b58f6a597aa1b515da90e7  libgomp/testsuite/libgomp.oacc-c-c++-common/abort-1.c
  2187ea0d1f3ce15e1d66e17ed2fecfc6  libgomp/testsuite/libgomp.oacc-c-c++-common/abort-2.c
  659c1e7c321078b832a4fe638bb81184  libgomp/testsuite/libgomp.oacc-c-c++-common/abort-3.c
*************** e644f885c2efb03b1823cfe4567adea8  libgom
*** 64727,64737 ****
  1842ea390bb30aa78195d48b9a8dc5cf  libgomp/testsuite/libgomp.oacc-c-c++-common/acc-on-device-2.c
  5746174e7187dea0ded66acdff0e1291  libgomp/testsuite/libgomp.oacc-c-c++-common/acc-on-device.c
  4172e47fb7e2cd81c1f9cf658c548fe7  libgomp/testsuite/libgomp.oacc-c-c++-common/acc_on_device-1.c
! a767b458edfcc73f7c6eac342f200d78  libgomp/testsuite/libgomp.oacc-c-c++-common/asyncwait-1.c
  57f2bd54b97fb5ea6315d18ff938b90f  libgomp/testsuite/libgomp.oacc-c-c++-common/atomic_capture-1.c
  7701cc2c5657c7e8793bdc8a296226d0  libgomp/testsuite/libgomp.oacc-c-c++-common/atomic_capture-2.c
  97f62618e6e37c14b2b9ed17c7579fd0  libgomp/testsuite/libgomp.oacc-c-c++-common/atomic_rw-1.c
  276fea47eb47f5b846d12e7f4013aaa1  libgomp/testsuite/libgomp.oacc-c-c++-common/atomic_update-1.c
  b38b68cea6a76f0b24d0695e8101f2cf  libgomp/testsuite/libgomp.oacc-c-c++-common/cache-1.c
  1f516ecd3b6c4ad48b36e5fe908cae6a  libgomp/testsuite/libgomp.oacc-c-c++-common/clauses-1.c
  e69ad21264603585ada7277411b59fab  libgomp/testsuite/libgomp.oacc-c-c++-common/clauses-2.c
--- 69512,69523 ----
  1842ea390bb30aa78195d48b9a8dc5cf  libgomp/testsuite/libgomp.oacc-c-c++-common/acc-on-device-2.c
  5746174e7187dea0ded66acdff0e1291  libgomp/testsuite/libgomp.oacc-c-c++-common/acc-on-device.c
  4172e47fb7e2cd81c1f9cf658c548fe7  libgomp/testsuite/libgomp.oacc-c-c++-common/acc_on_device-1.c
! f7a9b184b1fef89d4ba1d7e2bfcef9c5  libgomp/testsuite/libgomp.oacc-c-c++-common/asyncwait-1.c
  57f2bd54b97fb5ea6315d18ff938b90f  libgomp/testsuite/libgomp.oacc-c-c++-common/atomic_capture-1.c
  7701cc2c5657c7e8793bdc8a296226d0  libgomp/testsuite/libgomp.oacc-c-c++-common/atomic_capture-2.c
  97f62618e6e37c14b2b9ed17c7579fd0  libgomp/testsuite/libgomp.oacc-c-c++-common/atomic_rw-1.c
  276fea47eb47f5b846d12e7f4013aaa1  libgomp/testsuite/libgomp.oacc-c-c++-common/atomic_update-1.c
+ 760e768bc422654e755f3164d717aedf  libgomp/testsuite/libgomp.oacc-c-c++-common/broadcast-1.c
  b38b68cea6a76f0b24d0695e8101f2cf  libgomp/testsuite/libgomp.oacc-c-c++-common/cache-1.c
  1f516ecd3b6c4ad48b36e5fe908cae6a  libgomp/testsuite/libgomp.oacc-c-c++-common/clauses-1.c
  e69ad21264603585ada7277411b59fab  libgomp/testsuite/libgomp.oacc-c-c++-common/clauses-2.c
*************** e05c73847f8ec27c6cb39c45216fcf0f  libgom
*** 64747,64753 ****
  6d8fa953e8f4d1a98183167fca268885  libgomp/testsuite/libgomp.oacc-c-c++-common/context-4.c
  98ea87c8193e01406d01d50c3ec22bcf  libgomp/testsuite/libgomp.oacc-c-c++-common/crash-1.c
  c826235c3b755ef2376b379ef9b17203  libgomp/testsuite/libgomp.oacc-c-c++-common/data-1.c
! 7e4ce90550156ed199339afb2a526f9e  libgomp/testsuite/libgomp.oacc-c-c++-common/data-2-lib.c
  07f7c6ace6bbdef3d46238ce3fc372ba  libgomp/testsuite/libgomp.oacc-c-c++-common/data-2.c
  db29bb9e4974c50d5020e4049b45b56e  libgomp/testsuite/libgomp.oacc-c-c++-common/data-3.c
  c87b3b18b1d40118c153b3a491e5578a  libgomp/testsuite/libgomp.oacc-c-c++-common/data-already-1.c
--- 69533,69539 ----
  6d8fa953e8f4d1a98183167fca268885  libgomp/testsuite/libgomp.oacc-c-c++-common/context-4.c
  98ea87c8193e01406d01d50c3ec22bcf  libgomp/testsuite/libgomp.oacc-c-c++-common/crash-1.c
  c826235c3b755ef2376b379ef9b17203  libgomp/testsuite/libgomp.oacc-c-c++-common/data-1.c
! c707972c24164f3a88dc8ceed7bd3ed6  libgomp/testsuite/libgomp.oacc-c-c++-common/data-2-lib.c
  07f7c6ace6bbdef3d46238ce3fc372ba  libgomp/testsuite/libgomp.oacc-c-c++-common/data-2.c
  db29bb9e4974c50d5020e4049b45b56e  libgomp/testsuite/libgomp.oacc-c-c++-common/data-3.c
  c87b3b18b1d40118c153b3a491e5578a  libgomp/testsuite/libgomp.oacc-c-c++-common/data-already-1.c
*************** bbbba8e248114899afbe0cf09f6602f5  libgom
*** 64763,64779 ****
  45640f334180a1e83d97a2929873a0f5  libgomp/testsuite/libgomp.oacc-c-c++-common/data-clauses-parallel-ipa-pta.c
  39c565e9118017aa2f98b6fe6a26e964  libgomp/testsuite/libgomp.oacc-c-c++-common/data-clauses-parallel.c
  6869d0b2a43e3202ad2f6ece707b9cf2  libgomp/testsuite/libgomp.oacc-c-c++-common/data-clauses.h
! bd56c606a8f605c557edc7a42a2c4623  libgomp/testsuite/libgomp.oacc-c-c++-common/declare-1.c
! 6818d35f21818c11a170def1a95763f3  libgomp/testsuite/libgomp.oacc-c-c++-common/declare-2.c
! f204569d3150ad2cec462dc7402a2e86  libgomp/testsuite/libgomp.oacc-c-c++-common/declare-4.c
! 669aef34b96f89fc04e13c43354ba095  libgomp/testsuite/libgomp.oacc-c-c++-common/declare-5.c
  f21ebd2f26266c52baef2bc1b2717003  libgomp/testsuite/libgomp.oacc-c-c++-common/declare-vla.c
  ed51d15d31ea19fd605f14708740005e  libgomp/testsuite/libgomp.oacc-c-c++-common/default-1.c
  aa6b36c4a8b02af8803293f68c209f30  libgomp/testsuite/libgomp.oacc-c-c++-common/deviceptr-1.c
  4b2002648bf637cec919f245dba39774  libgomp/testsuite/libgomp.oacc-c-c++-common/enter_exit-lib.c
  cdbce17fd87ba4513f70f58a5d9fb098  libgomp/testsuite/libgomp.oacc-c-c++-common/firstprivate-1.c
  7f83363fad987ebc3f67b450de0c0183  libgomp/testsuite/libgomp.oacc-c-c++-common/gang-static-1.c
! f841f8b0779fdd25387fdc71c7e01c6f  libgomp/testsuite/libgomp.oacc-c-c++-common/gang-static-2.c
  0323a705764dd17ec706ade439948ea1  libgomp/testsuite/libgomp.oacc-c-c++-common/host_data-1.c
  306138bfc01b6378c91237fd77b8bdaf  libgomp/testsuite/libgomp.oacc-c-c++-common/host_data-2.c
  adaec910973d8115f7e0d47383986917  libgomp/testsuite/libgomp.oacc-c-c++-common/host_data-4.c
--- 69549,69569 ----
  45640f334180a1e83d97a2929873a0f5  libgomp/testsuite/libgomp.oacc-c-c++-common/data-clauses-parallel-ipa-pta.c
  39c565e9118017aa2f98b6fe6a26e964  libgomp/testsuite/libgomp.oacc-c-c++-common/data-clauses-parallel.c
  6869d0b2a43e3202ad2f6ece707b9cf2  libgomp/testsuite/libgomp.oacc-c-c++-common/data-clauses.h
! 696a085be97b1bb7bf392804e40240b5  libgomp/testsuite/libgomp.oacc-c-c++-common/declare-1.c
! ce24e046c5347f93b3d94f41af63f083  libgomp/testsuite/libgomp.oacc-c-c++-common/declare-2.c
! ebb8f3adc650c08eeaf1e77a9b7084d4  libgomp/testsuite/libgomp.oacc-c-c++-common/declare-4.c
! 22918a096aad8e89d005adba57f4568d  libgomp/testsuite/libgomp.oacc-c-c++-common/declare-5.c
  f21ebd2f26266c52baef2bc1b2717003  libgomp/testsuite/libgomp.oacc-c-c++-common/declare-vla.c
  ed51d15d31ea19fd605f14708740005e  libgomp/testsuite/libgomp.oacc-c-c++-common/default-1.c
  aa6b36c4a8b02af8803293f68c209f30  libgomp/testsuite/libgomp.oacc-c-c++-common/deviceptr-1.c
  4b2002648bf637cec919f245dba39774  libgomp/testsuite/libgomp.oacc-c-c++-common/enter_exit-lib.c
+ afaad65c1db1376693687b3f6ecef6e6  libgomp/testsuite/libgomp.oacc-c-c++-common/f-asyncwait-1.c
+ eef767605141895a1a2ee43bd3ec0d2f  libgomp/testsuite/libgomp.oacc-c-c++-common/f-asyncwait-2.c
+ fc3f73aa977c7d0bc24d42c4ae63b1b0  libgomp/testsuite/libgomp.oacc-c-c++-common/f-asyncwait-3.c
  cdbce17fd87ba4513f70f58a5d9fb098  libgomp/testsuite/libgomp.oacc-c-c++-common/firstprivate-1.c
  7f83363fad987ebc3f67b450de0c0183  libgomp/testsuite/libgomp.oacc-c-c++-common/gang-static-1.c
! 8954fcc8a5b6e2150dcf17f9948ae423  libgomp/testsuite/libgomp.oacc-c-c++-common/gang-static-2.c
! 73003aea390535b68a37e279b4514d67  libgomp/testsuite/libgomp.oacc-c-c++-common/gomp-debug-env.c
  0323a705764dd17ec706ade439948ea1  libgomp/testsuite/libgomp.oacc-c-c++-common/host_data-1.c
  306138bfc01b6378c91237fd77b8bdaf  libgomp/testsuite/libgomp.oacc-c-c++-common/host_data-2.c
  adaec910973d8115f7e0d47383986917  libgomp/testsuite/libgomp.oacc-c-c++-common/host_data-4.c
*************** b62d943ff000b5c04985d2e8e9583ab7  libgom
*** 64783,64789 ****
  46bf7e2b0cabef27d798b3b2957f6583  libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-alias-ipa-pta-3.c
  c35fcfa359b0fbc3caf1b7d8d7c018bb  libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-alias-ipa-pta.c
  beed5eb74e7f9b935447c13c31a7ed23  libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-empty.c
! 75e9448122c716f95085c3969d9a3ee7  libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-loop-2.c
  bf84cd20cbed842b879a3ebfee653954  libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-loop-3.c
  7003d37cae5082bd3c17cf91f520f14f  libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-loop-and-seq-2.c
  b2ad6a7e5f5fe85d74276dd7685ed7b1  libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-loop-and-seq-3.c
--- 69573,69579 ----
  46bf7e2b0cabef27d798b3b2957f6583  libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-alias-ipa-pta-3.c
  c35fcfa359b0fbc3caf1b7d8d7c018bb  libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-alias-ipa-pta.c
  beed5eb74e7f9b935447c13c31a7ed23  libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-empty.c
! f55ca55492b58beee675080a877a7ad5  libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-loop-2.c
  bf84cd20cbed842b879a3ebfee653954  libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-loop-3.c
  7003d37cae5082bd3c17cf91f520f14f  libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-loop-and-seq-2.c
  b2ad6a7e5f5fe85d74276dd7685ed7b1  libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-loop-and-seq-3.c
*************** abaf408fdc1b5b98c8c616f44231325d  libgom
*** 64824,64836 ****
  176b0831efe03ee5c426de7e26025ece  libgomp/testsuite/libgomp.oacc-c-c++-common/lib-3.c
  ebdf78d9677a67b1dd5136327c6b80cb  libgomp/testsuite/libgomp.oacc-c-c++-common/lib-30.c
  d12fd6d02cc6c4fffbabf0a5f5fc9f7a  libgomp/testsuite/libgomp.oacc-c-c++-common/lib-31.c
! 1a43a5349777c6a28bd8a2446b67cc8e  libgomp/testsuite/libgomp.oacc-c-c++-common/lib-32.c
  8f45f91927636362dab19a6f8fa1a5f1  libgomp/testsuite/libgomp.oacc-c-c++-common/lib-33.c
  57db7bcfb67fdd793836c95d3d1b001c  libgomp/testsuite/libgomp.oacc-c-c++-common/lib-34.c
  ce2d778a9a3410c613ee686e1a376d2c  libgomp/testsuite/libgomp.oacc-c-c++-common/lib-35.c
  2f7d14ce9a211da1dd7dd609bfb147c8  libgomp/testsuite/libgomp.oacc-c-c++-common/lib-36.c
  84c260da696be8db51f1ab9b4b38d821  libgomp/testsuite/libgomp.oacc-c-c++-common/lib-37.c
- 0edfbe859b1e3bcf886c89463e452be6  libgomp/testsuite/libgomp.oacc-c-c++-common/lib-38.c
  f64d3ef8bf6b155a353fdf363b887b62  libgomp/testsuite/libgomp.oacc-c-c++-common/lib-39.c
  70aa8c195bb1388a7d6267c5118895f0  libgomp/testsuite/libgomp.oacc-c-c++-common/lib-4.c
  c2a1b9406251467ff384653151059034  libgomp/testsuite/libgomp.oacc-c-c++-common/lib-40.c
--- 69614,69625 ----
  176b0831efe03ee5c426de7e26025ece  libgomp/testsuite/libgomp.oacc-c-c++-common/lib-3.c
  ebdf78d9677a67b1dd5136327c6b80cb  libgomp/testsuite/libgomp.oacc-c-c++-common/lib-30.c
  d12fd6d02cc6c4fffbabf0a5f5fc9f7a  libgomp/testsuite/libgomp.oacc-c-c++-common/lib-31.c
! 3f91775ce1197586749b92f6f9c4490c  libgomp/testsuite/libgomp.oacc-c-c++-common/lib-32.c
  8f45f91927636362dab19a6f8fa1a5f1  libgomp/testsuite/libgomp.oacc-c-c++-common/lib-33.c
  57db7bcfb67fdd793836c95d3d1b001c  libgomp/testsuite/libgomp.oacc-c-c++-common/lib-34.c
  ce2d778a9a3410c613ee686e1a376d2c  libgomp/testsuite/libgomp.oacc-c-c++-common/lib-35.c
  2f7d14ce9a211da1dd7dd609bfb147c8  libgomp/testsuite/libgomp.oacc-c-c++-common/lib-36.c
  84c260da696be8db51f1ab9b4b38d821  libgomp/testsuite/libgomp.oacc-c-c++-common/lib-37.c
  f64d3ef8bf6b155a353fdf363b887b62  libgomp/testsuite/libgomp.oacc-c-c++-common/lib-39.c
  70aa8c195bb1388a7d6267c5118895f0  libgomp/testsuite/libgomp.oacc-c-c++-common/lib-4.c
  c2a1b9406251467ff384653151059034  libgomp/testsuite/libgomp.oacc-c-c++-common/lib-40.c
*************** fa60200e0fb48952eddcb219fbfa2f3d  libgom
*** 64893,64902 ****
  63b0abf54d070c509131a39cc0045d09  libgomp/testsuite/libgomp.oacc-c-c++-common/lib-92.c
  54fc2d7d6de099c08da67ea9f553d46e  libgomp/testsuite/libgomp.oacc-c-c++-common/loop-auto-1.c
  be17285aeaf26554c93a2fc70e0e8f6a  libgomp/testsuite/libgomp.oacc-c-c++-common/loop-dim-default.c
! 55df3488b714b85007342a498ebcb26c  libgomp/testsuite/libgomp.oacc-c-c++-common/loop-g-1.c
! 4efc6bf3a634f064bbf1e6e318c9015d  libgomp/testsuite/libgomp.oacc-c-c++-common/loop-g-2.c
  ddb6a64cef900b106b6a6de8d8b11b95  libgomp/testsuite/libgomp.oacc-c-c++-common/loop-gwv-1.c
! 0dd37dfa1d3a39618af061fb9e217155  libgomp/testsuite/libgomp.oacc-c-c++-common/loop-red-g-1.c
  818e8127d30c4d3c6d132b75359d0374  libgomp/testsuite/libgomp.oacc-c-c++-common/loop-red-gwv-1.c
  9b7a19718b6b99d3492ec30e5d74ac59  libgomp/testsuite/libgomp.oacc-c-c++-common/loop-red-v-1.c
  955d037ba0547500ff9eb3d0847b3212  libgomp/testsuite/libgomp.oacc-c-c++-common/loop-red-v-2.c
--- 69682,69691 ----
  63b0abf54d070c509131a39cc0045d09  libgomp/testsuite/libgomp.oacc-c-c++-common/lib-92.c
  54fc2d7d6de099c08da67ea9f553d46e  libgomp/testsuite/libgomp.oacc-c-c++-common/loop-auto-1.c
  be17285aeaf26554c93a2fc70e0e8f6a  libgomp/testsuite/libgomp.oacc-c-c++-common/loop-dim-default.c
! 25883a737d78de4f31d5587b19f07ff7  libgomp/testsuite/libgomp.oacc-c-c++-common/loop-g-1.c
! 7d48d1aae2fcc11181765db7ce8360da  libgomp/testsuite/libgomp.oacc-c-c++-common/loop-g-2.c
  ddb6a64cef900b106b6a6de8d8b11b95  libgomp/testsuite/libgomp.oacc-c-c++-common/loop-gwv-1.c
! 914cba577d14c81db5424c4faa48f63d  libgomp/testsuite/libgomp.oacc-c-c++-common/loop-red-g-1.c
  818e8127d30c4d3c6d132b75359d0374  libgomp/testsuite/libgomp.oacc-c-c++-common/loop-red-gwv-1.c
  9b7a19718b6b99d3492ec30e5d74ac59  libgomp/testsuite/libgomp.oacc-c-c++-common/loop-red-v-1.c
  955d037ba0547500ff9eb3d0847b3212  libgomp/testsuite/libgomp.oacc-c-c++-common/loop-red-v-2.c
*************** e247b81bd475622bae9138c10ebabeb0  libgom
*** 64908,64928 ****
  7a95d75da253199bb86081b6e02f3e2c  libgomp/testsuite/libgomp.oacc-c-c++-common/loop-wv-1.c
  42ddbfe441adb1bfd183a90e95f1f7b5  libgomp/testsuite/libgomp.oacc-c-c++-common/mode-transitions.c
  8db897dc5639a0e0b8d734e5a7fc15bc  libgomp/testsuite/libgomp.oacc-c-c++-common/nested-1.c
! bb3998e0572983e2fd0894cba6aa30ca  libgomp/testsuite/libgomp.oacc-c-c++-common/nested-2.c
  8483df68b361c43ee27c5db6c8b6ddf1  libgomp/testsuite/libgomp.oacc-c-c++-common/offset-1.c
  b0520beb65b5cc0db5c5612014e0d017  libgomp/testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-1.c
  adad2d3a7f7bc56b054298910bb307b7  libgomp/testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-2.c
! a7e1fa80452160e0c81719420bcd484b  libgomp/testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-3.c
! f949cc9abb01d0c155db23f31174af32  libgomp/testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-4.c
  b53629782de18001e681fd3ba0a7ecb9  libgomp/testsuite/libgomp.oacc-c-c++-common/par-reduction-1.c
! dd9ce86b9797d6c9acb4b283c9696316  libgomp/testsuite/libgomp.oacc-c-c++-common/par-reduction-2.c
! 1a35b641e59b726cf886f3d0effdd4c2  libgomp/testsuite/libgomp.oacc-c-c++-common/parallel-dims.c
  13738214f52524bee03830310425deb2  libgomp/testsuite/libgomp.oacc-c-c++-common/parallel-empty.c
! b2ad9a4d1497c025d426aa2cb33df171  libgomp/testsuite/libgomp.oacc-c-c++-common/parallel-reduction.c
  a5278638b6db8f8330c505f9431f453f  libgomp/testsuite/libgomp.oacc-c-c++-common/pointer-align-1.c
  94f343a0a3568ebcb08045cd95eaedc0  libgomp/testsuite/libgomp.oacc-c-c++-common/pr70289.c
  b480e00caa0b139129c773a615bdc67e  libgomp/testsuite/libgomp.oacc-c-c++-common/pr70373.c
  42bc44ea6842a7a494e233703814fec8  libgomp/testsuite/libgomp.oacc-c-c++-common/pr70688.c
  8ccb391ecb020ee72dd4b3c91795a894  libgomp/testsuite/libgomp.oacc-c-c++-common/present-1.c
  b3824216ed6541363eaab687c61bb584  libgomp/testsuite/libgomp.oacc-c-c++-common/present-2.c
  f6a4f95364d4753e1b6bc27116c40f32  libgomp/testsuite/libgomp.oacc-c-c++-common/private-variables.c
--- 69697,69722 ----
  7a95d75da253199bb86081b6e02f3e2c  libgomp/testsuite/libgomp.oacc-c-c++-common/loop-wv-1.c
  42ddbfe441adb1bfd183a90e95f1f7b5  libgomp/testsuite/libgomp.oacc-c-c++-common/mode-transitions.c
  8db897dc5639a0e0b8d734e5a7fc15bc  libgomp/testsuite/libgomp.oacc-c-c++-common/nested-1.c
! 968a8b86f9a11317a5a9c9b8d1d372af  libgomp/testsuite/libgomp.oacc-c-c++-common/nested-2.c
  8483df68b361c43ee27c5db6c8b6ddf1  libgomp/testsuite/libgomp.oacc-c-c++-common/offset-1.c
  b0520beb65b5cc0db5c5612014e0d017  libgomp/testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-1.c
  adad2d3a7f7bc56b054298910bb307b7  libgomp/testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-2.c
! 4c892838e90deb3d5bb7627e1e0bc62b  libgomp/testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-3.c
! 24de007da707c71815f676c0dc3e7575  libgomp/testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-4.c
  b53629782de18001e681fd3ba0a7ecb9  libgomp/testsuite/libgomp.oacc-c-c++-common/par-reduction-1.c
! 7ef8129cc3665d7bea9e0e548927a213  libgomp/testsuite/libgomp.oacc-c-c++-common/par-reduction-2.c
! 7f57d78d409b057f47ac08ad8d58b7ea  libgomp/testsuite/libgomp.oacc-c-c++-common/parallel-dims.c
  13738214f52524bee03830310425deb2  libgomp/testsuite/libgomp.oacc-c-c++-common/parallel-empty.c
! f042a74c9acd1b798d451842cf21bd78  libgomp/testsuite/libgomp.oacc-c-c++-common/parallel-reduction.c
  a5278638b6db8f8330c505f9431f453f  libgomp/testsuite/libgomp.oacc-c-c++-common/pointer-align-1.c
  94f343a0a3568ebcb08045cd95eaedc0  libgomp/testsuite/libgomp.oacc-c-c++-common/pr70289.c
  b480e00caa0b139129c773a615bdc67e  libgomp/testsuite/libgomp.oacc-c-c++-common/pr70373.c
  42bc44ea6842a7a494e233703814fec8  libgomp/testsuite/libgomp.oacc-c-c++-common/pr70688.c
+ f4b077ed86c2694e71f3b739b8acc39a  libgomp/testsuite/libgomp.oacc-c-c++-common/pr83046.c
+ 5ff9493c76f2af43c16636b547ea7791  libgomp/testsuite/libgomp.oacc-c-c++-common/pr83589.c
+ 42c912916e4791db90f4f46260412d7c  libgomp/testsuite/libgomp.oacc-c-c++-common/pr83920.c
+ 7766af3cacc170fb7222a4a7a4d920f8  libgomp/testsuite/libgomp.oacc-c-c++-common/pr84217.c
+ 7bebc40e2fc1dd55a72340d501f63635  libgomp/testsuite/libgomp.oacc-c-c++-common/pr84955.c
  8ccb391ecb020ee72dd4b3c91795a894  libgomp/testsuite/libgomp.oacc-c-c++-common/present-1.c
  b3824216ed6541363eaab687c61bb584  libgomp/testsuite/libgomp.oacc-c-c++-common/present-2.c
  f6a4f95364d4753e1b6bc27116c40f32  libgomp/testsuite/libgomp.oacc-c-c++-common/private-variables.c
*************** f2e63e8a1556c73f073dc893f3ad3a75  libgom
*** 64932,64948 ****
  77cda4eddbf00a5c813319ac418e7a9c  libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-4.c
  fa76eb011937377be41592843d726756  libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-5.c
  25d16324de366c47703fd359b6bd84e6  libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-6.c
! 1495ca13ef2296f667017a5a0cd0a1be  libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-7.c
  0fc354f8d8f049474bcdaa855dac08e8  libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-8.c
! 3c6f5b74d7a10d46d1f0684208638e24  libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-cplx-dbl.c
! 4e2c7ca089460098b2e7c0d671223cf1  libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-cplx-flt.c
  a5908f72d8e64046cd847d94abb36a2d  libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-dbl.c
  06d6258181236f8436fea821b653fdfe  libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-flt.c
  84693802273934d6c6eb0eee743e4a6f  libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-initial-1.c
  ad168cfedf92ebb1f18d0b4e037fec4c  libgomp/testsuite/libgomp.oacc-c-c++-common/reduction.h
  6c43413f80b1d80ec259529180f43b2a  libgomp/testsuite/libgomp.oacc-c-c++-common/routine-1.c
  5f5eb258f275dae741462f4a29a1c0e9  libgomp/testsuite/libgomp.oacc-c-c++-common/routine-4.c
! 0cc11ca7b7876670b6d9b27ac7c0912d  libgomp/testsuite/libgomp.oacc-c-c++-common/routine-g-1.c
  6198c35071e67d507b0bef5bd43e7e42  libgomp/testsuite/libgomp.oacc-c-c++-common/routine-gwv-1.c
  f8b9103812f1da0e42df9393ac2adb64  libgomp/testsuite/libgomp.oacc-c-c++-common/routine-v-1.c
  86dbfb9789a29cada159f0386711164c  libgomp/testsuite/libgomp.oacc-c-c++-common/routine-w-1.c
--- 69726,69742 ----
  77cda4eddbf00a5c813319ac418e7a9c  libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-4.c
  fa76eb011937377be41592843d726756  libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-5.c
  25d16324de366c47703fd359b6bd84e6  libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-6.c
! bbc6d166b3ddc1ece97c3c89706e19db  libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-7.c
  0fc354f8d8f049474bcdaa855dac08e8  libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-8.c
! 1d1adb51af879755185bb618aaa65ee9  libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-cplx-dbl.c
! 72bb5ee190874513710f37cf087e2488  libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-cplx-flt.c
  a5908f72d8e64046cd847d94abb36a2d  libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-dbl.c
  06d6258181236f8436fea821b653fdfe  libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-flt.c
  84693802273934d6c6eb0eee743e4a6f  libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-initial-1.c
  ad168cfedf92ebb1f18d0b4e037fec4c  libgomp/testsuite/libgomp.oacc-c-c++-common/reduction.h
  6c43413f80b1d80ec259529180f43b2a  libgomp/testsuite/libgomp.oacc-c-c++-common/routine-1.c
  5f5eb258f275dae741462f4a29a1c0e9  libgomp/testsuite/libgomp.oacc-c-c++-common/routine-4.c
! 00032f02a8e1f9457acd24ba0f7d2376  libgomp/testsuite/libgomp.oacc-c-c++-common/routine-g-1.c
  6198c35071e67d507b0bef5bd43e7e42  libgomp/testsuite/libgomp.oacc-c-c++-common/routine-gwv-1.c
  f8b9103812f1da0e42df9393ac2adb64  libgomp/testsuite/libgomp.oacc-c-c++-common/routine-v-1.c
  86dbfb9789a29cada159f0386711164c  libgomp/testsuite/libgomp.oacc-c-c++-common/routine-w-1.c
*************** f8b9103812f1da0e42df9393ac2adb64  libgom
*** 64950,64993 ****
  5031ad4608b42149ded12d117712397b  libgomp/testsuite/libgomp.oacc-c-c++-common/routine-wv-2.c
  1de1c62b1253d33d9b05319eb43c6193  libgomp/testsuite/libgomp.oacc-c-c++-common/subr.h
  acff0307cbfdb6578ef67d96f7f7cbaf  libgomp/testsuite/libgomp.oacc-c-c++-common/subr.ptx
  1404364ff32ae21ef692c68b91993414  libgomp/testsuite/libgomp.oacc-c-c++-common/tile-1.c
  1d0ac265ffd93f3e7303bf1e4d06d541  libgomp/testsuite/libgomp.oacc-c-c++-common/timer.h
  964557340c6a86906ae6e0d52e6bad79  libgomp/testsuite/libgomp.oacc-c-c++-common/update-1.c
  a9f926de80d09b0da7520672b009c751  libgomp/testsuite/libgomp.oacc-c-c++-common/vector-loop.c
  e65c44041c15898765a99f6782a191d2  libgomp/testsuite/libgomp.oacc-c-c++-common/vector-type-1.c
! 6b38d06d2c0ed3afc587d0cf9e793673  libgomp/testsuite/libgomp.oacc-c-c++-common/vprop.c
  4210ba709794292b7c55787ddbfa572a  libgomp/testsuite/libgomp.oacc-c-c++-common/zero_length_subarrays.c
! 6a3ebccf985a3d14104d3ff79347af01  libgomp/testsuite/libgomp.oacc-c/c.exp
  cbdcc7dbb1bbfcb008b972db87d6a771  libgomp/testsuite/libgomp.oacc-c/nested-function-1.c
  009dee52db49f02bd518c318808bd4ab  libgomp/testsuite/libgomp.oacc-c/nested-function-2.c
! 00763c45e9c4a49ef7249e327925090e  libgomp/testsuite/libgomp.oacc-fortran/abort-1.f90
! 92672ea2291844ee4dc0b00666eb7766  libgomp/testsuite/libgomp.oacc-fortran/abort-2.f90
! c280f253738f9ec4dac767225d094975  libgomp/testsuite/libgomp.oacc-fortran/acc_on_device-1-1.f90
! 733dd45e86f968264fa8161fd0d7f1d7  libgomp/testsuite/libgomp.oacc-fortran/acc_on_device-1-2.f
! 58e6b92c93c91dcb57e839ec8d719f9b  libgomp/testsuite/libgomp.oacc-fortran/acc_on_device-1-3.f
! 86513eb420b494fa28c5f9382d2fe0f5  libgomp/testsuite/libgomp.oacc-fortran/asyncwait-1.f90
! f35b32f9b25ec4a552f761cb603dfd2a  libgomp/testsuite/libgomp.oacc-fortran/asyncwait-2.f90
! 7682fc0fdac3ec657df003ec32c66cef  libgomp/testsuite/libgomp.oacc-fortran/asyncwait-3.f90
! 7c923f2a5e595d3e5bc0ae52b8c3b1d2  libgomp/testsuite/libgomp.oacc-fortran/atomic_capture-1.f90
! 1239e7569c34d9842432ab6666cd411c  libgomp/testsuite/libgomp.oacc-fortran/atomic_rw-1.f90
! 41253d0cb8d36acbbcd34b0461a3bb46  libgomp/testsuite/libgomp.oacc-fortran/atomic_update-1.f90
  c459a54e791263602dae13c9b38a66ad  libgomp/testsuite/libgomp.oacc-fortran/cache-1.f95
! 2ccddd43e49018b56fe9e1a45e9f9901  libgomp/testsuite/libgomp.oacc-fortran/clauses-1.f90
! 0d6c26df6be6cef756b12696e14e07b5  libgomp/testsuite/libgomp.oacc-fortran/collapse-1.f90
! 5a8991a0764ce9b04257546e4fa5f658  libgomp/testsuite/libgomp.oacc-fortran/collapse-2.f90
! a6710e65fdd1ad8bb8a55769440d972c  libgomp/testsuite/libgomp.oacc-fortran/collapse-3.f90
! deb19806a87f9c8a47d34d5cccd1c86b  libgomp/testsuite/libgomp.oacc-fortran/collapse-4.f90
! 060e4a459c88d0ebc727c9fc5c66f40f  libgomp/testsuite/libgomp.oacc-fortran/collapse-5.f90
! e928caaaca63fbc541f4f488d78d5dfa  libgomp/testsuite/libgomp.oacc-fortran/collapse-6.f90
! 13468844967101467070cb7ac463c16b  libgomp/testsuite/libgomp.oacc-fortran/collapse-7.f90
! 6b3128948ec46f6c5a25eb114b5fc9c4  libgomp/testsuite/libgomp.oacc-fortran/collapse-8.f90
! 8c396e2144fc18a3de1818ae8108bda5  libgomp/testsuite/libgomp.oacc-fortran/combined-directives-1.f90
! 3733716c9184c05cf46fd635d0943a6d  libgomp/testsuite/libgomp.oacc-fortran/combined-reduction.f90
! 6306783e85f144ba81b9aac0fc341a71  libgomp/testsuite/libgomp.oacc-fortran/data-1.f90
! e8adb123c09781787869ea368c1fa278  libgomp/testsuite/libgomp.oacc-fortran/data-2.f90
! ce578dabaea526c76233d523eab686f7  libgomp/testsuite/libgomp.oacc-fortran/data-3.f90
! aa3606dfe4293cadd1d6b97cea315739  libgomp/testsuite/libgomp.oacc-fortran/data-4-2.f90
! 9c1d2ab38c87ceb7959d82429c8f03b5  libgomp/testsuite/libgomp.oacc-fortran/data-4.f90
  b5173146f6a48244d27cbdd42f48ffdc  libgomp/testsuite/libgomp.oacc-fortran/data-already-1.f
  c35d4c68ff181c2a9374fafa5febb67e  libgomp/testsuite/libgomp.oacc-fortran/data-already-2.f
  9f0da576fe252067c4d46131f626217e  libgomp/testsuite/libgomp.oacc-fortran/data-already-3.f
--- 69744,69791 ----
  5031ad4608b42149ded12d117712397b  libgomp/testsuite/libgomp.oacc-c-c++-common/routine-wv-2.c
  1de1c62b1253d33d9b05319eb43c6193  libgomp/testsuite/libgomp.oacc-c-c++-common/subr.h
  acff0307cbfdb6578ef67d96f7f7cbaf  libgomp/testsuite/libgomp.oacc-c-c++-common/subr.ptx
+ 295b6577faeac53ebb3f99e70fe82529  libgomp/testsuite/libgomp.oacc-c-c++-common/switch-conversion-2.c
+ 44f8540f48e84ee4643d1779ee881eaf  libgomp/testsuite/libgomp.oacc-c-c++-common/switch-conversion.c
  1404364ff32ae21ef692c68b91993414  libgomp/testsuite/libgomp.oacc-c-c++-common/tile-1.c
  1d0ac265ffd93f3e7303bf1e4d06d541  libgomp/testsuite/libgomp.oacc-c-c++-common/timer.h
  964557340c6a86906ae6e0d52e6bad79  libgomp/testsuite/libgomp.oacc-c-c++-common/update-1.c
  a9f926de80d09b0da7520672b009c751  libgomp/testsuite/libgomp.oacc-c-c++-common/vector-loop.c
  e65c44041c15898765a99f6782a191d2  libgomp/testsuite/libgomp.oacc-c-c++-common/vector-type-1.c
! 1adf3017b5fe6def74e1026289ff82b8  libgomp/testsuite/libgomp.oacc-c-c++-common/vprop-2.c
! 3df312778896ed29ec60eefae35ce701  libgomp/testsuite/libgomp.oacc-c-c++-common/vprop.c
  4210ba709794292b7c55787ddbfa572a  libgomp/testsuite/libgomp.oacc-c-c++-common/zero_length_subarrays.c
! d050b2110afe9c66fe744be7e0e9d2b8  libgomp/testsuite/libgomp.oacc-c/c.exp
  cbdcc7dbb1bbfcb008b972db87d6a771  libgomp/testsuite/libgomp.oacc-c/nested-function-1.c
  009dee52db49f02bd518c318808bd4ab  libgomp/testsuite/libgomp.oacc-c/nested-function-2.c
! 158b012cba85ffd92def764a35da21c6  libgomp/testsuite/libgomp.oacc-c/vec.c
! 5afabe9f1f6de0f26ffbfac5aad598bf  libgomp/testsuite/libgomp.oacc-fortran/abort-1.f90
! 407f80aed64869e15f17817b7ce8fca6  libgomp/testsuite/libgomp.oacc-fortran/abort-2.f90
! 62b10f3992a7fc9a6d4c92268529ea55  libgomp/testsuite/libgomp.oacc-fortran/acc_on_device-1-1.f90
! 538704cfadf53440a22b840f9118c289  libgomp/testsuite/libgomp.oacc-fortran/acc_on_device-1-2.f
! 1d2c003cc4c927ae1c556342dd01d126  libgomp/testsuite/libgomp.oacc-fortran/acc_on_device-1-3.f
! b60f9df599841cb97ef2a6785c97ff52  libgomp/testsuite/libgomp.oacc-fortran/asyncwait-1.f90
! c54dcd56776270d286dbab537ea69b4a  libgomp/testsuite/libgomp.oacc-fortran/asyncwait-2.f90
! 8b367ab07bf8308d580e8dc6e80b36a3  libgomp/testsuite/libgomp.oacc-fortran/asyncwait-3.f90
! f6746d181a1eff03e59d524cd6be6855  libgomp/testsuite/libgomp.oacc-fortran/atomic_capture-1.f90
! b53eda12d1ace10b6256bd20bcfcfa38  libgomp/testsuite/libgomp.oacc-fortran/atomic_rw-1.f90
! 552def687c8967818402a522b6670853  libgomp/testsuite/libgomp.oacc-fortran/atomic_update-1.f90
  c459a54e791263602dae13c9b38a66ad  libgomp/testsuite/libgomp.oacc-fortran/cache-1.f95
! eb119d5430cde6e637e7544ce8939fe5  libgomp/testsuite/libgomp.oacc-fortran/clauses-1.f90
! ce55f5feea92469a28e9d13fb2a2835d  libgomp/testsuite/libgomp.oacc-fortran/collapse-1.f90
! 45403f7b8aaaf9d9f0891a2536b79195  libgomp/testsuite/libgomp.oacc-fortran/collapse-2.f90
! 6ed0719954efef2eee5a4e2d4d57090b  libgomp/testsuite/libgomp.oacc-fortran/collapse-3.f90
! 594ec70de63180a87e3b05eb230a6ecb  libgomp/testsuite/libgomp.oacc-fortran/collapse-4.f90
! 77e112d3ea9db0e5b89d887d9a851002  libgomp/testsuite/libgomp.oacc-fortran/collapse-5.f90
! 4732947462c462c633a414876fa9de78  libgomp/testsuite/libgomp.oacc-fortran/collapse-6.f90
! 4729f32a94bd42d2804711363b33231e  libgomp/testsuite/libgomp.oacc-fortran/collapse-7.f90
! a03324d5751ca057a7cf24f67e59e757  libgomp/testsuite/libgomp.oacc-fortran/collapse-8.f90
! 54d112e9cae1e44396461d5c48bebc76  libgomp/testsuite/libgomp.oacc-fortran/combined-directives-1.f90
! 48bd34d518cd81cac9cfdb194fbabdbc  libgomp/testsuite/libgomp.oacc-fortran/combined-reduction.f90
! bded5ca91411ae1913b84ff26b94b70f  libgomp/testsuite/libgomp.oacc-fortran/data-1.f90
! 472e74432d1deaa08c6f81d12c0d17e5  libgomp/testsuite/libgomp.oacc-fortran/data-2.f90
! 728b3e0da3702bf7f1a50e4f6476262f  libgomp/testsuite/libgomp.oacc-fortran/data-3.f90
! 817ea5e4070011bdb1552c03b52d8816  libgomp/testsuite/libgomp.oacc-fortran/data-4-2.f90
! 2fe7f6b41e02df794fab057986082f62  libgomp/testsuite/libgomp.oacc-fortran/data-4.f90
  b5173146f6a48244d27cbdd42f48ffdc  libgomp/testsuite/libgomp.oacc-fortran/data-already-1.f
  c35d4c68ff181c2a9374fafa5febb67e  libgomp/testsuite/libgomp.oacc-fortran/data-already-2.f
  9f0da576fe252067c4d46131f626217e  libgomp/testsuite/libgomp.oacc-fortran/data-already-3.f
*************** bf96c8828874de903bbd5365d1d46684  libgom
*** 64996,65098 ****
  70f3d8b1d85e6dd466cdb7b104ebb444  libgomp/testsuite/libgomp.oacc-fortran/data-already-6.f
  256eb59a10277c17e6f30282802d6406  libgomp/testsuite/libgomp.oacc-fortran/data-already-7.f
  e016cf1d60c4317a5e56628e94106a3e  libgomp/testsuite/libgomp.oacc-fortran/data-already-8.f
! 170a88411b55b9f4e0859c0006262c5a  libgomp/testsuite/libgomp.oacc-fortran/declare-1.f90
! e7b551c364e6581cdc790b263c25e58e  libgomp/testsuite/libgomp.oacc-fortran/declare-2.f90
! 7a21b5e94830a8bcfecf7ece75afb5a7  libgomp/testsuite/libgomp.oacc-fortran/declare-3.f90
! 74d68d823d034de1d64daa3e3ecd5c9b  libgomp/testsuite/libgomp.oacc-fortran/declare-4.f90
! f34d146db6b3ae9ecfc960f3fecde1ee  libgomp/testsuite/libgomp.oacc-fortran/declare-5.f90
! eba625250276ecb87eb1ac80c78439bd  libgomp/testsuite/libgomp.oacc-fortran/default-1.f90
! 28ef48f4c9deeb8f7882e9584f059b69  libgomp/testsuite/libgomp.oacc-fortran/firstprivate-1.f90
  ad1ba21f1554b66aa81cb44bdca73db1  libgomp/testsuite/libgomp.oacc-fortran/fortran.exp
! d805eff3c6aa2629970c1587e3a948e2  libgomp/testsuite/libgomp.oacc-fortran/gang-static-1.f90
! 3e648be4e28efe0b7f1d903261e91338  libgomp/testsuite/libgomp.oacc-fortran/host_data-1.f90
! b1d1d62145fa88ac1625e448719ed13f  libgomp/testsuite/libgomp.oacc-fortran/if-1.f90
! 6f45c832061e91b0afb3d935944e50ad  libgomp/testsuite/libgomp.oacc-fortran/implicit-firstprivate-ref.f90
! b26ae7b3df470e64f8dd417b3158a1ed  libgomp/testsuite/libgomp.oacc-fortran/kernels-loop-2.f95
! f5426c9474157b1052ac633a628b1070  libgomp/testsuite/libgomp.oacc-fortran/kernels-loop-data-2.f95
! 2e4ceebc7b4f6ec9133c3989f478e90b  libgomp/testsuite/libgomp.oacc-fortran/kernels-loop-data-enter-exit-2.f95
! 3539a96f002479bde2fa6459f0459859  libgomp/testsuite/libgomp.oacc-fortran/kernels-loop-data-enter-exit.f95
! 5315f4bbc32ca61eb4aeae0553617dc2  libgomp/testsuite/libgomp.oacc-fortran/kernels-loop-data-update.f95
! a4896a74dcf1dea035dac6c37156b71f  libgomp/testsuite/libgomp.oacc-fortran/kernels-loop-data.f95
! 69ecec13f056b75c80534b05c9a6e755  libgomp/testsuite/libgomp.oacc-fortran/kernels-loop.f95
! 95eb42cc2a018fe128f4847b7b9ab428  libgomp/testsuite/libgomp.oacc-fortran/lib-1.f90
! a1df4bbbcea7d1ba6a3d931226780ee3  libgomp/testsuite/libgomp.oacc-fortran/lib-10.f90
! f7ca55957d44cecc397e92e6223057ba  libgomp/testsuite/libgomp.oacc-fortran/lib-2.f
! 2910957880b7cf4c334b37bafcef2582  libgomp/testsuite/libgomp.oacc-fortran/lib-3.f
! e56fbd35b6fb353e6f6f4b6a73a288ff  libgomp/testsuite/libgomp.oacc-fortran/lib-4.f90
! fc616402b4c4ac34a8f351541dd535f0  libgomp/testsuite/libgomp.oacc-fortran/lib-5.f90
! 12d5631a0731e8b41d5b5fea061e7352  libgomp/testsuite/libgomp.oacc-fortran/lib-6.f90
! efcda465915ae848c58a3ea43c284842  libgomp/testsuite/libgomp.oacc-fortran/lib-7.f90
! e055a49425dde48525db5350406511b2  libgomp/testsuite/libgomp.oacc-fortran/lib-8.f90
! 8166a0c9b27377f05eb06d5dd0735cee  libgomp/testsuite/libgomp.oacc-fortran/map-1.f90
! 4edeb77d5314a9a5549297414d3bf04c  libgomp/testsuite/libgomp.oacc-fortran/nested-function-1.f90
! bd7a72425ffbe9f89587d5a5138fe462  libgomp/testsuite/libgomp.oacc-fortran/nested-function-2.f90
! a1fa3ef264aa86add5dc08b5e9bd4b89  libgomp/testsuite/libgomp.oacc-fortran/nested-function-3.f90
! a09b08acb0185066a021ba50ed1dacc8  libgomp/testsuite/libgomp.oacc-fortran/non-scalar-data.f90
! 7702e59e2172a9499f765f4c9327f0bb  libgomp/testsuite/libgomp.oacc-fortran/openacc_version-1.f
! 77ec7fb0079c057c097fef3a8693467e  libgomp/testsuite/libgomp.oacc-fortran/openacc_version-2.f90
! f98bec967efcf73c3c88608c574cb350  libgomp/testsuite/libgomp.oacc-fortran/parallel-reduction.f90
! 9d2169ab94688b5c3c892dbcf06188a3  libgomp/testsuite/libgomp.oacc-fortran/pointer-align-1.f90
  67a7c830c313f8fe4aab170bd515c46d  libgomp/testsuite/libgomp.oacc-fortran/pr68813.f90
  e129117b8d34cba8614977fd91ca41b0  libgomp/testsuite/libgomp.oacc-fortran/pr70289.f90
! 84d2a2c2c99b69bf886812ab59d3f5c6  libgomp/testsuite/libgomp.oacc-fortran/pr70643.f90
! 368deed3761a4aee751f17b6f7cd03e5  libgomp/testsuite/libgomp.oacc-fortran/private-variables.f90
! 6df276c67cdc6b18d94a3766b52a1e24  libgomp/testsuite/libgomp.oacc-fortran/pset-1.f90
! d26e447acd9002ca3fdfda9cf83ef8a9  libgomp/testsuite/libgomp.oacc-fortran/reduction-1.f90
! ce8841048f1611dd48af7d7546c65134  libgomp/testsuite/libgomp.oacc-fortran/reduction-2.f90
! 1b17aa9bcb82add5ba1e620f5c15915a  libgomp/testsuite/libgomp.oacc-fortran/reduction-3.f90
! 2cc26345e8191bed16bcedd7b1ac675a  libgomp/testsuite/libgomp.oacc-fortran/reduction-4.f90
! 6563e1c6c81fd62d2baa2dcf87659c75  libgomp/testsuite/libgomp.oacc-fortran/reduction-5.f90
! dcfcd518d71cb59c1d45be55e869617b  libgomp/testsuite/libgomp.oacc-fortran/reduction-6.f90
! 218f3ae96846bcd0d7483bddf47ad9d2  libgomp/testsuite/libgomp.oacc-fortran/reduction-7.f90
! cf941e8c83575974ff0d3b09ecdc4d61  libgomp/testsuite/libgomp.oacc-fortran/reduction-8.f90
! 15ceb40d89c73ad17293d17323eb0992  libgomp/testsuite/libgomp.oacc-fortran/routine-1.f90
! 6bfdfa92296561587eacf2c4a2a887ef  libgomp/testsuite/libgomp.oacc-fortran/routine-2.f90
! 0605e03bde78427279dc77c948946e45  libgomp/testsuite/libgomp.oacc-fortran/routine-3.f90
! 71edeac4afd44bd52554d327c4bce378  libgomp/testsuite/libgomp.oacc-fortran/routine-4.f90
! 49a5eaf9608773cc183cb9bc5bd1bf29  libgomp/testsuite/libgomp.oacc-fortran/routine-5.f90
! 5a334dc9008d1454f34c322c5592a481  libgomp/testsuite/libgomp.oacc-fortran/routine-7.f90
! 3617d5fcf06ab45aa1333474e38dfc6c  libgomp/testsuite/libgomp.oacc-fortran/routine-9.f90
! d2feeae17acfcc522ce8d197f56a5e6c  libgomp/testsuite/libgomp.oacc-fortran/subarrays-1.f90
! d3f9f8b453576b8a24f3f2db4ad0cbe2  libgomp/testsuite/libgomp.oacc-fortran/subarrays-2.f90
! 97895ee7fdb38ab486cfd464bb975de0  libgomp/testsuite/libgomp.oacc-fortran/update-1.f90
! 5e70f54ed74527f5e04379413bff932f  libgomp/work.c
! 28282830d066165621f057092aee9644  libhsail-rt/ChangeLog
  9147b482b39962a71e580b4a8265285e  libhsail-rt/Makefile.am
  a38674477ad0a784b375b84f710eb630  libhsail-rt/Makefile.in
  de97a355fadb5753d182cbcf06b1b33a  libhsail-rt/README
  1ec2f03db6be6448c2332bead0fe62f7  libhsail-rt/aclocal.m4
! 95b26891254cc56f1733185f0a530c37  libhsail-rt/configure
  206769d36adc9a98df600c8049e1895b  libhsail-rt/configure.ac
! 24aa1cbdb33caed5a16818fd9d2f1e81  libhsail-rt/configure.tgt
! 0e42c963335c8233e3fdbf5d6530f92f  libhsail-rt/include/internal/fibers.h
! 257b4eddcc04cd4b916c95658f1b865f  libhsail-rt/include/internal/phsa-queue-interface.h
! dc4eeec05d69f327cafc9e6b5f912c1f  libhsail-rt/include/internal/phsa-rt.h
! 89a9d96eb516f1921d4223e542133360  libhsail-rt/include/internal/workitems.h
! 92e4e595b45391f4ddfc5716fdec3988  libhsail-rt/rt/arithmetic.c
! ec44492f593fc0bf8a4aa924c54d82de  libhsail-rt/rt/atomics.c
! b0d7ae1bef503b0b70597f38a01d28b2  libhsail-rt/rt/bitstring.c
! a1c8b9828e99953f3b5c762ed93bbdca  libhsail-rt/rt/fbarrier.c
! 7598e558bb53ca4a5e6cae41614fe268  libhsail-rt/rt/fibers.c
! af01824f0d1e0589c2460dc037e82534  libhsail-rt/rt/fp16.c
! 5386888957e1450f89e3b098828dcd35  libhsail-rt/rt/misc.c
! 7c00fe74933dddf2e8643121ede6e811  libhsail-rt/rt/multimedia.c
! b8290f5231ea78d8acee7c12d03f21e2  libhsail-rt/rt/queue.c
! 8f848007d0ec63d0015e1ec2efaad5a0  libhsail-rt/rt/sat_arithmetic.c
! 98f46cc8ddfc377f81b3fb7fe7985408  libhsail-rt/rt/segment.c
! 561e0445bc7b359962b162e39ea93708  libhsail-rt/rt/workitems.c
  ef9f05873915c22cae79ef5545355353  libhsail-rt/target-config.h.in
  99c2e5e712b990ee07be10f53e41f3fb  libiberty/.gitignore
  a916467b91076e631dd8edb7424769c7  libiberty/COPYING.LIB
! e295143e04ed9213dbcb992b9b4f0a04  libiberty/ChangeLog
  347c31392973de6a4872d540c1718dc1  libiberty/ChangeLog.jit
! 989d73ea8d6c7734f2cd7fc2f6a08ee9  libiberty/Makefile.in
  c68dbf7834af4281ebd84caa3fd54680  libiberty/README
! 1c94a452e6b90f6e8fd2e2d8a41fbd60  libiberty/_doprnt.c
  22b53dd8b990133515799dffbda44c8c  libiberty/aclocal.m4
  e60c2e7c5dcdd19510066c13f1a527d3  libiberty/alloca.c
! 32a0a662a90a3a30b0859538920a77f9  libiberty/argv.c
! 4b91b1e4f0fd04e66a606c12418f4fac  libiberty/asprintf.c
  a16ea056b95fd70c21333db132da14ff  libiberty/at-file.texi
  c34119797a13e71989722851c14b711b  libiberty/atexit.c
  ab8d4cd68aa4892e2318d2c71864cc56  libiberty/basename.c
--- 69794,69910 ----
  70f3d8b1d85e6dd466cdb7b104ebb444  libgomp/testsuite/libgomp.oacc-fortran/data-already-6.f
  256eb59a10277c17e6f30282802d6406  libgomp/testsuite/libgomp.oacc-fortran/data-already-7.f
  e016cf1d60c4317a5e56628e94106a3e  libgomp/testsuite/libgomp.oacc-fortran/data-already-8.f
! ac946b94f0151da0c0b97127eec425f2  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
! a0cb7701cd0fc63949bf7f75d88237c1  libgomp/testsuite/libgomp.oacc-fortran/declare-5.f90
! cd7fb9976506e9fd8976a32edc607640  libgomp/testsuite/libgomp.oacc-fortran/default-1.f90
! 844e9b7d6809a8a3c74e93216dee60be  libgomp/testsuite/libgomp.oacc-fortran/error_stop-1.f
! 64740367d3d51f4a2d3276cf4327b3a8  libgomp/testsuite/libgomp.oacc-fortran/error_stop-2.f
! 1fc6d608d48fcc568f1db35ee82543c3  libgomp/testsuite/libgomp.oacc-fortran/error_stop-3.f
! 1ca90666ec166deb31a532f320f58fa2  libgomp/testsuite/libgomp.oacc-fortran/firstprivate-1.f90
  ad1ba21f1554b66aa81cb44bdca73db1  libgomp/testsuite/libgomp.oacc-fortran/fortran.exp
! 1c759d21e241899405470f8b5a93d4c4  libgomp/testsuite/libgomp.oacc-fortran/gang-static-1.f90
! 7e7d539e2c889056240b9439d72f8fcf  libgomp/testsuite/libgomp.oacc-fortran/host_data-1.f90
! e7667d7a3daf07e360f07c8d85f08b26  libgomp/testsuite/libgomp.oacc-fortran/if-1.f90
! 9e79f04def374125ca7e12df1aa42e17  libgomp/testsuite/libgomp.oacc-fortran/implicit-firstprivate-ref.f90
! a87e74a4416c2b914cc1ef2724a58321  libgomp/testsuite/libgomp.oacc-fortran/kernels-loop-2.f95
! 92aea28f06d0c5944bd84f91ce521a5d  libgomp/testsuite/libgomp.oacc-fortran/kernels-loop-data-2.f95
! 3755e459a8bcf7ae9909961c1aa1e041  libgomp/testsuite/libgomp.oacc-fortran/kernels-loop-data-enter-exit-2.f95
! a099f8b746cc1ce623241a11dce9e31f  libgomp/testsuite/libgomp.oacc-fortran/kernels-loop-data-enter-exit.f95
! 6537cde023aee8361791544cac8a025f  libgomp/testsuite/libgomp.oacc-fortran/kernels-loop-data-update.f95
! 174d1d13d26d8b8e6640b19e46c68dd8  libgomp/testsuite/libgomp.oacc-fortran/kernels-loop-data.f95
! 1bea78f54273c982b84abd552dab0d32  libgomp/testsuite/libgomp.oacc-fortran/kernels-loop.f95
! 785c38b0c16b17b83b080bf1b04cc688  libgomp/testsuite/libgomp.oacc-fortran/lib-1.f90
! 43db45ad2e362c84d12d9f23f31f73a0  libgomp/testsuite/libgomp.oacc-fortran/lib-10.f90
! 206167980ba9a0c6c4a12636f1a73096  libgomp/testsuite/libgomp.oacc-fortran/lib-2.f
! 9180381ae0ed225ccbbe9a9db5ddd1ea  libgomp/testsuite/libgomp.oacc-fortran/lib-3.f
! 739c211fc40aca222aa06489e13e70a8  libgomp/testsuite/libgomp.oacc-fortran/lib-32-1.f
! 09502dad0e2cfe66abbe0531cfac3494  libgomp/testsuite/libgomp.oacc-fortran/lib-32-2.f
! a975bf7ac8e332ff727db7c22c514c28  libgomp/testsuite/libgomp.oacc-fortran/lib-4.f90
! 2410532880e58799e24af6c9a3aa90ce  libgomp/testsuite/libgomp.oacc-fortran/lib-5.f90
! b17a9bac2116bc46ac5e479464f84c00  libgomp/testsuite/libgomp.oacc-fortran/lib-6.f90
! 6c2130a015fb31ec8a56158552fee173  libgomp/testsuite/libgomp.oacc-fortran/lib-7.f90
! 341329394e0e33035b866cbd7ae074a3  libgomp/testsuite/libgomp.oacc-fortran/lib-8.f90
! 1e001a3807b10ec33d2a1b8285129a78  libgomp/testsuite/libgomp.oacc-fortran/map-1.f90
! ae033b70890c06bc4d61018a6b37e934  libgomp/testsuite/libgomp.oacc-fortran/nested-function-1.f90
! 30bb0f06fb079c27aec681ed76e93f52  libgomp/testsuite/libgomp.oacc-fortran/nested-function-2.f90
! 56c531e571a2290573ce048025b97b2c  libgomp/testsuite/libgomp.oacc-fortran/nested-function-3.f90
! be2302a8d5347c14276a35144ff39f79  libgomp/testsuite/libgomp.oacc-fortran/non-scalar-data.f90
! 0d710d345b30c53a50ce0ccc1e4d6ed4  libgomp/testsuite/libgomp.oacc-fortran/openacc_version-1.f
! d50762f887bc3a1112235f64360def85  libgomp/testsuite/libgomp.oacc-fortran/openacc_version-2.f90
! 52143be00da5758b98b8954142e63525  libgomp/testsuite/libgomp.oacc-fortran/par-reduction-2-1.f
! 2f05027ceef00ff5758125465bf9a54d  libgomp/testsuite/libgomp.oacc-fortran/par-reduction-2-2.f
! d32062ce97675dc5b8de4e9cee87e1b5  libgomp/testsuite/libgomp.oacc-fortran/parallel-reduction.f90
! 02946ff2e0dab77cd438d7b258da6274  libgomp/testsuite/libgomp.oacc-fortran/pointer-align-1.f90
  67a7c830c313f8fe4aab170bd515c46d  libgomp/testsuite/libgomp.oacc-fortran/pr68813.f90
  e129117b8d34cba8614977fd91ca41b0  libgomp/testsuite/libgomp.oacc-fortran/pr70289.f90
! e337c98326e78abe0796fb3041b1df5c  libgomp/testsuite/libgomp.oacc-fortran/pr70643.f90
! 4efe96d8b96638a6b6e34f91259123b1  libgomp/testsuite/libgomp.oacc-fortran/pr81352.f90
! ae34a0a33c324e692b2da2ef2923edb3  libgomp/testsuite/libgomp.oacc-fortran/pr83920.f90
! 2db69fba10f0ce5a690041399be29d9d  libgomp/testsuite/libgomp.oacc-fortran/pr84028.f90
! 8175cec1f19b14dba021a884c3d90e52  libgomp/testsuite/libgomp.oacc-fortran/pr84955.f90
! 0da4e68cc568259f83f1c02b2e4a6305  libgomp/testsuite/libgomp.oacc-fortran/private-variables.f90
! 874d78bdfeb43b1ab87de9a2b3f54ebc  libgomp/testsuite/libgomp.oacc-fortran/pset-1.f90
! c1752cc12b418380f2f7cdf1cb2350cd  libgomp/testsuite/libgomp.oacc-fortran/reduction-1.f90
! 97e65050d6226da060e95c2fb1985e9d  libgomp/testsuite/libgomp.oacc-fortran/reduction-2.f90
! 49814be3262cf0c6420544b17cdf3934  libgomp/testsuite/libgomp.oacc-fortran/reduction-3.f90
! a9e822ce19d26f5cc1427bb8eccd2aba  libgomp/testsuite/libgomp.oacc-fortran/reduction-4.f90
! 795594aaeafd2a32a8554f35d32740e4  libgomp/testsuite/libgomp.oacc-fortran/reduction-5.f90
! 38888816d7b2973d123af2bbeb464743  libgomp/testsuite/libgomp.oacc-fortran/reduction-6.f90
! 81ca0ae4d4f9726ca7e0b4afc2819973  libgomp/testsuite/libgomp.oacc-fortran/reduction-7.f90
! 2319e6e9fb323e323de49d8e109f5e73  libgomp/testsuite/libgomp.oacc-fortran/reduction-8.f90
! 2ddccd79e8a32a22990bb59958cdf590  libgomp/testsuite/libgomp.oacc-fortran/routine-1.f90
! 180a86fcfcbd20e3283b065ecc7ab6aa  libgomp/testsuite/libgomp.oacc-fortran/routine-2.f90
! 587985ef7e9fc6203f8886fbafacf9f5  libgomp/testsuite/libgomp.oacc-fortran/routine-3.f90
! 576d913af18b8261f765fcf068efc278  libgomp/testsuite/libgomp.oacc-fortran/routine-4.f90
! ee7521ad4aa9a4706a403ccbc2d58f80  libgomp/testsuite/libgomp.oacc-fortran/routine-5.f90
! 9c22090294819b2209bd05c79e5aa014  libgomp/testsuite/libgomp.oacc-fortran/routine-7.f90
! 33ef2e55343edd608f8494ebf9d3be7c  libgomp/testsuite/libgomp.oacc-fortran/routine-9.f90
! 30b58eb5fb7d0736b1668c7122916117  libgomp/testsuite/libgomp.oacc-fortran/stop-1.f
! 800bf43223ada211bac30294146695ed  libgomp/testsuite/libgomp.oacc-fortran/stop-2.f
! 3227f644b4504a62d8ec4a958980006a  libgomp/testsuite/libgomp.oacc-fortran/stop-3.f
! 778b74fe95a18bbc5972e037a1bfc88b  libgomp/testsuite/libgomp.oacc-fortran/subarrays-1.f90
! ca78ca2ee2a528893865330c2b0d05bc  libgomp/testsuite/libgomp.oacc-fortran/subarrays-2.f90
! e8a3245c095430c8ef2413afe2ee4c48  libgomp/testsuite/libgomp.oacc-fortran/update-1.f90
! c67ec2e385386e9cd884ca6e2db70c96  libgomp/work.c
! 7e8d486720b811fa8925035d4222f9f3  libhsail-rt/ChangeLog
  9147b482b39962a71e580b4a8265285e  libhsail-rt/Makefile.am
  a38674477ad0a784b375b84f710eb630  libhsail-rt/Makefile.in
  de97a355fadb5753d182cbcf06b1b33a  libhsail-rt/README
  1ec2f03db6be6448c2332bead0fe62f7  libhsail-rt/aclocal.m4
! ae23b52ed90b765a4cc216e9383c70be  libhsail-rt/configure
  206769d36adc9a98df600c8049e1895b  libhsail-rt/configure.ac
! 303e808895cf4fa18956c470fb15d11f  libhsail-rt/configure.tgt
! 529a3da0ff4187fcc55ba53c7099d276  libhsail-rt/include/internal/fibers.h
! b2c921960b871af2970feac926dbb5f7  libhsail-rt/include/internal/phsa-queue-interface.h
! 3c35889184f3529f84198ba16d72f379  libhsail-rt/include/internal/phsa-rt.h
! a636c4206368e9291f43992faf6c3c02  libhsail-rt/include/internal/workitems.h
! 071e1e9cc81ad6a1709c5923ce864083  libhsail-rt/rt/arithmetic.c
! f88434f8a867ff8d077caeab97cf8e8d  libhsail-rt/rt/atomics.c
! e3b6e7fb939d822c0fa58383b422a086  libhsail-rt/rt/bitstring.c
! f1457bbf7a8fb8203a6077fd210f6c46  libhsail-rt/rt/fbarrier.c
! 3503b60e9239471ba913d6e1e8798efb  libhsail-rt/rt/fibers.c
! 1190f383ceb61f2c6b7864597ab03926  libhsail-rt/rt/fp16.c
! 93d2df517a2902f81eb896240daef030  libhsail-rt/rt/misc.c
! 9a62f5fd75ab06f57b350c156d8e0758  libhsail-rt/rt/multimedia.c
! 2127dbee644d8f9cde800a93d32b412b  libhsail-rt/rt/queue.c
! 5ecb4dc1f942bd95ba306b208be6e125  libhsail-rt/rt/sat_arithmetic.c
! 37a443bca77dcbafb4dc7c9f8e25524d  libhsail-rt/rt/segment.c
! cf2af200b91048d551f109843d246196  libhsail-rt/rt/workitems.c
  ef9f05873915c22cae79ef5545355353  libhsail-rt/target-config.h.in
  99c2e5e712b990ee07be10f53e41f3fb  libiberty/.gitignore
  a916467b91076e631dd8edb7424769c7  libiberty/COPYING.LIB
! 894e2488a1b7095386d29768a2e1098a  libiberty/ChangeLog
  347c31392973de6a4872d540c1718dc1  libiberty/ChangeLog.jit
! b7d09397fa5854702176b44d5620224c  libiberty/Makefile.in
  c68dbf7834af4281ebd84caa3fd54680  libiberty/README
! a58f65741fad672a1f1691b497071fac  libiberty/_doprnt.c
  22b53dd8b990133515799dffbda44c8c  libiberty/aclocal.m4
  e60c2e7c5dcdd19510066c13f1a527d3  libiberty/alloca.c
! 34ed16b3da9ea85f7b473dda305eaee8  libiberty/argv.c
! b121198aef8f193bc4cc32e415646704  libiberty/asprintf.c
  a16ea056b95fd70c21333db132da14ff  libiberty/at-file.texi
  c34119797a13e71989722851c14b711b  libiberty/atexit.c
  ab8d4cd68aa4892e2318d2c71864cc56  libiberty/basename.c
*************** a707d2e5daa09d204d4441e8713048ca  libibe
*** 65101,65329 ****
  76888d9a6ed315d1e12029016d96672e  libiberty/bsearch.c
  4a0acb9356a52f3bcfd67efa26997b58  libiberty/bzero.c
  5bd055836a440051d7c561a9f591ecbb  libiberty/calloc.c
! af6cb50ec134b9bd7cee888e89677fed  libiberty/choose-temp.c
! d86e1ae7310d5aade321dc4a970495eb  libiberty/clock.c
! 25824d923241b7abcf1f790188b316df  libiberty/concat.c
  83565a31c7f296b3013daf383cd03ee9  libiberty/config.h-vms
! bf0f2dfc74a5f7f8e2e327a94fae4094  libiberty/config.in
  4004fdcde347fda58406b4b84a995c66  libiberty/config/mh-aix
  7b65854f594c84e80295173de277b3dc  libiberty/config/mh-cxux7
  044204f5b4bcac5eae2face0602129ae  libiberty/config/mh-fbsd21
  904bdcd9daf97fa55a9ca8901ffe7435  libiberty/config/mh-openedition
  38e76da568ab25260754fdb9d5080513  libiberty/config/mh-windows
! 150b601eae2edc2a9f445c461d72ae4e  libiberty/configure
! f91c2103a45bf1213aab8ac6a416175c  libiberty/configure.ac
  5824bd0f9be9f4fa74bb3bdc7fd9431c  libiberty/configure.com
! 804a47fa52858c936863af74ca4308ca  libiberty/copying-lib.texi
  fe053283d3559af3ec5cac45f8ead009  libiberty/copysign.c
! 8aad2cfd0a53549d6278cb6b2ee386b3  libiberty/cp-demangle.c
! 139b7ec23e10704151a6e8140bd77e6d  libiberty/cp-demangle.h
! 033583903a11c15faf9c155b153fa5d9  libiberty/cp-demint.c
! 2a16e5c4b0a9c86a7a237a91dadf1786  libiberty/cplus-dem.c
! 7123dd9dfedd6ce21e40ba49089d14ec  libiberty/crc32.c
! d0e47f4b03d1ae948aef8f9bf26db8b4  libiberty/d-demangle.c
! a3f202602beef853a3137bddf194e3e6  libiberty/dwarfnames.c
! c467af6dc5654bd53bb21db43f010f6b  libiberty/dyn-string.c
! 8235c99d66122f9c21e3786379852441  libiberty/fdmatch.c
  0c2635175b975823b40980974dfc2110  libiberty/ffs.c
! 0ecd8738284ae4834ea6499ed931002c  libiberty/fibheap.c
! 9316fbebb4ceb88e073f1dd841f646ba  libiberty/filename_cmp.c
! 7955b89b43fe7da94a1a6eb30a511e76  libiberty/floatformat.c
! 197abddb63692e0a1d0f2146709c32d9  libiberty/fnmatch.c
  145debe2f28f470878f95b1255f5537c  libiberty/fnmatch.txh
! 40469b818362e7ca1e14d95fbae973b4  libiberty/fopen_unlocked.c
  7819c93798ad282c557f952dbc399b57  libiberty/functions.texi
! a26fa6d36a2a6c06a8387a3f8ad09e1c  libiberty/gather-docs
  754c5ef42440c5d1b62146174a6636e4  libiberty/getcwd.c
! 890a57f9ba10f2e58693454abf98c0f6  libiberty/getopt.c
! 8ca4bf9e73f2270231c8c37cc57dc4d5  libiberty/getopt1.c
  bb0043d92c716691cc17b80c845c336b  libiberty/getpagesize.c
  5e520e600636a692f52e62dcfb01921c  libiberty/getpwd.c
! 6b57a97fb9d540c29ba9fc375fd02242  libiberty/getruntime.c
  0c70ad1e35bb090b52ed593865025741  libiberty/gettimeofday.c
! 1ce6b9891fb486f2544d21270a195ffe  libiberty/hashtab.c
! e2ba46101e00a8ec0efe347746fb67e4  libiberty/hex.c
  4d485e7735be430b22aea0abb4938e26  libiberty/index.c
  9d0471286f21d9027bbf1b7c67b87856  libiberty/insque.c
! c55a58afba3c7da4b14d7ed57cf288e3  libiberty/lbasename.c
! a4f2fc2102958a9e642580a0cd7dc0df  libiberty/libiberty.texi
! 68bfd44ce250b20fab1308eee3dc8f31  libiberty/lrealpath.c
! 5bf046c61e23a31c5a9c89178b4b0bbe  libiberty/maint-tool
! 13e1ad9800566642f3738aeaca16fa0e  libiberty/make-relative-prefix.c
! e1b309fce46287631ac4b10f34be06e1  libiberty/make-temp-file.c
  80367d734a974bd32e9ebc370dedd2e7  libiberty/makefile.vms
! 116ba5600e20aa887878a5fb8e23b33e  libiberty/md5.c
  de9bd20436bf2cb64d8c374c110ce315  libiberty/memchr.c
  33320d312ab390ca0eb5c43c9e349d57  libiberty/memcmp.c
  c90c2f09bdcbd65b4732a4be25a56d12  libiberty/memcpy.c
! 972222f69e7dcd4186532d73b70944f6  libiberty/memmem.c
  99bfeaeb76e8e725dd8766f33810ccb1  libiberty/memmove.c
! 6bde6010eac7daa17f7b7fb9301cb0fb  libiberty/mempcpy.c
  c44adc5ac09bdc782a8e13086ffa9367  libiberty/memset.c
! 820f0b9b9413ca9ae3ad555ebb182319  libiberty/mkstemps.c
  7897e43bedd2def4beb6eb73003efa68  libiberty/msdos.c
! 82950002575ceab0b1de6d4504f891f4  libiberty/objalloc.c
! 53b8c20755ed48867b0b158f2544d119  libiberty/obstack.c
  26ef02d458c958c1599de12b02c559dc  libiberty/obstacks.texi
! c0f7cc7e24d64b32a77612eb89d20435  libiberty/partition.c
! 90e25d0066914b58b3958e06ee8380b0  libiberty/pex-common.c
! d5684756d1f2e00aff88354b21b26a83  libiberty/pex-common.h
! 27dda442f6d4175237264a7a2f948731  libiberty/pex-djgpp.c
! 0ae1c1717a86c0146b1eec0fba520363  libiberty/pex-msdos.c
! 79ffc6a93973fd7199abbebe0c20d8d6  libiberty/pex-one.c
! 2e8b8a49f857d2792faae50907b523c9  libiberty/pex-unix.c
! 0b27e2c6cf9500f1878ca088c81a508a  libiberty/pex-win32.c
! 9511906197c137211ef2ad8ab7aea9d0  libiberty/pexecute.c
  a6b1581efa83a4072727b38d6fef4230  libiberty/pexecute.txh
! 52e329df2312235521d638b2e0b05919  libiberty/physmem.c
! b6a8e7249b375751e38228a8de711ed8  libiberty/putenv.c
  94f22680349b4ae73ad658495d2eb542  libiberty/random.c
! cbf8d674b84dd9edd850384590309d22  libiberty/regex.c
  24eab3d83825c3be13549dc62b6d63d6  libiberty/rename.c
  74850488731148a9c9f410042144f37d  libiberty/rindex.c
! b1b130fe4d3f33babb3ac3fc0b44abf8  libiberty/rust-demangle.c
! cba3a68235b9b0c878c5480b569483cd  libiberty/safe-ctype.c
! 74ebb922e9178a4a6c746fc4244d4974  libiberty/setenv.c
! c9b285b097b274999434fccf12d3dfc0  libiberty/setproctitle.c
! f6765318368cab39cc79c18f62fa33e9  libiberty/sha1.c
  284bb7a096480b355b75c337086220a2  libiberty/sigsetmask.c
! 2763235b9bd9c1668e1e0d33aff2a9ad  libiberty/simple-object-coff.c
! 548a3abc3aada0669844c73c5dd81a43  libiberty/simple-object-common.h
! 0546f7eb030a4e020eb090d2654f40d3  libiberty/simple-object-elf.c
! 71e5a45dff3b38310e4589e7632e129b  libiberty/simple-object-mach-o.c
! 641fa953d98254c3ce582eb2751c02a9  libiberty/simple-object-xcoff.c
! 7775c4c6cb8717ea02fe1ff30b592efd  libiberty/simple-object.c
  4863a11e04a2021af582edf86f156954  libiberty/simple-object.txh
! 6e139464436ac047cce1d1d2faa8d3ea  libiberty/snprintf.c
! 55b9ba03f1ba7cadc8582556b8754eaf  libiberty/sort.c
! 8cfaec996466b75071839bdb56d5aa73  libiberty/spaces.c
! d291f043255f14a6d1f4dd40eb78e17e  libiberty/splay-tree.c
! dcab9ce997b7503cd0ca552c701cd68a  libiberty/stack-limit.c
! fd2d265811c4b9df11063b5077f93595  libiberty/stpcpy.c
! a8e1b9017094e205d18cdc2d66b4a9d9  libiberty/stpncpy.c
  0c900e9180d750a26ac0ddb237151832  libiberty/strcasecmp.c
  13cce636dd9882e42c9fc5d607351f4f  libiberty/strchr.c
  9f681e91439ac44c9df8e1b1deef33b5  libiberty/strdup.c
  119848dbde9f72d500142a4a65149a9f  libiberty/strerror.c
  2d414e20c053293f373a5306192db8f5  libiberty/strncasecmp.c
  cc534c2ea00ea0b5e49ba8f61c6e467d  libiberty/strncmp.c
! 927c7b5eaae4c61b825d7d6e2972d1c1  libiberty/strndup.c
  fd1435a5be24d2ed84909540998dd5d7  libiberty/strnlen.c
  5b0eb0000c746fc4c1854f00bb80b53d  libiberty/strrchr.c
  f214096086d1747033efa505022dd89c  libiberty/strsignal.c
  e2f3721273c7ef1ab0194aad78ffa3aa  libiberty/strstr.c
! 848cb13c1fce50e96fc2808183795355  libiberty/strtod.c
  c9bd3841bbde6d8ae680f62523f00ab0  libiberty/strtol.c
  9968bbb75dc08ce768389912954f4348  libiberty/strtoll.c
  26196a9a92fae743a06d65f0e081084b  libiberty/strtoul.c
  d132d24f15fe05fe3614e69d6dbc65aa  libiberty/strtoull.c
! 7f2e7b2eb3dd780c3e6c6029791596a6  libiberty/strverscmp.c
! 6e90cc466ab7d7ad40816ccc0f350d1a  libiberty/testsuite/Makefile.in
! 69dd92f0372ec3a77e992bb9318dbdac  libiberty/testsuite/d-demangle-expected
! e4b81282bebe5e27b5577f1c9921845e  libiberty/testsuite/demangle-expected
! 7646b648e377bb32468bcdc9095008f8  libiberty/testsuite/demangler-fuzzer.c
  3b244903adc10042e540d053c3585245  libiberty/testsuite/rust-demangle-expected
! ad3f2fc6ba90397c70fce3b4010cb4df  libiberty/testsuite/test-demangle.c
! e60e531e1c255b20c3f3f69ffb4a3167  libiberty/testsuite/test-expandargv.c
! 820a31066f47674317cc9744d413850a  libiberty/testsuite/test-pexecute.c
! c545619a42b4f34c57776ecf8d5690bc  libiberty/testsuite/test-strtol.c
! 8c82270cb90c8d35d7032a78af9bb962  libiberty/timeval-utils.c
  6b513119d8c36af928821e8ec24265d7  libiberty/tmpnam.c
! 53f583298507162847f5a3c74a171f0d  libiberty/unlink-if-ordinary.c
! 8b54922b04da1288c0d5ba4af4a0ee75  libiberty/vasprintf.c
  8e71982d77e91c0e3c57ca86c8a1b548  libiberty/vfork.c
! 871a07b63c86764ad6119e039f39c4bf  libiberty/vfprintf.c
! c7c5581b0dd73f0bbb1bc3deccfa6fc4  libiberty/vprintf-support.c
! bca3805905534834b878fcdf7c865f42  libiberty/vprintf-support.h
  28af0a1bf222ed2a5a87d9e170ef4a46  libiberty/vprintf.c
! b35251b5da1e31cad9f1fd12256858b6  libiberty/vsnprintf.c
! f275cadbe568d8607e724fad594a71af  libiberty/vsprintf.c
! 9c22926d0b260822786460b98e517ad8  libiberty/waitpid.c
! cecf80a9e15965091c31d26754f8f311  libiberty/xasprintf.c
  f32b581d10bcc500277b6f4b4f923a4e  libiberty/xatexit.c
! 68851c73764eca54c4c45e183adbe522  libiberty/xexit.c
! fc069384773ed08a22e4ce0482e44614  libiberty/xmalloc.c
  b2c289eb14e9197dcad172f3acba12b7  libiberty/xmemdup.c
  4746095b1b67693ab6e78ed72ead1235  libiberty/xstrdup.c
  6f774a92661ca4a067f1691a7925524b  libiberty/xstrerror.c
! 1fba1d2c7e578bb603294d1d38b15e6e  libiberty/xstrndup.c
! 5b461b93e0d400569656cf150a9458e8  libiberty/xvasprintf.c
! bb27b02e35ce010cf8077d7f3b354eac  libitm/ChangeLog
  f0841cbe677cca223ebc3864c6840fb3  libitm/Makefile.am
! e134b04c0dc26da6f5a6948763a388a8  libitm/Makefile.in
! 02cde8e370b6e6440c462cbdb510ad9c  libitm/aatree.cc
! 5ecf9d82f14f46dc9d3d13e65bc3861f  libitm/aatree.h
! 49944b8167fdf75dff0b496cc1009f5f  libitm/acinclude.m4
  13e20c1ad7bc5aa75d25d69ad92b2036  libitm/aclocal.m4
! 6a86821382ba32ac1f95ae75d41edb51  libitm/alloc.cc
! aec8c7bd1a00210d65a5744280245773  libitm/alloc_c.cc
! 967855bc48011041b24c6b56612ebd02  libitm/alloc_cpp.cc
! e1f52d96231250b502574d87ddd29e44  libitm/barrier.cc
! 033e08bb423f84eeeee700a71f6a01d8  libitm/beginend.cc
! 5f9951f0251d833c70fbc80919c6de91  libitm/clone.cc
! d7459b9a1f617cedbc1f46f1666aba26  libitm/common.h
  05ea82fd12c7b4a030b6310b862ff47d  libitm/config.h.in
! 05ba49b423fa7874b102e3150bc875fa  libitm/config/aarch64/sjlj.S
! 0d2ff39871ef8327f0c795c7f0b2a5f2  libitm/config/aarch64/target.h
! 445398062af63c785e6e1a96fa393929  libitm/config/alpha/sjlj.S
! 2d21400478378a0146fb541344f96485  libitm/config/alpha/target.h
! eb17ef4dfda46665986688f5e7906021  libitm/config/arm/hwcap.cc
! 99f051bc2745e75705ea714cf64d6f55  libitm/config/arm/hwcap.h
! 05ff94e93f365b22658678c6b38c6ef6  libitm/config/arm/sjlj.S
! b1e1aa896bc2dbe03e4f4690f2d851a9  libitm/config/arm/target.h
! 02c61424ff141de9eb1bd01d8e697498  libitm/config/generic/asmcfi.h
! 4e438992e607c992811b795139c69188  libitm/config/generic/tls.cc
! 27302651c8717040262b84d719eb75b9  libitm/config/generic/tls.h
! af040527312ecb7e30f61a0cdd4ab1cd  libitm/config/linux/alpha/futex_bits.h
! 5f244a5e26b4704f2cf73f04816d86de  libitm/config/linux/futex.cc
! 0a624d051b26a509945a484534ec1556  libitm/config/linux/futex.h
! d8261e11a6d0cff16a5c2db4b72ed9be  libitm/config/linux/futex_bits.h
! f4552b888140999b82dad7a4a874770f  libitm/config/linux/powerpc/futex_bits.h
! 9a8ebad33d03053002de718959fa06a2  libitm/config/linux/rwlock.cc
! bfe841320843e404c755473ec8a5d444  libitm/config/linux/rwlock.h
! e36bf0ffd0bba5507858af65eeab05a3  libitm/config/linux/sh/futex_bits.h
! 203b3a827b1fda211b292ea6d0bab81b  libitm/config/linux/sparc/futex_bits.h
! 54d8377a9e0cfd3138e1991c9ce76431  libitm/config/linux/x86/futex_bits.h
! f67878f396134c91a4c632f1be972ce9  libitm/config/linux/x86/tls.h
! efbdb4f85982b32e8e582c7c497e8d76  libitm/config/posix/rwlock.cc
! 5cecaaca1be7dc9b55d6ae92bb98cb42  libitm/config/posix/rwlock.h
! 8c9c5d864fc9222b47a384c7f5dbf42d  libitm/config/powerpc/sjlj.S
! fe0057e50840b9bd142b6c7c449177d3  libitm/config/powerpc/target.h
! e6dd7887eca324b33ce352a484dcb529  libitm/config/s390/sjlj.S
! febc41fa9e5ca40ebce8f814dea87987  libitm/config/s390/target.h
! 67d6fd1fc2c51312b0d9976cab5a1c5c  libitm/config/sh/sjlj.S
! 91a7e4dba153bf2da8cd626b8d7f941e  libitm/config/sh/target.h
! dc45f4a866a45871133f3247e618bc3e  libitm/config/sparc/sjlj.S
! efede9a1ebe50031d7f84845f28058b5  libitm/config/sparc/target.h
! 949cc8baa8589baf850572665397478b  libitm/config/x86/sjlj.S
! 50ecb5447fe6c1275000cda3b637ee5e  libitm/config/x86/target.h
! a41034fe6f203dabe72055742970309f  libitm/config/x86/x86_avx.cc
! 8b0ebf78cab403f6b5c26b32c207c573  libitm/config/x86/x86_sse.cc
! 0d70b37bc93f5ca6d4ba51ac514c66ca  libitm/configure
! 0289a6a89bc21802c5656033944d593d  libitm/configure.ac
! a39098851bd0eacbe1812295b185de9b  libitm/configure.tgt
! cdbde62e85c45821e7d0e7542ea9e4b5  libitm/containers.h
! 92c8aa2e676e6aad3b45ee3c79ce4f48  libitm/dispatch.h
! ce09bec8584efd1948a6896224aaff53  libitm/eh_cpp.cc
! ced7d40fe3094446e51c1b8cf40d0f0a  libitm/libitm.h
! 80e0c7a784e5896fcdf2a039c2740864  libitm/libitm.info
  0c43820b921ecdbe9d98f068100e716a  libitm/libitm.map
  ea467d7117853d139bb288ab75261139  libitm/libitm.spec.in
! dc401c868192cd583b6851a8f33879d8  libitm/libitm.texi
! 46ba28bc51c49b1089c333af47169b68  libitm/libitm_i.h
! e1bd961a33da50de0026638eb7e4c6cd  libitm/local.cc
! a06e57078e6ab2be10762749811f4617  libitm/local_atomic
! 1b026dfd4fdfba09e65e195230b26ba9  libitm/method-gl.cc
! d634c6fbd7021a77442cc0b5312604b1  libitm/method-ml.cc
! 64c703b24e5fe01eb0bc15aabaaa96da  libitm/method-serial.cc
! 9fe7e07386583047bcd05aac65518502  libitm/query.cc
! 1b0c84a180d55f1998ae054dd0271180  libitm/retry.cc
  c11bb77f9d8171fb781ba38a102c5f70  libitm/testsuite/Makefile.am
! 5940935b1c5d1f0609b20e9a034a3aac  libitm/testsuite/Makefile.in
! c950270407e1c681d87e5373b62b33d1  libitm/testsuite/config/default.exp
  9ab92f2310c96121666b692e1660d24f  libitm/testsuite/lib/libitm-dg.exp
! 190ed9bca6ddec0995d9b14754e356d2  libitm/testsuite/lib/libitm.exp
! 9ab702455a8ce14898f3932d410b86ed  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
--- 69913,70141 ----
  76888d9a6ed315d1e12029016d96672e  libiberty/bsearch.c
  4a0acb9356a52f3bcfd67efa26997b58  libiberty/bzero.c
  5bd055836a440051d7c561a9f591ecbb  libiberty/calloc.c
! 3b03c76fc798fb659a5706f8bf2ee77d  libiberty/choose-temp.c
! 041e06dffa0689d356d40720c12afdad  libiberty/clock.c
! 9d98c584c82453cdb9645961c0fccb73  libiberty/concat.c
  83565a31c7f296b3013daf383cd03ee9  libiberty/config.h-vms
! c7634c63a4c955b11e78d33b6d14879d  libiberty/config.in
  4004fdcde347fda58406b4b84a995c66  libiberty/config/mh-aix
  7b65854f594c84e80295173de277b3dc  libiberty/config/mh-cxux7
  044204f5b4bcac5eae2face0602129ae  libiberty/config/mh-fbsd21
  904bdcd9daf97fa55a9ca8901ffe7435  libiberty/config/mh-openedition
  38e76da568ab25260754fdb9d5080513  libiberty/config/mh-windows
! a90e022d51c269731d12f73dcb6a4a56  libiberty/configure
! 24fd8f6498981c1eea47af2bcb1dfa3e  libiberty/configure.ac
  5824bd0f9be9f4fa74bb3bdc7fd9431c  libiberty/configure.com
! 8dedc06151f688e1ffbcf908a5c2edfd  libiberty/copying-lib.texi
  fe053283d3559af3ec5cac45f8ead009  libiberty/copysign.c
! f67d7032f04fc989ca93d25264ffad0a  libiberty/cp-demangle.c
! 11864447c16f8f70822715cacb3794c0  libiberty/cp-demangle.h
! 98fa3789846dfed0a96ee27139933d59  libiberty/cp-demint.c
! 94dd78e5aa05771ffb160785f478fd1f  libiberty/cplus-dem.c
! 6c04bbc4330ed6dc693974f250685488  libiberty/crc32.c
! 730fb7f9807f66c744ee2af2c610908a  libiberty/d-demangle.c
! 6488ff529d0dc94dc35e576b8d6456ce  libiberty/dwarfnames.c
! c6392e19a949e0308d43a4b0e9e5494b  libiberty/dyn-string.c
! d59891d7b2916f4c5ee3646de58af5ee  libiberty/fdmatch.c
  0c2635175b975823b40980974dfc2110  libiberty/ffs.c
! 228a4ee12b899689075b0e861be7751d  libiberty/fibheap.c
! 69119d7deb62961afd7c5aee2ed8cbd0  libiberty/filename_cmp.c
! 2dc1b181a823e60380839a69e9b912d4  libiberty/floatformat.c
! bf5793cb61560831827c2c7d76ff3c32  libiberty/fnmatch.c
  145debe2f28f470878f95b1255f5537c  libiberty/fnmatch.txh
! f38c7a55cfce9d6eceb535a480996bba  libiberty/fopen_unlocked.c
  7819c93798ad282c557f952dbc399b57  libiberty/functions.texi
! 11d8ab5e472cbc68319ccdab19992357  libiberty/gather-docs
  754c5ef42440c5d1b62146174a6636e4  libiberty/getcwd.c
! da71851739992187e85ab4688b941bfe  libiberty/getopt.c
! fb2e601fa39c6dfb09b81a443f17576e  libiberty/getopt1.c
  bb0043d92c716691cc17b80c845c336b  libiberty/getpagesize.c
  5e520e600636a692f52e62dcfb01921c  libiberty/getpwd.c
! e628e20805b2bde37e67071817a037f5  libiberty/getruntime.c
  0c70ad1e35bb090b52ed593865025741  libiberty/gettimeofday.c
! 9eeed6cad736847f55b57b2f5ab0656f  libiberty/hashtab.c
! cc150256db97ce3c21a407eae5d9bd94  libiberty/hex.c
  4d485e7735be430b22aea0abb4938e26  libiberty/index.c
  9d0471286f21d9027bbf1b7c67b87856  libiberty/insque.c
! 4f52487d93bad0720e1cb8525d80077f  libiberty/lbasename.c
! 4eb2a6cec877fdbf8124ed49112982ae  libiberty/libiberty.texi
! 0880c3dfc3d133592d55cff413959243  libiberty/lrealpath.c
! 3de88316926923447a3248f8a2a083ac  libiberty/maint-tool
! 500574c070a25b7824b4e757f398d1e5  libiberty/make-relative-prefix.c
! 58ba1b727877223725a8bee4b4dea722  libiberty/make-temp-file.c
  80367d734a974bd32e9ebc370dedd2e7  libiberty/makefile.vms
! 7b9423664071cd6a7adeddb9b60132ca  libiberty/md5.c
  de9bd20436bf2cb64d8c374c110ce315  libiberty/memchr.c
  33320d312ab390ca0eb5c43c9e349d57  libiberty/memcmp.c
  c90c2f09bdcbd65b4732a4be25a56d12  libiberty/memcpy.c
! 21e996a7d3ef984eee623ff111970530  libiberty/memmem.c
  99bfeaeb76e8e725dd8766f33810ccb1  libiberty/memmove.c
! a46a76c17e0c04568173afdecc54fa25  libiberty/mempcpy.c
  c44adc5ac09bdc782a8e13086ffa9367  libiberty/memset.c
! d25804f5f4283de48626313daa38e6e3  libiberty/mkstemps.c
  7897e43bedd2def4beb6eb73003efa68  libiberty/msdos.c
! 5dc38f391360e671cc1948034a62c57c  libiberty/objalloc.c
! 3bdffbf7d47e88a8dfa07c4d441b2749  libiberty/obstack.c
  26ef02d458c958c1599de12b02c559dc  libiberty/obstacks.texi
! de3dbe84ab3a48b4a850d1f8b3d07f0c  libiberty/partition.c
! 2b7ce82877fe6ae1b74ddaafc3c7ff12  libiberty/pex-common.c
! 84d044c8cf3fc04731bb8e84d18d3ea2  libiberty/pex-common.h
! ebdf2ce2ccdac2644e2ef28bc839fabd  libiberty/pex-djgpp.c
! d17d27a1b61ed0f2ec0ef977063d7cd9  libiberty/pex-msdos.c
! b38f10e738ab310d6353246cc358a7f4  libiberty/pex-one.c
! 36698565d78384506bb008304475185b  libiberty/pex-unix.c
! 8a9f84e5dc8c69a3ffe4ff46b792acb6  libiberty/pex-win32.c
! 756cff47aef33d4746f97193335feff6  libiberty/pexecute.c
  a6b1581efa83a4072727b38d6fef4230  libiberty/pexecute.txh
! f0c5c7648dff9df3da12a6217017d70f  libiberty/physmem.c
! 0f3059fd87dd38c7cf9c02b1151f75b0  libiberty/putenv.c
  94f22680349b4ae73ad658495d2eb542  libiberty/random.c
! d2fbd69c4dbaecd5d4ebdb169daee6a8  libiberty/regex.c
  24eab3d83825c3be13549dc62b6d63d6  libiberty/rename.c
  74850488731148a9c9f410042144f37d  libiberty/rindex.c
! 505fd97ca6e1ff4057932b9e32315839  libiberty/rust-demangle.c
! 948c1e37e280c7bad06cfee6a984e3be  libiberty/safe-ctype.c
! 07706840a0062149b5da57dd18e8d5ee  libiberty/setenv.c
! 53dec3effae3beb8dd0e155ec15676f5  libiberty/setproctitle.c
! 91f59459d862cbf9d8b5f3b27634c56f  libiberty/sha1.c
  284bb7a096480b355b75c337086220a2  libiberty/sigsetmask.c
! 82761d9f6573203298572c35ae6a8d92  libiberty/simple-object-coff.c
! 86c2b58dcbca0ddaa516e65b95e84ce1  libiberty/simple-object-common.h
! 4ef74c7498317582fb00b0a1a304177a  libiberty/simple-object-elf.c
! 93dd698684effc8a4f33cd522941397d  libiberty/simple-object-mach-o.c
! 8b384697dd6c0500a48a8deda57ab756  libiberty/simple-object-xcoff.c
! 5cd499062517758a0d2b57fa2facace1  libiberty/simple-object.c
  4863a11e04a2021af582edf86f156954  libiberty/simple-object.txh
! 8bad1af5ccbd45cc61eb7b5975628ef8  libiberty/snprintf.c
! 2e266aca0c963a610ee8fb755a10ea24  libiberty/sort.c
! 87cae2a3efd96b7d0087b18aea3afc03  libiberty/spaces.c
! 7ec5520c8cb517ca400d6efb1de408bd  libiberty/splay-tree.c
! 77f2f5d9fa2233d466ba7fc45fcd9083  libiberty/stack-limit.c
! dea1446f50809ffe9ff5cc54ac14e2b9  libiberty/stpcpy.c
! 849d9513538cd981a02b9de0cec9b61b  libiberty/stpncpy.c
  0c900e9180d750a26ac0ddb237151832  libiberty/strcasecmp.c
  13cce636dd9882e42c9fc5d607351f4f  libiberty/strchr.c
  9f681e91439ac44c9df8e1b1deef33b5  libiberty/strdup.c
  119848dbde9f72d500142a4a65149a9f  libiberty/strerror.c
  2d414e20c053293f373a5306192db8f5  libiberty/strncasecmp.c
  cc534c2ea00ea0b5e49ba8f61c6e467d  libiberty/strncmp.c
! 19daeb7449f85dba32b786c7415fc907  libiberty/strndup.c
  fd1435a5be24d2ed84909540998dd5d7  libiberty/strnlen.c
  5b0eb0000c746fc4c1854f00bb80b53d  libiberty/strrchr.c
  f214096086d1747033efa505022dd89c  libiberty/strsignal.c
  e2f3721273c7ef1ab0194aad78ffa3aa  libiberty/strstr.c
! 1b37c8633e41fac1a83bbb3ac439b019  libiberty/strtod.c
  c9bd3841bbde6d8ae680f62523f00ab0  libiberty/strtol.c
  9968bbb75dc08ce768389912954f4348  libiberty/strtoll.c
  26196a9a92fae743a06d65f0e081084b  libiberty/strtoul.c
  d132d24f15fe05fe3614e69d6dbc65aa  libiberty/strtoull.c
! d6a0ef902064753b0e3fb1b5a03c8080  libiberty/strverscmp.c
! 417e0c6793537da5af247a05f1cadc2c  libiberty/testsuite/Makefile.in
! 23e6b75e25b9f0a78145bdd1ba619ad4  libiberty/testsuite/d-demangle-expected
! 710bbf2c2ed08face6bb245818af868a  libiberty/testsuite/demangle-expected
! 1d6848da03f5d4d081127d0442b3e640  libiberty/testsuite/demangler-fuzzer.c
  3b244903adc10042e540d053c3585245  libiberty/testsuite/rust-demangle-expected
! 6c2ad31b93adab242093d0a3c8641781  libiberty/testsuite/test-demangle.c
! b5eac74df2e219ba541f415eafdab57a  libiberty/testsuite/test-expandargv.c
! baadd4f79039c8b809612968f6f9967d  libiberty/testsuite/test-pexecute.c
! ebecea1eb84685689a344a2bedc51cee  libiberty/testsuite/test-strtol.c
! 46b0cdae0006259912b732ea26087871  libiberty/timeval-utils.c
  6b513119d8c36af928821e8ec24265d7  libiberty/tmpnam.c
! f75800c96e9f5c994ba2d0dde515fad7  libiberty/unlink-if-ordinary.c
! 181bde4bd658ecd078e99110e23d705f  libiberty/vasprintf.c
  8e71982d77e91c0e3c57ca86c8a1b548  libiberty/vfork.c
! cf4ea72da1945d745a75e965546e7cb4  libiberty/vfprintf.c
! 9e3213c6347732d2aea0569dab775439  libiberty/vprintf-support.c
! 1237b27f0199e574f6dc597e6a1b9d71  libiberty/vprintf-support.h
  28af0a1bf222ed2a5a87d9e170ef4a46  libiberty/vprintf.c
! e37df6541b8036c9b7568e204ea1325d  libiberty/vsnprintf.c
! 68f97804775eb5b6f5d6fe54b33f71a1  libiberty/vsprintf.c
! 3b03f409fd38f9d543870f21e6d7f5c8  libiberty/waitpid.c
! 2dcc346a779ff37870b5f2287b6dffe8  libiberty/xasprintf.c
  f32b581d10bcc500277b6f4b4f923a4e  libiberty/xatexit.c
! 467939b47472fb9f92e0c9ff21369e8c  libiberty/xexit.c
! fde99c34c67a40ef057da6fec14a518f  libiberty/xmalloc.c
  b2c289eb14e9197dcad172f3acba12b7  libiberty/xmemdup.c
  4746095b1b67693ab6e78ed72ead1235  libiberty/xstrdup.c
  6f774a92661ca4a067f1691a7925524b  libiberty/xstrerror.c
! 1c473960735644ebe9746b641c8fc08b  libiberty/xstrndup.c
! 5c487ad9b00e5ed38ae0f00fc04f7463  libiberty/xvasprintf.c
! 2731ee8ea3ef2be8d5cf14a197d357fd  libitm/ChangeLog
  f0841cbe677cca223ebc3864c6840fb3  libitm/Makefile.am
! e1255afd6132994f7f06afc4d668acc8  libitm/Makefile.in
! 61fc1a86d6e23c6680a7d504a4f424d3  libitm/aatree.cc
! f486b5a335012871b53ef4dad1b9821a  libitm/aatree.h
! 557c6478ae9bf371adf2962e4ea1b780  libitm/acinclude.m4
  13e20c1ad7bc5aa75d25d69ad92b2036  libitm/aclocal.m4
! 6cb1e160da505fb465c81c61a6b33f4f  libitm/alloc.cc
! 9c0837ac88744caafda2c4c933dfa485  libitm/alloc_c.cc
! 3607953527dd4d9befbe25e3c6926b1c  libitm/alloc_cpp.cc
! f16f68415567d3358e24f311601df140  libitm/barrier.cc
! c7bc9e4180e8f4929821e3c5b2bed613  libitm/beginend.cc
! 7ced261bfed10c89a768245ed47ba429  libitm/clone.cc
! 1987690fd11f4297684c68355f507c48  libitm/common.h
  05ea82fd12c7b4a030b6310b862ff47d  libitm/config.h.in
! be1274a7378cbb00711c43371d6c79f1  libitm/config/aarch64/sjlj.S
! 5a18a8ec2815b47b654381f5c76f9a33  libitm/config/aarch64/target.h
! 273b8cab07eda816fbee0e6f7cc889ee  libitm/config/alpha/sjlj.S
! cbe34b17fa398c5b067e698ea9d546ab  libitm/config/alpha/target.h
! 47e5835f6f5c9c0e11dd091ab46a849c  libitm/config/arm/hwcap.cc
! d50d81db1565c8536fd5af612e2db7f3  libitm/config/arm/hwcap.h
! cd943ab790be413f5f3c8afe979e8221  libitm/config/arm/sjlj.S
! c024e1bef0438d63ba5a211d88ae14c5  libitm/config/arm/target.h
! 72159d004a760dd08373c35920a9b37e  libitm/config/generic/asmcfi.h
! 9a6a8f527f27c0c061a5114ac6783334  libitm/config/generic/tls.cc
! 178907d559910d6da595305aea8855cb  libitm/config/generic/tls.h
! 96d48f255882596add26cbd00140835d  libitm/config/linux/alpha/futex_bits.h
! b19035055b15a7e4268c22b0e37fa92b  libitm/config/linux/futex.cc
! e75f6bedd247be03d0418dfb793db23e  libitm/config/linux/futex.h
! 2f8f6e168c2120a2745b88e064e2b9bd  libitm/config/linux/futex_bits.h
! 1dcfde706d82d03de960c9878e1722de  libitm/config/linux/powerpc/futex_bits.h
! d3e7715e4d34c5c189549f64bf5fb491  libitm/config/linux/rwlock.cc
! 6b5ab07869b20d66b7e12e34b35166c4  libitm/config/linux/rwlock.h
! c02bb785890d2bdb4f1b14e5ab984858  libitm/config/linux/sh/futex_bits.h
! d2816439300b75be2cc721b0d14ebcfd  libitm/config/linux/sparc/futex_bits.h
! 8a02f0467b0d383b820781a7df44f783  libitm/config/linux/x86/futex_bits.h
! 0203352d294821d0df58eda79085cadf  libitm/config/linux/x86/tls.h
! e3e2688e3fa85bb079958bd65822b197  libitm/config/posix/rwlock.cc
! 096b601eee7f5bdf3f603ff0d1d2683f  libitm/config/posix/rwlock.h
! d158bc2daf89b4f087badcf1148937e6  libitm/config/powerpc/sjlj.S
! 23d44d9dafc487dfc1c5379a9d5497b2  libitm/config/powerpc/target.h
! fc8320f2db766eeb3285280bf7e9847d  libitm/config/s390/sjlj.S
! 4e9b2ba8f77bb3ba3bc50bae5687b84f  libitm/config/s390/target.h
! 54af1e24e8c388275cac131330420c7a  libitm/config/sh/sjlj.S
! 93a74d9d8780e66998c35d4c7dc859b6  libitm/config/sh/target.h
! ef804fc5a94e57d0e7cb5304cb1d8b24  libitm/config/sparc/sjlj.S
! 0d89c5d7efa71aba071c7a1a85b94907  libitm/config/sparc/target.h
! eb583c5024ab77771bd3b8a42e65ae54  libitm/config/x86/sjlj.S
! 58131a40d3b1159bb77dc433e98e9767  libitm/config/x86/target.h
! d09eaf5a2f73a38f32b89b762a7d4651  libitm/config/x86/x86_avx.cc
! 45d4471790809b69eb87857a92ce54ad  libitm/config/x86/x86_sse.cc
! 30cfb4ef24519d77b1f40f58aecc9737  libitm/configure
! f2e670fabe89a264b46dc2b919c54d28  libitm/configure.ac
! e53bfbe7b8b29959eb11bfc8f7413194  libitm/configure.tgt
! 403a3fe3aff111e207b04da74437a200  libitm/containers.h
! f7e139b0f365ed074e7a5814cc2c761b  libitm/dispatch.h
! 33ec086fe93326fe0fbef2253a8f8ea8  libitm/eh_cpp.cc
! 878eaa3a92ab06329ac2eddf621e51e9  libitm/libitm.h
! 884c9c4d6b392f24ffd9f491ceefddd3  libitm/libitm.info
  0c43820b921ecdbe9d98f068100e716a  libitm/libitm.map
  ea467d7117853d139bb288ab75261139  libitm/libitm.spec.in
! 3c98cd1fd59b149fd454a3b3aa045db8  libitm/libitm.texi
! 4c02349925b1f6f854cec553e1adb185  libitm/libitm_i.h
! 07cd0c26e15f04cb7e2e2e7815530d49  libitm/local.cc
! 1dbea07d5ff257e94e5790259d5aee15  libitm/local_atomic
! a43ac82e9c1512314c7c9cd40cc9fb0a  libitm/method-gl.cc
! fcca7ea94aa1309db34be532a4c2d9f0  libitm/method-ml.cc
! 722604b565d9dbb9a0c6c0d23ae85992  libitm/method-serial.cc
! d2f96d2a1232d0eb85fe3d969a7c76e5  libitm/query.cc
! c517e1169480756257d97b7320c67623  libitm/retry.cc
  c11bb77f9d8171fb781ba38a102c5f70  libitm/testsuite/Makefile.am
! 8f4ce53fa53c1dfdceb5dce1321e0cbc  libitm/testsuite/Makefile.in
! 13bdde3a503be855576184442e5b6c40  libitm/testsuite/config/default.exp
  9ab92f2310c96121666b692e1660d24f  libitm/testsuite/lib/libitm-dg.exp
! 4854b368024e5c35ffd55f9025177378  libitm/testsuite/lib/libitm.exp
! 82b65e942c22d21e50b199de8a5c3063  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
*** 65349,65441 ****
  838bdb8846eac9161e3ffbe553049f2f  libitm/testsuite/libitm.c/simple-2.c
  7ecc8e520a5c494d159cb7571cca7cdc  libitm/testsuite/libitm.c/stackundo.c
  ef24198422c19f99b0c41be6a16f7081  libitm/testsuite/libitm.c/txrelease.c
! 2fde3d4b9799cb5c947aa18d56b45a58  libitm/useraction.cc
! 800898e382995b27db1e8e5415e383d5  libitm/util.cc
! 054f2c87585baf780a57b81a8250c1b8  libmpx/ChangeLog
  08c39b0de69ded1b0ec0d079e8ffa278  libmpx/Makefile.am
! d0a1d026cd869756809cfc7e163653fb  libmpx/Makefile.in
! 9883ed42b491d8aea83fdde90561cf2a  libmpx/acinclude.m4
  a5204097d1f5d63aef9d3ecc0b1a3be2  libmpx/aclocal.m4
  b2e47c7aa307406dec78315bfdb36c7b  libmpx/config.h.in
! 22d9f8c5a9b9f86cc5121638902716cf  libmpx/configure
! 48c3d9539a5b4a735ae646608572eec1  libmpx/configure.ac
  044a6e8691b62fc372ef1f9e63d55d44  libmpx/configure.tgt
  e7f0343f38d3100338933f8a6382289c  libmpx/libmpx.spec.in
! e89d568aed7b7c6715ed001d90d4af74  libmpx/mpxrt/Makefile.am
! bd4b5972116fa7ae785d66d32d52765d  libmpx/mpxrt/Makefile.in
  0c97a1b5daf9970e5498366b07d5a149  libmpx/mpxrt/libmpx.map
  4fafaa76b25e888f5f7eb161354fbe08  libmpx/mpxrt/libtool-version
  4ee8fd7e48704fd2bb511b9cbc8f3045  libmpx/mpxrt/mpxrt-utils.c
  954b2db3103fc31ebb9332941ee43b45  libmpx/mpxrt/mpxrt-utils.h
  b1f7e289fae56fec6fede250b6afd7e6  libmpx/mpxrt/mpxrt.c
  906b701b60fd56308d5675641e48731f  libmpx/mpxrt/mpxrt.h
! 17ee4d259930d45491769e189e6413a5  libmpx/mpxwrap/Makefile.am
! abb9c0882fb921e70c77607151719c9d  libmpx/mpxwrap/Makefile.in
  e7c62aca341ea472234d7cb0bc4af328  libmpx/mpxwrap/libmpxwrappers.map
  240daa7f37ceeb22e331595ac7363fe8  libmpx/mpxwrap/libtool-version
  84b2ae6cc72d1bc6af32bbf75fdf747b  libmpx/mpxwrap/mpx_wrappers.c
! d144767c8a6c6204d46099102a96b307  libobjc/ChangeLog
! b2cf3adfbdbae80e35d96ff569e9f93a  libobjc/Makefile.in
! ca9308f2e96106ba49c888b75644c31a  libobjc/NXConstStr.m
! 8b730dbe3083b0ce8de23dba63e4345d  libobjc/Object.m
! fa34359682fb25d09d6f4c0222ff9ee8  libobjc/Protocol.m
  d5edaeee0d84e4305368367019952ba7  libobjc/README
  dbf36fc59f8e048201543aead57eb206  libobjc/THREADS
! ab527294c17d4780b0013ef0a205a2e5  libobjc/accessors.m
! 598aff61a0602d6d782eec2310b60565  libobjc/acinclude.m4
! 0ec1f2a6af09115c60c1318bb6c4a915  libobjc/aclocal.m4
! 437c9c67f1758ffe6de5ca7534616fa0  libobjc/class.c
  972b0cb64be0b600253cb529cf6ed8ed  libobjc/config.h.in
! f47b754f73c9b6d3b1c0a5428bba87a8  libobjc/configure
! 68a53799fe5900c3ed6ad007e1ad3dd0  libobjc/configure.ac
! a2f88e3a053d61114f441d4ab1b13c54  libobjc/encoding.c
! 87f0c11d78279480a9d04c6dd20ca13e  libobjc/error.c
! 5123a55d954d46d7c41b69f63d38dd5d  libobjc/exception.c
! 62341f85c87f905156d265f507e8bb12  libobjc/gc.c
! f73882062792202d15bfbbc7a29ea5b5  libobjc/hash.c
! 8dc6f606f15f4e16717e04555ff4653e  libobjc/init.c
! 39147d39c44f2bf30c36eee5d8cf8b7d  libobjc/ivars.c
! a99ec0a067f0e6f8a62cc96c454c8ef9  libobjc/libobjc.def
! d6c883b8ee8b0d45e39110b5533d6f97  libobjc/linking.m
! 09f66389b013047292a54f00f89ec7d0  libobjc/memory.c
! 82473ed6e8d7238bf0579cc3725172f5  libobjc/methods.c
! d88a6aab18b326d828bed31d536b99ab  libobjc/nil_method.c
! 46fb282984cc28c26c50e2cbb577f531  libobjc/objc-foreach.c
  4758c47369f62786c0dcdf45f3397ff7  libobjc/objc-private/README
! 8d941dec196eaddef9e1503a44b3518e  libobjc/objc-private/accessors.h
! 8d5eb3d2edeb1c9ffd1e43134f6fdbc7  libobjc/objc-private/common.h
! 3efd26739a4c7705cc1b58b4ec9dabc7  libobjc/objc-private/error.h
! 0d5fb1a1bc8a55678b7cf0212d3626ec  libobjc/objc-private/hash.h
! dc958fd884b55bfb60637ad0a877c828  libobjc/objc-private/module-abi-8.h
! 5b8337f39a8ee4010698a0f76b9c6837  libobjc/objc-private/objc-list.h
! bb5f20223f363ed30f8edfba61516ed8  libobjc/objc-private/objc-sync.h
! e24a8fbd574306c32de408ed2742b9db  libobjc/objc-private/protocols.h
! fb808baa6ac4f85ff2d2317f0ab41309  libobjc/objc-private/runtime.h
! db04728f0daa133291c13dfb590db42a  libobjc/objc-private/sarray.h
! 97344ebe2486dfe537cf3a0c4a84aa28  libobjc/objc-private/selector.h
! b323211531782b93ebeffd4564cdf7eb  libobjc/objc-sync.c
! aef7a10c63bcf72126e334f262c46907  libobjc/objc/NXConstStr.h
! 39caf6e4ea5fc6546f249fd318b2d290  libobjc/objc/Object.h
! 6586607a2c336fde5c942f2c9bd6656c  libobjc/objc/Protocol.h
  6a0d7c25fa8ddefde53bbaf36eea5bdf  libobjc/objc/README
! 9d5bee651f72a756e97ec6910802bff7  libobjc/objc/message.h
! 53fbb39deb2eb273effc9fffd9c31350  libobjc/objc/objc-decls.h
! c81628de195e85c10ab112309d1a2b5d  libobjc/objc/objc-exception.h
! 4bcf4adb79cc3d261c035015f405377e  libobjc/objc/objc-sync.h
! 35e0c2aa77c4632bf5652a0bc3f17825  libobjc/objc/objc.h
! 710eb07814f2397ffc5c1a911b65070f  libobjc/objc/runtime.h
! 552bd5db9193fc9e0a2721fa69715a00  libobjc/objc/thr.h
! 1aca9e55d5efe8a3004f6f2aea57cfd7  libobjc/objects.c
! 8b4a87560ce5829083a98c1cd22f2708  libobjc/protocols.c
! ed8e260d84d74bdae710d754280f305d  libobjc/sarray.c
! b5a7e82ec7b4fc9af8de51779c12430b  libobjc/selector.c
! 031774b1d0af62af9c73b941c33256c5  libobjc/sendmsg.c
! 471a0873da510e7cdaf8924b3babf10c  libobjc/thr.c
! 012f1c0f03976a791e45188b8ff7ad7e  liboffloadmic/ChangeLog
  04abd6719c66f08c91fbd9f04b69d3f5  liboffloadmic/Makefile.am
  30b43aa8aba9a4769f58028e2f0424f7  liboffloadmic/Makefile.in
  49cb389d7dff64b95e25b4d7e85c7ecf  liboffloadmic/aclocal.m4
! 8314e4a39e104a2352baf9f08fbab23f  liboffloadmic/configure
  b36380a13e192b84e09de2eaaf68fe95  liboffloadmic/configure.ac
  278b4d0003cfa80aa2ea86bca2645fff  liboffloadmic/configure.tgt
  1a7d44cf3f018d8ece62ac06721d8f36  liboffloadmic/doc/doxygen/config
--- 70161,70253 ----
  838bdb8846eac9161e3ffbe553049f2f  libitm/testsuite/libitm.c/simple-2.c
  7ecc8e520a5c494d159cb7571cca7cdc  libitm/testsuite/libitm.c/stackundo.c
  ef24198422c19f99b0c41be6a16f7081  libitm/testsuite/libitm.c/txrelease.c
! 5a07467ef2e51e7198096e55045bc668  libitm/useraction.cc
! ea804fc9b7f5665938cb44285cad0633  libitm/util.cc
! 26595f41d16fdf33eba5c56b9b212350  libmpx/ChangeLog
  08c39b0de69ded1b0ec0d079e8ffa278  libmpx/Makefile.am
! dd63e64acaa22d5f260d305a19d7c84e  libmpx/Makefile.in
! 59ba4807cf0f71eba4361c3be341ae58  libmpx/acinclude.m4
  a5204097d1f5d63aef9d3ecc0b1a3be2  libmpx/aclocal.m4
  b2e47c7aa307406dec78315bfdb36c7b  libmpx/config.h.in
! 8eae798df3fd97e13a8eb83fdce30383  libmpx/configure
! ff462ca24e6d135802f9088c2f5d7d90  libmpx/configure.ac
  044a6e8691b62fc372ef1f9e63d55d44  libmpx/configure.tgt
  e7f0343f38d3100338933f8a6382289c  libmpx/libmpx.spec.in
! 29ebbf1a9e7225ac5892dbc8da79af63  libmpx/mpxrt/Makefile.am
! e3723bb8a7a35450f79742172d51eb97  libmpx/mpxrt/Makefile.in
  0c97a1b5daf9970e5498366b07d5a149  libmpx/mpxrt/libmpx.map
  4fafaa76b25e888f5f7eb161354fbe08  libmpx/mpxrt/libtool-version
  4ee8fd7e48704fd2bb511b9cbc8f3045  libmpx/mpxrt/mpxrt-utils.c
  954b2db3103fc31ebb9332941ee43b45  libmpx/mpxrt/mpxrt-utils.h
  b1f7e289fae56fec6fede250b6afd7e6  libmpx/mpxrt/mpxrt.c
  906b701b60fd56308d5675641e48731f  libmpx/mpxrt/mpxrt.h
! 090ca1f169c907b8d77a7537c28871d8  libmpx/mpxwrap/Makefile.am
! d2fc1c363920a36ea4f3927fa646eab8  libmpx/mpxwrap/Makefile.in
  e7c62aca341ea472234d7cb0bc4af328  libmpx/mpxwrap/libmpxwrappers.map
  240daa7f37ceeb22e331595ac7363fe8  libmpx/mpxwrap/libtool-version
  84b2ae6cc72d1bc6af32bbf75fdf747b  libmpx/mpxwrap/mpx_wrappers.c
! 464938cdceee2c1770ef8caf6587a547  libobjc/ChangeLog
! 7d008332e098e2af6624d9758e85926f  libobjc/Makefile.in
! 93d27f8450c569cd7cea0063fff63376  libobjc/NXConstStr.m
! 45674d682d9d5737541bca6a0836270d  libobjc/Object.m
! 61bfd86bb986baf63227dc3c502f1b02  libobjc/Protocol.m
  d5edaeee0d84e4305368367019952ba7  libobjc/README
  dbf36fc59f8e048201543aead57eb206  libobjc/THREADS
! ba6a7bcb66891794a977146109d11920  libobjc/accessors.m
! f18518925ae2e77326beb9b73a02e21a  libobjc/acinclude.m4
! 256c8af46fa16ef9161b0ae9431a3031  libobjc/aclocal.m4
! 5fbaf8b8b292880023710579260c46c9  libobjc/class.c
  972b0cb64be0b600253cb529cf6ed8ed  libobjc/config.h.in
! f1ad0e578780addd3e2b38524d010d75  libobjc/configure
! 6eb5dbe260caf33ca02817b484f53f9c  libobjc/configure.ac
! 876e41f2f4cdb2f0eaa75ef351aa8587  libobjc/encoding.c
! 2b368b9d329d510830ccdbcaf52839a6  libobjc/error.c
! e176e2c488db876b5cb16f285939de40  libobjc/exception.c
! 949efffefb62be40037803ab1fd0b0f3  libobjc/gc.c
! 3f56f7e8ae97181c0213fc679a6fbad9  libobjc/hash.c
! b73675bc097ecce22ac7468d3b05f1a8  libobjc/init.c
! dc43d3e014121a51d2c883bb9884a0ba  libobjc/ivars.c
! 2d5238fa078bb31aa3e0014717013e2b  libobjc/libobjc.def
! 3c6a0931634d5b0bebbbfd0c6b0adbc1  libobjc/linking.m
! 14e9e77f0e7ffc1229ce0efe2a4fbd07  libobjc/memory.c
! 0b8ad1f3761ea48a609663849946d07f  libobjc/methods.c
! a3b68a2a85cbe7ec67d54d2ddd30f0b5  libobjc/nil_method.c
! e2610f7d19dbd7ad8140d5231904619c  libobjc/objc-foreach.c
  4758c47369f62786c0dcdf45f3397ff7  libobjc/objc-private/README
! 061dc841eb48c971ee34ce7d6f9f6862  libobjc/objc-private/accessors.h
! 0330b20a5c36effc60b6c8f8984f90e7  libobjc/objc-private/common.h
! 8909e74038a6a6cef5a47befa4c4fa84  libobjc/objc-private/error.h
! acca64b5a242c7fbc2de989c5b066565  libobjc/objc-private/hash.h
! aedc5248217711359e17923bde65c61e  libobjc/objc-private/module-abi-8.h
! 0fb7680667c140777854713c2249b096  libobjc/objc-private/objc-list.h
! 319b20f730248fd94d7f2f9a8d2d1616  libobjc/objc-private/objc-sync.h
! 5015c3cee7e3983776c914d6392d6867  libobjc/objc-private/protocols.h
! 0e216a0633a520f2b0a73fb1153124a6  libobjc/objc-private/runtime.h
! 30090b2abc9b59366193973abbda5c1c  libobjc/objc-private/sarray.h
! 9658420fdc15c3b9b92f063af45cbe07  libobjc/objc-private/selector.h
! d70acfae0fde94d68af7cc1814f9808c  libobjc/objc-sync.c
! 616d52dfaefff7aca8edb10a9cb6bf12  libobjc/objc/NXConstStr.h
! fdbd58fc9ff522e0edde6d9b21a7e1fe  libobjc/objc/Object.h
! f350e6cea6e250684068057af6a6567b  libobjc/objc/Protocol.h
  6a0d7c25fa8ddefde53bbaf36eea5bdf  libobjc/objc/README
! 8ec8f1a4c41b0b80be91be2446f83b79  libobjc/objc/message.h
! 1fff3e1fef14697e911094344035dcf3  libobjc/objc/objc-decls.h
! ff45ae19237f07c62d07a66d14e36cc4  libobjc/objc/objc-exception.h
! 399f1d45b56dc3ba014b519d3484dffe  libobjc/objc/objc-sync.h
! 3b2915c7394f6add4cfda73f18bcb766  libobjc/objc/objc.h
! c8c22900ddfd74a3282d58e3e4a75f21  libobjc/objc/runtime.h
! f41b6198a3df04cdf0174bef74146b1e  libobjc/objc/thr.h
! 7cb3810ac96f5779f4c5019db9678696  libobjc/objects.c
! f81efea7a2f6cf641b42ff3e410bbf9d  libobjc/protocols.c
! 0c780411bfb3aaa19269d21640d3bd81  libobjc/sarray.c
! 66dcc830fd378f3cb8e075e37ac22af3  libobjc/selector.c
! 0395b628d68612c1d62d72a0607b04b6  libobjc/sendmsg.c
! 3bc9da57ef6f3dbcf87349c9c17c40b5  libobjc/thr.c
! 919abcc32a6e9530cf3b27d08e8109fd  liboffloadmic/ChangeLog
  04abd6719c66f08c91fbd9f04b69d3f5  liboffloadmic/Makefile.am
  30b43aa8aba9a4769f58028e2f0424f7  liboffloadmic/Makefile.in
  49cb389d7dff64b95e25b4d7e85c7ecf  liboffloadmic/aclocal.m4
! f1854c3a9e17df6dad2393c1199c6374  liboffloadmic/configure
  b36380a13e192b84e09de2eaaf68fe95  liboffloadmic/configure.ac
  278b4d0003cfa80aa2ea86bca2645fff  liboffloadmic/configure.tgt
  1a7d44cf3f018d8ece62ac06721d8f36  liboffloadmic/doc/doxygen/config
*************** e759e3e99ff36a77562aabb91987e4bc  liboff
*** 65460,65466 ****
  018eb15e81b9ae9e03d31d90fdadeda1  liboffloadmic/plugin/Makefile.am
  b0e7cceb8d463974476520e6fa9898c7  liboffloadmic/plugin/Makefile.in
  4f9632585f625e07e0433644f8a700f9  liboffloadmic/plugin/aclocal.m4
! c60e751363882b9f48c0f16b44505be2  liboffloadmic/plugin/configure
  11c6d7bc32431e0e04ff23dc696b0ecd  liboffloadmic/plugin/configure.ac
  0eeb692b98b3a90b6fdb915a78005eae  liboffloadmic/plugin/libgomp-plugin-intelmic.cpp
  6b20eaf07b897ce0ffb3eca79c0783a4  liboffloadmic/plugin/offload_target_main.cpp
--- 70272,70278 ----
  018eb15e81b9ae9e03d31d90fdadeda1  liboffloadmic/plugin/Makefile.am
  b0e7cceb8d463974476520e6fa9898c7  liboffloadmic/plugin/Makefile.in
  4f9632585f625e07e0433644f8a700f9  liboffloadmic/plugin/aclocal.m4
! 31d994946c388a4fcf134b8133ad47e0  liboffloadmic/plugin/configure
  11c6d7bc32431e0e04ff23dc696b0ecd  liboffloadmic/plugin/configure.ac
  0eeb692b98b3a90b6fdb915a78005eae  liboffloadmic/plugin/libgomp-plugin-intelmic.cpp
  6b20eaf07b897ce0ffb3eca79c0783a4  liboffloadmic/plugin/offload_target_main.cpp
*************** b1def68202639bd452fb59aea3371fe4  liboff
*** 65520,65552 ****
  cc603cdf253cc686bfcee192bb7630df  liboffloadmic/runtime/orsl-lite/lib/orsl-lite.c
  dff5c8575c49d6aa71e549b0fa021479  liboffloadmic/runtime/orsl-lite/version.txt
  a916467b91076e631dd8edb7424769c7  libquadmath/COPYING.LIB
! eea465709c5af1750542961e7a9dccf4  libquadmath/ChangeLog
! e1106736861aae37a68244254f00f3fd  libquadmath/Makefile.am
! 089aca42b8f31c3920925f611462bc81  libquadmath/Makefile.in
! 4c8b4478a1031d129e7cc6b341876b99  libquadmath/acinclude.m4
  b575232932aeb139e780664720bc8695  libquadmath/aclocal.m4
  bf09ede5c6d78e3d132bde0f933590d8  libquadmath/config.h.in
! 7f6b0d2eeae18aa85f194f1cbc6a9c29  libquadmath/configure
! 84f1e84be7df00cfbeab19204eaf8dd5  libquadmath/configure.ac
! 258ec0a93add4fccca2b716d4b9c8aad  libquadmath/libquadmath.info
! 2cb034bf3212dff9fd07056661589189  libquadmath/libquadmath.texi
  77280bb7ee423875e03d9c0d34527df6  libquadmath/libtool-version
  f44065462735b4699d44588271a5f09a  libquadmath/math/acoshq.c
! 3a4574025522c926b03f9e629fea600a  libquadmath/math/acosq.c
! 92669bf0f043e6bff8f7fd128e508883  libquadmath/math/asinhq.c
! 69970e6d727317007a8abc87aa9f7cc9  libquadmath/math/asinq.c
  72b2d583f84199a57a9be775d39d1716  libquadmath/math/atan2q.c
! 0a074e06a495b94a80dd63682f66d1f1  libquadmath/math/atanhq.c
! 3409d5ca3944d431d0e7b587908b92cf  libquadmath/math/atanq.c
  1f8a4f764da5441bf552d68b3eb39b4d  libquadmath/math/cacoshq.c
  6ff86846c3b686e53af0d1a26b85573f  libquadmath/math/cacosq.c
  b951c88626128c3012d0c16c2690815d  libquadmath/math/casinhq.c
  c27dd8f360835671a690e3588bd30e4b  libquadmath/math/casinq.c
  c2f0ad65796502dc56be0143a859d782  libquadmath/math/catanhq.c
  0b4b7cd3fd3ab0d39fe6bfcb8dc156a2  libquadmath/math/catanq.c
! eee32d98c4c965d6eeff2356a998452b  libquadmath/math/cbrtq.c
  7ad40c97bf2f69e004b53d2cc105028b  libquadmath/math/ccoshq.c
! b3a61bae913c8f834fd179a50ec6d329  libquadmath/math/ceilq.c
  e9f3d458921aa8c4aac5684dfa9ef3d0  libquadmath/math/cexpq.c
  eea77547fe52330e0daae2d83928e55d  libquadmath/math/cimagq.c
  f6b87fb67db30079622ae32c9076a7e4  libquadmath/math/clog10q.c
--- 70332,70364 ----
  cc603cdf253cc686bfcee192bb7630df  liboffloadmic/runtime/orsl-lite/lib/orsl-lite.c
  dff5c8575c49d6aa71e549b0fa021479  liboffloadmic/runtime/orsl-lite/version.txt
  a916467b91076e631dd8edb7424769c7  libquadmath/COPYING.LIB
! a355a2d0028cb23a89356f54516cd30c  libquadmath/ChangeLog
! 31439f2092557562291450eceb31cd0f  libquadmath/Makefile.am
! eb6557055ad3027b4e6b039c86d570da  libquadmath/Makefile.in
! d9afbc1f1e04c7e461265ff9323cc6f4  libquadmath/acinclude.m4
  b575232932aeb139e780664720bc8695  libquadmath/aclocal.m4
  bf09ede5c6d78e3d132bde0f933590d8  libquadmath/config.h.in
! 562b70ab2d02e65ca7c8f956cca51303  libquadmath/configure
! b55e1e289f7ed5496069a4bb1ba39862  libquadmath/configure.ac
! deb43636be279de7ff619e86894a7f53  libquadmath/libquadmath.info
! c292f69e4ec56a776338a1440a5bfc3d  libquadmath/libquadmath.texi
  77280bb7ee423875e03d9c0d34527df6  libquadmath/libtool-version
  f44065462735b4699d44588271a5f09a  libquadmath/math/acoshq.c
! e20246641fe73d9e9c239eff6fb1ac75  libquadmath/math/acosq.c
! 53ae203e508a8478f99efe8117f37232  libquadmath/math/asinhq.c
! 16b644173f82525c11d8ee7343a00208  libquadmath/math/asinq.c
  72b2d583f84199a57a9be775d39d1716  libquadmath/math/atan2q.c
! b9a93fbacb7a25b2fbc89af8114fe739  libquadmath/math/atanhq.c
! 18473c0191f8c064b3a3b27d0eb5f1eb  libquadmath/math/atanq.c
  1f8a4f764da5441bf552d68b3eb39b4d  libquadmath/math/cacoshq.c
  6ff86846c3b686e53af0d1a26b85573f  libquadmath/math/cacosq.c
  b951c88626128c3012d0c16c2690815d  libquadmath/math/casinhq.c
  c27dd8f360835671a690e3588bd30e4b  libquadmath/math/casinq.c
  c2f0ad65796502dc56be0143a859d782  libquadmath/math/catanhq.c
  0b4b7cd3fd3ab0d39fe6bfcb8dc156a2  libquadmath/math/catanq.c
! 3d7f73dae71c8671c5367617e9b127de  libquadmath/math/cbrtq.c
  7ad40c97bf2f69e004b53d2cc105028b  libquadmath/math/ccoshq.c
! e7e07b581bdba19e529a20b8bb2a65cf  libquadmath/math/ceilq.c
  e9f3d458921aa8c4aac5684dfa9ef3d0  libquadmath/math/cexpq.c
  eea77547fe52330e0daae2d83928e55d  libquadmath/math/cimagq.c
  f6b87fb67db30079622ae32c9076a7e4  libquadmath/math/clog10q.c
*************** f6b87fb67db30079622ae32c9076a7e4  libqua
*** 65554,65560 ****
  c8a4603ecc7ba4666af6f61bae0d260e  libquadmath/math/complex.c
  b55b8bc385b324eeb44ff151313091e3  libquadmath/math/conjq.c
  2537799eab7b15befad27e59dedc4ef0  libquadmath/math/copysignq.c
! 648e0aeb5dbbec9653c8fadb32ed6ba4  libquadmath/math/coshq.c
  38a55dfbd4c249cb03557e43c54bd66f  libquadmath/math/cosq.c
  d2d306fe6c99a4541f656bdf3838ec7c  libquadmath/math/cosq_kernel.c
  45bdc4a94bffa7133f805d979f0af394  libquadmath/math/cprojq.c
--- 70366,70372 ----
  c8a4603ecc7ba4666af6f61bae0d260e  libquadmath/math/complex.c
  b55b8bc385b324eeb44ff151313091e3  libquadmath/math/conjq.c
  2537799eab7b15befad27e59dedc4ef0  libquadmath/math/copysignq.c
! 5dee756746ceb7516c87e17fccf7742a  libquadmath/math/coshq.c
  38a55dfbd4c249cb03557e43c54bd66f  libquadmath/math/cosq.c
  d2d306fe6c99a4541f656bdf3838ec7c  libquadmath/math/cosq_kernel.c
  45bdc4a94bffa7133f805d979f0af394  libquadmath/math/cprojq.c
*************** b50a742439618b03bfdf4b84e5e27a65  libqua
*** 65564,65624 ****
  1ece26401036f2c29f2a17055454b972  libquadmath/math/csqrtq.c
  983628b0633e8ece1db6bfe6df881f9c  libquadmath/math/ctanhq.c
  1991dd3a063695f956fc32cd88da3f39  libquadmath/math/ctanq.c
! bad3cf582b1d0277a474d7bd717dc760  libquadmath/math/erfq.c
! 7951075424d04d4e88a5d0b187651d42  libquadmath/math/expm1q.c
! f33e6b489cf42a1564fc45e1b1e24359  libquadmath/math/expq.c
  94fea5b4c45170455cd51108f58f4761  libquadmath/math/fabsq.c
  7570e1e6d06123ea6833b728812d042c  libquadmath/math/fdimq.c
! c5a85fbf2ad12c5b87db5d4c5feccd23  libquadmath/math/finiteq.c
! 99493ee32c9db6f7cdc295600321a7ec  libquadmath/math/floorq.c
! 27cf8e9f91edf795ec845ce973d1faf3  libquadmath/math/fmaq.c
  319f4cb456d4bb31d5e18b8537771be5  libquadmath/math/fmaxq.c
  24b08343f11b9c041e962c3499ba3296  libquadmath/math/fminq.c
  c9f8fee2a4fc95163924739f474714ea  libquadmath/math/fmodq.c
! 5fc77a622e6add1ad2921107393882e4  libquadmath/math/frexpq.c
! 7ae7a497ec7fe2f50e7e75b1ad7f2f49  libquadmath/math/hypotq.c
  2609a19c9d5742adf63c1c36dc7ed99d  libquadmath/math/ilogbq.c
  a409a2f5ea5ad58fe9c4c0041ab28934  libquadmath/math/isinf_nsq.c
  87e325348c86bb01fbe32bab303e6d66  libquadmath/math/isinfq.c
  ae0c8e4f1fe778e73294f324f3029f81  libquadmath/math/isnanq.c
! d8ea390546deb85a558b0bb47716de01  libquadmath/math/j0q.c
! e56f92ca4895f112d3ed1d859fb132e6  libquadmath/math/j1q.c
  b7fdb8e7c3f2fde6d6dc9d05568550ad  libquadmath/math/jnq.c
  e8ad14ce043226a79ca566ba26a524ec  libquadmath/math/ldexpq.c
  964ef889fab616d71f67931ffd81983b  libquadmath/math/lgammaq.c
! ecd22d5519b7c99b92761975515064f4  libquadmath/math/llrintq.c
! a0822d39829513e40da0cf6222cf40b7  libquadmath/math/llroundq.c
! e759cc5a5083b2707546598469ce053c  libquadmath/math/log10q.c
! 089d0cc8ba406da6f2f2617036c39211  libquadmath/math/log1pq.c
! 940205881f34f7d810783f61cc887bf7  libquadmath/math/log2q.c
  8d3be4aec68c94c0792e11a0c1590ffc  libquadmath/math/logbq.c
! 7336f7f4e2341bb476c34b797f1182c0  libquadmath/math/logq.c
! 1fdfe439b378b5e3e7f38d1cc29b171e  libquadmath/math/lrintq.c
! 3246b76c617d980a7b9eca2284450698  libquadmath/math/lroundq.c
  0b33f1aa01734a0504b46bcde68bf290  libquadmath/math/modfq.c
  b1b2983a3001a1cb88dd816090233dc6  libquadmath/math/nanq.c
! 2b80ac16beb08958ad9011d0aa2e5433  libquadmath/math/nearbyintq.c
! db96cadadc84ad20abe4e07531b44350  libquadmath/math/nextafterq.c
! faf9f5ae44363f9f6507c0011d46db13  libquadmath/math/powq.c
! 86c9505d08d369d52506dae6452e8c10  libquadmath/math/rem_pio2q.c
  d2a9f3ef6892596a69d2b49807b7ec84  libquadmath/math/remainderq.c
! 7e5da1ab7b5e81c6b3b2a1a459e75533  libquadmath/math/remquoq.c
! 0c856dcd115d0745afdd5e2cf93d7af5  libquadmath/math/rintq.c
! f9ba4d7c854e3e920e53f280c53554ba  libquadmath/math/roundq.c
! 9432aa412a476bd039bef505158b67bb  libquadmath/math/scalblnq.c
! e0a518547cd1a798af59f2b2a71f9516  libquadmath/math/scalbnq.c
  95483c7c7403c55b0257b2f7613f144c  libquadmath/math/signbitq.c
! fb2c27e81fdffcd433f604ea7397708e  libquadmath/math/sincos_table.c
! 0472bd3b929e40a69f6c0a4fd13b3dce  libquadmath/math/sincosq.c
! 4f55dc28ed636da0046178a2332416b2  libquadmath/math/sincosq_kernel.c
! 02a26f6c210d461f3f31277bdf4f9b8c  libquadmath/math/sinhq.c
  cd2152743584efd7e03e69ec3b2c8602  libquadmath/math/sinq.c
! 3af4e81c0cfb7095ee8981556ab94fdb  libquadmath/math/sinq_kernel.c
! 407cdb42f2899d9925a6b47d9d3baab3  libquadmath/math/sqrtq.c
! f49fb1dbf5a35e2a16a5c61b0d35e5db  libquadmath/math/tanhq.c
! ae3cedc0ff623ebeb125378b1afc16f6  libquadmath/math/tanq.c
  f061082faf8ca497e4184ff1d2465503  libquadmath/math/tgammaq.c
! c867e1187a7dc2f44c3cdaec8759cb8d  libquadmath/math/truncq.c
  77bbdb2f7747d7081bbff333e91b7be5  libquadmath/math/x2y2m1q.c
  098bdd371a48a88ca2745f59af7b413c  libquadmath/printf/_i18n_number.h
  b780c27cded3b15283a89a244f0df38c  libquadmath/printf/_itoa.h
--- 70376,70436 ----
  1ece26401036f2c29f2a17055454b972  libquadmath/math/csqrtq.c
  983628b0633e8ece1db6bfe6df881f9c  libquadmath/math/ctanhq.c
  1991dd3a063695f956fc32cd88da3f39  libquadmath/math/ctanq.c
! f1ea5c1606e1806fe73c53d69afba92c  libquadmath/math/erfq.c
! 80a6cef4d73ab2158149ae237d0493c4  libquadmath/math/expm1q.c
! 889f9acb909907590060f6c28ea014f6  libquadmath/math/expq.c
  94fea5b4c45170455cd51108f58f4761  libquadmath/math/fabsq.c
  7570e1e6d06123ea6833b728812d042c  libquadmath/math/fdimq.c
! 6ef2242c9f62520350b692e62d3c9073  libquadmath/math/finiteq.c
! e6d08b10a627c3d8d1eebceb96c91145  libquadmath/math/floorq.c
! 3e00c6a49c1acffe19b15ae056253dfd  libquadmath/math/fmaq.c
  319f4cb456d4bb31d5e18b8537771be5  libquadmath/math/fmaxq.c
  24b08343f11b9c041e962c3499ba3296  libquadmath/math/fminq.c
  c9f8fee2a4fc95163924739f474714ea  libquadmath/math/fmodq.c
! 840f2b9971b290d055ee0e6bf0f5a473  libquadmath/math/frexpq.c
! e578e1cc883d55a9ddbb493a3e1d09db  libquadmath/math/hypotq.c
  2609a19c9d5742adf63c1c36dc7ed99d  libquadmath/math/ilogbq.c
  a409a2f5ea5ad58fe9c4c0041ab28934  libquadmath/math/isinf_nsq.c
  87e325348c86bb01fbe32bab303e6d66  libquadmath/math/isinfq.c
  ae0c8e4f1fe778e73294f324f3029f81  libquadmath/math/isnanq.c
! 8ec545a142373f5972059806779616c1  libquadmath/math/j0q.c
! 329266f5b522eb0eb545bb48dece8850  libquadmath/math/j1q.c
  b7fdb8e7c3f2fde6d6dc9d05568550ad  libquadmath/math/jnq.c
  e8ad14ce043226a79ca566ba26a524ec  libquadmath/math/ldexpq.c
  964ef889fab616d71f67931ffd81983b  libquadmath/math/lgammaq.c
! 0a3adb8e5c6f2f7bff3d734ef6edc500  libquadmath/math/llrintq.c
! 7c7522a6899bfe7b4ee3d587aeb623b8  libquadmath/math/llroundq.c
! df0b3161b94a679ca454e0dbc6ab6e68  libquadmath/math/log10q.c
! 2502ab9889c20e095f28d2d0b89b125b  libquadmath/math/log1pq.c
! 432f6f5af0eb3e93d219c5e7bbba7fd2  libquadmath/math/log2q.c
  8d3be4aec68c94c0792e11a0c1590ffc  libquadmath/math/logbq.c
! 77ff40029154b8df4aeb97d0b04a7318  libquadmath/math/logq.c
! 5c93f7f5cffa263a5c410902ecd62678  libquadmath/math/lrintq.c
! d2bf8bafefd771767b89f2f7c7510dc7  libquadmath/math/lroundq.c
  0b33f1aa01734a0504b46bcde68bf290  libquadmath/math/modfq.c
  b1b2983a3001a1cb88dd816090233dc6  libquadmath/math/nanq.c
! d4abdfead973137a347794ac9c466aa8  libquadmath/math/nearbyintq.c
! a88bd6d59c786261f21aa1a57474cc69  libquadmath/math/nextafterq.c
! 0a39378c6f3dc4ab5445e93b06f0fc55  libquadmath/math/powq.c
! 9423b550dce7656978d000dbe660492d  libquadmath/math/rem_pio2q.c
  d2a9f3ef6892596a69d2b49807b7ec84  libquadmath/math/remainderq.c
! 14f937c29cf445b5299004f2116d0655  libquadmath/math/remquoq.c
! a9dfb65df12f62f58a2ef7109b207707  libquadmath/math/rintq.c
! 6bdca5d06b99e2bb997bab5bbe3b8c86  libquadmath/math/roundq.c
! e42cb5bc7d0577a3dd8cf5f992ff161e  libquadmath/math/scalblnq.c
! 87440d12319319c8ab466a0eda3c8cf7  libquadmath/math/scalbnq.c
  95483c7c7403c55b0257b2f7613f144c  libquadmath/math/signbitq.c
! 849ef5e8de03ff088d9f56a17307d99b  libquadmath/math/sincos_table.c
! 31c1ed23b9d048406ebc35cd33022cda  libquadmath/math/sincosq.c
! 0836dd00f0f7f2a5970e4517e87771be  libquadmath/math/sincosq_kernel.c
! c7d2627fd06d3960d625d8e2a7334dec  libquadmath/math/sinhq.c
  cd2152743584efd7e03e69ec3b2c8602  libquadmath/math/sinq.c
! 660aad224982270b52e4c3aa542f83ea  libquadmath/math/sinq_kernel.c
! f9a62ab6ed3aca71c0e3ac759cb7d42f  libquadmath/math/sqrtq.c
! f6ea1eeca4075f95acf916236f2d5636  libquadmath/math/tanhq.c
! 8170e8fca1c846e0e47a6c35cb41e8c4  libquadmath/math/tanq.c
  f061082faf8ca497e4184ff1d2465503  libquadmath/math/tgammaq.c
! 04335abd0b1ccf84b4c797b76e8f1aa1  libquadmath/math/truncq.c
  77bbdb2f7747d7081bbff333e91b7be5  libquadmath/math/x2y2m1q.c
  098bdd371a48a88ca2745f59af7b413c  libquadmath/printf/_i18n_number.h
  b780c27cded3b15283a89a244f0df38c  libquadmath/printf/_itoa.h
*************** f845f38cb4881746998a6efcc94bbb81  libqua
*** 65630,65636 ****
  97b2e892146220de8d716ffcafc2accd  libquadmath/printf/flt1282mpn.c
  259213d6d81cc752653ad9fc57f02194  libquadmath/printf/fpioconst.c
  d8a11a64ba7f3914e2eeaaaf9a274f75  libquadmath/printf/fpioconst.h
! 4e6562df1fcff2a428d2e52de1503260  libquadmath/printf/gmp-impl.h
  5b9229a164e299bcff62c7696af4df94  libquadmath/printf/lshift.c
  dccfb932e7a4ec8c89731a6c7a7a9b82  libquadmath/printf/mul.c
  1cfc3bffd2c94cb06e55b49841dc8f7f  libquadmath/printf/mul_1.c
--- 70442,70448 ----
  97b2e892146220de8d716ffcafc2accd  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
*************** e1960c6cccb78a5a2d60bdfe428c9d1b  libqua
*** 65642,65650 ****
  4d100ac07c5c1c4033ef4b9f60c96605  libquadmath/printf/rshift.c
  1002d1058eca992119c86f1ab7b21907  libquadmath/printf/sub_n.c
  d2588a7f4e04e453e8926777100a5490  libquadmath/printf/submul_1.c
! c33b37f3210f52c747e282812eb2f5c2  libquadmath/quadmath-imp.h
  50709da39971589779199b3433120e3e  libquadmath/quadmath-rounding-mode.h
! 5ce620084d814005199696f2c8c02215  libquadmath/quadmath.h
  fc051f1b6573329e749733b661b30677  libquadmath/quadmath.map
  95a02a6553e7ab525a199590417d4af9  libquadmath/quadmath_weak.h
  e766022f8615b72cbc38335d262e9d3d  libquadmath/strtod/grouping.h
--- 70454,70462 ----
  4d100ac07c5c1c4033ef4b9f60c96605  libquadmath/printf/rshift.c
  1002d1058eca992119c86f1ab7b21907  libquadmath/printf/sub_n.c
  d2588a7f4e04e453e8926777100a5490  libquadmath/printf/submul_1.c
! 9d08eb52806ffe1fdfcb466db72f6b1b  libquadmath/quadmath-imp.h
  50709da39971589779199b3433120e3e  libquadmath/quadmath-rounding-mode.h
! ac7ffb6b3b54d00b65c653d8207b9ed5  libquadmath/quadmath.h
  fc051f1b6573329e749733b661b30677  libquadmath/quadmath.map
  95a02a6553e7ab525a199590417d4af9  libquadmath/quadmath_weak.h
  e766022f8615b72cbc38335d262e9d3d  libquadmath/strtod/grouping.h
*************** e766022f8615b72cbc38335d262e9d3d  libqua
*** 65652,65733 ****
  a81cc82679e80c86cfbd5575867450d0  libquadmath/strtod/strtod_l.c
  da808e110fc09ebd41ebd405790a70df  libquadmath/strtod/strtoflt128.c
  d15a18f7c46ba2add6148edc5b7563c0  libquadmath/strtod/tens_in_limb.c
! ad5dcbee25d98c11d497501fc2f401e3  libsanitizer/ChangeLog
  c5b0b63dd90ad073654139697e69d009  libsanitizer/HOWTO_MERGE
  0249c37748936faf5b1efd5789587909  libsanitizer/LICENSE.TXT
  f11d8e68ccf5dbd2281333342f0cea86  libsanitizer/LOCAL_PATCHES
! c81321fca6360de25e45327488d6fe51  libsanitizer/MERGE
! dca5b5a5b464523d18e093724042b04e  libsanitizer/Makefile.am
! fd5c628705d778373bf98b157e576bda  libsanitizer/Makefile.in
  d83c99fc9a7c49fe8dd1aeb497916b94  libsanitizer/README.gcc
! 7ce7674b49474eb3d5dcaa4cb7db8c31  libsanitizer/acinclude.m4
  bc983b4b88d36c9caa3fe9ed8daa2188  libsanitizer/aclocal.m4
! a549c0c6712ea98c6f1e076bbac68f0d  libsanitizer/asan/Makefile.am
! 10e65622829de5574fca32110ba38ac7  libsanitizer/asan/Makefile.in
! 4acdec04a1c1df8204cf74f33b7df288  libsanitizer/asan/asan_activation.cc
  17e04d539a658df3f9030c441a2a2aae  libsanitizer/asan/asan_activation.h
! 66a2cc0a2e7b50e14c9f1c7235f59732  libsanitizer/asan/asan_activation_flags.inc
! a06604bd6c467259a84191ae3e482240  libsanitizer/asan/asan_allocator.cc
! 9b9cbb7a497636678cc19e4bd50fb896  libsanitizer/asan/asan_allocator.h
  3c76b9d02b9fb427cf40cabeda299325  libsanitizer/asan/asan_debugging.cc
! 83543b04eedf2a49c2b1e8cec4fa33e3  libsanitizer/asan/asan_descriptions.cc
! 55b647f7aff48b4619fb2f040fdb7054  libsanitizer/asan/asan_descriptions.h
! ecfe18c7cd3a66384027f776924efa78  libsanitizer/asan/asan_errors.cc
! cd7a9ad647eb9ff6ec6d782701339aab  libsanitizer/asan/asan_errors.h
! 2494e10a581d2afacd305d162470b26a  libsanitizer/asan/asan_fake_stack.cc
  dd9aeca4a64c9219c8b377c8485d2b7f  libsanitizer/asan/asan_fake_stack.h
! faa3541838092746465fa00b0e917cc2  libsanitizer/asan/asan_flags.cc
  749c40bd86f1f8c8c05241630b9d42ab  libsanitizer/asan/asan_flags.h
! aafd34550456079c024cc0a652e439cc  libsanitizer/asan/asan_flags.inc
! d4d9123108c59360f98ac894b51fd9cb  libsanitizer/asan/asan_globals.cc
  872ff669b1493a0bd72e5fa2652d9cd6  libsanitizer/asan/asan_init_version.h
! 327b10a021af3a53206c50621cf78f5d  libsanitizer/asan/asan_interceptors.cc
! 2d77992b19249016720cf8061616bc68  libsanitizer/asan/asan_interceptors.h
! 6c3143e8336a5d4307a1a7318f255be0  libsanitizer/asan/asan_interface_internal.h
! aeda99cb3c4a57469081d29c47791274  libsanitizer/asan/asan_internal.h
! e198979b6fd4393defd837db1ed46716  libsanitizer/asan/asan_linux.cc
  68b329da9893e34099c7d8ad5cb9c940  libsanitizer/asan/asan_lock.h
! 83c744cca0e3f3d4f7278d321a27c326  libsanitizer/asan/asan_mac.cc
! 8d0252cb9d24afc9dea296098670425c  libsanitizer/asan/asan_malloc_linux.cc
  f323246025bcfade4b7c4e25ee45ab66  libsanitizer/asan/asan_malloc_mac.cc
! 3f9d58b175c71d66c80a280062d1d5ce  libsanitizer/asan/asan_malloc_win.cc
! 2fce98a267a463ad1c2257c11305c484  libsanitizer/asan/asan_mapping.h
! 5e942061c749780bff7d4b2eae2893b3  libsanitizer/asan/asan_memory_profile.cc
! 76c047d4173c48f2bf0757b08d630e4f  libsanitizer/asan/asan_new_delete.cc
! f31378b7890b66d888b681b96afe39b5  libsanitizer/asan/asan_poisoning.cc
! 915e4737a02c17cfbcb2ffba2befb095  libsanitizer/asan/asan_poisoning.h
! 6304130e0da78efc2111c69ae3469fb2  libsanitizer/asan/asan_posix.cc
  532d31a64ae0090c3129ee6a99a70233  libsanitizer/asan/asan_preinit.cc
! f4ef160d94026a67a4dd340920770243  libsanitizer/asan/asan_report.cc
! 8804bc0d4bf6728ca7533cd6d706d5e5  libsanitizer/asan/asan_report.h
! d2e0338de7857c00b2e03b382eb4be17  libsanitizer/asan/asan_rtl.cc
! 8656e5481033d2568d37d6633e518990  libsanitizer/asan/asan_scariness_score.h
  2b0de8ccb4daa64299b41c1bc0328ca2  libsanitizer/asan/asan_stack.cc
! 694a992942f3113f989fc5494c4aaf52  libsanitizer/asan/asan_stack.h
  31c0bffbb3b602565333ea594e54e7a2  libsanitizer/asan/asan_stats.cc
  83d2fec3485902522f83d731fe4b7e03  libsanitizer/asan/asan_stats.h
! 145b119c3488dc3da9ed41435ece0426  libsanitizer/asan/asan_suppressions.cc
  04139e57785652d8bbb080dca122fc5d  libsanitizer/asan/asan_suppressions.h
! d940ea3586f3b23ac103751872fbd5b6  libsanitizer/asan/asan_thread.cc
! 220f034feb327a01bcddef97c6c5f84c  libsanitizer/asan/asan_thread.h
! 789c19cb21dfaff849bcbc8b62c3e4f5  libsanitizer/asan/asan_win.cc
! aa7833ffd0b94a28455dc72a79081c02  libsanitizer/asan/asan_win_dll_thunk.cc
! 28bec256046f49e3aeb49ce04d28a898  libsanitizer/asan/asan_win_dynamic_runtime_thunk.cc
! 237604be64c957eff96e5783ea1d5b7a  libsanitizer/asan/libtool-version
! 2c1ff961b0c19696314e9dabbe9a783f  libsanitizer/builtins/assembly.h
  f14b75055c11bb9db5ff23c1d981f7b9  libsanitizer/config.h.in
! 711da8a93e9eeb9c43b3390652f3cc00  libsanitizer/configure
! 0fc36261b30c3353cdcbe03be57d103b  libsanitizer/configure.ac
  a167c94d13ce772d419d964c6b9d3181  libsanitizer/configure.tgt
  b4a5d598d9c1fddc5a43683c868160bc  libsanitizer/include/sanitizer/allocator_interface.h
! 80787ea625b0aee3a6861ee47f77eb6d  libsanitizer/include/sanitizer/asan_interface.h
! 8a9b5faa6b6320f27a2eb956be0afd44  libsanitizer/include/sanitizer/common_interface_defs.h
! de3b46c5a8c365e9a16f5a1c891309c5  libsanitizer/include/sanitizer/coverage_interface.h
  cac959680ac4b795083b34dbdc5c4f77  libsanitizer/include/sanitizer/dfsan_interface.h
  a023270d255f36db75c42549d254c3d5  libsanitizer/include/sanitizer/esan_interface.h
  b5f18b779ee55fe8d50ea5ac9465528a  libsanitizer/include/sanitizer/linux_syscall_hooks.h
! f1cb56df159d084f4c0ec71a91cec307  libsanitizer/include/sanitizer/lsan_interface.h
  22f215e51bca73cf58dfc0b89d26880b  libsanitizer/include/sanitizer/msan_interface.h
  d72679bea167d6a513d959f5abd149dc  libsanitizer/include/sanitizer/tsan_interface_atomic.h
  c06732d7b90bf79a06f7aa44d08a1fbb  libsanitizer/include/system/asm/ptrace.h
  7b7bed50874b18703cfc3f3e9405dc93  libsanitizer/include/system/linux/aio_abi.h
--- 70464,70553 ----
  a81cc82679e80c86cfbd5575867450d0  libquadmath/strtod/strtod_l.c
  da808e110fc09ebd41ebd405790a70df  libquadmath/strtod/strtoflt128.c
  d15a18f7c46ba2add6148edc5b7563c0  libquadmath/strtod/tens_in_limb.c
! 3890924cf530c473b41a9173f8ae5cf6  libsanitizer/ChangeLog
  c5b0b63dd90ad073654139697e69d009  libsanitizer/HOWTO_MERGE
  0249c37748936faf5b1efd5789587909  libsanitizer/LICENSE.TXT
  f11d8e68ccf5dbd2281333342f0cea86  libsanitizer/LOCAL_PATCHES
! 19fc34ca74fbf2a878ed34449d84c4d8  libsanitizer/MERGE
! 8b0de8ac99b9695fec2e333f1c72e4a2  libsanitizer/Makefile.am
! af416c58e04bfb00c7aeae635b0d2254  libsanitizer/Makefile.in
  d83c99fc9a7c49fe8dd1aeb497916b94  libsanitizer/README.gcc
! 9fefac8c0974bfaa97f7bd2eba2ecb55  libsanitizer/acinclude.m4
  bc983b4b88d36c9caa3fe9ed8daa2188  libsanitizer/aclocal.m4
! 98acdab24eb11ce2090e8f1b99589f94  libsanitizer/asan/Makefile.am
! 46ac58d6e601472fe7c0438c18295aaf  libsanitizer/asan/Makefile.in
! ba22c07599ca9c78d2531781d4639892  libsanitizer/asan/asan_activation.cc
  17e04d539a658df3f9030c441a2a2aae  libsanitizer/asan/asan_activation.h
! 517261ad793374c311a624f2679e24e4  libsanitizer/asan/asan_activation_flags.inc
! d4113c7c99537efec1255f6950e386a9  libsanitizer/asan/asan_allocator.cc
! cc44c7cf17864dad7c1e54ea57723f6d  libsanitizer/asan/asan_allocator.h
  3c76b9d02b9fb427cf40cabeda299325  libsanitizer/asan/asan_debugging.cc
! 6fb4a545c55a9dd1ef99adc35905f075  libsanitizer/asan/asan_descriptions.cc
! 69ad46effc80e91a40c87cbe7cd34401  libsanitizer/asan/asan_descriptions.h
! 25df589df31d837bdf001dfd2d8e753d  libsanitizer/asan/asan_errors.cc
! b980f32c954326308a9618b6166a11e7  libsanitizer/asan/asan_errors.h
! 9a7507d0a56d2a3ad0ff38553d825c3a  libsanitizer/asan/asan_fake_stack.cc
  dd9aeca4a64c9219c8b377c8485d2b7f  libsanitizer/asan/asan_fake_stack.h
! 6120a001962c127de15f248ffdca80ea  libsanitizer/asan/asan_flags.cc
  749c40bd86f1f8c8c05241630b9d42ab  libsanitizer/asan/asan_flags.h
! f6fa635cd344ee4cef844f4fcc3d5992  libsanitizer/asan/asan_flags.inc
! c789cec3f605927c10378b7f2b46ae8f  libsanitizer/asan/asan_fuchsia.cc
! 115568b9115de2d4f235e35f4009448e  libsanitizer/asan/asan_globals.cc
! a4a3e55b363467cf10fde7c4ba21aefe  libsanitizer/asan/asan_globals_win.cc
  872ff669b1493a0bd72e5fa2652d9cd6  libsanitizer/asan/asan_init_version.h
! d7a13165121ed668905b37fc02488956  libsanitizer/asan/asan_interceptors.cc
! c80b3f1bd3b3d4dd5c5b1d0835fea5b2  libsanitizer/asan/asan_interceptors.h
! 8b47d8f1c4da9603a0c266cea6569b7c  libsanitizer/asan/asan_interceptors_memintrinsics.cc
! 8003d27ed4b4f86e57ce8dac71a5c7de  libsanitizer/asan/asan_interceptors_memintrinsics.h
! a2db438d49e9555d94a2a31d7a32441e  libsanitizer/asan/asan_interface.inc
! 03011bf91ecb5f1551818a9d574da437  libsanitizer/asan/asan_interface_internal.h
! d066576cddaf3e28a67a023489e007fd  libsanitizer/asan/asan_internal.h
! 26d51425d549861278ba6147441497ba  libsanitizer/asan/asan_linux.cc
  68b329da9893e34099c7d8ad5cb9c940  libsanitizer/asan/asan_lock.h
! 478d29f589cf1244a797b1d2c09605c7  libsanitizer/asan/asan_mac.cc
! 9f92c4750ba15b6a27493f0e2cbe0af6  libsanitizer/asan/asan_malloc_linux.cc
  f323246025bcfade4b7c4e25ee45ab66  libsanitizer/asan/asan_malloc_mac.cc
! 6cefbbb7e27ebaa4e842fa28102e74dd  libsanitizer/asan/asan_malloc_win.cc
! b0b0daf020846b5a56ba9907daad9a2c  libsanitizer/asan/asan_mapping.h
! 4ed96e9f9d42f967d23bb8a5ecb3499c  libsanitizer/asan/asan_memory_profile.cc
! 973ddec71c615f21731651741ee19fdd  libsanitizer/asan/asan_new_delete.cc
! a3734104e277512f7c09d3ce6c9003b8  libsanitizer/asan/asan_poisoning.cc
! 8eb97cd32e3f4dcee9f0139ab0d5796c  libsanitizer/asan/asan_poisoning.h
! 61226eb6544c8bcf327788abade7c273  libsanitizer/asan/asan_posix.cc
  532d31a64ae0090c3129ee6a99a70233  libsanitizer/asan/asan_preinit.cc
! 09bfb8da173565acde5e8f942ff60bbe  libsanitizer/asan/asan_report.cc
! 62e1c0cf294937dcfd2371d50d6c15fa  libsanitizer/asan/asan_report.h
! aa87b47d27413550ef1a1cacc5c560ec  libsanitizer/asan/asan_rtl.cc
! e189e396e3acefbc6da326b9cfbf590d  libsanitizer/asan/asan_scariness_score.h
! 389614b88c807f05cf2b55d2cc00d07d  libsanitizer/asan/asan_shadow_setup.cc
  2b0de8ccb4daa64299b41c1bc0328ca2  libsanitizer/asan/asan_stack.cc
! 6ae9a6cd2af09b02a97d4d8771157017  libsanitizer/asan/asan_stack.h
  31c0bffbb3b602565333ea594e54e7a2  libsanitizer/asan/asan_stats.cc
  83d2fec3485902522f83d731fe4b7e03  libsanitizer/asan/asan_stats.h
! b05e1e13f6b405d5d02a629e4d2ef47d  libsanitizer/asan/asan_suppressions.cc
  04139e57785652d8bbb080dca122fc5d  libsanitizer/asan/asan_suppressions.h
! 345481ec7d5aaaa42aeb10a501bee379  libsanitizer/asan/asan_thread.cc
! 4d4d3418e9b3714de9396f21aa8bbb31  libsanitizer/asan/asan_thread.h
! e82416314098c04760eb2de3fb4d7423  libsanitizer/asan/asan_win.cc
! d51d06e561b79d8a6d3d3c6d3c654f07  libsanitizer/asan/asan_win_dll_thunk.cc
! 08fc75a865d11d6d89ff370ec735806e  libsanitizer/asan/asan_win_dynamic_runtime_thunk.cc
! b13376bec07960426c192588b83bb501  libsanitizer/asan/asan_win_weak_interception.cc
! 4b6bbafd7023e50d58912a228dacee8a  libsanitizer/asan/libtool-version
! 3bfc8519bd2b53adabcf5bcc12b71da0  libsanitizer/builtins/assembly.h
  f14b75055c11bb9db5ff23c1d981f7b9  libsanitizer/config.h.in
! 938e8c38f0af24f411007808a3ed7aed  libsanitizer/configure
! 82dff57b7d5b100ace7ed6e4ef222b34  libsanitizer/configure.ac
  a167c94d13ce772d419d964c6b9d3181  libsanitizer/configure.tgt
  b4a5d598d9c1fddc5a43683c868160bc  libsanitizer/include/sanitizer/allocator_interface.h
! 8159dfbedb86d2de27bf8c06f9d19601  libsanitizer/include/sanitizer/asan_interface.h
! 064bb91d97f1577496ad07560fd116ce  libsanitizer/include/sanitizer/common_interface_defs.h
! a390d1f9ff0f5884075b9ceefaec8a41  libsanitizer/include/sanitizer/coverage_interface.h
  cac959680ac4b795083b34dbdc5c4f77  libsanitizer/include/sanitizer/dfsan_interface.h
  a023270d255f36db75c42549d254c3d5  libsanitizer/include/sanitizer/esan_interface.h
  b5f18b779ee55fe8d50ea5ac9465528a  libsanitizer/include/sanitizer/linux_syscall_hooks.h
! e43cd241d1fb3e4f5fba24858fcbfe71  libsanitizer/include/sanitizer/lsan_interface.h
  22f215e51bca73cf58dfc0b89d26880b  libsanitizer/include/sanitizer/msan_interface.h
+ 8b624b57c73b6487b2eedc7c8956ce79  libsanitizer/include/sanitizer/tsan_interface.h
  d72679bea167d6a513d959f5abd149dc  libsanitizer/include/sanitizer/tsan_interface_atomic.h
  c06732d7b90bf79a06f7aa44d08a1fbb  libsanitizer/include/system/asm/ptrace.h
  7b7bed50874b18703cfc3f3e9405dc93  libsanitizer/include/system/linux/aio_abi.h
*************** e0f26bb761d75b6aac187f2c8d755c0b  libsan
*** 65736,66006 ****
  52441feaf66ebf0ecf003bd66b0845a1  libsanitizer/include/system/linux/perf_event.h
  3de6060b4f9ff628820f60672dee5958  libsanitizer/include/system/linux/types.h
  177782c011eb97e4adc68bd2c39b6f84  libsanitizer/include/system/sys/ptrace.h
! 9b6d9638bfb718af8b3bd19759244d8c  libsanitizer/interception/Makefile.am
! 4702440849fadb440f2b9d0454f65aeb  libsanitizer/interception/Makefile.in
! 3d67b9288498027784dbcc8d822fec65  libsanitizer/interception/interception.h
! 3edfd857cbd2c28fc49236dd7f2afe71  libsanitizer/interception/interception_linux.cc
! e1b48abf392d5fff0fe6d93c8f101817  libsanitizer/interception/interception_linux.h
  347aed0181d25e644111900e523538e5  libsanitizer/interception/interception_mac.cc
  1473fac8561a6fea732232a6fa542d10  libsanitizer/interception/interception_mac.h
  6315bfbec171e1dbc429991637439ae9  libsanitizer/interception/interception_type_test.cc
! 3485d51fc1c5dae00898782badd9ff6b  libsanitizer/interception/interception_win.cc
  f7b170b2f2307d24040dafd70876f871  libsanitizer/interception/interception_win.h
! 0220b454ef246a1ce12ca029f221f6ab  libsanitizer/libbacktrace/Makefile.am
! 13e9c59cb8b1282614b88ccb5df70538  libsanitizer/libbacktrace/Makefile.in
! 58a6efa0bdd1e7d2f6a014460c898d1c  libsanitizer/libbacktrace/backtrace-rename.h
  ea35b83ff2eb2bff286f2781693b0cc7  libsanitizer/libbacktrace/backtrace-supported.h.in
  35b2978dd28dbb4048032ad8db998f5c  libsanitizer/libbacktrace/bridge.cc
  4b83707f75499a1070d0ad8757700b50  libsanitizer/libsanitizer.spec.in
  5b95ad6add3888b3ac1fd4fc7b3704ca  libsanitizer/libtool-version
! a21a444759ee3de56679db04a268abff  libsanitizer/lsan/Makefile.am
! bfc6c13137c8c9e34aaa63c38e2dffc4  libsanitizer/lsan/Makefile.in
  5b95ad6add3888b3ac1fd4fc7b3704ca  libsanitizer/lsan/libtool-version
! 776be84a21f498369afd7fd42ca4e28e  libsanitizer/lsan/lsan.cc
! 9e1c76dba515e683781897292ae1a8ef  libsanitizer/lsan/lsan.h
! 1bed567a278349bca0effdb53ab1fbb6  libsanitizer/lsan/lsan_allocator.cc
! 8f9405201e32995cf9c83bed1046aa1d  libsanitizer/lsan/lsan_allocator.h
! b70c6e480ee5097bef5acece773f1ace  libsanitizer/lsan/lsan_common.cc
! 415346117df58f29d9d5202eb2574a91  libsanitizer/lsan/lsan_common.h
! c3c3ecff226f6bcb0074683873b55795  libsanitizer/lsan/lsan_common_linux.cc
  3276a2ad2b90ff35cd457c93a7f4abe8  libsanitizer/lsan/lsan_flags.inc
! 5a05f6ecd9a5a33cd4e635d2319257e6  libsanitizer/lsan/lsan_interceptors.cc
  cffc74fcf2de877df412dbbd386464c3  libsanitizer/lsan/lsan_preinit.cc
! e84373a04ab034c4feadc1876b0b38d0  libsanitizer/lsan/lsan_thread.cc
! e043e56030ffeae3074047e12f7f6373  libsanitizer/lsan/lsan_thread.h
  2ee9616d18de28d8f5d4e68d873bf62c  libsanitizer/merge.sh
! 6ef2543caa3ddda8dd157921fb3e18b5  libsanitizer/sanitizer_common/Makefile.am
! 09bec254a9b157c6504e212178bd8f2d  libsanitizer/sanitizer_common/Makefile.in
! d2254a2ffcf47e15b2cef954a4659006  libsanitizer/sanitizer_common/sanitizer_addrhashmap.h
! 0d160448c43cdb326a386f002e247941  libsanitizer/sanitizer_common/sanitizer_allocator.cc
! 94598a546c02de407bbef978b3a34cac  libsanitizer/sanitizer_common/sanitizer_allocator.h
  834edb57383576291ef45680029a179d  libsanitizer/sanitizer_common/sanitizer_allocator_bytemap.h
! 02d82480192342e92c673efc2b340a15  libsanitizer/sanitizer_common/sanitizer_allocator_combined.h
! bdce5ed8590a511a54a486c1b33f05e9  libsanitizer/sanitizer_common/sanitizer_allocator_interface.h
! d5c0fa772a0d4d116503c097ab82c3dc  libsanitizer/sanitizer_common/sanitizer_allocator_internal.h
! 0161947484d59eebf9a4732e4f8bc3d7  libsanitizer/sanitizer_common/sanitizer_allocator_local_cache.h
! a7fae48c4410492933a0cdcfba9e4ab6  libsanitizer/sanitizer_common/sanitizer_allocator_primary32.h
! 6b1516c1a2dc0a4b61b9d38c3e9be9d6  libsanitizer/sanitizer_common/sanitizer_allocator_primary64.h
! 4f7d1976ee11772fa2b6aac7401821aa  libsanitizer/sanitizer_common/sanitizer_allocator_secondary.h
! 5d0aa58597ff11c9f347fd035ef169d9  libsanitizer/sanitizer_common/sanitizer_allocator_size_class_map.h
  0ca783c40774719c1cab89ffed3522db  libsanitizer/sanitizer_common/sanitizer_allocator_stats.h
  fcff0922427556e0ece160735c9663f9  libsanitizer/sanitizer_common/sanitizer_asm.h
! 2e1a736902a30010416a8ad812117e05  libsanitizer/sanitizer_common/sanitizer_atomic.h
! c3bdeb9b282173a77298c4068c96f865  libsanitizer/sanitizer_common/sanitizer_atomic_clang.h
! f9cbdce21b8eb550bf817e5a78bbb60b  libsanitizer/sanitizer_common/sanitizer_atomic_clang_other.h
  5487c720f00219f3d903ed73675b202d  libsanitizer/sanitizer_common/sanitizer_atomic_clang_x86.h
  5cb925e35ccddb2ba00c15cfee231f1f  libsanitizer/sanitizer_common/sanitizer_atomic_msvc.h
  862adad9930e4ff2ad6b2f73dfc13961  libsanitizer/sanitizer_common/sanitizer_bitvector.h
  40f1f8c70306b4bd87eaf2b49f038521  libsanitizer/sanitizer_common/sanitizer_bvgraph.h
! 4cf7a0d62203cda84c163ae129fbe303  libsanitizer/sanitizer_common/sanitizer_common.cc
! 852085234be79dd66cd60911f40f6e88  libsanitizer/sanitizer_common/sanitizer_common.h
! 08462193a2dcf7f972679b77acb86adc  libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc
! 0245ca282af75f46391dd49d69bf72da  libsanitizer/sanitizer_common/sanitizer_common_interceptors_format.inc
  94dae4be72220d5e304e466de74740b1  libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc
! ec7cfd6c56e050e20069a54658b51e2d  libsanitizer/sanitizer_common/sanitizer_common_libcdep.cc
  43439f076bd7c93088a794fc0d3703a7  libsanitizer/sanitizer_common/sanitizer_common_syscalls.inc
! fad5f19198d22adbfea2a202515073e5  libsanitizer/sanitizer_common/sanitizer_coverage_libcdep.cc
! 8d14b3c4cc0db54b15d2af81d7093685  libsanitizer/sanitizer_common/sanitizer_coverage_mapping_libcdep.cc
  e547501377af087597018e3fba690903  libsanitizer/sanitizer_common/sanitizer_deadlock_detector.h
  62a697f76a6b78fb87d6e14d0bafe730  libsanitizer/sanitizer_common/sanitizer_deadlock_detector1.cc
  314989852a3ce58b2d856e50aa8a3cc8  libsanitizer/sanitizer_common/sanitizer_deadlock_detector2.cc
  2cef260b84205bf33fa20ce6739db7e7  libsanitizer/sanitizer_common/sanitizer_deadlock_detector_interface.h
  3c1b0ed90daf1df4ebe0724e6b9d5e25  libsanitizer/sanitizer_common/sanitizer_flag_parser.cc
! ebbdffdc293511a78d9132621c0195f1  libsanitizer/sanitizer_common/sanitizer_flag_parser.h
  8eb15a309774cf78d93dfc851e7ec2f1  libsanitizer/sanitizer_common/sanitizer_flags.cc
! 086cb162ae5859f29b3ec137859572ad  libsanitizer/sanitizer_common/sanitizer_flags.h
! d06d9be715bf0400428315c0c860ea9e  libsanitizer/sanitizer_common/sanitizer_flags.inc
  9dd05ce88915052b46757fe0b9263bfd  libsanitizer/sanitizer_common/sanitizer_freebsd.h
! e730aa14313612f60b3b8cc19ac6d454  libsanitizer/sanitizer_common/sanitizer_interface_internal.h
! e50709ea0d36f6cc84add9ce005b5db2  libsanitizer/sanitizer_common/sanitizer_internal_defs.h
  1f6c010cc8f73b28951456833a44d66b  libsanitizer/sanitizer_common/sanitizer_lfstack.h
  427c70e59839b9b05c99b3ce8389dc64  libsanitizer/sanitizer_common/sanitizer_libc.cc
  aa78361f71ab28877632c17ac963f9d3  libsanitizer/sanitizer_common/sanitizer_libc.h
! 747fc1b8ac8bdc6a8084962f2774ae78  libsanitizer/sanitizer_common/sanitizer_libignore.cc
! a1ec768a826d8a1d0851585ba62daf32  libsanitizer/sanitizer_common/sanitizer_libignore.h
! 161d062b3f44f784bc8173d6d73d0bdd  libsanitizer/sanitizer_common/sanitizer_linux.cc
! 4edb375102ac2cc66fde22bf250371ef  libsanitizer/sanitizer_common/sanitizer_linux.h
! b3ca7084ca0f698fd4d41cc8215edb10  libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cc
  3fb07abcc04415d320ed341ebe5bc9c4  libsanitizer/sanitizer_common/sanitizer_linux_mips64.S
! 7a4fe4c43a92ec6eb267cb1d2af1467c  libsanitizer/sanitizer_common/sanitizer_linux_s390.cc
! e38f20e9cf2abebb89f5f68d142cc80b  libsanitizer/sanitizer_common/sanitizer_linux_x86_64.S
! bb4968b436edc567421a4aa64eec88df  libsanitizer/sanitizer_common/sanitizer_list.h
! 7f39a55e9206da85c2144193909af751  libsanitizer/sanitizer_common/sanitizer_mac.cc
! ef6525972be22077d3b1033c8349f9b5  libsanitizer/sanitizer_common/sanitizer_mac.h
! 9fef47a0bb12c004916dae9e88b99d02  libsanitizer/sanitizer_common/sanitizer_malloc_mac.inc
! 71e56e8c97c5e0ff483f619b60db8b9f  libsanitizer/sanitizer_common/sanitizer_mutex.h
  1a1598cf25d33f35cf5d414c9067dcf1  libsanitizer/sanitizer_common/sanitizer_persistent_allocator.cc
  9ac19cf86bee52ca9416b00c99441317  libsanitizer/sanitizer_common/sanitizer_persistent_allocator.h
  67548dc5b7d3de2768030870f2bb2e57  libsanitizer/sanitizer_common/sanitizer_placement_new.h
! 84b880a2c62fe5900d5fa9f902c6b413  libsanitizer/sanitizer_common/sanitizer_platform.h
! b7e92c2b43f6385cd1b55eac79397f8c  libsanitizer/sanitizer_common/sanitizer_platform_interceptors.h
  12e351892dc0c5187a76637811e4fe78  libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cc
! 60dcfee0626e524f6f70069e1b6b54ad  libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
! 24318410ea3d521891db49d9c026e964  libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
! 438e63d5e87272815e7ad044b00a1f94  libsanitizer/sanitizer_common/sanitizer_posix.cc
! 089e8e0a6143cb5b0ceec8c71f628ca6  libsanitizer/sanitizer_common/sanitizer_posix.h
! 3b9cb3af3cec4307cb62b811cb40b630  libsanitizer/sanitizer_common/sanitizer_posix_libcdep.cc
! 4fa9ae31baef9c3e49e1dfff05e66691  libsanitizer/sanitizer_common/sanitizer_printf.cc
! 0e676613f30968d67679dbb32a2c7629  libsanitizer/sanitizer_common/sanitizer_procmaps.h
! feb418fab687d8f1daa31995ccb46b40  libsanitizer/sanitizer_common/sanitizer_procmaps_common.cc
! 357aeab89260a568a6492b6167130384  libsanitizer/sanitizer_common/sanitizer_procmaps_freebsd.cc
! 05139517a3ab472c7e25af81f3445701  libsanitizer/sanitizer_common/sanitizer_procmaps_linux.cc
! 623cbf18a327b3937436dff0a8faa42a  libsanitizer/sanitizer_common/sanitizer_procmaps_mac.cc
! ed1a9fcf8091101cda740f282c819c82  libsanitizer/sanitizer_common/sanitizer_quarantine.h
! 41b7439624560d5f16fcac38a3e3b44d  libsanitizer/sanitizer_common/sanitizer_report_decorator.h
! a6af99e100992d25f62e482c91853237  libsanitizer/sanitizer_common/sanitizer_stackdepot.cc
  0a9b86caf0b4a95d7288dae7c33b497a  libsanitizer/sanitizer_common/sanitizer_stackdepot.h
  06b5758b394a39f9ea7439bc3f92f710  libsanitizer/sanitizer_common/sanitizer_stackdepotbase.h
! f5a9be9eb77d9bee91096ed0b92d2486  libsanitizer/sanitizer_common/sanitizer_stacktrace.cc
! ec8cb716a1ba0370ca85825811b6c6af  libsanitizer/sanitizer_common/sanitizer_stacktrace.h
! 2cfa6a1a15d81fcc1d316decc76eeb54  libsanitizer/sanitizer_common/sanitizer_stacktrace_libcdep.cc
! 7d69de9d6a2323e3df4e5984335e025f  libsanitizer/sanitizer_common/sanitizer_stacktrace_printer.cc
! 767d858fa86c7e0d2522fc210e0d30d2  libsanitizer/sanitizer_common/sanitizer_stacktrace_printer.h
! 5b18ce96af3e3a248f843c803847d73a  libsanitizer/sanitizer_common/sanitizer_stoptheworld.h
! b1183610833f276083a616e6444bf31b  libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc
! a3dbc7f2ea89d30086e739c33a205d9b  libsanitizer/sanitizer_common/sanitizer_suppressions.cc
  dac6148d5b1b4dd78612403ce542dd34  libsanitizer/sanitizer_common/sanitizer_suppressions.h
! 6d9285a7303a71cdfca678e3fbe1e3fb  libsanitizer/sanitizer_common/sanitizer_symbolizer.cc
! d81f8012c7edf394cdab70c50d3450ba  libsanitizer/sanitizer_common/sanitizer_symbolizer.h
! 21447c1a0b12a326cb34fb42ccd620a5  libsanitizer/sanitizer_common/sanitizer_symbolizer_internal.h
! 9e5a80d432236818c6a33a1e260d95be  libsanitizer/sanitizer_common/sanitizer_symbolizer_libbacktrace.cc
  146e43b13bd12dd5a9852fb9b5959b8c  libsanitizer/sanitizer_common/sanitizer_symbolizer_libbacktrace.h
! d54bea5f9f5bd16b6e6279acf5dc1a9e  libsanitizer/sanitizer_common/sanitizer_symbolizer_libcdep.cc
  a50bd87487e21ebd5182306de75a4f5f  libsanitizer/sanitizer_common/sanitizer_symbolizer_mac.cc
  8d80ee6a233f1e101546cf73659ca12b  libsanitizer/sanitizer_common/sanitizer_symbolizer_mac.h
! 214402ff358647b8110822af2fce067f  libsanitizer/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc
! ceca7442e2d2f4be5ec444ba852b868f  libsanitizer/sanitizer_common/sanitizer_symbolizer_win.cc
! c83840b839c2c536043849fb0fa7404a  libsanitizer/sanitizer_common/sanitizer_syscall_generic.inc
  6df0b1d69605abfbf99abd4ac9d9ba18  libsanitizer/sanitizer_common/sanitizer_syscall_linux_aarch64.inc
  183ec38bf56455ef1c1b3c34b4c48723  libsanitizer/sanitizer_common/sanitizer_syscall_linux_x86_64.inc
  719c380a8b5619ac190244f230010510  libsanitizer/sanitizer_common/sanitizer_termination.cc
! 26e131b28e0beecc9961c83648e981be  libsanitizer/sanitizer_common/sanitizer_thread_registry.cc
! 4255ba287cff0d23ec66eb12efda7249  libsanitizer/sanitizer_common/sanitizer_thread_registry.h
! 2f885a8ee0ec4dab648a97a650031b73  libsanitizer/sanitizer_common/sanitizer_tls_get_addr.cc
! 5b55578141eb2b8cde06a0328328af02  libsanitizer/sanitizer_common/sanitizer_tls_get_addr.h
! 501fcd15e10dcfd315865dcb461b8346  libsanitizer/sanitizer_common/sanitizer_unwind_linux_libcdep.cc
! c8e80f9e3f56add5fda190d02e2a0006  libsanitizer/sanitizer_common/sanitizer_win.cc
! 3289e061e668afbc78a3952631f92f34  libsanitizer/tsan/Makefile.am
! 7b5357e2b3ce4f583f82e311f29bf6b8  libsanitizer/tsan/Makefile.in
  5b95ad6add3888b3ac1fd4fc7b3704ca  libsanitizer/tsan/libtool-version
! 81736499c2f02f08d884c9c0e3cce317  libsanitizer/tsan/tsan_clock.cc
! e3a4e2df9b66e610247268ef51da996d  libsanitizer/tsan/tsan_clock.h
! b8066b93f4044928f02b36c949f4c0c9  libsanitizer/tsan/tsan_debugging.cc
! 36165a780d1a3cb540cdea9978c9b890  libsanitizer/tsan/tsan_defs.h
! 9daca40b76dca251d6a7c8feab87371d  libsanitizer/tsan/tsan_dense_alloc.h
! 5e3bee242c7fecc060c6c26263817e7e  libsanitizer/tsan/tsan_fd.cc
  4ef509390635ca9f262833fd33eee938  libsanitizer/tsan/tsan_fd.h
! 8c53d88d6a980afce0bda57f913fb964  libsanitizer/tsan/tsan_flags.cc
! 40be6006277285943f85511102f30306  libsanitizer/tsan/tsan_flags.h
! 351bfea455c303422d46e91fd3f0ee6c  libsanitizer/tsan/tsan_flags.inc
  5ecb4de397f9bf5e55d3f5239ab8cc99  libsanitizer/tsan/tsan_ignoreset.cc
  8638cb86b057e2622e6ba23510a717a9  libsanitizer/tsan/tsan_ignoreset.h
! 0e6c338df97cb59cc682ac839fbc5ca8  libsanitizer/tsan/tsan_interceptors.cc
! 7321876fc58028a0aa67a76d07159d35  libsanitizer/tsan/tsan_interceptors.h
! 7f61a4ac9d890b1719b4d040298797ee  libsanitizer/tsan/tsan_interceptors_mac.cc
! 8ae50dae5b721b363399516dc4802734  libsanitizer/tsan/tsan_interface.cc
! 17b70ad1675a13b7b27a430dc315b067  libsanitizer/tsan/tsan_interface.h
! 85362af46d68e310baf261b12bf1419c  libsanitizer/tsan/tsan_interface_ann.cc
  205a19b64ca8846eb9d547d1e1026a56  libsanitizer/tsan/tsan_interface_ann.h
! fc1a82f79f4773c35cf5a9cc0604cfb3  libsanitizer/tsan/tsan_interface_atomic.cc
! 04e7f2f7132d0c8e7ed70ed9ca8b80f6  libsanitizer/tsan/tsan_interface_inl.h
! b9f0f87d7a6270877bcb26bb158bd1d4  libsanitizer/tsan/tsan_interface_java.cc
! 805982f13b607a9a814a75b94898a15e  libsanitizer/tsan/tsan_interface_java.h
! c45620c6e2c7e29e1c5edbfd3e9bdc11  libsanitizer/tsan/tsan_libdispatch_mac.cc
! 0cf353e6230e13d4d56403a9941bc9af  libsanitizer/tsan/tsan_malloc_mac.cc
  20901aace91ab8d82e0d68b93560b7ee  libsanitizer/tsan/tsan_md5.cc
! 75977a2807e3c66938d69eef7564fc03  libsanitizer/tsan/tsan_mman.cc
! ea957317368982b5514649d2efd0bab2  libsanitizer/tsan/tsan_mman.h
  744637cebfff1c9a043fabc76b91808c  libsanitizer/tsan/tsan_mutex.cc
  00bf7cae30864cbd8551336a49138aa4  libsanitizer/tsan/tsan_mutex.h
  3f67a27ad5aa85607f89d53dfc8f8bb7  libsanitizer/tsan/tsan_mutexset.cc
  d1545d1ccd2606a5a63dc56f47efabe6  libsanitizer/tsan/tsan_mutexset.h
! 56fbffba55cadb47bcd6549ef6304f54  libsanitizer/tsan/tsan_new_delete.cc
! 7599266fcb9a6aa39674664c5c269e46  libsanitizer/tsan/tsan_platform.h
! e43229b389059988e803ebbd6e403933  libsanitizer/tsan/tsan_platform_linux.cc
! 3ffedf0695cac8db95d2992f3bbeda8f  libsanitizer/tsan/tsan_platform_mac.cc
! a171ad2c5a5daacd2930bdc042c1acc3  libsanitizer/tsan/tsan_platform_posix.cc
! 9dfe48caa6454a756632b368218573ac  libsanitizer/tsan/tsan_platform_windows.cc
  52a08181bf0cebd537f6ff681e4201d2  libsanitizer/tsan/tsan_ppc_regs.h
  3c03a36aa47b628f443eb9d27aa78169  libsanitizer/tsan/tsan_preinit.cc
! 32376bc53d220ac4935fdfa59be25a3f  libsanitizer/tsan/tsan_report.cc
! 18fb8bc8b99646b17dab465bd9ba7ee4  libsanitizer/tsan/tsan_report.h
! ade1ec7bd6856ad350992ddcaada34ed  libsanitizer/tsan/tsan_rtl.cc
! c3156284d2bc714229b3c303d1f2a49a  libsanitizer/tsan/tsan_rtl.h
! cc9fae354eb809ba52c47f557e424951  libsanitizer/tsan/tsan_rtl_aarch64.S
! 65c0f59d73320b9de90d9a1f1b77268c  libsanitizer/tsan/tsan_rtl_amd64.S
  2e223da4b198b7996aa993b62da9470c  libsanitizer/tsan/tsan_rtl_mips64.S
! 71bff1fa87c90b2469751fd7a690118c  libsanitizer/tsan/tsan_rtl_mutex.cc
  d5178dde7bfc17509fba4b0e457147af  libsanitizer/tsan/tsan_rtl_ppc64.S
  274e1ca30e09061050f1f2a315de8e4f  libsanitizer/tsan/tsan_rtl_proc.cc
! aaf9f24ee625a9e36388665186b8b730  libsanitizer/tsan/tsan_rtl_report.cc
! 9aca2863aba53a1f3ba6d7260bd139a6  libsanitizer/tsan/tsan_rtl_thread.cc
  b7085b7f5aa1cafc8df3d0e7989efc75  libsanitizer/tsan/tsan_stack_trace.cc
  056e17e296854cc69b9ca0db7803519a  libsanitizer/tsan/tsan_stack_trace.h
! c4e72c9bfe40fd8f7ffa5379cc2f74ca  libsanitizer/tsan/tsan_stat.cc
! d9963925f7060d9207cd22856f1b21a4  libsanitizer/tsan/tsan_stat.h
! 34f5ce7b7d01c2dd4248bfa52ddf26dd  libsanitizer/tsan/tsan_suppressions.cc
  487428c4fc9e81747f158647ca84e112  libsanitizer/tsan/tsan_suppressions.h
  d1e045e3128c47f5129757496717ad23  libsanitizer/tsan/tsan_symbolize.cc
  154ce02fd84b0563393cde824128fd35  libsanitizer/tsan/tsan_symbolize.h
! 4ce5a8503bc07df6f714013f7055cb83  libsanitizer/tsan/tsan_sync.cc
! 786a9eca4c765e08d3d4d9c0453ede0b  libsanitizer/tsan/tsan_sync.h
! 6e4431aa86af8a3dd1d7f6729cc213da  libsanitizer/tsan/tsan_trace.h
  74fd58ab44c0a1828f9eae354403dc4e  libsanitizer/tsan/tsan_update_shadow_word_inl.h
  092c1d318e0fbb03056d8e8aabd96827  libsanitizer/tsan/tsan_vector.h
! f2362507419d01e195b62ddac5a95098  libsanitizer/ubsan/Makefile.am
! e82fcbc9e879c6fa1cd072dc7f24203f  libsanitizer/ubsan/Makefile.in
! 5b95ad6add3888b3ac1fd4fc7b3704ca  libsanitizer/ubsan/libtool-version
! a6d5cc9bf05cbd91d8fee432e7679a2f  libsanitizer/ubsan/ubsan_checks.inc
! 84733169b8b73d2a9eccd72df12dcda4  libsanitizer/ubsan/ubsan_diag.cc
! caf38272ee5eb3eb5060ad558fc3de7f  libsanitizer/ubsan/ubsan_diag.h
! 4e7ae502cd4da17623b1f8a14bdc7792  libsanitizer/ubsan/ubsan_flags.cc
  5d7c0e080a170e60ab08348f1f3ecb64  libsanitizer/ubsan/ubsan_flags.h
  8e190f64db7c425e628411dc0987e193  libsanitizer/ubsan/ubsan_flags.inc
! 593fa46c578e94251cd9e8b4c63b68a1  libsanitizer/ubsan/ubsan_handlers.cc
! fc34fd87f36805cc4322bb16b0f9285a  libsanitizer/ubsan/ubsan_handlers.h
! 0275858c357050e51f6ee23e8102972e  libsanitizer/ubsan/ubsan_handlers_cxx.cc
! 15ba0c55dd1fa250c6d5981040a4879f  libsanitizer/ubsan/ubsan_handlers_cxx.h
! a9287638324dcc51c945501f38d78090  libsanitizer/ubsan/ubsan_init.cc
! 46ec3e4a12765f4aaba781b663220b1d  libsanitizer/ubsan/ubsan_init.h
! 097060eb84b7bafe5edbe416201d48ba  libsanitizer/ubsan/ubsan_init_standalone.cc
! f07ab1da60e7fd7f3d27a1960d25e06c  libsanitizer/ubsan/ubsan_platform.h
  15201406cfb3e5a6d035868910f74344  libsanitizer/ubsan/ubsan_type_hash.cc
  729916edf986ea6ae5674af7b11ec47a  libsanitizer/ubsan/ubsan_type_hash.h
! 6db55d4d8995328e05af47b70d569826  libsanitizer/ubsan/ubsan_type_hash_itanium.cc
  0f33fad437a0fa30b1527f8f957011d6  libsanitizer/ubsan/ubsan_type_hash_win.cc
  8b063f15d2aa59cd7d3a2c835729e42d  libsanitizer/ubsan/ubsan_value.cc
  735246869fac0a1e63b5d9c72143e63a  libsanitizer/ubsan/ubsan_value.h
! 7d67e88e5f824df87159ed9eb0d3e4bc  libssp/ChangeLog
! 776e0645b365526b37a8934f921f91b6  libssp/Makefile.am
! 4ca3c95d4bc6b9edac706fca73c37993  libssp/Makefile.in
! b0548e1d34696c0fb30573ffde20c761  libssp/aclocal.m4
  f4886e6dd0590caba717fd1bc96a6f50  libssp/config.h.in
! 03556c11ca4bec5895c1a69fcecfcd46  libssp/configure
! 494e3fe6d79cb561d20fa490359d9059  libssp/configure.ac
! 4d562b75cc0024a1534fd36bbb3aa93f  libssp/gets-chk.c
  0ac32b60459d1fdec670990324d7bdc6  libssp/libtool-version
! 596b3be62d5052200ecf78c89cc38f3c  libssp/memcpy-chk.c
! 540dd11334b3fa6a72a82740e19dad52  libssp/memmove-chk.c
! b70002a55edb85e6a735925cc4c4bd26  libssp/mempcpy-chk.c
! 9f1cc687bc14055d6e23b62b7b0ae44d  libssp/memset-chk.c
! f333ce5391f1a444208bc96c440acb66  libssp/snprintf-chk.c
! b8c3063f96d431753f8025133e14b03d  libssp/sprintf-chk.c
! 3aadfa5de4f9eabe3d4b02f73d373c15  libssp/ssp-local.c
! 5673aaf1526455789e960bfc885a2e5b  libssp/ssp.c
  a45e2fbfb70a8e0d68d726bb31ffe4cd  libssp/ssp.map
! c29d6e62c250fea7a31a482811797979  libssp/ssp/ssp.h.in
! 6f4bebb05d287dda43fb174146ec20b9  libssp/ssp/stdio.h
! a3f9b82cb0472eac3c75cce8e0546776  libssp/ssp/string.h
! 55a0e2ed3d4aa588b3f595ce4401073b  libssp/ssp/unistd.h
! a845b7e7f9099fc06b6deafe09a0e578  libssp/stpcpy-chk.c
! 2508278ccede80de6efe31b60801a175  libssp/strcat-chk.c
! b1831173424b3bacbedae40d56213c53  libssp/strcpy-chk.c
! 3d15a31241560abce8648ffc69b88114  libssp/strncat-chk.c
! 4849bcc282291903a5ab2633972a6f59  libssp/strncpy-chk.c
! 8f39faa199e6457e41dd4673ab8fa2b5  libssp/vsnprintf-chk.c
! b432716a66578ff7c5e7f9c92bc30e25  libssp/vsprintf-chk.c
! 4d77dfbc533bde0f73941b7390dbbfb0  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
--- 70556,70873 ----
  52441feaf66ebf0ecf003bd66b0845a1  libsanitizer/include/system/linux/perf_event.h
  3de6060b4f9ff628820f60672dee5958  libsanitizer/include/system/linux/types.h
  177782c011eb97e4adc68bd2c39b6f84  libsanitizer/include/system/sys/ptrace.h
! e358cb5f2e7c37b0cd0f342084c46dcc  libsanitizer/interception/Makefile.am
! f8803e021e0d19370776b5d6166ded02  libsanitizer/interception/Makefile.in
! 22c073b63c54dcd69e770cb6e5f6a94e  libsanitizer/interception/interception.h
! 7ccbe937db9770807c8208a0afe7839a  libsanitizer/interception/interception_linux.cc
! e208018680c03b62779e9333c0ab5f97  libsanitizer/interception/interception_linux.h
  347aed0181d25e644111900e523538e5  libsanitizer/interception/interception_mac.cc
  1473fac8561a6fea732232a6fa542d10  libsanitizer/interception/interception_mac.h
  6315bfbec171e1dbc429991637439ae9  libsanitizer/interception/interception_type_test.cc
! 91f7b114e11efb0cf905bba8e27fd5a3  libsanitizer/interception/interception_win.cc
  f7b170b2f2307d24040dafd70876f871  libsanitizer/interception/interception_win.h
! 29f4b3c346703488edcbebd71265eb84  libsanitizer/libbacktrace/Makefile.am
! d71cd6b223412929f67f548cbe3a90fe  libsanitizer/libbacktrace/Makefile.in
! a977c759646b5ac8e7e1ec279a92a404  libsanitizer/libbacktrace/backtrace-rename.h
  ea35b83ff2eb2bff286f2781693b0cc7  libsanitizer/libbacktrace/backtrace-supported.h.in
  35b2978dd28dbb4048032ad8db998f5c  libsanitizer/libbacktrace/bridge.cc
  4b83707f75499a1070d0ad8757700b50  libsanitizer/libsanitizer.spec.in
  5b95ad6add3888b3ac1fd4fc7b3704ca  libsanitizer/libtool-version
! cf194e73f2cbbe08ac3cd22189b2ffa7  libsanitizer/lsan/Makefile.am
! acaa2ebd6ad56d4e37b74d8f7d5f8329  libsanitizer/lsan/Makefile.in
  5b95ad6add3888b3ac1fd4fc7b3704ca  libsanitizer/lsan/libtool-version
! 6f058d9f93aac7b198d4a28967a6c755  libsanitizer/lsan/lsan.cc
! 3d1d124e696550b23e35debd521e1d39  libsanitizer/lsan/lsan.h
! 034739056e671c708e306dac5ee256bb  libsanitizer/lsan/lsan_allocator.cc
! d1b018335d34f4373cbff462263e9ae9  libsanitizer/lsan/lsan_allocator.h
! e1bf16a5dd00d9779d148386fac8f1f4  libsanitizer/lsan/lsan_common.cc
! 2706b832404023a38bd46393636d586a  libsanitizer/lsan/lsan_common.h
! 8ad1fa1c5383cbe3fb51af527756d8e6  libsanitizer/lsan/lsan_common_linux.cc
! dd15ec97b740d78e974023c78872c1ee  libsanitizer/lsan/lsan_common_mac.cc
  3276a2ad2b90ff35cd457c93a7f4abe8  libsanitizer/lsan/lsan_flags.inc
! 5f9282f37bb2b6988009a79c4f57356d  libsanitizer/lsan/lsan_interceptors.cc
! a461c69cde87c052ee3498e5912e51c7  libsanitizer/lsan/lsan_linux.cc
! 7a1bb5b3a85fcee2787629b0bc736d90  libsanitizer/lsan/lsan_mac.cc
! 09de77da590b50031094f18fff645841  libsanitizer/lsan/lsan_malloc_mac.cc
  cffc74fcf2de877df412dbbd386464c3  libsanitizer/lsan/lsan_preinit.cc
! 99984c910a0a04e63934a5d2666b45ba  libsanitizer/lsan/lsan_thread.cc
! 613affebabe27b314614c533fac3afb6  libsanitizer/lsan/lsan_thread.h
  2ee9616d18de28d8f5d4e68d873bf62c  libsanitizer/merge.sh
! f35097d2e02d908e75e21d1a0b9b9a80  libsanitizer/sanitizer_common/Makefile.am
! 5a5ebb6a071df634f41d53809abec100  libsanitizer/sanitizer_common/Makefile.in
! 75d376917a9b094b8fb7efca78984b34  libsanitizer/sanitizer_common/sancov_flags.cc
! e43dd5a7d99213d07b373d093564166b  libsanitizer/sanitizer_common/sancov_flags.h
! 67fba8ed743edd4a0455fd21c17c067c  libsanitizer/sanitizer_common/sancov_flags.inc
! 73d5e09c1e7c0074721eeb3bc85770b1  libsanitizer/sanitizer_common/sanitizer_addrhashmap.h
! 25ad31027378ae185f2b4acd6e688382  libsanitizer/sanitizer_common/sanitizer_allocator.cc
! 40b88a719cd4b092cae9b7becbb66550  libsanitizer/sanitizer_common/sanitizer_allocator.h
  834edb57383576291ef45680029a179d  libsanitizer/sanitizer_common/sanitizer_allocator_bytemap.h
! fad4b9967fe5286409d7501e51791e67  libsanitizer/sanitizer_common/sanitizer_allocator_checks.cc
! 517b8cf2b1344147f2224ac510df0d05  libsanitizer/sanitizer_common/sanitizer_allocator_checks.h
! a269ba0fbf7d1f339926d831217ab69b  libsanitizer/sanitizer_common/sanitizer_allocator_combined.h
! 73f6b8fbfed51a217ab32f761765d495  libsanitizer/sanitizer_common/sanitizer_allocator_interface.h
! 215a558cec53b6d821ab4ddfc3408940  libsanitizer/sanitizer_common/sanitizer_allocator_internal.h
! 28f9986e4b1c04c7f903f84fc783db86  libsanitizer/sanitizer_common/sanitizer_allocator_local_cache.h
! 28a9314e621abc137979ad8203db3a9e  libsanitizer/sanitizer_common/sanitizer_allocator_primary32.h
! bddc4fed00a17539b1cd72d0a8ae7dec  libsanitizer/sanitizer_common/sanitizer_allocator_primary64.h
! 63de72e139e3ad5bc4e25cfd4648eea0  libsanitizer/sanitizer_common/sanitizer_allocator_secondary.h
! 3100c71d6a37e2a241ea6b4ea97065e1  libsanitizer/sanitizer_common/sanitizer_allocator_size_class_map.h
  0ca783c40774719c1cab89ffed3522db  libsanitizer/sanitizer_common/sanitizer_allocator_stats.h
  fcff0922427556e0ece160735c9663f9  libsanitizer/sanitizer_common/sanitizer_asm.h
! f43788332fafd85232dbae8e1e82b55f  libsanitizer/sanitizer_common/sanitizer_atomic.h
! d8ccf7d19b8c938f9d6c22d531543aec  libsanitizer/sanitizer_common/sanitizer_atomic_clang.h
! 0079d18c2c6bc16bed55be113e7aded2  libsanitizer/sanitizer_common/sanitizer_atomic_clang_other.h
  5487c720f00219f3d903ed73675b202d  libsanitizer/sanitizer_common/sanitizer_atomic_clang_x86.h
  5cb925e35ccddb2ba00c15cfee231f1f  libsanitizer/sanitizer_common/sanitizer_atomic_msvc.h
  862adad9930e4ff2ad6b2f73dfc13961  libsanitizer/sanitizer_common/sanitizer_bitvector.h
  40f1f8c70306b4bd87eaf2b49f038521  libsanitizer/sanitizer_common/sanitizer_bvgraph.h
! aa95edec97e90f4f5d7c0459db222f9b  libsanitizer/sanitizer_common/sanitizer_common.cc
! 040d4d6abbdbacf6d15c9d9f7a14d12d  libsanitizer/sanitizer_common/sanitizer_common.h
! be6e228364c912a4a521e446166cb506  libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc
! 0cbd98396848ce66b0decca82d9d9fb5  libsanitizer/sanitizer_common/sanitizer_common_interceptors_format.inc
  94dae4be72220d5e304e466de74740b1  libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc
! 13d7256c5fcaaef276e754c182029222  libsanitizer/sanitizer_common/sanitizer_common_interface.inc
! d4c705eddfa4faf5a255446771e9f527  libsanitizer/sanitizer_common/sanitizer_common_interface_posix.inc
! fa7222458b68c7c24b22aab38198c51d  libsanitizer/sanitizer_common/sanitizer_common_libcdep.cc
! 036c87501276a66924d33e01ce89b9a6  libsanitizer/sanitizer_common/sanitizer_common_nolibc.cc
  43439f076bd7c93088a794fc0d3703a7  libsanitizer/sanitizer_common/sanitizer_common_syscalls.inc
! 4bb689d6d0da7f3ce0ccbaf19c026052  libsanitizer/sanitizer_common/sanitizer_coverage_fuchsia.cc
! ce1e178cb31af802ed153f459b32a6ce  libsanitizer/sanitizer_common/sanitizer_coverage_interface.inc
! b041c6d8786543cd630bf3469fb68b28  libsanitizer/sanitizer_common/sanitizer_coverage_libcdep_new.cc
! eb96ded2f052e81e05f6d25a788ae5ed  libsanitizer/sanitizer_common/sanitizer_coverage_win_dll_thunk.cc
! 2c09bf56ba910c4a9c50ee4d215d00a9  libsanitizer/sanitizer_common/sanitizer_coverage_win_dynamic_runtime_thunk.cc
! d314a9c4a0323e4a6f7da0e19ca9a073  libsanitizer/sanitizer_common/sanitizer_coverage_win_sections.cc
! 93f9abbb37abebfd39ae32e0dcf2addb  libsanitizer/sanitizer_common/sanitizer_coverage_win_weak_interception.cc
! 405a9995ebbbdabe541a9be88213fe31  libsanitizer/sanitizer_common/sanitizer_dbghelp.h
  e547501377af087597018e3fba690903  libsanitizer/sanitizer_common/sanitizer_deadlock_detector.h
  62a697f76a6b78fb87d6e14d0bafe730  libsanitizer/sanitizer_common/sanitizer_deadlock_detector1.cc
  314989852a3ce58b2d856e50aa8a3cc8  libsanitizer/sanitizer_common/sanitizer_deadlock_detector2.cc
  2cef260b84205bf33fa20ce6739db7e7  libsanitizer/sanitizer_common/sanitizer_deadlock_detector_interface.h
+ 01a35b2022cb2f43d18ea3728cc7df85  libsanitizer/sanitizer_common/sanitizer_errno.cc
+ 7e81420c3d1efeed0fc06f1b32afb3b8  libsanitizer/sanitizer_common/sanitizer_errno.h
+ 662ef40ed2da551c0d21f46fe7f03497  libsanitizer/sanitizer_common/sanitizer_errno_codes.h
+ 13deb9367c55249257812a0a48ba5194  libsanitizer/sanitizer_common/sanitizer_file.cc
+ 5d283ccadb42d49e775612d5456ae56f  libsanitizer/sanitizer_common/sanitizer_file.h
  3c1b0ed90daf1df4ebe0724e6b9d5e25  libsanitizer/sanitizer_common/sanitizer_flag_parser.cc
! b3e0b27fd10a7dbd037fe63d88c130b9  libsanitizer/sanitizer_common/sanitizer_flag_parser.h
  8eb15a309774cf78d93dfc851e7ec2f1  libsanitizer/sanitizer_common/sanitizer_flags.cc
! f0ad27a9f22a41935a3c333359120f43  libsanitizer/sanitizer_common/sanitizer_flags.h
! 74df2f876a636f587bc0953a95425fe6  libsanitizer/sanitizer_common/sanitizer_flags.inc
  9dd05ce88915052b46757fe0b9263bfd  libsanitizer/sanitizer_common/sanitizer_freebsd.h
! 0bb9da98dbbc2713831b006e21007ab4  libsanitizer/sanitizer_common/sanitizer_fuchsia.cc
! 463a6ec65b299d48ede7439c325b592d  libsanitizer/sanitizer_common/sanitizer_fuchsia.h
! cd82d922ad26bc3008fae0d7e9dd80e6  libsanitizer/sanitizer_common/sanitizer_interface_internal.h
! b4d538affd1d997e8a6ae12a47d1fac2  libsanitizer/sanitizer_common/sanitizer_internal_defs.h
  1f6c010cc8f73b28951456833a44d66b  libsanitizer/sanitizer_common/sanitizer_lfstack.h
  427c70e59839b9b05c99b3ce8389dc64  libsanitizer/sanitizer_common/sanitizer_libc.cc
  aa78361f71ab28877632c17ac963f9d3  libsanitizer/sanitizer_common/sanitizer_libc.h
! 63ae21e34879ef3e55748f7d38ade330  libsanitizer/sanitizer_common/sanitizer_libignore.cc
! 2c337686285879ccff9d9175d2267986  libsanitizer/sanitizer_common/sanitizer_libignore.h
! bc41b7d497527646f6a05cf70f055741  libsanitizer/sanitizer_common/sanitizer_linux.cc
! 1ba8c65bb2de2912096653f5a1527138  libsanitizer/sanitizer_common/sanitizer_linux.h
! aafe79ea0a05c995ca3a2819dc44d205  libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cc
  3fb07abcc04415d320ed341ebe5bc9c4  libsanitizer/sanitizer_common/sanitizer_linux_mips64.S
! d798c37c3aadba3959b4951b99bd3e0c  libsanitizer/sanitizer_common/sanitizer_linux_s390.cc
! 34f24a812b8fe5ab8eda5784c7c10a40  libsanitizer/sanitizer_common/sanitizer_linux_x86_64.S
! ec1b61927c59250cd02a0fc4d4db16b8  libsanitizer/sanitizer_common/sanitizer_list.h
! 0bacd84ff437041696d9ff4b082b3915  libsanitizer/sanitizer_common/sanitizer_mac.cc
! a93dde84cb019c60dd0c4562a32ea8b3  libsanitizer/sanitizer_common/sanitizer_mac.h
! fa95401142f34bf5470fecf53dfabe3c  libsanitizer/sanitizer_common/sanitizer_mac_libcdep.cc
! db0e762097fd0184a3f34d4ccd586dba  libsanitizer/sanitizer_common/sanitizer_malloc_mac.inc
! ba863cde49bfd0852ac8471c23fff987  libsanitizer/sanitizer_common/sanitizer_mutex.h
  1a1598cf25d33f35cf5d414c9067dcf1  libsanitizer/sanitizer_common/sanitizer_persistent_allocator.cc
  9ac19cf86bee52ca9416b00c99441317  libsanitizer/sanitizer_common/sanitizer_persistent_allocator.h
  67548dc5b7d3de2768030870f2bb2e57  libsanitizer/sanitizer_common/sanitizer_placement_new.h
! 85d8d0d9296570be142fa428629bd5dd  libsanitizer/sanitizer_common/sanitizer_platform.h
! 2f599f886e04760fc1d006f88232caf3  libsanitizer/sanitizer_common/sanitizer_platform_interceptors.h
  12e351892dc0c5187a76637811e4fe78  libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cc
! bf83351f76a21b8e31a7b0ddb90d4f25  libsanitizer/sanitizer_common/sanitizer_platform_limits_netbsd.cc
! 6f015933e239a9b36914e7fef5350cb5  libsanitizer/sanitizer_common/sanitizer_platform_limits_netbsd.h
! b616425480217dd535f897e195669965  libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
! 5014bd63f0884ec761d7a9531521fe1b  libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
! cb36de7c4a74dc34a8c607ba59d67421  libsanitizer/sanitizer_common/sanitizer_posix.cc
! e14dd858b7329762ae6f0903a60bf243  libsanitizer/sanitizer_common/sanitizer_posix.h
! ef33962167fb3a32a0c968bf2cf8ae44  libsanitizer/sanitizer_common/sanitizer_posix_libcdep.cc
! a2c2aef21cd4c39db7311026110c5773  libsanitizer/sanitizer_common/sanitizer_printf.cc
! 994e6b9bfc6063ea767a165edc48720c  libsanitizer/sanitizer_common/sanitizer_procmaps.h
! a60cce015767595cf6eee9c38a7f2a61  libsanitizer/sanitizer_common/sanitizer_procmaps_common.cc
! 7a8da67b61b4b5b45ce8e7b99029e40c  libsanitizer/sanitizer_common/sanitizer_procmaps_freebsd.cc
! 2e9f3fb95b94c5b90557415f752ecdfb  libsanitizer/sanitizer_common/sanitizer_procmaps_linux.cc
! af65a7727d4dad356fd4f4eb835b453c  libsanitizer/sanitizer_common/sanitizer_procmaps_mac.cc
! 7394def23ae5be2a6bb3a04a7b5a3e72  libsanitizer/sanitizer_common/sanitizer_quarantine.h
! cb88e49512544de961017982efe82d9a  libsanitizer/sanitizer_common/sanitizer_report_decorator.h
! d269818b6676aa37df8a2c3d7b51c6b7  libsanitizer/sanitizer_common/sanitizer_signal_interceptors.inc
! 52fa310f88242d70efa68c7d9b5a1ce0  libsanitizer/sanitizer_common/sanitizer_stackdepot.cc
  0a9b86caf0b4a95d7288dae7c33b497a  libsanitizer/sanitizer_common/sanitizer_stackdepot.h
  06b5758b394a39f9ea7439bc3f92f710  libsanitizer/sanitizer_common/sanitizer_stackdepotbase.h
! 1f42c82b538278fccda8497156620d03  libsanitizer/sanitizer_common/sanitizer_stacktrace.cc
! 89c0768a50a87ff22bdde882fd6f1d61  libsanitizer/sanitizer_common/sanitizer_stacktrace.h
! 5461e1ddaf78ff4ab9b5e445ef94da93  libsanitizer/sanitizer_common/sanitizer_stacktrace_libcdep.cc
! b99a153ca2d6517c0f612cd965f0fd6d  libsanitizer/sanitizer_common/sanitizer_stacktrace_printer.cc
! 219ab70ef069fc12524ee4cbfdc40c2d  libsanitizer/sanitizer_common/sanitizer_stacktrace_printer.h
! b57cb90f97156f6374c54aee924a58ec  libsanitizer/sanitizer_common/sanitizer_stoptheworld.h
! 89258491d529bbbab7d1ddffe38058be  libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc
! 60e8b8fb784a2c2b1567e2c859f94eb7  libsanitizer/sanitizer_common/sanitizer_stoptheworld_mac.cc
! c9582614b62b474a49b3632b58ca91bd  libsanitizer/sanitizer_common/sanitizer_suppressions.cc
  dac6148d5b1b4dd78612403ce542dd34  libsanitizer/sanitizer_common/sanitizer_suppressions.h
! 1b0a259347c1717ca871587878360e1b  libsanitizer/sanitizer_common/sanitizer_symbolizer.cc
! 5c2cd025c6e63eb11ac7919cd15fa4e1  libsanitizer/sanitizer_common/sanitizer_symbolizer.h
! 7cb4edcdd5bd9ff1cd102b48d41679c6  libsanitizer/sanitizer_common/sanitizer_symbolizer_fuchsia.cc
! 172fe6daec739b0df0cb89bf01273d15  libsanitizer/sanitizer_common/sanitizer_symbolizer_internal.h
! 6a11c84c91b2bf238583656e56b47667  libsanitizer/sanitizer_common/sanitizer_symbolizer_libbacktrace.cc
  146e43b13bd12dd5a9852fb9b5959b8c  libsanitizer/sanitizer_common/sanitizer_symbolizer_libbacktrace.h
! f131b8ebf33f0b1636bb7c21a969c416  libsanitizer/sanitizer_common/sanitizer_symbolizer_libcdep.cc
  a50bd87487e21ebd5182306de75a4f5f  libsanitizer/sanitizer_common/sanitizer_symbolizer_mac.cc
  8d80ee6a233f1e101546cf73659ca12b  libsanitizer/sanitizer_common/sanitizer_symbolizer_mac.h
! ad75aa3eefc562cd5a6b93802fd2f2ae  libsanitizer/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc
! 3b2dc2bc238ca81f8456f9c7d214a623  libsanitizer/sanitizer_common/sanitizer_symbolizer_win.cc
! 3b4c41db00caf66997ed5397ce7ae803  libsanitizer/sanitizer_common/sanitizer_syscall_generic.inc
  6df0b1d69605abfbf99abd4ac9d9ba18  libsanitizer/sanitizer_common/sanitizer_syscall_linux_aarch64.inc
  183ec38bf56455ef1c1b3c34b4c48723  libsanitizer/sanitizer_common/sanitizer_syscall_linux_x86_64.inc
  719c380a8b5619ac190244f230010510  libsanitizer/sanitizer_common/sanitizer_termination.cc
! 5f996f1e922698341fa74041226b7c28  libsanitizer/sanitizer_common/sanitizer_thread_registry.cc
! 8321d37fc1f4aa2a5a990d3884c5b4a4  libsanitizer/sanitizer_common/sanitizer_thread_registry.h
! 3aa458184dedc4da8de62d974e63fdb0  libsanitizer/sanitizer_common/sanitizer_tls_get_addr.cc
! 562be39e3905cc19c402dd478cc83a0f  libsanitizer/sanitizer_common/sanitizer_tls_get_addr.h
! 45a480263bb98d848c20e6d2e0f401b1  libsanitizer/sanitizer_common/sanitizer_unwind_linux_libcdep.cc
! 89f5fa52874c168a9318f93d7aac4f25  libsanitizer/sanitizer_common/sanitizer_win.cc
! 279a422c7a796f3cce53b48c9fad26a2  libsanitizer/sanitizer_common/sanitizer_win.h
! b950376a4615334858bac2201742325a  libsanitizer/sanitizer_common/sanitizer_win_defs.h
! 625a8f54a99b2cbbc94f79520a01ecf0  libsanitizer/sanitizer_common/sanitizer_win_dll_thunk.cc
! 9706835af907939d12f6f46cd87ae64d  libsanitizer/sanitizer_common/sanitizer_win_dll_thunk.h
! aa6c60a2af7e794a2d10cf921ef61686  libsanitizer/sanitizer_common/sanitizer_win_dynamic_runtime_thunk.cc
! 046bd46d619cb6c5909abeb8479b6793  libsanitizer/sanitizer_common/sanitizer_win_weak_interception.cc
! f8269926deab214f73a1b25221f8e336  libsanitizer/sanitizer_common/sanitizer_win_weak_interception.h
! 2eeaea2416206545660443ab0330fd0c  libsanitizer/tsan/Makefile.am
! 3226dc66c7810f4e9f9e840c9b7d2866  libsanitizer/tsan/Makefile.in
  5b95ad6add3888b3ac1fd4fc7b3704ca  libsanitizer/tsan/libtool-version
! abe56e8761a353eae9a0ec807692050d  libsanitizer/tsan/tsan_clock.cc
! 13aa298d348f860584368f83932f7247  libsanitizer/tsan/tsan_clock.h
! 9f196ef46617a06b49ef1fb2517e82e5  libsanitizer/tsan/tsan_debugging.cc
! 0a51072c27fd6e034b3111f6a3f5040e  libsanitizer/tsan/tsan_defs.h
! d63e6070a1a82c114a2e076bb4b30e66  libsanitizer/tsan/tsan_dense_alloc.h
! 60d749c9c3abf2fadb6cb71251f39016  libsanitizer/tsan/tsan_external.cc
! 09e4839ece0ac8264b771b5ab382c1fa  libsanitizer/tsan/tsan_fd.cc
  4ef509390635ca9f262833fd33eee938  libsanitizer/tsan/tsan_fd.h
! 5235852508bd2c7af8c346a6b64cf517  libsanitizer/tsan/tsan_flags.cc
! 1d664c8897031b4fa2e31ad5427d3c6e  libsanitizer/tsan/tsan_flags.h
! 281fd8b6ad065a09e5cf50b37e4c1032  libsanitizer/tsan/tsan_flags.inc
  5ecb4de397f9bf5e55d3f5239ab8cc99  libsanitizer/tsan/tsan_ignoreset.cc
  8638cb86b057e2622e6ba23510a717a9  libsanitizer/tsan/tsan_ignoreset.h
! 08cc6920727253e37d52f6564d25a132  libsanitizer/tsan/tsan_interceptors.cc
! 0a1da5f805f71583720a4a881d75febd  libsanitizer/tsan/tsan_interceptors.h
! 74c94c948ee048c30db5deb36cb4eb3e  libsanitizer/tsan/tsan_interceptors_mac.cc
! 372964e5fc15262479fb37c970ba5f05  libsanitizer/tsan/tsan_interface.cc
! 63f6a4d452920086ca28f86d2569feb1  libsanitizer/tsan/tsan_interface.h
! afc401ef7f744e28717da943315a5877  libsanitizer/tsan/tsan_interface_ann.cc
  205a19b64ca8846eb9d547d1e1026a56  libsanitizer/tsan/tsan_interface_ann.h
! 35d47ce64ee5ab35538a1b0da9ed50b5  libsanitizer/tsan/tsan_interface_atomic.cc
! 5bef1f6e9d6c3d7e9afd66c54ef3b300  libsanitizer/tsan/tsan_interface_inl.h
! 17d3810f94753a95619a576031d660f9  libsanitizer/tsan/tsan_interface_java.cc
! 51577bfa5764d2dc0106144bd3e0f927  libsanitizer/tsan/tsan_interface_java.h
! 957ecf675fef5cb2b9f65baff040b0d3  libsanitizer/tsan/tsan_libdispatch_mac.cc
! 6ce31da630d9cb961d364fc05693b3c0  libsanitizer/tsan/tsan_malloc_mac.cc
  20901aace91ab8d82e0d68b93560b7ee  libsanitizer/tsan/tsan_md5.cc
! 03cea5bcbfcd863e7f1edb4dd3b30ca0  libsanitizer/tsan/tsan_mman.cc
! 7ae7a0cf339358be0b3b7e3972628a9f  libsanitizer/tsan/tsan_mman.h
  744637cebfff1c9a043fabc76b91808c  libsanitizer/tsan/tsan_mutex.cc
  00bf7cae30864cbd8551336a49138aa4  libsanitizer/tsan/tsan_mutex.h
  3f67a27ad5aa85607f89d53dfc8f8bb7  libsanitizer/tsan/tsan_mutexset.cc
  d1545d1ccd2606a5a63dc56f47efabe6  libsanitizer/tsan/tsan_mutexset.h
! 54eaaf0c58d0add1011a525b062ca345  libsanitizer/tsan/tsan_new_delete.cc
! 36c6a2d887258f409965bb1aade5aacf  libsanitizer/tsan/tsan_platform.h
! d499dd1c9d8bfc10189e751db7908e4d  libsanitizer/tsan/tsan_platform_linux.cc
! af33ac478425c8e962a2e1bf8d165044  libsanitizer/tsan/tsan_platform_mac.cc
! 7b1776652d3bf9b1425ee38b0af5cb6a  libsanitizer/tsan/tsan_platform_posix.cc
! c817787e3b56860b9008b246c02371d5  libsanitizer/tsan/tsan_platform_windows.cc
  52a08181bf0cebd537f6ff681e4201d2  libsanitizer/tsan/tsan_ppc_regs.h
  3c03a36aa47b628f443eb9d27aa78169  libsanitizer/tsan/tsan_preinit.cc
! 5c06d9abe5c6732ccf226ff236f65f36  libsanitizer/tsan/tsan_report.cc
! d7e6310664edead9f625af7c3bf51fc6  libsanitizer/tsan/tsan_report.h
! ed7871e35c6ffe2906f1345355e86428  libsanitizer/tsan/tsan_rtl.cc
! fe845affac1b5967a2b6644c533e3f02  libsanitizer/tsan/tsan_rtl.h
! 5ffdd4da356b6306509611792c5e11e5  libsanitizer/tsan/tsan_rtl_aarch64.S
! dabfb22b3b13077b22ad055938a5d915  libsanitizer/tsan/tsan_rtl_amd64.S
  2e223da4b198b7996aa993b62da9470c  libsanitizer/tsan/tsan_rtl_mips64.S
! 04b41e9ee08ed303542dff94102bc852  libsanitizer/tsan/tsan_rtl_mutex.cc
  d5178dde7bfc17509fba4b0e457147af  libsanitizer/tsan/tsan_rtl_ppc64.S
  274e1ca30e09061050f1f2a315de8e4f  libsanitizer/tsan/tsan_rtl_proc.cc
! 7b0748f5cd876890a817ab2e14d206c6  libsanitizer/tsan/tsan_rtl_report.cc
! d0f642a2815038a5b414be156be66d75  libsanitizer/tsan/tsan_rtl_thread.cc
  b7085b7f5aa1cafc8df3d0e7989efc75  libsanitizer/tsan/tsan_stack_trace.cc
  056e17e296854cc69b9ca0db7803519a  libsanitizer/tsan/tsan_stack_trace.h
! 37697ed3849f2b1c9bbd5ebbcf4c5992  libsanitizer/tsan/tsan_stat.cc
! 7e11911ccb2c454ecb25e511c096d7f3  libsanitizer/tsan/tsan_stat.h
! 8c59c7654bb257efa6040014c6adc8ec  libsanitizer/tsan/tsan_suppressions.cc
  487428c4fc9e81747f158647ca84e112  libsanitizer/tsan/tsan_suppressions.h
  d1e045e3128c47f5129757496717ad23  libsanitizer/tsan/tsan_symbolize.cc
  154ce02fd84b0563393cde824128fd35  libsanitizer/tsan/tsan_symbolize.h
! 0417d3fd64af50bf06717e1f451cc6ec  libsanitizer/tsan/tsan_sync.cc
! 392fcf56cbdec9c8a2de7fae9b8d7bd9  libsanitizer/tsan/tsan_sync.h
! b4b3e3637406141d54d692691c6d6095  libsanitizer/tsan/tsan_trace.h
  74fd58ab44c0a1828f9eae354403dc4e  libsanitizer/tsan/tsan_update_shadow_word_inl.h
  092c1d318e0fbb03056d8e8aabd96827  libsanitizer/tsan/tsan_vector.h
! bf6c9d3bbc67c5c7a516f78cf7885380  libsanitizer/ubsan/Makefile.am
! 621de4adb8df97b37177e851a750c47a  libsanitizer/ubsan/Makefile.in
! 5b293cda36e9563e30f9d993ce8b5c94  libsanitizer/ubsan/libtool-version
! 5dc05696363677181158f9db72b90140  libsanitizer/ubsan/ubsan_checks.inc
! 89ef14cd4769b84d01ede2ac01abd89d  libsanitizer/ubsan/ubsan_diag.cc
! 5b0acd518b8f357f773b1d84cf300128  libsanitizer/ubsan/ubsan_diag.h
! 0d191d31f765949c1cb6bc5e0897e0ff  libsanitizer/ubsan/ubsan_diag_standalone.cc
! 3ace99383fa2180d1bc00feb26ec7d70  libsanitizer/ubsan/ubsan_flags.cc
  5d7c0e080a170e60ab08348f1f3ecb64  libsanitizer/ubsan/ubsan_flags.h
  8e190f64db7c425e628411dc0987e193  libsanitizer/ubsan/ubsan_flags.inc
! f358a0250605f3df4eedae97a3373406  libsanitizer/ubsan/ubsan_handlers.cc
! 1447e47ac99083482e8d47eda610cf0a  libsanitizer/ubsan/ubsan_handlers.h
! f49d6abf02a108d4a6c340ba6811c930  libsanitizer/ubsan/ubsan_handlers_cxx.cc
! 8388f5d8e130b281a0cfdb50746cd82f  libsanitizer/ubsan/ubsan_handlers_cxx.h
! aa8b7e21409f878b1c0f0daf7f897e64  libsanitizer/ubsan/ubsan_init.cc
! ca2a312d39e4566a07743fe2bc200e5b  libsanitizer/ubsan/ubsan_init.h
! bd7588880e9c454cbe9eb986ad66b01b  libsanitizer/ubsan/ubsan_init_standalone.cc
! 0424e5e4c7fe9b5c699a189972f91685  libsanitizer/ubsan/ubsan_init_standalone_preinit.cc
! c5879d18c940a4f39d0fa273fd180cec  libsanitizer/ubsan/ubsan_interface.inc
! 9165ccdbf603145f3a2c218e2034638f  libsanitizer/ubsan/ubsan_platform.h
! 512f427fea1282f0f073a181fdd53b21  libsanitizer/ubsan/ubsan_signals_standalone.cc
! 9838caed9b3548929de937e9dad4df08  libsanitizer/ubsan/ubsan_signals_standalone.h
  15201406cfb3e5a6d035868910f74344  libsanitizer/ubsan/ubsan_type_hash.cc
  729916edf986ea6ae5674af7b11ec47a  libsanitizer/ubsan/ubsan_type_hash.h
! 6a1a416799a59267c634e1711d571761  libsanitizer/ubsan/ubsan_type_hash_itanium.cc
  0f33fad437a0fa30b1527f8f957011d6  libsanitizer/ubsan/ubsan_type_hash_win.cc
  8b063f15d2aa59cd7d3a2c835729e42d  libsanitizer/ubsan/ubsan_value.cc
  735246869fac0a1e63b5d9c72143e63a  libsanitizer/ubsan/ubsan_value.h
! 46e3b6415e85a8bbfc9c5ea5256eba29  libsanitizer/ubsan/ubsan_win_dll_thunk.cc
! a42bfadb27dcd986b87e4c05b987ec4f  libsanitizer/ubsan/ubsan_win_dynamic_runtime_thunk.cc
! fbe131ba54e0deb0af35869b10c45e4a  libsanitizer/ubsan/ubsan_win_weak_interception.cc
! 37f9e6f740b198201f70aacaa29e2333  libssp/ChangeLog
! 2fbb6d42c9219e5a15363976ae7ba49e  libssp/Makefile.am
! b0a50bbb91d3f61cc74b49b8b438feda  libssp/Makefile.in
! 3f58b0fe2019cd8e6090e6d5d51d233e  libssp/aclocal.m4
  f4886e6dd0590caba717fd1bc96a6f50  libssp/config.h.in
! a7a19832a5b833c3d49d13cf9252adf1  libssp/configure
! 015676860e97b4a04e6b21e4cd106e11  libssp/configure.ac
! 82854d3b934a5340694729bef5438d37  libssp/gets-chk.c
  0ac32b60459d1fdec670990324d7bdc6  libssp/libtool-version
! a62d4d1e63d9271726bc523bda6392bd  libssp/memcpy-chk.c
! 21bbb1b8cca9141aa4975d5414e020c0  libssp/memmove-chk.c
! 1ca30629296503f2e80eb57fc49b94ae  libssp/mempcpy-chk.c
! 3f480b186a018eaa058c294996bf289d  libssp/memset-chk.c
! e0e37e22c191b955238fde9adcb21f32  libssp/snprintf-chk.c
! b9c37e6c00c7636c40703cc2a30ed7dd  libssp/sprintf-chk.c
! 5bf1e89fbc4afd04d1788cb4f43b2103  libssp/ssp-local.c
! 381ff1ee742996c7f2c4e07ee51b0cde  libssp/ssp.c
  a45e2fbfb70a8e0d68d726bb31ffe4cd  libssp/ssp.map
! 6373209f084a5c6feec0dfd31025aa27  libssp/ssp/ssp.h.in
! 97536b3f31f4b6e4fc75ffa6159dc9c7  libssp/ssp/stdio.h
! 0e9b632eca808e43878c37e44d3152e2  libssp/ssp/string.h
! 50fce3024e82bbeb769b77fb69dc3c24  libssp/ssp/unistd.h
! 0334440423f3da4a5ff015fc1c50bdd6  libssp/stpcpy-chk.c
! 9abe58d7e534acf0c245f26bb604cf8b  libssp/strcat-chk.c
! d573bc41efa1df13914f31ba0d666d2f  libssp/strcpy-chk.c
! d039df3e0460a3ce2b6abaa4400e2119  libssp/strncat-chk.c
! 7c46bef1a3dc65ab5b4618934d31d669  libssp/strncpy-chk.c
! 760e66133a54c359be987217ce04682b  libssp/vsnprintf-chk.c
! 09019d4ee8eb193fa49db0552d95d655  libssp/vsprintf-chk.c
! ebacfd32340b417f2c0a2e320bb5a669  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
*************** d32e923dd488c48b645a9ff5d12211a8  libstd
*** 66020,66235 ****
  b331fae97e334afde1bd5fa125610458  libstdc++-v3/ChangeLog-2014
  8a8f082302e2eb659ac02e5036cccc4a  libstdc++-v3/ChangeLog-2015
  7bafaec51877b01c0fa5a1c20b004559  libstdc++-v3/ChangeLog-2016
! d2f55cdfcfc41eedd57e16a617c4775f  libstdc++-v3/Makefile.am
! 9a8bbe5f81bba136c3ff5f5aedfb43a4  libstdc++-v3/Makefile.in
  f372af73db4ac0ad88e43199e1f29e08  libstdc++-v3/README
! 49ba04b0308dd7c5388a318b239182b9  libstdc++-v3/acinclude.m4
  2a88f1fcc47abc6e54fb44954da2919a  libstdc++-v3/aclocal.m4
! 38b6108cf7d896c2522d25b5fb475ed5  libstdc++-v3/config.h.in
! 1c93b343ca452ad7c87f5c1352794032  libstdc++-v3/config/abi/compatibility.h
! 3dc734cb0c551a9ea0c20be5669edcea  libstdc++-v3/config/abi/post/aarch64-linux-gnu/baseline_symbols.txt
! 01b6705d68c4b6dd5d3cd90321d52009  libstdc++-v3/config/abi/post/alpha-linux-gnu/baseline_symbols.txt
! f645673923ec9aec95e2d186ea95a06a  libstdc++-v3/config/abi/post/hppa-linux-gnu/baseline_symbols.txt
! 74064ed8904c807e6fc739cbe69a24ff  libstdc++-v3/config/abi/post/i386-linux-gnu/baseline_symbols.txt
! e783dfff968a7f744228db0b102dc49a  libstdc++-v3/config/abi/post/i386-solaris2.10/amd64/baseline_symbols.txt
! 025967256360f983b6ad8ab0cb3a3d4d  libstdc++-v3/config/abi/post/i386-solaris2.10/baseline_symbols.txt
! 9c245a93fd5b37c481a47be80b6fda5a  libstdc++-v3/config/abi/post/i386-solaris2.11/amd64/baseline_symbols.txt
! 36652b6b1e856750b413d06c3db952c1  libstdc++-v3/config/abi/post/i386-solaris2.11/baseline_symbols.txt
! 74064ed8904c807e6fc739cbe69a24ff  libstdc++-v3/config/abi/post/i486-linux-gnu/baseline_symbols.txt
! b5509391457d69b8c6d715e7abe85d81  libstdc++-v3/config/abi/post/ia64-linux-gnu/baseline_symbols.txt
! bc6db935b5861db44257f820387b80b1  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
! 93b433356942e1d6263e50a84cada85a  libstdc++-v3/config/abi/post/powerpc-linux-gnu/baseline_symbols.txt
! 93b433356942e1d6263e50a84cada85a  libstdc++-v3/config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt
  05b47606cd9d4adbf2c65cdd67618b9c  libstdc++-v3/config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt
  395a1205eaa4a6d77ec36a80a7598066  libstdc++-v3/config/abi/post/s390-linux-gnu/baseline_symbols.txt
  395a1205eaa4a6d77ec36a80a7598066  libstdc++-v3/config/abi/post/s390x-linux-gnu/32/baseline_symbols.txt
  05b47606cd9d4adbf2c65cdd67618b9c  libstdc++-v3/config/abi/post/s390x-linux-gnu/baseline_symbols.txt
  cc65678819ec7ff06eaeed8b1a5455eb  libstdc++-v3/config/abi/post/sparc-linux-gnu/baseline_symbols.txt
! 21102ddaf8669e48a4dd8418e327f44c  libstdc++-v3/config/abi/post/sparc-solaris2.10/baseline_symbols.txt
! 83dd9c17de008944ca7e3a9f689a6146  libstdc++-v3/config/abi/post/sparc-solaris2.10/sparcv9/baseline_symbols.txt
! 465224c6303de93a7ad7fc4286042fce  libstdc++-v3/config/abi/post/sparc-solaris2.11/baseline_symbols.txt
! cdd50089e0460c8802edf9f1e3881ca6  libstdc++-v3/config/abi/post/sparc-solaris2.11/sparcv9/baseline_symbols.txt
! 74064ed8904c807e6fc739cbe69a24ff  libstdc++-v3/config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt
  403dc63ad6d1cd6301f17c7e7a7adb09  libstdc++-v3/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt
! 7c9d9f30d0c74c87283c25e3959c4859  libstdc++-v3/config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt
  5c4c38aeca254313c616b84337c937c3  libstdc++-v3/config/abi/pre/float128.ver
! d5ca39dd5aeebba4599442e4a6052175  libstdc++-v3/config/abi/pre/gnu-versioned-namespace.ver
! 090bad34be4da422930507838d7fc6bc  libstdc++-v3/config/abi/pre/gnu.ver
  b01f8da8f4373070847fe317fe8a546e  libstdc++-v3/config/abi/pre/none.ver
! 474df1d032c9df579426e6bafa6fce65  libstdc++-v3/config/allocator/bitmap_allocator_base.h
! f1667a9ecb6ec699875716d4ee1bc87e  libstdc++-v3/config/allocator/malloc_allocator_base.h
! be35bf3bcba47f131c6edbbf9d080454  libstdc++-v3/config/allocator/mt_allocator_base.h
! 8dfab81a84e8203901052d31d8e594a3  libstdc++-v3/config/allocator/new_allocator_base.h
! 76e63bf4defdcc66f47167049007c1da  libstdc++-v3/config/allocator/pool_allocator_base.h
! 0000e03f13be0fae9d1933c4153af789  libstdc++-v3/config/cpu/arm/cpu_defines.h
! 9ae3c2c1e60838cd027f87651fc345cf  libstdc++-v3/config/cpu/arm/cxxabi_tweaks.h
! 1b2ba0cfb44941d6863dc16a6acab28b  libstdc++-v3/config/cpu/cris/atomic_word.h
! d878cb70cad724ec8c05398151406947  libstdc++-v3/config/cpu/cris/atomicity.h
! a75842038c93d7282a748571dd32e553  libstdc++-v3/config/cpu/generic/atomic_word.h
! b624909da0c4abe2fd29d4641b3bd40b  libstdc++-v3/config/cpu/generic/atomicity_builtins/atomicity.h
! c5408d90d5f601b4d08bc8f86a4170c2  libstdc++-v3/config/cpu/generic/atomicity_mutex/atomicity.h
! 518eafcd1070aca5ec700756ffeac4b9  libstdc++-v3/config/cpu/generic/cpu_defines.h
! 2a81db13e88b92261a02fcf2c06c50c1  libstdc++-v3/config/cpu/generic/cxxabi_tweaks.h
! be05d2b137745c2ccf3246b6b95ec5f0  libstdc++-v3/config/cpu/generic/opt/bits/opt_random.h
! 3a17d7d0440c11c49d032b421e4de639  libstdc++-v3/config/cpu/generic/opt/ext/opt_random.h
! 14e8f7f6c94437c08922b64b38aab1f9  libstdc++-v3/config/cpu/hppa/atomicity.h
! 9a566e6b050f47d9bf636fa81532673a  libstdc++-v3/config/cpu/i386/atomicity.h
! 09c015ca8512054a4bdf8abf020e1b85  libstdc++-v3/config/cpu/i486/atomicity.h
! 3258df4c3268cbb142d6a4cef1201e50  libstdc++-v3/config/cpu/i486/opt/bits/opt_random.h
! 78403f354eb86f3ca49f36a730b82aea  libstdc++-v3/config/cpu/i486/opt/ext/opt_random.h
! 4750a09650a13b58ee96e4357dbe105b  libstdc++-v3/config/cpu/m68k/atomicity.h
! c4d379ffd70fbb2c4895566590687f13  libstdc++-v3/config/cpu/microblaze/cpu_defines.h
! 32512f6cd61e6b9730ff786921021a34  libstdc++-v3/config/cpu/powerpc/cpu_defines.h
! 1c0df642e68cc0d5c84f5b5295a9e0ea  libstdc++-v3/config/cpu/sh/atomicity.h
! 9d40707585d5e3352dcdfa824a596c43  libstdc++-v3/config/cpu/sparc/atomic_word.h
! 35be2ff693c372d94646265cccc98b1c  libstdc++-v3/config/cpu/sparc/atomicity.h
! a287eae246710eba198462b7a6348148  libstdc++-v3/config/io/basic_file_stdio.cc
! deb8374b2db1778ae762465fa3bea588  libstdc++-v3/config/io/basic_file_stdio.h
! 6ca2ee5d73a9be7ea8084c3e9b0054a2  libstdc++-v3/config/io/c_io_stdio.h
! 08d965d519ec34de201de66cab98304b  libstdc++-v3/config/locale/darwin/ctype_members.cc
! 8b215b03423c0ddb2992cc94292a8887  libstdc++-v3/config/locale/dragonfly/c_locale.cc
! 64b15573cee71ac4f6f277d666ae04b4  libstdc++-v3/config/locale/dragonfly/c_locale.h
! 5d124961d271310f79353a31d84997e9  libstdc++-v3/config/locale/dragonfly/codecvt_members.cc
! c75b965e1204aad960279d88fcfd7653  libstdc++-v3/config/locale/dragonfly/collate_members.cc
! 8bfb4f0831c4cc4e5604ad224047c465  libstdc++-v3/config/locale/dragonfly/ctype_members.cc
! c87f72ff236f229212354dfbe11dffe1  libstdc++-v3/config/locale/dragonfly/monetary_members.cc
! c67fe817d8a31f66f6a084c78526e788  libstdc++-v3/config/locale/dragonfly/numeric_members.cc
! 6446f5475ed8c136160d3fcc92af0d1a  libstdc++-v3/config/locale/dragonfly/time_members.cc
! f4e03604e3c2e7930064a4dd16f19756  libstdc++-v3/config/locale/dragonfly/time_members.h
! a14a5cdbd2b88577f3a6b1bf90c03692  libstdc++-v3/config/locale/generic/c++locale_internal.h
! 5a098af3a8704e3956629e9fecfa639a  libstdc++-v3/config/locale/generic/c_locale.cc
! 935c3ca0bab94a377f4fe4eb92e4b00c  libstdc++-v3/config/locale/generic/c_locale.h
! 9e35d3dcfae011552fdc6cfa37f00692  libstdc++-v3/config/locale/generic/codecvt_members.cc
! da5ce56a5259573cd7fefb31a04ac2e1  libstdc++-v3/config/locale/generic/collate_members.cc
! c01cf80ec5046a7063d6ea803c9bf5d1  libstdc++-v3/config/locale/generic/ctype_members.cc
! 2a7513a4a7ed2644d49049c1612f8f8f  libstdc++-v3/config/locale/generic/messages_members.cc
! b6f79bcd70399991c79b29958688dcdc  libstdc++-v3/config/locale/generic/messages_members.h
! d3940b77f85b6d9dff2035243afabd68  libstdc++-v3/config/locale/generic/monetary_members.cc
! a8642d3be79811d52b82fa940518fccc  libstdc++-v3/config/locale/generic/numeric_members.cc
! d970730606fc23090234b2a9ab8ca785  libstdc++-v3/config/locale/generic/time_members.cc
! b9174a23a3cf7ac0851ae7cf0bf30690  libstdc++-v3/config/locale/generic/time_members.h
! c86a83ad2a68f6e1589c063356b5fdbb  libstdc++-v3/config/locale/gnu/c++locale_internal.h
! cd78a77633eae1da67380f57973c0551  libstdc++-v3/config/locale/gnu/c_locale.cc
! 8fb4fadcc3490d3f89a2693d4784f340  libstdc++-v3/config/locale/gnu/c_locale.h
! 7bcfa15a04518e6f0a3f2c51e309a427  libstdc++-v3/config/locale/gnu/codecvt_members.cc
! 980dca2d683fbeafae1b39b176b40b6d  libstdc++-v3/config/locale/gnu/collate_members.cc
! ca9cf4e38efa244c4650f50a19f8de4c  libstdc++-v3/config/locale/gnu/ctype_members.cc
! 2b299fc24af7943e7902e4a0885a7943  libstdc++-v3/config/locale/gnu/messages_members.cc
! 47b8d5639c4dcc4cc51e2f7e2e701f2e  libstdc++-v3/config/locale/gnu/messages_members.h
! 656186df6eec304cd998e0b50882b46f  libstdc++-v3/config/locale/gnu/monetary_members.cc
! 2aef43c8ee7e5bf504080eb402e477d2  libstdc++-v3/config/locale/gnu/numeric_members.cc
! 4826ce6b2c9b2c2e0b8f6cde6c6253b6  libstdc++-v3/config/locale/gnu/time_members.cc
! af8028658f4a9621d1c3bb5efe5edc46  libstdc++-v3/config/locale/gnu/time_members.h
! a1f8990806866b6b81dab646a6f29873  libstdc++-v3/config/locale/ieee_1003.1-2001/c_locale.cc
! 5475ef9f2f4794f25f9d2e5db13004bb  libstdc++-v3/config/locale/ieee_1003.1-2001/c_locale.h
! cab40c3cdd6f9106e32fc943d90586c2  libstdc++-v3/config/locale/ieee_1003.1-2001/messages_members.cc
! 931eb1c199750f42ff1b0c45a80247aa  libstdc++-v3/config/locale/ieee_1003.1-2001/messages_members.h
! 116c8c5956d5c6c4cc931f56e65a07a6  libstdc++-v3/config/locale/newlib/ctype_members.cc
! ac4e399d104d5c339135ae8b63f44e38  libstdc++-v3/config/os/aix/atomicity.h
! 1d65007532fa0a276246b9ae0e19445a  libstdc++-v3/config/os/aix/ctype_base.h
! 140fff921c127a9522c056c548848b97  libstdc++-v3/config/os/aix/ctype_configure_char.cc
! 766b017a2db4c4a3bdafa3f7903609eb  libstdc++-v3/config/os/aix/ctype_inline.h
! 7b51994ebe2b0cbe3001639448f0ff3e  libstdc++-v3/config/os/aix/os_defines.h
! f32c2d664f466d6ae971d86505728842  libstdc++-v3/config/os/bionic/ctype_base.h
! f9d1a76a72bc0f46a042f06351b3e918  libstdc++-v3/config/os/bionic/ctype_configure_char.cc
! 52830e9ed9ab94d487121c8e29ead000  libstdc++-v3/config/os/bionic/ctype_inline.h
! 596b1d7d5c1f56fde98f55f05a339007  libstdc++-v3/config/os/bionic/os_defines.h
! a3fe367cc9a716e3b0a3a4cb948c9bf0  libstdc++-v3/config/os/bsd/darwin/ctype_base.h
! 140fff921c127a9522c056c548848b97  libstdc++-v3/config/os/bsd/darwin/ctype_configure_char.cc
! bfd1dc2bd69ec8a67c38ad145d79b2f6  libstdc++-v3/config/os/bsd/darwin/ctype_inline.h
! d2f11cb015e66a0d774b23e9bf138cf6  libstdc++-v3/config/os/bsd/darwin/os_defines.h
  96acc6c320b15094b860bd727d99a90f  libstdc++-v3/config/os/bsd/darwin/ppc-extra.ver
! ed0fa7a8fba95eba5e3984fbcb080ab9  libstdc++-v3/config/os/bsd/dragonfly/ctype_base.h
! 67466f2445219a1640c1d4dcf587ab29  libstdc++-v3/config/os/bsd/dragonfly/ctype_configure_char.cc
! 208de510c96454be12eb67e82ff79a9f  libstdc++-v3/config/os/bsd/dragonfly/ctype_inline.h
! 7f354f727baa61e591222ae689f60a95  libstdc++-v3/config/os/bsd/dragonfly/os_defines.h
! 65984226584904adf9b5d0ddef47b906  libstdc++-v3/config/os/bsd/freebsd/ctype_base.h
! 67466f2445219a1640c1d4dcf587ab29  libstdc++-v3/config/os/bsd/freebsd/ctype_configure_char.cc
! bfd1dc2bd69ec8a67c38ad145d79b2f6  libstdc++-v3/config/os/bsd/freebsd/ctype_inline.h
! 5e6dab5740afeed6044e2406e03f46ff  libstdc++-v3/config/os/bsd/freebsd/os_defines.h
! b8913a1667242c82fe805191eaa23a29  libstdc++-v3/config/os/bsd/netbsd/ctype_base.h
! 54b7a5b741caad31318edf53b182e285  libstdc++-v3/config/os/bsd/netbsd/ctype_configure_char.cc
! d40e7b9be3fc402074a32ee884caae7e  libstdc++-v3/config/os/bsd/netbsd/ctype_inline.h
! 229dd58607268f619e4d2f7aa7d6c791  libstdc++-v3/config/os/bsd/netbsd/os_defines.h
! 9bd4e4de4e97a75f06f7ab19d07320ae  libstdc++-v3/config/os/bsd/openbsd/ctype_base.h
! abd9088c91a86fcda79d4873fa4d9d0a  libstdc++-v3/config/os/bsd/openbsd/ctype_configure_char.cc
! 52830e9ed9ab94d487121c8e29ead000  libstdc++-v3/config/os/bsd/openbsd/ctype_inline.h
! fb10a0d807d304f14ec0431c002c8cde  libstdc++-v3/config/os/bsd/openbsd/os_defines.h
! df573796d1123ac1d8e9a7b6e86dabfa  libstdc++-v3/config/os/djgpp/ctype_base.h
! 36c2dd15ec15640f9f1a0a769f0e5637  libstdc++-v3/config/os/djgpp/ctype_configure_char.cc
! 16c1fdf551375676a28532b21145079f  libstdc++-v3/config/os/djgpp/ctype_inline.h
! fcf011f66ccfd8a0b51a6fb6d2e04a83  libstdc++-v3/config/os/djgpp/error_constants.h
! 102914ee797ae1c36c54d4c0f3d3ff1e  libstdc++-v3/config/os/djgpp/os_defines.h
! c5e47f155b814aff1721731ea4753361  libstdc++-v3/config/os/generic/ctype_base.h
! 140fff921c127a9522c056c548848b97  libstdc++-v3/config/os/generic/ctype_configure_char.cc
! 5dee4c90911f3005b3e9462a993afe7e  libstdc++-v3/config/os/generic/ctype_inline.h
! 57927c6f1fadc33e5330baf97332cfe8  libstdc++-v3/config/os/generic/error_constants.h
! 743eab813893a5ed28ea043d7e9b7a84  libstdc++-v3/config/os/generic/os_defines.h
  5b9a724ca8744a0e193a82f2ea8e9f5b  libstdc++-v3/config/os/gnu-linux/arm-eabi-extra.ver
! 57330ac8118c111d2808c0ad31dbd072  libstdc++-v3/config/os/gnu-linux/ctype_base.h
! b20608239ce2e3794cde5a0f053f9f17  libstdc++-v3/config/os/gnu-linux/ctype_configure_char.cc
! f942043c7a4564bc31c3547c86d8a5b7  libstdc++-v3/config/os/gnu-linux/ctype_inline.h
  e7a5616dfe1ba65fd2ef182675c2f3e4  libstdc++-v3/config/os/gnu-linux/ldbl-extra.ver
! 098f39e7e6b768ba5cc90910cd026e6a  libstdc++-v3/config/os/gnu-linux/os_defines.h
! fbbd3e10ec99ebdb2edacc73be6555b2  libstdc++-v3/config/os/hpux/ctype_base.h
! cf2cb7fc66a41e7829dd7dae01a831ef  libstdc++-v3/config/os/hpux/ctype_configure_char.cc
! f942043c7a4564bc31c3547c86d8a5b7  libstdc++-v3/config/os/hpux/ctype_inline.h
! d8ada49092d46212af44453875d3e692  libstdc++-v3/config/os/hpux/os_defines.h
! 9e99d50caff8bc7f6fd7ae8d3e27d3c0  libstdc++-v3/config/os/mingw32-w64/ctype_base.h
! 1f5e1909c2ba82a3f602e41f471b2840  libstdc++-v3/config/os/mingw32-w64/ctype_configure_char.cc
! e6585444f8cd3a9ebe720b9358a59f54  libstdc++-v3/config/os/mingw32-w64/ctype_inline.h
! 6d473c483f703fbcc7a03d7d85ec6c11  libstdc++-v3/config/os/mingw32-w64/error_constants.h
! 556eef466dbf27ab5c404ac2b86fac45  libstdc++-v3/config/os/mingw32-w64/os_defines.h
! 9e99d50caff8bc7f6fd7ae8d3e27d3c0  libstdc++-v3/config/os/mingw32/ctype_base.h
! 1f5e1909c2ba82a3f602e41f471b2840  libstdc++-v3/config/os/mingw32/ctype_configure_char.cc
! e6585444f8cd3a9ebe720b9358a59f54  libstdc++-v3/config/os/mingw32/ctype_inline.h
! 5cc729c6d4bcabea34bd2013c7d104ff  libstdc++-v3/config/os/mingw32/error_constants.h
! 20081b9820fc255e50ada114ab97f84c  libstdc++-v3/config/os/mingw32/os_defines.h
! 3727a292ec6bfafb64b53a76b37b006b  libstdc++-v3/config/os/newlib/ctype_base.h
! f9d1a76a72bc0f46a042f06351b3e918  libstdc++-v3/config/os/newlib/ctype_configure_char.cc
! 6c99f7d10b5e681223dc57e204004cbe  libstdc++-v3/config/os/newlib/ctype_inline.h
! f7d31def01e729f72c76be66c29548f0  libstdc++-v3/config/os/newlib/os_defines.h
! b7962b7505261d6cea5b2e6f07c06618  libstdc++-v3/config/os/qnx/qnx6.1/ctype_base.h
! 58293d69c7350660e6b7e05bcbff83ca  libstdc++-v3/config/os/qnx/qnx6.1/ctype_configure_char.cc
! e90aadf8b9fa063f5a47a82d82be40b1  libstdc++-v3/config/os/qnx/qnx6.1/ctype_inline.h
! 1d4837584d97c123fa9f74769c34d6b8  libstdc++-v3/config/os/qnx/qnx6.1/os_defines.h
! 81e5b48df6dddf9e02678d33b7e7b2c6  libstdc++-v3/config/os/solaris/solaris2.10/ctype_base.h
! faa739c8910b601ee5354bdb6ffec066  libstdc++-v3/config/os/solaris/solaris2.10/ctype_configure_char.cc
! f942043c7a4564bc31c3547c86d8a5b7  libstdc++-v3/config/os/solaris/solaris2.10/ctype_inline.h
! a45472f5c446ca267d393f73a7384fe7  libstdc++-v3/config/os/solaris/solaris2.10/os_defines.h
! 15ec42e68ddf37ee572dee0a5e151d56  libstdc++-v3/config/os/tpf/ctype_base.h
! 71a061b46781e1cdc12d03f5cae98567  libstdc++-v3/config/os/tpf/ctype_configure_char.cc
! b43fc253e6f7cea195a7dad0e93f494e  libstdc++-v3/config/os/tpf/ctype_inline.h
! 65c103529e6a923fa11a3abac0a197c3  libstdc++-v3/config/os/tpf/os_defines.h
! 4a8c87ce1f6795334874712d624938c8  libstdc++-v3/config/os/uclibc/ctype_base.h
! 3ee4e08187a3221f2078c7cc999e4c06  libstdc++-v3/config/os/uclibc/ctype_configure_char.cc
! f942043c7a4564bc31c3547c86d8a5b7  libstdc++-v3/config/os/uclibc/ctype_inline.h
! 7f27095a56fa510ab5947858b098702b  libstdc++-v3/config/os/uclibc/os_defines.h
! c7c82b7fdf11e423ccdc173143db93aa  libstdc++-v3/config/os/vxworks/ctype_base.h
! 7edc1c806579bdda295225b37ff9482c  libstdc++-v3/config/os/vxworks/ctype_configure_char.cc
! 276389a68a2b7b1262605789e5edfa63  libstdc++-v3/config/os/vxworks/ctype_inline.h
! 70166bc357cec0c671f1d0fb63e68735  libstdc++-v3/config/os/vxworks/os_defines.h
! 75101c11422e6bd7cbe2a13f825cb700  libstdc++-v3/configure
! 109e1897c80132d1381057db9429be56  libstdc++-v3/configure.ac
  e711fd9f625040036e12e7ec93b06781  libstdc++-v3/configure.host
! d7f207dcb3d6f80e6d9e4e16caf6b18d  libstdc++-v3/crossconfig.m4
! 4cc1da5a760f3aa03a2af01fa56d6d80  libstdc++-v3/doc/Makefile.am
! 74b2c2379a63ef007e3b81ca6e5ef284  libstdc++-v3/doc/Makefile.in
  3f7ff07f68cc7610addc1921bc125548  libstdc++-v3/doc/doxygen/Intro.3
! e221bfb1fc340e034b28617e561f131d  libstdc++-v3/doc/doxygen/doxygroups.cc
  520db39aef0e2a59418132af88b897ed  libstdc++-v3/doc/doxygen/mainpage.html
  3486d64b0aaa601908006a0e78395ca3  libstdc++-v3/doc/doxygen/stdheader.cc
  1273764cd133c402d2d3f22cf2913af5  libstdc++-v3/doc/doxygen/tables.html
  ee599e042e0ab46c3d78dd8675b8ba7f  libstdc++-v3/doc/doxygen/user.cfg.in
  66e139590a163a3e9d632f33fbe1d1b3  libstdc++-v3/doc/html/README
! 4466806f318e6153c722faee62d28915  libstdc++-v3/doc/html/api.html
  fd168dc2b2d0c12b1e17b40ffec96390  libstdc++-v3/doc/html/bk02.html
  47886ba7da131bf3cbf81a27cada5f6f  libstdc++-v3/doc/html/bk03.html
! 4cbf99aaaeae90dfebdce302f055ee0d  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
--- 70887,71105 ----
  b331fae97e334afde1bd5fa125610458  libstdc++-v3/ChangeLog-2014
  8a8f082302e2eb659ac02e5036cccc4a  libstdc++-v3/ChangeLog-2015
  7bafaec51877b01c0fa5a1c20b004559  libstdc++-v3/ChangeLog-2016
! ced62eb7e4ae82690abb361aefcea876  libstdc++-v3/ChangeLog-2017
! 880a8ed9312c3d9bbe45d15bdbd7c540  libstdc++-v3/Makefile.am
! b2454ab35b74b502f57f8b441b533f05  libstdc++-v3/Makefile.in
  f372af73db4ac0ad88e43199e1f29e08  libstdc++-v3/README
! f7857311211b20f49ec67a9befc4160c  libstdc++-v3/acinclude.m4
  2a88f1fcc47abc6e54fb44954da2919a  libstdc++-v3/aclocal.m4
! 6b5562d82d5b66ef80876398dd8c89e7  libstdc++-v3/config.h.in
! d8ee8534629ad067e967bc0a0a30a4f5  libstdc++-v3/config/abi/compatibility.h
! b4bb5d911464a4e5ce4e8d2fbde122b5  libstdc++-v3/config/abi/post/aarch64-linux-gnu/baseline_symbols.txt
! f5bfb76447e675a88fa1dbb27d052e72  libstdc++-v3/config/abi/post/alpha-linux-gnu/baseline_symbols.txt
! 05790affbd0bc0e66e7575fcb3a5a20a  libstdc++-v3/config/abi/post/hppa-linux-gnu/baseline_symbols.txt
! d17a8bcaaeb762e57346dbe641503758  libstdc++-v3/config/abi/post/i386-linux-gnu/baseline_symbols.txt
! 8cad2708a171ea3b1ea07efa0aa54e9b  libstdc++-v3/config/abi/post/i386-solaris2.10/amd64/baseline_symbols.txt
! 3775264851c665df0b9117b166769be3  libstdc++-v3/config/abi/post/i386-solaris2.10/baseline_symbols.txt
! 441e18c0ed19f165d3c1b8c094a0b347  libstdc++-v3/config/abi/post/i386-solaris2.11/amd64/baseline_symbols.txt
! 259a42d90553287caf256e7b0ac71681  libstdc++-v3/config/abi/post/i386-solaris2.11/baseline_symbols.txt
! d17a8bcaaeb762e57346dbe641503758  libstdc++-v3/config/abi/post/i486-linux-gnu/baseline_symbols.txt
! dfcfb9f942fd2f3bb708bba897cf44f7  libstdc++-v3/config/abi/post/ia64-linux-gnu/baseline_symbols.txt
! 8d0df175ce03291bc1974a322a1559a7  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
! 3a2ce2032f7a42877e97bab471aaaf54  libstdc++-v3/config/abi/post/powerpc-linux-gnu/baseline_symbols.txt
! 3a2ce2032f7a42877e97bab471aaaf54  libstdc++-v3/config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt
  05b47606cd9d4adbf2c65cdd67618b9c  libstdc++-v3/config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt
  395a1205eaa4a6d77ec36a80a7598066  libstdc++-v3/config/abi/post/s390-linux-gnu/baseline_symbols.txt
  395a1205eaa4a6d77ec36a80a7598066  libstdc++-v3/config/abi/post/s390x-linux-gnu/32/baseline_symbols.txt
  05b47606cd9d4adbf2c65cdd67618b9c  libstdc++-v3/config/abi/post/s390x-linux-gnu/baseline_symbols.txt
  cc65678819ec7ff06eaeed8b1a5455eb  libstdc++-v3/config/abi/post/sparc-linux-gnu/baseline_symbols.txt
! 0c74fa7f1ce8cd49719197bb89de9ac9  libstdc++-v3/config/abi/post/sparc-solaris2.10/baseline_symbols.txt
! 2eacb13a7daf1f15dd2a11bf940fa006  libstdc++-v3/config/abi/post/sparc-solaris2.10/sparcv9/baseline_symbols.txt
! ce6e8e91f312f0772ebbeae3bf50c69c  libstdc++-v3/config/abi/post/sparc-solaris2.11/baseline_symbols.txt
! fd53949e84ca6eb0e1a0c5fb1973c6ba  libstdc++-v3/config/abi/post/sparc-solaris2.11/sparcv9/baseline_symbols.txt
! d17a8bcaaeb762e57346dbe641503758  libstdc++-v3/config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt
  403dc63ad6d1cd6301f17c7e7a7adb09  libstdc++-v3/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt
! 5c5a9fb00fce47952d24c1744b233115  libstdc++-v3/config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt
  5c4c38aeca254313c616b84337c937c3  libstdc++-v3/config/abi/pre/float128.ver
! 76d1b80b97d1f28eb2d3b6db58ded267  libstdc++-v3/config/abi/pre/gnu-versioned-namespace.ver
! b1547e3fbea31501568550045e2ed673  libstdc++-v3/config/abi/pre/gnu.ver
  b01f8da8f4373070847fe317fe8a546e  libstdc++-v3/config/abi/pre/none.ver
! 6c130b23dc2f414170422d916116cd02  libstdc++-v3/config/allocator/bitmap_allocator_base.h
! b15b45cef62061aaa12914b0d60354fe  libstdc++-v3/config/allocator/malloc_allocator_base.h
! c92520d51175503b0877bf7560f09708  libstdc++-v3/config/allocator/mt_allocator_base.h
! 9572fa47638d84b83d0311676a9766b8  libstdc++-v3/config/allocator/new_allocator_base.h
! 873534d92e2201b59e19d8f654fb02a9  libstdc++-v3/config/allocator/pool_allocator_base.h
! 03a09948d40db575df9b7f732d5b71f0  libstdc++-v3/config/cpu/aarch64/opt/bits/opt_random.h
! 91db42dcf3ba9572287b867a627da3a4  libstdc++-v3/config/cpu/aarch64/opt/ext/opt_random.h
! 3572205d152b0496b8c03541f7085fc1  libstdc++-v3/config/cpu/arm/cpu_defines.h
! e9de19068a026509909013428c457a7d  libstdc++-v3/config/cpu/arm/cxxabi_tweaks.h
! b24a3db8f76c98a5f36eff3155730803  libstdc++-v3/config/cpu/cris/atomic_word.h
! e1af3d0b0f647c166bda5506fb2c6234  libstdc++-v3/config/cpu/cris/atomicity.h
! 983f624ac6ec7671fd2ee9fb2d530eb8  libstdc++-v3/config/cpu/generic/atomic_word.h
! 4bef3ebbceaeb08e9a8f00a7d761b7e3  libstdc++-v3/config/cpu/generic/atomicity_builtins/atomicity.h
! 75e025b4997b4c9edf54fd8813ed3e5b  libstdc++-v3/config/cpu/generic/atomicity_mutex/atomicity.h
! 4a4fad56c79626d5605e6f5ad26d7742  libstdc++-v3/config/cpu/generic/cpu_defines.h
! f878b0e8cc941e8767ed5ca7e85e3303  libstdc++-v3/config/cpu/generic/cxxabi_tweaks.h
! 737522c16e5ff3d417d5056e2a1c99d5  libstdc++-v3/config/cpu/generic/opt/bits/opt_random.h
! 45a6d7a51ac71510e22b6157b77f92a6  libstdc++-v3/config/cpu/generic/opt/ext/opt_random.h
! ac04a2387a5a38851323501193bea861  libstdc++-v3/config/cpu/hppa/atomicity.h
! 7b7938d7a62093eb1da8bd9a3dc97513  libstdc++-v3/config/cpu/i386/atomicity.h
! 91358f5394310f08ae691304c2f5218b  libstdc++-v3/config/cpu/i486/atomicity.h
! 415a7cf5833c3dd7de92cf6cbda9a4f5  libstdc++-v3/config/cpu/i486/opt/bits/opt_random.h
! 5d0fb5234406195b8a6e5280ba18e36e  libstdc++-v3/config/cpu/i486/opt/ext/opt_random.h
! 0ed019337cc2450157dfaf17bf4aacfa  libstdc++-v3/config/cpu/m68k/atomicity.h
! f03c29c23872818ddd4bdd52ca499c67  libstdc++-v3/config/cpu/microblaze/cpu_defines.h
! 8e16899801c1b4fa2ca88f06945349c4  libstdc++-v3/config/cpu/powerpc/cpu_defines.h
! 9d76fe5e327717a14528a1071586ef16  libstdc++-v3/config/cpu/sh/atomicity.h
! 4768d584715dd5c50da74adf1b65dd24  libstdc++-v3/config/cpu/sparc/atomic_word.h
! bbfbec0de5defdcf9d9e596a416aec5d  libstdc++-v3/config/cpu/sparc/atomicity.h
! 10f35d1fb5b612c67d0d5b56b9d948a9  libstdc++-v3/config/io/basic_file_stdio.cc
! 59bc382f4de63477517f1f74d8121447  libstdc++-v3/config/io/basic_file_stdio.h
! 8f7e69b5a6c40939c1b0d2bd496cb7e0  libstdc++-v3/config/io/c_io_stdio.h
! 0c308d5aa0fee6b29729c2023a39c834  libstdc++-v3/config/locale/darwin/ctype_members.cc
! 6b46b635b0fc8e66c68e9b62dea0220d  libstdc++-v3/config/locale/dragonfly/c_locale.cc
! c7ae47a0bc8e412e4d434b9d80104b4c  libstdc++-v3/config/locale/dragonfly/c_locale.h
! 741c0bd34641b78bfddc7925ffaa2409  libstdc++-v3/config/locale/dragonfly/codecvt_members.cc
! c3be08d0bd10bc823282f2c90d59c007  libstdc++-v3/config/locale/dragonfly/collate_members.cc
! 7438e75cd0c0ded03a1f4663e06194e9  libstdc++-v3/config/locale/dragonfly/ctype_members.cc
! 787cc7da0dcd8c1782901dbaf79413fe  libstdc++-v3/config/locale/dragonfly/monetary_members.cc
! d1dffde6b5921ba89444d7d7f52026dc  libstdc++-v3/config/locale/dragonfly/numeric_members.cc
! 1ada0446620ba23ecec77a0590282ced  libstdc++-v3/config/locale/dragonfly/time_members.cc
! 455ed2bc4b257933c83934155b97843c  libstdc++-v3/config/locale/dragonfly/time_members.h
! 07b2aa88f760799ff90b21375ef75513  libstdc++-v3/config/locale/generic/c++locale_internal.h
! 52e14074c17f2facb10f1fd8d3f16302  libstdc++-v3/config/locale/generic/c_locale.cc
! 4a2dae9e4980c9d0258330a1fccc2392  libstdc++-v3/config/locale/generic/c_locale.h
! b6a7b399d22882542221779c7c50daf7  libstdc++-v3/config/locale/generic/codecvt_members.cc
! 6b3d1454d4523b50ce5c956e50c692b7  libstdc++-v3/config/locale/generic/collate_members.cc
! 180be6a366dcc3aee83f4cbb3af07d74  libstdc++-v3/config/locale/generic/ctype_members.cc
! e4b49233ba7f677f5055b917866b6424  libstdc++-v3/config/locale/generic/messages_members.cc
! 791d66e09356b78e477a984ef3eccb22  libstdc++-v3/config/locale/generic/messages_members.h
! a1b105464f9e741d5fd790c60f27ea2b  libstdc++-v3/config/locale/generic/monetary_members.cc
! 343aa6fd52862e308d5a8b4085d18340  libstdc++-v3/config/locale/generic/numeric_members.cc
! fe97be7a2942a675ebfe31a3f4eea72d  libstdc++-v3/config/locale/generic/time_members.cc
! 114b653824c3c7fd49cdb203e0ac12ce  libstdc++-v3/config/locale/generic/time_members.h
! 13f0eeb8e532f3f2e0ee0eb522a58918  libstdc++-v3/config/locale/gnu/c++locale_internal.h
! 11d77a6ac3058e9720a77e573355d1b2  libstdc++-v3/config/locale/gnu/c_locale.cc
! 4153c8fb1e39e33dffa04168657f0b76  libstdc++-v3/config/locale/gnu/c_locale.h
! 7762eb257ba47121948adc6206594034  libstdc++-v3/config/locale/gnu/codecvt_members.cc
! 8936fd79d784cd24ab4ed872839b5150  libstdc++-v3/config/locale/gnu/collate_members.cc
! 1afc1741510ec3b39d5e2db2c66127ba  libstdc++-v3/config/locale/gnu/ctype_members.cc
! 63a7f0db9a2801ae165cf539094b9464  libstdc++-v3/config/locale/gnu/messages_members.cc
! b9e41f1c2bf8fd0cca9b9f8e43eebb62  libstdc++-v3/config/locale/gnu/messages_members.h
! aa779f899598e574ca5b5ec33659a094  libstdc++-v3/config/locale/gnu/monetary_members.cc
! 9620c0a5746fa2b19b77dec97561e640  libstdc++-v3/config/locale/gnu/numeric_members.cc
! c9ba145786908cc8c329bc1f9394ed72  libstdc++-v3/config/locale/gnu/time_members.cc
! cf4971fc4b486dbc77c00ced2e7b2a4f  libstdc++-v3/config/locale/gnu/time_members.h
! 747cb279888d0e986f68bc32edaaabd5  libstdc++-v3/config/locale/ieee_1003.1-2001/c_locale.cc
! d17c9a68fb04d562f1e45fdeb3d42fdc  libstdc++-v3/config/locale/ieee_1003.1-2001/c_locale.h
! e9124e359f16742d6365216c31771dbe  libstdc++-v3/config/locale/ieee_1003.1-2001/messages_members.cc
! f874ed93b8a34e2c00b69ba5fe056bed  libstdc++-v3/config/locale/ieee_1003.1-2001/messages_members.h
! d401b7bfb8acc3bf69469532ea819476  libstdc++-v3/config/locale/newlib/ctype_members.cc
! cb8db59223bc8ff7ab4039c2b3239570  libstdc++-v3/config/os/aix/atomicity.h
! ff648a69138bde5b453f58da59c9b6e1  libstdc++-v3/config/os/aix/ctype_base.h
! e3a2165e12fb7d45c8b29b0ad54160e2  libstdc++-v3/config/os/aix/ctype_configure_char.cc
! 8c71b3d74b07e22a12d79cb9427fc082  libstdc++-v3/config/os/aix/ctype_inline.h
! c5773196425b02ada469e383d78467af  libstdc++-v3/config/os/aix/os_defines.h
! aa3426352d4114a65e00c9e10e636e03  libstdc++-v3/config/os/bionic/ctype_base.h
! d4a13cfd510c568639b454de5c46cf10  libstdc++-v3/config/os/bionic/ctype_configure_char.cc
! b340310bcafdb96731e994002e89ae1d  libstdc++-v3/config/os/bionic/ctype_inline.h
! 094106ad5005211b067203926624f0a3  libstdc++-v3/config/os/bionic/os_defines.h
! 678b91ec2d6e645ed6f471a596cfe183  libstdc++-v3/config/os/bsd/darwin/ctype_base.h
! e3a2165e12fb7d45c8b29b0ad54160e2  libstdc++-v3/config/os/bsd/darwin/ctype_configure_char.cc
! fb34842d90928c4410e9069a4b9b05d4  libstdc++-v3/config/os/bsd/darwin/ctype_inline.h
! 84facc9314919abcf0d9a74786c7e9ca  libstdc++-v3/config/os/bsd/darwin/os_defines.h
  96acc6c320b15094b860bd727d99a90f  libstdc++-v3/config/os/bsd/darwin/ppc-extra.ver
! 8dc8e1c026e08e8584d4c932710ba2bf  libstdc++-v3/config/os/bsd/dragonfly/ctype_base.h
! c3906565fd05f5eaff287781db2b7790  libstdc++-v3/config/os/bsd/dragonfly/ctype_configure_char.cc
! 7cbe6f8482d1c579c1a27322f08164a2  libstdc++-v3/config/os/bsd/dragonfly/ctype_inline.h
! 2267e39e2b1edf5ab7488701f7cdb391  libstdc++-v3/config/os/bsd/dragonfly/os_defines.h
! a830e6e38aebea0e6bb7563e3f37e1a0  libstdc++-v3/config/os/bsd/freebsd/ctype_base.h
! c3906565fd05f5eaff287781db2b7790  libstdc++-v3/config/os/bsd/freebsd/ctype_configure_char.cc
! fb34842d90928c4410e9069a4b9b05d4  libstdc++-v3/config/os/bsd/freebsd/ctype_inline.h
! 5dc2b7651cc62975f58aee0fe81dd10b  libstdc++-v3/config/os/bsd/freebsd/os_defines.h
! a799d95ac709822a5ec0d7d69c494252  libstdc++-v3/config/os/bsd/netbsd/ctype_base.h
! d8bfd3d3821e6321d8bfdf0919a2b6cb  libstdc++-v3/config/os/bsd/netbsd/ctype_configure_char.cc
! 155c02f778f62f44d3d2f9db50a8566d  libstdc++-v3/config/os/bsd/netbsd/ctype_inline.h
! da08b254348b77e59be03efa344ef71f  libstdc++-v3/config/os/bsd/netbsd/os_defines.h
! 1485702f670b005bbbb53576c2e81b0c  libstdc++-v3/config/os/bsd/openbsd/ctype_base.h
! 0b3bdf02001160e58b6dbfcf71f53166  libstdc++-v3/config/os/bsd/openbsd/ctype_configure_char.cc
! b340310bcafdb96731e994002e89ae1d  libstdc++-v3/config/os/bsd/openbsd/ctype_inline.h
! 1ecaade204ed97b20da7ac3c7c980ca4  libstdc++-v3/config/os/bsd/openbsd/os_defines.h
! 0c2d89f96cf5d3befd54b06df0d9eb71  libstdc++-v3/config/os/djgpp/ctype_base.h
! 53175aca249f28dce64d5ea5c743d805  libstdc++-v3/config/os/djgpp/ctype_configure_char.cc
! 75b62e670f800333ba0d66c1f1cdc08a  libstdc++-v3/config/os/djgpp/ctype_inline.h
! ca6c13ebd528aa7ede111ddbd0403359  libstdc++-v3/config/os/djgpp/error_constants.h
! 797b96d6565a2fafddc2c80a994f5db1  libstdc++-v3/config/os/djgpp/os_defines.h
! 6bffe5cb91391ffef308f64c9a369f05  libstdc++-v3/config/os/generic/ctype_base.h
! e3a2165e12fb7d45c8b29b0ad54160e2  libstdc++-v3/config/os/generic/ctype_configure_char.cc
! 33f189b23aa0b59d8f6d726835b6ee40  libstdc++-v3/config/os/generic/ctype_inline.h
! 304ac1351f2810c8d44b40c1b601f069  libstdc++-v3/config/os/generic/error_constants.h
! a5ddfa993ff133e3a82bc751c49caae1  libstdc++-v3/config/os/generic/os_defines.h
  5b9a724ca8744a0e193a82f2ea8e9f5b  libstdc++-v3/config/os/gnu-linux/arm-eabi-extra.ver
! 3e924f2f02e4abef0a47500e409a155c  libstdc++-v3/config/os/gnu-linux/ctype_base.h
! c120d5cac5d6906f73315111f4876d85  libstdc++-v3/config/os/gnu-linux/ctype_configure_char.cc
! 3c09c2cd5be0fc5f2689ab9ffbdb3d66  libstdc++-v3/config/os/gnu-linux/ctype_inline.h
  e7a5616dfe1ba65fd2ef182675c2f3e4  libstdc++-v3/config/os/gnu-linux/ldbl-extra.ver
! f471618f5d2c664eabf83743139fab13  libstdc++-v3/config/os/gnu-linux/os_defines.h
! 749d3ca5c1003392e023e543e239baa5  libstdc++-v3/config/os/hpux/ctype_base.h
! 7d0eea74f6c9a0fa41b4ca369c8df821  libstdc++-v3/config/os/hpux/ctype_configure_char.cc
! 3c09c2cd5be0fc5f2689ab9ffbdb3d66  libstdc++-v3/config/os/hpux/ctype_inline.h
! 51be90f5f2a3cb99ffbf4bfa395f5539  libstdc++-v3/config/os/hpux/os_defines.h
! f0c56d0031d94d71b2c86f132c71c502  libstdc++-v3/config/os/mingw32-w64/ctype_base.h
! db214c23683352603afd05d1aeea4bed  libstdc++-v3/config/os/mingw32-w64/ctype_configure_char.cc
! 55594b0083a3af6295198ce94000dec3  libstdc++-v3/config/os/mingw32-w64/ctype_inline.h
! 54a963bbd9a63cc0e5202e048ef69e72  libstdc++-v3/config/os/mingw32-w64/error_constants.h
! e4b019becc164e7e840135691f22b656  libstdc++-v3/config/os/mingw32-w64/os_defines.h
! f0c56d0031d94d71b2c86f132c71c502  libstdc++-v3/config/os/mingw32/ctype_base.h
! db214c23683352603afd05d1aeea4bed  libstdc++-v3/config/os/mingw32/ctype_configure_char.cc
! 55594b0083a3af6295198ce94000dec3  libstdc++-v3/config/os/mingw32/ctype_inline.h
! 2a22cab6d239a4f907348118c7b45012  libstdc++-v3/config/os/mingw32/error_constants.h
! 017a8211c376843aaf8f7688f5b929e8  libstdc++-v3/config/os/mingw32/os_defines.h
! aa55b24d1c11c6c8dc16b9152651c2c6  libstdc++-v3/config/os/newlib/ctype_base.h
! d4a13cfd510c568639b454de5c46cf10  libstdc++-v3/config/os/newlib/ctype_configure_char.cc
! d801e73fff1726892e39229e0b4766f2  libstdc++-v3/config/os/newlib/ctype_inline.h
! 8d44c6f5cb0ff20ff31f925d3bc9f120  libstdc++-v3/config/os/newlib/os_defines.h
! d8280c13e8e6184849ca69abbf83d522  libstdc++-v3/config/os/qnx/qnx6.1/ctype_base.h
! 2c918ec149003aa084a4b3bf64467eae  libstdc++-v3/config/os/qnx/qnx6.1/ctype_configure_char.cc
! 2f44935156e7c2089e135e64589792ec  libstdc++-v3/config/os/qnx/qnx6.1/ctype_inline.h
! 462c8693d04750b7dce17354daf95af1  libstdc++-v3/config/os/qnx/qnx6.1/os_defines.h
! 602447e58e09bf56b6c7bb033f4e8740  libstdc++-v3/config/os/solaris/solaris2.10/ctype_base.h
! 4dbb817952e89b7bf62a7e6b35d582ef  libstdc++-v3/config/os/solaris/solaris2.10/ctype_configure_char.cc
! 3c09c2cd5be0fc5f2689ab9ffbdb3d66  libstdc++-v3/config/os/solaris/solaris2.10/ctype_inline.h
! fa52ae975846de862ff8edbcd483969c  libstdc++-v3/config/os/solaris/solaris2.10/os_defines.h
! 8e5ffa32b5a372bcc0e4b79c466cce0c  libstdc++-v3/config/os/tpf/ctype_base.h
! e9d5c39cf18660b6b2d3259ba237b276  libstdc++-v3/config/os/tpf/ctype_configure_char.cc
! b8f02e0c244200908cdf59ae35ec9502  libstdc++-v3/config/os/tpf/ctype_inline.h
! 6c4ba70689c62fc440a8a792f321402d  libstdc++-v3/config/os/tpf/os_defines.h
! d9deff4118dad374007ff8e6715f0fe2  libstdc++-v3/config/os/uclibc/ctype_base.h
! a167fbf0b137fa4b7c1d54750ddd2307  libstdc++-v3/config/os/uclibc/ctype_configure_char.cc
! 3c09c2cd5be0fc5f2689ab9ffbdb3d66  libstdc++-v3/config/os/uclibc/ctype_inline.h
! 9cc049a625cec358f2e20cf33742cd1f  libstdc++-v3/config/os/uclibc/os_defines.h
! f1a91225f9eb6e6ad04e3b1950bfecc5  libstdc++-v3/config/os/vxworks/ctype_base.h
! 48d9e86ad4ef42901bd75da6d033735d  libstdc++-v3/config/os/vxworks/ctype_configure_char.cc
! 69b3ded0fef25251ec3cc455c63ccb35  libstdc++-v3/config/os/vxworks/ctype_inline.h
! 9ab732d9a797dc9f1e4b3737a660a811  libstdc++-v3/config/os/vxworks/os_defines.h
! aad747a2259ff301c13f79a1550dd2be  libstdc++-v3/configure
! 2dc4794c156921badcc27653de5e01c3  libstdc++-v3/configure.ac
  e711fd9f625040036e12e7ec93b06781  libstdc++-v3/configure.host
! f2414a87c1c3cc304324ef345097ee00  libstdc++-v3/crossconfig.m4
! a73416d547c6e45dc617080622b99327  libstdc++-v3/doc/Makefile.am
! e336a04070b2b4a61b3eab18b428e7b9  libstdc++-v3/doc/Makefile.in
  3f7ff07f68cc7610addc1921bc125548  libstdc++-v3/doc/doxygen/Intro.3
! 52a6a337155d5af357625d178eca46b8  libstdc++-v3/doc/doxygen/doxygroups.cc
  520db39aef0e2a59418132af88b897ed  libstdc++-v3/doc/doxygen/mainpage.html
  3486d64b0aaa601908006a0e78395ca3  libstdc++-v3/doc/doxygen/stdheader.cc
  1273764cd133c402d2d3f22cf2913af5  libstdc++-v3/doc/doxygen/tables.html
  ee599e042e0ab46c3d78dd8675b8ba7f  libstdc++-v3/doc/doxygen/user.cfg.in
  66e139590a163a3e9d632f33fbe1d1b3  libstdc++-v3/doc/html/README
! edf4fe529876f5d89b6d9b73fe2569dc  libstdc++-v3/doc/html/api.html
  fd168dc2b2d0c12b1e17b40ffec96390  libstdc++-v3/doc/html/bk02.html
  47886ba7da131bf3cbf81a27cada5f6f  libstdc++-v3/doc/html/bk03.html
! f89d74931eedaee15ce66393fea45f53  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
*** 66309,66342 ****
  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
! d6187f631e2e553aa953f8fdff93aa27  libstdc++-v3/doc/html/index.html
! 125ef9566dd62a95272fbf119e73d931  libstdc++-v3/doc/html/manual/abi.html
  4ce10e27356ac31a5b7962aecbeb3638  libstdc++-v3/doc/html/manual/algorithms.html
! a81de231a9e1612c533ab8db88bbe056  libstdc++-v3/doc/html/manual/api.html
! a98a4b5a07a3be04f6466b4b73c2f4e2  libstdc++-v3/doc/html/manual/appendix.html
  2e203459294270410e5c5c7c6dca5cd5  libstdc++-v3/doc/html/manual/appendix_contributing.html
! dd7983a9236abbb42ad2503972011adf  libstdc++-v3/doc/html/manual/appendix_free.html
  31b030eb32be4f6fa6ea75f183787741  libstdc++-v3/doc/html/manual/appendix_gfdl.html
  6f716660c6221f5daa1a8841e82d3f97  libstdc++-v3/doc/html/manual/appendix_gpl.html
! 4475689867df3d91356fdb7dacb270df  libstdc++-v3/doc/html/manual/appendix_porting.html
  88601e29445579d77cd6a3a88c8df909  libstdc++-v3/doc/html/manual/associative.html
  b8ac9fc2f2cfcaed0450c79e2fb01569  libstdc++-v3/doc/html/manual/atomics.html
! 913bcad14d9b5e672ad3670bfc7d1de9  libstdc++-v3/doc/html/manual/backwards.html
  eed66bf6108dd329e892b6e813b80906  libstdc++-v3/doc/html/manual/bitmap_allocator.html
  9492db633acbfab53feaff0b37361e68  libstdc++-v3/doc/html/manual/bitmap_allocator_impl.html
! d864c5147d5914ecb484b2ec4c73aac7  libstdc++-v3/doc/html/manual/bugs.html
  cc3700f2fde50987f186f23abf98a7b1  libstdc++-v3/doc/html/manual/concept_checking.html
  f3a54a6315d716742603d33f454f2c19  libstdc++-v3/doc/html/manual/concurrency.html
  ef792a711c76c67c86fc2fa8174c2980  libstdc++-v3/doc/html/manual/configure.html
! f31ed9667084a575ba221adc39e249a8  libstdc++-v3/doc/html/manual/containers.html
  c7e40c1085e414b3b4d5896db4013205  libstdc++-v3/doc/html/manual/containers_and_c.html
  012dc3d3a4e5423c2fba69d5a3949d93  libstdc++-v3/doc/html/manual/debug.html
  1bd34529d162b6f3a08d5f2ea4943c6a  libstdc++-v3/doc/html/manual/debug_mode.html
! 8593a73f3114d29cfaaee91529bb747d  libstdc++-v3/doc/html/manual/debug_mode_design.html
  fc2f4ac9d9c05ca8c4dce6b46e259f97  libstdc++-v3/doc/html/manual/debug_mode_semantics.html
  9b49d08d3786c91a4cb52fb6b60b76c3  libstdc++-v3/doc/html/manual/debug_mode_using.html
  7bcc35e818f9360d10ecfe70e4dedcc0  libstdc++-v3/doc/html/manual/diagnostics.html
! a9912c2e6de072fc1b2f1794a1b8cd00  libstdc++-v3/doc/html/manual/documentation_hacking.html
  c472d3d333cea10a613a5177af5b053a  libstdc++-v3/doc/html/manual/dynamic_memory.html
  55666dfa05ec7aae2596d6968f6fdb38  libstdc++-v3/doc/html/manual/errno.html
  f5df2458b52ebaa400811787cbf348fa  libstdc++-v3/doc/html/manual/ext_algorithms.html
--- 71179,71212 ----
  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
! 1e18c95592576257635f20334f859574  libstdc++-v3/doc/html/index.html
! 52a798524b2b09bcf01d7715562cb609  libstdc++-v3/doc/html/manual/abi.html
  4ce10e27356ac31a5b7962aecbeb3638  libstdc++-v3/doc/html/manual/algorithms.html
! 398b32669587014a18d6aaf46f12c664  libstdc++-v3/doc/html/manual/api.html
! 54dd1e43f1bd7c3e8db1a59012fff57d  libstdc++-v3/doc/html/manual/appendix.html
  2e203459294270410e5c5c7c6dca5cd5  libstdc++-v3/doc/html/manual/appendix_contributing.html
! 0b45d6195986f5092b2354c1f678a790  libstdc++-v3/doc/html/manual/appendix_free.html
  31b030eb32be4f6fa6ea75f183787741  libstdc++-v3/doc/html/manual/appendix_gfdl.html
  6f716660c6221f5daa1a8841e82d3f97  libstdc++-v3/doc/html/manual/appendix_gpl.html
! ba892648626b487b5de5ca040d4c293d  libstdc++-v3/doc/html/manual/appendix_porting.html
  88601e29445579d77cd6a3a88c8df909  libstdc++-v3/doc/html/manual/associative.html
  b8ac9fc2f2cfcaed0450c79e2fb01569  libstdc++-v3/doc/html/manual/atomics.html
! 5861d1e084df31a36567b1e081c3deab  libstdc++-v3/doc/html/manual/backwards.html
  eed66bf6108dd329e892b6e813b80906  libstdc++-v3/doc/html/manual/bitmap_allocator.html
  9492db633acbfab53feaff0b37361e68  libstdc++-v3/doc/html/manual/bitmap_allocator_impl.html
! 697ed45baf296916ebb40c35306ae23b  libstdc++-v3/doc/html/manual/bugs.html
  cc3700f2fde50987f186f23abf98a7b1  libstdc++-v3/doc/html/manual/concept_checking.html
  f3a54a6315d716742603d33f454f2c19  libstdc++-v3/doc/html/manual/concurrency.html
  ef792a711c76c67c86fc2fa8174c2980  libstdc++-v3/doc/html/manual/configure.html
! 4bccee4ac05257d0c5dfc90aeee91604  libstdc++-v3/doc/html/manual/containers.html
  c7e40c1085e414b3b4d5896db4013205  libstdc++-v3/doc/html/manual/containers_and_c.html
  012dc3d3a4e5423c2fba69d5a3949d93  libstdc++-v3/doc/html/manual/debug.html
  1bd34529d162b6f3a08d5f2ea4943c6a  libstdc++-v3/doc/html/manual/debug_mode.html
! 1cdde24f16865575b93bcb86156f70e5  libstdc++-v3/doc/html/manual/debug_mode_design.html
  fc2f4ac9d9c05ca8c4dce6b46e259f97  libstdc++-v3/doc/html/manual/debug_mode_semantics.html
  9b49d08d3786c91a4cb52fb6b60b76c3  libstdc++-v3/doc/html/manual/debug_mode_using.html
  7bcc35e818f9360d10ecfe70e4dedcc0  libstdc++-v3/doc/html/manual/diagnostics.html
! 5d2be4d0f89a3d3eecb4938446c14d0d  libstdc++-v3/doc/html/manual/documentation_hacking.html
  c472d3d333cea10a613a5177af5b053a  libstdc++-v3/doc/html/manual/dynamic_memory.html
  55666dfa05ec7aae2596d6968f6fdb38  libstdc++-v3/doc/html/manual/errno.html
  f5df2458b52ebaa400811787cbf348fa  libstdc++-v3/doc/html/manual/ext_algorithms.html
*************** f5df2458b52ebaa400811787cbf348fa  libstd
*** 66348,66376 ****
  e5fed5d4ea91479a30a01ad2fa63b502  libstdc++-v3/doc/html/manual/ext_demangling.html
  7e3f9c24599534279607db4f7b94f09e  libstdc++-v3/doc/html/manual/ext_io.html
  6198e9045e99d5770c195193837a81af  libstdc++-v3/doc/html/manual/ext_iterators.html
! 9f7d82fc9c86c2a2e7d3b6550e075bc6  libstdc++-v3/doc/html/manual/ext_numerics.html
  6d380acac52eb8c888a54068e44b16ac  libstdc++-v3/doc/html/manual/ext_preface.html
! d99f2764a2a1d796f13869fe93fc0441  libstdc++-v3/doc/html/manual/ext_sgi.html
  cf360e652a99b60dfce0e335b47297ed  libstdc++-v3/doc/html/manual/ext_utilities.html
  556fc3a802b3c60016cd65663faf29f8  libstdc++-v3/doc/html/manual/extensions.html
  33d3eb7f9e6575fa00d986ec17944e53  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
! 8e59f4788044868bed89507f46412124  libstdc++-v3/doc/html/manual/index.html
  8687facb6d19ccc2a663efbc50e745a1  libstdc++-v3/doc/html/manual/internals.html
  c7ffc4ff6594f9e3dfeec284f8f782bd  libstdc++-v3/doc/html/manual/intro.html
  46de5aefef02b8c599fc816bea53ae67  libstdc++-v3/doc/html/manual/io.html
  371c9928b1459cd70fcfc48407cf26cd  libstdc++-v3/doc/html/manual/io_and_c.html
  32f6d6929349f8f96de44fbdd842ed48  libstdc++-v3/doc/html/manual/iterators.html
! 8ec7c1b7fc36b72f1bb9ddc0e939bb26  libstdc++-v3/doc/html/manual/license.html
  69cfb7ea1d69c38e3d673ba9f4a7c3ba  libstdc++-v3/doc/html/manual/localization.html
  9d7282a3a92209b987a91b15973414af  libstdc++-v3/doc/html/manual/make.html
! 5130ed24a3f0230b3b8300ed3de960cc  libstdc++-v3/doc/html/manual/memory.html
  4970f8a0270bd70ee4f48d19c4782afc  libstdc++-v3/doc/html/manual/mt_allocator.html
  0ade9da6c1a80afa0f9e498caea2faf9  libstdc++-v3/doc/html/manual/mt_allocator_design.html
  6cedc0933aa9ffe31dbea517db997b9e  libstdc++-v3/doc/html/manual/mt_allocator_ex_multi.html
  649fbf3df6f77e3a36ee9b933f79546f  libstdc++-v3/doc/html/manual/mt_allocator_ex_single.html
! ee5c8437e1e5c265071e78c7cc8c0700  libstdc++-v3/doc/html/manual/mt_allocator_impl.html
  9dabea61a71c003598f8a991e614e76c  libstdc++-v3/doc/html/manual/numerics.html
  88a009e3d0a8c9e08103a63fdce3f776  libstdc++-v3/doc/html/manual/numerics_and_c.html
  d569c55932dee4a3a4e8598da8998e28  libstdc++-v3/doc/html/manual/pairs.html
--- 71218,71246 ----
  e5fed5d4ea91479a30a01ad2fa63b502  libstdc++-v3/doc/html/manual/ext_demangling.html
  7e3f9c24599534279607db4f7b94f09e  libstdc++-v3/doc/html/manual/ext_io.html
  6198e9045e99d5770c195193837a81af  libstdc++-v3/doc/html/manual/ext_iterators.html
! 8637af7d688cabb7e5ac9df53ebe10f9  libstdc++-v3/doc/html/manual/ext_numerics.html
  6d380acac52eb8c888a54068e44b16ac  libstdc++-v3/doc/html/manual/ext_preface.html
! 338e2d1b7364fcef1532331f16232111  libstdc++-v3/doc/html/manual/ext_sgi.html
  cf360e652a99b60dfce0e335b47297ed  libstdc++-v3/doc/html/manual/ext_utilities.html
  556fc3a802b3c60016cd65663faf29f8  libstdc++-v3/doc/html/manual/extensions.html
  33d3eb7f9e6575fa00d986ec17944e53  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
! bddcdade296f31eb817377bb536a5870  libstdc++-v3/doc/html/manual/index.html
  8687facb6d19ccc2a663efbc50e745a1  libstdc++-v3/doc/html/manual/internals.html
  c7ffc4ff6594f9e3dfeec284f8f782bd  libstdc++-v3/doc/html/manual/intro.html
  46de5aefef02b8c599fc816bea53ae67  libstdc++-v3/doc/html/manual/io.html
  371c9928b1459cd70fcfc48407cf26cd  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
  69cfb7ea1d69c38e3d673ba9f4a7c3ba  libstdc++-v3/doc/html/manual/localization.html
  9d7282a3a92209b987a91b15973414af  libstdc++-v3/doc/html/manual/make.html
! 3b674a669ec6dd2e0ead0f69e70b7e3e  libstdc++-v3/doc/html/manual/memory.html
  4970f8a0270bd70ee4f48d19c4782afc  libstdc++-v3/doc/html/manual/mt_allocator.html
  0ade9da6c1a80afa0f9e498caea2faf9  libstdc++-v3/doc/html/manual/mt_allocator_design.html
  6cedc0933aa9ffe31dbea517db997b9e  libstdc++-v3/doc/html/manual/mt_allocator_ex_multi.html
  649fbf3df6f77e3a36ee9b933f79546f  libstdc++-v3/doc/html/manual/mt_allocator_ex_single.html
! ac406e2a1066be01fb73e96c0e5db60b  libstdc++-v3/doc/html/manual/mt_allocator_impl.html
  9dabea61a71c003598f8a991e614e76c  libstdc++-v3/doc/html/manual/numerics.html
  88a009e3d0a8c9e08103a63fdce3f776  libstdc++-v3/doc/html/manual/numerics_and_c.html
  d569c55932dee4a3a4e8598da8998e28  libstdc++-v3/doc/html/manual/pairs.html
*************** ecf6c505a75fa3dff283b1fefdda671b  libstd
*** 66380,66386 ****
  0239345019fd0eb245549c7a8187119c  libstdc++-v3/doc/html/manual/parallel_mode_test.html
  935f34a82f6ef3b0dc60b8d3a06563ae  libstdc++-v3/doc/html/manual/parallel_mode_using.html
  9e3377de10b99e257ed6f85c85a470a1  libstdc++-v3/doc/html/manual/policy_based_data_structures_test.html
! 3a8858b942ad499ff0e99cc6d50fff34  libstdc++-v3/doc/html/manual/policy_data_structures.html
  bcc51113555eeb7382531f50cd4ee61f  libstdc++-v3/doc/html/manual/policy_data_structures_ack.html
  1975874ffc2ea8d353592e83c9ed1d02  libstdc++-v3/doc/html/manual/policy_data_structures_design.html
  2a0b9e5e71f8dbf892d6b1f8e629741e  libstdc++-v3/doc/html/manual/policy_data_structures_using.html
--- 71250,71256 ----
  0239345019fd0eb245549c7a8187119c  libstdc++-v3/doc/html/manual/parallel_mode_test.html
  935f34a82f6ef3b0dc60b8d3a06563ae  libstdc++-v3/doc/html/manual/parallel_mode_using.html
  9e3377de10b99e257ed6f85c85a470a1  libstdc++-v3/doc/html/manual/policy_based_data_structures_test.html
! 387a1d03df3006a75da1c1f5e6354811  libstdc++-v3/doc/html/manual/policy_data_structures.html
  bcc51113555eeb7382531f50cd4ee61f  libstdc++-v3/doc/html/manual/policy_data_structures_ack.html
  1975874ffc2ea8d353592e83c9ed1d02  libstdc++-v3/doc/html/manual/policy_data_structures_design.html
  2a0b9e5e71f8dbf892d6b1f8e629741e  libstdc++-v3/doc/html/manual/policy_data_structures_using.html
*************** dc012f6bbeb24332ca023dc15d6da9cf  libstd
*** 66395,66425 ****
  94a606d009c84c4160e2b0557563c305  libstdc++-v3/doc/html/manual/source_code_style.html
  f875f3f4cddfe4fee6aff2308ccb4563  libstdc++-v3/doc/html/manual/source_design_notes.html
  f87298c8974ee33f2519348430b786ae  libstdc++-v3/doc/html/manual/source_organization.html
! 0db95b331ee26b77b7333a5264b3938f  libstdc++-v3/doc/html/manual/status.html
  9e6cce6bed38f62648e12eb77363d1fc  libstdc++-v3/doc/html/manual/std_contents.html
  dbb5f81a9e8864374fbb835eaa4e8b0d  libstdc++-v3/doc/html/manual/streambufs.html
! 2eddc447009e3c845b6489be7dc2a11a  libstdc++-v3/doc/html/manual/strings.html
  4fceea62121ba1fe214414a7506d385e  libstdc++-v3/doc/html/manual/stringstreams.html
  d8ac0a9de0b3b518111ccdd44d818898  libstdc++-v3/doc/html/manual/support.html
  1438f664082c52484fc99afed190b575  libstdc++-v3/doc/html/manual/termination.html
! 085e19f995d09c7a137b4ee193789029  libstdc++-v3/doc/html/manual/test.html
  c39b927efcec5ac84139c1490c8ef320  libstdc++-v3/doc/html/manual/traits.html
  530b96535baacfe35df2e65f9dfe7efc  libstdc++-v3/doc/html/manual/unordered_associative.html
  b2c30bf7f27ef8bbd85ff82fab01729f  libstdc++-v3/doc/html/manual/using.html
! 98f1c252433b417ec9c0489169389895  libstdc++-v3/doc/html/manual/using_concurrency.html
  09099a6836752a44e855a76e0d3d6aa7  libstdc++-v3/doc/html/manual/using_dual_abi.html
  4868e3591133577974ca85a537dbd8a0  libstdc++-v3/doc/html/manual/using_dynamic_or_shared.html
  3f1b2fcb0f6064ea3b698623f2b6a79a  libstdc++-v3/doc/html/manual/using_exceptions.html
  0c20cb9855947efe5ea416eae339b236  libstdc++-v3/doc/html/manual/using_headers.html
! 3dfd3b98f510220a03bdc785f2c0a30a  libstdc++-v3/doc/html/manual/using_macros.html
  ccc3b1a320ccc49a977c80546610195b  libstdc++-v3/doc/html/manual/using_namespaces.html
! 0b2b2db689ecf2a5ad885a7e076a4e94  libstdc++-v3/doc/html/manual/utilities.html
! 449dbbf51240d77a37d2437eff256924  libstdc++-v3/doc/xml/api.xml
  0b177c199fb448ad3630d15bdc3cbb19  libstdc++-v3/doc/xml/authors.xml
  f5a41d4f7585b850b3182fc5f4888f93  libstdc++-v3/doc/xml/book.txml
  95d1335e76860d53246f3e400231ec38  libstdc++-v3/doc/xml/chapter.txml
  7f8c520dc83013026c671c5c342f73e2  libstdc++-v3/doc/xml/class.txml
! 25782642272c68924eb3850541cbb813  libstdc++-v3/doc/xml/faq.xml
  0408e04957d20fcb2a1048c482230ec0  libstdc++-v3/doc/xml/gnu/fdl-1.3.xml
  df4574d04d7f029398ab0183832017b6  libstdc++-v3/doc/xml/gnu/gpl-3.0.xml
  18a6390297702ec8fd75cbcc525d2005  libstdc++-v3/doc/xml/images/confdeps.dot
--- 71265,71295 ----
  94a606d009c84c4160e2b0557563c305  libstdc++-v3/doc/html/manual/source_code_style.html
  f875f3f4cddfe4fee6aff2308ccb4563  libstdc++-v3/doc/html/manual/source_design_notes.html
  f87298c8974ee33f2519348430b786ae  libstdc++-v3/doc/html/manual/source_organization.html
! a91da855aa054ba05877739fe01957c2  libstdc++-v3/doc/html/manual/status.html
  9e6cce6bed38f62648e12eb77363d1fc  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
  d8ac0a9de0b3b518111ccdd44d818898  libstdc++-v3/doc/html/manual/support.html
  1438f664082c52484fc99afed190b575  libstdc++-v3/doc/html/manual/termination.html
! bab9ea98b3870f2b252a5361dd1f64dd  libstdc++-v3/doc/html/manual/test.html
  c39b927efcec5ac84139c1490c8ef320  libstdc++-v3/doc/html/manual/traits.html
  530b96535baacfe35df2e65f9dfe7efc  libstdc++-v3/doc/html/manual/unordered_associative.html
  b2c30bf7f27ef8bbd85ff82fab01729f  libstdc++-v3/doc/html/manual/using.html
! 4738b5033faff66c317159aea346263a  libstdc++-v3/doc/html/manual/using_concurrency.html
  09099a6836752a44e855a76e0d3d6aa7  libstdc++-v3/doc/html/manual/using_dual_abi.html
  4868e3591133577974ca85a537dbd8a0  libstdc++-v3/doc/html/manual/using_dynamic_or_shared.html
  3f1b2fcb0f6064ea3b698623f2b6a79a  libstdc++-v3/doc/html/manual/using_exceptions.html
  0c20cb9855947efe5ea416eae339b236  libstdc++-v3/doc/html/manual/using_headers.html
! 842198c1e138c0f4d83ceb71239f3f83  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
! 1453b0f54e347d9a8b835f76b3566678  libstdc++-v3/doc/xml/api.xml
  0b177c199fb448ad3630d15bdc3cbb19  libstdc++-v3/doc/xml/authors.xml
  f5a41d4f7585b850b3182fc5f4888f93  libstdc++-v3/doc/xml/book.txml
  95d1335e76860d53246f3e400231ec38  libstdc++-v3/doc/xml/chapter.txml
  7f8c520dc83013026c671c5c342f73e2  libstdc++-v3/doc/xml/class.txml
! 413ecc31dc6102eccb38570acbd7904d  libstdc++-v3/doc/xml/faq.xml
  0408e04957d20fcb2a1048c482230ec0  libstdc++-v3/doc/xml/gnu/fdl-1.3.xml
  df4574d04d7f029398ab0183832017b6  libstdc++-v3/doc/xml/gnu/gpl-3.0.xml
  18a6390297702ec8fd75cbcc525d2005  libstdc++-v3/doc/xml/images/confdeps.dot
*************** cc132f90a00a3ca05f64b578f9e332aa  libstd
*** 66599,73407 ****
  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
! 59673c4ec83a73f635bf37dd02ad3ae1  libstdc++-v3/doc/xml/manual/abi.xml
  6a68f07a8b8abd9e65846432ed52d646  libstdc++-v3/doc/xml/manual/algorithms.xml
! 832fb85e9dd8e40662f3abe5b0f7b070  libstdc++-v3/doc/xml/manual/allocator.xml
  b06c7d4934846623f43ca218d68492c7  libstdc++-v3/doc/xml/manual/appendix_contributing.xml
! 074e722c08588c6474b7eb1dc527bd89  libstdc++-v3/doc/xml/manual/appendix_free.xml
  fddfbac311009ebd3056c4edd7ee522a  libstdc++-v3/doc/xml/manual/appendix_porting.xml
  e0b6ea09e982758f8a79d0d165939943  libstdc++-v3/doc/xml/manual/atomics.xml
  41f9578438e22c82fe9f70dc482cdca1  libstdc++-v3/doc/xml/manual/auto_ptr.xml
! 0db7cd62476b3752f92c915cbe10e8ea  libstdc++-v3/doc/xml/manual/backwards_compatibility.xml
  9890a9635fbc47991765f74f8727c01b  libstdc++-v3/doc/xml/manual/bitmap_allocator.xml
  0b5f349e0cb157661fd44b59627716e3  libstdc++-v3/doc/xml/manual/build_hacking.xml
  90680f5663d07927feb6a0b4501e5d4a  libstdc++-v3/doc/xml/manual/codecvt.xml
  5e6aec06cc4fb89c3732b636f9186077  libstdc++-v3/doc/xml/manual/concurrency.xml
  6ff8b882e61c5ff513709c46fd1b0c72  libstdc++-v3/doc/xml/manual/concurrency_extensions.xml
  f13297d479322bdb5fffc34f5fb1c5c8  libstdc++-v3/doc/xml/manual/configure.xml
! 289d5c67b03a147624e55792fca3916f  libstdc++-v3/doc/xml/manual/containers.xml
  35d8bc77747044001636800a86dbac24  libstdc++-v3/doc/xml/manual/ctype.xml
  e7a9590bfa29f2842a602c7d9281e8df  libstdc++-v3/doc/xml/manual/debug.xml
! 4555f61b57b44e77be733d10aaa979c5  libstdc++-v3/doc/xml/manual/debug_mode.xml
  f0323e43ff8fc1ca28dcdfae61b6cb19  libstdc++-v3/doc/xml/manual/diagnostics.xml
! 099bda8905d39fc07d87152927c32492  libstdc++-v3/doc/xml/manual/documentation_hacking.xml
! beaf7f0a49ee4f9a868913839fb3e8b4  libstdc++-v3/doc/xml/manual/evolution.xml
! d700263acf88b675c68d1cbe9dadea6b  libstdc++-v3/doc/xml/manual/extensions.xml
  26083dec441281888a23365de5567180  libstdc++-v3/doc/xml/manual/internals.xml
! 7620ce738b8dff5f03731f89f5dc03f0  libstdc++-v3/doc/xml/manual/intro.xml
  82d01f11ebf848dc64a611a829ef5a38  libstdc++-v3/doc/xml/manual/io.xml
  bab548248426e0e90cdc1436ff5b87de  libstdc++-v3/doc/xml/manual/iterators.xml
  5d3e282d89ac0af0f7752f88466a9d39  libstdc++-v3/doc/xml/manual/locale.xml
  8d6a4daabfdaa26ed8c3bd68f6cb0930  libstdc++-v3/doc/xml/manual/localization.xml
  d1f75977cf17da71ede22a4884f5771f  libstdc++-v3/doc/xml/manual/messages.xml
! 489dc876235f0b46a0cf931a02ed38a6  libstdc++-v3/doc/xml/manual/mt_allocator.xml
  0093c0e2ef4c460d644a7c3d3e90c7b4  libstdc++-v3/doc/xml/manual/numerics.xml
  e2b6426957c60c385c84e7b5143089ce  libstdc++-v3/doc/xml/manual/parallel_mode.xml
  927aa35a827fd8010896cacc05bacd17  libstdc++-v3/doc/xml/manual/policy_data_structures.xml
! 507d70152c09c65d4d3ef641eb13a6cb  libstdc++-v3/doc/xml/manual/policy_data_structures_biblio.xml
  4e49a8e041ae187579c7683d4b840fc4  libstdc++-v3/doc/xml/manual/prerequisites.xml
  5cca2fce9e94a0243e546e0c59792f87  libstdc++-v3/doc/xml/manual/profile_mode.xml
  d86ab4ddaebc9752d3a71f23cc8879cb  libstdc++-v3/doc/xml/manual/shared_ptr.xml
! 8b2ba528aeefb3571a63fba077b46ee1  libstdc++-v3/doc/xml/manual/spine.xml
! 2282bf36adee03f3823a6fdaa7fdd128  libstdc++-v3/doc/xml/manual/status_cxx1998.xml
! a9d987cf0583e51ad9eb6ac589ca5e8e  libstdc++-v3/doc/xml/manual/status_cxx2011.xml
! 72b9bc0f2799920c3d2caf7a550686f5  libstdc++-v3/doc/xml/manual/status_cxx2014.xml
! 7e9469d9ecdca33ba1c50fd701a52a19  libstdc++-v3/doc/xml/manual/status_cxx2017.xml
  3c72998c4574690fac280c058a0db757  libstdc++-v3/doc/xml/manual/status_cxxis29124.xml
! 6edaab9973b0acf56c2b1cd715448e0f  libstdc++-v3/doc/xml/manual/status_cxxtr1.xml
! 0acb29d13accb1b483e4f108b5a96714  libstdc++-v3/doc/xml/manual/status_cxxtr24733.xml
! 4bde3160d9ccaca3edfee800f93973f1  libstdc++-v3/doc/xml/manual/strings.xml
  c564c4399f854273d5814b3c57d3d591  libstdc++-v3/doc/xml/manual/support.xml
! a8cf09674b5c2dc9ddb332d1a8461eba  libstdc++-v3/doc/xml/manual/test.xml
  b3e6db24172a20bdef96a05a3ea26101  libstdc++-v3/doc/xml/manual/test_policy_data_structures.xml
! c4e137ddb7ea4f7340a7618637560f4c  libstdc++-v3/doc/xml/manual/using.xml
  cc84d1c1a7a9491f46a3e463fcd8aa26  libstdc++-v3/doc/xml/manual/using_exceptions.xml
! d42dacf57cbf8644fc8b7217c7e8893a  libstdc++-v3/doc/xml/manual/utilities.xml
! a209e7576dd578adf52c10796b53c14d  libstdc++-v3/doc/xml/spine.xml
  bd966b4a0df6f2a84f9770525581d45c  libstdc++-v3/doc/xsl/customization.xsl.in
  fa0fbb589f8e3959f474ba45b0758902  libstdc++-v3/fragment.am
! 03a2793945d946165c4958d6b6d27417  libstdc++-v3/include/Makefile.am
! 1a041ac3e4e88543cd569529e8d44792  libstdc++-v3/include/Makefile.in
! fe6c4f9e05006cf7f39ed3b88343c143  libstdc++-v3/include/backward/auto_ptr.h
! fe61c64d9cd7f5c6403522bb61a6cd7e  libstdc++-v3/include/backward/backward_warning.h
! b6eebaca0721deccbcade8b6a7b3ab28  libstdc++-v3/include/backward/binders.h
! d5e879d6d10d1c322a6d0972a474fcdc  libstdc++-v3/include/backward/hash_fun.h
! aa90b1a31d5d7c546be44c9e996d83bb  libstdc++-v3/include/backward/hash_map
! c05903c9bf67e923fd8859dbaf1c5883  libstdc++-v3/include/backward/hash_set
! dd73791ec50e949851a7c1c80aec596e  libstdc++-v3/include/backward/hashtable.h
! d5e5d5c7e0633775d6a1916f35c2d04d  libstdc++-v3/include/backward/strstream
! 85739c6492875afe37be9ca5dcd06f4c  libstdc++-v3/include/bits/algorithmfwd.h
! 94a9702acd30acfaa446f1bb1e6d8725  libstdc++-v3/include/bits/alloc_traits.h
! bfbd703878549b45dbb2a6727b9b51f9  libstdc++-v3/include/bits/allocated_ptr.h
! 1ef653c761a0546ba8d4f2e4efa6dc04  libstdc++-v3/include/bits/allocator.h
! c0ad9c1c2e4c5c9d8d0fc56d18d002e5  libstdc++-v3/include/bits/atomic_base.h
! 6556bef5120f2b8175df86997fa17d28  libstdc++-v3/include/bits/atomic_futex.h
! 4002da87b9f86297830504829e93ee8e  libstdc++-v3/include/bits/basic_ios.h
! 355c760b2ddb77866d3be111d2216406  libstdc++-v3/include/bits/basic_ios.tcc
! fe71ae6ae877214daa1c25a92beac19a  libstdc++-v3/include/bits/basic_string.h
! f483e43bab9dd5c16fafeab7ec6a45f9  libstdc++-v3/include/bits/basic_string.tcc
! 2f06e59656664c29ba7c61ca91cf1c80  libstdc++-v3/include/bits/boost_concept_check.h
! 658da65d0ca3addc0639468aa85028e3  libstdc++-v3/include/bits/c++0x_warning.h
! eb778382c5272131670bfb6e6e18bf21  libstdc++-v3/include/bits/c++14_warning.h
! 9ff1b28f7787ea7d17b4beae9cb3e8e1  libstdc++-v3/include/bits/c++config
! c41408e5b91201d323514903be72be17  libstdc++-v3/include/bits/char_traits.h
! 4c0d0e0c253cebe08e42643de57ee529  libstdc++-v3/include/bits/codecvt.h
! fa1dc211040365ce32fb8072dc02a0a6  libstdc++-v3/include/bits/concept_check.h
! fa188d4b243b1dfce32f81944d80d51d  libstdc++-v3/include/bits/cpp_type_traits.h
! f4addcde213357ae315222fa5aa91686  libstdc++-v3/include/bits/deque.tcc
! dafd3fc465c26d7ac6cd93a13cb74d4b  libstdc++-v3/include/bits/enable_special_members.h
! ac1baa37f90c763685b00ef16a77a1fc  libstdc++-v3/include/bits/forward_list.h
! e823a1af92759a9316af067d3a63cc0d  libstdc++-v3/include/bits/forward_list.tcc
! b47d9c26945986d4fbda1e63c96e7145  libstdc++-v3/include/bits/fstream.tcc
! f7737ba0b208be376f9d35eb9a375ba5  libstdc++-v3/include/bits/functexcept.h
! d43a4b92ed291afa6650c89ad083189d  libstdc++-v3/include/bits/functional_hash.h
! 5315b31b83c8bf2a07680fb65e536406  libstdc++-v3/include/bits/gslice.h
! 7b1224ecb8e69dbfaf36e8c69e8736a5  libstdc++-v3/include/bits/gslice_array.h
! daadaa0e7853bf8a97a3d80fca40fa85  libstdc++-v3/include/bits/hashtable.h
! 13ab915e77c1c9fd44144693f653db2a  libstdc++-v3/include/bits/hashtable_policy.h
! 0c03777d38834243a3556593e55575ea  libstdc++-v3/include/bits/indirect_array.h
! 2a82b5fa1f42e1cb7eb96d7bf1ec3178  libstdc++-v3/include/bits/invoke.h
! 0cda1aff5ef582a7be1633b4173ae6f9  libstdc++-v3/include/bits/ios_base.h
! 1811364d89d41b34996fe106fec9c340  libstdc++-v3/include/bits/istream.tcc
! e643ec81b75c069f1c27f4e8ea4be001  libstdc++-v3/include/bits/list.tcc
! 9b203355c419c4f93fca8f580e8bc495  libstdc++-v3/include/bits/locale_classes.h
! 29ac0825553a4f375a6e69277dca6b38  libstdc++-v3/include/bits/locale_classes.tcc
! e14f7b877d8649243e118f6345009179  libstdc++-v3/include/bits/locale_conv.h
! e50e4c9bfc433a488a2afe547fb0cc5c  libstdc++-v3/include/bits/locale_facets.h
! 6755fd1a7cf15d0313093fbe482ebc24  libstdc++-v3/include/bits/locale_facets.tcc
! f1c018067acae41baf8eee4bc22cd464  libstdc++-v3/include/bits/locale_facets_nonio.h
! b5362775bf2d2bc3740af7842c1a52b0  libstdc++-v3/include/bits/locale_facets_nonio.tcc
! 09e2f081d7d59529b9a488457b67e7bd  libstdc++-v3/include/bits/localefwd.h
! 35ee5b1481681635e84e3d8a49999452  libstdc++-v3/include/bits/mask_array.h
! 6384dd4fee2ac565d2d38178aab160fb  libstdc++-v3/include/bits/memoryfwd.h
! 57592b40351b785329169cc8b8e59760  libstdc++-v3/include/bits/move.h
! 2348a5dc81c3f50651423035e01f6726  libstdc++-v3/include/bits/node_handle.h
! acbf67f70070c595cc00146e36a0470b  libstdc++-v3/include/bits/ostream.tcc
! 2bda0a1f5ee65ffb4682712c4b5df486  libstdc++-v3/include/bits/ostream_insert.h
! b7d9f46a6c1d3a64458605eb310f5d09  libstdc++-v3/include/bits/parse_numbers.h
! 7a2bae66f0694d4f581e77e6dac1a766  libstdc++-v3/include/bits/postypes.h
! 5f05adbf6e5443fe09c49513ee53b002  libstdc++-v3/include/bits/predefined_ops.h
! 7630ce3c939921f65df86d1f0ec8821b  libstdc++-v3/include/bits/ptr_traits.h
! 60e94258f562f81fd5c6853c88584ca3  libstdc++-v3/include/bits/quoted_string.h
! 2a9d52c65bba86df46860265064ff31d  libstdc++-v3/include/bits/random.h
! d4e960a7e9fe0f0626fa3af88849aeb7  libstdc++-v3/include/bits/random.tcc
! f9d10b7496885a8dc97c4235f55aa1fb  libstdc++-v3/include/bits/range_access.h
! 5cce56c9f8def1ffeef357b636554760  libstdc++-v3/include/bits/refwrap.h
! 23cee91e6b62eb8b315503127f1de054  libstdc++-v3/include/bits/regex.h
! 235fc423dd7a3c1197fe4814c9863513  libstdc++-v3/include/bits/regex.tcc
! 15fecde24c6c0ef19b9337489b5c2132  libstdc++-v3/include/bits/regex_automaton.h
! 14d80b826dcc1327456a6d92023be82b  libstdc++-v3/include/bits/regex_automaton.tcc
! 867f18559c6e67b02ea8dfac9db3acb5  libstdc++-v3/include/bits/regex_compiler.h
! b3d52372466603020f0fa3e91247f888  libstdc++-v3/include/bits/regex_compiler.tcc
! ee2d786f32d7a73f0b4bd6935a9827ea  libstdc++-v3/include/bits/regex_constants.h
! d00f84ebfdfa911ea7c9fd51885da6ff  libstdc++-v3/include/bits/regex_error.h
! 01bcb49e262c8ae9e3712b115a50dcfa  libstdc++-v3/include/bits/regex_executor.h
! 2972173a4fa09ab9539165687c8116b7  libstdc++-v3/include/bits/regex_executor.tcc
! 0c33d93c635487b6232bcd862697ba83  libstdc++-v3/include/bits/regex_scanner.h
! 07f2a23357aff6ca17fe22c06b76aa87  libstdc++-v3/include/bits/regex_scanner.tcc
! c3df3171fa725190419507e58e126587  libstdc++-v3/include/bits/shared_ptr.h
! b679e348381f9f9d84d804acdead9bf2  libstdc++-v3/include/bits/shared_ptr_atomic.h
! 16603267884c17ed1b5c354f5c61b928  libstdc++-v3/include/bits/shared_ptr_base.h
! b794fda0e74584cf1f39d2efbccfdfb3  libstdc++-v3/include/bits/slice_array.h
! 735e2e72072394b255e2fa71323698fd  libstdc++-v3/include/bits/specfun.h
! 1a8e02c9151659b8742c3da17651458e  libstdc++-v3/include/bits/sstream.tcc
! ea83e995fd19f5d2df15f8e4ad6ef425  libstdc++-v3/include/bits/std_abs.h
! 04745c70e14ad0f0eeec346cd45549db  libstdc++-v3/include/bits/std_function.h
! 528362b2853ccf1a19ee9814ae6da905  libstdc++-v3/include/bits/std_mutex.h
! 57c82f70235b397967a5f35102812904  libstdc++-v3/include/bits/stl_algo.h
! 0110a2c765aaf979549030f030be6b31  libstdc++-v3/include/bits/stl_algobase.h
! d864d8ca92f36413241bdaeae10cb3a7  libstdc++-v3/include/bits/stl_bvector.h
! b8431df63253bf9fd518385226e12ce0  libstdc++-v3/include/bits/stl_construct.h
! e9adec6d3afd21a4eeba89e9cce45405  libstdc++-v3/include/bits/stl_deque.h
! 2f5d96347e4dc9ea2015e87ab4b28d14  libstdc++-v3/include/bits/stl_function.h
! 26d4812cfe0cfea680661ebf40f577f5  libstdc++-v3/include/bits/stl_heap.h
! b357e0743ab7cbd68a42017791b6a550  libstdc++-v3/include/bits/stl_iterator.h
! f5f163e4386d5cb103975b3d40ae923e  libstdc++-v3/include/bits/stl_iterator_base_funcs.h
! 95e0b4ab859fe465240c91f2cd18d9a9  libstdc++-v3/include/bits/stl_iterator_base_types.h
! 1beb38923d216c8cabdc7425f268b055  libstdc++-v3/include/bits/stl_list.h
! 8bb427a8a1c65af8a6b447802b25dd69  libstdc++-v3/include/bits/stl_map.h
! 3f805d6d72cd87a5748e1c5a0d273c0d  libstdc++-v3/include/bits/stl_multimap.h
! fc8e510c975c16838ca738577c3d8ada  libstdc++-v3/include/bits/stl_multiset.h
! faf617c8c8e3df42fab49503e5548987  libstdc++-v3/include/bits/stl_numeric.h
! 05eae9cce53df642db541dfaffb21c17  libstdc++-v3/include/bits/stl_pair.h
! 0038e7d8b023098a729d93ba0852db69  libstdc++-v3/include/bits/stl_queue.h
! 2ae67a27ca811d924c92610e4abad033  libstdc++-v3/include/bits/stl_raw_storage_iter.h
! a2281962b74d61def007f879af3c8f69  libstdc++-v3/include/bits/stl_relops.h
! 7341bc313f90ddc2f2f033c2598f052b  libstdc++-v3/include/bits/stl_set.h
! 2152f683e9aeecb07aa00a6caf0b1efc  libstdc++-v3/include/bits/stl_stack.h
! 06de465b8a7d35370f41ae1af74fc23e  libstdc++-v3/include/bits/stl_tempbuf.h
! 42ec8a81a6cb63b1c0901a86eb7aa05e  libstdc++-v3/include/bits/stl_tree.h
! 94fea59d2dd4a97df7c9e729cee69336  libstdc++-v3/include/bits/stl_uninitialized.h
! ec6c6b1bfc3b843d1bce994cac54b962  libstdc++-v3/include/bits/stl_vector.h
! 5c8d4f347b1ad81182650cafa36c86a3  libstdc++-v3/include/bits/stream_iterator.h
! 713b1e5bdcb6ef6d464c3ea068dd957a  libstdc++-v3/include/bits/streambuf.tcc
! 9540b21070a173268535881c5517754f  libstdc++-v3/include/bits/streambuf_iterator.h
! cb8a83c5ea9472d09da0e5010086c772  libstdc++-v3/include/bits/string_view.tcc
! 5c0c6b845b6e38ab5e22e418aeaee1b0  libstdc++-v3/include/bits/stringfwd.h
! a9fa84f93a12d008d690fb6c49d037ba  libstdc++-v3/include/bits/uniform_int_dist.h
! f84d19afb4f0df41a643d8131e90e604  libstdc++-v3/include/bits/unique_ptr.h
! 59364bf238d153ce660c42ffc6c9b24e  libstdc++-v3/include/bits/unordered_map.h
! 251035abb110ee7968c8eb6fcef6c57a  libstdc++-v3/include/bits/unordered_set.h
! 06758d4fd4602a6706aecc3087b34290  libstdc++-v3/include/bits/uses_allocator.h
! fc762c06dba512874f00456666187078  libstdc++-v3/include/bits/valarray_after.h
! c23c70c1a86148a02e0423c8f16480fc  libstdc++-v3/include/bits/valarray_array.h
! 54b32319ee720fc9d87e4457515d4f6a  libstdc++-v3/include/bits/valarray_array.tcc
! 7854ed66359b2824e1483befa0cacc83  libstdc++-v3/include/bits/valarray_before.h
! 4e3071e55fb1e4dc694f646197b61ed8  libstdc++-v3/include/bits/vector.tcc
! f88cefd46ea21a310190bed92141d4dd  libstdc++-v3/include/c/cassert
! 13d44cd24e1139ce654bf8edbcc4b266  libstdc++-v3/include/c/cctype
! 407b97b339afb27fb14ffafd1b398008  libstdc++-v3/include/c/cerrno
! 84e6fc906b9d79b7e61df5a4992f3b15  libstdc++-v3/include/c/cfloat
! 788422a812695e607e2dd33d4643d6f2  libstdc++-v3/include/c/ciso646
! 66625060b638b5afdf489f64de3da4eb  libstdc++-v3/include/c/climits
! b4acf19615b151081c878ee27359d31f  libstdc++-v3/include/c/clocale
! 667488d3fda704984044dcb5b7423b1a  libstdc++-v3/include/c/cmath
! cabe2977579cdbe8dac0b58be1f188cb  libstdc++-v3/include/c/csetjmp
! ad2e9f70283b85aa5255dd42090128c6  libstdc++-v3/include/c/csignal
! b45b59616157717a44e6d38fbc74e01b  libstdc++-v3/include/c/cstdarg
! fd63081a04b5e9ce51208fdb37b9e490  libstdc++-v3/include/c/cstddef
! 4c8a5899fde5ad9ff6c89f6c16e78c34  libstdc++-v3/include/c/cstdio
! 772183a70f7af3904c59a4f5efc168e6  libstdc++-v3/include/c/cstdlib
! 37e64664ffa318819cbb3319b6514b71  libstdc++-v3/include/c/cstring
! e6cc1848951a6fda9665f72f6eb3539c  libstdc++-v3/include/c/ctime
! d76d9a130f440a53e14f3a88ad4ac7ed  libstdc++-v3/include/c/cuchar
! bcd2a6f66347b842de1e7eb64a8c108f  libstdc++-v3/include/c/cwchar
! c306487b623ae73e89e7b19b78ba37d9  libstdc++-v3/include/c/cwctype
! 591da502cc667bb8eef273f7aa6ed4d3  libstdc++-v3/include/c_compatibility/assert.h
! d73d53cca34b0955d6db6789afa3bbc4  libstdc++-v3/include/c_compatibility/complex.h
! cdb9cc31753c08894bdb91e7726a0419  libstdc++-v3/include/c_compatibility/ctype.h
! 6edf5bfb73a7a1e7dadd4d5bfd054c18  libstdc++-v3/include/c_compatibility/errno.h
! 56b3c134add9ff944ced9c0d9dd72722  libstdc++-v3/include/c_compatibility/fenv.h
! 2a3c525378d13e4954df056efac3da55  libstdc++-v3/include/c_compatibility/float.h
! cdd998a1910058b18886ba4013f6a829  libstdc++-v3/include/c_compatibility/inttypes.h
! 112b76459df29c2585936d13464bc25c  libstdc++-v3/include/c_compatibility/iso646.h
! 01b42622db552caf42100ebf9f0d5373  libstdc++-v3/include/c_compatibility/limits.h
! 8d0c4a289b7e983734583252129c4f6f  libstdc++-v3/include/c_compatibility/locale.h
! 9f2aff4900980cb5e0d64ac0c62ee61f  libstdc++-v3/include/c_compatibility/math.h
! 3e4cc62d043342a83d8c5f253080a653  libstdc++-v3/include/c_compatibility/setjmp.h
! cd7aa7218be5b4b14ad097d61276068c  libstdc++-v3/include/c_compatibility/signal.h
! 0a0d08afedb22c5d313b2b390d725bd4  libstdc++-v3/include/c_compatibility/stdarg.h
! ab7fa3277eae57cee78be03296cf2cea  libstdc++-v3/include/c_compatibility/stdbool.h
! 089827632c091f9f109bb32e8fc7960c  libstdc++-v3/include/c_compatibility/stddef.h
! d7a77dd7eb85907c3fc64916220e54cf  libstdc++-v3/include/c_compatibility/stdint.h
! e014ab2e12b2857f2cec249c5628d969  libstdc++-v3/include/c_compatibility/stdio.h
! 061b75b1b8da0e91ac65523d0e1981c3  libstdc++-v3/include/c_compatibility/stdlib.h
! ab94ffc9bc7c1c0ebf5c814b5cdd9634  libstdc++-v3/include/c_compatibility/string.h
! 36f3e016b6a6cf406ce9242698077c0b  libstdc++-v3/include/c_compatibility/tgmath.h
! f1614d095925aa071491074aaf3512e7  libstdc++-v3/include/c_compatibility/time.h
! e3559e1e9b50bbcf5a52bc2c61d83da9  libstdc++-v3/include/c_compatibility/uchar.h
! d59a050cfb9421c7dbda539a57ef441c  libstdc++-v3/include/c_compatibility/wchar.h
! 55b490951e674c872c72e77da4e0ef1c  libstdc++-v3/include/c_compatibility/wctype.h
! 68672d75b670a530d92c2d5114af04f5  libstdc++-v3/include/c_global/cassert
! c5550b2a99f96bb40315e2860a39a9fb  libstdc++-v3/include/c_global/ccomplex
! fa24ac32b04b980cbd6ab2ba8733c7ed  libstdc++-v3/include/c_global/cctype
! ee52bb4af9b6336d1b809c2f4af0789b  libstdc++-v3/include/c_global/cerrno
! 98eaf14a9e685d8ffdcaf95f5341c48d  libstdc++-v3/include/c_global/cfenv
! 93024646459331cf7668d265a54864b9  libstdc++-v3/include/c_global/cfloat
! fbbbae39424cf08671e5707d63efc83a  libstdc++-v3/include/c_global/cinttypes
! 95e893b7a6b15f1d53523906900d04a2  libstdc++-v3/include/c_global/ciso646
! 0c3f8a998b720c2fde0a8c3e206382cf  libstdc++-v3/include/c_global/climits
! e27e05a2bc48c582ccca910f951f0e80  libstdc++-v3/include/c_global/clocale
! 83d6d171b135dd1ee02994061a176d33  libstdc++-v3/include/c_global/cmath
! eff4dcff6c7bab5c1c1ddd0198037bf3  libstdc++-v3/include/c_global/csetjmp
! f270c894f29619fc64b7bfcee1cdde87  libstdc++-v3/include/c_global/csignal
! f609f9956342754a688b405e9129c7ab  libstdc++-v3/include/c_global/cstdalign
! 6ed2b2d912b7224c29f22f773a7d512f  libstdc++-v3/include/c_global/cstdarg
! 97be7ca9ac03bbc43af611b152a95f05  libstdc++-v3/include/c_global/cstdbool
! 717eb0da33b0c578d520954902c0922c  libstdc++-v3/include/c_global/cstddef
! 2a8dd144c2a543524b93da73b68329ee  libstdc++-v3/include/c_global/cstdint
! ce8506f689e00bf5ba045858c1f7c387  libstdc++-v3/include/c_global/cstdio
! 9f108090c3611d9af787714e608922bd  libstdc++-v3/include/c_global/cstdlib
! 26985c8f13f0c33d0121e195537517db  libstdc++-v3/include/c_global/cstring
! 8dd009cfc924f6cbed0320a21ec2d16f  libstdc++-v3/include/c_global/ctgmath
! 2dbdb1d3e561241c2d713a337104abe2  libstdc++-v3/include/c_global/ctime
! b72e0c475e2e6d16a7d78d4d75e7e12a  libstdc++-v3/include/c_global/cuchar
! 061b17b8d3fa991e87c90fdc5fd5d7ac  libstdc++-v3/include/c_global/cwchar
! 36ae0a231f706bc4d96e002c381caa8f  libstdc++-v3/include/c_global/cwctype
! 2367490d062af071aa07cb39d63ba41b  libstdc++-v3/include/c_std/cassert
! eeaba220c4fb28f3c75e59ccb6d0f7cb  libstdc++-v3/include/c_std/cctype
! 85ffc9fa72f5fdf29a41760274340cdd  libstdc++-v3/include/c_std/cerrno
! dbcb06211750079ae33feff65b853cd3  libstdc++-v3/include/c_std/cfloat
! e927659515799112e136e6dea2743553  libstdc++-v3/include/c_std/ciso646
! 69b0de34f1ae3e4e2771af611d6ab850  libstdc++-v3/include/c_std/climits
! 6f536101de922178608250d7d745db1d  libstdc++-v3/include/c_std/clocale
! 4add0f8ebda0b3c7a4c7cdb7c2d37049  libstdc++-v3/include/c_std/cmath
! 8fbebbc089085af1cdf4bd3b9f04a0fc  libstdc++-v3/include/c_std/csetjmp
! 0eec7228809945f251311187b8ecd9fe  libstdc++-v3/include/c_std/csignal
! baaa46eb10123cb68f4c2d5f62b453e2  libstdc++-v3/include/c_std/cstdarg
! 7823b85c6ba468e7709236a32cca1776  libstdc++-v3/include/c_std/cstddef
! 1354b7d3727d6fddcdb8b25481b776b3  libstdc++-v3/include/c_std/cstdio
! 96bddefa46099798b753a24fb7087e5b  libstdc++-v3/include/c_std/cstdlib
! b377e0974ed01ba8333ce972f16bbbba  libstdc++-v3/include/c_std/cstring
! f5331f53d14405f8275187cf9c40097e  libstdc++-v3/include/c_std/ctime
! 82e5332fa707216bf2f8b510fa299f4c  libstdc++-v3/include/c_std/cuchar
! aecbde31b8ee426725ad3e0818555278  libstdc++-v3/include/c_std/cwchar
! d544a9abbec75e9f5f6802fb4e12c3f2  libstdc++-v3/include/c_std/cwctype
! c2d8f08382090b2acf1d5ee0e1bc6212  libstdc++-v3/include/debug/array
! f2ec8265227c3f718d4e9e7fd41327ad  libstdc++-v3/include/debug/assertions.h
! 10a27a7c2de7734e8f2387bf144c50f3  libstdc++-v3/include/debug/bitset
! 43047ef837b521a5307e9c460d9892db  libstdc++-v3/include/debug/debug.h
! 798a3eb986344b229b501a2415332475  libstdc++-v3/include/debug/deque
! 2bb5a0549af6d830656bc3270159f425  libstdc++-v3/include/debug/formatter.h
! e0dee298d79c40a59d31bc53bf34e2ce  libstdc++-v3/include/debug/forward_list
! 759bb2aaa53d217a8fc3aa2d9cbceadd  libstdc++-v3/include/debug/functions.h
! a306eb7b2399c6ae6a6596308291f882  libstdc++-v3/include/debug/helper_functions.h
! 38828e20144201cf5de5c042eb6e935f  libstdc++-v3/include/debug/list
! 95cd8c81da811c7cedc4b9c21444a057  libstdc++-v3/include/debug/macros.h
! b37ffacdca77ab4fe983f06b50be3a14  libstdc++-v3/include/debug/map
! ffd3155a66178bff3d48227c39b5315b  libstdc++-v3/include/debug/map.h
! c71f6cb356e14fba892670d801c1269d  libstdc++-v3/include/debug/multimap.h
! 4ac2b8a05d2c40440ae9a20dd12083b5  libstdc++-v3/include/debug/multiset.h
! 355308110e1480a90f31a010df8e18e2  libstdc++-v3/include/debug/safe_base.h
! 255f32cb67ecf0109bef67c254ceb9b1  libstdc++-v3/include/debug/safe_container.h
! 234ed067cf6b47e708c1d53677e960b6  libstdc++-v3/include/debug/safe_iterator.h
! 44323900579d8fbefc8ecf18e74b1f7f  libstdc++-v3/include/debug/safe_iterator.tcc
! 72336641f7aa811689de8532ee2b1be7  libstdc++-v3/include/debug/safe_local_iterator.h
! a0566c7a3c404abd750a5ee0eae97003  libstdc++-v3/include/debug/safe_local_iterator.tcc
! 7d6880e0e45e4f6d7228467d03a72cef  libstdc++-v3/include/debug/safe_sequence.h
! 34a9a2f80f7f0340a4854083d32f5375  libstdc++-v3/include/debug/safe_sequence.tcc
! 2c268ef5e266e9a045c8f21ef7d97f59  libstdc++-v3/include/debug/safe_unordered_base.h
! 82e66dcf309f41bf427120edc7be2492  libstdc++-v3/include/debug/safe_unordered_container.h
! 2f8ec31b3c2fe06474edb51c47058e5e  libstdc++-v3/include/debug/safe_unordered_container.tcc
! 3b537c027d484485acdb5828a9b4b8c8  libstdc++-v3/include/debug/set
! 860bfd488c72f27812823dcb7d0cc31a  libstdc++-v3/include/debug/set.h
! 7d9677b5a894607641446f036023d751  libstdc++-v3/include/debug/stl_iterator.h
! 1362fb4e80bf412791441fe403b27daf  libstdc++-v3/include/debug/string
! 853bb89ae9077497a1a19c1d91bcab47  libstdc++-v3/include/debug/unordered_map
! ba36c45972020046e49921dfbecb5fcf  libstdc++-v3/include/debug/unordered_set
! 3458e047194652a475262b5c2457866b  libstdc++-v3/include/debug/vector
! a0c64ece84833a489daf0599b8c12bde  libstdc++-v3/include/decimal/decimal
! 5fee6bc050dadf0c18b268666cda2299  libstdc++-v3/include/decimal/decimal.h
! 55f38e5295d9487f28539e1ded20355f  libstdc++-v3/include/experimental/algorithm
! 07187a9bcc5437eafd7dcf828415ff00  libstdc++-v3/include/experimental/any
! a68ff040c2a115e3a70ed639bdaea883  libstdc++-v3/include/experimental/array
! f0008dd760a8e4c1a7c679a90e39ae6d  libstdc++-v3/include/experimental/bits/erase_if.h
! e490c2aee0f90a78bec2ef2aecb879e8  libstdc++-v3/include/experimental/bits/fs_dir.h
! 7642f1f8c8f75a4735190cddb44dfd35  libstdc++-v3/include/experimental/bits/fs_fwd.h
! be0ce778892c4b03eb34d95a395c9372  libstdc++-v3/include/experimental/bits/fs_ops.h
! 3b6b9c9585a7a24e0407f9df642dc46c  libstdc++-v3/include/experimental/bits/fs_path.h
! 3acad18578c5c05888371f2212ce9a5e  libstdc++-v3/include/experimental/bits/lfts_config.h
! ba5e3a8eb76e4454d8ebf720b35b3bd6  libstdc++-v3/include/experimental/bits/shared_ptr.h
! 587a0f1d40cccc79022b61f76124625f  libstdc++-v3/include/experimental/bits/string_view.tcc
! ab6c32e30f8e4ee6b8db62d84ac707c4  libstdc++-v3/include/experimental/chrono
! 4cd2c47b701c6830066cfd8eadf973d3  libstdc++-v3/include/experimental/deque
! d1e08b9e6e142475882f6a2c3cc99fab  libstdc++-v3/include/experimental/filesystem
! 4493ed527ebc12bce01d50bff39a7f25  libstdc++-v3/include/experimental/forward_list
! e5b7136a5509fb17191a60d760a7f512  libstdc++-v3/include/experimental/functional
! 25167708c8cb98bd4009b76f48266754  libstdc++-v3/include/experimental/iterator
! bea6cef78c5b5524f9e5a3e38771415a  libstdc++-v3/include/experimental/list
! 91439382d185d65e940eddc24e1c8bd1  libstdc++-v3/include/experimental/map
! 0c453cc9985c044ea33d68d7364ec283  libstdc++-v3/include/experimental/memory
! 11219fea11474c3bd23885064814a337  libstdc++-v3/include/experimental/memory_resource
! 0f8d0501e8c127673519583a68ccba43  libstdc++-v3/include/experimental/numeric
! b32e1a4141e71039149d1d9c767a62d1  libstdc++-v3/include/experimental/optional
! b272d4e7b4035a0fbb3051bec82df593  libstdc++-v3/include/experimental/propagate_const
! e302f55517a41e1a24f6e0f2aa0430fd  libstdc++-v3/include/experimental/random
! 7db36f105d0da4bc87d9c28c6ba50eb3  libstdc++-v3/include/experimental/ratio
! 18ac31152a6719f4312ba8f1a6c966a5  libstdc++-v3/include/experimental/regex
! b9f0463229149fa9a8def38a1113a098  libstdc++-v3/include/experimental/set
! 7eb2cd439e7414825858d8ea6ebe5c9e  libstdc++-v3/include/experimental/source_location
! 6568909ef2ab083b6c817574e94d3b8d  libstdc++-v3/include/experimental/string
! e0e1da7f05c010e92123f5fb8ab63944  libstdc++-v3/include/experimental/string_view
! 092311155b5d80283998d0f2a4b1098f  libstdc++-v3/include/experimental/system_error
! a84eb611b921245ab7898c368dbf1347  libstdc++-v3/include/experimental/tuple
! 1929d9ca8ef74251254900b831b0cc3f  libstdc++-v3/include/experimental/type_traits
! 2908b1fd3aaa78d6d5aa6aadbe87209a  libstdc++-v3/include/experimental/unordered_map
! e4ae7ff0243ed2f451d7400be2affd15  libstdc++-v3/include/experimental/unordered_set
! 6a5eca317f55b6e477f8f5b0db337890  libstdc++-v3/include/experimental/utility
! 179ac4c43306baa2dbca12f4cf6a5971  libstdc++-v3/include/experimental/vector
! 258af7a792e427ce23d5c08616c3d0ec  libstdc++-v3/include/ext/algorithm
! 83dc44a1b8d1e6ed90437c82cf690fb2  libstdc++-v3/include/ext/aligned_buffer.h
! 23892e9f301f0560fa5a65524d6ccce8  libstdc++-v3/include/ext/alloc_traits.h
! 92a62674a6ce737e2081cc464f700592  libstdc++-v3/include/ext/array_allocator.h
! 79b31c9683ec6da24dc7d0bca07789e1  libstdc++-v3/include/ext/atomicity.h
! 9b6513b0b5de593e32a49b956350deb9  libstdc++-v3/include/ext/bitmap_allocator.h
! f56a2b031bc78f91afd459771d213464  libstdc++-v3/include/ext/cast.h
! 6569105d9762dc7ef462065438d28f4d  libstdc++-v3/include/ext/cmath
! 9091e224ed1ddaeca6400e73d0126048  libstdc++-v3/include/ext/codecvt_specializations.h
! 3be0bb6eab01f24fa674ca31ff271b52  libstdc++-v3/include/ext/concurrence.h
! 7792f9afc3d5f9833beab9a50c3ba9c1  libstdc++-v3/include/ext/debug_allocator.h
! 2aa6a300b6c71c5090728dec1eaad6fa  libstdc++-v3/include/ext/enc_filebuf.h
! a502c1b2a137706a91fb1ed914676b0b  libstdc++-v3/include/ext/extptr_allocator.h
! 12bbce2e56fe1e8c7bb4bd43cfb77953  libstdc++-v3/include/ext/functional
! 70ac7512b39da1bc8a5af09a16eed094  libstdc++-v3/include/ext/iterator
! c94fbcbbdeb62e440e5081bf21ab24a8  libstdc++-v3/include/ext/malloc_allocator.h
! ad7e248305a7e7dac41f76f3f468f385  libstdc++-v3/include/ext/memory
! 0744cac892b1bef4e0e06bb59742eca6  libstdc++-v3/include/ext/mt_allocator.h
! 42b88425563f6f192b99ef43d6ba53cd  libstdc++-v3/include/ext/new_allocator.h
! ed411972a70b076ce9b16fbda6131605  libstdc++-v3/include/ext/numeric
! cd58b3172459af24048172ef8090f164  libstdc++-v3/include/ext/numeric_traits.h
! 4b1204987da894df83a9bf363fe41359  libstdc++-v3/include/ext/pb_ds/assoc_container.hpp
! 9c08363bdad221c73794224600f5085f  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp
! a8e45fade5661c8298ed17158d7a754d  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp
! e33adecc09d8c73bbed74e6285c2700b  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp
! ce33351204033e092606c39ed5ddb7f3  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp
! a63722eb0fb54f750c59cfa9e64791e4  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp
! 1879541d774275c9686973f3941b52ed  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp
! a7c339d1b3b90e21b55356d807b85883  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp
! 6ba574e8ee3068c2540546d3f7eea3f3  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp
! 0e257a6e753d40d97c48a146a000a0e9  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp
! 6be14cf6a24a393c73d5faf75e518f7e  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp
! 8c45b51ca72f37648d9d16345afdc8a6  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp
! 36ca87d93be679f87101cb068f01920b  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp
! fd1fd675270250c32b151cff29d019b4  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp
! 7d290d3bb975eac20d5203581d845029  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp
! 445d36a46c00dd390caeb369c7d4a475  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/traits.hpp
! a40e7b40b3301cd1fdd84b586d23056e  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp
! c953ad4b0c16b64ae101cb5e0dd53735  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/const_iterator.hpp
! 1f2946f363669308706aae770fd8d40b  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp
! 7a472bb696652e696b3c6e258d44d0e2  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp
! 01ffe65260574bfeb367e02b0b5ca96c  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp
! 5ac48b5a3870f33c42ae6ff9f1d3f11f  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/entry_pred.hpp
! e04646dd81a53ba04e6f1c4a1114ce8b  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp
! 0258be725bdcf0883c4a2ff271ae1607  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp
! 2d11f992fa18aa3a3e5cbeb5791f2be3  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp
! 9dde4c26db18aac86c4ccbf09f5df925  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp
! 26676266aa8e22a7ebb4e72ed462dfc2  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp
! 011e8a53795e82dee4e99ef896a72a6f  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/point_const_iterator.hpp
! ed7f4a90df1aea91bec48473d8623038  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp
! 5b4dfe7436c1a95019a2369203190388  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/resize_policy.hpp
! ee1c4b15c2a6cfc63b8043c065f37909  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp
! bbce5d5700d257248f627414ba062748  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp
! d3a31b5eecbcb0f4a8c984413c639da7  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp
! 038fefe1088d919fc2f7a605d204dff5  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp
! 4390e0ffa3b35f1359e7c83a1495f4e8  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp
! acf0981501509ff70fdeef416365df59  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp
! dd243689585deed85fb42b0d1307b93e  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp
! cc398148a1691ca344392c3c87048b3e  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp
! b75687338fe37a176ea2e5a7f0b72d47  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp
! 24f494c980bfb0e88b96cf34fe625264  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp
! 6d1b9c4db5633f9cacd6c3ee3eb7cf08  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp
! 68d8453e672a408825f6bec023247f9f  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp
! f2ce5dac2235b0087da9903c7aa40b64  libstdc++-v3/include/ext/pb_ds/detail/branch_policy/branch_policy.hpp
! a9bb9d82bc91b77d0be8158d4f1cf915  libstdc++-v3/include/ext/pb_ds/detail/branch_policy/null_node_metadata.hpp
! 1a922aa41effd06014db0a2aecacb3dd  libstdc++-v3/include/ext/pb_ds/detail/branch_policy/traits.hpp
! 227858a0cb3699d316df9c5ae9a66c2d  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp
! 5aef61fc04a33f20813dc01ee76a3145  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp
! 707a6f13f50380e201489782e8b1ab6c  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp
! 6814990c73e726804f69b2a1f53f0dbd  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp
! f1a20567b56edf18e43ed34862cd670e  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp
! 53399503d9c6a55db1bd88525c0a301f  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp
! aba20801f6807e361b22a9789f3bf59d  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp
! 966c73581907600b67e4c1a82bbfba9f  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp
! d1e573ea48675594a5ec6a6cac03eaba  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp
! a8890894aacfcf3a93e5f4c7463d5c73  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp
! 26c0017650fe4ce0d20b5e6166a892bb  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp
! 6903f42c113c0e13608f890d67f9b913  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp
! 0b145dd85e29bbbc4fcf1e51dc8f1aa6  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp
! 53ddf0203c893e07c15ec91ae0a03940  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp
! 388d5ac75f0c05b55a7cae953ae67f00  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp
! 899bcf0ddd9a9d6713bb44cc0eca66e9  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp
! 8c565ce15f0ab10f70ae48e1df4be3d6  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp
! 6431718aa6bc436b2cdd1c272a78c383  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp
! f68c097e2e5e3f3a90c54c437204efb9  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp
! 4e277200f3c50e3781eb5d98e0aa5139  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp
! 1346ce6ef6eac3561f58c7e7f05ce14b  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp
! 180d60cd6fc5fb870809c23238267c5c  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp
! d5ba97f1d8ef023c006703231857c9e3  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp
! 2daaf33c05a785ec606257fc485f7e9b  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp
! 15f08d1e8cf58d1fe45972e4102e1953  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp
! 79ec77d1c8ecbb0c42c020d06563d0ac  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp
! 2e8a6e2bcfd493fedcb540d969129d5c  libstdc++-v3/include/ext/pb_ds/detail/cond_dealtor.hpp
! 695f60199969eb7e2971a5d21ca76251  libstdc++-v3/include/ext/pb_ds/detail/container_base_dispatch.hpp
! 90367c6669750cf1cadb7ea1df91ab20  libstdc++-v3/include/ext/pb_ds/detail/debug_map_base.hpp
! e088fffb609288683dad640173d6f434  libstdc++-v3/include/ext/pb_ds/detail/eq_fn/eq_by_less.hpp
! 7f3536771b7dacacc6c7754cee3ef227  libstdc++-v3/include/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp
! ab08da3e49a2b6c99a468a965ffefae6  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp
! 51c71637865291faff43c433866bb064  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp
! a2b24ebddc407e5f31372a899a8a9e5c  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp
! 2fdf6210559f0192b1d49d5424566ff0  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp
! e4ad8d9815da1f3a78731102f95b65f5  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp
! 38ca028371081f0a627a5591a449d7d3  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp
! 5217c3ff1d9c1ab08774d2ca3d08f3d1  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp
! c375a61156ec27e7ec5d52fdcd997dde  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp
! b5ef296cb89d8d46a24762e7f4919638  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp
! 974868c631595763a42ae4f2cf76197f  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp
! 85504fff2c1164a6aa726f19aeca36d3  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp
! 9f88a7086a2e2412eb0ee5b971176973  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp
! d2d40acd1b5c7a75c3c1f1a18a3d8e20  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp
! ebf3b79ee9aa4ce5e6ce18e97b6c0c74  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp
! 7a26c6f0954c529e36bf52474742e3f2  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp
! 97c839ca073c7c93a533c56a900237f9  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp
! 8a2cfe579b1bfc5c6be50d867ec78329  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp
! a29184f52a726391dce88077f57a8d85  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp
! 8312b0ae6b43779ff87c74fd79cf2cb6  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp
! b0dc1593d0dfc7b4615f781f216f6643  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp
! f01f4292148467187fd9c2f55c59c51c  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp
! 6c335a8787e5c5f88f507bba19f640f0  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp
! d811dc45551a85405faa1bdeebcad3eb  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp
! 6cf122afdf5cc8a9a9bc7837cbc61300  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp
! fc39fa76bc2ae1978ee4b864e12a2e33  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp
! c9bc2c386491b162c75832a7892d1bf6  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp
! c1e1c58bec03f6e17328ae18c315e1d7  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp
! 0b3e4050959416dea5f5da440942ccc9  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp
! 75d2f430720c533a9f7494b8deb8283e  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp
! 3fb02520daae48f783622c78d750d68c  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp
! 0325a497edf3f99a0fb63942602e3273  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp
! ec98abaf7d3f56ef012be861664470d7  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp
! daad6ceb5d320cd85fa2795a138d4dfc  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp
! 0051078ae4e6409b7dea17840f7db24f  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp
! 3c1d5bfd4f302338083d38a66b541766  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp
! 5c081d4d2001081222c9470cff2378d4  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp
! 8f8f9a0822a60a692e1773ba790ddd7e  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp
! 657e9e3e2278b8d816b9d61c79e6e0c6  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp
! 9fc279220046bef77da8f6da2e0e7252  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp
! e9b21a85176f4836695226e66936bb22  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp
! e88e322b61c648a8615dfdb87db3a97a  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp
! 69a542f3e21bf5a68dfdc974087b4517  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp
! 14df0b0be9b61afdbd81d6c2562138ac  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp
! 45362cadffffb7967d801a04dbcbc980  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp
! ae485b4456e8d95298279eb829cdf5c8  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp
! eddd8426538c144f1434150f594dd744  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/point_const_iterator.hpp
! 80deeeb75f1e76422811e45f4da26f18  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp
! e9ad9a3be1bdc069dc78cc4aaeb9f23d  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp
! 23e698a85623d87c9b4d88e49a321101  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp
! 9105e53016e104c276e29fb856d09090  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp
! 67181c3691fb656d6b782eca45096541  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp
! be6e3042712e87ba64b19977b7f43762  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp
! 2ef9760a0910ff4d0b7e531cbc586010  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp
! dcda475f342023f66390eb86fbb50c3b  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp
! a02cacd57a9c7d8991dc11ac41423c21  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp
! 88bcc6be076d7136fceb65bf79c8f057  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp
! 3056f67f3d451e76e548b7449ca74a01  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp
! b0526ccc2482fd39d3c441e5e5ecba40  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp
! 4d3c11a8715cec9205b31b4743f77df5  libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/lu_counter_metadata.hpp
! b81d72f18972daf75784d9ac4fc52d75  libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp
! c35626cab5cb59d55132e4ace23eb147  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp
! 99dbec25cea5a9766919dc638f815b7e  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp
! e387b57a5f9a90c73f1d4b7f4f448266  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp
! c3b1e35c3a170e36a15a830176520897  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp
! 78c2677dc2c2c63a6432914d43c65133  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp
! 65fc25198390f4c938a7cbed83d42a26  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp
! 376b4f5b6dabbe0f37f0cb93f701d42e  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp
! 76a5993a060dce1c4e7edc5ce231540d  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp
! 1c3286d1892c8bdd684925e81d7e53a7  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp
! 7eb553f229a29e7bd620d79b3863f4f4  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp
! 780bd2e9db1e5c645c639c88768e6c0e  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/traits.hpp
! 48ff166ee6d7ecbef6039045e69eb671  libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp
! d1a73ed86ea66339198063e4b9c20a1a  libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp
! d7a3599d850bef64f203e7ad7f9fb189  libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp
! 659bfa9f64d7c6405b6a48487829654c  libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp
! 97df668f387ac5ffe27ca6fac3dc0f97  libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp
! 8bb2e1c61c993e938d7d9dc1697844eb  libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp
! 4f7c9deefc086b47eae351c1d180c2e0  libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp
! 6ea6e4fb4527895c8b6c111dda2739cb  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp
! 492aa2ca42e58307d8ca33f00437a5a8  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp
! 559866f9d4ad671facb44d325f8b8f3c  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp
! 0d6466f323b421efa3f4a2f796af8e8e  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp
! f1a44820d54143f17aab16f00f8ef7ac  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp
! b9d4d10bc3a0f9aab74d4eca00f1a72e  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp
! e5a6c739c4e139dc7c2c41a4bfbf4b19  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp
! 9d881f84ad623742fd5fe451ca4db49f  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp
! 607c553b3e61b53ec7ddd86dab817a3e  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/pat_trie_base.hpp
! 6015356bdae53f7ac61c944aa839d1c2  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp
! 1540d0ec8aad30568fb1c643e5fb1144  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp
! 2f502f0d3ce9ab72a96a30f9bad95552  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp
! 762a1c803164966c0908fe5403cf680b  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp
! 62cc9dcb83a1e2fef30f46fc92d21b1c  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/synth_access_traits.hpp
! a85a601c03dfb30be2b3e5ffeb176e97  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp
! 12d1dcb7ba102c6ea0309aa9fa9cc6fc  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/traits.hpp
! 8cbe018a51c8c7d8ca2660340b0fb1ad  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp
! 2d075642afae6ebf2b816773f0908263  libstdc++-v3/include/ext/pb_ds/detail/priority_queue_base_dispatch.hpp
! 76ab10228057dce7f4f483b25f7edbdc  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp
! 08d53e21a6cf0c83d55aee424c8ebf15  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp
! 71d00b50156d364c8b7f037ec6e26d45  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp
! cea32c52e48172a765c1bbffa03011e7  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp
! c1f3a9de8093a99ce5a18c97c00be610  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp
! 290d54f4468b0cb6f02701f5721fd1ff  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp
! 049696ba3f91e95ac1e3aae375987d9d  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/node.hpp
! 8dfa55bcc7bd06ee32c253037a2d6faa  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp
! e9f9e78e97580c6c261f67571f3a4d3c  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp
! 04e7681e4b70069b434fe5da454c4834  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/traits.hpp
! 9b50f7174b653b7d84b36ce4a22e546c  libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp
! c276441d08a3647f0b794cce0327b63c  libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp
! 5ec9fec718d6ccb069100c70e7163f82  libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp
! 158932f4989740de05527d74e54499f9  libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp
! 440a08125763500cd6de726d42773d54  libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp
! b9c8e886624bdb1f6e296cfcc6f6f133  libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp
! 003ee3da69be53b3534fb5a6b58e5c71  libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp
! 27219944ed9fbdcf7e37a334d9677fdd  libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp
! 77af4859183d16781015e04587f310db  libstdc++-v3/include/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp
! d311308a94740a2096794d55dbe0a67f  libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp
! 490ba833e6bca85b992c62a54661422f  libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp
! f2c9c291d83f536ab293606d37bdafd1  libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp
! 91b728e7f1491fcb563053f605c9de51  libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp
! e983697df317343d8660102b72028414  libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp
! 140b88b1770c3c418c1e07ab31918d2f  libstdc++-v3/include/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp
! 93932b6806b5b3db759700095acf1ec3  libstdc++-v3/include/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp
! e9ba46c2063c41bcbaccb98ecd218956  libstdc++-v3/include/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp
! eadc2a9642cb879f079e051713b47627  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp
! 9bbf4d9a3515c9faa53fb71fcb7d33e5  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp
! c7021364ce2d14b0344b882bf4971c2e  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp
! 61701741e106d57a7189a23ed04cb25d  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp
! 183b20a87ab3d82d79cd2c076a9057a5  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp
! dd92f39d0efd5bfb54638d0e45bd975d  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp
! c10fff4a449e1d8c8bc369035b650577  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/node.hpp
! 8ca03010ca85414b391c1a7620b73a35  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp
! 5c954c763148ca5d1f6bc64483766720  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp
! a518bdccb07b86a0a1fff2fad9d7a80d  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp
! 9a4bf10f52126f2cbf61ecc52a3bee92  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/traits.hpp
! 0a571b83093b77db9cbc12fff11eb5a0  libstdc++-v3/include/ext/pb_ds/detail/standard_policies.hpp
! 9cd80b49cfa70aee20c147f667bdd655  libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp
! c1b7f901f1c7a80474545cd5266e3c77  libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp
! cc092dc0f3a7629f19588c3ee4c83ced  libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp
! 02c414356098cd632aee07a8c85c319a  libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp
! 2050643a9865ce376beb3aa4ac459160  libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp
! 43eda5eff665fbc763b06dffe69eedc8  libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp
! 4b02cf8807e03d534c07c97d85a1944c  libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp
! 2ec6748140822c6cd8eba7ed50203d79  libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp
! 237d66c2350951c7f39239959709caa4  libstdc++-v3/include/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp
! 130eaea5a77f804296da0d610afe571f  libstdc++-v3/include/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp
! 623682a7656e5f6957dd3a3b5b0164c4  libstdc++-v3/include/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp
! b7a8d46f1b635132a8fb9d2092557eac  libstdc++-v3/include/ext/pb_ds/detail/tree_trace_base.hpp
! 69ac3028688a13d7fc508fdd93101b51  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp
! 78bc91c83cf3b32291d3f7d449fc0134  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp
! f1b70632b364a2f5052cfdfcfe6e4b88  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp
! bc4bf7fd19ce1cc34841b78720910f53  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/sample_trie_access_traits.hpp
! f15607f54f1e2d07c08c4485edca2832  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp
! 51ec86ff7c88583c702bf343ea470c37  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp
! 742b8946a8fff16abf3eca7dce396a44  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/trie_string_access_traits_imp.hpp
! b4f06564ec096a9f6ce87ffe44f5e8a4  libstdc++-v3/include/ext/pb_ds/detail/type_utils.hpp
! 3c2c1608e5989b948ee0199a4d48ef8d  libstdc++-v3/include/ext/pb_ds/detail/types_traits.hpp
! 89af85be6a92b5ff9055b9917861ea33  libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp
! b1e9142a9de32789c17c645e783cadbe  libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/iterator.hpp
! 2504ece5eccff9ca30daddbee784885c  libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/point_const_iterator.hpp
! 8314edb8a7f21ccf1d283078150ec293  libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp
! 5e657e8d4e1d1f8224a8fe255f586a53  libstdc++-v3/include/ext/pb_ds/exception.hpp
! 6f417df443bdcb9e4a5eceb4c4df00c6  libstdc++-v3/include/ext/pb_ds/hash_policy.hpp
! 7e35216e0bcb16e66009e1b0179a9f8f  libstdc++-v3/include/ext/pb_ds/list_update_policy.hpp
! b90fbbe6e940cea4a731cd275fb70569  libstdc++-v3/include/ext/pb_ds/priority_queue.hpp
! 36be2fa6bd1f8c25f695d0fb796a7364  libstdc++-v3/include/ext/pb_ds/tag_and_trait.hpp
! dfac97b5e147bf50c08bed8978d461ac  libstdc++-v3/include/ext/pb_ds/tree_policy.hpp
! 1ecb49dcd7c25be4e9be4fd5a9c2120f  libstdc++-v3/include/ext/pb_ds/trie_policy.hpp
! ee9075343deffe870db9bd287f865a78  libstdc++-v3/include/ext/pod_char_traits.h
! 6e322a7669dc88b1856b3f4a498bdce6  libstdc++-v3/include/ext/pointer.h
! 4b0c229b17c5024a79d34a227f92eb17  libstdc++-v3/include/ext/pool_allocator.h
! 9b9288fead35c66104b43f737baeb18f  libstdc++-v3/include/ext/random
! fd71d3354afc6498bebd608f9dc0743f  libstdc++-v3/include/ext/random.tcc
! 4697d71168eb8d4a81ec449332c58ffa  libstdc++-v3/include/ext/rb_tree
! 21aa90edc0787dbe5412740fb8c31077  libstdc++-v3/include/ext/rc_string_base.h
! 88631e3c28ad752d049490d9fa7f682f  libstdc++-v3/include/ext/rope
! 170c95d83e5797421381315f5fa69031  libstdc++-v3/include/ext/ropeimpl.h
! fa7797550aeb53217a668257303dd9d9  libstdc++-v3/include/ext/slist
! e01acef3e40185b24bf8a81fd8fe51a0  libstdc++-v3/include/ext/sso_string_base.h
! 698da43f14ca49e28018fc185ef66ba2  libstdc++-v3/include/ext/stdio_filebuf.h
! ed863c85df63b77a31085453dfc7c73d  libstdc++-v3/include/ext/stdio_sync_filebuf.h
! 1bff309cef1527b9d2456b9217ae46fc  libstdc++-v3/include/ext/string_conversions.h
! 1d80037c91938ca8940948bbb22ce353  libstdc++-v3/include/ext/throw_allocator.h
! 462459e1bb20f4ee3fc5096a70605a90  libstdc++-v3/include/ext/type_traits.h
! 98417824fe4f50fde06b21616516a3ae  libstdc++-v3/include/ext/typelist.h
! 785d08daf0f05a2160e7f8f8daf28de1  libstdc++-v3/include/ext/vstring.h
! f796b3e0f509f11e52194ca8e842a38d  libstdc++-v3/include/ext/vstring.tcc
! aec7d1e14c0b5ba8a3a4e8264b336116  libstdc++-v3/include/ext/vstring_fwd.h
! 675e5e99a584cde617c7e1596bcb394e  libstdc++-v3/include/ext/vstring_util.h
! ec70a63bc5bb7772b10fc06b7e9d8832  libstdc++-v3/include/parallel/algo.h
! 5f307ed89bf4546f84b2dcf71467bd41  libstdc++-v3/include/parallel/algobase.h
! ae9e148ec4d664648064d3ba62d16729  libstdc++-v3/include/parallel/algorithm
! cfa951dd1fd36830c144e14f0a660616  libstdc++-v3/include/parallel/algorithmfwd.h
! fc88137c463c14fb1479816a38ca18b8  libstdc++-v3/include/parallel/balanced_quicksort.h
! 07dd2738d97c7f44c7e62210835416af  libstdc++-v3/include/parallel/base.h
! b38fc8417cd55f78c42b955381d6b293  libstdc++-v3/include/parallel/basic_iterator.h
! 365bd937c90ffc73f3c98c651e453ec1  libstdc++-v3/include/parallel/checkers.h
! ec5cadfef73cb4bd9731ce47f7ee6391  libstdc++-v3/include/parallel/compatibility.h
! e3ad2a6344befb7376d1a5fc309ad8d6  libstdc++-v3/include/parallel/compiletime_settings.h
! 1da66c38e9819c9ef73960a23b040e73  libstdc++-v3/include/parallel/equally_split.h
! 57932fe9d7897f722dde014855a56dc6  libstdc++-v3/include/parallel/features.h
! 33a78e6468970530b737e877c292e3ee  libstdc++-v3/include/parallel/find.h
! 69e095ec33e03b26e39857b91d847474  libstdc++-v3/include/parallel/find_selectors.h
! ee53038c508347a9a5658fcc052600ae  libstdc++-v3/include/parallel/for_each.h
! 28d987a4de087ff37c15602167d16cb1  libstdc++-v3/include/parallel/for_each_selectors.h
! a387d32636c5e5cd6353226704ae9007  libstdc++-v3/include/parallel/iterator.h
! 060ff54eaaf26ceeba18a8b9df5b16d7  libstdc++-v3/include/parallel/list_partition.h
! 1826aac55aa83e254eddfaaadd48a2a9  libstdc++-v3/include/parallel/losertree.h
! ca33d745be5408a4bd253a78db0f9d93  libstdc++-v3/include/parallel/merge.h
! 1785a0cab6baad766fafe3f2237f93a7  libstdc++-v3/include/parallel/multiseq_selection.h
! 719bce5da182c15157433f4926b469a4  libstdc++-v3/include/parallel/multiway_merge.h
! 7356b6ffe1f07cb38224380775ee7fd1  libstdc++-v3/include/parallel/multiway_mergesort.h
! bf829d0e7c3d654bc2495eb1da4d8901  libstdc++-v3/include/parallel/numeric
! 558e9c41fbc037ba97577443d3b12ec7  libstdc++-v3/include/parallel/numericfwd.h
! c524efac606c089ca5fc53e218539ad3  libstdc++-v3/include/parallel/omp_loop.h
! 738500abba3b9766979e075e3bc4d763  libstdc++-v3/include/parallel/omp_loop_static.h
! ff2c5fba2c8f440cd30511fb40da3858  libstdc++-v3/include/parallel/par_loop.h
! 9c77b354485ee21b3009788dc4500506  libstdc++-v3/include/parallel/parallel.h
! 0ca7b7d79407cc7d64b177c929d77d0b  libstdc++-v3/include/parallel/partial_sum.h
! 8a5b80e9a7edc498ce89be3d6d1c5e02  libstdc++-v3/include/parallel/partition.h
! 6884999afd07ff61524e3291dd5fcacb  libstdc++-v3/include/parallel/queue.h
! 2e9a5add6a4a51bc6186bd44762e897d  libstdc++-v3/include/parallel/quicksort.h
! 015b2eff564d32e8799cfdd566292ae2  libstdc++-v3/include/parallel/random_number.h
! de5c7fb0cbd6875f9613feaa9d8e9b9b  libstdc++-v3/include/parallel/random_shuffle.h
! fd488f1fded92a548abc7b9d06fc9dce  libstdc++-v3/include/parallel/search.h
! 8b4395f3593934e557ca738ab2ed0862  libstdc++-v3/include/parallel/set_operations.h
! 0fe1a2be02e907a29b71b14021165db9  libstdc++-v3/include/parallel/settings.h
! 2f8adbbffb7c3d6a0e11a64757a3460c  libstdc++-v3/include/parallel/sort.h
! f213ec4e9ee45b2a3bff0a13c3f1d1d2  libstdc++-v3/include/parallel/tags.h
! ef54fae591a99cc628bd84ebb8232723  libstdc++-v3/include/parallel/types.h
! 573d7d1d4aa959b860399c75a6e26396  libstdc++-v3/include/parallel/unique_copy.h
! 65084ec4142cb3bfe656bd370d576b9c  libstdc++-v3/include/parallel/workstealing.h
! 0f1b5f699f401e32ea239b420990aada  libstdc++-v3/include/precompiled/expc++.h
! b57a41938f3c181611baab3939afaf00  libstdc++-v3/include/precompiled/extc++.h
! 45b3f2dcbe1761743b115fd423faa067  libstdc++-v3/include/precompiled/stdc++.h
! 3cd7c2dd5bfb4cd60651bb97ff56a07f  libstdc++-v3/include/precompiled/stdtr1c++.h
! e34596309dc4a9d961bfd91b4e982fc8  libstdc++-v3/include/profile/array
! d247c8d323f746c3238f1f2e187ab666  libstdc++-v3/include/profile/base.h
! ffc7d6d76610473675ba430bf18cde35  libstdc++-v3/include/profile/bitset
! 35fb5f3ae532355aa4cd448c9f6552e0  libstdc++-v3/include/profile/deque
! dfee3bc2bae9308308de0c10fe75dcbb  libstdc++-v3/include/profile/forward_list
! f78ba3ec449018c5a02cd4abbab05be3  libstdc++-v3/include/profile/impl/profiler.h
! ff8acdd9a9caee0a7de2eec863e48799  libstdc++-v3/include/profile/impl/profiler_algos.h
! b39d412d4cc758ef4c2edfa55c428882  libstdc++-v3/include/profile/impl/profiler_container_size.h
! 853422cc2e71283fab3e4c1edb339dd7  libstdc++-v3/include/profile/impl/profiler_hash_func.h
! c1d17490a7cee0b174e4361720ec9379  libstdc++-v3/include/profile/impl/profiler_hashtable_size.h
! 7f67f85f0aa4e88ba660cbe81f15aa2d  libstdc++-v3/include/profile/impl/profiler_list_to_slist.h
! a1c37a84e33105a4991dee31bfae3eb8  libstdc++-v3/include/profile/impl/profiler_list_to_vector.h
! a334fd0c21c42ff4628e7b9b110c8d0b  libstdc++-v3/include/profile/impl/profiler_map_to_unordered_map.h
! e159cb69a903e6b96dcb13948dfa6157  libstdc++-v3/include/profile/impl/profiler_node.h
! 9f9cd294612e045f52d239e4f3d7f58c  libstdc++-v3/include/profile/impl/profiler_state.h
! bc6d759cbdff6f2526fbc4fc91f2d0d4  libstdc++-v3/include/profile/impl/profiler_trace.h
! 2bb6026923759d70a5aff98e353c1693  libstdc++-v3/include/profile/impl/profiler_vector_size.h
! b0afb9ea04e8863c7a65a87505c7f977  libstdc++-v3/include/profile/impl/profiler_vector_to_list.h
! 7c9e1fd3d2962e9360c13f2b1271c303  libstdc++-v3/include/profile/iterator_tracker.h
! d9bf3721357f8653cb0e84c3fc885f76  libstdc++-v3/include/profile/list
! 318e46220426a29655aac96494558055  libstdc++-v3/include/profile/map
! 65d5dfe4a3f365913c9a54a6c73dc071  libstdc++-v3/include/profile/map.h
! 687c630523e656e770104fa799f98e84  libstdc++-v3/include/profile/multimap.h
! 82e2a3a7e43fb65a464553861427944e  libstdc++-v3/include/profile/multiset.h
! de78cd0dae7e5d9b5eae78d6424e4109  libstdc++-v3/include/profile/ordered_base.h
! cc7a242d06b2f5ab299c449cd67d16cf  libstdc++-v3/include/profile/set
! 009c6eb0cd48c8d8edb92db04b4874c9  libstdc++-v3/include/profile/set.h
! 54167f0750889d536ffb383d24ce79a5  libstdc++-v3/include/profile/unordered_base.h
! a4dbaed45302898059965a2536fa70f6  libstdc++-v3/include/profile/unordered_map
! da95e16cd816137a117a75edcdfa7edb  libstdc++-v3/include/profile/unordered_set
! 77784a11757398ad33c59f0b97deb272  libstdc++-v3/include/profile/vector
! 6888850646b32f4cf5d7acbcdf814e62  libstdc++-v3/include/std/algorithm
! 925a427ddfc7a02e56ea97c611bb220a  libstdc++-v3/include/std/any
! 2fd954e55939b25cd70cd8e2ba3bcb61  libstdc++-v3/include/std/array
! 3b19e6f709a310e8cb3fb34a67cb2564  libstdc++-v3/include/std/atomic
! 6b7c7fb7392b2a53b55c6c59aea6e9a1  libstdc++-v3/include/std/bitset
! cc4a69d45540fb00fc8a9c33993eb163  libstdc++-v3/include/std/chrono
! 2079367f26eb6ecbf88c729bae106bab  libstdc++-v3/include/std/codecvt
! e004f290d6fad2e43cdc9d1478eb83e9  libstdc++-v3/include/std/complex
! 96dbebb6aa26138358e8a54b47c1fa22  libstdc++-v3/include/std/condition_variable
! b0cd6fcf5dc0fded5a263b5865e4e932  libstdc++-v3/include/std/deque
! 8668416873a553aa57dcecd62a2487e7  libstdc++-v3/include/std/forward_list
! a7aee3f016d82cb2f6be6e5b3e3696c2  libstdc++-v3/include/std/fstream
! 9a02ef3f94dbc384243a013e494eaf18  libstdc++-v3/include/std/functional
! 4f7515c35db442bcbb61ff2532ed0250  libstdc++-v3/include/std/future
! 4f1e1d55ed5c7afb6862631176f4d2da  libstdc++-v3/include/std/iomanip
! 725e92945a7552b69a75a4290b375f2f  libstdc++-v3/include/std/ios
! 0ffdae1d450eee0b5dc8eaebf566e7a3  libstdc++-v3/include/std/iosfwd
! 9c6312ea749ae105dd358ba0cd304300  libstdc++-v3/include/std/iostream
! f1312104f8152c721151b4ec47ba37b5  libstdc++-v3/include/std/istream
! ee46e2b204822fb68585ca990cb55fe1  libstdc++-v3/include/std/iterator
! b7e5ae765d31340918b1a54c3b1d31fc  libstdc++-v3/include/std/limits
! 6e7eed60127763223a432c5ad7d7370f  libstdc++-v3/include/std/list
! f5721edd39e212a96236797133280047  libstdc++-v3/include/std/locale
! 338291fc61482afd0bab0071ebdb2572  libstdc++-v3/include/std/map
! f008669ae0b0683f54f6fb3135dfffde  libstdc++-v3/include/std/memory
! 492670925934aa0869810da0ba3f5a59  libstdc++-v3/include/std/mutex
! ddc3090928c84bc8608da7a8498d1384  libstdc++-v3/include/std/numeric
! 06067ab3ead834bc5749d0a9c59ba770  libstdc++-v3/include/std/optional
! 3e01bf72cb649a8b3219a4c1bf2abbc5  libstdc++-v3/include/std/ostream
! 8b030f58e9dc4ecea8b2eb241b8d36cc  libstdc++-v3/include/std/queue
! aea8e691c1eda6992a5759bda4f88948  libstdc++-v3/include/std/random
! 5158e8059a45e613e1c7e873e057be9d  libstdc++-v3/include/std/ratio
! 3cd5f646ff1fe7105ae3bc0f01322e1a  libstdc++-v3/include/std/regex
! d86a355f52c2494f645dca6f61e22629  libstdc++-v3/include/std/scoped_allocator
! 543774b3b4ddf978ef7d0b6d00eaf44d  libstdc++-v3/include/std/set
! bb1d4c468cabc239fbfd3a4110e45557  libstdc++-v3/include/std/shared_mutex
! 46681c768f8d6601db1750c87af9512e  libstdc++-v3/include/std/sstream
! 2b3616f296f6aa796e2e12a13835efcc  libstdc++-v3/include/std/stack
! d4b2e96bcd277dce93794d039b9b8899  libstdc++-v3/include/std/stdexcept
! e0a4548de9093e17fdf9856c2fdc7b79  libstdc++-v3/include/std/streambuf
! 20e8a1fc62a35b5cc7340e0e12ecba4e  libstdc++-v3/include/std/string
! bf5ded1efef787ab2440841905194bab  libstdc++-v3/include/std/string_view
! a569fc432fea0bae0eaadadd533bab4d  libstdc++-v3/include/std/system_error
! 64b99affdc53c9426f0e2950ece2c508  libstdc++-v3/include/std/thread
! c8e93fdd89a112f0c50b9ff87fb63e33  libstdc++-v3/include/std/tuple
! 78d2d49327da08807070e9cde6f0583e  libstdc++-v3/include/std/type_traits
! f6db2f6c313ce30896ebd0ef7fdcd816  libstdc++-v3/include/std/typeindex
! 5c1f0d70746c520f9a2aa5aa363b6851  libstdc++-v3/include/std/unordered_map
! 40af560d2f7d91fbc5ddfe9099e959ec  libstdc++-v3/include/std/unordered_set
! 8ce5bbe44709366d0eee3f841a0da019  libstdc++-v3/include/std/utility
! 9dc6c211c3503697170d85aec9d3ef37  libstdc++-v3/include/std/valarray
! 3464d609eb4c5efa826e1ad1920616dd  libstdc++-v3/include/std/variant
! 524416117d96559514029824ea8182fc  libstdc++-v3/include/std/vector
! 98a03c40ae073a2c2bdc2b7b42c65bc4  libstdc++-v3/include/tr1/array
! ac8f2f0647f302709bfae97d9408d6fe  libstdc++-v3/include/tr1/bessel_function.tcc
! 59a32270ad5714a678f440ed82a96d01  libstdc++-v3/include/tr1/beta_function.tcc
! 4e7de7fcc8f685cc27ee731666ba4f3d  libstdc++-v3/include/tr1/ccomplex
! 42f99103103c2043bbebfaaeb3fa1ab3  libstdc++-v3/include/tr1/cctype
! 505191ba1eee9e6fa5720e0a927d4ab9  libstdc++-v3/include/tr1/cfenv
! 00dd82e4a29dae33870feda85473e714  libstdc++-v3/include/tr1/cfloat
! 85ba667c1740598154c5c0ca6539fd11  libstdc++-v3/include/tr1/cinttypes
! f0b8160043f13a53399bcf4e53b7ae76  libstdc++-v3/include/tr1/climits
! 1a3a001591fecd177fd77b70c0e0ba22  libstdc++-v3/include/tr1/cmath
! 18f02ece09ac8991fc67f0b195da462f  libstdc++-v3/include/tr1/complex
! 25fe55df283be29c5b2e7424fc594332  libstdc++-v3/include/tr1/complex.h
! f5e34d574fdb65e3b8c44691c2bf76eb  libstdc++-v3/include/tr1/cstdarg
! df71f19a5071763c6146f64c493570de  libstdc++-v3/include/tr1/cstdbool
! 1e392f6ba6f58b0cabae9d51a0f57bd8  libstdc++-v3/include/tr1/cstdint
! da9be221eb61ba4b4348862b87acbfef  libstdc++-v3/include/tr1/cstdio
! e92aab0fbc9ca7e656d5bde8d4170bda  libstdc++-v3/include/tr1/cstdlib
! a2ee6fb973bf4cafe0f0f33b61751dbe  libstdc++-v3/include/tr1/ctgmath
! d8e494e0091ed2bead495fdb09991397  libstdc++-v3/include/tr1/ctime
! 10195bba4fde5b2946619930717b0ba0  libstdc++-v3/include/tr1/ctype.h
! 4fc9fad18df871b3954b2fff43c7c690  libstdc++-v3/include/tr1/cwchar
! b9099dfdf0a86d9a71b0ce5b4a2bd368  libstdc++-v3/include/tr1/cwctype
! d0734e50bbf893ccb83da46e2334cac6  libstdc++-v3/include/tr1/ell_integral.tcc
! 4d9e621971efaaaeda5cb5efd756485a  libstdc++-v3/include/tr1/exp_integral.tcc
! c7dc0c3bd7f9d1b4c1379bcc6bd12c32  libstdc++-v3/include/tr1/fenv.h
! 7f2e242479913f124c54902afec75f56  libstdc++-v3/include/tr1/float.h
! dbe72e4155db1933751b68c910e9ddc0  libstdc++-v3/include/tr1/functional
! 29b55e0032b84a37431998ae13b969e2  libstdc++-v3/include/tr1/functional_hash.h
! d77c65993a7a6557b4a0bbc7438d2c17  libstdc++-v3/include/tr1/gamma.tcc
! ae37121ba175177f9335833a260f73cd  libstdc++-v3/include/tr1/hashtable.h
! b5948027b10eb9235dd6d87e76667220  libstdc++-v3/include/tr1/hashtable_policy.h
! cb9b7efa5c49bc231b3705239516a700  libstdc++-v3/include/tr1/hypergeometric.tcc
! 80d9af379b1e34c01a6ac7dcc7fdb06a  libstdc++-v3/include/tr1/inttypes.h
! dbfe174d4c05132a67f39b02abe253c8  libstdc++-v3/include/tr1/legendre_function.tcc
! f0a6b204542f8ed5f7d48985834c4fa2  libstdc++-v3/include/tr1/limits.h
! 63ace58f52b59651e71826dbcab7ce91  libstdc++-v3/include/tr1/math.h
! c38e5b09a8655162452efecbfde8dda8  libstdc++-v3/include/tr1/memory
! 6f9663fa04f20a547ff4d2cdd22fb57b  libstdc++-v3/include/tr1/modified_bessel_func.tcc
! 8e5b1776af48b429440747af78e3f0cc  libstdc++-v3/include/tr1/poly_hermite.tcc
! a0c52adf919204649d3f7ae6738bfca9  libstdc++-v3/include/tr1/poly_laguerre.tcc
! 8af5e48b86a7b6efa6d71674da20305c  libstdc++-v3/include/tr1/random
! f752ffae243893ccdced7d2e3fd70157  libstdc++-v3/include/tr1/random.h
! f2fae3ea1655c871ffb096051367559a  libstdc++-v3/include/tr1/random.tcc
! 5a0875d9dea2eccb73757e6dc537c44e  libstdc++-v3/include/tr1/regex
! 4eede341741854672cd2cde6b4de22d7  libstdc++-v3/include/tr1/riemann_zeta.tcc
! afce6305ff3a2f2fda30243d19721399  libstdc++-v3/include/tr1/shared_ptr.h
! 9f9f8944423e0dd99b43e8f1eb184aba  libstdc++-v3/include/tr1/special_function_util.h
! 22eb82705e4ba9a2298fdf8b780e734a  libstdc++-v3/include/tr1/stdarg.h
! f80c739637c1034b962f23a2cb646cc8  libstdc++-v3/include/tr1/stdbool.h
! 62c54cc72376704964fd3617d591e71a  libstdc++-v3/include/tr1/stdint.h
! 57c30bd4e33e06b3fcab9bafa4cb679e  libstdc++-v3/include/tr1/stdio.h
! 1eb9e25f99d0d9e7d86874eca453383e  libstdc++-v3/include/tr1/stdlib.h
! 4029ceb823131ff0ba1cc5415f7af67f  libstdc++-v3/include/tr1/tgmath.h
! e632f4027028020761dff761235f9ff2  libstdc++-v3/include/tr1/tuple
! 9cb573eb65301413c9e0d539d52e26f5  libstdc++-v3/include/tr1/type_traits
! ec762a080406fdcb1bc13926f506f37b  libstdc++-v3/include/tr1/unordered_map
! 5531f34fb3375f67ef15d2201f1c95cd  libstdc++-v3/include/tr1/unordered_map.h
! 8d4b709336849616648b26042612e729  libstdc++-v3/include/tr1/unordered_set
! fa6388003556ccabe1bd357ef36d87dd  libstdc++-v3/include/tr1/unordered_set.h
! 119b3cbe95740ae467bd865faa489747  libstdc++-v3/include/tr1/utility
! db195298de670eaac4271d197d5c3068  libstdc++-v3/include/tr1/wchar.h
! cca93d46fb358e0bf5f122f4d0a6046a  libstdc++-v3/include/tr1/wctype.h
! aafe632c851c159390fcf8f0fb878f19  libstdc++-v3/include/tr2/bool_set
! 6e70338bbc87b68032c97d8a266907dc  libstdc++-v3/include/tr2/bool_set.tcc
! 805cd79637ea716bc294229f5b04954a  libstdc++-v3/include/tr2/dynamic_bitset
! b97ac31049b18ccb4b749148328f6f78  libstdc++-v3/include/tr2/dynamic_bitset.tcc
! de52ff045b1be2a0dab2527cce246ee8  libstdc++-v3/include/tr2/ratio
! fcf46daf9cbfb79e56df4b39b512ad2d  libstdc++-v3/include/tr2/type_traits
! 9cab2eebc32de8a4e098ece111da25b0  libstdc++-v3/libsupc++/Makefile.am
! cd9f4b8c02c86260ddcdfe8ef2de11a8  libstdc++-v3/libsupc++/Makefile.in
! 0bff5f9241a348b4e5102023300123eb  libstdc++-v3/libsupc++/array_type_info.cc
! f7910c2b2e8b7712760dd0d9a9c35279  libstdc++-v3/libsupc++/atexit_arm.cc
! 8985ce1d0236496e19acd04d27b2ae5d  libstdc++-v3/libsupc++/atexit_thread.cc
! 403cb5ccce1a7337eccd1f470e5e9336  libstdc++-v3/libsupc++/atomic_lockfree_defines.h
! 88d8b667044eff2e6ca04c7ff0d2ecd0  libstdc++-v3/libsupc++/bad_alloc.cc
! f7b8edbc1c9847c6646170876688fd49  libstdc++-v3/libsupc++/bad_array_length.cc
! cf6842fa4dcad6fe5f6ae75491a85408  libstdc++-v3/libsupc++/bad_array_new.cc
! 2f3f9d1d57869c7aa4896d0a48fcdee1  libstdc++-v3/libsupc++/bad_cast.cc
! 1e2fa9b2a26073271a74ccf5ef349dfc  libstdc++-v3/libsupc++/bad_typeid.cc
! 41dcf2edb2b119ee834ae1e65ce5277a  libstdc++-v3/libsupc++/class_type_info.cc
! ef8f8200f041873163ec35e6e49757af  libstdc++-v3/libsupc++/cxxabi.h
! 014e0058e7fc59771a9024655b0f7c2e  libstdc++-v3/libsupc++/cxxabi_forced.h
! 6c8386edc68eadd138db5128a69e11e3  libstdc++-v3/libsupc++/cxxabi_init_exception.h
! 157788849745463dfb2ae186c33de61f  libstdc++-v3/libsupc++/del_op.cc
! d29c844a49ee2b98ccd4d3a734677e9f  libstdc++-v3/libsupc++/del_opa.cc
! 75db5a46bc9e6d8fb76895a4033aa07c  libstdc++-v3/libsupc++/del_opant.cc
! 6025ade0376520831801437054bbffd1  libstdc++-v3/libsupc++/del_opnt.cc
! 0572f9ef2db262734038bdc0bd19ed5d  libstdc++-v3/libsupc++/del_ops.cc
! 9be3f9068175f67c80f3768d0dd9f1f4  libstdc++-v3/libsupc++/del_opsa.cc
! e6100c8131a3df70d700173da069ef9a  libstdc++-v3/libsupc++/del_opv.cc
! 10868ef9ad26252d5a49011608743030  libstdc++-v3/libsupc++/del_opva.cc
! 38164eef6f1eeb6d9e4ce6a1f8856b4b  libstdc++-v3/libsupc++/del_opvant.cc
! 741eda2158b8fd8d08f9c98b2a095004  libstdc++-v3/libsupc++/del_opvnt.cc
! 9d6cd81ccb736608a6df265327d301ec  libstdc++-v3/libsupc++/del_opvs.cc
! bb8bd341e4a5c8586f5b42f878fb4cd9  libstdc++-v3/libsupc++/del_opvsa.cc
! fb8c01fe8ce10c7d785e5a8fca36efb6  libstdc++-v3/libsupc++/dyncast.cc
! 89c67a00a4f71d28075ab9a07bb514c0  libstdc++-v3/libsupc++/eh_alloc.cc
! f69a72d224b1189c62c2b679d48ecce0  libstdc++-v3/libsupc++/eh_arm.cc
! 5c644e627cbf22b3254b5a67dd1ed56d  libstdc++-v3/libsupc++/eh_atomics.h
! 01397c5f05b1fdc3490cfc85ff676da4  libstdc++-v3/libsupc++/eh_aux_runtime.cc
! 62d9f1c1a47afc92b715850017fb03f6  libstdc++-v3/libsupc++/eh_call.cc
! 8c4e764279189be930c4d074dceb5c79  libstdc++-v3/libsupc++/eh_catch.cc
! d0aff0c28944351149a86b1f16423dd0  libstdc++-v3/libsupc++/eh_exception.cc
! c67e2d5f5d90f48a3069ff87a9f886bf  libstdc++-v3/libsupc++/eh_globals.cc
! 6100702dfafc7c45d41f7d537cb3daa7  libstdc++-v3/libsupc++/eh_personality.cc
! d8f3b8f97f32d3871ed7d30a665561af  libstdc++-v3/libsupc++/eh_ptr.cc
! 98603a5f4af1a6c6fbf7b0edcbdc8884  libstdc++-v3/libsupc++/eh_term_handler.cc
! bde4f68c170f4beff56dc31f7decb918  libstdc++-v3/libsupc++/eh_terminate.cc
! 1211aa083b3987a501e6246a5219ebb6  libstdc++-v3/libsupc++/eh_throw.cc
! 79b2db96902490da340fc52ac7726bf5  libstdc++-v3/libsupc++/eh_tm.cc
! 491c36e731e9127430d14704cff6e3d7  libstdc++-v3/libsupc++/eh_type.cc
! 2c85289e2e692ebdd79e26578dde5291  libstdc++-v3/libsupc++/eh_unex_handler.cc
! 22367a523e642734fe0e478ca91e3dd6  libstdc++-v3/libsupc++/enum_type_info.cc
! 85a431763c225803407355407e15f4c0  libstdc++-v3/libsupc++/exception
! 95f35b3fd84aeed75f6b3ba38fdbb828  libstdc++-v3/libsupc++/exception.h
! 6ebaaaee1c66859a6ce6f69bb7bdbc1b  libstdc++-v3/libsupc++/exception_defines.h
! b6143b858d727119be8880cb82f340e6  libstdc++-v3/libsupc++/exception_ptr.h
! 58090c5d9b0e17a29e8fa979d4541c9e  libstdc++-v3/libsupc++/function_type_info.cc
! 8c3bfbd6c3190f6837dfd1deda603ca5  libstdc++-v3/libsupc++/fundamental_type_info.cc
! 83d3dba8df558bf22d43525906846ec3  libstdc++-v3/libsupc++/guard.cc
! 5007de2ca089f5ae9039ebe2642029b2  libstdc++-v3/libsupc++/guard_error.cc
! 604d5d4ca6a7235ffd00e86cc980f7aa  libstdc++-v3/libsupc++/hash_bytes.cc
! 722619e46e2f37590d20dd631d23e496  libstdc++-v3/libsupc++/hash_bytes.h
! 09bcac0edee877df1e87c7ac046f5813  libstdc++-v3/libsupc++/initializer_list
! d81ddfb1e28692d8ef2c2135dae7fa78  libstdc++-v3/libsupc++/nested_exception.cc
! 02ff9601b6c1c350fd1ed72113ffe7ee  libstdc++-v3/libsupc++/nested_exception.h
! bd99c0d8a06d268e563134d529a2c45e  libstdc++-v3/libsupc++/new
! 283037887fc60ebb7ddfa5e91d9a7d87  libstdc++-v3/libsupc++/new_handler.cc
! 1a4b29528e2f169a99c67aaf0f88270d  libstdc++-v3/libsupc++/new_op.cc
! 69132674b1b7165065412296b6aab947  libstdc++-v3/libsupc++/new_opa.cc
! fc2a500a9e1465fc1cf3f4f9a12ac866  libstdc++-v3/libsupc++/new_opant.cc
! 364346ae155d03bc02a25397b28c37f2  libstdc++-v3/libsupc++/new_opnt.cc
! eaa47a7a65f377d212527d243afa4bab  libstdc++-v3/libsupc++/new_opv.cc
! 5019f86da53c094728405cc141b999b9  libstdc++-v3/libsupc++/new_opva.cc
! 71ffefab86cd4cc3d3e8056978e6eb3e  libstdc++-v3/libsupc++/new_opvant.cc
! f1a73f6fe511796df57f55471444b0c5  libstdc++-v3/libsupc++/new_opvnt.cc
! facfce866073eaac8a764de97607c197  libstdc++-v3/libsupc++/pbase_type_info.cc
! f0605bb6a4f5e8b3976dd3aac754b719  libstdc++-v3/libsupc++/pmem_type_info.cc
! 35bb8ed5e31998e8b314a5173b4d377a  libstdc++-v3/libsupc++/pointer_type_info.cc
! 5a974d4e30ac51d37d9f8de30a30a762  libstdc++-v3/libsupc++/pure.cc
! 00a764e6b95d91dc80be1ee7cf3930d2  libstdc++-v3/libsupc++/si_class_type_info.cc
! d5a024538919fd264ab035af047567ce  libstdc++-v3/libsupc++/tinfo.cc
! 6a614f35f2a346a24a04c15f6eb2dea3  libstdc++-v3/libsupc++/tinfo.h
! f9949edffed5f13b49433aeb0aa1c7ac  libstdc++-v3/libsupc++/tinfo2.cc
! 8a23c39a29d9fbbebae003c39bb293a3  libstdc++-v3/libsupc++/typeinfo
! f8f01a3deeafc494ef33d180f2153d2c  libstdc++-v3/libsupc++/unwind-cxx.h
! f9d9af63059eb7475486c7a611b18cba  libstdc++-v3/libsupc++/vec.cc
! 48a5810a4615ee3361ed60f8a86f379d  libstdc++-v3/libsupc++/vmi_class_type_info.cc
! fb15e2e2a2b7ed98cd6094027fc92773  libstdc++-v3/libsupc++/vterminate.cc
! 256478324744e0bad0b30aa6f3220d7c  libstdc++-v3/libsupc++/vtv_stubs.cc
  6e1809e9ac8f237378ab1ebc1b99fb6a  libstdc++-v3/linkage.m4
! b21c98545e0cb8ef6921957a89bdd5d1  libstdc++-v3/po/Makefile.am
! edcf1b2d9366e1af609192745421de9a  libstdc++-v3/po/Makefile.in
! 62813ea213f423fcbab32768df955789  libstdc++-v3/po/POTFILES.in
! c0f612fd0ae5fc91df3c3f7dfb03180c  libstdc++-v3/po/de.po
! 9be3fcc3afce9703367890d09fc6f0e5  libstdc++-v3/po/fr.po
! c96dc8fff746211523e74f1e605fb697  libstdc++-v3/po/libstdc++.pot
! f32955df5c4047bbde966cf582b0f9f9  libstdc++-v3/po/string_literals.cc
! 7bbd960e3eaf3704f4a4955c9f06d83f  libstdc++-v3/python/Makefile.am
! e74a6fa1d9d5837ff23ea763eeed7bee  libstdc++-v3/python/Makefile.in
! f539df133567379ad0f1f9c3cb9a7981  libstdc++-v3/python/hook.in
  68b329da9893e34099c7d8ad5cb9c940  libstdc++-v3/python/libstdcxx/__init__.py
! 42eba6becf26fb9be17456c725ee075c  libstdc++-v3/python/libstdcxx/v6/__init__.py
! e117d447dca4678394865369d094d9a2  libstdc++-v3/python/libstdcxx/v6/printers.py
! b890a88bda6bbf1918279d8fa2e0dc31  libstdc++-v3/python/libstdcxx/v6/xmethods.py
  b1441422cec6381d9285b7681b666124  libstdc++-v3/scripts/check_compile
  533e594add6e79910b0e557ba690fac6  libstdc++-v3/scripts/check_performance
  f480e111db2d50194a3e1f7014c9f422  libstdc++-v3/scripts/create_testsuite_files
! 35f1c5a5928ea61e74e25440c39a6198  libstdc++-v3/scripts/extract_symvers.in
! 707a0837b7acb25299c95e2bd56d549b  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
  12339b6ead78d7ddd0044dfd0f9f4f92  libstdc++-v3/scripts/make_exports.pl
  80b6ff44b325c6b6d113435d8eea4b76  libstdc++-v3/scripts/make_graph.py
! 85cf38645711b5fc8a857a7868dd2990  libstdc++-v3/scripts/run_doxygen
  7579350b0ac0412cb42e9c354485ebd9  libstdc++-v3/scripts/testsuite_flags.in
! 9e9f0243554b1721cc068bb43de27f4d  libstdc++-v3/src/Makefile.am
! 17ee027fa28e0fbb74e9d7a61c9f8c79  libstdc++-v3/src/Makefile.in
! 14e63fa4b6f6c81e26d1d58208b827ab  libstdc++-v3/src/c++11/Makefile.am
! 18a15c6c59321ec82a3fa1f13fb8503c  libstdc++-v3/src/c++11/Makefile.in
! be1262939a9149c8d5b9884c8d64150f  libstdc++-v3/src/c++11/chrono.cc
! a6ad6bfb7cce19b9cdf432a0e30251b9  libstdc++-v3/src/c++11/codecvt.cc
! 5d79a0dca046349bb089967f46eaa4de  libstdc++-v3/src/c++11/compatibility-atomic-c++0x.cc
! 6d01231a6032635413a3a7d93dafa8d9  libstdc++-v3/src/c++11/compatibility-c++0x.cc
! c8bc837ba3d7cbd8094fc79b392e07b3  libstdc++-v3/src/c++11/compatibility-chrono.cc
! 7119c8eb3a21f279a3b4cee88c3e5780  libstdc++-v3/src/c++11/compatibility-condvar.cc
! 12d98f354bd9897dcbdb5851cc18df8c  libstdc++-v3/src/c++11/compatibility-thread-c++0x.cc
! a0c65a26adc8b87bd7926dc51d0d0542  libstdc++-v3/src/c++11/condition_variable.cc
! a944d115eb4692c8d1ef64d19ed992cc  libstdc++-v3/src/c++11/cow-fstream-inst.cc
! 7af80442bb7b7888318a9f84466429e3  libstdc++-v3/src/c++11/cow-locale_init.cc
! 02d75e71952d77e1a8cc8ab4c3461ecb  libstdc++-v3/src/c++11/cow-shim_facets.cc
! 4cd26388c846ba5fafda0563aa0b0d76  libstdc++-v3/src/c++11/cow-sstream-inst.cc
! 9973eadb2f8d19ea0e81787eac9d3e46  libstdc++-v3/src/c++11/cow-stdexcept.cc
! 853f915da0990a6eebc7b586eda40d9a  libstdc++-v3/src/c++11/cow-string-inst.cc
! d8952354976233ae7082081f9f010633  libstdc++-v3/src/c++11/cow-string-io-inst.cc
! 21639ebf8a39a789055c87abd760ebd7  libstdc++-v3/src/c++11/cow-wstring-inst.cc
! 5b9eae29f8aa4542af3707538957c782  libstdc++-v3/src/c++11/cow-wstring-io-inst.cc
! af7ddfb26650e65bc47ddd4e3146bfd4  libstdc++-v3/src/c++11/ctype.cc
! 0ea31fbbd9e57715a881a4b0d0c8c3f6  libstdc++-v3/src/c++11/cxx11-hash_tr1.cc
! 1e6e86468d9d32d17028236b69d4b75b  libstdc++-v3/src/c++11/cxx11-ios_failure.cc
! 89bda8c6a7932555f6510c6210d60ca2  libstdc++-v3/src/c++11/cxx11-locale-inst.cc
! 26f160c8f85ad04f94bae8c7bafc9555  libstdc++-v3/src/c++11/cxx11-shim_facets.cc
! 342274be0351e7c3faa7979bf856ca6d  libstdc++-v3/src/c++11/cxx11-stdexcept.cc
! 3aec7f20d2574f63302908bbe1154d04  libstdc++-v3/src/c++11/cxx11-wlocale-inst.cc
! 86bee5db23ed05281b0c367190c86757  libstdc++-v3/src/c++11/debug.cc
! 6998225c166e11ae29ae2cf910876047  libstdc++-v3/src/c++11/ext11-inst.cc
! fefb616ad398b6a65e8617aac2ea102b  libstdc++-v3/src/c++11/fstream-inst.cc
! 4c4f82f2920e3e6ab90f74158cb555ed  libstdc++-v3/src/c++11/functexcept.cc
! ebd6c88ee3b89da4825ff935d8e40603  libstdc++-v3/src/c++11/functional.cc
! b4aba310092f1f08693ed07bc3fe9bc3  libstdc++-v3/src/c++11/futex.cc
! 235fc27d948ba1fdf032c01d5c371b49  libstdc++-v3/src/c++11/future.cc
! 7adba376349ded3382cedd437a15c2e8  libstdc++-v3/src/c++11/hash_c++0x.cc
! 68e9ee4db41b5ee31e29e5cdbf88d812  libstdc++-v3/src/c++11/hashtable_c++0x.cc
! 1e079ffbf9e351fede4e7213b012e962  libstdc++-v3/src/c++11/ios-inst.cc
! 2583e208a06879e8eb91ce6313fe4231  libstdc++-v3/src/c++11/ios.cc
! 7b325d0f26fb4a55f821b787ae82ea5d  libstdc++-v3/src/c++11/iostream-inst.cc
! 641ed463ddd69d352565c263d90920a3  libstdc++-v3/src/c++11/istream-inst.cc
! 44f4effc20ee20c73762240f995055ad  libstdc++-v3/src/c++11/limits.cc
! 792629f38d204bede9404a37ffe3004a  libstdc++-v3/src/c++11/locale-inst.cc
! 9748cdfd68751901324d51f429bb8273  libstdc++-v3/src/c++11/mutex.cc
! c64633db4125a899c0feadb4c73ca7a9  libstdc++-v3/src/c++11/mutex_pool.h
! e2e6f4d62bb8959a25beb35174905fa7  libstdc++-v3/src/c++11/ostream-inst.cc
! 583e7e38161cc519a40077d6a73033f1  libstdc++-v3/src/c++11/placeholders.cc
! ceecf416f4b2769f5038516c4d0b6918  libstdc++-v3/src/c++11/random.cc
! 2eb99786641be554910c0f80aff73509  libstdc++-v3/src/c++11/regex.cc
! 230004267fbaf22bd9405538bff42fe6  libstdc++-v3/src/c++11/shared_ptr.cc
! 21df9d67413a5a1acab9cf06461a073c  libstdc++-v3/src/c++11/snprintf_lite.cc
! 33c6e3fdf9cd31c8d34c038410dabe7b  libstdc++-v3/src/c++11/sso_string.cc
! a4dc164db96e5ece091f218f4ce79d7f  libstdc++-v3/src/c++11/sstream-inst.cc
! 0e6bf4db4555292c3d4dbe5d9490874a  libstdc++-v3/src/c++11/streambuf-inst.cc
! cfd0b49101e78c596056b1adbfee200f  libstdc++-v3/src/c++11/string-inst.cc
! d1284956f5f69e2661ff4eee4d67fb51  libstdc++-v3/src/c++11/string-io-inst.cc
! 7d7b678dfcc05cee9bccbe04d1b4c6de  libstdc++-v3/src/c++11/system_error.cc
! d416f4f2c3cbb648bcb5ce3002f009fe  libstdc++-v3/src/c++11/thread.cc
! 30ae62296480af830508a84e779c9d1a  libstdc++-v3/src/c++11/wlocale-inst.cc
! d769f7cbde4ecb0c32864dab96056b93  libstdc++-v3/src/c++11/wstring-inst.cc
! 47bbd968170f15f4f14fbdcfd6c26005  libstdc++-v3/src/c++11/wstring-io-inst.cc
! 984c694c83939f9eecfc9bbe4d20bf96  libstdc++-v3/src/c++98/Makefile.am
! 9d081b01192db532401baddc9c24efb5  libstdc++-v3/src/c++98/Makefile.in
! 077c5bc24ea732944e61a543e6abfcbc  libstdc++-v3/src/c++98/allocator-inst.cc
! 200dd019c9eb07a842fe667b5b40a87e  libstdc++-v3/src/c++98/bitmap_allocator.cc
! 985a839cfbbe62d9f69de9ef2b064bcd  libstdc++-v3/src/c++98/codecvt.cc
! 38a956317ad9c5a811ddbb0d13719089  libstdc++-v3/src/c++98/compatibility-debug_list-2.cc
! 06ef0c96f593fa8eac75d55516f2fb73  libstdc++-v3/src/c++98/compatibility-debug_list.cc
! 8a19edade562653e043be1faea0580ec  libstdc++-v3/src/c++98/compatibility-ldbl.cc
! a11a4afc91168515386493fd8fceadea  libstdc++-v3/src/c++98/compatibility.cc
! b7292e7e7f434c380e2524198c4dbda5  libstdc++-v3/src/c++98/complex_io.cc
! 8a889886e13d6981326f95a4a652957a  libstdc++-v3/src/c++98/concept-inst.cc
! 201b80443dd594a0e077570031790fa3  libstdc++-v3/src/c++98/cow-istream-string.cc
! 198499570944a2c6f063c0a3c13a2830  libstdc++-v3/src/c++98/ext-inst.cc
! 95c4b88cee862e4b688ebcf7f40b7b4a  libstdc++-v3/src/c++98/globals_io.cc
! 53f719df14fef3cd01a08ab04e5a4799  libstdc++-v3/src/c++98/hash-long-double-tr1-aux.cc
! 18a868b150a5c289cc67173fbd8c4fb7  libstdc++-v3/src/c++98/hash_tr1.cc
! aca283ad357646766763d67f9c6d5b49  libstdc++-v3/src/c++98/hashtable_tr1.cc
! 8fa2415bbc21a3be6fdf8b343193f5c2  libstdc++-v3/src/c++98/ios_failure.cc
! 6d87f5f1c00d96cfd3726324f982c4f9  libstdc++-v3/src/c++98/ios_init.cc
! 1f4ea5e92f74ada450cc5fd775828b9f  libstdc++-v3/src/c++98/ios_locale.cc
! 0e62bd5c9cc44ef94c1ca98fac0bafa8  libstdc++-v3/src/c++98/istream-string.cc
! 21a7a3726c7e93ca3a4703dd1bf93b02  libstdc++-v3/src/c++98/istream.cc
! 1dbdc30066e13e4ae6da49efa6fc7f7e  libstdc++-v3/src/c++98/list-aux-2.cc
! 11fb53e03f5c6dffa1de5df3439cf248  libstdc++-v3/src/c++98/list-aux.cc
! ae512da1cb917f4f2f0c7f9919210a2e  libstdc++-v3/src/c++98/list.cc
! 12b4e02d9f6c7d41a0574c178ea9177e  libstdc++-v3/src/c++98/list_associated-2.cc
! 893e6eee98f56b67b059196b25d22e4f  libstdc++-v3/src/c++98/list_associated.cc
! f4c11ca8dd78e68ff3423d3acd876690  libstdc++-v3/src/c++98/locale.cc
! d66d85b6ec383ad8ef482cc9477ba860  libstdc++-v3/src/c++98/locale_facets.cc
! ebe3df7ad850f9753e8e17549a10ba75  libstdc++-v3/src/c++98/locale_init.cc
! 87a5bd2da3b72a7660d2797faac805f4  libstdc++-v3/src/c++98/localename.cc
! 36ac97a9b681935b7e44a79136efc7f7  libstdc++-v3/src/c++98/math_stubs_float.cc
! 570252526b1a3f63d1f5ed5c17e16d9e  libstdc++-v3/src/c++98/math_stubs_long_double.cc
! caf9493bcdc9fb615f980a3ba2e8161c  libstdc++-v3/src/c++98/misc-inst.cc
! ff2c700801c6247a83afdc87eaa95b4f  libstdc++-v3/src/c++98/mt_allocator.cc
! e96013daab228ecfebddce905a4ff9c1  libstdc++-v3/src/c++98/parallel_settings.cc
! ccfe286e937fac8de5150e498cdcff9f  libstdc++-v3/src/c++98/pool_allocator.cc
! c76551b9096322431a61d83b32e293aa  libstdc++-v3/src/c++98/stdexcept.cc
! 625085527e40ac157fa282b9cd052e0c  libstdc++-v3/src/c++98/streambuf.cc
! 22e959d83a923975c0c7a611c50db99e  libstdc++-v3/src/c++98/strstream.cc
! 8be7815a7497aafffd91fe32b172522b  libstdc++-v3/src/c++98/tree.cc
! dd649fc13e846dc2adaab14214405ea3  libstdc++-v3/src/c++98/valarray.cc
! cfd4e11cf722301804fd27e2cc10e50e  libstdc++-v3/src/filesystem/Makefile.am
! 55e84e2e1dcf499a3a634389991fc497  libstdc++-v3/src/filesystem/Makefile.in
! f73fdf94a017dc421c3bdb1ca09ef1a1  libstdc++-v3/src/filesystem/cow-dir.cc
! 5aecc6c41de6a04ff2cd492babba1f04  libstdc++-v3/src/filesystem/cow-ops.cc
! ce1d40dd59bfb48cea6af1fdc01e7ab6  libstdc++-v3/src/filesystem/cow-path.cc
! 1933a4a539101653c6295fd6d8161483  libstdc++-v3/src/filesystem/dir.cc
! ed5a3a8ce9cdba423010d9d1356af71d  libstdc++-v3/src/filesystem/ops.cc
! 1ea70560cb4013b899fb1b527be35030  libstdc++-v3/src/filesystem/path.cc
! 3ab250976eb86f0ac1edc8b3f35b3449  libstdc++-v3/src/shared/hashtable-aux.cc
! eff68d13ec5ad1d4a63320b78a36a8b2  libstdc++-v3/testsuite/17_intro/freestanding.cc
! ecc1a8271661151328b926fdfb899424  libstdc++-v3/testsuite/17_intro/headers/c++1998/49745.cc
! 9875dd58d5e4d9e16ee0b834a989b6ea  libstdc++-v3/testsuite/17_intro/headers/c++1998/all.cc
! 78f616b0408f72ad73c80fac5970bfa5  libstdc++-v3/testsuite/17_intro/headers/c++1998/all_attributes.cc
! d6d61376a0c20515d1db17516f2750b1  libstdc++-v3/testsuite/17_intro/headers/c++1998/all_c++200x_compatibility.cc
! 45c40a65b1950cc85e051d2bdeac1d8e  libstdc++-v3/testsuite/17_intro/headers/c++1998/all_no_exceptions.cc
! 79ffebfc8bc1dcbda2905ab7e2fe6efc  libstdc++-v3/testsuite/17_intro/headers/c++1998/all_no_rtti.cc
! 6c9d70c2beaaf7cc432ba17cb5f9895e  libstdc++-v3/testsuite/17_intro/headers/c++1998/all_pedantic_errors.cc
! 3a7e083cfa39f7e0339efd3e85eb8084  libstdc++-v3/testsuite/17_intro/headers/c++1998/complex.cc
! 3e36a3f67b5e8b419a64f4b4032a6020  libstdc++-v3/testsuite/17_intro/headers/c++1998/operator_names.cc
! 87ee9b4a8b679f4caa835fadff09f4ea  libstdc++-v3/testsuite/17_intro/headers/c++1998/stdc++.cc
! c6f0514dd3114d6852e1ac10ac317cea  libstdc++-v3/testsuite/17_intro/headers/c++1998/stdc++_assert_neg.cc
! d50c23af9d1145cddd8294f81f54ebf1  libstdc++-v3/testsuite/17_intro/headers/c++1998/stdc++_multiple_inclusion.cc
! aff0f9d4ddff6ead1b66cf632e3a0421  libstdc++-v3/testsuite/17_intro/headers/c++2011/42319.cc
! b183ab1d45bac0d208de456104de20bc  libstdc++-v3/testsuite/17_intro/headers/c++2011/67309.cc
! 8d61df8a910aebfe70e13a1f7cab83ba  libstdc++-v3/testsuite/17_intro/headers/c++2011/all_attributes.cc
! 7622be2c36c715bc1e47a5d3a6ab27ed  libstdc++-v3/testsuite/17_intro/headers/c++2011/all_no_exceptions.cc
! 1d1536ef2352318473f6d77a141df41d  libstdc++-v3/testsuite/17_intro/headers/c++2011/all_no_rtti.cc
! ce41f9daba4aa55e17c599b27e534a14  libstdc++-v3/testsuite/17_intro/headers/c++2011/all_pedantic_errors.cc
! 8e5798e2e972064d8be8d8e971435465  libstdc++-v3/testsuite/17_intro/headers/c++2011/linkage.cc
! 764420d7acebf8df71e878516a302eb5  libstdc++-v3/testsuite/17_intro/headers/c++2011/operator_names.cc
! 89bfd85d26dca171d11829da624a73fc  libstdc++-v3/testsuite/17_intro/headers/c++2011/stdc++.cc
! e901dfd8fa31dfb18f801d52a32af56a  libstdc++-v3/testsuite/17_intro/headers/c++2011/stdc++_multiple_inclusion.cc
! 5b2bd539bc31493221422f354d5368fe  libstdc++-v3/testsuite/17_intro/headers/c++2014/all_attributes.cc
! cec11c27a08be8f68c3f189cff87ff26  libstdc++-v3/testsuite/17_intro/headers/c++2014/all_no_exceptions.cc
! a05741b50f736591adc069c7244a103e  libstdc++-v3/testsuite/17_intro/headers/c++2014/all_no_rtti.cc
! 592e29c5ad8a96a8dbd4e8e22e9de080  libstdc++-v3/testsuite/17_intro/headers/c++2014/all_pedantic_errors.cc
! 05d1bb38b57c5303ede5a827deb320b5  libstdc++-v3/testsuite/17_intro/headers/c++2014/operator_names.cc
! 918303f7d111e8bee6afecfb607bc488  libstdc++-v3/testsuite/17_intro/headers/c++2014/stdc++.cc
! 01aee116ab8b6ebe7ff6358cf8bf2394  libstdc++-v3/testsuite/17_intro/headers/c++2014/stdc++_multiple_inclusion.cc
! 11e813bd6abc664901d439a6e0bfe10a  libstdc++-v3/testsuite/17_intro/names.cc
! 69376f9eebb6b3e66f3bbe5501e56017  libstdc++-v3/testsuite/17_intro/shared_with_static_deps.cc
! 4a79b3b2a6b5d7a3e4c35ee9ab270376  libstdc++-v3/testsuite/17_intro/static.cc
! 8c893a06f3284d0f487c3b47ff0aa9ff  libstdc++-v3/testsuite/17_intro/tag_type_explicit_ctor.cc
! 8b1aa9f7d7ad9f9c1396cb2702d2cc5f  libstdc++-v3/testsuite/17_intro/using_namespace_std.cc
! 8f2b580803b18ee679e34ee888753f21  libstdc++-v3/testsuite/17_intro/using_namespace_std_exp_neg.cc
! d68387ff0847a1819d716f6f13e011cf  libstdc++-v3/testsuite/17_intro/using_namespace_std_tr1_neg.cc
! 81ae9cc366ec1e08e14922ae6ed58093  libstdc++-v3/testsuite/18_support/50594.cc
! a0aa80ca698f9e46814ff0429ec44921  libstdc++-v3/testsuite/18_support/bad_alloc/cons_virtual_derivation.cc
! 4bbd46b813c0fc3fb2b370345304c9ac  libstdc++-v3/testsuite/18_support/bad_alloc/what.cc
! ac51907d867040adaf6117cf0b1a91bf  libstdc++-v3/testsuite/18_support/bad_cast/cons_virtual_derivation.cc
! d0e02b19cff96eede238cf5904dece07  libstdc++-v3/testsuite/18_support/bad_cast/what.cc
! 59779b0fdbfb5ab1583bb066b097034e  libstdc++-v3/testsuite/18_support/bad_exception/23591_thread-1.c
! 5bdae76e2c69b76b181e4e1885970a39  libstdc++-v3/testsuite/18_support/bad_exception/59392.cc
! 52bcbdea424f7041ea0d2a84df49f2a2  libstdc++-v3/testsuite/18_support/bad_exception/cons_virtual_derivation.cc
! 164ad05119abb492f5815dad9c226ff5  libstdc++-v3/testsuite/18_support/bad_exception/what.cc
! 7b2ffa76c329f92294739c67c5a0c0f4  libstdc++-v3/testsuite/18_support/bad_typeid/cons_virtual_derivation.cc
! b8ab6128cbeb65189af7d5be270fc1cf  libstdc++-v3/testsuite/18_support/bad_typeid/what.cc
! bec6dfcb09de858a29505df0f2f0aeb9  libstdc++-v3/testsuite/18_support/byte/global_neg.cc
! 2aca3fd527f405b840b750d4d5d9b3fa  libstdc++-v3/testsuite/18_support/byte/ops.cc
! be76209c41ca34dea22ac462cb535682  libstdc++-v3/testsuite/18_support/byte/requirements.cc
! e8dfcdc5d1339dd84e557015b1bcf8ec  libstdc++-v3/testsuite/18_support/cxa_vec.cc
! 5a96da5f9f6db88fd4b6755b256f2579  libstdc++-v3/testsuite/18_support/exception/38732.cc
! 0abe6e258560c99b54336dcabaf65c84  libstdc++-v3/testsuite/18_support/exception/what.cc
! 50c94ab5e83c397848137f2b98ee4a9a  libstdc++-v3/testsuite/18_support/exception_ptr/40296.cc
! 3da61f7c96d4c5ffc94904cf648473f3  libstdc++-v3/testsuite/18_support/exception_ptr/60612-terminate.cc
! b2b6b7406ea9570d1a09565d1bfa2101  libstdc++-v3/testsuite/18_support/exception_ptr/60612-unexpected.cc
! 811179fd45bff5090eb6ed4a65501fe7  libstdc++-v3/testsuite/18_support/exception_ptr/62258.cc
! 2f1c3a0310f204e69f452efab0b69d97  libstdc++-v3/testsuite/18_support/exception_ptr/64241.cc
! cc31fa32e5afda8ba65cee7d863ebcdd  libstdc++-v3/testsuite/18_support/exception_ptr/current_exception.cc
! 2afc75de0f33b02ae1ee74850735527e  libstdc++-v3/testsuite/18_support/exception_ptr/lifespan.cc
! c21f98b983b5f1be3ac3cbb88b42dd2a  libstdc++-v3/testsuite/18_support/exception_ptr/make_exception_ptr.cc
! 1f76dbdc3181ee80fba4f86e08bf6478  libstdc++-v3/testsuite/18_support/exception_ptr/make_exception_ptr_2.cc
! e487dae0407f18b42053d1cd593c3f7a  libstdc++-v3/testsuite/18_support/exception_ptr/move.cc
! 6ae33e9f563ee2871cabb44b28aab373  libstdc++-v3/testsuite/18_support/exception_ptr/requirements.cc
! 8634fddd3da51239315ffde92c1b6183  libstdc++-v3/testsuite/18_support/exception_ptr/requirements_neg.cc
! 4bbb87e166adea37d2cb2b35872b7b9b  libstdc++-v3/testsuite/18_support/exception_ptr/rethrow_exception.cc
! 3b5a72f893861e0457bb29a0ca8efecb  libstdc++-v3/testsuite/18_support/free_eh_pool.cc
! 0106598fdf646c4e8741cf5bce922bb5  libstdc++-v3/testsuite/18_support/headers/cfloat/values.cc
! de559648cf8e0560203fd212676472e7  libstdc++-v3/testsuite/18_support/headers/climits/values.cc
! 844e8b97bfc5b7ddca85c43026049565  libstdc++-v3/testsuite/18_support/headers/csetjmp/functions_std.cc
! 5ea98a867aa84d65fb62b42575490493  libstdc++-v3/testsuite/18_support/headers/csetjmp/macros.cc
! fee22559c8a1ef2b35b84cc998c44301  libstdc++-v3/testsuite/18_support/headers/csetjmp/types_std.cc
! 1135ebb56348de54fd1b2de0265fedb8  libstdc++-v3/testsuite/18_support/headers/csignal/functions_std.cc
! 853d96c6a8be32ea206b971b913699d9  libstdc++-v3/testsuite/18_support/headers/csignal/macros.cc
! 98761a751c8b9c20ca2ae3b75df1ce92  libstdc++-v3/testsuite/18_support/headers/csignal/types_std.cc
! 735071aeeab547e3334015f6ed475db8  libstdc++-v3/testsuite/18_support/headers/cstdalign/std_c++0x_neg.cc
! b3612286e33873d0350848ab391deaa0  libstdc++-v3/testsuite/18_support/headers/cstdarg/macros.cc
! 2db03dcdcf6e065bdd9ee48670234e09  libstdc++-v3/testsuite/18_support/headers/cstdarg/types_std.cc
! 6fd2dd62be3f6ab99356e3e62cd94071  libstdc++-v3/testsuite/18_support/headers/cstdbool/macros.cc
! 9f40d4808af1aea72ea9339de89d4e84  libstdc++-v3/testsuite/18_support/headers/cstdbool/std_c++0x_neg.cc
! c2facc1d667eea9429416698f1f0fb25  libstdc++-v3/testsuite/18_support/headers/cstddef/macros.cc
! 3aac355256c9269a85e8fb210a61da25  libstdc++-v3/testsuite/18_support/headers/cstddef/types_std.cc
! 7370730133e0b0737d7f90f490c5bc9f  libstdc++-v3/testsuite/18_support/headers/cstdint/std_c++0x_neg.cc
! 09c1e32bae409d8375b861db552aeb3f  libstdc++-v3/testsuite/18_support/headers/cstdint/types_std_c++0x.cc
! 20e3a9f12f05c270433b807244f75071  libstdc++-v3/testsuite/18_support/headers/cstdlib/functions_std.cc
! 488fa47e8edd25613792c29d239a6942  libstdc++-v3/testsuite/18_support/headers/cstdlib/macros.cc
! d62cccf1ccb4ab08f2bec62e3114115b  libstdc++-v3/testsuite/18_support/headers/ctime/functions_std.cc
! da896d97b3402765a89dad9042daa579  libstdc++-v3/testsuite/18_support/headers/ctime/macros.cc
! c6a1240666c2ae6c32331ba16e357718  libstdc++-v3/testsuite/18_support/headers/ctime/types_std.cc
! 62e5bd4cf2120c5f983c4cbdeec7ddea  libstdc++-v3/testsuite/18_support/headers/exception/synopsis.cc
! 86890ad9ea3f2a517e52d155e2655f5e  libstdc++-v3/testsuite/18_support/headers/exception/types_std.cc
! a29649711f4b0bf23d13b4cc49129bd3  libstdc++-v3/testsuite/18_support/headers/limits/synopsis.cc
! 9f24ec6188c8dea1fb7c5e8c2d9d85e4  libstdc++-v3/testsuite/18_support/headers/new/synopsis.cc
! 33842bf57d24adbd8fa0c435fb7ef874  libstdc++-v3/testsuite/18_support/headers/new/synopsis_cxx98.cc
! 363da4461b4f59234f98186c874c0eaf  libstdc++-v3/testsuite/18_support/headers/new/types_std.cc
! 040a817dd3ff57ce318abc8004da9cba  libstdc++-v3/testsuite/18_support/headers/typeinfo/synopsis.cc
! 7b76c091783736cae06d2061b0fc5812  libstdc++-v3/testsuite/18_support/headers/typeinfo/types_std.cc
! fdf67fd649dfe102aa8d850c8ba9bfbd  libstdc++-v3/testsuite/18_support/initializer_list/constexpr.cc
! 69baca5ea52e403a367a6721d80a862b  libstdc++-v3/testsuite/18_support/initializer_list/range_access.cc
! 2d245d854cb5293167e670713a2bfa88  libstdc++-v3/testsuite/18_support/initializer_list/requirements/constexpr_functions.cc
! 81a92c91fc4dbe7b8436c3133bdeb756  libstdc++-v3/testsuite/18_support/initializer_list/requirements/explicit_instantiation.cc
! eba811b5c34a59c7f41753a030c882c7  libstdc++-v3/testsuite/18_support/initializer_list/requirements/typedefs.cc
! d3382a0bca1bbe9491d19ac0855a3fc6  libstdc++-v3/testsuite/18_support/launder/1.cc
! da9118620260b332392ac134ee072fe6  libstdc++-v3/testsuite/18_support/launder/requirements.cc
! e6ce26861a704890628929acee3cd366  libstdc++-v3/testsuite/18_support/launder/requirements_neg.cc
! bcf96685ac0e99e5d89d69aebd8c179a  libstdc++-v3/testsuite/18_support/max_align_t/requirements/1.cc
! 458519acab592ea45594f334953fc712  libstdc++-v3/testsuite/18_support/max_align_t/requirements/2.cc
! 98daeeecea044cf00bc16fb93d092055  libstdc++-v3/testsuite/18_support/nested_exception/51438.cc
! 71920bc9f05901e85731165ed0e682a5  libstdc++-v3/testsuite/18_support/nested_exception/62154.cc
! 32c28bb0e3a2c4130b643a278348bed0  libstdc++-v3/testsuite/18_support/nested_exception/68139.cc
! a5e0e1090ba67ffa7331806f237161d6  libstdc++-v3/testsuite/18_support/nested_exception/79114.cc
! ee850001dc00cbe66536517b7d29e0e4  libstdc++-v3/testsuite/18_support/nested_exception/cons.cc
! f7fb258c6b6c2063fcc6f060380fa5b5  libstdc++-v3/testsuite/18_support/nested_exception/nested_ptr.cc
! 55d2e2c3a147ef4a5b8999c3f738c87c  libstdc++-v3/testsuite/18_support/nested_exception/rethrow_if_nested.cc
! 57dbba25b25cfb3ce897f27c42d6ee93  libstdc++-v3/testsuite/18_support/nested_exception/rethrow_nested.cc
! d4197031f960113b36e123cfbe916859  libstdc++-v3/testsuite/18_support/nested_exception/throw_with_nested.cc
! 011a53da2ba4870a619b8011a5bd1d80  libstdc++-v3/testsuite/18_support/new_delete_placement.cc
! 06465a5707379b854eb1fa39610b03b3  libstdc++-v3/testsuite/18_support/new_handler.cc
! e839d6cb70a509b3e3d00e16b0045572  libstdc++-v3/testsuite/18_support/numeric_limits/29989.cc
! b9cdea29233fb9b044412026f009e8ea  libstdc++-v3/testsuite/18_support/numeric_limits/40856.cc
! 0d4c0fd1e99dd7851cebd59c814f92fd  libstdc++-v3/testsuite/18_support/numeric_limits/char16_32_t.cc
! d9e1a05f347ba5220a1d5c30e40bba44  libstdc++-v3/testsuite/18_support/numeric_limits/cons/default.cc
! 1184fcb78090553bc582e65d6746e4a4  libstdc++-v3/testsuite/18_support/numeric_limits/cons/default_c++0x.cc
! e9f5c72fb3c7439111a0ccbba351f765  libstdc++-v3/testsuite/18_support/numeric_limits/denorm_min.cc
! 5b45f7b444719983e4987bde0c7f63a2  libstdc++-v3/testsuite/18_support/numeric_limits/digits10.cc
! 3629ce8d77fae5908cefeb0364888e31  libstdc++-v3/testsuite/18_support/numeric_limits/dr559.cc
! e30058a472ad98dcab10b4f94366732c  libstdc++-v3/testsuite/18_support/numeric_limits/epsilon.cc
! 22c06e923a1a20b7be6063cdb572351f  libstdc++-v3/testsuite/18_support/numeric_limits/infinity.cc
! a41be972a4988abda8b7f2054fee1f6a  libstdc++-v3/testsuite/18_support/numeric_limits/is_iec559.cc
! 77a06ba1dc1e851662bc9fe0edce20a6  libstdc++-v3/testsuite/18_support/numeric_limits/is_signed.cc
! be7b0cb91c4ec7412ab899999c21e992  libstdc++-v3/testsuite/18_support/numeric_limits/lowest.cc
! d8fe3f43680602a55449c0a49fa8c656  libstdc++-v3/testsuite/18_support/numeric_limits/max_digits10.cc
! bfdd2441cba29c4b152c88004135e8c7  libstdc++-v3/testsuite/18_support/numeric_limits/min_max.cc
! aa161f1b69c22dc68941fd41f400b46f  libstdc++-v3/testsuite/18_support/numeric_limits/primary.cc
! 36a6b32f6cf3c794ea4b64baf212e2a5  libstdc++-v3/testsuite/18_support/numeric_limits/quiet_NaN.cc
! 7bfb0b910f0336ec10a284736ed9adc2  libstdc++-v3/testsuite/18_support/numeric_limits/requirements/constexpr_data.cc
! a678a92ab67360536063abf1996c24dc  libstdc++-v3/testsuite/18_support/numeric_limits/requirements/constexpr_functions.cc
! 517133f2c56520eaf9c4a7479a9f1af0  libstdc++-v3/testsuite/18_support/numeric_limits/requirements/explicit_instantiation/1.cc
! 6ca09192b5e328fe7a9b4d1369929437  libstdc++-v3/testsuite/18_support/numeric_limits/specialization_default_values.cc
! aace7530a51b5a228624245115381b53  libstdc++-v3/testsuite/18_support/numeric_limits/traps.cc
! 154f8253fbe0ac4f871502fac17d8fac  libstdc++-v3/testsuite/18_support/pthread_guard.cc
! b15489f096ea5d9821871c225599cc04  libstdc++-v3/testsuite/18_support/quick_exit/quick_exit.cc
! 3513faa93dafac1be770e4f7b4303d8a  libstdc++-v3/testsuite/18_support/terminate_handler.cc
! 3cdebf52f6df522e403fabf40d224ac2  libstdc++-v3/testsuite/18_support/type_info/52562.cc
! 45c5a591d54a430dc71d5a5398f111cb  libstdc++-v3/testsuite/18_support/type_info/fundamental.cc
! eec14789d50026c21cb0826bfbd5e37b  libstdc++-v3/testsuite/18_support/type_info/hash_code.cc
! 0899d0c45c34ae383b10a53e526332fb  libstdc++-v3/testsuite/18_support/uncaught_exception/14026.cc
! 3cc14d844f4b202376ecab890e05de63  libstdc++-v3/testsuite/18_support/uncaught_exceptions/uncaught_exceptions.cc
! f5d7e2c21bfbaf2cfd1b5ca66f842156  libstdc++-v3/testsuite/18_support/unexpected_handler.cc
! edb8e845450df8ffa6584977d4992fb3  libstdc++-v3/testsuite/19_diagnostics/error_category/cons/copy_neg.cc
! 6df3b6943cfa637673a22dcffe840501  libstdc++-v3/testsuite/19_diagnostics/error_category/cons/default.cc
! 0e407c7a1d97bf2dbb00154c188c7016  libstdc++-v3/testsuite/19_diagnostics/error_category/operators/equal.cc
! 9b676d39a082967ed8877f62cd19c22d  libstdc++-v3/testsuite/19_diagnostics/error_category/operators/not_equal.cc
! 06854341751708019589802ceee46e88  libstdc++-v3/testsuite/19_diagnostics/error_code/cons/1.cc
! 9d33671b8b43d660e652b0e82222fd7d  libstdc++-v3/testsuite/19_diagnostics/error_code/cons/39882.cc
! d9547b252ddb00cf10efb3dcc5c12846  libstdc++-v3/testsuite/19_diagnostics/error_code/is_error_code_v.cc
! e12e69526107d51de7483a16825ca434  libstdc++-v3/testsuite/19_diagnostics/error_code/modifiers/39882.cc
! 7cb132808f5c9c0cdeda2988d86745ee  libstdc++-v3/testsuite/19_diagnostics/error_code/operators/bool.cc
! 8031838f1a4f0004671f384464f252f4  libstdc++-v3/testsuite/19_diagnostics/error_code/operators/bool_neg.cc
! dc1c21fff37073588c6e30f4c3733ad5  libstdc++-v3/testsuite/19_diagnostics/error_code/operators/equal.cc
! b31f7e4d36a49cbdf37f1b519f42d5ba  libstdc++-v3/testsuite/19_diagnostics/error_code/operators/not_equal.cc
! 3e8fdb1d1af9aac8dd40df30e330bc53  libstdc++-v3/testsuite/19_diagnostics/error_condition/cons/1.cc
! b9b1fc44f1c25666b3d756a8bbacbfd4  libstdc++-v3/testsuite/19_diagnostics/error_condition/cons/39881.cc
! 9b215d5f81360d70e01913db9390e0b0  libstdc++-v3/testsuite/19_diagnostics/error_condition/modifiers/39881.cc
! f595d5b6958cdf07bd3ec52d17f7778d  libstdc++-v3/testsuite/19_diagnostics/error_condition/operators/bool.cc
! 77134b7512dd352bb88342095a93b3da  libstdc++-v3/testsuite/19_diagnostics/error_condition/operators/bool_neg.cc
! dfacc0e3281c3020cc83e674b9697b5a  libstdc++-v3/testsuite/19_diagnostics/error_condition/operators/equal.cc
! 842f2a7f82a242d95b73bd46b9a06b5c  libstdc++-v3/testsuite/19_diagnostics/error_condition/operators/not_equal.cc
! b5e597857cda067ebead38ebf293b3a7  libstdc++-v3/testsuite/19_diagnostics/headers/cassert/macros.cc
! 24a01d586badcfb68f86126b9c45981f  libstdc++-v3/testsuite/19_diagnostics/headers/cerrno/macros.cc
! c4282b03f5e2627812ce311f719a04c3  libstdc++-v3/testsuite/19_diagnostics/headers/stdexcept/synopsis.cc
! bee591f442de01cc6d321c93ec378328  libstdc++-v3/testsuite/19_diagnostics/headers/stdexcept/types_std.cc
! c8f1016ebce113b0c17ad91f363da33b  libstdc++-v3/testsuite/19_diagnostics/headers/system_error/34538.cc
! 8f3c7fc23f68ddb8bda7e0a42dddb6bf  libstdc++-v3/testsuite/19_diagnostics/headers/system_error/errc_std_c++0x.cc
! d35860537003b0d23569f212a6df4d96  libstdc++-v3/testsuite/19_diagnostics/headers/system_error/std_c++0x_neg.cc
! 9ae0118717f7947b851d066f1f8c21a3  libstdc++-v3/testsuite/19_diagnostics/headers/system_error/types_std_c++0x.cc
! d4d0cc426215d81faaa26804cbddf420  libstdc++-v3/testsuite/19_diagnostics/logic_error/cons_virtual_derivation.cc
! 57df46beb9ea6b404201a2910bb7d1ef  libstdc++-v3/testsuite/19_diagnostics/logic_error/what-1.cc
! c28928277c48ba59c4ecd3e39b61ac44  libstdc++-v3/testsuite/19_diagnostics/logic_error/what-2.cc
! ce2d51cc37bcd5159d9f046f1234b9f8  libstdc++-v3/testsuite/19_diagnostics/logic_error/what-3.cc
! dc35536231660725c37cdf6426fef4c8  libstdc++-v3/testsuite/19_diagnostics/logic_error/what-big.cc
! 3560c04bc2300dfc0c1ad5b8f33dcabc  libstdc++-v3/testsuite/19_diagnostics/runtime_error/cons_virtual_derivation.cc
! 26008662df5ce44c8382551bac8ebf74  libstdc++-v3/testsuite/19_diagnostics/runtime_error/what-1.cc
! f0946823ab2c20bf53aa4014af9c4ded  libstdc++-v3/testsuite/19_diagnostics/runtime_error/what-2.cc
! 4083cbb3dea7e6651edb0d9f6cd20016  libstdc++-v3/testsuite/19_diagnostics/runtime_error/what-3.cc
! 9077842a37471951dc92a6c8417a8545  libstdc++-v3/testsuite/19_diagnostics/runtime_error/what-big.cc
! efa18508182e1dca14fd216477f8eb39  libstdc++-v3/testsuite/19_diagnostics/stdexcept.cc
! 3f2148c3d5b8340f33936356e0df884b  libstdc++-v3/testsuite/19_diagnostics/system_error/39880.cc
! 180aa703c5fd826d3667cd6e07a53846  libstdc++-v3/testsuite/19_diagnostics/system_error/cons-1.cc
! 6c82aab93559e5614601befca5021ece  libstdc++-v3/testsuite/19_diagnostics/system_error/cons_virtual_derivation.cc
! c31a025495473f79521c908c5f7d8334  libstdc++-v3/testsuite/19_diagnostics/system_error/what-1.cc
! ac409da02275155ccce1f74521382557  libstdc++-v3/testsuite/19_diagnostics/system_error/what-2.cc
! 19a9aac19f15e4480f50770a7f9317d4  libstdc++-v3/testsuite/19_diagnostics/system_error/what-3.cc
! b86604ab288bac9c26d50e90fa664b8b  libstdc++-v3/testsuite/19_diagnostics/system_error/what-4.cc
! 3064ceee78e5dce2ca5befc0cddcf87c  libstdc++-v3/testsuite/19_diagnostics/system_error/what-big.cc
! 8226a57470728eeaed7720a283fd6538  libstdc++-v3/testsuite/20_util/add_const/requirements/alias_decl.cc
! 038125c2526cfbe39bfffd67616013ff  libstdc++-v3/testsuite/20_util/add_const/requirements/explicit_instantiation.cc
! a57fb51b7c2918aed27cfd8ffd51bdf4  libstdc++-v3/testsuite/20_util/add_const/value.cc
! f3f435844abc2c8d96d93b20e2191255  libstdc++-v3/testsuite/20_util/add_cv/requirements/alias_decl.cc
! b30e3310150a154260a2c1c926a71867  libstdc++-v3/testsuite/20_util/add_cv/requirements/explicit_instantiation.cc
! 48cba002fe13cf476b7e1ce36d87e7e6  libstdc++-v3/testsuite/20_util/add_cv/value.cc
! 36c3d02c110dfed6f4d9c9ce8232e829  libstdc++-v3/testsuite/20_util/add_lvalue_reference/requirements/alias_decl.cc
! 9def26c6f99cd00200e97c405cfbaea3  libstdc++-v3/testsuite/20_util/add_lvalue_reference/requirements/explicit_instantiation.cc
! 86113630bcde72a8e0f7138d44dc17fe  libstdc++-v3/testsuite/20_util/add_lvalue_reference/value.cc
! 39f2444f2e210d8772db83e83b341faa  libstdc++-v3/testsuite/20_util/add_pointer/requirements/alias_decl.cc
! 4c33e64d2c6090a58fd5ae3158f29129  libstdc++-v3/testsuite/20_util/add_pointer/requirements/explicit_instantiation.cc
! 248da607bf87c6dc71643df53b00d94c  libstdc++-v3/testsuite/20_util/add_pointer/value.cc
! 9295aa1ac80b8e1811e6bd0a1b2c5dc9  libstdc++-v3/testsuite/20_util/add_rvalue_reference/requirements/alias_decl.cc
! d33d53ef10f4ea0fdfae3c32a3d62b34  libstdc++-v3/testsuite/20_util/add_rvalue_reference/requirements/explicit_instantiation.cc
! 6dfa31443d952c1d081a37f7271869af  libstdc++-v3/testsuite/20_util/add_rvalue_reference/value.cc
! 686b67610c75c03ad6bdb188b9d894bf  libstdc++-v3/testsuite/20_util/add_volatile/requirements/alias_decl.cc
! 7fe23ef9575d527a828b1a433c5cd353  libstdc++-v3/testsuite/20_util/add_volatile/requirements/explicit_instantiation.cc
! 949b4fa1c8d4ad504062d377cfdc9a20  libstdc++-v3/testsuite/20_util/add_volatile/value.cc
! 538bd7fba2763b986500b5d8871b0503  libstdc++-v3/testsuite/20_util/addressof/1.cc
! a19c1c041215071449871b07eeed1178  libstdc++-v3/testsuite/20_util/addressof/requirements/constexpr.cc
! 4153fbf529ba89a286dd1c7e590b5330  libstdc++-v3/testsuite/20_util/addressof/requirements/explicit_instantiation.cc
! d43841c037ddedc5460a6020921cc7e9  libstdc++-v3/testsuite/20_util/align/1.cc
! f99b8b2c322bf8ffb7857aa1a8c1ade4  libstdc++-v3/testsuite/20_util/align/2.cc
! be9e732e90b2d11046642a8ffba9b86c  libstdc++-v3/testsuite/20_util/aligned_storage/requirements/alias_decl.cc
! bdc1787836676d1c2e3ea6e967c7a267  libstdc++-v3/testsuite/20_util/aligned_storage/requirements/explicit_instantiation.cc
! 289b9f6c0c347074fba5ae1de7d97bf1  libstdc++-v3/testsuite/20_util/aligned_storage/value.cc
! eecac5a076934b4a146ce82005c0b7cc  libstdc++-v3/testsuite/20_util/aligned_union/1.cc
! 0398093eab7b7376dbe1f7e5998cda26  libstdc++-v3/testsuite/20_util/aligned_union/requirements/alias_decl.cc
! 34bb4ca2e4068f585cf6522dc554fdf9  libstdc++-v3/testsuite/20_util/alignment_of/requirements/explicit_instantiation.cc
! d7315d68400565fd0233afc8fe71dd34  libstdc++-v3/testsuite/20_util/alignment_of/requirements/typedefs.cc
! 67c0ccc2b1bafde9b4a9c8aa629ad3b9  libstdc++-v3/testsuite/20_util/alignment_of/value.cc
! 7830065fc6274c98faf959f8b4e804c5  libstdc++-v3/testsuite/20_util/allocator/1.cc
! 0b39039bac75b7902eb17c99004e4093  libstdc++-v3/testsuite/20_util/allocator/10378.cc
! 8cbb86e7257c8800e5c941a7c49d33de  libstdc++-v3/testsuite/20_util/allocator/14176.cc
! eb8c89700adf4d00d61ee8c8b841bd2d  libstdc++-v3/testsuite/20_util/allocator/33807.cc
! 512227557e195c88bf1db77d0626feaf  libstdc++-v3/testsuite/20_util/allocator/8230.cc
! 50d3b2c5b1661f4e663ca2d7204c546a  libstdc++-v3/testsuite/20_util/allocator/overaligned.cc
! 35cb655b22c4bbe0e652be255adfeee4  libstdc++-v3/testsuite/20_util/allocator/requirements/explicit_instantiation/1.cc
! 5c52d0d322d122b471a5ab19cf34bae1  libstdc++-v3/testsuite/20_util/allocator/requirements/typedefs.cc
! d3b0ce81eb068779539ab32c26596f3d  libstdc++-v3/testsuite/20_util/allocator/void.cc
! e07921741530ba962c48b49619d885e4  libstdc++-v3/testsuite/20_util/allocator_traits/members/allocate_hint.cc
! dee5a372ab9608cec650e74584c1968f  libstdc++-v3/testsuite/20_util/allocator_traits/members/allocate_hint_nonpod.cc
! 9ce8916902b30a07a0ee779bb417427f  libstdc++-v3/testsuite/20_util/allocator_traits/members/construct.cc
! 118d580a5620684b6adcd634c6ba8afc  libstdc++-v3/testsuite/20_util/allocator_traits/members/destroy.cc
! 12b48adc9507d1f0d730d0ac4cf8bf8c  libstdc++-v3/testsuite/20_util/allocator_traits/members/is_always_equal.cc
! 294e84628dec974265352f0e0661e131  libstdc++-v3/testsuite/20_util/allocator_traits/members/max_size.cc
! 3e8ffacb83d358b3a08a8ff84d9c0a72  libstdc++-v3/testsuite/20_util/allocator_traits/members/pointers.cc
! 6287d72a814902ab68a360a4cadd57b0  libstdc++-v3/testsuite/20_util/allocator_traits/members/rebind_alloc.cc
! e8e8b8ab1387ccd83f3ed4984a09fb03  libstdc++-v3/testsuite/20_util/allocator_traits/members/select.cc
! bddd191f0142fe1ead95346dc323ee2f  libstdc++-v3/testsuite/20_util/allocator_traits/requirements/explicit_instantiation.cc
! ddb047b6dc232d27b0141ce74be758a7  libstdc++-v3/testsuite/20_util/allocator_traits/requirements/typedefs.cc
! e8b47b85e329c5787d281ae54eca1827  libstdc++-v3/testsuite/20_util/allocator_traits/requirements/typedefs2.cc
! 279f7f82955290fcda4bd39256125671  libstdc++-v3/testsuite/20_util/any/assign/1.cc
! 14c923f3e4f3ce22acf143fd6ac2c3c9  libstdc++-v3/testsuite/20_util/any/assign/2.cc
! fddd72a20bbbbc22b7d05f6711319b0f  libstdc++-v3/testsuite/20_util/any/assign/emplace.cc
! 76972ac040273ba76581a67e247ddc7e  libstdc++-v3/testsuite/20_util/any/assign/exception.cc
! 2a679216bc43e30a8f83d3f65bf4afd5  libstdc++-v3/testsuite/20_util/any/assign/self.cc
! dae8ef97b2496849a3b2290a5cfe9a67  libstdc++-v3/testsuite/20_util/any/cons/1.cc
! 10e12f59b9f14e41d2476604e6940730  libstdc++-v3/testsuite/20_util/any/cons/2.cc
! 0789d5c134c9074bdf402b1ac0f081b6  libstdc++-v3/testsuite/20_util/any/cons/aligned.cc
! df4fa8ef010d4fca972064a6e83e4db8  libstdc++-v3/testsuite/20_util/any/cons/explicit.cc
! 410ec35828c3a71425f54b223b3bb51c  libstdc++-v3/testsuite/20_util/any/cons/in_place.cc
! 6eb14dec3ecc152f576979da6c084904  libstdc++-v3/testsuite/20_util/any/cons/nontrivial.cc
! 136c33cb00218360857886d5e07f386f  libstdc++-v3/testsuite/20_util/any/make_any.cc
! 8d87e9a40ff5af1f9bde5a93888f33f1  libstdc++-v3/testsuite/20_util/any/misc/any_cast.cc
! 2ea424453880a946b7d24f86868fe82d  libstdc++-v3/testsuite/20_util/any/misc/any_cast_neg.cc
! f47538cfe0f5fe3ca0c9b220558925d3  libstdc++-v3/testsuite/20_util/any/misc/any_cast_no_rtti.cc
! 7ad55da7bbd6a46d3c6202b3051bba6c  libstdc++-v3/testsuite/20_util/any/misc/swap.cc
! 4987af6733ce394d7e669122d5938718  libstdc++-v3/testsuite/20_util/any/modifiers/1.cc
! 64606a652fb3bc7ffce712c4cdfa89f8  libstdc++-v3/testsuite/20_util/any/observers/type.cc
! 682f81bf6b448b2613b83c048f5b41b1  libstdc++-v3/testsuite/20_util/any/requirements.cc
! b0015efa78667cd8262d36c385493d66  libstdc++-v3/testsuite/20_util/any/typedefs.cc
! 2e1a8f7e4d40c96bdb223a982c61473f  libstdc++-v3/testsuite/20_util/as_const/1.cc
! bbff3e6df12da9c41b6dbb1c6ac9c17b  libstdc++-v3/testsuite/20_util/as_const/rvalue_neg.cc
! e7a7330c372cbc2459c362aa141b3e69  libstdc++-v3/testsuite/20_util/auto_ptr/1.cc
! f9cba3f3cbdc6b8c7e7c01b53e5cc72e  libstdc++-v3/testsuite/20_util/auto_ptr/2.cc
! 032e962d6140796df541cc5d27d77854  libstdc++-v3/testsuite/20_util/auto_ptr/3.cc
! 4d080ca485f9cae2c3380cc3263ec102  libstdc++-v3/testsuite/20_util/auto_ptr/3946.cc
! 04666b67cfe1d8f6dc909e9d870673cb  libstdc++-v3/testsuite/20_util/auto_ptr/4.cc
! a7051de7ac61d1b44a3a93f7b7ec6a2c  libstdc++-v3/testsuite/20_util/auto_ptr/5.cc
! 3903c3dc7a97fb897acda8acb2f6120c  libstdc++-v3/testsuite/20_util/auto_ptr/6.cc
! 6c507e057ddb202c692f550af84450c5  libstdc++-v3/testsuite/20_util/auto_ptr/7.cc
! e8c563c74e66023c69314021b13a4b4c  libstdc++-v3/testsuite/20_util/auto_ptr/assign_neg.cc
! 79a6a12441fae848b7d233fff1a49241  libstdc++-v3/testsuite/20_util/auto_ptr/requirements/explicit_instantiation/1.cc
! 74f3ef9916c9862ad9012907c4e45850  libstdc++-v3/testsuite/20_util/bad_function_call/cons_virtual_derivation.cc
! 738e41e74f3ce290e5703409c833e510  libstdc++-v3/testsuite/20_util/bad_function_call/what.cc
! 73a0eba9abfeed5a96183358c20245ce  libstdc++-v3/testsuite/20_util/bind/35569.cc
! b1a7517a68c6d715f52ca63e39ad8530  libstdc++-v3/testsuite/20_util/bind/38889.cc
! 800ff31235d9131280e6046d73db1819  libstdc++-v3/testsuite/20_util/bind/42593.cc
! 48c265d21914ef8396a7c3239f456f61  libstdc++-v3/testsuite/20_util/bind/45924.cc
! c4567c31093428a6965c938168abdcf1  libstdc++-v3/testsuite/20_util/bind/48698.cc
! 7ba56e750cd4699a9b7b80f4dcf046cc  libstdc++-v3/testsuite/20_util/bind/49058_1.cc
! 9cd769fbfb99f42b705363b68ee0a75e  libstdc++-v3/testsuite/20_util/bind/49058_2.cc
! 83d3a6ccb01b61f5e78eb7a48ea621a5  libstdc++-v3/testsuite/20_util/bind/57899.cc
! d4095340d0cac9c4b84a4a1f5306ce19  libstdc++-v3/testsuite/20_util/bind/60497.cc
! a2dc20d1bb89c92c55c5dc2bf0dc5ad2  libstdc++-v3/testsuite/20_util/bind/68912.cc
! 1aed7100604578fef837216b31c5997d  libstdc++-v3/testsuite/20_util/bind/79798.cc
! ed9478b438f2566c787c67f98086cbef  libstdc++-v3/testsuite/20_util/bind/83427.cc
! 9cd9cb31e93afff6e429d3c81bc86fc7  libstdc++-v3/testsuite/20_util/bind/all_bound.cc
! 95db69c00c77e9f0ef99c9626d249391  libstdc++-v3/testsuite/20_util/bind/conv_result.cc
! 4b826f3194ebaddcf754bac2b47fd11e  libstdc++-v3/testsuite/20_util/bind/cv_quals.cc
! 4c57d89037dd4c27ca48639681f06730  libstdc++-v3/testsuite/20_util/bind/cv_quals_2.cc
! 59c239424da80f7d294dfcdbdb5d2335  libstdc++-v3/testsuite/20_util/bind/cv_quals_3.cc
! f657b3680789a2935991857f9f841318  libstdc++-v3/testsuite/20_util/bind/is_placeholder_v.cc
! fc6b0cd5d061667e657bd03f894fc902  libstdc++-v3/testsuite/20_util/bind/move.cc
! e74cefd9164ae73c89787a2b0d42a656  libstdc++-v3/testsuite/20_util/bind/nested.cc
! 32125d297ac6f0a2e532037c78f4f617  libstdc++-v3/testsuite/20_util/bind/placeholders.cc
! 0b60d8d09f6f8c0c64fc6d80d5db7846  libstdc++-v3/testsuite/20_util/bind/ref.cc
! 8b7817b1db59facad12f1ccd1b878ec2  libstdc++-v3/testsuite/20_util/bind/ref2.cc
! 290ee502ca7472453dbf778d9c251ef3  libstdc++-v3/testsuite/20_util/bind/ref_neg.cc
! 6414e5c4467f529258fda789862533e9  libstdc++-v3/testsuite/20_util/bind/refqual.cc
! 413cf635f0fda0022ada4c25d51d3d07  libstdc++-v3/testsuite/20_util/bind/socket.cc
! 6fef8ec15d2db32209295683e020ef61  libstdc++-v3/testsuite/20_util/bool_constant/requirements.cc
! 9e52e8f50658941c212da41b4fda1d9b  libstdc++-v3/testsuite/20_util/common_type/requirements/alias_decl.cc
! c3c31ac88bad4b48a5b15b717fb79010  libstdc++-v3/testsuite/20_util/common_type/requirements/explicit_instantiation.cc
! 16e53748fd237c4025b0156b404cc6ef  libstdc++-v3/testsuite/20_util/common_type/requirements/sfinae_friendly_1.cc
! e022cdb0cc79ed43c59b17086a955b63  libstdc++-v3/testsuite/20_util/common_type/requirements/sfinae_friendly_2.cc
! 666a867f4bf95bd1bde2bc4a0a14ec82  libstdc++-v3/testsuite/20_util/common_type/requirements/typedefs-1.cc
! 3392d2af2733bd4822ed3d93467d6c14  libstdc++-v3/testsuite/20_util/common_type/requirements/typedefs-2.cc
! d13b9409559b55214e61ccc3f75e583c  libstdc++-v3/testsuite/20_util/conditional/requirements/alias_decl.cc
! a2c96d493e558421d0f4456fd2e848bd  libstdc++-v3/testsuite/20_util/conditional/requirements/explicit_instantiation.cc
! a9ae18742292665ba37e7b595e15bb05  libstdc++-v3/testsuite/20_util/conditional/requirements/typedefs.cc
! 56a5f57fbbb3804f0e0035228b68ed8a  libstdc++-v3/testsuite/20_util/decay/requirements/alias_decl.cc
! a2a0b769b91af2069a3fbf531d90bec8  libstdc++-v3/testsuite/20_util/decay/requirements/explicit_instantiation.cc
! 3ac3b10c39962746cbdf15b183f0e155  libstdc++-v3/testsuite/20_util/decay/requirements/typedefs.cc
! 82ead4859cf1504cc0749b0fac8b490c  libstdc++-v3/testsuite/20_util/declval/requirements/1.cc
! 02c09087999522c774701e76cf8d8c98  libstdc++-v3/testsuite/20_util/declval/requirements/1_neg.cc
! 8c64175afb8885fe1bcf064c55009a51  libstdc++-v3/testsuite/20_util/default_delete/48631_neg.cc
! 6166cef73453d4f031458134a5dc2c25  libstdc++-v3/testsuite/20_util/default_delete/cons/constexpr.cc
! c2c9d805cc089b21c1b5ed31189e3678  libstdc++-v3/testsuite/20_util/default_delete/void_neg.cc
! 07f92975d024239930c9d2d9a3ffbce2  libstdc++-v3/testsuite/20_util/duration/arithmetic/1.cc
! fef0c07bab79322d6cf97a1bce4125e9  libstdc++-v3/testsuite/20_util/duration/arithmetic/2.cc
! d4c0f93fd6762408de4acdfb6146f20a  libstdc++-v3/testsuite/20_util/duration/arithmetic/58850.cc
! 5e15902c2b6449c02fe1c66b15cdb5c7  libstdc++-v3/testsuite/20_util/duration/arithmetic/constexpr.cc
! 18ffb8a9d80dfe22b9cb234cd3fb5b83  libstdc++-v3/testsuite/20_util/duration/arithmetic/constexpr_c++17.cc
! d7e73b24f735edbfbf1cc30bd57626fe  libstdc++-v3/testsuite/20_util/duration/arithmetic/dr2020.cc
! b07aa1b81cf178e0aca8e278fe00083b  libstdc++-v3/testsuite/20_util/duration/arithmetic/dr934-1.cc
! 67e3ca60f3474e117e0375487a2ecae9  libstdc++-v3/testsuite/20_util/duration/arithmetic/dr934-2.cc
! 5bf4440978e81b0a12be92e282019c7b  libstdc++-v3/testsuite/20_util/duration/comparison_operators/1.cc
! bc3b3b44b8bada5bf41893e07b9e5e99  libstdc++-v3/testsuite/20_util/duration/comparison_operators/constexpr.cc
! 67538e3b62846584dc5c5bdd810bb407  libstdc++-v3/testsuite/20_util/duration/cons/1.cc
! 2e0ee795dece12c15712c5774417afdb  libstdc++-v3/testsuite/20_util/duration/cons/1_neg.cc
! ec8b4d75eb29de191b3f594a613c9dcb  libstdc++-v3/testsuite/20_util/duration/cons/2.cc
! ea1cdeb76e38c810fb37864aa2c33aeb  libstdc++-v3/testsuite/20_util/duration/cons/54025.cc
! 507a0568ae5e560981e716bba98e98f2  libstdc++-v3/testsuite/20_util/duration/cons/constexpr.cc
! fbaa937edc0105b6ee5eaf81bf887591  libstdc++-v3/testsuite/20_util/duration/cons/dr1177.cc
! be33cee2a34fe60ba253646b46743032  libstdc++-v3/testsuite/20_util/duration/cons/dr974_neg.cc
! 12ed01ca34e25e6c15b05ab5e74dfef2  libstdc++-v3/testsuite/20_util/duration/literals/61166.cc
! e2a3457e5da5470658140011c8ffb7ee  libstdc++-v3/testsuite/20_util/duration/literals/65499.cc
  f11b5a7d64db419bf2305c0f433c638b  libstdc++-v3/testsuite/20_util/duration/literals/ns_detail.cc
! e44db0477aa210ca528f818e8dad32d7  libstdc++-v3/testsuite/20_util/duration/literals/range.cc
! 4df193519da56bb3b9abe12b08236281  libstdc++-v3/testsuite/20_util/duration/literals/types.cc
! 2e440747233ff3c0d09a865a6f48958d  libstdc++-v3/testsuite/20_util/duration/literals/values.cc
! 8b9ebb830e3f48a3baf33c09de7b0906  libstdc++-v3/testsuite/20_util/duration/requirements/constexpr_functions.cc
! e5e437defddfd8911d1ccbe35602afdc  libstdc++-v3/testsuite/20_util/duration/requirements/explicit_instantiation/explicit_instantiation.cc
! 90f0233839e64f7055fa049d88f241c0  libstdc++-v3/testsuite/20_util/duration/requirements/sfinae_friendly_1.cc
! 99d6cba545005b1341787e1121a0561e  libstdc++-v3/testsuite/20_util/duration/requirements/treat_as_floating_point_v.cc
! 941b809bab5b191fec2592699b3327dd  libstdc++-v3/testsuite/20_util/duration/requirements/typedefs_neg1.cc
! 3ef179f21c050fe9e23791c6b58234bb  libstdc++-v3/testsuite/20_util/duration/requirements/typedefs_neg2.cc
! 44b8fc3f48d51c00dcfc3b4db3fd5218  libstdc++-v3/testsuite/20_util/duration/requirements/typedefs_neg3.cc
! c1e33872f353dc0e8017d5e12380989e  libstdc++-v3/testsuite/20_util/duration_cast/constexpr.cc
! ee440c95dd00b8bb567bc4f85e61898f  libstdc++-v3/testsuite/20_util/duration_cast/rounding.cc
! b25437bf4feabc355d0f15d75780d8a9  libstdc++-v3/testsuite/20_util/enable_if/requirements/alias_decl.cc
! 83e13fc8a81e27c61f6f0b778a9f379b  libstdc++-v3/testsuite/20_util/enable_if/requirements/explicit_instantiation.cc
! 468a2d0c445aa90983491aa38c340a8c  libstdc++-v3/testsuite/20_util/enable_if/requirements/typedefs.cc
! 6b25fa5aa8feb22cc33639556537c21a  libstdc++-v3/testsuite/20_util/enable_if/requirements/typedefs_neg.cc
! a0b2cd382a67269f6784e9a92775ed89  libstdc++-v3/testsuite/20_util/enable_shared_from_this/56383.cc
! 094c11c1ade6b8e8b3b4348e36e34535  libstdc++-v3/testsuite/20_util/enable_shared_from_this/cons/constexpr.cc
! 5f329f1bff01d939f0cfe727b9714186  libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/assign.cc
! d38906336cd181e8af40647671dcbbf0  libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/const.cc
! 22ffbbeaffa7a28806fcd657b5ab81ff  libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/reinit.cc
! 49064d2fcad440b221bdc12b6e72f8e2  libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/unique_ptr.cc
! 59b0aa1d6b5b58d1ed0d317186232880  libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/weak_from_this.cc
! a41cf5be5b44a09d4d9b2f3287f84c80  libstdc++-v3/testsuite/20_util/enable_shared_from_this/requirements/explicit_instantiation.cc
! d80bc49dad493e4559d09c00fe76a5b9  libstdc++-v3/testsuite/20_util/exchange/1.cc
! 6e100ca13d7cc16880ff1febad052df0  libstdc++-v3/testsuite/20_util/extent/requirements/explicit_instantiation.cc
! bfce868a3f62dd8dcc602dd401c33099  libstdc++-v3/testsuite/20_util/extent/requirements/typedefs.cc
! f4039e6e610942d5e0bb26c2983ef732  libstdc++-v3/testsuite/20_util/extent/value.cc
! ae5319181ddbcca4144f6694000cbaa5  libstdc++-v3/testsuite/20_util/forward/1.cc
! 940df00b21c5e80e0015283d27ba4c7c  libstdc++-v3/testsuite/20_util/forward/1_neg.cc
! 77510315e7c763cf002495ad7c42a242  libstdc++-v3/testsuite/20_util/forward/a.cc
! 1e9bc056c77ae3e372e5df8d73da7007  libstdc++-v3/testsuite/20_util/forward/b.cc
! 2b90934bdbc82315041263c1eca65219  libstdc++-v3/testsuite/20_util/forward/c_neg.cc
! c2017f11fb8d317afb9ee91a276fac0e  libstdc++-v3/testsuite/20_util/forward/d.cc
! db025ee2ae2e9a3bbb4739f10c804b10  libstdc++-v3/testsuite/20_util/forward/e.cc
! 6cb5cf23a93fb9beb82e55af249b38cb  libstdc++-v3/testsuite/20_util/forward/f_neg.cc
! 319d52e35f8140bd4fb888afb3181132  libstdc++-v3/testsuite/20_util/forward/requirements/explicit_instantiation.cc
! 9a1c6443da54b3f7cbcf3a75f6a5810c  libstdc++-v3/testsuite/20_util/function/1.cc
! a02a6048987256ef6e37e37684388271  libstdc++-v3/testsuite/20_util/function/10.cc
! 63746c52f44ab4f72c9dc224deeccc27  libstdc++-v3/testsuite/20_util/function/2.cc
! 62183fae0b3d9e81832511d3b28e4649  libstdc++-v3/testsuite/20_util/function/3.cc
! 9835eb2ec7db78bf478817f8fc8fc8ff  libstdc++-v3/testsuite/20_util/function/4.cc
! 4d36090302158ea659f3391245476252  libstdc++-v3/testsuite/20_util/function/43397.cc
! f26655a576a72af08a36b73bfd8ad5df  libstdc++-v3/testsuite/20_util/function/48541.cc
! 90513b315acb233ec271c46bd2cdda72  libstdc++-v3/testsuite/20_util/function/5.cc
! 64c09b124cee58512ff52bda3fc15a88  libstdc++-v3/testsuite/20_util/function/58569.cc
! 5ca588f073c842299be456cb4ebed775  libstdc++-v3/testsuite/20_util/function/6.cc
! b59c5c86fe99f83aaad18a524766ff36  libstdc++-v3/testsuite/20_util/function/60594.cc
! f74497159f291c51c229873bb27c64d0  libstdc++-v3/testsuite/20_util/function/63840.cc
! 50d62d9d90f1b285a95f4676be48c183  libstdc++-v3/testsuite/20_util/function/65760.cc
! 8b4b1f4a6c1fd8dc953b617b6fb6ad91  libstdc++-v3/testsuite/20_util/function/68995.cc
! bdf59d86f235cdb4d9180e3c38cfcd27  libstdc++-v3/testsuite/20_util/function/69222.cc
! 551bffdd5b3e6bc4b39cd0ec91ffeb93  libstdc++-v3/testsuite/20_util/function/7.cc
! 24566b658c796c870536868b49d74e86  libstdc++-v3/testsuite/20_util/function/77322.cc
! 701c6789ff16d117bd39a157c0323971  libstdc++-v3/testsuite/20_util/function/8.cc
! c9b98d2cfe48d08c5d1eb54064474df3  libstdc++-v3/testsuite/20_util/function/9.cc
! f4c68ea400646cebd00fe7ca87e5d388  libstdc++-v3/testsuite/20_util/function/assign/move.cc
! 5720317948d03dc94e23ddfb362bcd1e  libstdc++-v3/testsuite/20_util/function/assign/move_target.cc
! 2b0dfe063fb7a135547961f55cc09dae  libstdc++-v3/testsuite/20_util/function/cmp/cmp_neg.cc
! b3d2bd9b3ec8af0c346ec882eead4c76  libstdc++-v3/testsuite/20_util/function/cons/55320.cc
! 48857d81bffa611465c8a1db4a0d0af6  libstdc++-v3/testsuite/20_util/function/cons/57465.cc
! 8815170f2efad4c3dfb166cddcad5a48  libstdc++-v3/testsuite/20_util/function/cons/72820.cc
! 66679cac93d432a7873f047396637771  libstdc++-v3/testsuite/20_util/function/cons/addressof.cc
! 6663660a4fe4b2c3cc922d292ceb9df0  libstdc++-v3/testsuite/20_util/function/cons/callable.cc
! 32bfbe6a6f33c913abf62f893ed046ff  libstdc++-v3/testsuite/20_util/function/cons/deduction.cc
! 75fb1c9a688f12e788a4c8740a667824  libstdc++-v3/testsuite/20_util/function/cons/move.cc
! c5b6539889399166acc61b8eefa409d3  libstdc++-v3/testsuite/20_util/function/cons/move_target.cc
! 6f67f9938baa1124b05ff708ecf099bf  libstdc++-v3/testsuite/20_util/function/cons/refqual.cc
! 06987779df947f6997a54d69509cf14f  libstdc++-v3/testsuite/20_util/function/invoke/forwarding.cc
! baef37e2d6d0412e2fdb9165a2759665  libstdc++-v3/testsuite/20_util/function/invoke/move_only.cc
! 5268585cf36fd1df633bfe2e41349154  libstdc++-v3/testsuite/20_util/function/null_pointer_comparisons.cc
! 6c240117592beba89e442b9ffab1620e  libstdc++-v3/testsuite/20_util/function/requirements/explicit_instantiation.cc
! 111e43407d5c6a7471de4539d8ffa919  libstdc++-v3/testsuite/20_util/function_objects/binders/1.cc
! 592bb4e5eff31ba8489c84e60c7697ba  libstdc++-v3/testsuite/20_util/function_objects/binders/3113.cc
! d0853a601a1365cc6960113437dd6fcb  libstdc++-v3/testsuite/20_util/function_objects/comparisons.cc
! d3ee5768408047b6bfb67f23c76e39d7  libstdc++-v3/testsuite/20_util/function_objects/comparisons_void.cc
! 2637c92e067f88095caab014c8b44cb6  libstdc++-v3/testsuite/20_util/function_objects/constexpr.cc
! ca4e5650acb4d79d0df0b7abd03fb77d  libstdc++-v3/testsuite/20_util/function_objects/dr660.cc
! da838a2e086d6d48714159c3e1827e7b  libstdc++-v3/testsuite/20_util/function_objects/invoke/1.cc
! 0bbdcfd05797349bae690e3d6c2b6d3c  libstdc++-v3/testsuite/20_util/function_objects/invoke/59768.cc
! 3db6a07e4fa27fd9f755e52c6ae06a95  libstdc++-v3/testsuite/20_util/function_objects/invoke/ref_ext.cc
! 73814c464196186c5215f63c23c84c89  libstdc++-v3/testsuite/20_util/function_objects/mem_fn/55463.cc
! a7d88c111bcc34290add1e25e3b0e7ac  libstdc++-v3/testsuite/20_util/function_objects/mem_fn/55908.cc
! fda970289a618f86c009af0a7bd6fbda  libstdc++-v3/testsuite/20_util/function_objects/mem_fn/68982.cc
! 0073ef6e0232a96ece2d42f733154ec4  libstdc++-v3/testsuite/20_util/function_objects/mem_fn/80478.cc
! 5016b4c289c3db4b02510bc0b8698dff  libstdc++-v3/testsuite/20_util/function_objects/mem_fn/adl.cc
! 48340418d3167779e8b6284882765b49  libstdc++-v3/testsuite/20_util/function_objects/mem_fn/forward.cc
! 4662c5d1a8bd3df864321ccc3f0da527  libstdc++-v3/testsuite/20_util/function_objects/mem_fn/refqual.cc
! f7f330564f815c31693ad0b18b33f67b  libstdc++-v3/testsuite/20_util/function_objects/not_fn/1.cc
! 5e3c3ef1b2223f89f0cbacbdff9d203d  libstdc++-v3/testsuite/20_util/function_objects/searchers.cc
! ea6714838190e446cb75d29de67ad44d  libstdc++-v3/testsuite/20_util/has_unique_object_representations/requirements/explicit_instantiation.cc
! a2bd8dff1afc22fe095906f947a4c52e  libstdc++-v3/testsuite/20_util/has_unique_object_representations/requirements/typedefs.cc
! 9e6f0782abee0f4e7f914ce070f2c52a  libstdc++-v3/testsuite/20_util/has_unique_object_representations/value.cc
! 97702c6fa7c16b976c67b9619713d235  libstdc++-v3/testsuite/20_util/has_virtual_destructor/requirements/explicit_instantiation.cc
! 6e5d7727f92af70d16ef6f9b6c56720a  libstdc++-v3/testsuite/20_util/has_virtual_destructor/requirements/typedefs.cc
! 40e88b2214cb93945c3eb42786f3803c  libstdc++-v3/testsuite/20_util/has_virtual_destructor/value.cc
! 1ae2c9530ba77b9255c45abe5c4dd946  libstdc++-v3/testsuite/20_util/hash/52931.cc
! f9c0219be474f886caae6dbb3050d23a  libstdc++-v3/testsuite/20_util/hash/60970.cc
! ce939b5d121728a1244f095cc02d56b5  libstdc++-v3/testsuite/20_util/hash/chi2_q_bit_flip_set.cc
! 1a69b1da2430454e96314879314f0edd  libstdc++-v3/testsuite/20_util/hash/chi2_q_bit_string_set.cc
! c862e5af9d439a006f45873e3e423404  libstdc++-v3/testsuite/20_util/hash/chi2_q_document_words.cc
! b6b6fe09961db8d9270abd507f1e1892  libstdc++-v3/testsuite/20_util/hash/chi2_q_numeric_pattern_set.cc
! 177fa036ede544582b60654ce695a564  libstdc++-v3/testsuite/20_util/hash/chi2_q_uniform_random.cc
! e01788f6f244134adcd6a002834cb667  libstdc++-v3/testsuite/20_util/hash/chi2_quality.h
! c23c3a2e377e73bdee904916d298ba13  libstdc++-v3/testsuite/20_util/hash/operators/size_t.cc
! 8630b289c558195985b7e035357eccb0  libstdc++-v3/testsuite/20_util/hash/quality.cc
! 63a1dc8e3fd5c36bea36b339e1c1bc99  libstdc++-v3/testsuite/20_util/hash/requirements/explicit_instantiation.cc
! c122850dd822299b6617e8bfeacfd275  libstdc++-v3/testsuite/20_util/headers/cstdlib/functions_std.cc
! 31016fa07dba935ee23f275b59594e34  libstdc++-v3/testsuite/20_util/headers/cstring/functions_std.cc
! c14bc6b89eb132901b59ffb3ee483318  libstdc++-v3/testsuite/20_util/headers/cstring/macros.cc
! a532d58be897978448f869188454998f  libstdc++-v3/testsuite/20_util/headers/cstring/types_std.cc
! 39e28f2271fd723d73ae23dca079b348  libstdc++-v3/testsuite/20_util/headers/ctime/functions_std.cc
! aa831ba3b4f42bd8a421e0b5bc23e0c3  libstdc++-v3/testsuite/20_util/headers/ctime/macros.cc
! 578a970057ac6d7470906083ae9b1fec  libstdc++-v3/testsuite/20_util/headers/ctime/types_std.cc
! 9d12f7c842b2c8043babbc8b0228002f  libstdc++-v3/testsuite/20_util/headers/functional/synopsis.cc
! 3064902ffff33d3da82f338a52ce1a6e  libstdc++-v3/testsuite/20_util/headers/functional/types_std_c++0x.cc
! f4bf7fa5860bd32946ee89518e5fefc4  libstdc++-v3/testsuite/20_util/headers/functional/using_namespace_std_placeholders.cc
! 7ee532861fb33bf047939d50b0049db0  libstdc++-v3/testsuite/20_util/headers/memory/synopsis.cc
! 66ac722a1ba29b882bcdc06a5ab30e5a  libstdc++-v3/testsuite/20_util/headers/memory/types_std_c++0x.cc
! e662a16f26b0f67d796eebdee1df00bc  libstdc++-v3/testsuite/20_util/headers/type_traits/std_c++0x_neg.cc
! e4d515d66d7aa1ef85c8c9e93f3b4b05  libstdc++-v3/testsuite/20_util/headers/type_traits/types_std_c++0x.cc
! a9c432f70ba80d88dede37601b5b49fa  libstdc++-v3/testsuite/20_util/headers/type_traits/types_std_c++0x_neg.cc
! 8e27f378aec1230945ae8dbf57d24555  libstdc++-v3/testsuite/20_util/headers/utility/synopsis.cc
! 295957113307a0c95903e6f5e68033a5  libstdc++-v3/testsuite/20_util/headers/utility/using_namespace_std_rel_ops.cc
! 90055ef4b1263f9da765cb66fd498346  libstdc++-v3/testsuite/20_util/in_place/requirements.cc
! eb80a4e1233f2a903990dd6107a47747  libstdc++-v3/testsuite/20_util/integer_sequence/intseq.cc
! 5428ea6d86363c993ba7117e59b056ac  libstdc++-v3/testsuite/20_util/integer_sequence/requirements/typedefs.cc
! 72725e9ba02f42ef86a55b400116e741  libstdc++-v3/testsuite/20_util/integral_constant/call_operator.cc
! ce07a8e34b1705531deb39ba6247c882  libstdc++-v3/testsuite/20_util/integral_constant/operator_value_type.cc
! 147887a09a14244fe35c907142327a03  libstdc++-v3/testsuite/20_util/integral_constant/requirements/constexpr_data.cc
! 5f02602da700b2ef0ff56cdc4a495f10  libstdc++-v3/testsuite/20_util/integral_constant/requirements/explicit_instantiation.cc
! 85ea3446b6161f4d5ab52bf0ca2fb8e9  libstdc++-v3/testsuite/20_util/integral_constant/requirements/typedefs.cc
! 03e6631b77f7867b8aa75e76955efdee  libstdc++-v3/testsuite/20_util/integral_constant/static_definition.cc
! 3cbc6fb845a1dd87ca3d7b85f3324d01  libstdc++-v3/testsuite/20_util/integral_constant/true_false_type_typedefs.cc
! 6f04167b1bc110e0a84708a352c8e235  libstdc++-v3/testsuite/20_util/integral_constant/true_false_value.cc
! 9962f054d653265fd2d2220fe6c3842f  libstdc++-v3/testsuite/20_util/is_abstract/requirements/explicit_instantiation.cc
! 168d040014dd173e512df094fb2ade23  libstdc++-v3/testsuite/20_util/is_abstract/requirements/typedefs.cc
! 2361a224e835ce2f5af75cf3a7be826f  libstdc++-v3/testsuite/20_util/is_abstract/value.cc
! 757b7bdabcdeea2381bf65e2d911c34d  libstdc++-v3/testsuite/20_util/is_aggregate/requirements/explicit_instantiation.cc
! 61f329597ee9ab49ca0b2d13dfd0cb02  libstdc++-v3/testsuite/20_util/is_aggregate/requirements/typedefs.cc
! 51b91fe42acae36a6e0f3c10099be32a  libstdc++-v3/testsuite/20_util/is_aggregate/value.cc
! eca874b74309dd9f65907edeaf207202  libstdc++-v3/testsuite/20_util/is_arithmetic/requirements/explicit_instantiation.cc
! d7428349b72a915fef947faedaffa322  libstdc++-v3/testsuite/20_util/is_arithmetic/requirements/typedefs.cc
! ef0ae3408b807d61f68d949031fe302c  libstdc++-v3/testsuite/20_util/is_arithmetic/value.cc
! 99198f9a45651532e2b3f735e080f99b  libstdc++-v3/testsuite/20_util/is_array/requirements/explicit_instantiation.cc
! 6bf4e89f634b8aaff623d1f2feafff20  libstdc++-v3/testsuite/20_util/is_array/requirements/typedefs.cc
! ee69c9b78e296fe44e434f272b0e4838  libstdc++-v3/testsuite/20_util/is_array/value.cc
! 1c817a657561b42614815102869417de  libstdc++-v3/testsuite/20_util/is_assignable/requirements/explicit_instantiation.cc
! 44159d7fe41826011141164eb8cd8aa0  libstdc++-v3/testsuite/20_util/is_assignable/requirements/typedefs.cc
! 0efeaca93227ade8af2489f42f258ea2  libstdc++-v3/testsuite/20_util/is_assignable/value.cc
! 5e2a5ff394419108c0d713b99b2f67e0  libstdc++-v3/testsuite/20_util/is_base_of/requirements/explicit_instantiation.cc
! 1c6dee175bfe001d0f7cb1086b02d878  libstdc++-v3/testsuite/20_util/is_base_of/requirements/typedefs.cc
! f0f0e819ee45879a7280c3fc1b358f2b  libstdc++-v3/testsuite/20_util/is_base_of/value.cc
! e091ceb0beac1fb99e93c933093b2ca8  libstdc++-v3/testsuite/20_util/is_class/requirements/explicit_instantiation.cc
! e02e6e4afcdbb21d097b9218a6ca49ad  libstdc++-v3/testsuite/20_util/is_class/requirements/typedefs.cc
! a6c991e4116b91aad3fbf9f88ed1460d  libstdc++-v3/testsuite/20_util/is_class/value.cc
! 64d6b021363fac21ba9eabb35f4c449e  libstdc++-v3/testsuite/20_util/is_compound/requirements/explicit_instantiation.cc
! ade0ef9815cfe45f9fd95d877f7fc814  libstdc++-v3/testsuite/20_util/is_compound/requirements/typedefs.cc
! 7ae3de3ab331f1b40383e19a3d89d612  libstdc++-v3/testsuite/20_util/is_compound/value.cc
! 973f128fc0b4cc8a4ac74cba1406ffcd  libstdc++-v3/testsuite/20_util/is_const/requirements/explicit_instantiation.cc
! 443b9f0c46f7c2857ea46655d8326844  libstdc++-v3/testsuite/20_util/is_const/requirements/typedefs.cc
! 625af2af8e17d632757e82d98c1fe3ce  libstdc++-v3/testsuite/20_util/is_const/value.cc
! e00101cbccc23a10106cc72d4ef635ba  libstdc++-v3/testsuite/20_util/is_constructible/51185.cc
! 3e7a26e09e8f71528a8a28479fd36895  libstdc++-v3/testsuite/20_util/is_constructible/77395.cc
! b31f08b625885047589b259254ed70ea  libstdc++-v3/testsuite/20_util/is_constructible/requirements/explicit_instantiation.cc
! de596df124db8f86c65cdcc5c5cc96af  libstdc++-v3/testsuite/20_util/is_constructible/requirements/typedefs.cc
! 44ff85933709a21fb413d541c299274d  libstdc++-v3/testsuite/20_util/is_constructible/value-2.cc
! dcf9477af04b8bfb7abc6f0434a66ebe  libstdc++-v3/testsuite/20_util/is_constructible/value.cc
! 3a3f272d9be33811356901803f00a01f  libstdc++-v3/testsuite/20_util/is_convertible/requirements/explicit_instantiation.cc
! 5fcd5e63c63f25af36177cf2208aacd6  libstdc++-v3/testsuite/20_util/is_convertible/requirements/typedefs.cc
! 27289ff616f23d77576ad2c6db021012  libstdc++-v3/testsuite/20_util/is_convertible/value.cc
! 1b6cc55c6e8b9f3994b2c7524cc2f7d5  libstdc++-v3/testsuite/20_util/is_copy_assignable/requirements/explicit_instantiation.cc
! 23c264b2499b8f52799c84c468c6a14f  libstdc++-v3/testsuite/20_util/is_copy_assignable/requirements/typedefs.cc
! b80fd211dbbabf019448545eebf78b86  libstdc++-v3/testsuite/20_util/is_copy_assignable/value.cc
! 81f47a013a98271626aa5c793797eb4d  libstdc++-v3/testsuite/20_util/is_copy_constructible/requirements/explicit_instantiation.cc
! 3085e012d7ed30d9accd481393a4c95a  libstdc++-v3/testsuite/20_util/is_copy_constructible/requirements/typedefs.cc
! 5a8846f0e7f0e5fb0e280066f616a298  libstdc++-v3/testsuite/20_util/is_copy_constructible/value.cc
! 698cd5fd171d7a5bf29bb59923263c2d  libstdc++-v3/testsuite/20_util/is_default_constructible/requirements/explicit_instantiation.cc
! dcee9f8e76ad6fa165bd95e294206d5b  libstdc++-v3/testsuite/20_util/is_default_constructible/requirements/typedefs.cc
! 515be9a00384328663cc089f09ac585c  libstdc++-v3/testsuite/20_util/is_default_constructible/value.cc
! 62ffe18d572853b8ca6632efd9987965  libstdc++-v3/testsuite/20_util/is_destructible/requirements/explicit_instantiation.cc
! 743cda894c3d5a7d148fe616de53134c  libstdc++-v3/testsuite/20_util/is_destructible/requirements/typedefs.cc
! 4cc7c7f53c58d4062281d2753df7112e  libstdc++-v3/testsuite/20_util/is_destructible/value.cc
! bfa939cf93eb80f0447125fc17946386  libstdc++-v3/testsuite/20_util/is_empty/requirements/explicit_instantiation.cc
! 5a6ba41cc4b84910aac235313ab6fa92  libstdc++-v3/testsuite/20_util/is_empty/requirements/typedefs.cc
! 72b8212f7e971e832fc5c3fa0b7e9e5e  libstdc++-v3/testsuite/20_util/is_empty/value.cc
! 4529f4889d846070463161cca72db419  libstdc++-v3/testsuite/20_util/is_enum/requirements/explicit_instantiation.cc
! 28af1ddd019fc3f8a96d889a7cd8ead5  libstdc++-v3/testsuite/20_util/is_enum/requirements/typedefs.cc
! 4747968b2c4dae234974024aed904f16  libstdc++-v3/testsuite/20_util/is_enum/value.cc
! a0ed35380c3159227e910c478670283e  libstdc++-v3/testsuite/20_util/is_final/requirements/explicit_instantiation.cc
! b97f155739704bfd9fd36477270a2874  libstdc++-v3/testsuite/20_util/is_final/requirements/typedefs.cc
! f28c07f5234f268f7e9181d29c17dcb0  libstdc++-v3/testsuite/20_util/is_final/value.cc
! a7c8333c5a8d63cb734572697e1b1764  libstdc++-v3/testsuite/20_util/is_floating_point/requirements/explicit_instantiation.cc
! ea6aaba1979b9e94355cac6c433f0c3c  libstdc++-v3/testsuite/20_util/is_floating_point/requirements/typedefs.cc
! 91db1e9bbc0ae3d579ff201f34b5d587  libstdc++-v3/testsuite/20_util/is_floating_point/value.cc
! e0f62bb98b42fc4b48a1a7e61e4c53ae  libstdc++-v3/testsuite/20_util/is_function/24808.cc
! 3a3181833d7fc3e5561960d671ed389d  libstdc++-v3/testsuite/20_util/is_function/35637.cc
! 51a638edfa19fe7f2909b8cd830561b9  libstdc++-v3/testsuite/20_util/is_function/requirements/explicit_instantiation.cc
! 1fbcb3f9bd2f420b664b8817920a742b  libstdc++-v3/testsuite/20_util/is_function/requirements/typedefs.cc
! 9821e44a13d9cacb70aa721b3bd973f9  libstdc++-v3/testsuite/20_util/is_function/value.cc
! c4f54c4ed43aa0dbeb510aaed7ed8c88  libstdc++-v3/testsuite/20_util/is_fundamental/requirements/explicit_instantiation.cc
! 7d4771a11666b8954223478c0f68371b  libstdc++-v3/testsuite/20_util/is_fundamental/requirements/typedefs.cc
! 24dd004bd419a099413050ca0e57c678  libstdc++-v3/testsuite/20_util/is_fundamental/value.cc
! 993368b0ecc41accce1e266c17c3cfd0  libstdc++-v3/testsuite/20_util/is_implicitly_default_constructible/requirements/explicit_instantiation.cc
! e321c7d75e65ce1b3fae14a5ac430747  libstdc++-v3/testsuite/20_util/is_implicitly_default_constructible/requirements/typedefs.cc
! bce7d1e533e301d865972859df3e0b2c  libstdc++-v3/testsuite/20_util/is_implicitly_default_constructible/value.cc
! a343109d47b57c764490ac4271a8b30f  libstdc++-v3/testsuite/20_util/is_integral/requirements/explicit_instantiation.cc
! 1e96e329f78f9f3ed47b401c8ef9f50f  libstdc++-v3/testsuite/20_util/is_integral/requirements/typedefs.cc
! b83bf3c7cbbf8f9e088312011e111d43  libstdc++-v3/testsuite/20_util/is_integral/value.cc
! 4b04aa5e575ee88e89eeb77c8698bc3a  libstdc++-v3/testsuite/20_util/is_invocable/83395.cc
! 2ccc44d2d0db07b53cbe4bb341fc0cde  libstdc++-v3/testsuite/20_util/is_invocable/requirements/explicit_instantiation.cc
! 14548024d83ed1ae7bb7f3d1e3731aec  libstdc++-v3/testsuite/20_util/is_invocable/requirements/explicit_instantiation_ext.cc
! b3f16906dc22b94e2f0b6bb144c04360  libstdc++-v3/testsuite/20_util/is_invocable/requirements/typedefs.cc
! e5d4e2a63ab94af5ae7fc5afac3b2b76  libstdc++-v3/testsuite/20_util/is_invocable/requirements/typedefs_ext.cc
! 58a41ffaae4fd39533ba18d6a6fee68d  libstdc++-v3/testsuite/20_util/is_invocable/value.cc
! 043d8598874f8dfc7e8359debccf882f  libstdc++-v3/testsuite/20_util/is_invocable/value_ext.cc
! 6728c3c6cb4cbeecadac6c9dc8b7b5e1  libstdc++-v3/testsuite/20_util/is_literal_type/requirements/explicit_instantiation.cc
! f77bc0d6708e7160b1972ba5dc1b117b  libstdc++-v3/testsuite/20_util/is_literal_type/requirements/typedefs.cc
! 73e59a53a035a3d48823c632710a5fea  libstdc++-v3/testsuite/20_util/is_literal_type/value.cc
! 6b7cc4fd94b118c561a2c4fa8f95bbce  libstdc++-v3/testsuite/20_util/is_lvalue_reference/requirements/explicit_instantiation.cc
! 3416cc1a594fb1abb0e646bcfb8208c0  libstdc++-v3/testsuite/20_util/is_lvalue_reference/requirements/typedefs.cc
! 35f78448e750f0f15aa89d8efbba7fef  libstdc++-v3/testsuite/20_util/is_lvalue_reference/value.cc
! 2e9eb3818ca9c86bf54824dc8fc97cff  libstdc++-v3/testsuite/20_util/is_member_function_pointer/requirements/explicit_instantiation.cc
! e4f6f45769906c2f200e4754fad280e3  libstdc++-v3/testsuite/20_util/is_member_function_pointer/requirements/typedefs.cc
! 4668930cffe254447f18ddf2b7ff089f  libstdc++-v3/testsuite/20_util/is_member_function_pointer/value.cc
! 404b5db3a6be61fd3d9a096c0c962a87  libstdc++-v3/testsuite/20_util/is_member_object_pointer/requirements/explicit_instantiation.cc
! 6ae6f444b3a46acb74f26734b2ff3f59  libstdc++-v3/testsuite/20_util/is_member_object_pointer/requirements/typedefs.cc
! e87585bb6839498bb227099e83fa5a74  libstdc++-v3/testsuite/20_util/is_member_object_pointer/value.cc
! 1997070b9bcd186ddeec0833144bcbfa  libstdc++-v3/testsuite/20_util/is_member_pointer/requirements/explicit_instantiation.cc
! 73d4aa3259b05528e9361ea6683ec5ab  libstdc++-v3/testsuite/20_util/is_member_pointer/requirements/typedefs.cc
! fce2fae5af9efbfde722897008fefbf6  libstdc++-v3/testsuite/20_util/is_member_pointer/value.cc
! 06bb755443e267bccf835acddbc5a351  libstdc++-v3/testsuite/20_util/is_move_assignable/requirements/explicit_instantiation.cc
! ee401f655ce1d4ea9674c6482ebc0b07  libstdc++-v3/testsuite/20_util/is_move_assignable/requirements/typedefs.cc
! 6c0302012dcb7f5963a41aef86a1e5af  libstdc++-v3/testsuite/20_util/is_move_assignable/value.cc
! 90d65dc06165bbf874380ff86cd1be87  libstdc++-v3/testsuite/20_util/is_move_constructible/requirements/explicit_instantiation.cc
! 672e2486b073f703cd018e623ff338b7  libstdc++-v3/testsuite/20_util/is_move_constructible/requirements/typedefs.cc
! 0adb02aaf9986f60bac67b73a67154ac  libstdc++-v3/testsuite/20_util/is_move_constructible/value.cc
! 9cad84115411052de05379efd2d40fc6  libstdc++-v3/testsuite/20_util/is_nothrow_assignable/requirements/explicit_instantiation.cc
! 2fd83de599f7786aeba9c803a3130c21  libstdc++-v3/testsuite/20_util/is_nothrow_assignable/requirements/typedefs.cc
! 1a1e6ec2c5843e53396a6f23b105cac0  libstdc++-v3/testsuite/20_util/is_nothrow_assignable/value.cc
! 221d261cca888f7b6fe910ced86b7fc6  libstdc++-v3/testsuite/20_util/is_nothrow_constructible/requirements/explicit_instantiation.cc
! bb1933e37aedaf1ddfa3da33a2ef69cc  libstdc++-v3/testsuite/20_util/is_nothrow_constructible/requirements/typedefs.cc
! 71bd40c6c9ed78c4efea4cdd3a9eb173  libstdc++-v3/testsuite/20_util/is_nothrow_constructible/value.cc
! 47797df9313df79232372224da0da436  libstdc++-v3/testsuite/20_util/is_nothrow_copy_assignable/requirements/explicit_instantiation.cc
! 25f616c3cf87acbaf140d9459040ac5b  libstdc++-v3/testsuite/20_util/is_nothrow_copy_assignable/requirements/typedefs.cc
! 494914199c5115971617f75b9cd744c8  libstdc++-v3/testsuite/20_util/is_nothrow_copy_assignable/value.cc
! c5e81d70d82c68c2cf349d2910a56c9a  libstdc++-v3/testsuite/20_util/is_nothrow_copy_constructible/requirements/explicit_instantiation.cc
! cb7138718159307736af57d4528b4d3e  libstdc++-v3/testsuite/20_util/is_nothrow_copy_constructible/requirements/typedefs.cc
! 6c9aeb93ff50742252949fcd2b27abc1  libstdc++-v3/testsuite/20_util/is_nothrow_copy_constructible/value.cc
! 6c0ea9912d15b48bfd1733bd851219f5  libstdc++-v3/testsuite/20_util/is_nothrow_default_constructible/requirements/explicit_instantiation.cc
! 8f739c24a2667bef1fc1f0e6bc8d27f2  libstdc++-v3/testsuite/20_util/is_nothrow_default_constructible/requirements/typedefs.cc
! 6a5056459cd56a0bfeec8eb748bfd5a1  libstdc++-v3/testsuite/20_util/is_nothrow_default_constructible/value.cc
! 68cfe69a928a800941d411f38c2166e4  libstdc++-v3/testsuite/20_util/is_nothrow_destructible/requirements/explicit_instantiation.cc
! b5675be4b6431593fa997cfafc5ad1fe  libstdc++-v3/testsuite/20_util/is_nothrow_destructible/requirements/typedefs.cc
! 838043394e6cb7442b78937cae9eae9b  libstdc++-v3/testsuite/20_util/is_nothrow_destructible/value.cc
! 78ce78c6b0b886540584e95c660caeea  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/83395.cc
! 673977a0e657ac1bbb144b35b3f4905c  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/requirements/explicit_instantiation.cc
! b5710f45b8d29e7e6fcf192e73bb85c7  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/requirements/explicit_instantiation_ext.cc
! 03c310ecee5bb7a433e6fbff21c3a33a  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/requirements/typedefs.cc
! 8bcc80f2d2aaca0306443cc7945b854d  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/requirements/typedefs_ext.cc
! 2540f96b3181445d53a32d5b89916545  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/value.cc
! 622132fad1cb61946c79c475a5016389  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/value_ext.cc
! bda3109ec37916ab097790e822349160  libstdc++-v3/testsuite/20_util/is_nothrow_move_assignable/requirements/explicit_instantiation.cc
! 23580e45062a06d974e96a5347b6ef9d  libstdc++-v3/testsuite/20_util/is_nothrow_move_assignable/requirements/typedefs.cc
! e8d066eeafd331b8edc964f4ad883e9f  libstdc++-v3/testsuite/20_util/is_nothrow_move_assignable/value.cc
! 43d190060d10e474de37a14e5534ee26  libstdc++-v3/testsuite/20_util/is_nothrow_move_constructible/requirements/explicit_instantiation.cc
! bb14eff52bee6c8b2a5efbce70747d32  libstdc++-v3/testsuite/20_util/is_nothrow_move_constructible/requirements/typedefs.cc
! fe4ecdabd7fcc087bd51d839bf8660bd  libstdc++-v3/testsuite/20_util/is_nothrow_move_constructible/value.cc
! f4ab1c11ba34ccb482425ddba7b48ecf  libstdc++-v3/testsuite/20_util/is_nothrow_swappable/requirements/explicit_instantiation.cc
! ad25bfcb9c0ab973665a5feea89f730b  libstdc++-v3/testsuite/20_util/is_nothrow_swappable/requirements/explicit_instantiation_ext.cc
! 3ffe454b93020732ca030320b7134b99  libstdc++-v3/testsuite/20_util/is_nothrow_swappable/requirements/typedefs.cc
! ca606b7dcd8b3a56bba1aab51b079db6  libstdc++-v3/testsuite/20_util/is_nothrow_swappable/requirements/typedefs_ext.cc
! 35d520b0e93824823fec746ecd23cbe8  libstdc++-v3/testsuite/20_util/is_nothrow_swappable/value.cc
! a0eb592f5a34a9a50edcd914b6e7ef9b  libstdc++-v3/testsuite/20_util/is_nothrow_swappable/value.h
! 9ff4ce28c94156c08e8db5e21f0e79f1  libstdc++-v3/testsuite/20_util/is_nothrow_swappable/value_ext.cc
! febb24a37ca7e163125cd1e06ca62024  libstdc++-v3/testsuite/20_util/is_nothrow_swappable_with/requirements/explicit_instantiation.cc
! 2d7450f61fb48ae3f57417b26ec666f6  libstdc++-v3/testsuite/20_util/is_nothrow_swappable_with/requirements/typedefs.cc
! e4cdb393b13620f427ff8429b387fe5b  libstdc++-v3/testsuite/20_util/is_nothrow_swappable_with/value.cc
! 0024ec0c9a2db1aed3176a6e8fc203bf  libstdc++-v3/testsuite/20_util/is_null_pointer/requirements/explicit_instantiation.cc
! 141ba43aa8c3b201731ba16373465781  libstdc++-v3/testsuite/20_util/is_null_pointer/requirements/typedefs.cc
! e54938d4993f920c2cec862452e0613c  libstdc++-v3/testsuite/20_util/is_null_pointer/value.cc
! d8d58ce09335866dd58ac8439588fce6  libstdc++-v3/testsuite/20_util/is_object/24808.cc
! a69d257aaf11e7dcd334e4917bf7c155  libstdc++-v3/testsuite/20_util/is_object/requirements/explicit_instantiation.cc
! efb3ff5356cc73ac532402222015570c  libstdc++-v3/testsuite/20_util/is_object/requirements/typedefs.cc
! ad2cdfdd8dfdb07ea6befc5a6e488a0a  libstdc++-v3/testsuite/20_util/is_object/value.cc
! 24ad680447d3373a47d6ecff64d48f9b  libstdc++-v3/testsuite/20_util/is_pod/requirements/explicit_instantiation.cc
! 3fd6a155be9fe1cf8aae049b6c0a44af  libstdc++-v3/testsuite/20_util/is_pod/requirements/typedefs.cc
! 5fcc773b07eda95d50135aba8b6afff5  libstdc++-v3/testsuite/20_util/is_pod/value.cc
! 3f875515a7e0e8e89fef0b6c0316ee8b  libstdc++-v3/testsuite/20_util/is_pointer/requirements/explicit_instantiation.cc
! 6242a30ca177dcea271a5c9e3c48f2bb  libstdc++-v3/testsuite/20_util/is_pointer/value.cc
! a9fa6606a4857c5bab43cb44e82d732c  libstdc++-v3/testsuite/20_util/is_polymorphic/requirements/explicit_instantiation.cc
! 3368c6a0a3db16b5408e96a4ed1c4129  libstdc++-v3/testsuite/20_util/is_polymorphic/requirements/typedefs.cc
! 32994590eb27a0fcc110369aae450a63  libstdc++-v3/testsuite/20_util/is_polymorphic/value.cc
! a09485dc156075d749adfa210edf9ab7  libstdc++-v3/testsuite/20_util/is_reference/requirements/explicit_instantiation.cc
! 2232d11e9bcb6a54b5e6050a2117be64  libstdc++-v3/testsuite/20_util/is_reference/requirements/typedefs.cc
! a49c5e2cc325c736770efac4cb43e814  libstdc++-v3/testsuite/20_util/is_reference/value.cc
! 476ed46b4b4951a65ea7309438825306  libstdc++-v3/testsuite/20_util/is_rvalue_reference/requirements/explicit_instantiation.cc
! caa1a7aaaabc701e64b8e31ee7e58aaa  libstdc++-v3/testsuite/20_util/is_rvalue_reference/requirements/typedefs.cc
! 46a9cbabe1973a064c39127b1b01c9c3  libstdc++-v3/testsuite/20_util/is_rvalue_reference/value.cc
! b45838543858c9a636a6ad669a51eadd  libstdc++-v3/testsuite/20_util/is_same/requirements/explicit_instantiation.cc
! 1c32225f2b65dc48cfcfde7d480cfc7f  libstdc++-v3/testsuite/20_util/is_same/requirements/typedefs.cc
! 168bd9e1fb0a0141f028cf4447cfc240  libstdc++-v3/testsuite/20_util/is_same/value.cc
! 35fe64d7ac2b642b940eb1ab17253e11  libstdc++-v3/testsuite/20_util/is_scalar/requirements/explicit_instantiation.cc
! 4d7f87475e3540126e7536b65d8cabb7  libstdc++-v3/testsuite/20_util/is_scalar/requirements/typedefs.cc
! c9f6833822cb8dd4c712697e72a19b2d  libstdc++-v3/testsuite/20_util/is_scalar/value.cc
! 26056da882d4841959d0df4abf54318b  libstdc++-v3/testsuite/20_util/is_signed/requirements/explicit_instantiation.cc
! b0a87a5647dba2aae0354bd0dc262fba  libstdc++-v3/testsuite/20_util/is_signed/requirements/typedefs.cc
! b3b3849b4ae2a761ccc5c3355696cf11  libstdc++-v3/testsuite/20_util/is_signed/value.cc
! 60601b61af68ab41d2a92ee7353986c3  libstdc++-v3/testsuite/20_util/is_standard_layout/requiremenents/explicit_instantiation.cc
! 180f71116c480b377b9ac090d781086b  libstdc++-v3/testsuite/20_util/is_standard_layout/requiremenents/typedefs.cc
! 15aa8563826838197d8be90d3b3b5d6f  libstdc++-v3/testsuite/20_util/is_standard_layout/value.cc
! 2acb91c9025e9a03e6663df79b9a6fc2  libstdc++-v3/testsuite/20_util/is_swappable/requirements/explicit_instantiation.cc
! 9dd837ecf24a3bdd92c2c367e1975ed1  libstdc++-v3/testsuite/20_util/is_swappable/requirements/explicit_instantiation_ext.cc
! bb491918d197ff314a33fcb9649d51ae  libstdc++-v3/testsuite/20_util/is_swappable/requirements/typedefs.cc
! c6e059f96e13cf45be410b88e1f88d13  libstdc++-v3/testsuite/20_util/is_swappable/requirements/typedefs_ext.cc
! 0142abcc42e674b85e3a3bb0e65aa189  libstdc++-v3/testsuite/20_util/is_swappable/value.cc
! 40ddf01fc16f24111beeedb50884009c  libstdc++-v3/testsuite/20_util/is_swappable/value.h
! e47423412e419acbf3f53a50f37f0ead  libstdc++-v3/testsuite/20_util/is_swappable/value_ext.cc
! eeea93a99f9ffb2182845ad91104c52e  libstdc++-v3/testsuite/20_util/is_swappable_with/requirements/explicit_instantiation.cc
! d7887c211bc8888ee7d9b3c7f649dda6  libstdc++-v3/testsuite/20_util/is_swappable_with/requirements/typedefs.cc
! d634ace2c34fae3c1e4a62842236f0d7  libstdc++-v3/testsuite/20_util/is_swappable_with/value.cc
! 43f9d6e98133c25973b83bb7998cc84c  libstdc++-v3/testsuite/20_util/is_trivial/requirements/explicit_instantiation.cc
! f0a39643ffa4167b717046594ccb1a31  libstdc++-v3/testsuite/20_util/is_trivial/requirements/typedefs.cc
! 9218c84c22a12e6e4799c0eb143994a3  libstdc++-v3/testsuite/20_util/is_trivial/value.cc
! 831796bd24ce0a970473679c4d323049  libstdc++-v3/testsuite/20_util/is_trivially_assignable/requirements/explicit_instantiation.cc
! a534e3833b5c9adb32a51f985d90708f  libstdc++-v3/testsuite/20_util/is_trivially_assignable/requirements/typedefs.cc
! dc79ac99302ee3cae5d3f6b6bdee73cb  libstdc++-v3/testsuite/20_util/is_trivially_assignable/value.cc
! 13a4e41752600121282db2dba14aeff1  libstdc++-v3/testsuite/20_util/is_trivially_constructible/requirements/explicit_instantiation.cc
! 994befc828efa6fcb9232376594a28fd  libstdc++-v3/testsuite/20_util/is_trivially_constructible/requirements/typedefs.cc
! adca8afa14f83932f68cdfbc1a9bdd69  libstdc++-v3/testsuite/20_util/is_trivially_constructible/value.cc
! cc29bd59481b1eb30c13aecedecf324e  libstdc++-v3/testsuite/20_util/is_trivially_copy_assignable/requirements/explicit_instantiation.cc
! cbbb030fb39f98ef2d01bd4233880419  libstdc++-v3/testsuite/20_util/is_trivially_copy_assignable/requirements/typedefs.cc
! 956bda33bb748f3a8cc6835cb9976596  libstdc++-v3/testsuite/20_util/is_trivially_copy_assignable/value.cc
! ba2ec477246d284cc28df61117378e3b  libstdc++-v3/testsuite/20_util/is_trivially_copy_constructible/requirements/explicit_instantiation.cc
! c1f68c158668e7c61f5fefdb21d12303  libstdc++-v3/testsuite/20_util/is_trivially_copy_constructible/requirements/typedefs.cc
! ec83571867892cbc03cc48e6d763b7bd  libstdc++-v3/testsuite/20_util/is_trivially_copy_constructible/value.cc
! d67085202ef22ed30671863a1e57b437  libstdc++-v3/testsuite/20_util/is_trivially_copyable/requirements/explicit_instantiation.cc
! 01628b340d5d10e893d1ac2e6fe40e74  libstdc++-v3/testsuite/20_util/is_trivially_copyable/requirements/typedefs.cc
! 6c9e821b9b5c957876664f15ea1ebeb9  libstdc++-v3/testsuite/20_util/is_trivially_copyable/value.cc
! 97e0e70096d019a6f720ccde1d5cf6c7  libstdc++-v3/testsuite/20_util/is_trivially_default_constructible/requirements/explicit_instantiation.cc
! 5e099aacb3932cb46f5e3a8014c7888b  libstdc++-v3/testsuite/20_util/is_trivially_default_constructible/requirements/typedefs.cc
! c821ec5ac1dd6eab82e595c79c87e8fc  libstdc++-v3/testsuite/20_util/is_trivially_default_constructible/value.cc
! 445d59e042087f5835784f4a2f0522af  libstdc++-v3/testsuite/20_util/is_trivially_destructible/requirements/explicit_instantiation.cc
! ed417eb3a1614e8d5cf7070c2c8afe66  libstdc++-v3/testsuite/20_util/is_trivially_destructible/requirements/typedefs.cc
! 142e8de3eb1ab05bd00d4e8599dafc19  libstdc++-v3/testsuite/20_util/is_trivially_destructible/value.cc
! 38877c9a09da57ba8dca237f36f2c4dd  libstdc++-v3/testsuite/20_util/is_trivially_move_assignable/requirements/explicit_instantiation.cc
! 99e1dc8ffea8c8b687dd56e2a7ab9931  libstdc++-v3/testsuite/20_util/is_trivially_move_assignable/requirements/typedefs.cc
! 471aa05532486c311efd20a18e14e022  libstdc++-v3/testsuite/20_util/is_trivially_move_assignable/value.cc
! ab97196d609fb6cc9d434ecc133542d6  libstdc++-v3/testsuite/20_util/is_trivially_move_constructible/requirements/explicit_instantiation.cc
! a5493bfb683a766f3ad7726ba7b8d363  libstdc++-v3/testsuite/20_util/is_trivially_move_constructible/requirements/typedefs.cc
! 808ee5f08c6cc6b70e48fa46899ee517  libstdc++-v3/testsuite/20_util/is_trivially_move_constructible/value.cc
! 67869c00291b5cab5a3cef6e3a6f92d7  libstdc++-v3/testsuite/20_util/is_union/requirements/explicit_instantiation.cc
! 5566792c3471084d26e841ab261caf04  libstdc++-v3/testsuite/20_util/is_union/requirements/typedefs.cc
! 7f1cb11f5bb3bd86713624ae772ae468  libstdc++-v3/testsuite/20_util/is_union/value.cc
! 8b7b14419d65f8829a1790b667b1ae11  libstdc++-v3/testsuite/20_util/is_unsigned/requirements/explicit_instantiation.cc
! e04c97ac2f7601eb287862a84ae0770c  libstdc++-v3/testsuite/20_util/is_unsigned/requirements/typedefs.cc
! 8519f95af289ff7c8d9fc4f1d1c24ce3  libstdc++-v3/testsuite/20_util/is_unsigned/value.cc
! 485e43f859ab2082850f95a0fe90cd76  libstdc++-v3/testsuite/20_util/is_void/requirements/explicit_instantiation.cc
! 2fede245c7d49d527ac7cbbd23be61ee  libstdc++-v3/testsuite/20_util/is_void/requirements/typedefs.cc
! 5b046878525c05de06ede7c9f8ed0da0  libstdc++-v3/testsuite/20_util/is_void/value.cc
! 803c6ec774d22a35771941dd1ef8463c  libstdc++-v3/testsuite/20_util/is_volatile/requirements/explicit_instantiation.cc
! ae23e332ee86217046e2146d5ffcf174  libstdc++-v3/testsuite/20_util/is_volatile/requirements/typedefs.cc
! 06f6789b4bfa2bef25929b1585206951  libstdc++-v3/testsuite/20_util/is_volatile/value.cc
! e338d81a28095cf74650813ace27a492  libstdc++-v3/testsuite/20_util/logical_traits/83134.cc
! af4c2b182b3fe292d676bffe0c816a82  libstdc++-v3/testsuite/20_util/logical_traits/requirements/explicit_instantiation.cc
! 9909af38132aefaea8409d934a7b27d1  libstdc++-v3/testsuite/20_util/logical_traits/requirements/typedefs.cc
! acae34690e2ce0da78664a42357a3193  libstdc++-v3/testsuite/20_util/logical_traits/value.cc
! 9de95ebb061320d3199cc4e6234e1f5c  libstdc++-v3/testsuite/20_util/make_signed/requirements/alias_decl.cc
! eec4099918516fae11916714cc92770f  libstdc++-v3/testsuite/20_util/make_signed/requirements/explicit_instantiation.cc
! 0672f1b9405bdbb9dde533f8a119b69a  libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-1.cc
! 8fc1f08c4ebfa53298fd727f2236253b  libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-2.cc
! 637f669aef7d1e3767b0fa24bf43fedf  libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-3.cc
! 03cba9cb037386db5dc88d0898072813  libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-4.cc
! f4b5994e0677c2fd24fe520039666355  libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs_neg.cc
! b5e45cc506156b120d072648528dd504  libstdc++-v3/testsuite/20_util/make_unsigned/requirements/alias_decl.cc
! 0492c1e61d046ea7fedfaf084fbb7a49  libstdc++-v3/testsuite/20_util/make_unsigned/requirements/explicit_instantiation.cc
! 395fe1ced92f9275afb6e52dd2dcef15  libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-1.cc
! 9841e697be535f713c2b3077834b2e79  libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-2.cc
! 3e9376c128945a2d3da034accba214f1  libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-3.cc
! dfef757bd16356e8d975cde239e0cc60  libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc
! 089220d186fa66cf20d61dc51468657e  libstdc++-v3/testsuite/20_util/move/1.cc
! bbab4a7d08f970b3406d2ad09d91959b  libstdc++-v3/testsuite/20_util/move/requirements/explicit_instantiation.cc
! 498dfaab7c248885532b0ca378715a64  libstdc++-v3/testsuite/20_util/move_if_noexcept/1.cc
! 24b2fc9db14cd62f0279d48dbe7321a1  libstdc++-v3/testsuite/20_util/move_if_noexcept/constexpr.cc
! 10aabde526683ee3e821787d9aa9318f  libstdc++-v3/testsuite/20_util/move_if_noexcept/requirements/explicit_instantiation.cc
! a193febd86abbe9380700210225d1620  libstdc++-v3/testsuite/20_util/optional/77288.cc
! 252a96cdd1e71cde8dd94ccc1650fae3  libstdc++-v3/testsuite/20_util/optional/assignment/1.cc
! 1d14eeafcc244ae9057339ef5b25b61a  libstdc++-v3/testsuite/20_util/optional/assignment/2.cc
! 3047c8ab5fa04aeecfc08874cfd29fb3  libstdc++-v3/testsuite/20_util/optional/assignment/3.cc
! 12a2daf61eda8b6a94714e4e4252e06c  libstdc++-v3/testsuite/20_util/optional/assignment/4.cc
! 3d72b35831639e03017cad5770455597  libstdc++-v3/testsuite/20_util/optional/assignment/5.cc
! 3cc9d97e79f61a4d775868bec14a3ee2  libstdc++-v3/testsuite/20_util/optional/assignment/6.cc
! 9ee9aca4bc02b03a162418ee8e475e9f  libstdc++-v3/testsuite/20_util/optional/assignment/7.cc
! d4de013ab29f3c48e63b95d5a91232d7  libstdc++-v3/testsuite/20_util/optional/cons/77727.cc
! 61a3637342d83b72fafc7deeb4c07942  libstdc++-v3/testsuite/20_util/optional/cons/copy.cc
! 6166c0e3303059c8eef446dd226c980d  libstdc++-v3/testsuite/20_util/optional/cons/deduction.cc
! 4af754d20128a7389346ac0f239008d3  libstdc++-v3/testsuite/20_util/optional/cons/default.cc
! ca259ae2abb9edb87c794de36e2c746c  libstdc++-v3/testsuite/20_util/optional/cons/move.cc
! 176068883f0bb7706a947cb9ebfd7deb  libstdc++-v3/testsuite/20_util/optional/cons/value.cc
! 0e2eaa76ec79a68a83fae97e6f7539d0  libstdc++-v3/testsuite/20_util/optional/cons/value_neg.cc
! 34ccea0d8a41e80d41335e5c830b9112  libstdc++-v3/testsuite/20_util/optional/constexpr/cons/default.cc
! deb596146551af3090a3cb94e99201ee  libstdc++-v3/testsuite/20_util/optional/constexpr/cons/value.cc
! 5543d1be88a0be0b3503ca0c019b93d7  libstdc++-v3/testsuite/20_util/optional/constexpr/in_place.cc
! 0ca3f03fad015135e9c13a5df1fb661d  libstdc++-v3/testsuite/20_util/optional/constexpr/make_optional.cc
! 0218e25ecc02ff1b974d58ec37ba2c4c  libstdc++-v3/testsuite/20_util/optional/constexpr/nullopt.cc
! d35928834f20dc07faed1397df85623b  libstdc++-v3/testsuite/20_util/optional/constexpr/observers/1.cc
! 8f9655ea249d0bd4c328904de20c0a6c  libstdc++-v3/testsuite/20_util/optional/constexpr/observers/2.cc
! 1aa8f7e49febb90086dbd0da002d492b  libstdc++-v3/testsuite/20_util/optional/constexpr/observers/3.cc
! 7f34a09488d0f782bbd031a9dc4e193f  libstdc++-v3/testsuite/20_util/optional/constexpr/observers/4.cc
! f91edc0910df0c4fff0cdee20656ba1a  libstdc++-v3/testsuite/20_util/optional/constexpr/observers/5.cc
! f87695a5b4f6aba6cf420342265c4e3a  libstdc++-v3/testsuite/20_util/optional/constexpr/relops/1.cc
! d055de8e42f02bfaa3e6b4477b8ac97c  libstdc++-v3/testsuite/20_util/optional/constexpr/relops/2.cc
! 62aa1939dce0f1d2c3af1ff8729db2ff  libstdc++-v3/testsuite/20_util/optional/constexpr/relops/3.cc
! 5f6083f398d4b7c4eb5939b76d78f022  libstdc++-v3/testsuite/20_util/optional/constexpr/relops/4.cc
! f066cba56803cf6be8f386c6d73abcca  libstdc++-v3/testsuite/20_util/optional/constexpr/relops/5.cc
! 85123907f3b87e395144ac26df693031  libstdc++-v3/testsuite/20_util/optional/constexpr/relops/6.cc
! 57d52bd23097674a541f46a0e0edc837  libstdc++-v3/testsuite/20_util/optional/hash.cc
! a0041a29679e0661fa7fe26d8c955f6a  libstdc++-v3/testsuite/20_util/optional/in_place.cc
! cef0324d3c6dbc70dbfb0273499ec699  libstdc++-v3/testsuite/20_util/optional/make_optional.cc
! 38b34d6b11609dee331dbf407ef1884e  libstdc++-v3/testsuite/20_util/optional/nullopt.cc
! b6aa55720a2036ff4af2a14c3e5ec801  libstdc++-v3/testsuite/20_util/optional/observers/1.cc
! 81ab35aacef12e90dfc3f01e1f5524cf  libstdc++-v3/testsuite/20_util/optional/observers/2.cc
! d1dcc00e23673b9b43ed24421e6850e3  libstdc++-v3/testsuite/20_util/optional/observers/3.cc
! b1aa37ee20b0bddec47f3f23d3a72bc8  libstdc++-v3/testsuite/20_util/optional/observers/4.cc
! 3c2e30ebae9cb0bb0b83ec657236ccda  libstdc++-v3/testsuite/20_util/optional/observers/5.cc
! 8904be19f85b2ee8eeafa8be3bd11dea  libstdc++-v3/testsuite/20_util/optional/observers/6.cc
! 82d52a9a2e26faed6e6e4f23bc390f1e  libstdc++-v3/testsuite/20_util/optional/relops/1.cc
! dff14935f50ca52aadfb6f66a60c4107  libstdc++-v3/testsuite/20_util/optional/relops/2.cc
! 4bf3da3a01f937e7d25f7402b3960b84  libstdc++-v3/testsuite/20_util/optional/relops/3.cc
! f46005ca6b29183392d73616afc9f29d  libstdc++-v3/testsuite/20_util/optional/relops/4.cc
! 7276ed64eaaa42fcd2b6fe8ca0ef0bb1  libstdc++-v3/testsuite/20_util/optional/relops/5.cc
! 0a699080c289a9a8da6ea607a4eddd30  libstdc++-v3/testsuite/20_util/optional/relops/6.cc
! f02b9cf1449565da97fe892d9c60d6bf  libstdc++-v3/testsuite/20_util/optional/relops/7.cc
! db2283777a85c06026c707b263421bda  libstdc++-v3/testsuite/20_util/optional/requirements.cc
! 5b58790cce4cdfe28ae8ad789d00a794  libstdc++-v3/testsuite/20_util/optional/swap/1.cc
! ccd98739f964044449b99257731cbe1f  libstdc++-v3/testsuite/20_util/optional/swap/2.cc
! 34fa5b9cdb91c3ce1330871e0b8fda57  libstdc++-v3/testsuite/20_util/optional/typedefs.cc
! aab63615dda496249bb1c94192010510  libstdc++-v3/testsuite/20_util/owner_less/cmp.cc
! ab4f28339faa403b272b3610c4f23ea9  libstdc++-v3/testsuite/20_util/owner_less/noexcept.cc
! d9b573644b9e1cd234084947aebd6563  libstdc++-v3/testsuite/20_util/owner_less/void.cc
! 7f61c2e98b6f97a7084c241db15294d3  libstdc++-v3/testsuite/20_util/pair/1.cc
! aa89efb9f0f50c8ebadc0b74e842cd08  libstdc++-v3/testsuite/20_util/pair/2.cc
! 994984740fa2703588b95f3fc4213552  libstdc++-v3/testsuite/20_util/pair/3.cc
! 190b9c1ea44e2f23ff6297c8f52ec369  libstdc++-v3/testsuite/20_util/pair/4.cc
! 9ea9d529abade15a7e543cc330be2643  libstdc++-v3/testsuite/20_util/pair/40925.cc
! f154bd215b7e5954daabfa426bafd04a  libstdc++-v3/testsuite/20_util/pair/44487.cc
! a69ca0844fbbd9bb16355ccceee5b325  libstdc++-v3/testsuite/20_util/pair/70437.cc
! 2d4c79c749099bb0f784eb806c4db85d  libstdc++-v3/testsuite/20_util/pair/79141.cc
! b65a48308960f16dfb5196003731a955  libstdc++-v3/testsuite/20_util/pair/astuple/astuple.cc
! 237a0d3ecef674c5634547382f356eb7  libstdc++-v3/testsuite/20_util/pair/astuple/astuple_cpp14.cc
! be4ca7e99dc61c087515d597e9d46285  libstdc++-v3/testsuite/20_util/pair/astuple/constexpr_get.cc
! 8e51eaa9030be1cead97941fa1187aa5  libstdc++-v3/testsuite/20_util/pair/astuple/constexpr_get_by_type.cc
! d29b243e38df3b75c7aada9022cab479  libstdc++-v3/testsuite/20_util/pair/astuple/get.cc
! 6565ecf83d7f2c979bde02e264bc74a2  libstdc++-v3/testsuite/20_util/pair/astuple/get_by_type.cc
! e9aca1b847afb756344e4c3f8a49051e  libstdc++-v3/testsuite/20_util/pair/astuple/get_by_type_neg.cc
! 5a108df91c96a332bb8776d534c97f7f  libstdc++-v3/testsuite/20_util/pair/astuple/get_neg.cc
! 72578b73866d005ee34200e9288ae59b  libstdc++-v3/testsuite/20_util/pair/comparison_operators/constexpr.cc
! 6670ee002f693c9c0c31afe8977e9a79  libstdc++-v3/testsuite/20_util/pair/cons/constexpr.cc
! 4e01ed8c8434f10775b237ae6d929909  libstdc++-v3/testsuite/20_util/pair/cons/deduction.cc
! 26697c9d8ec7223cbf4376748e6c1364  libstdc++-v3/testsuite/20_util/pair/cons/explicit_construct.cc
! 7580d73441e4ba6f443221894816692a  libstdc++-v3/testsuite/20_util/pair/cons/noexcept_move_construct.cc
! 6bbd358c06aa43b2152de81f3796a2c0  libstdc++-v3/testsuite/20_util/pair/constexpr_get.cc
! 85b710037da9224c7b3a2466ec5453b9  libstdc++-v3/testsuite/20_util/pair/make_pair/constexpr.cc
! ebbb52102e985b66c9faacd901ad953d  libstdc++-v3/testsuite/20_util/pair/moveable.cc
! cc74927d1a2af31a776543f932ca5daa  libstdc++-v3/testsuite/20_util/pair/noexcept_move_assign.cc
! 807dd3a2b3e3cdf2c25c9ffa04aff5e1  libstdc++-v3/testsuite/20_util/pair/noexcept_swap.cc
! 17fac059fedc750d833a14ea8e429c5e  libstdc++-v3/testsuite/20_util/pair/noncopyable.cc
! 9bf25252e4abce0a395f6c1dc7037eff  libstdc++-v3/testsuite/20_util/pair/piecewise.cc
! 109267258de1c65e31e1ea2b84bc6a96  libstdc++-v3/testsuite/20_util/pair/piecewise2.cc
! c95b7a214d939a3ffe6ab56a5e8915ff  libstdc++-v3/testsuite/20_util/pair/requirements/dr2367.cc
! cb4debdbb58eb399bb1c4decc16e7154  libstdc++-v3/testsuite/20_util/pair/requirements/dr801.cc
! b4cc246589bc350b5b89dd28f1b120fc  libstdc++-v3/testsuite/20_util/pair/requirements/explicit_instantiation/1.cc
! fd58cd080ca6c4b18d987012ff213052  libstdc++-v3/testsuite/20_util/pair/swap.cc
! d2d6bbe16f17628a53d17fe0508211ac  libstdc++-v3/testsuite/20_util/pair/swap_cxx17.cc
! befa7cf4d303b3bad47e88928717d0d0  libstdc++-v3/testsuite/20_util/pair/traits.cc
! 86faa7f8acfb82c035e1defb34334a31  libstdc++-v3/testsuite/20_util/pointer_safety/1.cc
! bf915413a1aa304dfd9ef5ec616317ba  libstdc++-v3/testsuite/20_util/pointer_traits/pointer_to.cc
! e703c1e31fa4a7fc898466c63aeece8f  libstdc++-v3/testsuite/20_util/pointer_traits/rebind.cc
! 7a849399ff98276dfd1d697d8bc4a7a0  libstdc++-v3/testsuite/20_util/pointer_traits/requirements/explicit_instantiation.cc
! 0aacaf4ba7bf46fdd22807508c094094  libstdc++-v3/testsuite/20_util/pointer_traits/requirements/typedefs.cc
! d0c13272cf2ab128443f60d23c2f9162  libstdc++-v3/testsuite/20_util/rank/requirements/explicit_instantiation.cc
! dc2eddfa430148fe3d8c678146eb70a2  libstdc++-v3/testsuite/20_util/rank/requirements/typedefs.cc
! 6cbb59af370e1175500794431066c021  libstdc++-v3/testsuite/20_util/rank/value.cc
! 29234963de56586ba7166df4974af832  libstdc++-v3/testsuite/20_util/ratio/comparisons/comp1.cc
! 5f72b418fac695687d55a8abb09e8db0  libstdc++-v3/testsuite/20_util/ratio/comparisons/comp2.cc
! 992320988144776370efe4eab62aed24  libstdc++-v3/testsuite/20_util/ratio/comparisons/comp3.cc
! fc4e34660965d39a24eca537bb2025ff  libstdc++-v3/testsuite/20_util/ratio/cons/cons1.cc
! cb594f55e50813c2b245adb6c25fcf13  libstdc++-v3/testsuite/20_util/ratio/cons/cons_overflow_neg.cc
! 4cac92074a9317fd20c8b97380c97af4  libstdc++-v3/testsuite/20_util/ratio/operations/45866.cc
! 26e6a311413bf58801dd8054399af799  libstdc++-v3/testsuite/20_util/ratio/operations/47913.cc
! e0d4c227b41034b69a6d397598fb7f1c  libstdc++-v3/testsuite/20_util/ratio/operations/53840.cc
! e2238da67a480f641efa04b54e3b151e  libstdc++-v3/testsuite/20_util/ratio/operations/ops1.cc
! 5414d406414a173baec88dc595100fb6  libstdc++-v3/testsuite/20_util/ratio/operations/ops2.cc
! f56c8650c351b523d63fea382a36f0e8  libstdc++-v3/testsuite/20_util/ratio/operations/ops3.cc
! 4ac2daac6b1cc5e1b8e6993d078ee7a0  libstdc++-v3/testsuite/20_util/ratio/operations/ops_overflow_neg.cc
! 9e48f2a262964bbd71a09894810665a1  libstdc++-v3/testsuite/20_util/ratio/requirements/constexpr_data.cc
! 17483648dcfb2023c8c714c060119fbf  libstdc++-v3/testsuite/20_util/ratio/requirements/ratio_equal_v.cc
! 663eec3aeafd69551dbc71f653731156  libstdc++-v3/testsuite/20_util/raw_storage_iterator/base.cc
! a7a9a4236c7081454aa4b5e065ea2226  libstdc++-v3/testsuite/20_util/raw_storage_iterator/dr2127.cc
! f87d8ae0867b72eb15286316dcf8ad07  libstdc++-v3/testsuite/20_util/raw_storage_iterator/requirements/base_classes.cc
! 422acd24089ba091a97ee2cabcb5a8f6  libstdc++-v3/testsuite/20_util/raw_storage_iterator/requirements/explicit_instantiation/1.cc
! 185c7780141e7d8752e58cdf61912bb4  libstdc++-v3/testsuite/20_util/raw_storage_iterator/requirements/typedefs.cc
! 24f911cdef2a2746be2a1f08869fbe8f  libstdc++-v3/testsuite/20_util/reference_wrapper/24803.cc
! 628c13524091c970faecb75427e653f8  libstdc++-v3/testsuite/20_util/reference_wrapper/41792.cc
! d4c4efd4e0781d8e49e8203dd9d535b4  libstdc++-v3/testsuite/20_util/reference_wrapper/83427.cc
! f810bd5b525cd80f99d2eff4039f859d  libstdc++-v3/testsuite/20_util/reference_wrapper/invoke-2.cc
! dabeef847cfbabb72165b44f71c9cb69  libstdc++-v3/testsuite/20_util/reference_wrapper/invoke-3.cc
! 78f4f88d261f2fda48f56768a4a28c21  libstdc++-v3/testsuite/20_util/reference_wrapper/invoke.cc
! e483be2f53a37be8e274a4399c77b8c2  libstdc++-v3/testsuite/20_util/reference_wrapper/ref_neg.cc
! b2874a3eb8c1870f54ab16596ce27a10  libstdc++-v3/testsuite/20_util/reference_wrapper/requirements.cc
! 540305965744ba29cd758af7317a2891  libstdc++-v3/testsuite/20_util/reference_wrapper/result_type.cc
! 504a631dda22992904a515d8d93f6fb5  libstdc++-v3/testsuite/20_util/reference_wrapper/typedefs-2.cc
! 2f903f099270bd0cafc3ca33cf6dbd96  libstdc++-v3/testsuite/20_util/reference_wrapper/typedefs-3.cc
! 011cef574365de8374dee3641a03eee6  libstdc++-v3/testsuite/20_util/reference_wrapper/typedefs.cc
! 4fa9a10357231108a92aaac23a653f66  libstdc++-v3/testsuite/20_util/rel_ops.cc
! bc42e49d1752e298631bdc29a938f813  libstdc++-v3/testsuite/20_util/remove_all_extents/requirements/alias_decl.cc
! c90822b6403e56edc692c311c9665a6f  libstdc++-v3/testsuite/20_util/remove_all_extents/requirements/explicit_instantiation.cc
! c13e1dfbcff35a855d747030f547ff10  libstdc++-v3/testsuite/20_util/remove_all_extents/value.cc
! bbffa845818ee26e4a81e956bad9dd4b  libstdc++-v3/testsuite/20_util/remove_const/requirements/alias_decl.cc
! e6697f8d5a35359aab4f785d43c185cc  libstdc++-v3/testsuite/20_util/remove_const/requirements/explicit_instantiation.cc
! 8e68f8cf424dd7ad6861f5e599763253  libstdc++-v3/testsuite/20_util/remove_const/value.cc
! 0a328cb28f289deb4caaa84f581a2b2e  libstdc++-v3/testsuite/20_util/remove_cv/requirements/alias_decl.cc
! ceda9843cef6ef116b42497c5211653e  libstdc++-v3/testsuite/20_util/remove_cv/requirements/explicit_instantiation.cc
! 406f1c77f5b813a7e0ca0b9cff10751a  libstdc++-v3/testsuite/20_util/remove_cv/value.cc
! d4cefcd09475ade677a30f63544f71c4  libstdc++-v3/testsuite/20_util/remove_extent/requirements/alias_decl.cc
! 5d1620d56eae3999e690437eecb27ff6  libstdc++-v3/testsuite/20_util/remove_extent/requirements/explicit_instantiation.cc
! b098848d0a30f8b918bb3b758c1f5926  libstdc++-v3/testsuite/20_util/remove_extent/value.cc
! 735ff486d7f9fab8cefc79127ae585aa  libstdc++-v3/testsuite/20_util/remove_pointer/requirements/alias_decl.cc
! 1bc003307e03cd034cfe188bb1387505  libstdc++-v3/testsuite/20_util/remove_pointer/requirements/explicit_instantiation.cc
! 2c684f82a8d76df4cc74cf59c6555159  libstdc++-v3/testsuite/20_util/remove_pointer/value.cc
! dabbedf39f8aa17ae070c00e7337ccda  libstdc++-v3/testsuite/20_util/remove_reference/requirements/alias_decl.cc
! 72488084869d61f44c867dccb4a7df23  libstdc++-v3/testsuite/20_util/remove_reference/requirements/explicit_instantiation.cc
! 4f05b46a44cab2815f7bc6d5eac8bca8  libstdc++-v3/testsuite/20_util/remove_reference/value.cc
! 56983a5cd2af4a3c58a382917ba863d9  libstdc++-v3/testsuite/20_util/remove_volatile/requirements/alias_decl.cc
! bf60f46433a4e3e4b63830fbad68a315  libstdc++-v3/testsuite/20_util/remove_volatile/requirements/explicit_instantiation.cc
! 50786200304b04bd787261eb3ec5baff  libstdc++-v3/testsuite/20_util/remove_volatile/value.cc
! 2d2a0c6c20100da4f50ae1c43914dab4  libstdc++-v3/testsuite/20_util/result_of/1.cc
! 16ab9a2246a3626139ab7d9f2bdbbf48  libstdc++-v3/testsuite/20_util/result_of/2.cc
! 91eb669039eea9c814e970d2e132b670  libstdc++-v3/testsuite/20_util/result_of/requirements/alias_decl.cc
! 8aeee471a99d85cf4ae4ef1d0d87eaee  libstdc++-v3/testsuite/20_util/result_of/sfinae_friendly_1.cc
! 0f75a03584807fa65f11d8b45b65749f  libstdc++-v3/testsuite/20_util/result_of/sfinae_friendly_2.cc
! 1530cb4164f370408177af98ea032cbb  libstdc++-v3/testsuite/20_util/scoped_allocator/1.cc
! 428aeccaf25c48552729731a2af10f8e  libstdc++-v3/testsuite/20_util/scoped_allocator/2.cc
! 1078f53faea318582ed120d482e1404d  libstdc++-v3/testsuite/20_util/scoped_allocator/3.cc
! 0cbc67943545da81347ab20137625afc  libstdc++-v3/testsuite/20_util/scoped_allocator/65279.cc
! 1db0a9d738e199c4e0460d8e37a428b1  libstdc++-v3/testsuite/20_util/scoped_allocator/69114.cc
! 5ad814ca3d1557c651516b1775dca31f  libstdc++-v3/testsuite/20_util/scoped_allocator/69293_neg.cc
! 8cdd883086ba2e7e8980133f6c17fb7c  libstdc++-v3/testsuite/20_util/scoped_allocator/construct_pair.cc
! aa91a2560124e32418085697df58e51f  libstdc++-v3/testsuite/20_util/scoped_allocator/outermost.cc
! 0a279878c953a74a92c78063d086f6a8  libstdc++-v3/testsuite/20_util/scoped_allocator/propagation.cc
! 8fc984f0f8003395f47c252299818227  libstdc++-v3/testsuite/20_util/scoped_allocator/requirements/explicit_instantiation.cc
! 07d7295a0b9bbd12fcdaa43a1b568091  libstdc++-v3/testsuite/20_util/scoped_allocator/requirements/typedefs.cc
! 4139f7943a08aa181d9b7e6027481210  libstdc++-v3/testsuite/20_util/shared_ptr/assign/assign.cc
! ee860cb38541afc900f5d8e022d430cf  libstdc++-v3/testsuite/20_util/shared_ptr/assign/auto_ptr.cc
! 9d6ea50ce3062061404b1bbedd48ef2f  libstdc++-v3/testsuite/20_util/shared_ptr/assign/auto_ptr_neg.cc
! 42536472b2c22e93b4072e37c20346c3  libstdc++-v3/testsuite/20_util/shared_ptr/assign/auto_ptr_rvalue.cc
! 63a0bf8492687f886653d97e49c1606c  libstdc++-v3/testsuite/20_util/shared_ptr/assign/dr541.cc
! e4dee1d0b366b3e7240b821e710ddb4e  libstdc++-v3/testsuite/20_util/shared_ptr/assign/move.cc
! 911ca9b63bc7ebd237dc159df3298815  libstdc++-v3/testsuite/20_util/shared_ptr/assign/sfinae.cc
! 1bb5e9694232a059b315347529361e7c  libstdc++-v3/testsuite/20_util/shared_ptr/assign/shared_ptr.cc
! c9f75ac72f7e2669d6de6d2a28f8ae9d  libstdc++-v3/testsuite/20_util/shared_ptr/assign/shared_ptr_neg.cc
! 327e5e3a64216442775d1c125bd51a9f  libstdc++-v3/testsuite/20_util/shared_ptr/assign/unique_ptr_lvalue_neg.cc
! 022ba07f72de7a84590680d619817bac  libstdc++-v3/testsuite/20_util/shared_ptr/assign/unique_ptr_rvalue.cc
! 7bd9d957ed13e23b645bd486f5a77dff  libstdc++-v3/testsuite/20_util/shared_ptr/atomic/1.cc
! 5abd38d1f3514c0a41cb9eda36652497  libstdc++-v3/testsuite/20_util/shared_ptr/atomic/2.cc
! 308b9d558392a05aa3df043ea4a4aeac  libstdc++-v3/testsuite/20_util/shared_ptr/atomic/3.cc
! a3f31777dfefc5983b9d366b38e56553  libstdc++-v3/testsuite/20_util/shared_ptr/casts/1.cc
! e5541b7238280e77442450a972125d18  libstdc++-v3/testsuite/20_util/shared_ptr/casts/reinterpret.cc
! f4b77d279d17e5614d27324e3a23f67f  libstdc++-v3/testsuite/20_util/shared_ptr/comparison/42925.cc
! 37add4a9fb182d2dd047a06499bcebd3  libstdc++-v3/testsuite/20_util/shared_ptr/comparison/cmp.cc
! 9b654e19836f5a53f91aa39e1b374e60  libstdc++-v3/testsuite/20_util/shared_ptr/comparison/dr1401.cc
! 30c54b8c87b67bd176ff3aba5c5e1735  libstdc++-v3/testsuite/20_util/shared_ptr/comparison/less.cc
! 6827f11d49207382738671b1db11af62  libstdc++-v3/testsuite/20_util/shared_ptr/cons/39405.cc
! 943ddd1a49a0293ab577d9f0707684e0  libstdc++-v3/testsuite/20_util/shared_ptr/cons/43820_neg.cc
! e0daa00e1544a1d370029de98cf7ee3b  libstdc++-v3/testsuite/20_util/shared_ptr/cons/46910.cc
! b72780e25be84556f311f675e7c78441  libstdc++-v3/testsuite/20_util/shared_ptr/cons/51365.cc
! 83591e4c3c410ad9b76b5c4af43d898b  libstdc++-v3/testsuite/20_util/shared_ptr/cons/52924.cc
! 78acb0477016a094ac3e06c9ba625d43  libstdc++-v3/testsuite/20_util/shared_ptr/cons/55123.cc
! 631ded6f8a2a939888487786e337fb35  libstdc++-v3/testsuite/20_util/shared_ptr/cons/58659.cc
! 34868d4dd86b597b0e4bed8a10a64330  libstdc++-v3/testsuite/20_util/shared_ptr/cons/58839.cc
! fffa2db28c2f6595dc4f47352d99a528  libstdc++-v3/testsuite/20_util/shared_ptr/cons/61036.cc
! 36a5bee12f096b3b5a3874998a842a2a  libstdc++-v3/testsuite/20_util/shared_ptr/cons/79467.cc
! 380529a76a866961a32436d2d265dc87  libstdc++-v3/testsuite/20_util/shared_ptr/cons/80229.cc
! 102a6268e9efe4a1285d8293db4a07cc  libstdc++-v3/testsuite/20_util/shared_ptr/cons/alias.cc
! 6110dc175be8d84c5bc89ef50ea32417  libstdc++-v3/testsuite/20_util/shared_ptr/cons/alloc.cc
! f89dfb93567bc78ccae46de65d9c2c4a  libstdc++-v3/testsuite/20_util/shared_ptr/cons/alloc_min.cc
! ef2baf88e8c8fd47ddfc98ecb8474d48  libstdc++-v3/testsuite/20_util/shared_ptr/cons/array.cc
! f44058fe933a197befe5af0d6e8ad0a9  libstdc++-v3/testsuite/20_util/shared_ptr/cons/auto_ptr.cc
! cb02fc52baac76a3deaf4770b166a853  libstdc++-v3/testsuite/20_util/shared_ptr/cons/auto_ptr_neg.cc
! 75d8a2cfd7621b71e107556125850b08  libstdc++-v3/testsuite/20_util/shared_ptr/cons/constexpr.cc
! c077e45c16bbb4852a908f6ce75c0005  libstdc++-v3/testsuite/20_util/shared_ptr/cons/copy.cc
! bcdbe298fc57b11df0179e2d8aec1763  libstdc++-v3/testsuite/20_util/shared_ptr/cons/deduction.cc
! 3fa541ba8b10aded84d76999bad8a081  libstdc++-v3/testsuite/20_util/shared_ptr/cons/default.cc
! 9e4c038baee8a2b4d40071a4dc7b8fa5  libstdc++-v3/testsuite/20_util/shared_ptr/cons/lwg2802.cc
! 055c1070ba50d088f0cbfad8334062a7  libstdc++-v3/testsuite/20_util/shared_ptr/cons/move.cc
! f178e38c296dba51444fec3af36894fa  libstdc++-v3/testsuite/20_util/shared_ptr/cons/noexcept_move_construct.cc
! dfdb98ed4ce8311529b8613c6ece5378  libstdc++-v3/testsuite/20_util/shared_ptr/cons/nullptr.cc
! a281029bedc2d38bf675dc7a6af16f07  libstdc++-v3/testsuite/20_util/shared_ptr/cons/pointer.cc
! d7518a1a60f2d6c569e031953585e8da  libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr.cc
! c10fcbc64d100e8ab17c123ccc7d38d7  libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_array.cc
! 7691d7d98b2ecdd0c351b0f8a49c1ffb  libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_deleter.cc
! f9eed2d89807bbda45895fccd00b5661  libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_1.cc
! 1c235be4ed4782309c30e9ef8886ee6e  libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_2.cc
! be8efb4c33af2e83237e45d97f0a0bdd  libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_neg.cc
! 362e840181b6c17f36f5f5e5b5e6c4f0  libstdc++-v3/testsuite/20_util/shared_ptr/cons/void_neg.cc
! ccddbb1149a03f3aa6754a65e1ecc9b4  libstdc++-v3/testsuite/20_util/shared_ptr/cons/weak_ptr.cc
! 309289a358f69c667909081ede41ba3e  libstdc++-v3/testsuite/20_util/shared_ptr/cons/weak_ptr_expired.cc
! f3390ee77e458686d701a8e5c8366fb9  libstdc++-v3/testsuite/20_util/shared_ptr/creation/36949.cc
! 0f5b2cb92ee97b03b607f4c8558177fb  libstdc++-v3/testsuite/20_util/shared_ptr/creation/58594-no-rtti.cc
! 480a4e65e68c33c89520bb35b0d7c629  libstdc++-v3/testsuite/20_util/shared_ptr/creation/58594.cc
! 35bd561b05fdebec0023437def67b4d8  libstdc++-v3/testsuite/20_util/shared_ptr/creation/alloc.cc
! c483cf7c8ad99368f31c6fb918052104  libstdc++-v3/testsuite/20_util/shared_ptr/creation/alloc_min.cc
! 7f6b87219ad3c240c1ce433daf148d94  libstdc++-v3/testsuite/20_util/shared_ptr/creation/dr402.cc
! c5f369662b6104b5fecc30d23227d1fd  libstdc++-v3/testsuite/20_util/shared_ptr/creation/dr925.cc
! e717464871b30d1e2c4f4f6a57f92636  libstdc++-v3/testsuite/20_util/shared_ptr/creation/make.cc
! 7fab7488cb0b93500822e1bf7407d852  libstdc++-v3/testsuite/20_util/shared_ptr/creation/no_rtti.cc
! db616f0f5cc11f842d69e0e71726a1c1  libstdc++-v3/testsuite/20_util/shared_ptr/creation/private.cc
! b5e0358e41fba7ee543e24db7209dd63  libstdc++-v3/testsuite/20_util/shared_ptr/dest/dest.cc
! dd1db7aa817ad5f95a25abc991f7dd69  libstdc++-v3/testsuite/20_util/shared_ptr/hash/1.cc
! 08e364f968f0f079c6a6dfaa4414670d  libstdc++-v3/testsuite/20_util/shared_ptr/misc/24595.cc
! 4f68d8ec9010e7ff136fa627e34b31f4  libstdc++-v3/testsuite/20_util/shared_ptr/misc/42019.cc
! 96f5aae5571fcd2b312a33715043ea5a  libstdc++-v3/testsuite/20_util/shared_ptr/misc/io.cc
! b52f1886424bd303cbaaa297adfc3b1b  libstdc++-v3/testsuite/20_util/shared_ptr/misc/swap.cc
! 942a700fd6cde0b666877d4e464b2749  libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/24805.cc
! 6b18d03b224a2e2f0c474526fad8ce8c  libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/reset.cc
! 2e856ae8da04c51425da21db5902ee99  libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/reset_alloc.cc
! 8ccc88a3b11f876ea8eab5f2f1a16d2c  libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/reset_neg.cc
! db716e10920894b6ef07187ba28f3cde  libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/reset_sfinae.cc
! 06a6eef89f1d23b9a3e31b859b43fc07  libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/swap.cc
! afc3f4e8272d86a5190a4eb380495f06  libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/swap_neg.cc
! f2026d602e98058c927bf3b019a88db3  libstdc++-v3/testsuite/20_util/shared_ptr/observers/array.cc
! 25c291a828033291165c399eb6d33244  libstdc++-v3/testsuite/20_util/shared_ptr/observers/bool_conv.cc
! b3db38f7044e8f81e6dd80e827379276  libstdc++-v3/testsuite/20_util/shared_ptr/observers/get.cc
! f1151b855f078a8b6c0c0359d529a3eb  libstdc++-v3/testsuite/20_util/shared_ptr/observers/owner_before.cc
! c1ed9c7ee595ff8f8b5ba144d55651cf  libstdc++-v3/testsuite/20_util/shared_ptr/observers/unique.cc
! 38f9b339306326739d2e39f34be9a0f8  libstdc++-v3/testsuite/20_util/shared_ptr/observers/use_count.cc
! 939729234cd73a28f422bece90428371  libstdc++-v3/testsuite/20_util/shared_ptr/requirements/explicit_instantiation/1.cc
! 2389d86ae85caefea2b6caf4c038ce78  libstdc++-v3/testsuite/20_util/shared_ptr/requirements/explicit_instantiation/2.cc
! 1ae8de98ac16b33fc25b7850f97aec58  libstdc++-v3/testsuite/20_util/shared_ptr/requirements/weak_type.cc
! c16bde564cb557e5cc30fff000ffac12  libstdc++-v3/testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc
! 239263f02d19874d3d3a9d455e998fbc  libstdc++-v3/testsuite/20_util/shared_ptr/thread/mutex_weaktoshared.cc
! 757e512af7583a3902550e6c4eacd474  libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/1.cc
! 08a33b30305f77ec66a0e2919b1032bb  libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc
! 18df61ece6f9b7137e4a3e8777322506  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/58982.cc
! b49f71673e2f2cee560e6507debd125b  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/64476.cc
! e8a20a3d0be9e89a681bd524a70d8f7f  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/808590-cxx11.cc
! 911853c4dd9b82dd8d3b7cf681cbe1b5  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/808590.cc
! 867f354956e412e5798e0a6343daeab9  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/move_iterators/1.cc
! ff54bb13feec5f691098c0dac42a47a3  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy_n/58982.cc
! 52a0b71c96cfc7c87870932bc139a79d  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy_n/move_iterators/1.cc
! c4a9501c7a95d60f9104194628f7f5dc  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill/32158.cc
! 9870a3dd27e52d809dbc9417d9796d67  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill/58982.cc
! 34ec60a74318e93bfb0293e8cc67dd44  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill_n/16505.cc
! 0c324ac27fbe93df48f20a2a5f50964e  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill_n/58982.cc
! 9f064abdce604fdf6825c6aaa8806024  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill_n/dr1339.cc
! 8a6efa0f9a993f9898bb8cbbae5dbb38  libstdc++-v3/testsuite/20_util/steady_clock/constexpr_data.cc
! e6c0ff45325b89a5e0d9d878bd727b3a  libstdc++-v3/testsuite/20_util/system_clock/1.cc
! 5c5ba44735c7c1bd86afe32c38e2b927  libstdc++-v3/testsuite/20_util/system_clock/constexpr_data.cc
! 99a483c719e34efabed9a546d801a822  libstdc++-v3/testsuite/20_util/temporary_buffer.cc
! 549dd6470b19cdb54c8edb39ff974c55  libstdc++-v3/testsuite/20_util/time_point/1.cc
! 208c5bfa51595012faddd3d2e0822160  libstdc++-v3/testsuite/20_util/time_point/2.cc
! 69b58b917ca7992b184894e088db55d2  libstdc++-v3/testsuite/20_util/time_point/3.cc
! 1aa2d8adf0cedb2ab1636e8eaff34cc3  libstdc++-v3/testsuite/20_util/time_point/arithmetic/constexpr.cc
! 60033a6a57c17396e8e0eb39a60e9d66  libstdc++-v3/testsuite/20_util/time_point/comparison_operators/constexpr.cc
! 6a717e0cd922e4615aac13bc2eb0cf19  libstdc++-v3/testsuite/20_util/time_point/cons/81468.cc
! ba218f62ebce4ba5524d2ca5432b5b8d  libstdc++-v3/testsuite/20_util/time_point/cons/constexpr.cc
! 1365690d2b358b63cc188d83cab0d034  libstdc++-v3/testsuite/20_util/time_point/nonmember/constexpr.cc
! a18741f9c6cacd98e3092c0587401ede  libstdc++-v3/testsuite/20_util/time_point/requirements/constexpr_functions.cc
! f8b12ae1886f03ca8f2e2190ace5ba59  libstdc++-v3/testsuite/20_util/time_point/requirements/explicit_instantiation/explicit_instantiation.cc
! e9891218bab4d453f292ab01cb11e3f3  libstdc++-v3/testsuite/20_util/time_point_cast/constexpr.cc
! a66ce301982e83ea4dc2ebbdf8ca420b  libstdc++-v3/testsuite/20_util/time_point_cast/rounding.cc
! 4798429737eb6b94570b5d3ab23c706a  libstdc++-v3/testsuite/20_util/tuple/48476.cc
! 3455acc985b93ef371caec0a35389fb7  libstdc++-v3/testsuite/20_util/tuple/51365.cc
! d91cdadb445671723535aa97d2408f14  libstdc++-v3/testsuite/20_util/tuple/53648.cc
! a61573f601c36fa0e1daefc37d984cd6  libstdc++-v3/testsuite/20_util/tuple/56785.cc
! 2503852a1876e5d03fb8411661fc1929  libstdc++-v3/testsuite/20_util/tuple/60497.cc
! 7cc4c2455e04714b496431527ddadd43  libstdc++-v3/testsuite/20_util/tuple/61947.cc
! 1fe2d8026cd51992c3c571a085b68732  libstdc++-v3/testsuite/20_util/tuple/67844.cc
! 156033f4a9ced7b58df74706cf80c5e1  libstdc++-v3/testsuite/20_util/tuple/77395.cc
! 2c3ee24039f520cd6858c894f88356cc  libstdc++-v3/testsuite/20_util/tuple/77802.cc
! 3b77f4f4ff590afbf063a03614b05d79  libstdc++-v3/testsuite/20_util/tuple/78939.cc
! 9d3aff7f884e9123f5c23bb3cc2a7584  libstdc++-v3/testsuite/20_util/tuple/apply/1.cc
! 2c75ca6c740bacc306cb5590bc1ce1ba  libstdc++-v3/testsuite/20_util/tuple/comparison_operators/35480_neg.cc
! 0e479e4a0ca6124e774db6e79efc4fff  libstdc++-v3/testsuite/20_util/tuple/comparison_operators/comparisons.cc
! e2cf8336dfb74bb41abb111af7e769a1  libstdc++-v3/testsuite/20_util/tuple/comparison_operators/constexpr.cc
! a87439342ff0c6f36740ef4c3bdbc0e0  libstdc++-v3/testsuite/20_util/tuple/comparison_operators/overloaded.cc
! 75f112fd4b674f6d96f467636c2c1e5b  libstdc++-v3/testsuite/20_util/tuple/cons/41530.cc
! cdc74e0e9211764793a9225ecdec0d6f  libstdc++-v3/testsuite/20_util/tuple/cons/44487.cc
! 8da370a89149b2d2431e1c4352933e0e  libstdc++-v3/testsuite/20_util/tuple/cons/45228.cc
! 575a6372879f1458cdfc442cf8a38236  libstdc++-v3/testsuite/20_util/tuple/cons/48476.cc
! ef1b3af6d8a03d4d25c4fb0d718869b2  libstdc++-v3/testsuite/20_util/tuple/cons/66338.cc
! 5f852acc285749b58ac8eb0d5bcd54ed  libstdc++-v3/testsuite/20_util/tuple/cons/allocator_with_any.cc
! 80385d2f28485d11566b99332d834e05  libstdc++-v3/testsuite/20_util/tuple/cons/allocators.cc
! 6c328fcb2540b42d8f6391918729fb07  libstdc++-v3/testsuite/20_util/tuple/cons/assignment.cc
! 1894c6a21cc3dcaa38305cb95c0aa53f  libstdc++-v3/testsuite/20_util/tuple/cons/big_tuples.cc
! dbe6ab8512393d7fdec6d765389b81b6  libstdc++-v3/testsuite/20_util/tuple/cons/constexpr-2.cc
! 12c9770465b078dd1b5d1bd9d1fce800  libstdc++-v3/testsuite/20_util/tuple/cons/constexpr-3.cc
! 7bc7d4ae28fe16fc6f6f10bb36509096  libstdc++-v3/testsuite/20_util/tuple/cons/constructor.cc
! 7dfe670099c7ea07441d83fd82000c38  libstdc++-v3/testsuite/20_util/tuple/cons/converting.cc
! 2f9bace6dfc7f6a99a059995e766840b  libstdc++-v3/testsuite/20_util/tuple/cons/deduction.cc
! c41230a43a29feb84a895afc3922654d  libstdc++-v3/testsuite/20_util/tuple/cons/element_accepts_anything_byval.cc
! 83861209341d02e991e86c03244ca632  libstdc++-v3/testsuite/20_util/tuple/cons/explicit_construct.cc
! 0a9e70b649490d33db808f0ba350eab2  libstdc++-v3/testsuite/20_util/tuple/cons/nested_tuple_construct.cc
! 9b0a47c191d458dbad55a878ff134ea9  libstdc++-v3/testsuite/20_util/tuple/cons/noexcept_move_construct.cc
! a040ee0354fb76711f2f2f7cab79b297  libstdc++-v3/testsuite/20_util/tuple/creation_functions/23978.cc
! e779b5d1d7de4f518ce3154b91d0ce51  libstdc++-v3/testsuite/20_util/tuple/creation_functions/48476.cc
! a7bbfa7204349b056169547fb0e7830a  libstdc++-v3/testsuite/20_util/tuple/creation_functions/constexpr.cc
! 098ec15b9e2390591e3870a85d7bc8e5  libstdc++-v3/testsuite/20_util/tuple/creation_functions/constexpr_cpp14.cc
! d89ecc93acbd12f0170bf06bd195bda3  libstdc++-v3/testsuite/20_util/tuple/creation_functions/forward_as_tuple.cc
! e0d08ee495d99abc9d9e96f6dd565a45  libstdc++-v3/testsuite/20_util/tuple/creation_functions/make_tuple.cc
! 357999cf6a389ffdf2ce99476ea93836  libstdc++-v3/testsuite/20_util/tuple/creation_functions/tie.cc
! 0bb712ef3d949ae1281f99451d3a1d2d  libstdc++-v3/testsuite/20_util/tuple/creation_functions/tie2.cc
! adc186caaa669a73be1cbf4cf5ed1152  libstdc++-v3/testsuite/20_util/tuple/creation_functions/tuple_cat.cc
! b531dec5230b9f887b0662956616ca8a  libstdc++-v3/testsuite/20_util/tuple/cv_tuple_element.cc
! f12c30c5e860fd4ca3d1266dd0b2fd70  libstdc++-v3/testsuite/20_util/tuple/cv_tuple_size.cc
! 180c701d7721706ac56008c26b26a3b9  libstdc++-v3/testsuite/20_util/tuple/element_access/constexpr_get.cc
! 49a4d032c25b710c8d00ed0cf504a289  libstdc++-v3/testsuite/20_util/tuple/element_access/constexpr_get_by_type.cc
! 5b7e9d2250f1ffbc57f91c1850143490  libstdc++-v3/testsuite/20_util/tuple/element_access/get.cc
! 051b8a14904faa9a2257fdd889e703a0  libstdc++-v3/testsuite/20_util/tuple/element_access/get2.cc
! 565273d275b6d4de335f1aac162e53bd  libstdc++-v3/testsuite/20_util/tuple/element_access/get2_by_type.cc
! 17c6b3073826517aeb8dee3cc6fe1653  libstdc++-v3/testsuite/20_util/tuple/element_access/get_by_type.cc
! 1bf2652d120ed2759bcee89d9c7042dd  libstdc++-v3/testsuite/20_util/tuple/element_access/get_neg.cc
! 15945b35ce0ce1993703e55c0e9b67dd  libstdc++-v3/testsuite/20_util/tuple/make_from_tuple/1.cc
! bf5a14ed1847b6d6ec805aeded6bafba  libstdc++-v3/testsuite/20_util/tuple/moveable.cc
! b1b7d0b6ffbc1c632606636c77ac3a3d  libstdc++-v3/testsuite/20_util/tuple/moveable2.cc
! 334224f927ea7a27b8f63e5c4c2e9a31  libstdc++-v3/testsuite/20_util/tuple/noexcept_move_assign.cc
! f6715591fd7b0bb6e019bb2d616d807f  libstdc++-v3/testsuite/20_util/tuple/noexcept_swap.cc
! 9903c13780a4d1ea4c51514d28eb3033  libstdc++-v3/testsuite/20_util/tuple/requirements/dr2367.cc
! aa0099832fcce59a8892e0fe9d7e63fa  libstdc++-v3/testsuite/20_util/tuple/requirements/dr801.cc
! 509bafd4c51cb8356d0be3216c57934f  libstdc++-v3/testsuite/20_util/tuple/requirements/explicit_instantiation.cc
! 1dc4be99e03d0794d33ecc2fc548c4bc  libstdc++-v3/testsuite/20_util/tuple/swap.cc
! 099b70e8cc0e8d8e4d3a07decc27c319  libstdc++-v3/testsuite/20_util/tuple/swap_cxx17.cc
! 0ce42360f4a701cfa15a5f9f12e07bab  libstdc++-v3/testsuite/20_util/tuple/tuple_element.cc
! 7f15a6234ba362b83e35eb0cc34276c1  libstdc++-v3/testsuite/20_util/tuple/tuple_element_t.cc
! 7e84367e7eab988d8e102ca5c3756642  libstdc++-v3/testsuite/20_util/tuple/tuple_size.cc
! 93634744504c12ae0a5ec14e9279ce3f  libstdc++-v3/testsuite/20_util/tuple/tuple_size_v.cc
! ae8e381c0ea08e319d95f7919a8d557e  libstdc++-v3/testsuite/20_util/typeindex/comparison_operators.cc
! 24232f5ceb02da88d01a633c342f0e89  libstdc++-v3/testsuite/20_util/typeindex/hash.cc
! 7239f169ca1a4825c66ceeafaa8e7bdf  libstdc++-v3/testsuite/20_util/typeindex/hash_code.cc
! e29a8e3020c1e7a384893232edb5d9ea  libstdc++-v3/testsuite/20_util/typeindex/name.cc
! 1c1b856b080c37f2db09d1cbccca059e  libstdc++-v3/testsuite/20_util/underlying_type/requirements/alias_decl.cc
! 84f3eefc851556fcc041178253056f18  libstdc++-v3/testsuite/20_util/underlying_type/requirements/explicit_instantiation.cc
! 1fcd3eaa1f8ea2f544107dbc2128f0ba  libstdc++-v3/testsuite/20_util/underlying_type/requirements/typedefs-1.cc
! d3078ae84c4c4a660d43973332f9ee23  libstdc++-v3/testsuite/20_util/underlying_type/requirements/typedefs-2.cc
! 6f18ca36ef8b4e04b4dd114d83863ca0  libstdc++-v3/testsuite/20_util/unique_ptr/54351.cc
! 695aac41a2e8bfbb93a4fd36c007b250  libstdc++-v3/testsuite/20_util/unique_ptr/assign/48635.cc
! ae6395d133479f5abddb8ddf0db9d136  libstdc++-v3/testsuite/20_util/unique_ptr/assign/48635_neg.cc
! e16018c88229234f4bde9f910d616673  libstdc++-v3/testsuite/20_util/unique_ptr/assign/assign_neg.cc
! a9dca44591fcc31b467607bd0d7effd6  libstdc++-v3/testsuite/20_util/unique_ptr/assign/cv_qual.cc
! 7287e1bd9d25ac220b05c0be8065197e  libstdc++-v3/testsuite/20_util/unique_ptr/assign/move.cc
! 7044dbda5737d8a0c6ef0fd040431f4c  libstdc++-v3/testsuite/20_util/unique_ptr/assign/move_array.cc
! 87116aaaa074d0d60a3e8f699a8ce30e  libstdc++-v3/testsuite/20_util/unique_ptr/assign/nullptr.cc
! d1e5a1e284e9a23351e4af2cbd00e146  libstdc++-v3/testsuite/20_util/unique_ptr/comparison/42925.cc
! c1440a5a389127d11ee734fe29a57d08  libstdc++-v3/testsuite/20_util/unique_ptr/comparison/dr1401.cc
! 66580e1d9f810ef1eda1b975a1b71c70  libstdc++-v3/testsuite/20_util/unique_ptr/cons/77990.cc
! eac937d427af84501c9ea72cddc3c29e  libstdc++-v3/testsuite/20_util/unique_ptr/cons/array_convertible_neg.cc
! 4de0a7f1bfac83503ff80f5831e9cab6  libstdc++-v3/testsuite/20_util/unique_ptr/cons/auto_ptr.cc
! 1a8ee5230a517f16cfb3d18e3842aacc  libstdc++-v3/testsuite/20_util/unique_ptr/cons/auto_ptr_neg.cc
! 5dc436dc2fffd2cab284aa79eee70732  libstdc++-v3/testsuite/20_util/unique_ptr/cons/constexpr.cc
! bbeb0262e8fc3021525962c586df84ba  libstdc++-v3/testsuite/20_util/unique_ptr/cons/convertible_neg.cc
! 778a4da95002a92aeaef688b44e5b664  libstdc++-v3/testsuite/20_util/unique_ptr/cons/cv_qual.cc
! 82633c3d74050bc4fb78de5159e0aae6  libstdc++-v3/testsuite/20_util/unique_ptr/cons/cv_qual_neg.cc
! 80c4859db1f103d32ee165bcf3efd68d  libstdc++-v3/testsuite/20_util/unique_ptr/cons/deduction_neg.cc
! 625a84ce4b90079054b81c60886122df  libstdc++-v3/testsuite/20_util/unique_ptr/cons/default.cc
! 93b1dd6830ef574470a5e9163484bd38  libstdc++-v3/testsuite/20_util/unique_ptr/cons/noexcept_move_construct.cc
! ebcbd0c12b03cde91df4fc58238af77e  libstdc++-v3/testsuite/20_util/unique_ptr/cons/nullptr.cc
! 2b249dfe04a96bc65688477648d08f1c  libstdc++-v3/testsuite/20_util/unique_ptr/cons/pointer.cc
! 10855734ab7eedfd2c7991f77725bef6  libstdc++-v3/testsuite/20_util/unique_ptr/cons/pointer_array.cc
! 9c077fee0e9890014179362cdf6c1ef1  libstdc++-v3/testsuite/20_util/unique_ptr/cons/pointer_array_convertible_neg.cc
! 5796ab66ee4848bebf63d576b37cc62d  libstdc++-v3/testsuite/20_util/unique_ptr/cons/ptr_deleter.cc
! 4cff980199a2c5867f73f59281b1ff35  libstdc++-v3/testsuite/20_util/unique_ptr/cons/ptr_deleter_neg.cc
! 58bf87bbfb7e625a07a5512f0ebfa6dc  libstdc++-v3/testsuite/20_util/unique_ptr/creation/array.cc
! edf85ec8b8f8589c84ac2965ce42ad75  libstdc++-v3/testsuite/20_util/unique_ptr/creation/array_neg.cc
! f13cc5e29fd597e95d503df1b3cab9cb  libstdc++-v3/testsuite/20_util/unique_ptr/creation/single.cc
! 19cf4dd608bbb8ff83f6786cc3bd4589  libstdc++-v3/testsuite/20_util/unique_ptr/dr2228.cc
! 349dd14e1903bbc1e9f86fa8e2515c4a  libstdc++-v3/testsuite/20_util/unique_ptr/hash/1.cc
! 7aefa6843839a434e15a6f8d68f4e407  libstdc++-v3/testsuite/20_util/unique_ptr/modifiers/43183.cc
! db48e8a716aae5ccb1efa3bbd0b77998  libstdc++-v3/testsuite/20_util/unique_ptr/modifiers/48398.cc
! 7cffa610a3e7b26a9404aa0d9c8f123f  libstdc++-v3/testsuite/20_util/unique_ptr/modifiers/cv_qual.cc
! f4b57695b559e5dfd71c7988db37f7bf  libstdc++-v3/testsuite/20_util/unique_ptr/modifiers/reset_neg.cc
! 75ec289c8e088f264e8ffc64a842706f  libstdc++-v3/testsuite/20_util/unique_ptr/requirements/explicit_instantiation/explicit_instantiation.cc
! 52aac4835e25d76a42cd5973faadb39d  libstdc++-v3/testsuite/20_util/unique_ptr/requirements/pointer_type.cc
! 9afc606896312df4099a53e4e461d9ee  libstdc++-v3/testsuite/20_util/unique_ptr/requirements/pointer_type_array.cc
! 2ea4d4ee853400f0337bf2d3ea7555db  libstdc++-v3/testsuite/20_util/unique_ptr/specialized_algorithms/comparisons.cc
! c6e7d726a805ae525f9dfc396153763b  libstdc++-v3/testsuite/20_util/unique_ptr/specialized_algorithms/comparisons_array.cc
! f6b1423166eea3f3de82bc093062eb10  libstdc++-v3/testsuite/20_util/unique_ptr/specialized_algorithms/swap.cc
! a388514e39aec22d54a010931beddbb9  libstdc++-v3/testsuite/20_util/unique_ptr/specialized_algorithms/swap_cxx17.cc
! 4fc6332b15533c67cc272f43518900ae  libstdc++-v3/testsuite/20_util/uses_allocator/69114.cc
! 9dce70783d82a4b01d034ce65ef57e89  libstdc++-v3/testsuite/20_util/uses_allocator/69293_neg.cc
! 735da1bc344b5ad87b0589c311bfdfdb  libstdc++-v3/testsuite/20_util/uses_allocator/cons_neg.cc
! 2979bef400f00e700aa38ed080957420  libstdc++-v3/testsuite/20_util/uses_allocator/construction.cc
! 74802816e043227a8a53de168a36bea8  libstdc++-v3/testsuite/20_util/uses_allocator/requirements/explicit_instantiation.cc
! 07d36fdd99c8bc0e9a59346fef54f689  libstdc++-v3/testsuite/20_util/uses_allocator/requirements/typedefs.cc
! 18ab466b9954d9642be7d5722991de5b  libstdc++-v3/testsuite/20_util/uses_allocator/requirements/uses_allocator_v.cc
! bef7f6ce2b943bedcf36e62a23900963  libstdc++-v3/testsuite/20_util/uses_allocator/value.cc
! 701b35735b92d9bc2b835e2b6a402570  libstdc++-v3/testsuite/20_util/variable_templates_for_traits.cc
! 6dce45ca6786321a8ffe2301d256c870  libstdc++-v3/testsuite/20_util/variant/any.cc
! ba11b2c64461d43f61dcc30cec0af51e  libstdc++-v3/testsuite/20_util/variant/compile.cc
! 63b131c0c4954980a4496c9c9125608e  libstdc++-v3/testsuite/20_util/variant/deduction.cc
! 645bba71399f63755670c859f3a709d9  libstdc++-v3/testsuite/20_util/variant/hash.cc
! 14e588585a8caa721d96a32aeb049989  libstdc++-v3/testsuite/20_util/variant/index_type.cc
! 9be2e22febf655350e1c131dc5462e24  libstdc++-v3/testsuite/20_util/variant/run.cc
! 079e69823a508518da6e9867b4761592  libstdc++-v3/testsuite/20_util/void_t/1.cc
! f9e5a024676f4bc18386c73841a588e6  libstdc++-v3/testsuite/20_util/weak_ptr/comparison/cmp_neg.cc
! ff82d7967d35db5a23b36c115d41ea8d  libstdc++-v3/testsuite/20_util/weak_ptr/cons/constexpr.cc
! 2a15fe2d50c7a28c25d9fb3e5b6290fd  libstdc++-v3/testsuite/20_util/weak_ptr/cons/deduction.cc
! a30cd1ff67060f0fa007d5eae9cbb1a2  libstdc++-v3/testsuite/20_util/weak_ptr/cons/noexcept_move_construct.cc
! cf53368fd29fb92a7828e51b1a69811f  libstdc++-v3/testsuite/20_util/weak_ptr/lock/1.cc
! cc7363cc77e930f75be5bc245259ac42  libstdc++-v3/testsuite/20_util/weak_ptr/observers/owner_before.cc
! 63bf78f772cf4db9ec5143e342f440a3  libstdc++-v3/testsuite/20_util/weak_ptr/requirements/explicit_instantiation/1.cc
! cb3c5913d5dc19ec31de1eade2dbb4d1  libstdc++-v3/testsuite/20_util/weak_ptr/requirements/explicit_instantiation/2.cc
! 012fac89cc128f94a1b9c4e2d4dbb287  libstdc++-v3/testsuite/21_strings/basic_string/40160.cc
! 9875c0c91de119217560e134bf5eb67c  libstdc++-v3/testsuite/21_strings/basic_string/56166.cc
! d14332ab4e9c65bda2b0e92537308f76  libstdc++-v3/testsuite/21_strings/basic_string/79162.cc
! 6eb35c7350d131c88c2757f4bd647b21  libstdc++-v3/testsuite/21_strings/basic_string/allocator/71964.cc
! 47d69ef04170b6977105be196de7c754  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/copy.cc
! cc75050846d6d14c30b69229cf5c88df  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/copy_assign.cc
! f9f4ce59b536a0ee10a75828096440cf  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/minimal.cc
! f38c0f9ca544573770bb8e2666c6e761  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/move.cc
! 3298bd1da9d33e033957a19909f3cc25  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/move_assign.cc
! 9a2fa145337a3e2f5374e4c53f217bb8  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/noexcept.cc
! 6f9b03e97e590d3f0df4c07821048187  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/swap.cc
! 95cf628d1a99a13491547d2ef8f3231d  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/copy.cc
! 9dcf10065437db9f1466108208503805  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/copy_assign.cc
! d6e47af176a8914693c9c1ba4650e2dc  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/minimal.cc
! 20f48387230d95a96cb8d9a811ada3fe  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/move.cc
! 24ffdbad84e65a4aa887ad258021566e  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/move_assign.cc
! 76c603be5f1a80e6ecf31c926e81ac97  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/noexcept.cc
! 533cdf3c443fa525791f03cd4866f6cc  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/swap.cc
! b7ac369fbcfeb758fbb9cc4f205b1112  libstdc++-v3/testsuite/21_strings/basic_string/capacity/1.cc
! d8b92a5c7d1ee0e73fb971c245522de3  libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/1.cc
! 185413a6cf98757c241b950fdecbc740  libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/18654.cc
! 993770932cc2633b5967a08e26bbe4b4  libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/2.cc
! 99580a18d5068c908cf04167c1867950  libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/shrink_to_fit.cc
! 592bbe1230cffad242138464ca4b5a77  libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/1.cc
! 1e50c97ffae9ab2185754521dfa01c37  libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/18654.cc
! 1565cf2fb4b74ce4ad33b05b76d0b23f  libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/2.cc
! 7cc899d016acd89698252a0d8ede6f2f  libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/shrink_to_fit.cc
! 6ba262eca30176350a6e6f04b86205bb  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/1.cc
! a606586203b9ee332866af8138f084f1  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/2.cc
! 7fb5ff49c79d7b67de5d4f132f480745  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/3.cc
! b211beb698ac876377311e7d1c9bc02d  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/4.cc
! 77b9cf0acf1b607a8101a72df9f89c63  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/42261.cc
! f23a65a93cfd7d4ff409d34fd2448cbd  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/5.cc
! 7cde214a8437760166ea96be46ee2b82  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/6.cc
! 1eccdafb7bdab3edb3d44e22e11eeedf  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/64657.cc
! 96b0adcef646b307c6b36023b4e83ec9  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/65085.cc
! f5186295e269c819d05125030bebe0a3  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/69092.cc
! 94bc91f0bcdb9fe9203e9946426297fb  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/7.cc
! d505a67e8a6d0e0ad9175eb672bb5f6f  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/79162.cc
! 451d74335d2894a26a2b31ca7aa3be25  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/8.cc
! f5da1e716eebc9cc85fca0e9c0a7258b  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/9.cc
! 8ef3d6460e56560496e282c49ae76b11  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/moveable.cc
! b51c1c92d7b3dc4ed705d0ef4ad3d6e5  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/moveable2.cc
! 24c34181d2ac75049923ff642567650c  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/moveable2_c++17.cc
! 777e9c5a230aa2d45e7c653f80e8c9d9  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/noexcept_move_construct.cc
! d66c73c34cfb97f08e42bb7c4ea0e623  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/1.cc
! bf1ad9a824d3abf212099174258945de  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/2.cc
! 506dea945723579fd9fb2b1fd95ddaeb  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/3.cc
! 29b0f79b5782764d4be7b337a3ea9a1d  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/4.cc
! 44633c11e6f34b07f5368c9a647485b7  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/42261.cc
! 4af41d315e44fc486a2baa9b6b4b916d  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/5.cc
! bd613ce9080fd03b2e1ea1c43e9d8cf5  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/6.cc
! 7b808703eb82f1ae31f5c4a203d59d30  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/7.cc
! d505a67e8a6d0e0ad9175eb672bb5f6f  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/79162.cc
! cbbbabedcecccd44510ef377da5c3293  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/8.cc
! 7d22b0658735373d4bc76198dd8b24f7  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/9.cc
! 313b21d61eaae2be3a7124aa8acdc7bc  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/moveable.cc
! a85694590fb56e0858e1067f23532abb  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/moveable2.cc
! 9dae37675bb2f8d447e7adbcf4a1e945  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/moveable2_c++17.cc
! eb421929dadc0eed331bd9d6775ca3b8  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/noexcept_move_construct.cc
! 805be3df93b281abb4e40ac3291f4fe2  libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/1.cc
! 326d734ce143b7c14533a2c495e8523f  libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/2.cc
! 43d77fdcb68454a95ce4e5844f671b7d  libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/21674.cc
! 9ccd2cda47b43fa633011541ac6674a4  libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/3.cc
! 2809a481eed4df93c1b1d6b487102787  libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/4.cc
! e03e0dc82615a064886a7539c4a5eeee  libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/58163.cc
! 44d0480f4023b8c6946dff421211e3c3  libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/empty.cc
! 95a3e8ac62fb2807440c3bb81872d274  libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/front_back.cc
! a1ab5832998658bd619f3d9fcdd4c59e  libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/1.cc
! 16cc8f440fa59345f4f11e8b10f91499  libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/2.cc
! e505758a44247eec916ac82a872721fc  libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/21674.cc
! 2bfaee2c37c0a53e56f07b754432c5d0  libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/3.cc
! 0efb1145e9ecc6c564514f34caac2f9f  libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/4.cc
! bb30ad30196b2dbf3526bdee52bb7fcf  libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/58163.cc
! 82ad1877b285c7d96f537bb828d5c9c2  libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/empty.cc
! 3cbfd3f349e0d95950a184560d687ecc  libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/front_back.cc
! 277022b4bca82078aa66266083e4ce89  libstdc++-v3/testsuite/21_strings/basic_string/init-list.cc
! e169a2b7d76e542a9af0f177da579211  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/1.cc
! f1122bd668294364b401ea4538b69b93  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/10.cc
! e67e906176a51982f70a8cbc1facac18  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/11.cc
! 0180e6076f672d8e3b63f9930fdcc4f6  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/12.cc
! fabb1e000aa48d383de5a16eb4ef72f9  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/28277.cc
! 9c1ffde2065d2e9273064d2baaf80932  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/4.cc
! d7b947a15afe67f482872f4186e6e3e8  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/5.cc
! eb85f58553a853d0450e3651d452ef05  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/6.cc
! 5683a3c466e091ea107798b120a39515  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/7.cc
! 4f19d02d3f673d652c3237ac13f74c36  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/8.cc
! 107bd08c04ba6c42d28c986bb5d65359  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/9.cc
! bdeecade4c7f48be3d8cbca00c2c243f  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/pod/10081-in.cc
! 28a8155f2c7fdd394aecf72bdf5dd405  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/pod/10081-out.cc
! e0d5467312a1c2bc96589e27f4a09ae3  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/1.cc
! d0d4a10530ba21f23f3f299d15f9fb91  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/10.cc
! 8158fd5d5ea512d8066bf71d37d57580  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/11.cc
! df1ee8f5bc50f1f3229bba1293b6df47  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/12.cc
! 0a3669f559e334382c404e972e2d3c60  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/28277.cc
! 982ca00eaf9dc4673545e4cdaa4747ab  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/4.cc
! e9cb1b6be9aa757e0206a1d14c47cd33  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/5.cc
! 5b389db6b87653196adcf278ee89dc01  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/6.cc
! f78cdafc7ce2b584772b69194f3ecc13  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/7.cc
! 0efebfcea8dfc3ab0cbabafb67b9a1ba  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/8.cc
! dd309f6a38810cab1cd9735210e761a2  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/9.cc
! bb53821e7de4774cd5ae363edecb564f  libstdc++-v3/testsuite/21_strings/basic_string/literals/types.cc
! 138c93dfc8ad4b52486eb467d1ee50d3  libstdc++-v3/testsuite/21_strings/basic_string/literals/values.cc
! 71394086535610c1fb76caa682f45c78  libstdc++-v3/testsuite/21_strings/basic_string/lwg2758.cc
! 529f1b190dfda449a8c49fbc05cadb88  libstdc++-v3/testsuite/21_strings/basic_string/lwg2946.cc
! b0cf499d2c616c466343e93dd034cdfb  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/64422.cc
! 3ca192726706026ed4d4013c27e8e2f3  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/char/1.cc
! 25097734945e714451ab105fd05f6338  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/char/2.cc
! d4a640139592c56c59a8400ee604759a  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/char/3.cc
! d7db663d6c649497647d23052348c41a  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/char/4.cc
! d032ad7d1810f163dae71ebbd214fbe1  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/wchar_t/1.cc
! f73abe6b8401ca930ccf9ec74ff7704f  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/wchar_t/2.cc
! cf0291c5f80c21657719f97bacf5ab44  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/wchar_t/3.cc
! 090e432248e4c88ced58b0cec8e9f012  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/wchar_t/4.cc
! 89be21fefc8ca4669439491a69ebcd86  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/1.cc
! ead4d38555a56ac529ca512a092f3fb3  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/2.cc
! c3e9d4457bf60a4d0d22241c5c381791  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/3.cc
! 6c7f2f256874b40871c8a0ad14c054c1  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/4.cc
! ff79816f7440b16e1fa6e03fd856800c  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/64657.cc
! 0140e87d866153406e378b570002f9e0  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/move_assign.cc
! 474d3e409784ded1351b253052a2de5b  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/1.cc
! 9ab70df11296fc0e0f2a617af4dfa9d7  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/2.cc
! e4007c16c7bb2e902f8c85ed33b6c67f  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/3.cc
! bb51e606898112d11abd68dd40cf793e  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/4.cc
! ce362d31c38a7de0cc9cdb3cdcf24666  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/move_assign.cc
! 887918cfb7a0ab27efec6d7e66ef6a78  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/char/1.cc
! 367a2d3e296b8b1f797b0ef91a550d53  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/char/2.cc
! 6d4c3cdfb5840700322f7db5ecbb4225  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/char/3.cc
! 6f0a2d30e5633f6151f237bfbec5deab  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/wchar_t/1.cc
! ea9328a94cf1fb26176d064c15ee7731  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/wchar_t/2.cc
! 6ad6dcd2ab42fd4af412bcc479c052d4  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/wchar_t/3.cc
! 972282e4543a1205dc2859657f23b4cf  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/pop_back/char/1.cc
! f01e6c69d561856430fd70f4bb6af7e5  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/pop_back/wchar_t/1.cc
! 06cb2294fdedca2bca78c32aec811e84  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/1.cc
! ba5781fa9b3569a10d65b4053e354aee  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/2.cc
! e5fc8558ec26e419da62bfea309c2881  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/3.cc
! ff1753b1c907d375fabcfe705a571724  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/4.cc
! 9084274a0cde27a7c12b6f7d34dc6521  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/5.cc
! ca69141bbe6af7194829e4483b6e68ae  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/6.cc
! eb2693a90e52bbb12b288df25e9016a8  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/7.cc
! 0f07eec9c6ff42af5cd1eb8b9227b22f  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/1.cc
! 4b085abe5d19952035c82e66111c8d5a  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/2.cc
! c87afebd3d2f0e15871f9660a0e001db  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/3.cc
! 406591be87dd17ff129f7ea63e1fab23  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/4.cc
! 26e5dd5f0fb69db66fbe19b8069275a7  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/5.cc
! fbd8e3805e4db2c735e2a089fed35db3  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/6.cc
! e755d561aa6c7a320674d60bd855645b  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/7.cc
! fd17690e3858e793709114a6a33c93c7  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/dr1261.cc
! 5d1b3dfb95fd55f3155d14c9049b7b21  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/errno.cc
! 7d57ebb693351007a68a90348db65fee  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stod.cc
! 1002550bdbf06278b93ff5669cb7f06e  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stof.cc
! d677f3f44f273003d158ba241e11ae57  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoi.cc
! bd2e89dc932bfa301026a73dad0aabaf  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stol.cc
! a06caa089bdf1c3334ecee069a8a65fa  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stold.cc
! 2f363eae53ec70811e4c9acc1a73188e  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoll.cc
! cf5017522c05cf11bd2be81c37f33d29  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoul.cc
! 9d6a11cbb87fe57026747d4ea7fa2357  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoull.cc
! 08428868f58d7433457a9ce275ac95a3  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/to_string.cc
! 93f89cf590d5f243521b6990909f7e56  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/dr1261.cc
! 12f06fe67950fe0060f941ea10d8a33f  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stod.cc
! 688aff2974dc478de3b456966a5a9528  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stof.cc
! 9cd56e07e6c3d50d5703e3845293a60a  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoi.cc
! c8f4cf4c35f973df1c66b49c459db293  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stol.cc
! 2c48b10fd7d2c3c54df1f75ebe654187  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stold.cc
! c442192727e4c4859bb254ea1f4ddf81  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoll.cc
! 0668b99eaf3e3dae9a782a31aa99e32f  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoul.cc
! d49d7f1a339017344999d63473b70b05  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoull.cc
! 40e8539fc7fee90fc99314203ed2279d  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/to_wstring.cc
! 42610f499ce7e3250c12642c480a9a12  libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/char/1.cc
! be1c4d4c7b46178d5fc2a78d1c9318c1  libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/char/13650.cc
! 94724bd592153b02192dab1215e8fab4  libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/char/2.cc
! 4b70849fc4059accbbce28ef35c1689f  libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/wchar_t/1.cc
! e7fe26986ca87986cd693cb7186a31ea  libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/wchar_t/13650.cc
! 58f8131efef73c3284108657ab31ced9  libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/wchar_t/2.cc
  da3f700a53d22cd029a604673e059e11  libstdc++-v3/testsuite/21_strings/basic_string/operations/data/char/1.cc
  9c862000398e6a89b8c4cc17fe666c2c  libstdc++-v3/testsuite/21_strings/basic_string/operations/data/char/2.cc
  ca74682c72cb547cf309e380caad822d  libstdc++-v3/testsuite/21_strings/basic_string/operations/data/wchar_t/1.cc
  896589bdc779441eea34071f745eaa6f  libstdc++-v3/testsuite/21_strings/basic_string/operations/data/wchar_t/2.cc
! d692a2fe1964e799ff615e00151d1157  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/char/1.cc
! bc013fc707308139a2de37ace23fc68b  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/char/2.cc
! 3532e5ca20e6d490334db983dcd2e91b  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/char/3.cc
! c899b17112db5eed54598da1adaecfca  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/char/4.cc
! 4d314f0a483f6f90a34670885ff102a1  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/char/5.cc
! dbd6c80a52cecadfc784bea602fe0d54  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/char/6.cc
! 1a92a8bc52494e104775077ec57a394f  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/wchar_t/1.cc
! 2cb22622289f7c0cbb254ff74405888a  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/wchar_t/2.cc
! 15c97cdb744c4a7f5e200d88e1fc02b2  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/wchar_t/3.cc
! 540954c4203f56de6b4b787f846a2373  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/wchar_t/4.cc
! cb528c40bc0638178bbeff0504f128dc  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/wchar_t/5.cc
! d0e1b45934bdb6975997c4c047772d2c  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/wchar_t/6.cc
! 035010b940b990adff2b9b86a00868d4  libstdc++-v3/testsuite/21_strings/basic_string/operations/rfind/char/1.cc
! 752a18ac145108f34862d4eeac7d78cb  libstdc++-v3/testsuite/21_strings/basic_string/operations/rfind/char/2.cc
! 5af64d1afa99fca22316f5e4638d8dd2  libstdc++-v3/testsuite/21_strings/basic_string/operations/rfind/char/3.cc
! 53bfadb29f3c222fef50bf50e6a53296  libstdc++-v3/testsuite/21_strings/basic_string/operations/rfind/wchar_t/1.cc
! 40be432457f2c68965295192fc9080cb  libstdc++-v3/testsuite/21_strings/basic_string/operations/rfind/wchar_t/2.cc
! e5ecf572548f0f58cccebb302b3e7d08  libstdc++-v3/testsuite/21_strings/basic_string/operations/rfind/wchar_t/3.cc
! b2c492d8c38797d438f145644b3e3cbf  libstdc++-v3/testsuite/21_strings/basic_string/operations/substr/char/1.cc
! ded2d39ac16ed9ab5044db7f31a8fe86  libstdc++-v3/testsuite/21_strings/basic_string/operations/substr/wchar_t/1.cc
! 3e8db505e825040d05b6f802c62d769b  libstdc++-v3/testsuite/21_strings/basic_string/operators/char/1.cc
! 0d1debb953b6d947fbac36b8ab02b9b6  libstdc++-v3/testsuite/21_strings/basic_string/operators/char/2.cc
! 6766e279773c238b6d60f9fe886ee157  libstdc++-v3/testsuite/21_strings/basic_string/operators/char/3.cc
! 0d190a790e2009d1cde078e10d558223  libstdc++-v3/testsuite/21_strings/basic_string/operators/char/4.cc
! 1a31d816aa0cafb44c0984357b80340c  libstdc++-v3/testsuite/21_strings/basic_string/operators/char/5.cc
! e8c0bac2802d33f72cd91a5d380776f8  libstdc++-v3/testsuite/21_strings/basic_string/operators/char/65630.cc
! 5d3cb1b08a2d34c4291005ff68c453d9  libstdc++-v3/testsuite/21_strings/basic_string/operators/wchar_t/1.cc
! 53edcb4af744b08791b0273d49a78f45  libstdc++-v3/testsuite/21_strings/basic_string/operators/wchar_t/2.cc
! 497338a22aee370cef15a9d91ee9fba7  libstdc++-v3/testsuite/21_strings/basic_string/operators/wchar_t/3.cc
! 9784fe5c507c12f328a941ce7c8eb423  libstdc++-v3/testsuite/21_strings/basic_string/operators/wchar_t/4.cc
! 335ffc8930776a90ac2a5f74288d5aa2  libstdc++-v3/testsuite/21_strings/basic_string/operators/wchar_t/5.cc
! 3afef57cc8e25bf6e7cd9339d29cb390  libstdc++-v3/testsuite/21_strings/basic_string/operators/wchar_t/65630.cc
! ae1e56d437d3a1de3061129bee8dcc14  libstdc++-v3/testsuite/21_strings/basic_string/pthread18185.cc
! abdd2ccfa02a9ace9fed951949453574  libstdc++-v3/testsuite/21_strings/basic_string/pthread33394.cc
! 4444d8df007640d9985f5bcd26d16929  libstdc++-v3/testsuite/21_strings/basic_string/pthread4.cc
! 05d1cf6ca02420ff4399538fb20baf23  libstdc++-v3/testsuite/21_strings/basic_string/range_access/char/1.cc
! ab4538d0a1e4dfbb60e457ee1322c9d7  libstdc++-v3/testsuite/21_strings/basic_string/range_access/wchar_t/1.cc
! 126227037f08ecc4188eb41d5a438425  libstdc++-v3/testsuite/21_strings/basic_string/requirements/citerators.cc
! 3c0123f07663794acf35d91039260207  libstdc++-v3/testsuite/21_strings/basic_string/requirements/dr438/constructor.cc
! b6ccce150442f330de23e60f13f2c758  libstdc++-v3/testsuite/21_strings/basic_string/requirements/exception/basic.cc
! 2b28b5d6045c5217c42e05f91eef59ae  libstdc++-v3/testsuite/21_strings/basic_string/requirements/exception/generation_prohibited.cc
! 8093c2487cead80492544d73fee844fd  libstdc++-v3/testsuite/21_strings/basic_string/requirements/exception/propagation_consistent.cc
! 9098fe1d1417e80d241ab72d96f22668  libstdc++-v3/testsuite/21_strings/basic_string/requirements/explicit_instantiation/1.cc
! ea9e16af357633c0705047820a010db8  libstdc++-v3/testsuite/21_strings/basic_string/requirements/explicit_instantiation/char/1.cc
! af8268c03c94ca3e845c9364129a367c  libstdc++-v3/testsuite/21_strings/basic_string/requirements/explicit_instantiation/char16_t/1.cc
! e90b29f8415bf4cf56f27c22dc9a32ba  libstdc++-v3/testsuite/21_strings/basic_string/requirements/explicit_instantiation/char32_t/1.cc
! c5f77f052b95e55822945a7f7d5fd9ef  libstdc++-v3/testsuite/21_strings/basic_string/requirements/explicit_instantiation/debug.cc
! 59886c18a356cbdf9ce91280eba67971  libstdc++-v3/testsuite/21_strings/basic_string/requirements/explicit_instantiation/wchar_t/1.cc
! c33abfada142ee990d48e3ca824d8012  libstdc++-v3/testsuite/21_strings/basic_string/requirements/typedefs.cc
! fd487948c6c4e98142840a84a49950c7  libstdc++-v3/testsuite/21_strings/basic_string/types/1.cc
! f36770d540474dc32542920bc02b293d  libstdc++-v3/testsuite/21_strings/basic_string/types/23767.cc
! 7d7f8bd70a5a90ee04b6700d92baa64c  libstdc++-v3/testsuite/21_strings/basic_string_view/capacity/1.cc
! 9548ce02429ce07aab10dd35e912af75  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/char/1.cc
! a2ab7f37ed2dea8d794d5fb2465200dd  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/char/2.cc
! 5be77c421b058ac9406b6b33ab9f6ac4  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/char/3.cc
! a88b2d4e563f3b5884e179d7453a2bdf  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/wchar_t/1.cc
! bd4dc0e23b6906614d0eb8e8a13b6893  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/wchar_t/2.cc
! c760a37ec15a6db618dedfb8f33d3f29  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/wchar_t/3.cc
! 673e925cb94a7d60cebc5242386040c9  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/1.cc
! 6bc7a63a2c9cf983954d3560f26581b5  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/2.cc
  5b0aa2d0970d389896383f28b70b7eab  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/empty.cc
! b219382703dae3335a10cc25e30bde75  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/front_back.cc
! edee01f6e6b05b5212af755f2d57dff6  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/wchar_t/1.cc
! 0ddbae66cf5feb612be5e3f5e45196c5  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/wchar_t/2.cc
! 47c1e7af59e2c7161b8035e37a4f318c  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/wchar_t/empty.cc
! 2983088251871df3e37eec637f9cfc29  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/wchar_t/front_back.cc
! 00016f3907a94826d16568864c5b0635  libstdc++-v3/testsuite/21_strings/basic_string_view/include.cc
! 7515c3e665dfc1c509fbd6cddcbd8ab2  libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/char/1.cc
! f4d0723016c44b4f2cb14c903404e145  libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/char/2.cc
! 8ce8fb2266481f4dc2dfbf9ecfdf6dda  libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/char/3.cc
! b31a6c6052e71e511bf29a0763ee7d08  libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/pod/10081-out.cc
! 959f6ba86b2e3d9cc212a631d3de2ae9  libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/wchar_t/1.cc
! 988bc797cc2c803e3bb017605488c6dd  libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/wchar_t/2.cc
! 55cbf3db1c3c37d849318219c0686ab3  libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/wchar_t/3.cc
! 0a622a1e1eedcf0bbc224ba77eb3941b  libstdc++-v3/testsuite/21_strings/basic_string_view/literals/types.cc
! dc4bcd4611733da392e5d23761a70071  libstdc++-v3/testsuite/21_strings/basic_string_view/literals/values.cc
! 60f250d631dbfae277c72c6c9768c269  libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/remove_prefix/char/1.cc
! cba01fbf9914c7550ce11a6ece62f7ea  libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/remove_prefix/wchar_t/1.cc
! 1f3c39b0b63ffce6c7d0dd347c8110cd  libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/remove_suffix/char/1.cc
! e1eac545693ecb37ee100b7b9c8ab69f  libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/remove_suffix/wchar_t/1.cc
! 7573336cf6d89e6dfb2a47a6e875c063  libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/swap/char/1.cc
! aad7e0d2e57cadd2a5eaba8217fa4d8e  libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/swap/wchar_t/1.cc
! 87bf64805c95ff2e5df9a807d8f6a404  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/1.cc
! 0922a5006e85b7f17aca6f14782b6c15  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/13650.cc
! 41061ad2d1a88d9bd07fe6fba161d6a3  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/2.cc
! e2e91cc982b6c9f58bbb5010e2221924  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/70483.cc
! b00a6b83717aa40a04cad256321df4c1  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/wchar_t/1.cc
! 887c0baef988b53271b8460548916d7b  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/wchar_t/13650.cc
! c22434b2b5c2fff6e7c940b0ff75e718  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/wchar_t/2.cc
! b0d715054fde24681f7c69680f7cca9c  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/copy/char/1.cc
! ffc05177a426035ed4161be9083d194e  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/copy/wchar_t/1.cc
  b178593999d92cbe5e29f11ccb26422c  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/data/char/1.cc
  0dab42efa58d63a01667ea2a23b61401  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/data/wchar_t/1.cc
! 08e443ddd1c1933970521f05bdc5da05  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/char/1.cc
! bcc6ddfbb949cd0151b2a10724d99e7e  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/char/2.cc
! 417df4be99727b279875989933e0426a  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/char/3.cc
! c8ab1d5a42235fbe208dfab794d42f2b  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/char/4.cc
! c48c955a10321e014a115a435acaa514  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/wchar_t/1.cc
! 4e0f0a32812e95c381143bfdbccbe543  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/wchar_t/2.cc
! 55c558dbc311e72f20660f861c78b543  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/wchar_t/3.cc
! 8db06707f8f2dfb65771032550db6e85  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/wchar_t/4.cc
! 74794bfc1ce1ff1599f8238afe4ed452  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/char/1.cc
! dcf23f2527e45764b4e90f2daf557816  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/char/2.cc
! 458bdd1c572128900b820e8ab7147403  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/char/3.cc
! a1a937a2d6c2cdceedc8908a911394b1  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/1.cc
! fb38b8ab89ed539d9be5d6cf6f8b820f  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/2.cc
! ca81a48619b78d25db0d67d261cded7f  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/3.cc
! 6a7eab056d368253046b1ae4a0cabf84  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/string_conversion/1.cc
! 43fe83b5a96bda0bc9df150f3c47e0ba  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/substr/char/1.cc
! 71638fb4ac0f80b78387519750158eb9  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/substr/wchar_t/1.cc
! 7104cca52c6c6a9076122af255b6f67f  libstdc++-v3/testsuite/21_strings/basic_string_view/operators/char/2.cc
! 2ab97edf19c09c17314ae78467413026  libstdc++-v3/testsuite/21_strings/basic_string_view/operators/wchar_t/2.cc
! c55e12bad78c344a1ca62c49d297153d  libstdc++-v3/testsuite/21_strings/basic_string_view/range_access/char/1.cc
! a6f49ca62b781914f628c01bf48fccf7  libstdc++-v3/testsuite/21_strings/basic_string_view/range_access/wchar_t/1.cc
! 4f451226a4f356f2447db97e3697b897  libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/1.cc
! 66abd915aeb4662f014d6294e3f9ed38  libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char/1.cc
! e7e9c452cdb811b4c5fe17eb993adc50  libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char16_t/1.cc
! f7fef68d66b94f46a0ae1a8a4d3cc5db  libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char32_t/1.cc
! 35ac96a4eaea15bd8cb781c2d4b307ae  libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/wchar_t/1.cc
! b54b8bd60a894312ae7bb8a471e5f2db  libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/typedefs.cc
! 4e57d7a6e62a8f511ecb0748c258a2d9  libstdc++-v3/testsuite/21_strings/basic_string_view/typedefs.cc
! 37eed4ecbece69ee74df22063dc72dfb  libstdc++-v3/testsuite/21_strings/basic_string_view/types/1.cc
! 3258ed5b6cc02f47e3272b0cbedec194  libstdc++-v3/testsuite/21_strings/c_strings/char/1.cc
! 90b6eeca036dc8459940e5b850fb5ffa  libstdc++-v3/testsuite/21_strings/c_strings/char/2.cc
! 9a9442ef9d0078352db4447a72470463  libstdc++-v3/testsuite/21_strings/c_strings/char/3_neg.cc
! 3a60f5eadb393447a9b1debb73d472ce  libstdc++-v3/testsuite/21_strings/c_strings/char/69626.cc
! 2a2bd4d92bc7d6ff83a38272db9bfeb8  libstdc++-v3/testsuite/21_strings/c_strings/wchar_t/1.cc
! 55ac5f7aab2ffa1353c2d80ca9138d46  libstdc++-v3/testsuite/21_strings/c_strings/wchar_t/2.cc
! 8911f968dfd00d7ccafc21b5d157c807  libstdc++-v3/testsuite/21_strings/c_strings/wchar_t/24559.cc
! 0e096adfb333a845fcd4892d76843e0e  libstdc++-v3/testsuite/21_strings/c_strings/wchar_t/3_neg.cc
! b711532cb173c5fee98cf4a04593fb54  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char/1.cc
! ff07a2fa69fd6750905c17b39b36eb4f  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char/57704.cc
! ced31fad3d5f4b1648f97adc9de45d90  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char/65049.cc
! bc147a543a17485fb07165306532c10c  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char/typedefs.cc
! 23a49586bdffdfcc5f10240a9be39991  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char16_t/65049.cc
! 2c3f9f62236116fde6887f07a7a10173  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char16_t/typedefs.cc
! 8ad2151d1fafb891f1303177c543ab02  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char32_t/65049.cc
! 8bf6bc125ece0144bd0cfc71118098c3  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char32_t/typedefs.cc
! d2b4056c380dbc13e3681c05f51182d0  libstdc++-v3/testsuite/21_strings/char_traits/requirements/constexpr_functions.cc
! 8342df89edd9c7c40032bfb5cc71d790  libstdc++-v3/testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc
! 357da0798b56d7af4c752050a1e5a2a3  libstdc++-v3/testsuite/21_strings/char_traits/requirements/explicit_instantiation/char/1.cc
! 0dedcdbd77ad49ccb80ceeb5c5e19874  libstdc++-v3/testsuite/21_strings/char_traits/requirements/explicit_instantiation/char16_t/1.cc
! a8acb01ba1fcffb49b74f99c91ffbbdf  libstdc++-v3/testsuite/21_strings/char_traits/requirements/explicit_instantiation/char32_t/1.cc
! de279570542513fa67665725fc18161a  libstdc++-v3/testsuite/21_strings/char_traits/requirements/explicit_instantiation/short/1.cc
! 3498900fb016ec35740ab23bf1e0fc52  libstdc++-v3/testsuite/21_strings/char_traits/requirements/explicit_instantiation/wchar_t/1.cc
! 08594828a27b0319c4abe04cf14637a8  libstdc++-v3/testsuite/21_strings/char_traits/requirements/short/1.cc
! 73649539d4895845b9cc7657a33f3d90  libstdc++-v3/testsuite/21_strings/char_traits/requirements/wchar_t/1.cc
! eedffdfb35a99f01d7e8a406fea5571f  libstdc++-v3/testsuite/21_strings/char_traits/requirements/wchar_t/65049.cc
! 4a0b3ad05133636b8f227ca0c398058f  libstdc++-v3/testsuite/21_strings/char_traits/requirements/wchar_t/typedefs.cc
! ea9c5bd18d39ee1344cdf3a1dddd78c8  libstdc++-v3/testsuite/21_strings/debug/iterator_self_move_assign_neg.cc
! bdcded67d43e40acf1f0031139bc4598  libstdc++-v3/testsuite/21_strings/debug/self_move_assign_neg.cc
! 3195ba6f2a3f9b554c566336b94e775f  libstdc++-v3/testsuite/21_strings/debug/shrink_to_fit.cc
! ea4eceba0e6d692ca7ff14c14f03eec5  libstdc++-v3/testsuite/21_strings/headers/cctype/functions_std.cc
! 1bc91b49277f7ceb3c88e194b6e94b82  libstdc++-v3/testsuite/21_strings/headers/cstdlib/functions_std.cc
! c14bc6b89eb132901b59ffb3ee483318  libstdc++-v3/testsuite/21_strings/headers/cstdlib/macros.cc
! 8854956a1bc0f2ca4fa6b197c780b727  libstdc++-v3/testsuite/21_strings/headers/cstring/functions_std.cc
! c14bc6b89eb132901b59ffb3ee483318  libstdc++-v3/testsuite/21_strings/headers/cstring/macros.cc
! a532d58be897978448f869188454998f  libstdc++-v3/testsuite/21_strings/headers/cstring/types_std.cc
! fd58a4ca300fa8ee0604b8416d43d6ce  libstdc++-v3/testsuite/21_strings/headers/cwchar/functions_std.cc
! a3e57f8df4bbe2da12dca9468ebc69e4  libstdc++-v3/testsuite/21_strings/headers/cwchar/macros.cc
! 2d8b6eb71e3b1d770ec19e02d15f984f  libstdc++-v3/testsuite/21_strings/headers/cwchar/types_std.cc
! 85e7e4bce1dc55f785e7c7b2d9ad55d1  libstdc++-v3/testsuite/21_strings/headers/cwctype/functions_std.cc
! 2e4aaf58758f4c9fd02668382fd1fcc5  libstdc++-v3/testsuite/21_strings/headers/cwctype/macros.cc
! 749b28769caa43d3a6844c5582dc102b  libstdc++-v3/testsuite/21_strings/headers/cwctype/types_std.cc
! fcc239b7e6101ebd2afe6c4734782810  libstdc++-v3/testsuite/21_strings/headers/string/synopsis.cc
! 82c98e41c64d1dcd6940f2dea8929abe  libstdc++-v3/testsuite/21_strings/headers/string/types_std.cc
! b73b22af6cdfbb2ab33d3b8836360c21  libstdc++-v3/testsuite/21_strings/headers/string/types_std_c++0x.cc
! 5ff50b91020258edd23d4bcc70ced9e6  libstdc++-v3/testsuite/22_locale/classification/isblank.cc
! fd497ba47d2ca4a4fd9741c5bbf17425  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/char/1.cc
! 8f4db25c61cdcaa2ff06b2cf6f1789d4  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/char/wrapped_env.cc
! 24a4f49f678bae28c179b0e8e7a0a193  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/char/wrapped_locale.cc
! 36918da39f555bee152f649f97920d32  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/wchar_t/1.cc
! 2d588d8d178fa57acd0255e6f823ede8  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/wchar_t/2.cc
! b0ca0fb862b54766b977d43bdb02aebc  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/wchar_t/3.cc
! b6f8aba7d47200123bea90513bfd9895  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/wchar_t/4.cc
! 8f4db25c61cdcaa2ff06b2cf6f1789d4  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/wchar_t/wrapped_env.cc
! 24a4f49f678bae28c179b0e8e7a0a193  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/wchar_t/wrapped_locale.cc
! 441516f8ba33dd7df9440f5fabd9058d  libstdc++-v3/testsuite/22_locale/codecvt/char16_t.cc
! 233fe7982f801b745e7805b39d8b7229  libstdc++-v3/testsuite/22_locale/codecvt/char32_t.cc
! 7680f548b46d9315534876b7916897e1  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/66417.cc
! b59930931ab0756e3a99b900cbadf303  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/79980.cc
! 1c8529e26494931134d69c9d85c5864a  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/80041.cc
! b401b5f49d27dcc14cb2f8fc5518ad0a  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/members.cc
! 0232727b4ef5f9d7a55164d70075af2c  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/misaligned.cc
! 628c9c274f07e7d0786e137d7b120f6d  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/requirements/1.cc
! e83af2cbebdce1cc9de5eb30d07bdb89  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/69703.cc
! 6d036cd16e2b152bc495f87d19ba75b6  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/79980.cc
! 48a19c06bd558fc0cc79f04b6eba976d  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/members.cc
! 500466916bb7a5a259c23b63a48eebe7  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/requirements/1.cc
! 3d51239abfc192aa54efb3f697b04b80  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/66855.cc
! bc8366ae0b770af4ad2295e1b00ae27b  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/79511.cc
! 9fa291011214705ff29b9c858d91395f  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/members.cc
! 2906e7c62c1b4bf7f1e62c9eeeed9885  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/requirements/1.cc
! 5e872572c54ab7a706b4c1a096a06929  libstdc++-v3/testsuite/22_locale/codecvt/encoding/char/1.cc
! 8f4db25c61cdcaa2ff06b2cf6f1789d4  libstdc++-v3/testsuite/22_locale/codecvt/encoding/char/wrapped_env.cc
! 24a4f49f678bae28c179b0e8e7a0a193  libstdc++-v3/testsuite/22_locale/codecvt/encoding/char/wrapped_locale.cc
! ad483317213c24e283ef9b34bfbff035  libstdc++-v3/testsuite/22_locale/codecvt/encoding/wchar_t/1.cc
! e4b5d4532ebdb52274bfe0862cdfc287  libstdc++-v3/testsuite/22_locale/codecvt/encoding/wchar_t/2.cc
! 1174bb3f88b9627b2768a79886d9f950  libstdc++-v3/testsuite/22_locale/codecvt/encoding/wchar_t/3.cc
! 9a10598c3b3db990d9210efac7db7d3a  libstdc++-v3/testsuite/22_locale/codecvt/encoding/wchar_t/4.cc
! 8f4db25c61cdcaa2ff06b2cf6f1789d4  libstdc++-v3/testsuite/22_locale/codecvt/encoding/wchar_t/wrapped_env.cc
! 24a4f49f678bae28c179b0e8e7a0a193  libstdc++-v3/testsuite/22_locale/codecvt/encoding/wchar_t/wrapped_locale.cc
! cfb3706b1bab748d5cc61146d1ce1afb  libstdc++-v3/testsuite/22_locale/codecvt/in/char/1.cc
! 8f4db25c61cdcaa2ff06b2cf6f1789d4  libstdc++-v3/testsuite/22_locale/codecvt/in/char/wrapped_env.cc
! 24a4f49f678bae28c179b0e8e7a0a193  libstdc++-v3/testsuite/22_locale/codecvt/in/char/wrapped_locale.cc
! 5715acc54b6cb8f99d09758eb470ad60  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/1.cc
! 20a0f0a2807999a56a3ef6e647963ef1  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/2.cc
! 055fe6d5b1ab3bc357db8e136311ecde  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/3.cc
! 1a2c8646e10eb38f487e6cf34a8a64aa  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/4.cc
! cf183519dc2852f1ee243ff758b5a49e  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/5.cc
! d8cf647b6d8e600ca8db7af4399b276b  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/6.cc
! af9c7a5f2431542fec9d28779f89aa78  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/7.cc
! be6daedd8fb5b7c9d31cd41831d4bf79  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/8.cc
! a97f7403ede40636535b654a23d60833  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/9.cc
! 8f4db25c61cdcaa2ff06b2cf6f1789d4  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/wrapped_env.cc
! 24a4f49f678bae28c179b0e8e7a0a193  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/wrapped_locale.cc
! 58c919617f326f329b6193ffaedcd6ab  libstdc++-v3/testsuite/22_locale/codecvt/length/char/1.cc
! 03a7e3305badfad57be868ed65e171a8  libstdc++-v3/testsuite/22_locale/codecvt/length/char/2.cc
! 8f4db25c61cdcaa2ff06b2cf6f1789d4  libstdc++-v3/testsuite/22_locale/codecvt/length/char/wrapped_env.cc
! 24a4f49f678bae28c179b0e8e7a0a193  libstdc++-v3/testsuite/22_locale/codecvt/length/char/wrapped_locale.cc
! 2d14c8862556d81ba15df2a402024709  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/1.cc
! 5d107b0642b1a118263eab3eee56f568  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/2.cc
! bdcd34ebf9deee26d785840c52c3ef73  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/3.cc
! f5912cbfe26a31daa824938bc0c44716  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/4.cc
! 84fa5d34b293cc1846d34dac13f77730  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/5.cc
! bdb5f33af1c0acfe7c6291ef9183fd19  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/6.cc
! b4863331b595e02a60f7590210ca9b7d  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/7.cc
! 8f4db25c61cdcaa2ff06b2cf6f1789d4  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/wrapped_env.cc
! 24a4f49f678bae28c179b0e8e7a0a193  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/wrapped_locale.cc
! bcb0647539fd6efab797c62b6d77834d  libstdc++-v3/testsuite/22_locale/codecvt/max_length/char/1.cc
! 8f4db25c61cdcaa2ff06b2cf6f1789d4  libstdc++-v3/testsuite/22_locale/codecvt/max_length/char/wrapped_env.cc
! 24a4f49f678bae28c179b0e8e7a0a193  libstdc++-v3/testsuite/22_locale/codecvt/max_length/char/wrapped_locale.cc
! 93b8c6d69e579e078ccc25a499c8c45c  libstdc++-v3/testsuite/22_locale/codecvt/max_length/wchar_t/1.cc
! d749cf7e4b58e6defe5de8e086b5c881  libstdc++-v3/testsuite/22_locale/codecvt/max_length/wchar_t/2.cc
! 84003fc01fea6707fbd95cd49191085b  libstdc++-v3/testsuite/22_locale/codecvt/max_length/wchar_t/3.cc
! cd1488b1507d749bf27f7351d68dcac6  libstdc++-v3/testsuite/22_locale/codecvt/max_length/wchar_t/4.cc
! 8f4db25c61cdcaa2ff06b2cf6f1789d4  libstdc++-v3/testsuite/22_locale/codecvt/max_length/wchar_t/wrapped_env.cc
! 24a4f49f678bae28c179b0e8e7a0a193  libstdc++-v3/testsuite/22_locale/codecvt/max_length/wchar_t/wrapped_locale.cc
! 54bc2c63f5997a2b82859e63d21e9a88  libstdc++-v3/testsuite/22_locale/codecvt/out/char/1.cc
! 8f4db25c61cdcaa2ff06b2cf6f1789d4  libstdc++-v3/testsuite/22_locale/codecvt/out/char/wrapped_env.cc
! 24a4f49f678bae28c179b0e8e7a0a193  libstdc++-v3/testsuite/22_locale/codecvt/out/char/wrapped_locale.cc
! 6922680646ad2546b4a6f74f6fe12bad  libstdc++-v3/testsuite/22_locale/codecvt/out/wchar_t/1.cc
! b547f885fc8183fa35516d6fc7bb8bc3  libstdc++-v3/testsuite/22_locale/codecvt/out/wchar_t/2.cc
! 5806c2c9a2e03949e2116d7da0fa43a7  libstdc++-v3/testsuite/22_locale/codecvt/out/wchar_t/3.cc
! 9a26196434c3ddf6ad6faa964e7063ce  libstdc++-v3/testsuite/22_locale/codecvt/out/wchar_t/4.cc
! c7ae3c146c6756e69ec766bdd98d9c9c  libstdc++-v3/testsuite/22_locale/codecvt/out/wchar_t/5.cc
! b838adea625e12c6152a1a34274b5a80  libstdc++-v3/testsuite/22_locale/codecvt/out/wchar_t/6.cc
! 7778d69547a43b641e38e11de578ff7e  libstdc++-v3/testsuite/22_locale/codecvt/out/wchar_t/7.cc
! 8f4db25c61cdcaa2ff06b2cf6f1789d4  libstdc++-v3/testsuite/22_locale/codecvt/out/wchar_t/wrapped_env.cc
! 24a4f49f678bae28c179b0e8e7a0a193  libstdc++-v3/testsuite/22_locale/codecvt/out/wchar_t/wrapped_locale.cc
! f13f5f7f843238b421ab062156fa3a78  libstdc++-v3/testsuite/22_locale/codecvt/requirements/base_classes.cc
! 04846663003f04ee382b1ec9e03e316d  libstdc++-v3/testsuite/22_locale/codecvt/requirements/explicit_instantiation.cc
! fd0ab646abbf72ad0a318f9bc9b9660a  libstdc++-v3/testsuite/22_locale/codecvt/requirements/typedefs.cc
! 5cb0c503fd14a9937a33668a868956b6  libstdc++-v3/testsuite/22_locale/codecvt/unshift/char/1.cc
! 8f4db25c61cdcaa2ff06b2cf6f1789d4  libstdc++-v3/testsuite/22_locale/codecvt/unshift/char/wrapped_env.cc
! 24a4f49f678bae28c179b0e8e7a0a193  libstdc++-v3/testsuite/22_locale/codecvt/unshift/char/wrapped_locale.cc
! 485ec27064a09b3a0b2bce19c9fb2447  libstdc++-v3/testsuite/22_locale/codecvt/unshift/wchar_t/1.cc
! 609857c74a20d669a11ed0b4fa57ec16  libstdc++-v3/testsuite/22_locale/codecvt/unshift/wchar_t/2.cc
! 24ee18273761763747aa672b10ef2bb0  libstdc++-v3/testsuite/22_locale/codecvt/unshift/wchar_t/3.cc
! 8002c877392c3baf3f66c5787b08eb64  libstdc++-v3/testsuite/22_locale/codecvt/unshift/wchar_t/4.cc
! 8f4db25c61cdcaa2ff06b2cf6f1789d4  libstdc++-v3/testsuite/22_locale/codecvt/unshift/wchar_t/wrapped_env.cc
! 24a4f49f678bae28c179b0e8e7a0a193  libstdc++-v3/testsuite/22_locale/codecvt/unshift/wchar_t/wrapped_locale.cc
! 0167a2f1ccff1be7f075fbfa51768698  libstdc++-v3/testsuite/22_locale/codecvt/utf8.cc
! 69e82c8b7d263f3fc28aaad12e9901ed  libstdc++-v3/testsuite/22_locale/codecvt_byname/1.cc
! d959ae491ce6a86697532ef507e0bef2  libstdc++-v3/testsuite/22_locale/codecvt_byname/50714.cc
! d3e61c359bcc33afeed690519b3caa35  libstdc++-v3/testsuite/22_locale/codecvt_byname/requirements/base_classes.cc
! f22706886d596c3e659937aa7276c344  libstdc++-v3/testsuite/22_locale/codecvt_byname/requirements/explicit_instantiation.cc
! 6d4f56b311ac1e22bf02226f28a910b4  libstdc++-v3/testsuite/22_locale/codecvt_byname/requirements/typedefs.cc
! 28918dbbd755684c17741aab8836c8b0  libstdc++-v3/testsuite/22_locale/collate/compare/char/1.cc
! 953fdb6ad00e54d5bacfc8156e848f84  libstdc++-v3/testsuite/22_locale/collate/compare/char/2.cc
! 7d252a7a7031f0e6ecff44be23b3cd3e  libstdc++-v3/testsuite/22_locale/collate/compare/char/3.cc
! a9e1648fcedfdee71ee78a060c65a91c  libstdc++-v3/testsuite/22_locale/collate/compare/char/wrapped_env.cc
! 674e31ee946c60ebf6d7215b7a850e0a  libstdc++-v3/testsuite/22_locale/collate/compare/char/wrapped_locale.cc
! 2ab97e90838dd83666a2b1667e83f0c4  libstdc++-v3/testsuite/22_locale/collate/compare/wchar_t/1.cc
! 091eb164ba81db23df44f16f91e64df8  libstdc++-v3/testsuite/22_locale/collate/compare/wchar_t/2.cc
! c21e62ee7f60d4d1f8fb24d5284a4ab1  libstdc++-v3/testsuite/22_locale/collate/compare/wchar_t/3.cc
! bc472b31f8d74d416b17ad65c65b0010  libstdc++-v3/testsuite/22_locale/collate/compare/wchar_t/wrapped_env.cc
! 0dd7ec5a713ffbd3c40931054261a692  libstdc++-v3/testsuite/22_locale/collate/compare/wchar_t/wrapped_locale.cc
! 4e62f826a54da5f4b7c1113fea992cc3  libstdc++-v3/testsuite/22_locale/collate/hash/char/1.cc
! a2ec893d62473542d7cf82ba4c70be9c  libstdc++-v3/testsuite/22_locale/collate/hash/char/2.cc
! 317c9890d101785b32c1c8fcc3a0a3c7  libstdc++-v3/testsuite/22_locale/collate/hash/char/wrapped_env.cc
! ced15bd36b7ab5b5d717ed20a0967f77  libstdc++-v3/testsuite/22_locale/collate/hash/char/wrapped_locale.cc
! 1528d5d82773da56c4653328a816c7c6  libstdc++-v3/testsuite/22_locale/collate/hash/wchar_t/1.cc
! 2adabaec4c164ffdc856609a4d31d064  libstdc++-v3/testsuite/22_locale/collate/hash/wchar_t/2.cc
! bc472b31f8d74d416b17ad65c65b0010  libstdc++-v3/testsuite/22_locale/collate/hash/wchar_t/wrapped_env.cc
! 0dd7ec5a713ffbd3c40931054261a692  libstdc++-v3/testsuite/22_locale/collate/hash/wchar_t/wrapped_locale.cc
! d90d5a7e905ddd316839bcef42bbb51c  libstdc++-v3/testsuite/22_locale/collate/requirements/base_classes.cc
! 05b5eef18910b49b7cdd4c9b0dc4dfd6  libstdc++-v3/testsuite/22_locale/collate/requirements/explicit_instantiation.cc
! 12bb8aadaec73e0d507448f51db945d3  libstdc++-v3/testsuite/22_locale/collate/requirements/typedefs.cc
! 11ea3f14f1db5293095e4ead4e5aa13c  libstdc++-v3/testsuite/22_locale/collate/transform/char/2.cc
! 24b1d49033a21376b34ed4afb22b50dc  libstdc++-v3/testsuite/22_locale/collate/transform/char/28277.cc
! e47c600cfabf7b41ff4ee0bd618bbc1f  libstdc++-v3/testsuite/22_locale/collate/transform/char/3.cc
! cb5e2a55a1bca18f7aa39365b8799b04  libstdc++-v3/testsuite/22_locale/collate/transform/char/wrapped_env.cc
! 5dfad0ebfa2fcc665f9ce6e9d8f45c72  libstdc++-v3/testsuite/22_locale/collate/transform/char/wrapped_locale.cc
! 949dba857a31859a303822c1d88c0808  libstdc++-v3/testsuite/22_locale/collate/transform/wchar_t/2.cc
! 33510f3104af8f2b20c7cf5872cfb589  libstdc++-v3/testsuite/22_locale/collate/transform/wchar_t/28277.cc
! 16b7ebad50d07ffe1d5fcd0a1c8af641  libstdc++-v3/testsuite/22_locale/collate/transform/wchar_t/3.cc
! ef4f713d730d28e9c935ee82a3e94d0e  libstdc++-v3/testsuite/22_locale/collate/transform/wchar_t/wrapped_env.cc
! d2bc3f8c91885415e28e4817348f3f23  libstdc++-v3/testsuite/22_locale/collate/transform/wchar_t/wrapped_locale.cc
! 41584a7a588807f7229d4a68e262bb0a  libstdc++-v3/testsuite/22_locale/collate_byname/1.cc
! 3ba51ead5b367fcbc824606602b30296  libstdc++-v3/testsuite/22_locale/collate_byname/named_equivalence.cc
! 848a578ece921b422ae8be6fa324274f  libstdc++-v3/testsuite/22_locale/collate_byname/requirements/base_classes.cc
! 17d643b8d8f7a262ad7264b258129389  libstdc++-v3/testsuite/22_locale/collate_byname/requirements/explicit_instantiation.cc
! e4f4339b407bd1cfbab4f687287f4c01  libstdc++-v3/testsuite/22_locale/collate_byname/requirements/typedefs.cc
! 9f04085016387b9cc9c7af8ed9d6ec9d  libstdc++-v3/testsuite/22_locale/conversions/buffer/1.cc
! 3fbaa9f6bcbaf536b0e6d981761efdbd  libstdc++-v3/testsuite/22_locale/conversions/buffer/2.cc
! 4fd95587f2f6f96070aa8369f605054d  libstdc++-v3/testsuite/22_locale/conversions/buffer/3.cc
! 5d1a8d50c2537b219e297b6e5c0e45ac  libstdc++-v3/testsuite/22_locale/conversions/buffer/requirements/typedefs.cc
! 2bb93a6c156a7cd28eb148cdb2944110  libstdc++-v3/testsuite/22_locale/conversions/string/1.cc
! daa27b94b05a3b670d5666a2c3575dd9  libstdc++-v3/testsuite/22_locale/conversions/string/2.cc
! 6dcbf5cbba8f0e93ee207fbdd1aaabd1  libstdc++-v3/testsuite/22_locale/conversions/string/3.cc
! 22201b1653b96997eb2b23f06be12099  libstdc++-v3/testsuite/22_locale/conversions/string/66441.cc
! d7ddb5f70a70eb3e521b582c249b088d  libstdc++-v3/testsuite/22_locale/conversions/string/requirements/typedefs-2.cc
! 5dd11acf92ed929217752bff9e21dc57  libstdc++-v3/testsuite/22_locale/conversions/string/requirements/typedefs.cc
! 419ac60fcf37eee7a07a95d400deb9f5  libstdc++-v3/testsuite/22_locale/ctype/2.cc
! 656875c42a0ade3bc40f409dbc9ec6e8  libstdc++-v3/testsuite/22_locale/ctype/cons/char/1.cc
! 8f4db25c61cdcaa2ff06b2cf6f1789d4  libstdc++-v3/testsuite/22_locale/ctype/cons/char/wrapped_env.cc
! 24a4f49f678bae28c179b0e8e7a0a193  libstdc++-v3/testsuite/22_locale/ctype/cons/char/wrapped_locale.cc
! e16332e4b84ab0f6807377c12d8f57c0  libstdc++-v3/testsuite/22_locale/ctype/dr695.cc
! 2f5932619e089cc7c159be6524f9befd  libstdc++-v3/testsuite/22_locale/ctype/is/char/1.cc
! 9a034021663773b3f904e5f5a56a7b50  libstdc++-v3/testsuite/22_locale/ctype/is/char/2.cc
! b8bcf694caf3b4d4129364aceb019a5f  libstdc++-v3/testsuite/22_locale/ctype/is/char/3.cc
! 31965b308b9438ca7fa36306b6f0ca19  libstdc++-v3/testsuite/22_locale/ctype/is/char/9858.cc
! ba3a18bd9870dfa7f952262d331172ea  libstdc++-v3/testsuite/22_locale/ctype/is/char/wrapped_env.cc
! cef35ab3a8ae7c2e201a5f54bffd4205  libstdc++-v3/testsuite/22_locale/ctype/is/char/wrapped_locale.cc
! dc6104bc2e0fe1a0bfb1f9b3fe471a0b  libstdc++-v3/testsuite/22_locale/ctype/is/wchar_t/1.cc
! e8e2e09bd8e6aaff45c7ebee71503647  libstdc++-v3/testsuite/22_locale/ctype/is/wchar_t/11740.cc
! 0041b514f63f741ebc8e42f379b7752c  libstdc++-v3/testsuite/22_locale/ctype/is/wchar_t/2.cc
! 58233b2cd694c7b8d59b4caa12c28fde  libstdc++-v3/testsuite/22_locale/ctype/is/wchar_t/wrapped_env.cc
! a3cd2f5c111c405e90ad675dc01ef7b2  libstdc++-v3/testsuite/22_locale/ctype/is/wchar_t/wrapped_locale.cc
! 15a3ccd2a1d68ffd045fd2a8dfe65b8d  libstdc++-v3/testsuite/22_locale/ctype/narrow/char/1.cc
! a9888c3be5e49f7f8090b7698ddb2293  libstdc++-v3/testsuite/22_locale/ctype/narrow/char/19955.cc
! aedd2cda987abd61d55bccd1464661e3  libstdc++-v3/testsuite/22_locale/ctype/narrow/char/2.cc
! 58233b2cd694c7b8d59b4caa12c28fde  libstdc++-v3/testsuite/22_locale/ctype/narrow/char/wrapped_env.cc
! 6b5b78db50bee51c536bc3cf60b9fde8  libstdc++-v3/testsuite/22_locale/ctype/narrow/char/wrapped_locale.cc
! b9c678f184fcc2a46637e390f778f5f9  libstdc++-v3/testsuite/22_locale/ctype/narrow/wchar_t/1.cc
! 49533f063013b4119909d9860086b8fb  libstdc++-v3/testsuite/22_locale/ctype/narrow/wchar_t/2.cc
! 982549d2980dce16df45577f2e2fd514  libstdc++-v3/testsuite/22_locale/ctype/narrow/wchar_t/3.cc
! 58233b2cd694c7b8d59b4caa12c28fde  libstdc++-v3/testsuite/22_locale/ctype/narrow/wchar_t/wrapped_env.cc
! 6b5b78db50bee51c536bc3cf60b9fde8  libstdc++-v3/testsuite/22_locale/ctype/narrow/wchar_t/wrapped_locale.cc
! 4e58e79b7df565d923535bdbc3b55057  libstdc++-v3/testsuite/22_locale/ctype/requirements/base_classes.cc
! 7def08eab9cfbd6207ba2b948d60cb52  libstdc++-v3/testsuite/22_locale/ctype/requirements/explicit_instantiation.cc
! e06bc80fb07c25a2a250c70ea163776f  libstdc++-v3/testsuite/22_locale/ctype/requirements/typedefs.cc
! 0c2ef753463eaa752815330721393273  libstdc++-v3/testsuite/22_locale/ctype/scan/char/1.cc
! 8f4db25c61cdcaa2ff06b2cf6f1789d4  libstdc++-v3/testsuite/22_locale/ctype/scan/char/wrapped_env.cc
! 24a4f49f678bae28c179b0e8e7a0a193  libstdc++-v3/testsuite/22_locale/ctype/scan/char/wrapped_locale.cc
! a38e78831827eed67643d2bde108f2ec  libstdc++-v3/testsuite/22_locale/ctype/scan/wchar_t/1.cc
! 8f4db25c61cdcaa2ff06b2cf6f1789d4  libstdc++-v3/testsuite/22_locale/ctype/scan/wchar_t/wrapped_env.cc
! 24a4f49f678bae28c179b0e8e7a0a193  libstdc++-v3/testsuite/22_locale/ctype/scan/wchar_t/wrapped_locale.cc
! d66384783c6546a42fdcf16ce2063300  libstdc++-v3/testsuite/22_locale/ctype/to/char/1.cc
! 8f4db25c61cdcaa2ff06b2cf6f1789d4  libstdc++-v3/testsuite/22_locale/ctype/to/char/wrapped_env.cc
! 24a4f49f678bae28c179b0e8e7a0a193  libstdc++-v3/testsuite/22_locale/ctype/to/char/wrapped_locale.cc
! dc24880df8a1b554487536583a0509d6  libstdc++-v3/testsuite/22_locale/ctype/to/wchar_t/1.cc
! 8f4db25c61cdcaa2ff06b2cf6f1789d4  libstdc++-v3/testsuite/22_locale/ctype/to/wchar_t/wrapped_env.cc
! 24a4f49f678bae28c179b0e8e7a0a193  libstdc++-v3/testsuite/22_locale/ctype/to/wchar_t/wrapped_locale.cc
! 33a1954cf5702727a0288a73ea5c1e2e  libstdc++-v3/testsuite/22_locale/ctype/widen/char/1.cc
! 8f4db25c61cdcaa2ff06b2cf6f1789d4  libstdc++-v3/testsuite/22_locale/ctype/widen/char/wrapped_env.cc
! 24a4f49f678bae28c179b0e8e7a0a193  libstdc++-v3/testsuite/22_locale/ctype/widen/char/wrapped_locale.cc
! d729183d2517f4f15f6e13be0db40f0d  libstdc++-v3/testsuite/22_locale/ctype/widen/wchar_t/1.cc
! 97b45c894b7d37a9db2f6d58ad6e80e4  libstdc++-v3/testsuite/22_locale/ctype/widen/wchar_t/2.cc
! a27d06fb65319ffe28eb52e1ab0d7f47  libstdc++-v3/testsuite/22_locale/ctype/widen/wchar_t/3.cc
! 8f4db25c61cdcaa2ff06b2cf6f1789d4  libstdc++-v3/testsuite/22_locale/ctype/widen/wchar_t/wrapped_env.cc
! 24a4f49f678bae28c179b0e8e7a0a193  libstdc++-v3/testsuite/22_locale/ctype/widen/wchar_t/wrapped_locale.cc
! e3d6d7d36221a72b7569c5153e83df2a  libstdc++-v3/testsuite/22_locale/ctype_base/11844.cc
! 01cfda872ee3d26683853c6c6b3cb194  libstdc++-v3/testsuite/22_locale/ctype_base/53678.cc
! cbcb1eaab4a2a88d6288aef5fa469b93  libstdc++-v3/testsuite/22_locale/ctype_base/blank.cc
! 7933d41e1e345a1a238fd647a3eeb0d4  libstdc++-v3/testsuite/22_locale/ctype_base/mask.cc
! 195d919d2f21ac151e2acc099614ea81  libstdc++-v3/testsuite/22_locale/ctype_byname/1.cc
! 1c61841324d03b50ec940cd6eb47771f  libstdc++-v3/testsuite/22_locale/ctype_byname/2.cc
! c1cc23b5bbff6c0446b0dbaf31956e68  libstdc++-v3/testsuite/22_locale/facet/1.cc
! f169267ed057ae719842df10968a988e  libstdc++-v3/testsuite/22_locale/facet/2.cc
! 07c47691ccc1757f6f72a0cb91117b6f  libstdc++-v3/testsuite/22_locale/facet/25421.cc
! a5a1cf1aa05f87a8c3320e1dfbac9a89  libstdc++-v3/testsuite/22_locale/global_templates/1.cc
! b8235f06caffea74dd960a70300fa2cc  libstdc++-v3/testsuite/22_locale/global_templates/standard_facet_hierarchies.cc
! d1a9c6caefaacf5eff06af6f63c59fc0  libstdc++-v3/testsuite/22_locale/global_templates/user_facet_hierarchies.cc
! 036cee4fb19898e6ab818dff93192aab  libstdc++-v3/testsuite/22_locale/headers/clocale/functions_std.cc
! e1a8d6d6fa91337f77e9c7e243475ca2  libstdc++-v3/testsuite/22_locale/headers/clocale/macros.cc
! 342a27f8b11c9990e4ca35f2147a7c72  libstdc++-v3/testsuite/22_locale/headers/clocale/types_std.cc
! 3b65899801012d83658cdec5f0cb4e8f  libstdc++-v3/testsuite/22_locale/headers/locale/synopsis.cc
! 89ad868957e936a819fae2b33cd22876  libstdc++-v3/testsuite/22_locale/headers/locale/types_std.cc
! fdee4f5779d9dbecb9a092ef3e51fdda  libstdc++-v3/testsuite/22_locale/locale/13630.cc
! d411796723b6601b03b8dd9eabd563fd  libstdc++-v3/testsuite/22_locale/locale/cons/1.cc
! a6a2b91f8eff1a1098e1a2ac10e69741  libstdc++-v3/testsuite/22_locale/locale/cons/12352.cc
! 968870a10f5ff72414f5c80a87bd4549  libstdc++-v3/testsuite/22_locale/locale/cons/12438.cc
! ff92ccdce934d0e8fb8cdfcf178c84da  libstdc++-v3/testsuite/22_locale/locale/cons/12658_thread-1.cc
! 66357bdb9533ca90e38a26ce44b90127  libstdc++-v3/testsuite/22_locale/locale/cons/12658_thread-2.cc
! 900df813d8b883e537d32d2f5e5c5861  libstdc++-v3/testsuite/22_locale/locale/cons/2.cc
! 9645e24d3390a9d3912fc5c9ed3ca298  libstdc++-v3/testsuite/22_locale/locale/cons/29217.cc
! d83f127f3ae54abe2ef1213a3c921b8f  libstdc++-v3/testsuite/22_locale/locale/cons/38365.cc
! 12067b14de3869bb261878aec50977b2  libstdc++-v3/testsuite/22_locale/locale/cons/38368.cc
! 1148b9ce2fd736d03c2e391e56316a35  libstdc++-v3/testsuite/22_locale/locale/cons/4.cc
! 96be2078bbbe1d9f6bb35fa0a3d603cf  libstdc++-v3/testsuite/22_locale/locale/cons/40184.cc
! 33741807fc1b82425642330dc326bc70  libstdc++-v3/testsuite/22_locale/locale/cons/5.cc
! 755f7cb1e2b1abe7867054be1fc5b762  libstdc++-v3/testsuite/22_locale/locale/cons/6.cc
! eafd86dfa0ea369a43ddf0c71d9883dd  libstdc++-v3/testsuite/22_locale/locale/cons/7.cc
! a7bea334792e40a5334011c6af4d5d3c  libstdc++-v3/testsuite/22_locale/locale/cons/7222-c.cc
! 1a40ea593a5eb0a30d6ac7515c1a4118  libstdc++-v3/testsuite/22_locale/locale/cons/7222-env.cc
! a28c77c29008a152fa16a399c6f98fac  libstdc++-v3/testsuite/22_locale/locale/cons/8.cc
! b77972dc170e433f68da7d302a2d50f8  libstdc++-v3/testsuite/22_locale/locale/cons/unicode.cc
! 24e535546fccd9697f7a0d2c0a3f7761  libstdc++-v3/testsuite/22_locale/locale/global_locale_objects/1.cc
! 6e26261d7ac9a334c0c9fd4abad913ca  libstdc++-v3/testsuite/22_locale/locale/global_locale_objects/14071.cc
! 47e04c6b4c331e4aea0c0ce955e5a886  libstdc++-v3/testsuite/22_locale/locale/global_locale_objects/2.cc
! 2d0cd99d07a3f8a892d1720b6302cc12  libstdc++-v3/testsuite/22_locale/locale/global_locale_objects/3.cc
! bb97ca8296d034a480ea10ff51411862  libstdc++-v3/testsuite/22_locale/locale/operations/1.cc
! da5d3f77b8dd17036bc5d70f7b2349c0  libstdc++-v3/testsuite/22_locale/locale/operations/2.cc
! 38a4b1a9e4c86348e7565b87c1f874e2  libstdc++-v3/testsuite/22_locale/messages/13631.cc
! 39355f884dbfccd7a0d75ba71f399306  libstdc++-v3/testsuite/22_locale/messages/members/char/1.cc
! 9d715e2be51ed468c9fbc3209b22a5bf  libstdc++-v3/testsuite/22_locale/messages/members/char/2.cc
! 32f36831dd5809e0f235d2552c547d17  libstdc++-v3/testsuite/22_locale/messages/members/char/3.cc
! 4dbb78e909f27c0972953710ae2c0339  libstdc++-v3/testsuite/22_locale/messages/members/char/wrapped_env.cc
! 1ff7a7579822b4b6e5823d00ac70c09b  libstdc++-v3/testsuite/22_locale/messages/members/char/wrapped_locale.cc
! 74d46b631c764077609bcd2b20a4e7ec  libstdc++-v3/testsuite/22_locale/messages/requirements/base_classes.cc
! 1f32cd097e090503786ad845ef439b72  libstdc++-v3/testsuite/22_locale/messages/requirements/explicit_instantiation.cc
! 87c8b32503f1a5352cc23d627f81b04f  libstdc++-v3/testsuite/22_locale/messages/requirements/typedefs.cc
! cebd360ac828385613a979bab84260c2  libstdc++-v3/testsuite/22_locale/messages_byname/1.cc
! b8269281867bb5ab2eda73211bb7b08b  libstdc++-v3/testsuite/22_locale/messages_byname/named_equivalence.cc
! 4a242b64726492f2381aeaca0220cc07  libstdc++-v3/testsuite/22_locale/messages_byname/requirements/base_classes.cc
! 2e18a4824f43fae9fcddb54261a8d062  libstdc++-v3/testsuite/22_locale/messages_byname/requirements/explicit_instantiation.cc
! b3764b8aca3091bde13c1ba65d4526d3  libstdc++-v3/testsuite/22_locale/messages_byname/requirements/typedefs.cc
! 3ce9b3e7de561edf69d1ad1293886a42  libstdc++-v3/testsuite/22_locale/money_get/cons/3.cc
! 5674a930b4bd85bdc0207cc136e62875  libstdc++-v3/testsuite/22_locale/money_get/get/char/1.cc
! 23d19fb4d31ac0c3b9c1f4ec374393ee  libstdc++-v3/testsuite/22_locale/money_get/get/char/10.cc
! b2c44cd96c61e570c092c61c6c9a277b  libstdc++-v3/testsuite/22_locale/money_get/get/char/11.cc
! 095f18dbb4225c1eb253d099b099688b  libstdc++-v3/testsuite/22_locale/money_get/get/char/11528.cc
! 3d7dfa479b068a694e6c8d7ad985f9cf  libstdc++-v3/testsuite/22_locale/money_get/get/char/12.cc
! 5946481ce0ec428757f6e034eccf1700  libstdc++-v3/testsuite/22_locale/money_get/get/char/13.cc
! f2390d45fab72d39e4764e2cf80c7fca  libstdc++-v3/testsuite/22_locale/money_get/get/char/14.cc
! e571472dc9cc9e59cc50171399499b02  libstdc++-v3/testsuite/22_locale/money_get/get/char/15.cc
! 213ea8e756599d757baad046a3d0f4e9  libstdc++-v3/testsuite/22_locale/money_get/get/char/16.cc
! a60861c4d4a5e0cb0a5f0ccf742e240f  libstdc++-v3/testsuite/22_locale/money_get/get/char/17.cc
! 13d111e8286237812de4cc9d3e2a6212  libstdc++-v3/testsuite/22_locale/money_get/get/char/18.cc
! 7d4136fbd42c0443231189e3fa342109  libstdc++-v3/testsuite/22_locale/money_get/get/char/19.cc
! cecc0cab4844736c2bddcc8d65f52532  libstdc++-v3/testsuite/22_locale/money_get/get/char/2.cc
! a0926d9f489ebb16603eb7ca0fcafd1f  libstdc++-v3/testsuite/22_locale/money_get/get/char/22131.cc
! ff297413657ef6e77f7e7a2837232b33  libstdc++-v3/testsuite/22_locale/money_get/get/char/3.cc
! 68512182099a1cb2da95bf1f50fbf6cc  libstdc++-v3/testsuite/22_locale/money_get/get/char/38399.cc
! 5c174f667138cf518299900c2b3f0658  libstdc++-v3/testsuite/22_locale/money_get/get/char/39168.cc
! fda12679359889c4618a1d7b0224eaa1  libstdc++-v3/testsuite/22_locale/money_get/get/char/4.cc
! e66a9912b2c12c364cd2e48a292d99a9  libstdc++-v3/testsuite/22_locale/money_get/get/char/5.cc
! 4194b9271058640c9520eb108e084840  libstdc++-v3/testsuite/22_locale/money_get/get/char/6.cc
! 72e7e14bbbf998f793ab706b55a81ea1  libstdc++-v3/testsuite/22_locale/money_get/get/char/7.cc
! fa704afe198624bef8b5d4fd9c65ef69  libstdc++-v3/testsuite/22_locale/money_get/get/char/8.cc
! a6f9bccc7f0b299249de245f127998f3  libstdc++-v3/testsuite/22_locale/money_get/get/char/9.cc
! 5674cb1512988b061d945cd967412dca  libstdc++-v3/testsuite/22_locale/money_get/get/char/wrapped_env.cc
! 863b1b2000eb871ef7d0d85069d3c60c  libstdc++-v3/testsuite/22_locale/money_get/get/char/wrapped_locale.cc
! dff87ce25f3ad3358b08c0034a3e5845  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/1.cc
! 5efa81ac221a50f4ace8fd05387112ae  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/10.cc
! df6474a433b1aee48fd6cb0c05a83e1a  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/11.cc
! ddd6cb91a8473a29c647c26eec58f2e5  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/11528.cc
! a977dd3a9626b6352e5d0358102628cc  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/12.cc
! 48e3421ab34542f7fd411da3e3c06786  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/13.cc
! de432d9810895019d8525eb55283b554  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/14.cc
! 109596ef5ff53015266ba422071f57e9  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/15.cc
! 983d93c926c26de9aa998652bdd697b8  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/16.cc
! 61ae7af8d9981503dd2c3364ecd88e50  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/17.cc
! 0d01dc6fb07845bfa9fe37d93a1a8c7c  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/18.cc
! b77813fea9b6c9fc60910f15676d1f1a  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/19.cc
! 1099ae5110b728af30403a3c3e013096  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/2.cc
! 15ece103388dd540c39b35d140e90d34  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/22131.cc
! d3c6c80b3166dbf7e29988ae7eeab726  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/3.cc
! 4699e1c3b943844447d29e10714da6ae  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/38399.cc
! 47a2f06b71204ca06c1b1756b735fa13  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/39168.cc
! 4ba75a2f5241018a7d2086da9defd67d  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/4.cc
! 8673fbe95aabb3b28d3cd6dfec3c6935  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/5.cc
! 1a837d182b9276d50749e0ac5dc898c3  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/6.cc
! 34fad723f8bd9a92a45a1b90acd3e526  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/7.cc
! 4aeb9b8fd499b6375d4a9aafca268fb2  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/8.cc
! 5336f38d76b5fbb86fed4bf914d4d701  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/9.cc
! 5674cb1512988b061d945cd967412dca  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/wrapped_env.cc
! 863b1b2000eb871ef7d0d85069d3c60c  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/wrapped_locale.cc
! 5d18bda5ec50e943cbf0b80cb0efa768  libstdc++-v3/testsuite/22_locale/money_get/requirements/base_classes.cc
! 53a1715f3617035c7bfc72bc8352c145  libstdc++-v3/testsuite/22_locale/money_get/requirements/explicit_instantiation.cc
! 3e43507542cd6b2a04a5fdd41204f142  libstdc++-v3/testsuite/22_locale/money_get/requirements/typedefs.cc
! dac5bf94bba67f916247a603f4e57599  libstdc++-v3/testsuite/22_locale/money_put/cons/3.cc
! 5e01478ccb1652fbab67dc4cc97ae80f  libstdc++-v3/testsuite/22_locale/money_put/put/char/1.cc
! 1bd9a12bf395ecc98743a87b89562e2b  libstdc++-v3/testsuite/22_locale/money_put/put/char/12971.cc
! a4ef14c79c720d3fcfe55afda9b520c1  libstdc++-v3/testsuite/22_locale/money_put/put/char/2.cc
! 3a54615a6391503d53ff70d846758d2e  libstdc++-v3/testsuite/22_locale/money_put/put/char/3.cc
! 38ae5a770c465e5128015570f7618a81  libstdc++-v3/testsuite/22_locale/money_put/put/char/39168.cc
! 8ab5b113069e9b3cb3cf472512a25cc9  libstdc++-v3/testsuite/22_locale/money_put/put/char/4.cc
! 978d3fca5e44aad6df5aefe5bc5c68a2  libstdc++-v3/testsuite/22_locale/money_put/put/char/5.cc
! 1fc75650215be544d7eb9f16dc1b0599  libstdc++-v3/testsuite/22_locale/money_put/put/char/6.cc
! bf3b05ef787507a3bdf4834fc94f11fe  libstdc++-v3/testsuite/22_locale/money_put/put/char/9780-3.cc
! 18fdfb6cc6762e4bdc03fed8c880ce58  libstdc++-v3/testsuite/22_locale/money_put/put/char/wrapped_env.cc
! d36564797226a1a627f9ec2bc2ca7504  libstdc++-v3/testsuite/22_locale/money_put/put/char/wrapped_locale.cc
! fd255b6ef789daa537391e659a4c1be8  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/1.cc
! cea4d77ea05892255e3e6af87ad953f5  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/12971.cc
! 773ff6824abb13b6328486833e175dcf  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/2.cc
! 0e04721ea667597cfed9d72dce48b8af  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/3.cc
! aa69cb3697d1c9a3cfacf073937d6c0c  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/39168.cc
! 5ab85f985c3a6d99188764333f8eaa9f  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/4.cc
! 6460266abe33aec6bd699595ba8017a4  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/5.cc
! 7c99ffc42962a6f3ef6d689beab09747  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/6.cc
! 18fdfb6cc6762e4bdc03fed8c880ce58  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/wrapped_env.cc
! d36564797226a1a627f9ec2bc2ca7504  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/wrapped_locale.cc
! 99b1ff77928ac3e3010cc6999d49cc64  libstdc++-v3/testsuite/22_locale/money_put/requirements/base_classes.cc
! 3b83af6b4e8d3888479ea1fd3f8f8209  libstdc++-v3/testsuite/22_locale/money_put/requirements/explicit_instantiation.cc
! 9facbac77186ce8648665baabcb94edf  libstdc++-v3/testsuite/22_locale/money_put/requirements/typedefs.cc
! 83b9b7116f81a8f105dec8f52d553a4b  libstdc++-v3/testsuite/22_locale/moneypunct/40712.cc
! a33600a3700b2f67d06fefbed54e4c4b  libstdc++-v3/testsuite/22_locale/moneypunct/members/char/1.cc
! 9f1a2a74c3b4219a445c97792a3e5190  libstdc++-v3/testsuite/22_locale/moneypunct/members/char/2.cc
! 58233b2cd694c7b8d59b4caa12c28fde  libstdc++-v3/testsuite/22_locale/moneypunct/members/char/wrapped_env.cc
! b5a59cf37cc80ac7a5c3fcd0ba29806c  libstdc++-v3/testsuite/22_locale/moneypunct/members/char/wrapped_locale.cc
! c43131ac4dd98b22fd5de1be013b80e0  libstdc++-v3/testsuite/22_locale/moneypunct/members/wchar_t/1.cc
! d0d1f3b82007dc0c3a35121b1d9e70b6  libstdc++-v3/testsuite/22_locale/moneypunct/members/wchar_t/2.cc
! 58233b2cd694c7b8d59b4caa12c28fde  libstdc++-v3/testsuite/22_locale/moneypunct/members/wchar_t/wrapped_env.cc
! a3cd2f5c111c405e90ad675dc01ef7b2  libstdc++-v3/testsuite/22_locale/moneypunct/members/wchar_t/wrapped_locale.cc
! ccb17503eb24b46871e73d9dda0e80ca  libstdc++-v3/testsuite/22_locale/moneypunct/requirements/false/base_classes.cc
! 801203cda8ef215404a13bae3e4fbd91  libstdc++-v3/testsuite/22_locale/moneypunct/requirements/false/explicit_instantiation.cc
! 66d63f7e4f91f843cd9eee8fc10d5712  libstdc++-v3/testsuite/22_locale/moneypunct/requirements/false/intl.cc
! 9142df61ed9eb1767656d555c14129ec  libstdc++-v3/testsuite/22_locale/moneypunct/requirements/false/typedefs.cc
! 3de24ae17988061a6433d88a408d4af1  libstdc++-v3/testsuite/22_locale/moneypunct/requirements/true/base_classes.cc
! 7e02eb28fc26df213b615a64fe2fd372  libstdc++-v3/testsuite/22_locale/moneypunct/requirements/true/explicit_instantiation.cc
! 8f90c6306532b29c2212adfc8a7fde49  libstdc++-v3/testsuite/22_locale/moneypunct/requirements/true/intl.cc
! fdb477cb792df9385c02e3aff127da00  libstdc++-v3/testsuite/22_locale/moneypunct/requirements/true/typedefs.cc
! 8f5210b215a867ebf0d5713b51550fb5  libstdc++-v3/testsuite/22_locale/moneypunct_byname/1.cc
! fdf8f66bce062be0162c00737e1a5de4  libstdc++-v3/testsuite/22_locale/moneypunct_byname/named_equivalence.cc
! 1c00d803266d95af42fc618531440e4b  libstdc++-v3/testsuite/22_locale/moneypunct_byname/requirements/base_classes.cc
! 8949f5f5bbd76f0bfe6925228de8d361  libstdc++-v3/testsuite/22_locale/moneypunct_byname/requirements/explicit_instantiation.cc
! 01ab79d3dc1671850a30d1b8fa3c5449  libstdc++-v3/testsuite/22_locale/moneypunct_byname/requirements/typedefs.cc
! 971f27f2c4cdba75fb4c12ed6eabd564  libstdc++-v3/testsuite/22_locale/num_get/cons/3.cc
! 1ec4588b33fddd59e9588fe62d26461e  libstdc++-v3/testsuite/22_locale/num_get/get/char/1.cc
! 5cdbd19b61abe044e30422037cb6f2e2  libstdc++-v3/testsuite/22_locale/num_get/get/char/10.cc
! 978bbdb093bb5cbf9cbbb7cb78a242cc  libstdc++-v3/testsuite/22_locale/num_get/get/char/11.cc
! 15e868d72de3fb0f5ba9294c737e39a6  libstdc++-v3/testsuite/22_locale/num_get/get/char/12.cc
! 5fb254d7f87cba9a985b5a90684a259b  libstdc++-v3/testsuite/22_locale/num_get/get/char/13.cc
! e3876bf7ed7e20d6ea4088ca7568e24d  libstdc++-v3/testsuite/22_locale/num_get/get/char/14.cc
! 7cc4dd7d327ebe4371ed57c154a14f9b  libstdc++-v3/testsuite/22_locale/num_get/get/char/15.cc
! ec1f22ffd9396b190cb1beecfe8e3ede  libstdc++-v3/testsuite/22_locale/num_get/get/char/16.cc
! f4fad8b424e57fa4f731cf8d572b4f0c  libstdc++-v3/testsuite/22_locale/num_get/get/char/2.cc
! 4564318f958039fd32830463f9828a61  libstdc++-v3/testsuite/22_locale/num_get/get/char/22131.cc
! 0ce35f875cbdd639dc5aa74c3432c3ff  libstdc++-v3/testsuite/22_locale/num_get/get/char/23953.cc
! 0a2cf725fb9f607afcb1e6bb04deb1a5  libstdc++-v3/testsuite/22_locale/num_get/get/char/3.cc
! 4c1f3dbc37993b2b7019c1c1968d81f5  libstdc++-v3/testsuite/22_locale/num_get/get/char/37958.cc
! 8633bd21d4cb9aafcfd47b48d6254310  libstdc++-v3/testsuite/22_locale/num_get/get/char/39168.cc
! 069d36a92bac7006baf14621b44544e7  libstdc++-v3/testsuite/22_locale/num_get/get/char/39802.cc
! fcfa8a3a7b6f403ce07a994686520728  libstdc++-v3/testsuite/22_locale/num_get/get/char/4.cc
! cf852da6e9828564597f888d0866efd1  libstdc++-v3/testsuite/22_locale/num_get/get/char/5.cc
! 6a2776e0846567982a8bf5df5b3b1634  libstdc++-v3/testsuite/22_locale/num_get/get/char/6.cc
! 6129eafdd9313dd83faf658bf0667694  libstdc++-v3/testsuite/22_locale/num_get/get/char/7.cc
! d212a04cb70dda93ab95889fcc84c3c3  libstdc++-v3/testsuite/22_locale/num_get/get/char/8.cc
! 92fab03d8d76ae9ca5556da35ae96f01  libstdc++-v3/testsuite/22_locale/num_get/get/char/9.cc
! de5c1be04627545f5d249ecbdc4df89f  libstdc++-v3/testsuite/22_locale/num_get/get/char/wrapped_env.cc
! d36564797226a1a627f9ec2bc2ca7504  libstdc++-v3/testsuite/22_locale/num_get/get/char/wrapped_locale.cc
! 43b67f74d7bdede4158915e116010f6f  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/1.cc
! 734e22c2402ba3db8dfe764f22167e1e  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/10.cc
! b7a2d0af4262c849ea42ff93f959640b  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/11.cc
! 638f1a1c55192a3e2defa5bbfd672c5f  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/12.cc
! e0e3eaf6617580692129cde9b6d72051  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/13.cc
! a2bf0631859eff38dbda55124aa61c0a  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/14.cc
! 9d99f56561f9095cc0babc4dce730135  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/15.cc
! dd4c7aaae795e0294fd77893c133f42e  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/16.cc
! c6ccb7385dbe12fbdf4db5b956947ba9  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/2.cc
! 5af32fa112533f307c67401e7091f7be  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/22131.cc
! 57c8d9c6b0311876fbc03da929928ae2  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/23953.cc
! 65ff143b8c7b3e30b11dc8bca1d14f9b  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/3.cc
! ac96e3ac5f2fde4a5d578cacba27a9d3  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/37958.cc
! 1deba9b3b5505d4c8254bef566b235f6  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/39168.cc
! cecccf571caf9c53266ea0d6b18a7120  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/39802.cc
! 8cdb85e71e2bce5bbfa7d0da6de8a8e8  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/4.cc
! b8385dff9417bd1280431d28f59bd4ff  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/5.cc
! 9debf66847eb1f6fe098a8d24c1d3cc6  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/6.cc
! c4218a5dcbf2e84db55f03c73edcf8f3  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/7.cc
! ce1818f8286bd576e3f8c1621696c327  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/8.cc
! 7148a647ba451e02fec086396f2c5684  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/9.cc
! de5c1be04627545f5d249ecbdc4df89f  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/wrapped_env.cc
! d36564797226a1a627f9ec2bc2ca7504  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/wrapped_locale.cc
! 817cf5c66f9c19e9e5569634a544c448  libstdc++-v3/testsuite/22_locale/num_get/requirements/base_classes.cc
! 917401d3fdf28c02b79f383c5f7929bb  libstdc++-v3/testsuite/22_locale/num_get/requirements/explicit_instantiation.cc
! e2103ad42732bf76740f7ee8368d12ff  libstdc++-v3/testsuite/22_locale/num_get/requirements/typedefs.cc
! 649723f191f8e4488b1cd18b67b220b7  libstdc++-v3/testsuite/22_locale/num_put/cons/3.cc
! 79de55c71daf0250e1b3319d04e8a434  libstdc++-v3/testsuite/22_locale/num_put/put/char/1.cc
! ddafde299618a46438cd16c02f549c7d  libstdc++-v3/testsuite/22_locale/num_put/put/char/10.cc
! e0ae07bc0148506e8764cc07e309fc7c  libstdc++-v3/testsuite/22_locale/num_put/put/char/11.cc
! b0909ee6248b2d8ee8cf4e4a99346087  libstdc++-v3/testsuite/22_locale/num_put/put/char/12.cc
! 24f61c13fdfe6ccf1e936240dd490f93  libstdc++-v3/testsuite/22_locale/num_put/put/char/14220.cc
! 222e84f16559af17200f2ec16189e2b9  libstdc++-v3/testsuite/22_locale/num_put/put/char/15565.cc
! 995393a1225a64af26a88fa231a7343b  libstdc++-v3/testsuite/22_locale/num_put/put/char/2.cc
! 90e5e9d268ad79c01149540f3e85d90f  libstdc++-v3/testsuite/22_locale/num_put/put/char/20909.cc
! 9d16ab16093d8d5269469ea47536cc85  libstdc++-v3/testsuite/22_locale/num_put/put/char/20914.cc
! af106edcfee4e4c2edc305a0b7a98235  libstdc++-v3/testsuite/22_locale/num_put/put/char/23953.cc
! 2bf5144852734bbc580a49038864675a  libstdc++-v3/testsuite/22_locale/num_put/put/char/3.cc
! 1304397db76fead86ac0a7bd358be3f4  libstdc++-v3/testsuite/22_locale/num_put/put/char/38196.cc
! 98fdb66c2bc7f1154c0d5f7f5aa9a221  libstdc++-v3/testsuite/22_locale/num_put/put/char/38210.cc
! 9f9e434f084ab428e13e097aa8111710  libstdc++-v3/testsuite/22_locale/num_put/put/char/4.cc
! 76a3244686c7a3e637c6e6017cd75b57  libstdc++-v3/testsuite/22_locale/num_put/put/char/5.cc
! 99c459387ec7a1492cd0fd1dbabfca2d  libstdc++-v3/testsuite/22_locale/num_put/put/char/6.cc
! dd6b23345e68e4fe4051fcf946bb3ef0  libstdc++-v3/testsuite/22_locale/num_put/put/char/7.cc
! 8ba085bf0ce4c158e5ef523284a2008c  libstdc++-v3/testsuite/22_locale/num_put/put/char/8.cc
! 15c0cfadf4440b909ba8329df6ba92a1  libstdc++-v3/testsuite/22_locale/num_put/put/char/9.cc
! 70b9649b20902c3ae3e3aba3d1b3882c  libstdc++-v3/testsuite/22_locale/num_put/put/char/9780-2.cc
! a7cf0cce5f07b17398d6f1e141dd518f  libstdc++-v3/testsuite/22_locale/num_put/put/char/wrapped_env.cc
! 7c567b9dc3538ca3b59944144d566c3e  libstdc++-v3/testsuite/22_locale/num_put/put/char/wrapped_locale.cc
! cb5c79c7244005f115b02151c4f8bba9  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/1.cc
! b88303a240d0b8e26b25ec3e875f4fef  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/10.cc
! f809dca9296ec83466ad957583d79fb0  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/11.cc
! 6ac68cb25c46f8fed797b51ead5c588b  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/12.cc
! d285895b0e9fd673b544aed5bce4cde2  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/14220.cc
! 06fe1ed110aa9d23fd6e2e49d91e952a  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/15565.cc
! 3ddf75abd82d939aa971a258c9dbed78  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/2.cc
! 6749fde7563039505e25e1828d459580  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/20909.cc
! f497c356087ba97dd343492e3fdd0f98  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/20914.cc
! f28a7c833e8c86275020e108dd661370  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/23953.cc
! 56f289086f9314ab8c12fcee0d55c1a0  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/3.cc
! 3ada26398abae7470b25cf04f2a275e2  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/38196.cc
! c97e2ecb98cb1c05b83c04a187f4726f  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/38210.cc
! 2e72a05e6e7510d2ba66ad7b6ac4cbba  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/4.cc
! 790a4c42732024e64339f041673dfec6  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/5.cc
! 57c8872789726ef98fa0c239e8a5df1c  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/6.cc
! d1d244223f31b4d8d538c656ce0803eb  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/7.cc
! 8fd0342ebc80e2ff712ee9485961db4e  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/8.cc
! 5eb06b867bff6d8410e83fbba8007f65  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/9.cc
! 60b5e30eb911f06dd99cfba2d41edd19  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/wrapped_env.cc
! f58d7c72c89c372477fa91eb5d40dcfd  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/wrapped_locale.cc
! ac9fb9d428efc6382719d0f36ba26a60  libstdc++-v3/testsuite/22_locale/num_put/requirements/base_classes.cc
! 437723d355e484fa492be4c1de1e47c2  libstdc++-v3/testsuite/22_locale/num_put/requirements/explicit_instantiation.cc
! 8b614c86f4e1c8ce921dc732654902fe  libstdc++-v3/testsuite/22_locale/num_put/requirements/typedefs.cc
! ce2128bd06a699b535efd78ef10635d6  libstdc++-v3/testsuite/22_locale/numpunct/members/char/1.cc
! c7cba287350a625f351b2badec5f7d33  libstdc++-v3/testsuite/22_locale/numpunct/members/char/2.cc
! d065f8a62a8d6e0eab9a720a88f1069c  libstdc++-v3/testsuite/22_locale/numpunct/members/char/3.cc
! c5b7adee6941e4cfd5d6cb694a15da98  libstdc++-v3/testsuite/22_locale/numpunct/members/char/cache_1.cc
! 63191b774c3a103c8b8f2b2a6e4acb4f  libstdc++-v3/testsuite/22_locale/numpunct/members/char/cache_2.cc
! 4274c168b34aecbf8091e327af5ac27f  libstdc++-v3/testsuite/22_locale/numpunct/members/char/wrapped_env.cc
! 210b734eded0180172fedb3321589e2a  libstdc++-v3/testsuite/22_locale/numpunct/members/char/wrapped_locale.cc
! b25e7ffbf9064e888200f9c8d73ae9a0  libstdc++-v3/testsuite/22_locale/numpunct/members/pod/1.cc
! 21cd4fec186308bf8b25116a968c1789  libstdc++-v3/testsuite/22_locale/numpunct/members/pod/2.cc
! 53df822b2751784f072645b8185d1594  libstdc++-v3/testsuite/22_locale/numpunct/members/wchar_t/1.cc
! ff05dd5b0aa098a4f00dd2eeaa473a53  libstdc++-v3/testsuite/22_locale/numpunct/members/wchar_t/2.cc
! fe47e634938ad34aa3075069916a0ba0  libstdc++-v3/testsuite/22_locale/numpunct/members/wchar_t/cache_1.cc
! 88a8a385699f9e63be831fdecce82ec0  libstdc++-v3/testsuite/22_locale/numpunct/members/wchar_t/cache_2.cc
! 4274c168b34aecbf8091e327af5ac27f  libstdc++-v3/testsuite/22_locale/numpunct/members/wchar_t/wrapped_env.cc
! 210b734eded0180172fedb3321589e2a  libstdc++-v3/testsuite/22_locale/numpunct/members/wchar_t/wrapped_locale.cc
! 1df65e51eb0834132e47211ea28f15eb  libstdc++-v3/testsuite/22_locale/numpunct/requirements/base_classes.cc
! 502a8fe941462044a987567e641accb7  libstdc++-v3/testsuite/22_locale/numpunct/requirements/explicit_instantiation.cc
! 3e2fc20b67583521a81e49e2c13a0dcd  libstdc++-v3/testsuite/22_locale/numpunct/requirements/typedefs.cc
! 87e052d8aaae8b8b23937c151e1ad6c5  libstdc++-v3/testsuite/22_locale/numpunct_byname/1.cc
! 1121e14fd126046c2764432bb7cc713a  libstdc++-v3/testsuite/22_locale/numpunct_byname/named_equivalence.cc
! e3c87111cedc532425992efb2d6ed635  libstdc++-v3/testsuite/22_locale/numpunct_byname/requirements/base_classes.cc
! b6410d0bad5985a949bb3332fbfd1583  libstdc++-v3/testsuite/22_locale/numpunct_byname/requirements/explicit_instantiation.cc
! 7eebec0a06815a0cc9bdae1c2d455bae  libstdc++-v3/testsuite/22_locale/numpunct_byname/requirements/typedefs.cc
! 5ab1e41350c9b784c27d807ad78b573b  libstdc++-v3/testsuite/22_locale/time_get/date_order/char/1.cc
! 8f4db25c61cdcaa2ff06b2cf6f1789d4  libstdc++-v3/testsuite/22_locale/time_get/date_order/char/wrapped_env.cc
! 24a4f49f678bae28c179b0e8e7a0a193  libstdc++-v3/testsuite/22_locale/time_get/date_order/char/wrapped_locale.cc
! e8d439b5d8d4d76e0a5f3d4ae532fd3c  libstdc++-v3/testsuite/22_locale/time_get/date_order/wchar_t/1.cc
! 8f4db25c61cdcaa2ff06b2cf6f1789d4  libstdc++-v3/testsuite/22_locale/time_get/date_order/wchar_t/wrapped_env.cc
! 24a4f49f678bae28c179b0e8e7a0a193  libstdc++-v3/testsuite/22_locale/time_get/date_order/wchar_t/wrapped_locale.cc
! 3cc3e74b18007492fd81036de22e6e4e  libstdc++-v3/testsuite/22_locale/time_get/get/char/1.cc
! 3fec56abd24b7c034a93cf449b1141a6  libstdc++-v3/testsuite/22_locale/time_get/get/char/2.cc
! 1e95f74e7c1ef12a87b0624432f45142  libstdc++-v3/testsuite/22_locale/time_get/get/wchar_t/1.cc
! 5258bb6d939ccd00c542e670f60f8f92  libstdc++-v3/testsuite/22_locale/time_get/get/wchar_t/2.cc
! ec47cf6ea7bec96c23b5fc2121469504  libstdc++-v3/testsuite/22_locale/time_get/get_date/char/1.cc
! b4081e0e299bd01926f126af3da10ca1  libstdc++-v3/testsuite/22_locale/time_get/get_date/char/12750.cc
! 1c2b96aacf228aa789dfcd3dfa4e4a94  libstdc++-v3/testsuite/22_locale/time_get/get_date/char/12791.cc
! af245ba26e73094ddf628d0cede1a4ff  libstdc++-v3/testsuite/22_locale/time_get/get_date/char/2.cc
! b85191183366adf2687dca8fd08f81a7  libstdc++-v3/testsuite/22_locale/time_get/get_date/char/26701.cc
! 93be71cf32ad359c63b918387821322d  libstdc++-v3/testsuite/22_locale/time_get/get_date/char/3.cc
! df6e6cf228eb3e503ff7c2124a9aab0a  libstdc++-v3/testsuite/22_locale/time_get/get_date/char/5.cc
! 3b5f6ed18d558768e638eb8430d73804  libstdc++-v3/testsuite/22_locale/time_get/get_date/char/wrapped_env.cc
! cf92c826777ecd835858f86239c5f5a0  libstdc++-v3/testsuite/22_locale/time_get/get_date/char/wrapped_locale.cc
! 16a66eeb8bc9764fe9a3fbe90917eca5  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/1.cc
! d1ac5618dfdc89e945d64dcb8668f533  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/12750.cc
! 3308e44702d017e75e3997f0f3ac0834  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/12791.cc
! d2783af3051a15b17c8f61ea3e057f8c  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/2.cc
! a96114126db80437166893e4cfbd6ea2  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/26701.cc
! 6ad2d1145577fb78e62dd103f8644de0  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/3.cc
! d292b929364049d88937a564dc20f205  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/4.cc
! 98d70fd7d82d754321171e6590c6d903  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/5.cc
! 3b5f6ed18d558768e638eb8430d73804  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/wrapped_env.cc
! cf92c826777ecd835858f86239c5f5a0  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/wrapped_locale.cc
! d5ae99d6d409de6e2ca6738bfd5b0e64  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/1.cc
! 52a733ddc707e2693b168f64aeb2b21a  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/2.cc
! 47521bd49da81f53144dae15aceaa3ab  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/3.cc
! 535fa4cfb8be302bf439ae7094132912  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/4.cc
! 71adc46bfd7fac1e25a1d20761cff13e  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/5.cc
! 9403abe97fca2671649959fadb1cfea0  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/6.cc
! 3b5f6ed18d558768e638eb8430d73804  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/wrapped_env.cc
! cf92c826777ecd835858f86239c5f5a0  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/wrapped_locale.cc
! a9cb47ee73faf7a1175aa61ed34a6b0a  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/wchar_t/1.cc
! e9367c4bd6a31f32d43a0f5a86072f4c  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/wchar_t/2.cc
! ceea85585ff43c2217b64267ab467069  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/wchar_t/3.cc
! caf12f79042f7730cb0940b9f23d9e9f  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/wchar_t/4.cc
! 3402cbbdfbb3be800bdd68f297dd24f4  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/wchar_t/5.cc
! 61dba1e4496172ca0ea6e80b04a7175c  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/wchar_t/6.cc
! 3b5f6ed18d558768e638eb8430d73804  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/wchar_t/wrapped_env.cc
! cf92c826777ecd835858f86239c5f5a0  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/wchar_t/wrapped_locale.cc
! b6f253af280c88e6c861eb65fd53e84b  libstdc++-v3/testsuite/22_locale/time_get/get_time/char/1.cc
! 8b643fbfd6d1cf4e76836c41a95ac239  libstdc++-v3/testsuite/22_locale/time_get/get_time/char/2.cc
! 20da3d985e29d0105efff7604ff42ffb  libstdc++-v3/testsuite/22_locale/time_get/get_time/char/3.cc
! e0a370d273ec3021f5123c85324267b3  libstdc++-v3/testsuite/22_locale/time_get/get_time/char/4.cc
! 4132da5ef5d9a06bcd66feae623a39dc  libstdc++-v3/testsuite/22_locale/time_get/get_time/char/5.cc
! a4324bc2ad28e9212abe70b9ea59353b  libstdc++-v3/testsuite/22_locale/time_get/get_time/char/6.cc
! 3b5f6ed18d558768e638eb8430d73804  libstdc++-v3/testsuite/22_locale/time_get/get_time/char/wrapped_env.cc
! cf92c826777ecd835858f86239c5f5a0  libstdc++-v3/testsuite/22_locale/time_get/get_time/char/wrapped_locale.cc
! c9d524db1ed4603ebb384ac4b5ae745d  libstdc++-v3/testsuite/22_locale/time_get/get_time/wchar_t/1.cc
! 0213c8502a62d02258cbb4476ba92a37  libstdc++-v3/testsuite/22_locale/time_get/get_time/wchar_t/2.cc
! 88e9cd289fb34be5feb5b7074f58839c  libstdc++-v3/testsuite/22_locale/time_get/get_time/wchar_t/3.cc
! 6474643fd25032e6cfa6850ac453bf03  libstdc++-v3/testsuite/22_locale/time_get/get_time/wchar_t/4.cc
! f8aa88202b18f430d3c56e65b6d628e5  libstdc++-v3/testsuite/22_locale/time_get/get_time/wchar_t/5.cc
! c171dbb756f3c610642a2836cf621521  libstdc++-v3/testsuite/22_locale/time_get/get_time/wchar_t/6.cc
! 3b5f6ed18d558768e638eb8430d73804  libstdc++-v3/testsuite/22_locale/time_get/get_time/wchar_t/wrapped_env.cc
! cf92c826777ecd835858f86239c5f5a0  libstdc++-v3/testsuite/22_locale/time_get/get_time/wchar_t/wrapped_locale.cc
! 5296d979009fd2445e61e2e4e1563310  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/1.cc
! 9b6a97d61af45ce9a4272d59f1a77fab  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/2.cc
! b5536f77991d30ef76d4f759bcbc17be  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/3.cc
! 7b3bbd73e849f192d7d6b55070672226  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/38081-1.cc
! 5881c63287529823f479546b569996be  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/38081-2.cc
! 1a3cd24fdffc85e40a2b6a04d0a17ef5  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/5.cc
! fe65c45cc7c19c4b02655f95a8b29ddc  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/6.cc
! 3b5f6ed18d558768e638eb8430d73804  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/wrapped_env.cc
! cf92c826777ecd835858f86239c5f5a0  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/wrapped_locale.cc
! af341183141793129eec2c8bad9545fa  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/wchar_t/1.cc
! 8b0a1afac0b1968a5bf61c5fc7b3d3b1  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/wchar_t/2.cc
! d61d6ca614a07551c96f0286acc63001  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/wchar_t/3.cc
! 7bc090991e311ab2a5fbf298373b02a7  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/wchar_t/5.cc
! ad49a668cb44b1f175400c22116e8383  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/wchar_t/6.cc
! 552d76cda71284c08a42bc504febeff2  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/wchar_t/wrapped_env.cc
! c62a32772184ccdff9f9ca21dde5369d  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/wchar_t/wrapped_locale.cc
! 8021434e5f74e9c275b941850bf4ab5d  libstdc++-v3/testsuite/22_locale/time_get/get_year/char/1.cc
! 50af2f1c1a13fd06c3e650526f207ce8  libstdc++-v3/testsuite/22_locale/time_get/get_year/char/3.cc
! 918e2f5e9fb37b18728d262c76423301  libstdc++-v3/testsuite/22_locale/time_get/get_year/char/5.cc
! 76a527f655900ba546577321a95595a9  libstdc++-v3/testsuite/22_locale/time_get/get_year/char/wrapped_env.cc
! 4076b91b71397fd58918098a423a3ec1  libstdc++-v3/testsuite/22_locale/time_get/get_year/char/wrapped_locale.cc
! cd9286ee24aee053d985b2432b615e42  libstdc++-v3/testsuite/22_locale/time_get/get_year/wchar_t/1.cc
! d7203e0e874e3d9b3850a85ac42c3bf1  libstdc++-v3/testsuite/22_locale/time_get/get_year/wchar_t/3.cc
! afa1e40a5cf3d5850a0e5037bad8e264  libstdc++-v3/testsuite/22_locale/time_get/get_year/wchar_t/5.cc
! 76a527f655900ba546577321a95595a9  libstdc++-v3/testsuite/22_locale/time_get/get_year/wchar_t/wrapped_env.cc
! 4076b91b71397fd58918098a423a3ec1  libstdc++-v3/testsuite/22_locale/time_get/get_year/wchar_t/wrapped_locale.cc
! d6d351c300913c5ca90ff24444a09103  libstdc++-v3/testsuite/22_locale/time_get/requirements/base_classes.cc
! 6ab5729eaf87920f4a445300400b30f4  libstdc++-v3/testsuite/22_locale/time_get/requirements/explicit_instantiation.cc
! 306e4f23038061898725dbb7d8ef91be  libstdc++-v3/testsuite/22_locale/time_get/requirements/typedefs.cc
! 33d420d9c8efcc67b9673c2dd3bc7187  libstdc++-v3/testsuite/22_locale/time_put/put/char/1.cc
! aec3a698b154563bbb6f926f1c076237  libstdc++-v3/testsuite/22_locale/time_put/put/char/10.cc
! 9668a3e228d0b63af46f2fe1f77f0110  libstdc++-v3/testsuite/22_locale/time_put/put/char/12439_1.cc
! 927f3cc25a8e590c1ca9adba1dd110fb  libstdc++-v3/testsuite/22_locale/time_put/put/char/12439_3.cc
! dd4d888be0237c0e855e1d3cf62f819c  libstdc++-v3/testsuite/22_locale/time_put/put/char/17038.cc
! 9235954be7f42e6d593c4c6fceb70b65  libstdc++-v3/testsuite/22_locale/time_put/put/char/2.cc
! 5d788bd283a5b0fbb9b0283b03243763  libstdc++-v3/testsuite/22_locale/time_put/put/char/3.cc
! 964642e4770d9a51d795c89f1bfed991  libstdc++-v3/testsuite/22_locale/time_put/put/char/4.cc
! ba4bace2cae2f759417aa08d4fbd2efc  libstdc++-v3/testsuite/22_locale/time_put/put/char/5.cc
! 36af598d978fed73813a1cfa07dac48b  libstdc++-v3/testsuite/22_locale/time_put/put/char/6.cc
! 2bf9b2de42f4caaddf99aeb612e541d6  libstdc++-v3/testsuite/22_locale/time_put/put/char/7.cc
! 4c70c0defc2daba26fb2c4b0f818a23d  libstdc++-v3/testsuite/22_locale/time_put/put/char/8.cc
! 1e53e506271cb0255b650a879bc1485f  libstdc++-v3/testsuite/22_locale/time_put/put/char/9.cc
! 73f3947a4e65735d7d0a0dea222eda22  libstdc++-v3/testsuite/22_locale/time_put/put/char/9780-1.cc
! 501273b28073950a507bc4cf4e3f149e  libstdc++-v3/testsuite/22_locale/time_put/put/char/wrapped_env.cc
! 3ab490ac121ad0cd7fc82593a0a70f9a  libstdc++-v3/testsuite/22_locale/time_put/put/char/wrapped_locale.cc
! 6b44b1d9fbc72e4f1aedc74ba35a9dcf  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/1.cc
! 43728af44d5bc74c46f15a18d84984f5  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/10.cc
! e96573cbfa26f02cedf98e62043e9ebb  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/12439_1.cc
! 20a4d5270af32ec639cf367a14430e36  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/12439_2.cc
! 97b2a82570fff63ca3bf354b849feebf  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/12439_3.cc
! 3aefd1e791630ded28d96bf2f968295a  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/17038.cc
! 0e331ab2536936c9d91eb58a25001c64  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/2.cc
! 9b038a111b3ffde017f4c34aa33af65c  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/3.cc
! ab5ef619ed03f0c0655d4e7ee95f1d53  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/4.cc
! d7b363939b494ae4a7fdde6a2e2e765c  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/5.cc
! d78e4e680c650ca8d04c16db75e2483a  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/6.cc
! 2c081ebb2f8aa98536f11c1d643c4e02  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/7.cc
! 2c9f2ef2f956b734822b13a474a371c4  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/8.cc
! 6356b5c32f59eec114cf012269e40b8c  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/9.cc
! 501273b28073950a507bc4cf4e3f149e  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/wrapped_env.cc
! 97edd85252c8f65cf79ce10d979f10fe  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/wrapped_locale.cc
! 80084a134b58e892e74066f6c98a1eca  libstdc++-v3/testsuite/22_locale/time_put/requirements/base_classes.cc
! 98e4789016cc8c1b174431b063c8ca0c  libstdc++-v3/testsuite/22_locale/time_put/requirements/explicit_instantiation.cc
! 6d2bb48713f3d06b3416172d0a7af199  libstdc++-v3/testsuite/22_locale/time_put/requirements/typedefs.cc
! 85b4ffa9e15bde771a361448f663b193  libstdc++-v3/testsuite/23_containers/array/capacity/constexpr_functions.cc
! 6ca0c2d55df5da04d92f0b58ec8b4c33  libstdc++-v3/testsuite/23_containers/array/capacity/empty.cc
! d8199964ad876f5a5debf06eede0a594  libstdc++-v3/testsuite/23_containers/array/capacity/max_size.cc
! 55a7683734c3541b18f88ba50c9c3fd2  libstdc++-v3/testsuite/23_containers/array/capacity/size.cc
! 87461bc57e2b14e2e7a2c56ae736fad1  libstdc++-v3/testsuite/23_containers/array/comparison_operators/equal.cc
! f1978495b40307a868e7e18923281666  libstdc++-v3/testsuite/23_containers/array/comparison_operators/greater.cc
! 72621fee043ba4dec891944a8eacf6cb  libstdc++-v3/testsuite/23_containers/array/comparison_operators/greater_or_equal.cc
! 503043bba8a6f7115fd89e06ef492fec  libstdc++-v3/testsuite/23_containers/array/comparison_operators/less.cc
! 34f3a1563c451e9abd1d11f9b4910a98  libstdc++-v3/testsuite/23_containers/array/comparison_operators/less_or_equal.cc
! da2d02822f6292a292f7958278cc8d55  libstdc++-v3/testsuite/23_containers/array/comparison_operators/not_equal.cc
! 214691be879553210f5ee34de6514fc2  libstdc++-v3/testsuite/23_containers/array/cons/53361.cc
! 946ae3ec1448398404f226acfbd1a975  libstdc++-v3/testsuite/23_containers/array/cons/aggregate_initialization.cc
! 648fc0a3b577397db5a6542437101de1  libstdc++-v3/testsuite/23_containers/array/cons/deduction.cc
! 96b3518f9f667aa35b244c5555086289  libstdc++-v3/testsuite/23_containers/array/cons/deduction_neg.cc
! 4cdfa88a79103f73b1dfdaf44bef6a55  libstdc++-v3/testsuite/23_containers/array/debug/back1_neg.cc
! f30de4278d78594b86cbc7caf730ea1c  libstdc++-v3/testsuite/23_containers/array/debug/back2_neg.cc
! d2895afc593d576a1e66eb9eb4e98af1  libstdc++-v3/testsuite/23_containers/array/debug/front1_neg.cc
! f8324f3b67836f60095a9219f650949c  libstdc++-v3/testsuite/23_containers/array/debug/front2_neg.cc
! 954d4921eab7d378faeb94755e4f6d69  libstdc++-v3/testsuite/23_containers/array/debug/square_brackets_operator1_neg.cc
! 2fc30fe0bd64493c97def7905215cf7f  libstdc++-v3/testsuite/23_containers/array/debug/square_brackets_operator2_neg.cc
! 9963159addd2fe9ce1a9efcb7c762fef  libstdc++-v3/testsuite/23_containers/array/element_access/54388.cc
! f0ae5c2d9d64bd2f9cc5ba73ec3af6f5  libstdc++-v3/testsuite/23_containers/array/element_access/60497.cc
! a8d86ba0d92d7ead6766f316f805fe27  libstdc++-v3/testsuite/23_containers/array/element_access/at_neg.cc
! 7c35189ec40f52815d55c6be97e335df  libstdc++-v3/testsuite/23_containers/array/element_access/at_out_of_range.cc
! 3f3985b95b58b86c33d3571c3783c14f  libstdc++-v3/testsuite/23_containers/array/element_access/back.cc
! 9f09fc0a767de1e08b577e00d4624fdc  libstdc++-v3/testsuite/23_containers/array/element_access/constexpr_element_access.cc
! 9ef525871b54c9e0f22b25d6397cdfbb  libstdc++-v3/testsuite/23_containers/array/element_access/data.cc
! dc89277212b99b1c627ff739b7f6deeb  libstdc++-v3/testsuite/23_containers/array/element_access/front.cc
! b23b813cc0c424578de410706543eb32  libstdc++-v3/testsuite/23_containers/array/iterators/end_is_one_past.cc
! f435148f7adae6672debac1af702099e  libstdc++-v3/testsuite/23_containers/array/range_access.cc
! 152e5417e5f0123c27f34de16ee2f760  libstdc++-v3/testsuite/23_containers/array/requirements/citerators.cc
! 62b4c1fcf3c818a981e518398beaf9a9  libstdc++-v3/testsuite/23_containers/array/requirements/contiguous.cc
! a78b2094c8f894aca87eb70a471ce231  libstdc++-v3/testsuite/23_containers/array/requirements/explicit_instantiation/1.cc
! 7f8cedd613c8028e15b658457f007a32  libstdc++-v3/testsuite/23_containers/array/requirements/explicit_instantiation/2.cc
! 91baea3650d317a11903cae8fa2c9acb  libstdc++-v3/testsuite/23_containers/array/requirements/explicit_instantiation/3.cc
! 4f9c64608d602a4b2c65e5c530090ccd  libstdc++-v3/testsuite/23_containers/array/requirements/fill.cc
! 399dd93322f4e6c10de3c332d14abf44  libstdc++-v3/testsuite/23_containers/array/requirements/member_swap.cc
! 9765d14461fd90c4c3324618bcb9c6d2  libstdc++-v3/testsuite/23_containers/array/requirements/non_default_constructible.cc
! 216bf400690666fd1aa3bd1696ee8152  libstdc++-v3/testsuite/23_containers/array/requirements/typedefs.cc
! 32b2284739c8e8de54831a6e160922e9  libstdc++-v3/testsuite/23_containers/array/requirements/zero_sized_arrays.cc
! 8a873f62840e50805bec2d6f6a70e57c  libstdc++-v3/testsuite/23_containers/array/specialized_algorithms/swap.cc
! 3e6dec925fa248836f88945e6ef14dcb  libstdc++-v3/testsuite/23_containers/array/specialized_algorithms/swap_cxx17.cc
! 2d0e317426fd2073c245466f84c82249  libstdc++-v3/testsuite/23_containers/array/tuple_interface/constexpr_get.cc
! 16d2b52b7978086566b330e7dac8a205  libstdc++-v3/testsuite/23_containers/array/tuple_interface/get.cc
! 8457eba8ad322405ef13f337dd50d71a  libstdc++-v3/testsuite/23_containers/array/tuple_interface/get_debug_neg.cc
! 23935b21406fb39eb08de6adb0225130  libstdc++-v3/testsuite/23_containers/array/tuple_interface/get_neg.cc
! f77f6d28b511f14118fd60c63871b75b  libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_element.cc
! a0a7d3605fc64c1274b854850d6f6fe3  libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_element_cpp14.cc
! fa52b5b606eae4ad22bbf1797e755507  libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_element_debug_neg.cc
! 95e8e71150bb1c699c7ed9ff048f51fb  libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_element_neg.cc
! 3301a241cab740fabff59dc64ce47b7d  libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_size.cc
! 24e14a5bd4fc6aec7aa65f2668c75527  libstdc++-v3/testsuite/23_containers/bitset/18604.cc
! cc0958e02f983d965661a2a801572f98  libstdc++-v3/testsuite/23_containers/bitset/45713.cc
! 61bf1d5edb0438a85f8271195ff293b3  libstdc++-v3/testsuite/23_containers/bitset/all/1.cc
! 1e18ea2cc4764ceea701687d51855195  libstdc++-v3/testsuite/23_containers/bitset/cons/1.cc
! 663bf89045519f87df3227a5b8dde546  libstdc++-v3/testsuite/23_containers/bitset/cons/16020.cc
! 99db18cc07469d8dccddaff528174f35  libstdc++-v3/testsuite/23_containers/bitset/cons/2.cc
! f0ff9f2eec2a4ea8ac1d085f71db8fc2  libstdc++-v3/testsuite/23_containers/bitset/cons/3.cc
! a69af46e3601e610cced89b020776246  libstdc++-v3/testsuite/23_containers/bitset/cons/38244.cc
! 280f1704314be5b0cf4aa0e2997b9d8e  libstdc++-v3/testsuite/23_containers/bitset/cons/50268.cc
! 73423bc7ace098fc4b1e0d795d23567e  libstdc++-v3/testsuite/23_containers/bitset/cons/6282.cc
! 684d0608e5ded3937076f34698c1c5e6  libstdc++-v3/testsuite/23_containers/bitset/cons/constexpr.cc
! d4df353b90ec09121d50dcf406855d1e  libstdc++-v3/testsuite/23_containers/bitset/cons/dr1325-1.cc
! 710b21bd69374f91bb6bfa5ef3bb5eec  libstdc++-v3/testsuite/23_containers/bitset/cons/dr1325-2.cc
! 16521d741ef56b6bc2cfe50ed27deb6b  libstdc++-v3/testsuite/23_containers/bitset/cons/dr396.cc
! e25e605b2b8f8ab2c63cb43bb83b80c6  libstdc++-v3/testsuite/23_containers/bitset/count/6124.cc
! 1891320e560e0ca6881e4f46ab285ee2  libstdc++-v3/testsuite/23_containers/bitset/debug/invalidation/1.cc
! afc5583f1e1a7b6b62c029d7ea0c9c47  libstdc++-v3/testsuite/23_containers/bitset/ext/15361.cc
! 3301946ddc86a57b1150674f10c2b67e  libstdc++-v3/testsuite/23_containers/bitset/hash/1.cc
! 66afa2708f3616f6b0ffbbd6f49e8320  libstdc++-v3/testsuite/23_containers/bitset/input/1.cc
! 3155ee428ffe81792fe414c83eb78811  libstdc++-v3/testsuite/23_containers/bitset/operations/1.cc
! 5d8f06b5d3ed3ff47b34b880f600e132  libstdc++-v3/testsuite/23_containers/bitset/operations/13838.cc
! 8a78fe2c7ed6f60df62c6963dee21d62  libstdc++-v3/testsuite/23_containers/bitset/operations/2.cc
! 5795752b83e4b52200f878cbda2c769d  libstdc++-v3/testsuite/23_containers/bitset/operations/constexpr-2.cc
! c268d4dff39e5008c9ef6409222b7c86  libstdc++-v3/testsuite/23_containers/bitset/operations/constexpr.cc
! e4b98b0fed632aca5ec8a80978bfe037  libstdc++-v3/testsuite/23_containers/bitset/requirements/constexpr_functions.cc
! d56b0e476faef0b4dfff4260ff013382  libstdc++-v3/testsuite/23_containers/bitset/requirements/explicit_instantiation/1.cc
! 58388bbf7da8e3e91156f2b65466524a  libstdc++-v3/testsuite/23_containers/bitset/requirements/explicit_instantiation/1_c++0x.cc
! e89cd4b38d02c21d630c44ac7a92368a  libstdc++-v3/testsuite/23_containers/bitset/test/1.cc
! 1bdf885288e6ab971fda65442a7f9303  libstdc++-v3/testsuite/23_containers/bitset/to_string/1.cc
! 78843cfc9b13e646197c3e3aaa531bd7  libstdc++-v3/testsuite/23_containers/bitset/to_string/dr396.cc
! 5935df3c9a7b01bdd559a273186ca11f  libstdc++-v3/testsuite/23_containers/bitset/to_ullong/1.cc
! 09fdcaffd39aa2e0cad300e03efaa5fa  libstdc++-v3/testsuite/23_containers/bitset/to_ulong/1.cc
! 435255aea26165cf37e89a61d9abad1f  libstdc++-v3/testsuite/23_containers/deque/14340.cc
! da6e8e41d506bfe3b4b98e62917aad80  libstdc++-v3/testsuite/23_containers/deque/18604.cc
! 416bfffffc4e2f9348f8ef5dac1d2efd  libstdc++-v3/testsuite/23_containers/deque/58764.cc
! 3cf7784e1936a02fc24306f76a594537  libstdc++-v3/testsuite/23_containers/deque/allocator/copy.cc
! 834e97473d32df9772344ea5fc2458e3  libstdc++-v3/testsuite/23_containers/deque/allocator/copy_assign.cc
! 436c65cd6145ebe7267d09ed08ceee9a  libstdc++-v3/testsuite/23_containers/deque/allocator/ext_ptr.cc
! 7789b95b5fc01cbdc4dda132314a2bad  libstdc++-v3/testsuite/23_containers/deque/allocator/minimal.cc
! ff2be55bcca1fe51b266b442e2588706  libstdc++-v3/testsuite/23_containers/deque/allocator/move-2.cc
! f45036dd4e60b1202c7b5ae9cf1b3eac  libstdc++-v3/testsuite/23_containers/deque/allocator/move.cc
! 05c184ce53921604817941ef437660c4  libstdc++-v3/testsuite/23_containers/deque/allocator/move_assign-2.cc
! 56cf00c982a28e5a0429e655d5c53e5f  libstdc++-v3/testsuite/23_containers/deque/allocator/move_assign.cc
! 7e85196bae7d2c132413c70dc4d2a081  libstdc++-v3/testsuite/23_containers/deque/allocator/noexcept.cc
! 2899b8d56f249c5d42e9a83e1d546d23  libstdc++-v3/testsuite/23_containers/deque/allocator/swap.cc
! d3c386a7c8059f64a8a92ab2cda35988  libstdc++-v3/testsuite/23_containers/deque/capacity/29134-2.cc
! 8c9f6bc3a524ec4eaf10e703bcc14a25  libstdc++-v3/testsuite/23_containers/deque/capacity/29134.cc
! b8d9e54e097ffe6498885bddb548b83d  libstdc++-v3/testsuite/23_containers/deque/capacity/moveable.cc
! 4436e63d2a12feb0b544e11a27ee4081  libstdc++-v3/testsuite/23_containers/deque/capacity/resize_size.cc
! d7d3aa75e7a18a5ed514e334c5a21a44  libstdc++-v3/testsuite/23_containers/deque/capacity/shrink_to_fit.cc
! 5a2fe4ed86392c628da07b8a267cda17  libstdc++-v3/testsuite/23_containers/deque/check_construct_destroy.cc
! 90e9acbfd1e8dc9d5bea89157f25e03e  libstdc++-v3/testsuite/23_containers/deque/cons/1.cc
! 34d704d180e33a6d93edb083982b88e2  libstdc++-v3/testsuite/23_containers/deque/cons/2.cc
! 52f31fcb1b74703ce65a7e52edd0911e  libstdc++-v3/testsuite/23_containers/deque/cons/55977.cc
! 1042bbf175cc2d709457665d36cac720  libstdc++-v3/testsuite/23_containers/deque/cons/assign/1.cc
! 11ed26f7e852a3b8027d9aaf49e1fb1b  libstdc++-v3/testsuite/23_containers/deque/cons/clear_allocator.cc
! 10810189e86acc3b29f7be372e42f07c  libstdc++-v3/testsuite/23_containers/deque/cons/cons_size.cc
! c90064fc4d8bfaaed6ced754c923b500  libstdc++-v3/testsuite/23_containers/deque/cons/moveable.cc
! 28056fb577d0d845728d7b20976106a1  libstdc++-v3/testsuite/23_containers/deque/cons/moveable2.cc
! 058e8c8fdf163315685efd0b6c443d78  libstdc++-v3/testsuite/23_containers/deque/debug/assign1_neg.cc
! 4ec7a1d35c26f709f35150964c2c03b1  libstdc++-v3/testsuite/23_containers/deque/debug/assign2_neg.cc
! c08fcb68c45a437b73b5e6870c6a0bf0  libstdc++-v3/testsuite/23_containers/deque/debug/assign3_neg.cc
! 821a2324109357d80bdc7bc8df87bd2a  libstdc++-v3/testsuite/23_containers/deque/debug/assign4_neg.cc
! ee0aafd1ea31002f8cf4d408646adf23  libstdc++-v3/testsuite/23_containers/deque/debug/construct1_neg.cc
! 124bd515a7f95a23cf5ea87ea3005e65  libstdc++-v3/testsuite/23_containers/deque/debug/construct2_neg.cc
! ed2624fc4ec49a0cbfdcce335b485ece  libstdc++-v3/testsuite/23_containers/deque/debug/construct3_neg.cc
! 6c9bc086736a33fa561cdeb8b5b4bbd3  libstdc++-v3/testsuite/23_containers/deque/debug/construct4_neg.cc
! fac759536bc29f738a8f8891b2ecd46c  libstdc++-v3/testsuite/23_containers/deque/debug/insert1_neg.cc
! 2fbdede0bfb2676b18c4ff0a0a294000  libstdc++-v3/testsuite/23_containers/deque/debug/insert2_neg.cc
! 65f05e30c1ae8226842adfb0e30a2723  libstdc++-v3/testsuite/23_containers/deque/debug/insert3_neg.cc
! cfe24151696117f94de95f958e638fea  libstdc++-v3/testsuite/23_containers/deque/debug/insert4_neg.cc
! b02b072736b396f1cfc483f5af2e0a5e  libstdc++-v3/testsuite/23_containers/deque/debug/insert5_neg.cc
! 62d5277ec5ae0cc6c70e573ebbad93b7  libstdc++-v3/testsuite/23_containers/deque/debug/invalidation/1.cc
! 8f0365b6d36f1865dba4e2850a108183  libstdc++-v3/testsuite/23_containers/deque/debug/invalidation/2.cc
! 959749f194fa0a514ccc8c0eff90d196  libstdc++-v3/testsuite/23_containers/deque/debug/invalidation/3.cc
! 6816a625fb0786de5f633ec4003756e8  libstdc++-v3/testsuite/23_containers/deque/debug/invalidation/4.cc
! 0982924cadc7c0f7663de1aa4a1c2fe8  libstdc++-v3/testsuite/23_containers/deque/debug/iterator_self_move_assign_neg.cc
! 25cfad2dcb96101fde1ce69c17e65c2e  libstdc++-v3/testsuite/23_containers/deque/debug/self_move_assign_neg.cc
! 409b183d01fff6a4fa28f931f124f6fa  libstdc++-v3/testsuite/23_containers/deque/debug/shrink_to_fit.cc
! 652eedc0c08457a8bc6e08b86ef6cee7  libstdc++-v3/testsuite/23_containers/deque/init-list.cc
! 4fd696385ab35f6434b306ee0e40fcd6  libstdc++-v3/testsuite/23_containers/deque/modifiers/emplace/52799.cc
! 1dc1b0978ec304e938ccb7ad3046bbbe  libstdc++-v3/testsuite/23_containers/deque/modifiers/emplace/const_iterator.cc
! d15b606cec2a46a9c5ba2b39aac9e0bf  libstdc++-v3/testsuite/23_containers/deque/modifiers/emplace/cxx17_return.cc
! 3fa545e77875fa92554fbf9ee9fa22ec  libstdc++-v3/testsuite/23_containers/deque/modifiers/erase/1.cc
! 1f74806ecf19df8e4e958e144a238658  libstdc++-v3/testsuite/23_containers/deque/modifiers/erase/2.cc
! beb604a6553047f27e0c11d54ba0538b  libstdc++-v3/testsuite/23_containers/deque/modifiers/erase/3.cc
! 186bc2a236ebfd7a61b8b8969545c460  libstdc++-v3/testsuite/23_containers/deque/modifiers/erase/50529.cc
! 0e582ce5bcd420d7a616e8aea68603ea  libstdc++-v3/testsuite/23_containers/deque/modifiers/erase/54577.cc
! bd7cbf1e21e459fd1ebee1115ac03c5e  libstdc++-v3/testsuite/23_containers/deque/modifiers/erase/moveable.cc
! fd98809beac9f3782af7a72c9447078d  libstdc++-v3/testsuite/23_containers/deque/modifiers/insert/const_iterator.cc
! 6460dc49a100729e4d2b261df757a5f4  libstdc++-v3/testsuite/23_containers/deque/modifiers/moveable.cc
! 6afbfcb09f25f26588f852a52c759874  libstdc++-v3/testsuite/23_containers/deque/modifiers/push_back/49836.cc
! 773fc928077e4222b6452e937337fb76  libstdc++-v3/testsuite/23_containers/deque/modifiers/push_front/49836.cc
! e94430298ec619c2fd5d024ba3d6b6b6  libstdc++-v3/testsuite/23_containers/deque/modifiers/swap/1.cc
! cfb67359f6453f243d1b6f0ed87e00f0  libstdc++-v3/testsuite/23_containers/deque/modifiers/swap/2.cc
! 480493012222e5df08f138956685c602  libstdc++-v3/testsuite/23_containers/deque/modifiers/swap/3.cc
! e51c31fdff4622f569543562862f6b97  libstdc++-v3/testsuite/23_containers/deque/operators/1.cc
! bd403a76b13fe8d2bf01bc6a79f11afc  libstdc++-v3/testsuite/23_containers/deque/operators/2.cc
! 1e6592e93a942b9a70647a4e1be097aa  libstdc++-v3/testsuite/23_containers/deque/range_access.cc
! 9690f1b76a70f5991d9807fd23660cb6  libstdc++-v3/testsuite/23_containers/deque/requirements/citerators.cc
! 66be33ed659fcb4304f0531567cfad2f  libstdc++-v3/testsuite/23_containers/deque/requirements/do_the_right_thing.cc
! 5bac9d5438f43e192e37c610bc8065ab  libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/assign_neg.cc
! 9c319a0a28f4351e1243403bb5689c17  libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor.cc
! 562f8bdbbd4351c35356925c58362c6b  libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc
! f806ff7242c78d69dc08b028d1691c63  libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc
! d7d0a3877aca88b522e49b45edaa99ed  libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/insert_neg.cc
! 054fde4ca41364c1887ebf25ad834857  libstdc++-v3/testsuite/23_containers/deque/requirements/exception/basic.cc
! 0ed3bb5df2218d5a7a0c650157abdce2  libstdc++-v3/testsuite/23_containers/deque/requirements/exception/generation_prohibited.cc
! f3cadcbd59ca69f75ce99ed10542c0f0  libstdc++-v3/testsuite/23_containers/deque/requirements/exception/propagation_consistent.cc
! ea1f69915fb67e0d9aaa1f2d3f91c6d4  libstdc++-v3/testsuite/23_containers/deque/requirements/explicit_instantiation/1.cc
! 8def239c40179d72dd2d48ee786601dc  libstdc++-v3/testsuite/23_containers/deque/requirements/explicit_instantiation/1_c++0x.cc
! 432c1fa6b619cdd7388b57ae2f5a169d  libstdc++-v3/testsuite/23_containers/deque/requirements/explicit_instantiation/2.cc
! 757d106f59cba41fdafd88308d06b11b  libstdc++-v3/testsuite/23_containers/deque/requirements/explicit_instantiation/3.cc
! c2aada51dc148667850a1264ecd5818f  libstdc++-v3/testsuite/23_containers/deque/requirements/explicit_instantiation/4.cc
! 75d06cd8fa0c49dcc010dff1ebd5e978  libstdc++-v3/testsuite/23_containers/deque/requirements/partial_specialization/1.cc
! 25f48c28b80792a8b4b2294e155d90e1  libstdc++-v3/testsuite/23_containers/deque/requirements/typedefs.cc
! 2f7d732b6042116fe8a257f351386d52  libstdc++-v3/testsuite/23_containers/deque/types/1.cc
! 2944ceb17146664df2c7f21d1e0fc7f9  libstdc++-v3/testsuite/23_containers/forward_list/allocator/copy.cc
! 3b97f8bfbf1489e9d744846c64435f4e  libstdc++-v3/testsuite/23_containers/forward_list/allocator/copy_assign.cc
! a8b9403517fbd3f3ca1bcf18ff95e4e8  libstdc++-v3/testsuite/23_containers/forward_list/allocator/ext_ptr.cc
! c6b20dad7dab04356b2ccff38941f054  libstdc++-v3/testsuite/23_containers/forward_list/allocator/minimal.cc
! 7a5ad128cc9266175a9517635f9752d4  libstdc++-v3/testsuite/23_containers/forward_list/allocator/move.cc
! 22e4e248c3aa4cb70ce9044119b06cbc  libstdc++-v3/testsuite/23_containers/forward_list/allocator/move_assign.cc
! 1ff7843592cee692ceabdfa996033d82  libstdc++-v3/testsuite/23_containers/forward_list/allocator/noexcept.cc
! 8ebcd9150bb64bea5bef314db97b9a20  libstdc++-v3/testsuite/23_containers/forward_list/allocator/swap.cc
! d5801af7ff547530aff50b573299edca  libstdc++-v3/testsuite/23_containers/forward_list/capacity/1.cc
! 6f1606d773fe7422060929eac6a57c7a  libstdc++-v3/testsuite/23_containers/forward_list/capacity/resize_size.cc
! 3be81132822bf133a94852ad1b8f18f7  libstdc++-v3/testsuite/23_containers/forward_list/comparable.cc
! 7099d4baa79d45b330d0916ade555ad9  libstdc++-v3/testsuite/23_containers/forward_list/cons/1.cc
! c7ded4abef28f6c038b50dd3b12a40ef  libstdc++-v3/testsuite/23_containers/forward_list/cons/10.cc
! ea7076e9e1a48e649d718092d4b92ff3  libstdc++-v3/testsuite/23_containers/forward_list/cons/11.cc
! 5606f78c3593ddd2b3e3d530548f55bd  libstdc++-v3/testsuite/23_containers/forward_list/cons/12.cc
! 0f82b3590454ba6de42c03b6ed3c0cf1  libstdc++-v3/testsuite/23_containers/forward_list/cons/13.cc
! 2b9400eb57262af0721c74aec90d8d53  libstdc++-v3/testsuite/23_containers/forward_list/cons/14.cc
! 7a08860c5c8a0f80a2b12db1c9d436ff  libstdc++-v3/testsuite/23_containers/forward_list/cons/2.cc
! e539e923da44197cd7fae36847b78b77  libstdc++-v3/testsuite/23_containers/forward_list/cons/3.cc
! 3f160d77e548e4eff01418a257a40f96  libstdc++-v3/testsuite/23_containers/forward_list/cons/4.cc
! ae488037bffaea3e84338803ab4d7e86  libstdc++-v3/testsuite/23_containers/forward_list/cons/5.cc
! b0b4ee91cbef356a0a970c8ef4b44bd3  libstdc++-v3/testsuite/23_containers/forward_list/cons/6.cc
! 6b2dc87ca896216995ff037a24c6fc39  libstdc++-v3/testsuite/23_containers/forward_list/cons/7.cc
! 184635f82dd154a658aedfec7a3ebc5c  libstdc++-v3/testsuite/23_containers/forward_list/cons/8.cc
! f7f2fd2d80d092425b5a2acbe689c3df  libstdc++-v3/testsuite/23_containers/forward_list/cons/9.cc
! 68e3f20d7757f482aed0a3bf0cf5ae58  libstdc++-v3/testsuite/23_containers/forward_list/cons/cons_size.cc
! 955810576b0d1316d278b9bf25a462a9  libstdc++-v3/testsuite/23_containers/forward_list/cons/moveable.cc
! 29e92a30a2c8e5ed19c4016d30056597  libstdc++-v3/testsuite/23_containers/forward_list/cons/noexcept_move_construct.cc
! bf5a76c039c1916128b322e69dc025a5  libstdc++-v3/testsuite/23_containers/forward_list/debug/60499.cc
! 50c47b1e609ae2abec3f5933195e6343  libstdc++-v3/testsuite/23_containers/forward_list/debug/clear.cc
! 015259b6a666330d0b3c5d95c7af1d41  libstdc++-v3/testsuite/23_containers/forward_list/debug/construct1_neg.cc
! 5db5f56e3f161527afa079fda90f08a6  libstdc++-v3/testsuite/23_containers/forward_list/debug/construct2_neg.cc
! 401a5cdf78350db0dee9535b2e9742ec  libstdc++-v3/testsuite/23_containers/forward_list/debug/construct3_neg.cc
! 5233d178c948cbc60a5aab3fd2271949  libstdc++-v3/testsuite/23_containers/forward_list/debug/construct4_neg.cc
! b4f3f83e620967cc4746415cad9e6331  libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after1_neg.cc
! 385bd3e9288286a9e6b4b6aeb7979448  libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after2_neg.cc
! 5e9b8ef3bded72debb925433f364473e  libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after3_neg.cc
! 9b33b1fe4260082273b02ec5797c316e  libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after4_neg.cc
! 56c20033162d3dc3a2f2dc0f822a3571  libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after5_neg.cc
! 8ce59d8173c825c9748357ac6e995fda  libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after6_neg.cc
! b4de11b3aa87140b1cd51e1f712ccb67  libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after7_neg.cc
! 56a32dd70437978810b8e1e3faf76264  libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after8_neg.cc
! b53ab84b387c0abab2b1f4f0493609f9  libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after9_neg.cc
! 702c4ce38ce483bf28515f145f764326  libstdc++-v3/testsuite/23_containers/forward_list/debug/insert_after1_neg.cc
! 90f4dcac6a091e8a453a2706eb6b2485  libstdc++-v3/testsuite/23_containers/forward_list/debug/insert_after2_neg.cc
! 9f8848d3a611e716e8cdcfba3f6fecc2  libstdc++-v3/testsuite/23_containers/forward_list/debug/insert_after3_neg.cc
! 28abcb90da88d05a00cb8fb6ce934233  libstdc++-v3/testsuite/23_containers/forward_list/debug/insert_after4_neg.cc
! b11abcf9ab67a8427c586000dde9f556  libstdc++-v3/testsuite/23_containers/forward_list/debug/iterator_self_move_assign_neg.cc
! c1beb372071d8d752255517e2381b4da  libstdc++-v3/testsuite/23_containers/forward_list/debug/move_assign_neg.cc
! 0966212fab05909f43ffd383aecf3abb  libstdc++-v3/testsuite/23_containers/forward_list/debug/move_constructor.cc
! df0fa0880b1136d94641c9874ae524fe  libstdc++-v3/testsuite/23_containers/forward_list/debug/move_neg.cc
! bb873a7ae167418af5c0798c778dcbf6  libstdc++-v3/testsuite/23_containers/forward_list/debug/self_move_assign_neg.cc
! d418d10d4c21c6a6077ebfc1977d03e7  libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after.cc
! b41a3b5c2e2520071add6b318b4e5830  libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after1_neg.cc
! f2093fe8770713e16d35cf615085ce64  libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after2_neg.cc
! 6bb35a8b943c73ece928b2af27e4a431  libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after3_neg.cc
! 8cfd89ec0aeb4f4790ae6c7c8988520c  libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after4_neg.cc
! 98f490b2f6816bdc36ad4c5580eee684  libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after5_neg.cc
! b0e4700e52c68c20d74a3c940f1abdd8  libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after6_neg.cc
! 7cc8cfdd21452d243723a723a89ea36e  libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after7_neg.cc
! e9e9f4094fcf7be61d4f6460f31370bf  libstdc++-v3/testsuite/23_containers/forward_list/debug/swap.cc
! d32a1cfe705a1e8ea9d410a4c8e4579c  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/1.cc
! a984d52c7b3d36de4d88c241a5f647d8  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/2.cc
! 4d141d5fc19c48dbf7392b031a172b20  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/3.cc
! 278050287b4d92cd6e0513feba2e6705  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/4.cc
! a009b2553184abca19b718c5c39389fa  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/5.cc
! 2a8182d11340736ede7f3df6c0f2de66  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/6.cc
! 10bbdd355e5a17171dcf0feccd2eb2b7  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/addressof.cc
! bee0b999820771c010b8a0223f00009e  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/emplace_cxx17_return.cc
! 00ab1591b0a292730641cbca147fb5e9  libstdc++-v3/testsuite/23_containers/forward_list/operations/1.cc
! 0c2c46a6e9dbf14ebd7b15203ef78b19  libstdc++-v3/testsuite/23_containers/forward_list/operations/2.cc
! ce2869bd9b6d50f8b27e7e41fc3201d1  libstdc++-v3/testsuite/23_containers/forward_list/operations/3.cc
! 5a3bbdaf13a6ec8ca2218590c00c1bfe  libstdc++-v3/testsuite/23_containers/forward_list/operations/4.cc
! 380d09852cdcf5b1be797f3621185d04  libstdc++-v3/testsuite/23_containers/forward_list/operations/5.cc
! 1c900f4a094eca035562fe65f550f5ac  libstdc++-v3/testsuite/23_containers/forward_list/operations/6.cc
! 9c5e1f39ff6d5d76d2891b7e6f5690d6  libstdc++-v3/testsuite/23_containers/forward_list/operations/7.cc
! aa7d45fa0aea8f2bc702c21364164db8  libstdc++-v3/testsuite/23_containers/forward_list/operations/remove_freed.cc
! 4142604b961afb1cfd399981d981a620  libstdc++-v3/testsuite/23_containers/forward_list/range_access.cc
! 503d59839ca02e30fceb412b9a7b22e2  libstdc++-v3/testsuite/23_containers/forward_list/requirements/citerators.cc
! 05536888fdae43189604085c06f742ac  libstdc++-v3/testsuite/23_containers/forward_list/requirements/do_the_right_thing.cc
! 0693190ecb421502f64d6f0e76fd9372  libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/assign_neg.cc
! f462bd635cf69979a50943b86b0bdc71  libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor.cc
! 965830d6741ee7d999c29b6fae3eedc7  libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_1_neg.cc
! 7915ac8432eda2873906dda0950ff478  libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_2_neg.cc
! 1410f3b46fc01dabd3dc16a49e92a614  libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/insert_neg.cc
! 04a92a5486c08239811b650404ddcf55  libstdc++-v3/testsuite/23_containers/forward_list/requirements/exception/basic.cc
! 57797c44755a4db6e376f7f61681604e  libstdc++-v3/testsuite/23_containers/forward_list/requirements/exception/generation_prohibited.cc
! f1f66fb49d07be7124c7390bf0351912  libstdc++-v3/testsuite/23_containers/forward_list/requirements/exception/propagation_consistent.cc
! c1f725ae782a3472ebe469e6934caaf3  libstdc++-v3/testsuite/23_containers/forward_list/requirements/explicit_instantiation/1.cc
! 4f84a3c3485a8f2f187b6da918675f9e  libstdc++-v3/testsuite/23_containers/forward_list/requirements/explicit_instantiation/3.cc
! d41eba95f92d3c9b0c90f701d9d51c30  libstdc++-v3/testsuite/23_containers/forward_list/requirements/explicit_instantiation/4.cc
! 216ea3df197c504311a952f45a3d5ab6  libstdc++-v3/testsuite/23_containers/forward_list/requirements/explicit_instantiation/5.cc
! c6930953114b0e71f6a9455d78a4af5a  libstdc++-v3/testsuite/23_containers/forward_list/requirements/typedefs.cc
! 0a016106e5dbc16a07b4b5d74231e330  libstdc++-v3/testsuite/23_containers/headers/array/std_c++0x_neg.cc
! 5884b2aaaac08537cec23b8c165977a3  libstdc++-v3/testsuite/23_containers/headers/bitset/synopsis.cc
! f1ba91afc344c63c9e69daea683ef60a  libstdc++-v3/testsuite/23_containers/headers/deque/synopsis.cc
! 5861cbae27af4f422bcd7354979df545  libstdc++-v3/testsuite/23_containers/headers/forward_list/synopsis.cc
! da9c364f0971756d76a16b4e51b850ea  libstdc++-v3/testsuite/23_containers/headers/list/synopsis.cc
! 4140535dcd86f97fe6350a93527105fb  libstdc++-v3/testsuite/23_containers/headers/map/synopsis.cc
! 2a23a62830cee9ba3f2d247a28165f3b  libstdc++-v3/testsuite/23_containers/headers/queue/synopsis.cc
! 24f91e5671d644e86daec853b968c100  libstdc++-v3/testsuite/23_containers/headers/set/synopsis.cc
! c608f1c7d9ce220cd632f693d73d74e4  libstdc++-v3/testsuite/23_containers/headers/stack/synopsis.cc
! c7cc689b87ae1322229c0ff4f221f3dc  libstdc++-v3/testsuite/23_containers/headers/tuple/std_c++0x_neg.cc
! 98327c7e5d6e92f880621e86f8c8f819  libstdc++-v3/testsuite/23_containers/headers/tuple/types_std_c++0x.cc
! 4de63c0b2f26f99c11ad23968601ff11  libstdc++-v3/testsuite/23_containers/headers/unordered_map/std_c++0x_neg.cc
! 3d04eb33cae65df0d6a1d88c1b101e7a  libstdc++-v3/testsuite/23_containers/headers/unordered_set/std_c++0x_neg.cc
! be576ee887bac0984d946c55e4425573  libstdc++-v3/testsuite/23_containers/headers/vector/synopsis.cc
! b58fb897f04d9dc688d74d9fa966b4c3  libstdc++-v3/testsuite/23_containers/list/14340.cc
! 8d48e9c34ca30db6f58acf69700d5e20  libstdc++-v3/testsuite/23_containers/list/18604.cc
! 827cde830f403adabd940296fd1c4424  libstdc++-v3/testsuite/23_containers/list/23781_neg.cc
! e7dd118007dd95dfa6457893d2690523  libstdc++-v3/testsuite/23_containers/list/58764.cc
! c9a2a081e1bab6fdaccb63fd6bdbd72a  libstdc++-v3/testsuite/23_containers/list/61347.cc
! 194d947dc7917ee04aeb0b9dcb0d5a78  libstdc++-v3/testsuite/23_containers/list/allocator/copy.cc
! 7e267b4874c64787779678a869bfccc6  libstdc++-v3/testsuite/23_containers/list/allocator/copy_assign.cc
! 473399b194cab1bc5075c06d180c58c2  libstdc++-v3/testsuite/23_containers/list/allocator/minimal.cc
! bdd8fd9d13112f5155998ee089a2867f  libstdc++-v3/testsuite/23_containers/list/allocator/move.cc
! 7bec79566c32493a63b3ad4edcd7773d  libstdc++-v3/testsuite/23_containers/list/allocator/move_assign.cc
! c7393ced3a9544cff51fe5c2412adf16  libstdc++-v3/testsuite/23_containers/list/allocator/noexcept.cc
! 1e7c703a73f4b37d28f3473221828aae  libstdc++-v3/testsuite/23_containers/list/allocator/swap.cc
! b4bb35af4f57cf941f9650c088cd5611  libstdc++-v3/testsuite/23_containers/list/capacity/1.cc
! 89d2d676ff16809c5ac01a47d01db9e3  libstdc++-v3/testsuite/23_containers/list/capacity/1.h
! 70e582b1191f1c224d4f725e412f60ae  libstdc++-v3/testsuite/23_containers/list/capacity/29134.cc
! 6ebe04527dbd780f5315a63995de8716  libstdc++-v3/testsuite/23_containers/list/capacity/resize_size.cc
! 9ed6364246cac10ca1b7940e5d5205be  libstdc++-v3/testsuite/23_containers/list/check_construct_destroy.cc
! c409272e4e3a2dc527f881148da17912  libstdc++-v3/testsuite/23_containers/list/check_construct_destroy.h
! 0d58471e0dd1e5984fcec6f2006dc512  libstdc++-v3/testsuite/23_containers/list/cons/1.cc
! 9a5dbfeff79c9d5786a33b0ee094c6bc  libstdc++-v3/testsuite/23_containers/list/cons/1.h
! a4e0da1a358ae305ef0b90189ca0e4a2  libstdc++-v3/testsuite/23_containers/list/cons/2.cc
! 444f71cc769857a2bb9cb6120b7c0aef  libstdc++-v3/testsuite/23_containers/list/cons/2.h
! 031081ca5af209d9b3ddb626f9c0732d  libstdc++-v3/testsuite/23_containers/list/cons/3.cc
! 16598095cc850da76ac44c7987d359a6  libstdc++-v3/testsuite/23_containers/list/cons/3.h
! 3ecc668daf936fe257d2451cbeac47ff  libstdc++-v3/testsuite/23_containers/list/cons/4.cc
! 66f2c78020206fdb128c05ce48918180  libstdc++-v3/testsuite/23_containers/list/cons/4.h
! ec3c940f08de40238bb2d52769c60e37  libstdc++-v3/testsuite/23_containers/list/cons/5.cc
! 708a702b878692f3be5032a054410d6b  libstdc++-v3/testsuite/23_containers/list/cons/5.h
! b05917a7db95f12a703652e3448ea1b0  libstdc++-v3/testsuite/23_containers/list/cons/55979.cc
! ab088f035d311986df6e6547c573b687  libstdc++-v3/testsuite/23_containers/list/cons/6.cc
! 3c859353b32ea307e846e60a19ca0b49  libstdc++-v3/testsuite/23_containers/list/cons/6.h
! 4d0edefe95393e4931791dde5875d819  libstdc++-v3/testsuite/23_containers/list/cons/7.cc
! 709e9fa5e42a409070825b52dd482260  libstdc++-v3/testsuite/23_containers/list/cons/7.h
! 140a0478f5ae198e8dbd7d43018bd970  libstdc++-v3/testsuite/23_containers/list/cons/8.cc
! 36505601f13b88936dbe8ade98fed03f  libstdc++-v3/testsuite/23_containers/list/cons/8.h
! 5d05532de29f33afa9b1f14c8da5791c  libstdc++-v3/testsuite/23_containers/list/cons/9.cc
! 21f852f1d3469b84bc8d2a233ba37a02  libstdc++-v3/testsuite/23_containers/list/cons/9.h
! 3ad1fe4ed287eb5b49c494b75227aaa3  libstdc++-v3/testsuite/23_containers/list/cons/clear_allocator.cc
! 99eddaf56a40dde0f93195e4d6d76247  libstdc++-v3/testsuite/23_containers/list/cons/clear_allocator.h
! 8b7ef4133becb44f9035bb62d35db039  libstdc++-v3/testsuite/23_containers/list/cons/cons_size.cc
! 3ad3f5419f836d5b1d83a5fd67f59121  libstdc++-v3/testsuite/23_containers/list/cons/moveable.cc
! a01fb3e082f3b444d78c7e2c13b1fa70  libstdc++-v3/testsuite/23_containers/list/cons/moveable.h
! 8470e3a16699023945ef353feceffcd8  libstdc++-v3/testsuite/23_containers/list/cons/noexcept_move_construct.cc
! b3ce2cd9e6ee50e9ba8013e0f76502b2  libstdc++-v3/testsuite/23_containers/list/debug/assign1_neg.cc
! 59c99fcd83ac89fcd4b0d75a8e24c598  libstdc++-v3/testsuite/23_containers/list/debug/assign2_neg.cc
! 9933c2d8d0d539c0640904a12a66b198  libstdc++-v3/testsuite/23_containers/list/debug/assign3_neg.cc
! f930517dbf26c6c9a0a54f037be6fefd  libstdc++-v3/testsuite/23_containers/list/debug/assign4_neg.cc
! 8be4f4bebe70c016f542ddc5ef82b418  libstdc++-v3/testsuite/23_containers/list/debug/construct1_neg.cc
! d542759a63d65a0f6098cba78fc1825d  libstdc++-v3/testsuite/23_containers/list/debug/construct2_neg.cc
! 5ccc708f0353492ba6246c5aed1d163b  libstdc++-v3/testsuite/23_containers/list/debug/construct3_neg.cc
! 590a6becfc626967af4501a260df4df2  libstdc++-v3/testsuite/23_containers/list/debug/construct4_neg.cc
! 6b9d0e2d71979408bdf7dfb4ada9ac35  libstdc++-v3/testsuite/23_containers/list/debug/insert1_neg.cc
! 7d28c8e3694773044293cf931d8d034f  libstdc++-v3/testsuite/23_containers/list/debug/insert2_neg.cc
! e4aa4957e45f00ef1c53a155b2738192  libstdc++-v3/testsuite/23_containers/list/debug/insert3_neg.cc
! 55fbf6616777da907d0f04b4135c3dbe  libstdc++-v3/testsuite/23_containers/list/debug/insert4_neg.cc
! 02e5615c3af0a2facbc2c2e68e95123a  libstdc++-v3/testsuite/23_containers/list/debug/insert5_neg.cc
! fad971a125194755baaabf2a0caa06f1  libstdc++-v3/testsuite/23_containers/list/debug/invalidation/1.cc
! 7c5dde823b927773f29a6ff7404afe14  libstdc++-v3/testsuite/23_containers/list/debug/invalidation/2.cc
! 0c4bc5396bc6dd09e27f3223f1e253eb  libstdc++-v3/testsuite/23_containers/list/debug/invalidation/3.cc
! ac2532d13e418bc6a1e1961f7db88015  libstdc++-v3/testsuite/23_containers/list/debug/invalidation/4.cc
! 38b4f4945d828b208d1397b6302f6616  libstdc++-v3/testsuite/23_containers/list/debug/iterator_self_move_assign_neg.cc
! 6385945642a6fbef315f5f3ffa7b3290  libstdc++-v3/testsuite/23_containers/list/debug/self_move_assign_neg.cc
! 667b281d28a62b2297df0245ce0a3559  libstdc++-v3/testsuite/23_containers/list/init-list.cc
! e466d27462d8772ff9c3eb0392f823d4  libstdc++-v3/testsuite/23_containers/list/init-list.h
! 6274b24095846bb4fc95f17010ef76b2  libstdc++-v3/testsuite/23_containers/list/modifiers/1.cc
! 33f6e22aeca103ef7acd8b20445c8822  libstdc++-v3/testsuite/23_containers/list/modifiers/1.h
! 2df0d111c586f0084a6e72bf49729a4e  libstdc++-v3/testsuite/23_containers/list/modifiers/1_c++0x.cc
! e2021725511e3838b8368a385ce5f002  libstdc++-v3/testsuite/23_containers/list/modifiers/2.cc
! 4544adc8b21358026d491ecf40b87abf  libstdc++-v3/testsuite/23_containers/list/modifiers/2.h
! e7d29afb164c43ddf90eb4ccb961287e  libstdc++-v3/testsuite/23_containers/list/modifiers/3.cc
! 569b856416b1e0154b716926c269638f  libstdc++-v3/testsuite/23_containers/list/modifiers/3.h
! 90369aa410ea6376577a281e7e5697fa  libstdc++-v3/testsuite/23_containers/list/modifiers/addressof.cc
! 5214b761457c0e2fdfebb5141f153026  libstdc++-v3/testsuite/23_containers/list/modifiers/emplace/52799.cc
! 890f2bcb88a302437d60ed1da9cd26cb  libstdc++-v3/testsuite/23_containers/list/modifiers/emplace/const_iterator.cc
! 96a1b411a3aca7bb7cb98225b8adb16c  libstdc++-v3/testsuite/23_containers/list/modifiers/emplace/cxx17_return.cc
! d9f955e4ec10c9b7056a2e78b2147049  libstdc++-v3/testsuite/23_containers/list/modifiers/erase/54577.cc
! 63fde7c7df2e5e0b147a5cd7b2c76e9a  libstdc++-v3/testsuite/23_containers/list/modifiers/insert/25288.cc
! 41b4a5638437bc8510f9ac5e755b8634  libstdc++-v3/testsuite/23_containers/list/modifiers/insert/25288.h
! 32f4e8401fb6286c738ff8c0938c50a1  libstdc++-v3/testsuite/23_containers/list/modifiers/insert/const_iterator.cc
! 5577da5fcb8b53c2cd24ce7d34a36c04  libstdc++-v3/testsuite/23_containers/list/modifiers/swap/1.cc
! d5f38505b8a7d03b8b7d5185b2f2dad6  libstdc++-v3/testsuite/23_containers/list/modifiers/swap/1.h
! 3b3ea2c47c885857ec3e8b135a12bcff  libstdc++-v3/testsuite/23_containers/list/modifiers/swap/2.cc
! 94ca080a78bbe31f88bdd78056ef8d28  libstdc++-v3/testsuite/23_containers/list/modifiers/swap/2.h
! ead056c517beed4aad2c297b13844dbc  libstdc++-v3/testsuite/23_containers/list/modifiers/swap/3.cc
! 944ae70c213ded8566d7230b75b5c668  libstdc++-v3/testsuite/23_containers/list/modifiers/swap/3.h
! 23b0ebe6c48d63f9c342e9cbbf48690d  libstdc++-v3/testsuite/23_containers/list/operations/1.cc
! 576fd12bfd86c04347ff3aa3eae53c00  libstdc++-v3/testsuite/23_containers/list/operations/1.h
! 770327a448264485d433d760b8db02d1  libstdc++-v3/testsuite/23_containers/list/operations/2.cc
! 23d67a59935fbee83f9e30c6ffae6a2c  libstdc++-v3/testsuite/23_containers/list/operations/2.h
! aef89bba47145d40dac2870ac5fb7041  libstdc++-v3/testsuite/23_containers/list/operations/2_c++0x.cc
! aed51c3ac55e93aef332f660c933e16c  libstdc++-v3/testsuite/23_containers/list/operations/3.cc
! 0f82fb38979b21198dadaff13f198bf1  libstdc++-v3/testsuite/23_containers/list/operations/3.h
! 4a5d89c8b71699d19ef009369b043b3c  libstdc++-v3/testsuite/23_containers/list/operations/35969.cc
! 1324fd9bb1a0ed9856355b175d099b3a  libstdc++-v3/testsuite/23_containers/list/operations/3_c++0x.cc
! e257a39c8994db57cc75d359ba25df01  libstdc++-v3/testsuite/23_containers/list/operations/4.cc
! f8c38b02c24352073ba2640aa39350f8  libstdc++-v3/testsuite/23_containers/list/operations/4.h
! f6c72c4b9b59cf4c4c5cdeee6ceeb4d9  libstdc++-v3/testsuite/23_containers/list/operations/42352.cc
! 984fc42b7b87db3f60d4a433d510b99e  libstdc++-v3/testsuite/23_containers/list/operations/78389.cc
! 2e48ac629e274a125bbb34b2e932fd5b  libstdc++-v3/testsuite/23_containers/list/operations/80034.cc
! eddca07dcf05bfd98485c822b450eb13  libstdc++-v3/testsuite/23_containers/list/operations/splice/const_iterator.cc
! 26f687e896150218a6fa047388af3238  libstdc++-v3/testsuite/23_containers/list/pthread1.cc
! db2d7bf648359ba962d8512612e0594a  libstdc++-v3/testsuite/23_containers/list/pthread5.cc
! 89c5ab0984f45aca979e7ed45a148424  libstdc++-v3/testsuite/23_containers/list/range_access.cc
! 237dc90ef222ea5217e9a54234a9d0fe  libstdc++-v3/testsuite/23_containers/list/requirements/citerators.cc
! 24f6fbc190d9816eea43063a7d2554dd  libstdc++-v3/testsuite/23_containers/list/requirements/do_the_right_thing.cc
! 7de5c213a66926de5caa485848def39a  libstdc++-v3/testsuite/23_containers/list/requirements/dr438/assign_neg.cc
! 326f3f2707558ea4996300f796b9cbcc  libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor.cc
! 28dcb33b47e0cc242271c4afb2eb0c91  libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc
! 2c4db25f3f7c7e54c1030d3c3229157c  libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc
! a812d14be88282bc70d1fef6f8997365  libstdc++-v3/testsuite/23_containers/list/requirements/dr438/insert_neg.cc
! 5c17f1da35482d246f6e8f461b1d1b7a  libstdc++-v3/testsuite/23_containers/list/requirements/exception/basic.cc
! fe92df68118d053fce6598463d22a424  libstdc++-v3/testsuite/23_containers/list/requirements/exception/generation_prohibited.cc
! 5d2a6d407ddc2b79404b5c77aee89011  libstdc++-v3/testsuite/23_containers/list/requirements/exception/propagation_consistent.cc
! 96d5f1e3882ab3aafdf4f00d1d9a509f  libstdc++-v3/testsuite/23_containers/list/requirements/explicit_instantiation/1.cc
! 84e1267b50ae990ceaaccb2d210904e2  libstdc++-v3/testsuite/23_containers/list/requirements/explicit_instantiation/1_c++0x.cc
! 8610dfce4a447d24ae471714748c25ce  libstdc++-v3/testsuite/23_containers/list/requirements/explicit_instantiation/2.cc
! 5ddf74acd7597472c5e3d9435f817994  libstdc++-v3/testsuite/23_containers/list/requirements/explicit_instantiation/3.cc
! e18ab179ddbd8b67dfcfcde8442aa38b  libstdc++-v3/testsuite/23_containers/list/requirements/explicit_instantiation/4.cc
! 7bed1f9e6df96d83bee62c501b473dd2  libstdc++-v3/testsuite/23_containers/list/requirements/explicit_instantiation/5.cc
! a8b74e3f461aa5e9e329b5bb3283ee69  libstdc++-v3/testsuite/23_containers/list/requirements/explicit_instantiation/5_c++0x.cc
! 1db057c8b5903a283a452a43b7ea02e0  libstdc++-v3/testsuite/23_containers/list/requirements/partial_specialization/1.cc
! e233f75df4a23bb86606078c290ba941  libstdc++-v3/testsuite/23_containers/list/requirements/typedefs.cc
! 30c316589755e7b85ef4eab74e7932cb  libstdc++-v3/testsuite/23_containers/map/14340.cc
! 2ee6237c40aa9e0f44cf2c65976837a6  libstdc++-v3/testsuite/23_containers/map/18604.cc
! c5a5d9544ad8fe9402b17744bce893b0  libstdc++-v3/testsuite/23_containers/map/23781_neg.cc
! 41ef9484e7a492b18b54212f89f39395  libstdc++-v3/testsuite/23_containers/map/56613.cc
! 0f8fa7ed8b1141e677166455202d69d3  libstdc++-v3/testsuite/23_containers/map/58764.cc
! 08f6c1cb30a21ec0669c38c166ccbae9  libstdc++-v3/testsuite/23_containers/map/59872.cc
! c47b269b27a4c92ac9354feb6fe10f70  libstdc++-v3/testsuite/23_containers/map/77334.cc
! b79569f37ed8f14d8b4e9b5a4532a69e  libstdc++-v3/testsuite/23_containers/map/allocator/copy.cc
! 2022675ffdedc181682fa4533ced0f7f  libstdc++-v3/testsuite/23_containers/map/allocator/copy_assign.cc
! 43f7b2a7134bc588a591d49da6afd642  libstdc++-v3/testsuite/23_containers/map/allocator/init-list.cc
! e912789f0232c2e36b46660958118be5  libstdc++-v3/testsuite/23_containers/map/allocator/minimal.cc
! cbb977716bfab1e3a51ba8ed611abfd8  libstdc++-v3/testsuite/23_containers/map/allocator/move.cc
! 3233ddfb05d49b0239fd366abd480434  libstdc++-v3/testsuite/23_containers/map/allocator/move_assign.cc
! 66c7d0f9a8d98f85295fc477df676c9e  libstdc++-v3/testsuite/23_containers/map/allocator/noexcept.cc
! 4e6e7a678bd20dc2599fd20ef6cc0829  libstdc++-v3/testsuite/23_containers/map/allocator/swap.cc
! 20f5eb0d08342da319a89964c92d4614  libstdc++-v3/testsuite/23_containers/map/capacity/29134.cc
! 92905da09d304b9e7e25020af3002f92  libstdc++-v3/testsuite/23_containers/map/cons/moveable.cc
! 8a38103aeda556cc2ba1f9467fa10a87  libstdc++-v3/testsuite/23_containers/map/cons/noexcept_default_construct.cc
! 3604ecca4a9826d0276ef0ed3b4d80fd  libstdc++-v3/testsuite/23_containers/map/cons/noexcept_move_construct.cc
! fd5c9e4773fa51d9c127a2b672063cee  libstdc++-v3/testsuite/23_containers/map/debug/60499.cc
! 30b1055bf015cc80267a20f284988bae  libstdc++-v3/testsuite/23_containers/map/debug/construct1_neg.cc
! 5bec58d0f3ab2e0b18910b6a5bbdc205  libstdc++-v3/testsuite/23_containers/map/debug/construct2_neg.cc
! 46a2ca366e66f073c38ec05a9afbdd61  libstdc++-v3/testsuite/23_containers/map/debug/construct3_neg.cc
! a9ce35c344f6161f5ae4ca19a48103a8  libstdc++-v3/testsuite/23_containers/map/debug/construct4_neg.cc
! 4e7b34790249519a2df1717ce140ea2e  libstdc++-v3/testsuite/23_containers/map/debug/construct5_neg.cc
! 2f88ef440f27dfde4e3b7c2bb19d5ee9  libstdc++-v3/testsuite/23_containers/map/debug/insert1_neg.cc
! 85490f8b071108de7c5316f7479b984d  libstdc++-v3/testsuite/23_containers/map/debug/insert2_neg.cc
! f7d07f92f48fc56bd0764889f5726b7b  libstdc++-v3/testsuite/23_containers/map/debug/insert3_neg.cc
! c64befe8bfe9e17bd40ff90fb3bc1027  libstdc++-v3/testsuite/23_containers/map/debug/insert4_neg.cc
! 726ad5a45a2350485254816a626391a5  libstdc++-v3/testsuite/23_containers/map/debug/invalidation/1.cc
! 448dfbb7cf651ecdec9fc061d2b06aae  libstdc++-v3/testsuite/23_containers/map/debug/invalidation/2.cc
! f682e05609ee1e403db030958ac31cc9  libstdc++-v3/testsuite/23_containers/map/debug/iterator_self_move_assign_neg.cc
! b86afb1bde2a08f202d36e57f344dc2e  libstdc++-v3/testsuite/23_containers/map/debug/move_assign_neg.cc
! 6224e3caa2764e1db028ce6d2252ff23  libstdc++-v3/testsuite/23_containers/map/debug/move_neg.cc
! befa0c1de21ba32e80b5f3378e4d8dfa  libstdc++-v3/testsuite/23_containers/map/debug/self_move_assign_neg.cc
! 7860dc5b27aeebf45f57a8caea10e7f4  libstdc++-v3/testsuite/23_containers/map/element_access/1.cc
! f75e69fbc8e8793b232712ae99559e08  libstdc++-v3/testsuite/23_containers/map/element_access/2.cc
! 568d1fa1c1e8c4c63f0e1d0f85b19730  libstdc++-v3/testsuite/23_containers/map/element_access/39901.cc
! ea7d40cd3fcb68eea5a7b33a8252d315  libstdc++-v3/testsuite/23_containers/map/element_access/46148.cc
! 3d05cdf5e9e3afba564722624c5289a8  libstdc++-v3/testsuite/23_containers/map/init-list.cc
! bd13768c1fb59f563b7345a4effaeb23  libstdc++-v3/testsuite/23_containers/map/modifiers/dr130.cc
! 2c3818a0688187bce1a9cad7fdc643d5  libstdc++-v3/testsuite/23_containers/map/modifiers/emplace/1.cc
! 74f109d88232a5da197db168fa61c53e  libstdc++-v3/testsuite/23_containers/map/modifiers/erase/47628.cc
! 85d254250f07847de8b5280824fae23c  libstdc++-v3/testsuite/23_containers/map/modifiers/erase/51142.cc
! 0857444eb4d853b8e602cb1a962d3017  libstdc++-v3/testsuite/23_containers/map/modifiers/erase/abi_tag.cc
! 43de7cb7b564c807b6e5811609164acb  libstdc++-v3/testsuite/23_containers/map/modifiers/erase/dr130-linkage-check.cc
! 7882bc302d230e6cfdcb451ba1896797  libstdc++-v3/testsuite/23_containers/map/modifiers/erase/end_neg.cc
! c0ec763ba5a93105ac4c4f55452bebed  libstdc++-v3/testsuite/23_containers/map/modifiers/extract.cc
! dde3e6419372e0b9e1ab3ae9482425e4  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/1.cc
! 16cce60570426b1e6db3427ca0decd0f  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/16813.cc
! 410c9cf1b3b453cbf5390c7df7c848fb  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/2.cc
! 5ca5c0126b98755e2e32a441778a99fd  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/3.cc
! 90557eb2bc6d0f0c1c82d048d3efe698  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/4.cc
! 07668e6a1eee40e497786c72d14389c4  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/5.cc
! 5be4db28776168365a3f01530ebc5db8  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/83226.cc
! 6c2c90c92edba30ad61881de7d942860  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/dr2354.cc
! d6d6d82e9873bee150a9ed98743149e0  libstdc++-v3/testsuite/23_containers/map/modifiers/insert_or_assign/1.cc
! d7cf4e5478be969ad93fe258fac5e8b1  libstdc++-v3/testsuite/23_containers/map/modifiers/merge.cc
! cf3c42ae6608e37f21add1601be39dee  libstdc++-v3/testsuite/23_containers/map/modifiers/swap/1.cc
! 51c9f56c78341522af74007a52ad3e3f  libstdc++-v3/testsuite/23_containers/map/modifiers/swap/2.cc
! 7568bc0017d29b408ef62ce7726450ae  libstdc++-v3/testsuite/23_containers/map/modifiers/swap/3.cc
! 84d978e0926d4cf5f722f51cdddecaaf  libstdc++-v3/testsuite/23_containers/map/modifiers/try_emplace/1.cc
! b4901f36efb299e6d059317b1ca48e51  libstdc++-v3/testsuite/23_containers/map/operations/1.cc
! 13ea611e5501e393bc645172acd522f1  libstdc++-v3/testsuite/23_containers/map/operations/2.cc
! 365c6fcfdc072c005521456bbce2f103  libstdc++-v3/testsuite/23_containers/map/operations/31440.cc
! c4cac461d970e1b6b43cd973f3ec7a43  libstdc++-v3/testsuite/23_containers/map/operations/count.cc
! 784130442a72d96354ff2d5e65a3b158  libstdc++-v3/testsuite/23_containers/map/operators/1.cc
! 711d9c81b31b079a3b37e5f87368d271  libstdc++-v3/testsuite/23_containers/map/operators/1_neg.cc
! 97585108e39739d80fda85f02bb09033  libstdc++-v3/testsuite/23_containers/map/operators/2.cc
! 3d2772a0f43a02db979207917d46a399  libstdc++-v3/testsuite/23_containers/map/pthread6.cc
! ae03603fc05b66f1d9c727a30e049508  libstdc++-v3/testsuite/23_containers/map/range_access.cc
! 26747676a0620aa1b062cdc904752d55  libstdc++-v3/testsuite/23_containers/map/requirements/citerators.cc
! 04039d8c500937fa84b920ac5cd03080  libstdc++-v3/testsuite/23_containers/map/requirements/exception/basic.cc
! 9bb1111e3d631950f286abeccc5b2009  libstdc++-v3/testsuite/23_containers/map/requirements/exception/generation_prohibited.cc
! b30c29d4523e5783a16532007318e358  libstdc++-v3/testsuite/23_containers/map/requirements/exception/propagation_consistent.cc
! 5e9e681db7525b9e9ab9adf3e769aa0d  libstdc++-v3/testsuite/23_containers/map/requirements/explicit_instantiation/1.cc
! 2d0083e9b79d5253baecc9b4d37a545a  libstdc++-v3/testsuite/23_containers/map/requirements/explicit_instantiation/1_c++0x.cc
! 284ba60ad76a6fa9746460d75bad3675  libstdc++-v3/testsuite/23_containers/map/requirements/explicit_instantiation/2.cc
! 23c3c57f7b2586d88d8e955bd14d98d3  libstdc++-v3/testsuite/23_containers/map/requirements/explicit_instantiation/3.cc
! 9069fe9d58824a6d9166aa379acb201b  libstdc++-v3/testsuite/23_containers/map/requirements/explicit_instantiation/4.cc
! 8f25dd85fd1f4aaa78472eb6a3ee808f  libstdc++-v3/testsuite/23_containers/map/requirements/explicit_instantiation/5.cc
! 02eea3e6dc3a29231175cb9cbaa96840  libstdc++-v3/testsuite/23_containers/map/requirements/explicit_instantiation/5_c++0x.cc
! 5707df0153753ccb6cfdf48e752370b2  libstdc++-v3/testsuite/23_containers/map/requirements/partial_specialization/1.cc
! 55fe9e38355da29f066e5aca2d87ebb7  libstdc++-v3/testsuite/23_containers/map/requirements/typedefs.cc
! aed0178906f4af2df1feea23334b97f8  libstdc++-v3/testsuite/23_containers/multimap/14340.cc
! c67eef6753f7bc319d33b0f02e36cf03  libstdc++-v3/testsuite/23_containers/multimap/23781_neg.cc
! b3624be631f457f3e546fc95605546b6  libstdc++-v3/testsuite/23_containers/multimap/58764.cc
! f7516b7c3b574d8c5f0a9e7e198913a5  libstdc++-v3/testsuite/23_containers/multimap/allocator/copy.cc
! b0912341acca437f4656f0b8b6ebe4eb  libstdc++-v3/testsuite/23_containers/multimap/allocator/copy_assign.cc
! 172415bc1f763c2a5556a41f0966afcd  libstdc++-v3/testsuite/23_containers/multimap/allocator/init-list.cc
! 1a9ef5747759cad0feaaf7d79bc8c035  libstdc++-v3/testsuite/23_containers/multimap/allocator/minimal.cc
! 6e86515bf1f982ac6331a40da6f32a33  libstdc++-v3/testsuite/23_containers/multimap/allocator/move.cc
! ab188bc8624b2e2b2864e4ce0b0fa152  libstdc++-v3/testsuite/23_containers/multimap/allocator/move_assign.cc
! 255198be83125667169e71c41e4e24c1  libstdc++-v3/testsuite/23_containers/multimap/allocator/noexcept.cc
! 4bc3de8b71cded4eeed1cad239dce50b  libstdc++-v3/testsuite/23_containers/multimap/allocator/swap.cc
! e70d9311a06b8b9b5ecc0a09dbe699af  libstdc++-v3/testsuite/23_containers/multimap/capacity/29134.cc
! 4da96ab8b31d5eb7cf89ddbfcdc8cb8d  libstdc++-v3/testsuite/23_containers/multimap/cons/moveable.cc
! 5d608148e833cad26d3f597d34ee08de  libstdc++-v3/testsuite/23_containers/multimap/cons/noexcept_default_construct.cc
! 800eb56a7b31019a05419904de6828a4  libstdc++-v3/testsuite/23_containers/multimap/cons/noexcept_move_construct.cc
! a1bc34c47e7407d62e4cdfd8160030e3  libstdc++-v3/testsuite/23_containers/multimap/debug/60499.cc
! 8755d804be6e218dfb4b7d921303415c  libstdc++-v3/testsuite/23_containers/multimap/debug/construct1_neg.cc
! 8e48505326e30b931c3c5db08d9d3a39  libstdc++-v3/testsuite/23_containers/multimap/debug/construct2_neg.cc
! b0ac5052f1dbdb7f5c1d478c0d419274  libstdc++-v3/testsuite/23_containers/multimap/debug/construct3_neg.cc
! e1c19d8014b7e07a5a336655280b85e0  libstdc++-v3/testsuite/23_containers/multimap/debug/construct4_neg.cc
! 651b1335ec336567c4b16db1b38d1978  libstdc++-v3/testsuite/23_containers/multimap/debug/construct5_neg.cc
! 2158705100cd3243319f408691764171  libstdc++-v3/testsuite/23_containers/multimap/debug/insert1_neg.cc
! a803eaf7cb6fd0c39213901b2ac64524  libstdc++-v3/testsuite/23_containers/multimap/debug/insert2_neg.cc
! dae4e15bfc19959a6bba3ed4e21f0302  libstdc++-v3/testsuite/23_containers/multimap/debug/insert3_neg.cc
! 73915efa7a424ce59bdd7d24f9139361  libstdc++-v3/testsuite/23_containers/multimap/debug/insert4_neg.cc
! 55e3483d1af69de9e99f3e3d64caeaaa  libstdc++-v3/testsuite/23_containers/multimap/debug/invalidation/1.cc
! 0e3351edd2e11c3f212cb184e958d266  libstdc++-v3/testsuite/23_containers/multimap/debug/invalidation/2.cc
! 72a8bffa308e265df711a0d0492dda96  libstdc++-v3/testsuite/23_containers/multimap/debug/iterator_self_move_assign_neg.cc
! 22f0826619b3838636dc6cd95c175dfc  libstdc++-v3/testsuite/23_containers/multimap/debug/move_assign_neg.cc
! 85e1f80218bc9812e101ca3287de0bc4  libstdc++-v3/testsuite/23_containers/multimap/debug/move_neg.cc
! 12c5b6155a3241fb2da67b4b0a1d4419  libstdc++-v3/testsuite/23_containers/multimap/debug/self_move_assign_neg.cc
! 0dd1e22015fab51dd3a1306df4a3f6ee  libstdc++-v3/testsuite/23_containers/multimap/init-list.cc
! f0c7a61327713c0faac722251ecdecf7  libstdc++-v3/testsuite/23_containers/multimap/modifiers/dr130.cc
! 17b060f2b76ea106758c7a844bc6d16c  libstdc++-v3/testsuite/23_containers/multimap/modifiers/emplace/1.cc
! 8f009933eb70a8dcd848a98ca05f458f  libstdc++-v3/testsuite/23_containers/multimap/modifiers/erase/47628.cc
! 51bd522626d5abebb88fc806ccf1e425  libstdc++-v3/testsuite/23_containers/multimap/modifiers/erase/51142.cc
! 41fcc1d40800ba5cf3e7f0a5308c099f  libstdc++-v3/testsuite/23_containers/multimap/modifiers/erase/abi_tag.cc
! d4d931f3d4d5863d35b4a094532fcf28  libstdc++-v3/testsuite/23_containers/multimap/modifiers/erase/dr130-linkage-check.cc
! 489e41536aa17b6a9ede4f2522e49b1f  libstdc++-v3/testsuite/23_containers/multimap/modifiers/extract.cc
! adc9e7d5774fee9801c4b539fdbd14bc  libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/1.cc
! 5010d58d2a26fd7a3f2f45948adee3e7  libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/2.cc
! 9afa4b5a796b4bf4b13cad08ce5c4ef4  libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/22102.cc
! 012a217f1c58e47207c7ad9c9fa99084  libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/3.cc
! ebedf1934ae724c839bc938f16253add  libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/4.cc
! b17e02944400b5d2ebc916c1f616fcad  libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/dr2354.cc
! 8f854b79c6dd407a07eb18155add225b  libstdc++-v3/testsuite/23_containers/multimap/modifiers/merge.cc
! 148675a742dcbe1163d9c8b2055e0174  libstdc++-v3/testsuite/23_containers/multimap/modifiers/swap/1.cc
! af2bca319436082f5f44ea4174b09724  libstdc++-v3/testsuite/23_containers/multimap/modifiers/swap/2.cc
! 0e9ea11afe1b6ea2a5989a96779bb7a4  libstdc++-v3/testsuite/23_containers/multimap/modifiers/swap/3.cc
! 7dd6f8fe0ef455cfde68b48b1c2c38d1  libstdc++-v3/testsuite/23_containers/multimap/operations/1.cc
! d505398ebc4b976648e2beefd74ba6a4  libstdc++-v3/testsuite/23_containers/multimap/operations/2.cc
! 41d38ec26ae88fc5396390b8ce4ad663  libstdc++-v3/testsuite/23_containers/multimap/operations/count.cc
! 1e3da397c2b61bc5f9978b575c702eda  libstdc++-v3/testsuite/23_containers/multimap/range_access.cc
! eba3e8b09c74ccf39f7c8c53428abb4c  libstdc++-v3/testsuite/23_containers/multimap/requirements/citerators.cc
! d750353e04275c7962b20f44ea7daf53  libstdc++-v3/testsuite/23_containers/multimap/requirements/exception/basic.cc
! 06d21c862afda9f14b94d127ca5ca32a  libstdc++-v3/testsuite/23_containers/multimap/requirements/exception/generation_prohibited.cc
! 94ac7e8c429e15357e641503585706de  libstdc++-v3/testsuite/23_containers/multimap/requirements/exception/propagation_consistent.cc
! b98b6195624de87d75ffd123bd5cbb01  libstdc++-v3/testsuite/23_containers/multimap/requirements/explicit_instantiation/1.cc
! efa15c601ffac85927ecd14150bc2098  libstdc++-v3/testsuite/23_containers/multimap/requirements/explicit_instantiation/1_c++0x.cc
! 1da43a5a27e439d376bac01fa9d55be8  libstdc++-v3/testsuite/23_containers/multimap/requirements/explicit_instantiation/2.cc
! a6add83d210315de94072ad234872953  libstdc++-v3/testsuite/23_containers/multimap/requirements/explicit_instantiation/3.cc
! 2a54abac1334572ae8a57c8331633917  libstdc++-v3/testsuite/23_containers/multimap/requirements/explicit_instantiation/4.cc
! 7477394fe83fb5bce46c4a8f1f7a9bd8  libstdc++-v3/testsuite/23_containers/multimap/requirements/explicit_instantiation/5.cc
! eab3a4c62dec0dea29a49e06a59161e2  libstdc++-v3/testsuite/23_containers/multimap/requirements/explicit_instantiation/5_c++0x.cc
! 5776bbcbd12fd7d16453367ac849f6c0  libstdc++-v3/testsuite/23_containers/multimap/requirements/partial_specialization/1.cc
! a971a1144e219ae0346dbc154c6a0234  libstdc++-v3/testsuite/23_containers/multimap/requirements/typedefs.cc
! 1ef0d53308957ff1b7c329d07d78b77f  libstdc++-v3/testsuite/23_containers/multiset/14340.cc
! d68dca8da9928f922afc91645da63582  libstdc++-v3/testsuite/23_containers/multiset/23781_neg.cc
! 8864a9ca942c1994a514f3cc63f4aad0  libstdc++-v3/testsuite/23_containers/multiset/58764.cc
! d4bdcacddf1c752b1f43ff9690cc2319  libstdc++-v3/testsuite/23_containers/multiset/allocator/copy.cc
! 9e0c890e402077287c769d88b9d0dc5a  libstdc++-v3/testsuite/23_containers/multiset/allocator/copy_assign.cc
! 8b90ef18802ba10461498aeedf6fc558  libstdc++-v3/testsuite/23_containers/multiset/allocator/init-list.cc
! ca3c981fd31f37471ba67c0fb588c866  libstdc++-v3/testsuite/23_containers/multiset/allocator/minimal.cc
! 561dc9a9d4d93c6dd4c9bff5424d1c06  libstdc++-v3/testsuite/23_containers/multiset/allocator/move.cc
! 7894b4d995aa47cacbdb7b1a231bc5ed  libstdc++-v3/testsuite/23_containers/multiset/allocator/move_assign.cc
! 617319d5d7da63f866d7248c3765b9f6  libstdc++-v3/testsuite/23_containers/multiset/allocator/noexcept.cc
! 7f373a24ea128c7ebb463cd8c1a58069  libstdc++-v3/testsuite/23_containers/multiset/allocator/swap.cc
! 2a11a13fdea281ed6938a2712f386f7d  libstdc++-v3/testsuite/23_containers/multiset/capacity/29134.cc
! c144528f4e45f813b629e5635facabca  libstdc++-v3/testsuite/23_containers/multiset/cons/moveable.cc
! 64c0f33edfca0ef7265cd6e4670737ea  libstdc++-v3/testsuite/23_containers/multiset/cons/noexcept_default_construct.cc
! e73b05435a6651470e205fd35fb0097f  libstdc++-v3/testsuite/23_containers/multiset/cons/noexcept_move_construct.cc
! 808f29249f13961323836d7c2d581579  libstdc++-v3/testsuite/23_containers/multiset/debug/60499.cc
! 43c705ae692fc9786e19b3ea6f8c4d33  libstdc++-v3/testsuite/23_containers/multiset/debug/construct1_neg.cc
! b013caaa92d139371991dedbb1dd890e  libstdc++-v3/testsuite/23_containers/multiset/debug/construct2_neg.cc
! 51f8b6947fcda4522a9074f59e749ce4  libstdc++-v3/testsuite/23_containers/multiset/debug/construct3_neg.cc
! 60860febe42b7138f93558bdd777f8ed  libstdc++-v3/testsuite/23_containers/multiset/debug/construct4_neg.cc
! 9222400bec421f1c90b52e5593ad859e  libstdc++-v3/testsuite/23_containers/multiset/debug/construct5_neg.cc
! d258f73cd74f000c55a61c00f3c8449d  libstdc++-v3/testsuite/23_containers/multiset/debug/insert1_neg.cc
! fcbe5179d1f4920e341bdfb02aef680f  libstdc++-v3/testsuite/23_containers/multiset/debug/insert2_neg.cc
! f2602f06b5ca94b445c84a1b87aef503  libstdc++-v3/testsuite/23_containers/multiset/debug/insert3_neg.cc
! 5c1d2fa817374c31834bdd56cc185af2  libstdc++-v3/testsuite/23_containers/multiset/debug/insert4_neg.cc
! 9b152c755124f1a1e9a08a2c7c5bd706  libstdc++-v3/testsuite/23_containers/multiset/debug/invalidation/1.cc
! eb090445ecffcda5bc5ea39d0c804f13  libstdc++-v3/testsuite/23_containers/multiset/debug/invalidation/2.cc
! 5c3f1dae460728c47ad9cce7216ee45b  libstdc++-v3/testsuite/23_containers/multiset/debug/iterator_self_move_assign_neg.cc
! 1b2164a295b53dfbcf1bb8e13677964d  libstdc++-v3/testsuite/23_containers/multiset/debug/move_assign_neg.cc
! a9c8fd1cefe9cd3e5601820ad0d61710  libstdc++-v3/testsuite/23_containers/multiset/debug/move_neg.cc
! cec69a980b4b7fad6144c7fb3ce3a526  libstdc++-v3/testsuite/23_containers/multiset/debug/self_move_assign_neg.cc
! b983789bee703e3332053555bcef6498  libstdc++-v3/testsuite/23_containers/multiset/init-list.cc
! 8ad9b24560d88eb898a0f9492eab2681  libstdc++-v3/testsuite/23_containers/multiset/modifiers/dr130.cc
! abd651bc35e56f015bbd93a850183458  libstdc++-v3/testsuite/23_containers/multiset/modifiers/emplace/1.cc
! 6c4cbe1f55947d3c2971d672c544d59a  libstdc++-v3/testsuite/23_containers/multiset/modifiers/erase/51142.cc
! 6390b4dd68a33caef688dff3ac498293  libstdc++-v3/testsuite/23_containers/multiset/modifiers/erase/abi_tag.cc
! 2cf697c1ce535d0bcf279e8f40e088cf  libstdc++-v3/testsuite/23_containers/multiset/modifiers/erase/dr130-linkage-check.cc
! e0330bb5198894e457450b803029e28d  libstdc++-v3/testsuite/23_containers/multiset/modifiers/extract.cc
! ec97ba72138ce2bd94ca337d4d660a7b  libstdc++-v3/testsuite/23_containers/multiset/modifiers/insert/1.cc
! 2a02d3f55031418f3b6798e2b9e786f5  libstdc++-v3/testsuite/23_containers/multiset/modifiers/insert/2.cc
! 40ba2f6776b73af7d298e6bc5c11cf19  libstdc++-v3/testsuite/23_containers/multiset/modifiers/insert/22102.cc
! 79d8e35ed008d11213d7e9c5e82654ae  libstdc++-v3/testsuite/23_containers/multiset/modifiers/insert/3.cc
! 558d596fe6f2235526df4586d069b836  libstdc++-v3/testsuite/23_containers/multiset/modifiers/insert/4.cc
! 733dc11f16e1d5d4c39f736a2a06d930  libstdc++-v3/testsuite/23_containers/multiset/modifiers/merge.cc
! 1b08159b57c9cabb76169924762fe0ed  libstdc++-v3/testsuite/23_containers/multiset/modifiers/swap/1.cc
! 73d30f5eda5d2836288e0c000355a521  libstdc++-v3/testsuite/23_containers/multiset/modifiers/swap/2.cc
! c75e6315437d4fddf38394e889b90e86  libstdc++-v3/testsuite/23_containers/multiset/modifiers/swap/3.cc
! 76a028f07778682b1732415af39638dc  libstdc++-v3/testsuite/23_containers/multiset/operations/1.cc
! 49c9078b832aa88dff05bd856b745925  libstdc++-v3/testsuite/23_containers/multiset/operations/2.cc
! 318a8ddf3c9f1a867138933e30748c57  libstdc++-v3/testsuite/23_containers/multiset/operations/count.cc
! bb85533f263f8f4385211ed55f69a1e6  libstdc++-v3/testsuite/23_containers/multiset/range_access.cc
! c82b7e192838c63301a8cf94f5a2e183  libstdc++-v3/testsuite/23_containers/multiset/requirements/citerators.cc
! 183674ed4eb49fe4b7ab048c46356e4e  libstdc++-v3/testsuite/23_containers/multiset/requirements/exception/basic.cc
! c2056e4ff6070206b76c8f9df2643430  libstdc++-v3/testsuite/23_containers/multiset/requirements/exception/generation_prohibited.cc
! bea64e56e4fca053ad91d3173453bce3  libstdc++-v3/testsuite/23_containers/multiset/requirements/exception/propagation_consistent.cc
! 539953172c060a8bcd95b32b8bdf3913  libstdc++-v3/testsuite/23_containers/multiset/requirements/explicit_instantiation/1.cc
! 7c246d3e544e937f100df535d2500c2a  libstdc++-v3/testsuite/23_containers/multiset/requirements/explicit_instantiation/1_c++0x.cc
! 82f98fb6f91d75a4ba06f0ed41ca5359  libstdc++-v3/testsuite/23_containers/multiset/requirements/explicit_instantiation/2.cc
! 6c0d91a571af02ef064282d8ce01870a  libstdc++-v3/testsuite/23_containers/multiset/requirements/explicit_instantiation/3.cc
! efe217c0881edd79b10d3f0d76602e33  libstdc++-v3/testsuite/23_containers/multiset/requirements/explicit_instantiation/4.cc
! db061e2acf2b09adfd2ec13afa6f411d  libstdc++-v3/testsuite/23_containers/multiset/requirements/explicit_instantiation/5.cc
! b131fde5ef6d27a7a0ca261434ce8e8c  libstdc++-v3/testsuite/23_containers/multiset/requirements/explicit_instantiation/5_c++0x.cc
! 2cfbdbd96895b8bc27e6933420868841  libstdc++-v3/testsuite/23_containers/multiset/requirements/partial_specialization/1.cc
! 3fd08b463f0e3d65a9a6cda18dfa3f5e  libstdc++-v3/testsuite/23_containers/multiset/requirements/typedefs.cc
! 11186c348367d7b752605e01ab6b6c0a  libstdc++-v3/testsuite/23_containers/priority_queue/67085.cc
! 28ba5350ff8c6f89791953238d1226dd  libstdc++-v3/testsuite/23_containers/priority_queue/77528.cc
! d22eef1ab6ba7e0987f0a68c3e2fa15b  libstdc++-v3/testsuite/23_containers/priority_queue/allocator.cc
! d660ec832e041fa63379a6e9f1f1c8a4  libstdc++-v3/testsuite/23_containers/priority_queue/members/7161.cc
! 3bb73480e577d5042988350047e44338  libstdc++-v3/testsuite/23_containers/priority_queue/moveable.cc
! 43f76a7918b1fcaed985eaf0986d7874  libstdc++-v3/testsuite/23_containers/priority_queue/requirements/constructible.cc
! c41d92e34e9a29a6faae457ccba71ce2  libstdc++-v3/testsuite/23_containers/priority_queue/requirements/explicit_instantiation/1.cc
! 9a96b14efc8e407a18073650a448ae39  libstdc++-v3/testsuite/23_containers/priority_queue/requirements/explicit_instantiation/1_c++98.cc
! c791e7dc0b2f0a64a39fe7d2bcd15cb3  libstdc++-v3/testsuite/23_containers/priority_queue/requirements/typedefs.cc
! 4fbf48d9a41ced02baface55b2b20dc3  libstdc++-v3/testsuite/23_containers/priority_queue/requirements/uses_allocator.cc
! fe227d641d48336bd23abfc8c23860a6  libstdc++-v3/testsuite/23_containers/queue/77528.cc
! a09f270bac0c691e31e3066c42e55404  libstdc++-v3/testsuite/23_containers/queue/members/7157.cc
! 77676413a9664a332d6fe77e1f0adbb2  libstdc++-v3/testsuite/23_containers/queue/members/emplace_cxx17_return.cc
! f1057b2068e2ea3a690c3ce767f24a7b  libstdc++-v3/testsuite/23_containers/queue/moveable.cc
! d15243efbb9b9c68b661db576158dadb  libstdc++-v3/testsuite/23_containers/queue/requirements/constructible.cc
! ec2ec763c3bfbea443f9edf9d8db7288  libstdc++-v3/testsuite/23_containers/queue/requirements/explicit_instantiation/1.cc
! 62c5b629454ce45677b5705435502e7c  libstdc++-v3/testsuite/23_containers/queue/requirements/explicit_instantiation/1_c++98.cc
! deb738009cf6e486984f9ac8093cc390  libstdc++-v3/testsuite/23_containers/queue/requirements/typedefs.cc
! 402dcd7d8f4d084639af4f335409ae58  libstdc++-v3/testsuite/23_containers/queue/requirements/uses_allocator.cc
! 9fe875aa3f9ac519fc80c387b5dfd850  libstdc++-v3/testsuite/23_containers/set/14340.cc
! 9e36d32cb5aaf0719e94438fe38f89b0  libstdc++-v3/testsuite/23_containers/set/18604.cc
! a4835a02b77cd9bbc8dbd0b80b48e5cd  libstdc++-v3/testsuite/23_containers/set/23781_neg.cc
! c549b246df78f7c862d90f4f5fc57d62  libstdc++-v3/testsuite/23_containers/set/58764.cc
! ac448df59e3f204696bc5e879025c55b  libstdc++-v3/testsuite/23_containers/set/allocator/71964.cc
! f018940b37f456dec10b24137b744ac1  libstdc++-v3/testsuite/23_containers/set/allocator/copy.cc
! faf93efa3ec20e6bab6a6f7f791e9486  libstdc++-v3/testsuite/23_containers/set/allocator/copy_assign.cc
! bf6d0f414a071494104229dad160913e  libstdc++-v3/testsuite/23_containers/set/allocator/init-list.cc
! e06e3834b7123e77d9b24f058aa659b4  libstdc++-v3/testsuite/23_containers/set/allocator/minimal.cc
! a3798f5040957e7480df615b3c6a1638  libstdc++-v3/testsuite/23_containers/set/allocator/move.cc
! 03c4e5983f70e0c0ef4d1256cee3ca88  libstdc++-v3/testsuite/23_containers/set/allocator/move_assign.cc
! f3587bf39060e8e579a68a3e169ccb68  libstdc++-v3/testsuite/23_containers/set/allocator/noexcept.cc
! eb5833174e03b967208b2cfaffcc841d  libstdc++-v3/testsuite/23_containers/set/allocator/swap.cc
! 69bdaacf5cbe0199f662c23dd9abaff1  libstdc++-v3/testsuite/23_containers/set/capacity/29134.cc
! 9aec52d10f8c13acb76c37632756b025  libstdc++-v3/testsuite/23_containers/set/check_construct_destroy.cc
! cfd9f247aa8462417f895fd5050b462c  libstdc++-v3/testsuite/23_containers/set/cons/61023.cc
! 4ab35c39beb41d42bb35a16a4b31de10  libstdc++-v3/testsuite/23_containers/set/cons/moveable.cc
! cd83fdbca02811eb4c19df87f7ba338c  libstdc++-v3/testsuite/23_containers/set/cons/noexcept_default_construct.cc
! e2e3fb9e764ca6b114b501d9a8a9c4e8  libstdc++-v3/testsuite/23_containers/set/cons/noexcept_move_construct.cc
! bdf6e90772534536ee3d22b562e4e491  libstdc++-v3/testsuite/23_containers/set/debug/60499.cc
! 3dbdb383d961b4e9a7b0602ec4e2510c  libstdc++-v3/testsuite/23_containers/set/debug/construct1_neg.cc
! b2514ce120b0cf3289aa8112b7321066  libstdc++-v3/testsuite/23_containers/set/debug/construct2_neg.cc
! 70df91d6cc8f730996e459c7a21567fc  libstdc++-v3/testsuite/23_containers/set/debug/construct3_neg.cc
! 435d300a3928f451bc27b77fd6c8da6c  libstdc++-v3/testsuite/23_containers/set/debug/construct4_neg.cc
! 8008818c07430c6d464cf8fbb579b85e  libstdc++-v3/testsuite/23_containers/set/debug/construct5_neg.cc
! cb3fcc534b302df0612a97e624990435  libstdc++-v3/testsuite/23_containers/set/debug/insert1_neg.cc
! ae7835e202bd740ef9de0fe91178eda9  libstdc++-v3/testsuite/23_containers/set/debug/insert2_neg.cc
! 1b12528fa3700393f01706aeb011b093  libstdc++-v3/testsuite/23_containers/set/debug/insert3_neg.cc
! 71e71360a6afbc72d158bd3dcb933ba1  libstdc++-v3/testsuite/23_containers/set/debug/insert4_neg.cc
! 0db193a21b2aa8ef5b9a873c69524dcf  libstdc++-v3/testsuite/23_containers/set/debug/invalidation/1.cc
! f5bd0c0db9133e726b63ff2be2decb6b  libstdc++-v3/testsuite/23_containers/set/debug/invalidation/2.cc
! 5705d45d674c00f0303bdc9cac21d05c  libstdc++-v3/testsuite/23_containers/set/debug/iterator_self_move_assign_neg.cc
! d92b568f9cfac5dc046dbd242728273b  libstdc++-v3/testsuite/23_containers/set/debug/move_assign_neg.cc
! 2f3714a7f34c1eaf00f4e82d04c5f876  libstdc++-v3/testsuite/23_containers/set/debug/move_neg.cc
! 377745d1f5bd380bbd4f215efd47837b  libstdc++-v3/testsuite/23_containers/set/debug/self_move_assign_neg.cc
! 628a863171d92593c0c4fb3b10017ea8  libstdc++-v3/testsuite/23_containers/set/init-list.cc
! 59bfda04f0dda9b2c5d57f295cfee50e  libstdc++-v3/testsuite/23_containers/set/modifiers/16728.cc
! 8fa65ae1e25f93506de8a22c9798594f  libstdc++-v3/testsuite/23_containers/set/modifiers/17948.cc
! 1a66e2367c4c3ab6f78b177821b14a49  libstdc++-v3/testsuite/23_containers/set/modifiers/dr130.cc
! b6599439308746a43b51c7ce9a67ee4f  libstdc++-v3/testsuite/23_containers/set/modifiers/emplace/1.cc
! c35dd3e086a9793af35aea9737e88faa  libstdc++-v3/testsuite/23_containers/set/modifiers/erase/51142.cc
! fffdaa252a6b306417e9785f7a811f0d  libstdc++-v3/testsuite/23_containers/set/modifiers/erase/abi_tag.cc
! cfba12add359c87a8ee582f854c9d84b  libstdc++-v3/testsuite/23_containers/set/modifiers/erase/dr130-linkage-check.cc
! 35d31fa4faa60b5524d033bb86baf945  libstdc++-v3/testsuite/23_containers/set/modifiers/extract.cc
! b6f4581868c73819b031dc622deb92c0  libstdc++-v3/testsuite/23_containers/set/modifiers/insert/1.cc
! 25aff770d38dbc27e598fcb7b69c4663  libstdc++-v3/testsuite/23_containers/set/modifiers/insert/2.cc
! 3d85637c097c32d88eddc787677e7415  libstdc++-v3/testsuite/23_containers/set/modifiers/insert/3.cc
! 8c6c597ed77aaa2774a7cbd66b7b5e34  libstdc++-v3/testsuite/23_containers/set/modifiers/merge.cc
! 3647a470fe579bfc39ae88cfce2e86a3  libstdc++-v3/testsuite/23_containers/set/modifiers/swap/1.cc
! d1e292bb1b4183b4abb31cf454a8ba6e  libstdc++-v3/testsuite/23_containers/set/modifiers/swap/2.cc
! 24450d8bfd4d0845c788c465b76fa2ed  libstdc++-v3/testsuite/23_containers/set/modifiers/swap/3.cc
! 12532106a39856622db6a0563c2c51e2  libstdc++-v3/testsuite/23_containers/set/move_comparison.cc
! 4752e37b632855412d6ba95c41812a67  libstdc++-v3/testsuite/23_containers/set/operations/1.cc
! 1e2142dba045a8d3947bb065c8e10e1e  libstdc++-v3/testsuite/23_containers/set/operations/2.cc
! 0f6943fa714a61c37c59b6551c779554  libstdc++-v3/testsuite/23_containers/set/operations/count.cc
! 4ff28e2554c186086ec66ad1cf008a17  libstdc++-v3/testsuite/23_containers/set/operators/1_neg.cc
! 4d88738b2295608540578dbacc11ba75  libstdc++-v3/testsuite/23_containers/set/range_access.cc
! 255b5d9027f9b88ff78c8a5c0e2c00a1  libstdc++-v3/testsuite/23_containers/set/requirements/citerators.cc
! 781e85b04eefd4070951c4683b5a3cea  libstdc++-v3/testsuite/23_containers/set/requirements/exception/basic.cc
! a92593397445f029e7ff70e37123dcfe  libstdc++-v3/testsuite/23_containers/set/requirements/exception/generation_prohibited.cc
! 749a8dde31433fec66215f8ccdf24627  libstdc++-v3/testsuite/23_containers/set/requirements/exception/propagation_consistent.cc
! eb0f07cc2785faf929fdbc5a2338b087  libstdc++-v3/testsuite/23_containers/set/requirements/explicit_instantiation/1.cc
! 3053671d841e17c6aa281e8a43b45811  libstdc++-v3/testsuite/23_containers/set/requirements/explicit_instantiation/1_c++0x.cc
! 5d485e0eff6fc1cbbe21543748868fd2  libstdc++-v3/testsuite/23_containers/set/requirements/explicit_instantiation/2.cc
! bead0b7b2f0cdcb200423ef96f8672e8  libstdc++-v3/testsuite/23_containers/set/requirements/explicit_instantiation/3.cc
! 87e517c28d0ee8eb1ccae556bf6a9f52  libstdc++-v3/testsuite/23_containers/set/requirements/explicit_instantiation/4.cc
! dc7d23ab78e1a97f4aaf32c0181a148f  libstdc++-v3/testsuite/23_containers/set/requirements/explicit_instantiation/5.cc
! 51594b0f799e94454f0839a81c4f1ed2  libstdc++-v3/testsuite/23_containers/set/requirements/explicit_instantiation/5_c++0x.cc
! 053c41513fe77584d0a08668b3449db1  libstdc++-v3/testsuite/23_containers/set/requirements/partial_specialization/1.cc
! cf8edea24c7aee4368f3cfbd5383ceae  libstdc++-v3/testsuite/23_containers/set/requirements/typedefs.cc
! ccd3910c06b1e0af6e9d14c6d05fc00a  libstdc++-v3/testsuite/23_containers/stack/77528.cc
! 6ce63de1fa368259677a1b85c113f0f2  libstdc++-v3/testsuite/23_containers/stack/members/7158.cc
! 5b51f07c8fe55e9adb04a3c626d64785  libstdc++-v3/testsuite/23_containers/stack/members/emplace_cxx17_return.cc
! 08c4f4f5d5c061224d80426675e39182  libstdc++-v3/testsuite/23_containers/stack/requirements/constructible.cc
! a8205c65f663a76caecb5fe6295bb0e7  libstdc++-v3/testsuite/23_containers/stack/requirements/explicit_instantiation/1.cc
! 4b07e3121edddc7f4d3a0ddfd8610db7  libstdc++-v3/testsuite/23_containers/stack/requirements/explicit_instantiation/1_c++98.cc
! ca1dc7900bbeb7614c85f2b137b4bd67  libstdc++-v3/testsuite/23_containers/stack/requirements/typedefs.cc
! 87acad3c8d9a59845bc8139f09e1a62a  libstdc++-v3/testsuite/23_containers/stack/requirements/uses_allocator.cc
! b43c8d81c4b96ea74ea41a3d810cb8d2  libstdc++-v3/testsuite/23_containers/unordered_map/55043.cc
! 3274f018d772bb7546e7e4e40428edac  libstdc++-v3/testsuite/23_containers/unordered_map/59548.cc
! 9ffdc6f2fcc01ddfd89629011640f12d  libstdc++-v3/testsuite/23_containers/unordered_map/allocator/copy.cc
! ca8fb1a4c676312b7bcfbb8759b51d96  libstdc++-v3/testsuite/23_containers/unordered_map/allocator/copy_assign.cc
! 9dfb19bd26eb2ae903dd55f1489d85be  libstdc++-v3/testsuite/23_containers/unordered_map/allocator/minimal.cc
! f282f1377969f9130de41f4b49b2e8c4  libstdc++-v3/testsuite/23_containers/unordered_map/allocator/move.cc
! 65db461f3a54009a8ef94456537c9efb  libstdc++-v3/testsuite/23_containers/unordered_map/allocator/move_assign.cc
! 18c419c5e2fc4cba21f9a202861330ee  libstdc++-v3/testsuite/23_containers/unordered_map/allocator/noexcept.cc
! a11ec0a2956a432436fc26ca7ab345d6  libstdc++-v3/testsuite/23_containers/unordered_map/allocator/swap.cc
! 7cfe1ec50c9528395c908e7f8567dade  libstdc++-v3/testsuite/23_containers/unordered_map/cons/56112.cc
! 8c3741b52693e421292ab25b37a1b850  libstdc++-v3/testsuite/23_containers/unordered_map/cons/66055.cc
! 1d872b0e1c61446b8ad22903c0cd61bc  libstdc++-v3/testsuite/23_containers/unordered_map/cons/81891.cc
! 392f1203400337a5745a87a1f447117f  libstdc++-v3/testsuite/23_containers/unordered_map/cons/moveable.cc
! ace9bc0a29f71d8022c923f6274153d9  libstdc++-v3/testsuite/23_containers/unordered_map/debug/60499.cc
! 8f7ea1b49697ada087fdc8549dd09039  libstdc++-v3/testsuite/23_containers/unordered_map/debug/begin1_neg.cc
! c04f1b1636fc36b8024e8b1f57722bf1  libstdc++-v3/testsuite/23_containers/unordered_map/debug/begin2_neg.cc
! d26d6cd379fad26f332c16545f3ac1f1  libstdc++-v3/testsuite/23_containers/unordered_map/debug/bucket_size_neg.cc
! 09fc123e6ed9058dbf726c6d39cf57f6  libstdc++-v3/testsuite/23_containers/unordered_map/debug/cbegin_neg.cc
! df6c693bc0ffc6eca82ad68a9c085b89  libstdc++-v3/testsuite/23_containers/unordered_map/debug/cend_neg.cc
! 0454abe2987b29c702303540a6c338e3  libstdc++-v3/testsuite/23_containers/unordered_map/debug/construct1_neg.cc
! 993372ee9fad1bca7189c9cc00a80f50  libstdc++-v3/testsuite/23_containers/unordered_map/debug/construct2_neg.cc
! f1cbe3851026e30ab8f717481843fb4d  libstdc++-v3/testsuite/23_containers/unordered_map/debug/construct3_neg.cc
! ea48f651403518651667fabd0def832c  libstdc++-v3/testsuite/23_containers/unordered_map/debug/construct4_neg.cc
! 0216fda5bdebffbd7afcf9fa7664a652  libstdc++-v3/testsuite/23_containers/unordered_map/debug/construct5_neg.cc
! d52bd93aa3fa9aba68b8c463b4b0bb57  libstdc++-v3/testsuite/23_containers/unordered_map/debug/end1_neg.cc
! e75620f738d317d19cae18f1f2a937ea  libstdc++-v3/testsuite/23_containers/unordered_map/debug/end2_neg.cc
! 92df1d1a7d0947dcffdce464c4885457  libstdc++-v3/testsuite/23_containers/unordered_map/debug/insert1_neg.cc
! bdcd30327974d8d4261407f1a402fa86  libstdc++-v3/testsuite/23_containers/unordered_map/debug/insert2_neg.cc
! e9d19706414ffab6c81acb6c764ec91e  libstdc++-v3/testsuite/23_containers/unordered_map/debug/insert3_neg.cc
! e5e74dc1f3170ef6057baeca41d1f212  libstdc++-v3/testsuite/23_containers/unordered_map/debug/insert4_neg.cc
! 847b01df6acc026d611609eb75a9e9fc  libstdc++-v3/testsuite/23_containers/unordered_map/debug/invalid_local_iterator_compare_neg.cc
! 0a6aa05c88c4984b68d86f0441c52025  libstdc++-v3/testsuite/23_containers/unordered_map/debug/invalid_local_iterator_range_neg.cc
! d5b97fe663ff4e2bfbe9003bd8adaae1  libstdc++-v3/testsuite/23_containers/unordered_map/debug/iterator_self_move_assign_neg.cc
! 67cf6eef63afcb80a8e718f5dfd236ba  libstdc++-v3/testsuite/23_containers/unordered_map/debug/max_load_factor_neg.cc
! 1be25598f51d2358c50d53b37d3995bd  libstdc++-v3/testsuite/23_containers/unordered_map/debug/move_assign_neg.cc
! 7171a8f8c1c53955a3c224b967ed96ae  libstdc++-v3/testsuite/23_containers/unordered_map/debug/move_neg.cc
! 58daeb61956d530e8d87dcb16d1b7fea  libstdc++-v3/testsuite/23_containers/unordered_map/debug/self_move_assign_neg.cc
! 5f8ace56ff3b85cbe89afd853f69c7e9  libstdc++-v3/testsuite/23_containers/unordered_map/debug/use_erased_local_iterator_neg.cc
! 48a606c0868d71941fd5f0dc38473613  libstdc++-v3/testsuite/23_containers/unordered_map/debug/use_invalid_iterator_neg.cc
! 922bd94bcd9bca0f6a127cae8bc00925  libstdc++-v3/testsuite/23_containers/unordered_map/debug/use_invalid_local_iterator_neg.cc
! beabf93f3bbba84da201e98d8aa2b672  libstdc++-v3/testsuite/23_containers/unordered_map/dr761.cc
! cf4ffc1f577ddbe88fd5b11b71ff0fd8  libstdc++-v3/testsuite/23_containers/unordered_map/erase/1.cc
! 66bbdff26209a34636bf75deaba71c30  libstdc++-v3/testsuite/23_containers/unordered_map/erase/24061-map.cc
! 9d387ed9521f23c8bb9e385aea34cbaa  libstdc++-v3/testsuite/23_containers/unordered_map/erase/51142.cc
! 0597a5d10f7566698b3faa6099f2d3c7  libstdc++-v3/testsuite/23_containers/unordered_map/erase/54276.cc
! ca45da83dcfd5994a52d6f636a7f8346  libstdc++-v3/testsuite/23_containers/unordered_map/final_hash.cc
! d71f4aa03ee1bf27caf2c4c607d49cb7  libstdc++-v3/testsuite/23_containers/unordered_map/hash_policy/dr1189.cc
! c688ed13fac7152f4460d56cd16f8539  libstdc++-v3/testsuite/23_containers/unordered_map/init-list.cc
! 0d91cb72911b76de5a8195abb009634d  libstdc++-v3/testsuite/23_containers/unordered_map/insert/24061-map.cc
! 46a60ab4fafaac21caab44f40ab76db9  libstdc++-v3/testsuite/23_containers/unordered_map/insert/57619.cc
! c4e784f731cfa1c98f6293b0f6d50295  libstdc++-v3/testsuite/23_containers/unordered_map/insert/array_syntax.cc
! 05ee19fa057aca02a74535f0a2151458  libstdc++-v3/testsuite/23_containers/unordered_map/insert/array_syntax_move.cc
! c85ce0d5c5bcb5e7ee3ab775f5ec338e  libstdc++-v3/testsuite/23_containers/unordered_map/insert/dr2354.cc
! c53226754368e3ccea9ed3032ca00626  libstdc++-v3/testsuite/23_containers/unordered_map/insert/map_range.cc
! d01f7b62e141c25c6e0c45fa2c9fb6b7  libstdc++-v3/testsuite/23_containers/unordered_map/insert/map_single.cc
! e55764f0d9e6fd8c3324fd5229552392  libstdc++-v3/testsuite/23_containers/unordered_map/insert/map_single_move-1.cc
! 4e989101ea7c114e637862fb8789ea78  libstdc++-v3/testsuite/23_containers/unordered_map/insert/map_single_move-2.cc
! b1fa65fa677a05fdb88f73f986a59a3f  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/61667.cc
! ff5a1259cd9c9f1577882ed1c825b3a5  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/emplace.cc
! 7cd8667cf8bfe9c5035472829bd910d7  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/extract.cc
! 1c48a58b349317f1e2153ca2ecbb5a1f  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/insert_or_assign.cc
! 2ef50a93f6199ce38f81b98ca1de5f63  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/merge.cc
! f06813e91d1e0de71be4891d23a85c25  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/reserve.cc
! 5efc7dffdfe784aee556a4da5f8b4941  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/try_emplace.cc
! f77dfc94f59210bdf8fdf3949aeb9798  libstdc++-v3/testsuite/23_containers/unordered_map/observers.cc
! d41638169762d91dfb0c558e8ae0ce0a  libstdc++-v3/testsuite/23_containers/unordered_map/operations/count.cc
! 39cc319c83200ca4f3ea8899836fcfba  libstdc++-v3/testsuite/23_containers/unordered_map/operators/1.cc
! 6bfd873f1e91059a94d3bb0295985ab0  libstdc++-v3/testsuite/23_containers/unordered_map/operators/2.cc
  45f46b4cea5268d1bf8f903d79e3c350  libstdc++-v3/testsuite/23_containers/unordered_map/profile/hash_map.cc
  6bcaac31a8700749f12b90fa8913629b  libstdc++-v3/testsuite/23_containers/unordered_map/profile/unordered.cc
! e7bd34f9de9f732fc287553c03bbe8e8  libstdc++-v3/testsuite/23_containers/unordered_map/range_access.cc
! 2e0f8298c35f29b99e87e5a230cb6997  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/52942.cc
! 8cc4c83bf40e3540cd393772ecca5a45  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/53067.cc
! 4f6bd654865e3b8852053c531a514619  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/53339.cc
! 975b9e9e1cb42a7e89eabd4c3a025ba6  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/citerators.cc
! 0ea2bcaf643774d0f1113d643fec5bce  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/cliterators.cc
! 87650cb2f73a22e24bc7f56febbd68b1  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/debug_container.cc
! e6db6b0e5ba38755d99274951cc63b83  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/debug_mode.cc
! 96b7d78858a47f7b0aaa366d1531f0ac  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/exception/basic.cc
! 280680c9fc030e50708c1e73073eb3be  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/exception/generation_prohibited.cc
! d8a9886e4f702689cf668c990af7c93f  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/exception/propagation_consistent.cc
! 9ddbbb36eb22f7f7802a72198a464f8b  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/explicit_instantiation/1.cc
! f9ed2c27388171ce0d4e1f821306afc9  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/explicit_instantiation/2.cc
! cb37cfa52a88fac83ae2a80144348bb5  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/explicit_instantiation/3.cc
! 0f075aa39dc7317ae02ff073dd84151b  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/explicit_instantiation/4.cc
! a1b4752f576ba0f1ad637efb74d4d36e  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/explicit_instantiation/5.cc
! d697ff82e56731a37ff1aeb2e703d3c4  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/typedefs.cc
! 1663e9e962d1844970d6066939c59a61  libstdc++-v3/testsuite/23_containers/unordered_multimap/55043.cc
! b5bcea3959bda82f34be55961875b568  libstdc++-v3/testsuite/23_containers/unordered_multimap/allocator/copy.cc
! a6947e89f376e2a9217ec7e3a5070a37  libstdc++-v3/testsuite/23_containers/unordered_multimap/allocator/copy_assign.cc
! 08ac11c0afb707099fab260c5ce09c99  libstdc++-v3/testsuite/23_containers/unordered_multimap/allocator/minimal.cc
! cc4afc00b8fae248392c589e48505565  libstdc++-v3/testsuite/23_containers/unordered_multimap/allocator/move.cc
! 10cbd34c5ee3e27e83b0503ab54dabab  libstdc++-v3/testsuite/23_containers/unordered_multimap/allocator/move_assign.cc
! b64f64ac965d48849f634dc61b67a66e  libstdc++-v3/testsuite/23_containers/unordered_multimap/allocator/noexcept.cc
! 3ee570de59dc5c3712a8ecc2768180bb  libstdc++-v3/testsuite/23_containers/unordered_multimap/allocator/swap.cc
! 6843a3dd734b275acd7c44306c383c1f  libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/66055.cc
! bcac4a84b8f28ddb3c5305f93149e83d  libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/moveable.cc
! 202a5da91860591244b57b7a20f2b64b  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/60499.cc
! 6134517f5f3e7b84243e189d870c96d7  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/begin1_neg.cc
! c04f1b1636fc36b8024e8b1f57722bf1  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/begin2_neg.cc
! d26d6cd379fad26f332c16545f3ac1f1  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/bucket_size_neg.cc
! 09fc123e6ed9058dbf726c6d39cf57f6  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/cbegin_neg.cc
! df6c693bc0ffc6eca82ad68a9c085b89  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/cend_neg.cc
! 22effa5b178688eee0f75b0b854a6338  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/construct1_neg.cc
! 60787f2b76cfb5fd4af36f72f46da94b  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/construct2_neg.cc
! d1386bcb0702159b79b0660f4045e81a  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/construct3_neg.cc
! b618379b06e761e3fd6d82ce4a7daee4  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/construct4_neg.cc
! 549905264faaced97e906ba3b4054b3f  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/construct5_neg.cc
! d52bd93aa3fa9aba68b8c463b4b0bb57  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/end1_neg.cc
! e75620f738d317d19cae18f1f2a937ea  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/end2_neg.cc
! fbf6ba8160e90f0649c836677d334bf3  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/insert1_neg.cc
! c1b973cbee24e0bd0a59fb5dd2d960ef  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/insert2_neg.cc
! 89db1c0d2ebd47e144e21b9356c4713f  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/insert3_neg.cc
! d14f54401c9ff6022a01aaa10c14ee56  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/insert4_neg.cc
! 9aa8f45d508b24d58d746ead17ba1037  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/invalid_local_iterator_compare_neg.cc
! ee740a3307ecd9eb3622ecb3f5fc9fa7  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/invalid_local_iterator_range_neg.cc
! 1608731a39bc0efc3fe24531d6e51500  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/iterator_self_move_assign_neg.cc
! 6c6934672371a6480dd880b68e3e6db8  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/max_load_factor_neg.cc
! 61968227a6ddad1bdfcfe36de9097251  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/move_assign_neg.cc
! 7e71f122b7349b87841e2f7b136674cc  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/move_neg.cc
! 081e52bdc38539a3efbccc053715d971  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/self_move_assign_neg.cc
! 2526d737256588c7a1c2d6828fcdf132  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/use_erased_local_iterator_neg.cc
! be02ef74369d9e3299fdebb4a1503b4c  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/use_invalid_iterator_neg.cc
! 023aa6086cf1d612ab7f00a96ff024b3  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/use_invalid_local_iterator_neg.cc
! 86505889f10be1719a1f52090d6aa05a  libstdc++-v3/testsuite/23_containers/unordered_multimap/erase/1.cc
! 6aac22b92d3866352217554c13379297  libstdc++-v3/testsuite/23_containers/unordered_multimap/erase/2.cc
! ef979022d7d6a37dc5651aaba1e481d4  libstdc++-v3/testsuite/23_containers/unordered_multimap/erase/24061-multimap.cc
! b25cf14677ebd23f0beb83651f61324f  libstdc++-v3/testsuite/23_containers/unordered_multimap/erase/51142.cc
! 79f643c4cc93269713e6d8ce1ead1ec0  libstdc++-v3/testsuite/23_containers/unordered_multimap/erase/51845-multimap.cc
! 1ed20b129d279bc99867b6290341f592  libstdc++-v3/testsuite/23_containers/unordered_multimap/erase/54276.cc
! 414b41a9cf2b96aa8d80cc095a58f588  libstdc++-v3/testsuite/23_containers/unordered_multimap/final_hash.cc
! 117391d3386a69fb6672f67af2c6953e  libstdc++-v3/testsuite/23_containers/unordered_multimap/hash_policy/dr1189.cc
! 55ac7724232ffaef43d8725365f7b87c  libstdc++-v3/testsuite/23_containers/unordered_multimap/init-list.cc
! 0476de695544448222f16574a4a4273e  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/24061-multimap.cc
! 59f923c73ab86a080000e3887ec71511  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/51866.cc
! 43d49e17d79f3c0252351fa92045c805  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/52476.cc
! bc6af9625c24ee66257a14f41c48c751  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/53115.cc
! fc0d8de2e0a4bd01e31dbe05d07abb3d  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/55028-debug.cc
! ebd5b5d9fe7d0db0f9988519625b4cd8  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/57619.cc
! b3e7ccfa5f85c32552dc825d845c9499  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/dr2354.cc
! fb964737b362daea2fc3a11da7e3f8fc  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/hint.cc
! 430f645c0468342d3a70e4845944c3c3  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/multimap_range.cc
! 919a94919683fa7e28150db7b14f3ad7  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/multimap_single.cc
! c2eb645323c50c1e64b27c10fb5e04df  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/multimap_single_move-1.cc
! ac4d1ec01e6b05f1156a4a60938f2a8f  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/multimap_single_move-2.cc
! b88584b513094874096913e57c10c3a8  libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/emplace.cc
! 3cbb8550716f2df28ca24d6fa5e22b63  libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/extract.cc
! 90b1112e5d5702e14a7d547b8d353ec6  libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/merge.cc
! 285a8ad98287fe56b4b231ebe01a0b63  libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/reserve.cc
! 0a20c21a33a4ec4e0734c94c267c444a  libstdc++-v3/testsuite/23_containers/unordered_multimap/observers.cc
! 6e8ca1f02c238a584a66ab4b0b9ad34c  libstdc++-v3/testsuite/23_containers/unordered_multimap/operations/count.cc
! a97fc7312345797a435f22f0f577edc1  libstdc++-v3/testsuite/23_containers/unordered_multimap/operators/1.cc
! 4c2e120ba7d5b0b56016c09043cc150c  libstdc++-v3/testsuite/23_containers/unordered_multimap/operators/2.cc
! 030554821a6a679d9fdeafbd67471ca6  libstdc++-v3/testsuite/23_containers/unordered_multimap/range_access.cc
! ff61ff26775bf2da8977d83120849897  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/53339.cc
! 99572aadfabaeb93aad3b658adccc390  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/citerators.cc
! 516f5455d2d6323d8385167c7335fc87  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/cliterators.cc
! 945bd5117c34a033e55be493c34b9ca3  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/debug.cc
! 0b3afb5b44df414721185531c1450d5e  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/exception/basic.cc
! 726b582d59c86d6c2864c0e64e70c7df  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/exception/generation_prohibited.cc
! 2139044b20e9ebbb54bfafd49c69c4c1  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/exception/propagation_consistent.cc
! 75fdd2c1df7903ae6d70ab594388d672  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/explicit_instantiation/1.cc
! c8610604f4b53b9e2e2bf6faba319b43  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/explicit_instantiation/2.cc
! f2f5b865130f7c4df8d6bc7785ef56cb  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/explicit_instantiation/3.cc
! af7644c27a45c92ff9c9113846805b2e  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/explicit_instantiation/4.cc
! 3518ef9a4448be24d0d1e02434911f06  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/explicit_instantiation/5.cc
! b23a7ecd946197071ae1b8022cefc3c0  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/typedefs.cc
! 91f95e10da1896a311dc3554369121b3  libstdc++-v3/testsuite/23_containers/unordered_multiset/55043.cc
! eaa297528be01cbbf329d7a647b24734  libstdc++-v3/testsuite/23_containers/unordered_multiset/allocator/copy.cc
! 4279669d94957160039db2580f8e50b8  libstdc++-v3/testsuite/23_containers/unordered_multiset/allocator/copy_assign.cc
! d0bc3c44643f50b2ca1c80cbc99b1277  libstdc++-v3/testsuite/23_containers/unordered_multiset/allocator/minimal.cc
! 7e74ca87333dd418bc8847463e66a257  libstdc++-v3/testsuite/23_containers/unordered_multiset/allocator/move.cc
! 9cb5e156e60fd463b7f028c2fe854f00  libstdc++-v3/testsuite/23_containers/unordered_multiset/allocator/move_assign.cc
! 40a691aaf23c9f461ad80a219c6a3e51  libstdc++-v3/testsuite/23_containers/unordered_multiset/allocator/noexcept.cc
! 73acd29beb2a7e865db132ba31f556e3  libstdc++-v3/testsuite/23_containers/unordered_multiset/allocator/swap.cc
! 0c5d68bcc6ef78836edb14da7bebcae9  libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/66055.cc
! 675dbec310a87066da79c67244fc2acb  libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/copy.cc
! 0b5cf2230ecf6a795eaa4cebb3de935d  libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/moveable.cc
! 24b03e8dafdd5c2f9b38665c61518b57  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/60499.cc
! d258e26a2f4a6d01609549e3fc124747  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/begin1_neg.cc
! 5f07895b15e7264b5a2042279ce3bc8c  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/begin2_neg.cc
! e7ae82b4a4f4073e95ae0d81e25a88b5  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/bucket_size_neg.cc
! c3abab2bdb222a4384b660132e6cc31b  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/cbegin_neg.cc
! 25dfc38aa3448f1d87e858710cb5ff74  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/cend_neg.cc
! c4ecda911019ddaf4f4fdd4073433fc9  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/construct1_neg.cc
! 8646ca7b85a5a1cc99fac2a612ecd45a  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/construct2_neg.cc
! 4c6ec55daaef5558a1056f745d2e7c42  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/construct3_neg.cc
! 70ef3d589e6c6b5384cb2d20ebc9e0ec  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/construct4_neg.cc
! 3a344a7343fa83466d0fa26c8b32b19d  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/construct5_neg.cc
! 520dc5a8daa9b9b762a7540deb7ea346  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/end1_neg.cc
! 20c86d4c6aafe6cfbd5b81ec2ebae52c  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/end2_neg.cc
! 0c36479192a08bf66c35a2dfd1e9dc34  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/insert1_neg.cc
! 156c4b45e2cdb2dd06d65a0beb1c1fab  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/insert2_neg.cc
! 139cc3c2e8ab3617fc1496b0937e8368  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/insert3_neg.cc
! 1829adc73a273f28ca795d1d7126e68f  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/insert4_neg.cc
! f7804594019f9197030caff90cbfd086  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/invalid_local_iterator_compare_neg.cc
! 469ea58bb532b8c243f93171eb28ae80  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/invalid_local_iterator_range_neg.cc
! 074666dd1a702f6e02ee2dcf7bc43d82  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/iterator_self_move_assign_neg.cc
! 07994baf53371db703eaa613fd9364f1  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/max_load_factor_neg.cc
! 0874aabe56f7f753879a5e6b97f05bd4  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/move_assign_neg.cc
! af2411343cc38da3331518dc603099fc  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/move_neg.cc
! 5db214fb25fc4431fe3a969ec43934e0  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/self_move_assign_neg.cc
! e5c70b8ab72e3375b12ce6d1c090d5d6  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/use_erased_local_iterator_neg.cc
! 300c1053dbd9d96e50d52587b435ca18  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/use_invalid_iterator_neg.cc
! f2d8aabeb326f12169c373319765aca9  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/use_invalid_local_iterator_neg.cc
! e1c34a2f8d11e9d0d9d5d6cc31d0f177  libstdc++-v3/testsuite/23_containers/unordered_multiset/erase/1.cc
! 5df5e9268915f16071940843ada6093e  libstdc++-v3/testsuite/23_containers/unordered_multiset/erase/2.cc
! 30c30970fa0eb87daf86809573571bac  libstdc++-v3/testsuite/23_containers/unordered_multiset/erase/24061-multiset.cc
! 8dfee2d05c679317db8c99e3400392e1  libstdc++-v3/testsuite/23_containers/unordered_multiset/erase/51142.cc
! 3239be81b71a9a84fa070b98c4e88d63  libstdc++-v3/testsuite/23_containers/unordered_multiset/final_hash.cc
! 4d2ff9ac6a0a5cce289a34bf12881639  libstdc++-v3/testsuite/23_containers/unordered_multiset/hash_policy/dr1189.cc
! cd54e2c418ab666e136382403eb0740d  libstdc++-v3/testsuite/23_containers/unordered_multiset/init-list.cc
! c6926dfb6ef22eafc3eccdc8e8ca3c20  libstdc++-v3/testsuite/23_containers/unordered_multiset/insert/24061-multiset.cc
! ab566e7adba45588769b1b3b0c049e67  libstdc++-v3/testsuite/23_containers/unordered_multiset/insert/51866.cc
! 8075449b0ae1fcbba2fe1e7f48ead088  libstdc++-v3/testsuite/23_containers/unordered_multiset/insert/52476.cc
! 13994cc88195974228118cb105ea6302  libstdc++-v3/testsuite/23_containers/unordered_multiset/insert/53115.cc
! 65984686daf836ce54fbe444c21a6cb5  libstdc++-v3/testsuite/23_containers/unordered_multiset/insert/hash_policy.cc
! 78c92e225d2f9885d5e047c6b64d944f  libstdc++-v3/testsuite/23_containers/unordered_multiset/insert/multiset_range.cc
! 63bed39d2c70b0eab1746b157d44c8c7  libstdc++-v3/testsuite/23_containers/unordered_multiset/insert/multiset_single.cc
! b5c2d91a9146fca4750f8f58ab69d180  libstdc++-v3/testsuite/23_containers/unordered_multiset/insert/multiset_single_move.cc
! ca622e7f787aad4ec0a16481507cb90a  libstdc++-v3/testsuite/23_containers/unordered_multiset/modifiers/emplace.cc
! 0f0220ca87f9199273b677a5eaf41074  libstdc++-v3/testsuite/23_containers/unordered_multiset/modifiers/extract.cc
! be12ac23a250ef3b1b8a7ced09c8a175  libstdc++-v3/testsuite/23_containers/unordered_multiset/modifiers/merge.cc
! d6214f15f6e91cbd9b063b00d8919a85  libstdc++-v3/testsuite/23_containers/unordered_multiset/modifiers/reserve.cc
! 54606ec790feb90c1a6d44203cb10e0a  libstdc++-v3/testsuite/23_containers/unordered_multiset/observers.cc
! acd7bba93a42c4ffeb19fa332b80c130  libstdc++-v3/testsuite/23_containers/unordered_multiset/operations/count.cc
! ce8acbe3655d50f23e0e08b9abf856de  libstdc++-v3/testsuite/23_containers/unordered_multiset/operators/1.cc
! 1758cfdc9b7d7552625ef3cbf75e2bf7  libstdc++-v3/testsuite/23_containers/unordered_multiset/range_access.cc
! 0b2c6993d70efe3a7fe2605609e94215  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/citerators.cc
! 87bcf4ba10ba36231041905b0355f62d  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/cliterators.cc
! 8bba812648a934b7fd8cd616a06f4cbb  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/debug.cc
! 63aa2777ac0fc613f64685def586b18f  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/exception/basic.cc
! 9ae821ccdca263c16892b1c04dc774a8  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/exception/generation_prohibited.cc
! 123def2072fadb86db6af7e4348a17fd  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/exception/propagation_consistent.cc
! d95f803ca7578039f9a2af4a1b04ce34  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/explicit_instantiation/1.cc
! 89037a4ef7f53a44e96a23c1ed4818ef  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/explicit_instantiation/2.cc
! 523d764568b6a528e8346b3c39593760  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/explicit_instantiation/3.cc
! a5c9509a5b34cd46b59efa25f36ea954  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/explicit_instantiation/4.cc
! 6c319ab9551e283d6d788ebdd670b420  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/explicit_instantiation/5.cc
! 8223cae37da36d88456aa07e0b3b5a1a  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/typedefs.cc
! f340c3a6e2cd6e498b325f7e714bc3ef  libstdc++-v3/testsuite/23_containers/unordered_set/55043.cc
! 3571a76e22df4d3fac95a29abce8454b  libstdc++-v3/testsuite/23_containers/unordered_set/56267-2.cc
! 6d77f7195648d822e66e0804cdb044cb  libstdc++-v3/testsuite/23_containers/unordered_set/56267.cc
! 690750ead9627e0fd7f638ca96169642  libstdc++-v3/testsuite/23_containers/unordered_set/56278.cc
! 356047c011f24afa53457a363485358f  libstdc++-v3/testsuite/23_containers/unordered_set/61143.cc
! 01f20ba6e51a41ad3bff2e73b40d4bec  libstdc++-v3/testsuite/23_containers/unordered_set/63456.cc
! 8d67878a165b292763e7601d42d877ef  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/copy.cc
! 38802df667a7e9472febbc83191e8963  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/copy_assign.cc
! 8b870764d9ddf5dd287fb44bebed57e4  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/ext_ptr.cc
! f0523dd014a0de5fba9989508ec5a1cd  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/minimal.cc
! 711a7ea46ae555e5eefe8a6b26445996  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/move.cc
! 805bb61ccbc830de3fb419febea1d63f  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/move_assign.cc
! ffeb5c515f7df57000cd0bf3419e43b5  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/noexcept.cc
! b62894c4f03284e25f9ea4ddbbfa6aa2  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/swap.cc
! f1afbc84a4009d117425f9e09cc61df5  libstdc++-v3/testsuite/23_containers/unordered_set/buckets/swap.cc
! 57f7fb1e23ada0678d926cf2ff4712de  libstdc++-v3/testsuite/23_containers/unordered_set/cons/66055.cc
! e3f9635298ee04c3389db6d3a14ef3a8  libstdc++-v3/testsuite/23_containers/unordered_set/cons/moveable.cc
! 3b0ad20ed2090387f360ecbc87350820  libstdc++-v3/testsuite/23_containers/unordered_set/debug/60499.cc
! b21fa3d9fb22c5c5b5278faba371a0cb  libstdc++-v3/testsuite/23_containers/unordered_set/debug/begin1_neg.cc
! 176138be1ce5f35a7fbdb4055d83a394  libstdc++-v3/testsuite/23_containers/unordered_set/debug/begin2_neg.cc
! 9ff1c4b1d8fe24732fb2a47af8e14b86  libstdc++-v3/testsuite/23_containers/unordered_set/debug/bucket_size_neg.cc
! 0e88c72a7ae443efb8b1132b8676f301  libstdc++-v3/testsuite/23_containers/unordered_set/debug/cbegin_neg.cc
! 1febe1468e43af49dc04f59c8048b157  libstdc++-v3/testsuite/23_containers/unordered_set/debug/cend_neg.cc
! ff64ae5d73e377b85fb92f03658d6f48  libstdc++-v3/testsuite/23_containers/unordered_set/debug/construct1_neg.cc
! 502a000279c1ae5b73ee55709629db93  libstdc++-v3/testsuite/23_containers/unordered_set/debug/construct2_neg.cc
! 4066cf75f56be9f568d23fc970d0c587  libstdc++-v3/testsuite/23_containers/unordered_set/debug/construct3_neg.cc
! 24500799f754c26ed031b00a4217cf3d  libstdc++-v3/testsuite/23_containers/unordered_set/debug/construct4_neg.cc
! 98a6a22d22209d641493a2b11a247114  libstdc++-v3/testsuite/23_containers/unordered_set/debug/construct5_neg.cc
! 49bf1ec667fbfd546df0fce79ad13cca  libstdc++-v3/testsuite/23_containers/unordered_set/debug/debug_functions.cc
! c166a57a12ac1fafda6e7423242e37f9  libstdc++-v3/testsuite/23_containers/unordered_set/debug/end1_neg.cc
! ea04d434d562071a504b96b0a02ea441  libstdc++-v3/testsuite/23_containers/unordered_set/debug/end2_neg.cc
! 8989446df6ad69dbca52cce7d948c966  libstdc++-v3/testsuite/23_containers/unordered_set/debug/insert1_neg.cc
! 55e739bea09e6fb6e749d8488fd654f5  libstdc++-v3/testsuite/23_containers/unordered_set/debug/insert2_neg.cc
! 6e7696e66b2c686523f9376b0a64dba6  libstdc++-v3/testsuite/23_containers/unordered_set/debug/insert3_neg.cc
! 18878a09edf728421d0ee880bcd1e817  libstdc++-v3/testsuite/23_containers/unordered_set/debug/insert4_neg.cc
! e1094ab27b6a9f6db402b5f97cec5f4c  libstdc++-v3/testsuite/23_containers/unordered_set/debug/invalid_local_iterator_compare_neg.cc
! 6e7277945374130a59a1565677f66cfc  libstdc++-v3/testsuite/23_containers/unordered_set/debug/invalid_local_iterator_range_neg.cc
! b44244c5cee449c8eca7fc00a145e290  libstdc++-v3/testsuite/23_containers/unordered_set/debug/iterator_self_move_assign_neg.cc
! 0c64bb8255683066c65db4952bb3b82e  libstdc++-v3/testsuite/23_containers/unordered_set/debug/max_load_factor_neg.cc
! 564ccfdf158c902589e2f73c342e8243  libstdc++-v3/testsuite/23_containers/unordered_set/debug/move_assign_neg.cc
! bade113d04ccfc5babb3fa357fbb3dc9  libstdc++-v3/testsuite/23_containers/unordered_set/debug/move_neg.cc
! 5b4533128fd3dfe101075cffcf1cb1ff  libstdc++-v3/testsuite/23_containers/unordered_set/debug/self_move_assign_neg.cc
! 0fd5595d57982059f002a6b8ba77cc7c  libstdc++-v3/testsuite/23_containers/unordered_set/debug/use_erased_local_iterator_neg.cc
! 2695ed5b2c78cb597c70d6557dd3e271  libstdc++-v3/testsuite/23_containers/unordered_set/debug/use_invalid_iterator_neg.cc
! 68a6d3278f2eef66bfa609576b714bad  libstdc++-v3/testsuite/23_containers/unordered_set/debug/use_invalid_local_iterator_neg.cc
! ef11233d5387bf7254e534272f3339ee  libstdc++-v3/testsuite/23_containers/unordered_set/erase/1.cc
! 8698484907541953b7bc21961fa9911a  libstdc++-v3/testsuite/23_containers/unordered_set/erase/24061-set.cc
! 3ebcefee4f26047424c91a049f452a77  libstdc++-v3/testsuite/23_containers/unordered_set/erase/51142.cc
! 78bd0cbd27fe606a6c351bd6b4f1a3ad  libstdc++-v3/testsuite/23_containers/unordered_set/final_hash.cc
! 270ce4009cdeae01c1c9794237f036d3  libstdc++-v3/testsuite/23_containers/unordered_set/hash_policy/26132.cc
! b603c858de75fc5c6cceba23a5c9fc26  libstdc++-v3/testsuite/23_containers/unordered_set/hash_policy/71181.cc
! ebb7809a628c8ee38bd8755f4a4fc3d4  libstdc++-v3/testsuite/23_containers/unordered_set/hash_policy/dr1189.cc
! 72d74d90338efd22c6fa35d698f32224  libstdc++-v3/testsuite/23_containers/unordered_set/hash_policy/load_factor.cc
! acc9a351a6eb0e765c6962956d5d3d5e  libstdc++-v3/testsuite/23_containers/unordered_set/hash_policy/power2_rehash.cc
! 40cdb13142d9b4d69527582bbc443d8f  libstdc++-v3/testsuite/23_containers/unordered_set/hash_policy/prime_rehash.cc
! 01c8221cb40f55f66549bdc2abbbfb18  libstdc++-v3/testsuite/23_containers/unordered_set/hash_policy/rehash.cc
! e6256d0245995ef93c83f08a6e300764  libstdc++-v3/testsuite/23_containers/unordered_set/init-list.cc
! 70bf9a9b3c4ccf91e1ec7cb9e4ca3976  libstdc++-v3/testsuite/23_containers/unordered_set/insert/24061-set.cc
! fa26791e1baec62d1296f6fbc776cba6  libstdc++-v3/testsuite/23_containers/unordered_set/insert/hash_policy.cc
! 0578a366d1c9b18391df075b5055ccfa  libstdc++-v3/testsuite/23_containers/unordered_set/insert/move_range.cc
! a09b51de7036527d490f6779a22cad5f  libstdc++-v3/testsuite/23_containers/unordered_set/insert/set_range.cc
! e763b22bee842ab98dca4f1a034d2aa8  libstdc++-v3/testsuite/23_containers/unordered_set/insert/set_single.cc
! b889304c5639b7ddbb9a162fd2093f12  libstdc++-v3/testsuite/23_containers/unordered_set/insert/set_single_move.cc
! 99dafa18f337407ff49e1ad386c46c92  libstdc++-v3/testsuite/23_containers/unordered_set/instantiation_neg.cc
! b04ad9bc574f5432aeddb5a1bf50f76e  libstdc++-v3/testsuite/23_containers/unordered_set/max_load_factor/robustness.cc
! 249db83a1cc94ea41d771b0035caf487  libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/emplace.cc
! 4b69ac54fe8228a743ae6bc8b3bf17c3  libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/extract.cc
! 51ddfc1a39f11502fd853e3d0c0d174e  libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/merge.cc
! 2b1942db78a206bfaa42dcd8c6703040  libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/reserve.cc
! 0aa58dadfe3bab499fa34d4bc45acc09  libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/swap.cc
! 13c808e934e0cccf49d8f150c443b724  libstdc++-v3/testsuite/23_containers/unordered_set/observers.cc
! 2cfd976d725e3a345d89c92673573ad1  libstdc++-v3/testsuite/23_containers/unordered_set/operations/count.cc
! f9c07c0a73ccae4521a59c8bb07ff165  libstdc++-v3/testsuite/23_containers/unordered_set/operators/1.cc
! 43da3b615b4b606ae97831b15c550bcb  libstdc++-v3/testsuite/23_containers/unordered_set/operators/52309.cc
! 3c52da146337d82f7454818699085b4f  libstdc++-v3/testsuite/23_containers/unordered_set/range_access.cc
! c529d70d8ff8131fdc78e0765a4b9634  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/52942.cc
! 81094ca70357ff147987ed7b10ac7e88  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/53067.cc
! 0c9dd3c24aeb466db312cbc26d49d77f  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/citerators.cc
! d68ee2fbae70e1e984f21a06d69303ae  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/cliterators.cc
! 278e51eaaab3c56b12f1f0f279362499  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/debug_container.cc
! 5dce68e7554f383ebde026f32812f5fc  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/debug_mode.cc
! 441d910f3fd80ef0e8e81d7f9d03f47d  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/exception/basic.cc
! c93be4f65c108e4bfafa1f3ef2d919e0  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/exception/generation_prohibited.cc
! a051d023d9470429f48c4de7903b80b3  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/exception/propagation_consistent.cc
! cd85dd424ba1a8c2a491c1fe82d7bd94  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/explicit_instantiation/1.cc
! ed10850c6d19b0bc0fa915be24ff9010  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/explicit_instantiation/2.cc
! 154cc8edfd2440471f8d409b4528d9f5  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/explicit_instantiation/3.cc
! 013d1a48ee23477c78f5e5c0e06227b3  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/explicit_instantiation/4.cc
! 29c8c31effbb09fd886d871e905e2f07  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/explicit_instantiation/5.cc
! 3389e2ac410d13b924badf1037b5b882  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/typedefs.cc
! fa4d1747beb00fd13bff9aee297dc642  libstdc++-v3/testsuite/23_containers/vector/14340.cc
! a2073091f6adb898484c07f7af6f98ea  libstdc++-v3/testsuite/23_containers/vector/15523.cc
! 8462f4160c0aa7e6f96be87c5205982b  libstdc++-v3/testsuite/23_containers/vector/18604.cc
! 55150d95e7d609e1991a75f7d8029262  libstdc++-v3/testsuite/23_containers/vector/26412-1.cc
! 340ce420f0467cdd1c611919ce3f3f2b  libstdc++-v3/testsuite/23_containers/vector/26412-2.cc
! 5a3aae4a54d0c7e6443b259437e113d2  libstdc++-v3/testsuite/23_containers/vector/40192.cc
! 590d99b559423085e2d9c8178151cbe0  libstdc++-v3/testsuite/23_containers/vector/52591.cc
! 78c1e03d23b3ccc640cc38d92d50e080  libstdc++-v3/testsuite/23_containers/vector/58764.cc
! 4913a036871bd58110b018ebaf3e5405  libstdc++-v3/testsuite/23_containers/vector/59829.cc
! a9bcfca33da4d98586475a6378c2549e  libstdc++-v3/testsuite/23_containers/vector/63500.cc
! d1b7a52581d32fcbf8f4beceb755b22f  libstdc++-v3/testsuite/23_containers/vector/allocator/construction.cc
! 551735d8f18cd590f4d610a8c72b4dfe  libstdc++-v3/testsuite/23_containers/vector/allocator/copy.cc
! 053e6ae779288a471b32e591056e819e  libstdc++-v3/testsuite/23_containers/vector/allocator/copy_assign.cc
! 019d93f1adf5292fa57fdad43aed063d  libstdc++-v3/testsuite/23_containers/vector/allocator/ext_ptr.cc
! 7d010e6fb650368d7b95238217266754  libstdc++-v3/testsuite/23_containers/vector/allocator/minimal.cc
! affac96c281f42481edda325ff3d5cce  libstdc++-v3/testsuite/23_containers/vector/allocator/move.cc
! 57c37cf9a1ae3bbb2858f1dcd031ffc3  libstdc++-v3/testsuite/23_containers/vector/allocator/move_assign.cc
! 8be6176c19ba0507d69e0c2e97205ddf  libstdc++-v3/testsuite/23_containers/vector/allocator/noexcept.cc
! f66feef89391dde30eb2e9eb69aef386  libstdc++-v3/testsuite/23_containers/vector/allocator/swap.cc
! 02d58bc4252e655ba571382c6fe693c8  libstdc++-v3/testsuite/23_containers/vector/bool/1.cc
! aa62b06275a03423f2b536c364b9a38b  libstdc++-v3/testsuite/23_containers/vector/bool/21244.cc
! 5ab5bebd698126090156af350dd4bc32  libstdc++-v3/testsuite/23_containers/vector/bool/23632.cc
! 5d549272dad88e955961d4f345255353  libstdc++-v3/testsuite/23_containers/vector/bool/6886.cc
! 7b1affb04a9348622f2ac5f67130a233  libstdc++-v3/testsuite/23_containers/vector/bool/72847.cc
! 7cbb62e431dd25a455ca69698543863b  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/copy.cc
! 92e4edca91210860c384e17b6a62eefb  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/copy_assign.cc
! 3f61e5f2f4f84376344e09f2730412bb  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/ext_ptr.cc
! f377e8f4e5c89a10c9a6d33266268592  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/minimal.cc
! a41d8a727cfc3d6eca303465a7a9d58e  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/move.cc
! c7cc0897a15336b95a52892424665533  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/move_assign.cc
! eaac159a72400848f14461ba6f4a7dcf  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/noexcept.cc
! 244b7a4aeb0d3a6c28e704ccb5b64777  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/swap.cc
! 68b59f3de9c34a22612dc4f63d7d276a  libstdc++-v3/testsuite/23_containers/vector/bool/capacity/1.cc
! 4281088486d8c816777e8c4f913b7d4c  libstdc++-v3/testsuite/23_containers/vector/bool/capacity/29134.cc
! ed2137dac38017ae02e04e7327fd56cb  libstdc++-v3/testsuite/23_containers/vector/bool/capacity/shrink_to_fit.cc
! 38a7c7599c80649878467e5c0d0a7333  libstdc++-v3/testsuite/23_containers/vector/bool/clear_allocator.cc
! 88d2878288aaa3cdd3fdfd5a62a7258a  libstdc++-v3/testsuite/23_containers/vector/bool/cons/1.cc
! c8efcc032872651f2d6a684bfeb8eef9  libstdc++-v3/testsuite/23_containers/vector/bool/cons/2.cc
! 72fc4176200ef7119189304082837097  libstdc++-v3/testsuite/23_containers/vector/bool/cons/noexcept_move_construct.cc
! 81f5f78a903e65a1a0b0d4cb46492685  libstdc++-v3/testsuite/23_containers/vector/bool/emplace.cc
! 0b8d6066dfbcdebe9a0b7218f112c0fd  libstdc++-v3/testsuite/23_containers/vector/bool/emplace_cxx17_return.cc
! 352bab1350325bde1ccac008f1d4feab  libstdc++-v3/testsuite/23_containers/vector/bool/hash/1.cc
! 728a5ba408492651cec1991647248da3  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/erase/1.cc
! 3fd4e5f9d04b2b8ccd026345a1ef3bb5  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/erase/54577.cc
! a0d948c5d2bc5179f320d256e2e87b44  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/insert/1.cc
! 3b0088a7eecebb233fad0c79f5f2a285  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/insert/31370.cc
! b9ea9a0fd7a264b20610f6d865ae99ca  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/insert/const_iterator.cc
! 851031927d5f5d769ad262116f912082  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/swap/1.cc
! 9d36f0e103cd2ad3c72a860a343b7ad2  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/swap/2.cc
! b9b3174d728083b16006842e0e447b99  libstdc++-v3/testsuite/23_containers/vector/bool/requirements/citerators.cc
! 4e245359b6559d299a11ac3f09c70840  libstdc++-v3/testsuite/23_containers/vector/bool/requirements/dr438/constructor.cc
! dc1e1b866ac75ee881ab085548888973  libstdc++-v3/testsuite/23_containers/vector/bool/swap.cc
! 32c379681f693d1ca464136f92a4ebde  libstdc++-v3/testsuite/23_containers/vector/capacity/1.cc
! 7cb3e6ca41f668bf37abd8007fee99f4  libstdc++-v3/testsuite/23_containers/vector/capacity/2.cc
! 525e39f9af53cb229f98a79659b067b9  libstdc++-v3/testsuite/23_containers/vector/capacity/29134-2.cc
! 3f1ddf4edea90aa353900dd4e31b863f  libstdc++-v3/testsuite/23_containers/vector/capacity/29134.cc
! be1333cbb87b989d4c0806880d1ded1a  libstdc++-v3/testsuite/23_containers/vector/capacity/44190.cc
! d9ddf8b05f3428fd3f38f7d8db12347e  libstdc++-v3/testsuite/23_containers/vector/capacity/8230.cc
! 8ad238c062c5dcaee744db38fccd8552  libstdc++-v3/testsuite/23_containers/vector/capacity/reserve/moveable.cc
! 900dfe9ba344c52fd0f153ed943b9593  libstdc++-v3/testsuite/23_containers/vector/capacity/reserve/moveable2.cc
! b8e47def7519098105bab276b3cabeb7  libstdc++-v3/testsuite/23_containers/vector/capacity/resize/1.cc
! 7b685ccd59e8186e79f00f665aba8c4c  libstdc++-v3/testsuite/23_containers/vector/capacity/resize/moveable.cc
! 3caa2fe6830351f310ef92240d53dce4  libstdc++-v3/testsuite/23_containers/vector/capacity/resize/moveable2.cc
! c0eb2ee9f3b0c304ed38a5841b236247  libstdc++-v3/testsuite/23_containers/vector/capacity/resize/resize_size.cc
! bbbc809383d96148c65c0a0906ce314c  libstdc++-v3/testsuite/23_containers/vector/capacity/shrink_to_fit.cc
! 351b24be057edfd7c87284aa866e5f8b  libstdc++-v3/testsuite/23_containers/vector/capacity/shrink_to_fit2.cc
! e222966616ccc5bb596d9c84cd2b8e20  libstdc++-v3/testsuite/23_containers/vector/check_construct_destroy.cc
! 89750ae5bf7ad856bf9f3253833b459c  libstdc++-v3/testsuite/23_containers/vector/cons/1.cc
! 0022c84291f8dc9cec83614dcd488268  libstdc++-v3/testsuite/23_containers/vector/cons/2.cc
! ff01ea2886a376dc7e73fffa0239a6ea  libstdc++-v3/testsuite/23_containers/vector/cons/3.cc
! 0ff71d3b72826c808f6fffc721512ec1  libstdc++-v3/testsuite/23_containers/vector/cons/4.cc
! 7a02016796167135c1969906fec17ef4  libstdc++-v3/testsuite/23_containers/vector/cons/55977.cc
! 485c7597d8ccbfd3813357997aae9ddb  libstdc++-v3/testsuite/23_containers/vector/cons/6513.cc
! 7b7d7932a48427137dc07de2891b0f55  libstdc++-v3/testsuite/23_containers/vector/cons/clear_allocator.cc
! 6cee276333e0ed87b4a1239ebc23bd63  libstdc++-v3/testsuite/23_containers/vector/cons/cons_size.cc
! 1149f68be2cb7fade6ecca63a6167d1b  libstdc++-v3/testsuite/23_containers/vector/cons/destructible_neg.cc
! b5ac5a0885c85edb71592b124f4ca3fe  libstdc++-v3/testsuite/23_containers/vector/cons/moveable.cc
! cbf199308f3659984498d156b5b92278  libstdc++-v3/testsuite/23_containers/vector/cons/moveable2.cc
! aab8668817d757f5b5965e023bd3551b  libstdc++-v3/testsuite/23_containers/vector/cons/noexcept_move_construct.cc
! 0a3f17af0ee707547f51f281a5ad90a9  libstdc++-v3/testsuite/23_containers/vector/data_access/1.cc
! 993c1125925decf4098e38e6b723e8a1  libstdc++-v3/testsuite/23_containers/vector/debug/52433.cc
! c9964c4ce93490a05f4c5ecbf1aec2a7  libstdc++-v3/testsuite/23_containers/vector/debug/57779_neg.cc
! 3ec58a2b9547c4164e7afc0351ec022e  libstdc++-v3/testsuite/23_containers/vector/debug/60499.cc
! f2b388478e3b77a84986bf69182c6be9  libstdc++-v3/testsuite/23_containers/vector/debug/60587.cc
! 9b36f434b8c47f5aff546f18c4e0f27d  libstdc++-v3/testsuite/23_containers/vector/debug/60587_neg.cc
! 57ba244e03e00769a32f60d2c7be30aa  libstdc++-v3/testsuite/23_containers/vector/debug/alloc_prop.cc
! d7102d81eea8a92c93fc1c4b43056b7c  libstdc++-v3/testsuite/23_containers/vector/debug/assign1_neg.cc
! ac4c3bc61af9d26e178bdd9c1f159de8  libstdc++-v3/testsuite/23_containers/vector/debug/assign2_neg.cc
! 00e3278c50da083a89804a79f227ccb4  libstdc++-v3/testsuite/23_containers/vector/debug/assign3_neg.cc
! aeb9d699c1d3ea9d05c4a5b2e0eee127  libstdc++-v3/testsuite/23_containers/vector/debug/assign4_neg.cc
! 669d37e9fa26fdbc594599ef6756879d  libstdc++-v3/testsuite/23_containers/vector/debug/bool/shrink_to_fit.cc
! ce8873673377ac909f33c840ae32b1fe  libstdc++-v3/testsuite/23_containers/vector/debug/construct1_neg.cc
! 00fef2ab2a18fa57b6cc5cdfb00cce20  libstdc++-v3/testsuite/23_containers/vector/debug/construct2_neg.cc
! 728273afb58ab0792934194ab3db265b  libstdc++-v3/testsuite/23_containers/vector/debug/construct3_neg.cc
! 875f4837e4374c0ac2b9ac57e06bd442  libstdc++-v3/testsuite/23_containers/vector/debug/construct4_neg.cc
! 46d1b09e3e72767f8e3cf4d89208673c  libstdc++-v3/testsuite/23_containers/vector/debug/debug_functions.cc
! 7d070c2ce51e76f930bbf59818e4048d  libstdc++-v3/testsuite/23_containers/vector/debug/insert1_neg.cc
! 48a1b5eea5f45542d8348ee397297bb3  libstdc++-v3/testsuite/23_containers/vector/debug/insert2_neg.cc
! b7ecc3f059b11a3c121ccb74dbdfa567  libstdc++-v3/testsuite/23_containers/vector/debug/insert3_neg.cc
! 29556760aa3b4e5d846ff7a62634b66f  libstdc++-v3/testsuite/23_containers/vector/debug/insert4_neg.cc
! abb0988f2c6e3834d9d5486f8430ac38  libstdc++-v3/testsuite/23_containers/vector/debug/insert5_neg.cc
! ecfd9d4d4de4057ec6272fdb47f154d9  libstdc++-v3/testsuite/23_containers/vector/debug/insert6_neg.cc
! 0efcd2bd8ca158944cf4bee64be1ae4d  libstdc++-v3/testsuite/23_containers/vector/debug/insert7_neg.cc
! 4791310f5290fe74cddeac8dd0138a89  libstdc++-v3/testsuite/23_containers/vector/debug/invalidation/1.cc
! 19d93911c62287eb3efe6d30c71764ee  libstdc++-v3/testsuite/23_containers/vector/debug/invalidation/2.cc
! b44aa31f68f2d655a07663877afe5319  libstdc++-v3/testsuite/23_containers/vector/debug/invalidation/3.cc
! 785a86aeb59ba9876bab46ab11c940ca  libstdc++-v3/testsuite/23_containers/vector/debug/invalidation/4.cc
! 9298437d6f516bac7cae4c9f747c91de  libstdc++-v3/testsuite/23_containers/vector/debug/iterator_self_move_assign_neg.cc
! 61e71886c14d7b84bcc78c033941792f  libstdc++-v3/testsuite/23_containers/vector/debug/move_assign_neg.cc
! 3a99e6f6aa26f55a177d3ed5bf73e9b0  libstdc++-v3/testsuite/23_containers/vector/debug/move_neg.cc
! c8372d87a66f02cb9de2c936e77202e8  libstdc++-v3/testsuite/23_containers/vector/debug/multithreaded_swap.cc
! cb6a14e89e85292d998339dcf64b4329  libstdc++-v3/testsuite/23_containers/vector/debug/mutex_association.cc
! 792fbb6b99476d280d59130c95ddf19a  libstdc++-v3/testsuite/23_containers/vector/debug/self_move_assign_neg.cc
! ff3a3415a05785748c360b14e18e4a24  libstdc++-v3/testsuite/23_containers/vector/debug/shrink_to_fit.cc
! 216e9acd3c51e1aca0d18c04dde64505  libstdc++-v3/testsuite/23_containers/vector/debug_mode_requires_reallocation-1.cc
! be2eba44d22a799432f4ef6d25e56056  libstdc++-v3/testsuite/23_containers/vector/debug_mode_requires_reallocation-2.cc
! 40d3afe1e6f1b5689bc2678b51877ba9  libstdc++-v3/testsuite/23_containers/vector/element_access/1.cc
! f496b7b81d6fcce4dd09c4ea2a95e578  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/citerators.cc
! 212a56c05c646d214d1397b119293e82  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/data_access.cc
! 4cab7b848bd8c43d1aa4f5c707b42028  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/explicit_instantiation/1.cc
! 07b6911b767d1776b3f2732f90dc63de  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/explicit_instantiation/2.cc
! df6931d60d1f7d013b3c15db4a01fdf0  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/explicit_instantiation/3.cc
! baa330a596d4550ccaf22f1a18880507  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/modifiers/element.cc
! 60965ebbfb59ed0d7699d36bff0ef4dc  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/modifiers/erase.cc
! cb458312be94de577fc58d86751db43d  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/modifiers/insert.cc
! 2ef8adac05338300fdc10eb152d8a314  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/resize.cc
! 860cbd979740c858206212394d719b6f  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/types/1.cc
! 1c28999a0b84a7db70e5e8242659c506  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/types/2.cc
! e785d2d1649a758139b97ad58249b542  libstdc++-v3/testsuite/23_containers/vector/init-list.cc
! 2e9feda1218f11a022c4e9e15b1d6999  libstdc++-v3/testsuite/23_containers/vector/modifiers/1.cc
! 8c764b107fe808bb29d7afc3399c492e  libstdc++-v3/testsuite/23_containers/vector/modifiers/2.cc
! 6033f17e745cfb7a63ac1c650202e541  libstdc++-v3/testsuite/23_containers/vector/modifiers/emplace/52799.cc
! e7d791b1485f25b872b4b3e4ccf47c3f  libstdc++-v3/testsuite/23_containers/vector/modifiers/emplace/const_iterator.cc
! 0429a3208a6ac4fe8f78ce9480b543dd  libstdc++-v3/testsuite/23_containers/vector/modifiers/emplace/cxx17_return.cc
! 78688ff91fdd3ede0b624de9f5acf7b4  libstdc++-v3/testsuite/23_containers/vector/modifiers/emplace/self_emplace.cc
! d6dcb06b44c98e5f69936833abafd7ff  libstdc++-v3/testsuite/23_containers/vector/modifiers/erase/1.cc
! 29465ab34a3748fd88f9b81578f742e1  libstdc++-v3/testsuite/23_containers/vector/modifiers/erase/50529.cc
! 56a95916236ff8c8134ebabdf622a499  libstdc++-v3/testsuite/23_containers/vector/modifiers/erase/54577.cc
! 856edfa8704052a8f550b3b2a3d01a06  libstdc++-v3/testsuite/23_containers/vector/modifiers/erase/moveable.cc
! 6aebe8c379624b09cfcb5a9284be0c41  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/1.cc
! 1ccea03496f0a2c406ed71c0decfc5e0  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/58148.cc
! f0a1255cd13ddceb4111461183ebd64c  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/aliasing.cc
! 98ad2d3975bc9cfef8d69ef64cc71142  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/const_iterator.cc
! 6b9760377080cce5b720963f024fb759  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/self_insert.cc
  43d5a1efc3592428eed7065d6b872b00  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert_vs_emplace.cc
! 00638abc6e74a4f9572157ba2c35739a  libstdc++-v3/testsuite/23_containers/vector/modifiers/moveable.cc
! 7de1408bfcf76c5666d97e510f2e3a21  libstdc++-v3/testsuite/23_containers/vector/modifiers/moveable2.cc
! 27754db02290974ae4879ac8cc5c6abf  libstdc++-v3/testsuite/23_containers/vector/modifiers/push_back/49836.cc
! 2930249b2f99c6039805fe97dab0cda2  libstdc++-v3/testsuite/23_containers/vector/modifiers/push_back/strong_guarantee.cc
! b010de6721e8537e5317ddaad1aacb41  libstdc++-v3/testsuite/23_containers/vector/modifiers/swap/1.cc
! 13a6abec44cd1ada0f542e5d8c736d9f  libstdc++-v3/testsuite/23_containers/vector/modifiers/swap/2.cc
! 4a4a7a8c026078b73a75d9183b7b2be4  libstdc++-v3/testsuite/23_containers/vector/modifiers/swap/3.cc
  33db2bb591e55ad911ea124e372841ca  libstdc++-v3/testsuite/23_containers/vector/profile/vector.cc
! cba440cd2d58fd13fff1e326f54a543a  libstdc++-v3/testsuite/23_containers/vector/range_access.cc
! 8e9b37677fb8b4db27e5fb6dc38adc65  libstdc++-v3/testsuite/23_containers/vector/requirements/citerators.cc
! 0a9d5ce741dab990013dad0e930dfd9e  libstdc++-v3/testsuite/23_containers/vector/requirements/do_the_right_thing.cc
! 889455fae69364f7bc8d809aff244b38  libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc
! 04dd23e60665e22558b9a977b81f7b0c  libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor.cc
! bc8c1231e60fac6de92246c628999fef  libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc
! a8da0c048915d8824b22643388b8a25c  libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc
! d659c62290b5eda67cb4dfadeeae7e5a  libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc
! 4c58323b8ddbf608ca67157da78541a6  libstdc++-v3/testsuite/23_containers/vector/requirements/exception/basic.cc
! a062dd781e28d1cfd0aaf7ab8819f60b  libstdc++-v3/testsuite/23_containers/vector/requirements/exception/generation_prohibited.cc
! b08afe30301b05608be8995e2cd5b8db  libstdc++-v3/testsuite/23_containers/vector/requirements/exception/propagation_consistent.cc
! 8d0c853d7f8ddb46d7faefb3c482dd0d  libstdc++-v3/testsuite/23_containers/vector/requirements/explicit_instantiation/1.cc
! 6ae9f401dd40306d12ff0077d205ec67  libstdc++-v3/testsuite/23_containers/vector/requirements/explicit_instantiation/1_c++0x.cc
! 223b8f71816dbef00678ec7318c30b09  libstdc++-v3/testsuite/23_containers/vector/requirements/explicit_instantiation/2.cc
! 97d1c9e471fc9a5a6a441db6d19cbb7e  libstdc++-v3/testsuite/23_containers/vector/requirements/explicit_instantiation/3.cc
! 190334e6921f7da364742597351e6e31  libstdc++-v3/testsuite/23_containers/vector/requirements/explicit_instantiation/4.cc
! 8a19d2f1b847fd66fdfa302f701e2c7b  libstdc++-v3/testsuite/23_containers/vector/requirements/partial_specialization/1.cc
! d482fabdc23321080422c4a2fa15c08f  libstdc++-v3/testsuite/23_containers/vector/requirements/typedefs.cc
! 2b44312fb1a36211e9bac47f41e138ff  libstdc++-v3/testsuite/23_containers/vector/types/1.cc
! e1ff611b5a60018bde27b65dd608c918  libstdc++-v3/testsuite/23_containers/vector/types/23767.cc
! 3d6c0b523cd432e7fa7a683ae0975c07  libstdc++-v3/testsuite/23_containers/vector/zero_sized_allocations.cc
! b5b3d7daf6050ed5c0efa5064a56842a  libstdc++-v3/testsuite/24_iterators/back_insert_iterator/2.cc
! 2e5d3366c99e8285534c04ad312da4f7  libstdc++-v3/testsuite/24_iterators/back_insert_iterator/requirements/base_classes.cc
! 4681e40e7076857002f66ec40a955a88  libstdc++-v3/testsuite/24_iterators/back_insert_iterator/requirements/container.cc
! 308769bfb6d9d2798403206f634d43c6  libstdc++-v3/testsuite/24_iterators/back_insert_iterator/requirements/explicit_instantiation.cc
! b70e9a490c6605dc2d7fb7f1db22a477  libstdc++-v3/testsuite/24_iterators/back_insert_iterator/requirements/typedefs.cc
! 167caa8e5d0efebb37c42abbeaacdca4  libstdc++-v3/testsuite/24_iterators/container_access.cc
! 08f78df85cfee1ce3a6a5c85d711f8a5  libstdc++-v3/testsuite/24_iterators/front_insert_iterator/2.cc
! 7295ea53945ab8ee2028c94766cadcbd  libstdc++-v3/testsuite/24_iterators/front_insert_iterator/requirements/base_classes.cc
! 8cce161795a37e35e27597d7b05d1c15  libstdc++-v3/testsuite/24_iterators/front_insert_iterator/requirements/container.cc
! 24a8005fa3943e763d5e86fad81b2769  libstdc++-v3/testsuite/24_iterators/front_insert_iterator/requirements/explicit_instantiation.cc
! f68c31a0933df31488be52e8fe6c6e04  libstdc++-v3/testsuite/24_iterators/front_insert_iterator/requirements/typedefs.cc
! 4bd08c573deab9cbe690e9badf9fcef6  libstdc++-v3/testsuite/24_iterators/headers/iterator/range_access_c++11.cc
! e10b780eaacc1d29c19b359d7b3ffe5c  libstdc++-v3/testsuite/24_iterators/headers/iterator/range_access_c++14.cc
! 42b6fa2c2a795bfd4aff4978c7f82d13  libstdc++-v3/testsuite/24_iterators/headers/iterator/range_access_c++17.cc
! 361c132225a59d998ddcfcca04cd690b  libstdc++-v3/testsuite/24_iterators/headers/iterator/synopsis.cc
! ccc59a854d33f97027998b3c623697b5  libstdc++-v3/testsuite/24_iterators/headers/iterator/synopsis_c++11.cc
! 846cd45b220d42deb39c0ede4446fc90  libstdc++-v3/testsuite/24_iterators/headers/iterator/synopsis_c++14.cc
! b62247344edb4c86104fa1c833326b33  libstdc++-v3/testsuite/24_iterators/headers/iterator/synopsis_c++17.cc
! 62ce073884d9d7a1e695a835bc6ed9a1  libstdc++-v3/testsuite/24_iterators/headers/iterator/types_std.cc
! 0b7ea1fe28fd57c7a912ea1e99987911  libstdc++-v3/testsuite/24_iterators/insert_iterator/2.cc
! 01bb0f2bf6e1d700a1f712be6ea29b50  libstdc++-v3/testsuite/24_iterators/insert_iterator/requirements/base_classes.cc
! 063d80cd21e3f647c80bd2f609a5ec6b  libstdc++-v3/testsuite/24_iterators/insert_iterator/requirements/container.cc
! f431b7e92b43954b541a9d5b424574ae  libstdc++-v3/testsuite/24_iterators/insert_iterator/requirements/explicit_instantiation.cc
! 2eb594e60a2a10ebe445840aacbece9c  libstdc++-v3/testsuite/24_iterators/insert_iterator/requirements/typedefs.cc
! b148872fb981d9f080eaf7bd0f9b4431  libstdc++-v3/testsuite/24_iterators/istream_iterator/2.cc
! 9061c1599aa4ff73671172a3835de39e  libstdc++-v3/testsuite/24_iterators/istream_iterator/70766.cc
! 301611645b5a4eadcb7a794de03d55fb  libstdc++-v3/testsuite/24_iterators/istream_iterator/cons/constexpr.cc
! 2fac9068e5bb4c4b939ea4b53b1bf3e5  libstdc++-v3/testsuite/24_iterators/istream_iterator/requirements/base_classes.cc
! c09370efa0775deed9047fd3b5adffc9  libstdc++-v3/testsuite/24_iterators/istream_iterator/requirements/explicit_instantiation.cc
! 6b26ea9282e7f606cfbedca2cca9b354  libstdc++-v3/testsuite/24_iterators/istream_iterator/requirements/typedefs.cc
! 6acf5cc8683df1fabb22c5ef9634518c  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/2.cc
! 55b88e43e9c46cc687407d00b9f821a0  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/2627.cc
! 2750bcd65f093a69bf1adb3f2f559c88  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/cons/constexpr.cc
! d0889b02fb83e1637ad7061216327829  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/requirements/base_classes.cc
! d3db6c81845a67f9988e82be980f423e  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/requirements/dr445.cc
! 2778ca636f905e3074182ac7afbe5e40  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/requirements/explicit_instantiation.cc
! 08e108040dfc4d509874c8dc96a66c06  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/requirements/typedefs.cc
! 734bf4af8f1cca33fb515e4719613e00  libstdc++-v3/testsuite/24_iterators/move_iterator/dr2061.cc
! 8a1521d632bea34660f91fd6c1031129  libstdc++-v3/testsuite/24_iterators/move_iterator/dr2106.cc
! 43004911ccc79f2f2d131887fc1fc096  libstdc++-v3/testsuite/24_iterators/move_iterator/greedy_ops.cc
! 83e7f77d6b3b64f03c4f5f426b1dd822  libstdc++-v3/testsuite/24_iterators/normal_iterator/58403.cc
! fd1af1157eab0935dc050558e389c8d8  libstdc++-v3/testsuite/24_iterators/normal_iterator/greedy_ops.cc
! 05a606d1ca6d85a759fe7d369b98bbd5  libstdc++-v3/testsuite/24_iterators/operations/40497.cc
! 7ac8d7c1f57a53e94eb9441669f61b36  libstdc++-v3/testsuite/24_iterators/operations/next.cc
! ff4930e08938a57d7d994093433ab4f7  libstdc++-v3/testsuite/24_iterators/operations/next_neg.cc
! 8b29f8b1a82bf4d519bf70ff796bf849  libstdc++-v3/testsuite/24_iterators/operations/prev.cc
! b788e51191631503ef9568d86481be0c  libstdc++-v3/testsuite/24_iterators/operations/prev_neg.cc
! c8e60cfe55eae32b863d026ca1d51794  libstdc++-v3/testsuite/24_iterators/ostream_iterator/70766.cc
! cffbe8ae91a127b75a5da5991f84c5e2  libstdc++-v3/testsuite/24_iterators/ostream_iterator/requirements/base_classes.cc
! bbe2490fde2b4f471394d215d1a7e766  libstdc++-v3/testsuite/24_iterators/ostream_iterator/requirements/explicit_instantiation.cc
! 40590df1566879f7592e2f40d2668a86  libstdc++-v3/testsuite/24_iterators/ostream_iterator/requirements/typedefs.cc
! ebe35bf0f10b1aee944d668f6d380d0e  libstdc++-v3/testsuite/24_iterators/ostreambuf_iterator/2.cc
! bb4a1f44f67698ea77355e37056a067e  libstdc++-v3/testsuite/24_iterators/ostreambuf_iterator/requirements/base_classes.cc
! fc6e750a0b31973347ecbd0f8100260f  libstdc++-v3/testsuite/24_iterators/ostreambuf_iterator/requirements/explicit_instantiation.cc
! a3f863093c393a96e3babe9d4f5a6eca  libstdc++-v3/testsuite/24_iterators/ostreambuf_iterator/requirements/typedefs.cc
! 1ee73c1a4632426eb7b49586b3973a31  libstdc++-v3/testsuite/24_iterators/random_access_iterator/26020.cc
! 71834db3aa190afe1e26aef1b11b5353  libstdc++-v3/testsuite/24_iterators/random_access_iterator/string_vector_iterators.cc
! 9c5cbedc6735580a14a1f0c987912801  libstdc++-v3/testsuite/24_iterators/range_access.cc
! 3479cf2c6ead3f097d6cde66e5e55558  libstdc++-v3/testsuite/24_iterators/range_access_cpp14.cc
! 4756d17c884267bc7d07cc2660c4b810  libstdc++-v3/testsuite/24_iterators/range_access_cpp17.cc
! ce2fd005f113b32f8eec3f6e9dd5b456  libstdc++-v3/testsuite/24_iterators/reverse_iterator/11729.cc
! fe95b4473b24cb3ac6eb9418d798b954  libstdc++-v3/testsuite/24_iterators/reverse_iterator/2.cc
! 0c3308060c757b4abef673568222944c  libstdc++-v3/testsuite/24_iterators/reverse_iterator/3.cc
! 2ad38c6926c4f5a9ece89717f3671820  libstdc++-v3/testsuite/24_iterators/reverse_iterator/71771.cc
! 0757b66183bb119a255e1f51e63ff0d6  libstdc++-v3/testsuite/24_iterators/reverse_iterator/greedy_ops.cc
! 96f15c17b2bec668819a81c4fecff621  libstdc++-v3/testsuite/24_iterators/reverse_iterator/make.cc
! 43520a65d969a091a68dd251e9d1a50b  libstdc++-v3/testsuite/24_iterators/reverse_iterator/requirements/base_classes.cc
! 3598ca6027365e318abbce6fdaa34696  libstdc++-v3/testsuite/24_iterators/reverse_iterator/requirements/current.cc
! 46b57666753e9acc118b876d3357d3d3  libstdc++-v3/testsuite/24_iterators/reverse_iterator/requirements/explicit_instantiation.cc
! 85635aaf6b274d10e68f8d8c36249b8e  libstdc++-v3/testsuite/24_iterators/reverse_iterator/requirements/typedefs.cc
! 6ebff4e709d2a589e9675a83949d87c4  libstdc++-v3/testsuite/25_algorithms/adjacent_find/1.cc
! cd39ceaa173009da4ae0b24f7e950a98  libstdc++-v3/testsuite/25_algorithms/adjacent_find/check_type.cc
! 8a8baff2035ef4a26749df84fdc38c1b  libstdc++-v3/testsuite/25_algorithms/adjacent_find/requirements/explicit_instantiation/2.cc
! 6886d475059e7fa6abba0d9687fd0ac0  libstdc++-v3/testsuite/25_algorithms/adjacent_find/requirements/explicit_instantiation/pod.cc
! fead94e8146aaedebafa723daff501d4  libstdc++-v3/testsuite/25_algorithms/adjacent_find/vectorbool.cc
! 27ef08f5d80960b4b42d5202c66dbc2d  libstdc++-v3/testsuite/25_algorithms/all_of/1.cc
! 24c5f8475057856c8d350bd003d5d40a  libstdc++-v3/testsuite/25_algorithms/all_of/check_type.cc
! 1ee96396e61c3b0a6e4a3c063a4f971d  libstdc++-v3/testsuite/25_algorithms/all_of/requirements/explicit_instantiation/2.cc
! 756e42bd9a362c2c12e382b1acfc5326  libstdc++-v3/testsuite/25_algorithms/all_of/requirements/explicit_instantiation/pod.cc
! 61f60307c1144d36e1181fde43626fca  libstdc++-v3/testsuite/25_algorithms/any_of/1.cc
! 68b4b9b2fff6f13dca868bccc7d054f8  libstdc++-v3/testsuite/25_algorithms/any_of/check_type.cc
! d4c5e565be85a912b4860ea684fa7823  libstdc++-v3/testsuite/25_algorithms/any_of/requirements/explicit_instantiation/2.cc
! 51d185b83e1e4b90eec527d83a9ac763  libstdc++-v3/testsuite/25_algorithms/any_of/requirements/explicit_instantiation/pod.cc
! 9bc990f30403b9388d6993742cecd557  libstdc++-v3/testsuite/25_algorithms/binary_search/1.cc
! 6c75f6f3f51e640e047884d238ea07d8  libstdc++-v3/testsuite/25_algorithms/binary_search/2.cc
! d44ee971413573894e8c5c4472175aa3  libstdc++-v3/testsuite/25_algorithms/binary_search/check_type.cc
! 3ecb8c5c743b895177f691a6785a4c20  libstdc++-v3/testsuite/25_algorithms/binary_search/partitioned.cc
! e70ad53cf01f0607950136ced88f9ec0  libstdc++-v3/testsuite/25_algorithms/binary_search/requirements/explicit_instantiation/2.cc
! 5cb7235e7636a99e92f55d03d6f97d81  libstdc++-v3/testsuite/25_algorithms/binary_search/requirements/explicit_instantiation/pod.cc
! 4f1527a16b482b686a179cfa126d478b  libstdc++-v3/testsuite/25_algorithms/clamp/1.cc
! 74d66acd5a3dd5cc98e4d869e650f8e3  libstdc++-v3/testsuite/25_algorithms/clamp/2.cc
! be68fc8457ee930f2a62fe2fe0aad42d  libstdc++-v3/testsuite/25_algorithms/clamp/constexpr.cc
! e7427101453ba6fc6e696ef68567ea27  libstdc++-v3/testsuite/25_algorithms/clamp/requirements/explicit_instantiation/1.cc
! 39b867c7805bd8d84b60aa35089dd001  libstdc++-v3/testsuite/25_algorithms/clamp/requirements/explicit_instantiation/pod.cc
! 81d84f9ff3300bb33c2cab46b577c5b6  libstdc++-v3/testsuite/25_algorithms/copy/1.cc
! 1c61a7d33f3ac961e8fc1846f48e0fe5  libstdc++-v3/testsuite/25_algorithms/copy/2.cc
! a18ab2819654e1b238fca70c2e16483d  libstdc++-v3/testsuite/25_algorithms/copy/3.cc
! c7ded59568b9226399892926b3526c4b  libstdc++-v3/testsuite/25_algorithms/copy/34595.cc
! e64bd911fbef4cf64dcd4b6a3096985e  libstdc++-v3/testsuite/25_algorithms/copy/4.cc
! f4187f1680c48d9ce78b014200ad2878  libstdc++-v3/testsuite/25_algorithms/copy/58982.cc
  a4e3b919e921272cb082f7fa810f39d2  libstdc++-v3/testsuite/25_algorithms/copy/deque_iterators/1.cc
! 237b94638f8c69d3327bbd2254a77612  libstdc++-v3/testsuite/25_algorithms/copy/move_iterators/1.cc
! 29291d517796fdcead39e58a3646a4c4  libstdc++-v3/testsuite/25_algorithms/copy/move_iterators/69478.cc
! ba59aca054c28154877446d6b37aa64f  libstdc++-v3/testsuite/25_algorithms/copy/requirements/explicit_instantiation/2.cc
! 2d497625027f9cb8587ee5695bf137ff  libstdc++-v3/testsuite/25_algorithms/copy/requirements/explicit_instantiation/pod.cc
! 6aeff641ae6f6235bc6fcbb35bfb1c5e  libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/1.cc
! e14566a83daa02ef7a5e01164af6a51c  libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/2.cc
! bca72ce03cbdd1ec8e96ce240d6f23dd  libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/3.cc
! 5939eecd077ca7098329330888eb096b  libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/4.cc
! 816c745c80c49b59d1c1dccfb6308e59  libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/1.cc
! d36bebd81836acdaf10955b3469e9b7b  libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/2.cc
! 4740d6ad094f9152e48bc5053493790e  libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/3.cc
! 20b8b7a46b0b4ec71c4cf12fddb9539e  libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/4.cc
  da1fb78d5a3cd469ddf537052865be96  libstdc++-v3/testsuite/25_algorithms/copy_backward/deque_iterators/1.cc
! 800ccb0fdd14422b79a688b646d8b266  libstdc++-v3/testsuite/25_algorithms/copy_backward/move_iterators/1.cc
! 52e65598a7b68d49a86397c349c0a284  libstdc++-v3/testsuite/25_algorithms/copy_backward/move_iterators/69478.cc
! a5eca0fb1ec6984445fbd8439c44d3a2  libstdc++-v3/testsuite/25_algorithms/copy_backward/requirements/explicit_instantiation/2.cc
! 6b859557c5b82ed70c5a2d08d73e8d72  libstdc++-v3/testsuite/25_algorithms/copy_backward/requirements/explicit_instantiation/pod.cc
! 2f8454619e5144af8ed0e717d9401bbe  libstdc++-v3/testsuite/25_algorithms/copy_if/check_type.cc
! 1b68f106e2df9c2515dc9fb803676eb4  libstdc++-v3/testsuite/25_algorithms/copy_if/requirements/explicit_instantiation/2.cc
! 8706533e5a957c585ecbe279fdff3122  libstdc++-v3/testsuite/25_algorithms/copy_if/requirements/explicit_instantiation/pod.cc
! ca2038c887cc834074342f96246faa68  libstdc++-v3/testsuite/25_algorithms/copy_n/1.cc
! ceeee7bf3fee5516f4fe534195ce1759  libstdc++-v3/testsuite/25_algorithms/copy_n/2.cc
! 705c2043a80ebbf24106a48fdde3d879  libstdc++-v3/testsuite/25_algorithms/copy_n/3.cc
! 1072f49034d171193e4960a24a864a1b  libstdc++-v3/testsuite/25_algorithms/copy_n/4.cc
! d2e13a0eb7289831a1fe1f966c8d14a7  libstdc++-v3/testsuite/25_algorithms/copy_n/50119.cc
! d41699100b4bade47783b128d20493e3  libstdc++-v3/testsuite/25_algorithms/copy_n/58982.cc
! b576c593bf48e4e404de3eb3a4784859  libstdc++-v3/testsuite/25_algorithms/copy_n/move_iterators/1.cc
! 19d13ef4c9896142676109862997ebf9  libstdc++-v3/testsuite/25_algorithms/copy_n/requirements/explicit_instantiation/2.cc
! ce5aab269056dab6927c18e3492fed4e  libstdc++-v3/testsuite/25_algorithms/copy_n/requirements/explicit_instantiation/pod.cc
! 74f657b008daf92e0ecfe64fd7cc13f6  libstdc++-v3/testsuite/25_algorithms/count/1.cc
! 99deaaf3a3e807a888ab583f18a2db15  libstdc++-v3/testsuite/25_algorithms/count/check_type.cc
! 273f506bf53d128b3b74acca2e254b7e  libstdc++-v3/testsuite/25_algorithms/count/requirements/explicit_instantiation/2.cc
! 6a3560d854e4889ac749cd14ca360f41  libstdc++-v3/testsuite/25_algorithms/count/requirements/explicit_instantiation/pod.cc
! 22e540a9febf7a2f1f3214eeef19bc1c  libstdc++-v3/testsuite/25_algorithms/count_if/1.cc
! 784eddb9b7496684fc2e41663e472203  libstdc++-v3/testsuite/25_algorithms/count_if/check_type.cc
! 83aad12bf023e13b5f8807fb3087ed17  libstdc++-v3/testsuite/25_algorithms/count_if/requirements/explicit_instantiation/2.cc
! 650a3fc92b171f15c16ab5162a2299d9  libstdc++-v3/testsuite/25_algorithms/count_if/requirements/explicit_instantiation/pod.cc
! 008ee57abeeacb325656c3464a9d2c5a  libstdc++-v3/testsuite/25_algorithms/equal/1.cc
! 58c8534d6a7c7db132d8e6139163954c  libstdc++-v3/testsuite/25_algorithms/equal/2.cc
! 62ff7b33aa98fef1efd7205f8d1a0a73  libstdc++-v3/testsuite/25_algorithms/equal/check_type.cc
! 6776ec20e774b16e35804753e6103aa1  libstdc++-v3/testsuite/25_algorithms/equal/check_type2.cc
! 64ca514a5370adec254569bbca28797d  libstdc++-v3/testsuite/25_algorithms/equal/no_operator_ne.cc
! c4a6bf9f1c1fcf046ea35aa0a296e84a  libstdc++-v3/testsuite/25_algorithms/equal/requirements/explicit_instantiation/2.cc
! fc964fec806daa42162ada3820e54676  libstdc++-v3/testsuite/25_algorithms/equal/requirements/explicit_instantiation/pod.cc
! cf98f079cbe5bd12c5e8ef49da1c2f34  libstdc++-v3/testsuite/25_algorithms/equal_range/1.cc
! ea17d102efbd6f724efcad6de3692c91  libstdc++-v3/testsuite/25_algorithms/equal_range/2.cc
! 61700699710ece63e779ec6272836eb9  libstdc++-v3/testsuite/25_algorithms/equal_range/check_type.cc
! f7cb763e7ef2ec93a7453fcd27f59a55  libstdc++-v3/testsuite/25_algorithms/equal_range/partitioned.cc
! 19045ea4c60a19151d6e8c37d0c6c08e  libstdc++-v3/testsuite/25_algorithms/equal_range/requirements/explicit_instantiation/2.cc
! f9a4384f9bff9eadd6f97a767cf41637  libstdc++-v3/testsuite/25_algorithms/equal_range/requirements/explicit_instantiation/pod.cc
! 7be9631d795a839f3e93b60b6af4146c  libstdc++-v3/testsuite/25_algorithms/fill/1.cc
! d5c400d48a492a3126b122a375b836c1  libstdc++-v3/testsuite/25_algorithms/fill/2.cc
! 59e63e8927d8ac6f63920d33691c42cf  libstdc++-v3/testsuite/25_algorithms/fill/3.cc
! bdc68c0483cca8ad50b554e37b968a9f  libstdc++-v3/testsuite/25_algorithms/fill/35725.cc
! 479af4ce7ebcead1551dd4fa74cafbff  libstdc++-v3/testsuite/25_algorithms/fill/4.cc
! e458c2df7210c5783352f83106023f8a  libstdc++-v3/testsuite/25_algorithms/fill/requirements/explicit_instantiation/2.cc
! e63a9faef7d6f28f0cfe5cce2c64134b  libstdc++-v3/testsuite/25_algorithms/fill/requirements/explicit_instantiation/pod.cc
! d96339f4b9fee3c0755d75c4d8cdd7e4  libstdc++-v3/testsuite/25_algorithms/fill_n/1.cc
! 5e6d1e1ef11e04614dc16ae8d84dd1dc  libstdc++-v3/testsuite/25_algorithms/fill_n/25306.cc
! 866201ae802ec9a99733a18ec3cd45d3  libstdc++-v3/testsuite/25_algorithms/fill_n/35725.cc
! c4a6bf9f1c1fcf046ea35aa0a296e84a  libstdc++-v3/testsuite/25_algorithms/fill_n/requirements/explicit_instantiation/2.cc
! fc964fec806daa42162ada3820e54676  libstdc++-v3/testsuite/25_algorithms/fill_n/requirements/explicit_instantiation/pod.cc
! 3d88b176fc15b9fc7d78076504c5c296  libstdc++-v3/testsuite/25_algorithms/find/1.cc
! af3fd4c00fa154fcf64c28e4bffe6169  libstdc++-v3/testsuite/25_algorithms/find/17441.cc
! 606dd5723e1670c0fd1caa64c61014ef  libstdc++-v3/testsuite/25_algorithms/find/39546.cc
! 196e59231e973ec7412f5f2aae193057  libstdc++-v3/testsuite/25_algorithms/find/check_type.cc
! a2ab3ba2c319069bf3deb10e7a531d5d  libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/char/1.cc
! 2cf6fc36ab6639ed683e38e1b6010048  libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/char/2.cc
! d36e01d42248e34149878f49d472a320  libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/wchar_t/1.cc
! 2a8540fa4e5d95e2113c9d80189110e0  libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/wchar_t/2.cc
! 88b8045b47f0d9abe1b0bbcb21172d56  libstdc++-v3/testsuite/25_algorithms/find/requirements/explicit_instantiation/2.cc
! e72dc1c6d7a2ae7c9dc94ed1748616d6  libstdc++-v3/testsuite/25_algorithms/find/requirements/explicit_instantiation/pod.cc
! ea3067ff9d93278e7ae3ccbfb87aa9c0  libstdc++-v3/testsuite/25_algorithms/find/vectorbool.cc
! 7278c3b293fc39506e9a9af6e9d5ded2  libstdc++-v3/testsuite/25_algorithms/find_end/1.cc
! ff3a88c44bb5f92460c76d6ed3e81797  libstdc++-v3/testsuite/25_algorithms/find_end/check_type.cc
! e9bf6be83da45f686543dcdae5b301df  libstdc++-v3/testsuite/25_algorithms/find_end/requirements/explicit_instantiation/2.cc
! 7764f1b239fe243c0fb54871e3a2a496  libstdc++-v3/testsuite/25_algorithms/find_end/requirements/explicit_instantiation/pod.cc
! 26f13354466e50f6b74bf7d00cc652e4  libstdc++-v3/testsuite/25_algorithms/find_end/vectorbool.cc
! 035bd7017e219765c58a7715027d1e5e  libstdc++-v3/testsuite/25_algorithms/find_first_of/1.cc
! 62b44e89e59927676a90aa00b81aef2c  libstdc++-v3/testsuite/25_algorithms/find_first_of/check_type.cc
! 926beefc51fc650974906e4bc220832f  libstdc++-v3/testsuite/25_algorithms/find_first_of/concept_check_1.cc
! c14c5d2cdda800b0ed33927fa3b40dc1  libstdc++-v3/testsuite/25_algorithms/find_first_of/requirements/explicit_instantiation/2.cc
! 3baeeda71c70e7e410cc7ac391cf5137  libstdc++-v3/testsuite/25_algorithms/find_first_of/requirements/explicit_instantiation/pod.cc
! 81bec1cdc686fd0b09f5479657f5c22e  libstdc++-v3/testsuite/25_algorithms/find_first_of/vectorbool.cc
! ed10d8101263153a9159f3cb42a31f9a  libstdc++-v3/testsuite/25_algorithms/find_if/1.cc
! b891e4a78fa023541a9466c6c587ce5a  libstdc++-v3/testsuite/25_algorithms/find_if/check_type.cc
! ecf69d4a6b9d153d33fb13ac10897b24  libstdc++-v3/testsuite/25_algorithms/find_if/requirements/explicit_instantiation/2.cc
! e023f36900fab4cbc5ca98cebfa56fd3  libstdc++-v3/testsuite/25_algorithms/find_if/requirements/explicit_instantiation/pod.cc
! ea3067ff9d93278e7ae3ccbfb87aa9c0  libstdc++-v3/testsuite/25_algorithms/find_if/vectorbool.cc
! a981d6120bad5d5ca6569238034fcce6  libstdc++-v3/testsuite/25_algorithms/find_if_not/1.cc
! 6d9423436c118fb4a0d8d0a18c300b3b  libstdc++-v3/testsuite/25_algorithms/find_if_not/check_type.cc
! 6341035dabd2de04bc2a6defd94c3747  libstdc++-v3/testsuite/25_algorithms/find_if_not/requirements/explicit_instantiation/2.cc
! 3ebdbfa7b5e961cbfdc0392cc5ac8495  libstdc++-v3/testsuite/25_algorithms/find_if_not/requirements/explicit_instantiation/pod.cc
! dc61607b34993817ee3e0765b0c469fa  libstdc++-v3/testsuite/25_algorithms/find_if_not/vectorbool.cc
! f01b35c7dbfc16a2c54bb04ddebfc0ba  libstdc++-v3/testsuite/25_algorithms/for_each/1.cc
! 8455ab2c4a590a355cea102e671cf05a  libstdc++-v3/testsuite/25_algorithms/for_each/requirements/explicit_instantiation/2.cc
! 6b15d9f1a1b61b53d406c3b7a2ca48b6  libstdc++-v3/testsuite/25_algorithms/for_each/requirements/explicit_instantiation/pod.cc
! 767fa3fd77e83f17d79173b99c1df30a  libstdc++-v3/testsuite/25_algorithms/generate/requirements/explicit_instantiation/2.cc
! c870f28da62a6e7bbfef9ff6f70c26b6  libstdc++-v3/testsuite/25_algorithms/generate/requirements/explicit_instantiation/pod.cc
! 81a8f919942216540ff7a3fcf834bc54  libstdc++-v3/testsuite/25_algorithms/generate_n/25306.cc
! f6120d71d12fbbab92ce1b55fc8d152a  libstdc++-v3/testsuite/25_algorithms/generate_n/requirements/explicit_instantiation/2.cc
! 9e87a374719d19cce612bffe2c61729a  libstdc++-v3/testsuite/25_algorithms/generate_n/requirements/explicit_instantiation/pod.cc
! 6ffb4c095900d6fe21aebe7f026e5db7  libstdc++-v3/testsuite/25_algorithms/headers/algorithm/algorithm_parallel_mode.cc
! 1230a454739e875856193ebae95ff81d  libstdc++-v3/testsuite/25_algorithms/headers/algorithm/parallel_algorithm.cc
! 059d802182d38f88389a2f647aaf63a1  libstdc++-v3/testsuite/25_algorithms/headers/algorithm/parallel_algorithm_assert.cc
! 8d7ba334063e17c05a4e62bfbab16ea2  libstdc++-v3/testsuite/25_algorithms/headers/algorithm/parallel_algorithm_assert2.cc
! 6fe959a7418535f88950e71f5dc58d23  libstdc++-v3/testsuite/25_algorithms/headers/algorithm/parallel_algorithm_mixed1.cc
! a283fd3f7587528b3c80e47ee05d6085  libstdc++-v3/testsuite/25_algorithms/headers/algorithm/parallel_algorithm_mixed2.cc
! b707da048430b3eb887b25deccdc9a17  libstdc++-v3/testsuite/25_algorithms/headers/algorithm/synopsis.cc
! 72e29838980f1da8deb8beb3086e9261  libstdc++-v3/testsuite/25_algorithms/headers/cstdlib/functions_std.cc
! ff3d3f7c2720583096401eb1587793cf  libstdc++-v3/testsuite/25_algorithms/heap/1.cc
! b9a0fee57f326e155bb298e102feae9a  libstdc++-v3/testsuite/25_algorithms/heap/moveable.cc
! e0c14ab283e90fd9b6628828420286a6  libstdc++-v3/testsuite/25_algorithms/heap/moveable2.cc
! 202cb25f51ec2d464d33e609fec411e6  libstdc++-v3/testsuite/25_algorithms/heap/vectorbool.cc
! b7e2e2ff7f5fd91a3b53a34a2f3a16c5  libstdc++-v3/testsuite/25_algorithms/includes/1.cc
! be67fd5efc8220d876690052b562ddfd  libstdc++-v3/testsuite/25_algorithms/includes/check_type.cc
! 92b973509f5b608bc5ec9b30bc4933eb  libstdc++-v3/testsuite/25_algorithms/includes/requirements/explicit_instantiation/2.cc
! da5308d1d39951b4df88e3fe113f8a2e  libstdc++-v3/testsuite/25_algorithms/includes/requirements/explicit_instantiation/pod.cc
! daa8157c5e94b4f73402bf688dbc14fe  libstdc++-v3/testsuite/25_algorithms/inplace_merge/1.cc
! 0c7577135415fa750b88a858d2df1bf9  libstdc++-v3/testsuite/25_algorithms/inplace_merge/49559.cc
! dafcb6d6d3aa26e06f555f5ba6d5bb88  libstdc++-v3/testsuite/25_algorithms/inplace_merge/check_type.cc
! fe47d3735083a4fed93cddc6d18a6e6b  libstdc++-v3/testsuite/25_algorithms/inplace_merge/moveable.cc
! 10f41dba474e6332369d03e481b6a162  libstdc++-v3/testsuite/25_algorithms/inplace_merge/moveable2.cc
! 7d6d56bd58a805f1df7f61b9d482b28e  libstdc++-v3/testsuite/25_algorithms/inplace_merge/requirements/explicit_instantiation/2.cc
! 85fc8930512e24f5d6154d0423f67d94  libstdc++-v3/testsuite/25_algorithms/inplace_merge/requirements/explicit_instantiation/pod.cc
! 1c4a2a4447d1eb9fd825d8c0c7739a4c  libstdc++-v3/testsuite/25_algorithms/is_heap/1.cc
! c0669108a8b9130281b7a26e2a7689cb  libstdc++-v3/testsuite/25_algorithms/is_heap/requirements/explicit_instantiation/2.cc
! 0d30a86ca9d033fe09ac0ba12b0975a1  libstdc++-v3/testsuite/25_algorithms/is_heap/requirements/explicit_instantiation/pod.cc
! 88cf9b9afb00ac23c058748a440a3a50  libstdc++-v3/testsuite/25_algorithms/is_heap_until/1.cc
! eb8540536834409d273c506891e02dd4  libstdc++-v3/testsuite/25_algorithms/is_heap_until/requirements/explicit_instantiation/2.cc
! 0e818516f41254ac9880293d42d64cc0  libstdc++-v3/testsuite/25_algorithms/is_heap_until/requirements/explicit_instantiation/pod.cc
! 78ba1109e075e80c6e3db0dd6729b313  libstdc++-v3/testsuite/25_algorithms/is_partitioned/1.cc
! 9080db20e985ebac3afaffb37094b6ef  libstdc++-v3/testsuite/25_algorithms/is_partitioned/2.cc
! 2a835a9d104f556cbd0205dd81fe318f  libstdc++-v3/testsuite/25_algorithms/is_partitioned/check_type.cc
! 0165719d4659969252686f3b04e9bede  libstdc++-v3/testsuite/25_algorithms/is_partitioned/requirements/explicit_instantiation/2.cc
! c9490ebf0beb80955dc61d3f4c2455fe  libstdc++-v3/testsuite/25_algorithms/is_partitioned/requirements/explicit_instantiation/pod.cc
! aaad005f5750ede3759a267447d6300a  libstdc++-v3/testsuite/25_algorithms/is_permutation/1.cc
! 6a224339db108f0d1091d2d82ec794d4  libstdc++-v3/testsuite/25_algorithms/is_permutation/2.cc
! 2ec2250552ecf0289a2ba7840aa06784  libstdc++-v3/testsuite/25_algorithms/is_permutation/64646.cc
! 68be678fc62077e7eb6c839ae8e67a04  libstdc++-v3/testsuite/25_algorithms/is_permutation/check_type.cc
! 68fb21980dd55124c700103302a3dcb3  libstdc++-v3/testsuite/25_algorithms/is_permutation/check_type2.cc
! 64bba431b7f3e12cd03f9dee45f30e4a  libstdc++-v3/testsuite/25_algorithms/is_permutation/requirements/explicit_instantiation/2.cc
! 15fde70b574c0d689924b7e47dbffa6c  libstdc++-v3/testsuite/25_algorithms/is_permutation/requirements/explicit_instantiation/pod.cc
! fa245e68d120447a4d0fd50fc0e7d936  libstdc++-v3/testsuite/25_algorithms/is_permutation/vectorbool.cc
! 51de1043020c5fd61376b8837ba49c5d  libstdc++-v3/testsuite/25_algorithms/is_sorted/1.cc
! dede0717b0a3e37b3b00ed48b46af0e3  libstdc++-v3/testsuite/25_algorithms/is_sorted/requirements/explicit_instantiation/2.cc
! 99d7846488960632d03f42e205f6c620  libstdc++-v3/testsuite/25_algorithms/is_sorted/requirements/explicit_instantiation/pod.cc
! 15b610e09541440ebb5a0f969fdbaf39  libstdc++-v3/testsuite/25_algorithms/is_sorted_until/1.cc
! 8a8ebc9f7f1905eaa6ea27ac5b02b3c2  libstdc++-v3/testsuite/25_algorithms/is_sorted_until/requirements/explicit_instantiation/2.cc
! b07212700921b8520e9b08f88f3734c4  libstdc++-v3/testsuite/25_algorithms/is_sorted_until/requirements/explicit_instantiation/pod.cc
! 84ec5befe41d826af28769f543af0dd9  libstdc++-v3/testsuite/25_algorithms/iter_swap/20577.cc
! d3d20ce91e336a0909c7f62e0a9f1b4e  libstdc++-v3/testsuite/25_algorithms/iter_swap/requirements/explicit_instantiation/2.cc
! 9147405ed3ca16bd1f67943fda3190a0  libstdc++-v3/testsuite/25_algorithms/iter_swap/requirements/explicit_instantiation/pod.cc
! 60cb850906289a7e21aa28669f8f2fb8  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/1.cc
! af5a145d39d352a19cf3a438e2197b2e  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/71545.cc
! 03207ed6558468d9422de642352677b3  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/check_type.cc
! fdc98ddd4b4ac1f0cc65901333d5b7f0  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/requirements/explicit_instantiation/2.cc
! dbb336416987b3cb5018a00377fffd25  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/requirements/explicit_instantiation/pod.cc
! bd64c70d6fe3a641c0a60464265f33c9  libstdc++-v3/testsuite/25_algorithms/lower_bound/1.cc
! 0e62a49bfb6afd9960d07b34caf01e6b  libstdc++-v3/testsuite/25_algorithms/lower_bound/2.cc
! 739be6ecc711e827d9430fdebf48b751  libstdc++-v3/testsuite/25_algorithms/lower_bound/33613.cc
! 81846d5adb1e8ac3f305911d9ce8ff0c  libstdc++-v3/testsuite/25_algorithms/lower_bound/check_type.cc
! 02f38dc3e5645ee9adf1a5bb3fe4fcdd  libstdc++-v3/testsuite/25_algorithms/lower_bound/debug/irreflexive.cc
! 3b7339c192282f61a81a9d88eda1280d  libstdc++-v3/testsuite/25_algorithms/lower_bound/no_operator_ne.cc
! c91a895e9de721c51980295549a14ecd  libstdc++-v3/testsuite/25_algorithms/lower_bound/partitioned.cc
! 3e517db9e6da2848b51d017d557691e7  libstdc++-v3/testsuite/25_algorithms/lower_bound/requirements/explicit_instantiation/2.cc
! 592c585dfe2e74f649c096d4e5f839eb  libstdc++-v3/testsuite/25_algorithms/lower_bound/requirements/explicit_instantiation/pod.cc
! d9745d9dc0c950b5fff99ba0239b6876  libstdc++-v3/testsuite/25_algorithms/make_heap/80064.cc
! c2f560002cabd43f2e4e1c76ab5e5bc7  libstdc++-v3/testsuite/25_algorithms/make_heap/complexity.cc
! 0f1a687249da753ad21f60b76141a1eb  libstdc++-v3/testsuite/25_algorithms/make_heap/movable.cc
! 0468bf10dc1891a51e842c685ca44402  libstdc++-v3/testsuite/25_algorithms/make_heap/requirements/explicit_instantiation/2.cc
! 36c361581b9d861d6d90843486c9b963  libstdc++-v3/testsuite/25_algorithms/make_heap/requirements/explicit_instantiation/pod.cc
! fca8ecffa6a15cd71879b3ab053f50a9  libstdc++-v3/testsuite/25_algorithms/max/1.cc
! c659bb2a1b1bdcd47850b5ffdacfef0b  libstdc++-v3/testsuite/25_algorithms/max/2.cc
! 0876379a33885b07aaed3abfdb746787  libstdc++-v3/testsuite/25_algorithms/max/3.cc
! 8a9d15015933b48cb7667402d0db98a0  libstdc++-v3/testsuite/25_algorithms/max/37547.cc
! 1f0b94f0d11a19c7f1591412543e00a1  libstdc++-v3/testsuite/25_algorithms/max/4.cc
! 389a05e1315d011fd6b02cbee6eaf69f  libstdc++-v3/testsuite/25_algorithms/max/constexpr.cc
! b6b3fe1d4658d89534b2d473a57adf0b  libstdc++-v3/testsuite/25_algorithms/max/requirements/explicit_instantiation/2.cc
! 10f47b3242388322e8a370b12d039e8b  libstdc++-v3/testsuite/25_algorithms/max/requirements/explicit_instantiation/3.cc
! e9b2275f85eccb73f21c205d72a6dbe8  libstdc++-v3/testsuite/25_algorithms/max/requirements/explicit_instantiation/pod.cc
! c4d043cb8f9eeae31403dcac17636ec1  libstdc++-v3/testsuite/25_algorithms/max/requirements/explicit_instantiation/pod2.cc
! 43e15f10e92255f0f130a138c0eba0b4  libstdc++-v3/testsuite/25_algorithms/max_element/1.cc
! c76b2b780c1274a58739d5d8ce76a0c7  libstdc++-v3/testsuite/25_algorithms/max_element/check_type.cc
! c050ed7f0749f3c651dcc39562d65840  libstdc++-v3/testsuite/25_algorithms/max_element/constexpr.cc
! d39ec6aa1032cab7f392a20605f70bcf  libstdc++-v3/testsuite/25_algorithms/max_element/requirements/explicit_instantiation/2.cc
! db8d0f6253dbc84896ef2130fee00f99  libstdc++-v3/testsuite/25_algorithms/max_element/requirements/explicit_instantiation/pod.cc
! 514d1785e78fff00bcac73b3aed5a81e  libstdc++-v3/testsuite/25_algorithms/merge/1.cc
! 846ee288c09b9817aeb475fde06e348f  libstdc++-v3/testsuite/25_algorithms/merge/check_type.cc
! 615e0905668ed87045872961ebd3d688  libstdc++-v3/testsuite/25_algorithms/merge/requirements/explicit_instantiation/2.cc
! f4367e7d3db02a0821c6694e3aed8359  libstdc++-v3/testsuite/25_algorithms/merge/requirements/explicit_instantiation/pod.cc
! 3d2a41b37c94805b91e9690da271d981  libstdc++-v3/testsuite/25_algorithms/min/1.cc
! 01fe8b83cc312c4876876e2f37094915  libstdc++-v3/testsuite/25_algorithms/min/2.cc
! b0cf398f347fdf7d4f8234dbaa6accfa  libstdc++-v3/testsuite/25_algorithms/min/3.cc
! a933391762977f0b60876cdda254207e  libstdc++-v3/testsuite/25_algorithms/min/37547.cc
! a2bf498a4ec5f52990f8fc0329d0e445  libstdc++-v3/testsuite/25_algorithms/min/4.cc
! d12729a901bb5187db048522e2e09207  libstdc++-v3/testsuite/25_algorithms/min/constexpr.cc
! 32bd1d160aa09b0b9978edd306a3473e  libstdc++-v3/testsuite/25_algorithms/min/requirements/explicit_instantiation/2.cc
! 3bf95e01163a7d98212ba7a06f26bb16  libstdc++-v3/testsuite/25_algorithms/min/requirements/explicit_instantiation/3.cc
! 0d2e9318d8ca386a8180688b391106e5  libstdc++-v3/testsuite/25_algorithms/min/requirements/explicit_instantiation/pod.cc
! 1b167036b71a9d1a734275f1346f6106  libstdc++-v3/testsuite/25_algorithms/min/requirements/explicit_instantiation/pod2.cc
! 6acadb5231b4ce0793c3b2dd98d5295c  libstdc++-v3/testsuite/25_algorithms/min_element/1.cc
! 97c4f3c7deecbd0d8a039bbe8048c2ae  libstdc++-v3/testsuite/25_algorithms/min_element/check_type.cc
! f3be03785e631ef62a3532fa4c5d0cc7  libstdc++-v3/testsuite/25_algorithms/min_element/constexpr.cc
! 380167e9847c968c8ef36e5d72e25a81  libstdc++-v3/testsuite/25_algorithms/min_element/requirements/explicit_instantiation/2.cc
! 1057285ff94c1baa6591548fdf974300  libstdc++-v3/testsuite/25_algorithms/min_element/requirements/explicit_instantiation/pod.cc
! 2fe61012e7392fb8647f250b8c9dda15  libstdc++-v3/testsuite/25_algorithms/minmax/1.cc
! f50e97c70c0a992097c70a7e4e90576a  libstdc++-v3/testsuite/25_algorithms/minmax/2.cc
! 3431caf793de5fa6b7699ef3878db237  libstdc++-v3/testsuite/25_algorithms/minmax/3.cc
! d4c048ca11b472a9f235106da42998bb  libstdc++-v3/testsuite/25_algorithms/minmax/37547.cc
! cad687abbc478e8a7f9c4092424215d8  libstdc++-v3/testsuite/25_algorithms/minmax/constexpr.cc
! 47417a7f1be8da27799c4ea36afb9ba3  libstdc++-v3/testsuite/25_algorithms/minmax/requirements/explicit_instantiation/2.cc
! 39b68b0617f5d381460004998f781d95  libstdc++-v3/testsuite/25_algorithms/minmax/requirements/explicit_instantiation/3.cc
! ff13040593481577b9be37d8cd60f744  libstdc++-v3/testsuite/25_algorithms/minmax/requirements/explicit_instantiation/pod.cc
! 8dae87be87859b6b57a82e55c12956e5  libstdc++-v3/testsuite/25_algorithms/minmax/requirements/explicit_instantiation/pod2.cc
! c4f0f17b5dd39c5dac11391feec1d6db  libstdc++-v3/testsuite/25_algorithms/minmax_element/1.cc
! 8b4cbc62b56a4cdd71bc445a6e159c0e  libstdc++-v3/testsuite/25_algorithms/minmax_element/check_type.cc
! 5179f1c254376cc541e6a81de98a1f79  libstdc++-v3/testsuite/25_algorithms/minmax_element/constexpr.cc
! c9a5cbf4fdfa48e860299dc3c6589e69  libstdc++-v3/testsuite/25_algorithms/minmax_element/requirements/explicit_instantiation/2.cc
! d54844734b2866130dec6394c482c613  libstdc++-v3/testsuite/25_algorithms/minmax_element/requirements/explicit_instantiation/pod.cc
! 398511437a78ac84f2e3b5c5c8656ce0  libstdc++-v3/testsuite/25_algorithms/mismatch/1.cc
! ce90120d4df366d74ee314d09c7c0d7f  libstdc++-v3/testsuite/25_algorithms/mismatch/2.cc
! e73ac5d3eee0b0d406c524c24cefff9a  libstdc++-v3/testsuite/25_algorithms/mismatch/check_type.cc
! 8b7d878090d70e3c6ee8584e39a4a71d  libstdc++-v3/testsuite/25_algorithms/mismatch/check_type2.cc
! 6ed9dce5f3ac921ff4fcca4788fa16cb  libstdc++-v3/testsuite/25_algorithms/move/1.cc
! 3c1d99023ddcaa8657fe8e8884357c99  libstdc++-v3/testsuite/25_algorithms/move/69478.cc
  c41fedc68e3cee79d652221a1c6b2c9a  libstdc++-v3/testsuite/25_algorithms/move/deque_iterators/1.cc
! 176793ba4ab082e0eb4f57aa0c78aa1e  libstdc++-v3/testsuite/25_algorithms/move/requirements/explicit_instantiation/2.cc
! 303622e320073388db49d11bcdef3c19  libstdc++-v3/testsuite/25_algorithms/move/requirements/explicit_instantiation/pod.cc
! b33e4730218363e9a0c4771746efa17a  libstdc++-v3/testsuite/25_algorithms/move_backward/1.cc
! 0cde92d47205d3ce27d623cba1384573  libstdc++-v3/testsuite/25_algorithms/move_backward/69478.cc
  d798b4d62b339492aca582244b60767f  libstdc++-v3/testsuite/25_algorithms/move_backward/deque_iterators/1.cc
! db2313b75a882eb3e3f76a9ddaac0acd  libstdc++-v3/testsuite/25_algorithms/move_backward/requirements/explicit_instantiation/2.cc
! 2784c93d81a8796643f5329e570487a8  libstdc++-v3/testsuite/25_algorithms/move_backward/requirements/explicit_instantiation/pod.cc
! 74edb1a6bb379465117fefd792f9fd66  libstdc++-v3/testsuite/25_algorithms/next_permutation/1.cc
! 484fafb23bb6008b3a09b3fe5db299df  libstdc++-v3/testsuite/25_algorithms/next_permutation/check_type.cc
! fd36af0352b2c65bcae7a894d6a56e9b  libstdc++-v3/testsuite/25_algorithms/next_permutation/moveable.cc
! 2597f9114a9e690bd380c16992d1ed2d  libstdc++-v3/testsuite/25_algorithms/next_permutation/requirements/explicit_instantiation/2.cc
! a30984dde94de46a8e7f327f238e1324  libstdc++-v3/testsuite/25_algorithms/next_permutation/requirements/explicit_instantiation/pod.cc
! 7eff908a0844a112aa808fa2db50b90c  libstdc++-v3/testsuite/25_algorithms/none_of/1.cc
! bda737efd800548b809b7dda83103db0  libstdc++-v3/testsuite/25_algorithms/none_of/check_type.cc
! 94786f6a1798a8d4d68f080064e188f8  libstdc++-v3/testsuite/25_algorithms/none_of/requirements/explicit_instantiation/2.cc
! 40988d3a9e19de4521191abe6d7942a7  libstdc++-v3/testsuite/25_algorithms/none_of/requirements/explicit_instantiation/pod.cc
! 56fefc0c54c74b6ee75cb173d7e6d485  libstdc++-v3/testsuite/25_algorithms/nth_element/1.cc
! c1b0075ff9782b10b572abef4cddecd3  libstdc++-v3/testsuite/25_algorithms/nth_element/2.cc
! 6110ad070342c02af27bb94fe1e1ab81  libstdc++-v3/testsuite/25_algorithms/nth_element/3.cc
! 62a2aa93be9f9706c8ebc380ff6fcd06  libstdc++-v3/testsuite/25_algorithms/nth_element/58800.cc
! 4b666c42fde7fa91673e17a02103081d  libstdc++-v3/testsuite/25_algorithms/nth_element/check_type.cc
! 5b6c0f8e67636af3438889969b9165df  libstdc++-v3/testsuite/25_algorithms/nth_element/moveable.cc
! 4b12ea006f59319ee86417438aa84bea  libstdc++-v3/testsuite/25_algorithms/nth_element/random_test.cc
! d16ca5bc69adffaf75f2f85883d81670  libstdc++-v3/testsuite/25_algorithms/nth_element/requirements/explicit_instantiation/2.cc
! 0cae5537a96d6d7379eb2ef0630700f8  libstdc++-v3/testsuite/25_algorithms/nth_element/requirements/explicit_instantiation/pod.cc
! 2082c25b3ef7a8413c48438ce78fe949  libstdc++-v3/testsuite/25_algorithms/partial_sort/1.cc
! 7feb966edf2863a0caab8d86ebf818f0  libstdc++-v3/testsuite/25_algorithms/partial_sort/2.cc
! cc111a29042d75ac590ecf521f81d007  libstdc++-v3/testsuite/25_algorithms/partial_sort/check_compare_by_value.cc
! 7391c3005326eefe4f547b33ef744611  libstdc++-v3/testsuite/25_algorithms/partial_sort/check_type.cc
! a9a7527874aa87cd7b0700d942451ef5  libstdc++-v3/testsuite/25_algorithms/partial_sort/moveable.cc
! 7ebd0d2a59cf5829bd5dc5cabed10fc1  libstdc++-v3/testsuite/25_algorithms/partial_sort/random_test.cc
! 0e9ff285adfea73d7a910089df2f1703  libstdc++-v3/testsuite/25_algorithms/partial_sort/requirements/explicit_instantiation/2.cc
! e625d8bc514458c3af6cc47cd09f1cd9  libstdc++-v3/testsuite/25_algorithms/partial_sort/requirements/explicit_instantiation/pod.cc
! eb823ac021587a48af25ec6f98c1bd5a  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/1.cc
! 92d77486f5c3f870e98053a2ae715d25  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/2.cc
! af934f5b6ddc801016f6fe9e7c219253  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/check_type.cc
! c778a19f5afa89033b16b085d82be6b8  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/debug/irreflexive_neg.cc
! 853f45298bcc3c43d07fecbb431e4861  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/random_test.cc
! 61f2c926dc5a05637f7da460d7e2b234  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/requirements/explicit_instantiation/2.cc
! 33f4154fc58469a7f5e64879b05ccde5  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/requirements/explicit_instantiation/pod.cc
! 54b560bcab5fe83d3cfebbcbdab6e328  libstdc++-v3/testsuite/25_algorithms/partition/1.cc
! b764b63193f8f759ea5a237285b77b70  libstdc++-v3/testsuite/25_algorithms/partition/moveable.cc
! a9199c2888b91eee7ee425e20cc82285  libstdc++-v3/testsuite/25_algorithms/partition/requirements/explicit_instantiation/2.cc
! 373a02c3f8d01f60d4d93805e2c8a9be  libstdc++-v3/testsuite/25_algorithms/partition/requirements/explicit_instantiation/pod.cc
! 11b0497974a12f1a0510aafa1a5c5dbe  libstdc++-v3/testsuite/25_algorithms/partition_copy/1.cc
! 60f27efe7d7ab620b8205a90746a7dc5  libstdc++-v3/testsuite/25_algorithms/partition_copy/check_type.cc
! fac4e3e9fda0fc31f3a10ae70f5fc9e7  libstdc++-v3/testsuite/25_algorithms/partition_copy/requirements/explicit_instantiation/2.cc
! 56fa8f3b3e9f2a7275983b57187ddd57  libstdc++-v3/testsuite/25_algorithms/partition_copy/requirements/explicit_instantiation/pod.cc
! a02b1c9fa5e86b4fc51321bd06990955  libstdc++-v3/testsuite/25_algorithms/partition_point/1.cc
! 0dc454f0db3b04874406c130029c3ca9  libstdc++-v3/testsuite/25_algorithms/partition_point/check_type.cc
! 5bcd1d1341e48a4b5a8f1df53bbbba23  libstdc++-v3/testsuite/25_algorithms/partition_point/requirements/explicit_instantiation/2.cc
! 4b7c3a16f4e5f1c9530856af6172c3e1  libstdc++-v3/testsuite/25_algorithms/partition_point/requirements/explicit_instantiation/pod.cc
! 976d1894fdbd4a7451d64d88dcf86330  libstdc++-v3/testsuite/25_algorithms/pop_heap/57010.cc
! af550351e073eb0ca2e6e4ee662a1ef8  libstdc++-v3/testsuite/25_algorithms/pop_heap/complexity.cc
! 155ef972cc6b15aa7c98af1cde663007  libstdc++-v3/testsuite/25_algorithms/pop_heap/empty2_neg.cc
! 40897f0e347e72da95c31585549c5248  libstdc++-v3/testsuite/25_algorithms/pop_heap/empty_neg.cc
! 41d43229db89acb070898ea963d0d322  libstdc++-v3/testsuite/25_algorithms/pop_heap/requirements/explicit_instantiation/2.cc
! a2c49d367283735f681e51025d7b9815  libstdc++-v3/testsuite/25_algorithms/pop_heap/requirements/explicit_instantiation/pod.cc
! f3783327398307ce120215a0327c5a50  libstdc++-v3/testsuite/25_algorithms/prev_permutation/1.cc
! dc8800c8fb9be4fd76c0c918f36772b6  libstdc++-v3/testsuite/25_algorithms/prev_permutation/check_type.cc
! 9215334aa23d9512fd2db52e66f4f889  libstdc++-v3/testsuite/25_algorithms/prev_permutation/moveable.cc
! a483c90f33672fc21a3e3229654e32dc  libstdc++-v3/testsuite/25_algorithms/prev_permutation/requirements/explicit_instantiation/2.cc
! 528a7480ea57a04db8a931b72fc72f9c  libstdc++-v3/testsuite/25_algorithms/prev_permutation/requirements/explicit_instantiation/pod.cc
! 4263d6d242d40d95342cf03ed99b4b40  libstdc++-v3/testsuite/25_algorithms/push_heap/complexity.cc
! 58707a4b4cc4fa991c749aab654af73c  libstdc++-v3/testsuite/25_algorithms/push_heap/requirements/explicit_instantiation/2.cc
! ba0ef0a2574c62573c1c90a85cdcd621  libstdc++-v3/testsuite/25_algorithms/push_heap/requirements/explicit_instantiation/pod.cc
! 187d6543b01b0db107c0ac0656e780f7  libstdc++-v3/testsuite/25_algorithms/random_shuffle/1.cc
! 2a9216673b001b69741b16466a8be3af  libstdc++-v3/testsuite/25_algorithms/random_shuffle/59603.cc
! 21e3469a8bf1c57abdbd85bc138879fb  libstdc++-v3/testsuite/25_algorithms/random_shuffle/moveable.cc
! 9bf41fb1698fc25f8874b325a5887d85  libstdc++-v3/testsuite/25_algorithms/random_shuffle/requirements/explicit_instantiation/2.cc
! 57e98524a711909e0302d85eabb0e47b  libstdc++-v3/testsuite/25_algorithms/random_shuffle/requirements/explicit_instantiation/pod.cc
! deefe0267b15f0af53098a2b9b31171a  libstdc++-v3/testsuite/25_algorithms/remove/1.cc
! 7200423f74010d8668a23854bf4c2114  libstdc++-v3/testsuite/25_algorithms/remove/check_type.cc
! 24e7499a1cd5cb58f7e188f8b6df3a93  libstdc++-v3/testsuite/25_algorithms/remove/moveable.cc
! 36c215d81cd0885fe92063b93a799c28  libstdc++-v3/testsuite/25_algorithms/remove/requirements/explicit_instantiation/2.cc
! 1954193013130d23ca054a70d6a2c3a3  libstdc++-v3/testsuite/25_algorithms/remove/requirements/explicit_instantiation/pod.cc
! 91a7e152ecead9c3f7eeda104b8ad02c  libstdc++-v3/testsuite/25_algorithms/remove_copy/requirements/explicit_instantiation/2.cc
! 47a8a6c3abcc7c8fb226605c9c1488c0  libstdc++-v3/testsuite/25_algorithms/remove_copy/requirements/explicit_instantiation/pod.cc
! dac168b98a4a2862127e2cc04c51803f  libstdc++-v3/testsuite/25_algorithms/remove_copy_if/check_type.cc
! d1bf72bad09576a7359a6ae17b5c425a  libstdc++-v3/testsuite/25_algorithms/remove_copy_if/requirements/explicit_instantiation/2.cc
! 007ce32ebf7fb1b2073b56440d3ac3e9  libstdc++-v3/testsuite/25_algorithms/remove_copy_if/requirements/explicit_instantiation/pod.cc
! 7559d0e0dc86f918ab2062d7661c4e64  libstdc++-v3/testsuite/25_algorithms/remove_if/1.cc
! 66159281a1f651000ba7146451941e05  libstdc++-v3/testsuite/25_algorithms/remove_if/check_type.cc
! 907a7c06356f7f4cec2eb3d377454e87  libstdc++-v3/testsuite/25_algorithms/remove_if/moveable.cc
! 33ae63557f62ef382ab621004445fba6  libstdc++-v3/testsuite/25_algorithms/remove_if/requirements/explicit_instantiation/2.cc
! 5ca390d6c8f9bd3fe04759b42d775495  libstdc++-v3/testsuite/25_algorithms/remove_if/requirements/explicit_instantiation/pod.cc
! c7d2295ea5d50de59346591bd3a7e726  libstdc++-v3/testsuite/25_algorithms/replace/1.cc
! 7bbb3fc8fac88baa52a72ebcfbb648b6  libstdc++-v3/testsuite/25_algorithms/replace/check_type.cc
! 42dee5e39719b50cee653164304071ab  libstdc++-v3/testsuite/25_algorithms/replace/requirements/explicit_instantiation/2.cc
! f30c813c16d2bf3a3ce58c0a9072495d  libstdc++-v3/testsuite/25_algorithms/replace/requirements/explicit_instantiation/pod.cc
! 6078410070c6b8b0693f33d8a33b0466  libstdc++-v3/testsuite/25_algorithms/replace_copy/1.cc
! 9505313c03cf25ecaecff6647dc21164  libstdc++-v3/testsuite/25_algorithms/replace_copy/check_type.cc
! a02a7b13a36321a8bda76c6a2185b597  libstdc++-v3/testsuite/25_algorithms/replace_copy/requirements/explicit_instantiation/2.cc
! 5749b315c972e0d0fdd21a33bb2d0c0f  libstdc++-v3/testsuite/25_algorithms/replace_copy/requirements/explicit_instantiation/pod.cc
! 6ca6c140b663ed2a3222aadde138ef66  libstdc++-v3/testsuite/25_algorithms/replace_copy_if/1.cc
! ddce966a1996d03f739a5b0cf62a340e  libstdc++-v3/testsuite/25_algorithms/replace_copy_if/check_type.cc
! ba52c34bdf1d6a4e29a075495839c4d0  libstdc++-v3/testsuite/25_algorithms/replace_copy_if/requirements/explicit_instantiation/2.cc
! c6db14cea50901cd39317d3e9411a0b2  libstdc++-v3/testsuite/25_algorithms/replace_copy_if/requirements/explicit_instantiation/pod.cc
! 6208469255da43477cdd7006ef9adf45  libstdc++-v3/testsuite/25_algorithms/replace_if/1.cc
! 0c88d2dc7c2cb3455d15e641c1e52f9c  libstdc++-v3/testsuite/25_algorithms/replace_if/check_type.cc
! 2ee681c89c619f054c876166ab034b03  libstdc++-v3/testsuite/25_algorithms/replace_if/requirements/explicit_instantiation/2.cc
! b51c810f4625b1e045970905969c6dd1  libstdc++-v3/testsuite/25_algorithms/replace_if/requirements/explicit_instantiation/pod.cc
! 25e10ed389b29bfb110a90f9b103f1fd  libstdc++-v3/testsuite/25_algorithms/reverse/moveable.cc
! c9f862a5f8ee25f83f6f2e5bf74d4622  libstdc++-v3/testsuite/25_algorithms/reverse/requirements/explicit_instantiation/2.cc
! 608b22020ef97d9f1d265a59733b222e  libstdc++-v3/testsuite/25_algorithms/reverse/requirements/explicit_instantiation/pod.cc
! 2e14b764fa6bb370d5194e5946f1da8e  libstdc++-v3/testsuite/25_algorithms/reverse_copy/explicit_instantiation/2.cc
! 909bba4d029a168c98471b84203bd431  libstdc++-v3/testsuite/25_algorithms/reverse_copy/explicit_instantiation/pod.cc
! ee6acfe3d682622ba26b5459f172e926  libstdc++-v3/testsuite/25_algorithms/rotate/1.cc
! 5aa42795b04af5c9b05b3ae6273f8723  libstdc++-v3/testsuite/25_algorithms/rotate/check_type.cc
! eceb258da8501b9536ae4484cab368a1  libstdc++-v3/testsuite/25_algorithms/rotate/dr488.cc
! 6155a41a3c876cf5c233b156fbbce5cc  libstdc++-v3/testsuite/25_algorithms/rotate/moveable.cc
! eadccf93a3e57763abe48e52ba3d6daf  libstdc++-v3/testsuite/25_algorithms/rotate/moveable2.cc
! a9eb70b19e5a7891eebcc564726e1cb0  libstdc++-v3/testsuite/25_algorithms/rotate/requirements/explicit_instantiation/2.cc
! cdd6f42f76a461a0d877a5e843a63288  libstdc++-v3/testsuite/25_algorithms/rotate/requirements/explicit_instantiation/pod.cc
! 420fa2d57db4d7edc782e6533bee323f  libstdc++-v3/testsuite/25_algorithms/rotate/rotate.cc
! 01dbba09ccc44a97db15186a28cae704  libstdc++-v3/testsuite/25_algorithms/rotate_copy/requirements/explicit_instantiation/2.cc
! e2df643b7e53a0930b2ad75f5895e07f  libstdc++-v3/testsuite/25_algorithms/rotate_copy/requirements/explicit_instantiation/pod.cc
! 33c0679173ad137883d805c7bc0d08e2  libstdc++-v3/testsuite/25_algorithms/sample/1.cc
! 4f44b62cb80658dcca3d3209125be690  libstdc++-v3/testsuite/25_algorithms/sample/2.cc
! acc1cdb808c66393b00a9d5d8d02c2c6  libstdc++-v3/testsuite/25_algorithms/sample/81221.cc
! 557ad7c57cce7296beaf8e941f529a20  libstdc++-v3/testsuite/25_algorithms/search/1.cc
! d97984c977a680e56edcfa755c94e699  libstdc++-v3/testsuite/25_algorithms/search/78346.cc
! 3db4f4f79af096147ac03eb68418e683  libstdc++-v3/testsuite/25_algorithms/search/check_type.cc
! 1fcb2cb560c9983328a0b1b7c69759f2  libstdc++-v3/testsuite/25_algorithms/search/requirements/explicit_instantiation/2.cc
! b7a2afcad8d9715bb04d5517fea97d1a  libstdc++-v3/testsuite/25_algorithms/search/requirements/explicit_instantiation/pod.cc
! 47c37b7c72c51378ff7d8c3942040f58  libstdc++-v3/testsuite/25_algorithms/search/searcher.cc
! 175fe722c807758af437adc69bcfb0ab  libstdc++-v3/testsuite/25_algorithms/search_n/11400.cc
! 0435da3aa230a2a7b0be8f49cb0ad318  libstdc++-v3/testsuite/25_algorithms/search_n/58358.cc
! 1e18600bba30f28270d4269ae7c4f504  libstdc++-v3/testsuite/25_algorithms/search_n/check_type.cc
! cee4e22a04d94777b5d606199d13b3f3  libstdc++-v3/testsuite/25_algorithms/search_n/iterator.cc
! cd81de324ea282e069701485f021a020  libstdc++-v3/testsuite/25_algorithms/search_n/requirements/explicit_instantiation/2.cc
! 506c91d37933b9504e389349a2389370  libstdc++-v3/testsuite/25_algorithms/search_n/requirements/explicit_instantiation/pod.cc
! 515f6be3f4351d5c972537d7265f7613  libstdc++-v3/testsuite/25_algorithms/set_difference/1.cc
! 2b2c8bbc7100a7dcc3eedf7796ed6fc9  libstdc++-v3/testsuite/25_algorithms/set_difference/35541.cc
! 0a4db6cb76fd44fc68f57ea5b79cc129  libstdc++-v3/testsuite/25_algorithms/set_difference/check_type.cc
! ed643e4cf0777a9719781c2fd6e80508  libstdc++-v3/testsuite/25_algorithms/set_difference/requirements/explicit_instantiation/2.cc
! ec0a0c2965351c2d251178661c1a9172  libstdc++-v3/testsuite/25_algorithms/set_difference/requirements/explicit_instantiation/pod.cc
! 9be56da778616f470be87f9a24ecb110  libstdc++-v3/testsuite/25_algorithms/set_intersection/1.cc
! e0d0167ef3371414ad8f5e01cc4a9175  libstdc++-v3/testsuite/25_algorithms/set_intersection/34730.cc
! ff7bcf56551834ae747e9191c375710f  libstdc++-v3/testsuite/25_algorithms/set_intersection/check_type.cc
! 4f7a10be70b97b74b1e6020c46b03e2f  libstdc++-v3/testsuite/25_algorithms/set_intersection/requirements/explicit_instantiation/2.cc
! 86d41e302e6466910cf22c303e398101  libstdc++-v3/testsuite/25_algorithms/set_intersection/requirements/explicit_instantiation/pod.cc
! 2c41d39926d0ef299e87b97cd1a36f3c  libstdc++-v3/testsuite/25_algorithms/set_symmetric_difference/1.cc
! 4561f6a11e498fed2b2c3b00ba481704  libstdc++-v3/testsuite/25_algorithms/set_symmetric_difference/check_type.cc
! e222c001544a2e33d38d1086f47d27ca  libstdc++-v3/testsuite/25_algorithms/set_symmetric_difference/requirements/explicit_instantiation/2.cc
! a3bd912bc0821d47e85b0017795e4e64  libstdc++-v3/testsuite/25_algorithms/set_symmetric_difference/requirements/explicit_instantiation/pod.cc
! 8ab87e436c5e296f7b0b73efa080552d  libstdc++-v3/testsuite/25_algorithms/set_union/1.cc
! b603ab00dbd5ac8bb1366644762edd96  libstdc++-v3/testsuite/25_algorithms/set_union/check_type.cc
! 06e8fe142986cabb02981f84910500b9  libstdc++-v3/testsuite/25_algorithms/set_union/requirements/explicit_instantiation/2.cc
! 2157c611ef66068368a42374a6bc148e  libstdc++-v3/testsuite/25_algorithms/set_union/requirements/explicit_instantiation/pod.cc
! 1ccb09277984a09fedf746520e993d5a  libstdc++-v3/testsuite/25_algorithms/shuffle/1.cc
! fa20eccb62cabe963e07d3c369b2f78e  libstdc++-v3/testsuite/25_algorithms/shuffle/requirements/explicit_instantiation/2.cc
! 3614527f392e64024de94c7eaa9e8bc7  libstdc++-v3/testsuite/25_algorithms/shuffle/requirements/explicit_instantiation/pod.cc
! 8a8d345e35aa6b39a743ea87fce6a012  libstdc++-v3/testsuite/25_algorithms/sort/1.cc
! 182f862f4cb4b0a1fe5e73cbe41c7d47  libstdc++-v3/testsuite/25_algorithms/sort/34095.cc
! 784f8f4aa3ac01b2b21db65580dc5fd7  libstdc++-v3/testsuite/25_algorithms/sort/34636.cc
! 95ed015d3fa0689972335d2b033f94c4  libstdc++-v3/testsuite/25_algorithms/sort/35588.cc
! 4b76c17dba24d84cee7c85cb520677da  libstdc++-v3/testsuite/25_algorithms/sort/78991.cc
! e1fd7f59ff6177c7e28722eeb202d654  libstdc++-v3/testsuite/25_algorithms/sort/check_compare_by_value.cc
! 5f7106b78f84e0d68f07dd679e6d3924  libstdc++-v3/testsuite/25_algorithms/sort/moveable.cc
! 68186cdbbf9192c695ceeeae9e566174  libstdc++-v3/testsuite/25_algorithms/sort/random_test.cc
! 8f70a9b72283d919d795f483bbda8fbe  libstdc++-v3/testsuite/25_algorithms/sort/requirements/explicit_instantiation/2.cc
! 2af4b6a27e672ae91c4aa0f2aa5636dc  libstdc++-v3/testsuite/25_algorithms/sort/requirements/explicit_instantiation/pod.cc
! 7dd167ef66c2e3f4f85b2bb7dd8b7dc3  libstdc++-v3/testsuite/25_algorithms/sort/vectorbool.cc
! 5373795ab8b87896a5780b4af635cd92  libstdc++-v3/testsuite/25_algorithms/sort_heap/check_compare_by_value.cc
! 06cc1cf498999fc65bb40838f91f6006  libstdc++-v3/testsuite/25_algorithms/sort_heap/complexity.cc
! 8280b7958fc0d46eba6f950a18e1ccda  libstdc++-v3/testsuite/25_algorithms/sort_heap/requirements/explicit_instantiation/2.cc
! 676bf735e93ed949b062b0a9fa881c2e  libstdc++-v3/testsuite/25_algorithms/sort_heap/requirements/explicit_instantiation/pod.cc
! 48d1e7af5157cdf838b49473f4d31482  libstdc++-v3/testsuite/25_algorithms/stable_partition/1.cc
! 0bc097001d8cd3227b3bc0970bc73132  libstdc++-v3/testsuite/25_algorithms/stable_partition/mem_check.cc
! b095927488641187909d309e26880a87  libstdc++-v3/testsuite/25_algorithms/stable_partition/moveable.cc
! 7e0f7f3c7e1f22ec23c789c0a7ef66c8  libstdc++-v3/testsuite/25_algorithms/stable_partition/pr52822.cc
! 3d31dd72209a6aceeccc573488c58f8a  libstdc++-v3/testsuite/25_algorithms/stable_partition/requirements/explicit_instantiation/2.cc
! 082036e04c7b9afd9dba24aa8d28f504  libstdc++-v3/testsuite/25_algorithms/stable_partition/requirements/explicit_instantiation/pod.cc
! ea4f795f609c7dd8e765f14a121dd6b6  libstdc++-v3/testsuite/25_algorithms/stable_sort/1.cc
! 00ed487b8bf579049bf6f94ec96d2594  libstdc++-v3/testsuite/25_algorithms/stable_sort/2.cc
! 47e9a8dc642c6dbbc666241e38d4ee6e  libstdc++-v3/testsuite/25_algorithms/stable_sort/3.cc
! 9e0a5daa95bf4c3a704095cec619f10f  libstdc++-v3/testsuite/25_algorithms/stable_sort/49559.cc
! f4a14dd93b893b2c5c58fd8ad2445bd3  libstdc++-v3/testsuite/25_algorithms/stable_sort/check_compare_by_value.cc
! b62a6b4bc91415a034104eafe39b27f0  libstdc++-v3/testsuite/25_algorithms/stable_sort/check_type.cc
! 8f39ee1c590e3d05987d1053b2d693f1  libstdc++-v3/testsuite/25_algorithms/stable_sort/mem_check.cc
! d9f1cb4fcfc14f4b9495bbff8155a4b9  libstdc++-v3/testsuite/25_algorithms/stable_sort/moveable.cc
! 909ffe54cf1481ff86922ea71319d337  libstdc++-v3/testsuite/25_algorithms/stable_sort/moveable2.cc
! 712bcd02740da7266d505b674307ea41  libstdc++-v3/testsuite/25_algorithms/stable_sort/requirements/explicit_instantiation/2.cc
! 72441ad25d337b0ab514c4dfcdc9dd77  libstdc++-v3/testsuite/25_algorithms/stable_sort/requirements/explicit_instantiation/pod.cc
! 61ba52265745197373b3e26e735d8427  libstdc++-v3/testsuite/25_algorithms/swap/68877.cc
! cbfce7da3ddd7dcc4d9c609dc65931a5  libstdc++-v3/testsuite/25_algorithms/swap/dr809.cc
! 81f527b1c311ef51b5208b75bc54b3c6  libstdc++-v3/testsuite/25_algorithms/swap/noexcept.cc
! 1b702fa490a2bd5f37e8580804cf0622  libstdc++-v3/testsuite/25_algorithms/swap/requirements/explicit_instantiation/2.cc
! 3c13762a19676f1502e1ee8f40234e38  libstdc++-v3/testsuite/25_algorithms/swap/requirements/explicit_instantiation/pod.cc
! da8f1085620f64e593cf6659edfa43ea  libstdc++-v3/testsuite/25_algorithms/swap_ranges/1.cc
! 77b1e69790968b41216f8b87c0bb64cc  libstdc++-v3/testsuite/25_algorithms/swap_ranges/check_type.cc
! aefbaf939cfb18c5d9d7fc30184d629c  libstdc++-v3/testsuite/25_algorithms/swap_ranges/moveable.cc
! 671ed7b8f482226c351dc93de6fa9116  libstdc++-v3/testsuite/25_algorithms/swap_ranges/requirements/explicit_instantiation/2.cc
! 784b7a965ffbf77f161a0fea488d0454  libstdc++-v3/testsuite/25_algorithms/swap_ranges/requirements/explicit_instantiation/pod.cc
! fd26870c2a31aac1b4f624c8364c79d6  libstdc++-v3/testsuite/25_algorithms/transform/requirements/explicit_instantiation/2.cc
! 9ae29c1921823906f96b810d6870ea83  libstdc++-v3/testsuite/25_algorithms/transform/requirements/explicit_instantiation/pod.cc
! 7d512dcacd20f1152f3c7e6dbb512dd8  libstdc++-v3/testsuite/25_algorithms/unique/1.cc
! b6863de27905b08817d441afc0d856c0  libstdc++-v3/testsuite/25_algorithms/unique/11480.cc
! 281edd14df110b5e2913438b24b9ec1e  libstdc++-v3/testsuite/25_algorithms/unique/2.cc
! 0d69652230f701bdb09c82ee66011a6d  libstdc++-v3/testsuite/25_algorithms/unique/moveable.cc
! bb6c4cf5b1f600562220ae694f3149da  libstdc++-v3/testsuite/25_algorithms/unique/requirements/explicit_instantiation/2.cc
! 6c2fb9da4e74ed25a9526edb811f16db  libstdc++-v3/testsuite/25_algorithms/unique/requirements/explicit_instantiation/pod.cc
! d91289a22f02d78ca7990ec21a08d70f  libstdc++-v3/testsuite/25_algorithms/unique_copy/1.cc
! f1c453a58915841ec1f3b1204f9dcb60  libstdc++-v3/testsuite/25_algorithms/unique_copy/2.cc
! e021cb92c2f124513de1956d685d8199  libstdc++-v3/testsuite/25_algorithms/unique_copy/26133.cc
! 399da844743e4865507937f2c97c2354  libstdc++-v3/testsuite/25_algorithms/unique_copy/check_type.cc
! ca342183ade96f4f80b4c6343d114cf0  libstdc++-v3/testsuite/25_algorithms/unique_copy/requirements/explicit_instantiation/2.cc
! 3846ab51bb1f4cc71ed693aedf8a379a  libstdc++-v3/testsuite/25_algorithms/unique_copy/requirements/explicit_instantiation/pod.cc
! e7b36ccb7c9aea728270eab87647a95a  libstdc++-v3/testsuite/25_algorithms/upper_bound/1.cc
! 90f01d467a674083b9b2ee9ede2ee917  libstdc++-v3/testsuite/25_algorithms/upper_bound/2.cc
! bd5f6ba4253c7d6e058b26e8ecd99a48  libstdc++-v3/testsuite/25_algorithms/upper_bound/33613.cc
! b489a57698f93a3a8a77e0774c6849b8  libstdc++-v3/testsuite/25_algorithms/upper_bound/check_type.cc
! 0e7548029ecc3b7e3e1cd05184a32f74  libstdc++-v3/testsuite/25_algorithms/upper_bound/partitioned.cc
! 5229f474450c1d2b264e5304b62c4f47  libstdc++-v3/testsuite/25_algorithms/upper_bound/requirements/explicit_instantiation/2.cc
! 2e207e85985d00a9c5ba9a0c9f0b22af  libstdc++-v3/testsuite/25_algorithms/upper_bound/requirements/explicit_instantiation/pod.cc
! a45fe1ea780e22bca3195912220874a5  libstdc++-v3/testsuite/26_numerics/accumulate/1.cc
! f6afb0422946392b58a6f90b34044959  libstdc++-v3/testsuite/26_numerics/accumulate/48750.cc
! 8a77efa11fe9fb1146733241cb6f65e0  libstdc++-v3/testsuite/26_numerics/accumulate/requirements/explicit_instantiation/2.cc
! a9dd051781c3e60421a1cfd059bc01c7  libstdc++-v3/testsuite/26_numerics/accumulate/requirements/explicit_instantiation/pod.cc
! 56bdf8bcde6ec8ad81a5280007b7a1d1  libstdc++-v3/testsuite/26_numerics/adjacent_difference/1.cc
! fec894ebbf5e7641833ea81dbff65867  libstdc++-v3/testsuite/26_numerics/adjacent_difference/requirements/explicit_instantiation/2.cc
! d7820d88c85c43ab9e5fd89cde93d63a  libstdc++-v3/testsuite/26_numerics/adjacent_difference/requirements/explicit_instantiation/pod.cc
! 828de9f912b8b0588a97f8c2ff5301e2  libstdc++-v3/testsuite/26_numerics/complex/13450.cc
! 11ef8e12b463faeac5cff2b04b5d3307  libstdc++-v3/testsuite/26_numerics/complex/50880.cc
! 11aaa948f533e465d7073cb21c57c53a  libstdc++-v3/testsuite/26_numerics/complex/51083.cc
! a47153737c64dc91de43033fdfcc2688  libstdc++-v3/testsuite/26_numerics/complex/56111.cc
! 8106f789362465d9004ce768a8d46ea2  libstdc++-v3/testsuite/26_numerics/complex/abi_tag.cc
! 9f9a6e97e43ab066c6169ca1432eabd0  libstdc++-v3/testsuite/26_numerics/complex/buggy_complex.cc
! 39a371d24586edb4c71738b7fa378cfd  libstdc++-v3/testsuite/26_numerics/complex/c99.cc
! 09363e8749d2005d84b45a3f21b77f1d  libstdc++-v3/testsuite/26_numerics/complex/comparison_operators/constexpr.cc
! 18c3a96cf5448000ef89f55873d5db76  libstdc++-v3/testsuite/26_numerics/complex/cons/48760.cc
! 5f62a7a21c459662c37252d73c762c53  libstdc++-v3/testsuite/26_numerics/complex/cons/48760_c++0x.cc
! bd0545be38f640917bff909b63784b31  libstdc++-v3/testsuite/26_numerics/complex/cons/constexpr.cc
! 8f996b8f1ff0133a8d45c22d87fce88b  libstdc++-v3/testsuite/26_numerics/complex/cons/constexpr_primary.cc
! ab501dbdac8cac84c7de521289afba17  libstdc++-v3/testsuite/26_numerics/complex/dr387_2.cc
! ec3abfb20fa1e262808837f3386432e9  libstdc++-v3/testsuite/26_numerics/complex/dr781.cc
! 694db00c1e6cb5b83a3e9ef2a2c2d589  libstdc++-v3/testsuite/26_numerics/complex/dr844.cc
! c9effb9a920490ce76926ce1ba420ad8  libstdc++-v3/testsuite/26_numerics/complex/inserters_extractors/char/1.cc
! c245f0f3826eef03e178bb67d2d4888d  libstdc++-v3/testsuite/26_numerics/complex/inserters_extractors/char/59568.cc
! 5e73f620e9932f4f7419e5dfb12731b6  libstdc++-v3/testsuite/26_numerics/complex/inserters_extractors/wchar_t/1.cc
! 6ed5e9e0e67c9c5a5db3a329cafd2c5c  libstdc++-v3/testsuite/26_numerics/complex/literals/types.cc
! 4e85333440c610f6c75ddf4d70d32c33  libstdc++-v3/testsuite/26_numerics/complex/literals/values.cc
  906619ecf0877a7ff5302dd409c34714  libstdc++-v3/testsuite/26_numerics/complex/pow.cc
! b83825aec598777328764def56e67ab4  libstdc++-v3/testsuite/26_numerics/complex/requirements/constexpr_functions.cc
! 206ef7891b8597801747d9f47b4487e9  libstdc++-v3/testsuite/26_numerics/complex/value_operations/1.cc
! 9ffbbf5da4ecba087c9e73939d3e6779  libstdc++-v3/testsuite/26_numerics/complex/value_operations/constexpr.cc
! 10ce72d1ce4dd138d782dd75f9f86cbf  libstdc++-v3/testsuite/26_numerics/complex/value_operations/constexpr2.cc
! 8b138066aeb56dbfbc616613dc368cec  libstdc++-v3/testsuite/26_numerics/complex/value_operations/dr387.cc
! 485ed4495efba90f0b8ac30578e544ae  libstdc++-v3/testsuite/26_numerics/gcd/1.cc
! 036666956beff9e0426db8782eced734  libstdc++-v3/testsuite/26_numerics/gcd/gcd_neg.cc
! e1880d4be8a98a5f3155db15bf410b33  libstdc++-v3/testsuite/26_numerics/headers/ccomplex/std_c++0x_neg.cc
! f335005ba4b3ac34056dc7f049808377  libstdc++-v3/testsuite/26_numerics/headers/cfenv/std_c++0x_neg.cc
! 573cdc62a0f7acbc013486a2af169b67  libstdc++-v3/testsuite/26_numerics/headers/cfenv/types_std_c++0x.cc
! 38b5ecdcb71f6282b68fcfe909482442  libstdc++-v3/testsuite/26_numerics/headers/cmath/14608.cc
! 909fed53634447453babdf10d4d52f40  libstdc++-v3/testsuite/26_numerics/headers/cmath/19322.cc
! d33f0f9af8c06088946514337011f438  libstdc++-v3/testsuite/26_numerics/headers/cmath/25913.cc
! e2c57b7a849ab02828914b36837a4453  libstdc++-v3/testsuite/26_numerics/headers/cmath/37582.cc
! d44bc0a14a08f46660adfad251321457  libstdc++-v3/testsuite/26_numerics/headers/cmath/48891.cc
! dee942a4adb30ce46ab44b7a2b36a48a  libstdc++-v3/testsuite/26_numerics/headers/cmath/51083.cc
! 06a15716921c7a434abe8f94141275e7  libstdc++-v3/testsuite/26_numerics/headers/cmath/53503.cc
! 6fbce8132b7be48b0c3520356d021ec0  libstdc++-v3/testsuite/26_numerics/headers/cmath/60401.cc
! a9ba445bf2ddb5ffc1a600c2dc10c161  libstdc++-v3/testsuite/26_numerics/headers/cmath/60637.cc
! 55b1cf94526957645ea347e83afb18e2  libstdc++-v3/testsuite/26_numerics/headers/cmath/c99_classification_macros_c++11.cc
! 7d104680ab18942ec947d6791952ad07  libstdc++-v3/testsuite/26_numerics/headers/cmath/c99_classification_macros_c++98.cc
! 8b299c0e653d63e1233745294bae05c0  libstdc++-v3/testsuite/26_numerics/headers/cmath/c99_classification_macros_c.cc
! 79c22cfd719582cc3b993d73afbaaa5e  libstdc++-v3/testsuite/26_numerics/headers/cmath/c_math.cc
! 0c1fc0bf88b1466f64b04e08ac132ac9  libstdc++-v3/testsuite/26_numerics/headers/cmath/c_math_dynamic.cc
! fbc8c98fa6204c78478615402bc79c3f  libstdc++-v3/testsuite/26_numerics/headers/cmath/dr2192.cc
! 9a7921bf639c89a9fd0752759a7229ae  libstdc++-v3/testsuite/26_numerics/headers/cmath/dr2192_neg.cc
! 7c437fb0873c136a55e5a91b61d02569  libstdc++-v3/testsuite/26_numerics/headers/cmath/dr550.cc
! 75c9db27aa6e9675558376c22d494900  libstdc++-v3/testsuite/26_numerics/headers/cmath/fabs_inline.cc
! c9c624b15c65ab0ba2212236b86ea8ff  libstdc++-v3/testsuite/26_numerics/headers/cmath/functions_std.cc
! 7ebf7a8f1bc4886c9882ead4e255ab8b  libstdc++-v3/testsuite/26_numerics/headers/cmath/functions_std_c++17.cc
! 62d0f093228e319023a0c2a1252bfce1  libstdc++-v3/testsuite/26_numerics/headers/cmath/hypot.cc
! c7ab5be30929aff5224694a0414e3bbd  libstdc++-v3/testsuite/26_numerics/headers/cmath/macros.cc
! 730e5f062e8de6d29e2fe48b9a0fd16c  libstdc++-v3/testsuite/26_numerics/headers/cmath/overloads.cc
! 2eacbefe113222d3bc682754db686cb3  libstdc++-v3/testsuite/26_numerics/headers/cmath/overloads_c++0x_neg.cc
! 41d3f0f4a3681a57178d0ac34aa2e63c  libstdc++-v3/testsuite/26_numerics/headers/cmath/powi.cc
! b413aa1cc0a4d3d91c87ec093dc276a8  libstdc++-v3/testsuite/26_numerics/headers/cmath/types_std_c++0x.cc
! fb4639c19579178b3f502082c4833ac6  libstdc++-v3/testsuite/26_numerics/headers/cmath/types_std_c++0x_neg.cc
! 05b372b27a4730dad0fe48a986def3ff  libstdc++-v3/testsuite/26_numerics/headers/complex/synopsis.cc
! 5ba4aefa46e3683cb4220401e93d7776  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/13943.cc
! 46a2d0e86b6f9569e2b9e6fcce65ed75  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/2190.cc
! c67c621673f4caad990989b36dfd471c  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/54686.cc
! b03ba1c81f89340717b7bf897692ed82  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/60401.cc
! 1d9a2f3e73a6000b5fc0b8590ee91114  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/dr2192.cc
! 84ff1a30217f7a7bd081251bdd55f580  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/dr2192_neg.cc
! e021fd353e1588f2c00939501efbb9a3  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/functions_std.cc
! 948f14483948e39f8421e0c564c594e4  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/macros.cc
! e532f397cd38f1e14b1472c9506edd02  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/types_std.cc
! 2590cf8c1dffcee85b86a2870f8da4d4  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/types_std_c++0x.cc
! 82435cb2f75dcb0cd40e56ad9db4e128  libstdc++-v3/testsuite/26_numerics/headers/ctgmath/complex.cc
! 7765ffd8de93b5d9603d6755c56424bf  libstdc++-v3/testsuite/26_numerics/headers/ctgmath/std_c++0x_neg.cc
! bade8c60cdf5a505f9b246f9f40395cb  libstdc++-v3/testsuite/26_numerics/headers/numeric/numeric_parallel_mode.cc
! 8d75c19ededd3e0ed14e87d413b12440  libstdc++-v3/testsuite/26_numerics/headers/numeric/parallel_numeric.cc
! c653811f5e197fd40f5c4d2051905ec5  libstdc++-v3/testsuite/26_numerics/headers/numeric/parallel_numeric_mixed1.cc
! a3146ca607589f8a7f3ab836490774a2  libstdc++-v3/testsuite/26_numerics/headers/numeric/parallel_numeric_mixed2.cc
! d55a86d0bee850051e368f7a96edd2b5  libstdc++-v3/testsuite/26_numerics/headers/numeric/synopsis.cc
! badfe9ab096a602ac0a56f22cd7d5bef  libstdc++-v3/testsuite/26_numerics/headers/random/std_c++0x_neg.cc
! 41b58142966d58f957d7b570785f5294  libstdc++-v3/testsuite/26_numerics/headers/random/types_std_c++0x.cc
! 495c4592a18153adc8b0a5a54fba48f1  libstdc++-v3/testsuite/26_numerics/headers/valarray/synopsis.cc
! c7612e022263f92572d35313b9932cb0  libstdc++-v3/testsuite/26_numerics/headers/valarray/types_std.cc
! 464eef31bc7e7d396a873f2c988fb281  libstdc++-v3/testsuite/26_numerics/inner_product/1.cc
! b6889fa4856f53bfed40c94c3f68915e  libstdc++-v3/testsuite/26_numerics/inner_product/requirements/explicit_instantiation/2.cc
! ef1ba33336d31a21f557af82f8e50b4d  libstdc++-v3/testsuite/26_numerics/inner_product/requirements/explicit_instantiation/pod.cc
! c1fd38f085d843657ad00632f1f6c7dc  libstdc++-v3/testsuite/26_numerics/iota/1.cc
! 16f2448215a73c877454bf918e5ed1eb  libstdc++-v3/testsuite/26_numerics/iota/requirements/explicit_instantiation/2.cc
! 3db465de3c7027c6385d1586e6535d63  libstdc++-v3/testsuite/26_numerics/iota/requirements/explicit_instantiation/pod.cc
! f691092a0442e271cd590231ca765edd  libstdc++-v3/testsuite/26_numerics/lcm/1.cc
! 2aba715ae616b44bd8314c2ef740bde5  libstdc++-v3/testsuite/26_numerics/lcm/lcm_neg.cc
! 107b72e07b53a6fee1c614612c3e961a  libstdc++-v3/testsuite/26_numerics/partial_sum/1.cc
! 57c6def19b6d42bfc3b7d8542ee94ba2  libstdc++-v3/testsuite/26_numerics/partial_sum/requirements/explicit_instantiation/2.cc
! f53ee71ce11ebbd5bc359228e6d9734d  libstdc++-v3/testsuite/26_numerics/partial_sum/requirements/explicit_instantiation/pod.cc
! 00fb594d2e45e3ffb1652e95343a458c  libstdc++-v3/testsuite/26_numerics/random/bernoulli_distribution/cons/default.cc
! dc13ba09fbc2eca5d232b639c54f5450  libstdc++-v3/testsuite/26_numerics/random/bernoulli_distribution/cons/parms.cc
! add6d9ea64526624bee5e5cc80dc40c1  libstdc++-v3/testsuite/26_numerics/random/bernoulli_distribution/operators/equal.cc
! 029c948029a0e17961478510be84b44b  libstdc++-v3/testsuite/26_numerics/random/bernoulli_distribution/operators/inequal.cc
! b142d7bd1a3ffa714333eea882d855ac  libstdc++-v3/testsuite/26_numerics/random/bernoulli_distribution/operators/serialize.cc
! efb046312b39ec76087f5bbb95208ec2  libstdc++-v3/testsuite/26_numerics/random/bernoulli_distribution/operators/values.cc
! c0c1104662ea40b517a0827ec0e2c39b  libstdc++-v3/testsuite/26_numerics/random/bernoulli_distribution/requirements/typedefs.cc
! 236169a3d186dd11d7263fc41a232852  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/cons/default.cc
! 57d71fd9aaaac9fc345f80250705b09e  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/cons/parms.cc
! 2dbb152d95f9a0cdbc0935d8e316ab1d  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/operators/equal.cc
! 62ec527c3045ed55bd4e09ef3135b72c  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/operators/inequal.cc
! 0c77ad5566011e2aac7e976c4321c94e  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/operators/serialize.cc
! 65121129322512766a419f2eb6a4d7a4  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/operators/values.cc
! bfaed5bd3bd331660a75664560954d1f  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/operators/values2.cc
! 91c3279ed69609a66f5e4e42af5442ac  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/operators/values3.cc
! 2604bf794354fb7411a17a6923d3dfaa  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/operators/values4.cc
! 7ea954d964a11d7410285917b09d72da  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/operators/values5.cc
! d90d04de61d530b4bef7895b32fd6859  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/requirements/explicit_instantiation/1.cc
! 42d3b004d4faac650e1ee4c86e832922  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/requirements/typedefs.cc
! b7a04b78b482258868ba7164d803dd2c  libstdc++-v3/testsuite/26_numerics/random/cauchy_distribution/cons/default.cc
! 85e6d1b79a87bb4c391eba33d34f6e02  libstdc++-v3/testsuite/26_numerics/random/cauchy_distribution/cons/parms.cc
! 9df838350db8e6e599bad773b8812004  libstdc++-v3/testsuite/26_numerics/random/cauchy_distribution/operators/equal.cc
! dcf9e3aabbec16de1ac81f4079306eb8  libstdc++-v3/testsuite/26_numerics/random/cauchy_distribution/operators/inequal.cc
! 8886219e646ff670781d00cdebbb0db9  libstdc++-v3/testsuite/26_numerics/random/cauchy_distribution/operators/serialize.cc
! 9cf2c8231e7837d1ab94d84e2ddec85f  libstdc++-v3/testsuite/26_numerics/random/cauchy_distribution/requirements/explicit_instantiation/1.cc
! 6ff62a03fcabfc668d8893c710421dad  libstdc++-v3/testsuite/26_numerics/random/cauchy_distribution/requirements/typedefs.cc
! 6ae14552cba16e66f41e7f869b0c163e  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/cons/default.cc
! 831880fe630899fb74729457db8c4425  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/cons/parms.cc
! d5b2d1f6488f78c249f47c34ebad9494  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/operators/equal.cc
! 3b2e8cf4be3bd546f07e8026298a13e3  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/operators/inequal.cc
! 0aee8ee743b28db43f77038aca3017f6  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/operators/serialize.cc
! adf58e5182e5ce0305bae8590c29644d  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/requirements/explicit_instantiation/1.cc
! fe37999d276e82b1971d3a94c1476f69  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/requirements/typedefs.cc
! e24e74f6f562a097b45948a91fb5b16b  libstdc++-v3/testsuite/26_numerics/random/default_random_engine.cc
! 36764fcf1e7c038b301922ebc6f3e4b4  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/55215.cc
! 8832bb2b364dcc54201754ae061b8403  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/base_copy.cc
! 9c7a03a3d4b84b1748f1612fce84f33a  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/base_move.cc
! c25c711f51b599a1edb7e81baebbe411  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/copy.cc
! 4ff302ac214475def4bcfa4e3346e8fe  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/default.cc
! 68e2ddd066cbc89d80af0660081e5c3d  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/seed1.cc
! ae316f00432b2ad7de8ec0c87a98fdb8  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/seed2.cc
! d302b07fd78f4d4d789167874f12d650  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/seed_seq.cc
! 78a7e12dfe36b78010004a0839a02a1a  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/operators/equal.cc
! c0832c735746f40da61cdab081b82308  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/operators/inequal.cc
! 638af4a6e5a5c515212106396849ef9b  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/operators/serialize.cc
! 88be03707a9893ade128a96451909a0c  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/requirements/constexpr_data.cc
! 629a950720cf81cd90c77b2ec7904c9c  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/requirements/constexpr_functions.cc
! 21849d421fb27dc6a1fa0bd6b68e179b  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/requirements/typedefs.cc
! c369ec30cf7281072628b3c14fd81110  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/cons/default.cc
! e0faf117767b10707658a1d1bfa0111e  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/cons/initlist.cc
! d269a3dd6e3a8717ab014796bbb0a14c  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/cons/num_xbound_fun.cc
! 9754f1c622ff568ea8c5112b3ad84e35  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/cons/range.cc
! c4731374b76ecd12ed73d520a93c9638  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/operators/call-default.cc
! cf282644c217053e1e878baa857cb077  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/operators/equal.cc
! 3c3103a780f4d11eb68a56615fedf4f3  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/operators/inequal.cc
! c9046b0540c9a7ee1016b4ea2f27a7a9  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/operators/serialize.cc
! 168a5a4113e49805ea409cf837f7af6c  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/operators/values.cc
! bb1fed1d7b654528b0c429ab35c790ee  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/requirements/explicit_instantiation/1.cc
! f48ce4200c61dc9c2a31ef80b2d656bc  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/requirements/typedefs.cc
! a0e86f3020543a551632fe1f2b8a17ce  libstdc++-v3/testsuite/26_numerics/random/exponential_distribution/cons/default.cc
! 803c05415915e22e80743e367e52fd8f  libstdc++-v3/testsuite/26_numerics/random/exponential_distribution/cons/parms.cc
! 384620f40953b0c0b97dc4ff8749af88  libstdc++-v3/testsuite/26_numerics/random/exponential_distribution/operators/equal.cc
! b15245acfb06b14f38c41b6e15d4ccdf  libstdc++-v3/testsuite/26_numerics/random/exponential_distribution/operators/inequal.cc
! 837011749ab9403e934152f90f65fcbc  libstdc++-v3/testsuite/26_numerics/random/exponential_distribution/operators/serialize.cc
! 23fad60c43955ca0da345a9afd5778c8  libstdc++-v3/testsuite/26_numerics/random/exponential_distribution/requirements/explicit_instantiation/1.cc
! f83bbfb4fa1196ad9b781a5e21bdf312  libstdc++-v3/testsuite/26_numerics/random/exponential_distribution/requirements/typedefs.cc
! 321bfb9a3da3ca6b5854365ee2e045c9  libstdc++-v3/testsuite/26_numerics/random/extreme_value_distribution/cons/default.cc
! 08342375f2953645844838de40d07467  libstdc++-v3/testsuite/26_numerics/random/extreme_value_distribution/cons/parms.cc
! 9ebe6d7e30ada33e2ec6800537a1d1ba  libstdc++-v3/testsuite/26_numerics/random/extreme_value_distribution/operators/equal.cc
! 8d11875de9af3af090910c54fbc591d5  libstdc++-v3/testsuite/26_numerics/random/extreme_value_distribution/operators/inequal.cc
! 51a1b6fcad44f938ad8ddae56b9dff96  libstdc++-v3/testsuite/26_numerics/random/extreme_value_distribution/operators/serialize.cc
! a692e5f95f28762d8962f68f7c2bd4d1  libstdc++-v3/testsuite/26_numerics/random/extreme_value_distribution/requirements/explicit_instantiation/1.cc
! df7ae644c3fca47a4dbe9c57d2555018  libstdc++-v3/testsuite/26_numerics/random/extreme_value_distribution/requirements/typedefs.cc
! d422a8e0ec56a711a122a951b06459f8  libstdc++-v3/testsuite/26_numerics/random/fisher_f_distribution/cons/default.cc
! 5abc5def7726f6069ae8e671d263f381  libstdc++-v3/testsuite/26_numerics/random/fisher_f_distribution/cons/parms.cc
! 5b1ffe112c580db965cdb51554de5167  libstdc++-v3/testsuite/26_numerics/random/fisher_f_distribution/operators/equal.cc
! f6ca32e276e8127d3d2f0604b359ab6d  libstdc++-v3/testsuite/26_numerics/random/fisher_f_distribution/operators/inequal.cc
! 5d6f3ae577009cd7c3a30ea8943e5029  libstdc++-v3/testsuite/26_numerics/random/fisher_f_distribution/operators/serialize.cc
! 3e7ef3c0c88c613ef2852d951f329359  libstdc++-v3/testsuite/26_numerics/random/fisher_f_distribution/requirements/explicit_instantiation/1.cc
! 3777f20887dc0e51d8491621f2472ca4  libstdc++-v3/testsuite/26_numerics/random/fisher_f_distribution/requirements/typedefs.cc
! 96ab11a67818c466cb292783107019ac  libstdc++-v3/testsuite/26_numerics/random/gamma_distribution/cons/default.cc
! 354eab1e39d9c671aa0954f10a3fe4ec  libstdc++-v3/testsuite/26_numerics/random/gamma_distribution/cons/parms.cc
! 0ca0ac3edb47e952aa1c4021627f7f9d  libstdc++-v3/testsuite/26_numerics/random/gamma_distribution/operators/equal.cc
! 9d66a9efeebc8f2aac7b979a5f9ac5c1  libstdc++-v3/testsuite/26_numerics/random/gamma_distribution/operators/inequal.cc
! eceb6eb68b2338011bf875213e24843b  libstdc++-v3/testsuite/26_numerics/random/gamma_distribution/operators/serialize.cc
! f1ee09afb511fe288b667b020b8c7902  libstdc++-v3/testsuite/26_numerics/random/gamma_distribution/requirements/explicit_instantiation/1.cc
! d9d9be0edc5351169abcbf4565865413  libstdc++-v3/testsuite/26_numerics/random/gamma_distribution/requirements/typedefs.cc
! cf62b6e0e8abd1c89ba53f2b91611220  libstdc++-v3/testsuite/26_numerics/random/geometric_distribution/cons/default.cc
! 1875a01aba8cae134dec25301f86b035  libstdc++-v3/testsuite/26_numerics/random/geometric_distribution/cons/parms.cc
! 9ac87206453189d1bcd87feb776c9124  libstdc++-v3/testsuite/26_numerics/random/geometric_distribution/operators/equal.cc
! 773a7b31b1b4f0e3e291d5169e874b05  libstdc++-v3/testsuite/26_numerics/random/geometric_distribution/operators/inequal.cc
! 71e78cdccc0b33078041c1ba247d9d97  libstdc++-v3/testsuite/26_numerics/random/geometric_distribution/operators/serialize.cc
! 1021659ee7af592070723ed4dd4eb4c3  libstdc++-v3/testsuite/26_numerics/random/geometric_distribution/operators/values.cc
! f85643816cdf50392296bc6abe229844  libstdc++-v3/testsuite/26_numerics/random/geometric_distribution/requirements/explicit_instantiation/1.cc
! 3351e597b54726919a50026e0704e34d  libstdc++-v3/testsuite/26_numerics/random/geometric_distribution/requirements/typedefs.cc
! e4c3816cf68ef55eb72216d51212bae9  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/55215.cc
! a6518c74530e89e5656e3db98c58da90  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/base_copy.cc
! f6123b3090f9f6881e0c94905c01cf04  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/base_move.cc
! 22c9633794e9793c3c53d731bd9dd55f  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/copy.cc
! d2a490ab6d263cf17e34685a15e57182  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/default.cc
! 1f44fb5aca153b24004aadfbf8527a73  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/seed1.cc
! a811c60552010e05efcfed9e01d962c6  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/seed2.cc
! 789abd58ac86a7302187778a1070a94e  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/seed_seq.cc
! 51ff41e0e7e3e81c3c8b376df3eb0e9d  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/operators/equal.cc
! aa9997584f984b7167a4355036a0278f  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/operators/inequal.cc
! 772b3bcb23d972ab3a1a0c9a6bbbb624  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/operators/serialize.cc
! a2600cbc20f31fddddd90d5402b922d2  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/requirements/constexpr_functions.cc
! 4b641fa38c30d62430facdf0735a0568  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/requirements/typedefs.cc
! ba3b63e98620f2a983e541a5649432ca  libstdc++-v3/testsuite/26_numerics/random/knuth_b.cc
! f5d5a0cad05217993f5bf76be369f07c  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/cons/55215.cc
! 24c58efffed05cbd78e47e80933e2e17  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/cons/copy.cc
! 5190345d307f46acc74e21d70c99d983  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/cons/default.cc
! 0a73c91e1be1074913013bf020247018  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/cons/seed1.cc
! f5f7a91420cddaa18b80783109b54ca3  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/cons/seed2.cc
! 84d6c6682aba9ec1a88011e04ba50ea0  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/cons/seed_seq.cc
! 0c2e432e36086d7e7892a75c31c2e053  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/operators/51795.cc
! 6c6ad6db5ca8ccb4578bef9af55e7059  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/operators/equal.cc
! c219aa996c836337e57f381be0df1392  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/operators/inequal.cc
! 776c2ebd5e7b860d3eeae1110425c9f1  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/operators/serialize.cc
! c6a05307743cf4bf91c61d48f391bd3e  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/constants.cc
! bf66c4545b8f1cd8eadfa4a3d118aae8  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/constexpr_data.cc
! 15890100b98049ee801b3dfffd95749d  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/constexpr_functions.cc
! daa937de69d1c910ff0f0f32aacb4b3f  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/non_uint_neg.cc
! 57c033be2c724410ab8f653f845b5be8  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/typedefs.cc
! ed0cb8b324046cd8a8269a8646783ea6  libstdc++-v3/testsuite/26_numerics/random/lognormal_distribution/cons/default.cc
! b14303372de39772343e5c7e22a623fd  libstdc++-v3/testsuite/26_numerics/random/lognormal_distribution/cons/parms.cc
! 6e6b6a1b4675eacbc284de1c8cf4c378  libstdc++-v3/testsuite/26_numerics/random/lognormal_distribution/operators/equal.cc
! 7151336d7312b436f5ea4ad73bab6c41  libstdc++-v3/testsuite/26_numerics/random/lognormal_distribution/operators/inequal.cc
! 407bed038c22be83b597d772b49e99fd  libstdc++-v3/testsuite/26_numerics/random/lognormal_distribution/operators/serialize.cc
! 299ca6b31509cb8a4013308c98be5762  libstdc++-v3/testsuite/26_numerics/random/lognormal_distribution/requirements/explicit_instantiation/1.cc
! a2a2451dea01d50259c501fc4e3d0563  libstdc++-v3/testsuite/26_numerics/random/lognormal_distribution/requirements/typedefs.cc
! c20ee0126d5eef91235330e6f2af4aa8  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/cons/55215.cc
! 3003417482d7e14a0f1980143a3d8cd5  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/cons/copy.cc
! 0f6bdf2f3deef7cdda00e7723d443d1c  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/cons/default.cc
! 53431011d98dd6322ce8748ca32034ac  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/cons/seed1.cc
! 4b8dad6de36b2d3f53ebfcec47d5584a  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/cons/seed2.cc
! 0812cdfdf59c3375c6a915d8acb3187c  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/cons/seed_seq.cc
! f23a552d36618c6376caf74d67caf546  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/operators/equal.cc
! a35fef38b5c9d98ebc2bcb152c776400  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/operators/inequal.cc
! 2c1ca651382cc828f051ed1a6af7b9d0  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/operators/serialize.cc
! 48e002aaecae78cbab7e202a2f39190c  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/requirements/constants.cc
! 6d23ed7ad1d119c989dcc3b41ad49898  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/requirements/constexpr_data.cc
! b60517e5954074518414d3b060ba8ce1  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/requirements/constexpr_functions.cc
! cac932177350493bca82da839c46c25f  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/requirements/typedefs.cc
! 895e7f33c250741661b71d3601bb230b  libstdc++-v3/testsuite/26_numerics/random/minstd_rand.cc
! 5f986dda027faeb4ea5ff453eb383bbc  libstdc++-v3/testsuite/26_numerics/random/minstd_rand0.cc
! d37c3d7b5912748d0b2363ed6519ab81  libstdc++-v3/testsuite/26_numerics/random/mt19937.cc
! 736b532cbec7857b6e6c8a7fa2759f51  libstdc++-v3/testsuite/26_numerics/random/mt19937_64.cc
! c2c17fe1ecb71495d9e22d1169864a58  libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/cons/default.cc
! 2a47fafa92acf0e44c773c4f81003135  libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/cons/parms.cc
! bae200ff1d13e0e778c4eec83653015c  libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/operators/58302.cc
! 72b0297f04802a596a42cc1f7625c81e  libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/operators/equal.cc
! 89c27bbae457d8544f9d10c19eccda9f  libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/operators/inequal.cc
! 0a6f6593788a8e86ab8f5be48a126486  libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/operators/serialize.cc
! e2dcec72a63b12c60fca972f5c3a49be  libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/operators/values.cc
! ff0bff18d9111d0c2de4dec9a2bde0d3  libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/requirements/explicit_instantiation/1.cc
! dd0f8e3c77f0f6f23901edd9aabc25db  libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/requirements/typedefs.cc
! 25ec458ee774f914de5611cf98ddef2d  libstdc++-v3/testsuite/26_numerics/random/normal_distribution/cons/default.cc
! 34c3593ac217eb3706b913952353c61a  libstdc++-v3/testsuite/26_numerics/random/normal_distribution/cons/parms.cc
! 75eafc099f5e6a35c572bf708ee3caa0  libstdc++-v3/testsuite/26_numerics/random/normal_distribution/operators/equal.cc
! b992fdf9ad6767ab2cdbc52b025e76f3  libstdc++-v3/testsuite/26_numerics/random/normal_distribution/operators/inequal.cc
! 86fd3f5509740688e36aa959c839f432  libstdc++-v3/testsuite/26_numerics/random/normal_distribution/operators/serialize.cc
! a180887586b1d83ffd2762d8a8f1ceb6  libstdc++-v3/testsuite/26_numerics/random/normal_distribution/requirements/explicit_instantiation/1.cc
! 41edf78e89c1b3f003aa4108f2cc28b9  libstdc++-v3/testsuite/26_numerics/random/normal_distribution/requirements/typedefs.cc
! 0f7738ea8a33287fc5603cade50c055c  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/cons/default.cc
! 8f1fe449648cd64ce323a4ed0ff0c99b  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/cons/initlist_fun.cc
! 7a3f94c94503ea068a30c736d565eddb  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/cons/num_xbound_fun.cc
! a3d0635b1a2c956b4ffed07cc6f39ceb  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/cons/range.cc
! efb45a503fae585c79fc4016b112bf78  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/operators/call-default.cc
! 1ef8798cd87069525de898562690b62a  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/operators/equal.cc
! 7a1469f0269dd0514f8a6016cf096364  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/operators/inequal.cc
! 9b9be07775fc64479458f79dd957c5f6  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/operators/serialize.cc
! 0b8090191bc7620fbd695e31bb2f59ba  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/requirements/explicit_instantiation/1.cc
! fd2ece912e8f0815ce474b0dcba69380  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/requirements/typedefs.cc
! 8975547b83d7b9f7570494bd7d2ec4dd  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/cons/default.cc
! 0ed82e3f895ce9299f3c64c5aa2e8cbb  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/cons/initlist_fun.cc
! e16f5e18b2d8aab7bbea2055fd914171  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/cons/num_xbound_fun.cc
! 2c2bbcae36ca9e89826845b7e8d27bff  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/cons/range.cc
! 7a66bf9065857f77308c74076cea88ec  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/operators/call-default.cc
! a53c123367c9c28e36ead81e2cd490d6  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/operators/equal.cc
! 12a406765f75fd2dc31fbcda95846647  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/operators/inequal.cc
! 09842e0cfef58ef3afd01db997664ce1  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/operators/serialize.cc
! 0b64b461b48162095e290e46b5d7ad80  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/requirements/explicit_instantiation/1.cc
! 0a6d4c8903314c8b8bfb4c825c499c35  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/requirements/typedefs.cc
! 519aa4085eb2c5733f6e538a60a57318  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/cons/default.cc
! 2762d82699e564c9a4c59614dd55fc14  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/cons/parms.cc
! 9ed5928fadbbec7b52eceb7ee54fb117  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/operators/equal.cc
! 8857c16187e44b2ccc1e2cf42e1862e4  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/operators/inequal.cc
! f84e6b1d4ea6cb271decf0f812b586e7  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/operators/serialize.cc
! ed53a6b841ce39c65f34dd094845cc3c  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/operators/values.cc
! b7cb1b17b661d24953c3d93ef3b3d6bf  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/requirements/explicit_instantiation/1.cc
! debb0953c38b70de90842d82c9603f04  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/requirements/typedefs.cc
! 4eeecfd63aee7ebbad34e5e96a6afde7  libstdc++-v3/testsuite/26_numerics/random/pr60037-neg.cc
! 01b44f19e774575986537208365f5c26  libstdc++-v3/testsuite/26_numerics/random/random_device/cons/default.cc
! 6453fe24d65bf059129bab4b5ccf64c2  libstdc++-v3/testsuite/26_numerics/random/random_device/cons/token.cc
! a6fc2544733940aa7998724b77a7d636  libstdc++-v3/testsuite/26_numerics/random/random_device/requirements/typedefs.cc
! 4f38cec40e80160f5975b3765cfbde76  libstdc++-v3/testsuite/26_numerics/random/ranlux24.cc
! 10ba35aff9467ba60aebf692c1c306ec  libstdc++-v3/testsuite/26_numerics/random/ranlux24_base.cc
! b57be4b2830de213de4620f066e1d151  libstdc++-v3/testsuite/26_numerics/random/ranlux48.cc
! 95f5c5df079a540b0cc77d32c54bf5e5  libstdc++-v3/testsuite/26_numerics/random/ranlux48_base.cc
! 48065ede9fdc0bda787d51ac410bb04a  libstdc++-v3/testsuite/26_numerics/random/seed_seq/cons/65631.cc
! d2088454b6031444e67a3f20444eef10  libstdc++-v3/testsuite/26_numerics/random/seed_seq/cons/default.cc
! 14425d7edb5e7dbf46082fb317d43951  libstdc++-v3/testsuite/26_numerics/random/seed_seq/cons/initlist.cc
! 2f6e316a59dda84807c9aef2c6f10ef8  libstdc++-v3/testsuite/26_numerics/random/seed_seq/cons/range.cc
! 771710071ef2030b97a67307ea571859  libstdc++-v3/testsuite/26_numerics/random/seed_seq/requirements/typedefs.cc
! 52bca3aaf95854396bc0dd3afc4bc721  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/cons/55215.cc
! 8d29bd7244b16f88c4addf82f3da16ff  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/cons/base_copy.cc
! da444a744819ba6174c00c0e72950720  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/cons/base_move.cc
! 5cbd9aad7dcf5090d34143576abf6c58  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/cons/copy.cc
! 8968be82c267e4da8be0a62b5a7a7d00  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/cons/default.cc
! 3dca060d4091fe16965bc6327a44954d  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/cons/seed1.cc
! 570b0ce96a73e99e8a973e25cba446cf  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/cons/seed2.cc
! e5bc9190be9c5c6b34cd8d5893ffa831  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/cons/seed_seq.cc
! 14d46fa03f9b1e7759c5b9c2f10b3d63  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/operators/equal.cc
! a33e0c942882b36445eae7899cc823a3  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/operators/inequal.cc
! 52566d5f5d446d39131a63d8b4dfc1c6  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/operators/serialize.cc
! 629ea69b8603120205673aadb1d1d07f  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/requirements/constants.cc
! 46eede8bc3f018f431fded6a338ea65f  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/requirements/constexpr_data.cc
! 4961b3a5fbeaf1e09b0b7b6c817563b9  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/requirements/constexpr_functions.cc
! 8adaf403297c789a2825a55dc6295c0e  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/requirements/typedefs.cc
! 64f2e221cbcb847fa783aede206b06f7  libstdc++-v3/testsuite/26_numerics/random/student_t_distribution/cons/default.cc
! 3e2079680e7634f384767e0e2b20afce  libstdc++-v3/testsuite/26_numerics/random/student_t_distribution/cons/parms.cc
! 63ae0bbdbe80f71d1633c53b9847a800  libstdc++-v3/testsuite/26_numerics/random/student_t_distribution/operators/equal.cc
! 7ad868a6b0fda29644289a90a4ab4a51  libstdc++-v3/testsuite/26_numerics/random/student_t_distribution/operators/inequal.cc
! e0cca1c48b981e432a79f3b3a625d9c9  libstdc++-v3/testsuite/26_numerics/random/student_t_distribution/operators/serialize.cc
! 1eb0a2d813c42472aa93d9b435647914  libstdc++-v3/testsuite/26_numerics/random/student_t_distribution/requirements/explicit_instantiation/1.cc
! ed163bd8166fe32bca6100ebeb929e80  libstdc++-v3/testsuite/26_numerics/random/student_t_distribution/requirements/typedefs.cc
! d4869ecde31c19e80b5845452b991c24  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/cons/55215.cc
! 2bf0cbff67934c817fea43e2f3940739  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/cons/copy.cc
! a489c8f0e912da4eafb36be3cdab53d7  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/cons/default.cc
! 9d81e350c084e3c780a81f0b23b30782  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/cons/seed1.cc
! 0f448daff50d626828d8b5d9f760b3a4  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/cons/seed2.cc
! a4839a209a8c103e622eb58c464cf496  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/cons/seed_seq.cc
! 5eebd31ad10337001e1ae8241dcf8a04  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/operators/equal.cc
! e7f73422eac498899b7bc0e57e0ec780  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/operators/inequal.cc
! 2d0b47cd3e311a31926e047f08420b83  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/operators/serialize.cc
! e4db1455287a2b60a159a7510e2d99f5  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/requirements/constants.cc
! 061c277fcbed10ad2bfa485a1f4058d3  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/requirements/constexpr_data.cc
! 9ef3b6168cff53c82a1e2e7f81c53058  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/requirements/constexpr_functions.cc
! f6af915c2ac5f6fd25da5bf49c007d94  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/requirements/typedefs.cc
! 53d79dfd7bb1789cc0e250439206b12c  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/cons/default.cc
! 4817b50c897fd96ba9edccd745918453  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/cons/parms.cc
! 5fe5396c7f2eaafac444826cad0c4320  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/operators/equal.cc
! f259e5458d027fc390dfc1311b2b4f7a  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/operators/inequal.cc
! 3453c9502958229e53d05831044a49f2  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/operators/serialize.cc
! 6a4a53cc57776219442cdab4ef4d0e53  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/operators/values.cc
! ea15e6626c2fb7b830efa14f6c070800  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/requirements/explicit_instantiation/1.cc
! 5dc6a875f50a9d53e8207cf36ac7c776  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/requirements/typedefs.cc
! 2e74941e17e47b6143893d1caaa01ba0  libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/cons/default.cc
! 8c764af2219e9e2457f279aa5c69d39c  libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/cons/parms.cc
! 8abb81cfb282c00bb2c43337f3bc9459  libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/operators/64351.cc
! d9fbffa8d1f8300d560b0795dc749d4e  libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/operators/equal.cc
! 033bf355281564a4a154d3079e9f7227  libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/operators/inequal.cc
! 9b2cfdd54776910d6d8b88eb48b5956d  libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/operators/serialize.cc
! 6b5f42d373b869ab1a9a403452dda26c  libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/requirements/explicit_instantiation/1.cc
! 053a90862df2122fbf4df9e54750d4d4  libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/requirements/typedefs.cc
! 35912e583a7d1c8029fe7258d252bf31  libstdc++-v3/testsuite/26_numerics/random/weibull_distribution/cons/default.cc
! 2de0dfead28cbdd0aa06861ce0cbdd44  libstdc++-v3/testsuite/26_numerics/random/weibull_distribution/cons/parms.cc
! 8759b83865eba9fb258fc221e5f60408  libstdc++-v3/testsuite/26_numerics/random/weibull_distribution/operators/equal.cc
! 4cfa1a00bfffdda1851f837920020637  libstdc++-v3/testsuite/26_numerics/random/weibull_distribution/operators/inequal.cc
! a2053646fd9eccdbe73ebf63716231ae  libstdc++-v3/testsuite/26_numerics/random/weibull_distribution/operators/serialize.cc
! adc5da98cce0a6086a8db912de77a7c8  libstdc++-v3/testsuite/26_numerics/random/weibull_distribution/requirements/explicit_instantiation/1.cc
! 69fdca37ac569ff610e408f2e6b58551  libstdc++-v3/testsuite/26_numerics/random/weibull_distribution/requirements/typedefs.cc
! 739ec326743d45e1602cd1b3e58b1d79  libstdc++-v3/testsuite/26_numerics/slice/1.cc
! 690050ccb1788815568ea72ef5bc1154  libstdc++-v3/testsuite/26_numerics/slice_array/array_assignment.cc
! e59d8e4618fd47419e1dcc1b8480e0b3  libstdc++-v3/testsuite/26_numerics/slice_array/requirements/explicit_instantiation.cc
! 7031421b1b60f285a7ad68bb567ec2a2  libstdc++-v3/testsuite/26_numerics/slice_array/requirements/typedefs.cc
! bf75222667f564d36e99a4a3fde11496  libstdc++-v3/testsuite/26_numerics/valarray/27867.cc
! 09eddf302b4ba4ad34786ad8d30a78c0  libstdc++-v3/testsuite/26_numerics/valarray/28277.cc
! 00223015ba800c81ede63c81a0b707f8  libstdc++-v3/testsuite/26_numerics/valarray/30416.cc
! f09ef3d1220061ace2536f1a44222e2a  libstdc++-v3/testsuite/26_numerics/valarray/33084.cc
! 4ac4ba97e0919544681923e5c9c34797  libstdc++-v3/testsuite/26_numerics/valarray/40691.cc
! 5cca4a3f9f688b2140c4baa6f61681a6  libstdc++-v3/testsuite/26_numerics/valarray/69116.cc
! 7486e25a099ee303399e0751f6e95409  libstdc++-v3/testsuite/26_numerics/valarray/algo.cc
  3e191d68e11822f58de5e4bd15365ca5  libstdc++-v3/testsuite/26_numerics/valarray/binary_closure.cc
! 2fc5eb2a7638cb00cb207b8ad5cdff82  libstdc++-v3/testsuite/26_numerics/valarray/const_bracket.cc
! 433ff32b31155480f24a001d016c5587  libstdc++-v3/testsuite/26_numerics/valarray/deduction.cc
! 77887150c45591f49c155798aa825a70  libstdc++-v3/testsuite/26_numerics/valarray/dr543.cc
! f70e3ed127cfdec6b52a59551a67411a  libstdc++-v3/testsuite/26_numerics/valarray/dr630-1.cc
! e9eac83355816d4e521b066354b231d4  libstdc++-v3/testsuite/26_numerics/valarray/dr630-2.cc
! 9682a9cb36f47d1027c4165aded6161a  libstdc++-v3/testsuite/26_numerics/valarray/dr630-3.C
! b6f20d283a4dad041560490cc7e446c2  libstdc++-v3/testsuite/26_numerics/valarray/init-list.cc
! a1ce397e17f03c42f480053346b84a3b  libstdc++-v3/testsuite/26_numerics/valarray/moveable.cc
! 47ab837be7546f18a846ed4a747222cc  libstdc++-v3/testsuite/26_numerics/valarray/name_lookup.cc
! 1cba416f6aa88637f9aca3dc7a3a47aa  libstdc++-v3/testsuite/26_numerics/valarray/noexcept_move_construct.cc
! dd99bdab65276ca880567dbc2e9d3a19  libstdc++-v3/testsuite/26_numerics/valarray/operators.cc
! 46fcdf779dff270119501af8f7e87c58  libstdc++-v3/testsuite/26_numerics/valarray/range_access.cc
! 435463ce594391cdcc97bb5fa5be345a  libstdc++-v3/testsuite/26_numerics/valarray/range_access2.cc
! a7acaa1ac2d6ceecc82cd81d79b00ad7  libstdc++-v3/testsuite/26_numerics/valarray/requirements/explicit_instantiation.cc
! 7fbe511874d47b416054c4719d0b4a53  libstdc++-v3/testsuite/26_numerics/valarray/requirements/typedefs.cc
! 0dd92fe0ee84c4d97a6cb431441936c6  libstdc++-v3/testsuite/26_numerics/valarray/subset_assignment.cc
! c3dee8382de88521a5731aa5af9bf5ab  libstdc++-v3/testsuite/26_numerics/valarray/swap.cc
! 156306857924aa088552b19e612c66ef  libstdc++-v3/testsuite/27_io/basic_filebuf/close/12790-1.cc
! 3bd56299fb1a100169845eb2d71f04c1  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/1.cc
! 8a3527d2b7fe67e4a872865152602bad  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/12790-1.cc
! a439a45f372c3404e909d258742cc190  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/12790-2.cc
! 80f8409ef90cc40949637a17fbd99f53  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/12790-3.cc
! 03b71a59894dfba3d871a567192a9dea  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/12790-4.cc
! 344c301188970c638bb2c4772c1d4eb6  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/2.cc
! eed0bc65c3b9e2607206eddc752f164a  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/3.cc
! 3bb32a92533d57702381f8580e14d9b3  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/4.cc
! 26abbb3ce81560e47b7c78e265e64e2e  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/4879.cc
! a2752518e1f37c75cb5c14fe8fc668ea  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/5.cc
! eb4bd8dac9cfda9b5d0361db19a30446  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/9964.cc
! ae71b437332209ccad905bf0a21a2aa8  libstdc++-v3/testsuite/27_io/basic_filebuf/close/wchar_t/12790-1.cc
! 9114d940c4b510e8a4e828bf6f021dfc  libstdc++-v3/testsuite/27_io/basic_filebuf/close/wchar_t/12790-2.cc
! bf15052a5bd698c453294001d3dbfd1c  libstdc++-v3/testsuite/27_io/basic_filebuf/close/wchar_t/12790-3.cc
! 93b2fa15ad730aa4c172d1575362aee4  libstdc++-v3/testsuite/27_io/basic_filebuf/close/wchar_t/12790-4.cc
! 2080fbe37a70ededb8903f97652c5c5b  libstdc++-v3/testsuite/27_io/basic_filebuf/cons/2020.cc
! 4f351ca02875c2e8f5b4307b55a9b758  libstdc++-v3/testsuite/27_io/basic_filebuf/cons/char/1.cc
! 589fd5d723676a4400dd69aecb01124d  libstdc++-v3/testsuite/27_io/basic_filebuf/cons/char/copy_neg.cc
! cd9c44c4f2cc25e020a17afd3f5737ad  libstdc++-v3/testsuite/27_io/basic_filebuf/cons/wchar_t/1.cc
! 3a1d98cb9895e79322f7b9b8eddacd6a  libstdc++-v3/testsuite/27_io/basic_filebuf/cons/wchar_t/10132-1.cc
! e181215ad053c9b113c9250d22775d11  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/12206.cc
! 665a9646b9e4cefc092bd007e91ea34f  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/1.cc
! 318ffe7c7822f0849e9f5d93e7eab17e  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/13007.cc
! 30898872be36882bbddbaeee694f1b78  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/13171-1.cc
! 9b183ca1833bbcd19d8be9dd9604b302  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/13171-2.cc
! b361b738cd9f03d7b596d87c40e1524e  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/13171-4.cc
! 73b47bd1343611eb0291d1fafca2e0c0  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/13582-2.cc
! 92924418812c3d5605ecdadc9296cc88  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/14975-1.cc
! 1a6cb220ff318979b05b6ace954077ea  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/2.cc
! 1cd10d0650f9c5146e5da95fa9ecd20d  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/3.cc
! 1f2167dcebd8af70e64bc11ec7bc21b0  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/9322.cc
! c86fef495cb11982ed61c2b744cef60c  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/1.cc
! 447f517db02260ee85db1bb2764dcf73  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/12868.cc
! 764742ab9a2727883576e116b2f636c9  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/13007.cc
! ce247f57000548376ecfa3f6af275982  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/13171-3.cc
! 174d4592a8cbcbcdb40e16334edd4223  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/13582-2.cc
! ced69bfca8dec84c13fa12e94469c220  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/13582-3.cc
! 0f725c61b487009208a713c2b1fb722d  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/14975-2.cc
! ac8d3dab2b9a14d73a636e846da010e2  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/2.cc
! 1651f7cea31548d276b17f3a1f2a71a6  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/3.cc
! e57b37feaf3d78b15ffbe3b062fc3320  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/9322.cc
! 4a47739625e59740303584ff40d48eb2  libstdc++-v3/testsuite/27_io/basic_filebuf/in_avail/char/1.cc
! dbd0120c8aea0b72e3d4b40a6eade9a5  libstdc++-v3/testsuite/27_io/basic_filebuf/in_avail/char/9701-3.cc
! 4bb382b35f10380b679ff5e2b8f62462  libstdc++-v3/testsuite/27_io/basic_filebuf/is_open/char/1.cc
! 05829df401d61381cc4f72ee9da11cc9  libstdc++-v3/testsuite/27_io/basic_filebuf/open/12790-1.cc
! 5c4f399c911aa49cd80d02a40919b11d  libstdc++-v3/testsuite/27_io/basic_filebuf/open/char/1.cc
! ce9a6a83fa791b13c0921839d6cdb3d2  libstdc++-v3/testsuite/27_io/basic_filebuf/open/char/2.cc
! 85e1290b5f947efafb8b2b000442bce1  libstdc++-v3/testsuite/27_io/basic_filebuf/open/char/3.cc
! 6b88be902a2816dd67aef8b6898a9b24  libstdc++-v3/testsuite/27_io/basic_filebuf/open/char/4.cc
! 78304bdd20036fda08264fd3ddf5ac79  libstdc++-v3/testsuite/27_io/basic_filebuf/open/char/5.cc
! a908f9098c71bcd8ed4c35c5113527d3  libstdc++-v3/testsuite/27_io/basic_filebuf/open/char/9507.cc
! 801ce52d5eefcf5fb382bf78c986afc9  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/1.cc
! cddff20562ae0725571c93e60641097e  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/13858.cc
! 77ddb422c7510778c56f429f3950f0a4  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/2-unbuf.cc
! 253d2dd7ab642c10d1fe17459d84a05c  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/2.cc
! 759bbf40a53985e16999f47e923cdf2c  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/3599.cc
! e99480bc9f922b7a50ebe63afc79db9e  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/9169.cc
! bac82ce17c49f6ee56c654fa37e87e52  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/9182-2.cc
! 31a7b6c5b6b16105a996c72a045916aa  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/9988.cc
! 53df4e18cdd2065dd824b337a4522bee  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-1.cc
! 5da520c315249813a1cdbf24b24b0a77  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-2.cc
! 1f56b0a75070bd56f227f08305add301  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-3.cc
! d6f063d7c6938ee8a95d4c6aaf9adb8e  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-4.cc
! 958b46c975daa19d6624fb051f09ed96  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/wchar_t/13858.cc
! 2a56ea8ecaa9cb0630d10f57bcac8a1f  libstdc++-v3/testsuite/27_io/basic_filebuf/pbackfail/char/9761.cc
! d4ba269c2afb0b24e61627717bce4f5c  libstdc++-v3/testsuite/27_io/basic_filebuf/requirements/base_classes.cc
! 010c0e40f07a694bf40816b010f9d990  libstdc++-v3/testsuite/27_io/basic_filebuf/requirements/explicit_instantiation.cc
! 1424525956ed9ff9488a497987d7e24b  libstdc++-v3/testsuite/27_io/basic_filebuf/requirements/typedefs.cc
! 78b85a2a7de2622c4e31b14ee6a71968  libstdc++-v3/testsuite/27_io/basic_filebuf/sbumpc/char/1-in.cc
! bf89568f641b8fb29405864045f6d2c9  libstdc++-v3/testsuite/27_io/basic_filebuf/sbumpc/char/1-io.cc
! 8e3d3cc96e61f75e257e685475540be0  libstdc++-v3/testsuite/27_io/basic_filebuf/sbumpc/char/1-out.cc
! e219d5ae222b10e71ceab06e0d5a72be  libstdc++-v3/testsuite/27_io/basic_filebuf/sbumpc/char/2-in.cc
! d229bdfa9449de3089ea3a539b3d6343  libstdc++-v3/testsuite/27_io/basic_filebuf/sbumpc/char/2-io.cc
! b218c21f6dda7826329c768d9f7a169c  libstdc++-v3/testsuite/27_io/basic_filebuf/sbumpc/char/2-out.cc
! 3b8bb25533aeb7a21f1a1105c3b59ad1  libstdc++-v3/testsuite/27_io/basic_filebuf/sbumpc/char/9825.cc
! 57d5199250deb3c7467c6cdfb2f61680  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/10132-2.cc
! 21ac429d29117da60d42d6b7acee8574  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/12790-1.cc
! 57f7539e94127f2e84b17c7925ef932a  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/12790-2.cc
! 487ee72b2a9c75733c1a12946c898338  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/12790-3.cc
! caa84e3599b3b93c9665519aa1f05fd1  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/12790-4.cc
! 8a3b8c098dbced9fe7635e38b81397ec  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/45628-2.cc
! eb95a846bdc5a19194f3370a289552be  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/1-in.cc
! 48569896a3055d7fda7d166e70c61a57  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/1-io.cc
! 89e5ce9eed3eb83b57ca3d255264beca  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/1-out.cc
! 0ca2c11be4ddbd186943630ee506c033  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/11543.cc
! b3cc7c86dee4552555b1a54bdd2836c1  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/12232.cc
! ce5ac198693041c7f1e6b177731fc560  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/12790-1.cc
! a0efde7e1cddceeb1d147de75bafb4e5  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/12790-2.cc
! 2635cb97278f95364a0173861b784053  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/12790-3.cc
! a25685c0ead1a21a74cefb6b5ce95333  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/12790-4.cc
! 6244ef65da56f5dc4f656f7279335c1e  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/2-in.cc
! 72a8d19252ee06ecc36efb49009c9ac9  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/2-io.cc
! f88bb6a7f0fb7a043b39be1d24a87190  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/2-out.cc
! f2df066baf1cef5cb8acba7860dfce4f  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/26777.cc
! 79710fdf36e542c4762a6ccb28b0c5ce  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/3-in.cc
! 4cb89ef16c95e596ceacf0c21c7a2c5c  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/3-io.cc
! 753d0998f45acae0cd28ffbe1abc41b8  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/3-out.cc
! 726d7c70afb45779e460a88cd1b78505  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/4.cc
! 08556b6861a1043655e9b661cc3fc15f  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/45628-1.cc
! 2e9c7d392d315da5e5d79f7431037ba5  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/1.cc
! 8c7d6465902d299f7c2870027356df57  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/11543.cc
! a8bb516bc2c3447a2e8e187110d50a12  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-1.cc
! 9f78fc472014c70ed76478dbd83bc75b  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-2.cc
! 33d76548a956c1d20d967946e5fe061b  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-3.cc
! 48279b7d2daece64a1ff4467f8086250  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-4.cc
! ca91e4a56b8eb42f69c5c6a5fd74dd22  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/2.cc
! 5f65ed881bb7b88003fe1c296fea6eac  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/3.cc
! 9a82f80dd0e8c3d3698e59576a79dd20  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/4.cc
! 127a66801ae92d71d7e35d409b1c0303  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/9875_seekoff.cc
! 578afe91d616fe235014d5d617b09486  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/10132-3.cc
! 7dd5839db6d1aee0a4dad957165588f1  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/12790-1.cc
! 619f37fc8504a5aa032a258d7ddbf3f5  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/12790-2.cc
! 533926d4a3d6acff37059246161c0fd3  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/12790-3.cc
! 13b163611ec13d1b2900f44fac45185a  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/1-in.cc
! 795893a674b3d3795c452ccfdb3fbe4a  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/1-io.cc
! ecd10e6503545b0cbb92e2e1646314ff  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/1-out.cc
! f6a802dff1950ae05e779add7060c8e8  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/12790-1.cc
! 49b45adacce686098a4b512aeb8c8a68  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/12790-2.cc
! dbf6a4d176f0efa673b772b46c825fa1  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/12790-3.cc
! 94973811a9a2a640273ff92e6cb4e657  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/12790-4.cc
! 5267860a2783fff7762223652eb89ad3  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/2-in.cc
! b1a5108ff1e1f187109dfeb51dbb4a8b  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/2-io.cc
! dcee7ebd9e866361d80913e63ed2d12f  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/2-out.cc
! 78a71a84e4b11f5e05bf05344a9ae98e  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/3-in.cc
! a65dc0c39b341f7f762f72224888ca60  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/3-io.cc
! 7365d3b0826a62ac0c0553e07a4923bf  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/3-out.cc
! 6779cb08af5c7524fb16fa38bc7eea0c  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/wchar_t/1.cc
! 5d3855f901d451adeb3418c511f67a66  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-1.cc
! 45f3cda1a1046a0ee25ec5d2e33531dd  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-2.cc
! 0ed9c6db247f333da06c721102a05519  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-3.cc
! b571b63a8a5392aee16a4d9d46dde9b6  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-4.cc
! 1b357f2a6a2df9f0072b9c9b020e43ab  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/wchar_t/9874.cc
! 01cacb02dab29c86b0eac49dbb9539e8  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/wchar_t/9875_seekpos.cc
! 3de622d43969436fc7851310d12a351e  libstdc++-v3/testsuite/27_io/basic_filebuf/setbuf/char/1.cc
! 10e6d89eed0841edc1113c0f45bd576a  libstdc++-v3/testsuite/27_io/basic_filebuf/setbuf/char/12875-1.cc
! 444ca824377955536404b312d2e06577  libstdc++-v3/testsuite/27_io/basic_filebuf/setbuf/char/12875-2.cc
! 7349038044fe9657c39fb6e53c0f5e37  libstdc++-v3/testsuite/27_io/basic_filebuf/setbuf/char/2.cc
! 89860b4114a83e9fdebfa54dd921d005  libstdc++-v3/testsuite/27_io/basic_filebuf/setbuf/char/3.cc
! 61de57538a73e3a6953a5caecbfac49a  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetc/char/1-in.cc
! 523da1b82753af1830013ab7ace3183e  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetc/char/1-io.cc
! 0a06e19498d278d4646fdd0d7071d6c2  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetc/char/1-out.cc
! cb242963d4c8e558b1853228788a8ff1  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetc/char/2-in.cc
! 5a7775c2269b9d3d442cc11147157301  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetc/char/2-io.cc
! 318c3049307464f78bfc7a0497fb16c1  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetc/char/2-out.cc
! 8daa585a02810d3111604aa41a65ec44  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/1-in.cc
! 5a01a3e26c09feb3d2f02fdc1fe1410d  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/1-io.cc
! 8719856423ae963a5af9576a30aa3499  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/1-out.cc
! ea26e1d40cbc811d7147e0b79db83731  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/2-in.cc
! 6582c9c7e8066c30b8c55e193cada58f  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/2-io.cc
! 881d59f9706fccb5c63a05069362a535  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/2-out.cc
! cbe4feb08e13c848aa813fc475ede0ef  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/3.cc
! de8671c3b5e1af4fcb70e531e2722720  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/81395.cc
! 0735278ca6f7d51e839542a4eae79bad  libstdc++-v3/testsuite/27_io/basic_filebuf/showmanyc/char/9533-1.cc
! edb934205f853673c10d5a934d6f83d3  libstdc++-v3/testsuite/27_io/basic_filebuf/showmanyc/char/9533-2.cc
! b141a673c203526933621f5c47485176  libstdc++-v3/testsuite/27_io/basic_filebuf/snextc/char/1-in.cc
! 022a4ec344638381efa421df4173a29b  libstdc++-v3/testsuite/27_io/basic_filebuf/snextc/char/1-io.cc
! b3aa0f2286a156b3672a0bc77563095e  libstdc++-v3/testsuite/27_io/basic_filebuf/snextc/char/1-out.cc
! 9c838fdf45c5ff0bbb7d6163aa98a64c  libstdc++-v3/testsuite/27_io/basic_filebuf/snextc/char/2-in.cc
! 059e6f1d2a050e33dbffc221efb7760b  libstdc++-v3/testsuite/27_io/basic_filebuf/snextc/char/2-io.cc
! cc91ddd9cffe81bfccb61b7ec17378c7  libstdc++-v3/testsuite/27_io/basic_filebuf/snextc/char/2-out.cc
! d721cc93d0183d410611d3628bd79d0e  libstdc++-v3/testsuite/27_io/basic_filebuf/sputbackc/char/1-in.cc
! b9fec4605cf0ad1f624e18004e7fdd27  libstdc++-v3/testsuite/27_io/basic_filebuf/sputbackc/char/1-io.cc
! 1fd8eb3b2983aab92120f587d5a66f77  libstdc++-v3/testsuite/27_io/basic_filebuf/sputbackc/char/1-out.cc
! a0cb9098e717ed8e3556f1aab01946b7  libstdc++-v3/testsuite/27_io/basic_filebuf/sputbackc/char/2-in.cc
! ba58209883bb9c5502154b2429a1e736  libstdc++-v3/testsuite/27_io/basic_filebuf/sputbackc/char/2-io.cc
! 117545075f325f4292bb1e3fc7ceba84  libstdc++-v3/testsuite/27_io/basic_filebuf/sputbackc/char/2-out.cc
! b4cfee7ec40ef30560dc30a18b65bcac  libstdc++-v3/testsuite/27_io/basic_filebuf/sputbackc/char/9425.cc
! dc351f791091dfd75686e5229dad1d27  libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/1-in.cc
! 47a0ce193f433ce23775646cf44b5049  libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/1-io.cc
! 044e112ad4e849559c663512ac2244b5  libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/1-out.cc
! ef435e406ec00e86b140a9ffafd76f77  libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/1057.cc
! ae6ab5a5f95ebcd58d84bc92c742cdf7  libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/2-in.cc
! 2f4c7c9026bbfba33295bf01404f4c61  libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/2-io.cc
! f2cb6a74cfb406aa675ded5e79b789ee  libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/2-out.cc
! f7c87f1bbbd91277452640101a04f23c  libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/59427.cc
! 108d662bc86f123d56eafcbd58ca75f6  libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/9701-2.cc
! d4d19143e26e030b64a2575e8b43b95d  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/1-in.cc
! 59e2cd22b280710a2aa6cda294c94e33  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/1-io.cc
! 379d4214b1f7e11c2f47f0c4b95c8b83  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/1-out.cc
! 8a34b25e3d4a7ebb53354761670c748c  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/1057.cc
! e70c53bc93e6b3e97c845bbdedb3c7f9  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/2-in.cc
! c9d358ed02a15d8db7f380db6644abe7  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/2-io.cc
! 68080dd073f9b919f78c1901a31b7f38  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/2-out.cc
! 23e80ab2514b634a3bec647526bed38d  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/59427.cc
! 87828632b492c37e04e060ca9cbd168f  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/9339.cc
! 6e35b8657cb767575a122df4e8ee5e18  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/9701-1.cc
! e64051deb9da0b1c0497ca5cb19503c7  libstdc++-v3/testsuite/27_io/basic_filebuf/sungetc/char/1-in.cc
! d177671a62b09719e165bb56c61c1b51  libstdc++-v3/testsuite/27_io/basic_filebuf/sungetc/char/1-io.cc
! c0d1d2334bda91244bc551dc06712513  libstdc++-v3/testsuite/27_io/basic_filebuf/sungetc/char/1-out.cc
! ef350fc33e9e9b739516b7c0d6656c80  libstdc++-v3/testsuite/27_io/basic_filebuf/sungetc/char/2-in.cc
! d217cb10fcbe141a152aacc9afe96546  libstdc++-v3/testsuite/27_io/basic_filebuf/sungetc/char/2-io.cc
! 04549cca23139f3ca66fe2c86086d359  libstdc++-v3/testsuite/27_io/basic_filebuf/sungetc/char/2-out.cc
! 8f7a45fefecb174f121d5c572e991b59  libstdc++-v3/testsuite/27_io/basic_filebuf/sync/char/1057.cc
! 962cb53fa733832dcf1f53f2a756f334  libstdc++-v3/testsuite/27_io/basic_filebuf/sync/char/9182-1.cc
! cae2c4adf1a43f6ba10da0d7f078d962  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/10096.cc
! 314e03f82374b0ce97637a36be96058d  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/char/1.cc
! e441816e330a9b705f77cadc0cae6f68  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/char/10097.cc
! bf681494e512213f6cf6057bcdd67a7f  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/char/2.cc
! c72d9ecb9bc6609b6af5e7d9ca82b642  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/char/3.cc
! 32bc9b0b6ccc043fa0af1a4470b147ee  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/char/45841.cc
! 509a113b50ddb67b7d899d1599dca480  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/char/9027.cc
! c3c21d69b34b896b1e2fd25839f6ac50  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/1.cc
! 90f71ffa6c4cfcd202596e3b2af612b9  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/11389-1.cc
! b963d7570815430cd3f79148e9000f1d  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/11389-2.cc
! 5275da790f77dd3ddb2e39850973f510  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/11389-3.cc
! 90514855b4a1c5fc57c4190768c14fc3  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/11389-4.cc
! 128bfbc9c61e431223fa379dea08dccf  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/11544-1.cc
! 12f37dbd995c20cb21fd6e880e23080c  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/11544-2.cc
! beb34320ec60b6e8b5e296b3a8ba1cf7  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/11603.cc
! d660d5c7abfd4b19951ac2e4e953f1c4  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/2.cc
! ae680667908547cf8db6598e993c68d1  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/3.cc
! 57fe978e4cb5e29ed1b99a7f71769be0  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/4.cc
! f7f326c4f65620155071f375b262ef18  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/45841.cc
! 9b9937a19f8deea32a6ee18661e2e136  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/5.cc
! 4713c9c8f8d42295003d5a771b0d5b38  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/9178.cc
! 3ad8c41da13ad35001bb0655b6a2e701  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/9520.cc
! 9e38cd88be90e8ec763de87e3b49dd0c  libstdc++-v3/testsuite/27_io/basic_fstream/53984.cc
! 7ce18a5f2c75bce1ffd96c110c723714  libstdc++-v3/testsuite/27_io/basic_fstream/assign/1.cc
! 03f4619668a4607f538d6a90c290c32d  libstdc++-v3/testsuite/27_io/basic_fstream/cons/1.cc
! 1fc10fceab89c42e970bc89801b45ee8  libstdc++-v3/testsuite/27_io/basic_fstream/cons/base.cc
! 32126f83e1960e7206eae3c489684ea9  libstdc++-v3/testsuite/27_io/basic_fstream/cons/char/1.cc
! 69413332ae3c1a2af002886b748b1f7e  libstdc++-v3/testsuite/27_io/basic_fstream/cons/move.cc
! 030ae47416184773292c8b5bec55f64a  libstdc++-v3/testsuite/27_io/basic_fstream/open/char/1.cc
! f38d9312a2ac0f04f9ee96b058be0aa1  libstdc++-v3/testsuite/27_io/basic_fstream/rdbuf/char/2832.cc
! 5e19c02f3f3d18407633c6dabdfec125  libstdc++-v3/testsuite/27_io/basic_fstream/requirements/base_classes.cc
! 306441f5d47c09431b95a647ffd45eb4  libstdc++-v3/testsuite/27_io/basic_fstream/requirements/explicit_instantiation.cc
! 51fa4bd3a2bfcd6e536a03eefac16361  libstdc++-v3/testsuite/27_io/basic_fstream/requirements/typedefs.cc
! 4ad28711fc968f01df281ae92a073963  libstdc++-v3/testsuite/27_io/basic_ifstream/assign/1.cc
! e34e9c45bee0f71138ffd4dfed5c5044  libstdc++-v3/testsuite/27_io/basic_ifstream/cons/2020.cc
! fd10550deee36d17c514f4694a4e1a93  libstdc++-v3/testsuite/27_io/basic_ifstream/cons/char/1.cc
! f4119dde7cc7fe8549f03c60737b608e  libstdc++-v3/testsuite/27_io/basic_ifstream/cons/char/2.cc
! b6baa5a3c0ab8ebf586b31b1bc4fceda  libstdc++-v3/testsuite/27_io/basic_ifstream/cons/move.cc
! bd62578bd55587b41d7942797d087edc  libstdc++-v3/testsuite/27_io/basic_ifstream/open/char/1.cc
! ec1d2cb76b980e2349fcfe98c8b4e960  libstdc++-v3/testsuite/27_io/basic_ifstream/open/char/2.cc
! 210b057b9b1aedd21406065e02e9109b  libstdc++-v3/testsuite/27_io/basic_ifstream/rdbuf/char/2832.cc
! 168b5312c5d6535d2f7644cdbef298ea  libstdc++-v3/testsuite/27_io/basic_ifstream/requirements/base_classes.cc
! 76eefe7d7047728efb55f22b7a649296  libstdc++-v3/testsuite/27_io/basic_ifstream/requirements/explicit_instantiation.cc
! 0ec3a5424f279d0f71c10b876390c31c  libstdc++-v3/testsuite/27_io/basic_ifstream/requirements/typedefs.cc
! a284610da9dd3818248b03d9896d9ced  libstdc++-v3/testsuite/27_io/basic_ios/clear/char/1.cc
! c23b33524c309195a9523aff8ca09130  libstdc++-v3/testsuite/27_io/basic_ios/cons/2020.cc
! 496d6af70081fc0b7a96b27ab249fc01  libstdc++-v3/testsuite/27_io/basic_ios/cons/char/1.cc
! a1cc8a09ea76999f08ff136019620a6f  libstdc++-v3/testsuite/27_io/basic_ios/cons/char/2.cc
! 746d5622ca6d7d84fa71aff9bef45672  libstdc++-v3/testsuite/27_io/basic_ios/cons/char/3.cc
! 9cf6d42fcd74a1665a7f562963c9d1ee  libstdc++-v3/testsuite/27_io/basic_ios/conv/bool.cc
! e2c7984be9d78e8b06cd5357f27507f7  libstdc++-v3/testsuite/27_io/basic_ios/conv/bool_neg.cc
! 1fdeca20c77b392350b4b6546a5b94f4  libstdc++-v3/testsuite/27_io/basic_ios/conv/voidptr.cc
! b004b6823e2973548a7dc6739683c822  libstdc++-v3/testsuite/27_io/basic_ios/copyfmt/char/1.cc
! a95d85e3144f9b1f3b000ec613e1f18b  libstdc++-v3/testsuite/27_io/basic_ios/copyfmt/char/2.cc
! 616118496b0625a6e1d76999b82b7c89  libstdc++-v3/testsuite/27_io/basic_ios/exceptions/char/1.cc
! ba104177be92d2a0f4d294141e6d4fd9  libstdc++-v3/testsuite/27_io/basic_ios/exceptions/char/2.cc
! 438f0eb2d554a99445792dafd362506f  libstdc++-v3/testsuite/27_io/basic_ios/imbue/14072.cc
! 6b6dc36b079dde2cdb115aac96cb3e21  libstdc++-v3/testsuite/27_io/basic_ios/locales/char/1.cc
! 530178b94c24c76b20e865c5d22cf0a6  libstdc++-v3/testsuite/27_io/basic_ios/requirements/base_classes.cc
! a8140017eadd14bc6bbcbec1145d2dde  libstdc++-v3/testsuite/27_io/basic_ios/requirements/explicit_instantiation.cc
! 8876de28afa58699eac6fd9d3bea4ef6  libstdc++-v3/testsuite/27_io/basic_ios/requirements/typedefs.cc
! 167c855eb7e003c5b2aebbc5f76c0608  libstdc++-v3/testsuite/27_io/basic_iostream/cons/16251.C
! bceb91e647048b3df05ecbed07be2df4  libstdc++-v3/testsuite/27_io/basic_iostream/cons/2020.cc
! 9b2fa11683fdf74c5d45cc39e199ff0b  libstdc++-v3/testsuite/27_io/basic_iostream/requirements/base_classes.cc
! faf34904b3ff02e34bb03d79322b7d9d  libstdc++-v3/testsuite/27_io/basic_iostream/requirements/explicit_instantiation.cc
! dd5f176a46303e1bd0290007f38d3c3a  libstdc++-v3/testsuite/27_io/basic_iostream/requirements/typedefs.cc
! 01815976ef12a1c089f0948b172f8cca  libstdc++-v3/testsuite/27_io/basic_istream/cons/3.cc
! 73cd9da9316e23a617810e562fb15cc8  libstdc++-v3/testsuite/27_io/basic_istream/exceptions/char/9561.cc
! a17f6502426c46296e82a49347510ffc  libstdc++-v3/testsuite/27_io/basic_istream/exceptions/wchar_t/9561.cc
! 8873cff82a2c9492926fe7c8a97d7d50  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/01.cc
! ad50bb0c5816dee41ec5c263167b8b28  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/02.cc
! a934ab6ee34056bc98258baee7c2151c  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/03.cc
! c4c8aa409c8b861f4ad9fa64cf7d6bb3  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/06.cc
! d5d1eb8fe8feb163b6020725a01d8a2d  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/07.cc
! 0bffb19b99db8365d33fe7d7730c6489  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/08.cc
! 247f67475984b2142891a8c5c85cd719  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/09.cc
! c34ca7044cd25f807b5695ade94e0014  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/10.cc
! b70b5488385833734b744f91efb3868f  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/11.cc
! 403744cc874eeabfa71f62e6e09440ae  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/12.cc
! 919722c34a17f1dcad03c2db09bf4e3a  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/13.cc
! d2b6734aeb14cb9a97d5ad6e11c92d66  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/9555-ia.cc
! d026ba65fa8a50f71e3f55404fa3093e  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/dr696.cc
! 81974c983d69c97e576ea38f673066a3  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/exceptions_badbit_throw.cc
! 33c15742b2de738970c3fcada4b0d03b  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/exceptions_failbit.cc
! 67c798b2ee414f868e0260ad74d18d9e  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/exceptions_failbit_throw.cc
! c10cbb39ae5b61c7905aea23b0b3e63f  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/pod/3983-1.cc
! ccf8fb66aa03606ba6a826504fb5e76f  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/01.cc
! 07058d6dfd1600330e7cb5953b31c364  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/02.cc
! d663b92810cfadd0604768644c764e26  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/03.cc
! 49763d164774744f670832d35b14049e  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/06.cc
! ffeff09f9be532515aa36bd53e30f480  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/07.cc
! 33c37ce1e752319b05860cae948cdee4  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/08.cc
! f24199e78c209a723e60139f2a7bcfeb  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/09.cc
! 3059ea19bc625a06e4b70823bda7ed94  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/10.cc
! f2a1294e91d6e751abdf5245d961018d  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/11.cc
! f3f39f34218d8043e160c90d0c027ea9  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/12.cc
! 8bde507b84ae3cd4e5db005320853bc2  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/13.cc
! 345c9b083d734f4973c3c3a6be0ff299  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/9555-ia.cc
! 099701248c50741261daccc1efeaf90d  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/dr696.cc
! 73295bab76b59277cb9851d3838345dd  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/exceptions_badbit_throw.cc
! e1d2ad9049a78d75ef076d217b287d85  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/exceptions_failbit.cc
! 6847ae54dca4b4584d02d0bed3f37a83  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/exceptions_failbit_throw.cc
! 13dc474b89be9d3cb2253bbe1d2e88db  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/1.cc
! 63837a36ff85aa73ffc415e69c1cde93  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/11095-i.cc
! 5d29ecd3ff825146c7bcaa88d6782080  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/2.cc
! 3abcdd8f3e99e171175d0213d4283b17  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/3.cc
! ff78cfe529e86f4b5afb5a2a7ce41091  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/4.cc
! dbe405311100779630e318b00043f64f  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/9555-ic.cc
! 804b704152421e2d5bfeaafb8309d29c  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/9826.cc
! 7f73f493e6c972499b4a846d83acc91e  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/pod/3983-2.cc
! fd648c2ca7eb0237999de16abce05d3b  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/wchar_t/1.cc
! 381603e650234958b1970a31d422dfe2  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/wchar_t/11095-i.cc
! 02ee2d054063f3bd3f2b4dc115117808  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/wchar_t/2.cc
! 36db9b7eaae403d487bcde2771e26a90  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/wchar_t/3.cc
! 27dbdaa18c4caa1d930f3b11822e8e4c  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/wchar_t/4.cc
! e35208fb5e97a851fdf6705b27790c3c  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/wchar_t/9555-ic.cc
! 3d6173491a16d52efb20bc2f25649cef  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/1.cc
! e59579cd8e8421a780da50ba4ce81545  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/2.cc
! 3cf594349d31c82869cf87cb8d4513ef  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/26181.cc
! a882c666eb8b039d03b929b0ebcfb3a1  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/3.cc
! e4f5b5e270dea51ed25d46eeb26c822d  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/4.cc
! b55309b7d522acc029286a9924a46a85  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/9318-in.cc
! 6e678294c97444c71f7a128cd8df6bd6  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/9424-in.cc
! f5d7db3328af2a762f613515325094de  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/9555-io.cc
! cf7dd3bfe4f8d0bed6bc1f3a3df7aafa  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/error_failbit.cc
! 2a97d0d83e95c6c97172345447e3d72a  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/exceptions_badbit_throw.cc
! 9db8c4b62ebfc6b32f48c0d3c2da6914  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/exceptions_failbit_throw.cc
! 8998790044ef744ef9dc1e86447ce0d5  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/exceptions_null.cc
! a1e912a6abc538be6ed95139200f4e78  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/pod/3983-3.cc
! af7cc40c23417586fdef443dd4a520a0  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/1.cc
! 447ed7d54b5e3f6165d767ee9e8a3a8b  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/2.cc
! 96fc4f8ed584b6d2563deb08ef409a8b  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/26181.cc
! 0c2ab505a44f98d9db53ce17471c9f9e  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/3.cc
! f123404486a73a2698914ac8a7c96d4c  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/4.cc
! def5c95e15606880584181943db2094a  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/9318-in.cc
! 983f9be1dc49ddb11dcdcb851e6fb590  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/9424-in.cc
! 62e2bf342d6ab02407a82859b875f0b6  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/9555-io.cc
! ca0a73e9e47a6b52977de20aa928b816  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/error_failbit.cc
! c2e9a1c1409ccd3fe4e0615a2512b69d  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/exceptions_badbit_throw.cc
! e50336ae6b201fcf8fe463bc120e32aa  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/exceptions_failbit_throw.cc
! bf40a04d9c256bfdd4b6579141e37893  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/exceptions_null.cc
! d3196a2f01476ff40c8b4252e562f420  libstdc++-v3/testsuite/27_io/basic_istream/get/char/1.cc
! c710e4017794d6697cc57e92ecae519e  libstdc++-v3/testsuite/27_io/basic_istream/get/char/2.cc
! 28214808aa4a650e0bac65b678cfe8fb  libstdc++-v3/testsuite/27_io/basic_istream/get/char/3.cc
! f77256191e0d71221b64f2a870a687fd  libstdc++-v3/testsuite/27_io/basic_istream/get/wchar_t/1.cc
! 262eb3a2202a5342474d7f394e4ea00e  libstdc++-v3/testsuite/27_io/basic_istream/get/wchar_t/2.cc
! 65e6431ae5b0151ab2b3a27db3dbaba4  libstdc++-v3/testsuite/27_io/basic_istream/get/wchar_t/3.cc
! ab1ae53642500355848a02e920373d15  libstdc++-v3/testsuite/27_io/basic_istream/getline/char/1.cc
! 7dccbc9338b5607e3c4475c2a2097d3a  libstdc++-v3/testsuite/27_io/basic_istream/getline/char/2.cc
! 474947f5d715054096f80c893be6456f  libstdc++-v3/testsuite/27_io/basic_istream/getline/char/3.cc
! bc4c0726e92b71e2d8e99e69e8f76e70  libstdc++-v3/testsuite/27_io/basic_istream/getline/char/4.cc
! 02b0c73c5518d93071239724ced6d9ee  libstdc++-v3/testsuite/27_io/basic_istream/getline/char/5.cc
! 22feb8fb716ec918efd10d90c367f4c2  libstdc++-v3/testsuite/27_io/basic_istream/getline/char/6.cc
! c3986f93132914e5cfc4f62bbb2c4139  libstdc++-v3/testsuite/27_io/basic_istream/getline/wchar_t/1.cc
! 276b536337ae9d1ef8f68591164ebcc3  libstdc++-v3/testsuite/27_io/basic_istream/getline/wchar_t/2.cc
! 4373a47556232d390eeae6689f230ba4  libstdc++-v3/testsuite/27_io/basic_istream/getline/wchar_t/3.cc
! 7f64717de232cacee93d14524032e35f  libstdc++-v3/testsuite/27_io/basic_istream/getline/wchar_t/4.cc
! daa9aed1159c4205031b07998f3c6a97  libstdc++-v3/testsuite/27_io/basic_istream/getline/wchar_t/5.cc
! ca913d061b46649481373577c357aba6  libstdc++-v3/testsuite/27_io/basic_istream/getline/wchar_t/6.cc
! ab0d1bb7856f0a43b4d1232916aefb90  libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/1.cc
! 64c44c473c95814480a68cc4725f2b04  libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/2.cc
! f14eceeeb01119654c96f0b50e72a666  libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/3.cc
! 141d436e674cd03cb4629970028e9745  libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/6360.cc
! b9288f166796d51ca38f39ffb9860b64  libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/7220.cc
! 660bc9f8a4b153028bae7ee13bd505a4  libstdc++-v3/testsuite/27_io/basic_istream/ignore/wchar_t/1.cc
! decb928abcab317c80efd28252626a8f  libstdc++-v3/testsuite/27_io/basic_istream/ignore/wchar_t/2.cc
! 1e5d2804869bcdf8cf1bc54057a15108  libstdc++-v3/testsuite/27_io/basic_istream/ignore/wchar_t/3.cc
! f75d967d75c3c2861a79e2d68fda450a  libstdc++-v3/testsuite/27_io/basic_istream/ignore/wchar_t/6360.cc
! 12c4b01197295fa68f57eb0f33397554  libstdc++-v3/testsuite/27_io/basic_istream/ignore/wchar_t/7220.cc
! a33e2005ed34144d091dd9272dafdef9  libstdc++-v3/testsuite/27_io/basic_istream/peek/char/1.cc
! c448de7dfa70238edbbf19ac196218c8  libstdc++-v3/testsuite/27_io/basic_istream/peek/char/12296.cc
! a55b13ac5bf839cd5af091889bb66927  libstdc++-v3/testsuite/27_io/basic_istream/peek/char/6414.cc
! 8ae0fa8e19af427a464f407f66cad239  libstdc++-v3/testsuite/27_io/basic_istream/peek/wchar_t/1.cc
! 397b8db008013d0130f170658f5a6628  libstdc++-v3/testsuite/27_io/basic_istream/peek/wchar_t/12296.cc
! 211eb18542c28b5c0a898812e0c4792e  libstdc++-v3/testsuite/27_io/basic_istream/peek/wchar_t/6414.cc
! 3b60b80b26caf29cffda50675adf6493  libstdc++-v3/testsuite/27_io/basic_istream/putback/char/1.cc
! acd185f28cdba905c6540ac225943700  libstdc++-v3/testsuite/27_io/basic_istream/putback/wchar_t/1.cc
! dfca0657adaadce0348c6d83fee6f038  libstdc++-v3/testsuite/27_io/basic_istream/read/char/1.cc
! d0b618d71e491c0eba50c4011ae5aebf  libstdc++-v3/testsuite/27_io/basic_istream/read/char/2.cc
! de0f390a68447980e7632e2facf39129  libstdc++-v3/testsuite/27_io/basic_istream/read/char/3.cc
! bc191a9275fa071f3b03108796992715  libstdc++-v3/testsuite/27_io/basic_istream/read/wchar_t/1.cc
! 12fcdb9e9732fc6a4216a45e30f0bca5  libstdc++-v3/testsuite/27_io/basic_istream/read/wchar_t/2.cc
! be39c58dd1ee7bbbf8d4da595feaaca6  libstdc++-v3/testsuite/27_io/basic_istream/read/wchar_t/3.cc
! bc30d7f2050f642d229749d002350aac  libstdc++-v3/testsuite/27_io/basic_istream/readsome/char/6746-1.cc
! 68302ddd415460011b261e116c1d0c1e  libstdc++-v3/testsuite/27_io/basic_istream/readsome/char/6746-2.cc
! dba9f73fcde9544450de9ee814916d05  libstdc++-v3/testsuite/27_io/basic_istream/readsome/char/8258.cc
! 49d700f16e47220f630aa02dd76c902f  libstdc++-v3/testsuite/27_io/basic_istream/readsome/wchar_t/6746-1.cc
! a68c8c3426a7e12be303b59f70d68a00  libstdc++-v3/testsuite/27_io/basic_istream/readsome/wchar_t/6746-2.cc
! 4a15b71a96a54baf05c5d698b6f2a568  libstdc++-v3/testsuite/27_io/basic_istream/readsome/wchar_t/8258.cc
! bba4a06a5dd70ddc90b300f3dbd7b28f  libstdc++-v3/testsuite/27_io/basic_istream/requirements/base_classes.cc
! 11b3e9a24fbfc0bd8c0e4afd53454acf  libstdc++-v3/testsuite/27_io/basic_istream/requirements/explicit_instantiation.cc
! f1b745b88fe6a37f9761db1b7a358afd  libstdc++-v3/testsuite/27_io/basic_istream/requirements/typedefs.cc
! 9cff4cabcac8d6fdd0eb380ab9f3454f  libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/2.cc
! 1a29500acff0d62cf925afaf4da94b35  libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/26211.cc
! b2a2ce3b068b93b18b70912db4f580eb  libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/8348-1.cc
! 01a4651325198d0f1f8122b704ae7710  libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/8348-2.cc
! 3767fe5de9e47974622e09379ed8fae6  libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/exceptions_badbit_throw.cc
! 3d329b7626363d8f6430a6fb707e6cc7  libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/fstream.cc
! 7b37ef28a1e9e7b9c206dd3c73594ad0  libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/sstream.cc
! 1007381760907b594f1aa9dafadbf45e  libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/2.cc
! c67b6ac58e16a9040d78955ebd2a9e45  libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/26211.cc
! 44a0aada7f70b07020b9b3475e3b09a8  libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/8348-1.cc
! 9d62b6a4be191928da45041cd8fbbf70  libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/8348-2.cc
! 233014ca1301ffc5ade897c17bd48340  libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/exceptions_badbit_throw.cc
! 9ba07bdc84308795a7ed8752e098f900  libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/fstream.cc
! cbbb96f8f6f3bb4d97fb06a0ef1b4e61  libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/sstream.cc
! 33e57e8d8c8e79678723e2f4568a0929  libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/1.cc
! fec4755b74fe2d740656fc564bd51222  libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/12297.cc
! ce11198fe6ac3b266b1a35e24672cd94  libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/2.cc
! df75e99d93c7848f521f5cff3127c2cc  libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/3.cc
! f2fcdbb63f9588d1f62cd3c82414f648  libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/53984.cc
! ea9fb8a42395013926e3648a05e86af6  libstdc++-v3/testsuite/27_io/basic_istream/sentry/pod/1.cc
! 744ae04a06db1139a9653e6de2b4b4f4  libstdc++-v3/testsuite/27_io/basic_istream/sentry/wchar_t/1.cc
! 99a436f05d02b3d0c13878354352f666  libstdc++-v3/testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc
! 40e164ecc760d433ebd29932f0b01d2c  libstdc++-v3/testsuite/27_io/basic_istream/sentry/wchar_t/2.cc
! c2e523bec7effb0cc7aa6e80c978b855  libstdc++-v3/testsuite/27_io/basic_istream/sentry/wchar_t/3.cc
! 3f86d71590eadb758d5e4fd030905491  libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/1.cc
! bb10df1958abb4d192a252eb2ace0d2a  libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/2.cc
! e4ee99b2d61e180a933511955eb9e840  libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/26211.cc
! 77a47276b63e6802561e03863d0f64c6  libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/8348.cc
! b0995b7e0abd98b12d1fe2c338e062f6  libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/exceptions_badbit_throw.cc
! 65ddf3f0b6a751bdbc70823fef8591b1  libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/fstream.cc
! 64d6ab779abedfda6a10efca62416c96  libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/sstream.cc
! 9c6a8b5a29a483510a2ca7ec61f770a0  libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/1.cc
! 7ee7bf77ba519efe457d7ed2514c294c  libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/2.cc
! ddd211ea31b17e3b9523f4e6b8efc792  libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/26211.cc
! 285650af48379d4b343e9e686a058824  libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/8348.cc
! 92e02f1a52a813058892e2ec413fa517  libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/exceptions_badbit_throw.cc
! ad61a278296623aa7d495b1508ed9951  libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/fstream.cc
! c3c8ee20797311369f2504e1afcf5e6e  libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/sstream.cc
! 3ac6346837ae2e948b43b7887ef5396f  libstdc++-v3/testsuite/27_io/basic_istream/ws/char/1.cc
! 9bd08850b4c97cda8576106ad56e651c  libstdc++-v3/testsuite/27_io/basic_istream/ws/wchar_t/1.cc
! 5b31b159f38e253370a2b9d5571600dd  libstdc++-v3/testsuite/27_io/basic_istringstream/assign/1.cc
! b6f65ef2eeb7c74f6fedbd094a27c294  libstdc++-v3/testsuite/27_io/basic_istringstream/cons/2020.cc
! bfd602338743df984ac84f99281a10b8  libstdc++-v3/testsuite/27_io/basic_istringstream/cons/move.cc
! 26149ab6c38fe4f78d9e41d423d81e46  libstdc++-v3/testsuite/27_io/basic_istringstream/rdbuf/char/2832.cc
! 275ef757ac474ea672e5fa5179871bf9  libstdc++-v3/testsuite/27_io/basic_istringstream/rdbuf/wchar_t/2832.cc
! 647817e3d981671500b1aebe5e66c56a  libstdc++-v3/testsuite/27_io/basic_istringstream/requirements/base_classes.cc
! be17366beedf5d48dfd3fc1cc8a8630d  libstdc++-v3/testsuite/27_io/basic_istringstream/requirements/explicit_instantiation.cc
! 86e9bde4d4408ec5a1e09055e9172704  libstdc++-v3/testsuite/27_io/basic_istringstream/requirements/typedefs.cc
! 8e3d2616c8009b7fd763d7ef0099edfc  libstdc++-v3/testsuite/27_io/basic_istringstream/str/char/1.cc
! 46ee7b6d19a355fa2fe781a5cb922f6c  libstdc++-v3/testsuite/27_io/basic_istringstream/str/wchar_t/1.cc
! 2aba639cd9340dc608c7de57eb498f1b  libstdc++-v3/testsuite/27_io/basic_ofstream/assign/1.cc
! 5917244e33814a9c975d16bc4af67ad8  libstdc++-v3/testsuite/27_io/basic_ofstream/cons/2020.cc
! 403b446402a2154fe6c31183cbbbfbd0  libstdc++-v3/testsuite/27_io/basic_ofstream/cons/char/1.cc
! cfffbe6e504fbc7c9ffd34e1cb4e2517  libstdc++-v3/testsuite/27_io/basic_ofstream/cons/char/2.cc
! 5bbf677c64676b609e38700908030026  libstdc++-v3/testsuite/27_io/basic_ofstream/cons/move.cc
! 6edfcc83eb39a2816502178134f4cd38  libstdc++-v3/testsuite/27_io/basic_ofstream/open/char/1.cc
! 4a5dd76ba1136bcedbe44eebaf4cb37a  libstdc++-v3/testsuite/27_io/basic_ofstream/open/char/2.cc
! e1175a34b8db76c98eeb4af5e7e05352  libstdc++-v3/testsuite/27_io/basic_ofstream/pthread2.cc
! 75686a31db3e0bc89048c244839f03e6  libstdc++-v3/testsuite/27_io/basic_ofstream/rdbuf/char/2832.cc
! a343c78d4ce6bfe753898bdc6a1b780d  libstdc++-v3/testsuite/27_io/basic_ofstream/requirements/base_classes.cc
! 800a9a4a2a004914672e8999387a7ee4  libstdc++-v3/testsuite/27_io/basic_ofstream/requirements/explicit_instantiation.cc
! fcf38fde22157a411d744fae881e6449  libstdc++-v3/testsuite/27_io/basic_ofstream/requirements/typedefs.cc
! 63e4c0f2e2a776abd581e9bb3bd54c1a  libstdc++-v3/testsuite/27_io/basic_ostream/cons/2020.cc
! 57e10816fe356de76428124762604a08  libstdc++-v3/testsuite/27_io/basic_ostream/cons/char/9827.cc
! 384852e2e6aa66ca5b9161f40e22d4ee  libstdc++-v3/testsuite/27_io/basic_ostream/cons/char/null.cc
! eb0c059d24ed2232b42794305e9d1320  libstdc++-v3/testsuite/27_io/basic_ostream/cons/wchar_t/9827.cc
! 67851cbddf531a039c1f4c8674dc076d  libstdc++-v3/testsuite/27_io/basic_ostream/endl/char/1.cc
! 21644a00386a49a8c8732062174959b4  libstdc++-v3/testsuite/27_io/basic_ostream/endl/wchar_t/1.cc
! f91d8fc1961e100d75c942a5a429a7e7  libstdc++-v3/testsuite/27_io/basic_ostream/ends/char/1.cc
! a5e8b1daf8fa207cd56adaf7213cd959  libstdc++-v3/testsuite/27_io/basic_ostream/ends/char/2.cc
! 44fd76a848d3536ef6312c88fe8fb962  libstdc++-v3/testsuite/27_io/basic_ostream/ends/wchar_t/1.cc
! e11d948f8ae93f9f620a0f3e3a52d733  libstdc++-v3/testsuite/27_io/basic_ostream/ends/wchar_t/2.cc
! 679fb0ea88460eb266584ba0c909e6ef  libstdc++-v3/testsuite/27_io/basic_ostream/exceptions/char/9561.cc
! 9bc6d5d16ac8c96042eab033ab8528d4  libstdc++-v3/testsuite/27_io/basic_ostream/exceptions/wchar_t/9561.cc
! b27d99c070973662c8496647d122996c  libstdc++-v3/testsuite/27_io/basic_ostream/flush/char/1.cc
! 0d129c3e7460090ce1783d87dca87373  libstdc++-v3/testsuite/27_io/basic_ostream/flush/char/2.cc
! 5453f212c960c87b29e2adb5f3ec0fb6  libstdc++-v3/testsuite/27_io/basic_ostream/flush/char/exceptions_badbit_throw.cc
! 5730a4a96d98ffc9ad04fde909ab687a  libstdc++-v3/testsuite/27_io/basic_ostream/flush/wchar_t/1.cc
! 2fb42bc88a20edaebe9ed0fe2b863831  libstdc++-v3/testsuite/27_io/basic_ostream/flush/wchar_t/2.cc
! 862787382acf18463ec0887dabf4162d  libstdc++-v3/testsuite/27_io/basic_ostream/flush/wchar_t/exceptions_badbit_throw.cc
! cd5866b3ba2ebb1a0aac1acc9eec769c  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/1.cc
! 04eff689c17a663806fbe0fc88146d64  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/2.cc
! 54a634b131ca745b046cb9db6d704a38  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/23871.cc
! d354c6cf73f1f88d003a04a0cee701e2  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/3.cc
! 58a44567f56a36a74948755e183da30b  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/31031.cc
! 2a3031b25bdae8f0fd0083d66a265e33  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/4.cc
! 2f804577c0a3a27c981a996aa91b9de9  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/4402.cc
! c507411d4c803e6decbaa96f45bee0d7  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/5.cc
! 9cfccd0ab819be62f9ba145a3235eda1  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/6.cc
! 1546ab15ade9fd2aa5a4e0d1035eddd4  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/7.cc
! 8d8b06735e44c05ecbe240cfd0b07c38  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/9555-oa.cc
! 9e736dbd37e95d7abbffbd7285a19ec2  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/exceptions_badbit_throw.cc
! 867fe206cfc2171d5699319fd7d3a2f7  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/exceptions_failbit_throw.cc
! 26051d283cd0639678f1d202015f7786  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/hexfloat.cc
! 58341a86b3e943fdef355754f4215847  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/pod/23875.cc
! 84f8163c4d65111889df1b0a6071b18c  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/1.cc
! 39b761a958d11b99d92db508af3c931d  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/2.cc
! 0f604f6653865c5fc5763797ae482fbf  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/3.cc
! 0f54b654850188b18e3215cc6c99b482  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/31031.cc
! 503337ee1e904120d53dbc96e1576c9c  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/4.cc
! e4d52170bd3b3a37c9fecbb54d762e23  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/4402.cc
! 1572df8fd613c307e9cae9e41ed11e14  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/5.cc
! db6b0e0468bee927ce5b96e939d70490  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/6.cc
! d47294b292d04600ddbd698db19a185f  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/7.cc
! 04ddf0ff755943b5670704a9e73be153  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/9555-oa.cc
! 112de426c9943e6ebfa0fef2bcfedd7e  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/exceptions_badbit_throw.cc
! 2ef58a47d4c119a0d82154a1a29f313f  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/exceptions_failbit_throw.cc
! 3b342ea6363445f3ee6578f8b82d78bb  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/1.cc
! 8748cf26d58bf92128542d0475136c9a  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/11095-oa.cc
! b96c4b8b19d9bdc62ad81cc122b21a8b  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/11095-ob.cc
! 73cc65b8c2f8f9c8c73cf7730c1fe3a7  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/11095-oc.cc
! e09dc482082ecf8a6a4bab58913957df  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/2.cc
! 8ee9ff73156adc745af8e27f1a115f2c  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/28277-3.cc
! ab82f9c516183bd62373bc4f8d19368e  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/28277-4.cc
! f1d5374215200eadcbd60c611739ec49  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/3.cc
! eee7284ca8161d3fc4b261eda1489fdc  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/4.cc
! 41c47e15e3dcf383fc6a4df9f8a2758f  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/5.cc
! 24be1e4d26124188ee729f3746625c7b  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/6.cc
! 81b162e79babe5fe5dfcc2a085c21a2d  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/8.cc
! e9d9b7600069046a3301c21f6461ae10  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/9555-oc.cc
! ae0b20e84b6be0fe5fb1b2fd15356546  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/1.cc
! 5aa974581b0399cf0a1c4aea847f4a64  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/11095-od.cc
! 9efd2d6c33da44cb679214c957ba3aa5  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/11095-oe.cc
! 03b4691421b98505fb4bee13db57b39c  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/11095-of.cc
! f076e104a02741f1beade6bee40e745e  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/2.cc
! e7ecb7f7c9292b32777757944b163250  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/28277-1.cc
! 797d20b9fec5eb8b1d05d9c80215ff3d  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/28277-2.cc
! 48e12a8b05969e7494c87df5cceeed43  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/28277-3.cc
! 2600a75b1b7d760d281effdcef6f35b9  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/28277-4.cc
! 506fc4b05add23acaba7c3caf500fcf7  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/3.cc
! 1a9d3c7d2cb461f3afcc3d1956c69bc3  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/4.cc
! f0543de22e9fecc87f967f8ee208582f  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/5.cc
! 93c1e5ce416f651d2e940d97ac61b7a6  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/6.cc
! e7526a678659adb753932994e4c2c386  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/7.cc
! ac0a9f9ba590c21835e264578e0e4d34  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/8.cc
! 014030fe93952ac48b220edcbf37d37b  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/9555-oc.cc
! a87f15f2e2f1beaa6304708ef406e249  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/1.cc
! 1b252d3d5f15e151e0f34aba5b3bbcfe  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/2.cc
! 8e88b988d4b83afbc1b18cce6129cd37  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/3.cc
! 39c2ff999b690aed5c57c08ed8c7fd86  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/4.cc
! c5c265bff1535e67e1c019e836cd7447  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/5.cc
! a864468e962ca23abb88784a02912b71  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/6.cc
! f63c1872eb5be01fb888e95b9b3bbff0  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/9318-out.cc
! d4d42629649beb2605d13c56b442173d  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/9424-out.cc
! 5bac67a5552c19196018712297d1a2d5  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/9555-oo.cc
! 5128b94ab156e1ee638d4491b45c22f1  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/error_code.cc
! 9a7551fa45bca64c8a1211195454ea3c  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/error_failbit.cc
! 89322e07fea6d663f2662d5c13239170  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/exceptions_badbit_throw.cc
! 713daedb1f91ab6968477c4c00163ca4  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/exceptions_failbit_throw.cc
! 249ec6ec95a6053b6748d10d155ba046  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/exceptions_null.cc
! d48be7cb40cbb7e1fea882d16d403a6f  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/1.cc
! 0a1233d41a3fa1440a97ffd262a00d8e  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/2.cc
! 138772424b09f06a1674463f99ea53aa  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/3.cc
! f7a6e112f7a902cf7cbaf05581c3439a  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/4.cc
! 789630670d102df0045904ddc97d0218  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/5.cc
! ccf4d8683fd62ab47f645844186b4a49  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/6.cc
! 1881f056324dc8dd2290713f38738cb0  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/9318-out.cc
! 7f46b964bd169a9bfedede6b34db3cb5  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/9424-out.cc
! 67984b72216a946f10486327b727e57c  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/9555-oo.cc
! e043b36ba67421f3031efad869e29afe  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/error_code.cc
! 10fb6a77d8be8f69cbf3b1715b4ce24f  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/error_failbit.cc
! f40027137571aec3b015d0b5371b48a9  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/exceptions_badbit_throw.cc
! a63545ec825e05cb7153b6dc7b6c8d3e  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/exceptions_failbit_throw.cc
! edec0bf78c31cbfd8c18e23876791b11  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/exceptions_null.cc
! faa02dd655e05d72456fffb66966455e  libstdc++-v3/testsuite/27_io/basic_ostream/put/char/1.cc
! aa37f65270b8cc3df6289e6f17e76c03  libstdc++-v3/testsuite/27_io/basic_ostream/put/wchar_t/1.cc
! 471c7a1289aa40875909c581a45bcf6b  libstdc++-v3/testsuite/27_io/basic_ostream/requirements/base_classes.cc
! 2cfa1b93bd5ee9a5b816d55169e66397  libstdc++-v3/testsuite/27_io/basic_ostream/requirements/explicit_instantiation.cc
! ea2ccd6bc18fcf153532388b0cc010be  libstdc++-v3/testsuite/27_io/basic_ostream/requirements/typedefs.cc
! 642bddd144af26b2a56ab0aadd74b5ca  libstdc++-v3/testsuite/27_io/basic_ostream/seekp/char/2346-fstream.cc
! 901697a2522c68185a2b2acd5f2d6f72  libstdc++-v3/testsuite/27_io/basic_ostream/seekp/char/2346-sstream.cc
! a32263f2b06f9ffe64b49059c6423a8a  libstdc++-v3/testsuite/27_io/basic_ostream/seekp/char/exceptions_badbit_throw.cc
! 1e2f02708723c06fae6cfbca7176a31b  libstdc++-v3/testsuite/27_io/basic_ostream/seekp/wchar_t/2346-fstream.cc
! 064e59cf6b6389c3d17963ad397cf817  libstdc++-v3/testsuite/27_io/basic_ostream/seekp/wchar_t/2346-sstream.cc
! 9163f0fdf50c9f8dd4c097294c73daae  libstdc++-v3/testsuite/27_io/basic_ostream/seekp/wchar_t/exceptions_badbit_throw.cc
! bfe1ec134d99f96326ed44c1d3e03c66  libstdc++-v3/testsuite/27_io/basic_ostream/sentry/char/1.cc
! 21d1611a51faf4688c0bb5780f966a1d  libstdc++-v3/testsuite/27_io/basic_ostream/sentry/char/2.cc
! 116c6f80ab87c695ffc1b47f8018c3b1  libstdc++-v3/testsuite/27_io/basic_ostream/sentry/pod/1.cc
! e2811e72fa18184911988ea6d3bede68  libstdc++-v3/testsuite/27_io/basic_ostream/sentry/wchar_t/1.cc
! 0b9a19a7b3ee69c06a273cabc7f8b9bd  libstdc++-v3/testsuite/27_io/basic_ostream/sentry/wchar_t/2.cc
! 2542ae98cec232331ed1f40606e4dcb7  libstdc++-v3/testsuite/27_io/basic_ostream/tellp/char/1.cc
! e5196e621c62a3deaf91fa7e4042b820  libstdc++-v3/testsuite/27_io/basic_ostream/tellp/char/2.cc
! e2153bcd47bc0387a24636bfc1ffff74  libstdc++-v3/testsuite/27_io/basic_ostream/tellp/char/exceptions_badbit_throw.cc
! 194148e818ac75a0cde829ca78d49c2e  libstdc++-v3/testsuite/27_io/basic_ostream/tellp/wchar_t/1.cc
! 79eb3e474a1b2a1fd5cb62e1d8e065ae  libstdc++-v3/testsuite/27_io/basic_ostream/tellp/wchar_t/2.cc
! 5c5c33b5bfcf7535e91265c887450c73  libstdc++-v3/testsuite/27_io/basic_ostream/tellp/wchar_t/exceptions_badbit_throw.cc
! 67d012be668d9c92c6ef456a48d39904  libstdc++-v3/testsuite/27_io/basic_ostream/write/char/1.cc
! 68259067a98a47f0ab1ead249f8cd0a7  libstdc++-v3/testsuite/27_io/basic_ostream/write/wchar_t/1.cc
! a1b058dc9b0e97c33adc931cf1ab7280  libstdc++-v3/testsuite/27_io/basic_ostringstream/assign/1.cc
! 4b1231d34a9ae9d07d0d7a1829ad2966  libstdc++-v3/testsuite/27_io/basic_ostringstream/cons/2020.cc
! c148a65f00810232ab667c84af201c86  libstdc++-v3/testsuite/27_io/basic_ostringstream/cons/char/3.cc
! a425efd1e7fd418a8c7465fff23f1f53  libstdc++-v3/testsuite/27_io/basic_ostringstream/cons/move.cc
! 5250e618ac8801b9fdd56c854bf27637  libstdc++-v3/testsuite/27_io/basic_ostringstream/cons/wchar_t/3.cc
! 7286d9d991cd1465748cdd5a2070c8c4  libstdc++-v3/testsuite/27_io/basic_ostringstream/pthread3.cc
! 80973e11f2271ff919bcb126f74b1d3b  libstdc++-v3/testsuite/27_io/basic_ostringstream/rdbuf/char/2832.cc
! 7dea38c5164342d4009bcaf59f46f3b3  libstdc++-v3/testsuite/27_io/basic_ostringstream/rdbuf/wchar_t/2832.cc
! bd5b2e20fda4b0025a41dfb8da81cf75  libstdc++-v3/testsuite/27_io/basic_ostringstream/requirements/base_classes.cc
! 0b3f693b65c2dd3fac82ce6455805911  libstdc++-v3/testsuite/27_io/basic_ostringstream/requirements/explicit_instantiation.cc
! 3b9b80ebd3f5b64e6093b2e33fa289e6  libstdc++-v3/testsuite/27_io/basic_ostringstream/requirements/typedefs.cc
! 02bcdcf90adafadb1a00ea12a4c881c5  libstdc++-v3/testsuite/27_io/basic_ostringstream/str/char/1.cc
! 8643a00bef81f4ee369276e46224ee69  libstdc++-v3/testsuite/27_io/basic_ostringstream/str/char/2.cc
! 9a223c821f7de3c9ddba14c279c89d2a  libstdc++-v3/testsuite/27_io/basic_ostringstream/str/wchar_t/1.cc
! 97ca3bd0b28f7f1005d3bff2bf4dbb7a  libstdc++-v3/testsuite/27_io/basic_ostringstream/str/wchar_t/2.cc
! 6e4d26304b3eafbd47879c6173e124f6  libstdc++-v3/testsuite/27_io/basic_streambuf/cons/2020.cc
! 5560731bb06fdc8fe508596e194da0a4  libstdc++-v3/testsuite/27_io/basic_streambuf/cons/57394.cc
! 77c17c0f4f8570107f1b682a7ceb894b  libstdc++-v3/testsuite/27_io/basic_streambuf/cons/char/1.cc
! f8d20c644f200d2ff9296f5bd08aec57  libstdc++-v3/testsuite/27_io/basic_streambuf/cons/wchar_t/1.cc
! 03dcb56952a7057e78dd51ed1cb02750  libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/char/1.cc
! 7fdedd17276929dbc00013f336ea6adc  libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/char/13007-1.cc
! e39abe9c266ab7bcebaa4a18c8f2e21d  libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/char/13007-2.cc
! 3aa09724f4c5b8400e48cf0e7a3165ff  libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/char/9322.cc
! 3b9f978086f3f0b0ae93f73655b1de24  libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/wchar_t/1.cc
! 9a9925ab2ed0cf827d17750bca24f971  libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/wchar_t/13007-1.cc
! 56e3a32eb3181fadf58cb9afaa6ef8da  libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/wchar_t/13007-2.cc
! d7b3ac4da867ccb8a2d7c1ab666c1e90  libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/wchar_t/9322.cc
! 63dc64a61fc4bbc461bdc3685212a788  libstdc++-v3/testsuite/27_io/basic_streambuf/in_avail/char/1.cc
! 5645b63828c49699d9ff2ba1cf205f33  libstdc++-v3/testsuite/27_io/basic_streambuf/in_avail/wchar_t/1.cc
! cb389490032da65959a4a7400b6cdfba  libstdc++-v3/testsuite/27_io/basic_streambuf/overflow/char/1.cc
! 01a71e1c7e587ce6b3e4d89899b609c4  libstdc++-v3/testsuite/27_io/basic_streambuf/overflow/char/2.cc
! 3db5f6834895b801d3b9168751c6810c  libstdc++-v3/testsuite/27_io/basic_streambuf/overflow/char/3599.cc
! 11879dd561f9519ce06f5eba11fe09e9  libstdc++-v3/testsuite/27_io/basic_streambuf/overflow/wchar_t/1.cc
! b65bb16ddb92c9050e40caccc731fa32  libstdc++-v3/testsuite/27_io/basic_streambuf/overflow/wchar_t/2.cc
! 4ec112f83264e1eeead9a405e4a0644e  libstdc++-v3/testsuite/27_io/basic_streambuf/overflow/wchar_t/3599.cc
! 4d8aea57a9db32ddb645f0377a3f3024  libstdc++-v3/testsuite/27_io/basic_streambuf/requirements/base_classes.cc
! e475bdef4ef741681a350e92d1a24300  libstdc++-v3/testsuite/27_io/basic_streambuf/requirements/typedefs.cc
! 0fff6b30462366d595b8373fdb734067  libstdc++-v3/testsuite/27_io/basic_streambuf/sgetc/char/1.cc
! 902cc860371d93ed62019c1b4a182465  libstdc++-v3/testsuite/27_io/basic_streambuf/sgetc/wchar_t/1.cc
! 3e5164139f63ce17feefcee0ec5eeea0  libstdc++-v3/testsuite/27_io/basic_streambuf/sgetn/char/1.cc
! 26e55207e97a3afd39936afadb01163a  libstdc++-v3/testsuite/27_io/basic_streambuf/sgetn/wchar_t/1.cc
! 5273da93ce452cd8c45b5ff20ce9d5c7  libstdc++-v3/testsuite/27_io/basic_streambuf/sputbackc/char/9538.cc
! 542097f013e3275f8f1796fcdc947331  libstdc++-v3/testsuite/27_io/basic_streambuf/sputbackc/wchar_t/9538.cc
! 0ffbb485db070cf564a4437066dd20b6  libstdc++-v3/testsuite/27_io/basic_streambuf/sputc/char/1057.cc
! d6cb0a63855621d7adab200de040f7ec  libstdc++-v3/testsuite/27_io/basic_streambuf/sputc/wchar_t/1057.cc
! cc439f1752a7ba9033f55801adb15e22  libstdc++-v3/testsuite/27_io/basic_streambuf/sputn/char/1.cc
! d1a727ed714cb1d0b208924b50c665a8  libstdc++-v3/testsuite/27_io/basic_streambuf/sputn/char/1057.cc
! 9198066fd0a905574e4e338b3ef5b0ed  libstdc++-v3/testsuite/27_io/basic_streambuf/sputn/wchar_t/1.cc
! 4041a1f5bb75f4d8d7cce4ec8b207a44  libstdc++-v3/testsuite/27_io/basic_streambuf/sputn/wchar_t/1057.cc
! 92112bd8f29d8ecb95faec6dd77679ad  libstdc++-v3/testsuite/27_io/basic_streambuf/sync/char/1057.cc
! afc5306c9dbed7ab1d2ba1a95a1cf2c4  libstdc++-v3/testsuite/27_io/basic_streambuf/sync/wchar_t/1057.cc
! a05666d4a6bb3902fb4fd711a634dc49  libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/2020.cc
! f2538f8977a27852efd185855cb67d82  libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/char/1.cc
! 6c39105203cb7fae2df6a5e631a5f159  libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/wchar_t/1.cc
! fafa19345683c2920586d7e47fd33ded  libstdc++-v3/testsuite/27_io/basic_stringbuf/imbue/char/1.cc
! 3a034726e13a2cf1624076ac578f40d6  libstdc++-v3/testsuite/27_io/basic_stringbuf/imbue/char/9322.cc
! 3eae6ff30671cbeaa4968df9f560fa0b  libstdc++-v3/testsuite/27_io/basic_stringbuf/imbue/wchar_t/1.cc
! f0474f46f471fc6882b2f18d14fcf37a  libstdc++-v3/testsuite/27_io/basic_stringbuf/imbue/wchar_t/9322.cc
! 2bf9b032e6f59e66974bae6c57541b1c  libstdc++-v3/testsuite/27_io/basic_stringbuf/in_avail/char/1.cc
! 84a102ef768b32f91cd6bbc72390b4c7  libstdc++-v3/testsuite/27_io/basic_stringbuf/in_avail/char/21955.cc
! 716a7b263e90d536ac70fdca1a3da6d1  libstdc++-v3/testsuite/27_io/basic_stringbuf/in_avail/wchar_t/1.cc
! c71681096a88c32554d8651ad13fc639  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/char/1.cc
! e91ade0b53f6d42312a332736fd3eee5  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/char/2.cc
! 1c490c2263b8551fa2cc551cf7420c8a  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/char/26250.cc
! 7c9d1d45752c9be482f9eed681e4da95  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/char/3599.cc
! 1419945711b261698855186ceb9dc802  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/char/9988.cc
! a0a2d14ea01fe64fbdf3878982b9307a  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/wchar_t/1.cc
! aed41c796078b2c05f56362c61eaf597  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/wchar_t/2.cc
! 11912d6ebb114ba2c23f8cb8b7baf434  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/wchar_t/26250.cc
! d3b13eb4f075d571486ff7ce87001a09  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/wchar_t/3599.cc
! 45b8562e0d7e2d66135f8ec7be71e0ce  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/wchar_t/9988.cc
! daa2e6033d651be3f6cc97f84020dd0c  libstdc++-v3/testsuite/27_io/basic_stringbuf/pbackfail/char/1.cc
! 75b956a799e560aaa27457833a2b77a8  libstdc++-v3/testsuite/27_io/basic_stringbuf/pbackfail/char/2.cc
! 144785296f3dd64123e01e24e83a26f0  libstdc++-v3/testsuite/27_io/basic_stringbuf/pbackfail/wchar_t/1.cc
! 451880d310d5698e3b0ac606ca755608  libstdc++-v3/testsuite/27_io/basic_stringbuf/pbackfail/wchar_t/2.cc
! cefebd37751f8baafc5e0afffcadec32  libstdc++-v3/testsuite/27_io/basic_stringbuf/requirements/base_classes.cc
! c4879e74c2421df7c766be2027964417  libstdc++-v3/testsuite/27_io/basic_stringbuf/requirements/explicit_instantiation/2.cc
! 5be08a3bb0515b50689429d7ba73758f  libstdc++-v3/testsuite/27_io/basic_stringbuf/requirements/explicit_instantiation/4.cc
! 86ebbbdc907ac15d44c550a71ea1c8cb  libstdc++-v3/testsuite/27_io/basic_stringbuf/requirements/typedefs.cc
! afa7a208d852bd971794f176cda35929  libstdc++-v3/testsuite/27_io/basic_stringbuf/sbumpc/char/1.cc
! db39d334051e3494e3968de5a26b9280  libstdc++-v3/testsuite/27_io/basic_stringbuf/sbumpc/char/9825.cc
! eab6e5fea6509143bf2a40f24ec33235  libstdc++-v3/testsuite/27_io/basic_stringbuf/sbumpc/wchar_t/1.cc
! 18d9c950da3a0f4fd3337565d883fc30  libstdc++-v3/testsuite/27_io/basic_stringbuf/sbumpc/wchar_t/9825.cc
! d2312b2d6e7768f7ce38e3c1f5f022de  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekoff/char/1.cc
! 8fb66d90838eacc5fb63ca4641ecbf5f  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekoff/char/10975.cc
! 72e643f9f439f97ceca984f1f6fbdb02  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekoff/char/16956.cc
! 33404cb36a0ad3d5fbe1546f590501c3  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekoff/char/2.cc
! 447455996a121664dc5cbb0b07f6a6e3  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekoff/wchar_t/1.cc
! fc26e0829db0d9fac5e6d1708ec7b23d  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekoff/wchar_t/10975.cc
! 4223665b4c5861adfdef57e31bf96855  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekoff/wchar_t/16956.cc
! e828daad0614d3215e86d9eadb1e28fd  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekoff/wchar_t/2.cc
! 397cf0f8c4f891fc65b38a16cddde5fc  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekpos/char/1.cc
! e9df9ac92e3d1765e1d8a77e693a942c  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekpos/char/2.cc
! 162a6030956b00450d0db027e4d5b201  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekpos/char/29354.cc
! 2729b591c17106c56a240e4d70005dc8  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekpos/char/3.cc
! 5b792fc51b782dbc417adb3b103fe7a1  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekpos/wchar_t/1.cc
! a78a1a65dce5860449239799ba535c13  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekpos/wchar_t/2.cc
! 5e05a993a9bbd71b19d3b48277c12fc5  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekpos/wchar_t/29354.cc
! 0943bd9528a4c356a65880d13bb74d7d  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekpos/wchar_t/3.cc
! cc99bcac6776453eb9e25d77fe3d8570  libstdc++-v3/testsuite/27_io/basic_stringbuf/setbuf/char/1.cc
! 8e61729f01f1d077294b834a394e5bb1  libstdc++-v3/testsuite/27_io/basic_stringbuf/setbuf/char/2.cc
! f2064e3357cc9261c65be0ad42e304b1  libstdc++-v3/testsuite/27_io/basic_stringbuf/setbuf/char/3.cc
! 83d9e84e859e41dd0ccb3173b579399f  libstdc++-v3/testsuite/27_io/basic_stringbuf/setbuf/char/4.cc
! 73eb88220e9e8d96a8a12bb0852bc2c1  libstdc++-v3/testsuite/27_io/basic_stringbuf/setbuf/wchar_t/1.cc
! 4782085fe7331315ae01ffab626149e3  libstdc++-v3/testsuite/27_io/basic_stringbuf/setbuf/wchar_t/2.cc
! 4904fe0a55ee07b9353f9526ff759021  libstdc++-v3/testsuite/27_io/basic_stringbuf/setbuf/wchar_t/3.cc
! caa4e1887f7b6c3573e79a01aa4c1791  libstdc++-v3/testsuite/27_io/basic_stringbuf/setbuf/wchar_t/4.cc
! 4f923930c53e1c06ddd5a16e22de5d7f  libstdc++-v3/testsuite/27_io/basic_stringbuf/sgetc/char/1.cc
! 95734ec24aba5d63995a2691741ffa8a  libstdc++-v3/testsuite/27_io/basic_stringbuf/sgetc/wchar_t/1.cc
! e3d73b58669fdd603e60ad1d7ba4157d  libstdc++-v3/testsuite/27_io/basic_stringbuf/sgetn/char/1.cc
! 269bc2292bfb4d199b41f032ac32d3ca  libstdc++-v3/testsuite/27_io/basic_stringbuf/sgetn/wchar_t/1.cc
! 39dc4680153103ff18491ab71710aa67  libstdc++-v3/testsuite/27_io/basic_stringbuf/snextc/char/1.cc
! 63ee39038ac5125195b3940f50ec5d67  libstdc++-v3/testsuite/27_io/basic_stringbuf/snextc/wchar_t/1.cc
! 655ab18b46924c8f63b504a6ed48e6ef  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputbackc/char/1.cc
! fccccebb5400c7a9342afffb09012505  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputbackc/char/9425.cc
! d618d9bc1dd5af92a54b92878f2365c5  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputbackc/wchar_t/1.cc
! da87e332aa3000f2e23d16fc4fc21b08  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputbackc/wchar_t/9425.cc
! 4b981bad55077fafe87b8e9b85c16b1e  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputc/char/1.cc
! e78f2b2a5e71a882c8a624ebb4fc604d  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputc/char/1057.cc
! f9bf164ff7dd0088088e70715e116f80  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputc/char/9404-1.cc
! f9ec6d314359ac829122991a3a45b76f  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputc/wchar_t/1.cc
! 58d06433cb9ebcd9cc33c288f9fe070b  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputc/wchar_t/1057.cc
! 8d66a53031c569480736c8bde980097f  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputc/wchar_t/9404-1.cc
! 9ff08fbbba8793147f3faacc64d424b4  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputn/char/1.cc
! 884192a77cd1b494598397815739edb8  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputn/char/1057.cc
! 6463cc0869eddd6c30039e01a27e81d6  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputn/char/9404-2.cc
! ee37b4ea1c3df2517d1076a5c48ee072  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputn/wchar_t/1.cc
! 0552be490b048c96e0d805fa80d05988  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputn/wchar_t/1057.cc
! 2368c924dd985771aecf202efa3535a5  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputn/wchar_t/9404-2.cc
! 51cd24bd083def4243ebecc3b448650e  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/1.cc
! 54db8894028827dddd60cedc72702785  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/2.cc
! 4d68e90772a4a54638ca9df6eca8c8ad  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/3.cc
! 5929e3295de278e4e43860c06dca7a43  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/3955.cc
! 26af9004342e2eeeea38408c5add1833  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/wchar_t/1.cc
! b1fea98c00dc750e15a1afb3ed42f229  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/wchar_t/2.cc
! 99500a23563896c63078302735718ab6  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/wchar_t/3.cc
! f504e46636c41ff693534b7fd3642ba8  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/wchar_t/3955.cc
! 33bcf46dc17631e20787a7b71abe9935  libstdc++-v3/testsuite/27_io/basic_stringbuf/sungetc/char/1.cc
! 1a672d46685416a21f9877b04e0a33bf  libstdc++-v3/testsuite/27_io/basic_stringbuf/sungetc/wchar_t/1.cc
! 9a1e2fe846fdc65cca2eed5ee15154ba  libstdc++-v3/testsuite/27_io/basic_stringbuf/sync/char/1057.cc
! 86a31838192aa8fb02cd701511acf2cf  libstdc++-v3/testsuite/27_io/basic_stringbuf/sync/wchar_t/1057.cc
! f9d9e65eec82d8ba903f79626e1b4309  libstdc++-v3/testsuite/27_io/basic_stringstream/assign/1.cc
! 8b3a3bf8f7c278817217556de0401ea5  libstdc++-v3/testsuite/27_io/basic_stringstream/assign/81338.cc
! 9ff362b3372bd9ca0910c7f6cfe17b4e  libstdc++-v3/testsuite/27_io/basic_stringstream/cons/2020.cc
! 87449105cc32edb526ef1b4087f2a29f  libstdc++-v3/testsuite/27_io/basic_stringstream/cons/move.cc
! 24314453595bfccb286e49f7475e8957  libstdc++-v3/testsuite/27_io/basic_stringstream/rdbuf/char/2832.cc
! 7e47df7ebb7c7fcde1d5b1447099b0ae  libstdc++-v3/testsuite/27_io/basic_stringstream/rdbuf/wchar_t/2832.cc
! adbdc7a20fa8a8351d6340fe5ec7973b  libstdc++-v3/testsuite/27_io/basic_stringstream/requirements/base_classes.cc
! 756f7ead3443d441f82c764ebc2a137b  libstdc++-v3/testsuite/27_io/basic_stringstream/requirements/explicit_instantiation.cc
! 68d19b51d2e1e21fc815c3977ea92c09  libstdc++-v3/testsuite/27_io/basic_stringstream/requirements/typedefs.cc
! a3bafe132fcc7f787fb8e210e0fa1792  libstdc++-v3/testsuite/27_io/basic_stringstream/str/char/1.cc
! 4f0cdaa52eeb4afbc7a3ad27c3240678  libstdc++-v3/testsuite/27_io/basic_stringstream/str/char/2.cc
! 83f0df1b7be63d468422ee2f2efad263  libstdc++-v3/testsuite/27_io/basic_stringstream/str/char/3.cc
! 73e5c9e7c2f0f286ec9520976f818616  libstdc++-v3/testsuite/27_io/basic_stringstream/str/char/4.cc
! bee488a0d205854a24d0239dd67fb684  libstdc++-v3/testsuite/27_io/basic_stringstream/str/wchar_t/1.cc
! 5e8b5d307e8051df7fd70e568dc67956  libstdc++-v3/testsuite/27_io/basic_stringstream/str/wchar_t/2.cc
! d48929e33080ffa47ff77c3a29206e81  libstdc++-v3/testsuite/27_io/basic_stringstream/str/wchar_t/3.cc
! a5d8dbf5e97c5682b4219dcc03a9593d  libstdc++-v3/testsuite/27_io/basic_stringstream/str/wchar_t/4.cc
! db8165d5da02e8da5be01e2cf46838fa  libstdc++-v3/testsuite/27_io/fpos/11450.cc
! 64c9c7bee1d427d30b6c5c629bf3be06  libstdc++-v3/testsuite/27_io/fpos/14252.cc
! d53ff8b938038dada731f62e304e2bfb  libstdc++-v3/testsuite/27_io/fpos/14320-1.cc
! 79b4628f10cbf206c3be9d8822a1e044  libstdc++-v3/testsuite/27_io/fpos/14320-2.cc
! 220f71620fc350fc273357054c8a24ce  libstdc++-v3/testsuite/27_io/fpos/14320-3.cc
! 0e8fddfbfc58eabb25cb13166f4d5f2d  libstdc++-v3/testsuite/27_io/fpos/14320-4.cc
! dce349d366a76d6b99fcdc40b2bcd0aa  libstdc++-v3/testsuite/27_io/fpos/14320-5.cc
! 6d1ee01335c8154f57dc9d302b09bc2c  libstdc++-v3/testsuite/27_io/fpos/14775.cc
! 9911e3a582c895442ebe38184ffde703  libstdc++-v3/testsuite/27_io/fpos/mbstate_t/1.cc
! 3e86e3c4dc688cbeca873ce2b138c743  libstdc++-v3/testsuite/27_io/fpos/mbstate_t/12065.cc
! 5d9fce1c08f71e6ed9d976fc44e9917e  libstdc++-v3/testsuite/27_io/fpos/mbstate_t/2.cc
! 2534d99c6d7722dc5f27b68038658343  libstdc++-v3/testsuite/27_io/fpos/mbstate_t/3.cc
! 3ae4ed5218b8aa97d5be89e2047e547f  libstdc++-v3/testsuite/27_io/fpos/mbstate_t/4_neg.cc
! 35819e2d950734ef2f44b383ce824da8  libstdc++-v3/testsuite/27_io/fpos/mbstate_t/5.cc
! c150697b3c56b3ad55a6ce77a6fb51c7  libstdc++-v3/testsuite/27_io/fpos/mbstate_t/6.cc
! e3c2b7ada6dcc845cc4420077c72b5c5  libstdc++-v3/testsuite/27_io/fpos/requirements/explicit_instantiation.cc
! c34de90938ff509cd3430bbd798e05ec  libstdc++-v3/testsuite/27_io/headers/cinttypes/std_c++0x_neg.cc
! 0b115c9e2e8e8aed7a3a3cd316b00479  libstdc++-v3/testsuite/27_io/headers/cinttypes/types_std_c++0x.cc
! 8f3532b56137177b92c7190b09ce8939  libstdc++-v3/testsuite/27_io/headers/cstdio/functions_neg.cc
! d164d520b985e8099f69afe0b47ed671  libstdc++-v3/testsuite/27_io/headers/cstdio/functions_std.cc
! 7527fff89b9630b3f27fac13b3d66da0  libstdc++-v3/testsuite/27_io/headers/cstdio/macros.cc
! 67e6b5f0f258e4317e94eaf835c7f1da  libstdc++-v3/testsuite/27_io/headers/cstdio/types_std.cc
! 546031c3dae84ba1ab2387cd03c21fc6  libstdc++-v3/testsuite/27_io/headers/fstream/synopsis.cc
! 852e1375210d315a3b96bff3a212aa36  libstdc++-v3/testsuite/27_io/headers/fstream/types_std.cc
! 2f5821d8487bdd357ec6ceeb3d51c888  libstdc++-v3/testsuite/27_io/headers/iomanip/synopsis.cc
! 4bab65f4f790783c81a7f7a407c8dc9e  libstdc++-v3/testsuite/27_io/headers/ios/synopsis.cc
! 02f334e4e8c81032c2adae06618b626f  libstdc++-v3/testsuite/27_io/headers/ios/types_std.cc
! aa131d9f1d26d5bc3585836d3e6dd748  libstdc++-v3/testsuite/27_io/headers/iostream/synopsis.cc
! c26a3167c279c2087a363cdde5e97f89  libstdc++-v3/testsuite/27_io/headers/iostream/types_std.cc
! b5eec58d6459bedb9fabfa0fa14fed1d  libstdc++-v3/testsuite/27_io/headers/istream/synopsis.cc
! 8b14a7b673270202a2da47ebb6d006bc  libstdc++-v3/testsuite/27_io/headers/istream/types_std.cc
! 549d5bccf31dd8acb3c3e34f31739807  libstdc++-v3/testsuite/27_io/headers/ostream/synopsis.cc
! da2514966a1923060e25382552bf3ed0  libstdc++-v3/testsuite/27_io/headers/ostream/types_std.cc
! a81f3a1674ec4bfd207a9764b8b407a2  libstdc++-v3/testsuite/27_io/headers/sstream/synopsis.cc
! aac0b10f753645a0fd7ded2e94d10cd2  libstdc++-v3/testsuite/27_io/headers/sstream/types_std.cc
! 8b9698631a1fcb54d6f8861804bb8a50  libstdc++-v3/testsuite/27_io/headers/streambuf/synopsis.cc
! 117172ecd96124277ed84ed89c320d87  libstdc++-v3/testsuite/27_io/headers/streambuf/types_std.cc
! 1997b6f0051d0fbe1640782f9ec2a5dd  libstdc++-v3/testsuite/27_io/ios_base/callbacks/1.cc
! 034b3b1505bbc8fb1c1f3a50e35b33db  libstdc++-v3/testsuite/27_io/ios_base/cons/assign_neg.cc
! f3b0f50b41267d10e6a5752172491482  libstdc++-v3/testsuite/27_io/ios_base/cons/copy_neg.cc
! ef6aef8a015852c2392c3b57dc3b7b42  libstdc++-v3/testsuite/27_io/ios_base/failure/cons_virtual_derivation.cc
! b6350439d59cd1e2b11b103ca093f7c9  libstdc++-v3/testsuite/27_io/ios_base/failure/cxx11.cc
! b271df431c96363d6ffd4985c54553a1  libstdc++-v3/testsuite/27_io/ios_base/failure/what-1.cc
! 32c741d42a9ae1747b98aabd3a3bb011  libstdc++-v3/testsuite/27_io/ios_base/failure/what-2.cc
! c336289ddccab920a856e96810ae4d25  libstdc++-v3/testsuite/27_io/ios_base/failure/what-3.cc
! 99cc750f15b6f5df30b0891009616c96  libstdc++-v3/testsuite/27_io/ios_base/failure/what-big.cc
! d379c99bed74b43ad7259f461e4538ac  libstdc++-v3/testsuite/27_io/ios_base/state/1.cc
! 1690c6deb7e477136318c897f60bd9b2  libstdc++-v3/testsuite/27_io/ios_base/storage/1.cc
! 875cbe67aa01d2cf265d719efaac5c99  libstdc++-v3/testsuite/27_io/ios_base/storage/11584.cc
! fb891e57b47ab7878c3597d82f288810  libstdc++-v3/testsuite/27_io/ios_base/storage/2.cc
! d58d7fe3808289362417a9dbaf18b33c  libstdc++-v3/testsuite/27_io/ios_base/storage/3.cc
! d7cc020076b0c67a379aeae4db14a13f  libstdc++-v3/testsuite/27_io/ios_base/sync_with_stdio/1.cc
! 4544a13542b43c8e1651d7b983374663  libstdc++-v3/testsuite/27_io/ios_base/sync_with_stdio/16959.cc
! 3e41da97efe3a78ace6a26cd71de47d9  libstdc++-v3/testsuite/27_io/ios_base/sync_with_stdio/2.cc
! 49a8183d55cc69000b8d2ab60290d69e  libstdc++-v3/testsuite/27_io/ios_base/sync_with_stdio/9523.cc
! b1a004127b8aea3868d945878ece8cb6  libstdc++-v3/testsuite/27_io/ios_base/types/fmtflags/bitmask_operators.cc
! fd1d58557376c9234e858bc66131f35b  libstdc++-v3/testsuite/27_io/ios_base/types/fmtflags/case_label.cc
! ccb17185d5731f9ce617e5c5eeeb4170  libstdc++-v3/testsuite/27_io/ios_base/types/fmtflags/constexpr_operators.cc
! b6abfc532677f05532d5c6f263fe04fb  libstdc++-v3/testsuite/27_io/ios_base/types/iostate/bitmask_operators.cc
! 4c08c378925aa4a7c15cba4bbf43a8b8  libstdc++-v3/testsuite/27_io/ios_base/types/iostate/case_label.cc
! efa00ef6e8168b3c6c27e28914434a03  libstdc++-v3/testsuite/27_io/ios_base/types/iostate/constexpr_operators.cc
! cd713f6cf4fc9e63981fc6679483b5ac  libstdc++-v3/testsuite/27_io/ios_base/types/openmode/bitmask_operators.cc
! badbfd923e002287fccc8d6b88c13f4a  libstdc++-v3/testsuite/27_io/ios_base/types/openmode/case_label.cc
! 7876254f61c473ff61ff5d6acf4c9ab0  libstdc++-v3/testsuite/27_io/ios_base/types/openmode/constexpr_operators.cc
! 763a742128a89bc30b09bd8866c4218c  libstdc++-v3/testsuite/27_io/ios_base/types/seekdir/case_label.cc
! 9764aa22c686e30295be7d87adfe285a  libstdc++-v3/testsuite/27_io/manipulators/adjustfield/char/1.cc
! a463fe8eea4053d9fe993d04ba65e575  libstdc++-v3/testsuite/27_io/manipulators/adjustfield/char/2.cc
! c5e98c4050f2d009a79408ec25ba52d7  libstdc++-v3/testsuite/27_io/manipulators/adjustfield/wchar_t/1.cc
! f2b8ad978af2adde0819a148dc2a7f10  libstdc++-v3/testsuite/27_io/manipulators/adjustfield/wchar_t/2.cc
! f4a5cfb89ff085f1d23bc8f362ef7e43  libstdc++-v3/testsuite/27_io/manipulators/basefield/char/1.cc
! 830b6b1331882cb1b11e18ffcb23e0a5  libstdc++-v3/testsuite/27_io/manipulators/basefield/wchar_t/1.cc
! 8b6838bab228ed79a184978207d116d6  libstdc++-v3/testsuite/27_io/manipulators/extended/get_money/char/1.cc
! 1332da1cf693024a32b0ddda8642fc13  libstdc++-v3/testsuite/27_io/manipulators/extended/get_money/char/51288.cc
! dbfb779b988aadd1dfeae4dcc31353f9  libstdc++-v3/testsuite/27_io/manipulators/extended/get_money/wchar_t/1.cc
! dfdc2ef56009438daed0850794ad7750  libstdc++-v3/testsuite/27_io/manipulators/extended/get_money/wchar_t/51288.cc
! 2755a458fe1f586d411d77a76ab1982b  libstdc++-v3/testsuite/27_io/manipulators/extended/get_time/char/1.cc
! 785b53b84d8258e18697ffa6c5a96372  libstdc++-v3/testsuite/27_io/manipulators/extended/get_time/char/2.cc
! 95aec26a838b31dbc903f28a5fba1220  libstdc++-v3/testsuite/27_io/manipulators/extended/get_time/wchar_t/1.cc
! 20ec048738589abd59bd0239adbca988  libstdc++-v3/testsuite/27_io/manipulators/extended/get_time/wchar_t/2.cc
! da22ec49964c0c264b7faaeee42c5d2c  libstdc++-v3/testsuite/27_io/manipulators/extended/put_money/char/1.cc
! 91c5fd4aa1abdb257dfa778f97c1bb15  libstdc++-v3/testsuite/27_io/manipulators/extended/put_money/char/51288.cc
! 86a1c4d034e4093307fb118e4f258829  libstdc++-v3/testsuite/27_io/manipulators/extended/put_money/wchar_t/1.cc
! a9bdc60afde1b420241c02b27b429f25  libstdc++-v3/testsuite/27_io/manipulators/extended/put_money/wchar_t/51288.cc
! 212c29edecce97b9b7837813f0b05a8c  libstdc++-v3/testsuite/27_io/manipulators/extended/put_time/char/1.cc
! 3e7a7f3a0f31adcb0f4ef9d74d5c3c32  libstdc++-v3/testsuite/27_io/manipulators/extended/put_time/char/2.cc
! 5cbd948c4c7bfa4d29806654d8f9d184  libstdc++-v3/testsuite/27_io/manipulators/extended/put_time/wchar_t/1.cc
! e5c8eccc65d06317d02fc893324c8b65  libstdc++-v3/testsuite/27_io/manipulators/extended/put_time/wchar_t/2.cc
! 3052c78f5af5d398fa4462091e0e359b  libstdc++-v3/testsuite/27_io/manipulators/standard/char/1.cc
! f2850f1bd9d1050bcf580052521c0866  libstdc++-v3/testsuite/27_io/manipulators/standard/char/2.cc
! c78772ed58a5081a7fb0995adb64a76b  libstdc++-v3/testsuite/27_io/manipulators/standard/char/60270.cc
! e113be61698f20fe30351d798f13e300  libstdc++-v3/testsuite/27_io/manipulators/standard/char/dr2344.cc
! f4bc638d2113e43c694615d032d54164  libstdc++-v3/testsuite/27_io/manipulators/standard/char/quoted.cc
! a621bdf3c22e9753655b84784026e9fd  libstdc++-v3/testsuite/27_io/manipulators/standard/wchar_t/1.cc
! 0f1504a421a5c0bd9ce790281deaa8d7  libstdc++-v3/testsuite/27_io/manipulators/standard/wchar_t/2.cc
! fbfba944a772d9bd0743cae4730feafb  libstdc++-v3/testsuite/27_io/manipulators/standard/wchar_t/dr2344.cc
! ea85c852e1ade276c417e2cc2377b8c1  libstdc++-v3/testsuite/27_io/manipulators/standard/wchar_t/quoted.cc
! 0d66f3c15bbe1cc0bd2b08192ef57d18  libstdc++-v3/testsuite/27_io/objects/char/1.cc
! 4cc3107b2bac04938642f932e9550262  libstdc++-v3/testsuite/27_io/objects/char/10.cc
! 837a6776367ec93f1ca8132c076fdd22  libstdc++-v3/testsuite/27_io/objects/char/12048-1.cc
! 541f2e3826537f66bf307493d651bca0  libstdc++-v3/testsuite/27_io/objects/char/12048-2.cc
! dbf3f87c2c62de983a50cb2851ce59e8  libstdc++-v3/testsuite/27_io/objects/char/12048-3.cc
! 4418700ace340fbfad0c0ffa6f213587  libstdc++-v3/testsuite/27_io/objects/char/12048-4.cc
! 3cc2bba3a760f12fce818db10a68699f  libstdc++-v3/testsuite/27_io/objects/char/12048-5.cc
! ede238d0fe2bf42d57cb4826d018d90c  libstdc++-v3/testsuite/27_io/objects/char/2.cc
! 6d90e8bb2e1f43baea9da068cde79a35  libstdc++-v3/testsuite/27_io/objects/char/2523-1_xin.cc
  8c1b578bb2722053c950f2cf943baf83  libstdc++-v3/testsuite/27_io/objects/char/2523-1_xin.in
! 7358468248671597028df8892edb7660  libstdc++-v3/testsuite/27_io/objects/char/2523-2_xin.cc
  daa7a5fffcba8b5ec5ca1a8de7734416  libstdc++-v3/testsuite/27_io/objects/char/2523-2_xin.in
! a43cf1dfea67d53c1395caadc9d80ae9  libstdc++-v3/testsuite/27_io/objects/char/3045.cc
! d6a2f3d1a6f3a5c5c719acd5119b58bd  libstdc++-v3/testsuite/27_io/objects/char/3647.cc
! 4499817e27fc953368aa4af9d33c1d09  libstdc++-v3/testsuite/27_io/objects/char/3_xin.cc
  b715c45a6677f269807dab0bbcf0ee1d  libstdc++-v3/testsuite/27_io/objects/char/3_xin.in
! 9a10cb3b1ee95b890c2902c963ae1535  libstdc++-v3/testsuite/27_io/objects/char/41037.cc
! 7bb89b804316943f1305d63caabc3b7d  libstdc++-v3/testsuite/27_io/objects/char/4_xin.cc
  68b329da9893e34099c7d8ad5cb9c940  libstdc++-v3/testsuite/27_io/objects/char/4_xin.in
! 1083cc18ae4eeca99b0dc7d1cb72091e  libstdc++-v3/testsuite/27_io/objects/char/5.cc
! fa8f6221e7a0b0ee134278ebb19c8cc6  libstdc++-v3/testsuite/27_io/objects/char/5268.cc
! f21dbab5940347770393e7a4247eabfa  libstdc++-v3/testsuite/27_io/objects/char/5280_xin.cc
  81dc9bdb52d04dc20036dbd8313ed055  libstdc++-v3/testsuite/27_io/objects/char/5280_xin.in
! 5a08a4edbe888f43cb4200cd6e732cc7  libstdc++-v3/testsuite/27_io/objects/char/6.cc
! f4967bd0b0672ab1d7d29f13fc8099eb  libstdc++-v3/testsuite/27_io/objects/char/6548_xin.cc
  d8e8fca2dc0f896fd7cb4cb0031ba249  libstdc++-v3/testsuite/27_io/objects/char/6548_xin.in
! 2d82a155c7b4a4d918fc4e0c793192b4  libstdc++-v3/testsuite/27_io/objects/char/6648-1_xin.cc
  069d0b68d99275bb4412e90bd9d5c966  libstdc++-v3/testsuite/27_io/objects/char/6648-1_xin.in
! 97c158bf9c902ae5904eecf92f30f2e9  libstdc++-v3/testsuite/27_io/objects/char/6648-2_xin.cc
  6b76e6feddcc145dc3499d8d123d9da7  libstdc++-v3/testsuite/27_io/objects/char/6648-2_xin.in
! 1dd35561490cc3c46bd97e8fcebb2994  libstdc++-v3/testsuite/27_io/objects/char/7.cc
! b07458ce83878d1c0c904c170ba56c1e  libstdc++-v3/testsuite/27_io/objects/char/7744_xin.cc
  0bee89b07a248e27c83fc3d5951213c1  libstdc++-v3/testsuite/27_io/objects/char/7744_xin.in
! 7594a579b77289c24bf4e0f0b6fbaf2a  libstdc++-v3/testsuite/27_io/objects/char/8.cc
! 0e9c28c6f30cc4ee49f81ed3372970a4  libstdc++-v3/testsuite/27_io/objects/char/9.cc
! 1329532d3dfdbf99e9cf2cfbc39ce763  libstdc++-v3/testsuite/27_io/objects/char/9661-1.cc
! 7db63b6a0c68559571d5130f71a1703b  libstdc++-v3/testsuite/27_io/objects/char/9661-2_xin.cc
  33ab658c3d687d1d73a0e92a596f725e  libstdc++-v3/testsuite/27_io/objects/char/9661-2_xin.in
! cce351bfba202a5cf15ee94067447da3  libstdc++-v3/testsuite/27_io/objects/char/dr455.cc
! 82f84a7b3ea13821c6c8224ce0dc1c1b  libstdc++-v3/testsuite/27_io/objects/wchar_t/1.cc
! 41b6f21e15763cb6796f0634334d8b3c  libstdc++-v3/testsuite/27_io/objects/wchar_t/10.cc
! df528e1457568ae657dfc5edf167f7ec  libstdc++-v3/testsuite/27_io/objects/wchar_t/11.cc
! 72f1b2a41230a8235478596345c6ef8f  libstdc++-v3/testsuite/27_io/objects/wchar_t/12.cc
! 5c6ec12ce1ad912610897b63ecf6d162  libstdc++-v3/testsuite/27_io/objects/wchar_t/12048-1.cc
! a0f273696f715b9b6a73b0c6c5f6bf59  libstdc++-v3/testsuite/27_io/objects/wchar_t/12048-2.cc
! c920ec2c7b78b62c9e11e90d8320d2e9  libstdc++-v3/testsuite/27_io/objects/wchar_t/12048-3.cc
! e56a304f097b6d0228403b0a78a184da  libstdc++-v3/testsuite/27_io/objects/wchar_t/12048-4.cc
! 3d7db99e297d55c7fee093d22c03e391  libstdc++-v3/testsuite/27_io/objects/wchar_t/12048-5.cc
! 89922d60c9587b2aac713520b7e945eb  libstdc++-v3/testsuite/27_io/objects/wchar_t/13.cc
! 483b92ffaceb86692d42fe5f61e2ed84  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
! 87f56180cf0a41c3a6734c569910929e  libstdc++-v3/testsuite/27_io/objects/wchar_t/2.cc
! a12016d0f2a57352d3ea873473fc08e7  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
! e6e82df0196d18c5b0d150462afb6982  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
! 652eec0331df9d089b371d0bb75dabd3  libstdc++-v3/testsuite/27_io/objects/wchar_t/3045.cc
! 0e066b11e206902ea2f9e9a4f65fa427  libstdc++-v3/testsuite/27_io/objects/wchar_t/3647.cc
! 7be4e6065b0614cbd8d63d91f83fa224  libstdc++-v3/testsuite/27_io/objects/wchar_t/3_xin.cc
  b715c45a6677f269807dab0bbcf0ee1d  libstdc++-v3/testsuite/27_io/objects/wchar_t/3_xin.in
! 790b351ba900d533df25df848f665ac9  libstdc++-v3/testsuite/27_io/objects/wchar_t/41037.cc
! 56f5d94659254233e392f74bf7c7950d  libstdc++-v3/testsuite/27_io/objects/wchar_t/4_xin.cc
  68b329da9893e34099c7d8ad5cb9c940  libstdc++-v3/testsuite/27_io/objects/wchar_t/4_xin.in
! 90474f10f1302f6fb3f25b2e901c42fb  libstdc++-v3/testsuite/27_io/objects/wchar_t/5.cc
! a5378e4ed50e8c859e25385439d51518  libstdc++-v3/testsuite/27_io/objects/wchar_t/5268.cc
! 10d6d607f81eab65f12c655fb2ecb1b3  libstdc++-v3/testsuite/27_io/objects/wchar_t/5280_xin.cc
  e7df7cd2ca07f4f1ab415d457a6e1c13  libstdc++-v3/testsuite/27_io/objects/wchar_t/5280_xin.in
! db9ea2c9d0836059ac6a46d58649d621  libstdc++-v3/testsuite/27_io/objects/wchar_t/6.cc
! e2600adbd9b8b290c9d1d73612745f8a  libstdc++-v3/testsuite/27_io/objects/wchar_t/6548_xin.cc
  d8e8fca2dc0f896fd7cb4cb0031ba249  libstdc++-v3/testsuite/27_io/objects/wchar_t/6548_xin.in
! d437a135249fa16a9af261d7cb99dda9  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
! 044ac278e985ed3ab8723f2cc90c726a  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
! c769a5ab03c3dfb692bc9e8e15d8b444  libstdc++-v3/testsuite/27_io/objects/wchar_t/7.cc
! 0ad9bb771fe77c0923c35e0ecc2cb805  libstdc++-v3/testsuite/27_io/objects/wchar_t/7744_xin.cc
  0bee89b07a248e27c83fc3d5951213c1  libstdc++-v3/testsuite/27_io/objects/wchar_t/7744_xin.in
! 5fb7900637cc614bedc8e1602b89c5bf  libstdc++-v3/testsuite/27_io/objects/wchar_t/8.cc
! 91171ff4f2d5104d81d3f1ad488a14c6  libstdc++-v3/testsuite/27_io/objects/wchar_t/9520.cc
! 95456e5a8738ec4d9cab476b940b42a4  libstdc++-v3/testsuite/27_io/objects/wchar_t/9661-1.cc
! 777ea80a2d170c215eff8e5327dd5e1c  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
! f90a6c73f776a99626c84453d9b85742  libstdc++-v3/testsuite/27_io/objects/wchar_t/9662.cc
! d6777deb3560401d3084579d4d20df16  libstdc++-v3/testsuite/27_io/objects/wchar_t/9_xin.cc
  b715c45a6677f269807dab0bbcf0ee1d  libstdc++-v3/testsuite/27_io/objects/wchar_t/9_xin.in
! fc7931c34f4b1ad153a2c42bcb156f22  libstdc++-v3/testsuite/27_io/objects/wchar_t/dr455.cc
! 2ecc2c4611b66dc4bfd935fe38538b06  libstdc++-v3/testsuite/27_io/rvalue_streams-2.cc
! 6e4d71d38b684eeacf307017e9dd75bb  libstdc++-v3/testsuite/27_io/rvalue_streams.cc
! af523c706aa75b7dbc6d01334d6dfd08  libstdc++-v3/testsuite/27_io/types/1.cc
! 1e0a4943353f0eb182b320a72555e207  libstdc++-v3/testsuite/27_io/types/2.cc
! ed80415a368e4f4508bc9be90d4efe5e  libstdc++-v3/testsuite/27_io/types/3.cc
! 82a9087671ca7a0eca73553cac097a44  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/awk/cstring_01.cc
! dbf078795812c02d1101919cb924abbc  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/basic/empty_range.cc
! a79328fd7c8d996f0ff082dedf61af6b  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/basic/string_01.cc
! 1b69cad4cf34c31343d0eff910e28a45  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/basic/string_range_00_03.cc
! f97a4d3479fbf681416feab02afbdaa4  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/basic/string_range_01_03.cc
! ba62593d9b79adda137750a1b079d896  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/basic/string_range_02_03.cc
! 96046fdb2d1cfc5909eea212e9784eb9  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/cstring_bracket_01.cc
! 6daf46477d098bd0d6c23d7201dcb181  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/dr2329_neg.cc
! c3211b3ba15ed55c393000c32f9d2336  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/53622.cc
! c023af62db32a9fd8789bd89a0b04b9c  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/57173.cc
! cd8c0a2e33b0827c4592c7eb7d456e0e  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/58576.cc
! 9fdb287b70a2a19b4a230ce8775f4ad7  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/61601.cc
! 00e72c9691f8b017479a3f1513c1f07b  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/68863.cc
! 9a4d46e25d1524bd8b382254bba31db0  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/anymatcher.cc
! 8a54101f326164d80ea361e751ceb4c0  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/backref.cc
! 124ad0034d6c6f1f80479de96e8f716d  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/empty_range.cc
! 2f096e11e07d30b428d1fe802e41299f  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/emptygroup.cc
! 095c0aace47416a63eb8fae17149da4a  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/hex.cc
! 8e230ae8010cf109cd3cb4b00008cbe9  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/quoted_char.cc
! 9f9d8696dec8b90b2aa924e54767fc2e  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/ungreedy.cc
! 2efc24bb57e6652d5a1f6b197b9a6d3e  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/63199.cc
! 2995786f08f7afa69a7c3f9f54f5520b  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/anymatcher.cc
! b30c6493b1c4caf96a310954263c3a68  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/cjk_match.cc
! 86af43dcc7e7406750572d66274feb61  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/hex.cc
! e236c5da7a58e7bbb716b055a7b260a4  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/cstring_plus.cc
! 33adfdafef85c9b97a9b6578cb6fed22  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/cstring_questionmark.cc
! fbfabe1fa27ebc217d15b7fc0c9c027d  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/cstring_range.cc
! 062c9e9e67d7b5627b6c6a92dcdbb3bb  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/string_any.cc
! 69bd9fb15e22872d0468c76df51aa36d  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/string_range_00_03.cc
! 4465b552c7eb47199b1a3bee76e858ab  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/string_range_01_03.cc
! f8e32c87dcf3c70380a42e6b139fca0c  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/string_range_02_03.cc
! fd4067fb591922a1e99217dcd88b31a6  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/wstring_locale.cc
! ca494f19a08c6995a4a9c4b4bc7e6fcc  libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/char/51711.cc
! efc409b356959f6e6b0a16cd82fd22d4  libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/char/basic_replace.cc
! ae9acabba006801fe80e1dcd3f767606  libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/char/dr2213.cc
! 9bf97c3a8570c63df164124cda834c69  libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/wchar_t/51711.cc
! 4244b83eccea605d0e08b36e08d0dedd  libstdc++-v3/testsuite/28_regex/algorithms/regex_search/61424.cc
! a31880d8ad4694027b9436124827f3ad  libstdc++-v3/testsuite/28_regex/algorithms/regex_search/61720.cc
! b362da8ff1685f657cd390c79ac49b03  libstdc++-v3/testsuite/28_regex/algorithms/regex_search/basic/string_01.cc
! e40bcc670f7902da7a63025f512ef060  libstdc++-v3/testsuite/28_regex/algorithms/regex_search/dr2332_neg.cc
! a2611078a879223f6e909af630779f22  libstdc++-v3/testsuite/28_regex/algorithms/regex_search/ecma/assertion.cc
! eb6d7bdecc6f45ed67680323612f827e  libstdc++-v3/testsuite/28_regex/algorithms/regex_search/ecma/flags.cc
! 716acf020114b0061ce977ae998a2525  libstdc++-v3/testsuite/28_regex/algorithms/regex_search/ecma/greedy.cc
! 7f3eb9e8bb9790b3038bd637dadda05c  libstdc++-v3/testsuite/28_regex/algorithms/regex_search/ecma/string_01.cc
! 532fa6af17ce68e0f476f526935f85ff  libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/cstring.cc
! 8b053351e50b33b91421a0b84fa408c7  libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/cstring_op.cc
! cbe9df31ac56788b2b32c5455bf051d5  libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/moveable.cc
! 6af8afe6d4dd94e85b96e7c77b111ce3  libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/pstring.cc
! cdd8e61a4a04b829318e023784f27165  libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/range.cc
! 668ee237ee0a1f99976ed31210f837c6  libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/string.cc
! b0f5cc8be79830090915d96b9ec1b43c  libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/string_op.cc
! b52bff442d074e0542603acecde7345f  libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/cstring.cc
! 255312863870b0a29179c487d35ad437  libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/cstring_op.cc
! 79f40567176b2d653256e6c32584b26d  libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/pstring.cc
! e7a32f176e8ff753b91b35b9ea4b64c6  libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/range.cc
! 94d6d74e694e7f9249861cb579416473  libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/string.cc
! 6eb46141aa2f6b3c6b7f2e7faab2ca15  libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/string_op.cc
! e4c27095034800a082d72a80a58399b0  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/47724.cc
! 74bec8544e256a4e7e3ee73b36ae3dd9  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/83598.cc
! dd63937b8c263de0a49ef7b0dcf84481  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/cstring.cc
! 59733bb8d3ec4c6a29c6db5dd0e9dfa3  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/default.cc
! 1f2aed16200172a658646299e552350c  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/iter.cc
! b2f2a668faf66b2f68311d8e206c812f  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/pstring_char.cc
! 1a2305da0e3f4f156b62d2e87c38f6fe  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/pstring_wchar_t.cc
! 844315c2ccbcc4b3f482670fce301842  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/raw_string.cc
! 1c2b6c3c6dab5bc11e61c0f6d10667ea  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/string_range_01_02_03.cc
! 3ee7fc794b713bb83124113f5062e9f4  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/cstring.cc
! b48582f3249ba7d626e19c915eecf4ff  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/cstring_awk.cc
! 1fb79b78cc3f59d1da2435984c2b49d7  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/cstring_ecma.cc
! b6b9a84836a88d9bc71e5864af339a79  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/cstring_egrep.cc
! 15a1e36f4cac7e38144c14f47ac9cc78  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/cstring_grep.cc
! 18bdb79004a3be1285ee12cb2dec2067  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/default.cc
! f46ecbef384bbdc569c9a496295df07b  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/range.cc
! 03d6f60cf63840f822a0c85de1de74a4  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/copy_char.cc
! 586b7a9a13059cb2904f38d9a1c4feab  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/extended/cstring.cc
! f01cb0ef7679564dc4482462c7e7d646  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/extended/string_range_01_02_03.cc
! d25bbe2ddcb5b0540adf968d83b5bc2e  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/move_char.cc
! 9fa6fd989e81332b4df30de8bcea7505  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/string_char.cc
! ccdf49d17e4ddae96ab3b2faebea17bc  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/string_wchar_t.cc
! cf4cad00aa10c2f08194e79deda281d3  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/wchar_t/cstring.cc
! 39b499eb1d365d88ca1aac43a85d6578  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/wchar_t/default.cc
! badb7bfd363ab2055ac1fd4f20282eb6  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/wchar_t/range.cc
! 6dab219a802fb1c361bf918784389215  libstdc++-v3/testsuite/28_regex/basic_regex/imbue/string.cc
! ee7ff92ac85cbd17de7a059729489651  libstdc++-v3/testsuite/28_regex/basic_regex/multiple_quantifiers.cc
! 8efbe425ec99f0e8f94a206eeeaa94d4  libstdc++-v3/testsuite/28_regex/basic_regex/requirements/constexpr_data.cc
! d327c9271f86ca07f891f0778b0e0d8c  libstdc++-v3/testsuite/28_regex/constants/constexpr.cc
! 39752b24135255e4127ec52b80925fd0  libstdc++-v3/testsuite/28_regex/constants/error_type.cc
! 438407717ab9463ead1a84f0aba9fc57  libstdc++-v3/testsuite/28_regex/constants/match_flag_type.cc
! df92857670824d7c7eb2cb02b8ceaddb  libstdc++-v3/testsuite/28_regex/constants/syntax_option_type.cc
! e5a010e0cf2d39045596e4e23db5851b  libstdc++-v3/testsuite/28_regex/headers/regex/std_c++0x_neg.cc
! a3cab7d7dbf4fcc260220d5f1232a0ae  libstdc++-v3/testsuite/28_regex/init-list.cc
! f0e0a8924bdef9095e6aea8df1258fb7  libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/char/64140.cc
! 8f0739c01267d7336d80bd49afccc562  libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/char/string_01.cc
! 81a29bec1ac18b65dee40043b15dcba3  libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/char/string_position_01.cc
! 178f6feccc952aace20bda8ade195ebf  libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/ctors/char/default.cc
! cf981cb5aeb01d787db91dde3141b764  libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/ctors/char/dr2332_neg.cc
! a1be9bd878a3b75eb47fe82057673b6f  libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/ctors/wchar_t/default.cc
! 7cd2a1f72e7dff3fa09d6b3cc2d7236f  libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/typedefs.cc
! 19c6fb325bb64f8daca3dc1c7f456d12  libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/wchar_t/string_01.cc
! 07bb6f6eec52151b33f6ee4692d2f5d5  libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/wchar_t/string_02.cc
! 34bb193cd28507f50ca1339d9889a139  libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/64303.cc
! 2adef8831752c75d1d5785bc1c47d344  libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/char/string_01.cc
! a9b7cda78d776a9d4324dd8e3b092a1a  libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/ctors/char/default.cc
! cf84f51dceb646aa43c8b5f30b67a090  libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/ctors/char/dr2332_neg.cc
! 3b8f5f71d93c972ff0c1b8c337fbec20  libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/ctors/wchar_t/default.cc
! 12f2034ad29ae85c84858bbd1087026e  libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/typedefs.cc
! d5e6e6bc0d35d8d47a515a353c2012a5  libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/wchar_t/string_01.cc
! 37674e10d838b935f770f9de608f8363  libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/wchar_t/wstring_02.cc
! 0ba4f8ebfb383f53a7755d6afad6ab93  libstdc++-v3/testsuite/28_regex/match_results/ctors/char/default.cc
! 410c99a09824f962af75b0aef6d4fe44  libstdc++-v3/testsuite/28_regex/match_results/ctors/wchar_t/default.cc
! 3fd49d353778f7abc7edcc205a532a25  libstdc++-v3/testsuite/28_regex/match_results/format.cc
! f94583058c8bbc9a647ec2ce6a8b566a  libstdc++-v3/testsuite/28_regex/match_results/out_of_range_submatches.cc
! d61fcc5b293f68338fcfd0692c324f5b  libstdc++-v3/testsuite/28_regex/match_results/swap.cc
! d4b211e9141fa34d0301b6ae79e1e875  libstdc++-v3/testsuite/28_regex/match_results/typedefs.cc
! 04d48626bdaecf691cd625120803981d  libstdc++-v3/testsuite/28_regex/range_access.cc
! 3009aae4cc71beedcb415d1a7ea37276  libstdc++-v3/testsuite/28_regex/regex_error/base.cc
! 9f983d40403f577ff2cde09d3fb2d91a  libstdc++-v3/testsuite/28_regex/regex_error/regex_error.cc
! 239f64ccdd6419962fcb565449b99352  libstdc++-v3/testsuite/28_regex/regression.cc
! 45dfb81a440f3594bc00aa8b97380f11  libstdc++-v3/testsuite/28_regex/requirements/typedefs.cc
! 477dfb9f071310cae51c977173ae0c42  libstdc++-v3/testsuite/28_regex/sub_match/cast_char.cc
! cbf0f93a4f9c4776973ce87187fa5bcf  libstdc++-v3/testsuite/28_regex/sub_match/cast_wchar_t.cc
! a22a80c6d6d989b416ed4ec526a2fa03  libstdc++-v3/testsuite/28_regex/sub_match/embedded_zeros_cmp.cc
! 16402033e57fad87504b3f9c2cc3f3a1  libstdc++-v3/testsuite/28_regex/sub_match/length.cc
! 7ce5cab24a1180b56eb1d9bdfb451314  libstdc++-v3/testsuite/28_regex/sub_match/typedefs.cc
! 74781bb09f2c7e35c6d93d23914295a8  libstdc++-v3/testsuite/28_regex/traits/char/ctor.cc
! 238efb57b35045857c9a557f6136312e  libstdc++-v3/testsuite/28_regex/traits/char/icase.cc
! e342e387b73505c3797f59ebc1be0c33  libstdc++-v3/testsuite/28_regex/traits/char/isctype.cc
! ffcec1076825ab9e20f7139406d6bfa2  libstdc++-v3/testsuite/28_regex/traits/char/length.cc
! cdc1fdd335942f4558a65d7d79174f56  libstdc++-v3/testsuite/28_regex/traits/char/lookup_classname.cc
! c9b566e847c1d8da3326626ab4caf823  libstdc++-v3/testsuite/28_regex/traits/char/lookup_collatename.cc
! 26b0f55e92e03f3ce2da7ced63db51a2  libstdc++-v3/testsuite/28_regex/traits/char/transform.cc
! 9b49ad440021c0886d36625298a59b9c  libstdc++-v3/testsuite/28_regex/traits/char/transform_primary.cc
! 51755fdb837b30dd9e954ff1e8a8f2da  libstdc++-v3/testsuite/28_regex/traits/char/translate.cc
! cf015946f3217cb3fd460503daf9c91b  libstdc++-v3/testsuite/28_regex/traits/char/translate_nocase.cc
! 5cdd12b18c93fddfdd89f09f6b8eac00  libstdc++-v3/testsuite/28_regex/traits/char/user_defined.cc
! 34b10c0c80c9e22cd2dc52bf268aaf6a  libstdc++-v3/testsuite/28_regex/traits/char/value.cc
! d2c728d031b5c3b08bcb9ebda906761a  libstdc++-v3/testsuite/28_regex/traits/wchar_t/ctor.cc
! 87ba048541a07444d688015c0a2e4120  libstdc++-v3/testsuite/28_regex/traits/wchar_t/isctype.cc
! d3ff405188ea9e2f085710ca741b1172  libstdc++-v3/testsuite/28_regex/traits/wchar_t/length.cc
! f4feb1749d9abe8b029502b2585b18c1  libstdc++-v3/testsuite/28_regex/traits/wchar_t/lookup_classname.cc
! 7a64bc1dbdeefd0e046057060c6032b7  libstdc++-v3/testsuite/28_regex/traits/wchar_t/lookup_collatename.cc
! 930e2b7fcae86c98021f0a2243df557e  libstdc++-v3/testsuite/28_regex/traits/wchar_t/transform.cc
! 7c5bcb1b91c349fca2286bec0c475bf6  libstdc++-v3/testsuite/28_regex/traits/wchar_t/transform_primary.cc
! 3ba5982af78ba923df7f6f221411aa13  libstdc++-v3/testsuite/28_regex/traits/wchar_t/translate.cc
! 083fdca75f1af6d94fac7df271992ca1  libstdc++-v3/testsuite/28_regex/traits/wchar_t/translate_nocase.cc
! 3efc544972b4a394c460b64c130ec314  libstdc++-v3/testsuite/28_regex/traits/wchar_t/user_defined.cc
! 1ca48e5f7ea6d43eb7fc3ef1409d9117  libstdc++-v3/testsuite/28_regex/traits/wchar_t/value.cc
! 1908e5f5c2395b7c9ff87b684feafea0  libstdc++-v3/testsuite/29_atomics/atomic/60658.cc
! 326a70b07f27d26001eb35b53f3b7258  libstdc++-v3/testsuite/29_atomics/atomic/60695.cc
! e27e8e1c28baac455d155d4bc432da60  libstdc++-v3/testsuite/29_atomics/atomic/62259.cc
! a4803e13eeb5acbb1e8bf421963b8b88  libstdc++-v3/testsuite/29_atomics/atomic/64658.cc
! e818bd564952bec80c873940d9865d62  libstdc++-v3/testsuite/29_atomics/atomic/65147.cc
! 16560cc11f0d74f32bb52273dd27dc0a  libstdc++-v3/testsuite/29_atomics/atomic/65913.cc
! 91fa5fb74d19cc4c7ccaf8bf7ce5490a  libstdc++-v3/testsuite/29_atomics/atomic/69301.cc
! 03b1c6d91e133645ef7367d054654173  libstdc++-v3/testsuite/29_atomics/atomic/70766.cc
! 9e64acaa49bcf5e345adaf6827c86ae9  libstdc++-v3/testsuite/29_atomics/atomic/cons/49445.cc
! b401aaa9eb4b96fd7201f0510a945726  libstdc++-v3/testsuite/29_atomics/atomic/cons/assign_neg.cc
! f986c0515a0b4b8e6cb8d33ba77bf16b  libstdc++-v3/testsuite/29_atomics/atomic/cons/constexpr.cc
! f277e2d5dd5f928a7139964624192158  libstdc++-v3/testsuite/29_atomics/atomic/cons/copy_list.cc
! d980a1fa1be5e2f7975b32625115f9c2  libstdc++-v3/testsuite/29_atomics/atomic/cons/copy_neg.cc
! eb1f1219727b8a454cbe64d680ce7368  libstdc++-v3/testsuite/29_atomics/atomic/cons/default.cc
! 013a6ff9c4727d17d07ebf3a8cccc460  libstdc++-v3/testsuite/29_atomics/atomic/cons/direct_list.cc
! 79bae9a9954b5fa53bf03ed864cf9699  libstdc++-v3/testsuite/29_atomics/atomic/cons/single_value.cc
! 65bfa744e3922352e31d98b69a4a539a  libstdc++-v3/testsuite/29_atomics/atomic/cons/user_pod.cc
! 22c4d096da601284ea05ec399ca8815a  libstdc++-v3/testsuite/29_atomics/atomic/is_always_lock_free.cc
! 2e0a2e87bce4889c569cd1230c43e892  libstdc++-v3/testsuite/29_atomics/atomic/operators/51811.cc
! 40feb326d9ba238d048defdda9708e3a  libstdc++-v3/testsuite/29_atomics/atomic/operators/56011.cc
! e068be8c4edefd5a6ea16712063d879f  libstdc++-v3/testsuite/29_atomics/atomic/operators/integral_assignment.cc
! b495aa200b6a600ae0d758d93db4d2a5  libstdc++-v3/testsuite/29_atomics/atomic/operators/integral_conversion.cc
! a1e754947e1102cb6626e9b798b3e089  libstdc++-v3/testsuite/29_atomics/atomic/operators/pointer_partial_void.cc
! 930448d607b93e8a104b5c3fda26d822  libstdc++-v3/testsuite/29_atomics/atomic/requirements/base_classes.cc
! a4398ca71200480f7c4689569b429258  libstdc++-v3/testsuite/29_atomics/atomic/requirements/compare_exchange_lowering.cc
! 308261e581b6b543b0d82ca90b6c0a0e  libstdc++-v3/testsuite/29_atomics/atomic/requirements/explicit_instantiation/1.cc
! cad9036906708f53f09dda8a6980050c  libstdc++-v3/testsuite/29_atomics/atomic_flag/clear/1.cc
! 523812cea9a5beba969426e7fe73c987  libstdc++-v3/testsuite/29_atomics/atomic_flag/cons/1.cc
! bd4d4abcf49d3139a5f5968c7c999b8b  libstdc++-v3/testsuite/29_atomics/atomic_flag/cons/56012.cc
! ebac2e47020b3c51f7a5e15615b9d2d2  libstdc++-v3/testsuite/29_atomics/atomic_flag/cons/aggregate.cc
! 140963cf3bf299ab9df216993eb836f0  libstdc++-v3/testsuite/29_atomics/atomic_flag/cons/assign_neg.cc
! 2a2d0d41da6d2b534e7d0b957070ab30  libstdc++-v3/testsuite/29_atomics/atomic_flag/cons/copy_neg.cc
! 7ff300ba0bee2904a7ea0f694259444e  libstdc++-v3/testsuite/29_atomics/atomic_flag/cons/default.cc
! 8235218e5c575a691e68a7b3a165a0b7  libstdc++-v3/testsuite/29_atomics/atomic_flag/requirements/standard_layout.cc
! 799696f6be7e1f2ce28798dace72f948  libstdc++-v3/testsuite/29_atomics/atomic_flag/requirements/trivial.cc
! 9ab822fce956b347d95af67e7490867c  libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/explicit-hle.cc
! 3b10cb414d668b0766b33844c4d988a4  libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/explicit.cc
! 825a732b3e44336d9480004d9418792d  libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/implicit.cc
! 6e4f7763d3a4310d4bcfc656d24fdd0e  libstdc++-v3/testsuite/29_atomics/atomic_integral/60940.cc
! b624d4307fe3c5b5cd776aae1c7d3eed  libstdc++-v3/testsuite/29_atomics/atomic_integral/65147.cc
! 8903d4868253911ed4876d544efcae93  libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/assign_neg.cc
! eafe3e35ecaeecb6509a0966dfb2e535  libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/constexpr.cc
! d712a02ad709ced6c6fdceed8eab721b  libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/copy_list.cc
! a7ea99a4587d78020c64095c07a5a80d  libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/copy_neg.cc
! 57c880f6a5c0ebc0fc994991b6c8ad87  libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/default.cc
! dde17b3246863897281a195c876f66c4  libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/direct_list.cc
! d391b89ce2f6e6c4581d5fa7a9ac2eb2  libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/single_value.cc
! 69edfdcba3dcb576f7c48fe7b346d196  libstdc++-v3/testsuite/29_atomics/atomic_integral/is_always_lock_free.cc
! eeb5a869cb7f11910f858407c6f83394  libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/bitwise.cc
! be8844045ec1e25dd298ed910c1cfe2f  libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/bitwise_neg.cc
! 2d31dda3548e46d528fc8c397ab16201  libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/decrement.cc
! 59d77d09887e5fb58840ce6f524799c9  libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/decrement_neg.cc
! 87c5abf5fa489d327cdd2d9ebd9cc201  libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/increment.cc
! 40ce41d63fd2f4bf4ee9c18be942c9d3  libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/increment_neg.cc
! f334b8cab04a607c53dc0b4daee5ca1b  libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/integral_assignment.cc
! c78dcff2614d9c3f60bec4ea178d7a78  libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/integral_conversion.cc
! ed87e71e11212537c851786ecc43e08d  libstdc++-v3/testsuite/29_atomics/atomic_integral/requirements/standard_layout.cc
! 123f045f090847badd69dd46593cfdb0  libstdc++-v3/testsuite/29_atomics/atomic_integral/requirements/trivial.cc
! 773320da4f43b54f666c0b33dbc7e662  libstdc++-v3/testsuite/29_atomics/headers/atomic/functions_std_c++0x.cc
! 6a8dc1aa1b34e0533582af9ea7a8876f  libstdc++-v3/testsuite/29_atomics/headers/atomic/macros.cc
! 89907a0526e11c2d46513cb6551d6f2a  libstdc++-v3/testsuite/29_atomics/headers/atomic/std_c++0x_neg.cc
! a490c3ce273d0995b7bb75b7b417f52d  libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++0x.cc
! 9033ab6f5e74d69e359a0ce99927bcc2  libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++0x_neg.cc
! 42f3ff24ba51b833e7daebdeaa727ddf  libstdc++-v3/testsuite/30_threads/async/42819.cc
! f185d119a70c51e2aff9198034f7e44b  libstdc++-v3/testsuite/30_threads/async/49668.cc
! cdccf8ed188a525a5f19c6841d51c2d8  libstdc++-v3/testsuite/30_threads/async/54297.cc
! 166501e7c7e71fdc1d01b278ef48166c  libstdc++-v3/testsuite/30_threads/async/any.cc
! efd9db236bf558f1ddfa806720f3c5c0  libstdc++-v3/testsuite/30_threads/async/async.cc
! b067789036ec4dcc560b59a2b071d405  libstdc++-v3/testsuite/30_threads/async/except.cc
! 871901d59fdae0180099721c1b6a8175  libstdc++-v3/testsuite/30_threads/async/forced_unwind.cc
! c623a9176ba3bb4aec4c3794024cdea8  libstdc++-v3/testsuite/30_threads/async/launch.cc
! 48c5bcef599f6cf2043d141dae337f9b  libstdc++-v3/testsuite/30_threads/async/lwg2021.cc
! c73ddf6453d603d81062675b4539c1ff  libstdc++-v3/testsuite/30_threads/async/sync.cc
! 2998d7faf4124b17d82a2bb4ae679f6b  libstdc++-v3/testsuite/30_threads/call_once/39909.cc
! 570c3f3ec8b278e1d8a205b982dac30f  libstdc++-v3/testsuite/30_threads/call_once/49668.cc
! cec6ac2a45f4f478e31b093cc0bcb589  libstdc++-v3/testsuite/30_threads/call_once/60497.cc
! 739265c82b8cec5c24c2607e5c9024ed  libstdc++-v3/testsuite/30_threads/call_once/call_once1.cc
! 7b6c28fcf94d4ea46bf7fa061ad92492  libstdc++-v3/testsuite/30_threads/call_once/constexpr.cc
! 2acf377b6813600505676d957b290055  libstdc++-v3/testsuite/30_threads/call_once/dr2442.cc
! 18f661ff8239261486f8346f4f6f58d7  libstdc++-v3/testsuite/30_threads/call_once/once_flag.cc
! 9f663445b14672979b0b279f6842f7e5  libstdc++-v3/testsuite/30_threads/condition_variable/54185.cc
! b529573b3bb4df46630137e6bfb5c3ad  libstdc++-v3/testsuite/30_threads/condition_variable/cons/1.cc
! f867691eb52f67ce120b5bcb7a656bbe  libstdc++-v3/testsuite/30_threads/condition_variable/cons/assign_neg.cc
! 9185017d978711465875ce29dae2b999  libstdc++-v3/testsuite/30_threads/condition_variable/cons/copy_neg.cc
! 40f1acc3b39f86400d4f8d99891fbdab  libstdc++-v3/testsuite/30_threads/condition_variable/members/1.cc
! 22e1d59af9f74ab4f6647a2959f2ba27  libstdc++-v3/testsuite/30_threads/condition_variable/members/2.cc
! 4161f77db53fff7e360835bb30237233  libstdc++-v3/testsuite/30_threads/condition_variable/members/3.cc
! 4aa24b3dbe99295ce2cd5341d272cd0a  libstdc++-v3/testsuite/30_threads/condition_variable/members/53841.cc
! 9a8b186eaa4cff8cab1025382b2a7062  libstdc++-v3/testsuite/30_threads/condition_variable/native_handle/typesizes.cc
! 5a2d8558c12ce10507331775f68026f4  libstdc++-v3/testsuite/30_threads/condition_variable/requirements/standard_layout.cc
! 6c250eaf81078dfb4c4ec76fd92197aa  libstdc++-v3/testsuite/30_threads/condition_variable/requirements/typedefs.cc
! ed1781dc3b8c80874f848b0064965338  libstdc++-v3/testsuite/30_threads/condition_variable_any/50862.cc
! 0bb5a4cd762dc83006a5c4eb80041522  libstdc++-v3/testsuite/30_threads/condition_variable_any/53830.cc
! 863cce0c1aa1d6d30ea0e75b381fb86e  libstdc++-v3/testsuite/30_threads/condition_variable_any/cons/1.cc
! 8bc9d12c4e805ef47c61e85339850beb  libstdc++-v3/testsuite/30_threads/condition_variable_any/cons/assign_neg.cc
! 0b3e62937e47617ffe738799cc0fff18  libstdc++-v3/testsuite/30_threads/condition_variable_any/cons/copy_neg.cc
! 6bcd5f6b0c512ee16d24e536247054e4  libstdc++-v3/testsuite/30_threads/condition_variable_any/members/1.cc
! 1ea3dfbb2810ee7bc74d9e45663bfc87  libstdc++-v3/testsuite/30_threads/condition_variable_any/members/2.cc
! bb0bef89a90b56632bc1fecd9bec0551  libstdc++-v3/testsuite/30_threads/future/cons/assign_neg.cc
! b1ca57caaa351a68f9dce2afb9d0ec01  libstdc++-v3/testsuite/30_threads/future/cons/constexpr.cc
! a540dd32bd48316fbdcc923723b9eadd  libstdc++-v3/testsuite/30_threads/future/cons/copy_neg.cc
! aff4c91c6653d71b60cef4eb31503470  libstdc++-v3/testsuite/30_threads/future/cons/default.cc
! 1ff1caf67367cac5532b48178b001aaf  libstdc++-v3/testsuite/30_threads/future/cons/move.cc
! 6852d7076344ce003348927af8b3135c  libstdc++-v3/testsuite/30_threads/future/cons/move_assign.cc
! 74d6f2645ca13dc78772c23ee2a2de6d  libstdc++-v3/testsuite/30_threads/future/members/45133.cc
! 1a05273fcde7c68c285d19ee1fc5e8a4  libstdc++-v3/testsuite/30_threads/future/members/get.cc
! 081c379c31ae3ea584a2e742d07aef81  libstdc++-v3/testsuite/30_threads/future/members/get2.cc
! 0bb45e1640882277633806be24e0b337  libstdc++-v3/testsuite/30_threads/future/members/share.cc
! 20e483907490e18f36b7cdeedb39abe1  libstdc++-v3/testsuite/30_threads/future/members/valid.cc
! 8ecce4a7466d8236be7b650cfc6e8627  libstdc++-v3/testsuite/30_threads/future/members/wait.cc
! 25078cf9b672bdf18841991507074a2a  libstdc++-v3/testsuite/30_threads/future/members/wait_for.cc
! 73ece5e1e39f08df932fdda1ca8865b7  libstdc++-v3/testsuite/30_threads/future/members/wait_until.cc
! ef25efb118ca72b7271c64890e9a3946  libstdc++-v3/testsuite/30_threads/future/requirements/explicit_instantiation.cc
! 903796100de863152f209e2edfe879a2  libstdc++-v3/testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc
! f2f50d5edb19a05d05b573ae633e557e  libstdc++-v3/testsuite/30_threads/headers/condition_variable/types_std_c++0x.cc
! eda513b9a842c8eb250e102246d610a2  libstdc++-v3/testsuite/30_threads/headers/future/std_c++0x_neg.cc
! 2b1dce671fa73952e42fc6dd24da79fe  libstdc++-v3/testsuite/30_threads/headers/future/types_std_c++0x.cc
! 6554d819755559c81a5896a70e1a2426  libstdc++-v3/testsuite/30_threads/headers/mutex/std_c++0x_neg.cc
! d08a113f4765544a1dac934f777927ec  libstdc++-v3/testsuite/30_threads/headers/mutex/types_std_c++0x.cc
! fc24423def2b23ed9d7d4b47a89b7e9c  libstdc++-v3/testsuite/30_threads/headers/thread/std_c++0x_neg.cc
! 358890feaacdc51276fb80c177ccf95f  libstdc++-v3/testsuite/30_threads/headers/thread/types_std_c++0x.cc
! ead3080f091ec2ff66164137df77df56  libstdc++-v3/testsuite/30_threads/lock/1.cc
! 91abbb93a0370394e95a3ab8483391a0  libstdc++-v3/testsuite/30_threads/lock/2.cc
! 606eb64edc96e032bdc7500f26233e21  libstdc++-v3/testsuite/30_threads/lock/3.cc
! a5a00d0389f6e974ab9abe04e43118cb  libstdc++-v3/testsuite/30_threads/lock/4.cc
! 02d440dba2d9196258fd12db840c1403  libstdc++-v3/testsuite/30_threads/lock_guard/cons/1.cc
! 37a637f3fc863a685c9184e80628ca84  libstdc++-v3/testsuite/30_threads/lock_guard/cons/deduction.cc
! 5a23ce8e1e9674c4c331e5364dd0cb01  libstdc++-v3/testsuite/30_threads/lock_guard/requirements/explicit_instantiation.cc
! 2890e43f33fe2c1e87416389a4d1cdf3  libstdc++-v3/testsuite/30_threads/lock_guard/requirements/typedefs.cc
! 49099564000edfcf0c58ed554de169e5  libstdc++-v3/testsuite/30_threads/mutex/cons/1.cc
! 55626b35bf314b3f113e35b06e1cc3d5  libstdc++-v3/testsuite/30_threads/mutex/cons/assign_neg.cc
! 7b6c28fcf94d4ea46bf7fa061ad92492  libstdc++-v3/testsuite/30_threads/mutex/cons/constexpr.cc
! 7967660454db168891fa9116471e6825  libstdc++-v3/testsuite/30_threads/mutex/cons/copy_neg.cc
! b2aca05d9db577bccfd2bb6c22036ed9  libstdc++-v3/testsuite/30_threads/mutex/dest/destructor_locked.cc
! 47d714907a00ecbb2b7b6afa8b4e0297  libstdc++-v3/testsuite/30_threads/mutex/lock/1.cc
! 513039c206dbe92ab4996d0c44604ae8  libstdc++-v3/testsuite/30_threads/mutex/native_handle/1.cc
! 4d9460d92b02aed54f6acfe4195a2f58  libstdc++-v3/testsuite/30_threads/mutex/native_handle/typesizes.cc
! ff1ea785c8d70a66627e465e67c3d6aa  libstdc++-v3/testsuite/30_threads/mutex/requirements/standard_layout.cc
! 019757d1109f18bce4897bff86981c61  libstdc++-v3/testsuite/30_threads/mutex/requirements/typedefs.cc
! d2db3bd13c968d7aef6786124707b560  libstdc++-v3/testsuite/30_threads/mutex/try_lock/1.cc
! 9a8543db4ef8fb7f90824eb176e454c9  libstdc++-v3/testsuite/30_threads/mutex/try_lock/2.cc
! 1e737715892df092ba5aae6eac3a30c9  libstdc++-v3/testsuite/30_threads/mutex/unlock/1.cc
! d5b1b48a4d17a181c2003a08756d4c02  libstdc++-v3/testsuite/30_threads/mutex/unlock/2.cc
! c4ac274384e77a340b55a960cf8dc791  libstdc++-v3/testsuite/30_threads/once_flag/cons/constexpr.cc
! 866da16114893f6db0f9014c65640315  libstdc++-v3/testsuite/30_threads/packaged_task/49668.cc
! d6a95007b8948ad5cbb7130cc2422c32  libstdc++-v3/testsuite/30_threads/packaged_task/60564.cc
! d538d20d04b17da82cbd5ff251e6f5a5  libstdc++-v3/testsuite/30_threads/packaged_task/79486.cc
! 3e015d6fc5d264d129eff294e3b5c967  libstdc++-v3/testsuite/30_threads/packaged_task/cons/1.cc
! bf096e530153807990ef7f0a91f23671  libstdc++-v3/testsuite/30_threads/packaged_task/cons/2.cc
! 94af1dbe18100b2bda224028188fcc76  libstdc++-v3/testsuite/30_threads/packaged_task/cons/3.cc
! bb4524b1d04a9760b7e19ca1793ab28b  libstdc++-v3/testsuite/30_threads/packaged_task/cons/56492.cc
! df49dc01e20af721a46cde9ca5189ea7  libstdc++-v3/testsuite/30_threads/packaged_task/cons/alloc.cc
! 5a1737474f8cc1a6c6090ce76b66ce19  libstdc++-v3/testsuite/30_threads/packaged_task/cons/alloc2.cc
! b1870f06dfedd600324e6c40ae40e36f  libstdc++-v3/testsuite/30_threads/packaged_task/cons/alloc_min.cc
! c1ec63014c5cfe8e99a2e9d7ba3c5544  libstdc++-v3/testsuite/30_threads/packaged_task/cons/assign_neg.cc
! 60d5db118b58d8325b6f78e3f5dd0af2  libstdc++-v3/testsuite/30_threads/packaged_task/cons/copy_neg.cc
! 55d986b61b60cb8f27dfba74820dca9e  libstdc++-v3/testsuite/30_threads/packaged_task/cons/move.cc
! 276e4326d5b27e16963092c53b914e9f  libstdc++-v3/testsuite/30_threads/packaged_task/cons/move_assign.cc
! a0a238ab4c064ed87e86f55563ed50fa  libstdc++-v3/testsuite/30_threads/packaged_task/forced_unwind.cc
! cc748e9f0132e1366e025d5e38eb0304  libstdc++-v3/testsuite/30_threads/packaged_task/members/at_thread_exit.cc
! 7b58b89c860e00e117dc0e809d786a6f  libstdc++-v3/testsuite/30_threads/packaged_task/members/get_future.cc
! bd190690c761b361ea153ed129679446  libstdc++-v3/testsuite/30_threads/packaged_task/members/get_future2.cc
! aabd24baec6e003abcad915579dc08fd  libstdc++-v3/testsuite/30_threads/packaged_task/members/invoke.cc
! 69ed23ee830a5f9cfb13d605a1551618  libstdc++-v3/testsuite/30_threads/packaged_task/members/invoke2.cc
! e167e41666ba98ba8613bb14afeef870  libstdc++-v3/testsuite/30_threads/packaged_task/members/invoke3.cc
! 7c2828751905090f89190864aa1eddb1  libstdc++-v3/testsuite/30_threads/packaged_task/members/invoke4.cc
! 23959290335b02d50734d552a33cb3ef  libstdc++-v3/testsuite/30_threads/packaged_task/members/invoke5.cc
! 14fab456259b32ae6cfaf61298d68b6a  libstdc++-v3/testsuite/30_threads/packaged_task/members/reset.cc
! 23d0176d817fef153874809ede9d610b  libstdc++-v3/testsuite/30_threads/packaged_task/members/reset2.cc
! eaa0ced7aee1b0c018fb9ec96a1a8ef9  libstdc++-v3/testsuite/30_threads/packaged_task/members/swap.cc
! b693d53d92f3c89e697344f5252a1a4b  libstdc++-v3/testsuite/30_threads/packaged_task/members/valid.cc
! 923b2988a9039e323199e63d71aaa63d  libstdc++-v3/testsuite/30_threads/packaged_task/requirements/explicit_instantiation.cc
! ccc16a66766ca6a20af9d9c2b53d65f4  libstdc++-v3/testsuite/30_threads/packaged_task/uses_allocator.cc
! 7469fc4e74b11bf797482feae898f103  libstdc++-v3/testsuite/30_threads/promise/60966.cc
! a3c6959ebd7d033e9879f0349030bfa7  libstdc++-v3/testsuite/30_threads/promise/69106.cc
! 5dd6f877796a3fd85ca39ea1b1a91b2a  libstdc++-v3/testsuite/30_threads/promise/cons/1.cc
! 3ed7b57b9aa0bd024322d1543307ad36  libstdc++-v3/testsuite/30_threads/promise/cons/alloc.cc
! 24843fe6c1fc7452d6999af5010b5188  libstdc++-v3/testsuite/30_threads/promise/cons/alloc2.cc
! 00ca04d60cc2f6ef33294ff0afcd105e  libstdc++-v3/testsuite/30_threads/promise/cons/alloc_min.cc
! 11c226bec10b17a4eab13a2038b2eb77  libstdc++-v3/testsuite/30_threads/promise/cons/assign_neg.cc
! 9a06c3db8b1cb6ed6e0f62b230c3fbdc  libstdc++-v3/testsuite/30_threads/promise/cons/copy_neg.cc
! fe189574ebba1806765e920cb3d5d4b1  libstdc++-v3/testsuite/30_threads/promise/cons/move.cc
! 60f84da3f8cb2ec3821465aa56ddc611  libstdc++-v3/testsuite/30_threads/promise/cons/move_assign.cc
! 2b202f88cdf6ddea111f6aba14529834  libstdc++-v3/testsuite/30_threads/promise/members/at_thread_exit.cc
! a7e7a22908b9813789265895d4f1919d  libstdc++-v3/testsuite/30_threads/promise/members/at_thread_exit2.cc
! ea76f405aaa3471feee3a9fa3e69f43c  libstdc++-v3/testsuite/30_threads/promise/members/get_future.cc
! d3bd8427ae4f27fdc2a1cc567a5b3f26  libstdc++-v3/testsuite/30_threads/promise/members/get_future2.cc
! f2b12203d02b21b8f4a5e3683b6d6121  libstdc++-v3/testsuite/30_threads/promise/members/set_exception.cc
! cbc64588a8b2b060e863b68358a3380e  libstdc++-v3/testsuite/30_threads/promise/members/set_exception2.cc
! edef63ca9b2c4a37b5e6238343f1212e  libstdc++-v3/testsuite/30_threads/promise/members/set_value.cc
! 8b904da21fdb2ba37f5435142f06104b  libstdc++-v3/testsuite/30_threads/promise/members/set_value2.cc
! 83084bc5932a4ce4592ffd2c901be982  libstdc++-v3/testsuite/30_threads/promise/members/set_value3.cc
! 6a56abac18f15c6682eef887ac8e1aa7  libstdc++-v3/testsuite/30_threads/promise/members/swap.cc
! 20f5dc646b99d2c3818ec1143f802eb5  libstdc++-v3/testsuite/30_threads/promise/requirements/explicit_instantiation.cc
! 0ec1bb4d8e5a96bb16d788771aa5c44d  libstdc++-v3/testsuite/30_threads/promise/uses_allocator.cc
! 2d0284cfe3179944457340d2af345ed9  libstdc++-v3/testsuite/30_threads/recursive_mutex/cons/1.cc
! a2e9431927b56c6699c9292f131af0ee  libstdc++-v3/testsuite/30_threads/recursive_mutex/cons/assign_neg.cc
! 240fa8477e4bf5f2ced9d5ebe2ff3e9e  libstdc++-v3/testsuite/30_threads/recursive_mutex/cons/copy_neg.cc
! 5142659f161c8cdc00bb67aaee448a6a  libstdc++-v3/testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc
! b9ba45ed272a935967ecf7ce6cce390b  libstdc++-v3/testsuite/30_threads/recursive_mutex/lock/1.cc
! ef8b90b31461a335f84417dbc12fb878  libstdc++-v3/testsuite/30_threads/recursive_mutex/native_handle/1.cc
! b4edb3a24f5669d509ec47d1190a77e2  libstdc++-v3/testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc
! d6d00cf91a756c04bb6f435a527c56cf  libstdc++-v3/testsuite/30_threads/recursive_mutex/requirements/standard_layout.cc
! 6012e8396e998dbf49d2341a415e3baf  libstdc++-v3/testsuite/30_threads/recursive_mutex/requirements/typedefs.cc
! c50e25fa53d80ccd135c47972d7cf480  libstdc++-v3/testsuite/30_threads/recursive_mutex/try_lock/1.cc
! 3ad2f92dbc9ccdd21afefe3e3351d4f4  libstdc++-v3/testsuite/30_threads/recursive_mutex/try_lock/2.cc
! 859090ea1d9a2d184e5af880fc08da49  libstdc++-v3/testsuite/30_threads/recursive_mutex/unlock/1.cc
! 2a2928b190470748e0af5b36a5f81b23  libstdc++-v3/testsuite/30_threads/recursive_mutex/unlock/2.cc
! 6757393902389264724620e9fb90e963  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/cons/1.cc
! e1b655f4648ab93aeda61142f15d9435  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc
! 24628353b671f840932ded6ddfe4ca3f  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc
! 1566a6230885a35ab2cbdb76d07bc8ee  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc
! 0b99d3a8729cc536445302902d0047d2  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/lock/1.cc
! b5bb52b1321f0363a0e2ae2e64a711b1  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/lock/2.cc
! 2fba2eb76c0780df101b9a867b055a7f  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc
! c88c3fc12bd8e04c83fb749cfe656440  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/native_handle/typesizes.cc
! b2df58986c1bcb59429696b72b7ecd4f  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc
! 5913d46cd15d0df401f22db1aa1fe26a  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc
! 9b83e790cfaca5e06367265aa031ae41  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc
! 984dcfaf872b52477fb4309db0ada5fa  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc
! 59bec4e5192f00bd9b6562ef8bff3c17  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc
! 04bd57c8dc2ec82e1f7f1817209f255b  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc
! 5913d46cd15d0df401f22db1aa1fe26a  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc
! 2165b628bb069c0880b54ff147ee7159  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc
! 362b63a8e44fb1db759095bfeaf50ef6  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/unlock/1.cc
! effb65e81280e97c0030c80ceec53f19  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/unlock/2.cc
! 2bb5426e1f10e55b1e72c5e854b1160f  libstdc++-v3/testsuite/30_threads/scoped_lock/cons/1.cc
! 82b2948da103296edc92d48e5d959d8e  libstdc++-v3/testsuite/30_threads/scoped_lock/cons/deduction.cc
! 2c2097dc398b8f3887d62f81a4fcbb5e  libstdc++-v3/testsuite/30_threads/scoped_lock/requirements/explicit_instantiation.cc
! 760aa261620aef4d3097e3a11d6f60fc  libstdc++-v3/testsuite/30_threads/scoped_lock/requirements/typedefs.cc
! 83a4057ce0f4727d109db357f0cf03dc  libstdc++-v3/testsuite/30_threads/shared_future/cons/assign.cc
! 90f8d175a9ceacae3ffc107e6ef10ec9  libstdc++-v3/testsuite/30_threads/shared_future/cons/constexpr.cc
! d36990405f32eace14fcb10101368081  libstdc++-v3/testsuite/30_threads/shared_future/cons/copy.cc
! adc2798c93ea43f84771ac1fb5865c9f  libstdc++-v3/testsuite/30_threads/shared_future/cons/default.cc
! 4d373969be0e16726bcc18021b49a1e7  libstdc++-v3/testsuite/30_threads/shared_future/cons/move.cc
! 3bf322fe264085ef238fea1ab5b24f40  libstdc++-v3/testsuite/30_threads/shared_future/cons/move_assign.cc
! abfc4aab01e8802c47f66c4f7f968065  libstdc++-v3/testsuite/30_threads/shared_future/members/45133.cc
! d44e16535bbda23c6ec0da5d4980842f  libstdc++-v3/testsuite/30_threads/shared_future/members/get.cc
! 7a9d82d2bd6b58bf6f28febde3d9e6c4  libstdc++-v3/testsuite/30_threads/shared_future/members/get2.cc
! 37f2bb85e8472744ec86567e2ba468e9  libstdc++-v3/testsuite/30_threads/shared_future/members/valid.cc
! 85b9e2fef60a7db1b44a386ec0226907  libstdc++-v3/testsuite/30_threads/shared_future/members/wait.cc
! 6cfdfcfdc8ba9669eb93ab822d0ea626  libstdc++-v3/testsuite/30_threads/shared_future/members/wait_for.cc
! 42869204c8402cf277e8a123c4bd00df  libstdc++-v3/testsuite/30_threads/shared_future/members/wait_until.cc
! f1eb7d69bb2591cb34ae31e62c775cd7  libstdc++-v3/testsuite/30_threads/shared_future/requirements/explicit_instantiation.cc
! e1ba091affb5452a8d0034c1b76fd84a  libstdc++-v3/testsuite/30_threads/shared_lock/70766.cc
! fd60e3a2e698873b6879168bbb339d17  libstdc++-v3/testsuite/30_threads/shared_lock/cons/1.cc
! 06edb8aec822d8f13ce536ee2b9b3843  libstdc++-v3/testsuite/30_threads/shared_lock/cons/2.cc
! f155bc8170e824201fb695c77ef6b56f  libstdc++-v3/testsuite/30_threads/shared_lock/cons/3.cc
! 3d1a7d0e5a993cbc3d999365a3d6e143  libstdc++-v3/testsuite/30_threads/shared_lock/cons/4.cc
! 0e6588cf4bee979f644f4c84de44a796  libstdc++-v3/testsuite/30_threads/shared_lock/cons/5.cc
! 973cd631f4544d48ed88290d8a46c184  libstdc++-v3/testsuite/30_threads/shared_lock/cons/6.cc
! 13fdae9858ea168a343b09b3552cecf7  libstdc++-v3/testsuite/30_threads/shared_lock/locking/1.cc
! f43534440ebc6f5e54416e997721dfe8  libstdc++-v3/testsuite/30_threads/shared_lock/locking/2.cc
! 6920eb6fb7497ff35ec071f6f1918222  libstdc++-v3/testsuite/30_threads/shared_lock/locking/3.cc
! 0e3ebd21cd0b26b8a3d307ae700b854b  libstdc++-v3/testsuite/30_threads/shared_lock/locking/4.cc
! f911824dcf7d724c158a85f7b64f06bd  libstdc++-v3/testsuite/30_threads/shared_lock/modifiers/1.cc
! 7e9649f3026dd4aaf6f338bc8984f839  libstdc++-v3/testsuite/30_threads/shared_lock/requirements/explicit_instantiation.cc
! 341211b7c5ed32b4937dcab4ba81ffb7  libstdc++-v3/testsuite/30_threads/shared_lock/requirements/typedefs.cc
! 0ff1c1a248e1e59348b46ae970db840d  libstdc++-v3/testsuite/30_threads/shared_mutex/cons/1.cc
! c83ad91fde31f36432880407c3cf5506  libstdc++-v3/testsuite/30_threads/shared_mutex/cons/assign_neg.cc
! 07444695713ebba7fc9de11a8aec14fd  libstdc++-v3/testsuite/30_threads/shared_mutex/cons/copy_neg.cc
! 547d817d2310fb61e473febd095fda7c  libstdc++-v3/testsuite/30_threads/shared_mutex/requirements/standard_layout.cc
! 6e116a4bb6cd86693edc205d3f6cdf34  libstdc++-v3/testsuite/30_threads/shared_mutex/try_lock/1.cc
! a4ab5d63d767cc515bb464f7cbb81830  libstdc++-v3/testsuite/30_threads/shared_mutex/try_lock/2.cc
! 3f2abe7fcb21193d7deae0c129a16edb  libstdc++-v3/testsuite/30_threads/shared_mutex/unlock/1.cc
! 3eb533124e292f392696ebf5eb4affbf  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/cons/1.cc
! 4cb6b5f98f05cbf6f67a52dacb9e9589  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/cons/assign_neg.cc
! d550601cc544a10d784e44483eb13bc7  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/cons/copy_neg.cc
! 8cd36d2ecc437c9d980520133f0d1caf  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/requirements/standard_layout.cc
! cb28a5898f1c6be6a5d2c23e70712be7  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock/1.cc
! 555bcae9c798c6d2b73332a7516770e4  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock/2.cc
! 95a56d8a1a28f777dc8463c4cdb54f38  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock/3.cc
! 32a6e1032ddfbc41dc10c2aed2fe5acc  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/unlock/1.cc
! 431a25754fcc44f470a536d58ae0cbf4  libstdc++-v3/testsuite/30_threads/this_thread/1.cc
! 52a79f95d6dd742113d23c947d8918d8  libstdc++-v3/testsuite/30_threads/this_thread/2.cc
! 1ad6b3e57debb17bece81036d5434e1a  libstdc++-v3/testsuite/30_threads/this_thread/3.cc
! f52c2413a69d019b6445840858905133  libstdc++-v3/testsuite/30_threads/this_thread/4.cc
! 7247bcd1d584bc448eeb6f82a0768fe7  libstdc++-v3/testsuite/30_threads/this_thread/57060.cc
! 649e56148a840a909fe66d3aec72945b  libstdc++-v3/testsuite/30_threads/this_thread/58038.cc
! 81c182185bd0c44e1005f1e4b8165d62  libstdc++-v3/testsuite/30_threads/this_thread/60421.cc
! 8e9956406028554d634cbccb90bd3f0f  libstdc++-v3/testsuite/30_threads/thread/70503.cc
! a9eeaff2224f939adf8aa3a450b0790c  libstdc++-v3/testsuite/30_threads/thread/adl.cc
! ca28d952965a45797c55f613dc13b80d  libstdc++-v3/testsuite/30_threads/thread/cons/1.cc
! d36ac8d18fe2a752db48731b9a8e92eb  libstdc++-v3/testsuite/30_threads/thread/cons/2.cc
! 7805a5422eabbade302711d08ef923d4  libstdc++-v3/testsuite/30_threads/thread/cons/3.cc
! 628249488f5219c156dc0bc2925fe6d6  libstdc++-v3/testsuite/30_threads/thread/cons/4.cc
! 874a355b97eb69391c7d6da148a6b019  libstdc++-v3/testsuite/30_threads/thread/cons/49668.cc
! 24fae1a98e7250233469b1db0a735190  libstdc++-v3/testsuite/30_threads/thread/cons/5.cc
! 41cf73156838e42959bd5d1f91817c50  libstdc++-v3/testsuite/30_threads/thread/cons/6.cc
! 4e452bf432865032fa01b38579e632d0  libstdc++-v3/testsuite/30_threads/thread/cons/7.cc
! 4608c2c87c0c5a27a1c8e9f44e51fbed  libstdc++-v3/testsuite/30_threads/thread/cons/8.cc
! c6e34651b190ff0102f6c537c5f570bc  libstdc++-v3/testsuite/30_threads/thread/cons/9.cc
! 8141e4f8c66cc3af4a6b679cc58f058d  libstdc++-v3/testsuite/30_threads/thread/cons/assign_neg.cc
! f5dab5f03a74215f96cfdb72b50d1472  libstdc++-v3/testsuite/30_threads/thread/cons/copy_neg.cc
! cc309c9b467ecb015d9fbb12271121ae  libstdc++-v3/testsuite/30_threads/thread/cons/lwg2097.cc
! 7f0dc1c479033f01439aff9b56b940bf  libstdc++-v3/testsuite/30_threads/thread/cons/moveable.cc
! 5e268602e0c8f062c3379e57e0ddf29a  libstdc++-v3/testsuite/30_threads/thread/id/70294.cc
! dd521d22da0db936ab60dee9daa81e1f  libstdc++-v3/testsuite/30_threads/thread/id/hash.cc
! f1925fda3fd512993b7a3a44e552abf4  libstdc++-v3/testsuite/30_threads/thread/id/operators.cc
! fac2976d0110b9004fdebd512398d969  libstdc++-v3/testsuite/30_threads/thread/members/1.cc
! d759a6bd1ac920ba51acf8862f812f6e  libstdc++-v3/testsuite/30_threads/thread/members/2.cc
! 1c16b232c1ca01f366b60e601c1151e0  libstdc++-v3/testsuite/30_threads/thread/members/3.cc
! 5de0ea2bad3f94369b7758d21a25d0c9  libstdc++-v3/testsuite/30_threads/thread/members/4.cc
! c32147231a45c6d32db601cd023bb3db  libstdc++-v3/testsuite/30_threads/thread/members/5.cc
! 1b4d9b3df91dcfd7e430c185f4ff81a2  libstdc++-v3/testsuite/30_threads/thread/members/hardware_concurrency.cc
! edecdcdce111755788b5ea7718853a26  libstdc++-v3/testsuite/30_threads/thread/native_handle/cancel.cc
! 241352b6ff28343944bce3ab07dcd310  libstdc++-v3/testsuite/30_threads/thread/native_handle/typesizes.cc
! bda8321167d43cffe14354fcd7ec8124  libstdc++-v3/testsuite/30_threads/thread/swap/1.cc
! 9dd6262ace0cffa7893add0e41f012d4  libstdc++-v3/testsuite/30_threads/timed_mutex/cons/1.cc
! ff8a420d1a9218da1b1d88ca6c235861  libstdc++-v3/testsuite/30_threads/timed_mutex/cons/assign_neg.cc
! 9440370526978fd2daff50507dd3a5b1  libstdc++-v3/testsuite/30_threads/timed_mutex/cons/copy_neg.cc
! 15cb2483d58e066513d0b2da2952a6cd  libstdc++-v3/testsuite/30_threads/timed_mutex/dest/destructor_locked.cc
! c7991f989806eafcd152e5067d32bafe  libstdc++-v3/testsuite/30_threads/timed_mutex/lock/1.cc
! b57bd099174d74e41c3446e18f311593  libstdc++-v3/testsuite/30_threads/timed_mutex/native_handle/1.cc
! 87b4e42c04fe494cbef5bf8044fe18f4  libstdc++-v3/testsuite/30_threads/timed_mutex/native_handle/typesizes.cc
! b9a45beb17a41bf4554fb9b4452c1a2e  libstdc++-v3/testsuite/30_threads/timed_mutex/requirements/standard_layout.cc
! e8aa95c14c8f5073ee15de0b343bff53  libstdc++-v3/testsuite/30_threads/timed_mutex/requirements/typedefs.cc
! a1f1d89d4289fd164aac60b3359dfeb1  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock/1.cc
! 4acdf72b69c8954d6c131fcd22f2c8d1  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock/2.cc
! f2d35f619d73e10bc1d243f9ebb21438  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_for/1.cc
! 3c2943f517337a3e6206d419f2f798c6  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_for/2.cc
! 117f5a00f572c5d3a64d230f624f5981  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_for/3.cc
! a1f1d89d4289fd164aac60b3359dfeb1  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_until/1.cc
! 4acdf72b69c8954d6c131fcd22f2c8d1  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_until/2.cc
! 33f77ab662ea91efeb6d3f5078d7cbf9  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_until/57641.cc
! c1d3812704e879adf03e014cb8b87d58  libstdc++-v3/testsuite/30_threads/timed_mutex/unlock/1.cc
! 3e6c80642fa7ba1653b7338bd3338ff2  libstdc++-v3/testsuite/30_threads/timed_mutex/unlock/2.cc
! 09a10ed7b0dec356e811563d89ca7cd1  libstdc++-v3/testsuite/30_threads/try_lock/1.cc
! 99d13dca9209eb165f879cc0d15dff2f  libstdc++-v3/testsuite/30_threads/try_lock/2.cc
! f6d48115f6cce6b2a0357676c9cbf06a  libstdc++-v3/testsuite/30_threads/try_lock/3.cc
! 4e34b67a387ac73db69fdb26fe982206  libstdc++-v3/testsuite/30_threads/try_lock/4.cc
! 46c30d07cc0c07fe206902a9d11c779c  libstdc++-v3/testsuite/30_threads/unique_lock/cons/1.cc
! e3ae3d699d69e055ff977aacfaab7bd9  libstdc++-v3/testsuite/30_threads/unique_lock/cons/2.cc
! 1206640df2b404c9b3cb9f00b61456c3  libstdc++-v3/testsuite/30_threads/unique_lock/cons/3.cc
! 9cc975875a3d5ef314f5469133ac18f1  libstdc++-v3/testsuite/30_threads/unique_lock/cons/4.cc
! 35efeb6502c8e59bf3ace22756705bc8  libstdc++-v3/testsuite/30_threads/unique_lock/cons/5.cc
! 638de180d9e79a482c0eecfc70c862da  libstdc++-v3/testsuite/30_threads/unique_lock/cons/6.cc
! 81bf9376f750ee81c4723732070356e9  libstdc++-v3/testsuite/30_threads/unique_lock/cons/60497.cc
! 0415bcf4f8e4e7862fb62c62d5f559ae  libstdc++-v3/testsuite/30_threads/unique_lock/cons/deduction.cc
! 8c3c8478aba1986b8903d366111628ff  libstdc++-v3/testsuite/30_threads/unique_lock/locking/1.cc
! 77f02f0c7d9417fcfdbeac0013adec36  libstdc++-v3/testsuite/30_threads/unique_lock/locking/2.cc
! 54a252cb01cbd109b77dde89c070f8a9  libstdc++-v3/testsuite/30_threads/unique_lock/locking/3.cc
! c562377ead8438d94903a9f791af2973  libstdc++-v3/testsuite/30_threads/unique_lock/locking/4.cc
! 7eef61acb60e0af31ef3a850f220ac15  libstdc++-v3/testsuite/30_threads/unique_lock/modifiers/1.cc
! 01924deb38d26b5572b9d6606eddb865  libstdc++-v3/testsuite/30_threads/unique_lock/requirements/explicit_instantiation.cc
! ba180fc82cdb01fbcfa75128486ba936  libstdc++-v3/testsuite/30_threads/unique_lock/requirements/typedefs.cc
! c2e593cd92bdba8b5a20b351f7387410  libstdc++-v3/testsuite/Makefile.am
! 865af2aa0b305bd39ca62071775d2bbf  libstdc++-v3/testsuite/Makefile.in
! 197f1c6ac1cc489647cc12c718778a3c  libstdc++-v3/testsuite/abi/30586.cc
! 1162bb8775b2aa998db7c40ce2a7e110  libstdc++-v3/testsuite/abi/cxx_runtime_only_linkage.cc
! 8435c67d31b35c215c59464d225c7f12  libstdc++-v3/testsuite/abi/demangle/abi_examples/01.cc
! f91351e1d14c0ceddba713400a4342f8  libstdc++-v3/testsuite/abi/demangle/abi_examples/02.cc
! b00adc7ee91db2fa44d19b5c3bf480b5  libstdc++-v3/testsuite/abi/demangle/abi_examples/03.cc
! 5ca44791c9c40b027a6136fc68706aa2  libstdc++-v3/testsuite/abi/demangle/abi_examples/04.cc
! 81cba474353995d86d774ca88629db2a  libstdc++-v3/testsuite/abi/demangle/abi_examples/05.cc
! bac963f03e1824514d193680e270c125  libstdc++-v3/testsuite/abi/demangle/abi_examples/06.cc
! aa81a876c5ebe0c76f81bae76abc381b  libstdc++-v3/testsuite/abi/demangle/abi_examples/07.cc
! 2586f768a2a2d3f041190cdac4ab2332  libstdc++-v3/testsuite/abi/demangle/abi_examples/08.cc
! 2054d12b16fc5139f448dedfda763bcf  libstdc++-v3/testsuite/abi/demangle/abi_examples/09.cc
! bc44bb80b524a6217afad0e445eaea45  libstdc++-v3/testsuite/abi/demangle/abi_examples/10.cc
! 38608d5ec21a3d5b6c2d53cb5667bdcc  libstdc++-v3/testsuite/abi/demangle/abi_examples/11.cc
! c5a4dc84bf71f14582a45c1d9d86bb31  libstdc++-v3/testsuite/abi/demangle/abi_examples/12.cc
! e8cfff14da26c5d8845a3c619a21e4bd  libstdc++-v3/testsuite/abi/demangle/abi_examples/13.cc
! 906828c6cc7875acf891d7b7afe0e881  libstdc++-v3/testsuite/abi/demangle/abi_examples/14.cc
! d80757e2ebd41fc69321ee51b513f771  libstdc++-v3/testsuite/abi/demangle/abi_examples/15.cc
! 94c4b70ce6a7b5d6aa0a4124f1e6a030  libstdc++-v3/testsuite/abi/demangle/abi_examples/16.cc
! 6b6e19134ab97fe1aa1318a08a4a5682  libstdc++-v3/testsuite/abi/demangle/abi_examples/17.cc
! 9db17cb23d5e8bee91f7921e26899164  libstdc++-v3/testsuite/abi/demangle/abi_examples/18.cc
! dbe7b93f7e808bed241a680cc0931a9f  libstdc++-v3/testsuite/abi/demangle/abi_examples/19.cc
! 9b5f2d0e323bb679f7ba846c85cf9c27  libstdc++-v3/testsuite/abi/demangle/abi_examples/20.cc
! 1ce970b35750a76d0c4d55993c3d511c  libstdc++-v3/testsuite/abi/demangle/abi_examples/21.cc
! 1ce970b35750a76d0c4d55993c3d511c  libstdc++-v3/testsuite/abi/demangle/abi_examples/22.cc
! 78692e96bb9a65fe2b2cfb645ad9c117  libstdc++-v3/testsuite/abi/demangle/abi_examples/23.cc
! 2fcdb7276a6469aa17403d184be78701  libstdc++-v3/testsuite/abi/demangle/abi_examples/24.cc
! 4dbbeb105f6ee8a19fd8f871fe92c657  libstdc++-v3/testsuite/abi/demangle/abi_examples/25.cc
! c5475932b22907bca8b3e26218a49056  libstdc++-v3/testsuite/abi/demangle/abi_examples/26.cc
! 19f48d2302a7b97ab773b484aeb96004  libstdc++-v3/testsuite/abi/demangle/abi_text/01.cc
! ab2b403f6aa47fbc401a968e56017ef7  libstdc++-v3/testsuite/abi/demangle/abi_text/02.cc
! 5b44ee35b40d154012bc947c59c64aee  libstdc++-v3/testsuite/abi/demangle/abi_text/03.cc
! bbba96557354c31cd3aa576219aad559  libstdc++-v3/testsuite/abi/demangle/abi_text/04.cc
! 8806aaae364af96373072b3d2f687f71  libstdc++-v3/testsuite/abi/demangle/abi_text/05.cc
! a09393e13c35917819fbd6b631096801  libstdc++-v3/testsuite/abi/demangle/abi_text/06.cc
! 2ca918634774d7e7374bbe5f682c31ef  libstdc++-v3/testsuite/abi/demangle/abi_text/07.cc
! 57dba7d7fe5ccc29edf46ce85a2432d3  libstdc++-v3/testsuite/abi/demangle/abi_text/08.cc
! e528a2a20e66ee6d975547e6b5d8d526  libstdc++-v3/testsuite/abi/demangle/abi_text/09.cc
! ee57e29be36d80eb776eb3be44e9f1fa  libstdc++-v3/testsuite/abi/demangle/abi_text/10.cc
! d051676873e7724de2dc6689bbbcc317  libstdc++-v3/testsuite/abi/demangle/abi_text/11.cc
! 3b36427d40b99d2607136b87f659924b  libstdc++-v3/testsuite/abi/demangle/abi_text/12.cc
! f0ffa856f4881e63e06dff82dcc431ec  libstdc++-v3/testsuite/abi/demangle/abi_text/13.cc
! d9b57def8a678ae089a27a4d81bcffa6  libstdc++-v3/testsuite/abi/demangle/abi_text/14.cc
! 9593a8e922f6afd5bf7daf8dd1ce469d  libstdc++-v3/testsuite/abi/demangle/cxx0x/rref.cc
! 4ec31faf0869722a9d07407b8e731e63  libstdc++-v3/testsuite/abi/demangle/regression/3111-1.cc
! 03fb1b65a88b130ae487280d1ee24bce  libstdc++-v3/testsuite/abi/demangle/regression/3111-2.cc
! 2728e06f5c6510dbe6bfadd5f16933d4  libstdc++-v3/testsuite/abi/demangle/regression/7986-01.cc
! c3520fb2f4bcaf694fde3a3bb73aa22d  libstdc++-v3/testsuite/abi/demangle/regression/7986-02.cc
! ca34d827503c067c9924613f73641cf0  libstdc++-v3/testsuite/abi/demangle/regression/7986-03.cc
! 75c07086284fa7ce7d63ce9ee58ebb72  libstdc++-v3/testsuite/abi/demangle/regression/7986-04.cc
! bfe773b3d69215e5a6087ed043f4b994  libstdc++-v3/testsuite/abi/demangle/regression/7986-05.cc
! bffc512b6a8fb6cf47ceafb414ddcf71  libstdc++-v3/testsuite/abi/demangle/regression/7986-06.cc
! d5438f3528372fa1185d18846677d4ea  libstdc++-v3/testsuite/abi/demangle/regression/7986-07.cc
! 07531c50ec40423f4fd54229d05fb63d  libstdc++-v3/testsuite/abi/demangle/regression/7986-08.cc
! d1eaa9d6b2b2f6662c619c33cd7dbc9c  libstdc++-v3/testsuite/abi/demangle/regression/7986-09.cc
! 093a93e14a0ea0fab0b14efe1fb7386c  libstdc++-v3/testsuite/abi/demangle/regression/7986-10.cc
! 97853e5553f52568fcb3c4ffb4303b2c  libstdc++-v3/testsuite/abi/demangle/regression/7986-11.cc
! 36a068b10675cf2c4f197b82631a5d38  libstdc++-v3/testsuite/abi/demangle/regression/7986-12.cc
! eeff32a230b82c7d9f0e81362912c1b5  libstdc++-v3/testsuite/abi/demangle/regression/7986.cc
! 718b1742a727e8818b3a4d954597e3f4  libstdc++-v3/testsuite/abi/demangle/regression/8897.cc
! 384d037c4426834e9cf04de21f402660  libstdc++-v3/testsuite/abi/demangle/regression/cw-01.cc
! 415e0960572d29b36e828287c443f7b3  libstdc++-v3/testsuite/abi/demangle/regression/cw-02.cc
! 91405f7bf55301edb92e42e523c39f50  libstdc++-v3/testsuite/abi/demangle/regression/cw-03.cc
! 7d46371b244b9395fc4f3b796fffb8b9  libstdc++-v3/testsuite/abi/demangle/regression/cw-04.cc
! 44fc46c99ecba7ff49a4dccc218a4bff  libstdc++-v3/testsuite/abi/demangle/regression/cw-05.cc
! 63eb712c07613feb0f0db315fd7c77b8  libstdc++-v3/testsuite/abi/demangle/regression/cw-06.cc
! 49471abba76e37986f2e4f50fb2fae27  libstdc++-v3/testsuite/abi/demangle/regression/cw-07.cc
! fb3c0f3baec5a8ac683175eacf0cdc16  libstdc++-v3/testsuite/abi/demangle/regression/cw-08.cc
! 63d61bb4822c8652b25815fd560b7174  libstdc++-v3/testsuite/abi/demangle/regression/cw-09.cc
! e211c101d53d62fcb895d68381969282  libstdc++-v3/testsuite/abi/demangle/regression/cw-10.cc
! e2af12fccbe7893997eadb036464d1fa  libstdc++-v3/testsuite/abi/demangle/regression/cw-11.cc
! c25eab39ada97aeecb38fe532c2fc3dc  libstdc++-v3/testsuite/abi/demangle/regression/cw-12.cc
! c3b43767076769553ea397085e6f52d2  libstdc++-v3/testsuite/abi/demangle/regression/cw-13.cc
! 10f804b97e718de2522063e3390c8756  libstdc++-v3/testsuite/abi/demangle/regression/cw-14.cc
! cbc9523853feb4141b3e564ddc659828  libstdc++-v3/testsuite/abi/demangle/regression/cw-15.cc
! af62d84a4dfab771ad691c2eadb97e3b  libstdc++-v3/testsuite/abi/demangle/regression/cw-16.cc
! 6aa304c6aa2dc82ed5dfbe50e337589f  libstdc++-v3/testsuite/abi/demangle/regression/old.cc
! 56a16b9b69dc243727acd4d90d6f3280  libstdc++-v3/testsuite/abi/header_cxxabi.c
! eb211087d450aa52e8e371d3b6e43f0b  libstdc++-v3/testsuite/abi/pr42230.cc
! 0130dc8c6c49de857ab41bce5ee93a3a  libstdc++-v3/testsuite/backward/11460.cc
! 1ced71ccbd8ed844dad66f4dfdd84969  libstdc++-v3/testsuite/backward/hash_map/1.cc
! 8eaaaa221cbcc95ecff6e72f8b9b3a6a  libstdc++-v3/testsuite/backward/hash_map/14648.cc
! 66687dd480069193f646899045b09094  libstdc++-v3/testsuite/backward/hash_map/23528.cc
! 5412c035f56a4ea25ad93d89c96a4ae9  libstdc++-v3/testsuite/backward/hash_map/25896.cc
! 556864d51568ff7f2db46f4743b99c27  libstdc++-v3/testsuite/backward/hash_map/requirements/explicit_instantiation.cc
! faf54d4a6be6e48abf5ef8bc80037ddb  libstdc++-v3/testsuite/backward/hash_set/1.cc
! 7e13d6fe0ca7d6c054d34b4c820501b6  libstdc++-v3/testsuite/backward/hash_set/25896.cc
  2c091597008357e678007f407f299a24  libstdc++-v3/testsuite/backward/hash_set/49060.cc
! db8a6528e451994d8c42bdc675279fa7  libstdc++-v3/testsuite/backward/hash_set/check_construct_destroy.cc
! eadf25b9e2c1faf9a50a7769ff8b4a95  libstdc++-v3/testsuite/backward/hash_set/requirements/explicit_instantiation.cc
! 7557b7cfd32625f0cf7bb161542bf5d0  libstdc++-v3/testsuite/backward/strstream_members.cc
! b1a7b1a32d9cbbe58c35ece4672cb3ab  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
--- 71469,78484 ----
  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
! e62e6443c3944d0bf1096caa89a8afd5  libstdc++-v3/doc/xml/manual/abi.xml
  6a68f07a8b8abd9e65846432ed52d646  libstdc++-v3/doc/xml/manual/algorithms.xml
! b34d89b4b055b80aa37e1a235b78e48a  libstdc++-v3/doc/xml/manual/allocator.xml
  b06c7d4934846623f43ca218d68492c7  libstdc++-v3/doc/xml/manual/appendix_contributing.xml
! 2de6516b70a1010a37be27c15ddf0a51  libstdc++-v3/doc/xml/manual/appendix_free.xml
  fddfbac311009ebd3056c4edd7ee522a  libstdc++-v3/doc/xml/manual/appendix_porting.xml
  e0b6ea09e982758f8a79d0d165939943  libstdc++-v3/doc/xml/manual/atomics.xml
  41f9578438e22c82fe9f70dc482cdca1  libstdc++-v3/doc/xml/manual/auto_ptr.xml
! 4faea3cefb713e7b68d3e94714c66209  libstdc++-v3/doc/xml/manual/backwards_compatibility.xml
  9890a9635fbc47991765f74f8727c01b  libstdc++-v3/doc/xml/manual/bitmap_allocator.xml
  0b5f349e0cb157661fd44b59627716e3  libstdc++-v3/doc/xml/manual/build_hacking.xml
  90680f5663d07927feb6a0b4501e5d4a  libstdc++-v3/doc/xml/manual/codecvt.xml
  5e6aec06cc4fb89c3732b636f9186077  libstdc++-v3/doc/xml/manual/concurrency.xml
  6ff8b882e61c5ff513709c46fd1b0c72  libstdc++-v3/doc/xml/manual/concurrency_extensions.xml
  f13297d479322bdb5fffc34f5fb1c5c8  libstdc++-v3/doc/xml/manual/configure.xml
! 139c2ae43b623fb7b87cb11a75145b74  libstdc++-v3/doc/xml/manual/containers.xml
  35d8bc77747044001636800a86dbac24  libstdc++-v3/doc/xml/manual/ctype.xml
  e7a9590bfa29f2842a602c7d9281e8df  libstdc++-v3/doc/xml/manual/debug.xml
! 1dfb23432fcaa4c4c12a717f006e87f3  libstdc++-v3/doc/xml/manual/debug_mode.xml
  f0323e43ff8fc1ca28dcdfae61b6cb19  libstdc++-v3/doc/xml/manual/diagnostics.xml
! b7c5460dc18afa7e663f7540ff0183c3  libstdc++-v3/doc/xml/manual/documentation_hacking.xml
! b0d87530af583d9830a22217a8b95ec6  libstdc++-v3/doc/xml/manual/evolution.xml
! 7744489eb14a334faa20ba3a6f3ab6eb  libstdc++-v3/doc/xml/manual/extensions.xml
  26083dec441281888a23365de5567180  libstdc++-v3/doc/xml/manual/internals.xml
! 614230cb514501e9830ba4449d5da9ac  libstdc++-v3/doc/xml/manual/intro.xml
  82d01f11ebf848dc64a611a829ef5a38  libstdc++-v3/doc/xml/manual/io.xml
  bab548248426e0e90cdc1436ff5b87de  libstdc++-v3/doc/xml/manual/iterators.xml
  5d3e282d89ac0af0f7752f88466a9d39  libstdc++-v3/doc/xml/manual/locale.xml
  8d6a4daabfdaa26ed8c3bd68f6cb0930  libstdc++-v3/doc/xml/manual/localization.xml
  d1f75977cf17da71ede22a4884f5771f  libstdc++-v3/doc/xml/manual/messages.xml
! 64e17c2dd1bfe3b92309e4ca1b9b375d  libstdc++-v3/doc/xml/manual/mt_allocator.xml
  0093c0e2ef4c460d644a7c3d3e90c7b4  libstdc++-v3/doc/xml/manual/numerics.xml
  e2b6426957c60c385c84e7b5143089ce  libstdc++-v3/doc/xml/manual/parallel_mode.xml
  927aa35a827fd8010896cacc05bacd17  libstdc++-v3/doc/xml/manual/policy_data_structures.xml
! f5a9e21e4b5cd0ffa74991fccf970f9a  libstdc++-v3/doc/xml/manual/policy_data_structures_biblio.xml
  4e49a8e041ae187579c7683d4b840fc4  libstdc++-v3/doc/xml/manual/prerequisites.xml
  5cca2fce9e94a0243e546e0c59792f87  libstdc++-v3/doc/xml/manual/profile_mode.xml
  d86ab4ddaebc9752d3a71f23cc8879cb  libstdc++-v3/doc/xml/manual/shared_ptr.xml
! b9249e4e0a9c66b4d575b78ae1000432  libstdc++-v3/doc/xml/manual/spine.xml
! 30545c0584d92b8a7fc6a9ebcc76389b  libstdc++-v3/doc/xml/manual/status_cxx1998.xml
! 3859d81c49dcfa127c564d5070831837  libstdc++-v3/doc/xml/manual/status_cxx2011.xml
! ab2024fae49f12d36b19759a519a671e  libstdc++-v3/doc/xml/manual/status_cxx2014.xml
! e21501333f0942ffb6c2247520601bfd  libstdc++-v3/doc/xml/manual/status_cxx2017.xml
  3c72998c4574690fac280c058a0db757  libstdc++-v3/doc/xml/manual/status_cxxis29124.xml
! 0328d8bf2d7935051ce9dc880ef63b6d  libstdc++-v3/doc/xml/manual/status_cxxtr1.xml
! 716409ea4f3fdc47d1b88cc8ac63b392  libstdc++-v3/doc/xml/manual/status_cxxtr24733.xml
! 1ea4904f13ba196db9689534b653622f  libstdc++-v3/doc/xml/manual/strings.xml
  c564c4399f854273d5814b3c57d3d591  libstdc++-v3/doc/xml/manual/support.xml
! 0da715fda37b360cf05944a3a5da945a  libstdc++-v3/doc/xml/manual/test.xml
  b3e6db24172a20bdef96a05a3ea26101  libstdc++-v3/doc/xml/manual/test_policy_data_structures.xml
! 3653a568b1cabc7148abe31b4028d098  libstdc++-v3/doc/xml/manual/using.xml
  cc84d1c1a7a9491f46a3e463fcd8aa26  libstdc++-v3/doc/xml/manual/using_exceptions.xml
! 43b751639aa82dbcd414b6c628beefac  libstdc++-v3/doc/xml/manual/utilities.xml
! e4b5f6193fcb7008a4f52448e594cd82  libstdc++-v3/doc/xml/spine.xml
  bd966b4a0df6f2a84f9770525581d45c  libstdc++-v3/doc/xsl/customization.xsl.in
  fa0fbb589f8e3959f474ba45b0758902  libstdc++-v3/fragment.am
! 303b3008ff3954dc1812a88dfe8bd881  libstdc++-v3/include/Makefile.am
! 6e8625e683be45ff120c808c099f3e4c  libstdc++-v3/include/Makefile.in
! 824b6f034ff0dc823441ea8a5102c218  libstdc++-v3/include/backward/auto_ptr.h
! 3173cd6674451da5a8446b58212eac46  libstdc++-v3/include/backward/backward_warning.h
! c6390a6ec1f7ad8a28676a016a710ea9  libstdc++-v3/include/backward/binders.h
! 1d891533a534c4079e45f5bfdbf1c0eb  libstdc++-v3/include/backward/hash_fun.h
! b722444c4f544e156ba8d35971490bf9  libstdc++-v3/include/backward/hash_map
! 70cb64895f0e0dc9fc00c53179d02a1d  libstdc++-v3/include/backward/hash_set
! 657ba64bd931c1d017f947b0d29e75d8  libstdc++-v3/include/backward/hashtable.h
! 91331c89814cd5ba42fb4763fbc00c39  libstdc++-v3/include/backward/strstream
! 41d16429c1d8f3c2ae8b95d3cef6acab  libstdc++-v3/include/bits/algorithmfwd.h
! 34e1d6a641f3cdf0cddd810cbf26295a  libstdc++-v3/include/bits/alloc_traits.h
! 3718b9be99a032acc8614799b70f9926  libstdc++-v3/include/bits/allocated_ptr.h
! 9cafc7b584300736771313d46be845c3  libstdc++-v3/include/bits/allocator.h
! ba829edbb9d209e57b31535c64a92b0a  libstdc++-v3/include/bits/atomic_base.h
! 84ee7d66c612b6d033ede79bb5d066e1  libstdc++-v3/include/bits/atomic_futex.h
! e56cda2734a4a6f4116d8af3bcd40f80  libstdc++-v3/include/bits/basic_ios.h
! ae32dc00489666ff495e85dd3aa5d146  libstdc++-v3/include/bits/basic_ios.tcc
! abdf4ca59405d7395a471f84b6995d7c  libstdc++-v3/include/bits/basic_string.h
! e5bd0c0e52633aae6fedfa055aa606e1  libstdc++-v3/include/bits/basic_string.tcc
! ee61876f1a08650c8cb54b01596fa309  libstdc++-v3/include/bits/boost_concept_check.h
! 1af59f5b03be3fe0a399e335023c0a77  libstdc++-v3/include/bits/c++0x_warning.h
! 2b3b8a54eb49721dd61395f16d075709  libstdc++-v3/include/bits/c++config
! 3e269531472bfc25a3dac0df72440433  libstdc++-v3/include/bits/char_traits.h
! 8d612eed8a1bb508c2be589fd5d5ad36  libstdc++-v3/include/bits/codecvt.h
! be03bc53a8e7e8ef4d08595b7c6c042b  libstdc++-v3/include/bits/concept_check.h
! aa6f57dfc3038a8e02c36b32b29a031f  libstdc++-v3/include/bits/cpp_type_traits.h
! 579ba795e972b8e232783b3fbdf69b21  libstdc++-v3/include/bits/deque.tcc
! 378a3d72a39bdc6f9608fe0f52366be4  libstdc++-v3/include/bits/enable_special_members.h
! 82f49cf87a517b16e549182a0eb45283  libstdc++-v3/include/bits/forward_list.h
! dbc02b5677c07e0a2ef1bec3c528cc37  libstdc++-v3/include/bits/forward_list.tcc
! 7b3df242b133c4cf7194846254c6fb02  libstdc++-v3/include/bits/fs_dir.h
! 9a1fee79c1324e54eb10a4f266a517e3  libstdc++-v3/include/bits/fs_fwd.h
! 2ea08c1f3b40763ada96c07482b05d64  libstdc++-v3/include/bits/fs_ops.h
! e5909cbb43bafc5f088339f8b21e026c  libstdc++-v3/include/bits/fs_path.h
! f0b42df9f4ad86cf8e82027100b870ce  libstdc++-v3/include/bits/fstream.tcc
! d8c24430761323aac9575d7e781aca2e  libstdc++-v3/include/bits/functexcept.h
! 42f22c27e688f6a3c83ceb3298843db4  libstdc++-v3/include/bits/functional_hash.h
! 8b3f4b87ab86cbf2f3a91470ab50a25e  libstdc++-v3/include/bits/gslice.h
! f5178df22711ac096d9cc4db4f4b9b79  libstdc++-v3/include/bits/gslice_array.h
! 4d15233cf589154714908afd68adf089  libstdc++-v3/include/bits/hashtable.h
! 5a8a238ffe72b24e18de666041cc9510  libstdc++-v3/include/bits/hashtable_policy.h
! 27c5b607f868444ab1a42cab63fa645a  libstdc++-v3/include/bits/indirect_array.h
! a5d6623036d7695651b3182e4f3f9564  libstdc++-v3/include/bits/invoke.h
! dc35b85fd51dd992b210cc4791281112  libstdc++-v3/include/bits/ios_base.h
! 9615665b74c1633b5c617ae63c8b8f55  libstdc++-v3/include/bits/istream.tcc
! d04a6eb3bd754b9da8c1970cad4f92e9  libstdc++-v3/include/bits/list.tcc
! 2b896e047b761d874e85530c264b0cf6  libstdc++-v3/include/bits/locale_classes.h
! fe703a12addebcc57bea5cc1a294dcb5  libstdc++-v3/include/bits/locale_classes.tcc
! 20614de95fd7cccf9265a78686032435  libstdc++-v3/include/bits/locale_conv.h
! dda2a70d9547c0f68f91e5d4e0246bbd  libstdc++-v3/include/bits/locale_facets.h
! 197afc2fb9107fa69126230e51938cee  libstdc++-v3/include/bits/locale_facets.tcc
! 5bce4d6fa6b12e69d102efd704f94a7c  libstdc++-v3/include/bits/locale_facets_nonio.h
! 467e493380e0fc1fe119b80519078bbb  libstdc++-v3/include/bits/locale_facets_nonio.tcc
! a65f214b141f99ad16986ac14ae4a202  libstdc++-v3/include/bits/localefwd.h
! e7bef767d52c08c97ca23bd74cf2a9d7  libstdc++-v3/include/bits/mask_array.h
! b056fbe0be8e4eab3c88886c9b07d9f5  libstdc++-v3/include/bits/memoryfwd.h
! 128148bb393c406c4ea1bcdaed893374  libstdc++-v3/include/bits/move.h
! 45835836926e90c87d3ab99aff3ae66f  libstdc++-v3/include/bits/node_handle.h
! 32ee79166bff8791f54597f62e80bd65  libstdc++-v3/include/bits/ostream.tcc
! 349275ec40a06f3e2d1ae5e9f51c330a  libstdc++-v3/include/bits/ostream_insert.h
! 4042517cd92b51247ec99297737b60c4  libstdc++-v3/include/bits/parse_numbers.h
! 39481d6eecb87c5a471c7c6d40515486  libstdc++-v3/include/bits/postypes.h
! c4488885b044d9477796f6d04761c9e8  libstdc++-v3/include/bits/predefined_ops.h
! 16a059fd89d0979f4e145ff937c59d40  libstdc++-v3/include/bits/ptr_traits.h
! 192cbf6a8792f3e4fe911509a47eb180  libstdc++-v3/include/bits/quoted_string.h
! beb35a8f7801e76406479cd5a6118b71  libstdc++-v3/include/bits/random.h
! e5686d52790e4fdc4233ba260a94c981  libstdc++-v3/include/bits/random.tcc
! 8bdb239bf5c7047cbf4cd795d5d510af  libstdc++-v3/include/bits/range_access.h
! cfbaf8364aabdb3d0b2dea1751e1d158  libstdc++-v3/include/bits/refwrap.h
! 23f535b130e9abf0ad40832c1d1992cf  libstdc++-v3/include/bits/regex.h
! 12d13cc63bc03d85e2d56c79ca66f6a7  libstdc++-v3/include/bits/regex.tcc
! 45b3a5b63f6cab3670c65d653bc397e7  libstdc++-v3/include/bits/regex_automaton.h
! 17cd54367673b4507949e1d115d21b9e  libstdc++-v3/include/bits/regex_automaton.tcc
! 360f7523f50343aa9fb1976470d2c057  libstdc++-v3/include/bits/regex_compiler.h
! 3b2e1a3c791dca0a787a9cc43d0c41d0  libstdc++-v3/include/bits/regex_compiler.tcc
! 019b94db05b390986b4a2f6fff6d6e17  libstdc++-v3/include/bits/regex_constants.h
! a39daf4904bf49005da8c8b273f66e56  libstdc++-v3/include/bits/regex_error.h
! 2bc2e377d4887ee5aa5ebdc36cce970e  libstdc++-v3/include/bits/regex_executor.h
! 4165551385a67ac58cdee05a2a7ebce1  libstdc++-v3/include/bits/regex_executor.tcc
! 12a5f20c1eaf1e8fb0aff981a3ed4a8f  libstdc++-v3/include/bits/regex_scanner.h
! 0d316449b58d5b9a6e5b55d8247fe683  libstdc++-v3/include/bits/regex_scanner.tcc
! a6884f0713c81bdebc2a934cc5687cda  libstdc++-v3/include/bits/shared_ptr.h
! afd49f18a7dd6d45943bf72b32ea3d50  libstdc++-v3/include/bits/shared_ptr_atomic.h
! 801daa7c12e40267ba9a27bca56dc93c  libstdc++-v3/include/bits/shared_ptr_base.h
! c0526bf1c88678c45ee876e112333d89  libstdc++-v3/include/bits/slice_array.h
! bbb6c000174bcddd3fd4325929fb32d5  libstdc++-v3/include/bits/specfun.h
! 4b8bf0f6d7a35d35187a386ce3800e64  libstdc++-v3/include/bits/sstream.tcc
! acd1c54326b04738c23b893ba8a03da2  libstdc++-v3/include/bits/std_abs.h
! 8e9a1e44fe60f090a9de986a264180ec  libstdc++-v3/include/bits/std_function.h
! 6a4c091e5d4670705e42d4fff51ca42a  libstdc++-v3/include/bits/std_mutex.h
! 52ea3eafc6a0b82ae28b19432ed6df52  libstdc++-v3/include/bits/stl_algo.h
! f6b70f6cfa24dadc62702723b2cfa5aa  libstdc++-v3/include/bits/stl_algobase.h
! f98ab7489f329908fdc4efc3cacef114  libstdc++-v3/include/bits/stl_bvector.h
! 6e7a77a27553aaec7319f0a44c932a2b  libstdc++-v3/include/bits/stl_construct.h
! 806b2285c88044954824630c7d4c963c  libstdc++-v3/include/bits/stl_deque.h
! 803be361e8ffed08708fdd84c0d32d86  libstdc++-v3/include/bits/stl_function.h
! 14882d5d8b49113d741f2e45566d69ea  libstdc++-v3/include/bits/stl_heap.h
! b64a723882fa9d73ce9eff45fbf64dfa  libstdc++-v3/include/bits/stl_iterator.h
! 78b54e413727499879f41320384fc471  libstdc++-v3/include/bits/stl_iterator_base_funcs.h
! 81c4765bd0b6c51296aca47b9fe68ceb  libstdc++-v3/include/bits/stl_iterator_base_types.h
! d4dfffd31dc1f5ffc37a4e304431a98e  libstdc++-v3/include/bits/stl_list.h
! bcd96e7e05e3d561fa3028ba94ffb2f8  libstdc++-v3/include/bits/stl_map.h
! 7fee61ae1f759db65482f50f94cd124d  libstdc++-v3/include/bits/stl_multimap.h
! d12c97b7d4a808b1ec90ac1e0f89032f  libstdc++-v3/include/bits/stl_multiset.h
! 05e0abfeae12a74ba5ac9472da9af143  libstdc++-v3/include/bits/stl_numeric.h
! 896b236305fb65ae5cf1090c853bcc3c  libstdc++-v3/include/bits/stl_pair.h
! d94f50bbe3b1c4da4d81166739d8a1f0  libstdc++-v3/include/bits/stl_queue.h
! 7440af9ddf694a046490dfc95a69fa19  libstdc++-v3/include/bits/stl_raw_storage_iter.h
! 65b9b3808c35cc6b9603c38adf3f597a  libstdc++-v3/include/bits/stl_relops.h
! f35b569901b86e6fa10afef0c6e0ea68  libstdc++-v3/include/bits/stl_set.h
! 9eb7427dba2c7d3e1517ca0dc0bf5c83  libstdc++-v3/include/bits/stl_stack.h
! becd4a09d374f38cd74aa3cc036142bf  libstdc++-v3/include/bits/stl_tempbuf.h
! bcb30518cfcf10a2f5b0602bbe79d77e  libstdc++-v3/include/bits/stl_tree.h
! 6aebd022faef1992c9ae9a5624e85f73  libstdc++-v3/include/bits/stl_uninitialized.h
! ceee32feb6e79e7026ab4483f48b4039  libstdc++-v3/include/bits/stl_vector.h
! 37903d1831e37a8dcc2087d9716a2d10  libstdc++-v3/include/bits/stream_iterator.h
! 885101d2111686dfd9be5e25b6afd378  libstdc++-v3/include/bits/streambuf.tcc
! f571c93455866a2aa9ce45453f590765  libstdc++-v3/include/bits/streambuf_iterator.h
! 9ecb8637c8767c261f5e6db77dc6f1fc  libstdc++-v3/include/bits/string_view.tcc
! c6673a8a7af82b8a7e980c02724ca737  libstdc++-v3/include/bits/stringfwd.h
! 846e9490b0b182309ef44970dec9d148  libstdc++-v3/include/bits/uniform_int_dist.h
! 770bca6c06b460d2dbcbe5c7ae0c8029  libstdc++-v3/include/bits/unique_ptr.h
! eba4d1e235b1b0e1dee69c15cc2a7fd6  libstdc++-v3/include/bits/unordered_map.h
! 6e08c43bc64c22eb4dbc866f82137d1e  libstdc++-v3/include/bits/unordered_set.h
! 3e69e6010dff16c4ae67ac39a7af9f9e  libstdc++-v3/include/bits/uses_allocator.h
! da4aa1ea8bbb9e3dfd2428ad29b0fe65  libstdc++-v3/include/bits/valarray_after.h
! d8e975ff5bba44cb20ec7945794d730f  libstdc++-v3/include/bits/valarray_array.h
! d5149f7d6aecaba61bb4767cea6e2b9d  libstdc++-v3/include/bits/valarray_array.tcc
! a200065337c260c247319305ca52a713  libstdc++-v3/include/bits/valarray_before.h
! fbf56223c89090fb4d4586830e23dbc3  libstdc++-v3/include/bits/vector.tcc
! fc4987f7407d8c0501371c54186f8c20  libstdc++-v3/include/c/cassert
! 9714997c6a1958689562519e4ff54067  libstdc++-v3/include/c/cctype
! 439d261ec63cd64c07a3edc174143110  libstdc++-v3/include/c/cerrno
! 64f63d8b29a58bd620fbc51635ff316c  libstdc++-v3/include/c/cfloat
! 30b89eff36379e301b967a298f2c4aa6  libstdc++-v3/include/c/ciso646
! bd640cd30cc76f9186fd6d0845ed1abf  libstdc++-v3/include/c/climits
! d6ac0a1c0ba9a60b55a54e04a7592008  libstdc++-v3/include/c/clocale
! 57b8cad683747fece587509102a0c955  libstdc++-v3/include/c/cmath
! 49de0a48e36fa6478586b0f8224b0f16  libstdc++-v3/include/c/csetjmp
! 409dc483d49bb9a3475feeac8868a95c  libstdc++-v3/include/c/csignal
! d99baaa73020408b73299c2c542c633f  libstdc++-v3/include/c/cstdarg
! eee2bbe49f908a311707e401c18a75a2  libstdc++-v3/include/c/cstddef
! 2517a740192e744e40b50b3e8f5cfd0f  libstdc++-v3/include/c/cstdio
! 873d293f7a9d9d614a327e6825d647a1  libstdc++-v3/include/c/cstdlib
! 1e444705ead10f4852c0e38c92083a7f  libstdc++-v3/include/c/cstring
! 8f75924f6ca5a0b15a6b650ea1f1cb72  libstdc++-v3/include/c/ctime
! 506cf5d94ce2c0661f256e7eacc130a0  libstdc++-v3/include/c/cuchar
! 1ced07332358aa7176e89f94078413bc  libstdc++-v3/include/c/cwchar
! 0c42afd2833dcb66950ed73eb40412b6  libstdc++-v3/include/c/cwctype
! 0e566bcca2a047c915dd76bdddd535d1  libstdc++-v3/include/c_compatibility/assert.h
! 4f71ff4e2bcc95ad1efc862e37acf308  libstdc++-v3/include/c_compatibility/complex.h
! 2294ae1572f2fb5eaaac8dd5d514d411  libstdc++-v3/include/c_compatibility/ctype.h
! fd49f87049ffefb62d6f6c79999c5086  libstdc++-v3/include/c_compatibility/errno.h
! e6d32918e5f2891105d0e65da808535f  libstdc++-v3/include/c_compatibility/fenv.h
! 7bf553ddcc004f953d9ad35c99847126  libstdc++-v3/include/c_compatibility/float.h
! d3bc9c3354f65cf56008f93605220e52  libstdc++-v3/include/c_compatibility/inttypes.h
! 8f42bec72ff257dcd15e123c4e700bce  libstdc++-v3/include/c_compatibility/iso646.h
! 553f9fa557584d69fdf4336db314c8b5  libstdc++-v3/include/c_compatibility/limits.h
! b93a343afebe890a359d0ee16553ac08  libstdc++-v3/include/c_compatibility/locale.h
! 26e1d55855d0b59793066e8fc1211f82  libstdc++-v3/include/c_compatibility/math.h
! 91de368de54254d3b01680777e6b8e97  libstdc++-v3/include/c_compatibility/setjmp.h
! b579655ba9562fe351f7a1d8028f04a2  libstdc++-v3/include/c_compatibility/signal.h
! 71e97082e8256ddcdeea7fff21c3311b  libstdc++-v3/include/c_compatibility/stdarg.h
! cd2242310bd438c2356ad7765680acfc  libstdc++-v3/include/c_compatibility/stdbool.h
! fff098b4e51b52d0ddacf5e88334b7f3  libstdc++-v3/include/c_compatibility/stddef.h
! c5de9d04b15a8571cc73e7c59dec96c2  libstdc++-v3/include/c_compatibility/stdint.h
! ab0721e48894b74d2130402d3329d46f  libstdc++-v3/include/c_compatibility/stdio.h
! ceef6bc8df57c14109c48fd732ade0bb  libstdc++-v3/include/c_compatibility/stdlib.h
! fd16fd27f85f78a4dd4311a15f1cbd22  libstdc++-v3/include/c_compatibility/string.h
! 3d22ddae4002f37b4ab8240604e85ae9  libstdc++-v3/include/c_compatibility/tgmath.h
! 3f13d487dd0c9f336e91881f32991850  libstdc++-v3/include/c_compatibility/time.h
! 5f67e3e9564847ed9f9974b9982e2e2c  libstdc++-v3/include/c_compatibility/uchar.h
! bbc407dd8afec6e3a65b225e729401e6  libstdc++-v3/include/c_compatibility/wchar.h
! af117ad0b81df0789d93d1405f806fb4  libstdc++-v3/include/c_compatibility/wctype.h
! 51b1df3c5bc5a3381f16fab7d6252b76  libstdc++-v3/include/c_global/cassert
! bfccb32ea37ee7868f528a4122330081  libstdc++-v3/include/c_global/ccomplex
! ef2c6cb542cf232ec7ae1e203fd524d1  libstdc++-v3/include/c_global/cctype
! bc85e76d222ef8478874fe8c7d8785eb  libstdc++-v3/include/c_global/cerrno
! 667e74d005dc134db92949da5d77be45  libstdc++-v3/include/c_global/cfenv
! 1dbca553d7e3cf3ab635c318b71f1ca0  libstdc++-v3/include/c_global/cfloat
! ba11a7c7e5f317d0d1d40cfd27a9f15d  libstdc++-v3/include/c_global/cinttypes
! 1d8297c340683e6bde7f276c3b1f60a4  libstdc++-v3/include/c_global/ciso646
! d21d7c661271a9ca0cc0d333b4c35675  libstdc++-v3/include/c_global/climits
! 2bd5015af591b2f67631a4f52efce060  libstdc++-v3/include/c_global/clocale
! 41ba3cf49c513ad64dd2dbda910a324a  libstdc++-v3/include/c_global/cmath
! f2ad4bdf8026b9243644a91bb2dd54aa  libstdc++-v3/include/c_global/csetjmp
! fe9622cab142360b2b7bbaacc4241304  libstdc++-v3/include/c_global/csignal
! 5ca05328cf144b6a8717b6e9763be021  libstdc++-v3/include/c_global/cstdalign
! b8ab1af54604b03865228605eb029cbc  libstdc++-v3/include/c_global/cstdarg
! f498ee5fd50ca360be82c4989b4893ec  libstdc++-v3/include/c_global/cstdbool
! 251d0b6ec2285b41132e7a5b8a09a519  libstdc++-v3/include/c_global/cstddef
! ed5d305d3857fcfbc9472b38b12539b1  libstdc++-v3/include/c_global/cstdint
! 4f8dd9c11396a5ba39ac61067a275021  libstdc++-v3/include/c_global/cstdio
! d46e22f5d6332527c33a36609e39b696  libstdc++-v3/include/c_global/cstdlib
! ca1e7a693749a4c5b63ae755bda7b672  libstdc++-v3/include/c_global/cstring
! 7521967277dff234c51226d0fe786e7e  libstdc++-v3/include/c_global/ctgmath
! 001ce600ad54de4b0416d81ead8f0bf7  libstdc++-v3/include/c_global/ctime
! 28c2dc89063a32c4c420441e741f1f02  libstdc++-v3/include/c_global/cuchar
! 0c19b23cdb629f286a71309520db311a  libstdc++-v3/include/c_global/cwchar
! 5ee11644911400a34e22eb5c194c091d  libstdc++-v3/include/c_global/cwctype
! 8a0ac042fd4ee3ebe2c1d316420bc51d  libstdc++-v3/include/c_std/cassert
! 966ce2fe11233843f03aca162cedafcd  libstdc++-v3/include/c_std/cctype
! cf2254b8842a4565b2a00c8bdb9d4274  libstdc++-v3/include/c_std/cerrno
! b4a7cdd4d283f08a043ccd59a3aa7432  libstdc++-v3/include/c_std/cfloat
! 2099b9e09e8bdb7e2eb47bbef1d9e4ba  libstdc++-v3/include/c_std/ciso646
! 9df860cc117a049a04bef99e37ca58db  libstdc++-v3/include/c_std/climits
! 22f3436337923a13351c6e136678e368  libstdc++-v3/include/c_std/clocale
! 22fcc5545bf0ff1e7b76ce0b6f058947  libstdc++-v3/include/c_std/cmath
! f37275da0181f4fce523a3ba351517bc  libstdc++-v3/include/c_std/csetjmp
! 1547d3ef59c4b4d6ad56078f319395eb  libstdc++-v3/include/c_std/csignal
! 96150e4dfb6b648d8573560a4bc3a8c8  libstdc++-v3/include/c_std/cstdarg
! 3139c2cd13b5e5d48db4c11d9cb1890b  libstdc++-v3/include/c_std/cstddef
! f3b22d797d4a128632497eaa0ef60ca6  libstdc++-v3/include/c_std/cstdio
! 4c3d5058a87b77ac3ae8744f12d7f02e  libstdc++-v3/include/c_std/cstdlib
! 7bd5f0dcfba66c0f2cc2117cc712ad73  libstdc++-v3/include/c_std/cstring
! 961fd1ba1c8db9d00cf999caa6fb4aa6  libstdc++-v3/include/c_std/ctime
! cac2b91f38207853708c95cde5204e80  libstdc++-v3/include/c_std/cuchar
! 77f1a17a3ba5a18edb0c95f31502ee72  libstdc++-v3/include/c_std/cwchar
! c5a9ff548fce1baa402e50df52be6797  libstdc++-v3/include/c_std/cwctype
! 3ff5eec6fc2a84e3f8d96422286f0f10  libstdc++-v3/include/debug/array
! f637c33a7926677fa5ee8f17acdd0de8  libstdc++-v3/include/debug/assertions.h
! 0d1a557c639b0764c78a8527c1a80983  libstdc++-v3/include/debug/bitset
! 0d648599b52b1d377b1fee4a0a4b2b91  libstdc++-v3/include/debug/debug.h
! f553f4010b8a1ce4da415cda2e88b775  libstdc++-v3/include/debug/deque
! 8cc2d9adeb086929d4a24d9ceaa882f7  libstdc++-v3/include/debug/formatter.h
! df58f1d4649c68dd52f5e8ea9dd54e38  libstdc++-v3/include/debug/forward_list
! 8002be2fd070fd857a1347c91d3e9663  libstdc++-v3/include/debug/functions.h
! 7f79d387834be9523007803cfbdf1ab7  libstdc++-v3/include/debug/helper_functions.h
! d492d9a956b56a457e83f09644c04004  libstdc++-v3/include/debug/list
! ddd196e1a198ab88ff0083af74064cb1  libstdc++-v3/include/debug/macros.h
! fbeeef05a68c4764d751dfd06024e78e  libstdc++-v3/include/debug/map
! e1e7c37894b441bf5d9032b458f7efc7  libstdc++-v3/include/debug/map.h
! 68b1f0671d7f1170d2b34497426b78f9  libstdc++-v3/include/debug/multimap.h
! 838c8a47a17ac1baab0f24a7b75f8869  libstdc++-v3/include/debug/multiset.h
! abbeeca77177b0a463cef7c858a46fdc  libstdc++-v3/include/debug/safe_base.h
! 6b479f6b3697bcc81e2ddac20495da95  libstdc++-v3/include/debug/safe_container.h
! 1e03debaac66fb38bb3b342f8e7b437d  libstdc++-v3/include/debug/safe_iterator.h
! 42f37e7c32f794c82b36e2a6c1dab714  libstdc++-v3/include/debug/safe_iterator.tcc
! c5441d23bbfc4649e34e37a37cb1dd26  libstdc++-v3/include/debug/safe_local_iterator.h
! 083dbd7b53770ea102d604f42aff209f  libstdc++-v3/include/debug/safe_local_iterator.tcc
! 66b39ff430792de012fa4ea3e693385a  libstdc++-v3/include/debug/safe_sequence.h
! 86467a287b425215b190970888706dba  libstdc++-v3/include/debug/safe_sequence.tcc
! 76960c4a1b7fd351925985af417f8ffc  libstdc++-v3/include/debug/safe_unordered_base.h
! f07628376ea2da8af9e59b45dffe63dd  libstdc++-v3/include/debug/safe_unordered_container.h
! 3b291732b9742ee3aff7872e5d8abd74  libstdc++-v3/include/debug/safe_unordered_container.tcc
! bfd0fb8b64bd52dd6d9c5c72e649f2bc  libstdc++-v3/include/debug/set
! 3ba07a134873cf31b288f229e092f771  libstdc++-v3/include/debug/set.h
! ad162bd16cb49e6bce94285fb77439a0  libstdc++-v3/include/debug/stl_iterator.h
! eee175ab3fe13c6eb08a897d15db7dbc  libstdc++-v3/include/debug/string
! 8cea3fdb27cd44961163f4f38226f17a  libstdc++-v3/include/debug/unordered_map
! 89b7c6db1f77c3ab1f3451c20928a873  libstdc++-v3/include/debug/unordered_set
! b7deb76eacc249755ed84107bea2b0a3  libstdc++-v3/include/debug/vector
! 46f13b4ad1ec44acc6e045f4f35736d3  libstdc++-v3/include/decimal/decimal
! 67025aa6536dc7818f5a79d7b8b476fe  libstdc++-v3/include/decimal/decimal.h
! 69a146afb204c91763ac15b4d7fd273c  libstdc++-v3/include/experimental/algorithm
! ff88ab1be594b84feb6e198a94a6048a  libstdc++-v3/include/experimental/any
! 5b4fe84e61da5736f46e163c8cf5087a  libstdc++-v3/include/experimental/array
! 79ee96cb97cdec6c2fa004402bd85cc3  libstdc++-v3/include/experimental/bits/erase_if.h
! b31d223fc4e81e9ca56007031aa84a92  libstdc++-v3/include/experimental/bits/fs_dir.h
! 609183f8496329cd1d5de92646da7b85  libstdc++-v3/include/experimental/bits/fs_fwd.h
! 7e96d237e463194566951fa93b5dab6b  libstdc++-v3/include/experimental/bits/fs_ops.h
! f17ba43c4757f270cf91bd02b0627596  libstdc++-v3/include/experimental/bits/fs_path.h
! 44bafbb8e568fec7452ca1bd97588957  libstdc++-v3/include/experimental/bits/lfts_config.h
! bb4f41e864b9f643e813a777cbb2cd69  libstdc++-v3/include/experimental/bits/shared_ptr.h
! ef4ee263c638c988bd3fc807cba960e9  libstdc++-v3/include/experimental/bits/string_view.tcc
! 44294221927d99845adedfc1396377e9  libstdc++-v3/include/experimental/chrono
! fbcb2c0edc93ab70fc3e2736fe4435ff  libstdc++-v3/include/experimental/deque
! c8b6b18540be7a3af25da94e3dbd6551  libstdc++-v3/include/experimental/filesystem
! 632daf8942b8d1e48ddbc1b7456bc505  libstdc++-v3/include/experimental/forward_list
! 76945c7166dff100a6a709b10f08c181  libstdc++-v3/include/experimental/functional
! baf22aa76393c350a21cd1338b70f35f  libstdc++-v3/include/experimental/iterator
! be3ee1ca07ced4a3b8364038fee6f252  libstdc++-v3/include/experimental/list
! fc805363df112a0f60c4caebbaa46eff  libstdc++-v3/include/experimental/map
! a8b2fd9a2523fbe810aa7b04487370b7  libstdc++-v3/include/experimental/memory
! 69fa85899f6a29422828ae050d02a030  libstdc++-v3/include/experimental/memory_resource
! 5d2f52e92031cbfe38152f8fd9929651  libstdc++-v3/include/experimental/numeric
! 9132e74afd6fa9f4bf69d63fde578784  libstdc++-v3/include/experimental/optional
! 7c6b7cbf2cc1ed143898fd9bd7c4137f  libstdc++-v3/include/experimental/propagate_const
! e4997fd9dbd9d232ec55468001018673  libstdc++-v3/include/experimental/random
! 65aaa40c9c380e63598b9c10909577bd  libstdc++-v3/include/experimental/ratio
! d29f37f84cdd0854b6b674df1dc4da1b  libstdc++-v3/include/experimental/regex
! 54934f172e2ce6dd76f80088dfa0fffe  libstdc++-v3/include/experimental/set
! 9ca0435ca59f80e10d96945e37d31f44  libstdc++-v3/include/experimental/source_location
! 75cfb96838a03932b5a48a2ee7f5074f  libstdc++-v3/include/experimental/string
! a51d281e7fa94d3bbdad3dbe3622b302  libstdc++-v3/include/experimental/string_view
! 0a83f7784deca0367daa540e31d44684  libstdc++-v3/include/experimental/system_error
! 495957705bd6aafc528b12e339a6f2ae  libstdc++-v3/include/experimental/tuple
! c68fc607d1088fb6ed554e0245c5d2b3  libstdc++-v3/include/experimental/type_traits
! 77e5979fd3f2cf6081eb13739149100e  libstdc++-v3/include/experimental/unordered_map
! fd404bc6dae5c740f48b48ae45dc7d36  libstdc++-v3/include/experimental/unordered_set
! bace8556784b47dd9d766e2b26056829  libstdc++-v3/include/experimental/utility
! cb6d8b88ec31c165ad01679650398e06  libstdc++-v3/include/experimental/vector
! fc23b476bd8091490eaad3380cdf4b8f  libstdc++-v3/include/ext/algorithm
! 5c4bf48d5d6516d061e8efb44846c551  libstdc++-v3/include/ext/aligned_buffer.h
! e6f5ff2eb838c196635cea31ecf074b2  libstdc++-v3/include/ext/alloc_traits.h
! bb4f190ba5e48a92b0fd03702fdc38f3  libstdc++-v3/include/ext/array_allocator.h
! 0870c9bac34e3af61d89bf7fd60ed550  libstdc++-v3/include/ext/atomicity.h
! 11ed8b016852c7b62cab307be9112889  libstdc++-v3/include/ext/bitmap_allocator.h
! 2df70ada5a36ffb913e4c942fa043e54  libstdc++-v3/include/ext/cast.h
! c6c2128effa8581deeec2b4dd1b6e174  libstdc++-v3/include/ext/cmath
! 18421c0df991be8193515d952c007258  libstdc++-v3/include/ext/codecvt_specializations.h
! 5d4a89a849560e05b27e91f9e8405f93  libstdc++-v3/include/ext/concurrence.h
! b0b4ec156dc84b3286f1d10b4c3aa4b8  libstdc++-v3/include/ext/debug_allocator.h
! 6503623a10062e7bde10063f830eacd6  libstdc++-v3/include/ext/enc_filebuf.h
! 5e258210c7899d9d542a0d3876bdbb47  libstdc++-v3/include/ext/extptr_allocator.h
! f13f9549cca8da055274ad6093725c1f  libstdc++-v3/include/ext/functional
! 8a8a619f1935c909374643623f2ed14f  libstdc++-v3/include/ext/iterator
! ee9e2511d1a1e7b07e1d383db0d2178b  libstdc++-v3/include/ext/malloc_allocator.h
! 369ba33352e5ab25fa4741b524c5479b  libstdc++-v3/include/ext/memory
! 4ea9950d663e4352ff31614a609b79f8  libstdc++-v3/include/ext/mt_allocator.h
! ece13daf300dfc0cac27dc2ea29129ca  libstdc++-v3/include/ext/new_allocator.h
! 9308bb593647ee920acace8cc698a3c6  libstdc++-v3/include/ext/numeric
! db1137b58d3d1d9e85d5d35573c55b80  libstdc++-v3/include/ext/numeric_traits.h
! 39cf2c62560ce9af20d74212824a8984  libstdc++-v3/include/ext/pb_ds/assoc_container.hpp
! e3a3d15a247ec2b156f956d25e7550d2  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp
! c726d88f3634cdf9b3595d618f96ba55  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp
! 833b1aec053b5a498c886644f33fdeaa  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp
! b3e45b3b68723823d285e35a9ce4673b  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp
! 7001c4faa939d9a1d7fceee7b61b87f4  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp
! 24974c760014fecbf0e45dac42be97c2  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp
! 3ff15727c4dfa19e60e62ff672579b52  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp
! 17cf2f098a6825e5173d6331be7f4129  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp
! 4f80e60a074245a01f11dcf06643cc1d  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp
! b67b3d250c9d02186e36a8ce9d3743bc  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp
! 4e227fa8758497b7811a1836ebd35e64  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp
! cf65af79062e17a14cd8fee7d68d1545  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp
! 4ace2bd565357dd7af71c3ba17527140  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp
! 68f9bcdbe8893c9fc8806829b35d08de  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp
! fe6280f2a29a2b812e85e85f4b3e9164  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/traits.hpp
! 6abb558d31f3ec35b96005dc07941a15  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp
! 2aa679f27c6a9620f96bf72054590875  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/const_iterator.hpp
! 0e3685ff478d9d5c2495dbf62fbda629  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp
! 4de3e7c7f2c839dafbe555f815377135  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp
! 4529d7ae04671a7d094384673d049ca8  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp
! 84cae2d36d8af0e6dda8a8cb272eecca  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/entry_pred.hpp
! 0d547fb7dcab2dabd40feadc1aa3a3d0  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp
! 16e2431833760719d8a353bd5775628b  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp
! 0daef52916b80481d2cc2aa4382390df  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp
! f959556359eaf366b59a3e0af10e8440  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp
! 07200d082f86751361bcfc9f997086d4  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp
! e0f709ae4443a616729833eca4430ac3  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/point_const_iterator.hpp
! e11f4dcf380dd70c8a91a7bef34f655c  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp
! d95b2726bd54849bacde9b1f10d7866f  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/resize_policy.hpp
! e97a7a3128c32accc9d4f0c7a0b6afee  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp
! f77a3a8a8e949b6b33e32e720340a98a  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp
! a0b5ab34ee22655dc78d7d14a74337c1  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp
! 5ed9904cc92671c85da749fddfa783f9  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp
! 189cc645a43aae3c9b421ea532df93cb  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp
! 4d272250b741447be84ea75ffe790536  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp
! 194127e0aca0e0452c88944c12a848d2  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp
! ad54aa1ba08de1f79110f3de36b27d4c  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp
! b7de0853717376ccf9f37b39c6f8c7f6  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp
! e5cb99904714e9588033c4df5570c4bd  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp
! 1b75bf91956269d7dc84ed71cc53eac2  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp
! 5c071db1f26508fb61ba8987adc455fd  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp
! 269582317a1a6f703dd376d49829bc9b  libstdc++-v3/include/ext/pb_ds/detail/branch_policy/branch_policy.hpp
! 969f109939e0c939c6d5746009cd876a  libstdc++-v3/include/ext/pb_ds/detail/branch_policy/null_node_metadata.hpp
! 99a035c86fecbff9f02bcd967b691738  libstdc++-v3/include/ext/pb_ds/detail/branch_policy/traits.hpp
! 51a4194cee715cbffbfc02627550e8d9  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp
! 30e2de6f64061ddeaaf73a18bf34a2ec  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp
! 85014058e8513bfef4594a7c984ac215  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp
! 700b5ba5b451f7b17f8eafb9c898f9f8  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp
! fefef29f16aceee62dca938aed540a66  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp
! bd2923850ed8f6ee7442f7092158b5d6  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp
! 0ce998aa53e99726da474bef0709257a  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp
! 001575fdb273e6fac84445f7b61350a9  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp
! f984a726bd59e9442c08f3bef10ca7b6  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp
! 35939d88427a49e3e745f63473ebe3cf  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp
! 55b2cf1b458ec4db817a5ce89f057f64  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp
! fae0261b1ea46e55ba83373848c25102  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp
! a3072325de48fb294f16e7dfe3d01556  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp
! 69d2c5310fe71c4b5afb63a49baafa04  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp
! 8a7424b2380e29429e58dc7193452bf2  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp
! 472c17daaffb75e0c46c1503de22e33b  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp
! 2020c986f3a347e7ac1bddf8ad3cbafd  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp
! f53595cf6496caed08632a9560700cc0  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp
! e7cef43a46b501b4b239af06b5d1ef44  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp
! 13193419be037c59a6cfb40f9942094d  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp
! cdfb0f44be5bc34354a91755ff4df31e  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp
! 8214a50e2b69ef53db1a6655e283abe0  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp
! 1c9a1367163e47596fd3fd456c1967e5  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp
! a7ee75478e3375a1b43fbf823ff7cbd6  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp
! 3562ea890ed115f458b29b942b03ad60  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp
! 56b623fc0657e0bf3b72141191bc8b3c  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp
! 6d8b4693f09c4812012a616a4a708c00  libstdc++-v3/include/ext/pb_ds/detail/cond_dealtor.hpp
! 14cac423d71107ec8f814f901eee83f3  libstdc++-v3/include/ext/pb_ds/detail/container_base_dispatch.hpp
! 5458d1ed9dcfe3d6331223caf686e43b  libstdc++-v3/include/ext/pb_ds/detail/debug_map_base.hpp
! 88c4122e6ba79ddbf4abdc83288796a8  libstdc++-v3/include/ext/pb_ds/detail/eq_fn/eq_by_less.hpp
! 902eb1b7b75572f0601e9b7f7ee79b0f  libstdc++-v3/include/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp
! d0ca08b5829c9a407f9c9b1915ac4056  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp
! ccf85ddc6fb059d7944be2f8d7264421  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp
! 53939da7b9ed534f3d84724eb1071fe0  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp
! 97d9d869d4190e71da10e9b7e6fa1bfd  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp
! d1aa79ae62b1e9c7e61bdae1624987d2  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp
! d7026b68dfef1913e75e72d6a67d9d18  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp
! f53a1c7802aea4929b554ad7ccfae0dd  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp
! b9075c203154d01a8384a39e13b45b36  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp
! f48953fc37d0d1cac06797ce46cc92be  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp
! caa7e37cbc213eb2034faa19817588a9  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp
! dcf57426959c5cf11bf944ec24009002  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp
! 2e86b3755a74316848f1f8b03841587d  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp
! 2270f8f33673e334ad416fa8080efd0f  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp
! 56187ec4faf9920e770bab90beec851b  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp
! bb3d6e3270b91aa013e3090a6e170906  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp
! 6e0933445ff1c319874b0e53109f00e1  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp
! 9fd958209ff68fbd194776d21144ea25  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp
! bc4d11ac4292324d30988cbb478ca28a  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp
! 595979c56ef1fc7b7a9f4921d1337378  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp
! 227119a9e6417bd7210303216e128bf8  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp
! cf3218eed20a4a2e3fa08d782a62eb9e  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp
! 86c5ea4a73bea6fff376b9ec1a64d90a  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp
! 522298ba4a3019f0050ab2fdf012e23a  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp
! 8cba142f7a71fe1a0bfe29a47867b000  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp
! 8a3cf6cf2d283aa7dee35a7e30cde743  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp
! 712377d0570f9d914ff31544d5bbe7ea  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp
! a8a12e4c6df4ef5498190180c168a565  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp
! e1e054b499e168bedea449597f78b41d  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp
! 7edc381036cdd227eac8c22c6a2166ae  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp
! 3a2a31ffe1e700d6c61b4e0a2cc3a694  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp
! 6aa74b5da85db20b0c68be67edd72f22  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp
! a046b2b7df280247d45d99fde5300ffb  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp
! ed8188c3f16685197e793faef162a2eb  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp
! cd0c193c51192d326cfb661f2bc62df6  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp
! 0989b45f8382229dd9ad1d25a354f87b  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp
! 61145317b0eed8144deea00ff34bede4  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp
! 122bd018db5b9c246791764e09851abe  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp
! 5b3009d2656b842f7436affc13179d11  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp
! d7b91158b75f78fb242a04e617ff622b  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp
! a88e5b584c264979f9b4f56138edeb67  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp
! dc81889510078e1e8b29476ded1792b5  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp
! 0cd5697bfdee582b7397731c5442164c  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp
! 62788926118091415bdc45e5a867fe58  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp
! 00c41bd0b6de095d83a491ee28674636  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp
! 83f1209b028ae11c05212308c6ef38ed  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp
! 33c62eea408efacb60f83df34afb9ec0  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/point_const_iterator.hpp
! 17bfb8464e798ca189343fbdebdac444  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp
! 21d12b46f19dfd3f565172105fec9aff  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp
! 6d1550b795500c71acc2e60ed2052faa  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp
! 63bcd8c45978d3232acd2205afc8439a  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp
! 7944df959687779ea28c845f2cf1be1f  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp
! aa9a2fbcb268146dcecd69537479bba4  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp
! 9d77f09584c07d4d4f228da72f349934  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp
! 5c8bf1b039900f395bec1ea09038c524  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp
! 06e6682a154145cf92f19e917c55918e  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp
! f1951633f7bd61f11526aee99a03ddc8  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp
! 9d9312f4e26e1afe52fef8d47530d59d  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp
! 783ff48813bfaa97703712a286a4d566  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp
! 1ba66608abb13d45915ffc1e880125f0  libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/lu_counter_metadata.hpp
! 3b1c86bff3d389376d2453daf003dd96  libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp
! 5637363af9981ab8ecf59984bc491c33  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp
! 08bdb179c6212b076f7515197a129ca4  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp
! 98537eadb4380253d1a30bd971480fbc  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp
! 5e2f7122ebc285a70617fb60e8179bb8  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp
! e26e97c6c3ecd3d555a6eded3b13524a  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp
! e47aa96c5403bc827db55a5f1aed781b  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp
! c2bcccc6947424dfab1e04be80d972cf  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp
! 545db8a3cb736fdc2a5ea15ee8bfd327  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp
! afd7e637b8ff7a22d255d5fd14554f04  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp
! 16602474cf4ecc1a221c661fcd539058  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp
! 50b1d338d68c2a25595883fc546aaf58  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/traits.hpp
! 73c7e7db892ba5cb7388df042af1c2cb  libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp
! b3f935cd274bdc2f211de8246fe23df7  libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp
! 2f0c106508a7a5c9dbb5715794968400  libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp
! 7e82e9f957644c77a97b63503e273f38  libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp
! 0c307b5fb71d75fad4a082152e0c51b9  libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp
! 039bcdb0666303723f0e0e0dfd220435  libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp
! 01349925705271d165b25be686f61232  libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp
! 94c78636a7aec7b7fff0c3b4307e9b42  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp
! 27d01837b36ff40734c5a804b42754aa  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp
! ea66c6a69ab1eca602e66a4b6b80bbab  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp
! 4683681e0cfec2123b82f54077140bbf  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp
! 6c8a8a6362c79c9cdcdcb568116fdd19  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp
! edb8a7efc510d0d923d1b136dfd80f0e  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp
! 243901f69f3fc0071327068b8f8e5eee  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp
! faf559b96e8386983765a931b29c1153  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp
! 3f53402a4d571dfdd043f83d2e3fffc1  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/pat_trie_base.hpp
! 78e6f81360e6fd365ccc58ab8ac6ba3a  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp
! f3ee029b68f735a939298456597975d1  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp
! 605b37eddc7de1a31a0e8ca99c2dcd72  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp
! 8cdc7cee7cd9699e53544c5ade0fc8cc  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp
! b8aa06df2d0c1850cac6ddfb9c6e639a  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/synth_access_traits.hpp
! 1b09460d4e8560321af04d5b56c57c23  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp
! 7a804c0faaed9675ed355644b1b73a37  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/traits.hpp
! f07c1eb719741018940d1dd35daaf2b2  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp
! 0dd3261ee580ec167ff948de106e497a  libstdc++-v3/include/ext/pb_ds/detail/priority_queue_base_dispatch.hpp
! 5939ad703bbfeb7fef5f937c7bb0d09b  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp
! 17857cf61ec9a048766555828db1e98b  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp
! 9ae849f682232f09b18b7684f3ffc135  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp
! e5898412b7dc9391ab264e6bb4e6360a  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp
! dbd253a2b2b85ed5aa3cea77f0431cc0  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp
! 748be4866a432d508f9dc129496e0ce8  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp
! 3206175c3814cbb6156c011f00f25d10  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/node.hpp
! ea00295d4766d0d1c1ad6aae9afabb3e  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp
! 4eed68069ffaefbb587ad79e0c13a5e9  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp
! 45e5de4279afe2b546646ed8344ec0c2  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/traits.hpp
! 8ef4e4eae1c0b8fe98085938e008592e  libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp
! 6a6ce274eab0c42fffaf65c92b3d2c12  libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp
! 3dd7da4377773df38b9316455b0357e9  libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp
! c4b8755e7629f5e832c196ece2376920  libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp
! 030de08d475210738bd89375db4bfff2  libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp
! aa729cbb85bf384fdac0d98d7fc65d8d  libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp
! 64e6d1257fee3d42c5a370fb5d393a1c  libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp
! 35bde00d49b07b6c490b07a15f9f6ad5  libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp
! 0de392ef1ee70aea8050da7bfcafa8db  libstdc++-v3/include/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp
! 0465c8093674aecbfc24db2dd6935594  libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp
! b538316d834d0cec95a883184abfeb7d  libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp
! 062febce2976c2440e2c290e2f68a8bf  libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp
! 9d3408adfd6d886879daed826882f09b  libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp
! 14281324a41729ea571b41160ebb0ebf  libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp
! e7e1ae515429fa58475b9361343e32d5  libstdc++-v3/include/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp
! e3eedd383239798d8fa4e47da57c7ef9  libstdc++-v3/include/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp
! ec2dd4bffd0eb4e204f8eefce474d591  libstdc++-v3/include/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp
! a21c26bcdc4b8148dd37cddb09de6072  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp
! 0f6da0db1f950f8e33226f9c8b5e808a  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp
! c100878e2f0c1c8f1e0e0c680520f1a8  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp
! 6a0984511ff276a522fae86f83ba7bb0  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp
! 3f09964932d891c595fef10b6b33df6f  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp
! 098e954a8b68962344891ee3ae5ff852  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp
! e9dafc45994d9f05953625d574dfe423  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/node.hpp
! 435af771b380ccf24f82c86db2271cff  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp
! 89135f4b9f4a8579a308df1b02fc9f60  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp
! 1ab97f6937842e68712a940a7406eef0  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp
! 24d6fe91414d5859f8ca50feb1ce01bf  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/traits.hpp
! 93f107036e937aa096a577950cb5ad1b  libstdc++-v3/include/ext/pb_ds/detail/standard_policies.hpp
! 14fed6c028efdd6be1861ae9e7df51c7  libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp
! dbd6e14a862ddc0186370dff7dd89f73  libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp
! 261dc67cc296a48b8e918417ccc87f1f  libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp
! f4736ad343fa7cc4a95b1273476148ff  libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp
! aa5c8d80018aa35bf570d3c5a9922350  libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp
! 118621f44febae9e6fe2695fc37856dd  libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp
! c9518a226cc31c2830daf75d82f157b1  libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp
! 9730375127621519212500a3596ecc3f  libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp
! 946e03f703c5859df16eae4f161bfd2a  libstdc++-v3/include/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp
! 835c9ce24ce744f76f128ca30466279f  libstdc++-v3/include/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp
! 1b5fcf45168b6a91ee6e5f77d0075f74  libstdc++-v3/include/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp
! 69f4ecee295addeab1c926c845fc7d44  libstdc++-v3/include/ext/pb_ds/detail/tree_trace_base.hpp
! b214e63e26c8c2dedd047cfefd10057f  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp
! 98bb214f8850e43ec883a310a433a102  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp
! 6d0d5d9930b68545826bca6cd03ef2eb  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp
! b4cf4d454e06a711591c952080c68f14  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/sample_trie_access_traits.hpp
! ff74f8861d6ee435bad2ce2561bbdb30  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp
! d41aa9ffdff6ffc0e333bd1c967fbb09  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp
! b5cf2a03a65424d24d5d72031d75b52f  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/trie_string_access_traits_imp.hpp
! 963d5f48913057e31f2bf1e9e2f90f37  libstdc++-v3/include/ext/pb_ds/detail/type_utils.hpp
! 77bfba133d6f88b1dc35a07884093f22  libstdc++-v3/include/ext/pb_ds/detail/types_traits.hpp
! 6cab93712bc5eca8e82d5cd4d6f98950  libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp
! 50049d9642bc1d312510094981aef1a3  libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/iterator.hpp
! 451392c4ffb89b57d7254ca2c59f877b  libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/point_const_iterator.hpp
! 9a55f99d7397ab6c2d1ec0ca7c1ad5b2  libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp
! a49453eece8bc627bd0e1dabeee2b99e  libstdc++-v3/include/ext/pb_ds/exception.hpp
! c2ae7e46ddd435ede794963c5fa6a73c  libstdc++-v3/include/ext/pb_ds/hash_policy.hpp
! 2c0a91c5b47f8883c8c2e2b956f358f8  libstdc++-v3/include/ext/pb_ds/list_update_policy.hpp
! 12d2ffcf69d3cd7f3c9021b099929fae  libstdc++-v3/include/ext/pb_ds/priority_queue.hpp
! 52efa0b2a4d29471db8412992b8409af  libstdc++-v3/include/ext/pb_ds/tag_and_trait.hpp
! 75c2d1a7c131c7ec3fe9760a47480e98  libstdc++-v3/include/ext/pb_ds/tree_policy.hpp
! 19022af90c40ef4998372a3a0387e3dd  libstdc++-v3/include/ext/pb_ds/trie_policy.hpp
! f90245a3357ba0a94a49bc871570add2  libstdc++-v3/include/ext/pod_char_traits.h
! 49a754edbc117f33ece0e1e12d973e94  libstdc++-v3/include/ext/pointer.h
! 7f9f76e06c737a88f6a7b94bd2c2b8ee  libstdc++-v3/include/ext/pool_allocator.h
! c6598b434d94ed3aa556d2247aaf097d  libstdc++-v3/include/ext/random
! ee91ce6ecabeba443b7c2c5e0feaa682  libstdc++-v3/include/ext/random.tcc
! 9e83695aa0666110ed57bf6ccd4f8755  libstdc++-v3/include/ext/rb_tree
! d0cef86b6bcc23421301df0a93659f09  libstdc++-v3/include/ext/rc_string_base.h
! 8fd26020427bf2dd40b80d0502077fe0  libstdc++-v3/include/ext/rope
! 6e7a9bb0c3590f2a871fd508c9a575d3  libstdc++-v3/include/ext/ropeimpl.h
! 1a8e08fd4185b778af4f4550a0994802  libstdc++-v3/include/ext/slist
! f4b62b8f7b2d952d925c8a356cdb6362  libstdc++-v3/include/ext/sso_string_base.h
! 8b9d15e9c58e865387a3fd38dd630390  libstdc++-v3/include/ext/stdio_filebuf.h
! da37e04926487a4e5071d67cc7dcd110  libstdc++-v3/include/ext/stdio_sync_filebuf.h
! ebd4886e7175e28c192df745521d7ac7  libstdc++-v3/include/ext/string_conversions.h
! 33f91ce145651ef2fab71b8c64636551  libstdc++-v3/include/ext/throw_allocator.h
! 26bf69ef6cbfed4d59beca57b675baf8  libstdc++-v3/include/ext/type_traits.h
! 3e384176a8979471e67d5859fe57d45e  libstdc++-v3/include/ext/typelist.h
! 237a0d9fbf939f2f1aa0c4f196bd7584  libstdc++-v3/include/ext/vstring.h
! 34a06b683a375112b26753dac412ad90  libstdc++-v3/include/ext/vstring.tcc
! c2866afb76d8aeacd4f0e89cd157098c  libstdc++-v3/include/ext/vstring_fwd.h
! e06ff19f7d826cb3a3d86c752ac4bf26  libstdc++-v3/include/ext/vstring_util.h
! e8da1a7a1dacd59014393be6b850625b  libstdc++-v3/include/parallel/algo.h
! 9da13d8fbb53380aa1d2d2dd323171da  libstdc++-v3/include/parallel/algobase.h
! be188b7e5d82862f6f4f459cd39e5543  libstdc++-v3/include/parallel/algorithm
! 58f0ddfc712c518cdabd69c436eece2e  libstdc++-v3/include/parallel/algorithmfwd.h
! 1230922d6dfe3b4193392bdca86eee60  libstdc++-v3/include/parallel/balanced_quicksort.h
! 6fcbd9c502e0fec15704f84d03230975  libstdc++-v3/include/parallel/base.h
! 303933084b43f4b2f534f4759b6349d0  libstdc++-v3/include/parallel/basic_iterator.h
! b755d902e273b513d95695fa23d43297  libstdc++-v3/include/parallel/checkers.h
! 2e5cd1a643379ce6f6d401e6347c9cdb  libstdc++-v3/include/parallel/compatibility.h
! 12d1ffd8ecf4a1c3a57db4fe958d0ee6  libstdc++-v3/include/parallel/compiletime_settings.h
! 3d419f43564ea383285b8f92b12fc53a  libstdc++-v3/include/parallel/equally_split.h
! 3acf717bb9c16bc2baae2b3704acaf49  libstdc++-v3/include/parallel/features.h
! 2b3da8ea04ef741fe8cb64fe56942d3a  libstdc++-v3/include/parallel/find.h
! 4313e292b51b3d75ceb553f756a961c5  libstdc++-v3/include/parallel/find_selectors.h
! 01c930cf2f932f4d48c1879f2557d639  libstdc++-v3/include/parallel/for_each.h
! f06dfe4c806f341572978973671867b7  libstdc++-v3/include/parallel/for_each_selectors.h
! c758521ebd876f23c85aa6949fbd1d7f  libstdc++-v3/include/parallel/iterator.h
! 617bc95c838033d972d22b9ebaf3e63e  libstdc++-v3/include/parallel/list_partition.h
! 1d397485bd7a1b26fec4e367adc4bb0b  libstdc++-v3/include/parallel/losertree.h
! 220cfb7b6f3951f4f05223110c3b4a32  libstdc++-v3/include/parallel/merge.h
! a505af8751926d825d4cac4beb232966  libstdc++-v3/include/parallel/multiseq_selection.h
! f164eab16074d6359a999b189f779086  libstdc++-v3/include/parallel/multiway_merge.h
! 7cac4f0b848061718971626c520c5fea  libstdc++-v3/include/parallel/multiway_mergesort.h
! 3c0ba12987b42277d747a82c91e37c12  libstdc++-v3/include/parallel/numeric
! f9d0f8cbda45863fce6fc3e4f86884be  libstdc++-v3/include/parallel/numericfwd.h
! b76219c953a871984becc58fc72a227d  libstdc++-v3/include/parallel/omp_loop.h
! beb9b8d0807b8b9b4e5d22f1ed37b9f1  libstdc++-v3/include/parallel/omp_loop_static.h
! 75e131ab77bb7457546c487a7b4c3ea9  libstdc++-v3/include/parallel/par_loop.h
! a2e2bdc641a4cc404775441cab20be9e  libstdc++-v3/include/parallel/parallel.h
! 2edb03f3bacf9a6a444f85c9a1f2f857  libstdc++-v3/include/parallel/partial_sum.h
! eb50c7357f318ae6b2ef35f76d31338f  libstdc++-v3/include/parallel/partition.h
! 7f0cd2f7f4a2ec04c006db71d95bdc2d  libstdc++-v3/include/parallel/queue.h
! d6ecb3817575b31277e60a9b09f190c0  libstdc++-v3/include/parallel/quicksort.h
! 3962f060aaf99bedc7332c42eca0b35e  libstdc++-v3/include/parallel/random_number.h
! 4c2540a250a6fdd52217e0a89806cf50  libstdc++-v3/include/parallel/random_shuffle.h
! 20768d5bd3fe5cf9c85519a9a1d172d9  libstdc++-v3/include/parallel/search.h
! 97d8db23dc0726d2993de138e5463f2d  libstdc++-v3/include/parallel/set_operations.h
! 6f5dc114d817afc7f593dd2ffd73e45a  libstdc++-v3/include/parallel/settings.h
! 4736a476375565d5d412bd522e55eb87  libstdc++-v3/include/parallel/sort.h
! 08a652c13997f2de74fb77d14cb95eaf  libstdc++-v3/include/parallel/tags.h
! c4847ae7dcf75ddc3fa8e63d998e7a7d  libstdc++-v3/include/parallel/types.h
! e1f1b62521806793f39154d9082e75ae  libstdc++-v3/include/parallel/unique_copy.h
! aa78740938f78cbc1045967be4339547  libstdc++-v3/include/parallel/workstealing.h
! 64eccffef096910c31af41dcfc1ea3ea  libstdc++-v3/include/precompiled/expc++.h
! 435fde4c54b45f194328ba4baa6e837d  libstdc++-v3/include/precompiled/extc++.h
! db653d00645b4759cbfd006a22af9ea4  libstdc++-v3/include/precompiled/stdc++.h
! d7d78e96c21dcb68c43aa67a3f22a474  libstdc++-v3/include/precompiled/stdtr1c++.h
! c16fe92ec152b704fbc1588c99ae8b31  libstdc++-v3/include/profile/array
! a7d7a6e26d935fb22a047abbcf26145f  libstdc++-v3/include/profile/base.h
! 86947e65447be84a9ea7f7551a0fb3fc  libstdc++-v3/include/profile/bitset
! 4f5d62b4b2ebd14da6e0f6e9c8146510  libstdc++-v3/include/profile/deque
! 4de27b6d5ce9df40b115daec9cc0b484  libstdc++-v3/include/profile/forward_list
! 4f00d2961ce296de2bd0758ff9f749fe  libstdc++-v3/include/profile/impl/profiler.h
! 2360fa0b9760589eeb573fcd8a745ac2  libstdc++-v3/include/profile/impl/profiler_algos.h
! d3bd60438da3fced3d4cfe232c5128f8  libstdc++-v3/include/profile/impl/profiler_container_size.h
! f2528a35ab5db135adfe9e51812419a0  libstdc++-v3/include/profile/impl/profiler_hash_func.h
! a8851bd259522eb5bb403c721e933ffe  libstdc++-v3/include/profile/impl/profiler_hashtable_size.h
! 4773184846daf31568ffc1d07589b54d  libstdc++-v3/include/profile/impl/profiler_list_to_slist.h
! 25eed2145a8850b1192eac5480be540a  libstdc++-v3/include/profile/impl/profiler_list_to_vector.h
! 8eac0b7775e955e3df8d7324667c91fb  libstdc++-v3/include/profile/impl/profiler_map_to_unordered_map.h
! 326051cb08d5c507f495a0de9c0fa37f  libstdc++-v3/include/profile/impl/profiler_node.h
! 9abcdfcb87f6cee1d876bc0470cbd0a5  libstdc++-v3/include/profile/impl/profiler_state.h
! 683ae1386d3b3e5c66c4579ea5020d9f  libstdc++-v3/include/profile/impl/profiler_trace.h
! b42dc9b27181b13346271e8d195f77dc  libstdc++-v3/include/profile/impl/profiler_vector_size.h
! 21ec60948dc47ae9a545baee547dd920  libstdc++-v3/include/profile/impl/profiler_vector_to_list.h
! 324e45cc9d898c1fa6d153bfc521afa8  libstdc++-v3/include/profile/iterator_tracker.h
! 1a630d079eebdebe929ac2a976107ada  libstdc++-v3/include/profile/list
! 2cb8ed6f2524d220d87d15585c3dd8c7  libstdc++-v3/include/profile/map
! ee4a3dd17f8235cfc6c1842548c1ccf3  libstdc++-v3/include/profile/map.h
! 1127d14c19e45ac5e2a2a9c506a1746c  libstdc++-v3/include/profile/multimap.h
! 1c3d6853a1f4579c9f75220721a3e014  libstdc++-v3/include/profile/multiset.h
! 8c0e4ac24faac81a4110cae9d7e02f77  libstdc++-v3/include/profile/ordered_base.h
! 0160fecf1b7b4ed62962246ccafa32c0  libstdc++-v3/include/profile/set
! 7150d2eb902b91db2852110fa12ca8f4  libstdc++-v3/include/profile/set.h
! 3045da5e29ddf0968cdca537b6001307  libstdc++-v3/include/profile/unordered_base.h
! ee69eb8f56fe19bafb340403c14cad0d  libstdc++-v3/include/profile/unordered_map
! f8bcc5741ac9a1b2aa7235833330596f  libstdc++-v3/include/profile/unordered_set
! c671d4e818721717d360a33348a156d9  libstdc++-v3/include/profile/vector
! b7ce8ff19118e4439858424fc3f511c9  libstdc++-v3/include/std/algorithm
! b0fc006535604478a847effde8829616  libstdc++-v3/include/std/any
! 94c58e3f2ae6f4e6e64f764f1634080e  libstdc++-v3/include/std/array
! 367f35f83cb8377555ffdde1a1ba14a4  libstdc++-v3/include/std/atomic
! 2d2c76909d20cdf1de724b00a22f8cbb  libstdc++-v3/include/std/bitset
! 5881ede571a0e28c98b30a68eebc128c  libstdc++-v3/include/std/charconv
! f333abb52d836071bfc25c49f026993f  libstdc++-v3/include/std/chrono
! f3bbe8c1d678b8e6ab0e8a5dfa847e27  libstdc++-v3/include/std/codecvt
! 6a1988175b471a18a2f395c20abfb9dc  libstdc++-v3/include/std/complex
! 2d60f422ec108008f5d9cd6eba752cf9  libstdc++-v3/include/std/condition_variable
! c6cf9176df4d0fc551e38fdde45add23  libstdc++-v3/include/std/deque
! a6e64d6a8d4c4bd7d2a11bd4c8e6945d  libstdc++-v3/include/std/filesystem
! 309d959bf67bd94b60e70689b6a97d62  libstdc++-v3/include/std/forward_list
! 0efbca455012b23f9434e91c5f87c697  libstdc++-v3/include/std/fstream
! 9e0b483d773e79af5517f53e0290f198  libstdc++-v3/include/std/functional
! 01b36919c34b738242b71c0b27274ce9  libstdc++-v3/include/std/future
! ac22c64b4381d5a98e8883868e4c495f  libstdc++-v3/include/std/iomanip
! e4f4320a78f04f2113db7b50e40b8e3f  libstdc++-v3/include/std/ios
! 3f1b218893f65a6e5af1029728011793  libstdc++-v3/include/std/iosfwd
! 802a7bf42d1becd87546d20576d75abf  libstdc++-v3/include/std/iostream
! fde02a46310c28980b4f767e3fcb7892  libstdc++-v3/include/std/istream
! 971d6781b3edebf2fc7d6644908ab973  libstdc++-v3/include/std/iterator
! 7fe80593a601516cefdaac925e7cce90  libstdc++-v3/include/std/limits
! c54b6f99d78f4a294599e2934c85105c  libstdc++-v3/include/std/list
! 543aff498aa60cc161f0abe808c830bf  libstdc++-v3/include/std/locale
! df98684350120e7dc5f4fc26aa2d4336  libstdc++-v3/include/std/map
! 5f8c74a78988a14e1e9bd2383f64b266  libstdc++-v3/include/std/memory
! 47bc968221d76ad5996568fb865cacb4  libstdc++-v3/include/std/mutex
! 6e94db557f82107cbb74f1ca12998f44  libstdc++-v3/include/std/numeric
! 01332e90f476f4502a8082dee5805ca5  libstdc++-v3/include/std/optional
! 353b0091928699d6d4fb7de2174affac  libstdc++-v3/include/std/ostream
! 5c07c809e30daa621aad47af606418d9  libstdc++-v3/include/std/queue
! 19877a6114456d0e963351ed8931e06b  libstdc++-v3/include/std/random
! 9ca4942b926d18243634c2f25fe9f6c6  libstdc++-v3/include/std/ratio
! 95906cedcec60f320d9a92196a51ac65  libstdc++-v3/include/std/regex
! f8bd2e2c950e7c933e2587c7c006252b  libstdc++-v3/include/std/scoped_allocator
! 47333a6419573bb767434583607625b3  libstdc++-v3/include/std/set
! 5202056b582f981445063cc604944b6a  libstdc++-v3/include/std/shared_mutex
! 37cb2669dffb3a027ba8502ac61854b7  libstdc++-v3/include/std/sstream
! b9935a46aa4583da51a4f50e4dd7805c  libstdc++-v3/include/std/stack
! d96fa911f19d5852fb38b678ed58952c  libstdc++-v3/include/std/stdexcept
! ce7673619056ee19a26971aa6dd8e612  libstdc++-v3/include/std/streambuf
! aa6141bd5d3ead2beff3d1bd42151f9d  libstdc++-v3/include/std/string
! 11e451c81f1c5abf924c36e926037edf  libstdc++-v3/include/std/string_view
! 25f1a2ea5a112e54baf0fca4c0586df4  libstdc++-v3/include/std/system_error
! c20b9780fb4646fe6ff5914298577148  libstdc++-v3/include/std/thread
! eb4742b9d7f8a67c927c000f4f08bdaf  libstdc++-v3/include/std/tuple
! 5b3d4f6df3d75b4dfdc5d66f8b42eb3d  libstdc++-v3/include/std/type_traits
! 575649d6d1cac2dd7972306d2502a5a9  libstdc++-v3/include/std/typeindex
! b7dfff7bcde643270c02b328f66afb20  libstdc++-v3/include/std/unordered_map
! fcd40d278ab3aab699a63ff199c72d7a  libstdc++-v3/include/std/unordered_set
! bbaaf703653bc7e93fe7aef346750b32  libstdc++-v3/include/std/utility
! 44f678755394b2ba7ea2edc8c4855a22  libstdc++-v3/include/std/valarray
! f5798b2f0f2f5387d061d596a2a03b1b  libstdc++-v3/include/std/variant
! 03eaa11fbda7bb8fd9885fa88a16fbe1  libstdc++-v3/include/std/vector
! 46a122be7109715c35fa8247ce567ea6  libstdc++-v3/include/tr1/array
! 63a659b3cb9e797beff37ab1cef1c1f8  libstdc++-v3/include/tr1/bessel_function.tcc
! b740729c2f87d0bd4dfc7a75a990d63d  libstdc++-v3/include/tr1/beta_function.tcc
! 4b6d1fa7b249678a4ec0573bc7ad7d8e  libstdc++-v3/include/tr1/ccomplex
! a97d2eaa0512b57e92f4bec0c7f71eba  libstdc++-v3/include/tr1/cctype
! d34d775db91f8f024a1a7db132c88d38  libstdc++-v3/include/tr1/cfenv
! 59d679435b524b27cf7053b151b4539f  libstdc++-v3/include/tr1/cfloat
! 6ad983e985caf2df82fb93d1dbe51d20  libstdc++-v3/include/tr1/cinttypes
! e8f9ca2afed2b303028787fa13a3abb3  libstdc++-v3/include/tr1/climits
! 55628b31b8283d316dabf5032686d7d4  libstdc++-v3/include/tr1/cmath
! 1773df79e1a40874eb3616655c590081  libstdc++-v3/include/tr1/complex
! 4c4aaf78fb1478ce39e9d2ad713fb08a  libstdc++-v3/include/tr1/complex.h
! 2289799160adfe58821500158fac20e7  libstdc++-v3/include/tr1/cstdarg
! 6aa4ed49a0114f4db23ecf59ebff5015  libstdc++-v3/include/tr1/cstdbool
! 56157e8c4c61839a3e54b4a602deab1d  libstdc++-v3/include/tr1/cstdint
! 2b79da23000eee99734dceba0859af71  libstdc++-v3/include/tr1/cstdio
! 095bcf7e26db319486bd48a3b9959238  libstdc++-v3/include/tr1/cstdlib
! 71278d7e84f0da59acd3943b7c6c26f3  libstdc++-v3/include/tr1/ctgmath
! 525d50974570e0aaffcffd3e7aab3cd3  libstdc++-v3/include/tr1/ctime
! 09b6464900d04d425c442ec52980d8cc  libstdc++-v3/include/tr1/ctype.h
! 8104c833938fd59d3901f32059182d15  libstdc++-v3/include/tr1/cwchar
! 92ad07bf0ef0315f0edd1b5115e45c2f  libstdc++-v3/include/tr1/cwctype
! a42c45ce36b9e2c388310311d8267bc2  libstdc++-v3/include/tr1/ell_integral.tcc
! de50e6d923d18d4987d09126433eecb7  libstdc++-v3/include/tr1/exp_integral.tcc
! 045c024130f637d933d68cf73f15e8d8  libstdc++-v3/include/tr1/fenv.h
! bfcbb452405644a5badd2cc9d0072ab7  libstdc++-v3/include/tr1/float.h
! 5dd3125cef5666219b1e00faf5a997c3  libstdc++-v3/include/tr1/functional
! f30a8a660ce539a77c22901fd1df624f  libstdc++-v3/include/tr1/functional_hash.h
! 39d1138c172a05c607fe97a9422d51c9  libstdc++-v3/include/tr1/gamma.tcc
! a76938ce06f514b4fd20d70d2747cfc2  libstdc++-v3/include/tr1/hashtable.h
! 84328aff05e0fcb13b006df85bc084eb  libstdc++-v3/include/tr1/hashtable_policy.h
! 7502a788d824930cf70a4db4f4ea2ac7  libstdc++-v3/include/tr1/hypergeometric.tcc
! 7a378d524a522c5904768c5e9d9733e7  libstdc++-v3/include/tr1/inttypes.h
! f4aa58dd63e1b39020066ac9d9564746  libstdc++-v3/include/tr1/legendre_function.tcc
! 1b4e8fc9623fc762ff39f8a6dda3a17f  libstdc++-v3/include/tr1/limits.h
! c3baab865e54cca5234b1bec1cd2a5cb  libstdc++-v3/include/tr1/math.h
! ec1d4210d2195c7766f27ed01eb57b8e  libstdc++-v3/include/tr1/memory
! dc096a90a0e553f8219aa9f5952a3569  libstdc++-v3/include/tr1/modified_bessel_func.tcc
! d635395018a7276894501527e7e5c153  libstdc++-v3/include/tr1/poly_hermite.tcc
! 7e2c887dde99b8584ae42fa6090470d5  libstdc++-v3/include/tr1/poly_laguerre.tcc
! f67323ba0122c455306a306ceb82e1d9  libstdc++-v3/include/tr1/random
! e253d82206b54bdbbeca8960fb55b872  libstdc++-v3/include/tr1/random.h
! 3a539d0628d3b4cc66232721cca6c7eb  libstdc++-v3/include/tr1/random.tcc
! 805cad9bf9cf5dd023aa1cffeb8ed02a  libstdc++-v3/include/tr1/regex
! 99524d9f02d8ff45da3ea701e116e1bf  libstdc++-v3/include/tr1/riemann_zeta.tcc
! 803cda1b0d7944844766362df975d0a4  libstdc++-v3/include/tr1/shared_ptr.h
! 9864f7a4caf9db40e628565664462a38  libstdc++-v3/include/tr1/special_function_util.h
! aadea4e15e5b46de0052e4c929066597  libstdc++-v3/include/tr1/stdarg.h
! 1fddd297fa9b193ce759f6dc4caf512c  libstdc++-v3/include/tr1/stdbool.h
! 5a36627461dfb84cb40c482bc54fc6da  libstdc++-v3/include/tr1/stdint.h
! 971b0efe6aa29c8540f5a872b92adf2f  libstdc++-v3/include/tr1/stdio.h
! 08f4fbb0db9011e2c42e8fc8a1a31275  libstdc++-v3/include/tr1/stdlib.h
! 3000ef629a532608e1fd73b695326807  libstdc++-v3/include/tr1/tgmath.h
! 7a30b3b8c50d34b773c0972fe50373b1  libstdc++-v3/include/tr1/tuple
! 210c725f049ae1ac36080e058432704c  libstdc++-v3/include/tr1/type_traits
! 356353e67ceaeea5ad0bb37764159903  libstdc++-v3/include/tr1/unordered_map
! 3ec89e9f7ce5cdc9b3cce779fb9889f2  libstdc++-v3/include/tr1/unordered_map.h
! 72cfd1971b80f7b00a0e7fdbfe5a95a4  libstdc++-v3/include/tr1/unordered_set
! 2dadf52e32e5a7875a87cffc0473114d  libstdc++-v3/include/tr1/unordered_set.h
! 3d9a94882f1b05b7d185184cc3146ab6  libstdc++-v3/include/tr1/utility
! 8fbab56f25cbe75d04b87bf39b09cc2a  libstdc++-v3/include/tr1/wchar.h
! c1a9fea5cddca696a0f9a6b46d2b63bd  libstdc++-v3/include/tr1/wctype.h
! c711079dbdf3fbc37ec013da1d73ea3f  libstdc++-v3/include/tr2/bool_set
! 17673c46d7c0b0a06c22ac1812c0ff4b  libstdc++-v3/include/tr2/bool_set.tcc
! 62313536dfb939e5be3238c2bc9773de  libstdc++-v3/include/tr2/dynamic_bitset
! 8436d63d88c46f8ecd693850aa58646c  libstdc++-v3/include/tr2/dynamic_bitset.tcc
! c15ef53984b01a6fa752f8244f33bbc0  libstdc++-v3/include/tr2/ratio
! 2cb08e2a102d6fb867e5b016e26168ef  libstdc++-v3/include/tr2/type_traits
! 35723d649e2938008f801ff0c392a967  libstdc++-v3/libsupc++/Makefile.am
! 4bc24ec516b7a02cdc96cb39864c3b55  libstdc++-v3/libsupc++/Makefile.in
! 631f21736305bc4ae54ef33e0ce49835  libstdc++-v3/libsupc++/array_type_info.cc
! 688eaa2b5aef0e352ad3f28c00a12468  libstdc++-v3/libsupc++/atexit_arm.cc
! a00f3abb4b3304aff4800cb0435a33c0  libstdc++-v3/libsupc++/atexit_thread.cc
! 8f26cd90fcfb9a94450604e990b80742  libstdc++-v3/libsupc++/atomic_lockfree_defines.h
! a0f90044fdf7e6011c6eb7927f28221a  libstdc++-v3/libsupc++/bad_alloc.cc
! 3bae26ff1c308618909ede8a1716b1b1  libstdc++-v3/libsupc++/bad_array_length.cc
! 25885e10168b36214de4f11e319ec86e  libstdc++-v3/libsupc++/bad_array_new.cc
! 2bd523a39c0264e62dad84c7e1d0d2a5  libstdc++-v3/libsupc++/bad_cast.cc
! cf5f64d5397e30f49c5789cbfd7c8688  libstdc++-v3/libsupc++/bad_typeid.cc
! 6e24c5cf0922dca2e84819b1c5131cf0  libstdc++-v3/libsupc++/class_type_info.cc
! 5b9c0e54d648d34402fb923663ecf789  libstdc++-v3/libsupc++/cxxabi.h
! 89c79c1be5d0424e33e3f1fa775eeaed  libstdc++-v3/libsupc++/cxxabi_forced.h
! ee0c3a579e1fc965c98d2a6d4d5a803d  libstdc++-v3/libsupc++/cxxabi_init_exception.h
! eed5419771d32658a76afe8eec054108  libstdc++-v3/libsupc++/del_op.cc
! 2c69db3ad7ecdbfc7602568681251e1c  libstdc++-v3/libsupc++/del_opa.cc
! a9ceb39eeb2babfa39819d603bcff5ce  libstdc++-v3/libsupc++/del_opant.cc
! be4d4b3825b66c7fcc1f2780ee4d486c  libstdc++-v3/libsupc++/del_opnt.cc
! c75dde50f6aa3a6fb61234448d407123  libstdc++-v3/libsupc++/del_ops.cc
! 155cee8e0fef41a677b621cbd89cbf3c  libstdc++-v3/libsupc++/del_opsa.cc
! 0b709374aa6d5639033555f587f8705b  libstdc++-v3/libsupc++/del_opv.cc
! 744955284cc1628255e78dbe3703d910  libstdc++-v3/libsupc++/del_opva.cc
! b4f2b8743ffc73d5752a1af9ab8c20a3  libstdc++-v3/libsupc++/del_opvant.cc
! 81a35cf2ef000544c8285c891aaad5e1  libstdc++-v3/libsupc++/del_opvnt.cc
! 1abb4010edd406a0a297d3360a008a8b  libstdc++-v3/libsupc++/del_opvs.cc
! f5ecdffd0f37bde46584b499d9114971  libstdc++-v3/libsupc++/del_opvsa.cc
! 0c38677904eafd8d00ce189f7f605552  libstdc++-v3/libsupc++/dyncast.cc
! f11b73b72b8881e47b0eb6ec5658a24f  libstdc++-v3/libsupc++/eh_alloc.cc
! 2b20a04857ae578f53f25bf614aabb22  libstdc++-v3/libsupc++/eh_arm.cc
! caaf83ae4700b2886e4a79c2ab8b8543  libstdc++-v3/libsupc++/eh_atomics.h
! f4c96a9e8b06fb821f5362f12689bbd5  libstdc++-v3/libsupc++/eh_aux_runtime.cc
! 35bb9406600d04b00b520f443b7f7edc  libstdc++-v3/libsupc++/eh_call.cc
! 570c07054f3fdd6c7ab84d92adea66db  libstdc++-v3/libsupc++/eh_catch.cc
! c5b015e41635ec503e334c2ed04c9074  libstdc++-v3/libsupc++/eh_exception.cc
! 38b7e879578cae51af20890bb6137536  libstdc++-v3/libsupc++/eh_globals.cc
! 9b3871329a43bcdbc87cced122de131a  libstdc++-v3/libsupc++/eh_personality.cc
! cc93c235787641e1c328ce721edc7ae4  libstdc++-v3/libsupc++/eh_ptr.cc
! fae388b47e71017b41b57499f2c6b1e8  libstdc++-v3/libsupc++/eh_term_handler.cc
! 49519ccb22c6a0562bf14280e65dafb2  libstdc++-v3/libsupc++/eh_terminate.cc
! c74859bb4629b16ecbd20e6723566bf0  libstdc++-v3/libsupc++/eh_throw.cc
! f8b4475f27d2a49f23ca2915db2aa1a2  libstdc++-v3/libsupc++/eh_tm.cc
! c7cf8027d4c2462452b21c7637b63208  libstdc++-v3/libsupc++/eh_type.cc
! 7b56e34582ba823c33a7c442878a47c3  libstdc++-v3/libsupc++/eh_unex_handler.cc
! 427b1d41bbac3a6682f9efe261dbe2c2  libstdc++-v3/libsupc++/enum_type_info.cc
! 7ade5a8c17b101bef641ffcf11fccacf  libstdc++-v3/libsupc++/exception
! 34861721c4e6489755e5972a55794d34  libstdc++-v3/libsupc++/exception.h
! c2de4a15fee39a464b4195a4d743df96  libstdc++-v3/libsupc++/exception_defines.h
! 794e33192f2cbe505bf8deed9d13fe8a  libstdc++-v3/libsupc++/exception_ptr.h
! 33b9711053b5013082dcd01ff6886553  libstdc++-v3/libsupc++/function_type_info.cc
! 15da917c7e92611ca228f73691b30d73  libstdc++-v3/libsupc++/fundamental_type_info.cc
! e8b4a9f0184d46c812afe3d4438008ed  libstdc++-v3/libsupc++/guard.cc
! c96d8729200a8bf030a734e9e9ed0ead  libstdc++-v3/libsupc++/guard_error.cc
! 111e07c0b209346cbc5004483c2152b2  libstdc++-v3/libsupc++/hash_bytes.cc
! 18b00c9d367c5f25dd72f0af8dc43339  libstdc++-v3/libsupc++/hash_bytes.h
! 74d6ff3721b8e641a241c5f5cdd38c1a  libstdc++-v3/libsupc++/initializer_list
! 11da6d9eb3e8eec38c2e995a3a8c6329  libstdc++-v3/libsupc++/nested_exception.cc
! ceff39d5a5a0e636f3769816d9de7d97  libstdc++-v3/libsupc++/nested_exception.h
! da8ecc0aad6bb85c8749a418747d4f25  libstdc++-v3/libsupc++/new
! b929c7855e2a39856dc6bc912f5757c9  libstdc++-v3/libsupc++/new_handler.cc
! 9a8b6e3bde9862a50e22f3e17e18057e  libstdc++-v3/libsupc++/new_op.cc
! d6901a68e6b26de743d0356c07fd8000  libstdc++-v3/libsupc++/new_opa.cc
! ff0051268537a430520f52ce98b01451  libstdc++-v3/libsupc++/new_opant.cc
! 61c65763931abb56e989c083c9552591  libstdc++-v3/libsupc++/new_opnt.cc
! 896cf33a18cdcc1f27cf70cd8a10e8a3  libstdc++-v3/libsupc++/new_opv.cc
! fc4c3920f9443da83a70c51ebf8aa14f  libstdc++-v3/libsupc++/new_opva.cc
! 6b8bb50912252035d74fc138cd56ea78  libstdc++-v3/libsupc++/new_opvant.cc
! 35c04fb222d849022bab9a65f168db50  libstdc++-v3/libsupc++/new_opvnt.cc
! ea177cd9b25f8957e9428c10b9da448d  libstdc++-v3/libsupc++/pbase_type_info.cc
! 6e3bcad24405543093a5bb9c55dce79b  libstdc++-v3/libsupc++/pmem_type_info.cc
! 6946d51ea0c0d08937ef73cf3046e7de  libstdc++-v3/libsupc++/pointer_type_info.cc
! 57f921f31ddc8befa1277d6b4f8a0cc8  libstdc++-v3/libsupc++/pure.cc
! dc7e0a5e96ae32977d9e0cbb0e7ee09a  libstdc++-v3/libsupc++/si_class_type_info.cc
! 3b4b77891d7e1684cba20294a447c855  libstdc++-v3/libsupc++/tinfo.cc
! b41b1976c56c23fa8e35664bc4adacf2  libstdc++-v3/libsupc++/tinfo.h
! 9fc1a6dee67d818952f50fc548927e73  libstdc++-v3/libsupc++/tinfo2.cc
! c1b02b2cf197d2e7822c8e1440fc07f4  libstdc++-v3/libsupc++/typeinfo
! 1af5d58fcc0941d1391e973667ffcc00  libstdc++-v3/libsupc++/unwind-cxx.h
! b767ca21604431bdeb9f4a8a0874b380  libstdc++-v3/libsupc++/vec.cc
! 4bae3dabbcd2b3010b110c07fa5c402b  libstdc++-v3/libsupc++/vmi_class_type_info.cc
! 00d6e426738d676019aa257c00ae0dc4  libstdc++-v3/libsupc++/vterminate.cc
! e20ecaecb4cdf35f272eb9bf14e2ee4d  libstdc++-v3/libsupc++/vtv_stubs.cc
  6e1809e9ac8f237378ab1ebc1b99fb6a  libstdc++-v3/linkage.m4
! 84db6d4c2c607fc0a4ecffdf29fe3244  libstdc++-v3/po/Makefile.am
! 69d23076b3ef37404d682b622b0fe049  libstdc++-v3/po/Makefile.in
! 1a96a7fbff96968443fda669ce95ff1f  libstdc++-v3/po/POTFILES.in
! fa9de930263a3a95827ef51abac81302  libstdc++-v3/po/de.po
! 5f4aac1893406c9cd07f2e72300c0fe2  libstdc++-v3/po/fr.po
! dc2f2463bb52c0e7ff931af1f4312ac1  libstdc++-v3/po/libstdc++.pot
! 85017a56b34879df688618b79df6e396  libstdc++-v3/po/string_literals.cc
! db33018f9a0c153cdacbad74d90cd744  libstdc++-v3/python/Makefile.am
! 97daaf288d7206432fe42cf501f297b9  libstdc++-v3/python/Makefile.in
! b42ce5546cb46bbbd486454dc2b29343  libstdc++-v3/python/hook.in
  68b329da9893e34099c7d8ad5cb9c940  libstdc++-v3/python/libstdcxx/__init__.py
! 016d8953f53a812b7ce03d94d76fb15d  libstdc++-v3/python/libstdcxx/v6/__init__.py
! e0eaa90db7952e62016ed584a528471e  libstdc++-v3/python/libstdcxx/v6/printers.py
! 415ba9594feeee0d643a6d665fdb61d8  libstdc++-v3/python/libstdcxx/v6/xmethods.py
  b1441422cec6381d9285b7681b666124  libstdc++-v3/scripts/check_compile
  533e594add6e79910b0e557ba690fac6  libstdc++-v3/scripts/check_performance
  f480e111db2d50194a3e1f7014c9f422  libstdc++-v3/scripts/create_testsuite_files
! f38e41ef627947efcc5b33941f92b626  libstdc++-v3/scripts/extract_symvers.in
! 6b8f00de7fcd859a97725d96b419fdaa  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
  12339b6ead78d7ddd0044dfd0f9f4f92  libstdc++-v3/scripts/make_exports.pl
  80b6ff44b325c6b6d113435d8eea4b76  libstdc++-v3/scripts/make_graph.py
! 3564a0b925e650a7d2cc2ec7f2e7379f  libstdc++-v3/scripts/run_doxygen
  7579350b0ac0412cb42e9c354485ebd9  libstdc++-v3/scripts/testsuite_flags.in
! 419845487b408bcd0d6ca0fe211976b7  libstdc++-v3/src/Makefile.am
! ec24c6a9fddf30e4c267e32d40f70226  libstdc++-v3/src/Makefile.in
! b126c7ff261f4aba9341c48f67a51ffd  libstdc++-v3/src/c++11/Makefile.am
! 3037cac2cfd247a2cbee6d0c656b6e4c  libstdc++-v3/src/c++11/Makefile.in
! 8112dfc874427401d41b79800ca28310  libstdc++-v3/src/c++11/chrono.cc
! ee95e237ff8f15499863d2c0d9ffcefc  libstdc++-v3/src/c++11/codecvt.cc
! d0837fc9a3d11fc292e0f58c3afa791b  libstdc++-v3/src/c++11/compatibility-atomic-c++0x.cc
! a0c4efbcfdbc49f6cbcfd8e9a8cdcaf2  libstdc++-v3/src/c++11/compatibility-c++0x.cc
! 612818152d208279c82d410247db234c  libstdc++-v3/src/c++11/compatibility-chrono.cc
! 1cfafad51f03c68d162b538e2768c1a1  libstdc++-v3/src/c++11/compatibility-condvar.cc
! 1211e52e2366086e76c8bed74a82ca01  libstdc++-v3/src/c++11/compatibility-thread-c++0x.cc
! 318c223b9c372fb0ece90bf51b85aa51  libstdc++-v3/src/c++11/condition_variable.cc
! 5c1195afa2b5c4cb4d6c10c24b1d89f9  libstdc++-v3/src/c++11/cow-fstream-inst.cc
! 7df598646870a5ecc887efc23c9722c3  libstdc++-v3/src/c++11/cow-locale_init.cc
! 28afe6040e4e515ac65c47fa19a1067a  libstdc++-v3/src/c++11/cow-shim_facets.cc
! 758035d1f1c06a2cafe82da81b2ef6ec  libstdc++-v3/src/c++11/cow-sstream-inst.cc
! 72c232d83b138ac864903ba3ad4f97dd  libstdc++-v3/src/c++11/cow-stdexcept.cc
! bf6296b1ac7db2219adc77565aae1a44  libstdc++-v3/src/c++11/cow-string-inst.cc
! a3973199a342a3c112387bcf863a7632  libstdc++-v3/src/c++11/cow-string-io-inst.cc
! 5efb86e07185c74f4724eb72d86b1595  libstdc++-v3/src/c++11/cow-wstring-inst.cc
! e75011dd5e140b24dd778889c0073a0b  libstdc++-v3/src/c++11/cow-wstring-io-inst.cc
! b182c1f23cc99b7ad5846b2dffc0aefc  libstdc++-v3/src/c++11/ctype.cc
! 93f9a239d7066de7cd42996ab8579ff4  libstdc++-v3/src/c++11/cxx11-hash_tr1.cc
! f485827e0b2aac6e583e8e4710aeae8f  libstdc++-v3/src/c++11/cxx11-ios_failure.cc
! 2969cc7445b4420b780297922b0ddfb1  libstdc++-v3/src/c++11/cxx11-locale-inst.cc
! 0ba4a3e47dcc2893c50b8ef868628346  libstdc++-v3/src/c++11/cxx11-shim_facets.cc
! 48fdb74e86386fc285bb6bd0736a40da  libstdc++-v3/src/c++11/cxx11-stdexcept.cc
! 333e059cdbb72c6259fd43e27c2da0dc  libstdc++-v3/src/c++11/cxx11-wlocale-inst.cc
! 8b18b9f153f395ca650725667a37e120  libstdc++-v3/src/c++11/debug.cc
! bb673a998cc7ac1a4d16f92d8a835cf8  libstdc++-v3/src/c++11/ext11-inst.cc
! ef680fad0016ed4af9a12f34a0693c39  libstdc++-v3/src/c++11/fstream-inst.cc
! cc384250d58870a95ef9b22013e99169  libstdc++-v3/src/c++11/functexcept.cc
! 732fbca3c591818705b64104a2532516  libstdc++-v3/src/c++11/functional.cc
! 300788dc06b0bc484aa17e9d18eb589b  libstdc++-v3/src/c++11/futex.cc
! 8983c621f2b8f70642c48a356c74e2ea  libstdc++-v3/src/c++11/future.cc
! 78a6f0d25940cd8503b0400ce7bf70b6  libstdc++-v3/src/c++11/hash_c++0x.cc
! 4ca2eeec2c0aadf342418c8fecc26a30  libstdc++-v3/src/c++11/hashtable_c++0x.cc
! 76a7c0d3e264bb6f4c0de55a1af7587c  libstdc++-v3/src/c++11/ios-inst.cc
! fd3b9fcebebfa9359b8ce216efbe3d28  libstdc++-v3/src/c++11/ios.cc
! ca07f16a4fcc95f6ad2557b416c81bb9  libstdc++-v3/src/c++11/iostream-inst.cc
! fe0788e94d9c161606aed135f0e0a518  libstdc++-v3/src/c++11/istream-inst.cc
! 7c7a5ba539be179d4bbf2020829dfea3  libstdc++-v3/src/c++11/limits.cc
! 80103df95f51ba3cdff5a31360f9365e  libstdc++-v3/src/c++11/locale-inst.cc
! 03a6caf5d4cc88e30d2532abf6952381  libstdc++-v3/src/c++11/mutex.cc
! 1fc3ca008140837a790efa6a4fa104e7  libstdc++-v3/src/c++11/mutex_pool.h
! 813ed6727f8cf4bb8d7f2513af6a2553  libstdc++-v3/src/c++11/ostream-inst.cc
! 226da1cf0ee57773d0690605119a8469  libstdc++-v3/src/c++11/placeholders.cc
! 9a787027cd9fafc9a1bd79279345b490  libstdc++-v3/src/c++11/random.cc
! 04dcf2b5a06481d14b6d8940b94f8411  libstdc++-v3/src/c++11/regex.cc
! ef887cdfcc4bd973278d5a9fa1801f35  libstdc++-v3/src/c++11/shared_ptr.cc
! 9bd68c179554ea928c3df1579f9f8499  libstdc++-v3/src/c++11/snprintf_lite.cc
! cf11e50cc2ea4b91c16eaaceb08d0890  libstdc++-v3/src/c++11/sso_string.cc
! 52c33422dfb65497fd059364ca083c3a  libstdc++-v3/src/c++11/sstream-inst.cc
! f63670ea53d56627f4e63f5ba430a52d  libstdc++-v3/src/c++11/streambuf-inst.cc
! bb6614d4469aa23a6490ebf65aba8897  libstdc++-v3/src/c++11/string-inst.cc
! c6ecb548eb9548bbca645925e1c40ce3  libstdc++-v3/src/c++11/string-io-inst.cc
! 68e2f85efc018c1784d1712fff103a12  libstdc++-v3/src/c++11/system_error.cc
! 3251407d3ed6f92221d1c3dbc6e2d964  libstdc++-v3/src/c++11/thread.cc
! 4587c2b594addc57375201e4e2840954  libstdc++-v3/src/c++11/wlocale-inst.cc
! 467cd61a70c7fa3add6dd732ea7337eb  libstdc++-v3/src/c++11/wstring-inst.cc
! 0043b48b6d4240791b6e5ea75f289cb7  libstdc++-v3/src/c++11/wstring-io-inst.cc
! 1d2f0306e22a3d0994a31f96a82a81b2  libstdc++-v3/src/c++98/Makefile.am
! d5bb909c195f394c648f3348ab48a65d  libstdc++-v3/src/c++98/Makefile.in
! 1af7d1431070d1191ba0c26958292bd0  libstdc++-v3/src/c++98/allocator-inst.cc
! 5fe119083458d53e6e7ca04fafae39b8  libstdc++-v3/src/c++98/bitmap_allocator.cc
! 9cac9377c40f34f7b6fe46eaaca4a8ff  libstdc++-v3/src/c++98/codecvt.cc
! 99cbc68ccaf67dce71d1a8e70af540ec  libstdc++-v3/src/c++98/compatibility-debug_list-2.cc
! 4b5c8ec03f19048d07f4eef87bb7924a  libstdc++-v3/src/c++98/compatibility-debug_list.cc
! 41edec17fb79b27ed0eb5748eae74f68  libstdc++-v3/src/c++98/compatibility-ldbl.cc
! 097a9773ce4971f76dba786565ee8d50  libstdc++-v3/src/c++98/compatibility.cc
! 6cba7870827a8c97ec92f98518057e6f  libstdc++-v3/src/c++98/complex_io.cc
! ff06b72ac2d888bb376e6135f5882f80  libstdc++-v3/src/c++98/concept-inst.cc
! 13e9c357c708b9957fcb0543f576319c  libstdc++-v3/src/c++98/cow-istream-string.cc
! a7864dd63f7bfb4b3d028f72970f26ec  libstdc++-v3/src/c++98/ext-inst.cc
! d1cc6a7142fe66e268461175ec297aad  libstdc++-v3/src/c++98/globals_io.cc
! 89b68d67c39c1e9ee3d4a0e8a8f81b86  libstdc++-v3/src/c++98/hash-long-double-tr1-aux.cc
! 5a5622182882370708179eefefb317ca  libstdc++-v3/src/c++98/hash_tr1.cc
! 0e65e446d6d4b4795991b2d336c8163a  libstdc++-v3/src/c++98/hashtable_tr1.cc
! 0e5a3feb3ef1e6ca630663730e5dca62  libstdc++-v3/src/c++98/ios_failure.cc
! dbb8bc05a5687dbcc45f8c395a807cfa  libstdc++-v3/src/c++98/ios_init.cc
! b72b9b8a7a0463bfbbc8306164f79088  libstdc++-v3/src/c++98/ios_locale.cc
! 6e89e099a8ffeb6eab7614c8b3c17cc7  libstdc++-v3/src/c++98/istream-string.cc
! 77ca54eff27a8ba463589e224c2bccde  libstdc++-v3/src/c++98/istream.cc
! 33d414bf5b0fc75cbf8acd2eb69c2359  libstdc++-v3/src/c++98/list-aux-2.cc
! 0e994ddaa5a56f04e18aa732eb29ed60  libstdc++-v3/src/c++98/list-aux.cc
! 7117b22ecf222ab01c887e081df97149  libstdc++-v3/src/c++98/list.cc
! cd207df6b3d9119d15141821428b8880  libstdc++-v3/src/c++98/list_associated-2.cc
! a73d3f645f57edd4eb3f65b4bf81ce83  libstdc++-v3/src/c++98/list_associated.cc
! fe2779d51dc3f5946c0fd6e6161c052d  libstdc++-v3/src/c++98/locale.cc
! 8245e7b134954624f2d08a252b401a62  libstdc++-v3/src/c++98/locale_facets.cc
! 41ef48fbe68d90a9bd34be86c5aa540f  libstdc++-v3/src/c++98/locale_init.cc
! 66505fa4b47baf73218e00ee1664d7e8  libstdc++-v3/src/c++98/localename.cc
! e8752c5b5eb8f73b5fa3edc854be6af5  libstdc++-v3/src/c++98/math_stubs_float.cc
! e39b0e232c9f087d063de8b5fded3928  libstdc++-v3/src/c++98/math_stubs_long_double.cc
! 1b111007c4048f183a3739807742d9d4  libstdc++-v3/src/c++98/misc-inst.cc
! 8937bde019b225a917d95794b9b1e02b  libstdc++-v3/src/c++98/mt_allocator.cc
! 1eac543abb96e321869bd2c296f6acaa  libstdc++-v3/src/c++98/parallel_settings.cc
! ac6eca7e431021eb1c3fce78a4c60f49  libstdc++-v3/src/c++98/pool_allocator.cc
! 406d38373be42bd500cde9f17b0be88c  libstdc++-v3/src/c++98/stdexcept.cc
! eea5fd36e43cb312dbfe5794f87127ee  libstdc++-v3/src/c++98/streambuf.cc
! 7ac06f2162a7bfd2d12cab1c72610289  libstdc++-v3/src/c++98/strstream.cc
! cb756de7d9060d64e44b929f62034fc2  libstdc++-v3/src/c++98/tree.cc
! 7c64ecadd9161b822f13fae2d5fac83e  libstdc++-v3/src/c++98/valarray.cc
! e2ff5e34304224a747e3d1204249289a  libstdc++-v3/src/filesystem/Makefile.am
! 491ffb297c12cd9e24b7a455e1085482  libstdc++-v3/src/filesystem/Makefile.in
! b26f36b095ce739a3477f3a0d9344cb5  libstdc++-v3/src/filesystem/cow-dir.cc
! ee1a255b00a8af7777d83264abb18c3a  libstdc++-v3/src/filesystem/cow-ops.cc
! 93702fda212378b01a6e67f4ce5afbde  libstdc++-v3/src/filesystem/cow-path.cc
! fb2efeb60fd8c764483e34d6c089ccc2  libstdc++-v3/src/filesystem/cow-std-dir.cc
! 24939d6b9b46c6886fdff3896ded6268  libstdc++-v3/src/filesystem/cow-std-ops.cc
! 30373fbc8bce18c2e7a9df73a784a6c8  libstdc++-v3/src/filesystem/cow-std-path.cc
! b74d6594f0374085c9300b092775aeb1  libstdc++-v3/src/filesystem/dir-common.h
! 7d47eafed9b0df004eb5196272d725ce  libstdc++-v3/src/filesystem/dir.cc
! 767020a0dd8a279cae757fdccf19282d  libstdc++-v3/src/filesystem/ops-common.h
! 97f388783aedb742f0d294a02a2121f1  libstdc++-v3/src/filesystem/ops.cc
! a5fce3f1cff4ec046327a71aa4ef6a67  libstdc++-v3/src/filesystem/path.cc
! 9157503d4bc833a58de7ade9a0c4a95f  libstdc++-v3/src/filesystem/std-dir.cc
! cb03f45109affded26db17b263d2a57f  libstdc++-v3/src/filesystem/std-ops.cc
! e6ec7c3d450673d7bb170a43854a0788  libstdc++-v3/src/filesystem/std-path.cc
! 0601bf78d93bd1788214ede5de7c02ad  libstdc++-v3/src/shared/hashtable-aux.cc
! 3d8476b40375b3b047530c4521769b00  libstdc++-v3/testsuite/17_intro/freestanding.cc
! 4d2ce97c9adf17a612622ccde5efdd9c  libstdc++-v3/testsuite/17_intro/headers/c++1998/49745.cc
! 5f878405e2b72bce06d836daa5338b6e  libstdc++-v3/testsuite/17_intro/headers/c++1998/all.cc
! 08451c0377c4b105f01346448848cb6c  libstdc++-v3/testsuite/17_intro/headers/c++1998/all_attributes.cc
! 14f930e372b3df059174c376d56693f1  libstdc++-v3/testsuite/17_intro/headers/c++1998/all_c++200x_compatibility.cc
! 5bdab1b2d8e95da15fc5d5b2e044c44e  libstdc++-v3/testsuite/17_intro/headers/c++1998/all_no_exceptions.cc
! 7e9028cc334b76006e325cef9cee5cf4  libstdc++-v3/testsuite/17_intro/headers/c++1998/all_no_rtti.cc
! a61000f4b4c5ab9d0fc9ce260ec26f53  libstdc++-v3/testsuite/17_intro/headers/c++1998/all_pedantic_errors.cc
! 2e195546aba63a694615e7c40726c9fc  libstdc++-v3/testsuite/17_intro/headers/c++1998/complex.cc
! e846fcd22406b4cbe3e0a23dca71d64d  libstdc++-v3/testsuite/17_intro/headers/c++1998/operator_names.cc
! 7e062e4a73ceb0dd5d6baef146c66ff6  libstdc++-v3/testsuite/17_intro/headers/c++1998/stdc++.cc
! 848d85dd6cfcffd30cac3d7ff836a26e  libstdc++-v3/testsuite/17_intro/headers/c++1998/stdc++_assert_neg.cc
! a60ab4c600bb7260dc92c0cd083a9e22  libstdc++-v3/testsuite/17_intro/headers/c++1998/stdc++_multiple_inclusion.cc
! 42875d66bc13be08ec87174689a258b7  libstdc++-v3/testsuite/17_intro/headers/c++2011/42319.cc
! a1993168251e568adbb287592d4cf044  libstdc++-v3/testsuite/17_intro/headers/c++2011/67309.cc
! c0a745127768dc98e8caa9835a956e53  libstdc++-v3/testsuite/17_intro/headers/c++2011/all_attributes.cc
! 482fde27315c29193c00b68a240baefb  libstdc++-v3/testsuite/17_intro/headers/c++2011/all_no_exceptions.cc
! b293e96f6db5a3bd30b8ee6ca4b4c4d5  libstdc++-v3/testsuite/17_intro/headers/c++2011/all_no_rtti.cc
! d452cc80f222fb38e8b9c9d2e7cd6508  libstdc++-v3/testsuite/17_intro/headers/c++2011/all_pedantic_errors.cc
! cc67ba58cdcf2fa16c7fddc0e1845cc9  libstdc++-v3/testsuite/17_intro/headers/c++2011/linkage.cc
! 275ff7aad1136557074cda5d4ab0fe1b  libstdc++-v3/testsuite/17_intro/headers/c++2011/operator_names.cc
! 35fbffd0282e7ee73c0e800abd90585d  libstdc++-v3/testsuite/17_intro/headers/c++2011/stdc++.cc
! 473fc311bf68e0bbd687fe16040d25f4  libstdc++-v3/testsuite/17_intro/headers/c++2011/stdc++_multiple_inclusion.cc
! 5bcdeb5de58be09b3a0608edf76dd0c7  libstdc++-v3/testsuite/17_intro/headers/c++2014/all_attributes.cc
! 9a2eaf497fb0d002d1c29e7d88f6a572  libstdc++-v3/testsuite/17_intro/headers/c++2014/all_no_exceptions.cc
! 7db2170aaae5dfff77d1206c750f6f56  libstdc++-v3/testsuite/17_intro/headers/c++2014/all_no_rtti.cc
! 7c0c760bf7e2c7e94a9fefedf8d7f696  libstdc++-v3/testsuite/17_intro/headers/c++2014/all_pedantic_errors.cc
! 99c7bab5cf77f9d7d103460f12fbf954  libstdc++-v3/testsuite/17_intro/headers/c++2014/operator_names.cc
! 033f3e052d6bd92f3dc3281f0adca3d5  libstdc++-v3/testsuite/17_intro/headers/c++2014/stdc++.cc
! 3fbe5f48befda0a7ae41578ffb062112  libstdc++-v3/testsuite/17_intro/headers/c++2014/stdc++_multiple_inclusion.cc
! ca154df990b1f3a4735132aea2e95e7c  libstdc++-v3/testsuite/17_intro/names.cc
! 357540b6cc78c6c371c3e93cb428b27b  libstdc++-v3/testsuite/17_intro/shared_with_static_deps.cc
! 1e043a78bac9deb4ffe351f12b341c04  libstdc++-v3/testsuite/17_intro/static.cc
! 6c6837d18fc37f57bbc58b567dffa584  libstdc++-v3/testsuite/17_intro/tag_type_explicit_ctor.cc
! fa68920fbdbc5db01e9aad92559f70f3  libstdc++-v3/testsuite/17_intro/using_namespace_std.cc
! 7d3c14c3e18f6f1fb63219918baa8e80  libstdc++-v3/testsuite/17_intro/using_namespace_std_exp_neg.cc
! cdc28410e5294149a309fff57df35e17  libstdc++-v3/testsuite/17_intro/using_namespace_std_tr1_neg.cc
! cd369277a10b3b5d7f91c6e97f9e2416  libstdc++-v3/testsuite/18_support/50594.cc
! f43b1286355794fbc19db326c21cdf0f  libstdc++-v3/testsuite/18_support/aligned_alloc/aligned_alloc.cc
! bc370f76a2ea2999ef7d12d8fc757cd4  libstdc++-v3/testsuite/18_support/bad_alloc/cons_virtual_derivation.cc
! 7d2d56171f5077d1428d6f9a39bc63bc  libstdc++-v3/testsuite/18_support/bad_alloc/what.cc
! f67f153608642d19e3ac10077b6adcfb  libstdc++-v3/testsuite/18_support/bad_cast/cons_virtual_derivation.cc
! d1eed495fe7f19b9ff96fbc9f1dc6ef4  libstdc++-v3/testsuite/18_support/bad_cast/what.cc
! 529768c6e0abb33443249605ebc2396d  libstdc++-v3/testsuite/18_support/bad_exception/23591_thread-1.c
! 4b433b7b35172571c5435dd817c19447  libstdc++-v3/testsuite/18_support/bad_exception/59392.cc
! 831061cde3419dc44120469cdc4846d8  libstdc++-v3/testsuite/18_support/bad_exception/cons_virtual_derivation.cc
! 822bd1833821f5d5a8a2672f27780450  libstdc++-v3/testsuite/18_support/bad_exception/what.cc
! f369dfd4c7828138f0170441da0959aa  libstdc++-v3/testsuite/18_support/bad_typeid/cons_virtual_derivation.cc
! 412f96436dd4f041a543da6c981b742b  libstdc++-v3/testsuite/18_support/bad_typeid/what.cc
! b5c5ed526162a298f8ae55a659cc0f6b  libstdc++-v3/testsuite/18_support/byte/81076.cc
! 5289cf87111586775d34c3499ef549e4  libstdc++-v3/testsuite/18_support/byte/global_neg.cc
! 4bfbfa79483507819466816b21460dba  libstdc++-v3/testsuite/18_support/byte/ops.cc
! 4735ce40e24610fc5d9aa69f4ad2a730  libstdc++-v3/testsuite/18_support/byte/requirements.cc
! 8208617d0829194adf85ec00f0e4179e  libstdc++-v3/testsuite/18_support/cxa_vec.cc
! a0d52163abbd28a0e15bf2c0fc1382a8  libstdc++-v3/testsuite/18_support/exception/38732.cc
! 0ae218953ed4d5c54381b31fd5d30fc2  libstdc++-v3/testsuite/18_support/exception/what.cc
! 9c7e9f36fd56306313e3fbc73ac58c0e  libstdc++-v3/testsuite/18_support/exception_ptr/40296.cc
! 2b121a3fc03ca44d4bbb019eadfaf982  libstdc++-v3/testsuite/18_support/exception_ptr/60612-terminate.cc
! dfbb6300528094451586df7f8485e251  libstdc++-v3/testsuite/18_support/exception_ptr/60612-unexpected.cc
! 3bcc21308631f7bbb4cf2bdf1d0dd2bd  libstdc++-v3/testsuite/18_support/exception_ptr/62258.cc
! 842a3e8df79fcca03a088b9c6e507fb9  libstdc++-v3/testsuite/18_support/exception_ptr/64241.cc
! 68306be600b9f7498d20c8daacd226b3  libstdc++-v3/testsuite/18_support/exception_ptr/current_exception.cc
! 2cfa57f3d6d58e877489622c79727d99  libstdc++-v3/testsuite/18_support/exception_ptr/lifespan.cc
! 41790d3a7a7c0c7f49a5bdbc506d3007  libstdc++-v3/testsuite/18_support/exception_ptr/make_exception_ptr.cc
! b67b2a87e365d02d50d8c7b98c922e58  libstdc++-v3/testsuite/18_support/exception_ptr/make_exception_ptr_2.cc
! 3158e5d720eb6c610fdd771f2cef091b  libstdc++-v3/testsuite/18_support/exception_ptr/move.cc
! 50f4a69bced7243fca5fdc6beb6d2bc9  libstdc++-v3/testsuite/18_support/exception_ptr/requirements.cc
! 9ca16d917a983050da88a7e10cec109e  libstdc++-v3/testsuite/18_support/exception_ptr/requirements_neg.cc
! f3e7a13fb47c454e12556fca5a200a96  libstdc++-v3/testsuite/18_support/exception_ptr/rethrow_exception.cc
! f71c073470138f4b48126d074c8d0649  libstdc++-v3/testsuite/18_support/free_eh_pool.cc
! d45ec9e7691d98270f5246c74c0bcb65  libstdc++-v3/testsuite/18_support/headers/cfloat/values.cc
! 9e1d5a124cc852cab5308c9c2798fae1  libstdc++-v3/testsuite/18_support/headers/climits/values.cc
! b25ba947e502271799ddc768a83b99a6  libstdc++-v3/testsuite/18_support/headers/csetjmp/functions_std.cc
! 7107b4c201c2d9a300bc9148744676fa  libstdc++-v3/testsuite/18_support/headers/csetjmp/macros.cc
! d337cb6afa71323832808061f26d0c7c  libstdc++-v3/testsuite/18_support/headers/csetjmp/types_std.cc
! 3476554bed626503c1792f870723d523  libstdc++-v3/testsuite/18_support/headers/csignal/functions_std.cc
! fe8163a84c4e8a0e0cbbc9ab848bf579  libstdc++-v3/testsuite/18_support/headers/csignal/macros.cc
! 33496db4ed5e2f2b8dcfd5fe19e618e7  libstdc++-v3/testsuite/18_support/headers/csignal/types_std.cc
! f38379f6f87cf6143edf720d0b30c43b  libstdc++-v3/testsuite/18_support/headers/cstdalign/std_c++0x_neg.cc
! 67bed86bfc679de3cb016fed5729bca3  libstdc++-v3/testsuite/18_support/headers/cstdarg/macros.cc
! 7e9cfef45d91e0a8c33914eaa5f74867  libstdc++-v3/testsuite/18_support/headers/cstdarg/types_std.cc
! 5694495a31551d13aff566f3a91e5398  libstdc++-v3/testsuite/18_support/headers/cstdbool/macros.cc
! 95cadb0f78f586b1b47c8687575bfd21  libstdc++-v3/testsuite/18_support/headers/cstdbool/std_c++0x_neg.cc
! ee795df2a90a0efd4fdb6af79d25894a  libstdc++-v3/testsuite/18_support/headers/cstddef/macros.cc
! 4d807f5711770ffb49601dcf8a75e7de  libstdc++-v3/testsuite/18_support/headers/cstddef/types_std.cc
! 7672df97a82122cae7fdad88d4be699d  libstdc++-v3/testsuite/18_support/headers/cstdint/std_c++0x_neg.cc
! b654b900eba9eb9383e49e5cdc5fde0a  libstdc++-v3/testsuite/18_support/headers/cstdint/types_std_c++0x.cc
! 0df094eca09873d9292cda895d120663  libstdc++-v3/testsuite/18_support/headers/cstdlib/functions_std.cc
! 59fa80a2e71b3793f3458279af3dfcc0  libstdc++-v3/testsuite/18_support/headers/cstdlib/macros.cc
! 07f76497d55ff24633a1cf9316802ce3  libstdc++-v3/testsuite/18_support/headers/ctime/functions_std.cc
! 017a39c5263db6de603af1a0ce1d08cb  libstdc++-v3/testsuite/18_support/headers/ctime/macros.cc
! 03f074134eccd1439d3697096f439aba  libstdc++-v3/testsuite/18_support/headers/ctime/types_std.cc
! 8dbf159b101073f4153897bfec8aeffa  libstdc++-v3/testsuite/18_support/headers/exception/synopsis.cc
! 07e99eaa2d0cc4d3795779c7a91fcb68  libstdc++-v3/testsuite/18_support/headers/exception/types_std.cc
! 7ddc0e43e04db863587c2c4c253b90bf  libstdc++-v3/testsuite/18_support/headers/limits/synopsis.cc
! 90bcf766cb0ab86ce4f608966a8ee693  libstdc++-v3/testsuite/18_support/headers/new/synopsis.cc
! c4ff9a549fbcede7f6d59808a94b8fdd  libstdc++-v3/testsuite/18_support/headers/new/synopsis_cxx98.cc
! a24cd89615043196202dcc0164069800  libstdc++-v3/testsuite/18_support/headers/new/types_std.cc
! d30079bacd51dcf729e229dda5eada7b  libstdc++-v3/testsuite/18_support/headers/typeinfo/synopsis.cc
! 163d70a3439390e63425330df00301fc  libstdc++-v3/testsuite/18_support/headers/typeinfo/types_std.cc
! 25a4ce48e7f744768e494bb0957cafd2  libstdc++-v3/testsuite/18_support/initializer_list/constexpr.cc
! 7870dbab1b12f71c3d94330a3536b715  libstdc++-v3/testsuite/18_support/initializer_list/range_access.cc
! 5c24f0f28ca5c72a0eef0e307f6b1dcd  libstdc++-v3/testsuite/18_support/initializer_list/requirements/constexpr_functions.cc
! bb070828c25e289beeb41375ef759975  libstdc++-v3/testsuite/18_support/initializer_list/requirements/explicit_instantiation.cc
! de524d32a4dab7cda2c3d3db9e7b9be2  libstdc++-v3/testsuite/18_support/initializer_list/requirements/typedefs.cc
! 7672443dd5a2382665f8c0cd46c24345  libstdc++-v3/testsuite/18_support/launder/1.cc
! 760db12243bcc230eab6ed32314c4c86  libstdc++-v3/testsuite/18_support/launder/nodiscard.cc
! 47d2ba3d48d22f3c188a7db10c53a9cb  libstdc++-v3/testsuite/18_support/launder/requirements.cc
! 253db69050529ab2852357b7cc478864  libstdc++-v3/testsuite/18_support/launder/requirements_neg.cc
! 24d2db6c51a6e21e7288fb541efdbd87  libstdc++-v3/testsuite/18_support/max_align_t/requirements/1.cc
! e943690ba2b4259cef9254757b7789aa  libstdc++-v3/testsuite/18_support/max_align_t/requirements/2.cc
! 7c7352f4f8bf14488729bbdb410cde94  libstdc++-v3/testsuite/18_support/nested_exception/51438.cc
! 4568465cb0e533caa1af479c1f7e7160  libstdc++-v3/testsuite/18_support/nested_exception/62154.cc
! f23fd81cdb4036b234cfd5a3af441d40  libstdc++-v3/testsuite/18_support/nested_exception/68139.cc
! 5db005e4ba851272ee89c132371a1b54  libstdc++-v3/testsuite/18_support/nested_exception/79114.cc
! 7d393397ab96d77877bde29533e95895  libstdc++-v3/testsuite/18_support/nested_exception/cons.cc
! 168b55c96e6842f4300c7fe2885f1fc4  libstdc++-v3/testsuite/18_support/nested_exception/nested_ptr.cc
! 8ce4b81ae10f4e2ac749eaeb9fd5faa4  libstdc++-v3/testsuite/18_support/nested_exception/rethrow_if_nested.cc
! fbdd019e00f0a8c2448722fd7f435f4b  libstdc++-v3/testsuite/18_support/nested_exception/rethrow_nested.cc
! f4c2a6fa459d3663dfe039eae73edef1  libstdc++-v3/testsuite/18_support/nested_exception/throw_with_nested.cc
! c0333c751d880702acce6864b84cf105  libstdc++-v3/testsuite/18_support/new_delete_placement.cc
! 6e396d7166b0ea251eda47bf0aa01643  libstdc++-v3/testsuite/18_support/new_handler.cc
! f2177a69691c46efa74f9b28b492b964  libstdc++-v3/testsuite/18_support/numeric_limits/29989.cc
! 93b7393a06f9b95042b1231231241edc  libstdc++-v3/testsuite/18_support/numeric_limits/40856.cc
! 304126ee1e5136a65c5fb8b76822e7c0  libstdc++-v3/testsuite/18_support/numeric_limits/char16_32_t.cc
! b588351bae417d21f542b88cbc9073e3  libstdc++-v3/testsuite/18_support/numeric_limits/cons/default.cc
! e163d2ab172c5fb4bdd061053013749a  libstdc++-v3/testsuite/18_support/numeric_limits/cons/default_c++0x.cc
! 00b4e6d6e08f5ae00bf62530286eba02  libstdc++-v3/testsuite/18_support/numeric_limits/denorm_min.cc
! 72549735d1ce0c123d90be68d23c1e8f  libstdc++-v3/testsuite/18_support/numeric_limits/digits10.cc
! cfb5b0b46e51e33267b84ade501bc033  libstdc++-v3/testsuite/18_support/numeric_limits/dr559.cc
! a6631a9d7a9e4381e26dde3615249e9f  libstdc++-v3/testsuite/18_support/numeric_limits/epsilon.cc
! 88d0123a702344e1d08347ec4b96f006  libstdc++-v3/testsuite/18_support/numeric_limits/infinity.cc
! a0b1a5c16270aa486bf385f003e0b2b2  libstdc++-v3/testsuite/18_support/numeric_limits/is_iec559.cc
! ad7c40d0c21f7f7464267793f7049c69  libstdc++-v3/testsuite/18_support/numeric_limits/is_signed.cc
! db77c671f19903b4d4e80b926ec9e48a  libstdc++-v3/testsuite/18_support/numeric_limits/lowest.cc
! 439fa688ce6a3c496b1c0cf1d0107eaf  libstdc++-v3/testsuite/18_support/numeric_limits/max_digits10.cc
! 61e7e78183316cfb687eb6dd1942599a  libstdc++-v3/testsuite/18_support/numeric_limits/min_max.cc
! 1666a496d042b52ee4de8326263f92a6  libstdc++-v3/testsuite/18_support/numeric_limits/primary.cc
! f37993652d43cfda182d05a9f952861c  libstdc++-v3/testsuite/18_support/numeric_limits/quiet_NaN.cc
! 4b848124b2c87a37b9b8fe4afb6942f7  libstdc++-v3/testsuite/18_support/numeric_limits/requirements/constexpr_data.cc
! 10dd076f151fd873c27b67e96775fd66  libstdc++-v3/testsuite/18_support/numeric_limits/requirements/constexpr_functions.cc
! a8a4d48f9e45bb4a02523dd2cd091ff5  libstdc++-v3/testsuite/18_support/numeric_limits/requirements/explicit_instantiation/1.cc
! 78dca9cd4c9fce4c0e0238d09b8b75fb  libstdc++-v3/testsuite/18_support/numeric_limits/specialization_default_values.cc
! 36e1f00920c21feaf3d34e86df1be3b8  libstdc++-v3/testsuite/18_support/numeric_limits/traps.cc
! f0da161462940ec086ec376c30baa41b  libstdc++-v3/testsuite/18_support/pthread_guard.cc
! d4df575737594fb810c256fa55ff18de  libstdc++-v3/testsuite/18_support/quick_exit/quick_exit.cc
! c5f07da0e765f881528edbe74e315589  libstdc++-v3/testsuite/18_support/terminate_handler.cc
! 139fbdd200a8d4d73d74afcb3b962182  libstdc++-v3/testsuite/18_support/type_info/52562.cc
! 461fca6e5cdb39748affb9c2f6232a29  libstdc++-v3/testsuite/18_support/type_info/fundamental.cc
! ce565f0990c2d6d1c1480ec59b3f1ddc  libstdc++-v3/testsuite/18_support/type_info/hash_code.cc
! 6defc2a1ef55f28569730205d836f85d  libstdc++-v3/testsuite/18_support/uncaught_exception/14026.cc
! a61cb3f43b08cd736acda509100e9045  libstdc++-v3/testsuite/18_support/uncaught_exceptions/uncaught_exceptions.cc
! b8cd804c4a113cfc8f33db85aec35a73  libstdc++-v3/testsuite/18_support/unexpected_handler.cc
! 6830c050d2bfec7cb51eb238f2a7eebe  libstdc++-v3/testsuite/19_diagnostics/error_category/cons/copy_neg.cc
! da9feffd9e1fef1e9abefae4124ba30f  libstdc++-v3/testsuite/19_diagnostics/error_category/cons/default.cc
! 5df028c85f55c8397094873b4b32d06d  libstdc++-v3/testsuite/19_diagnostics/error_category/operators/equal.cc
! d5dedf35c56fb5ff25e4694ef4aa27ec  libstdc++-v3/testsuite/19_diagnostics/error_category/operators/not_equal.cc
! fff1c0579121982a3539336f07da8e8a  libstdc++-v3/testsuite/19_diagnostics/error_code/cons/1.cc
! ebd72d4aa485c4c0cf6ecdf634735c34  libstdc++-v3/testsuite/19_diagnostics/error_code/cons/39882.cc
! 6799d0e3233a06479277b99bd019ba5d  libstdc++-v3/testsuite/19_diagnostics/error_code/is_error_code_v.cc
! 0b6e02fc51d144baf9d5df62e6543ca3  libstdc++-v3/testsuite/19_diagnostics/error_code/modifiers/39882.cc
! da49fbd7319a8fec8dcb2a009a24033b  libstdc++-v3/testsuite/19_diagnostics/error_code/operators/bool.cc
! d0f45d1734d6a1e499f6c60084739844  libstdc++-v3/testsuite/19_diagnostics/error_code/operators/bool_neg.cc
! 075252cac305b7cac9b0393fb378c6cf  libstdc++-v3/testsuite/19_diagnostics/error_code/operators/equal.cc
! 9809c91e308128787f587b3df1af03ed  libstdc++-v3/testsuite/19_diagnostics/error_code/operators/not_equal.cc
! a0c278f7e3c93d07df9cfb64d3ecdc4c  libstdc++-v3/testsuite/19_diagnostics/error_condition/cons/1.cc
! 61f8fb39ecf2df651bf3581a64924652  libstdc++-v3/testsuite/19_diagnostics/error_condition/cons/39881.cc
! 45904f060d22969bc737a441bc0b2633  libstdc++-v3/testsuite/19_diagnostics/error_condition/modifiers/39881.cc
! 27a66bd91324c2e46a6edd4a8877664e  libstdc++-v3/testsuite/19_diagnostics/error_condition/operators/bool.cc
! 742b6009eae50529ece9c85d984a6564  libstdc++-v3/testsuite/19_diagnostics/error_condition/operators/bool_neg.cc
! edd3819fccf2b91e128f3b872a46b91b  libstdc++-v3/testsuite/19_diagnostics/error_condition/operators/equal.cc
! 9b77b199cf6526c5c0356dffeb7fa423  libstdc++-v3/testsuite/19_diagnostics/error_condition/operators/not_equal.cc
! 92664f0b09231fdad958f996180d7a85  libstdc++-v3/testsuite/19_diagnostics/headers/cassert/macros.cc
! 803a2e35d07188c41ef84d9533839f9c  libstdc++-v3/testsuite/19_diagnostics/headers/cerrno/macros.cc
! 32f3a47e1abf17bf2ef67d68fbbbb9f1  libstdc++-v3/testsuite/19_diagnostics/headers/stdexcept/synopsis.cc
! 449e6ab8d15dd550e4f97c25034f207e  libstdc++-v3/testsuite/19_diagnostics/headers/stdexcept/types_std.cc
! 6db42d60c3a7520ea28245fbda0c37a4  libstdc++-v3/testsuite/19_diagnostics/headers/system_error/34538.cc
! 18c4f7c0bd36eb3a8c9a6866b850f3e8  libstdc++-v3/testsuite/19_diagnostics/headers/system_error/errc_std_c++0x.cc
! f102eb9874d656f9ea0a761bcf37db63  libstdc++-v3/testsuite/19_diagnostics/headers/system_error/std_c++0x_neg.cc
! 6fe9349ee6d8ff36d7efd423aae648a7  libstdc++-v3/testsuite/19_diagnostics/headers/system_error/types_std_c++0x.cc
! 57952b7d89619d935dbb5acbd395e127  libstdc++-v3/testsuite/19_diagnostics/logic_error/cons_virtual_derivation.cc
! 8dd3f9bedc1945238d969c96992b3017  libstdc++-v3/testsuite/19_diagnostics/logic_error/what-1.cc
! c6e50acebd75e959ec2274e0460ec1c5  libstdc++-v3/testsuite/19_diagnostics/logic_error/what-2.cc
! 8b4fed3bda101d0f5d0cf7e363e34d55  libstdc++-v3/testsuite/19_diagnostics/logic_error/what-3.cc
! 13be252ae4ba7336d28ffdfcb87e9fda  libstdc++-v3/testsuite/19_diagnostics/logic_error/what-big.cc
! 69b04433e3e74d3c86f44e28db54e68f  libstdc++-v3/testsuite/19_diagnostics/runtime_error/cons_virtual_derivation.cc
! 78e00332b92d937dca3bc5b48955423a  libstdc++-v3/testsuite/19_diagnostics/runtime_error/what-1.cc
! 5845217131c35e1a4fb3bb57cd850751  libstdc++-v3/testsuite/19_diagnostics/runtime_error/what-2.cc
! 73f41bb306582fcd3784a63c474e72ec  libstdc++-v3/testsuite/19_diagnostics/runtime_error/what-3.cc
! dabf36c4d911e96bec6a4b686fba46ce  libstdc++-v3/testsuite/19_diagnostics/runtime_error/what-big.cc
! ea6328a48b8f68d4db1b1d68df9c7174  libstdc++-v3/testsuite/19_diagnostics/stdexcept.cc
! 72bac3588b2207d95541047b70f4f4af  libstdc++-v3/testsuite/19_diagnostics/system_error/39880.cc
! 74a85130350a442cfdf1316a6503c737  libstdc++-v3/testsuite/19_diagnostics/system_error/cons-1.cc
! 01748dca57a46ebe96bf713e7dd7b1f8  libstdc++-v3/testsuite/19_diagnostics/system_error/cons_virtual_derivation.cc
! 684dfa7c726b23a3c25e5a7ecb0ba1bb  libstdc++-v3/testsuite/19_diagnostics/system_error/what-1.cc
! 551c3e6e2f8a03b6f4c3f42c504c4e37  libstdc++-v3/testsuite/19_diagnostics/system_error/what-2.cc
! a3b77efe7a253c80c0ccb6747966d745  libstdc++-v3/testsuite/19_diagnostics/system_error/what-3.cc
! c273dee78e949591b97a12d99f1c8041  libstdc++-v3/testsuite/19_diagnostics/system_error/what-4.cc
! 8865ba8462c53355fa3fa6487b61c64f  libstdc++-v3/testsuite/19_diagnostics/system_error/what-big.cc
! f6205a41fecd5d0292fd3867c1ab0e08  libstdc++-v3/testsuite/20_util/add_const/requirements/alias_decl.cc
! 3a8bae3be714baf6237b761a638d004b  libstdc++-v3/testsuite/20_util/add_const/requirements/explicit_instantiation.cc
! e2557849a14658ea016446776824eb15  libstdc++-v3/testsuite/20_util/add_const/value.cc
! 43eeb7749061763ec6e51fa8a2c9260a  libstdc++-v3/testsuite/20_util/add_cv/requirements/alias_decl.cc
! 25cf21780a31d2f48bb827dc08c968c9  libstdc++-v3/testsuite/20_util/add_cv/requirements/explicit_instantiation.cc
! 352985d4e899b1ef1bd338838b9292f8  libstdc++-v3/testsuite/20_util/add_cv/value.cc
! a8358c39ff078aa004c0207f47f83545  libstdc++-v3/testsuite/20_util/add_lvalue_reference/requirements/alias_decl.cc
! 98b2e09f1355e017278d101c9f87c95b  libstdc++-v3/testsuite/20_util/add_lvalue_reference/requirements/explicit_instantiation.cc
! 88cd46408b16c519b185cc5427c5cf44  libstdc++-v3/testsuite/20_util/add_lvalue_reference/value.cc
! 7600c0d87317db97d2a5fe1e4e2e8e9c  libstdc++-v3/testsuite/20_util/add_pointer/requirements/alias_decl.cc
! ef28e470ea18f151572bbc10aa172a1c  libstdc++-v3/testsuite/20_util/add_pointer/requirements/explicit_instantiation.cc
! eda19e24469b71197d57d0f257fc20d8  libstdc++-v3/testsuite/20_util/add_pointer/value.cc
! 284d05fa2a74792cabec7cc85e6fb8ee  libstdc++-v3/testsuite/20_util/add_rvalue_reference/requirements/alias_decl.cc
! f2c91501daf64125ebdbc4f094651ea6  libstdc++-v3/testsuite/20_util/add_rvalue_reference/requirements/explicit_instantiation.cc
! e5354385a0d187e9b4d0df22da4c7adc  libstdc++-v3/testsuite/20_util/add_rvalue_reference/value.cc
! ee5b492b70f4eaf76b4b56649578c2a6  libstdc++-v3/testsuite/20_util/add_volatile/requirements/alias_decl.cc
! da9dacb4f77072dfd207f102e96fcd2f  libstdc++-v3/testsuite/20_util/add_volatile/requirements/explicit_instantiation.cc
! d77627245979a4ae431f91082211cdbe  libstdc++-v3/testsuite/20_util/add_volatile/value.cc
! 46d8a2c8fe5215880ba57fe9fe8e7fd4  libstdc++-v3/testsuite/20_util/addressof/1.cc
! 7753620b041f6370291f5c37d6a72578  libstdc++-v3/testsuite/20_util/addressof/requirements/constexpr.cc
! 975ceadc29c794a8c1fe87406faeaa2f  libstdc++-v3/testsuite/20_util/addressof/requirements/explicit_instantiation.cc
! 77eac40c6d4527111e0e492c72e2ec3e  libstdc++-v3/testsuite/20_util/align/1.cc
! e21bd4bf00351546c26299122e4011d0  libstdc++-v3/testsuite/20_util/align/2.cc
! ff49523de8a34e0af5564e5ae08229a1  libstdc++-v3/testsuite/20_util/aligned_storage/requirements/alias_decl.cc
! a3fff9862321a4d4c03140e77f1a5406  libstdc++-v3/testsuite/20_util/aligned_storage/requirements/explicit_instantiation.cc
! e36ce63b47604bf2db4e97a48e09cfa8  libstdc++-v3/testsuite/20_util/aligned_storage/value.cc
! 51292e2af5e5562985917b7b75936762  libstdc++-v3/testsuite/20_util/aligned_union/1.cc
! 7dd1b564eeb7bce80ad3c337a724e618  libstdc++-v3/testsuite/20_util/aligned_union/requirements/alias_decl.cc
! a5fbcb0c05b48fa1c301ec851fcd8eb7  libstdc++-v3/testsuite/20_util/alignment_of/requirements/explicit_instantiation.cc
! 249f7643ec61aa784b98222894b7b93e  libstdc++-v3/testsuite/20_util/alignment_of/requirements/typedefs.cc
! 6e0e2c522e103b780585eea0b9ef59c5  libstdc++-v3/testsuite/20_util/alignment_of/value.cc
! dcb1e0f7a57b45937d227e0ae656cc65  libstdc++-v3/testsuite/20_util/allocator/1.cc
! ff4159260ab42a7e1f05b241e3e2922f  libstdc++-v3/testsuite/20_util/allocator/10378.cc
! 2fcadd3495bfee4714ce1962d65c9609  libstdc++-v3/testsuite/20_util/allocator/14176.cc
! 6a3252b05b00a428437a1ae692263613  libstdc++-v3/testsuite/20_util/allocator/33807.cc
! fae6f97c0e31cce4aab381903397bc74  libstdc++-v3/testsuite/20_util/allocator/8230.cc
! 83d27807b99fb6ea598a4507ff88a282  libstdc++-v3/testsuite/20_util/allocator/overaligned.cc
! 89d600fbb7c56c3edeb524d2501ff488  libstdc++-v3/testsuite/20_util/allocator/requirements/explicit_instantiation/1.cc
! 69556b375862f7dac9f56127348002fd  libstdc++-v3/testsuite/20_util/allocator/requirements/typedefs.cc
! ed4e285925c750e85ecf91a2cc1f5fd4  libstdc++-v3/testsuite/20_util/allocator/void.cc
! edec4cc95837fc22fa6e7f930e70fcfc  libstdc++-v3/testsuite/20_util/allocator_traits/members/allocate_hint.cc
! c85760603940e82574919e386ed09938  libstdc++-v3/testsuite/20_util/allocator_traits/members/allocate_hint_nonpod.cc
! 11653490c9d19344f5d9bc3fdc2af32f  libstdc++-v3/testsuite/20_util/allocator_traits/members/construct.cc
! 33e379962a15731d24067f81379640a0  libstdc++-v3/testsuite/20_util/allocator_traits/members/destroy.cc
! 8b0e74c7d24f6b10cc70860c08dfb2ee  libstdc++-v3/testsuite/20_util/allocator_traits/members/is_always_equal.cc
! d085559f2ea9a090be43275ce0c5bfe6  libstdc++-v3/testsuite/20_util/allocator_traits/members/max_size.cc
! ab9ee031b877ca9c47ee7843113d8ddd  libstdc++-v3/testsuite/20_util/allocator_traits/members/pointers.cc
! 26ad981bed470174eb541255f4f62898  libstdc++-v3/testsuite/20_util/allocator_traits/members/rebind_alloc.cc
! 6ef8f380396ce72b4a8c59c11d649f55  libstdc++-v3/testsuite/20_util/allocator_traits/members/select.cc
! eb5b48c6667db5d6307a644ac7c33af3  libstdc++-v3/testsuite/20_util/allocator_traits/requirements/explicit_instantiation.cc
! 1cb3a2cc659a975d2e0695074a0f9464  libstdc++-v3/testsuite/20_util/allocator_traits/requirements/typedefs.cc
! 3a473cf8a67f2db99e4d8bf9a02116d7  libstdc++-v3/testsuite/20_util/allocator_traits/requirements/typedefs2.cc
! 2df9578176c8cd23798b4f398d71beb5  libstdc++-v3/testsuite/20_util/any/assign/1.cc
! a55afcfe47b4b4f6ad006b3bf735bb78  libstdc++-v3/testsuite/20_util/any/assign/2.cc
! 6a13db0d31b3a1474a8a71d4cc4d7b7a  libstdc++-v3/testsuite/20_util/any/assign/emplace.cc
! 47cc5636cc528b4ff6293387b917135f  libstdc++-v3/testsuite/20_util/any/assign/exception.cc
! b94801fbc5e2dacaf2c9c94a83825551  libstdc++-v3/testsuite/20_util/any/assign/self.cc
! a51fa9658d622027f0ca06586c7b7f95  libstdc++-v3/testsuite/20_util/any/cons/1.cc
! 25fc40bdcee5625023865dde950304af  libstdc++-v3/testsuite/20_util/any/cons/2.cc
! 2d8f02c8709f333df34d5619df93ccd9  libstdc++-v3/testsuite/20_util/any/cons/aligned.cc
! ed2537353b7b140a34cd433efe390177  libstdc++-v3/testsuite/20_util/any/cons/explicit.cc
! dcea191c8d87737588370196323afc6e  libstdc++-v3/testsuite/20_util/any/cons/in_place.cc
! 8a21b66009ff6f60cba16f59056d3d8a  libstdc++-v3/testsuite/20_util/any/cons/nontrivial.cc
! 761224dbe50b54dbe89d5702f39f484d  libstdc++-v3/testsuite/20_util/any/make_any.cc
! 44c81d38c248ba6c04f6bbbb5b2f9f10  libstdc++-v3/testsuite/20_util/any/misc/any_cast.cc
! 47069e16ce00f3c36757ccedc1f2dc41  libstdc++-v3/testsuite/20_util/any/misc/any_cast_neg.cc
! 6c2d9e722f0f83536158347f8f69c681  libstdc++-v3/testsuite/20_util/any/misc/any_cast_no_rtti.cc
! dab7e55421df6d039979bbd32e75db40  libstdc++-v3/testsuite/20_util/any/misc/swap.cc
! f0b1e5d9e3f738cf907627eccd161e13  libstdc++-v3/testsuite/20_util/any/modifiers/1.cc
! f9c96030d96403aba3ae54b8a9f74dee  libstdc++-v3/testsuite/20_util/any/modifiers/83658.cc
! 5152c59ffab8123adcb33cce700a4162  libstdc++-v3/testsuite/20_util/any/observers/type.cc
! 494868976ce6f59704dbdc7ab9e101a2  libstdc++-v3/testsuite/20_util/any/requirements.cc
! 18f056c5b5a012a71f553a0a18c67bc6  libstdc++-v3/testsuite/20_util/any/typedefs.cc
! da676c5f26662282594053d0188a6b33  libstdc++-v3/testsuite/20_util/as_const/1.cc
! a89714ac74f271418bc8d5cc8a687898  libstdc++-v3/testsuite/20_util/as_const/rvalue_neg.cc
! 10f3f2461efffc7e2045a8f34f40c3ff  libstdc++-v3/testsuite/20_util/auto_ptr/1.cc
! 2df483ad75fa756068cc5d94948af1f9  libstdc++-v3/testsuite/20_util/auto_ptr/2.cc
! de4809287ffd4e5f97db85f4f195f1fc  libstdc++-v3/testsuite/20_util/auto_ptr/3.cc
! dc28da6ced7d4469f3cbdceab54a0380  libstdc++-v3/testsuite/20_util/auto_ptr/3946.cc
! f0948002a66b5079995d1b456aadd2d2  libstdc++-v3/testsuite/20_util/auto_ptr/4.cc
! 4140debe20aea00db0f0679f89dac98a  libstdc++-v3/testsuite/20_util/auto_ptr/5.cc
! 73d5aa64218c99585740d7b1be359c4f  libstdc++-v3/testsuite/20_util/auto_ptr/6.cc
! 0b4af1fbde51f59f0d87df47adcbf3a0  libstdc++-v3/testsuite/20_util/auto_ptr/7.cc
! 21a5b5432441519043ff19cd696c2869  libstdc++-v3/testsuite/20_util/auto_ptr/assign_neg.cc
! a115c05057e86bc8e8e5e5e6e121c94b  libstdc++-v3/testsuite/20_util/auto_ptr/requirements/explicit_instantiation/1.cc
! b12282381a346d260fe63335da2a07a7  libstdc++-v3/testsuite/20_util/bad_function_call/cons_virtual_derivation.cc
! da1a42036cd15a4f424cb37911155911  libstdc++-v3/testsuite/20_util/bad_function_call/what.cc
! 1a843e3c26196d788360c88bb8f47551  libstdc++-v3/testsuite/20_util/bind/35569.cc
! bde6d898a1c56e82bd8dcb7198492738  libstdc++-v3/testsuite/20_util/bind/38889.cc
! 4994821e5e7bb288e1c8f84c25868ef7  libstdc++-v3/testsuite/20_util/bind/42593.cc
! 13d48b3137fbfb18192d896f43477f12  libstdc++-v3/testsuite/20_util/bind/45924.cc
! 58cfc20200065eda43362227ac85f258  libstdc++-v3/testsuite/20_util/bind/48698.cc
! 9a4d09a751335a8c3cf4ecefbe8fedf5  libstdc++-v3/testsuite/20_util/bind/49058_1.cc
! 834aaf728dad1ea10be38e0bd2c4732f  libstdc++-v3/testsuite/20_util/bind/49058_2.cc
! fdd2f68c1eb64198cd771f8be57cfe64  libstdc++-v3/testsuite/20_util/bind/57899.cc
! 48ceab5125fb7060e4c8c3a74e27315b  libstdc++-v3/testsuite/20_util/bind/60497.cc
! ea36b94136b4f51791edff1f5780cc87  libstdc++-v3/testsuite/20_util/bind/68912.cc
! 284dc393d434f5fbbb6d839536d18e54  libstdc++-v3/testsuite/20_util/bind/79798.cc
! c8ad557be78347ce88107b471eacce96  libstdc++-v3/testsuite/20_util/bind/83427.cc
! 819e11ec500cdc26ed0ee414b706e95a  libstdc++-v3/testsuite/20_util/bind/all_bound.cc
! 73928b50e3270360f643103e0ba09101  libstdc++-v3/testsuite/20_util/bind/conv_result.cc
! 22cf5d6bd4ff0670711293b0d355cbd9  libstdc++-v3/testsuite/20_util/bind/cv_quals.cc
! 27afb0dd4c558c13d5a1f8d8cfb44dde  libstdc++-v3/testsuite/20_util/bind/cv_quals_2.cc
! 58a3c4a7e0b4f3b2d2f639289563f658  libstdc++-v3/testsuite/20_util/bind/cv_quals_3.cc
! 9a286f622b81f23b47516fafadba2af8  libstdc++-v3/testsuite/20_util/bind/is_placeholder_v.cc
! 21a50d504733c84344acc1d9d666158c  libstdc++-v3/testsuite/20_util/bind/move.cc
! 7d94ee9edc953e197aba8ff54e7b33ca  libstdc++-v3/testsuite/20_util/bind/nested.cc
! 7322ba843ea63e2da98ff9bef48eb06b  libstdc++-v3/testsuite/20_util/bind/placeholders.cc
! 66a00d6b6c6c5410d75eb2272b61a416  libstdc++-v3/testsuite/20_util/bind/ref.cc
! 0f8ea744da02e7eb593111ce9d4fe2ae  libstdc++-v3/testsuite/20_util/bind/ref2.cc
! 6a5144a442f903f09d5f3b4f7b428e10  libstdc++-v3/testsuite/20_util/bind/ref_neg.cc
! 585b82ab5d20c77cb0a185b53bb2c67f  libstdc++-v3/testsuite/20_util/bind/refqual.cc
! 19c91034a01eb56d3d60cdb22c8e3082  libstdc++-v3/testsuite/20_util/bind/socket.cc
! b924bc529ce784068a2fb7c08bbfdcb0  libstdc++-v3/testsuite/20_util/bool_constant/requirements.cc
! 5d7dbd2eab7307a6017fe100aef24bae  libstdc++-v3/testsuite/20_util/common_type/requirements/alias_decl.cc
! d5b38502a319774fc7360710cdf63785  libstdc++-v3/testsuite/20_util/common_type/requirements/explicit_instantiation.cc
! d5e7d50216fbae397b93b56f1ba1f4bd  libstdc++-v3/testsuite/20_util/common_type/requirements/sfinae_friendly_1.cc
! 11325d6641efe9587975de750a992c31  libstdc++-v3/testsuite/20_util/common_type/requirements/sfinae_friendly_2.cc
! 6bc06a273df2dabdd47e3614835daf83  libstdc++-v3/testsuite/20_util/common_type/requirements/typedefs-1.cc
! 2a433e3a6b0152522fbe0fd8efc7d3a2  libstdc++-v3/testsuite/20_util/common_type/requirements/typedefs-2.cc
! 13aef816cb5b4c342945fdc528cf77b2  libstdc++-v3/testsuite/20_util/conditional/requirements/alias_decl.cc
! cde18e521dfb0ad7fc73035e1437182c  libstdc++-v3/testsuite/20_util/conditional/requirements/explicit_instantiation.cc
! ee2efef98e84f7ad47efdff3146c04a0  libstdc++-v3/testsuite/20_util/conditional/requirements/typedefs.cc
! 6559b21a178291a2ddc359d275b67ef9  libstdc++-v3/testsuite/20_util/decay/requirements/alias_decl.cc
! cd0d68e6dbaa672b088774f79256f54e  libstdc++-v3/testsuite/20_util/decay/requirements/explicit_instantiation.cc
! 11b91be973bc64ec0975fae255916190  libstdc++-v3/testsuite/20_util/decay/requirements/typedefs.cc
! fc1f0540a5fb72df3bcd12ce46c51a41  libstdc++-v3/testsuite/20_util/declval/requirements/1.cc
! e18ceed6a67385fcfcb640549f86f335  libstdc++-v3/testsuite/20_util/declval/requirements/1_neg.cc
! 571f67d47a160bb94a73909770e843de  libstdc++-v3/testsuite/20_util/default_delete/48631_neg.cc
! 7f8d1649950a7dbb2ed35e5262c504df  libstdc++-v3/testsuite/20_util/default_delete/cons/constexpr.cc
! c173322144380fc211a5cee18c1c7b67  libstdc++-v3/testsuite/20_util/default_delete/void_neg.cc
! bc3e6b598e31db8b804b939a5a9b8ab4  libstdc++-v3/testsuite/20_util/duration/arithmetic/1.cc
! 2f94e939f0f885523cc706b8fefb39be  libstdc++-v3/testsuite/20_util/duration/arithmetic/2.cc
! 98e8ba69daad5d3a20e21862916bd810  libstdc++-v3/testsuite/20_util/duration/arithmetic/58850.cc
! d7794731eea6ffa3e5d792d4eca76bb2  libstdc++-v3/testsuite/20_util/duration/arithmetic/constexpr.cc
! 22ff9e4826ce55975a4503ad851c5772  libstdc++-v3/testsuite/20_util/duration/arithmetic/constexpr_c++17.cc
! 192b1ca5d697884e30374d7ef37617a6  libstdc++-v3/testsuite/20_util/duration/arithmetic/dr2020.cc
! 7046fcf8462d936f1ab92c9c46d76809  libstdc++-v3/testsuite/20_util/duration/arithmetic/dr934-1.cc
! 0037a9ea2228e3837b18b4f99f3910ae  libstdc++-v3/testsuite/20_util/duration/arithmetic/dr934-2.cc
! 7618f595d8ab39026c8bb0e00db19154  libstdc++-v3/testsuite/20_util/duration/comparison_operators/1.cc
! d960f89ae233c30a87f068bbdc51b45d  libstdc++-v3/testsuite/20_util/duration/comparison_operators/constexpr.cc
! c75c7d5d84b77c141eef90c1a546dcb4  libstdc++-v3/testsuite/20_util/duration/cons/1.cc
! b46c8917a67a49cbcc66d2e187b33c8f  libstdc++-v3/testsuite/20_util/duration/cons/1_neg.cc
! 3b2a47a8acae734858a59626159748bb  libstdc++-v3/testsuite/20_util/duration/cons/2.cc
! e25cb525511555f52ef270cb42b58443  libstdc++-v3/testsuite/20_util/duration/cons/54025.cc
! dea948abd1b9a9cfd36d501cecc1431c  libstdc++-v3/testsuite/20_util/duration/cons/constexpr.cc
! c72dc91ed98b6dafde4e626cd9e22ef6  libstdc++-v3/testsuite/20_util/duration/cons/dr1177.cc
! 7f1e5d7962d228d789a7dd204b81f71f  libstdc++-v3/testsuite/20_util/duration/cons/dr974_neg.cc
! 7daaf95c81a9a7281129f4612c4d8ef9  libstdc++-v3/testsuite/20_util/duration/literals/61166.cc
! 30f623c9371a5f337e8879fd346f0fff  libstdc++-v3/testsuite/20_util/duration/literals/65499.cc
! c67d16d858b1ab66464b080d5c6d7691  libstdc++-v3/testsuite/20_util/duration/literals/84671.cc
  f11b5a7d64db419bf2305c0f433c638b  libstdc++-v3/testsuite/20_util/duration/literals/ns_detail.cc
! 78f2cd376d37ba4c56b73a8ee76db693  libstdc++-v3/testsuite/20_util/duration/literals/range.cc
! b7ccb806604efb85eae8e369572d376f  libstdc++-v3/testsuite/20_util/duration/literals/types.cc
! ec34dc1069190bfbf7b6b92676e34a5c  libstdc++-v3/testsuite/20_util/duration/literals/values.cc
! 24e08686e964f0f5e21cf257bc91ddc6  libstdc++-v3/testsuite/20_util/duration/requirements/constexpr_functions.cc
! d4a2d8ca86c68f3d7c6cabc277897173  libstdc++-v3/testsuite/20_util/duration/requirements/explicit_instantiation/explicit_instantiation.cc
! 1a208b7e17733bad6333290e67970908  libstdc++-v3/testsuite/20_util/duration/requirements/sfinae_friendly_1.cc
! bd932b31042c18b97de2aec6ec8b584e  libstdc++-v3/testsuite/20_util/duration/requirements/treat_as_floating_point_v.cc
! 1748f9cb3ae1d574f6788e10b565e53d  libstdc++-v3/testsuite/20_util/duration/requirements/typedefs_neg1.cc
! 62ae92bdc512e9e4f811c2bfd310f923  libstdc++-v3/testsuite/20_util/duration/requirements/typedefs_neg2.cc
! 59071e04f3e27ac0d5cd075183f32001  libstdc++-v3/testsuite/20_util/duration/requirements/typedefs_neg3.cc
! df01f174e9464239eca5a55440bcb2fc  libstdc++-v3/testsuite/20_util/duration_cast/constexpr.cc
! 1bb9d18939d0a97ea9d9a679e2bd6c2e  libstdc++-v3/testsuite/20_util/duration_cast/rounding.cc
! 5d767c91e13ab0ddfbc946dada26ad68  libstdc++-v3/testsuite/20_util/enable_if/requirements/alias_decl.cc
! de30497d0fe19290a2b8c1a7997a34e0  libstdc++-v3/testsuite/20_util/enable_if/requirements/explicit_instantiation.cc
! 621a8243bcd303015ffe26b8e63b8f4b  libstdc++-v3/testsuite/20_util/enable_if/requirements/typedefs.cc
! d010da3d342e671c62855b114ef11a41  libstdc++-v3/testsuite/20_util/enable_if/requirements/typedefs_neg.cc
! 2d5859c4e35feeccbffd5fcca0513d1e  libstdc++-v3/testsuite/20_util/enable_shared_from_this/56383.cc
! 47e7effa080d719e25023aac1dbc2d8c  libstdc++-v3/testsuite/20_util/enable_shared_from_this/cons/constexpr.cc
! 2879bda77ef2e18d48555a6ce2ccea04  libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/assign.cc
! d9a0c9818d9c77e2dc4bea79469a7dc0  libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/const.cc
! 666fa049fb1a7ca31a784eaa9bca6c11  libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/reinit.cc
! 264a950efeb5c9c486c40f12e62c4d9b  libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/unique_ptr.cc
! b7abb3f7247df3c8d6abb45bdefc1210  libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/weak_from_this.cc
! a70a373b62e3b39d3b54d8f007749bec  libstdc++-v3/testsuite/20_util/enable_shared_from_this/requirements/explicit_instantiation.cc
! efa94a980a48fcbc3c963fb1cce6a541  libstdc++-v3/testsuite/20_util/endian/1.cc
! d52c8469abc8a2c3e0037fc66b15ef79  libstdc++-v3/testsuite/20_util/exchange/1.cc
! 7cde27c83d1fa343f3290bf4984bb997  libstdc++-v3/testsuite/20_util/extent/requirements/explicit_instantiation.cc
! 768de9b74727f767801d220f0ebf6ac7  libstdc++-v3/testsuite/20_util/extent/requirements/typedefs.cc
! 25eb8b5f7ed1bf45100a125045517cb2  libstdc++-v3/testsuite/20_util/extent/value.cc
! 93074a50164a7c94ceacc3f01922b858  libstdc++-v3/testsuite/20_util/forward/1.cc
! c11f82b0cdbdc7ed1eb7d9ea41abdc75  libstdc++-v3/testsuite/20_util/forward/1_neg.cc
! c3d4a75fd697c04ac73ad524bd234036  libstdc++-v3/testsuite/20_util/forward/a.cc
! 330e0e5be7f9f40af45c24d94a8f5417  libstdc++-v3/testsuite/20_util/forward/b.cc
! 313c50bd205c67980fc4cfe30ad49249  libstdc++-v3/testsuite/20_util/forward/c_neg.cc
! 91f4313aabc7ce29b7d66975d3195c19  libstdc++-v3/testsuite/20_util/forward/d.cc
! f751a916ad423c962e219551fbf6ff9a  libstdc++-v3/testsuite/20_util/forward/e.cc
! 9bb15f86030073522158d9f165057f95  libstdc++-v3/testsuite/20_util/forward/f_neg.cc
! befb2e991a71148b9f86c22b7a650bc8  libstdc++-v3/testsuite/20_util/forward/requirements/explicit_instantiation.cc
! 22fd4a209c2d0d9d1b01ed02606a8800  libstdc++-v3/testsuite/20_util/from_chars/1.cc
! 9d0a83043587c533491824a227c26296  libstdc++-v3/testsuite/20_util/from_chars/1_neg.cc
! ffb0f82ad2054cb16908882daa9fd8ce  libstdc++-v3/testsuite/20_util/from_chars/2.cc
! 608daae560dbbc848e00008fb7c83506  libstdc++-v3/testsuite/20_util/from_chars/requirements.cc
! e2ae588f0b4c1f909bfa087b30852f69  libstdc++-v3/testsuite/20_util/function/1.cc
! 83975469334d820f2ce2195955c79b5f  libstdc++-v3/testsuite/20_util/function/10.cc
! dba8ccadbfd7560bfdbca186c050e993  libstdc++-v3/testsuite/20_util/function/2.cc
! c61f257caa371f1482a9270ae6f8aae1  libstdc++-v3/testsuite/20_util/function/3.cc
! f9534460aee871ca8c34c9ddf78ad767  libstdc++-v3/testsuite/20_util/function/4.cc
! 0457cc8de0380bcee44b5a18bcf1406e  libstdc++-v3/testsuite/20_util/function/43397.cc
! 7238abde7445f5b2f87a36fac47ce776  libstdc++-v3/testsuite/20_util/function/48541.cc
! 4a09c15f52ad13483a3ac33aff234ab3  libstdc++-v3/testsuite/20_util/function/5.cc
! 5958b57610535f4ab20d2bc940726486  libstdc++-v3/testsuite/20_util/function/58569.cc
! 64e8e1bf42c75c2560497acbc7b9e29e  libstdc++-v3/testsuite/20_util/function/6.cc
! 2c4fcbee6736b4e7282c8b7db5f1c36e  libstdc++-v3/testsuite/20_util/function/60594.cc
! 2b27b3d8db38fde74e7000bf6bab6a25  libstdc++-v3/testsuite/20_util/function/63840.cc
! b3593abac660c41f344bb91c99af86d1  libstdc++-v3/testsuite/20_util/function/65760.cc
! 611beb6767b01f1bdb8a522c0cee5991  libstdc++-v3/testsuite/20_util/function/68995.cc
! 1ede1c576f60f6277b9893d7f4d203fd  libstdc++-v3/testsuite/20_util/function/69222.cc
! cf2fd06357646c78abb490127a9ac715  libstdc++-v3/testsuite/20_util/function/7.cc
! f7eb2a27d9c1b84da75a1d62dea5b431  libstdc++-v3/testsuite/20_util/function/77322.cc
! 008928f8fea368694e8017beab5d8ec4  libstdc++-v3/testsuite/20_util/function/8.cc
! 6345584a7e593a6e33e78af3011580f2  libstdc++-v3/testsuite/20_util/function/9.cc
! 24a5b3f8597c1df23f627e4547626aeb  libstdc++-v3/testsuite/20_util/function/assign/move.cc
! e4c67d203a9cf528ee53ded63b6547cc  libstdc++-v3/testsuite/20_util/function/assign/move_target.cc
! 3118c1e9346f392eecb6d6e1bff27f47  libstdc++-v3/testsuite/20_util/function/cmp/cmp_neg.cc
! 6ddcfd1b94ef6be89598117e7c247911  libstdc++-v3/testsuite/20_util/function/cons/55320.cc
! fe59ada093d04b9c1c45f3448b381ec7  libstdc++-v3/testsuite/20_util/function/cons/57465.cc
! 57288119e564efa5dcf101a4a5390698  libstdc++-v3/testsuite/20_util/function/cons/72820.cc
! 09a080b8c6a4bf32365891ab7bcdae50  libstdc++-v3/testsuite/20_util/function/cons/addressof.cc
! ac30828c2c9899cfd7db0f21f5200f8b  libstdc++-v3/testsuite/20_util/function/cons/callable.cc
! d8685be46afeaa813267837e31a1b7dc  libstdc++-v3/testsuite/20_util/function/cons/deduction.cc
! 6c4062894425f4916598631a40cc4cb5  libstdc++-v3/testsuite/20_util/function/cons/move.cc
! d2cc3658f7992b8aa91be7c18a43fe7a  libstdc++-v3/testsuite/20_util/function/cons/move_target.cc
! a080ff0be7dc40d1ea1898f8d8f16ab2  libstdc++-v3/testsuite/20_util/function/cons/refqual.cc
! 3c5450d8e7297e43b41b9b139d2fcc85  libstdc++-v3/testsuite/20_util/function/invoke/forwarding.cc
! af2a72c71279beff4a83aa2cb2afe209  libstdc++-v3/testsuite/20_util/function/invoke/move_only.cc
! 54507c94eabb26d0302f6c467880a103  libstdc++-v3/testsuite/20_util/function/null_pointer_comparisons.cc
! 2cefdcf8d01f7e92b45cbaa94462f052  libstdc++-v3/testsuite/20_util/function/requirements/explicit_instantiation.cc
! df972445f54a2bfe2b15586989b411d6  libstdc++-v3/testsuite/20_util/function_objects/83607.cc
! 88ef5b39d01044bcd73152498b90ce4b  libstdc++-v3/testsuite/20_util/function_objects/binders/1.cc
! 26c74e191c2e279d0d68c2d3b079915d  libstdc++-v3/testsuite/20_util/function_objects/binders/3113.cc
! 3c15abce9a8d720d98b809d22dec35e9  libstdc++-v3/testsuite/20_util/function_objects/comparisons.cc
! 7e205fde8458a572d14cefe90aef2ba5  libstdc++-v3/testsuite/20_util/function_objects/comparisons_pointer.cc
! ffd96e253416e96c498f55a73aee2e91  libstdc++-v3/testsuite/20_util/function_objects/comparisons_void.cc
! 79268161467b136a4ffb247c65ee8810  libstdc++-v3/testsuite/20_util/function_objects/constexpr.cc
! f9b22f32923a6219a0613caeeb1a68e0  libstdc++-v3/testsuite/20_util/function_objects/dr660.cc
! d3b25a3503669952137a459ca90c74ca  libstdc++-v3/testsuite/20_util/function_objects/invoke/1.cc
! e098884cb1df409060ae830af2961c49  libstdc++-v3/testsuite/20_util/function_objects/invoke/59768.cc
! 84480c0900bd7a216f212f998795b000  libstdc++-v3/testsuite/20_util/function_objects/invoke/ref_ext.cc
! fa4118b09a1aa9aac4076348f0b065a6  libstdc++-v3/testsuite/20_util/function_objects/mem_fn/55463.cc
! bacfdff348eb4427c791c65b14238b57  libstdc++-v3/testsuite/20_util/function_objects/mem_fn/55908.cc
! 2816f534d87c32b791df4140415c2e2a  libstdc++-v3/testsuite/20_util/function_objects/mem_fn/68982.cc
! 88cb707aea07837205d10e7384126ae6  libstdc++-v3/testsuite/20_util/function_objects/mem_fn/80478.cc
! eb1bfb45b88be6c1ab56e4c128b7c13a  libstdc++-v3/testsuite/20_util/function_objects/mem_fn/adl.cc
! 78ea6201823eea5f05323523be9a2285  libstdc++-v3/testsuite/20_util/function_objects/mem_fn/forward.cc
! b861f5f0a1e3b27109fe50e17f21ef2a  libstdc++-v3/testsuite/20_util/function_objects/mem_fn/refqual.cc
! fe3dfd5de8194e60bfa62fb692727f39  libstdc++-v3/testsuite/20_util/function_objects/not_fn/1.cc
! 0744283e0e1595970e24c67d372afc36  libstdc++-v3/testsuite/20_util/function_objects/searchers.cc
! cf214b75b67de2da7bcb7226ba28857a  libstdc++-v3/testsuite/20_util/has_unique_object_representations/requirements/explicit_instantiation.cc
! c0a38d0fcccfac4ead39c9a15fd731d5  libstdc++-v3/testsuite/20_util/has_unique_object_representations/requirements/typedefs.cc
! 4d5e47b3c9f49e9c6b221c827d2ae0e7  libstdc++-v3/testsuite/20_util/has_unique_object_representations/value.cc
! 1500da9efe6818a431cb8f4599257720  libstdc++-v3/testsuite/20_util/has_virtual_destructor/requirements/explicit_instantiation.cc
! 800ed6de517e1581156b46d152a81f5f  libstdc++-v3/testsuite/20_util/has_virtual_destructor/requirements/typedefs.cc
! 22aab5760ee791513dece8cedfe83f8a  libstdc++-v3/testsuite/20_util/has_virtual_destructor/value.cc
! 02eb313d6e9dd13cf1662604c6a6f45a  libstdc++-v3/testsuite/20_util/hash/52931.cc
! c2dc3f28d0935423a6fe187b7bb63966  libstdc++-v3/testsuite/20_util/hash/60970.cc
! 5cff0c5e33300b9f5a3f70e70fb086b7  libstdc++-v3/testsuite/20_util/hash/84998.cc
! b57f09e4d4f0857ef2399e08258f68be  libstdc++-v3/testsuite/20_util/hash/chi2_q_bit_flip_set.cc
! b83eb9b74655ef0695e50e595f19f404  libstdc++-v3/testsuite/20_util/hash/chi2_q_bit_string_set.cc
! d9070e3783eb6f437f00415a8d1f2f25  libstdc++-v3/testsuite/20_util/hash/chi2_q_document_words.cc
! 34ffbffaf02c3db6f2a826eca55a98d9  libstdc++-v3/testsuite/20_util/hash/chi2_q_numeric_pattern_set.cc
! 4067d070eb712e3e5875278767b043f7  libstdc++-v3/testsuite/20_util/hash/chi2_q_uniform_random.cc
! 2fbe7e2f67cdaefc130559d65f898d2a  libstdc++-v3/testsuite/20_util/hash/chi2_quality.h
! fa5771c39209958aaf68eb83dfebc4f5  libstdc++-v3/testsuite/20_util/hash/operators/size_t.cc
! 4fb7d4780acae82094ad9878796c6205  libstdc++-v3/testsuite/20_util/hash/quality.cc
! ba8b9c5be41a37f4d92245fd0eabd4a9  libstdc++-v3/testsuite/20_util/hash/requirements/explicit_instantiation.cc
! 12bb6e9e03de80497467e715f0f91b15  libstdc++-v3/testsuite/20_util/headers/cstdlib/functions_std.cc
! a4d4167c521fa0c94f36def8349880bc  libstdc++-v3/testsuite/20_util/headers/cstring/functions_std.cc
! fbda688506b8e7d8f1b5a7dba11bcf52  libstdc++-v3/testsuite/20_util/headers/cstring/macros.cc
! df58debbc50d56e6a5a20c763384bf03  libstdc++-v3/testsuite/20_util/headers/cstring/types_std.cc
! f6544f82391aa0b882d0b257bcb21fde  libstdc++-v3/testsuite/20_util/headers/ctime/functions_std.cc
! 36b5227c8629be0333f05ae9ead064f3  libstdc++-v3/testsuite/20_util/headers/ctime/macros.cc
! 7eba1e94173f6f844df347695e7a681d  libstdc++-v3/testsuite/20_util/headers/ctime/types_std.cc
! ff0f76599a5727c6317c630ac8393924  libstdc++-v3/testsuite/20_util/headers/functional/synopsis.cc
! 9ed57a120f64a196b579f94b7e194cc6  libstdc++-v3/testsuite/20_util/headers/functional/types_std_c++0x.cc
! adf02853d8159164c0b1f1aaed689b55  libstdc++-v3/testsuite/20_util/headers/functional/using_namespace_std_placeholders.cc
! c8a5be3413a047bb39e52ee881939f23  libstdc++-v3/testsuite/20_util/headers/memory/synopsis.cc
! cda111e5e94cadb587fa327b05e256fe  libstdc++-v3/testsuite/20_util/headers/memory/types_std_c++0x.cc
! c2717f985d6dc06b8ac2883b626cb529  libstdc++-v3/testsuite/20_util/headers/type_traits/std_c++0x_neg.cc
! 74b494a4ef67949d15f714dd4b01b5b3  libstdc++-v3/testsuite/20_util/headers/type_traits/types_std_c++0x.cc
! 8e6e2c09d33b1c9bd8f5ec7173fcd356  libstdc++-v3/testsuite/20_util/headers/type_traits/types_std_c++0x_neg.cc
! a112cb76431ed6face54974a217708e3  libstdc++-v3/testsuite/20_util/headers/utility/synopsis.cc
! 912aa54f130cafb2ed5a005e9f2ee0fb  libstdc++-v3/testsuite/20_util/headers/utility/using_namespace_std_rel_ops.cc
! 092be60cebc9a105a90745561ec21a88  libstdc++-v3/testsuite/20_util/in_place/requirements.cc
! 456172b508cfd4fa560959bd5951808a  libstdc++-v3/testsuite/20_util/integer_sequence/intseq.cc
! 9b5a58755458afd8f2af74ef3341f5a6  libstdc++-v3/testsuite/20_util/integer_sequence/requirements/typedefs.cc
! 7a55aa8e2d4fb523daad53717e8d98ae  libstdc++-v3/testsuite/20_util/integral_constant/call_operator.cc
! 1476e59cc5627a52e6ffae7638d24e7e  libstdc++-v3/testsuite/20_util/integral_constant/operator_value_type.cc
! 39c90d4eecf0805819039106d61c07bd  libstdc++-v3/testsuite/20_util/integral_constant/requirements/constexpr_data.cc
! 249137c4e5ed9c6f6496e05578bb27f6  libstdc++-v3/testsuite/20_util/integral_constant/requirements/explicit_instantiation.cc
! 7fa1b059d6267d68ac9b2885935e067d  libstdc++-v3/testsuite/20_util/integral_constant/requirements/typedefs.cc
! 741d86324bb1be19014d4d7932154515  libstdc++-v3/testsuite/20_util/integral_constant/static_definition.cc
! 39ee46edeceb3811035a3599a841861a  libstdc++-v3/testsuite/20_util/integral_constant/true_false_type_typedefs.cc
! 7608f277af3944857469a602de5082f5  libstdc++-v3/testsuite/20_util/integral_constant/true_false_value.cc
! 236ee2d4729e592ce0afd2594f18cdc2  libstdc++-v3/testsuite/20_util/is_abstract/requirements/explicit_instantiation.cc
! d454e413ccab6d6fd1bcf33b83d323ff  libstdc++-v3/testsuite/20_util/is_abstract/requirements/typedefs.cc
! 180a5a4d8331a3805c50252e72944e11  libstdc++-v3/testsuite/20_util/is_abstract/value.cc
! 3b435899382c7c7aeb3a01609b43e6e9  libstdc++-v3/testsuite/20_util/is_aggregate/requirements/explicit_instantiation.cc
! bc9c54c285430b93359e577696aa52e8  libstdc++-v3/testsuite/20_util/is_aggregate/requirements/typedefs.cc
! 1877a2d2d27d207c1551ee0b7ddff1c5  libstdc++-v3/testsuite/20_util/is_aggregate/value.cc
! 48011aa62b877f68a5df2276608df98c  libstdc++-v3/testsuite/20_util/is_arithmetic/requirements/explicit_instantiation.cc
! 03aa15aae90c3aac1d2a167daca5db34  libstdc++-v3/testsuite/20_util/is_arithmetic/requirements/typedefs.cc
! 59181f1dd69f45ea4b9bf40b674b049b  libstdc++-v3/testsuite/20_util/is_arithmetic/value.cc
! ae1eeeca877cb4aed55663a616342e58  libstdc++-v3/testsuite/20_util/is_array/requirements/explicit_instantiation.cc
! 3c65dbf9176802deaaaacd6e789c7b38  libstdc++-v3/testsuite/20_util/is_array/requirements/typedefs.cc
! 053fe9e7add86cfdf6d28a554816bd92  libstdc++-v3/testsuite/20_util/is_array/value.cc
! a4d6623d247fc3564048d7f27c1697e5  libstdc++-v3/testsuite/20_util/is_assignable/requirements/explicit_instantiation.cc
! 151c0d4f2baa0be72e25b83969d1dacb  libstdc++-v3/testsuite/20_util/is_assignable/requirements/typedefs.cc
! b9a3a0cb30367aa648d5bf4b7504cd8f  libstdc++-v3/testsuite/20_util/is_assignable/value.cc
! 7df775c6f67ca18c2e2ce763ec0884ab  libstdc++-v3/testsuite/20_util/is_base_of/requirements/explicit_instantiation.cc
! dc41f0e9be0d3ef3adadbcc9aeb2e83e  libstdc++-v3/testsuite/20_util/is_base_of/requirements/typedefs.cc
! 3524ddeca6ca7abeae4bf3348dd51859  libstdc++-v3/testsuite/20_util/is_base_of/value.cc
! 57be9c48ecbf3d364f34499232afc851  libstdc++-v3/testsuite/20_util/is_class/requirements/explicit_instantiation.cc
! e6f2b59bb07e72265f2c52aaf92e1e89  libstdc++-v3/testsuite/20_util/is_class/requirements/typedefs.cc
! ea8c57f3453c4ba720130afb557595bc  libstdc++-v3/testsuite/20_util/is_class/value.cc
! 7eacbc6d0054146c13cb83c4dc809974  libstdc++-v3/testsuite/20_util/is_compound/requirements/explicit_instantiation.cc
! 0c5285181cad3f567be1294bde485e15  libstdc++-v3/testsuite/20_util/is_compound/requirements/typedefs.cc
! 92aa237ec56e05438f97f5c75f02ad44  libstdc++-v3/testsuite/20_util/is_compound/value.cc
! f627e27884daf369506125de21f10b01  libstdc++-v3/testsuite/20_util/is_const/requirements/explicit_instantiation.cc
! 62a80d6bb2700e46cb3bd768857fb3d4  libstdc++-v3/testsuite/20_util/is_const/requirements/typedefs.cc
! cdf0df68bbb20cb6c188a5a323afe3cb  libstdc++-v3/testsuite/20_util/is_const/value.cc
! f21105c78078f5daba77231dd4974291  libstdc++-v3/testsuite/20_util/is_constructible/51185.cc
! a5e184714ddd867798fa94c2ebe2c9fe  libstdc++-v3/testsuite/20_util/is_constructible/68430.cc
! 29406f8e2494a7d239b863591cfc4669  libstdc++-v3/testsuite/20_util/is_constructible/77395.cc
! 34bee5445a2e040a512b487bc5f46268  libstdc++-v3/testsuite/20_util/is_constructible/80812.cc
! ee9f238d298fefd12b4b321d39224dd8  libstdc++-v3/testsuite/20_util/is_constructible/requirements/explicit_instantiation.cc
! 28cb77c131abfb3a47871a75d1dbc4f4  libstdc++-v3/testsuite/20_util/is_constructible/requirements/typedefs.cc
! 239da8f9ba7f0a51066686760560f8e7  libstdc++-v3/testsuite/20_util/is_constructible/value-2.cc
! f3b4924bf0f593add6e2b108cc406432  libstdc++-v3/testsuite/20_util/is_constructible/value.cc
! b3ef5ee32480fe6a6f4b26acc5b44c72  libstdc++-v3/testsuite/20_util/is_convertible/requirements/explicit_instantiation.cc
! cd70ec5a9ae06842631fd8fa31348220  libstdc++-v3/testsuite/20_util/is_convertible/requirements/typedefs.cc
! 31fd24a4e5e09b17fe8ac964de567d64  libstdc++-v3/testsuite/20_util/is_convertible/value.cc
! 933d3eafd48f9540a743188058bf6a22  libstdc++-v3/testsuite/20_util/is_copy_assignable/requirements/explicit_instantiation.cc
! 63312408e45f5fa7545a36bfbb4ca651  libstdc++-v3/testsuite/20_util/is_copy_assignable/requirements/typedefs.cc
! 208090ab8f1c321ec8c9057f06f95926  libstdc++-v3/testsuite/20_util/is_copy_assignable/value.cc
! 2740410558f8e5c69783acb050285394  libstdc++-v3/testsuite/20_util/is_copy_constructible/requirements/explicit_instantiation.cc
! 6b970f0c50c3129ee8c33516ca06e5bb  libstdc++-v3/testsuite/20_util/is_copy_constructible/requirements/typedefs.cc
! bc127212fc71d16a83f8dd277d9d2286  libstdc++-v3/testsuite/20_util/is_copy_constructible/value.cc
! ce6191e946d6e8c2707829c222fac733  libstdc++-v3/testsuite/20_util/is_default_constructible/requirements/explicit_instantiation.cc
! fc6fa1ac2b3b46ed747864b880fe1529  libstdc++-v3/testsuite/20_util/is_default_constructible/requirements/typedefs.cc
! 80746c5a9a8bb074a5cc3b28be8d475d  libstdc++-v3/testsuite/20_util/is_default_constructible/value.cc
! 9e366844f4b37e4a2f4eed512be1801b  libstdc++-v3/testsuite/20_util/is_destructible/requirements/explicit_instantiation.cc
! 4f931ec7ae80104f7fdf1120ca1940d4  libstdc++-v3/testsuite/20_util/is_destructible/requirements/typedefs.cc
! 5a57187988c412b935b2a809f8179638  libstdc++-v3/testsuite/20_util/is_destructible/value.cc
! e697d187f440d708155d01bb49a728e5  libstdc++-v3/testsuite/20_util/is_empty/requirements/explicit_instantiation.cc
! da384c4511da42bfc679ef37e1d115ff  libstdc++-v3/testsuite/20_util/is_empty/requirements/typedefs.cc
! 942f84974ac79c7634ea1700b815370f  libstdc++-v3/testsuite/20_util/is_empty/value.cc
! c5681d3894805a6650fd0773eb02c610  libstdc++-v3/testsuite/20_util/is_enum/requirements/explicit_instantiation.cc
! 7e91c5dd7058cfc8e64d29b8946028cb  libstdc++-v3/testsuite/20_util/is_enum/requirements/typedefs.cc
! 523a1b9e486b054d61a342ea21c41dfe  libstdc++-v3/testsuite/20_util/is_enum/value.cc
! f56afb8bcd43bbb04638b7fa1f59f8d8  libstdc++-v3/testsuite/20_util/is_final/requirements/explicit_instantiation.cc
! c5f44dc00fe99eb6cb78916731c89d47  libstdc++-v3/testsuite/20_util/is_final/requirements/typedefs.cc
! 0e00d075bf649990044e7b36e43ed551  libstdc++-v3/testsuite/20_util/is_final/value.cc
! 67f8f9018bfec9c2db2fcc93d38e56a0  libstdc++-v3/testsuite/20_util/is_floating_point/requirements/explicit_instantiation.cc
! 0b8a796eb5f68044fa38ffc45c1a0dfd  libstdc++-v3/testsuite/20_util/is_floating_point/requirements/typedefs.cc
! bf1a35c58e6ed8156b794b82ee989b47  libstdc++-v3/testsuite/20_util/is_floating_point/value.cc
! f7b3ad82ecaa80f692a011f7fd85ca30  libstdc++-v3/testsuite/20_util/is_function/24808.cc
! 4a9f355aeb46878de913e90473e3ff80  libstdc++-v3/testsuite/20_util/is_function/35637.cc
! 68aa92206361b58f9f49a68eeae61a3b  libstdc++-v3/testsuite/20_util/is_function/requirements/explicit_instantiation.cc
! 57f201cc6c8ba9a73b02573cacfc16fc  libstdc++-v3/testsuite/20_util/is_function/requirements/typedefs.cc
! 68e133ab13f07f81dc04c1e4e252489e  libstdc++-v3/testsuite/20_util/is_function/value.cc
! 4bc48de4f4fbb72ed135dd269cbe0d12  libstdc++-v3/testsuite/20_util/is_fundamental/requirements/explicit_instantiation.cc
! 003385b37ab32f1973711fd3fec71cd7  libstdc++-v3/testsuite/20_util/is_fundamental/requirements/typedefs.cc
! 7916250813b5499d694d38213e0e593a  libstdc++-v3/testsuite/20_util/is_fundamental/value.cc
! c24c6743498626c20c6f04257d571e97  libstdc++-v3/testsuite/20_util/is_implicitly_default_constructible/requirements/explicit_instantiation.cc
! 6d5b538c0571b0243eb81b33b280cda0  libstdc++-v3/testsuite/20_util/is_implicitly_default_constructible/requirements/typedefs.cc
! 2ff73b2381fffe63e746d3261e5f2ef7  libstdc++-v3/testsuite/20_util/is_implicitly_default_constructible/value.cc
! e164e6edd082eb9384a257b4e1bc2fc9  libstdc++-v3/testsuite/20_util/is_integral/requirements/explicit_instantiation.cc
! 7711e58618ad70efdb97540603f7df2f  libstdc++-v3/testsuite/20_util/is_integral/requirements/typedefs.cc
! 835245f2892d677691e8803fe5310237  libstdc++-v3/testsuite/20_util/is_integral/value.cc
! 7aec4eb77c46d966853a542aa5968c94  libstdc++-v3/testsuite/20_util/is_invocable/83395.cc
! 7d36d2eb1653c7a5931eefb1a6036951  libstdc++-v3/testsuite/20_util/is_invocable/requirements/explicit_instantiation.cc
! 929800a2e71873b4182320af02d191ba  libstdc++-v3/testsuite/20_util/is_invocable/requirements/explicit_instantiation_ext.cc
! c3412acb6d81eaa9806700d540c155b3  libstdc++-v3/testsuite/20_util/is_invocable/requirements/typedefs.cc
! 16aed32557faa0305610d7a8f2860453  libstdc++-v3/testsuite/20_util/is_invocable/requirements/typedefs_ext.cc
! 7f2157dcaf87ff286470a7ad78b0e3f5  libstdc++-v3/testsuite/20_util/is_invocable/value.cc
! c2a70dc82b13be3d8af38b62668f5ccc  libstdc++-v3/testsuite/20_util/is_invocable/value_ext.cc
! e3e8564d02f2157ee08149d84a425bf8  libstdc++-v3/testsuite/20_util/is_literal_type/requirements/explicit_instantiation.cc
! c10ed9c07ae7bfd79978d7fd5fb88e40  libstdc++-v3/testsuite/20_util/is_literal_type/requirements/typedefs.cc
! cf170e81b274ac0260e14ebb560bfcfa  libstdc++-v3/testsuite/20_util/is_literal_type/value.cc
! 8b81f5c930d119f0d5afb8c6f5c48abb  libstdc++-v3/testsuite/20_util/is_lvalue_reference/requirements/explicit_instantiation.cc
! 23148ae007788ed8f76a3f935c1e9fa3  libstdc++-v3/testsuite/20_util/is_lvalue_reference/requirements/typedefs.cc
! f5977106d75319039a39072fbca9d40f  libstdc++-v3/testsuite/20_util/is_lvalue_reference/value.cc
! 643cc3cdd3c9a942fd66f10301c152d7  libstdc++-v3/testsuite/20_util/is_member_function_pointer/requirements/explicit_instantiation.cc
! 1d5b4aaf1a813f6d926cb88ee73e84d0  libstdc++-v3/testsuite/20_util/is_member_function_pointer/requirements/typedefs.cc
! 2455a351ae1be1b2582014d6eb4062d7  libstdc++-v3/testsuite/20_util/is_member_function_pointer/value.cc
! 4de4546ac29bf0f7fb4985b243fdebdc  libstdc++-v3/testsuite/20_util/is_member_object_pointer/requirements/explicit_instantiation.cc
! 36a12fe05536bed850bada778d6ba072  libstdc++-v3/testsuite/20_util/is_member_object_pointer/requirements/typedefs.cc
! eb1414358ecaafacfebc353fcce0c5a8  libstdc++-v3/testsuite/20_util/is_member_object_pointer/value.cc
! 517a905b7ca9fa0da8a7b0d5b124344f  libstdc++-v3/testsuite/20_util/is_member_pointer/requirements/explicit_instantiation.cc
! 824b6dddc82dba1f7c896e3f25e34fcb  libstdc++-v3/testsuite/20_util/is_member_pointer/requirements/typedefs.cc
! c7ea69820dcca6e2702edf740592c394  libstdc++-v3/testsuite/20_util/is_member_pointer/value.cc
! 828bcf78eb22260eda1a645ff1a37524  libstdc++-v3/testsuite/20_util/is_move_assignable/requirements/explicit_instantiation.cc
! 7dcd894bfd8aae817e7984120e82d1bf  libstdc++-v3/testsuite/20_util/is_move_assignable/requirements/typedefs.cc
! 0bafa28f4c0daba2563664cd04195676  libstdc++-v3/testsuite/20_util/is_move_assignable/value.cc
! bb5c9b6de5ae49b47f4203bb205b6dcb  libstdc++-v3/testsuite/20_util/is_move_constructible/requirements/explicit_instantiation.cc
! 8fcbafec50594f58aae7f5d800b6ce8c  libstdc++-v3/testsuite/20_util/is_move_constructible/requirements/typedefs.cc
! eea04d1d9ea560b3683eafece00cc0c5  libstdc++-v3/testsuite/20_util/is_move_constructible/value.cc
! 8c72c05a53769c15ac269009a8a44356  libstdc++-v3/testsuite/20_util/is_nothrow_assignable/requirements/explicit_instantiation.cc
! f9f2e7bd7de298a151307dcc39d849a5  libstdc++-v3/testsuite/20_util/is_nothrow_assignable/requirements/typedefs.cc
! 630a97829b8d0c7da360677aceb5534f  libstdc++-v3/testsuite/20_util/is_nothrow_assignable/value.cc
! 48b317fcd0be4acea70be2d901fc95ea  libstdc++-v3/testsuite/20_util/is_nothrow_constructible/requirements/explicit_instantiation.cc
! 4cc3b807838577b11f9c05cfdd333ab7  libstdc++-v3/testsuite/20_util/is_nothrow_constructible/requirements/typedefs.cc
! 709997ba87245b99a6389c3d863d24b2  libstdc++-v3/testsuite/20_util/is_nothrow_constructible/value.cc
! e8ec0bdc758b245a2cc89b1727e63af1  libstdc++-v3/testsuite/20_util/is_nothrow_copy_assignable/requirements/explicit_instantiation.cc
! 5bd4a163eb782a632834e6cd567c5331  libstdc++-v3/testsuite/20_util/is_nothrow_copy_assignable/requirements/typedefs.cc
! f778d6ce0f5472327c7232619e00ad1d  libstdc++-v3/testsuite/20_util/is_nothrow_copy_assignable/value.cc
! 54da70644db85057e4108d95e7e29de1  libstdc++-v3/testsuite/20_util/is_nothrow_copy_constructible/requirements/explicit_instantiation.cc
! 281cdae88eac8f281040c242bf12a24c  libstdc++-v3/testsuite/20_util/is_nothrow_copy_constructible/requirements/typedefs.cc
! 2555a95dcc6e40d7010601c9bf13557d  libstdc++-v3/testsuite/20_util/is_nothrow_copy_constructible/value.cc
! 982a05162a293c92105d9856d309eb28  libstdc++-v3/testsuite/20_util/is_nothrow_default_constructible/requirements/explicit_instantiation.cc
! c6cb4f2b8d52b4fa40deb7de9c33ae8e  libstdc++-v3/testsuite/20_util/is_nothrow_default_constructible/requirements/typedefs.cc
! 35412a0fea87f16e9f82adc04c196321  libstdc++-v3/testsuite/20_util/is_nothrow_default_constructible/value.cc
! 7839b6296fc5d7c58b63f4a75720d0fb  libstdc++-v3/testsuite/20_util/is_nothrow_destructible/requirements/explicit_instantiation.cc
! 0748a081dccba1140b4bc5b777e5aae0  libstdc++-v3/testsuite/20_util/is_nothrow_destructible/requirements/typedefs.cc
! 0eeff92df1d9a8911c553f6cd1d23ec5  libstdc++-v3/testsuite/20_util/is_nothrow_destructible/value.cc
! 4c28e7d14f7f14674ad77916a6843015  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/83395.cc
! 25baf9f50323753e10151203ce3cc651  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/requirements/explicit_instantiation.cc
! f7b131d81bcf74d7bac7f77161e2230b  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/requirements/explicit_instantiation_ext.cc
! 0fac290cf59185c0930c249dc1dedaf1  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/requirements/typedefs.cc
! ef86e41f91053adf190cf1a1e10dad79  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/requirements/typedefs_ext.cc
! 7c3d1231001023333290ff7dc1a34e5e  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/value.cc
! 6542600f8d8e44db336a2da4ce2d0583  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/value_ext.cc
! 5678e84f30bc3374f6270dab990cd7e2  libstdc++-v3/testsuite/20_util/is_nothrow_move_assignable/requirements/explicit_instantiation.cc
! 99b6db1eb0ad0964623487177eaec29f  libstdc++-v3/testsuite/20_util/is_nothrow_move_assignable/requirements/typedefs.cc
! 6592b128405455e996252e75f0caf9e0  libstdc++-v3/testsuite/20_util/is_nothrow_move_assignable/value.cc
! cd944d4bd04a238fa2bedcf85bd46346  libstdc++-v3/testsuite/20_util/is_nothrow_move_constructible/requirements/explicit_instantiation.cc
! 6a831b9317719a5bb7b734189b5e76bc  libstdc++-v3/testsuite/20_util/is_nothrow_move_constructible/requirements/typedefs.cc
! a6f4880468f0e7cd90c5ec06f2ac7a6d  libstdc++-v3/testsuite/20_util/is_nothrow_move_constructible/value.cc
! fa9430795957174e8df688848a0d28d8  libstdc++-v3/testsuite/20_util/is_nothrow_swappable/requirements/explicit_instantiation.cc
! 4f1746f9f46558d35f2afda2319fad40  libstdc++-v3/testsuite/20_util/is_nothrow_swappable/requirements/explicit_instantiation_ext.cc
! 7375f8d53a9a67e8001021e0f0b3273b  libstdc++-v3/testsuite/20_util/is_nothrow_swappable/requirements/typedefs.cc
! 2ec4ac97953de56dcc88f7ce9e4b56b7  libstdc++-v3/testsuite/20_util/is_nothrow_swappable/requirements/typedefs_ext.cc
! 218fd36ed37a2d2d1cd1f8b83c7c3097  libstdc++-v3/testsuite/20_util/is_nothrow_swappable/value.cc
! ff3f8f362bda091185662ca09909a092  libstdc++-v3/testsuite/20_util/is_nothrow_swappable/value.h
! de637229fa8a23d3e4791c50a5de5d20  libstdc++-v3/testsuite/20_util/is_nothrow_swappable/value_ext.cc
! 95d44799eb8a5d68ff8a5c77e8c1f099  libstdc++-v3/testsuite/20_util/is_nothrow_swappable_with/requirements/explicit_instantiation.cc
! 9291da0ad9d836cb43a1bbf382e9202e  libstdc++-v3/testsuite/20_util/is_nothrow_swappable_with/requirements/typedefs.cc
! 0d95b29a3b3724d6f62d922e53479481  libstdc++-v3/testsuite/20_util/is_nothrow_swappable_with/value.cc
! d74536ad5cb5d8466f273e631e6be9b0  libstdc++-v3/testsuite/20_util/is_null_pointer/requirements/explicit_instantiation.cc
! fe3cb0f4f89a6c5870db3c4707edf694  libstdc++-v3/testsuite/20_util/is_null_pointer/requirements/typedefs.cc
! c318d5b7e05af505d2dc236a5e2828f1  libstdc++-v3/testsuite/20_util/is_null_pointer/value.cc
! 86e242c3fe12c5be8dfd92b9ac26ca1f  libstdc++-v3/testsuite/20_util/is_object/24808.cc
! e38fb176e5e5d56da8e0441c4d11a943  libstdc++-v3/testsuite/20_util/is_object/requirements/explicit_instantiation.cc
! fb1b89b9c9f5b83e25c7b49c175a7f0f  libstdc++-v3/testsuite/20_util/is_object/requirements/typedefs.cc
! 4b37f4ca7cc07157416a46563cccc4fd  libstdc++-v3/testsuite/20_util/is_object/value.cc
! e160673c7dc0980662a8911747570ca3  libstdc++-v3/testsuite/20_util/is_pod/requirements/explicit_instantiation.cc
! a381286fa346cf0cf34da6b4e549d6f2  libstdc++-v3/testsuite/20_util/is_pod/requirements/typedefs.cc
! b8ea792d4edc7505e70f500e0a698f5d  libstdc++-v3/testsuite/20_util/is_pod/value.cc
! 3e8083c1970a93059b994ce48c3392df  libstdc++-v3/testsuite/20_util/is_pointer/requirements/explicit_instantiation.cc
! 2e796d6eedbd3b08881d78b1c8b1de4e  libstdc++-v3/testsuite/20_util/is_pointer/value.cc
! 58cf430fea250b817862b913c46d05e6  libstdc++-v3/testsuite/20_util/is_polymorphic/requirements/explicit_instantiation.cc
! 2ca6c23818e872dd1399d1ac4a0c2296  libstdc++-v3/testsuite/20_util/is_polymorphic/requirements/typedefs.cc
! 42e8c3afcf54254129438858e481abd7  libstdc++-v3/testsuite/20_util/is_polymorphic/value.cc
! 6f74521adee329bcd867cb6ec591bd24  libstdc++-v3/testsuite/20_util/is_reference/requirements/explicit_instantiation.cc
! abd28382ae175979d7afc00c7180862a  libstdc++-v3/testsuite/20_util/is_reference/requirements/typedefs.cc
! f0d304984b88e7798334f701247fe83b  libstdc++-v3/testsuite/20_util/is_reference/value.cc
! 3d79afdf23efcd69c4db029891a1d22f  libstdc++-v3/testsuite/20_util/is_rvalue_reference/requirements/explicit_instantiation.cc
! e41052e0ff7ec7f0d452e6a3b2bd3b0d  libstdc++-v3/testsuite/20_util/is_rvalue_reference/requirements/typedefs.cc
! 080d436b49a31e44c9bc1d6a3be5f6f6  libstdc++-v3/testsuite/20_util/is_rvalue_reference/value.cc
! ca568e7bf3ef5eeba200afeac1d5f6ba  libstdc++-v3/testsuite/20_util/is_same/requirements/explicit_instantiation.cc
! 12edb35a7c846f29cf32c03940b7aea9  libstdc++-v3/testsuite/20_util/is_same/requirements/typedefs.cc
! 0b4992bda090e7a4482afc3f2d51dc4c  libstdc++-v3/testsuite/20_util/is_same/value.cc
! 8df2007c5b8f5ff42a48cb6304098246  libstdc++-v3/testsuite/20_util/is_scalar/requirements/explicit_instantiation.cc
! 64691fc5e7edff973757439d02690ce4  libstdc++-v3/testsuite/20_util/is_scalar/requirements/typedefs.cc
! d0d999558d00e0d852f11fa11333b888  libstdc++-v3/testsuite/20_util/is_scalar/value.cc
! 471bfe406f2dfa4ff68ea4bc4dfdd5bb  libstdc++-v3/testsuite/20_util/is_signed/requirements/explicit_instantiation.cc
! 50bc03102184b112fb7ff3fe09538e0c  libstdc++-v3/testsuite/20_util/is_signed/requirements/typedefs.cc
! e874c13354b0e381a472d1635e919fae  libstdc++-v3/testsuite/20_util/is_signed/value.cc
! 95db758ace2ae1a7f0dd727f4f6e1748  libstdc++-v3/testsuite/20_util/is_standard_layout/requiremenents/explicit_instantiation.cc
! 7181cb44325fe4b350a6c13ea54078a9  libstdc++-v3/testsuite/20_util/is_standard_layout/requiremenents/typedefs.cc
! 46d179e1d12d82a65f0560c94c2e4503  libstdc++-v3/testsuite/20_util/is_standard_layout/value.cc
! 62a25676594baee36540a51c47aeb4cb  libstdc++-v3/testsuite/20_util/is_swappable/requirements/explicit_instantiation.cc
! df8e829fd55b07063df77f4858220be6  libstdc++-v3/testsuite/20_util/is_swappable/requirements/explicit_instantiation_ext.cc
! 82beaf44c169f4566e0feba539421d0e  libstdc++-v3/testsuite/20_util/is_swappable/requirements/typedefs.cc
! 6bf8b54edcb5541fc6aa6aec16f85a1c  libstdc++-v3/testsuite/20_util/is_swappable/requirements/typedefs_ext.cc
! 36ceb00ce99ce47eb2e33f3dea35d836  libstdc++-v3/testsuite/20_util/is_swappable/value.cc
! fcdba4643fcdbdc5b04b13425b1758e1  libstdc++-v3/testsuite/20_util/is_swappable/value.h
! 2877c445ae59ccb89116030c7e42bdc5  libstdc++-v3/testsuite/20_util/is_swappable/value_ext.cc
! dc4165f10e8861870eac59bb4d71dd9c  libstdc++-v3/testsuite/20_util/is_swappable_with/requirements/explicit_instantiation.cc
! 171b86038caf6a35d19153811cc6925e  libstdc++-v3/testsuite/20_util/is_swappable_with/requirements/typedefs.cc
! 6d0c2ca0f21376aea1b2f8c7f3e55225  libstdc++-v3/testsuite/20_util/is_swappable_with/value.cc
! 7c3d086c7b3c6891a154925171fe1a01  libstdc++-v3/testsuite/20_util/is_trivial/requirements/explicit_instantiation.cc
! daa036deb352fff3ac50aa5ee4fab46f  libstdc++-v3/testsuite/20_util/is_trivial/requirements/typedefs.cc
! 1ebf5aa690fc80a33f438aae8b7ac1e9  libstdc++-v3/testsuite/20_util/is_trivial/value.cc
! fc9d143d5881171177ffadfcef2a67e0  libstdc++-v3/testsuite/20_util/is_trivially_assignable/requirements/explicit_instantiation.cc
! e1993f7ba83873b0bc325ab53d7945a5  libstdc++-v3/testsuite/20_util/is_trivially_assignable/requirements/typedefs.cc
! 3676d3b93dede30cd71d29ddee2da137  libstdc++-v3/testsuite/20_util/is_trivially_assignable/value.cc
! 5449805a77d02588c19c8ce49b897721  libstdc++-v3/testsuite/20_util/is_trivially_constructible/requirements/explicit_instantiation.cc
! b51a3623284386948e01231b23c4ef38  libstdc++-v3/testsuite/20_util/is_trivially_constructible/requirements/typedefs.cc
! a80573c629297d63ccc72efcd661b503  libstdc++-v3/testsuite/20_util/is_trivially_constructible/value.cc
! bd8a59605dcba36e84a77e314311784f  libstdc++-v3/testsuite/20_util/is_trivially_copy_assignable/requirements/explicit_instantiation.cc
! a9944cb6258882c860bb9b3be6a11c4b  libstdc++-v3/testsuite/20_util/is_trivially_copy_assignable/requirements/typedefs.cc
! cb9579523ffa9c296b89783726f12d16  libstdc++-v3/testsuite/20_util/is_trivially_copy_assignable/value.cc
! 81d42c06b70e47b5d6e41c65440d294a  libstdc++-v3/testsuite/20_util/is_trivially_copy_constructible/requirements/explicit_instantiation.cc
! 1dcb73b56b422ca04ffc8db12a72d54b  libstdc++-v3/testsuite/20_util/is_trivially_copy_constructible/requirements/typedefs.cc
! 02a99aa7c964467958075276a716677d  libstdc++-v3/testsuite/20_util/is_trivially_copy_constructible/value.cc
! d6d497226001b84e608e9ad011d12b2b  libstdc++-v3/testsuite/20_util/is_trivially_copyable/requirements/explicit_instantiation.cc
! 54bde5b5daccfc8ca46f5cfbd8feeb6f  libstdc++-v3/testsuite/20_util/is_trivially_copyable/requirements/typedefs.cc
! d8bd2e65a1413c61a4179037f30e0405  libstdc++-v3/testsuite/20_util/is_trivially_copyable/value.cc
! c26f9cd364efb1be39a4c57ec5999a52  libstdc++-v3/testsuite/20_util/is_trivially_default_constructible/requirements/explicit_instantiation.cc
! 4df7a1bc5c3761cbdb938eaac8a774d9  libstdc++-v3/testsuite/20_util/is_trivially_default_constructible/requirements/typedefs.cc
! e280e832a0a51788f3df8403c161fe48  libstdc++-v3/testsuite/20_util/is_trivially_default_constructible/value.cc
! e922716c292da2ea6cf386549d32c0bc  libstdc++-v3/testsuite/20_util/is_trivially_destructible/requirements/explicit_instantiation.cc
! 0b84ac5f5cc1c0b0367832c8bdb9087c  libstdc++-v3/testsuite/20_util/is_trivially_destructible/requirements/typedefs.cc
! 04d79d317e28dc93cf7112d85d0dbba0  libstdc++-v3/testsuite/20_util/is_trivially_destructible/value.cc
! e15648c26b8c8193b59456b2c20552e3  libstdc++-v3/testsuite/20_util/is_trivially_move_assignable/requirements/explicit_instantiation.cc
! d28ff2bcfafdb1ece94b7a1d057a2742  libstdc++-v3/testsuite/20_util/is_trivially_move_assignable/requirements/typedefs.cc
! ea79e884331473992dfab8c92c092c1b  libstdc++-v3/testsuite/20_util/is_trivially_move_assignable/value.cc
! d979f21e23e385f82691907b42dec36d  libstdc++-v3/testsuite/20_util/is_trivially_move_constructible/requirements/explicit_instantiation.cc
! 7236923565620915094985f7b4146a58  libstdc++-v3/testsuite/20_util/is_trivially_move_constructible/requirements/typedefs.cc
! 5e15d11b26e7ee66764e36407a0abf09  libstdc++-v3/testsuite/20_util/is_trivially_move_constructible/value.cc
! 98e5c3e98248492cd5239841c14b101f  libstdc++-v3/testsuite/20_util/is_union/requirements/explicit_instantiation.cc
! e98c72ecf73ad19ac0788335c8208f08  libstdc++-v3/testsuite/20_util/is_union/requirements/typedefs.cc
! 70ece513454d72bebcb8158d04a3f424  libstdc++-v3/testsuite/20_util/is_union/value.cc
! 38e89d2e4d33fd6c8426880f83d94088  libstdc++-v3/testsuite/20_util/is_unsigned/requirements/explicit_instantiation.cc
! 9429edca95b07f872cbabaad02327bf8  libstdc++-v3/testsuite/20_util/is_unsigned/requirements/typedefs.cc
! ef19b731ecf0948d508e7b60c7e1603d  libstdc++-v3/testsuite/20_util/is_unsigned/value.cc
! 0d8b4b22b6662650074dc4acc9b05217  libstdc++-v3/testsuite/20_util/is_void/requirements/explicit_instantiation.cc
! c815a7cb7b8d2a9c3f62b390538b4300  libstdc++-v3/testsuite/20_util/is_void/requirements/typedefs.cc
! 45346d258f63a3eb8ea32fc7c95c444f  libstdc++-v3/testsuite/20_util/is_void/value.cc
! c084d38b919177db7066587130cef88e  libstdc++-v3/testsuite/20_util/is_volatile/requirements/explicit_instantiation.cc
! 661752d74d92c79e2d4f87e45a78e5c5  libstdc++-v3/testsuite/20_util/is_volatile/requirements/typedefs.cc
! 2581c0622847d0df0dfe84f9ea8be179  libstdc++-v3/testsuite/20_util/is_volatile/value.cc
! 0d34a1dc0a7bf35ca3b23bdedd5072d0  libstdc++-v3/testsuite/20_util/logical_traits/83134.cc
! d9586a7a370d0cabea738d3bd08ea0f9  libstdc++-v3/testsuite/20_util/logical_traits/requirements/explicit_instantiation.cc
! d071589023d58a7838d2388e1bc245ce  libstdc++-v3/testsuite/20_util/logical_traits/requirements/typedefs.cc
! eac9bb608fe6f68713369cef995006c5  libstdc++-v3/testsuite/20_util/logical_traits/value.cc
! 8212c2a61451881f26305e724528a748  libstdc++-v3/testsuite/20_util/make_signed/requirements/alias_decl.cc
! 3d362a178215cff94b329d01d721d9c1  libstdc++-v3/testsuite/20_util/make_signed/requirements/explicit_instantiation.cc
! 8f9303cd94c76c601b87798e2acd4c82  libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-1.cc
! 80425e7dc7f243cf672aa66b8231787b  libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-2.cc
! 092dfb77e4dd4aa50b462f007a14e0c0  libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-3.cc
! 7e4877643842e56ead973d53d8ae2d10  libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-4.cc
! bc5e6303f00c0d3472804ceade61bbf1  libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs_neg.cc
! e041da95412c01ac86346450073b471d  libstdc++-v3/testsuite/20_util/make_unsigned/requirements/alias_decl.cc
! 1d6556dadf15b1a6241fdb16d557ba8b  libstdc++-v3/testsuite/20_util/make_unsigned/requirements/explicit_instantiation.cc
! a5a209c373e1fc273776390d925286f8  libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-1.cc
! 432f526b7797ab5ec7f988ea11e1c417  libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-2.cc
! 544eaeec0157f18c5fa3586d5c7aeda4  libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-3.cc
! d3dd06a2886bb439460c44eef25006b8  libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc
! 35164e07b784b24b74d3ee14234d82c0  libstdc++-v3/testsuite/20_util/move/1.cc
! 34240e65fa0ff55f073453c282815529  libstdc++-v3/testsuite/20_util/move/requirements/explicit_instantiation.cc
! c20429cd89f2d8737a1500d634a6762a  libstdc++-v3/testsuite/20_util/move_if_noexcept/1.cc
! 30df1f3b34821db203ac726f3f464e8f  libstdc++-v3/testsuite/20_util/move_if_noexcept/constexpr.cc
! 3078dd917b411d5c6f07a8c29a273151  libstdc++-v3/testsuite/20_util/move_if_noexcept/requirements/explicit_instantiation.cc
! 62cb9cd5331688915abd10542b7af219  libstdc++-v3/testsuite/20_util/optional/77288.cc
! 581a6c7ed9c39e6fa39ac75492aaa3df  libstdc++-v3/testsuite/20_util/optional/84601.cc
! abe59eaa4d20bec7c60895ea85b24e4c  libstdc++-v3/testsuite/20_util/optional/assignment/1.cc
! 54f51d6c26273a41cecc031fb54d59e3  libstdc++-v3/testsuite/20_util/optional/assignment/2.cc
! 9e461583fdebef8a03a9d9a0cad9b523  libstdc++-v3/testsuite/20_util/optional/assignment/3.cc
! 1c348830b4180d2c82ddf41bde791f1d  libstdc++-v3/testsuite/20_util/optional/assignment/4.cc
! 5c5247e4e0c3841f1ce7b965a7b9eed2  libstdc++-v3/testsuite/20_util/optional/assignment/5.cc
! 56a3b16eacec9514647845041cb42bc1  libstdc++-v3/testsuite/20_util/optional/assignment/6.cc
! 36e8e862d3a00ba0bad7000f462e7d4b  libstdc++-v3/testsuite/20_util/optional/assignment/7.cc
! 10ed24299b1d5b0400a2e7070a8f6970  libstdc++-v3/testsuite/20_util/optional/assignment/8.cc
! c23cfe0c0c049e218299b1cbb7e264aa  libstdc++-v3/testsuite/20_util/optional/cons/77727.cc
! d919c886aa70fc51b7eb55975c3ea25c  libstdc++-v3/testsuite/20_util/optional/cons/copy.cc
! 81ebb6cb30418f65a76c67e4d716b420  libstdc++-v3/testsuite/20_util/optional/cons/deduction.cc
! e4db08d573e709f085567fd5df383580  libstdc++-v3/testsuite/20_util/optional/cons/default.cc
! a50bfa6946d9e7cc01ed14028ff981f3  libstdc++-v3/testsuite/20_util/optional/cons/move.cc
! 329472a14ed0a62a5d63a6d722b9d739  libstdc++-v3/testsuite/20_util/optional/cons/trivial.cc
! 3acc0cc842fd1bec95079502a7eadf37  libstdc++-v3/testsuite/20_util/optional/cons/value.cc
! 95acef512b059b9d011c814da5b8b073  libstdc++-v3/testsuite/20_util/optional/cons/value_neg.cc
! f0de7c991a99465c95dddaaea50154a1  libstdc++-v3/testsuite/20_util/optional/constexpr/cons/default.cc
! d47821825112b81dbfdb430534cb31fb  libstdc++-v3/testsuite/20_util/optional/constexpr/cons/value.cc
! 82799de76fe93ad1f5322e7d9eb567c2  libstdc++-v3/testsuite/20_util/optional/constexpr/in_place.cc
! c0e1b293aaefc3b0ee8098fa1bc758d7  libstdc++-v3/testsuite/20_util/optional/constexpr/make_optional.cc
! 7b2fc344ec467e2965baf4618bae3247  libstdc++-v3/testsuite/20_util/optional/constexpr/nullopt.cc
! dc4e6ac4c094dbcf83f1f12e9b8c8023  libstdc++-v3/testsuite/20_util/optional/constexpr/observers/1.cc
! 09175ba95eced101e7be251cf2678168  libstdc++-v3/testsuite/20_util/optional/constexpr/observers/2.cc
! 6a4f8534150351919cabaef08e105b62  libstdc++-v3/testsuite/20_util/optional/constexpr/observers/3.cc
! 46bf1d9af774a1f6b654420bb614845b  libstdc++-v3/testsuite/20_util/optional/constexpr/observers/4.cc
! c00fff8e62f8953fe5486158c51074c8  libstdc++-v3/testsuite/20_util/optional/constexpr/observers/5.cc
! f242602d013cb71a054abd4c5e455607  libstdc++-v3/testsuite/20_util/optional/constexpr/relops/1.cc
! cc6a00e5c60d2b53003fac8d3881c3bb  libstdc++-v3/testsuite/20_util/optional/constexpr/relops/2.cc
! 6265e2db3adb1787cd2703492d2e7d75  libstdc++-v3/testsuite/20_util/optional/constexpr/relops/3.cc
! c842de80147f72a90b4341a5485fee42  libstdc++-v3/testsuite/20_util/optional/constexpr/relops/4.cc
! 7ae706f80215751c0ca1017310a596d6  libstdc++-v3/testsuite/20_util/optional/constexpr/relops/5.cc
! cf77f78604b6146e6bdc4ce0edc3f7da  libstdc++-v3/testsuite/20_util/optional/constexpr/relops/6.cc
! 1f2455d16fb9f2af83c1ce0daf9caacd  libstdc++-v3/testsuite/20_util/optional/hash.cc
! 3f19d06f254c3f5765d08b6ae93c027e  libstdc++-v3/testsuite/20_util/optional/in_place.cc
! 4402447d3826eebedbb856e7c2727dd4  libstdc++-v3/testsuite/20_util/optional/make_optional.cc
! 058c23759819ecb7d441cdb1820e94d7  libstdc++-v3/testsuite/20_util/optional/nullopt.cc
! f37ef6d81000bb0a530a664a91842d4a  libstdc++-v3/testsuite/20_util/optional/observers/1.cc
! 94b5b142265de4cda53f6171a5cbe369  libstdc++-v3/testsuite/20_util/optional/observers/2.cc
! 4c29d80534358c9f991791734a4b9795  libstdc++-v3/testsuite/20_util/optional/observers/3.cc
! 0f9f503e3ba553218f6629f2804820aa  libstdc++-v3/testsuite/20_util/optional/observers/4.cc
! 8796bef4e2f03df43bc996fed54c72c6  libstdc++-v3/testsuite/20_util/optional/observers/5.cc
! bbfbbbbd09733cba96822ac4d7dedd1c  libstdc++-v3/testsuite/20_util/optional/observers/6.cc
! 166d2606eaaee19dbf8d2f00f847b8fa  libstdc++-v3/testsuite/20_util/optional/relops/1.cc
! 57fdd3d847ba124a4ffafe5089704738  libstdc++-v3/testsuite/20_util/optional/relops/2.cc
! 72ca6a728d542dc09abd8e27807dbd29  libstdc++-v3/testsuite/20_util/optional/relops/3.cc
! 699dfceb298629c5c1a9e2806b32e539  libstdc++-v3/testsuite/20_util/optional/relops/4.cc
! 1794d9cd06e4aad1c5a5d0390e65d72b  libstdc++-v3/testsuite/20_util/optional/relops/5.cc
! 3ea96def242c2c573b463817bffeebb0  libstdc++-v3/testsuite/20_util/optional/relops/6.cc
! d08f8f9d794b19a0c6c08efe36205058  libstdc++-v3/testsuite/20_util/optional/relops/7.cc
! 472ef880b49268c0d47f91b940d82427  libstdc++-v3/testsuite/20_util/optional/requirements.cc
! 4f75c2d586e699e0a1b80f583e4b5ff0  libstdc++-v3/testsuite/20_util/optional/swap/1.cc
! c6f32bfd5ef7c48c58e05c7309665691  libstdc++-v3/testsuite/20_util/optional/swap/2.cc
! edba2bb054867856e509af0a8df07801  libstdc++-v3/testsuite/20_util/optional/typedefs.cc
! e449097ccffeda83d506f4e418076db8  libstdc++-v3/testsuite/20_util/owner_less/cmp.cc
! 0517b411fe0079171716acc37e9c83e7  libstdc++-v3/testsuite/20_util/owner_less/noexcept.cc
! b4dc54e004dea2c1b9c958dd5f98dcbe  libstdc++-v3/testsuite/20_util/owner_less/void.cc
! eb79c1e338cf535178e4eda7949fa7ee  libstdc++-v3/testsuite/20_util/pair/1.cc
! bdf563aa08ac3416201beea418e7c8e8  libstdc++-v3/testsuite/20_util/pair/2.cc
! 27e52fd35e8b30e1dd422dd81241b750  libstdc++-v3/testsuite/20_util/pair/3.cc
! 48fba2dddd02e4c8a7ab71fc40a2dadc  libstdc++-v3/testsuite/20_util/pair/4.cc
! d89000c5cac667acd0f9e2751c00865d  libstdc++-v3/testsuite/20_util/pair/40925.cc
! e856195f5987232a5339adadadaa8eed  libstdc++-v3/testsuite/20_util/pair/44487.cc
! f6cf991eb969ab49fded752257766bd2  libstdc++-v3/testsuite/20_util/pair/70437.cc
! 60cfedf36b9347fb1f415627c000ab67  libstdc++-v3/testsuite/20_util/pair/79141.cc
! 82bb192d1ce86d04ec1e05bc41ef3609  libstdc++-v3/testsuite/20_util/pair/astuple/astuple.cc
! a8d4db29f335f402a748bca91b0b8ebc  libstdc++-v3/testsuite/20_util/pair/astuple/astuple_cpp14.cc
! 6209d6d68526757b61bb3286016c5e4b  libstdc++-v3/testsuite/20_util/pair/astuple/constexpr_get.cc
! b99048b11026f496f244e4f5af9683ac  libstdc++-v3/testsuite/20_util/pair/astuple/constexpr_get_by_type.cc
! 42a6e520649b8cbc4b6f53e6819c4f99  libstdc++-v3/testsuite/20_util/pair/astuple/get.cc
! b5052b92be7f87e002c355df0f4862a2  libstdc++-v3/testsuite/20_util/pair/astuple/get_by_type.cc
! 14a6e6f50cb68db8d5c548117a822e2d  libstdc++-v3/testsuite/20_util/pair/astuple/get_by_type_neg.cc
! 569bd4e9fd805b5f54aea14c12e35f7b  libstdc++-v3/testsuite/20_util/pair/astuple/get_neg.cc
! 206371f73335d6fb389450c36c66e385  libstdc++-v3/testsuite/20_util/pair/comparison_operators/constexpr.cc
! 53968f57c4e6a3ef823402c3775988fa  libstdc++-v3/testsuite/20_util/pair/cons/constexpr.cc
! 5ab3d27ccdfa8a4b37342bd12ea64eb0  libstdc++-v3/testsuite/20_util/pair/cons/deduction.cc
! 8c02a7e2268659238c1b8a7e664e152b  libstdc++-v3/testsuite/20_util/pair/cons/explicit_construct.cc
! aa257583dd93af0cd3ceeac8886488f9  libstdc++-v3/testsuite/20_util/pair/cons/noexcept_move_construct.cc
! a37e51d00986b1b84ebbd9be7dc2ceb9  libstdc++-v3/testsuite/20_util/pair/constexpr_get.cc
! 5d7e7d1171b05f31d2d383bf9c3a6273  libstdc++-v3/testsuite/20_util/pair/make_pair/constexpr.cc
! 3ada975ef9a2fdf12b7995eb884a9010  libstdc++-v3/testsuite/20_util/pair/moveable.cc
! efa1a50cb152f45069e07b091564a8b5  libstdc++-v3/testsuite/20_util/pair/noexcept_move_assign.cc
! 1bd48a7d412051d19c48292569e844f9  libstdc++-v3/testsuite/20_util/pair/noexcept_swap.cc
! 2f19fa02763b480dd103c0b9d243ac05  libstdc++-v3/testsuite/20_util/pair/noncopyable.cc
! 188ee0f317be5e1e5f1fc21653cd252d  libstdc++-v3/testsuite/20_util/pair/piecewise.cc
! 5c8807059587138a7919f7b4e6c92ac8  libstdc++-v3/testsuite/20_util/pair/piecewise2.cc
! 5a6b218512a4ef570b7190d231265abe  libstdc++-v3/testsuite/20_util/pair/requirements/dr2367.cc
! d7354502bf78525c41233cf30fc7765c  libstdc++-v3/testsuite/20_util/pair/requirements/dr801.cc
! cc45e46aa9ddb65539e37f8668934923  libstdc++-v3/testsuite/20_util/pair/requirements/explicit_instantiation/1.cc
! 124006bde8ff7af587944534fa354184  libstdc++-v3/testsuite/20_util/pair/swap.cc
! 6abdbee7af16872d93a1dcb434e921ce  libstdc++-v3/testsuite/20_util/pair/swap_cxx17.cc
! 1612fecf3446e4a67ae5c4d24acac880  libstdc++-v3/testsuite/20_util/pair/traits.cc
! 4eb063a4e6c58ea00c5050a8b41b4549  libstdc++-v3/testsuite/20_util/pointer_safety/1.cc
! dd3bcf345a274a878598483a8182514a  libstdc++-v3/testsuite/20_util/pointer_traits/pointer_to.cc
! d393bf8454a6dee73aa3f82f805fc75e  libstdc++-v3/testsuite/20_util/pointer_traits/rebind.cc
! 5ac847a7fe366f7e7bdede1404d2114c  libstdc++-v3/testsuite/20_util/pointer_traits/requirements/explicit_instantiation.cc
! c3f6c78ec5c54363c255fa40b671289a  libstdc++-v3/testsuite/20_util/pointer_traits/requirements/typedefs.cc
! f2cb698c12caa253d34c8000bf78bd25  libstdc++-v3/testsuite/20_util/rank/requirements/explicit_instantiation.cc
! 850330883ab044d28f30abdcd84f27a2  libstdc++-v3/testsuite/20_util/rank/requirements/typedefs.cc
! 0f2001c201f5809a73c3b06edadc75de  libstdc++-v3/testsuite/20_util/rank/value.cc
! 49e7992ca72ddc751a9448beaa3d28df  libstdc++-v3/testsuite/20_util/ratio/comparisons/comp1.cc
! 3fe7a5e09f1a8f6d9b37f034729de2fc  libstdc++-v3/testsuite/20_util/ratio/comparisons/comp2.cc
! 3dbec9becd95a8dbfeb0f758e1abb539  libstdc++-v3/testsuite/20_util/ratio/comparisons/comp3.cc
! f2b24867b74c3f2dccdad3b910049abd  libstdc++-v3/testsuite/20_util/ratio/cons/cons1.cc
! 6622f9d7a29ab57e8e4e650a4884ec19  libstdc++-v3/testsuite/20_util/ratio/cons/cons_overflow_neg.cc
! 6aa6c3da27bcf97aaf47d3226a479aa2  libstdc++-v3/testsuite/20_util/ratio/operations/45866.cc
! 0a9bc888fec3db764d2a78c5ee39b03b  libstdc++-v3/testsuite/20_util/ratio/operations/47913.cc
! 8e5116acb583a9b903986d7f4cbbc02e  libstdc++-v3/testsuite/20_util/ratio/operations/53840.cc
! 9128cc974c929e8a2bb582a66c2038b1  libstdc++-v3/testsuite/20_util/ratio/operations/ops1.cc
! 9943e82a85b5a8f31c130a09bae6c57a  libstdc++-v3/testsuite/20_util/ratio/operations/ops2.cc
! e201636d87dfc7a218587ba13ac0ccdc  libstdc++-v3/testsuite/20_util/ratio/operations/ops3.cc
! c951d634b361b971c6f89a48dd31bb0b  libstdc++-v3/testsuite/20_util/ratio/operations/ops_overflow_neg.cc
! 142c632fd538393d8468a86f59ae878a  libstdc++-v3/testsuite/20_util/ratio/requirements/constexpr_data.cc
! 9346a42a61cfa31e04540c68c559dee0  libstdc++-v3/testsuite/20_util/ratio/requirements/ratio_equal_v.cc
! 06f5b6e37ba377269839daa34ae4dbb0  libstdc++-v3/testsuite/20_util/raw_storage_iterator/base.cc
! a184197e7f788f13a356140fccf1044b  libstdc++-v3/testsuite/20_util/raw_storage_iterator/dr2127.cc
! 6856a3864d58de990fa9e7994d660ad7  libstdc++-v3/testsuite/20_util/raw_storage_iterator/requirements/base_classes.cc
! c117c9b50c096a6804f564690e60c7aa  libstdc++-v3/testsuite/20_util/raw_storage_iterator/requirements/explicit_instantiation/1.cc
! 372ba81a29c400e47034ff9a98b0dac2  libstdc++-v3/testsuite/20_util/raw_storage_iterator/requirements/typedefs.cc
! 57d37794dc26b8a0063f9d21cb980daa  libstdc++-v3/testsuite/20_util/reference_wrapper/24803.cc
! f78c84da2db2908221dd0e9cda7e330b  libstdc++-v3/testsuite/20_util/reference_wrapper/41792.cc
! 7e6de37ea391db4c8137c7f0a4d9ac0e  libstdc++-v3/testsuite/20_util/reference_wrapper/80504.cc
! 5a9cdee6d26be239f48828f2ea2d165f  libstdc++-v3/testsuite/20_util/reference_wrapper/83427.cc
! dca63b8494882343099c7990f84b7387  libstdc++-v3/testsuite/20_util/reference_wrapper/invoke-2.cc
! b5fc947153abbcb44f9566668abc42f8  libstdc++-v3/testsuite/20_util/reference_wrapper/invoke-3.cc
! 3ab72e1ab058a01409205a823309ca7a  libstdc++-v3/testsuite/20_util/reference_wrapper/invoke.cc
! cbdce04edf89ef1abb73cbe2253c40bd  libstdc++-v3/testsuite/20_util/reference_wrapper/ref_neg.cc
! b25e43ef584dc4e4f7178d681f851076  libstdc++-v3/testsuite/20_util/reference_wrapper/requirements.cc
! c96f0198c4d970712885e1ffcaf7b952  libstdc++-v3/testsuite/20_util/reference_wrapper/result_type.cc
! 51815e87375b8c74ddd1867410e4d6fb  libstdc++-v3/testsuite/20_util/reference_wrapper/typedefs-2.cc
! 29e661ebbb2c261e1cd1bfe1f2967f2a  libstdc++-v3/testsuite/20_util/reference_wrapper/typedefs-3.cc
! 2d0c5083bd433581071be5ea31a7253c  libstdc++-v3/testsuite/20_util/reference_wrapper/typedefs.cc
! 67b2f3770d7e2733eb5149435496708c  libstdc++-v3/testsuite/20_util/rel_ops.cc
! 50bc831effc2acf2d5c9e45faca5cf45  libstdc++-v3/testsuite/20_util/remove_all_extents/requirements/alias_decl.cc
! 8051713f2e611c3f339161710747ea83  libstdc++-v3/testsuite/20_util/remove_all_extents/requirements/explicit_instantiation.cc
! 8cd403978725eb98c501697263b0a9ac  libstdc++-v3/testsuite/20_util/remove_all_extents/value.cc
! 4b81e3d971617a44196aa2048afc7a74  libstdc++-v3/testsuite/20_util/remove_const/requirements/alias_decl.cc
! f8001b95d370317c6e7c53f49ab00164  libstdc++-v3/testsuite/20_util/remove_const/requirements/explicit_instantiation.cc
! 148c3becd01968eb22b438ad906e0563  libstdc++-v3/testsuite/20_util/remove_const/value.cc
! 442d7e6a71a1cc4eeff50f9779cbb579  libstdc++-v3/testsuite/20_util/remove_cv/requirements/alias_decl.cc
! 1ab540adad664635b3825958eed41bc4  libstdc++-v3/testsuite/20_util/remove_cv/requirements/explicit_instantiation.cc
! 5262903787c216f84903df9d46a17f2d  libstdc++-v3/testsuite/20_util/remove_cv/value.cc
! eb8bdeecd995d94a653c65f1083eaea8  libstdc++-v3/testsuite/20_util/remove_extent/requirements/alias_decl.cc
! 966b097f68dfb2d39afe41bd7f434126  libstdc++-v3/testsuite/20_util/remove_extent/requirements/explicit_instantiation.cc
! 214070b0f52507c975de7a01315c4cc5  libstdc++-v3/testsuite/20_util/remove_extent/value.cc
! 88ac1705e57cee82ea4a42dbea50330b  libstdc++-v3/testsuite/20_util/remove_pointer/requirements/alias_decl.cc
! b53d6200be1795c9ac9e433fc48fda94  libstdc++-v3/testsuite/20_util/remove_pointer/requirements/explicit_instantiation.cc
! e45132af05e4e9617310899fd1c2093e  libstdc++-v3/testsuite/20_util/remove_pointer/value.cc
! bc74f3ef3aea9f706ae9b7b0d716f2ff  libstdc++-v3/testsuite/20_util/remove_reference/requirements/alias_decl.cc
! a3c50734cc7f0ba710fc6c21096f129a  libstdc++-v3/testsuite/20_util/remove_reference/requirements/explicit_instantiation.cc
! 4e000f4c810430ab0da4e356697a5084  libstdc++-v3/testsuite/20_util/remove_reference/value.cc
! 3129512f6c278daab93805f2eee94574  libstdc++-v3/testsuite/20_util/remove_volatile/requirements/alias_decl.cc
! a2e255ba03f880cc822b6287bc821d19  libstdc++-v3/testsuite/20_util/remove_volatile/requirements/explicit_instantiation.cc
! 94cb983ea8d2c1506f1fe0c821abad27  libstdc++-v3/testsuite/20_util/remove_volatile/value.cc
! 8772adbfa4a8bff1d0acda2c3f6c28f5  libstdc++-v3/testsuite/20_util/result_of/1.cc
! c2ee47654baa929d53c104f0c01f257c  libstdc++-v3/testsuite/20_util/result_of/2.cc
! 9afe32c514ab8e4aa2dc1b40298a940d  libstdc++-v3/testsuite/20_util/result_of/requirements/alias_decl.cc
! 63eac4231f9a1d045c5cb57ee46879dd  libstdc++-v3/testsuite/20_util/result_of/sfinae_friendly_1.cc
! e91b4bd07c82ba988422b73bed116160  libstdc++-v3/testsuite/20_util/result_of/sfinae_friendly_2.cc
! 476cc3730114e6d5b41947060bcba6e0  libstdc++-v3/testsuite/20_util/scoped_allocator/1.cc
! 2248bbda3dc1dbaba8e7ec2e18f6f104  libstdc++-v3/testsuite/20_util/scoped_allocator/2.cc
! a26314d509914bf6b8a3b34629c1e3a3  libstdc++-v3/testsuite/20_util/scoped_allocator/3.cc
! 9b0e75588ca9cbaa8b35ec0c76d1e5f0  libstdc++-v3/testsuite/20_util/scoped_allocator/65279.cc
! f43ab512c372b665a0a24b7cd50d106c  libstdc++-v3/testsuite/20_util/scoped_allocator/69114.cc
! c6142ee0a29a7b41216e755cb4c93b89  libstdc++-v3/testsuite/20_util/scoped_allocator/69293_neg.cc
! e1d77ef5b3b7a83ff3d2f00513e78106  libstdc++-v3/testsuite/20_util/scoped_allocator/construct_pair.cc
! c46ddc47cc3b0714596005ffb97c03f3  libstdc++-v3/testsuite/20_util/scoped_allocator/outermost.cc
! 4fb38daf6b78f9a84a6d55024e3b7a47  libstdc++-v3/testsuite/20_util/scoped_allocator/propagation.cc
! 3812da962f5af5e02504c3f27c2b5c2a  libstdc++-v3/testsuite/20_util/scoped_allocator/requirements/explicit_instantiation.cc
! 7ab8d1bdae211439da62c9578d7ff771  libstdc++-v3/testsuite/20_util/scoped_allocator/requirements/typedefs.cc
! 78e2c3805630dde45377118d483a0d3d  libstdc++-v3/testsuite/20_util/shared_ptr/assign/assign.cc
! 702b0d58c14a7d7a9bb9b273ed0c263b  libstdc++-v3/testsuite/20_util/shared_ptr/assign/auto_ptr.cc
! 1cb000331e757d744ff8668c8ab4eb1d  libstdc++-v3/testsuite/20_util/shared_ptr/assign/auto_ptr_neg.cc
! 41aacd4855fcfa7a87e9b2a4157906c3  libstdc++-v3/testsuite/20_util/shared_ptr/assign/auto_ptr_rvalue.cc
! 5014fc79f6751f3c84deb0ff138f0cd2  libstdc++-v3/testsuite/20_util/shared_ptr/assign/dr541.cc
! a8cf2546114e1224afed88e4c6b1ef5b  libstdc++-v3/testsuite/20_util/shared_ptr/assign/move.cc
! a48b89eee000f544b0c18e7e924d40b5  libstdc++-v3/testsuite/20_util/shared_ptr/assign/sfinae.cc
! 64e6424e67269ff7fb583d20065f15b0  libstdc++-v3/testsuite/20_util/shared_ptr/assign/shared_ptr.cc
! ca076c0096801554cae6d49645e66cfc  libstdc++-v3/testsuite/20_util/shared_ptr/assign/shared_ptr_neg.cc
! a23fd779b20e2408e874ba3ea3ac802b  libstdc++-v3/testsuite/20_util/shared_ptr/assign/unique_ptr_lvalue_neg.cc
! fcfde1fde551e8796da1740ed9d8f14f  libstdc++-v3/testsuite/20_util/shared_ptr/assign/unique_ptr_rvalue.cc
! 7b802b2f9d57bfc02efb41a138e8caa5  libstdc++-v3/testsuite/20_util/shared_ptr/atomic/1.cc
! 22d6c210450f296cdf1acd86a4a9c5e7  libstdc++-v3/testsuite/20_util/shared_ptr/atomic/2.cc
! 5c5b919a562d89c5b1519d7ab0e31726  libstdc++-v3/testsuite/20_util/shared_ptr/atomic/3.cc
! 78ff67974bfde9b0f491b2982e590340  libstdc++-v3/testsuite/20_util/shared_ptr/casts/1.cc
! 148f99ee83e61312c66d4c041712eece  libstdc++-v3/testsuite/20_util/shared_ptr/casts/reinterpret.cc
! 98cef7507700e607bc125d31eaa5a1c6  libstdc++-v3/testsuite/20_util/shared_ptr/comparison/42925.cc
! 02bd89f44c9ef2048f331d37e8bb33a2  libstdc++-v3/testsuite/20_util/shared_ptr/comparison/cmp.cc
! 8faf7bee5513103398555ab8a2f9eb44  libstdc++-v3/testsuite/20_util/shared_ptr/comparison/dr1401.cc
! f3337df38a580f5fbec8fd6e59b494f0  libstdc++-v3/testsuite/20_util/shared_ptr/comparison/less.cc
! ad8b04d08c34c98704d8c5e60d6934c5  libstdc++-v3/testsuite/20_util/shared_ptr/cons/39405.cc
! 4359f294dcf284471933561282992227  libstdc++-v3/testsuite/20_util/shared_ptr/cons/43820_neg.cc
! c56fd3ac491bb203e0f617e44fda5c3b  libstdc++-v3/testsuite/20_util/shared_ptr/cons/46910.cc
! 2f39f00a0fc8e1505d33488fc2de76f6  libstdc++-v3/testsuite/20_util/shared_ptr/cons/51365.cc
! f563b893fc4ae3bc3dab5e4da26aa419  libstdc++-v3/testsuite/20_util/shared_ptr/cons/52924.cc
! 49ab3f1691855136ae46ac5e6aefa26d  libstdc++-v3/testsuite/20_util/shared_ptr/cons/55123.cc
! 96cc40edf013da56b918c7c9daecc96c  libstdc++-v3/testsuite/20_util/shared_ptr/cons/58659.cc
! e8f036075ab67703d53cccae1846a961  libstdc++-v3/testsuite/20_util/shared_ptr/cons/58839.cc
! 070ad6e90dbeda197bacd1cf5cf004bf  libstdc++-v3/testsuite/20_util/shared_ptr/cons/61036.cc
! b65ff256f4a96b962afaf45ddd8421d9  libstdc++-v3/testsuite/20_util/shared_ptr/cons/79467.cc
! 7bc071be87cd6487f1bb28af469f7635  libstdc++-v3/testsuite/20_util/shared_ptr/cons/80229.cc
! 2142a913d811a3224dde85dc5de97913  libstdc++-v3/testsuite/20_util/shared_ptr/cons/alias.cc
! 1047a702e6482fba25b084448984ad7c  libstdc++-v3/testsuite/20_util/shared_ptr/cons/alloc.cc
! b3fc0ac46b89853cba8aa17cf1860ef1  libstdc++-v3/testsuite/20_util/shared_ptr/cons/alloc_min.cc
! c516ad28b30d071cfdab62d097f5d00b  libstdc++-v3/testsuite/20_util/shared_ptr/cons/array.cc
! 2472f41ed23c38c261716ddec2fd89da  libstdc++-v3/testsuite/20_util/shared_ptr/cons/auto_ptr.cc
! f39b81537218475304405b7f3efb9e26  libstdc++-v3/testsuite/20_util/shared_ptr/cons/auto_ptr_neg.cc
! be078f304ec7efb8d674aba0c575a31a  libstdc++-v3/testsuite/20_util/shared_ptr/cons/constexpr.cc
! 0630dd5173e53b7210fa55dda9d8bd0b  libstdc++-v3/testsuite/20_util/shared_ptr/cons/copy.cc
! 8035d68fd23078e8efbeae7ed60c8563  libstdc++-v3/testsuite/20_util/shared_ptr/cons/deduction.cc
! 5e0de59ab7ab9dd8122016df3d446c20  libstdc++-v3/testsuite/20_util/shared_ptr/cons/default.cc
! 6a9ac551c9837f52ad6f13eb5738a11f  libstdc++-v3/testsuite/20_util/shared_ptr/cons/lwg2802.cc
! b645746ac72d5e456ba645586f4041d9  libstdc++-v3/testsuite/20_util/shared_ptr/cons/move.cc
! c82df4df323182392983884420c23ec5  libstdc++-v3/testsuite/20_util/shared_ptr/cons/noexcept_move_construct.cc
! f32393f7ea06e4c436fbca76d6f73895  libstdc++-v3/testsuite/20_util/shared_ptr/cons/nullptr.cc
! 4ab02301e74f0dd79da81d2a17afe653  libstdc++-v3/testsuite/20_util/shared_ptr/cons/pointer.cc
! 06301657179e048fa89ceb5502629dbe  libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr.cc
! c9e05b97705dd2dae5cf02549b39e0c0  libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_array.cc
! f85d1e1e3adfc229c15f089fa8933ac6  libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_deleter.cc
! b6ccf205f04ec9053cc0675fa1a280f6  libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_1.cc
! 23d492da4c8ecc1c51715238a3aa62f1  libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_2.cc
! fb3dc1248b0ad81ac1abc103e5a977fd  libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_neg.cc
! 4453bbadfe2091d32925c5e73eaec3ee  libstdc++-v3/testsuite/20_util/shared_ptr/cons/void_neg.cc
! f7430c23b5bc7603ea14eee92c07c2bf  libstdc++-v3/testsuite/20_util/shared_ptr/cons/weak_ptr.cc
! fef04dd3509e8d08d0ff40b01622b7f5  libstdc++-v3/testsuite/20_util/shared_ptr/cons/weak_ptr_expired.cc
! c86ec3bbb0432ce51bbff056f5268073  libstdc++-v3/testsuite/20_util/shared_ptr/creation/36949.cc
! 684c5eb478e4de6facd70296cc7b6fae  libstdc++-v3/testsuite/20_util/shared_ptr/creation/58594-no-rtti.cc
! e65a0de9f1387e14f39525f84444247d  libstdc++-v3/testsuite/20_util/shared_ptr/creation/58594.cc
! e1bb36ceca78301d4f773d1c3f0f2184  libstdc++-v3/testsuite/20_util/shared_ptr/creation/alloc.cc
! 033c03fe88689242effbb3d92a870848  libstdc++-v3/testsuite/20_util/shared_ptr/creation/alloc_min.cc
! 0b72fc46fa894af3e2163e87cac234b1  libstdc++-v3/testsuite/20_util/shared_ptr/creation/dr402.cc
! 79a53607702e5c32c3329cc01418766b  libstdc++-v3/testsuite/20_util/shared_ptr/creation/dr925.cc
! f754daa9f4cd3b6f29fc292f8fe7b4dd  libstdc++-v3/testsuite/20_util/shared_ptr/creation/make.cc
! c74663f22b4f6ea091bd55561907bdfe  libstdc++-v3/testsuite/20_util/shared_ptr/creation/no_rtti.cc
! d27719961084e14b1c4f87c2f6f240c0  libstdc++-v3/testsuite/20_util/shared_ptr/creation/private.cc
! 77cfd6e96f9ae427a8d68153bd76bd32  libstdc++-v3/testsuite/20_util/shared_ptr/creation/single_allocation.cc
! b87ad0558e1cc93eade521b0ed1293ef  libstdc++-v3/testsuite/20_util/shared_ptr/creation/single_allocation_no_rtti.cc
! fa42e3995574e3591374fe1e7d92e6a9  libstdc++-v3/testsuite/20_util/shared_ptr/dest/dest.cc
! cafe3eec25cc67dacd09611cbc02223b  libstdc++-v3/testsuite/20_util/shared_ptr/hash/1.cc
! c5e263d05920c9f80ac0f92d259bbb0d  libstdc++-v3/testsuite/20_util/shared_ptr/misc/24595.cc
! 6750109df538122d52629614d01826fc  libstdc++-v3/testsuite/20_util/shared_ptr/misc/42019.cc
! 25d8ee0fd164dcf8fc4b69b9b3778209  libstdc++-v3/testsuite/20_util/shared_ptr/misc/get_deleter.cc
! 148604fcb41eb79db1ef510c7b8b39d9  libstdc++-v3/testsuite/20_util/shared_ptr/misc/io.cc
! 0f2cdba87404278d9c93b35c8f1b5072  libstdc++-v3/testsuite/20_util/shared_ptr/misc/swap.cc
! 0d3702a4a5d2ee57e7f8c227d984d91c  libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/24805.cc
! 210f665b4e4db1742c3dd5288f19e349  libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/reset.cc
! 9dc0b4791094b96eb0327af8a6da420f  libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/reset_alloc.cc
! 11081560b2c9c06dfef7e0376052e72d  libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/reset_neg.cc
! bd3ba2f4a3da6ae32ae3d2bcd688d8f6  libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/reset_sfinae.cc
! 29709eff128e2af87648b2fffa38c1d4  libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/swap.cc
! f37e0e5f446bd9763c22e7f1e410f999  libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/swap_neg.cc
! 405f1661cc2c0d454ea93af0e45c3163  libstdc++-v3/testsuite/20_util/shared_ptr/observers/array.cc
! 15e6b5cbb2fd839d65ece36bc9103db4  libstdc++-v3/testsuite/20_util/shared_ptr/observers/bool_conv.cc
! 4d5bd45ba6a500a2e63fbd6d06404da8  libstdc++-v3/testsuite/20_util/shared_ptr/observers/get.cc
! 5b535adddd2b5ed43476979080b5fa17  libstdc++-v3/testsuite/20_util/shared_ptr/observers/owner_before.cc
! e0ae17d1f8459b7d981c3ce872ee14ce  libstdc++-v3/testsuite/20_util/shared_ptr/observers/unique.cc
! bd1b1bb3cc63ce504e568111620f0993  libstdc++-v3/testsuite/20_util/shared_ptr/observers/use_count.cc
! 96aba07d9632ec7dfc2a82d374549799  libstdc++-v3/testsuite/20_util/shared_ptr/requirements/explicit_instantiation/1.cc
! 2f0815545d4aca35b33e672762f74b8d  libstdc++-v3/testsuite/20_util/shared_ptr/requirements/explicit_instantiation/2.cc
! 7b72eb41ea3f30c5d58028ebe2170b56  libstdc++-v3/testsuite/20_util/shared_ptr/requirements/weak_type.cc
! 5507d842863a436f03fbe4a4d8ea7947  libstdc++-v3/testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc
! 95e4c9ab682ad79b86448766a88e8e38  libstdc++-v3/testsuite/20_util/shared_ptr/thread/mutex_weaktoshared.cc
! aeac8ddf93641193931b3a899d4a5a7d  libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/1.cc
! 769324cad38c63188c637925d8e9407c  libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc
! 205d516e81d5a25428de6124389e59d9  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/58982.cc
! 08a6a727926dc03ced9bf9f8e9a74fde  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/64476.cc
! f6a4cb99c54b013e75786413c2c87ca6  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/808590-cxx11.cc
! 069fcbabaf782ced6935586289a228b4  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/808590.cc
! 9d6aac9182ecdc34cf13e44e1805942e  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/move_iterators/1.cc
! 171d4eec22325645f3f36ea0fffbf9e5  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy_n/58982.cc
! f109c699823b56e4aa480fdb2837d84f  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy_n/move_iterators/1.cc
! f3ae256ed15fd9b899ca4260565f4538  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill/32158.cc
! f4ad79277b35c88370bacab5c2229936  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill/58982.cc
! 43a5620c41743007941d3b61576b4e78  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill_n/16505.cc
! 3693f2cc2d16ebbe4bd6d1c054554646  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill_n/58982.cc
! 5362bdaaf04a22d929f7468e62542580  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill_n/dr1339.cc
! 1be1bd9a8bda046889818cf417c9b8ff  libstdc++-v3/testsuite/20_util/steady_clock/constexpr_data.cc
! 131ff289bdd25cdb4006b6ab9c53b0c4  libstdc++-v3/testsuite/20_util/system_clock/1.cc
! 2813f0a1a30b315da5d1a833acb6e752  libstdc++-v3/testsuite/20_util/system_clock/constexpr_data.cc
! f0d6ab44c6960b889ca3548868f1ceb0  libstdc++-v3/testsuite/20_util/temporary_buffer.cc
! b324022c7277bb620608242ee10be930  libstdc++-v3/testsuite/20_util/time_point/1.cc
! f71576b6b84ea10f605bfebb874d38dc  libstdc++-v3/testsuite/20_util/time_point/2.cc
! e9eaaa623b4830221c8b55b4bda39418  libstdc++-v3/testsuite/20_util/time_point/3.cc
! 02fefcb72e384934c6bcac7d2bcafcaf  libstdc++-v3/testsuite/20_util/time_point/arithmetic/constexpr.cc
! a47681e1bd8bc7fb57686fb26e2a670a  libstdc++-v3/testsuite/20_util/time_point/comparison_operators/constexpr.cc
! 9ab751e056ac32c19f5ff5d7eb234f25  libstdc++-v3/testsuite/20_util/time_point/cons/81468.cc
! 3fd48a36aa91ccbcdca6488d67c7a883  libstdc++-v3/testsuite/20_util/time_point/cons/constexpr.cc
! d22eeddbf3da650ecd745dc5e19fbd9a  libstdc++-v3/testsuite/20_util/time_point/nonmember/constexpr.cc
! 7dbb303cc5b3d0a263afeb6d0e56ec76  libstdc++-v3/testsuite/20_util/time_point/requirements/constexpr_functions.cc
! ae1573034bff92183cefa9c76ae54aa9  libstdc++-v3/testsuite/20_util/time_point/requirements/explicit_instantiation/explicit_instantiation.cc
! 49d7444643ee00b37fd62d6d6c130b9a  libstdc++-v3/testsuite/20_util/time_point_cast/constexpr.cc
! c171229ba9314f830f24fe6709a06faf  libstdc++-v3/testsuite/20_util/time_point_cast/rounding.cc
! b12bb8359ef4e523a1be7f9c7d10c50e  libstdc++-v3/testsuite/20_util/to_address/1.cc
! 31dcbdfd87da783b07e5981278ef69c8  libstdc++-v3/testsuite/20_util/to_address/1_neg.cc
! 1ce57d23be69b2e29e1e24cbe9aa2098  libstdc++-v3/testsuite/20_util/to_chars/1.cc
! 55ad5934505ad22f081cd4a0fe660615  libstdc++-v3/testsuite/20_util/to_chars/1_neg.cc
! 8faed0066939b06786fb5d6e5e62dd24  libstdc++-v3/testsuite/20_util/to_chars/2.cc
! 31447164a9d33458c0a751114b2faefd  libstdc++-v3/testsuite/20_util/to_chars/requirements.cc
! dfd4f3c5eef38b84ec4ca3e8a9495f45  libstdc++-v3/testsuite/20_util/tuple/48476.cc
! 80f3bad3165967689c6c1b3484857d55  libstdc++-v3/testsuite/20_util/tuple/51365.cc
! 715fe061c0c4a75d1e0ce3a187329026  libstdc++-v3/testsuite/20_util/tuple/53648.cc
! 1ba871e66c60345711678cb23346a746  libstdc++-v3/testsuite/20_util/tuple/56785.cc
! fab5197557c57b489545ed8a16870bd3  libstdc++-v3/testsuite/20_util/tuple/60497.cc
! eb5de8fa2c18ba98423850decdc6522c  libstdc++-v3/testsuite/20_util/tuple/61947.cc
! c75b05ac5b552d0a7e536e7b10282633  libstdc++-v3/testsuite/20_util/tuple/67844.cc
! 058436bd8987b5b7ff92aeec6b7cdeab  libstdc++-v3/testsuite/20_util/tuple/77395.cc
! 3fc46199d815682521b1f244b3ef7ddb  libstdc++-v3/testsuite/20_util/tuple/77802.cc
! e3e2fff892858676e86c682b074e3ae8  libstdc++-v3/testsuite/20_util/tuple/78939.cc
! 1d96d691e4ccec93c144405538d19bc6  libstdc++-v3/testsuite/20_util/tuple/apply/1.cc
! 61f8387a1abd90864db4b880a1c351ab  libstdc++-v3/testsuite/20_util/tuple/comparison_operators/35480_neg.cc
! d4daf36d9277a0ae87f8c452330ebb34  libstdc++-v3/testsuite/20_util/tuple/comparison_operators/comparisons.cc
! 04bd1dff99b9d25b0225a1bb92e0df36  libstdc++-v3/testsuite/20_util/tuple/comparison_operators/constexpr.cc
! a04fcbb1b668271935c00b1241410a20  libstdc++-v3/testsuite/20_util/tuple/comparison_operators/overloaded.cc
! 2456eb7f04f18e4ec3ede66d716e6186  libstdc++-v3/testsuite/20_util/tuple/cons/41530.cc
! f80ddf8215ff699da2c9c05cbb28c2fd  libstdc++-v3/testsuite/20_util/tuple/cons/44487.cc
! 410410f7c7bc7f8e9a8cc176b9db4ad7  libstdc++-v3/testsuite/20_util/tuple/cons/45228.cc
! 6d37a6c516aa1d7ddad5f0ce5d8e2c41  libstdc++-v3/testsuite/20_util/tuple/cons/48476.cc
! 64cdd6d89387ab07c0839f6897e1694c  libstdc++-v3/testsuite/20_util/tuple/cons/66338.cc
! 10e9db1fe2c454993dc4f1a56d9c35e8  libstdc++-v3/testsuite/20_util/tuple/cons/allocator_with_any.cc
! 43128d3a007de88940c8f0afe1bd80f7  libstdc++-v3/testsuite/20_util/tuple/cons/allocators.cc
! 764cef886bd43a9d53cb1f44a224127f  libstdc++-v3/testsuite/20_util/tuple/cons/assignment.cc
! 38be1bb9e0717fbb641b42a31f71cc9f  libstdc++-v3/testsuite/20_util/tuple/cons/big_tuples.cc
! 998ae00e699c737b806cec41ab638a1f  libstdc++-v3/testsuite/20_util/tuple/cons/constexpr-2.cc
! d45146eaf27dbd17ed92e4e087e7cea8  libstdc++-v3/testsuite/20_util/tuple/cons/constexpr-3.cc
! 7969858625374c1f67b767bca0901127  libstdc++-v3/testsuite/20_util/tuple/cons/constructor.cc
! e4ae0d8c81f33fffae0c54376548009b  libstdc++-v3/testsuite/20_util/tuple/cons/converting.cc
! b819182f60e5862cb5dedf5fe2bbcefe  libstdc++-v3/testsuite/20_util/tuple/cons/deduction.cc
! 57122a4ed4cf43d3a0960290b134a7b6  libstdc++-v3/testsuite/20_util/tuple/cons/element_accepts_anything_byval.cc
! 69ceb154a182faa99306b62bf42dcdb8  libstdc++-v3/testsuite/20_util/tuple/cons/explicit_construct.cc
! 29a914d0d7879c61d413b101bb4ccda9  libstdc++-v3/testsuite/20_util/tuple/cons/nested_tuple_construct.cc
! 715111487bc5083a173f030300b9f8e9  libstdc++-v3/testsuite/20_util/tuple/cons/noexcept_move_construct.cc
! b350efa80212f86869b983a04af500b7  libstdc++-v3/testsuite/20_util/tuple/creation_functions/23978.cc
! 676520182206353a716cc4bccbb68e03  libstdc++-v3/testsuite/20_util/tuple/creation_functions/48476.cc
! 85114e8d3ea7cb58264bb80cf146246d  libstdc++-v3/testsuite/20_util/tuple/creation_functions/constexpr.cc
! 7bb1f450e479f9b5b4e6ec85bde4a240  libstdc++-v3/testsuite/20_util/tuple/creation_functions/constexpr_cpp14.cc
! 1691fd466c9f1c7c35f3d7fa1cd0802d  libstdc++-v3/testsuite/20_util/tuple/creation_functions/forward_as_tuple.cc
! bad5d48537e1bc9f75943d319d272ab2  libstdc++-v3/testsuite/20_util/tuple/creation_functions/make_tuple.cc
! d83a22771759dc68b478f816eeab3dbe  libstdc++-v3/testsuite/20_util/tuple/creation_functions/tie.cc
! acb78770b86d663c6caf40f020f6020b  libstdc++-v3/testsuite/20_util/tuple/creation_functions/tie2.cc
! 9159995504165fbff5b3decae76c725b  libstdc++-v3/testsuite/20_util/tuple/creation_functions/tuple_cat.cc
! da83c5a1b8c99042609e822502991813  libstdc++-v3/testsuite/20_util/tuple/cv_tuple_element.cc
! 85ae202cbfd3983517b194ddcecd7b8d  libstdc++-v3/testsuite/20_util/tuple/cv_tuple_size.cc
! 2666948a40033a69891ffbf20ae23b0c  libstdc++-v3/testsuite/20_util/tuple/cv_tuple_size_neg.cc
! 2cbbde730ae1e9b29ec2b696c0ef3d9b  libstdc++-v3/testsuite/20_util/tuple/element_access/constexpr_get.cc
! 8e4a897c1c073ee8aa45159b6cfb1522  libstdc++-v3/testsuite/20_util/tuple/element_access/constexpr_get_by_type.cc
! d8aef9c48d82eb968f24c0e1bd042b4f  libstdc++-v3/testsuite/20_util/tuple/element_access/get.cc
! 6f573c70b81e9ca43dcdbe8a491bad3f  libstdc++-v3/testsuite/20_util/tuple/element_access/get2.cc
! 1c9bdd6ae3b6f6b30b5760a8f39f29b0  libstdc++-v3/testsuite/20_util/tuple/element_access/get2_by_type.cc
! e13171c80c0ee5d7c59f2e6be030db85  libstdc++-v3/testsuite/20_util/tuple/element_access/get_by_type.cc
! 84878abc76a83b980be2e4e2c33b50f3  libstdc++-v3/testsuite/20_util/tuple/element_access/get_neg.cc
! 0baa0e386f6f8609a77c1f920fa3bc1c  libstdc++-v3/testsuite/20_util/tuple/make_from_tuple/1.cc
! 05ae8ba18334041c613fe149d83d1ed3  libstdc++-v3/testsuite/20_util/tuple/moveable.cc
! c0610c09beed694880165669d9348d8a  libstdc++-v3/testsuite/20_util/tuple/moveable2.cc
! 5562bf6a92c7fbfc62388490f9c250d1  libstdc++-v3/testsuite/20_util/tuple/noexcept_move_assign.cc
! b1332e73705f4e8575a8abdbc7c3f399  libstdc++-v3/testsuite/20_util/tuple/noexcept_swap.cc
! ca52c1f71e0dd3ea1ac145dc8db16256  libstdc++-v3/testsuite/20_util/tuple/requirements/dr2367.cc
! bb05eacf5a2563f646fb765dca7841e2  libstdc++-v3/testsuite/20_util/tuple/requirements/dr801.cc
! 7bf92b533d1f08f51d9b511d50cebbc3  libstdc++-v3/testsuite/20_util/tuple/requirements/explicit_instantiation.cc
! 3947e5519be0f052e90d1bc2b7e0c419  libstdc++-v3/testsuite/20_util/tuple/swap.cc
! e430228ae4a1b5bd3d4d23c4c0aa2335  libstdc++-v3/testsuite/20_util/tuple/swap_cxx17.cc
! 9d7cd667baa6fcda3411edb9c67d36d5  libstdc++-v3/testsuite/20_util/tuple/tuple_element.cc
! 3c6120d8f72584139be7249a04cb71c9  libstdc++-v3/testsuite/20_util/tuple/tuple_element_t.cc
! 7c779ae2c484a32ff552009dfa0b934f  libstdc++-v3/testsuite/20_util/tuple/tuple_size.cc
! c128e651120839caf79e9e079752e9ad  libstdc++-v3/testsuite/20_util/tuple/tuple_size_v.cc
! d0279d58de2c4e98b9328809b3c30035  libstdc++-v3/testsuite/20_util/typeindex/comparison_operators.cc
! 35df824f74b5c3c2d0954b10b9738b00  libstdc++-v3/testsuite/20_util/typeindex/hash.cc
! 7e56a4eac3cf03438d390e56fa1e90e8  libstdc++-v3/testsuite/20_util/typeindex/hash_code.cc
! 10003280cca4d6fca9eec71fe5d78879  libstdc++-v3/testsuite/20_util/typeindex/name.cc
! 3a60a0e4f24311af04abb24946d1768b  libstdc++-v3/testsuite/20_util/underlying_type/requirements/alias_decl.cc
! 48c47c271f2b63289c26511a88abcb09  libstdc++-v3/testsuite/20_util/underlying_type/requirements/explicit_instantiation.cc
! e117f13086c13e2ba3df110996d3b7fa  libstdc++-v3/testsuite/20_util/underlying_type/requirements/typedefs-1.cc
! 5ff588b783030acfc61ae193d809940c  libstdc++-v3/testsuite/20_util/underlying_type/requirements/typedefs-2.cc
! cb2bfb16a6a9bd9f04c6c60346718c54  libstdc++-v3/testsuite/20_util/unique_ptr/54351.cc
! 0d6251c39605ffb055857e967d0005dd  libstdc++-v3/testsuite/20_util/unique_ptr/assign/48635.cc
! 87ecfa32e7b5d05ea2e238f7340d5636  libstdc++-v3/testsuite/20_util/unique_ptr/assign/48635_neg.cc
! a3829cf8a45d228fe9d014726d70d4ac  libstdc++-v3/testsuite/20_util/unique_ptr/assign/assign_neg.cc
! b86eb4f95eb3723e429026bf3f9cdfb3  libstdc++-v3/testsuite/20_util/unique_ptr/assign/cv_qual.cc
! 94e2acf2dce72db5225fbbacdf5510d5  libstdc++-v3/testsuite/20_util/unique_ptr/assign/move.cc
! f5126699edd36e1cf4f20c9128885450  libstdc++-v3/testsuite/20_util/unique_ptr/assign/move_array.cc
! 2fe63814fa215f14676def29688a3f7c  libstdc++-v3/testsuite/20_util/unique_ptr/assign/nullptr.cc
! 4b6a66ad42847f34ee4842d3fc24f651  libstdc++-v3/testsuite/20_util/unique_ptr/comparison/42925.cc
! 7a819c9081c9f0e8d596e692fd54cc1f  libstdc++-v3/testsuite/20_util/unique_ptr/comparison/dr1401.cc
! 3f51d5d4a48cc123a4ca987dd5768799  libstdc++-v3/testsuite/20_util/unique_ptr/cons/77990.cc
! fd7d55cf83371c9e9d621d3002317b94  libstdc++-v3/testsuite/20_util/unique_ptr/cons/array_convertible_neg.cc
! 8e214e6346cfafcee84012d4cb2d0db9  libstdc++-v3/testsuite/20_util/unique_ptr/cons/auto_ptr.cc
! 26bb63bfcfa5b868b0fdd3b1a8f2bc29  libstdc++-v3/testsuite/20_util/unique_ptr/cons/auto_ptr_neg.cc
! fee70f9567da3a2ef36276312783aa88  libstdc++-v3/testsuite/20_util/unique_ptr/cons/constexpr.cc
! 533eb72b606258139e7514cd4c689b78  libstdc++-v3/testsuite/20_util/unique_ptr/cons/convertible_neg.cc
! 95b11a7eef8ff4c10c5b97475301fc1d  libstdc++-v3/testsuite/20_util/unique_ptr/cons/cv_qual.cc
! 7a700ba3162017cbcc26390eed140ed7  libstdc++-v3/testsuite/20_util/unique_ptr/cons/cv_qual_neg.cc
! d2b877e8db50f8fa08ca966a3c81291c  libstdc++-v3/testsuite/20_util/unique_ptr/cons/deduction_neg.cc
! 6426ae19422b4abbe024d0d4b4785a2f  libstdc++-v3/testsuite/20_util/unique_ptr/cons/default.cc
! 5905d2ee51bdb5fad6ecb33dd476ce0e  libstdc++-v3/testsuite/20_util/unique_ptr/cons/noexcept_move_construct.cc
! 172ddb735ac7ef6bf5ca7b5f3b5e30d2  libstdc++-v3/testsuite/20_util/unique_ptr/cons/nullptr.cc
! 942961669fdd473d6c433abab7143096  libstdc++-v3/testsuite/20_util/unique_ptr/cons/pointer.cc
! 94238679feaf5b2ef930a06b19208ca6  libstdc++-v3/testsuite/20_util/unique_ptr/cons/pointer_array.cc
! 5a4906abd78efcd7ca333c6181b0fcc1  libstdc++-v3/testsuite/20_util/unique_ptr/cons/pointer_array_convertible_neg.cc
! 41958523a851f8680c86ce3c074c04db  libstdc++-v3/testsuite/20_util/unique_ptr/cons/ptr_deleter.cc
! 3d07f5904848a5e916acde9c197a6e7c  libstdc++-v3/testsuite/20_util/unique_ptr/cons/ptr_deleter_neg.cc
! 193232aeab3a6499cf9a212929e1868a  libstdc++-v3/testsuite/20_util/unique_ptr/creation/array.cc
! 58305824b02a695f37de8f1744be0315  libstdc++-v3/testsuite/20_util/unique_ptr/creation/array_neg.cc
! 1b05e47bd3686072099e3bb2627e6748  libstdc++-v3/testsuite/20_util/unique_ptr/creation/single.cc
! bbebe5bc011885ad0f0b60e4f5e29033  libstdc++-v3/testsuite/20_util/unique_ptr/dr2228.cc
! fd493e0e5d685bba46521cfb4ed1e84c  libstdc++-v3/testsuite/20_util/unique_ptr/hash/1.cc
! a1cdc46132a4eb3b88fcceec1b59eef9  libstdc++-v3/testsuite/20_util/unique_ptr/modifiers/43183.cc
! b5719d509c61b35e606a9cf865a5770a  libstdc++-v3/testsuite/20_util/unique_ptr/modifiers/48398.cc
! 4254768bebc6945b5eb03abeb7ab60ff  libstdc++-v3/testsuite/20_util/unique_ptr/modifiers/cv_qual.cc
! d964cc89f00d447d127000b27606cdb2  libstdc++-v3/testsuite/20_util/unique_ptr/modifiers/reset_neg.cc
! 91cf7374799d8332580fa75fd5036ba3  libstdc++-v3/testsuite/20_util/unique_ptr/requirements/explicit_instantiation/explicit_instantiation.cc
! 28183d05bb2c10652976f1ceb09fd09f  libstdc++-v3/testsuite/20_util/unique_ptr/requirements/pointer_type.cc
! b8f4dad545a14eee5933fde3cd9026da  libstdc++-v3/testsuite/20_util/unique_ptr/requirements/pointer_type_array.cc
! ca69a45b7c9b170b487095106ad60531  libstdc++-v3/testsuite/20_util/unique_ptr/specialized_algorithms/comparisons.cc
! 91bc6e6b5a780166616c350e018a9c1e  libstdc++-v3/testsuite/20_util/unique_ptr/specialized_algorithms/comparisons_array.cc
! bdc18fecd9027b83de5c74a9a2a17a2e  libstdc++-v3/testsuite/20_util/unique_ptr/specialized_algorithms/swap.cc
! f232c317b13b105a87147eeacf89d1d5  libstdc++-v3/testsuite/20_util/unique_ptr/specialized_algorithms/swap_cxx17.cc
! 7b35ddf7d24210a38efa58fae7d5d710  libstdc++-v3/testsuite/20_util/uses_allocator/69114.cc
! 4f89e8cb8eaad0dd99bcb3a628362515  libstdc++-v3/testsuite/20_util/uses_allocator/69293_neg.cc
! 9b9c4af925f555a05d569ac0f330c91f  libstdc++-v3/testsuite/20_util/uses_allocator/cons_neg.cc
! 36575c5c0f8106eb535914376afa8cc7  libstdc++-v3/testsuite/20_util/uses_allocator/construction.cc
! ffd1f920ce5d07355393fddfcd00356f  libstdc++-v3/testsuite/20_util/uses_allocator/requirements/explicit_instantiation.cc
! 6c8d6b0569dd8dd87422d8478bd35bd9  libstdc++-v3/testsuite/20_util/uses_allocator/requirements/typedefs.cc
! 18e39fc897aed508305c500187b8ab83  libstdc++-v3/testsuite/20_util/uses_allocator/requirements/uses_allocator_v.cc
! 929c895b20be4dd2565908c3fc1a826e  libstdc++-v3/testsuite/20_util/uses_allocator/value.cc
! 0b56c65a63aeebfda1e327abe33f1947  libstdc++-v3/testsuite/20_util/variable_templates_for_traits.cc
! 607aa2f9940ef542a06a4e33fd69a96b  libstdc++-v3/testsuite/20_util/variant/85183.cc
! 5dfa07d9513e33f1fb46f85d6c9a9040  libstdc++-v3/testsuite/20_util/variant/any.cc
! 78686e68a5fdb7ab0a72bcf32d78e6e7  libstdc++-v3/testsuite/20_util/variant/compile.cc
! 75e2ca0044681e55785f1949fc6677d5  libstdc++-v3/testsuite/20_util/variant/deduction.cc
! a8518acf11f1427f9c470465bd65a52e  libstdc++-v3/testsuite/20_util/variant/hash.cc
! 376efd260ad9bbf6de4de519c6049b36  libstdc++-v3/testsuite/20_util/variant/index_type.cc
! dd09f270ae491c1efdc019c87171aeb4  libstdc++-v3/testsuite/20_util/variant/run.cc
! 7c1051051979e8bcf08f597664338a9d  libstdc++-v3/testsuite/20_util/void_t/1.cc
! eb28b11355106b4874214e1390631a79  libstdc++-v3/testsuite/20_util/weak_ptr/comparison/cmp_neg.cc
! 72c013d53e70e46c32c7e6351e543b03  libstdc++-v3/testsuite/20_util/weak_ptr/cons/constexpr.cc
! 0eb26100aea5ffba711cea72426e7ece  libstdc++-v3/testsuite/20_util/weak_ptr/cons/deduction.cc
! 8f5d12a2bdfc9c80d84a8484425350d4  libstdc++-v3/testsuite/20_util/weak_ptr/cons/noexcept_move_construct.cc
! 3701b50b2ae943862202f3ed409a3ab2  libstdc++-v3/testsuite/20_util/weak_ptr/lock/1.cc
! 67d719d47a7d7ba75c5b93b75c4f8a81  libstdc++-v3/testsuite/20_util/weak_ptr/observers/owner_before.cc
! 4112891ee373d443b857ff1356a854f4  libstdc++-v3/testsuite/20_util/weak_ptr/requirements/explicit_instantiation/1.cc
! a4278a78525cfbce18c3b4f6675b239c  libstdc++-v3/testsuite/20_util/weak_ptr/requirements/explicit_instantiation/2.cc
! fde0fb9a1d1bd1f2726bc1fa3a97cf2d  libstdc++-v3/testsuite/21_strings/basic_string/40160.cc
! f4a223a0c01dc92cf64a282ce217b121  libstdc++-v3/testsuite/21_strings/basic_string/56166.cc
! c7bfdac9f6129cb32906314a1060b80a  libstdc++-v3/testsuite/21_strings/basic_string/79162.cc
! f8a891ed1eb3559e5e104fee4c13da5a  libstdc++-v3/testsuite/21_strings/basic_string/allocator/71964.cc
! 7856e0a2d0b74cc33d17ca521921251a  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/copy.cc
! 671f314da952d192726a706898715d4c  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/copy_assign.cc
! b2a9fa1d3c2078a75debe438bc1df78e  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/minimal.cc
! a9df0013cdb0e3a1907673bc1a963944  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/move.cc
! 845329963bdca40cf6da977d70cb9e79  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/move_assign.cc
! 2c282a7910e9cc317d6b105e589b798c  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/noexcept.cc
! 1c58e434d9da5d19b3401926a8bbece7  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/swap.cc
! cf7717231b71a0be8f6f5bd1a5f5df06  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/copy.cc
! 0c65b2aaaef034c2280e2489e0ab3525  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/copy_assign.cc
! 272f44494b67acdd91756d9d6907e2d4  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/minimal.cc
! 87c6e297e6081e270f64d6009a5e37da  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/move.cc
! 936315c8392829e48b4532088e839e5d  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/move_assign.cc
! 0404ef8b095fb28435e3373ba159389f  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/noexcept.cc
! 9b01e98bee6a2580073c022d3921f367  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/swap.cc
! 09adf580a65956e9aebb09ceed4fb8ed  libstdc++-v3/testsuite/21_strings/basic_string/capacity/1.cc
! a8b4d70a27e5d51a2d50937b2b12c615  libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/1.cc
! 70a35233d1819424d478cbacc1d441a8  libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/18654.cc
! b60d17c8c0e49ae99b6554ba0477d14a  libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/2.cc
! a9c2ef209c0586b85f8e7aa3c6d983ab  libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/shrink_to_fit.cc
! eb3e1121b8c220322230a319e1ba359f  libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/1.cc
! 7eb219126e42fdca20af877177d1446d  libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/18654.cc
! 6b86366ea3bfe767b2b2c2f05cc085a4  libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/2.cc
! cbc269fd0ae5ce854bf730e208b1096a  libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/shrink_to_fit.cc
! 527b10b6cebc8034b9aacbfdf808837d  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/1.cc
! b5021f554fa5e0689a5bb0fbb093fc8d  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/2.cc
! 33ba8db00b23c595e0ca3551ad254dfc  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/3.cc
! c1b0dc321b0bddb9f73a638ea88099bd  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/4.cc
! 959d8f372f5bdd1a516da16659bd95dc  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/42261.cc
! 4df46e8e53293d5eebe2e771a912bfbc  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/5.cc
! cfedfd53a955cf10b848adb73ddf0c62  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/6.cc
! 5cf42664e2810481d701f09a9555ba8e  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/64657.cc
! c10e1f0160139b279c74f1d653b88a9b  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/65085.cc
! 70d173646cf2c5b79af290b801458efa  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/69092.cc
! 25fa1dc7438a523abf0b0b9f9025705e  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/7.cc
! 490441252f8c6cd11dffbbb1891c9e3a  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/79162.cc
! 10988d32264f3ee97df87202068f44da  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/8.cc
! 800088e7d467b3ae48636920e19fea42  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/9.cc
! 194d48448400869dbfff5d7ae8271a9e  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/deduction.cc
! cef1f1523b485fef47763ec170af8004  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/moveable.cc
! 1898c838e23eb75ff9bb95c62717d5ba  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/moveable2.cc
! 2550b938e905a4ef3e0fb3a8871d4e72  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/moveable2_c++17.cc
! 0abfe4bef19b3b0c788e30027b61a2d2  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/noexcept_move_construct.cc
! 486f50c49893a24720c1ec29f3a712e3  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/1.cc
! 422e0b44b385a57ae068d9be588fe9cb  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/2.cc
! b497d4a139bacdf66d816bb4ba3aab4d  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/3.cc
! 7d1f6d8f98d0b77e6267f12c03f197a6  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/4.cc
! eabacbfd3ed09c5d20a2c3b2ab135738  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/42261.cc
! 03b0a3b3cab429a541ba4d2a50f9c9b3  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/5.cc
! 7e7cdadc0e97e6f00d41710c634faeca  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/6.cc
! f2b8d2a5c78c8e6b82fd4c5e29bca380  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/7.cc
! 490441252f8c6cd11dffbbb1891c9e3a  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/79162.cc
! bf9aba47f6125cef93b8c4702ccf07f5  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/8.cc
! 1604adf7c752b4321d61af24dda6568a  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/9.cc
! 07fe29d2be1d00f1890ae8693e8e9352  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc
! f3bbdf701694b8b2926fd6debf9fd1c8  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/moveable.cc
! 4d090346bbc056ce727518a1dfcdfe55  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/moveable2.cc
! 52c85948259ef90662ffca80a3f51b29  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/moveable2_c++17.cc
! b9baaf8fd828745e27090ce450ed4072  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/noexcept_move_construct.cc
! f23eedcbfe12a2e489e133eb9306af08  libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/1.cc
! 8fb8a7eb767fadada8df6813067e034d  libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/2.cc
! 333d3d0dfce15d7fa546d3dda57c8c55  libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/21674.cc
! 887439cc5bfbab09c089ddc44f2e4a39  libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/3.cc
! 9cb6fb2c09644ed3f1bf1114a5f51a9d  libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/4.cc
! 490ee4ab1b923057bcb80a804582e54f  libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/58163.cc
! 208f76382d5003a7eabe432e87464cb7  libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/empty.cc
! 2578e84c352f0ced1e6f2cc72f7f2aec  libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/front_back.cc
! 978d37d2967659992d7b383b4983c18f  libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/1.cc
! 37e15b6748f18950a832d8358d8147a2  libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/2.cc
! 2d073f8fe02d3bb158228ff71b51c677  libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/21674.cc
! e4f6c39599f25adff5622ad4478140ae  libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/3.cc
! da03cf68c8e567cecb5a72c86225265b  libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/4.cc
! 304c72864a9ea65b3626f780dd64e8f6  libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/58163.cc
! e561726b64b7ead2eb81ab6db2857f43  libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/empty.cc
! 250729148e2c33bc8790fd6ecd8e1ab8  libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/front_back.cc
! 434ac6ddf5e3ab95bf487f74811967d0  libstdc++-v3/testsuite/21_strings/basic_string/init-list.cc
! bb4307ae3f390da8cd2221f7a6c2a291  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/1.cc
! 4e3b4828eedfbf1d5f37ce8e5a106d0e  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/10.cc
! 44dd3e4728ba961f721dfebffc4d37b9  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/11.cc
! ab3265b1d6a9d615fbaf5d1fcf8fb87a  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/12.cc
! e8a18775f29d810689792157a8c888e7  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/28277.cc
! 316d050c101b4bc98c5caba166a8fa6e  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/4.cc
! 663991f8e9f02fe3501fb3ab8d55f1a6  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/5.cc
! 1ed8776b776792f9da22945090e211cf  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/6.cc
! 63af4d923d06687e5b928de7df1fb3a5  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/7.cc
! 459b1dee9ca5ab631c1c2519e2ae7632  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/8.cc
! 5f543e53de50392648934aac808a3ed1  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/9.cc
! 045c05224033ab00a6ac7658b411cfa7  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/pod/10081-in.cc
! 1a6667014ee588133c6bfc16218d3b5f  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/pod/10081-out.cc
! b20236760004bd9e9a4b1354a8a91502  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/1.cc
! e654d6902f0e830abff3f864a643eab3  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/10.cc
! f1c07a9cffcfb415ad76a2dd5407318c  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/11.cc
! 2c449b52be0076d8cd3970704262a276  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/12.cc
! 04c3d176253bcf597000cce5e6819bde  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/28277.cc
! 6c41df6c908ba1aa7c3f4232cf5fe7b7  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/4.cc
! c887c170e86364ad7500d60689ebc7fe  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/5.cc
! 853b4b5ebc9176bac664b053a030b7b2  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/6.cc
! ac2ce517f9d9791dd1f650265fbf955a  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/7.cc
! e1622c2961f51d17748ae7b19fb65b05  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/8.cc
! 02a3548b968377eef78ed2305c557639  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/9.cc
! 407ecd8f5ead83b6b7a79f59e821185d  libstdc++-v3/testsuite/21_strings/basic_string/literals/types.cc
! 2a092c1b8da4da56c3df25b53b1c8464  libstdc++-v3/testsuite/21_strings/basic_string/literals/values.cc
! e9c4bde6ff6648d536ae1000145dbdf1  libstdc++-v3/testsuite/21_strings/basic_string/lwg2758.cc
! 155e4d75283eeb1a4982b420574f402b  libstdc++-v3/testsuite/21_strings/basic_string/lwg2946.cc
! cc27408fe6178ac942bd3bf31f3144c7  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/64422.cc
! f473a774a5cabbe1054ccb10a383e9b8  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/char/1.cc
! 10e525af1025c865f655e5a3453269d6  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/char/2.cc
! 098667dd91805c4d4ff1ff849bf4bd1c  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/char/3.cc
! 8405a814e92621232412feb3a43626ef  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/char/4.cc
! f949945d248984af0791d340c1875c18  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/wchar_t/1.cc
! 74daadd1a1ad7507bb367504a9db0029  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/wchar_t/2.cc
! b20632d07a49c1ed2d1dbe0192b5a186  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/wchar_t/3.cc
! 6433f460d45f84dacc187d3b6f3b9d38  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/wchar_t/4.cc
! 7c823d507a57c19909b76a3c0a5bf843  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/1.cc
! 5a6c48904dbed42669cfdc77ba1a6172  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/2.cc
! 87ce899679cdb49c8f69e0f6b8309f88  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/3.cc
! 09fcef2343c20174c86dd30e2a97892e  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/4.cc
! fe4179abdfe2d31868b9dafbf002a8f5  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/64657.cc
! e2cfff38699ebe8a1e333e683e54927a  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/move_assign.cc
! 074a1401f220a938fd783b76b085221b  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/1.cc
! a885a78ed8a832d762061fec9e260afd  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/2.cc
! b209d9061aefd060f7f568ad86f98f0f  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/3.cc
! 3c8330f41aa8f65f8099cabf14328f41  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/4.cc
! b202528618396ffae4da6d62114ee54b  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/move_assign.cc
! 4f59e264739091d36fa8c9eb23ee2bd0  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/char/1.cc
! 1fa31c6db77dea285fa99b0f9cbc1ba1  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/char/2.cc
! 41b4f5a8a9d19a57214dff8c8d1ab46c  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/char/3.cc
! 0e7b82ec9c1f6e3b86a57f660aacd432  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/wchar_t/1.cc
! 3a435b96fd14f81f2eefa7140a032017  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/wchar_t/2.cc
! 5f632db54a76fc913b1066823a12230a  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/wchar_t/3.cc
! 78cf2f8857b065d58b6ed3bf680debc8  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/pop_back/char/1.cc
! 0831a2ec77c42223c41db98184727854  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/pop_back/wchar_t/1.cc
! ba451e27732978ba63c7217fc23fe74f  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/1.cc
! 6db3b7af1ba27be5eb0a46b678c493a3  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/2.cc
! 86d0ffa25a8aa008bc76a89402f1a4ea  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/3.cc
! 0d711c80fd4ca4894310faaa89a66637  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/4.cc
! 8a7b8813c796fbb4fc4bb6b01b84ddc6  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/5.cc
! e3d686e7c8e98ea08c92d0a0729477b5  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/6.cc
! 2b2fc5d2ccc93efffc489e3609b5d962  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/7.cc
! c5d1d4ebd3940dd83d4bc832bb920e65  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/1.cc
! b4858f2ba8dde323b15407e0cf38e72c  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/2.cc
! 9d27591aa8224efbde553b24d9fd06cf  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/3.cc
! 8eb0dddf7781dae1f6a28206cb1de2be  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/4.cc
! 7b4fe21c7adbcec1816b36bec07702ac  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/5.cc
! a7f091d74bb52ef623f370d9aedc976c  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/6.cc
! 7f1354ba46494f97584a15c829c9ebe0  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/7.cc
! 47ffb8f8f496e749a72f9e3215ff45e8  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/dr1261.cc
! 9edbb02e697ac05eed7da0de934039b9  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/errno.cc
! df2246ab0e326d7db7a3fedfefa0599a  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stod.cc
! f2a37d66d3dc29cd7317809987715941  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stof.cc
! 38307d7f12ecd7fd8ea10c0568fa6a5a  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoi.cc
! 41d8f6b1f8d2f6de3720c63e04097075  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stol.cc
! 0c6ecc7e239e06ad75e17d760613df6e  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stold.cc
! a9c7d290c43a04d02742badbcd7cadd6  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoll.cc
! 57fcbbfb5a5bc96f01ccdf95cf076d03  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoul.cc
! 770bc9141adc6b424410068721a16ece  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoull.cc
! c11381af25a669a783c10f172601343a  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/to_string.cc
! 5e32541e406f295579a472d259884c02  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/dr1261.cc
! 35da878fc56842467320ed6eecc859fe  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stod.cc
! a8b83a5cc819d51620c3aafcba518e14  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stof.cc
! c82c01b08941793b1046222adbc18fe3  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoi.cc
! bd319eff1b6970cbe2f6dc927cd0b424  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stol.cc
! c31f6b3710b90e8d283e22cfcc7e5623  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stold.cc
! 09753e7dd9e13056749b22ea070e130f  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoll.cc
! f89b25b43d5d3c3b086bd7eee7392a81  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoul.cc
! 171e1b79a4707e6f1a0ff6f5b1bdf868  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoull.cc
! 16f7aab140b00e94d639bd85982d8d20  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/to_wstring.cc
! e7f3d35dfcfc356db90e7ba1bf44d43b  libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/char/1.cc
! d2ba754c4a9bb370e03eee4adf40d0d9  libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/char/13650.cc
! 1729df460bc88a79f5e5a721b532bbcd  libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/char/2.cc
! 5fcad904124d9cb8b3ae030d0cecaf25  libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/wchar_t/1.cc
! e9d4c2fda1a18567f6d30cc8e8318fdb  libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/wchar_t/13650.cc
! 6bce652601bc08f158c73a9da19d6e41  libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/wchar_t/2.cc
  da3f700a53d22cd029a604673e059e11  libstdc++-v3/testsuite/21_strings/basic_string/operations/data/char/1.cc
  9c862000398e6a89b8c4cc17fe666c2c  libstdc++-v3/testsuite/21_strings/basic_string/operations/data/char/2.cc
  ca74682c72cb547cf309e380caad822d  libstdc++-v3/testsuite/21_strings/basic_string/operations/data/wchar_t/1.cc
  896589bdc779441eea34071f745eaa6f  libstdc++-v3/testsuite/21_strings/basic_string/operations/data/wchar_t/2.cc
! 0c5ca81c29e9828945009ddfbf71c821  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/char/1.cc
! e7427c53202491f293aea5f27ef7f6ca  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/char/2.cc
! d926c0d8a71c3d254216e0dd89335e07  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/char/3.cc
! fb60922018bb772c4880ef49379fe740  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/char/4.cc
! 9776e5842e23b19de4a9995e1f50e1ac  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/char/5.cc
! cb9474287ee7c0091b51222a98319404  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/char/6.cc
! d799ec502144a6ceba30be2534a89c58  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/wchar_t/1.cc
! 3132be34260a0d636ae5eaf59f4136fc  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/wchar_t/2.cc
! b8ccceca0ae46a849e62cd480637aebc  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/wchar_t/3.cc
! 978a606b1e3efe8ccf14d77110b7764e  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/wchar_t/4.cc
! b608de319faf51bb4c1b2be96db0daf9  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/wchar_t/5.cc
! 6fa5b117705d997e0420dec11a1161a0  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/wchar_t/6.cc
! 723a06b51d36e5a308d42b09b132414d  libstdc++-v3/testsuite/21_strings/basic_string/operations/rfind/char/1.cc
! adff98a01765964e66804d53cd200178  libstdc++-v3/testsuite/21_strings/basic_string/operations/rfind/char/2.cc
! 5ef440b7d9f0da0eec117c973469966d  libstdc++-v3/testsuite/21_strings/basic_string/operations/rfind/char/3.cc
! c0ea7dee523017af0f99729fe3ab4439  libstdc++-v3/testsuite/21_strings/basic_string/operations/rfind/wchar_t/1.cc
! e1a7283ed1a997c7e5e8c8d6fda36754  libstdc++-v3/testsuite/21_strings/basic_string/operations/rfind/wchar_t/2.cc
! af1e554cc0667b26755393c038e07d37  libstdc++-v3/testsuite/21_strings/basic_string/operations/rfind/wchar_t/3.cc
! 1288151d0b0a0c0c892cdd38205cc0f4  libstdc++-v3/testsuite/21_strings/basic_string/operations/substr/char/1.cc
! a908d32f3af73b24a6e28de3bb88f46e  libstdc++-v3/testsuite/21_strings/basic_string/operations/substr/wchar_t/1.cc
! 980c64933082118c44f21ed6b303d480  libstdc++-v3/testsuite/21_strings/basic_string/operators/char/1.cc
! 4a2665fef2bce3d85a0d984bd8f10b3a  libstdc++-v3/testsuite/21_strings/basic_string/operators/char/2.cc
! a350b9067f073cb7830c906eb3d10d3d  libstdc++-v3/testsuite/21_strings/basic_string/operators/char/3.cc
! b0d1b466bbe4b136012c099e4c110e14  libstdc++-v3/testsuite/21_strings/basic_string/operators/char/4.cc
! dc76247e82755fc8aac77eefccd93d51  libstdc++-v3/testsuite/21_strings/basic_string/operators/char/5.cc
! ba748afd333f59e113eddfd6652051a6  libstdc++-v3/testsuite/21_strings/basic_string/operators/char/65630.cc
! 15b04494c606a05b8cb5b4f2dc4accc7  libstdc++-v3/testsuite/21_strings/basic_string/operators/wchar_t/1.cc
! 40d4d272b8312eb78a601d4fdc9a31d6  libstdc++-v3/testsuite/21_strings/basic_string/operators/wchar_t/2.cc
! 478e2b3b43ac6d86462c3475656c74b1  libstdc++-v3/testsuite/21_strings/basic_string/operators/wchar_t/3.cc
! 799e6282585315b16909da0b6016681d  libstdc++-v3/testsuite/21_strings/basic_string/operators/wchar_t/4.cc
! 8a3bb7ca483865e6d3a285ae31b6d058  libstdc++-v3/testsuite/21_strings/basic_string/operators/wchar_t/5.cc
! a807ee3221bbe73a14f8ce790b500b98  libstdc++-v3/testsuite/21_strings/basic_string/operators/wchar_t/65630.cc
! e7d740a6534c39d709008e02b444de4d  libstdc++-v3/testsuite/21_strings/basic_string/pthread18185.cc
! a8e48ba170808cd171b81064c033da61  libstdc++-v3/testsuite/21_strings/basic_string/pthread33394.cc
! 1e5d8f9dd27f265d5d1aedaa33922e0b  libstdc++-v3/testsuite/21_strings/basic_string/pthread4.cc
! 4cf7ad05db9110eaa8a4f3c856f03a0e  libstdc++-v3/testsuite/21_strings/basic_string/range_access/char/1.cc
! 52f0daa40ca83efb8df681fc53a3c25f  libstdc++-v3/testsuite/21_strings/basic_string/range_access/wchar_t/1.cc
! d5e0120d97760b0dee756fdfc4486f2a  libstdc++-v3/testsuite/21_strings/basic_string/requirements/citerators.cc
! de52ca96ffbc81314aef561a828e00fe  libstdc++-v3/testsuite/21_strings/basic_string/requirements/dr438/constructor.cc
! 70620d60b71c95763931c9eface41461  libstdc++-v3/testsuite/21_strings/basic_string/requirements/exception/basic.cc
! cea2a25578b6e4b7765b09fa8d46b3e3  libstdc++-v3/testsuite/21_strings/basic_string/requirements/exception/generation_prohibited.cc
! 187e98a10ae52931d9c222805feaef30  libstdc++-v3/testsuite/21_strings/basic_string/requirements/exception/propagation_consistent.cc
! 1c2e1c2154a33f4700d5a6781a7a7e1a  libstdc++-v3/testsuite/21_strings/basic_string/requirements/explicit_instantiation/1.cc
! 5221d2544510aa529dab30a31e7eeb5d  libstdc++-v3/testsuite/21_strings/basic_string/requirements/explicit_instantiation/char/1.cc
! 0765dfce6c218b01b1e59463ad085e53  libstdc++-v3/testsuite/21_strings/basic_string/requirements/explicit_instantiation/char16_t/1.cc
! 972b0e2d39313a24bf1cf9ec32bde56c  libstdc++-v3/testsuite/21_strings/basic_string/requirements/explicit_instantiation/char32_t/1.cc
! d42cf70eb7c444f1c7a6764aeaa98b4e  libstdc++-v3/testsuite/21_strings/basic_string/requirements/explicit_instantiation/debug.cc
! cef0a7fced0037f359c7977d24f7eba7  libstdc++-v3/testsuite/21_strings/basic_string/requirements/explicit_instantiation/wchar_t/1.cc
! c634443e4807ad4b4d9a8939b15aca55  libstdc++-v3/testsuite/21_strings/basic_string/requirements/typedefs.cc
! 3d136b601efb8e5d33c7e65cbe574fe5  libstdc++-v3/testsuite/21_strings/basic_string/types/1.cc
! 84fccead87dec0cc9ae0c418cd6cb8ab  libstdc++-v3/testsuite/21_strings/basic_string/types/23767.cc
! 43412975b922c9c2acc4e25a9bc32f04  libstdc++-v3/testsuite/21_strings/basic_string_view/capacity/1.cc
! 7bf0256ae607a7de598717b7d54d7f4e  libstdc++-v3/testsuite/21_strings/basic_string_view/capacity/empty_neg.cc
! fb4f8a9113dac5b5fb8f8208f936a175  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/char/1.cc
! f09fe26e6636ec8f2417bab23b4bb533  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/char/2.cc
! f77497f8d33a1898d90c3ab5914c48cf  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/char/3.cc
! 1f05f55f2d11bab049e71ceabb806d01  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/wchar_t/1.cc
! ef8a69e7881d814ee41e3bda2a363119  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/wchar_t/2.cc
! e70625d4d2e83321a44b3e079262c192  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/wchar_t/3.cc
! f453735b89883e9697f3615a6af2ae85  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/1.cc
! bcc57b700eb5da63a1134ccde34457bb  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/2.cc
  5b0aa2d0970d389896383f28b70b7eab  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/empty.cc
! 1e99008b5db57cd13397cefb873d8cff  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/front_back.cc
! 5296db9b92d4f2b8c5ab76a4bb1ba3d1  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/wchar_t/1.cc
! 6a3e7cf3f65a928187846153c0d9b92d  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/wchar_t/2.cc
! a98b07b2a7de33adb929af9ca9d0041a  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/wchar_t/empty.cc
! fc03b6e83665a760150da5c7aa4e6a43  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/wchar_t/front_back.cc
! e3542528e4d8e2cd76173b942723a5f1  libstdc++-v3/testsuite/21_strings/basic_string_view/include.cc
! 30759ec5210c59eea9551af7329cf006  libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/char/1.cc
! 4f4a31128a38dd238d4526b7d3a301e0  libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/char/2.cc
! 4a63b3b871db8917b6e5eb45ec01c7c9  libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/char/3.cc
! ff68a5e91b6af04f0e9f3fc8247aa611  libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/pod/10081-out.cc
! 48ec10d7fa4729bb39ffea2be08f90ee  libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/wchar_t/1.cc
! 1afd9c4a39de84040cf081324677bf0e  libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/wchar_t/2.cc
! cddcea4d48efa60e6a26f09befd800b7  libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/wchar_t/3.cc
! 082c9b18c79ab361a37dc879f01c0cf9  libstdc++-v3/testsuite/21_strings/basic_string_view/literals/types.cc
! c60f423916270a07f6fabdd508d673e6  libstdc++-v3/testsuite/21_strings/basic_string_view/literals/values.cc
! 57a813133265bd74a5dc976c67dda96c  libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/remove_prefix/char/1.cc
! 680d5bacf7585c66f8aae3dbfc67905e  libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/remove_prefix/wchar_t/1.cc
! 452a3c38fda8cf540eb1978f640b9146  libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/remove_suffix/char/1.cc
! d59ff39cbac9ec33a00f516207fe0883  libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/remove_suffix/wchar_t/1.cc
! 5155337d33421ba909f820b56845fec3  libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/swap/char/1.cc
! f6aea5880c193b21dbd48d14217c28d2  libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/swap/wchar_t/1.cc
! c55246670d483dd7b3fc421d30098280  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/1.cc
! a115ab6ec091e24eed87549cd8ed3531  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/13650.cc
! 1774f3716256af7bd52ec714d37bb87e  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/2.cc
! fd7c3ea7207f5461fcf548a58f8bd661  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/70483.cc
! 6f83f74cf1f49f06009ac91655d71d0d  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/wchar_t/1.cc
! ef9b4bb80b1a9a333ee8e31e2067fd69  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/wchar_t/13650.cc
! 6fec7333080f08aed0af226ee1768559  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/wchar_t/2.cc
! 4eb916a006f6105a8d7fadc037f6d494  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/copy/char/1.cc
! feb7205ab7e6a166695e3b3887d105bd  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/copy/wchar_t/1.cc
  b178593999d92cbe5e29f11ccb26422c  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/data/char/1.cc
  0dab42efa58d63a01667ea2a23b61401  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/data/wchar_t/1.cc
! ca2a7adc1b86349c601d061a247798dc  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/char/1.cc
! bdd70cc55e7de4002087753970897733  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/char/2.cc
! 05df0af5b57159a40ea423e348d72f19  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/char/3.cc
! 59285e35b3d20821792adf5385c48e55  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/char/4.cc
! 98a91562078daea8fb855d205f23ddd1  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/wchar_t/1.cc
! 9b06e9cd348f19a18fec943700aba7bc  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/wchar_t/2.cc
! 31c396cc7334791fc455363c6df76560  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/wchar_t/3.cc
! df4758c2273b3185468b4d7c7cdc1586  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/wchar_t/4.cc
! 557aac69be33733aa2dfbb093a3fcc56  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/char/1.cc
! 461d07c62e47ce9f30afb976c5b9d3b8  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/char/2.cc
! a370da9dc37f2967716fb0d632b09317  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/char/3.cc
! 8eabf1446b4f2a276a9c5ba08eaf025c  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/1.cc
! 267520287aac6eff68218c86e7b416fe  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/2.cc
! be89db8a5068f1c4627681afee23307b  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/3.cc
! dfd8058c798fbe325b5bd8140bcca4fb  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/string_conversion/1.cc
! 23913f7d901e4ec620df807858a3254b  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/substr/char/1.cc
! 49ae415d00483574240fa3d99b95d63d  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/substr/wchar_t/1.cc
! 5d93952eb3d4997f13486b39df2e0ba0  libstdc++-v3/testsuite/21_strings/basic_string_view/operators/char/2.cc
! a734cbdf8949c90c23f4b09b361f3305  libstdc++-v3/testsuite/21_strings/basic_string_view/operators/wchar_t/2.cc
! 15c7d5bed6043124195f71158e468c13  libstdc++-v3/testsuite/21_strings/basic_string_view/range_access/char/1.cc
! 3e64b266315f4396a46c4aef92098b1d  libstdc++-v3/testsuite/21_strings/basic_string_view/range_access/wchar_t/1.cc
! ffdb77583b32b740ea593251ecc6a958  libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/1.cc
! 8e8e2c7b4e03e1dae593c3c4276c1176  libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char/1.cc
! 04cf46928ec85a95eaf286ec79480224  libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char16_t/1.cc
! 9687234f8ac82a3c8d9fcc234cb47100  libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char32_t/1.cc
! 21da4700f19d9fe06a599d4e68d9fd98  libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/wchar_t/1.cc
! 70ee377463d31b249d7a01043ee17808  libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/typedefs.cc
! 71995ff25bd2892c39d71ad5d9aef5a7  libstdc++-v3/testsuite/21_strings/basic_string_view/typedefs.cc
! 4d62ae71f5dd85de4a700ae9c771ab9c  libstdc++-v3/testsuite/21_strings/basic_string_view/types/1.cc
! c489ad3cface971f791747217f593641  libstdc++-v3/testsuite/21_strings/c_strings/char/1.cc
! 0277e49f0878181510dc17486b26f87c  libstdc++-v3/testsuite/21_strings/c_strings/char/2.cc
! 46f154458cae3cf8c769e44c85bca451  libstdc++-v3/testsuite/21_strings/c_strings/char/3_neg.cc
! 320f15eee936aacc1253ccb177969ef9  libstdc++-v3/testsuite/21_strings/c_strings/char/69626.cc
! bbb69264958eb7103e519a50276935d8  libstdc++-v3/testsuite/21_strings/c_strings/wchar_t/1.cc
! 90c2883b7314e661c0378c40a4d99df0  libstdc++-v3/testsuite/21_strings/c_strings/wchar_t/2.cc
! 2426e6f2b09fc89f8bfda8ce0f1d2e5f  libstdc++-v3/testsuite/21_strings/c_strings/wchar_t/24559.cc
! 4707b17a18b4cb03d2efaf04557a4f7b  libstdc++-v3/testsuite/21_strings/c_strings/wchar_t/3_neg.cc
! c2b2ae15bbfc7f2267dcad246f90c582  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char/1.cc
! 4a17e298a856f894c0b9a46ae23fbdf1  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char/57704.cc
! ed7a3a7f109f2250584a0ab14bd6b8a1  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char/65049.cc
! e28cfc1024d48a27eb33fd7f37b4f589  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char/typedefs.cc
! bb63ae416e67e5ddd47494a777eb8fbd  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char16_t/65049.cc
! fa6379a52fa65a808869575db4b58a95  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char16_t/eof.cc
! 6d81f69e4626edfc0dd29848531cba61  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char16_t/typedefs.cc
! d5ef46ee9199d2029c444b7078a83647  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char32_t/65049.cc
! 577462ebf28eee07ad2ae51e52b30584  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char32_t/typedefs.cc
! 087a4a596dc2eb76036e0055f357ab6a  libstdc++-v3/testsuite/21_strings/char_traits/requirements/constexpr_functions.cc
! d24593b01329f03b510213a2c694c558  libstdc++-v3/testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc
! b95bd8d7a5e986ad71d2138ccdc9c1c8  libstdc++-v3/testsuite/21_strings/char_traits/requirements/explicit_instantiation/char/1.cc
! 3aa164e3f86fb53257c2ca4af8e95a95  libstdc++-v3/testsuite/21_strings/char_traits/requirements/explicit_instantiation/char16_t/1.cc
! bd863387359ce6a4ff26e6b3f46d3567  libstdc++-v3/testsuite/21_strings/char_traits/requirements/explicit_instantiation/char32_t/1.cc
! 8c7c627e900f5d28e1cee703125d351c  libstdc++-v3/testsuite/21_strings/char_traits/requirements/explicit_instantiation/short/1.cc
! d6348c43dea00b847baffacae5237a12  libstdc++-v3/testsuite/21_strings/char_traits/requirements/explicit_instantiation/wchar_t/1.cc
! 2c51b1f2ef318841e53ff98a504ba017  libstdc++-v3/testsuite/21_strings/char_traits/requirements/short/1.cc
! 454224b175d58ec738c65658692a1deb  libstdc++-v3/testsuite/21_strings/char_traits/requirements/wchar_t/1.cc
! 283a8f122554de71e025b07448eae8fb  libstdc++-v3/testsuite/21_strings/char_traits/requirements/wchar_t/65049.cc
! 39f2dcdace5307b2124e176888e9a490  libstdc++-v3/testsuite/21_strings/char_traits/requirements/wchar_t/typedefs.cc
! 7c6fbe035b3ca4a79a0de24bf5cc077f  libstdc++-v3/testsuite/21_strings/debug/iterator_self_move_assign_neg.cc
! 2351101eb46560c7ad536a7f4a761bf6  libstdc++-v3/testsuite/21_strings/debug/self_move_assign_neg.cc
! 5caf3e8e50906907ec09155d78347cc6  libstdc++-v3/testsuite/21_strings/debug/shrink_to_fit.cc
! a78875277be8d7355a72e8d5c40d202c  libstdc++-v3/testsuite/21_strings/headers/cctype/functions_std.cc
! f2a60e2033e5d5791ed0ea12f32c36dc  libstdc++-v3/testsuite/21_strings/headers/cstdlib/functions_std.cc
! fbda688506b8e7d8f1b5a7dba11bcf52  libstdc++-v3/testsuite/21_strings/headers/cstdlib/macros.cc
! 9180acd20cc6ba303da80ea9bb7eb02b  libstdc++-v3/testsuite/21_strings/headers/cstring/functions_std.cc
! fbda688506b8e7d8f1b5a7dba11bcf52  libstdc++-v3/testsuite/21_strings/headers/cstring/macros.cc
! df58debbc50d56e6a5a20c763384bf03  libstdc++-v3/testsuite/21_strings/headers/cstring/types_std.cc
! 4f30c580612f511e00bb95c2c2087484  libstdc++-v3/testsuite/21_strings/headers/cwchar/functions_std.cc
! f61120810ca09bfffebdfd5cfad35a0c  libstdc++-v3/testsuite/21_strings/headers/cwchar/macros.cc
! 514a753763a2bea02de944cbc271a03a  libstdc++-v3/testsuite/21_strings/headers/cwchar/types_std.cc
! dea8c5eafabe67c39688615bf58dca12  libstdc++-v3/testsuite/21_strings/headers/cwctype/functions_std.cc
! 8d679d90868bd1c15097425dcfe67775  libstdc++-v3/testsuite/21_strings/headers/cwctype/macros.cc
! fb18cdf570fdfbad6969ebf36089c21a  libstdc++-v3/testsuite/21_strings/headers/cwctype/types_std.cc
! df286873ff068a27aba3543a961255ca  libstdc++-v3/testsuite/21_strings/headers/string/synopsis.cc
! 32cfb111c89a7921b8ce29dc3513af64  libstdc++-v3/testsuite/21_strings/headers/string/types_std.cc
! 391f26e03722bb637058ac45afc2812b  libstdc++-v3/testsuite/21_strings/headers/string/types_std_c++0x.cc
! 3a680201ae1a3026cc04b6482b00790a  libstdc++-v3/testsuite/22_locale/classification/isblank.cc
! 867ecb2fc816a92b9b52afd89c6604d2  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/char/1.cc
! 7ae2d04097de9dce60877a418ac70030  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/char/wrapped_env.cc
! 3ac5ddcfdaba806aacfdc10cd917f581  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/char/wrapped_locale.cc
! 231e2c9e3f5f3fca2c26e74703d59b31  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/wchar_t/1.cc
! 1ec373b9a66eb50395860e2a30fc6413  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/wchar_t/2.cc
! ae858441e5cbfafa5ca06641eee1a8ad  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/wchar_t/3.cc
! 649877664dad6cc62404f9ac2c025d80  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/wchar_t/4.cc
! 7ae2d04097de9dce60877a418ac70030  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/wchar_t/wrapped_env.cc
! 3ac5ddcfdaba806aacfdc10cd917f581  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/wchar_t/wrapped_locale.cc
! 6936dcf25a3d9beea7e36ff47a7267bd  libstdc++-v3/testsuite/22_locale/codecvt/char16_t.cc
! 41ffa4484ed44719abd690763673c8bf  libstdc++-v3/testsuite/22_locale/codecvt/char32_t.cc
! 61272eb956a23cb0ffcd31b684e39000  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/66417.cc
! 4a727a6bc446252119d0e3303f9fcfce  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/79980.cc
! cb8cbb89b5b4345071532d31febaa214  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/80041.cc
! 91efbbcb5e1a7e62207c22f04fdf39cd  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/members.cc
! 0cd7bea7de0dac0bc341b91ca263b4fe  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/misaligned.cc
! e9e447e9e5f5f7e60c89a87da4c5a9c3  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/requirements/1.cc
! 092440f5f22daef8b40a2e1086b960cf  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/69703.cc
! d5de500b4729b666ce97afcc0ca6e2c1  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/79980.cc
! 94c3fa2e6dd182a8f077748e51a699c4  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/members.cc
! 2d1c5ea1668b009a35b65217d4ef66f1  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/requirements/1.cc
! d870765d8e2c3a115e34c61325c4bdb4  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/66855.cc
! 977ea123eb3ab623224f5b6a50cbdbf2  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/79511.cc
! 906d332abfaa1004b4429892d79d2474  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/members.cc
! 69dc6d0be392229a474b7734a43d308a  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/requirements/1.cc
! 68a2014d8699ed44468fdf39bad8b54d  libstdc++-v3/testsuite/22_locale/codecvt/encoding/char/1.cc
! 7ae2d04097de9dce60877a418ac70030  libstdc++-v3/testsuite/22_locale/codecvt/encoding/char/wrapped_env.cc
! 3ac5ddcfdaba806aacfdc10cd917f581  libstdc++-v3/testsuite/22_locale/codecvt/encoding/char/wrapped_locale.cc
! 4a71af9b4a7c7dec7fabb7c31941b661  libstdc++-v3/testsuite/22_locale/codecvt/encoding/wchar_t/1.cc
! 5a4b8bc7c0653d1d21a9c954f9d2d6f5  libstdc++-v3/testsuite/22_locale/codecvt/encoding/wchar_t/2.cc
! 6701f4757d4297003fdea2668ecb7a9f  libstdc++-v3/testsuite/22_locale/codecvt/encoding/wchar_t/3.cc
! 70c78487015e3efb3f98000357a336f5  libstdc++-v3/testsuite/22_locale/codecvt/encoding/wchar_t/4.cc
! 7ae2d04097de9dce60877a418ac70030  libstdc++-v3/testsuite/22_locale/codecvt/encoding/wchar_t/wrapped_env.cc
! 3ac5ddcfdaba806aacfdc10cd917f581  libstdc++-v3/testsuite/22_locale/codecvt/encoding/wchar_t/wrapped_locale.cc
! 267641e97ca0801cec2ef4cb7c847ee3  libstdc++-v3/testsuite/22_locale/codecvt/in/char/1.cc
! 7ae2d04097de9dce60877a418ac70030  libstdc++-v3/testsuite/22_locale/codecvt/in/char/wrapped_env.cc
! 3ac5ddcfdaba806aacfdc10cd917f581  libstdc++-v3/testsuite/22_locale/codecvt/in/char/wrapped_locale.cc
! 1cc9959a27b7c50c5cc8ccc8bd36955f  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/1.cc
! e2a6033de07a87a23e75e55cd0e92d3d  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/2.cc
! 56ade4840e3ece716d4920c3c2f7c68c  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/3.cc
! 66845df56550e3494561fa8d10519020  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/4.cc
! 6fe5e508294bb74c3081c190a24d23f9  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/5.cc
! 97341c61e3f231f20f5b2057220835d2  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/6.cc
! b62a970ee2a1c4479e67b72f0bba3d55  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/7.cc
! da622103c49a0313a77bfbae8dcfcf05  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/8.cc
! d77505acb79eb54759193d005895ff04  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/9.cc
! 7ae2d04097de9dce60877a418ac70030  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/wrapped_env.cc
! 3ac5ddcfdaba806aacfdc10cd917f581  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/wrapped_locale.cc
! b1d20cbcef0a23a97a61e1513f441b37  libstdc++-v3/testsuite/22_locale/codecvt/length/char/1.cc
! 39c297c86c2b81e3a23f7695de366c05  libstdc++-v3/testsuite/22_locale/codecvt/length/char/2.cc
! 7ae2d04097de9dce60877a418ac70030  libstdc++-v3/testsuite/22_locale/codecvt/length/char/wrapped_env.cc
! 3ac5ddcfdaba806aacfdc10cd917f581  libstdc++-v3/testsuite/22_locale/codecvt/length/char/wrapped_locale.cc
! cb4c2f7997911e77a6ef6131f6f531e0  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/1.cc
! 4ca7ec3fe7616fe5124cebb020f37c5a  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/2.cc
! 56141f50d4844d8374b76ddc4a4f0f0e  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/3.cc
! 6c3ba883d0efc6848daa9a0d61dc8984  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/4.cc
! 32a66baf40d74c97a0ddfa4c7cab1f8c  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/5.cc
! e488ec381bfc25f27e2fdd50909078e8  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/6.cc
! 1b8f2d85864336e6270b25feda765b69  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/7.cc
! 7ae2d04097de9dce60877a418ac70030  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/wrapped_env.cc
! 3ac5ddcfdaba806aacfdc10cd917f581  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/wrapped_locale.cc
! 505a63cdeced3607c1745100e5d19dcb  libstdc++-v3/testsuite/22_locale/codecvt/max_length/char/1.cc
! 7ae2d04097de9dce60877a418ac70030  libstdc++-v3/testsuite/22_locale/codecvt/max_length/char/wrapped_env.cc
! 3ac5ddcfdaba806aacfdc10cd917f581  libstdc++-v3/testsuite/22_locale/codecvt/max_length/char/wrapped_locale.cc
! 3bad79d9e8e84dafd3d5d904538f75c3  libstdc++-v3/testsuite/22_locale/codecvt/max_length/wchar_t/1.cc
! 12aab2c2216f3b730816ea7633488653  libstdc++-v3/testsuite/22_locale/codecvt/max_length/wchar_t/2.cc
! 5472260202768bdc78bb164bbb72c4a2  libstdc++-v3/testsuite/22_locale/codecvt/max_length/wchar_t/3.cc
! 314338b000a149ee531d638a59c51c05  libstdc++-v3/testsuite/22_locale/codecvt/max_length/wchar_t/4.cc
! 7ae2d04097de9dce60877a418ac70030  libstdc++-v3/testsuite/22_locale/codecvt/max_length/wchar_t/wrapped_env.cc
! 3ac5ddcfdaba806aacfdc10cd917f581  libstdc++-v3/testsuite/22_locale/codecvt/max_length/wchar_t/wrapped_locale.cc
! 547359d64f8fbd26365ca6715c0faf22  libstdc++-v3/testsuite/22_locale/codecvt/out/char/1.cc
! 7ae2d04097de9dce60877a418ac70030  libstdc++-v3/testsuite/22_locale/codecvt/out/char/wrapped_env.cc
! 3ac5ddcfdaba806aacfdc10cd917f581  libstdc++-v3/testsuite/22_locale/codecvt/out/char/wrapped_locale.cc
! 7afad527a0199cffe034aeddedc3256b  libstdc++-v3/testsuite/22_locale/codecvt/out/wchar_t/1.cc
! ac5e4ab34f43d9d7e4916dc9c6d5d341  libstdc++-v3/testsuite/22_locale/codecvt/out/wchar_t/2.cc
! 70b7fe76b969db6fc879194590559d5a  libstdc++-v3/testsuite/22_locale/codecvt/out/wchar_t/3.cc
! 3771e1566a440adfe7b8a64f5888f3bc  libstdc++-v3/testsuite/22_locale/codecvt/out/wchar_t/4.cc
! 763aab4e74a17e992988ff4fdcfe0211  libstdc++-v3/testsuite/22_locale/codecvt/out/wchar_t/5.cc
! 1a8a6c00aa2cedb08b95d87d23b11b22  libstdc++-v3/testsuite/22_locale/codecvt/out/wchar_t/6.cc
! 0baf080312f241b0f60f086e804f2c46  libstdc++-v3/testsuite/22_locale/codecvt/out/wchar_t/7.cc
! 7ae2d04097de9dce60877a418ac70030  libstdc++-v3/testsuite/22_locale/codecvt/out/wchar_t/wrapped_env.cc
! 3ac5ddcfdaba806aacfdc10cd917f581  libstdc++-v3/testsuite/22_locale/codecvt/out/wchar_t/wrapped_locale.cc
! ee98b73eac20e64c95ab4ee2c0658f01  libstdc++-v3/testsuite/22_locale/codecvt/requirements/base_classes.cc
! 10e03745ff3319ef23ff06aa7aee3fd2  libstdc++-v3/testsuite/22_locale/codecvt/requirements/explicit_instantiation.cc
! ed2d5bab475b281ff450888bfe6a2815  libstdc++-v3/testsuite/22_locale/codecvt/requirements/typedefs.cc
! 7f150435f32fe87bdfacb4fdca931ab4  libstdc++-v3/testsuite/22_locale/codecvt/unshift/char/1.cc
! 7ae2d04097de9dce60877a418ac70030  libstdc++-v3/testsuite/22_locale/codecvt/unshift/char/wrapped_env.cc
! 3ac5ddcfdaba806aacfdc10cd917f581  libstdc++-v3/testsuite/22_locale/codecvt/unshift/char/wrapped_locale.cc
! a39a0a432ba0cfa81a8e2bdf21b63d09  libstdc++-v3/testsuite/22_locale/codecvt/unshift/wchar_t/1.cc
! 75d7e7de0b1bfd5cef6ddc45dd8e8a6e  libstdc++-v3/testsuite/22_locale/codecvt/unshift/wchar_t/2.cc
! a77a8cd157dd201a4ff7d1a8cb6fdff8  libstdc++-v3/testsuite/22_locale/codecvt/unshift/wchar_t/3.cc
! 38da022fb68c509e1b6b69c02d90e42b  libstdc++-v3/testsuite/22_locale/codecvt/unshift/wchar_t/4.cc
! 7ae2d04097de9dce60877a418ac70030  libstdc++-v3/testsuite/22_locale/codecvt/unshift/wchar_t/wrapped_env.cc
! 3ac5ddcfdaba806aacfdc10cd917f581  libstdc++-v3/testsuite/22_locale/codecvt/unshift/wchar_t/wrapped_locale.cc
! 92d55e21faef77a0cbd800aa7680c396  libstdc++-v3/testsuite/22_locale/codecvt/utf8.cc
! 3f3da7d2ffe3532bb1b77210d36ea4d0  libstdc++-v3/testsuite/22_locale/codecvt_byname/1.cc
! 98e0c70bec643ac32774f69f675311f2  libstdc++-v3/testsuite/22_locale/codecvt_byname/50714.cc
! 8dae4b0fcb4605df5a4bcdffa0a19487  libstdc++-v3/testsuite/22_locale/codecvt_byname/requirements/base_classes.cc
! 463ecc0defa6538337c0e7938beb7c2a  libstdc++-v3/testsuite/22_locale/codecvt_byname/requirements/explicit_instantiation.cc
! b83525dba24b0b131851abd9fe7e1453  libstdc++-v3/testsuite/22_locale/codecvt_byname/requirements/typedefs.cc
! 6715a6183a27bd85037d3a8777c19cc5  libstdc++-v3/testsuite/22_locale/collate/compare/char/1.cc
! bcbf7d74ea328df391d63de9378a7c91  libstdc++-v3/testsuite/22_locale/collate/compare/char/2.cc
! 2f5227c98a4d404ef6a49cb0b7ef3384  libstdc++-v3/testsuite/22_locale/collate/compare/char/3.cc
! d33e14ec6a084a370fd1cfa6604d41aa  libstdc++-v3/testsuite/22_locale/collate/compare/char/wrapped_env.cc
! acf52017b76081e8e7c267a04d647701  libstdc++-v3/testsuite/22_locale/collate/compare/char/wrapped_locale.cc
! 49ccad09d0fcb90869989d211d59d2fe  libstdc++-v3/testsuite/22_locale/collate/compare/wchar_t/1.cc
! 6d52807742ab0b27ffee5b4f7d8bdefb  libstdc++-v3/testsuite/22_locale/collate/compare/wchar_t/2.cc
! 677e680fe1ebd2c47334759b25173bb3  libstdc++-v3/testsuite/22_locale/collate/compare/wchar_t/3.cc
! 676817b7befe23a23c238116d9aeeecc  libstdc++-v3/testsuite/22_locale/collate/compare/wchar_t/wrapped_env.cc
! 11944af922416465b785b6d4a4f58241  libstdc++-v3/testsuite/22_locale/collate/compare/wchar_t/wrapped_locale.cc
! 970a0252eda7c2a9645cd1336455c2ee  libstdc++-v3/testsuite/22_locale/collate/hash/char/1.cc
! 7227834a4a43c21dbf2d64d6aba3c566  libstdc++-v3/testsuite/22_locale/collate/hash/char/2.cc
! 52ec7c41932a6b652c642ca602933693  libstdc++-v3/testsuite/22_locale/collate/hash/char/wrapped_env.cc
! b26f2ceffa4efe417c9ccbf144f87643  libstdc++-v3/testsuite/22_locale/collate/hash/char/wrapped_locale.cc
! b4319f7c5dbd67205f4ee21f5fa86ed2  libstdc++-v3/testsuite/22_locale/collate/hash/wchar_t/1.cc
! 33afd28e1742103a820e3659f293998a  libstdc++-v3/testsuite/22_locale/collate/hash/wchar_t/2.cc
! 676817b7befe23a23c238116d9aeeecc  libstdc++-v3/testsuite/22_locale/collate/hash/wchar_t/wrapped_env.cc
! 11944af922416465b785b6d4a4f58241  libstdc++-v3/testsuite/22_locale/collate/hash/wchar_t/wrapped_locale.cc
! e3121ce6fddac5ba5d69da5002355954  libstdc++-v3/testsuite/22_locale/collate/requirements/base_classes.cc
! 13fe6a3ee276a48309e9841832172a8a  libstdc++-v3/testsuite/22_locale/collate/requirements/explicit_instantiation.cc
! f77f49611bf3862ae79da438ce4a00c5  libstdc++-v3/testsuite/22_locale/collate/requirements/typedefs.cc
! 24508eb008453fa7c3ad260d8e6b63e9  libstdc++-v3/testsuite/22_locale/collate/transform/char/2.cc
! 7c41f7ae61314b1b1b583fbe9d8e0aa9  libstdc++-v3/testsuite/22_locale/collate/transform/char/28277.cc
! 059862e0c331d94a78d3b3bdb79f70c2  libstdc++-v3/testsuite/22_locale/collate/transform/char/3.cc
! 1f9d130c93851f3984e4a4cc9d22ec34  libstdc++-v3/testsuite/22_locale/collate/transform/char/wrapped_env.cc
! 2bfdec56aa78a988af8121a1667fab4c  libstdc++-v3/testsuite/22_locale/collate/transform/char/wrapped_locale.cc
! 84e300ac07ccfc805c188f7c009dd52e  libstdc++-v3/testsuite/22_locale/collate/transform/wchar_t/2.cc
! 3c50f113ab3f683bcff171fc32dc676a  libstdc++-v3/testsuite/22_locale/collate/transform/wchar_t/28277.cc
! 17d6761d7050f17ba4ee3a6ef954fa00  libstdc++-v3/testsuite/22_locale/collate/transform/wchar_t/3.cc
! beda0c1c964cd0505039c90ac726e119  libstdc++-v3/testsuite/22_locale/collate/transform/wchar_t/wrapped_env.cc
! a27020d2b8f217bde75f86b407f4430e  libstdc++-v3/testsuite/22_locale/collate/transform/wchar_t/wrapped_locale.cc
! 4d8b52b19c1a048f69f64789b2bdd905  libstdc++-v3/testsuite/22_locale/collate_byname/1.cc
! b45c12ae97afc94e81de15a57764fef2  libstdc++-v3/testsuite/22_locale/collate_byname/named_equivalence.cc
! 98731478223f7c63476e7f88405c1f18  libstdc++-v3/testsuite/22_locale/collate_byname/requirements/base_classes.cc
! 17f511928ce755eb6eb2d19ddf61078c  libstdc++-v3/testsuite/22_locale/collate_byname/requirements/explicit_instantiation.cc
! 5d05386016eae05c95438a73867f67cb  libstdc++-v3/testsuite/22_locale/collate_byname/requirements/typedefs.cc
! f23e0c3c58b1fa885fcbe793513f45d9  libstdc++-v3/testsuite/22_locale/conversions/buffer/1.cc
! 2ad6115d465798df72a1e7ec0c23a8c0  libstdc++-v3/testsuite/22_locale/conversions/buffer/2.cc
! ec68d4cb2364ccc06c576c378acf22cc  libstdc++-v3/testsuite/22_locale/conversions/buffer/3.cc
! a4c3531cad95ebcc2fbf3a31c2779927  libstdc++-v3/testsuite/22_locale/conversions/buffer/requirements/typedefs.cc
! 4c96dac47cecb308b8eed0f6ff69d9de  libstdc++-v3/testsuite/22_locale/conversions/string/1.cc
! fa19c1228429e23216d534654bd2eb9a  libstdc++-v3/testsuite/22_locale/conversions/string/2.cc
! c449e8cd781382d9de2415c9728d49e6  libstdc++-v3/testsuite/22_locale/conversions/string/3.cc
! 8040483b5e6e1985618474b6130ffcbc  libstdc++-v3/testsuite/22_locale/conversions/string/66441.cc
! 9c3e87248541a3289f003cf097a92899  libstdc++-v3/testsuite/22_locale/conversions/string/requirements/typedefs-2.cc
! afde189aa76ea1faf51c7e13ea4542f0  libstdc++-v3/testsuite/22_locale/conversions/string/requirements/typedefs.cc
! fd7aeadac1711fdc28c27f23a1ff3269  libstdc++-v3/testsuite/22_locale/ctype/2.cc
! da0883882580ab5e3bab930b81652cfa  libstdc++-v3/testsuite/22_locale/ctype/cons/char/1.cc
! 7ae2d04097de9dce60877a418ac70030  libstdc++-v3/testsuite/22_locale/ctype/cons/char/wrapped_env.cc
! 3ac5ddcfdaba806aacfdc10cd917f581  libstdc++-v3/testsuite/22_locale/ctype/cons/char/wrapped_locale.cc
! 4ec7062e78e8fae2c29f27a357cf90ce  libstdc++-v3/testsuite/22_locale/ctype/dr695.cc
! b8b0550cbf0ebcfebe5d5bf5765bc5b6  libstdc++-v3/testsuite/22_locale/ctype/is/char/1.cc
! 9952abb380431e2d52e9631839b6ff57  libstdc++-v3/testsuite/22_locale/ctype/is/char/2.cc
! 670f1a50a0f913ab44a908bc7b715116  libstdc++-v3/testsuite/22_locale/ctype/is/char/3.cc
! db1689f81993cb2ecee4b80f873d0673  libstdc++-v3/testsuite/22_locale/ctype/is/char/9858.cc
! fbfdb87f599d3c0a9e098dbbec5b5f32  libstdc++-v3/testsuite/22_locale/ctype/is/char/wrapped_env.cc
! b212e8879a7f6f0b19dffb766ff40e5b  libstdc++-v3/testsuite/22_locale/ctype/is/char/wrapped_locale.cc
! ffeb3ec82de793297e454e5f977ee9b8  libstdc++-v3/testsuite/22_locale/ctype/is/wchar_t/1.cc
! e4b56a9dc5c91dbf8e6ecdd862e66db2  libstdc++-v3/testsuite/22_locale/ctype/is/wchar_t/11740.cc
! 5a87cb72a66651626c43bdc4727349a1  libstdc++-v3/testsuite/22_locale/ctype/is/wchar_t/2.cc
! 5a601299a2b2668716d0c6e7e8f6ff19  libstdc++-v3/testsuite/22_locale/ctype/is/wchar_t/wrapped_env.cc
! a38bf801276693a7fc4ac2039aa2e45a  libstdc++-v3/testsuite/22_locale/ctype/is/wchar_t/wrapped_locale.cc
! f2f72cea49730d3d5fba1f1be27ef5a7  libstdc++-v3/testsuite/22_locale/ctype/narrow/char/1.cc
! 9cf61d2b0b58128118cea7559d610e99  libstdc++-v3/testsuite/22_locale/ctype/narrow/char/19955.cc
! eb3ecc2157a6f74205950e0b4c2b088e  libstdc++-v3/testsuite/22_locale/ctype/narrow/char/2.cc
! 5a601299a2b2668716d0c6e7e8f6ff19  libstdc++-v3/testsuite/22_locale/ctype/narrow/char/wrapped_env.cc
! 150ba4c1063d62698daf846434a64430  libstdc++-v3/testsuite/22_locale/ctype/narrow/char/wrapped_locale.cc
! c3b02897d2d17a5b4b7ba21e11c16db9  libstdc++-v3/testsuite/22_locale/ctype/narrow/wchar_t/1.cc
! d0c598ce3e3ff0f3bb78a107bbcc68bc  libstdc++-v3/testsuite/22_locale/ctype/narrow/wchar_t/2.cc
! 9907b5543898104b44b4b89fade42f3c  libstdc++-v3/testsuite/22_locale/ctype/narrow/wchar_t/3.cc
! 5a601299a2b2668716d0c6e7e8f6ff19  libstdc++-v3/testsuite/22_locale/ctype/narrow/wchar_t/wrapped_env.cc
! 150ba4c1063d62698daf846434a64430  libstdc++-v3/testsuite/22_locale/ctype/narrow/wchar_t/wrapped_locale.cc
! 6af7fac6d3cc20c7c7dd72a31ac2e762  libstdc++-v3/testsuite/22_locale/ctype/requirements/base_classes.cc
! e9859ce8d895713da73ae46e2e778c5b  libstdc++-v3/testsuite/22_locale/ctype/requirements/explicit_instantiation.cc
! 2c1ff3c74d487b6e53800e0849064b75  libstdc++-v3/testsuite/22_locale/ctype/requirements/typedefs.cc
! bd2614b06b25aa48bbf8a08f86d266e6  libstdc++-v3/testsuite/22_locale/ctype/scan/char/1.cc
! 7ae2d04097de9dce60877a418ac70030  libstdc++-v3/testsuite/22_locale/ctype/scan/char/wrapped_env.cc
! 3ac5ddcfdaba806aacfdc10cd917f581  libstdc++-v3/testsuite/22_locale/ctype/scan/char/wrapped_locale.cc
! 9d9df4fa4b1b14a0a4d346541c4e0729  libstdc++-v3/testsuite/22_locale/ctype/scan/wchar_t/1.cc
! 7ae2d04097de9dce60877a418ac70030  libstdc++-v3/testsuite/22_locale/ctype/scan/wchar_t/wrapped_env.cc
! 3ac5ddcfdaba806aacfdc10cd917f581  libstdc++-v3/testsuite/22_locale/ctype/scan/wchar_t/wrapped_locale.cc
! 49c7d948f92d9f45a0629291bc3c9950  libstdc++-v3/testsuite/22_locale/ctype/to/char/1.cc
! 7ae2d04097de9dce60877a418ac70030  libstdc++-v3/testsuite/22_locale/ctype/to/char/wrapped_env.cc
! 3ac5ddcfdaba806aacfdc10cd917f581  libstdc++-v3/testsuite/22_locale/ctype/to/char/wrapped_locale.cc
! 058a149d4c8ff59d74eb03b0f143f8b2  libstdc++-v3/testsuite/22_locale/ctype/to/wchar_t/1.cc
! 7ae2d04097de9dce60877a418ac70030  libstdc++-v3/testsuite/22_locale/ctype/to/wchar_t/wrapped_env.cc
! 3ac5ddcfdaba806aacfdc10cd917f581  libstdc++-v3/testsuite/22_locale/ctype/to/wchar_t/wrapped_locale.cc
! 86465b056c872807db12d9a17685f4b1  libstdc++-v3/testsuite/22_locale/ctype/widen/char/1.cc
! 7ae2d04097de9dce60877a418ac70030  libstdc++-v3/testsuite/22_locale/ctype/widen/char/wrapped_env.cc
! 3ac5ddcfdaba806aacfdc10cd917f581  libstdc++-v3/testsuite/22_locale/ctype/widen/char/wrapped_locale.cc
! f834dd0833f71dae4591b409627b3996  libstdc++-v3/testsuite/22_locale/ctype/widen/wchar_t/1.cc
! 49b5d7736ee77d1d39e1fe85059d744a  libstdc++-v3/testsuite/22_locale/ctype/widen/wchar_t/2.cc
! 3c90d5095425a0623c5a1863a5ec262d  libstdc++-v3/testsuite/22_locale/ctype/widen/wchar_t/3.cc
! 7ae2d04097de9dce60877a418ac70030  libstdc++-v3/testsuite/22_locale/ctype/widen/wchar_t/wrapped_env.cc
! 3ac5ddcfdaba806aacfdc10cd917f581  libstdc++-v3/testsuite/22_locale/ctype/widen/wchar_t/wrapped_locale.cc
! 6009dc979950367a62b5c86dd8759e22  libstdc++-v3/testsuite/22_locale/ctype_base/11844.cc
! 38633f6477107972c5acaf116ab391ff  libstdc++-v3/testsuite/22_locale/ctype_base/53678.cc
! 44bd1927203f9cba26bf7d29754fe082  libstdc++-v3/testsuite/22_locale/ctype_base/blank.cc
! 843fa31a21e4bb0b720cca7e07f2e021  libstdc++-v3/testsuite/22_locale/ctype_base/mask.cc
! ae630dc65b99f371c56f37b5f8ae911c  libstdc++-v3/testsuite/22_locale/ctype_byname/1.cc
! 04ca2697913c8b75d34f4043612958d7  libstdc++-v3/testsuite/22_locale/ctype_byname/2.cc
! d67eb587a3b85e9711a8d2d5d1641864  libstdc++-v3/testsuite/22_locale/facet/1.cc
! 161755f80f395fb5b4aed7e4eba7b6c3  libstdc++-v3/testsuite/22_locale/facet/2.cc
! b3aab9acfa4e966cb1662321ec9c1307  libstdc++-v3/testsuite/22_locale/facet/25421.cc
! 8f8f34ff3a69deda3c19535b00b927dd  libstdc++-v3/testsuite/22_locale/global_templates/1.cc
! f5c327fca57c6404e8913c9dd64862c3  libstdc++-v3/testsuite/22_locale/global_templates/standard_facet_hierarchies.cc
! 41370e8fcb1dc4f283a43772157f0497  libstdc++-v3/testsuite/22_locale/global_templates/user_facet_hierarchies.cc
! 7fa378588f14ead5c18a7f14226e6ec3  libstdc++-v3/testsuite/22_locale/headers/clocale/functions_std.cc
! dc61c201b33ff3617a17b83afc9ac94b  libstdc++-v3/testsuite/22_locale/headers/clocale/macros.cc
! b76eb37932a29782ab37c734321692ec  libstdc++-v3/testsuite/22_locale/headers/clocale/types_std.cc
! 216dbe72fc771e29bbd181f818d0254a  libstdc++-v3/testsuite/22_locale/headers/locale/synopsis.cc
! a75fcca36daae2d73cff59999fad1f4e  libstdc++-v3/testsuite/22_locale/headers/locale/types_std.cc
! efa0f2b0ecba87b7b9d1456be8a51252  libstdc++-v3/testsuite/22_locale/locale/13630.cc
! 95f523c0eefd9353f68f911433b98463  libstdc++-v3/testsuite/22_locale/locale/cons/1.cc
! 901e57f384059487e60e051da6ed3d32  libstdc++-v3/testsuite/22_locale/locale/cons/12352.cc
! 455a5ff56049ea1d3265274d05cc5055  libstdc++-v3/testsuite/22_locale/locale/cons/12438.cc
! ab1429121f0b4c4c2bfda501de82e149  libstdc++-v3/testsuite/22_locale/locale/cons/12658_thread-1.cc
! 9887e69d05d31dc729bea9f387f8a02e  libstdc++-v3/testsuite/22_locale/locale/cons/12658_thread-2.cc
! c6a53d8399e2f92cd47548093132f082  libstdc++-v3/testsuite/22_locale/locale/cons/2.cc
! 5041d68fcaebfad28d275459a2e10f84  libstdc++-v3/testsuite/22_locale/locale/cons/29217.cc
! 57ea37a6f5b84f010625d7838a2f81d5  libstdc++-v3/testsuite/22_locale/locale/cons/38365.cc
! 1a1fbd9dd5376c33972620bd64b5d6c1  libstdc++-v3/testsuite/22_locale/locale/cons/38368.cc
! b713324a07948b58c804cde2a8732c16  libstdc++-v3/testsuite/22_locale/locale/cons/4.cc
! 253367c47c8447e443a7ea3d543e24f4  libstdc++-v3/testsuite/22_locale/locale/cons/40184.cc
! 14988176431071f7260adae2f7d7c1b5  libstdc++-v3/testsuite/22_locale/locale/cons/5.cc
! e2c20425957b7a357150a2df26dd4882  libstdc++-v3/testsuite/22_locale/locale/cons/6.cc
! 8e1588b664dd63518911c7af983af283  libstdc++-v3/testsuite/22_locale/locale/cons/7.cc
! 5277265b1f5e7d9bce2e154ccd637196  libstdc++-v3/testsuite/22_locale/locale/cons/7222-c.cc
! d50e1756ca995065166c0f3c510b0421  libstdc++-v3/testsuite/22_locale/locale/cons/7222-env.cc
! 34e53996d003c87fcf3a0b07102f1312  libstdc++-v3/testsuite/22_locale/locale/cons/8.cc
! 20e732bbcdbd2f077c5136fb473c9009  libstdc++-v3/testsuite/22_locale/locale/cons/unicode.cc
! 43178d4f2625344df302abb9938c6fd0  libstdc++-v3/testsuite/22_locale/locale/global_locale_objects/1.cc
! 5f6fb6bb28ad2ffda76f752549467f62  libstdc++-v3/testsuite/22_locale/locale/global_locale_objects/14071.cc
! f932caeb0984cceb3125beaed01caf7b  libstdc++-v3/testsuite/22_locale/locale/global_locale_objects/2.cc
! 925e08c3b6ceac169d9f49af25e0373c  libstdc++-v3/testsuite/22_locale/locale/global_locale_objects/3.cc
! 70e297a69975fb0d5c33dbe269765247  libstdc++-v3/testsuite/22_locale/locale/operations/1.cc
! a677c26ce37986333b04390d12549dcf  libstdc++-v3/testsuite/22_locale/locale/operations/2.cc
! 5167791109977e21f593523975094e61  libstdc++-v3/testsuite/22_locale/messages/13631.cc
! 180eeb618a955d05d113d2ae119ce885  libstdc++-v3/testsuite/22_locale/messages/members/char/1.cc
! f0aec1f2a709d8896c4eb9641a428572  libstdc++-v3/testsuite/22_locale/messages/members/char/2.cc
! d47fd9c4a6399adebaee63aa18208491  libstdc++-v3/testsuite/22_locale/messages/members/char/3.cc
! 1b3f14e0439e58eca13cad4ad3ddc3d4  libstdc++-v3/testsuite/22_locale/messages/members/char/wrapped_env.cc
! 5000051cd5fb0782adca10bcf1d86ff9  libstdc++-v3/testsuite/22_locale/messages/members/char/wrapped_locale.cc
! 1be673d3170fe43b2258c92dc2900faa  libstdc++-v3/testsuite/22_locale/messages/requirements/base_classes.cc
! 629df1e7150507d8f8a5dc4d69454c91  libstdc++-v3/testsuite/22_locale/messages/requirements/explicit_instantiation.cc
! 69be5e030bab85b7349edd83d15c57cd  libstdc++-v3/testsuite/22_locale/messages/requirements/typedefs.cc
! 7a2a1c212a29ee57ea1938696f0fef75  libstdc++-v3/testsuite/22_locale/messages_byname/1.cc
! a22d5c5ae18018721a74dc25f2fd2685  libstdc++-v3/testsuite/22_locale/messages_byname/named_equivalence.cc
! 0ee50d6deb46a76c11b48eea1c14b1c8  libstdc++-v3/testsuite/22_locale/messages_byname/requirements/base_classes.cc
! ae4fc5fd1b7426be77f81a8a8483d531  libstdc++-v3/testsuite/22_locale/messages_byname/requirements/explicit_instantiation.cc
! 5205d3223e0554aaf61e51cea3a19f1e  libstdc++-v3/testsuite/22_locale/messages_byname/requirements/typedefs.cc
! d84404a6ae914366e62eb15eb0e16733  libstdc++-v3/testsuite/22_locale/money_get/cons/3.cc
! 7d1e8e0c3d4e62e0cc6450c1d00f2361  libstdc++-v3/testsuite/22_locale/money_get/get/char/1.cc
! fbfa191f17beee4129b7986d394a48b3  libstdc++-v3/testsuite/22_locale/money_get/get/char/10.cc
! 122195e09069de18a85f70ea7128db0e  libstdc++-v3/testsuite/22_locale/money_get/get/char/11.cc
! b17ea111fc009ad77c95fa9eb7004de1  libstdc++-v3/testsuite/22_locale/money_get/get/char/11528.cc
! 8c961e00477b85a120f028707209d898  libstdc++-v3/testsuite/22_locale/money_get/get/char/12.cc
! be2022d79304099706b8da1c2ad3b464  libstdc++-v3/testsuite/22_locale/money_get/get/char/13.cc
! eb2507020278288ed5bb88f78b5fb144  libstdc++-v3/testsuite/22_locale/money_get/get/char/14.cc
! 25b746d1cad88f8d6edccddb6081d977  libstdc++-v3/testsuite/22_locale/money_get/get/char/15.cc
! 010f68bb3f88068b77f06bcd4dc11fcc  libstdc++-v3/testsuite/22_locale/money_get/get/char/16.cc
! 87291f3337c73a5492b4439cf1f57c87  libstdc++-v3/testsuite/22_locale/money_get/get/char/17.cc
! ad0ac5c984e07217161188b7aef2b617  libstdc++-v3/testsuite/22_locale/money_get/get/char/18.cc
! cc41f6689e1c2b08f14c2f33725f3693  libstdc++-v3/testsuite/22_locale/money_get/get/char/19.cc
! 07f3f0ee8c7b902174971f116a2f27b3  libstdc++-v3/testsuite/22_locale/money_get/get/char/2.cc
! 132513580e9ad3ade27e4376e6183b42  libstdc++-v3/testsuite/22_locale/money_get/get/char/22131.cc
! c24bed79759fb9cc01b903a42983d2b9  libstdc++-v3/testsuite/22_locale/money_get/get/char/3.cc
! 43c6529f2afa90ebe4a38b2a5e504688  libstdc++-v3/testsuite/22_locale/money_get/get/char/38399.cc
! a9bd21d5a673aae64fff52e5e3a4a48f  libstdc++-v3/testsuite/22_locale/money_get/get/char/39168.cc
! 0a3b62aafab1de76273f0fc13101e8e8  libstdc++-v3/testsuite/22_locale/money_get/get/char/4.cc
! 4a8d9a63716752f6128fa806f9c108ac  libstdc++-v3/testsuite/22_locale/money_get/get/char/5.cc
! 12a99286b521cd9d673583442c4db3bb  libstdc++-v3/testsuite/22_locale/money_get/get/char/6.cc
! 0893eb45f79680f6f4b8aad73cb037be  libstdc++-v3/testsuite/22_locale/money_get/get/char/7.cc
! 0838fca213fac719fd7358d7d054d8c2  libstdc++-v3/testsuite/22_locale/money_get/get/char/8.cc
! 142d514e847c338f243cb249b2c5fa3a  libstdc++-v3/testsuite/22_locale/money_get/get/char/9.cc
! cba41cdc44427d84aaa1db1946c58722  libstdc++-v3/testsuite/22_locale/money_get/get/char/wrapped_env.cc
! 75933c9b90a2073f0b0c20afab6e8423  libstdc++-v3/testsuite/22_locale/money_get/get/char/wrapped_locale.cc
! 5654e441cd9adc5063e02e0f778e2a36  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/1.cc
! 802bbfa89e5742dee9879d3cfb30eae8  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/10.cc
! 43b2da43d4f16e6cff49320478c4f31e  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/11.cc
! 16559c60f89ad0d731c1c14663a9cfe5  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/11528.cc
! 33cd79e189f4180c003cb039a547dfa2  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/12.cc
! 0ee914d5b85919b5644114a2a01bd1f8  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/13.cc
! a3c40edd040bc0c258192615b2502340  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/14.cc
! 03d69e00bb5668a3619dfcc028a1ee6d  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/15.cc
! d5b95a59d11402c445d9ab865837a2c4  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/16.cc
! 4fdb42b0225c80cf0172d43ec1d1b41e  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/17.cc
! 8142c5244c8a691ee2a8317b743728a3  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/18.cc
! 72aa9bbff987b7c60d1c725ee869229f  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/19.cc
! eb6c6bacebd33e9035d8f8c17db839a1  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/2.cc
! abeca99361e2383c33e611ab66124ec4  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/22131.cc
! 41d687c590c218f9ba05545808e152ee  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/3.cc
! f7ad05a74f6012b69f164ac983d4bff8  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/38399.cc
! 6b6e758288f70551650d0b5c449323c4  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/39168.cc
! c2d2addd52999bd81efd7642d0065710  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/4.cc
! 0c7f392e40c4f0abba9c3e899b83e011  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/5.cc
! 2693d43e36b5d31f4c03a2c0ba35cd52  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/6.cc
! bb022baf2ca6ff39bb9151f6dcea750c  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/7.cc
! 0f63ee08b5bdfb29132ac82b641c7e40  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/8.cc
! fc06bd2a769f0ba7d1029111660b41de  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/9.cc
! cba41cdc44427d84aaa1db1946c58722  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/wrapped_env.cc
! 75933c9b90a2073f0b0c20afab6e8423  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/wrapped_locale.cc
! 44c31fe517494fcde492d367a80c2b9c  libstdc++-v3/testsuite/22_locale/money_get/requirements/base_classes.cc
! 7b3239c2285c1529f8d5065bc22d0df4  libstdc++-v3/testsuite/22_locale/money_get/requirements/explicit_instantiation.cc
! 6923babe3c16a32251ff2b17f4e1bf7f  libstdc++-v3/testsuite/22_locale/money_get/requirements/typedefs.cc
! 3fe614d8da662922138843140321e987  libstdc++-v3/testsuite/22_locale/money_put/cons/3.cc
! 89ec180fde6140d6f1d947b307ab1f8b  libstdc++-v3/testsuite/22_locale/money_put/put/char/1.cc
! 1adf8e867a554d6b6be93f3b2bff8680  libstdc++-v3/testsuite/22_locale/money_put/put/char/12971.cc
! 3622242fc6fcba28ff671c07aa03218c  libstdc++-v3/testsuite/22_locale/money_put/put/char/2.cc
! 8fe4c1270f2f4dbd4ec1e9e6bb63154f  libstdc++-v3/testsuite/22_locale/money_put/put/char/3.cc
! a7c3418c9eda9d5d5da8f75ca019b4bb  libstdc++-v3/testsuite/22_locale/money_put/put/char/39168.cc
! 88bda49ae2e38b71269d335c04aa742d  libstdc++-v3/testsuite/22_locale/money_put/put/char/4.cc
! b036f31d2edacaefe775b322e314962b  libstdc++-v3/testsuite/22_locale/money_put/put/char/5.cc
! 434a99a12eb37163ff9f2345bfb484dd  libstdc++-v3/testsuite/22_locale/money_put/put/char/6.cc
! b34cc7a4a76263fc690b3885ac2b5da7  libstdc++-v3/testsuite/22_locale/money_put/put/char/9780-3.cc
! 1c40a2da615e8392666378cfa2bb2a2c  libstdc++-v3/testsuite/22_locale/money_put/put/char/wrapped_env.cc
! e1d3ad9e66c2225b4b8eca9ff377cbd2  libstdc++-v3/testsuite/22_locale/money_put/put/char/wrapped_locale.cc
! 8ed53fb6d424316b7ec273f5fdf4e011  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/1.cc
! cba02fd74c0ed9703cd66c8d669dfb8d  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/12971.cc
! ee8e6d9a592b68380a19e55e84b9a89d  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/2.cc
! 1d1dbc69a3a84649c792dd817ed14460  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/3.cc
! 8ba43030f2fb6d9b400625e6339dd00d  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/39168.cc
! 661bfba41201c1cbf10c4450425a0f9e  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/4.cc
! 2956c82f05a547a0f2c86e30ba93b903  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/5.cc
! adf44c4f5607479cf8ef91f6ed2b75eb  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/6.cc
! 1c40a2da615e8392666378cfa2bb2a2c  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/wrapped_env.cc
! e1d3ad9e66c2225b4b8eca9ff377cbd2  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/wrapped_locale.cc
! 3e49665f624097ddc80a1037de0a9ac5  libstdc++-v3/testsuite/22_locale/money_put/requirements/base_classes.cc
! 623c5dfa40584f9ad745fe6e3b22c026  libstdc++-v3/testsuite/22_locale/money_put/requirements/explicit_instantiation.cc
! 5d8523f528594c427b4dc4125ee4b4a5  libstdc++-v3/testsuite/22_locale/money_put/requirements/typedefs.cc
! 4164699213b95f113a2025fafb7c53c3  libstdc++-v3/testsuite/22_locale/moneypunct/40712.cc
! d3779305a3111d1c8ab50cd15cd94f32  libstdc++-v3/testsuite/22_locale/moneypunct/members/char/1.cc
! 697dd40d30eb3dc954ef3bd288e4d395  libstdc++-v3/testsuite/22_locale/moneypunct/members/char/2.cc
! 5a601299a2b2668716d0c6e7e8f6ff19  libstdc++-v3/testsuite/22_locale/moneypunct/members/char/wrapped_env.cc
! a291bb6ef9c0cd5a352977cbc2cb6efa  libstdc++-v3/testsuite/22_locale/moneypunct/members/char/wrapped_locale.cc
! ad2cd63ce68235d7096c897477a938d6  libstdc++-v3/testsuite/22_locale/moneypunct/members/wchar_t/1.cc
! ae87a5ff2bf172f2a01591c49e98c6f1  libstdc++-v3/testsuite/22_locale/moneypunct/members/wchar_t/2.cc
! 5a601299a2b2668716d0c6e7e8f6ff19  libstdc++-v3/testsuite/22_locale/moneypunct/members/wchar_t/wrapped_env.cc
! a38bf801276693a7fc4ac2039aa2e45a  libstdc++-v3/testsuite/22_locale/moneypunct/members/wchar_t/wrapped_locale.cc
! e697f73e35803f48ab605438d85b1bce  libstdc++-v3/testsuite/22_locale/moneypunct/requirements/false/base_classes.cc
! 9f99e485f047f44610f12251034122a5  libstdc++-v3/testsuite/22_locale/moneypunct/requirements/false/explicit_instantiation.cc
! ff7f18bb32e36cdf932e3c986eed44c4  libstdc++-v3/testsuite/22_locale/moneypunct/requirements/false/intl.cc
! 1bc76711da88e35768028e1c35464383  libstdc++-v3/testsuite/22_locale/moneypunct/requirements/false/typedefs.cc
! 60fa8ed6ecd9f1f6fc05ae99da62dd8c  libstdc++-v3/testsuite/22_locale/moneypunct/requirements/true/base_classes.cc
! 6a0740781cc381a60ae7594cf50f19a5  libstdc++-v3/testsuite/22_locale/moneypunct/requirements/true/explicit_instantiation.cc
! 245f85c902ff721095cdb657272454aa  libstdc++-v3/testsuite/22_locale/moneypunct/requirements/true/intl.cc
! 99531e3ec0c3e1bb6d27691900e9a953  libstdc++-v3/testsuite/22_locale/moneypunct/requirements/true/typedefs.cc
! b1efbd262cf616b59ad9847eed463aff  libstdc++-v3/testsuite/22_locale/moneypunct_byname/1.cc
! ce9fe0da191e4b28031763b8ca8ee8f2  libstdc++-v3/testsuite/22_locale/moneypunct_byname/named_equivalence.cc
! d585a7aa935f3efa471b7ef83555cc18  libstdc++-v3/testsuite/22_locale/moneypunct_byname/requirements/base_classes.cc
! 51d92e8afcd6907204abe29a262da2ec  libstdc++-v3/testsuite/22_locale/moneypunct_byname/requirements/explicit_instantiation.cc
! 482d5bd10e7dc3465153d493bcd1b40e  libstdc++-v3/testsuite/22_locale/moneypunct_byname/requirements/typedefs.cc
! eda3bb4559ba36c78449dbc0a6549c2a  libstdc++-v3/testsuite/22_locale/num_get/cons/3.cc
! 2586679223b489b3cb66e9d7dbbb3b22  libstdc++-v3/testsuite/22_locale/num_get/get/char/1.cc
! 706f9d9d16ce1c13054f36948831008f  libstdc++-v3/testsuite/22_locale/num_get/get/char/10.cc
! 9cc6031e93ffee7176b09946cc6e682a  libstdc++-v3/testsuite/22_locale/num_get/get/char/11.cc
! 78f3d607890ed15097b1ac85f7b7b48f  libstdc++-v3/testsuite/22_locale/num_get/get/char/12.cc
! c2e43c562c17c4e7693bb17bf6f95bcf  libstdc++-v3/testsuite/22_locale/num_get/get/char/13.cc
! 51ded0edf3b474259423313f4ab10510  libstdc++-v3/testsuite/22_locale/num_get/get/char/14.cc
! ddc9eccc9297be012476639f927ec637  libstdc++-v3/testsuite/22_locale/num_get/get/char/15.cc
! d828e9c747d29679e5b8cab8c9e462e1  libstdc++-v3/testsuite/22_locale/num_get/get/char/16.cc
! c224c48bec80bb984cc79dd50fc2102d  libstdc++-v3/testsuite/22_locale/num_get/get/char/2.cc
! 5e459ac2e69347e258d048999b232e6a  libstdc++-v3/testsuite/22_locale/num_get/get/char/22131.cc
! 9290681474d6998d9c9066afd139c0fb  libstdc++-v3/testsuite/22_locale/num_get/get/char/23953.cc
! 228830d5666f88bf358f5dfcd1b5ed3e  libstdc++-v3/testsuite/22_locale/num_get/get/char/3.cc
! 9e2dc094d5aa2add4e8953e71e61bbbb  libstdc++-v3/testsuite/22_locale/num_get/get/char/37958.cc
! d47b35f6e9ba54428bc87ba41c33f509  libstdc++-v3/testsuite/22_locale/num_get/get/char/39168.cc
! acb78982ecc5706fa5616731dfdd3acb  libstdc++-v3/testsuite/22_locale/num_get/get/char/39802.cc
! fa896d82f81a8c7d68f305cfb5e90bfe  libstdc++-v3/testsuite/22_locale/num_get/get/char/4.cc
! ed9797e472f263c76dcd46538f734f64  libstdc++-v3/testsuite/22_locale/num_get/get/char/5.cc
! a780c361ea785b7713e03961f4397f5d  libstdc++-v3/testsuite/22_locale/num_get/get/char/6.cc
! 93f197e4ae20672b1711c5314b3bfd0a  libstdc++-v3/testsuite/22_locale/num_get/get/char/7.cc
! b430f935537df9e485f40edf6e4c6585  libstdc++-v3/testsuite/22_locale/num_get/get/char/8.cc
! f6d1a82e3d286252ccb4fd4e00aa0950  libstdc++-v3/testsuite/22_locale/num_get/get/char/9.cc
! 7651495b59810a6b5e564574cb73d379  libstdc++-v3/testsuite/22_locale/num_get/get/char/wrapped_env.cc
! e1d3ad9e66c2225b4b8eca9ff377cbd2  libstdc++-v3/testsuite/22_locale/num_get/get/char/wrapped_locale.cc
! c330e4bc941c59a67966181615e1c5cb  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/1.cc
! 92122bc0205f52e16705bfefcbf8ff68  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/10.cc
! 70b019c97310361e769c763d6d53ee34  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/11.cc
! 913279751cef1514ad855e42c31ba403  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/12.cc
! f1616e5a0dc447dbc5b733b93df49bd3  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/13.cc
! 9e6beaab507686da7511d09702d32f1f  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/14.cc
! dbc2c75ef09212814d80121e4986f29b  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/15.cc
! d3f144e044d5250c76794598fe03eb2d  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/16.cc
! dc03d877255c8b2f3814d6cf38b1ef8b  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/2.cc
! 12aaddebf1a29124c76980b9ab1b7401  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/22131.cc
! 29980e1768d2f4ce11ae378d00b2c3e2  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/23953.cc
! 5ae32c3d8682008129da771288a9ec4b  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/3.cc
! 99a8550e4a92c16f8412b0e50f22a1f4  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/37958.cc
! 520b5335de262ad1ba7de91f128bdc79  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/39168.cc
! ca7f1584e674cd6352368ee40ad494ff  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/39802.cc
! ff72131edc212438199fb705529cfa69  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/4.cc
! f809cbc535e8da73b1afb8118dc0e369  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/5.cc
! 2feecf93f23239eab5490b975ba14f0d  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/6.cc
! 8f92ad2b454b0a86ac998e238b058280  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/7.cc
! 13bb878eff3ec93c8f00ce22a8f3a478  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/8.cc
! d22f201bc82d7dfabe6ebf0f3ea88bab  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/9.cc
! 7651495b59810a6b5e564574cb73d379  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/wrapped_env.cc
! e1d3ad9e66c2225b4b8eca9ff377cbd2  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/wrapped_locale.cc
! 36c93364cc6cdba164965062145f824c  libstdc++-v3/testsuite/22_locale/num_get/requirements/base_classes.cc
! 72a43ccd2cf980cb4a260a483029517a  libstdc++-v3/testsuite/22_locale/num_get/requirements/explicit_instantiation.cc
! 32d28a60c8ca5b0ee46eb3696e8ad1fe  libstdc++-v3/testsuite/22_locale/num_get/requirements/typedefs.cc
! dfc2c3999ce6de0b26809e67931b22f6  libstdc++-v3/testsuite/22_locale/num_put/cons/3.cc
! a223eb4d36132491ab72f0fd35de7eea  libstdc++-v3/testsuite/22_locale/num_put/put/char/1.cc
! 0e0e2c1766d8f921bbcdc1982f118436  libstdc++-v3/testsuite/22_locale/num_put/put/char/10.cc
! d2b68f420e88b654d2b7d52c7c0857eb  libstdc++-v3/testsuite/22_locale/num_put/put/char/11.cc
! fb2370676be8db166fcaa969a07efbff  libstdc++-v3/testsuite/22_locale/num_put/put/char/12.cc
! 76c509410ace4112905c5e1fe27fdebe  libstdc++-v3/testsuite/22_locale/num_put/put/char/14220.cc
! 8b04892d263787d6e025fe0591b267e6  libstdc++-v3/testsuite/22_locale/num_put/put/char/15565.cc
! 99d51a4d374324ca6228221e04f61ba7  libstdc++-v3/testsuite/22_locale/num_put/put/char/2.cc
! ba5ff6346e0c74bcb7f89981443f417f  libstdc++-v3/testsuite/22_locale/num_put/put/char/20909.cc
! acf776656a45fa180b96ac8d588df6e0  libstdc++-v3/testsuite/22_locale/num_put/put/char/20914.cc
! 6cb1386ca290605de95a88936d84cc34  libstdc++-v3/testsuite/22_locale/num_put/put/char/23953.cc
! e6946f9db5d9ba273a070f4de0b79479  libstdc++-v3/testsuite/22_locale/num_put/put/char/3.cc
! 1b58263024abda6508d97fa0516c9c5d  libstdc++-v3/testsuite/22_locale/num_put/put/char/38196.cc
! f809d7fd3334a2ac604b66e9e0197646  libstdc++-v3/testsuite/22_locale/num_put/put/char/38210.cc
! 514eccd4785a270743f9c56306e6c0a2  libstdc++-v3/testsuite/22_locale/num_put/put/char/4.cc
! 762e02f17ac6f849f12005a02f731594  libstdc++-v3/testsuite/22_locale/num_put/put/char/5.cc
! c276c7038d67f25b3fec09640d158c79  libstdc++-v3/testsuite/22_locale/num_put/put/char/6.cc
! 7db1b03e331b34f3db47f1b93612fb3e  libstdc++-v3/testsuite/22_locale/num_put/put/char/7.cc
! e706c3271ab2310a5344a741b56bd98f  libstdc++-v3/testsuite/22_locale/num_put/put/char/8.cc
! ecac7dd3ac1917f914c013d72e4b37bb  libstdc++-v3/testsuite/22_locale/num_put/put/char/9.cc
! 4ba94a93e0c431df1ff15d801d1dbe9c  libstdc++-v3/testsuite/22_locale/num_put/put/char/9780-2.cc
! a9cf00bf0a2be13db2833a8125240ef0  libstdc++-v3/testsuite/22_locale/num_put/put/char/wrapped_env.cc
! a6bf4685dd13cfd5b9ac98d04a58ba2d  libstdc++-v3/testsuite/22_locale/num_put/put/char/wrapped_locale.cc
! e564c77ad763360447855619a979207f  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/1.cc
! d81477c277baccfcf52b4bcbb19de886  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/10.cc
! 882358c1a590081ab7a918b8c0672566  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/11.cc
! 0a896ee98d47bd9ab7c0a067cbec517e  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/12.cc
! 9f386dd373511816a6c5fcb1726c09ce  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/14220.cc
! 2e24151bff1644f231f1a88f04c97ef8  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/15565.cc
! 65cd7b56ca54f9517d454e94939387d7  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/2.cc
! 3f61c660493138af309a84045ca9d4a3  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/20909.cc
! f2781eb3ea6329479cc4b1a905a2f458  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/20914.cc
! b490ec35b8b1a358199adee23fb00551  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/23953.cc
! 3d5f15b78545ca8a25c27c1c220405cb  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/3.cc
! 12eb3aec450bb17348d637fce4096f62  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/38196.cc
! 9114b7cd7ad89ba2d0cf7853696b5864  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/38210.cc
! b1e8c27de922a0d3c77e55144660106a  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/4.cc
! 0d643f32dc316aa8c7dd81bb7808ddd3  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/5.cc
! 0a2b42a800dfbdf0a1528e12d1d2f8e0  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/6.cc
! b6d17d324cab12453154a8e897d503b3  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/7.cc
! e49cc0ace9be1ec8438401ff0a1dc4c2  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/8.cc
! 63bb4c5625d77917ae9e7440454d574f  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/9.cc
! 4fd7ffa9ead62574a909958829af3c51  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/wrapped_env.cc
! d3ba3917d5f94713f93a3944bfadd430  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/wrapped_locale.cc
! ea327f0ed22a143e79db43530328ddf8  libstdc++-v3/testsuite/22_locale/num_put/requirements/base_classes.cc
! da56fee99ae335b1718d606200628c2c  libstdc++-v3/testsuite/22_locale/num_put/requirements/explicit_instantiation.cc
! bc2cf0104b8387025e4c9866828ca150  libstdc++-v3/testsuite/22_locale/num_put/requirements/typedefs.cc
! 010a7ad4e347736d5b7fa07074d85e70  libstdc++-v3/testsuite/22_locale/numpunct/members/char/1.cc
! 5c63b9c78ad943cc38e2a2af48914549  libstdc++-v3/testsuite/22_locale/numpunct/members/char/2.cc
! 4159a8a384cefa094ed95e55a0025ac7  libstdc++-v3/testsuite/22_locale/numpunct/members/char/3.cc
! 443721cd37571b0b0d69e494424e873d  libstdc++-v3/testsuite/22_locale/numpunct/members/char/cache_1.cc
! 1dbe9f39e50c968d507a5b56993ac577  libstdc++-v3/testsuite/22_locale/numpunct/members/char/cache_2.cc
! 1a09018d186ef00319041ec4349c6c72  libstdc++-v3/testsuite/22_locale/numpunct/members/char/wrapped_env.cc
! abaa7caf242f24007ebfdf5257fd8f8b  libstdc++-v3/testsuite/22_locale/numpunct/members/char/wrapped_locale.cc
! 6816dd998b959bd3e54815cc544a7fc4  libstdc++-v3/testsuite/22_locale/numpunct/members/pod/1.cc
! 8688cf316be7e6435b0d66e8f1471861  libstdc++-v3/testsuite/22_locale/numpunct/members/pod/2.cc
! ad92a62674343c6a1f291662d9b463a7  libstdc++-v3/testsuite/22_locale/numpunct/members/wchar_t/1.cc
! a70de42926569c53aa1078b02574d976  libstdc++-v3/testsuite/22_locale/numpunct/members/wchar_t/2.cc
! b2b0e140bc8ad1fcdbf2218ba7702de3  libstdc++-v3/testsuite/22_locale/numpunct/members/wchar_t/cache_1.cc
! d224470eff5672334ba94adf9d7d5b22  libstdc++-v3/testsuite/22_locale/numpunct/members/wchar_t/cache_2.cc
! 1a09018d186ef00319041ec4349c6c72  libstdc++-v3/testsuite/22_locale/numpunct/members/wchar_t/wrapped_env.cc
! abaa7caf242f24007ebfdf5257fd8f8b  libstdc++-v3/testsuite/22_locale/numpunct/members/wchar_t/wrapped_locale.cc
! e2c32ea0f16af5cbd982925c45f96974  libstdc++-v3/testsuite/22_locale/numpunct/requirements/base_classes.cc
! 35c3612e94303f9e5f7eb9cccdc45f84  libstdc++-v3/testsuite/22_locale/numpunct/requirements/explicit_instantiation.cc
! 9e8f33b67ba1c2d7aebd67f046b3f771  libstdc++-v3/testsuite/22_locale/numpunct/requirements/typedefs.cc
! 643310c5c1bf0182a078a00dc98e48ee  libstdc++-v3/testsuite/22_locale/numpunct_byname/1.cc
! c0bbd0935d9146e585bfa88a2b814c8b  libstdc++-v3/testsuite/22_locale/numpunct_byname/named_equivalence.cc
! bf0ed9d560a5cb94953b532c9b5a08a6  libstdc++-v3/testsuite/22_locale/numpunct_byname/requirements/base_classes.cc
! b14d4ee6c793067259d4274298c66a6d  libstdc++-v3/testsuite/22_locale/numpunct_byname/requirements/explicit_instantiation.cc
! 56c15ab8e26539740543076e7c7fc186  libstdc++-v3/testsuite/22_locale/numpunct_byname/requirements/typedefs.cc
! 39676c06d46a98e4d81c23ef30f832f6  libstdc++-v3/testsuite/22_locale/time_get/date_order/char/1.cc
! 7ae2d04097de9dce60877a418ac70030  libstdc++-v3/testsuite/22_locale/time_get/date_order/char/wrapped_env.cc
! 3ac5ddcfdaba806aacfdc10cd917f581  libstdc++-v3/testsuite/22_locale/time_get/date_order/char/wrapped_locale.cc
! cdbd53bdc4638230f5905c814b44b502  libstdc++-v3/testsuite/22_locale/time_get/date_order/wchar_t/1.cc
! 7ae2d04097de9dce60877a418ac70030  libstdc++-v3/testsuite/22_locale/time_get/date_order/wchar_t/wrapped_env.cc
! 3ac5ddcfdaba806aacfdc10cd917f581  libstdc++-v3/testsuite/22_locale/time_get/date_order/wchar_t/wrapped_locale.cc
! 540f5513aae5c7945e16e1dd248f0d85  libstdc++-v3/testsuite/22_locale/time_get/get/char/1.cc
! 74bee65f1bbd2e99330449ad19719eab  libstdc++-v3/testsuite/22_locale/time_get/get/char/2.cc
! 6e8d3c6410bdcb9d7ede48bd44830640  libstdc++-v3/testsuite/22_locale/time_get/get/wchar_t/1.cc
! fa80edd5c9c624a104353dd4015273ef  libstdc++-v3/testsuite/22_locale/time_get/get/wchar_t/2.cc
! bd115765156a90b4753182b4d319c571  libstdc++-v3/testsuite/22_locale/time_get/get_date/char/1.cc
! eb28c4607c426941bcf9509754d01ece  libstdc++-v3/testsuite/22_locale/time_get/get_date/char/12750.cc
! 4642afcbd403db37f804ea9226559ab7  libstdc++-v3/testsuite/22_locale/time_get/get_date/char/12791.cc
! 1a58fa24d281aa8022996d001db39c0e  libstdc++-v3/testsuite/22_locale/time_get/get_date/char/2.cc
! e7ec48e7b5d9be5f70e56bd72cbdf105  libstdc++-v3/testsuite/22_locale/time_get/get_date/char/26701.cc
! c90fe2d724318c582e0beb014e44af45  libstdc++-v3/testsuite/22_locale/time_get/get_date/char/3.cc
! 88766c6d30c567e93fff9722afbd75fc  libstdc++-v3/testsuite/22_locale/time_get/get_date/char/5.cc
! 53de5f9f6793d2a9ffd5b7c1a8ab4501  libstdc++-v3/testsuite/22_locale/time_get/get_date/char/wrapped_env.cc
! 9c3158e862b37c2aba54ea9c30d8c734  libstdc++-v3/testsuite/22_locale/time_get/get_date/char/wrapped_locale.cc
! d165e3b6fc45b75c5d3b60a38d472b37  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/1.cc
! 73428a2691bcdd74dcc149a35b66d49c  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/12750.cc
! 53035632b5f47096f9743f71fba3fd6b  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/12791.cc
! 1e33ee3bce80a71a8528058abe5572d0  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/2.cc
! 1a43508803cdc5c3bc038e0fce216441  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/26701.cc
! 713e49944f6d26f34b892a30565656ed  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/3.cc
! 1df95041e7e32b2de268db44d175b7bf  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/4.cc
! 04e47393a788b0d0cb156496e62b4823  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/5.cc
! 53de5f9f6793d2a9ffd5b7c1a8ab4501  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/wrapped_env.cc
! 9c3158e862b37c2aba54ea9c30d8c734  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/wrapped_locale.cc
! 31f277d1253674c1dedb500698029400  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/1.cc
! 53201cc872f4c3090519b9823efe8b04  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/2.cc
! f9942ea7463924dd5ceb834770c647c0  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/3.cc
! 3a7b8c003ebf85857e1aca46000e89e0  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/4.cc
! 365cd877403a34d4826a04f978c1dd86  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/5.cc
! e9c6ed893cbb1eca908c4cd67b1637aa  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/6.cc
! 53de5f9f6793d2a9ffd5b7c1a8ab4501  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/wrapped_env.cc
! 9c3158e862b37c2aba54ea9c30d8c734  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/wrapped_locale.cc
! be6b0a47792a6fbfa6a32902ddc2e9de  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/wchar_t/1.cc
! 3af3d2d01340b9aceadfd6651ea87873  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/wchar_t/2.cc
! 3368e82917d12de929e842b51d63fd4c  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/wchar_t/3.cc
! 32991d90389193e763a294cfccd68499  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/wchar_t/4.cc
! e1a7c1b0456c254d34b48e9b0881514c  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/wchar_t/5.cc
! cec6b5aabc41ae567379bbfd061d81ac  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/wchar_t/6.cc
! 53de5f9f6793d2a9ffd5b7c1a8ab4501  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/wchar_t/wrapped_env.cc
! 9c3158e862b37c2aba54ea9c30d8c734  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/wchar_t/wrapped_locale.cc
! df1d452e30447cf0e73082438cc3d777  libstdc++-v3/testsuite/22_locale/time_get/get_time/char/1.cc
! bd7aa18f0b578e8b2ac4903f49bdb535  libstdc++-v3/testsuite/22_locale/time_get/get_time/char/2.cc
! 4499342eef13f5ed09b2d191121981a3  libstdc++-v3/testsuite/22_locale/time_get/get_time/char/3.cc
! a2ca20983707ae063d4d1b433e3c5b35  libstdc++-v3/testsuite/22_locale/time_get/get_time/char/4.cc
! 5668b0c14bbee13162ee95cd0ffee4ab  libstdc++-v3/testsuite/22_locale/time_get/get_time/char/5.cc
! a6a063fc4b440d1a804c2f8a5dcd0be7  libstdc++-v3/testsuite/22_locale/time_get/get_time/char/6.cc
! 53de5f9f6793d2a9ffd5b7c1a8ab4501  libstdc++-v3/testsuite/22_locale/time_get/get_time/char/wrapped_env.cc
! 9c3158e862b37c2aba54ea9c30d8c734  libstdc++-v3/testsuite/22_locale/time_get/get_time/char/wrapped_locale.cc
! 93d67145282e59b3351bde4ec85d0cc5  libstdc++-v3/testsuite/22_locale/time_get/get_time/wchar_t/1.cc
! 35daca489ea7c26c8527b74c6df27abb  libstdc++-v3/testsuite/22_locale/time_get/get_time/wchar_t/2.cc
! 07cf844af7da95bc661843c91ab76cb0  libstdc++-v3/testsuite/22_locale/time_get/get_time/wchar_t/3.cc
! 1bd49d59745575febcf20d9bb2684816  libstdc++-v3/testsuite/22_locale/time_get/get_time/wchar_t/4.cc
! ba1ab874e02696c585232b35d2b814e5  libstdc++-v3/testsuite/22_locale/time_get/get_time/wchar_t/5.cc
! 3ffcb10c74edd17ab4f39b2bcf42c666  libstdc++-v3/testsuite/22_locale/time_get/get_time/wchar_t/6.cc
! 53de5f9f6793d2a9ffd5b7c1a8ab4501  libstdc++-v3/testsuite/22_locale/time_get/get_time/wchar_t/wrapped_env.cc
! 9c3158e862b37c2aba54ea9c30d8c734  libstdc++-v3/testsuite/22_locale/time_get/get_time/wchar_t/wrapped_locale.cc
! 214c9abcc57ae7087295be3d699b66e7  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/1.cc
! 626887cd918c5650f918385f44c45a2b  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/2.cc
! c6eaad5394af4a43ac82c3e8e928d9bc  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/3.cc
! 7b6e20f6e3caca51e13e340be4d22edc  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/38081-1.cc
! be51c6886e23e7228720d86524696257  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/38081-2.cc
! 75b167dcd4e740128c1c65a28f4d3b59  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/5.cc
! 63555da090ae3e004842b07c091bba1b  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/6.cc
! 53de5f9f6793d2a9ffd5b7c1a8ab4501  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/wrapped_env.cc
! 9c3158e862b37c2aba54ea9c30d8c734  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/wrapped_locale.cc
! 576630b10066cc2e542368a0a6e8638d  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/wchar_t/1.cc
! fbec406111d29badcb4d46d054f175c4  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/wchar_t/2.cc
! 362ed8f3508bd115ab92c8986e174b74  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/wchar_t/3.cc
! e5a78e09cd7716f2dc0e074b57100471  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/wchar_t/5.cc
! 81b107c6ff33e345b8bee7efdc095b1c  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/wchar_t/6.cc
! 31bc9cafea0cb50ec43c4a270274d7b5  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/wchar_t/wrapped_env.cc
! 57501fa12ce2c956a999fc957f177d57  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/wchar_t/wrapped_locale.cc
! 78c4bb24afe8fbc4940da0a290c341b3  libstdc++-v3/testsuite/22_locale/time_get/get_year/char/1.cc
! 171dd8d5ca858465a36b301d218a2239  libstdc++-v3/testsuite/22_locale/time_get/get_year/char/3.cc
! bd754b2134ff985251e0bb2cf7aa90a9  libstdc++-v3/testsuite/22_locale/time_get/get_year/char/5.cc
! eba18f301ba4b474d5430f748c4450d7  libstdc++-v3/testsuite/22_locale/time_get/get_year/char/wrapped_env.cc
! 33083f9298d9fd386f0c572ae5836bc3  libstdc++-v3/testsuite/22_locale/time_get/get_year/char/wrapped_locale.cc
! 85d67f18504f1fa6af7e9f39e4326cc1  libstdc++-v3/testsuite/22_locale/time_get/get_year/wchar_t/1.cc
! 360c2b6251d2f1c37a6a4602ae434273  libstdc++-v3/testsuite/22_locale/time_get/get_year/wchar_t/3.cc
! 53857026190eae6a46188eb6d21f0d67  libstdc++-v3/testsuite/22_locale/time_get/get_year/wchar_t/5.cc
! eba18f301ba4b474d5430f748c4450d7  libstdc++-v3/testsuite/22_locale/time_get/get_year/wchar_t/wrapped_env.cc
! 33083f9298d9fd386f0c572ae5836bc3  libstdc++-v3/testsuite/22_locale/time_get/get_year/wchar_t/wrapped_locale.cc
! 57849d1e5e741fef8db04c57228281ab  libstdc++-v3/testsuite/22_locale/time_get/requirements/base_classes.cc
! 315d3ec912af6988ca2acecd26e95ab8  libstdc++-v3/testsuite/22_locale/time_get/requirements/explicit_instantiation.cc
! 22b09eb74b9bac234b6ea2fa4bb1e88a  libstdc++-v3/testsuite/22_locale/time_get/requirements/typedefs.cc
! 36e47f0c12d6f699bc0e69f30ba7f1eb  libstdc++-v3/testsuite/22_locale/time_put/put/char/1.cc
! 233da89449b52d27c7407bd9a9cfb5f7  libstdc++-v3/testsuite/22_locale/time_put/put/char/10.cc
! 63d6ceb3964892bee932269aee4fcd90  libstdc++-v3/testsuite/22_locale/time_put/put/char/12439_1.cc
! b9ffb3d0c7b57267a26a825ed253c801  libstdc++-v3/testsuite/22_locale/time_put/put/char/12439_3.cc
! aa9b6be24c0b56ebc7dbf4badd3ecdef  libstdc++-v3/testsuite/22_locale/time_put/put/char/17038.cc
! 58dd9199c4ca986428951fb109b63baf  libstdc++-v3/testsuite/22_locale/time_put/put/char/2.cc
! eb86a247e559e9bd96553620ae9a5ce6  libstdc++-v3/testsuite/22_locale/time_put/put/char/3.cc
! bc3d62e66edf863f96296dea536ef550  libstdc++-v3/testsuite/22_locale/time_put/put/char/4.cc
! 986429db2c28b6232cafbc6e217fe72e  libstdc++-v3/testsuite/22_locale/time_put/put/char/5.cc
! 4a3854553181f935c4583279042f5940  libstdc++-v3/testsuite/22_locale/time_put/put/char/6.cc
! 5631cfe527250523bdf05a83db7ceea1  libstdc++-v3/testsuite/22_locale/time_put/put/char/7.cc
! 12b8d3046d789a0e98b408394055f43a  libstdc++-v3/testsuite/22_locale/time_put/put/char/8.cc
! 56ad9382387a48ab216c2932cb70e651  libstdc++-v3/testsuite/22_locale/time_put/put/char/9.cc
! e2e0ed96ba09ccbf7a8b65d049f7c399  libstdc++-v3/testsuite/22_locale/time_put/put/char/9780-1.cc
! aa2b122fecd3d7b1ec66c5f709bb4a19  libstdc++-v3/testsuite/22_locale/time_put/put/char/wrapped_env.cc
! 547186a54f55ac531383c52e91f31076  libstdc++-v3/testsuite/22_locale/time_put/put/char/wrapped_locale.cc
! de7f2d0d2835d340adba5191102490ea  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/1.cc
! 40c85ffb7d953e89d6685f101a230019  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/10.cc
! f39ff5991ba69e00a69549be62f57461  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/12439_1.cc
! 84dc2eb5c8e549912e264c9b5abc6869  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/12439_2.cc
! 74a60f3b0a89c44761a69d5e47263c5a  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/12439_3.cc
! e5ee532732d0024fecdb96916a23c9e0  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/17038.cc
! 5755274b6ba39b01d611d03b86dfc2dc  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/2.cc
! e2c2e2a4f26f6bf2dd03ba865455061a  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/3.cc
! 440004fc550cc20b2352b7927e1f2c83  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/4.cc
! 44b3e4da451ecf65d9dfc23e34c2991c  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/5.cc
! eab976af68bb9c60cf6bab18d65ad7c6  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/6.cc
! 87dfc6b2c49e6070e189111a9802de21  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/7.cc
! 055571fd6de88bf9e7665433b68754c3  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/8.cc
! 3cb2f92974f0761b573afadd082df047  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/9.cc
! aa2b122fecd3d7b1ec66c5f709bb4a19  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/wrapped_env.cc
! 3047afa28036d5dbca0f388b7ceac9b2  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/wrapped_locale.cc
! 2c506bab348413346df937eb39c237b6  libstdc++-v3/testsuite/22_locale/time_put/requirements/base_classes.cc
! 8359a017d745c49cefcd9278f0ab3b7a  libstdc++-v3/testsuite/22_locale/time_put/requirements/explicit_instantiation.cc
! b62e0f512fa624c2077ba844c9e0fe71  libstdc++-v3/testsuite/22_locale/time_put/requirements/typedefs.cc
! ad2a0cf83f09acf22629da9d0de98e12  libstdc++-v3/testsuite/23_containers/array/capacity/constexpr_functions.cc
! dedc96fd109c6e37b6e33ce29f46070c  libstdc++-v3/testsuite/23_containers/array/capacity/empty.cc
! af338996d2945da1d634bf01cb900993  libstdc++-v3/testsuite/23_containers/array/capacity/max_size.cc
! debaaabcfe3cec06dbcffcb1d347a0c5  libstdc++-v3/testsuite/23_containers/array/capacity/size.cc
! 86b7b936711435fadcfaa73d102713ef  libstdc++-v3/testsuite/23_containers/array/comparison_operators/equal.cc
! 8a7046fdb7dcdab3b3402f5128b04140  libstdc++-v3/testsuite/23_containers/array/comparison_operators/greater.cc
! e1ebeae66b40f093befda4a3e59c6960  libstdc++-v3/testsuite/23_containers/array/comparison_operators/greater_or_equal.cc
! 882da84a12e9cfb58666f6a6b94b2dae  libstdc++-v3/testsuite/23_containers/array/comparison_operators/less.cc
! 27f26230219b00698f7dc8f14600cbf6  libstdc++-v3/testsuite/23_containers/array/comparison_operators/less_or_equal.cc
! 67b0804c250b80d79194a6ac9880064f  libstdc++-v3/testsuite/23_containers/array/comparison_operators/not_equal.cc
! 6114020050078d019d42fda0bbf97061  libstdc++-v3/testsuite/23_containers/array/cons/53361.cc
! 656301f44749f5670118fecee2adf870  libstdc++-v3/testsuite/23_containers/array/cons/aggregate_initialization.cc
! 6a4d0732e80f0149704ecfeb77663916  libstdc++-v3/testsuite/23_containers/array/cons/deduction.cc
! 413ca204fef5bfcfc043f7ce1a4efd86  libstdc++-v3/testsuite/23_containers/array/cons/deduction_neg.cc
! a24f42885d69bd17b9bbb7c07ac54805  libstdc++-v3/testsuite/23_containers/array/debug/back1_neg.cc
! e8921831e61752cc86a760ccc9f8bf3f  libstdc++-v3/testsuite/23_containers/array/debug/back2_neg.cc
! 63dd22090be4ef41147659916ff8061c  libstdc++-v3/testsuite/23_containers/array/debug/front1_neg.cc
! beca8cff99ffd989442232ab7843b5a6  libstdc++-v3/testsuite/23_containers/array/debug/front2_neg.cc
! 59abdfb948820d4441741bc6f08de572  libstdc++-v3/testsuite/23_containers/array/debug/square_brackets_operator1_neg.cc
! 80aa0a0f4cd65c72ffc797ea2df34704  libstdc++-v3/testsuite/23_containers/array/debug/square_brackets_operator2_neg.cc
! d41a4a5c0e9bb9b7d57f3e86e009db80  libstdc++-v3/testsuite/23_containers/array/element_access/54388.cc
! 667afdc6dd051b27e944645fbf67117b  libstdc++-v3/testsuite/23_containers/array/element_access/60497.cc
! 8031cd1182ee2afa45d389b4834c1af6  libstdc++-v3/testsuite/23_containers/array/element_access/at_neg.cc
! c09651e62699755dec85b7dc6cc69367  libstdc++-v3/testsuite/23_containers/array/element_access/at_out_of_range.cc
! f990dc15c02f8b06a17087c7168dace3  libstdc++-v3/testsuite/23_containers/array/element_access/back.cc
! 2489fb7006c2209a304fc063963d8332  libstdc++-v3/testsuite/23_containers/array/element_access/constexpr_element_access.cc
! 7936d669d5f1bac619ce5d754ad85fd8  libstdc++-v3/testsuite/23_containers/array/element_access/data.cc
! f49b09a74c08e8ada0d8392b437da227  libstdc++-v3/testsuite/23_containers/array/element_access/front.cc
! e9f4862db1f9726eeed978ee54d9a75d  libstdc++-v3/testsuite/23_containers/array/iterators/end_is_one_past.cc
! 3305b6fc301ae8bfa3c4216da9195c97  libstdc++-v3/testsuite/23_containers/array/range_access.cc
! 11cdd75efd1d2ad6958b97ae9dff73cc  libstdc++-v3/testsuite/23_containers/array/requirements/citerators.cc
! 96730c4a3f6a3bd3ab752aa5f026b06d  libstdc++-v3/testsuite/23_containers/array/requirements/contiguous.cc
! c94edd442d44675c5e1de79945978ba4  libstdc++-v3/testsuite/23_containers/array/requirements/explicit_instantiation/1.cc
! 0fea4a5f4d354a3a79ec996866420e1c  libstdc++-v3/testsuite/23_containers/array/requirements/explicit_instantiation/2.cc
! e098601f89d6559cb7e937669515ae14  libstdc++-v3/testsuite/23_containers/array/requirements/explicit_instantiation/3.cc
! 242ad91fdb6182e5eb9686ee0ae2f76f  libstdc++-v3/testsuite/23_containers/array/requirements/fill.cc
! a988f25238bee674aed7bfe5fb3755e7  libstdc++-v3/testsuite/23_containers/array/requirements/member_swap.cc
! 421da82b2ddf054d3d097377b99a1574  libstdc++-v3/testsuite/23_containers/array/requirements/non_default_constructible.cc
! 0275e479973a2821f68cdc607e415a18  libstdc++-v3/testsuite/23_containers/array/requirements/typedefs.cc
! 655484cc7254ccc0fe592121d2644f9c  libstdc++-v3/testsuite/23_containers/array/requirements/zero_sized_arrays.cc
! ee0e99d9b29bf30790b953f0de048a03  libstdc++-v3/testsuite/23_containers/array/specialized_algorithms/swap.cc
! 8b81c9e01b4e3a4dd209ce1af44c9f3b  libstdc++-v3/testsuite/23_containers/array/specialized_algorithms/swap_cxx17.cc
! 1e28b9e1d9abc147a515084a8098c171  libstdc++-v3/testsuite/23_containers/array/tuple_interface/constexpr_get.cc
! 3b3795e335c2bad8655852c87aa66347  libstdc++-v3/testsuite/23_containers/array/tuple_interface/get.cc
! 7c1e8ed664c657d53e712befd58cfb2e  libstdc++-v3/testsuite/23_containers/array/tuple_interface/get_debug_neg.cc
! a12779293bbb8749cf97254808e0481d  libstdc++-v3/testsuite/23_containers/array/tuple_interface/get_neg.cc
! 2b92292d23b1332ba0255b9a9e251e08  libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_element.cc
! 43402cb1b2806511391eb92ecadbab7d  libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_element_cpp14.cc
! 660feda6d32859f830c9aea97b135015  libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_element_debug_neg.cc
! c9b85abd25d911b968ffbbf063569b98  libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_element_neg.cc
! 112dfd6ccec605d8bdaa57e672c94fe3  libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_size.cc
! 7eab45712accfcc804cfede91526603c  libstdc++-v3/testsuite/23_containers/bitset/18604.cc
! eacc1568fb33d3ef5db35d9812589a91  libstdc++-v3/testsuite/23_containers/bitset/45713.cc
! 0ed86daaa23434d4005c610a2689fca7  libstdc++-v3/testsuite/23_containers/bitset/all/1.cc
! 88a09e697c8234b0e7e32f2e1cb2301e  libstdc++-v3/testsuite/23_containers/bitset/cons/1.cc
! ae7f9d3326dbb3bdebde50fa895a54f2  libstdc++-v3/testsuite/23_containers/bitset/cons/16020.cc
! db0ce1f18dd743098cd7b345a8bd720b  libstdc++-v3/testsuite/23_containers/bitset/cons/2.cc
! 45e4d0b523d5be88850735532c506afd  libstdc++-v3/testsuite/23_containers/bitset/cons/3.cc
! 6a04921720395dc445b0d1bd0fa8fc47  libstdc++-v3/testsuite/23_containers/bitset/cons/38244.cc
! 462d022104ea64a9401d560bbdc6a7bf  libstdc++-v3/testsuite/23_containers/bitset/cons/50268.cc
! 3ec3c63868abf4becbf29c112239c6e2  libstdc++-v3/testsuite/23_containers/bitset/cons/6282.cc
! 7b7ad102d6663e682fe15aedd113a8ad  libstdc++-v3/testsuite/23_containers/bitset/cons/constexpr.cc
! a03249954566290769082907b2922788  libstdc++-v3/testsuite/23_containers/bitset/cons/dr1325-1.cc
! f1235961f2460d92f63201a409d9cf0f  libstdc++-v3/testsuite/23_containers/bitset/cons/dr1325-2.cc
! ae8164d1ca368752aad6854e1ef43254  libstdc++-v3/testsuite/23_containers/bitset/cons/dr396.cc
! 8ddaca8a0c86719ab61b471c83370f43  libstdc++-v3/testsuite/23_containers/bitset/count/6124.cc
! d83159a2501511f85b1d73912381a042  libstdc++-v3/testsuite/23_containers/bitset/debug/invalidation/1.cc
! ceacb971adf414e59de036ab19c8fc02  libstdc++-v3/testsuite/23_containers/bitset/ext/15361.cc
! 2f20fecf83b622db116a2a66977d4123  libstdc++-v3/testsuite/23_containers/bitset/hash/1.cc
! b24bddd7a098967b053b87cfaaa49562  libstdc++-v3/testsuite/23_containers/bitset/input/1.cc
! 50fab631fa59651bfe866336d1b6de34  libstdc++-v3/testsuite/23_containers/bitset/operations/1.cc
! 24c94d4aaeeec08bce86142d5da96a81  libstdc++-v3/testsuite/23_containers/bitset/operations/13838.cc
! ee9a7ed2d1ef31182d941709956a4217  libstdc++-v3/testsuite/23_containers/bitset/operations/2.cc
! da6bf66f3f680d238e5c268618bd4855  libstdc++-v3/testsuite/23_containers/bitset/operations/constexpr-2.cc
! 45355e5249ac81e298ace8fac9bb4563  libstdc++-v3/testsuite/23_containers/bitset/operations/constexpr.cc
! 21d8d34e674766881e2f30ac5e4979b5  libstdc++-v3/testsuite/23_containers/bitset/requirements/constexpr_functions.cc
! a8686b3dd26e291af6d5374bc338a0ff  libstdc++-v3/testsuite/23_containers/bitset/requirements/explicit_instantiation/1.cc
! 08c6c72195e66bbf8d3d04eda699ec5a  libstdc++-v3/testsuite/23_containers/bitset/requirements/explicit_instantiation/1_c++0x.cc
! 4c5ed2e098e7ccaf8144a63871999ff1  libstdc++-v3/testsuite/23_containers/bitset/test/1.cc
! 98b5a373b351f2e22c2998a82cb209b2  libstdc++-v3/testsuite/23_containers/bitset/to_string/1.cc
! 0d9ee0a0e1801128fa03c6f0f3bd2f83  libstdc++-v3/testsuite/23_containers/bitset/to_string/dr396.cc
! c8430e3c2544a681e4ef5deee254cdbf  libstdc++-v3/testsuite/23_containers/bitset/to_ullong/1.cc
! 3f83902b91ad599334bf0c8b4f766805  libstdc++-v3/testsuite/23_containers/bitset/to_ulong/1.cc
! deb29aca9237bc0b643e21b2e63b2363  libstdc++-v3/testsuite/23_containers/deque/14340.cc
! c7e55d813b952215779bb8df8fc66757  libstdc++-v3/testsuite/23_containers/deque/18604.cc
! 463aa2f8544a547ded785f06881e9602  libstdc++-v3/testsuite/23_containers/deque/48101-2_neg.cc
! e38ae0ae08a3dd9dde1aa445b0a175e8  libstdc++-v3/testsuite/23_containers/deque/48101_neg.cc
! 46ccd8a1690517ba98a6a09d62130911  libstdc++-v3/testsuite/23_containers/deque/58764.cc
! 4382f8968d445303cd0f6930d813f0af  libstdc++-v3/testsuite/23_containers/deque/allocator/copy.cc
! dd75167950e85e1a80e4583b54a9ab67  libstdc++-v3/testsuite/23_containers/deque/allocator/copy_assign.cc
! ddf64134dbeb329b151a503b72fb8bac  libstdc++-v3/testsuite/23_containers/deque/allocator/ext_ptr.cc
! b890754119f1739f6a950646d764139f  libstdc++-v3/testsuite/23_containers/deque/allocator/minimal.cc
! d280ba58ea73cf429837074857f2c385  libstdc++-v3/testsuite/23_containers/deque/allocator/move-2.cc
! 330874b56bfb235df0c10a3885e9f74e  libstdc++-v3/testsuite/23_containers/deque/allocator/move.cc
! 3b315b1d2c1de2aa9d61246720016ac5  libstdc++-v3/testsuite/23_containers/deque/allocator/move_assign-2.cc
! 66bdc60e3d8c6c6ccb6e1c97ae90a617  libstdc++-v3/testsuite/23_containers/deque/allocator/move_assign.cc
! 40d91dddc2f7f3171abdbf3860ff75bc  libstdc++-v3/testsuite/23_containers/deque/allocator/noexcept.cc
! ca3f9b928aeef40835f261f503d0fb8a  libstdc++-v3/testsuite/23_containers/deque/allocator/swap.cc
! d7c885d070d58a69b4f9c565657c75f5  libstdc++-v3/testsuite/23_containers/deque/capacity/29134-2.cc
! 785a9cddb84fb8d2649cd4e043ff3691  libstdc++-v3/testsuite/23_containers/deque/capacity/29134.cc
! 8552f55be602d6fdc58e7184134f6ad5  libstdc++-v3/testsuite/23_containers/deque/capacity/moveable.cc
! 962d75c6ad25e04103958d39754eaafa  libstdc++-v3/testsuite/23_containers/deque/capacity/resize_size.cc
! 32c8fc3c209535c108f83ada4a48f397  libstdc++-v3/testsuite/23_containers/deque/capacity/shrink_to_fit.cc
! e67d15e1847aa86a5e082a1d40b07bf4  libstdc++-v3/testsuite/23_containers/deque/check_construct_destroy.cc
! bafcb93f786fad9d223eb7b9f8a4191f  libstdc++-v3/testsuite/23_containers/deque/cons/1.cc
! 37f2000ba8e684093a3e5473d47247fe  libstdc++-v3/testsuite/23_containers/deque/cons/2.cc
! 76a98eb250551f940616faa7e96fe398  libstdc++-v3/testsuite/23_containers/deque/cons/55977.cc
! a287ebfe85425274358f2aa0367adda4  libstdc++-v3/testsuite/23_containers/deque/cons/assign/1.cc
! cd4a57aba961a1bdbd59e1d96d5bb32a  libstdc++-v3/testsuite/23_containers/deque/cons/clear_allocator.cc
! d4434d3e8e1be5e226c84f872dd32c85  libstdc++-v3/testsuite/23_containers/deque/cons/cons_size.cc
! 7071dffbd57271da6d7ff53aef182904  libstdc++-v3/testsuite/23_containers/deque/cons/deduction.cc
! 2128269644bfa79f591168e03ceb142a  libstdc++-v3/testsuite/23_containers/deque/cons/moveable.cc
! 65518e4c04a79d1f3528ea4f88fd35b2  libstdc++-v3/testsuite/23_containers/deque/cons/moveable2.cc
! f6dcc2cbefec70431753a56d4d4dabf3  libstdc++-v3/testsuite/23_containers/deque/debug/assign1_neg.cc
! b14b2d1c4691fae934d8d617e6b5661a  libstdc++-v3/testsuite/23_containers/deque/debug/assign2_neg.cc
! 2cbaed7b65fd5047cec043231f675f0b  libstdc++-v3/testsuite/23_containers/deque/debug/assign3_neg.cc
! 8b466948313c86e41257a56e4742dcf3  libstdc++-v3/testsuite/23_containers/deque/debug/assign4_neg.cc
! e0416538fd290309e42b759d25c9a1fc  libstdc++-v3/testsuite/23_containers/deque/debug/construct1_neg.cc
! 2ce230ebe96ba3a2d65d6a2253b6d8ca  libstdc++-v3/testsuite/23_containers/deque/debug/construct2_neg.cc
! 3bc003231f8f37a5a44af07a849698bd  libstdc++-v3/testsuite/23_containers/deque/debug/construct3_neg.cc
! d28983a1eaf72e066514d158c9c19588  libstdc++-v3/testsuite/23_containers/deque/debug/construct4_neg.cc
! 57f9170525c3471121c8e0162b62bc74  libstdc++-v3/testsuite/23_containers/deque/debug/insert1_neg.cc
! 7613788d216126e5a7aa3a7916c99b7a  libstdc++-v3/testsuite/23_containers/deque/debug/insert2_neg.cc
! 658107358ed46d44f4d15d9883a8d114  libstdc++-v3/testsuite/23_containers/deque/debug/insert3_neg.cc
! b5bf8548517684212cc015f61a752306  libstdc++-v3/testsuite/23_containers/deque/debug/insert4_neg.cc
! 3b46ee908ce692689c6fc752921c4573  libstdc++-v3/testsuite/23_containers/deque/debug/insert5_neg.cc
! 55fa8fb7daa5f2ed8219ea777e5ff3a0  libstdc++-v3/testsuite/23_containers/deque/debug/invalidation/1.cc
! 4118ee8f547c8db1a11379c9c0915d26  libstdc++-v3/testsuite/23_containers/deque/debug/invalidation/2.cc
! 4ccf468eb9bb9e27d1edeecb955876e8  libstdc++-v3/testsuite/23_containers/deque/debug/invalidation/3.cc
! 1e0f3f4ecad979706b0e3e683628366b  libstdc++-v3/testsuite/23_containers/deque/debug/invalidation/4.cc
! bcc307562510fa508a431beb563f2022  libstdc++-v3/testsuite/23_containers/deque/debug/iterator_self_move_assign_neg.cc
! b76c1a7e4ffe0dc9e1b58d2ddf12b3b2  libstdc++-v3/testsuite/23_containers/deque/debug/self_move_assign_neg.cc
! 6bf44067c931751a7fd1c24be1a2d413  libstdc++-v3/testsuite/23_containers/deque/debug/shrink_to_fit.cc
! 371ec3c69ae2eeb5b6e9b98c1a44f738  libstdc++-v3/testsuite/23_containers/deque/init-list.cc
! f2487674846224603369af6c8c2b52a8  libstdc++-v3/testsuite/23_containers/deque/modifiers/emplace/52799.cc
! 3668a3249ed269bbf6f14fe2e245ea8c  libstdc++-v3/testsuite/23_containers/deque/modifiers/emplace/const_iterator.cc
! af46f8a74a2dd556af26cbf21261b23b  libstdc++-v3/testsuite/23_containers/deque/modifiers/emplace/cxx17_return.cc
! cfe8f005dbb41cdbcd87e4112d76a6ac  libstdc++-v3/testsuite/23_containers/deque/modifiers/erase/1.cc
! 3861008881b273279438e4399d573442  libstdc++-v3/testsuite/23_containers/deque/modifiers/erase/2.cc
! e20da583580dae0e3c431475ddd30720  libstdc++-v3/testsuite/23_containers/deque/modifiers/erase/3.cc
! de0d350f920b4534b0589f702d947994  libstdc++-v3/testsuite/23_containers/deque/modifiers/erase/50529.cc
! e250f92e6be113880270a64d70950a21  libstdc++-v3/testsuite/23_containers/deque/modifiers/erase/54577.cc
! 9ef6798a89e0255bb24ee323e5a98a01  libstdc++-v3/testsuite/23_containers/deque/modifiers/erase/moveable.cc
! b39097febc2ca0b05211b143a2a57aa5  libstdc++-v3/testsuite/23_containers/deque/modifiers/insert/const_iterator.cc
! a8f900c7812adb2cd680b67c7b3b34ee  libstdc++-v3/testsuite/23_containers/deque/modifiers/moveable.cc
! c87dfbfc015d59b4ac6dff1c42904e3a  libstdc++-v3/testsuite/23_containers/deque/modifiers/push_back/49836.cc
! 6cc4e1b391307347a281a6947e757c6c  libstdc++-v3/testsuite/23_containers/deque/modifiers/push_front/49836.cc
! 3961684e3bbc35923c049859982935bb  libstdc++-v3/testsuite/23_containers/deque/modifiers/swap/1.cc
! 018b837bf0938098ad86c423fab0acee  libstdc++-v3/testsuite/23_containers/deque/modifiers/swap/2.cc
! c4dc37bed720528d4c4aad6e1fb965c5  libstdc++-v3/testsuite/23_containers/deque/modifiers/swap/3.cc
! b8568a5f5dcdf4ae3fa387a46b20a72d  libstdc++-v3/testsuite/23_containers/deque/operators/1.cc
! 677e8a76d99a4241fd339a172f2c1e60  libstdc++-v3/testsuite/23_containers/deque/operators/2.cc
! b6835425d8e7ecaf28545b7463f42554  libstdc++-v3/testsuite/23_containers/deque/range_access.cc
! 70598304202a3c298fa41384838a919b  libstdc++-v3/testsuite/23_containers/deque/requirements/citerators.cc
! a00691e78027576f28c52f6f47ae7680  libstdc++-v3/testsuite/23_containers/deque/requirements/do_the_right_thing.cc
! 7aa5aeb38106225a0bac02989fc42c4b  libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/assign_neg.cc
! 41dc6a736f3ba114c97629a60d84e121  libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor.cc
! dafd065fa14d768bf86a2acfca19a5ae  libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc
! a507b7bd5ab86849e1db80b4c2b06f2b  libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc
! 9b20e58925eeaa2296b944019ac4a014  libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/insert_neg.cc
! b5bdfa97fefd5c5b208e6f744cb99bda  libstdc++-v3/testsuite/23_containers/deque/requirements/exception/basic.cc
! e57b98437bc79a65bd85f24dca8291c6  libstdc++-v3/testsuite/23_containers/deque/requirements/exception/generation_prohibited.cc
! e2798c0e4ea91dfc9c1e9519fdbfcdb7  libstdc++-v3/testsuite/23_containers/deque/requirements/exception/propagation_consistent.cc
! f07e19cb209350de73b8b00bc4e14dc3  libstdc++-v3/testsuite/23_containers/deque/requirements/explicit_instantiation/1.cc
! 7ef8f52b320d661ea6bad8d85c66784b  libstdc++-v3/testsuite/23_containers/deque/requirements/explicit_instantiation/1_c++0x.cc
! 07394151fe41a715b8e95f5f8a8bad49  libstdc++-v3/testsuite/23_containers/deque/requirements/explicit_instantiation/2.cc
! a4d32442fb532f7885e74216ee48ca73  libstdc++-v3/testsuite/23_containers/deque/requirements/explicit_instantiation/3.cc
! d0eea8342e19da17af0a5a8621ceeefb  libstdc++-v3/testsuite/23_containers/deque/requirements/explicit_instantiation/4.cc
! 27a19869eef1f04b714dac4b98c6f0b2  libstdc++-v3/testsuite/23_containers/deque/requirements/partial_specialization/1.cc
! ad54016507c08845c03dfe0d2d053da3  libstdc++-v3/testsuite/23_containers/deque/requirements/typedefs.cc
! 64ecc6ebaa44a9a0c81fafa3cc92483a  libstdc++-v3/testsuite/23_containers/deque/types/1.cc
! 08090520d3ac87d9e857aa2cdcb537ae  libstdc++-v3/testsuite/23_containers/forward_list/48101-2_neg.cc
! c1b916b8bdacfac3a8e2362603e0bcc8  libstdc++-v3/testsuite/23_containers/forward_list/48101_neg.cc
! eaca35a45296d1d8e6f071f47aa7bc2f  libstdc++-v3/testsuite/23_containers/forward_list/allocator/copy.cc
! 6fe87931e2389d730d603fbe8aefa039  libstdc++-v3/testsuite/23_containers/forward_list/allocator/copy_assign.cc
! a1f20c53a782100cdd9f0d9a9a823e22  libstdc++-v3/testsuite/23_containers/forward_list/allocator/default_init.cc
! 1cf6ab48e34ac5e0e550c472a645f16d  libstdc++-v3/testsuite/23_containers/forward_list/allocator/ext_ptr.cc
! 7ef1d07650ebb3026d54b25db32d26b2  libstdc++-v3/testsuite/23_containers/forward_list/allocator/minimal.cc
! fdce0ee37576b469d90f78b6210626aa  libstdc++-v3/testsuite/23_containers/forward_list/allocator/move.cc
! 9f08332cf0e8d5022794ab53092ab3fa  libstdc++-v3/testsuite/23_containers/forward_list/allocator/move_assign.cc
! 83408d0eccc79ddbd64c2e903b673f68  libstdc++-v3/testsuite/23_containers/forward_list/allocator/noexcept.cc
! 11f831ed76fbf7dc616371699927489a  libstdc++-v3/testsuite/23_containers/forward_list/allocator/swap.cc
! af454948aa829a23fdfa216e96ae8021  libstdc++-v3/testsuite/23_containers/forward_list/capacity/1.cc
! 95411b8726b6525fbf86208581538928  libstdc++-v3/testsuite/23_containers/forward_list/capacity/resize_size.cc
! 418ddd51f5b95994a371b8b969c76fd8  libstdc++-v3/testsuite/23_containers/forward_list/comparable.cc
! 2700909a190dde56cb1c4eff1009f300  libstdc++-v3/testsuite/23_containers/forward_list/cons/1.cc
! 6d4b5d62991231b98629ff777450b01b  libstdc++-v3/testsuite/23_containers/forward_list/cons/10.cc
! 23f9124fd869502a84991368366b8830  libstdc++-v3/testsuite/23_containers/forward_list/cons/11.cc
! 7b158d45843624993080a93559da65e3  libstdc++-v3/testsuite/23_containers/forward_list/cons/12.cc
! 3abde142314498c55a9a0d75fa1157c9  libstdc++-v3/testsuite/23_containers/forward_list/cons/13.cc
! 9ed7af5998bd42829064d828d93c4c31  libstdc++-v3/testsuite/23_containers/forward_list/cons/14.cc
! 60d94a6cdc82631019be9e59027eaf08  libstdc++-v3/testsuite/23_containers/forward_list/cons/2.cc
! 67ba52675104a69639cbc3e20e77c035  libstdc++-v3/testsuite/23_containers/forward_list/cons/3.cc
! adf91807536687e3f5c61136b91a780f  libstdc++-v3/testsuite/23_containers/forward_list/cons/4.cc
! 5ded4a1462f1251678bf0d8697c91af3  libstdc++-v3/testsuite/23_containers/forward_list/cons/5.cc
! ac2acd41576d844a0d0464fc0e3e24fd  libstdc++-v3/testsuite/23_containers/forward_list/cons/6.cc
! ffd0fec74060778747ff6926ae6f773f  libstdc++-v3/testsuite/23_containers/forward_list/cons/7.cc
! 66c8b857e152f01dc95bde19ec3ce5de  libstdc++-v3/testsuite/23_containers/forward_list/cons/8.cc
! 7a111d7c16591b8e564c4a6717f717a7  libstdc++-v3/testsuite/23_containers/forward_list/cons/9.cc
! 803392e89e6fffdb10d983975ab8b076  libstdc++-v3/testsuite/23_containers/forward_list/cons/cons_size.cc
! e2eadbcd70d00ba748882a28ebc77e5e  libstdc++-v3/testsuite/23_containers/forward_list/cons/deduction.cc
! 4fe7d3f39e8049b3e983fd0d4673785f  libstdc++-v3/testsuite/23_containers/forward_list/cons/moveable.cc
! 8236efd09ec26cd406e18903fbbfbcd3  libstdc++-v3/testsuite/23_containers/forward_list/cons/noexcept_move_construct.cc
! e39dd7683121049ca90e6d9702512f9d  libstdc++-v3/testsuite/23_containers/forward_list/debug/60499.cc
! 05ca3191fd992aa253cfa4fec9b4b543  libstdc++-v3/testsuite/23_containers/forward_list/debug/clear.cc
! 7fcc2b589c272dc16824d5b0b2fc53b1  libstdc++-v3/testsuite/23_containers/forward_list/debug/construct1_neg.cc
! 5194e21e84f50f25ae0eb3bb2daf13bd  libstdc++-v3/testsuite/23_containers/forward_list/debug/construct2_neg.cc
! 2609cf039a678b938d0b39f5b1579612  libstdc++-v3/testsuite/23_containers/forward_list/debug/construct3_neg.cc
! e54cf24317e9fa6ac2c750526505f270  libstdc++-v3/testsuite/23_containers/forward_list/debug/construct4_neg.cc
! e3e682ad709f4e5185ce936980b29d43  libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after1_neg.cc
! 4a45919f537d3e425f44c7e2ea46619a  libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after2_neg.cc
! 05794ea5d09e6fe58222ab16dff36869  libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after3_neg.cc
! d8e5644854b0315d234f55d5a8549211  libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after4_neg.cc
! ae98847b8224cc972f8d08f377c96081  libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after5_neg.cc
! 1b44f5740b82f7c38dbd42c53855d5c9  libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after6_neg.cc
! d86b961296f25b181157a52406c440d7  libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after7_neg.cc
! aff94d99b8e3699b2e409da96c6aa684  libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after8_neg.cc
! 181f2fa4a964e7143461ddeac2efed1d  libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after9_neg.cc
! 14e6b350278e9fbef8305e3c607dde73  libstdc++-v3/testsuite/23_containers/forward_list/debug/insert_after1_neg.cc
! d3dbb9c5cffa3c6bb315f585dd6b95f3  libstdc++-v3/testsuite/23_containers/forward_list/debug/insert_after2_neg.cc
! d3f7955c7e23171d5b9cb937b9430019  libstdc++-v3/testsuite/23_containers/forward_list/debug/insert_after3_neg.cc
! 83a75469cc4c97b8754524fc8f53e881  libstdc++-v3/testsuite/23_containers/forward_list/debug/insert_after4_neg.cc
! c889a7c774400937f24c0ca3db43f1d3  libstdc++-v3/testsuite/23_containers/forward_list/debug/iterator_self_move_assign_neg.cc
! 15229b7d1c902e1e83968c83a0b89fe2  libstdc++-v3/testsuite/23_containers/forward_list/debug/move_assign_neg.cc
! 872e1b8100248a6f58e7cc416af8ef1a  libstdc++-v3/testsuite/23_containers/forward_list/debug/move_constructor.cc
! be25fa2f6d01693bc2d61ad3ac2f2922  libstdc++-v3/testsuite/23_containers/forward_list/debug/move_neg.cc
! 3411e8442c39a6636ace5b1fbc70ef64  libstdc++-v3/testsuite/23_containers/forward_list/debug/self_move_assign_neg.cc
! 43aa91b2a161f8e49bebcde4b61dbe49  libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after.cc
! 148198b75f5b80dcf04399938d8cbec1  libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after1_neg.cc
! 317bbe1a5c63d27b9c4128b68be13e47  libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after2_neg.cc
! a9e4dcbb086955cd092752491de40cf1  libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after3_neg.cc
! 79859854935fc0ea0895861ab1af24d1  libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after4_neg.cc
! 1957a7b311f178c41937aa4608ea4bb5  libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after5_neg.cc
! c4bf82b12e2b5e80b2c7b6affc52e35a  libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after6_neg.cc
! 947a12849613d5f76691928fe8635c09  libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after7_neg.cc
! 1d3d73a31316129c1ba284a5fbc9d881  libstdc++-v3/testsuite/23_containers/forward_list/debug/swap.cc
! fdfd9116122107e273c977c5fb611da1  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/1.cc
! e748a1ae0831253326709c99a1c34799  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/2.cc
! daa884cd723c673bf9e0008cbf9b1787  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/3.cc
! a459cd903b68f16ace6ab27f75387029  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/4.cc
! d0a369d3f9a2689228f398d684e690f9  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/5.cc
! 224958ee9d63ec0b3891a5cd1ab65a87  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/6.cc
! d91a0ba954e34106308b06890e0d748e  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/addressof.cc
! 6e0203c61de703184e2ecba66209d535  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/emplace_cxx17_return.cc
! e632442ed25ac0c97fdb0be4847b3dd9  libstdc++-v3/testsuite/23_containers/forward_list/operations/1.cc
! a633c782d23cb7199bf027aaf02137d9  libstdc++-v3/testsuite/23_containers/forward_list/operations/2.cc
! 8b5843cbbf11db4db5bab5305efba8a2  libstdc++-v3/testsuite/23_containers/forward_list/operations/3.cc
! 087295f46bff67f8be019fb78e8c8aa0  libstdc++-v3/testsuite/23_containers/forward_list/operations/4.cc
! 0a9f4a8d4a48d152ac396d182d2f994c  libstdc++-v3/testsuite/23_containers/forward_list/operations/5.cc
! f5a51a140f4c9a945478c86ca3147e17  libstdc++-v3/testsuite/23_containers/forward_list/operations/6.cc
! 7ccd109239cfb70b7f412a059e33fe12  libstdc++-v3/testsuite/23_containers/forward_list/operations/7.cc
! 2e898b2be369782a1a999d0fee932cf7  libstdc++-v3/testsuite/23_containers/forward_list/operations/remove_freed.cc
! bf8932fdddb81e3e8c33d2d99fb46089  libstdc++-v3/testsuite/23_containers/forward_list/range_access.cc
! 3ec1ee6c2abea43b06c858f557533326  libstdc++-v3/testsuite/23_containers/forward_list/requirements/citerators.cc
! 36694a84ee5fc6619fd357a4b13d2a2f  libstdc++-v3/testsuite/23_containers/forward_list/requirements/do_the_right_thing.cc
! 4a9832bb9ddfb25f21d8f61f6f9acde3  libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/assign_neg.cc
! cd0c9379e3d25b639ed3ef810a92d77e  libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor.cc
! 55ccdd1b44106431fb6b1bb4d83320f8  libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_1_neg.cc
! 15714e0888df3d12484fa940cc84b508  libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_2_neg.cc
! c7cb10b8d4b6ed8c31041be525ded9b7  libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/insert_neg.cc
! 11fde8f064cbfc44371ddafbb39dc117  libstdc++-v3/testsuite/23_containers/forward_list/requirements/exception/basic.cc
! d32619eefa8830510940292ab2042fde  libstdc++-v3/testsuite/23_containers/forward_list/requirements/exception/generation_prohibited.cc
! 97525ef8cb40772906c52065a71ae156  libstdc++-v3/testsuite/23_containers/forward_list/requirements/exception/propagation_consistent.cc
! 1f4c6719b05c348a0a0d297b8acec441  libstdc++-v3/testsuite/23_containers/forward_list/requirements/explicit_instantiation/1.cc
! ae36f4747c8b83ebf4e9a58519091854  libstdc++-v3/testsuite/23_containers/forward_list/requirements/explicit_instantiation/3.cc
! 0c536aa785be849fb263d84d287c8c74  libstdc++-v3/testsuite/23_containers/forward_list/requirements/explicit_instantiation/4.cc
! 5804e83dadc64cdd1855c60a035cc18a  libstdc++-v3/testsuite/23_containers/forward_list/requirements/explicit_instantiation/5.cc
! 82257670a1df9ec9678300ec434a3028  libstdc++-v3/testsuite/23_containers/forward_list/requirements/typedefs.cc
! 7751778c73a1bf5f1a2e2e43649acb93  libstdc++-v3/testsuite/23_containers/headers/array/std_c++0x_neg.cc
! 9186e8ba447e678f4251e2eaca80de33  libstdc++-v3/testsuite/23_containers/headers/bitset/synopsis.cc
! 17c6e5aa3e3755bf1dc2f3d9d3527579  libstdc++-v3/testsuite/23_containers/headers/deque/synopsis.cc
! 0b983a0fef3486dffd056a7022e7d8b8  libstdc++-v3/testsuite/23_containers/headers/forward_list/synopsis.cc
! 6e86cd2a2b150d68c97fe508a5234073  libstdc++-v3/testsuite/23_containers/headers/list/synopsis.cc
! eae421d7d8f7613c9990aa6c0b3ccc72  libstdc++-v3/testsuite/23_containers/headers/map/synopsis.cc
! 7182d5c3188e9fc236802c9c402ea544  libstdc++-v3/testsuite/23_containers/headers/queue/synopsis.cc
! 9abcd29cf99144a2dded72d9dffdc437  libstdc++-v3/testsuite/23_containers/headers/set/synopsis.cc
! 1e018fd7f9826cad7d07ca9471d9d99f  libstdc++-v3/testsuite/23_containers/headers/stack/synopsis.cc
! 8e97f540b7fbf200dee8afa46bd2589f  libstdc++-v3/testsuite/23_containers/headers/tuple/std_c++0x_neg.cc
! ff05b6c108bc9ebe9a6e8f6a6acb4e87  libstdc++-v3/testsuite/23_containers/headers/tuple/types_std_c++0x.cc
! e472b5c1688810658ec0f6227fb053c4  libstdc++-v3/testsuite/23_containers/headers/unordered_map/std_c++0x_neg.cc
! e3acb4c3d00794dc0e8f0c4f2e2526b2  libstdc++-v3/testsuite/23_containers/headers/unordered_set/std_c++0x_neg.cc
! 648f238bab084d5bb8c9a9c42980dc1e  libstdc++-v3/testsuite/23_containers/headers/vector/synopsis.cc
! ad7f601abc2ecf154224f82ddd757b2f  libstdc++-v3/testsuite/23_containers/list/14340.cc
! c6a086b942e2ed843bfcbc1482442064  libstdc++-v3/testsuite/23_containers/list/18604.cc
! 7e2049ac57d2fd5a5a20b37d49610e9f  libstdc++-v3/testsuite/23_containers/list/23781_neg.cc
! c8c24af6b6451268b86583408288ca82  libstdc++-v3/testsuite/23_containers/list/48101-2_neg.cc
! 2a9416b87b048abf970308f4a37a90b8  libstdc++-v3/testsuite/23_containers/list/48101_neg.cc
! 7cd63fedc69f5200c9bcd1c88ada81b4  libstdc++-v3/testsuite/23_containers/list/58764.cc
! a52fdd9704d1f9d22ecc3216ff980cb9  libstdc++-v3/testsuite/23_containers/list/61347.cc
! 1f51e83f95f79f7df221c46f6aa611fb  libstdc++-v3/testsuite/23_containers/list/allocator/copy.cc
! 398225e4dfa1b9180f7a0da86143922b  libstdc++-v3/testsuite/23_containers/list/allocator/copy_assign.cc
! 0ee87570e17ec2d8a537ac29cc268b65  libstdc++-v3/testsuite/23_containers/list/allocator/default_init.cc
! c3eaedb3467c2f98420bdbcac7787d60  libstdc++-v3/testsuite/23_containers/list/allocator/minimal.cc
! 585c158de2ef7074891138ef31b1dec4  libstdc++-v3/testsuite/23_containers/list/allocator/move.cc
! f4232a75ae363b4f37023cc62f54a966  libstdc++-v3/testsuite/23_containers/list/allocator/move_assign.cc
! e6fa26b0b078d718d12c29c156210944  libstdc++-v3/testsuite/23_containers/list/allocator/noexcept.cc
! 1ba1ba4bd086e585326211060c217999  libstdc++-v3/testsuite/23_containers/list/allocator/swap.cc
! 3a843fce92b4d4eab203ca0c87a23e86  libstdc++-v3/testsuite/23_containers/list/capacity/1.cc
! 6692ee2be7cc251c678f3ac905e6440e  libstdc++-v3/testsuite/23_containers/list/capacity/1.h
! b9a74c1b308aa06bc91a8e2c016b9d88  libstdc++-v3/testsuite/23_containers/list/capacity/29134.cc
! 165568fce9d6258422151740e828acde  libstdc++-v3/testsuite/23_containers/list/capacity/resize_size.cc
! 728a935c51363e37decfd1aab26002e2  libstdc++-v3/testsuite/23_containers/list/check_construct_destroy.cc
! 5e6c8aaa6e25e8c6d863696297621352  libstdc++-v3/testsuite/23_containers/list/check_construct_destroy.h
! fed278f40af2caa54d4eb5eb89ae5757  libstdc++-v3/testsuite/23_containers/list/cons/1.cc
! 16d2f90835850c31008bf8440700a31f  libstdc++-v3/testsuite/23_containers/list/cons/1.h
! 6c06f8fbe79e8ee5ea73f2f523c398ac  libstdc++-v3/testsuite/23_containers/list/cons/2.cc
! 8f00e8b9b78fb908ac9a9b4190233a06  libstdc++-v3/testsuite/23_containers/list/cons/2.h
! 4fcd11880c871876820fe34440f73a46  libstdc++-v3/testsuite/23_containers/list/cons/3.cc
! ce76415e6185103dafd905ed2728b90e  libstdc++-v3/testsuite/23_containers/list/cons/3.h
! 4aa7349d197ecc8b40c4f18f429c9380  libstdc++-v3/testsuite/23_containers/list/cons/4.cc
! 7cfbc8b77c93814b31b9dca1dbfc7f23  libstdc++-v3/testsuite/23_containers/list/cons/4.h
! 5f5084c68a01e9f4eb566c33e577df34  libstdc++-v3/testsuite/23_containers/list/cons/5.cc
! e1857e10e07e95ded21d5217d1eb97b3  libstdc++-v3/testsuite/23_containers/list/cons/5.h
! 8e235f4de24852849ae803c7ceb527d9  libstdc++-v3/testsuite/23_containers/list/cons/55979.cc
! 615d871db9527db219fe834f07b692cb  libstdc++-v3/testsuite/23_containers/list/cons/6.cc
! 1c384ce495d88ad3cd8f18d1d14296c0  libstdc++-v3/testsuite/23_containers/list/cons/6.h
! c29d07dd60ece4c4095db349eb5c2ea8  libstdc++-v3/testsuite/23_containers/list/cons/7.cc
! a53e9589e4c5990e61b00d5fc324a6d5  libstdc++-v3/testsuite/23_containers/list/cons/7.h
! 58cc33f63d45e2eccd7b9c708de28053  libstdc++-v3/testsuite/23_containers/list/cons/8.cc
! 2ffaceff125e19c382a2bd578e43ba09  libstdc++-v3/testsuite/23_containers/list/cons/8.h
! 12dcd4b1cc01d7d9ec05466bf931da59  libstdc++-v3/testsuite/23_containers/list/cons/9.cc
! 1cc3887222a6bc7cc0968cb9085714b6  libstdc++-v3/testsuite/23_containers/list/cons/9.h
! 4e940f6490170e0cd378382503af130e  libstdc++-v3/testsuite/23_containers/list/cons/clear_allocator.cc
! 5a841d16e3015d9ec65cfb8acb8f5a69  libstdc++-v3/testsuite/23_containers/list/cons/clear_allocator.h
! c1cd0a7c47d556b48b4df38d85782e76  libstdc++-v3/testsuite/23_containers/list/cons/cons_size.cc
! 6a830d2388a2870e313ca419f0f092e8  libstdc++-v3/testsuite/23_containers/list/cons/deduction.cc
! 483ab08a33078b2211d188ce81010542  libstdc++-v3/testsuite/23_containers/list/cons/moveable.cc
! 3edf7592887dd0e2e24a967b50cd02a0  libstdc++-v3/testsuite/23_containers/list/cons/moveable.h
! a18ca5d4d1b98b7772b45063a9755338  libstdc++-v3/testsuite/23_containers/list/cons/noexcept_move_construct.cc
! f31d11925bc77c426dd15a538cc2e9cc  libstdc++-v3/testsuite/23_containers/list/debug/assign1_neg.cc
! d0e87fc7885e27f2106a4ff3fdce843f  libstdc++-v3/testsuite/23_containers/list/debug/assign2_neg.cc
! 95a10a7a6b921b3d7f52e292930a3cf9  libstdc++-v3/testsuite/23_containers/list/debug/assign3_neg.cc
! d912d61c20421b1eb2f8eded8e72c7e3  libstdc++-v3/testsuite/23_containers/list/debug/assign4_neg.cc
! 9faf152e7fb29b7e47587f271b21fcbb  libstdc++-v3/testsuite/23_containers/list/debug/construct1_neg.cc
! f67a1e4e150d4333c006ad66f1352d6b  libstdc++-v3/testsuite/23_containers/list/debug/construct2_neg.cc
! ad1672a0c29725eafc775a0690d1d13a  libstdc++-v3/testsuite/23_containers/list/debug/construct3_neg.cc
! 0379114bd55818cbd88e4d8fede10a61  libstdc++-v3/testsuite/23_containers/list/debug/construct4_neg.cc
! 1d6268b094955616408accf51a5b5ef8  libstdc++-v3/testsuite/23_containers/list/debug/insert1_neg.cc
! 58c4bdd3c588f9e1996b303d1cae196f  libstdc++-v3/testsuite/23_containers/list/debug/insert2_neg.cc
! 0de126f6436ca6cf65fb7f5f2792cc2d  libstdc++-v3/testsuite/23_containers/list/debug/insert3_neg.cc
! 622ceaa7387e7ffa795ff50be944d6ef  libstdc++-v3/testsuite/23_containers/list/debug/insert4_neg.cc
! af0e0e5e0cf6f8481b65632e098702d5  libstdc++-v3/testsuite/23_containers/list/debug/insert5_neg.cc
! 0b732374f7de97061b5bec6ba1251cb4  libstdc++-v3/testsuite/23_containers/list/debug/invalidation/1.cc
! 4c3b58747f2a0ceefd5c2b6c01e7f00b  libstdc++-v3/testsuite/23_containers/list/debug/invalidation/2.cc
! cc914fc6088a6e281a852013a9dc2f85  libstdc++-v3/testsuite/23_containers/list/debug/invalidation/3.cc
! b03d3cd67c445e5d574a1d02cf56d111  libstdc++-v3/testsuite/23_containers/list/debug/invalidation/4.cc
! 106abbaa571b5ce9652fd4ac52d17f09  libstdc++-v3/testsuite/23_containers/list/debug/iterator_self_move_assign_neg.cc
! bf25cd08c36ef8724ac9a846fd702758  libstdc++-v3/testsuite/23_containers/list/debug/self_move_assign_neg.cc
! b2bf142e0da0a7fe6f6f5dccf40c5c63  libstdc++-v3/testsuite/23_containers/list/init-list.cc
! fa8120224b6dd5fbc22a7850fefa8342  libstdc++-v3/testsuite/23_containers/list/init-list.h
! 020924a9dd52dfcc48f7e3fbfdc56837  libstdc++-v3/testsuite/23_containers/list/modifiers/1.cc
! 291839cb6a757e6ec557e6658fbca3fc  libstdc++-v3/testsuite/23_containers/list/modifiers/1.h
! b9b1e7cdee39304029be8b8612574156  libstdc++-v3/testsuite/23_containers/list/modifiers/1_c++0x.cc
! 278fb69390c2ea07effaaa38ef83482e  libstdc++-v3/testsuite/23_containers/list/modifiers/2.cc
! bf3601b2f7531edb2ada419e140a3846  libstdc++-v3/testsuite/23_containers/list/modifiers/2.h
! f1db6418d9f96d759d639e7f13cb6166  libstdc++-v3/testsuite/23_containers/list/modifiers/3.cc
! 9ac9df7c8be98d47fea849a69a04331d  libstdc++-v3/testsuite/23_containers/list/modifiers/3.h
! c311d06045be751ba700c6a52fa08851  libstdc++-v3/testsuite/23_containers/list/modifiers/addressof.cc
! 373635a2c5dc63cd104e18b02dc08f3e  libstdc++-v3/testsuite/23_containers/list/modifiers/emplace/52799.cc
! b9c7126df00de7bf373203625a149fe4  libstdc++-v3/testsuite/23_containers/list/modifiers/emplace/const_iterator.cc
! d09f1af37425f1a0bf82423bfa3d2959  libstdc++-v3/testsuite/23_containers/list/modifiers/emplace/cxx17_return.cc
! 20ff4520524c5c1217e4d143d37860e6  libstdc++-v3/testsuite/23_containers/list/modifiers/erase/54577.cc
! 800490493802f545973d79f2c5de8fd9  libstdc++-v3/testsuite/23_containers/list/modifiers/insert/25288.cc
! 9d4e70eceba42e49afbd17d63512ecef  libstdc++-v3/testsuite/23_containers/list/modifiers/insert/25288.h
! d500008121cb0ccec2758c49ce784ecb  libstdc++-v3/testsuite/23_containers/list/modifiers/insert/const_iterator.cc
! 51830ab0c0b82bdef13eccacc2650fc9  libstdc++-v3/testsuite/23_containers/list/modifiers/swap/1.cc
! b2c7c37b87dee95f93e06684600006ef  libstdc++-v3/testsuite/23_containers/list/modifiers/swap/1.h
! 9a45ab42d812c94dd969b03a0194028a  libstdc++-v3/testsuite/23_containers/list/modifiers/swap/2.cc
! 258387b9b9b8748f32940295d0f9c4b5  libstdc++-v3/testsuite/23_containers/list/modifiers/swap/2.h
! 24df43e8bdb8932e882d7802c05b68f8  libstdc++-v3/testsuite/23_containers/list/modifiers/swap/3.cc
! 3b1bca7b84ea95416b674055e21db606  libstdc++-v3/testsuite/23_containers/list/modifiers/swap/3.h
! 498196f0140c2427c12500f56410d267  libstdc++-v3/testsuite/23_containers/list/operations/1.cc
! e0bc40b18a92da857173ec64d1fe4891  libstdc++-v3/testsuite/23_containers/list/operations/1.h
! dda6864c778ccd92e2039f212efec3b8  libstdc++-v3/testsuite/23_containers/list/operations/2.cc
! 4cafcf3a8843b4163440f9f6387dd019  libstdc++-v3/testsuite/23_containers/list/operations/2.h
! e7452653ba4f71a45b8132b4101eccf3  libstdc++-v3/testsuite/23_containers/list/operations/2_c++0x.cc
! dcfe52e9f009e340fd8263993a3d716d  libstdc++-v3/testsuite/23_containers/list/operations/3.cc
! 4622e8f5b9bfb5fc078d6b0b1e5ac4e9  libstdc++-v3/testsuite/23_containers/list/operations/3.h
! a96394d6130fa1239f8f9f595ab40f6e  libstdc++-v3/testsuite/23_containers/list/operations/35969.cc
! 51835cb3282eb72b7d323d69ded609e4  libstdc++-v3/testsuite/23_containers/list/operations/3_c++0x.cc
! d55b633f893f1d0ae03615d935274c92  libstdc++-v3/testsuite/23_containers/list/operations/4.cc
! e1c7c498313119e87d5c2cc1272e88e3  libstdc++-v3/testsuite/23_containers/list/operations/4.h
! 5a4ea23b8c1d0892029ff04210a92d93  libstdc++-v3/testsuite/23_containers/list/operations/42352.cc
! 0d7a5786159195e461c8ca738221031c  libstdc++-v3/testsuite/23_containers/list/operations/78389.cc
! e9cd2c9249f5808a3ae37170dbc16da1  libstdc++-v3/testsuite/23_containers/list/operations/80034.cc
! a0d25e8ef797b57b93dfb2c0482af7ad  libstdc++-v3/testsuite/23_containers/list/operations/splice/const_iterator.cc
! 07f9e2266a1d195f358cf9dd3faf78cc  libstdc++-v3/testsuite/23_containers/list/pthread1.cc
! 2ceec52e32e484fcae6c334bebdffa80  libstdc++-v3/testsuite/23_containers/list/pthread5.cc
! 0a3e1812ec620e196c0b8d32cadd1478  libstdc++-v3/testsuite/23_containers/list/range_access.cc
! 0efc790b1808d1fc87a60f719f95e427  libstdc++-v3/testsuite/23_containers/list/requirements/citerators.cc
! 7b1b309216cc68448866402bcac91507  libstdc++-v3/testsuite/23_containers/list/requirements/do_the_right_thing.cc
! f34afc82c3d39e0dd8b9663cec3e5421  libstdc++-v3/testsuite/23_containers/list/requirements/dr438/assign_neg.cc
! a77ed3cb79ff9d74d91abc86ec8ae17a  libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor.cc
! a5c4a14ef2a0b8bc176bf90583ae1bbe  libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc
! 887f17a9d045a7eeefed9cab82a29832  libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc
! 6d6690f3f1316e7d1fbb0832ad1025e3  libstdc++-v3/testsuite/23_containers/list/requirements/dr438/insert_neg.cc
! 9e2b27f5f6c8b17d2ab92a03a40dbd49  libstdc++-v3/testsuite/23_containers/list/requirements/exception/basic.cc
! 5a9adb1b1d4acdf5fdec5de17c275bf1  libstdc++-v3/testsuite/23_containers/list/requirements/exception/generation_prohibited.cc
! 2f7c40bb5971f404e944cb64d1788aac  libstdc++-v3/testsuite/23_containers/list/requirements/exception/propagation_consistent.cc
! a3275bf1b6845219d498bed0039b95fa  libstdc++-v3/testsuite/23_containers/list/requirements/explicit_instantiation/1.cc
! 67cae9d0a6eceda4219fe9e8f53812bd  libstdc++-v3/testsuite/23_containers/list/requirements/explicit_instantiation/1_c++0x.cc
! ea6efb99702d04bf1320abc747873d9a  libstdc++-v3/testsuite/23_containers/list/requirements/explicit_instantiation/2.cc
! 2d6b22bc04368fee9748cdfa2c54aba7  libstdc++-v3/testsuite/23_containers/list/requirements/explicit_instantiation/3.cc
! 6e63b1b95f42346e3c3e2640c352dc0a  libstdc++-v3/testsuite/23_containers/list/requirements/explicit_instantiation/4.cc
! 71b4be90679472e288c3235a446be380  libstdc++-v3/testsuite/23_containers/list/requirements/explicit_instantiation/5.cc
! cdde666a15d7a5c5f4ec0143ba72029f  libstdc++-v3/testsuite/23_containers/list/requirements/explicit_instantiation/5_c++0x.cc
! 06aa0fe3646a24c8e81a671396411113  libstdc++-v3/testsuite/23_containers/list/requirements/partial_specialization/1.cc
! 32faa904b065a51d8b58e4b5950da155  libstdc++-v3/testsuite/23_containers/list/requirements/typedefs.cc
! f92b4d069878169afcf9df98874d1030  libstdc++-v3/testsuite/23_containers/map/14340.cc
! 036186d057ce9866c23e744d860209dd  libstdc++-v3/testsuite/23_containers/map/18604.cc
! 506897298774fb990be179aae91947c1  libstdc++-v3/testsuite/23_containers/map/23781_neg.cc
! 8387147eb5ef7bab14191bfc2c0f56ab  libstdc++-v3/testsuite/23_containers/map/48101-2_neg.cc
! a665795e7cb6ddb3bf1cd256de06979f  libstdc++-v3/testsuite/23_containers/map/48101_neg.cc
! a73b3e9518118adfe5b247ca42883607  libstdc++-v3/testsuite/23_containers/map/56613.cc
! e11a2ec484ac51a97fa2bf5603a37d08  libstdc++-v3/testsuite/23_containers/map/58764.cc
! 3b3efc1996a1f4a53994844d9d3de11b  libstdc++-v3/testsuite/23_containers/map/59872.cc
! b5b5fb4a29a6bec677dc31243c97c9b2  libstdc++-v3/testsuite/23_containers/map/77334.cc
! 70c43e36ff36211455e36534d1c4af8f  libstdc++-v3/testsuite/23_containers/map/allocator/copy.cc
! 04ec3692c9cddc3879c4cd4a3c529bbc  libstdc++-v3/testsuite/23_containers/map/allocator/copy_assign.cc
! cfb42cefab7ffef0088b6c2137719e8b  libstdc++-v3/testsuite/23_containers/map/allocator/default_init.cc
! 7c47ab6ecfc3cbbeed2e8aca01cc5260  libstdc++-v3/testsuite/23_containers/map/allocator/init-list.cc
! 36268e08b03286957239bb24a8453c3c  libstdc++-v3/testsuite/23_containers/map/allocator/minimal.cc
! 6bbadfcb5eb34cb18eae1cf8e624692a  libstdc++-v3/testsuite/23_containers/map/allocator/move.cc
! c3842c87231c0aadd7809034f8daa543  libstdc++-v3/testsuite/23_containers/map/allocator/move_assign.cc
! 7077865604bce89549c60dfd9ad43849  libstdc++-v3/testsuite/23_containers/map/allocator/noexcept.cc
! 5a774ae2eec62cbe4f2efbbd4d502895  libstdc++-v3/testsuite/23_containers/map/allocator/swap.cc
! df154caa0add076d3dd5af3ea560e1fa  libstdc++-v3/testsuite/23_containers/map/capacity/29134.cc
! 5b5579f5d8bed1bc6a37943178079a6a  libstdc++-v3/testsuite/23_containers/map/cons/deduction.cc
! 9ba2e0e7f9895582f27a6bc9f92300c3  libstdc++-v3/testsuite/23_containers/map/cons/moveable.cc
! f844fcaf9b6d922afdb3fccce4af5a28  libstdc++-v3/testsuite/23_containers/map/cons/noexcept_default_construct.cc
! 78e1df9788b96ebed66fee3bd94df11b  libstdc++-v3/testsuite/23_containers/map/cons/noexcept_move_construct.cc
! 175e7a9a2b379048750cdd4454565498  libstdc++-v3/testsuite/23_containers/map/debug/60499.cc
! 1ac18cd99d1bdffb9ceea94873f8ce6f  libstdc++-v3/testsuite/23_containers/map/debug/construct1_neg.cc
! 07ae6a4fe1c40741ef8405f8119b0b17  libstdc++-v3/testsuite/23_containers/map/debug/construct2_neg.cc
! 8277dc7d36d9500a167598a2c9d4ff09  libstdc++-v3/testsuite/23_containers/map/debug/construct3_neg.cc
! 7b777ddc54f833fc48b51d8d5be65c61  libstdc++-v3/testsuite/23_containers/map/debug/construct4_neg.cc
! 383cab1c9dcaa20f62cde97a04b749d0  libstdc++-v3/testsuite/23_containers/map/debug/construct5_neg.cc
! c6c770d0e51431212e2e3a5f5de4a2b8  libstdc++-v3/testsuite/23_containers/map/debug/insert1_neg.cc
! 073b3a233ad2636949b23972f793295d  libstdc++-v3/testsuite/23_containers/map/debug/insert2_neg.cc
! 6c60b26c1262de9b8b84573dde6f23b1  libstdc++-v3/testsuite/23_containers/map/debug/insert3_neg.cc
! 363f4212eba744ec60c03a3b479f17b5  libstdc++-v3/testsuite/23_containers/map/debug/insert4_neg.cc
! 57f0938cf65967db9a4d0912834ae49b  libstdc++-v3/testsuite/23_containers/map/debug/invalidation/1.cc
! c346f359c2849ea56a50823443fba060  libstdc++-v3/testsuite/23_containers/map/debug/invalidation/2.cc
! eb492644758dd831fd4a18824a7e5ec5  libstdc++-v3/testsuite/23_containers/map/debug/iterator_self_move_assign_neg.cc
! f14ae515bc40e475cd6351412359aee5  libstdc++-v3/testsuite/23_containers/map/debug/move_assign_neg.cc
! edadc05769f046808d116b3c28784dfe  libstdc++-v3/testsuite/23_containers/map/debug/move_neg.cc
! 37cbc53b0d346ddc36e23d8a8ec5ad67  libstdc++-v3/testsuite/23_containers/map/debug/self_move_assign_neg.cc
! 81334dca31dd7706f46e2611be731edd  libstdc++-v3/testsuite/23_containers/map/element_access/1.cc
! a2d140993f309fd6c590f79226748d55  libstdc++-v3/testsuite/23_containers/map/element_access/2.cc
! 86a7a5bddd4e574ed9a2c25359bd9e41  libstdc++-v3/testsuite/23_containers/map/element_access/39901.cc
! 8d42be3ba6b2f051ec3764868055a247  libstdc++-v3/testsuite/23_containers/map/element_access/46148.cc
! 87ddf675ac226a3e278e14851c283ab0  libstdc++-v3/testsuite/23_containers/map/init-list.cc
! bc99859d6c6bd55fb2cc89c9cf526196  libstdc++-v3/testsuite/23_containers/map/modifiers/dr130.cc
! 68439ceb09bc9dd67cb53ce60103d0e4  libstdc++-v3/testsuite/23_containers/map/modifiers/emplace/1.cc
! 4bd8d592d8f6679b6fb59a6f9163c7b2  libstdc++-v3/testsuite/23_containers/map/modifiers/erase/47628.cc
! df625e31e250cdcc1f750fa1fcf885d8  libstdc++-v3/testsuite/23_containers/map/modifiers/erase/51142.cc
! 5f37ac4ad8f19bb30bef3d7df3fbb0b5  libstdc++-v3/testsuite/23_containers/map/modifiers/erase/abi_tag.cc
! 426ba5992bb14ed7466be8ddb666684b  libstdc++-v3/testsuite/23_containers/map/modifiers/erase/dr130-linkage-check.cc
! 309419a32888aeee7432ddb0ed382c04  libstdc++-v3/testsuite/23_containers/map/modifiers/erase/end_neg.cc
! d87e727e38b4fa20d773e45ae7985721  libstdc++-v3/testsuite/23_containers/map/modifiers/extract.cc
! a884b9edb1e24693438c817f87fd558a  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/1.cc
! 874afbf0d70b0eb1614ea22879cb5c2c  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/16813.cc
! ce3ef612998e0c8bbfb5ea927a2a09e0  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/2.cc
! a37b4369cb83c24436088d0f3ea0b275  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/3.cc
! 753f5d80497e7752603f55bcf716bbbe  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/4.cc
! f2c1d7e24bc0e011493e04434bc3855b  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/5.cc
! ffc97cf41b669e12d179527756733e05  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/83226.cc
! 30b25de3bd70888bb184a620ac2809c6  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/dr2354.cc
! 8ad36387f5b8810dccd5565939eb3bb3  libstdc++-v3/testsuite/23_containers/map/modifiers/insert_or_assign/1.cc
! 0c0c6826819bc9661b30f19aadddc6b4  libstdc++-v3/testsuite/23_containers/map/modifiers/merge.cc
! be4e5064957a3286e6ae920371083c64  libstdc++-v3/testsuite/23_containers/map/modifiers/swap/1.cc
! 399d72359a1f78b63275befadce23cc6  libstdc++-v3/testsuite/23_containers/map/modifiers/swap/2.cc
! 5b66a627e0f2425b2bdc82d982276203  libstdc++-v3/testsuite/23_containers/map/modifiers/swap/3.cc
! dd5b6c30bd298cc094f1a54ffe8f0c14  libstdc++-v3/testsuite/23_containers/map/modifiers/try_emplace/1.cc
! d203b27b18f9d4be0bc4cececd7cbd03  libstdc++-v3/testsuite/23_containers/map/operations/1.cc
! 122d717895e7187233783270626cab2f  libstdc++-v3/testsuite/23_containers/map/operations/2.cc
! de56b9151c94f41f2fa93a982e189bc8  libstdc++-v3/testsuite/23_containers/map/operations/31440.cc
! dbb7470b9c117ef88159f434ef8c3f8e  libstdc++-v3/testsuite/23_containers/map/operations/count.cc
! 4b7ac3d287440648213b52ce89d0a2d5  libstdc++-v3/testsuite/23_containers/map/operators/1.cc
! 07bb1b58f4c982e21c5b2d9d9cb74079  libstdc++-v3/testsuite/23_containers/map/operators/1_neg.cc
! 1458d0bb62751f55b5068b78a621d925  libstdc++-v3/testsuite/23_containers/map/operators/2.cc
! 39ae14bdfad0063e18b4e060bac6798a  libstdc++-v3/testsuite/23_containers/map/pthread6.cc
! 3af22fbc8ab5ae9625e2d5337af8cc90  libstdc++-v3/testsuite/23_containers/map/range_access.cc
! edc5d976cc477e73f854d226279aae79  libstdc++-v3/testsuite/23_containers/map/requirements/citerators.cc
! 4400097ed3cdae917e3243c5a4ce2398  libstdc++-v3/testsuite/23_containers/map/requirements/exception/basic.cc
! 1590742954d1ad0e93f25c2ff8cca415  libstdc++-v3/testsuite/23_containers/map/requirements/exception/generation_prohibited.cc
! 875a869fb4a5851a9d8e850fab9ba432  libstdc++-v3/testsuite/23_containers/map/requirements/exception/propagation_consistent.cc
! 819bf266bbf44735558d294c44cb5ea8  libstdc++-v3/testsuite/23_containers/map/requirements/explicit_instantiation/1.cc
! db9a2fda17468ab2db4b86cb3bcea766  libstdc++-v3/testsuite/23_containers/map/requirements/explicit_instantiation/1_c++0x.cc
! 234fc9bb784676f7a56fc43f106cb973  libstdc++-v3/testsuite/23_containers/map/requirements/explicit_instantiation/2.cc
! 7240c4842cf3ca49b6f9bd36d0e304cf  libstdc++-v3/testsuite/23_containers/map/requirements/explicit_instantiation/3.cc
! ba12a53703a417f402a1514866830f2c  libstdc++-v3/testsuite/23_containers/map/requirements/explicit_instantiation/4.cc
! 4f7d368ddad0212300590c9f753370d4  libstdc++-v3/testsuite/23_containers/map/requirements/explicit_instantiation/5.cc
! cda38afb5acb9425552ea32f925e8daa  libstdc++-v3/testsuite/23_containers/map/requirements/explicit_instantiation/5_c++0x.cc
! ee615db23935df14ef4ce7b6f32db785  libstdc++-v3/testsuite/23_containers/map/requirements/partial_specialization/1.cc
! 49d82ceef7d0b808855665124a46a87f  libstdc++-v3/testsuite/23_containers/map/requirements/typedefs.cc
! db8df6cb8a43e2b410c1c9c19917b065  libstdc++-v3/testsuite/23_containers/multimap/14340.cc
! eed7cbf88734f2a3fe96255f205cd08b  libstdc++-v3/testsuite/23_containers/multimap/23781_neg.cc
! c730ab539e7f19642bf9d78b5aa55f6c  libstdc++-v3/testsuite/23_containers/multimap/48101-2_neg.cc
! b27117a94b81b776572dd6b27e3859be  libstdc++-v3/testsuite/23_containers/multimap/48101_neg.cc
! bf7d5b56860f7a8c63fae7b940bf6b7d  libstdc++-v3/testsuite/23_containers/multimap/58764.cc
! 0f48d4d54426223d8abb5f18dbaf5ad6  libstdc++-v3/testsuite/23_containers/multimap/allocator/copy.cc
! 2157364773c6f0a5ac884ad6a3169699  libstdc++-v3/testsuite/23_containers/multimap/allocator/copy_assign.cc
! 63141e0b38c8467a87b67194cfec933c  libstdc++-v3/testsuite/23_containers/multimap/allocator/init-list.cc
! b124f0879784b918e5bcc181c769d280  libstdc++-v3/testsuite/23_containers/multimap/allocator/minimal.cc
! 29c77dcc9f6cbd69115c9cbbb2ded27d  libstdc++-v3/testsuite/23_containers/multimap/allocator/move.cc
! f748e033d2b8b2f4bfa820601f3fbcb1  libstdc++-v3/testsuite/23_containers/multimap/allocator/move_assign.cc
! 647c48c1c055f84ba4a483975fa7712a  libstdc++-v3/testsuite/23_containers/multimap/allocator/noexcept.cc
! 04c9b6b8df4275015c65ae96a32b4854  libstdc++-v3/testsuite/23_containers/multimap/allocator/swap.cc
! 2c4784578666a0634697654f92a0fafc  libstdc++-v3/testsuite/23_containers/multimap/capacity/29134.cc
! 76453e73a602678760bbb44e771c69b0  libstdc++-v3/testsuite/23_containers/multimap/cons/deduction.cc
! 2253063d10ff42fe6f45e1e47719203c  libstdc++-v3/testsuite/23_containers/multimap/cons/moveable.cc
! cd294c758b49e671e84684b430de7af1  libstdc++-v3/testsuite/23_containers/multimap/cons/noexcept_default_construct.cc
! 351c277b88599410b940de202426d9d4  libstdc++-v3/testsuite/23_containers/multimap/cons/noexcept_move_construct.cc
! 448e7e072a56d30731df046585abf482  libstdc++-v3/testsuite/23_containers/multimap/debug/60499.cc
! 43cbab2f7792aa694b8ccac6fddaf9ba  libstdc++-v3/testsuite/23_containers/multimap/debug/construct1_neg.cc
! 8d120d492ba63357eb701416cad6fc73  libstdc++-v3/testsuite/23_containers/multimap/debug/construct2_neg.cc
! b3f63cba9b5a548e8b20e7fb06eb321f  libstdc++-v3/testsuite/23_containers/multimap/debug/construct3_neg.cc
! c77edfc0d137a823ab9124e14c6e4e18  libstdc++-v3/testsuite/23_containers/multimap/debug/construct4_neg.cc
! cd3f9c90bfeea9b3ca3138f21d943079  libstdc++-v3/testsuite/23_containers/multimap/debug/construct5_neg.cc
! 5b8bd7c572db14afcc9c2123de7372b6  libstdc++-v3/testsuite/23_containers/multimap/debug/insert1_neg.cc
! 2efee72fbaef2ac15518298318de1f81  libstdc++-v3/testsuite/23_containers/multimap/debug/insert2_neg.cc
! 275a57a186a987fdda117a5c221a2b33  libstdc++-v3/testsuite/23_containers/multimap/debug/insert3_neg.cc
! d81593603b5352c38ed72b2ef4055189  libstdc++-v3/testsuite/23_containers/multimap/debug/insert4_neg.cc
! f84a640db29a529b2cef959f1ff224ad  libstdc++-v3/testsuite/23_containers/multimap/debug/invalidation/1.cc
! 51ed9d5599b1ff90afeb162b8dd30271  libstdc++-v3/testsuite/23_containers/multimap/debug/invalidation/2.cc
! ee40ee88de93ded6f2333c622b5ea77f  libstdc++-v3/testsuite/23_containers/multimap/debug/iterator_self_move_assign_neg.cc
! 805381c6ed14e46cbf0fd73d2f5ca0bf  libstdc++-v3/testsuite/23_containers/multimap/debug/move_assign_neg.cc
! f40eb38acfbfd6d85583b33be71f8fea  libstdc++-v3/testsuite/23_containers/multimap/debug/move_neg.cc
! 87b814ab50282f28e502015265f31847  libstdc++-v3/testsuite/23_containers/multimap/debug/self_move_assign_neg.cc
! 1c8e922a0832b4b5ecf3b2b680f599e6  libstdc++-v3/testsuite/23_containers/multimap/init-list.cc
! ea693a94079e906ca31f02196c3ddad3  libstdc++-v3/testsuite/23_containers/multimap/modifiers/dr130.cc
! 97fa56e5befee842ab718c471ca12fff  libstdc++-v3/testsuite/23_containers/multimap/modifiers/emplace/1.cc
! d37c092daa0297f04973697678165c91  libstdc++-v3/testsuite/23_containers/multimap/modifiers/erase/47628.cc
! 02f8de8e6a736324872ce8add8351b1e  libstdc++-v3/testsuite/23_containers/multimap/modifiers/erase/51142.cc
! bf0e83cd497228a998e6eafaf29858a2  libstdc++-v3/testsuite/23_containers/multimap/modifiers/erase/abi_tag.cc
! 7bf14dfc4c603c8a876b4d87d3ad8e81  libstdc++-v3/testsuite/23_containers/multimap/modifiers/erase/dr130-linkage-check.cc
! b2f501fe6a23a759ce2a8022ac325ee6  libstdc++-v3/testsuite/23_containers/multimap/modifiers/extract.cc
! dedcb9064cb2445cf09b74f6de04120b  libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/1.cc
! b2d92ccf5f555f6f3e218acdee73c966  libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/2.cc
! bc8a7ab44e001a36a809602a63f53a24  libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/22102.cc
! 8002c8071a0a4fe1fda4432a1529dc28  libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/3.cc
! 06d37dcc93a26f2fc2d4d26881c6e41d  libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/4.cc
! a72f8574ea8804b70ef6bf2eb3ae058e  libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/dr2354.cc
! a50772975328cedb52fe6e1e4dc8f883  libstdc++-v3/testsuite/23_containers/multimap/modifiers/merge.cc
! f8a8fae64b055d972016d50205761b6f  libstdc++-v3/testsuite/23_containers/multimap/modifiers/swap/1.cc
! ffc5d76d53bdaf5d7fd7574a1449fab3  libstdc++-v3/testsuite/23_containers/multimap/modifiers/swap/2.cc
! 6087299433608229168a67935a4c2c0a  libstdc++-v3/testsuite/23_containers/multimap/modifiers/swap/3.cc
! c09be8e24172c6c54287a68c2c17d501  libstdc++-v3/testsuite/23_containers/multimap/operations/1.cc
! 3d08be9c0d0b5f171d9c717193844340  libstdc++-v3/testsuite/23_containers/multimap/operations/2.cc
! 81825f039db741ae240fc20e4db616a2  libstdc++-v3/testsuite/23_containers/multimap/operations/count.cc
! ce91fccfa59a8b69880131ee8b01f0ee  libstdc++-v3/testsuite/23_containers/multimap/range_access.cc
! 9bdfc0892d4ff703044f19a16af03ad5  libstdc++-v3/testsuite/23_containers/multimap/requirements/citerators.cc
! 9ad79ab3a5636730350a62c0a2de18c4  libstdc++-v3/testsuite/23_containers/multimap/requirements/exception/basic.cc
! cea1091054be143ebce1180b239f4709  libstdc++-v3/testsuite/23_containers/multimap/requirements/exception/generation_prohibited.cc
! f413e40632af1713fd2b0f47934bf2b8  libstdc++-v3/testsuite/23_containers/multimap/requirements/exception/propagation_consistent.cc
! a9e074cf04e09608fd07de2fd1ee9468  libstdc++-v3/testsuite/23_containers/multimap/requirements/explicit_instantiation/1.cc
! e9172638fe2820e7363867e14224d4c3  libstdc++-v3/testsuite/23_containers/multimap/requirements/explicit_instantiation/1_c++0x.cc
! 79a8cae91ffa17baf2e3566ca712e9fa  libstdc++-v3/testsuite/23_containers/multimap/requirements/explicit_instantiation/2.cc
! 410169ac2c41db94e01255a449975d04  libstdc++-v3/testsuite/23_containers/multimap/requirements/explicit_instantiation/3.cc
! 4ca38b938469efacbd638b60d2aa1c43  libstdc++-v3/testsuite/23_containers/multimap/requirements/explicit_instantiation/4.cc
! 7e25104689ca2d7f03803f596a9d1435  libstdc++-v3/testsuite/23_containers/multimap/requirements/explicit_instantiation/5.cc
! b2559096c030b17422db06e64be3186b  libstdc++-v3/testsuite/23_containers/multimap/requirements/explicit_instantiation/5_c++0x.cc
! 29054e3d3f9fcca2f1f0b082536f9eac  libstdc++-v3/testsuite/23_containers/multimap/requirements/partial_specialization/1.cc
! ee674edc14301f6e58e49e597c45ca5e  libstdc++-v3/testsuite/23_containers/multimap/requirements/typedefs.cc
! e5513ccf38ceb64c14b3938488527906  libstdc++-v3/testsuite/23_containers/multiset/14340.cc
! c4d0a1f01434484fb29dc8c57d54b4b5  libstdc++-v3/testsuite/23_containers/multiset/23781_neg.cc
! 92a96ebe21192cb65ad28fda0079a3de  libstdc++-v3/testsuite/23_containers/multiset/48101-2_neg.cc
! 8a01ad9498fb26ee2e9049bde9ab4bd4  libstdc++-v3/testsuite/23_containers/multiset/48101_neg.cc
! 52a6223703555f7ebbaaffe088b06c02  libstdc++-v3/testsuite/23_containers/multiset/58764.cc
! a50b4d3a94496a37f6d9a3d5355fbd50  libstdc++-v3/testsuite/23_containers/multiset/allocator/copy.cc
! 135fab35e86168bc04da2c5aa1bdc559  libstdc++-v3/testsuite/23_containers/multiset/allocator/copy_assign.cc
! 3fdfc49090f904215daed770ec441b4a  libstdc++-v3/testsuite/23_containers/multiset/allocator/init-list.cc
! 51aa462fee5891a5d75b1f09f8e0536a  libstdc++-v3/testsuite/23_containers/multiset/allocator/minimal.cc
! abde7f4f81055eb87b5a8c671a49b435  libstdc++-v3/testsuite/23_containers/multiset/allocator/move.cc
! e1dab4894aafb0fd5719ddc8a32fd0f9  libstdc++-v3/testsuite/23_containers/multiset/allocator/move_assign.cc
! bbca3f61228e81afb2ff3de398e771e7  libstdc++-v3/testsuite/23_containers/multiset/allocator/noexcept.cc
! 2e06a3c5192ca01e7a75df290b0c8fb0  libstdc++-v3/testsuite/23_containers/multiset/allocator/swap.cc
! e6b2694ec961ddfdd88383686e1e4d13  libstdc++-v3/testsuite/23_containers/multiset/capacity/29134.cc
! c07a4a6cce46ef0c16a2b297cf999702  libstdc++-v3/testsuite/23_containers/multiset/cons/deduction.cc
! 571cc9c4b39845bec796b8643cdfa0ca  libstdc++-v3/testsuite/23_containers/multiset/cons/moveable.cc
! 0775c798c1071d7be9961f7d302b2ebd  libstdc++-v3/testsuite/23_containers/multiset/cons/noexcept_default_construct.cc
! 5e86e17396f96763d9d817ffa07938b2  libstdc++-v3/testsuite/23_containers/multiset/cons/noexcept_move_construct.cc
! b5d25e6c0a4f4046369ec6fc24848f4a  libstdc++-v3/testsuite/23_containers/multiset/debug/60499.cc
! 613fc9c7b952be68e5ed2e9fcbdee92e  libstdc++-v3/testsuite/23_containers/multiset/debug/construct1_neg.cc
! 3d9839af5299cd67644e6348cd7a3b73  libstdc++-v3/testsuite/23_containers/multiset/debug/construct2_neg.cc
! 4e33acf21ee3c14a29a0e74b03903a2c  libstdc++-v3/testsuite/23_containers/multiset/debug/construct3_neg.cc
! 085fd974d607c06520f03e3e1c715d0c  libstdc++-v3/testsuite/23_containers/multiset/debug/construct4_neg.cc
! 6e183ebccaa13d30055d75a029c60fdc  libstdc++-v3/testsuite/23_containers/multiset/debug/construct5_neg.cc
! 695ed45687e47821af0d048bbefd87ba  libstdc++-v3/testsuite/23_containers/multiset/debug/insert1_neg.cc
! 04ff523bf9211ea9b1f8ef817888dc1f  libstdc++-v3/testsuite/23_containers/multiset/debug/insert2_neg.cc
! 342265d495c4aa5f747dc89d5769a4a7  libstdc++-v3/testsuite/23_containers/multiset/debug/insert3_neg.cc
! 1beac5c1866109ac356f59d3a45735a6  libstdc++-v3/testsuite/23_containers/multiset/debug/insert4_neg.cc
! 75f899cab3875b7af2e83bbbd5fe49ca  libstdc++-v3/testsuite/23_containers/multiset/debug/invalidation/1.cc
! 64e6e8b79773e862eefe5068719e9ad5  libstdc++-v3/testsuite/23_containers/multiset/debug/invalidation/2.cc
! 7af2fbdd3e9c85a9f92e2f99488aee2d  libstdc++-v3/testsuite/23_containers/multiset/debug/iterator_self_move_assign_neg.cc
! 1137cb86b1a720bc219875c73074674b  libstdc++-v3/testsuite/23_containers/multiset/debug/move_assign_neg.cc
! f35d923b89ea8ec53c20fa60203bdec6  libstdc++-v3/testsuite/23_containers/multiset/debug/move_neg.cc
! cc6aca06da9bc1804f9b40f8e545fd1d  libstdc++-v3/testsuite/23_containers/multiset/debug/self_move_assign_neg.cc
! c61c52da1af9f78a3c566ad9b091319d  libstdc++-v3/testsuite/23_containers/multiset/init-list.cc
! 5834160c1f885b11136d5a2cbe503804  libstdc++-v3/testsuite/23_containers/multiset/modifiers/dr130.cc
! ec7add311a2a2d8e2a2be9d28608881f  libstdc++-v3/testsuite/23_containers/multiset/modifiers/emplace/1.cc
! 5a1e8dbcefc418fbad467e75436223d3  libstdc++-v3/testsuite/23_containers/multiset/modifiers/erase/51142.cc
! c71d97e663b6ac3463041f8c702a7b27  libstdc++-v3/testsuite/23_containers/multiset/modifiers/erase/abi_tag.cc
! da875b3369dd0c23c4fdac03583a5d69  libstdc++-v3/testsuite/23_containers/multiset/modifiers/erase/dr130-linkage-check.cc
! 67878c8e2bfe02db576e6f591bca7c84  libstdc++-v3/testsuite/23_containers/multiset/modifiers/extract.cc
! c0ff82a618134e3cca55709c24bbb3d6  libstdc++-v3/testsuite/23_containers/multiset/modifiers/insert/1.cc
! efc84a832856a96e8d3bfd17705049f2  libstdc++-v3/testsuite/23_containers/multiset/modifiers/insert/2.cc
! e9073bcb443e175b944cd56421d3330b  libstdc++-v3/testsuite/23_containers/multiset/modifiers/insert/22102.cc
! 728d28b3dee07f88f0345654fd8b3f7f  libstdc++-v3/testsuite/23_containers/multiset/modifiers/insert/3.cc
! e22d9684df06492fa3ba657011f52d45  libstdc++-v3/testsuite/23_containers/multiset/modifiers/insert/4.cc
! 497b4b471d5f0ba38442084fc5c9f927  libstdc++-v3/testsuite/23_containers/multiset/modifiers/merge.cc
! 640de227f70f61c131a2bc3724d61b2f  libstdc++-v3/testsuite/23_containers/multiset/modifiers/swap/1.cc
! f523da38fddb434dbf01fd6fce4f8bcd  libstdc++-v3/testsuite/23_containers/multiset/modifiers/swap/2.cc
! cbd7727feb0044a3792bb6a4486eaaeb  libstdc++-v3/testsuite/23_containers/multiset/modifiers/swap/3.cc
! c02490cda65d969c9505576cc5dc73c8  libstdc++-v3/testsuite/23_containers/multiset/operations/1.cc
! 9cd7b2a90b8498179150edb8d9c773a5  libstdc++-v3/testsuite/23_containers/multiset/operations/2.cc
! 470dcfcbd09f7a2f07e6ea66744666e5  libstdc++-v3/testsuite/23_containers/multiset/operations/count.cc
! 8c9829dc0657c64163a1cf50eb236481  libstdc++-v3/testsuite/23_containers/multiset/range_access.cc
! 350353e69256a881d04c232d3e85c36b  libstdc++-v3/testsuite/23_containers/multiset/requirements/citerators.cc
! ac031aeef7663367e128cec90982a634  libstdc++-v3/testsuite/23_containers/multiset/requirements/exception/basic.cc
! 5dba5402f0f9984b17fd1c2a6a493510  libstdc++-v3/testsuite/23_containers/multiset/requirements/exception/generation_prohibited.cc
! e75c80d65072f03c5fb7b68b6058db88  libstdc++-v3/testsuite/23_containers/multiset/requirements/exception/propagation_consistent.cc
! 7e29bf97113dfc5548617ff3aa70034c  libstdc++-v3/testsuite/23_containers/multiset/requirements/explicit_instantiation/1.cc
! 6008c19fbaa414bd55c78f784a6ce117  libstdc++-v3/testsuite/23_containers/multiset/requirements/explicit_instantiation/1_c++0x.cc
! 49e9ae27e3d6def77587fe7e749ca14d  libstdc++-v3/testsuite/23_containers/multiset/requirements/explicit_instantiation/2.cc
! 8eac5c4f2e7ecdb3e7a39a6e1b3fa1e4  libstdc++-v3/testsuite/23_containers/multiset/requirements/explicit_instantiation/3.cc
! d5add34942ea427cee8661da3144b2ca  libstdc++-v3/testsuite/23_containers/multiset/requirements/explicit_instantiation/4.cc
! 2eb3af9d1947adf8d65d2a8de615812d  libstdc++-v3/testsuite/23_containers/multiset/requirements/explicit_instantiation/5.cc
! ee11adc3a0267b6206e764dd401cf44e  libstdc++-v3/testsuite/23_containers/multiset/requirements/explicit_instantiation/5_c++0x.cc
! 67061fff0350db4e944d89c393acd463  libstdc++-v3/testsuite/23_containers/multiset/requirements/partial_specialization/1.cc
! 298e411ab70a9a828657250d546873ec  libstdc++-v3/testsuite/23_containers/multiset/requirements/typedefs.cc
! 11901831a94797535151b6432bf73ca7  libstdc++-v3/testsuite/23_containers/priority_queue/67085.cc
! 5b38094824dc16c8c29d878c1cf080f5  libstdc++-v3/testsuite/23_containers/priority_queue/77528.cc
! 0c45c759a9c047bf771f8cbdbb1cbcb1  libstdc++-v3/testsuite/23_containers/priority_queue/allocator.cc
! 0ac0c8bf338350dc125fc27a278c6d19  libstdc++-v3/testsuite/23_containers/priority_queue/members/7161.cc
! 8a8cee85ba42bcb1224a5bc52d9ca649  libstdc++-v3/testsuite/23_containers/priority_queue/moveable.cc
! cbe8cc79f8cdefbf0cf6f883eea08581  libstdc++-v3/testsuite/23_containers/priority_queue/requirements/constructible.cc
! 6a32069227a71c6252e21bcb2acf4990  libstdc++-v3/testsuite/23_containers/priority_queue/requirements/explicit_instantiation/1.cc
! 20bcb82b5ca62378e8b7a92222702217  libstdc++-v3/testsuite/23_containers/priority_queue/requirements/explicit_instantiation/1_c++98.cc
! 63ffd7998b001d7d2e633fe07e4d8418  libstdc++-v3/testsuite/23_containers/priority_queue/requirements/typedefs.cc
! 2947dd70d3014ccdd640fcdd56ec0e24  libstdc++-v3/testsuite/23_containers/priority_queue/requirements/uses_allocator.cc
! 84dd7f1b3f600eb4eec3dde6b064e124  libstdc++-v3/testsuite/23_containers/queue/77528.cc
! ed50e22b0576ad82498dd11388db7e25  libstdc++-v3/testsuite/23_containers/queue/members/7157.cc
! 40ab6db68e3817ae8abc1c1fc3a78d06  libstdc++-v3/testsuite/23_containers/queue/members/emplace_cxx17_return.cc
! be5ad2f88a1fe91f9955d602ba552ded  libstdc++-v3/testsuite/23_containers/queue/moveable.cc
! c73dbbbd52baf70d7ea2d70cd62dac26  libstdc++-v3/testsuite/23_containers/queue/requirements/constructible.cc
! a16981324a994365fdb13ecb5b8b2aad  libstdc++-v3/testsuite/23_containers/queue/requirements/explicit_instantiation/1.cc
! 17840e5bbd27fe59b17bbdaac8600a5a  libstdc++-v3/testsuite/23_containers/queue/requirements/explicit_instantiation/1_c++98.cc
! 70b09155c96643ba33aa1669c72358ec  libstdc++-v3/testsuite/23_containers/queue/requirements/typedefs.cc
! 8ab122d06230dc6d68392aea696495a4  libstdc++-v3/testsuite/23_containers/queue/requirements/uses_allocator.cc
! 6a30577371680e323420697bf1cbb97c  libstdc++-v3/testsuite/23_containers/set/14340.cc
! e19a9f60df0a3e78b5aaa08a3c9e785e  libstdc++-v3/testsuite/23_containers/set/18604.cc
! c87096b72fdcb83b48ecc4e22ee3880d  libstdc++-v3/testsuite/23_containers/set/23781_neg.cc
! 5fae4b2938fdb12cca104edfb3c1ea75  libstdc++-v3/testsuite/23_containers/set/48101-2_neg.cc
! 437f8fea8115d4ae5a53b38639865e69  libstdc++-v3/testsuite/23_containers/set/48101_neg.cc
! 980d2f616bbb1f59b943008eab1126b5  libstdc++-v3/testsuite/23_containers/set/58764.cc
! c4b7f2e842a50aeae436a871c5946c9a  libstdc++-v3/testsuite/23_containers/set/allocator/71964.cc
! 91964c53f95e418b337c5cb205c397f9  libstdc++-v3/testsuite/23_containers/set/allocator/copy.cc
! 5c1eb028c247c235f2ac0056a1037dcc  libstdc++-v3/testsuite/23_containers/set/allocator/copy_assign.cc
! 980a5591c6aa0ef141d303a4eb9c6bee  libstdc++-v3/testsuite/23_containers/set/allocator/default_init.cc
! 16615a73448b9b52b620b16d98a545d3  libstdc++-v3/testsuite/23_containers/set/allocator/init-list.cc
! ea13332352bb765ff50c6c35a76fbf90  libstdc++-v3/testsuite/23_containers/set/allocator/minimal.cc
! df9ea83bea7b8fd8cc925629404c2df0  libstdc++-v3/testsuite/23_containers/set/allocator/move.cc
! 7a5bf82bdc453be22a473840d77e86de  libstdc++-v3/testsuite/23_containers/set/allocator/move_assign.cc
! f2a7cec8bd042f96540a85ceb5e5a55c  libstdc++-v3/testsuite/23_containers/set/allocator/noexcept.cc
! 392bfcc6b1d60ea659ad9331a0d799bf  libstdc++-v3/testsuite/23_containers/set/allocator/swap.cc
! 38da78f8679734537427ff27a6a818cc  libstdc++-v3/testsuite/23_containers/set/capacity/29134.cc
! 4107d26b33808b51d4429ab8f02085bb  libstdc++-v3/testsuite/23_containers/set/check_construct_destroy.cc
! ad7885ea63390cee4951bf0f5643ef90  libstdc++-v3/testsuite/23_containers/set/cons/61023.cc
! d5f30a333a53bc89810a451db0cec846  libstdc++-v3/testsuite/23_containers/set/cons/deduction.cc
! 544521a03e0000faec31130fdc6011c4  libstdc++-v3/testsuite/23_containers/set/cons/moveable.cc
! b3a379ade1dcc539336983144edd5bb5  libstdc++-v3/testsuite/23_containers/set/cons/noexcept_default_construct.cc
! db78ad73258c664b980972bdf2aa3ea5  libstdc++-v3/testsuite/23_containers/set/cons/noexcept_move_construct.cc
! 27ef929b67213caf9f35f873c1602822  libstdc++-v3/testsuite/23_containers/set/debug/60499.cc
! 63f54cefb9a8a551dcd0401b35270a2b  libstdc++-v3/testsuite/23_containers/set/debug/construct1_neg.cc
! dcea916a8279c4023798492399882c2b  libstdc++-v3/testsuite/23_containers/set/debug/construct2_neg.cc
! 9e6f298d7f0472d1a9458bffdae915a4  libstdc++-v3/testsuite/23_containers/set/debug/construct3_neg.cc
! 8796f6acfc330b7aa442dfc58f2211b3  libstdc++-v3/testsuite/23_containers/set/debug/construct4_neg.cc
! 164d9e92881ce38f8cb64e0cb270f0f5  libstdc++-v3/testsuite/23_containers/set/debug/construct5_neg.cc
! 95ec1613aba7ea84727dcd99220b35a1  libstdc++-v3/testsuite/23_containers/set/debug/insert1_neg.cc
! b499b72dcabe187d6e1771ed2d7d8b13  libstdc++-v3/testsuite/23_containers/set/debug/insert2_neg.cc
! 1284e7bb8272dedd45e6b7be6b71843e  libstdc++-v3/testsuite/23_containers/set/debug/insert3_neg.cc
! 586852cdf73bfbe54a86fe950ca310da  libstdc++-v3/testsuite/23_containers/set/debug/insert4_neg.cc
! 3087adfe61004f6260768fd1eecc51a2  libstdc++-v3/testsuite/23_containers/set/debug/invalidation/1.cc
! 38c4b8aa55428e61a9fdbdb9a294ddef  libstdc++-v3/testsuite/23_containers/set/debug/invalidation/2.cc
! 5afc6c2c43ea0283dd32e453cf68b491  libstdc++-v3/testsuite/23_containers/set/debug/iterator_self_move_assign_neg.cc
! 629c478e96f7d03f82328103f960d1cc  libstdc++-v3/testsuite/23_containers/set/debug/move_assign_neg.cc
! 4aa769013e7fdf0b822e2a360bdc2cc6  libstdc++-v3/testsuite/23_containers/set/debug/move_neg.cc
! 7d63c170fba90a7a6ba138be38aab996  libstdc++-v3/testsuite/23_containers/set/debug/self_move_assign_neg.cc
! c7f3491a3bbd554919b2371f70a79287  libstdc++-v3/testsuite/23_containers/set/init-list.cc
! e60d165db14107dc18d3b886264fb2ac  libstdc++-v3/testsuite/23_containers/set/modifiers/16728.cc
! c8b65e1dd3e370f191405a6e2b0bd1c2  libstdc++-v3/testsuite/23_containers/set/modifiers/17948.cc
! ebba425f20d2e682e66452cd65b68941  libstdc++-v3/testsuite/23_containers/set/modifiers/dr130.cc
! 5695bb08a4f5bc75553d7d1cb1619b5a  libstdc++-v3/testsuite/23_containers/set/modifiers/emplace/1.cc
! 0d93aeb565d16850a2a25e921fc0bdb4  libstdc++-v3/testsuite/23_containers/set/modifiers/erase/51142.cc
! 2600a8313b397afa808615c0fc8df85e  libstdc++-v3/testsuite/23_containers/set/modifiers/erase/abi_tag.cc
! 4b2973f96b3567cd88fae1b060f8f97d  libstdc++-v3/testsuite/23_containers/set/modifiers/erase/dr130-linkage-check.cc
! b58518554ae694707c3c8d5341c73e38  libstdc++-v3/testsuite/23_containers/set/modifiers/extract.cc
! 9a6b90df19dcadabbaaf795b1a231bab  libstdc++-v3/testsuite/23_containers/set/modifiers/insert/1.cc
! 7186bae1a10b8586ea978d3bd822ffd8  libstdc++-v3/testsuite/23_containers/set/modifiers/insert/2.cc
! 7dfe68f67c639e287f4b30e1257bfa45  libstdc++-v3/testsuite/23_containers/set/modifiers/insert/3.cc
! cdaed7e4d6abc2462f11dead5cb9cdba  libstdc++-v3/testsuite/23_containers/set/modifiers/merge.cc
! 7aa3b1118a62cf3e15980f38dd8d4b40  libstdc++-v3/testsuite/23_containers/set/modifiers/swap/1.cc
! 0ebe76c9964dfd5e7c9cb80b7cbcb51b  libstdc++-v3/testsuite/23_containers/set/modifiers/swap/2.cc
! 077f09f352bf222cfdaf6d345d9c3b27  libstdc++-v3/testsuite/23_containers/set/modifiers/swap/3.cc
! d675ca4df93bf657179bd275dde775e8  libstdc++-v3/testsuite/23_containers/set/move_comparison.cc
! 9d20a6a7e94f60b1b351826da1840481  libstdc++-v3/testsuite/23_containers/set/operations/1.cc
! 59663bee4e13194b7c836a30b6b07362  libstdc++-v3/testsuite/23_containers/set/operations/2.cc
! 0c34bea61eb7af03241b84e11f93350d  libstdc++-v3/testsuite/23_containers/set/operations/count.cc
! afad7f908b9b6a0e430daf22f32cf7bc  libstdc++-v3/testsuite/23_containers/set/operators/1_neg.cc
! 8605c7f76baa5e59d7a6656ac34df88a  libstdc++-v3/testsuite/23_containers/set/range_access.cc
! 917dbc1e06a0d225caf7252dc696c32f  libstdc++-v3/testsuite/23_containers/set/requirements/citerators.cc
! cef15ce65e5ed1f9fc6124c9750e4b8d  libstdc++-v3/testsuite/23_containers/set/requirements/exception/basic.cc
! f38426e478ddcfe4214f864ee3f2cb75  libstdc++-v3/testsuite/23_containers/set/requirements/exception/generation_prohibited.cc
! 72d20e0895cc8c034e4a69ca8c423c7d  libstdc++-v3/testsuite/23_containers/set/requirements/exception/propagation_consistent.cc
! eb600b075243a3a8a8cdcc64a0543957  libstdc++-v3/testsuite/23_containers/set/requirements/explicit_instantiation/1.cc
! 9e9631de5b0eff15111a01703612342e  libstdc++-v3/testsuite/23_containers/set/requirements/explicit_instantiation/1_c++0x.cc
! a76c7d037036664c3f1a1b569a8cf319  libstdc++-v3/testsuite/23_containers/set/requirements/explicit_instantiation/2.cc
! 7bf09ab136a989a234ec2f0bff0c2758  libstdc++-v3/testsuite/23_containers/set/requirements/explicit_instantiation/3.cc
! 708c8fd417c6644bd3e18ab35c9043e4  libstdc++-v3/testsuite/23_containers/set/requirements/explicit_instantiation/4.cc
! e970bd1b42e2a3235b2f818333c11461  libstdc++-v3/testsuite/23_containers/set/requirements/explicit_instantiation/5.cc
! 0185d5517438b3fc2e00a5033783cb82  libstdc++-v3/testsuite/23_containers/set/requirements/explicit_instantiation/5_c++0x.cc
! 104b773407e78bf64b2e1d1f22b70e3a  libstdc++-v3/testsuite/23_containers/set/requirements/partial_specialization/1.cc
! a4e7e5cb4edc542f3380de721d2bf8c2  libstdc++-v3/testsuite/23_containers/set/requirements/typedefs.cc
! cbdddd6ae805094800a472ce9553dd6a  libstdc++-v3/testsuite/23_containers/stack/77528.cc
! f6578a0500469a5906af5ba30671c03d  libstdc++-v3/testsuite/23_containers/stack/members/7158.cc
! 8ef25af13d61ad31ef870eedb28d3bb2  libstdc++-v3/testsuite/23_containers/stack/members/emplace_cxx17_return.cc
! 3c42ab6f53fea2d4f470301f9eb20aa1  libstdc++-v3/testsuite/23_containers/stack/requirements/constructible.cc
! a3b672797c81579be6f096f9439b7e8c  libstdc++-v3/testsuite/23_containers/stack/requirements/explicit_instantiation/1.cc
! bac724d37dbe3d26e36800b2fd3cdef8  libstdc++-v3/testsuite/23_containers/stack/requirements/explicit_instantiation/1_c++98.cc
! cb92d4a16aaa3e0212d51daa15a727a7  libstdc++-v3/testsuite/23_containers/stack/requirements/typedefs.cc
! 562d59a3678df51167e112bf864bd4c1  libstdc++-v3/testsuite/23_containers/stack/requirements/uses_allocator.cc
! f942eb4cad9f35f823331d7981ec618d  libstdc++-v3/testsuite/23_containers/unordered_map/48101-2_neg.cc
! 1b9a7057b112a8990bb4694ccefa99cf  libstdc++-v3/testsuite/23_containers/unordered_map/48101_neg.cc
! 68113270aec5e36d6d3290b17ed7a4df  libstdc++-v3/testsuite/23_containers/unordered_map/55043.cc
! 613adb0359a1d90a7bf1e76c2322b438  libstdc++-v3/testsuite/23_containers/unordered_map/59548.cc
! 8321846f7f82d87f7f939febc30a5bd2  libstdc++-v3/testsuite/23_containers/unordered_map/allocator/copy.cc
! faa5a241682cc2443f0734bd5a069744  libstdc++-v3/testsuite/23_containers/unordered_map/allocator/copy_assign.cc
! a851eea3cf200e8ab1afe6000b8e16b9  libstdc++-v3/testsuite/23_containers/unordered_map/allocator/minimal.cc
! 193b96fe12e0d3efb793e165aed91d83  libstdc++-v3/testsuite/23_containers/unordered_map/allocator/move.cc
! 58c0784167711b508c0a83b95a38b80b  libstdc++-v3/testsuite/23_containers/unordered_map/allocator/move_assign.cc
! c4545af5dd411285498406bbd882cb50  libstdc++-v3/testsuite/23_containers/unordered_map/allocator/noexcept.cc
! f00ca7bc6fd546b032e4d90793ce9801  libstdc++-v3/testsuite/23_containers/unordered_map/allocator/swap.cc
! f274293ec2062df2ce0c889a4be95375  libstdc++-v3/testsuite/23_containers/unordered_map/cons/56112.cc
! 775bb3fd85a321061007cde5b90ee8e5  libstdc++-v3/testsuite/23_containers/unordered_map/cons/66055.cc
! 50d4d52a4879040c922bfe8a14181d74  libstdc++-v3/testsuite/23_containers/unordered_map/cons/81891.cc
! 65bb2afeb615aa71935b0763394d0fc0  libstdc++-v3/testsuite/23_containers/unordered_map/cons/deduction.cc
! e9355f49e9e9739953322d61e3fc6f76  libstdc++-v3/testsuite/23_containers/unordered_map/cons/moveable.cc
! 4b99e15ad9d6ad51fa19cbecbfa8d0b9  libstdc++-v3/testsuite/23_containers/unordered_map/debug/60499.cc
! 5484184c58ee5731f3081c049e8e7199  libstdc++-v3/testsuite/23_containers/unordered_map/debug/begin1_neg.cc
! 75534ad63493aef80773243860005bca  libstdc++-v3/testsuite/23_containers/unordered_map/debug/begin2_neg.cc
! 5c866d9fd66a3014adafeabc2e65d628  libstdc++-v3/testsuite/23_containers/unordered_map/debug/bucket_size_neg.cc
! 0502ed73d0410b75ddbdcaf6e5b94f54  libstdc++-v3/testsuite/23_containers/unordered_map/debug/cbegin_neg.cc
! 72ddd179b0c3dae91421cf0f3eeeea78  libstdc++-v3/testsuite/23_containers/unordered_map/debug/cend_neg.cc
! ea885191ea440d47a13c84b69d4de53f  libstdc++-v3/testsuite/23_containers/unordered_map/debug/construct1_neg.cc
! 2abc9c28f804cf5dfc18cf68f2f49db3  libstdc++-v3/testsuite/23_containers/unordered_map/debug/construct2_neg.cc
! f282179ee3b1b12161c5e9eb5cfd949b  libstdc++-v3/testsuite/23_containers/unordered_map/debug/construct3_neg.cc
! ace6ad5b90f99e2e719c8882143dffc7  libstdc++-v3/testsuite/23_containers/unordered_map/debug/construct4_neg.cc
! 62d72e062704d0595f8126873bfa5463  libstdc++-v3/testsuite/23_containers/unordered_map/debug/construct5_neg.cc
! bfd071764a44a1b8818046616fa3c1db  libstdc++-v3/testsuite/23_containers/unordered_map/debug/end1_neg.cc
! ca5c272b5fdb0794d45fe1643b13ff5a  libstdc++-v3/testsuite/23_containers/unordered_map/debug/end2_neg.cc
! 382b874ae0606348483a26d3ede00219  libstdc++-v3/testsuite/23_containers/unordered_map/debug/insert1_neg.cc
! 13e1792d8c3734d419432b21b1f24d89  libstdc++-v3/testsuite/23_containers/unordered_map/debug/insert2_neg.cc
! ceb9863926ab3021b1aab40941cfb931  libstdc++-v3/testsuite/23_containers/unordered_map/debug/insert3_neg.cc
! b5f33a219a271a3501ec4da6fecc361a  libstdc++-v3/testsuite/23_containers/unordered_map/debug/insert4_neg.cc
! fefcf27e47c4c413155f23da2bf2c1c2  libstdc++-v3/testsuite/23_containers/unordered_map/debug/invalid_local_iterator_compare_neg.cc
! 2d1cf80b83b30f25c8a0097a5d1b22eb  libstdc++-v3/testsuite/23_containers/unordered_map/debug/invalid_local_iterator_range_neg.cc
! 1e8cb3e02c6eb1ddbbf33cbe0df5a329  libstdc++-v3/testsuite/23_containers/unordered_map/debug/iterator_self_move_assign_neg.cc
! 795328b6546e5e40e98e68138a6f7c7b  libstdc++-v3/testsuite/23_containers/unordered_map/debug/max_load_factor_neg.cc
! 808d6c92ad6efa59c29dd9dc5028b6c5  libstdc++-v3/testsuite/23_containers/unordered_map/debug/move_assign_neg.cc
! da3ef3fb45e2ceb63438e43695acbfe7  libstdc++-v3/testsuite/23_containers/unordered_map/debug/move_neg.cc
! 6adc04a738b21095955603383020ff6d  libstdc++-v3/testsuite/23_containers/unordered_map/debug/self_move_assign_neg.cc
! b18e6988100ee920c79668fb3b40c43e  libstdc++-v3/testsuite/23_containers/unordered_map/debug/use_erased_local_iterator_neg.cc
! ba716d3503da27459f0c5a441ee47e4c  libstdc++-v3/testsuite/23_containers/unordered_map/debug/use_invalid_iterator_neg.cc
! 5b634b90da82b57a440242bf9e323e0b  libstdc++-v3/testsuite/23_containers/unordered_map/debug/use_invalid_local_iterator_neg.cc
! 2a8e39552eafbb904b4058fb1b60bea8  libstdc++-v3/testsuite/23_containers/unordered_map/dr761.cc
! f1cfa776508bc82c016a6fe4782d03c1  libstdc++-v3/testsuite/23_containers/unordered_map/erase/1.cc
! 34df903321ab88ddb9c9ddd4534d9988  libstdc++-v3/testsuite/23_containers/unordered_map/erase/24061-map.cc
! 221187b3a9cde2e80f7dfd9314c20d5e  libstdc++-v3/testsuite/23_containers/unordered_map/erase/51142.cc
! 35ab9701b77275df66b44c5336d8fbde  libstdc++-v3/testsuite/23_containers/unordered_map/erase/54276.cc
! 8fdc45e6337eedc4bc74a01f0ce52678  libstdc++-v3/testsuite/23_containers/unordered_map/final_hash.cc
! ef96f9d1e3dbb41568e2176653f769b9  libstdc++-v3/testsuite/23_containers/unordered_map/hash_policy/dr1189.cc
! 0c1942f0a8cc8da98edb99532932c773  libstdc++-v3/testsuite/23_containers/unordered_map/init-list.cc
! 994c311dc25b490f0353ce6fd11acd10  libstdc++-v3/testsuite/23_containers/unordered_map/insert/24061-map.cc
! 91cb45146e091ca27edd346aa3a3a5d3  libstdc++-v3/testsuite/23_containers/unordered_map/insert/57619.cc
! a40bc9c2dacb3bc4651e8fb3b3102b09  libstdc++-v3/testsuite/23_containers/unordered_map/insert/83709.cc
! 2673bc45445808371f8d4c8b274b71c7  libstdc++-v3/testsuite/23_containers/unordered_map/insert/array_syntax.cc
! 571f30a0a055ba348d07a4186696e2c2  libstdc++-v3/testsuite/23_containers/unordered_map/insert/array_syntax_move.cc
! 254443071c092539791fc0b4269d21d0  libstdc++-v3/testsuite/23_containers/unordered_map/insert/dr2354.cc
! 7ffc99262fa0d544609fef175d82c34f  libstdc++-v3/testsuite/23_containers/unordered_map/insert/map_range.cc
! 656709d8015e6f648a3e62e5419e44e8  libstdc++-v3/testsuite/23_containers/unordered_map/insert/map_single.cc
! 545b8486b9be3fc27f1509cc63fff213  libstdc++-v3/testsuite/23_containers/unordered_map/insert/map_single_move-1.cc
! e3f8d9261995c1f35d5d854237b85f21  libstdc++-v3/testsuite/23_containers/unordered_map/insert/map_single_move-2.cc
! ccca5ab49b660c0f821f1be6d7a780b8  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/61667.cc
! 9ab6877c311a03b0149d8c0fc2c884dc  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/emplace.cc
! a004e98a94fe3251ce63f1ba4bb4a8a3  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/extract.cc
! fc61535ceec7660b85a183d8ca2e03c9  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/insert_or_assign.cc
! 052ef42b2841c32c32c33105cbb9cd86  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/merge.cc
! cd8abcc5f96b07a47d5e52150e968228  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/reserve.cc
! 70e7471766896d90d6519994020daecf  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/try_emplace.cc
! 35f5c555204a9b3e56890626499eb90a  libstdc++-v3/testsuite/23_containers/unordered_map/observers.cc
! bf0f8093e4bb657cc9e1b17ed0ccfe4c  libstdc++-v3/testsuite/23_containers/unordered_map/operations/count.cc
! a0c76ab2f6e25b43cfb9c9457efa3bd0  libstdc++-v3/testsuite/23_containers/unordered_map/operators/1.cc
! ee27fa42aacfb6e13943f30a1b16b6b2  libstdc++-v3/testsuite/23_containers/unordered_map/operators/2.cc
  45f46b4cea5268d1bf8f903d79e3c350  libstdc++-v3/testsuite/23_containers/unordered_map/profile/hash_map.cc
  6bcaac31a8700749f12b90fa8913629b  libstdc++-v3/testsuite/23_containers/unordered_map/profile/unordered.cc
! dabb39753fb97f74430cffa80e3c8d1a  libstdc++-v3/testsuite/23_containers/unordered_map/range_access.cc
! 4eda19e1b0458064ac4b40858d702782  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/52942.cc
! 32b40df5f9e0c21f2d3e53464b76f369  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/53067.cc
! a82affa5c969c35dca1d2d23ac8c50d6  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/53339.cc
! 1124a321192e60ceeaa29373bec7bc2a  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/citerators.cc
! 5cdfe2a073bab7b8a3fabe0f1accb250  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/cliterators.cc
! 83da39ea0e99d24c73aa3e8edc4c2784  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/debug_container.cc
! 8a41b78c78656f38008474736dcbadc8  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/debug_mode.cc
! 505de25932af6b903ac6229edce12192  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/exception/basic.cc
! fb1471f080b302ba0edd30c43d0250f0  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/exception/generation_prohibited.cc
! 62c51df4e3a6351a0b5b9d56e958777b  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/exception/propagation_consistent.cc
! fc47637f9899c4a961cc8f28ea2ff711  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/explicit_instantiation/1.cc
! c709be529793865ca1c60a7c9977fd55  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/explicit_instantiation/2.cc
! 9d1a1e835aa596056538656c98452dcb  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/explicit_instantiation/3.cc
! 1715ed82d9500254b0906899e320ce26  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/explicit_instantiation/4.cc
! b0150c9747406d73fe9c5ddc43dbe2a5  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/explicit_instantiation/5.cc
! b7d32ef1d9d91301237bbd287f96e7cb  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/typedefs.cc
! c9676d8d0aec83b8e6370c30cfe090bd  libstdc++-v3/testsuite/23_containers/unordered_multimap/48101-2_neg.cc
! afde1979e2d9ab58e4fa185a5855981c  libstdc++-v3/testsuite/23_containers/unordered_multimap/48101_neg.cc
! 136f0fd7955cfba79f608767d44c4d05  libstdc++-v3/testsuite/23_containers/unordered_multimap/55043.cc
! aa95467c048dc1f338ee92b94b2dd292  libstdc++-v3/testsuite/23_containers/unordered_multimap/allocator/copy.cc
! b35d951a5ff0eff0aba071ad9e8983ce  libstdc++-v3/testsuite/23_containers/unordered_multimap/allocator/copy_assign.cc
! 2170e16b9e7abcf2cc10f8386160acdc  libstdc++-v3/testsuite/23_containers/unordered_multimap/allocator/minimal.cc
! ba7007a5a16964515c74ec4649ee03a3  libstdc++-v3/testsuite/23_containers/unordered_multimap/allocator/move.cc
! a7dea749a4b1b8c5f55d027ae99e91ea  libstdc++-v3/testsuite/23_containers/unordered_multimap/allocator/move_assign.cc
! 1715429b12f5657e0a5c3bfede9d13af  libstdc++-v3/testsuite/23_containers/unordered_multimap/allocator/noexcept.cc
! 659d474ed2657a6662013c7d6ed6dbbd  libstdc++-v3/testsuite/23_containers/unordered_multimap/allocator/swap.cc
! c972e99200f5303ca2d2d9b567c3666d  libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/66055.cc
! 77e8a675aaac277182849abc0c950753  libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/deduction.cc
! 6cfc7649eb405ba2edf8de81ca06196a  libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/moveable.cc
! 2398c38f25f0d9935963d4f891d1611f  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/60499.cc
! 484a6fc20757f4f27c51715b871ea92a  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/begin1_neg.cc
! 75534ad63493aef80773243860005bca  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/begin2_neg.cc
! 5c866d9fd66a3014adafeabc2e65d628  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/bucket_size_neg.cc
! 0502ed73d0410b75ddbdcaf6e5b94f54  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/cbegin_neg.cc
! 72ddd179b0c3dae91421cf0f3eeeea78  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/cend_neg.cc
! cfc73e8dd08df7555b2007c47a8a1fe1  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/construct1_neg.cc
! b6e2ffce6f24f53b0bdd4c22a3d8958c  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/construct2_neg.cc
! 8652e3ae93bee3c5eefdaa06b45a2445  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/construct3_neg.cc
! da921a2226c743f5611c8ac558889c13  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/construct4_neg.cc
! d977566760f4c6a5d87ec29eada4aaca  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/construct5_neg.cc
! bfd071764a44a1b8818046616fa3c1db  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/end1_neg.cc
! ca5c272b5fdb0794d45fe1643b13ff5a  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/end2_neg.cc
! 4f400585621ce66de8c9d42baf291975  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/insert1_neg.cc
! 2e4fa56b0317cfec898fb5abdbf5db64  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/insert2_neg.cc
! 5b26c5b3859a89cff2f8671793f83e7d  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/insert3_neg.cc
! 332eb8c42d47ed5a8ca23b33df4efe52  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/insert4_neg.cc
! 53e78a8868e7b16cba31b79537dd1875  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/invalid_local_iterator_compare_neg.cc
! cf8550ae9705cc67f15018123ec34d7f  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/invalid_local_iterator_range_neg.cc
! 0f2750b0736520c2a3d18726e31a7304  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/iterator_self_move_assign_neg.cc
! 0f08f0d5c0918134a623e00467ee8818  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/max_load_factor_neg.cc
! 7019f09f2e74ec893489fb077a4fafa7  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/move_assign_neg.cc
! 2a98c058772e52db6219e4b48e55e95a  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/move_neg.cc
! fb7a30718b2e7deaf0ad451f7e27cf20  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/self_move_assign_neg.cc
! cc13135e1d9b0544bb232fb67e4bb257  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/use_erased_local_iterator_neg.cc
! 9deaa6a46c51ed3aa92ff67cd19fe504  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/use_invalid_iterator_neg.cc
! 7c6458aea515c67b8d0fd73637591b77  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/use_invalid_local_iterator_neg.cc
! 866599d26b30a989cb9288eabc597d2d  libstdc++-v3/testsuite/23_containers/unordered_multimap/erase/1.cc
! a6c3b74eda878d3a428ed5cdf17cf15f  libstdc++-v3/testsuite/23_containers/unordered_multimap/erase/2.cc
! 48af6331c92f630e2ec5296263868758  libstdc++-v3/testsuite/23_containers/unordered_multimap/erase/24061-multimap.cc
! 31422351e6f3148320486cb5068a4b12  libstdc++-v3/testsuite/23_containers/unordered_multimap/erase/51142.cc
! f4c0a1ce1380a500e5b0749c6f237dd2  libstdc++-v3/testsuite/23_containers/unordered_multimap/erase/51845-multimap.cc
! 3fd33f73feec49b42a5cccfc926a1746  libstdc++-v3/testsuite/23_containers/unordered_multimap/erase/54276.cc
! 26040fd680ae971fcd2e8aface1b3b25  libstdc++-v3/testsuite/23_containers/unordered_multimap/final_hash.cc
! 6c99ce378cd5f2b8490f9c1de40d719b  libstdc++-v3/testsuite/23_containers/unordered_multimap/hash_policy/dr1189.cc
! 1cda1e38e3a8445ef23c8052532dc1dc  libstdc++-v3/testsuite/23_containers/unordered_multimap/init-list.cc
! d63e3a871ee1d5662cb2aaef60d08dc5  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/24061-multimap.cc
! bd4502e60c323f20b866f4ae25f6d74f  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/51866.cc
! 0240580f0c76c906ce6dfaf3cb9a4712  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/52476.cc
! cfe722bd11b3a0925deb5741fcaef023  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/53115.cc
! e307f4fb613e0e483fb7fc501783e385  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/55028-debug.cc
! 15af759628d347e63f79c507369a95e5  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/57619.cc
! 09eb58425b0654be9a6847dea3fdea5a  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/dr2354.cc
! 5d9694e99ac57b3b2c36202e29f7ccae  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/hint.cc
! 9bedec296f3038f893176791ae2cd6ff  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/multimap_range.cc
! 9ada3fa2a6dbd57c4441de7cf42b8f66  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/multimap_single.cc
! 18becb06c64bc09143bc955e4f4c1097  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/multimap_single_move-1.cc
! 5536905c60df34c8fbae6c46da50faf6  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/multimap_single_move-2.cc
! 48106dda458730383f873e30dcc515cd  libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/emplace.cc
! c3d101bf883a4dcd69d1b4bc7320722b  libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/extract.cc
! 77e884824e1a5ed62bbaaa0747f58f0b  libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/merge.cc
! 566ee5a8a160edc6ff2ddf11b23584b4  libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/reserve.cc
! 0a0495b4d1845e8873080a5a73de3020  libstdc++-v3/testsuite/23_containers/unordered_multimap/observers.cc
! 40486e1a581d4bd13ef9282842571925  libstdc++-v3/testsuite/23_containers/unordered_multimap/operations/count.cc
! 7712afa5957d12d08ca1ee0a19b882ea  libstdc++-v3/testsuite/23_containers/unordered_multimap/operators/1.cc
! 73390557f62ed604f2a8cb0218d4a7b9  libstdc++-v3/testsuite/23_containers/unordered_multimap/operators/2.cc
! 2b9fd3c1ba0a2e4f8fc67ebec460b2b0  libstdc++-v3/testsuite/23_containers/unordered_multimap/range_access.cc
! 83d028ff73f807a337bf398d5e8ee680  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/53339.cc
! be67deff71b9df220e8a2ee8c564bcc4  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/citerators.cc
! e2d585e9b82617d3ac7ea92f637f16fd  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/cliterators.cc
! d4bb8e04ffc75e3944e58f8b07461e78  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/debug.cc
! 6f007d1309a61e139d38e52569a8a37e  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/exception/basic.cc
! 38972a513d2916d2c7f220438e8d9daa  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/exception/generation_prohibited.cc
! d5c53a3aaba7ff7e00ab6b47b779d939  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/exception/propagation_consistent.cc
! f376842c2ad889a2ad990fe455ba6a75  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/explicit_instantiation/1.cc
! f0eae8af5a5d1485a630d856cf073eb5  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/explicit_instantiation/2.cc
! 19c0c0f928b8a32bdb9ffa6ecfe7d853  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/explicit_instantiation/3.cc
! 26fc5374d18291d4022d03dbed26560d  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/explicit_instantiation/4.cc
! e405fb432073b9f6fd7c8a43642df36f  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/explicit_instantiation/5.cc
! d21ceeb7c7c6d758fbe0a8a09b752666  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/typedefs.cc
! 9cba97bf7e1f201fef1fcfec49f3afc7  libstdc++-v3/testsuite/23_containers/unordered_multiset/48101-2_neg.cc
! f71f25dd0102a4d51f0e2ddfd970462b  libstdc++-v3/testsuite/23_containers/unordered_multiset/48101_neg.cc
! a936407774ca2d4ef8864115572a6ed4  libstdc++-v3/testsuite/23_containers/unordered_multiset/55043.cc
! 89d9696694a4458608916880c4bf9a4d  libstdc++-v3/testsuite/23_containers/unordered_multiset/allocator/copy.cc
! bcb179811b302a93a42479f28884ed39  libstdc++-v3/testsuite/23_containers/unordered_multiset/allocator/copy_assign.cc
! effbdf3fa276057c39b52f638576aa79  libstdc++-v3/testsuite/23_containers/unordered_multiset/allocator/minimal.cc
! 23b8e9f9deabef23bce45d2fb13d47f4  libstdc++-v3/testsuite/23_containers/unordered_multiset/allocator/move.cc
! 1ffa3ea712d314d571dcc384b853c475  libstdc++-v3/testsuite/23_containers/unordered_multiset/allocator/move_assign.cc
! c018a6bbb84827fd63177b066874fdd2  libstdc++-v3/testsuite/23_containers/unordered_multiset/allocator/noexcept.cc
! e385e1ac6f3b41bb1135fe940e97dcd2  libstdc++-v3/testsuite/23_containers/unordered_multiset/allocator/swap.cc
! 80e171260b825d46dd1424bce234f7f6  libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/66055.cc
! aa50ba8a791d1d040a824ce3abdbf387  libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/copy.cc
! 9bfb894930bb0c2c5527e69039d1a0e3  libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/deduction.cc
! d72ddc2d707f9d0a9d0e655c632e6be7  libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/moveable.cc
! 53029494a3077a58b1eee35ef6bc0b1f  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/60499.cc
! 24b3def967414d5af323a0fb19d1a3f5  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/begin1_neg.cc
! de4b41bec4646c3f1ebe6c00ce9d3090  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/begin2_neg.cc
! f4109c1751b770b387158ae7b48f87a7  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/bucket_size_neg.cc
! f69d70aaa8beda3c098afaeb45e1374c  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/cbegin_neg.cc
! 690c3b98e4459286d0bc49bcd7a0f147  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/cend_neg.cc
! ea771e930e913f58d367ed4b27af28d5  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/construct1_neg.cc
! a898e1cfb8246b7b9bb7242d6dd64190  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/construct2_neg.cc
! 6e13c2bdf1eadbaf3a1a2daab1f26d92  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/construct3_neg.cc
! 1e4247bdd903fa8da1e6a0a910a7c063  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/construct4_neg.cc
! 7ea79da4e287fa061066292fca8b8ad3  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/construct5_neg.cc
! 2db6a4208e390836b6a6d0b4bd23cac6  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/end1_neg.cc
! cc3c0fa2ab90b53d7727f46d21d1ce01  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/end2_neg.cc
! 941b03f98a09b72c4f8984849ffaf15e  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/insert1_neg.cc
! 5a72cb6834552e72dfd1da9d74b9f87a  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/insert2_neg.cc
! 0dd70a62889c4037c8ca48edc9cdedcc  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/insert3_neg.cc
! 759866bd364718f246e9d33a48baedd7  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/insert4_neg.cc
! b2066b0e805f8992404ea6a366185281  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/invalid_local_iterator_compare_neg.cc
! 78f1a1329b76aecdbc726e7e2daaffa1  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/invalid_local_iterator_range_neg.cc
! 05f07b959454dce239309b9a65238f9c  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/iterator_self_move_assign_neg.cc
! f736dcea116eec151f8117f96bb6b1b9  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/max_load_factor_neg.cc
! 587e17357e005e5cb0ede102eb5b717e  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/move_assign_neg.cc
! 38e717cc29788b3535d77d7bb5c43a49  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/move_neg.cc
! e5198d73ae2c738804dca194ffe38050  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/self_move_assign_neg.cc
! 8277dee88906784dd475d287df916adc  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/use_erased_local_iterator_neg.cc
! fb6c665fe492691349d9cff42259c06c  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/use_invalid_iterator_neg.cc
! 0a71c87124aae248323cbd59e84d6ed4  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/use_invalid_local_iterator_neg.cc
! c9d1e7a231e61358e6015912cd5b0604  libstdc++-v3/testsuite/23_containers/unordered_multiset/erase/1.cc
! 455bc0408ee6784eabe58545312d312a  libstdc++-v3/testsuite/23_containers/unordered_multiset/erase/2.cc
! 7be4ebee79274bf6b9d8274e8307a630  libstdc++-v3/testsuite/23_containers/unordered_multiset/erase/24061-multiset.cc
! 642be0d401b17003b404c612cdc51f7c  libstdc++-v3/testsuite/23_containers/unordered_multiset/erase/51142.cc
! 21e58f8d15066c1fbbca28a7633bb921  libstdc++-v3/testsuite/23_containers/unordered_multiset/final_hash.cc
! 4dc4e2abc43f9c6d9d834a4b894579b1  libstdc++-v3/testsuite/23_containers/unordered_multiset/hash_policy/dr1189.cc
! 740b92eab8aae2d2dbf91e404272060d  libstdc++-v3/testsuite/23_containers/unordered_multiset/init-list.cc
! fdeff579b44882039b0d15350cf4749f  libstdc++-v3/testsuite/23_containers/unordered_multiset/insert/24061-multiset.cc
! 5cc756f94437a35ab01cf72813e4d007  libstdc++-v3/testsuite/23_containers/unordered_multiset/insert/51866.cc
! c24364abe21b75a330a28d8108b79275  libstdc++-v3/testsuite/23_containers/unordered_multiset/insert/52476.cc
! 9bf344c5c8a6ef216deef44650ab8e26  libstdc++-v3/testsuite/23_containers/unordered_multiset/insert/53115.cc
! d3fb99f401f78255c173ac001ff8dfa5  libstdc++-v3/testsuite/23_containers/unordered_multiset/insert/hash_policy.cc
! 288fab4c3b8ba716c71772095c472d66  libstdc++-v3/testsuite/23_containers/unordered_multiset/insert/multiset_range.cc
! f676583caa3f02592ddbd372b1c40d27  libstdc++-v3/testsuite/23_containers/unordered_multiset/insert/multiset_single.cc
! e3ed5acf4a8d67bc900e9891809e6753  libstdc++-v3/testsuite/23_containers/unordered_multiset/insert/multiset_single_move.cc
! 423753fc6be0b5d805c94a9b92e91b37  libstdc++-v3/testsuite/23_containers/unordered_multiset/modifiers/emplace.cc
! 9bfda077a5a4377f956ff02bedd6d8e8  libstdc++-v3/testsuite/23_containers/unordered_multiset/modifiers/extract.cc
! 7b30f8bacc49d767a7837d7abf496238  libstdc++-v3/testsuite/23_containers/unordered_multiset/modifiers/merge.cc
! fd4e9e232598aec8f8824039fa7a5f8a  libstdc++-v3/testsuite/23_containers/unordered_multiset/modifiers/reserve.cc
! ef76c2612c7d128c82541b4b852e84f5  libstdc++-v3/testsuite/23_containers/unordered_multiset/observers.cc
! 73f8484a5ce512c8874e5f064334e934  libstdc++-v3/testsuite/23_containers/unordered_multiset/operations/count.cc
! b58f11b483dc9211a252a21942e8ee09  libstdc++-v3/testsuite/23_containers/unordered_multiset/operators/1.cc
! 3b505025a36a09b6e62f191ba8185d85  libstdc++-v3/testsuite/23_containers/unordered_multiset/range_access.cc
! 895744b59d24cb5998d60de76362bb90  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/citerators.cc
! 5e64fd441c6161d6096538801da5cbbb  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/cliterators.cc
! a1dcffd73d3af9cd5b7ae1cb7743606c  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/debug.cc
! a94f3ae3047a7c25e46ecc82e154a0eb  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/exception/basic.cc
! 6ec529228d0a37c86f7cdec530a530b5  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/exception/generation_prohibited.cc
! 7ae1f42f94eb5313074554ea1bf0b7ac  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/exception/propagation_consistent.cc
! 498f58768f322153c61839c4de9ce9a5  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/explicit_instantiation/1.cc
! c3e5d53517e01006418201673bb9ab01  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/explicit_instantiation/2.cc
! 0168317b529706dab62eeb66155a8ee6  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/explicit_instantiation/3.cc
! 175c912ca176cb018a322e2b1501c87a  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/explicit_instantiation/4.cc
! b8eb4b4f0823c08b2f8a51dfaeea6fbc  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/explicit_instantiation/5.cc
! cf6ddf2772375ece01426c09008399f7  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/typedefs.cc
! 0836c1cef12ad3449a1559fe2c5aa337  libstdc++-v3/testsuite/23_containers/unordered_set/48101-2_neg.cc
! 379f7f4d91e4e80506d99360570e30db  libstdc++-v3/testsuite/23_containers/unordered_set/48101_neg.cc
! bda8efa68f0f300361afa662b76639fc  libstdc++-v3/testsuite/23_containers/unordered_set/55043.cc
! 4fdfce80af2da4a93c37aa3959979185  libstdc++-v3/testsuite/23_containers/unordered_set/56267-2.cc
! 558cf60eca0016a67d0c4a4a8754ffff  libstdc++-v3/testsuite/23_containers/unordered_set/56267.cc
! ce66a0bc5d2a126f4c1ce8f8a6c9179e  libstdc++-v3/testsuite/23_containers/unordered_set/56278.cc
! 983aed75d530a4aa61f55edf38cd84b5  libstdc++-v3/testsuite/23_containers/unordered_set/61143.cc
! 6ea841e1e55c38c21f5abcf6893f29b1  libstdc++-v3/testsuite/23_containers/unordered_set/63456.cc
! 2eb4678b447646da664adda6e8b3124f  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/copy.cc
! 3cf21deaba4e25d459305684a3322b8b  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/copy_assign.cc
! a698fbcee2da73af797dfa2ff7fe21b7  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/ext_ptr.cc
! 339defb8fbb06a91792f70ecda401dfe  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/minimal.cc
! 05cb51c290541fdf1f3e1d6f7c5063f9  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/move.cc
! cd2830d8d44f84d5eec0e3f1830f5c26  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/move_assign.cc
! 837f7c9ec11e49efa838863f56aef5aa  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/noexcept.cc
! b08f69be90259a8ebd23ae41d4f9fa5c  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/swap.cc
! 2ebc5203fea3e1e10dd7b156c958984a  libstdc++-v3/testsuite/23_containers/unordered_set/buckets/swap.cc
! 342cffa788e96b5365c6715fa400489e  libstdc++-v3/testsuite/23_containers/unordered_set/cons/66055.cc
! 4f310b847f6c6a8d7a06b6ac13b06863  libstdc++-v3/testsuite/23_containers/unordered_set/cons/deduction.cc
! 0a24e5ee0447eb577995e45e3b3fc5f2  libstdc++-v3/testsuite/23_containers/unordered_set/cons/moveable.cc
! 273ceb610acb2b8b678b01a25c057c06  libstdc++-v3/testsuite/23_containers/unordered_set/debug/60499.cc
! 4af93f1d6a7de8549cef81a8d27460a7  libstdc++-v3/testsuite/23_containers/unordered_set/debug/begin1_neg.cc
! fa504629817e06ceaf10462364757073  libstdc++-v3/testsuite/23_containers/unordered_set/debug/begin2_neg.cc
! 90c8610310b0be5bc103bbe3d273b6a8  libstdc++-v3/testsuite/23_containers/unordered_set/debug/bucket_size_neg.cc
! f1bd94b813a7c613b6260936cd93a846  libstdc++-v3/testsuite/23_containers/unordered_set/debug/cbegin_neg.cc
! 5fb61bcf79830e1559bf7b691a840045  libstdc++-v3/testsuite/23_containers/unordered_set/debug/cend_neg.cc
! 6ba0be1b796fb08520119d28deb0185e  libstdc++-v3/testsuite/23_containers/unordered_set/debug/construct1_neg.cc
! fd386800f56e6b60c6271978d120db40  libstdc++-v3/testsuite/23_containers/unordered_set/debug/construct2_neg.cc
! 095269eb22d3d9e3e5c1b2ac5ba5fffc  libstdc++-v3/testsuite/23_containers/unordered_set/debug/construct3_neg.cc
! d23ef1fa0cd4053628e3c8096a5f413f  libstdc++-v3/testsuite/23_containers/unordered_set/debug/construct4_neg.cc
! dae05c164d1708342f3b0d458c839aa2  libstdc++-v3/testsuite/23_containers/unordered_set/debug/construct5_neg.cc
! c86410aa31d6198b5c1fb83f77746e46  libstdc++-v3/testsuite/23_containers/unordered_set/debug/debug_functions.cc
! dedb98d7ae66bc79e0202d6fcbc66a42  libstdc++-v3/testsuite/23_containers/unordered_set/debug/end1_neg.cc
! edc019f7b64ad3ceea9114373e82e942  libstdc++-v3/testsuite/23_containers/unordered_set/debug/end2_neg.cc
! 895457f944366a9f1fc6465ab4ac3b53  libstdc++-v3/testsuite/23_containers/unordered_set/debug/insert1_neg.cc
! 03ac8ebb75139330c1ca80bcc7bb9b17  libstdc++-v3/testsuite/23_containers/unordered_set/debug/insert2_neg.cc
! b659107bc817227ceaea4051fdb6c37b  libstdc++-v3/testsuite/23_containers/unordered_set/debug/insert3_neg.cc
! ed99428f143d89ef7e9edcf4f18bf537  libstdc++-v3/testsuite/23_containers/unordered_set/debug/insert4_neg.cc
! 8b0c7f19b5e248ddc0064c7166a20ac4  libstdc++-v3/testsuite/23_containers/unordered_set/debug/invalid_local_iterator_compare_neg.cc
! 0fc5d5715570980892c1f6e35c874eaa  libstdc++-v3/testsuite/23_containers/unordered_set/debug/invalid_local_iterator_range_neg.cc
! feaf8e9363f4a9eaee467f8044b7e4c4  libstdc++-v3/testsuite/23_containers/unordered_set/debug/iterator_self_move_assign_neg.cc
! b50556f94423d527e7402cb96a5538c2  libstdc++-v3/testsuite/23_containers/unordered_set/debug/max_load_factor_neg.cc
! a490e81b998218925e7f1727460e91c5  libstdc++-v3/testsuite/23_containers/unordered_set/debug/move_assign_neg.cc
! e623b6e94e568ecd40d92c81105c8864  libstdc++-v3/testsuite/23_containers/unordered_set/debug/move_neg.cc
! 3152cc09ad17231e8d538e4887d0789c  libstdc++-v3/testsuite/23_containers/unordered_set/debug/self_move_assign_neg.cc
! 2be596312be9a5b22a92ee532ce6125c  libstdc++-v3/testsuite/23_containers/unordered_set/debug/use_erased_local_iterator_neg.cc
! e1c97112309c5aaf7309a9f5d4fd7167  libstdc++-v3/testsuite/23_containers/unordered_set/debug/use_invalid_iterator_neg.cc
! ffec947ec54de3c77d8bcdbd13f2f937  libstdc++-v3/testsuite/23_containers/unordered_set/debug/use_invalid_local_iterator_neg.cc
! 9df1e4143da34d1c638b7e5b6b28d716  libstdc++-v3/testsuite/23_containers/unordered_set/erase/1.cc
! 89dc608f58a53335395ab3c298d598cf  libstdc++-v3/testsuite/23_containers/unordered_set/erase/24061-set.cc
! 7ed9f65c33573c4d80582911d418b525  libstdc++-v3/testsuite/23_containers/unordered_set/erase/51142.cc
! 1dfe9251825e4f143c8c212f032ae6f1  libstdc++-v3/testsuite/23_containers/unordered_set/final_hash.cc
! dec52cb8a181e47f55dff8b7eec8bd91  libstdc++-v3/testsuite/23_containers/unordered_set/hash_policy/26132.cc
! 4301d114661a17f9d95634089ef0c43f  libstdc++-v3/testsuite/23_containers/unordered_set/hash_policy/71181.cc
! d05e10ad9265d963198fcbb320fa36a4  libstdc++-v3/testsuite/23_containers/unordered_set/hash_policy/dr1189.cc
! d3ea76685a2e3c5acee2d53c0634e04c  libstdc++-v3/testsuite/23_containers/unordered_set/hash_policy/load_factor.cc
! 1729cf1732dd2fecaeabfbd186383a4e  libstdc++-v3/testsuite/23_containers/unordered_set/hash_policy/power2_rehash.cc
! 5795a9453cbd897b817ca2d264640c89  libstdc++-v3/testsuite/23_containers/unordered_set/hash_policy/prime_rehash.cc
! 73deeafeda8997f8ad0e2aa8607784f3  libstdc++-v3/testsuite/23_containers/unordered_set/hash_policy/rehash.cc
! 6f752bcd192863ed82e2793c8c0e47e3  libstdc++-v3/testsuite/23_containers/unordered_set/init-list.cc
! 1da5bef8634c27459c121b7595247ef6  libstdc++-v3/testsuite/23_containers/unordered_set/insert/24061-set.cc
! 380979919cb99962a5e4887c70486ffc  libstdc++-v3/testsuite/23_containers/unordered_set/insert/83709.cc
! 9d255f324b2c7209f871b4168ee294cb  libstdc++-v3/testsuite/23_containers/unordered_set/insert/hash_policy.cc
! 9301bd664999783295ce960b4e8b76fe  libstdc++-v3/testsuite/23_containers/unordered_set/insert/move_range.cc
! 652f21c1bd821db44d402d0dca34a2dd  libstdc++-v3/testsuite/23_containers/unordered_set/insert/set_range.cc
! 280b44d20b8587fe3eb0ccefe268337b  libstdc++-v3/testsuite/23_containers/unordered_set/insert/set_single.cc
! dbe7ebc152e813dc1efa0b6024d94980  libstdc++-v3/testsuite/23_containers/unordered_set/insert/set_single_move.cc
! 4a0bdb4b3b4ae559524488ec5aff88b9  libstdc++-v3/testsuite/23_containers/unordered_set/instantiation_neg.cc
! 04bc6db7052c85705c40b33c1e700c4e  libstdc++-v3/testsuite/23_containers/unordered_set/max_load_factor/robustness.cc
! adb77c920598359bdc886794d1e844c4  libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/emplace.cc
! c48588a1170a6e9db54c4057bbfd3935  libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/extract.cc
! fba61ea1be94ead3fbfca530d055418e  libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/merge.cc
! 925f0a5d8243076fd9f215f6b47f2001  libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/reserve.cc
! 35934ff509cd3fc8d6da5a2a2608eea8  libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/swap.cc
! 3d107f3c78ef116127575b5f7d320951  libstdc++-v3/testsuite/23_containers/unordered_set/observers.cc
! 2240f809620e91e05b6243ab72772d79  libstdc++-v3/testsuite/23_containers/unordered_set/operations/count.cc
! 035159b678118e81693a2cb530bc6070  libstdc++-v3/testsuite/23_containers/unordered_set/operators/1.cc
! af52d572804c5dba996a263509e0f0d7  libstdc++-v3/testsuite/23_containers/unordered_set/operators/52309.cc
! 9035f7a00a5cd8809886c3a899cef1fc  libstdc++-v3/testsuite/23_containers/unordered_set/range_access.cc
! aac24e3ab45fd0d0bcb4def143f6fee8  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/52942.cc
! 06185d12d9d8d3d252e2dec68aa084c3  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/53067.cc
! 7908f519f37d3b97cf6c65fd630a9daf  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/citerators.cc
! 6be662223fbf666389bb2509c6ff23ce  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/cliterators.cc
! 1d26fd9722886092fd16b9fe6c48763e  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/debug_container.cc
! 2218f5244a66cf1c2cbdee6420e01bb7  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/debug_mode.cc
! 22ff71cc0424a1db0c4b8347333d7797  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/exception/basic.cc
! de1207b0fe79f9878d568adb46295431  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/exception/generation_prohibited.cc
! fca920f96cfd4abe2a92f7e966fe1f18  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/exception/propagation_consistent.cc
! 872c0cc3695d95d96e7461daad8a6532  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/explicit_instantiation/1.cc
! 3bea04d265690e64591f8d5db161932f  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/explicit_instantiation/2.cc
! 78925d029595d681179ec2dba56e2322  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/explicit_instantiation/3.cc
! 0c9a3949b79aba23807a08dc8527ad8d  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/explicit_instantiation/4.cc
! 415439152494e70566900b8e4ca00c29  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/explicit_instantiation/5.cc
! 154da97130b6d7dbf7a444121d15bfdb  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/typedefs.cc
! bd3b8b6e18e2b0cc3b46c563e7522a91  libstdc++-v3/testsuite/23_containers/vector/14340.cc
! b7def86aa417de2d0bd509cbb7a08370  libstdc++-v3/testsuite/23_containers/vector/15523.cc
! 9a4ea4d68446f4e595fcec9a12fe5d68  libstdc++-v3/testsuite/23_containers/vector/18604.cc
! cee52771ae1290ce6f6b797d51e52fc4  libstdc++-v3/testsuite/23_containers/vector/26412-1.cc
! 93ac9d28c9d1e12f38facaa3055f9bc5  libstdc++-v3/testsuite/23_containers/vector/26412-2.cc
! 5805d652e67ee390cba1ad2792903f8a  libstdc++-v3/testsuite/23_containers/vector/40192.cc
! 9939bc8cf5e4c2f0ab90ed4d55b8cdd6  libstdc++-v3/testsuite/23_containers/vector/48101-2_neg.cc
! a6ce353e6222eef0e58ec7ba6ae52e78  libstdc++-v3/testsuite/23_containers/vector/48101_neg.cc
! efc386f90368783107963f05f245dd11  libstdc++-v3/testsuite/23_containers/vector/52591.cc
! bdc0bbde4d1e3d001d2739f018334e52  libstdc++-v3/testsuite/23_containers/vector/58764.cc
! 2ae43e872400e4de578f1510aa4d638a  libstdc++-v3/testsuite/23_containers/vector/59829.cc
! b2520306f8fe7553b8ca3787d7e02b97  libstdc++-v3/testsuite/23_containers/vector/63500.cc
! d17cff984a6b9801f9dcc197d6c58729  libstdc++-v3/testsuite/23_containers/vector/allocator/construction.cc
! e815c4252dbda04bd53d5e3b9e5b0257  libstdc++-v3/testsuite/23_containers/vector/allocator/copy.cc
! b40f1eea10db8799bdec7c0355feb960  libstdc++-v3/testsuite/23_containers/vector/allocator/copy_assign.cc
! ca5edc422fe8ca344a7cbff1de315ea4  libstdc++-v3/testsuite/23_containers/vector/allocator/ext_ptr.cc
! 4525b454a891d3c9106a9810f5974455  libstdc++-v3/testsuite/23_containers/vector/allocator/minimal.cc
! 9a88021d86c542239c563ecf7034f9cf  libstdc++-v3/testsuite/23_containers/vector/allocator/move.cc
! be9c96e643c4278b85dbdc514e840297  libstdc++-v3/testsuite/23_containers/vector/allocator/move_assign.cc
! f95b0dcbbf3c54c2dde9357f895841b6  libstdc++-v3/testsuite/23_containers/vector/allocator/noexcept.cc
! d12c1c1c68e2fa2a27e7dc9b2b359f9c  libstdc++-v3/testsuite/23_containers/vector/allocator/swap.cc
! 592c44b89ba6ab563eec86fcfe6ec4da  libstdc++-v3/testsuite/23_containers/vector/bool/1.cc
! df0b3c3d88e62ec2e83078e2abe40bbe  libstdc++-v3/testsuite/23_containers/vector/bool/21244.cc
! 18b6ab3336d7cb312fe84e8c1aefef5d  libstdc++-v3/testsuite/23_containers/vector/bool/23632.cc
! 17b3fede5cbe28159ecd2555919ef13c  libstdc++-v3/testsuite/23_containers/vector/bool/6886.cc
! cc95bb8934e0ed5a6e1098c0c3592dd3  libstdc++-v3/testsuite/23_containers/vector/bool/72847.cc
! 5a6a7d8d7b32e55bb9385cb53f19f2a8  libstdc++-v3/testsuite/23_containers/vector/bool/80893.cc
! d8a42812f1a9a7d66a9d60ad28e9cd5c  libstdc++-v3/testsuite/23_containers/vector/bool/82558.cc
! b468243ec9a563a8b6c9a606a7b3c7d3  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/copy.cc
! b9f53e26bfde9a8f10f180bebeb08752  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/copy_assign.cc
! c6e34543cd3ae57d10b00562c64e41ed  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/default_init.cc
! 0c264253aa16dcb4407d15601d02a8fe  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/ext_ptr.cc
! 0189298f2fc2cd6e677250acbc0617be  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/minimal.cc
! bb724cff459873bd1276c96a4e0cff6a  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/move.cc
! 64f573d497e220d06da8a4d31d3bab75  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/move_assign.cc
! a015276f6e1397f674baa7d831e43f04  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/noexcept.cc
! ccb65236dfccf1207ecf38faa3ce4e49  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/swap.cc
! 4a301fbf5b7ffde3e8daa52a75af903e  libstdc++-v3/testsuite/23_containers/vector/bool/capacity/1.cc
! c0efc4c9d83db1dbb22b2a7e0260ee21  libstdc++-v3/testsuite/23_containers/vector/bool/capacity/29134.cc
! 689e866ec439bb5fd83cfdc655d666ba  libstdc++-v3/testsuite/23_containers/vector/bool/capacity/shrink_to_fit.cc
! 1a510028399bb9bdef3ed5f7acf43f1d  libstdc++-v3/testsuite/23_containers/vector/bool/clear_allocator.cc
! df3eb882793e2b3ebb05f9ce7c80e64c  libstdc++-v3/testsuite/23_containers/vector/bool/cons/1.cc
! 869fe6fffcb9da78876868f820951eef  libstdc++-v3/testsuite/23_containers/vector/bool/cons/2.cc
! 7ec46994a455ad27f8e12204976bf584  libstdc++-v3/testsuite/23_containers/vector/bool/cons/noexcept_move_construct.cc
! f765bdbf0abf3b9ffc0748c9160aa08b  libstdc++-v3/testsuite/23_containers/vector/bool/emplace.cc
! 3b111f9eae83bd8cecf1b622ac8f97e0  libstdc++-v3/testsuite/23_containers/vector/bool/emplace_cxx17_return.cc
! 98dcbd0d78903587277a416c2f5aca4a  libstdc++-v3/testsuite/23_containers/vector/bool/hash/1.cc
! ea5a987610469be0127199983a64e4bd  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/erase/1.cc
! a7c386419a1e258bc5e495f2fbf52de1  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/erase/54577.cc
! dcef868af6050597108afd13c04437d4  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/insert/1.cc
! 5932d8e640bd6217201aee9f08069995  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/insert/31370.cc
! c3083360b7ef454583fc4cd510c79849  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/insert/const_iterator.cc
! 70d6b98a6851c6ab9fd896fa4c118ae2  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/swap/1.cc
! 6a1a276c9f0f64dbb2ae95c7c27b3c6d  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/swap/2.cc
! 926bd6947a48f02c9941e84202648c46  libstdc++-v3/testsuite/23_containers/vector/bool/requirements/citerators.cc
! 4a18d1cd0d06cb769ed850eb8fe5b29c  libstdc++-v3/testsuite/23_containers/vector/bool/requirements/dr438/constructor.cc
! 7308b39d47dec5905be181ec84623812  libstdc++-v3/testsuite/23_containers/vector/bool/swap.cc
! 50619cf17bebfb842a28e5c7b45a7207  libstdc++-v3/testsuite/23_containers/vector/capacity/1.cc
! cb0c75fa621d772021bbbd442c391ce7  libstdc++-v3/testsuite/23_containers/vector/capacity/2.cc
! 832c7b2fe8b42e4f5c78a33ac20b3483  libstdc++-v3/testsuite/23_containers/vector/capacity/29134-2.cc
! b4f7c08e1fd02c2004a656cea564ff9a  libstdc++-v3/testsuite/23_containers/vector/capacity/29134.cc
! 6e04037f4cee988204cd7db611656d53  libstdc++-v3/testsuite/23_containers/vector/capacity/44190.cc
! 9c913a2c9d6a489865b66b8234df59d9  libstdc++-v3/testsuite/23_containers/vector/capacity/8230.cc
! 0b186b4bb77ac41a48e3a58e0b61114c  libstdc++-v3/testsuite/23_containers/vector/capacity/reserve/moveable.cc
! cfbdd251d8969f65bd56df84314f5045  libstdc++-v3/testsuite/23_containers/vector/capacity/reserve/moveable2.cc
! aeec956916583725f018b9ef397b85c3  libstdc++-v3/testsuite/23_containers/vector/capacity/resize/1.cc
! 7efcd4e2bd1231b96fcc3eb13bdfdcf3  libstdc++-v3/testsuite/23_containers/vector/capacity/resize/moveable.cc
! 692e6d8903b672706693414374b176cf  libstdc++-v3/testsuite/23_containers/vector/capacity/resize/moveable2.cc
! 8e5cc0b3ac2553ffe7bf8dbe07fd0b1d  libstdc++-v3/testsuite/23_containers/vector/capacity/resize/resize_size.cc
! f3158fbd42ffbb1d2669a718c8206043  libstdc++-v3/testsuite/23_containers/vector/capacity/shrink_to_fit.cc
! 2f08a4784611a6888fc3e37bd8f8bdcf  libstdc++-v3/testsuite/23_containers/vector/capacity/shrink_to_fit2.cc
! 0a8d712b87e4b42bd85b1d661c508473  libstdc++-v3/testsuite/23_containers/vector/check_construct_destroy.cc
! 9d84594643fcfd93e330ba6a83c67abf  libstdc++-v3/testsuite/23_containers/vector/cons/1.cc
! 33f637678e3776d91ceb4e5e087faa75  libstdc++-v3/testsuite/23_containers/vector/cons/2.cc
! 93db7bb4417b3c16c5683e7212c345cb  libstdc++-v3/testsuite/23_containers/vector/cons/3.cc
! 841fa0835e0a9d31a84b92e6ef203ffb  libstdc++-v3/testsuite/23_containers/vector/cons/4.cc
! 1ca761e245bd95ce09d0f5c9648e8d97  libstdc++-v3/testsuite/23_containers/vector/cons/55977.cc
! aa51a3960a8031048d2011b0a8cc71c0  libstdc++-v3/testsuite/23_containers/vector/cons/6513.cc
! 4ba677698ca810c47bb7f1c0eba70883  libstdc++-v3/testsuite/23_containers/vector/cons/clear_allocator.cc
! aedee86118114ca6da46d2f1bcbf4aa3  libstdc++-v3/testsuite/23_containers/vector/cons/cons_size.cc
! 320afd8fad22f819ea8564523e127394  libstdc++-v3/testsuite/23_containers/vector/cons/deduction.cc
! 678191e9f9024c3d2bdbcdf1f501ac3c  libstdc++-v3/testsuite/23_containers/vector/cons/destructible_debug_neg.cc
! 16672142b0e7f0a308734e1bc389d177  libstdc++-v3/testsuite/23_containers/vector/cons/destructible_neg.cc
! dbf251f9a812d53bd21737da0a8d5e90  libstdc++-v3/testsuite/23_containers/vector/cons/moveable.cc
! b2d244d04d1c72d62bca7ad4001df010  libstdc++-v3/testsuite/23_containers/vector/cons/moveable2.cc
! 5f3daf40bfd740f52a29c7c61f5307ed  libstdc++-v3/testsuite/23_containers/vector/cons/noexcept_move_construct.cc
! 2a3a8329e106fe71dfcf3c3fec089698  libstdc++-v3/testsuite/23_containers/vector/data_access/1.cc
! 634b82e543646980d55b3d4087baf8a1  libstdc++-v3/testsuite/23_containers/vector/debug/52433.cc
! f4173b5d900173d407ab7181ed4f171e  libstdc++-v3/testsuite/23_containers/vector/debug/57779_neg.cc
! d4c52e2328ded5815b1a88da9aabe7f5  libstdc++-v3/testsuite/23_containers/vector/debug/60499.cc
! 448e837fb1cf1d9ca76178924ae96efc  libstdc++-v3/testsuite/23_containers/vector/debug/60587.cc
! 374e0a6b90653929eec533d652cd7ed4  libstdc++-v3/testsuite/23_containers/vector/debug/60587_neg.cc
! 17e3b2d1feab6501e17feb8dc01c32f5  libstdc++-v3/testsuite/23_containers/vector/debug/alloc_prop.cc
! dc41927973948a4aa4455bfc3bde4076  libstdc++-v3/testsuite/23_containers/vector/debug/assign1_neg.cc
! 0ebf533a4cf5f9d3822418c36b4bf87a  libstdc++-v3/testsuite/23_containers/vector/debug/assign2_neg.cc
! 1892168a39377a744985a7a05e6c4fd7  libstdc++-v3/testsuite/23_containers/vector/debug/assign3_neg.cc
! d36a194367a435f8042502e1237fdd3d  libstdc++-v3/testsuite/23_containers/vector/debug/assign4_neg.cc
! b3ee4604e723e92d0d7d8a29946d0a17  libstdc++-v3/testsuite/23_containers/vector/debug/bool/shrink_to_fit.cc
! 1fff325eea197783683f6a390a0da48c  libstdc++-v3/testsuite/23_containers/vector/debug/construct1_neg.cc
! 8b063ce472b3f2842883de153f2f089e  libstdc++-v3/testsuite/23_containers/vector/debug/construct2_neg.cc
! dd32e5f8b08f2af53eb6a3c1db25a056  libstdc++-v3/testsuite/23_containers/vector/debug/construct3_neg.cc
! 34baf5b2356a389e6cc16966b719a39d  libstdc++-v3/testsuite/23_containers/vector/debug/construct4_neg.cc
! 5d1ac3705cef23e4b76fb5256c209cb7  libstdc++-v3/testsuite/23_containers/vector/debug/debug_functions.cc
! 4312d3f26b775d95d2facd89dc2e96d0  libstdc++-v3/testsuite/23_containers/vector/debug/insert1_neg.cc
! de1a1f562e2a7f4d7cb31bc8fc5d47af  libstdc++-v3/testsuite/23_containers/vector/debug/insert2_neg.cc
! 368b05f983097ec8c6e0a02cc7c3e662  libstdc++-v3/testsuite/23_containers/vector/debug/insert3_neg.cc
! 474605088365e7d18ae5eba77c4329bc  libstdc++-v3/testsuite/23_containers/vector/debug/insert4_neg.cc
! 9e7e2f4f0455988cbce6c18ef3bd38c0  libstdc++-v3/testsuite/23_containers/vector/debug/insert5_neg.cc
! 7921b5868fba18a7bdd86cae9699d6f1  libstdc++-v3/testsuite/23_containers/vector/debug/insert6_neg.cc
! 63a190bd4acbe2a5d591c04b9cf28ab2  libstdc++-v3/testsuite/23_containers/vector/debug/insert7_neg.cc
! 00e318257044ef536e828ce2fda15c25  libstdc++-v3/testsuite/23_containers/vector/debug/invalidation/1.cc
! 05ba512fc98f815aa56865b387618159  libstdc++-v3/testsuite/23_containers/vector/debug/invalidation/2.cc
! ff2b476a853212656e5fdcc9ba32dd51  libstdc++-v3/testsuite/23_containers/vector/debug/invalidation/3.cc
! 17feea7ffd2c99dbef8adb39438f2a3f  libstdc++-v3/testsuite/23_containers/vector/debug/invalidation/4.cc
! 1a879e750f6a8a7d42bb6371d93edec8  libstdc++-v3/testsuite/23_containers/vector/debug/iterator_self_move_assign_neg.cc
! 4eed9d7b29c7a801ca1bf821724460fc  libstdc++-v3/testsuite/23_containers/vector/debug/move_assign_neg.cc
! 3af2bcf7b39b33ee06d73e1144a9d1e4  libstdc++-v3/testsuite/23_containers/vector/debug/move_neg.cc
! 561447befd3f761b5e06e400761ff373  libstdc++-v3/testsuite/23_containers/vector/debug/multithreaded_swap.cc
! ca672df730c55b64e5a36ac40e2fd4e3  libstdc++-v3/testsuite/23_containers/vector/debug/mutex_association.cc
! 466d06dcf8a4697d30e8dee953f9404b  libstdc++-v3/testsuite/23_containers/vector/debug/self_move_assign_neg.cc
! b9bcd0c5fe4110d7321420a1af29de89  libstdc++-v3/testsuite/23_containers/vector/debug/shrink_to_fit.cc
! ac14fe8676b9ce0a0d6a7ef3c850873d  libstdc++-v3/testsuite/23_containers/vector/debug_mode_requires_reallocation-1.cc
! df34d3756ea958924d5d4dee40de7e10  libstdc++-v3/testsuite/23_containers/vector/debug_mode_requires_reallocation-2.cc
! 0b457aa29692d2b30fa521924699384d  libstdc++-v3/testsuite/23_containers/vector/element_access/1.cc
! 67b0b4832aa9cc1369214dd6dfa28f0f  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/citerators.cc
! d86ddfc6f37b1ab7ac6f015be1f28209  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/data_access.cc
! 502efb9e3fcf77eefbebad6cd8991a13  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/explicit_instantiation/1.cc
! 9d94dff6e5b225dae0cc8f0725f35555  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/explicit_instantiation/2.cc
! a75007f935d4ad6338210145d2fa24c0  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/explicit_instantiation/3.cc
! 11a236bbe7ecc603e852a486a69b96a5  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/modifiers/element.cc
! a20d08f0eea6fc819d1c6345084b5ead  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/modifiers/erase.cc
! a67fd7f5b7a2b611e742d313bd00d4fd  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/modifiers/insert.cc
! da8d2f9c5bd06003cf09618e05f6f9d8  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/resize.cc
! 6978bf214f63b4e5c094f1660f5e89ca  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/types/1.cc
! 08904b8aa8f9a7c9c627830d16d8221c  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/types/2.cc
! 3cd8104172731486f5e1c1db0a1d1321  libstdc++-v3/testsuite/23_containers/vector/init-list.cc
! 49f69155656e0b3859024dd03f3a48f5  libstdc++-v3/testsuite/23_containers/vector/modifiers/1.cc
! ff830087ad1c54ecf12f1c3200c9bd60  libstdc++-v3/testsuite/23_containers/vector/modifiers/2.cc
! a83437a5c7117ef2ca2ee7003f51d61c  libstdc++-v3/testsuite/23_containers/vector/modifiers/emplace/52799.cc
! 74c7a9bdd3b75c6f6d10e8789c64e9c3  libstdc++-v3/testsuite/23_containers/vector/modifiers/emplace/const_iterator.cc
! 5ed3bd76e34a771eabdb5aca5bc73198  libstdc++-v3/testsuite/23_containers/vector/modifiers/emplace/cxx17_return.cc
! 1b7321d54a4f821e4e11eb1cc8ce2e88  libstdc++-v3/testsuite/23_containers/vector/modifiers/emplace/self_emplace.cc
! d56abef8350786118f3391ea40f57bce  libstdc++-v3/testsuite/23_containers/vector/modifiers/erase/1.cc
! a5e827c1b90c3b985a1ac3b1c9d9dcbb  libstdc++-v3/testsuite/23_containers/vector/modifiers/erase/50529.cc
! 2c463c7d75ca7f9e28f6cd62ba71abd7  libstdc++-v3/testsuite/23_containers/vector/modifiers/erase/54577.cc
! 9c709e4a1a7f5b835f14a09895674e4c  libstdc++-v3/testsuite/23_containers/vector/modifiers/erase/moveable.cc
! 2562301469280bb6af1ec8431926f429  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/1.cc
! 1be3ecd4a85ccba95a2419c58f7c704e  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/58148.cc
! 42d3bb66d350d65c9dbda18299173be5  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/aliasing.cc
! 135416e7577d35dc49f29503bf3d6bbc  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/const_iterator.cc
! b13faf94511dd8e85f8bc3873a5350af  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/self_insert.cc
  43d5a1efc3592428eed7065d6b872b00  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert_vs_emplace.cc
! 9b0aa31651dedb5d2fe5e04acb343951  libstdc++-v3/testsuite/23_containers/vector/modifiers/moveable.cc
! 8ac7377fe45e1b7f47ae8a8e34b7aa33  libstdc++-v3/testsuite/23_containers/vector/modifiers/moveable2.cc
! 97dba032a8e731f8aeed1e8d260b0324  libstdc++-v3/testsuite/23_containers/vector/modifiers/push_back/49836.cc
! 14160c1203081f91c55e21d6cd31c5a6  libstdc++-v3/testsuite/23_containers/vector/modifiers/push_back/strong_guarantee.cc
! 088caed9c4a308bcdea5d775a46bf8fa  libstdc++-v3/testsuite/23_containers/vector/modifiers/swap/1.cc
! c74e543a6d4e025ab708a4126f13b7bc  libstdc++-v3/testsuite/23_containers/vector/modifiers/swap/2.cc
! e9a59d289cb7d017be740b615120db89  libstdc++-v3/testsuite/23_containers/vector/modifiers/swap/3.cc
  33db2bb591e55ad911ea124e372841ca  libstdc++-v3/testsuite/23_containers/vector/profile/vector.cc
! a9ab4c0723483998e8422daf7210d499  libstdc++-v3/testsuite/23_containers/vector/range_access.cc
! f5182a5666b363a31aa48bb24523c62d  libstdc++-v3/testsuite/23_containers/vector/requirements/citerators.cc
! f37c417a7d38a0b050add43fbe4c0704  libstdc++-v3/testsuite/23_containers/vector/requirements/do_the_right_thing.cc
! f2a6de25f0508c073416d95fb85237d3  libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc
! f4bf3ef3a22c93f1ba6ea0df1904d92c  libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor.cc
! 8c9c8f2476ff8e3235f3a3a7a603e1e7  libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc
! 5c076fab749cf1c40907eaa71c419efa  libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc
! 1323936be09c5acfa8306dc4ea1138a1  libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc
! 3e24b818fd78a0393cee352c5de7c371  libstdc++-v3/testsuite/23_containers/vector/requirements/exception/basic.cc
! 923ccf24aba440f3ddc9b47048061442  libstdc++-v3/testsuite/23_containers/vector/requirements/exception/generation_prohibited.cc
! 087e338e7fac7da6a24d44b52400cde7  libstdc++-v3/testsuite/23_containers/vector/requirements/exception/propagation_consistent.cc
! bbdcb4203f68d32fb59d6f336e673fc2  libstdc++-v3/testsuite/23_containers/vector/requirements/explicit_instantiation/1.cc
! 5cb0bb4831079a3e19d840da3637a30b  libstdc++-v3/testsuite/23_containers/vector/requirements/explicit_instantiation/1_c++0x.cc
! 129c1d89d639ef7fa466a95a0e503443  libstdc++-v3/testsuite/23_containers/vector/requirements/explicit_instantiation/2.cc
! 47da82d78b3c13bf4daa6b84b10cb1f2  libstdc++-v3/testsuite/23_containers/vector/requirements/explicit_instantiation/3.cc
! e8c77a223d6c4324758ca58614d42142  libstdc++-v3/testsuite/23_containers/vector/requirements/explicit_instantiation/4.cc
! cd8208a900108be5268fc474c7baf43e  libstdc++-v3/testsuite/23_containers/vector/requirements/partial_specialization/1.cc
! 8b5641d4947377cff3c0d154c4924c30  libstdc++-v3/testsuite/23_containers/vector/requirements/typedefs.cc
! 5efa89a15a303f640abd213bb97d81c4  libstdc++-v3/testsuite/23_containers/vector/types/1.cc
! 3071168a621e0983af5e987a6fdd95a2  libstdc++-v3/testsuite/23_containers/vector/types/23767.cc
! b1a47450e14e6e55d0575c2466d75bbc  libstdc++-v3/testsuite/23_containers/vector/zero_sized_allocations.cc
! 88036237f60032f24d6e09d1de40bf33  libstdc++-v3/testsuite/24_iterators/back_insert_iterator/2.cc
! 8638a8a983564150cd7e4493844bd7e8  libstdc++-v3/testsuite/24_iterators/back_insert_iterator/requirements/base_classes.cc
! 0972bfcda17b9f4dce98b8b3b0904191  libstdc++-v3/testsuite/24_iterators/back_insert_iterator/requirements/container.cc
! 0f173e7b505cacac69ba5578de25723d  libstdc++-v3/testsuite/24_iterators/back_insert_iterator/requirements/explicit_instantiation.cc
! fe0a83fbc17918a0b3e526774122af3b  libstdc++-v3/testsuite/24_iterators/back_insert_iterator/requirements/typedefs.cc
! 08a7669e78722088c0f6ba7e7ad67e25  libstdc++-v3/testsuite/24_iterators/container_access.cc
! 455b12be08acea093d7f1183297ee04b  libstdc++-v3/testsuite/24_iterators/front_insert_iterator/2.cc
! 82044d1fd9660bf16074ba9137b33e3b  libstdc++-v3/testsuite/24_iterators/front_insert_iterator/requirements/base_classes.cc
! 5c330a906479f2ec9475430960018dc0  libstdc++-v3/testsuite/24_iterators/front_insert_iterator/requirements/container.cc
! eef3ac466615f87ed22b755954fa76ff  libstdc++-v3/testsuite/24_iterators/front_insert_iterator/requirements/explicit_instantiation.cc
! 0bf406126842748ea3aaa2b5fff6d1b9  libstdc++-v3/testsuite/24_iterators/front_insert_iterator/requirements/typedefs.cc
! b034d827c90e97eaf4988cd64be50644  libstdc++-v3/testsuite/24_iterators/headers/iterator/range_access_c++11.cc
! 6062de01909ccc5a44ec0d605d3f8777  libstdc++-v3/testsuite/24_iterators/headers/iterator/range_access_c++14.cc
! f851d3c18de85e3dfc1e826b6b7673dc  libstdc++-v3/testsuite/24_iterators/headers/iterator/range_access_c++17.cc
! 8743ff41c88a4e2e054e8566f37c6d74  libstdc++-v3/testsuite/24_iterators/headers/iterator/synopsis.cc
! 24e6f33e04c7f9a2e039aad7ec67f5b8  libstdc++-v3/testsuite/24_iterators/headers/iterator/synopsis_c++11.cc
! 269ffbb4f94efc5470ff0639278a90be  libstdc++-v3/testsuite/24_iterators/headers/iterator/synopsis_c++14.cc
! 33c8bd277d39eb49fe7f9920a747a08b  libstdc++-v3/testsuite/24_iterators/headers/iterator/synopsis_c++17.cc
! 5bdc1a6032c37e9db465cf06b66b2b01  libstdc++-v3/testsuite/24_iterators/headers/iterator/types_std.cc
! 520efee7c27b24c60a8e29ff73bfeaaf  libstdc++-v3/testsuite/24_iterators/insert_iterator/2.cc
! 4ed9875aea522b94d9b73ab8d60e881a  libstdc++-v3/testsuite/24_iterators/insert_iterator/requirements/base_classes.cc
! 21a16b36c71e44fe30ef1dbb10a0ec9b  libstdc++-v3/testsuite/24_iterators/insert_iterator/requirements/container.cc
! 55346bca4cef621952490d4875741a48  libstdc++-v3/testsuite/24_iterators/insert_iterator/requirements/explicit_instantiation.cc
! 304256e107ba5978cfc2e083c9b697df  libstdc++-v3/testsuite/24_iterators/insert_iterator/requirements/typedefs.cc
! 45a90b832579501c083c39414f4a731e  libstdc++-v3/testsuite/24_iterators/istream_iterator/2.cc
! d16dcb6f3e75ce6b99d1886826f72b4e  libstdc++-v3/testsuite/24_iterators/istream_iterator/70766.cc
! b8dbef257f08338fc5eff90f1ce2b7c4  libstdc++-v3/testsuite/24_iterators/istream_iterator/cons/constexpr.cc
! f5c9c8a3911478d5f7f715bb26117846  libstdc++-v3/testsuite/24_iterators/istream_iterator/requirements/base_classes.cc
! d8235bbce66b9036ade7579debd4f144  libstdc++-v3/testsuite/24_iterators/istream_iterator/requirements/explicit_instantiation.cc
! 2291639a53e2bb382597ec750d49cad8  libstdc++-v3/testsuite/24_iterators/istream_iterator/requirements/typedefs.cc
! 969c3af04031f59886c4750f9c64e984  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/2.cc
! 3bdf1eef7ad968336933ad375e8c8e80  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/2627.cc
! 1f632aa223da931ef578c27328c6002d  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/cons/constexpr.cc
! cef4232959706f21926dce3d9d8d0441  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/debug/1_neg.cc
! 6ecff0036354dedffce1c9cf1cfee571  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/debug/2_neg.cc
! 985a2dc076c65995eb3c9daa9743a211  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/requirements/base_classes.cc
! d6c053896b2fc3747028d3fd4e86fa6e  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/requirements/dr445.cc
! 0b88f690e9b0b6e7f23b2db778eb0c72  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/requirements/explicit_instantiation.cc
! 07eae58fa73d63827e188989a2481010  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/requirements/typedefs.cc
! 9a93a4c70e27609363c47bd244e210ad  libstdc++-v3/testsuite/24_iterators/move_iterator/dr2061.cc
! f51fcc447e134c2c0b187459bdcd02c5  libstdc++-v3/testsuite/24_iterators/move_iterator/dr2106.cc
! d793589a7637df90fbadb87729566c91  libstdc++-v3/testsuite/24_iterators/move_iterator/greedy_ops.cc
! 4408f85dd98aa6bcad0d9d1c7f1edbf4  libstdc++-v3/testsuite/24_iterators/normal_iterator/58403.cc
! 3569344c4bb962ce545213c3bdafb8aa  libstdc++-v3/testsuite/24_iterators/normal_iterator/greedy_ops.cc
! 8f136f96ccaf0ab7e9f63516a47d19e9  libstdc++-v3/testsuite/24_iterators/operations/40497.cc
! 631af97d6c75b598ecf8901dc62067b2  libstdc++-v3/testsuite/24_iterators/operations/lwg2353.cc
! e634ec21d1779cd78504e6998c7a1981  libstdc++-v3/testsuite/24_iterators/operations/next.cc
! 3ef2edea0253d6adf52603cecb5e5aca  libstdc++-v3/testsuite/24_iterators/operations/prev.cc
! 84e467effb660562830b9c99a2e9d865  libstdc++-v3/testsuite/24_iterators/operations/prev_neg.cc
! 9721b90cb80b41aff4b67d7b49c1b71c  libstdc++-v3/testsuite/24_iterators/ostream_iterator/70766.cc
! 5e0cbca60e2aae5348f2d9b891d13ed5  libstdc++-v3/testsuite/24_iterators/ostream_iterator/requirements/base_classes.cc
! 94e4509417b4b626bb52396aa8742a42  libstdc++-v3/testsuite/24_iterators/ostream_iterator/requirements/explicit_instantiation.cc
! a77abb2f404b3b11a52757781db27a7a  libstdc++-v3/testsuite/24_iterators/ostream_iterator/requirements/typedefs.cc
! a723eee96b82db8a2c433e1ad2dbb5f0  libstdc++-v3/testsuite/24_iterators/ostreambuf_iterator/2.cc
! 96e144747dfec6e720cd826b13542cf4  libstdc++-v3/testsuite/24_iterators/ostreambuf_iterator/requirements/base_classes.cc
! cc20df901f27d92d9168213176612e4e  libstdc++-v3/testsuite/24_iterators/ostreambuf_iterator/requirements/explicit_instantiation.cc
! 83ebc908cda509627d40318f2853490a  libstdc++-v3/testsuite/24_iterators/ostreambuf_iterator/requirements/typedefs.cc
! c5fa19c9265e0fe6a3ea3021fe2102c4  libstdc++-v3/testsuite/24_iterators/random_access_iterator/26020.cc
! 09036245f144ff4452f780492646cb67  libstdc++-v3/testsuite/24_iterators/random_access_iterator/string_vector_iterators.cc
! ed6ed0469a6a91adaf5f0b0bdccc67c1  libstdc++-v3/testsuite/24_iterators/range_access.cc
! a09e0d204a95bf6c4dbfda4eceb27aff  libstdc++-v3/testsuite/24_iterators/range_access_cpp14.cc
! e148b674686a331e0ff94e0c11056710  libstdc++-v3/testsuite/24_iterators/range_access_cpp17.cc
! 1920f04bb3a5d42603d33a8936d64a1d  libstdc++-v3/testsuite/24_iterators/range_access_cpp17_neg.cc
! be8a72e09987379c7110b55636de0aec  libstdc++-v3/testsuite/24_iterators/reverse_iterator/11729.cc
! db84798823b8bfb7758384aae297f485  libstdc++-v3/testsuite/24_iterators/reverse_iterator/2.cc
! 2323b24b5a103e54544aeffd07c12eed  libstdc++-v3/testsuite/24_iterators/reverse_iterator/3.cc
! ec81823d1a1fc90cfa932d832549c221  libstdc++-v3/testsuite/24_iterators/reverse_iterator/71771.cc
! d4a08868e384a11aacb809aceea52ab0  libstdc++-v3/testsuite/24_iterators/reverse_iterator/greedy_ops.cc
! 978fea296691e383ac9df072416e17c3  libstdc++-v3/testsuite/24_iterators/reverse_iterator/make.cc
! b8e3829fd07a35257d30f041163e6040  libstdc++-v3/testsuite/24_iterators/reverse_iterator/requirements/base_classes.cc
! 28bcac4f5f2f668abbdd4dab975efaf5  libstdc++-v3/testsuite/24_iterators/reverse_iterator/requirements/current.cc
! e7e20f190fe2dbd844fa08fa18e0da19  libstdc++-v3/testsuite/24_iterators/reverse_iterator/requirements/explicit_instantiation.cc
! 1e96fa0075367549526378a119f3025c  libstdc++-v3/testsuite/24_iterators/reverse_iterator/requirements/typedefs.cc
! 87476f8a424297f98f070031f9d274c4  libstdc++-v3/testsuite/25_algorithms/adjacent_find/1.cc
! aa1425f4f17c7820e88fa3ea1a04442d  libstdc++-v3/testsuite/25_algorithms/adjacent_find/check_type.cc
! 1051c4bf7ef7a572b5609a66740594c4  libstdc++-v3/testsuite/25_algorithms/adjacent_find/requirements/explicit_instantiation/2.cc
! 94416cb2c76072a6226bd1813c16b246  libstdc++-v3/testsuite/25_algorithms/adjacent_find/requirements/explicit_instantiation/pod.cc
! 81f280f4eaeb2a53e0efc22141a98f2d  libstdc++-v3/testsuite/25_algorithms/adjacent_find/vectorbool.cc
! a9d2f3cd066f449cc7ef7f4bf846b1cf  libstdc++-v3/testsuite/25_algorithms/advance/istreambuf_iterators/char/1.cc
! e36245bb581d9e79cacb0a48d080e433  libstdc++-v3/testsuite/25_algorithms/advance/istreambuf_iterators/char/1_neg.cc
! fbd85ed4c6344b57dc7220ba0eee1751  libstdc++-v3/testsuite/25_algorithms/advance/istreambuf_iterators/char/2.cc
! 31eeccb39d3db8ddfe6e5c0e4d1a3f3f  libstdc++-v3/testsuite/25_algorithms/advance/istreambuf_iterators/char/2_neg.cc
! 904028b4be70e7c759c97787f3462397  libstdc++-v3/testsuite/25_algorithms/advance/istreambuf_iterators/char/3_neg.cc
! 4b358f80344a61878152ac3a3e7e2358  libstdc++-v3/testsuite/25_algorithms/advance/istreambuf_iterators/wchar_t/1.cc
! ced4337f45905b36062f808b060f4b98  libstdc++-v3/testsuite/25_algorithms/advance/istreambuf_iterators/wchar_t/1_neg.cc
! 4ea5aae34712911ea2ea37edd0045e83  libstdc++-v3/testsuite/25_algorithms/advance/istreambuf_iterators/wchar_t/2.cc
! b6a3d1f8f06275332201beb22feaf386  libstdc++-v3/testsuite/25_algorithms/advance/istreambuf_iterators/wchar_t/2_neg.cc
! 23c258ba263b326b858f1ff95dea6922  libstdc++-v3/testsuite/25_algorithms/advance/istreambuf_iterators/wchar_t/3_neg.cc
! 91df1ba3923e29567cec1477706b3fad  libstdc++-v3/testsuite/25_algorithms/all_of/1.cc
! f5fc274914cdc57ec0396f6d8ffdda8d  libstdc++-v3/testsuite/25_algorithms/all_of/check_type.cc
! 864e40d46ee710e3e32b9c902ea97a6e  libstdc++-v3/testsuite/25_algorithms/all_of/requirements/explicit_instantiation/2.cc
! 0ede667d69da10186bb40e6a042422f5  libstdc++-v3/testsuite/25_algorithms/all_of/requirements/explicit_instantiation/pod.cc
! 32466c555dbd7be16fad9266255e59bd  libstdc++-v3/testsuite/25_algorithms/any_of/1.cc
! 40686edeb5a4b50234816093b01b3173  libstdc++-v3/testsuite/25_algorithms/any_of/check_type.cc
! 4a8bd0b52917615dc6d4c9cabe2943f8  libstdc++-v3/testsuite/25_algorithms/any_of/requirements/explicit_instantiation/2.cc
! 3e9cb2732c1b4377faa727565db48e66  libstdc++-v3/testsuite/25_algorithms/any_of/requirements/explicit_instantiation/pod.cc
! 248ef7bdbe9f3ffc1ebeee1a973a4720  libstdc++-v3/testsuite/25_algorithms/binary_search/1.cc
! fd1c037119d176d1a4cd4961f2731ac2  libstdc++-v3/testsuite/25_algorithms/binary_search/2.cc
! df71763969f17b4d0c7053fd8888a7e5  libstdc++-v3/testsuite/25_algorithms/binary_search/check_type.cc
! d728c1af6bf76093f56ecd9b5f263f50  libstdc++-v3/testsuite/25_algorithms/binary_search/partitioned.cc
! c411141e6f962e6527393f668a380341  libstdc++-v3/testsuite/25_algorithms/binary_search/requirements/explicit_instantiation/2.cc
! e3324993785b20dfc40825f206f1d1fa  libstdc++-v3/testsuite/25_algorithms/binary_search/requirements/explicit_instantiation/pod.cc
! 04f944cd2ebcd6a11ce022b6072a7ff0  libstdc++-v3/testsuite/25_algorithms/clamp/1.cc
! 9385602910d24049231a67f0da2eef27  libstdc++-v3/testsuite/25_algorithms/clamp/2.cc
! a663751551861226ff2717280edaca20  libstdc++-v3/testsuite/25_algorithms/clamp/constexpr.cc
! 9221906805de81d0a9785379c52518ae  libstdc++-v3/testsuite/25_algorithms/clamp/requirements/explicit_instantiation/1.cc
! 0eb7882d3c38bf0935ee95744c61e8ee  libstdc++-v3/testsuite/25_algorithms/clamp/requirements/explicit_instantiation/pod.cc
! e6e9b1c9c51895b7643569ae0f173f9c  libstdc++-v3/testsuite/25_algorithms/copy/1.cc
! b7f019801d83224b59ffd903c76d64ad  libstdc++-v3/testsuite/25_algorithms/copy/2.cc
! ebcb4bba2355abd8d9677eb44f58a428  libstdc++-v3/testsuite/25_algorithms/copy/3.cc
! 979d5d120ee99b464e26c1d818a71dc0  libstdc++-v3/testsuite/25_algorithms/copy/34595.cc
! d17a548a24d44aa785c71d89019ba157  libstdc++-v3/testsuite/25_algorithms/copy/4.cc
! 50aaa11219dd9b390041bf2698d70155  libstdc++-v3/testsuite/25_algorithms/copy/58982.cc
  a4e3b919e921272cb082f7fa810f39d2  libstdc++-v3/testsuite/25_algorithms/copy/deque_iterators/1.cc
! b4d9ddf37eac08effbdddb5ae31b00fe  libstdc++-v3/testsuite/25_algorithms/copy/move_iterators/1.cc
! 270951b1fb131342e3a98ff24cc0ae7e  libstdc++-v3/testsuite/25_algorithms/copy/move_iterators/69478.cc
! b886bf725044d0efdf215de019b91f23  libstdc++-v3/testsuite/25_algorithms/copy/requirements/explicit_instantiation/2.cc
! 437c53a29ac9d6092ca2c7a29b097b53  libstdc++-v3/testsuite/25_algorithms/copy/requirements/explicit_instantiation/pod.cc
! 0ece03b453ec2181980afe862d2278c1  libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/1.cc
! eeb5e4151fda6174819a643b1d81a467  libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/2.cc
! f58dc6fbd2213dc27b7d2b02790c2586  libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/3.cc
! 7aee8ec1b84777f279902047f8807441  libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/4.cc
! d11ffdd2e43fe0a59980af8dba5b8f00  libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/1.cc
! d49a595c429a5e655691482f08544cf6  libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/2.cc
! 6c73b8b217fe7b867954ba5599785104  libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/3.cc
! 7eb7e528151111f0080c25fbfecbde93  libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/4.cc
  da1fb78d5a3cd469ddf537052865be96  libstdc++-v3/testsuite/25_algorithms/copy_backward/deque_iterators/1.cc
! ff7fcf770c4d1a36db68eead35eaf592  libstdc++-v3/testsuite/25_algorithms/copy_backward/move_iterators/1.cc
! 2ad1d005ec535dfea690a68bca344215  libstdc++-v3/testsuite/25_algorithms/copy_backward/move_iterators/69478.cc
! b7787faa864658c9d44d376400bccb97  libstdc++-v3/testsuite/25_algorithms/copy_backward/requirements/explicit_instantiation/2.cc
! add953dcc3007eb38d3b80eaf7a9b446  libstdc++-v3/testsuite/25_algorithms/copy_backward/requirements/explicit_instantiation/pod.cc
! d825b4a76803ea7f1433d400d14b6367  libstdc++-v3/testsuite/25_algorithms/copy_if/check_type.cc
! 1567bf1147d41d41a71b971ae651f381  libstdc++-v3/testsuite/25_algorithms/copy_if/requirements/explicit_instantiation/2.cc
! a37a8d05c42441d650823ef4fc447f5a  libstdc++-v3/testsuite/25_algorithms/copy_if/requirements/explicit_instantiation/pod.cc
! 4f01a75c10ca85d9d9f267b7ddea3258  libstdc++-v3/testsuite/25_algorithms/copy_n/1.cc
! 4487f9f25cba29d9714a0cd5bf6faf55  libstdc++-v3/testsuite/25_algorithms/copy_n/2.cc
! 724dc99499d92779c9eaa31cac833bf9  libstdc++-v3/testsuite/25_algorithms/copy_n/3.cc
! a1016576ad62b31da3355625cb68b5e8  libstdc++-v3/testsuite/25_algorithms/copy_n/4.cc
! b85b7856921ff39274d499db3858b380  libstdc++-v3/testsuite/25_algorithms/copy_n/50119.cc
! b0c3899fae4db47d858ca3779bcfaa37  libstdc++-v3/testsuite/25_algorithms/copy_n/58982.cc
! 37da762f7169787d1d0db96a32afd193  libstdc++-v3/testsuite/25_algorithms/copy_n/move_iterators/1.cc
! 1e018b781e610ac4e1bc8ccb10143839  libstdc++-v3/testsuite/25_algorithms/copy_n/requirements/explicit_instantiation/2.cc
! 13e8c6d00d780c287202ff43d48f6516  libstdc++-v3/testsuite/25_algorithms/copy_n/requirements/explicit_instantiation/pod.cc
! 4dce948d979ed84b3736da96cddc4759  libstdc++-v3/testsuite/25_algorithms/count/1.cc
! c21f03111f93be89cac3663eaf689124  libstdc++-v3/testsuite/25_algorithms/count/check_type.cc
! c42927cd5bb35cee44c3afe171c05af1  libstdc++-v3/testsuite/25_algorithms/count/requirements/explicit_instantiation/2.cc
! c5278f5523f995d6c6c8df3d0d025537  libstdc++-v3/testsuite/25_algorithms/count/requirements/explicit_instantiation/pod.cc
! 798d1c027d32e56199c7049b59cacce4  libstdc++-v3/testsuite/25_algorithms/count_if/1.cc
! a453391387e7528be2bee8dc692af0d6  libstdc++-v3/testsuite/25_algorithms/count_if/check_type.cc
! 4ddb4405a13a22e321bfdf179ba851aa  libstdc++-v3/testsuite/25_algorithms/count_if/requirements/explicit_instantiation/2.cc
! eb8b9d033e319b2f657e2f00f1c9beb2  libstdc++-v3/testsuite/25_algorithms/count_if/requirements/explicit_instantiation/pod.cc
! 9bb661ac853bd580a0fcdec1e3c3f383  libstdc++-v3/testsuite/25_algorithms/equal/1.cc
! 43f91de0dd2d9fda6230c1a27d5509d2  libstdc++-v3/testsuite/25_algorithms/equal/2.cc
! 40d08c1f036d46a4787f7edc7de32c60  libstdc++-v3/testsuite/25_algorithms/equal/check_type.cc
! 85d4727bc0f3bde8901062c0353578b3  libstdc++-v3/testsuite/25_algorithms/equal/check_type2.cc
! 018cd83938ff85dc58e7b7b1780eb81b  libstdc++-v3/testsuite/25_algorithms/equal/no_operator_ne.cc
! 77c6b28ab54c36ec874eaa34e27def81  libstdc++-v3/testsuite/25_algorithms/equal/requirements/explicit_instantiation/2.cc
! 05c7b620e347ae394666f3b909d7348c  libstdc++-v3/testsuite/25_algorithms/equal/requirements/explicit_instantiation/pod.cc
! a9b1a341f84bf6ded3808e0b24d99b96  libstdc++-v3/testsuite/25_algorithms/equal_range/1.cc
! 94b92691e9c443afb594df4f3e13938d  libstdc++-v3/testsuite/25_algorithms/equal_range/2.cc
! 26d58b29a56feb26348aa09fc04d1063  libstdc++-v3/testsuite/25_algorithms/equal_range/check_type.cc
! 70f1c5c661a260c3be12ba8a470bb996  libstdc++-v3/testsuite/25_algorithms/equal_range/partitioned.cc
! fdd551c84a528e60335ad4b5dadb3787  libstdc++-v3/testsuite/25_algorithms/equal_range/requirements/explicit_instantiation/2.cc
! 9ec1859e5e9fed06791b2d38a41f9709  libstdc++-v3/testsuite/25_algorithms/equal_range/requirements/explicit_instantiation/pod.cc
! 5bb114b65173ad09afeb87e086f9e039  libstdc++-v3/testsuite/25_algorithms/fill/1.cc
! fc10e8c7e646651548f19cd29313cd5c  libstdc++-v3/testsuite/25_algorithms/fill/2.cc
! 2d18485b1438628449abee2129e13e81  libstdc++-v3/testsuite/25_algorithms/fill/3.cc
! a2bfdae32f716663954bb6fd2f77e0a9  libstdc++-v3/testsuite/25_algorithms/fill/35725.cc
! 4cf7042795f187c8535b710b563aa840  libstdc++-v3/testsuite/25_algorithms/fill/4.cc
! 4b9632baa991bb3afbf9979ac8499f16  libstdc++-v3/testsuite/25_algorithms/fill/requirements/explicit_instantiation/2.cc
! e9b2165af39b0e84c7e64132b09fdf59  libstdc++-v3/testsuite/25_algorithms/fill/requirements/explicit_instantiation/pod.cc
! c78b193f422ab9595680f689e8bf6770  libstdc++-v3/testsuite/25_algorithms/fill_n/1.cc
! 422d6754664e485d94e5e33d058a189b  libstdc++-v3/testsuite/25_algorithms/fill_n/25306.cc
! bcbf4393d8b9906c39bd5fb91eff035f  libstdc++-v3/testsuite/25_algorithms/fill_n/35725.cc
! 77c6b28ab54c36ec874eaa34e27def81  libstdc++-v3/testsuite/25_algorithms/fill_n/requirements/explicit_instantiation/2.cc
! 05c7b620e347ae394666f3b909d7348c  libstdc++-v3/testsuite/25_algorithms/fill_n/requirements/explicit_instantiation/pod.cc
! 6da67a2681dc45b8b064bc472138822b  libstdc++-v3/testsuite/25_algorithms/find/1.cc
! 1d36aa860b260a18cef52db63a75d92a  libstdc++-v3/testsuite/25_algorithms/find/17441.cc
! 8e29780f25d2ce1a7321f789466e9e6a  libstdc++-v3/testsuite/25_algorithms/find/39546.cc
! ed8b45156d58c50c23905b65ea76b1c3  libstdc++-v3/testsuite/25_algorithms/find/check_type.cc
! a5b1b02193edff8f8bd72f900b653331  libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/char/1.cc
! cccdca3ffc57047a58ad235aed6a0773  libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/char/2.cc
! 1048d4fea2a2cba69444994968d55855  libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/wchar_t/1.cc
! d61eec7efc53b9be4914bd8e3b24afa1  libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/wchar_t/2.cc
! 9c0c3c7fc29d8b09c0dc75c4ef6dc78b  libstdc++-v3/testsuite/25_algorithms/find/requirements/explicit_instantiation/2.cc
! 28ec77b2c694043cf82442f1d2ed38d5  libstdc++-v3/testsuite/25_algorithms/find/requirements/explicit_instantiation/pod.cc
! 7db962fb6006c5032845a534b689a755  libstdc++-v3/testsuite/25_algorithms/find/vectorbool.cc
! e8d52a6ea88da272190778a2f29ed8ed  libstdc++-v3/testsuite/25_algorithms/find_end/1.cc
! e963dc132c66ab3e556c4aaaed7816a6  libstdc++-v3/testsuite/25_algorithms/find_end/check_type.cc
! 6b2ad43c4d76873a0bb9dbb3a3d790e1  libstdc++-v3/testsuite/25_algorithms/find_end/requirements/explicit_instantiation/2.cc
! 09bdbf5ff50d20f4d347439114231ac2  libstdc++-v3/testsuite/25_algorithms/find_end/requirements/explicit_instantiation/pod.cc
! 16e0724fa1ad86a851c670055062f5ce  libstdc++-v3/testsuite/25_algorithms/find_end/vectorbool.cc
! 324dc02166395ecc478aa6a4793382fc  libstdc++-v3/testsuite/25_algorithms/find_first_of/1.cc
! 99cd97f5899cba1a461ef0f6f4254d51  libstdc++-v3/testsuite/25_algorithms/find_first_of/check_type.cc
! 13e56427b749dad98c4b6c3ef6682b59  libstdc++-v3/testsuite/25_algorithms/find_first_of/concept_check_1.cc
! 0a4f77183ff13bfb09c5116d567d9749  libstdc++-v3/testsuite/25_algorithms/find_first_of/requirements/explicit_instantiation/2.cc
! 137eb8fff921b1b0ba9027f7d79698fd  libstdc++-v3/testsuite/25_algorithms/find_first_of/requirements/explicit_instantiation/pod.cc
! a9c7caf530e441aeb5f154b7bfc1544f  libstdc++-v3/testsuite/25_algorithms/find_first_of/vectorbool.cc
! d6b548f2603093fc36cd3c9df540b9c0  libstdc++-v3/testsuite/25_algorithms/find_if/1.cc
! 4909f5ddc5d9d8fb6a5ac452a4ae7999  libstdc++-v3/testsuite/25_algorithms/find_if/check_type.cc
! f69218a2fd6b6d3b280b2cd261f36298  libstdc++-v3/testsuite/25_algorithms/find_if/requirements/explicit_instantiation/2.cc
! 64daff9403a947c79c9fbb9c6ee68eb4  libstdc++-v3/testsuite/25_algorithms/find_if/requirements/explicit_instantiation/pod.cc
! 7db962fb6006c5032845a534b689a755  libstdc++-v3/testsuite/25_algorithms/find_if/vectorbool.cc
! 2d9f1efbce15893ebdae584bb4b2b53e  libstdc++-v3/testsuite/25_algorithms/find_if_not/1.cc
! c920642fdb6c24c67363997dc6709be4  libstdc++-v3/testsuite/25_algorithms/find_if_not/check_type.cc
! b905861bdd262b6953ff910a362d704c  libstdc++-v3/testsuite/25_algorithms/find_if_not/requirements/explicit_instantiation/2.cc
! a44eeea065b98ebd3d11fb9574528c5b  libstdc++-v3/testsuite/25_algorithms/find_if_not/requirements/explicit_instantiation/pod.cc
! a341a0a47340796d677d726debac50f5  libstdc++-v3/testsuite/25_algorithms/find_if_not/vectorbool.cc
! b1cc6864fe6f4120854608c48b0971f1  libstdc++-v3/testsuite/25_algorithms/for_each/1.cc
! 1a2b4a8cc3f78ce43c7c1472cb14ac8e  libstdc++-v3/testsuite/25_algorithms/for_each/requirements/explicit_instantiation/2.cc
! 198a9d83e530912156821585d129d6d1  libstdc++-v3/testsuite/25_algorithms/for_each/requirements/explicit_instantiation/pod.cc
! a6ec34bf2748ff820edc73617471fbce  libstdc++-v3/testsuite/25_algorithms/generate/requirements/explicit_instantiation/2.cc
! 4f333359c00120debde65468bb86ff35  libstdc++-v3/testsuite/25_algorithms/generate/requirements/explicit_instantiation/pod.cc
! 8f74de7120e997ef1c30e6e7da19f700  libstdc++-v3/testsuite/25_algorithms/generate_n/1.cc
! 821029894086717cb125b2e7bced7754  libstdc++-v3/testsuite/25_algorithms/generate_n/25306.cc
! 5837019ff4019ccbdfd291b80a1f173e  libstdc++-v3/testsuite/25_algorithms/generate_n/requirements/explicit_instantiation/2.cc
! f7ee495c627ff9c6a3ecf9ed0ffb6de9  libstdc++-v3/testsuite/25_algorithms/generate_n/requirements/explicit_instantiation/pod.cc
! 0d70fc09a944807435e27cb406a5dc4d  libstdc++-v3/testsuite/25_algorithms/headers/algorithm/algorithm_parallel_mode.cc
! 530d0f7278a5ef7f1af14df039c58b5b  libstdc++-v3/testsuite/25_algorithms/headers/algorithm/parallel_algorithm.cc
! a7edc48e3ff53758fe5c7a95247bdfbf  libstdc++-v3/testsuite/25_algorithms/headers/algorithm/parallel_algorithm_assert.cc
! 5b067c5c0a257e56ce36505514626049  libstdc++-v3/testsuite/25_algorithms/headers/algorithm/parallel_algorithm_assert2.cc
! d2775402601fdad15e41a41fa19f36b2  libstdc++-v3/testsuite/25_algorithms/headers/algorithm/parallel_algorithm_mixed1.cc
! 4b12b577f0cea7eaba14232363e4b8e1  libstdc++-v3/testsuite/25_algorithms/headers/algorithm/parallel_algorithm_mixed2.cc
! 0e7d4d9515313d8b6166781baf8f0d57  libstdc++-v3/testsuite/25_algorithms/headers/algorithm/synopsis.cc
! 0a75c3f286c2b72014fe28d3cf3ef7da  libstdc++-v3/testsuite/25_algorithms/headers/cstdlib/functions_std.cc
! eb2f01891ecdd055cea7b743d3b06484  libstdc++-v3/testsuite/25_algorithms/heap/1.cc
! 2df80a174cf9178596d5fc0dce4c034a  libstdc++-v3/testsuite/25_algorithms/heap/moveable.cc
! 0f39b6d32462b0d0ca6465aefcd3d2ec  libstdc++-v3/testsuite/25_algorithms/heap/moveable2.cc
! e21f185731243b8b922372932ef477e4  libstdc++-v3/testsuite/25_algorithms/heap/vectorbool.cc
! 68e4605268919505faf7ba74a1a826dd  libstdc++-v3/testsuite/25_algorithms/includes/1.cc
! a66f204e10a24ae2f70575e3c751b326  libstdc++-v3/testsuite/25_algorithms/includes/check_type.cc
! a1997548a54de2020ba68b8c08729b06  libstdc++-v3/testsuite/25_algorithms/includes/requirements/explicit_instantiation/2.cc
! fad6fed5df931cdefe8846066857e001  libstdc++-v3/testsuite/25_algorithms/includes/requirements/explicit_instantiation/pod.cc
! 0ce3feeebc9c4694cc0c77ecdbcf2765  libstdc++-v3/testsuite/25_algorithms/inplace_merge/1.cc
! 628ba664e9fc2dfb38f0809c5ab91230  libstdc++-v3/testsuite/25_algorithms/inplace_merge/49559.cc
! d8aa00ff9c50afc1c8d47eef93f71b4d  libstdc++-v3/testsuite/25_algorithms/inplace_merge/check_type.cc
! 59671b15daa10cfd309c07b5b4c44458  libstdc++-v3/testsuite/25_algorithms/inplace_merge/moveable.cc
! 1d74aa2666d2ac231c7efaf2f086b75d  libstdc++-v3/testsuite/25_algorithms/inplace_merge/moveable2.cc
! 0c1bc3008a30fdc3e633e390f76a798c  libstdc++-v3/testsuite/25_algorithms/inplace_merge/requirements/explicit_instantiation/2.cc
! 803c4ee7b68dc0bfb49d83717bf885a0  libstdc++-v3/testsuite/25_algorithms/inplace_merge/requirements/explicit_instantiation/pod.cc
! 8f1bffa9bcb6ce2ca7cadce51a2657c6  libstdc++-v3/testsuite/25_algorithms/is_heap/1.cc
! 4f339f5f9ed09fd5b957b9ec0d1f45b4  libstdc++-v3/testsuite/25_algorithms/is_heap/requirements/explicit_instantiation/2.cc
! 6e0fe35a4c59eb70a7796d6c503a4a4c  libstdc++-v3/testsuite/25_algorithms/is_heap/requirements/explicit_instantiation/pod.cc
! 432537567cca9b1903eccb226596665d  libstdc++-v3/testsuite/25_algorithms/is_heap_until/1.cc
! 51c3a4e52acd9e0c2da9ad2cf03396d2  libstdc++-v3/testsuite/25_algorithms/is_heap_until/requirements/explicit_instantiation/2.cc
! f9ec1eff5b70280664c6f7ad4259ac4c  libstdc++-v3/testsuite/25_algorithms/is_heap_until/requirements/explicit_instantiation/pod.cc
! 02526b6a80f9a39cc3e3d4489806c433  libstdc++-v3/testsuite/25_algorithms/is_partitioned/1.cc
! 33007ae8fc8331a3ff41a36bebee178c  libstdc++-v3/testsuite/25_algorithms/is_partitioned/2.cc
! 0fe3dc2be77478cdee8875caa5811cd2  libstdc++-v3/testsuite/25_algorithms/is_partitioned/check_type.cc
! 5d65c500b20243ebb42254016db8acbd  libstdc++-v3/testsuite/25_algorithms/is_partitioned/requirements/explicit_instantiation/2.cc
! 74639025c70c3de6991d39851ddd5b4b  libstdc++-v3/testsuite/25_algorithms/is_partitioned/requirements/explicit_instantiation/pod.cc
! 2876f04789054cf3569e370c0aae853a  libstdc++-v3/testsuite/25_algorithms/is_permutation/1.cc
! 2c363b483ed76844eb8f2dc17283fd83  libstdc++-v3/testsuite/25_algorithms/is_permutation/2.cc
! 61a76044db55c7b7ca715202d1758bc1  libstdc++-v3/testsuite/25_algorithms/is_permutation/64646.cc
! 7da474b9b04f9911c4741416b8e98eb7  libstdc++-v3/testsuite/25_algorithms/is_permutation/check_type.cc
! 616130185cf60578cee143c4a832aa19  libstdc++-v3/testsuite/25_algorithms/is_permutation/check_type2.cc
! c6654bc140d3840aa8c5e42b7162c4ef  libstdc++-v3/testsuite/25_algorithms/is_permutation/requirements/explicit_instantiation/2.cc
! 2a2182b9b154e59cde3481b933e3cade  libstdc++-v3/testsuite/25_algorithms/is_permutation/requirements/explicit_instantiation/pod.cc
! 690d1a28a9dd186c264def116eac8a8a  libstdc++-v3/testsuite/25_algorithms/is_permutation/vectorbool.cc
! 6799a79bc25bb226ab0803abd92c062c  libstdc++-v3/testsuite/25_algorithms/is_sorted/1.cc
! 41a2563dc20eed9a559aa50b4455a76e  libstdc++-v3/testsuite/25_algorithms/is_sorted/requirements/explicit_instantiation/2.cc
! 613217c9bdbcc18d6f7eaa71e8ef5882  libstdc++-v3/testsuite/25_algorithms/is_sorted/requirements/explicit_instantiation/pod.cc
! 58a756c8833b6ff1006c9efd74085975  libstdc++-v3/testsuite/25_algorithms/is_sorted_until/1.cc
! d9742109e6da6241b69e712c5bb50f03  libstdc++-v3/testsuite/25_algorithms/is_sorted_until/requirements/explicit_instantiation/2.cc
! 516721ccae1b9c244ab5249890294f2f  libstdc++-v3/testsuite/25_algorithms/is_sorted_until/requirements/explicit_instantiation/pod.cc
! 9158dafafe6a06039c230d717965e852  libstdc++-v3/testsuite/25_algorithms/iter_swap/20577.cc
! 052152dfb490f21492f5c9abd4c0a603  libstdc++-v3/testsuite/25_algorithms/iter_swap/requirements/explicit_instantiation/2.cc
! f5ee82601c15fc186d869cb0bf84f159  libstdc++-v3/testsuite/25_algorithms/iter_swap/requirements/explicit_instantiation/pod.cc
! 824cd9978ca5ee47815a574f496e7e25  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/1.cc
! 0c9baaa1b7a752f55c27c5317b4e464d  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/71545.cc
! d00be6cd341f04d73eea49ef509aad3c  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/check_type.cc
! 38a95d0b292b93086ed1f0504f25919f  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/requirements/explicit_instantiation/2.cc
! 8a48b18726015e99c4dbaedd6552b68a  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/requirements/explicit_instantiation/pod.cc
! 0bcaa8e575f4e25a574f731a94b6d4c7  libstdc++-v3/testsuite/25_algorithms/lower_bound/1.cc
! a678fc9852992774c7da6567d3a77569  libstdc++-v3/testsuite/25_algorithms/lower_bound/2.cc
! 9ab856e6c85aacbb99c9014eec950728  libstdc++-v3/testsuite/25_algorithms/lower_bound/33613.cc
! aa24a35764cb8c1c1d8d1986da74c5ce  libstdc++-v3/testsuite/25_algorithms/lower_bound/check_type.cc
! 680eab5ad5a57672d0bf4efab895ee87  libstdc++-v3/testsuite/25_algorithms/lower_bound/debug/irreflexive.cc
! 9dc7956c17d84805ee2f1cd07066253e  libstdc++-v3/testsuite/25_algorithms/lower_bound/no_operator_ne.cc
! 1ec00a9e7e41fcfe293c523745c0ba1b  libstdc++-v3/testsuite/25_algorithms/lower_bound/partitioned.cc
! 3ff7845227bb31d516a7f8de00db31b8  libstdc++-v3/testsuite/25_algorithms/lower_bound/requirements/explicit_instantiation/2.cc
! 82c72d88590146e9f8465d5215ace271  libstdc++-v3/testsuite/25_algorithms/lower_bound/requirements/explicit_instantiation/pod.cc
! 72d2b06307dea413f040323de98ae627  libstdc++-v3/testsuite/25_algorithms/make_heap/80064.cc
! c712edab6e759b4c09c08bf2ff38f17d  libstdc++-v3/testsuite/25_algorithms/make_heap/complexity.cc
! cd54aeb6fe8e836e6d6e4b3c033f262c  libstdc++-v3/testsuite/25_algorithms/make_heap/movable.cc
! a2d528d22fbe53793dcf0d067fc5bf8a  libstdc++-v3/testsuite/25_algorithms/make_heap/requirements/explicit_instantiation/2.cc
! 0bb36ace30cb62d25cf032903c0e0e8a  libstdc++-v3/testsuite/25_algorithms/make_heap/requirements/explicit_instantiation/pod.cc
! 1061258d47d43c84e5336419bfe19cea  libstdc++-v3/testsuite/25_algorithms/max/1.cc
! 8c8e3647e0be7099bbc162c79d54f349  libstdc++-v3/testsuite/25_algorithms/max/2.cc
! 141c5082218766d90a01e7428f17caba  libstdc++-v3/testsuite/25_algorithms/max/3.cc
! 2d0de0809bb8d3abdd34869f501f4504  libstdc++-v3/testsuite/25_algorithms/max/37547.cc
! 31f0a1e25e630f71512df04272046eed  libstdc++-v3/testsuite/25_algorithms/max/4.cc
! 87b85f3f725dc5914b7f8b02a05a15e8  libstdc++-v3/testsuite/25_algorithms/max/constexpr.cc
! 9a9461dafd33da3599ab152bbf70636f  libstdc++-v3/testsuite/25_algorithms/max/requirements/explicit_instantiation/2.cc
! c750e19b44cc86fb856276b0b487ce96  libstdc++-v3/testsuite/25_algorithms/max/requirements/explicit_instantiation/3.cc
! ca5c030649b38f251fd2fa4d5ec06fc5  libstdc++-v3/testsuite/25_algorithms/max/requirements/explicit_instantiation/pod.cc
! 3f4015fae1fe01d76519f9dbcbde3931  libstdc++-v3/testsuite/25_algorithms/max/requirements/explicit_instantiation/pod2.cc
! 955ec7e2970803eae51d75ec938bf8dc  libstdc++-v3/testsuite/25_algorithms/max_element/1.cc
! 1ea4a606d7a74f4963bce1da75f3e912  libstdc++-v3/testsuite/25_algorithms/max_element/check_type.cc
! 17762708435c8a49ad990197582ab311  libstdc++-v3/testsuite/25_algorithms/max_element/constexpr.cc
! 33dcfe22af673299ba495e315b9cb07f  libstdc++-v3/testsuite/25_algorithms/max_element/requirements/explicit_instantiation/2.cc
! f2899c831c5daf236d6eefc93430d85a  libstdc++-v3/testsuite/25_algorithms/max_element/requirements/explicit_instantiation/pod.cc
! 5e13062eeecc6db2be2eff3c9d8fe4e2  libstdc++-v3/testsuite/25_algorithms/merge/1.cc
! b4c7614e88cfe767259687bfac0cee24  libstdc++-v3/testsuite/25_algorithms/merge/check_type.cc
! d3ef025a81e2a6f87a6157aaf2c1ad37  libstdc++-v3/testsuite/25_algorithms/merge/requirements/explicit_instantiation/2.cc
! 9d15971e9e8f921aa688e049a7b7a0a5  libstdc++-v3/testsuite/25_algorithms/merge/requirements/explicit_instantiation/pod.cc
! e3f54bbc432a1052300d8460139b8be7  libstdc++-v3/testsuite/25_algorithms/min/1.cc
! 457181811c086da76d541bfc3f18e9c4  libstdc++-v3/testsuite/25_algorithms/min/2.cc
! 6de84acb2b956b6f9e8b40772c3fab5b  libstdc++-v3/testsuite/25_algorithms/min/3.cc
! 7094e1cb0418e9d26eab6dd985046689  libstdc++-v3/testsuite/25_algorithms/min/37547.cc
! 8e0aaaa250fbf17471234cd4e818d714  libstdc++-v3/testsuite/25_algorithms/min/4.cc
! 62b95050be0f924243aa6a576cacdd5e  libstdc++-v3/testsuite/25_algorithms/min/constexpr.cc
! 9d76523493786a9174d74c684b4a422c  libstdc++-v3/testsuite/25_algorithms/min/requirements/explicit_instantiation/2.cc
! cc28e6a94cf0db098c99641ba53341dc  libstdc++-v3/testsuite/25_algorithms/min/requirements/explicit_instantiation/3.cc
! de4c4ef2704d9a151bfbb3592e3a070d  libstdc++-v3/testsuite/25_algorithms/min/requirements/explicit_instantiation/pod.cc
! 66989cc9c675e7fe2c88efa396eeb8c9  libstdc++-v3/testsuite/25_algorithms/min/requirements/explicit_instantiation/pod2.cc
! 821c64d3f010b02246801f34afd3c910  libstdc++-v3/testsuite/25_algorithms/min_element/1.cc
! 322fa52c3a052b0dd73a07d69abe2435  libstdc++-v3/testsuite/25_algorithms/min_element/check_type.cc
! e06e80cc894b7d65edf1704654ceba75  libstdc++-v3/testsuite/25_algorithms/min_element/constexpr.cc
! 5eab066f9f83bbf3fca9fd954fdbe5c4  libstdc++-v3/testsuite/25_algorithms/min_element/requirements/explicit_instantiation/2.cc
! af440ffead13d3175fe68f5f7edf37a0  libstdc++-v3/testsuite/25_algorithms/min_element/requirements/explicit_instantiation/pod.cc
! cde689063cbcaf2f897bce3309250fe9  libstdc++-v3/testsuite/25_algorithms/minmax/1.cc
! 205f7c165307e11d97e1c7c8e15834a7  libstdc++-v3/testsuite/25_algorithms/minmax/2.cc
! 537fc3ac9d84091b44936170129274f8  libstdc++-v3/testsuite/25_algorithms/minmax/3.cc
! 9eb034859da06ee19ff62b41ac00a9e1  libstdc++-v3/testsuite/25_algorithms/minmax/37547.cc
! b8787c850c50a25014ce50f1a70c60ed  libstdc++-v3/testsuite/25_algorithms/minmax/constexpr.cc
! ee55e1ad39c2b4ee38447c13a4d18742  libstdc++-v3/testsuite/25_algorithms/minmax/requirements/explicit_instantiation/2.cc
! 7b7b757e009942fd6a88c408ca3c06f6  libstdc++-v3/testsuite/25_algorithms/minmax/requirements/explicit_instantiation/3.cc
! 20d3bb5362beccb3cb36990786eda3c6  libstdc++-v3/testsuite/25_algorithms/minmax/requirements/explicit_instantiation/pod.cc
! 8e674394c855d2aa16caf1353cade524  libstdc++-v3/testsuite/25_algorithms/minmax/requirements/explicit_instantiation/pod2.cc
! 4fc89dc88aafa0efe9d950e31f87fa1b  libstdc++-v3/testsuite/25_algorithms/minmax_element/1.cc
! 3183eecef00bb4d1b71453561a89dbe9  libstdc++-v3/testsuite/25_algorithms/minmax_element/check_type.cc
! c200409889527eed4a1e1692a057c420  libstdc++-v3/testsuite/25_algorithms/minmax_element/constexpr.cc
! 759145fe70b32b17d9e0c01b4c243966  libstdc++-v3/testsuite/25_algorithms/minmax_element/requirements/explicit_instantiation/2.cc
! 5a872597847f05dbe7cc324c2e62b26a  libstdc++-v3/testsuite/25_algorithms/minmax_element/requirements/explicit_instantiation/pod.cc
! a6e0da73b6bb6d896787b615d2c3e3c4  libstdc++-v3/testsuite/25_algorithms/mismatch/1.cc
! c1cece7a126e80f29a39dd3861ff66fe  libstdc++-v3/testsuite/25_algorithms/mismatch/2.cc
! 40af8f8c776af12a5888c1e93cd46503  libstdc++-v3/testsuite/25_algorithms/mismatch/check_type.cc
! d8480632d4e1792cf810c525eade31b0  libstdc++-v3/testsuite/25_algorithms/mismatch/check_type2.cc
! 74c26a764adf961653460f89160f627b  libstdc++-v3/testsuite/25_algorithms/move/1.cc
! a595187e49c3472a62b63655949fd522  libstdc++-v3/testsuite/25_algorithms/move/69478.cc
  c41fedc68e3cee79d652221a1c6b2c9a  libstdc++-v3/testsuite/25_algorithms/move/deque_iterators/1.cc
! 74be81ecdd03bc4d5417d3b14c22fe7e  libstdc++-v3/testsuite/25_algorithms/move/requirements/explicit_instantiation/2.cc
! cb822646ad2c04350624eb182f9aa4b2  libstdc++-v3/testsuite/25_algorithms/move/requirements/explicit_instantiation/pod.cc
! 6d1e5232cfc6e0cd98726cdabad0bb8d  libstdc++-v3/testsuite/25_algorithms/move_backward/1.cc
! 96bc8d8b9a0f266b6e9cb55cccacfb44  libstdc++-v3/testsuite/25_algorithms/move_backward/69478.cc
  d798b4d62b339492aca582244b60767f  libstdc++-v3/testsuite/25_algorithms/move_backward/deque_iterators/1.cc
! 80a75d4b985628a30862afd6e7dbd3bf  libstdc++-v3/testsuite/25_algorithms/move_backward/requirements/explicit_instantiation/2.cc
! 5399da4e2f41159814bc5684884ccdf7  libstdc++-v3/testsuite/25_algorithms/move_backward/requirements/explicit_instantiation/pod.cc
! c00ddf9de4f3abfa2a72a47b8b581ff4  libstdc++-v3/testsuite/25_algorithms/next_permutation/1.cc
! f18001d78dcd03498de992817d4ad893  libstdc++-v3/testsuite/25_algorithms/next_permutation/check_type.cc
! d63df590430489ea72ee69effea958e8  libstdc++-v3/testsuite/25_algorithms/next_permutation/moveable.cc
! 9dad115ef2aae02de85090b2c122884a  libstdc++-v3/testsuite/25_algorithms/next_permutation/requirements/explicit_instantiation/2.cc
! 1e61de0535c88fac47567e83a3a24a87  libstdc++-v3/testsuite/25_algorithms/next_permutation/requirements/explicit_instantiation/pod.cc
! aa1a59e0110d037fa7ad3f3d369ce3b5  libstdc++-v3/testsuite/25_algorithms/none_of/1.cc
! 273276dc506b05515307deeafd6e4762  libstdc++-v3/testsuite/25_algorithms/none_of/check_type.cc
! 5a2c730088114ad1be6def4fa5a6d573  libstdc++-v3/testsuite/25_algorithms/none_of/requirements/explicit_instantiation/2.cc
! f41fa99acdd77febd4ed38c66cc12418  libstdc++-v3/testsuite/25_algorithms/none_of/requirements/explicit_instantiation/pod.cc
! 7da004e236b16fb1cbc59bfcbb2e1634  libstdc++-v3/testsuite/25_algorithms/nth_element/1.cc
! 8df2724f554aaae303470a89045eb2e2  libstdc++-v3/testsuite/25_algorithms/nth_element/2.cc
! 9783009c1eb44163ecb5f7501736c8a4  libstdc++-v3/testsuite/25_algorithms/nth_element/3.cc
! 08c4957cee8f17bcc125206d7a74968f  libstdc++-v3/testsuite/25_algorithms/nth_element/58800.cc
! 973040f208a2410a14c385ea7b78126b  libstdc++-v3/testsuite/25_algorithms/nth_element/check_type.cc
! d0ae0c9a028573b285ddd5575f83e7bc  libstdc++-v3/testsuite/25_algorithms/nth_element/moveable.cc
! b1786918fdda04d43a08a9d111465b48  libstdc++-v3/testsuite/25_algorithms/nth_element/random_test.cc
! 33ae5b0b61ac5e018b0429748e6a240d  libstdc++-v3/testsuite/25_algorithms/nth_element/requirements/explicit_instantiation/2.cc
! b2b4b47e92c9a0eafbde27d1f9839a18  libstdc++-v3/testsuite/25_algorithms/nth_element/requirements/explicit_instantiation/pod.cc
! 0a95e5d97a81f807c3456008587efacf  libstdc++-v3/testsuite/25_algorithms/partial_sort/1.cc
! 4ba3601993a7a9d0439e31e4edc39357  libstdc++-v3/testsuite/25_algorithms/partial_sort/2.cc
! 7fe2d27c05edfb87262664540f1580fa  libstdc++-v3/testsuite/25_algorithms/partial_sort/check_compare_by_value.cc
! 463c128d58a8071a83fb4400a6ba9675  libstdc++-v3/testsuite/25_algorithms/partial_sort/check_type.cc
! d8534dcd2d64fb3172f042cb120f9e6b  libstdc++-v3/testsuite/25_algorithms/partial_sort/moveable.cc
! a0829ba0fb06fd8b40519d449f036478  libstdc++-v3/testsuite/25_algorithms/partial_sort/random_test.cc
! 36c5d68782bbd8a7f63b302e64b36e2d  libstdc++-v3/testsuite/25_algorithms/partial_sort/requirements/explicit_instantiation/2.cc
! 18e627fec7bd4c141f708a9bb83aa861  libstdc++-v3/testsuite/25_algorithms/partial_sort/requirements/explicit_instantiation/pod.cc
! 4332329382dd85b1949f7a63c9b2fd72  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/1.cc
! 3930bade2f1e14f8706fc64cff8d3c06  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/2.cc
! 2e0c58f40388c1c16b908379ad9c6573  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/check_type.cc
! 1ba50031e62919eccc9cfde6c7722dc0  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/debug/irreflexive_neg.cc
! 958529aabc1da714edc0bff8fa5c4f45  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/random_test.cc
! 321d186c4a99c7411f7e9b52afc1ab12  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/requirements/explicit_instantiation/2.cc
! b502e7eb150e842ec770cdcea1b0ad4a  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/requirements/explicit_instantiation/pod.cc
! 57348a3d78b11dd782efabb066421282  libstdc++-v3/testsuite/25_algorithms/partition/1.cc
! 17b843d75652a48be5a6ea3e78f34a8c  libstdc++-v3/testsuite/25_algorithms/partition/moveable.cc
! 2bb978eb120aa1313930c9af3cfc2de0  libstdc++-v3/testsuite/25_algorithms/partition/requirements/explicit_instantiation/2.cc
! 607d593e962b2f0ab3ab7e6d4512d1dd  libstdc++-v3/testsuite/25_algorithms/partition/requirements/explicit_instantiation/pod.cc
! 2b8e012d8b6ba8425f31ef4855045db5  libstdc++-v3/testsuite/25_algorithms/partition_copy/1.cc
! 3986d14bde0c0631fd68bf5eaedfecf1  libstdc++-v3/testsuite/25_algorithms/partition_copy/check_type.cc
! dc9971cc11a32b4a9c885ff3b47086c5  libstdc++-v3/testsuite/25_algorithms/partition_copy/requirements/explicit_instantiation/2.cc
! da8004b06f32ab0a45c9a2a82ddb4a18  libstdc++-v3/testsuite/25_algorithms/partition_copy/requirements/explicit_instantiation/pod.cc
! 6354f405dba22d00f89cfafdfce61446  libstdc++-v3/testsuite/25_algorithms/partition_point/1.cc
! 9b316f1d8f911b7a21f82a507993cb70  libstdc++-v3/testsuite/25_algorithms/partition_point/check_type.cc
! bb04451f5734f9f11f63d6f791c7c870  libstdc++-v3/testsuite/25_algorithms/partition_point/requirements/explicit_instantiation/2.cc
! c9080e33e91ff3bea5649a92135d0787  libstdc++-v3/testsuite/25_algorithms/partition_point/requirements/explicit_instantiation/pod.cc
! a7b612e2ba329606dd2e52a1970f9bd0  libstdc++-v3/testsuite/25_algorithms/pop_heap/57010.cc
! d469a25d3c227facb580898428279ace  libstdc++-v3/testsuite/25_algorithms/pop_heap/complexity.cc
! 365b5c21027dd753220d93cec539348c  libstdc++-v3/testsuite/25_algorithms/pop_heap/empty2_neg.cc
! d9d1629a7c75dc2212d95fd30e72480e  libstdc++-v3/testsuite/25_algorithms/pop_heap/empty_neg.cc
! 3d4a4136f5583d1f17036dd9a9a6bc9d  libstdc++-v3/testsuite/25_algorithms/pop_heap/requirements/explicit_instantiation/2.cc
! 00ae004d95c0665d2c706bbc8b06ec3c  libstdc++-v3/testsuite/25_algorithms/pop_heap/requirements/explicit_instantiation/pod.cc
! d90940ac3e85adb8290e25bb14e3f21c  libstdc++-v3/testsuite/25_algorithms/prev_permutation/1.cc
! 752822249cfecbb444fbe45385bd91bd  libstdc++-v3/testsuite/25_algorithms/prev_permutation/check_type.cc
! 53ae87cc82b47eecf6a323f1c935eb1d  libstdc++-v3/testsuite/25_algorithms/prev_permutation/moveable.cc
! c85dd6f07eb9fc9fc6a829ae11fb1e42  libstdc++-v3/testsuite/25_algorithms/prev_permutation/requirements/explicit_instantiation/2.cc
! 2ecbe58ffc6c92e88ca1a9ca0f006cb9  libstdc++-v3/testsuite/25_algorithms/prev_permutation/requirements/explicit_instantiation/pod.cc
! 23557ee0b73ebeadfb059220a75a9349  libstdc++-v3/testsuite/25_algorithms/push_heap/complexity.cc
! 7ddee52ee8c0a304373e9e5b2126916c  libstdc++-v3/testsuite/25_algorithms/push_heap/requirements/explicit_instantiation/2.cc
! d0b57cf60521bf60c75a4e9312e2764f  libstdc++-v3/testsuite/25_algorithms/push_heap/requirements/explicit_instantiation/pod.cc
! 918774193dacb33d7ee117e42f44a6db  libstdc++-v3/testsuite/25_algorithms/random_shuffle/1.cc
! e7fa6d0bce780045e28d435f46d94b68  libstdc++-v3/testsuite/25_algorithms/random_shuffle/59603.cc
! 397ee61802057b222aa611c04fe91780  libstdc++-v3/testsuite/25_algorithms/random_shuffle/moveable.cc
! 2e504cff1b28882e4aac85ccd8c4a69d  libstdc++-v3/testsuite/25_algorithms/random_shuffle/requirements/explicit_instantiation/2.cc
! a7059cfd46eaa021a0840cff777232a2  libstdc++-v3/testsuite/25_algorithms/random_shuffle/requirements/explicit_instantiation/pod.cc
! 6ff94a24008056d6416ae9a225524563  libstdc++-v3/testsuite/25_algorithms/remove/1.cc
! 4a00aa716ba5d597d2c591e4e99deec1  libstdc++-v3/testsuite/25_algorithms/remove/check_type.cc
! c9ed0bbfc210574a0b26b02ab31a1bc8  libstdc++-v3/testsuite/25_algorithms/remove/moveable.cc
! ab0da20ecbb543837651270323ab3e96  libstdc++-v3/testsuite/25_algorithms/remove/requirements/explicit_instantiation/2.cc
! 330c86bcbb599029f3c0461917fec650  libstdc++-v3/testsuite/25_algorithms/remove/requirements/explicit_instantiation/pod.cc
! 88e8180879002ea462c70213aad0dff4  libstdc++-v3/testsuite/25_algorithms/remove_copy/requirements/explicit_instantiation/2.cc
! 965b940dadc1a51f8634587545b3f4b1  libstdc++-v3/testsuite/25_algorithms/remove_copy/requirements/explicit_instantiation/pod.cc
! 9977b186525791f940c71308c5bb6ffc  libstdc++-v3/testsuite/25_algorithms/remove_copy_if/check_type.cc
! 44b11b77ada2b863cda29026df818cf9  libstdc++-v3/testsuite/25_algorithms/remove_copy_if/requirements/explicit_instantiation/2.cc
! 4cac58c443d441ee6be9101215af4ec8  libstdc++-v3/testsuite/25_algorithms/remove_copy_if/requirements/explicit_instantiation/pod.cc
! 2ed797602027b00083e6bef4e2e1aeba  libstdc++-v3/testsuite/25_algorithms/remove_if/1.cc
! cb36656acd18cfefbdd695edb9461f5b  libstdc++-v3/testsuite/25_algorithms/remove_if/check_type.cc
! 79fd87b019f3b0fb1fe7fe29be4ddc4e  libstdc++-v3/testsuite/25_algorithms/remove_if/moveable.cc
! 836fd4179c67e7d87e0c9f19933ff074  libstdc++-v3/testsuite/25_algorithms/remove_if/requirements/explicit_instantiation/2.cc
! ca8208126cd55e927f60bde2f9e9d2f3  libstdc++-v3/testsuite/25_algorithms/remove_if/requirements/explicit_instantiation/pod.cc
! d993ad2239d1212be96f32def120070a  libstdc++-v3/testsuite/25_algorithms/replace/1.cc
! 9564a4b2bb3ac47ab4a8b69955cb4930  libstdc++-v3/testsuite/25_algorithms/replace/check_type.cc
! 0684c599c700a0adfc18211fa85b78eb  libstdc++-v3/testsuite/25_algorithms/replace/requirements/explicit_instantiation/2.cc
! c911151b8356341850354325e0e778c2  libstdc++-v3/testsuite/25_algorithms/replace/requirements/explicit_instantiation/pod.cc
! dd9c37cc46c68d6712e48d57b7737d0b  libstdc++-v3/testsuite/25_algorithms/replace_copy/1.cc
! 81616d5bd8d722295dafe7185fc43ac5  libstdc++-v3/testsuite/25_algorithms/replace_copy/check_type.cc
! a8c494c85d35284ae2c029473cf813a3  libstdc++-v3/testsuite/25_algorithms/replace_copy/requirements/explicit_instantiation/2.cc
! 3852832a0029d7146a00fced559b8a97  libstdc++-v3/testsuite/25_algorithms/replace_copy/requirements/explicit_instantiation/pod.cc
! 5a496953cad43f9ed4e0ac421e408e44  libstdc++-v3/testsuite/25_algorithms/replace_copy_if/1.cc
! 85fd496aeffdba742c5f4e5c43ecbcea  libstdc++-v3/testsuite/25_algorithms/replace_copy_if/check_type.cc
! 749257bf6c14fb91c4f111993f28c20f  libstdc++-v3/testsuite/25_algorithms/replace_copy_if/requirements/explicit_instantiation/2.cc
! 2bb4c19fc42f8d16054379290533912c  libstdc++-v3/testsuite/25_algorithms/replace_copy_if/requirements/explicit_instantiation/pod.cc
! 6c5a8e861a536116f91b158963854266  libstdc++-v3/testsuite/25_algorithms/replace_if/1.cc
! 8f79855724ac0cda1c22cfcc3b1aed6d  libstdc++-v3/testsuite/25_algorithms/replace_if/check_type.cc
! acdb8b5ab8522f9aff01f2b1dce938c9  libstdc++-v3/testsuite/25_algorithms/replace_if/requirements/explicit_instantiation/2.cc
! 933e51f5e301bcae11df4dbb348a7b03  libstdc++-v3/testsuite/25_algorithms/replace_if/requirements/explicit_instantiation/pod.cc
! 9a1d14f2970078460e3d2b2ad7f7f2a7  libstdc++-v3/testsuite/25_algorithms/reverse/moveable.cc
! f0917226e7ec139c004d654abd94ef0a  libstdc++-v3/testsuite/25_algorithms/reverse/requirements/explicit_instantiation/2.cc
! b920a608592a8cf2ef650965b17d3f5b  libstdc++-v3/testsuite/25_algorithms/reverse/requirements/explicit_instantiation/pod.cc
! 72d2f165d0a2e1ed06caa40cad7f2c6e  libstdc++-v3/testsuite/25_algorithms/reverse_copy/explicit_instantiation/2.cc
! 922f8a439b073e96903482293bba8df3  libstdc++-v3/testsuite/25_algorithms/reverse_copy/explicit_instantiation/pod.cc
! 9505fc6088d0430aaa1af29c4097c201  libstdc++-v3/testsuite/25_algorithms/rotate/1.cc
! 697ed9933266a68b36c33fddacb90a3a  libstdc++-v3/testsuite/25_algorithms/rotate/check_type.cc
! 192a7e0ce89641b52a48f6570612a98b  libstdc++-v3/testsuite/25_algorithms/rotate/dr488.cc
! 568bd668f9cadaf1f525c43b4540cdd6  libstdc++-v3/testsuite/25_algorithms/rotate/moveable.cc
! 4097b019473e0d9daf47b68ee416b0b6  libstdc++-v3/testsuite/25_algorithms/rotate/moveable2.cc
! 92895c5cdabb6133ab803c2982e3caa5  libstdc++-v3/testsuite/25_algorithms/rotate/requirements/explicit_instantiation/2.cc
! d268127bdbc2924813626ea8d8c1b2d6  libstdc++-v3/testsuite/25_algorithms/rotate/requirements/explicit_instantiation/pod.cc
! b2bbc408fa15a98f3068c009b16925de  libstdc++-v3/testsuite/25_algorithms/rotate/rotate.cc
! 2af36096eeeed0c7002984d325d057c5  libstdc++-v3/testsuite/25_algorithms/rotate_copy/requirements/explicit_instantiation/2.cc
! e4df83aea8c03e9ba90fa921bbfe8126  libstdc++-v3/testsuite/25_algorithms/rotate_copy/requirements/explicit_instantiation/pod.cc
! 92c0dafdb68aae0499e847fbce17cb9f  libstdc++-v3/testsuite/25_algorithms/sample/1.cc
! 0c38127cf294548aca47a2c07f92ae3d  libstdc++-v3/testsuite/25_algorithms/sample/2.cc
! 72d6068ac8bde4d471266f3321a085ae  libstdc++-v3/testsuite/25_algorithms/sample/81221.cc
! 0948b675f56394d36e612cdc75adc91d  libstdc++-v3/testsuite/25_algorithms/search/1.cc
! 47dd6761030e5526e4a41fb872367314  libstdc++-v3/testsuite/25_algorithms/search/78346.cc
! f30284500f9d2c5bdbc8bf61345cde64  libstdc++-v3/testsuite/25_algorithms/search/check_type.cc
! d1159bc196ff94d99194b229a0c99902  libstdc++-v3/testsuite/25_algorithms/search/requirements/explicit_instantiation/2.cc
! f97bb139920ee8af9ff22902081ea782  libstdc++-v3/testsuite/25_algorithms/search/requirements/explicit_instantiation/pod.cc
! 7dbbf1cfc3e5bc81f06ab257ef12f941  libstdc++-v3/testsuite/25_algorithms/search/searcher.cc
! c21f2e9bd93fdf45e9f20f7014f59d74  libstdc++-v3/testsuite/25_algorithms/search_n/11400.cc
! be2475c94dd139496a0d2157eedcbd98  libstdc++-v3/testsuite/25_algorithms/search_n/58358.cc
! 3f0f569c682e5b486555643e1cd6565b  libstdc++-v3/testsuite/25_algorithms/search_n/check_type.cc
! 2b0b0ae3b6f65f774c917d04bc395e1d  libstdc++-v3/testsuite/25_algorithms/search_n/iterator.cc
! f81da0d536608634b9cd4837f62a150a  libstdc++-v3/testsuite/25_algorithms/search_n/requirements/explicit_instantiation/2.cc
! 4d181b53b8e9e3da7920a9c1200e2b65  libstdc++-v3/testsuite/25_algorithms/search_n/requirements/explicit_instantiation/pod.cc
! 90e5e66f44ae0703a31d034c422730a5  libstdc++-v3/testsuite/25_algorithms/set_difference/1.cc
! 1cd910bfaed161a0758b9cac07120a2e  libstdc++-v3/testsuite/25_algorithms/set_difference/35541.cc
! a6e998c51d610859b818c24994b5f1f9  libstdc++-v3/testsuite/25_algorithms/set_difference/check_type.cc
! 9e9f5afc178217ee9a4640727e552519  libstdc++-v3/testsuite/25_algorithms/set_difference/requirements/explicit_instantiation/2.cc
! 13dab3c1e6eafc7f650f4b23419a5c39  libstdc++-v3/testsuite/25_algorithms/set_difference/requirements/explicit_instantiation/pod.cc
! c80ea4b7b0129e1e188530e373795ea8  libstdc++-v3/testsuite/25_algorithms/set_intersection/1.cc
! 5924e17769963bd271b676644ced6080  libstdc++-v3/testsuite/25_algorithms/set_intersection/34730.cc
! 12b8efc843ba319f30033fc119ae2c74  libstdc++-v3/testsuite/25_algorithms/set_intersection/check_type.cc
! 143366d1d0a1e541a5a377f4800751d5  libstdc++-v3/testsuite/25_algorithms/set_intersection/requirements/explicit_instantiation/2.cc
! d18ff021f544f7432924db1e6e9b495d  libstdc++-v3/testsuite/25_algorithms/set_intersection/requirements/explicit_instantiation/pod.cc
! 59b9c2372b380255c70891d9781ba39d  libstdc++-v3/testsuite/25_algorithms/set_symmetric_difference/1.cc
! 8075bc845210ea8c98ad9e6b1872919d  libstdc++-v3/testsuite/25_algorithms/set_symmetric_difference/check_type.cc
! d815599b40fc25bdee3c4432f6bce6c0  libstdc++-v3/testsuite/25_algorithms/set_symmetric_difference/requirements/explicit_instantiation/2.cc
! 8ae15ea9b1aeff506afc8ce331ac3d9b  libstdc++-v3/testsuite/25_algorithms/set_symmetric_difference/requirements/explicit_instantiation/pod.cc
! 5963385a837e29b04868b3cb6d12e450  libstdc++-v3/testsuite/25_algorithms/set_union/1.cc
! f62737bffa6cd2627eccd4094397ac69  libstdc++-v3/testsuite/25_algorithms/set_union/check_type.cc
! 5f8c8d58e47ab5299dbbb4333438b51c  libstdc++-v3/testsuite/25_algorithms/set_union/requirements/explicit_instantiation/2.cc
! d4e5f584991460787128deb768251d6a  libstdc++-v3/testsuite/25_algorithms/set_union/requirements/explicit_instantiation/pod.cc
! 771402db540b05ac386d54c7b844aefe  libstdc++-v3/testsuite/25_algorithms/shuffle/1.cc
! bf54363b9344b497d975ff19560add31  libstdc++-v3/testsuite/25_algorithms/shuffle/requirements/explicit_instantiation/2.cc
! 70ab64f88abc5f548f367491e2ef7696  libstdc++-v3/testsuite/25_algorithms/shuffle/requirements/explicit_instantiation/pod.cc
! e5838455d84ad1de9583612da763f554  libstdc++-v3/testsuite/25_algorithms/sort/1.cc
! 89aceedc9ea98e2cd5ce4835741fbd64  libstdc++-v3/testsuite/25_algorithms/sort/34095.cc
! cc70eb4a7c9e0a5a93297707707bd246  libstdc++-v3/testsuite/25_algorithms/sort/34636.cc
! aa94d52ecefdec81779edafcf98b5253  libstdc++-v3/testsuite/25_algorithms/sort/35588.cc
! 8c330402d37bd2335a29537e250c90b3  libstdc++-v3/testsuite/25_algorithms/sort/78991.cc
! efcf17b7366f0fa04870f6db3f98389f  libstdc++-v3/testsuite/25_algorithms/sort/check_compare_by_value.cc
! 8ab25302579a7e0cd60ce200c96fb5b5  libstdc++-v3/testsuite/25_algorithms/sort/moveable.cc
! 3310ac4342de6ed0bac4aad8b40b2bb9  libstdc++-v3/testsuite/25_algorithms/sort/random_test.cc
! fe97208f761258f5fe65ff7164e5c1a4  libstdc++-v3/testsuite/25_algorithms/sort/requirements/explicit_instantiation/2.cc
! e4daefdcb13fe397f6499bc2666e4a01  libstdc++-v3/testsuite/25_algorithms/sort/requirements/explicit_instantiation/pod.cc
! a9b9ded5e64b1cd3e8e078ccf583b724  libstdc++-v3/testsuite/25_algorithms/sort/vectorbool.cc
! ffb4289a9a7b34ebab74a36f8bf8a6ea  libstdc++-v3/testsuite/25_algorithms/sort_heap/check_compare_by_value.cc
! 36c442b0d32bf4a8121b7dfcd18d74bb  libstdc++-v3/testsuite/25_algorithms/sort_heap/complexity.cc
! 75dec37e177f587252938ed27757c3ae  libstdc++-v3/testsuite/25_algorithms/sort_heap/requirements/explicit_instantiation/2.cc
! f314e7c37c0fd231e8d6c2af862b26fb  libstdc++-v3/testsuite/25_algorithms/sort_heap/requirements/explicit_instantiation/pod.cc
! dc820e929b87ccabb2a2b46766265882  libstdc++-v3/testsuite/25_algorithms/stable_partition/1.cc
! 3d48d64266444bef7a65fa28317b19de  libstdc++-v3/testsuite/25_algorithms/stable_partition/mem_check.cc
! df6575c40ee990dd49dd75ac3cd59e5c  libstdc++-v3/testsuite/25_algorithms/stable_partition/moveable.cc
! f3199a110fc03d3091778e7c045c66db  libstdc++-v3/testsuite/25_algorithms/stable_partition/pr52822.cc
! 172e82b98582b6f95f2eed1fe7b81599  libstdc++-v3/testsuite/25_algorithms/stable_partition/requirements/explicit_instantiation/2.cc
! bb4eeff7287b83cfd1555a24c7b33fe3  libstdc++-v3/testsuite/25_algorithms/stable_partition/requirements/explicit_instantiation/pod.cc
! 6b73227141b7c3572c6359a5ed7e1fb4  libstdc++-v3/testsuite/25_algorithms/stable_sort/1.cc
! 3d5f548fbcfacd69b1fb8688c158b394  libstdc++-v3/testsuite/25_algorithms/stable_sort/2.cc
! 5f0afc2039803a3b6d9f516e6b185174  libstdc++-v3/testsuite/25_algorithms/stable_sort/3.cc
! 607a29425995ff1f9615d4a74191319b  libstdc++-v3/testsuite/25_algorithms/stable_sort/49559.cc
! a2adaccc30766900ddad035364fd4790  libstdc++-v3/testsuite/25_algorithms/stable_sort/check_compare_by_value.cc
! b347bbe0f998a5be3ebd569cde49be1d  libstdc++-v3/testsuite/25_algorithms/stable_sort/check_type.cc
! 061ecb9ec177c1727a58f97eca9583ea  libstdc++-v3/testsuite/25_algorithms/stable_sort/mem_check.cc
! 421ab015840de72a4de636176db1d757  libstdc++-v3/testsuite/25_algorithms/stable_sort/moveable.cc
! 8760cc4bd585bedf344ee4c3b165da49  libstdc++-v3/testsuite/25_algorithms/stable_sort/moveable2.cc
! 9286206ff561f8d278f3c304b4526033  libstdc++-v3/testsuite/25_algorithms/stable_sort/requirements/explicit_instantiation/2.cc
! 02642b270b151a9c5f86758384d2ef8e  libstdc++-v3/testsuite/25_algorithms/stable_sort/requirements/explicit_instantiation/pod.cc
! 980e9a71a4990faea9d5113d59b0c4ab  libstdc++-v3/testsuite/25_algorithms/swap/68877.cc
! ee4d219682e11946c0b450edf9693ac6  libstdc++-v3/testsuite/25_algorithms/swap/dr809.cc
! 33b2edcf65e8d45a06d41ac8d4e79766  libstdc++-v3/testsuite/25_algorithms/swap/noexcept.cc
! 0a3ae4f83444a90737308192501b672c  libstdc++-v3/testsuite/25_algorithms/swap/requirements/explicit_instantiation/2.cc
! 55d2555f30d620ffc9e2bae508b5f7a5  libstdc++-v3/testsuite/25_algorithms/swap/requirements/explicit_instantiation/pod.cc
! 253e4e6b6b25aef960c70f843929d90e  libstdc++-v3/testsuite/25_algorithms/swap_ranges/1.cc
! c31c7438c742fa65f564dbe75ba38611  libstdc++-v3/testsuite/25_algorithms/swap_ranges/check_type.cc
! 573c4ea1faadf852ab5064a5c6f1230c  libstdc++-v3/testsuite/25_algorithms/swap_ranges/moveable.cc
! 0687e3d27bf5eb9d0ab08d52fb28cc5e  libstdc++-v3/testsuite/25_algorithms/swap_ranges/requirements/explicit_instantiation/2.cc
! b7cddaa83284a79614563abc99200573  libstdc++-v3/testsuite/25_algorithms/swap_ranges/requirements/explicit_instantiation/pod.cc
! 793e12a6282feb126f56e8fc64e073c5  libstdc++-v3/testsuite/25_algorithms/transform/requirements/explicit_instantiation/2.cc
! 5fe4ca0b938c9847aedc40c9da6c9c58  libstdc++-v3/testsuite/25_algorithms/transform/requirements/explicit_instantiation/pod.cc
! 5a6148d982ae578d04dbdb4465e2540d  libstdc++-v3/testsuite/25_algorithms/unique/1.cc
! f2c9d034b3e630e54348d529c78460f1  libstdc++-v3/testsuite/25_algorithms/unique/11480.cc
! 20e688bc9b402007d4932e70b87a7e2b  libstdc++-v3/testsuite/25_algorithms/unique/2.cc
! 782dfeb4b2d76ff30f3d6d5541a68a3b  libstdc++-v3/testsuite/25_algorithms/unique/moveable.cc
! 049802fc245bb7de84de18c342ed762f  libstdc++-v3/testsuite/25_algorithms/unique/requirements/explicit_instantiation/2.cc
! 19e20c50244f21ad5fe2529fe2f7a287  libstdc++-v3/testsuite/25_algorithms/unique/requirements/explicit_instantiation/pod.cc
! 2caf2499bbe8ec453ba3906c54254003  libstdc++-v3/testsuite/25_algorithms/unique_copy/1.cc
! 7aba17c23c4e36a888ab4562fcb8782b  libstdc++-v3/testsuite/25_algorithms/unique_copy/2.cc
! 0e46cda9977e7c848a6979eda73e39c4  libstdc++-v3/testsuite/25_algorithms/unique_copy/26133.cc
! 93e7a027fbf21fe5318a2f6830f712fd  libstdc++-v3/testsuite/25_algorithms/unique_copy/check_type.cc
! 8cb86828377edb2dc818e75a37c11c10  libstdc++-v3/testsuite/25_algorithms/unique_copy/requirements/explicit_instantiation/2.cc
! ad05d942751b416cbc5ef1e7502104ed  libstdc++-v3/testsuite/25_algorithms/unique_copy/requirements/explicit_instantiation/pod.cc
! 006e979c911fc5ec9744b06b6dd98e13  libstdc++-v3/testsuite/25_algorithms/upper_bound/1.cc
! 4ff906be1cbf7a609fef6e0234eaa2a3  libstdc++-v3/testsuite/25_algorithms/upper_bound/2.cc
! 35be19a17643c64c996fa2265dfdf0de  libstdc++-v3/testsuite/25_algorithms/upper_bound/33613.cc
! 2def584594bc8e0a35c09112c20a4d27  libstdc++-v3/testsuite/25_algorithms/upper_bound/check_type.cc
! c8009b5ebb43ff6372aab38ce9deabf5  libstdc++-v3/testsuite/25_algorithms/upper_bound/partitioned.cc
! deeb96d07e5af4b892dad4a2aa31a161  libstdc++-v3/testsuite/25_algorithms/upper_bound/requirements/explicit_instantiation/2.cc
! ee2f9f8d6afa303a92204ecb732698d6  libstdc++-v3/testsuite/25_algorithms/upper_bound/requirements/explicit_instantiation/pod.cc
! 5221081bbf17d0774e652e40e7959eaf  libstdc++-v3/testsuite/26_numerics/accumulate/1.cc
! ab089bc4e84e60c8b1d991cef8c524a3  libstdc++-v3/testsuite/26_numerics/accumulate/48750.cc
! 48a62c7a89aa74af04dc1118ac752e19  libstdc++-v3/testsuite/26_numerics/accumulate/requirements/explicit_instantiation/2.cc
! 1f7cb097d5c1d9a690ebd99e7c66bf98  libstdc++-v3/testsuite/26_numerics/accumulate/requirements/explicit_instantiation/pod.cc
! e1f2bde7dcac2418f7e76ec908fd7dc5  libstdc++-v3/testsuite/26_numerics/adjacent_difference/1.cc
! 218a40db372467cd0ec2532093d429c8  libstdc++-v3/testsuite/26_numerics/adjacent_difference/requirements/explicit_instantiation/2.cc
! c57496963a326adb7da1f6a12c7562e9  libstdc++-v3/testsuite/26_numerics/adjacent_difference/requirements/explicit_instantiation/pod.cc
! 9bb4dc0d982de6116a8c8bf87211337d  libstdc++-v3/testsuite/26_numerics/complex/13450.cc
! 70c8f7fafa3f9fbef6a5432c9deddd8c  libstdc++-v3/testsuite/26_numerics/complex/50880.cc
! fbb84d65782e8b6fde81749f8b961ba3  libstdc++-v3/testsuite/26_numerics/complex/51083.cc
! bde993bd14db7cfcf42effafba2055d5  libstdc++-v3/testsuite/26_numerics/complex/56111.cc
! 0d75a837f7b9ada306b0cced8a9d4e42  libstdc++-v3/testsuite/26_numerics/complex/abi_tag.cc
! 2be3dc4c529c0b452edef92d27778b58  libstdc++-v3/testsuite/26_numerics/complex/buggy_complex.cc
! e922be6d4716ed3fc305b1faf5e40778  libstdc++-v3/testsuite/26_numerics/complex/c99.cc
! ea4223783423c6f7b0668d62d57f4f54  libstdc++-v3/testsuite/26_numerics/complex/comparison_operators/constexpr.cc
! 3e5bd5def9d383d1fb91764b6338e9a9  libstdc++-v3/testsuite/26_numerics/complex/cons/48760.cc
! c8a282ae12e2e2c32de07965ad4e4cfe  libstdc++-v3/testsuite/26_numerics/complex/cons/48760_c++0x.cc
! b7c0544af8be4e675fca9a4cf18faab0  libstdc++-v3/testsuite/26_numerics/complex/cons/constexpr.cc
! e04ad5699a702f13b23a5aa26ef3d08c  libstdc++-v3/testsuite/26_numerics/complex/cons/constexpr_primary.cc
! a9e631773e68e69e31476e03d1f3251c  libstdc++-v3/testsuite/26_numerics/complex/dr387_2.cc
! d03304ca47591ac9661cffec22a18783  libstdc++-v3/testsuite/26_numerics/complex/dr781.cc
! 2f70dd549d4ea1cb8b60dda2a54158f6  libstdc++-v3/testsuite/26_numerics/complex/dr844.cc
! ee55782cbf13f25c7d94f1e6d530511e  libstdc++-v3/testsuite/26_numerics/complex/inserters_extractors/char/1.cc
! 8f8f10bf9ba99c9eee97171b9b85826a  libstdc++-v3/testsuite/26_numerics/complex/inserters_extractors/char/dr2714.cc
! 074c010d3f0dc174b9cf9ff92fa1bd89  libstdc++-v3/testsuite/26_numerics/complex/inserters_extractors/wchar_t/1.cc
! 145308f12142c1cf5e89b1848c483ac4  libstdc++-v3/testsuite/26_numerics/complex/literals/types.cc
! 2c4d2a0474bc79cfcc6f2f1900c2db5e  libstdc++-v3/testsuite/26_numerics/complex/literals/values.cc
  906619ecf0877a7ff5302dd409c34714  libstdc++-v3/testsuite/26_numerics/complex/pow.cc
! be90dbb581a595c6417e66f89842c1df  libstdc++-v3/testsuite/26_numerics/complex/requirements/constexpr_functions.cc
! d1594f8f588f10748b6a774a4c9ba33d  libstdc++-v3/testsuite/26_numerics/complex/value_operations/1.cc
! f071d3e6fe3ed3c236e41947ee762a44  libstdc++-v3/testsuite/26_numerics/complex/value_operations/constexpr.cc
! 336327032e18472654c11f771116d61b  libstdc++-v3/testsuite/26_numerics/complex/value_operations/constexpr2.cc
! 5b654f7bef60c81b7dac314bb855cb0a  libstdc++-v3/testsuite/26_numerics/complex/value_operations/dr387.cc
! a8a44f9efc1f961acc51695afe4d0950  libstdc++-v3/testsuite/26_numerics/gcd/1.cc
! b32e705826475ec9f890ffd08a6426b2  libstdc++-v3/testsuite/26_numerics/gcd/gcd_neg.cc
! 7e76e95486944cb6efa320f97b03bc07  libstdc++-v3/testsuite/26_numerics/headers/ccomplex/std_c++0x_neg.cc
! 24762c4265ccd6a6fabcfb148d88143f  libstdc++-v3/testsuite/26_numerics/headers/cfenv/std_c++0x_neg.cc
! 57eff457134bde2e92bd2f75804d06de  libstdc++-v3/testsuite/26_numerics/headers/cfenv/types_std_c++0x.cc
! 6ac05178a8497daf9bb47aaba7ae79a1  libstdc++-v3/testsuite/26_numerics/headers/cmath/14608.cc
! cadcb1b0c9654956e5ae972377054823  libstdc++-v3/testsuite/26_numerics/headers/cmath/19322.cc
! 67c3cccedeb48dcb372f21666d06c771  libstdc++-v3/testsuite/26_numerics/headers/cmath/25913.cc
! fc257fe60a169d9fe0dd7f9e5b97ef07  libstdc++-v3/testsuite/26_numerics/headers/cmath/37582.cc
! 781b95afd960bb41c976884563b7a7f9  libstdc++-v3/testsuite/26_numerics/headers/cmath/48891.cc
! e709105cd366c5589500228acc6ddc7a  libstdc++-v3/testsuite/26_numerics/headers/cmath/51083.cc
! 1f47b4cb426c29a041b341342a2b9215  libstdc++-v3/testsuite/26_numerics/headers/cmath/53503.cc
! 9ef3fef833336a9d1dd9071e3d25a3b2  libstdc++-v3/testsuite/26_numerics/headers/cmath/60401.cc
! 0562d0f81b0a48f518d1bb81d1a4421a  libstdc++-v3/testsuite/26_numerics/headers/cmath/60637.cc
! 129fdb06d0bee8a4c1775d9b21cdd675  libstdc++-v3/testsuite/26_numerics/headers/cmath/82644.cc
! f73b96c9be50054d7d652835bd2e58b3  libstdc++-v3/testsuite/26_numerics/headers/cmath/c99_classification_macros_c++11.cc
! 414fe746988861035e2386522bae5272  libstdc++-v3/testsuite/26_numerics/headers/cmath/c99_classification_macros_c++98.cc
! 1e0b744ec862fe43a2303fe5e6962918  libstdc++-v3/testsuite/26_numerics/headers/cmath/c99_classification_macros_c.cc
! 638e07e0588e6cb211da798644adaf54  libstdc++-v3/testsuite/26_numerics/headers/cmath/c_math.cc
! d8a41dec254cfb26f4efbb64f757f5c5  libstdc++-v3/testsuite/26_numerics/headers/cmath/c_math_dynamic.cc
! 3416067a1330762955041078795ad371  libstdc++-v3/testsuite/26_numerics/headers/cmath/dr2192.cc
! 09d7e1d0da9782b3ab2f11c6a310f80d  libstdc++-v3/testsuite/26_numerics/headers/cmath/dr2192_neg.cc
! 4088ee6ba4e4325491daf50ec0956dd8  libstdc++-v3/testsuite/26_numerics/headers/cmath/dr550.cc
! 2c786e55a90383adb68699cde25a2cef  libstdc++-v3/testsuite/26_numerics/headers/cmath/fabs_inline.cc
! 150d39370e00e36ba7f7f5936eafdd60  libstdc++-v3/testsuite/26_numerics/headers/cmath/functions_global_c++17.cc
! 026edfa7cd685d0219435564e9a9165e  libstdc++-v3/testsuite/26_numerics/headers/cmath/functions_std.cc
! 81bb4e8d816ca813278503256edf2a85  libstdc++-v3/testsuite/26_numerics/headers/cmath/functions_std_c++17.cc
! 07defa45c1fa99e6a1ed8adad0bf4204  libstdc++-v3/testsuite/26_numerics/headers/cmath/hypot.cc
! 619e1013780958f3d1a43f3d1a59c3e4  libstdc++-v3/testsuite/26_numerics/headers/cmath/macros.cc
! 2f28d06d7989d0f4981ab470e43ebdaa  libstdc++-v3/testsuite/26_numerics/headers/cmath/overloads.cc
! ee5ebb05a5575f5fefbf0a8f4abe7a32  libstdc++-v3/testsuite/26_numerics/headers/cmath/overloads_c++0x_neg.cc
! 310f74e7edce169b40aa1588e2e304c0  libstdc++-v3/testsuite/26_numerics/headers/cmath/powi.cc
! 238289138bd72c75d0e24b1382f851c4  libstdc++-v3/testsuite/26_numerics/headers/cmath/types_std_c++0x.cc
! 886b2d7b6cd46cdc0691ae9fc5d6fda8  libstdc++-v3/testsuite/26_numerics/headers/cmath/types_std_c++0x_neg.cc
! 36a6e9983e9a7f82fe7385bceb81165b  libstdc++-v3/testsuite/26_numerics/headers/complex.h/std_c++11.h
! 5d550de44b7c94c24b272daeea80f806  libstdc++-v3/testsuite/26_numerics/headers/complex.h/std_c++98.h
! da98f1cd50163d7ed00500b749cda455  libstdc++-v3/testsuite/26_numerics/headers/complex.h/std_gnu++11.h
! b5f3fd73469c599f4c9f7f2602fe7365  libstdc++-v3/testsuite/26_numerics/headers/complex/synopsis.cc
! 46e7bfe889793bf0574c9bf1cf9504fd  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/13943.cc
! e4a0206da1561ab5e9d0365332855723  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/2190.cc
! f6566138f58058f4f4bfa8a75e324448  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/54686.cc
! 0ab778e9d5c5ce10c6908dec52fd9eee  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/60401.cc
! ac60f08e1db1fe2bc6ce8136deed6dd3  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/dr2192.cc
! efed9d0e59c9d09cd025e1baa0d893ac  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/dr2192_neg.cc
! e6079a2fa6f888de751c68fde0803a6a  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/functions_std.cc
! 0065af9a963eef3d2d0ff325ef5cf611  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/macros.cc
! bcfc0771b32367173cff92c4eadcc720  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/types_std.cc
! 0ff444dbab4c248919f20fd1f669fe3f  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/types_std_c++0x.cc
! 7c798660d08ce827780b58a76d7d1bd4  libstdc++-v3/testsuite/26_numerics/headers/ctgmath/complex.cc
! 93640f2d606218a16e7b3055920dbf4f  libstdc++-v3/testsuite/26_numerics/headers/ctgmath/std_c++0x_neg.cc
! 2396447f611c3df546588a692106b91a  libstdc++-v3/testsuite/26_numerics/headers/numeric/numeric_parallel_mode.cc
! 9f548ccb6bab49c8029773b583b05720  libstdc++-v3/testsuite/26_numerics/headers/numeric/parallel_numeric.cc
! 792c4926d73c08356061c66b1677fa76  libstdc++-v3/testsuite/26_numerics/headers/numeric/parallel_numeric_mixed1.cc
! 31a92891b8865801426482fe70ec17d1  libstdc++-v3/testsuite/26_numerics/headers/numeric/parallel_numeric_mixed2.cc
! d0c693bf5723d44f083f4141577fa056  libstdc++-v3/testsuite/26_numerics/headers/numeric/synopsis.cc
! de8c995e78f47d867f466e25dd22d3d9  libstdc++-v3/testsuite/26_numerics/headers/random/std_c++0x_neg.cc
! 258449bb5b257acb5eacbbb433ffbe1c  libstdc++-v3/testsuite/26_numerics/headers/random/types_std_c++0x.cc
! 8597cf2315fa771b3c679306c1f52979  libstdc++-v3/testsuite/26_numerics/headers/valarray/synopsis.cc
! b2732ac283f2138b3530706d62687c62  libstdc++-v3/testsuite/26_numerics/headers/valarray/types_std.cc
! d915a12b66a2210f77f3b0f99e66ba45  libstdc++-v3/testsuite/26_numerics/inner_product/1.cc
! 9e8c1d5a6754921372f6f8c188e7b096  libstdc++-v3/testsuite/26_numerics/inner_product/requirements/explicit_instantiation/2.cc
! 28381d8c80fc31c973973c3c69d8986b  libstdc++-v3/testsuite/26_numerics/inner_product/requirements/explicit_instantiation/pod.cc
! b152968b2e3f1d71800c88db8487e54b  libstdc++-v3/testsuite/26_numerics/iota/1.cc
! a49467fa77dda23d5527aff3e25e0043  libstdc++-v3/testsuite/26_numerics/iota/requirements/explicit_instantiation/2.cc
! 1a1832843198f506223dd075995f0ecf  libstdc++-v3/testsuite/26_numerics/iota/requirements/explicit_instantiation/pod.cc
! b8b655a73d4fd481d8c3a33ee8c35f50  libstdc++-v3/testsuite/26_numerics/lcm/1.cc
! c4c0e8b97a2925e817c50bb4e40f28bc  libstdc++-v3/testsuite/26_numerics/lcm/lcm_neg.cc
! 5066dc16950760e0f7bd911fa52931d5  libstdc++-v3/testsuite/26_numerics/partial_sum/1.cc
! 3eb6b44fa86972ac13752eda86bc42b8  libstdc++-v3/testsuite/26_numerics/partial_sum/requirements/explicit_instantiation/2.cc
! a508b83643e4193b0d8f7223a5ec5102  libstdc++-v3/testsuite/26_numerics/partial_sum/requirements/explicit_instantiation/pod.cc
! b557be655dffb9afc27aa85304f86b47  libstdc++-v3/testsuite/26_numerics/random/bernoulli_distribution/cons/default.cc
! 9a00266ff5273f2d24940c300de3e3cd  libstdc++-v3/testsuite/26_numerics/random/bernoulli_distribution/cons/parms.cc
! 3bdd0ccd8d1b273889cf7ab72622acc3  libstdc++-v3/testsuite/26_numerics/random/bernoulli_distribution/operators/equal.cc
! 6eb1f6796fb05f5c5081b2cfaa6f92ed  libstdc++-v3/testsuite/26_numerics/random/bernoulli_distribution/operators/inequal.cc
! 59575e6e26a6100a44f56746d83083fd  libstdc++-v3/testsuite/26_numerics/random/bernoulli_distribution/operators/serialize.cc
! d4d4f961ec6b5b79410562298ac294b3  libstdc++-v3/testsuite/26_numerics/random/bernoulli_distribution/operators/values.cc
! a5c18042f1f1a037f5b81d3e37351f9f  libstdc++-v3/testsuite/26_numerics/random/bernoulli_distribution/requirements/typedefs.cc
! 97019433d86d2238ca54b8f6e048f1e6  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/cons/default.cc
! c90c5a1107c45665b770d82e19823ac2  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/cons/parms.cc
! 331ffbcd523db403c17b9e07f74c2803  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/operators/equal.cc
! 1ce7e8f03bb91d592cfdfa1531ddec67  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/operators/inequal.cc
! 13956a438c9e81906daea232907990d9  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/operators/serialize.cc
! fa6a7509016c92da40fb8d97c80e12d6  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/operators/values.cc
! 86104e9d9c01c6b8008b18088a7803dd  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/operators/values2.cc
! 849fa7f1297bdf88c520d0e8d73ea7f6  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/operators/values3.cc
! fd419d6312c5679ca0b62188d101ac06  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/operators/values4.cc
! 385547f30bdcb2898966cada71be45cf  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/operators/values5.cc
! 6540340dd2df4c4cb3099aca0f9158a9  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/requirements/explicit_instantiation/1.cc
! 6a1fcdb6e16cf8c100ff52e744a7c75c  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/requirements/typedefs.cc
! 147243d8e1a8405d316859666ecc8f34  libstdc++-v3/testsuite/26_numerics/random/cauchy_distribution/cons/default.cc
! 6f1999f986b28b46180d3f0f64c75d4a  libstdc++-v3/testsuite/26_numerics/random/cauchy_distribution/cons/parms.cc
! 697232f766538556a356024eb99ee69e  libstdc++-v3/testsuite/26_numerics/random/cauchy_distribution/operators/equal.cc
! cf9cf4587e8dcd7e5838a335c2de702b  libstdc++-v3/testsuite/26_numerics/random/cauchy_distribution/operators/inequal.cc
! d26af6a62bce3c1d6e65be9bbeb92712  libstdc++-v3/testsuite/26_numerics/random/cauchy_distribution/operators/serialize.cc
! d179ba6d6f7bd149cd1539638b423086  libstdc++-v3/testsuite/26_numerics/random/cauchy_distribution/requirements/explicit_instantiation/1.cc
! 9020430eb45477b173029544afea0931  libstdc++-v3/testsuite/26_numerics/random/cauchy_distribution/requirements/typedefs.cc
! 51401a37b01f5786eebfdeac5c29bde7  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/83833.cc
! 327af77d6031d68cd901fb814e19266b  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/cons/default.cc
! fd4b7ab1e438147166640f59572dca66  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/cons/parms.cc
! 1db2e8d6284457db5dc17e3d3a3a4905  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/operators/equal.cc
! 7bf9b431b73fc3012adf15ce5243f916  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/operators/inequal.cc
! 4397f6738700aaf2cc86629420a1233e  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/operators/serialize.cc
! bc17249c7dd6a03970b439565551e191  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/requirements/explicit_instantiation/1.cc
! f6622f9a7d9935961ca49381265e0e21  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/requirements/typedefs.cc
! ccd7c47a15c7c6f5936bb88c00cdadb3  libstdc++-v3/testsuite/26_numerics/random/default_random_engine.cc
! 7d7c05e2f6e1312511dbc7815c0d9d2e  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/55215.cc
! 7378c1cb470a151d55f66dae7cedab89  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/base_copy.cc
! ec3c9ccc4e805630d547c4aace3b6423  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/base_move.cc
! f1d7d2105302b32eeea1c17899d7e20c  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/copy.cc
! e4f877eb36edca69cf08450fe72f3280  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/default.cc
! e9df9e67623ad9b22e0ba8b3e728ce2a  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/seed1.cc
! 9dc835a50fa2a4864273e36e3ada00fc  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/seed2.cc
! 38b5c5827dd538f6c6798fd3f0958949  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/seed_seq.cc
! 6fdd5c4cfcea78c51f4bc276ed3f221b  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/operators/equal.cc
! 729f92081e04baab1bf159fa3a69e917  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/operators/inequal.cc
! f65dcb849f81355bdf62aa8fd3b96d32  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/operators/serialize.cc
! 2a642beb1b4e1808cbca3344ec32359e  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/requirements/constexpr_data.cc
! f6e7dc559629bdf9bbff33a0efc28459  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/requirements/constexpr_functions.cc
! 67622c6fe8f9b3ac9c639c89805004a6  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/requirements/typedefs.cc
! ad808551a2fc210c3a0005a026952fa5  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/cons/default.cc
! 95cc21ca81cd73954481572b60ebe8fc  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/cons/initlist.cc
! a153ceb8f33e93d20291fe4321b2842f  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/cons/num_xbound_fun.cc
! 60c1ae75469cf5c37ca2b1a77ff37c56  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/cons/range.cc
! c3e5ef0770f28224ce33f65f211982e9  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/operators/call-default.cc
! 070a768eff5f5a1b141d2a399dc116c2  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/operators/equal.cc
! fad367bd00c713069fbaaaabaf25349b  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/operators/inequal.cc
! 3b752a9ee82890ad65494b42d121b76d  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/operators/serialize.cc
! dd54459f4298af35216c5a28238869c8  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/operators/values.cc
! 8f6f28e921dc7e801b77cef24135acc8  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/requirements/explicit_instantiation/1.cc
! 398a3d2d6ac62760594b7bb6ba1bdae1  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/requirements/typedefs.cc
! e516f86ed28b8b9ce0dc778ec1c4a693  libstdc++-v3/testsuite/26_numerics/random/exponential_distribution/cons/default.cc
! 45edd05d428a7be40eaaf1c79a956fbc  libstdc++-v3/testsuite/26_numerics/random/exponential_distribution/cons/parms.cc
! 88352f449240be90bdded5c1a358197b  libstdc++-v3/testsuite/26_numerics/random/exponential_distribution/operators/equal.cc
! 4ed5fc4b4b99305aa665e14741df604b  libstdc++-v3/testsuite/26_numerics/random/exponential_distribution/operators/inequal.cc
! 5ed9bea38c752c62c7e14710f7bb3c91  libstdc++-v3/testsuite/26_numerics/random/exponential_distribution/operators/serialize.cc
! 3d5c8edb4bf5edef4c11b35a7df90440  libstdc++-v3/testsuite/26_numerics/random/exponential_distribution/requirements/explicit_instantiation/1.cc
! 48199c02a35946b78773e01fb14f4d84  libstdc++-v3/testsuite/26_numerics/random/exponential_distribution/requirements/typedefs.cc
! 4872f3a5247f0855245a081c8725dac4  libstdc++-v3/testsuite/26_numerics/random/extreme_value_distribution/cons/default.cc
! 1e9e97fc4c83c9feb1c673971a0bcb0e  libstdc++-v3/testsuite/26_numerics/random/extreme_value_distribution/cons/parms.cc
! 55c54ed69393b56f0e78f1645c50d60a  libstdc++-v3/testsuite/26_numerics/random/extreme_value_distribution/operators/equal.cc
! 5e1319564cb84bd20108588de828b888  libstdc++-v3/testsuite/26_numerics/random/extreme_value_distribution/operators/inequal.cc
! ea2acff95d3ed72799081d094bda844c  libstdc++-v3/testsuite/26_numerics/random/extreme_value_distribution/operators/serialize.cc
! a3fa5850c07a943a6286206fed81f6ec  libstdc++-v3/testsuite/26_numerics/random/extreme_value_distribution/requirements/explicit_instantiation/1.cc
! c76441d55e9b6baec24bb331800dba6a  libstdc++-v3/testsuite/26_numerics/random/extreme_value_distribution/requirements/typedefs.cc
! 702e9baf32d0643397cfb6e912993729  libstdc++-v3/testsuite/26_numerics/random/fisher_f_distribution/cons/default.cc
! e07ed18ca9b910a147804294456b6fa9  libstdc++-v3/testsuite/26_numerics/random/fisher_f_distribution/cons/parms.cc
! 818fab0d59bde6b9c0ea4b1839549a3b  libstdc++-v3/testsuite/26_numerics/random/fisher_f_distribution/operators/equal.cc
! 0b2455a38f6a3f4610867f16d880cbfb  libstdc++-v3/testsuite/26_numerics/random/fisher_f_distribution/operators/inequal.cc
! 5e9fff451722af15f8134f179f5d09eb  libstdc++-v3/testsuite/26_numerics/random/fisher_f_distribution/operators/serialize.cc
! eac2dc77b3ef386f35e06e62085d11c0  libstdc++-v3/testsuite/26_numerics/random/fisher_f_distribution/requirements/explicit_instantiation/1.cc
! e6a4c57bfc5d998c413bd4272ddd1072  libstdc++-v3/testsuite/26_numerics/random/fisher_f_distribution/requirements/typedefs.cc
! 6038160be68d675f210d437f25f332c4  libstdc++-v3/testsuite/26_numerics/random/gamma_distribution/cons/default.cc
! b800009d3d73a793e5be6cab37674281  libstdc++-v3/testsuite/26_numerics/random/gamma_distribution/cons/parms.cc
! 8b341fd4a4d13da496ea5f2b41efed3e  libstdc++-v3/testsuite/26_numerics/random/gamma_distribution/operators/equal.cc
! e05c71d7e7b20a57e66b60276ff4c321  libstdc++-v3/testsuite/26_numerics/random/gamma_distribution/operators/inequal.cc
! 19f383747f70bce0036b9be7cca6afac  libstdc++-v3/testsuite/26_numerics/random/gamma_distribution/operators/serialize.cc
! 41e73ad19921641282e198b996e7a3dc  libstdc++-v3/testsuite/26_numerics/random/gamma_distribution/requirements/explicit_instantiation/1.cc
! 26562e67c50379cae2e320ac2ccd05fa  libstdc++-v3/testsuite/26_numerics/random/gamma_distribution/requirements/typedefs.cc
! efe2d5a8d96a71ace9057314187d278e  libstdc++-v3/testsuite/26_numerics/random/geometric_distribution/cons/default.cc
! f550ef28ba2b5c8832af490697a68ccc  libstdc++-v3/testsuite/26_numerics/random/geometric_distribution/cons/parms.cc
! b39e2310e19d0bd04e028d9f510592d4  libstdc++-v3/testsuite/26_numerics/random/geometric_distribution/operators/equal.cc
! 47bde499dc08660895698330fc0867cb  libstdc++-v3/testsuite/26_numerics/random/geometric_distribution/operators/inequal.cc
! 1871156e961968ee79c489f413209128  libstdc++-v3/testsuite/26_numerics/random/geometric_distribution/operators/serialize.cc
! 0a33120729bf5d9dd85a066d86513ebd  libstdc++-v3/testsuite/26_numerics/random/geometric_distribution/operators/values.cc
! a9f8bbbf34ba09c03c7c14f04634a852  libstdc++-v3/testsuite/26_numerics/random/geometric_distribution/requirements/explicit_instantiation/1.cc
! 1e9866b0baa9da98c87995dcdb6d7829  libstdc++-v3/testsuite/26_numerics/random/geometric_distribution/requirements/typedefs.cc
! cfd379b7ef415b4b827ef0fedab129a6  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/55215.cc
! c1167a8d1a86472228b94d00e5b6f885  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/base_copy.cc
! a56fcbf97328c8d0e324c654a6acb8c3  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/base_move.cc
! 5ab135ce6ef7e3f59ac372217cf8e866  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/copy.cc
! 21c64d9ee035c07f5b6478ad0bdc2a66  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/default.cc
! 0f23aa3eb9aeda827fe20544d286d4bc  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/seed1.cc
! 53e93c4390d03dc923fa3dfe19773569  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/seed2.cc
! 4f31d62ceb3072cd9b147d21aae3cf56  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/seed_seq.cc
! e83a48f917bf97974092f39c810d90ef  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/operators/equal.cc
! ecb53d5bc9c6530f267e54f664035af5  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/operators/inequal.cc
! 02707f2671f0d181fc5f317a1afdec19  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/operators/serialize.cc
! e6388cc2777e2ce8158c901b90f64195  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/requirements/constexpr_functions.cc
! 1fca50f1db30e64d759e935404b420c9  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/requirements/typedefs.cc
! 4c70026931efaedb92016477c42991f6  libstdc++-v3/testsuite/26_numerics/random/knuth_b.cc
! c98775b04b724afb4a37912db3c5eb4e  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/cons/55215.cc
! 2b8a439a88598a68b233251939a7ebde  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/cons/copy.cc
! aff81a1598fb3aa35aa2bfbc23946d6e  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/cons/default.cc
! 9d152960f1e6808f43e9770c26e07c5b  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/cons/seed1.cc
! 2aee89692cb1ed78d6aad9a76ff457c0  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/cons/seed2.cc
! 03323b8515d06a480636f422fe318935  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/cons/seed_seq.cc
! 84c1adc8b0202231b62ab2816a4a0517  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/operators/51795.cc
! 31eb091dc06c3287a0bd8596a44de2f7  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/operators/equal.cc
! 97c3b2ae1331cf6e241fcff1a99875fb  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/operators/inequal.cc
! fbd5a7530da2cade6a3111399f8b5a9e  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/operators/serialize.cc
! 9abe7b3bfa9fd12516071ef5ffeb539e  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/constants.cc
! 4194fda9e6e0a791840521e01a82ea7e  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/constexpr_data.cc
! 32badf8a745f69cf09dc7955f085be75  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/constexpr_functions.cc
! 3b8ae96e69312157b3c5b31d33881970  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/non_uint_neg.cc
! 2c7b62fd19cc93ab8e506f7b48afd0be  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/typedefs.cc
! d2c269e9de4ccdfba2023d8851960512  libstdc++-v3/testsuite/26_numerics/random/lognormal_distribution/cons/default.cc
! 5ac7e4ee69bdeb6fd061450800b0b60d  libstdc++-v3/testsuite/26_numerics/random/lognormal_distribution/cons/parms.cc
! 854854256b9823257069c7226cc357d4  libstdc++-v3/testsuite/26_numerics/random/lognormal_distribution/operators/equal.cc
! 7081d6dd046ae9894c1a9fbd893615c7  libstdc++-v3/testsuite/26_numerics/random/lognormal_distribution/operators/inequal.cc
! d9406d910ccc3cbc30210934db393918  libstdc++-v3/testsuite/26_numerics/random/lognormal_distribution/operators/serialize.cc
! 1717863694e2964a16c844c047d14b7a  libstdc++-v3/testsuite/26_numerics/random/lognormal_distribution/requirements/explicit_instantiation/1.cc
! d78f6e50fc9257bb1a90b833c800792e  libstdc++-v3/testsuite/26_numerics/random/lognormal_distribution/requirements/typedefs.cc
! c1ecfc4ac93c40a3a3a245c83093df22  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/cons/55215.cc
! bb443a689a226d5c52144cd29d92ba5c  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/cons/copy.cc
! dd92bf9c965a0423b672ca982133e730  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/cons/default.cc
! 20498b489854da36fa3258353fc9af8e  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/cons/seed1.cc
! b60b9d63c9e7c6b5214d5a25059c34a6  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/cons/seed2.cc
! 677fe9f928543fab3c1ad102806ca852  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/cons/seed_seq.cc
! 26c04ecab7b904b06fa2ac46ee920d1e  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/operators/equal.cc
! 904eaeabbc7fec5006d4a807eae449e3  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/operators/inequal.cc
! f895fa491f854eb158f4a6dedf9c15c8  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/operators/serialize.cc
! 51ccd70c83ffa1993f28362dc4467bcc  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/requirements/constants.cc
! 7136a0179a9dfcc16d12976e4deab6c9  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/requirements/constexpr_data.cc
! d86453e4e17761d3a633f99a6dd50e38  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/requirements/constexpr_functions.cc
! a08f29b843491b340645ec7f759e59c0  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/requirements/typedefs.cc
! 2847f6a82d53938e8311b13dacdbbb4b  libstdc++-v3/testsuite/26_numerics/random/minstd_rand.cc
! 8c3c15833fa0c3bdffbe06ae47d44ebe  libstdc++-v3/testsuite/26_numerics/random/minstd_rand0.cc
! 7cfb365ccc9447c139b11d8b18970a33  libstdc++-v3/testsuite/26_numerics/random/mt19937.cc
! 7572f69ecc8190483abda65eba653eb7  libstdc++-v3/testsuite/26_numerics/random/mt19937_64.cc
! e0ff93e0479b6dd71c6dfe11c326be96  libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/cons/default.cc
! a9c72623df3289627d4570a37ec06d03  libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/cons/parms.cc
! 0c1f30e2b32845bc112c8a015f3ccf32  libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/operators/58302.cc
! f26b8d489760a75f5e7bbb55edda2afa  libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/operators/equal.cc
! ce0476798e1b27e395d0af4cee73596d  libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/operators/inequal.cc
! 77150a6c73326a1cac31e362a40fdfc5  libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/operators/serialize.cc
! e3752bb7e77df30f2ab47d00b60da7c1  libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/operators/values.cc
! 6b404b8b910570b7456ff46ea0a79c28  libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/requirements/explicit_instantiation/1.cc
! b4b4af8c241712c8a294e464b596d018  libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/requirements/typedefs.cc
! aa4599f6e0ff85349ee002a3413c3010  libstdc++-v3/testsuite/26_numerics/random/normal_distribution/cons/default.cc
! 72ecc13a7e0bb8e0b6dace84a44367e7  libstdc++-v3/testsuite/26_numerics/random/normal_distribution/cons/parms.cc
! b178217cddee85965148776d32274656  libstdc++-v3/testsuite/26_numerics/random/normal_distribution/operators/equal.cc
! 90d8d3967e02c4adfb586e2413701798  libstdc++-v3/testsuite/26_numerics/random/normal_distribution/operators/inequal.cc
! 1c571ed14457f716c992ecf0fd64d467  libstdc++-v3/testsuite/26_numerics/random/normal_distribution/operators/serialize.cc
! 033b5cea5666dbda435a5088a57d1f44  libstdc++-v3/testsuite/26_numerics/random/normal_distribution/requirements/explicit_instantiation/1.cc
! b475e03d67f6eea35d99d9a1d0b85cfe  libstdc++-v3/testsuite/26_numerics/random/normal_distribution/requirements/typedefs.cc
! 8e68115e32e7b9ed552e16727c7bc1ff  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/cons/default.cc
! 70c9b2fa1db77015630f120c476ac1e6  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/cons/initlist_fun.cc
! baeac6091fff53afe14ba562e7e5104f  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/cons/num_xbound_fun.cc
! 5b3ac158534fe13df830922d3d04fddb  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/cons/range.cc
! 8946c361f7efbd1ff1b729cf8d7991f7  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/operators/call-default.cc
! 2aacfd66f95bc1879adaf6251a3a3ddc  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/operators/equal.cc
! 5c84c7bfeaade98f408ad9cdb78ff955  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/operators/inequal.cc
! 467601ad83f554388a394e1493f2efbe  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/operators/serialize.cc
! 53eb789d4761f0f9d57f86b14c3ceafb  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/requirements/explicit_instantiation/1.cc
! 6543b02b211e9789c24fab1a99d5b358  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/requirements/typedefs.cc
! fcee8ae6462cc1543ea0b98c6b89fa7f  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/cons/default.cc
! 08f2cf9e56906a22afee1758596b4e81  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/cons/initlist_fun.cc
! 1bb11f55580c8f605f9da771c462f1c3  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/cons/num_xbound_fun.cc
! 688beec276aecb83145c0874b9726896  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/cons/range.cc
! 0d62407403cabf194a94c16011630c64  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/operators/call-default.cc
! e26df593972416be0fae7880cdc03679  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/operators/equal.cc
! bb0deaaeb31c9b50d554e07a7fac5840  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/operators/inequal.cc
! fab4881235db79022c7029bf5092b0b6  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/operators/serialize.cc
! 4188ff7944e274f526320e6884311b34  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/requirements/explicit_instantiation/1.cc
! b9fc52417962dfa31e0bb4dd0fb19b0b  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/requirements/typedefs.cc
! 33649eab694e261b8ec52b239dab4ae7  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/cons/default.cc
! c7c484d24f2c0ed09c7450eb0367000f  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/cons/parms.cc
! 9ef2c704c3504b5bc5bf3612150fa68e  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/operators/equal.cc
! 4c08beba75f9c1fb473eca9425068be0  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/operators/inequal.cc
! 7c3133faa9e9e1a7c7b408acd3b0903c  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/operators/serialize.cc
! b97afcf969d15cc46cbd16b0b8dfa434  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/operators/values.cc
! ddee65372702dcbe42b6c92aedd5f180  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/requirements/explicit_instantiation/1.cc
! 2721ada822954bd385d9e450d45c9ae5  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/requirements/typedefs.cc
! 81d0a65cc33d66de1aef613713ef5a6e  libstdc++-v3/testsuite/26_numerics/random/pr60037-neg.cc
! f4d4b3d5940a4a8fcc2f5d2491ebd43c  libstdc++-v3/testsuite/26_numerics/random/random_device/cons/default.cc
! ac71ee04e1231fa1890d5103c2c84adc  libstdc++-v3/testsuite/26_numerics/random/random_device/cons/token.cc
! b926245686cadb267ebd5ea61da1254b  libstdc++-v3/testsuite/26_numerics/random/random_device/requirements/typedefs.cc
! b048f47c84dc953eb19773ae17965568  libstdc++-v3/testsuite/26_numerics/random/ranlux24.cc
! 416fc561e67fcb8221f1afe966d15c42  libstdc++-v3/testsuite/26_numerics/random/ranlux24_base.cc
! 315143524b8d9fe863876284b8ec3946  libstdc++-v3/testsuite/26_numerics/random/ranlux48.cc
! b81066f0cf57a376901cde5f29f01894  libstdc++-v3/testsuite/26_numerics/random/ranlux48_base.cc
! aad5267431e22572d0b02fb658a29a66  libstdc++-v3/testsuite/26_numerics/random/seed_seq/cons/65631.cc
! 9f3d01871e499a8832bf647813e317d5  libstdc++-v3/testsuite/26_numerics/random/seed_seq/cons/default.cc
! 3bd23caf053806112ea245616366cfa9  libstdc++-v3/testsuite/26_numerics/random/seed_seq/cons/initlist.cc
! 48e03bffdcb7084dfbde75531d6b9156  libstdc++-v3/testsuite/26_numerics/random/seed_seq/cons/range.cc
! 92dcbce14866f7658beb185dd0146f30  libstdc++-v3/testsuite/26_numerics/random/seed_seq/requirements/typedefs.cc
! 48d2b1add98c9301de08ed4040a6e56c  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/cons/55215.cc
! 5b383b6e6a9e5acdac28cbed3be05db9  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/cons/base_copy.cc
! 1e05e0333269ca243dae453864e3f787  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/cons/base_move.cc
! 522e98729b7d421ecab966f3e6582f32  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/cons/copy.cc
! 033be8b4aa1bacf87c2cb9024eefe92f  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/cons/default.cc
! 3d9106e7b399e7005ca2851b0d482786  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/cons/seed1.cc
! e3965368fd0f89a2fd131f93462b209d  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/cons/seed2.cc
! 3ce43d956e657c85261d40f38826c16b  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/cons/seed_seq.cc
! c954cc17c8ce308ed093f18fa4dcca50  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/operators/equal.cc
! 5ff2b26482b1158bf6beb2e4c2782441  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/operators/inequal.cc
! 960dc01254405ae18f81afee1e7463e8  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/operators/serialize.cc
! 6451a9da0452bff6ffffa35cd0bd6d7f  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/requirements/constants.cc
! ee4f58a2da018d3701f2fef5c40a38f5  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/requirements/constexpr_data.cc
! 2704920867f6137fb38969e5fcc2ebe1  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/requirements/constexpr_functions.cc
! 4f0ec37d997797f027b0c0e3109852ca  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/requirements/typedefs.cc
! 5e44e84fa2547d4812b638973273d52b  libstdc++-v3/testsuite/26_numerics/random/student_t_distribution/cons/default.cc
! 3150e6ee588323af60835093c417c06c  libstdc++-v3/testsuite/26_numerics/random/student_t_distribution/cons/parms.cc
! 18e51b3b1bebd27d3e7797e265398de2  libstdc++-v3/testsuite/26_numerics/random/student_t_distribution/operators/equal.cc
! c76829db063e4cbf4303057081e90494  libstdc++-v3/testsuite/26_numerics/random/student_t_distribution/operators/inequal.cc
! e159ed344f3665c7c4161880554b2565  libstdc++-v3/testsuite/26_numerics/random/student_t_distribution/operators/serialize.cc
! 1ce14def5c397dbabaccde19aa52cb3f  libstdc++-v3/testsuite/26_numerics/random/student_t_distribution/requirements/explicit_instantiation/1.cc
! b90609391b0ea1ebb44b6869b1d73b15  libstdc++-v3/testsuite/26_numerics/random/student_t_distribution/requirements/typedefs.cc
! 3e72d40d1d42417b680b7ab9027f6838  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/cons/55215.cc
! e78d70a8237e2b423a9c36802ad5ddf7  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/cons/copy.cc
! cb38b7eaaec522014e2f62c0354b46d6  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/cons/default.cc
! 2f7078ed3632733d63e92976dfd76adf  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/cons/seed1.cc
! bf694ee5fc0818a786bfda724d3ec1ac  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/cons/seed2.cc
! c63552cc78e4a6e1acd277e23c7088e5  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/cons/seed_seq.cc
! ecffc42958880da0629e42e586810806  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/operators/equal.cc
! 974a2161f579c0eb20606d0e80f0b4a1  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/operators/inequal.cc
! 8c1b3d7163063435406fe11b7bae6521  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/operators/serialize.cc
! ea273c3862ff461697f16e5fe4017498  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/requirements/constants.cc
! c1fd95732a95d1a571ecfcf97f877e5a  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/requirements/constexpr_data.cc
! 644ac99ae47985170776e7caf640da4c  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/requirements/constexpr_functions.cc
! e25b110e075c49dcb592bffbd15f8fbd  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/requirements/typedefs.cc
! 7594999769da7fd280e410b702904720  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/cons/default.cc
! a81e7ee135c72afd4ae8f93ea9ebce8f  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/cons/parms.cc
! 20ae7b39663ef4c5503ce24bef2dd6b9  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/operators/equal.cc
! 25425db5abdea3250234d41bbc5ac342  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/operators/inequal.cc
! 7fa3dbaff28aa90f8c5dfec343338468  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/operators/serialize.cc
! c40fecec986706250d48f38a1a994b09  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/operators/values.cc
! 654f451a8832db968b4d9220649457f9  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/requirements/explicit_instantiation/1.cc
! fe67001f80eb84c1a09ef9277494085a  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/requirements/typedefs.cc
! ab09decfc504b97959fc311142cb6864  libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/cons/default.cc
! 0aa3dbc86ed1d39ba3618c9be033a773  libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/cons/parms.cc
! fd79ab7e6e0fe4a9c5813381fcd1b5be  libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/operators/64351.cc
! 9a49469215c5b60e63844a809698e8ed  libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/operators/equal.cc
! 2eeaeca053a3aa5484c05528370a85ca  libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/operators/inequal.cc
! b7664ad920717c2d0374fe89ed19068b  libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/operators/serialize.cc
! fcffe62405e0d8f72cb824ed6193d159  libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/requirements/explicit_instantiation/1.cc
! 87c0594b63fafcd0c8307859182158df  libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/requirements/typedefs.cc
! ad66c3845dcc635c5c91c5c2d2df467d  libstdc++-v3/testsuite/26_numerics/random/weibull_distribution/cons/default.cc
! 97e8f929b3538a4f5af2e1465a859349  libstdc++-v3/testsuite/26_numerics/random/weibull_distribution/cons/parms.cc
! 0dca486f83eaa6212457d6584adc90d2  libstdc++-v3/testsuite/26_numerics/random/weibull_distribution/operators/equal.cc
! a7c770c2933a1b60b87bda2c957bdca5  libstdc++-v3/testsuite/26_numerics/random/weibull_distribution/operators/inequal.cc
! fdef5c70b7e252805f599ca975d5739d  libstdc++-v3/testsuite/26_numerics/random/weibull_distribution/operators/serialize.cc
! 6a77451bf9e7a861c93f97370ec8509c  libstdc++-v3/testsuite/26_numerics/random/weibull_distribution/requirements/explicit_instantiation/1.cc
! f7ad47e89fc766e8ff9273f27261f6b6  libstdc++-v3/testsuite/26_numerics/random/weibull_distribution/requirements/typedefs.cc
! 026fb754dffae8a82b2d09409da27867  libstdc++-v3/testsuite/26_numerics/slice/1.cc
! 0c89f678034041846690c27a4b41f0c7  libstdc++-v3/testsuite/26_numerics/slice_array/array_assignment.cc
! b4ae89b807933a9c58496f7ae1cbc35f  libstdc++-v3/testsuite/26_numerics/slice_array/requirements/explicit_instantiation.cc
! 6ab2070c46567c5e948ac271f2585f97  libstdc++-v3/testsuite/26_numerics/slice_array/requirements/typedefs.cc
! e1126b94e4372c7abbb0da6aa6659b2a  libstdc++-v3/testsuite/26_numerics/valarray/27867.cc
! 308e474945f2a19ec6382b8da70979f4  libstdc++-v3/testsuite/26_numerics/valarray/28277.cc
! 8da40ff9367ed1a070114aabf1db0215  libstdc++-v3/testsuite/26_numerics/valarray/30416.cc
! d74e965b09d4edc17dee93d742983f12  libstdc++-v3/testsuite/26_numerics/valarray/33084.cc
! 901e1a887e726b54993b0a3f527becbf  libstdc++-v3/testsuite/26_numerics/valarray/40691.cc
! 8eddd95d66b6505e07efd5bd24a1b1c6  libstdc++-v3/testsuite/26_numerics/valarray/69116.cc
! d5d3b5853192486f9f2a7cfd56dea5de  libstdc++-v3/testsuite/26_numerics/valarray/algo.cc
  3e191d68e11822f58de5e4bd15365ca5  libstdc++-v3/testsuite/26_numerics/valarray/binary_closure.cc
! 79876b6d16586ffd10a8a73e07ea8a14  libstdc++-v3/testsuite/26_numerics/valarray/const_bracket.cc
! 7865eed8cc293b019c47953c99cd1226  libstdc++-v3/testsuite/26_numerics/valarray/deduction.cc
! ca4f8dd5a0e090039f50878fb6399ba3  libstdc++-v3/testsuite/26_numerics/valarray/dr543.cc
! 4a078a3ebe8da881d3ca6a3fe8c22632  libstdc++-v3/testsuite/26_numerics/valarray/dr630-1.cc
! 101084ebe394a16f25c4ecb86d22759d  libstdc++-v3/testsuite/26_numerics/valarray/dr630-2.cc
! 4ec5dca8c2788972d96facfbfdaa947f  libstdc++-v3/testsuite/26_numerics/valarray/dr630-3.C
! ef09b0c9a3622381707276ccadce801b  libstdc++-v3/testsuite/26_numerics/valarray/init-list.cc
! a9349bd3de6cc69e383402ba1e0b17a0  libstdc++-v3/testsuite/26_numerics/valarray/moveable.cc
! 05640026f2b1d3e143c9b996c68b254b  libstdc++-v3/testsuite/26_numerics/valarray/name_lookup.cc
! 925e69a38e742a3c154258b25c9b0c2f  libstdc++-v3/testsuite/26_numerics/valarray/noexcept_move_construct.cc
! a34b5d3f8d77185c7417c91bdb4a46b7  libstdc++-v3/testsuite/26_numerics/valarray/operators.cc
! ed6b156a78ed213a98f55f76a80f0613  libstdc++-v3/testsuite/26_numerics/valarray/range_access.cc
! 65f7fa5160508f815aa48950d1084181  libstdc++-v3/testsuite/26_numerics/valarray/range_access2.cc
! 4b3645148947d3ac0c31673b985e795a  libstdc++-v3/testsuite/26_numerics/valarray/requirements/explicit_instantiation.cc
! 819466f00ec146822dad9ccecbb885c1  libstdc++-v3/testsuite/26_numerics/valarray/requirements/typedefs.cc
! 7a5d8fd98044dc3fa3fd890fefc1838f  libstdc++-v3/testsuite/26_numerics/valarray/subset_assignment.cc
! 2ecb479db4e79fe02d516aa753415a96  libstdc++-v3/testsuite/26_numerics/valarray/swap.cc
! af4d18e1094098602344a70893b4e17a  libstdc++-v3/testsuite/27_io/basic_filebuf/close/12790-1.cc
! 980cf48c1fa4cb2cd6c1110b3e4d331e  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/1.cc
! 6ebb53c42a056b8084c4a60dd3f42a0e  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/12790-1.cc
! 688430c0c0e68681706babd2c54ae5cf  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/12790-2.cc
! 51e7e3069e54cc12577f7ce97ba1e9d0  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/12790-3.cc
! 062653936cbfb94affc0d6145a801cbb  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/12790-4.cc
! 87102584bd798ba45ed5b01441c3ce3e  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/2.cc
! bede5c256746eb33a804b2426c50a457  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/3.cc
! 175f4a2f501092d24dbe92adc0417665  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/4.cc
! 9d370aca951f5d00986d8f7cb254dc85  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/4879.cc
! b16717f20e09d4780d9341a2e80d7828  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/5.cc
! 2afd59b7b031d3cb49d4e265254be7a3  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/9964.cc
! f67c9aa7d5807c9bfe72b4331d2b0f2a  libstdc++-v3/testsuite/27_io/basic_filebuf/close/wchar_t/12790-1.cc
! eeb6995d70388b22529f4bde30fd99a6  libstdc++-v3/testsuite/27_io/basic_filebuf/close/wchar_t/12790-2.cc
! 8bfa6ac7b93c75b287df3da04324d8d9  libstdc++-v3/testsuite/27_io/basic_filebuf/close/wchar_t/12790-3.cc
! 4939d46b814f140bb53691e436882440  libstdc++-v3/testsuite/27_io/basic_filebuf/close/wchar_t/12790-4.cc
! e2d961bc426ae21437725253c451934b  libstdc++-v3/testsuite/27_io/basic_filebuf/cons/2020.cc
! f1aea1138cb5a813894e852e0ed9319d  libstdc++-v3/testsuite/27_io/basic_filebuf/cons/char/1.cc
! 37a0299ad531f222fad6c2faf8e0da8b  libstdc++-v3/testsuite/27_io/basic_filebuf/cons/char/copy_neg.cc
! 84b52f83e9f8cafe698acc0ebf5a8824  libstdc++-v3/testsuite/27_io/basic_filebuf/cons/wchar_t/1.cc
! ea16a7d6f02b3cfcea5c6a61083c118c  libstdc++-v3/testsuite/27_io/basic_filebuf/cons/wchar_t/10132-1.cc
! 8d19a4855bbb061cdc6cb86a7e86bbc4  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/12206.cc
! ba71386cc84bae87f2d3ee0c5f9965c8  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/1.cc
! c19d3facebfe3ca6909f0694e0b05c59  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/13007.cc
! dcbcedf52cb66e472e5495b77c9a70c3  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/13171-1.cc
! d223d53d6610b6ad3613027a71844fed  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/13171-2.cc
! 569cc38cbd913675821c33c35c9f08e3  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/13171-4.cc
! 874408e9622c93e7a6c6c5ac63d86370  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/13582-2.cc
! cc579e4c1e82198ff58aedbac3fffa72  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/14975-1.cc
! 4ecf47398287ee72b0b7e9c30de56de8  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/2.cc
! 17781c41104c7d36a1486fec31b9cb2a  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/3.cc
! 9bc53e19c5abedd2ac4c9428a4f2c152  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/9322.cc
! ff2d951413d6eee05e3053e7210d5234  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/1.cc
! cf24c1305cb3ed39823b78ce074542c8  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/12868.cc
! 48792fb009c8cc7d4d1c228e75095058  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/13007.cc
! 9aad105388e4c36c4973ea7dc9953181  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/13171-3.cc
! fcb31dd94e9cadde9f8d23e1e422b565  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/13582-2.cc
! 55fd890c6794d320c6a141fb5e048577  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/13582-3.cc
! 307ac1ee6dffb82f48f78609c6d69329  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/14975-2.cc
! 5bb9d551691f66cc70dd9ca04d9e4ce4  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/2.cc
! 7a516a181bad37a61d4daae684c31ea1  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/3.cc
! 9332a6970218ee5665c8d687fe0fc9af  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/9322.cc
! f699e12bf875ee889d6d86ed02189b15  libstdc++-v3/testsuite/27_io/basic_filebuf/in_avail/char/1.cc
! 44df89f357282dd0625760334bd86b24  libstdc++-v3/testsuite/27_io/basic_filebuf/in_avail/char/9701-3.cc
! 8f0c89a2d03f39bc7302178b92d2c87d  libstdc++-v3/testsuite/27_io/basic_filebuf/is_open/char/1.cc
! 173f9a364ebba6f6983ce93a5ada60ab  libstdc++-v3/testsuite/27_io/basic_filebuf/open/12790-1.cc
! ef7d58eb67c5f7b97fc815f7fda300f4  libstdc++-v3/testsuite/27_io/basic_filebuf/open/char/1.cc
! f4adad773a109fab0dab0985ab3c2d21  libstdc++-v3/testsuite/27_io/basic_filebuf/open/char/2.cc
! 458ed35cb851dae3be287a1f090e5d21  libstdc++-v3/testsuite/27_io/basic_filebuf/open/char/3.cc
! 229d7d52c2d59fbabb01a6e558c63230  libstdc++-v3/testsuite/27_io/basic_filebuf/open/char/4.cc
! da8faffcc8cf53c47c2a7b94c9012174  libstdc++-v3/testsuite/27_io/basic_filebuf/open/char/5.cc
! b30bc5d1b8b5f3a6f1c0430928a29443  libstdc++-v3/testsuite/27_io/basic_filebuf/open/char/9507.cc
! 140df35ac9dddc605e428f72e8c56686  libstdc++-v3/testsuite/27_io/basic_filebuf/open/char/path.cc
! 1eb01a3ae900be1655f83899c173d359  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/1.cc
! 969283b300b3589c124c7e5364a9c092  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/13858.cc
! 9df8679db9833a0a212c5ac1e63eba06  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/2-unbuf.cc
! 609fc0be6b30ace6ef8e0e47274360b8  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/2.cc
! a8610c92936fc8695c0137d37bcd06c7  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/3599.cc
! 86e249b3d42244859952acdc16223fa5  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/9169.cc
! f9eb38a92a6686e59d17386620a63f35  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/9182-2.cc
! cba36f7436018634ffa2a41e33687b4e  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/9988.cc
! 32824b8da197f8d0a5310a6126e70a70  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-1.cc
! 1f5c04046fbfd3d51c5f99ac3bef345f  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-2.cc
! eadbf8566860749221746025d777fb2a  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-3.cc
! d621765eaded75afb41da866d4d9f56a  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-4.cc
! 000b27302aba069f319221e24396b134  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/wchar_t/13858.cc
! 242d33c6f0a4e3e05e1282939df95dda  libstdc++-v3/testsuite/27_io/basic_filebuf/pbackfail/char/9761.cc
! 2c5caf594cd1dab096127d8a2a8045a5  libstdc++-v3/testsuite/27_io/basic_filebuf/requirements/base_classes.cc
! 2f374cfc837eb1c09ca697ebd42260ae  libstdc++-v3/testsuite/27_io/basic_filebuf/requirements/explicit_instantiation.cc
! b1f2154553b76b920299d83790ce2513  libstdc++-v3/testsuite/27_io/basic_filebuf/requirements/typedefs.cc
! 32089cf7ad025ac82909aee739bee525  libstdc++-v3/testsuite/27_io/basic_filebuf/sbumpc/char/1-in.cc
! 5ca0fdcfe4dfa18572b08cb2da980e80  libstdc++-v3/testsuite/27_io/basic_filebuf/sbumpc/char/1-io.cc
! 52e5b975274a50abea78d6e3092005e0  libstdc++-v3/testsuite/27_io/basic_filebuf/sbumpc/char/1-out.cc
! 1bc2ea862f2bd44fa1d41410a203802e  libstdc++-v3/testsuite/27_io/basic_filebuf/sbumpc/char/2-in.cc
! 44d5d155b23eb74ddb6a54a05742237a  libstdc++-v3/testsuite/27_io/basic_filebuf/sbumpc/char/2-io.cc
! 48d7ec2f3252ce6086a1980b8d4fa438  libstdc++-v3/testsuite/27_io/basic_filebuf/sbumpc/char/2-out.cc
! 1f64594ff819186e6be4a41dbef3f5a2  libstdc++-v3/testsuite/27_io/basic_filebuf/sbumpc/char/9825.cc
! 1286fe7905c7bf01c98e3bb83056b8b3  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/10132-2.cc
! 85e29951240262b587199aeca482506c  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/12790-1.cc
! 25cc2aeda298bd6f483dbe5034b495af  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/12790-2.cc
! 2df608f07fbed0f4778e6a050e1dafac  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/12790-3.cc
! b701e974aa932ea0cc43d105a15a27d4  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/12790-4.cc
! f559e81a81917e52c88f099f4242740d  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/45628-2.cc
! 47278bdc6f5ce48e34bec6909a4cae77  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/1-in.cc
! d171cf196b1a7e2e747703cb03e5607d  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/1-io.cc
! 30096f054cae0e86640bdb37941cd16a  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/1-out.cc
! af4994e5707719e6dc3799d6669debf7  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/11543.cc
! 556f7b8934824f7c9fe1e479752d9624  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/12232.cc
! 8810a397f195b2fe5777418884ead907  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/12790-1.cc
! c2938c845155d273fa63e1fc33a267c6  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/12790-2.cc
! 81acdcd83755dbb8cdbf08368a394103  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/12790-3.cc
! 95533ae027e89e34a478ae71bf15557e  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/12790-4.cc
! 6c1331527acc8f796d62fe441aebea2d  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/2-in.cc
! 3fc6487dd008308d6b5aa146b85fd683  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/2-io.cc
! 038575d5647b654d9ed3f6e0aba45838  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/2-out.cc
! 44b840e023555c4d101552738f20b0a1  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/26777.cc
! 43eda59c5bb2eda2fedf6cf92545d352  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/3-in.cc
! d2af4e01af6f936beb9d4213d81a7070  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/3-io.cc
! 64f4550c044ca59e6c02acd2a09b4b13  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/3-out.cc
! 2ae1ceeb2082b3c6b820acc0c01fa73d  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/4.cc
! 6948eaab7572f4587e2c83565a04426b  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/45628-1.cc
! b5b1cdbbcd90728a6174bd438157f592  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/1.cc
! 9210c74bf65698b06ab96379848838b3  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/11543.cc
! 6e6e432c78f8af66c34973929f329984  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-1.cc
! 9a475854bad7f82c4fda0589a79a94ca  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-2.cc
! 6330675e8fc38fddb12a90027517dd0a  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-3.cc
! e88fbbfe63e90db0f71ee43aa46a0fe7  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-4.cc
! 58fce5d1a83eda0445351a86b22cb6c7  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/2.cc
! a35810bae37760a50f11114f11b0bc87  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/3.cc
! ff78752ef373337fb382d4112801da8c  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/4.cc
! c063a13c207d22d7d5d4eb90d191e879  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/9875_seekoff.cc
! d44fe2995806dc283f73a347397f770a  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/10132-3.cc
! f65d10d36742fdc38e12b8a82f8831db  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/12790-1.cc
! 4a25842c8ffdda16ac87b7ce7bc5a23a  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/12790-2.cc
! 08ddeb0f689a03697bd83995689e541d  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/12790-3.cc
! 560a9cfdbaa4ca7f03561e89ef0b2ec9  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/1-in.cc
! 88ffa0df322a6abc58a0586c6c50fa95  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/1-io.cc
! e5aa6251857449d0ef986717ecad46c6  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/1-out.cc
! 48e23c454d2a117a496f3d1d85e67899  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/12790-1.cc
! 14d45843aaed0ad398e2c61c7b008980  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/12790-2.cc
! a2c185cb10f654ddb2f47719425b2382  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/12790-3.cc
! 8903b89f23bf2917a461d249cea3957e  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/12790-4.cc
! f28caf6536b81c89feb7e9b9b433f08a  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/2-in.cc
! 24628848adcdab8520837f4e5f0b210b  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/2-io.cc
! fc86f0f38f7a4fb795f67dd011a6e092  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/2-out.cc
! 3df666092e52a60fe78026901714f92d  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/3-in.cc
! 81834d6fd2e7a81de31844de4e987173  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/3-io.cc
! cd9fe5982608c8eef8eb4fc1667c5a9e  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/3-out.cc
! fe4a8ba56afe06225df8fd3f6f04a706  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/wchar_t/1.cc
! 276d96d53c603fcc3a213be2e0e23524  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-1.cc
! 8479e8f33a683b73033303d00b23888c  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-2.cc
! 56fb38a5accfa9a6a9e902069f203085  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-3.cc
! 590a99200b2c2b8e888405b512693614  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-4.cc
! 292a69d78c9da06eba45c8cbb4949252  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/wchar_t/9874.cc
! cba591fd3b03e92a775dfff1936acd11  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/wchar_t/9875_seekpos.cc
! 20fc0645ab433a1fc9581d64c1acc996  libstdc++-v3/testsuite/27_io/basic_filebuf/setbuf/char/1.cc
! 4355f93e28e01fde7eeb3e32f709cbc0  libstdc++-v3/testsuite/27_io/basic_filebuf/setbuf/char/12875-1.cc
! 1bec30eb06d1aef6072a958a32a93c65  libstdc++-v3/testsuite/27_io/basic_filebuf/setbuf/char/12875-2.cc
! fceaaf3a2db5703c1dfaeb16b43a001b  libstdc++-v3/testsuite/27_io/basic_filebuf/setbuf/char/2.cc
! ba54dcdf503edf7bc801a7e9a56f06d7  libstdc++-v3/testsuite/27_io/basic_filebuf/setbuf/char/3.cc
! fdebfc252f343ea3968ae2e203acf88c  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetc/char/1-in.cc
! 7afa50be5e617ecf60e956c19eacbe5d  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetc/char/1-io.cc
! 71ae57bad0709cd4e37d56a03813f30b  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetc/char/1-out.cc
! 2b7a924b9dd97609780beb1fe841e2a8  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetc/char/2-in.cc
! 220284343a23a167cecbdcbd8ed28474  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetc/char/2-io.cc
! e914f33587a548327ef68846dc2bd57f  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetc/char/2-out.cc
! a02b121351e4a3c99bd8d5fa6c878701  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/1-in.cc
! b4b21cf44d858a8daa53c0928588425e  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/1-io.cc
! 0bae991558a8cb80920382d2df8488bd  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/1-out.cc
! becc44bf519b3beaa41c1ea040e9859d  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/2-in.cc
! 6763f4e779791454f40eaf7e8af410c0  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/2-io.cc
! 39d3f8a1dcf27c9dab6ce12cc1762422  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/2-out.cc
! 86f15ccbd44abb25af72f8367c6be0d6  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/3.cc
! 3b99ca0d20411a42fdcac90cab4d0fbf  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/81395.cc
! b3ffcdb2fcc18c6559bfa1032f02ea68  libstdc++-v3/testsuite/27_io/basic_filebuf/showmanyc/char/9533-1.cc
! 6de4cd864f997d81db12cc20310e3ee5  libstdc++-v3/testsuite/27_io/basic_filebuf/showmanyc/char/9533-2.cc
! eac8da00605a594af9edb9489e99f8fe  libstdc++-v3/testsuite/27_io/basic_filebuf/snextc/char/1-in.cc
! e7b0235fc7feb6bf150d492bf3a3d549  libstdc++-v3/testsuite/27_io/basic_filebuf/snextc/char/1-io.cc
! 011c9ce74b2a86793e7cc2f10cb13653  libstdc++-v3/testsuite/27_io/basic_filebuf/snextc/char/1-out.cc
! b8153525ac9db5264119ec94a9192b2d  libstdc++-v3/testsuite/27_io/basic_filebuf/snextc/char/2-in.cc
! c26319406b7fc025659fff41738a7378  libstdc++-v3/testsuite/27_io/basic_filebuf/snextc/char/2-io.cc
! 004320eb03efb16dd315222ce3f30584  libstdc++-v3/testsuite/27_io/basic_filebuf/snextc/char/2-out.cc
! bb2b5519774c8fd285e59c93f0f06954  libstdc++-v3/testsuite/27_io/basic_filebuf/sputbackc/char/1-in.cc
! 460be625930bb7eb9c0fffd36f80ada2  libstdc++-v3/testsuite/27_io/basic_filebuf/sputbackc/char/1-io.cc
! f511d729fb684f14720bb155d012e6c6  libstdc++-v3/testsuite/27_io/basic_filebuf/sputbackc/char/1-out.cc
! 333a45d5b857a436787cc85924d86481  libstdc++-v3/testsuite/27_io/basic_filebuf/sputbackc/char/2-in.cc
! 297573bc23558a55a5e042de7ba19060  libstdc++-v3/testsuite/27_io/basic_filebuf/sputbackc/char/2-io.cc
! 2fdf3ab75a7a4a09c29809fbcc7ee9ed  libstdc++-v3/testsuite/27_io/basic_filebuf/sputbackc/char/2-out.cc
! cee7893d3334f039f972d37ec77c093c  libstdc++-v3/testsuite/27_io/basic_filebuf/sputbackc/char/9425.cc
! 8a129998ccf7485a9bc10c49ba875a27  libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/1-in.cc
! 465eba554d297f3f8ae0d17777e80437  libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/1-io.cc
! c9772845b55400c43ba038e0dc4e2e42  libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/1-out.cc
! fcb8a2080f9428f85973fd876f3720ce  libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/1057.cc
! aba3fab5cf7b3ab7b973360b802092bb  libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/2-in.cc
! 0d2059adcc37aa08871170ab297f549d  libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/2-io.cc
! 796a58d5ddf9f1ba4bfdd6b0cfb70ee4  libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/2-out.cc
! 1e9468e3124f3ffe1cfa580c74e832cf  libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/59427.cc
! 807f8b54473bd107b4d7b5c50fd219b2  libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/9701-2.cc
! 2787daf258c57a7ff7eb48aeb786f92b  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/1-in.cc
! 5dee82b880bb6b67cbe76e3a757cf547  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/1-io.cc
! e2c25ff5d65473b35a3a6eac534957e1  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/1-out.cc
! 65efe82c544d92064f3594fe7cf91652  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/1057.cc
! 549228055cf907a80acd7f52f90294a8  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/2-in.cc
! 2224cf52527cb2791d3c39e061768485  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/2-io.cc
! f36ec97c53f542d7181aa4b2c329644f  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/2-out.cc
! 03bfcaa48b3ebd195b38546551d33cbc  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/59427.cc
! 03c43a0401100ee96f8b473cd0741883  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/9339.cc
! 0cdf6d7210e156cc7573eec5b145db8a  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/9701-1.cc
! 567ed1fcef87ff8936238f23a6857de4  libstdc++-v3/testsuite/27_io/basic_filebuf/sungetc/char/1-in.cc
! b41091a56c2bb92602089c51a6bc6203  libstdc++-v3/testsuite/27_io/basic_filebuf/sungetc/char/1-io.cc
! 3402e2678d8cb643ba86c3d41ac34bd5  libstdc++-v3/testsuite/27_io/basic_filebuf/sungetc/char/1-out.cc
! 79576911f84cfa5e7dde285e5dfcf683  libstdc++-v3/testsuite/27_io/basic_filebuf/sungetc/char/2-in.cc
! faaf6232b693b3f77872f36bd541e159  libstdc++-v3/testsuite/27_io/basic_filebuf/sungetc/char/2-io.cc
! 4d4689b5320ad8a4f9d53781f7067bba  libstdc++-v3/testsuite/27_io/basic_filebuf/sungetc/char/2-out.cc
! 64682146c4d3ce036acf137937341fc7  libstdc++-v3/testsuite/27_io/basic_filebuf/sync/char/1057.cc
! f0d235ed2d145d765d61958da538a46b  libstdc++-v3/testsuite/27_io/basic_filebuf/sync/char/9182-1.cc
! 244bf20867a77d3526ac247e8ee8ea17  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/10096.cc
! cda61495d720420b1895da2e5eb24889  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/char/1.cc
! 222b618d2bc0d82da7bf33f979d79e86  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/char/10097.cc
! a2387534968d032c57d90a6e75e6c745  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/char/2.cc
! 27ef2075d33c33b64dd550753d9120c7  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/char/3.cc
! c09e789b5a638417db1f2a7dfbbf5e4c  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/char/45841.cc
! 61c4e702bba07905d846646b7b24b920  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/char/9027.cc
! 3982dbd4a320c877c6ef23a3615fcb4c  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/1.cc
! 71c8803eafd4f88fdc29389fa1b05425  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/11389-1.cc
! 0ac7a52e53705ca0fab42c55a14fea34  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/11389-2.cc
! 1398b8e1b7c2125a3f14b6561a43664d  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/11389-3.cc
! 1c6ede42e700cbb8d67537e97147011c  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/11389-4.cc
! a6a1ef24cec1c8f1db85b307710b8078  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/11544-1.cc
! 02c76f1baa447e3fecd2073590167185  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/11544-2.cc
! ee6d535ca3f0268cc71c825c5faa9f32  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/11603.cc
! 1dce35608c82a8d37d5b07b162e11858  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/2.cc
! 09bb0d9ebc97a9e62d73d1ba6d94c9bc  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/3.cc
! d3b3d77f7c4af5da48eb3a7c45e064f2  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/4.cc
! b9b4a2c0ffd6c3c58b0ba59b552e9b70  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/45841.cc
! 9632b8ca65175e9433358450b62a1034  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/5.cc
! dbd9293ed59a28acb9ce659181ae404d  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/9178.cc
! c172fb6954f982efe71997843dae4b6c  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/9520.cc
! ee4c38ddb8a4a8c29938114ff4408581  libstdc++-v3/testsuite/27_io/basic_fstream/53984.cc
! 7198e18f9a8e23474579b802c5a32853  libstdc++-v3/testsuite/27_io/basic_fstream/assign/1.cc
! f7e8dc0f8e14c1de9ec0eb0758585941  libstdc++-v3/testsuite/27_io/basic_fstream/cons/1.cc
! 5e103eb5e2380807325a77c71bf2e473  libstdc++-v3/testsuite/27_io/basic_fstream/cons/base.cc
! 7e4e01a5f795f75f4bcdb9acee658ec9  libstdc++-v3/testsuite/27_io/basic_fstream/cons/char/1.cc
! a19cb2bec1b85e563e9fdac0bfd54149  libstdc++-v3/testsuite/27_io/basic_fstream/cons/char/path.cc
! 114eff72839b473b9c25517bb7229a8d  libstdc++-v3/testsuite/27_io/basic_fstream/cons/move.cc
! b0148e1f3d1b6c29695612e6e32df11e  libstdc++-v3/testsuite/27_io/basic_fstream/open/char/1.cc
! 7d0665a694c7ec9d8e56e3ec133c98ce  libstdc++-v3/testsuite/27_io/basic_fstream/open/char/path.cc
! 07dede39faca7ce553da99c262049645  libstdc++-v3/testsuite/27_io/basic_fstream/rdbuf/char/2832.cc
! 6d65cacd99449747277619f5fccc30c1  libstdc++-v3/testsuite/27_io/basic_fstream/requirements/base_classes.cc
! 703eaa1949462bd31b3cb49de25b862d  libstdc++-v3/testsuite/27_io/basic_fstream/requirements/explicit_instantiation.cc
! 3ce8c66adcbc2e41616af3980ba97042  libstdc++-v3/testsuite/27_io/basic_fstream/requirements/typedefs.cc
! 2851325653fa3556f611aedfd0952e2c  libstdc++-v3/testsuite/27_io/basic_ifstream/assign/1.cc
! d5d513c1841668b69ef880e3897a5009  libstdc++-v3/testsuite/27_io/basic_ifstream/cons/2020.cc
! 31b9a06115399f71421d0e207b745a62  libstdc++-v3/testsuite/27_io/basic_ifstream/cons/char/1.cc
! e01ff42f80aed3726f77edd78c11655b  libstdc++-v3/testsuite/27_io/basic_ifstream/cons/char/2.cc
! 8e2a65abd0bd2e6772f1d500817b4e72  libstdc++-v3/testsuite/27_io/basic_ifstream/cons/char/path.cc
! bf327ec294b531149b7b2b8d5f735c05  libstdc++-v3/testsuite/27_io/basic_ifstream/cons/move.cc
! eaa8f6f4f6de8d553937d276e3a57066  libstdc++-v3/testsuite/27_io/basic_ifstream/open/char/1.cc
! f040c9b5cd7c384f1f80f8fedd610c99  libstdc++-v3/testsuite/27_io/basic_ifstream/open/char/2.cc
! 52a1759e1d6087f495c664b9be11b81e  libstdc++-v3/testsuite/27_io/basic_ifstream/open/char/path.cc
! a58fe478eac37297fc962aac6b11f561  libstdc++-v3/testsuite/27_io/basic_ifstream/rdbuf/char/2832.cc
! 047ae4c451f48584ee9e1286ba84f45a  libstdc++-v3/testsuite/27_io/basic_ifstream/requirements/base_classes.cc
! 4da22a2c60f304ee133682d0490b1e31  libstdc++-v3/testsuite/27_io/basic_ifstream/requirements/explicit_instantiation.cc
! a2180c7a7e9c36b8dfc089b950dcd18e  libstdc++-v3/testsuite/27_io/basic_ifstream/requirements/typedefs.cc
! 4a603d156950fe9edebd58675bbfdefa  libstdc++-v3/testsuite/27_io/basic_ios/clear/char/1.cc
! 9c3bfebf7c0122cbc2631b1b36dcff09  libstdc++-v3/testsuite/27_io/basic_ios/cons/2020.cc
! 2124c4572c58a1bb36566229e4ffc0b7  libstdc++-v3/testsuite/27_io/basic_ios/cons/char/1.cc
! 44383dbf8342a83db5d8de586042e26c  libstdc++-v3/testsuite/27_io/basic_ios/cons/char/2.cc
! 8019754217d10e3fb4e86bba3b82e3c8  libstdc++-v3/testsuite/27_io/basic_ios/cons/char/3.cc
! 8240329a2db74025fe0e8cc8eba0f3d0  libstdc++-v3/testsuite/27_io/basic_ios/conv/bool.cc
! b392f182b326a88b5f26c82f0561536b  libstdc++-v3/testsuite/27_io/basic_ios/conv/bool_neg.cc
! f61f078ae99fd171e195efae121bee7d  libstdc++-v3/testsuite/27_io/basic_ios/conv/voidptr.cc
! 0bdb54a250350d0a83a13a4b94f0a148  libstdc++-v3/testsuite/27_io/basic_ios/copyfmt/char/1.cc
! 6251a97281af988bd29b7e738d0744df  libstdc++-v3/testsuite/27_io/basic_ios/copyfmt/char/2.cc
! c5508d8c2c680b8ebe2925ec1610afea  libstdc++-v3/testsuite/27_io/basic_ios/exceptions/char/1.cc
! e3361e9f54a834f8d600c1e11b61faef  libstdc++-v3/testsuite/27_io/basic_ios/exceptions/char/2.cc
! a44ed067fb175cc9e57b3e75dcb089d9  libstdc++-v3/testsuite/27_io/basic_ios/imbue/14072.cc
! 7d8a68b14effc72b7f69309989527b09  libstdc++-v3/testsuite/27_io/basic_ios/locales/char/1.cc
! 52610cb6c96f1351a5394750c7af409a  libstdc++-v3/testsuite/27_io/basic_ios/requirements/base_classes.cc
! 0bb5073986e525228183efa528d1980c  libstdc++-v3/testsuite/27_io/basic_ios/requirements/explicit_instantiation.cc
! 804c2bb517c26f3e87d5db7f0a8b97ff  libstdc++-v3/testsuite/27_io/basic_ios/requirements/typedefs.cc
! 1a021bbb09367a691d5105b4ec494722  libstdc++-v3/testsuite/27_io/basic_iostream/cons/16251.C
! 92b2aaf407bd9d52230fe945bfc294b5  libstdc++-v3/testsuite/27_io/basic_iostream/cons/2020.cc
! d0f59de505dfac1ca6c85035ff545bb5  libstdc++-v3/testsuite/27_io/basic_iostream/requirements/base_classes.cc
! 72d01e042f4ac7404581671da9f8888f  libstdc++-v3/testsuite/27_io/basic_iostream/requirements/explicit_instantiation.cc
! 39e1c4ca2f74c17b366695a39b6819d9  libstdc++-v3/testsuite/27_io/basic_iostream/requirements/typedefs.cc
! 3d5ad7af988c9ba95244d6c693b1307b  libstdc++-v3/testsuite/27_io/basic_istream/cons/3.cc
! a97bde1250af7fe816172eae66adde58  libstdc++-v3/testsuite/27_io/basic_istream/exceptions/char/9561.cc
! 55c214248bfb4d07c47da4dafdb465d4  libstdc++-v3/testsuite/27_io/basic_istream/exceptions/wchar_t/9561.cc
! cfd3a11df062911854da3c32cb94392e  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/01.cc
! f222b33f4ee4ff30f2a9c6d28c90cbf4  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/02.cc
! e3c9ce55ff80204a59eba16371cf71b9  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/03.cc
! 2a3194da73a8565bb9558cfe72614dc3  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/06.cc
! cb761c1c43688d7726c26bd3eb4be17a  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/07.cc
! e619710a67111f04f4106896b573e421  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/08.cc
! a4c3d10a0feca3cbbfad76895b688a9d  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/09.cc
! db005dc331c2d209c0a2ff1fff34b042  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/10.cc
! f5395cf44e29200990dc659a8d60ef8c  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/11.cc
! 91c6de48df5372daac78d9c8fc90f91d  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/12.cc
! 3cad37f2acc1928ec1df4e69889df5bf  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/13.cc
! 966aaa7eec09e463779dd31cde5ef677  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/9555-ia.cc
! 285e7dfc9c511f9e4929881f316e4df5  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/dr696.cc
! f9818c0758d0a9a7363a43518276585e  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/exceptions_badbit_throw.cc
! 24b63e25caa01acb0cabc32ceb1e8d3b  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/exceptions_failbit.cc
! 678b3675f3e08d6b0a174d3566454851  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/exceptions_failbit_throw.cc
! 58ae4235dbe5124f84213d7f95e1d083  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/pod/3983-1.cc
! 7c1a8a10ccf2b8765969840cf5b0e23b  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/01.cc
! 29273e320a3fd967b7f4f927408ac62f  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/02.cc
! 808c2cbdcede05d992f6644ecdf0718c  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/03.cc
! 5615cd01f41fce99df61b74b1e4501b3  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/06.cc
! b6821aa20c5f9463450950123a17c59b  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/07.cc
! 16a4e1af78a72dd6d63423653eb89e82  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/08.cc
! 536eec6cf30195c9957f272a66337a3e  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/09.cc
! 0e84ccce4d18e6c67454f07d9303ee8b  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/10.cc
! 40dfe819ea7769b3cb6972aabbb90ad9  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/11.cc
! a8c22f8ac6c8cd45be6467e9a817f2be  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/12.cc
! ac90626e69f998882be50138197633b1  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/13.cc
! 272af03f1f3d38bedeb866392046d755  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/9555-ia.cc
! 74ac8cce12ca401d8f1fd00c591becaa  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/dr696.cc
! 0dcdda2828f27538ebe42f77d48a5151  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/exceptions_badbit_throw.cc
! 9baf61fbf3393c364af652ebd5eea388  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/exceptions_failbit.cc
! e8c565ff7a58b35cd98d177c32ac8f22  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/exceptions_failbit_throw.cc
! afe55bc5792cb7c7e452f94500130216  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/1.cc
! e34b6eecf478c848514c8987e1b9093e  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/11095-i.cc
! e85f75015fa1c2014bc5f21857655045  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/2.cc
! 1ee3aedda83f6536644d6ccc0a3f1137  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/3.cc
! 714353301e43b882281e8cb3d90ed3f6  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/4.cc
! ab5a0f7ebae19f538c0f600f424d1886  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/9555-ic.cc
! 1a3858a0a055993313bb97263ce6fec4  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/9826.cc
! 57b5a821b26c18286e4a585daaafa1a1  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/pod/3983-2.cc
! a0985245f16cce97d2cda8264a7d7eba  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/wchar_t/1.cc
! f70115eb19ab2614effee18964ec9e75  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/wchar_t/11095-i.cc
! 048b2305ed2a8ebc8def4cc24b627f25  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/wchar_t/2.cc
! e1e12f461f26664b1a9df761deb3b9ee  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/wchar_t/3.cc
! 3507be582e33485bff1bf1db35be6491  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/wchar_t/4.cc
! d0b50f1a0b7fa7956df7b03880109a2a  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/wchar_t/9555-ic.cc
! a98bd26b990326ce62f8f213135dba74  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/1.cc
! 93b6e3d144b5393066de4e7e1153a206  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/2.cc
! ea44e92a87b7b23a5d2787334351d72d  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/26181.cc
! 2105dd51c7dcb6b8b4727fa1106e31d4  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/3.cc
! 071150caa01b24bf457c8a59caea7884  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/4.cc
! 2bb4f13bdd0391e68bd2a44042ee0659  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/9318-in.cc
! 4946b7a937c8d71641b951f167cbd9ff  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/9424-in.cc
! 73e4bb44450939916a00c7c4d6442775  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/9555-io.cc
! e596f27fa4e85bab357bb7b7e7620d6b  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/error_failbit.cc
! ac4b391382b5ded9f94a70be22385d6d  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/exceptions_badbit_throw.cc
! 27c7d7dcf6cff165fab04b50bd5fb481  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/exceptions_failbit_throw.cc
! 3b50921ab040b0a0e209908e76d99db5  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/exceptions_null.cc
! 7c5683bd8c1de21d19b09abbccc365e5  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/pod/3983-3.cc
! dbc239c94927380561e550bf2d7cc838  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/1.cc
! 83d9dd7cb7f2580dae43e20693294724  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/2.cc
! 07009eacd418e362360d170de7eeeb6b  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/26181.cc
! ba3215b9b4fcc2e930ebb35c03bad84b  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/3.cc
! 007654617f89f5b75b213f96409424e9  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/4.cc
! 38bbcaf0703055cecf09974d2f44a50e  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/9318-in.cc
! b3432c09a1a6a7fb76d7cf1e129097d8  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/9424-in.cc
! d0cc68c25fc0f4717034f4bd7828eacc  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/9555-io.cc
! 4a280fbb7afd4228939de6cc48a045b6  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/error_failbit.cc
! adfca380c13c09afa68a2e5a83b314e3  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/exceptions_badbit_throw.cc
! 41b4897d422d4678d3a89c0635f09907  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/exceptions_failbit_throw.cc
! 839348fcd5a8da474895c6dac1e7dcbc  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/exceptions_null.cc
! dd689985eb64f925b41b95ac9b3d0ff7  libstdc++-v3/testsuite/27_io/basic_istream/get/char/1.cc
! 83cbc1587aff28dedfe7c0399e3d6968  libstdc++-v3/testsuite/27_io/basic_istream/get/char/2.cc
! aad16d79b82f2030a35f386915e18cdc  libstdc++-v3/testsuite/27_io/basic_istream/get/char/3.cc
! 26ab2e6aa9425d4911b2cee7f4b0fffa  libstdc++-v3/testsuite/27_io/basic_istream/get/wchar_t/1.cc
! 46e6cca2e4e344d739d477499f42db8d  libstdc++-v3/testsuite/27_io/basic_istream/get/wchar_t/2.cc
! 46361e0a6b736d7c0c9ac4286f9a8e11  libstdc++-v3/testsuite/27_io/basic_istream/get/wchar_t/3.cc
! 394dbba6fb06c96f08d9091493a942df  libstdc++-v3/testsuite/27_io/basic_istream/getline/char/1.cc
! c35c382566157754d1bf35473e4324b4  libstdc++-v3/testsuite/27_io/basic_istream/getline/char/2.cc
! d56cf8aaabdd28e79b68d64c759af6eb  libstdc++-v3/testsuite/27_io/basic_istream/getline/char/3.cc
! ba2439ce36bd445c7e3002bb78a4e1f2  libstdc++-v3/testsuite/27_io/basic_istream/getline/char/4.cc
! 07409fc79ae4850d8983af7ea39cf647  libstdc++-v3/testsuite/27_io/basic_istream/getline/char/5.cc
! 28a242018aad730cca58b6613ea548c2  libstdc++-v3/testsuite/27_io/basic_istream/getline/char/6.cc
! 027fce0a65253f28210d7478809b83fd  libstdc++-v3/testsuite/27_io/basic_istream/getline/wchar_t/1.cc
! 6ecbc3bd2a8214e5f8ec666bade9accb  libstdc++-v3/testsuite/27_io/basic_istream/getline/wchar_t/2.cc
! a5537981ba10744528d69b3a85639091  libstdc++-v3/testsuite/27_io/basic_istream/getline/wchar_t/3.cc
! 6f461c1aa59cd474e8b3b8687d1d2112  libstdc++-v3/testsuite/27_io/basic_istream/getline/wchar_t/4.cc
! f0b02a190f4e945ef58843fa0de19018  libstdc++-v3/testsuite/27_io/basic_istream/getline/wchar_t/5.cc
! 1bae58b53ae7b967470b3ffa624976ad  libstdc++-v3/testsuite/27_io/basic_istream/getline/wchar_t/6.cc
! 469bc470db8af10801ec8fb291b9396f  libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/1.cc
! 1ffedbf6c7240046fcf96a6503031c0b  libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/2.cc
! 44c9d86fd7e63b1ab8ce150db10a38b5  libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/3.cc
! f0c2370fee78ffe9e5ec708b1b1f38c7  libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/6360.cc
! 841dfbfa97abed0ccd5abe88759dae5e  libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/7220.cc
! 15ab4fc4cc8065838c72e40314f952c0  libstdc++-v3/testsuite/27_io/basic_istream/ignore/wchar_t/1.cc
! 7b3caf19e4e3e824bc2e6b3202b09513  libstdc++-v3/testsuite/27_io/basic_istream/ignore/wchar_t/2.cc
! 2d51d263960d156d479b4421f63e0476  libstdc++-v3/testsuite/27_io/basic_istream/ignore/wchar_t/3.cc
! 5442a4b220ca89611154b3e67452dc5c  libstdc++-v3/testsuite/27_io/basic_istream/ignore/wchar_t/6360.cc
! 42c66c9cc5383f98aeb5bdedf68205b1  libstdc++-v3/testsuite/27_io/basic_istream/ignore/wchar_t/7220.cc
! 1e50b076ef4cbd8557c8713254ae3fe5  libstdc++-v3/testsuite/27_io/basic_istream/peek/char/1.cc
! 017775c07cca5832c362917bcd47665d  libstdc++-v3/testsuite/27_io/basic_istream/peek/char/12296.cc
! e7c86c2b9387411aff111063af5a1a68  libstdc++-v3/testsuite/27_io/basic_istream/peek/char/6414.cc
! 268138235edec15fc3cd3f8a5a22e66b  libstdc++-v3/testsuite/27_io/basic_istream/peek/wchar_t/1.cc
! a8bda11fb179612abe7080e80e22e318  libstdc++-v3/testsuite/27_io/basic_istream/peek/wchar_t/12296.cc
! d214bd7d13e7dbe0464ef6cf67010e0d  libstdc++-v3/testsuite/27_io/basic_istream/peek/wchar_t/6414.cc
! 57ad5dca01735abf186667519680c86f  libstdc++-v3/testsuite/27_io/basic_istream/putback/char/1.cc
! b67c1b6586c55f699b0b2089b6e0b965  libstdc++-v3/testsuite/27_io/basic_istream/putback/wchar_t/1.cc
! 04d5151482390da4a157347564f881a9  libstdc++-v3/testsuite/27_io/basic_istream/read/char/1.cc
! c4a03f0556a3b37665e9fbd747e134c5  libstdc++-v3/testsuite/27_io/basic_istream/read/char/2.cc
! d2a33e6b630bec732e614b061358f076  libstdc++-v3/testsuite/27_io/basic_istream/read/char/3.cc
! 76d04965c8a9cf5778eb7482ac60d284  libstdc++-v3/testsuite/27_io/basic_istream/read/wchar_t/1.cc
! b8fd0b1d05721a7fdea8039524644342  libstdc++-v3/testsuite/27_io/basic_istream/read/wchar_t/2.cc
! e8eda7c91966ab9c392d2d883a54fc91  libstdc++-v3/testsuite/27_io/basic_istream/read/wchar_t/3.cc
! 7a85a0fb03b0f6a589e95941ead4d4d1  libstdc++-v3/testsuite/27_io/basic_istream/readsome/char/6746-1.cc
! d21f4528f563af5a0f0065ae69973572  libstdc++-v3/testsuite/27_io/basic_istream/readsome/char/6746-2.cc
! 73b8cb92876c2ec1d99fa0536945b59c  libstdc++-v3/testsuite/27_io/basic_istream/readsome/char/8258.cc
! 999c154865af29d088dd3c0306fb8fc4  libstdc++-v3/testsuite/27_io/basic_istream/readsome/wchar_t/6746-1.cc
! ad08ee9dbd665742f3cf1fc07b3d82e7  libstdc++-v3/testsuite/27_io/basic_istream/readsome/wchar_t/6746-2.cc
! 618174e0d3e79ff683f903e92c929d36  libstdc++-v3/testsuite/27_io/basic_istream/readsome/wchar_t/8258.cc
! 4a3ec93f7a6e81f085faeb9b868d7817  libstdc++-v3/testsuite/27_io/basic_istream/requirements/base_classes.cc
! 2f21da0675da61d690b23b64cf95bc8e  libstdc++-v3/testsuite/27_io/basic_istream/requirements/explicit_instantiation.cc
! 54e23395f49542ca646d7b3b7796d863  libstdc++-v3/testsuite/27_io/basic_istream/requirements/typedefs.cc
! ffd3080c271da167b9b80ccd4d37f32c  libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/2.cc
! 77d5b3ac00572f1a0f4b18a20d66356e  libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/26211.cc
! 17394375e3faba0f06f579246e8d3af0  libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/8348-1.cc
! d9b7989978a94df8583e46291c0d1eab  libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/8348-2.cc
! f9a70599c3d135f9104b981de45b3d1e  libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/exceptions_badbit_throw.cc
! 55336b0769ce69a6ffc283c68ba9a146  libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/fstream.cc
! c1b57aa78b9597e9600e4b0858d8505a  libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/sstream.cc
! 02d5a50fa3fd39fbb22e6c82f2dbe11e  libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/2.cc
! 9835781be2c7af331648c7329c315075  libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/26211.cc
! 2ef618e9ec2da11d4e52699bb748ed9b  libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/8348-1.cc
! 78ac820717726d285ba983c1ed4aa50f  libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/8348-2.cc
! 7082a3c1b1a531419b790a3e39df6264  libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/exceptions_badbit_throw.cc
! b11e8ce7ac37d48755ee3214f4976675  libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/fstream.cc
! b4dabd8a6a581d32337f2c3a0a4d11c1  libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/sstream.cc
! 3f856ed33b1cf7656aa9c670ec6ca0ee  libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/1.cc
! e4fe1cdcccd2a548eb0aee2c8a8a8876  libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/12297.cc
! 647e83f94d1f2ddb5be696ab8790e456  libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/2.cc
! c28ec8dcc4ee647d5a0849db44799e83  libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/3.cc
! 58129290d46631805f53d7e797406757  libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/53984.cc
! 7b8bee896b6d438271cb92a3d686cec9  libstdc++-v3/testsuite/27_io/basic_istream/sentry/pod/1.cc
! e3c61576e3eb03c64182c60e2f1ad0bd  libstdc++-v3/testsuite/27_io/basic_istream/sentry/wchar_t/1.cc
! f4d7ef80d127a230ec1a55e0b8ae25a4  libstdc++-v3/testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc
! 76355db9110f84b8e49b288955983f11  libstdc++-v3/testsuite/27_io/basic_istream/sentry/wchar_t/2.cc
! 1f3d682caaf53e8c022c3d9f9ee6dbed  libstdc++-v3/testsuite/27_io/basic_istream/sentry/wchar_t/3.cc
! df2e9860a4fcb3a0a63635d0163ff57b  libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/1.cc
! 1255cf513bbc645078b638936175d7e8  libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/2.cc
! 812da139dfa01b93f1a234890fe3fdc4  libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/26211.cc
! 7893f327eb5d15106a7c9ade4dfec096  libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/8348.cc
! 8870631795e2b49969bd7a6f0b3f0838  libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/exceptions_badbit_throw.cc
! d407ec98e0d1959a6e07678197c5628f  libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/fstream.cc
! ab5bc1001a695e9a65c3f46faf3c6d57  libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/sstream.cc
! 67c307a0ddd06b8710a8d188e6a50904  libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/1.cc
! 69a4136a6e9eccbb6587bbd8c61b38ff  libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/2.cc
! b50174db7ff780cb7c19ec2142144948  libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/26211.cc
! d9d3ab02f3cbb21fed1179a2de9d15d3  libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/8348.cc
! b99a96b4d136804cc75cdcad6e1425a6  libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/exceptions_badbit_throw.cc
! cd24e2c033286db23d76c891197df381  libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/fstream.cc
! 425f2c5170aec124d06ab46a58850ba2  libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/sstream.cc
! f8a6389b0522e01fbcf52b7164b8c3c5  libstdc++-v3/testsuite/27_io/basic_istream/ws/char/1.cc
! 08fcadc9fab49632ee0d5fc2bab97183  libstdc++-v3/testsuite/27_io/basic_istream/ws/wchar_t/1.cc
! 02f1f678377d209670e1b4199a3faa04  libstdc++-v3/testsuite/27_io/basic_istringstream/assign/1.cc
! cbc490ab1e478f05cc10a9696978c324  libstdc++-v3/testsuite/27_io/basic_istringstream/cons/2020.cc
! df7df743037c39fe777f7fca10cf1ccb  libstdc++-v3/testsuite/27_io/basic_istringstream/cons/move.cc
! 06501f3c190d0a094e064ff686cb51dc  libstdc++-v3/testsuite/27_io/basic_istringstream/rdbuf/char/2832.cc
! 25d28d62e377b1af17897f447fb58d6a  libstdc++-v3/testsuite/27_io/basic_istringstream/rdbuf/wchar_t/2832.cc
! 7979b7ab69f15767c9a3a95ef46ebffb  libstdc++-v3/testsuite/27_io/basic_istringstream/requirements/base_classes.cc
! cd15f964cb6ade67343ff61cbbe22704  libstdc++-v3/testsuite/27_io/basic_istringstream/requirements/explicit_instantiation.cc
! ba9e0ee0164644e1d770351fde182330  libstdc++-v3/testsuite/27_io/basic_istringstream/requirements/typedefs.cc
! dab17dc2a217fa0d7a9087a6d8ea4da5  libstdc++-v3/testsuite/27_io/basic_istringstream/str/char/1.cc
! 4de88fb88edc52b4b9572656a48f47ef  libstdc++-v3/testsuite/27_io/basic_istringstream/str/wchar_t/1.cc
! 5b30c7f8c2b6349d753025324ee4a751  libstdc++-v3/testsuite/27_io/basic_ofstream/assign/1.cc
! af954a8c7776433d778677869c48c951  libstdc++-v3/testsuite/27_io/basic_ofstream/cons/2020.cc
! 72adc31040439fe88cadefd3531f2eec  libstdc++-v3/testsuite/27_io/basic_ofstream/cons/char/1.cc
! 655ecea548b53203fc6e95ce3abe2881  libstdc++-v3/testsuite/27_io/basic_ofstream/cons/char/2.cc
! 45a7ada0a8bf680af98df9e76277e74b  libstdc++-v3/testsuite/27_io/basic_ofstream/cons/char/path.cc
! d423e2041e3b6a9862232ba04dfbf30d  libstdc++-v3/testsuite/27_io/basic_ofstream/cons/move.cc
! 77d3a2b2db64087df90c16d4c4837aa2  libstdc++-v3/testsuite/27_io/basic_ofstream/open/char/1.cc
! b3ed2aa3db3872271fb80b5d0f5c9938  libstdc++-v3/testsuite/27_io/basic_ofstream/open/char/2.cc
! 4a55441955976809c2e8adfece50eb84  libstdc++-v3/testsuite/27_io/basic_ofstream/open/char/path.cc
! a2e1e5db6554be15e6744e9815ab5d10  libstdc++-v3/testsuite/27_io/basic_ofstream/pthread2.cc
! fef27bf46f4260e0d983adaac0307cc7  libstdc++-v3/testsuite/27_io/basic_ofstream/rdbuf/char/2832.cc
! 5649ebb2e3f11ec50d94e1e9b42cc859  libstdc++-v3/testsuite/27_io/basic_ofstream/requirements/base_classes.cc
! d3a8c329b2a74991d541e575ff1e881e  libstdc++-v3/testsuite/27_io/basic_ofstream/requirements/explicit_instantiation.cc
! 63ae233006634bcc9ace378994b64ec1  libstdc++-v3/testsuite/27_io/basic_ofstream/requirements/typedefs.cc
! 32f1435ba8e8bb3fd473b21622113012  libstdc++-v3/testsuite/27_io/basic_ostream/cons/2020.cc
! d1ff35f7c317ba13fa15ce1ac9188782  libstdc++-v3/testsuite/27_io/basic_ostream/cons/char/9827.cc
! bbb9d18ad67d656dd3ab78885c93690d  libstdc++-v3/testsuite/27_io/basic_ostream/cons/char/null.cc
! 40454191d760f848813c29b1b7663535  libstdc++-v3/testsuite/27_io/basic_ostream/cons/wchar_t/9827.cc
! 2a9a889fbe47800cfa1b50a2812f53a0  libstdc++-v3/testsuite/27_io/basic_ostream/endl/char/1.cc
! 3329e4b2e84521d3fac17041be9a39c8  libstdc++-v3/testsuite/27_io/basic_ostream/endl/wchar_t/1.cc
! 457125bab0aec8607c583bf2acc903b9  libstdc++-v3/testsuite/27_io/basic_ostream/ends/char/1.cc
! c80d6dd54875f61516a434163b7a4083  libstdc++-v3/testsuite/27_io/basic_ostream/ends/char/2.cc
! 3a5ab552956810986d659cceeadc7879  libstdc++-v3/testsuite/27_io/basic_ostream/ends/wchar_t/1.cc
! e3672585d136edf3834208c7151e8e8a  libstdc++-v3/testsuite/27_io/basic_ostream/ends/wchar_t/2.cc
! f988f7fc9c2c276ecef318b2e2c25060  libstdc++-v3/testsuite/27_io/basic_ostream/exceptions/char/9561.cc
! 8c540bf0a9b6434dd47d9520dbafa2ac  libstdc++-v3/testsuite/27_io/basic_ostream/exceptions/wchar_t/9561.cc
! 7459faf049aa297d615ebb230763b19c  libstdc++-v3/testsuite/27_io/basic_ostream/flush/char/1.cc
! aede4cb14c8b0dfbc5857e825e068333  libstdc++-v3/testsuite/27_io/basic_ostream/flush/char/2.cc
! 0fa8d0caf4f085d8475842b15f3c0c07  libstdc++-v3/testsuite/27_io/basic_ostream/flush/char/exceptions_badbit_throw.cc
! 50da81f6ce3ddbd0206476abeb1efc71  libstdc++-v3/testsuite/27_io/basic_ostream/flush/wchar_t/1.cc
! 8d69c88a5be2f919f037d4a537d70573  libstdc++-v3/testsuite/27_io/basic_ostream/flush/wchar_t/2.cc
! 6622f6f944b110d082bc2f19fa9dd243  libstdc++-v3/testsuite/27_io/basic_ostream/flush/wchar_t/exceptions_badbit_throw.cc
! da27cca06f1bcfb3524ce3eb87b5f23c  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/1.cc
! 2f2834c9780623e0e782f00f3536cfff  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/2.cc
! 70a425ccb8ba90c5d6f58feaedc151c9  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/23871.cc
! a68022e5944e1d07b63e908a5e4b77df  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/3.cc
! b09ddea3b04a03b796e983e141fe0970  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/31031.cc
! 9669732add84227896261f727acb6f13  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/4.cc
! 52e8b83296f8623205e4b075309e5e33  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/4402.cc
! 66a792112973947f631674ca1166e67b  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/5.cc
! 411c14ca611e48faa724f3ff2e07b105  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/6.cc
! 66a24e566e7f3249e0bffbf178b81b94  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/7.cc
! b28bf1a465661248ce21c43ce783db61  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/9555-oa.cc
! aab0e476eecf40f4c1c8119121ac4cce  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/exceptions_badbit_throw.cc
! af63695d765cd696bd76ea92152de9a5  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/exceptions_failbit_throw.cc
! b3d2fff670eaaae6cfeeea993df3c3e9  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/hexfloat.cc
! 1f8ca9ec00f6ba747a92b7e12fed707e  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/pod/23875.cc
! 26438343190a8ef59021de002eccfa87  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/1.cc
! 6e1756792eef66af146bb2d587812445  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/2.cc
! f3cb4877f71e1b9e12d266ca07966f78  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/3.cc
! 855d9681bdf5b74ddff2077a79d96a45  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/31031.cc
! 1d03d41314419ea41490de00b7e57452  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/4.cc
! 2de0fc30a338e65f4e645a0cc84f9a3e  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/4402.cc
! 1f059bd9aa1b8b8baef382b788ea5f9d  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/5.cc
! 0a1227bcce1d249aca8d9c4430dc55bb  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/6.cc
! 2b5a4d49bf00f8546d073a9fb3baccdd  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/7.cc
! d5203a3f1c1026580b83e9b001e04bbf  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/9555-oa.cc
! f28448205325096f5a5e16e7a3628f1b  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/exceptions_badbit_throw.cc
! 21f81956a4346cc46ca56ac50a1a4a29  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/exceptions_failbit_throw.cc
! 0a16189c93df13e59554d62d809fa5ab  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/1.cc
! 64770a125c447e265c78fdf2cc00bd3e  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/11095-oa.cc
! 4129fbf00a7190c11a6f138383ccdd55  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/11095-ob.cc
! af3c0d9c0a5325d58901ffcdd91c552e  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/11095-oc.cc
! 9434ceac148fd04eae05654fb1d57b73  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/2.cc
! 6854e9699d1e110ade4466076c2dd711  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/28277-3.cc
! e47d84276bf95587ed08f76bac590598  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/28277-4.cc
! 8119bd75b9c4e7b55c882997f8a9b203  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/3.cc
! 693cf98dec1614f66b0bbbf491874d2a  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/4.cc
! 3489b75c0b08830ab73c15c7f887ab1b  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/5.cc
! c1d117a7ef6fdf13d57c432a59a1342d  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/6.cc
! 3e9ac73e4de37d80176eb145ecb371da  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/8.cc
! 34b9def98ad10db899278400cc460ea3  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/9555-oc.cc
! 2661fc6191a49c1d6100f6a54cae3bdb  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/1.cc
! 7a4cee4d0e0daca8d7b2b30d76f44862  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/11095-od.cc
! c5d099f5cf23b7c878244ebc6e45bd64  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/11095-oe.cc
! e210107f797a071582be17d7244b8a90  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/11095-of.cc
! 83bb1adbea852c41baeba8cdd247efa2  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/2.cc
! 57e9927ba99672768d57d1029c476122  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/28277-1.cc
! 041a16f509e745bcd89e24907fc1c3e4  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/28277-2.cc
! ea46a580535048287671fd3413ed96dc  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/28277-3.cc
! f27fdccdcbd5142151c73efc5b63b2e1  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/28277-4.cc
! c6c9e99fbfaf9935d932ba7a6fc66433  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/3.cc
! 28b3a2c3854ecbfac3d5caee86501bac  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/4.cc
! e35d20a9110ccf0aaa0d19c1743146cd  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/5.cc
! 22694f63f361cc8954d3e92d72f550df  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/6.cc
! c9fed72518b1b429ac38d714d7680ce8  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/7.cc
! 66d21e9f3ab169ae5b38a5b81ebd9161  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/8.cc
! 595c80e09bf92f5a21b34c1b59d6c858  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/9555-oc.cc
! 4013387df3f3fe1165de38a8a389e2eb  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/1.cc
! f0fc2e7eed45b18000fdbade7c81c9b0  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/2.cc
! b81711dea00741e9a13025e55e2fbed1  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/3.cc
! 1eae14eaebc501616f0a5eaae9a8b8df  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/4.cc
! 66ef9180051265c028fa9b01846f6fb3  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/5.cc
! b75d05ab6431b11a7035f0b0f0b151f9  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/6.cc
! 0f985c91ad5e41bc1231bf9b19fa8885  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/9318-out.cc
! 405c7f23ae794fd7043632b19cb5f917  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/9424-out.cc
! f5e53015a0fd94cb4e2d3b84a75809f8  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/9555-oo.cc
! 4f76b2aa295641ded359663ee0be1906  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/error_code.cc
! 7a2e1a9db639d42c10a3628d9ffb2086  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/error_failbit.cc
! 801711c0b8b2cd439b7f28dfc976b4f3  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/exceptions_badbit_throw.cc
! 2a395341fb23c5cf131ba5f2ce4ec00b  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/exceptions_failbit_throw.cc
! 295731e83069d0149700efa6a35d358e  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/exceptions_null.cc
! b97f19a208ee7080dc0544257a49bbdc  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/1.cc
! d8e663ac5ec1134a0868906dbc76a9d2  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/2.cc
! 07e108f6f95eaaba7371da1b57d4fb74  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/3.cc
! 5dab4e3b9849a5ac47202773bdbe5c77  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/4.cc
! a608eb20d2258b7bee2aecfe90ba441f  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/5.cc
! d5c7db80b7522b3d10a58104fafac610  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/6.cc
! 16c53d8e60cc6c71f1b04a1219b87610  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/9318-out.cc
! 8c1684663713f8e1a56207989bdd17e9  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/9424-out.cc
! bbdffc997a0122df7fa3c381270d2616  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/9555-oo.cc
! af1ca42daeeaf12a3865d626ce876b1f  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/error_code.cc
! 20d62c2917f73119992dd937904118d8  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/error_failbit.cc
! b8276acc8b2705844dc29d08ca703377  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/exceptions_badbit_throw.cc
! ec5cc29e05f67051a519bbafc115a83d  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/exceptions_failbit_throw.cc
! 6b5af5f081180525f0f52c8120f2b0e0  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/exceptions_null.cc
! 40658c6263c06981ac93e6e4af8e9bce  libstdc++-v3/testsuite/27_io/basic_ostream/put/char/1.cc
! 470ab1f9de6374284f6f806bf913e095  libstdc++-v3/testsuite/27_io/basic_ostream/put/wchar_t/1.cc
! fac2720c44f94b67b6911b0bbc289456  libstdc++-v3/testsuite/27_io/basic_ostream/requirements/base_classes.cc
! f6de4fbc3c01dfde88689f3d94251bc6  libstdc++-v3/testsuite/27_io/basic_ostream/requirements/explicit_instantiation.cc
! 189fc1daeebfaa2a9e3dc06fabd9c5db  libstdc++-v3/testsuite/27_io/basic_ostream/requirements/typedefs.cc
! 0e1e62aa1cd5e64ec53d8eb2b1d3c875  libstdc++-v3/testsuite/27_io/basic_ostream/seekp/char/2346-fstream.cc
! edc29a954b0fe10dd692cc19ab5435f0  libstdc++-v3/testsuite/27_io/basic_ostream/seekp/char/2346-sstream.cc
! 03f2bec221f60aa3aa882e491cd0eb0a  libstdc++-v3/testsuite/27_io/basic_ostream/seekp/char/exceptions_badbit_throw.cc
! ff69e434b0311a11a5be2544a38ec44a  libstdc++-v3/testsuite/27_io/basic_ostream/seekp/wchar_t/2346-fstream.cc
! c0e23663c2fd1cd6679d624537c8d0f1  libstdc++-v3/testsuite/27_io/basic_ostream/seekp/wchar_t/2346-sstream.cc
! ca0c31a3a8b9c6d81f70b076cc4a4ec2  libstdc++-v3/testsuite/27_io/basic_ostream/seekp/wchar_t/exceptions_badbit_throw.cc
! cbabb0a28de81620823c8f5a54cd6120  libstdc++-v3/testsuite/27_io/basic_ostream/sentry/char/1.cc
! 6c23c48eb37d62f7dbea5006d5c38377  libstdc++-v3/testsuite/27_io/basic_ostream/sentry/char/2.cc
! d79c72ba057da146f84f39c0149e8e7f  libstdc++-v3/testsuite/27_io/basic_ostream/sentry/pod/1.cc
! 708adafb1b10abec3e18388984e49892  libstdc++-v3/testsuite/27_io/basic_ostream/sentry/wchar_t/1.cc
! c28ffa0d46e958eee20f2db9fcfda397  libstdc++-v3/testsuite/27_io/basic_ostream/sentry/wchar_t/2.cc
! 7e36810bb3cd92f033eeb1bc75a8d761  libstdc++-v3/testsuite/27_io/basic_ostream/tellp/char/1.cc
! d04fb3a11f6d1c5f83c76d11b4f1e32f  libstdc++-v3/testsuite/27_io/basic_ostream/tellp/char/2.cc
! cc4a6d053659c67f68ef37cf86ae1b1c  libstdc++-v3/testsuite/27_io/basic_ostream/tellp/char/exceptions_badbit_throw.cc
! 75e06ee82d7c94fdfe2cd30caafa3b19  libstdc++-v3/testsuite/27_io/basic_ostream/tellp/wchar_t/1.cc
! 2e2384546ae989227ccfcd784b346a0c  libstdc++-v3/testsuite/27_io/basic_ostream/tellp/wchar_t/2.cc
! fc133b8cc75c4afb6938c06bc5ea75ff  libstdc++-v3/testsuite/27_io/basic_ostream/tellp/wchar_t/exceptions_badbit_throw.cc
! 32a81ca299726ddd5daf3608b6d1e584  libstdc++-v3/testsuite/27_io/basic_ostream/write/char/1.cc
! 39e337e51cc4fecdd7ec4f7bdf7c4568  libstdc++-v3/testsuite/27_io/basic_ostream/write/wchar_t/1.cc
! bdb876ef21bb8766f4c3f55bc4919177  libstdc++-v3/testsuite/27_io/basic_ostringstream/assign/1.cc
! d823b2ecf97cac70f246ea50a9617c57  libstdc++-v3/testsuite/27_io/basic_ostringstream/cons/2020.cc
! 439b13d751974d3282d364c6309742da  libstdc++-v3/testsuite/27_io/basic_ostringstream/cons/char/3.cc
! 1293b0ffa1c1d3d33573f32e9635c1b6  libstdc++-v3/testsuite/27_io/basic_ostringstream/cons/move.cc
! 8cea74501c09d3e1f088916d070c3a10  libstdc++-v3/testsuite/27_io/basic_ostringstream/cons/wchar_t/3.cc
! 3067bda09035f5ba53fd5dafef760289  libstdc++-v3/testsuite/27_io/basic_ostringstream/pthread3.cc
! dde98e3f73bafd1f6b4cdf7354a01723  libstdc++-v3/testsuite/27_io/basic_ostringstream/rdbuf/char/2832.cc
! e9de34684f77ede0df832fece7c26e52  libstdc++-v3/testsuite/27_io/basic_ostringstream/rdbuf/wchar_t/2832.cc
! 9d18ca44d9afc06fa11c8fe5f3cb8e49  libstdc++-v3/testsuite/27_io/basic_ostringstream/requirements/base_classes.cc
! 9191cc5a469596c31b0965ce408da75e  libstdc++-v3/testsuite/27_io/basic_ostringstream/requirements/explicit_instantiation.cc
! b9ac8fac8db648fa9ace4b09b7e83464  libstdc++-v3/testsuite/27_io/basic_ostringstream/requirements/typedefs.cc
! 32d8fb86ae5ec28447c2824b0125d919  libstdc++-v3/testsuite/27_io/basic_ostringstream/str/char/1.cc
! 0dbebe3c858296d8758202380920392d  libstdc++-v3/testsuite/27_io/basic_ostringstream/str/char/2.cc
! daf4df9cea96c7cd639028ee60c684da  libstdc++-v3/testsuite/27_io/basic_ostringstream/str/wchar_t/1.cc
! b4ffe9d9d6911ae67072dca604246d9f  libstdc++-v3/testsuite/27_io/basic_ostringstream/str/wchar_t/2.cc
! 0f25cc4f9004d1241b9e7ca16514b062  libstdc++-v3/testsuite/27_io/basic_streambuf/cons/2020.cc
! 3d161caaae19660e3b92e6a0b448f440  libstdc++-v3/testsuite/27_io/basic_streambuf/cons/57394.cc
! 3b726de028037549e49d5d5049c9ca5c  libstdc++-v3/testsuite/27_io/basic_streambuf/cons/char/1.cc
! c88b22f300577c611ae517aae3f0f0d3  libstdc++-v3/testsuite/27_io/basic_streambuf/cons/wchar_t/1.cc
! 379d1a6dcc767398e3a66a6e3e71680f  libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/char/1.cc
! c288a8eb3449a146a892ae4ff54042fd  libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/char/13007-1.cc
! e78351f0b71bb05d52cc80b629ce6d49  libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/char/13007-2.cc
! db9fd884942e92c65354b4f28bcf9702  libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/char/9322.cc
! 6303f462759878c7e85768004c40b664  libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/wchar_t/1.cc
! 838cc4cafd32a568bc65e2577ca4bd45  libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/wchar_t/13007-1.cc
! 4c29a963ad2dcf7e16c297548d96395b  libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/wchar_t/13007-2.cc
! f95ac3101e6f52f957c3dd70a3a4b3c3  libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/wchar_t/9322.cc
! 1f08dd035a94a5aa59f663bbf4d136ff  libstdc++-v3/testsuite/27_io/basic_streambuf/in_avail/char/1.cc
! 1966cef0e18ee16b32753e068e4c75aa  libstdc++-v3/testsuite/27_io/basic_streambuf/in_avail/wchar_t/1.cc
! e3c7136805f01d4c85abfac6c0633728  libstdc++-v3/testsuite/27_io/basic_streambuf/overflow/char/1.cc
! f704487d8981686b5d08204b5c310492  libstdc++-v3/testsuite/27_io/basic_streambuf/overflow/char/2.cc
! 319e789f9b7eb5f70710de4f1bd12cd1  libstdc++-v3/testsuite/27_io/basic_streambuf/overflow/char/3599.cc
! 97ca4c283ff1e5aace76ac3e78a4b843  libstdc++-v3/testsuite/27_io/basic_streambuf/overflow/wchar_t/1.cc
! 6e16844a0405cfcf91df65fc979e5b10  libstdc++-v3/testsuite/27_io/basic_streambuf/overflow/wchar_t/2.cc
! cf284e0c2a2a5c28b49893725621b2f6  libstdc++-v3/testsuite/27_io/basic_streambuf/overflow/wchar_t/3599.cc
! 8a37bfd155cd590b1bf41e8c26506498  libstdc++-v3/testsuite/27_io/basic_streambuf/requirements/base_classes.cc
! 37d35d348d508f6814cd77e7acc8c26c  libstdc++-v3/testsuite/27_io/basic_streambuf/requirements/typedefs.cc
! 19e2ec372c36df0c4c7efa64d13ace3b  libstdc++-v3/testsuite/27_io/basic_streambuf/sgetc/char/1.cc
! 6082be63e62251908f718a9373da0a3e  libstdc++-v3/testsuite/27_io/basic_streambuf/sgetc/char16_t/80624.cc
! 530d2e35290a0b7d56e62d5e2fd1550c  libstdc++-v3/testsuite/27_io/basic_streambuf/sgetc/wchar_t/1.cc
! ccd45908a29f7c82967c4e6465d6a877  libstdc++-v3/testsuite/27_io/basic_streambuf/sgetn/char/1.cc
! 262303609b22b20bee17441158a1d621  libstdc++-v3/testsuite/27_io/basic_streambuf/sgetn/wchar_t/1.cc
! b4efc9cb4b2c1376ba285b384aebcfa2  libstdc++-v3/testsuite/27_io/basic_streambuf/sputbackc/char/9538.cc
! 55636cc3581ade9acefbb0033db44347  libstdc++-v3/testsuite/27_io/basic_streambuf/sputbackc/wchar_t/9538.cc
! 2d55fca77b893900b17c7156dad2b0bb  libstdc++-v3/testsuite/27_io/basic_streambuf/sputc/char/1057.cc
! 1d6b2d746869a51b3424a339476f39c0  libstdc++-v3/testsuite/27_io/basic_streambuf/sputc/char16_t/80624.cc
! 24665e25ea5892831fe29b934f7b071e  libstdc++-v3/testsuite/27_io/basic_streambuf/sputc/wchar_t/1057.cc
! 29b42e1b8408c4ed6e085ce25cc0a514  libstdc++-v3/testsuite/27_io/basic_streambuf/sputn/char/1.cc
! f2537b1e03ac6cd652b7a95229f33a7d  libstdc++-v3/testsuite/27_io/basic_streambuf/sputn/char/1057.cc
! 17fafbdea7ca752830948067540befe5  libstdc++-v3/testsuite/27_io/basic_streambuf/sputn/wchar_t/1.cc
! d4b3e52c6f724c446a9dafe06cbdf96a  libstdc++-v3/testsuite/27_io/basic_streambuf/sputn/wchar_t/1057.cc
! 17de3a9ac25322d82b01fd0353215b0a  libstdc++-v3/testsuite/27_io/basic_streambuf/sync/char/1057.cc
! ba50409955522528761990e2b9b9a45c  libstdc++-v3/testsuite/27_io/basic_streambuf/sync/wchar_t/1057.cc
! 4c0d1ec9a950a245ea570b719ed73b4e  libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/2020.cc
! f007c113105575e0dde57e7683ee7d30  libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/81381.cc
! 7c4f40e4c3feebc23e8d425677d1fa3f  libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/char/1.cc
! babc99e66572a1a0f932c3cf77b03d79  libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/wchar_t/1.cc
! 9d1b8575abe20e134cb578a19a0f9c8f  libstdc++-v3/testsuite/27_io/basic_stringbuf/imbue/char/1.cc
! 22e82a7af646de0168ca85621ffa4379  libstdc++-v3/testsuite/27_io/basic_stringbuf/imbue/char/9322.cc
! 954c7b3e573f4b2b86242c30fea313ec  libstdc++-v3/testsuite/27_io/basic_stringbuf/imbue/wchar_t/1.cc
! d192b0be083ec16860a580916b8ada32  libstdc++-v3/testsuite/27_io/basic_stringbuf/imbue/wchar_t/9322.cc
! 160232860463180dd19695cf98c08186  libstdc++-v3/testsuite/27_io/basic_stringbuf/in_avail/char/1.cc
! 456f989b40469b5cfd6dda0e0258611e  libstdc++-v3/testsuite/27_io/basic_stringbuf/in_avail/char/21955.cc
! 8867cfe205314d895b2167483765dbd4  libstdc++-v3/testsuite/27_io/basic_stringbuf/in_avail/wchar_t/1.cc
! 727da78866c31e456127335480fd1e1d  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/char/1.cc
! 0c8f106fb27ba638c98082fb7c7cf0b1  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/char/2.cc
! f78a6c4c7f00d59fee2ae7aa8198057f  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/char/26250.cc
! f4674797d0bfc0a704e97d6ce2cd796c  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/char/3599.cc
! d82bd55ea915b96f5b50cee95d438010  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/char/9988.cc
! 97c0dc937969dd429bc305552829878f  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/wchar_t/1.cc
! fe3381892f8ec3a764058894796e6122  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/wchar_t/2.cc
! d037161f8d1bb9b1ec5083366db97abe  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/wchar_t/26250.cc
! 8268708db069ce8265df5e189f59bbf4  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/wchar_t/3599.cc
! 77a81a1ffc1dd78f4159917c9815d388  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/wchar_t/9988.cc
! 90671e88b4ea0f7d6e240d74ee6a8f3d  libstdc++-v3/testsuite/27_io/basic_stringbuf/pbackfail/char/1.cc
! 82a5ab0048f32bfd094c29a75075a0c0  libstdc++-v3/testsuite/27_io/basic_stringbuf/pbackfail/char/2.cc
! 0bd240d08f246cec4f98c5eb0df1d62f  libstdc++-v3/testsuite/27_io/basic_stringbuf/pbackfail/wchar_t/1.cc
! 61c4b5c5139b00eb5d1fe6bfb74a6ca9  libstdc++-v3/testsuite/27_io/basic_stringbuf/pbackfail/wchar_t/2.cc
! 6e661f150c7b81cc870240134fffebf3  libstdc++-v3/testsuite/27_io/basic_stringbuf/requirements/base_classes.cc
! ac964f6012a11aec8a7f5c692061e7ca  libstdc++-v3/testsuite/27_io/basic_stringbuf/requirements/explicit_instantiation/2.cc
! 39ff5f933dad6214ab47581df4af38a3  libstdc++-v3/testsuite/27_io/basic_stringbuf/requirements/explicit_instantiation/4.cc
! 8cad6aaef967f1292ed8dabb70f4448d  libstdc++-v3/testsuite/27_io/basic_stringbuf/requirements/typedefs.cc
! 9717af57e3cfd792d0113f68e684c6d7  libstdc++-v3/testsuite/27_io/basic_stringbuf/sbumpc/char/1.cc
! 2018c49ca47c066e7174b57257af0dde  libstdc++-v3/testsuite/27_io/basic_stringbuf/sbumpc/char/9825.cc
! fc158f259f1609fffe2161b5239b57d0  libstdc++-v3/testsuite/27_io/basic_stringbuf/sbumpc/wchar_t/1.cc
! 04c6801a36098f827b0fe32b8ba49698  libstdc++-v3/testsuite/27_io/basic_stringbuf/sbumpc/wchar_t/9825.cc
! 62d7276266841810aa56d59ea2a8e9e9  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekoff/char/1.cc
! 12a2a16c14d51b59a4a772c62c2c7fa4  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekoff/char/10975.cc
! 21ef676d35e248ee3993ca2146f8d395  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekoff/char/16956.cc
! 19249b6b3d1f89c573bba943d6306e27  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekoff/char/2.cc
! a19e354c650da0c8ac23cf31ee091f5d  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekoff/wchar_t/1.cc
! 8221ea01ac35a3443e98e0ffba6e95d7  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekoff/wchar_t/10975.cc
! af413debb7fc9f67616b827474642740  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekoff/wchar_t/16956.cc
! 8a0a245087940fb59c8fe558c06c178e  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekoff/wchar_t/2.cc
! 736dc0a47af08e841e9ea20be9ca6281  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekpos/char/1.cc
! 0dafc96bf048e8a64c69dcb183016d5e  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekpos/char/2.cc
! b44cf2a724a17b16902781d13594f5ac  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekpos/char/29354.cc
! af2f727881d839a38d52dc47a12063ff  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekpos/char/3.cc
! 43f3bbaa910f757af297a427ba11d91d  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekpos/wchar_t/1.cc
! 57c80be575dd734ecbbb42e1875f5cd4  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekpos/wchar_t/2.cc
! d9557ec8a8a09a5599d5dfce79813b2d  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekpos/wchar_t/29354.cc
! 8c522dd4b089b4ca42dac5c57ecc36ad  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekpos/wchar_t/3.cc
! 8c43b2a3caaffc80d87e3b17a7bf8966  libstdc++-v3/testsuite/27_io/basic_stringbuf/setbuf/char/1.cc
! 37d15edb7c8d4eddb3e22943515f721d  libstdc++-v3/testsuite/27_io/basic_stringbuf/setbuf/char/2.cc
! 4356c8cec23c52911e0d8bc310ccb640  libstdc++-v3/testsuite/27_io/basic_stringbuf/setbuf/char/3.cc
! 3689587f230a4a1158ff1d41c288c02d  libstdc++-v3/testsuite/27_io/basic_stringbuf/setbuf/char/4.cc
! 579a8271dbbc4484362f93fabbd667aa  libstdc++-v3/testsuite/27_io/basic_stringbuf/setbuf/wchar_t/1.cc
! 1bed5480c655b82c242d7ae6d9b957c7  libstdc++-v3/testsuite/27_io/basic_stringbuf/setbuf/wchar_t/2.cc
! 95a6f1b0b14360a19e002ea37704ab48  libstdc++-v3/testsuite/27_io/basic_stringbuf/setbuf/wchar_t/3.cc
! 303609035eb29f61f517fef4a71500a6  libstdc++-v3/testsuite/27_io/basic_stringbuf/setbuf/wchar_t/4.cc
! 4642b28541dbfd980b0f94469464f1dc  libstdc++-v3/testsuite/27_io/basic_stringbuf/sgetc/char/1.cc
! bf9c6aadbfc9a2dac12aef158621b4aa  libstdc++-v3/testsuite/27_io/basic_stringbuf/sgetc/wchar_t/1.cc
! 31ad3c26ffa83186ea4fc40a8e54255c  libstdc++-v3/testsuite/27_io/basic_stringbuf/sgetn/char/1.cc
! fa514012c611fbb4621e48e081abcf9c  libstdc++-v3/testsuite/27_io/basic_stringbuf/sgetn/wchar_t/1.cc
! 220f7a52441db29aaff5ef1afdaddc39  libstdc++-v3/testsuite/27_io/basic_stringbuf/snextc/char/1.cc
! 0746a5b988c39bb4302f9c9503fb6d91  libstdc++-v3/testsuite/27_io/basic_stringbuf/snextc/wchar_t/1.cc
! 8e6e6297a16d8a5799a847c3ac229abd  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputbackc/char/1.cc
! dc08d6931966b524b5badd1c3012bf13  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputbackc/char/9425.cc
! 2c90a998a27d3b970b3ab20e1be20af5  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputbackc/wchar_t/1.cc
! 533a95f793ee37216fc58afcb20d2843  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputbackc/wchar_t/9425.cc
! b9654da3181a74825ccf66f542decfb6  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputc/char/1.cc
! 50e26a75b83c6aacd3c87f7613f87f44  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputc/char/1057.cc
! dab1e688de41251e7188cf5a83933270  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputc/char/9404-1.cc
! a0d63cca38fd0670f7f6add27766685e  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputc/wchar_t/1.cc
! 7d518d95c15c39ee3cecfa06512e09ef  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputc/wchar_t/1057.cc
! 030a431653b30341bbd796ef6da25cde  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputc/wchar_t/9404-1.cc
! 9c692611ff03251c39b206c204561452  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputn/char/1.cc
! 5308a62ce170de793487b50f8f37788b  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputn/char/1057.cc
! 5ffffd6d11d55b601da8d0fe704b4007  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputn/char/9404-2.cc
! de1258daa2b2d36b497e497f52e14d5c  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputn/wchar_t/1.cc
! de5c9dcad5d2e76673bd25cb50047845  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputn/wchar_t/1057.cc
! 4b804b16e5816cb36203464fc3b60695  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputn/wchar_t/9404-2.cc
! bab91fe3c6e4d10c5c336a5be6401f64  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/1.cc
! 4d00ebcbff2e349f3f49a08eca90b82b  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/2.cc
! 6eb6aac50d7833135a37cad723497773  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/3.cc
! 70dd72cb6eed35444571671b40646bd7  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/3955.cc
! 1b56ecd19e09a5501a10db8f8428ae96  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/wchar_t/1.cc
! 4c498279386865cd068c714a07bb4228  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/wchar_t/2.cc
! 1f8f53bdedb2dab9d09bff11544731b9  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/wchar_t/3.cc
! 4db03c05405a2579b1539748a5b2dcc1  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/wchar_t/3955.cc
! 18e8bccd062e84cd0fe7c10a805932f0  libstdc++-v3/testsuite/27_io/basic_stringbuf/sungetc/char/1.cc
! b7b62e1b1be35c1a5262188283d29549  libstdc++-v3/testsuite/27_io/basic_stringbuf/sungetc/wchar_t/1.cc
! 833207d3fb9905b37c67714756244cb1  libstdc++-v3/testsuite/27_io/basic_stringbuf/sync/char/1057.cc
! 151fce5d1b4f9d36f18b124948a047ce  libstdc++-v3/testsuite/27_io/basic_stringbuf/sync/wchar_t/1057.cc
! 271b0282e8e3b481fa4c8d1bab4ff75a  libstdc++-v3/testsuite/27_io/basic_stringstream/assign/1.cc
! 58abd7d20127271b4904e68912bc3504  libstdc++-v3/testsuite/27_io/basic_stringstream/assign/81338.cc
! 313f830622f4f605172e717f92df1f12  libstdc++-v3/testsuite/27_io/basic_stringstream/cons/2020.cc
! ec72b03fe057dd8ca218d4584f073514  libstdc++-v3/testsuite/27_io/basic_stringstream/cons/move.cc
! 0bd1c0add6a5c9cbf78581b4b4261397  libstdc++-v3/testsuite/27_io/basic_stringstream/rdbuf/char/2832.cc
! acbd9c6aabeeeb21de242d602d933ea6  libstdc++-v3/testsuite/27_io/basic_stringstream/rdbuf/wchar_t/2832.cc
! b53da520b8d538bc1d33e3bbdca54275  libstdc++-v3/testsuite/27_io/basic_stringstream/requirements/base_classes.cc
! 23f67b37d7669297d1743d636be4f0b5  libstdc++-v3/testsuite/27_io/basic_stringstream/requirements/explicit_instantiation.cc
! 1240c50df52b831e48af7560e140ec20  libstdc++-v3/testsuite/27_io/basic_stringstream/requirements/typedefs.cc
! ae4d11a169ed7ed2d6aa279ca60c4fb8  libstdc++-v3/testsuite/27_io/basic_stringstream/str/char/1.cc
! f2bf21b06f33801dc1feecb4afeaa64c  libstdc++-v3/testsuite/27_io/basic_stringstream/str/char/2.cc
! 7dd5bcf36281c6ba18a0587905c04979  libstdc++-v3/testsuite/27_io/basic_stringstream/str/char/3.cc
! 9a0be1bc92b1b2b4eb7729a2fd84ccab  libstdc++-v3/testsuite/27_io/basic_stringstream/str/char/4.cc
! 7a4699038a76e93326645cfa8a57b55c  libstdc++-v3/testsuite/27_io/basic_stringstream/str/wchar_t/1.cc
! 5051dfc34084692cf0b0723a4cee6fa8  libstdc++-v3/testsuite/27_io/basic_stringstream/str/wchar_t/2.cc
! 90a65b4c0673d4288d75a75ff01a5535  libstdc++-v3/testsuite/27_io/basic_stringstream/str/wchar_t/3.cc
! 7b041aa20fe10f4195f6274e6fce7cfd  libstdc++-v3/testsuite/27_io/basic_stringstream/str/wchar_t/4.cc
! 3829cc13e1fdd0bab7798e0299aa207d  libstdc++-v3/testsuite/27_io/filesystem/file_status/1.cc
! 61a06cd514876376e7f58afc7f33d4c4  libstdc++-v3/testsuite/27_io/filesystem/iterators/directory_iterator.cc
! 21f3a9ca0bffba3d2a34d06dbb0ab7e8  libstdc++-v3/testsuite/27_io/filesystem/iterators/pop.cc
! 94937039f95bc8d113cd1de2dadfef69  libstdc++-v3/testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc
! 398e5fc6695ce1bc45f548043856e144  libstdc++-v3/testsuite/27_io/filesystem/operations/absolute.cc
! 6eb4158b2e539e021ddb56fa94aa45e7  libstdc++-v3/testsuite/27_io/filesystem/operations/canonical.cc
! a887b16caa3fadd0149da529feb5ef3b  libstdc++-v3/testsuite/27_io/filesystem/operations/copy.cc
! a6fc48e370c97136b93b4d60da06cba7  libstdc++-v3/testsuite/27_io/filesystem/operations/copy_file.cc
! f64f7d5ea0131cd39d576afe44309abd  libstdc++-v3/testsuite/27_io/filesystem/operations/create_directories.cc
! 5d9bf437a9240466bbc1c6832da5bd31  libstdc++-v3/testsuite/27_io/filesystem/operations/create_directory.cc
! 22c391cad2ba03975daed29d682695c2  libstdc++-v3/testsuite/27_io/filesystem/operations/create_symlink.cc
! 4bc1d50d44479e36e97a03dec4bf5463  libstdc++-v3/testsuite/27_io/filesystem/operations/current_path.cc
! 2b71de770fe8021a78f065a7270bc91a  libstdc++-v3/testsuite/27_io/filesystem/operations/equivalent.cc
! c0158134810a1af6222945b06110608e  libstdc++-v3/testsuite/27_io/filesystem/operations/exists.cc
! 5368466edee8e71610e0ca3e874d1396  libstdc++-v3/testsuite/27_io/filesystem/operations/file_size.cc
! 95c09d7119304fa4f2bc832367940b3d  libstdc++-v3/testsuite/27_io/filesystem/operations/is_empty.cc
! fcfd349de06b19740fb2135e9892fb1f  libstdc++-v3/testsuite/27_io/filesystem/operations/last_write_time.cc
! 4badb9bd37a33825f53c1c15d9405eca  libstdc++-v3/testsuite/27_io/filesystem/operations/permissions.cc
! d947178516657a8cb233a9a19ae24516  libstdc++-v3/testsuite/27_io/filesystem/operations/proximate.cc
! 33550d2e57ebd0cbe61b174f0405ff74  libstdc++-v3/testsuite/27_io/filesystem/operations/read_symlink.cc
! 4abcf07bddc541d6928bc3a94eca4749  libstdc++-v3/testsuite/27_io/filesystem/operations/relative.cc
! fcda569eb73f03035565926297f637b0  libstdc++-v3/testsuite/27_io/filesystem/operations/remove.cc
! e3a3027d3dd93e897d2770568820cbda  libstdc++-v3/testsuite/27_io/filesystem/operations/remove_all.cc
! 9b89c915069ea48fc777eed264a73a94  libstdc++-v3/testsuite/27_io/filesystem/operations/space.cc
! bbd863acf30fa570bf4e9aad439457f7  libstdc++-v3/testsuite/27_io/filesystem/operations/status.cc
! 93cf8aa30c799c1f291be509c3f17ab5  libstdc++-v3/testsuite/27_io/filesystem/operations/symlink_status.cc
! 4fe186b1d1928867591d37d6c232231b  libstdc++-v3/testsuite/27_io/filesystem/operations/temp_directory_path.cc
! 75a2c8e2cfaffce68ebbf48593f97760  libstdc++-v3/testsuite/27_io/filesystem/operations/weakly_canonical.cc
! 11a45148a6441047fec3d4a6d175b2d9  libstdc++-v3/testsuite/27_io/filesystem/path/append/path.cc
! 745664709078f13870ab58bc6e42da6b  libstdc++-v3/testsuite/27_io/filesystem/path/assign/assign.cc
! a844d427bb1d9cd556b0e28d7239b2ce  libstdc++-v3/testsuite/27_io/filesystem/path/assign/copy.cc
! 27a7a60c1f1480f039e979af768517e4  libstdc++-v3/testsuite/27_io/filesystem/path/compare/compare.cc
! f128e4f619cc23592ed68faca3925b80  libstdc++-v3/testsuite/27_io/filesystem/path/compare/path.cc
! d7ebd8759252cbcd8edecdecc811e053  libstdc++-v3/testsuite/27_io/filesystem/path/compare/strings.cc
! 3a4a7bdb581ab38d10bf13aaf9df6a91  libstdc++-v3/testsuite/27_io/filesystem/path/concat/path.cc
! e4933d72dada5335be05afa8e82b7cb0  libstdc++-v3/testsuite/27_io/filesystem/path/concat/strings.cc
! dfb5784845c7b0f246c4ba7cc07133fb  libstdc++-v3/testsuite/27_io/filesystem/path/construct/copy.cc
! 6ec359becf6ac1a030cc1495200857c5  libstdc++-v3/testsuite/27_io/filesystem/path/construct/default.cc
! 001093139d844b28a47457ab91a0c22c  libstdc++-v3/testsuite/27_io/filesystem/path/construct/format.cc
! c0431f7468eb50eef990d3c182913fb2  libstdc++-v3/testsuite/27_io/filesystem/path/construct/locale.cc
! 7f217f1d444472a80b596cbfe66485c9  libstdc++-v3/testsuite/27_io/filesystem/path/construct/range.cc
! 0722aa210abf7b1a04afc8bd24f1daa1  libstdc++-v3/testsuite/27_io/filesystem/path/construct/string_view.cc
! fbc95989d4e3651d5391c7bcd8b96e8f  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/extension.cc
! 41828e5dc3ebd1eb4db24e4b4c2a49fa  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/filename.cc
! 6df1cd7716018befb2bf398e9078401f  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/parent_path.cc
! 72b70d86dd4d26403f432ec29329cfce  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/relative_path.cc
! 47b63736332a6b1e5d2571c3468bdf28  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/root_directory.cc
! 799ea9bb966fa20a2d5fcc2b0ecddf95  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/root_name.cc
! 0c85b5809ea0f8d19ec82bc17a3022b7  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/root_path.cc
! a0558516315a769544711b53f2782dd3  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/stem.cc
! 592c22f66ffff46a4e4e7a8739812570  libstdc++-v3/testsuite/27_io/filesystem/path/generation/normal.cc
! 3e92ef4e359274905e66059f2154ef7d  libstdc++-v3/testsuite/27_io/filesystem/path/generation/proximate.cc
! cea203bfc75237022df031b94fc3d4c3  libstdc++-v3/testsuite/27_io/filesystem/path/generation/relative.cc
! 565f89586cefedfbbb9fa4aa4f72fefd  libstdc++-v3/testsuite/27_io/filesystem/path/generic/generic_string.cc
! 62fc2a93e51ef7c31541a6af5248f8c0  libstdc++-v3/testsuite/27_io/filesystem/path/itr/traversal.cc
! f5e3e4dfb45b4236468fca75cce3d16e  libstdc++-v3/testsuite/27_io/filesystem/path/modifiers/clear.cc
! 0bcae2ed01a50b7f6c8230a5722bf158  libstdc++-v3/testsuite/27_io/filesystem/path/modifiers/make_preferred.cc
! cf5675a80e2ccb5e62c117ac0b811413  libstdc++-v3/testsuite/27_io/filesystem/path/modifiers/remove_filename.cc
! 4d524c5905ba0262a2bc6acc45df0213  libstdc++-v3/testsuite/27_io/filesystem/path/modifiers/replace_extension.cc
! 7a4e6745b6d322599c2d7eaa7952cfc8  libstdc++-v3/testsuite/27_io/filesystem/path/modifiers/replace_filename.cc
! eb4c59b42f8a27e3ca494b001d370f9e  libstdc++-v3/testsuite/27_io/filesystem/path/modifiers/swap.cc
! 4a704c91c131d54a244657f515717bc9  libstdc++-v3/testsuite/27_io/filesystem/path/native/string.cc
! fb4ff74e115b6de137ea967f5fb97e5b  libstdc++-v3/testsuite/27_io/filesystem/path/nonmember/hash_value.cc
! 5bb887ec6e998993f0791387b87bdd4e  libstdc++-v3/testsuite/27_io/filesystem/path/query/empty.cc
! dd080d1a38bc2f187ddb228edee20609  libstdc++-v3/testsuite/27_io/filesystem/path/query/empty_neg.cc
! 9f001c2eaef1564f48f879672833f381  libstdc++-v3/testsuite/27_io/filesystem/path/query/has_extension.cc
! a1db0c6c53a6aecc884e1f49971f1043  libstdc++-v3/testsuite/27_io/filesystem/path/query/has_filename.cc
! 759ec37b467970fe8308465b40633cd1  libstdc++-v3/testsuite/27_io/filesystem/path/query/has_parent_path.cc
! e3aa88c02438f986a1beab888d6acee5  libstdc++-v3/testsuite/27_io/filesystem/path/query/has_relative_path.cc
! 4072591f801892314a25ea55d03d0955  libstdc++-v3/testsuite/27_io/filesystem/path/query/has_root_directory.cc
! 476d5872c2698752ef06f08192039a7a  libstdc++-v3/testsuite/27_io/filesystem/path/query/has_root_name.cc
! 1c7b294a5c6af84cc013a73f671f0444  libstdc++-v3/testsuite/27_io/filesystem/path/query/has_root_path.cc
! 3dc73e135eea424b84b44fcd6b87e970  libstdc++-v3/testsuite/27_io/filesystem/path/query/has_stem.cc
! efb41613d453b39ec8b29ec0a7ec0473  libstdc++-v3/testsuite/27_io/filesystem/path/query/is_relative.cc
! 4b09a007c978dafd9fb28949c1a91cd6  libstdc++-v3/testsuite/27_io/fpos/11450.cc
! db88a00ae9f0645988bf482c63627d71  libstdc++-v3/testsuite/27_io/fpos/14252.cc
! 07c27ca466381556b51264e31ad3f729  libstdc++-v3/testsuite/27_io/fpos/14320-1.cc
! fa625c092bbbe327301ecf971c3d2482  libstdc++-v3/testsuite/27_io/fpos/14320-2.cc
! f35237d92a15eba20c6cba91fb8f8aaa  libstdc++-v3/testsuite/27_io/fpos/14320-3.cc
! db29bad074e29e567c55166ba10ebc86  libstdc++-v3/testsuite/27_io/fpos/14320-4.cc
! 5a0fcdc24eae4d8bced0e8419a72539c  libstdc++-v3/testsuite/27_io/fpos/14320-5.cc
! 56763041d68eb8736bf1540593dc9d6e  libstdc++-v3/testsuite/27_io/fpos/14775.cc
! 94117a385341f8ab000fb60dc7472ca8  libstdc++-v3/testsuite/27_io/fpos/mbstate_t/1.cc
! de63a5fc0a25dba4d06c9103fa273d0c  libstdc++-v3/testsuite/27_io/fpos/mbstate_t/12065.cc
! d0b42071c2a87ac9e29987f8f21c940f  libstdc++-v3/testsuite/27_io/fpos/mbstate_t/2.cc
! 10cd3bca43e186032027f56db84f040e  libstdc++-v3/testsuite/27_io/fpos/mbstate_t/3.cc
! e4c479d1dbaf9315d84cdb5f3fb8e911  libstdc++-v3/testsuite/27_io/fpos/mbstate_t/4_neg.cc
! 1dc6340c52ab1a3d16cc915d9e211382  libstdc++-v3/testsuite/27_io/fpos/mbstate_t/5.cc
! 24af005e427dc87a0a6723aacf68b3b5  libstdc++-v3/testsuite/27_io/fpos/mbstate_t/6.cc
! 555cdce953e5a813b8a20328be2138fb  libstdc++-v3/testsuite/27_io/fpos/requirements/explicit_instantiation.cc
! 5d0da05e2a8878c5dd418c1faeb3afb2  libstdc++-v3/testsuite/27_io/headers/cinttypes/std_c++0x_neg.cc
! 1f6a2e82953a0395a24e47b16b7c8b75  libstdc++-v3/testsuite/27_io/headers/cinttypes/types_std_c++0x.cc
! 6bacb7e90e719f66a10c1d15d73060ea  libstdc++-v3/testsuite/27_io/headers/cstdio/functions_neg.cc
! 4aee1c5213b073154bddb4434252912b  libstdc++-v3/testsuite/27_io/headers/cstdio/functions_std.cc
! 6da42ac8832e20b1b9f7affc37bff5cb  libstdc++-v3/testsuite/27_io/headers/cstdio/macros.cc
! 3b7c4ad313ab2ea5ad7b589d79c7a4d9  libstdc++-v3/testsuite/27_io/headers/cstdio/types_std.cc
! e6659595f65e48e67e1d6bf14f2a7385  libstdc++-v3/testsuite/27_io/headers/fstream/synopsis.cc
! 6c2bfe49d7dd9915e1f3ebdb7eda7f02  libstdc++-v3/testsuite/27_io/headers/fstream/types_std.cc
! c85154fc4b6f87a5d7efdde74b841b41  libstdc++-v3/testsuite/27_io/headers/iomanip/synopsis.cc
! 0b1cf0b44b4b19cfbaa69acc157c79dc  libstdc++-v3/testsuite/27_io/headers/ios/synopsis.cc
! 01d2b07ee3ab6106fb700e11965f2220  libstdc++-v3/testsuite/27_io/headers/ios/types_std.cc
! 08384711c9fffcda379f9afa153a861f  libstdc++-v3/testsuite/27_io/headers/iostream/synopsis.cc
! 2cfbb0f277751401315fad0f06117f38  libstdc++-v3/testsuite/27_io/headers/iostream/types_std.cc
! 888e85f08ba9001419856daaa9c186df  libstdc++-v3/testsuite/27_io/headers/istream/synopsis.cc
! 8965b376787a585d9a44c10e5d0c4015  libstdc++-v3/testsuite/27_io/headers/istream/types_std.cc
! ff5714377be544422ca8830adbfba888  libstdc++-v3/testsuite/27_io/headers/ostream/synopsis.cc
! 62719749806b24b82d52f59638722254  libstdc++-v3/testsuite/27_io/headers/ostream/types_std.cc
! 768ad13c293448b68420f1546e127f97  libstdc++-v3/testsuite/27_io/headers/sstream/synopsis.cc
! 8692e8f21c05a209fd7bb8a5ff25a12c  libstdc++-v3/testsuite/27_io/headers/sstream/types_std.cc
! 27a1ce2b55f1dc2ca998dbb06f7af01b  libstdc++-v3/testsuite/27_io/headers/streambuf/synopsis.cc
! 2f6c77f07cda0cc19714979d11f8297d  libstdc++-v3/testsuite/27_io/headers/streambuf/types_std.cc
! ec316ff75803ea9f279aeacd2a4275c9  libstdc++-v3/testsuite/27_io/ios_base/callbacks/1.cc
! 4886915ba67dc4ffd413547da68f1f27  libstdc++-v3/testsuite/27_io/ios_base/cons/assign_neg.cc
! 9f5fb5d32b0393c0957b8f036f4ff207  libstdc++-v3/testsuite/27_io/ios_base/cons/copy_neg.cc
! 3b18ac8b52e807538f917dd571dd402d  libstdc++-v3/testsuite/27_io/ios_base/failure/cons_virtual_derivation.cc
! c8821a94ba1e79e3bbebf22f5e58405f  libstdc++-v3/testsuite/27_io/ios_base/failure/cxx11.cc
! 8cbb8959c6e521b24f215c42627c12cb  libstdc++-v3/testsuite/27_io/ios_base/failure/dual_abi.cc
! 5037b544a27d0e0a7dc11ac63321cd9f  libstdc++-v3/testsuite/27_io/ios_base/failure/what-1.cc
! 48e9f7c18f30b7a8a6eb58983fbfa05a  libstdc++-v3/testsuite/27_io/ios_base/failure/what-2.cc
! f6779218a576a30be4d24962b98c647a  libstdc++-v3/testsuite/27_io/ios_base/failure/what-3.cc
! b6e6751a0b90bfa32b2bc48dd10c6e18  libstdc++-v3/testsuite/27_io/ios_base/failure/what-big.cc
! 23e576f076b75bd3bdef7b3da1beb487  libstdc++-v3/testsuite/27_io/ios_base/state/1.cc
! 7798779cea2857248d5f962fdb790ef8  libstdc++-v3/testsuite/27_io/ios_base/storage/1.cc
! 938bd08d17c58f963c87e271c05d93cc  libstdc++-v3/testsuite/27_io/ios_base/storage/11584.cc
! 1869c71352bb463ffd575a3e8169cb0a  libstdc++-v3/testsuite/27_io/ios_base/storage/2.cc
! f8ba3ff6e65c38384e3acb8dd32d1779  libstdc++-v3/testsuite/27_io/ios_base/storage/3.cc
! 1d5cfe21f5caf793a2027bbfbb38498c  libstdc++-v3/testsuite/27_io/ios_base/sync_with_stdio/1.cc
! 6af8e07ac6e2906cc12a0b1872fca8e0  libstdc++-v3/testsuite/27_io/ios_base/sync_with_stdio/16959.cc
! d67340956e92b05fd981e1e7bb526404  libstdc++-v3/testsuite/27_io/ios_base/sync_with_stdio/2.cc
! cd5b3df2bc3e425e743bc9898e3ab3b7  libstdc++-v3/testsuite/27_io/ios_base/sync_with_stdio/9523.cc
! 167eb54a7a0011ad19882d6c4f776eba  libstdc++-v3/testsuite/27_io/ios_base/types/fmtflags/bitmask_operators.cc
! d5a91d5b9ae7c896583fdaeb8ef54145  libstdc++-v3/testsuite/27_io/ios_base/types/fmtflags/case_label.cc
! a8ff1d27b9ab0bb934286f65b8550d57  libstdc++-v3/testsuite/27_io/ios_base/types/fmtflags/constexpr_operators.cc
! 56597ea67a344261027f334fbb8957cf  libstdc++-v3/testsuite/27_io/ios_base/types/iostate/bitmask_operators.cc
! 8e74258c39f8c24488842f60cef5ee38  libstdc++-v3/testsuite/27_io/ios_base/types/iostate/case_label.cc
! 914d84086f4a7893bf7e2e882c391e0d  libstdc++-v3/testsuite/27_io/ios_base/types/iostate/constexpr_operators.cc
! 3cb2ab136b4e9fcd81d063f280f06313  libstdc++-v3/testsuite/27_io/ios_base/types/openmode/bitmask_operators.cc
! 86cdb317bb4c72f71eeb45729c29a71d  libstdc++-v3/testsuite/27_io/ios_base/types/openmode/case_label.cc
! 72a65b895b4288ac0a38ad0307bc75fc  libstdc++-v3/testsuite/27_io/ios_base/types/openmode/constexpr_operators.cc
! fad4ea128923673291a12648b8eb14bd  libstdc++-v3/testsuite/27_io/ios_base/types/seekdir/case_label.cc
! e86a2b5682f3f0429f0f05367895da6e  libstdc++-v3/testsuite/27_io/manipulators/adjustfield/char/1.cc
! 2946d58fd35ec58537c8fd3a98fdccdc  libstdc++-v3/testsuite/27_io/manipulators/adjustfield/char/2.cc
! 73bc9e5feca7c3b688205c90a0d54819  libstdc++-v3/testsuite/27_io/manipulators/adjustfield/wchar_t/1.cc
! e761f6dcbcbe5c094416c05552825ba8  libstdc++-v3/testsuite/27_io/manipulators/adjustfield/wchar_t/2.cc
! 2f2f1e7ef8935ef312ed9237de53932f  libstdc++-v3/testsuite/27_io/manipulators/basefield/char/1.cc
! 340e6d845adcdb917ff31d4d0438839c  libstdc++-v3/testsuite/27_io/manipulators/basefield/wchar_t/1.cc
! 668712cbc6f908a9cfb73e9f3a62ad85  libstdc++-v3/testsuite/27_io/manipulators/extended/get_money/char/1.cc
! 4d63418c1d9d661d1d7dfc9dc4d30c29  libstdc++-v3/testsuite/27_io/manipulators/extended/get_money/char/51288.cc
! 9ad27736227cd8cbc2082bddd8649d15  libstdc++-v3/testsuite/27_io/manipulators/extended/get_money/wchar_t/1.cc
! e316e8eacd3e8a7bd1a57f20c883eaec  libstdc++-v3/testsuite/27_io/manipulators/extended/get_money/wchar_t/51288.cc
! ca2156ab7cacd21c9c428c8ef58a29fc  libstdc++-v3/testsuite/27_io/manipulators/extended/get_time/char/1.cc
! 6030e314d8b8f6fa6620567f3e4ce05a  libstdc++-v3/testsuite/27_io/manipulators/extended/get_time/char/2.cc
! e703c19816930246fa2ff591196b9860  libstdc++-v3/testsuite/27_io/manipulators/extended/get_time/wchar_t/1.cc
! db05a654b9933f6c166715cde4f19393  libstdc++-v3/testsuite/27_io/manipulators/extended/get_time/wchar_t/2.cc
! 982bb5ea7b9794bb58b6981390013a74  libstdc++-v3/testsuite/27_io/manipulators/extended/put_money/char/1.cc
! e3950ddac97e6ead32cc57b9d1b052f3  libstdc++-v3/testsuite/27_io/manipulators/extended/put_money/char/51288.cc
! c6fa5e09de3c24c688f624f692e2ba25  libstdc++-v3/testsuite/27_io/manipulators/extended/put_money/wchar_t/1.cc
! 34b21753812789a5c5cc2e01fc020df3  libstdc++-v3/testsuite/27_io/manipulators/extended/put_money/wchar_t/51288.cc
! a9ec6798afeccbb1143c765e86f8d782  libstdc++-v3/testsuite/27_io/manipulators/extended/put_time/char/1.cc
! 77b9398f1da87b28532a7347baddae87  libstdc++-v3/testsuite/27_io/manipulators/extended/put_time/char/2.cc
! eec25e4e3eff8114b008c7fb9de64413  libstdc++-v3/testsuite/27_io/manipulators/extended/put_time/wchar_t/1.cc
! f1c745648babf37db3647525d82723d3  libstdc++-v3/testsuite/27_io/manipulators/extended/put_time/wchar_t/2.cc
! da5ef43d778fa46f45a58468a7d81340  libstdc++-v3/testsuite/27_io/manipulators/standard/char/1.cc
! e18a545f08498e63cfc5e7b7e3ae7e66  libstdc++-v3/testsuite/27_io/manipulators/standard/char/2.cc
! cf824d0af3157ca86ee83f51ec11c56e  libstdc++-v3/testsuite/27_io/manipulators/standard/char/60270.cc
! 8d2dfe6ba243e7dc47cc073dbf0f8583  libstdc++-v3/testsuite/27_io/manipulators/standard/char/dr2344.cc
! 53d3f05030bc02fa5ae57089c1031a6b  libstdc++-v3/testsuite/27_io/manipulators/standard/char/quoted.cc
! 2d67d981a52cf09b8fcfb8a0b850f244  libstdc++-v3/testsuite/27_io/manipulators/standard/wchar_t/1.cc
! b9d2e1bbc705e53022de94b612fb7484  libstdc++-v3/testsuite/27_io/manipulators/standard/wchar_t/2.cc
! b7abef442ca021ebb06a0d323993cd1b  libstdc++-v3/testsuite/27_io/manipulators/standard/wchar_t/dr2344.cc
! 33495c87d5f144df22b9974d8a6f088d  libstdc++-v3/testsuite/27_io/manipulators/standard/wchar_t/quoted.cc
! 870915e7569633d9b03e260b8850007a  libstdc++-v3/testsuite/27_io/objects/char/1.cc
! 6f35e259b3bdf01b75db57a911921eba  libstdc++-v3/testsuite/27_io/objects/char/10.cc
! add8b7ffb880749d90bdc27c7d9ff340  libstdc++-v3/testsuite/27_io/objects/char/12048-1.cc
! 18c37d3dcdab41200b830c215c9c9686  libstdc++-v3/testsuite/27_io/objects/char/12048-2.cc
! 41cab6e64bb112c6e106e17e07015f54  libstdc++-v3/testsuite/27_io/objects/char/12048-3.cc
! 013d43943c2afd842dda447bac6c947a  libstdc++-v3/testsuite/27_io/objects/char/12048-4.cc
! 754fb5f07a2140762595af6e7a8c8069  libstdc++-v3/testsuite/27_io/objects/char/12048-5.cc
! 185412ba947f256b02698bb142d23336  libstdc++-v3/testsuite/27_io/objects/char/2.cc
! ef2ba4e5100b80a225cb8bb9d4934291  libstdc++-v3/testsuite/27_io/objects/char/2523-1_xin.cc
  8c1b578bb2722053c950f2cf943baf83  libstdc++-v3/testsuite/27_io/objects/char/2523-1_xin.in
! 0a92b0e8432f4379716df4e3b5ff988a  libstdc++-v3/testsuite/27_io/objects/char/2523-2_xin.cc
  daa7a5fffcba8b5ec5ca1a8de7734416  libstdc++-v3/testsuite/27_io/objects/char/2523-2_xin.in
! 8a1e7c14ff7553865c2da98e4f5584ae  libstdc++-v3/testsuite/27_io/objects/char/3045.cc
! b9c693fe162bd288953f4e974d5a6e21  libstdc++-v3/testsuite/27_io/objects/char/3647.cc
! 3e2cb8ac88c189f0e914f015deabda2d  libstdc++-v3/testsuite/27_io/objects/char/3_xin.cc
  b715c45a6677f269807dab0bbcf0ee1d  libstdc++-v3/testsuite/27_io/objects/char/3_xin.in
! a8f850bb233cea5e4cee96aa13deaf28  libstdc++-v3/testsuite/27_io/objects/char/41037.cc
! 76e4d24eda3ffe292c0fdd2d362ca3bb  libstdc++-v3/testsuite/27_io/objects/char/4_xin.cc
  68b329da9893e34099c7d8ad5cb9c940  libstdc++-v3/testsuite/27_io/objects/char/4_xin.in
! e46bd478832c80793a665fcf547bcbe0  libstdc++-v3/testsuite/27_io/objects/char/5.cc
! 359142114727447ea827d40e3a1bb207  libstdc++-v3/testsuite/27_io/objects/char/5268.cc
! 5bfb8eebe95c748428d6a12dc13645ee  libstdc++-v3/testsuite/27_io/objects/char/5280_xin.cc
  81dc9bdb52d04dc20036dbd8313ed055  libstdc++-v3/testsuite/27_io/objects/char/5280_xin.in
! 140415bd528c160edb31a257b12a85bd  libstdc++-v3/testsuite/27_io/objects/char/6.cc
! caa180cb35ee2ae7708af47e2666a2cc  libstdc++-v3/testsuite/27_io/objects/char/6548_xin.cc
  d8e8fca2dc0f896fd7cb4cb0031ba249  libstdc++-v3/testsuite/27_io/objects/char/6548_xin.in
! 28d8cb1485ca1893b73ae8624546b670  libstdc++-v3/testsuite/27_io/objects/char/6648-1_xin.cc
  069d0b68d99275bb4412e90bd9d5c966  libstdc++-v3/testsuite/27_io/objects/char/6648-1_xin.in
! a4511ace8cab016154a5be19b2b2105b  libstdc++-v3/testsuite/27_io/objects/char/6648-2_xin.cc
  6b76e6feddcc145dc3499d8d123d9da7  libstdc++-v3/testsuite/27_io/objects/char/6648-2_xin.in
! c072dbf474fcd8529be77396850d75bd  libstdc++-v3/testsuite/27_io/objects/char/7.cc
! 666e2c846e091fb9595e04b9380fb34c  libstdc++-v3/testsuite/27_io/objects/char/7744_xin.cc
  0bee89b07a248e27c83fc3d5951213c1  libstdc++-v3/testsuite/27_io/objects/char/7744_xin.in
! ab9ea467205a6b16212d18502c61f801  libstdc++-v3/testsuite/27_io/objects/char/8.cc
! f68351764ca1c380628e0dad04d1dcd9  libstdc++-v3/testsuite/27_io/objects/char/9.cc
! df7198d1c38addc0bbb6425b016d7ba0  libstdc++-v3/testsuite/27_io/objects/char/9661-1.cc
! 13f0be8f44e5aed4755006bb5fdd460d  libstdc++-v3/testsuite/27_io/objects/char/9661-2_xin.cc
  33ab658c3d687d1d73a0e92a596f725e  libstdc++-v3/testsuite/27_io/objects/char/9661-2_xin.in
! 6be01c3ebf14120bb3e86f8d2380342f  libstdc++-v3/testsuite/27_io/objects/char/dr455.cc
! e963ec92950ee0235bfd176b85f6c91e  libstdc++-v3/testsuite/27_io/objects/wchar_t/1.cc
! be19532b893909401065fce2243207ea  libstdc++-v3/testsuite/27_io/objects/wchar_t/10.cc
! 50b2569d37a1e65836766c501a4e423b  libstdc++-v3/testsuite/27_io/objects/wchar_t/11.cc
! b1cb97a4254770d6466a93ac1f48331f  libstdc++-v3/testsuite/27_io/objects/wchar_t/12.cc
! d6ccb798a79a064ae5dcc18a9393ee74  libstdc++-v3/testsuite/27_io/objects/wchar_t/12048-1.cc
! 79af50dd4f84c9022c7080d30028bf71  libstdc++-v3/testsuite/27_io/objects/wchar_t/12048-2.cc
! 323edd55e3d15d5351f088199973c56e  libstdc++-v3/testsuite/27_io/objects/wchar_t/12048-3.cc
! 5d2e2d3c4a476266887cc18c8a12c15d  libstdc++-v3/testsuite/27_io/objects/wchar_t/12048-4.cc
! ee2914fde3f09c8837b56a0316a96abd  libstdc++-v3/testsuite/27_io/objects/wchar_t/12048-5.cc
! 2f2e82bce6ae34196a5601571c569ac6  libstdc++-v3/testsuite/27_io/objects/wchar_t/13.cc
! 6a4212b112396df36434607504b1805a  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
! b722a745d2bd97659c874d6b0fca9f19  libstdc++-v3/testsuite/27_io/objects/wchar_t/2.cc
! ec5f297f6e1c9beb01e498b895be4580  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
! b9f6aee7ef2161de7cc0822a65478353  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
! 7738977076f0810e17c7f540029b961c  libstdc++-v3/testsuite/27_io/objects/wchar_t/3045.cc
! 1b8d76ac346ea10047539cc3cf9fbbfe  libstdc++-v3/testsuite/27_io/objects/wchar_t/3647.cc
! 35c4cebfe840ae0bce78a04a56e066bd  libstdc++-v3/testsuite/27_io/objects/wchar_t/3_xin.cc
  b715c45a6677f269807dab0bbcf0ee1d  libstdc++-v3/testsuite/27_io/objects/wchar_t/3_xin.in
! 44b986a966364a7c53a6a6046b25a105  libstdc++-v3/testsuite/27_io/objects/wchar_t/41037.cc
! 22a533fd7e30a0b9ebfaad90b3fa11f5  libstdc++-v3/testsuite/27_io/objects/wchar_t/4_xin.cc
  68b329da9893e34099c7d8ad5cb9c940  libstdc++-v3/testsuite/27_io/objects/wchar_t/4_xin.in
! 548f59999176e733e9cbf1b3c4ea2ccb  libstdc++-v3/testsuite/27_io/objects/wchar_t/5.cc
! 264d6230c125a47ab7c4f999334aae62  libstdc++-v3/testsuite/27_io/objects/wchar_t/5268.cc
! b861551e6e9aa9ddda8b88e514df41f3  libstdc++-v3/testsuite/27_io/objects/wchar_t/5280_xin.cc
  e7df7cd2ca07f4f1ab415d457a6e1c13  libstdc++-v3/testsuite/27_io/objects/wchar_t/5280_xin.in
! 66e334bdd92f6bda219dcf0bb21e7183  libstdc++-v3/testsuite/27_io/objects/wchar_t/6.cc
! 108a68bc2d11b344cc93d12bc4617660  libstdc++-v3/testsuite/27_io/objects/wchar_t/6548_xin.cc
  d8e8fca2dc0f896fd7cb4cb0031ba249  libstdc++-v3/testsuite/27_io/objects/wchar_t/6548_xin.in
! cf682601cb560db44f9bcb54a2e71dcb  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
! 571c8453ba71b1b2748192dc8fe424fd  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
! d9b716a626740bc0c7bb781ef4948fc8  libstdc++-v3/testsuite/27_io/objects/wchar_t/7.cc
! 5d29f847c5d1b315e361f57ff11c2527  libstdc++-v3/testsuite/27_io/objects/wchar_t/7744_xin.cc
  0bee89b07a248e27c83fc3d5951213c1  libstdc++-v3/testsuite/27_io/objects/wchar_t/7744_xin.in
! d491d4bd1fc0d49b9dd515ab3b6762d2  libstdc++-v3/testsuite/27_io/objects/wchar_t/8.cc
! ab3a0bd82d523262e32517056e49deca  libstdc++-v3/testsuite/27_io/objects/wchar_t/9520.cc
! 529600218c84abcdd2053cd71d2d2ceb  libstdc++-v3/testsuite/27_io/objects/wchar_t/9661-1.cc
! 91df3271603295c0ead1a86653b36bed  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
! 79aacfc363bb67ec0bf552e4043eb860  libstdc++-v3/testsuite/27_io/objects/wchar_t/9662.cc
! 1dbbb367c51ed49408f8820c7b6e9f40  libstdc++-v3/testsuite/27_io/objects/wchar_t/9_xin.cc
  b715c45a6677f269807dab0bbcf0ee1d  libstdc++-v3/testsuite/27_io/objects/wchar_t/9_xin.in
! 95fdb7d28d42183d8625189fedc66c02  libstdc++-v3/testsuite/27_io/objects/wchar_t/dr455.cc
! 02a787dde00cb45f69973128b7e05bcf  libstdc++-v3/testsuite/27_io/rvalue_streams-2.cc
! 880ddfaeadfe58125974473bb820cc6c  libstdc++-v3/testsuite/27_io/rvalue_streams.cc
! 8f1323bef174c613ea5e7f6af0e82d90  libstdc++-v3/testsuite/27_io/types/1.cc
! efd87b7bfe381786bb45fcb92087b692  libstdc++-v3/testsuite/27_io/types/2.cc
! 955e228a9740695a188c603706243dd4  libstdc++-v3/testsuite/27_io/types/3.cc
! 67d256e0acad13d05926ca03cf0552e8  libstdc++-v3/testsuite/27_io/types/4.cc
! d33ba31fe372e3e49f2e113d4dae6f9f  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/awk/cstring_01.cc
! 40c79dd901537e5bde3d83148f146107  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/basic/empty_range.cc
! c231a6b80b28d99ea338152e3707f37b  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/basic/string_01.cc
! 08966cae41c505af22a5e568a173d79f  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/basic/string_range_00_03.cc
! 0931bf56af7b1092e605317e37822430  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/basic/string_range_01_03.cc
! 3f02dc9e3fc487a5e4704b9f4df3db99  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/basic/string_range_02_03.cc
! 958f3d8a1e65a27af0c6e7e0a0c44d12  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/cstring_bracket_01.cc
! 2bfcc0e31391c8cf1ec89e012e558bdf  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/dr2329_neg.cc
! 83af903991ef6719e4f74a8b34033f9e  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/53622.cc
! ae33d25158b95c97299c9f344e437fb3  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/57173.cc
! 0902eea1e9ef278ce4d4c06f8064de05  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/58576.cc
! 3ac9fecfd85a9191a3587817477b412c  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/61601.cc
! f63e4aa97c59ce3b3f5a60c3ced7c351  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/68863.cc
! 456a9bc4f15af097a715490af9608fbb  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/anymatcher.cc
! e57adebd71631cf1bb9e88d8adc3538f  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/backref.cc
! 016093df225743845a2cfcf4a8bd2cbe  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/empty_range.cc
! aa782c789b531ad78a0cad52375d3dc7  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/emptygroup.cc
! 18b5e40a67c0644965f3121e39ebfc74  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/hex.cc
! 167182db4dfdf3d5952432f044da7a2f  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/quoted_char.cc
! 914e1ff867d1e34e8c0652278e95877a  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/ungreedy.cc
! c4815ce13a35dd2c6de63093b6d6a2f4  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/63199.cc
! a2fe07baa8673b0f2386e3049ebed97c  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/anymatcher.cc
! 977fe6a86207d929b8705122ec8e5ce3  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/cjk_match.cc
! 028de8ee4d65159ac9457c15717837cc  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/hex.cc
! ef8988b79802e19401697f78eec750e4  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/cstring_plus.cc
! 8b8d10fe0f4f7f35c08caae4b0625adc  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/cstring_questionmark.cc
! acaefdab2330dbe535534d0ff6e717a6  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/cstring_range.cc
! 75d824c13131612bab836361f7bf24ed  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/string_any.cc
! d06ba4846a82279fdf0abf1226f69709  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/string_range_00_03.cc
! 078f37ef63d0032c46b2a7aefd4b3e28  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/string_range_01_03.cc
! 66e4dddc3176e787371eee16d2b52a22  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/string_range_02_03.cc
! 29ec18207de5bce15737dc2c5775a862  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/wstring_locale.cc
! a58a44ea036f951fe4f125053da58dcc  libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/char/51711.cc
! 3738e4766ed929dc57a86a1b6df41fde  libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/char/basic_replace.cc
! fd38eb66e5b86bc42b56c80b833da842  libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/char/dr2213.cc
! 0950d0ffa365b1e0fa45f440310f4026  libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/char/pr83601.cc
! bdfb71be80e5ad2fef686b54b6c07e04  libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/wchar_t/51711.cc
! 37dad39ab9a43519ec4ffcd0027897aa  libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/wchar_t/pr83601.cc
! 953a6dd2436cf0cf5c80feecc2992ceb  libstdc++-v3/testsuite/28_regex/algorithms/regex_search/61424.cc
! 2b1b067ac725826968cc6d3ff3905c6e  libstdc++-v3/testsuite/28_regex/algorithms/regex_search/61720.cc
! fac476e5b07bb69dc7bee484e66eb4a7  libstdc++-v3/testsuite/28_regex/algorithms/regex_search/basic/string_01.cc
! 0367fc59c86a9d00f98dc99a641bd4cb  libstdc++-v3/testsuite/28_regex/algorithms/regex_search/dr2332_neg.cc
! 828a07b84b30813394ebd06b438885ce  libstdc++-v3/testsuite/28_regex/algorithms/regex_search/ecma/assertion.cc
! 72bb6998203a159aa20cdd9c40bbb083  libstdc++-v3/testsuite/28_regex/algorithms/regex_search/ecma/flags.cc
! f557c323b6989e49be42b487c6a6e31f  libstdc++-v3/testsuite/28_regex/algorithms/regex_search/ecma/greedy.cc
! dce1e00a964d89c523bbea5caef89bd1  libstdc++-v3/testsuite/28_regex/algorithms/regex_search/ecma/string_01.cc
! f5fbe7e46c50f5444b077b3b04c96b2d  libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/cstring.cc
! fa85702ea2d7821b696af5cf16c28bd5  libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/cstring_op.cc
! e5410da167b40cd63df135c699927c8b  libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/moveable.cc
! 8d366e391865f54678ad68439cc469a5  libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/pstring.cc
! b1c51047df8ac4d0da9d71e981f6b588  libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/range.cc
! e927b92bf55b1d9ebe2bd3edd041c32c  libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/string.cc
! ff38c9819c4749464d882f40185f21ee  libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/string_op.cc
! 70926e9ead405e524f07ff4bf65f518d  libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/cstring.cc
! a7f589f7aab2ab278a98c9afb6319057  libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/cstring_op.cc
! 88ff04122f4d9f0ae231f87ef5b9695e  libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/pstring.cc
! 2d76ef1bae31c6f2920e4b8cf286cd54  libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/range.cc
! 927f05e58af0f13d8e45590a2e1e8fd4  libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/string.cc
! e046028532ff0dad478f0437ed2c7b72  libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/string_op.cc
! 935fc281ac8d5a279c45734034f52f7c  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/47724.cc
! 2ac45b4eb96eb0720e48ae4c09cd7cd4  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/83598.cc
! 5a41165fca527e9484149127717adf93  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/cstring.cc
! 1ec1063c4c922cf8227f94bd01d61f59  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/default.cc
! 0d69ed743f507b2c952c69e4ee3e4ab0  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/iter.cc
! 1478f3001c87311cce2e14ee5040fb05  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/pstring_char.cc
! f63f273302fb054f401610e19b7200fd  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/pstring_wchar_t.cc
! 9e3ccac45b79821ca0712af12561214a  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/raw_string.cc
! 402662095b16805f4b5f24e152c01d07  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/string_range_01_02_03.cc
! 4d6de0b3e0f2b1bb53ec684b82582f76  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/cstring.cc
! edb451fec658cddf40158f65b29c9eb3  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/cstring_awk.cc
! bbde414b0593722d776dbd3acb47698d  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/cstring_ecma.cc
! fb48a98891f904033f002ea98da45e9f  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/cstring_egrep.cc
! 13c3c12970bc82c64d464b27177e6dec  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/cstring_grep.cc
! d17377c53d992115aabc58b99ee02066  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/default.cc
! 4ec522ae3d259368cf68fbe06e84876d  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/range.cc
! 860ce80efad3720771000e2354cecc3c  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/copy_char.cc
! 950a82a92d08e49d3c8ace5bd0be589a  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/deduction.cc
! 3e9ae75b73824fd4bf338549dfd87585  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/extended/cstring.cc
! e71aef1fbadf93fd39baae05482ccd97  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/extended/string_range_01_02_03.cc
! abe642613ad2c60145ffcb8e627da6bf  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/move_char.cc
! 9c7021ce6aa74096f216b74f34cfc620  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/string_char.cc
! b5cd33e556d55f11d690b712e3645b11  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/string_wchar_t.cc
! 9d418db01d23240d618993428412e2a1  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/wchar_t/cstring.cc
! f7f6e6eaef3b602968f55ccfc40343a4  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/wchar_t/default.cc
! b25e269072119fe4e0b6d94e2c8f6dd5  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/wchar_t/range.cc
! 765c0f36d1d09be6ba7dc30a96f507c7  libstdc++-v3/testsuite/28_regex/basic_regex/imbue/string.cc
! e4f45ed8745c7735b2b95f1261293844  libstdc++-v3/testsuite/28_regex/basic_regex/multiple_quantifiers.cc
! 411c449554e77702862001d80a66bdd4  libstdc++-v3/testsuite/28_regex/basic_regex/requirements/constexpr_data.cc
! 082fcb611104462ebae148761745d283  libstdc++-v3/testsuite/28_regex/constants/constexpr.cc
! 1f9e0e6037ebe06c6d4019fe08158009  libstdc++-v3/testsuite/28_regex/constants/error_type.cc
! 01e875e447a9c171f10c87104e565c18  libstdc++-v3/testsuite/28_regex/constants/match_flag_type.cc
! e0990fe0c5fd2c9a01df80555f4b33db  libstdc++-v3/testsuite/28_regex/constants/syntax_option_type.cc
! ade2dea4df7dee8edb3bb16266014cd3  libstdc++-v3/testsuite/28_regex/headers/regex/std_c++0x_neg.cc
! 91e7e45a2595b0cc4c28330bed9e46a7  libstdc++-v3/testsuite/28_regex/init-list.cc
! bd8e87a1b7b86f9277ffed88fc83359f  libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/char/64140.cc
! 26065c224516fc4d160e65d90827c43e  libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/char/string_01.cc
! 3bfd887b07bd7a920b27aa187b1189e7  libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/char/string_position_01.cc
! c429da67e72362249a0f675af59b0b9d  libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/ctors/char/default.cc
! cb9a93a1823fc45d3d5ee1c89d595a37  libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/ctors/char/dr2332_neg.cc
! b00a23b195f405f32013f4e2ef8f427f  libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/ctors/wchar_t/default.cc
! 626d341b4e8280163e42cc604cc53ddd  libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/typedefs.cc
! 42daa32c439d40b60341891e2ea49ad8  libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/wchar_t/string_01.cc
! 5ced0ab24c5195142a6d72f612a96363  libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/wchar_t/string_02.cc
! 9aa3267f9bbab2f141979c3a75a55c78  libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/64303.cc
! 8a22b53fdb68a5a9f8fd4851a18b7650  libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/char/string_01.cc
! 2ce5c6f16d4f9328717e2318da19b02d  libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/ctors/char/default.cc
! 435a987f38176c5060ae5500a4f0e2fb  libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/ctors/char/dr2332_neg.cc
! 2fb7c66ca433428ad732e02338174161  libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/ctors/wchar_t/default.cc
! c23b15c3408da08a815ab5ed155802c4  libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/typedefs.cc
! 7631f293aefece08068fe911810a7ec5  libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/wchar_t/string_01.cc
! b67424dfb3abcc18159b2eac3a53dbeb  libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/wchar_t/wstring_02.cc
! cd5c55579a167851fcb3fa716736acbe  libstdc++-v3/testsuite/28_regex/match_results/ctors/char/default.cc
! ec8ccd1b8697767f8b45245495570070  libstdc++-v3/testsuite/28_regex/match_results/ctors/wchar_t/default.cc
! bd9ed6fa77badf224bbeb1328a733ab7  libstdc++-v3/testsuite/28_regex/match_results/format.cc
! caf802eb20293cb22a0d8d53b8502b78  libstdc++-v3/testsuite/28_regex/match_results/out_of_range_submatches.cc
! 461e807c312e00ef4f1e3700af89d7de  libstdc++-v3/testsuite/28_regex/match_results/swap.cc
! a509dcddd8f8bbc487bb28c18c7ca0e8  libstdc++-v3/testsuite/28_regex/match_results/typedefs.cc
! 3d918d64d70e96c8672cc9c20c52ceb8  libstdc++-v3/testsuite/28_regex/range_access.cc
! d6f86462ab3c0123fe0aca3855b9317a  libstdc++-v3/testsuite/28_regex/regex_error/base.cc
! 8fce523c6545731b8e05e7da312625ca  libstdc++-v3/testsuite/28_regex/regex_error/regex_error.cc
! 50f6fcef0d4b462c8fa740a79259c90a  libstdc++-v3/testsuite/28_regex/regression.cc
! 07e8d7eaac33ef628e5d33d636957c33  libstdc++-v3/testsuite/28_regex/requirements/typedefs.cc
! 4254567e17b40fc532efe935f35d223f  libstdc++-v3/testsuite/28_regex/simple_c++11.cc
! d74e2a361fec1cb89944ddb185d20eac  libstdc++-v3/testsuite/28_regex/sub_match/cast_char.cc
! 3bd110b2e5a237226f5a2180a20cee8d  libstdc++-v3/testsuite/28_regex/sub_match/cast_wchar_t.cc
! 649c842ba19c04f70649326fcd439a74  libstdc++-v3/testsuite/28_regex/sub_match/embedded_zeros_cmp.cc
! 270b0fa61cda3d45934bba23da5da708  libstdc++-v3/testsuite/28_regex/sub_match/length.cc
! a581d01723c5812d9036736210ce0fda  libstdc++-v3/testsuite/28_regex/sub_match/typedefs.cc
! 5990321c969a27510b6549cf4d885d10  libstdc++-v3/testsuite/28_regex/traits/char/ctor.cc
! 81f512ce625aa6865c25dc8d4787d4eb  libstdc++-v3/testsuite/28_regex/traits/char/icase.cc
! 0164ba64cf3ff9b1ee29c670c07f0a34  libstdc++-v3/testsuite/28_regex/traits/char/isctype.cc
! 8b94ad95338c74c5beb8385b6782d0d2  libstdc++-v3/testsuite/28_regex/traits/char/length.cc
! 8fe33719e69e8ce445cc3cbfab5da77b  libstdc++-v3/testsuite/28_regex/traits/char/lookup_classname.cc
! a6b3c7e736445b96ad7f0d5fb7b6e4a9  libstdc++-v3/testsuite/28_regex/traits/char/lookup_collatename.cc
! 4880cfad5c5a8fd288880b2489fb4470  libstdc++-v3/testsuite/28_regex/traits/char/transform.cc
! ca765a9608d9fe1d45c0b00fd7f2759e  libstdc++-v3/testsuite/28_regex/traits/char/transform_primary.cc
! 4af0b280c59ee74efc8fbb1cf8071892  libstdc++-v3/testsuite/28_regex/traits/char/translate.cc
! 5bcd93314172c547748972edb598efc7  libstdc++-v3/testsuite/28_regex/traits/char/translate_nocase.cc
! 4f3e53e3219f55f698330d4afef94bf1  libstdc++-v3/testsuite/28_regex/traits/char/user_defined.cc
! 87d67a118f4b5fc009a51271b8c1c829  libstdc++-v3/testsuite/28_regex/traits/char/value.cc
! 8c3297f32f9304f409669371a28594fe  libstdc++-v3/testsuite/28_regex/traits/wchar_t/ctor.cc
! f204fd74e10f9dff67dd70389b9ddba9  libstdc++-v3/testsuite/28_regex/traits/wchar_t/isctype.cc
! afcb2dda9f93568c38d0ed895d7e0338  libstdc++-v3/testsuite/28_regex/traits/wchar_t/length.cc
! 3d5c3cc81ae15010f4e3fe99d33f448f  libstdc++-v3/testsuite/28_regex/traits/wchar_t/lookup_classname.cc
! 623e67d409d707ae52a30371eee8cd5a  libstdc++-v3/testsuite/28_regex/traits/wchar_t/lookup_collatename.cc
! 801c70c16b968f468576503ffdcb5ea5  libstdc++-v3/testsuite/28_regex/traits/wchar_t/transform.cc
! 03d9c734c452c5ffc146a607b369187c  libstdc++-v3/testsuite/28_regex/traits/wchar_t/transform_primary.cc
! 7243e800aa3510042f24d6c261f31981  libstdc++-v3/testsuite/28_regex/traits/wchar_t/translate.cc
! bc7322c67f206e347f0959b08b92301b  libstdc++-v3/testsuite/28_regex/traits/wchar_t/translate_nocase.cc
! d4daad2237939a56c6b158f7fa4293d0  libstdc++-v3/testsuite/28_regex/traits/wchar_t/user_defined.cc
! 064c509f30f6fb444567d526b21ad6fa  libstdc++-v3/testsuite/28_regex/traits/wchar_t/value.cc
! 296c36212cfdec0fa7b9c3a802a708d2  libstdc++-v3/testsuite/29_atomics/atomic/60658.cc
! 9d0773711d5fea94efa79e14231f1b58  libstdc++-v3/testsuite/29_atomics/atomic/60695.cc
! 5f3adc3fed46d634d2d3d7fcc4fff54f  libstdc++-v3/testsuite/29_atomics/atomic/62259.cc
! 48b4124951ac576e50c4741064e046f5  libstdc++-v3/testsuite/29_atomics/atomic/64658.cc
! 3fee83972b542269a34c3a09e794c250  libstdc++-v3/testsuite/29_atomics/atomic/65147.cc
! 1b9a84a36adced67d1867649f8876968  libstdc++-v3/testsuite/29_atomics/atomic/65913.cc
! e917ec485b72d5a1f5b516e47ccbede1  libstdc++-v3/testsuite/29_atomics/atomic/69301.cc
! 40c4eefbff04edd9ac68cf2453c8154b  libstdc++-v3/testsuite/29_atomics/atomic/70766.cc
! 4784e7212aa795a76ae257a31e0a1270  libstdc++-v3/testsuite/29_atomics/atomic/cons/49445.cc
! 141a31e350ab40d91fac9e657065bf6e  libstdc++-v3/testsuite/29_atomics/atomic/cons/assign_neg.cc
! b968e270dc0ebc1cabb9519b8fdb2cb7  libstdc++-v3/testsuite/29_atomics/atomic/cons/constexpr.cc
! 5b29dd419fdb2bf9b96d7c5f41d7cd8b  libstdc++-v3/testsuite/29_atomics/atomic/cons/copy_list.cc
! b1a96cf1dbdb41379b2eabb8babf6964  libstdc++-v3/testsuite/29_atomics/atomic/cons/copy_neg.cc
! 7ae6bd525418cea17e81b25fc3eef35e  libstdc++-v3/testsuite/29_atomics/atomic/cons/default.cc
! 86aecc13cc99d02bbedffc2733129c33  libstdc++-v3/testsuite/29_atomics/atomic/cons/direct_list.cc
! 2d76385da04152e2af20d8ca53509665  libstdc++-v3/testsuite/29_atomics/atomic/cons/single_value.cc
! 67c8f11023e96aa5535c5826254b0104  libstdc++-v3/testsuite/29_atomics/atomic/cons/user_pod.cc
! 653995c7e98497100fb528696657398c  libstdc++-v3/testsuite/29_atomics/atomic/is_always_lock_free.cc
! 9aefba87663ffe6f9b6da22bb32fba89  libstdc++-v3/testsuite/29_atomics/atomic/operators/51811.cc
! 4b1994b676226f509051ef1cfd0548e6  libstdc++-v3/testsuite/29_atomics/atomic/operators/56011.cc
! a634bb223f732efd849889e9ee103c03  libstdc++-v3/testsuite/29_atomics/atomic/operators/integral_assignment.cc
! 03342e4dbb05984529adec7fe57609f3  libstdc++-v3/testsuite/29_atomics/atomic/operators/integral_conversion.cc
! cb2e4b9c2819c40e0f88615e9ae1e729  libstdc++-v3/testsuite/29_atomics/atomic/operators/pointer_partial_void.cc
! f74666dd8f27c378891a55d1de9578a3  libstdc++-v3/testsuite/29_atomics/atomic/requirements/base_classes.cc
! eab8586843b7b72063b09c7d50f5d5b4  libstdc++-v3/testsuite/29_atomics/atomic/requirements/compare_exchange_lowering.cc
! e12a46d04173019564837ba502a8acaa  libstdc++-v3/testsuite/29_atomics/atomic/requirements/explicit_instantiation/1.cc
! 8717c71da8b7bfea88d9329cdfadf15f  libstdc++-v3/testsuite/29_atomics/atomic_flag/clear/1.cc
! 99cc96c8eeee8d2d1cc396204344bac5  libstdc++-v3/testsuite/29_atomics/atomic_flag/cons/1.cc
! 2045c9c51dfb6b6c62812c44d10d7996  libstdc++-v3/testsuite/29_atomics/atomic_flag/cons/56012.cc
! be3c628057238dd356f38addfecad3f2  libstdc++-v3/testsuite/29_atomics/atomic_flag/cons/aggregate.cc
! 23f29d3e0ce11bd45ada899b03af7868  libstdc++-v3/testsuite/29_atomics/atomic_flag/cons/assign_neg.cc
! e97e06c51299d48451e51fb887db1945  libstdc++-v3/testsuite/29_atomics/atomic_flag/cons/copy_neg.cc
! 912f460278c1d10515dcf97273690e56  libstdc++-v3/testsuite/29_atomics/atomic_flag/cons/default.cc
! da2ef4340502466fa4ad9670db9f15f7  libstdc++-v3/testsuite/29_atomics/atomic_flag/requirements/standard_layout.cc
! 40332e435e7e1e359740b9022fcfb55e  libstdc++-v3/testsuite/29_atomics/atomic_flag/requirements/trivial.cc
! 18f0f0b01d876235b54a794b38717a60  libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/explicit-hle.cc
! 284acf85af49d6f6f879eac1ad606ced  libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/explicit.cc
! 60013411b3ac9a4081864fa9552f04f8  libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/implicit.cc
! 6f5398cb73d1b4c8b85bd2166da2a444  libstdc++-v3/testsuite/29_atomics/atomic_integral/60940.cc
! a0720a0990a0f842ea92215fe1ac75a8  libstdc++-v3/testsuite/29_atomics/atomic_integral/65147.cc
! 67043f46de41c18284bc434d43a3e8d0  libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/assign_neg.cc
! 113c4aa794c22c95eed1ed5048d37209  libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/constexpr.cc
! 27301a74c989f59144e79cd982bba7c9  libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/copy_list.cc
! 7f0d6ebb5c334f07d05e7ea62507db5a  libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/copy_neg.cc
! a21a1527ad617587951fa53777b2e6f2  libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/default.cc
! c5891959bd77660b051c5a47f65affde  libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/direct_list.cc
! f3cee462678f504aa607e3b21046cb98  libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/single_value.cc
! e3080a0013737f54c9666010388b3712  libstdc++-v3/testsuite/29_atomics/atomic_integral/is_always_lock_free.cc
! 630656f2ac7686954403970ede6b6a43  libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/bitwise.cc
! 8e40e33cc08769a921a0f6b0d3e5d757  libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/bitwise_neg.cc
! c5e4303a10cdd5e7cc4dd139440b85ed  libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/decrement.cc
! eb859c2d4b92b72bb850e178304ab56c  libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/decrement_neg.cc
! b41f9fef091ccb19445174a0ef8e9cbf  libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/increment.cc
! 70e9772d1d621ce0c72083e5a72fe14e  libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/increment_neg.cc
! b709106c54f962523667ed335a6384bd  libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/integral_assignment.cc
! 89019bf87cb4ba6eb67be6505129c45a  libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/integral_conversion.cc
! 3276d0fdaf8e73769d6a0ebf6d2c4be2  libstdc++-v3/testsuite/29_atomics/atomic_integral/requirements/standard_layout.cc
! 8fedf9147dac9b8c17cb466ef4a0d294  libstdc++-v3/testsuite/29_atomics/atomic_integral/requirements/trivial.cc
! 9b46e3eb742c4a75c8d1d834dc88405c  libstdc++-v3/testsuite/29_atomics/headers/atomic/functions_std_c++0x.cc
! f86c2b10182162a9959b4837fe72ad26  libstdc++-v3/testsuite/29_atomics/headers/atomic/macros.cc
! 0649db658c0864622c402cc02f3711db  libstdc++-v3/testsuite/29_atomics/headers/atomic/std_c++0x_neg.cc
! b2a60975b468ba3ffc3a365cd42e59ca  libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++0x.cc
! 0ce09046a1a584380d526db34ab3a949  libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++0x_neg.cc
! c22b556cdebee35e5bceccca82fb0fb1  libstdc++-v3/testsuite/30_threads/async/42819.cc
! c875ecee69531ff4524f56285700de5d  libstdc++-v3/testsuite/30_threads/async/49668.cc
! c904b12996e67a50665103749f5fb100  libstdc++-v3/testsuite/30_threads/async/54297.cc
! 438e93fc38ee0e403bb6c4927845922b  libstdc++-v3/testsuite/30_threads/async/84532.cc
! d3d406388eef4ea4cbed831065c45561  libstdc++-v3/testsuite/30_threads/async/any.cc
! 3b4e95bd3ec753873204005011174e1f  libstdc++-v3/testsuite/30_threads/async/async.cc
! ac72f8b6937656091e98df78e20d76a3  libstdc++-v3/testsuite/30_threads/async/except.cc
! ad199dfe26a7129dc5b6d22ef593c989  libstdc++-v3/testsuite/30_threads/async/forced_unwind.cc
! 4c837e1f584119bb14d0dd5ca39ac3d2  libstdc++-v3/testsuite/30_threads/async/launch.cc
! 87b970085dca653979ada54b7484fdbf  libstdc++-v3/testsuite/30_threads/async/lwg2021.cc
! baf3d60eba1eb556c83507c196c55981  libstdc++-v3/testsuite/30_threads/async/sync.cc
! ec02ed8a6d95d1f4a9dfaeca23ac8671  libstdc++-v3/testsuite/30_threads/call_once/39909.cc
! 3a68ecca3451a95af47e6ed865a5abb0  libstdc++-v3/testsuite/30_threads/call_once/49668.cc
! 0ff06f40e9804d4060fbb231dc3ad575  libstdc++-v3/testsuite/30_threads/call_once/60497.cc
! d3e8e34e058cd6d18b6e84afa1ebdff2  libstdc++-v3/testsuite/30_threads/call_once/call_once1.cc
! 8781d64cdb10a7913ce09820a163dacf  libstdc++-v3/testsuite/30_threads/call_once/constexpr.cc
! cb98c2bcdcf33b99a4af17ab4cc4bcb5  libstdc++-v3/testsuite/30_threads/call_once/dr2442.cc
! f5de25ce6650c44f4257b4bfac9c9711  libstdc++-v3/testsuite/30_threads/call_once/once_flag.cc
! 3e703f9aba47f9dad852c16061b7f90a  libstdc++-v3/testsuite/30_threads/condition_variable/54185.cc
! ebb2089669eb35a5ad6506bc03dd7ee2  libstdc++-v3/testsuite/30_threads/condition_variable/cons/1.cc
! 69124368f4636a8594d156086f7cdd22  libstdc++-v3/testsuite/30_threads/condition_variable/cons/assign_neg.cc
! f0ae43d5c20d4c5f6d3baf9a750c93ec  libstdc++-v3/testsuite/30_threads/condition_variable/cons/copy_neg.cc
! a9bbc81517c5c850e657e9a05e7e5c03  libstdc++-v3/testsuite/30_threads/condition_variable/members/1.cc
! fcedf4df142780beca4656e95675677c  libstdc++-v3/testsuite/30_threads/condition_variable/members/2.cc
! d317617c6efe3ab27171d042cec79cb6  libstdc++-v3/testsuite/30_threads/condition_variable/members/3.cc
! ae4ffde0001a54d55d8db8a1c5d991f4  libstdc++-v3/testsuite/30_threads/condition_variable/members/53841.cc
! de0d716926a442b4df28c02ce20636bb  libstdc++-v3/testsuite/30_threads/condition_variable/members/68519.cc
! 1c6217e7a0ff66ff807c38f74b4c3fb7  libstdc++-v3/testsuite/30_threads/condition_variable/native_handle/typesizes.cc
! ec86872ace1a89144738f6ba3b404dfa  libstdc++-v3/testsuite/30_threads/condition_variable/requirements/standard_layout.cc
! 742da7e0e0af13eb5c5f33bda9100a66  libstdc++-v3/testsuite/30_threads/condition_variable/requirements/typedefs.cc
! ffdb96f2c655b3bf831f52ae7d0aa14a  libstdc++-v3/testsuite/30_threads/condition_variable_any/50862.cc
! 9b3627626ba47dd1af8057a7a755d045  libstdc++-v3/testsuite/30_threads/condition_variable_any/53830.cc
! f1bf38feea82bc248c0989c3d782b554  libstdc++-v3/testsuite/30_threads/condition_variable_any/cons/1.cc
! d39db789443141488a701805ea53adaf  libstdc++-v3/testsuite/30_threads/condition_variable_any/cons/assign_neg.cc
! 78dce823a9364be9b123f1266eab5fdd  libstdc++-v3/testsuite/30_threads/condition_variable_any/cons/copy_neg.cc
! b5a6e4ffa14c63d6ccc7145084a48856  libstdc++-v3/testsuite/30_threads/condition_variable_any/members/1.cc
! fcff9fb6f7b81e8719d6c71f31ce0ff1  libstdc++-v3/testsuite/30_threads/condition_variable_any/members/2.cc
! 6e3a2452712346dc483b57a4b64632da  libstdc++-v3/testsuite/30_threads/future/cons/assign_neg.cc
! c618e3b7d877b6b01752ef2341fbec43  libstdc++-v3/testsuite/30_threads/future/cons/constexpr.cc
! 40b35adb5f5c515334cb28350fa9e3d1  libstdc++-v3/testsuite/30_threads/future/cons/copy_neg.cc
! 8346f6fa10e15a29b43b0514b36b32b5  libstdc++-v3/testsuite/30_threads/future/cons/default.cc
! 88e472985adb9c27e3cb4ad9e9ade7ae  libstdc++-v3/testsuite/30_threads/future/cons/move.cc
! d56c7fce0ba0d1b6f682ea372cbe2516  libstdc++-v3/testsuite/30_threads/future/cons/move_assign.cc
! 72fdcefdd29e6d8093fd797ec7be0a51  libstdc++-v3/testsuite/30_threads/future/members/45133.cc
! 9787d0972334e102e4a11275bf290412  libstdc++-v3/testsuite/30_threads/future/members/get.cc
! af970e1af952a9d27479c13d67be7d4a  libstdc++-v3/testsuite/30_threads/future/members/get2.cc
! bcb8d4d7f90fb5459fb06d3d55bdb2a9  libstdc++-v3/testsuite/30_threads/future/members/share.cc
! 58c24bff8358130c8748d1feb2ab013d  libstdc++-v3/testsuite/30_threads/future/members/valid.cc
! 70ed4bca7e2e641065cd8c78f3d80d23  libstdc++-v3/testsuite/30_threads/future/members/wait.cc
! 5c78402144a25522f9486151833c68ac  libstdc++-v3/testsuite/30_threads/future/members/wait_for.cc
! db1b9c3db548dd5f04369faf7188e722  libstdc++-v3/testsuite/30_threads/future/members/wait_until.cc
! 68de3222cd946c9c8e88dd26917ce574  libstdc++-v3/testsuite/30_threads/future/requirements/explicit_instantiation.cc
! a0e0690d3f413b21beafee5dccb08b6b  libstdc++-v3/testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc
! b8d8cce1af80f0533d62095a1765c975  libstdc++-v3/testsuite/30_threads/headers/condition_variable/types_std_c++0x.cc
! 0a1e6baeea002d2e58c618eb9da4448f  libstdc++-v3/testsuite/30_threads/headers/future/std_c++0x_neg.cc
! cb6507b15083f83742a4a80103785cf6  libstdc++-v3/testsuite/30_threads/headers/future/types_std_c++0x.cc
! 91f3183c54ed81928f4e937b60443447  libstdc++-v3/testsuite/30_threads/headers/mutex/std_c++0x_neg.cc
! d92ee5d51fec201878fcb872b8780abc  libstdc++-v3/testsuite/30_threads/headers/mutex/types_std_c++0x.cc
! 87632d15319fd147f5a6c10088c34efb  libstdc++-v3/testsuite/30_threads/headers/thread/std_c++0x_neg.cc
! f9ae028ec0d4f44c9b3e3703630f5665  libstdc++-v3/testsuite/30_threads/headers/thread/types_std_c++0x.cc
! 9d14c96fb95e9728ae49130a904ff93c  libstdc++-v3/testsuite/30_threads/lock/1.cc
! 7d06f4153662a9f3aa23a28ac6fbbc3b  libstdc++-v3/testsuite/30_threads/lock/2.cc
! 038e9a78319f31fe1425728e57b8797c  libstdc++-v3/testsuite/30_threads/lock/3.cc
! d320f2a04f9ee59414c53eacc71d1020  libstdc++-v3/testsuite/30_threads/lock/4.cc
! 9eace69b51be2739f05c4b679e9a79b9  libstdc++-v3/testsuite/30_threads/lock_guard/cons/1.cc
! 72b4e8f4147195d0f79e3402ed25cfb8  libstdc++-v3/testsuite/30_threads/lock_guard/cons/deduction.cc
! 7580c5339ad23d433040067edf5c17f8  libstdc++-v3/testsuite/30_threads/lock_guard/requirements/explicit_instantiation.cc
! 669a3e3bf882f14778eea029c2158093  libstdc++-v3/testsuite/30_threads/lock_guard/requirements/typedefs.cc
! 14fbc43e41845edafef6553db055a23b  libstdc++-v3/testsuite/30_threads/mutex/cons/1.cc
! c8253ff44986e2edcc6d6ddc0571b894  libstdc++-v3/testsuite/30_threads/mutex/cons/assign_neg.cc
! 8781d64cdb10a7913ce09820a163dacf  libstdc++-v3/testsuite/30_threads/mutex/cons/constexpr.cc
! cede7788dc32b01c6143ae8861c6100f  libstdc++-v3/testsuite/30_threads/mutex/cons/copy_neg.cc
! 90ac99415a980c3ae269a45ea9fcf15a  libstdc++-v3/testsuite/30_threads/mutex/dest/destructor_locked.cc
! d994f7cb8283f9aeb56490fb04ab6458  libstdc++-v3/testsuite/30_threads/mutex/lock/1.cc
! d5272746a1c9e7396f5c4d994a8fc2af  libstdc++-v3/testsuite/30_threads/mutex/native_handle/1.cc
! 2d0d39bff0a929a8c725d43ba1972069  libstdc++-v3/testsuite/30_threads/mutex/native_handle/typesizes.cc
! e383d8ae5223b200b44c0a09ae435ff4  libstdc++-v3/testsuite/30_threads/mutex/requirements/standard_layout.cc
! c0053fc4ef9c48da4ac5b49e533ffddd  libstdc++-v3/testsuite/30_threads/mutex/requirements/typedefs.cc
! ec48c550b525d5d6126060aeaf7272a8  libstdc++-v3/testsuite/30_threads/mutex/try_lock/1.cc
! c5d2a5ea8e3d348932723d92da2b06ca  libstdc++-v3/testsuite/30_threads/mutex/try_lock/2.cc
! bbcc0acf78534ae2399e096898fdf4ce  libstdc++-v3/testsuite/30_threads/mutex/unlock/1.cc
! 7848e7ad2f4b106a39813ab85e32ddcd  libstdc++-v3/testsuite/30_threads/mutex/unlock/2.cc
! af14bae7d4afbfa844f06a2b9a0dcfb4  libstdc++-v3/testsuite/30_threads/once_flag/cons/constexpr.cc
! 61695cfb243d0984debae78aaf4548fa  libstdc++-v3/testsuite/30_threads/packaged_task/49668.cc
! 1be3600224f0c0a10c2ff830ed0dfa05  libstdc++-v3/testsuite/30_threads/packaged_task/60564.cc
! 2c63760905fe133cd5462c074472c248  libstdc++-v3/testsuite/30_threads/packaged_task/79486.cc
! e4676ef65610c62d5efc075c15b51e63  libstdc++-v3/testsuite/30_threads/packaged_task/cons/1.cc
! f5e16eafa6257a0508508942c8e805b1  libstdc++-v3/testsuite/30_threads/packaged_task/cons/2.cc
! c5282857527201bd4ed5e52381e7a780  libstdc++-v3/testsuite/30_threads/packaged_task/cons/3.cc
! 5c4f4c66b8cea7753839b392b3465441  libstdc++-v3/testsuite/30_threads/packaged_task/cons/56492.cc
! 87054ae51780e0aa937a2d3c07495c2e  libstdc++-v3/testsuite/30_threads/packaged_task/cons/alloc.cc
! a88e611733623af59bfd513d89a15e7e  libstdc++-v3/testsuite/30_threads/packaged_task/cons/alloc2.cc
! 1742e75f9663cd1209affab88e9d482b  libstdc++-v3/testsuite/30_threads/packaged_task/cons/alloc_min.cc
! 43b7540fe6fc78f6208276e7974a5b0b  libstdc++-v3/testsuite/30_threads/packaged_task/cons/assign_neg.cc
! 9bcefc420f0a0b12ea0cbd8ccba687ca  libstdc++-v3/testsuite/30_threads/packaged_task/cons/copy_neg.cc
! 4b476dcd8da1a2e657b5f71100236faf  libstdc++-v3/testsuite/30_threads/packaged_task/cons/move.cc
! 9337cb2b99fbcd275a70601a6fc87cea  libstdc++-v3/testsuite/30_threads/packaged_task/cons/move_assign.cc
! 054e82e59d943fece47628623b6e3ae0  libstdc++-v3/testsuite/30_threads/packaged_task/forced_unwind.cc
! 1fe8a74bd5f9a85a2600a5246de040e3  libstdc++-v3/testsuite/30_threads/packaged_task/members/at_thread_exit.cc
! bd3e15f05094294459fe42a8b590a8ee  libstdc++-v3/testsuite/30_threads/packaged_task/members/get_future.cc
! 9012178127e2b1119477ab6a95f2dd72  libstdc++-v3/testsuite/30_threads/packaged_task/members/get_future2.cc
! 942791d8095e3affe045b1481fab60f7  libstdc++-v3/testsuite/30_threads/packaged_task/members/invoke.cc
! 0e002b0f2d007faa257cb33ac235e944  libstdc++-v3/testsuite/30_threads/packaged_task/members/invoke2.cc
! dfb704834f75d1bfa8373198fe9b9d10  libstdc++-v3/testsuite/30_threads/packaged_task/members/invoke3.cc
! 322c783c7730beb6c70ffba7c6696727  libstdc++-v3/testsuite/30_threads/packaged_task/members/invoke4.cc
! a83dd5d9b017b30185da8832920ec072  libstdc++-v3/testsuite/30_threads/packaged_task/members/invoke5.cc
! 7209a5b8b52ef7889478608c4ea89aa5  libstdc++-v3/testsuite/30_threads/packaged_task/members/reset.cc
! 9cbd2a70a007631f7b39a189a321aecc  libstdc++-v3/testsuite/30_threads/packaged_task/members/reset2.cc
! 772750e9a0a5dd9e5277b96deb9b81c4  libstdc++-v3/testsuite/30_threads/packaged_task/members/swap.cc
! 538ad2fe2474ec90c9ec238f8da43295  libstdc++-v3/testsuite/30_threads/packaged_task/members/valid.cc
! 5103b70ad9d8a8d6d2fff0db53107d88  libstdc++-v3/testsuite/30_threads/packaged_task/requirements/explicit_instantiation.cc
! 387689112bdfbcc3e9b4faec21870385  libstdc++-v3/testsuite/30_threads/packaged_task/uses_allocator.cc
! 6a66d09faeccb3cee1518238eb69ef78  libstdc++-v3/testsuite/30_threads/promise/60966.cc
! dd66a234e567f2effc00cff1baae0d00  libstdc++-v3/testsuite/30_threads/promise/69106.cc
! dd207938c4a4fe72843dee1f12043eac  libstdc++-v3/testsuite/30_threads/promise/cons/1.cc
! 667c3027dd00f72494df5ab6d19e2309  libstdc++-v3/testsuite/30_threads/promise/cons/alloc.cc
! a745f90bef623cb216b721a40d367a75  libstdc++-v3/testsuite/30_threads/promise/cons/alloc2.cc
! 886eb239f25cea597a61b78d8a162fcc  libstdc++-v3/testsuite/30_threads/promise/cons/alloc_min.cc
! 4c8e3628761627eeeeb411b9c868238e  libstdc++-v3/testsuite/30_threads/promise/cons/assign_neg.cc
! 5422da55d593df62094d6f597d5592ab  libstdc++-v3/testsuite/30_threads/promise/cons/copy_neg.cc
! ac53d1e2536e92c071df4f67f78c9bb2  libstdc++-v3/testsuite/30_threads/promise/cons/move.cc
! 6377a8017155f43c0efa9142c15a8a42  libstdc++-v3/testsuite/30_threads/promise/cons/move_assign.cc
! e8771ba12120cd2f800cc3e3598a3cb0  libstdc++-v3/testsuite/30_threads/promise/members/at_thread_exit.cc
! 7b543992e3487eb3f965fa93ddd3f243  libstdc++-v3/testsuite/30_threads/promise/members/at_thread_exit2.cc
! 22c48ff8ed70854280e0ef10fd26f3a2  libstdc++-v3/testsuite/30_threads/promise/members/get_future.cc
! d41d6fc258d2cc1b7851ef3c04c4733d  libstdc++-v3/testsuite/30_threads/promise/members/get_future2.cc
! 1afd9f7fe474909db91907ff53df913d  libstdc++-v3/testsuite/30_threads/promise/members/set_exception.cc
! 9c4c0a599a97a12fb7c83f620e0138d6  libstdc++-v3/testsuite/30_threads/promise/members/set_exception2.cc
! d999f809b81b37be074ca12700e29fcb  libstdc++-v3/testsuite/30_threads/promise/members/set_value.cc
! 194b2bd2c68a2f956e0d6380a18bf8bd  libstdc++-v3/testsuite/30_threads/promise/members/set_value2.cc
! c128b22178b2f34d683bf9fe97eb6187  libstdc++-v3/testsuite/30_threads/promise/members/set_value3.cc
! e8bddfaf031143314c7fe3ee5cde1efa  libstdc++-v3/testsuite/30_threads/promise/members/swap.cc
! ee4ee20a57e84c511ddc2699a6bc6ed8  libstdc++-v3/testsuite/30_threads/promise/requirements/explicit_instantiation.cc
! 759098c8f67d67d2803dd5cb03b3f3ad  libstdc++-v3/testsuite/30_threads/promise/uses_allocator.cc
! 7921b2b3a0c0641ed0201fae48ed2447  libstdc++-v3/testsuite/30_threads/recursive_mutex/cons/1.cc
! 58be0fb2b808b70117c1b565e02bfc42  libstdc++-v3/testsuite/30_threads/recursive_mutex/cons/assign_neg.cc
! 38d221a31d3c3394da654c5b1481af0d  libstdc++-v3/testsuite/30_threads/recursive_mutex/cons/copy_neg.cc
! ad55b14d816ffa3884f742986b054eb5  libstdc++-v3/testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc
! 887e7f15e1292356cf76173e2e5b1efd  libstdc++-v3/testsuite/30_threads/recursive_mutex/lock/1.cc
! 6625aaef37b08f666193fae2c7586985  libstdc++-v3/testsuite/30_threads/recursive_mutex/native_handle/1.cc
! 2f7e59f1da6caa7492fc59606a60d2d7  libstdc++-v3/testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc
! 2f6f72a9076a2bd7e90d7e86eaf26974  libstdc++-v3/testsuite/30_threads/recursive_mutex/requirements/standard_layout.cc
! a20d45a867e5373324d18c21ad1eef41  libstdc++-v3/testsuite/30_threads/recursive_mutex/requirements/typedefs.cc
! 1232df60e69f88e2448ce18a3a89e2c1  libstdc++-v3/testsuite/30_threads/recursive_mutex/try_lock/1.cc
! 194940c8ef96130aef2a6fb37dc96318  libstdc++-v3/testsuite/30_threads/recursive_mutex/try_lock/2.cc
! 6edba3572f3c9896577f3253fbd29b83  libstdc++-v3/testsuite/30_threads/recursive_mutex/unlock/1.cc
! dc8883e2e92d71a7750dcb6b4ec226df  libstdc++-v3/testsuite/30_threads/recursive_mutex/unlock/2.cc
! bb97128e4b2bc7b167e0751c32629656  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/cons/1.cc
! 9c704b36b7d4ffec2203fee46a6aa267  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc
! 5c2e3362ccdbe49df324870d9cd7b80c  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc
! dfea62a528d4fa74e015799d788d5614  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc
! d7bd1281d05fa01836769c8c4b2ceabe  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/lock/1.cc
! 5656ab2b4baa77e6b8cea9f47f835244  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/lock/2.cc
! 819950ee6aad4a912fa7bec6573052d1  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc
! 5a5391e44ecdf132546fcb124fc40e1d  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/native_handle/typesizes.cc
! 9b1c7cbcc9b63ffefb945c5762c41c1b  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc
! 9e5b79186f399cccc180b8ae7c1350d2  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc
! 4bc2b0d59c702b5020bd881edc32d9f7  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc
! ef49f3b6d6a370c0f91c0bfe36431065  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc
! 8ac200988ab5754e7000de770475d341  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc
! b930e5bacce766c8970b3468cd5bc827  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc
! 9e5b79186f399cccc180b8ae7c1350d2  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc
! c4ae47b5917ce445ee7e764105d51444  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc
! 1aae726f666c875439828a33c05f4015  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/unlock/1.cc
! d08c4e2a4a0f84439f44d3b0ef4ff7a3  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/unlock/2.cc
! cb778c94ff43a6082bbf3440a618134b  libstdc++-v3/testsuite/30_threads/scoped_lock/cons/1.cc
! 9d7de85b7d568e5eb1d0df2cc3de8ff1  libstdc++-v3/testsuite/30_threads/scoped_lock/cons/deduction.cc
! cd9960f467e3de123337f01734a0a886  libstdc++-v3/testsuite/30_threads/scoped_lock/requirements/explicit_instantiation.cc
! 84266f2fad6d698ffa8dd7a48eef51e8  libstdc++-v3/testsuite/30_threads/scoped_lock/requirements/typedefs.cc
! fb7e055281dfc958f5d4807f97b9d136  libstdc++-v3/testsuite/30_threads/shared_future/cons/assign.cc
! 1eb66328736ea90099064debcde5dbf4  libstdc++-v3/testsuite/30_threads/shared_future/cons/constexpr.cc
! 9058b0024be092a2d1a6611b155727d8  libstdc++-v3/testsuite/30_threads/shared_future/cons/copy.cc
! bdc72ee454bfb62def1dd73d9a047551  libstdc++-v3/testsuite/30_threads/shared_future/cons/default.cc
! 353159d2afa308a43773843d629f99ea  libstdc++-v3/testsuite/30_threads/shared_future/cons/move.cc
! 89139d2459e9ccb54450358269237a36  libstdc++-v3/testsuite/30_threads/shared_future/cons/move_assign.cc
! 01dba4b6d7b0a3558e5b11c5ca75447c  libstdc++-v3/testsuite/30_threads/shared_future/members/45133.cc
! 47063e71851dccf4ea09f8c497f04df2  libstdc++-v3/testsuite/30_threads/shared_future/members/get.cc
! 9edeee66f3c058570d71633400eac8fc  libstdc++-v3/testsuite/30_threads/shared_future/members/get2.cc
! 1d3ed69bb62f2b907a9898a52642912b  libstdc++-v3/testsuite/30_threads/shared_future/members/valid.cc
! f3ac3487c0ea9be34512b2a7876b0fe9  libstdc++-v3/testsuite/30_threads/shared_future/members/wait.cc
! 8321d9c8bf3459344ea24dfacf1e0b9f  libstdc++-v3/testsuite/30_threads/shared_future/members/wait_for.cc
! 9987ca7e001ab9782af86a2400e84965  libstdc++-v3/testsuite/30_threads/shared_future/members/wait_until.cc
! 5bafdb9dc5b5261d54c9e0326872a669  libstdc++-v3/testsuite/30_threads/shared_future/requirements/explicit_instantiation.cc
! 863e46a26df5131d46fc91a7efa656a7  libstdc++-v3/testsuite/30_threads/shared_lock/70766.cc
! 9bf598b6963ad1b6b7743ae240e34b39  libstdc++-v3/testsuite/30_threads/shared_lock/cons/1.cc
! d076eeb326de01ed438555822abf2ed0  libstdc++-v3/testsuite/30_threads/shared_lock/cons/2.cc
! 6002bb51c92fe140c50237d793cb0b9b  libstdc++-v3/testsuite/30_threads/shared_lock/cons/3.cc
! c1d72b292150df4e9a0fc8f893de290f  libstdc++-v3/testsuite/30_threads/shared_lock/cons/4.cc
! 7fb76326b6da5c1d45eaa58c6c4f11a4  libstdc++-v3/testsuite/30_threads/shared_lock/cons/5.cc
! 8c74dc92af093422a9b9580d02cf90cc  libstdc++-v3/testsuite/30_threads/shared_lock/cons/6.cc
! d3491fd97a3a90fb59d259db51c892aa  libstdc++-v3/testsuite/30_threads/shared_lock/locking/1.cc
! 4d39971f3e4f1051acdb1f183ea38cea  libstdc++-v3/testsuite/30_threads/shared_lock/locking/2.cc
! 7edc7d353ad363f1c3ced7bceafbfacf  libstdc++-v3/testsuite/30_threads/shared_lock/locking/3.cc
! a40b3367decbb994e074f669cda6aa49  libstdc++-v3/testsuite/30_threads/shared_lock/locking/4.cc
! 036e140f2bfa4eff5239b9b7248ec70d  libstdc++-v3/testsuite/30_threads/shared_lock/modifiers/1.cc
! e2cfd13263c6c8fde11a4fdc5d987ad4  libstdc++-v3/testsuite/30_threads/shared_lock/requirements/explicit_instantiation.cc
! 38461ee192503c585b7efc29d39634e9  libstdc++-v3/testsuite/30_threads/shared_lock/requirements/typedefs.cc
! 2e35c28d15438ceee4755e5ed73fde5a  libstdc++-v3/testsuite/30_threads/shared_mutex/cons/1.cc
! 4b171913a11ae750140b2a5d04b52047  libstdc++-v3/testsuite/30_threads/shared_mutex/cons/assign_neg.cc
! 8d15770cd3ec59aa5f8851040f2613c5  libstdc++-v3/testsuite/30_threads/shared_mutex/cons/copy_neg.cc
! 0e64a9f36c9c5cd4f111048d2630e846  libstdc++-v3/testsuite/30_threads/shared_mutex/requirements/standard_layout.cc
! 326ce9dd59d3ad4017fe5e7f5b39068a  libstdc++-v3/testsuite/30_threads/shared_mutex/try_lock/1.cc
! c7a2521fe4a4322ea45e914c27217b8a  libstdc++-v3/testsuite/30_threads/shared_mutex/try_lock/2.cc
! 373bb4bbbceea2449f1e0cd8be380af7  libstdc++-v3/testsuite/30_threads/shared_mutex/unlock/1.cc
! 1bf84c2afa8dc1199247f63e59fb6c8b  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/cons/1.cc
! 83e7b37efa3da10f8f31188928fb79e8  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/cons/assign_neg.cc
! 386ede997b3f76a5f13e0eba9df40897  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/cons/copy_neg.cc
! f2dc3a6db32c8d3423313ce744e09b0e  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/requirements/standard_layout.cc
! 32102597ccf48805c86c919c0ff57ba8  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock/1.cc
! 4916991169004025d8edc4eef51ba707  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock/2.cc
! 96851557253e2dd82304655d1db85bd5  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock/3.cc
! 8244a6718ed9f057126e68e4936572b6  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/unlock/1.cc
! c965e79a6e2d2023a1fc31b01ded82b4  libstdc++-v3/testsuite/30_threads/this_thread/1.cc
! b2a13aff2e684782175ebca4a0ab05a8  libstdc++-v3/testsuite/30_threads/this_thread/2.cc
! 4205825c442b9a53b8263144e3b85669  libstdc++-v3/testsuite/30_threads/this_thread/3.cc
! eba90f58503b7af11d116c399e47e6cc  libstdc++-v3/testsuite/30_threads/this_thread/4.cc
! 10f1fb93bf74f152ce5ac8245cbff9a2  libstdc++-v3/testsuite/30_threads/this_thread/57060.cc
! 711fbb2b137aa11aacbb58bcffc871fe  libstdc++-v3/testsuite/30_threads/this_thread/58038.cc
! 9bc5bc480df766814040dd34f696ad4e  libstdc++-v3/testsuite/30_threads/this_thread/60421.cc
! acaaa9ac6e7ace9469d5e937cd5ed4c3  libstdc++-v3/testsuite/30_threads/thread/70503.cc
! 93bd53539434e365957f83ef2b818d58  libstdc++-v3/testsuite/30_threads/thread/84532.cc
! f551107248ef80eeca1cd58ca8d4534d  libstdc++-v3/testsuite/30_threads/thread/adl.cc
! 5eb6e029d7aa635613a7ca876b9efdc1  libstdc++-v3/testsuite/30_threads/thread/cons/1.cc
! a9ab0a89c8b9858101617cabceb99435  libstdc++-v3/testsuite/30_threads/thread/cons/2.cc
! 6e48874ce0467ca241a8e169d712c375  libstdc++-v3/testsuite/30_threads/thread/cons/3.cc
! ef6088c0972e1294c4850edbc3bce731  libstdc++-v3/testsuite/30_threads/thread/cons/4.cc
! 7dc429ded880ac30a3d261c39b908bcb  libstdc++-v3/testsuite/30_threads/thread/cons/49668.cc
! 91f7cde93b6de58af4b2f943899e6818  libstdc++-v3/testsuite/30_threads/thread/cons/5.cc
! 68c0bdeb855c20a70dac6e25768fbd42  libstdc++-v3/testsuite/30_threads/thread/cons/6.cc
! 950973775e5c782352c8b14d51883533  libstdc++-v3/testsuite/30_threads/thread/cons/7.cc
! 1cba2b4146e3fa33c5f5009df9b52af9  libstdc++-v3/testsuite/30_threads/thread/cons/8.cc
! f96bb046912e15210759deb86f201419  libstdc++-v3/testsuite/30_threads/thread/cons/9.cc
! 7279f68bd1bfd08b3ea372baddadde5b  libstdc++-v3/testsuite/30_threads/thread/cons/assign_neg.cc
! c9c4e6825d60c7cc1791e199a4ac4f78  libstdc++-v3/testsuite/30_threads/thread/cons/copy_neg.cc
! bad7430a883db73c20563d009164b525  libstdc++-v3/testsuite/30_threads/thread/cons/lwg2097.cc
! 862face1aafd0fcb1f4166df40a7062e  libstdc++-v3/testsuite/30_threads/thread/cons/moveable.cc
! edbfda6d8ea04598c6382a4a35295b62  libstdc++-v3/testsuite/30_threads/thread/cons/terminate.cc
! 878fadb1daa74892f5bb2db2bb1a4179  libstdc++-v3/testsuite/30_threads/thread/id/70294.cc
! b133994ce04480b83c6cabd11dd4f919  libstdc++-v3/testsuite/30_threads/thread/id/hash.cc
! 9fc1f74a2176ac578339df235c1b7fa5  libstdc++-v3/testsuite/30_threads/thread/id/operators.cc
! a295407041708a4ede55fa196cd835db  libstdc++-v3/testsuite/30_threads/thread/members/1.cc
! 74c607ffa546b36591e108df286acfeb  libstdc++-v3/testsuite/30_threads/thread/members/2.cc
! e318299c5d8e70b0fbe1e5ee2288eb49  libstdc++-v3/testsuite/30_threads/thread/members/3.cc
! 484ce53a3eda7a4943dd94250a8ea6f0  libstdc++-v3/testsuite/30_threads/thread/members/4.cc
! 21bda99da0ca706a8abacc08de592725  libstdc++-v3/testsuite/30_threads/thread/members/5.cc
! 990effe60e058ba0818f8093e36282f7  libstdc++-v3/testsuite/30_threads/thread/members/hardware_concurrency.cc
! 111568d9dece363defad007e6aca1235  libstdc++-v3/testsuite/30_threads/thread/native_handle/cancel.cc
! 0a6e8a35b7c23e13ce3a2c219bc82110  libstdc++-v3/testsuite/30_threads/thread/native_handle/typesizes.cc
! 99edcc9279818dbf83dfe137a47970c4  libstdc++-v3/testsuite/30_threads/thread/swap/1.cc
! 0f00fd59886fed02fd813f1f412892a7  libstdc++-v3/testsuite/30_threads/timed_mutex/cons/1.cc
! 90d470035f46fcc4dd1a822777da1031  libstdc++-v3/testsuite/30_threads/timed_mutex/cons/assign_neg.cc
! f6472f202abb3ddbea7085d90bc0c417  libstdc++-v3/testsuite/30_threads/timed_mutex/cons/copy_neg.cc
! b78725116e44c1044d33f5911d791208  libstdc++-v3/testsuite/30_threads/timed_mutex/dest/destructor_locked.cc
! e320fb6c5073e96802bd04a8b8390eec  libstdc++-v3/testsuite/30_threads/timed_mutex/lock/1.cc
! 9516962edd661bf713c1ae9975cf03ca  libstdc++-v3/testsuite/30_threads/timed_mutex/native_handle/1.cc
! b0812dd66435c895b004ad74e8765bb4  libstdc++-v3/testsuite/30_threads/timed_mutex/native_handle/typesizes.cc
! 8795517bd44b3ce779b658784f7c1c9d  libstdc++-v3/testsuite/30_threads/timed_mutex/requirements/standard_layout.cc
! a39a04b678979796bdb576333c4a4dd8  libstdc++-v3/testsuite/30_threads/timed_mutex/requirements/typedefs.cc
! abec1e946224277c87bce01fb6fb2293  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock/1.cc
! ef5f27a1d43fc8e85a77023fa9e2fbff  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock/2.cc
! bade7388344c955a450367ea1e4946ed  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_for/1.cc
! cb02169ddd51beb5c83ba8faca261405  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_for/2.cc
! 0798e2cd45f13965f7e5b303bd5db782  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_for/3.cc
! abec1e946224277c87bce01fb6fb2293  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_until/1.cc
! ef5f27a1d43fc8e85a77023fa9e2fbff  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_until/2.cc
! 362524eadd797889615fb4e466bd590d  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_until/57641.cc
! 7ae961a7694679fab4808011f2714886  libstdc++-v3/testsuite/30_threads/timed_mutex/unlock/1.cc
! de0f1e85b92b2928513c3ce823f1ef68  libstdc++-v3/testsuite/30_threads/timed_mutex/unlock/2.cc
! dfeb3156e6a5939ef907b0b7c386835b  libstdc++-v3/testsuite/30_threads/try_lock/1.cc
! cb9c9775b3e3dd25adc9bf07d878ecea  libstdc++-v3/testsuite/30_threads/try_lock/2.cc
! 1b0726f692bcce597d3884fe303a0884  libstdc++-v3/testsuite/30_threads/try_lock/3.cc
! 980604760e4e3ffb6aac066e67f24810  libstdc++-v3/testsuite/30_threads/try_lock/4.cc
! dec044adbf790cb465a02d270c1700dc  libstdc++-v3/testsuite/30_threads/unique_lock/cons/1.cc
! 10b91f515ea96333883b434ddb9c260e  libstdc++-v3/testsuite/30_threads/unique_lock/cons/2.cc
! 4cae298cb0493c8214531ecf2c677abf  libstdc++-v3/testsuite/30_threads/unique_lock/cons/3.cc
! 68b29dbac836fa37e12278df24dbb215  libstdc++-v3/testsuite/30_threads/unique_lock/cons/4.cc
! 1bf79f1570fe0babc0c810f72ea59e73  libstdc++-v3/testsuite/30_threads/unique_lock/cons/5.cc
! dac20ffc789fb406637997fd20fb44c5  libstdc++-v3/testsuite/30_threads/unique_lock/cons/6.cc
! d10d58fead70c9585b70311f20abec68  libstdc++-v3/testsuite/30_threads/unique_lock/cons/60497.cc
! 8866cae97e9c5f14187f3e3726e6229c  libstdc++-v3/testsuite/30_threads/unique_lock/cons/deduction.cc
! 44a20f6adefb9766fe05dfa4a81a3361  libstdc++-v3/testsuite/30_threads/unique_lock/locking/1.cc
! 88de7032772d6cdd3578c02421bde832  libstdc++-v3/testsuite/30_threads/unique_lock/locking/2.cc
! 09a8ded90ea6c1570bb4ae8d58038697  libstdc++-v3/testsuite/30_threads/unique_lock/locking/3.cc
! ff9fdf92c14e503e245052c1ac1f3fc3  libstdc++-v3/testsuite/30_threads/unique_lock/locking/4.cc
! 0b5ea27087a0adb33cc9377ca876946c  libstdc++-v3/testsuite/30_threads/unique_lock/modifiers/1.cc
! 8065039a8ecd272e507f29466c512206  libstdc++-v3/testsuite/30_threads/unique_lock/requirements/explicit_instantiation.cc
! d8f8888f1e07f092d3e7268f5c594d34  libstdc++-v3/testsuite/30_threads/unique_lock/requirements/typedefs.cc
! 042e568a03bf149f527a8ad56ab46553  libstdc++-v3/testsuite/Makefile.am
! e01204b5f6bd14329bf69a546ce82190  libstdc++-v3/testsuite/Makefile.in
! 376a77df1037e10a14ab4a3e79a301f6  libstdc++-v3/testsuite/abi/30586.cc
! 3ddbd6e8e0d483ee800f6c1127902325  libstdc++-v3/testsuite/abi/cxx_runtime_only_linkage.cc
! 338e6ddcbb7389dedebbd966c4d728e9  libstdc++-v3/testsuite/abi/demangle/abi_examples/01.cc
! 32eb5883e7ab558ef46a410520d35a4c  libstdc++-v3/testsuite/abi/demangle/abi_examples/02.cc
! d644c2ec6b2707e633d1b7baf0a6d8a1  libstdc++-v3/testsuite/abi/demangle/abi_examples/03.cc
! c5abe4ff9ef8301e938d494c7632cdc9  libstdc++-v3/testsuite/abi/demangle/abi_examples/04.cc
! 176a5e24db9ddeae76f42dd7b13a948b  libstdc++-v3/testsuite/abi/demangle/abi_examples/05.cc
! 18009e88edd8ec73ae45022344946172  libstdc++-v3/testsuite/abi/demangle/abi_examples/06.cc
! 740b80a61de0c6fe3155a8eed6679958  libstdc++-v3/testsuite/abi/demangle/abi_examples/07.cc
! 34ed748531c2e57da24a0d0a5629c18c  libstdc++-v3/testsuite/abi/demangle/abi_examples/08.cc
! bedac25ee047e832aadfcf1dbf87aa87  libstdc++-v3/testsuite/abi/demangle/abi_examples/09.cc
! d2a4d9b78181440e8c158512657d55c0  libstdc++-v3/testsuite/abi/demangle/abi_examples/10.cc
! e094101fba8c52298316b47128e06365  libstdc++-v3/testsuite/abi/demangle/abi_examples/11.cc
! 70f722c16f26c206c6228782b993479b  libstdc++-v3/testsuite/abi/demangle/abi_examples/12.cc
! c790d81aba65101e59a98fd2dafd1193  libstdc++-v3/testsuite/abi/demangle/abi_examples/13.cc
! d72373f26b0a3740c5b7a0b51684d3d1  libstdc++-v3/testsuite/abi/demangle/abi_examples/14.cc
! b7631ba3b046c4b896a1bf0a0db5c9cd  libstdc++-v3/testsuite/abi/demangle/abi_examples/15.cc
! f18f057bbdce0aa088a68c05a391904a  libstdc++-v3/testsuite/abi/demangle/abi_examples/16.cc
! 9d5eaa3f762250f39a69a5538efb050c  libstdc++-v3/testsuite/abi/demangle/abi_examples/17.cc
! edff8c9390ee9eda6f1b80c8f8df7186  libstdc++-v3/testsuite/abi/demangle/abi_examples/18.cc
! 9fa72d31fc5554becb531fdeaace6852  libstdc++-v3/testsuite/abi/demangle/abi_examples/19.cc
! c6408333f5e22c52fe75dc514e96c7e2  libstdc++-v3/testsuite/abi/demangle/abi_examples/20.cc
! b73d8bca403368480f07f102159247fd  libstdc++-v3/testsuite/abi/demangle/abi_examples/21.cc
! b73d8bca403368480f07f102159247fd  libstdc++-v3/testsuite/abi/demangle/abi_examples/22.cc
! 790226b6652c899b1cf8aefa6a5765ec  libstdc++-v3/testsuite/abi/demangle/abi_examples/23.cc
! 68e228ef21a75360278a67160f5c60b2  libstdc++-v3/testsuite/abi/demangle/abi_examples/24.cc
! 86f00fa07615d7a17db212f9bd33e60a  libstdc++-v3/testsuite/abi/demangle/abi_examples/25.cc
! fa3f31cefe152953c72ef498b5b0e488  libstdc++-v3/testsuite/abi/demangle/abi_examples/26.cc
! 68d3b92e2d32cab4826f73549e2b3612  libstdc++-v3/testsuite/abi/demangle/abi_text/01.cc
! 139179cda66fc7100716e68f0ebd3d84  libstdc++-v3/testsuite/abi/demangle/abi_text/02.cc
! 37d762e06826e09e590913f247b8ea75  libstdc++-v3/testsuite/abi/demangle/abi_text/03.cc
! 87e4ba6939f2b031cea33ad68d8efadd  libstdc++-v3/testsuite/abi/demangle/abi_text/04.cc
! 6511fb309d1a401c139808da74ff4ca7  libstdc++-v3/testsuite/abi/demangle/abi_text/05.cc
! 86c57d597ab1a07e82552e623da82823  libstdc++-v3/testsuite/abi/demangle/abi_text/06.cc
! cfb7ccfac93c485fac5321d84143cbe5  libstdc++-v3/testsuite/abi/demangle/abi_text/07.cc
! c073b072ca6b3ffa4ab762af972a147e  libstdc++-v3/testsuite/abi/demangle/abi_text/08.cc
! b51a90e82676e9500fbfeaeddd69512a  libstdc++-v3/testsuite/abi/demangle/abi_text/09.cc
! 3e6d7248d7e02da286891358b985bd81  libstdc++-v3/testsuite/abi/demangle/abi_text/10.cc
! fde06499e7792b811e9d65119fba02bb  libstdc++-v3/testsuite/abi/demangle/abi_text/11.cc
! a3c890fa33619a90478c3c986802d0d9  libstdc++-v3/testsuite/abi/demangle/abi_text/12.cc
! 0c87e832f887614feb048aec8cdd46bd  libstdc++-v3/testsuite/abi/demangle/abi_text/13.cc
! dd121f2d3e4247b463d5071906481d06  libstdc++-v3/testsuite/abi/demangle/abi_text/14.cc
! f125e12e6812320ff90351859b019e4a  libstdc++-v3/testsuite/abi/demangle/cxx0x/rref.cc
! 3bccb75dfaad86e62731448fd80ddd28  libstdc++-v3/testsuite/abi/demangle/regression/3111-1.cc
! b9dde3e655c039b76feee032d78ac74b  libstdc++-v3/testsuite/abi/demangle/regression/3111-2.cc
! 36fe1cf80ddaa739c3b0c37e5d42aa10  libstdc++-v3/testsuite/abi/demangle/regression/7986-01.cc
! 8a33bb7b2568a3fc7cf639961c238bd5  libstdc++-v3/testsuite/abi/demangle/regression/7986-02.cc
! c422740ba4f239f18c737b65b6590359  libstdc++-v3/testsuite/abi/demangle/regression/7986-03.cc
! 483266499c241230504ff5687bab749a  libstdc++-v3/testsuite/abi/demangle/regression/7986-04.cc
! 1dd62468530b653afc0a658ce350f112  libstdc++-v3/testsuite/abi/demangle/regression/7986-05.cc
! 26b6bb97594bc52b7ff377c1f76623cf  libstdc++-v3/testsuite/abi/demangle/regression/7986-06.cc
! db6022dbdf6ca060a7cd6ee9347514c1  libstdc++-v3/testsuite/abi/demangle/regression/7986-07.cc
! 0f63cb6ac686b321b5f0ba07b7b97e47  libstdc++-v3/testsuite/abi/demangle/regression/7986-08.cc
! 4bd99193e8761975b9196ca6ddf8ce90  libstdc++-v3/testsuite/abi/demangle/regression/7986-09.cc
! 7b08c3c36c06cd0baf961cdc51315a86  libstdc++-v3/testsuite/abi/demangle/regression/7986-10.cc
! a674a5ec3dcce1f388c6d0a755e6f3e0  libstdc++-v3/testsuite/abi/demangle/regression/7986-11.cc
! f0309ce437bfb07899a2969e99ba9515  libstdc++-v3/testsuite/abi/demangle/regression/7986-12.cc
! c94045258195c732dbba5fda9835a614  libstdc++-v3/testsuite/abi/demangle/regression/7986.cc
! 95ea0d1320c6d9fe4a56e45201de607a  libstdc++-v3/testsuite/abi/demangle/regression/8897.cc
! fb045121c82107d9cd911fc96294926d  libstdc++-v3/testsuite/abi/demangle/regression/cw-01.cc
! ebea4669552f09fc28a28b00aa2c19c9  libstdc++-v3/testsuite/abi/demangle/regression/cw-02.cc
! 320612370d55959be1087a1086d80861  libstdc++-v3/testsuite/abi/demangle/regression/cw-03.cc
! 0ded2a72b7b7c4c70b509e15035616a8  libstdc++-v3/testsuite/abi/demangle/regression/cw-04.cc
! 3ed9a674ad116276149708d5c7b0f6c8  libstdc++-v3/testsuite/abi/demangle/regression/cw-05.cc
! 584225f0738b3f36b7bc92794ed8eb6b  libstdc++-v3/testsuite/abi/demangle/regression/cw-06.cc
! f3c20d5d3ea5a3f791b88eef40b312f3  libstdc++-v3/testsuite/abi/demangle/regression/cw-07.cc
! 70a421fc46b876c27b03fd44aa46ee78  libstdc++-v3/testsuite/abi/demangle/regression/cw-08.cc
! d2b8aa9ddb3ace88c6d1233055f79bdf  libstdc++-v3/testsuite/abi/demangle/regression/cw-09.cc
! 49550ab9ab8dc20b0b759be135ac3e2c  libstdc++-v3/testsuite/abi/demangle/regression/cw-10.cc
! fd03cd933a3e236a188f4b0f115ddeaf  libstdc++-v3/testsuite/abi/demangle/regression/cw-11.cc
! db134ca8633866d099aa21a7751ae077  libstdc++-v3/testsuite/abi/demangle/regression/cw-12.cc
! 55d5befbe556e17d0372eeb2546eb2c3  libstdc++-v3/testsuite/abi/demangle/regression/cw-13.cc
! df207ba1a5bdeea8a59d9d691a32b1f4  libstdc++-v3/testsuite/abi/demangle/regression/cw-14.cc
! d612287063ac652810826233f44c4af6  libstdc++-v3/testsuite/abi/demangle/regression/cw-15.cc
! 3373d1571f91ff2d6c7fc5849fcb4069  libstdc++-v3/testsuite/abi/demangle/regression/cw-16.cc
! a33f1e79fc1e5d50a4c1ebff2ef95a5a  libstdc++-v3/testsuite/abi/demangle/regression/old.cc
! 8e3bd88daa98df43294a46edce9d5008  libstdc++-v3/testsuite/abi/header_cxxabi.c
! ab0a5ca4ddac86490afd9342d4868589  libstdc++-v3/testsuite/abi/pr42230.cc
! 98e6746b50dffa2e8b39d7e329cb47f8  libstdc++-v3/testsuite/backward/11460.cc
! 32cf7c6f75590a57e7bd4e90c774142e  libstdc++-v3/testsuite/backward/hash_map/1.cc
! 090e414a072def7af28ed523d8b50fa7  libstdc++-v3/testsuite/backward/hash_map/14648.cc
! 10fea91e34698635d1f9f0a2764e94bf  libstdc++-v3/testsuite/backward/hash_map/23528.cc
! 070dcf45aee0dbe6f96709cfd49894fd  libstdc++-v3/testsuite/backward/hash_map/25896.cc
! 420d02de8a24701b8e428bafa3f98e3d  libstdc++-v3/testsuite/backward/hash_map/requirements/explicit_instantiation.cc
! ff68ee068fd91f038ae33f500640732b  libstdc++-v3/testsuite/backward/hash_set/1.cc
! bae769bdac1d1e9110d797e5f3201e12  libstdc++-v3/testsuite/backward/hash_set/25896.cc
  2c091597008357e678007f407f299a24  libstdc++-v3/testsuite/backward/hash_set/49060.cc
! 290ff7af5fc57cdefbbfd5abc9d9fa34  libstdc++-v3/testsuite/backward/hash_set/check_construct_destroy.cc
! 4502a16cfc2bd4d288338ff142143c18  libstdc++-v3/testsuite/backward/hash_set/requirements/explicit_instantiation.cc
! de2f449bd6468487a937597f54e606af  libstdc++-v3/testsuite/backward/strstream_members.cc
! da2acd7ffd652cd55df72245027b4287  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
*** 73454,75035 ****
  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
! 1e39770e18723c06b4977fb7da897acb  libstdc++-v3/testsuite/decimal/binary-arith.cc
! a1980dc33ee667c53482584819728360  libstdc++-v3/testsuite/decimal/cast_neg.cc
! 8ed5bb7dfe5cc5edd6320a6ad70d1778  libstdc++-v3/testsuite/decimal/comparison.cc
! 5f47ffbe28ac656d1839caa67f5504d4  libstdc++-v3/testsuite/decimal/compound-assignment-memfunc.cc
! 48d625cf8d5cfceaec3cb5751d134ff7  libstdc++-v3/testsuite/decimal/compound-assignment.cc
! 08485fe6eecfe2db21daced7d585992a  libstdc++-v3/testsuite/decimal/conversion-from-float.cc
! f208fa0bd82b5e17b343efc1892a6a99  libstdc++-v3/testsuite/decimal/conversion-from-integral.cc
! f701f96976ef93d51d190ca03a74c837  libstdc++-v3/testsuite/decimal/conversion-to-generic-float.cc
! 7bfc708f02b9b0605f28df44f686f0c3  libstdc++-v3/testsuite/decimal/conversion-to-integral.cc
! 5b6678e9f04069ec2728a586f9bffa82  libstdc++-v3/testsuite/decimal/ctor.cc
! f8e430fa9225b8d20b921445fe27ae97  libstdc++-v3/testsuite/decimal/incdec-memfunc.cc
! 430964f0595968662e711b82daca3859  libstdc++-v3/testsuite/decimal/incdec.cc
! e52e2bd0b0d3a6a18b13dd476916f4cb  libstdc++-v3/testsuite/decimal/make-decimal.cc
! fe90440fb577606bd4c9c43c3c0d343f  libstdc++-v3/testsuite/decimal/mixed-mode-arith_neg.cc
! 901d9420bcd438a5edf4bf70efa0daac  libstdc++-v3/testsuite/decimal/mixed-mode-cmp_neg.cc
! 069305e9e3f742a76702f8ea90eb567d  libstdc++-v3/testsuite/decimal/operator_neg.cc
! a38fe017410cab7adad9549e3a2a0f5d  libstdc++-v3/testsuite/decimal/pr54036-1.cc
! 75f7ff42b380dccd4a309bd1f435722f  libstdc++-v3/testsuite/decimal/pr54036-2.cc
! c0b61320875226ad2af819d37f6112a1  libstdc++-v3/testsuite/decimal/pr54036-3.cc
! f9ece8e8f560deeeb9347130ab3b92d6  libstdc++-v3/testsuite/decimal/pr58815.cc
! c4f830973eecfbc8462148f15e82a04d  libstdc++-v3/testsuite/decimal/unary-arith.cc
! b44fdef923db81f67283b42712c6e64e  libstdc++-v3/testsuite/experimental/algorithm/sample.cc
! 3380d3399a8e2468fc81386b4fc967b4  libstdc++-v3/testsuite/experimental/algorithm/search.cc
! 47791323c66a3280a13483af9d75afab  libstdc++-v3/testsuite/experimental/any/assign/1.cc
! 9c48e19fe69a23a4fb4f9fa568be5571  libstdc++-v3/testsuite/experimental/any/assign/2.cc
! b285a008087dad1ca017ab57f169db49  libstdc++-v3/testsuite/experimental/any/assign/exception.cc
! 38768fdd5cc9233f2e2ab317392d922b  libstdc++-v3/testsuite/experimental/any/assign/self.cc
! aebeef13fe0ded6e91305cc09ad8d48a  libstdc++-v3/testsuite/experimental/any/cons/1.cc
! 7285e8a7d97e92f5251d32b46c4b5762  libstdc++-v3/testsuite/experimental/any/cons/2.cc
! 25b556ebfd34357f964ab02de11f8fc3  libstdc++-v3/testsuite/experimental/any/cons/aligned.cc
! bc2267c79c7db5cae0d9450e338e714a  libstdc++-v3/testsuite/experimental/any/cons/nontrivial.cc
! f07604fccc570f95ea130f8889734d92  libstdc++-v3/testsuite/experimental/any/misc/any_cast.cc
! 047fe6582fc2c51ca61ac4ce781c0d54  libstdc++-v3/testsuite/experimental/any/misc/any_cast_neg.cc
! 7581ece498e2323f89f69a9ebf7b7b6b  libstdc++-v3/testsuite/experimental/any/misc/any_cast_no_rtti.cc
! fb7d818e3689f68fbc8be4dbd38e3b25  libstdc++-v3/testsuite/experimental/any/misc/swap.cc
! e5cac4e9683d2796e2423d7c962c52d0  libstdc++-v3/testsuite/experimental/any/modifiers/1.cc
! 17a5fe7b0e6bd1e48f28e8343a8e0873  libstdc++-v3/testsuite/experimental/any/observers/type.cc
! 878d9b4d82fffb8127b5ba52bd8c0eaf  libstdc++-v3/testsuite/experimental/any/typedefs.cc
! 9fb3c90fb0538227094ef617e4537121  libstdc++-v3/testsuite/experimental/array/make_array.cc
! 0556aa2e76d74a6835a676a3491151f5  libstdc++-v3/testsuite/experimental/array/neg.cc
! 41ebba83e0788f156aa9b1fa6415393d  libstdc++-v3/testsuite/experimental/chrono/value.cc
! c5f9129674182bd3a977a3061e17c5c5  libstdc++-v3/testsuite/experimental/deque/erasure.cc
  02455db47de7f16c8e2d1f2af4839fc7  libstdc++-v3/testsuite/experimental/feat-cxx14.cc
  7a4bd66bca69264e75c26ab457f71332  libstdc++-v3/testsuite/experimental/feat-lib-fund.cc
! 5c4bede25ef34c13c54460df7699d418  libstdc++-v3/testsuite/experimental/filesystem/iterators/directory_iterator.cc
! 1072a3a58e3081a8f60218f090219cdb  libstdc++-v3/testsuite/experimental/filesystem/iterators/pop.cc
! b0f9242b96f1c2e044bf777e5fda8bc4  libstdc++-v3/testsuite/experimental/filesystem/iterators/recursive_directory_iterator.cc
! 2422a32ab8f4f55ba64bfc2713b4bb7d  libstdc++-v3/testsuite/experimental/filesystem/operations/absolute.cc
! 287ed7e886f224feba11a5038384a085  libstdc++-v3/testsuite/experimental/filesystem/operations/canonical.cc
! 6f4be9c57cc9e27b9b1fbc5b6d38f84b  libstdc++-v3/testsuite/experimental/filesystem/operations/copy.cc
! 857107ddd78b5be16aa089b0c0611000  libstdc++-v3/testsuite/experimental/filesystem/operations/copy_file.cc
! 3be6fae09b114812497ea5c8f2c84cf4  libstdc++-v3/testsuite/experimental/filesystem/operations/create_directories.cc
! 852a1f92da334d4c6640044df2d07f2e  libstdc++-v3/testsuite/experimental/filesystem/operations/create_directory.cc
! f5ae4d86564d90a68e6c0981528c63de  libstdc++-v3/testsuite/experimental/filesystem/operations/create_symlink.cc
! bae119ed43aff58da15e985b9e433254  libstdc++-v3/testsuite/experimental/filesystem/operations/current_path.cc
! e5368d29c38e946876e329f5bcf6ae20  libstdc++-v3/testsuite/experimental/filesystem/operations/equivalent.cc
! 19fc660143c3d0fbb2a49890fe377997  libstdc++-v3/testsuite/experimental/filesystem/operations/exists.cc
! 8c116eaf86a9ec47f157d622c4b09c14  libstdc++-v3/testsuite/experimental/filesystem/operations/file_size.cc
! 1580716e9960d6c1835fc8509ce2d79a  libstdc++-v3/testsuite/experimental/filesystem/operations/is_empty.cc
! 82e062165b2edfaba0d3727e0ec6573c  libstdc++-v3/testsuite/experimental/filesystem/operations/last_write_time.cc
! c8c3c10cfe4a4ec19105972449773ac5  libstdc++-v3/testsuite/experimental/filesystem/operations/permissions.cc
! 925d6f5727aa7e2b7176ac0362a32123  libstdc++-v3/testsuite/experimental/filesystem/operations/read_symlink.cc
! df350a2f65d9bbc779786eda2f6c877e  libstdc++-v3/testsuite/experimental/filesystem/operations/remove.cc
! 3840d9d54ad2b3fd864459e22e9dbcfe  libstdc++-v3/testsuite/experimental/filesystem/operations/remove_all.cc
! 670d520a087c857c6a69ed7c030610c6  libstdc++-v3/testsuite/experimental/filesystem/operations/status.cc
! 011b195de292dfdeabba072fd5d00062  libstdc++-v3/testsuite/experimental/filesystem/operations/temp_directory_path.cc
! 3aa154dac714027477a6a8e51b297eb9  libstdc++-v3/testsuite/experimental/filesystem/path/append/path.cc
! 319823a8d325ff7f2b4c7dd6c887cf74  libstdc++-v3/testsuite/experimental/filesystem/path/assign/assign.cc
! 8aa651f76c9bdc43fc1cf0915ab08702  libstdc++-v3/testsuite/experimental/filesystem/path/assign/copy.cc
! dbf3cdc68c163caf41d4b88c06948679  libstdc++-v3/testsuite/experimental/filesystem/path/compare/compare.cc
! d1d1d7ad18f3ef72922ea190a4564f64  libstdc++-v3/testsuite/experimental/filesystem/path/compare/path.cc
! 2040d682b44f8756e7a9210d46f6069b  libstdc++-v3/testsuite/experimental/filesystem/path/compare/strings.cc
! 80bafbf13f8c3f2b6c4ca7e88b732a50  libstdc++-v3/testsuite/experimental/filesystem/path/concat/path.cc
! df1aee485cfaa2a0d9c3979b4e5759df  libstdc++-v3/testsuite/experimental/filesystem/path/concat/strings.cc
! 6fbfa14708154012468c7335af563b41  libstdc++-v3/testsuite/experimental/filesystem/path/construct/copy.cc
! 41ad19ed6c563d982f835a7ca14274a1  libstdc++-v3/testsuite/experimental/filesystem/path/construct/default.cc
! fafe4b2c3a422ff8b58a9e1593c63ed5  libstdc++-v3/testsuite/experimental/filesystem/path/construct/locale.cc
! d0dba37ff69b572c486e09968cea20b0  libstdc++-v3/testsuite/experimental/filesystem/path/construct/range.cc
! 39267354b73257d34f33f425ffc05ed4  libstdc++-v3/testsuite/experimental/filesystem/path/construct/string_view.cc
! 16a6367f3188c3e39e410b13b1fa7199  libstdc++-v3/testsuite/experimental/filesystem/path/decompose/extension.cc
! 5bc209a8ba8310c876b8b31e3b29f4cf  libstdc++-v3/testsuite/experimental/filesystem/path/decompose/filename.cc
! b82e3a35095797e8ddbb7720cde343c8  libstdc++-v3/testsuite/experimental/filesystem/path/decompose/parent_path.cc
! b3073ec2ae4fd8100e70991afae69485  libstdc++-v3/testsuite/experimental/filesystem/path/decompose/relative_path.cc
! 8b243ba0b48bd500d8c0cca2ad92c64d  libstdc++-v3/testsuite/experimental/filesystem/path/decompose/root_directory.cc
! 5b2d09d7a82f3a12837e1133b3c0cd42  libstdc++-v3/testsuite/experimental/filesystem/path/decompose/root_name.cc
! 57f6431ae6b99ca7840959bf02cb0f02  libstdc++-v3/testsuite/experimental/filesystem/path/decompose/root_path.cc
! f0046ae27625d61b19d03a670e5d6c37  libstdc++-v3/testsuite/experimental/filesystem/path/decompose/stem.cc
! 1b311722d4eaf7ade0a19c5e8997d73f  libstdc++-v3/testsuite/experimental/filesystem/path/generic/generic_string.cc
! 0374a0b6318365d94f283b668f4253b1  libstdc++-v3/testsuite/experimental/filesystem/path/itr/traversal.cc
! db6279f5f9ba88143d6dbebba77f0db4  libstdc++-v3/testsuite/experimental/filesystem/path/modifiers/clear.cc
! 325b2f5f159cd3e7f09ef52211d3f3da  libstdc++-v3/testsuite/experimental/filesystem/path/modifiers/make_preferred.cc
! 8d47355f6271cad214122194166744cb  libstdc++-v3/testsuite/experimental/filesystem/path/modifiers/remove_filename.cc
! 16c47b86897852b3de65daf0cc3397e8  libstdc++-v3/testsuite/experimental/filesystem/path/modifiers/replace_extension.cc
! e6613e9a677c18f4f791e250e1a8cb48  libstdc++-v3/testsuite/experimental/filesystem/path/modifiers/replace_filename.cc
! 59ec4045d64189d0eabc5c121b7352f0  libstdc++-v3/testsuite/experimental/filesystem/path/modifiers/swap.cc
! 2a605e9f125b2375f03270efc75ed534  libstdc++-v3/testsuite/experimental/filesystem/path/native/string.cc
! 9f091748121cf4f52267c4f197216228  libstdc++-v3/testsuite/experimental/filesystem/path/nonmember/hash_value.cc
! 3de22b0bcb48da227a2b730a79a6d183  libstdc++-v3/testsuite/experimental/filesystem/path/query/empty.cc
! 876c0764b80db1c67ea4378752517715  libstdc++-v3/testsuite/experimental/filesystem/path/query/has_extension.cc
! 4de7af9fbe8f9a1c4eb14a992dc7f373  libstdc++-v3/testsuite/experimental/filesystem/path/query/has_filename.cc
! 10c286c8cbba077c23f6ec5073219a2e  libstdc++-v3/testsuite/experimental/filesystem/path/query/has_parent_path.cc
! 2309169b09855649c44da8fd82db2069  libstdc++-v3/testsuite/experimental/filesystem/path/query/has_relative_path.cc
! d0f1fe3673436c926d017920c9c49b09  libstdc++-v3/testsuite/experimental/filesystem/path/query/has_root_directory.cc
! 82ae0f14a1f9a06b86488efeb5519b7d  libstdc++-v3/testsuite/experimental/filesystem/path/query/has_root_name.cc
! 4118b81121374eef431724dbbaedbcdd  libstdc++-v3/testsuite/experimental/filesystem/path/query/has_root_path.cc
! 9923b1e1685e16519c8986a7b4a561b6  libstdc++-v3/testsuite/experimental/filesystem/path/query/has_stem.cc
! 61435a1a6a298cc8741f295b51b8e0b7  libstdc++-v3/testsuite/experimental/filesystem/path/query/is_relative.cc
! 87adc12cfc6e9a0ab5ef5025e90346e5  libstdc++-v3/testsuite/experimental/forward_list/erasure.cc
! 2a51b747763a52edad58e8ec51e39a7e  libstdc++-v3/testsuite/experimental/functional/not_fn.cc
! dc01b1a82902cc8ccd0aa80bfd15b65d  libstdc++-v3/testsuite/experimental/functional/searchers.cc
! 372f7a53ea0bc66429353e8bdcfee837  libstdc++-v3/testsuite/experimental/functional/value.cc
! 85897b9dffcd0018334bb4c065c5ed97  libstdc++-v3/testsuite/experimental/iterator/make_ostream_joiner.cc
! b69a62e0909aa798f230c66fd013b350  libstdc++-v3/testsuite/experimental/iterator/ostream_joiner.cc
! 0010193823cc82b4024b50bfade52914  libstdc++-v3/testsuite/experimental/iterator/requirements.cc
! b9f2c1987210d9f7b43d8bd6055444b3  libstdc++-v3/testsuite/experimental/list/erasure.cc
! df8861e1fbf6a7e692024a89bfeaa633  libstdc++-v3/testsuite/experimental/map/erasure.cc
! ae59f8448f0701456323ae06ad71cf27  libstdc++-v3/testsuite/experimental/memory/observer_ptr/assignment/assign.cc
! a4561d438d370172310e7381aed12939  libstdc++-v3/testsuite/experimental/memory/observer_ptr/cons/cons.cc
! 486988588001bb347bc2eb7191df30ce  libstdc++-v3/testsuite/experimental/memory/observer_ptr/hash/hash.cc
! 93e7ecc0e5b57f21e74749691daaa496  libstdc++-v3/testsuite/experimental/memory/observer_ptr/make_observer.cc
! bb90248daf8bc8b04520711b189bc46b  libstdc++-v3/testsuite/experimental/memory/observer_ptr/relops/relops.cc
! 0fccd7bf188189b2c4a08cb4af8bd2c6  libstdc++-v3/testsuite/experimental/memory/observer_ptr/requirements.cc
! 65f7efce80cf18ddfbc2a9776a1d7290  libstdc++-v3/testsuite/experimental/memory/observer_ptr/swap/swap.cc
! 985d3aba34ec5abf06cd32e910879cbe  libstdc++-v3/testsuite/experimental/memory/observer_ptr/typedefs.cc
! 533978b5d09dbf477e4fc5f1b67beee0  libstdc++-v3/testsuite/experimental/memory/shared_ptr/assign/assign.cc
! c35695fc4c55a7ec027f2df338d11634  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cast/cast.cc
! 7da8bf10f100d39e7be23aee7306b6c4  libstdc++-v3/testsuite/experimental/memory/shared_ptr/comparison/comparison.cc
! 63bacb495b8b970accd2d32d55f5735f  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/alias_ctor.cc
! 38ad8b28deef2d3fe74e16c54bcf79eb  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/alloc_ctor.cc
! 0b1f59230b82bb1a6636d5244ca91bd0  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/copy_ctor.cc
! 469486d7266162a0592b9e39126bf550  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/copy_ctor_neg.cc
! 71f57ab659d09f41a7f45e883833bd4a  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/default_ctor.cc
! c5a6c02b758d9102d26c81c1090ce949  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/enable_shared_from_this.cc
! 94d1060e774184adf9a46d69d9915e21  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/move_ctor.cc
! 66d1282e4d8c15dd2fe60b4d9b4f834f  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/pointer_ctor.cc
! a977f25d6ad18c9fe8f7a54acfdb54a1  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/pointer_ctor_neg.cc
! 1fae38188bea9c19c6f216bb858bf6b3  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/torture.cc
! 5fa79baa2871921aad0c377dd587c777  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/unique_ptr_ctor.cc
! 08dd64ab9ce757a057268cab3d5ed3b2  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/weak_ptr_ctor.cc
! 7823f5afa81d5ab05b0823ef742921ea  libstdc++-v3/testsuite/experimental/memory/shared_ptr/dest/dest.cc
! 8f5e8f9f41603437ca3f16987c7623d4  libstdc++-v3/testsuite/experimental/memory/shared_ptr/modifiers/reset.cc
! 970d84386473f73b4818e33ed789cffa  libstdc++-v3/testsuite/experimental/memory/shared_ptr/modifiers/reset_neg.cc
! c6119e5a821cfc6e2823bc4016ab4cbd  libstdc++-v3/testsuite/experimental/memory/shared_ptr/modifiers/swap.cc
! a7c01bd9f6c330a5b4ff65540b1aa5c5  libstdc++-v3/testsuite/experimental/memory/shared_ptr/observers/bool_conv.cc
! 17ee2fe9942e18cc9eddea447efb43a4  libstdc++-v3/testsuite/experimental/memory/shared_ptr/observers/operators.cc
! d29cd708aa7a3631c5609769981ea24c  libstdc++-v3/testsuite/experimental/memory/shared_ptr/observers/owner_before.cc
! 53a4b61c6182c56640c02815665becbc  libstdc++-v3/testsuite/experimental/memory/shared_ptr/observers/use_count.cc
! 945505c1daa3651f75aac3abb82836ee  libstdc++-v3/testsuite/experimental/memory_resource/1.cc
! 6411e7e2eb5d28ea505b455ec075c5db  libstdc++-v3/testsuite/experimental/memory_resource/null_memory_resource.cc
! 3d6e7f6395a9ea35eff04dc0a469940c  libstdc++-v3/testsuite/experimental/memory_resource/resource_adaptor.cc
! 6ffb7a2ced2a3c8b93406e76ab761edc  libstdc++-v3/testsuite/experimental/numeric/77801.cc
! b10dadd0aaf21af8fc2424241f710e00  libstdc++-v3/testsuite/experimental/numeric/gcd.cc
! af50993803ab949c47cea2c641c55919  libstdc++-v3/testsuite/experimental/numeric/lcm.cc
! 6470e3be9082b6be58dff86a83189cf7  libstdc++-v3/testsuite/experimental/optional/77288.cc
! f762d62785e58b8a7f6b21333276df29  libstdc++-v3/testsuite/experimental/optional/assignment/1.cc
! cb40e66a5fcd2c89fd6309bf92b5a1ba  libstdc++-v3/testsuite/experimental/optional/assignment/2.cc
! 03dd0f0cba17946f4c6373ef095ec360  libstdc++-v3/testsuite/experimental/optional/assignment/3.cc
! 75aa2ef3793b138c29a5fef45968c83e  libstdc++-v3/testsuite/experimental/optional/assignment/4.cc
! ee9baa05227ad54c4f0f92be88f4d2a0  libstdc++-v3/testsuite/experimental/optional/assignment/5.cc
! c9985bcc5256b9102b1c9dc378353c84  libstdc++-v3/testsuite/experimental/optional/assignment/6.cc
! e1977ecadc1e7850b3524118e2276480  libstdc++-v3/testsuite/experimental/optional/cons/77727.cc
! a7a80aa9e2e800275b9b80bd843f03fb  libstdc++-v3/testsuite/experimental/optional/cons/copy.cc
! 6b546a1d4048e9d1d9c7713d2e2470e2  libstdc++-v3/testsuite/experimental/optional/cons/default.cc
! 17707a63199589cbfcd462d7e06cb764  libstdc++-v3/testsuite/experimental/optional/cons/move.cc
! 638656b6ce09de8f393339e84def0f3d  libstdc++-v3/testsuite/experimental/optional/cons/value.cc
! 00d5b96c237c171a9f75442a01305255  libstdc++-v3/testsuite/experimental/optional/cons/value_neg.cc
! 8b1986dec9f95d5bc64212e5ba821388  libstdc++-v3/testsuite/experimental/optional/constexpr/cons/default.cc
! 02615409414a5e50e0c0195d76ac68c8  libstdc++-v3/testsuite/experimental/optional/constexpr/cons/value.cc
! dca703ab728e0bab1aa5b59da4897be7  libstdc++-v3/testsuite/experimental/optional/constexpr/in_place.cc
! c1b9767b80bcd351010c74df33ed8933  libstdc++-v3/testsuite/experimental/optional/constexpr/make_optional.cc
! 1b8ace41452d61226ce4af4c90287690  libstdc++-v3/testsuite/experimental/optional/constexpr/nullopt.cc
! b4049c8507ec20f5d2dac76265e86244  libstdc++-v3/testsuite/experimental/optional/constexpr/observers/1.cc
! 4e7ff0bb8048e3d15adfc3be2aa1f90c  libstdc++-v3/testsuite/experimental/optional/constexpr/observers/2.cc
! 277e4af3cb5fd57b847099a651401b41  libstdc++-v3/testsuite/experimental/optional/constexpr/observers/3.cc
! 57ac7ec322f49be8265cec856396e72b  libstdc++-v3/testsuite/experimental/optional/constexpr/observers/4.cc
! e0e236ed1f4b4586e6e24c3cb1e018a7  libstdc++-v3/testsuite/experimental/optional/constexpr/observers/5.cc
! ed58e6d65a197c0f2cca11b030fc4d6f  libstdc++-v3/testsuite/experimental/optional/constexpr/relops/1.cc
! 36e28ba0aa14d78fb5e0d84f77b57c60  libstdc++-v3/testsuite/experimental/optional/constexpr/relops/2.cc
! 817780a130aa76c73fce7c76a2a15324  libstdc++-v3/testsuite/experimental/optional/constexpr/relops/3.cc
! da1b990e0e2d4d5487bfc08223fce71d  libstdc++-v3/testsuite/experimental/optional/constexpr/relops/4.cc
! 5b148fc8ca3a4f98af81cc65cfb7f45e  libstdc++-v3/testsuite/experimental/optional/constexpr/relops/5.cc
! d96d3e8c3b0651c600498dd5a56f5fbd  libstdc++-v3/testsuite/experimental/optional/constexpr/relops/6.cc
! 57ca2af729d19d879820b8976ef9b497  libstdc++-v3/testsuite/experimental/optional/in_place.cc
! 33fd1ef08525f5e84a4a8a54878d3c3d  libstdc++-v3/testsuite/experimental/optional/make_optional.cc
! 263188ddb8dbe2f7d7d6d3337e99776e  libstdc++-v3/testsuite/experimental/optional/nullopt.cc
! 265ccf40cce1587a9f50b92b33ed9217  libstdc++-v3/testsuite/experimental/optional/observers/1.cc
! 98131e642161ecfb6f91bf6cf5d67a39  libstdc++-v3/testsuite/experimental/optional/observers/2.cc
! 999e20d3d6a9704db03f660948f72091  libstdc++-v3/testsuite/experimental/optional/observers/3.cc
! aeb4feeba3e64fd3f977353fa3ce7731  libstdc++-v3/testsuite/experimental/optional/observers/4.cc
! 5c7f887a830d1eace1c2f25bae63806f  libstdc++-v3/testsuite/experimental/optional/observers/5.cc
! 1163cb3a8afee5e3683535ad058b1998  libstdc++-v3/testsuite/experimental/optional/relops/1.cc
! b598a208e4d9315383251333a6a08d41  libstdc++-v3/testsuite/experimental/optional/relops/2.cc
! befb52b018918ebdd7dfc283e1f3fc94  libstdc++-v3/testsuite/experimental/optional/relops/3.cc
! d405aaaae8356b7c99e2d7cd4d023235  libstdc++-v3/testsuite/experimental/optional/relops/4.cc
! f264dc05717a448433f2f422bbf8082d  libstdc++-v3/testsuite/experimental/optional/relops/5.cc
! 7b2f9adfb1cdc441830f46bc8a12e96c  libstdc++-v3/testsuite/experimental/optional/relops/6.cc
! 5c9abcb00677efecf8a1d9cc8092b422  libstdc++-v3/testsuite/experimental/optional/requirements.cc
! f2e7784ab7e64f88e437fb6a087eca91  libstdc++-v3/testsuite/experimental/optional/swap/1.cc
! 4a98bf23ea84c7db808c446d826d1c0d  libstdc++-v3/testsuite/experimental/optional/typedefs.cc
! 4670441a07cd9c1e989ba6235cccc865  libstdc++-v3/testsuite/experimental/propagate_const/assignment/copy.cc
! a85c25426715cb0baac8111289b5dfda  libstdc++-v3/testsuite/experimental/propagate_const/assignment/move.cc
! 3aa7b8e7b29c6a16f35fcacda21087f3  libstdc++-v3/testsuite/experimental/propagate_const/assignment/move_neg.cc
! 9c52605006fa3242b5388f8cfba52ad3  libstdc++-v3/testsuite/experimental/propagate_const/cons/copy.cc
! ba896e131c9d8a7942d6e69b6f3d055e  libstdc++-v3/testsuite/experimental/propagate_const/cons/default.cc
! 17e3f72354c56e95ffe3803557b596a6  libstdc++-v3/testsuite/experimental/propagate_const/cons/move.cc
! 8c29bb492643d546ce72e3e616b6b46a  libstdc++-v3/testsuite/experimental/propagate_const/cons/move_neg.cc
! 9b12f06ec98483246f718d88e75c23e1  libstdc++-v3/testsuite/experimental/propagate_const/hash/1.cc
! fac3e7e4a96239f36935547ad7b717ef  libstdc++-v3/testsuite/experimental/propagate_const/observers/1.cc
! cdc2f6c8a0ad816a58a9fa5c12a6762e  libstdc++-v3/testsuite/experimental/propagate_const/relops/1.cc
! c7b0d997537d574f0b8ce96ac59f6e32  libstdc++-v3/testsuite/experimental/propagate_const/requirements1.cc
! 9c35d605021058ba45e9b415743194f8  libstdc++-v3/testsuite/experimental/propagate_const/requirements2.cc
! a260d11193efb01b645381becab951da  libstdc++-v3/testsuite/experimental/propagate_const/requirements3.cc
! 45bdd743e851ebd98f33dffbfd6a803a  libstdc++-v3/testsuite/experimental/propagate_const/requirements4.cc
! d53b74f70145293cc113bd8fa0ea1282  libstdc++-v3/testsuite/experimental/propagate_const/requirements5.cc
! 011b913dccbaea519feca7a6f33bd51c  libstdc++-v3/testsuite/experimental/propagate_const/swap/1.cc
! e690022b354c37e2f122939b9575a0ba  libstdc++-v3/testsuite/experimental/propagate_const/typedefs.cc
! 01acf130ad1e40287bd337fd77389589  libstdc++-v3/testsuite/experimental/random/randint.cc
! 3a761cf8e8fb83123d61edf65091c15c  libstdc++-v3/testsuite/experimental/ratio/value.cc
! b590a2a4c56fe9189f6505aeb0897abd  libstdc++-v3/testsuite/experimental/set/erasure.cc
! cbf14cd256250c7a8a5ed1d62181c408  libstdc++-v3/testsuite/experimental/source_location/1.cc
! 6d482ca6034cbfe5232ac0438083da4b  libstdc++-v3/testsuite/experimental/string/erasure.cc
! 3e13ca99b9df1bf88e758fb7d716abfa  libstdc++-v3/testsuite/experimental/string_view/capacity/1.cc
! 3048fd5b8608f05f7333dfadf3b9ed92  libstdc++-v3/testsuite/experimental/string_view/cons/char/1.cc
! 47412432cba0ef37d81fc9f8a905be7c  libstdc++-v3/testsuite/experimental/string_view/cons/char/2.cc
! d76c4771bccf0b2a967756719a2abdef  libstdc++-v3/testsuite/experimental/string_view/cons/char/3.cc
! 29f49340f9fdebc73bbed297c3b453b1  libstdc++-v3/testsuite/experimental/string_view/cons/wchar_t/1.cc
! a8645a77dab9287e4d4c1f6f2184e271  libstdc++-v3/testsuite/experimental/string_view/cons/wchar_t/2.cc
! e4e81489153bab78ef721c6929e7d516  libstdc++-v3/testsuite/experimental/string_view/cons/wchar_t/3.cc
! f0bd97b6199000a635f073720024719f  libstdc++-v3/testsuite/experimental/string_view/element_access/char/1.cc
! 53eb10e0782db2f6b142fff252c43a9f  libstdc++-v3/testsuite/experimental/string_view/element_access/char/2.cc
  c06d1339c147e7ac0a26df2387064dec  libstdc++-v3/testsuite/experimental/string_view/element_access/char/empty.cc
! 9fa3ed66327c71469a94fca924153fc6  libstdc++-v3/testsuite/experimental/string_view/element_access/char/front_back.cc
! 4ca1bb5d0ccbec381b679ab1b4809613  libstdc++-v3/testsuite/experimental/string_view/element_access/wchar_t/1.cc
! 140ffc18729799f78f1485991c88c1b7  libstdc++-v3/testsuite/experimental/string_view/element_access/wchar_t/2.cc
! d9f87eef6d4814d97e83b4ee6ed45f6a  libstdc++-v3/testsuite/experimental/string_view/element_access/wchar_t/empty.cc
! f0b34fa63c764a2a15546d84e48e9710  libstdc++-v3/testsuite/experimental/string_view/element_access/wchar_t/front_back.cc
! 81bba15cc8d613e000444283402dccd9  libstdc++-v3/testsuite/experimental/string_view/include.cc
! a3e91aa7ade533df9de73cbae42faa7f  libstdc++-v3/testsuite/experimental/string_view/inserters/char/1.cc
! 1a369b7755bdff4b9524f52148b54e25  libstdc++-v3/testsuite/experimental/string_view/inserters/char/2.cc
! 0e4fea872f05c75c2b90803a58453884  libstdc++-v3/testsuite/experimental/string_view/inserters/char/3.cc
! f12a31fae84a1f82b10cd6dc67cc9665  libstdc++-v3/testsuite/experimental/string_view/inserters/pod/10081-out.cc
! b78f6f19bcf58686ea3de8339b797794  libstdc++-v3/testsuite/experimental/string_view/inserters/wchar_t/1.cc
! e1cfaa191b0cba0d72f17549fcca81c7  libstdc++-v3/testsuite/experimental/string_view/inserters/wchar_t/2.cc
! 96f48e9c826b3db1cddd6757559be9f6  libstdc++-v3/testsuite/experimental/string_view/inserters/wchar_t/3.cc
! a13eb20baebc26fd0ab6516f6f462de6  libstdc++-v3/testsuite/experimental/string_view/literals/types.cc
! 4538c530c870896550d19b3a2226dd69  libstdc++-v3/testsuite/experimental/string_view/literals/values.cc
! a25f5e6d7e7df25101ba8650c6b9e95c  libstdc++-v3/testsuite/experimental/string_view/modifiers/remove_prefix/char/1.cc
! 3faa671b34458d01d3e6439d2551cd26  libstdc++-v3/testsuite/experimental/string_view/modifiers/remove_prefix/wchar_t/1.cc
! 8702aae3a65ac2f6228f43430c73a7dd  libstdc++-v3/testsuite/experimental/string_view/modifiers/remove_suffix/char/1.cc
! 0e70002b9f7c8702313f19fe235a8268  libstdc++-v3/testsuite/experimental/string_view/modifiers/remove_suffix/wchar_t/1.cc
! 4a5548c386de9a79cf74d3de2fa0858d  libstdc++-v3/testsuite/experimental/string_view/operations/compare/char/1.cc
! c876db0e1c772c31c78daaface50bc26  libstdc++-v3/testsuite/experimental/string_view/operations/compare/char/13650.cc
! d9a9105639faaad1b5d098de16c15ecb  libstdc++-v3/testsuite/experimental/string_view/operations/compare/char/70483.cc
! 66e7b8bef07b155542920b750c65de59  libstdc++-v3/testsuite/experimental/string_view/operations/compare/wchar_t/1.cc
! 8753b7512b2b6b78c2d7839ff7aa04b8  libstdc++-v3/testsuite/experimental/string_view/operations/compare/wchar_t/13650.cc
! 9a342f8a2ba46a0ca4a924ae2ae0611d  libstdc++-v3/testsuite/experimental/string_view/operations/copy/char/1.cc
! 3291401e0c41af1b42fb9f46978df2bf  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
! 9d789032ea4154a3a659b613dfb0c990  libstdc++-v3/testsuite/experimental/string_view/operations/find/char/1.cc
! 4030031bd6e7462c19fd4c34c8f5eb0d  libstdc++-v3/testsuite/experimental/string_view/operations/find/char/2.cc
! d00e317e29f51f9521904d74a35644f8  libstdc++-v3/testsuite/experimental/string_view/operations/find/char/3.cc
! 20b73bb400a6abc02ecb77b6132d494d  libstdc++-v3/testsuite/experimental/string_view/operations/find/char/4.cc
! 91a189f99f804c07e131537497da660e  libstdc++-v3/testsuite/experimental/string_view/operations/find/wchar_t/1.cc
! 3bb6682acbcf7b8d1c14d46bd5dbeff7  libstdc++-v3/testsuite/experimental/string_view/operations/find/wchar_t/2.cc
! e287dcb633679b8c83301d39a8d65aee  libstdc++-v3/testsuite/experimental/string_view/operations/find/wchar_t/3.cc
! 3b1a7385e75eaf00499f90341c40c1f9  libstdc++-v3/testsuite/experimental/string_view/operations/find/wchar_t/4.cc
! 7bd44bad8388c6c96b38ea174470452c  libstdc++-v3/testsuite/experimental/string_view/operations/rfind/char/1.cc
! 79f74528cbc8aa373445565a2d967f2a  libstdc++-v3/testsuite/experimental/string_view/operations/rfind/char/2.cc
! 94ff3f427fb8fe68f15db1e74ee541b7  libstdc++-v3/testsuite/experimental/string_view/operations/rfind/char/3.cc
! 4de19baeea9714be46bbdfdb95492dcc  libstdc++-v3/testsuite/experimental/string_view/operations/rfind/wchar_t/1.cc
! e69f75a6c258ba090be31a5cb95f192d  libstdc++-v3/testsuite/experimental/string_view/operations/rfind/wchar_t/2.cc
! 75aff06616cba9d15034239c21dc46ee  libstdc++-v3/testsuite/experimental/string_view/operations/rfind/wchar_t/3.cc
! 494a9f92bcef2fa0e999fe91940b3b42  libstdc++-v3/testsuite/experimental/string_view/operations/substr/char/1.cc
! 9148fe07f84fcf1c605c649cc811a25e  libstdc++-v3/testsuite/experimental/string_view/operations/substr/wchar_t/1.cc
! 1cd2b02b249f2a45cfb9d18b16758b0d  libstdc++-v3/testsuite/experimental/string_view/operations/to_string/1.cc
! c7181f0a7cb125b995680245310dba49  libstdc++-v3/testsuite/experimental/string_view/operators/char/2.cc
! 07ab9712764c41fd8f9f399613be209b  libstdc++-v3/testsuite/experimental/string_view/operators/wchar_t/2.cc
! 3b4bd81b63e632524d5c29d5c8bb7279  libstdc++-v3/testsuite/experimental/string_view/range_access/char/1.cc
! 1adc76f86c649910220ce7728e55a965  libstdc++-v3/testsuite/experimental/string_view/range_access/wchar_t/1.cc
! 2078c5a4456d9734f727bf41f01bd4b1  libstdc++-v3/testsuite/experimental/string_view/requirements/explicit_instantiation/1.cc
! 2dd588e57d086caea6d05be45bf68b62  libstdc++-v3/testsuite/experimental/string_view/requirements/explicit_instantiation/char/1.cc
! 9e4fe206d9e70caf6858b42fbb446336  libstdc++-v3/testsuite/experimental/string_view/requirements/explicit_instantiation/char16_t/1.cc
! 6e7a49c184cc6de1fda6492b89348321  libstdc++-v3/testsuite/experimental/string_view/requirements/explicit_instantiation/char32_t/1.cc
! 085abe928217dbaac181092af271c2dc  libstdc++-v3/testsuite/experimental/string_view/requirements/explicit_instantiation/wchar_t/1.cc
! e133390fc4145b134a89ff2489a4e23d  libstdc++-v3/testsuite/experimental/string_view/requirements/typedefs.cc
! 365eec30820696f202e12295579bba86  libstdc++-v3/testsuite/experimental/string_view/typedefs.cc
! a41d409961effa579d052a2c39191fe3  libstdc++-v3/testsuite/experimental/string_view/types/1.cc
! 84b0b86c548ccfa641f8fbbd1894eb9b  libstdc++-v3/testsuite/experimental/system_error/value.cc
! ac9ce9c0a2bcc474689a7fec95fb32fb  libstdc++-v3/testsuite/experimental/tuple/apply.cc
! c02958a4a4a578898a9e4396874812a6  libstdc++-v3/testsuite/experimental/tuple/tuple_size.cc
! 359a32e6165767956ed6fc8fa773d612  libstdc++-v3/testsuite/experimental/type_erased_allocator/2.cc
! 72551271259f606dcab54e02edd9a04a  libstdc++-v3/testsuite/experimental/type_erased_allocator/uses_allocator.cc
! 35da79d344d563fe281b9ec8f4846c3e  libstdc++-v3/testsuite/experimental/type_traits/detection.cc
! 0276768111d6aa06fa9af000dcbfced9  libstdc++-v3/testsuite/experimental/type_traits/value.cc
! fdb0de2cf437f093835736f0072c428b  libstdc++-v3/testsuite/experimental/unordered_map/erasure.cc
! 41899e9c4bd735c06fe62df41767d24b  libstdc++-v3/testsuite/experimental/unordered_set/erasure.cc
! ff98f23a44876351354b6378b27e8f48  libstdc++-v3/testsuite/experimental/vector/erasure.cc
! 6710454e802a5075fb2f12efe5b0e03c  libstdc++-v3/testsuite/ext/array_allocator/1.cc
! 8d59813bb7efd324000567dad371c57b  libstdc++-v3/testsuite/ext/array_allocator/2.cc
! 45bbee1a0a23e6c229984f5eb63a41a5  libstdc++-v3/testsuite/ext/array_allocator/26875.cc
! 20a250ebc773b3a0f796353b27e0cff7  libstdc++-v3/testsuite/ext/array_allocator/3.cc
! 893b27bbb80431368a145c013f7492b9  libstdc++-v3/testsuite/ext/array_allocator/check_allocate_max_size.cc
! a81b2f729a56016a8ab22c53cc3c79b8  libstdc++-v3/testsuite/ext/array_allocator/check_deallocate_null.cc
! baeb2e09ee9a3c9674c10418f7e79240  libstdc++-v3/testsuite/ext/array_allocator/check_delete.cc
! 7d90068a6aad0009f2a6d2d881a6aab5  libstdc++-v3/testsuite/ext/array_allocator/check_new.cc
! a816cb6ffb4488fbac59d62534c015f4  libstdc++-v3/testsuite/ext/array_allocator/variadic_construct.cc
! e0b4e4e48f7b653ed1f71d01181bfb39  libstdc++-v3/testsuite/ext/bitmap_allocator/check_allocate_max_size.cc
! 05c0d35ebfec4c287c02f72548350d4f  libstdc++-v3/testsuite/ext/bitmap_allocator/check_deallocate_null.cc
! e2a21e51392b8253d729d7c343649f37  libstdc++-v3/testsuite/ext/bitmap_allocator/check_delete.cc
! bf21688c2dee915ba865632bec654afc  libstdc++-v3/testsuite/ext/bitmap_allocator/check_new.cc
! 005b4961aa3955f5aab7019a5009f1b8  libstdc++-v3/testsuite/ext/bitmap_allocator/overaligned.cc
! 97e50e05c11d89145cb972dcb9a0fa81  libstdc++-v3/testsuite/ext/bitmap_allocator/variadic_construct.cc
! 3130ebe3e1733ea798c2cae467e9daab  libstdc++-v3/testsuite/ext/codecvt/1.cc
! 707808dd3ef540019b3f958f2c6ea618  libstdc++-v3/testsuite/ext/codecvt/char-1.cc
! 6572f80ef8c5b0eb9dd2da876235f637  libstdc++-v3/testsuite/ext/codecvt/char-2.cc
! d468893259d022420447af3115fd6fd7  libstdc++-v3/testsuite/ext/codecvt/wchar_t.cc
! 3c77bc7daeb27b2afa9ebc5fc09a89c5  libstdc++-v3/testsuite/ext/concept_checks.cc
! 3cf64087d0a48cf69140dc7b9070e91c  libstdc++-v3/testsuite/ext/concurrence_lock_error/cons_virtual_derivation.cc
! d2af9a85d51a16728d41a1ca4db0caf3  libstdc++-v3/testsuite/ext/concurrence_unlock_error/cons_virtual_derivation.cc
! 777fbae7eba73bafd6a160b0d03236b3  libstdc++-v3/testsuite/ext/debug_allocator/56170.cc
! 73a12a6e2c765dfe59b973a3eacd6049  libstdc++-v3/testsuite/ext/debug_allocator/check_deallocate_null.cc
! 984f9507027aecdb993b73c6f6283454  libstdc++-v3/testsuite/ext/debug_allocator/check_delete.cc
! c86f25898c6e16cd4c2d52abe25cb304  libstdc++-v3/testsuite/ext/debug_allocator/check_new.cc
! 98b41952a68304b1d2cb2e01a0bb1e06  libstdc++-v3/testsuite/ext/debug_allocator/explicit_instantiation.cc
! 53bfbe76cb685fb52e9fb96a063091ea  libstdc++-v3/testsuite/ext/enc_filebuf/char/13189.cc
! d117bb2f62153d549219bd45906aff72  libstdc++-v3/testsuite/ext/enc_filebuf/char/13598.cc
! 7ebca8ce82e6b4861533d02053e10ccc  libstdc++-v3/testsuite/ext/enc_filebuf/wchar_t/13189.cc
! c33f550de3f7e0389f0a52d2e663b49d  libstdc++-v3/testsuite/ext/ext_pointer/1.cc
! 708f5699ca06dd0a5e5de61de679e9c3  libstdc++-v3/testsuite/ext/ext_pointer/1_neg.cc
! 17c2e916147ce6b58a59c4760f52ec1c  libstdc++-v3/testsuite/ext/forced_error/cons_virtual_derivation.cc
! 6d1e9281af044308c1946fd872c6a6ae  libstdc++-v3/testsuite/ext/headers.cc
! 13b7af23299fa6cbf403980f8a439450  libstdc++-v3/testsuite/ext/iota/cxx0x.cc
! 781386bf9287d6e6b13439f2d511d36a  libstdc++-v3/testsuite/ext/is_heap/1.cc
! 0dd50ef8f3d057fa08950b5b9b6a2e4d  libstdc++-v3/testsuite/ext/is_heap/47709.cc
! 16a1ef7f3d0820a0cae65f43d3161409  libstdc++-v3/testsuite/ext/is_heap/check_type.cc
! d3e747ee4626232510a9a6cbbe0ccb42  libstdc++-v3/testsuite/ext/is_sorted/cxx0x.cc
! 4a8629881ab3493dcb6a077ee3b6c154  libstdc++-v3/testsuite/ext/malloc_allocator/check_allocate_max_size.cc
! 0787dcb3b6294db42cd151330f0dd4c3  libstdc++-v3/testsuite/ext/malloc_allocator/check_deallocate_null.cc
! 8415eaacbf9e5eca235a140ca7c1d0ff  libstdc++-v3/testsuite/ext/malloc_allocator/check_delete.cc
! 1dcaa51a9ac576425b8ac5377a8917c2  libstdc++-v3/testsuite/ext/malloc_allocator/check_new.cc
! 1d177cb59626e7544c5f7a65812c7b38  libstdc++-v3/testsuite/ext/malloc_allocator/deallocate_global.cc
! 0204693ba2e978fc102c81645b50c418  libstdc++-v3/testsuite/ext/malloc_allocator/deallocate_local.cc
! 7a09189c08ef639dea811cb23b77b3e9  libstdc++-v3/testsuite/ext/malloc_allocator/explicit_instantiation.cc
! fe45959a7029d1197c11f29d1f68ad80  libstdc++-v3/testsuite/ext/malloc_allocator/overaligned.cc
! 5f0ef0dad5bc62c7034f3349731fbd5a  libstdc++-v3/testsuite/ext/malloc_allocator/sanity.cc
! 4961d1c4805c1e99e898eba2fd7e7a20  libstdc++-v3/testsuite/ext/malloc_allocator/variadic_construct.cc
! 6f167633f3d9d30dd03dd4fab69ab604  libstdc++-v3/testsuite/ext/median.cc
! ff84edacbdc251cd08bdd77f1df4629c  libstdc++-v3/testsuite/ext/mt_allocator/22309_thread.cc
! 6be32823cafa94f8108d14f252ba4c44  libstdc++-v3/testsuite/ext/mt_allocator/check_allocate_big_per_type.cc
! 8360a9b878dabf626267a377a9af170f  libstdc++-v3/testsuite/ext/mt_allocator/check_allocate_max_size.cc
! 2b577f5fe39de459f95e8d5aaa94eb93  libstdc++-v3/testsuite/ext/mt_allocator/check_deallocate_null.cc
! 6f334c2e6ed26ff99e5c28003c05e58e  libstdc++-v3/testsuite/ext/mt_allocator/check_deallocate_null_thread.cc
! 2b3abf63f6c33350d1343f98822b3ee6  libstdc++-v3/testsuite/ext/mt_allocator/check_delete.cc
! 36129c5d247ec18ce1b3522c831f8b34  libstdc++-v3/testsuite/ext/mt_allocator/check_new.cc
! 5cb8bd38ef65261cbeb380cca3f5c783  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_global-2.cc
! 2fccb95a9cca07e213d5348a54e497e7  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_global-4.cc
! d21d30c54ea5188de9a85e399f46caf4  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_global_thread-1.cc
! 878319cad4c8c0e07f4e2ea02764fa7f  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_global_thread-3.cc
! e48806f1849a61b8db794651df8de0d9  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local-2.cc
! 7f65407ad03c41a80c3ce945db5724e4  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local-4.cc
! d9ce42e70464c561c8ee0b45db3a4e6a  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local-6.cc
! 23fe4dda241f7ee50accce2d032c42e6  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local-8.cc
! ef280a247bf4c72f53d4460211ec3d83  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local_thread-1.cc
! a7387246650abf758925481d3753d62d  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local_thread-3.cc
! e02e4c3c75cabf9a431b9ac41f3c87bf  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local_thread-5.cc
! db20c419862b26cedba0ce83b3899736  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local_thread-7.cc
! 94d1c67ac80573ef1d02794ba3fca367  libstdc++-v3/testsuite/ext/mt_allocator/explicit_instantiation.cc
! d1bc8580c67e6ab2723afa7c750e1c6d  libstdc++-v3/testsuite/ext/mt_allocator/overaligned.cc
! 26952a470259911e453fdd124d4f26b3  libstdc++-v3/testsuite/ext/mt_allocator/tune-1.cc
! 8b1fc316a7c275d4277b488780c33e61  libstdc++-v3/testsuite/ext/mt_allocator/tune-2.cc
! 267333572e7b56703ad3f097557f6970  libstdc++-v3/testsuite/ext/mt_allocator/tune-3.cc
! 8819f88513af5cb940027b3e44d84d29  libstdc++-v3/testsuite/ext/mt_allocator/tune-4.cc
! 0f021d94903d07a8a1370e6c00377d19  libstdc++-v3/testsuite/ext/mt_allocator/variadic_construct.cc
! dc9834f96209b37ef7043dcbaeb7505f  libstdc++-v3/testsuite/ext/new_allocator/check_allocate_max_size.cc
! 541154f845a7584de57bf3ffb745a740  libstdc++-v3/testsuite/ext/new_allocator/check_deallocate_null.cc
! 174d39f52ba0b2f95938bb03c0605ed6  libstdc++-v3/testsuite/ext/new_allocator/check_delete.cc
! 80045b9981e9bcdd269e1de5dd211889  libstdc++-v3/testsuite/ext/new_allocator/check_new.cc
! dc2512e6853ec2db3daf1b9ed07817b1  libstdc++-v3/testsuite/ext/new_allocator/deallocate_global.cc
! c75ea9e66760903daabd37fa0ea333db  libstdc++-v3/testsuite/ext/new_allocator/deallocate_local.cc
! b7e3d66b614590618187a09bbc807d27  libstdc++-v3/testsuite/ext/new_allocator/instantiate.cc
! f66f613277743f0e268a243a68e0fdc2  libstdc++-v3/testsuite/ext/new_allocator/overaligned.cc
! 738ec9639677085a8aa1e6a5fd1e6783  libstdc++-v3/testsuite/ext/new_allocator/variadic_construct.cc
! ba234672a4fb3c6c497c7bfc811f1f93  libstdc++-v3/testsuite/ext/numeric_traits/numeric_traits.cc
! b00837bb99fb5bf3e6153d0d6aa882da  libstdc++-v3/testsuite/ext/pb_ds/example/assoc_container_traits.cc
! 3e0f0b99cd0525d2e807b38f33752c98  libstdc++-v3/testsuite/ext/pb_ds/example/basic_map.cc
! 79ac54078a7ada604538d288bd5b00f9  libstdc++-v3/testsuite/ext/pb_ds/example/basic_multimap.cc
! 6345aaf4cd166e288e059f8ef1b1b024  libstdc++-v3/testsuite/ext/pb_ds/example/basic_multiset.cc
! c1ea14993b67975e0a0f5b933e24d56d  libstdc++-v3/testsuite/ext/pb_ds/example/basic_priority_queue.cc
! ce7294d6caf9ef31a84e914b962ef91c  libstdc++-v3/testsuite/ext/pb_ds/example/basic_set.cc
! e4e0a19de1b5bd93516dbd7a0d7c3729  libstdc++-v3/testsuite/ext/pb_ds/example/erase_if.cc
! cc3176e3c0c60f4fd30689f5b3d50726  libstdc++-v3/testsuite/ext/pb_ds/example/hash_find_neg.cc
! 505bf2ba88bec4730523ae7c6af685b6  libstdc++-v3/testsuite/ext/pb_ds/example/hash_illegal_resize.cc
! 65cf6072b8bf142db46f6dd6ba2ec17e  libstdc++-v3/testsuite/ext/pb_ds/example/hash_initial_size.cc
! 7c3dcda4b1ae51029cef35397799bc04  libstdc++-v3/testsuite/ext/pb_ds/example/hash_load_set_change.cc
! 82747fc06813191a0184e2d49b917fa5  libstdc++-v3/testsuite/ext/pb_ds/example/hash_mod.cc
! 8edee794eba36073117af73347903db5  libstdc++-v3/testsuite/ext/pb_ds/example/hash_resize.cc
! f701a4e2f39b1c627a7f0b085238ab2f  libstdc++-v3/testsuite/ext/pb_ds/example/hash_resize_neg.cc
! d696ce9aa67589c26ba331325cd31da8  libstdc++-v3/testsuite/ext/pb_ds/example/hash_shift_mask.cc
! da4dc49895578c30918706632ff672f3  libstdc++-v3/testsuite/ext/pb_ds/example/priority_queue_container_traits.cc
! ce98f2f6cd94ba590161a0e093ac3b01  libstdc++-v3/testsuite/ext/pb_ds/example/priority_queue_dijkstra.cc
! efcb620cde9881f9ffe5d034b7835efa  libstdc++-v3/testsuite/ext/pb_ds/example/priority_queue_erase_if.cc
! 5ab1d5153c2d899bb636576136721046  libstdc++-v3/testsuite/ext/pb_ds/example/priority_queue_split_join.cc
! 30bc017b36b48ebdfdbc623da5dffa7e  libstdc++-v3/testsuite/ext/pb_ds/example/priority_queue_xref.cc
! fd5e33b578e1400045a855959237218b  libstdc++-v3/testsuite/ext/pb_ds/example/ranged_hash.cc
! a39d790c2bf4d8973990193e24cf82d2  libstdc++-v3/testsuite/ext/pb_ds/example/store_hash.cc
! fa49712c4b1863f8ce083c8fb6525aca  libstdc++-v3/testsuite/ext/pb_ds/example/tree_intervals.cc
! 4d07c80f4d89baec9956c1e9bb0e08ed  libstdc++-v3/testsuite/ext/pb_ds/example/tree_join.cc
! 0d76d8039ca5db54542ee88d17a5ac6f  libstdc++-v3/testsuite/ext/pb_ds/example/tree_order_statistics.cc
! e368407f1287e666232afdb4f389c543  libstdc++-v3/testsuite/ext/pb_ds/example/tree_order_statistics_join.cc
! a470fff25f1c8320697e3824506a7469  libstdc++-v3/testsuite/ext/pb_ds/example/trie_dna.cc
! 0f56502e7b4ef6dfd93c28323bf36343  libstdc++-v3/testsuite/ext/pb_ds/example/trie_prefix_search.cc
! ab805ad8f592a92351c0d9629bb3be78  libstdc++-v3/testsuite/ext/pb_ds/example/trie_split.cc
! f5045cf42a56d4ea6c708d5f50511ce2  libstdc++-v3/testsuite/ext/pb_ds/regression/associative_containers.cc
! 1e3185946387fcc5f09a885ecf6a8bd4  libstdc++-v3/testsuite/ext/pb_ds/regression/hash_map_rand.cc
! 0adc3c07475b846cb6a6bb7d867c559e  libstdc++-v3/testsuite/ext/pb_ds/regression/hash_map_rand_debug.cc
! 2c14e81300a6afe5ae43ef25528511a6  libstdc++-v3/testsuite/ext/pb_ds/regression/hash_set_rand.cc
! 85c08ee7028b45a770754688d4765a86  libstdc++-v3/testsuite/ext/pb_ds/regression/hash_set_rand_debug.cc
! 8b51d08321eccd73029fe4fa5e275552  libstdc++-v3/testsuite/ext/pb_ds/regression/list_update_map_rand.cc
! 4521391f5f9899f1e73a5afa175a235c  libstdc++-v3/testsuite/ext/pb_ds/regression/list_update_map_rand_debug.cc
! e1cebdc98111e8ed012095377853dc6b  libstdc++-v3/testsuite/ext/pb_ds/regression/list_update_set_rand.cc
! e6855716ceec7c58c1d9241149e60764  libstdc++-v3/testsuite/ext/pb_ds/regression/list_update_set_rand_debug.cc
! 2a9cedc44624bd20b6ef2bf4be8bc692  libstdc++-v3/testsuite/ext/pb_ds/regression/priority_queue_binary_heap-62045.cc
! 2ed61b51b7552113374fc92f9e9b070b  libstdc++-v3/testsuite/ext/pb_ds/regression/priority_queue_rand.cc
! c07ef594f018b4add6eac3b0a15f0941  libstdc++-v3/testsuite/ext/pb_ds/regression/priority_queue_rand_debug.cc
! cf21b7dd362f1dc323bb107336102a1f  libstdc++-v3/testsuite/ext/pb_ds/regression/priority_queues.cc
! 9e7fd262624b1e0b93a01ba988ba26c7  libstdc++-v3/testsuite/ext/pb_ds/regression/tree_map_rand.cc
! 2edc7f986e96264d06fc3e66caac6695  libstdc++-v3/testsuite/ext/pb_ds/regression/tree_map_rand_debug.cc
! 967f1ba4d6e13c08e549cbc48167d9cb  libstdc++-v3/testsuite/ext/pb_ds/regression/tree_set_rand.cc
! e1be5c69fd3d671352d2555265ea5f83  libstdc++-v3/testsuite/ext/pb_ds/regression/tree_set_rand_debug.cc
! ead9d3def2b9dbdf931eae3ecdb42ded  libstdc++-v3/testsuite/ext/pb_ds/regression/trie_map_rand.cc
! 1fa461cd3eee6d5c19f7345c68e149b5  libstdc++-v3/testsuite/ext/pb_ds/regression/trie_map_rand_debug.cc
! 8f75b861e64f83481bfd80a61ef2a972  libstdc++-v3/testsuite/ext/pb_ds/regression/trie_set_rand.cc
! f87c974501b7d2daa00e26829ef949aa  libstdc++-v3/testsuite/ext/pb_ds/regression/trie_set_rand_debug.cc
! 78ea0f5416456d0ceb31412be489e989  libstdc++-v3/testsuite/ext/pod_char_traits.cc
! bdd340d08b5a88bb2fad221ca205d0fd  libstdc++-v3/testsuite/ext/pool_allocator/allocate_chunk.cc
! 3c9051194437898021b4398c032f4a60  libstdc++-v3/testsuite/ext/pool_allocator/check_allocate_max_size.cc
! 38556869f0542cd0b4c9cb50495a9447  libstdc++-v3/testsuite/ext/pool_allocator/check_deallocate_null.cc
! 941eb9413fa71f77f4871362d7a4b2dd  libstdc++-v3/testsuite/ext/pool_allocator/check_delete.cc
! 2abf26cffa573b755a12dd8bf1eeed37  libstdc++-v3/testsuite/ext/pool_allocator/check_new.cc
! 6f1fad3c2286b73713aefeb08af689b3  libstdc++-v3/testsuite/ext/pool_allocator/explicit_instantiation.cc
! bd76dfc3ffbd5f95aede35c22cec8c0a  libstdc++-v3/testsuite/ext/pool_allocator/overaligned.cc
! 6c140cc7c5a2b4ea4e231cce9de3ff06  libstdc++-v3/testsuite/ext/pool_allocator/variadic_construct.cc
! c26aba5541887ede3671ae7871c5ce9b  libstdc++-v3/testsuite/ext/profile/all.cc
! c03f59ddad7dbdd2b711b193b7de4726  libstdc++-v3/testsuite/ext/profile/mutex_extensions_neg.cc
! 06025199d2d63398ed269a85e591decd  libstdc++-v3/testsuite/ext/profile/profiler_algos.cc
! 0b6ca60d5cceeb0aacac59839288c2ed  libstdc++-v3/testsuite/ext/profile/replace_new.cc
! a8da83fe9d3d50f5b5375e217a0077f6  libstdc++-v3/testsuite/ext/random/arcsine_distribution/cons/default.cc
! af51dec8c3e41bd9797b25cfceae5eb0  libstdc++-v3/testsuite/ext/random/arcsine_distribution/cons/parms.cc
! d6d4c95b03aed53aee8c93808dd2e4f4  libstdc++-v3/testsuite/ext/random/arcsine_distribution/operators/equal.cc
! 19e8ef00885343ae1ea79fac7400686c  libstdc++-v3/testsuite/ext/random/arcsine_distribution/operators/inequal.cc
! 506857398221c451045ab892464d2c76  libstdc++-v3/testsuite/ext/random/arcsine_distribution/operators/serialize.cc
! 495e6486494fbfab242838326964e9ad  libstdc++-v3/testsuite/ext/random/arcsine_distribution/requirements/explicit_instantiation/1.cc
! 2c93b5b0f7e7c05942d87f1b5a801f71  libstdc++-v3/testsuite/ext/random/arcsine_distribution/requirements/typedefs.cc
! f1b0aa4058714e1afb8516479ac7f603  libstdc++-v3/testsuite/ext/random/beta_distribution/cons/default.cc
! f134cedfb05f428019abd3ce1f915109  libstdc++-v3/testsuite/ext/random/beta_distribution/cons/parms.cc
! f3840a01496813c060abe1d69d317111  libstdc++-v3/testsuite/ext/random/beta_distribution/operators/equal.cc
! ab38db7be5b90439383933ecc1a5bb2e  libstdc++-v3/testsuite/ext/random/beta_distribution/operators/inequal.cc
! 606a74778b7623cb7cd0aa2f1c224a54  libstdc++-v3/testsuite/ext/random/beta_distribution/operators/serialize.cc
! 2c6c2a23b1e1102138607c338a198799  libstdc++-v3/testsuite/ext/random/beta_distribution/requirements/explicit_instantiation/1.cc
! 16aa521adc34e3d383903d0f3446e5aa  libstdc++-v3/testsuite/ext/random/beta_distribution/requirements/typedefs.cc
! 6b34326c319b209d8fd1374bd5edc90c  libstdc++-v3/testsuite/ext/random/hoyt_distribution/cons/default.cc
! 058d1e830bf7281b9ed5be6323db3a84  libstdc++-v3/testsuite/ext/random/hoyt_distribution/cons/parms.cc
! af6b649435cf3c009a182de87b2c9336  libstdc++-v3/testsuite/ext/random/hoyt_distribution/operators/equal.cc
! e8cfb29ef6ef4ab7664185c9188e5787  libstdc++-v3/testsuite/ext/random/hoyt_distribution/operators/inequal.cc
! 7c5159aa9a271a0303e5a8202733ad24  libstdc++-v3/testsuite/ext/random/hoyt_distribution/operators/serialize.cc
! db9a54725a72e2acdc22ded569bc792b  libstdc++-v3/testsuite/ext/random/hoyt_distribution/requirements/explicit_instantiation/1.cc
! 88309f7c928b148b9df1151bd2ad5971  libstdc++-v3/testsuite/ext/random/hoyt_distribution/requirements/typedefs.cc
! 72bd2adfd0aeb7e276c6638122b32219  libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/cons/default.cc
! 622da507a98b9f73dc8a064e0c4cd60d  libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/cons/parms.cc
! fc2e9b573c108a149a5071cb9c8fcf6c  libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/operators/equal.cc
! 2f243c4017d5377d25c2c8c8c3f8a6c4  libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/operators/inequal.cc
! 8afd62f253b56dbe3b0049ddc42f2c6c  libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/operators/serialize.cc
! 537ef2f2467ba3ecffd4129d7a30af26  libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/operators/values.cc
  5310d63384a16aab3ca0056f2cb3b3dc  libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/pr60037.cc
! 31af7536e5f4fbee3a7c57162a9218f9  libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/requirements/explicit_instantiation/1.cc
! 5eab3d3853e6683b27252c1439230a6a  libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/requirements/typedefs.cc
! b2d52027c9f74eb5442b84dcf0b75e4c  libstdc++-v3/testsuite/ext/random/k_distribution/cons/default.cc
! 32e5a6e1cca9253bafba77ce649f1ef1  libstdc++-v3/testsuite/ext/random/k_distribution/cons/parms.cc
! 07882d67ae54a032807cecb9db82408d  libstdc++-v3/testsuite/ext/random/k_distribution/operators/equal.cc
! 8f9bffac5e7260c3ef4ca4daf95970ce  libstdc++-v3/testsuite/ext/random/k_distribution/operators/inequal.cc
! ef3641bc734a5560a6b66a03c714e694  libstdc++-v3/testsuite/ext/random/k_distribution/operators/serialize.cc
! 92bbfe016104410b1596fb6ecdaba896  libstdc++-v3/testsuite/ext/random/k_distribution/requirements/explicit_instantiation/1.cc
! bc44bae4acb315099077578540ebd6c7  libstdc++-v3/testsuite/ext/random/k_distribution/requirements/typedefs.cc
! 0591be68e83bc35d5bffc8ac63a72cd6  libstdc++-v3/testsuite/ext/random/logistic_distribution/cons/default.cc
! 6b0bcdb205ebfc4e86e6f2d2fb82cbf2  libstdc++-v3/testsuite/ext/random/logistic_distribution/cons/parms.cc
! 6056df40e492b8ad2f62385f73a093ea  libstdc++-v3/testsuite/ext/random/logistic_distribution/operators/equal.cc
! c7a6d64f29c33e8e12a6a36fd4fb5121  libstdc++-v3/testsuite/ext/random/logistic_distribution/operators/inequal.cc
! d713afd8e97b248f1a47a8eda882e0c2  libstdc++-v3/testsuite/ext/random/logistic_distribution/operators/serialize.cc
! 5421315631663cc384ccf022cd90cd77  libstdc++-v3/testsuite/ext/random/logistic_distribution/requirements/typedefs.cc
! 48493747e999bf589a7f4b11dc7e6d09  libstdc++-v3/testsuite/ext/random/nakagami_distribution/cons/default.cc
! c05960a7dcb53c5f8d9037987cbfbb16  libstdc++-v3/testsuite/ext/random/nakagami_distribution/cons/parms.cc
! 62293da2d187383de3f370cb93aa328a  libstdc++-v3/testsuite/ext/random/nakagami_distribution/operators/equal.cc
! 04c67e606a28979c3ed847234f083250  libstdc++-v3/testsuite/ext/random/nakagami_distribution/operators/inequal.cc
! 465d28b00925c8111b529850e25411c1  libstdc++-v3/testsuite/ext/random/nakagami_distribution/operators/serialize.cc
! fba22554506ce9ed443b33b8a9b128de  libstdc++-v3/testsuite/ext/random/nakagami_distribution/requirements/explicit_instantiation/1.cc
! 6df2de214cb470bc095bc2b377d23ded  libstdc++-v3/testsuite/ext/random/nakagami_distribution/requirements/typedefs.cc
! 16a568c6a4661c61040dda611b52f81b  libstdc++-v3/testsuite/ext/random/normal_mv_distribution/cons/default.cc
! 2c3ffe15e8922975f5dac2d78773813e  libstdc++-v3/testsuite/ext/random/normal_mv_distribution/cons/parms.cc
! 0d7193fccd36be712215dc791a890a79  libstdc++-v3/testsuite/ext/random/normal_mv_distribution/operators/equal.cc
! c7d02d851701f9f2e45053d40a9e8593  libstdc++-v3/testsuite/ext/random/normal_mv_distribution/operators/inequal.cc
! 17bd5f85021cc2b9b2507f0bad5c1bf7  libstdc++-v3/testsuite/ext/random/normal_mv_distribution/operators/serialize.cc
! 329b15e1720390de86edd315a24e86fa  libstdc++-v3/testsuite/ext/random/normal_mv_distribution/requirements/explicit_instantiation/1.cc
! 55bb29ac86b013f1f3ca4daa519739f8  libstdc++-v3/testsuite/ext/random/normal_mv_distribution/requirements/typedefs.cc
! a4265724e132787ddbeffd0ca9b4482f  libstdc++-v3/testsuite/ext/random/pareto_distribution/cons/default.cc
! 38e52b2304e5696bb512817103fa98c6  libstdc++-v3/testsuite/ext/random/pareto_distribution/cons/parms.cc
! 03b6d6c17dae8031f3113e4052c5ebf7  libstdc++-v3/testsuite/ext/random/pareto_distribution/operators/equal.cc
! 5b9394333353d909ea3167f96417ef01  libstdc++-v3/testsuite/ext/random/pareto_distribution/operators/inequal.cc
! 9d634bcc095d2780ace339296fc08d40  libstdc++-v3/testsuite/ext/random/pareto_distribution/operators/serialize.cc
! 223612809e2fe6cb5e50670fde595041  libstdc++-v3/testsuite/ext/random/pareto_distribution/requirements/explicit_instantiation/1.cc
! d530de86cbba51200d96b00568b862bb  libstdc++-v3/testsuite/ext/random/pareto_distribution/requirements/typedefs.cc
! 68a329b4d78c53d5ea4ab5680e306f61  libstdc++-v3/testsuite/ext/random/rice_distribution/cons/default.cc
! 3b4dfa3f3eaf347f5fb8656bf96d7de4  libstdc++-v3/testsuite/ext/random/rice_distribution/cons/parms.cc
! 248ede487c32136314db19626c0bf79f  libstdc++-v3/testsuite/ext/random/rice_distribution/operators/equal.cc
! 8f34ff6a4c4fcb7338f91b86cbfac718  libstdc++-v3/testsuite/ext/random/rice_distribution/operators/inequal.cc
! 502d567f11c1fa3b8c472cd0a1f83340  libstdc++-v3/testsuite/ext/random/rice_distribution/operators/serialize.cc
! 2a4e68d6e1fb2134cc6888889e11ef46  libstdc++-v3/testsuite/ext/random/rice_distribution/requirements/explicit_instantiation/1.cc
! 32a8259c33201d585ba4a86c23f73779  libstdc++-v3/testsuite/ext/random/rice_distribution/requirements/typedefs.cc
! c72e39448c457f8a41709c3d951f67dd  libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/copy.cc
! e8f49cf58730ac80a72dc750a65795e9  libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/default.cc
! befcff35cea9bf7165b4546f2785dd10  libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/seed1.cc
! 6dc6474801cf2efe64cb2f14adabe561  libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/seed2.cc
! 853a9b52c6ef759a4f0db57096c036db  libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/seed_seq.cc
! c0dbfabbc405e2b4075ea942ef4d2fc3  libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/operators/equal.cc
! 8af737119edbb4193080d9c4474864a3  libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/operators/inequal.cc
! e570175bb46b4cfc870bc30830423e0a  libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/operators/serialize.cc
! ce9b5a2313b83de2794b7fcf1d0c9f6f  libstdc++-v3/testsuite/ext/random/triangular_distribution/cons/default.cc
! 025e6a3805cde2cf1bfe0a71c336fd91  libstdc++-v3/testsuite/ext/random/triangular_distribution/cons/parms.cc
! 23b0b382d1a0943e9d720c200e901fc8  libstdc++-v3/testsuite/ext/random/triangular_distribution/operators/equal.cc
! 817d25aacbdadf21ee9680fe19d84b50  libstdc++-v3/testsuite/ext/random/triangular_distribution/operators/inequal.cc
! c97ea8e98b0eaa5f27ae8add74d14695  libstdc++-v3/testsuite/ext/random/triangular_distribution/operators/serialize.cc
! 9a19ea2dc2cd6180d91f86ba52c7edf7  libstdc++-v3/testsuite/ext/random/triangular_distribution/requirements/explicit_instantiation/1.cc
! dde646996363cd89b63e69c9fce7003a  libstdc++-v3/testsuite/ext/random/triangular_distribution/requirements/typedefs.cc
! a97a67febafc28a29d2f239a8fc2295a  libstdc++-v3/testsuite/ext/random/uniform_inside_sphere_distribution/cons/default.cc
! d18620226c23434148565a139285f8ee  libstdc++-v3/testsuite/ext/random/uniform_inside_sphere_distribution/cons/parms.cc
! b75b3a4306aa2be1f46fd6dad589da96  libstdc++-v3/testsuite/ext/random/uniform_inside_sphere_distribution/operators/equal.cc
! 02c78bd04ae22dc0a425eeaedc2d2734  libstdc++-v3/testsuite/ext/random/uniform_inside_sphere_distribution/operators/generate.cc
! 249bad889f150ad9f85fe6cc1f83674b  libstdc++-v3/testsuite/ext/random/uniform_inside_sphere_distribution/operators/inequal.cc
! f81fd2bc11275aa37f342d2b5ef72fbc  libstdc++-v3/testsuite/ext/random/uniform_inside_sphere_distribution/operators/serialize.cc
! 88b8e103aeef4fc205898668eca6323b  libstdc++-v3/testsuite/ext/random/uniform_on_sphere_distribution/cons/default.cc
! d55f0c6b5b2e3b4162f03e585924c92e  libstdc++-v3/testsuite/ext/random/uniform_on_sphere_distribution/operators/equal.cc
! 33c94990f013788d16b9cca242871b35  libstdc++-v3/testsuite/ext/random/uniform_on_sphere_distribution/operators/generate.cc
! 8afc0fb2e29cbb7d63c461ccc53ff17b  libstdc++-v3/testsuite/ext/random/uniform_on_sphere_distribution/operators/inequal.cc
! 8731d72a7e1333ab251fb51d0c6a42c3  libstdc++-v3/testsuite/ext/random/uniform_on_sphere_distribution/operators/serialize.cc
! 7f7b2ad1404f375d323d6b2f2f5ce1a3  libstdc++-v3/testsuite/ext/random/von_mises_distribution/cons/default.cc
! 375dabf50a209a565196add982245848  libstdc++-v3/testsuite/ext/random/von_mises_distribution/cons/parms.cc
! 6e5a7fc3409fde5d16cbd5f2f8ca9b84  libstdc++-v3/testsuite/ext/random/von_mises_distribution/operators/equal.cc
! a4239472f46aa7981d4f27cf0839a161  libstdc++-v3/testsuite/ext/random/von_mises_distribution/operators/inequal.cc
! a72e3f383b5127380228af045b0b6500  libstdc++-v3/testsuite/ext/random/von_mises_distribution/operators/serialize.cc
! ffc800802ef7c6bdef318eef1de38ba4  libstdc++-v3/testsuite/ext/random/von_mises_distribution/requirements/explicit_instantiation/1.cc
! 12595fe836df4662fee344744a3cf87c  libstdc++-v3/testsuite/ext/random/von_mises_distribution/requirements/typedefs.cc
! 0d305bc174530fd753a0a28518d432aa  libstdc++-v3/testsuite/ext/rope/1.cc
! 50cd723119c5cb1ad1bd959260eea707  libstdc++-v3/testsuite/ext/rope/2.cc
! 38c4acabeff1706b55ec4efabc68d67f  libstdc++-v3/testsuite/ext/rope/3.cc
! 7298ea3b437b41b77299a4ca8ea6c9b9  libstdc++-v3/testsuite/ext/rope/36832.cc
! f67d12cc6aacf5772030536b3a166bfb  libstdc++-v3/testsuite/ext/rope/4.cc
! dfa3c4f3158334ea2154c48130a9b2d1  libstdc++-v3/testsuite/ext/rope/40299.cc
! af7aba17b3212b56af389970cdc1a281  libstdc++-v3/testsuite/ext/rope/44708.cc
! 6b06b13df75281968f15365a67ecf222  libstdc++-v3/testsuite/ext/rope/44963.cc
! 5cd0e5a9c0bc9e46bdfa97bfd86d3e5d  libstdc++-v3/testsuite/ext/rope/5.cc
! 12b6fc7a616e5c1dad5792a72bd8b33a  libstdc++-v3/testsuite/ext/rope/6.cc
! 2606605302cf1fc0e145b5b42458d451  libstdc++-v3/testsuite/ext/rope/61946.cc
! 8d084bab3778fab3e426341e344fe25f  libstdc++-v3/testsuite/ext/rope/pthread7-rope.cc
! 5f28c871e00026a98ebc76ad9141fcc3  libstdc++-v3/testsuite/ext/shared_ptr/1.cc
! 0bae2087f595599b263315923229ed64  libstdc++-v3/testsuite/ext/slist/23781_neg.cc
! 072d9dad82b98f3797d6942ceb9637d4  libstdc++-v3/testsuite/ext/slist/check_construct_destroy.cc
! 3ce1150a2b8873ba2fc4610dbc9e25e7  libstdc++-v3/testsuite/ext/slist/requirements/explicit_instantiation.cc
! 9f58003ccbe7d8a704280fe10434d29b  libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/check_nan.cc
! 63b5d474af7c17a42fcf06d330626662  libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/check_value.cc
! b0ce15ffbeb9b2d0e4beef5d1b3ba8c1  libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/compile.cc
! b10b61a612d28ca96364368b331576c7  libstdc++-v3/testsuite/ext/special_functions/hyperg/check_nan.cc
! e43854bdd6c668b22e1d8d3e7225fb8d  libstdc++-v3/testsuite/ext/special_functions/hyperg/check_value.cc
! 34b77ec76036fcf70097a45a88c7cfa2  libstdc++-v3/testsuite/ext/special_functions/hyperg/compile.cc
! 01b6fa6be200202267e4366eeb3fd894  libstdc++-v3/testsuite/ext/stdio_filebuf/char/10063-1.cc
! fe64e33af902c8be0253b3cbf79247e1  libstdc++-v3/testsuite/ext/stdio_filebuf/char/10063-2.cc
! deed2ed8f22730e083be25ea9e4e7376  libstdc++-v3/testsuite/ext/stdio_filebuf/char/10063-3.cc
! 0f404f6c145edb4bfb35d5a540c88673  libstdc++-v3/testsuite/ext/stdio_filebuf/char/2.cc
! 27988ec57765b6fad6dc4a46c6e8d093  libstdc++-v3/testsuite/ext/stdio_filebuf/char/79820.cc
! a5b76ab5544142437a4202bcc0dcd2c0  libstdc++-v3/testsuite/ext/stdio_filebuf/char/81751.cc
! 4cbb2408b117cbec066927ae47f1f1cd  libstdc++-v3/testsuite/ext/stdio_filebuf/requirements/explicit_instantiation.cc
! 22190ffa8c58a2849c14eff9784b95b7  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/char/1.cc
! 548bb4c795219db223f95843d4505584  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/char/12048-1.cc
! ec1dfdca16e39684dfd05f414dc25eb2  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/char/12048-2.cc
! ca7fbff44c4e6fa3b31ddc96f80e7bcf  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/char/12048-3.cc
! 4bff301e7c2ee2b0549ecf56b3a8851f  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/char/12048-4.cc
! e07e5cadba35353bf174574ba22c8fb3  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/char/35209.cc
! 46a1adc6f5a39195ffae8ac436c59d17  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/wchar_t/1.cc
! ce6630c15dce40dd998f7f6eb3479d33  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/wchar_t/12077.cc
! f118f06cb88eb680a748efc49f4ae6fe  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/wchar_t/12948-1.cc
! ec52f8f5779057f05a5e5dba9c70cf73  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/wchar_t/12948-2.cc
! 77e61afa7cbe00a0436cc3f0e683f3bd  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/wchar_t/12948-3.cc
! 71b6ef05665a60de0efd3759aabf67cd  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/wchar_t/12948-4.cc
! 117d1138d77268e9c8c804bfb0e2f839  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/wchar_t/35209.cc
! 0e483733377a41d568dea69cc4dbe5e7  libstdc++-v3/testsuite/ext/throw_allocator/check_allocate_max_size.cc
! 867ae030841a6bf04c065c3fa8233939  libstdc++-v3/testsuite/ext/throw_allocator/check_deallocate_null.cc
! dd7d2a6ebfdb9841a21fc6d6342371ef  libstdc++-v3/testsuite/ext/throw_allocator/check_delete.cc
! af19b7de5bd009ce120ff510bbf0f9f7  libstdc++-v3/testsuite/ext/throw_allocator/check_new.cc
! 0e98ad37a305d886160f2413e1709da9  libstdc++-v3/testsuite/ext/throw_allocator/deallocate_global.cc
! e06a81cb5cd2d14fd16d92cf2acda86d  libstdc++-v3/testsuite/ext/throw_allocator/deallocate_local.cc
! a01e9aa4ba95ce70868a4c1bd62095b0  libstdc++-v3/testsuite/ext/throw_allocator/explicit_instantiation.cc
! 7c0c6e6eb375ce644f154c1f357c67d5  libstdc++-v3/testsuite/ext/throw_allocator/variadic_construct.cc
! e8d112b6e8e26d85117bffcf30b038a8  libstdc++-v3/testsuite/ext/throw_value/cons.cc
! cf08a8d7fd39a9fbd266afe5170a701a  libstdc++-v3/testsuite/ext/type_traits/add_unsigned.cc
! a7f3358a81f3ff7dfa670a09309cf6c3  libstdc++-v3/testsuite/ext/type_traits/add_unsigned_floating_neg.cc
! 1d38132637619ff448d15b6f27bd64dc  libstdc++-v3/testsuite/ext/type_traits/add_unsigned_integer_neg.cc
! 823de1ed5c96177b4536fc7098528921  libstdc++-v3/testsuite/ext/type_traits/remove_unsigned.cc
! 637b8034d9733d519e090a54854331e2  libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_floating_neg.cc
! 5bbfab3be048c00870a4f6f29559af30  libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_integer_neg.cc
! 5c06b44fa5a9966043e67ad9edc25aaa  libstdc++-v3/testsuite/ext/vstring/capacity/29134.cc
! d1d3aa8e7a01e321bbca56bff48ce6de  libstdc++-v3/testsuite/ext/vstring/capacity/shrink_to_fit.cc
! 22b69b393a50b01a83947534b6472f04  libstdc++-v3/testsuite/ext/vstring/cons/58415-1.cc
! a6c2daafc7201e6eb09c378cdd1b315d  libstdc++-v3/testsuite/ext/vstring/cons/58415-2.cc
! 0e1a635b52fe957a859c793664f27d81  libstdc++-v3/testsuite/ext/vstring/cons/moveable.cc
! 9d18227d1c654055b34c43ad357b3b50  libstdc++-v3/testsuite/ext/vstring/cons/noexcept_move_construct.cc
! ff30ccb674792e651c9f975bfd00d4c4  libstdc++-v3/testsuite/ext/vstring/element_access/char/58163.cc
! 19e498c21595a45b97c98eb1c0151c25  libstdc++-v3/testsuite/ext/vstring/element_access/char/front_back.cc
! 50c9cbc3b03d4e7ebd32ff96c5edde0a  libstdc++-v3/testsuite/ext/vstring/element_access/wchar_t/58163.cc
! 09cd7ced0515d8d8775b38b2b0d3e674  libstdc++-v3/testsuite/ext/vstring/element_access/wchar_t/front_back.cc
! f47d8957c33ab2a58a13178ac92a6207  libstdc++-v3/testsuite/ext/vstring/hash/char/1.cc
! c47ba8f85553ee82d4e7f0df052467a5  libstdc++-v3/testsuite/ext/vstring/hash/wchar_t/1.cc
! f777eb9a7070bb06623d4b871af98e5e  libstdc++-v3/testsuite/ext/vstring/init-list.cc
! 4c7eeb71af488a49d5a74d1963d0fd33  libstdc++-v3/testsuite/ext/vstring/inserters_extractors/char/28277.cc
! b950d13981889bc1bbd7ee67aa21139f  libstdc++-v3/testsuite/ext/vstring/inserters_extractors/wchar_t/28277.cc
! 97c9c4526e3028751535a1421f63c229  libstdc++-v3/testsuite/ext/vstring/modifiers/assign/move_assign.cc
! 0e505eb58c0fe25d3c426212f1f0d0bf  libstdc++-v3/testsuite/ext/vstring/modifiers/clear/56166.cc
! fdcf4f1312ad6c94bf10476d394401cc  libstdc++-v3/testsuite/ext/vstring/modifiers/erase/char/54577.cc
! 39a6ba0b72011397a2ac23436c208b76  libstdc++-v3/testsuite/ext/vstring/modifiers/erase/wchar_t/54577.cc
! d919449b1e3de521b5b622b1362e6b19  libstdc++-v3/testsuite/ext/vstring/modifiers/insert/char/const_iterator.cc
! cf3a7fa8e3f00346f5cada0c9856f561  libstdc++-v3/testsuite/ext/vstring/modifiers/insert/wchar_t/const_iterator.cc
! 36ec31842148048f1d720850b954c228  libstdc++-v3/testsuite/ext/vstring/modifiers/pop_back/char/1.cc
! 879dd68ca799facf97e7b8266441a781  libstdc++-v3/testsuite/ext/vstring/modifiers/pop_back/wchar_t/1.cc
! 76645becefcc2e795ef531b366adbacf  libstdc++-v3/testsuite/ext/vstring/modifiers/replace/char/const_iterator.cc
! 9cc4d92e4cf11aad249bb716bba91d8d  libstdc++-v3/testsuite/ext/vstring/modifiers/replace/wchar_t/const_iterator.cc
! 811652f0e258871bb65cf6f858a3f0a5  libstdc++-v3/testsuite/ext/vstring/operators/1.cc
! e6993a500dc0a08f4999ab04814197e4  libstdc++-v3/testsuite/ext/vstring/operators/2.cc
! f3e698347471eb56f0a08f37edbd6314  libstdc++-v3/testsuite/ext/vstring/range_access.cc
! 0aec9013b34a4de564506ce77095356c  libstdc++-v3/testsuite/ext/vstring/requirements/citerators.cc
! abf940c8346c8152084cb741ff3c12a9  libstdc++-v3/testsuite/ext/vstring/requirements/do_the_right_thing.cc
! 2f101fbfe9f121f1b82348b7a10dc4e2  libstdc++-v3/testsuite/ext/vstring/requirements/dr438/constructor.cc
! 1649c70a7be358dc5c6a977821e99946  libstdc++-v3/testsuite/ext/vstring/requirements/exception/basic.cc
! 761893a9d6568017263d8f36d5db4e5e  libstdc++-v3/testsuite/ext/vstring/requirements/exception/generation_prohibited.cc
! 119f76cc536a3a62ad61d499af0c75b2  libstdc++-v3/testsuite/ext/vstring/requirements/exception/propagation_consistent.cc
! 1e090faf9e31316b41aaa87fc3c8af2b  libstdc++-v3/testsuite/ext/vstring/requirements/explicit_instantiation/1.cc
! 5530fa98fb1a7d68609bdce17faa4e25  libstdc++-v3/testsuite/ext/vstring/requirements/explicit_instantiation/2.cc
! 58cd0ba07966867101d69881c8a56be4  libstdc++-v3/testsuite/ext/vstring/requirements/explicit_instantiation/char/1.cc
! 417c1af4610c4fd8d56f77483218c6be  libstdc++-v3/testsuite/ext/vstring/requirements/explicit_instantiation/char16_t/1.cc
! 3e60aacdebb8606811ce822cb0d3efcd  libstdc++-v3/testsuite/ext/vstring/requirements/explicit_instantiation/char32_t/1.cc
! 52d07a2529b6c686ab0833f577a087ee  libstdc++-v3/testsuite/ext/vstring/requirements/explicit_instantiation/wchar_t/1.cc
! 35f4caabfdae2591164c2c04e51c6e7b  libstdc++-v3/testsuite/ext/vstring/requirements/typedefs.cc
! c561aaafba68a412c0fcbb188ceb6720  libstdc++-v3/testsuite/ext/vstring/types/23767.cc
! 97fa1835f363a0549d80ed378055af4b  libstdc++-v3/testsuite/lib/dg-options.exp
! 67e00ef6f60d9db0c9d46c8e1322d7b5  libstdc++-v3/testsuite/lib/gdb-test.exp
! df0180ee87f7d9098f38e04164315966  libstdc++-v3/testsuite/lib/libstdc++.exp
! 133d901bbdb0a071bd6535c8a3bf97f9  libstdc++-v3/testsuite/lib/prune.exp
! 63f08bbcafa61ca275efe01883befc5b  libstdc++-v3/testsuite/libstdc++-abi/abi.exp
! 7392f6ac15c4a86fb8363784f1c1a34b  libstdc++-v3/testsuite/libstdc++-dg/conformance.exp
! 30747bed54f4ee6007ca66de7f504e70  libstdc++-v3/testsuite/libstdc++-prettyprinters/48362.cc
! 6df9730fa78d6d27d423d933ae33a1c7  libstdc++-v3/testsuite/libstdc++-prettyprinters/59161.cc
! 48d89bd8abcba1b3100f06a479df961e  libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx11.cc
! 7306f6cdefb9737f7af42924d292e282  libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx17.cc
! bcdbf5b0209a01222e7d04aa61fbaf1f  libstdc++-v3/testsuite/libstdc++-prettyprinters/debug.cc
! d17ad5770fd14904f7d1f59d1e944bc6  libstdc++-v3/testsuite/libstdc++-prettyprinters/debug_cxx11.cc
! 85fb1522929f3271b7ee7b4c26c9d4a3  libstdc++-v3/testsuite/libstdc++-prettyprinters/libfundts.cc
! b55b12f80bc39e3cb5b4c349fbe0a63f  libstdc++-v3/testsuite/libstdc++-prettyprinters/prettyprinters.exp
! 4600a83e2363d111ad90a51f08d11c7a  libstdc++-v3/testsuite/libstdc++-prettyprinters/shared_ptr.cc
! 180af50daa4c2205ce209c406e9663fe  libstdc++-v3/testsuite/libstdc++-prettyprinters/simple.cc
! 28dc48814013a0b5c572cf6f3ab218fe  libstdc++-v3/testsuite/libstdc++-prettyprinters/simple11.cc
! 81bf1daaf9cbe75d1211b522d7834ef7  libstdc++-v3/testsuite/libstdc++-prettyprinters/tr1.cc
! b0a17e84fa5f6a01afc60d521c9e6cf2  libstdc++-v3/testsuite/libstdc++-prettyprinters/whatis.cc
! 038e5dec535ad59f196090444c258d01  libstdc++-v3/testsuite/libstdc++-xmethods/array.cc
! c911cf1cb63c00fe16eb340c482df5f9  libstdc++-v3/testsuite/libstdc++-xmethods/associative-containers.cc
! 2141c94be539752268a4d2f593e2c293  libstdc++-v3/testsuite/libstdc++-xmethods/deque.cc
! 3ade4fb3d2addc1090832d3b7c6a5835  libstdc++-v3/testsuite/libstdc++-xmethods/forwardlist.cc
! 9616574ae39f5d46a4322c29deeda679  libstdc++-v3/testsuite/libstdc++-xmethods/list.cc
! ed3bcbb52228df9eb4a6a7c7c527caef  libstdc++-v3/testsuite/libstdc++-xmethods/shared_ptr.cc
! bb55ead5e86d626d3fc889055611344c  libstdc++-v3/testsuite/libstdc++-xmethods/unique_ptr.cc
! 17b0f437aabd1f284aab26d0e6b1ce1b  libstdc++-v3/testsuite/libstdc++-xmethods/vector.cc
! 29c1b7e66df697f810b17c1930d0b8ee  libstdc++-v3/testsuite/libstdc++-xmethods/xmethods.exp
! 86ede0d4db39bc31039d8b9d75f176d1  libstdc++-v3/testsuite/performance/21_strings/append-1.cc
! a3accb55fe2a4136d509d52a92de8dcf  libstdc++-v3/testsuite/performance/21_strings/append-2.cc
! 15045a1effa83f5540e448409a30c298  libstdc++-v3/testsuite/performance/21_strings/cons_input_iterator.cc
! 2601d0e66116c936903aec80fda3ad3d  libstdc++-v3/testsuite/performance/21_strings/copy_cons_and_dest.cc
! 486db9482d0434dbd17a093d0781c41e  libstdc++-v3/testsuite/performance/21_strings/find.cc
  efa1608e1841a10bba94a6d4de361846  libstdc++-v3/testsuite/performance/21_strings/hash.cc
! f1deaa51f1150fc467259375f7e093b1  libstdc++-v3/testsuite/performance/22_locale/is_wchar_t.cc
! c56a659d136e0e56eb44de2150510d4e  libstdc++-v3/testsuite/performance/22_locale/narrow_widen_char.cc
! f62550b5ad8004cc5a3be1f2263f506f  libstdc++-v3/testsuite/performance/22_locale/narrow_widen_wchar_t.cc
! 6844006aac55dd267019cdb2a0e7a254  libstdc++-v3/testsuite/performance/22_locale/wchar_t_in.cc
! 2557eddeb97bc8bcf20a33f1c0956ce7  libstdc++-v3/testsuite/performance/22_locale/wchar_t_length.cc
! 103e16d89e8e0c703158db53928096a3  libstdc++-v3/testsuite/performance/22_locale/wchar_t_out.cc
! d97d1b3e317ec7b97a593890dbb74558  libstdc++-v3/testsuite/performance/23_containers/copy_construct/unordered_set.cc
! 782f91a2068a3a2bea5fada02dbaf4e8  libstdc++-v3/testsuite/performance/23_containers/copy_construct/vector_bool.cc
! 3116b727ceef85abe4359e5005e35173  libstdc++-v3/testsuite/performance/23_containers/create/map.cc
! 4f86d9b999e5a7268fe2d4cad5b08563  libstdc++-v3/testsuite/performance/23_containers/create_from_sorted/set.cc
! e7d15e4cd3ef0b47d8b638710cec07d1  libstdc++-v3/testsuite/performance/23_containers/create_sort/list.cc
! 883e1db7c0150e00f389d5d662d1a47b  libstdc++-v3/testsuite/performance/23_containers/find/map.cc
! 9a2ede71471dc6082341ad6390b5172c  libstdc++-v3/testsuite/performance/23_containers/index/map.cc
! 552d265a35f25abc90e22f44962c8880  libstdc++-v3/testsuite/performance/23_containers/insert/54075.cc
! cdfd5c71c30bd893b83f73d16ebacd09  libstdc++-v3/testsuite/performance/23_containers/insert/associative.cc
! 2fedd7459dfcec815a2ecc2e9a577bc5  libstdc++-v3/testsuite/performance/23_containers/insert/sequence.cc
! bda0f97dbf1df05e0d93940e37d6b18e  libstdc++-v3/testsuite/performance/23_containers/insert/unordered_map_array.cc
! 856525c9bd4835c3f69072f2ed1938b0  libstdc++-v3/testsuite/performance/23_containers/insert/unordered_multiset_hint.cc
! 9e3e8736b22c82ad751c26adb73490f7  libstdc++-v3/testsuite/performance/23_containers/insert/unordered_set.cc
! d8023b544bc02aa908e51d628a0a2597  libstdc++-v3/testsuite/performance/23_containers/insert_erase/41975.cc
! aede1a3928a50584a52abe73a3650390  libstdc++-v3/testsuite/performance/23_containers/insert_erase/associative.cc
! 3193ba67350f6313a4b8f822c26de67e  libstdc++-v3/testsuite/performance/23_containers/insert_from_sorted/set.cc
! ae1ec4c7c560899fe29a454b7944c6df  libstdc++-v3/testsuite/performance/23_containers/producer_consumer/associative.cc
! 57d3cfc454a4b234926a404275f94532  libstdc++-v3/testsuite/performance/23_containers/producer_consumer/sequence.cc
! 64d5cc240100aeeecbf76bd32fd97a2d  libstdc++-v3/testsuite/performance/23_containers/range_construct/deque_construct.cc
! 282d319bfd54f120f148404f5a9ea9c3  libstdc++-v3/testsuite/performance/23_containers/range_construct/list_construct1.cc
! 3b05891913c7399e2cb7bdcad0c79c03  libstdc++-v3/testsuite/performance/23_containers/range_construct/list_construct2.cc
! ed23d67b22e6a20f3720c7c4679732c2  libstdc++-v3/testsuite/performance/23_containers/range_construct/vector_construct.cc
! 10b0286d840eb2feaf3551e08722df87  libstdc++-v3/testsuite/performance/23_containers/resize/vector_bool.cc
! 0c39843ec9f97300af71a2404a9aa32a  libstdc++-v3/testsuite/performance/23_containers/sort_search/list.cc
  aa99e264ce0cf2f5fa6d5d48a8274724  libstdc++-v3/testsuite/performance/25_algorithms/copy_backward_deque_iterators.cc
  6b997f9ff45e5974bf92f58c041a0cf9  libstdc++-v3/testsuite/performance/25_algorithms/copy_deque_iterators.cc
! e76a388b2af93cadf8751eb1a5a767f6  libstdc++-v3/testsuite/performance/25_algorithms/copy_streambuf_iterators.cc
! d4aaa914b28fb9f5e3a4cc8ffb445acd  libstdc++-v3/testsuite/performance/25_algorithms/find_istreambuf_iterators.cc
! 23826ee240248c46291fa1395be315a4  libstdc++-v3/testsuite/performance/25_algorithms/lexicographical_compare.cc
! 69d160e61a9a65c796aabe508c7e4e36  libstdc++-v3/testsuite/performance/25_algorithms/nth_element_worst_case.cc
! cf001577f724489f9fc8d3e9f5979472  libstdc++-v3/testsuite/performance/25_algorithms/search_n.cc
! 5621bf31cafab16b6603d9feb5ff37fc  libstdc++-v3/testsuite/performance/25_algorithms/sort.cc
! 9aba711461103c219e545138c52a475c  libstdc++-v3/testsuite/performance/25_algorithms/sort_heap.cc
! dd6e53ce2cb2eb63652f0901cf1e4089  libstdc++-v3/testsuite/performance/25_algorithms/stable_sort.cc
! cb9d58fdb58022a5535537de783b1757  libstdc++-v3/testsuite/performance/26_numerics/complex_norm.cc
! 9fd4d601aa8379acad20de3e02f4accb  libstdc++-v3/testsuite/performance/26_numerics/valarray_gslice_to_index.cc
! 92986f106e837f3d4e7867a0215930e3  libstdc++-v3/testsuite/performance/27_io/cout_insert_int.cc
! 4d84ddb19c1f4efe3396d2032d712053  libstdc++-v3/testsuite/performance/27_io/filebuf_copy.cc
! 72a8ca26c228b94560d8008a014caead  libstdc++-v3/testsuite/performance/27_io/filebuf_sgetn_unbuf.cc
! 74b86b87828a879f6f84a9194818b2fa  libstdc++-v3/testsuite/performance/27_io/filebuf_sputc.cc
! c010e89bb954441734eb17115b833a12  libstdc++-v3/testsuite/performance/27_io/filebuf_sputn_unbuf.cc
! 2c65df2893f14dfc651c7e6c4e611fb0  libstdc++-v3/testsuite/performance/27_io/fmtflags_manipulators.cc
! 4e8a1ca21393a8da3ab24d3253ed74cc  libstdc++-v3/testsuite/performance/27_io/fstream_seek_write.cc
! 41b8ab48af3a08fd84087f86bda86949  libstdc++-v3/testsuite/performance/27_io/ifstream_extract_chars.cc
! 74f579bf2dbccf5dfb99d0e3a9884f0f  libstdc++-v3/testsuite/performance/27_io/ifstream_extract_float.cc
! 084e98dab569c15361e985ad6f1b58ee  libstdc++-v3/testsuite/performance/27_io/ifstream_extract_int.cc
! 44185d8ea714891293c7dde3aa34d7c5  libstdc++-v3/testsuite/performance/27_io/ifstream_getline-2.cc
! e35110f838566af43b00626b2b2b7b18  libstdc++-v3/testsuite/performance/27_io/ifstream_getline.cc
! 9011958f91d2aa5547136966f76c5221  libstdc++-v3/testsuite/performance/27_io/ofstream_insert_float.cc
! 4dc7e55b2d962180f9a6d7e8fc748d43  libstdc++-v3/testsuite/performance/27_io/ofstream_insert_int.cc
! 08252b4cb77d7b4044b2c1a88ab193c9  libstdc++-v3/testsuite/performance/27_io/stringbuf_overflow.cc
! 2528a312e37aed5597cf63e748d02955  libstdc++-v3/testsuite/performance/28_regex/range.cc
! f7d02adb513f6bcf9c6f3292f3bc3f2c  libstdc++-v3/testsuite/performance/28_regex/split.cc
! f233eb9001120629b8ccd7eab5d881f5  libstdc++-v3/testsuite/performance/28_regex/split.h
! 426f93489ee42fa6dbb212d894e31191  libstdc++-v3/testsuite/performance/28_regex/split_bfs.cc
! 305e9e131eecfccae403536e0b791b2f  libstdc++-v3/testsuite/performance/30_threads/future/polling.cc
! d19722494baafc6a2bcd329403611e65  libstdc++-v3/testsuite/performance/ext/pb_ds/all_int_find.cc
! 7fe94596443c0c757128e7589eed1a35  libstdc++-v3/testsuite/performance/ext/pb_ds/all_int_subscript_find.cc
! 3b477f64bb737a8eb1611115275873a2  libstdc++-v3/testsuite/performance/ext/pb_ds/all_int_subscript_insert.cc
! 874f626a3d665962f89e5ed3489a0b5f  libstdc++-v3/testsuite/performance/ext/pb_ds/all_text_find.cc
! 0b4704f764c7df520ef14d78cfb15006  libstdc++-v3/testsuite/performance/ext/pb_ds/hash_int_erase_mem.cc
! 22af507ab21c7255e0f9611f2a8b5587  libstdc++-v3/testsuite/performance/ext/pb_ds/hash_zlob_int_find.cc
! 32e280696a364f2f48af432e367d46d1  libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_find.hpp
! d963b6ca86c12f8477aa73c233a8433f  libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_find_large.cc
! 82f8883498505ca9d476edbfad3ad2c1  libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_find_small.cc
! ec1332797040d9c2f95c601ffd467450  libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert.hpp
! 3c944fa3d1477ffb3cc68a24642eb3ca  libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_large.cc
! 5d4bf113449fb9b99a0a08525c1688ba  libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_mem.hpp
! 6f3692769fa83211611e31621e7535b8  libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_mem_large.cc
! a53b6c5f3006bca54c79ee8a5fd21a8b  libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_mem_small.cc
! 3cd6981f24a743de131bbcc631f0403d  libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_small.cc
! d9e4cd0708a894af80617f3d6127e0bd  libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_int_push.cc
! 7916296b64f9133b4120c8274080531c  libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_int_push_pop.cc
! 5497e56c1eeced082a9929c82af0b8b0  libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_join.cc
! 6e4fae9ea572c2d7593a0e066ddfbd0f  libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_modify.hpp
! 71da96cc5b73896fd822d65f90b1b88d  libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_modify_down.cc
! b5ccad45026462d2d4c4428880665567  libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_modify_up.cc
! 1f6c708f6eeaaa285c81045012ddedc4  libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_pop_mem.cc
! 52aab6640f7ab9e1c79d62e07a5d4912  libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_push.cc
! 0f5dab79eb34153dd651a9b14fa71e5b  libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_push_pop.cc
! dd71041092a5f7637f88d72f9abb07e7  libstdc++-v3/testsuite/performance/ext/pb_ds/tree_order_statistics.cc
! 80edea2de9ff33b5c8a9abe3ba148bc5  libstdc++-v3/testsuite/performance/ext/pb_ds/tree_split_join.cc
! 8d9f8c14c5adf2b82a2d2f319e4aa6e9  libstdc++-v3/testsuite/performance/ext/pb_ds/tree_text_insert.cc
! c859b979016e5613aa409383a72db658  libstdc++-v3/testsuite/performance/ext/pb_ds/tree_text_lor_find.cc
! 650f84b354f53d9c3dd3d4af8c2f1a3b  libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/check_nan.cc
! f28fcb475f6b7e12d8be04d717465572  libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/check_value.cc
! b8cead3fecc6f45f87c59a9ab2dac1ad  libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/compile.cc
! f9cd7d147e295c02e1fd778bfedce63c  libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/compile_2.cc
! 58c723212e275f1d4f777973e1a1d411  libstdc++-v3/testsuite/special_functions/02_assoc_legendre/check_nan.cc
! 642b44a81d6275b30db8ab86ccc07b19  libstdc++-v3/testsuite/special_functions/02_assoc_legendre/check_value.cc
! c7cfd2315b7d312792b0e9d3c1e7e683  libstdc++-v3/testsuite/special_functions/02_assoc_legendre/compile.cc
! 1e38963640cd0b25650817efe9d7177c  libstdc++-v3/testsuite/special_functions/02_assoc_legendre/compile_2.cc
! f3ed0c76656a61ee1d2316797c464f33  libstdc++-v3/testsuite/special_functions/03_beta/check_nan.cc
! 953c2dadd5598ab5b1572922984b6a41  libstdc++-v3/testsuite/special_functions/03_beta/check_value.cc
! aa04b12bb0424e517b986bbf662e3305  libstdc++-v3/testsuite/special_functions/03_beta/compile.cc
! eaba7675fcf89d97b4b76ffc73c99dfb  libstdc++-v3/testsuite/special_functions/03_beta/compile_2.cc
! 7fffd6a6666d466afd5c4509c9a114ed  libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/check_nan.cc
! ed6c797c54a3bcf612db1324fd12619b  libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/check_value.cc
! 83c96e34c13be2e9b6b447ead64c1f31  libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/compile.cc
! d962b8fb99c6c3d92402dabf25935fe8  libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/compile_2.cc
! fc27bf1ab1d500fb32d2347b4f487c8f  libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/check_nan.cc
! 83996fe7846d63be9ec0205c128b9e82  libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/check_value.cc
! 8b8b70f4faaf7a30355caa5ae6369f1b  libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/compile.cc
! 7aa907f3517ee9708a324e3aabed9e30  libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/compile_2.cc
! 2d9f5af28c8ff4b3ce67ee729a8772ff  libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/check_nan.cc
! e618f6a5761d42733bc5466d2d975fbe  libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/check_value.cc
! 1d308757ac069f98fb83d7a36e30adc3  libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/compile.cc
! d43910005dccbb614be70a06bfff3d78  libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/compile_2.cc
! 123fd1016fb36246f73097ee9537aa69  libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/check_nan.cc
! 7ebbd654d0d20207938b63de82e23605  libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/check_value.cc
! b2d9627ce18a97d65ae25291630c2d32  libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/compile.cc
! cbebfaec26366d255384343fa76d70d6  libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/compile_2.cc
! 80d46c294f272a35e02a36b27f155524  libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/pr56216.cc
! 53892a1dbf712fd9b8954a0d39261b57  libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/check_nan.cc
! e0256b4802fecb7a78eacf59b92f5fd0  libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/check_value.cc
! 351dbc86fc3f1d2545131af9a832cffb  libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/compile.cc
! 515cad40de7d3ed76a6e0f54902e2341  libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/compile_2.cc
! 13c519de9ff469c494fdf648404ceab5  libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/check_nan.cc
! 7c455c989d97d8b7b8eae7556684aeb4  libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/check_value.cc
! 35b6a8eeba3faa5e1ac6e1dc40ce232a  libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/compile.cc
! 56ce2f146e862e6d94d8d8f32ac99b8b  libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/compile_2.cc
! 23a54a6a06449ec11946d8aff0120f2f  libstdc++-v3/testsuite/special_functions/10_cyl_neumann/check_nan.cc
! 20c87b44bef690d47178a282b5207062  libstdc++-v3/testsuite/special_functions/10_cyl_neumann/check_value.cc
! 71d9d6d19dd5f730eefc206fccadfbfe  libstdc++-v3/testsuite/special_functions/10_cyl_neumann/compile.cc
! 9aee9dddb8aeccd7888025f9caf09473  libstdc++-v3/testsuite/special_functions/10_cyl_neumann/compile_2.cc
! 7eb41d04ce059cb1561ae0201deeea3a  libstdc++-v3/testsuite/special_functions/11_ellint_1/check_nan.cc
! 6a27e9db8160623699860d6b952d316f  libstdc++-v3/testsuite/special_functions/11_ellint_1/check_value.cc
! fe60b60310335b887ecf0d47e4f5b00e  libstdc++-v3/testsuite/special_functions/11_ellint_1/compile.cc
! 6eb3c709649c4844469c9886daff63bc  libstdc++-v3/testsuite/special_functions/11_ellint_1/compile_2.cc
! b2c62ac4cad845848824dbb1d8dc7108  libstdc++-v3/testsuite/special_functions/12_ellint_2/check_nan.cc
! dfcdf8b0cc443c0547eecdb392c51ea1  libstdc++-v3/testsuite/special_functions/12_ellint_2/check_value.cc
! aaafbd501b34d007368584a7126a8e8c  libstdc++-v3/testsuite/special_functions/12_ellint_2/compile.cc
! 65cf1a11c787eea662ff5ae46614b98e  libstdc++-v3/testsuite/special_functions/12_ellint_2/compile_2.cc
! ef289e1718b6e3153ef1ac0b5c64e4ff  libstdc++-v3/testsuite/special_functions/13_ellint_3/check_nan.cc
! aa17ea610c4099ba57da5c4dd4c97455  libstdc++-v3/testsuite/special_functions/13_ellint_3/check_value.cc
! 8a824c4dd0fd7bbf0c58601eaa17b7d1  libstdc++-v3/testsuite/special_functions/13_ellint_3/compile.cc
! 7c4d158a7760866b797c6ea2ed26fe2e  libstdc++-v3/testsuite/special_functions/13_ellint_3/compile_2.cc
! fb7a0f2dc314e1cd301d96ce885580e8  libstdc++-v3/testsuite/special_functions/14_expint/check_nan.cc
! 5bc1e4e7d885bf4f8a3f0331fab7d21f  libstdc++-v3/testsuite/special_functions/14_expint/check_value.cc
! e1bf1110037c12d4b5fe3080a12b7934  libstdc++-v3/testsuite/special_functions/14_expint/compile.cc
! 1953e06c5522bdeb166c0652379849d9  libstdc++-v3/testsuite/special_functions/14_expint/compile_2.cc
! 438ce3269a06e0e7ab0461967fd50fc6  libstdc++-v3/testsuite/special_functions/15_hermite/check_nan.cc
! 3fc1882d5fb1a0bc4ad769bbf047ba7e  libstdc++-v3/testsuite/special_functions/15_hermite/check_value.cc
! bbcc9eba153d28a35ffab4c39d62d3ad  libstdc++-v3/testsuite/special_functions/15_hermite/compile.cc
! 89ac5fb098f8dd434004c2b78cc9c0c9  libstdc++-v3/testsuite/special_functions/15_hermite/compile_2.cc
! 7c78bc3a0564067ad8a911f57279301e  libstdc++-v3/testsuite/special_functions/16_laguerre/check_nan.cc
! 886eaa769d10ded3ee73bf95e2e36317  libstdc++-v3/testsuite/special_functions/16_laguerre/check_value.cc
! f4911839874be2917ff3694e690f3d84  libstdc++-v3/testsuite/special_functions/16_laguerre/compile.cc
! 0894a4d751c439ad445f9d1c3740d4ac  libstdc++-v3/testsuite/special_functions/16_laguerre/compile_2.cc
! ac7b9e1782fc0c1bd5a2fcd7fc881e36  libstdc++-v3/testsuite/special_functions/17_legendre/check_nan.cc
! 404a6bed72fcbf3f8dc010d27cfc740c  libstdc++-v3/testsuite/special_functions/17_legendre/check_value.cc
! f0e0db6c59d8f6652c1de84e8c55da91  libstdc++-v3/testsuite/special_functions/17_legendre/compile.cc
! 5274debb926d5a32a564980a6200ab1b  libstdc++-v3/testsuite/special_functions/17_legendre/compile_2.cc
! 90fb47b29b05c4612b9d3cd8ccafeb64  libstdc++-v3/testsuite/special_functions/18_riemann_zeta/check_nan.cc
! d8f87d703842f2b2c60e2fd3757a1134  libstdc++-v3/testsuite/special_functions/18_riemann_zeta/check_value.cc
! 1e1f91a9c759c86d3b71c9f5109ccdea  libstdc++-v3/testsuite/special_functions/18_riemann_zeta/compile.cc
! df439ecab157ba2db0ca0eed11dd1a25  libstdc++-v3/testsuite/special_functions/18_riemann_zeta/compile_2.cc
! 62bfc3561cd8ca0d017bd63c1402f124  libstdc++-v3/testsuite/special_functions/19_sph_bessel/check_nan.cc
! c164fd304e08ca9e99f87dc886e24f62  libstdc++-v3/testsuite/special_functions/19_sph_bessel/check_value.cc
! 993c23dbff4e3506d83ddf3b00c57b65  libstdc++-v3/testsuite/special_functions/19_sph_bessel/compile.cc
! f8cc4b653ac6ab620eba642bf7216bb3  libstdc++-v3/testsuite/special_functions/19_sph_bessel/compile_2.cc
! 7cb8625869a8d4dddcfae187026f2ec2  libstdc++-v3/testsuite/special_functions/20_sph_legendre/check_nan.cc
! 9826817e9cd0fc726367c357bdb9f7d4  libstdc++-v3/testsuite/special_functions/20_sph_legendre/check_value.cc
! e54b24ed88f97ae05d88bdade5f53493  libstdc++-v3/testsuite/special_functions/20_sph_legendre/compile.cc
! a4d22a09584ba29745331727a9a11f3d  libstdc++-v3/testsuite/special_functions/20_sph_legendre/compile_2.cc
! 1c24b070392408964c6d71f74a1fe19b  libstdc++-v3/testsuite/special_functions/21_sph_neumann/check_nan.cc
! 0e86632c7943e92397325437704b2fbd  libstdc++-v3/testsuite/special_functions/21_sph_neumann/check_value.cc
! e5b2589e7f5d395fea3649d55426c31c  libstdc++-v3/testsuite/special_functions/21_sph_neumann/compile.cc
! 76bf715ea0b8cf6779126829071bbdeb  libstdc++-v3/testsuite/special_functions/21_sph_neumann/compile_2.cc
! 11b93a24cec392705161a7ff2b1e948a  libstdc++-v3/testsuite/tr1/2_general_utilities/enable_shared_from_this/1.cc
! 9de24d9b5aaf87de5d8af2d63ed07fcb  libstdc++-v3/testsuite/tr1/2_general_utilities/enable_shared_from_this/not_shared.cc
! e966408e0926e0a8596b459514a67144  libstdc++-v3/testsuite/tr1/2_general_utilities/enable_shared_from_this/not_shared2.cc
! ee8a6faa544e8527d1724716f30f4f0d  libstdc++-v3/testsuite/tr1/2_general_utilities/enable_shared_from_this/not_shared3.cc
! f96e1b56ff6471dcb750eae59081f621  libstdc++-v3/testsuite/tr1/2_general_utilities/enable_shared_from_this/requirements/explicit_instantiation/1.cc
! 700646628f73dcb98465ce605abef84e  libstdc++-v3/testsuite/tr1/2_general_utilities/enable_shared_from_this/shared.cc
! d2d749bdff2db94e8b8d8d457696ae22  libstdc++-v3/testsuite/tr1/2_general_utilities/enable_shared_from_this/still_shared.cc
! eb6bc1989d08ed4f0bd3546c59e7017f  libstdc++-v3/testsuite/tr1/2_general_utilities/headers/functional/synopsis.cc
! c7853cc387725365560b5c3527c30a6e  libstdc++-v3/testsuite/tr1/2_general_utilities/headers/memory/synopsis.cc
! 1a4b1c0f223713bd99b14612b3d060e8  libstdc++-v3/testsuite/tr1/2_general_utilities/headers/memory/types_std_tr1.cc
! f24e1124e0673ff8038174f5f7ffd627  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/assign/assign.cc
! 851403a56ab86a2ceda69867c51c43fa  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/assign/auto_ptr.cc
! 5523c82ff014fa76bd98b8f25e70c717  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/assign/auto_ptr_neg.cc
! ab0393a08d319909ec0379c1a0d42a7a  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/assign/auto_ptr_rvalue_neg.cc
! c41caa9d20aa54e013524e81cab100ae  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/assign/dr541.cc
! 37d4e3c2475e10ab4acf9f43f2aff7d6  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/assign/shared_ptr.cc
! 1934afb8816feb0f6524c614ce3cd157  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/assign/shared_ptr_neg.cc
! 58e355aa643ab67330ffca450746b8ac  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/casts/1.cc
! 2aa6c4ff317159961993f5cc3758d8ee  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/comparison/cmp.cc
! 1cbf136e31cd3e6fd4782fbcab270313  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/39405.cc
! 71210502a4cb8711d8e772e938d04522  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/43820_neg.cc
! 7213da8e3f1f6205fa304a2d484f7680  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/auto_ptr.cc
! f5afb01d2014b419477d9c170df32b6b  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/auto_ptr_neg.cc
! 790c0bff9302ab6db8bdddbda55bd5d0  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/copy.cc
! 5c2478f3d18e78c6ac92f485357ce0ec  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/default.cc
! 8aed39f141314219afece3bc9fd66b14  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/pointer.cc
! f394b62c3a2eaf750f312b39743e8d6e  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/weak_ptr.cc
! 96e72c476ef4163985733f9850fca1b3  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/weak_ptr_expired.cc
! 48c66ac6d063e1a6377895b43a24fc0b  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/dest/dest.cc
! e57392c187668d07258972f18870eaf7  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/misc/24595.cc
! 2fc01c2c956e48bddb9527345ce67df0  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/misc/42019.cc
! 3661485f9afdb8bb038fd08a409b9dba  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/misc/io.cc
! da03afbf40e6d996a97116b3c409f904  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/misc/swap.cc
! 83b3ec2c65487bf76bf712436c33fc16  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/modifiers/24805.cc
! 648c3ced371757d332ab1a9b1c1e2c78  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/modifiers/reset.cc
! 6728b852b6f8a092c0cfd9c5e7ff6683  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/modifiers/reset_neg.cc
! 763481dcf0df70b7e98ba89eafd9ad24  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/modifiers/swap.cc
! 280f389a3f49f916c9235adb21ca245a  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/modifiers/swap_neg.cc
! 037bfc342e3fe88dd25a907da3b0a09e  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/observers/bool_conv.cc
! a11f32a8abcb46ca0b4746be6f4c73ce  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/observers/get.cc
! bb8825d085fa765ca04c616be2dc8325  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/observers/unique.cc
! daca5b57a1c552ff7c5a50ce557d5ab8  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/observers/use_count.cc
! dd946a33a596a493e0e23734917ed03e  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/requirements/explicit_instantiation/1.cc
! 31a4f2b44334cc319204cd5b996aa837  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/requirements/explicit_instantiation/2.cc
! 9886e0a5ea12ebbe8a878a3f60e28712  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/thread/default_weaktoshared.cc
! 90afdac371de0faf0de6f8c4c49a08b8  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/thread/mutex_weaktoshared.cc
! e85be55fcd12610d8c0f1b45518d47bb  libstdc++-v3/testsuite/tr1/2_general_utilities/weak_ptr/lock/1.cc
! 7d6873d3c08906999f1c32660d64afc2  libstdc++-v3/testsuite/tr1/2_general_utilities/weak_ptr/requirements/explicit_instantiation/1.cc
! f7afe4f2e5dd78576c95368324aeae80  libstdc++-v3/testsuite/tr1/2_general_utilities/weak_ptr/requirements/explicit_instantiation/2.cc
! 9710231f0a3faf64b2bac9a3909de2bc  libstdc++-v3/testsuite/tr1/3_function_objects/bind/all_bound.cc
! 475a65a749cc02937c465597e6d6e687  libstdc++-v3/testsuite/tr1/3_function_objects/bind/cv_quals.cc
! 1e13894528b706cd9c1b5fd9e64d71ac  libstdc++-v3/testsuite/tr1/3_function_objects/bind/mixed.cc
! 35f77cb684ca4056b65609cba46619fa  libstdc++-v3/testsuite/tr1/3_function_objects/bind/nested.cc
! 440eae504cce363dabbc01bd6d1c6586  libstdc++-v3/testsuite/tr1/3_function_objects/bind/placeholders.cc
! d5ee4c71e8556e8bd3a23cc15c750681  libstdc++-v3/testsuite/tr1/3_function_objects/bind/ref.cc
! 798b164ba6c7883d1c5ab0df12f7e99a  libstdc++-v3/testsuite/tr1/3_function_objects/function/1.cc
! d20aa943ea7c1ea9ff9e3bf053fabb46  libstdc++-v3/testsuite/tr1/3_function_objects/function/10.cc
! 696c5d2f53d4737a12fd147912de8a1a  libstdc++-v3/testsuite/tr1/3_function_objects/function/2.cc
! d275967af099bcefe518b6ade0b572b2  libstdc++-v3/testsuite/tr1/3_function_objects/function/3.cc
! 0bf9fa8556792c1c71fea9b6818d56d0  libstdc++-v3/testsuite/tr1/3_function_objects/function/4.cc
! 9c2add268e30e7a1e2b52c1da3120aa0  libstdc++-v3/testsuite/tr1/3_function_objects/function/5.cc
! b2d36775dc45ebd0abcaa713da14f289  libstdc++-v3/testsuite/tr1/3_function_objects/function/6.cc
! dbf86b9cf95d804cb990c76b9734b986  libstdc++-v3/testsuite/tr1/3_function_objects/function/63840.cc
! c573a1291b5977703162d273c034874a  libstdc++-v3/testsuite/tr1/3_function_objects/function/7.cc
! f7d3c2017a36a12fefdabd1851623e87  libstdc++-v3/testsuite/tr1/3_function_objects/function/8.cc
! 659a68e50ccacc566c555c90763727f7  libstdc++-v3/testsuite/tr1/3_function_objects/function/9.cc
! 0691b3fac8311eeba8c08f41ab7024e7  libstdc++-v3/testsuite/tr1/3_function_objects/headers/functional/synopsis.cc
! aab1a183359c795da08d7f23c931262f  libstdc++-v3/testsuite/tr1/3_function_objects/headers/functional/types_std_tr1.cc
! 012c978b40e4240f5b7d40a20de4e9a4  libstdc++-v3/testsuite/tr1/3_function_objects/headers/functional/using_namespace_std_tr1_placeholders.cc
! 828e80f0f1426e4e1c5ccc81eb1f55f2  libstdc++-v3/testsuite/tr1/3_function_objects/mem_fn.cc
! 4f83770c00ec3d9a79447c8f14774b54  libstdc++-v3/testsuite/tr1/3_function_objects/reference_wrapper/invoke.cc
! c6893566e0a94d473a4828b097547a55  libstdc++-v3/testsuite/tr1/3_function_objects/reference_wrapper/typedefs.cc
! 263468b6ad93e1126d830fd977c755fc  libstdc++-v3/testsuite/tr1/3_function_objects/result_of.cc
! a125d8bf41638ace7806c08a220cf05f  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_const/requirements/explicit_instantiation.cc
! 82215765be811b38462a27431af99ac6  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_const/value.cc
! eae8a54ea60889accee5f71387f36c54  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_cv/requirements/explicit_instantiation.cc
! 6f4b90d1772ed28ea1bdfcc7a39728bd  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_cv/value.cc
! 396dcb64579f6fca4926f6006fb334ef  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_pointer/requirements/explicit_instantiation.cc
! 49c9f212352bf852e42844ede7460c2d  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_pointer/value.cc
! a614095c1d57c61f9b9e0dedeecdc500  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_reference/requirements/explicit_instantiation.cc
! 8a47f123385a0399f031190f0c6989ff  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_reference/value.cc
! baaf412307e2780fe29d93dff6116d62  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_volatile/requirements/explicit_instantiation.cc
! 4d8773d5b27945d7144fbe92b11f956f  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_volatile/value.cc
! 7823e52cf91d0d8a6bde87c042a9518d  libstdc++-v3/testsuite/tr1/4_metaprogramming/aligned_storage/requirements/explicit_instantiation.cc
! 02d87ccc2e456cafb39b3d715bdf372d  libstdc++-v3/testsuite/tr1/4_metaprogramming/aligned_storage/value.cc
! b6422abe7c2fc8b483e74dcd7c78f62c  libstdc++-v3/testsuite/tr1/4_metaprogramming/alignment_of/requirements/explicit_instantiation.cc
! b93e920844889ba2854ee2d29beb83b0  libstdc++-v3/testsuite/tr1/4_metaprogramming/alignment_of/requirements/typedefs.cc
! 814b2530ef3f5051fcaa088bffb7f306  libstdc++-v3/testsuite/tr1/4_metaprogramming/alignment_of/value.cc
! 545e4eb6dded6ef8f35f60711a8d8bc4  libstdc++-v3/testsuite/tr1/4_metaprogramming/extent/requirements/explicit_instantiation.cc
! 5d086de624b927392c190331e3314b78  libstdc++-v3/testsuite/tr1/4_metaprogramming/extent/requirements/typedefs.cc
! 8798f05efb1fe0cf968cafcb923de57f  libstdc++-v3/testsuite/tr1/4_metaprogramming/extent/value.cc
! 71b0aa701fdc778526769054debe220d  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_nothrow_assign/requirements/explicit_instantiation.cc
! 2e310aa3cea6e9ac922f3673c132ed13  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_nothrow_assign/requirements/typedefs.cc
! 1c9cb91e9f02dcce25b77141c975fb9c  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_nothrow_assign/value.cc
! 71a7e9a043501bd8a68357b19bc3db17  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_nothrow_constructor/requirements/explicit_instantiation.cc
! 9f5cc16ed1f97bc31b83bc2065b540a0  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_nothrow_constructor/requirements/typedefs.cc
! 3289a058898550a7cd76a470c240d430  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_nothrow_constructor/value.cc
! 977b0b40c9569eb75163a1d242e7bcf8  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_nothrow_copy/requirements/explicit_instantiation.cc
! 8698360f9b06124cc8e3eef30b23f552  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_nothrow_copy/requirements/typedefs.cc
! 54dc6995ce0ef9a1f9464c240ffbed7a  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_nothrow_copy/value.cc
! a3bc3bed5954f3a41f3bfbe4373cd43c  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_assign/requirements/explicit_instantiation.cc
! d94926e0b9717cdaa3fdd8c5627d9e98  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_assign/requirements/typedefs.cc
! 12d7f6bc1c4bcccd522645acd99b46ff  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_assign/value.cc
! 6db4cbe3de14f9e4e30e239b66fd9816  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_constructor/requirements/explicit_instantiation.cc
! 19c4249a597a0892e399da760b7a7dd4  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_constructor/requirements/typedefs.cc
! 0d7f789d684ccbd0ce5d2a36506c4df2  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_constructor/value.cc
! dd121b311aae747930621d64b1d193fa  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_copy/requirements/explicit_instantiation.cc
! dcc0d1e230962cfa9123e301cea3396c  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_copy/requirements/typedefs.cc
! b673e56042bfc7b6636195c42e856a2f  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_copy/value.cc
! 0087e7ebee66fa5b3cf3c59a47114028  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_destructor/requirements/explicit_instantiation.cc
! 07e532c8ddc074e6d6f157c4f654fc98  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_destructor/requirements/typedefs.cc
! be4b919b6c189248ae50470c621ebd13  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_destructor/value.cc
! 46ca036baf459fe23f1a3d5be0843fa2  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_virtual_destructor/requirements/explicit_instantiation.cc
! 1c2dda9c23cb03491e415bd649d5b799  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_virtual_destructor/requirements/typedefs.cc
! 9a1610165ebb190ca6cf572e890b2776  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_virtual_destructor/value.cc
! 31decec1b16ccd522f20801bd786a418  libstdc++-v3/testsuite/tr1/4_metaprogramming/headers/type_traits/synopsis.cc
! 4b572bf07c1ba7a6b6d3f4f88dba0fe8  libstdc++-v3/testsuite/tr1/4_metaprogramming/headers/type_traits/types_std_tr1.cc
! e9327ee42c83e4bd6d98b80368b6f3fb  libstdc++-v3/testsuite/tr1/4_metaprogramming/integral_constant/requirements/explicit_instantiation.cc
! 458788e9c814c9b5e8de1ee18958ff97  libstdc++-v3/testsuite/tr1/4_metaprogramming/integral_constant/requirements/typedefs.cc
! 6b1a5d884c37f85b0375f9300dc191f9  libstdc++-v3/testsuite/tr1/4_metaprogramming/integral_constant/static_definition.cc
! 9348e20652824ee896ed4eafbd4da06e  libstdc++-v3/testsuite/tr1/4_metaprogramming/integral_constant/true_false_type_typedefs.cc
! 9c7a20c4d072e9977c11c2984d01809b  libstdc++-v3/testsuite/tr1/4_metaprogramming/integral_constant/true_false_value.cc
! b1eb4824506a9e9377fb7e6c720ca013  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_abstract/requirements/explicit_instantiation.cc
! e46978e07328f46c30800ab9535a97f1  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_abstract/requirements/typedefs.cc
! b6c5c414609349d70d3ceb7f8db0d19f  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_abstract/value.cc
! f1c8413374ead76a6379f758b47e2871  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_arithmetic/requirements/explicit_instantiation.cc
! 62852a2444186c5453f2c8f05beef61b  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_arithmetic/requirements/typedefs.cc
! cea68f87cdeda14ba7215e0d60378672  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_arithmetic/value.cc
! 1676a69622870fa610eb5502b7c5289a  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_array/requirements/explicit_instantiation.cc
! 80715d47b52b9fdc63cfeef71e40982b  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_array/requirements/typedefs.cc
! d22a784ebfb2569f5f67659c7641788e  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_array/value.cc
! cd19d80b6394e5a14ed043abfe7f26a6  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_base_of/requirements/explicit_instantiation.cc
! 9d1836eb20ff98dd67bef95c846e17b1  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_base_of/requirements/typedefs.cc
! a7dae6ab6abb78b2b7d5e3cbc2e375e3  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_base_of/value.cc
! 9a7931081b604196fc0840f6fcd2dea2  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_class/requirements/explicit_instantiation.cc
! 798733193d7c76e1c125be0a0c672ff1  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_class/requirements/typedefs.cc
! fc30ea51cc91043c4a4a71e6ed173c0b  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_class/value.cc
! 30756b70b3f4c9e12495cf49af5cf370  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_compound/requirements/explicit_instantiation.cc
! 70839e00ba530820223ebff959b40ee8  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_compound/requirements/typedefs.cc
! 329464db18aef4e3756d08dda9a81aea  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_compound/value.cc
! 1cf891f8d05b6f658d5c34d7c12db7ed  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_const/requirements/explicit_instantiation.cc
! 177bfa0dfdff4367f45af0b7c9eedb65  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_const/requirements/typedefs.cc
! f061267970532e4f115371682948bf3e  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_const/value.cc
! 1755bcba9d6fe8df7479d4fe8d14905c  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_convertible/requirements/explicit_instantiation.cc
! f7fe293b8aa717cda348d234ca63ced3  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_convertible/requirements/typedefs.cc
! df45b0c5bf0a6a523e852917287719e5  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_convertible/value.cc
! fc48cc412fc0b0baebc21382eaa6e5b2  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_empty/requirements/explicit_instantiation.cc
! de5943557a8320ad1379b30dd2eed262  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_empty/requirements/typedefs.cc
! 4eab5a5afb75c17c7293c8870489f45d  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_empty/value.cc
! 0b30243403d0e441985b78037c5cde17  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_enum/24808.cc
! e187364f1f3bdbbf23fbdfc0d51f1940  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_enum/requirements/explicit_instantiation.cc
! ae7515a0aac84c49b11cf2ea36f952ca  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_enum/requirements/typedefs.cc
! b68c3e340219eb9fae1a0cbf67e4dff1  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_enum/value.cc
! 31b3057448d1e208e1dd54ec6255fd9a  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_floating_point/requirements/explicit_instantiation.cc
! f9b07b931eb3b8994f8ef0f99f5e364f  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_floating_point/requirements/typedefs.cc
! dfecda3160691007551b470a6cc48c27  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_floating_point/value.cc
! afb41975e5a0e76c980d5b73b6d74c70  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_function/24808.cc
! 0afd33490d3ff5dbb118b29f569d1566  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_function/35637.cc
! 98bd4d3891d5155c8495858409be06a5  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_function/requirements/explicit_instantiation.cc
! 3630c2b8572da908c4e050a75cc7d22e  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_function/requirements/typedefs.cc
! 91232ad8fd3a4183c4c31605da899934  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_function/value.cc
! 2c898085f59f9ff49211c52c97f025a8  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_fundamental/requirements/explicit_instantiation.cc
! a0cfaf66db1b3208c628820d035969c1  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_fundamental/requirements/typedefs.cc
! 791b19066d319dd2f61773dd8a1d4e52  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_fundamental/value.cc
! 7f3f2c4fb04630a5256e06e75f8fc748  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_integral/requirements/explicit_instantiation.cc
! cc1844a2d6072743da8aab31ba6b62da  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_integral/requirements/typedefs.cc
! 892af225a1d231a59784258f21004bf6  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_integral/value.cc
! cbb43fe837548e54954ce4199d0fe4b8  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_member_function_pointer/requirements/explicit_instantiation.cc
! 6e354cb6a467adaf0e65307b7ede6a3a  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_member_function_pointer/requirements/typedefs.cc
! 0c08a2b0ce932368f3cf8a6354c60721  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_member_function_pointer/value.cc
! b3e4b00ab7236118fc3b6c5909fc5680  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_member_object_pointer/requirements/explicit_instantiation.cc
! 06c0ea5bc7982f1ddfe876d6ae127982  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_member_object_pointer/requirements/typedefs.cc
! ee2b926866ca2dddab56c9142b8c574d  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_member_object_pointer/value.cc
! da4a8da6f5ce5842838bc7c6b62747c4  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_member_pointer/requirements/explicit_instantiation.cc
! ca7c935ea8389e87a9c961ab8c23d2a6  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_member_pointer/requirements/typedefs.cc
! 9958dd66ec52a10ad309d6f4c0c7d133  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_member_pointer/value.cc
! 798deb6674ef8345a60d0aa4b7d1de65  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_object/24808.cc
! 25e62dfdc7fc88d51a997ae1e1a14de3  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_object/requirements/explicit_instantiation.cc
! 70768677b2712eeb15dd9b0516db7f53  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_object/requirements/typedefs.cc
! e102ff736aeb75b279c48ceb861e7119  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_object/value.cc
! 8cc0d00f9d0c1416a852e3fea3810e08  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_pod/requirements/explicit_instantiation.cc
! f65a28880c5b5929216b3b23dccfb8aa  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_pod/requirements/typedefs.cc
! f5994159376a8625152757edc44b153c  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_pod/value.cc
! 4441d28880dd33d32b272c5cbe2edc77  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_pointer/requirements/explicit_instantiation.cc
! 7f86530dc0e97e80571e97386c69f786  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_pointer/requirements/typedefs.cc
! 3b6396b124f01133a35dbb19bb35eab9  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_pointer/value.cc
! 3d29ca08655ee0a428919506454d079f  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_polymorphic/24809.cc
! 248798b239899dd73496b6e1f3fc42f1  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_polymorphic/requirements/explicit_instantiation.cc
! c27fd1922cc6093ea2dde8f7964473fb  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_polymorphic/requirements/typedefs.cc
! 565abcf5917e998ab7e3bcd0c3883cd7  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_polymorphic/value.cc
! 94cb819deb960cec8c61cd5e6de8dec3  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_reference/requirements/explicit_instantiation.cc
! 90dc5aa795c08a38d95f473e31b708a6  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_reference/requirements/typedefs.cc
! 79e271233b16584992858e231fa5da36  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_reference/value.cc
! 726f70398a86bb8d7d308e319f24d313  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_same/requirements/explicit_instantiation.cc
! d09ec0764d4e95d687e10ea27c7a485d  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_same/requirements/typedefs.cc
! 2ef24634a3dd64a106e468df6d4b2c3a  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_same/value.cc
! e65346a1986526471489d5da12ee3960  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_scalar/requirements/explicit_instantiation.cc
! 73981fe1f937edf266980c701357f9b2  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_scalar/requirements/typedefs.cc
! 87bc9bd72711919c6cf199c77a54ce21  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_scalar/value.cc
! 11c35756189f78404e26126e6d40eb6f  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_signed/requirements/explicit_instantiation.cc
! 16ddb4792a2bd0f746dadd7b77be9e37  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_signed/requirements/typedefs.cc
! 3de0243eee5ee0a5451fa6e34aa81de7  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_signed/value.cc
! 7815b4e5669e9e6670c4e7c06a97e03e  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_union/requirements/explicit_instantiation.cc
! 8f30075da0be7f9f86c40c71a7bfd418  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_union/requirements/typedefs.cc
! a7dc95eb1ee28fa548434545e7d42fac  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_union/value.cc
! f99639731bbb19ad3278a5958a26ac64  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_unsigned/requirements/explicit_instantiation.cc
! 84b7523f5b3898ce9c394cb7f64836e2  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_unsigned/requirements/typedefs.cc
! be59e80617645d2df35bb93fe632249f  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_unsigned/value.cc
! bd12086002597b961dae4f44b37fbaeb  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_void/requirements/explicit_instantiation.cc
! 4a3941f2cb673911d904e80ebeb4b5cc  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_void/requirements/typedefs.cc
! 1018ed26f1a7a4ee2b940416e38aab47  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_void/value.cc
! 38b7dcd3a2bbe17e5766494c1f738d76  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_volatile/requirements/explicit_instantiation.cc
! fa13dec06820f5ceed535360ba5678f6  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_volatile/requirements/typedefs.cc
! d558838a73bb01b996ae613859c5e358  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_volatile/value.cc
! 6d7be1fa8f08735d556d8d1300025986  libstdc++-v3/testsuite/tr1/4_metaprogramming/rank/requirements/explicit_instantiation.cc
! 62d452ad9b39290a861d3db2fc690585  libstdc++-v3/testsuite/tr1/4_metaprogramming/rank/requirements/typedefs.cc
! c932698ef75e1accb5ce3fc5676ae739  libstdc++-v3/testsuite/tr1/4_metaprogramming/rank/value.cc
! 699ded057c9a607b6dcacf8823db328a  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_all_extents/requirements/explicit_instantiation.cc
! a1bee38f5e269f2aef24cf60fb6b17d8  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_all_extents/value.cc
! c3f5716100c7a093e159da599637c66a  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_const/requirements/explicit_instantiation.cc
! 23466b1ff349e5a40018629cd6df259b  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_const/value.cc
! 1d6459c41aaf35993be4e01118da209c  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_cv/requirements/explicit_instantiation.cc
! 8f41df31077dc2ded9c72029a1ea30ae  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_cv/value.cc
! 9787e1631874024ee2f22711ef140b79  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_extent/requirements/explicit_instantiation.cc
! f07caa0cd92ee975b5a3ac6e7b21cf1a  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_extent/value.cc
! fd9324ac9e43b9eda85bc9cc5dacfd4b  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_pointer/requirements/explicit_instantiation.cc
! 5a0c4d048f110ea485ea6e7d7ade8b71  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_pointer/value.cc
! af72f94a455b3a34fc4822b3cbdd94be  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_reference/requirements/explicit_instantiation.cc
! 5d95e3d2035d6e65ff6ef36387e41c97  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_reference/value.cc
! 32f784a8adadad4181daf260ec88cdc9  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_volatile/requirements/explicit_instantiation.cc
! 33df235534426fb8a5ab21f8f53e3609  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_volatile/value.cc
! 13ab31e28e83c31a0446d0a0f61b6b93  libstdc++-v3/testsuite/tr1/5_numerical_facilities/headers/random/synopsis.cc
! bb0c9533e8c0f90f85ec01ba6c56bc3c  libstdc++-v3/testsuite/tr1/5_numerical_facilities/headers/random/types_std_tr1.cc
! dd19d7cfb1d5d4136336a52fc81f1494  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/bernoulli_distribution/requirements/typedefs.cc
! 69d1a70c1ba4a3e2a6734c3c709acb20  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/binomial_distribution/requirements/typedefs.cc
! 61165ee1dd2d1e4ab58854a8d844fec6  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/discard_block/operators/equal.cc
! d32c5412c28f29bb854d3b6415fc5716  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/discard_block/operators/not_equal.cc
! ddef12babfcb1fa6ba2d6a579b2da906  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/discard_block/operators/serialize.cc
! 830bc8b4d008bfad5b47e7ab89e77615  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/discard_block/requirements/constants.cc
! 2891dfa8b435f9d0a0f65447338014a5  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/discard_block/requirements/typedefs.cc
! b9c112c7f808e91035bda341df779cc9  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/exponential_distribution/requirements/typedefs.cc
! 26254297b2f0b8846ea11395bd73f556  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/gamma_distribution/requirements/typedefs.cc
! d2bd2487b334ebf97fb6a80b5598d05c  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/geometric_distribution/requirements/typedefs.cc
! 46e751cdf106b45488f0542f48eaf11f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/cons/default.cc
! 86eec5076aab86ca3f73f8769481176b  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/cons/gen1.cc
! 5c1c17ce74c0ebb93d71d7a533e09ad7  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/cons/seed1.cc
! b0ce355b6399f9f6787f6c850b66dc9d  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/cons/seed2.cc
! df1c933f729dace4e5640d1b8a9b4426  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/operators/equal.cc
! cfc411088cb80b3a4a2c5e22754ddcd1  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/operators/not_equal.cc
! 2fe3fd3c1f44e404c2252a7d04c2d340  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/operators/serialize.cc
! d44421ce69159b151d571db6d14bf9dd  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/requirements/constants.cc
! e71a9bfed1cf8fd77a95cf2bb9896f70  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/requirements/non_uint_neg.cc
! abf9eeeb697e185958d123f3dbb5688b  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/requirements/typedefs.cc
! 9ada920b042ba45b513b30e947fc06d1  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mersenne_twister/cons/default.cc
! b854c31bdc840d5db241b79e02d94e1e  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mersenne_twister/cons/gen1.cc
! 710a5e803d20e1633fe138fd1f23ed48  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mersenne_twister/cons/seed1.cc
! 46c605cbade8aec62e03bdafbe1ce256  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mersenne_twister/cons/seed2.cc
! 5da3dbcf636f318a619d839e29162476  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mersenne_twister/operators/equal.cc
! fef5c6e24e963f3062c7d83b3b7374fe  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mersenne_twister/operators/not_equal.cc
! 1488ea16e5c463f82b52b4f7d69d0eec  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mersenne_twister/operators/serialize.cc
! 1437520618fc3a34db47f9357e2c592f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mersenne_twister/requirements/constants.cc
! db2a8c90095fce02d8f400665e669e81  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mersenne_twister/requirements/typedefs.cc
! 5df90b7ed96db7bd497b0c346cf2789d  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/minstd_rand.cc
! 001c463fc361aecd0fedea15611e08b1  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/minstd_rand0.cc
! 299fa1a15b9857f84f7c1d1bad1f49a8  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mt19937.cc
! 299d79dba90880c47785223e02929166  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/normal_distribution/requirements/typedefs.cc
! f1de9a02c4a5c563682ade5f1008979e  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/poisson_distribution/requirements/typedefs.cc
! a9cd1de6cd71fa1243eee66cfb21fa20  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/random_device/cons/default.cc
! e8cdd95b9ac12eafbeeb99199d3c11e9  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/random_device/cons/token.cc
! ccf8ed7dcf7a7495061d5962851dc184  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/random_device/requirements/typedefs.cc
! 60a5b4dcf242484ed57e3a50bc1d788d  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/ranlux3.cc
! 0f41c95d1785f3bfc69d48a2c3ac98bb  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/ranlux3_01.cc
! e120ff204c2b1f2ccd1ad26cd45faf1c  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/ranlux4.cc
! a3ed84fe6a966f025590de4f60f50227  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/ranlux4_01.cc
! 237ec585be8f7779511e27f7b986c323  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/cons/default.cc
! 8ff0fdcac1d03212ffb13fe2f1f04860  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/cons/gen1.cc
! c335eca5b67e6350c463e7b544adc253  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/cons/seed1.cc
! aff470b5c680dc318b53c028a147fde2  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/cons/seed2.cc
! cfbabca34902cd57af6e74cde2008cc7  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/operators/equal.cc
! d3fc7621adbc952b46eeac35d8b48177  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/operators/not_equal.cc
! edbaf840e6554f1a27c07666ebf92397  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/operators/serialize.cc
! 337cef9002a81d3811f36d8942a4906c  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/requirements/constants.cc
! d739749a9ac79093f9607a7fec717242  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/requirements/typedefs.cc
! ccddb0b5473ff755d74f8e860546a310  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/cons/default.cc
! e1f86d98f004cfe456dfbff7ff25353b  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/cons/gen1.cc
! ab4db28575cfd19916641be6e3ab77cc  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/cons/seed1.cc
! b255a1bf191ec2c83549dba7092a95ba  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/cons/seed2.cc
! ab9c589a299f59d4c9ffe427418b38bc  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/operators/equal.cc
! 2d8e3cae6e29ea7c73905bb685e0ee10  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/operators/not_equal.cc
! 8145d09ca740018c0eaf45983b40c866  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/operators/serialize.cc
! 9c60808df4d597ad23cba01670a73b48  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/requirements/constants.cc
! 322f7340fdfcf738613da4145718329d  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/requirements/typedefs.cc
! f7f46e017bd5e6031b6a8d826d1dceb5  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/uniform_int/33128.cc
! 0faa204805f952588bee451dae6253db  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/uniform_int/cons/default.cc
! 7b4e0a5f11def4f4be685776922baf3d  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/uniform_int/cons/range.cc
! d7359a8274912eacf9da66ff548477b2  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/uniform_int/requirements/typedefs.cc
! 43f77ff279c05a248d7654efcd95c7ae  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/uniform_real/requirements/typedefs.cc
! d360753d7b0f44e8e6579b5f97c8860c  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/variate_generator/37986.cc
! 5db4fe86955b44fd54e53df8394baccf  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/variate_generator/requirements/typedefs.cc
! 2f912e80f9e7900e4dff32e8b098fcf7  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/xor_combine/cons/default.cc
! 02f8a5438d2f128076133baf1e4c06fe  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/xor_combine/operators/equal.cc
! f3c20d6885de5e406f7975fd83938efa  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/xor_combine/operators/not_equal.cc
! bd196e8116c33495c516fc75fb6d06bd  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/xor_combine/operators/serialize.cc
! db81b679ac458c5b188032ca8cb101a6  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/xor_combine/requirements/constants.cc
! 3cd0c67e6c0d2d95a8104a24d52af349  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/xor_combine/requirements/typedefs.cc
! 49e2c446cd87688e0e9ec4ac7ca267f1  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/01_assoc_laguerre/check_nan.cc
! 8b1f24ae87d25cbaa44b27642f53e891  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/01_assoc_laguerre/check_value.cc
! 6f6d8c0256685c28e8fc392d6794e3f1  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/01_assoc_laguerre/compile.cc
! 5a3a1ab2353a39d45502d011bd35c050  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/01_assoc_laguerre/compile_2.cc
! 5d36e3fa1ec70865f3583c3277d5e44a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/check_nan.cc
! 7dd1de65ed76e4ba831396c9b4a50e1f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/check_value.cc
! f09b9a134548b18c504d7643d5467033  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/compile.cc
! fd8f292c2674d4c294b7e4d2c476683a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/compile_2.cc
! 0549e222641aa52c8e1286855d8cb742  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/03_beta/check_nan.cc
! 32ea2210015266d5c4b8015c1ed63afc  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/03_beta/check_value.cc
! fe39af581647f5d5bc12b10095ba5a36  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/03_beta/compile.cc
! 649e7eee3b3acb4002ccafb6c11c0c58  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/03_beta/compile_2.cc
! 4e4e47150907c5fc9d8b5bd77bfe7781  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/04_comp_ellint_1/check_nan.cc
! 04412d0c4cdb763d80a2707b0157ab0e  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/04_comp_ellint_1/check_value.cc
! 8e853d81e26415281d1d450fd468cb94  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/04_comp_ellint_1/compile.cc
! edc572ab47c08f6e3591c787126305a3  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/04_comp_ellint_1/compile_2.cc
! 4893e16ac5e7bdc67b77700b25c8c471  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/05_comp_ellint_2/check_nan.cc
! 9dcf5e787446f60417b2309b65d3ad62  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/05_comp_ellint_2/check_value.cc
! ec0c59205937179b1b0608bd91be7706  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/05_comp_ellint_2/compile.cc
! 5c52c096634dc71c719889eda148dd60  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/05_comp_ellint_2/compile_2.cc
! 17832074b315f20428b54e6f7e9120a5  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/check_nan.cc
! 9d56e7b7791b80b61a4c28e712ec31f0  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/check_value.cc
! eef11b5621abca98821634c1d7326867  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/compile.cc
! b8b7e1eea58377a8effa610f2777a296  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/compile_2.cc
! 47a6520dda9800debf950660fe941d02  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/07_conf_hyperg/check_nan.cc
! ee02f8a68a566485fc2a8e2bece31933  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/07_conf_hyperg/check_value.cc
! 656b40a2b311fd49c1163b67f17dfb3a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/07_conf_hyperg/compile.cc
! 41001204424fefbd4fa627c4ed71e4f9  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/07_conf_hyperg/compile_2.cc
! 9b0f07fa22f4d8cbe531546a3afa0e66  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/check_nan.cc
! c4cdbb875c94cc78e6917372b51b8ef0  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/check_value.cc
! e81c1b5c4c534cac5479edb4f6661a5b  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/compile.cc
! 97f1d4eef3d769c8b50512d4cfed03a3  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/compile_2.cc
! 5831c3e9743d397b1b4df2bef81a3056  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/pr56216.cc
! 309145f3c707cf559f61027b51bce734  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/09_cyl_bessel_j/check_nan.cc
! b28bd5dfb860e061361d26c1187b6fd6  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/09_cyl_bessel_j/check_value.cc
! 9dd0368549e7f0c47da04260b5bf44d4  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/09_cyl_bessel_j/compile.cc
! 43bf939f5010d71b8e3720eddef6a5db  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/09_cyl_bessel_j/compile_2.cc
! aae455cad75932b4cb5dc5b8949a9453  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/airy.cc
! 4b8cf9c69bd826bf0d8c7995c6866218  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/check_nan.cc
! 23b4063c6ed89d124f40689f03b07518  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/check_value.cc
! 9a0242de3f2ebb9410134ff1f91d016b  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/compile.cc
! fae78b255ed60eeaba2cdfffbf3bf27e  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/compile_2.cc
! 425c753aa119cf85a1814d4e89c5fd91  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/11_cyl_neumann/check_nan.cc
! 10a03a9e4551eb9b4f282d6d080566b8  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/11_cyl_neumann/check_value.cc
! 8dc1944f06729c37500fd663df5591f8  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/11_cyl_neumann/compile.cc
! 97c9bd129e5e3176607622e03a02d44e  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/11_cyl_neumann/compile_2.cc
! 42bd340396f50902c6ce0d6a3efac7c6  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/12_ellint_1/check_nan.cc
! 7475c296ec482f7380bc7738db067355  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/12_ellint_1/check_value.cc
! fb9a3b8ca0c6e9a0234a3bd8b96c980c  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/12_ellint_1/compile.cc
! e9e3909020e81297af3f184f4d354d0e  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/12_ellint_1/compile_2.cc
! 9ef7ead084da419cea31d6289449b5f7  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/13_ellint_2/check_nan.cc
! e949b90453e91e5fbb3300fcb4f617bb  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/13_ellint_2/check_value.cc
! 9b440cdb74d7d8d3588a16818a6d67f3  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/13_ellint_2/compile.cc
! 64e87260c392f04b4e4858293473488f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/13_ellint_2/compile_2.cc
! 2176220d1c04be8d9b12a8a5bdf5b36f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/check_nan.cc
! d598571ffff40e19058cdc78bb9af195  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/check_value.cc
! 79654ee60a7cfb3526483ef855ce1fe8  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/compile.cc
! ab6ea5638fb6c18cd2b4f30d55a2b050  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/compile_2.cc
! ef7bac17a7c76ab26013beec51198a01  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/check_nan.cc
! 3042d082b6c3688231dedaf49e3d3098  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/check_value_neg.cc
! 56e526e739c5f7405b36c8b4ba968be6  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/check_value_pos.cc
! 5ba691d03eeea6e197986d9b745aaa05  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/compile.cc
! 7b4c49dff96915f20767fef246051462  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/compile_2.cc
! fd464b771aeb41492c3fe08d27ee6989  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/check_nan.cc
! 9cabe02a05288352222b9fddd08a4c64  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/check_value.cc
! f2e09f58c7277fc370c608cd5541c423  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/compile.cc
! a097c2867d2d69382cf40d8503b62a8a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/compile_2.cc
! cc1b0b1309d2f4f906d0ddbbbd2be452  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/check_nan.cc
! 2391fcbcc0d07af04a52e4ab10be84d0  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/check_value.cc
! 640cba9ad0b954561424955ad74a9509  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/compile.cc
! b5f7101145933b3a1bfd0ba8041eb023  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/compile_2.cc
! fe0db6caba6ce57e5e4d8c518497155c  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/18_laguerre/check_nan.cc
! 1df07787af950b4ad87030d6b288f27c  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/18_laguerre/check_value.cc
! 9c8d57a0d6402c19a1fb683cbce186db  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/18_laguerre/compile.cc
! f0c1969cc14ada4570c68e5918a8a2c8  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/18_laguerre/compile_2.cc
! faf385f38eac7c94826fc683aac2178a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/19_legendre/check_nan.cc
! af08383bed92d0548b09c5afa9769038  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/19_legendre/check_value.cc
! 6838c264a0491344e2b5fc26906debfe  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/19_legendre/compile.cc
! 2c1e3d1d12670a6d73c2bdc401fed0d5  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/19_legendre/compile_2.cc
! 57a891af33d83de3ee55bfe0fa51dd43  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/20_riemann_zeta/check_nan.cc
! 46850f6ecbb1c6049a0acd17430e6fd0  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/20_riemann_zeta/check_value_neg.cc
! b27cf48bbb30ecaf403b0e73f2ac26d6  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/20_riemann_zeta/check_value_pos.cc
! 4ce28f38dec3325d090bff1db647b64e  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/20_riemann_zeta/compile.cc
! e1c8cef194193493fe4accaf67629fb5  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/20_riemann_zeta/compile_2.cc
! f8fef09b9a288fddf3046859250e8f49  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/21_sph_bessel/check_nan.cc
! 6c0ebd52dace1ef5ef87d80e38372d57  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/21_sph_bessel/check_value.cc
! 259cd46390e893bd01c732b59548218b  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/21_sph_bessel/compile.cc
! 041d67264087b92e134a5e60553850e3  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/21_sph_bessel/compile_2.cc
! 988f2f163c863e9b2621f49c44038f9a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/check_nan.cc
! a52208fcdfb6956ab23ad849478a03f0  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/check_value.cc
! da66991f29c88fe58efaebbc5bc0428a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/compile.cc
! 152498f66aa53f1c80c9cb0d1ccd0a42  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/compile_2.cc
! 99a7e389864b8192d5150bec8d405d22  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/23_sph_neumann/check_nan.cc
! e6377c3a520583183c44d954759c6f91  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/23_sph_neumann/check_value.cc
! a8c5bea69df88a4a1b87d612be837340  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/23_sph_neumann/compile.cc
! 612a9c3e1a59570688d7f102ea0211e7  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/23_sph_neumann/compile_2.cc
! e17cb032adffcce971191b876484abc1  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/testcase.h
! 2027e1c9cd0ea1f6e87f19c0b6f2987a  libstdc++-v3/testsuite/tr1/6_containers/array/capacity/empty.cc
! f03552b6b5e563aaf30c9caf5c0ecbbf  libstdc++-v3/testsuite/tr1/6_containers/array/capacity/max_size.cc
! c316dcea28904314e87ebd300a74ae82  libstdc++-v3/testsuite/tr1/6_containers/array/capacity/size.cc
! bcb8ad8f8c46ced928d1804f593e3d71  libstdc++-v3/testsuite/tr1/6_containers/array/comparison_operators/equal.cc
! 2c1e089aef670d91b6f8dddc1184fe76  libstdc++-v3/testsuite/tr1/6_containers/array/comparison_operators/greater.cc
! fbf3f792ca22c46823370c83b71895dc  libstdc++-v3/testsuite/tr1/6_containers/array/comparison_operators/greater_or_equal.cc
! d5c00e49f5143fd095c3d740e7b811d6  libstdc++-v3/testsuite/tr1/6_containers/array/comparison_operators/less.cc
! fa8aff0c451023d1cfeeecb2c56740aa  libstdc++-v3/testsuite/tr1/6_containers/array/comparison_operators/less_or_equal.cc
! 4bad7b0455d1b75d2837ebb8eb8f68c8  libstdc++-v3/testsuite/tr1/6_containers/array/comparison_operators/not_equal.cc
! 2122076c0809f98a864b1b12025a396d  libstdc++-v3/testsuite/tr1/6_containers/array/cons/aggregate_initialization.cc
! 34211946f31dcbefe5294c973144e8a7  libstdc++-v3/testsuite/tr1/6_containers/array/element_access/at_out_of_range.cc
! 8cd5d6a5ff9cae3d5d8bc91075f4c1ea  libstdc++-v3/testsuite/tr1/6_containers/array/element_access/back.cc
! 51ad1648a51db3930b566d69538b8624  libstdc++-v3/testsuite/tr1/6_containers/array/element_access/data.cc
! be7ad96a26b06410679677daf9f779a8  libstdc++-v3/testsuite/tr1/6_containers/array/element_access/front.cc
! 2b47f43c2ec663b28b110eb8a8bf94e9  libstdc++-v3/testsuite/tr1/6_containers/array/iterators/end_is_one_past.cc
! f08f8d2ffb14b83e121a887f85e69bea  libstdc++-v3/testsuite/tr1/6_containers/array/requirements/assign.cc
! 4c1f0777cb673689aa208f6b249bb8ec  libstdc++-v3/testsuite/tr1/6_containers/array/requirements/contiguous.cc
! 80830ee0c7f9219527de983296e64145  libstdc++-v3/testsuite/tr1/6_containers/array/requirements/explicit_instantiation.cc
! 58a51868b0d2ddeffb807a6137776cd4  libstdc++-v3/testsuite/tr1/6_containers/array/requirements/member_swap.cc
! 7aa1daffb6ae7e29467f1960998c5271  libstdc++-v3/testsuite/tr1/6_containers/array/requirements/typedefs.cc
! 3a7d484b640e00d434ceeefa3ed664bd  libstdc++-v3/testsuite/tr1/6_containers/array/requirements/zero_sized_arrays.cc
! 90a949669450e90de2facc5b31117bb4  libstdc++-v3/testsuite/tr1/6_containers/array/specialized_algorithms/swap.cc
! 92aab0536238494e1ec1d3fc92e12e22  libstdc++-v3/testsuite/tr1/6_containers/array/tuple_interface/get.cc
! 40c7871800dc11a702046b8cdab9d31a  libstdc++-v3/testsuite/tr1/6_containers/array/tuple_interface/tuple_element.cc
! 79c688a71656aa3c8ff31c38d93d0439  libstdc++-v3/testsuite/tr1/6_containers/array/tuple_interface/tuple_size.cc
! 3a52ddcb012c7d2c545ad01132b0f9dd  libstdc++-v3/testsuite/tr1/6_containers/hash/24799.cc
! 2dc3fe29c6673bddd141b979efb04cc7  libstdc++-v3/testsuite/tr1/6_containers/hash/operators/size_t.cc
! 9274ecdec04009054803420c39e7771e  libstdc++-v3/testsuite/tr1/6_containers/hash/requirements/base_classes.cc
! 8932ea9a677b4ad1f307ef84c071f6bf  libstdc++-v3/testsuite/tr1/6_containers/hash/requirements/explicit_instantiation.cc
! 9b30fc2c75560a2610caa73cec6d4aa1  libstdc++-v3/testsuite/tr1/6_containers/headers/array/synopsis.cc
! 85b7338764cce575743c91cd6029ef6b  libstdc++-v3/testsuite/tr1/6_containers/headers/functional/synopsis.cc
! ed8859f0c00f8161f282386fcb0c82d8  libstdc++-v3/testsuite/tr1/6_containers/headers/tuple/synopsis.cc
! 26b2bef79545c90c0d24c6d5fb6759d7  libstdc++-v3/testsuite/tr1/6_containers/headers/tuple/types_std_tr1.cc
! 3e2b3b5c795007d2dfcf16ae73790ac0  libstdc++-v3/testsuite/tr1/6_containers/headers/unordered_map/synopsis.cc
! 0f32a7845311251097caff7396f4c267  libstdc++-v3/testsuite/tr1/6_containers/headers/unordered_set/synopsis.cc
! c8b82a32d3ccf169e46f707eac70be60  libstdc++-v3/testsuite/tr1/6_containers/tuple/comparison_operators/35480_neg.cc
! be2d35b4b1e0ecab64d2fe9dd13ff3eb  libstdc++-v3/testsuite/tr1/6_containers/tuple/comparison_operators/comparisons.cc
! 65fe99d0a7769fbe52c54727ddefa100  libstdc++-v3/testsuite/tr1/6_containers/tuple/cons/assignment.cc
! 23e50407773b30cc6ecd1c51832421f5  libstdc++-v3/testsuite/tr1/6_containers/tuple/cons/big_tuples.cc
! 57f0c898d418283b9071248804f7f03e  libstdc++-v3/testsuite/tr1/6_containers/tuple/cons/constructor.cc
! 5cbd0aeea7b296005a7a6feb42ca2d33  libstdc++-v3/testsuite/tr1/6_containers/tuple/creation_functions/23978.cc
! 01d22d9b89585635fc54f0db7dd7f188  libstdc++-v3/testsuite/tr1/6_containers/tuple/creation_functions/make_tuple.cc
! 360da28b14228cb01561d2e3658e0d74  libstdc++-v3/testsuite/tr1/6_containers/tuple/creation_functions/tie.cc
! 26d4e1822f6a5332f6eb9fce53a778d7  libstdc++-v3/testsuite/tr1/6_containers/tuple/creation_functions/tie2.cc
! 4ce2aad7b6d625cae746f51662ebd0cf  libstdc++-v3/testsuite/tr1/6_containers/tuple/element_access/get.cc
! 4050cca75ed3ea6bd8f8664839fd0c26  libstdc++-v3/testsuite/tr1/6_containers/tuple/requirements/explicit_instantiation.cc
! d4a42876058e5619e51baf2e084a79fd  libstdc++-v3/testsuite/tr1/6_containers/tuple/tuple_element.cc
! 4b44ddc9185d3dd1410b98e9d731b5d3  libstdc++-v3/testsuite/tr1/6_containers/tuple/tuple_size.cc
! 2a179e1de0db569ed6229d3d4299d43a  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/24064.cc
! 9e7362e1b9f5670fbb4956accab528b7  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/capacity/29134-map.cc
! b89196e9323c6f5a4f5ae7849cd6540f  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/erase/1.cc
! b13a1f30be3e66562f56c8ecbd28a3ec  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/erase/24061-map.cc
! 57b17de84c6c7e232fe1beaa33f06466  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/find/map1.cc
! fb2b4fc4e70f605e56b5a711589c2070  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/insert/24061-map.cc
! ecb7847c59c85665f57506a7a1e650a7  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/insert/array_syntax.cc
! c244d1cfe58fdf299a2c91e582eedb47  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/insert/map_range.cc
! bdcbb702e000116c1009b251e71102ba  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/insert/map_single.cc
! 6a39669fb0f803b6716b457e87b83487  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/requirements/explicit_instantiation.cc
! ff99e89a93d1aedee280fffccafcc331  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/requirements/iterator_neg.cc
! 9c432438181c8a91136e88da5758f80f  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/requirements/iterator_null_neg.cc
! 6e7b424b7f7323b932406be3e35164c5  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/requirements/typedefs.cc
! f0d4973d7dfea05c13b62ad1fdda0196  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/swap/1.cc
! 47f104a39eaa59f42ba43b649c252382  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/swap/2.cc
! 6d92438221e4e1d6d6412229a8405ae6  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/capacity/29134-multimap.cc
! a2dc10778d44a7206f40196e0e6e188b  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/erase/1.cc
! e17f43a2fbabed2ecf7cd62316348f4d  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/erase/24061-multimap.cc
! c140828b55913467cf6fa6d35c0c4e17  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/find/multimap1.cc
! 997fe46d4a8a53018af66907657ca031  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/insert/24061-multimap.cc
! a7593460fd298eb43ecc1b1914012191  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/insert/multimap_range.cc
! 82b731a9db12c2a74c8d749c7a2943b1  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/insert/multimap_single.cc
! 9282d7504a017dd87fa7fe24515f087e  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/requirements/explicit_instantiation.cc
! 188cf5d452ad90c899dde5114ab5f3f6  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/requirements/iterator_neg.cc
! 265b69362ab9cf8bac662e808fc2f62e  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/requirements/iterator_null_neg.cc
! 0b12ce5356fa69c426ff2d96e7de3905  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/requirements/typedefs.cc
! da26911dfd585614eecc0baff5382303  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/swap/1.cc
! 6f430a5e949c53a36384a7807a37600f  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/swap/2.cc
! 13504546fdabef5efdce4f698332bbe9  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/24054.cc
! 2a1cddf2648b0475d3e35df6dcc17231  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/capacity/29134-multiset.cc
! 9dc52d5041e9774ac039af90306a273a  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/erase/1.cc
! 0ffa2d869fe92f0ad2bbd55b62890390  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/erase/24061-multiset.cc
! e970b5e5c9a7900119dd2934c5132d79  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/find/multiset1.cc
! 1fbd1e72057700ac3d29d46cebf505cc  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/insert/24061-multiset.cc
! 915d598cdf2ae83c2424c1e0074fe9ec  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/insert/multiset_range.cc
! 698beb8f1898fb35945d8ed4c3f83e1a  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/insert/multiset_single.cc
! e3f6f25829f178503273e748b71d54bd  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/requirements/explicit_instantiation.cc
! 918b141a4cbbe24e84a87950c0f50981  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/requirements/iterator_neg.cc
! c1f656ab212f09d5d45b5c823d76bc90  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/requirements/iterator_null_neg.cc
! 006a711002450c93e8c93c7c4338cc01  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/requirements/typedefs.cc
! 96fe29efaa6a132db16b1200f1ec9122  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/swap/1.cc
! 1f6115722c0eaa12b158b7c8a18d2d85  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/swap/2.cc
! e65531ee083c93dd274704f83d9af0ca  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/23053.cc
! 163554472979228a4cf7eb5fa7a71083  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/23465.cc
! 1934c9b090163269ed10401b4f653208  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/26127.cc
! d3632a0325048550a7fa17327bbedaba  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/26132.cc
! 5eb722f60311bd98be82c8518b7ae046  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/capacity/29134-set.cc
! 02830f0716d36d6d2fd7e9df0906df90  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/erase/1.cc
! 5086b3c2aa002ad09ac440e56383a0c5  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/erase/24061-set.cc
! 49043bb54e25fd5694cdad3f5d5938c2  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/find/set1.cc
! 7a2f8ee5bbb0cc0cccf29ec42e0ad349  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/insert/24061-set.cc
! e69b434f787d3451536134c37cb1e199  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/insert/set_range.cc
! a73cb473b61edf9dc816d4156bff707b  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/insert/set_single.cc
! 912b8eff5b14a94231fac3e2378130d3  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/requirements/explicit_instantiation.cc
! d2e30afed6af79e7421db65e5da59ad3  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/requirements/iterator_neg.cc
! 9a25ea9094ecde632f1b5357877508d5  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/requirements/iterator_null_neg.cc
! 77c019de1dc03e7073cd3eb4a27be4f8  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/requirements/iterators_default_constructor.cc
! 196507808640597e0224094879861371  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/requirements/typedefs.cc
! 41ed67ed9bc7c2cbcc161ab4ce742bab  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/swap/1.cc
! 280875659a6e7ea097e5fa0c135d541c  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/swap/2.cc
! e41dadf5e843e2ca1973d1383a645297  libstdc++-v3/testsuite/tr1/6_containers/utility/19535.cc
! 66ad21adf9a2e190c2a03499651fa81c  libstdc++-v3/testsuite/tr1/6_containers/utility/pair.cc
! 1bb90f059006ade9f43bdb1880f3f4d0  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/char/cstring.cc
! 0bd79ad028be00432233622819f8e586  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/char/cstring_op.cc
! 753ca8ffa411c5aca1d15a9f54972b6e  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/char/pstring.cc
! 970cb85e3297a3176c5dbabd0430d751  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/char/range.cc
! 35b5216dcf357b3987f66a589c703a63  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/char/string.cc
! 9348d4cb2834e5ef4017a1da01d499da  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/char/string_op.cc
! 2817e6021db9dc9027b6010a0e7c1ebb  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/wchar_t/cstring.cc
! e8bbc82041256e0b2dc80b83b9321443  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/wchar_t/cstring_op.cc
! f0fa0c31f3b75fa6d281eef274d17dd5  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/wchar_t/pstring.cc
! fe2340ed72ab85a1a27d5938ca6196a6  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/wchar_t/range.cc
! 19642777b1f535b17a0c9b0d399c59da  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/wchar_t/string.cc
! 55012aacdb5eccdb580bac4d7e8899f7  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/wchar_t/string_op.cc
! 102952f7533d897dd6d8e6df33ba1d9f  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/char/cstring.cc
! 318d560b9ca9ecb69be8604b2edc6d69  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/char/default.cc
! f8175de1c0bfdb9595e2fc15de68383c  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/char/pstring.cc
! 759272b9b39b828debac215b6a1ea743  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/char/range.cc
! fe8895f71b56994c6d7b4ae673d60814  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/char/string.cc
! bd3e5d4c7251b8903d2f3254bbb19cad  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/wchar_t/cstring.cc
! 78cc88fe840c14719fd068096cda3574  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/wchar_t/default.cc
! 014634ba2957a8b018585e0c587537b7  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/wchar_t/pstring.cc
! 47c72f3251eb382adbdfdeaf9c4c2ef1  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/wchar_t/range.cc
! fc4811c7db2cf563cba964c3b46642a9  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/wchar_t/string.cc
! 6b35de9177316dabb830dc215bfae6d9  libstdc++-v3/testsuite/tr1/7_regular_expressions/match_results/ctors/char/default.cc
! 17052cf60bdbd93184b57ef1651918e1  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex/cons/char/c_string_awk.cc
! 1d6aa74c8804b54b03c60722255ef075  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex/cons/char/c_string_basic.cc
! fe2ad08fd92627a04b37fd33f11066d4  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex/cons/char/c_string_ecma.cc
! 5936909d714986ed00b0965638798109  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex/cons/char/c_string_egrep.cc
! 6b11d5f004f482473333b0dcd4cc344c  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex/cons/char/c_string_grep.cc
! 00d5a685fed29d0ca6a6a46da0203daf  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex/cons/char/default.cc
! ff757fed2fda3ad99cedf6c757e688bf  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex_traits/char/ctor.cc
! b1aefeeecde9eff7831a5bb6a8752d10  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex_traits/char/translate_nocase.cc
! 161a618fbd024f09cfd00e974a7cc426  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex_traits/char/value.cc
! 88dd72794e027e4d90611bde200f52fa  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex_traits/wchar_t/ctor.cc
! 6dc2dd16cb9b5b190fdc4cab52f81cc7  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex_traits/wchar_t/translate_nocase.cc
! 161a618fbd024f09cfd00e974a7cc426  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex_traits/wchar_t/value.cc
! 693a0ba9b5e45a86b27cee1caa6a62ca  libstdc++-v3/testsuite/tr1/8_c_compatibility/cctype/functions.cc
! 8d7de61887bad6b707033966c5fd6dac  libstdc++-v3/testsuite/tr1/8_c_compatibility/cfenv/functions.cc
! a0d1907f31ecbcf4dbd275bf665ed491  libstdc++-v3/testsuite/tr1/8_c_compatibility/cfenv/types_std_tr1.cc
! 375ae287f2887d9d556dd258351aa867  libstdc++-v3/testsuite/tr1/8_c_compatibility/cinttypes/functions.cc
! 73685bb1ccf8f4b137df1f385d2364bb  libstdc++-v3/testsuite/tr1/8_c_compatibility/cinttypes/types_std_tr1.cc
! c7005d8aba83bcdbbdff8d2e6a23d80f  libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/51083.cc
! c24c127eba8640d20b52ece91b7e2330  libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/functions.cc
! 68b7a4b50cbac9b281a0f1e87ea009d4  libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/overloads.cc
! 3513a2c91f6f9d17874880be7f1a5aa7  libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/overloads_neg.cc
! d97440cdecaa4e56bb2d330ea66289ab  libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/pow_cmath.cc
! 9c615e0cfa08ea7aa4f0fb7ebe810273  libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/templates.cc
! bb6fad70102f8bbb0e097b7cbf664579  libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/types_std_tr1.cc
! 080d1a92993b78b487f242571c93110c  libstdc++-v3/testsuite/tr1/8_c_compatibility/complex/50880.cc
! f31c84ed749a1d39f64541d0bff90209  libstdc++-v3/testsuite/tr1/8_c_compatibility/complex/51083.cc
! cd81f8fed82bb243a66c228c3aa00988  libstdc++-v3/testsuite/tr1/8_c_compatibility/complex/functions.cc
! b208f5e4b9277183b2c423cb29ed523f  libstdc++-v3/testsuite/tr1/8_c_compatibility/complex/overloads_float.cc
! 4fb8709d27b9b3f07a648d1564ace325  libstdc++-v3/testsuite/tr1/8_c_compatibility/complex/overloads_int.cc
! 8a9781166deabc913c13eca5784b9dcd  libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdint/types_std_tr1.cc
! e93e2405d374f1f95b06816b4ba7488e  libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdio/functions.cc
! c096b021dcca1eca4ff521604d98d306  libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdlib/functions.cc
! 82816af3bdc70047c9e33e95144f9dc3  libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdlib/types_std_tr1.cc
! b3f7a7c8a5706bc504c5824e16d56569  libstdc++-v3/testsuite/tr1/8_c_compatibility/cwchar/functions.cc
! 30300edd6831ed72f26aa8692108379c  libstdc++-v3/testsuite/tr1/8_c_compatibility/cwctype/functions.cc
! f37104cfd1c4a89a6ababc0e08c65b33  libstdc++-v3/testsuite/tr1/headers/all.cc
! b087bdfc409a8ea7c2e11f23e92493c4  libstdc++-v3/testsuite/tr1/headers/c++200x/complex.cc
! 9444d085147324782ea0de5b2e9c2d98  libstdc++-v3/testsuite/tr1/headers/c++200x/math.cc
! 07e44cd73d0f52ca8f9bdd865a86a738  libstdc++-v3/testsuite/tr1/headers/c++200x/using_namespace_std_tr1.cc
! 80b002a736cd1c55ace1e9b9309db6ef  libstdc++-v3/testsuite/tr1/headers/using_namespace_std_tr1.cc
! 431a03503fb2e338b7199220b41277c3  libstdc++-v3/testsuite/tr2/bases/requirements/explicit_instantiation.cc
! 48188fc1f4b2ac5cb5aad3893c2b5675  libstdc++-v3/testsuite/tr2/bases/requirements/typedefs.cc
! 6ac035ac8c8a4965765df0796e42c800  libstdc++-v3/testsuite/tr2/bases/value.cc
! f3afa0c0f8f04a4931998d299dbcceb0  libstdc++-v3/testsuite/tr2/direct_bases/requirements/explicit_instantiation.cc
! 7299008316a2e014ab91ceae5e3d4ca8  libstdc++-v3/testsuite/tr2/direct_bases/requirements/typedefs.cc
! d2fbf9cc18d079ef93b37dfbc00abe36  libstdc++-v3/testsuite/tr2/direct_bases/value.cc
! 89abcd61d6b99dbbbead9a541de2ba57  libstdc++-v3/testsuite/tr2/dynamic_bitset/pr58729.cc
! cdb38a4020a1909a89a15ff271f6d1eb  libstdc++-v3/testsuite/tr2/headers/all.cc
! 6390933681283abcb6459bb1c87196ec  libstdc++-v3/testsuite/tr2/headers/using_namespace_std_tr2.cc
! 80877ea070d5d2b4ccfeb4c0b98d42b1  libstdc++-v3/testsuite/util/common_type/assoc/common_type.hpp
! 42097ecc332c3ced213d5d8e7107e620  libstdc++-v3/testsuite/util/common_type/assoc/detail/comb_hash_fn_string_form.hpp
! a0291a9fd133f532a21ad4a9c97b75e8  libstdc++-v3/testsuite/util/common_type/assoc/detail/ds_string_form.hpp
! f631712bbb865370eed92ff57c6e517d  libstdc++-v3/testsuite/util/common_type/assoc/detail/list_update_policy_string_form.hpp
! adf7afc413c8851d1526d1a70494d6d2  libstdc++-v3/testsuite/util/common_type/assoc/detail/probe_fn_string_form.hpp
! 52151c8b9a4919e5b9553aa0af3553cc  libstdc++-v3/testsuite/util/common_type/assoc/detail/resize_policy_string_form.hpp
! 1973688792e6990008573de684f91819  libstdc++-v3/testsuite/util/common_type/assoc/detail/size_policy_string_form.hpp
! a2db2795bcff34d72471e7d193ff7bec  libstdc++-v3/testsuite/util/common_type/assoc/detail/store_hash_string_form.hpp
! 7783f75ac2bd48022fce6da1f2a742c1  libstdc++-v3/testsuite/util/common_type/assoc/detail/tree_supports_order_statistics.hpp
! 68199a194ce84f251eacbc5b43e91a70  libstdc++-v3/testsuite/util/common_type/assoc/detail/trie_supports_order_statistics.hpp
! ba50eb876a0db1c719178b6f42288d08  libstdc++-v3/testsuite/util/common_type/assoc/detail/trie_supports_prefix_search.hpp
! a6e7995755815c09534fb7935979fb37  libstdc++-v3/testsuite/util/common_type/assoc/detail/trigger_policy_string_form.hpp
! 4aaf9f0e22ba5e0dbfe01b8bdb498013  libstdc++-v3/testsuite/util/common_type/assoc/native_set.hpp
! 8b06656e7bd66efe6faf7a14a6952d57  libstdc++-v3/testsuite/util/common_type/assoc/string_form.hpp
! 171e04b3f935372b605275e376d3e06b  libstdc++-v3/testsuite/util/common_type/assoc/template_policy.hpp
! a5d508be6b95f3b36d6e2e89187e1940  libstdc++-v3/testsuite/util/common_type/priority_queue/common_type.hpp
! d4656fd45d8f709e8c9595685b6b0dd9  libstdc++-v3/testsuite/util/common_type/priority_queue/detail/ds_string_form.hpp
! d008553479ac313c6d9a576d9205bd1a  libstdc++-v3/testsuite/util/common_type/priority_queue/string_form.hpp
! 5ac638c138bec522ba797c249f41f20e  libstdc++-v3/testsuite/util/debug/checks.h
! 5b80718854186077b3405c9b52c42237  libstdc++-v3/testsuite/util/debug/unordered_checks.h
! ebff4f065ae3e7c40c82cec99a63feae  libstdc++-v3/testsuite/util/exception/safety.h
! 214169e1f83353f849905fa0c2387799  libstdc++-v3/testsuite/util/hash_fn/dna_str_limit.hpp
! f4f7f81ea8739080190035296d36d868  libstdc++-v3/testsuite/util/hash_fn/limit_string_hash_fn.hpp
! e42fe3c8b5a2565fea76577522b485c4  libstdc++-v3/testsuite/util/hash_fn/string_hash_fn.hpp
! 579c2637d4e18d8a4c2b98d6be042a72  libstdc++-v3/testsuite/util/hash_fn/string_ranged_hash_fn.hpp
! c39da76a0a233f046468cd0fd7d26fde  libstdc++-v3/testsuite/util/hash_fn/string_ranged_probe_fn.hpp
! 3d9021bc2705fd2ed44af2e860793796  libstdc++-v3/testsuite/util/io/illegal_input_error.hpp
! 642bf17406bdd65abbcf02b8b0a16782  libstdc++-v3/testsuite/util/io/prog_bar.cc
! 075c018dc2d998f2cc3bb54297c5b9c3  libstdc++-v3/testsuite/util/io/prog_bar.hpp
! 8e7477ace24542c6173b1032b3242d05  libstdc++-v3/testsuite/util/io/text_populate.hpp
! 88fca45cea27a794093829d879c386b7  libstdc++-v3/testsuite/util/io/verified_cmd_line_input.cc
! c8ed9f7de1abdaf6ec19e6c778a895f7  libstdc++-v3/testsuite/util/io/verified_cmd_line_input.hpp
! caf91a69e5db7beb84272eab2c12c4a9  libstdc++-v3/testsuite/util/io/xml.hpp
! 8f05d27a739221f4bee46f8a78947c3b  libstdc++-v3/testsuite/util/io/xml_test_formatter.hpp
! c2342fa22eceec3aa77d71408c0c2bd3  libstdc++-v3/testsuite/util/native_type/native_hash_map.hpp
! 05af97a2e092314ae4afd39f57409aac  libstdc++-v3/testsuite/util/native_type/native_hash_multimap.hpp
! f731ec9f8ad2348933e9bc38ff805053  libstdc++-v3/testsuite/util/native_type/native_hash_set.hpp
! 0cfd12743cd335de527836c6d6aa51f7  libstdc++-v3/testsuite/util/native_type/native_hash_tag.hpp
! 59877e62a6188da779edb00973eca0a4  libstdc++-v3/testsuite/util/native_type/native_map.hpp
! baf4d6869d2351a6e4af09f66c43793a  libstdc++-v3/testsuite/util/native_type/native_multimap.hpp
! aba4847c63cb6a67842fbf33cad81227  libstdc++-v3/testsuite/util/native_type/native_priority_queue.hpp
! 065ebaa3194c8947f3411723bf8d37e0  libstdc++-v3/testsuite/util/native_type/native_set.hpp
! 2fa1eb82c099e0c431af8717cc619146  libstdc++-v3/testsuite/util/native_type/native_tree_tag.hpp
! c2028f6b53bfde6467366e5be7131c7c  libstdc++-v3/testsuite/util/performance/assoc/mem_usage/erase_test.hpp
! 74cf2d67371047130cb0a9a950077885  libstdc++-v3/testsuite/util/performance/assoc/mem_usage/multimap_insert_test.hpp
! a2c2fdc2f3df4d54a8db7165734641e3  libstdc++-v3/testsuite/util/performance/assoc/multimap_common_type.hpp
! 972b7a89cfb2b10e920e25ede541f225  libstdc++-v3/testsuite/util/performance/assoc/timing/common_type.hpp
! fc808f905206891ac958d1f87fbcb8ef  libstdc++-v3/testsuite/util/performance/assoc/timing/find_test.hpp
! e17c514719103ac936673b1e674f8219  libstdc++-v3/testsuite/util/performance/assoc/timing/insert_test.hpp
! a8899bc5203cb752ac3f15242f19529d  libstdc++-v3/testsuite/util/performance/assoc/timing/multimap_find_test.hpp
! 65212af73cc3a5b105df6d64b7a136de  libstdc++-v3/testsuite/util/performance/assoc/timing/multimap_insert_test.hpp
! f6b653bca64d72d16dd5be39e5ad191c  libstdc++-v3/testsuite/util/performance/assoc/timing/subscript_find_test.hpp
! 79f7c0d5ea8ce617750cd6335691bb6a  libstdc++-v3/testsuite/util/performance/assoc/timing/subscript_insert_test.hpp
! f806ec07cc74986321027edc3d0c0390  libstdc++-v3/testsuite/util/performance/assoc/timing/tree_order_statistics_test.hpp
! af1875a1cbe8f9f23bdff08b5cad6b69  libstdc++-v3/testsuite/util/performance/assoc/timing/tree_split_join_test.hpp
! 88f5f4ecc800204c58b61496a6716ab8  libstdc++-v3/testsuite/util/performance/io/xml_formatter.hpp
! 3120f80e62a12d1f9d3becd00f6206f9  libstdc++-v3/testsuite/util/performance/priority_queue/mem_usage/pop_test.hpp
! 3a3315b798ad9de0f5479eeb1897557c  libstdc++-v3/testsuite/util/performance/priority_queue/timing/join_test.hpp
! a3272cbc95eb29bcf53f61544af7cb7c  libstdc++-v3/testsuite/util/performance/priority_queue/timing/modify_test.hpp
! 7ceac086096f86097d148524d70d2918  libstdc++-v3/testsuite/util/performance/priority_queue/timing/push_pop_test.hpp
! 3d3f1095dd76f4bbcd3017869549a040  libstdc++-v3/testsuite/util/performance/priority_queue/timing/push_test.hpp
! a5883ce9e7bb29848374789c17bb1d0f  libstdc++-v3/testsuite/util/performance/time/elapsed_timer.cc
! 56d2bb9d5cc449b41a4ea5b24a582f98  libstdc++-v3/testsuite/util/performance/time/elapsed_timer.hpp
! d70edbfdc23b41c86dc0435e543e1c15  libstdc++-v3/testsuite/util/performance/time/timing_test_base.hpp
! 04f86908950baf66cd9aa3b24eeb04f8  libstdc++-v3/testsuite/util/regression/basic_type.hpp
! a5281cd58fa96a971deb267940d97803  libstdc++-v3/testsuite/util/regression/common_type.hpp
! 0c4f9d2a743a21d92c20136380d1c81d  libstdc++-v3/testsuite/util/regression/rand/assoc/container_rand_regression_test.h
! c067b193fe1100603a72b7bcb28c7655  libstdc++-v3/testsuite/util/regression/rand/assoc/container_rand_regression_test.tcc
! b5554f54cd87586e14e898d0d1dde285  libstdc++-v3/testsuite/util/regression/rand/assoc/rand_regression_test.hpp
! ba8b947b7f00cb9b2a90f2a35ebcc7a5  libstdc++-v3/testsuite/util/regression/rand/priority_queue/container_rand_regression_test.h
! 2a1026cf03156ce62cb19d21c255190b  libstdc++-v3/testsuite/util/regression/rand/priority_queue/container_rand_regression_test.tcc
! cc9f0a4a95ef42fa7ca80f88fea544dd  libstdc++-v3/testsuite/util/regression/rand/priority_queue/rand_regression_test.hpp
! 1790cb0cf2bf220293bd72998847be59  libstdc++-v3/testsuite/util/regression/rand/xml_formatter.hpp
! 5c1aeed740dfec5f1c7835cded8fabef  libstdc++-v3/testsuite/util/regression/trait/assoc/get_set_load_trait.hpp
! 44744b3f6d0c0a9fe0352eb7108443e4  libstdc++-v3/testsuite/util/regression/trait/assoc/get_set_loads_trait.hpp
! 1d81155ef4e82451a7abc380de708c0e  libstdc++-v3/testsuite/util/regression/trait/assoc/native_type_trait.hpp
! f2e9edb3e579debe6356142c4c8b69bc  libstdc++-v3/testsuite/util/regression/trait/assoc/node_update_trait.hpp
! 3dc9a2f2b17654d2ad32082b57421c0c  libstdc++-v3/testsuite/util/regression/trait/assoc/resize_trait.hpp
! 718b3c170750101fe95717e1af785d16  libstdc++-v3/testsuite/util/regression/trait/assoc/to_string.hpp
! c8670e5f181dc389673419e11b4b183d  libstdc++-v3/testsuite/util/regression/trait/assoc/trait.hpp
! d28cd26ca74e2e1c9a1b9df53b856cd0  libstdc++-v3/testsuite/util/regression/trait/assoc/type_trait.hpp
! a005d02b8faa9e9f9e6bbb1a53b7d7e1  libstdc++-v3/testsuite/util/regression/trait/erase_if_fn.hpp
! 5f8fedb9ecb737e5256d3217e0f2dddf  libstdc++-v3/testsuite/util/regression/trait/priority_queue/trait.hpp
! 4617fff9307b0399188e122bd53ce092  libstdc++-v3/testsuite/util/replacement_memory_operators.h
! 1abb74a411fca9cbc02d95e38d7d131f  libstdc++-v3/testsuite/util/specfun_testcase.h
! 190574bab65f9fa0dca66f94a0c08643  libstdc++-v3/testsuite/util/statistic/result_recorder.hpp
! 9de1f1055f99a58e1edaa402537b60a3  libstdc++-v3/testsuite/util/statistic/sample_mean.hpp
! 34c87b36507fd3c1acf07e6e12b3e7a0  libstdc++-v3/testsuite/util/statistic/sample_mean_confidence_checker.hpp
! 581a76523070b3202a0107da76e9284c  libstdc++-v3/testsuite/util/statistic/sample_variance.hpp
! 23c9a6aacdebf29cce42d4cab0a58913  libstdc++-v3/testsuite/util/testsuite_abi.cc
! 12470e0d507e8abfc400268c2e173f81  libstdc++-v3/testsuite/util/testsuite_abi.h
! a38ea2309fe0c5158bad55b606d9bc1b  libstdc++-v3/testsuite/util/testsuite_abi_check.cc
! df5a311503fcd9da8201f171385cf9e1  libstdc++-v3/testsuite/util/testsuite_allocator.cc
! d7d27238eb4f876b14ffe95b6098fa61  libstdc++-v3/testsuite/util/testsuite_allocator.h
! 8f7405d82a72aef4cedb8164995f8dc2  libstdc++-v3/testsuite/util/testsuite_api.h
! 162e895b7ed295bf77bebd8c30ebb8ea  libstdc++-v3/testsuite/util/testsuite_character.cc
! 8c3165664d2e9891a22b091b06ac1c01  libstdc++-v3/testsuite/util/testsuite_character.h
! 5f5189677e737f0ab83011ba348411e8  libstdc++-v3/testsuite/util/testsuite_common_types.h
! 1a10b9bd0f59eb25d6637e708a2af718  libstdc++-v3/testsuite/util/testsuite_container_traits.h
! 9320ec8c56a624586a1c11d4fa9493e9  libstdc++-v3/testsuite/util/testsuite_containergen.h
! cd6c8f1130990a2ad276c58a9e75d692  libstdc++-v3/testsuite/util/testsuite_containers.h
! 308368e012a99f6402629fb827903f10  libstdc++-v3/testsuite/util/testsuite_counter_type.h
! 916f152972680916596375cdf12391f2  libstdc++-v3/testsuite/util/testsuite_error.h
! ff05985e45aaa715c0e56af56bc93b72  libstdc++-v3/testsuite/util/testsuite_fs.h
! 3c1d334e524777a594413f9c47af37f5  libstdc++-v3/testsuite/util/testsuite_greedy_ops.h
! 897056d3840a4c98b7f3a54fec263601  libstdc++-v3/testsuite/util/testsuite_hooks.cc
! 61a4eb6f425486a4eab62b43f6a09930  libstdc++-v3/testsuite/util/testsuite_hooks.h
! 3de4adc73cde73a76dcad47a2a8d6103  libstdc++-v3/testsuite/util/testsuite_io.h
! ae4f6b785cfba28c4bd3f25020e2e3fc  libstdc++-v3/testsuite/util/testsuite_iterators.h
! 070dce43e6c025fd8a05dcab8d49d5ad  libstdc++-v3/testsuite/util/testsuite_new_operators.h
! a9793c8240686d0b8b52b06abd3c0cbf  libstdc++-v3/testsuite/util/testsuite_performance.h
! 65c6b04d6caa1b38d78d68e08e87fcce  libstdc++-v3/testsuite/util/testsuite_random.h
! fc100a53abc16af41217eb51a40e7bc5  libstdc++-v3/testsuite/util/testsuite_regex.h
! 42ec7812b2f5c72ae69218d4f8ab8256  libstdc++-v3/testsuite/util/testsuite_rng.h
! 1fd7269e608e690cab2038abb9f78ce5  libstdc++-v3/testsuite/util/testsuite_rvalref.h
! 30c04e8d0c9b624dda21008e3e686988  libstdc++-v3/testsuite/util/testsuite_shared.cc
! ead7378c068848783ee20a8f22dfa62b  libstdc++-v3/testsuite/util/testsuite_tr1.h
! 534d202f4467aac0499eab3ddb5a842a  libstdc++-v3/testsuite/util/thread/all.h
  b950d655469c477755252b1e18009596  libtool-ldflags
  7a2b83d2d625a4022b9213ceb75f5897  libtool.m4
! 38266060135fc948746fe375a1694b92  libvtv/ChangeLog
! 2e04be12600367e07451f404a7fc1fa3  libvtv/Makefile.am
! b025f16ebe06ec16aa2957e5003533a0  libvtv/Makefile.in
! 4ce86f8604e6c86211a4cb2025ffc53e  libvtv/acinclude.m4
  1fadd2a7f8c12da8f434cd33e68d271e  libvtv/aclocal.m4
! ffc4cdfc7ce525009f1ea858b4ff6168  libvtv/configure
! 2aea7477b332bb49b0bdb0be0c619c95  libvtv/configure.ac
! 319e4840915cc447fe6c231fdcdb8a87  libvtv/configure.tgt
  2caccd848c579fcddd2a8c8106cfaff9  libvtv/scripts/run-testsuite.sh
  09a6150d1619f2508d7844f860b3382c  libvtv/scripts/sum-vtv-counts.c
  c11bb77f9d8171fb781ba38a102c5f70  libvtv/testsuite/Makefile.am
! 0c4b9af067ee1d567433d77ab1642ccb  libvtv/testsuite/Makefile.in
! 15ff06e4658e1ef5b48b5dcb93108a7e  libvtv/testsuite/config/default.exp
  c3135c06118981205f468524e15716be  libvtv/testsuite/lib/libvtv-dg.exp
  82223778c51ff5649921d76fcccb52ed  libvtv/testsuite/lib/libvtv.exp
  dc26824f08dd227e0cba7e7ebc8f4d3a  libvtv/testsuite/libvtv.cc/bb_tests.cc
--- 78531,80128 ----
  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
! d44f2bfac5a5a97d72d6aed66bc36f07  libstdc++-v3/testsuite/decimal/binary-arith.cc
! da9439a893dd61304f8bcfe8a5e81231  libstdc++-v3/testsuite/decimal/cast_neg.cc
! ff4860314b174c3bbd67a2a6ed4aa26c  libstdc++-v3/testsuite/decimal/comparison.cc
! b7d1a93aa0890b34cd3ccafcd2c18a1a  libstdc++-v3/testsuite/decimal/compound-assignment-memfunc.cc
! 33477d4b722a07f13df33dc16b6c0718  libstdc++-v3/testsuite/decimal/compound-assignment.cc
! 4eb508316490430908a5b88f68c543b4  libstdc++-v3/testsuite/decimal/conversion-from-float.cc
! 8db603792ae12b67f753eee623d2fbbf  libstdc++-v3/testsuite/decimal/conversion-from-integral.cc
! dfe2755c11cf0da3e5e18e5c1fa8163d  libstdc++-v3/testsuite/decimal/conversion-to-generic-float.cc
! c0e012e773760f670534fe034ab3fec4  libstdc++-v3/testsuite/decimal/conversion-to-integral.cc
! fa3380c634484ca0eaf7f24ca1130536  libstdc++-v3/testsuite/decimal/ctor.cc
! 6862cbeae83722abedaf4fc2a9ab2528  libstdc++-v3/testsuite/decimal/incdec-memfunc.cc
! ad31316e6cd6dde86936c94018108cfb  libstdc++-v3/testsuite/decimal/incdec.cc
! 735b6cbb3877aab1c5dea182aabce3eb  libstdc++-v3/testsuite/decimal/make-decimal.cc
! 677bcd97a2bbf26a567a9291c008e633  libstdc++-v3/testsuite/decimal/mixed-mode-arith_neg.cc
! 29fe61a6f9543bb39a7e881d1f33f2b2  libstdc++-v3/testsuite/decimal/mixed-mode-cmp_neg.cc
! a0bc8849373515b923f98d45c1b66a7c  libstdc++-v3/testsuite/decimal/operator_neg.cc
! 046d2f6ae957585b472c984777260ab2  libstdc++-v3/testsuite/decimal/pr54036-1.cc
! b3981f4cf602caba363f77c187e26a19  libstdc++-v3/testsuite/decimal/pr54036-2.cc
! 502efcf99f16534c691e89e37864a58d  libstdc++-v3/testsuite/decimal/pr54036-3.cc
! 1ca83acd04f033b9dd9f99fe0ea87367  libstdc++-v3/testsuite/decimal/pr58815.cc
! 03551c2e83b44bef0f2161f005036d78  libstdc++-v3/testsuite/decimal/unary-arith.cc
! ec5707ca908b02432697aa40daaa4a7e  libstdc++-v3/testsuite/experimental/algorithm/sample.cc
! 2b67743ce6f6610f8fdaed69667ccb3d  libstdc++-v3/testsuite/experimental/algorithm/search.cc
! fbc728ca502275c1d2f1ffec147ad1e5  libstdc++-v3/testsuite/experimental/any/assign/1.cc
! 38d25f8d72a680bad995d51358b56780  libstdc++-v3/testsuite/experimental/any/assign/2.cc
! 46db193f0d89ac0139392132515657a6  libstdc++-v3/testsuite/experimental/any/assign/exception.cc
! 0c5f22173c3cfea45bfc6ecffe0410be  libstdc++-v3/testsuite/experimental/any/assign/self.cc
! 6a352bb09dd9d0235c1a8e7022cc7f70  libstdc++-v3/testsuite/experimental/any/cons/1.cc
! c590f9cd4ee7f44cda4c4c611dddc806  libstdc++-v3/testsuite/experimental/any/cons/2.cc
! da1a32ef4c9d7cf96a9873917326aca6  libstdc++-v3/testsuite/experimental/any/cons/aligned.cc
! 1cea0c2eac04cc972f5869df06fc9770  libstdc++-v3/testsuite/experimental/any/cons/nontrivial.cc
! 942cec615567a000ecc78539890aea4f  libstdc++-v3/testsuite/experimental/any/misc/any_cast.cc
! 687e6d8685c250d317bcbfc09ed11a50  libstdc++-v3/testsuite/experimental/any/misc/any_cast_neg.cc
! 0cef74745bb3144cfc5ca296528dc1f9  libstdc++-v3/testsuite/experimental/any/misc/any_cast_no_rtti.cc
! 36e4ebc8edbc974b95f3c0311f29315f  libstdc++-v3/testsuite/experimental/any/misc/swap.cc
! 343d811bf0253cd2ae2870bb82c9a54e  libstdc++-v3/testsuite/experimental/any/modifiers/1.cc
! 291c7e91d88b5f7e46e12e1cbbbaa0ab  libstdc++-v3/testsuite/experimental/any/observers/type.cc
! b7042c5a00e782f92da55009d97f81d3  libstdc++-v3/testsuite/experimental/any/typedefs.cc
! 1e328c48513636c25e04eb249873dafb  libstdc++-v3/testsuite/experimental/array/make_array.cc
! 1f7919760b78f76c23b83598b8fc2fc9  libstdc++-v3/testsuite/experimental/array/neg.cc
! 65721b5b39a9b0e46a51a851df11e1ca  libstdc++-v3/testsuite/experimental/chrono/value.cc
! 3d45dd89c5a34fcab832a9d7e6404496  libstdc++-v3/testsuite/experimental/deque/erasure.cc
  02455db47de7f16c8e2d1f2af4839fc7  libstdc++-v3/testsuite/experimental/feat-cxx14.cc
  7a4bd66bca69264e75c26ab457f71332  libstdc++-v3/testsuite/experimental/feat-lib-fund.cc
! 590a36c4233f99e844d28d800af1cf6a  libstdc++-v3/testsuite/experimental/filesystem/file_status/1.cc
! a159afc8860dd30b83a3bd8543531645  libstdc++-v3/testsuite/experimental/filesystem/iterators/directory_iterator.cc
! 5ab646e07080de5f340e52434fc3ca4e  libstdc++-v3/testsuite/experimental/filesystem/iterators/pop.cc
! 73480d0fed0b678fc31cd8e7e28ba4f5  libstdc++-v3/testsuite/experimental/filesystem/iterators/recursive_directory_iterator.cc
! 47541db81b6091f2e9c8a42d83f745ac  libstdc++-v3/testsuite/experimental/filesystem/operations/absolute.cc
! eb3d69d1e7c364bf9cc38602565f8364  libstdc++-v3/testsuite/experimental/filesystem/operations/canonical.cc
! a79e57e6ec1bb3f87a42842b21829a79  libstdc++-v3/testsuite/experimental/filesystem/operations/copy.cc
! 9a46979fadeab66294370f1db29d01bb  libstdc++-v3/testsuite/experimental/filesystem/operations/copy_file.cc
! c973c111eebcd818844bc240e582e915  libstdc++-v3/testsuite/experimental/filesystem/operations/create_directories.cc
! a0a361435aac5b9e0ff2fe9896fbefd8  libstdc++-v3/testsuite/experimental/filesystem/operations/create_directory.cc
! 550467335555e40b99086bc4f9153f85  libstdc++-v3/testsuite/experimental/filesystem/operations/create_symlink.cc
! 69471ace4289941fd9f44bf3b302fb8a  libstdc++-v3/testsuite/experimental/filesystem/operations/current_path.cc
! 89062e68eca3e2040117c28776cc3d28  libstdc++-v3/testsuite/experimental/filesystem/operations/equivalent.cc
! 9a3e853079ca287c7eeeae81bde8eee8  libstdc++-v3/testsuite/experimental/filesystem/operations/exists.cc
! 186e813d141e0996a7197feb57732c25  libstdc++-v3/testsuite/experimental/filesystem/operations/file_size.cc
! ecc63b08d2114bcaa3d216d9edd89c80  libstdc++-v3/testsuite/experimental/filesystem/operations/is_empty.cc
! b75de3c62da47e80e881cad01524b683  libstdc++-v3/testsuite/experimental/filesystem/operations/last_write_time.cc
! 519b1f2c820d88bd00d29c92d5ffc621  libstdc++-v3/testsuite/experimental/filesystem/operations/permissions.cc
! 036a82a52bd5fd7636e2fd113168542d  libstdc++-v3/testsuite/experimental/filesystem/operations/read_symlink.cc
! de6590a0c818a1a299514ab5e4c47712  libstdc++-v3/testsuite/experimental/filesystem/operations/remove.cc
! 350a4f286d648ae39bd1547bd94d32c5  libstdc++-v3/testsuite/experimental/filesystem/operations/remove_all.cc
! 0ae6cf05a1907c284964caacba61f251  libstdc++-v3/testsuite/experimental/filesystem/operations/status.cc
! 23e705f6a6166b60be1ff9d7a46c032c  libstdc++-v3/testsuite/experimental/filesystem/operations/temp_directory_path.cc
! 36e2f4d37c747afdda2c8e0a5bdc5243  libstdc++-v3/testsuite/experimental/filesystem/path/append/path.cc
! c85814e6fe2c3e8b70f23c2482aa523f  libstdc++-v3/testsuite/experimental/filesystem/path/assign/assign.cc
! c57b09c31fc9887715d7b3804f60f2fb  libstdc++-v3/testsuite/experimental/filesystem/path/assign/copy.cc
! ec5104c53cae8714ade74fd2e5fa82c7  libstdc++-v3/testsuite/experimental/filesystem/path/compare/compare.cc
! 733c58e9ea420cd35f9b04cb2bbd7987  libstdc++-v3/testsuite/experimental/filesystem/path/compare/path.cc
! 49e3dda894fdfa1da5931b2b62d11146  libstdc++-v3/testsuite/experimental/filesystem/path/compare/strings.cc
! e3f148f8535035b62c1639c8b5f195d2  libstdc++-v3/testsuite/experimental/filesystem/path/concat/path.cc
! 9555406ac3519179fd10ed320229d613  libstdc++-v3/testsuite/experimental/filesystem/path/concat/strings.cc
! e28b874a136da3935a91b573c0035b9d  libstdc++-v3/testsuite/experimental/filesystem/path/construct/copy.cc
! 6b68d43f6c649f3f42a9408b0cf25b48  libstdc++-v3/testsuite/experimental/filesystem/path/construct/default.cc
! 08b28fe5e34d71b699d90e1f76a77718  libstdc++-v3/testsuite/experimental/filesystem/path/construct/locale.cc
! d2c0ce1108dcf9a08da751bb97d8aed3  libstdc++-v3/testsuite/experimental/filesystem/path/construct/range.cc
! c556e4c8bd77aa6ccb472d024ecb3169  libstdc++-v3/testsuite/experimental/filesystem/path/construct/string_view.cc
! aac993a6dc80324b368b6b8117b2eadb  libstdc++-v3/testsuite/experimental/filesystem/path/decompose/extension.cc
! b420694c2c08c68f652a7ba059e50f1b  libstdc++-v3/testsuite/experimental/filesystem/path/decompose/filename.cc
! 85f861e8d963ecfeab78590150195f1d  libstdc++-v3/testsuite/experimental/filesystem/path/decompose/parent_path.cc
! 757c4cf2c5ed16d17dbba2c4ca5a0dab  libstdc++-v3/testsuite/experimental/filesystem/path/decompose/relative_path.cc
! e1db3c500f0dd1eda9ca2b64bc12f529  libstdc++-v3/testsuite/experimental/filesystem/path/decompose/root_directory.cc
! e5f2babb17bdc3fe9553a44cf480b262  libstdc++-v3/testsuite/experimental/filesystem/path/decompose/root_name.cc
! d8bd19a69ac46233dca85227324235a0  libstdc++-v3/testsuite/experimental/filesystem/path/decompose/root_path.cc
! 766350edca305b5950d7d7ae36193793  libstdc++-v3/testsuite/experimental/filesystem/path/decompose/stem.cc
! b06d5fe65073ed54111f9fb8b1d5130e  libstdc++-v3/testsuite/experimental/filesystem/path/generic/generic_string.cc
! 531c17cfabfb35aeec57c63caafba9f0  libstdc++-v3/testsuite/experimental/filesystem/path/itr/traversal.cc
! a6bd500f4b62d99029f7eb60223f8aa9  libstdc++-v3/testsuite/experimental/filesystem/path/modifiers/clear.cc
! 0dfb19dc8a845fc954d669b3c0321b83  libstdc++-v3/testsuite/experimental/filesystem/path/modifiers/make_preferred.cc
! a27cbc522ce2f542e7069cf201d60512  libstdc++-v3/testsuite/experimental/filesystem/path/modifiers/remove_filename.cc
! ca363844ae4b5ec9bb840e538ec4c053  libstdc++-v3/testsuite/experimental/filesystem/path/modifiers/replace_extension.cc
! 1779535df148ae14716f3ffbab10ef34  libstdc++-v3/testsuite/experimental/filesystem/path/modifiers/replace_filename.cc
! 18f704a65246b668bc5c7c43c79cf3dc  libstdc++-v3/testsuite/experimental/filesystem/path/modifiers/swap.cc
! af36c04dddaf490486070116921d31a8  libstdc++-v3/testsuite/experimental/filesystem/path/native/string.cc
! 6a012cc5a3cddaa3f4e3fae7aba7f56a  libstdc++-v3/testsuite/experimental/filesystem/path/nonmember/hash_value.cc
! fa95d2ba5ab3bb01527d88acc9a2e2bf  libstdc++-v3/testsuite/experimental/filesystem/path/query/empty.cc
! 0ae7f42538b613c49b13826fd4dca969  libstdc++-v3/testsuite/experimental/filesystem/path/query/has_extension.cc
! f9741b7f4a96c5fed92f255609ee94db  libstdc++-v3/testsuite/experimental/filesystem/path/query/has_filename.cc
! 2f5f32545119ebfd8636c9a74aa94fed  libstdc++-v3/testsuite/experimental/filesystem/path/query/has_parent_path.cc
! f956c9cb9b44c4351a5e610f7deadd31  libstdc++-v3/testsuite/experimental/filesystem/path/query/has_relative_path.cc
! ce98a53526b442ecc806027e39313171  libstdc++-v3/testsuite/experimental/filesystem/path/query/has_root_directory.cc
! 983e087f12e314b01bacf6e0302970fb  libstdc++-v3/testsuite/experimental/filesystem/path/query/has_root_name.cc
! 9019d46458c4a20e749571ed3a22d41d  libstdc++-v3/testsuite/experimental/filesystem/path/query/has_root_path.cc
! ad9dff193c52648d8f082e41e398960e  libstdc++-v3/testsuite/experimental/filesystem/path/query/has_stem.cc
! 193152a946d278127d9a9d7baad6ab75  libstdc++-v3/testsuite/experimental/filesystem/path/query/is_relative.cc
! 5a4273d7e696fc69698c425b4f673c45  libstdc++-v3/testsuite/experimental/forward_list/erasure.cc
! 52658249bf619aaf14682ccc617314f2  libstdc++-v3/testsuite/experimental/functional/not_fn.cc
! 9a829e2a75d5c4e5232e26da6d9222b9  libstdc++-v3/testsuite/experimental/functional/searchers.cc
! 5fa10ec70fdc2122de62d4a4a3b6d22e  libstdc++-v3/testsuite/experimental/functional/value.cc
! 5bcd161fec5bf32199885cdc0493a00d  libstdc++-v3/testsuite/experimental/iterator/make_ostream_joiner.cc
! 3840c969e1d9337f1efb6dc362016fce  libstdc++-v3/testsuite/experimental/iterator/ostream_joiner.cc
! 4cfe8ae6ecc91399cbbc7269cdb3ee36  libstdc++-v3/testsuite/experimental/iterator/requirements.cc
! e33578ac862ded72b4e64832d334a9df  libstdc++-v3/testsuite/experimental/list/erasure.cc
! e8d992c9ea3d54b7f569bc56d0084f8d  libstdc++-v3/testsuite/experimental/map/erasure.cc
! aaf62db51c118f77a6ca0d2abd74bee4  libstdc++-v3/testsuite/experimental/memory/observer_ptr/assignment/assign.cc
! 62b91c390c98000b1ce832fa73cfb8e1  libstdc++-v3/testsuite/experimental/memory/observer_ptr/cons/cons.cc
! d90baa50d96668a2c9eec6fb2ffab19d  libstdc++-v3/testsuite/experimental/memory/observer_ptr/hash/hash.cc
! 79ace13f4ff54d5ef42903882e1482b9  libstdc++-v3/testsuite/experimental/memory/observer_ptr/make_observer.cc
! cb61d6ce0c40c2c1d4a816c9c9c558ef  libstdc++-v3/testsuite/experimental/memory/observer_ptr/relops/relops.cc
! 6f39d28c8373780aae5f6505b3b4c88a  libstdc++-v3/testsuite/experimental/memory/observer_ptr/requirements.cc
! 9f8aefac65ea52c6de33657e3b9039db  libstdc++-v3/testsuite/experimental/memory/observer_ptr/swap/swap.cc
! 7522a9cdf4e7581d84966d6101ca45bc  libstdc++-v3/testsuite/experimental/memory/observer_ptr/typedefs.cc
! afb4da1ccc1ef273c01026656229d2cb  libstdc++-v3/testsuite/experimental/memory/shared_ptr/assign/assign.cc
! c19479f21f3f1981da54b5df868f1384  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cast/cast.cc
! 963d3b0654fed80cde3ddffdcc8f7cec  libstdc++-v3/testsuite/experimental/memory/shared_ptr/comparison/comparison.cc
! f85eda80061357d589bbb06aaf66f744  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/alias_ctor.cc
! b67c256b6793353fde46bca4811e9e73  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/alloc_ctor.cc
! 47806e0557355916eb857a06400e2fb1  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/copy_ctor.cc
! 8d764797661a084a19b88bd46b29f69b  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/copy_ctor_neg.cc
! eaaedf757bbec97b13c4ed5b390a41f3  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/default_ctor.cc
! d8b79cf3b2edcbe3d3a9c95cc2f68965  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/enable_shared_from_this.cc
! 2e84db6fb7c56e51a58e0e585ef46fb1  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/move_ctor.cc
! 0a720ef1785a5f5836f80a8c38d09df4  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/pointer_ctor.cc
! a992771204673abb5dff8d7abb429c69  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/pointer_ctor_neg.cc
! a5ee42396a21c56bd43d71e066102a22  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/torture.cc
! a30d73ab1dfcbbce7cd87021d909d3e8  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/unique_ptr_ctor.cc
! 2423fcd5433567d6bbf349773665bba1  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/weak_ptr_ctor.cc
! b1e36d0b8978563862323b66274ee07a  libstdc++-v3/testsuite/experimental/memory/shared_ptr/dest/dest.cc
! 7ce76b1c99550a29f9fb4864780f8cb1  libstdc++-v3/testsuite/experimental/memory/shared_ptr/modifiers/reset.cc
! 29ea0bad873b5f58ddadbf6c516a4624  libstdc++-v3/testsuite/experimental/memory/shared_ptr/modifiers/reset_neg.cc
! ae01caae638de50d93b5c8f93a32c234  libstdc++-v3/testsuite/experimental/memory/shared_ptr/modifiers/swap.cc
! 93f1ca18503bccd6289980d8e57cf019  libstdc++-v3/testsuite/experimental/memory/shared_ptr/observers/bool_conv.cc
! fe47aca3e15f093987fec519769f4ac5  libstdc++-v3/testsuite/experimental/memory/shared_ptr/observers/operators.cc
! 194d90c1fc219982f7a8eccf8f22554b  libstdc++-v3/testsuite/experimental/memory/shared_ptr/observers/owner_before.cc
! dee2e931e406bed949129ff75a17d49a  libstdc++-v3/testsuite/experimental/memory/shared_ptr/observers/use_count.cc
! 77bddd73daedd34fbd544fa6a648b844  libstdc++-v3/testsuite/experimental/memory_resource/1.cc
! 3564c40a83ece37ec52b71a08c5ae5b2  libstdc++-v3/testsuite/experimental/memory_resource/null_memory_resource.cc
! 70a02fc665a26f4c82c3cb211fd64842  libstdc++-v3/testsuite/experimental/memory_resource/resource_adaptor.cc
! 18d50bdf4289aeb0bf6a31bc4490409a  libstdc++-v3/testsuite/experimental/numeric/77801.cc
! 32554723afd983b142c1b230427e232a  libstdc++-v3/testsuite/experimental/numeric/gcd.cc
! 83ce73e66b7920c0ffc5f8984e56d028  libstdc++-v3/testsuite/experimental/numeric/lcm.cc
! 068db5d3fc11a9960e614aef274fe0be  libstdc++-v3/testsuite/experimental/optional/77288.cc
! 17f3cb0d0a38f134ad6820c697df5f18  libstdc++-v3/testsuite/experimental/optional/assignment/1.cc
! 0246c7c49b9cbfc91c80647efea07b9e  libstdc++-v3/testsuite/experimental/optional/assignment/2.cc
! 1b3858a0c3ef37a4ffcb3a8e5901b8e2  libstdc++-v3/testsuite/experimental/optional/assignment/3.cc
! b13d61ded4b13b7456e0350f34c471e6  libstdc++-v3/testsuite/experimental/optional/assignment/4.cc
! e9cc2d2c4b08693886a9d0de268433ce  libstdc++-v3/testsuite/experimental/optional/assignment/5.cc
! 71a3aecaeb5671f8ea4733e42e92d3e3  libstdc++-v3/testsuite/experimental/optional/assignment/6.cc
! f18378a20459828aa896148a35b50a8b  libstdc++-v3/testsuite/experimental/optional/cons/77727.cc
! 6763ecb474e80ffdf0144462f8eeb08c  libstdc++-v3/testsuite/experimental/optional/cons/copy.cc
! 240c34cda4326fb70e9a626922209829  libstdc++-v3/testsuite/experimental/optional/cons/default.cc
! 4094ad82f39f119eac8d2970aa022d63  libstdc++-v3/testsuite/experimental/optional/cons/move.cc
! 963765800d821a1ac6b408c4b787bf21  libstdc++-v3/testsuite/experimental/optional/cons/value.cc
! 58cd5edacd2b2bf7edcbc9abe45ba791  libstdc++-v3/testsuite/experimental/optional/cons/value_neg.cc
! eff40185ca42b74ad73cc14f678a10ee  libstdc++-v3/testsuite/experimental/optional/constexpr/cons/default.cc
! a348da6a5b01801925969f1da49d33f4  libstdc++-v3/testsuite/experimental/optional/constexpr/cons/value.cc
! 4f0255d978797d47bd77629ff4d5d4ee  libstdc++-v3/testsuite/experimental/optional/constexpr/in_place.cc
! cd9c44165141fef96e3c39c5060c94b7  libstdc++-v3/testsuite/experimental/optional/constexpr/make_optional.cc
! cc4a2ca114052e83b3fe509198fd9828  libstdc++-v3/testsuite/experimental/optional/constexpr/nullopt.cc
! f233c65d86aaef3c1f212e9bf30acdf9  libstdc++-v3/testsuite/experimental/optional/constexpr/observers/1.cc
! 70d4ad49e4a7bd5be89bcd5cf610a59c  libstdc++-v3/testsuite/experimental/optional/constexpr/observers/2.cc
! 4c24575fecaea3fcab531542ae58d10c  libstdc++-v3/testsuite/experimental/optional/constexpr/observers/3.cc
! ba32452d18b0c1887e448b4d316ab69c  libstdc++-v3/testsuite/experimental/optional/constexpr/observers/4.cc
! 6b9717e7658565825d563d3a0ab373b1  libstdc++-v3/testsuite/experimental/optional/constexpr/observers/5.cc
! 34cb2a7474ecf526571799a7c6f31574  libstdc++-v3/testsuite/experimental/optional/constexpr/relops/1.cc
! e0378793886e2d51e94273638b2cfb7c  libstdc++-v3/testsuite/experimental/optional/constexpr/relops/2.cc
! 55d2f331776513cad22d3d2ecf37c899  libstdc++-v3/testsuite/experimental/optional/constexpr/relops/3.cc
! b179cba575680d547832349ff056677b  libstdc++-v3/testsuite/experimental/optional/constexpr/relops/4.cc
! 71af89c2ba4ae1485454ab8d6c97d7e4  libstdc++-v3/testsuite/experimental/optional/constexpr/relops/5.cc
! 8b152434b0568c3174a33f148aa6b8eb  libstdc++-v3/testsuite/experimental/optional/constexpr/relops/6.cc
! 88f2c7c2aec96679202e3fcd6dea6e33  libstdc++-v3/testsuite/experimental/optional/in_place.cc
! 93be3a4658b80c2fe5058cea0a936a9c  libstdc++-v3/testsuite/experimental/optional/make_optional.cc
! 7d313002f6e09a95f7cda6112b2d8402  libstdc++-v3/testsuite/experimental/optional/nullopt.cc
! dd38da6ebfc2e42a1946b4c9943753cf  libstdc++-v3/testsuite/experimental/optional/observers/1.cc
! ea8447313da517902369ef5880e67fa8  libstdc++-v3/testsuite/experimental/optional/observers/2.cc
! f8e7da9c83abcae30d616c93e4ee0390  libstdc++-v3/testsuite/experimental/optional/observers/3.cc
! 005dbcc87a86e800b6c69e83d37db285  libstdc++-v3/testsuite/experimental/optional/observers/4.cc
! 2c8b8a20f022f14a3ebf040cfc20a507  libstdc++-v3/testsuite/experimental/optional/observers/5.cc
! d809bae5216b98ca18b8dc1979ce9301  libstdc++-v3/testsuite/experimental/optional/relops/1.cc
! cec458ec7044d42aa65a00d5f787b025  libstdc++-v3/testsuite/experimental/optional/relops/2.cc
! f76db9b49cf73771c0b5d06e6f9aba39  libstdc++-v3/testsuite/experimental/optional/relops/3.cc
! 9a463aad167cc1d93052ccf1bd89e48b  libstdc++-v3/testsuite/experimental/optional/relops/4.cc
! 91f16a20b9bbfb17b99a039824ed799f  libstdc++-v3/testsuite/experimental/optional/relops/5.cc
! fcdf9c653edcd9158d3b8dc21543e549  libstdc++-v3/testsuite/experimental/optional/relops/6.cc
! 81783c7e610bd8976d7179ddb72de9e9  libstdc++-v3/testsuite/experimental/optional/requirements.cc
! 49bad1d733e932b88934a462a42423f6  libstdc++-v3/testsuite/experimental/optional/swap/1.cc
! ab4abf88d0bc4989f2078188641d20aa  libstdc++-v3/testsuite/experimental/optional/typedefs.cc
! b5756990baaba1f499d6c4a5fc408c9b  libstdc++-v3/testsuite/experimental/propagate_const/assignment/copy.cc
! 313488dff076dad013af9b7961e05da7  libstdc++-v3/testsuite/experimental/propagate_const/assignment/move.cc
! 9b116490bd55bef90b38fdc4144ef1e4  libstdc++-v3/testsuite/experimental/propagate_const/assignment/move_neg.cc
! 8c64b49afabcad349c9fb0273eceb615  libstdc++-v3/testsuite/experimental/propagate_const/cons/copy.cc
! 24ed4b59f6b2fe5d0a6f75c9e4eb1f8e  libstdc++-v3/testsuite/experimental/propagate_const/cons/default.cc
! 9553e34b9d759cac25fe20a019ea2218  libstdc++-v3/testsuite/experimental/propagate_const/cons/move.cc
! cdda56a68f81052c52c20109da0178eb  libstdc++-v3/testsuite/experimental/propagate_const/cons/move_neg.cc
! 740c4598c59183699f37ce71fb967cd3  libstdc++-v3/testsuite/experimental/propagate_const/hash/1.cc
! 0198f868688efa4d7b41d5e642dfd803  libstdc++-v3/testsuite/experimental/propagate_const/observers/1.cc
! 57edd7417a0b50cb3e439f425985ac31  libstdc++-v3/testsuite/experimental/propagate_const/relops/1.cc
! dd3e6dddcaa6e7daa2ac938cddc869ef  libstdc++-v3/testsuite/experimental/propagate_const/requirements1.cc
! c0c60947bb711b6ab029644c0407c12f  libstdc++-v3/testsuite/experimental/propagate_const/requirements2.cc
! 946caaede46a23ac42c15db5b790b35f  libstdc++-v3/testsuite/experimental/propagate_const/requirements3.cc
! 7d9148556e630785a32156b9f7f9c6d5  libstdc++-v3/testsuite/experimental/propagate_const/requirements4.cc
! afbc070d23c33b4199eed8478500ce33  libstdc++-v3/testsuite/experimental/propagate_const/requirements5.cc
! 83ef21d5484c652a353e332b29811875  libstdc++-v3/testsuite/experimental/propagate_const/swap/1.cc
! a3398b6ccc395e479b3dbdeed3a0a5a1  libstdc++-v3/testsuite/experimental/propagate_const/typedefs.cc
! bfc75b2de4342feb7a98eb95d111986e  libstdc++-v3/testsuite/experimental/random/randint.cc
! 345d9d07447182df5803c4e48c8d657b  libstdc++-v3/testsuite/experimental/ratio/value.cc
! 978bfe5b5f72cedc703ed2099f735084  libstdc++-v3/testsuite/experimental/set/erasure.cc
! eb19841b3a4c9b6d9b42542b31e5d0c4  libstdc++-v3/testsuite/experimental/source_location/1.cc
! cb76d8411d2f8cbdf4904cee1eca3f0b  libstdc++-v3/testsuite/experimental/string/erasure.cc
! 814a3e59918c32e700d2e7fe955e97eb  libstdc++-v3/testsuite/experimental/string_view/capacity/1.cc
! 4628063e0af3a00bb03296af2de1a8af  libstdc++-v3/testsuite/experimental/string_view/cons/char/1.cc
! 244fbc87daa3e00e9117ed14f4ffc66a  libstdc++-v3/testsuite/experimental/string_view/cons/char/2.cc
! adcfe9bc894c2b8d7777c1085c9e5c6b  libstdc++-v3/testsuite/experimental/string_view/cons/char/3.cc
! 2eec52eb2940ceb631ca6c820d627395  libstdc++-v3/testsuite/experimental/string_view/cons/wchar_t/1.cc
! fe8fed1ed6d325ebac9bfbb198618277  libstdc++-v3/testsuite/experimental/string_view/cons/wchar_t/2.cc
! 924f52f1ac3afca5b62bb68524a9e7bf  libstdc++-v3/testsuite/experimental/string_view/cons/wchar_t/3.cc
! b230fce5a9d8e048b8c3171f185ed642  libstdc++-v3/testsuite/experimental/string_view/element_access/char/1.cc
! 7fda4e77200ecf0fd5a9c0583d508dc8  libstdc++-v3/testsuite/experimental/string_view/element_access/char/2.cc
  c06d1339c147e7ac0a26df2387064dec  libstdc++-v3/testsuite/experimental/string_view/element_access/char/empty.cc
! a124e95a2950ae11da50d85112cb76f1  libstdc++-v3/testsuite/experimental/string_view/element_access/char/front_back.cc
! 9def2b2aa636cc98c661559046b6b5fa  libstdc++-v3/testsuite/experimental/string_view/element_access/wchar_t/1.cc
! 9a39cc9dc047839ddc8cec2789672a67  libstdc++-v3/testsuite/experimental/string_view/element_access/wchar_t/2.cc
! eb2aa2b3303ad0e0c1d216dd2275a51f  libstdc++-v3/testsuite/experimental/string_view/element_access/wchar_t/empty.cc
! 8d8a727afe0f4b699f72c9cbc5729e91  libstdc++-v3/testsuite/experimental/string_view/element_access/wchar_t/front_back.cc
! 61f3517136dbe40088d2e6347ef5a16f  libstdc++-v3/testsuite/experimental/string_view/include.cc
! 0dc32bf1de05c6e22c7c762c10881f94  libstdc++-v3/testsuite/experimental/string_view/inserters/char/1.cc
! e389c0766301c89277cdebbf24ba870d  libstdc++-v3/testsuite/experimental/string_view/inserters/char/2.cc
! 10b65d29e96d788677b60090195f44f6  libstdc++-v3/testsuite/experimental/string_view/inserters/char/3.cc
! d35aee0cadd4edfc29ef8bf2d287f422  libstdc++-v3/testsuite/experimental/string_view/inserters/pod/10081-out.cc
! 078be0c61ce8c0cc88aef231c04aa645  libstdc++-v3/testsuite/experimental/string_view/inserters/wchar_t/1.cc
! ce0fb4d95efecaa3f3767d0506b126e3  libstdc++-v3/testsuite/experimental/string_view/inserters/wchar_t/2.cc
! 9b04024f89283dd3821be323f4bf07dd  libstdc++-v3/testsuite/experimental/string_view/inserters/wchar_t/3.cc
! a7f5f8e00170bc6b7e8bd494d6b7575e  libstdc++-v3/testsuite/experimental/string_view/literals/types.cc
! b60410c46990a4d952967a9dce101e94  libstdc++-v3/testsuite/experimental/string_view/literals/values.cc
! 419c3785c6e8edade3394169038fa848  libstdc++-v3/testsuite/experimental/string_view/modifiers/remove_prefix/char/1.cc
! 92f8408fd4a60a6e882670ad1e0fac72  libstdc++-v3/testsuite/experimental/string_view/modifiers/remove_prefix/wchar_t/1.cc
! 1b2eb6a4c76e8c5e189ac474ac61e9b8  libstdc++-v3/testsuite/experimental/string_view/modifiers/remove_suffix/char/1.cc
! 62c27d0b86f5d82e88bc3568ff6ec4c3  libstdc++-v3/testsuite/experimental/string_view/modifiers/remove_suffix/wchar_t/1.cc
! 6620ec1a70e4fe9d805a609ae06c5876  libstdc++-v3/testsuite/experimental/string_view/operations/compare/char/1.cc
! 658992505ff3f3aa76e5b2fe4a1059ce  libstdc++-v3/testsuite/experimental/string_view/operations/compare/char/13650.cc
! 9c61442de9020cd467ff137ec37d301c  libstdc++-v3/testsuite/experimental/string_view/operations/compare/char/70483.cc
! 97d6268417a93d34d6ee9192093ee2ec  libstdc++-v3/testsuite/experimental/string_view/operations/compare/wchar_t/1.cc
! d723237e09d41cfdc2cb64f10625661f  libstdc++-v3/testsuite/experimental/string_view/operations/compare/wchar_t/13650.cc
! 0ae7ca9e38117938e1525605b493da69  libstdc++-v3/testsuite/experimental/string_view/operations/copy/char/1.cc
! f8d40b6a0db2416d90cd3df5464b0424  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
! 7062f2135130039deb26389a5a85a14a  libstdc++-v3/testsuite/experimental/string_view/operations/find/char/1.cc
! c59b004add9ec54b1ff4638801de60d8  libstdc++-v3/testsuite/experimental/string_view/operations/find/char/2.cc
! 3d75acd21c48b3963129c4bbc1d5ca8b  libstdc++-v3/testsuite/experimental/string_view/operations/find/char/3.cc
! 1f0ed6e1448c917456082f56faab969a  libstdc++-v3/testsuite/experimental/string_view/operations/find/char/4.cc
! 7ba2f97070b23cce859914b2e2b66103  libstdc++-v3/testsuite/experimental/string_view/operations/find/wchar_t/1.cc
! 737c5288ecbf14343b48cdedbc215141  libstdc++-v3/testsuite/experimental/string_view/operations/find/wchar_t/2.cc
! f6713d0cc80445ef4911909adefaa0ad  libstdc++-v3/testsuite/experimental/string_view/operations/find/wchar_t/3.cc
! 493319247434e4570c96dd225c82792f  libstdc++-v3/testsuite/experimental/string_view/operations/find/wchar_t/4.cc
! 644e8900deaf5cd86f05baa4949e2bda  libstdc++-v3/testsuite/experimental/string_view/operations/rfind/char/1.cc
! 8f3b9ffbef07be8d1e0065bc5f2f4eee  libstdc++-v3/testsuite/experimental/string_view/operations/rfind/char/2.cc
! ce90d21284ceaac234bcf9bf84a38e49  libstdc++-v3/testsuite/experimental/string_view/operations/rfind/char/3.cc
! 820e0b363c807fc33a6ec58090f72912  libstdc++-v3/testsuite/experimental/string_view/operations/rfind/wchar_t/1.cc
! e97b0b50b4e7b2ba5654409c0c3b0006  libstdc++-v3/testsuite/experimental/string_view/operations/rfind/wchar_t/2.cc
! ec21f73d080d2cca441f127a6f5e815c  libstdc++-v3/testsuite/experimental/string_view/operations/rfind/wchar_t/3.cc
! c8c6065d3938fac0bcc3700aa39e47c2  libstdc++-v3/testsuite/experimental/string_view/operations/substr/char/1.cc
! 7c8db62aa9ea2c8c32e1938390c69d62  libstdc++-v3/testsuite/experimental/string_view/operations/substr/wchar_t/1.cc
! 07c475aaaf7bf9f21d51d250936007a0  libstdc++-v3/testsuite/experimental/string_view/operations/to_string/1.cc
! cd7675279f780a6fbb187b8f14d9bf48  libstdc++-v3/testsuite/experimental/string_view/operators/char/2.cc
! 09ae6fadb7db7f628635e8d3d3591680  libstdc++-v3/testsuite/experimental/string_view/operators/wchar_t/2.cc
! 9e7b4dd7987f32d8d857bcf1819aece7  libstdc++-v3/testsuite/experimental/string_view/range_access/char/1.cc
! 376e993667184285552b992eeea529c1  libstdc++-v3/testsuite/experimental/string_view/range_access/wchar_t/1.cc
! c766fb7f0f559e45937de7e45c97be97  libstdc++-v3/testsuite/experimental/string_view/requirements/explicit_instantiation/1.cc
! a07c2f981cf723e5c1e23166e77c7a99  libstdc++-v3/testsuite/experimental/string_view/requirements/explicit_instantiation/char/1.cc
! 3c233cae0049ba9f4a0669d485e2d362  libstdc++-v3/testsuite/experimental/string_view/requirements/explicit_instantiation/char16_t/1.cc
! 1d1dd7ecde1eb14b57cb88fb387d23ad  libstdc++-v3/testsuite/experimental/string_view/requirements/explicit_instantiation/char32_t/1.cc
! 44846735e495ff709a308809fc0cb9a3  libstdc++-v3/testsuite/experimental/string_view/requirements/explicit_instantiation/wchar_t/1.cc
! 05da1d011dcb5ba1b9dfdaca87a6a850  libstdc++-v3/testsuite/experimental/string_view/requirements/typedefs.cc
! 0284004a1425c5971e8cc93ff11d52d1  libstdc++-v3/testsuite/experimental/string_view/typedefs.cc
! bf19d777c03b9b3ec1068a6b74e37946  libstdc++-v3/testsuite/experimental/string_view/types/1.cc
! c4683fc0a34c9b1e7057840176b1747d  libstdc++-v3/testsuite/experimental/system_error/value.cc
! e9d5c8118e6fcff8aa3b0671b4114276  libstdc++-v3/testsuite/experimental/tuple/apply.cc
! 6ec1e37bccec8ddaa0ae45807271b135  libstdc++-v3/testsuite/experimental/tuple/tuple_size.cc
! f73bb7e61bd1325483d2537f4c010909  libstdc++-v3/testsuite/experimental/type_erased_allocator/2.cc
! fba6afdfefea98a31d6c427b6b43cefb  libstdc++-v3/testsuite/experimental/type_erased_allocator/uses_allocator.cc
! e835426e79e5b4b2937027740031b45e  libstdc++-v3/testsuite/experimental/type_traits/detection.cc
! 852dc73c95233b57b5a3a2b1f9db81e8  libstdc++-v3/testsuite/experimental/type_traits/value.cc
! 513f8777fa90f72e28d9987604d38d91  libstdc++-v3/testsuite/experimental/unordered_map/erasure.cc
! a96cf9bc92e832f97d940b7259269e99  libstdc++-v3/testsuite/experimental/unordered_set/erasure.cc
! c461ff7763fff369f479058a7bb1633c  libstdc++-v3/testsuite/experimental/vector/erasure.cc
! 2909ab9f776498ac7af4d84926b12f2b  libstdc++-v3/testsuite/ext/array_allocator/1.cc
! 0c6f642d54f11791b7c21656026264a4  libstdc++-v3/testsuite/ext/array_allocator/2.cc
! 718a1bcf8a6b9145f9d7343d83ad4c5d  libstdc++-v3/testsuite/ext/array_allocator/26875.cc
! 712ba0a814af0f69a422a5c1755decf2  libstdc++-v3/testsuite/ext/array_allocator/3.cc
! 09ed69818efca60513c1c38abb22a419  libstdc++-v3/testsuite/ext/array_allocator/check_allocate_max_size.cc
! 899ff6dbe1f7403f1029fc6b825e473e  libstdc++-v3/testsuite/ext/array_allocator/check_deallocate_null.cc
! 5131a9740fe39f3bf4a9e5e5af0abced  libstdc++-v3/testsuite/ext/array_allocator/check_delete.cc
! c732d0e0af2846b3c6124ed362c19ef4  libstdc++-v3/testsuite/ext/array_allocator/check_new.cc
! baa5428da5889bd5128946412fb6cdff  libstdc++-v3/testsuite/ext/array_allocator/variadic_construct.cc
! 6baae4e1cc8b90a2abb7fb01883b764c  libstdc++-v3/testsuite/ext/bitmap_allocator/check_allocate_max_size.cc
! ac23ba5790168c439d879113bcce7971  libstdc++-v3/testsuite/ext/bitmap_allocator/check_deallocate_null.cc
! 1bab588016f7981143194044a994f6d6  libstdc++-v3/testsuite/ext/bitmap_allocator/check_delete.cc
! 9460d5a7f8693a1b46602b159b430444  libstdc++-v3/testsuite/ext/bitmap_allocator/check_new.cc
! 808c63bfb446c9f369da0bdbe35aaf2f  libstdc++-v3/testsuite/ext/bitmap_allocator/overaligned.cc
! 0991aa45ba8d6836b6c1db668fa25884  libstdc++-v3/testsuite/ext/bitmap_allocator/variadic_construct.cc
! 13bb13295af928ef29bf4b73a3297e92  libstdc++-v3/testsuite/ext/codecvt/1.cc
! a633e28ad4e93097db28140c511d03e8  libstdc++-v3/testsuite/ext/codecvt/char-1.cc
! d9b7c77f6cda592cc25fcae961616932  libstdc++-v3/testsuite/ext/codecvt/char-2.cc
! 2aa7c22c59b77ed419e7a16dd76b3cd1  libstdc++-v3/testsuite/ext/codecvt/wchar_t.cc
! d7a5f94a28954b19e3f94f01af075557  libstdc++-v3/testsuite/ext/concept_checks.cc
! 0d3b0c8150f8b3e77b06f0a850d8e03a  libstdc++-v3/testsuite/ext/concurrence_lock_error/cons_virtual_derivation.cc
! d09d32611a5737536a4e25915fa95b9e  libstdc++-v3/testsuite/ext/concurrence_unlock_error/cons_virtual_derivation.cc
! 8b636c11704a77e2710d46cea2f36ccf  libstdc++-v3/testsuite/ext/debug_allocator/56170.cc
! 5be87da7b7cc94e3b97917e5cf6ba8fd  libstdc++-v3/testsuite/ext/debug_allocator/check_deallocate_null.cc
! 371b679f7a7b41bae46daa106a20802a  libstdc++-v3/testsuite/ext/debug_allocator/check_delete.cc
! cc8cc6e3d547d74a156ee9d7e60be401  libstdc++-v3/testsuite/ext/debug_allocator/check_new.cc
! a9fd70b4770622b164c7b5c8436a9f1c  libstdc++-v3/testsuite/ext/debug_allocator/explicit_instantiation.cc
! b1cdcb27de20281661791bc75a1d8147  libstdc++-v3/testsuite/ext/enc_filebuf/char/13189.cc
! 6cfe8f98bbde8dc9a0f0591e2768aced  libstdc++-v3/testsuite/ext/enc_filebuf/char/13598.cc
! 3ddfae86eafddf1abdb4b718a489c8cd  libstdc++-v3/testsuite/ext/enc_filebuf/wchar_t/13189.cc
! d703d0c0b63285f1dc90d11de1de74ff  libstdc++-v3/testsuite/ext/ext_pointer/1.cc
! 3269f0cf359001cb58d4111ee945bb2f  libstdc++-v3/testsuite/ext/ext_pointer/1_neg.cc
! a2d73b1b62cd41fac6231ace5914ed04  libstdc++-v3/testsuite/ext/forced_error/cons_virtual_derivation.cc
! c16dec2eb320fd6d911538d25eb34316  libstdc++-v3/testsuite/ext/headers.cc
! b7ca3cd9429d77203d8c003920fafed4  libstdc++-v3/testsuite/ext/iota/cxx0x.cc
! 74591796bed2a8d2102bf69a2a497244  libstdc++-v3/testsuite/ext/is_heap/1.cc
! 9892525525d16d105b3852346370e322  libstdc++-v3/testsuite/ext/is_heap/47709.cc
! 5c2f1d37ebc700c438ce183eceee2212  libstdc++-v3/testsuite/ext/is_heap/check_type.cc
! 320cfe7777e7fd9be437955297706b86  libstdc++-v3/testsuite/ext/is_sorted/cxx0x.cc
! 0c1a547bf11f888bf86038bb7bfe67fb  libstdc++-v3/testsuite/ext/malloc_allocator/check_allocate_max_size.cc
! bb459cfc5c6b2a383a485469386c70be  libstdc++-v3/testsuite/ext/malloc_allocator/check_deallocate_null.cc
! 7d7f00229336b8e7332f16458ed9cfd9  libstdc++-v3/testsuite/ext/malloc_allocator/check_delete.cc
! e967c73f957339ff7fbf43d58cdd4d7a  libstdc++-v3/testsuite/ext/malloc_allocator/check_new.cc
! 7fc7cc184bea680908cc749e30b4799b  libstdc++-v3/testsuite/ext/malloc_allocator/deallocate_global.cc
! 9a9063600dc5d9517fda10b97e716f3e  libstdc++-v3/testsuite/ext/malloc_allocator/deallocate_local.cc
! 0bcfc627ec0d2cfe5309fe63ffe9a8c2  libstdc++-v3/testsuite/ext/malloc_allocator/explicit_instantiation.cc
! a0e6d7ac044d512f8a85c2a02b6301fa  libstdc++-v3/testsuite/ext/malloc_allocator/overaligned.cc
! 5e7c85490f362735671c6543d2c4dc60  libstdc++-v3/testsuite/ext/malloc_allocator/sanity.cc
! f57a9059226a28e2bd03d31334bfd7fd  libstdc++-v3/testsuite/ext/malloc_allocator/variadic_construct.cc
! cc40e8dbe7f962f34c79d77784bcb763  libstdc++-v3/testsuite/ext/median.cc
! 8bac89092c4bca696ff625f170300465  libstdc++-v3/testsuite/ext/mt_allocator/22309_thread.cc
! 37086135fcc210832f3d942ecf01cac4  libstdc++-v3/testsuite/ext/mt_allocator/check_allocate_big_per_type.cc
! 8b55f8d71bee1a8600efcfcca2df6e48  libstdc++-v3/testsuite/ext/mt_allocator/check_allocate_max_size.cc
! e2ae2d9db56e5bc11322c8b64c0fbd71  libstdc++-v3/testsuite/ext/mt_allocator/check_deallocate_null.cc
! 4293102669772ee686460fcc009766f4  libstdc++-v3/testsuite/ext/mt_allocator/check_deallocate_null_thread.cc
! 6ef2bc492627fdbf3cda1454af008548  libstdc++-v3/testsuite/ext/mt_allocator/check_delete.cc
! d4202789c655a50be2948abb887520c7  libstdc++-v3/testsuite/ext/mt_allocator/check_new.cc
! 3859581f92701300000f0232bf2db991  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_global-2.cc
! 2808bc2e77530d7ce92b361d20d7d9ba  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_global-4.cc
! c4121ad065d032c9ca224553d3bc53e7  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_global_thread-1.cc
! 2b7bc31498002ddd7ddad18ffe6c0bc2  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_global_thread-3.cc
! 8ca193703f8941b193ed86d4a796998b  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local-2.cc
! f2273326353475a81fca6735ed4af96f  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local-4.cc
! d6bccfb5f61d2a2da23d92ebc79cfe32  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local-6.cc
! cc99ba662897527d5a5d76b1c86f0393  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local-8.cc
! 1d158e3c13a71b14a37b9bdc6bc925d2  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local_thread-1.cc
! 2cbb5d9cc88ab90b2a91dab22b481063  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local_thread-3.cc
! 9bddbd0f89743e5124f207b457080f52  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local_thread-5.cc
! 1a77c11880c922ff81bf7ae7f7973f84  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local_thread-7.cc
! 0555ed3423267e676448ceb4e7194171  libstdc++-v3/testsuite/ext/mt_allocator/explicit_instantiation.cc
! f000c04256cdd4db03fb78657b3da1d8  libstdc++-v3/testsuite/ext/mt_allocator/overaligned.cc
! 6d73d59e58101d86040c94a0341f2b31  libstdc++-v3/testsuite/ext/mt_allocator/tune-1.cc
! 7cce4750acc57a98c8625a35a787a942  libstdc++-v3/testsuite/ext/mt_allocator/tune-2.cc
! 8869cca8f61df8e233302d0b6f2406a2  libstdc++-v3/testsuite/ext/mt_allocator/tune-3.cc
! c342336c7ce033082d4aaae968ed2ace  libstdc++-v3/testsuite/ext/mt_allocator/tune-4.cc
! aebee8dae7e87fd18013174feb3a51a8  libstdc++-v3/testsuite/ext/mt_allocator/variadic_construct.cc
! 9a5799c21b86c362c2c40b4498e7ce3e  libstdc++-v3/testsuite/ext/new_allocator/check_allocate_max_size.cc
! a07d71ef735dba7c9eacb8d5ec40b9ad  libstdc++-v3/testsuite/ext/new_allocator/check_deallocate_null.cc
! e4ad2745000ae0c98db3036ae19a6b4b  libstdc++-v3/testsuite/ext/new_allocator/check_delete.cc
! 08bbf6547892a9ad3dc9788ef6c125a3  libstdc++-v3/testsuite/ext/new_allocator/check_new.cc
! 34932837e770086ff760a764f18fb6f7  libstdc++-v3/testsuite/ext/new_allocator/deallocate_global.cc
! d080008097a87ee2c0a8e3ea375b23ad  libstdc++-v3/testsuite/ext/new_allocator/deallocate_local.cc
! 1820059948e62d99fdfddd57a6072a00  libstdc++-v3/testsuite/ext/new_allocator/instantiate.cc
! 36cf04155a82a057979ffdb892a91fea  libstdc++-v3/testsuite/ext/new_allocator/overaligned.cc
! 1426628d26802b222132ba678076bfd5  libstdc++-v3/testsuite/ext/new_allocator/variadic_construct.cc
! c3c72beaf64829f35130aac97caec58d  libstdc++-v3/testsuite/ext/numeric_traits/numeric_traits.cc
! 007cc57cd35f1194c35644c642b9d8df  libstdc++-v3/testsuite/ext/pb_ds/example/assoc_container_traits.cc
! e909c12c5ed1bde1ae33a63c452b568e  libstdc++-v3/testsuite/ext/pb_ds/example/basic_map.cc
! 53dcd8930eab4d118dc662bf8162b15e  libstdc++-v3/testsuite/ext/pb_ds/example/basic_multimap.cc
! e93a9eb79416e6fabe922ba843d59b11  libstdc++-v3/testsuite/ext/pb_ds/example/basic_multiset.cc
! e660f7c79942686074109abbd4dfdd81  libstdc++-v3/testsuite/ext/pb_ds/example/basic_priority_queue.cc
! 0b2a7a4cfc572e87e560399c29ff498b  libstdc++-v3/testsuite/ext/pb_ds/example/basic_set.cc
! 6298011d80d13eb0b9a44ef08abe9b59  libstdc++-v3/testsuite/ext/pb_ds/example/erase_if.cc
! f965830f82c3d41c4499c58c7d779f31  libstdc++-v3/testsuite/ext/pb_ds/example/hash_find_neg.cc
! c0083fb8090cb08a52000443b9e68400  libstdc++-v3/testsuite/ext/pb_ds/example/hash_illegal_resize.cc
! 9010b0156645f309983f91699c467ac2  libstdc++-v3/testsuite/ext/pb_ds/example/hash_initial_size.cc
! 2dc53915cc84d597f4468b0a41bf4fd1  libstdc++-v3/testsuite/ext/pb_ds/example/hash_load_set_change.cc
! f2e03679b617c5291c4175c9ff866cea  libstdc++-v3/testsuite/ext/pb_ds/example/hash_mod.cc
! 821fb7789afb733eb9a8e1bb133413a8  libstdc++-v3/testsuite/ext/pb_ds/example/hash_resize.cc
! 33aaaa07b762c1de180f664092a364f0  libstdc++-v3/testsuite/ext/pb_ds/example/hash_resize_neg.cc
! e054ad9710766b03174ad91ce77c2af1  libstdc++-v3/testsuite/ext/pb_ds/example/hash_shift_mask.cc
! 34bbae6b87adc29adb50841a46fabe41  libstdc++-v3/testsuite/ext/pb_ds/example/priority_queue_container_traits.cc
! 972d1ab51cb27aab71bbe08cc1735554  libstdc++-v3/testsuite/ext/pb_ds/example/priority_queue_dijkstra.cc
! 5ea802e68d4ba21c679d990f0741bb28  libstdc++-v3/testsuite/ext/pb_ds/example/priority_queue_erase_if.cc
! 7ad8bcce582ac28488de8f06688eba4a  libstdc++-v3/testsuite/ext/pb_ds/example/priority_queue_split_join.cc
! 0e62c62093b8534f1b93ec927e852c40  libstdc++-v3/testsuite/ext/pb_ds/example/priority_queue_xref.cc
! d7c01658c07c3aefbdef35651cd07865  libstdc++-v3/testsuite/ext/pb_ds/example/ranged_hash.cc
! 72a0abd074426c043680d3cf81554d8f  libstdc++-v3/testsuite/ext/pb_ds/example/store_hash.cc
! 4653745bd6c46918292241861b463ce1  libstdc++-v3/testsuite/ext/pb_ds/example/tree_intervals.cc
! 52b24038d12083e002153289c61ea931  libstdc++-v3/testsuite/ext/pb_ds/example/tree_join.cc
! 52b4a20f5d7abb4a623be2d240e40839  libstdc++-v3/testsuite/ext/pb_ds/example/tree_order_statistics.cc
! e86b20e78e0800d5b2d9c5cb89e4e44d  libstdc++-v3/testsuite/ext/pb_ds/example/tree_order_statistics_join.cc
! 21788682b68b67b6a3d2f38c95ac283c  libstdc++-v3/testsuite/ext/pb_ds/example/trie_dna.cc
! d5bc729cf4997f707a39ffaf581fd135  libstdc++-v3/testsuite/ext/pb_ds/example/trie_prefix_search.cc
! 7f4b8ced710a167d3747fd93f7b58d56  libstdc++-v3/testsuite/ext/pb_ds/example/trie_split.cc
! 41d3edc0e190cb13fbff7c72fc2a2b8a  libstdc++-v3/testsuite/ext/pb_ds/regression/associative_containers.cc
! 2477e3315f4959bed61e51d0302878fc  libstdc++-v3/testsuite/ext/pb_ds/regression/hash_map_rand.cc
! 3e8b5be7f69b6e839c0f031789bae97b  libstdc++-v3/testsuite/ext/pb_ds/regression/hash_map_rand_debug.cc
! 4b3e703e3cda6af52c3ea80f758a1587  libstdc++-v3/testsuite/ext/pb_ds/regression/hash_set_rand.cc
! d0e208f39c7b9d7e8130dbeb9a14c6b4  libstdc++-v3/testsuite/ext/pb_ds/regression/hash_set_rand_debug.cc
! 927693be9f9e5194137e63a472c71af2  libstdc++-v3/testsuite/ext/pb_ds/regression/list_update_map_rand.cc
! 7ecb17da9149584951555496a4c8a2fb  libstdc++-v3/testsuite/ext/pb_ds/regression/list_update_map_rand_debug.cc
! dfbf9bb1eed99f3366a514bf4e214e60  libstdc++-v3/testsuite/ext/pb_ds/regression/list_update_set_rand.cc
! c3361175f4b074e42c00e8cff55829f6  libstdc++-v3/testsuite/ext/pb_ds/regression/list_update_set_rand_debug.cc
! c61c2e5dc01e0d937a0a95598b7a47f3  libstdc++-v3/testsuite/ext/pb_ds/regression/priority_queue_binary_heap-62045.cc
! 96e8a80ce1936b9bf72ee58e0a097dc4  libstdc++-v3/testsuite/ext/pb_ds/regression/priority_queue_rand.cc
! 535eee9ff71593f0dba8e56c5a20d37b  libstdc++-v3/testsuite/ext/pb_ds/regression/priority_queue_rand_debug.cc
! 2eca8fac98dfbb312be8095d79e35503  libstdc++-v3/testsuite/ext/pb_ds/regression/priority_queues.cc
! 7fa2b5cdcd5f3e1bbc3e44348ec1eea1  libstdc++-v3/testsuite/ext/pb_ds/regression/tree_map_rand.cc
! c2410ba48ad4de4d9ef5a70c4a19b93c  libstdc++-v3/testsuite/ext/pb_ds/regression/tree_map_rand_debug.cc
! 6187f0c651efc1b9cae98b7c63833d5c  libstdc++-v3/testsuite/ext/pb_ds/regression/tree_set_rand.cc
! ec82f3fe3ee425896e8d7c31c10c9fc5  libstdc++-v3/testsuite/ext/pb_ds/regression/tree_set_rand_debug.cc
! 2572dc644983e44eb61a99b6a3d55072  libstdc++-v3/testsuite/ext/pb_ds/regression/trie_map_rand.cc
! d598b6e22767c73e6c8a127fd17d16d7  libstdc++-v3/testsuite/ext/pb_ds/regression/trie_map_rand_debug.cc
! 325669539fe5316dac4e9f9d51289a1b  libstdc++-v3/testsuite/ext/pb_ds/regression/trie_set_rand.cc
! c4bc6e7e966846af1e7ddc66870545a1  libstdc++-v3/testsuite/ext/pb_ds/regression/trie_set_rand_debug.cc
! b506c91acf21d7b46d85c42384a90a2c  libstdc++-v3/testsuite/ext/pod_char_traits.cc
! 9bb1e54b740acc65cea129ffa3fa0c40  libstdc++-v3/testsuite/ext/pool_allocator/allocate_chunk.cc
! c176f1e00a54c906f466f34dc1fb358b  libstdc++-v3/testsuite/ext/pool_allocator/check_allocate_max_size.cc
! 944a9fb2ee8798bdf67d580633927c2b  libstdc++-v3/testsuite/ext/pool_allocator/check_deallocate_null.cc
! 033ca0d5ddce8156a5a4c2d87a581a50  libstdc++-v3/testsuite/ext/pool_allocator/check_delete.cc
! fd50c859cb33360cd841f6748da15e11  libstdc++-v3/testsuite/ext/pool_allocator/check_new.cc
! ec4093218ed200edcd21be04a78d4c0f  libstdc++-v3/testsuite/ext/pool_allocator/explicit_instantiation.cc
! d3ca1f526329382095304884a05d2f90  libstdc++-v3/testsuite/ext/pool_allocator/overaligned.cc
! 30eb2bf34e1a986cc5af23f7f0d76103  libstdc++-v3/testsuite/ext/pool_allocator/variadic_construct.cc
! 6a20a6955707758fbfd96452e9a2349c  libstdc++-v3/testsuite/ext/profile/all.cc
! ae9558b90ccf1db24f053adc8a6d2981  libstdc++-v3/testsuite/ext/profile/mutex_extensions_neg.cc
! cc8515af00f8e9485d290b9f9f8ff046  libstdc++-v3/testsuite/ext/profile/profiler_algos.cc
! edf690008674bba1533936cd85e58def  libstdc++-v3/testsuite/ext/profile/replace_new.cc
! 7101b83a6290e8ffd1d749255a2f06f9  libstdc++-v3/testsuite/ext/random/arcsine_distribution/cons/default.cc
! 0c72069042d171aecdb979710568d097  libstdc++-v3/testsuite/ext/random/arcsine_distribution/cons/parms.cc
! e02a954c0cc0ae6a40d72259a93af10f  libstdc++-v3/testsuite/ext/random/arcsine_distribution/operators/equal.cc
! e34dd0c21f19ec5325150655eebbfad5  libstdc++-v3/testsuite/ext/random/arcsine_distribution/operators/inequal.cc
! 62e310b5befe9e29bc32f91fa4e4bc77  libstdc++-v3/testsuite/ext/random/arcsine_distribution/operators/serialize.cc
! 45f002056bdca09cd3f07f2bb4a6371a  libstdc++-v3/testsuite/ext/random/arcsine_distribution/requirements/explicit_instantiation/1.cc
! a9df28c82c393e1f18284664cab27564  libstdc++-v3/testsuite/ext/random/arcsine_distribution/requirements/typedefs.cc
! 847e1a811e8d547a4228f839259c6dd9  libstdc++-v3/testsuite/ext/random/beta_distribution/cons/default.cc
! c18632c6e39270a2d538ce813a8db580  libstdc++-v3/testsuite/ext/random/beta_distribution/cons/parms.cc
! 9018110379d77f21f0c8405bc6c68723  libstdc++-v3/testsuite/ext/random/beta_distribution/operators/equal.cc
! 411cc88585047ab4ba8e4697cb481b49  libstdc++-v3/testsuite/ext/random/beta_distribution/operators/inequal.cc
! 5c719754012e47ca231cd44d80863c78  libstdc++-v3/testsuite/ext/random/beta_distribution/operators/serialize.cc
! 37ccead3843e6a02c1c6fc387bb7beca  libstdc++-v3/testsuite/ext/random/beta_distribution/requirements/explicit_instantiation/1.cc
! 59b6780de39f9ce9c2f0cb9d6feb04de  libstdc++-v3/testsuite/ext/random/beta_distribution/requirements/typedefs.cc
! 7edd8e22e0c4a70b998064b205d85e6c  libstdc++-v3/testsuite/ext/random/hoyt_distribution/cons/default.cc
! a86e4b6887134392d1857fe4df0b1ed1  libstdc++-v3/testsuite/ext/random/hoyt_distribution/cons/parms.cc
! ce437b9dd11b5cb8faa3b679480f543a  libstdc++-v3/testsuite/ext/random/hoyt_distribution/operators/equal.cc
! f0f115db7b23cb184e8a3475d1895679  libstdc++-v3/testsuite/ext/random/hoyt_distribution/operators/inequal.cc
! 7d15684ade076a0aba28e56a25b9b0e6  libstdc++-v3/testsuite/ext/random/hoyt_distribution/operators/serialize.cc
! 2c41150e7243a8d02847137813013dea  libstdc++-v3/testsuite/ext/random/hoyt_distribution/requirements/explicit_instantiation/1.cc
! eb9dfd36f9b338df850cafbfed1874e2  libstdc++-v3/testsuite/ext/random/hoyt_distribution/requirements/typedefs.cc
! 71e3a453a4b851bf13bf4b20ebcffb5d  libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/cons/default.cc
! fdd08a0c511d6616131fbbaf3e5c696f  libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/cons/parms.cc
! c4f305200d74175b16c15665d9ee0b16  libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/operators/equal.cc
! 7d97e6fbf956be0a1daeb6b823e2bcd2  libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/operators/inequal.cc
! 933749b5d9b0181ad51c06abbd4ba96d  libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/operators/serialize.cc
! fc3d9cccb9550f0b016a12a0f57bbd13  libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/operators/values.cc
  5310d63384a16aab3ca0056f2cb3b3dc  libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/pr60037.cc
! 893268f2c3a3239e54bb4e3b0c4f2ba8  libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/requirements/explicit_instantiation/1.cc
! ecacf50a597a8996d8dc98e4edbb3a53  libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/requirements/typedefs.cc
! c80ccd94060dd8de3cf32e4535f6d6c7  libstdc++-v3/testsuite/ext/random/k_distribution/cons/default.cc
! d6415341f6a7d81cfc3daa96c28923ab  libstdc++-v3/testsuite/ext/random/k_distribution/cons/parms.cc
! ba7cab6afcb529d231bf7d6969fa9d22  libstdc++-v3/testsuite/ext/random/k_distribution/operators/equal.cc
! d7d9f4f6da7b19181faccd4a4f7229f8  libstdc++-v3/testsuite/ext/random/k_distribution/operators/inequal.cc
! abec0fdcd46f2d3994c06b2d133aed6e  libstdc++-v3/testsuite/ext/random/k_distribution/operators/serialize.cc
! 682ab5b5924e03b8d78fca8766945ca8  libstdc++-v3/testsuite/ext/random/k_distribution/requirements/explicit_instantiation/1.cc
! ddc6629515f97b83f09630cac18e281c  libstdc++-v3/testsuite/ext/random/k_distribution/requirements/typedefs.cc
! 6a06822adb3bd736dcb4663defc80569  libstdc++-v3/testsuite/ext/random/logistic_distribution/cons/default.cc
! ef4e161fc8fd6b9e083645c025b35026  libstdc++-v3/testsuite/ext/random/logistic_distribution/cons/parms.cc
! 52f027b8c9b6b3ed66fb9a7ee9e76b6b  libstdc++-v3/testsuite/ext/random/logistic_distribution/operators/equal.cc
! 180ecd03478c0ea37a41cf5624beb68c  libstdc++-v3/testsuite/ext/random/logistic_distribution/operators/inequal.cc
! 42822769582e543d6c264bf237a34538  libstdc++-v3/testsuite/ext/random/logistic_distribution/operators/serialize.cc
! 965f32ddda87c7ca2446459cb048fd2a  libstdc++-v3/testsuite/ext/random/logistic_distribution/requirements/typedefs.cc
! 53d67da670626d5e1d266e4249089eaf  libstdc++-v3/testsuite/ext/random/nakagami_distribution/cons/default.cc
! 277f88e48d08264ae8656d21871c1a67  libstdc++-v3/testsuite/ext/random/nakagami_distribution/cons/parms.cc
! f0cb554126eee22638857caa9035e8fc  libstdc++-v3/testsuite/ext/random/nakagami_distribution/operators/equal.cc
! a70c4e402e0c9d2885724c1ae5b0ff99  libstdc++-v3/testsuite/ext/random/nakagami_distribution/operators/inequal.cc
! b817491ae7297d654b3d814726a871db  libstdc++-v3/testsuite/ext/random/nakagami_distribution/operators/serialize.cc
! 9028d06e30b5e4c1774ead12657c70f3  libstdc++-v3/testsuite/ext/random/nakagami_distribution/requirements/explicit_instantiation/1.cc
! 08982158b5af0a4872a5ba73e1d8c174  libstdc++-v3/testsuite/ext/random/nakagami_distribution/requirements/typedefs.cc
! 7147b1b06b8d0a85935cf1ef302a67c9  libstdc++-v3/testsuite/ext/random/normal_mv_distribution/cons/default.cc
! a93cd05f46df94513ca3dec234a859dd  libstdc++-v3/testsuite/ext/random/normal_mv_distribution/cons/parms.cc
! 75193f5a8648a02dfd3f34f817faadf7  libstdc++-v3/testsuite/ext/random/normal_mv_distribution/operators/equal.cc
! d9c10325c34734005288abf092ce1850  libstdc++-v3/testsuite/ext/random/normal_mv_distribution/operators/inequal.cc
! 1da0fcacfa312f39763a44a199ff2467  libstdc++-v3/testsuite/ext/random/normal_mv_distribution/operators/serialize.cc
! 7928ed688dc5ea7d1700ec96ae4f76bb  libstdc++-v3/testsuite/ext/random/normal_mv_distribution/requirements/explicit_instantiation/1.cc
! 98a43aef2c97c817d1d58efd41d33de5  libstdc++-v3/testsuite/ext/random/normal_mv_distribution/requirements/typedefs.cc
! 4d7107ca02467a5fc0a93e5510de5467  libstdc++-v3/testsuite/ext/random/pareto_distribution/cons/default.cc
! a3bea807e6db5c1585c88eafee863baf  libstdc++-v3/testsuite/ext/random/pareto_distribution/cons/parms.cc
! f8d6318378002d7feb199059dce5529c  libstdc++-v3/testsuite/ext/random/pareto_distribution/operators/equal.cc
! 3bfc31c8ccbb92c71a46e25e461fcf53  libstdc++-v3/testsuite/ext/random/pareto_distribution/operators/inequal.cc
! 32d90259489257449887ad04e9ad498a  libstdc++-v3/testsuite/ext/random/pareto_distribution/operators/serialize.cc
! 5d1008cfa7d3194b13b9500b6e0ce498  libstdc++-v3/testsuite/ext/random/pareto_distribution/requirements/explicit_instantiation/1.cc
! fc29b601642ff5a772ba65529e53520b  libstdc++-v3/testsuite/ext/random/pareto_distribution/requirements/typedefs.cc
! 78a25eb40de817d3a558543fac43eca0  libstdc++-v3/testsuite/ext/random/rice_distribution/cons/default.cc
! 86b9603dca3c5812c4340e764cad3a2a  libstdc++-v3/testsuite/ext/random/rice_distribution/cons/parms.cc
! 58ebecafd8c9819c6daaac6f8ab7093a  libstdc++-v3/testsuite/ext/random/rice_distribution/operators/equal.cc
! 319e8750162ebd444c8047f75c72833a  libstdc++-v3/testsuite/ext/random/rice_distribution/operators/inequal.cc
! 041a24d9508c1b1bc06ea93440a54a07  libstdc++-v3/testsuite/ext/random/rice_distribution/operators/serialize.cc
! 496e6eb270f733d5f98cbaa3bf4366db  libstdc++-v3/testsuite/ext/random/rice_distribution/requirements/explicit_instantiation/1.cc
! 713b509e70fc3bb03bee4f95b5f90fc5  libstdc++-v3/testsuite/ext/random/rice_distribution/requirements/typedefs.cc
! 6f04565bb1e55d3eb829cee26541ca51  libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/copy.cc
! 22cb1f1289a8419c00e21a3fb07dc2c9  libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/default.cc
! c4f39589975cd041517f18037926d76d  libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/seed1.cc
! 7a5fedf79d6c90dd23b619119dc06368  libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/seed2.cc
! fff6d7eb7aeac57733baa590d36c8107  libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/seed_seq.cc
! d09b6601c5a180cca10dea910355b6d0  libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/operators/equal.cc
! 0ea8a77b1b02e5d4c0c9fbaed5478513  libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/operators/inequal.cc
! 98f4b251f708c3ac7b27521fd9d73682  libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/operators/serialize.cc
! 8bb16f5f5944272cdf62af7e251903ac  libstdc++-v3/testsuite/ext/random/triangular_distribution/cons/default.cc
! ab11cf2184f66ff2aac89f2389b48793  libstdc++-v3/testsuite/ext/random/triangular_distribution/cons/parms.cc
! 8dee8a1f7b7b7fc32641c79f3e4f0f68  libstdc++-v3/testsuite/ext/random/triangular_distribution/operators/equal.cc
! 7b9790eb21e58f3a518d2850d651b5cc  libstdc++-v3/testsuite/ext/random/triangular_distribution/operators/inequal.cc
! d89ad213a3565fc223c72f351b763c8e  libstdc++-v3/testsuite/ext/random/triangular_distribution/operators/serialize.cc
! 450508d897252fe68b9687539261b353  libstdc++-v3/testsuite/ext/random/triangular_distribution/requirements/explicit_instantiation/1.cc
! 6a21e2c4a06770e0cf9426cb5533ef7a  libstdc++-v3/testsuite/ext/random/triangular_distribution/requirements/typedefs.cc
! 35dfe040dbdaff00b051bc891d7c9161  libstdc++-v3/testsuite/ext/random/uniform_inside_sphere_distribution/cons/default.cc
! 0c15fa6d83b4862349caa5539e434889  libstdc++-v3/testsuite/ext/random/uniform_inside_sphere_distribution/cons/parms.cc
! faa79e4c006c1159cec74dd4bec7c45a  libstdc++-v3/testsuite/ext/random/uniform_inside_sphere_distribution/operators/equal.cc
! f40803c8371f48fa2a04868e672f21a4  libstdc++-v3/testsuite/ext/random/uniform_inside_sphere_distribution/operators/generate.cc
! 5509955beadfa45fa7d271775b6d2e45  libstdc++-v3/testsuite/ext/random/uniform_inside_sphere_distribution/operators/inequal.cc
! 3ab5bb2db5d02e181495f57e6bafd040  libstdc++-v3/testsuite/ext/random/uniform_inside_sphere_distribution/operators/serialize.cc
! 04f94d2165bc557f43e01f825827a256  libstdc++-v3/testsuite/ext/random/uniform_on_sphere_distribution/cons/default.cc
! f65b1cf35926dbf437e12d2c74a9c49b  libstdc++-v3/testsuite/ext/random/uniform_on_sphere_distribution/operators/equal.cc
! a93db8a5258f34e1f2b9388ade1df62a  libstdc++-v3/testsuite/ext/random/uniform_on_sphere_distribution/operators/generate.cc
! 3307c988e0e39efdf2eaa2bfa8f369c6  libstdc++-v3/testsuite/ext/random/uniform_on_sphere_distribution/operators/inequal.cc
! 37de92420ab9cf9ec7c0584f2b4fe8e3  libstdc++-v3/testsuite/ext/random/uniform_on_sphere_distribution/operators/serialize.cc
! 8d62c42a5270b334692ca27b948e6d91  libstdc++-v3/testsuite/ext/random/von_mises_distribution/cons/default.cc
! b076eb15f0a47d8439451a2b877728df  libstdc++-v3/testsuite/ext/random/von_mises_distribution/cons/parms.cc
! 35798324f48e6c6ecaa030318fde5497  libstdc++-v3/testsuite/ext/random/von_mises_distribution/operators/equal.cc
! 0afc223510f3b10587527f31ce271d51  libstdc++-v3/testsuite/ext/random/von_mises_distribution/operators/inequal.cc
! 557ef93fba87420b20eafd9594654f07  libstdc++-v3/testsuite/ext/random/von_mises_distribution/operators/serialize.cc
! 0819dc3200612f1357d280ca43375e92  libstdc++-v3/testsuite/ext/random/von_mises_distribution/requirements/explicit_instantiation/1.cc
! ddbaa3404c0d0cdff03057e9a9c6bab2  libstdc++-v3/testsuite/ext/random/von_mises_distribution/requirements/typedefs.cc
! f4e2964a8ff80f3d3d631078345a427c  libstdc++-v3/testsuite/ext/rope/1.cc
! 908b4840a26dd40d1bd58cecf4162de6  libstdc++-v3/testsuite/ext/rope/2.cc
! aeacb5293609588f5237bea7e3672ccb  libstdc++-v3/testsuite/ext/rope/3.cc
! 96bcc2f1cd9647bb74144b784812a153  libstdc++-v3/testsuite/ext/rope/36832.cc
! 324725f301220482d18233850dbb4388  libstdc++-v3/testsuite/ext/rope/4.cc
! 9ebcd1c34bb6151f21d16995965336dd  libstdc++-v3/testsuite/ext/rope/40299.cc
! e03252062fa4143fc8ba1442fe5677d3  libstdc++-v3/testsuite/ext/rope/44708.cc
! 8a320c598ab190bc94f6049d66ada619  libstdc++-v3/testsuite/ext/rope/44963.cc
! 8313a7a6159326a5209a948bade02448  libstdc++-v3/testsuite/ext/rope/5.cc
! c544295f6d8f7b973b9b1e67786a6489  libstdc++-v3/testsuite/ext/rope/6.cc
! 2bd1daf76ebe86556226838bcb5d6647  libstdc++-v3/testsuite/ext/rope/61946.cc
! 9412149623972ebf39a6394149e6fa6a  libstdc++-v3/testsuite/ext/rope/pthread7-rope.cc
! 6e86421aa684825f0b0cf83fe3bc29b6  libstdc++-v3/testsuite/ext/shared_ptr/1.cc
! b79955fee5ccf9ee8a50bc88432b2802  libstdc++-v3/testsuite/ext/slist/23781_neg.cc
! a14f240f63ab14607b75763270549dfb  libstdc++-v3/testsuite/ext/slist/check_construct_destroy.cc
! 81210c9da9221131f4750a050beed0c3  libstdc++-v3/testsuite/ext/slist/requirements/explicit_instantiation.cc
! 50b94f1497df11d815ac685b71bb5c3e  libstdc++-v3/testsuite/ext/special_functions/airy_ai/check_nan.cc
! 7863ba9e7f70bb46190973e5785cb0c7  libstdc++-v3/testsuite/ext/special_functions/airy_ai/check_value.cc
! c85d50bce22a61009beba5a5701daa1b  libstdc++-v3/testsuite/ext/special_functions/airy_ai/compile.cc
! 69f8af26706ff94c0564e626170106e5  libstdc++-v3/testsuite/ext/special_functions/airy_bi/check_nan.cc
! 10ed2379cdeee587323c4cd439b32d9f  libstdc++-v3/testsuite/ext/special_functions/airy_bi/check_value.cc
! b22c89545cc6b0821823dfbd146a83c9  libstdc++-v3/testsuite/ext/special_functions/airy_bi/compile.cc
! 2b8a7a09bdbc95fadb002791c00b547e  libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/check_nan.cc
! 6fd37eb44a8c5bad045e69d272b4de79  libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/check_value.cc
! 1f0fc12a649ee4af4c3730bf4555dd3e  libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/compile.cc
! cebf88ee6e678060fd4e407eafc8a870  libstdc++-v3/testsuite/ext/special_functions/hyperg/check_nan.cc
! 28d2eea4e2e4a6bbd4583c3ec5a5e8c7  libstdc++-v3/testsuite/ext/special_functions/hyperg/check_value.cc
! dfeed9359ebad419ddd47a0bbc61a186  libstdc++-v3/testsuite/ext/special_functions/hyperg/compile.cc
! e0aaf2fe0056a412f4363ff84644b4c4  libstdc++-v3/testsuite/ext/stdio_filebuf/char/10063-1.cc
! 149ac085979a02d47c58e37fd987aa43  libstdc++-v3/testsuite/ext/stdio_filebuf/char/10063-2.cc
! 4d2bbea01ad7cc5261cc5423abef2603  libstdc++-v3/testsuite/ext/stdio_filebuf/char/10063-3.cc
! d9b7004e088e1747bd6b2770c69b2e04  libstdc++-v3/testsuite/ext/stdio_filebuf/char/2.cc
! 96161de79e43ca7866cd78c65202a07a  libstdc++-v3/testsuite/ext/stdio_filebuf/char/79820.cc
! ae8cc0508e9a90604813b6dcf042653b  libstdc++-v3/testsuite/ext/stdio_filebuf/char/81751.cc
! 411101f3d487c38f34eb92fd5a63ae40  libstdc++-v3/testsuite/ext/stdio_filebuf/requirements/explicit_instantiation.cc
! 55a59d111ff87ddd6504992bc50145a4  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/char/1.cc
! 86c8bbf898cbe62ae97448777b5d2329  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/char/12048-1.cc
! 11820be2da8b771c594d0bcfc334e66e  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/char/12048-2.cc
! f9dc28c5635858068e36e300b6d8855d  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/char/12048-3.cc
! 4993d9f8689785f3413aa5818f648f97  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/char/12048-4.cc
! fac83ce031cd5df56bd54d37011d012e  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/char/35209.cc
! f83514c34dad785187a7b799396ed4db  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/wchar_t/1.cc
! 2e0f2ffe03757881ec52879b4c6d5a44  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/wchar_t/12077.cc
! 98590ae4a7010ad9dd494a2c0f3b7d0a  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/wchar_t/12948-1.cc
! 0af7b2c8c8f8a01c3d3759f4d5abc717  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/wchar_t/12948-2.cc
! 006b7e89577650201a0cc9ac2cd1deb0  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/wchar_t/12948-3.cc
! 6d652b7b16cee12dc0f08a28859d1d5d  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/wchar_t/12948-4.cc
! 78d0bd4fd8d92816eacb38a8287ff1c0  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/wchar_t/35209.cc
! ff9141dd7d721f296a9c1564488d1107  libstdc++-v3/testsuite/ext/throw_allocator/check_allocate_max_size.cc
! 21956e62faf3282ea929748f0887c4ce  libstdc++-v3/testsuite/ext/throw_allocator/check_deallocate_null.cc
! 7dd6a4b5a02bbec8b54708f99c23b9fc  libstdc++-v3/testsuite/ext/throw_allocator/check_delete.cc
! 76ef3d297873189659e3b345551d9125  libstdc++-v3/testsuite/ext/throw_allocator/check_new.cc
! 92e3804b024ae92d10cda67e6feb401d  libstdc++-v3/testsuite/ext/throw_allocator/deallocate_global.cc
! b0766c24c442a7546b848bb64027b1dd  libstdc++-v3/testsuite/ext/throw_allocator/deallocate_local.cc
! 2395ad1439fdbb1ff4189fff1b2e8be9  libstdc++-v3/testsuite/ext/throw_allocator/explicit_instantiation.cc
! d00bf160d4391d6f07a7a6b480af7470  libstdc++-v3/testsuite/ext/throw_allocator/variadic_construct.cc
! 89b4a812b5b1a9ff8151710766c743bc  libstdc++-v3/testsuite/ext/throw_value/cons.cc
! 0e6921ee079c9e20c2c19f623d2975ac  libstdc++-v3/testsuite/ext/type_traits/add_unsigned.cc
! 867ca81076e552de4e0a8f886050e43a  libstdc++-v3/testsuite/ext/type_traits/add_unsigned_floating_neg.cc
! 86af9346c8b434daf461bbfa2ac011f9  libstdc++-v3/testsuite/ext/type_traits/add_unsigned_integer_neg.cc
! bc3d909fe49cab6008378e3bd6d35716  libstdc++-v3/testsuite/ext/type_traits/remove_unsigned.cc
! 12df10d60f83911005755e8456413c45  libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_floating_neg.cc
! 7e527a7a69fd4afa360c09baaf79da3e  libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_integer_neg.cc
! 1a19e2f19ba86ef19428845046ef6ab4  libstdc++-v3/testsuite/ext/vstring/capacity/29134.cc
! 96dbeed8b2f1f5460e357c6c15d0dbd2  libstdc++-v3/testsuite/ext/vstring/capacity/shrink_to_fit.cc
! b2083d0de774ece30de587af0f8c093d  libstdc++-v3/testsuite/ext/vstring/cons/58415-1.cc
! 1dbf579726d24730dee8a5a015a35059  libstdc++-v3/testsuite/ext/vstring/cons/58415-2.cc
! 23020c6b2a980ec3a661c0211a2b2ac3  libstdc++-v3/testsuite/ext/vstring/cons/moveable.cc
! 0a88240ce0b59817dd065cb2342276b3  libstdc++-v3/testsuite/ext/vstring/cons/noexcept_move_construct.cc
! 0026d927037a5f5f218832d541670760  libstdc++-v3/testsuite/ext/vstring/element_access/char/58163.cc
! 1bab096c378a236f29579afc373f8a25  libstdc++-v3/testsuite/ext/vstring/element_access/char/front_back.cc
! 77894a51e8e6e778ee0062ef43292f4b  libstdc++-v3/testsuite/ext/vstring/element_access/wchar_t/58163.cc
! cd6e5d25c68a69270f430d8d61565885  libstdc++-v3/testsuite/ext/vstring/element_access/wchar_t/front_back.cc
! 98b6be697f0d8de892ec5b15ca7cea28  libstdc++-v3/testsuite/ext/vstring/hash/char/1.cc
! 180885c26d354c8152cbe1d32f3880b1  libstdc++-v3/testsuite/ext/vstring/hash/wchar_t/1.cc
! 3c57b6cdf13c1a6f296035fa544de2a8  libstdc++-v3/testsuite/ext/vstring/init-list.cc
! a01eca2b2b44cf90247cce70e07dd06a  libstdc++-v3/testsuite/ext/vstring/inserters_extractors/char/28277.cc
! 692f009b58a0e757588e8c6152cbfc23  libstdc++-v3/testsuite/ext/vstring/inserters_extractors/wchar_t/28277.cc
! dd4b2b6f66c7737ba13c32fc96acdd92  libstdc++-v3/testsuite/ext/vstring/modifiers/assign/move_assign.cc
! 3c6e8e3b6e0af31bbe6617e8da934ddc  libstdc++-v3/testsuite/ext/vstring/modifiers/clear/56166.cc
! d03f2556e33609cedad7c377a2c4d400  libstdc++-v3/testsuite/ext/vstring/modifiers/erase/char/54577.cc
! 3696d264ad5e8d7439b23cb4464d0d64  libstdc++-v3/testsuite/ext/vstring/modifiers/erase/wchar_t/54577.cc
! cf265ec3bc4661173bc61f910e70b603  libstdc++-v3/testsuite/ext/vstring/modifiers/insert/char/const_iterator.cc
! 5d361afe3a757eeb6b5cf51d48e946d9  libstdc++-v3/testsuite/ext/vstring/modifiers/insert/wchar_t/const_iterator.cc
! 2feda0554162c4316e167db44ff4b739  libstdc++-v3/testsuite/ext/vstring/modifiers/pop_back/char/1.cc
! a99c9bf9ad879280da7a1fef38c890ec  libstdc++-v3/testsuite/ext/vstring/modifiers/pop_back/wchar_t/1.cc
! 4d7a9e3addc6383ca2ef5ee068643111  libstdc++-v3/testsuite/ext/vstring/modifiers/replace/char/const_iterator.cc
! f9d9f393b8bc1dc71697297ce1bd8314  libstdc++-v3/testsuite/ext/vstring/modifiers/replace/wchar_t/const_iterator.cc
! 353b1a5cbf8101e2c7fa55ab073e467d  libstdc++-v3/testsuite/ext/vstring/operators/1.cc
! 074aaeb096e4d893da42d8e0125199cb  libstdc++-v3/testsuite/ext/vstring/operators/2.cc
! cfb3e978508d9028d5327f1a6637bdea  libstdc++-v3/testsuite/ext/vstring/range_access.cc
! f5c94cdf4213045d638847b883a59964  libstdc++-v3/testsuite/ext/vstring/requirements/citerators.cc
! 2ade3890ec98007a50087743652d5f29  libstdc++-v3/testsuite/ext/vstring/requirements/do_the_right_thing.cc
! 91f0b2f33cb546d4aa6f774561e46969  libstdc++-v3/testsuite/ext/vstring/requirements/dr438/constructor.cc
! 72793377ed463fad401685ef5dfb9ccb  libstdc++-v3/testsuite/ext/vstring/requirements/exception/basic.cc
! 6df75fbca7895e9927e99c6c15d66764  libstdc++-v3/testsuite/ext/vstring/requirements/exception/generation_prohibited.cc
! c477623cae97d0482d421fe430dbaec5  libstdc++-v3/testsuite/ext/vstring/requirements/exception/propagation_consistent.cc
! 0b37c2a1674a803ce6b7006476e2888d  libstdc++-v3/testsuite/ext/vstring/requirements/explicit_instantiation/1.cc
! 0f6f8677811d41e1ee84e29fa7bb70f6  libstdc++-v3/testsuite/ext/vstring/requirements/explicit_instantiation/2.cc
! d3f7949f328152f06fb5c61cf1babb27  libstdc++-v3/testsuite/ext/vstring/requirements/explicit_instantiation/char/1.cc
! 85ac40c31c736f9d388b904bc5ccd744  libstdc++-v3/testsuite/ext/vstring/requirements/explicit_instantiation/char16_t/1.cc
! 92150dd751fd993469b31d445c551bb5  libstdc++-v3/testsuite/ext/vstring/requirements/explicit_instantiation/char32_t/1.cc
! 9ca329bb0f9adc2e8a96d12d107e8a0f  libstdc++-v3/testsuite/ext/vstring/requirements/explicit_instantiation/wchar_t/1.cc
! d51c9c3738a9adb63a7515a68cd8de2b  libstdc++-v3/testsuite/ext/vstring/requirements/typedefs.cc
! 0470eefbaf1203f81c069f5ab7eda20a  libstdc++-v3/testsuite/ext/vstring/types/23767.cc
! 953d8da64a3f28358a22ce37425799c9  libstdc++-v3/testsuite/lib/dg-options.exp
! 757824458c853cebb4f3aabb96600e90  libstdc++-v3/testsuite/lib/gdb-test.exp
! 42229a6b2d873c8e3c443d1d8e8faae4  libstdc++-v3/testsuite/lib/libstdc++.exp
! aec3020ab68ef490ca7daf9393499968  libstdc++-v3/testsuite/lib/prune.exp
! 8fd63d5c9d51604f0c73fcb6b110bff6  libstdc++-v3/testsuite/libstdc++-abi/abi.exp
! 1a94ed9cca66f5f3ef6d156acd4df0fb  libstdc++-v3/testsuite/libstdc++-dg/conformance.exp
! 0a2d336da346aac44f8bcb51256a8c0f  libstdc++-v3/testsuite/libstdc++-prettyprinters/48362.cc
! 36488e66e1ba1304c0e89a9808fc9ca1  libstdc++-v3/testsuite/libstdc++-prettyprinters/59161.cc
! 10701bf8e8f15fbe38d3cc7cde2acb3b  libstdc++-v3/testsuite/libstdc++-prettyprinters/80276.cc
! 8b2da987581b553337039b3d43454607  libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx11.cc
! 51c61df24a4f628deec19e7100be4b07  libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx17.cc
! 8ec855591025ad23c6c823c84b6c3cbd  libstdc++-v3/testsuite/libstdc++-prettyprinters/debug.cc
! 28fd073f8f401ff211c2b8a40f8744c0  libstdc++-v3/testsuite/libstdc++-prettyprinters/debug_cxx11.cc
! e8faecced41b1a45e4ab93cf4e52d9b9  libstdc++-v3/testsuite/libstdc++-prettyprinters/libfundts.cc
! d26964d2bb9994ad41d9cb0f5da0f8ae  libstdc++-v3/testsuite/libstdc++-prettyprinters/prettyprinters.exp
! 4ad99426dcf1c5a1e233cd6c86a194a4  libstdc++-v3/testsuite/libstdc++-prettyprinters/shared_ptr.cc
! bffde95e3e9e35a6074f5af4f766329a  libstdc++-v3/testsuite/libstdc++-prettyprinters/simple.cc
! 1c21018494995493782e9417d4ed2121  libstdc++-v3/testsuite/libstdc++-prettyprinters/simple11.cc
! 1fdeea422216a8a37ed0badcb14d4ca4  libstdc++-v3/testsuite/libstdc++-prettyprinters/tr1.cc
! 38a818e667a3fed634d1779506c6942b  libstdc++-v3/testsuite/libstdc++-prettyprinters/whatis.cc
! f7a40417f7032a175bd709e947d093c5  libstdc++-v3/testsuite/libstdc++-prettyprinters/whatis2.cc
! b5adf9ebec1d8b38a442b3c816c16e0c  libstdc++-v3/testsuite/libstdc++-xmethods/array.cc
! 02bf7ea8ffd5caf2c81b90a2d838ffb7  libstdc++-v3/testsuite/libstdc++-xmethods/associative-containers.cc
! 2a4acce873e1081b564f1767a1922283  libstdc++-v3/testsuite/libstdc++-xmethods/deque.cc
! c5e9cdb06ef4e39be52a0a1bcf4264c8  libstdc++-v3/testsuite/libstdc++-xmethods/forwardlist.cc
! 3e8da770a7815eb99c3522a85fe02eae  libstdc++-v3/testsuite/libstdc++-xmethods/list.cc
! 3aea931225124a1297557f6ae8d235f0  libstdc++-v3/testsuite/libstdc++-xmethods/shared_ptr.cc
! df674de04bef04fc17b80bde1c524ad5  libstdc++-v3/testsuite/libstdc++-xmethods/unique_ptr.cc
! df2ba5272b88239f24e04989c5d00370  libstdc++-v3/testsuite/libstdc++-xmethods/vector.cc
! 65c59c2876e1879c17688ce716cef6cf  libstdc++-v3/testsuite/libstdc++-xmethods/xmethods.exp
! 9bd70d3258411a9746b1247950327e83  libstdc++-v3/testsuite/performance/21_strings/append-1.cc
! db388a00c196671200e992592082ce6d  libstdc++-v3/testsuite/performance/21_strings/append-2.cc
! 18ed3ce5fa559554d636c8c571d14d89  libstdc++-v3/testsuite/performance/21_strings/cons_input_iterator.cc
! 1a7465ab85c517073a09d5537b62eb58  libstdc++-v3/testsuite/performance/21_strings/copy_cons_and_dest.cc
! 8b2988a36023fadaa726a79da7d7177f  libstdc++-v3/testsuite/performance/21_strings/find.cc
  efa1608e1841a10bba94a6d4de361846  libstdc++-v3/testsuite/performance/21_strings/hash.cc
! 6f17ed5ac1fc1df731c6d0fc883eab99  libstdc++-v3/testsuite/performance/22_locale/is_wchar_t.cc
! aa7dc55af62091f719491a5bacc23477  libstdc++-v3/testsuite/performance/22_locale/narrow_widen_char.cc
! 10e8b3ba73d94ef186e4dbfd819efc8b  libstdc++-v3/testsuite/performance/22_locale/narrow_widen_wchar_t.cc
! 6286128a432d35e0ef44bf8cae618634  libstdc++-v3/testsuite/performance/22_locale/wchar_t_in.cc
! 78ff5a9944b2b5ed5b43f7853ce771b1  libstdc++-v3/testsuite/performance/22_locale/wchar_t_length.cc
! 80344a17d63362cfdf0f6e07e040bcc7  libstdc++-v3/testsuite/performance/22_locale/wchar_t_out.cc
! 6c6457172b0bcbe4bf9c77cbc99df252  libstdc++-v3/testsuite/performance/23_containers/copy_construct/unordered_set.cc
! 01e2fe38aa070afbfc64f2a72077b34c  libstdc++-v3/testsuite/performance/23_containers/copy_construct/vector_bool.cc
! 5a33fa8bf883e61bc7ccfcfa1a7ac167  libstdc++-v3/testsuite/performance/23_containers/create/map.cc
! 021bbd712277781323b53438ae433ffd  libstdc++-v3/testsuite/performance/23_containers/create_from_sorted/set.cc
! 9772b0fb3f14b1e5b8bc10dce7114328  libstdc++-v3/testsuite/performance/23_containers/create_sort/list.cc
! 07f15b9a50c0298f9f8e216417c4d1a4  libstdc++-v3/testsuite/performance/23_containers/find/map.cc
! 0d27827422f1b9254d58468d67ae878b  libstdc++-v3/testsuite/performance/23_containers/index/map.cc
! 59262c39bd7b1be3e33fc5fcafad9258  libstdc++-v3/testsuite/performance/23_containers/insert/54075.cc
! f146c151e4c1934f44c69a509536a161  libstdc++-v3/testsuite/performance/23_containers/insert/81476.cc
! 5f6c5106c2608e5ced1df690afe21b8d  libstdc++-v3/testsuite/performance/23_containers/insert/associative.cc
! 9a04016fdc30f9e9e1ab88bc2b6275ef  libstdc++-v3/testsuite/performance/23_containers/insert/sequence.cc
! adce48a905c462f34f773c91aa0cac14  libstdc++-v3/testsuite/performance/23_containers/insert/unordered_map_array.cc
! 0d08cb232b9d1966ec33be2f11a86ac0  libstdc++-v3/testsuite/performance/23_containers/insert/unordered_multiset_hint.cc
! 3c16e61b8e09934f59aa372797980267  libstdc++-v3/testsuite/performance/23_containers/insert/unordered_set.cc
! 03f7a088a2a4c5c7a4c12f9401f991dc  libstdc++-v3/testsuite/performance/23_containers/insert_erase/41975.cc
! 8f687871e2023fbe5c927140ad40b0e2  libstdc++-v3/testsuite/performance/23_containers/insert_erase/associative.cc
! 75f4a3669c78c678d24048854eb8f936  libstdc++-v3/testsuite/performance/23_containers/insert_from_sorted/set.cc
! b6d300c15e50478f9f72a16a2c8341c2  libstdc++-v3/testsuite/performance/23_containers/producer_consumer/associative.cc
! ad1c6ee6b8e66144c3cf11643b62c32c  libstdc++-v3/testsuite/performance/23_containers/producer_consumer/sequence.cc
! db6b79526ad7f5de84ac58d457932dd0  libstdc++-v3/testsuite/performance/23_containers/range_construct/deque_construct.cc
! 6849be182295461c3471f399cf0e086d  libstdc++-v3/testsuite/performance/23_containers/range_construct/list_construct1.cc
! e23346b402c6791df37bcfd83b52e0bc  libstdc++-v3/testsuite/performance/23_containers/range_construct/list_construct2.cc
! 447afe129ba3494375153910b9966f62  libstdc++-v3/testsuite/performance/23_containers/range_construct/vector_construct.cc
! d6766fdbb1ef2741c9b3abd5862566ef  libstdc++-v3/testsuite/performance/23_containers/resize/vector_bool.cc
! 260bf1a9b1d4ddc08577870ba139b29d  libstdc++-v3/testsuite/performance/23_containers/sort_search/list.cc
  aa99e264ce0cf2f5fa6d5d48a8274724  libstdc++-v3/testsuite/performance/25_algorithms/copy_backward_deque_iterators.cc
  6b997f9ff45e5974bf92f58c041a0cf9  libstdc++-v3/testsuite/performance/25_algorithms/copy_deque_iterators.cc
! c492c4999d3d997b40a69d6bca0bf415  libstdc++-v3/testsuite/performance/25_algorithms/copy_streambuf_iterators.cc
! 3b7f4f8e2fc5069660d9a77cbd553fc1  libstdc++-v3/testsuite/performance/25_algorithms/find_istreambuf_iterators.cc
! 177c5e1298da47bd1f705836f844485b  libstdc++-v3/testsuite/performance/25_algorithms/lexicographical_compare.cc
! 434ba816fbacf83211f9c7e0a54f60d5  libstdc++-v3/testsuite/performance/25_algorithms/nth_element_worst_case.cc
! c5af8391a4f362bca4a3212042cd0f51  libstdc++-v3/testsuite/performance/25_algorithms/search_n.cc
! debbc1f718c5ac14a88da6a794c42cdd  libstdc++-v3/testsuite/performance/25_algorithms/sort.cc
! 1a75ee09134d96c89141bae65165e7e1  libstdc++-v3/testsuite/performance/25_algorithms/sort_heap.cc
! 39e5ea5af102ddb330e159c28effbe41  libstdc++-v3/testsuite/performance/25_algorithms/stable_sort.cc
! 373d5640a4edb06c065d11f534e97464  libstdc++-v3/testsuite/performance/26_numerics/complex_norm.cc
! ef177c184b93aec611f6c341522f8313  libstdc++-v3/testsuite/performance/26_numerics/valarray_gslice_to_index.cc
! 8d6ed6e7e2eaeb213900b3c2b2ce45bd  libstdc++-v3/testsuite/performance/27_io/cout_insert_int.cc
! a4cde06fb8430a71473a1d9872da6fee  libstdc++-v3/testsuite/performance/27_io/filebuf_copy.cc
! f62fc8d857c74cb7e8d41da86340218e  libstdc++-v3/testsuite/performance/27_io/filebuf_sgetn_unbuf.cc
! 2057bd6571fd5a9758f39a9f57e48726  libstdc++-v3/testsuite/performance/27_io/filebuf_sputc.cc
! 7fbd70b90b4e91ee85dd1311649ffa7e  libstdc++-v3/testsuite/performance/27_io/filebuf_sputn_unbuf.cc
! 02f44ad4fc0b2ca1afdc8c7fae3f0ae2  libstdc++-v3/testsuite/performance/27_io/fmtflags_manipulators.cc
! 95e30f80d4be9e8046aaace55a6965dd  libstdc++-v3/testsuite/performance/27_io/fstream_seek_write.cc
! 9756fea04a6b8de9d48a2488c7c2a9c7  libstdc++-v3/testsuite/performance/27_io/ifstream_extract_chars.cc
! d64943f2d2a0cfa6f02703abc7931dbe  libstdc++-v3/testsuite/performance/27_io/ifstream_extract_float.cc
! 8a5b028b7512c1f5b8bbe5c4f99dbee1  libstdc++-v3/testsuite/performance/27_io/ifstream_extract_int.cc
! 2c56d771a8f31c07ba6cb369269bc315  libstdc++-v3/testsuite/performance/27_io/ifstream_getline-2.cc
! 96608898de49f4f2f84e919c340be477  libstdc++-v3/testsuite/performance/27_io/ifstream_getline.cc
! 4313205b2929f0c7995cab92d2fd2c4a  libstdc++-v3/testsuite/performance/27_io/ofstream_insert_float.cc
! 959eacd53b32a38e19fb155b5eb392ad  libstdc++-v3/testsuite/performance/27_io/ofstream_insert_int.cc
! 8ef3c916ea4d8eadb003d46d56389983  libstdc++-v3/testsuite/performance/27_io/stringbuf_overflow.cc
! d0772bce943f43eb3605ce6a44ecdd72  libstdc++-v3/testsuite/performance/28_regex/range.cc
! 652e769434f506d33f8b9abce6017122  libstdc++-v3/testsuite/performance/28_regex/split.cc
! 655d00d1699db4a548063c9b6f0e38ba  libstdc++-v3/testsuite/performance/28_regex/split.h
! a75dafacdd6a4854bceb0865ee4cdca6  libstdc++-v3/testsuite/performance/28_regex/split_bfs.cc
! b3bddaf3f3c7f047040b1f52d512314e  libstdc++-v3/testsuite/performance/30_threads/future/polling.cc
! 08321ef105519b509dd86205668b5e44  libstdc++-v3/testsuite/performance/ext/pb_ds/all_int_find.cc
! f3cf8a7ef89b38ecf530167355ea00f8  libstdc++-v3/testsuite/performance/ext/pb_ds/all_int_subscript_find.cc
! 4c8c866f58763acfc7cf2531debcb097  libstdc++-v3/testsuite/performance/ext/pb_ds/all_int_subscript_insert.cc
! 1dd2ed623decc052d5bae78a5c3485ff  libstdc++-v3/testsuite/performance/ext/pb_ds/all_text_find.cc
! fc1223dab9a158b432f7ccce93b96b46  libstdc++-v3/testsuite/performance/ext/pb_ds/hash_int_erase_mem.cc
! 053c5e5f53f23dee2dc01ea52e84a8b7  libstdc++-v3/testsuite/performance/ext/pb_ds/hash_zlob_int_find.cc
! 60dafd7de6e5ed65a280134aa8bf4549  libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_find.hpp
! 7f1d6e6f5c74b94faae07fb3e86ff397  libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_find_large.cc
! b907d9e0391659a8d05d287957f6ce1c  libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_find_small.cc
! 97202c22681a50a40dd64a183984966f  libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert.hpp
! a1d125282cab5e38ad87cf976245bccc  libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_large.cc
! 3aecbcb42790c9886fd2256d09a962b6  libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_mem.hpp
! 3910d8fd94b67aa497b4a831dc4b8611  libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_mem_large.cc
! a6ba88c3d3d8be17f1859f9ffbd6d9eb  libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_mem_small.cc
! 18bf7dc01ff83ebfaa39fac10c3146fc  libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_small.cc
! 57c83e22f5310d74a19982f89d2855f1  libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_int_push.cc
! 682f2bc50e7f956e82923978b529aba0  libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_int_push_pop.cc
! d807e2148b174a27659723d5ff9c3612  libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_join.cc
! ed026890ad2338fd8da7d4d2adb64859  libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_modify.hpp
! 0b172d7c34d27eb1db5fa10dd612db97  libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_modify_down.cc
! 9c9e1f9b34e88dc2e98670757318f98c  libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_modify_up.cc
! b444a57229d3eee3c41666cbc0cab9d4  libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_pop_mem.cc
! f0daf70abe749ea0dbb8afbe5ef2a007  libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_push.cc
! b346ec445eb6890c7241360365f6bced  libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_push_pop.cc
! a54eb2fae4f38bde3d0cf478cc5118d2  libstdc++-v3/testsuite/performance/ext/pb_ds/tree_order_statistics.cc
! 72af539a60730a862edf770982c55345  libstdc++-v3/testsuite/performance/ext/pb_ds/tree_split_join.cc
! b7cc7aeb2daf39898ceba2769d433420  libstdc++-v3/testsuite/performance/ext/pb_ds/tree_text_insert.cc
! bbfdc9af05c05e52a305a8f34c45e552  libstdc++-v3/testsuite/performance/ext/pb_ds/tree_text_lor_find.cc
! 6028233e964bbb0dfc3983861a50da83  libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/check_nan.cc
! bba683f6a5e52505a853934f25ecc239  libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/check_value.cc
! 35543c24eed8685446e86ecab45ae4c3  libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/compile.cc
! 10f17e6956f4d4ac8a03b52b776d6f0d  libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/compile_2.cc
! 5594873de450bccf0991814b193a9ac2  libstdc++-v3/testsuite/special_functions/02_assoc_legendre/check_nan.cc
! 26a6135b1d3a6f0308b096ff7f8bfc93  libstdc++-v3/testsuite/special_functions/02_assoc_legendre/check_value.cc
! 58ba7c637826bdb4dfc7109ac020094e  libstdc++-v3/testsuite/special_functions/02_assoc_legendre/compile.cc
! d471f0b5f8e50d1e309005010320b96e  libstdc++-v3/testsuite/special_functions/02_assoc_legendre/compile_2.cc
! 08dbe2a7ddbee06346aa136616a17317  libstdc++-v3/testsuite/special_functions/03_beta/check_nan.cc
! 10850cef1604438a828e9cdc52343184  libstdc++-v3/testsuite/special_functions/03_beta/check_value.cc
! a90d133ae5305f7aa683dc1be7db4236  libstdc++-v3/testsuite/special_functions/03_beta/compile.cc
! ee05cf7661ab7a1a28787f1c5bfa3fb1  libstdc++-v3/testsuite/special_functions/03_beta/compile_2.cc
! 1e9a238bb89ab0da27cded3119f009cd  libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/check_nan.cc
! 76218cfca4440aedd8352f88ff88b07a  libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/check_value.cc
! 82926f2a1c77bbe8557fea28fa618d74  libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/compile.cc
! 71e1ae5939c85222838b171b4a01eb2b  libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/compile_2.cc
! 4e0733cadfd3f50ba1066cd7f6b6ed93  libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/check_nan.cc
! dafbd17181e0b2f079c60d2a47e6e506  libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/check_value.cc
! 0671b74f9b3e023b48634d0df208416b  libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/compile.cc
! 21d37b664b30b155cc58ba9d308b3453  libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/compile_2.cc
! 70eef55fc0e72b920472391e619f8254  libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/check_nan.cc
! 2e7b05cb2b9779e05ad54a336d0a40df  libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/check_value.cc
! 8c65779113e866a0164cd377187098bf  libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/compile.cc
! 9368feac13b3856638d26ee7d2bd72f7  libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/compile_2.cc
! d40969d8e7a8973cde9b227f9ce95961  libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/pr66689.cc
! 841ae233e077fa2d8ce5ce2092d7ae9c  libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/check_nan.cc
! 57335f8bef976a74109857dc9dd8a1b8  libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/check_value.cc
! 1c382375fd8619208b5d8b6283d8bbca  libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/compile.cc
! 69fbb4ba8bee627b55611e752cce0eca  libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/compile_2.cc
! 36572b7b59848ec37ea957ceaa61d566  libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/pr56216.cc
! dd1c08725e36f5a66e0ad377778239fe  libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/check_nan.cc
! 7a31aa4ea4ceab5e131a7307d99ab09a  libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/check_value.cc
! 57e562aca217f00023378ea9146853a3  libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/compile.cc
! 3b9402d760ac450d041998e30802aff4  libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/compile_2.cc
! b62f52bd01a002280fae2892cf1a341d  libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/check_nan.cc
! 13c7e6783599c0b40220059dc12bd0e8  libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/check_value.cc
! d4ba8f997a0a3a865e4b4fd0aa743178  libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/compile.cc
! d1a47ac566c21a5bd92b31244d93f2e1  libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/compile_2.cc
! d33802fb8d88af8d19d324afa1d4dd30  libstdc++-v3/testsuite/special_functions/10_cyl_neumann/check_nan.cc
! cd3e8b514ec1d28919ce80af1a8f0e0c  libstdc++-v3/testsuite/special_functions/10_cyl_neumann/check_value.cc
! cd084d16ecb3402c9865ac9782c51838  libstdc++-v3/testsuite/special_functions/10_cyl_neumann/compile.cc
! 51b0886cc4e1d799c2d1701020bc3802  libstdc++-v3/testsuite/special_functions/10_cyl_neumann/compile_2.cc
! d4d49cb6fb861f498ff710de26cbd039  libstdc++-v3/testsuite/special_functions/11_ellint_1/check_nan.cc
! 22672c781560d45bf7c61a90179f6bd7  libstdc++-v3/testsuite/special_functions/11_ellint_1/check_value.cc
! dcc2d99b8bd12b388e419e416cfcb3ac  libstdc++-v3/testsuite/special_functions/11_ellint_1/compile.cc
! 85c8ba96c3c423896f093e2ce29a7a70  libstdc++-v3/testsuite/special_functions/11_ellint_1/compile_2.cc
! b6193c14f3c8890199a3f95f8c028e8d  libstdc++-v3/testsuite/special_functions/12_ellint_2/check_nan.cc
! ab32399e78439a943aa4ee64ad0703ea  libstdc++-v3/testsuite/special_functions/12_ellint_2/check_value.cc
! 363cc8eceee9e738e2ad169839cd0da5  libstdc++-v3/testsuite/special_functions/12_ellint_2/compile.cc
! 152b721e1883a5b4566c5d351cb71e57  libstdc++-v3/testsuite/special_functions/12_ellint_2/compile_2.cc
! 6de36da17a3849c8fa8ad8c08b534f2c  libstdc++-v3/testsuite/special_functions/13_ellint_3/check_nan.cc
! 6b530ff274c6488658693dbc733eb52c  libstdc++-v3/testsuite/special_functions/13_ellint_3/check_value.cc
! c77c3d904e97a88361996c70b421c963  libstdc++-v3/testsuite/special_functions/13_ellint_3/compile.cc
! 3a12d147de7416739066b2203b7c0e0b  libstdc++-v3/testsuite/special_functions/13_ellint_3/compile_2.cc
! 51586062b3eeaebd7af37c198695dc60  libstdc++-v3/testsuite/special_functions/13_ellint_3/pr66689.cc
! ca33a69151c174e8bb3e96178a083fbe  libstdc++-v3/testsuite/special_functions/14_expint/check_nan.cc
! 666de50d76f3d38613745fef36d1a264  libstdc++-v3/testsuite/special_functions/14_expint/check_value.cc
! eacf3fb8c2c5581b8b8b625c98c5f623  libstdc++-v3/testsuite/special_functions/14_expint/compile.cc
! 38036fc220c420658f0ebab7f567f3b6  libstdc++-v3/testsuite/special_functions/14_expint/compile_2.cc
! f2c7c92e249084f03a340e1437fb01fa  libstdc++-v3/testsuite/special_functions/14_expint/pr68397.cc
! b9245f48dec0bc919101210ec24ca51c  libstdc++-v3/testsuite/special_functions/15_hermite/check_nan.cc
! 99dc10211822fb313a8ae6d6e1e98670  libstdc++-v3/testsuite/special_functions/15_hermite/check_value.cc
! ad6b9c738a3a480ff910ab48c372fe3f  libstdc++-v3/testsuite/special_functions/15_hermite/compile.cc
! b0e23471d9f76f7be87116bf55787da6  libstdc++-v3/testsuite/special_functions/15_hermite/compile_2.cc
! c812524a5a93e37d59e537f0da7a1609  libstdc++-v3/testsuite/special_functions/16_laguerre/check_nan.cc
! da238b6123bfef0dd34aa1be36d44f40  libstdc++-v3/testsuite/special_functions/16_laguerre/check_value.cc
! bdab337cc06a5456a7da82023e509fa0  libstdc++-v3/testsuite/special_functions/16_laguerre/compile.cc
! 78dbdc2275118147f7c49bb617b70746  libstdc++-v3/testsuite/special_functions/16_laguerre/compile_2.cc
! 126c610ff0d04709b2efd4251f03bb94  libstdc++-v3/testsuite/special_functions/17_legendre/check_nan.cc
! 32d742a9f1eb44af270fc1a87d723cea  libstdc++-v3/testsuite/special_functions/17_legendre/check_value.cc
! 924d4426172cecb6aea1b232a82a3454  libstdc++-v3/testsuite/special_functions/17_legendre/compile.cc
! cdb638c5682c3d67382be465588ebd58  libstdc++-v3/testsuite/special_functions/17_legendre/compile_2.cc
! 48fee592c388142066ba38eb9c576ab1  libstdc++-v3/testsuite/special_functions/18_riemann_zeta/check_nan.cc
! 4be7cc7c35cf2bd0a07a9e445a5d6b3b  libstdc++-v3/testsuite/special_functions/18_riemann_zeta/check_value.cc
! 89d23b3d69a64d1b6dd3923f903599c9  libstdc++-v3/testsuite/special_functions/18_riemann_zeta/compile.cc
! 0bd1d6038d280102b6fe8373d16f500d  libstdc++-v3/testsuite/special_functions/18_riemann_zeta/compile_2.cc
! b04bcbc4d3973e97665f8720306439a2  libstdc++-v3/testsuite/special_functions/19_sph_bessel/check_nan.cc
! 6219ebf09fd38f4e31ae8e2b6bcf1d31  libstdc++-v3/testsuite/special_functions/19_sph_bessel/check_value.cc
! ac303e4f6f27176bb2f57344cc4d5c45  libstdc++-v3/testsuite/special_functions/19_sph_bessel/compile.cc
! 6283e717eede67c1ce1910ddb2b9d831  libstdc++-v3/testsuite/special_functions/19_sph_bessel/compile_2.cc
! 044df31f9aa8f4a49deabae19485d23e  libstdc++-v3/testsuite/special_functions/20_sph_legendre/check_nan.cc
! 07e9c1dffc9fafc323d3540787d3adc2  libstdc++-v3/testsuite/special_functions/20_sph_legendre/check_value.cc
! 9aac05215d2dace8b6210df02085728c  libstdc++-v3/testsuite/special_functions/20_sph_legendre/compile.cc
! ed92f74cacbdb5b454b6ecf31fd6c1c7  libstdc++-v3/testsuite/special_functions/20_sph_legendre/compile_2.cc
! eda5fc19bf983c0b254b8cfed13c7a70  libstdc++-v3/testsuite/special_functions/21_sph_neumann/check_nan.cc
! 8898a1f5f628240283ab88ee1c0c0b82  libstdc++-v3/testsuite/special_functions/21_sph_neumann/check_value.cc
! ab80fc76bd91a17d7afa378186877f09  libstdc++-v3/testsuite/special_functions/21_sph_neumann/compile.cc
! ca9b247b20cd3d4e2e96ff0ecd831ea4  libstdc++-v3/testsuite/special_functions/21_sph_neumann/compile_2.cc
! ab78537d25b2371d059593b0729ca7d7  libstdc++-v3/testsuite/tr1/2_general_utilities/enable_shared_from_this/1.cc
! 68745c2c4e39f6e5caff10b1fcd81b32  libstdc++-v3/testsuite/tr1/2_general_utilities/enable_shared_from_this/not_shared.cc
! 3819f8c51e8660f6875fb728e267dd97  libstdc++-v3/testsuite/tr1/2_general_utilities/enable_shared_from_this/not_shared2.cc
! a0554a7c7262888813282fbe92f2f190  libstdc++-v3/testsuite/tr1/2_general_utilities/enable_shared_from_this/not_shared3.cc
! e754c5309654f8d3f27ca5e3bc08d401  libstdc++-v3/testsuite/tr1/2_general_utilities/enable_shared_from_this/requirements/explicit_instantiation/1.cc
! 1f65793423e2041f4daa1431d94f527e  libstdc++-v3/testsuite/tr1/2_general_utilities/enable_shared_from_this/shared.cc
! 66d60e98c8201b7cfe0d7f7bdc7ba712  libstdc++-v3/testsuite/tr1/2_general_utilities/enable_shared_from_this/still_shared.cc
! cbbba334bd012315310bc6e890acb76c  libstdc++-v3/testsuite/tr1/2_general_utilities/headers/functional/synopsis.cc
! 1004a721571e27d16c253f3d33e2cf47  libstdc++-v3/testsuite/tr1/2_general_utilities/headers/memory/synopsis.cc
! 534762a074dfb563ae44aa9b373f606e  libstdc++-v3/testsuite/tr1/2_general_utilities/headers/memory/types_std_tr1.cc
! 6a64c65adaee789a1928ac0f18e49ffc  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/assign/assign.cc
! 70ce6c20c0c76f7c006cae3b7ce03fa9  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/assign/auto_ptr.cc
! 3abe6b03a04f7f9e9024543443ef84d8  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/assign/auto_ptr_neg.cc
! a8e3df36824482a97fdf928b7555f19e  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/assign/auto_ptr_rvalue_neg.cc
! fb9cfa156f12c9ee048086462a79e029  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/assign/dr541.cc
! 474c1b598769d033ce8ccb4ccba41e0d  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/assign/shared_ptr.cc
! e64c8b14c888b310d160fbd2ef44b944  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/assign/shared_ptr_neg.cc
! 75063d30c6780c449236cde082837ce9  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/casts/1.cc
! ede11db6b0d80dedf5fdd5d6a76cd5df  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/comparison/cmp.cc
! a711aa5383511823da863ff446735efb  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/39405.cc
! 9f4ca68d6e91cbc6231916d31f942b12  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/43820_neg.cc
! 4fb297c83a361ec82a304706e4445e93  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/auto_ptr.cc
! 91c74c697bbcd711be458f2e3c8585a9  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/auto_ptr_neg.cc
! c017bd18cd54ec732419f5285554c8ee  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/copy.cc
! b3b0f2b6f492bd4a3712cadf0ce4f101  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/default.cc
! d7ae56f02dbe260706c5dcd1d6cf4dbc  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/pointer.cc
! 56d52179336f7240955c8d783ad6e591  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/weak_ptr.cc
! d5bc1275cc1705d95d8eb42a8d67b85e  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/weak_ptr_expired.cc
! 6e59301106f00ad7db0e370bfb3322df  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/dest/dest.cc
! abb6b041b8b72fe02ef6c6f5a7c3ea26  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/misc/24595.cc
! 45f248f28c214b5df9dab3fd00a6151e  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/misc/42019.cc
! 848173542d266e0b19ba63e82a20916d  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/misc/io.cc
! 9b37602284761665040cebfe2e62b0c9  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/misc/swap.cc
! f7c63112cecca5845494f3d01d84293a  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/modifiers/24805.cc
! 57054cca03aa4227de406da6145fcb1f  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/modifiers/reset.cc
! 5ec37beaba5c25eed7f836fb939ac178  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/modifiers/reset_neg.cc
! c1f5d439f21561c918d43d81fa55e2b2  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/modifiers/swap.cc
! 446b22454143b59b8cda321617c96ac9  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/modifiers/swap_neg.cc
! a62b5e8cc145c805966a3975b2f309da  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/observers/bool_conv.cc
! e03949ccf81a748261fb19feae1b68cc  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/observers/get.cc
! 71493193f43db997a2d8e773e6db9a9b  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/observers/unique.cc
! bf7d5a2be170f422f0a854e4d385cb6f  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/observers/use_count.cc
! 32fb7cb7c2da88074c133ca88f9a9fad  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/requirements/explicit_instantiation/1.cc
! f3c7eacb1d3d0ea90c9ae2ee873b176d  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/requirements/explicit_instantiation/2.cc
! 15c98dd36668a11851e37d184e140c5f  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/thread/default_weaktoshared.cc
! 45d8673dbc3c0e952fe787ac789481a5  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/thread/mutex_weaktoshared.cc
! bd5b9fdc31b2b3f5b3bbc7d12de54a4d  libstdc++-v3/testsuite/tr1/2_general_utilities/weak_ptr/lock/1.cc
! ac41ddead53d31a098c662e7ea75e8c5  libstdc++-v3/testsuite/tr1/2_general_utilities/weak_ptr/requirements/explicit_instantiation/1.cc
! bf1ec06c270a9163e4319c1ea5259b19  libstdc++-v3/testsuite/tr1/2_general_utilities/weak_ptr/requirements/explicit_instantiation/2.cc
! 9e583ae14970930e19ec44cbf2b6eda0  libstdc++-v3/testsuite/tr1/3_function_objects/bind/all_bound.cc
! 1741181c3d547c0bd3c71cf3b81bad80  libstdc++-v3/testsuite/tr1/3_function_objects/bind/cv_quals.cc
! 2bf4f82463d18d6ecd66a9902e440017  libstdc++-v3/testsuite/tr1/3_function_objects/bind/mixed.cc
! 301bf7b7acee073a0adedc56a7d4022f  libstdc++-v3/testsuite/tr1/3_function_objects/bind/nested.cc
! ac87ec2e47ad7aa49fa487d53163dca2  libstdc++-v3/testsuite/tr1/3_function_objects/bind/placeholders.cc
! 96c83a84c5dda9404157687661b6e2db  libstdc++-v3/testsuite/tr1/3_function_objects/bind/ref.cc
! ce3ace8e003604cea142935a5503a187  libstdc++-v3/testsuite/tr1/3_function_objects/function/1.cc
! b30c1333e60f1b932ee678a3bbf315fc  libstdc++-v3/testsuite/tr1/3_function_objects/function/10.cc
! 14eb1b757fb717bf2ef82b404443901b  libstdc++-v3/testsuite/tr1/3_function_objects/function/2.cc
! 70d2e8395b48abe4b574ec3f8764a8ee  libstdc++-v3/testsuite/tr1/3_function_objects/function/3.cc
! a2064955cfc843e533d4af5366be9f53  libstdc++-v3/testsuite/tr1/3_function_objects/function/4.cc
! 0358dbf3cecffbd92cc3aa0fed5bb642  libstdc++-v3/testsuite/tr1/3_function_objects/function/5.cc
! aad360bb2f8307b2f44caf32a6ebac35  libstdc++-v3/testsuite/tr1/3_function_objects/function/6.cc
! 0fbbc9d33ac7e12c3f767784ced686e9  libstdc++-v3/testsuite/tr1/3_function_objects/function/63840.cc
! f0d6b1071b1d8ee77abf1ecd800df489  libstdc++-v3/testsuite/tr1/3_function_objects/function/7.cc
! 58c2969c82dbbe1f335df800a9960321  libstdc++-v3/testsuite/tr1/3_function_objects/function/8.cc
! 9617a6dcdf9ad0e2dd3e02eb804e163e  libstdc++-v3/testsuite/tr1/3_function_objects/function/9.cc
! 4e0590f1363cd656f4bab3d799e15c64  libstdc++-v3/testsuite/tr1/3_function_objects/headers/functional/synopsis.cc
! ac53f3a8ff71bd509900d3da25b5f495  libstdc++-v3/testsuite/tr1/3_function_objects/headers/functional/types_std_tr1.cc
! a9c2a284de429df0f8b08453f1f3bf9e  libstdc++-v3/testsuite/tr1/3_function_objects/headers/functional/using_namespace_std_tr1_placeholders.cc
! 0d21226ae405d0dabee6ba5621320b56  libstdc++-v3/testsuite/tr1/3_function_objects/mem_fn.cc
! 328e39abba4916a285abbe451476d317  libstdc++-v3/testsuite/tr1/3_function_objects/reference_wrapper/invoke.cc
! 835e6ddcdd25978ed8a3663e54efd66f  libstdc++-v3/testsuite/tr1/3_function_objects/reference_wrapper/typedefs.cc
! a8d5304170da7e191a89402e7a7c448e  libstdc++-v3/testsuite/tr1/3_function_objects/result_of.cc
! 9113d39ecb3b5aff01068e5f75c78508  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_const/requirements/explicit_instantiation.cc
! d589029c9537cd88297ac8c25d3d772d  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_const/value.cc
! 6c4a016222a699e992facea43cde7a5a  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_cv/requirements/explicit_instantiation.cc
! 9ec196c19372b5ba7563e4a142f1db8e  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_cv/value.cc
! ba70dcbf79f1ff7c2b7c22e8362575cf  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_pointer/requirements/explicit_instantiation.cc
! 37206f70bf6b18f851f125f90c6ed3ea  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_pointer/value.cc
! c10fc095bd066e22ae033c62738334e3  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_reference/requirements/explicit_instantiation.cc
! 8a2f83c4b9f86989aaaf6dc72611650a  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_reference/value.cc
! 3e4070605c1d0601045c7b935e4be1a7  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_volatile/requirements/explicit_instantiation.cc
! be03c626e43c355365ec7fe3e8b56a8b  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_volatile/value.cc
! ccea983dc50298fa963b0a3b93f772f9  libstdc++-v3/testsuite/tr1/4_metaprogramming/aligned_storage/requirements/explicit_instantiation.cc
! 3f5b56505ef605418936b777ab6a8cf7  libstdc++-v3/testsuite/tr1/4_metaprogramming/aligned_storage/value.cc
! d9185dc17abc766473b50c09be90d1c0  libstdc++-v3/testsuite/tr1/4_metaprogramming/alignment_of/requirements/explicit_instantiation.cc
! 6baa2e0a192dd8e67bbe581184f35eb5  libstdc++-v3/testsuite/tr1/4_metaprogramming/alignment_of/requirements/typedefs.cc
! 0bf6becbfe65b1f5ea1c7202e103d55a  libstdc++-v3/testsuite/tr1/4_metaprogramming/alignment_of/value.cc
! 61708710f9f3a5ae7e753acf7eea14e6  libstdc++-v3/testsuite/tr1/4_metaprogramming/extent/requirements/explicit_instantiation.cc
! 1755ffbc46264180d59299cdea6c4df2  libstdc++-v3/testsuite/tr1/4_metaprogramming/extent/requirements/typedefs.cc
! 323d1510b4cc2969442809d84ddef122  libstdc++-v3/testsuite/tr1/4_metaprogramming/extent/value.cc
! c1b858df61d4944843d7f5fd55356a0b  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_nothrow_assign/requirements/explicit_instantiation.cc
! 1825ed6316c500022a4fbb158c6f0c07  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_nothrow_assign/requirements/typedefs.cc
! 1f1f50ff2cacb36264c37bae7ddc8253  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_nothrow_assign/value.cc
! dd05522cf9a3c16ebaf575f963aeb103  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_nothrow_constructor/requirements/explicit_instantiation.cc
! 93fb75d05f1e9c79ce32ac76ed32a9d6  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_nothrow_constructor/requirements/typedefs.cc
! f2f6424616d52c2a35860bdcf8fbbc10  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_nothrow_constructor/value.cc
! 80c33b29eae507f3c1faeb54bb768e84  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_nothrow_copy/requirements/explicit_instantiation.cc
! 96286aebab2850b514fac73119222561  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_nothrow_copy/requirements/typedefs.cc
! f67ffc23b53775b2dece34dca875f679  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_nothrow_copy/value.cc
! 047d7431535cebd4f48b81e69c276ca2  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_assign/requirements/explicit_instantiation.cc
! fcf34d30bb0665bbc409f08ed0616af7  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_assign/requirements/typedefs.cc
! adc882174cd6c1d67edd338a6fabedfa  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_assign/value.cc
! 09aa618d567c735bbbfa156f0580a2a0  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_constructor/requirements/explicit_instantiation.cc
! 1c4f05d9e18ad720c34007b052891196  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_constructor/requirements/typedefs.cc
! 1ea29f91c3dc23304b6fc8c02b76358c  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_constructor/value.cc
! 69d272d1e94d060b2dd1d72b0eb2849d  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_copy/requirements/explicit_instantiation.cc
! 692319fb2148428d951975e8d40c89f2  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_copy/requirements/typedefs.cc
! 6e1b83ef6b30ccdddc8728b7b3a32589  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_copy/value.cc
! 2759d69efc032e69df3ca9433c5f527a  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_destructor/requirements/explicit_instantiation.cc
! e7780a10cc9c7b3488e8d617127a3fe6  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_destructor/requirements/typedefs.cc
! 0b854ed1c05b4285b6d3a685b9f0b6a4  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_destructor/value.cc
! bd7fbc974186e32e3d474ddb7caba4ec  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_virtual_destructor/requirements/explicit_instantiation.cc
! b35b17c9390c8a89867210205c37d8e9  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_virtual_destructor/requirements/typedefs.cc
! 308f3c54fc27657a638877c97bc19c3c  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_virtual_destructor/value.cc
! f375f5366215d1c8ca9075e4d7195eb6  libstdc++-v3/testsuite/tr1/4_metaprogramming/headers/type_traits/synopsis.cc
! 9b38be634b44db3a4b25469b0d425c14  libstdc++-v3/testsuite/tr1/4_metaprogramming/headers/type_traits/types_std_tr1.cc
! 0180344fd49412a0abbfbb5ea69502e4  libstdc++-v3/testsuite/tr1/4_metaprogramming/integral_constant/requirements/explicit_instantiation.cc
! eff41bcd5cc157974f8356c768b9be5b  libstdc++-v3/testsuite/tr1/4_metaprogramming/integral_constant/requirements/typedefs.cc
! ec6b3a2f6a7e8a64568bca3ded4d7444  libstdc++-v3/testsuite/tr1/4_metaprogramming/integral_constant/static_definition.cc
! 47d2d893c9b5b5defc86c3b3d4b275dc  libstdc++-v3/testsuite/tr1/4_metaprogramming/integral_constant/true_false_type_typedefs.cc
! 3eac471b390eaa3ae41009995cda78bd  libstdc++-v3/testsuite/tr1/4_metaprogramming/integral_constant/true_false_value.cc
! 7e96ce404e7643f08f9dc4657e1daadd  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_abstract/requirements/explicit_instantiation.cc
! c13cb5fcbddb4ce56df320be9a74f01a  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_abstract/requirements/typedefs.cc
! 13be9e1f8beedfbe073a0c55e766e02c  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_abstract/value.cc
! d0a97c96a4e0188b84d453bb8c41a488  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_arithmetic/requirements/explicit_instantiation.cc
! a2346622d5619e18eaaa240826f78df8  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_arithmetic/requirements/typedefs.cc
! 039d40fddb7b06f0fc4025613ed97a83  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_arithmetic/value.cc
! 5eb3380faa4e9d1e4732a5e65ab21ff5  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_array/requirements/explicit_instantiation.cc
! ad2f459646bb7c20fdc66ed1952939a9  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_array/requirements/typedefs.cc
! 42d11513a72625b8048c36a01f68dd37  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_array/value.cc
! 0414abf1e48a599e94255924c4136898  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_base_of/requirements/explicit_instantiation.cc
! ea4d0d0a8b7afceef213a9c304795c08  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_base_of/requirements/typedefs.cc
! 436c654e1083ae0a71badae295589294  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_base_of/value.cc
! 08304887d9800f863125112c18cdca23  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_class/requirements/explicit_instantiation.cc
! 48f9e73e74790ddc98d5952101981702  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_class/requirements/typedefs.cc
! 4c91d2d89bc2cf3199845a399d20fc3d  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_class/value.cc
! 4915a024545396d0bb85e71d9488476a  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_compound/requirements/explicit_instantiation.cc
! 2e18d54f2a51866ee1c8af25bed01d4a  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_compound/requirements/typedefs.cc
! 928db934aa4674d6031f113eecd8f488  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_compound/value.cc
! 1d45237c12da265c5b3b39d76a128405  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_const/requirements/explicit_instantiation.cc
! 261de751683eefb4539e243c5e80afcf  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_const/requirements/typedefs.cc
! 27f461e69ae02c4b42f13ca7552f5449  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_const/value.cc
! 7131e31a19bc1d1d5abd8a05a31e92e3  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_convertible/requirements/explicit_instantiation.cc
! 0539154380479540b7543a6bd00134af  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_convertible/requirements/typedefs.cc
! c29fdd25e392c0a7ea085f7ec6b02a29  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_convertible/value.cc
! 6825835b25559e6c116f71f448c06d18  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_empty/requirements/explicit_instantiation.cc
! 46acc278ba36083b6c6e951bce259734  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_empty/requirements/typedefs.cc
! 8d96801c85e9339dd0b1556477df4630  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_empty/value.cc
! 0b5572852b998543cf2550032a3627de  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_enum/24808.cc
! c1d015d66d63273e235c007009126141  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_enum/requirements/explicit_instantiation.cc
! a90677865dd5b71131bfa021a772c303  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_enum/requirements/typedefs.cc
! 6f169fe22f5d2106765a0b920630e78b  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_enum/value.cc
! 4f3501b5fd82cfe4f6f2d2583b2c52dd  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_floating_point/requirements/explicit_instantiation.cc
! 536b8fc50695b54fc4e54cc65ac11df9  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_floating_point/requirements/typedefs.cc
! d20decc6d3b1d23c263ec65cd7ef38d6  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_floating_point/value.cc
! 5b5f3460feaac7b925d78da2a08f959b  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_function/24808.cc
! d336a0f499445625b72f3995ee7767cd  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_function/35637.cc
! d3ca0376e8c3d5e016bcaaa18d7a3741  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_function/requirements/explicit_instantiation.cc
! 19a5c1cb1210c83f3f7baa139fcb13e4  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_function/requirements/typedefs.cc
! a6e5477ad6e506a07d70f844d09632b6  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_function/value.cc
! 70e95cfa38b1a50b1068aed586e66119  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_fundamental/requirements/explicit_instantiation.cc
! 14a13b074e328742fe3466a355c69bcc  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_fundamental/requirements/typedefs.cc
! 609a535e1dee18827052fa9b1fd24c74  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_fundamental/value.cc
! d00405ef3c10e8194e7cfae0061db646  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_integral/requirements/explicit_instantiation.cc
! 8c99d71321afe726268b6c5e6ef2d4b4  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_integral/requirements/typedefs.cc
! f5d147839e8899d47358ee44b5eec00f  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_integral/value.cc
! a9db830af4b3929958f897134dad6913  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_member_function_pointer/requirements/explicit_instantiation.cc
! 4fd22d6215c8d6fd96eb2a597a1a9220  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_member_function_pointer/requirements/typedefs.cc
! f5b26511209d2c53ab0013efc24edc09  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_member_function_pointer/value.cc
! 8bec8cd46f27e2d12d99d79507885b42  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_member_object_pointer/requirements/explicit_instantiation.cc
! 81de377d4fd6bf6d45d790b5a7cdeaf8  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_member_object_pointer/requirements/typedefs.cc
! 714b25342e7be047fb7d434c715bdfab  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_member_object_pointer/value.cc
! e9b6804cfa365669e109b64a4ae7b9d4  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_member_pointer/requirements/explicit_instantiation.cc
! 7b880a9727e527fd1d10fd28eb3243a3  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_member_pointer/requirements/typedefs.cc
! 9383d9a813033672fa5a8c174b99b1e8  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_member_pointer/value.cc
! 6946c8651a40a9fa5bf79c0de7468de3  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_object/24808.cc
! 054e8c43086ca1d222c4dbfb28d8dcd4  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_object/requirements/explicit_instantiation.cc
! 3e2089f20456e8cbce3ad57276d406f1  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_object/requirements/typedefs.cc
! 76e05c2dc0ab3e086d3a594ce68e24c5  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_object/value.cc
! 9ed6a617720b9d281da536ce18070e47  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_pod/requirements/explicit_instantiation.cc
! 69725f36d8d95e1558b5d1cfebf7fa0d  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_pod/requirements/typedefs.cc
! 5b0d974fe51cb95b5ec73626e95b9e69  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_pod/value.cc
! 29854837cacdeae0dbfad8d67fa0d85a  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_pointer/requirements/explicit_instantiation.cc
! 9360ca08d213793fdf3a5845f1205e02  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_pointer/requirements/typedefs.cc
! 3529b549059d3a131b0b276ebd361b15  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_pointer/value.cc
! 274291981d7a5a486525596016671466  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_polymorphic/24809.cc
! 15e70bda1ba2e0ce50db6343ed18749f  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_polymorphic/requirements/explicit_instantiation.cc
! f1a8fc602e4b4eb30d9ccc16446184bd  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_polymorphic/requirements/typedefs.cc
! 83686bd3336c38a08ceed2154b0fc42e  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_polymorphic/value.cc
! e816234fd9821002bc52949942337c4a  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_reference/requirements/explicit_instantiation.cc
! 6948443582e9c1de5c6c7f9898a81ecf  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_reference/requirements/typedefs.cc
! 7fb09c053bb7eaf654984cbc70d3bcf9  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_reference/value.cc
! 10dcc073cda6dbc71fd0a47d2367afcb  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_same/requirements/explicit_instantiation.cc
! 836497d65b3a6738f2c5ee58ed1ee5a1  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_same/requirements/typedefs.cc
! 347718f27afe6256b49090792ca35844  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_same/value.cc
! 24b99fe23178230f86d27e0441b087da  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_scalar/requirements/explicit_instantiation.cc
! 5bcd2728df65115b554748c5d24aebfe  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_scalar/requirements/typedefs.cc
! 6d929f6185997d2682b430b2b700d25e  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_scalar/value.cc
! f2993ea6b10cc861aed321fcfc967830  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_signed/requirements/explicit_instantiation.cc
! 0c435c9989058284578152748fad292e  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_signed/requirements/typedefs.cc
! 8650fd35b5592b242acc5eab2071108b  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_signed/value.cc
! 217129787723450d41cbbdfe2c8613b8  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_union/requirements/explicit_instantiation.cc
! 71b5caa0e195855ebfe9a9067892988c  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_union/requirements/typedefs.cc
! 57c1b0d09d4b58fe0809f63ba6b20545  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_union/value.cc
! 8746b557dd804bd98bcd52a499c58fab  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_unsigned/requirements/explicit_instantiation.cc
! ef28edcd1fc3816e15dc28aedad18b0b  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_unsigned/requirements/typedefs.cc
! e8faf4e46e41fb3511df10f882bd91bd  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_unsigned/value.cc
! 4a4d15c0dd921794b8a6159c5664ba1a  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_void/requirements/explicit_instantiation.cc
! 0fbd43712b162908e1e1a870d4489216  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_void/requirements/typedefs.cc
! e26bfe3ecd61c29e8f52b4703d89292a  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_void/value.cc
! 02e6c1ed9938de2c0c5eea7994ab6e30  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_volatile/requirements/explicit_instantiation.cc
! e6738cb688bbdf4cff41c634ac191ee0  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_volatile/requirements/typedefs.cc
! 0c8e3997442696146ce9f962b70822cc  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_volatile/value.cc
! 68e9292f76594b54ebd4fae9869ee661  libstdc++-v3/testsuite/tr1/4_metaprogramming/rank/requirements/explicit_instantiation.cc
! d33301d9b45e020479e2df571004c51e  libstdc++-v3/testsuite/tr1/4_metaprogramming/rank/requirements/typedefs.cc
! 14044ad7cc9071a9d0d9dc28f7cb25c1  libstdc++-v3/testsuite/tr1/4_metaprogramming/rank/value.cc
! 11bf99eb5942c52d093b18b856ab3802  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_all_extents/requirements/explicit_instantiation.cc
! 770e44077beb6d9f50d2e3c1b0450753  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_all_extents/value.cc
! ab7c9ecaa5d804b1c978da19160b5d28  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_const/requirements/explicit_instantiation.cc
! 8cd7701b7bbcd6250490d7fc5bab2b23  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_const/value.cc
! d878472af53b6e255ca7ec983ff75c4a  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_cv/requirements/explicit_instantiation.cc
! 4520b9c34212b84e01f9d14118e157f8  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_cv/value.cc
! 75f91993c4bbf59108755febe4b91acd  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_extent/requirements/explicit_instantiation.cc
! 5c9e2b8afbe8e98184ed42eeb61639f0  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_extent/value.cc
! 06c6ac498582c6d413a9c219f399f0b3  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_pointer/requirements/explicit_instantiation.cc
! 880eb01b3084709f2b29b12e0648cdbe  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_pointer/value.cc
! 5c8db3fbde0bd1f24af12bf0a403f0a3  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_reference/requirements/explicit_instantiation.cc
! 2a7c01351d8341b904776429cb7633a8  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_reference/value.cc
! 002ac961c56a526e0c82cbdedee086d5  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_volatile/requirements/explicit_instantiation.cc
! 57c3d943c8b289cbc6fbfb2e93e47c55  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_volatile/value.cc
! aa21b6877c31e1aee370db13ec93279a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/headers/random/synopsis.cc
! b0611bf03e5233bca95a9dfede359202  libstdc++-v3/testsuite/tr1/5_numerical_facilities/headers/random/types_std_tr1.cc
! fd02e4a807969a63b964a451a8dbab1d  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/bernoulli_distribution/requirements/typedefs.cc
! 2d8636a349fabebcab079cd71132bb3a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/binomial_distribution/requirements/typedefs.cc
! 065173b50dc26a910f3b347e20f6db27  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/discard_block/operators/equal.cc
! 9cfc767de85f9932a9627181982406fa  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/discard_block/operators/not_equal.cc
! 7fe02e7089501ed2261ff9c3f5846f15  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/discard_block/operators/serialize.cc
! 28d91a5bacd52615dacfb2fc40f806e0  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/discard_block/requirements/constants.cc
! 4525087a11d85458f62e3db0b562108d  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/discard_block/requirements/typedefs.cc
! d16106fc3da62b45862e47df6999e7af  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/exponential_distribution/requirements/typedefs.cc
! b7340b630ebc4574ac1008375a41f5f7  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/gamma_distribution/requirements/typedefs.cc
! 392032e5a3015180e402371a9a1834dd  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/geometric_distribution/requirements/typedefs.cc
! 1c866b350bd569d4c2a00194ba598357  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/cons/default.cc
! 358107e779625c04c582a454ee083b26  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/cons/gen1.cc
! 206ec527340cb2debfe984b2ae962563  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/cons/seed1.cc
! 250384648b5fb309c5ab26314ac82d6f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/cons/seed2.cc
! 338220064ce92a571d32f141df50068f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/operators/equal.cc
! bbbb4bc7a23062b976a10c41c911bb12  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/operators/not_equal.cc
! ba437df9ca867b91979e4706affdab21  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/operators/serialize.cc
! 5671d3d27a4e35ca3fe35cd7e00d3067  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/requirements/constants.cc
! 27d9aeb1d9123593846ee54ee2a4d0c0  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/requirements/non_uint_neg.cc
! cbb665f274dffdede6b67b0de043a996  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/requirements/typedefs.cc
! c01920e96ccc251f3f10eb10d77eb3bd  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mersenne_twister/cons/default.cc
! 183f59aca39550a01ea542dd3de36b6a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mersenne_twister/cons/gen1.cc
! b736e572553139686331188fbeded961  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mersenne_twister/cons/seed1.cc
! bdd35347d78a87cbd09153c9caad80ca  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mersenne_twister/cons/seed2.cc
! be3e6feeb9cf33d02399322b7053e3e2  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mersenne_twister/operators/equal.cc
! bc155c7d1da4d10b5633821a2183ffb5  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mersenne_twister/operators/not_equal.cc
! 6362170d45cae96b2af51eab2a214955  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mersenne_twister/operators/serialize.cc
! 9fcf913262e1b9af39b3636e7f1637ce  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mersenne_twister/requirements/constants.cc
! 69e718b98b452bf493a67e9a3fdafe86  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mersenne_twister/requirements/typedefs.cc
! 3927306774bcb3b05f22a0e93009c41a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/minstd_rand.cc
! a9f768fb74d6d540e2f4bf8f4a129a45  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/minstd_rand0.cc
! 10ff131dab2804a78b2ec1d812fa8961  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mt19937.cc
! 69f0cdb1477a2dc452d0c15c32579430  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/normal_distribution/requirements/typedefs.cc
! 3e3fd00d59642d7e01840910b026e0e0  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/poisson_distribution/requirements/typedefs.cc
! 5d2abb9296db14b1b81da9073c690971  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/random_device/cons/default.cc
! b1f12c9f52df8403c4c3e89c72b8e4f0  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/random_device/cons/token.cc
! cad2e03b47a254e6862330f527623f07  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/random_device/requirements/typedefs.cc
! ae3b64c61b146ff051e0127e145e8797  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/ranlux3.cc
! 2b7c2b41f6d556aaad04ed172ca45898  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/ranlux3_01.cc
! 5794fa37442f133ca9d43b7586e0ff58  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/ranlux4.cc
! 9d9c5d7acd96e9b42dd80c9f03a70e95  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/ranlux4_01.cc
! 0d0da302d0ded1fe01a1a864e151d0b8  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/cons/default.cc
! b4f8c1cf9e2421018e3dc7e540b8a246  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/cons/gen1.cc
! e9d0b46e0c3e63a5cb4a36227f037ffd  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/cons/seed1.cc
! a4982e329532fc5ab91aa985a2830810  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/cons/seed2.cc
! 93a459e403d398a1f38968dce548ba4a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/operators/equal.cc
! 2445b902976ebda76d3e5454439b2e25  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/operators/not_equal.cc
! 5ff6e10a99b870183655153d5280d982  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/operators/serialize.cc
! f85b7566beef0aec46e6dfeb2f0b6cc8  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/requirements/constants.cc
! 877c2003bdebfa7c417e0c1ff91b51ee  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/requirements/typedefs.cc
! 20345f8f9e26a7d662fc89c1951c2458  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/cons/default.cc
! ef5194094d25a694021024e7696d59ce  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/cons/gen1.cc
! 29614e4e10b7309243b16d9f77c6cff5  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/cons/seed1.cc
! 78b911eb480f98fc685d8e42d1bc7c5c  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/cons/seed2.cc
! 03710e10c6d086c507fe805691eeb1c3  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/operators/equal.cc
! 1036219ccff883879a7626756d5dbd82  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/operators/not_equal.cc
! 3662ebb6bb37e283979230caf8bdfc7e  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/operators/serialize.cc
! 473c04bbb8ad099eae885f18fd304d74  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/requirements/constants.cc
! b17b9dd25034cc648063bfc53ae75263  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/requirements/typedefs.cc
! 67e11e9b3f3e42ae91077ed21a1221ea  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/uniform_int/33128.cc
! 3b50a0fc50b3e2c7b2fa40da91eca83b  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/uniform_int/cons/default.cc
! 0ebfc5b4d79927bceade7b7b72939919  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/uniform_int/cons/range.cc
! c1b61b3d82e3af38195fd6591c25d8d1  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/uniform_int/requirements/typedefs.cc
! 2e9fe937c11ce7678297409f3a08fea1  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/uniform_real/requirements/typedefs.cc
! 5bf470e1adba3574475eb202de3f1975  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/variate_generator/37986.cc
! 25b54b18fa24ad77e2a02d6d42d7ffba  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/variate_generator/requirements/typedefs.cc
! dd5d2ed63c4c90f0b12419bcb534612c  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/xor_combine/cons/default.cc
! a3c3dda1bb188423a7e6cde7f1c9d023  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/xor_combine/operators/equal.cc
! 0f099b730cee3ee85f4e86e13931b1c2  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/xor_combine/operators/not_equal.cc
! 85c293f695781372d8cd74b4b2f62d14  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/xor_combine/operators/serialize.cc
! 9fc4274b42a4fb939e349120244a2809  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/xor_combine/requirements/constants.cc
! 09d4bb42cea17b32520efb117a9435e2  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/xor_combine/requirements/typedefs.cc
! 80d3ce2c679f8b62c67a9de84683587f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/01_assoc_laguerre/check_nan.cc
! 659e6df60a00117a3240af86dd93b892  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/01_assoc_laguerre/check_value.cc
! 1ed3129314d02cf1a762ed3aad48baa5  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/01_assoc_laguerre/compile.cc
! 0065129112c125a1030e2089c28f06dd  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/01_assoc_laguerre/compile_2.cc
! 3621b301d4c2e4c9d1dda16ef4e11d07  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/check_nan.cc
! 580950594740d09b2ab2eb98102374db  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/check_value.cc
! d2f309ec623caf6ed2d1c03a4d8860fc  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/compile.cc
! 15fafa9e740f48d8c58fc108a439565a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/compile_2.cc
! 8a40261043022a14b65d8195dcfae843  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/03_beta/check_nan.cc
! cd35d55d818bd450ec9f6b2d3c314058  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/03_beta/check_value.cc
! 2b8df3daadd7474f66f38c319da550e2  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/03_beta/compile.cc
! e92be091e13c017e0e0515c67b2f80ec  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/03_beta/compile_2.cc
! 4d9022644628a331b01426a1f3f60442  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/04_comp_ellint_1/check_nan.cc
! c2cceb1829e028ce2833d0dd667d2df2  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/04_comp_ellint_1/check_value.cc
! c8fb25ba230b211e7261bc46ad0e2b88  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/04_comp_ellint_1/compile.cc
! 4a60f59cea6d58f068ac215a8b4c0646  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/04_comp_ellint_1/compile_2.cc
! 8bef0b114e53a797d25ecaab2e3c9670  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/05_comp_ellint_2/check_nan.cc
! ac46924530aaaae8bf7cb8d937a874c4  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/05_comp_ellint_2/check_value.cc
! beb5a7207721d6decab7e9a486dd1376  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/05_comp_ellint_2/compile.cc
! 66c326e1c7d7433014353ea81c3958d4  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/05_comp_ellint_2/compile_2.cc
! 8cab451a29d21dafc207d2b3daa2ac0f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/check_nan.cc
! bcd1ed8bbb60e9ea6c3cfc1e6ff5e001  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/check_value.cc
! 8558dc586efd12450acd773ccac39224  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/compile.cc
! 34200741fe6f56101b5111d793a35c4d  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
! 0a08fecc009ba30d579d09342756008a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/07_conf_hyperg/check_nan.cc
! 936d549b2361c4ee64730186e3fb894a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/07_conf_hyperg/check_value.cc
! 2bdcf6e7ca597606e842d2f0302bc30b  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/07_conf_hyperg/compile.cc
! 63f5d3311274e04bf596dffe454baf0f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/07_conf_hyperg/compile_2.cc
! 43108f04df6031005611d50cabf7ff7e  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/check_nan.cc
! 04e73c30d66abb5db2929bc937848672  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/check_value.cc
! 35ae2775de97a7676949445eaefef982  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/compile.cc
! b9f19ed31f7cf2ff2d9db8d646728510  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/compile_2.cc
! 1a94cbb6588b6d3b45cdc224171c67af  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/pr56216.cc
! b8f1b8796d2f3b5f65c17833b9a4af8a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/09_cyl_bessel_j/check_nan.cc
! 654059bc62f70b4143c045a7f0924235  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/09_cyl_bessel_j/check_value.cc
! 5dd18dde3a42c3ac8e8253b7db3f6e12  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/09_cyl_bessel_j/compile.cc
! ff9c59ad59805e419c3170981f64f284  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/09_cyl_bessel_j/compile_2.cc
! df47976bed5613695ab8beef5cb93598  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/airy.cc
! 9266edf1012f93631fb084af8c83facf  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/check_nan.cc
! 9d0509175faa83b52ed558956f3ac551  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/check_value.cc
! 09bacd9152682732466c6734c976808a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/compile.cc
! bce15dab92d6edb0f0f178f23e301812  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/compile_2.cc
! 445128362086dde77065711b59d3a139  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/11_cyl_neumann/check_nan.cc
! 24e6e310f1bfcf8e88ac4c4d4cc13139  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/11_cyl_neumann/check_value.cc
! 05732eaaf6d48ebd23cf361efd564d8a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/11_cyl_neumann/compile.cc
! f2da8bcb64efff6f26e71f108f5af7b7  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/11_cyl_neumann/compile_2.cc
! bdadfd3df0453a9e1834eb667ba15146  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/12_ellint_1/check_nan.cc
! e82c77cb23b94b8bd3a867020850aaf6  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/12_ellint_1/check_value.cc
! 5888bd12f38ae9f6d4b97acae60726bf  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/12_ellint_1/compile.cc
! ffe45c17aa201d44d1ececa2212f5949  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/12_ellint_1/compile_2.cc
! 0adad8a73e569c68d7e82ae2f9e17386  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/13_ellint_2/check_nan.cc
! 917f428c65af9302eeec1191306cd031  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/13_ellint_2/check_value.cc
! 475b5339f8ef0ddd713071f18187f51c  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/13_ellint_2/compile.cc
! b05ac2f514fa6de5fe0d828cb9d185c6  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/13_ellint_2/compile_2.cc
! f66b47c187eb629793c33c915ab28b2c  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/check_nan.cc
! 0e5d6bc313f6bcb8ca457491ebdd35eb  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/check_value.cc
! e8d6eb7d766cfa96cd3218a57b82bf3f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/compile.cc
! 73d86b39103281c270e7d73f7022c4dd  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
! 9429d4da48de241cd83b31987555e6db  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/check_nan.cc
! a1226055312313213b3b62e9991be97b  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/check_value_neg.cc
! 4d8a66200a4a31cb312e374eb4372807  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/check_value_pos.cc
! dc13cb67b590cc8fc44c61d719afdd63  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/compile.cc
! 745bf3070f662e5c668cdc17a6e5b9cb  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/compile_2.cc
! 86b79b9881f887e091156ce55fe69799  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/pr68397.cc
! 0af8c666e5647d37d6e31a8fd38367d9  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/check_nan.cc
! b9e87169c2f81118873e328e68b96272  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/check_value.cc
! bdaa2d386088eb74edaa79eae29cc8da  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/compile.cc
! 97f17fecfd9429f9dbe188cb8828fcf7  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/compile_2.cc
! 790214be85a436b0156c7388da80c027  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/check_nan.cc
! 6be9ce1553feef9f3cc6a9ffafec5b60  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/check_value.cc
! 497fefaaf744a4c3a7eb9f82f9a01447  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/compile.cc
! 2a4d6e68427e660f39fbb5d7f43dddd3  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/compile_2.cc
! a5dac506609d5ac630d37a6c23fc21b7  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/18_laguerre/check_nan.cc
! e569a9598a75b806e86e40d6f3bf3ab1  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/18_laguerre/check_value.cc
! 04bda15ced8385f445a490caadb2af65  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/18_laguerre/compile.cc
! 21530d4951d4125c626448743564cfc7  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/18_laguerre/compile_2.cc
! 5673e449835bb9e8bc2083dd56bcf12a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/19_legendre/check_nan.cc
! 7b6f3badb15248599c95084c3649a25f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/19_legendre/check_value.cc
! f54077ecfd4bd3c8e76efa73f6277325  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/19_legendre/compile.cc
! 5ea0db5993b09706f33fd6f8daf230da  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/19_legendre/compile_2.cc
! fbd21f3448880375cc9d8a47914c2ad0  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/20_riemann_zeta/check_nan.cc
! 60deb5dc3ef971b581dc1c6986a9d351  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/20_riemann_zeta/check_value_neg.cc
! 0bd681ddcbe60a637ba0e17163520a97  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/20_riemann_zeta/check_value_pos.cc
! dbd25da68988e4aa6a94cbacca8bee85  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/20_riemann_zeta/compile.cc
! 85a26036729f41eead63235661bc1444  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/20_riemann_zeta/compile_2.cc
! f256e095f272f897968eeb54e59dae40  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/21_sph_bessel/check_nan.cc
! 7bfdc45329e0b01bc9a4b594bb88730a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/21_sph_bessel/check_value.cc
! 0bd0d716a9ec2088114e83cbe6e93968  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/21_sph_bessel/compile.cc
! 26695fa50c076f2a05640a5a99147114  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/21_sph_bessel/compile_2.cc
! 5f255b42b7f1859f4ae161868cdc9365  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/check_nan.cc
! 079db96306b927772f58d7dac55b7ec5  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/check_value.cc
! 0ef443f9ab93def3d5ab6af175d449f8  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/compile.cc
! 2cc275d013396c503f5cfe32a5cc7820  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/compile_2.cc
! 7f4db6154dbb8516e47e18c6eb831124  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/23_sph_neumann/check_nan.cc
! 574cdee0c9299af2b95e0ee370bba83a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/23_sph_neumann/check_value.cc
! 65992300b73d8342da35b26ff0bf544b  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/23_sph_neumann/compile.cc
! 1bb849010cbaf467db1554ad2a0b37e4  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/23_sph_neumann/compile_2.cc
! 6a592765613974adc07414e1d6e48b61  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/testcase.h
! 9ce27662c9f84816300aaf108ff4443e  libstdc++-v3/testsuite/tr1/6_containers/array/capacity/empty.cc
! bfa29256cbef42488e76cb70df7dc7af  libstdc++-v3/testsuite/tr1/6_containers/array/capacity/max_size.cc
! fe2445d6bc40b298fc0819f36a953682  libstdc++-v3/testsuite/tr1/6_containers/array/capacity/size.cc
! 69258c1498f46dd3d04d8dc62f8a5f1b  libstdc++-v3/testsuite/tr1/6_containers/array/comparison_operators/equal.cc
! 445c251472e2821cab5fad2c7bbc81cd  libstdc++-v3/testsuite/tr1/6_containers/array/comparison_operators/greater.cc
! a369f24202c8368985553fc5c03849da  libstdc++-v3/testsuite/tr1/6_containers/array/comparison_operators/greater_or_equal.cc
! afdff9b2ad5549d1a25f1304a0c3e7ee  libstdc++-v3/testsuite/tr1/6_containers/array/comparison_operators/less.cc
! 32ea6dae48021ef10ef092d1d2abd366  libstdc++-v3/testsuite/tr1/6_containers/array/comparison_operators/less_or_equal.cc
! 9f03e2c750216154a5057db335840dd6  libstdc++-v3/testsuite/tr1/6_containers/array/comparison_operators/not_equal.cc
! 7232c551f18a43fca6fcc73509997b47  libstdc++-v3/testsuite/tr1/6_containers/array/cons/aggregate_initialization.cc
! a66c4128c8a0971706d0eedfb98ed3cb  libstdc++-v3/testsuite/tr1/6_containers/array/element_access/at_out_of_range.cc
! d19db2eff7dbd85c9e50d3467d3cf194  libstdc++-v3/testsuite/tr1/6_containers/array/element_access/back.cc
! dfd7b3989a710e0522d69f1898fee4aa  libstdc++-v3/testsuite/tr1/6_containers/array/element_access/data.cc
! 1beafc05f8c328749e8c34ea8c26dc12  libstdc++-v3/testsuite/tr1/6_containers/array/element_access/front.cc
! 68204356fd5911cdd4416291101fea04  libstdc++-v3/testsuite/tr1/6_containers/array/iterators/end_is_one_past.cc
! 1981888bb29e70c02186ff66f26ec1c8  libstdc++-v3/testsuite/tr1/6_containers/array/requirements/assign.cc
! 8e87618aad34ac5201a3113c756b030f  libstdc++-v3/testsuite/tr1/6_containers/array/requirements/contiguous.cc
! 1d67d19c4b76aca578261fd29f6d8ac9  libstdc++-v3/testsuite/tr1/6_containers/array/requirements/explicit_instantiation.cc
! 3cbe59bb53c0d45621ee1273775acd0b  libstdc++-v3/testsuite/tr1/6_containers/array/requirements/member_swap.cc
! 296cab1bbc4ead473b2ca9ee87ea8afd  libstdc++-v3/testsuite/tr1/6_containers/array/requirements/typedefs.cc
! 91cbee9a0e02cf7369958a2d983ee334  libstdc++-v3/testsuite/tr1/6_containers/array/requirements/zero_sized_arrays.cc
! 554998de0463f1c7f8c6729212e9bc58  libstdc++-v3/testsuite/tr1/6_containers/array/specialized_algorithms/swap.cc
! ec77c6ee682bf6af5425958683e4e0e1  libstdc++-v3/testsuite/tr1/6_containers/array/tuple_interface/get.cc
! 49b875e4e99c5721c85f7df804ecf4c1  libstdc++-v3/testsuite/tr1/6_containers/array/tuple_interface/tuple_element.cc
! f13b8125035a7d7de9947e55f4177610  libstdc++-v3/testsuite/tr1/6_containers/array/tuple_interface/tuple_size.cc
! e9a733c5a74acbbb01dd1edc7ea50e56  libstdc++-v3/testsuite/tr1/6_containers/hash/24799.cc
! 47ee30f73bc71b145dc02c886707bca0  libstdc++-v3/testsuite/tr1/6_containers/hash/operators/size_t.cc
! e32195caa073dd64d4aa8fac8e4272fc  libstdc++-v3/testsuite/tr1/6_containers/hash/requirements/base_classes.cc
! 6bb43a20f1b32b4f5033e7bf0f9569fd  libstdc++-v3/testsuite/tr1/6_containers/hash/requirements/explicit_instantiation.cc
! 9a5db2bec1f37ac3770a938e527419f9  libstdc++-v3/testsuite/tr1/6_containers/headers/array/synopsis.cc
! 9a3c499dcaf677863b2cb5a19ea396ef  libstdc++-v3/testsuite/tr1/6_containers/headers/functional/synopsis.cc
! ee7f62cde820570048ece9681fea7d7a  libstdc++-v3/testsuite/tr1/6_containers/headers/tuple/synopsis.cc
! 36867636899e603de830e1055ba2ef2e  libstdc++-v3/testsuite/tr1/6_containers/headers/tuple/types_std_tr1.cc
! 0ef708a192fac3ccfd3bf2f7dac4dfbe  libstdc++-v3/testsuite/tr1/6_containers/headers/unordered_map/synopsis.cc
! 6bbbb6f73652810f2d62f2d25d8ef0f6  libstdc++-v3/testsuite/tr1/6_containers/headers/unordered_set/synopsis.cc
! 2226b54bc733b8161bb5a3d7d10c8c7c  libstdc++-v3/testsuite/tr1/6_containers/tuple/comparison_operators/35480_neg.cc
! e2282bae2320eb472183a6703985dad7  libstdc++-v3/testsuite/tr1/6_containers/tuple/comparison_operators/comparisons.cc
! b071dc9a96ca8b94e2f84dc87b217775  libstdc++-v3/testsuite/tr1/6_containers/tuple/cons/assignment.cc
! 0a9ea2750b5b82ead252b183bd77efbf  libstdc++-v3/testsuite/tr1/6_containers/tuple/cons/big_tuples.cc
! 2d503140c43adfcf0e8aebaf33a9628b  libstdc++-v3/testsuite/tr1/6_containers/tuple/cons/constructor.cc
! 631a294e1d71ac78b81e1ecd4b94a0b8  libstdc++-v3/testsuite/tr1/6_containers/tuple/creation_functions/23978.cc
! 0890451e746af6ba370b388f6d2a4259  libstdc++-v3/testsuite/tr1/6_containers/tuple/creation_functions/make_tuple.cc
! ea973b18dbb26ea83d203c68d70e9b57  libstdc++-v3/testsuite/tr1/6_containers/tuple/creation_functions/tie.cc
! 6fc94b4ee8d96f516837affbae8cca3e  libstdc++-v3/testsuite/tr1/6_containers/tuple/creation_functions/tie2.cc
! 748c5fd605ece932123cd7e7c7ed7b9a  libstdc++-v3/testsuite/tr1/6_containers/tuple/element_access/get.cc
! b09f4987f953a9e4fd97e6fa9f24e850  libstdc++-v3/testsuite/tr1/6_containers/tuple/requirements/explicit_instantiation.cc
! 10cdab6413a797675b1b109db9e757e9  libstdc++-v3/testsuite/tr1/6_containers/tuple/tuple_element.cc
! 5f183eaa93a95e680cfee33d4848152d  libstdc++-v3/testsuite/tr1/6_containers/tuple/tuple_size.cc
! d6535aa485349d7da61acf7856834f68  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/24064.cc
! 95298cff06fd4bae290dcba13bff4bef  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/capacity/29134-map.cc
! d24fffab1b51c988c9f693721a956b15  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/erase/1.cc
! 0319aa5db6c3ac72eef1a19c3fc873e9  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/erase/24061-map.cc
! c057f2e7ffd9843a801c72294e9be917  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/find/map1.cc
! 3b709eacbef913c57ee704ed0941f85a  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/insert/24061-map.cc
! 8b4c78fce5a1ff3ed83454059652c969  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/insert/array_syntax.cc
! 3a3b502bdcfacccde1a7cc0d01b8ad43  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/insert/map_range.cc
! c3c802df4612ea8368e60821048c64cf  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/insert/map_single.cc
! 5db77912bb1abd33665d0e8a61acaa94  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/requirements/explicit_instantiation.cc
! 236e082235803cb9d0444f2cc0d5dcd1  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/requirements/iterator_neg.cc
! 4796527ecff56df5c1926aa9992bd61c  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/requirements/iterator_null_neg.cc
! c391077f1977e2d4c84781081a75a180  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/requirements/typedefs.cc
! f8fe4f25f8fdbf002bce9b8cdc40b924  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/swap/1.cc
! 5a16bcd152a0f196a44afdca8cd14f94  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/swap/2.cc
! 43eb453bdb6f356e7330f7f381503a65  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/capacity/29134-multimap.cc
! fc9a047e37279d724dc1f2a34aeca14b  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/erase/1.cc
! 64566a7f7db52d7152fa75167fcaaa72  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/erase/24061-multimap.cc
! 0ec6d08fb5b7424a74e9357ece62f1f0  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/find/multimap1.cc
! 569b56bec945c27a75c944c504479a78  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/insert/24061-multimap.cc
! 130ceb866b672162d26a9cee7bbde926  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/insert/multimap_range.cc
! 44ab0d2aa814a4de6a3cae8d01946f1c  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/insert/multimap_single.cc
! 2b7125159e2b44e87e614f619e5862e9  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/requirements/explicit_instantiation.cc
! af72c0eebfbdb33be45c306ba993bcae  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/requirements/iterator_neg.cc
! 8938025bbc17f9a970ac3d8e58de784a  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/requirements/iterator_null_neg.cc
! 8594fda71a137cab530df38234d68cdd  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/requirements/typedefs.cc
! b8fe6455b6eaa4f410c63e48a364a553  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/swap/1.cc
! c15722770e0bf77a08c496bb38e77c26  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/swap/2.cc
! 49a7eedfc4a007655181287a6eef0e1f  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/24054.cc
! 3517e7c1df04837805dca7a0243e7779  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/capacity/29134-multiset.cc
! 2ca90ca6a537432f8bb33ff43abf64bc  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/erase/1.cc
! d79f85abf74623e4030287ffe5cec779  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/erase/24061-multiset.cc
! cb7220425b61e92817fe10bb0217f385  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/find/multiset1.cc
! aac9f9833e9dfdbfa5d8fc19309b51ab  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/insert/24061-multiset.cc
! a579627d971860c00c69ab481ade8721  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/insert/multiset_range.cc
! 34e87fd13d0aabcc313ae132a035fffd  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/insert/multiset_single.cc
! 4d43eeb9728d1cd9473701d458d061ac  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/requirements/explicit_instantiation.cc
! f2591164ed21e23862bbf6ca1ada70d0  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/requirements/iterator_neg.cc
! eb9ab68a488eac0da7caa3f8d8736ea7  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/requirements/iterator_null_neg.cc
! 98cf0119b5922ad2244515ae8bb166e0  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/requirements/typedefs.cc
! ed098db603008003e814917fa93e404e  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/swap/1.cc
! 0b408d1213f1cd5e68e9c579c167c3d4  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/swap/2.cc
! 9105fb07a88d056d115573ff85770880  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/23053.cc
! c0932b714fa6dc2488df235545876b03  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/23465.cc
! d1de746d97a41c029ed1052d0d8dc2de  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/26127.cc
! e9e7081cc0a10f4554fbef9d11f5f551  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/26132.cc
! 45d6311cf7f019e6fc7e13595aea60a2  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/capacity/29134-set.cc
! 8e80c1cf27072a58a2213f17f26979aa  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/erase/1.cc
! 187d15f6919b22f6853ae65a988b17b2  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/erase/24061-set.cc
! 69dd47c1161c4c3cc1c0b106b7055712  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/find/set1.cc
! 0ac8241ce9dd0835caf681cf36f3afdc  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/insert/24061-set.cc
! ba2469a44ae4288ce67a88ac816ac835  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/insert/set_range.cc
! 82093ff045f2427c1cd84384a8543561  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/insert/set_single.cc
! 72eb39501c457398c97867a3b4173da7  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/requirements/explicit_instantiation.cc
! e74d693a2992635737abfd0a574d3245  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/requirements/iterator_neg.cc
! 723463399d4dfaf12b3e0a0d208727c5  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/requirements/iterator_null_neg.cc
! a3db636d4df83cac6ff22a2241337609  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/requirements/iterators_default_constructor.cc
! 23207a8310400d87cadeaba4d901cac9  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/requirements/typedefs.cc
! 3e07a4c10a1788075c55a3e6e3ebc707  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/swap/1.cc
! 91bd9981579a36f928b6816fbbb9a448  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/swap/2.cc
! 17d7ce700775b83dd6a5ea927f5e50bd  libstdc++-v3/testsuite/tr1/6_containers/utility/19535.cc
! e2eeae604652f240ca68b071ae5276d5  libstdc++-v3/testsuite/tr1/6_containers/utility/pair.cc
! 737d6846ef8c5aaf766842d549cf6563  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/char/cstring.cc
! ae8c883f419e24ee1ba78b88e687936a  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/char/cstring_op.cc
! 13ffc61035488671da70ec3df54fd516  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/char/pstring.cc
! 8fce64f77ddf56b833b167ab0ac86924  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/char/range.cc
! 65c3a36df00bc7a6c175d4d93544c19c  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/char/string.cc
! bf8ed023907f34f26215108165e9c84e  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/char/string_op.cc
! fa5191910169ebcca4ae4010093ad933  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/wchar_t/cstring.cc
! 00f1f348f1a2cb4ff671307981068c9b  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/wchar_t/cstring_op.cc
! 0c3a1e79f534430c7988d1658bef71ad  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/wchar_t/pstring.cc
! f0d0bee88c1eb7221c488b4fa5f24860  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/wchar_t/range.cc
! e74bf16b2dea569dd8134d86c82f9849  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/wchar_t/string.cc
! e370dd3d4bbf27deebdbbbe2c691bc4c  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/wchar_t/string_op.cc
! a1cf8113cc7f84f69f15c5cd39209621  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/char/cstring.cc
! e02a2733397aa289d5896d52ce964024  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/char/default.cc
! b982a6f2b45c46357a675914f10153d2  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/char/pstring.cc
! ec6032c7981d86225f80986ac15b5dd5  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/char/range.cc
! 76b4debb07045baf0e245cd24ed94853  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/char/string.cc
! 277a4b0bc2a951cbdcca8abc7bbf91cb  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/wchar_t/cstring.cc
! 3f368330616770384a150144ef2e7554  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/wchar_t/default.cc
! 03ee45b9133b86f13f9bb2d1473b7798  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/wchar_t/pstring.cc
! 0c30812257d7ef0553e712dccff1bc9e  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/wchar_t/range.cc
! d628a6842649458095fdc9fb2b7bec16  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/wchar_t/string.cc
! 8cd9b9bac33d456c012891629179a130  libstdc++-v3/testsuite/tr1/7_regular_expressions/match_results/ctors/char/default.cc
! 8834ef84278c1b42553856964caf9878  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex/cons/char/c_string_awk.cc
! bbb2351e81232e669ef6c79629c62294  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex/cons/char/c_string_basic.cc
! 8dfdad94947f4641816940d0ec8ac06c  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex/cons/char/c_string_ecma.cc
! 7119da206ee292cb7fd869b74ee3a895  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex/cons/char/c_string_egrep.cc
! b2141533a29f1d82951616893c0c0f93  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex/cons/char/c_string_grep.cc
! 8e032a7da90aa918e9d5bf96f983da5b  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex/cons/char/default.cc
! 6b6020ba9d34696244b3633a0f23d042  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex_traits/char/ctor.cc
! 9b5f1d24bee5332d5c3a4d4be57cef6f  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex_traits/char/translate_nocase.cc
! 99c0ac61a080ff00319b36d0d49c7eef  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex_traits/char/value.cc
! 8304d5650a9e4f50e17232fbc4dc3531  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex_traits/wchar_t/ctor.cc
! cc939519c57b49945543079cd519c8d2  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex_traits/wchar_t/translate_nocase.cc
! 99c0ac61a080ff00319b36d0d49c7eef  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex_traits/wchar_t/value.cc
! 778a143b63ee17207db98f53efe7d69c  libstdc++-v3/testsuite/tr1/8_c_compatibility/cctype/functions.cc
! 0557bb9856f74da7fba47680ffff84c6  libstdc++-v3/testsuite/tr1/8_c_compatibility/cfenv/functions.cc
! b56a88409c0493a602691927a54f0b8c  libstdc++-v3/testsuite/tr1/8_c_compatibility/cfenv/types_std_tr1.cc
! c2f5706585e2264a8b6ea2e414836898  libstdc++-v3/testsuite/tr1/8_c_compatibility/cinttypes/functions.cc
! d53c4ef60e3aa48dd5918ea3d81fcc90  libstdc++-v3/testsuite/tr1/8_c_compatibility/cinttypes/types_std_tr1.cc
! 4f6f0ed2599cf3f3f04625aedefaa69d  libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/51083.cc
! 0480591226eb7f52dbcd7e72f7d1d635  libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/functions.cc
! 8f713dc08ff4a0a5af138a04292cf38c  libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/overloads.cc
! 8791237da90a91df8f4d008ae968803a  libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/overloads_neg.cc
! 07c58eb8d2e9cd02d1dda3a010a5d17c  libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/pow_cmath.cc
! 8232738d54b826ea4f0ac8463044860d  libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/templates.cc
! a6565d72d5bd255e1bbdadc0b9e1ba72  libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/types_std_tr1.cc
! 337232d1ab30acb20efbaa53a46ae0a0  libstdc++-v3/testsuite/tr1/8_c_compatibility/complex/50880.cc
! 08c0b2ae53e751decbc6cec64e844df8  libstdc++-v3/testsuite/tr1/8_c_compatibility/complex/51083.cc
! b09dc802726efd4b7777d439d81cc9cf  libstdc++-v3/testsuite/tr1/8_c_compatibility/complex/functions.cc
! 2e3613d50ae7231975d3cc27f68bd0ed  libstdc++-v3/testsuite/tr1/8_c_compatibility/complex/overloads_float.cc
! bdaff38aa920ac3423e9ad7dc22b366e  libstdc++-v3/testsuite/tr1/8_c_compatibility/complex/overloads_int.cc
! 4fedc5cfece864a8132d38f49d517505  libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdint/types_std_tr1.cc
! 5702a1a5a1e362ea1a0656fba9580bbc  libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdio/functions.cc
! 64c2b70cfec074de5f7f3a880adb25c6  libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdlib/functions.cc
! 528f90437f0eca017b41dba8419c2f83  libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdlib/types_std_tr1.cc
! 85a9763c1ea5585de977015a6f4f2150  libstdc++-v3/testsuite/tr1/8_c_compatibility/cwchar/functions.cc
! 8f18c176eb413482f683f43ce08183e9  libstdc++-v3/testsuite/tr1/8_c_compatibility/cwctype/functions.cc
! bd6dd89f337d58fefb3cf2f61fb49dfe  libstdc++-v3/testsuite/tr1/headers/all.cc
! 36f8dc49489131be44e229a54e91fea2  libstdc++-v3/testsuite/tr1/headers/c++200x/complex.cc
! d2f77b2a3d4619455044b4a355d9d1b7  libstdc++-v3/testsuite/tr1/headers/c++200x/math.cc
! 2a3aaeefba25172f1aaf61d119a471e5  libstdc++-v3/testsuite/tr1/headers/c++200x/using_namespace_std_tr1.cc
! fbed2394b1ff5feb95132667e69c5998  libstdc++-v3/testsuite/tr1/headers/using_namespace_std_tr1.cc
! 4505ee1b4d9415ca0dd684a9a6b56c15  libstdc++-v3/testsuite/tr2/bases/requirements/explicit_instantiation.cc
! 9c146de7df104d6b52d3d841e0c7d0dd  libstdc++-v3/testsuite/tr2/bases/requirements/typedefs.cc
! 3abf4c95c8f38e96b5d4f6d77fdf4e32  libstdc++-v3/testsuite/tr2/bases/value.cc
! ef001f0d957ce337d55af2fb8a95b6dd  libstdc++-v3/testsuite/tr2/direct_bases/requirements/explicit_instantiation.cc
! f6e437553963652cdd06b26dee368dba  libstdc++-v3/testsuite/tr2/direct_bases/requirements/typedefs.cc
! 5480d74b1b769e1258bebfe9bc88dd27  libstdc++-v3/testsuite/tr2/direct_bases/value.cc
! 1e78a4d58edbea13708990395508bd0f  libstdc++-v3/testsuite/tr2/dynamic_bitset/pr58729.cc
! c57a213c84c3a84071e015f5c914d241  libstdc++-v3/testsuite/tr2/headers/all.cc
! a307e5594e85b3ba1df993337c5dfc0b  libstdc++-v3/testsuite/tr2/headers/using_namespace_std_tr2.cc
! d835e5788ab73e1877cc520b447851fb  libstdc++-v3/testsuite/util/common_type/assoc/common_type.hpp
! c455299ec867cd3a1dc3c8884aa0179f  libstdc++-v3/testsuite/util/common_type/assoc/detail/comb_hash_fn_string_form.hpp
! 19d0cd0bba8a08ca131aab6adbfb8414  libstdc++-v3/testsuite/util/common_type/assoc/detail/ds_string_form.hpp
! 18e390ecdf9c3dd1eee26f71a54196e3  libstdc++-v3/testsuite/util/common_type/assoc/detail/list_update_policy_string_form.hpp
! d41bf7def42b8ea0131239ad63bd207f  libstdc++-v3/testsuite/util/common_type/assoc/detail/probe_fn_string_form.hpp
! 57a05fc824783f5dec2ec306fb05fcce  libstdc++-v3/testsuite/util/common_type/assoc/detail/resize_policy_string_form.hpp
! 5dc2b42119f006e4b20692ae3db8cc85  libstdc++-v3/testsuite/util/common_type/assoc/detail/size_policy_string_form.hpp
! 4815e7f5be63e69c2baf16d83421ba16  libstdc++-v3/testsuite/util/common_type/assoc/detail/store_hash_string_form.hpp
! 6e59fbdcd6b90040003365cb2bc33d7a  libstdc++-v3/testsuite/util/common_type/assoc/detail/tree_supports_order_statistics.hpp
! 45287076c14680908efcfbcc90778266  libstdc++-v3/testsuite/util/common_type/assoc/detail/trie_supports_order_statistics.hpp
! 7c924d1ec188a24dedbab33274bb7248  libstdc++-v3/testsuite/util/common_type/assoc/detail/trie_supports_prefix_search.hpp
! 18db70ca33423308ab0d45855cb7d7ab  libstdc++-v3/testsuite/util/common_type/assoc/detail/trigger_policy_string_form.hpp
! 6d2bd669966cb69245e3e5551b88a4d9  libstdc++-v3/testsuite/util/common_type/assoc/native_set.hpp
! bc652701a22c75888d717ae444bfe239  libstdc++-v3/testsuite/util/common_type/assoc/string_form.hpp
! 67f2fc5c5dc6e6e79f099b3b7836840b  libstdc++-v3/testsuite/util/common_type/assoc/template_policy.hpp
! a2364a9880c6172f0a91369a44e6b259  libstdc++-v3/testsuite/util/common_type/priority_queue/common_type.hpp
! fa4121656ee500b1853de0311e5b03dd  libstdc++-v3/testsuite/util/common_type/priority_queue/detail/ds_string_form.hpp
! 87c031afad08d4e555dd2da085e41221  libstdc++-v3/testsuite/util/common_type/priority_queue/string_form.hpp
! 813b4f1e48d048a77606763087a4c9d9  libstdc++-v3/testsuite/util/debug/checks.h
! 18bea98c227e644294d2324c6eaec36e  libstdc++-v3/testsuite/util/debug/unordered_checks.h
! aec1c801974874d52ed1806cdeb7b173  libstdc++-v3/testsuite/util/exception/safety.h
! 6fdf12685c07df7ea30dcee65787261f  libstdc++-v3/testsuite/util/hash_fn/dna_str_limit.hpp
! 73677834f7d9593c3f134e2cc8e5788f  libstdc++-v3/testsuite/util/hash_fn/limit_string_hash_fn.hpp
! 4de5a5e002688a5a715e119137158fd2  libstdc++-v3/testsuite/util/hash_fn/string_hash_fn.hpp
! e40b88e043fc391f6957e1f01a638a1c  libstdc++-v3/testsuite/util/hash_fn/string_ranged_hash_fn.hpp
! 395f312fd7a2c060170a3ea7f1da19da  libstdc++-v3/testsuite/util/hash_fn/string_ranged_probe_fn.hpp
! 6f5d6f560c757080adf6e014a63d7ae6  libstdc++-v3/testsuite/util/io/illegal_input_error.hpp
! d973a3ddf4819879370554b279b9702a  libstdc++-v3/testsuite/util/io/prog_bar.cc
! 0256cbbdba3e26afae2aa405d4e688cc  libstdc++-v3/testsuite/util/io/prog_bar.hpp
! a97a86fe029216b0c94ff488c0c4ef5f  libstdc++-v3/testsuite/util/io/text_populate.hpp
! c5efb564a7c4a04e6f2d0ccad0e16ec6  libstdc++-v3/testsuite/util/io/verified_cmd_line_input.cc
! c58875d2d30f41868f28a1ddb2ce6657  libstdc++-v3/testsuite/util/io/verified_cmd_line_input.hpp
! 4010945e284d385b40ab8cdd642d065c  libstdc++-v3/testsuite/util/io/xml.hpp
! 3cf46e016fa5b4c911c127f986d7a2c6  libstdc++-v3/testsuite/util/io/xml_test_formatter.hpp
! f2ec1d7d4c5d717632c7969ef3cb7dd0  libstdc++-v3/testsuite/util/native_type/native_hash_map.hpp
! a41df2947d036da04e89d68aee3470a0  libstdc++-v3/testsuite/util/native_type/native_hash_multimap.hpp
! 1f7dbadfa8f8c5cbff3a270f86cf7fcc  libstdc++-v3/testsuite/util/native_type/native_hash_set.hpp
! 10943e9e980a6e82830aa4c51af7f1c2  libstdc++-v3/testsuite/util/native_type/native_hash_tag.hpp
! 43c9d666f929384180652a1723767be2  libstdc++-v3/testsuite/util/native_type/native_map.hpp
! 62e33c301a73c88bbd3aa299de3d9953  libstdc++-v3/testsuite/util/native_type/native_multimap.hpp
! 99ba6bdf283f6a7c084aa958be2295ac  libstdc++-v3/testsuite/util/native_type/native_priority_queue.hpp
! 798125a7d9b4237f8f36da786bad460b  libstdc++-v3/testsuite/util/native_type/native_set.hpp
! 2c43aa48432c73784c51e082c8dcd71a  libstdc++-v3/testsuite/util/native_type/native_tree_tag.hpp
! f93621b4889e2d3ac3213cfe00f9932b  libstdc++-v3/testsuite/util/performance/assoc/mem_usage/erase_test.hpp
! dafeb4cc459d51c51e5f19f3b7b7e394  libstdc++-v3/testsuite/util/performance/assoc/mem_usage/multimap_insert_test.hpp
! 064bb6de625f0e69d34f7e92f22fc67f  libstdc++-v3/testsuite/util/performance/assoc/multimap_common_type.hpp
! 85a576073489f7bb1d71dd055a510620  libstdc++-v3/testsuite/util/performance/assoc/timing/common_type.hpp
! 0da730d2a90890b8746ca236b0ac8722  libstdc++-v3/testsuite/util/performance/assoc/timing/find_test.hpp
! 3ec0a89ee83d9d651f081b2baf995eee  libstdc++-v3/testsuite/util/performance/assoc/timing/insert_test.hpp
! f8e2dfcf522c7c584225ccd87eecf7bb  libstdc++-v3/testsuite/util/performance/assoc/timing/multimap_find_test.hpp
! 3f6e6bbfc012ee729015e7e44a19b7a1  libstdc++-v3/testsuite/util/performance/assoc/timing/multimap_insert_test.hpp
! 534fdab17a9a4c33898c45fb3ca40dc6  libstdc++-v3/testsuite/util/performance/assoc/timing/subscript_find_test.hpp
! 821fc64bfdd5af19fc946b6da277fd1a  libstdc++-v3/testsuite/util/performance/assoc/timing/subscript_insert_test.hpp
! 592c91f1e0aa147729684dd136910d61  libstdc++-v3/testsuite/util/performance/assoc/timing/tree_order_statistics_test.hpp
! d468ec595276ee114658a5d24104cbbd  libstdc++-v3/testsuite/util/performance/assoc/timing/tree_split_join_test.hpp
! b749d99ea33af240b7cb6c950b5532d2  libstdc++-v3/testsuite/util/performance/io/xml_formatter.hpp
! 98f5011724148d71e1bfb50273d080a8  libstdc++-v3/testsuite/util/performance/priority_queue/mem_usage/pop_test.hpp
! 4a22ecafdd56f0e02112f81204b098da  libstdc++-v3/testsuite/util/performance/priority_queue/timing/join_test.hpp
! 0160ae41ff2c1424291b1665fb510954  libstdc++-v3/testsuite/util/performance/priority_queue/timing/modify_test.hpp
! c744a8c31f313e327777b572450058de  libstdc++-v3/testsuite/util/performance/priority_queue/timing/push_pop_test.hpp
! b0f0176c58c52003103302e2ecb3c5c7  libstdc++-v3/testsuite/util/performance/priority_queue/timing/push_test.hpp
! 53dc20411461b095875c326589fd95b0  libstdc++-v3/testsuite/util/performance/time/elapsed_timer.cc
! a8cea9e84e9088c62774ae96d5330d58  libstdc++-v3/testsuite/util/performance/time/elapsed_timer.hpp
! f8d65318fbd07dc1a3b75c906d5c069a  libstdc++-v3/testsuite/util/performance/time/timing_test_base.hpp
! 5bb9975dfe9d5deb421699b73a746038  libstdc++-v3/testsuite/util/regression/basic_type.hpp
! 811f4238451fbd063387842140d5d7ce  libstdc++-v3/testsuite/util/regression/common_type.hpp
! 6a1005634b2917b038bc48f96904baef  libstdc++-v3/testsuite/util/regression/rand/assoc/container_rand_regression_test.h
! c2266a6ea0e1feacd997283e7b334807  libstdc++-v3/testsuite/util/regression/rand/assoc/container_rand_regression_test.tcc
! 05260369b79f59ff5a0b9c40b50d3e98  libstdc++-v3/testsuite/util/regression/rand/assoc/rand_regression_test.hpp
! ea460829d2ce7209779ebe6b72a59794  libstdc++-v3/testsuite/util/regression/rand/priority_queue/container_rand_regression_test.h
! 7fd9b273b1861266b2fad7bc9be950b0  libstdc++-v3/testsuite/util/regression/rand/priority_queue/container_rand_regression_test.tcc
! 2a3ce45a50686e50b4cf59212ea72c3b  libstdc++-v3/testsuite/util/regression/rand/priority_queue/rand_regression_test.hpp
! c1cd8cbbae61f3eea241b19fcf5bcb70  libstdc++-v3/testsuite/util/regression/rand/xml_formatter.hpp
! 9b16714ea3745936274776380b9dd1e1  libstdc++-v3/testsuite/util/regression/trait/assoc/get_set_load_trait.hpp
! d02ef18a669b4ac491c34d85e75aecbf  libstdc++-v3/testsuite/util/regression/trait/assoc/get_set_loads_trait.hpp
! d26c2925cc6e4c3a76122c92d004bf37  libstdc++-v3/testsuite/util/regression/trait/assoc/native_type_trait.hpp
! 8f69cf71510ca4bf038cc1ef4609c609  libstdc++-v3/testsuite/util/regression/trait/assoc/node_update_trait.hpp
! d42730f013cdbae34d2743f202177233  libstdc++-v3/testsuite/util/regression/trait/assoc/resize_trait.hpp
! ba66709198bbed12fa2618491d1c8d16  libstdc++-v3/testsuite/util/regression/trait/assoc/to_string.hpp
! 2972e26495045787e0d7278444d2a79b  libstdc++-v3/testsuite/util/regression/trait/assoc/trait.hpp
! 1474ffd89bc6ec27e1ecd442725936ce  libstdc++-v3/testsuite/util/regression/trait/assoc/type_trait.hpp
! d21562d43dc4e57eb37956edc4cad046  libstdc++-v3/testsuite/util/regression/trait/erase_if_fn.hpp
! 6c3bf371cc54e1c68b70a3293cfa745e  libstdc++-v3/testsuite/util/regression/trait/priority_queue/trait.hpp
! 608470868acc182a31ddf5476eccd697  libstdc++-v3/testsuite/util/replacement_memory_operators.h
! b0453eb1e0e60571266de9599829d3c4  libstdc++-v3/testsuite/util/specfun_testcase.h
! 96b49597e0fafd0e3c49fa67768aba61  libstdc++-v3/testsuite/util/statistic/result_recorder.hpp
! a77608e09fade0c163fd6931bdc16230  libstdc++-v3/testsuite/util/statistic/sample_mean.hpp
! 5cf525102c4529eaff53662c0ad7f743  libstdc++-v3/testsuite/util/statistic/sample_mean_confidence_checker.hpp
! 68aeb06c68d2288ec22d9abeafac7cb6  libstdc++-v3/testsuite/util/statistic/sample_variance.hpp
! c162d0d58b59a96c4217b2f73e931ad0  libstdc++-v3/testsuite/util/testsuite_abi.cc
! 94428b502cce6eac674054ea5be46f09  libstdc++-v3/testsuite/util/testsuite_abi.h
! 2e38f4b8d167ba066fac8cce8d2d6273  libstdc++-v3/testsuite/util/testsuite_abi_check.cc
! 5a790c22799a1a54d73144fd18a12696  libstdc++-v3/testsuite/util/testsuite_allocator.cc
! aed02d0daabbab4b4f38a6ea5e405d02  libstdc++-v3/testsuite/util/testsuite_allocator.h
! 3b0d27609680fba71d372134cf626ef2  libstdc++-v3/testsuite/util/testsuite_api.h
! 78aaae6a951a5ade7ead8e4a9ad501d3  libstdc++-v3/testsuite/util/testsuite_character.cc
! 3e90101f566ed9ae7ee000359c0b6274  libstdc++-v3/testsuite/util/testsuite_character.h
! 81475193489ea721dfbeb7646f4cf08f  libstdc++-v3/testsuite/util/testsuite_common_types.h
! 322ab86f43a7c6e13a357b3dab1ea38c  libstdc++-v3/testsuite/util/testsuite_container_traits.h
! b3413c994634bccb5893563b98fbf45a  libstdc++-v3/testsuite/util/testsuite_containergen.h
! e61577889746cc25cd6def82c20b20b5  libstdc++-v3/testsuite/util/testsuite_containers.h
! 0f4de039ac7caf06e1fde22d4b081ee3  libstdc++-v3/testsuite/util/testsuite_counter_type.h
! 75e5eb932604c0d0182037f6d8569a5a  libstdc++-v3/testsuite/util/testsuite_error.h
! 7a3e40684a1b3c48f491ee750aa55632  libstdc++-v3/testsuite/util/testsuite_fs.h
! 99f5f9498e49119361a7d0e234ed529b  libstdc++-v3/testsuite/util/testsuite_greedy_ops.h
! 81a074e7f132053455bf40e9ea4fa373  libstdc++-v3/testsuite/util/testsuite_hooks.cc
! 3747a35ea3b98bc812853fe47a05370e  libstdc++-v3/testsuite/util/testsuite_hooks.h
! 9551cf948cace73120327b858e4eec55  libstdc++-v3/testsuite/util/testsuite_io.h
! 8cba7b6b963469cfc75e96f134110bf8  libstdc++-v3/testsuite/util/testsuite_iterators.h
! 048aa2b91996cea75f31425b5b3cf318  libstdc++-v3/testsuite/util/testsuite_new_operators.h
! 2f061d1930a0e8ebff5e7fd24df9dc47  libstdc++-v3/testsuite/util/testsuite_performance.h
! 13eb454512830e694052f1d674c401a3  libstdc++-v3/testsuite/util/testsuite_random.h
! e6c0851ffc081fa9f1115b17c47e598d  libstdc++-v3/testsuite/util/testsuite_regex.h
! e9aa2dcc7750d26597f66e5ebdc64403  libstdc++-v3/testsuite/util/testsuite_rng.h
! 9e77ccd2ace36f958b3057d8059f137f  libstdc++-v3/testsuite/util/testsuite_rvalref.h
! 592cce736d6f4f682292de6b8e296334  libstdc++-v3/testsuite/util/testsuite_shared.cc
! 7a6e2897f57f1d9bb58553b5043894dd  libstdc++-v3/testsuite/util/testsuite_tr1.h
! c273496d495fdc36798b672086a5b73e  libstdc++-v3/testsuite/util/thread/all.h
  b950d655469c477755252b1e18009596  libtool-ldflags
  7a2b83d2d625a4022b9213ceb75f5897  libtool.m4
! 6acb1fdeba81f922f85709b453134f22  libvtv/ChangeLog
! 62df3278e2c3686ef285c68fe1c5270e  libvtv/Makefile.am
! c5ab21da757717eb9e3848285510342f  libvtv/Makefile.in
! 3b765c4f4a0a0f606db1472bce2b8d29  libvtv/acinclude.m4
  1fadd2a7f8c12da8f434cd33e68d271e  libvtv/aclocal.m4
! c3a6549c8ae21286c2df03c4bafbaa0a  libvtv/configure
! e5c616d7985b82592ed5cda1417fb1d9  libvtv/configure.ac
! ae31d69ad7ee21878b0f555964b87b68  libvtv/configure.tgt
  2caccd848c579fcddd2a8c8106cfaff9  libvtv/scripts/run-testsuite.sh
  09a6150d1619f2508d7844f860b3382c  libvtv/scripts/sum-vtv-counts.c
  c11bb77f9d8171fb781ba38a102c5f70  libvtv/testsuite/Makefile.am
! b9a7d255b64126d136c3af6027966ea7  libvtv/testsuite/Makefile.in
! 692a24b5a8eb7d7718a5e30858eeb5c4  libvtv/testsuite/config/default.exp
  c3135c06118981205f468524e15716be  libvtv/testsuite/lib/libvtv-dg.exp
  82223778c51ff5649921d76fcccb52ed  libvtv/testsuite/lib/libvtv.exp
  dc26824f08dd227e0cba7e7ebc8f4d3a  libvtv/testsuite/libvtv.cc/bb_tests.cc
*************** e18c427700b2de867318b8dfb4ccdc4e  libvtv
*** 75065,75073 ****
  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
! 1ea23bb82bbaf7cacbaee5d5bef9cb17  libvtv/testsuite/libvtv.cc/virtfunc-test.cc
  02687d81e25b3d8b61f75737f0a618a9  libvtv/testsuite/libvtv.cc/virtual_inheritance.cc
! 1676ca2035923c90199d1534d860732f  libvtv/testsuite/libvtv.cc/vtv.exp
  85942493419912cb30bceeaf62d53da8  libvtv/testsuite/libvtv.cc/xlan-test.cc
  db8d39bbb4c4ff373d46fac71832f608  libvtv/testsuite/libvtv.mempool.cc/mempool.exp
  193c781fa2d508105a7f926b49ec5bc1  libvtv/testsuite/libvtv.mempool.cc/mempool_negative.cc
--- 80158,80166 ----
  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
! b75b76ec7ae3c3595aa30d58d6563b09  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
  db8d39bbb4c4ff373d46fac71832f608  libvtv/testsuite/libvtv.mempool.cc/mempool.exp
  193c781fa2d508105a7f926b49ec5bc1  libvtv/testsuite/libvtv.mempool.cc/mempool_negative.cc
*************** dc2332c7582cf3d236d0ee930f63eca3  libvtv
*** 75075,75081 ****
  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
! 52b985a0e3063a5a114fd9c80d576e64  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
--- 80168,80174 ----
  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
! a1b31e2356a19fff42328cea770122e3  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
*** 75088,75126 ****
  fd1ee5c194e5759320643df81103775d  libvtv/testsuite/other-tests/temp_deriv.cc
  a28f0d44162e9d978de21ea4c82b411e  libvtv/testsuite/other-tests/temp_deriv2.cc
  fd44dfd4ba421163f0a14a74988ea97a  libvtv/testsuite/other-tests/temp_deriv3.cc
! 670c5abb02e90b4b1c189360a1e5247d  libvtv/vtv_fail.cc
! 39b0554e5cd90e8daee11aa901611990  libvtv/vtv_fail.h
! 17f378f10d31b0ea0252651a356b89fc  libvtv/vtv_malloc.cc
! bf12fb7316c2e62675bd04a21e7a5644  libvtv/vtv_malloc.h
! 78e32b7631b2a5de3c4b01cbc6705da0  libvtv/vtv_map.h
! 4eb46e822d250b510f6b5733bfc76eb6  libvtv/vtv_rts.cc
! 88caabe017fb805c785d15c3b8f4c40e  libvtv/vtv_rts.h
! 8d8d61f27bf55647d599cf5496abdf59  libvtv/vtv_set.h
! cd997674ad70ed883d545f2687b35af2  libvtv/vtv_utils.cc
! 8f1b5ecc552ea50355dedd9334c68ffb  libvtv/vtv_utils.h
  247597a3fcc5b5aa8bd923351c59d853  ltgcc.m4
  4e65f2f6a05f5eca82ba79c6363aa3db  ltmain.sh
! e847bdf01e4df948cd33c7f4af35e6d5  lto-plugin/ChangeLog
  1d51b0f01f4db0f88d302ab0d691514e  lto-plugin/Makefile.am
  3bd8be597a6d5934a69399816aec878a  lto-plugin/Makefile.in
  b8a21afb1f79664ea28d8892b4907746  lto-plugin/aclocal.m4
  c909bce91afa78f99f55375d7dd5880d  lto-plugin/config.h.in
! 5d380ff9ee6335953d106173ebce616c  lto-plugin/configure
  1fe0ebb67696a42ad37c6e0beaae6aeb  lto-plugin/configure.ac
! 3682e3ccd390106915ec764ee1f3aad1  lto-plugin/lto-plugin.c
! 231dcef2e87921c60194811408edc4e8  lto-plugin/lto-symtab.c
  dee72a6a60e99528b0d17bf3ff9a1e15  ltoptions.m4
  bc2f6032c98896249eadb56177c7d357  ltsugar.m4
  c30cd33c496505f13d9fbdb6970c7c33  ltversion.m4
  293853a13b7e218e3a4342cf85fbbf25  lt~obsolete.m4
! 0043f2b78dbc28d75762534df7293271  maintainer-scripts/ChangeLog
  33c7bc2d2c55956dfac85a05d8a80eff  maintainer-scripts/README
  e70ffb6559f8817db41ee1e69bc60287  maintainer-scripts/branch_changer.py
! 36a1c429023c0a0c2f90889e6cf87125  maintainer-scripts/crontab
! eec75fbf172480e2b3603174c2d887ab  maintainer-scripts/gcc_release
  4b1217d62242596f1d1b439c25dce68f  maintainer-scripts/generate_libstdcxx_web_docs
  33d97164a8610c7abf67eff7d28f47ff  maintainer-scripts/maintainer-addresses
! 54a6d839022f6900ed167f502ed145fb  maintainer-scripts/update_version_svn
  c8dfca01bf19508e40afff1dcd255211  maintainer-scripts/update_web_docs_libstdcxx_svn
  373d5509f5793e70220367f0fb2c94b0  maintainer-scripts/update_web_docs_svn
  5f2a276ee7b8decec541391229d03591  missing
--- 80181,80219 ----
  fd1ee5c194e5759320643df81103775d  libvtv/testsuite/other-tests/temp_deriv.cc
  a28f0d44162e9d978de21ea4c82b411e  libvtv/testsuite/other-tests/temp_deriv2.cc
  fd44dfd4ba421163f0a14a74988ea97a  libvtv/testsuite/other-tests/temp_deriv3.cc
! 1b178d1edd34ed1bf069bf7dc81ed5dc  libvtv/vtv_fail.cc
! 8ec122a1ba1d05a5ea2477e5de3008f8  libvtv/vtv_fail.h
! 12ccaf7270351fc0024f428cf557e767  libvtv/vtv_malloc.cc
! 8125023b21a6f3dcf04fd91e19ede0c7  libvtv/vtv_malloc.h
! 0062d9c41e32dd7a1219326f44cc7b93  libvtv/vtv_map.h
! 22ba7cd5ac0aee52cf777cb37aa97c83  libvtv/vtv_rts.cc
! a333fb4ae821fecf21da4dad5cb360da  libvtv/vtv_rts.h
! 785fdc0a7fab11d10c954e9917bc8cf9  libvtv/vtv_set.h
! 4b347c53c0200b40f6fd1053942cb4d3  libvtv/vtv_utils.cc
! 6fc06e8da97cd20ded65bfed889dd9aa  libvtv/vtv_utils.h
  247597a3fcc5b5aa8bd923351c59d853  ltgcc.m4
  4e65f2f6a05f5eca82ba79c6363aa3db  ltmain.sh
! aa6983622e34ca360f97c2f8a2cf83e2  lto-plugin/ChangeLog
  1d51b0f01f4db0f88d302ab0d691514e  lto-plugin/Makefile.am
  3bd8be597a6d5934a69399816aec878a  lto-plugin/Makefile.in
  b8a21afb1f79664ea28d8892b4907746  lto-plugin/aclocal.m4
  c909bce91afa78f99f55375d7dd5880d  lto-plugin/config.h.in
! bb1e51d1a8f5384e85ea8dbfe0d6eb05  lto-plugin/configure
  1fe0ebb67696a42ad37c6e0beaae6aeb  lto-plugin/configure.ac
! a11b10b027f03590f74cd86cf4bc2239  lto-plugin/lto-plugin.c
! c15449eb4a87edfb5cf4f8a57f09b5c5  lto-plugin/lto-symtab.c
  dee72a6a60e99528b0d17bf3ff9a1e15  ltoptions.m4
  bc2f6032c98896249eadb56177c7d357  ltsugar.m4
  c30cd33c496505f13d9fbdb6970c7c33  ltversion.m4
  293853a13b7e218e3a4342cf85fbbf25  lt~obsolete.m4
! 0c0b907e79e1b13dfd62e32eaa2e0c32  maintainer-scripts/ChangeLog
  33c7bc2d2c55956dfac85a05d8a80eff  maintainer-scripts/README
  e70ffb6559f8817db41ee1e69bc60287  maintainer-scripts/branch_changer.py
! f954f8d3f5f899a163a5e92282c95602  maintainer-scripts/crontab
! c000625815118b3a8b9893a9dc527f42  maintainer-scripts/gcc_release
  4b1217d62242596f1d1b439c25dce68f  maintainer-scripts/generate_libstdcxx_web_docs
  33d97164a8610c7abf67eff7d28f47ff  maintainer-scripts/maintainer-addresses
! 8aa3b579aba0b56914756f540ff4406e  maintainer-scripts/update_version_svn
  c8dfca01bf19508e40afff1dcd255211  maintainer-scripts/update_web_docs_libstdcxx_svn
  373d5509f5793e70220367f0fb2c94b0  maintainer-scripts/update_web_docs_svn
  5f2a276ee7b8decec541391229d03591  missing
*************** fbe2467afef81c41c166173adeb0ee20  mkdep
*** 75130,75136 ****
  cf2baa0854f564a7785307e79f155efc  symlink-tree
  cb06c1be6a41d68b0a65e0c1a91752bc  ylwrap
  03bf3ba8089f4bf475ef4035cf316a47  zlib/CMakeLists.txt
! e7d180c40ff69055fd507a71877d0ea2  zlib/ChangeLog
  2effeeacadeab8edd2c3c4ae856f019d  zlib/ChangeLog.gcj
  0e9a37be8e3b85cc0ccf60504064c297  zlib/ChangeLog.jit
  b7a1991f01daea3efe108a215c5514a5  zlib/FAQ
--- 80223,80229 ----
  cf2baa0854f564a7785307e79f155efc  symlink-tree
  cb06c1be6a41d68b0a65e0c1a91752bc  ylwrap
  03bf3ba8089f4bf475ef4035cf316a47  zlib/CMakeLists.txt
! e664fcfb90fa0847c2e3527447c311a7  zlib/ChangeLog
  2effeeacadeab8edd2c3c4ae856f019d  zlib/ChangeLog.gcj
  0e9a37be8e3b85cc0ccf60504064c297  zlib/ChangeLog.jit
  b7a1991f01daea3efe108a215c5514a5  zlib/FAQ
diff -Nrcpad gcc-7.3.0/Makefile.def gcc-8.1.0/Makefile.def
*** gcc-7.3.0/Makefile.def	Wed Apr 19 18:49:29 2017
--- gcc-8.1.0/Makefile.def	Tue Nov 28 10:35:37 2017
*************** target_modules = { module= libvtv;
*** 144,151 ****
  		   bootstrap=true;
  		   lib_path=.libs;
  		   raw_cxx=true; };
- target_modules = { module= libcilkrts;
- 		   lib_path=.libs; };
  target_modules = { module= liboffloadmic;
  		   lib_path=.libs;
  		   extra_configure_flags='@extra_liboffloadmic_configure_flags@'; };
--- 144,149 ----
*************** dependencies = { module=all-m4; on=all-b
*** 533,539 ****
  // on libgcc and newlib/libgloss.
  lang_env_dependencies = { module=libitm; cxx=true; };
  lang_env_dependencies = { module=libffi; cxx=true; };
- lang_env_dependencies = { module=libcilkrts; 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; };
--- 531,536 ----
*************** dependencies = { module=install-target-l
*** 567,574 ****
  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-libcilkrts; on=install-target-libstdc++-v3; };
- dependencies = { module=install-target-libcilkrts; 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; };
--- 564,569 ----
*************** languages = { language=objc;	gcc-check-t
*** 601,607 ****
  				lib-check-target=check-target-libobjc; };
  languages = { language=obj-c++;	gcc-check-target=check-obj-c++; };
  languages = { language=go;	gcc-check-target=check-go;
! 				lib-check-target=check-target-libgo; };
  languages = { language=brig;	gcc-check-target=check-brig;
  				lib-check-target=check-target-libhsail-rt; };
  
--- 596,603 ----
  				lib-check-target=check-target-libobjc; };
  languages = { language=obj-c++;	gcc-check-target=check-obj-c++; };
  languages = { language=go;	gcc-check-target=check-go;
! 				lib-check-target=check-target-libgo;
! 				lib-check-target=check-gotools; };
  languages = { language=brig;	gcc-check-target=check-brig;
  				lib-check-target=check-target-libhsail-rt; };
  
*************** bootstrap_stage = {
*** 622,628 ****
  bootstrap_stage = {
  	id=profile ; prev=1 ; };
  bootstrap_stage = {
! 	id=feedback ; prev=profile ;
  	bootstrap_target=profiledbootstrap ; };
  bootstrap_stage = {
  	id=autoprofile ; prev=1 ;
--- 618,626 ----
  bootstrap_stage = {
  	id=profile ; prev=1 ; };
  bootstrap_stage = {
! 	id=train; prev=profile ; } ;
! bootstrap_stage = {
! 	id=feedback ; prev=train;
  	bootstrap_target=profiledbootstrap ; };
  bootstrap_stage = {
  	id=autoprofile ; prev=1 ;
diff -Nrcpad gcc-7.3.0/Makefile.in gcc-8.1.0/Makefile.in
*** gcc-7.3.0/Makefile.in	Wed Apr 19 18:49:29 2017
--- gcc-8.1.0/Makefile.in	Tue Nov 28 10:35:37 2017
*************** STAGEprofile_CXXFLAGS = $(STAGEprofile_C
*** 470,475 ****
--- 470,485 ----
  STAGEprofile_TFLAGS = $(STAGE_TFLAGS)
  STAGEprofile_CONFIGURE_FLAGS = $(STAGE_CONFIGURE_FLAGS)
  
+ # Defaults for stage train; some are overridden below.
+ STAGEtrain_CFLAGS = $(STAGE_CFLAGS)
+ STAGEtrain_CXXFLAGS = $(CXXFLAGS)
+ @if target-libstdc++-v3-bootstrap
+ # Override the above if we're bootstrapping C++.
+ STAGEtrain_CXXFLAGS = $(STAGEtrain_CFLAGS)
+ @endif target-libstdc++-v3-bootstrap
+ STAGEtrain_TFLAGS = $(STAGE_TFLAGS)
+ STAGEtrain_CONFIGURE_FLAGS = $(STAGE_CONFIGURE_FLAGS)
+ 
  # Defaults for stage feedback; some are overridden below.
  STAGEfeedback_CFLAGS = $(STAGE_CFLAGS)
  STAGEfeedback_CXXFLAGS = $(CXXFLAGS)
*************** STAGE1_CONFIGURE_FLAGS = --disable-inter
*** 522,529 ****
  STAGEprofile_CFLAGS = $(STAGE2_CFLAGS) -fprofile-generate
  STAGEprofile_TFLAGS = $(STAGE2_TFLAGS)
  
! STAGEfeedback_CFLAGS = $(STAGE3_CFLAGS) -fprofile-use
! STAGEfeedback_TFLAGS = $(STAGE3_TFLAGS)
  
  STAGEautoprofile_CFLAGS = $(STAGE2_CFLAGS) -g
  STAGEautoprofile_TFLAGS = $(STAGE2_TFLAGS)
--- 532,542 ----
  STAGEprofile_CFLAGS = $(STAGE2_CFLAGS) -fprofile-generate
  STAGEprofile_TFLAGS = $(STAGE2_TFLAGS)
  
! STAGEtrain_CFLAGS = $(STAGE3_CFLAGS)
! STAGEtrain_TFLAGS = $(STAGE3_TFLAGS)
! 
! STAGEfeedback_CFLAGS = $(STAGE4_CFLAGS) -fprofile-use
! STAGEfeedback_TFLAGS = $(STAGE4_TFLAGS)
  
  STAGEautoprofile_CFLAGS = $(STAGE2_CFLAGS) -g
  STAGEautoprofile_TFLAGS = $(STAGE2_TFLAGS)
*************** all:
*** 599,605 ****
  
  # 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_libmpx)$(TARGET_LIB_PATH_libvtv)$(TARGET_LIB_PATH_libcilkrts)$(TARGET_LIB_PATH_liboffloadmic)$(TARGET_LIB_PATH_libssp)$(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:
--- 612,618 ----
  
  # 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_libmpx)$(TARGET_LIB_PATH_libvtv)$(TARGET_LIB_PATH_liboffloadmic)$(TARGET_LIB_PATH_libssp)$(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_libmpx = $$r/$(TARGET_SU
*** 617,626 ****
  TARGET_LIB_PATH_libvtv = $$r/$(TARGET_SUBDIR)/libvtv/.libs:
  @endif target-libvtv
  
- @if target-libcilkrts
- TARGET_LIB_PATH_libcilkrts = $$r/$(TARGET_SUBDIR)/libcilkrts/.libs:
- @endif target-libcilkrts
- 
  @if target-liboffloadmic
  TARGET_LIB_PATH_liboffloadmic = $$r/$(TARGET_SUBDIR)/liboffloadmic/.libs:
  @endif target-liboffloadmic
--- 630,635 ----
*************** BASE_FLAGS_TO_PASS = \
*** 805,810 ****
--- 814,822 ----
  	"STAGEprofile_CFLAGS=$(STAGEprofile_CFLAGS)" \
  	"STAGEprofile_CXXFLAGS=$(STAGEprofile_CXXFLAGS)" \
  	"STAGEprofile_TFLAGS=$(STAGEprofile_TFLAGS)" \
+ 	"STAGEtrain_CFLAGS=$(STAGEtrain_CFLAGS)" \
+ 	"STAGEtrain_CXXFLAGS=$(STAGEtrain_CXXFLAGS)" \
+ 	"STAGEtrain_TFLAGS=$(STAGEtrain_TFLAGS)" \
  	"STAGEfeedback_CFLAGS=$(STAGEfeedback_CFLAGS)" \
  	"STAGEfeedback_CXXFLAGS=$(STAGEfeedback_CXXFLAGS)" \
  	"STAGEfeedback_TFLAGS=$(STAGEfeedback_TFLAGS)" \
*************** configure-target:  \
*** 981,987 ****
      maybe-configure-target-libsanitizer \
      maybe-configure-target-libmpx \
      maybe-configure-target-libvtv \
-     maybe-configure-target-libcilkrts \
      maybe-configure-target-liboffloadmic \
      maybe-configure-target-libssp \
      maybe-configure-target-newlib \
--- 993,998 ----
*************** all-target: maybe-all-target-libmpx
*** 1145,1151 ****
  @if target-libvtv-no-bootstrap
  all-target: maybe-all-target-libvtv
  @endif target-libvtv-no-bootstrap
- all-target: maybe-all-target-libcilkrts
  all-target: maybe-all-target-liboffloadmic
  all-target: maybe-all-target-libssp
  all-target: maybe-all-target-newlib
--- 1156,1161 ----
*************** info-target: maybe-info-target-libstdc++
*** 1240,1246 ****
  info-target: maybe-info-target-libsanitizer
  info-target: maybe-info-target-libmpx
  info-target: maybe-info-target-libvtv
- info-target: maybe-info-target-libcilkrts
  info-target: maybe-info-target-liboffloadmic
  info-target: maybe-info-target-libssp
  info-target: maybe-info-target-newlib
--- 1250,1255 ----
*************** dvi-target: maybe-dvi-target-libstdc++-v
*** 1326,1332 ****
  dvi-target: maybe-dvi-target-libsanitizer
  dvi-target: maybe-dvi-target-libmpx
  dvi-target: maybe-dvi-target-libvtv
- dvi-target: maybe-dvi-target-libcilkrts
  dvi-target: maybe-dvi-target-liboffloadmic
  dvi-target: maybe-dvi-target-libssp
  dvi-target: maybe-dvi-target-newlib
--- 1335,1340 ----
*************** pdf-target: maybe-pdf-target-libstdc++-v
*** 1412,1418 ****
  pdf-target: maybe-pdf-target-libsanitizer
  pdf-target: maybe-pdf-target-libmpx
  pdf-target: maybe-pdf-target-libvtv
- pdf-target: maybe-pdf-target-libcilkrts
  pdf-target: maybe-pdf-target-liboffloadmic
  pdf-target: maybe-pdf-target-libssp
  pdf-target: maybe-pdf-target-newlib
--- 1420,1425 ----
*************** html-target: maybe-html-target-libstdc++
*** 1498,1504 ****
  html-target: maybe-html-target-libsanitizer
  html-target: maybe-html-target-libmpx
  html-target: maybe-html-target-libvtv
- html-target: maybe-html-target-libcilkrts
  html-target: maybe-html-target-liboffloadmic
  html-target: maybe-html-target-libssp
  html-target: maybe-html-target-newlib
--- 1505,1510 ----
*************** TAGS-target: maybe-TAGS-target-libstdc++
*** 1584,1590 ****
  TAGS-target: maybe-TAGS-target-libsanitizer
  TAGS-target: maybe-TAGS-target-libmpx
  TAGS-target: maybe-TAGS-target-libvtv
- TAGS-target: maybe-TAGS-target-libcilkrts
  TAGS-target: maybe-TAGS-target-liboffloadmic
  TAGS-target: maybe-TAGS-target-libssp
  TAGS-target: maybe-TAGS-target-newlib
--- 1590,1595 ----
*************** install-info-target: maybe-install-info-
*** 1670,1676 ****
  install-info-target: maybe-install-info-target-libsanitizer
  install-info-target: maybe-install-info-target-libmpx
  install-info-target: maybe-install-info-target-libvtv
- install-info-target: maybe-install-info-target-libcilkrts
  install-info-target: maybe-install-info-target-liboffloadmic
  install-info-target: maybe-install-info-target-libssp
  install-info-target: maybe-install-info-target-newlib
--- 1675,1680 ----
*************** install-pdf-target: maybe-install-pdf-ta
*** 1756,1762 ****
  install-pdf-target: maybe-install-pdf-target-libsanitizer
  install-pdf-target: maybe-install-pdf-target-libmpx
  install-pdf-target: maybe-install-pdf-target-libvtv
- install-pdf-target: maybe-install-pdf-target-libcilkrts
  install-pdf-target: maybe-install-pdf-target-liboffloadmic
  install-pdf-target: maybe-install-pdf-target-libssp
  install-pdf-target: maybe-install-pdf-target-newlib
--- 1760,1765 ----
*************** install-html-target: maybe-install-html-
*** 1842,1848 ****
  install-html-target: maybe-install-html-target-libsanitizer
  install-html-target: maybe-install-html-target-libmpx
  install-html-target: maybe-install-html-target-libvtv
- install-html-target: maybe-install-html-target-libcilkrts
  install-html-target: maybe-install-html-target-liboffloadmic
  install-html-target: maybe-install-html-target-libssp
  install-html-target: maybe-install-html-target-newlib
--- 1845,1850 ----
*************** installcheck-target: maybe-installcheck-
*** 1928,1934 ****
  installcheck-target: maybe-installcheck-target-libsanitizer
  installcheck-target: maybe-installcheck-target-libmpx
  installcheck-target: maybe-installcheck-target-libvtv
- installcheck-target: maybe-installcheck-target-libcilkrts
  installcheck-target: maybe-installcheck-target-liboffloadmic
  installcheck-target: maybe-installcheck-target-libssp
  installcheck-target: maybe-installcheck-target-newlib
--- 1930,1935 ----
*************** mostlyclean-target: maybe-mostlyclean-ta
*** 2014,2020 ****
  mostlyclean-target: maybe-mostlyclean-target-libsanitizer
  mostlyclean-target: maybe-mostlyclean-target-libmpx
  mostlyclean-target: maybe-mostlyclean-target-libvtv
- mostlyclean-target: maybe-mostlyclean-target-libcilkrts
  mostlyclean-target: maybe-mostlyclean-target-liboffloadmic
  mostlyclean-target: maybe-mostlyclean-target-libssp
  mostlyclean-target: maybe-mostlyclean-target-newlib
--- 2015,2020 ----
*************** clean-target: maybe-clean-target-libstdc
*** 2100,2106 ****
  clean-target: maybe-clean-target-libsanitizer
  clean-target: maybe-clean-target-libmpx
  clean-target: maybe-clean-target-libvtv
- clean-target: maybe-clean-target-libcilkrts
  clean-target: maybe-clean-target-liboffloadmic
  clean-target: maybe-clean-target-libssp
  clean-target: maybe-clean-target-newlib
--- 2100,2105 ----
*************** distclean-target: maybe-distclean-target
*** 2186,2192 ****
  distclean-target: maybe-distclean-target-libsanitizer
  distclean-target: maybe-distclean-target-libmpx
  distclean-target: maybe-distclean-target-libvtv
- distclean-target: maybe-distclean-target-libcilkrts
  distclean-target: maybe-distclean-target-liboffloadmic
  distclean-target: maybe-distclean-target-libssp
  distclean-target: maybe-distclean-target-newlib
--- 2185,2190 ----
*************** maintainer-clean-target: maybe-maintaine
*** 2272,2278 ****
  maintainer-clean-target: maybe-maintainer-clean-target-libsanitizer
  maintainer-clean-target: maybe-maintainer-clean-target-libmpx
  maintainer-clean-target: maybe-maintainer-clean-target-libvtv
- maintainer-clean-target: maybe-maintainer-clean-target-libcilkrts
  maintainer-clean-target: maybe-maintainer-clean-target-liboffloadmic
  maintainer-clean-target: maybe-maintainer-clean-target-libssp
  maintainer-clean-target: maybe-maintainer-clean-target-newlib
--- 2270,2275 ----
*************** check-target:  \
*** 2414,2420 ****
      maybe-check-target-libsanitizer \
      maybe-check-target-libmpx \
      maybe-check-target-libvtv \
-     maybe-check-target-libcilkrts \
      maybe-check-target-liboffloadmic \
      maybe-check-target-libssp \
      maybe-check-target-newlib \
--- 2411,2416 ----
*************** install-target:  \
*** 2596,2602 ****
      maybe-install-target-libsanitizer \
      maybe-install-target-libmpx \
      maybe-install-target-libvtv \
-     maybe-install-target-libcilkrts \
      maybe-install-target-liboffloadmic \
      maybe-install-target-libssp \
      maybe-install-target-newlib \
--- 2592,2597 ----
*************** install-strip-target:  \
*** 2702,2708 ****
      maybe-install-strip-target-libsanitizer \
      maybe-install-strip-target-libmpx \
      maybe-install-strip-target-libvtv \
-     maybe-install-strip-target-libcilkrts \
      maybe-install-strip-target-liboffloadmic \
      maybe-install-strip-target-libssp \
      maybe-install-strip-target-newlib \
--- 2697,2702 ----
*************** configure-stageprofile-bfd:
*** 3367,3372 ****
--- 3361,3399 ----
  	  $(STAGEprofile_CONFIGURE_FLAGS)
  @endif bfd-bootstrap
  
+ .PHONY: configure-stagetrain-bfd maybe-configure-stagetrain-bfd
+ maybe-configure-stagetrain-bfd:
+ @if bfd-bootstrap
+ maybe-configure-stagetrain-bfd: configure-stagetrain-bfd
+ configure-stagetrain-bfd:
+ 	@[ $(current_stage) = stagetrain ] || $(MAKE) stagetrain-start
+ 	@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/bfd
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGEtrain_TFLAGS)"; \
+ 	test ! -f $(HOST_SUBDIR)/bfd/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)/bfd; \
+ 	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/bfd; \
+ 	cd $(HOST_SUBDIR)/bfd || exit 1; \
+ 	case $(srcdir) in \
+ 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ 	  *) topdir=`echo $(HOST_SUBDIR)/bfd/ | \
+ 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ 	esac; \
+ 	module_srcdir=bfd; \
+ 	$(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 bfd-bootstrap
+ 
  .PHONY: configure-stagefeedback-bfd maybe-configure-stagefeedback-bfd
  maybe-configure-stagefeedback-bfd:
  @if bfd-bootstrap
*************** clean-stageprofile-bfd:
*** 3700,3705 ****
--- 3727,3774 ----
  @endif bfd-bootstrap
  
  
+ .PHONY: all-stagetrain-bfd maybe-all-stagetrain-bfd
+ .PHONY: clean-stagetrain-bfd maybe-clean-stagetrain-bfd
+ maybe-all-stagetrain-bfd:
+ maybe-clean-stagetrain-bfd:
+ @if bfd-bootstrap
+ maybe-all-stagetrain-bfd: all-stagetrain-bfd
+ all-stagetrain: all-stagetrain-bfd
+ TARGET-stagetrain-bfd = $(TARGET-bfd)
+ all-stagetrain-bfd: configure-stagetrain-bfd
+ 	@[ $(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)/bfd && \
+ 	 \
+ 	$(MAKE) $(BASE_FLAGS_TO_PASS) \
+ 		CFLAGS="$(STAGEtrain_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-bfd)
+ 
+ maybe-clean-stagetrain-bfd: clean-stagetrain-bfd
+ clean-stagetrain: clean-stagetrain-bfd
+ clean-stagetrain-bfd:
+ 	@if [ $(current_stage) = stagetrain ]; then \
+ 	  [ -f $(HOST_SUBDIR)/bfd/Makefile ] || exit 0; \
+ 	else \
+ 	  [ -f $(HOST_SUBDIR)/stagetrain-bfd/Makefile ] || exit 0; \
+ 	  $(MAKE) stagetrain-start; \
+ 	fi; \
+ 	cd $(HOST_SUBDIR)/bfd && \
+ 	$(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  clean
+ @endif bfd-bootstrap
+ 
+ 
  .PHONY: all-stagefeedback-bfd maybe-all-stagefeedback-bfd
  .PHONY: clean-stagefeedback-bfd maybe-clean-stagefeedback-bfd
  maybe-all-stagefeedback-bfd:
*************** configure-stageprofile-opcodes:
*** 4397,4402 ****
--- 4466,4504 ----
  	  $(STAGEprofile_CONFIGURE_FLAGS)
  @endif opcodes-bootstrap
  
+ .PHONY: configure-stagetrain-opcodes maybe-configure-stagetrain-opcodes
+ maybe-configure-stagetrain-opcodes:
+ @if opcodes-bootstrap
+ maybe-configure-stagetrain-opcodes: configure-stagetrain-opcodes
+ configure-stagetrain-opcodes:
+ 	@[ $(current_stage) = stagetrain ] || $(MAKE) stagetrain-start
+ 	@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/opcodes
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGEtrain_TFLAGS)"; \
+ 	test ! -f $(HOST_SUBDIR)/opcodes/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)/opcodes; \
+ 	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/opcodes; \
+ 	cd $(HOST_SUBDIR)/opcodes || exit 1; \
+ 	case $(srcdir) in \
+ 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ 	  *) topdir=`echo $(HOST_SUBDIR)/opcodes/ | \
+ 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ 	esac; \
+ 	module_srcdir=opcodes; \
+ 	$(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 opcodes-bootstrap
+ 
  .PHONY: configure-stagefeedback-opcodes maybe-configure-stagefeedback-opcodes
  maybe-configure-stagefeedback-opcodes:
  @if opcodes-bootstrap
*************** clean-stageprofile-opcodes:
*** 4730,4735 ****
--- 4832,4879 ----
  @endif opcodes-bootstrap
  
  
+ .PHONY: all-stagetrain-opcodes maybe-all-stagetrain-opcodes
+ .PHONY: clean-stagetrain-opcodes maybe-clean-stagetrain-opcodes
+ maybe-all-stagetrain-opcodes:
+ maybe-clean-stagetrain-opcodes:
+ @if opcodes-bootstrap
+ maybe-all-stagetrain-opcodes: all-stagetrain-opcodes
+ all-stagetrain: all-stagetrain-opcodes
+ TARGET-stagetrain-opcodes = $(TARGET-opcodes)
+ all-stagetrain-opcodes: configure-stagetrain-opcodes
+ 	@[ $(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)/opcodes && \
+ 	 \
+ 	$(MAKE) $(BASE_FLAGS_TO_PASS) \
+ 		CFLAGS="$(STAGEtrain_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-opcodes)
+ 
+ maybe-clean-stagetrain-opcodes: clean-stagetrain-opcodes
+ clean-stagetrain: clean-stagetrain-opcodes
+ clean-stagetrain-opcodes:
+ 	@if [ $(current_stage) = stagetrain ]; then \
+ 	  [ -f $(HOST_SUBDIR)/opcodes/Makefile ] || exit 0; \
+ 	else \
+ 	  [ -f $(HOST_SUBDIR)/stagetrain-opcodes/Makefile ] || exit 0; \
+ 	  $(MAKE) stagetrain-start; \
+ 	fi; \
+ 	cd $(HOST_SUBDIR)/opcodes && \
+ 	$(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  clean
+ @endif opcodes-bootstrap
+ 
+ 
  .PHONY: all-stagefeedback-opcodes maybe-all-stagefeedback-opcodes
  .PHONY: clean-stagefeedback-opcodes maybe-clean-stagefeedback-opcodes
  maybe-all-stagefeedback-opcodes:
*************** configure-stageprofile-binutils:
*** 5427,5432 ****
--- 5571,5609 ----
  	  $(STAGEprofile_CONFIGURE_FLAGS)
  @endif binutils-bootstrap
  
+ .PHONY: configure-stagetrain-binutils maybe-configure-stagetrain-binutils
+ maybe-configure-stagetrain-binutils:
+ @if binutils-bootstrap
+ maybe-configure-stagetrain-binutils: configure-stagetrain-binutils
+ configure-stagetrain-binutils:
+ 	@[ $(current_stage) = stagetrain ] || $(MAKE) stagetrain-start
+ 	@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/binutils
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGEtrain_TFLAGS)"; \
+ 	test ! -f $(HOST_SUBDIR)/binutils/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)/binutils; \
+ 	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/binutils; \
+ 	cd $(HOST_SUBDIR)/binutils || exit 1; \
+ 	case $(srcdir) in \
+ 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ 	  *) topdir=`echo $(HOST_SUBDIR)/binutils/ | \
+ 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ 	esac; \
+ 	module_srcdir=binutils; \
+ 	$(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 binutils-bootstrap
+ 
  .PHONY: configure-stagefeedback-binutils maybe-configure-stagefeedback-binutils
  maybe-configure-stagefeedback-binutils:
  @if binutils-bootstrap
*************** clean-stageprofile-binutils:
*** 5760,5765 ****
--- 5937,5984 ----
  @endif binutils-bootstrap
  
  
+ .PHONY: all-stagetrain-binutils maybe-all-stagetrain-binutils
+ .PHONY: clean-stagetrain-binutils maybe-clean-stagetrain-binutils
+ maybe-all-stagetrain-binutils:
+ maybe-clean-stagetrain-binutils:
+ @if binutils-bootstrap
+ maybe-all-stagetrain-binutils: all-stagetrain-binutils
+ all-stagetrain: all-stagetrain-binutils
+ TARGET-stagetrain-binutils = $(TARGET-binutils)
+ all-stagetrain-binutils: configure-stagetrain-binutils
+ 	@[ $(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)/binutils && \
+ 	 \
+ 	$(MAKE) $(BASE_FLAGS_TO_PASS) \
+ 		CFLAGS="$(STAGEtrain_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-binutils)
+ 
+ maybe-clean-stagetrain-binutils: clean-stagetrain-binutils
+ clean-stagetrain: clean-stagetrain-binutils
+ clean-stagetrain-binutils:
+ 	@if [ $(current_stage) = stagetrain ]; then \
+ 	  [ -f $(HOST_SUBDIR)/binutils/Makefile ] || exit 0; \
+ 	else \
+ 	  [ -f $(HOST_SUBDIR)/stagetrain-binutils/Makefile ] || exit 0; \
+ 	  $(MAKE) stagetrain-start; \
+ 	fi; \
+ 	cd $(HOST_SUBDIR)/binutils && \
+ 	$(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  clean
+ @endif binutils-bootstrap
+ 
+ 
  .PHONY: all-stagefeedback-binutils maybe-all-stagefeedback-binutils
  .PHONY: clean-stagefeedback-binutils maybe-clean-stagefeedback-binutils
  maybe-all-stagefeedback-binutils:
*************** configure-stageprofile-fixincludes:
*** 8668,8673 ****
--- 8887,8925 ----
  	  $(STAGEprofile_CONFIGURE_FLAGS)
  @endif fixincludes-bootstrap
  
+ .PHONY: configure-stagetrain-fixincludes maybe-configure-stagetrain-fixincludes
+ maybe-configure-stagetrain-fixincludes:
+ @if fixincludes-bootstrap
+ maybe-configure-stagetrain-fixincludes: configure-stagetrain-fixincludes
+ configure-stagetrain-fixincludes:
+ 	@[ $(current_stage) = stagetrain ] || $(MAKE) stagetrain-start
+ 	@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/fixincludes
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGEtrain_TFLAGS)"; \
+ 	test ! -f $(HOST_SUBDIR)/fixincludes/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)/fixincludes; \
+ 	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/fixincludes; \
+ 	cd $(HOST_SUBDIR)/fixincludes || exit 1; \
+ 	case $(srcdir) in \
+ 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ 	  *) topdir=`echo $(HOST_SUBDIR)/fixincludes/ | \
+ 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ 	esac; \
+ 	module_srcdir=fixincludes; \
+ 	$(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 fixincludes-bootstrap
+ 
  .PHONY: configure-stagefeedback-fixincludes maybe-configure-stagefeedback-fixincludes
  maybe-configure-stagefeedback-fixincludes:
  @if fixincludes-bootstrap
*************** clean-stageprofile-fixincludes:
*** 9001,9006 ****
--- 9253,9300 ----
  @endif fixincludes-bootstrap
  
  
+ .PHONY: all-stagetrain-fixincludes maybe-all-stagetrain-fixincludes
+ .PHONY: clean-stagetrain-fixincludes maybe-clean-stagetrain-fixincludes
+ maybe-all-stagetrain-fixincludes:
+ maybe-clean-stagetrain-fixincludes:
+ @if fixincludes-bootstrap
+ maybe-all-stagetrain-fixincludes: all-stagetrain-fixincludes
+ all-stagetrain: all-stagetrain-fixincludes
+ TARGET-stagetrain-fixincludes = $(TARGET-fixincludes)
+ all-stagetrain-fixincludes: configure-stagetrain-fixincludes
+ 	@[ $(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)/fixincludes && \
+ 	 \
+ 	$(MAKE) $(BASE_FLAGS_TO_PASS) \
+ 		CFLAGS="$(STAGEtrain_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-fixincludes)
+ 
+ maybe-clean-stagetrain-fixincludes: clean-stagetrain-fixincludes
+ clean-stagetrain: clean-stagetrain-fixincludes
+ clean-stagetrain-fixincludes:
+ 	@if [ $(current_stage) = stagetrain ]; then \
+ 	  [ -f $(HOST_SUBDIR)/fixincludes/Makefile ] || exit 0; \
+ 	else \
+ 	  [ -f $(HOST_SUBDIR)/stagetrain-fixincludes/Makefile ] || exit 0; \
+ 	  $(MAKE) stagetrain-start; \
+ 	fi; \
+ 	cd $(HOST_SUBDIR)/fixincludes && \
+ 	$(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  clean
+ @endif fixincludes-bootstrap
+ 
+ 
  .PHONY: all-stagefeedback-fixincludes maybe-all-stagefeedback-fixincludes
  .PHONY: clean-stagefeedback-fixincludes maybe-clean-stagefeedback-fixincludes
  maybe-all-stagefeedback-fixincludes:
*************** configure-stageprofile-gas:
*** 10127,10132 ****
--- 10421,10459 ----
  	  $(STAGEprofile_CONFIGURE_FLAGS)
  @endif gas-bootstrap
  
+ .PHONY: configure-stagetrain-gas maybe-configure-stagetrain-gas
+ maybe-configure-stagetrain-gas:
+ @if gas-bootstrap
+ maybe-configure-stagetrain-gas: configure-stagetrain-gas
+ configure-stagetrain-gas:
+ 	@[ $(current_stage) = stagetrain ] || $(MAKE) stagetrain-start
+ 	@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gas
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGEtrain_TFLAGS)"; \
+ 	test ! -f $(HOST_SUBDIR)/gas/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)/gas; \
+ 	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gas; \
+ 	cd $(HOST_SUBDIR)/gas || exit 1; \
+ 	case $(srcdir) in \
+ 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ 	  *) topdir=`echo $(HOST_SUBDIR)/gas/ | \
+ 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ 	esac; \
+ 	module_srcdir=gas; \
+ 	$(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 gas-bootstrap
+ 
  .PHONY: configure-stagefeedback-gas maybe-configure-stagefeedback-gas
  maybe-configure-stagefeedback-gas:
  @if gas-bootstrap
*************** clean-stageprofile-gas:
*** 10460,10465 ****
--- 10787,10834 ----
  @endif gas-bootstrap
  
  
+ .PHONY: all-stagetrain-gas maybe-all-stagetrain-gas
+ .PHONY: clean-stagetrain-gas maybe-clean-stagetrain-gas
+ maybe-all-stagetrain-gas:
+ maybe-clean-stagetrain-gas:
+ @if gas-bootstrap
+ maybe-all-stagetrain-gas: all-stagetrain-gas
+ all-stagetrain: all-stagetrain-gas
+ TARGET-stagetrain-gas = $(TARGET-gas)
+ all-stagetrain-gas: configure-stagetrain-gas
+ 	@[ $(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)/gas && \
+ 	 \
+ 	$(MAKE) $(BASE_FLAGS_TO_PASS) \
+ 		CFLAGS="$(STAGEtrain_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-gas)
+ 
+ maybe-clean-stagetrain-gas: clean-stagetrain-gas
+ clean-stagetrain: clean-stagetrain-gas
+ clean-stagetrain-gas:
+ 	@if [ $(current_stage) = stagetrain ]; then \
+ 	  [ -f $(HOST_SUBDIR)/gas/Makefile ] || exit 0; \
+ 	else \
+ 	  [ -f $(HOST_SUBDIR)/stagetrain-gas/Makefile ] || exit 0; \
+ 	  $(MAKE) stagetrain-start; \
+ 	fi; \
+ 	cd $(HOST_SUBDIR)/gas && \
+ 	$(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  clean
+ @endif gas-bootstrap
+ 
+ 
  .PHONY: all-stagefeedback-gas maybe-all-stagefeedback-gas
  .PHONY: clean-stagefeedback-gas maybe-clean-stagefeedback-gas
  maybe-all-stagefeedback-gas:
*************** configure-stageprofile-gcc:
*** 11157,11162 ****
--- 11526,11564 ----
  	  $(STAGEprofile_CONFIGURE_FLAGS)
  @endif gcc-bootstrap
  
+ .PHONY: configure-stagetrain-gcc maybe-configure-stagetrain-gcc
+ maybe-configure-stagetrain-gcc:
+ @if gcc-bootstrap
+ maybe-configure-stagetrain-gcc: configure-stagetrain-gcc
+ configure-stagetrain-gcc:
+ 	@[ $(current_stage) = stagetrain ] || $(MAKE) stagetrain-start
+ 	@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gcc
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGEtrain_TFLAGS)"; \
+ 	test ! -f $(HOST_SUBDIR)/gcc/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)/gcc; \
+ 	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gcc; \
+ 	cd $(HOST_SUBDIR)/gcc || exit 1; \
+ 	case $(srcdir) in \
+ 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ 	  *) topdir=`echo $(HOST_SUBDIR)/gcc/ | \
+ 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ 	esac; \
+ 	module_srcdir=gcc; \
+ 	$(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 gcc-bootstrap
+ 
  .PHONY: configure-stagefeedback-gcc maybe-configure-stagefeedback-gcc
  maybe-configure-stagefeedback-gcc:
  @if gcc-bootstrap
*************** clean-stageprofile-gcc:
*** 11490,11495 ****
--- 11892,11939 ----
  @endif gcc-bootstrap
  
  
+ .PHONY: all-stagetrain-gcc maybe-all-stagetrain-gcc
+ .PHONY: clean-stagetrain-gcc maybe-clean-stagetrain-gcc
+ maybe-all-stagetrain-gcc:
+ maybe-clean-stagetrain-gcc:
+ @if gcc-bootstrap
+ maybe-all-stagetrain-gcc: all-stagetrain-gcc
+ all-stagetrain: all-stagetrain-gcc
+ TARGET-stagetrain-gcc = $(TARGET-gcc)
+ all-stagetrain-gcc: configure-stagetrain-gcc
+ 	@[ $(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)/gcc && \
+ 	 \
+ 	$(MAKE) $(BASE_FLAGS_TO_PASS) \
+ 		CFLAGS="$(STAGEtrain_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) $(EXTRA_GCC_FLAGS) \
+ 		TFLAGS="$(STAGEtrain_TFLAGS)"  \
+ 		$(TARGET-stagetrain-gcc)
+ 
+ maybe-clean-stagetrain-gcc: clean-stagetrain-gcc
+ clean-stagetrain: clean-stagetrain-gcc
+ clean-stagetrain-gcc:
+ 	@if [ $(current_stage) = stagetrain ]; then \
+ 	  [ -f $(HOST_SUBDIR)/gcc/Makefile ] || exit 0; \
+ 	else \
+ 	  [ -f $(HOST_SUBDIR)/stagetrain-gcc/Makefile ] || exit 0; \
+ 	  $(MAKE) stagetrain-start; \
+ 	fi; \
+ 	cd $(HOST_SUBDIR)/gcc && \
+ 	$(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) $(EXTRA_GCC_FLAGS) clean
+ @endif gcc-bootstrap
+ 
+ 
  .PHONY: all-stagefeedback-gcc maybe-all-stagefeedback-gcc
  .PHONY: clean-stagefeedback-gcc maybe-clean-stagefeedback-gcc
  maybe-all-stagefeedback-gcc:
*************** configure-stageprofile-gmp:
*** 12192,12197 ****
--- 12636,12675 ----
  	  --disable-shared LEX="touch lex.yy.c"
  @endif gmp-bootstrap
  
+ .PHONY: configure-stagetrain-gmp maybe-configure-stagetrain-gmp
+ maybe-configure-stagetrain-gmp:
+ @if gmp-bootstrap
+ maybe-configure-stagetrain-gmp: configure-stagetrain-gmp
+ configure-stagetrain-gmp:
+ 	@[ $(current_stage) = stagetrain ] || $(MAKE) stagetrain-start
+ 	@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gmp
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGEtrain_TFLAGS)"; \
+ 	test ! -f $(HOST_SUBDIR)/gmp/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)/gmp; \
+ 	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gmp; \
+ 	cd $(HOST_SUBDIR)/gmp || exit 1; \
+ 	case $(srcdir) in \
+ 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ 	  *) topdir=`echo $(HOST_SUBDIR)/gmp/ | \
+ 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ 	esac; \
+ 	module_srcdir=gmp; \
+ 	$(SHELL) $$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} \
+ 	  --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
  maybe-configure-stagefeedback-gmp:
  @if gmp-bootstrap
*************** clean-stageprofile-gmp:
*** 12528,12533 ****
--- 13006,13053 ----
  @endif gmp-bootstrap
  
  
+ .PHONY: all-stagetrain-gmp maybe-all-stagetrain-gmp
+ .PHONY: clean-stagetrain-gmp maybe-clean-stagetrain-gmp
+ maybe-all-stagetrain-gmp:
+ maybe-clean-stagetrain-gmp:
+ @if gmp-bootstrap
+ maybe-all-stagetrain-gmp: all-stagetrain-gmp
+ all-stagetrain: all-stagetrain-gmp
+ TARGET-stagetrain-gmp = $(TARGET-gmp)
+ all-stagetrain-gmp: configure-stagetrain-gmp
+ 	@[ $(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)/gmp && \
+ 	 \
+ 	$(MAKE) $(BASE_FLAGS_TO_PASS) \
+ 		CFLAGS="$(STAGEtrain_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) AM_CFLAGS="-DNO_ASM" \
+ 		TFLAGS="$(STAGEtrain_TFLAGS)"  \
+ 		$(TARGET-stagetrain-gmp)
+ 
+ maybe-clean-stagetrain-gmp: clean-stagetrain-gmp
+ clean-stagetrain: clean-stagetrain-gmp
+ clean-stagetrain-gmp:
+ 	@if [ $(current_stage) = stagetrain ]; then \
+ 	  [ -f $(HOST_SUBDIR)/gmp/Makefile ] || exit 0; \
+ 	else \
+ 	  [ -f $(HOST_SUBDIR)/stagetrain-gmp/Makefile ] || exit 0; \
+ 	  $(MAKE) stagetrain-start; \
+ 	fi; \
+ 	cd $(HOST_SUBDIR)/gmp && \
+ 	$(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) AM_CFLAGS="-DNO_ASM" clean
+ @endif gmp-bootstrap
+ 
+ 
  .PHONY: all-stagefeedback-gmp maybe-all-stagefeedback-gmp
  .PHONY: clean-stagefeedback-gmp maybe-clean-stagefeedback-gmp
  maybe-all-stagefeedback-gmp:
*************** configure-stageprofile-mpfr:
*** 13218,13223 ****
--- 13738,13777 ----
  	  --disable-shared @extra_mpfr_configure_flags@
  @endif mpfr-bootstrap
  
+ .PHONY: configure-stagetrain-mpfr maybe-configure-stagetrain-mpfr
+ maybe-configure-stagetrain-mpfr:
+ @if mpfr-bootstrap
+ maybe-configure-stagetrain-mpfr: configure-stagetrain-mpfr
+ configure-stagetrain-mpfr:
+ 	@[ $(current_stage) = stagetrain ] || $(MAKE) stagetrain-start
+ 	@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpfr
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGEtrain_TFLAGS)"; \
+ 	test ! -f $(HOST_SUBDIR)/mpfr/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)/mpfr; \
+ 	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpfr; \
+ 	cd $(HOST_SUBDIR)/mpfr || exit 1; \
+ 	case $(srcdir) in \
+ 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ 	  *) topdir=`echo $(HOST_SUBDIR)/mpfr/ | \
+ 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ 	esac; \
+ 	module_srcdir=mpfr; \
+ 	$(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 @extra_mpfr_configure_flags@
+ @endif mpfr-bootstrap
+ 
  .PHONY: configure-stagefeedback-mpfr maybe-configure-stagefeedback-mpfr
  maybe-configure-stagefeedback-mpfr:
  @if mpfr-bootstrap
*************** clean-stageprofile-mpfr:
*** 13554,13559 ****
--- 14108,14155 ----
  @endif mpfr-bootstrap
  
  
+ .PHONY: all-stagetrain-mpfr maybe-all-stagetrain-mpfr
+ .PHONY: clean-stagetrain-mpfr maybe-clean-stagetrain-mpfr
+ maybe-all-stagetrain-mpfr:
+ maybe-clean-stagetrain-mpfr:
+ @if mpfr-bootstrap
+ maybe-all-stagetrain-mpfr: all-stagetrain-mpfr
+ all-stagetrain: all-stagetrain-mpfr
+ TARGET-stagetrain-mpfr = $(TARGET-mpfr)
+ all-stagetrain-mpfr: configure-stagetrain-mpfr
+ 	@[ $(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)/mpfr && \
+ 	 \
+ 	$(MAKE) $(BASE_FLAGS_TO_PASS) \
+ 		CFLAGS="$(STAGEtrain_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) AM_CFLAGS="-DNO_ASM" \
+ 		TFLAGS="$(STAGEtrain_TFLAGS)"  \
+ 		$(TARGET-stagetrain-mpfr)
+ 
+ maybe-clean-stagetrain-mpfr: clean-stagetrain-mpfr
+ clean-stagetrain: clean-stagetrain-mpfr
+ clean-stagetrain-mpfr:
+ 	@if [ $(current_stage) = stagetrain ]; then \
+ 	  [ -f $(HOST_SUBDIR)/mpfr/Makefile ] || exit 0; \
+ 	else \
+ 	  [ -f $(HOST_SUBDIR)/stagetrain-mpfr/Makefile ] || exit 0; \
+ 	  $(MAKE) stagetrain-start; \
+ 	fi; \
+ 	cd $(HOST_SUBDIR)/mpfr && \
+ 	$(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) AM_CFLAGS="-DNO_ASM" clean
+ @endif mpfr-bootstrap
+ 
+ 
  .PHONY: all-stagefeedback-mpfr maybe-all-stagefeedback-mpfr
  .PHONY: clean-stagefeedback-mpfr maybe-clean-stagefeedback-mpfr
  maybe-all-stagefeedback-mpfr:
*************** configure-stageprofile-mpc:
*** 14244,14249 ****
--- 14840,14879 ----
  	  --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
+ maybe-configure-stagetrain-mpc:
+ @if mpc-bootstrap
+ maybe-configure-stagetrain-mpc: configure-stagetrain-mpc
+ configure-stagetrain-mpc:
+ 	@[ $(current_stage) = stagetrain ] || $(MAKE) stagetrain-start
+ 	@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpc
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGEtrain_TFLAGS)"; \
+ 	test ! -f $(HOST_SUBDIR)/mpc/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)/mpc; \
+ 	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpc; \
+ 	cd $(HOST_SUBDIR)/mpc || exit 1; \
+ 	case $(srcdir) in \
+ 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ 	  *) topdir=`echo $(HOST_SUBDIR)/mpc/ | \
+ 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ 	esac; \
+ 	module_srcdir=mpc; \
+ 	$(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 @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@ --disable-maintainer-mode
+ @endif mpc-bootstrap
+ 
  .PHONY: configure-stagefeedback-mpc maybe-configure-stagefeedback-mpc
  maybe-configure-stagefeedback-mpc:
  @if mpc-bootstrap
*************** clean-stageprofile-mpc:
*** 14580,14585 ****
--- 15210,15257 ----
  @endif mpc-bootstrap
  
  
+ .PHONY: all-stagetrain-mpc maybe-all-stagetrain-mpc
+ .PHONY: clean-stagetrain-mpc maybe-clean-stagetrain-mpc
+ maybe-all-stagetrain-mpc:
+ maybe-clean-stagetrain-mpc:
+ @if mpc-bootstrap
+ maybe-all-stagetrain-mpc: all-stagetrain-mpc
+ all-stagetrain: all-stagetrain-mpc
+ TARGET-stagetrain-mpc = $(TARGET-mpc)
+ all-stagetrain-mpc: configure-stagetrain-mpc
+ 	@[ $(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)/mpc && \
+ 	 \
+ 	$(MAKE) $(BASE_FLAGS_TO_PASS) \
+ 		CFLAGS="$(STAGEtrain_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-mpc)
+ 
+ maybe-clean-stagetrain-mpc: clean-stagetrain-mpc
+ clean-stagetrain: clean-stagetrain-mpc
+ clean-stagetrain-mpc:
+ 	@if [ $(current_stage) = stagetrain ]; then \
+ 	  [ -f $(HOST_SUBDIR)/mpc/Makefile ] || exit 0; \
+ 	else \
+ 	  [ -f $(HOST_SUBDIR)/stagetrain-mpc/Makefile ] || exit 0; \
+ 	  $(MAKE) stagetrain-start; \
+ 	fi; \
+ 	cd $(HOST_SUBDIR)/mpc && \
+ 	$(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  clean
+ @endif mpc-bootstrap
+ 
+ 
  .PHONY: all-stagefeedback-mpc maybe-all-stagefeedback-mpc
  .PHONY: clean-stagefeedback-mpc maybe-clean-stagefeedback-mpc
  maybe-all-stagefeedback-mpc:
*************** configure-stageprofile-isl:
*** 15270,15275 ****
--- 15942,15981 ----
  	  --disable-shared @extra_isl_gmp_configure_flags@
  @endif isl-bootstrap
  
+ .PHONY: configure-stagetrain-isl maybe-configure-stagetrain-isl
+ maybe-configure-stagetrain-isl:
+ @if isl-bootstrap
+ maybe-configure-stagetrain-isl: configure-stagetrain-isl
+ configure-stagetrain-isl:
+ 	@[ $(current_stage) = stagetrain ] || $(MAKE) stagetrain-start
+ 	@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/isl
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGEtrain_TFLAGS)"; \
+ 	test ! -f $(HOST_SUBDIR)/isl/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)/isl; \
+ 	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/isl; \
+ 	cd $(HOST_SUBDIR)/isl || exit 1; \
+ 	case $(srcdir) in \
+ 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ 	  *) topdir=`echo $(HOST_SUBDIR)/isl/ | \
+ 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ 	esac; \
+ 	module_srcdir=isl; \
+ 	$(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 @extra_isl_gmp_configure_flags@
+ @endif isl-bootstrap
+ 
  .PHONY: configure-stagefeedback-isl maybe-configure-stagefeedback-isl
  maybe-configure-stagefeedback-isl:
  @if isl-bootstrap
*************** clean-stageprofile-isl:
*** 15606,15611 ****
--- 16312,16359 ----
  @endif isl-bootstrap
  
  
+ .PHONY: all-stagetrain-isl maybe-all-stagetrain-isl
+ .PHONY: clean-stagetrain-isl maybe-clean-stagetrain-isl
+ maybe-all-stagetrain-isl:
+ maybe-clean-stagetrain-isl:
+ @if isl-bootstrap
+ maybe-all-stagetrain-isl: all-stagetrain-isl
+ all-stagetrain: all-stagetrain-isl
+ TARGET-stagetrain-isl = $(TARGET-isl)
+ all-stagetrain-isl: configure-stagetrain-isl
+ 	@[ $(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)/isl && \
+ 	 \
+ 	$(MAKE) $(BASE_FLAGS_TO_PASS) \
+ 		CFLAGS="$(STAGEtrain_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) V=1 \
+ 		TFLAGS="$(STAGEtrain_TFLAGS)"  \
+ 		$(TARGET-stagetrain-isl)
+ 
+ maybe-clean-stagetrain-isl: clean-stagetrain-isl
+ clean-stagetrain: clean-stagetrain-isl
+ clean-stagetrain-isl:
+ 	@if [ $(current_stage) = stagetrain ]; then \
+ 	  [ -f $(HOST_SUBDIR)/isl/Makefile ] || exit 0; \
+ 	else \
+ 	  [ -f $(HOST_SUBDIR)/stagetrain-isl/Makefile ] || exit 0; \
+ 	  $(MAKE) stagetrain-start; \
+ 	fi; \
+ 	cd $(HOST_SUBDIR)/isl && \
+ 	$(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) V=1 clean
+ @endif isl-bootstrap
+ 
+ 
  .PHONY: all-stagefeedback-isl maybe-all-stagefeedback-isl
  .PHONY: clean-stagefeedback-isl maybe-clean-stagefeedback-isl
  maybe-all-stagefeedback-isl:
*************** configure-stageprofile-libelf:
*** 16296,16301 ****
--- 17044,17083 ----
  	  --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
*************** clean-stageprofile-libelf:
*** 16632,16637 ****
--- 17414,17461 ----
  @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)" \
+ 		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:
*************** configure-stageprofile-gold:
*** 17317,17322 ****
--- 18141,18179 ----
  	  $(STAGEprofile_CONFIGURE_FLAGS)
  @endif gold-bootstrap
  
+ .PHONY: configure-stagetrain-gold maybe-configure-stagetrain-gold
+ maybe-configure-stagetrain-gold:
+ @if gold-bootstrap
+ maybe-configure-stagetrain-gold: configure-stagetrain-gold
+ configure-stagetrain-gold:
+ 	@[ $(current_stage) = stagetrain ] || $(MAKE) stagetrain-start
+ 	@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gold
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGEtrain_TFLAGS)"; \
+ 	test ! -f $(HOST_SUBDIR)/gold/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)/gold; \
+ 	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gold; \
+ 	cd $(HOST_SUBDIR)/gold || exit 1; \
+ 	case $(srcdir) in \
+ 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ 	  *) topdir=`echo $(HOST_SUBDIR)/gold/ | \
+ 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ 	esac; \
+ 	module_srcdir=gold; \
+ 	$(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 gold-bootstrap
+ 
  .PHONY: configure-stagefeedback-gold maybe-configure-stagefeedback-gold
  maybe-configure-stagefeedback-gold:
  @if gold-bootstrap
*************** clean-stageprofile-gold:
*** 17650,17655 ****
--- 18507,18554 ----
  @endif gold-bootstrap
  
  
+ .PHONY: all-stagetrain-gold maybe-all-stagetrain-gold
+ .PHONY: clean-stagetrain-gold maybe-clean-stagetrain-gold
+ maybe-all-stagetrain-gold:
+ maybe-clean-stagetrain-gold:
+ @if gold-bootstrap
+ maybe-all-stagetrain-gold: all-stagetrain-gold
+ all-stagetrain: all-stagetrain-gold
+ TARGET-stagetrain-gold = $(TARGET-gold)
+ all-stagetrain-gold: configure-stagetrain-gold
+ 	@[ $(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)/gold && \
+ 	 \
+ 	$(MAKE) $(BASE_FLAGS_TO_PASS) \
+ 		CFLAGS="$(STAGEtrain_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-gold)
+ 
+ maybe-clean-stagetrain-gold: clean-stagetrain-gold
+ clean-stagetrain: clean-stagetrain-gold
+ clean-stagetrain-gold:
+ 	@if [ $(current_stage) = stagetrain ]; then \
+ 	  [ -f $(HOST_SUBDIR)/gold/Makefile ] || exit 0; \
+ 	else \
+ 	  [ -f $(HOST_SUBDIR)/stagetrain-gold/Makefile ] || exit 0; \
+ 	  $(MAKE) stagetrain-start; \
+ 	fi; \
+ 	cd $(HOST_SUBDIR)/gold && \
+ 	$(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  clean
+ @endif gold-bootstrap
+ 
+ 
  .PHONY: all-stagefeedback-gold maybe-all-stagefeedback-gold
  .PHONY: clean-stagefeedback-gold maybe-clean-stagefeedback-gold
  maybe-all-stagefeedback-gold:
*************** configure-stageprofile-intl:
*** 18788,18793 ****
--- 19687,19725 ----
  	  $(STAGEprofile_CONFIGURE_FLAGS)
  @endif intl-bootstrap
  
+ .PHONY: configure-stagetrain-intl maybe-configure-stagetrain-intl
+ maybe-configure-stagetrain-intl:
+ @if intl-bootstrap
+ maybe-configure-stagetrain-intl: configure-stagetrain-intl
+ configure-stagetrain-intl:
+ 	@[ $(current_stage) = stagetrain ] || $(MAKE) stagetrain-start
+ 	@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/intl
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGEtrain_TFLAGS)"; \
+ 	test ! -f $(HOST_SUBDIR)/intl/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)/intl; \
+ 	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/intl; \
+ 	cd $(HOST_SUBDIR)/intl || exit 1; \
+ 	case $(srcdir) in \
+ 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ 	  *) topdir=`echo $(HOST_SUBDIR)/intl/ | \
+ 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ 	esac; \
+ 	module_srcdir=intl; \
+ 	$(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 intl-bootstrap
+ 
  .PHONY: configure-stagefeedback-intl maybe-configure-stagefeedback-intl
  maybe-configure-stagefeedback-intl:
  @if intl-bootstrap
*************** clean-stageprofile-intl:
*** 19121,19126 ****
--- 20053,20100 ----
  @endif intl-bootstrap
  
  
+ .PHONY: all-stagetrain-intl maybe-all-stagetrain-intl
+ .PHONY: clean-stagetrain-intl maybe-clean-stagetrain-intl
+ maybe-all-stagetrain-intl:
+ maybe-clean-stagetrain-intl:
+ @if intl-bootstrap
+ maybe-all-stagetrain-intl: all-stagetrain-intl
+ all-stagetrain: all-stagetrain-intl
+ TARGET-stagetrain-intl = $(TARGET-intl)
+ all-stagetrain-intl: configure-stagetrain-intl
+ 	@[ $(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)/intl && \
+ 	 \
+ 	$(MAKE) $(BASE_FLAGS_TO_PASS) \
+ 		CFLAGS="$(STAGEtrain_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-intl)
+ 
+ maybe-clean-stagetrain-intl: clean-stagetrain-intl
+ clean-stagetrain: clean-stagetrain-intl
+ clean-stagetrain-intl:
+ 	@if [ $(current_stage) = stagetrain ]; then \
+ 	  [ -f $(HOST_SUBDIR)/intl/Makefile ] || exit 0; \
+ 	else \
+ 	  [ -f $(HOST_SUBDIR)/stagetrain-intl/Makefile ] || exit 0; \
+ 	  $(MAKE) stagetrain-start; \
+ 	fi; \
+ 	cd $(HOST_SUBDIR)/intl && \
+ 	$(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  clean
+ @endif intl-bootstrap
+ 
+ 
  .PHONY: all-stagefeedback-intl maybe-all-stagefeedback-intl
  .PHONY: clean-stagefeedback-intl maybe-clean-stagefeedback-intl
  maybe-all-stagefeedback-intl:
*************** configure-stageprofile-ld:
*** 20685,20690 ****
--- 21659,21697 ----
  	  $(STAGEprofile_CONFIGURE_FLAGS)
  @endif ld-bootstrap
  
+ .PHONY: configure-stagetrain-ld maybe-configure-stagetrain-ld
+ maybe-configure-stagetrain-ld:
+ @if ld-bootstrap
+ maybe-configure-stagetrain-ld: configure-stagetrain-ld
+ configure-stagetrain-ld:
+ 	@[ $(current_stage) = stagetrain ] || $(MAKE) stagetrain-start
+ 	@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/ld
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGEtrain_TFLAGS)"; \
+ 	test ! -f $(HOST_SUBDIR)/ld/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)/ld; \
+ 	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/ld; \
+ 	cd $(HOST_SUBDIR)/ld || exit 1; \
+ 	case $(srcdir) in \
+ 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ 	  *) topdir=`echo $(HOST_SUBDIR)/ld/ | \
+ 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ 	esac; \
+ 	module_srcdir=ld; \
+ 	$(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 ld-bootstrap
+ 
  .PHONY: configure-stagefeedback-ld maybe-configure-stagefeedback-ld
  maybe-configure-stagefeedback-ld:
  @if ld-bootstrap
*************** clean-stageprofile-ld:
*** 21018,21023 ****
--- 22025,22072 ----
  @endif ld-bootstrap
  
  
+ .PHONY: all-stagetrain-ld maybe-all-stagetrain-ld
+ .PHONY: clean-stagetrain-ld maybe-clean-stagetrain-ld
+ maybe-all-stagetrain-ld:
+ maybe-clean-stagetrain-ld:
+ @if ld-bootstrap
+ maybe-all-stagetrain-ld: all-stagetrain-ld
+ all-stagetrain: all-stagetrain-ld
+ TARGET-stagetrain-ld = $(TARGET-ld)
+ all-stagetrain-ld: configure-stagetrain-ld
+ 	@[ $(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)/ld && \
+ 	 \
+ 	$(MAKE) $(BASE_FLAGS_TO_PASS) \
+ 		CFLAGS="$(STAGEtrain_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-ld)
+ 
+ maybe-clean-stagetrain-ld: clean-stagetrain-ld
+ clean-stagetrain: clean-stagetrain-ld
+ clean-stagetrain-ld:
+ 	@if [ $(current_stage) = stagetrain ]; then \
+ 	  [ -f $(HOST_SUBDIR)/ld/Makefile ] || exit 0; \
+ 	else \
+ 	  [ -f $(HOST_SUBDIR)/stagetrain-ld/Makefile ] || exit 0; \
+ 	  $(MAKE) stagetrain-start; \
+ 	fi; \
+ 	cd $(HOST_SUBDIR)/ld && \
+ 	$(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  clean
+ @endif ld-bootstrap
+ 
+ 
  .PHONY: all-stagefeedback-ld maybe-all-stagefeedback-ld
  .PHONY: clean-stagefeedback-ld maybe-clean-stagefeedback-ld
  maybe-all-stagefeedback-ld:
*************** configure-stageprofile-libbacktrace:
*** 21715,21720 ****
--- 22764,22802 ----
  	  $(STAGEprofile_CONFIGURE_FLAGS)
  @endif libbacktrace-bootstrap
  
+ .PHONY: configure-stagetrain-libbacktrace maybe-configure-stagetrain-libbacktrace
+ maybe-configure-stagetrain-libbacktrace:
+ @if libbacktrace-bootstrap
+ maybe-configure-stagetrain-libbacktrace: configure-stagetrain-libbacktrace
+ configure-stagetrain-libbacktrace:
+ 	@[ $(current_stage) = stagetrain ] || $(MAKE) stagetrain-start
+ 	@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libbacktrace
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGEtrain_TFLAGS)"; \
+ 	test ! -f $(HOST_SUBDIR)/libbacktrace/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)/libbacktrace; \
+ 	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libbacktrace; \
+ 	cd $(HOST_SUBDIR)/libbacktrace || exit 1; \
+ 	case $(srcdir) in \
+ 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ 	  *) topdir=`echo $(HOST_SUBDIR)/libbacktrace/ | \
+ 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ 	esac; \
+ 	module_srcdir=libbacktrace; \
+ 	$(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 libbacktrace-bootstrap
+ 
  .PHONY: configure-stagefeedback-libbacktrace maybe-configure-stagefeedback-libbacktrace
  maybe-configure-stagefeedback-libbacktrace:
  @if libbacktrace-bootstrap
*************** clean-stageprofile-libbacktrace:
*** 22048,22053 ****
--- 23130,23177 ----
  @endif libbacktrace-bootstrap
  
  
+ .PHONY: all-stagetrain-libbacktrace maybe-all-stagetrain-libbacktrace
+ .PHONY: clean-stagetrain-libbacktrace maybe-clean-stagetrain-libbacktrace
+ maybe-all-stagetrain-libbacktrace:
+ maybe-clean-stagetrain-libbacktrace:
+ @if libbacktrace-bootstrap
+ maybe-all-stagetrain-libbacktrace: all-stagetrain-libbacktrace
+ all-stagetrain: all-stagetrain-libbacktrace
+ TARGET-stagetrain-libbacktrace = $(TARGET-libbacktrace)
+ all-stagetrain-libbacktrace: configure-stagetrain-libbacktrace
+ 	@[ $(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)/libbacktrace && \
+ 	 \
+ 	$(MAKE) $(BASE_FLAGS_TO_PASS) \
+ 		CFLAGS="$(STAGEtrain_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-libbacktrace)
+ 
+ maybe-clean-stagetrain-libbacktrace: clean-stagetrain-libbacktrace
+ clean-stagetrain: clean-stagetrain-libbacktrace
+ clean-stagetrain-libbacktrace:
+ 	@if [ $(current_stage) = stagetrain ]; then \
+ 	  [ -f $(HOST_SUBDIR)/libbacktrace/Makefile ] || exit 0; \
+ 	else \
+ 	  [ -f $(HOST_SUBDIR)/stagetrain-libbacktrace/Makefile ] || exit 0; \
+ 	  $(MAKE) stagetrain-start; \
+ 	fi; \
+ 	cd $(HOST_SUBDIR)/libbacktrace && \
+ 	$(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  clean
+ @endif libbacktrace-bootstrap
+ 
+ 
  .PHONY: all-stagefeedback-libbacktrace maybe-all-stagefeedback-libbacktrace
  .PHONY: clean-stagefeedback-libbacktrace maybe-clean-stagefeedback-libbacktrace
  maybe-all-stagefeedback-libbacktrace:
*************** configure-stageprofile-libcpp:
*** 22745,22750 ****
--- 23869,23907 ----
  	  $(STAGEprofile_CONFIGURE_FLAGS)
  @endif libcpp-bootstrap
  
+ .PHONY: configure-stagetrain-libcpp maybe-configure-stagetrain-libcpp
+ maybe-configure-stagetrain-libcpp:
+ @if libcpp-bootstrap
+ maybe-configure-stagetrain-libcpp: configure-stagetrain-libcpp
+ configure-stagetrain-libcpp:
+ 	@[ $(current_stage) = stagetrain ] || $(MAKE) stagetrain-start
+ 	@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libcpp
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGEtrain_TFLAGS)"; \
+ 	test ! -f $(HOST_SUBDIR)/libcpp/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)/libcpp; \
+ 	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libcpp; \
+ 	cd $(HOST_SUBDIR)/libcpp || exit 1; \
+ 	case $(srcdir) in \
+ 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ 	  *) topdir=`echo $(HOST_SUBDIR)/libcpp/ | \
+ 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ 	esac; \
+ 	module_srcdir=libcpp; \
+ 	$(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 libcpp-bootstrap
+ 
  .PHONY: configure-stagefeedback-libcpp maybe-configure-stagefeedback-libcpp
  maybe-configure-stagefeedback-libcpp:
  @if libcpp-bootstrap
*************** clean-stageprofile-libcpp:
*** 23078,23083 ****
--- 24235,24282 ----
  @endif libcpp-bootstrap
  
  
+ .PHONY: all-stagetrain-libcpp maybe-all-stagetrain-libcpp
+ .PHONY: clean-stagetrain-libcpp maybe-clean-stagetrain-libcpp
+ maybe-all-stagetrain-libcpp:
+ maybe-clean-stagetrain-libcpp:
+ @if libcpp-bootstrap
+ maybe-all-stagetrain-libcpp: all-stagetrain-libcpp
+ all-stagetrain: all-stagetrain-libcpp
+ TARGET-stagetrain-libcpp = $(TARGET-libcpp)
+ all-stagetrain-libcpp: configure-stagetrain-libcpp
+ 	@[ $(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)/libcpp && \
+ 	 \
+ 	$(MAKE) $(BASE_FLAGS_TO_PASS) \
+ 		CFLAGS="$(STAGEtrain_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-libcpp)
+ 
+ maybe-clean-stagetrain-libcpp: clean-stagetrain-libcpp
+ clean-stagetrain: clean-stagetrain-libcpp
+ clean-stagetrain-libcpp:
+ 	@if [ $(current_stage) = stagetrain ]; then \
+ 	  [ -f $(HOST_SUBDIR)/libcpp/Makefile ] || exit 0; \
+ 	else \
+ 	  [ -f $(HOST_SUBDIR)/stagetrain-libcpp/Makefile ] || exit 0; \
+ 	  $(MAKE) stagetrain-start; \
+ 	fi; \
+ 	cd $(HOST_SUBDIR)/libcpp && \
+ 	$(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  clean
+ @endif libcpp-bootstrap
+ 
+ 
  .PHONY: all-stagefeedback-libcpp maybe-all-stagefeedback-libcpp
  .PHONY: clean-stagefeedback-libcpp maybe-clean-stagefeedback-libcpp
  maybe-all-stagefeedback-libcpp:
*************** configure-stageprofile-libdecnumber:
*** 23775,23780 ****
--- 24974,25012 ----
  	  $(STAGEprofile_CONFIGURE_FLAGS)
  @endif libdecnumber-bootstrap
  
+ .PHONY: configure-stagetrain-libdecnumber maybe-configure-stagetrain-libdecnumber
+ maybe-configure-stagetrain-libdecnumber:
+ @if libdecnumber-bootstrap
+ maybe-configure-stagetrain-libdecnumber: configure-stagetrain-libdecnumber
+ configure-stagetrain-libdecnumber:
+ 	@[ $(current_stage) = stagetrain ] || $(MAKE) stagetrain-start
+ 	@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libdecnumber
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGEtrain_TFLAGS)"; \
+ 	test ! -f $(HOST_SUBDIR)/libdecnumber/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)/libdecnumber; \
+ 	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libdecnumber; \
+ 	cd $(HOST_SUBDIR)/libdecnumber || exit 1; \
+ 	case $(srcdir) in \
+ 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ 	  *) topdir=`echo $(HOST_SUBDIR)/libdecnumber/ | \
+ 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ 	esac; \
+ 	module_srcdir=libdecnumber; \
+ 	$(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 libdecnumber-bootstrap
+ 
  .PHONY: configure-stagefeedback-libdecnumber maybe-configure-stagefeedback-libdecnumber
  maybe-configure-stagefeedback-libdecnumber:
  @if libdecnumber-bootstrap
*************** clean-stageprofile-libdecnumber:
*** 24108,24113 ****
--- 25340,25387 ----
  @endif libdecnumber-bootstrap
  
  
+ .PHONY: all-stagetrain-libdecnumber maybe-all-stagetrain-libdecnumber
+ .PHONY: clean-stagetrain-libdecnumber maybe-clean-stagetrain-libdecnumber
+ maybe-all-stagetrain-libdecnumber:
+ maybe-clean-stagetrain-libdecnumber:
+ @if libdecnumber-bootstrap
+ maybe-all-stagetrain-libdecnumber: all-stagetrain-libdecnumber
+ all-stagetrain: all-stagetrain-libdecnumber
+ TARGET-stagetrain-libdecnumber = $(TARGET-libdecnumber)
+ all-stagetrain-libdecnumber: configure-stagetrain-libdecnumber
+ 	@[ $(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)/libdecnumber && \
+ 	 \
+ 	$(MAKE) $(BASE_FLAGS_TO_PASS) \
+ 		CFLAGS="$(STAGEtrain_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-libdecnumber)
+ 
+ maybe-clean-stagetrain-libdecnumber: clean-stagetrain-libdecnumber
+ clean-stagetrain: clean-stagetrain-libdecnumber
+ clean-stagetrain-libdecnumber:
+ 	@if [ $(current_stage) = stagetrain ]; then \
+ 	  [ -f $(HOST_SUBDIR)/libdecnumber/Makefile ] || exit 0; \
+ 	else \
+ 	  [ -f $(HOST_SUBDIR)/stagetrain-libdecnumber/Makefile ] || exit 0; \
+ 	  $(MAKE) stagetrain-start; \
+ 	fi; \
+ 	cd $(HOST_SUBDIR)/libdecnumber && \
+ 	$(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  clean
+ @endif libdecnumber-bootstrap
+ 
+ 
  .PHONY: all-stagefeedback-libdecnumber maybe-all-stagefeedback-libdecnumber
  .PHONY: clean-stagefeedback-libdecnumber maybe-clean-stagefeedback-libdecnumber
  maybe-all-stagefeedback-libdecnumber:
*************** configure-stageprofile-libiberty:
*** 25251,25256 ****
--- 26525,26564 ----
  	  @extra_host_libiberty_configure_flags@
  @endif libiberty-bootstrap
  
+ .PHONY: configure-stagetrain-libiberty maybe-configure-stagetrain-libiberty
+ maybe-configure-stagetrain-libiberty:
+ @if libiberty-bootstrap
+ maybe-configure-stagetrain-libiberty: configure-stagetrain-libiberty
+ configure-stagetrain-libiberty:
+ 	@[ $(current_stage) = stagetrain ] || $(MAKE) stagetrain-start
+ 	@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiberty
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGEtrain_TFLAGS)"; \
+ 	test ! -f $(HOST_SUBDIR)/libiberty/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)/libiberty; \
+ 	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiberty; \
+ 	cd $(HOST_SUBDIR)/libiberty || exit 1; \
+ 	case $(srcdir) in \
+ 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ 	  *) topdir=`echo $(HOST_SUBDIR)/libiberty/ | \
+ 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ 	esac; \
+ 	module_srcdir=libiberty; \
+ 	$(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) \
+ 	  @extra_host_libiberty_configure_flags@
+ @endif libiberty-bootstrap
+ 
  .PHONY: configure-stagefeedback-libiberty maybe-configure-stagefeedback-libiberty
  maybe-configure-stagefeedback-libiberty:
  @if libiberty-bootstrap
*************** clean-stageprofile-libiberty:
*** 25587,25592 ****
--- 26895,26942 ----
  @endif libiberty-bootstrap
  
  
+ .PHONY: all-stagetrain-libiberty maybe-all-stagetrain-libiberty
+ .PHONY: clean-stagetrain-libiberty maybe-clean-stagetrain-libiberty
+ maybe-all-stagetrain-libiberty:
+ maybe-clean-stagetrain-libiberty:
+ @if libiberty-bootstrap
+ maybe-all-stagetrain-libiberty: all-stagetrain-libiberty
+ all-stagetrain: all-stagetrain-libiberty
+ TARGET-stagetrain-libiberty = $(TARGET-libiberty)
+ all-stagetrain-libiberty: configure-stagetrain-libiberty
+ 	@[ $(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)/libiberty && \
+ 	 \
+ 	$(MAKE) $(BASE_FLAGS_TO_PASS) \
+ 		CFLAGS="$(STAGEtrain_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-libiberty)
+ 
+ maybe-clean-stagetrain-libiberty: clean-stagetrain-libiberty
+ clean-stagetrain: clean-stagetrain-libiberty
+ clean-stagetrain-libiberty:
+ 	@if [ $(current_stage) = stagetrain ]; then \
+ 	  [ -f $(HOST_SUBDIR)/libiberty/Makefile ] || exit 0; \
+ 	else \
+ 	  [ -f $(HOST_SUBDIR)/stagetrain-libiberty/Makefile ] || exit 0; \
+ 	  $(MAKE) stagetrain-start; \
+ 	fi; \
+ 	cd $(HOST_SUBDIR)/libiberty && \
+ 	$(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  clean
+ @endif libiberty-bootstrap
+ 
+ 
  .PHONY: all-stagefeedback-libiberty maybe-all-stagefeedback-libiberty
  .PHONY: clean-stagefeedback-libiberty maybe-clean-stagefeedback-libiberty
  maybe-all-stagefeedback-libiberty:
*************** configure-stageprofile-libiberty-linker-
*** 26289,26294 ****
--- 27639,27678 ----
  	  @extra_host_libiberty_configure_flags@ --disable-install-libiberty @extra_linker_plugin_flags@ @extra_linker_plugin_configure_flags@
  @endif libiberty-linker-plugin-bootstrap
  
+ .PHONY: configure-stagetrain-libiberty-linker-plugin maybe-configure-stagetrain-libiberty-linker-plugin
+ maybe-configure-stagetrain-libiberty-linker-plugin:
+ @if libiberty-linker-plugin-bootstrap
+ maybe-configure-stagetrain-libiberty-linker-plugin: configure-stagetrain-libiberty-linker-plugin
+ configure-stagetrain-libiberty-linker-plugin:
+ 	@[ $(current_stage) = stagetrain ] || $(MAKE) stagetrain-start
+ 	@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiberty-linker-plugin
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGEtrain_TFLAGS)"; \
+ 	test ! -f $(HOST_SUBDIR)/libiberty-linker-plugin/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)/libiberty-linker-plugin; \
+ 	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiberty-linker-plugin; \
+ 	cd $(HOST_SUBDIR)/libiberty-linker-plugin || exit 1; \
+ 	case $(srcdir) in \
+ 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ 	  *) topdir=`echo $(HOST_SUBDIR)/libiberty-linker-plugin/ | \
+ 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ 	esac; \
+ 	module_srcdir=libiberty; \
+ 	$(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) \
+ 	  @extra_host_libiberty_configure_flags@ --disable-install-libiberty @extra_linker_plugin_flags@ @extra_linker_plugin_configure_flags@
+ @endif libiberty-linker-plugin-bootstrap
+ 
  .PHONY: configure-stagefeedback-libiberty-linker-plugin maybe-configure-stagefeedback-libiberty-linker-plugin
  maybe-configure-stagefeedback-libiberty-linker-plugin:
  @if libiberty-linker-plugin-bootstrap
*************** clean-stageprofile-libiberty-linker-plug
*** 26625,26630 ****
--- 28009,28056 ----
  @endif libiberty-linker-plugin-bootstrap
  
  
+ .PHONY: all-stagetrain-libiberty-linker-plugin maybe-all-stagetrain-libiberty-linker-plugin
+ .PHONY: clean-stagetrain-libiberty-linker-plugin maybe-clean-stagetrain-libiberty-linker-plugin
+ maybe-all-stagetrain-libiberty-linker-plugin:
+ maybe-clean-stagetrain-libiberty-linker-plugin:
+ @if libiberty-linker-plugin-bootstrap
+ maybe-all-stagetrain-libiberty-linker-plugin: all-stagetrain-libiberty-linker-plugin
+ all-stagetrain: all-stagetrain-libiberty-linker-plugin
+ TARGET-stagetrain-libiberty-linker-plugin = $(TARGET-libiberty-linker-plugin)
+ all-stagetrain-libiberty-linker-plugin: configure-stagetrain-libiberty-linker-plugin
+ 	@[ $(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)/libiberty-linker-plugin && \
+ 	 \
+ 	$(MAKE) $(BASE_FLAGS_TO_PASS) \
+ 		CFLAGS="$(STAGEtrain_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) @extra_linker_plugin_flags@ \
+ 		TFLAGS="$(STAGEtrain_TFLAGS)"  \
+ 		$(TARGET-stagetrain-libiberty-linker-plugin)
+ 
+ maybe-clean-stagetrain-libiberty-linker-plugin: clean-stagetrain-libiberty-linker-plugin
+ clean-stagetrain: clean-stagetrain-libiberty-linker-plugin
+ clean-stagetrain-libiberty-linker-plugin:
+ 	@if [ $(current_stage) = stagetrain ]; then \
+ 	  [ -f $(HOST_SUBDIR)/libiberty-linker-plugin/Makefile ] || exit 0; \
+ 	else \
+ 	  [ -f $(HOST_SUBDIR)/stagetrain-libiberty-linker-plugin/Makefile ] || exit 0; \
+ 	  $(MAKE) stagetrain-start; \
+ 	fi; \
+ 	cd $(HOST_SUBDIR)/libiberty-linker-plugin && \
+ 	$(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) @extra_linker_plugin_flags@ clean
+ @endif libiberty-linker-plugin-bootstrap
+ 
+ 
  .PHONY: all-stagefeedback-libiberty-linker-plugin maybe-all-stagefeedback-libiberty-linker-plugin
  .PHONY: clean-stagefeedback-libiberty-linker-plugin maybe-clean-stagefeedback-libiberty-linker-plugin
  maybe-all-stagefeedback-libiberty-linker-plugin:
*************** configure-stageprofile-libiconv:
*** 27327,27332 ****
--- 28753,28792 ----
  	  --disable-shared
  @endif libiconv-bootstrap
  
+ .PHONY: configure-stagetrain-libiconv maybe-configure-stagetrain-libiconv
+ maybe-configure-stagetrain-libiconv:
+ @if libiconv-bootstrap
+ maybe-configure-stagetrain-libiconv: configure-stagetrain-libiconv
+ configure-stagetrain-libiconv:
+ 	@[ $(current_stage) = stagetrain ] || $(MAKE) stagetrain-start
+ 	@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiconv
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGEtrain_TFLAGS)"; \
+ 	test ! -f $(HOST_SUBDIR)/libiconv/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)/libiconv; \
+ 	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiconv; \
+ 	cd $(HOST_SUBDIR)/libiconv || exit 1; \
+ 	case $(srcdir) in \
+ 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ 	  *) topdir=`echo $(HOST_SUBDIR)/libiconv/ | \
+ 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ 	esac; \
+ 	module_srcdir=libiconv; \
+ 	$(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 libiconv-bootstrap
+ 
  .PHONY: configure-stagefeedback-libiconv maybe-configure-stagefeedback-libiconv
  maybe-configure-stagefeedback-libiconv:
  @if libiconv-bootstrap
*************** clean-stageprofile-libiconv:
*** 27663,27668 ****
--- 29123,29170 ----
  @endif libiconv-bootstrap
  
  
+ .PHONY: all-stagetrain-libiconv maybe-all-stagetrain-libiconv
+ .PHONY: clean-stagetrain-libiconv maybe-clean-stagetrain-libiconv
+ maybe-all-stagetrain-libiconv:
+ maybe-clean-stagetrain-libiconv:
+ @if libiconv-bootstrap
+ maybe-all-stagetrain-libiconv: all-stagetrain-libiconv
+ all-stagetrain: all-stagetrain-libiconv
+ TARGET-stagetrain-libiconv = $(TARGET-libiconv)
+ all-stagetrain-libiconv: configure-stagetrain-libiconv
+ 	@[ $(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)/libiconv && \
+ 	 \
+ 	$(MAKE) $(BASE_FLAGS_TO_PASS) \
+ 		CFLAGS="$(STAGEtrain_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-libiconv)
+ 
+ maybe-clean-stagetrain-libiconv: clean-stagetrain-libiconv
+ clean-stagetrain: clean-stagetrain-libiconv
+ clean-stagetrain-libiconv:
+ 	@if [ $(current_stage) = stagetrain ]; then \
+ 	  [ -f $(HOST_SUBDIR)/libiconv/Makefile ] || exit 0; \
+ 	else \
+ 	  [ -f $(HOST_SUBDIR)/stagetrain-libiconv/Makefile ] || exit 0; \
+ 	  $(MAKE) stagetrain-start; \
+ 	fi; \
+ 	cd $(HOST_SUBDIR)/libiconv && \
+ 	$(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  clean
+ @endif libiconv-bootstrap
+ 
+ 
  .PHONY: all-stagefeedback-libiconv maybe-all-stagefeedback-libiconv
  .PHONY: clean-stagefeedback-libiconv maybe-clean-stagefeedback-libiconv
  maybe-all-stagefeedback-libiconv:
*************** configure-stageprofile-zlib:
*** 30453,30458 ****
--- 31955,31994 ----
  	  @extra_host_zlib_configure_flags@
  @endif zlib-bootstrap
  
+ .PHONY: configure-stagetrain-zlib maybe-configure-stagetrain-zlib
+ maybe-configure-stagetrain-zlib:
+ @if zlib-bootstrap
+ maybe-configure-stagetrain-zlib: configure-stagetrain-zlib
+ configure-stagetrain-zlib:
+ 	@[ $(current_stage) = stagetrain ] || $(MAKE) stagetrain-start
+ 	@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/zlib
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGEtrain_TFLAGS)"; \
+ 	test ! -f $(HOST_SUBDIR)/zlib/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)/zlib; \
+ 	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/zlib; \
+ 	cd $(HOST_SUBDIR)/zlib || exit 1; \
+ 	case $(srcdir) in \
+ 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ 	  *) topdir=`echo $(HOST_SUBDIR)/zlib/ | \
+ 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ 	esac; \
+ 	module_srcdir=zlib; \
+ 	$(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) \
+ 	  @extra_host_zlib_configure_flags@
+ @endif zlib-bootstrap
+ 
  .PHONY: configure-stagefeedback-zlib maybe-configure-stagefeedback-zlib
  maybe-configure-stagefeedback-zlib:
  @if zlib-bootstrap
*************** clean-stageprofile-zlib:
*** 30789,30794 ****
--- 32325,32372 ----
  @endif zlib-bootstrap
  
  
+ .PHONY: all-stagetrain-zlib maybe-all-stagetrain-zlib
+ .PHONY: clean-stagetrain-zlib maybe-clean-stagetrain-zlib
+ maybe-all-stagetrain-zlib:
+ maybe-clean-stagetrain-zlib:
+ @if zlib-bootstrap
+ maybe-all-stagetrain-zlib: all-stagetrain-zlib
+ all-stagetrain: all-stagetrain-zlib
+ TARGET-stagetrain-zlib = $(TARGET-zlib)
+ all-stagetrain-zlib: configure-stagetrain-zlib
+ 	@[ $(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)/zlib && \
+ 	 \
+ 	$(MAKE) $(BASE_FLAGS_TO_PASS) \
+ 		CFLAGS="$(STAGEtrain_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-zlib)
+ 
+ maybe-clean-stagetrain-zlib: clean-stagetrain-zlib
+ clean-stagetrain: clean-stagetrain-zlib
+ clean-stagetrain-zlib:
+ 	@if [ $(current_stage) = stagetrain ]; then \
+ 	  [ -f $(HOST_SUBDIR)/zlib/Makefile ] || exit 0; \
+ 	else \
+ 	  [ -f $(HOST_SUBDIR)/stagetrain-zlib/Makefile ] || exit 0; \
+ 	  $(MAKE) stagetrain-start; \
+ 	fi; \
+ 	cd $(HOST_SUBDIR)/zlib && \
+ 	$(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  clean
+ @endif zlib-bootstrap
+ 
+ 
  .PHONY: all-stagefeedback-zlib maybe-all-stagefeedback-zlib
  .PHONY: clean-stagefeedback-zlib maybe-clean-stagefeedback-zlib
  maybe-all-stagefeedback-zlib:
*************** configure-stageprofile-lto-plugin:
*** 34488,34493 ****
--- 36066,36105 ----
  	  --enable-shared @extra_linker_plugin_flags@ @extra_linker_plugin_configure_flags@
  @endif lto-plugin-bootstrap
  
+ .PHONY: configure-stagetrain-lto-plugin maybe-configure-stagetrain-lto-plugin
+ maybe-configure-stagetrain-lto-plugin:
+ @if lto-plugin-bootstrap
+ maybe-configure-stagetrain-lto-plugin: configure-stagetrain-lto-plugin
+ configure-stagetrain-lto-plugin:
+ 	@[ $(current_stage) = stagetrain ] || $(MAKE) stagetrain-start
+ 	@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/lto-plugin
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGEtrain_TFLAGS)"; \
+ 	test ! -f $(HOST_SUBDIR)/lto-plugin/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)/lto-plugin; \
+ 	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/lto-plugin; \
+ 	cd $(HOST_SUBDIR)/lto-plugin || exit 1; \
+ 	case $(srcdir) in \
+ 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ 	  *) topdir=`echo $(HOST_SUBDIR)/lto-plugin/ | \
+ 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ 	esac; \
+ 	module_srcdir=lto-plugin; \
+ 	$(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) \
+ 	  --enable-shared @extra_linker_plugin_flags@ @extra_linker_plugin_configure_flags@
+ @endif lto-plugin-bootstrap
+ 
  .PHONY: configure-stagefeedback-lto-plugin maybe-configure-stagefeedback-lto-plugin
  maybe-configure-stagefeedback-lto-plugin:
  @if lto-plugin-bootstrap
*************** clean-stageprofile-lto-plugin:
*** 34824,34829 ****
--- 36436,36483 ----
  @endif lto-plugin-bootstrap
  
  
+ .PHONY: all-stagetrain-lto-plugin maybe-all-stagetrain-lto-plugin
+ .PHONY: clean-stagetrain-lto-plugin maybe-clean-stagetrain-lto-plugin
+ maybe-all-stagetrain-lto-plugin:
+ maybe-clean-stagetrain-lto-plugin:
+ @if lto-plugin-bootstrap
+ maybe-all-stagetrain-lto-plugin: all-stagetrain-lto-plugin
+ all-stagetrain: all-stagetrain-lto-plugin
+ TARGET-stagetrain-lto-plugin = $(TARGET-lto-plugin)
+ all-stagetrain-lto-plugin: configure-stagetrain-lto-plugin
+ 	@[ $(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)/lto-plugin && \
+ 	 \
+ 	$(MAKE) $(BASE_FLAGS_TO_PASS) \
+ 		CFLAGS="$(STAGEtrain_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) @extra_linker_plugin_flags@ \
+ 		TFLAGS="$(STAGEtrain_TFLAGS)"  \
+ 		$(TARGET-stagetrain-lto-plugin)
+ 
+ maybe-clean-stagetrain-lto-plugin: clean-stagetrain-lto-plugin
+ clean-stagetrain: clean-stagetrain-lto-plugin
+ clean-stagetrain-lto-plugin:
+ 	@if [ $(current_stage) = stagetrain ]; then \
+ 	  [ -f $(HOST_SUBDIR)/lto-plugin/Makefile ] || exit 0; \
+ 	else \
+ 	  [ -f $(HOST_SUBDIR)/stagetrain-lto-plugin/Makefile ] || exit 0; \
+ 	  $(MAKE) stagetrain-start; \
+ 	fi; \
+ 	cd $(HOST_SUBDIR)/lto-plugin && \
+ 	$(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) @extra_linker_plugin_flags@ clean
+ @endif lto-plugin-bootstrap
+ 
+ 
  .PHONY: all-stagefeedback-lto-plugin maybe-all-stagefeedback-lto-plugin
  .PHONY: clean-stagefeedback-lto-plugin maybe-clean-stagefeedback-lto-plugin
  maybe-all-stagefeedback-lto-plugin:
*************** configure-stageprofile-target-libstdc++-
*** 36484,36489 ****
--- 38138,38188 ----
  	  $(STAGEprofile_CONFIGURE_FLAGS)
  @endif target-libstdc++-v3-bootstrap
  
+ .PHONY: configure-stagetrain-target-libstdc++-v3 maybe-configure-stagetrain-target-libstdc++-v3
+ maybe-configure-stagetrain-target-libstdc++-v3:
+ @if target-libstdc++-v3-bootstrap
+ maybe-configure-stagetrain-target-libstdc++-v3: configure-stagetrain-target-libstdc++-v3
+ configure-stagetrain-target-libstdc++-v3:
+ 	@[ $(current_stage) = stagetrain ] || $(MAKE) stagetrain-start
+ 	@$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGEtrain_TFLAGS)"; \
+ 	echo "Checking multilib configuration for libstdc++-v3..."; \
+ 	$(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp 2> /dev/null; \
+ 	if test -r $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \
+ 	  if cmp -s $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \
+ 	    rm -f $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp; \
+ 	  else \
+ 	    rm -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile; \
+ 	    mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \
+ 	  fi; \
+ 	else \
+ 	  mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \
+ 	fi; \
+ 	test ! -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile || exit 0; \
+ 	$(RAW_CXX_TARGET_EXPORTS) \
+ 	 \
+ 	CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
+ 	CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \
+ 	LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS;  \
+ 	echo Configuring stage train in $(TARGET_SUBDIR)/libstdc++-v3; \
+ 	$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3; \
+ 	cd $(TARGET_SUBDIR)/libstdc++-v3 || exit 1; \
+ 	case $(srcdir) in \
+ 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ 	  *) topdir=`echo $(TARGET_SUBDIR)/libstdc++-v3/ | \
+ 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ 	esac; \
+ 	module_srcdir=libstdc++-v3; \
+ 	$(SHELL) $$s/$$module_srcdir/configure \
+ 	  --srcdir=$${topdir}/$$module_srcdir \
+ 	  $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \
+ 	  --target=${target_alias} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGEtrain_CONFIGURE_FLAGS)
+ @endif target-libstdc++-v3-bootstrap
+ 
  .PHONY: configure-stagefeedback-target-libstdc++-v3 maybe-configure-stagefeedback-target-libstdc++-v3
  maybe-configure-stagefeedback-target-libstdc++-v3:
  @if target-libstdc++-v3-bootstrap
*************** clean-stageprofile-target-libstdc++-v3:
*** 36853,36858 ****
--- 38552,38599 ----
  @endif target-libstdc++-v3-bootstrap
  
  
+ .PHONY: all-stagetrain-target-libstdc++-v3 maybe-all-stagetrain-target-libstdc++-v3
+ .PHONY: clean-stagetrain-target-libstdc++-v3 maybe-clean-stagetrain-target-libstdc++-v3
+ maybe-all-stagetrain-target-libstdc++-v3:
+ maybe-clean-stagetrain-target-libstdc++-v3:
+ @if target-libstdc++-v3-bootstrap
+ maybe-all-stagetrain-target-libstdc++-v3: all-stagetrain-target-libstdc++-v3
+ all-stagetrain: all-stagetrain-target-libstdc++-v3
+ TARGET-stagetrain-target-libstdc++-v3 = $(TARGET-target-libstdc++-v3)
+ all-stagetrain-target-libstdc++-v3: configure-stagetrain-target-libstdc++-v3
+ 	@[ $(current_stage) = stagetrain ] || $(MAKE) stagetrain-start
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGEtrain_TFLAGS)"; \
+ 	$(RAW_CXX_TARGET_EXPORTS) \
+ 	  \
+ 	cd $(TARGET_SUBDIR)/libstdc++-v3 && \
+ 	 \
+ 	$(MAKE) $(BASE_FLAGS_TO_PASS) \
+ 		CFLAGS="$(CFLAGS_FOR_TARGET)" \
+ 		CXXFLAGS="$(CXXFLAGS_FOR_TARGET)" \
+ 		LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)" \
+ 		CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \
+ 		CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \
+ 		LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \
+ 		$(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)'   \
+ 		TFLAGS="$(STAGEtrain_TFLAGS)"  \
+ 		$(TARGET-stagetrain-target-libstdc++-v3)
+ 
+ maybe-clean-stagetrain-target-libstdc++-v3: clean-stagetrain-target-libstdc++-v3
+ clean-stagetrain: clean-stagetrain-target-libstdc++-v3
+ clean-stagetrain-target-libstdc++-v3:
+ 	@if [ $(current_stage) = stagetrain ]; then \
+ 	  [ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0; \
+ 	else \
+ 	  [ -f $(TARGET_SUBDIR)/stagetrain-libstdc++-v3/Makefile ] || exit 0; \
+ 	  $(MAKE) stagetrain-start; \
+ 	fi; \
+ 	cd $(TARGET_SUBDIR)/libstdc++-v3 && \
+ 	$(MAKE) $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)'   clean
+ @endif target-libstdc++-v3-bootstrap
+ 
+ 
  .PHONY: all-stagefeedback-target-libstdc++-v3 maybe-all-stagefeedback-target-libstdc++-v3
  .PHONY: clean-stagefeedback-target-libstdc++-v3 maybe-clean-stagefeedback-target-libstdc++-v3
  maybe-all-stagefeedback-target-libstdc++-v3:
*************** configure-stageprofile-target-libsanitiz
*** 37640,37645 ****
--- 39381,39431 ----
  	  $(STAGEprofile_CONFIGURE_FLAGS)
  @endif target-libsanitizer-bootstrap
  
+ .PHONY: configure-stagetrain-target-libsanitizer maybe-configure-stagetrain-target-libsanitizer
+ maybe-configure-stagetrain-target-libsanitizer:
+ @if target-libsanitizer-bootstrap
+ maybe-configure-stagetrain-target-libsanitizer: configure-stagetrain-target-libsanitizer
+ configure-stagetrain-target-libsanitizer:
+ 	@[ $(current_stage) = stagetrain ] || $(MAKE) stagetrain-start
+ 	@$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libsanitizer
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGEtrain_TFLAGS)"; \
+ 	echo "Checking multilib configuration for libsanitizer..."; \
+ 	$(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libsanitizer/multilib.tmp 2> /dev/null; \
+ 	if test -r $(TARGET_SUBDIR)/libsanitizer/multilib.out; then \
+ 	  if cmp -s $(TARGET_SUBDIR)/libsanitizer/multilib.tmp $(TARGET_SUBDIR)/libsanitizer/multilib.out; then \
+ 	    rm -f $(TARGET_SUBDIR)/libsanitizer/multilib.tmp; \
+ 	  else \
+ 	    rm -f $(TARGET_SUBDIR)/libsanitizer/Makefile; \
+ 	    mv $(TARGET_SUBDIR)/libsanitizer/multilib.tmp $(TARGET_SUBDIR)/libsanitizer/multilib.out; \
+ 	  fi; \
+ 	else \
+ 	  mv $(TARGET_SUBDIR)/libsanitizer/multilib.tmp $(TARGET_SUBDIR)/libsanitizer/multilib.out; \
+ 	fi; \
+ 	test ! -f $(TARGET_SUBDIR)/libsanitizer/Makefile || exit 0; \
+ 	$(RAW_CXX_TARGET_EXPORTS) \
+ 	 \
+ 	CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
+ 	CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \
+ 	LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS;  \
+ 	echo Configuring stage train in $(TARGET_SUBDIR)/libsanitizer; \
+ 	$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libsanitizer; \
+ 	cd $(TARGET_SUBDIR)/libsanitizer || exit 1; \
+ 	case $(srcdir) in \
+ 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ 	  *) topdir=`echo $(TARGET_SUBDIR)/libsanitizer/ | \
+ 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ 	esac; \
+ 	module_srcdir=libsanitizer; \
+ 	$(SHELL) $$s/$$module_srcdir/configure \
+ 	  --srcdir=$${topdir}/$$module_srcdir \
+ 	  $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \
+ 	  --target=${target_alias} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGEtrain_CONFIGURE_FLAGS)
+ @endif target-libsanitizer-bootstrap
+ 
  .PHONY: configure-stagefeedback-target-libsanitizer maybe-configure-stagefeedback-target-libsanitizer
  maybe-configure-stagefeedback-target-libsanitizer:
  @if target-libsanitizer-bootstrap
*************** clean-stageprofile-target-libsanitizer:
*** 38009,38014 ****
--- 39795,39842 ----
  @endif target-libsanitizer-bootstrap
  
  
+ .PHONY: all-stagetrain-target-libsanitizer maybe-all-stagetrain-target-libsanitizer
+ .PHONY: clean-stagetrain-target-libsanitizer maybe-clean-stagetrain-target-libsanitizer
+ maybe-all-stagetrain-target-libsanitizer:
+ maybe-clean-stagetrain-target-libsanitizer:
+ @if target-libsanitizer-bootstrap
+ maybe-all-stagetrain-target-libsanitizer: all-stagetrain-target-libsanitizer
+ all-stagetrain: all-stagetrain-target-libsanitizer
+ TARGET-stagetrain-target-libsanitizer = $(TARGET-target-libsanitizer)
+ all-stagetrain-target-libsanitizer: configure-stagetrain-target-libsanitizer
+ 	@[ $(current_stage) = stagetrain ] || $(MAKE) stagetrain-start
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGEtrain_TFLAGS)"; \
+ 	$(RAW_CXX_TARGET_EXPORTS) \
+ 	  \
+ 	cd $(TARGET_SUBDIR)/libsanitizer && \
+ 	 \
+ 	$(MAKE) $(BASE_FLAGS_TO_PASS) \
+ 		CFLAGS="$(CFLAGS_FOR_TARGET)" \
+ 		CXXFLAGS="$(CXXFLAGS_FOR_TARGET)" \
+ 		LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)" \
+ 		CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \
+ 		CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \
+ 		LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \
+ 		$(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)'   \
+ 		TFLAGS="$(STAGEtrain_TFLAGS)"  \
+ 		$(TARGET-stagetrain-target-libsanitizer)
+ 
+ maybe-clean-stagetrain-target-libsanitizer: clean-stagetrain-target-libsanitizer
+ clean-stagetrain: clean-stagetrain-target-libsanitizer
+ clean-stagetrain-target-libsanitizer:
+ 	@if [ $(current_stage) = stagetrain ]; then \
+ 	  [ -f $(TARGET_SUBDIR)/libsanitizer/Makefile ] || exit 0; \
+ 	else \
+ 	  [ -f $(TARGET_SUBDIR)/stagetrain-libsanitizer/Makefile ] || exit 0; \
+ 	  $(MAKE) stagetrain-start; \
+ 	fi; \
+ 	cd $(TARGET_SUBDIR)/libsanitizer && \
+ 	$(MAKE) $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)'   clean
+ @endif target-libsanitizer-bootstrap
+ 
+ 
  .PHONY: all-stagefeedback-target-libsanitizer maybe-all-stagefeedback-target-libsanitizer
  .PHONY: clean-stagefeedback-target-libsanitizer maybe-clean-stagefeedback-target-libsanitizer
  maybe-all-stagefeedback-target-libsanitizer:
*************** configure-stageprofile-target-libmpx:
*** 38796,38801 ****
--- 40624,40674 ----
  	  $(STAGEprofile_CONFIGURE_FLAGS)
  @endif target-libmpx-bootstrap
  
+ .PHONY: configure-stagetrain-target-libmpx maybe-configure-stagetrain-target-libmpx
+ maybe-configure-stagetrain-target-libmpx:
+ @if target-libmpx-bootstrap
+ maybe-configure-stagetrain-target-libmpx: configure-stagetrain-target-libmpx
+ configure-stagetrain-target-libmpx:
+ 	@[ $(current_stage) = stagetrain ] || $(MAKE) stagetrain-start
+ 	@$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libmpx
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGEtrain_TFLAGS)"; \
+ 	echo "Checking multilib configuration for libmpx..."; \
+ 	$(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libmpx/multilib.tmp 2> /dev/null; \
+ 	if test -r $(TARGET_SUBDIR)/libmpx/multilib.out; then \
+ 	  if cmp -s $(TARGET_SUBDIR)/libmpx/multilib.tmp $(TARGET_SUBDIR)/libmpx/multilib.out; then \
+ 	    rm -f $(TARGET_SUBDIR)/libmpx/multilib.tmp; \
+ 	  else \
+ 	    rm -f $(TARGET_SUBDIR)/libmpx/Makefile; \
+ 	    mv $(TARGET_SUBDIR)/libmpx/multilib.tmp $(TARGET_SUBDIR)/libmpx/multilib.out; \
+ 	  fi; \
+ 	else \
+ 	  mv $(TARGET_SUBDIR)/libmpx/multilib.tmp $(TARGET_SUBDIR)/libmpx/multilib.out; \
+ 	fi; \
+ 	test ! -f $(TARGET_SUBDIR)/libmpx/Makefile || exit 0; \
+ 	$(NORMAL_TARGET_EXPORTS) \
+ 	 \
+ 	CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
+ 	CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \
+ 	LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS;  \
+ 	echo Configuring stage train in $(TARGET_SUBDIR)/libmpx; \
+ 	$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libmpx; \
+ 	cd $(TARGET_SUBDIR)/libmpx || exit 1; \
+ 	case $(srcdir) in \
+ 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ 	  *) topdir=`echo $(TARGET_SUBDIR)/libmpx/ | \
+ 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ 	esac; \
+ 	module_srcdir=libmpx; \
+ 	$(SHELL) $$s/$$module_srcdir/configure \
+ 	  --srcdir=$${topdir}/$$module_srcdir \
+ 	  $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \
+ 	  --target=${target_alias} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGEtrain_CONFIGURE_FLAGS)
+ @endif target-libmpx-bootstrap
+ 
  .PHONY: configure-stagefeedback-target-libmpx maybe-configure-stagefeedback-target-libmpx
  maybe-configure-stagefeedback-target-libmpx:
  @if target-libmpx-bootstrap
*************** clean-stageprofile-target-libmpx:
*** 39165,39170 ****
--- 41038,41085 ----
  @endif target-libmpx-bootstrap
  
  
+ .PHONY: all-stagetrain-target-libmpx maybe-all-stagetrain-target-libmpx
+ .PHONY: clean-stagetrain-target-libmpx maybe-clean-stagetrain-target-libmpx
+ maybe-all-stagetrain-target-libmpx:
+ maybe-clean-stagetrain-target-libmpx:
+ @if target-libmpx-bootstrap
+ maybe-all-stagetrain-target-libmpx: all-stagetrain-target-libmpx
+ all-stagetrain: all-stagetrain-target-libmpx
+ TARGET-stagetrain-target-libmpx = $(TARGET-target-libmpx)
+ all-stagetrain-target-libmpx: configure-stagetrain-target-libmpx
+ 	@[ $(current_stage) = stagetrain ] || $(MAKE) stagetrain-start
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGEtrain_TFLAGS)"; \
+ 	$(NORMAL_TARGET_EXPORTS) \
+ 	  \
+ 	cd $(TARGET_SUBDIR)/libmpx && \
+ 	 \
+ 	$(MAKE) $(BASE_FLAGS_TO_PASS) \
+ 		CFLAGS="$(CFLAGS_FOR_TARGET)" \
+ 		CXXFLAGS="$(CXXFLAGS_FOR_TARGET)" \
+ 		LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)" \
+ 		CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \
+ 		CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \
+ 		LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \
+ 		$(EXTRA_TARGET_FLAGS)   \
+ 		TFLAGS="$(STAGEtrain_TFLAGS)"  \
+ 		$(TARGET-stagetrain-target-libmpx)
+ 
+ maybe-clean-stagetrain-target-libmpx: clean-stagetrain-target-libmpx
+ clean-stagetrain: clean-stagetrain-target-libmpx
+ clean-stagetrain-target-libmpx:
+ 	@if [ $(current_stage) = stagetrain ]; then \
+ 	  [ -f $(TARGET_SUBDIR)/libmpx/Makefile ] || exit 0; \
+ 	else \
+ 	  [ -f $(TARGET_SUBDIR)/stagetrain-libmpx/Makefile ] || exit 0; \
+ 	  $(MAKE) stagetrain-start; \
+ 	fi; \
+ 	cd $(TARGET_SUBDIR)/libmpx && \
+ 	$(MAKE) $(EXTRA_TARGET_FLAGS)   clean
+ @endif target-libmpx-bootstrap
+ 
+ 
  .PHONY: all-stagefeedback-target-libmpx maybe-all-stagefeedback-target-libmpx
  .PHONY: clean-stagefeedback-target-libmpx maybe-clean-stagefeedback-target-libmpx
  maybe-all-stagefeedback-target-libmpx:
*************** configure-stageprofile-target-libvtv:
*** 39952,39957 ****
--- 41867,41917 ----
  	  $(STAGEprofile_CONFIGURE_FLAGS)
  @endif target-libvtv-bootstrap
  
+ .PHONY: configure-stagetrain-target-libvtv maybe-configure-stagetrain-target-libvtv
+ maybe-configure-stagetrain-target-libvtv:
+ @if target-libvtv-bootstrap
+ maybe-configure-stagetrain-target-libvtv: configure-stagetrain-target-libvtv
+ configure-stagetrain-target-libvtv:
+ 	@[ $(current_stage) = stagetrain ] || $(MAKE) stagetrain-start
+ 	@$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libvtv
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGEtrain_TFLAGS)"; \
+ 	echo "Checking multilib configuration for libvtv..."; \
+ 	$(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libvtv/multilib.tmp 2> /dev/null; \
+ 	if test -r $(TARGET_SUBDIR)/libvtv/multilib.out; then \
+ 	  if cmp -s $(TARGET_SUBDIR)/libvtv/multilib.tmp $(TARGET_SUBDIR)/libvtv/multilib.out; then \
+ 	    rm -f $(TARGET_SUBDIR)/libvtv/multilib.tmp; \
+ 	  else \
+ 	    rm -f $(TARGET_SUBDIR)/libvtv/Makefile; \
+ 	    mv $(TARGET_SUBDIR)/libvtv/multilib.tmp $(TARGET_SUBDIR)/libvtv/multilib.out; \
+ 	  fi; \
+ 	else \
+ 	  mv $(TARGET_SUBDIR)/libvtv/multilib.tmp $(TARGET_SUBDIR)/libvtv/multilib.out; \
+ 	fi; \
+ 	test ! -f $(TARGET_SUBDIR)/libvtv/Makefile || exit 0; \
+ 	$(RAW_CXX_TARGET_EXPORTS) \
+ 	 \
+ 	CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
+ 	CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \
+ 	LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS;  \
+ 	echo Configuring stage train in $(TARGET_SUBDIR)/libvtv; \
+ 	$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libvtv; \
+ 	cd $(TARGET_SUBDIR)/libvtv || exit 1; \
+ 	case $(srcdir) in \
+ 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ 	  *) topdir=`echo $(TARGET_SUBDIR)/libvtv/ | \
+ 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ 	esac; \
+ 	module_srcdir=libvtv; \
+ 	$(SHELL) $$s/$$module_srcdir/configure \
+ 	  --srcdir=$${topdir}/$$module_srcdir \
+ 	  $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \
+ 	  --target=${target_alias} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGEtrain_CONFIGURE_FLAGS)
+ @endif target-libvtv-bootstrap
+ 
  .PHONY: configure-stagefeedback-target-libvtv maybe-configure-stagefeedback-target-libvtv
  maybe-configure-stagefeedback-target-libvtv:
  @if target-libvtv-bootstrap
*************** clean-stageprofile-target-libvtv:
*** 40321,40326 ****
--- 42281,42328 ----
  @endif target-libvtv-bootstrap
  
  
+ .PHONY: all-stagetrain-target-libvtv maybe-all-stagetrain-target-libvtv
+ .PHONY: clean-stagetrain-target-libvtv maybe-clean-stagetrain-target-libvtv
+ maybe-all-stagetrain-target-libvtv:
+ maybe-clean-stagetrain-target-libvtv:
+ @if target-libvtv-bootstrap
+ maybe-all-stagetrain-target-libvtv: all-stagetrain-target-libvtv
+ all-stagetrain: all-stagetrain-target-libvtv
+ TARGET-stagetrain-target-libvtv = $(TARGET-target-libvtv)
+ all-stagetrain-target-libvtv: configure-stagetrain-target-libvtv
+ 	@[ $(current_stage) = stagetrain ] || $(MAKE) stagetrain-start
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGEtrain_TFLAGS)"; \
+ 	$(RAW_CXX_TARGET_EXPORTS) \
+ 	  \
+ 	cd $(TARGET_SUBDIR)/libvtv && \
+ 	 \
+ 	$(MAKE) $(BASE_FLAGS_TO_PASS) \
+ 		CFLAGS="$(CFLAGS_FOR_TARGET)" \
+ 		CXXFLAGS="$(CXXFLAGS_FOR_TARGET)" \
+ 		LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)" \
+ 		CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \
+ 		CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \
+ 		LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \
+ 		$(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)'   \
+ 		TFLAGS="$(STAGEtrain_TFLAGS)"  \
+ 		$(TARGET-stagetrain-target-libvtv)
+ 
+ maybe-clean-stagetrain-target-libvtv: clean-stagetrain-target-libvtv
+ clean-stagetrain: clean-stagetrain-target-libvtv
+ clean-stagetrain-target-libvtv:
+ 	@if [ $(current_stage) = stagetrain ]; then \
+ 	  [ -f $(TARGET_SUBDIR)/libvtv/Makefile ] || exit 0; \
+ 	else \
+ 	  [ -f $(TARGET_SUBDIR)/stagetrain-libvtv/Makefile ] || exit 0; \
+ 	  $(MAKE) stagetrain-start; \
+ 	fi; \
+ 	cd $(TARGET_SUBDIR)/libvtv && \
+ 	$(MAKE) $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)'   clean
+ @endif target-libvtv-bootstrap
+ 
+ 
  .PHONY: all-stagefeedback-target-libvtv maybe-all-stagefeedback-target-libvtv
  .PHONY: clean-stagefeedback-target-libvtv maybe-clean-stagefeedback-target-libvtv
  maybe-all-stagefeedback-target-libvtv:
*************** maintainer-clean-target-libvtv:
*** 40839,41302 ****
  
  
  
- .PHONY: configure-target-libcilkrts maybe-configure-target-libcilkrts
- maybe-configure-target-libcilkrts:
- @if gcc-bootstrap
- configure-target-libcilkrts: stage_current
- @endif gcc-bootstrap
- @if target-libcilkrts
- maybe-configure-target-libcilkrts: configure-target-libcilkrts
- configure-target-libcilkrts: 
- 	@: $(MAKE); $(unstage)
- 	@r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	echo "Checking multilib configuration for libcilkrts..."; \
- 	$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libcilkrts; \
- 	$(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libcilkrts/multilib.tmp 2> /dev/null; \
- 	if test -r $(TARGET_SUBDIR)/libcilkrts/multilib.out; then \
- 	  if cmp -s $(TARGET_SUBDIR)/libcilkrts/multilib.tmp $(TARGET_SUBDIR)/libcilkrts/multilib.out; then \
- 	    rm -f $(TARGET_SUBDIR)/libcilkrts/multilib.tmp; \
- 	  else \
- 	    rm -f $(TARGET_SUBDIR)/libcilkrts/Makefile; \
- 	    mv $(TARGET_SUBDIR)/libcilkrts/multilib.tmp $(TARGET_SUBDIR)/libcilkrts/multilib.out; \
- 	  fi; \
- 	else \
- 	  mv $(TARGET_SUBDIR)/libcilkrts/multilib.tmp $(TARGET_SUBDIR)/libcilkrts/multilib.out; \
- 	fi; \
- 	test ! -f $(TARGET_SUBDIR)/libcilkrts/Makefile || exit 0; \
- 	$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libcilkrts; \
- 	$(NORMAL_TARGET_EXPORTS)  \
- 	echo Configuring in $(TARGET_SUBDIR)/libcilkrts; \
- 	cd "$(TARGET_SUBDIR)/libcilkrts" || exit 1; \
- 	case $(srcdir) in \
- 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
- 	  *) topdir=`echo $(TARGET_SUBDIR)/libcilkrts/ | \
- 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
- 	esac; \
- 	module_srcdir=libcilkrts; \
- 	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-libcilkrts
- 
- 
- 
- 
- 
- .PHONY: all-target-libcilkrts maybe-all-target-libcilkrts
- maybe-all-target-libcilkrts:
- @if gcc-bootstrap
- all-target-libcilkrts: stage_current
- @endif gcc-bootstrap
- @if target-libcilkrts
- TARGET-target-libcilkrts=all
- maybe-all-target-libcilkrts: all-target-libcilkrts
- all-target-libcilkrts: configure-target-libcilkrts
- 	@: $(MAKE); $(unstage)
- 	@r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	$(NORMAL_TARGET_EXPORTS)  \
- 	(cd $(TARGET_SUBDIR)/libcilkrts && \
- 	  $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS)   \
- 		$(TARGET-target-libcilkrts))
- @endif target-libcilkrts
- 
- 
- 
- 
- 
- .PHONY: check-target-libcilkrts maybe-check-target-libcilkrts
- maybe-check-target-libcilkrts:
- @if target-libcilkrts
- maybe-check-target-libcilkrts: check-target-libcilkrts
- 
- check-target-libcilkrts:
- 	@: $(MAKE); $(unstage)
- 	@r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	$(NORMAL_TARGET_EXPORTS) \
- 	(cd $(TARGET_SUBDIR)/libcilkrts && \
- 	  $(MAKE) $(TARGET_FLAGS_TO_PASS)   check)
- 
- @endif target-libcilkrts
- 
- .PHONY: install-target-libcilkrts maybe-install-target-libcilkrts
- maybe-install-target-libcilkrts:
- @if target-libcilkrts
- maybe-install-target-libcilkrts: install-target-libcilkrts
- 
- install-target-libcilkrts: installdirs
- 	@: $(MAKE); $(unstage)
- 	@r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	$(NORMAL_TARGET_EXPORTS) \
- 	(cd $(TARGET_SUBDIR)/libcilkrts && \
- 	  $(MAKE) $(TARGET_FLAGS_TO_PASS)  install)
- 
- @endif target-libcilkrts
- 
- .PHONY: install-strip-target-libcilkrts maybe-install-strip-target-libcilkrts
- maybe-install-strip-target-libcilkrts:
- @if target-libcilkrts
- maybe-install-strip-target-libcilkrts: install-strip-target-libcilkrts
- 
- install-strip-target-libcilkrts: installdirs
- 	@: $(MAKE); $(unstage)
- 	@r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	$(NORMAL_TARGET_EXPORTS) \
- 	(cd $(TARGET_SUBDIR)/libcilkrts && \
- 	  $(MAKE) $(TARGET_FLAGS_TO_PASS)  install-strip)
- 
- @endif target-libcilkrts
- 
- # Other targets (info, dvi, pdf, etc.)
- 
- .PHONY: maybe-info-target-libcilkrts info-target-libcilkrts
- maybe-info-target-libcilkrts:
- @if target-libcilkrts
- maybe-info-target-libcilkrts: info-target-libcilkrts
- 
- info-target-libcilkrts: \
-     configure-target-libcilkrts 
- 	@: $(MAKE); $(unstage)
- 	@[ -f $(TARGET_SUBDIR)/libcilkrts/Makefile ] || exit 0; \
- 	r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	$(NORMAL_TARGET_EXPORTS) \
- 	echo "Doing info in $(TARGET_SUBDIR)/libcilkrts"; \
- 	for flag in $(EXTRA_TARGET_FLAGS); do \
- 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
- 	done; \
- 	(cd $(TARGET_SUBDIR)/libcilkrts && \
- 	  $(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-libcilkrts
- 
- .PHONY: maybe-dvi-target-libcilkrts dvi-target-libcilkrts
- maybe-dvi-target-libcilkrts:
- @if target-libcilkrts
- maybe-dvi-target-libcilkrts: dvi-target-libcilkrts
- 
- dvi-target-libcilkrts: \
-     configure-target-libcilkrts 
- 	@: $(MAKE); $(unstage)
- 	@[ -f $(TARGET_SUBDIR)/libcilkrts/Makefile ] || exit 0; \
- 	r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	$(NORMAL_TARGET_EXPORTS) \
- 	echo "Doing dvi in $(TARGET_SUBDIR)/libcilkrts"; \
- 	for flag in $(EXTRA_TARGET_FLAGS); do \
- 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
- 	done; \
- 	(cd $(TARGET_SUBDIR)/libcilkrts && \
- 	  $(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-libcilkrts
- 
- .PHONY: maybe-pdf-target-libcilkrts pdf-target-libcilkrts
- maybe-pdf-target-libcilkrts:
- @if target-libcilkrts
- maybe-pdf-target-libcilkrts: pdf-target-libcilkrts
- 
- pdf-target-libcilkrts: \
-     configure-target-libcilkrts 
- 	@: $(MAKE); $(unstage)
- 	@[ -f $(TARGET_SUBDIR)/libcilkrts/Makefile ] || exit 0; \
- 	r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	$(NORMAL_TARGET_EXPORTS) \
- 	echo "Doing pdf in $(TARGET_SUBDIR)/libcilkrts"; \
- 	for flag in $(EXTRA_TARGET_FLAGS); do \
- 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
- 	done; \
- 	(cd $(TARGET_SUBDIR)/libcilkrts && \
- 	  $(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-libcilkrts
- 
- .PHONY: maybe-html-target-libcilkrts html-target-libcilkrts
- maybe-html-target-libcilkrts:
- @if target-libcilkrts
- maybe-html-target-libcilkrts: html-target-libcilkrts
- 
- html-target-libcilkrts: \
-     configure-target-libcilkrts 
- 	@: $(MAKE); $(unstage)
- 	@[ -f $(TARGET_SUBDIR)/libcilkrts/Makefile ] || exit 0; \
- 	r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	$(NORMAL_TARGET_EXPORTS) \
- 	echo "Doing html in $(TARGET_SUBDIR)/libcilkrts"; \
- 	for flag in $(EXTRA_TARGET_FLAGS); do \
- 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
- 	done; \
- 	(cd $(TARGET_SUBDIR)/libcilkrts && \
- 	  $(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-libcilkrts
- 
- .PHONY: maybe-TAGS-target-libcilkrts TAGS-target-libcilkrts
- maybe-TAGS-target-libcilkrts:
- @if target-libcilkrts
- maybe-TAGS-target-libcilkrts: TAGS-target-libcilkrts
- 
- TAGS-target-libcilkrts: \
-     configure-target-libcilkrts 
- 	@: $(MAKE); $(unstage)
- 	@[ -f $(TARGET_SUBDIR)/libcilkrts/Makefile ] || exit 0; \
- 	r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	$(NORMAL_TARGET_EXPORTS) \
- 	echo "Doing TAGS in $(TARGET_SUBDIR)/libcilkrts"; \
- 	for flag in $(EXTRA_TARGET_FLAGS); do \
- 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
- 	done; \
- 	(cd $(TARGET_SUBDIR)/libcilkrts && \
- 	  $(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-libcilkrts
- 
- .PHONY: maybe-install-info-target-libcilkrts install-info-target-libcilkrts
- maybe-install-info-target-libcilkrts:
- @if target-libcilkrts
- maybe-install-info-target-libcilkrts: install-info-target-libcilkrts
- 
- install-info-target-libcilkrts: \
-     configure-target-libcilkrts \
-     info-target-libcilkrts 
- 	@: $(MAKE); $(unstage)
- 	@[ -f $(TARGET_SUBDIR)/libcilkrts/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)/libcilkrts"; \
- 	for flag in $(EXTRA_TARGET_FLAGS); do \
- 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
- 	done; \
- 	(cd $(TARGET_SUBDIR)/libcilkrts && \
- 	  $(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-libcilkrts
- 
- .PHONY: maybe-install-pdf-target-libcilkrts install-pdf-target-libcilkrts
- maybe-install-pdf-target-libcilkrts:
- @if target-libcilkrts
- maybe-install-pdf-target-libcilkrts: install-pdf-target-libcilkrts
- 
- install-pdf-target-libcilkrts: \
-     configure-target-libcilkrts \
-     pdf-target-libcilkrts 
- 	@: $(MAKE); $(unstage)
- 	@[ -f $(TARGET_SUBDIR)/libcilkrts/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)/libcilkrts"; \
- 	for flag in $(EXTRA_TARGET_FLAGS); do \
- 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
- 	done; \
- 	(cd $(TARGET_SUBDIR)/libcilkrts && \
- 	  $(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-libcilkrts
- 
- .PHONY: maybe-install-html-target-libcilkrts install-html-target-libcilkrts
- maybe-install-html-target-libcilkrts:
- @if target-libcilkrts
- maybe-install-html-target-libcilkrts: install-html-target-libcilkrts
- 
- install-html-target-libcilkrts: \
-     configure-target-libcilkrts \
-     html-target-libcilkrts 
- 	@: $(MAKE); $(unstage)
- 	@[ -f $(TARGET_SUBDIR)/libcilkrts/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)/libcilkrts"; \
- 	for flag in $(EXTRA_TARGET_FLAGS); do \
- 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
- 	done; \
- 	(cd $(TARGET_SUBDIR)/libcilkrts && \
- 	  $(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-libcilkrts
- 
- .PHONY: maybe-installcheck-target-libcilkrts installcheck-target-libcilkrts
- maybe-installcheck-target-libcilkrts:
- @if target-libcilkrts
- maybe-installcheck-target-libcilkrts: installcheck-target-libcilkrts
- 
- installcheck-target-libcilkrts: \
-     configure-target-libcilkrts 
- 	@: $(MAKE); $(unstage)
- 	@[ -f $(TARGET_SUBDIR)/libcilkrts/Makefile ] || exit 0; \
- 	r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	$(NORMAL_TARGET_EXPORTS) \
- 	echo "Doing installcheck in $(TARGET_SUBDIR)/libcilkrts"; \
- 	for flag in $(EXTRA_TARGET_FLAGS); do \
- 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
- 	done; \
- 	(cd $(TARGET_SUBDIR)/libcilkrts && \
- 	  $(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-libcilkrts
- 
- .PHONY: maybe-mostlyclean-target-libcilkrts mostlyclean-target-libcilkrts
- maybe-mostlyclean-target-libcilkrts:
- @if target-libcilkrts
- maybe-mostlyclean-target-libcilkrts: mostlyclean-target-libcilkrts
- 
- mostlyclean-target-libcilkrts: 
- 	@: $(MAKE); $(unstage)
- 	@[ -f $(TARGET_SUBDIR)/libcilkrts/Makefile ] || exit 0; \
- 	r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	$(NORMAL_TARGET_EXPORTS) \
- 	echo "Doing mostlyclean in $(TARGET_SUBDIR)/libcilkrts"; \
- 	for flag in $(EXTRA_TARGET_FLAGS); do \
- 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
- 	done; \
- 	(cd $(TARGET_SUBDIR)/libcilkrts && \
- 	  $(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-libcilkrts
- 
- .PHONY: maybe-clean-target-libcilkrts clean-target-libcilkrts
- maybe-clean-target-libcilkrts:
- @if target-libcilkrts
- maybe-clean-target-libcilkrts: clean-target-libcilkrts
- 
- clean-target-libcilkrts: 
- 	@: $(MAKE); $(unstage)
- 	@[ -f $(TARGET_SUBDIR)/libcilkrts/Makefile ] || exit 0; \
- 	r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	$(NORMAL_TARGET_EXPORTS) \
- 	echo "Doing clean in $(TARGET_SUBDIR)/libcilkrts"; \
- 	for flag in $(EXTRA_TARGET_FLAGS); do \
- 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
- 	done; \
- 	(cd $(TARGET_SUBDIR)/libcilkrts && \
- 	  $(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-libcilkrts
- 
- .PHONY: maybe-distclean-target-libcilkrts distclean-target-libcilkrts
- maybe-distclean-target-libcilkrts:
- @if target-libcilkrts
- maybe-distclean-target-libcilkrts: distclean-target-libcilkrts
- 
- distclean-target-libcilkrts: 
- 	@: $(MAKE); $(unstage)
- 	@[ -f $(TARGET_SUBDIR)/libcilkrts/Makefile ] || exit 0; \
- 	r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	$(NORMAL_TARGET_EXPORTS) \
- 	echo "Doing distclean in $(TARGET_SUBDIR)/libcilkrts"; \
- 	for flag in $(EXTRA_TARGET_FLAGS); do \
- 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
- 	done; \
- 	(cd $(TARGET_SUBDIR)/libcilkrts && \
- 	  $(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-libcilkrts
- 
- .PHONY: maybe-maintainer-clean-target-libcilkrts maintainer-clean-target-libcilkrts
- maybe-maintainer-clean-target-libcilkrts:
- @if target-libcilkrts
- maybe-maintainer-clean-target-libcilkrts: maintainer-clean-target-libcilkrts
- 
- maintainer-clean-target-libcilkrts: 
- 	@: $(MAKE); $(unstage)
- 	@[ -f $(TARGET_SUBDIR)/libcilkrts/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)/libcilkrts"; \
- 	for flag in $(EXTRA_TARGET_FLAGS); do \
- 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
- 	done; \
- 	(cd $(TARGET_SUBDIR)/libcilkrts && \
- 	  $(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-libcilkrts
- 
- 
- 
- 
- 
  .PHONY: configure-target-liboffloadmic maybe-configure-target-liboffloadmic
  maybe-configure-target-liboffloadmic:
  @if gcc-bootstrap
--- 42841,42846 ----
*************** configure-stageprofile-target-libgcc:
*** 42940,42945 ****
--- 44484,44534 ----
  	  $(STAGEprofile_CONFIGURE_FLAGS)
  @endif target-libgcc-bootstrap
  
+ .PHONY: configure-stagetrain-target-libgcc maybe-configure-stagetrain-target-libgcc
+ maybe-configure-stagetrain-target-libgcc:
+ @if target-libgcc-bootstrap
+ maybe-configure-stagetrain-target-libgcc: configure-stagetrain-target-libgcc
+ configure-stagetrain-target-libgcc:
+ 	@[ $(current_stage) = stagetrain ] || $(MAKE) stagetrain-start
+ 	@$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgcc
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGEtrain_TFLAGS)"; \
+ 	echo "Checking multilib configuration for libgcc..."; \
+ 	$(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libgcc/multilib.tmp 2> /dev/null; \
+ 	if test -r $(TARGET_SUBDIR)/libgcc/multilib.out; then \
+ 	  if cmp -s $(TARGET_SUBDIR)/libgcc/multilib.tmp $(TARGET_SUBDIR)/libgcc/multilib.out; then \
+ 	    rm -f $(TARGET_SUBDIR)/libgcc/multilib.tmp; \
+ 	  else \
+ 	    rm -f $(TARGET_SUBDIR)/libgcc/Makefile; \
+ 	    mv $(TARGET_SUBDIR)/libgcc/multilib.tmp $(TARGET_SUBDIR)/libgcc/multilib.out; \
+ 	  fi; \
+ 	else \
+ 	  mv $(TARGET_SUBDIR)/libgcc/multilib.tmp $(TARGET_SUBDIR)/libgcc/multilib.out; \
+ 	fi; \
+ 	test ! -f $(TARGET_SUBDIR)/libgcc/Makefile || exit 0; \
+ 	$(NORMAL_TARGET_EXPORTS) \
+ 	 \
+ 	CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
+ 	CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \
+ 	LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS;  \
+ 	echo Configuring stage train in $(TARGET_SUBDIR)/libgcc; \
+ 	$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgcc; \
+ 	cd $(TARGET_SUBDIR)/libgcc || exit 1; \
+ 	case $(srcdir) in \
+ 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ 	  *) topdir=`echo $(TARGET_SUBDIR)/libgcc/ | \
+ 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ 	esac; \
+ 	module_srcdir=libgcc; \
+ 	$(SHELL) $$s/$$module_srcdir/configure \
+ 	  --srcdir=$${topdir}/$$module_srcdir \
+ 	  $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \
+ 	  --target=${target_alias} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGEtrain_CONFIGURE_FLAGS)
+ @endif target-libgcc-bootstrap
+ 
  .PHONY: configure-stagefeedback-target-libgcc maybe-configure-stagefeedback-target-libgcc
  maybe-configure-stagefeedback-target-libgcc:
  @if target-libgcc-bootstrap
*************** clean-stageprofile-target-libgcc:
*** 43309,43314 ****
--- 44898,44945 ----
  @endif target-libgcc-bootstrap
  
  
+ .PHONY: all-stagetrain-target-libgcc maybe-all-stagetrain-target-libgcc
+ .PHONY: clean-stagetrain-target-libgcc maybe-clean-stagetrain-target-libgcc
+ maybe-all-stagetrain-target-libgcc:
+ maybe-clean-stagetrain-target-libgcc:
+ @if target-libgcc-bootstrap
+ maybe-all-stagetrain-target-libgcc: all-stagetrain-target-libgcc
+ all-stagetrain: all-stagetrain-target-libgcc
+ TARGET-stagetrain-target-libgcc = $(TARGET-target-libgcc)
+ all-stagetrain-target-libgcc: configure-stagetrain-target-libgcc
+ 	@[ $(current_stage) = stagetrain ] || $(MAKE) stagetrain-start
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGEtrain_TFLAGS)"; \
+ 	$(NORMAL_TARGET_EXPORTS) \
+ 	  \
+ 	cd $(TARGET_SUBDIR)/libgcc && \
+ 	 \
+ 	$(MAKE) $(BASE_FLAGS_TO_PASS) \
+ 		CFLAGS="$(CFLAGS_FOR_TARGET)" \
+ 		CXXFLAGS="$(CXXFLAGS_FOR_TARGET)" \
+ 		LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)" \
+ 		CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \
+ 		CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \
+ 		LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \
+ 		$(EXTRA_TARGET_FLAGS)   \
+ 		TFLAGS="$(STAGEtrain_TFLAGS)"  \
+ 		$(TARGET-stagetrain-target-libgcc)
+ 
+ maybe-clean-stagetrain-target-libgcc: clean-stagetrain-target-libgcc
+ clean-stagetrain: clean-stagetrain-target-libgcc
+ clean-stagetrain-target-libgcc:
+ 	@if [ $(current_stage) = stagetrain ]; then \
+ 	  [ -f $(TARGET_SUBDIR)/libgcc/Makefile ] || exit 0; \
+ 	else \
+ 	  [ -f $(TARGET_SUBDIR)/stagetrain-libgcc/Makefile ] || exit 0; \
+ 	  $(MAKE) stagetrain-start; \
+ 	fi; \
+ 	cd $(TARGET_SUBDIR)/libgcc && \
+ 	$(MAKE) $(EXTRA_TARGET_FLAGS)   clean
+ @endif target-libgcc-bootstrap
+ 
+ 
  .PHONY: all-stagefeedback-target-libgcc maybe-all-stagefeedback-target-libgcc
  .PHONY: clean-stagefeedback-target-libgcc maybe-clean-stagefeedback-target-libgcc
  maybe-all-stagefeedback-target-libgcc:
*************** configure-stageprofile-target-libgomp:
*** 49965,49970 ****
--- 51596,51646 ----
  	  $(STAGEprofile_CONFIGURE_FLAGS)
  @endif target-libgomp-bootstrap
  
+ .PHONY: configure-stagetrain-target-libgomp maybe-configure-stagetrain-target-libgomp
+ maybe-configure-stagetrain-target-libgomp:
+ @if target-libgomp-bootstrap
+ maybe-configure-stagetrain-target-libgomp: configure-stagetrain-target-libgomp
+ configure-stagetrain-target-libgomp:
+ 	@[ $(current_stage) = stagetrain ] || $(MAKE) stagetrain-start
+ 	@$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgomp
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGEtrain_TFLAGS)"; \
+ 	echo "Checking multilib configuration for libgomp..."; \
+ 	$(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libgomp/multilib.tmp 2> /dev/null; \
+ 	if test -r $(TARGET_SUBDIR)/libgomp/multilib.out; then \
+ 	  if cmp -s $(TARGET_SUBDIR)/libgomp/multilib.tmp $(TARGET_SUBDIR)/libgomp/multilib.out; then \
+ 	    rm -f $(TARGET_SUBDIR)/libgomp/multilib.tmp; \
+ 	  else \
+ 	    rm -f $(TARGET_SUBDIR)/libgomp/Makefile; \
+ 	    mv $(TARGET_SUBDIR)/libgomp/multilib.tmp $(TARGET_SUBDIR)/libgomp/multilib.out; \
+ 	  fi; \
+ 	else \
+ 	  mv $(TARGET_SUBDIR)/libgomp/multilib.tmp $(TARGET_SUBDIR)/libgomp/multilib.out; \
+ 	fi; \
+ 	test ! -f $(TARGET_SUBDIR)/libgomp/Makefile || exit 0; \
+ 	$(NORMAL_TARGET_EXPORTS) \
+ 	 \
+ 	CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
+ 	CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \
+ 	LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS;  \
+ 	echo Configuring stage train in $(TARGET_SUBDIR)/libgomp; \
+ 	$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgomp; \
+ 	cd $(TARGET_SUBDIR)/libgomp || exit 1; \
+ 	case $(srcdir) in \
+ 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ 	  *) topdir=`echo $(TARGET_SUBDIR)/libgomp/ | \
+ 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ 	esac; \
+ 	module_srcdir=libgomp; \
+ 	$(SHELL) $$s/$$module_srcdir/configure \
+ 	  --srcdir=$${topdir}/$$module_srcdir \
+ 	  $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \
+ 	  --target=${target_alias} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGEtrain_CONFIGURE_FLAGS)
+ @endif target-libgomp-bootstrap
+ 
  .PHONY: configure-stagefeedback-target-libgomp maybe-configure-stagefeedback-target-libgomp
  maybe-configure-stagefeedback-target-libgomp:
  @if target-libgomp-bootstrap
*************** clean-stageprofile-target-libgomp:
*** 50334,50339 ****
--- 52010,52057 ----
  @endif target-libgomp-bootstrap
  
  
+ .PHONY: all-stagetrain-target-libgomp maybe-all-stagetrain-target-libgomp
+ .PHONY: clean-stagetrain-target-libgomp maybe-clean-stagetrain-target-libgomp
+ maybe-all-stagetrain-target-libgomp:
+ maybe-clean-stagetrain-target-libgomp:
+ @if target-libgomp-bootstrap
+ maybe-all-stagetrain-target-libgomp: all-stagetrain-target-libgomp
+ all-stagetrain: all-stagetrain-target-libgomp
+ TARGET-stagetrain-target-libgomp = $(TARGET-target-libgomp)
+ all-stagetrain-target-libgomp: configure-stagetrain-target-libgomp
+ 	@[ $(current_stage) = stagetrain ] || $(MAKE) stagetrain-start
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGEtrain_TFLAGS)"; \
+ 	$(NORMAL_TARGET_EXPORTS) \
+ 	  \
+ 	cd $(TARGET_SUBDIR)/libgomp && \
+ 	 \
+ 	$(MAKE) $(BASE_FLAGS_TO_PASS) \
+ 		CFLAGS="$(CFLAGS_FOR_TARGET)" \
+ 		CXXFLAGS="$(CXXFLAGS_FOR_TARGET)" \
+ 		LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)" \
+ 		CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \
+ 		CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \
+ 		LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \
+ 		$(EXTRA_TARGET_FLAGS)   \
+ 		TFLAGS="$(STAGEtrain_TFLAGS)"  \
+ 		$(TARGET-stagetrain-target-libgomp)
+ 
+ maybe-clean-stagetrain-target-libgomp: clean-stagetrain-target-libgomp
+ clean-stagetrain: clean-stagetrain-target-libgomp
+ clean-stagetrain-target-libgomp:
+ 	@if [ $(current_stage) = stagetrain ]; then \
+ 	  [ -f $(TARGET_SUBDIR)/libgomp/Makefile ] || exit 0; \
+ 	else \
+ 	  [ -f $(TARGET_SUBDIR)/stagetrain-libgomp/Makefile ] || exit 0; \
+ 	  $(MAKE) stagetrain-start; \
+ 	fi; \
+ 	cd $(TARGET_SUBDIR)/libgomp && \
+ 	$(MAKE) $(EXTRA_TARGET_FLAGS)   clean
+ @endif target-libgomp-bootstrap
+ 
+ 
  .PHONY: all-stagefeedback-target-libgomp maybe-all-stagefeedback-target-libgomp
  .PHONY: clean-stagefeedback-target-libgomp maybe-clean-stagefeedback-target-libgomp
  maybe-all-stagefeedback-target-libgomp:
*************** check-gcc-go:
*** 51854,51860 ****
  	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
  	$(HOST_EXPORTS) \
  	(cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) check-go);
! check-go: check-gcc-go check-target-libgo
  
  .PHONY: check-gcc-brig check-brig
  check-gcc-brig:
--- 53572,53578 ----
  	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
  	$(HOST_EXPORTS) \
  	(cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) check-go);
! check-go: check-gcc-go check-target-libgo check-gotools
  
  .PHONY: check-gcc-brig check-brig
  check-gcc-brig:
*************** distclean-stageprofile::
*** 53647,53652 ****
--- 55365,55689 ----
  @endif gcc-bootstrap
  
  
+ .PHONY: stagetrain-start stagetrain-end
+ 
+ stagetrain-start::
+ 	@: $(MAKE); $(stage); \
+ 	echo stagetrain > stage_current; \
+ 	echo stagetrain > stage_last; \
+ 	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)
+ @if bfd
+ 	@cd $(HOST_SUBDIR); [ -d stagetrain-bfd ] || \
+ 	  mkdir stagetrain-bfd; \
+ 	mv stagetrain-bfd bfd; \
+ 	mv stageprofile-bfd prev-bfd || test -f stageprofile-lean 
+ @endif bfd
+ @if opcodes
+ 	@cd $(HOST_SUBDIR); [ -d stagetrain-opcodes ] || \
+ 	  mkdir stagetrain-opcodes; \
+ 	mv stagetrain-opcodes opcodes; \
+ 	mv stageprofile-opcodes prev-opcodes || test -f stageprofile-lean 
+ @endif opcodes
+ @if binutils
+ 	@cd $(HOST_SUBDIR); [ -d stagetrain-binutils ] || \
+ 	  mkdir stagetrain-binutils; \
+ 	mv stagetrain-binutils binutils; \
+ 	mv stageprofile-binutils prev-binutils || test -f stageprofile-lean 
+ @endif binutils
+ @if fixincludes
+ 	@cd $(HOST_SUBDIR); [ -d stagetrain-fixincludes ] || \
+ 	  mkdir stagetrain-fixincludes; \
+ 	mv stagetrain-fixincludes fixincludes; \
+ 	mv stageprofile-fixincludes prev-fixincludes || test -f stageprofile-lean 
+ @endif fixincludes
+ @if gas
+ 	@cd $(HOST_SUBDIR); [ -d stagetrain-gas ] || \
+ 	  mkdir stagetrain-gas; \
+ 	mv stagetrain-gas gas; \
+ 	mv stageprofile-gas prev-gas || test -f stageprofile-lean 
+ @endif gas
+ @if gcc
+ 	@cd $(HOST_SUBDIR); [ -d stagetrain-gcc ] || \
+ 	  mkdir stagetrain-gcc; \
+ 	mv stagetrain-gcc gcc; \
+ 	mv stageprofile-gcc prev-gcc || test -f stageprofile-lean 
+ @endif gcc
+ @if gmp
+ 	@cd $(HOST_SUBDIR); [ -d stagetrain-gmp ] || \
+ 	  mkdir stagetrain-gmp; \
+ 	mv stagetrain-gmp gmp; \
+ 	mv stageprofile-gmp prev-gmp || test -f stageprofile-lean 
+ @endif gmp
+ @if mpfr
+ 	@cd $(HOST_SUBDIR); [ -d stagetrain-mpfr ] || \
+ 	  mkdir stagetrain-mpfr; \
+ 	mv stagetrain-mpfr mpfr; \
+ 	mv stageprofile-mpfr prev-mpfr || test -f stageprofile-lean 
+ @endif mpfr
+ @if mpc
+ 	@cd $(HOST_SUBDIR); [ -d stagetrain-mpc ] || \
+ 	  mkdir stagetrain-mpc; \
+ 	mv stagetrain-mpc mpc; \
+ 	mv stageprofile-mpc prev-mpc || test -f stageprofile-lean 
+ @endif mpc
+ @if isl
+ 	@cd $(HOST_SUBDIR); [ -d stagetrain-isl ] || \
+ 	  mkdir stagetrain-isl; \
+ 	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; \
+ 	mv stagetrain-gold gold; \
+ 	mv stageprofile-gold prev-gold || test -f stageprofile-lean 
+ @endif gold
+ @if intl
+ 	@cd $(HOST_SUBDIR); [ -d stagetrain-intl ] || \
+ 	  mkdir stagetrain-intl; \
+ 	mv stagetrain-intl intl; \
+ 	mv stageprofile-intl prev-intl || test -f stageprofile-lean 
+ @endif intl
+ @if ld
+ 	@cd $(HOST_SUBDIR); [ -d stagetrain-ld ] || \
+ 	  mkdir stagetrain-ld; \
+ 	mv stagetrain-ld ld; \
+ 	mv stageprofile-ld prev-ld || test -f stageprofile-lean 
+ @endif ld
+ @if libbacktrace
+ 	@cd $(HOST_SUBDIR); [ -d stagetrain-libbacktrace ] || \
+ 	  mkdir stagetrain-libbacktrace; \
+ 	mv stagetrain-libbacktrace libbacktrace; \
+ 	mv stageprofile-libbacktrace prev-libbacktrace || test -f stageprofile-lean 
+ @endif libbacktrace
+ @if libcpp
+ 	@cd $(HOST_SUBDIR); [ -d stagetrain-libcpp ] || \
+ 	  mkdir stagetrain-libcpp; \
+ 	mv stagetrain-libcpp libcpp; \
+ 	mv stageprofile-libcpp prev-libcpp || test -f stageprofile-lean 
+ @endif libcpp
+ @if libdecnumber
+ 	@cd $(HOST_SUBDIR); [ -d stagetrain-libdecnumber ] || \
+ 	  mkdir stagetrain-libdecnumber; \
+ 	mv stagetrain-libdecnumber libdecnumber; \
+ 	mv stageprofile-libdecnumber prev-libdecnumber || test -f stageprofile-lean 
+ @endif libdecnumber
+ @if libiberty
+ 	@cd $(HOST_SUBDIR); [ -d stagetrain-libiberty ] || \
+ 	  mkdir stagetrain-libiberty; \
+ 	mv stagetrain-libiberty libiberty; \
+ 	mv stageprofile-libiberty prev-libiberty || test -f stageprofile-lean 
+ @endif libiberty
+ @if libiberty-linker-plugin
+ 	@cd $(HOST_SUBDIR); [ -d stagetrain-libiberty-linker-plugin ] || \
+ 	  mkdir stagetrain-libiberty-linker-plugin; \
+ 	mv stagetrain-libiberty-linker-plugin libiberty-linker-plugin; \
+ 	mv stageprofile-libiberty-linker-plugin prev-libiberty-linker-plugin || test -f stageprofile-lean 
+ @endif libiberty-linker-plugin
+ @if libiconv
+ 	@cd $(HOST_SUBDIR); [ -d stagetrain-libiconv ] || \
+ 	  mkdir stagetrain-libiconv; \
+ 	mv stagetrain-libiconv libiconv; \
+ 	mv stageprofile-libiconv prev-libiconv || test -f stageprofile-lean 
+ @endif libiconv
+ @if zlib
+ 	@cd $(HOST_SUBDIR); [ -d stagetrain-zlib ] || \
+ 	  mkdir stagetrain-zlib; \
+ 	mv stagetrain-zlib zlib; \
+ 	mv stageprofile-zlib prev-zlib || test -f stageprofile-lean 
+ @endif zlib
+ @if lto-plugin
+ 	@cd $(HOST_SUBDIR); [ -d stagetrain-lto-plugin ] || \
+ 	  mkdir stagetrain-lto-plugin; \
+ 	mv stagetrain-lto-plugin lto-plugin; \
+ 	mv stageprofile-lto-plugin prev-lto-plugin || test -f stageprofile-lean 
+ @endif lto-plugin
+ 	@[ -d stagetrain-$(TARGET_SUBDIR) ] || \
+ 	  mkdir stagetrain-$(TARGET_SUBDIR); \
+ 	mv stagetrain-$(TARGET_SUBDIR) $(TARGET_SUBDIR); \
+ 	mv stageprofile-$(TARGET_SUBDIR) prev-$(TARGET_SUBDIR) || test -f stageprofile-lean 
+ 
+ stagetrain-end:: 
+ @if bfd
+ 	@if test -d $(HOST_SUBDIR)/bfd; then \
+ 	  cd $(HOST_SUBDIR); mv bfd stagetrain-bfd; \
+ 	  mv prev-bfd stageprofile-bfd; : ; \
+ 	fi
+ @endif bfd
+ @if opcodes
+ 	@if test -d $(HOST_SUBDIR)/opcodes; then \
+ 	  cd $(HOST_SUBDIR); mv opcodes stagetrain-opcodes; \
+ 	  mv prev-opcodes stageprofile-opcodes; : ; \
+ 	fi
+ @endif opcodes
+ @if binutils
+ 	@if test -d $(HOST_SUBDIR)/binutils; then \
+ 	  cd $(HOST_SUBDIR); mv binutils stagetrain-binutils; \
+ 	  mv prev-binutils stageprofile-binutils; : ; \
+ 	fi
+ @endif binutils
+ @if fixincludes
+ 	@if test -d $(HOST_SUBDIR)/fixincludes; then \
+ 	  cd $(HOST_SUBDIR); mv fixincludes stagetrain-fixincludes; \
+ 	  mv prev-fixincludes stageprofile-fixincludes; : ; \
+ 	fi
+ @endif fixincludes
+ @if gas
+ 	@if test -d $(HOST_SUBDIR)/gas; then \
+ 	  cd $(HOST_SUBDIR); mv gas stagetrain-gas; \
+ 	  mv prev-gas stageprofile-gas; : ; \
+ 	fi
+ @endif gas
+ @if gcc
+ 	@if test -d $(HOST_SUBDIR)/gcc; then \
+ 	  cd $(HOST_SUBDIR); mv gcc stagetrain-gcc; \
+ 	  mv prev-gcc stageprofile-gcc; : ; \
+ 	fi
+ @endif gcc
+ @if gmp
+ 	@if test -d $(HOST_SUBDIR)/gmp; then \
+ 	  cd $(HOST_SUBDIR); mv gmp stagetrain-gmp; \
+ 	  mv prev-gmp stageprofile-gmp; : ; \
+ 	fi
+ @endif gmp
+ @if mpfr
+ 	@if test -d $(HOST_SUBDIR)/mpfr; then \
+ 	  cd $(HOST_SUBDIR); mv mpfr stagetrain-mpfr; \
+ 	  mv prev-mpfr stageprofile-mpfr; : ; \
+ 	fi
+ @endif mpfr
+ @if mpc
+ 	@if test -d $(HOST_SUBDIR)/mpc; then \
+ 	  cd $(HOST_SUBDIR); mv mpc stagetrain-mpc; \
+ 	  mv prev-mpc stageprofile-mpc; : ; \
+ 	fi
+ @endif mpc
+ @if isl
+ 	@if test -d $(HOST_SUBDIR)/isl; then \
+ 	  cd $(HOST_SUBDIR); mv isl stagetrain-isl; \
+ 	  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; \
+ 	  mv prev-gold stageprofile-gold; : ; \
+ 	fi
+ @endif gold
+ @if intl
+ 	@if test -d $(HOST_SUBDIR)/intl; then \
+ 	  cd $(HOST_SUBDIR); mv intl stagetrain-intl; \
+ 	  mv prev-intl stageprofile-intl; : ; \
+ 	fi
+ @endif intl
+ @if ld
+ 	@if test -d $(HOST_SUBDIR)/ld; then \
+ 	  cd $(HOST_SUBDIR); mv ld stagetrain-ld; \
+ 	  mv prev-ld stageprofile-ld; : ; \
+ 	fi
+ @endif ld
+ @if libbacktrace
+ 	@if test -d $(HOST_SUBDIR)/libbacktrace; then \
+ 	  cd $(HOST_SUBDIR); mv libbacktrace stagetrain-libbacktrace; \
+ 	  mv prev-libbacktrace stageprofile-libbacktrace; : ; \
+ 	fi
+ @endif libbacktrace
+ @if libcpp
+ 	@if test -d $(HOST_SUBDIR)/libcpp; then \
+ 	  cd $(HOST_SUBDIR); mv libcpp stagetrain-libcpp; \
+ 	  mv prev-libcpp stageprofile-libcpp; : ; \
+ 	fi
+ @endif libcpp
+ @if libdecnumber
+ 	@if test -d $(HOST_SUBDIR)/libdecnumber; then \
+ 	  cd $(HOST_SUBDIR); mv libdecnumber stagetrain-libdecnumber; \
+ 	  mv prev-libdecnumber stageprofile-libdecnumber; : ; \
+ 	fi
+ @endif libdecnumber
+ @if libiberty
+ 	@if test -d $(HOST_SUBDIR)/libiberty; then \
+ 	  cd $(HOST_SUBDIR); mv libiberty stagetrain-libiberty; \
+ 	  mv prev-libiberty stageprofile-libiberty; : ; \
+ 	fi
+ @endif libiberty
+ @if libiberty-linker-plugin
+ 	@if test -d $(HOST_SUBDIR)/libiberty-linker-plugin; then \
+ 	  cd $(HOST_SUBDIR); mv libiberty-linker-plugin stagetrain-libiberty-linker-plugin; \
+ 	  mv prev-libiberty-linker-plugin stageprofile-libiberty-linker-plugin; : ; \
+ 	fi
+ @endif libiberty-linker-plugin
+ @if libiconv
+ 	@if test -d $(HOST_SUBDIR)/libiconv; then \
+ 	  cd $(HOST_SUBDIR); mv libiconv stagetrain-libiconv; \
+ 	  mv prev-libiconv stageprofile-libiconv; : ; \
+ 	fi
+ @endif libiconv
+ @if zlib
+ 	@if test -d $(HOST_SUBDIR)/zlib; then \
+ 	  cd $(HOST_SUBDIR); mv zlib stagetrain-zlib; \
+ 	  mv prev-zlib stageprofile-zlib; : ; \
+ 	fi
+ @endif zlib
+ @if lto-plugin
+ 	@if test -d $(HOST_SUBDIR)/lto-plugin; then \
+ 	  cd $(HOST_SUBDIR); mv lto-plugin stagetrain-lto-plugin; \
+ 	  mv prev-lto-plugin stageprofile-lto-plugin; : ; \
+ 	fi
+ @endif lto-plugin
+ 	@if test -d $(TARGET_SUBDIR); then \
+ 	  mv $(TARGET_SUBDIR) stagetrain-$(TARGET_SUBDIR); \
+ 	  mv prev-$(TARGET_SUBDIR) stageprofile-$(TARGET_SUBDIR); : ; \
+ 	fi
+ 	rm -f stage_current
+ 
+ # Bubble a bug fix through all the stages up to stage train.  They are
+ # remade, but not reconfigured.  The next stage (if any) will not be
+ # reconfigured either.
+ .PHONY: stagetrain-bubble
+ stagetrain-bubble:: stageprofile-bubble
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	if test -f stagetrain-lean || test -f stageprofile-lean ; then \
+ 	  echo Skipping rebuild of stagetrain; \
+ 	else \
+ 	  $(MAKE) stagetrain-start; \
+ 	  $(MAKE) $(RECURSE_FLAGS_TO_PASS) all-stagetrain; \
+ 	fi
+ 
+ .PHONY: all-stagetrain clean-stagetrain
+ do-clean: clean-stagetrain
+ 
+ # FIXME: Will not need to be conditional when toplevel bootstrap is the
+ # only possibility, but now it conflicts with no-bootstrap rules
+ @if gcc-bootstrap
+ 
+ 
+ 
+ 
+ # Rules to wipe a stage and all the following ones, also used for cleanstrap
+ distclean-stageprofile:: distclean-stagetrain 
+ .PHONY: distclean-stagetrain
+ distclean-stagetrain::
+ 	@: $(MAKE); $(stage)
+ 	@test "`cat stage_last`" != stagetrain || rm -f stage_last
+ 	rm -rf stagetrain-* 
+ 
+ 
+ @endif gcc-bootstrap
+ 
+ 
  .PHONY: stagefeedback-start stagefeedback-end
  
  stagefeedback-start::
*************** stagefeedback-start::
*** 53658,53932 ****
  	@cd $(HOST_SUBDIR); [ -d stagefeedback-bfd ] || \
  	  mkdir stagefeedback-bfd; \
  	mv stagefeedback-bfd bfd; \
! 	mv stageprofile-bfd prev-bfd || test -f stageprofile-lean 
  @endif bfd
  @if opcodes
  	@cd $(HOST_SUBDIR); [ -d stagefeedback-opcodes ] || \
  	  mkdir stagefeedback-opcodes; \
  	mv stagefeedback-opcodes opcodes; \
! 	mv stageprofile-opcodes prev-opcodes || test -f stageprofile-lean 
  @endif opcodes
  @if binutils
  	@cd $(HOST_SUBDIR); [ -d stagefeedback-binutils ] || \
  	  mkdir stagefeedback-binutils; \
  	mv stagefeedback-binutils binutils; \
! 	mv stageprofile-binutils prev-binutils || test -f stageprofile-lean 
  @endif binutils
  @if fixincludes
  	@cd $(HOST_SUBDIR); [ -d stagefeedback-fixincludes ] || \
  	  mkdir stagefeedback-fixincludes; \
  	mv stagefeedback-fixincludes fixincludes; \
! 	mv stageprofile-fixincludes prev-fixincludes || test -f stageprofile-lean 
  @endif fixincludes
  @if gas
  	@cd $(HOST_SUBDIR); [ -d stagefeedback-gas ] || \
  	  mkdir stagefeedback-gas; \
  	mv stagefeedback-gas gas; \
! 	mv stageprofile-gas prev-gas || test -f stageprofile-lean 
  @endif gas
  @if gcc
  	@cd $(HOST_SUBDIR); [ -d stagefeedback-gcc ] || \
  	  mkdir stagefeedback-gcc; \
  	mv stagefeedback-gcc gcc; \
! 	mv stageprofile-gcc prev-gcc || test -f stageprofile-lean 
  @endif gcc
  @if gmp
  	@cd $(HOST_SUBDIR); [ -d stagefeedback-gmp ] || \
  	  mkdir stagefeedback-gmp; \
  	mv stagefeedback-gmp gmp; \
! 	mv stageprofile-gmp prev-gmp || test -f stageprofile-lean 
  @endif gmp
  @if mpfr
  	@cd $(HOST_SUBDIR); [ -d stagefeedback-mpfr ] || \
  	  mkdir stagefeedback-mpfr; \
  	mv stagefeedback-mpfr mpfr; \
! 	mv stageprofile-mpfr prev-mpfr || test -f stageprofile-lean 
  @endif mpfr
  @if mpc
  	@cd $(HOST_SUBDIR); [ -d stagefeedback-mpc ] || \
  	  mkdir stagefeedback-mpc; \
  	mv stagefeedback-mpc mpc; \
! 	mv stageprofile-mpc prev-mpc || test -f stageprofile-lean 
  @endif mpc
  @if isl
  	@cd $(HOST_SUBDIR); [ -d stagefeedback-isl ] || \
  	  mkdir stagefeedback-isl; \
  	mv stagefeedback-isl isl; \
! 	mv stageprofile-isl prev-isl || test -f stageprofile-lean 
  @endif isl
  @if libelf
  	@cd $(HOST_SUBDIR); [ -d stagefeedback-libelf ] || \
  	  mkdir stagefeedback-libelf; \
  	mv stagefeedback-libelf libelf; \
! 	mv stageprofile-libelf prev-libelf || test -f stageprofile-lean 
  @endif libelf
  @if gold
  	@cd $(HOST_SUBDIR); [ -d stagefeedback-gold ] || \
  	  mkdir stagefeedback-gold; \
  	mv stagefeedback-gold gold; \
! 	mv stageprofile-gold prev-gold || test -f stageprofile-lean 
  @endif gold
  @if intl
  	@cd $(HOST_SUBDIR); [ -d stagefeedback-intl ] || \
  	  mkdir stagefeedback-intl; \
  	mv stagefeedback-intl intl; \
! 	mv stageprofile-intl prev-intl || test -f stageprofile-lean 
  @endif intl
  @if ld
  	@cd $(HOST_SUBDIR); [ -d stagefeedback-ld ] || \
  	  mkdir stagefeedback-ld; \
  	mv stagefeedback-ld ld; \
! 	mv stageprofile-ld prev-ld || test -f stageprofile-lean 
  @endif ld
  @if libbacktrace
  	@cd $(HOST_SUBDIR); [ -d stagefeedback-libbacktrace ] || \
  	  mkdir stagefeedback-libbacktrace; \
  	mv stagefeedback-libbacktrace libbacktrace; \
! 	mv stageprofile-libbacktrace prev-libbacktrace || test -f stageprofile-lean 
  @endif libbacktrace
  @if libcpp
  	@cd $(HOST_SUBDIR); [ -d stagefeedback-libcpp ] || \
  	  mkdir stagefeedback-libcpp; \
  	mv stagefeedback-libcpp libcpp; \
! 	mv stageprofile-libcpp prev-libcpp || test -f stageprofile-lean 
  @endif libcpp
  @if libdecnumber
  	@cd $(HOST_SUBDIR); [ -d stagefeedback-libdecnumber ] || \
  	  mkdir stagefeedback-libdecnumber; \
  	mv stagefeedback-libdecnumber libdecnumber; \
! 	mv stageprofile-libdecnumber prev-libdecnumber || test -f stageprofile-lean 
  @endif libdecnumber
  @if libiberty
  	@cd $(HOST_SUBDIR); [ -d stagefeedback-libiberty ] || \
  	  mkdir stagefeedback-libiberty; \
  	mv stagefeedback-libiberty libiberty; \
! 	mv stageprofile-libiberty prev-libiberty || test -f stageprofile-lean 
  @endif libiberty
  @if libiberty-linker-plugin
  	@cd $(HOST_SUBDIR); [ -d stagefeedback-libiberty-linker-plugin ] || \
  	  mkdir stagefeedback-libiberty-linker-plugin; \
  	mv stagefeedback-libiberty-linker-plugin libiberty-linker-plugin; \
! 	mv stageprofile-libiberty-linker-plugin prev-libiberty-linker-plugin || test -f stageprofile-lean 
  @endif libiberty-linker-plugin
  @if libiconv
  	@cd $(HOST_SUBDIR); [ -d stagefeedback-libiconv ] || \
  	  mkdir stagefeedback-libiconv; \
  	mv stagefeedback-libiconv libiconv; \
! 	mv stageprofile-libiconv prev-libiconv || test -f stageprofile-lean 
  @endif libiconv
  @if zlib
  	@cd $(HOST_SUBDIR); [ -d stagefeedback-zlib ] || \
  	  mkdir stagefeedback-zlib; \
  	mv stagefeedback-zlib zlib; \
! 	mv stageprofile-zlib prev-zlib || test -f stageprofile-lean 
  @endif zlib
  @if lto-plugin
  	@cd $(HOST_SUBDIR); [ -d stagefeedback-lto-plugin ] || \
  	  mkdir stagefeedback-lto-plugin; \
  	mv stagefeedback-lto-plugin lto-plugin; \
! 	mv stageprofile-lto-plugin prev-lto-plugin || test -f stageprofile-lean 
  @endif lto-plugin
  	@[ -d stagefeedback-$(TARGET_SUBDIR) ] || \
  	  mkdir stagefeedback-$(TARGET_SUBDIR); \
  	mv stagefeedback-$(TARGET_SUBDIR) $(TARGET_SUBDIR); \
! 	mv stageprofile-$(TARGET_SUBDIR) prev-$(TARGET_SUBDIR) || test -f stageprofile-lean 
  
  stagefeedback-end:: 
  @if bfd
  	@if test -d $(HOST_SUBDIR)/bfd; then \
  	  cd $(HOST_SUBDIR); mv bfd stagefeedback-bfd; \
! 	  mv prev-bfd stageprofile-bfd; : ; \
  	fi
  @endif bfd
  @if opcodes
  	@if test -d $(HOST_SUBDIR)/opcodes; then \
  	  cd $(HOST_SUBDIR); mv opcodes stagefeedback-opcodes; \
! 	  mv prev-opcodes stageprofile-opcodes; : ; \
  	fi
  @endif opcodes
  @if binutils
  	@if test -d $(HOST_SUBDIR)/binutils; then \
  	  cd $(HOST_SUBDIR); mv binutils stagefeedback-binutils; \
! 	  mv prev-binutils stageprofile-binutils; : ; \
  	fi
  @endif binutils
  @if fixincludes
  	@if test -d $(HOST_SUBDIR)/fixincludes; then \
  	  cd $(HOST_SUBDIR); mv fixincludes stagefeedback-fixincludes; \
! 	  mv prev-fixincludes stageprofile-fixincludes; : ; \
  	fi
  @endif fixincludes
  @if gas
  	@if test -d $(HOST_SUBDIR)/gas; then \
  	  cd $(HOST_SUBDIR); mv gas stagefeedback-gas; \
! 	  mv prev-gas stageprofile-gas; : ; \
  	fi
  @endif gas
  @if gcc
  	@if test -d $(HOST_SUBDIR)/gcc; then \
  	  cd $(HOST_SUBDIR); mv gcc stagefeedback-gcc; \
! 	  mv prev-gcc stageprofile-gcc; : ; \
  	fi
  @endif gcc
  @if gmp
  	@if test -d $(HOST_SUBDIR)/gmp; then \
  	  cd $(HOST_SUBDIR); mv gmp stagefeedback-gmp; \
! 	  mv prev-gmp stageprofile-gmp; : ; \
  	fi
  @endif gmp
  @if mpfr
  	@if test -d $(HOST_SUBDIR)/mpfr; then \
  	  cd $(HOST_SUBDIR); mv mpfr stagefeedback-mpfr; \
! 	  mv prev-mpfr stageprofile-mpfr; : ; \
  	fi
  @endif mpfr
  @if mpc
  	@if test -d $(HOST_SUBDIR)/mpc; then \
  	  cd $(HOST_SUBDIR); mv mpc stagefeedback-mpc; \
! 	  mv prev-mpc stageprofile-mpc; : ; \
  	fi
  @endif mpc
  @if isl
  	@if test -d $(HOST_SUBDIR)/isl; then \
  	  cd $(HOST_SUBDIR); mv isl stagefeedback-isl; \
! 	  mv prev-isl stageprofile-isl; : ; \
  	fi
  @endif isl
  @if libelf
  	@if test -d $(HOST_SUBDIR)/libelf; then \
  	  cd $(HOST_SUBDIR); mv libelf stagefeedback-libelf; \
! 	  mv prev-libelf stageprofile-libelf; : ; \
  	fi
  @endif libelf
  @if gold
  	@if test -d $(HOST_SUBDIR)/gold; then \
  	  cd $(HOST_SUBDIR); mv gold stagefeedback-gold; \
! 	  mv prev-gold stageprofile-gold; : ; \
  	fi
  @endif gold
  @if intl
  	@if test -d $(HOST_SUBDIR)/intl; then \
  	  cd $(HOST_SUBDIR); mv intl stagefeedback-intl; \
! 	  mv prev-intl stageprofile-intl; : ; \
  	fi
  @endif intl
  @if ld
  	@if test -d $(HOST_SUBDIR)/ld; then \
  	  cd $(HOST_SUBDIR); mv ld stagefeedback-ld; \
! 	  mv prev-ld stageprofile-ld; : ; \
  	fi
  @endif ld
  @if libbacktrace
  	@if test -d $(HOST_SUBDIR)/libbacktrace; then \
  	  cd $(HOST_SUBDIR); mv libbacktrace stagefeedback-libbacktrace; \
! 	  mv prev-libbacktrace stageprofile-libbacktrace; : ; \
  	fi
  @endif libbacktrace
  @if libcpp
  	@if test -d $(HOST_SUBDIR)/libcpp; then \
  	  cd $(HOST_SUBDIR); mv libcpp stagefeedback-libcpp; \
! 	  mv prev-libcpp stageprofile-libcpp; : ; \
  	fi
  @endif libcpp
  @if libdecnumber
  	@if test -d $(HOST_SUBDIR)/libdecnumber; then \
  	  cd $(HOST_SUBDIR); mv libdecnumber stagefeedback-libdecnumber; \
! 	  mv prev-libdecnumber stageprofile-libdecnumber; : ; \
  	fi
  @endif libdecnumber
  @if libiberty
  	@if test -d $(HOST_SUBDIR)/libiberty; then \
  	  cd $(HOST_SUBDIR); mv libiberty stagefeedback-libiberty; \
! 	  mv prev-libiberty stageprofile-libiberty; : ; \
  	fi
  @endif libiberty
  @if libiberty-linker-plugin
  	@if test -d $(HOST_SUBDIR)/libiberty-linker-plugin; then \
  	  cd $(HOST_SUBDIR); mv libiberty-linker-plugin stagefeedback-libiberty-linker-plugin; \
! 	  mv prev-libiberty-linker-plugin stageprofile-libiberty-linker-plugin; : ; \
  	fi
  @endif libiberty-linker-plugin
  @if libiconv
  	@if test -d $(HOST_SUBDIR)/libiconv; then \
  	  cd $(HOST_SUBDIR); mv libiconv stagefeedback-libiconv; \
! 	  mv prev-libiconv stageprofile-libiconv; : ; \
  	fi
  @endif libiconv
  @if zlib
  	@if test -d $(HOST_SUBDIR)/zlib; then \
  	  cd $(HOST_SUBDIR); mv zlib stagefeedback-zlib; \
! 	  mv prev-zlib stageprofile-zlib; : ; \
  	fi
  @endif zlib
  @if lto-plugin
  	@if test -d $(HOST_SUBDIR)/lto-plugin; then \
  	  cd $(HOST_SUBDIR); mv lto-plugin stagefeedback-lto-plugin; \
! 	  mv prev-lto-plugin stageprofile-lto-plugin; : ; \
  	fi
  @endif lto-plugin
  	@if test -d $(TARGET_SUBDIR); then \
  	  mv $(TARGET_SUBDIR) stagefeedback-$(TARGET_SUBDIR); \
! 	  mv prev-$(TARGET_SUBDIR) stageprofile-$(TARGET_SUBDIR); : ; \
  	fi
  	rm -f stage_current
  
--- 55695,55969 ----
  	@cd $(HOST_SUBDIR); [ -d stagefeedback-bfd ] || \
  	  mkdir stagefeedback-bfd; \
  	mv stagefeedback-bfd bfd; \
! 	mv stagetrain-bfd prev-bfd || test -f stagetrain-lean 
  @endif bfd
  @if opcodes
  	@cd $(HOST_SUBDIR); [ -d stagefeedback-opcodes ] || \
  	  mkdir stagefeedback-opcodes; \
  	mv stagefeedback-opcodes opcodes; \
! 	mv stagetrain-opcodes prev-opcodes || test -f stagetrain-lean 
  @endif opcodes
  @if binutils
  	@cd $(HOST_SUBDIR); [ -d stagefeedback-binutils ] || \
  	  mkdir stagefeedback-binutils; \
  	mv stagefeedback-binutils binutils; \
! 	mv stagetrain-binutils prev-binutils || test -f stagetrain-lean 
  @endif binutils
  @if fixincludes
  	@cd $(HOST_SUBDIR); [ -d stagefeedback-fixincludes ] || \
  	  mkdir stagefeedback-fixincludes; \
  	mv stagefeedback-fixincludes fixincludes; \
! 	mv stagetrain-fixincludes prev-fixincludes || test -f stagetrain-lean 
  @endif fixincludes
  @if gas
  	@cd $(HOST_SUBDIR); [ -d stagefeedback-gas ] || \
  	  mkdir stagefeedback-gas; \
  	mv stagefeedback-gas gas; \
! 	mv stagetrain-gas prev-gas || test -f stagetrain-lean 
  @endif gas
  @if gcc
  	@cd $(HOST_SUBDIR); [ -d stagefeedback-gcc ] || \
  	  mkdir stagefeedback-gcc; \
  	mv stagefeedback-gcc gcc; \
! 	mv stagetrain-gcc prev-gcc || test -f stagetrain-lean 
  @endif gcc
  @if gmp
  	@cd $(HOST_SUBDIR); [ -d stagefeedback-gmp ] || \
  	  mkdir stagefeedback-gmp; \
  	mv stagefeedback-gmp gmp; \
! 	mv stagetrain-gmp prev-gmp || test -f stagetrain-lean 
  @endif gmp
  @if mpfr
  	@cd $(HOST_SUBDIR); [ -d stagefeedback-mpfr ] || \
  	  mkdir stagefeedback-mpfr; \
  	mv stagefeedback-mpfr mpfr; \
! 	mv stagetrain-mpfr prev-mpfr || test -f stagetrain-lean 
  @endif mpfr
  @if mpc
  	@cd $(HOST_SUBDIR); [ -d stagefeedback-mpc ] || \
  	  mkdir stagefeedback-mpc; \
  	mv stagefeedback-mpc mpc; \
! 	mv stagetrain-mpc prev-mpc || test -f stagetrain-lean 
  @endif mpc
  @if isl
  	@cd $(HOST_SUBDIR); [ -d stagefeedback-isl ] || \
  	  mkdir stagefeedback-isl; \
  	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; \
  	mv stagefeedback-gold gold; \
! 	mv stagetrain-gold prev-gold || test -f stagetrain-lean 
  @endif gold
  @if intl
  	@cd $(HOST_SUBDIR); [ -d stagefeedback-intl ] || \
  	  mkdir stagefeedback-intl; \
  	mv stagefeedback-intl intl; \
! 	mv stagetrain-intl prev-intl || test -f stagetrain-lean 
  @endif intl
  @if ld
  	@cd $(HOST_SUBDIR); [ -d stagefeedback-ld ] || \
  	  mkdir stagefeedback-ld; \
  	mv stagefeedback-ld ld; \
! 	mv stagetrain-ld prev-ld || test -f stagetrain-lean 
  @endif ld
  @if libbacktrace
  	@cd $(HOST_SUBDIR); [ -d stagefeedback-libbacktrace ] || \
  	  mkdir stagefeedback-libbacktrace; \
  	mv stagefeedback-libbacktrace libbacktrace; \
! 	mv stagetrain-libbacktrace prev-libbacktrace || test -f stagetrain-lean 
  @endif libbacktrace
  @if libcpp
  	@cd $(HOST_SUBDIR); [ -d stagefeedback-libcpp ] || \
  	  mkdir stagefeedback-libcpp; \
  	mv stagefeedback-libcpp libcpp; \
! 	mv stagetrain-libcpp prev-libcpp || test -f stagetrain-lean 
  @endif libcpp
  @if libdecnumber
  	@cd $(HOST_SUBDIR); [ -d stagefeedback-libdecnumber ] || \
  	  mkdir stagefeedback-libdecnumber; \
  	mv stagefeedback-libdecnumber libdecnumber; \
! 	mv stagetrain-libdecnumber prev-libdecnumber || test -f stagetrain-lean 
  @endif libdecnumber
  @if libiberty
  	@cd $(HOST_SUBDIR); [ -d stagefeedback-libiberty ] || \
  	  mkdir stagefeedback-libiberty; \
  	mv stagefeedback-libiberty libiberty; \
! 	mv stagetrain-libiberty prev-libiberty || test -f stagetrain-lean 
  @endif libiberty
  @if libiberty-linker-plugin
  	@cd $(HOST_SUBDIR); [ -d stagefeedback-libiberty-linker-plugin ] || \
  	  mkdir stagefeedback-libiberty-linker-plugin; \
  	mv stagefeedback-libiberty-linker-plugin libiberty-linker-plugin; \
! 	mv stagetrain-libiberty-linker-plugin prev-libiberty-linker-plugin || test -f stagetrain-lean 
  @endif libiberty-linker-plugin
  @if libiconv
  	@cd $(HOST_SUBDIR); [ -d stagefeedback-libiconv ] || \
  	  mkdir stagefeedback-libiconv; \
  	mv stagefeedback-libiconv libiconv; \
! 	mv stagetrain-libiconv prev-libiconv || test -f stagetrain-lean 
  @endif libiconv
  @if zlib
  	@cd $(HOST_SUBDIR); [ -d stagefeedback-zlib ] || \
  	  mkdir stagefeedback-zlib; \
  	mv stagefeedback-zlib zlib; \
! 	mv stagetrain-zlib prev-zlib || test -f stagetrain-lean 
  @endif zlib
  @if lto-plugin
  	@cd $(HOST_SUBDIR); [ -d stagefeedback-lto-plugin ] || \
  	  mkdir stagefeedback-lto-plugin; \
  	mv stagefeedback-lto-plugin lto-plugin; \
! 	mv stagetrain-lto-plugin prev-lto-plugin || test -f stagetrain-lean 
  @endif lto-plugin
  	@[ -d stagefeedback-$(TARGET_SUBDIR) ] || \
  	  mkdir stagefeedback-$(TARGET_SUBDIR); \
  	mv stagefeedback-$(TARGET_SUBDIR) $(TARGET_SUBDIR); \
! 	mv stagetrain-$(TARGET_SUBDIR) prev-$(TARGET_SUBDIR) || test -f stagetrain-lean 
  
  stagefeedback-end:: 
  @if bfd
  	@if test -d $(HOST_SUBDIR)/bfd; then \
  	  cd $(HOST_SUBDIR); mv bfd stagefeedback-bfd; \
! 	  mv prev-bfd stagetrain-bfd; : ; \
  	fi
  @endif bfd
  @if opcodes
  	@if test -d $(HOST_SUBDIR)/opcodes; then \
  	  cd $(HOST_SUBDIR); mv opcodes stagefeedback-opcodes; \
! 	  mv prev-opcodes stagetrain-opcodes; : ; \
  	fi
  @endif opcodes
  @if binutils
  	@if test -d $(HOST_SUBDIR)/binutils; then \
  	  cd $(HOST_SUBDIR); mv binutils stagefeedback-binutils; \
! 	  mv prev-binutils stagetrain-binutils; : ; \
  	fi
  @endif binutils
  @if fixincludes
  	@if test -d $(HOST_SUBDIR)/fixincludes; then \
  	  cd $(HOST_SUBDIR); mv fixincludes stagefeedback-fixincludes; \
! 	  mv prev-fixincludes stagetrain-fixincludes; : ; \
  	fi
  @endif fixincludes
  @if gas
  	@if test -d $(HOST_SUBDIR)/gas; then \
  	  cd $(HOST_SUBDIR); mv gas stagefeedback-gas; \
! 	  mv prev-gas stagetrain-gas; : ; \
  	fi
  @endif gas
  @if gcc
  	@if test -d $(HOST_SUBDIR)/gcc; then \
  	  cd $(HOST_SUBDIR); mv gcc stagefeedback-gcc; \
! 	  mv prev-gcc stagetrain-gcc; : ; \
  	fi
  @endif gcc
  @if gmp
  	@if test -d $(HOST_SUBDIR)/gmp; then \
  	  cd $(HOST_SUBDIR); mv gmp stagefeedback-gmp; \
! 	  mv prev-gmp stagetrain-gmp; : ; \
  	fi
  @endif gmp
  @if mpfr
  	@if test -d $(HOST_SUBDIR)/mpfr; then \
  	  cd $(HOST_SUBDIR); mv mpfr stagefeedback-mpfr; \
! 	  mv prev-mpfr stagetrain-mpfr; : ; \
  	fi
  @endif mpfr
  @if mpc
  	@if test -d $(HOST_SUBDIR)/mpc; then \
  	  cd $(HOST_SUBDIR); mv mpc stagefeedback-mpc; \
! 	  mv prev-mpc stagetrain-mpc; : ; \
  	fi
  @endif mpc
  @if isl
  	@if test -d $(HOST_SUBDIR)/isl; then \
  	  cd $(HOST_SUBDIR); mv isl stagefeedback-isl; \
! 	  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; \
! 	  mv prev-gold stagetrain-gold; : ; \
  	fi
  @endif gold
  @if intl
  	@if test -d $(HOST_SUBDIR)/intl; then \
  	  cd $(HOST_SUBDIR); mv intl stagefeedback-intl; \
! 	  mv prev-intl stagetrain-intl; : ; \
  	fi
  @endif intl
  @if ld
  	@if test -d $(HOST_SUBDIR)/ld; then \
  	  cd $(HOST_SUBDIR); mv ld stagefeedback-ld; \
! 	  mv prev-ld stagetrain-ld; : ; \
  	fi
  @endif ld
  @if libbacktrace
  	@if test -d $(HOST_SUBDIR)/libbacktrace; then \
  	  cd $(HOST_SUBDIR); mv libbacktrace stagefeedback-libbacktrace; \
! 	  mv prev-libbacktrace stagetrain-libbacktrace; : ; \
  	fi
  @endif libbacktrace
  @if libcpp
  	@if test -d $(HOST_SUBDIR)/libcpp; then \
  	  cd $(HOST_SUBDIR); mv libcpp stagefeedback-libcpp; \
! 	  mv prev-libcpp stagetrain-libcpp; : ; \
  	fi
  @endif libcpp
  @if libdecnumber
  	@if test -d $(HOST_SUBDIR)/libdecnumber; then \
  	  cd $(HOST_SUBDIR); mv libdecnumber stagefeedback-libdecnumber; \
! 	  mv prev-libdecnumber stagetrain-libdecnumber; : ; \
  	fi
  @endif libdecnumber
  @if libiberty
  	@if test -d $(HOST_SUBDIR)/libiberty; then \
  	  cd $(HOST_SUBDIR); mv libiberty stagefeedback-libiberty; \
! 	  mv prev-libiberty stagetrain-libiberty; : ; \
  	fi
  @endif libiberty
  @if libiberty-linker-plugin
  	@if test -d $(HOST_SUBDIR)/libiberty-linker-plugin; then \
  	  cd $(HOST_SUBDIR); mv libiberty-linker-plugin stagefeedback-libiberty-linker-plugin; \
! 	  mv prev-libiberty-linker-plugin stagetrain-libiberty-linker-plugin; : ; \
  	fi
  @endif libiberty-linker-plugin
  @if libiconv
  	@if test -d $(HOST_SUBDIR)/libiconv; then \
  	  cd $(HOST_SUBDIR); mv libiconv stagefeedback-libiconv; \
! 	  mv prev-libiconv stagetrain-libiconv; : ; \
  	fi
  @endif libiconv
  @if zlib
  	@if test -d $(HOST_SUBDIR)/zlib; then \
  	  cd $(HOST_SUBDIR); mv zlib stagefeedback-zlib; \
! 	  mv prev-zlib stagetrain-zlib; : ; \
  	fi
  @endif zlib
  @if lto-plugin
  	@if test -d $(HOST_SUBDIR)/lto-plugin; then \
  	  cd $(HOST_SUBDIR); mv lto-plugin stagefeedback-lto-plugin; \
! 	  mv prev-lto-plugin stagetrain-lto-plugin; : ; \
  	fi
  @endif lto-plugin
  	@if test -d $(TARGET_SUBDIR); then \
  	  mv $(TARGET_SUBDIR) stagefeedback-$(TARGET_SUBDIR); \
! 	  mv prev-$(TARGET_SUBDIR) stagetrain-$(TARGET_SUBDIR); : ; \
  	fi
  	rm -f stage_current
  
*************** stagefeedback-end::
*** 53934,53943 ****
  # remade, but not reconfigured.  The next stage (if any) will not be
  # reconfigured either.
  .PHONY: stagefeedback-bubble
! stagefeedback-bubble:: stageprofile-bubble
  	@r=`${PWD_COMMAND}`; export r; \
  	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
! 	if test -f stagefeedback-lean || test -f stageprofile-lean ; then \
  	  echo Skipping rebuild of stagefeedback; \
  	else \
  	  $(MAKE) stagefeedback-start; \
--- 55971,55980 ----
  # remade, but not reconfigured.  The next stage (if any) will not be
  # reconfigured either.
  .PHONY: stagefeedback-bubble
! stagefeedback-bubble:: stagetrain-bubble
  	@r=`${PWD_COMMAND}`; export r; \
  	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
! 	if test -f stagefeedback-lean || test -f stagetrain-lean ; then \
  	  echo Skipping rebuild of stagefeedback; \
  	else \
  	  $(MAKE) stagefeedback-start; \
*************** profiledbootstrap-lean:
*** 53978,53984 ****
  
  
  # Rules to wipe a stage and all the following ones, also used for cleanstrap
! distclean-stageprofile:: distclean-stagefeedback 
  .PHONY: distclean-stagefeedback
  distclean-stagefeedback::
  	@: $(MAKE); $(stage)
--- 56015,56021 ----
  
  
  # Rules to wipe a stage and all the following ones, also used for cleanstrap
! distclean-stagetrain:: distclean-stagefeedback 
  .PHONY: distclean-stagefeedback
  distclean-stagefeedback::
  	@: $(MAKE); $(stage)
*************** stageprofile-end::
*** 54657,54664 ****
  stagefeedback-start::
  	@r=`${PWD_COMMAND}`; export r; \
  	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
! 	for i in prev-*; do \
! 	  j=`echo $$i | sed s/^prev-//`; \
  	  cd $$r/$$i && \
  	  { find . -type d | sort | sed 's,.*,$(SHELL) '"$$s"'/mkinstalldirs "../'$$j'/&",' | $(SHELL); } && \
  	  { find . -name '*.*da' | sed 's,.*,$(LN) -f "&" "../'$$j'/&",' | $(SHELL); }; \
--- 56694,56701 ----
  stagefeedback-start::
  	@r=`${PWD_COMMAND}`; export r; \
  	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
! 	for i in stageprofile-*; do \
! 	  j=`echo $$i | sed s/^stageprofile-//`; \
  	  cd $$r/$$i && \
  	  { find . -type d | sort | sed 's,.*,$(SHELL) '"$$s"'/mkinstalldirs "../'$$j'/&",' | $(SHELL); } && \
  	  { find . -name '*.*da' | sed 's,.*,$(LN) -f "&" "../'$$j'/&",' | $(SHELL); }; \
*************** stage_current:
*** 54682,54688 ****
  .PHONY: restrap
  restrap::
  	@: $(MAKE); $(stage)
! 	rm -rf stage1-$(TARGET_SUBDIR) stage2-* stage3-* stage4-* stageprofile-* stagefeedback-* stageautoprofile-* stageautofeedback-*
  restrap:: all
  @endif gcc-bootstrap
  
--- 56719,56725 ----
  .PHONY: restrap
  restrap::
  	@: $(MAKE); $(stage)
! 	rm -rf stage1-$(TARGET_SUBDIR) stage2-* stage3-* stage4-* stageprofile-* stagetrain-* stagefeedback-* stageautoprofile-* stageautofeedback-*
  restrap:: all
  @endif gcc-bootstrap
  
*************** configure-stage2-target-libstdc++-v3: ma
*** 54697,54702 ****
--- 56734,56740 ----
  configure-stage3-target-libstdc++-v3: maybe-all-stage3-gcc
  configure-stage4-target-libstdc++-v3: maybe-all-stage4-gcc
  configure-stageprofile-target-libstdc++-v3: maybe-all-stageprofile-gcc
+ configure-stagetrain-target-libstdc++-v3: maybe-all-stagetrain-gcc
  configure-stagefeedback-target-libstdc++-v3: maybe-all-stagefeedback-gcc
  configure-stageautoprofile-target-libstdc++-v3: maybe-all-stageautoprofile-gcc
  configure-stageautofeedback-target-libstdc++-v3: maybe-all-stageautofeedback-gcc
*************** configure-stage2-target-libsanitizer: ma
*** 54705,54710 ****
--- 56743,56749 ----
  configure-stage3-target-libsanitizer: maybe-all-stage3-gcc
  configure-stage4-target-libsanitizer: maybe-all-stage4-gcc
  configure-stageprofile-target-libsanitizer: maybe-all-stageprofile-gcc
+ configure-stagetrain-target-libsanitizer: maybe-all-stagetrain-gcc
  configure-stagefeedback-target-libsanitizer: maybe-all-stagefeedback-gcc
  configure-stageautoprofile-target-libsanitizer: maybe-all-stageautoprofile-gcc
  configure-stageautofeedback-target-libsanitizer: maybe-all-stageautofeedback-gcc
*************** configure-stage2-target-libmpx: maybe-al
*** 54713,54718 ****
--- 56752,56758 ----
  configure-stage3-target-libmpx: maybe-all-stage3-gcc
  configure-stage4-target-libmpx: maybe-all-stage4-gcc
  configure-stageprofile-target-libmpx: maybe-all-stageprofile-gcc
+ configure-stagetrain-target-libmpx: maybe-all-stagetrain-gcc
  configure-stagefeedback-target-libmpx: maybe-all-stagefeedback-gcc
  configure-stageautoprofile-target-libmpx: maybe-all-stageautoprofile-gcc
  configure-stageautofeedback-target-libmpx: maybe-all-stageautofeedback-gcc
*************** configure-stage2-target-libvtv: maybe-al
*** 54721,54730 ****
  configure-stage3-target-libvtv: maybe-all-stage3-gcc
  configure-stage4-target-libvtv: maybe-all-stage4-gcc
  configure-stageprofile-target-libvtv: maybe-all-stageprofile-gcc
  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-libcilkrts: stage_last
  configure-target-liboffloadmic: stage_last
  configure-target-libssp: stage_last
  configure-target-newlib: stage_last
--- 56761,56770 ----
  configure-stage3-target-libvtv: maybe-all-stage3-gcc
  configure-stage4-target-libvtv: maybe-all-stage4-gcc
  configure-stageprofile-target-libvtv: maybe-all-stageprofile-gcc
+ configure-stagetrain-target-libvtv: maybe-all-stagetrain-gcc
  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-stage2-target-libgcc: maybe-al
*** 54733,54738 ****
--- 56773,56779 ----
  configure-stage3-target-libgcc: maybe-all-stage3-gcc
  configure-stage4-target-libgcc: maybe-all-stage4-gcc
  configure-stageprofile-target-libgcc: maybe-all-stageprofile-gcc
+ configure-stagetrain-target-libgcc: maybe-all-stagetrain-gcc
  configure-stagefeedback-target-libgcc: maybe-all-stagefeedback-gcc
  configure-stageautoprofile-target-libgcc: maybe-all-stageautoprofile-gcc
  configure-stageautofeedback-target-libgcc: maybe-all-stageautofeedback-gcc
*************** configure-stage2-target-libgomp: maybe-a
*** 54754,54759 ****
--- 56795,56801 ----
  configure-stage3-target-libgomp: maybe-all-stage3-gcc
  configure-stage4-target-libgomp: maybe-all-stage4-gcc
  configure-stageprofile-target-libgomp: maybe-all-stageprofile-gcc
+ configure-stagetrain-target-libgomp: maybe-all-stagetrain-gcc
  configure-stagefeedback-target-libgomp: maybe-all-stagefeedback-gcc
  configure-stageautoprofile-target-libgomp: maybe-all-stageautoprofile-gcc
  configure-stageautofeedback-target-libgomp: maybe-all-stageautofeedback-gcc
*************** configure-target-libstdc++-v3: maybe-all
*** 54766,54772 ****
  configure-target-libsanitizer: maybe-all-gcc
  configure-target-libmpx: maybe-all-gcc
  configure-target-libvtv: maybe-all-gcc
- configure-target-libcilkrts: maybe-all-gcc
  configure-target-liboffloadmic: maybe-all-gcc
  configure-target-libssp: maybe-all-gcc
  configure-target-newlib: maybe-all-gcc
--- 56808,56813 ----
*************** configure-stage2-gcc: maybe-configure-st
*** 54822,54827 ****
--- 56863,56869 ----
  configure-stage3-gcc: maybe-configure-stage3-intl
  configure-stage4-gcc: maybe-configure-stage4-intl
  configure-stageprofile-gcc: maybe-configure-stageprofile-intl
+ configure-stagetrain-gcc: maybe-configure-stagetrain-intl
  configure-stagefeedback-gcc: maybe-configure-stagefeedback-intl
  configure-stageautoprofile-gcc: maybe-configure-stageautoprofile-intl
  configure-stageautofeedback-gcc: maybe-configure-stageautofeedback-intl
*************** configure-stage2-gcc: maybe-all-stage2-g
*** 54832,54837 ****
--- 56874,56880 ----
  configure-stage3-gcc: maybe-all-stage3-gmp
  configure-stage4-gcc: maybe-all-stage4-gmp
  configure-stageprofile-gcc: maybe-all-stageprofile-gmp
+ configure-stagetrain-gcc: maybe-all-stagetrain-gmp
  configure-stagefeedback-gcc: maybe-all-stagefeedback-gmp
  configure-stageautoprofile-gcc: maybe-all-stageautoprofile-gmp
  configure-stageautofeedback-gcc: maybe-all-stageautofeedback-gmp
*************** configure-stage2-gcc: maybe-all-stage2-m
*** 54842,54847 ****
--- 56885,56891 ----
  configure-stage3-gcc: maybe-all-stage3-mpfr
  configure-stage4-gcc: maybe-all-stage4-mpfr
  configure-stageprofile-gcc: maybe-all-stageprofile-mpfr
+ configure-stagetrain-gcc: maybe-all-stagetrain-mpfr
  configure-stagefeedback-gcc: maybe-all-stagefeedback-mpfr
  configure-stageautoprofile-gcc: maybe-all-stageautoprofile-mpfr
  configure-stageautofeedback-gcc: maybe-all-stageautofeedback-mpfr
*************** configure-stage2-gcc: maybe-all-stage2-m
*** 54852,54857 ****
--- 56896,56902 ----
  configure-stage3-gcc: maybe-all-stage3-mpc
  configure-stage4-gcc: maybe-all-stage4-mpc
  configure-stageprofile-gcc: maybe-all-stageprofile-mpc
+ configure-stagetrain-gcc: maybe-all-stagetrain-mpc
  configure-stagefeedback-gcc: maybe-all-stagefeedback-mpc
  configure-stageautoprofile-gcc: maybe-all-stageautoprofile-mpc
  configure-stageautofeedback-gcc: maybe-all-stageautofeedback-mpc
*************** configure-stage2-gcc: maybe-all-stage2-i
*** 54862,54867 ****
--- 56907,56913 ----
  configure-stage3-gcc: maybe-all-stage3-isl
  configure-stage4-gcc: maybe-all-stage4-isl
  configure-stageprofile-gcc: maybe-all-stageprofile-isl
+ configure-stagetrain-gcc: maybe-all-stagetrain-isl
  configure-stagefeedback-gcc: maybe-all-stagefeedback-isl
  configure-stageautoprofile-gcc: maybe-all-stageautoprofile-isl
  configure-stageautofeedback-gcc: maybe-all-stageautofeedback-isl
*************** configure-stage2-gcc: maybe-all-stage2-l
*** 54872,54877 ****
--- 56918,56924 ----
  configure-stage3-gcc: maybe-all-stage3-lto-plugin
  configure-stage4-gcc: maybe-all-stage4-lto-plugin
  configure-stageprofile-gcc: maybe-all-stageprofile-lto-plugin
+ configure-stagetrain-gcc: maybe-all-stagetrain-lto-plugin
  configure-stagefeedback-gcc: maybe-all-stagefeedback-lto-plugin
  configure-stageautoprofile-gcc: maybe-all-stageautoprofile-lto-plugin
  configure-stageautofeedback-gcc: maybe-all-stageautofeedback-lto-plugin
*************** configure-stage2-gcc: maybe-all-stage2-b
*** 54882,54887 ****
--- 56929,56935 ----
  configure-stage3-gcc: maybe-all-stage3-binutils
  configure-stage4-gcc: maybe-all-stage4-binutils
  configure-stageprofile-gcc: maybe-all-stageprofile-binutils
+ configure-stagetrain-gcc: maybe-all-stagetrain-binutils
  configure-stagefeedback-gcc: maybe-all-stagefeedback-binutils
  configure-stageautoprofile-gcc: maybe-all-stageautoprofile-binutils
  configure-stageautofeedback-gcc: maybe-all-stageautofeedback-binutils
*************** configure-stage2-gcc: maybe-all-stage2-g
*** 54892,54897 ****
--- 56940,56946 ----
  configure-stage3-gcc: maybe-all-stage3-gas
  configure-stage4-gcc: maybe-all-stage4-gas
  configure-stageprofile-gcc: maybe-all-stageprofile-gas
+ configure-stagetrain-gcc: maybe-all-stagetrain-gas
  configure-stagefeedback-gcc: maybe-all-stagefeedback-gas
  configure-stageautoprofile-gcc: maybe-all-stageautoprofile-gas
  configure-stageautofeedback-gcc: maybe-all-stageautofeedback-gas
*************** configure-stage2-gcc: maybe-all-stage2-l
*** 54902,54907 ****
--- 56951,56957 ----
  configure-stage3-gcc: maybe-all-stage3-ld
  configure-stage4-gcc: maybe-all-stage4-ld
  configure-stageprofile-gcc: maybe-all-stageprofile-ld
+ configure-stagetrain-gcc: maybe-all-stagetrain-ld
  configure-stagefeedback-gcc: maybe-all-stagefeedback-ld
  configure-stageautoprofile-gcc: maybe-all-stageautoprofile-ld
  configure-stageautofeedback-gcc: maybe-all-stageautofeedback-ld
*************** configure-stage2-gcc: maybe-all-stage2-g
*** 54912,54917 ****
--- 56962,56968 ----
  configure-stage3-gcc: maybe-all-stage3-gold
  configure-stage4-gcc: maybe-all-stage4-gold
  configure-stageprofile-gcc: maybe-all-stageprofile-gold
+ configure-stagetrain-gcc: maybe-all-stagetrain-gold
  configure-stagefeedback-gcc: maybe-all-stagefeedback-gold
  configure-stageautoprofile-gcc: maybe-all-stageautoprofile-gold
  configure-stageautofeedback-gcc: maybe-all-stageautofeedback-gold
*************** configure-stage2-gcc: maybe-all-stage2-l
*** 54922,54927 ****
--- 56973,56979 ----
  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-stage2-gcc: maybe-all-stage2-l
*** 54932,54937 ****
--- 56984,56990 ----
  configure-stage3-gcc: maybe-all-stage3-libiconv
  configure-stage4-gcc: maybe-all-stage4-libiconv
  configure-stageprofile-gcc: maybe-all-stageprofile-libiconv
+ configure-stagetrain-gcc: maybe-all-stagetrain-libiconv
  configure-stagefeedback-gcc: maybe-all-stagefeedback-libiconv
  configure-stageautoprofile-gcc: maybe-all-stageautoprofile-libiconv
  configure-stageautofeedback-gcc: maybe-all-stageautofeedback-libiconv
*************** all-stage2-gcc: all-stage2-libiberty
*** 54942,54947 ****
--- 56995,57001 ----
  all-stage3-gcc: all-stage3-libiberty
  all-stage4-gcc: all-stage4-libiberty
  all-stageprofile-gcc: all-stageprofile-libiberty
+ all-stagetrain-gcc: all-stagetrain-libiberty
  all-stagefeedback-gcc: all-stagefeedback-libiberty
  all-stageautoprofile-gcc: all-stageautoprofile-libiberty
  all-stageautofeedback-gcc: all-stageautofeedback-libiberty
*************** all-stage2-gcc: maybe-all-stage2-intl
*** 54952,54957 ****
--- 57006,57012 ----
  all-stage3-gcc: maybe-all-stage3-intl
  all-stage4-gcc: maybe-all-stage4-intl
  all-stageprofile-gcc: maybe-all-stageprofile-intl
+ all-stagetrain-gcc: maybe-all-stagetrain-intl
  all-stagefeedback-gcc: maybe-all-stagefeedback-intl
  all-stageautoprofile-gcc: maybe-all-stageautoprofile-intl
  all-stageautofeedback-gcc: maybe-all-stageautofeedback-intl
*************** all-stage2-gcc: maybe-all-stage2-mpfr
*** 54962,54967 ****
--- 57017,57023 ----
  all-stage3-gcc: maybe-all-stage3-mpfr
  all-stage4-gcc: maybe-all-stage4-mpfr
  all-stageprofile-gcc: maybe-all-stageprofile-mpfr
+ all-stagetrain-gcc: maybe-all-stagetrain-mpfr
  all-stagefeedback-gcc: maybe-all-stagefeedback-mpfr
  all-stageautoprofile-gcc: maybe-all-stageautoprofile-mpfr
  all-stageautofeedback-gcc: maybe-all-stageautofeedback-mpfr
*************** all-stage2-gcc: maybe-all-stage2-mpc
*** 54972,54977 ****
--- 57028,57034 ----
  all-stage3-gcc: maybe-all-stage3-mpc
  all-stage4-gcc: maybe-all-stage4-mpc
  all-stageprofile-gcc: maybe-all-stageprofile-mpc
+ all-stagetrain-gcc: maybe-all-stagetrain-mpc
  all-stagefeedback-gcc: maybe-all-stagefeedback-mpc
  all-stageautoprofile-gcc: maybe-all-stageautoprofile-mpc
  all-stageautofeedback-gcc: maybe-all-stageautofeedback-mpc
*************** all-stage2-gcc: maybe-all-stage2-isl
*** 54982,54987 ****
--- 57039,57045 ----
  all-stage3-gcc: maybe-all-stage3-isl
  all-stage4-gcc: maybe-all-stage4-isl
  all-stageprofile-gcc: maybe-all-stageprofile-isl
+ all-stagetrain-gcc: maybe-all-stagetrain-isl
  all-stagefeedback-gcc: maybe-all-stagefeedback-isl
  all-stageautoprofile-gcc: maybe-all-stageautoprofile-isl
  all-stageautofeedback-gcc: maybe-all-stageautofeedback-isl
*************** all-stage2-gcc: maybe-all-build-texinfo
*** 54992,54997 ****
--- 57050,57056 ----
  all-stage3-gcc: maybe-all-build-texinfo
  all-stage4-gcc: maybe-all-build-texinfo
  all-stageprofile-gcc: maybe-all-build-texinfo
+ all-stagetrain-gcc: maybe-all-build-texinfo
  all-stagefeedback-gcc: maybe-all-build-texinfo
  all-stageautoprofile-gcc: maybe-all-build-texinfo
  all-stageautofeedback-gcc: maybe-all-build-texinfo
*************** all-stage2-gcc: maybe-all-build-bison
*** 55002,55007 ****
--- 57061,57067 ----
  all-stage3-gcc: maybe-all-build-bison
  all-stage4-gcc: maybe-all-build-bison
  all-stageprofile-gcc: maybe-all-build-bison
+ all-stagetrain-gcc: maybe-all-build-bison
  all-stagefeedback-gcc: maybe-all-build-bison
  all-stageautoprofile-gcc: maybe-all-build-bison
  all-stageautofeedback-gcc: maybe-all-build-bison
*************** all-stage2-gcc: maybe-all-build-flex
*** 55012,55017 ****
--- 57072,57078 ----
  all-stage3-gcc: maybe-all-build-flex
  all-stage4-gcc: maybe-all-build-flex
  all-stageprofile-gcc: maybe-all-build-flex
+ all-stagetrain-gcc: maybe-all-build-flex
  all-stagefeedback-gcc: maybe-all-build-flex
  all-stageautoprofile-gcc: maybe-all-build-flex
  all-stageautofeedback-gcc: maybe-all-build-flex
*************** all-stage2-gcc: maybe-all-build-libibert
*** 55022,55027 ****
--- 57083,57089 ----
  all-stage3-gcc: maybe-all-build-libiberty
  all-stage4-gcc: maybe-all-build-libiberty
  all-stageprofile-gcc: maybe-all-build-libiberty
+ all-stagetrain-gcc: maybe-all-build-libiberty
  all-stagefeedback-gcc: maybe-all-build-libiberty
  all-stageautoprofile-gcc: maybe-all-build-libiberty
  all-stageautofeedback-gcc: maybe-all-build-libiberty
*************** all-stage2-gcc: maybe-all-build-fixinclu
*** 55032,55037 ****
--- 57094,57100 ----
  all-stage3-gcc: maybe-all-build-fixincludes
  all-stage4-gcc: maybe-all-build-fixincludes
  all-stageprofile-gcc: maybe-all-build-fixincludes
+ all-stagetrain-gcc: maybe-all-build-fixincludes
  all-stagefeedback-gcc: maybe-all-build-fixincludes
  all-stageautoprofile-gcc: maybe-all-build-fixincludes
  all-stageautofeedback-gcc: maybe-all-build-fixincludes
*************** all-stage2-gcc: maybe-all-build-libcpp
*** 55042,55047 ****
--- 57105,57111 ----
  all-stage3-gcc: maybe-all-build-libcpp
  all-stage4-gcc: maybe-all-build-libcpp
  all-stageprofile-gcc: maybe-all-build-libcpp
+ all-stagetrain-gcc: maybe-all-build-libcpp
  all-stagefeedback-gcc: maybe-all-build-libcpp
  all-stageautoprofile-gcc: maybe-all-build-libcpp
  all-stageautofeedback-gcc: maybe-all-build-libcpp
*************** all-stage2-gcc: maybe-all-stage2-zlib
*** 55052,55057 ****
--- 57116,57122 ----
  all-stage3-gcc: maybe-all-stage3-zlib
  all-stage4-gcc: maybe-all-stage4-zlib
  all-stageprofile-gcc: maybe-all-stageprofile-zlib
+ all-stagetrain-gcc: maybe-all-stagetrain-zlib
  all-stagefeedback-gcc: maybe-all-stagefeedback-zlib
  all-stageautoprofile-gcc: maybe-all-stageautoprofile-zlib
  all-stageautofeedback-gcc: maybe-all-stageautofeedback-zlib
*************** all-stage2-gcc: all-stage2-libbacktrace
*** 55062,55067 ****
--- 57127,57133 ----
  all-stage3-gcc: all-stage3-libbacktrace
  all-stage4-gcc: all-stage4-libbacktrace
  all-stageprofile-gcc: all-stageprofile-libbacktrace
+ all-stagetrain-gcc: all-stagetrain-libbacktrace
  all-stagefeedback-gcc: all-stagefeedback-libbacktrace
  all-stageautoprofile-gcc: all-stageautoprofile-libbacktrace
  all-stageautofeedback-gcc: all-stageautofeedback-libbacktrace
*************** all-stage2-gcc: all-stage2-libcpp
*** 55072,55077 ****
--- 57138,57144 ----
  all-stage3-gcc: all-stage3-libcpp
  all-stage4-gcc: all-stage4-libcpp
  all-stageprofile-gcc: all-stageprofile-libcpp
+ all-stagetrain-gcc: all-stagetrain-libcpp
  all-stagefeedback-gcc: all-stagefeedback-libcpp
  all-stageautoprofile-gcc: all-stageautoprofile-libcpp
  all-stageautofeedback-gcc: all-stageautofeedback-libcpp
*************** all-stage2-gcc: all-stage2-libdecnumber
*** 55082,55087 ****
--- 57149,57155 ----
  all-stage3-gcc: all-stage3-libdecnumber
  all-stage4-gcc: all-stage4-libdecnumber
  all-stageprofile-gcc: all-stageprofile-libdecnumber
+ all-stagetrain-gcc: all-stagetrain-libdecnumber
  all-stagefeedback-gcc: all-stagefeedback-libdecnumber
  all-stageautoprofile-gcc: all-stageautoprofile-libdecnumber
  all-stageautofeedback-gcc: all-stageautofeedback-libdecnumber
*************** all-stage2-gcc: maybe-all-stage2-libiber
*** 55092,55097 ****
--- 57160,57166 ----
  all-stage3-gcc: maybe-all-stage3-libiberty
  all-stage4-gcc: maybe-all-stage4-libiberty
  all-stageprofile-gcc: maybe-all-stageprofile-libiberty
+ all-stagetrain-gcc: maybe-all-stagetrain-libiberty
  all-stagefeedback-gcc: maybe-all-stagefeedback-libiberty
  all-stageautoprofile-gcc: maybe-all-stageautoprofile-libiberty
  all-stageautofeedback-gcc: maybe-all-stageautofeedback-libiberty
*************** all-stage2-gcc: maybe-all-stage2-fixincl
*** 55102,55107 ****
--- 57171,57177 ----
  all-stage3-gcc: maybe-all-stage3-fixincludes
  all-stage4-gcc: maybe-all-stage4-fixincludes
  all-stageprofile-gcc: maybe-all-stageprofile-fixincludes
+ all-stagetrain-gcc: maybe-all-stagetrain-fixincludes
  all-stagefeedback-gcc: maybe-all-stagefeedback-fixincludes
  all-stageautoprofile-gcc: maybe-all-stageautoprofile-fixincludes
  all-stageautofeedback-gcc: maybe-all-stageautofeedback-fixincludes
*************** all-stage2-gcc: maybe-all-stage2-lto-plu
*** 55112,55117 ****
--- 57182,57188 ----
  all-stage3-gcc: maybe-all-stage3-lto-plugin
  all-stage4-gcc: maybe-all-stage4-lto-plugin
  all-stageprofile-gcc: maybe-all-stageprofile-lto-plugin
+ all-stagetrain-gcc: maybe-all-stagetrain-lto-plugin
  all-stagefeedback-gcc: maybe-all-stagefeedback-lto-plugin
  all-stageautoprofile-gcc: maybe-all-stageautoprofile-lto-plugin
  all-stageautofeedback-gcc: maybe-all-stageautofeedback-lto-plugin
*************** all-stage2-gcc: maybe-all-stage2-libicon
*** 55122,55127 ****
--- 57193,57199 ----
  all-stage3-gcc: maybe-all-stage3-libiconv
  all-stage4-gcc: maybe-all-stage4-libiconv
  all-stageprofile-gcc: maybe-all-stageprofile-libiconv
+ all-stagetrain-gcc: maybe-all-stagetrain-libiconv
  all-stagefeedback-gcc: maybe-all-stagefeedback-libiconv
  all-stageautoprofile-gcc: maybe-all-stageautoprofile-libiconv
  all-stageautofeedback-gcc: maybe-all-stageautofeedback-libiconv
*************** info-stage2-gcc: maybe-all-build-libiber
*** 55132,55137 ****
--- 57204,57210 ----
  info-stage3-gcc: maybe-all-build-libiberty
  info-stage4-gcc: maybe-all-build-libiberty
  info-stageprofile-gcc: maybe-all-build-libiberty
+ info-stagetrain-gcc: maybe-all-build-libiberty
  info-stagefeedback-gcc: maybe-all-build-libiberty
  info-stageautoprofile-gcc: maybe-all-build-libiberty
  info-stageautofeedback-gcc: maybe-all-build-libiberty
*************** dvi-stage2-gcc: maybe-all-build-libibert
*** 55142,55147 ****
--- 57215,57221 ----
  dvi-stage3-gcc: maybe-all-build-libiberty
  dvi-stage4-gcc: maybe-all-build-libiberty
  dvi-stageprofile-gcc: maybe-all-build-libiberty
+ dvi-stagetrain-gcc: maybe-all-build-libiberty
  dvi-stagefeedback-gcc: maybe-all-build-libiberty
  dvi-stageautoprofile-gcc: maybe-all-build-libiberty
  dvi-stageautofeedback-gcc: maybe-all-build-libiberty
*************** pdf-stage2-gcc: maybe-all-build-libibert
*** 55152,55157 ****
--- 57226,57232 ----
  pdf-stage3-gcc: maybe-all-build-libiberty
  pdf-stage4-gcc: maybe-all-build-libiberty
  pdf-stageprofile-gcc: maybe-all-build-libiberty
+ pdf-stagetrain-gcc: maybe-all-build-libiberty
  pdf-stagefeedback-gcc: maybe-all-build-libiberty
  pdf-stageautoprofile-gcc: maybe-all-build-libiberty
  pdf-stageautofeedback-gcc: maybe-all-build-libiberty
*************** html-stage2-gcc: maybe-all-build-libiber
*** 55162,55167 ****
--- 57237,57243 ----
  html-stage3-gcc: maybe-all-build-libiberty
  html-stage4-gcc: maybe-all-build-libiberty
  html-stageprofile-gcc: maybe-all-build-libiberty
+ html-stagetrain-gcc: maybe-all-build-libiberty
  html-stagefeedback-gcc: maybe-all-build-libiberty
  html-stageautoprofile-gcc: maybe-all-build-libiberty
  html-stageautofeedback-gcc: maybe-all-build-libiberty
*************** configure-stage2-libcpp: configure-stage
*** 55176,55181 ****
--- 57252,57258 ----
  configure-stage3-libcpp: configure-stage3-libiberty
  configure-stage4-libcpp: configure-stage4-libiberty
  configure-stageprofile-libcpp: configure-stageprofile-libiberty
+ configure-stagetrain-libcpp: configure-stagetrain-libiberty
  configure-stagefeedback-libcpp: configure-stagefeedback-libiberty
  configure-stageautoprofile-libcpp: configure-stageautoprofile-libiberty
  configure-stageautofeedback-libcpp: configure-stageautofeedback-libiberty
*************** configure-stage2-libcpp: maybe-configure
*** 55186,55191 ****
--- 57263,57269 ----
  configure-stage3-libcpp: maybe-configure-stage3-intl
  configure-stage4-libcpp: maybe-configure-stage4-intl
  configure-stageprofile-libcpp: maybe-configure-stageprofile-intl
+ configure-stagetrain-libcpp: maybe-configure-stagetrain-intl
  configure-stagefeedback-libcpp: maybe-configure-stagefeedback-intl
  configure-stageautoprofile-libcpp: maybe-configure-stageautoprofile-intl
  configure-stageautofeedback-libcpp: maybe-configure-stageautofeedback-intl
*************** configure-stage2-libcpp: maybe-all-stage
*** 55196,55201 ****
--- 57274,57280 ----
  configure-stage3-libcpp: maybe-all-stage3-libiconv
  configure-stage4-libcpp: maybe-all-stage4-libiconv
  configure-stageprofile-libcpp: maybe-all-stageprofile-libiconv
+ configure-stagetrain-libcpp: maybe-all-stagetrain-libiconv
  configure-stagefeedback-libcpp: maybe-all-stagefeedback-libiconv
  configure-stageautoprofile-libcpp: maybe-all-stageautoprofile-libiconv
  configure-stageautofeedback-libcpp: maybe-all-stageautofeedback-libiconv
*************** all-stage2-libcpp: all-stage2-libiberty
*** 55206,55211 ****
--- 57285,57291 ----
  all-stage3-libcpp: all-stage3-libiberty
  all-stage4-libcpp: all-stage4-libiberty
  all-stageprofile-libcpp: all-stageprofile-libiberty
+ all-stagetrain-libcpp: all-stagetrain-libiberty
  all-stagefeedback-libcpp: all-stagefeedback-libiberty
  all-stageautoprofile-libcpp: all-stageautoprofile-libiberty
  all-stageautofeedback-libcpp: all-stageautofeedback-libiberty
*************** all-stage2-libcpp: maybe-all-stage2-intl
*** 55216,55221 ****
--- 57296,57302 ----
  all-stage3-libcpp: maybe-all-stage3-intl
  all-stage4-libcpp: maybe-all-stage4-intl
  all-stageprofile-libcpp: maybe-all-stageprofile-intl
+ all-stagetrain-libcpp: maybe-all-stagetrain-intl
  all-stagefeedback-libcpp: maybe-all-stagefeedback-intl
  all-stageautoprofile-libcpp: maybe-all-stageautoprofile-intl
  all-stageautofeedback-libcpp: maybe-all-stageautofeedback-intl
*************** all-stage2-libcpp: maybe-all-stage2-libi
*** 55226,55231 ****
--- 57307,57313 ----
  all-stage3-libcpp: maybe-all-stage3-libiconv
  all-stage4-libcpp: maybe-all-stage4-libiconv
  all-stageprofile-libcpp: maybe-all-stageprofile-libiconv
+ all-stagetrain-libcpp: maybe-all-stagetrain-libiconv
  all-stagefeedback-libcpp: maybe-all-stagefeedback-libiconv
  all-stageautoprofile-libcpp: maybe-all-stageautoprofile-libiconv
  all-stageautofeedback-libcpp: maybe-all-stageautofeedback-libiconv
*************** all-stage2-fixincludes: maybe-all-stage2
*** 55236,55241 ****
--- 57318,57324 ----
  all-stage3-fixincludes: maybe-all-stage3-libiberty
  all-stage4-fixincludes: maybe-all-stage4-libiberty
  all-stageprofile-fixincludes: maybe-all-stageprofile-libiberty
+ all-stagetrain-fixincludes: maybe-all-stagetrain-libiberty
  all-stagefeedback-fixincludes: maybe-all-stagefeedback-libiberty
  all-stageautoprofile-fixincludes: maybe-all-stageautoprofile-libiberty
  all-stageautofeedback-fixincludes: maybe-all-stageautofeedback-libiberty
*************** all-stage2-lto-plugin: maybe-all-stage2-
*** 55248,55253 ****
--- 57331,57337 ----
  all-stage3-lto-plugin: maybe-all-stage3-libiberty
  all-stage4-lto-plugin: maybe-all-stage4-libiberty
  all-stageprofile-lto-plugin: maybe-all-stageprofile-libiberty
+ all-stagetrain-lto-plugin: maybe-all-stagetrain-libiberty
  all-stagefeedback-lto-plugin: maybe-all-stagefeedback-libiberty
  all-stageautoprofile-lto-plugin: maybe-all-stageautoprofile-libiberty
  all-stageautofeedback-lto-plugin: maybe-all-stageautofeedback-libiberty
*************** all-stage2-lto-plugin: maybe-all-stage2-
*** 55258,55263 ****
--- 57342,57348 ----
  all-stage3-lto-plugin: maybe-all-stage3-libiberty-linker-plugin
  all-stage4-lto-plugin: maybe-all-stage4-libiberty-linker-plugin
  all-stageprofile-lto-plugin: maybe-all-stageprofile-libiberty-linker-plugin
+ all-stagetrain-lto-plugin: maybe-all-stagetrain-libiberty-linker-plugin
  all-stagefeedback-lto-plugin: maybe-all-stagefeedback-libiberty-linker-plugin
  all-stageautoprofile-lto-plugin: maybe-all-stageautoprofile-libiberty-linker-plugin
  all-stageautofeedback-lto-plugin: maybe-all-stageautofeedback-libiberty-linker-plugin
*************** configure-stage2-intl: maybe-all-stage2-
*** 55272,55277 ****
--- 57357,57363 ----
  configure-stage3-intl: maybe-all-stage3-libiconv
  configure-stage4-intl: maybe-all-stage4-libiconv
  configure-stageprofile-intl: maybe-all-stageprofile-libiconv
+ configure-stagetrain-intl: maybe-all-stagetrain-libiconv
  configure-stagefeedback-intl: maybe-all-stagefeedback-libiconv
  configure-stageautoprofile-intl: maybe-all-stageautoprofile-libiconv
  configure-stageautofeedback-intl: maybe-all-stageautofeedback-libiconv
*************** configure-stage2-mpfr: maybe-all-stage2-
*** 55282,55287 ****
--- 57368,57374 ----
  configure-stage3-mpfr: maybe-all-stage3-gmp
  configure-stage4-mpfr: maybe-all-stage4-gmp
  configure-stageprofile-mpfr: maybe-all-stageprofile-gmp
+ configure-stagetrain-mpfr: maybe-all-stagetrain-gmp
  configure-stagefeedback-mpfr: maybe-all-stagefeedback-gmp
  configure-stageautoprofile-mpfr: maybe-all-stageautoprofile-gmp
  configure-stageautofeedback-mpfr: maybe-all-stageautofeedback-gmp
*************** configure-stage2-mpc: maybe-all-stage2-m
*** 55292,55297 ****
--- 57379,57385 ----
  configure-stage3-mpc: maybe-all-stage3-mpfr
  configure-stage4-mpc: maybe-all-stage4-mpfr
  configure-stageprofile-mpc: maybe-all-stageprofile-mpfr
+ configure-stagetrain-mpc: maybe-all-stagetrain-mpfr
  configure-stagefeedback-mpc: maybe-all-stagefeedback-mpfr
  configure-stageautoprofile-mpc: maybe-all-stageautoprofile-mpfr
  configure-stageautofeedback-mpc: maybe-all-stageautofeedback-mpfr
*************** configure-stage2-isl: maybe-all-stage2-g
*** 55302,55307 ****
--- 57390,57396 ----
  configure-stage3-isl: maybe-all-stage3-gmp
  configure-stage4-isl: maybe-all-stage4-gmp
  configure-stageprofile-isl: maybe-all-stageprofile-gmp
+ configure-stagetrain-isl: maybe-all-stagetrain-gmp
  configure-stagefeedback-isl: maybe-all-stagefeedback-gmp
  configure-stageautoprofile-isl: maybe-all-stageautoprofile-gmp
  configure-stageautofeedback-isl: maybe-all-stageautofeedback-gmp
*************** all-stage2-intl: maybe-all-stage2-libico
*** 55312,55317 ****
--- 57401,57407 ----
  all-stage3-intl: maybe-all-stage3-libiconv
  all-stage4-intl: maybe-all-stage4-libiconv
  all-stageprofile-intl: maybe-all-stageprofile-libiconv
+ all-stagetrain-intl: maybe-all-stagetrain-libiconv
  all-stagefeedback-intl: maybe-all-stagefeedback-libiconv
  all-stageautoprofile-intl: maybe-all-stageautoprofile-libiconv
  all-stageautofeedback-intl: maybe-all-stageautofeedback-libiconv
*************** configure-stage2-bfd: configure-stage2-l
*** 55339,55344 ****
--- 57429,57435 ----
  configure-stage3-bfd: configure-stage3-libiberty
  configure-stage4-bfd: configure-stage4-libiberty
  configure-stageprofile-bfd: configure-stageprofile-libiberty
+ configure-stagetrain-bfd: configure-stagetrain-libiberty
  configure-stagefeedback-bfd: configure-stagefeedback-libiberty
  configure-stageautoprofile-bfd: configure-stageautoprofile-libiberty
  configure-stageautofeedback-bfd: configure-stageautofeedback-libiberty
*************** configure-stage2-bfd: maybe-configure-st
*** 55349,55354 ****
--- 57440,57446 ----
  configure-stage3-bfd: maybe-configure-stage3-intl
  configure-stage4-bfd: maybe-configure-stage4-intl
  configure-stageprofile-bfd: maybe-configure-stageprofile-intl
+ configure-stagetrain-bfd: maybe-configure-stagetrain-intl
  configure-stagefeedback-bfd: maybe-configure-stagefeedback-intl
  configure-stageautoprofile-bfd: maybe-configure-stageautoprofile-intl
  configure-stageautofeedback-bfd: maybe-configure-stageautofeedback-intl
*************** all-stage2-bfd: maybe-all-stage2-libiber
*** 55359,55364 ****
--- 57451,57457 ----
  all-stage3-bfd: maybe-all-stage3-libiberty
  all-stage4-bfd: maybe-all-stage4-libiberty
  all-stageprofile-bfd: maybe-all-stageprofile-libiberty
+ all-stagetrain-bfd: maybe-all-stagetrain-libiberty
  all-stagefeedback-bfd: maybe-all-stagefeedback-libiberty
  all-stageautoprofile-bfd: maybe-all-stageautoprofile-libiberty
  all-stageautofeedback-bfd: maybe-all-stageautofeedback-libiberty
*************** all-stage2-bfd: maybe-all-stage2-intl
*** 55369,55374 ****
--- 57462,57468 ----
  all-stage3-bfd: maybe-all-stage3-intl
  all-stage4-bfd: maybe-all-stage4-intl
  all-stageprofile-bfd: maybe-all-stageprofile-intl
+ all-stagetrain-bfd: maybe-all-stagetrain-intl
  all-stagefeedback-bfd: maybe-all-stagefeedback-intl
  all-stageautoprofile-bfd: maybe-all-stageautoprofile-intl
  all-stageautofeedback-bfd: maybe-all-stageautofeedback-intl
*************** all-stage2-bfd: maybe-all-stage2-zlib
*** 55379,55384 ****
--- 57473,57479 ----
  all-stage3-bfd: maybe-all-stage3-zlib
  all-stage4-bfd: maybe-all-stage4-zlib
  all-stageprofile-bfd: maybe-all-stageprofile-zlib
+ all-stagetrain-bfd: maybe-all-stagetrain-zlib
  all-stagefeedback-bfd: maybe-all-stagefeedback-zlib
  all-stageautoprofile-bfd: maybe-all-stageautoprofile-zlib
  all-stageautofeedback-bfd: maybe-all-stageautofeedback-zlib
*************** configure-stage2-opcodes: configure-stag
*** 55389,55394 ****
--- 57484,57490 ----
  configure-stage3-opcodes: configure-stage3-libiberty
  configure-stage4-opcodes: configure-stage4-libiberty
  configure-stageprofile-opcodes: configure-stageprofile-libiberty
+ configure-stagetrain-opcodes: configure-stagetrain-libiberty
  configure-stagefeedback-opcodes: configure-stagefeedback-libiberty
  configure-stageautoprofile-opcodes: configure-stageautoprofile-libiberty
  configure-stageautofeedback-opcodes: configure-stageautofeedback-libiberty
*************** all-stage2-opcodes: maybe-all-stage2-lib
*** 55399,55404 ****
--- 57495,57501 ----
  all-stage3-opcodes: maybe-all-stage3-libiberty
  all-stage4-opcodes: maybe-all-stage4-libiberty
  all-stageprofile-opcodes: maybe-all-stageprofile-libiberty
+ all-stagetrain-opcodes: maybe-all-stagetrain-libiberty
  all-stagefeedback-opcodes: maybe-all-stagefeedback-libiberty
  all-stageautoprofile-opcodes: maybe-all-stageautoprofile-libiberty
  all-stageautofeedback-opcodes: maybe-all-stageautofeedback-libiberty
*************** configure-stage2-binutils: maybe-configu
*** 55409,55414 ****
--- 57506,57512 ----
  configure-stage3-binutils: maybe-configure-stage3-intl
  configure-stage4-binutils: maybe-configure-stage4-intl
  configure-stageprofile-binutils: maybe-configure-stageprofile-intl
+ configure-stagetrain-binutils: maybe-configure-stagetrain-intl
  configure-stagefeedback-binutils: maybe-configure-stagefeedback-intl
  configure-stageautoprofile-binutils: maybe-configure-stageautoprofile-intl
  configure-stageautofeedback-binutils: maybe-configure-stageautofeedback-intl
*************** all-stage2-binutils: maybe-all-stage2-li
*** 55419,55424 ****
--- 57517,57523 ----
  all-stage3-binutils: maybe-all-stage3-libiberty
  all-stage4-binutils: maybe-all-stage4-libiberty
  all-stageprofile-binutils: maybe-all-stageprofile-libiberty
+ all-stagetrain-binutils: maybe-all-stagetrain-libiberty
  all-stagefeedback-binutils: maybe-all-stagefeedback-libiberty
  all-stageautoprofile-binutils: maybe-all-stageautoprofile-libiberty
  all-stageautofeedback-binutils: maybe-all-stageautofeedback-libiberty
*************** all-stage2-binutils: maybe-all-stage2-op
*** 55429,55434 ****
--- 57528,57534 ----
  all-stage3-binutils: maybe-all-stage3-opcodes
  all-stage4-binutils: maybe-all-stage4-opcodes
  all-stageprofile-binutils: maybe-all-stageprofile-opcodes
+ all-stagetrain-binutils: maybe-all-stagetrain-opcodes
  all-stagefeedback-binutils: maybe-all-stagefeedback-opcodes
  all-stageautoprofile-binutils: maybe-all-stageautoprofile-opcodes
  all-stageautofeedback-binutils: maybe-all-stageautofeedback-opcodes
*************** all-stage2-binutils: maybe-all-stage2-bf
*** 55439,55444 ****
--- 57539,57545 ----
  all-stage3-binutils: maybe-all-stage3-bfd
  all-stage4-binutils: maybe-all-stage4-bfd
  all-stageprofile-binutils: maybe-all-stageprofile-bfd
+ all-stagetrain-binutils: maybe-all-stagetrain-bfd
  all-stagefeedback-binutils: maybe-all-stagefeedback-bfd
  all-stageautoprofile-binutils: maybe-all-stageautoprofile-bfd
  all-stageautofeedback-binutils: maybe-all-stageautofeedback-bfd
*************** all-stage2-binutils: maybe-all-build-fle
*** 55449,55454 ****
--- 57550,57556 ----
  all-stage3-binutils: maybe-all-build-flex
  all-stage4-binutils: maybe-all-build-flex
  all-stageprofile-binutils: maybe-all-build-flex
+ all-stagetrain-binutils: maybe-all-build-flex
  all-stagefeedback-binutils: maybe-all-build-flex
  all-stageautoprofile-binutils: maybe-all-build-flex
  all-stageautofeedback-binutils: maybe-all-build-flex
*************** all-stage2-binutils: maybe-all-build-bis
*** 55459,55464 ****
--- 57561,57567 ----
  all-stage3-binutils: maybe-all-build-bison
  all-stage4-binutils: maybe-all-build-bison
  all-stageprofile-binutils: maybe-all-build-bison
+ all-stagetrain-binutils: maybe-all-build-bison
  all-stagefeedback-binutils: maybe-all-build-bison
  all-stageautoprofile-binutils: maybe-all-build-bison
  all-stageautofeedback-binutils: maybe-all-build-bison
*************** all-stage2-binutils: maybe-all-stage2-in
*** 55469,55474 ****
--- 57572,57578 ----
  all-stage3-binutils: maybe-all-stage3-intl
  all-stage4-binutils: maybe-all-stage4-intl
  all-stageprofile-binutils: maybe-all-stageprofile-intl
+ all-stagetrain-binutils: maybe-all-stagetrain-intl
  all-stagefeedback-binutils: maybe-all-stagefeedback-intl
  all-stageautoprofile-binutils: maybe-all-stageautoprofile-intl
  all-stageautofeedback-binutils: maybe-all-stageautofeedback-intl
*************** all-stage2-binutils: maybe-all-stage2-ga
*** 55479,55484 ****
--- 57583,57589 ----
  all-stage3-binutils: maybe-all-stage3-gas
  all-stage4-binutils: maybe-all-stage4-gas
  all-stageprofile-binutils: maybe-all-stageprofile-gas
+ all-stagetrain-binutils: maybe-all-stagetrain-gas
  all-stagefeedback-binutils: maybe-all-stagefeedback-gas
  all-stageautoprofile-binutils: maybe-all-stageautoprofile-gas
  all-stageautofeedback-binutils: maybe-all-stageautofeedback-gas
*************** configure-stage2-gas: maybe-configure-st
*** 55493,55498 ****
--- 57598,57604 ----
  configure-stage3-gas: maybe-configure-stage3-intl
  configure-stage4-gas: maybe-configure-stage4-intl
  configure-stageprofile-gas: maybe-configure-stageprofile-intl
+ configure-stagetrain-gas: maybe-configure-stagetrain-intl
  configure-stagefeedback-gas: maybe-configure-stagefeedback-intl
  configure-stageautoprofile-gas: maybe-configure-stageautoprofile-intl
  configure-stageautofeedback-gas: maybe-configure-stageautofeedback-intl
*************** all-stage2-gas: maybe-all-stage2-libiber
*** 55503,55508 ****
--- 57609,57615 ----
  all-stage3-gas: maybe-all-stage3-libiberty
  all-stage4-gas: maybe-all-stage4-libiberty
  all-stageprofile-gas: maybe-all-stageprofile-libiberty
+ all-stagetrain-gas: maybe-all-stagetrain-libiberty
  all-stagefeedback-gas: maybe-all-stagefeedback-libiberty
  all-stageautoprofile-gas: maybe-all-stageautoprofile-libiberty
  all-stageautofeedback-gas: maybe-all-stageautofeedback-libiberty
*************** all-stage2-gas: maybe-all-stage2-opcodes
*** 55513,55518 ****
--- 57620,57626 ----
  all-stage3-gas: maybe-all-stage3-opcodes
  all-stage4-gas: maybe-all-stage4-opcodes
  all-stageprofile-gas: maybe-all-stageprofile-opcodes
+ all-stagetrain-gas: maybe-all-stagetrain-opcodes
  all-stagefeedback-gas: maybe-all-stagefeedback-opcodes
  all-stageautoprofile-gas: maybe-all-stageautoprofile-opcodes
  all-stageautofeedback-gas: maybe-all-stageautofeedback-opcodes
*************** all-stage2-gas: maybe-all-stage2-bfd
*** 55523,55528 ****
--- 57631,57637 ----
  all-stage3-gas: maybe-all-stage3-bfd
  all-stage4-gas: maybe-all-stage4-bfd
  all-stageprofile-gas: maybe-all-stageprofile-bfd
+ all-stagetrain-gas: maybe-all-stagetrain-bfd
  all-stagefeedback-gas: maybe-all-stagefeedback-bfd
  all-stageautoprofile-gas: maybe-all-stageautoprofile-bfd
  all-stageautofeedback-gas: maybe-all-stageautofeedback-bfd
*************** all-stage2-gas: maybe-all-stage2-intl
*** 55533,55538 ****
--- 57642,57648 ----
  all-stage3-gas: maybe-all-stage3-intl
  all-stage4-gas: maybe-all-stage4-intl
  all-stageprofile-gas: maybe-all-stageprofile-intl
+ all-stagetrain-gas: maybe-all-stagetrain-intl
  all-stagefeedback-gas: maybe-all-stagefeedback-intl
  all-stageautoprofile-gas: maybe-all-stageautoprofile-intl
  all-stageautofeedback-gas: maybe-all-stageautofeedback-intl
*************** configure-stage2-ld: maybe-configure-sta
*** 55549,55554 ****
--- 57659,57665 ----
  configure-stage3-ld: maybe-configure-stage3-intl
  configure-stage4-ld: maybe-configure-stage4-intl
  configure-stageprofile-ld: maybe-configure-stageprofile-intl
+ configure-stagetrain-ld: maybe-configure-stagetrain-intl
  configure-stagefeedback-ld: maybe-configure-stagefeedback-intl
  configure-stageautoprofile-ld: maybe-configure-stageautoprofile-intl
  configure-stageautofeedback-ld: maybe-configure-stageautofeedback-intl
*************** all-stage2-ld: maybe-all-stage2-libibert
*** 55559,55564 ****
--- 57670,57676 ----
  all-stage3-ld: maybe-all-stage3-libiberty
  all-stage4-ld: maybe-all-stage4-libiberty
  all-stageprofile-ld: maybe-all-stageprofile-libiberty
+ all-stagetrain-ld: maybe-all-stagetrain-libiberty
  all-stagefeedback-ld: maybe-all-stagefeedback-libiberty
  all-stageautoprofile-ld: maybe-all-stageautoprofile-libiberty
  all-stageautofeedback-ld: maybe-all-stageautofeedback-libiberty
*************** all-stage2-ld: maybe-all-stage2-bfd
*** 55569,55574 ****
--- 57681,57687 ----
  all-stage3-ld: maybe-all-stage3-bfd
  all-stage4-ld: maybe-all-stage4-bfd
  all-stageprofile-ld: maybe-all-stageprofile-bfd
+ all-stagetrain-ld: maybe-all-stagetrain-bfd
  all-stagefeedback-ld: maybe-all-stagefeedback-bfd
  all-stageautoprofile-ld: maybe-all-stageautoprofile-bfd
  all-stageautofeedback-ld: maybe-all-stageautofeedback-bfd
*************** all-stage2-ld: maybe-all-stage2-opcodes
*** 55579,55584 ****
--- 57692,57698 ----
  all-stage3-ld: maybe-all-stage3-opcodes
  all-stage4-ld: maybe-all-stage4-opcodes
  all-stageprofile-ld: maybe-all-stageprofile-opcodes
+ all-stagetrain-ld: maybe-all-stagetrain-opcodes
  all-stagefeedback-ld: maybe-all-stagefeedback-opcodes
  all-stageautoprofile-ld: maybe-all-stageautoprofile-opcodes
  all-stageautofeedback-ld: maybe-all-stageautofeedback-opcodes
*************** all-stage2-ld: maybe-all-build-bison
*** 55589,55594 ****
--- 57703,57709 ----
  all-stage3-ld: maybe-all-build-bison
  all-stage4-ld: maybe-all-build-bison
  all-stageprofile-ld: maybe-all-build-bison
+ all-stagetrain-ld: maybe-all-build-bison
  all-stagefeedback-ld: maybe-all-build-bison
  all-stageautoprofile-ld: maybe-all-build-bison
  all-stageautofeedback-ld: maybe-all-build-bison
*************** all-stage2-ld: maybe-all-build-flex
*** 55599,55604 ****
--- 57714,57720 ----
  all-stage3-ld: maybe-all-build-flex
  all-stage4-ld: maybe-all-build-flex
  all-stageprofile-ld: maybe-all-build-flex
+ all-stagetrain-ld: maybe-all-build-flex
  all-stagefeedback-ld: maybe-all-build-flex
  all-stageautoprofile-ld: maybe-all-build-flex
  all-stageautofeedback-ld: maybe-all-build-flex
*************** all-stage2-ld: maybe-all-stage2-intl
*** 55609,55614 ****
--- 57725,57731 ----
  all-stage3-ld: maybe-all-stage3-intl
  all-stage4-ld: maybe-all-stage4-intl
  all-stageprofile-ld: maybe-all-stageprofile-intl
+ all-stagetrain-ld: maybe-all-stagetrain-intl
  all-stagefeedback-ld: maybe-all-stagefeedback-intl
  all-stageautoprofile-ld: maybe-all-stageautoprofile-intl
  all-stageautofeedback-ld: maybe-all-stageautofeedback-intl
*************** all-stage2-ld: maybe-all-stage2-gas
*** 55619,55624 ****
--- 57736,57742 ----
  all-stage3-ld: maybe-all-stage3-gas
  all-stage4-ld: maybe-all-stage4-gas
  all-stageprofile-ld: maybe-all-stageprofile-gas
+ all-stagetrain-ld: maybe-all-stagetrain-gas
  all-stagefeedback-ld: maybe-all-stagefeedback-gas
  all-stageautoprofile-ld: maybe-all-stageautoprofile-gas
  all-stageautofeedback-ld: maybe-all-stageautofeedback-gas
*************** all-stage2-ld: maybe-all-stage2-binutils
*** 55629,55634 ****
--- 57747,57753 ----
  all-stage3-ld: maybe-all-stage3-binutils
  all-stage4-ld: maybe-all-stage4-binutils
  all-stageprofile-ld: maybe-all-stageprofile-binutils
+ all-stagetrain-ld: maybe-all-stagetrain-binutils
  all-stagefeedback-ld: maybe-all-stagefeedback-binutils
  all-stageautoprofile-ld: maybe-all-stageautoprofile-binutils
  all-stageautofeedback-ld: maybe-all-stageautofeedback-binutils
*************** configure-stage2-gold: maybe-configure-s
*** 55641,55646 ****
--- 57760,57766 ----
  configure-stage3-gold: maybe-configure-stage3-intl
  configure-stage4-gold: maybe-configure-stage4-intl
  configure-stageprofile-gold: maybe-configure-stageprofile-intl
+ configure-stagetrain-gold: maybe-configure-stagetrain-intl
  configure-stagefeedback-gold: maybe-configure-stagefeedback-intl
  configure-stageautoprofile-gold: maybe-configure-stageautoprofile-intl
  configure-stageautofeedback-gold: maybe-configure-stageautofeedback-intl
*************** all-stage2-gold: maybe-all-stage2-libibe
*** 55651,55656 ****
--- 57771,57777 ----
  all-stage3-gold: maybe-all-stage3-libiberty
  all-stage4-gold: maybe-all-stage4-libiberty
  all-stageprofile-gold: maybe-all-stageprofile-libiberty
+ all-stagetrain-gold: maybe-all-stagetrain-libiberty
  all-stagefeedback-gold: maybe-all-stagefeedback-libiberty
  all-stageautoprofile-gold: maybe-all-stageautoprofile-libiberty
  all-stageautofeedback-gold: maybe-all-stageautofeedback-libiberty
*************** all-stage2-gold: maybe-all-stage2-intl
*** 55661,55666 ****
--- 57782,57788 ----
  all-stage3-gold: maybe-all-stage3-intl
  all-stage4-gold: maybe-all-stage4-intl
  all-stageprofile-gold: maybe-all-stageprofile-intl
+ all-stagetrain-gold: maybe-all-stagetrain-intl
  all-stagefeedback-gold: maybe-all-stagefeedback-intl
  all-stageautoprofile-gold: maybe-all-stageautoprofile-intl
  all-stageautofeedback-gold: maybe-all-stageautofeedback-intl
*************** all-stage2-gold: maybe-all-stage2-bfd
*** 55671,55676 ****
--- 57793,57799 ----
  all-stage3-gold: maybe-all-stage3-bfd
  all-stage4-gold: maybe-all-stage4-bfd
  all-stageprofile-gold: maybe-all-stageprofile-bfd
+ all-stagetrain-gold: maybe-all-stagetrain-bfd
  all-stagefeedback-gold: maybe-all-stagefeedback-bfd
  all-stageautoprofile-gold: maybe-all-stageautoprofile-bfd
  all-stageautofeedback-gold: maybe-all-stageautofeedback-bfd
*************** all-stage2-gold: maybe-all-build-bison
*** 55681,55686 ****
--- 57804,57810 ----
  all-stage3-gold: maybe-all-build-bison
  all-stage4-gold: maybe-all-build-bison
  all-stageprofile-gold: maybe-all-build-bison
+ all-stagetrain-gold: maybe-all-build-bison
  all-stagefeedback-gold: maybe-all-build-bison
  all-stageautoprofile-gold: maybe-all-build-bison
  all-stageautofeedback-gold: maybe-all-build-bison
*************** all-stage2-gold: maybe-all-stage2-gas
*** 55691,55696 ****
--- 57815,57821 ----
  all-stage3-gold: maybe-all-stage3-gas
  all-stage4-gold: maybe-all-stage4-gas
  all-stageprofile-gold: maybe-all-stageprofile-gas
+ all-stagetrain-gold: maybe-all-stagetrain-gas
  all-stagefeedback-gold: maybe-all-stagefeedback-gas
  all-stageautoprofile-gold: maybe-all-stageautoprofile-gas
  all-stageautofeedback-gold: maybe-all-stageautofeedback-gas
*************** check-stage2-gold: maybe-all-stage2-binu
*** 55701,55706 ****
--- 57826,57832 ----
  check-stage3-gold: maybe-all-stage3-binutils
  check-stage4-gold: maybe-all-stage4-binutils
  check-stageprofile-gold: maybe-all-stageprofile-binutils
+ check-stagetrain-gold: maybe-all-stagetrain-binutils
  check-stagefeedback-gold: maybe-all-stagefeedback-binutils
  check-stageautoprofile-gold: maybe-all-stageautoprofile-binutils
  check-stageautofeedback-gold: maybe-all-stageautofeedback-binutils
*************** check-stage2-gold: maybe-all-stage2-gas
*** 55711,55716 ****
--- 57837,57843 ----
  check-stage3-gold: maybe-all-stage3-gas
  check-stage4-gold: maybe-all-stage4-gas
  check-stageprofile-gold: maybe-all-stageprofile-gas
+ check-stagetrain-gold: maybe-all-stagetrain-gas
  check-stagefeedback-gold: maybe-all-stagefeedback-gas
  check-stageautoprofile-gold: maybe-all-stageautoprofile-gas
  check-stageautofeedback-gold: maybe-all-stageautofeedback-gas
*************** configure-stage2-opcodes: maybe-configur
*** 55721,55726 ****
--- 57848,57854 ----
  configure-stage3-opcodes: maybe-configure-stage3-intl
  configure-stage4-opcodes: maybe-configure-stage4-intl
  configure-stageprofile-opcodes: maybe-configure-stageprofile-intl
+ configure-stagetrain-opcodes: maybe-configure-stagetrain-intl
  configure-stagefeedback-opcodes: maybe-configure-stagefeedback-intl
  configure-stageautoprofile-opcodes: maybe-configure-stageautoprofile-intl
  configure-stageautofeedback-opcodes: maybe-configure-stageautofeedback-intl
*************** all-stage2-opcodes: maybe-all-stage2-bfd
*** 55731,55736 ****
--- 57859,57865 ----
  all-stage3-opcodes: maybe-all-stage3-bfd
  all-stage4-opcodes: maybe-all-stage4-bfd
  all-stageprofile-opcodes: maybe-all-stageprofile-bfd
+ all-stagetrain-opcodes: maybe-all-stagetrain-bfd
  all-stagefeedback-opcodes: maybe-all-stagefeedback-bfd
  all-stageautoprofile-opcodes: maybe-all-stageautoprofile-bfd
  all-stageautofeedback-opcodes: maybe-all-stageautofeedback-bfd
*************** all-stage2-opcodes: maybe-all-stage2-lib
*** 55741,55746 ****
--- 57870,57876 ----
  all-stage3-opcodes: maybe-all-stage3-libiberty
  all-stage4-opcodes: maybe-all-stage4-libiberty
  all-stageprofile-opcodes: maybe-all-stageprofile-libiberty
+ all-stagetrain-opcodes: maybe-all-stagetrain-libiberty
  all-stagefeedback-opcodes: maybe-all-stagefeedback-libiberty
  all-stageautoprofile-opcodes: maybe-all-stageautoprofile-libiberty
  all-stageautofeedback-opcodes: maybe-all-stageautofeedback-libiberty
*************** all-stage2-opcodes: maybe-all-stage2-int
*** 55751,55756 ****
--- 57881,57887 ----
  all-stage3-opcodes: maybe-all-stage3-intl
  all-stage4-opcodes: maybe-all-stage4-intl
  all-stageprofile-opcodes: maybe-all-stageprofile-intl
+ all-stagetrain-opcodes: maybe-all-stagetrain-intl
  all-stagefeedback-opcodes: maybe-all-stagefeedback-intl
  all-stageautoprofile-opcodes: maybe-all-stageautoprofile-intl
  all-stageautofeedback-opcodes: maybe-all-stageautofeedback-intl
*************** configure-stage2-target-libstdc++-v3: ma
*** 55810,55815 ****
--- 57941,57947 ----
  configure-stage3-target-libstdc++-v3: maybe-configure-stage3-target-libgomp
  configure-stage4-target-libstdc++-v3: maybe-configure-stage4-target-libgomp
  configure-stageprofile-target-libstdc++-v3: maybe-configure-stageprofile-target-libgomp
+ configure-stagetrain-target-libstdc++-v3: maybe-configure-stagetrain-target-libgomp
  configure-stagefeedback-target-libstdc++-v3: maybe-configure-stagefeedback-target-libgomp
  configure-stageautoprofile-target-libstdc++-v3: maybe-configure-stageautoprofile-target-libgomp
  configure-stageautofeedback-target-libstdc++-v3: maybe-configure-stageautofeedback-target-libgomp
*************** configure-stage2-target-libsanitizer: ma
*** 55821,55826 ****
--- 57953,57959 ----
  configure-stage3-target-libsanitizer: maybe-all-stage3-target-libstdc++-v3
  configure-stage4-target-libsanitizer: maybe-all-stage4-target-libstdc++-v3
  configure-stageprofile-target-libsanitizer: maybe-all-stageprofile-target-libstdc++-v3
+ configure-stagetrain-target-libsanitizer: maybe-all-stagetrain-target-libstdc++-v3
  configure-stagefeedback-target-libsanitizer: maybe-all-stagefeedback-target-libstdc++-v3
  configure-stageautoprofile-target-libsanitizer: maybe-all-stageautoprofile-target-libstdc++-v3
  configure-stageautofeedback-target-libsanitizer: maybe-all-stageautofeedback-target-libstdc++-v3
*************** configure-stage2-target-libvtv: maybe-al
*** 55831,55836 ****
--- 57964,57970 ----
  configure-stage3-target-libvtv: maybe-all-stage3-target-libstdc++-v3
  configure-stage4-target-libvtv: maybe-all-stage4-target-libstdc++-v3
  configure-stageprofile-target-libvtv: maybe-all-stageprofile-target-libstdc++-v3
+ configure-stagetrain-target-libvtv: maybe-all-stagetrain-target-libstdc++-v3
  configure-stagefeedback-target-libvtv: maybe-all-stagefeedback-target-libstdc++-v3
  configure-stageautoprofile-target-libvtv: maybe-all-stageautoprofile-target-libstdc++-v3
  configure-stageautofeedback-target-libvtv: maybe-all-stageautofeedback-target-libstdc++-v3
*************** all-stage2-target-libstdc++-v3: maybe-co
*** 55841,55846 ****
--- 57975,57981 ----
  all-stage3-target-libstdc++-v3: maybe-configure-stage3-target-libgomp
  all-stage4-target-libstdc++-v3: maybe-configure-stage4-target-libgomp
  all-stageprofile-target-libstdc++-v3: maybe-configure-stageprofile-target-libgomp
+ all-stagetrain-target-libstdc++-v3: maybe-configure-stagetrain-target-libgomp
  all-stagefeedback-target-libstdc++-v3: maybe-configure-stagefeedback-target-libgomp
  all-stageautoprofile-target-libstdc++-v3: maybe-configure-stageautoprofile-target-libgomp
  all-stageautofeedback-target-libstdc++-v3: maybe-configure-stageautofeedback-target-libgomp
*************** install-target-libsanitizer: maybe-insta
*** 55852,55859 ****
  install-target-libsanitizer: maybe-install-target-libgcc
  install-target-libvtv: maybe-install-target-libstdc++-v3
  install-target-libvtv: maybe-install-target-libgcc
- install-target-libcilkrts: maybe-install-target-libstdc++-v3
- install-target-libcilkrts: 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
--- 57987,57992 ----
*************** configure-stage2-target-libstdc++-v3: ma
*** 55878,55883 ****
--- 58011,58017 ----
  configure-stage3-target-libstdc++-v3: maybe-all-stage3-target-libgcc
  configure-stage4-target-libstdc++-v3: maybe-all-stage4-target-libgcc
  configure-stageprofile-target-libstdc++-v3: maybe-all-stageprofile-target-libgcc
+ configure-stagetrain-target-libstdc++-v3: maybe-all-stagetrain-target-libgcc
  configure-stagefeedback-target-libstdc++-v3: maybe-all-stagefeedback-target-libgcc
  configure-stageautoprofile-target-libstdc++-v3: maybe-all-stageautoprofile-target-libgcc
  configure-stageautofeedback-target-libstdc++-v3: maybe-all-stageautofeedback-target-libgcc
*************** configure-stage2-target-libsanitizer: ma
*** 55886,55891 ****
--- 58020,58026 ----
  configure-stage3-target-libsanitizer: maybe-all-stage3-target-libgcc
  configure-stage4-target-libsanitizer: maybe-all-stage4-target-libgcc
  configure-stageprofile-target-libsanitizer: maybe-all-stageprofile-target-libgcc
+ configure-stagetrain-target-libsanitizer: maybe-all-stagetrain-target-libgcc
  configure-stagefeedback-target-libsanitizer: maybe-all-stagefeedback-target-libgcc
  configure-stageautoprofile-target-libsanitizer: maybe-all-stageautoprofile-target-libgcc
  configure-stageautofeedback-target-libsanitizer: maybe-all-stageautofeedback-target-libgcc
*************** configure-stage2-target-libmpx: maybe-al
*** 55894,55899 ****
--- 58029,58035 ----
  configure-stage3-target-libmpx: maybe-all-stage3-target-libgcc
  configure-stage4-target-libmpx: maybe-all-stage4-target-libgcc
  configure-stageprofile-target-libmpx: maybe-all-stageprofile-target-libgcc
+ configure-stagetrain-target-libmpx: maybe-all-stagetrain-target-libgcc
  configure-stagefeedback-target-libmpx: maybe-all-stagefeedback-target-libgcc
  configure-stageautoprofile-target-libmpx: maybe-all-stageautoprofile-target-libgcc
  configure-stageautofeedback-target-libmpx: maybe-all-stageautofeedback-target-libgcc
*************** configure-stage2-target-libvtv: maybe-al
*** 55902,55907 ****
--- 58038,58044 ----
  configure-stage3-target-libvtv: maybe-all-stage3-target-libgcc
  configure-stage4-target-libvtv: maybe-all-stage4-target-libgcc
  configure-stageprofile-target-libvtv: maybe-all-stageprofile-target-libgcc
+ configure-stagetrain-target-libvtv: maybe-all-stagetrain-target-libgcc
  configure-stagefeedback-target-libvtv: maybe-all-stagefeedback-target-libgcc
  configure-stageautoprofile-target-libvtv: maybe-all-stageautoprofile-target-libgcc
  configure-stageautofeedback-target-libvtv: maybe-all-stageautofeedback-target-libgcc
*************** configure-stage2-target-libgomp: maybe-a
*** 55910,55915 ****
--- 58047,58053 ----
  configure-stage3-target-libgomp: maybe-all-stage3-target-libgcc
  configure-stage4-target-libgomp: maybe-all-stage4-target-libgcc
  configure-stageprofile-target-libgomp: maybe-all-stageprofile-target-libgcc
+ configure-stagetrain-target-libgomp: maybe-all-stagetrain-target-libgcc
  configure-stagefeedback-target-libgomp: maybe-all-stagefeedback-target-libgcc
  configure-stageautoprofile-target-libgomp: maybe-all-stageautoprofile-target-libgcc
  configure-stageautofeedback-target-libgomp: maybe-all-stageautofeedback-target-libgcc
*************** configure-target-libstdc++-v3: maybe-all
*** 55920,55926 ****
  configure-target-libsanitizer: maybe-all-target-libgcc
  configure-target-libmpx: maybe-all-target-libgcc
  configure-target-libvtv: maybe-all-target-libgcc
- configure-target-libcilkrts: 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
--- 58058,58063 ----
*************** configure-target-libmpx: maybe-all-targe
*** 55951,55959 ****
  
  configure-target-libvtv: maybe-all-target-newlib maybe-all-target-libgloss
  
- configure-target-libcilkrts: maybe-all-target-newlib maybe-all-target-libgloss
- configure-target-libcilkrts: maybe-all-target-libstdc++-v3
- 
  configure-target-liboffloadmic: maybe-all-target-newlib maybe-all-target-libgloss
  configure-target-liboffloadmic: maybe-all-target-libstdc++-v3
  
--- 58088,58093 ----
diff -Nrcpad gcc-7.3.0/Makefile.tpl gcc-8.1.0/Makefile.tpl
*** gcc-7.3.0/Makefile.tpl	Wed Feb 15 14:43:42 2017
--- gcc-8.1.0/Makefile.tpl	Fri Oct 27 13:13:05 2017
*************** STAGE1_CONFIGURE_FLAGS = --disable-inter
*** 455,462 ****
  STAGEprofile_CFLAGS = $(STAGE2_CFLAGS) -fprofile-generate
  STAGEprofile_TFLAGS = $(STAGE2_TFLAGS)
  
! STAGEfeedback_CFLAGS = $(STAGE3_CFLAGS) -fprofile-use
! STAGEfeedback_TFLAGS = $(STAGE3_TFLAGS)
  
  STAGEautoprofile_CFLAGS = $(STAGE2_CFLAGS) -g
  STAGEautoprofile_TFLAGS = $(STAGE2_TFLAGS)
--- 455,465 ----
  STAGEprofile_CFLAGS = $(STAGE2_CFLAGS) -fprofile-generate
  STAGEprofile_TFLAGS = $(STAGE2_TFLAGS)
  
! STAGEtrain_CFLAGS = $(STAGE3_CFLAGS)
! STAGEtrain_TFLAGS = $(STAGE3_TFLAGS)
! 
! STAGEfeedback_CFLAGS = $(STAGE4_CFLAGS) -fprofile-use
! STAGEfeedback_TFLAGS = $(STAGE4_TFLAGS)
  
  STAGEautoprofile_CFLAGS = $(STAGE2_CFLAGS) -g
  STAGEautoprofile_TFLAGS = $(STAGE2_TFLAGS)
*************** stageprofile-end::
*** 1715,1722 ****
  stagefeedback-start::
  	@r=`${PWD_COMMAND}`; export r; \
  	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
! 	for i in prev-*; do \
! 	  j=`echo $$i | sed s/^prev-//`; \
  	  cd $$r/$$i && \
  	  { find . -type d | sort | sed 's,.*,$(SHELL) '"$$s"'/mkinstalldirs "../'$$j'/&",' | $(SHELL); } && \
  	  { find . -name '*.*da' | sed 's,.*,$(LN) -f "&" "../'$$j'/&",' | $(SHELL); }; \
--- 1718,1725 ----
  stagefeedback-start::
  	@r=`${PWD_COMMAND}`; export r; \
  	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
! 	for i in stageprofile-*; do \
! 	  j=`echo $$i | sed s/^stageprofile-//`; \
  	  cd $$r/$$i && \
  	  { find . -type d | sort | sed 's,.*,$(SHELL) '"$$s"'/mkinstalldirs "../'$$j'/&",' | $(SHELL); } && \
  	  { find . -name '*.*da' | sed 's,.*,$(LN) -f "&" "../'$$j'/&",' | $(SHELL); }; \
diff -Nrcpad gcc-7.3.0/NEWS gcc-8.1.0/NEWS
*** gcc-7.3.0/NEWS	Thu Jan 25 08:19:14 2018
--- gcc-8.1.0/NEWS	Wed May  2 08:21:27 2018
*************** that led to GCC 3. For information on GC
*** 5,12 ****
  see ONEWS.
  
  ======================================================================
! http://gcc.gnu.org/gcc-7/index.html
  
                                GCC 7 Release Series
  
     Jan 25, 2018
--- 5,1078 ----
  see ONEWS.
  
  ======================================================================
! http://gcc.gnu.org/gcc-8/index.html
!                               GCC 8 Release Series
! 
!    As of this time no releases of GCC 8 have yet been made.
! 
! 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 [1]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 [2]amazing group of volunteers is
!    what makes GCC successful.
! 
!    For additional information about GCC please refer to the [3]GCC project
!    web site or contact the [4]GCC development mailing list.
! 
!    To obtain GCC please use [5]our mirror sites or [6]our SVN server.
! 
! 
!     For questions related to the use of GCC, please consult these web
!     pages and the [7]GCC manuals. If that fails, the
!     [8]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 [9]gcc@gcc.gnu.org. All of [10]our lists have public
!     archives.
! 
!    Copyright (C) [11]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 [12]maintained by the GCC team. Last modified
!    2018-04-25[13].
! 
! References
! 
!    1. http://gcc.gnu.org/gcc-8/buildstat.html
!    2. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
!    3. http://gcc.gnu.org/index.html
!    4. mailto:gcc@gcc.gnu.org
!    5. http://gcc.gnu.org/mirrors.html
!    6. http://gcc.gnu.org/svn.html
!    7. https://gcc.gnu.org/onlinedocs/
!    8. mailto:gcc-help@gcc.gnu.org
!    9. mailto:gcc@gcc.gnu.org
!   10. https://gcc.gnu.org/lists.html
!   11. https://www.fsf.org/
!   12. https://gcc.gnu.org/about.html
!   13. http://validator.w3.org/check/referer
! ======================================================================
! http://gcc.gnu.org/gcc-8/changes.html
!                               GCC 8 Release Series
!                         Changes, New Features, and Fixes
! 
!    This page is a "brief" summary of some of the huge number of
!    improvements in GCC 8. You may also want to check out our [1]Porting to
!    GCC 8 page and the [2]full GCC documentation.
! 
! Disclaimer: GCC 8 has not been released yet, so this document is a
! work-in-progress.
! 
! Caveats
! 
!      * Support for the obsolete SDB/coff debug info format has been
!        removed. The option -gcoff no longer does anything.
!      * The Cilk+ extensions to the C and C++ languages have been removed.
!      * The MPX extensions to the C and C++ languages have been deprecated
!        and will be removed in a future release.
!      * The extension allowing arithmetic on std::atomic<void*> and types
!        like std::atomic<R(*)()> has been deprecated.
!      * The non-standard C++0x std::copy_exception function was removed.
!        std::make_exception_ptr should be used instead.
!      * Support for the powerpc*-*-*spe* target ports which have been
!        recently unmaintained and untested in GCC has been declared
!        obsolete in GCC 8 as announced [3]here. Unless there is activity to
!        revive them, the next release of GCC will have their sources
!        permanently removed.
! 
! General Improvements
! 
!      * Inter-procedural optimization improvements:
!           + Reworked run-time estimation metrics leading to more realistic
!             guesses driving inliner and cloning heuristics.
!           + The ipa-pure-const pass is extended to propagate the malloc
!             attribute, and the corresponding warning option
!             -Wsuggest-attribute=malloc emits a diagnostic for functions
!             which can be annotated with the malloc attribute.
!      * Profile driven optimization improvements:
!           + New infrastructure for representing profiles (both statically
!             guessed and profile feedback) which allows propagation of
!             additional information about the reliability of the profile.
!           + A number of improvements in the profile updating code solving
!             problems found by new verification code.
!           + Static detection of code which is not executed in a valid run
!             of the program. This includes paths which trigger undefined
!             behavior as well as calls to functions declared with the cold
!             attribute. Newly the noreturn attribute does not imply all
!             effects of cold to differentiate between exit (which is
!             noreturn) and abort (which is in addition not executed in
!             valid runs).
!           + -freorder-blocks-and-partition, a pass splitting function
!             bodies into hot and cold regions, is now enabled by default at
!             -O2 and higher for x86 and x86-64.
!      * Link-time optimization improvements:
!           + We have significantly improved debug information on ELF
!             targets using DWARF by properly preserving language-specific
!             information. This allows for example the libstdc++
!             pretty-printers to work with LTO optimized executables.
!      * A new option -fcf-protection=[full|branch|return|none] is
!        introduced to perform code instrumentation to increase program
!        security by checking that target addresses of control-flow transfer
!        instructions (such as indirect function call, function return,
!        indirect jump) are valid. Currently the instrumentation is
!        supported on x86 GNU/Linux targets only. See the user guide for
!        further information about the option syntax and section "New
!        Targets and Target Specific Improvements" for IA-32/x86-64 for more
!        details.
!      * The -gcolumn-info option is now enabled by default. It includes
!        column information in addition to just filenames and line numbers
!        in DWARF debugging information.
!      * The polyhedral-based loop nest optimization pass
!        -floop-nest-optimize has been overhauled. It's still considered
!        experimental and may not result in any runtime improvements.
!      * Two new classical loop nest optimization passes have been added.
!        -floop-unroll-and-jam performs outer loop unrolling and fusing of
!        the inner loop copies. -floop-interchange exchanges loops in a loop
!        nest to improve data locality. Both passes are enabled by default
!        at -O3 and above.
!      * The classic loop nest optimization pass -ftree-loop-distribution
!        has been improved and enabled by default at -O3 and above. It
!        supports loop nest distribution in some restricted scenarios; it
!        also supports cancellable innermost loop distribution with loop
!        versioning under run-time alias checks.
!      * The new option -fstack-clash-protection causes the compiler to
!        insert probes whenever stack space is allocated statically or
!        dynamically to reliably detect stack overflows and thus mitigate
!        the attack vector that relies on jumping over a stack guard page as
!        provided by the operating system.
!      * A new pragma GCC unroll has been implemented in the C family of
!        languages, as well as Fortran and Ada, so as to make it possible
!        for the user to have a finer-grained control over the loop
!        unrolling optimization.
!      * GCC has been enhanced to detect more instances of meaningless or
!        mutually exclusive attribute specifications and handle such
!        conflicts more consistently. Mutually exclusive attribute
!        specifications are ignored with a warning regardless of whether
!        they appear on the same declaration or on distinct declarations of
!        the same entity. For example, because the noreturn attribute on the
!        second declaration below is mutually exclusive with the malloc
!        attribute on the first, it is ignored and a warning is issued.
!       void* __attribute__ ((malloc)) f (unsigned);
!       void* __attribute__ ((noreturn)) f (unsigned);
! 
!       warning: ignoring attribute 'noreturn' because it conflicts with attribute
!  'malloc' [-Wattributes]
!      * The gcov tool can distinguish functions that begin on a same line
!        in a source file. This can be a different template instantiation or
!        a class constructor:
! 
! File 'ins.C'
! Lines executed:100.00% of 8
! Creating 'ins.C.gcov'
! 
!         -:    0:Source:ins.C
!         -:    0:Graph:ins.gcno
!         -:    0:Data:ins.gcda
!         -:    0:Runs:1
!         -:    0:Programs:1
!         -:    1:template<class T>
!         -:    2:class Foo
!         -:    3:{
!         -:    4: public:
!         2:    5:   Foo(): b (1000) {}
! ------------------
! Foo<char>::Foo():
!         1:    5:   Foo(): b (1000) {}
! ------------------
! Foo<int>::Foo():
!         1:    5:   Foo(): b (1000) {}
! ------------------
!         2:    6:   void inc () { b++; }
! ------------------
! Foo<char>::inc():
!         1:    6:   void inc () { b++; }
! ------------------
! Foo<int>::inc():
!         1:    6:   void inc () { b++; }
! ------------------
!         -:    7:
!         -:    8:  private:
!         -:    9:   int b;
!         -:   10:};
!         -:   11:
!         1:   12:int main(int argc, char **argv)
!         -:   13:{
!         1:   14:  Foo<int> a;
!         1:   15:  Foo<char> b;
!         -:   16:
!         1:   17:  a.inc ();
!         1:   18:  b.inc ();
!         1:   19:}
! 
!      * The gcov tool has more accurate numbers for execution of lines in a
!        source file.
!      * The gcov tool can use TERM colors to provide more readable output.
!      * AddressSanitizer gained a new pair of sanitization options,
!        -fsanitize=pointer-compare and -fsanitize=pointer-subtract, which
!        warn about subtraction (or comparison) of pointers that point to a
!        different memory object:
! 
! int
! main ()
! {
!   /* Heap allocated memory.  */
!   char *heap1 = (char *)__builtin_malloc (42);
!   char *heap2 = (char *)__builtin_malloc (42);
!   if (heap1 > heap2)
!       return 1;
! 
!   return 0;
! }
! 
! ==17465==ERROR: AddressSanitizer: invalid-pointer-pair: 0x604000000010 0x6040000
! 00050
!     #0 0x40070f in main /tmp/pointer-compare.c:7
!     #1 0x7ffff6a72a86 in __libc_start_main (/lib64/libc.so.6+0x21a86)
!     #2 0x400629 in _start (/tmp/a.out+0x400629)
! 
! 0x604000000010 is located 0 bytes inside of 42-byte region [0x604000000010,0x604
! 00000003a)
! allocated by thread T0 here:
!     #0 0x7ffff6efb390 in __interceptor_malloc ../../../../libsanitizer/asan/asan
! _malloc_linux.cc:86
!     #1 0x4006ea in main /tmp/pointer-compare.c:5
!     #2 0x7ffff6a72a86 in __libc_start_main (/lib64/libc.so.6+0x21a86)
! 
! 0x604000000050 is located 0 bytes inside of 42-byte region [0x604000000050,0x604
! 00000007a)
! allocated by thread T0 here:
!     #0 0x7ffff6efb390 in __interceptor_malloc ../../../../libsanitizer/asan/asan
! _malloc_linux.cc:86
!     #1 0x4006f8 in main /tmp/pointer-compare.c:6
!     #2 0x7ffff6a72a86 in __libc_start_main (/lib64/libc.so.6+0x21a86)
! 
! SUMMARY: AddressSanitizer: invalid-pointer-pair /tmp/pointer-compare.c:7 in main
! 
!      * The store merging pass has been enhanced to handle bit-fields and
!        not just constant stores, but also data copying from adjacent
!        memory locations into other adjacent memory locations, including
!        bitwise logical operations on the data. The pass can also handle
!        byte swapping into memory locations.
!      * The undefined behavior sanitizer gained two new options included in
!        -fsanitize=undefined: -fsanitize=builtin which diagnoses at run
!        time invalid arguments to __builtin_clz or __builtin_ctz prefixed
!        builtins, and -fsanitize=pointer-overflow which performs cheap run
!        time tests for pointer wrapping.
! 
! New Languages and Language specific improvements
! 
!   Ada
! 
!      * For its internal exception handling used on the host for error
!        recovery in the front-end, the compiler now relies on the native
!        exception handling mechanism of the host platform, which should be
!        more efficient than the former mechanism.
! 
!   BRIG (HSAIL)
! 
!    In this release cycle, the focus for the BRIGFE was on stabilization
!    and performance improvements. Also a couple of completely new features
!    were added.
!      * Improved support for function and module scope group segment
!        variables. PRM specs define function and module scope group segment
!        variables as an experimental feature. However, PRM test suite uses
!        them. Now group segment is handled by separate book keeping of
!        module scope and function (kernel) offsets. Each function has a
!        "frame" in the group segment offset to which is given as an
!        argument, similar to traditional call stack frame handling.
!      * Reduce the number of type conversions due to the untyped HSAIL
!        registers. Instead of always representing the HSAIL's untyped
!        registers as unsigned int, the gccbrig now pre-analyzes the BRIG
!        code and builds the register variables as a type used the most when
!        storing or reading data to/from each register. This reduces the
!        number of total casts which cannot be always optimized away.
!      * Support for BRIG_KIND_NONE directives.
!      * Made -O3 the default optimization level for BRIGFE.
!      * Fixed illegal addresses generated from address expressions which
!        refer only to offset 0.
!      * Fixed a bug with reg+offset addressing on 32b segments. In 'large'
!        mode, the offset is treated as 32bits unless it's in global,
!        read-only or kernarg address space.
!      * Fixed a crash caused sometimes by calls with more than 4 arguments.
!      * Fixed a mis-execution issue with kernels that have both unexpanded
!        ID functions and calls to subfunctions.
!      * Treat HSAIL barrier builtins as setjmp/longjump style functions to
!        avoid illegal optimizations.
!      * Ensure per WI copies of private variables are aligned correctly.
!      * libhsail-rt: Assume the host runtime allocates the work group
!        memory.
! 
!   C family
  
+      * New command-line options have been added for the C and C++
+        compilers:
+           + [4]-Wmultistatement-macros warns about unsafe macros expanding
+             to multiple statements used as a body of a statement such as
+             if, else, while, switch, or for.
+           + [5]-Wstringop-truncation warns for calls to bounded string
+             manipulation functions such as strncat, strncpy, and stpncpy
+             that might either truncate the copied string or leave the
+             destination unchanged. For example, the following call to
+             strncat is diagnosed because it appends just three of the four
+             characters from the source string.
+             void append (char *buf, size_t bufsize)
+             {
+                 strncat (buf, ".txt", 3);
+             }
+             warning: 'strncat' output truncated copying 3 bytes from a string of
+  length 4 [-Wstringop-truncation]
+             Similarly, in the following example, the call to strncpy
+             specifies the size of the destination buffer as the bound. If
+             the length of the source string is equal to or greater than
+             this size the result of the copy will not be NUL-terminated.
+             Therefore, the call is also diagnosed. To avoid the warning,
+             specify sizeof buf - 1 as the bound and set the last element
+             of the buffer to NUL.
+             void copy (const char *s)
+             {
+                 char buf[80];
+                 strncpy (buf, s, sizeof buf);
+                 …
+             }
+             warning: 'strncpy' specified bound 80 equals destination size [-Wstr
+ ingop-truncation]
+             The -Wstringop-truncation option is included in -Wall.
+             Note that due to GCC bug [6]82944, defining strncat, strncpy,
+             or stpncpy as a macro in a system header as some
+             implementations do, suppresses the warning.
+           + [7]-Wif-not-aligned controls warnings issued in response to
+             invalid uses of objects declared with attribute
+             [8]warn_if_not_aligned.
+             The -Wif-not-aligned option is included in -Wall.
+           + [9]-Wmissing-attributes warns when a declaration of a function
+             is missing one or more attributes that a related function is
+             declared with and whose absence may adversely affect the
+             correctness or efficiency of generated code. For example, in
+             C++, the warning is issued when an explicit specialization of
+             a primary template declared with attribute alloc_align,
+             alloc_size, assume_aligned, format, format_arg, malloc, or
+             nonnull is declared without it. Attributes deprecated, error,
+             and warning suppress the warning.
+             The -Wmissing-attributes option is included in -Wall.
+           + [10]-Wpacked-not-aligned warns when a struct or union declared
+             with attribute packed defines a member with an explicitly
+             specified alignment greater than 1. Such a member will wind up
+             under-aligned. For example, a warning will be issued for the
+             definition of struct A in the following:
+             struct __attribute__ ((aligned (8)))
+             S8 { char a[8]; };
+ 
+             struct __attribute__ ((packed)) A
+             {
+                 struct S8 s8;
+             };
+             warning: alignment 1 of 'struct S' is less than 8 [-Wpacked-not-alig
+ ned]
+             The -Wpacked-not-aligned option is included in -Wall.
+           + -Wcast-function-type warns when a function pointer is cast to
+             an incompatible function pointer. This warning is enabled by
+             -Wextra.
+           + -Wsizeof-pointer-div warns for suspicious divisions of the
+             size of a pointer by the size of the elements it points to,
+             which looks like the usual way to compute the array size but
+             won't work out correctly with pointers. This warning is
+             enabled by -Wall.
+           + -Wcast-align=strict warns whenever a pointer is cast such that
+             the required alignment of the target is increased. For
+             example, warn if a char * is cast to an int * regardless of
+             the target machine.
+           + -fprofile-abs-path creates absolute path names in the .gcno
+             files. This allows gcov to find the correct sources in
+             projects where compilations occur with different working
+             directories.
+      * -fno-strict-overflow is now mapped to -fwrapv -fwrapv-pointer and
+        signed integer overflow is now undefined by default at all
+        optimization levels. Using -fsanitize=signed-integer-overflow is
+        now the preferred way to audit code, -Wstrict-overflow is
+        deprecated.
+      * The [11]-Warray-bounds option has been improved to detect more
+        instances of out-of-bounds array indices and pointer offsets. For
+        example, negative or excessive indices into flexible array members
+        and string literals are detected.
+      * The [12]-Wrestrict option introduced in GCC 7 has been enhanced to
+        detect many more instances of overlapping accesses to objects via
+        restrict-qualified arguments to standard memory and string
+        manipulation functions such as memcpy and strcpy. For example, the
+        strcpy call in the function below attempts to truncate the string
+        by replacing its initial characters with the last four. However,
+        because the function writes the terminating NUL into a[4], the
+        copies overlap and the call is diagnosed.
+         void f (void)
+         {
+             char a[] = "abcd1234";
+             strcpy (a, a + 4);
+             …
+         }
+        The -Wrestrict option is included in -Wall.
+      * Several optimizer enhancements have enabled improvements to the
+        [13]-Wformat-overflow and [14]-Wformat-truncation options. The
+        warnings detect more instances of buffer overflow and truncation
+        than in GCC 7 and are better at avoiding certain kinds of false
+        positives.
+      * When reporting mismatching argument types at a function call, the C
+        and C++ compilers now underline both the argument and the pertinent
+        parameter in the declaration.
+ $ gcc arg-type-mismatch.cc
+ arg-type-mismatch.cc: In function 'int caller(int, int, float)':
+ arg-type-mismatch.cc:5:24: error: invalid conversion from 'int' to 'const char*'
+  [-fpermissive]
+    return callee(first, second, third);
+                         ^~~~~~
+ arg-type-mismatch.cc:1:40: note:   initializing argument 2 of 'int callee(int, c
+ onst char*, float)'
+  extern int callee(int one, const char *two, float three);
+                             ~~~~~~~~~~~~^~~
+ 
+      * When reporting on unrecognized identifiers, the C and C++ compilers
+        will now emit fix-it hints suggesting #include directives for
+        various headers in the C and C++ standard libraries.
+ $ gcc incomplete.c
+ incomplete.c: In function 'test':
+ incomplete.c:3:10: error: 'NULL' undeclared (first use in this function)
+    return NULL;
+           ^~~~
+ incomplete.c:3:10: note: 'NULL' is defined in header '<stddef.h>'; did you forge
+ t to '#include <stddef.h>'?
+ incomplete.c:1:1:
+ +#include <stddef.h>
+  const char *test(void)
+ incomplete.c:3:10:
+    return NULL;
+           ^~~~
+ incomplete.c:3:10: note: each undeclared identifier is reported only once for ea
+ ch function it appears in
+ 
+ $ gcc incomplete.cc
+ incomplete.cc:1:6: error: 'string' in namespace 'std' does not name a type
+  std::string s("hello world");
+       ^~~~~~
+ incomplete.cc:1:1: note: 'std::string' is defined in header '<string>'; did you
+ forget to '#include <string>'?
+ +#include <string>
+  std::string s("hello world");
+  ^~~
+ 
+      * The C and C++ compilers now use more intuitive locations when
+        reporting on missing semicolons, and offer fix-it hints:
+ $ gcc t.c
+ t.c: In function 'test':
+ t.c:3:12: error: expected ';' before '}' token
+    return 42
+             ^
+             ;
+  }
+  ~
+ 
+      * When reporting on missing '}' and ')' tokens, the C and C++
+        compilers will now highlight the corresponding '{' and '(' token,
+        issuing a 'note' if it's on a separate line:
+ $ gcc unclosed.c
+ unclosed.c: In function 'log_when_out_of_range':
+ unclosed.c:12:50: error: expected ')' before '{' token
+        && (temperature < MIN || temperature > MAX) {
+                                                   ^~
+                                                   )
+ unclosed.c:11:6: note: to match this '('
+    if (logging_enabled && check_range ()
+       ^
+ 
+        or highlighting it directly if it's on the same line:
+ $ gcc unclosed-2.c
+ unclosed-2.c: In function 'test':
+ unclosed-2.c:8:45: error: expected ')' before '{' token
+    if (temperature < MIN || temperature > MAX {
+       ~                                      ^~
+                                              )
+ 
+        They will also emit fix-it hints.
+ 
+   C++
+ 
+      * The value of the C++11 alignof operator has been corrected to match
+        C _Alignof (minimum alignment) rather than GNU __alignof__
+        (preferred alignment); on ia32 targets this means that
+        alignof(double) is now 4 rather than 8. Code that wants the
+        preferred alignment should use __alignof__ instead.
+      * New command-line options have been added for the C++ compiler to
+        control warnings:
+           + [15]-Wclass-memaccess warns when objects of non-trivial class
+             types are manipulated in potentially unsafe ways by raw memory
+             functions such as memcpy, or realloc. The warning helps detect
+             calls that bypass user-defined constructors or copy-assignment
+             operators, corrupt virtual table pointers, data members of
+             const-qualified types or references, or member pointers. The
+             warning also detects calls that would bypass access controls
+             to data members. For example, a call such as:
+         memcpy (&std::cout, &std::cerr, sizeof std::cout);
+             results in
+         warning: 'void* memcpy(void*, const void*, long unsigned int)' writing t
+ o an object of type 'std::ostream' {aka 'class std::basic_ostream<char>'} with n
+ o trivial copy-assignment [-Wclass-memaccess]
+             The -Wclass-memaccess option is included in -Wall.
+      * The C++ front end has experimental support for some of the upcoming
+        C++2a draft features with the -std=c++2a or -std=gnu++2a flags,
+        including designated initializers, default member initializers for
+        bit-fields, __VA_OPT__ (except that #__VA_OPT__ is unsupported),
+        lambda [=, this] captures, etc. For a full list of new features,
+        see [16]the C++ status page.
+      * When reporting on attempts to access private fields of a class or
+        struct, the C++ compiler will now offer fix-it hints showing how to
+        use an accessor function to get at the field in question, if one
+        exists.
+ $ gcc accessor.cc
+ accessor.cc: In function 'void test(foo*)':
+ accessor.cc:12:12: error: 'double foo::m_ratio' is private within this context
+    if (ptr->m_ratio >= 0.5)
+             ^~~~~~~
+ accessor.cc:7:10: note: declared private here
+    double m_ratio;
+           ^~~~~~~
+ accessor.cc:12:12: note: field 'double foo::m_ratio' can be accessed via 'double
+  foo::get_ratio() const'
+    if (ptr->m_ratio >= 0.5)
+             ^~~~~~~
+             get_ratio()
+ 
+      * The C++ compiler can now give you a hint if you use a macro before
+        it was defined (e.g. if you mess up the order of your #include
+        directives):
+ $ gcc ordering.cc
+ ordering.cc:2:24: error: expected ';' at end of member declaration
+    virtual void clone() const OVERRIDE { }
+                         ^~~~~
+                              ;
+ ordering.cc:2:30: error: 'OVERRIDE' does not name a type
+    virtual void clone() const OVERRIDE { }
+                               ^~~~~~~~
+ ordering.cc:2:30: note: the macro 'OVERRIDE' had not yet been defined
+ In file included from ordering.cc:5:
+ c++11-compat.h:2: note: it was later defined here
+  #define OVERRIDE override
+ 
+ 
+      * The -Wold-style-cast diagnostic can now emit fix-it hints telling
+        you when you can use a static_cast, const_cast, or
+        reinterpret_cast.
+ $ gcc -c old-style-cast-fixits.cc -Wold-style-cast
+ old-style-cast-fixits.cc: In function 'void test(void*)':
+ old-style-cast-fixits.cc:5:19: warning: use of old-style cast to 'struct foo*' [
+ -Wold-style-cast]
+    foo *f = (foo *)ptr;
+                    ^~~
+             ----------
+             static_cast<foo *> (ptr)
+ 
+      * When reporting on problems within extern "C" linkage
+        specifications, the C++ compiler will now display the location of
+        the start of the extern "C".
+ $ gcc -c extern-c.cc
+ extern-c.cc:3:1: error: template with C linkage
+  template <typename T> void test (void);
+  ^~~~~~~~
+ In file included from extern-c.cc:1:
+ unclosed.h:1:1: note: 'extern "C"' linkage started here
+  extern "C" {
+  ^~~~~~~~~~
+ extern-c.cc:3:39: error: expected '}' at end of input
+  template <typename T> void test (void);
+                                        ^
+ In file included from extern-c.cc:1:
+ unclosed.h:1:12: note: to match this '{'
+  extern "C" {
+             ^
+ 
+      * When reporting on mismatching template types, the C++ compiler will
+        now use color to highlight the mismatching parts of the template,
+        and will elide the parameters that are common between two
+        mismatching templates, printing [...] instead:
+ $ gcc templates.cc
+ templates.cc: In function 'void test()':
+ templates.cc:9:8: error: could not convert 'vector<double>()' from 'vector<doubl
+ e>' to 'vector<int>'
+    fn_1(vector<double> ());
+         ^~~~~~~~~~~~~~~~~
+ templates.cc:10:8: error: could not convert 'map<int, double>()' from 'map<[...]
+ ,double>' to 'map<[...],int>'
+    fn_2(map<int, double>());
+         ^~~~~~~~~~~~~~~~~~
+ 
+        Those [...] elided parameters can be seen using -fno-elide-type:
+ $ gcc templates.cc -fno-elide-type
+ templates.cc: In function 'void test()':
+ templates.cc:9:8: error: could not convert 'vector<double>()' from 'vector<doubl
+ e>' to 'vector<int>'
+    fn_1(vector<double> ());
+         ^~~~~~~~~~~~~~~~~
+ templates.cc:10:8: error: could not convert 'map<int, double>()' from 'map<int,d
+ ouble>' to 'map<int,int>'
+    fn_2(map<int, double>());
+         ^~~~~~~~~~~~~~~~~~
+ 
+        The C++ compiler has also gained an option
+        -fdiagnostics-show-template-tree which visualizes such mismatching
+        templates in a hierarchical form:
+ $ gcc templates-2.cc -fdiagnostics-show-template-tree
+ templates-2.cc: In function 'void test()':
+ templates-2.cc:9:8: error: could not convert 'vector<double>()' from 'vector<dou
+ ble>' to 'vector<int>'
+   vector<
+     [double != int]>
+    fn_1(vector<double> ());
+         ^~~~~~~~~~~~~~~~~
+ templates-2.cc:10:8: error: could not convert 'map<map<int, vector<double> >, ve
+ ctor<double> >()' from 'map<map<[...],vector<double>>,vector<double>>' to 'map<m
+ ap<[...],vector<float>>,vector<float>>'
+   map<
+     map<
+       [...],
+       vector<
+         [double != float]>>,
+     vector<
+       [double != float]>>
+    fn_2(map<map<int, vector<double>>, vector<double>> ());
+         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ 
+        which again works with -fno-elide-type:
+ $ gcc templates-2.cc -fdiagnostics-show-template-tree -fno-elide-type
+ templates-2.cc: In function 'void test()':
+ templates-2.cc:9:8: error: could not convert 'vector<double>()' from 'vector<dou
+ ble>' to 'vector<int>'
+   vector<
+     [double != int]>
+    fn_1(vector<double> ());
+         ^~~~~~~~~~~~~~~~~
+ templates-2.cc:10:8: error: could not convert 'map<map<int, vector<double> >, ve
+ ctor<double> >()' from 'map<map<int,vector<double>>,vector<double>>' to 'map<map
+ <int,vector<float>>,vector<float>>'
+   map<
+     map<
+       int,
+       vector<
+         [double != float]>>,
+     vector<
+       [double != float]>>
+    fn_2(map<map<int, vector<double>>, vector<double>> ());
+         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ 
+      * Flowing off the end of a non-void function is considered
+        unreachable and may be subject to optimization on that basis. As a
+        result of this change, -Wreturn-type warnings are enabled by
+        default for C++.
+ 
+     Runtime Library (libstdc++)
+ 
+      * Improved experimental support for C++17, including the following
+        features:
+           + Deduction guides to support class template argument deduction.
+           + std::filesystem implementation.
+           + std::char_traits<char> and std::char_traits<wchar_t> are
+             usable in constant expressions.
+           + std::to_chars and std::from_chars (for integers only, not for
+             floating point types).
+      * Experimental support for C++2a: std::to_address (thanks to Glen
+        Fernandes) and std::endian.
+      * On GNU/Linux, std::random_device::entropy() accesses the kernel's
+        entropy count for the random device, if known (thanks to Xi
+        Ruoyao).
+      * Support for std::experimental::source_location.
+      * AddressSanitizer integration for std::vector, detecting
+        out-of-range accesses to the unused capacity of a vector.
+      * Extensions __gnu_cxx::airy_ai and __gnu_cxx::airy_bi added to the
+        Mathematical Special Functions.
+ 
+   Fortran
+ 
+      * The main version of libfortran has been changed to 5.
+      * Parameterized derived types, a major feature of Fortran 2003, have
+        been implemented.
+      * The maximum rank for arrays has been increased to 15, conforming to
+        the Fortran 2008 standard.
+      * Transformational intrinsics are now fully supported in
+        initialization expressions.
+      * New flag -fc-prototypes to write C prototypes for BIND(C)
+        procedures and variables.
+      * If -fmax-stack-var-size is honored if given together with -Ofast,
+        -fstack-arrays is no longer set in that case.
+      * New options -fdefault-real-16 and -fdefault-real-10 to control the
+        default kind of REAL variables.
+      * A warning is now issued if an array subscript inside a DO loop
+        could lead to an out-of-bounds-access. The new option
+        -Wdo-subscript, enabled by -Wextra, warns about this even if the
+        compiler can not prove that the code will be executed.
+      * The Fortran front end now attempts to interchange loops if it is
+        deemed profitable. So far, this is restricted to FORALL and DO
+        CONCURRENT statements with multiple indices. This behavior be
+        controlled with the new flag -ffrontend-loop-interchange, which is
+        enabled with optimization by default. The
+        -Wfrontend-loop-interchange option warns about such occurrences.
+      * When an actual argument contains too few elements for a dummy
+        argument, an error is now issued. The -std=legacy option can be
+        used to still compile such code.
+      * The RECL= argument to OPEN and INQUIRE statements now allows 64-bit
+        integers, making records larger than 2GiB possible.
+      * The GFORTRAN_DEFAULT_RECL environment variable no longer has any
+        effect. The record length for preconnected units is now larger than
+        any practical limit, same as for sequential access units opened
+        without an explicit RECL= specifier.
+      * Character variables longer than HUGE(0) elements are now possible
+        on 64-bit targets. Note that this changes the procedure call ABI
+        for all procedures with character arguments on 64-bit targets, as
+        the type of the hidden character length argument has changed. The
+        hidden character length argument is now of type INTEGER(C_SIZE_T).
+ 
+   Go
+ 
+      * GCC 8 provides a complete implementation of the Go 1.10.1 user
+        packages.
+      * The garbage collector is now fully concurrent. As before, values
+        stored on the stack are scanned conservatively, but value stored in
+        the heap are scanned precisely.
+      * Escape analysis is fully implemented and enabled by default in the
+        Go frontend. This significantly reduces the number of heap
+        allocations by allocating values on the stack instead.
+ 
+ libgccjit
+ 
+    The libgccjit API gained four new entry points:
+      * [17]gcc_jit_type_get_vector and
+      * [18]gcc_jit_context_new_rvalue_from_vector for working with
+        vectors,
+      * [19]gcc_jit_type_get_aligned
+      * [20]gcc_jit_function_get_address
+ 
+    The C code generated by [21]gcc_jit_context_dump_reproducer_to_file is
+    now easier-to-read.
+ 
+ New Targets and Target Specific Improvements
+ 
+   AArch64
+ 
+      * The Armv8.4-A architecture is now supported. It can be used by
+        specifying the -march=armv8.4-a option.
+      * The Dot Product instructions are now supported as an optional
+        extension to the Armv8.2-A architecture and newer and are mandatory
+        on Armv8.4-A. The extension can be used by specifying the +dotprod
+        architecture extension. E.g. -march=armv8.2-a+dotprod.
+      * The Armv8-A +crypto extension has now been split into two
+        extensions for finer grained control:
+           + +aes which contains the Armv8-A AES crytographic instructions.
+           + +sha2 which contains the Armv8-A SHA2 and SHA1 cryptographic
+             instructions.
+        Using +crypto will now enable these two extensions.
+      * New Armv8.4-A FP16 Floating Point Multiplication Variant
+        instructions have been added. These instructions are mandatory in
+        Armv8.4-A but available as an optional extension to Armv8.2-A and
+        Armv8.3-A. The new extension can be used by specifying the +fp16fml
+        architectural extension on Armv8.2-A and Armv8.3-A. On Armv8.4-A
+        the instructions can be enabled by specifying +fp16.
+      * New cryptographic instructions have been added as optional
+        extensions to Armv8.2-A and newer. These instructions can be
+        enabled with:
+           + +sha3 New SHA3 and SHA2 instructions from Armv8.4-A. This
+             implies +sha2.
+           + +sm4 New SM3 and SM4 instructions from Armv8.4-A.
+      * The Scalable Vector Extension (SVE) is now supported as an optional
+        extension to the Armv8.2-A architecture and newer. This support
+        includes automatic vectorization with SVE instructions, but it does
+        not yet include the SVE Arm C Language Extensions (ACLE). It can be
+        enabled by specifying the +sve architecture extension (for example,
+        -march=armv8.2-a+sve). By default, the generated code works with
+        all vector lengths, but it can be made specific to N-bit vectors
+        using -msve-vector-bits=N.
+      * Support has been added for the following processors (GCC
+        identifiers in parentheses):
+           + Arm Cortex-A75 (cortex-a75).
+           + Arm Cortex-A55 (cortex-a55).
+           + Arm Cortex-A55/Cortex-A75 DynamIQ big.LITTLE
+             (cortex-a75.cortex-a55).
+        The GCC identifiers can be used as arguments to the -mcpu or -mtune
+        options, for example: -mcpu=cortex-a75 or -mtune=cortex-a75 or as
+        arguments to the equivalent target attributes and pragmas.
+ 
+   ARC
+ 
+      * Added support for:
+           + Fast interrupts.
+           + Naked functions.
+           + aux variable attributes.
+           + uncached type qualifier.
+           + 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
+ 
+      * The -mfpu option now takes a new option setting of -mfpu=auto. When
+        set to this the floating-point and SIMD settings are derived from
+        the settings of the -mcpu or -march options. The internal CPU
+        configurations have been updated with information about the
+        permitted floating-point configurations supported. See the user
+        guide for further information about the extended option syntax for
+        controlling architectural extensions via the -march option.
+        -mfpu=auto is now the default setting unless the compiler has been
+        configured with an explicit --with-fpu option.
+      * The -march and -mcpu options now accept optional extensions to the
+        architecture or CPU option, allowing the user to enable or disable
+        any such extensions supported by that architecture or CPU such as
+        (but not limited to) floating-point and AdvancedSIMD. For example:
+        the option -mcpu=cortex-a53+nofp will generate code for the
+        Cortex-A53 processor with no floating-point support. This, in
+        combination with the new -mfpu=auto option, provides a
+        straightforward way of specifying a valid build target through a
+        single -mcpu or -march option. The -mtune option accepts the same
+        arguments as -mcpu but only the CPU name has an effect on tuning.
+        The architecture extensions do not have any effect. For details of
+        what extensions a particular architecture or CPU option supports
+        please refer to the [22]documentation.
+      * The -mstructure-size-boundary option has been deprecated and will
+        be removed in a future release.
+      * The default link behavior for Armv6 and Armv7-R targets has been
+        changed to produce BE8 format when generating big-endian images. A
+        new flag -mbe32 can be used to force the linker to produce legacy
+        BE32 format images. There is no change of behavior for Armv6-M and
+        other Armv7 or later targets: these already defaulted to BE8
+        format. This change brings GCC into alignment with other compilers
+        for the ARM architecture.
+      * The Armv8-R architecture is now supported. It can be used by
+        specifying the -march=armv8-r option.
+      * The Armv8.3-A architecture is now supported. It can be used by
+        specifying the -march=armv8.3-a option.
+      * The Armv8.4-A architecture is now supported. It can be used by
+        specifying the -march=armv8.4-a option.
+      * The Dot Product instructions are now supported as an optional
+        extension to the Armv8.2-A architecture and newer and are mandatory
+        on Armv8.4-A. The extension can be used by specifying the +dotprod
+        architecture extension. E.g. -march=armv8.2-a+dotprod.
+      * Support for setting extensions and architectures using the GCC
+        target pragma and attribute has been added. It can be used by
+        specifying #pragma GCC target ("arch=..."), #pragma GCC target
+        ("+extension"), __attribute__((target("arch=..."))) or
+        __attribute__((target("+extension"))).
+      * New Armv8.4-A FP16 Floating Point Multiplication Variant
+        instructions have been added. These instructions are mandatory in
+        Armv8.4-A but available as an optional extension to Armv8.2-A and
+        Armv8.3-A. The new extension can be used by specifying the +fp16fml
+        architectural extension on Armv8.2-A and Armv8.3-A. On Armv8.4-A
+        the instructions can be enabled by specifying +fp16.
+      * Support has been added for the following processors (GCC
+        identifiers in parentheses):
+           + Arm Cortex-A75 (cortex-a75).
+           + Arm Cortex-A55 (cortex-a55).
+           + Arm Cortex-A55/Cortex-A75 DynamIQ big.LITTLE
+             (cortex-a75.cortex-a55).
+           + Arm Cortex-R52 for Armv8-R (cortex-r52).
+        The GCC identifiers can be used as arguments to the -mcpu or -mtune
+        options, for example: -mcpu=cortex-a75 or -mtune=cortex-r52 or as
+        arguments to the equivalent target attributes and pragmas.
+ 
+   AVR
+ 
+      * The AVR port now supports the following XMEGA-like devices:
+ 
+      ATtiny212, ATtiny214, ATtiny412, ATtiny414, ATtiny416, ATtiny417,
+      ATtiny814, ATtiny816, ATtiny817, ATtiny1614, ATtiny1616, ATtiny1617,
+      ATtiny3214, ATtiny3216, ATtiny3217
+        The new devices are listed under [23]-mmcu=avrxmega3.
+           + These devices see flash memory in the RAM address space, so
+             that features like PROGMEM and __flash are not needed any more
+             (as opposed to other AVR families for which read-only data
+             will be located in RAM except special, non-standard features
+             are used to locate and access such data). This requires that
+             the compiler is used with Binutils 2.29 or newer so that
+             [24]read-only data will be located in flash memory.
+           + A new command-line option -mshort-calls is supported. This
+             option is used internally for multilib selection of the
+             avrxmega3 variants. It is not an optimization option. Do not
+             set it by hand.
+      * The compiler now generates [25]efficient interrupt service routine
+        (ISR) prologues and epilogues. This is achieved by using the new
+        [26]AVR pseudo instruction __gcc_isr which is supported and
+        resolved by the GNU assembler.
+           + As the __gcc_isr pseudo-instruction will be resolved by the
+             assembler, inline assembly is transparent to the process. This
+             means that when inline assembly uses an instruction like INC
+             that clobbers the condition code, then the assembler will
+             detect this and generate an appropriate ISR prologue /
+             epilogue chunk to save / restore SREG as needed.
+           + A new command-line option -mno-gas-isr-prologues disables the
+             generation of the __gcc_isr pseudo instruction. Any non-naked
+             ISR will save and restore SREG, tmp_reg and zero_reg, no
+             matter whether the respective register is clobbered or used.
+           + The feature is turned on per default for all optimization
+             levels except for -O0 and -Og. It is explicitly enabled by
+             means of option -mgas-isr-prologues.
+           + Support has been added for a new [27]AVR function attribute
+             no_gccisr. It can be used to disable __gcc_isr pseudo
+             instruction generation for individual ISRs.
+           + This optimization is only available if GCC is configured with
+             GNU Binutils 2.29 or newer; or at least with a version of
+             Binutils that implements feature [28]PR21683.
+      * The compiler no more saves / restores registers in main; the effect
+        is the same as if attribute OS_task was specified for main. This
+        optimization can be switched off by the new command-line option
+        -mno-main-is-OS_task.
+ 
+   IA-32/x86-64
+ 
+      * The x86 port now supports the naked function attribute.
+      * Better tuning for znver1 and Intel Core based CPUs.
+      * Vectorization cost metrics has been reworked leading to significant
+        improvements on some benchmarks.
+      * GCC now supports the Intel CPU named Cannonlake through
+        -march=cannonlake. The switch enables the AVX512VBMI, AVX512IFMA
+        and SHA ISA extensions.
+      * GCC now supports the Intel CPU named and Icelake through
+        -march=icelake. The switch enables the AVX512VNNI, GFNI, VAES,
+        AVX512VBMI2, VPCLMULQDQ, AVX512BITALG, RDPID and AVX512VPOPCNTDQ
+        ISA extensions.
+      * GCC now supports the Intel Control-flow Enforcement Technology
+        (CET) extension through -mibt, -mshstk, -mcet options. One of these
+        options has to accompany the -fcf-protection option to enable code
+        instrumentation for control-flow protection.
+ 
+   NDS32
+ 
+      * New command-line options -mext-perf, -mext-perf2, and -mext-string
+        have been added for performance extension instructions.
+ 
+   Nios II
+ 
+      * The Nios II back end has been improved to generate better-optimized
+        code. Changes include switching to LRA, more accurate cost models,
+        and more compact code for addressing static variables.
+      * New command-line options -mgprel-sec= and -mr0rel-sec= have been
+        added.
+      * The stack-smashing protection options are now enabled on Nios II.
+ 
+   PA-RISC
+ 
+      * The default call ABI on 32-bit linux has been changed from callee
+        copies to caller copies. This affects objects larger than eight
+        bytes passed by value. The goal is to improve compatibility with
+        x86 and resolve issues with OpenMP.
+      * Other PA-RISC targets are unchanged.
+ 
+   PowerPC / PowerPC64 / RS6000
+ 
+      * The PowerPC SPE support is split off to a separate powerpcspe port.
+        The separate port is deprecated and might be removed in a future
+        release.
+      * The Paired Single support (as used on some PPC750 CPUs, -mpaired,
+        powerpc*-*-linux*paired*) is deprecated and will be removed in a
+        future release.
+      * The Xilinx floating point support (-mxilinx-fpu,
+        powerpc-xilinx-eabi*) is deprecated and will be removed in a future
+        release.
+      * Support for using big-endian AltiVec intrinsics on a little-endian
+        target (-maltivec=be) is deprecated and will be removed in a future
+        release.
+ 
+   Tile
+ 
+      * The TILE-Gx port is deprecated and will be removed in a future
+        release.
+ 
+ Operating Systems
+ 
+   Windows
+ 
+      * GCC on Microsoft Windows can now be configured via
+        --enable-mingw-wildcard or --disable-mingw-wildcard to force a
+        specific behavior for GCC itself with regards to supporting the
+        wildcard character. Prior versions of GCC would follow the
+        configuration of the MinGW runtime. This behavior can still be
+        obtained by not using the above options or by using
+        --enable-mingw-wildcard=platform.
+ 
+ Improvements for plugin authors
+ 
+      * Plugins can now register a callback hook for when comments are
+        encountered by the C and C++ compilers, e.g. allowing for plugins
+        to handle documentation markup in code comments.
+      * The gdbinit support script for debugging GCC now has a
+        break-on-diagnostic command, providing an easy way to trigger a
+        breakpoint whenever a diagnostic is emitted.
+      * The API for creating fix-it hints now supports newlines, and for
+        emitting mutually incompatible fix-it hints for one diagnostic.
+ 
+ Other significant improvements
+ 
+      *
+ 
+ 
+     For questions related to the use of GCC, please consult these web
+     pages and the [29]GCC manuals. If that fails, the
+     [30]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 [31]gcc@gcc.gnu.org. All of [32]our lists have public
+     archives.
+ 
+    Copyright (C) [33]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 [34]maintained by the GCC team. Last modified
+    2018-04-27[35].
+ 
+ References
+ 
+    1. http://gcc.gnu.org/gcc-8/porting_to.html
+    2. http://gcc.gnu.org/onlinedocs/index.html#current
+    3. https://gcc.gnu.org/ml/gcc/2018-04/msg00102.html
+    4. https://gcc.gnu.org/onlinedocs/gcc-8.1.0/gcc/Warning-Options.html#index-Wmultistatement-macros
+    5. https://gcc.gnu.org/onlinedocs/gcc-8.1.0/gcc/Warning-Options.html#index-Wstringop-truncation
+    6. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82944
+    7. https://gcc.gnu.org/onlinedocs/gcc-8.1.0/gcc/Warning-Options.html#index-Wif-not-aligned
+    8. https://gcc.gnu.org/onlinedocs/gcc-8.1.0/gcc/Common-Variable-Attributes.html#index-warn_005fif_005fnot_005faligned-variable-attribute
+    9. https://gcc.gnu.org/onlinedocs/gcc-8.1.0/gcc/Warning-Options.html#index-Wmissing-attributes
+   10. https://gcc.gnu.org/onlinedocs/gcc-8.1.0/gcc/Warning-Options.html#index-Wpacked-not-aligned
+   11. https://gcc.gnu.org/onlinedocs/gcc-8.1.0/gcc/Warning-Options.html#index-Warray-bounds
+   12. https://gcc.gnu.org/onlinedocs/gcc-8.1.0/gcc/Warning-Options.html#index-Wrestrict
+   13. https://gcc.gnu.org/onlinedocs/gcc-8.1.0/gcc/Warning-Options.html#index-Wformat-overflow
+   14. https://gcc.gnu.org/onlinedocs/gcc-8.1.0/gcc/Warning-Options.html#index-Wformat-truncation
+   15. https://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Dialect-Options.html#index-Wclass-memaccess
+   16. http://gcc.gnu.org/projects/cxx-status.html#cxx2a
+   17. https://gcc.gnu.org/onlinedocs/jit/topics/types.html#gcc_jit_type_get_vector
+   18. https://gcc.gnu.org/onlinedocs/jit/topics/expressions.html#gcc_jit_context_new_rvalue_from_vector
+   19. https://gcc.gnu.org/onlinedocs/jit/topics/types.html#gcc_jit_type_get_aligned
+   20. https://gcc.gnu.org/onlinedocs/jit/topics/function-pointers.html#gcc_jit_function_get_address
+   21. https://gcc.gnu.org/onlinedocs/jit/topics/contexts.html#gcc_jit_context_dump_reproducer_to_file
+   22. https://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html#ARM-Options
+   23. https://gcc.gnu.org/onlinedocs/gcc/AVR-Options.html
+   24. https://sourceware.org/PR21472
+   25. https://gcc.gnu.org/PR20296
+   26. https://sourceware.org/binutils/docs-2.29/as/AVR-Pseudo-Instructions.html
+   27. https://gcc.gnu.org/onlinedocs/gcc/AVR-Function-Attributes.html
+   28. https://sourceware.org/PR21683
+   29. https://gcc.gnu.org/onlinedocs/
+   30. mailto:gcc-help@gcc.gnu.org
+   31. mailto:gcc@gcc.gnu.org
+   32. https://gcc.gnu.org/lists.html
+   33. https://www.fsf.org/
+   34. https://gcc.gnu.org/about.html
+   35. http://validator.w3.org/check/referer
+ ======================================================================
+ http://gcc.gnu.org/gcc-7/index.html
                                GCC 7 Release Series
  
     Jan 25, 2018
*************** References and Acknowledgements
*** 60,66 ****
     provided this notice is preserved.
  
     These pages are [19]maintained by the GCC team. Last modified
!    2018-01-25[20].
  
  References
  
--- 1126,1132 ----
     provided this notice is preserved.
  
     These pages are [19]maintained by the GCC team. Last modified
!    2018-01-30[20].
  
  References
  
*************** References
*** 81,92 ****
    15. mailto:gcc-help@gcc.gnu.org
    16. mailto:gcc@gcc.gnu.org
    17. https://gcc.gnu.org/lists.html
!   18. http://www.fsf.org/
    19. https://gcc.gnu.org/about.html
    20. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-7/changes.html
- 
                                GCC 7 Release Series
                          Changes, New Features, and Fixes
  
--- 1147,1157 ----
    15. mailto:gcc-help@gcc.gnu.org
    16. mailto:gcc@gcc.gnu.org
    17. https://gcc.gnu.org/lists.html
!   18. https://www.fsf.org/
    19. https://gcc.gnu.org/about.html
    20. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-7/changes.html
                                GCC 7 Release Series
                          Changes, New Features, and Fixes
  
*************** New Languages and Language specific impr
*** 223,231 ****
  
     Support for processing BRIG 1.0 files was added in this release. BRIG
     is a binary format for HSAIL (Heterogeneous System Architecture
!    Intermediate Language). The BRIG frontend can be used for implementing
     HSAIL "finalizers" (compilation of HSAIL to a native ISA) for
!    gcc-supported targets. An implementation of an HSAIL runtime library,
     libhsail-rt is also included.
  
    C family
--- 1288,1296 ----
  
     Support for processing BRIG 1.0 files was added in this release. BRIG
     is a binary format for HSAIL (Heterogeneous System Architecture
!    Intermediate Language). The BRIG front end can be used for implementing
     HSAIL "finalizers" (compilation of HSAIL to a native ISA) for
!    GCC-supported targets. An implementation of an HSAIL runtime library,
     libhsail-rt is also included.
  
    C family
*************** New Languages and Language specific impr
*** 271,277 ****
            + -Wduplicate-decl-specifier warns when a declaration has
              duplicate const, volatile, restrict or _Atomic specifier. This
              warning is enabled by -Wall.
!      * GCC 6's C and C++ frontends were able to offer suggestions for
         misspelled field names:
  
  spellcheck-fields.cc:52:13: error: 'struct s' has no member named 'colour'; did
--- 1336,1342 ----
            + -Wduplicate-decl-specifier warns when a declaration has
              duplicate const, volatile, restrict or _Atomic specifier. This
              warning is enabled by -Wall.
!      * GCC 6's C and C++ front ends were able to offer suggestions for
         misspelled field names:
  
  spellcheck-fields.cc:52:13: error: 'struct s' has no member named 'colour'; did
*************** gned'?
*** 314,320 ****
              ^~~~~~
              signed
  
!        and, in the C frontend, named initializers:
  
  test.c:7:20: error: 'struct s' has no member named 'colour'; did you mean 'color
  '?
--- 1379,1385 ----
              ^~~~~~
              signed
  
!        and, in the C front end, named initializers:
  
  test.c:7:20: error: 'struct s' has no member named 'colour'; did you mean 'color
  '?
*************** void f (int n)
*** 455,461 ****
      d = alloca (n);
    else
      d = malloc (n);
!   ...
  }
  
  warning: argument to 'alloca may be too large due to conversion from 'int' to 'l
--- 1520,1526 ----
      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=
*** 468,474 ****
  void f (size_t n)
  {
    char *d = alloca (n);
!   ...
  }
  
  warning: unbounded use of 'alloca' [-Walloca-larger-than=]
--- 1533,1539 ----
  void f (size_t n)
  {
    char *d = alloca (n);
!   …
  }
  
  warning: unbounded use of 'alloca' [-Walloca-larger-than=]
*************** void f (unsigned x)
*** 516,522 ****
  {
    char d[4];
    snprintf (d, sizeof d, "%#02x", x & 0xff);
!   ...
  }
  
  warning: 'snprintf' output may be truncated before the last format character [-W
--- 1581,1587 ----
  {
    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)
*** 544,550 ****
    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
--- 1609,1615 ----
    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
*** 682,691 ****
            + std::as_const, std::not_fn,
              std::has_unique_object_representations, constexpr
              std::addressof.
!        Thanks to Daniel Kruegler, 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 Franc,ois Dumont.
  
    Fortran
  
--- 1747,1756 ----
            + 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
  
*************** Fortran runtime error: Loop iterates inf
*** 743,749 ****
  
    Java (GCJ)
  
!    The GCC Java frontend and associated libjava runtime library have been
     removed from GCC.
  
  libgccjit
--- 1808,1814 ----
  
    Java (GCJ)
  
!    The GCC Java front end and associated libjava runtime library have been
     removed from GCC.
  
  libgccjit
*************** const int* get_address (unsigned idx)
*** 855,861 ****
  }
  
       * 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 [18]built-in function that inserts n
--- 1920,1926 ----
  }
  
       * 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 [18]built-in function that inserts n
*************** x-early-inliner-iterations'?
*** 1064,1070 ****
         to further improve the reliability of the compiler:
            + GCC now has an internal unit-testing API and a suite of tests
              for programmatic self-testing of subsystems.
!           + GCC's C frontend has been extended so that it can parse dumps
              of GCC's internal representations, allowing for DejaGnu tests
              that more directly exercise specific optimization passes. This
              covers both the [21]GIMPLE representation (for testing
--- 2129,2135 ----
         to further improve the reliability of the compiler:
            + GCC now has an internal unit-testing API and a suite of tests
              for programmatic self-testing of subsystems.
!           + GCC's C front end has been extended so that it can parse dumps
              of GCC's internal representations, allowing for DejaGnu tests
              that more directly exercise specific optimization passes. This
              covers both the [21]GIMPLE representation (for testing
*************** GCC 7.3
*** 1113,1118 ****
--- 2178,2191 ----
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
+   Target Specific Changes
+ 
+     SPARC
+ 
+      * Work arounds for the four [26]LEON3FT errata GRLIB-TN-0010..0013
+        have been added. Relevant errata are activated by the target
+        specific -mfix-ut699, -mfix-ut700 and -mfix-gr712rc switches.
+ 
    Operating Systems
  
      RTEMS
*************** GCC 7.3
*** 1121,1138 ****
  
  
      For questions related to the use of GCC, please consult these web
!     pages and the [26]GCC manuals. If that fails, the
!     [27]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 [28]gcc@gcc.gnu.org. All of [29]our lists have public
      archives.
  
!    Copyright (C) [30]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 [31]maintained by the GCC team. Last modified
!    2018-01-23[32].
  
  References
  
--- 2194,2211 ----
  
  
      For questions related to the use of GCC, please consult these web
!     pages and the [27]GCC manuals. If that fails, the
!     [28]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 [29]gcc@gcc.gnu.org. All of [30]our lists have public
      archives.
  
!    Copyright (C) [31]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 [32]maintained by the GCC team. Last modified
!    2018-04-07[33].
  
  References
  
*************** References
*** 1161,1176 ****
    23. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=7.0
    24. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=7.2
    25. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=7.3
!   26. https://gcc.gnu.org/onlinedocs/
!   27. mailto:gcc-help@gcc.gnu.org
!   28. mailto:gcc@gcc.gnu.org
!   29. https://gcc.gnu.org/lists.html
!   30. http://www.fsf.org/
!   31. https://gcc.gnu.org/about.html
!   32. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-6/index.html
- 
                                GCC 6 Release Series
  
     July 4, 2017
--- 2234,2249 ----
    23. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=7.0
    24. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=7.2
    25. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=7.3
!   26. https://www.gaisler.com/index.php/information/app-tech-notes
!   27. https://gcc.gnu.org/onlinedocs/
!   28. mailto:gcc-help@gcc.gnu.org
!   29. mailto:gcc@gcc.gnu.org
!   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-6/index.html
                                GCC 6 Release Series
  
     July 4, 2017
*************** References and Acknowledgements
*** 1227,1233 ****
     provided this notice is preserved.
  
     These pages are [21]maintained by the GCC team. Last modified
!    2017-07-04[22].
  
  References
  
--- 2300,2306 ----
     provided this notice is preserved.
  
     These pages are [21]maintained by the GCC team. Last modified
!    2018-01-30[22].
  
  References
  
*************** References
*** 1250,1261 ****
    17. mailto:gcc-help@gcc.gnu.org
    18. mailto:gcc@gcc.gnu.org
    19. https://gcc.gnu.org/lists.html
!   20. http://www.fsf.org/
    21. https://gcc.gnu.org/about.html
    22. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-6/changes.html
- 
                                GCC 6 Release Series
                          Changes, New Features, and Fixes
  
--- 2323,2333 ----
    17. mailto:gcc-help@gcc.gnu.org
    18. mailto:gcc@gcc.gnu.org
    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-6/changes.html
                                GCC 6 Release Series
                          Changes, New Features, and Fixes
  
*************** Operating Systems
*** 1950,1956 ****
     provided this notice is preserved.
  
     These pages are [30]maintained by the GCC team. Last modified
!    2017-07-04[31].
  
  References
  
--- 3022,3028 ----
     provided this notice is preserved.
  
     These pages are [30]maintained by the GCC team. Last modified
!    2018-01-30[31].
  
  References
  
*************** References
*** 1982,1993 ****
    26. mailto:gcc-help@gcc.gnu.org
    27. mailto:gcc@gcc.gnu.org
    28. https://gcc.gnu.org/lists.html
!   29. http://www.fsf.org/
    30. https://gcc.gnu.org/about.html
    31. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-5/index.html
- 
                                GCC 5 Release Series
  
     October 10, 2017
--- 3054,3064 ----
    26. mailto:gcc-help@gcc.gnu.org
    27. mailto:gcc@gcc.gnu.org
    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-5/index.html
                                GCC 5 Release Series
  
     October 10, 2017
*************** References and Acknowledgements
*** 2047,2053 ****
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2017-10-10[24].
  
  References
  
--- 3118,3124 ----
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2018-01-30[24].
  
  References
  
*************** References
*** 2072,2083 ****
    19. mailto:gcc-help@gcc.gnu.org
    20. mailto:gcc@gcc.gnu.org
    21. https://gcc.gnu.org/lists.html
!   22. http://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
  
--- 3143,3153 ----
    19. mailto:gcc-help@gcc.gnu.org
    20. mailto:gcc@gcc.gnu.org
    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
  
*************** libgccjit
*** 2570,2576 ****
     functions from bytecode to machine code.
  
     The library can also be used for ahead-of-time compilation, enabling
!    GCC to be plugged into a pre-existing frontend. An example of using
     this to build a compiler for an esoteric language we'll refer to as
     "brainf" can be seen [37]here.
  
--- 3640,3646 ----
     functions from bytecode to machine code.
  
     The library can also be used for ahead-of-time compilation, enabling
!    GCC to be plugged into a pre-existing front end. An example of using
     this to build a compiler for an esoteric language we'll refer to as
     "brainf" can be seen [37]here.
  
*************** Target Specific Changes
*** 2958,2971 ****
     provided this notice is preserved.
  
     These pages are [51]maintained by the GCC team. Last modified
!    2017-10-10[52].
  
  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. http://www.openmp.org/wp-content/uploads/OpenMP4.0.0.pdf
     6. http://www.openmp.org/wp-content/uploads/OpenMP4.0.0.Examples.pdf
     7. https://gcc.gnu.org/wiki/OpenACC
--- 4028,4041 ----
     provided this notice is preserved.
  
     These pages are [51]maintained by the GCC team. Last modified
!    2018-04-02[52].
  
  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. http://www.openmp.org/wp-content/uploads/OpenMP4.0.0.pdf
     6. http://www.openmp.org/wp-content/uploads/OpenMP4.0.0.Examples.pdf
     7. https://gcc.gnu.org/wiki/OpenACC
*************** References
*** 3011,3022 ****
    47. mailto:gcc-help@gcc.gnu.org
    48. mailto:gcc@gcc.gnu.org
    49. https://gcc.gnu.org/lists.html
!   50. http://www.fsf.org/
    51. https://gcc.gnu.org/about.html
    52. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.9/index.html
- 
                               GCC 4.9 Release Series
  
     Aug 3, 2016
--- 4081,4091 ----
    47. mailto:gcc-help@gcc.gnu.org
    48. mailto:gcc@gcc.gnu.org
    49. https://gcc.gnu.org/lists.html
!   50. https://www.fsf.org/
    51. https://gcc.gnu.org/about.html
    52. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.9/index.html
                               GCC 4.9 Release Series
  
     Aug 3, 2016
*************** References and Acknowledgements
*** 3078,3084 ****
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2016-09-30[24].
  
  References
  
--- 4147,4153 ----
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2018-01-30[24].
  
  References
  
*************** References
*** 3103,3114 ****
    19. mailto:gcc-help@gcc.gnu.org
    20. mailto:gcc@gcc.gnu.org
    21. https://gcc.gnu.org/lists.html
!   22. http://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
  
--- 4172,4182 ----
    19. mailto:gcc-help@gcc.gnu.org
    20. mailto:gcc@gcc.gnu.org
    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
  
*************** New Languages and Language specific impr
*** 3222,3242 ****
         -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
--- 4290,4310 ----
         -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++; };
*** 3341,3351 ****
  // 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
!        S:4.1.2 and S:5.1.1 of [16]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.
  
  // the following two function declarations are equivalent
  auto incr(auto x) { return x++; }
--- 4409,4419 ----
  // 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 [16]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.
  
  // the following two function declarations are equivalent
  auto incr(auto x) { return x++; }
*************** auto incr(T x) { return x++; }
*** 3435,3441 ****
         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
--- 4503,4509 ----
         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
*** 3718,3724 ****
     provided this notice is preserved.
  
     These pages are [34]maintained by the GCC team. Last modified
!    2016-12-28[35].
  
  References
  
--- 4786,4792 ----
     provided this notice is preserved.
  
     These pages are [34]maintained by the GCC team. Last modified
!    2018-01-30[35].
  
  References
  
*************** References
*** 3754,3765 ****
    30. mailto:gcc-help@gcc.gnu.org
    31. mailto:gcc@gcc.gnu.org
    32. https://gcc.gnu.org/lists.html
!   33. http://www.fsf.org/
    34. https://gcc.gnu.org/about.html
    35. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.8/index.html
- 
                               GCC 4.8 Release Series
  
     June 23, 2015
--- 4822,4832 ----
    30. mailto:gcc-help@gcc.gnu.org
    31. mailto:gcc@gcc.gnu.org
    32. https://gcc.gnu.org/lists.html
!   33. https://www.fsf.org/
    34. https://gcc.gnu.org/about.html
    35. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.8/index.html
                               GCC 4.8 Release Series
  
     June 23, 2015
*************** References and Acknowledgements
*** 3824,3830 ****
     provided this notice is preserved.
  
     These pages are [25]maintained by the GCC team. Last modified
!    2016-09-30[26].
  
  References
  
--- 4891,4897 ----
     provided this notice is preserved.
  
     These pages are [25]maintained by the GCC team. Last modified
!    2018-01-30[26].
  
  References
  
*************** References
*** 3851,3862 ****
    21. mailto:gcc-help@gcc.gnu.org
    22. mailto:gcc@gcc.gnu.org
    23. https://gcc.gnu.org/lists.html
!   24. http://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
  
--- 4918,4928 ----
    21. mailto:gcc-help@gcc.gnu.org
    22. mailto:gcc@gcc.gnu.org
    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
  
*************** New Languages and Language specific impr
*** 3985,3992 ****
         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; })
  
--- 5051,5058 ----
         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
*** 4110,4117 ****
              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
--- 5176,5183 ----
              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
*** 4138,4144 ****
       * 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
--- 5204,5210 ----
       * 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
*** 4150,4156 ****
         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
--- 5216,5222 ----
         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
*** 4245,4252 ****
      }
         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;
--- 5311,5318 ----
      }
         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
*** 4580,4586 ****
     provided this notice is preserved.
  
     These pages are [43]maintained by the GCC team. Last modified
!    2017-02-27[44].
  
  References
  
--- 5646,5652 ----
     provided this notice is preserved.
  
     These pages are [43]maintained by the GCC team. Last modified
!    2018-01-30[44].
  
  References
  
*************** References
*** 4609,4615 ****
    23. https://gcc.gnu.org/onlinedocs/gfortran/TMPDIR.html
    24. https://gcc.gnu.org/wiki/Fortran2003Status
    25. https://gcc.gnu.org/wiki/TS29113Status
!   26. https://gcc.gnu.org/viewcvs/trunk/libgfortran/libgfortran.h?content-type=text%2Fplain&view=co
    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
--- 5675,5681 ----
    23. https://gcc.gnu.org/onlinedocs/gfortran/TMPDIR.html
    24. https://gcc.gnu.org/wiki/Fortran2003Status
    25. https://gcc.gnu.org/wiki/TS29113Status
!   26. https://gcc.gnu.org/viewcvs/trunk/libgfortran/libgfortran.h?content-type=text/plain&view=co
    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
*************** References
*** 4625,4636 ****
    39. mailto:gcc-help@gcc.gnu.org
    40. mailto:gcc@gcc.gnu.org
    41. https://gcc.gnu.org/lists.html
!   42. http://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
  
     June 12, 2014
--- 5691,5701 ----
    39. mailto:gcc-help@gcc.gnu.org
    40. mailto:gcc@gcc.gnu.org
    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
  
     June 12, 2014
*************** References and Acknowledgements
*** 4692,4698 ****
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2016-09-30[24].
  
  References
  
--- 5757,5763 ----
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2018-01-30[24].
  
  References
  
*************** References
*** 4717,4728 ****
    19. mailto:gcc-help@gcc.gnu.org
    20. mailto:gcc@gcc.gnu.org
    21. https://gcc.gnu.org/lists.html
!   22. http://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
  
--- 5782,5792 ----
    19. mailto:gcc-help@gcc.gnu.org
    20. mailto:gcc@gcc.gnu.org
    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
  
*************** long double pi = 180.0_degrees;
*** 5053,5059 ****
  template <class T> using Ptr = T*;
  Ptr<int> ip;  // decltype(ip) is int*
  
!      * Thanks to Ville Voutilainen and Pedro Lamarao, G++ now implements
         [13]C++11 delegating constructors.
  
  struct A {
--- 6117,6123 ----
  template <class T> using Ptr = T*;
  Ptr<int> ip;  // decltype(ip) is int*
  
!      * Thanks to Ville Voutilainen and Pedro Lamarão, G++ now implements
         [13]C++11 delegating constructors.
  
  struct A {
*************** New Targets and Target Specific Improvem
*** 5247,5253 ****
  
       * GCC now supports the XMEGA architecture. This requires GNU binutils
         2.22 or later.
!      * Support for the [36]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)
--- 6311,6317 ----
  
       * GCC now supports the XMEGA architecture. This requires GNU binutils
         2.22 or later.
!      * Support for the [36]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)
*** 5291,5297 ****
         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
--- 6355,6361 ----
         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)
*** 5303,5309 ****
            + 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.
--- 6367,6373 ----
            + 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.1
*** 5477,5483 ****
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
!    The Go frontend in the 4.7.1 release fully supports the [46]Go 1
     language standard.
  
  GCC 4.7.2
--- 6541,6547 ----
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
!    The Go front end in the 4.7.1 release fully supports the [46]Go 1
     language standard.
  
  GCC 4.7.2
*************** GCC 4.7.4
*** 5514,5520 ****
     provided this notice is preserved.
  
     These pages are [55]maintained by the GCC team. Last modified
!    2017-03-03[56].
  
  References
  
--- 6578,6584 ----
     provided this notice is preserved.
  
     These pages are [55]maintained by the GCC team. Last modified
!    2018-04-02[56].
  
  References
  
*************** References
*** 5543,5549 ****
    23. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfaggressive-function-elimination_007d-270
    24. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Error-and-Warning-Options.html#index-g_t_0040code_007bWreal-q-constant_007d-149
    25. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/SELECTED_005fREAL_005fKIND.html
!   26. https://msdn.microsoft.com/en-us/library/bb787181%28v=vs.85%29.aspx
    27. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Debugging-Options.html#index-g_t_0040code_007bfno-backtrace_007d-183
    28. https://gcc.gnu.org/wiki/Fortran2003Status
    29. https://gcc.gnu.org/wiki/OOP
--- 6607,6613 ----
    23. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfaggressive-function-elimination_007d-270
    24. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Error-and-Warning-Options.html#index-g_t_0040code_007bWreal-q-constant_007d-149
    25. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/SELECTED_005fREAL_005fKIND.html
!   26. https://msdn.microsoft.com/en-us/library/bb787181(v=vs.85).aspx
    27. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Debugging-Options.html#index-g_t_0040code_007bfno-backtrace_007d-183
    28. https://gcc.gnu.org/wiki/Fortran2003Status
    29. https://gcc.gnu.org/wiki/OOP
*************** References
*** 5556,5562 ****
    36. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/Named-Address-Spaces.html
    37. http://nongnu.org/avr-libc/
    38. https://gcc.gnu.org/PR54461
!   39. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/AVR-Built%5f002din-Functions.html
    40. https://sites.google.com/site/x32abi/
    41. http://www.dwarfstd.org/ShowIssue.php?issue=100909.1
    42. http://www.dwarfstd.org/ShowIssue.php?issue=100909.2
--- 6620,6626 ----
    36. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/Named-Address-Spaces.html
    37. http://nongnu.org/avr-libc/
    38. https://gcc.gnu.org/PR54461
!   39. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/AVR-Built_002din-Functions.html
    40. https://sites.google.com/site/x32abi/
    41. http://www.dwarfstd.org/ShowIssue.php?issue=100909.1
    42. http://www.dwarfstd.org/ShowIssue.php?issue=100909.2
*************** References
*** 5571,5582 ****
    51. mailto:gcc-help@gcc.gnu.org
    52. mailto:gcc@gcc.gnu.org
    53. https://gcc.gnu.org/lists.html
!   54. http://www.fsf.org/
    55. https://gcc.gnu.org/about.html
    56. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.6/index.html
- 
                               GCC 4.6 Release Series
  
     April 12, 2013
--- 6635,6645 ----
    51. mailto:gcc-help@gcc.gnu.org
    52. mailto:gcc@gcc.gnu.org
    53. https://gcc.gnu.org/lists.html
!   54. https://www.fsf.org/
    55. https://gcc.gnu.org/about.html
    56. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.6/index.html
                               GCC 4.6 Release Series
  
     April 12, 2013
*************** References and Acknowledgements
*** 5638,5644 ****
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2016-09-30[24].
  
  References
  
--- 6701,6707 ----
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2018-01-30[24].
  
  References
  
*************** References
*** 5663,5674 ****
    19. mailto:gcc-help@gcc.gnu.org
    20. mailto:gcc@gcc.gnu.org
    21. https://gcc.gnu.org/lists.html
!   22. http://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
  
--- 6726,6736 ----
    19. mailto:gcc-help@gcc.gnu.org
    20. mailto:gcc@gcc.gnu.org
    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
  
*************** New Languages and Language specific impr
*** 6008,6014 ****
  
       * [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 Franc,ois
         Dumont.
       * Atomic operations used for reference-counting are annotated so that
         they can be understood by race detectors such as Helgrind, see
--- 7070,7076 ----
  
       * [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
*** 6063,6069 ****
              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.
--- 7125,7131 ----
              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
*** 6118,6124 ****
              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.
  
--- 7180,7186 ----
              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
*** 6563,6569 ****
     provided this notice is preserved.
  
     These pages are [29]maintained by the GCC team. Last modified
!    2016-11-27[30].
  
  References
  
--- 7625,7631 ----
     provided this notice is preserved.
  
     These pages are [29]maintained by the GCC team. Last modified
!    2018-01-30[30].
  
  References
  
*************** References
*** 6594,6605 ****
    25. mailto:gcc-help@gcc.gnu.org
    26. mailto:gcc@gcc.gnu.org
    27. https://gcc.gnu.org/lists.html
!   28. http://www.fsf.org/
    29. https://gcc.gnu.org/about.html
    30. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.5/index.html
- 
                               GCC 4.5 Release Series
  
     Jul 2, 2012
--- 7656,7666 ----
    25. mailto:gcc-help@gcc.gnu.org
    26. mailto:gcc@gcc.gnu.org
    27. https://gcc.gnu.org/lists.html
!   28. https://www.fsf.org/
    29. https://gcc.gnu.org/about.html
    30. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.5/index.html
                               GCC 4.5 Release Series
  
     Jul 2, 2012
*************** References and Acknowledgements
*** 6661,6667 ****
     provided this notice is preserved.
  
     These pages are [18]maintained by the GCC team. Last modified
!    2016-09-30[19].
  
  References
  
--- 7722,7728 ----
     provided this notice is preserved.
  
     These pages are [18]maintained by the GCC team. Last modified
!    2018-01-30[19].
  
  References
  
*************** References
*** 6681,6692 ****
    14. mailto:gcc-help@gcc.gnu.org
    15. mailto:gcc@gcc.gnu.org
    16. https://gcc.gnu.org/lists.html
!   17. http://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
  
--- 7742,7752 ----
    14. mailto:gcc-help@gcc.gnu.org
    15. mailto:gcc@gcc.gnu.org
    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
  
*************** General Optimizer Improvements
*** 6754,6761 ****
         file rather than in the current working directory. This allows the
         user to get debugging dumps when doing parallel builds without two
         builds of the same filename interfering with each other.
!      * GCC has been integrated with the [6]MPC library. This allows GCC to
!        evaluate complex arithmetic at compile time [7]more accurately. It
         also allows GCC to evaluate calls to complex built-in math
         functions having constant arguments and replace them at compile
         time with their mathematically equivalent results. In doing so, GCC
--- 7814,7821 ----
         file rather than in the current working directory. This allows the
         user to get debugging dumps when doing parallel builds without two
         builds of the same filename interfering with each other.
!      * GCC has been integrated with the MPC library. This allows GCC to
!        evaluate complex arithmetic at compile time [6]more accurately. It
         also allows GCC to evaluate calls to complex built-in math
         functions having constant arguments and replace them at compile
         time with their mathematically equivalent results. In doing so, GCC
*************** General Optimizer Improvements
*** 6768,6774 ****
         catanh, ccos, ccosh, cexp, clog, cpow, csin, csinh, csqrt, ctan,
         and ctanh. The float and long double variants of these functions
         (e.g. csinf and csinl) are also handled.
!      * A new link-time optimizer has been added ([8]-flto). When this
         option is used, GCC generates a bytecode representation of each
         input file and writes it to specially-named sections in each object
         file. When the object files are linked together, all the function
--- 7828,7834 ----
         catanh, ccos, ccosh, cexp, clog, cpow, csin, csinh, csqrt, ctan,
         and ctanh. The float and long double variants of these functions
         (e.g. csinf and csinl) are also handled.
!      * A new link-time optimizer has been added ([7]-flto). When this
         option is used, GCC generates a bytecode representation of each
         input file and writes it to specially-named sections in each object
         file. When the object files are linked together, all the function
*************** General Optimizer Improvements
*** 6779,6793 ****
         the generated code. To use the link-timer optimizer, -flto needs to
         be specified at compile time and during the final link. If the
         program does not require any symbols to be exported, it is possible
!        to combine -flto and the experimental [9]-fwhopr with
!        [10]-fwhole-program to allow the interprocedural optimizers to use
         more aggressive assumptions.
       * The automatic parallelization pass was enhanced to support
         parallelization of outer loops.
       * Automatic parallelization can be enabled as part of Graphite. In
         addition to -ftree-parallelize-loops=, specify
         -floop-parallelize-all to enable the Graphite-based optimization.
!      * The infrastructure for optimizing based on [11]restrict qualified
         pointers has been rewritten and should result in code generation
         improvements. Optimizations based on restrict qualified pointers
         are now also available when using -fno-strict-aliasing.
--- 7839,7853 ----
         the generated code. To use the link-timer optimizer, -flto needs to
         be specified at compile time and during the final link. If the
         program does not require any symbols to be exported, it is possible
!        to combine -flto and the experimental [8]-fwhopr with
!        [9]-fwhole-program to allow the interprocedural optimizers to use
         more aggressive assumptions.
       * The automatic parallelization pass was enhanced to support
         parallelization of outer loops.
       * Automatic parallelization can be enabled as part of Graphite. In
         addition to -ftree-parallelize-loops=, specify
         -floop-parallelize-all to enable the Graphite-based optimization.
!      * The infrastructure for optimizing based on [10]restrict qualified
         pointers has been rewritten and should result in code generation
         improvements. Optimizations based on restrict qualified pointers
         are now also available when using -fno-strict-aliasing.
*************** New Languages and Language specific impr
*** 6892,6898 ****
  
    C++
  
!      * Improved [12]experimental support for the upcoming C++0x ISO C++
         standard, including support for raw strings, lambda expressions and
         explicit type conversion operators.
       * When printing the name of a class template specialization, G++ will
--- 7952,7958 ----
  
    C++
  
!      * Improved [11]experimental support for the upcoming C++0x ISO C++
         standard, including support for raw strings, lambda expressions and
         explicit type conversion operators.
       * When printing the name of a class template specialization, G++ will
*************** New Languages and Language specific impr
*** 6920,6932 ****
       * In C++0x mode local and anonymous classes are now allowed as
         template arguments, and in declarations of variables and functions
         with linkage, so long as any such declaration that is used is also
!        defined ([13]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 [14]DR 176. Previously G++ did not support using
         the injected-class-name of a template base class as a type name,
         and lookup of the name found the declaration of the template in the
         enclosing scope. Now lookup of the name finds the
--- 7980,7992 ----
       * In C++0x mode local and anonymous classes are now allowed as
         template arguments, and in declarations of variables and functions
         with linkage, so long as any such declaration that is used is also
!        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
         the injected-class-name of a template base class as a type name,
         and lookup of the name found the declaration of the template in the
         enclosing scope. Now lookup of the name finds the
*************** New Languages and Language specific impr
*** 6964,6970 ****
            + Existing facilities now exploit explicit operators and the
              newly implemented core C++0x features.
            + The header <cstdatomic> has been renamed to <atomic>.
!      * An experimental [15]profile mode has been added. This is an
         implementation of many C++ standard library constructs with an
         additional analysis layer that gives performance improvement advice
         based on recognition of suboptimal usage patterns. For example,
--- 8024,8030 ----
            + Existing facilities now exploit explicit operators and the
              newly implemented core C++0x features.
            + The header <cstdatomic> has been renamed to <atomic>.
!      * An experimental [14]profile mode has been added. This is an
         implementation of many C++ standard library constructs with an
         additional analysis layer that gives performance improvement advice
         based on recognition of suboptimal usage patterns. For example,
*************** vector-size: improvement = 3: call stack
*** 6986,6992 ****
         These constructs can be substituted for the normal libstdc++
         constructs on a piecemeal basis, or all existing components can be
         transformed via the -D_GLIBCXX_PROFILE macro.
!      * [16]Support for decimal floating-point arithmetic (aka ISO C++ TR
         24733) has been added. This support is in header file
         <decimal/decimal>, uses namespace std::decimal, and includes
         classes decimal32, decimal64, and decimal128.
--- 8046,8052 ----
         These constructs can be substituted for the normal libstdc++
         constructs on a piecemeal basis, or all existing components can be
         transformed via the -D_GLIBCXX_PROFILE macro.
!      * [15]Support for decimal floating-point arithmetic (aka ISO C++ TR
         24733) has been added. This support is in header file
         <decimal/decimal>, uses namespace std::decimal, and includes
         classes decimal32, decimal64, and decimal128.
*************** vector-size: improvement = 3: call stack
*** 6996,7002 ****
         components that simplify the internal representation and present a
         more intuitive view of components when used with
         appropriately-advanced versions of GDB. For more information,
!        please consult the more [17]detailed description.
       * The default behavior for comparing typeinfo names has changed, so
         in <typeinfo>, __GXX_MERGED_TYPEINFO_NAMES now defaults to zero.
       * The new -static-libstdc++ option directs g++ to link the C++
--- 8056,8062 ----
         components that simplify the internal representation and present a
         more intuitive view of components when used with
         appropriately-advanced versions of GDB. For more information,
!        please consult the more [16]detailed description.
       * The default behavior for comparing typeinfo names has changed, so
         in <typeinfo>, __GXX_MERGED_TYPEINFO_NAMES now defaults to zero.
       * The new -static-libstdc++ option directs g++ to link the C++
*************** vector-size: improvement = 3: call stack
*** 7005,7015 ****
  
    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
!        option ([18]added in 4.4).
       * The -finit-real= option now also supports the value snan for
         signaling not-a-number; to be effective, one additionally needs to
         enable trapping (e.g. via -ffpe-trap=). Note: Compile-time
--- 8065,8075 ----
  
    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
!        option ([17]added in 4.4).
       * The -finit-real= option now also supports the value snan for
         signaling not-a-number; to be effective, one additionally needs to
         enable trapping (e.g. via -ffpe-trap=). Note: Compile-time
*************** vector-size: improvement = 3: call stack
*** 7027,7033 ****
       * The run-time checking -fcheck=bounds now warns about invalid string
         lengths of character dummy arguments. Additionally, more
         compile-time checks have been added.
!      * The new option [19]-fno-protect-parens has been added; if set, the
         compiler may reorder REAL and COMPLEX expressions without regard to
         parentheses.
       * GNU Fortran no longer links against libgfortranbegin. As before,
--- 8087,8093 ----
       * The run-time checking -fcheck=bounds now warns about invalid string
         lengths of character dummy arguments. Additionally, more
         compile-time checks have been added.
!      * The new option [18]-fno-protect-parens has been added; if set, the
         compiler may reorder REAL and COMPLEX expressions without regard to
         parentheses.
       * GNU Fortran no longer links against libgfortranbegin. As before,
*************** vector-size: improvement = 3: call stack
*** 7035,7041 ****
         which is invoked by the main function. However, main is now
         generated and put in the same object file as MAIN__. For the time
         being, libgfortranbegin still exists for backward compatibility.
!        For details see the new [20]Mixed-Language Programming chapter in
         the manual.
       * The I/O library was restructured for performance and cleaner code.
       * Array assignments and WHERE are now run in parallel when OpenMP's
--- 8095,8101 ----
         which is invoked by the main function. However, main is now
         generated and put in the same object file as MAIN__. For the time
         being, libgfortranbegin still exists for backward compatibility.
!        For details see the new [19]Mixed-Language Programming chapter in
         the manual.
       * The I/O library was restructured for performance and cleaner code.
       * Array assignments and WHERE are now run in parallel when OpenMP's
*************** vector-size: improvement = 3: call stack
*** 7047,7053 ****
       * More Fortran 2003 and Fortran 2008 mathematical functions can now
         be used as initialization expressions.
       * Some extended attributes such as STDCALL are now supported via the
!        [21]GCC$ compiler directive.
       * For Fortran 77 compatibility: If -fno-sign-zero is used, the SIGN
         intrinsic behaves now as if zero were always positive.
       * For legacy compatibiliy: On Cygwin and MinGW, the special files
--- 8107,8113 ----
       * More Fortran 2003 and Fortran 2008 mathematical functions can now
         be used as initialization expressions.
       * Some extended attributes such as STDCALL are now supported via the
!        [20]GCC$ compiler directive.
       * For Fortran 77 compatibility: If -fno-sign-zero is used, the SIGN
         intrinsic behaves now as if zero were always positive.
       * For legacy compatibiliy: On Cygwin and MinGW, the special files
*************** vector-size: improvement = 3: call stack
*** 7073,7079 ****
              procedure pointer with PASS attribute now have to use CLASS in
              line with the Fortran 2003 standard; the workaround to use
              TYPE is no longer supported.
!           + [22]Experimental, incomplete support for polymorphism,
              including CLASS, SELECT TYPE and dynamic dispatch of
              type-bound procedure calls. Some features do not work yet such
              as unlimited polymorphism (CLASS(*)).
--- 8133,8139 ----
              procedure pointer with PASS attribute now have to use CLASS in
              line with the Fortran 2003 standard; the workaround to use
              TYPE is no longer supported.
!           + [21]Experimental, incomplete support for polymorphism,
              including CLASS, SELECT TYPE and dynamic dispatch of
              type-bound procedure calls. Some features do not work yet such
              as unlimited polymorphism (CLASS(*)).
*************** Other significant improvements
*** 7275,7288 ****
  
  GCC 4.5.1
  
!    This is the [23]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.5.1 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
    All languages
  
!      * GCC's new link-time optimizer ([24]-flto) now also works on a few
         non-ELF targets:
            + Cygwin (*-cygwin*)
            + MinGW (*-mingw*)
--- 8335,8348 ----
  
  GCC 4.5.1
  
!    This is the [22]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.5.1 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
    All languages
  
!      * GCC's new link-time optimizer ([23]-flto) now also works on a few
         non-ELF targets:
            + Cygwin (*-cygwin*)
            + MinGW (*-mingw*)
*************** GCC 4.5.1
*** 7292,7305 ****
  
  GCC 4.5.2
  
!    This is the [25]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.5.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 4.5.3
  
!    This is the [26]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.5.3 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
--- 8352,8365 ----
  
  GCC 4.5.2
  
!    This is the [24]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.5.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 4.5.3
  
!    This is the [25]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.5.3 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
*************** GCC 4.5.3
*** 7316,7380 ****
  
  GCC 4.5.4
  
!    This is the [27]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.5.4 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 [28]GCC manuals. If that fails, the
!     [29]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 [30]gcc@gcc.gnu.org. All of [31]our lists have public
      archives.
  
!    Copyright (C) [32]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 [33]maintained by the GCC team. Last modified
!    2017-02-28[34].
  
  References
  
!    1. http://www.multiprecision.org/
     2. https://gcc.gnu.org/install/prerequisites.html
     3. https://gcc.gnu.org/ml/gcc/2010-01/msg00510.html
     4. http://gcc.gnu.org/gcc-4.4/changes.html#obsoleted
     5. http://gcc.gnu.org/gcc-4.5/changes.html#x86
!    6. http://www.multiprecision.org/
!    7. https://gcc.gnu.org/PR30789
!    8. https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-flto-801
!    9. https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-fwhopr-802
!   10. https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-fwhole-program-800
!   11. https://gcc.gnu.org/onlinedocs/gcc/Restricted-Pointers.html
!   12. http://gcc.gnu.org/gcc-4.5/cxx0x_status.html
!   13. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#757
!   14. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#176
!   15. https://gcc.gnu.org/onlinedocs/libstdc++/manual/profile_mode.html
!   16. https://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.tr24733
!   17. https://sourceware.org/gdb/wiki/STLSupport
!   18. http://gcc.gnu.org/gcc-4.4/changes.html
!   19. https://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html
!   20. https://gcc.gnu.org/onlinedocs/gfortran/Mixed-Language-Programming.html
!   21. https://gcc.gnu.org/onlinedocs/gfortran/GNU-Fortran-Compiler-Directives.html
!   22. https://gcc.gnu.org/wiki/OOP
!   23. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.1
!   24. https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-flto-801
!   25. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.2
!   26. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.3
!   27. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.4
!   28. https://gcc.gnu.org/onlinedocs/
!   29. mailto:gcc-help@gcc.gnu.org
!   30. mailto:gcc@gcc.gnu.org
!   31. https://gcc.gnu.org/lists.html
!   32. http://www.fsf.org/
!   33. https://gcc.gnu.org/about.html
!   34. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.4/index.html
- 
                               GCC 4.4 Release Series
  
     March 13, 2012
--- 8376,8438 ----
  
  GCC 4.5.4
  
!    This is the [26]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.5.4 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 [27]GCC manuals. If that fails, the
!     [28]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 [29]gcc@gcc.gnu.org. All of [30]our lists have public
      archives.
  
!    Copyright (C) [31]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 [32]maintained by the GCC team. Last modified
!    2018-03-10[33].
  
  References
  
!    1. http://www.multiprecision.org/mpc/
     2. https://gcc.gnu.org/install/prerequisites.html
     3. https://gcc.gnu.org/ml/gcc/2010-01/msg00510.html
     4. http://gcc.gnu.org/gcc-4.4/changes.html#obsoleted
     5. http://gcc.gnu.org/gcc-4.5/changes.html#x86
!    6. https://gcc.gnu.org/PR30789
!    7. https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-flto-801
!    8. https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-fwhopr-802
!    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
!   17. http://gcc.gnu.org/gcc-4.4/changes.html
!   18. https://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html
!   19. https://gcc.gnu.org/onlinedocs/gfortran/Mixed-Language-Programming.html
!   20. https://gcc.gnu.org/onlinedocs/gfortran/GNU-Fortran-Compiler-Directives.html
!   21. https://gcc.gnu.org/wiki/OOP
!   22. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.1
!   23. https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-flto-801
!   24. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.2
!   25. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.3
!   26. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.4
!   27. https://gcc.gnu.org/onlinedocs/
!   28. mailto:gcc-help@gcc.gnu.org
!   29. mailto:gcc@gcc.gnu.org
!   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
  
     March 13, 2012
*************** References and Acknowledgements
*** 7445,7451 ****
     provided this notice is preserved.
  
     These pages are [21]maintained by the GCC team. Last modified
!    2016-09-30[22].
  
  References
  
--- 8503,8509 ----
     provided this notice is preserved.
  
     These pages are [21]maintained by the GCC team. Last modified
!    2018-01-30[22].
  
  References
  
*************** References
*** 7468,7479 ****
    17. mailto:gcc-help@gcc.gnu.org
    18. mailto:gcc@gcc.gnu.org
    19. https://gcc.gnu.org/lists.html
!   20. http://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
  
--- 8526,8536 ----
    17. mailto:gcc-help@gcc.gnu.org
    18. mailto:gcc@gcc.gnu.org
    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
  
*************** GCC 4.4.7
*** 8076,8082 ****
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2016-12-28[24].
  
  References
  
--- 9133,9139 ----
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2018-01-30[24].
  
  References
  
*************** References
*** 8101,8112 ****
    19. mailto:gcc-help@gcc.gnu.org
    20. mailto:gcc@gcc.gnu.org
    21. https://gcc.gnu.org/lists.html
!   22. http://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
  
     Jun 27, 2011
--- 9158,9168 ----
    19. mailto:gcc-help@gcc.gnu.org
    20. mailto:gcc@gcc.gnu.org
    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
  
     Jun 27, 2011
*************** References and Acknowledgements
*** 8174,8180 ****
     provided this notice is preserved.
  
     These pages are [20]maintained by the GCC team. Last modified
!    2016-09-30[21].
  
  References
  
--- 9230,9236 ----
     provided this notice is preserved.
  
     These pages are [20]maintained by the GCC team. Last modified
!    2018-01-30[21].
  
  References
  
*************** References
*** 8196,8207 ****
    16. mailto:gcc-help@gcc.gnu.org
    17. mailto:gcc@gcc.gnu.org
    18. https://gcc.gnu.org/lists.html
!   19. http://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
  
--- 9252,9262 ----
    16. mailto:gcc-help@gcc.gnu.org
    17. mailto:gcc@gcc.gnu.org
    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
  
*************** GCC 4.3.6
*** 8980,8986 ****
     provided this notice is preserved.
  
     These pages are [33]maintained by the GCC team. Last modified
!    2017-02-07[34].
  
  References
  
--- 10035,10041 ----
     provided this notice is preserved.
  
     These pages are [33]maintained by the GCC team. Last modified
!    2018-01-30[34].
  
  References
  
*************** References
*** 9015,9026 ****
    29. mailto:gcc-help@gcc.gnu.org
    30. mailto:gcc@gcc.gnu.org
    31. https://gcc.gnu.org/lists.html
!   32. http://www.fsf.org/
    33. https://gcc.gnu.org/about.html
    34. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.2/index.html
- 
                               GCC 4.2 Release Series
  
     May 19, 2008
--- 10070,10080 ----
    29. mailto:gcc-help@gcc.gnu.org
    30. mailto:gcc@gcc.gnu.org
    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.2/index.html
                               GCC 4.2 Release Series
  
     May 19, 2008
*************** References and Acknowledgements
*** 9082,9088 ****
     provided this notice is preserved.
  
     These pages are [18]maintained by the GCC team. Last modified
!    2016-09-30[19].
  
  References
  
--- 10136,10142 ----
     provided this notice is preserved.
  
     These pages are [18]maintained by the GCC team. Last modified
!    2018-01-30[19].
  
  References
  
*************** References
*** 9102,9113 ****
    14. mailto:gcc-help@gcc.gnu.org
    15. mailto:gcc@gcc.gnu.org
    16. https://gcc.gnu.org/lists.html
!   17. http://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
  
--- 10156,10166 ----
    14. mailto:gcc-help@gcc.gnu.org
    15. mailto:gcc@gcc.gnu.org
    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
  
*************** New Languages and Language specific impr
*** 9225,9231 ****
           return 0;
  
         To suppress the warning in valid cases, use { } instead.
!      * The C++ frontend now also produces strict aliasing warnings when
         -fstrict-aliasing -Wstrict-aliasing is in effect.
  
      Runtime Library (libstdc++)
--- 10278,10284 ----
           return 0;
  
         To suppress the warning in valid cases, use { } instead.
!      * The C++ front end now also produces strict aliasing warnings when
         -fstrict-aliasing -Wstrict-aliasing is in effect.
  
      Runtime Library (libstdc++)
*************** Other significant improvements
*** 9411,9417 ****
     provided this notice is preserved.
  
     These pages are [11]maintained by the GCC team. Last modified
!    2017-02-07[12].
  
  References
  
--- 10464,10470 ----
     provided this notice is preserved.
  
     These pages are [11]maintained by the GCC team. Last modified
!    2018-04-02[12].
  
  References
  
*************** References
*** 9424,9435 ****
     7. mailto:gcc-help@gcc.gnu.org
     8. mailto:gcc@gcc.gnu.org
     9. https://gcc.gnu.org/lists.html
!   10. http://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
  
     February 13, 2007
--- 10477,10487 ----
     7. mailto:gcc-help@gcc.gnu.org
     8. mailto:gcc@gcc.gnu.org
     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
  
     February 13, 2007
*************** References and Acknowledgements
*** 9485,9491 ****
     provided this notice is preserved.
  
     These pages are [16]maintained by the GCC team. Last modified
!    2016-09-30[17].
  
  References
  
--- 10537,10543 ----
     provided this notice is preserved.
  
     These pages are [16]maintained by the GCC team. Last modified
!    2018-01-30[17].
  
  References
  
*************** References
*** 9503,9514 ****
    12. mailto:gcc-help@gcc.gnu.org
    13. mailto:gcc@gcc.gnu.org
    14. https://gcc.gnu.org/lists.html
!   15. http://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
  
--- 10555,10565 ----
    12. mailto:gcc-help@gcc.gnu.org
    13. mailto:gcc@gcc.gnu.org
    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
  
*************** GCC 4.1.2
*** 10049,10055 ****
     provided this notice is preserved.
  
     These pages are [12]maintained by the GCC team. Last modified
!    2016-01-30[13].
  
  References
  
--- 11100,11106 ----
     provided this notice is preserved.
  
     These pages are [12]maintained by the GCC team. Last modified
!    2018-01-30[13].
  
  References
  
*************** References
*** 10063,10074 ****
     8. mailto:gcc-help@gcc.gnu.org
     9. mailto:gcc@gcc.gnu.org
    10. https://gcc.gnu.org/lists.html
!   11. http://www.fsf.org/
    12. https://gcc.gnu.org/about.html
    13. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.0/index.html
- 
                               GCC 4.0 Release Series
  
     January 31, 2007
--- 11114,11124 ----
     8. mailto:gcc-help@gcc.gnu.org
     9. mailto:gcc@gcc.gnu.org
    10. https://gcc.gnu.org/lists.html
!   11. https://www.fsf.org/
    12. https://gcc.gnu.org/about.html
    13. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.0/index.html
                               GCC 4.0 Release Series
  
     January 31, 2007
*************** References and Acknowledgements
*** 10130,10136 ****
     provided this notice is preserved.
  
     These pages are [18]maintained by the GCC team. Last modified
!    2016-09-30[19].
  
  References
  
--- 11180,11186 ----
     provided this notice is preserved.
  
     These pages are [18]maintained by the GCC team. Last modified
!    2018-01-30[19].
  
  References
  
*************** References
*** 10150,10161 ****
    14. mailto:gcc-help@gcc.gnu.org
    15. mailto:gcc@gcc.gnu.org
    16. https://gcc.gnu.org/lists.html
!   17. http://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
  
--- 11200,11210 ----
    14. mailto:gcc-help@gcc.gnu.org
    15. mailto:gcc@gcc.gnu.org
    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
  
*************** New Languages and Language specific impr
*** 10265,10271 ****
  
    C++
  
!      * When compiling without optimizations (-O0), the C++ frontend is
         much faster than in any previous versions of GCC. Independent
         testers have measured speed-ups up to 25% in real-world production
         code, compared to the 3.4 family (which was already the fastest
--- 11314,11320 ----
  
    C++
  
!      * When compiling without optimizations (-O0), the C++ front end is
         much faster than in any previous versions of GCC. Independent
         testers have measured speed-ups up to 25% in real-world production
         code, compared to the 3.4 family (which was already the fastest
*************** class N::A {
*** 10424,10430 ****
       * Many bugs have been fixed, tools and documentation improved.
       * To compile Ada from the sources, install an older working Ada
         compiler and then use --enable-languages=ada at configuration time,
!        since the Ada frontend is not currently activated by default. See
         the [10]Installing GCC for details.
  
  New Targets and Target Specific Improvements
--- 11473,11479 ----
       * Many bugs have been fixed, tools and documentation improved.
       * To compile Ada from the sources, install an older working Ada
         compiler and then use --enable-languages=ada at configuration time,
!        since the Ada front end is not currently activated by default. See
         the [10]Installing GCC for details.
  
  New Targets and Target Specific Improvements
*************** GCC 4.0.4
*** 10657,10663 ****
     provided this notice is preserved.
  
     These pages are [21]maintained by the GCC team. Last modified
!    2017-03-29[22].
  
  References
  
--- 11706,11712 ----
     provided this notice is preserved.
  
     These pages are [21]maintained by the GCC team. Last modified
!    2018-04-02[22].
  
  References
  
*************** References
*** 10680,10691 ****
    17. mailto:gcc-help@gcc.gnu.org
    18. mailto:gcc@gcc.gnu.org
    19. https://gcc.gnu.org/lists.html
!   20. http://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
  
     May 26, 2006
--- 11729,11739 ----
    17. mailto:gcc-help@gcc.gnu.org
    18. mailto:gcc@gcc.gnu.org
    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
  
     May 26, 2006
*************** References and Acknowledgements
*** 10758,10764 ****
     provided this notice is preserved.
  
     These pages are [22]maintained by the GCC team. Last modified
!    2016-09-30[23].
  
  References
  
--- 11806,11812 ----
     provided this notice is preserved.
  
     These pages are [22]maintained by the GCC team. Last modified
!    2018-01-30[23].
  
  References
  
*************** References
*** 10782,10800 ****
    18. mailto:gcc-help@gcc.gnu.org
    19. mailto:gcc@gcc.gnu.org
    20. https://gcc.gnu.org/lists.html
!   21. http://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
  
     The final release in the 3.4 release series is [1]GCC 3.4.6. The series
     is now closed.
  
!    GCC 3.4 has [2]many improvements in the C++ frontend. Before reporting
     a bug, please make sure it's really GCC, and not your code, that is
     broken.
  
--- 11830,11847 ----
    18. mailto:gcc-help@gcc.gnu.org
    19. mailto:gcc@gcc.gnu.org
    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
  
     The final release in the 3.4 release series is [1]GCC 3.4.6. The series
     is now closed.
  
!    GCC 3.4 has [2]many improvements in the C++ front end. Before reporting
     a bug, please make sure it's really GCC, and not your code, that is
     broken.
  
*************** GCC 3.4.6
*** 12547,12553 ****
     provided this notice is preserved.
  
     These pages are [416]maintained by the GCC team. Last modified
!    2016-12-30[417].
  
  References
  
--- 13594,13600 ----
     provided this notice is preserved.
  
     These pages are [416]maintained by the GCC team. Last modified
!    2018-04-02[417].
  
  References
  
*************** References
*** 12560,12566 ****
     7. http://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
--- 13607,13613 ----
     7. http://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. 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
*************** References
*** 12576,12582 ****
    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
--- 13623,13629 ----
    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
*** 12965,12976 ****
   412. mailto:gcc-help@gcc.gnu.org
   413. mailto:gcc@gcc.gnu.org
   414. https://gcc.gnu.org/lists.html
!  415. http://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
  
     May 03, 2005
--- 14012,14022 ----
   412. mailto:gcc-help@gcc.gnu.org
   413. mailto:gcc@gcc.gnu.org
   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
  
     May 03, 2005
*************** References and Acknowledgements
*** 13044,13050 ****
     provided this notice is preserved.
  
     These pages are [21]maintained by the GCC team. Last modified
!    2016-09-30[22].
  
  References
  
--- 14090,14096 ----
     provided this notice is preserved.
  
     These pages are [21]maintained by the GCC team. Last modified
!    2018-01-30[22].
  
  References
  
*************** References
*** 13067,13078 ****
    17. mailto:gcc-help@gcc.gnu.org
    18. mailto:gcc@gcc.gnu.org
    19. https://gcc.gnu.org/lists.html
!   20. http://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
  
--- 14113,14123 ----
    17. mailto:gcc-help@gcc.gnu.org
    18. mailto:gcc@gcc.gnu.org
    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
  
*************** GCC 3.3.6
*** 14420,14426 ****
     provided this notice is preserved.
  
     These pages are [556]maintained by the GCC team. Last modified
!    2016-01-30[557].
  
  References
  
--- 15465,15471 ----
     provided this notice is preserved.
  
     These pages are [556]maintained by the GCC team. Last modified
!    2018-01-30[557].
  
  References
  
*************** References
*** 14978,14989 ****
   552. mailto:gcc-help@gcc.gnu.org
   553. mailto:gcc@gcc.gnu.org
   554. https://gcc.gnu.org/lists.html
!  555. http://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
  
     April 25, 2003
--- 16023,16033 ----
   552. mailto:gcc-help@gcc.gnu.org
   553. mailto:gcc@gcc.gnu.org
   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
  
     April 25, 2003
*************** References and Acknowledgements
*** 15051,15057 ****
     provided this notice is preserved.
  
     These pages are [17]maintained by the GCC team. Last modified
!    2016-09-30[18].
  
  References
  
--- 16095,16101 ----
     provided this notice is preserved.
  
     These pages are [17]maintained by the GCC team. Last modified
!    2018-01-30[18].
  
  References
  
*************** References
*** 15070,15081 ****
    13. mailto:gcc-help@gcc.gnu.org
    14. mailto:gcc@gcc.gnu.org
    15. https://gcc.gnu.org/lists.html
!   16. http://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
  
--- 16114,16124 ----
    13. mailto:gcc-help@gcc.gnu.org
    14. mailto:gcc@gcc.gnu.org
    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
  
*************** GCC 3.2
*** 15675,15681 ****
     provided this notice is preserved.
  
     These pages are [251]maintained by the GCC team. Last modified
!    2016-01-30[252].
  
  References
  
--- 16718,16724 ----
     provided this notice is preserved.
  
     These pages are [251]maintained by the GCC team. Last modified
!    2018-01-30[252].
  
  References
  
*************** References
*** 15928,15939 ****
   247. mailto:gcc-help@gcc.gnu.org
   248. mailto:gcc@gcc.gnu.org
   249. https://gcc.gnu.org/lists.html
!  250. http://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
  
     July 27, 2002
--- 16971,16981 ----
   247. mailto:gcc-help@gcc.gnu.org
   248. mailto:gcc@gcc.gnu.org
   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
  
     July 27, 2002
*************** http://gcc.gnu.org/gcc-3.1/index.html
*** 15981,15987 ****
     provided this notice is preserved.
  
     These pages are [14]maintained by the GCC team. Last modified
!    2016-09-30[15].
  
  References
  
--- 17023,17029 ----
     provided this notice is preserved.
  
     These pages are [14]maintained by the GCC team. Last modified
!    2018-01-30[15].
  
  References
  
*************** References
*** 15997,16008 ****
    10. mailto:gcc-help@gcc.gnu.org
    11. mailto:gcc@gcc.gnu.org
    12. https://gcc.gnu.org/lists.html
!   13. http://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
  
--- 17039,17049 ----
    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
    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
  
*************** New Targets and Target Specific Improvem
*** 16220,16226 ****
            + 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,
--- 17261,17267 ----
            + 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
*** 16336,16342 ****
     provided this notice is preserved.
  
     These pages are [13]maintained by the GCC team. Last modified
!    2017-12-10[14].
  
  References
  
--- 17377,17383 ----
     provided this notice is preserved.
  
     These pages are [13]maintained by the GCC team. Last modified
!    2018-01-30[14].
  
  References
  
*************** References
*** 16351,16362 ****
     9. mailto:gcc-help@gcc.gnu.org
    10. mailto:gcc@gcc.gnu.org
    11. https://gcc.gnu.org/lists.html
!   12. http://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
  
     February 20, 2002
--- 17392,17402 ----
     9. mailto:gcc-help@gcc.gnu.org
    10. mailto:gcc@gcc.gnu.org
    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
  
     February 20, 2002
*************** Previous 3.0.x Releases
*** 16411,16417 ****
     provided this notice is preserved.
  
     These pages are [14]maintained by the GCC team. Last modified
!    2016-09-30[15].
  
  References
  
--- 17451,17457 ----
     provided this notice is preserved.
  
     These pages are [14]maintained by the GCC team. Last modified
!    2018-01-30[15].
  
  References
  
*************** References
*** 16427,16438 ****
    10. mailto:gcc-help@gcc.gnu.org
    11. mailto:gcc@gcc.gnu.org
    12. https://gcc.gnu.org/lists.html
!   13. http://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
--- 17467,17477 ----
    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
    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
*************** Other significant improvements
*** 16603,16609 ****
     provided this notice is preserved.
  
     These pages are [18]maintained by the GCC team. Last modified
!    2016-08-23[19].
  
  References
  
--- 17642,17648 ----
     provided this notice is preserved.
  
     These pages are [18]maintained by the GCC team. Last modified
!    2018-01-30[19].
  
  References
  
*************** References
*** 16623,16634 ****
    14. mailto:gcc-help@gcc.gnu.org
    15. mailto:gcc@gcc.gnu.org
    16. https://gcc.gnu.org/lists.html
!   17. http://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
--- 17662,17672 ----
    14. mailto:gcc-help@gcc.gnu.org
    15. mailto:gcc@gcc.gnu.org
    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
*************** http://gcc.gnu.org/gcc-3.0/caveats.html
*** 16675,16681 ****
     provided this notice is preserved.
  
     These pages are [7]maintained by the GCC team. Last modified
!    2016-01-30[8].
  
  References
  
--- 17713,17719 ----
     provided this notice is preserved.
  
     These pages are [7]maintained by the GCC team. Last modified
!    2018-01-30[8].
  
  References
  
*************** References
*** 16684,16695 ****
     3. mailto:gcc-help@gcc.gnu.org
     4. mailto:gcc@gcc.gnu.org
     5. https://gcc.gnu.org/lists.html
!    6. http://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
  
     March 16, 2001: The GNU project and the GCC developers are pleased to
--- 17722,17732 ----
     3. mailto:gcc-help@gcc.gnu.org
     4. mailto:gcc@gcc.gnu.org
     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
  
     March 16, 2001: The GNU project and the GCC developers are pleased to
*************** References and Acknowledgements
*** 16758,16764 ****
     provided this notice is preserved.
  
     These pages are [15]maintained by the GCC team. Last modified
!    2016-09-30[16].
  
  References
  
--- 17795,17801 ----
     provided this notice is preserved.
  
     These pages are [15]maintained by the GCC team. Last modified
!    2018-01-30[16].
  
  References
  
*************** References
*** 16775,16786 ****
    11. mailto:gcc-help@gcc.gnu.org
    12. mailto:gcc@gcc.gnu.org
    13. https://gcc.gnu.org/lists.html
!   14. http://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:
--- 17812,17822 ----
    11. mailto:gcc-help@gcc.gnu.org
    12. mailto:gcc@gcc.gnu.org
    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:
*************** Additional Changes in GCC 2.95.3
*** 17024,17030 ****
     provided this notice is preserved.
  
     These pages are [22]maintained by the GCC team. Last modified
!    2016-12-29[23].
  
  References
  
--- 18060,18066 ----
     provided this notice is preserved.
  
     These pages are [22]maintained by the GCC team. Last modified
!    2018-01-30[23].
  
  References
  
*************** References
*** 17048,17059 ****
    18. mailto:gcc-help@gcc.gnu.org
    19. mailto:gcc@gcc.gnu.org
    20. https://gcc.gnu.org/lists.html
!   21. http://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
--- 18084,18094 ----
    18. mailto:gcc-help@gcc.gnu.org
    19. mailto:gcc@gcc.gnu.org
    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
*************** http://gcc.gnu.org/gcc-2.95/caveats.html
*** 17108,17114 ****
     provided this notice is preserved.
  
     These pages are [7]maintained by the GCC team. Last modified
!    2016-01-30[8].
  
  References
  
--- 18143,18149 ----
     provided this notice is preserved.
  
     These pages are [7]maintained by the GCC team. Last modified
!    2018-01-30[8].
  
  References
  
*************** References
*** 17117,17128 ****
     3. mailto:gcc-help@gcc.gnu.org
     4. mailto:gcc@gcc.gnu.org
     5. https://gcc.gnu.org/lists.html
!    6. http://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.
--- 18152,18162 ----
     3. mailto:gcc-help@gcc.gnu.org
     4. mailto:gcc@gcc.gnu.org
     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.
*************** http://gcc.gnu.org/egcs-1.1/index.html
*** 17330,17336 ****
     provided this notice is preserved.
  
     These pages are [15]maintained by the GCC team. Last modified
!    2016-01-30[16].
  
  References
  
--- 18364,18370 ----
     provided this notice is preserved.
  
     These pages are [15]maintained by the GCC team. Last modified
!    2018-01-30[16].
  
  References
  
*************** References
*** 17347,17358 ****
    11. mailto:gcc-help@gcc.gnu.org
    12. mailto:gcc@gcc.gnu.org
    13. https://gcc.gnu.org/lists.html
!   14. http://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
--- 18381,18391 ----
    11. mailto:gcc-help@gcc.gnu.org
    12. mailto:gcc@gcc.gnu.org
    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
*************** http://gcc.gnu.org/egcs-1.1/features.htm
*** 17430,17436 ****
     provided this notice is preserved.
  
     These pages are [10]maintained by the GCC team. Last modified
!    2016-01-30[11].
  
  References
  
--- 18463,18469 ----
     provided this notice is preserved.
  
     These pages are [10]maintained by the GCC team. Last modified
!    2018-01-30[11].
  
  References
  
*************** References
*** 17442,17453 ****
     6. mailto:gcc-help@gcc.gnu.org
     7. mailto:gcc@gcc.gnu.org
     8. https://gcc.gnu.org/lists.html
!    9. http://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
--- 18475,18485 ----
     6. mailto:gcc-help@gcc.gnu.org
     7. mailto:gcc@gcc.gnu.org
     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
*************** http://gcc.gnu.org/egcs-1.1/caveats.html
*** 17485,17491 ****
     provided this notice is preserved.
  
     These pages are [6]maintained by the GCC team. Last modified
!    2016-01-30[7].
  
  References
  
--- 18517,18523 ----
     provided this notice is preserved.
  
     These pages are [6]maintained by the GCC team. Last modified
!    2018-01-30[7].
  
  References
  
*************** References
*** 17493,17504 ****
     2. mailto:gcc-help@gcc.gnu.org
     3. mailto:gcc@gcc.gnu.org
     4. https://gcc.gnu.org/lists.html
!    5. http://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.
--- 18525,18535 ----
     2. mailto:gcc-help@gcc.gnu.org
     3. mailto:gcc@gcc.gnu.org
     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.
*************** http://gcc.gnu.org/egcs-1.0/index.html
*** 17682,17688 ****
     provided this notice is preserved.
  
     These pages are [10]maintained by the GCC team. Last modified
!    2016-01-30[11].
  
  References
  
--- 18713,18719 ----
     provided this notice is preserved.
  
     These pages are [10]maintained by the GCC team. Last modified
!    2018-01-30[11].
  
  References
  
*************** References
*** 17694,17705 ****
     6. mailto:gcc-help@gcc.gnu.org
     7. mailto:gcc@gcc.gnu.org
     8. https://gcc.gnu.org/lists.html
!    9. http://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,
--- 18725,18735 ----
     6. mailto:gcc-help@gcc.gnu.org
     7. mailto:gcc@gcc.gnu.org
     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,
*************** http://gcc.gnu.org/egcs-1.0/features.htm
*** 17749,17755 ****
     provided this notice is preserved.
  
     These pages are [8]maintained by the GCC team. Last modified
!    2016-01-30[9].
  
  References
  
--- 18779,18785 ----
     provided this notice is preserved.
  
     These pages are [8]maintained by the GCC team. Last modified
!    2018-01-30[9].
  
  References
  
*************** References
*** 17759,17770 ****
     4. mailto:gcc-help@gcc.gnu.org
     5. mailto:gcc@gcc.gnu.org
     6. https://gcc.gnu.org/lists.html
!    7. http://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
--- 18789,18799 ----
     4. mailto:gcc-help@gcc.gnu.org
     5. mailto:gcc@gcc.gnu.org
     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
*************** http://gcc.gnu.org/egcs-1.0/caveats.html
*** 17803,17809 ****
     provided this notice is preserved.
  
     These pages are [6]maintained by the GCC team. Last modified
!    2016-01-30[7].
  
  References
  
--- 18832,18838 ----
     provided this notice is preserved.
  
     These pages are [6]maintained by the GCC team. Last modified
!    2018-01-30[7].
  
  References
  
*************** References
*** 17811,17817 ****
     2. mailto:gcc-help@gcc.gnu.org
     3. mailto:gcc@gcc.gnu.org
     4. https://gcc.gnu.org/lists.html
!    5. http://www.fsf.org/
     6. https://gcc.gnu.org/about.html
     7. http://validator.w3.org/check/referer
  ======================================================================
--- 18840,18846 ----
     2. mailto:gcc-help@gcc.gnu.org
     3. mailto:gcc@gcc.gnu.org
     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
  ======================================================================
diff -Nrcpad gcc-7.3.0/config/ChangeLog gcc-8.1.0/config/ChangeLog
*** gcc-7.3.0/config/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-8.1.0/config/ChangeLog	Wed May  2 08:07:22 2018
***************
*** 1,14 ****
! 2018-01-25  Release Manager
  
! 	* GCC 7.3.0 released.
  
! 2017-08-14  Release Manager
  
! 	* GCC 7.2.0 released.
  
! 2017-05-02  Release Manager
  
! 	* GCC 7.1.0 released.
  
  2017-02-13  Richard Biener  <rguenther@suse.de>
  
--- 1,72 ----
! 2018-05-02  Release Manager
  
! 	* GCC 8.1.0 released.
  
! 2018-04-24  H.J. Lu  <hongjiu.lu@intel.com>
  
! 	PR bootstrap/85490
! 	* bootstrap-cet.mk (STAGE4_CFLAGS): New.
  
! 2018-04-24  H.J. Lu  <hongjiu.lu@intel.com>
  
! 	PR target/85485
! 	* bootstrap-cet.mk (STAGE2_CFLAGS): Remove -mcet.
! 	(STAGE3_CFLAGS): Likewise.
! 
! 2018-04-24  H.J. Lu  <hongjiu.lu@intel.com>
! 
! 	PR target/85485
! 	* cet.m4 (GCC_CET_FLAGS): Replace -mcet with -mshstk.
! 
! 2018-04-19  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* cet.m4 (GCC_CET_FLAGS): Default to --disable-cet, replace
! 	--enable-cet=default with --enable-cet=auto.
! 
! 2018-04-18  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR jit/85384
! 	* acx.m4 (GCC_BASE_VER): Remove \$\$ from sed expression.
! 
! 2018-04-05  H.J. Lu  <hongjiu.lu@intel.com>
! 
! 	PR gas/22318
! 	* plugins.m4 (AC_PLUGINS): Use dlsym to check if libdl is needed.
! 
! 2018-02-14  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
! 
! 	PR target/84148
! 	* cet.m4: Check if target support multi-byte NOPS (SSE).
! 
! 2018-02-06  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* gcc-plugin.m4 (GCC_ENABLE_PLUGINS): Remove -q option passed to grep.
! 
! 2017-11-14 Boris Kolpackov  <boris@codesynthesis.com>
! 
! 	* gcc-plugin.m4: Add support for MinGW.
! 
! 2017-11-17  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
! 
! 	* cet.m4: New file.
! 
! 2017-11-15  Alexandre Oliva <aoliva@redhat.com>
! 
! 	* bootstrap-debug-lean.mk (do-compare): Use the
! 	contrib/compare-debug script.
! 
! 2017-10-24  H.J. Lu  <hongjiu.lu@intel.com>
! 
! 	* bootstrap-cet.mk: New file.
! 
! 2017-06-19  Martin Liska  <mliska@suse.cz>
! 
! 	* bootstrap-lto-noplugin.mk: Enable -flto in all PGO stages.
! 	* bootstrap-lto.mk: Likewise.
! 
! 2017-06-03  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* mt-android: New file.
  
  2017-02-13  Richard Biener  <rguenther@suse.de>
  
diff -Nrcpad gcc-7.3.0/config/acx.m4 gcc-8.1.0/config/acx.m4
*** gcc-7.3.0/config/acx.m4	Tue Jan 17 09:38:48 2017
--- gcc-8.1.0/config/acx.m4	Wed Apr 18 09:46:58 2018
*************** AC_DEFUN([GCC_BASE_VER],
*** 246,252 ****
    [AS_HELP_STRING([--with-gcc-major-version-only], [use only GCC major number in filesystem paths])],
    [if test x$with_gcc_major_version_only = xyes ; then
      changequote(,)dnl
!     get_gcc_base_ver="sed -e 's/^\([0-9]*\).*\$\$/\1/'"
      changequote([,])dnl
    fi
    ])
--- 246,252 ----
    [AS_HELP_STRING([--with-gcc-major-version-only], [use only GCC major number in filesystem paths])],
    [if test x$with_gcc_major_version_only = xyes ; then
      changequote(,)dnl
!     get_gcc_base_ver="sed -e 's/^\([0-9]*\).*/\1/'"
      changequote([,])dnl
    fi
    ])
diff -Nrcpad gcc-7.3.0/config/bootstrap-cet.mk gcc-8.1.0/config/bootstrap-cet.mk
*** gcc-7.3.0/config/bootstrap-cet.mk	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/config/bootstrap-cet.mk	Tue Apr 24 22:12:46 2018
***************
*** 0 ****
--- 1,5 ----
+ # This option enables -fcf-protection for stage2, stage3 and stage4.
+ 
+ STAGE2_CFLAGS += -fcf-protection
+ STAGE3_CFLAGS += -fcf-protection
+ STAGE4_CFLAGS += -fcf-protection
diff -Nrcpad gcc-7.3.0/config/bootstrap-debug-lean.mk gcc-8.1.0/config/bootstrap-debug-lean.mk
*** gcc-7.3.0/config/bootstrap-debug-lean.mk	Thu Sep  3 05:55:57 2009
--- gcc-8.1.0/config/bootstrap-debug-lean.mk	Wed Nov 15 03:11:37 2017
***************
*** 9,11 ****
--- 9,12 ----
  
  STAGE2_CFLAGS += -fcompare-debug=
  STAGE3_CFLAGS += -fcompare-debug
+ do-compare = $(SHELL) $(srcdir)/contrib/compare-debug $$f1 $$f2
diff -Nrcpad gcc-7.3.0/config/bootstrap-lto-noplugin.mk gcc-8.1.0/config/bootstrap-lto-noplugin.mk
*** gcc-7.3.0/config/bootstrap-lto-noplugin.mk	Wed Mar 25 16:01:36 2015
--- gcc-8.1.0/config/bootstrap-lto-noplugin.mk	Mon Jun 19 13:20:20 2017
***************
*** 3,6 ****
  
  STAGE2_CFLAGS += -flto=jobserver -frandom-seed=1 -ffat-lto-objects
  STAGE3_CFLAGS += -flto=jobserver -frandom-seed=1 -ffat-lto-objects
! STAGEprofile_CFLAGS += -fno-lto
--- 3,8 ----
  
  STAGE2_CFLAGS += -flto=jobserver -frandom-seed=1 -ffat-lto-objects
  STAGE3_CFLAGS += -flto=jobserver -frandom-seed=1 -ffat-lto-objects
! STAGEprofile_CFLAGS += -flto=jobserver -frandom-seed=1
! STAGEtrain_CFLAGS += -flto=jobserver -frandom-seed=1
! STAGEfeedback_CFLAGS += -flto=jobserver -frandom-seed=1
diff -Nrcpad gcc-7.3.0/config/bootstrap-lto.mk gcc-8.1.0/config/bootstrap-lto.mk
*** gcc-7.3.0/config/bootstrap-lto.mk	Mon Sep  1 16:41:28 2014
--- gcc-8.1.0/config/bootstrap-lto.mk	Mon Jun 19 13:20:20 2017
***************
*** 2,8 ****
  
  STAGE2_CFLAGS += -flto=jobserver -frandom-seed=1
  STAGE3_CFLAGS += -flto=jobserver -frandom-seed=1
! STAGEprofile_CFLAGS += -fno-lto
  
  # assumes the host supports the linker plugin
  LTO_AR = $$r/$(HOST_SUBDIR)/prev-gcc/gcc-ar$(exeext) -B$$r/$(HOST_SUBDIR)/prev-gcc/
--- 2,10 ----
  
  STAGE2_CFLAGS += -flto=jobserver -frandom-seed=1
  STAGE3_CFLAGS += -flto=jobserver -frandom-seed=1
! STAGEprofile_CFLAGS += -flto=jobserver -frandom-seed=1
! STAGEtrain_CFLAGS += -flto=jobserver -frandom-seed=1
! STAGEfeedback_CFLAGS += -flto=jobserver -frandom-seed=1
  
  # assumes the host supports the linker plugin
  LTO_AR = $$r/$(HOST_SUBDIR)/prev-gcc/gcc-ar$(exeext) -B$$r/$(HOST_SUBDIR)/prev-gcc/
diff -Nrcpad gcc-7.3.0/config/cet.m4 gcc-8.1.0/config/cet.m4
*** gcc-7.3.0/config/cet.m4	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/config/cet.m4	Tue Apr 24 16:41:01 2018
***************
*** 0 ****
--- 1,50 ----
+ dnl
+ dnl GCC_CET_FLAGS
+ dnl    (SHELL-CODE_HANDLER)
+ dnl
+ AC_DEFUN([GCC_CET_FLAGS],[dnl
+ GCC_ENABLE(cet, no, ,[enable Intel CET in target libraries],
+ 	   permit yes|no|auto)
+ AC_MSG_CHECKING([for CET support])
+ 
+ case "$host" in
+   i[[34567]]86-*-linux* | x86_64-*-linux*)
+     case "$enable_cet" in
+       auto)
+ 	# Check if target supports multi-byte NOPs
+ 	# and if assembler supports CET insn.
+ 	AC_COMPILE_IFELSE(
+ 	 [AC_LANG_PROGRAM(
+ 	  [],
+ 	  [
+ #if !defined(__SSE2__)
+ #error target does not support multi-byte NOPs
+ #else
+ asm ("setssbsy");
+ #endif
+ 	  ])],
+ 	 [enable_cet=yes],
+ 	 [enable_cet=no])
+ 	;;
+       yes)
+ 	# Check if assembler supports CET.
+ 	AC_COMPILE_IFELSE(
+ 	 [AC_LANG_PROGRAM(
+ 	  [],
+ 	  [asm ("setssbsy");])],
+ 	 [],
+ 	 [AC_MSG_ERROR([assembler with CET support is required for --enable-cet])])
+ 	;;
+     esac
+     ;;
+   *)
+     enable_cet=no
+     ;;
+ esac
+ if test x$enable_cet = xyes; then
+   $1="-fcf-protection -mshstk"
+   AC_MSG_RESULT([yes])
+ else
+   AC_MSG_RESULT([no])
+ fi
+ ])
diff -Nrcpad gcc-7.3.0/config/gcc-plugin.m4 gcc-8.1.0/config/gcc-plugin.m4
*** gcc-7.3.0/config/gcc-plugin.m4	Mon Oct 27 17:21:42 2014
--- gcc-8.1.0/config/gcc-plugin.m4	Tue Feb  6 08:30:53 2018
*************** AC_DEFUN([GCC_ENABLE_PLUGINS],
*** 19,26 ****
--- 19,39 ----
     enable_plugin=yes; default_plugin=yes)
  
     pluginlibs=
+    plugin_check=yes
  
     case "${host}" in
+      *-*-mingw*)
+        # Since plugin support under MinGW is not as straightforward as on
+        # other platforms (e.g., we have to link import library, etc), we
+        # only enable it if explicitly requested.
+        if test x"$default_plugin" = x"yes"; then
+          enable_plugin=no
+        elif test x"$enable_plugin" = x"yes"; then
+          # Use make's target variable to derive import library name.
+          pluginlibs='-Wl,--export-all-symbols -Wl,--out-implib=[$]@.a'
+ 	 plugin_check=no
+        fi
+      ;;
       *-*-darwin*)
         if test x$build = x$host; then
  	 export_sym_check="nm${exeext} -g"
*************** AC_DEFUN([GCC_ENABLE_PLUGINS],
*** 41,60 ****
       ;;
     esac
  
!    if test x"$enable_plugin" = x"yes"; then
  
       AC_MSG_CHECKING([for exported symbols])
       if test "x$export_sym_check" != x; then
         echo "int main() {return 0;} int foobar() {return 0;}" > conftest.c
         ${CC} ${CFLAGS} ${LDFLAGS} conftest.c -o conftest$ac_exeext > /dev/null 2>&1
!        if $export_sym_check conftest$ac_exeext | grep -q foobar > /dev/null; then
  	 : # No need to use a flag
  	 AC_MSG_RESULT([yes])
         else
  	 AC_MSG_RESULT([yes])
  	 AC_MSG_CHECKING([for -rdynamic])
  	 ${CC} ${CFLAGS} ${LDFLAGS} -rdynamic conftest.c -o conftest$ac_exeext > /dev/null 2>&1
! 	 if $export_sym_check conftest$ac_exeext | grep -q foobar > /dev/null; then
  	   plugin_rdynamic=yes
  	   pluginlibs="-rdynamic"
  	 else
--- 54,73 ----
       ;;
     esac
  
!    if test x"$enable_plugin" = x"yes" -a x"$plugin_check" = x"yes"; then
  
       AC_MSG_CHECKING([for exported symbols])
       if test "x$export_sym_check" != x; then
         echo "int main() {return 0;} int foobar() {return 0;}" > conftest.c
         ${CC} ${CFLAGS} ${LDFLAGS} conftest.c -o conftest$ac_exeext > /dev/null 2>&1
!        if $export_sym_check conftest$ac_exeext | grep foobar > /dev/null; then
  	 : # No need to use a flag
  	 AC_MSG_RESULT([yes])
         else
  	 AC_MSG_RESULT([yes])
  	 AC_MSG_CHECKING([for -rdynamic])
  	 ${CC} ${CFLAGS} ${LDFLAGS} -rdynamic conftest.c -o conftest$ac_exeext > /dev/null 2>&1
! 	 if $export_sym_check conftest$ac_exeext | grep foobar > /dev/null; then
  	   plugin_rdynamic=yes
  	   pluginlibs="-rdynamic"
  	 else
diff -Nrcpad gcc-7.3.0/config/mt-android gcc-8.1.0/config/mt-android
*** gcc-7.3.0/config/mt-android	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/config/mt-android	Sat Jun  3 08:23:22 2017
***************
*** 0 ****
--- 1 ----
+ CXXFLAGS_FOR_TARGET += -D_GNU_SOURCE -fexceptions -frtti
diff -Nrcpad gcc-7.3.0/config/plugins.m4 gcc-8.1.0/config/plugins.m4
*** gcc-7.3.0/config/plugins.m4	Wed Nov 26 21:53:35 2014
--- gcc-8.1.0/config/plugins.m4	Thu Apr  5 17:49:39 2018
*************** AC_DEFUN([AC_PLUGINS],
*** 16,21 ****
      [plugins=$maybe_plugins]
    )
    if test "$plugins" = "yes"; then
!     AC_SEARCH_LIBS([dlopen], [dl])
    fi
  ])
--- 16,21 ----
      [plugins=$maybe_plugins]
    )
    if test "$plugins" = "yes"; then
!     AC_SEARCH_LIBS([dlsym], [dl])
    fi
  ])
diff -Nrcpad gcc-7.3.0/config.guess gcc-8.1.0/config.guess
*** gcc-7.3.0/config.guess	Sat Mar 18 18:22:06 2017
--- gcc-8.1.0/config.guess	Wed Jan  3 04:25:18 2018
***************
*** 1,8 ****
  #! /bin/sh
  # Attempt to guess a canonical system name.
! #   Copyright 1992-2017 Free Software Foundation, Inc.
  
! timestamp='2017-03-05'
  
  # 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,8 ----
  #! /bin/sh
  # Attempt to guess a canonical system name.
! #   Copyright 1992-2018 Free Software Foundation, Inc.
  
! timestamp='2018-01-01'
  
  # 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
*************** timestamp='2017-03-05'
*** 15,21 ****
  # General Public License for more details.
  #
  # You should have received a copy of the GNU General Public License
! # along with this program; if not, see <http://www.gnu.org/licenses/>.
  #
  # As a special exception to the GNU General Public License, if you
  # distribute this file as part of a program that contains a
--- 15,21 ----
  # General Public License for more details.
  #
  # You should have received a copy of the GNU General Public License
! # along with this program; if not, see <https://www.gnu.org/licenses/>.
  #
  # As a special exception to the GNU General Public License, if you
  # distribute this file as part of a program that contains a
*************** timestamp='2017-03-05'
*** 27,33 ****
  # Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
  #
  # You can get the latest version of this script from:
! # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
  #
  # Please send patches to <config-patches@gnu.org>.
  
--- 27,33 ----
  # Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
  #
  # You can get the latest version of this script from:
! # https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
  #
  # Please send patches to <config-patches@gnu.org>.
  
*************** Usage: $0 [OPTION]
*** 39,45 ****
  
  Output the configuration name of the system \`$me' is run on.
  
! Operation modes:
    -h, --help         print this help, then exit
    -t, --time-stamp   print date of last modification, then exit
    -v, --version      print version number, then exit
--- 39,45 ----
  
  Output the configuration name of the system \`$me' is run on.
  
! Options:
    -h, --help         print this help, then exit
    -t, --time-stamp   print date of last modification, then exit
    -v, --version      print version number, then exit
*************** version="\
*** 50,56 ****
  GNU config.guess ($timestamp)
  
  Originally written by Per Bothner.
! Copyright 1992-2017 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."
--- 50,56 ----
  GNU config.guess ($timestamp)
  
  Originally written by Per Bothner.
! Copyright 1992-2018 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."
*************** case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$
*** 244,249 ****
--- 244,252 ----
  	UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'`
  	echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE}
  	exit ;;
+     *:MidnightBSD:*:*)
+ 	echo ${UNAME_MACHINE}-unknown-midnightbsd${UNAME_RELEASE}
+ 	exit ;;
      *:ekkoBSD:*:*)
  	echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
  	exit ;;
*************** case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$
*** 259,264 ****
--- 262,273 ----
      *:Sortix:*:*)
  	echo ${UNAME_MACHINE}-unknown-sortix
  	exit ;;
+     *:Redox:*:*)
+ 	echo ${UNAME_MACHINE}-unknown-redox
+ 	exit ;;
+     mips:OSF1:*.*)
+         echo mips-dec-osf1
+         exit ;;
      alpha:OSF1:*:*)
  	case $UNAME_RELEASE in
  	*4.0)
*************** case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$
*** 315,329 ****
  	exitcode=$?
  	trap '' 0
  	exit $exitcode ;;
-     Alpha\ *:Windows_NT*:*)
- 	# How do we know it's Interix rather than the generic POSIX subsystem?
- 	# Should we change UNAME_MACHINE based on the output of uname instead
- 	# of the specific Alpha model?
- 	echo alpha-pc-interix
- 	exit ;;
-     21064:Windows_NT:50:3)
- 	echo alpha-dec-winnt3.5
- 	exit ;;
      Amiga*:UNIX_System_V:4.0:*)
  	echo m68k-unknown-sysv4
  	exit ;;
--- 324,329 ----
*************** case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$
*** 485,497 ****
  #endif
  	#if defined (host_mips) && defined (MIPSEB)
  	#if defined (SYSTYPE_SYSV)
! 	  printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
  	#endif
  	#if defined (SYSTYPE_SVR4)
! 	  printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
  	#endif
  	#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
! 	  printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
  	#endif
  	#endif
  	  exit (-1);
--- 485,497 ----
  #endif
  	#if defined (host_mips) && defined (MIPSEB)
  	#if defined (SYSTYPE_SYSV)
! 	  printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0);
  	#endif
  	#if defined (SYSTYPE_SVR4)
! 	  printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0);
  	#endif
  	#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
! 	  printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0);
  	#endif
  	#endif
  	  exit (-1);
*************** EOF
*** 614,620 ****
      *:AIX:*:*)
  	echo rs6000-ibm-aix
  	exit ;;
!     ibmrt:4.4BSD:*|romp-ibm:BSD:*)
  	echo romp-ibm-bsd4.4
  	exit ;;
      ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
--- 614,620 ----
      *:AIX:*:*)
  	echo rs6000-ibm-aix
  	exit ;;
!     ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*)
  	echo romp-ibm-bsd4.4
  	exit ;;
      ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
*************** EOF
*** 635,642 ****
      9000/[34678]??:HP-UX:*:*)
  	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
  	case "${UNAME_MACHINE}" in
! 	    9000/31? )            HP_ARCH=m68000 ;;
! 	    9000/[34]?? )         HP_ARCH=m68k ;;
  	    9000/[678][0-9][0-9])
  		if [ -x /usr/bin/getconf ]; then
  		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
--- 635,642 ----
      9000/[34678]??:HP-UX:*:*)
  	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
  	case "${UNAME_MACHINE}" in
! 	    9000/31?)            HP_ARCH=m68000 ;;
! 	    9000/[34]??)         HP_ARCH=m68k ;;
  	    9000/[678][0-9][0-9])
  		if [ -x /usr/bin/getconf ]; then
  		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
*************** EOF
*** 749,755 ****
  		{ echo "$SYSTEM_NAME"; exit; }
  	echo unknown-hitachi-hiuxwe2
  	exit ;;
!     9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
  	echo hppa1.1-hp-bsd
  	exit ;;
      9000/8??:4.3bsd:*:*)
--- 749,755 ----
  		{ echo "$SYSTEM_NAME"; exit; }
  	echo unknown-hitachi-hiuxwe2
  	exit ;;
!     9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*)
  	echo hppa1.1-hp-bsd
  	exit ;;
      9000/8??:4.3bsd:*:*)
*************** EOF
*** 758,764 ****
      *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
  	echo hppa1.0-hp-mpeix
  	exit ;;
!     hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
  	echo hppa1.1-hp-osf
  	exit ;;
      hp8??:OSF1:*:*)
--- 758,764 ----
      *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
  	echo hppa1.0-hp-mpeix
  	exit ;;
!     hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*)
  	echo hppa1.1-hp-osf
  	exit ;;
      hp8??:OSF1:*:*)
*************** EOF
*** 855,864 ****
      *:MSYS*:*)
  	echo ${UNAME_MACHINE}-pc-msys
  	exit ;;
-     i*:windows32*:*)
- 	# uname -m includes "-pc" on this system.
- 	echo ${UNAME_MACHINE}-mingw32
- 	exit ;;
      i*:PW*:*)
  	echo ${UNAME_MACHINE}-pc-pw32
  	exit ;;
--- 855,860 ----
*************** EOF
*** 874,900 ****
  		echo ia64-unknown-interix${UNAME_RELEASE}
  		exit ;;
  	esac ;;
-     [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
- 	echo i${UNAME_MACHINE}-pc-mks
- 	exit ;;
-     8664:Windows_NT:*)
- 	echo x86_64-pc-mks
- 	exit ;;
-     i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
- 	# How do we know it's Interix rather than the generic POSIX subsystem?
- 	# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
- 	# UNAME_MACHINE based on the output of uname instead of i386?
- 	echo i586-pc-interix
- 	exit ;;
      i*:UWIN*:*)
  	echo ${UNAME_MACHINE}-pc-uwin
  	exit ;;
      amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
  	echo x86_64-unknown-cygwin
  	exit ;;
-     p*:CYGWIN*:*)
- 	echo powerpcle-unknown-cygwin
- 	exit ;;
      prep*:SunOS:5.*:*)
  	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
  	exit ;;
--- 870,881 ----
*************** EOF
*** 1097,1103 ****
      i*86:*DOS:*:*)
  	echo ${UNAME_MACHINE}-pc-msdosdjgpp
  	exit ;;
!     i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
  	UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
  	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
  		echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
--- 1078,1084 ----
      i*86:*DOS:*:*)
  	echo ${UNAME_MACHINE}-pc-msdosdjgpp
  	exit ;;
!     i*86:*:4.*:*)
  	UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
  	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
  		echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
*************** EOF
*** 1304,1317 ****
  	if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
  	    if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
  		if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
! 		    (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
! 		    grep IS_64BIT_ARCH >/dev/null
  		then
  		    case $UNAME_PROCESSOR in
  			i386) UNAME_PROCESSOR=x86_64 ;;
  			powerpc) UNAME_PROCESSOR=powerpc64 ;;
  		    esac
  		fi
  	    fi
  	elif test "$UNAME_PROCESSOR" = i386 ; then
  	    # Avoid executing cc on OS X 10.9, as it ships with a stub
--- 1285,1305 ----
  	if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
  	    if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
  		if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
! 		       (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
! 		       grep IS_64BIT_ARCH >/dev/null
  		then
  		    case $UNAME_PROCESSOR in
  			i386) UNAME_PROCESSOR=x86_64 ;;
  			powerpc) UNAME_PROCESSOR=powerpc64 ;;
  		    esac
  		fi
+ 		# On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc
+ 		if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \
+ 		       (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+ 		       grep IS_PPC >/dev/null
+ 		then
+ 		    UNAME_PROCESSOR=powerpc
+ 		fi
  	    fi
  	elif test "$UNAME_PROCESSOR" = i386 ; then
  	    # Avoid executing cc on OS X 10.9, as it ships with a stub
*************** EOF
*** 1335,1350 ****
      *:QNX:*:4*)
  	echo i386-pc-qnx
  	exit ;;
!     NEO-?:NONSTOP_KERNEL:*:*)
  	echo neo-tandem-nsk${UNAME_RELEASE}
  	exit ;;
      NSE-*:NONSTOP_KERNEL:*:*)
  	echo nse-tandem-nsk${UNAME_RELEASE}
  	exit ;;
!     NSR-?:NONSTOP_KERNEL:*:*)
  	echo nsr-tandem-nsk${UNAME_RELEASE}
  	exit ;;
!     NSX-?:NONSTOP_KERNEL:*:*)
  	echo nsx-tandem-nsk${UNAME_RELEASE}
  	exit ;;
      *:NonStop-UX:*:*)
--- 1323,1338 ----
      *:QNX:*:4*)
  	echo i386-pc-qnx
  	exit ;;
!     NEO-*:NONSTOP_KERNEL:*:*)
  	echo neo-tandem-nsk${UNAME_RELEASE}
  	exit ;;
      NSE-*:NONSTOP_KERNEL:*:*)
  	echo nse-tandem-nsk${UNAME_RELEASE}
  	exit ;;
!     NSR-*:NONSTOP_KERNEL:*:*)
  	echo nsr-tandem-nsk${UNAME_RELEASE}
  	exit ;;
!     NSX-*:NONSTOP_KERNEL:*:*)
  	echo nsx-tandem-nsk${UNAME_RELEASE}
  	exit ;;
      *:NonStop-UX:*:*)
*************** EOF
*** 1418,1433 ****
  	exit ;;
  esac
  
  cat >&2 <<EOF
- $0: unable to guess system type
  
  This script (version $timestamp), has failed to recognize the
! operating system you are using. If your script is old, overwrite
! config.guess and config.sub with the latest versions from:
  
!   http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
  and
!   http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
  
  If $0 has already been updated, send the following data and any
  information you think might be pertinent to config-patches@gnu.org to
--- 1406,1433 ----
  	exit ;;
  esac
  
+ echo "$0: unable to guess system type" >&2
+ 
+ case "${UNAME_MACHINE}:${UNAME_SYSTEM}" in
+     mips:Linux | mips64:Linux)
+ 	# If we got here on MIPS GNU/Linux, output extra information.
+ 	cat >&2 <<EOF
+ 
+ NOTE: MIPS GNU/Linux systems require a C compiler to fully recognize
+ the system type. Please install a C compiler and try again.
+ EOF
+ 	;;
+ esac
+ 
  cat >&2 <<EOF
  
  This script (version $timestamp), has failed to recognize the
! operating system you are using. If your script is old, overwrite *all*
! copies of config.guess and config.sub with the latest versions from:
  
!   https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
  and
!   https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
  
  If $0 has already been updated, send the following data and any
  information you think might be pertinent to config-patches@gnu.org to
*************** EOF
*** 1459,1465 ****
  exit 1
  
  # Local variables:
! # eval: (add-hook 'write-file-hooks 'time-stamp)
  # time-stamp-start: "timestamp='"
  # time-stamp-format: "%:y-%02m-%02d"
  # time-stamp-end: "'"
--- 1459,1465 ----
  exit 1
  
  # Local variables:
! # eval: (add-hook 'write-file-functions 'time-stamp)
  # time-stamp-start: "timestamp='"
  # time-stamp-format: "%:y-%02m-%02d"
  # time-stamp-end: "'"
diff -Nrcpad gcc-7.3.0/config.sub gcc-8.1.0/config.sub
*** gcc-7.3.0/config.sub	Thu Dec 29 11:04:53 2016
--- gcc-8.1.0/config.sub	Wed Jan  3 04:25:18 2018
***************
*** 1,8 ****
  #! /bin/sh
  # Configuration validation subroutine script.
! #   Copyright 1992-2016 Free Software Foundation, Inc.
  
! timestamp='2016-12-24'
  
  # 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,8 ----
  #! /bin/sh
  # Configuration validation subroutine script.
! #   Copyright 1992-2018 Free Software Foundation, Inc.
  
! timestamp='2018-01-01'
  
  # 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
*************** timestamp='2016-12-24'
*** 15,21 ****
  # General Public License for more details.
  #
  # You should have received a copy of the GNU General Public License
! # along with this program; if not, see <http://www.gnu.org/licenses/>.
  #
  # As a special exception to the GNU General Public License, if you
  # distribute this file as part of a program that contains a
--- 15,21 ----
  # General Public License for more details.
  #
  # You should have received a copy of the GNU General Public License
! # along with this program; if not, see <https://www.gnu.org/licenses/>.
  #
  # As a special exception to the GNU General Public License, if you
  # distribute this file as part of a program that contains a
*************** timestamp='2016-12-24'
*** 33,39 ****
  # Otherwise, we print the canonical config type on stdout and succeed.
  
  # You can get the latest version of this script from:
! # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
  
  # This file is supposed to be the same for all GNU packages
  # and recognize all the CPU types, system types and aliases
--- 33,39 ----
  # Otherwise, we print the canonical config type on stdout and succeed.
  
  # You can get the latest version of this script from:
! # https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
  
  # This file is supposed to be the same for all GNU packages
  # and recognize all the CPU types, system types and aliases
*************** Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIA
*** 57,63 ****
  
  Canonicalize a configuration name.
  
! Operation modes:
    -h, --help         print this help, then exit
    -t, --time-stamp   print date of last modification, then exit
    -v, --version      print version number, then exit
--- 57,63 ----
  
  Canonicalize a configuration name.
  
! Options:
    -h, --help         print this help, then exit
    -t, --time-stamp   print date of last modification, then exit
    -v, --version      print version number, then exit
*************** Report bugs and patches to <config-patch
*** 67,73 ****
  version="\
  GNU config.sub ($timestamp)
  
! Copyright 1992-2016 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."
--- 67,73 ----
  version="\
  GNU config.sub ($timestamp)
  
! Copyright 1992-2018 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."
*************** case $os in
*** 229,237 ****
  	-ptx*)
  		basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
  		;;
- 	-windowsnt*)
- 		os=`echo $os | sed -e 's/windowsnt/winnt/'`
- 		;;
  	-psos*)
  		os=-psos
  		;;
--- 229,234 ----
*************** case $basic_machine in
*** 263,269 ****
  	| fido | fr30 | frv | ft32 \
  	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
  	| hexagon \
! 	| i370 | i860 | i960 | ia64 \
  	| ip2k | iq2000 \
  	| k1om \
  	| le32 | le64 \
--- 260,266 ----
  	| fido | fr30 | frv | ft32 \
  	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
  	| hexagon \
! 	| i370 | i860 | i960 | ia16 | ia64 \
  	| ip2k | iq2000 \
  	| k1om \
  	| le32 | le64 \
*************** case $basic_machine in
*** 315,321 ****
  	| ubicom32 \
  	| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
  	| visium \
! 	| we32k \
  	| x86 | xc16x | xstormy16 | xtensa \
  	| z8k | z80)
  		basic_machine=$basic_machine-unknown
--- 312,318 ----
  	| ubicom32 \
  	| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
  	| visium \
! 	| wasm32 \
  	| x86 | xc16x | xstormy16 | xtensa \
  	| z8k | z80)
  		basic_machine=$basic_machine-unknown
*************** case $basic_machine in
*** 388,394 ****
  	| h8300-* | h8500-* \
  	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
  	| hexagon-* \
! 	| i*86-* | i860-* | i960-* | ia64-* \
  	| ip2k-* | iq2000-* \
  	| k1om-* \
  	| le32-* | le64-* \
--- 385,391 ----
  	| h8300-* | h8500-* \
  	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
  	| hexagon-* \
! 	| i*86-* | i860-* | i960-* | ia16-* | ia64-* \
  	| ip2k-* | iq2000-* \
  	| k1om-* \
  	| le32-* | le64-* \
*************** case $basic_machine in
*** 446,451 ****
--- 443,449 ----
  	| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
  	| vax-* \
  	| visium-* \
+ 	| wasm32-* \
  	| we32k-* \
  	| x86-* | x86_64-* | xc16x-* | xps100-* \
  	| xstormy16-* | xtensa*-* \
*************** case $basic_machine in
*** 641,647 ****
  		basic_machine=rs6000-bull
  		os=-bosx
  		;;
! 	dpx2* | dpx2*-bull)
  		basic_machine=m68k-bull
  		os=-sysv3
  		;;
--- 639,645 ----
  		basic_machine=rs6000-bull
  		os=-bosx
  		;;
! 	dpx2*)
  		basic_machine=m68k-bull
  		os=-sysv3
  		;;
*************** case $basic_machine in
*** 903,909 ****
  		basic_machine=v70-nec
  		os=-sysv
  		;;
! 	next | m*-next )
  		basic_machine=m68k-next
  		case $os in
  		    -nextstep* )
--- 901,907 ----
  		basic_machine=v70-nec
  		os=-sysv
  		;;
! 	next | m*-next)
  		basic_machine=m68k-next
  		case $os in
  		    -nextstep* )
*************** case $basic_machine in
*** 948,953 ****
--- 946,954 ----
  	nsr-tandem)
  		basic_machine=nsr-tandem
  		;;
+ 	nsx-tandem)
+ 		basic_machine=nsx-tandem
+ 		;;
  	op50n-* | op60c-*)
  		basic_machine=hppa1.1-oki
  		os=-proelf
*************** case $basic_machine in
*** 1243,1248 ****
--- 1244,1252 ----
  		basic_machine=a29k-wrs
  		os=-vxworks
  		;;
+ 	wasm32)
+ 		basic_machine=wasm32-unknown
+ 		;;
  	w65*)
  		basic_machine=w65-wdc
  		os=-none
*************** case $basic_machine in
*** 1251,1256 ****
--- 1255,1263 ----
  		basic_machine=hppa1.1-winbond
  		os=-proelf
  		;;
+ 	x64)
+ 		basic_machine=x86_64-pc
+ 		;;
  	xbox)
  		basic_machine=i686-pc
  		os=-mingw32
*************** esac
*** 1358,1365 ****
  if [ x"$os" != x"" ]
  then
  case $os in
! 	# First match some system type aliases
! 	# that might get confused with valid system types.
  	# -solaris* is a basic system type, with this one exception.
  	-auroraux)
  		os=-auroraux
--- 1365,1372 ----
  if [ x"$os" != x"" ]
  then
  case $os in
! 	# First match some system type aliases that might get confused
! 	# with valid system types.
  	# -solaris* is a basic system type, with this one exception.
  	-auroraux)
  		os=-auroraux
*************** case $os in
*** 1379,1387 ****
  	-gnu/linux*)
  		os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
  		;;
! 	# First accept the basic system types.
  	# The portable systems comes first.
! 	# Each alternative MUST END IN A *, to match a version number.
  	# -sysv* is not here because it comes later, after sysvr4.
  	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
  	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
--- 1386,1394 ----
  	-gnu/linux*)
  		os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
  		;;
! 	# Now accept the basic system types.
  	# The portable systems comes first.
! 	# Each alternative MUST end in a * to match a version number.
  	# -sysv* is not here because it comes later, after sysvr4.
  	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
  	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
*************** case $os in
*** 1409,1415 ****
  	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
  	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
  	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \
! 	      | -onefs* | -tirtos* | -phoenix* | -fuchsia* | -redox*)
  	# Remember, each alternative MUST END IN *, to match a version number.
  		;;
  	-qnx*)
--- 1416,1422 ----
  	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
  	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
  	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \
! 	      | -onefs* | -tirtos* | -phoenix* | -fuchsia* | -redox* | -bme*)
  	# Remember, each alternative MUST END IN *, to match a version number.
  		;;
  	-qnx*)
*************** case $os in
*** 1484,1490 ****
  	-nova*)
  		os=-rtmk-nova
  		;;
! 	-ns2 )
  		os=-nextstep2
  		;;
  	-nsk*)
--- 1491,1497 ----
  	-nova*)
  		os=-rtmk-nova
  		;;
! 	-ns2)
  		os=-nextstep2
  		;;
  	-nsk*)
*************** case $os in
*** 1539,1544 ****
--- 1546,1564 ----
  	-dicos*)
  		os=-dicos
  		;;
+ 	-pikeos*)
+ 		# Until real need of OS specific support for
+ 		# particular features comes up, bare metal
+ 		# configurations are quite functional.
+ 		case $basic_machine in
+ 		    arm*)
+ 			os=-eabi
+ 			;;
+ 		    *)
+ 			os=-elf
+ 			;;
+ 		esac
+ 		;;
  	-nacl*)
  		;;
  	-ios)
*************** case $basic_machine in
*** 1686,1692 ****
  	m88k-omron*)
  		os=-luna
  		;;
! 	*-next )
  		os=-nextstep
  		;;
  	*-sequent)
--- 1706,1712 ----
  	m88k-omron*)
  		os=-luna
  		;;
! 	*-next)
  		os=-nextstep
  		;;
  	*-sequent)
*************** echo $basic_machine$os
*** 1821,1827 ****
  exit
  
  # Local variables:
! # eval: (add-hook 'write-file-hooks 'time-stamp)
  # time-stamp-start: "timestamp='"
  # time-stamp-format: "%:y-%02m-%02d"
  # time-stamp-end: "'"
--- 1841,1847 ----
  exit
  
  # Local variables:
! # eval: (add-hook 'write-file-functions 'time-stamp)
  # time-stamp-start: "timestamp='"
  # time-stamp-format: "%:y-%02m-%02d"
  # time-stamp-end: "'"
diff -Nrcpad gcc-7.3.0/configure gcc-8.1.0/configure
*** gcc-7.3.0/configure	Wed Mar 22 17:51:18 2017
--- gcc-8.1.0/configure	Wed May  2 08:19:58 2018
*************** enable_option_checking=no
*** 556,562 ****
  ac_subst_vars='LTLIBOBJS
  LIBOBJS
  compare_exclusions
- host_shared
  stage2_werror_flag
  stage1_checking
  stage1_cflags
--- 556,561 ----
*************** get_gcc_base_ver
*** 645,650 ****
--- 644,650 ----
  extra_host_zlib_configure_flags
  extra_host_libiberty_configure_flags
  stage1_languages
+ host_shared
  extra_linker_plugin_flags
  extra_linker_plugin_configure_flags
  islinc
*************** enable_isl_version_check
*** 781,786 ****
--- 781,787 ----
  enable_lto
  enable_linker_plugin_configure_flags
  enable_linker_plugin_flags
+ enable_host_shared
  enable_stage1_languages
  enable_objc_gc
  with_target_bdw_gc
*************** with_build_time_tools
*** 796,802 ****
  enable_maintainer_mode
  enable_stage1_checking
  enable_werror
- enable_host_shared
  '
        ac_precious_vars='build_alias
  host_alias
--- 797,802 ----
*************** Optional Features:
*** 1498,1503 ****
--- 1498,1504 ----
    --enable-linker-plugin-flags=FLAGS
                            additional flags for configuring and building linker
                            plugins [none]
+   --enable-host-shared    build host code as shared libraries
    --enable-stage1-languages[=all]
                            choose additional languages to build during stage1.
                            Mostly useful for compiler development
*************** Optional Features:
*** 1515,1521 ****
                            choose additional checking for stage1 of the
                            compiler
    --enable-werror         enable -Werror in bootstrap stage2 and later
-   --enable-host-shared    build host code as shared libraries
  
  Optional Packages:
    --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
--- 1516,1521 ----
*************** target_libraries="target-libgcc \
*** 2751,2757 ****
  		target-libgloss \
  		target-newlib \
  		target-libgomp \
- 		target-libcilkrts \
  		target-liboffloadmic \
  		target-libhsail-rt \
  		target-libatomic \
--- 2751,2756 ----
*************** $as_echo "yes" >&6; }
*** 3188,3212 ****
      fi
  fi
  
- # Disable libcilkrts on unsupported systems.
- if test -d ${srcdir}/libcilkrts; then
-     if test x$enable_libcilkrts = x; then
- 	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libcilkrts support" >&5
- $as_echo_n "checking for libcilkrts support... " >&6; }
- 	if (srcdir=${srcdir}/libcilkrts; \
- 		. ${srcdir}/configure.tgt; \
- 		test -n "$UNSUPPORTED")
- 	then
- 	    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
- $as_echo "no" >&6; }
- 	    noconfigdirs="$noconfigdirs target-libcilkrts"
- 	else
- 	    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
- $as_echo "yes" >&6; }
- 	fi
-     fi
- fi
- 
  # Disable liboffloadmic on unsupported systems.
  if test -d ${srcdir}/liboffloadmic; then
      if test x$enable_liboffloadmic != xno; then
--- 3187,3192 ----
*************** case "${target}" in
*** 3463,3473 ****
      noconfigdirs="$noconfigdirs target-libffi"
      ;;
    powerpc-*-aix*)
-     # copied from rs6000-*-* entry
-     noconfigdirs="$noconfigdirs target-libffi"
      ;;
    rs6000-*-aix*)
-     noconfigdirs="$noconfigdirs target-libffi"
      ;;
    ft32-*-*)
      noconfigdirs="$noconfigdirs target-libffi"
--- 3443,3450 ----
*************** esac
*** 3480,3486 ****
  # Disable the go frontend on systems where it is known to not work. Please keep
  # this in sync with contrib/config-list.mk.
  case "${target}" in
! *-*-darwin* | *-*-cygwin* | *-*-mingw* | *-*-aix*)
      unsupported_languages="$unsupported_languages go"
      ;;
  esac
--- 3457,3463 ----
  # Disable the go frontend on systems where it is known to not work. Please keep
  # this in sync with contrib/config-list.mk.
  case "${target}" in
! *-*-darwin* | *-*-cygwin* | *-*-mingw*)
      unsupported_languages="$unsupported_languages go"
      ;;
  esac
*************** if test x$enable_libgo = x; then
*** 3496,3504 ****
      *-*-cygwin* | *-*-mingw*)
  	noconfigdirs="$noconfigdirs target-libgo"
  	;;
-     *-*-aix*)
- 	noconfigdirs="$noconfigdirs target-libgo"
- 	;;
      esac
  fi
  
--- 3473,3478 ----
*************** case "${target}" in
*** 3656,3665 ****
      ;;
    *-*-rtems*)
      noconfigdirs="$noconfigdirs target-libgloss"
-     # this is not caught below because this stanza matches earlier
-     case $target in
-       or1k*-*-*) noconfigdirs="$noconfigdirs gdb" ;;
-     esac
      ;;
      # The tpf target doesn't support gdb yet.
    *-*-tpf*)
--- 3630,3635 ----
*************** case "${target}" in
*** 3865,3873 ****
    nvptx*-*-*)
      noconfigdirs="$noconfigdirs target-libssp target-libstdc++-v3 target-libobjc"
      ;;
-   or1k*-*-*)
-     noconfigdirs="$noconfigdirs gdb"
-     ;;
    sh-*-*)
      case "${target}" in
        sh*-*-elf)
--- 3835,3840 ----
*************** case "${target}" in
*** 3893,3898 ****
--- 3860,3868 ----
    vax-*-*)
      noconfigdirs="$noconfigdirs target-newlib target-libgloss"
      ;;
+   wasm32-*-*)
+     noconfigdirs="$noconfigdirs ld"
+     ;;
  esac
  
  # If we aren't building newlib, then don't build libgloss, since libgloss
*************** fi
*** 6090,6095 ****
--- 6060,6075 ----
  
  
  
+ # Enable --enable-host-shared.
+ # Checked early to determine whether jit is an 'all' language
+ # Check whether --enable-host-shared was given.
+ if test "${enable_host_shared+set}" = set; then :
+   enableval=$enable_host_shared; host_shared=$enableval
+ else
+   host_shared=no
+ fi
+ 
+ 
  
  # By default, C and C++ are the only stage 1 languages.
  stage1_languages=,c,
*************** if test -d ${srcdir}/gcc; then
*** 6108,6114 ****
        enable_languages="${LANGUAGES}"
          echo configure.ac: warning: setting LANGUAGES is deprecated, use --enable-languages instead 1>&2
      else
!       enable_languages=all
      fi
    else
      if test x"${enable_languages}" = x ||
--- 6088,6094 ----
        enable_languages="${LANGUAGES}"
          echo configure.ac: warning: setting LANGUAGES is deprecated, use --enable-languages instead 1>&2
      else
!       enable_languages=default
      fi
    else
      if test x"${enable_languages}" = x ||
*************** if test -d ${srcdir}/gcc; then
*** 6156,6165 ****
          language=
          lang_requires=
          lang_requires_boot_languages=
!         . ${lang_frag}
          for other in ${lang_requires} ${lang_requires_boot_languages}; do
            case ,${enable_languages}, in
  	    *,$other,*) ;;
  	    *,all,*) ;;
  	    *,$language,*)
  	      echo " \`$other' language required by \`$language'; enabling" 1>&2
--- 6136,6151 ----
          language=
          lang_requires=
          lang_requires_boot_languages=
!         # set srcdir during sourcing lang_frag to the gcc dir.
!         # Sadly overriding srcdir on the . line doesn't work in plain sh as it
!         # polutes this shell
!         saved_srcdir=${srcdir}
!         srcdir=${srcdir}/gcc . ${lang_frag}
!         srcdir=${saved_srcdir}
          for other in ${lang_requires} ${lang_requires_boot_languages}; do
            case ,${enable_languages}, in
  	    *,$other,*) ;;
+ 	    *,default,*) ;;
  	    *,all,*) ;;
  	    *,$language,*)
  	      echo " \`$other' language required by \`$language'; enabling" 1>&2
*************** if test -d ${srcdir}/gcc; then
*** 6171,6176 ****
--- 6157,6163 ----
  	  if test "$other" != "c"; then
  	    case ,${enable_stage1_languages}, in
  	      *,$other,*) ;;
+ 	      *,default,*) ;;
  	      *,all,*) ;;
  	      *)
  		case ,${enable_languages}, in
*************** if test -d ${srcdir}/gcc; then
*** 6208,6214 ****
      esac
    fi
  
!   missing_languages=`echo ",$enable_languages," | sed -e s/,all,/,/ -e s/,c,/,/ `
    potential_languages=,c,
  
    enabled_target_libs=
--- 6195,6201 ----
      esac
    fi
  
!   missing_languages=`echo ",$enable_languages," | sed -e s/,default,/,/ -e s/,all,/,/ -e s/,c,/,/ `
    potential_languages=,c,
  
    enabled_target_libs=
*************** if test -d ${srcdir}/gcc; then
*** 6229,6235 ****
          subdir_requires=
          boot_language=no
          build_by_default=yes
!         . ${lang_frag}
          if test x${language} = x; then
            echo "${lang_frag} doesn't set \$language." 1>&2
            exit 1
--- 6216,6225 ----
          subdir_requires=
          boot_language=no
          build_by_default=yes
!         # set srcdir during sourcing.  See above about save & restore
!         saved_srcdir=${srcdir}
!         srcdir=${srcdir}/gcc . ${lang_frag}
!         srcdir=${saved_srcdir}
          if test x${language} = x; then
            echo "${lang_frag} doesn't set \$language." 1>&2
            exit 1
*************** if test -d ${srcdir}/gcc; then
*** 6240,6269 ****
  	fi
  
          add_this_lang=no
!         case ,${enable_languages}, in
!           *,${language},*)
!             # Language was explicitly selected; include it
! 	    # unless it is C, which is enabled by default.
! 	    if test "$language" != "c"; then
  	      add_this_lang=yes
! 	    fi
!             ;;
!           *,all,*)
!             # 'all' was selected, select it if it is a default language
! 	    if test "$language" != "c"; then
  	      add_this_lang=${build_by_default}
! 	    fi
!             ;;
!         esac
  
          # Disable languages that need other directories if these aren't available.
  	for i in $subdir_requires; do
  	  test -f "$srcdir/gcc/$i/config-lang.in" && continue
! 	  case ,${enable_languages}, in
!             *,${language},*)
                # Specifically requested language; tell them.
                as_fn_error "The gcc/$i directory contains parts of $language but is missing" "$LINENO" 5
                ;;
              *)
                # Silently disable.
                add_this_lang=unsupported
--- 6230,6266 ----
  	fi
  
          add_this_lang=no
!         # C is always enabled, so no need to add it again
!         if test "$language" != "c"; then
!           case ,${enable_languages}, in
!             *,${language},*)
!               # Language was explicitly selected; include it
  	      add_this_lang=yes
!               ;;
! 	    *,all,*)
! 	      # All languages are enabled
! 	      add_this_lang=all
!               ;;
!             *,default,*)
!               # 'default' was selected, select it if it is a default language
  	      add_this_lang=${build_by_default}
!               ;;
!           esac
!         fi
  
          # Disable languages that need other directories if these aren't available.
  	for i in $subdir_requires; do
  	  test -f "$srcdir/gcc/$i/config-lang.in" && continue
! 	  case ${add_this_lang} in
! 	    yes)
                # Specifically requested language; tell them.
                as_fn_error "The gcc/$i directory contains parts of $language but is missing" "$LINENO" 5
                ;;
+             all)
+               { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: The gcc/$i directory contains parts of $language but is missing" >&5
+ $as_echo "$as_me: WARNING: The gcc/$i directory contains parts of $language but is missing" >&2;}
+               add_this_lang=unsupported
+               ;;
              *)
                # Silently disable.
                add_this_lang=unsupported
*************** if test -d ${srcdir}/gcc; then
*** 6272,6291 ****
  	done
  
          # Disable Ada if no preexisting GNAT is available.
!         case ,${enable_languages},:${language}:${have_gnat} in
!           *,${language},*:ada:no)
              # Specifically requested language; tell them.
              as_fn_error "GNAT is required to build $language" "$LINENO" 5
              ;;
            *:ada:no)
              # Silently disable.
              add_this_lang=unsupported
              ;;
          esac
  
! 	# Disable a language that is unsupported by the target.
! 	case " $unsupported_languages " in
! 	  *" $language "*)
  	    add_this_lang=unsupported
  	    ;;
  	esac
--- 6269,6323 ----
  	done
  
          # Disable Ada if no preexisting GNAT is available.
!         case ${add_this_lang}:${language}:${have_gnat} in
!           yes:ada:no)
              # Specifically requested language; tell them.
              as_fn_error "GNAT is required to build $language" "$LINENO" 5
              ;;
+           all:ada:no)
+             { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: GNAT is required to build $language" >&5
+ $as_echo "$as_me: WARNING: GNAT is required to build $language" >&2;}
+             add_this_lang=unsupported
+             ;;
            *:ada:no)
              # Silently disable.
              add_this_lang=unsupported
              ;;
          esac
  
!         # Disable jit if -enable-host-shared not specified
!         case ${add_this_lang}:${language}:${host_shared} in
!           yes:jit:no)
! 	    # PR jit/64780: explicitly specify --enable-host-shared
! 	    as_fn_error "
! Enabling language \"jit\" requires --enable-host-shared.
! 
! --enable-host-shared typically slows the rest of the compiler down by
! a few %, so you must explicitly enable it.
! 
! If you want to build both the jit and the regular compiler, it is often
! best to do this via two separate configure/builds, in separate
! directories, to avoid imposing the performance cost of
! --enable-host-shared on the regular compiler." "$LINENO" 5
! 	    ;;
!           all:jit:no)
! 	    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: --enable-host-shared required to build $language" >&5
! $as_echo "$as_me: WARNING: --enable-host-shared required to build $language" >&2;}
!             add_this_lang=unsupported
!             ;;
!           *:jit:no)
!             # Silently disable.
!             add_this_lang=unsupported
!             ;;
! 	esac
! 
!         # Disable a language that is unsupported by the target.
! 	case "${add_this_lang}: $unsupported_languages " in
! 	  no:*) ;;
! 	  unsupported:*) ;;
! 	  *:*" $language "*)
! 	    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: ${language} not supported for this target" >&5
! $as_echo "$as_me: WARNING: ${language} not supported for this target" >&2;}
  	    add_this_lang=unsupported
  	    ;;
  	esac
*************** if test -d ${srcdir}/gcc; then
*** 6302,6308 ****
  	    noconfigdirs="$noconfigdirs $lang_dirs"
              potential_languages="${potential_languages}${language},"
  	    ;;
!           yes)
  	    new_enable_languages="${new_enable_languages}${language},"
              potential_languages="${potential_languages}${language},"
  	    missing_languages=`echo "$missing_languages" | sed "s/,$language,/,/"`
--- 6334,6340 ----
  	    noconfigdirs="$noconfigdirs $lang_dirs"
              potential_languages="${potential_languages}${language},"
  	    ;;
!           all|yes)
  	    new_enable_languages="${new_enable_languages}${language},"
              potential_languages="${potential_languages}${language},"
  	    missing_languages=`echo "$missing_languages" | sed "s/,$language,/,/"`
*************** $as_echo "using paths configured with --
*** 6440,6458 ****
    fi
  esac
  
! # Disable libcilkrts, libitm, libsanitizer, libvtv, liboffloadmic if we're not building C++
  case ,${enable_languages}, in
    *,c++,*)
!     # Disable libcilkrts, libitm, libsanitizer if we're not building libstdc++
      case "${noconfigdirs}" in
        *target-libstdc++-v3*)
!         noconfigdirs="$noconfigdirs target-libcilkrts target-libitm target-libsanitizer"
          ;;
        *) ;;
      esac
      ;;
    *)
!     noconfigdirs="$noconfigdirs target-libcilkrts target-liboffloadmic target-libitm target-libsanitizer target-libvtv"
      ;;
  esac
  
--- 6472,6490 ----
    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++
      case "${noconfigdirs}" in
        *target-libstdc++-v3*)
!         noconfigdirs="$noconfigdirs target-libitm target-libsanitizer"
          ;;
        *) ;;
      esac
      ;;
    *)
!     noconfigdirs="$noconfigdirs target-liboffloadmic target-libitm target-libsanitizer target-libvtv"
      ;;
  esac
  
*************** case "${target}" in
*** 6876,6881 ****
--- 6908,6916 ----
    nios2-*-elf*)
      target_makefile_frag="config/mt-nios2-elf"
      ;;
+   *-*-linux-android*)
+     target_makefile_frag="config/mt-android"
+     ;;
    *-*-linux* | *-*-gnu* | *-*-k*bsd*-gnu | *-*-kopensolaris*-gnu)
      target_makefile_frag="config/mt-gnu"
      ;;
*************** fi
*** 14587,14639 ****
  # Check whether --enable-werror was given.
  if test "${enable_werror+set}" = set; then :
    enableval=$enable_werror;
- else
-   if test -d ${srcdir}/gcc && test x"`cat $srcdir/gcc/DEV-PHASE`" = xexperimental; then
-   enable_werror=yes
- else
-   enable_werror=no
- fi
- fi
- 
  case ${enable_werror} in
    yes) stage2_werror_flag="--enable-werror-always" ;;
    *) stage2_werror_flag="" ;;
  esac
  
- 
- # Enable --enable-host-shared.
- # Check whether --enable-host-shared was given.
- if test "${enable_host_shared+set}" = set; then :
-   enableval=$enable_host_shared; host_shared=$enableval
  else
-   host_shared=no
- fi
  
  
  
- # PR jit/64780: Require the user to explicitly specify
- # --enable-host-shared if the jit is enabled, hinting
- # that they might want to do a separate configure/build of
- # the jit, to avoid users from slowing down the rest of the
- # compiler by enabling the jit.
- if test ${host_shared} = "no" ; then
-   case "${enable_languages}" in
-     *jit*)
-       as_fn_error "
- Enabling language \"jit\" requires --enable-host-shared.
  
- --enable-host-shared typically slows the rest of the compiler down by
- a few %, so you must explicitly enable it.
  
- If you want to build both the jit and the regular compiler, it is often
- best to do this via two separate configure/builds, in separate
- directories, to avoid imposing the performance cost of
- --enable-host-shared on the regular compiler." "$LINENO" 5
-       ;;
-     *)
-       ;;
-   esac
- fi
  
  # Specify what files to not compare during bootstrap.
  
--- 14622,14647 ----
  # Check whether --enable-werror was given.
  if test "${enable_werror+set}" = set; then :
    enableval=$enable_werror;
  case ${enable_werror} in
    yes) stage2_werror_flag="--enable-werror-always" ;;
    *) stage2_werror_flag="" ;;
  esac
  
  else
  
+ if test -d ${srcdir}/gcc && test x"`cat $srcdir/gcc/DEV-PHASE`" = xexperimental; then
+   case $BUILD_CONFIG in
+   bootstrap-debug)
+       stage2_werror_flag="--enable-werror-always" ;;
+   "")
+       stage2_werror_flag="--enable-werror-always" ;;
+   esac
+ fi
  
+ fi
  
  
  
  
  # Specify what files to not compare during bootstrap.
  
diff -Nrcpad gcc-7.3.0/configure.ac gcc-8.1.0/configure.ac
*** gcc-7.3.0/configure.ac	Wed Mar 22 17:51:18 2017
--- gcc-8.1.0/configure.ac	Tue Feb 13 13:01:33 2018
*************** target_libraries="target-libgcc \
*** 150,156 ****
  		target-libgloss \
  		target-newlib \
  		target-libgomp \
- 		target-libcilkrts \
  		target-liboffloadmic \
  		target-libhsail-rt \
  		target-libatomic \
--- 150,155 ----
*************** if test -d ${srcdir}/libatomic; then
*** 537,558 ****
      fi
  fi
  
- # Disable libcilkrts on unsupported systems.
- if test -d ${srcdir}/libcilkrts; then
-     if test x$enable_libcilkrts = x; then
- 	AC_MSG_CHECKING([for libcilkrts support])
- 	if (srcdir=${srcdir}/libcilkrts; \
- 		. ${srcdir}/configure.tgt; \
- 		test -n "$UNSUPPORTED")
- 	then
- 	    AC_MSG_RESULT([no])
- 	    noconfigdirs="$noconfigdirs target-libcilkrts"
- 	else
- 	    AC_MSG_RESULT([yes])
- 	fi
-     fi
- fi
- 
  # Disable liboffloadmic on unsupported systems.
  if test -d ${srcdir}/liboffloadmic; then
      if test x$enable_liboffloadmic != xno; then
--- 536,541 ----
*************** case "${target}" in
*** 791,801 ****
      noconfigdirs="$noconfigdirs target-libffi"
      ;;
    powerpc-*-aix*)
-     # copied from rs6000-*-* entry
-     noconfigdirs="$noconfigdirs target-libffi"
      ;;
    rs6000-*-aix*)
-     noconfigdirs="$noconfigdirs target-libffi"
      ;;
    ft32-*-*)
      noconfigdirs="$noconfigdirs target-libffi"
--- 774,781 ----
*************** esac
*** 808,814 ****
  # Disable the go frontend on systems where it is known to not work. Please keep
  # this in sync with contrib/config-list.mk.
  case "${target}" in
! *-*-darwin* | *-*-cygwin* | *-*-mingw* | *-*-aix*)
      unsupported_languages="$unsupported_languages go"
      ;;
  esac
--- 788,794 ----
  # Disable the go frontend on systems where it is known to not work. Please keep
  # this in sync with contrib/config-list.mk.
  case "${target}" in
! *-*-darwin* | *-*-cygwin* | *-*-mingw*)
      unsupported_languages="$unsupported_languages go"
      ;;
  esac
*************** if test x$enable_libgo = x; then
*** 824,832 ****
      *-*-cygwin* | *-*-mingw*)
  	noconfigdirs="$noconfigdirs target-libgo"
  	;;
-     *-*-aix*)
- 	noconfigdirs="$noconfigdirs target-libgo"
- 	;;
      esac
  fi
  
--- 804,809 ----
*************** case "${target}" in
*** 984,993 ****
      ;;
    *-*-rtems*)
      noconfigdirs="$noconfigdirs target-libgloss"
-     # this is not caught below because this stanza matches earlier
-     case $target in
-       or1k*-*-*) noconfigdirs="$noconfigdirs gdb" ;;
-     esac
      ;;
      # The tpf target doesn't support gdb yet.
    *-*-tpf*)
--- 961,966 ----
*************** case "${target}" in
*** 1193,1201 ****
    nvptx*-*-*)
      noconfigdirs="$noconfigdirs target-libssp target-libstdc++-v3 target-libobjc"
      ;;
-   or1k*-*-*)
-     noconfigdirs="$noconfigdirs gdb"
-     ;;
    sh-*-*)
      case "${target}" in
        sh*-*-elf)
--- 1166,1171 ----
*************** case "${target}" in
*** 1221,1226 ****
--- 1191,1199 ----
    vax-*-*)
      noconfigdirs="$noconfigdirs target-newlib target-libgloss"
      ;;
+   wasm32-*-*)
+     noconfigdirs="$noconfigdirs ld"
+     ;;
  esac
  
  # If we aren't building newlib, then don't build libgloss, since libgloss
*************** AC_ARG_ENABLE(linker-plugin-flags,
*** 1766,1771 ****
--- 1739,1751 ----
    extra_linker_plugin_flags=)
  AC_SUBST(extra_linker_plugin_flags)
  
+ # Enable --enable-host-shared.
+ # Checked early to determine whether jit is an 'all' language
+ AC_ARG_ENABLE(host-shared,
+ [AS_HELP_STRING([--enable-host-shared],
+ 		[build host code as shared libraries])],
+ [host_shared=$enableval], [host_shared=no])
+ AC_SUBST(host_shared)
  
  # By default, C and C++ are the only stage 1 languages.
  stage1_languages=,c,
*************** if test -d ${srcdir}/gcc; then
*** 1784,1790 ****
        enable_languages="${LANGUAGES}"
          echo configure.ac: warning: setting LANGUAGES is deprecated, use --enable-languages instead 1>&2
      else
!       enable_languages=all
      fi
    else
      if test x"${enable_languages}" = x ||
--- 1764,1770 ----
        enable_languages="${LANGUAGES}"
          echo configure.ac: warning: setting LANGUAGES is deprecated, use --enable-languages instead 1>&2
      else
!       enable_languages=default
      fi
    else
      if test x"${enable_languages}" = x ||
*************** if test -d ${srcdir}/gcc; then
*** 1832,1841 ****
          language=
          lang_requires=
          lang_requires_boot_languages=
!         . ${lang_frag}
          for other in ${lang_requires} ${lang_requires_boot_languages}; do
            case ,${enable_languages}, in
  	    *,$other,*) ;;
  	    *,all,*) ;;
  	    *,$language,*)
  	      echo " \`$other' language required by \`$language'; enabling" 1>&2
--- 1812,1827 ----
          language=
          lang_requires=
          lang_requires_boot_languages=
!         # set srcdir during sourcing lang_frag to the gcc dir.
!         # Sadly overriding srcdir on the . line doesn't work in plain sh as it
!         # polutes this shell
!         saved_srcdir=${srcdir}
!         srcdir=${srcdir}/gcc . ${lang_frag}
!         srcdir=${saved_srcdir}
          for other in ${lang_requires} ${lang_requires_boot_languages}; do
            case ,${enable_languages}, in
  	    *,$other,*) ;;
+ 	    *,default,*) ;;
  	    *,all,*) ;;
  	    *,$language,*)
  	      echo " \`$other' language required by \`$language'; enabling" 1>&2
*************** if test -d ${srcdir}/gcc; then
*** 1847,1852 ****
--- 1833,1839 ----
  	  if test "$other" != "c"; then
  	    case ,${enable_stage1_languages}, in
  	      *,$other,*) ;;
+ 	      *,default,*) ;;
  	      *,all,*) ;;
  	      *)
  		case ,${enable_languages}, in
*************** if test -d ${srcdir}/gcc; then
*** 1884,1890 ****
      esac
    fi
  
!   missing_languages=`echo ",$enable_languages," | sed -e s/,all,/,/ -e s/,c,/,/ `
    potential_languages=,c,
  
    enabled_target_libs=
--- 1871,1877 ----
      esac
    fi
  
!   missing_languages=`echo ",$enable_languages," | sed -e s/,default,/,/ -e s/,all,/,/ -e s/,c,/,/ `
    potential_languages=,c,
  
    enabled_target_libs=
*************** if test -d ${srcdir}/gcc; then
*** 1905,1911 ****
          subdir_requires=
          boot_language=no
          build_by_default=yes
!         . ${lang_frag}
          if test x${language} = x; then
            echo "${lang_frag} doesn't set \$language." 1>&2
            exit 1
--- 1892,1901 ----
          subdir_requires=
          boot_language=no
          build_by_default=yes
!         # set srcdir during sourcing.  See above about save & restore
!         saved_srcdir=${srcdir}
!         srcdir=${srcdir}/gcc . ${lang_frag}
!         srcdir=${saved_srcdir}
          if test x${language} = x; then
            echo "${lang_frag} doesn't set \$language." 1>&2
            exit 1
*************** if test -d ${srcdir}/gcc; then
*** 1916,1945 ****
  	fi
  
          add_this_lang=no
!         case ,${enable_languages}, in
!           *,${language},*)
!             # Language was explicitly selected; include it
! 	    # unless it is C, which is enabled by default.
! 	    if test "$language" != "c"; then
  	      add_this_lang=yes
! 	    fi
!             ;;
!           *,all,*)
!             # 'all' was selected, select it if it is a default language
! 	    if test "$language" != "c"; then
  	      add_this_lang=${build_by_default}
! 	    fi
!             ;;
!         esac
  
          # Disable languages that need other directories if these aren't available.
  	for i in $subdir_requires; do
  	  test -f "$srcdir/gcc/$i/config-lang.in" && continue
! 	  case ,${enable_languages}, in
!             *,${language},*)
                # Specifically requested language; tell them.
                AC_MSG_ERROR([The gcc/$i directory contains parts of $language but is missing])
                ;;
              *)
                # Silently disable.
                add_this_lang=unsupported
--- 1906,1941 ----
  	fi
  
          add_this_lang=no
!         # C is always enabled, so no need to add it again
!         if test "$language" != "c"; then
!           case ,${enable_languages}, in
!             *,${language},*)
!               # Language was explicitly selected; include it
  	      add_this_lang=yes
!               ;;
! 	    *,all,*)
! 	      # All languages are enabled
! 	      add_this_lang=all
!               ;;
!             *,default,*)
!               # 'default' was selected, select it if it is a default language
  	      add_this_lang=${build_by_default}
!               ;;
!           esac
!         fi
  
          # Disable languages that need other directories if these aren't available.
  	for i in $subdir_requires; do
  	  test -f "$srcdir/gcc/$i/config-lang.in" && continue
! 	  case ${add_this_lang} in
! 	    yes)
                # Specifically requested language; tell them.
                AC_MSG_ERROR([The gcc/$i directory contains parts of $language but is missing])
                ;;
+             all)
+               AC_MSG_WARN([The gcc/$i directory contains parts of $language but is missing])
+               add_this_lang=unsupported
+               ;;
              *)
                # Silently disable.
                add_this_lang=unsupported
*************** if test -d ${srcdir}/gcc; then
*** 1948,1967 ****
  	done
  
          # Disable Ada if no preexisting GNAT is available.
!         case ,${enable_languages},:${language}:${have_gnat} in
!           *,${language},*:ada:no)
              # Specifically requested language; tell them.
              AC_MSG_ERROR([GNAT is required to build $language])
              ;;
            *:ada:no)
              # Silently disable.
              add_this_lang=unsupported
              ;;
          esac
  
! 	# Disable a language that is unsupported by the target.
! 	case " $unsupported_languages " in
! 	  *" $language "*)
  	    add_this_lang=unsupported
  	    ;;
  	esac
--- 1944,1995 ----
  	done
  
          # Disable Ada if no preexisting GNAT is available.
!         case ${add_this_lang}:${language}:${have_gnat} in
!           yes:ada:no)
              # Specifically requested language; tell them.
              AC_MSG_ERROR([GNAT is required to build $language])
              ;;
+           all:ada:no)
+             AC_MSG_WARN([GNAT is required to build $language])
+             add_this_lang=unsupported
+             ;;
            *:ada:no)
              # Silently disable.
              add_this_lang=unsupported
              ;;
          esac
  
!         # Disable jit if -enable-host-shared not specified
!         case ${add_this_lang}:${language}:${host_shared} in
!           yes:jit:no)
! 	    # PR jit/64780: explicitly specify --enable-host-shared
! 	    AC_MSG_ERROR([
! Enabling language "jit" requires --enable-host-shared.
! 
! --enable-host-shared typically slows the rest of the compiler down by
! a few %, so you must explicitly enable it.
! 
! If you want to build both the jit and the regular compiler, it is often
! best to do this via two separate configure/builds, in separate
! directories, to avoid imposing the performance cost of
! --enable-host-shared on the regular compiler.])
! 	    ;;
!           all:jit:no)
! 	    AC_MSG_WARN([--enable-host-shared required to build $language])
!             add_this_lang=unsupported
!             ;;
!           *:jit:no)
!             # Silently disable.
!             add_this_lang=unsupported
!             ;;
! 	esac
! 
!         # Disable a language that is unsupported by the target.
! 	case "${add_this_lang}: $unsupported_languages " in
! 	  no:*) ;;
! 	  unsupported:*) ;;
! 	  *:*" $language "*)
! 	    AC_MSG_WARN([${language} not supported for this target])
  	    add_this_lang=unsupported
  	    ;;
  	esac
*************** if test -d ${srcdir}/gcc; then
*** 1978,1984 ****
  	    noconfigdirs="$noconfigdirs $lang_dirs"
              potential_languages="${potential_languages}${language},"
  	    ;;
!           yes)
  	    new_enable_languages="${new_enable_languages}${language},"
              potential_languages="${potential_languages}${language},"
  	    missing_languages=`echo "$missing_languages" | sed "s/,$language,/,/"`
--- 2006,2012 ----
  	    noconfigdirs="$noconfigdirs $lang_dirs"
              potential_languages="${potential_languages}${language},"
  	    ;;
!           all|yes)
  	    new_enable_languages="${new_enable_languages}${language},"
              potential_languages="${potential_languages}${language},"
  	    missing_languages=`echo "$missing_languages" | sed "s/,$language,/,/"`
*************** case ,${enable_languages},:${enable_objc
*** 2107,2125 ****
    fi
  esac
  
! # Disable libcilkrts, libitm, libsanitizer, libvtv, liboffloadmic if we're not building C++
  case ,${enable_languages}, in
    *,c++,*)
!     # Disable libcilkrts, libitm, libsanitizer if we're not building libstdc++
      case "${noconfigdirs}" in
        *target-libstdc++-v3*)
!         noconfigdirs="$noconfigdirs target-libcilkrts target-libitm target-libsanitizer"
          ;;
        *) ;;
      esac
      ;;
    *)
!     noconfigdirs="$noconfigdirs target-libcilkrts target-liboffloadmic target-libitm target-libsanitizer target-libvtv"
      ;;
  esac
  
--- 2135,2153 ----
    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++
      case "${noconfigdirs}" in
        *target-libstdc++-v3*)
!         noconfigdirs="$noconfigdirs target-libitm target-libsanitizer"
          ;;
        *) ;;
      esac
      ;;
    *)
!     noconfigdirs="$noconfigdirs target-liboffloadmic target-libitm target-libsanitizer target-libvtv"
      ;;
  esac
  
*************** case "${target}" in
*** 2474,2479 ****
--- 2502,2510 ----
    nios2-*-elf*)
      target_makefile_frag="config/mt-nios2-elf"
      ;;
+   *-*-linux-android*)
+     target_makefile_frag="config/mt-android"
+     ;;
    *-*-linux* | *-*-gnu* | *-*-k*bsd*-gnu | *-*-kopensolaris*-gnu)
      target_makefile_frag="config/mt-gnu"
      ;;
*************** AC_SUBST(stage1_checking)
*** 3461,3508 ****
  # Enable -Werror in bootstrap stage2 and later.
  AC_ARG_ENABLE(werror,
  [AS_HELP_STRING([--enable-werror],
! 		[enable -Werror in bootstrap stage2 and later])], [],
! [if test -d ${srcdir}/gcc && test x"`cat $srcdir/gcc/DEV-PHASE`" = xexperimental; then
!   enable_werror=yes
! else
!   enable_werror=no
! fi])
  case ${enable_werror} in
    yes) stage2_werror_flag="--enable-werror-always" ;;
    *) stage2_werror_flag="" ;;
  esac
! AC_SUBST(stage2_werror_flag)
! 
! # Enable --enable-host-shared.
! AC_ARG_ENABLE(host-shared,
! [AS_HELP_STRING([--enable-host-shared],
! 		[build host code as shared libraries])],
! [host_shared=$enableval], [host_shared=no])
! AC_SUBST(host_shared)
! 
! # PR jit/64780: Require the user to explicitly specify
! # --enable-host-shared if the jit is enabled, hinting
! # that they might want to do a separate configure/build of
! # the jit, to avoid users from slowing down the rest of the
! # compiler by enabling the jit.
! if test ${host_shared} = "no" ; then
!   case "${enable_languages}" in
!     *jit*)
!       AC_MSG_ERROR([
! Enabling language "jit" requires --enable-host-shared.
! 
! --enable-host-shared typically slows the rest of the compiler down by
! a few %, so you must explicitly enable it.
! 
! If you want to build both the jit and the regular compiler, it is often
! best to do this via two separate configure/builds, in separate
! directories, to avoid imposing the performance cost of
! --enable-host-shared on the regular compiler.])
!       ;;
!     *)
!       ;;
    esac
  fi
  
  # Specify what files to not compare during bootstrap.
  
--- 3492,3516 ----
  # Enable -Werror in bootstrap stage2 and later.
  AC_ARG_ENABLE(werror,
  [AS_HELP_STRING([--enable-werror],
! 		[enable -Werror in bootstrap stage2 and later])],
! [
  case ${enable_werror} in
    yes) stage2_werror_flag="--enable-werror-always" ;;
    *) stage2_werror_flag="" ;;
  esac
! ],
! [
! if test -d ${srcdir}/gcc && test x"`cat $srcdir/gcc/DEV-PHASE`" = xexperimental; then
!   case $BUILD_CONFIG in
!   bootstrap-debug)
!       stage2_werror_flag="--enable-werror-always" ;;
!   "")
!       stage2_werror_flag="--enable-werror-always" ;;
    esac
  fi
+ ])
+ 
+ AC_SUBST(stage2_werror_flag)
  
  # Specify what files to not compare during bootstrap.
  
diff -Nrcpad gcc-7.3.0/contrib/ChangeLog gcc-8.1.0/contrib/ChangeLog
*** gcc-7.3.0/contrib/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-8.1.0/contrib/ChangeLog	Wed May  2 08:13:49 2018
***************
*** 1,23 ****
! 2018-01-25  Release Manager
  
! 	* GCC 7.3.0 released.
  
  2017-10-02  Thomas Schwinge  <thomas@codesourcery.com>
  
  	* gcc_update (files_and_dependencies): Handle libbacktrace.
  
! 2017-08-14  Release Manager
  
! 	* GCC 7.2.0 released.
  
! 2017-05-02  Release Manager
  
! 	* GCC 7.1.0 released.
  
  2017-05-02  Jakub Jelinek  <jakub@redhat.com>
  
  	* gennews (files): Add files for GCC 7.
  
  2017-04-11  Damian Rouson  <damian@sourceryinstitute.org>
  
          * download_prerequisites (md5_check): New function emulates Linux
--- 1,147 ----
! 2018-05-02  Release Manager
  
! 	* GCC 8.1.0 released.
! 
! 2018-05-02  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* gennews (files): Add files for GCC 8.
! 
! 2018-03-21  Christophe Lyon  <christophe.lyon@linaro.org>
! 
! 	* test_summary: Match possible single quotes in configure path.
! 
! 2018-03-02  Thomas Schwinge  <thomas@codesourcery.com>
! 
! 	* update-copyright.py: Remove "libcilkrts" reference.
! 
! 2018-02-19  Yury Gribov  <tetra2005@gmail.com>
! 
! 	* compare_tests: Use TMPDIR when set.
! 	* dg-cmp-results.sh: Ditto.
! 	* warn_summary: Ditto.
! 
! 2018-01-29  Jonathan Wakely  <jwakely@redhat.com>
! 
! 	* download_prerequisites: Use shasum for FreeBSD and DragonFly.
! 
! 2018-01-19  Martin Liska  <mliska@suse.cz>
! 
! 	* analyze_brprob.py: Support new format that can be easily
! 	parsed. Add new column to report.
! 
! 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* update-copyright.py: Skip pdt-5.f03 in gfortran.dg subdir.
! 
! 2017-11-28  Julia Koval  <julia.koval@intel.com>
!             Sebastian Peryt  <sebastian.peryt@intel.com>
! 
! 	* contrib/gcc_update: Ditto.
! 
! 2017-11-08  Martin Liska  <mliska@suse.cz>
! 
! 	* analyze_brprob.py: Fix abbreviations for SI units.
  
  2017-10-02  Thomas Schwinge  <thomas@codesourcery.com>
  
  	* gcc_update (files_and_dependencies): Handle libbacktrace.
  
! 2017-09-18  Richard Biener  <rguenther@suse.de>
  
! 	* download_prerequisites (isl): Bump version to 0.18.
  
! 2017-08-02  Yury Gribov  <tetra2005@gmail.com>
  
! 	* mklog: Added new implementation.
! 
! 2017-08-02  Yury Gribov  <tetra2005@gmail.com>
! 
! 	* mklog: Rename to ...
! 	* mklog.pl: this.
! 
! 2017-07-17  Yury Gribov  <tetra2005@gmail.com>
! 
! 	* mklog: Fix extraction of changed file name.
! 
! 2017-07-17  Georg-Johann Lay  <avr@gjlay.de>
! 
! 	* gcc_update (files_and_dependencies)
! 	[gcc/config/avr/avr-tables.opt]: Remove dead entry.
! 
! 2017-06-28  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc.doxy: Add default location for filters and output folder.
! 	* filter_gcc_for_doxygen_new: Rename to filter_gcc_for_doxygen.
! 	* filter_params.pl: Remove.
! 
! 2017-06-21  Thomas Preud'homme  <thomas.preudhomme@arm.com>
! 
! 	* dg-cmp-results.sh: Restore filtering on target variant.
! 
! 2017-06-20  Thomas Preud'homme  <thomas.preudhomme@arm.com>
! 
! 	* dg-cmp-results.sh: Keep test result lines rather than throwing
! 	header and summary to support sum files with multiple tools.
! 
! 2017-05-31  Martin Liska  <mliska@suse.cz>
! 
! 	* filter_params.py:
! 	Transform ENUM_BITFIELD and comments starting with '/**'
! 
! 2017-05-31  David Malcolm  <dmalcolm@redhat.com>
! 	    Martin Liska  <mliska@suse.cz>
! 
! 	* filter_params.py: New, porting the perl script to python,
! 	adding a test suite.
! 	* filter_gcc_for_doxygen_new: New file.
! 
! 2017-05-30  Martin Liska  <mliska@suse.cz>
! 
! 	* analyze_brprob.py: Add new argument to parse and modify
! 	predict.def file.
! 	* analyze_brprob_spec.py: Likewise.
! 
! 2017-05-29  Tom de Vries  <tom@codesourcery.com>
! 
! 	* check_GNU_style_lib.py (TrailingWhitespaceCheck.check): Assert no
! 	trailing eol.
! 	(TrailingWhitespaceTest): New unit test.
! 	(check_GNU_style_file): Remove eol before checking.
! 
! 2017-05-29  Tom de Vries  <tom@codesourcery.com>
! 
! 	* check_GNU_style_lib.py (check_GNU_style_file): Treat file argument as
! 	file handle.  Add and handle file_encoding argument.
! 	* check_GNU_style.py (main): Handle '-' file argument.  Call
! 	check_GNU_style_file with file handle as argument.
! 
! 2017-05-29  Tom de Vries  <tom@codesourcery.com>
! 
! 	* check_GNU_style_lib.py: Use import_pip3 to import pip3 packages.
! 	(import_pip3): New function.
! 
! 2017-05-24  Tom de Vries  <tom@codesourcery.com>
! 
! 	* check_GNU_style_lib.py: New file, factored out of ...
! 	* check_GNU_style.py: ... here.  Call main unconditionally.
! 
! 2017-05-19  Martin Liska  <mliska@suse.cz>
! 
! 	* check_GNU_style.py: New file.
! 
! 2007-05-03  Jeff Law  <law@redhat.com>
! 
! 	* config-list.mk (am33_2.0-linux): Remove from list of targets
! 	to build.
  
  2017-05-02  Jakub Jelinek  <jakub@redhat.com>
  
  	* gennews (files): Add files for GCC 7.
  
+ 2017-04-26  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	* gen_autofdo_event.py: Fix comment.
+ 
  2017-04-11  Damian Rouson  <damian@sourceryinstitute.org>
  
          * download_prerequisites (md5_check): New function emulates Linux
diff -Nrcpad gcc-7.3.0/contrib/analyze_brprob.py gcc-8.1.0/contrib/analyze_brprob.py
*** gcc-7.3.0/contrib/analyze_brprob.py	Wed Dec 14 10:30:24 2016
--- gcc-8.1.0/contrib/analyze_brprob.py	Fri Jan 19 12:03:24 2018
*************** from math import *
*** 71,76 ****
--- 71,77 ----
  
  counter_aggregates = set(['combined', 'first match', 'DS theory',
      'no prediction'])
+ hot_threshold = 10
  
  def percentage(a, b):
      return 100.0 * a / b
*************** def median(values):
*** 90,127 ****
      values.sort()
      return values[int(len(values) / 2)]
  
  class Summary:
      def __init__(self, name):
          self.name = name
!         self.branches = 0
!         self.successfull_branches = 0
!         self.count = 0
!         self.hits = 0
!         self.fits = 0
  
      def get_hitrate(self):
!         return 100.0 * self.hits / self.count
  
      def get_branch_hitrate(self):
!         return 100.0 * self.successfull_branches / self.branches
  
      def count_formatted(self):
!         v = self.count
!         for unit in ['','K','M','G','T','P','E','Z']:
              if v < 1000:
                  return "%3.2f%s" % (v, unit)
              v /= 1000.0
          return "%.1f%s" % (v, 'Y')
  
!     def print(self, branches_max, count_max):
          print('%-40s %8i %5.1f%% %11.2f%% %7.2f%% / %6.2f%% %14i %8s %5.1f%%' %
!             (self.name, self.branches,
!                 percentage(self.branches, branches_max),
                  self.get_branch_hitrate(),
                  self.get_hitrate(),
!                 percentage(self.fits, self.count),
!                 self.count, self.count_formatted(),
!                 percentage(self.count, count_max)))
  
  class Profile:
      def __init__(self, filename):
--- 91,219 ----
      values.sort()
      return values[int(len(values) / 2)]
  
+ class PredictDefFile:
+     def __init__(self, path):
+         self.path = path
+         self.predictors = {}
+ 
+     def parse_and_modify(self, heuristics, write_def_file):
+         lines = [x.rstrip() for x in open(self.path).readlines()]
+ 
+         p = None
+         modified_lines = []
+         for l in lines:
+             if l.startswith('DEF_PREDICTOR'):
+                 m = re.match('.*"(.*)".*', l)
+                 p = m.group(1)
+             elif l == '':
+                 p = None
+ 
+             if p != None:
+                 heuristic = [x for x in heuristics if x.name == p]
+                 heuristic = heuristic[0] if len(heuristic) == 1 else None
+ 
+                 m = re.match('.*HITRATE \(([^)]*)\).*', l)
+                 if (m != None):
+                     self.predictors[p] = int(m.group(1))
+ 
+                     # modify the line
+                     if heuristic != None:
+                         new_line = (l[:m.start(1)]
+                             + str(round(heuristic.get_hitrate()))
+                             + l[m.end(1):])
+                         l = new_line
+                     p = None
+                 elif 'PROB_VERY_LIKELY' in l:
+                     self.predictors[p] = 100
+             modified_lines.append(l)
+ 
+         # save the file
+         if write_def_file:
+             with open(self.path, 'w+') as f:
+                 for l in modified_lines:
+                     f.write(l + '\n')
+ class Heuristics:
+     def __init__(self, count, hits, fits):
+         self.count = count
+         self.hits = hits
+         self.fits = fits
+ 
  class Summary:
      def __init__(self, name):
          self.name = name
!         self.edges= []
! 
!     def branches(self):
!         return len(self.edges)
! 
!     def hits(self):
!         return sum([x.hits for x in self.edges])
! 
!     def fits(self):
!         return sum([x.fits for x in self.edges])
! 
!     def count(self):
!         return sum([x.count for x in self.edges])
! 
!     def successfull_branches(self):
!         return len([x for x in self.edges if 2 * x.hits >= x.count])
  
      def get_hitrate(self):
!         return 100.0 * self.hits() / self.count()
  
      def get_branch_hitrate(self):
!         return 100.0 * self.successfull_branches() / self.branches()
  
      def count_formatted(self):
!         v = self.count()
!         for unit in ['', 'k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y']:
              if v < 1000:
                  return "%3.2f%s" % (v, unit)
              v /= 1000.0
          return "%.1f%s" % (v, 'Y')
  
!     def count(self):
!         return sum([x.count for x in self.edges])
! 
!     def print(self, branches_max, count_max, predict_def):
!         # filter out most hot edges (if requested)
!         self.edges = sorted(self.edges, reverse = True, key = lambda x: x.count)
!         if args.coverage_threshold != None:
!             threshold = args.coverage_threshold * self.count() / 100
!             edges = [x for x in self.edges if x.count < threshold]
!             if len(edges) != 0:
!                 self.edges = edges
! 
!         predicted_as = None
!         if predict_def != None and self.name in predict_def.predictors:
!             predicted_as = predict_def.predictors[self.name]
! 
          print('%-40s %8i %5.1f%% %11.2f%% %7.2f%% / %6.2f%% %14i %8s %5.1f%%' %
!             (self.name, self.branches(),
!                 percentage(self.branches(), branches_max),
                  self.get_branch_hitrate(),
                  self.get_hitrate(),
!                 percentage(self.fits(), self.count()),
!                 self.count(), self.count_formatted(),
!                 percentage(self.count(), count_max)), end = '')
! 
!         if predicted_as != None:
!             print('%12i%% %5.1f%%' % (predicted_as,
!                 self.get_hitrate() - predicted_as), end = '')
!         else:
!             print(' ' * 20, end = '')
! 
!         # print details about the most important edges
!         if args.coverage_threshold == None:
!             edges = [x for x in self.edges[:100] if x.count * hot_threshold > self.count()]
!             if args.verbose:
!                 for c in edges:
!                     r = 100.0 * c.count / self.count()
!                     print(' %.0f%%:%d' % (r, c.count), end = '')
!             elif len(edges) > 0:
!                 print(' %0.0f%%:%d' % (100.0 * sum([x.count for x in edges]) / self.count(), len(edges)), end = '')
! 
!         print()
  
  class Profile:
      def __init__(self, filename):
*************** class Profile:
*** 134,166 ****
              self.heuristics[name] = Summary(name)
  
          s = self.heuristics[name]
-         s.branches += 1
  
-         s.count += count
          if prediction < 50:
              hits = count - hits
          remaining = count - hits
!         if hits >= remaining:
!             s.successfull_branches += 1
  
!         s.hits += hits
!         s.fits += max(hits, remaining)
  
      def add_loop_niter(self, niter):
          if niter > 0:
              self.niter_vector.append(niter)
  
      def branches_max(self):
!         return max([v.branches for k, v in self.heuristics.items()])
  
      def count_max(self):
!         return max([v.count for k, v in self.heuristics.items()])
  
!     def print_group(self, sorting, group_name, heuristics):
          count_max = self.count_max()
          branches_max = self.branches_max()
  
!         sorter = lambda x: x.branches
          if sorting == 'branch-hitrate':
              sorter = lambda x: x.get_branch_hitrate()
          elif sorting == 'hitrate':
--- 226,254 ----
              self.heuristics[name] = Summary(name)
  
          s = self.heuristics[name]
  
          if prediction < 50:
              hits = count - hits
          remaining = count - hits
!         fits = max(hits, remaining)
  
!         s.edges.append(Heuristics(count, hits, fits))
  
      def add_loop_niter(self, niter):
          if niter > 0:
              self.niter_vector.append(niter)
  
      def branches_max(self):
!         return max([v.branches() for k, v in self.heuristics.items()])
  
      def count_max(self):
!         return max([v.count() for k, v in self.heuristics.items()])
  
!     def print_group(self, sorting, group_name, heuristics, predict_def):
          count_max = self.count_max()
          branches_max = self.branches_max()
  
!         sorter = lambda x: x.branches()
          if sorting == 'branch-hitrate':
              sorter = lambda x: x.get_branch_hitrate()
          elif sorting == 'hitrate':
*************** class Profile:
*** 170,180 ****
          elif sorting == 'name':
              sorter = lambda x: x.name.lower()
  
!         print('%-40s %8s %6s %12s %18s %14s %8s %6s' %
              ('HEURISTICS', 'BRANCHES', '(REL)',
!             'BR. HITRATE', 'HITRATE', 'COVERAGE', 'COVERAGE', '(REL)'))
          for h in sorted(heuristics, key = sorter):
!             h.print(branches_max, count_max)
  
      def dump(self, sorting):
          heuristics = self.heuristics.values()
--- 258,269 ----
          elif sorting == 'name':
              sorter = lambda x: x.name.lower()
  
!         print('%-40s %8s %6s %12s %18s %14s %8s %6s %12s %6s %s' %
              ('HEURISTICS', 'BRANCHES', '(REL)',
!             'BR. HITRATE', 'HITRATE', 'COVERAGE', 'COVERAGE', '(REL)',
!             'predict.def', '(REL)', 'HOT branches (>%d%%)' % hot_threshold))
          for h in sorted(heuristics, key = sorter):
!             h.print(branches_max, count_max, predict_def)
  
      def dump(self, sorting):
          heuristics = self.heuristics.values()
*************** class Profile:
*** 182,195 ****
              print('No heuristics available')
              return
  
          special = list(filter(lambda x: x.name in counter_aggregates,
              heuristics))
          normal = list(filter(lambda x: x.name not in counter_aggregates,
              heuristics))
  
!         self.print_group(sorting, 'HEURISTICS', normal)
          print()
!         self.print_group(sorting, 'HEURISTIC AGGREGATES', special)
  
          if len(self.niter_vector) > 0:
              print ('\nLoop count: %d' % len(self.niter_vector)),
--- 271,289 ----
              print('No heuristics available')
              return
  
+         predict_def = None
+         if args.def_file != None:
+             predict_def = PredictDefFile(args.def_file)
+             predict_def.parse_and_modify(heuristics, args.write_def_file)
+ 
          special = list(filter(lambda x: x.name in counter_aggregates,
              heuristics))
          normal = list(filter(lambda x: x.name not in counter_aggregates,
              heuristics))
  
!         self.print_group(sorting, 'HEURISTICS', normal, predict_def)
          print()
!         self.print_group(sorting, 'HEURISTIC AGGREGATES', special, predict_def)
  
          if len(self.niter_vector) > 0:
              print ('\nLoop count: %d' % len(self.niter_vector)),
*************** parser.add_argument('dump_file', metavar
*** 206,224 ****
  parser.add_argument('-s', '--sorting', dest = 'sorting',
      choices = ['branches', 'branch-hitrate', 'hitrate', 'coverage', 'name'],
      default = 'branches')
  
  args = parser.parse_args()
  
! profile = Profile(sys.argv[1])
! r = re.compile('  (.*) heuristics( of edge [0-9]*->[0-9]*)?( \\(.*\\))?: (.*)%.*exec ([0-9]*) hit ([0-9]*)')
  loop_niter_str = ';;  profile-based iteration count: '
! for l in open(args.dump_file).readlines():
!     m = r.match(l)
!     if m != None and m.group(3) == None:
!         name = m.group(1)
!         prediction = float(m.group(4))
!         count = int(m.group(5))
!         hits = int(m.group(6))
  
          profile.add(name, prediction, count, hits)
      elif l.startswith(loop_niter_str):
--- 300,325 ----
  parser.add_argument('-s', '--sorting', dest = 'sorting',
      choices = ['branches', 'branch-hitrate', 'hitrate', 'coverage', 'name'],
      default = 'branches')
+ parser.add_argument('-d', '--def-file', help = 'path to predict.def')
+ parser.add_argument('-w', '--write-def-file', action = 'store_true',
+     help = 'Modify predict.def file in order to set new numbers')
+ parser.add_argument('-c', '--coverage-threshold', type = int,
+     help = 'Ignore edges that have percentage coverage >= coverage-threshold')
+ parser.add_argument('-v', '--verbose', action = 'store_true', help = 'Print verbose informations')
  
  args = parser.parse_args()
  
! profile = Profile(args.dump_file)
  loop_niter_str = ';;  profile-based iteration count: '
! 
! for l in open(args.dump_file):
!     if l.startswith(';;heuristics;'):
!         parts = l.strip().split(';')
!         assert len(parts) == 8
!         name = parts[3]
!         prediction = float(parts[6])
!         count = int(parts[4])
!         hits = int(parts[5])
  
          profile.add(name, prediction, count, hits)
      elif l.startswith(loop_niter_str):
diff -Nrcpad gcc-7.3.0/contrib/analyze_brprob_spec.py gcc-8.1.0/contrib/analyze_brprob_spec.py
*** gcc-7.3.0/contrib/analyze_brprob_spec.py	Wed Dec 14 10:30:24 2016
--- gcc-8.1.0/contrib/analyze_brprob_spec.py	Tue May 30 07:16:31 2017
*************** parser.add_argument('location', metavar
*** 30,35 ****
--- 30,36 ----
  parser.add_argument('-s', '--sorting', dest = 'sorting',
      choices = ['branches', 'branch-hitrate', 'hitrate', 'coverage', 'name'],
      default = 'branches')
+ parser.add_argument('-d', '--def-file', help = 'path to predict.def')
  
  args = parser.parse_args()
  
*************** for b in sorted(benchmarks):
*** 56,61 ****
--- 57,65 ----
      sys.stdout.flush()
      p = [os.path.join(os.path.dirname(script_location), 'analyze_brprob.py'),
          temp.name, '--sorting', args.sorting]
+     if args.def_file != None:
+         p += ['-d', args.def_file]
+ 
      p = subprocess.check_call(p)
      sys.stdout.flush()
  
diff -Nrcpad gcc-7.3.0/contrib/check_GNU_style.py gcc-8.1.0/contrib/check_GNU_style.py
*** gcc-7.3.0/contrib/check_GNU_style.py	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/contrib/check_GNU_style.py	Mon May 29 07:31:02 2017
***************
*** 0 ****
--- 1,43 ----
+ #!/usr/bin/env python3
+ #
+ # 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
+ # replace the former script.
+ #
+ # 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/>.  */
+ 
+ import argparse
+ import sys
+ from check_GNU_style_lib import check_GNU_style_file
+ 
+ def main():
+     parser = argparse.ArgumentParser(description='Check GNU coding style.')
+     parser.add_argument('file', help = 'File with a patch')
+     parser.add_argument('-f', '--format', default = 'stdio',
+         help = 'Display format',
+         choices = ['stdio', 'quickfix'])
+     args = parser.parse_args()
+     filename = args.file
+     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()
diff -Nrcpad gcc-7.3.0/contrib/check_GNU_style_lib.py gcc-8.1.0/contrib/check_GNU_style_lib.py
*** gcc-7.3.0/contrib/check_GNU_style_lib.py	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/contrib/check_GNU_style_lib.py	Mon May 29 07:31:11 2017
***************
*** 0 ****
--- 1,292 ----
+ #!/usr/bin/env python3
+ #
+ # 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
+ # replace the former script.
+ #
+ # 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/>.  */
+ #
+ # The script requires python packages, which can be installed via pip3
+ # like this:
+ # $ pip3 install unidiff termcolor
+ 
+ import sys
+ import re
+ import unittest
+ 
+ def import_pip3(*args):
+     missing=[]
+     for (module, names) in args:
+         try:
+             lib = __import__(module)
+         except ImportError:
+             missing.append(module)
+             continue
+         if not isinstance(names, list):
+             names=[names]
+         for name in names:
+             globals()[name]=getattr(lib, name)
+     if len(missing) > 0:
+         missing_and_sep = ' and '.join(missing)
+         missing_space_sep = ' '.join(missing)
+         print('%s %s missing (run: pip3 install %s)'
+               % (missing_and_sep,
+                  ("module is" if len(missing) == 1 else "modules are"),
+                  missing_space_sep))
+         exit(3)
+ 
+ import_pip3(('termcolor', 'colored'),
+             ('unidiff', 'PatchSet'))
+ 
+ from itertools import *
+ 
+ ws_char = '█'
+ ts = 8
+ 
+ def error_string(s):
+     return colored(s, 'red', attrs = ['bold'])
+ 
+ class CheckError:
+     def __init__(self, filename, lineno, console_error, error_message,
+         column = -1):
+         self.filename = filename
+         self.lineno = lineno
+         self.console_error = console_error
+         self.error_message = error_message
+         self.column = column
+ 
+     def error_location(self):
+         return '%s:%d:%d:' % (self.filename, self.lineno,
+             self.column if self.column != -1 else -1)
+ 
+ class LineLengthCheck:
+     def __init__(self):
+         self.limit = 80
+         self.expanded_tab = ' ' * ts
+ 
+     def check(self, filename, lineno, line):
+         line_expanded = line.replace('\t', self.expanded_tab)
+         if len(line_expanded) > self.limit:
+             return CheckError(filename, lineno,
+                 line_expanded[:self.limit]
+                     + error_string(line_expanded[self.limit:]),
+                 'lines should not exceed 80 characters', self.limit)
+ 
+         return None
+ 
+ class SpacesCheck:
+     def __init__(self):
+         self.expanded_tab = ' ' * ts
+ 
+     def check(self, filename, lineno, line):
+         i = line.find(self.expanded_tab)
+         if i != -1:
+             return CheckError(filename, lineno,
+                 line.replace(self.expanded_tab, error_string(ws_char * ts)),
+                 'blocks of 8 spaces should be replaced with tabs', i)
+ 
+ class TrailingWhitespaceCheck:
+     def __init__(self):
+         self.re = re.compile('(\s+)$')
+ 
+     def check(self, filename, lineno, line):
+         assert(len(line) == 0 or line[-1] != '\n')
+         m = self.re.search(line)
+         if m != None:
+             return CheckError(filename, lineno,
+                 line[:m.start(1)] + error_string(ws_char * len(m.group(1)))
+                 + line[m.end(1):],
+                 'trailing whitespace', m.start(1))
+ 
+ class SentenceSeparatorCheck:
+     def __init__(self):
+         self.re = re.compile('\w\.(\s|\s{3,})\w')
+ 
+     def check(self, filename, lineno, line):
+         m = self.re.search(line)
+         if m != None:
+             return CheckError(filename, lineno,
+                 line[:m.start(1)] + error_string(ws_char * len(m.group(1)))
+                 + line[m.end(1):],
+                 'dot, space, space, new sentence', m.start(1))
+ 
+ class SentenceEndOfCommentCheck:
+     def __init__(self):
+         self.re = re.compile('\w\.(\s{0,1}|\s{3,})\*/')
+ 
+     def check(self, filename, lineno, line):
+         m = self.re.search(line)
+         if m != None:
+             return CheckError(filename, lineno,
+                 line[:m.start(1)] + error_string(ws_char * len(m.group(1)))
+                 + line[m.end(1):],
+                 'dot, space, space, end of comment', m.start(1))
+ 
+ class SentenceDotEndCheck:
+     def __init__(self):
+         self.re = re.compile('\w(\s*\*/)')
+ 
+     def check(self, filename, lineno, line):
+         m = self.re.search(line)
+         if m != None:
+             return CheckError(filename, lineno,
+                 line[:m.start(1)] + error_string(m.group(1)) + line[m.end(1):],
+                 'dot, space, space, end of comment', m.start(1))
+ 
+ class FunctionParenthesisCheck:
+     # TODO: filter out GTY stuff
+     def __init__(self):
+         self.re = re.compile('\w(\s{2,})?(\()')
+ 
+     def check(self, filename, lineno, line):
+         if '#define' in line:
+             return None
+ 
+         m = self.re.search(line)
+         if m != None:
+             return CheckError(filename, lineno,
+                 line[:m.start(2)] + error_string(m.group(2)) + line[m.end(2):],
+                 'there should be exactly one space between function name ' \
+                 'and parenthesis', m.start(2))
+ 
+ class SquareBracketCheck:
+     def __init__(self):
+         self.re = re.compile('\w\s+(\[)')
+ 
+     def check(self, filename, lineno, line):
+         m = self.re.search(line)
+         if m != None:
+             return CheckError(filename, lineno,
+                 line[:m.start(1)] + error_string(m.group(1)) + line[m.end(1):],
+                 'there should be no space before a left square bracket',
+                 m.start(1))
+ 
+ class ClosingParenthesisCheck:
+     def __init__(self):
+         self.re = re.compile('\S\s+(\))')
+ 
+     def check(self, filename, lineno, line):
+         m = self.re.search(line)
+         if m != None:
+             return CheckError(filename, lineno,
+                 line[:m.start(1)] + error_string(m.group(1)) + line[m.end(1):],
+                 'there should be no space before closing parenthesis',
+                 m.start(1))
+ 
+ class BracesOnSeparateLineCheck:
+     # This will give false positives for C99 compound literals.
+ 
+     def __init__(self):
+         self.re = re.compile('(\)|else)\s*({)')
+ 
+     def check(self, filename, lineno, line):
+         m = self.re.search(line)
+         if m != None:
+             return CheckError(filename, lineno,
+                 line[:m.start(2)] + error_string(m.group(2)) + line[m.end(2):],
+                 'braces should be on a separate line', m.start(2))
+ 
+ class TrailinigOperatorCheck:
+     def __init__(self):
+         regex = '^\s.*(([^a-zA-Z_]\*)|([-%<=&|^?])|([^*]/)|([^:][+]))$'
+         self.re = re.compile(regex)
+ 
+     def check(self, filename, lineno, line):
+         m = self.re.search(line)
+         if m != None:
+             return CheckError(filename, lineno,
+                 line[:m.start(1)] + error_string(m.group(1)) + line[m.end(1):],
+                 'trailing operator', m.start(1))
+ 
+ class LineLengthTest(unittest.TestCase):
+     def setUp(self):
+         self.check = LineLengthCheck()
+ 
+     def test_line_length_check_basic(self):
+         r = self.check.check('foo', 123, self.check.limit * 'a' + ' = 123;')
+         self.assertIsNotNone(r)
+         self.assertEqual('foo', r.filename)
+         self.assertEqual(80, r.column)
+         self.assertEqual(r.console_error,
+             self.check.limit * 'a' + error_string(' = 123;'))
+ 
+ class TrailingWhitespaceTest(unittest.TestCase):
+     def setUp(self):
+         self.check = TrailingWhitespaceCheck()
+ 
+     def test_trailing_whitespace_check_basic(self):
+         r = self.check.check('foo', 123, 'a = 123;')
+         self.assertIsNone(r)
+         r = self.check.check('foo', 123, 'a = 123; ')
+         self.assertIsNotNone(r)
+         r = self.check.check('foo', 123, 'a = 123;\t')
+         self.assertIsNotNone(r)
+ 
+ def check_GNU_style_file(file, file_encoding, format):
+     checks = [LineLengthCheck(), SpacesCheck(), TrailingWhitespaceCheck(),
+         SentenceSeparatorCheck(), SentenceEndOfCommentCheck(),
+         SentenceDotEndCheck(), FunctionParenthesisCheck(),
+         SquareBracketCheck(), ClosingParenthesisCheck(),
+         BracesOnSeparateLineCheck(), TrailinigOperatorCheck()]
+     errors = []
+ 
+     patch = PatchSet(file, encoding=file_encoding)
+ 
+     for pfile in patch.added_files + patch.modified_files:
+         t = pfile.target_file.lstrip('b/')
+         # Skip testsuite files
+         if 'testsuite' in t:
+             continue
+ 
+         for hunk in pfile:
+             delta = 0
+             for line in hunk:
+                 if line.is_added and line.target_line_no != None:
+                     for check in checks:
+                         line_chomp = line.value.replace('\n', '')
+                         e = check.check(t, line.target_line_no, line_chomp)
+                         if e != None:
+                             errors.append(e)
+ 
+     if format == 'stdio':
+         fn = lambda x: x.error_message
+         i = 1
+         for (k, errors) in groupby(sorted(errors, key = fn), fn):
+             errors = list(errors)
+             print('=== ERROR type #%d: %s (%d error(s)) ==='
+                 % (i, k, len(errors)))
+             i += 1
+             for e in errors:
+                 print(e.error_location () + e.console_error)
+             print()
+ 
+         exit(0 if len(errors) == 0 else 1)
+     elif format == 'quickfix':
+         f = 'errors.err'
+         with open(f, 'w+') as qf:
+             for e in errors:
+                 qf.write('%s%s\n' % (e.error_location(), e.error_message))
+         if len(errors) == 0:
+             exit(0)
+         else:
+             print('%d error(s) written to %s file.' % (len(errors), f))
+             exit(1)
+     else:
+         assert False
+ 
+ if __name__ == '__main__':
+     unittest.main()
diff -Nrcpad gcc-7.3.0/contrib/compare_tests gcc-8.1.0/contrib/compare_tests
*** gcc-7.3.0/contrib/compare_tests	Tue Sep 20 20:14:14 2016
--- gcc-8.1.0/contrib/compare_tests	Mon Feb 19 08:03:17 2018
*************** export LC_ALL=C
*** 36,52 ****
  
  tool=gxx
  
! tmp1=/tmp/$tool-testing.$$a
! tmp2=/tmp/$tool-testing.$$b
! now_s=/tmp/$tool-testing.$$d
! before_s=/tmp/$tool-testing.$$e
! lst1=/tmp/$tool-lst1.$$
! lst2=/tmp/$tool-lst2.$$
! lst3=/tmp/$tool-lst3.$$
! lst4=/tmp/$tool-lst4.$$
! lst5=/tmp/$tool-lst5.$$
! sum1=/tmp/$tool-sum1.$$
! sum2=/tmp/$tool-sum2.$$
  tmps="$tmp1 $tmp2 $now_s $before_s $lst1 $lst2 $lst3 $lst4 $lst5 $sum1 $sum2"
  
  [ "$1" = "-strict" ] && strict=$1 && shift
--- 36,53 ----
  
  tool=gxx
  
! TMPDIR=${TMPDIR:-/tmp}
! tmp1=$TMPDIR/$tool-testing.$$a
! tmp2=$TMPDIR/$tool-testing.$$b
! now_s=$TMPDIR/$tool-testing.$$d
! before_s=$TMPDIR/$tool-testing.$$e
! lst1=$TMPDIR/$tool-lst1.$$
! lst2=$TMPDIR/$tool-lst2.$$
! lst3=$TMPDIR/$tool-lst3.$$
! lst4=$TMPDIR/$tool-lst4.$$
! lst5=$TMPDIR/$tool-lst5.$$
! sum1=$TMPDIR/$tool-sum1.$$
! sum2=$TMPDIR/$tool-sum2.$$
  tmps="$tmp1 $tmp2 $now_s $before_s $lst1 $lst2 $lst3 $lst4 $lst5 $sum1 $sum2"
  
  [ "$1" = "-strict" ] && strict=$1 && shift
diff -Nrcpad gcc-7.3.0/contrib/config-list.mk gcc-8.1.0/contrib/config-list.mk
*** gcc-7.3.0/contrib/config-list.mk	Mon Feb  6 21:39:08 2017
--- gcc-8.1.0/contrib/config-list.mk	Wed May  3 15:23:35 2017
*************** GCC_SRC_DIR=../../gcc
*** 32,38 ****
  # v850e1-elf is rejected by config.sub
  LIST = aarch64-elf aarch64-linux-gnu aarch64-rtems \
    alpha-linux-gnu alpha-freebsd6 alpha-netbsd alpha-openbsd \
!   alpha64-dec-vms alpha-dec-vms am33_2.0-linux \
    arc-elf32OPT-with-cpu=arc600 arc-elf32OPT-with-cpu=arc700 \
    arc-linux-uclibcOPT-with-cpu=arc700 arceb-linux-uclibcOPT-with-cpu=arc700 \
    arm-wrs-vxworks arm-netbsdelf \
--- 32,38 ----
  # v850e1-elf is rejected by config.sub
  LIST = aarch64-elf aarch64-linux-gnu aarch64-rtems \
    alpha-linux-gnu alpha-freebsd6 alpha-netbsd alpha-openbsd \
!   alpha64-dec-vms alpha-dec-vms \
    arc-elf32OPT-with-cpu=arc600 arc-elf32OPT-with-cpu=arc700 \
    arc-linux-uclibcOPT-with-cpu=arc700 arceb-linux-uclibcOPT-with-cpu=arc700 \
    arm-wrs-vxworks arm-netbsdelf \
diff -Nrcpad gcc-7.3.0/contrib/dg-cmp-results.sh gcc-8.1.0/contrib/dg-cmp-results.sh
*** gcc-7.3.0/contrib/dg-cmp-results.sh	Tue Nov 18 22:00:42 2008
--- gcc-8.1.0/contrib/dg-cmp-results.sh	Mon Feb 19 08:03:17 2018
*************** OFILE="$2"
*** 63,68 ****
--- 63,69 ----
  OBASE=`basename "$2"`
  NFILE="$3"
  NBASE=`basename "$3"`
+ TMPDIR=${TMPDIR:-/tmp}
  
  echo "dg-cmp-results.sh: Verbosity is ${verbose}, Variant is \"${VARIANT}\""
  echo
*************** echo "Newer log file: $NFILE"
*** 90,115 ****
  sed $E -e '/^[[:space:]]+===/,$d' $NFILE
  
  # Create a temporary file from the old file's interesting section.
! sed $E -e "1,/$header/d" \
!   -e '/^[[:space:]]+===/,$d' \
    -e '/^[A-Z]+:/!d' \
    -e '/^(WARNING|ERROR):/d' \
    -e 's/\r$//' \
    -e 's/^/O:/' \
    $OFILE |
    sort -s -t : -k 3b - \
!   >/tmp/o$$-$OBASE
  
  # Create a temporary file from the new file's interesting section.
! sed $E -e "1,/$header/d" \
!   -e '/^[[:space:]]+===/,$d' \
    -e '/^[A-Z]+:/!d' \
    -e '/^(WARNING|ERROR):/d' \
    -e 's/\r$//' \
    -e 's/^/N:/' \
    $NFILE |
    sort -s -t : -k 3b - \
!   >/tmp/n$$-$NBASE
  
  # Merge the two files, then compare adjacent lines.
  # Comparison is complicated by tests that may be run multiple times.
--- 91,114 ----
  sed $E -e '/^[[:space:]]+===/,$d' $NFILE
  
  # Create a temporary file from the old file's interesting section.
! sed $E -e "/$header/,/^[[:space:]]+===.*Summary ===/!d" \
    -e '/^[A-Z]+:/!d' \
    -e '/^(WARNING|ERROR):/d' \
    -e 's/\r$//' \
    -e 's/^/O:/' \
    $OFILE |
    sort -s -t : -k 3b - \
!   >$TMPDIR/o$$-$OBASE
  
  # Create a temporary file from the new file's interesting section.
! sed $E -e "/$header/,/^[[:space:]]+===.*Summary ===/!d" \
    -e '/^[A-Z]+:/!d' \
    -e '/^(WARNING|ERROR):/d' \
    -e 's/\r$//' \
    -e 's/^/N:/' \
    $NFILE |
    sort -s -t : -k 3b - \
!   >$TMPDIR/n$$-$NBASE
  
  # Merge the two files, then compare adjacent lines.
  # Comparison is complicated by tests that may be run multiple times.
*************** END {
*** 202,211 ****
      while (old = peek()) compare("", "")
  }
  EOF
! sort -m -s -t : -k 3b /tmp/o$$-$OBASE /tmp/n$$-$NBASE |
   awk -v verbose=$verbose -f compare-$$.awk /dev/stdin
  
  # Delete the temporary files.
! rm -f compare-$$.awk /tmp/o$$-$OBASE /tmp/n$$-$NBASE
  
  exit 0
--- 201,210 ----
      while (old = peek()) compare("", "")
  }
  EOF
! sort -m -s -t : -k 3b $TMPDIR/o$$-$OBASE $TMPDIR/n$$-$NBASE |
   awk -v verbose=$verbose -f compare-$$.awk /dev/stdin
  
  # Delete the temporary files.
! rm -f compare-$$.awk $TMPDIR/o$$-$OBASE $TMPDIR/n$$-$NBASE
  
  exit 0
diff -Nrcpad gcc-7.3.0/contrib/download_prerequisites gcc-8.1.0/contrib/download_prerequisites
*** gcc-7.3.0/contrib/download_prerequisites	Tue Apr 11 16:34:07 2017
--- gcc-8.1.0/contrib/download_prerequisites	Mon Jan 29 13:30:02 2018
*************** version='(unversioned)'
*** 30,36 ****
  gmp='gmp-6.1.0.tar.bz2'
  mpfr='mpfr-3.1.4.tar.bz2'
  mpc='mpc-1.0.3.tar.gz'
! isl='isl-0.16.1.tar.bz2'
  
  base_url='ftp://gcc.gnu.org/pub/gcc/infrastructure/'
  
--- 30,36 ----
  gmp='gmp-6.1.0.tar.bz2'
  mpfr='mpfr-3.1.4.tar.bz2'
  mpc='mpc-1.0.3.tar.gz'
! isl='isl-0.18.tar.bz2'
  
  base_url='ftp://gcc.gnu.org/pub/gcc/infrastructure/'
  
*************** force=0
*** 47,53 ****
  OS=$(uname)
  
  case $OS in
!   "Darwin")
      chksum='shasum -a 512 --check'
    ;;
    *)
--- 47,53 ----
  OS=$(uname)
  
  case $OS in
!   "Darwin"|"FreeBSD"|"DragonFly")
      chksum='shasum -a 512 --check'
    ;;
    *)
diff -Nrcpad gcc-7.3.0/contrib/filter_gcc_for_doxygen gcc-8.1.0/contrib/filter_gcc_for_doxygen
*** gcc-7.3.0/contrib/filter_gcc_for_doxygen	Thu May 13 06:41:07 2004
--- gcc-8.1.0/contrib/filter_gcc_for_doxygen	Wed Jun 28 07:52:46 2017
***************
*** 1,12 ****
  #!/bin/sh
  
  # This filters GCC source before Doxygen can get confused by it;
! # this script is listed in the doxyfile. The output is not very
  # pretty, but at least we get output that Doxygen can understand.
  #
! # $1 is a source file of some kind. The source we wish doxygen to
  # process is put on stdout.
  
  dir=`dirname $0`
! perl $dir/filter_params.pl < $1 | perl $dir/filter_knr2ansi.pl 
  exit 0
--- 1,12 ----
  #!/bin/sh
  
  # This filters GCC source before Doxygen can get confused by it;
! # this script is listed in the doxyfile.  The output is not very
  # pretty, but at least we get output that Doxygen can understand.
  #
! # $1 is a source file of some kind.  The source we wish doxygen to
  # process is put on stdout.
  
  dir=`dirname $0`
! python $dir/filter_params.py $1
  exit 0
diff -Nrcpad gcc-7.3.0/contrib/filter_params.pl gcc-8.1.0/contrib/filter_params.pl
*** gcc-7.3.0/contrib/filter_params.pl	Thu Jul 14 03:38:20 2005
--- gcc-8.1.0/contrib/filter_params.pl	Thu Jan  1 00:00:00 1970
***************
*** 1,14 ****
- #!/usr/bin/perl
- 
- # Filters out some of the #defines used throughout the GCC sources:
- # - GTY(()) marks declarations for gengtype.c
- # - PARAMS(()) is used for K&R compatibility. See ansidecl.h.
- 
- while (<>) {
-     s/^\/\* /\/\*\* \@verbatim /;
-     s/\*\// \@endverbatim \*\//;
-     s/GTY[ \t]*\(\(.*\)\)//g;
-     s/[ \t]ATTRIBUTE_UNUSED//g;
-     s/PARAMS[ \t]*\(\((.*?)\)\)/\($1\)/sg;
-     print;
- }
--- 0 ----
diff -Nrcpad gcc-7.3.0/contrib/filter_params.py gcc-8.1.0/contrib/filter_params.py
*** gcc-7.3.0/contrib/filter_params.py	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/contrib/filter_params.py	Wed May 31 14:08:36 2017
***************
*** 0 ****
--- 1,174 ----
+ #!/usr/bin/python
+ """
+ Filters out some of the #defines used throughout the GCC sources:
+ - GTY(()) marks declarations for gengtype.c
+ - PARAMS(()) is used for K&R compatibility. See ansidecl.h.
+ 
+ When passed one or more filenames, acts on those files and prints the
+ results to stdout.
+ 
+ When run without a filename, runs a unit-testing suite.
+ """
+ import re
+ import sys
+ import unittest
+ 
+ # Optional whitespace
+ OPT_WS = '\s*'
+ 
+ def filter_src(text):
+     """
+     str -> str.  We operate on the whole of the source file at once
+     (rather than individual lines) so that we can have multiline
+     regexes.
+     """
+ 
+     # Convert C comments from GNU coding convention of:
+     #    /* FIRST_LINE
+     #       NEXT_LINE
+     #       FINAL_LINE.  */
+     # to:
+     #    /** @verbatim FIRST_LINE
+     #       NEXT_LINE
+     #       FINAL_LINE.  @endverbatim */
+     # so that doxygen will parse them.
+     #
+     # Only comments that begin on the left-most column are converted.
+     #
+     text = re.sub(r'^/\*\* ',
+                   r'/** @verbatim ',
+                   text,
+                   flags=re.MULTILINE)
+     text = re.sub(r'^/\* ',
+                   r'/** @verbatim ',
+                   text,
+                   flags=re.MULTILINE)
+     text = re.sub(r'\*/',
+                   r' @endverbatim */',
+                   text)
+ 
+     # Remove GTY markings (potentially multiline ones):
+     text = re.sub('GTY' + OPT_WS + r'\(\(.*?\)\)\s+',
+                   '',
+                   text,
+                   flags=(re.MULTILINE|re.DOTALL))
+ 
+     # Strip out 'ATTRIBUTE_UNUSED'
+     text = re.sub('\sATTRIBUTE_UNUSED',
+                   '',
+                   text)
+ 
+     # PARAMS(()) is used for K&R compatibility. See ansidecl.h.
+     text = re.sub('PARAMS' + OPT_WS + r'\(\((.*?)\)\)',
+                   r'(\1)',
+                   text)
+ 
+     # Replace 'ENUM_BITFIELD(enum_name)' with 'enum enum_name'.
+     text = re.sub('ENUM_BITFIELD\s*\(([^\)]*)\)',
+                   r'enum \1',
+                   text)
+ 
+     return text
+ 
+ class FilteringTests(unittest.TestCase):
+     '''
+     Unit tests for filter_src.
+     '''
+     def assert_filters_to(self, src_input, expected_result):
+         # assertMultiLineEqual was added to unittest in 2.7/3.1
+         if hasattr(self, 'assertMultiLineEqual'):
+             assertion = self.assertMultiLineEqual
+         else:
+             assertion = self.assertEqual
+         assertion(expected_result, filter_src(src_input))
+ 
+     def test_comment_example(self):
+         self.assert_filters_to(
+             ('/* FIRST_LINE\n'
+              '   NEXT_LINE\n'
+              '   FINAL_LINE.  */\n'),
+             ('/** @verbatim FIRST_LINE\n'
+              '   NEXT_LINE\n'
+              '   FINAL_LINE.   @endverbatim */\n'))
+ 
+     def test_comment_example_gengtype(self):
+         self.assert_filters_to(
+             ('/** Allocate and initialize an input buffer state.\n'
+              ' * @param file A readable stream.\n'
+              ' * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.\n'
+              ' * \n'
+              ' * @return the allocated buffer state.\n'
+              ' */'),
+             ('/** @verbatim Allocate and initialize an input buffer state.\n'
+              ' * @param file A readable stream.\n'
+              ' * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.\n'
+              ' * \n'
+              ' * @return the allocated buffer state.\n'
+              '  @endverbatim */'))
+ 
+     def test_oneliner_comment(self):
+         self.assert_filters_to(
+             '/* Returns the string representing CLASS.  */\n',
+             ('/** @verbatim Returns the string representing CLASS.   @endverbatim */\n'))
+ 
+     def test_multiline_comment(self):
+         self.assert_filters_to(
+             ('/* The thread-local storage model associated with a given VAR_DECL\n'
+              "   or SYMBOL_REF.  This isn't used much, but both trees and RTL refer\n"
+              "   to it, so it's here.  */\n"),
+             ('/** @verbatim The thread-local storage model associated with a given VAR_DECL\n'
+              "   or SYMBOL_REF.  This isn't used much, but both trees and RTL refer\n"
+              "   to it, so it's here.   @endverbatim */\n"))
+ 
+     def test_GTY(self):
+         self.assert_filters_to(
+             ('typedef struct GTY(()) alias_pair {\n'
+              '  tree decl;\n'
+              '  tree target;\n'
+              '} alias_pair;\n'),
+             ('typedef struct alias_pair {\n'
+              '  tree decl;\n'
+              '  tree target;\n'
+              '} alias_pair;\n'))
+ 
+     def test_multiline_GTY(self):
+         # Ensure that a multiline GTY is filtered out.
+         self.assert_filters_to(
+             ('class GTY((desc ("%h.type"), tag ("SYMTAB_SYMBOL"),\n'
+              '\t   chain_next ("%h.next"), chain_prev ("%h.previous")))\n'
+              '  symtab_node_base\n'
+              '{\n'),
+             ('class symtab_node_base\n'
+              '{\n'))
+ 
+     def test_ATTRIBUTE_UNUSED(self):
+         # Ensure that ATTRIBUTE_UNUSED is filtered out.
+         self.assert_filters_to(
+             ('static void\n'
+              'record_set (rtx dest, const_rtx set, void *data ATTRIBUTE_UNUSED)\n'
+              '{\n'),
+             ('static void\n'
+              'record_set (rtx dest, const_rtx set, void *data)\n'
+              '{\n'))
+ 
+     def test_PARAMS(self):
+         self.assert_filters_to(
+             'char *strcpy PARAMS ((char *dest, char *source));\n',
+             'char *strcpy (char *dest, char *source);\n')
+ 
+     def test_ENUM_BITFIELD(self):
+         self.assert_filters_to(
+             '  ENUM_BITFIELD (sym_intent) intent:2;\n',
+             '  enum sym_intent intent:2;\n')
+ 
+ def act_on_files(argv):
+     for filename in argv[1:]:
+         with open(filename) as f:
+             text = f.read()
+             print(filter_src(text))
+ 
+ if __name__ == '__main__':
+     if len(sys.argv) > 1:
+         act_on_files(sys.argv)
+     else:
+         unittest.main()
diff -Nrcpad gcc-7.3.0/contrib/gcc.doxy gcc-8.1.0/contrib/gcc.doxy
*** gcc-7.3.0/contrib/gcc.doxy	Fri Aug 10 21:08:32 2007
--- gcc-8.1.0/contrib/gcc.doxy	Wed Jun 28 07:52:46 2017
***************
*** 11,26 ****
  # Values that contain spaces should be placed between quotes (" ")
  
  
- #-----------------------------------------------------------------------------
- # NOTE: YOU MUST EDIT THE FOLLOWING HARDWIRED PATHS BEFORE USING THIS FILE.
- #-----------------------------------------------------------------------------
- 
  # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 
  # base path where the generated documentation will be put. 
  # If a relative path is entered, it will be relative to the location 
  # where doxygen was started. If left blank the current directory will be used.
  
! OUTPUT_DIRECTORY       = @OUTPUT_DIRECTORY@
  
  # The INPUT_FILTER tag can be used to specify a program that doxygen should 
  # invoke to filter for each input file. Doxygen will invoke the filter program 
--- 11,22 ----
  # Values that contain spaces should be placed between quotes (" ")
  
  
  # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 
  # base path where the generated documentation will be put. 
  # If a relative path is entered, it will be relative to the location 
  # where doxygen was started. If left blank the current directory will be used.
  
! OUTPUT_DIRECTORY       = gcc-doxygen
  
  # The INPUT_FILTER tag can be used to specify a program that doxygen should 
  # invoke to filter for each input file. Doxygen will invoke the filter program 
*************** OUTPUT_DIRECTORY       = @OUTPUT_DIRECTO
*** 30,36 ****
  # to standard output.  If FILTER_PATTERNS is specified, this tag will be 
  # ignored.
  
! INPUT_FILTER           = @INPUT_FILTER@
  
  #-----------------------------------------------------------------------------
  
--- 26,32 ----
  # to standard output.  If FILTER_PATTERNS is specified, this tag will be 
  # ignored.
  
! INPUT_FILTER           = contrib/filter_gcc_for_doxygen
  
  #-----------------------------------------------------------------------------
  
diff -Nrcpad gcc-7.3.0/contrib/gcc_update gcc-8.1.0/contrib/gcc_update
*** gcc-7.3.0/contrib/gcc_update	Mon Oct  2 11:58:11 2017
--- gcc-8.1.0/contrib/gcc_update	Tue Nov 28 10:35:37 2017
*************** gcc/fixinc/fixincl.x: gcc/fixinc/fixincl
*** 82,91 ****
  gcc/config/aarch64/aarch64-tune.md: gcc/config/aarch64/aarch64-cores.def gcc/config/aarch64/gentune.sh
  gcc/config/arm/arm-tune.md: gcc/config/arm/arm-cpus.in gcc/config/arm/parsecpu.awk
  gcc/config/arm/arm-tables.opt: gcc/config/arm/arm-cpus.in gcc/config/arm/parsecpu.awk
- gcc/config/arm/arm-cpu.h: gcc/config/arm/arm-cpus.in gcc/config/arm/parsecpu.awk
- gcc/config/arm/arm-cpu-data.h: gcc/config/arm/arm-cpus.in gcc/config/arm/parsecpu.awk
- gcc/config/arm/arm-cpu-cdata.h: gcc/config/arm/arm-cpus.in gcc/config/arm/parsecpu.awk
- gcc/config/avr/avr-tables.opt: gcc/config/avr/avr-mcus.def gcc/config/avr/genopt.sh
  gcc/config/avr/t-multilib: gcc/config/avr/avr-mcus.def gcc/config/avr/genmultilib.awk
  gcc/config/c6x/c6x-tables.opt: gcc/config/c6x/c6x-isas.def gcc/config/c6x/genopt.sh
  gcc/config/c6x/c6x-sched.md: gcc/config/c6x/c6x-sched.md.in gcc/config/c6x/gensched.sh
--- 82,87 ----
*************** libsanitizer/sanitizer_common/Makefile.i
*** 163,171 ****
  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
- libcilkrts/aclocal.m4: libcilkrts/configure.ac
- libcilkrts/Makefile.in: libcilkrts/Makefile.am
- libcilkrts/configure: libcilkrts/configure.ac
  liboffloadmic/aclocal.m4: liboffloadmic/configure.ac
  liboffloadmic/Makefile.in: liboffloadmic/Makefile.am
  liboffloadmic/configure: liboffloadmic/configure.ac
--- 159,164 ----
diff -Nrcpad gcc-7.3.0/contrib/gen_autofdo_event.py gcc-8.1.0/contrib/gen_autofdo_event.py
*** gcc-7.3.0/contrib/gen_autofdo_event.py	Thu Jun 23 14:33:53 2016
--- gcc-8.1.0/contrib/gen_autofdo_event.py	Wed Apr 26 08:53:31 2017
*************** if args.script:
*** 104,110 ****
      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 --shell --all in gcc source
  
  # usages:
  # gcc-auto-profile program             (profile program and children)
--- 104,110 ----
      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
  
  # usages:
  # gcc-auto-profile program             (profile program and children)
diff -Nrcpad gcc-7.3.0/contrib/gennews gcc-8.1.0/contrib/gennews
*** gcc-7.3.0/contrib/gennews	Tue May  2 12:38:31 2017
--- gcc-8.1.0/contrib/gennews	Wed May  2 08:13:49 2018
***************
*** 3,9 ****
  # Script to generate the NEWS file from online release notes.
  # Contributed by Joseph Myers <jsm28@cam.ac.uk>.
  #
! # Copyright (C) 2000-2017 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-2018 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-8/index.html gcc-8/changes.html
      gcc-7/index.html gcc-7/changes.html
      gcc-6/index.html gcc-6/changes.html
      gcc-5/index.html gcc-5/changes.html
diff -Nrcpad gcc-7.3.0/contrib/header-tools/ChangeLog gcc-8.1.0/contrib/header-tools/ChangeLog
*** gcc-7.3.0/contrib/header-tools/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-8.1.0/contrib/header-tools/ChangeLog	Wed May  2 08:07:22 2018
***************
*** 1,14 ****
! 2018-01-25  Release Manager
! 
! 	* GCC 7.3.0 released.
! 
! 2017-08-14  Release Manager
  
! 	* GCC 7.2.0 released.
  
! 2017-05-02  Release Manager
  
! 	* GCC 7.1.0 released.
  
  2016-06-21  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
  
--- 1,12 ----
! 2018-05-02  Release Manager
  
! 	* GCC 8.1.0 released.
  
! 2017-07-02  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* graph-header-logs (ignore): Update coretypes.h header list.
  
  2016-06-21  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
  
diff -Nrcpad gcc-7.3.0/contrib/header-tools/graph-header-logs gcc-8.1.0/contrib/header-tools/graph-header-logs
*** gcc-7.3.0/contrib/header-tools/graph-header-logs	Wed Nov 11 14:28:46 2015
--- gcc-8.1.0/contrib/header-tools/graph-header-logs	Sun Jul  2 09:06:10 2017
*************** depstring = ("In file included from", "
*** 25,33 ****
  
  # indentation indicates nesting levels of included files
  ignore = [ "coretypes_h",
!              "machmode_h",
               "signop_h",
               "wide_int_h",
               "double_int_h",
               "real_h",
               "fixed_value_h",
--- 25,36 ----
  
  # indentation indicates nesting levels of included files
  ignore = [ "coretypes_h",
!              "insn_modes_h",
               "signop_h",
               "wide_int_h",
+              "wide_int_print_h",
+              "insn_modes_inline_h",
+              "machmode_h",
               "double_int_h",
               "real_h",
               "fixed_value_h",
diff -Nrcpad gcc-7.3.0/contrib/mklog gcc-8.1.0/contrib/mklog
*** gcc-7.3.0/contrib/mklog	Sun Mar  6 17:36:19 2016
--- gcc-8.1.0/contrib/mklog	Wed Aug  2 21:01:08 2017
***************
*** 1,5 ****
! #!/usr/bin/perl
! # Copyright (C) 2012-2014 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,6 ----
! #!/usr/bin/python
! 
! # Copyright (C) 2017 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
***************
*** 20,350 ****
  
  # This script parses a .diff file generated with 'diff -up' or 'diff -cp'
  # and adds a skeleton ChangeLog file to the file. It does not try to be
! # very smart when parsing function names, but it produces a reasonable
  # approximation.
  #
! # Author: Diego Novillo <dnovillo@google.com> and
! #         Cary Coutant <ccoutant@google.com>
  
! use File::Temp;
! use File::Copy qw(cp mv);
  
! $date = `date +%Y-%m-%d`; chop ($date);
  
! $dot_mklog_format_msg =
!     "The .mklog format is:\n"
!     . "NAME = ...\n"
!     . "EMAIL = ...\n";
  
! # Create a .mklog to reflect your profile, if necessary.
! my $conf = "$ENV{HOME}/.mklog";
! if (-f "$conf") {
!     open (CONF, "$conf")
! 	or die "Could not open file '$conf' for reading: $!\n";
!     while (<CONF>) {
! 	if (m/^\s*NAME\s*=\s*(.*?)\s*$/) {
! 	    $name = $1;
! 	} elsif (m/^\s*EMAIL\s*=\s*(.*?)\s*$/) {
! 	    $addr = $1;
! 	}
!     }
!     if (!($name && $addr)) {
! 	die "Could not read .mklog settings.\n"
! 	    . $dot_mklog_format_msg;
!     }
! } else {
!     $name = `git config user.name`;
!     chomp($name);
!     $addr = `git config user.email`;
!     chomp($addr);
  
!     if (!($name && $addr)) {
! 	die "Could not read git user.name and user.email settings.\n"
! 	    . "Please add missing git settings, or create a .mklog file in"
! 	    . " $ENV{HOME}.\n"
! 	    . $dot_mklog_format_msg;
!     }
! }
  
! $gcc_root = $0;
! $gcc_root =~ s/[^\\\/]+$/../;
  
! #-----------------------------------------------------------------------------
! # Program starts here. You should not need to edit anything below this
! # line.
! #-----------------------------------------------------------------------------
! $inline = 0;
! if ($#ARGV == 1 && ("$ARGV[0]" eq "-i" || "$ARGV[0]" eq "--inline")) {
! 	shift;
! 	$inline = 1;
! } elsif ($#ARGV != 0) {
!     $prog = `basename $0`; chop ($prog);
!     print <<EOF;
! usage: $prog [ -i | --inline ] file.diff
  
! Generate ChangeLog template for file.diff.
! It assumes that patch has been created with -up or -cp.
! When -i is used, the ChangeLog template is followed by the contents of
! file.diff.
! When file.diff is -, read standard input.
! When -i is used and file.diff is not -, it writes to file.diff, otherwise it
! writes to stdout.
! EOF
!     exit 1;
! }
  
! $diff = $ARGV[0];
! $dir = `dirname $diff`; chop ($dir);
! $basename = `basename $diff`; chop ($basename);
! $hdrline = "$date  $name  <$addr>";
  
! sub get_clname ($) {
! 	return ('ChangeLog', $_[0]) if ($_[0] !~ /[\/\\]/);
  
! 	my $dirname = $_[0];
! 	while ($dirname) {
! 		my $clname = "$dirname/ChangeLog";
! 		if (-f "$gcc_root/$clname" || -f "$clname") {
! 			my $relname = substr ($_[0], length ($dirname) + 1);
! 			return ($clname, $relname);
! 		} else {
! 			$dirname =~ s/[\/\\]?[^\/\\]*$//;
! 		} 
! 	}
  
! 	return ('Unknown ChangeLog', $_[0]);
! }
  
! sub remove_suffixes ($) {
! 	my $filename = $_[0];
! 	$filename =~ s/^[ab]\///;
! 	$filename =~ s/\.jj$//;
! 	return $filename;
! }
  
! sub is_context_hunk_start {
! 	return @_[0] =~ /^\*\*\*\*\*\** ([a-zA-Z0-9_].*)/;
! }
  
! sub is_unified_hunk_start {
! 	return @_[0] =~ /^@@ .* @@ ([a-zA-Z0-9_].*)/;
! }
  
! # Check if line is a top-level declaration.
! sub is_top_level {
! 	my ($function, $is_context_diff) = (@_);
! 	if (is_unified_hunk_start ($function)
! 	    || is_context_hunk_start ($function)) {
! 	    return 1;
! 	}
! 	if ($is_context_diff) {
! 		$function =~ s/^..//;
! 	} else {
! 		$function =~ s/^.//;
! 	}
! 	return $function && $function !~ /^[\s{#]/;
! }
  
! # Read contents of .diff file
! open (DFILE, $diff) or die "Could not open file $diff for reading";
! chomp (my @diff_lines = <DFILE>);
! close (DFILE);
  
! # Array diff_lines is modified by the log generation, so save a copy in
! # orig_diff_lines if needed.
! if ($inline) {
!     @orig_diff_lines = @diff_lines;
! }
  
! # For every file in the .diff print all the function names in ChangeLog
! # format.
! %cl_entries = ();
! $change_msg = undef;
! $look_for_funs = 0;
! $clname = get_clname('');
! $line_idx = 0;
! foreach (@diff_lines) {
!     # Stop processing functions if we found a new file.
! 	# Remember both left and right names because one may be /dev/null.
!     # Don't be fooled by line markers in case of context diff.
!     if (!/\*\*\*$/ && /^[+*][+*][+*] +(\S+)/) {
! 		$left = remove_suffixes ($1);
! 		$look_for_funs = 0;
! 	}
!     if (!/---$/ && /^--- +(\S+)?/) {
! 		$right = remove_suffixes ($1);
! 		$look_for_funs = 0;
! 	}
  
! 	# Check if the body of diff started.
! 	# We should now have both left and right name,
! 	# so we can decide filename.
  
!     if ($left && (/^\*{15}/ || /^@@ /)) {
! 	# If we have not seen any function names in the previous file (ie,
! 	# $change_msg is empty), we just write out a ':' before starting the next
! 	# file.
! 	if ($clname) {
! 		$cl_entries{$clname} .= $change_msg ? "$change_msg" : ":\n";
! 	}
  
! 	if ($left eq $right) {
! 		$filename = $left;
! 	} elsif($left eq '/dev/null') {
! 		$filename = $right;
! 	} elsif($right eq '/dev/null') {
! 		$filename = $left;
! 	} else {
! 		print STDERR "Error: failed to parse diff for $left and $right\n";
! 		exit 1;
! 	}
! 	$left = $right = undef;
! 	($clname, $relname) = get_clname ($filename);
! 	$cl_entries{$clname} .= "\t* $relname";
! 	$change_msg = '';
! 	$look_for_funs = $filename =~ '\.(c|cpp|C|cc|h|inc|def)$';
!     }
  
      # Context diffs have extra whitespace after first char;
      # remove it to make matching easier.
!     if ($is_context_diff) {
!       s/^([-+! ]) /\1/;
!     }
  
!     # Remember the last line in a diff block that might start
!     # a new function.
!     if (/^[-+! ]([a-zA-Z0-9_].*)/) {
!         $save_fn = $1;
!     }
  
!     # Check if file is newly added.
!     # Two patterns: for context and unified diff.
!     if (/^\*\*\* 0 \*\*\*\*/
!         || /^@@ -0,0 \+1.* @@/) {
!         $change_msg = $filename =~ /testsuite.*(?<!\.exp)$/ ? ": New test.\n" : ": New file.\n";
!         $look_for_funs = 0;
!     }
  
!     # Check if file was removed.
!     # Two patterns: for context and unified diff.
!     if (/^--- 0 ----/
!         || /^@@ -1.* \+0,0 @@/) {
!         $change_msg = ": Remove.\n";
!         $look_for_funs = 0;
!     }
  
!     if (is_unified_hunk_start ($diff_lines[$line_idx])) {
!         $is_context_diff = 0;
!     }
!     elsif (is_context_hunk_start ($diff_lines[$line_idx])) {
! 	    $is_context_diff = 1;
!     }
  
!     # If we find a new function, print it in brackets.  Special case if
!     # this is the first function in a file.  
!     #
!     # Note that we don't try too hard to find good matches.  This should
!     # return a superset of the actual set of functions in the .diff file.
!     #
!     # The first pattern works with context diff files (diff -c). The
!     # second pattern works with unified diff files (diff -u).
!     #
!     # The third pattern looks for the starts of functions or classes
!     # within a diff block both for context and unified diff files.
!     if ($look_for_funs
!         && (/^\*\*\*\*\*\** ([a-zA-Z0-9_].*)/
! 	|| /^@@ .* @@ ([a-zA-Z0-9_].*)/
! 	|| /^[-+! ](\{)/))
!       {
! 	$_ = $1;
! 	my $fn;
! 	if (/^\{/) {
! 	    # Beginning of a new function.
! 	    $_ = $save_fn;
! 	} else {
! 	    $save_fn = "";
! 	}
! 	if (/;$/) {
! 	    # No usable function name found.
! 	} elsif (/^((class|struct|union|enum) [a-zA-Z0-9_]+)/) {
! 	    # Discard stuff after the class/struct/etc. tag.
! 	    $fn = $1;
! 	} elsif (/([a-zA-Z0-9_][^(]*)\(/) {
! 	    # Discard template and function parameters.
! 	    $fn = $1;
! 	    1 while ($fn =~ s/<[^<>]*>//);
! 	    $fn =~ s/[ \t]*$//;
! 	}
! 	# Check is function really modified
! 	$no_real_change = 0;
! 	$idx = $line_idx;
! 	# Skip line info in context diffs.
! 	while ($idx <= $#diff_lines && $is_context_diff
!                && $diff_lines[$idx + 1] =~ /^[-\*]{3} [0-9]/) {
! 		++$idx;
! 	}
! 	# Check all lines till the first change
! 	# for the presence of really changed function
! 	do {
! 		++$idx;
! 		$no_real_change = $idx > $#diff_lines
! 				  || is_top_level ($diff_lines[$idx], $is_context_diff);
! 	} while (!$no_real_change && ($diff_lines[$idx] !~ /^[-+!]/));
! 	if ($fn && !$seen_names{$fn} && !$no_real_change) {
! 	    # If this is the first function in the file, we display it next
! 	    # to the filename, so we need an extra space before the opening
! 	    # brace.
! 	    if (!$change_msg) {
! 		$change_msg .= " ";
! 	    } else {
! 		$change_msg .= "\t";
! 	    }
  
! 		$change_msg .= "($fn):\n";
! 	    $seen_names{$fn} = 1;
! 	}
!     }
! 	$line_idx++;
! }
  
! # If we have not seen any function names (ie, $change_msg is empty), we just
! # write out a ':'. This happens when there is only one file with no
! # functions.
! $cl_entries{$clname} .= $change_msg ? "$change_msg\n" : ":\n";
  
! if ($inline && $diff ne "-") {
! 	# Get a temp filename, rather than an open filehandle, because we use
! 	# the open to truncate.
! 	$tmp = mktemp("tmp.XXXXXXXX") or die "Could not create temp file: $!";
  
! 	# Copy the permissions to the temp file (in File::Copy module version
! 	# 2.15 and later).
! 	cp $diff, $tmp or die "Could not copy patch file to temp file: $!";
  
! 	# Open the temp file, clearing contents.
! 	open (OUTPUTFILE, '>', $tmp) or die "Could not open temp file: $!";
! } else {
! 	*OUTPUTFILE = STDOUT;
! }
  
! # Print the log
! foreach my $clname (keys %cl_entries) {
! 	print OUTPUTFILE "$clname:\n\n$hdrline\n\n$cl_entries{$clname}\n";
! }
  
! if ($inline) {
! 	# Append the patch to the log
! 	foreach (@orig_diff_lines) {
! 		print OUTPUTFILE "$_\n";
! 	}
! }
  
! if ($inline && $diff ne "-") {
! 	# Close $tmp
! 	close(OUTPUTFILE);
  
! 	# Write new contents to $diff atomically
! 	mv $tmp, $diff or die "Could not move temp file to patch file: $!";
! }
  
! exit 0;
--- 21,470 ----
  
  # This script parses a .diff file generated with 'diff -up' or 'diff -cp'
  # and adds a skeleton ChangeLog file to the file. It does not try to be
! # too smart when parsing function names, but it produces a reasonable
  # approximation.
  #
! # This is a straightforward adaptation of original Perl script.
! #
! # Author: Yury Gribov <tetra2005@gmail.com>
  
! import sys
! import re
! import os.path
! import os
! import getopt
! import tempfile
! import time
! import shutil
! from subprocess import Popen, PIPE
  
! me = os.path.basename(sys.argv[0])
  
! def error(msg):
!   sys.stderr.write("%s: error: %s\n" % (me, msg))
!   sys.exit(1)
  
! def warn(msg):
!   sys.stderr.write("%s: warning: %s\n" % (me, msg))
  
! class RegexCache(object):
!   """Simple trick to Perl-like combined match-and-bind."""
  
!   def __init__(self):
!     self.last_match = None
  
!   def match(self, p, s):
!     self.last_match = re.match(p, s) if isinstance(p, str) else p.match(s)
!     return self.last_match
  
!   def search(self, p, s):
!     self.last_match = re.search(p, s) if isinstance(p, str) else p.search(s)
!     return self.last_match
  
!   def group(self, n):
!     return self.last_match.group(n)
  
! cache = RegexCache()
  
! def print_help_and_exit():
!     print """\
! Usage: %s [-i | --inline] [PATCH]
! Generate ChangeLog template for PATCH.
! PATCH must be generated using diff(1)'s -up or -cp options
! (or their equivalent in Subversion/git).
  
! When PATCH is - or missing, read standard input.
  
! When -i is used, prepends ChangeLog to PATCH.
! If PATCH is not stdin, modifies PATCH in-place, otherwise writes
! to stdout.
! """ % me
!     sys.exit(1)
  
! def run(cmd, die_on_error):
!   """Simple wrapper for Popen."""
!   proc = Popen(cmd.split(' '), stderr = PIPE, stdout = PIPE)
!   (out, err) = proc.communicate()
!   if die_on_error and proc.returncode != 0:
!     error("`%s` failed:\n" % (cmd, proc.stderr))
!   return proc.returncode, out, err
  
! def read_user_info():
!   dot_mklog_format_msg = """\
! The .mklog format is:
! NAME = ...
! EMAIL = ...
! """
  
!   # First try to read .mklog config
!   mklog_conf = os.path.expanduser('~/.mklog')
!   if os.path.exists(mklog_conf):
!     attrs = {}
!     f = open(mklog_conf, 'rb')
!     for s in f:
!       if cache.match(r'^\s*([a-zA-Z0-9_]+)\s*=\s*(.*?)\s*$', s):
!         attrs[cache.group(1)] = cache.group(2)
!     f.close()
!     if 'NAME' not in attrs:
!       error("'NAME' not present in .mklog")
!     if 'EMAIL' not in attrs:
!       error("'EMAIL' not present in .mklog")
!     return attrs['NAME'], attrs['EMAIL']
  
!   # Otherwise go with git
  
!   rc1, name, _ = run('git config user.name', False)
!   name = name.rstrip()
!   rc2, email, _ = run('git config user.email', False)
!   email = email.rstrip()
  
!   if rc1 != 0 or rc2 != 0:
!     error("""\
! Could not read git user.name and user.email settings.
! Please add missing git settings, or create a %s.
! """ % mklog_conf)
  
!   return name, email
  
! def get_parent_changelog (s):
!   """See which ChangeLog this file change should go to."""
  
!   if s.find('\\') == -1 and s.find('/') == -1:
!     return "ChangeLog", s
! 
!   gcc_root = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
! 
!   d = s
!   while d:
!     clname = d + "/ChangeLog"
!     if os.path.exists(gcc_root + '/' + clname) or os.path.exists(clname):
!       relname = s[len(d)+1:]
!       return clname, relname
!     d, _ = os.path.split(d)
  
+   return "Unknown ChangeLog", s
+ 
+ class FileDiff:
+   """Class to represent changes in a single file."""
+ 
+   def __init__(self, filename):
+     self.filename = filename
+     self.hunks = []
+     self.clname, self.relname = get_parent_changelog(filename);
+ 
+   def dump(self):
+     print "Diff for %s:\n  ChangeLog = %s\n  rel name = %s\n" % (self.filename, self.clname, self.relname)
+     for i, h in enumerate(self.hunks):
+       print "Next hunk %d:" % i
+       h.dump()
+ 
+ class Hunk:
+   """Class to represent a single hunk of changes."""
+ 
+   def __init__(self, hdr):
+     self.hdr = hdr
+     self.lines = []
+     self.ctx_diff = is_ctx_hunk_start(hdr)
+ 
+   def dump(self):
+     print '%s' % self.hdr
+     print '%s' % '\n'.join(self.lines)
+ 
+   def is_file_addition(self):
+     """Does hunk describe addition of file?"""
+     if self.ctx_diff:
+       for line in self.lines:
+         if re.match(r'^\*\*\* 0 \*\*\*\*', line):
+           return True
+     else:
+       return re.match(r'^@@ -0,0 \+1.* @@', self.hdr)
+ 
+   def is_file_removal(self):
+     """Does hunk describe removal of file?"""
+     if self.ctx_diff:
+       for line in self.lines:
+         if re.match(r'^--- 0 ----', line):
+           return True
+     else:
+       return re.match(r'^@@ -1.* \+0,0 @@', self.hdr)
+ 
+ def is_file_diff_start(s):
+   # Don't be fooled by context diff line markers:
+   #   *** 385,391 ****
+   return ((s.startswith('***') and not s.endswith('***'))
+           or (s.startswith('---') and not s.endswith('---')))
+ 
+ def is_ctx_hunk_start(s):
+   return re.match(r'^\*\*\*\*\*\**', s)
+ 
+ def is_uni_hunk_start(s):
+   return re.match(r'^@@ .* @@', s)
+ 
+ def is_hunk_start(s):
+   return is_ctx_hunk_start(s) or is_uni_hunk_start(s)
+ 
+ def remove_suffixes(s):
+   if s.startswith('a/') or s.startswith('b/'):
+     s = s[2:]
+   if s.endswith('.jj'):
+     s = s[:-3]
+   return s
+ 
+ def find_changed_funs(hunk):
+   """Find all functions touched by hunk.  We don't try too hard
+      to find good matches.  This should return a superset
+      of the actual set of functions in the .diff file.
+   """
+ 
+   fns = []
+   fn = None
+ 
+   if (cache.match(r'^\*\*\*\*\*\** ([a-zA-Z0-9_].*)', hunk.hdr)
+       or cache.match(r'^@@ .* @@ ([a-zA-Z0-9_].*)', hunk.hdr)):
+     fn = cache.group(1)
+ 
+   for i, line in enumerate(hunk.lines):
      # Context diffs have extra whitespace after first char;
      # remove it to make matching easier.
!     if hunk.ctx_diff:
!       line = re.sub(r'^([-+! ]) ', r'\1', line)
  
!     # Remember most recent identifier in hunk
!     # that might be a function name.
!     if cache.match(r'^[-+! ]([a-zA-Z0-9_#].*)', line):
!       fn = cache.group(1)
  
!     change = line and re.match(r'^[-+!][^-]', line)
  
!     # Top-level comment can not belong to function
!     if re.match(r'^[-+! ]\/\*', line):
!       fn = None
  
!     if change and fn:
!       if cache.match(r'^((class|struct|union|enum)\s+[a-zA-Z0-9_]+)', fn):
!         # Struct declaration
!         fn = cache.group(1)
!       elif cache.search(r'#\s*define\s+([a-zA-Z0-9_]+)', fn):
!         # Macro definition
!         fn = cache.group(1)
!       elif cache.match('^DEF[A-Z0-9_]+\s*\(([a-zA-Z0-9_]+)', fn):
!         # Supermacro
!         fn = cache.group(1)
!       elif cache.search(r'([a-zA-Z_][^()\s]*)\s*\([^*]', fn):
!         # Discard template and function parameters.
!         fn = cache.group(1)
!         fn = re.sub(r'<[^<>]*>', '', fn)
!         fn = fn.rstrip()
!       else:
!         fn = None
  
!       if fn and fn not in fns:  # Avoid dups
!         fns.append(fn)
  
!       fn = None
  
!   return fns
  
! def parse_patch(contents):
!   """Parse patch contents to a sequence of FileDiffs."""
  
!   diffs = []
  
!   lines = contents.split('\n')
  
!   i = 0
!   while i < len(lines):
!     line = lines[i]
  
!     # Diff headers look like
!     #   --- a/gcc/tree.c
!     #   +++ b/gcc/tree.c
!     # or
!     #   *** gcc/cfgexpand.c     2013-12-25 20:07:24.800350058 +0400
!     #   --- gcc/cfgexpand.c     2013-12-25 20:06:30.612350178 +0400
  
!     if is_file_diff_start(line):
!       left = re.split(r'\s+', line)[1]
!     else:
!       i += 1
!       continue
  
!     left = remove_suffixes(left);
  
!     i += 1
!     line = lines[i]
! 
!     if not cache.match(r'^[+-][+-][+-] +(\S+)', line):
!       error("expected filename in line %d" % i)
!     right = remove_suffixes(cache.group(1));
! 
!     # Extract real file name from left and right names.
!     filename = None
!     if left == right:
!       filename = left
!     elif left == '/dev/null':
!       filename = right;
!     elif right == '/dev/null':
!       filename = left;
!     else:
!       comps = []
!       while left and right:
!         left, l = os.path.split(left)
!         right, r = os.path.split(right)
!         if l != r:
!           break
!         comps.append(l)
!     
!       if not comps:
!         error("failed to extract common name for %s and %s" % (left, right))
! 
!       comps.reverse()
!       filename = '/'.join(comps)
! 
!     d = FileDiff(filename)
!     diffs.append(d)
! 
!     # Collect hunks for current file.
!     hunk = None
!     i += 1
!     while i < len(lines):
!       line = lines[i]
! 
!       # Create new hunk when we see hunk header
!       if is_hunk_start(line):
!         if hunk is not None:
!           d.hunks.append(hunk)
!         hunk = Hunk(line)
!         i += 1
!         continue
! 
!       # Stop when we reach next diff
!       if (is_file_diff_start(line)
!           or line.startswith('diff ')
!           or line.startswith('Index: ')):
!         i -= 1
!         break
! 
!       if hunk is not None:
!         hunk.lines.append(line)
!       i += 1
! 
!     d.hunks.append(hunk)
! 
!   return diffs
! 
! def main():
!   name, email = read_user_info()
! 
!   try:
!     opts, args = getopt.getopt(sys.argv[1:], 'hiv', ['help', 'verbose', 'inline'])
!   except getopt.GetoptError, err:
!     error(str(err))
! 
!   inline = False
!   verbose = 0
! 
!   for o, a in opts:
!     if o in ('-h', '--help'):
!       print_help_and_exit()
!     elif o in ('-i', '--inline'):
!       inline = True
!     elif o in ('-v', '--verbose'):
!       verbose += 1
!     else:
!       assert False, "unhandled option"
! 
!   if len(args) == 0:
!     args = ['-']
! 
!   if len(args) == 1 and args[0] == '-':
!     input = sys.stdin
!   elif len(args) == 1:
!     input = open(args[0], 'rb')
!   else:
!     error("too many arguments; for more details run with -h")
! 
!   contents = input.read()
!   diffs = parse_patch(contents)
! 
!   if verbose:
!     print "Parse results:"
!     for d in diffs:
!       d.dump()
! 
!   # Generate template ChangeLog.
! 
!   logs = {}
!   for d in diffs:
!     log_name = d.clname
! 
!     logs.setdefault(log_name, '')
!     logs[log_name] += '\t* %s' % d.relname
! 
!     change_msg = ''
! 
!     # Check if file was removed or added.
!     # Two patterns for context and unified diff.
!     if len(d.hunks) == 1:
!       hunk0 = d.hunks[0]
!       if hunk0.is_file_addition():
!         if re.search(r'testsuite.*(?<!\.exp)$', d.filename):
!           change_msg = ': New test.\n'
!         else:
!           change_msg = ": New file.\n"
!       elif hunk0.is_file_removal():
!         change_msg = ": Remove.\n"
! 
!     _, ext = os.path.splitext(d.filename)
!     if not change_msg and ext in ['.c', '.cpp', '.C', '.cc', '.h', '.inc', '.def']:
!       fns = []
!       for hunk in d.hunks:
!         for fn in find_changed_funs(hunk):
!           if fn not in fns:
!             fns.append(fn)
! 
!       for fn in fns:
!         if change_msg:
!           change_msg += "\t(%s):\n" % fn
!         else:
!           change_msg = " (%s):\n" % fn
! 
!     logs[log_name] += change_msg if change_msg else ":\n"
! 
!   if inline and args[0] != '-':
!     # Get a temp filename, rather than an open filehandle, because we use
!     # the open to truncate.
!     fd, tmp = tempfile.mkstemp("tmp.XXXXXXXX")
!     os.close(fd)
! 
!     # Copy permissions to temp file
!     # (old Pythons do not support shutil.copymode)
!     shutil.copymode(args[0], tmp)
! 
!     # Open the temp file, clearing contents.
!     out = open(tmp, 'wb')
!   else:
!     tmp = None
!     out = sys.stdout
! 
!   # Print log
!   date = time.strftime('%Y-%m-%d')
!   for log_name, msg in sorted(logs.iteritems()):
!     out.write("""\
! %s:
! 
! %s  %s  <%s>
! 
! %s\n""" % (log_name, date, name, email, msg))
! 
!   if inline:
!     # Append patch body
!     out.write(contents)
! 
!     if args[0] != '-':
!       # Write new contents atomically
!       out.close()
!       shutil.move(tmp, args[0])
! 
! if __name__ == '__main__':
!     main()
diff -Nrcpad gcc-7.3.0/contrib/mklog.pl gcc-8.1.0/contrib/mklog.pl
*** gcc-7.3.0/contrib/mklog.pl	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/contrib/mklog.pl	Wed Aug  2 20:58:23 2017
***************
*** 0 ****
--- 1,362 ----
+ #!/usr/bin/perl
+ # Copyright (C) 2012-2017 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 COPYING.  If not, write to
+ # the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+ # Boston, MA 02110-1301, USA.
+ 
+ # This script parses a .diff file generated with 'diff -up' or 'diff -cp'
+ # and adds a skeleton ChangeLog file to the file. It does not try to be
+ # very smart when parsing function names, but it produces a reasonable
+ # approximation.
+ #
+ # Author: Diego Novillo <dnovillo@google.com> and
+ #         Cary Coutant <ccoutant@google.com>
+ 
+ use File::Temp;
+ use File::Copy qw(cp mv);
+ 
+ $date = `date +%Y-%m-%d`; chop ($date);
+ 
+ $dot_mklog_format_msg =
+     "The .mklog format is:\n"
+     . "NAME = ...\n"
+     . "EMAIL = ...\n";
+ 
+ # Create a .mklog to reflect your profile, if necessary.
+ my $conf = "$ENV{HOME}/.mklog";
+ if (-f "$conf") {
+     open (CONF, "$conf")
+ 	or die "Could not open file '$conf' for reading: $!\n";
+     while (<CONF>) {
+ 	if (m/^\s*NAME\s*=\s*(.*?)\s*$/) {
+ 	    $name = $1;
+ 	} elsif (m/^\s*EMAIL\s*=\s*(.*?)\s*$/) {
+ 	    $addr = $1;
+ 	}
+     }
+     if (!($name && $addr)) {
+ 	die "Could not read .mklog settings.\n"
+ 	    . $dot_mklog_format_msg;
+     }
+ } else {
+     $name = `git config user.name`;
+     chomp($name);
+     $addr = `git config user.email`;
+     chomp($addr);
+ 
+     if (!($name && $addr)) {
+ 	die "Could not read git user.name and user.email settings.\n"
+ 	    . "Please add missing git settings, or create a .mklog file in"
+ 	    . " $ENV{HOME}.\n"
+ 	    . $dot_mklog_format_msg;
+     }
+ }
+ 
+ $gcc_root = $0;
+ $gcc_root =~ s/[^\\\/]+$/../;
+ 
+ #-----------------------------------------------------------------------------
+ # Program starts here. You should not need to edit anything below this
+ # line.
+ #-----------------------------------------------------------------------------
+ $inline = 0;
+ if ($#ARGV == 1 && ("$ARGV[0]" eq "-i" || "$ARGV[0]" eq "--inline")) {
+ 	shift;
+ 	$inline = 1;
+ } elsif ($#ARGV != 0) {
+     $prog = `basename $0`; chop ($prog);
+     print <<EOF;
+ usage: $prog [ -i | --inline ] file.diff
+ 
+ Generate ChangeLog template for file.diff.
+ It assumes that patch has been created with -up or -cp.
+ When -i is used, the ChangeLog template is followed by the contents of
+ file.diff.
+ When file.diff is -, read standard input.
+ When -i is used and file.diff is not -, it writes to file.diff, otherwise it
+ writes to stdout.
+ EOF
+     exit 1;
+ }
+ 
+ $diff = $ARGV[0];
+ $dir = `dirname $diff`; chop ($dir);
+ $basename = `basename $diff`; chop ($basename);
+ $hdrline = "$date  $name  <$addr>";
+ 
+ sub get_clname ($) {
+ 	return ('ChangeLog', $_[0]) if ($_[0] !~ /[\/\\]/);
+ 
+ 	my $dirname = $_[0];
+ 	while ($dirname) {
+ 		my $clname = "$dirname/ChangeLog";
+ 		if (-f "$gcc_root/$clname" || -f "$clname") {
+ 			my $relname = substr ($_[0], length ($dirname) + 1);
+ 			return ($clname, $relname);
+ 		} else {
+ 			$dirname =~ s/[\/\\]?[^\/\\]*$//;
+ 		} 
+ 	}
+ 
+ 	return ('Unknown ChangeLog', $_[0]);
+ }
+ 
+ sub remove_suffixes ($) {
+ 	my $filename = $_[0];
+ 	$filename =~ s/^[ab]\///;
+ 	$filename =~ s/\.jj$//;
+ 	return $filename;
+ }
+ 
+ sub is_context_hunk_start {
+ 	return @_[0] =~ /^\*\*\*\*\*\** ([a-zA-Z0-9_].*)/;
+ }
+ 
+ sub is_unified_hunk_start {
+ 	return @_[0] =~ /^@@ .* @@ ([a-zA-Z0-9_].*)/;
+ }
+ 
+ # Check if line is a top-level declaration.
+ sub is_top_level {
+ 	my ($function, $is_context_diff) = (@_);
+ 	if (is_unified_hunk_start ($function)
+ 	    || is_context_hunk_start ($function)) {
+ 	    return 1;
+ 	}
+ 	if ($is_context_diff) {
+ 		$function =~ s/^..//;
+ 	} else {
+ 		$function =~ s/^.//;
+ 	}
+ 	return $function && $function !~ /^[\s{#]/;
+ }
+ 
+ # Read contents of .diff file
+ open (DFILE, $diff) or die "Could not open file $diff for reading";
+ chomp (my @diff_lines = <DFILE>);
+ close (DFILE);
+ 
+ # Array diff_lines is modified by the log generation, so save a copy in
+ # orig_diff_lines if needed.
+ if ($inline) {
+     @orig_diff_lines = @diff_lines;
+ }
+ 
+ # For every file in the .diff print all the function names in ChangeLog
+ # format.
+ %cl_entries = ();
+ $change_msg = undef;
+ $look_for_funs = 0;
+ $clname = get_clname('');
+ $line_idx = 0;
+ foreach (@diff_lines) {
+     # Stop processing functions if we found a new file.
+ 	# Remember both left and right names because one may be /dev/null.
+     # Don't be fooled by line markers in case of context diff.
+     if (!/\*\*\*$/ && /^[+*][+*][+*] +(\S+)/) {
+ 		$left = remove_suffixes ($1);
+ 		$look_for_funs = 0;
+ 	}
+     if (!/---$/ && /^--- +(\S+)?/) {
+ 		$right = remove_suffixes ($1);
+ 		$look_for_funs = 0;
+ 	}
+ 
+ 	# Check if the body of diff started.
+ 	# We should now have both left and right name,
+ 	# so we can decide filename.
+ 
+     if ($left && (/^\*{15}/ || /^@@ /)) {
+ 	# If we have not seen any function names in the previous file (ie,
+ 	# $change_msg is empty), we just write out a ':' before starting the next
+ 	# file.
+ 	if ($clname) {
+ 		$cl_entries{$clname} .= $change_msg ? "$change_msg" : ":\n";
+ 	}
+ 
+ 	if ($left eq $right) {
+ 		$filename = $left;
+ 	} elsif($left eq '/dev/null') {
+ 		$filename = $right;
+ 	} elsif($right eq '/dev/null') {
+ 		$filename = $left;
+ 	} else {
+ 		my @ldirs = split /[\/\\]/, $left;
+ 		my @rdirs = split /[\/\\]/, $right;
+ 
+ 		$filename = '';
+ 		while ((my $l = pop @ldirs) && (my $r = pop @rdirs)) {
+ 			last if ($l ne $r);
+ 			$filename = "$l/$filename";
+ 		}
+ 		$filename =~ s/\/$//;
+ 
+ 		if (!$filename) {
+ 			print STDERR "Error: failed to parse diff for $left and $right\n";
+ 			exit 1;
+ 		}
+ 	}
+ 	$left = $right = undef;
+ 	($clname, $relname) = get_clname ($filename);
+ 	$cl_entries{$clname} .= "\t* $relname";
+ 	$change_msg = '';
+ 	$look_for_funs = $filename =~ '\.(c|cpp|C|cc|h|inc|def)$';
+     }
+ 
+     # Context diffs have extra whitespace after first char;
+     # remove it to make matching easier.
+     if ($is_context_diff) {
+       s/^([-+! ]) /\1/;
+     }
+ 
+     # Remember the last line in a diff block that might start
+     # a new function.
+     if (/^[-+! ]([a-zA-Z0-9_].*)/) {
+         $save_fn = $1;
+     }
+ 
+     # Check if file is newly added.
+     # Two patterns: for context and unified diff.
+     if (/^\*\*\* 0 \*\*\*\*/
+         || /^@@ -0,0 \+1.* @@/) {
+         $change_msg = $filename =~ /testsuite.*(?<!\.exp)$/ ? ": New test.\n" : ": New file.\n";
+         $look_for_funs = 0;
+     }
+ 
+     # Check if file was removed.
+     # Two patterns: for context and unified diff.
+     if (/^--- 0 ----/
+         || /^@@ -1.* \+0,0 @@/) {
+         $change_msg = ": Remove.\n";
+         $look_for_funs = 0;
+     }
+ 
+     if (is_unified_hunk_start ($diff_lines[$line_idx])) {
+         $is_context_diff = 0;
+     }
+     elsif (is_context_hunk_start ($diff_lines[$line_idx])) {
+ 	    $is_context_diff = 1;
+     }
+ 
+     # If we find a new function, print it in brackets.  Special case if
+     # this is the first function in a file.  
+     #
+     # Note that we don't try too hard to find good matches.  This should
+     # return a superset of the actual set of functions in the .diff file.
+     #
+     # The first pattern works with context diff files (diff -c). The
+     # second pattern works with unified diff files (diff -u).
+     #
+     # The third pattern looks for the starts of functions or classes
+     # within a diff block both for context and unified diff files.
+     if ($look_for_funs
+         && (/^\*\*\*\*\*\** ([a-zA-Z0-9_].*)/
+ 	|| /^@@ .* @@ ([a-zA-Z0-9_].*)/
+ 	|| /^[-+! ](\{)/))
+       {
+ 	$_ = $1;
+ 	my $fn;
+ 	if (/^\{/) {
+ 	    # Beginning of a new function.
+ 	    $_ = $save_fn;
+ 	} else {
+ 	    $save_fn = "";
+ 	}
+ 	if (/;$/) {
+ 	    # No usable function name found.
+ 	} elsif (/^((class|struct|union|enum) [a-zA-Z0-9_]+)/) {
+ 	    # Discard stuff after the class/struct/etc. tag.
+ 	    $fn = $1;
+ 	} elsif (/([a-zA-Z0-9_][^(]*)\(/) {
+ 	    # Discard template and function parameters.
+ 	    $fn = $1;
+ 	    1 while ($fn =~ s/<[^<>]*>//);
+ 	    $fn =~ s/[ \t]*$//;
+ 	}
+ 	# Check is function really modified
+ 	$no_real_change = 0;
+ 	$idx = $line_idx;
+ 	# Skip line info in context diffs.
+ 	while ($idx <= $#diff_lines && $is_context_diff
+                && $diff_lines[$idx + 1] =~ /^[-\*]{3} [0-9]/) {
+ 		++$idx;
+ 	}
+ 	# Check all lines till the first change
+ 	# for the presence of really changed function
+ 	do {
+ 		++$idx;
+ 		$no_real_change = $idx > $#diff_lines
+ 				  || is_top_level ($diff_lines[$idx], $is_context_diff);
+ 	} while (!$no_real_change && ($diff_lines[$idx] !~ /^[-+!]/));
+ 	if ($fn && !$seen_names{$fn} && !$no_real_change) {
+ 	    # If this is the first function in the file, we display it next
+ 	    # to the filename, so we need an extra space before the opening
+ 	    # brace.
+ 	    if (!$change_msg) {
+ 		$change_msg .= " ";
+ 	    } else {
+ 		$change_msg .= "\t";
+ 	    }
+ 
+ 		$change_msg .= "($fn):\n";
+ 	    $seen_names{$fn} = 1;
+ 	}
+     }
+ 	$line_idx++;
+ }
+ 
+ # If we have not seen any function names (ie, $change_msg is empty), we just
+ # write out a ':'. This happens when there is only one file with no
+ # functions.
+ $cl_entries{$clname} .= $change_msg ? "$change_msg\n" : ":\n";
+ 
+ if ($inline && $diff ne "-") {
+ 	# Get a temp filename, rather than an open filehandle, because we use
+ 	# the open to truncate.
+ 	$tmp = mktemp("tmp.XXXXXXXX") or die "Could not create temp file: $!";
+ 
+ 	# Copy the permissions to the temp file (in File::Copy module version
+ 	# 2.15 and later).
+ 	cp $diff, $tmp or die "Could not copy patch file to temp file: $!";
+ 
+ 	# Open the temp file, clearing contents.
+ 	open (OUTPUTFILE, '>', $tmp) or die "Could not open temp file: $!";
+ } else {
+ 	*OUTPUTFILE = STDOUT;
+ }
+ 
+ # Print the log
+ foreach my $clname (keys %cl_entries) {
+ 	print OUTPUTFILE "$clname:\n\n$hdrline\n\n$cl_entries{$clname}\n";
+ }
+ 
+ if ($inline) {
+ 	# Append the patch to the log
+ 	foreach (@orig_diff_lines) {
+ 		print OUTPUTFILE "$_\n";
+ 	}
+ }
+ 
+ if ($inline && $diff ne "-") {
+ 	# Close $tmp
+ 	close(OUTPUTFILE);
+ 
+ 	# Write new contents to $diff atomically
+ 	mv $tmp, $diff or die "Could not move temp file to patch file: $!";
+ }
+ 
+ exit 0;
diff -Nrcpad gcc-7.3.0/contrib/prerequisites.md5 gcc-8.1.0/contrib/prerequisites.md5
*** gcc-7.3.0/contrib/prerequisites.md5	Mon Oct 24 16:05:48 2016
--- gcc-8.1.0/contrib/prerequisites.md5	Mon Sep 18 11:25:13 2017
***************
*** 1,4 ****
  86ee6e54ebfc4a90b643a65e402c4048  gmp-6.1.0.tar.bz2
  b8a2f6b0e68bef46e53da2ac439e1cf4  mpfr-3.1.4.tar.bz2
  d6a1d5f8ddea3abd2cc3e98f58352d26  mpc-1.0.3.tar.gz
! ac1f25a0677912952718a51f5bc20f32  isl-0.16.1.tar.bz2
--- 1,4 ----
  86ee6e54ebfc4a90b643a65e402c4048  gmp-6.1.0.tar.bz2
  b8a2f6b0e68bef46e53da2ac439e1cf4  mpfr-3.1.4.tar.bz2
  d6a1d5f8ddea3abd2cc3e98f58352d26  mpc-1.0.3.tar.gz
! 11436d6b205e516635b666090b94ab32  isl-0.18.tar.bz2
diff -Nrcpad gcc-7.3.0/contrib/prerequisites.sha512 gcc-8.1.0/contrib/prerequisites.sha512
*** gcc-7.3.0/contrib/prerequisites.sha512	Mon Oct 24 16:05:48 2016
--- gcc-8.1.0/contrib/prerequisites.sha512	Mon Sep 18 11:25:13 2017
***************
*** 1,4 ****
  3c82aeab9c1596d4da8afac2eec38e429e84f3211e1a572cf8fd2b546493c44c039b922a1133eaaa48bd7f3e11dbe795a384e21ed95cbe3ecc58d7ac02246117  gmp-6.1.0.tar.bz2
  51066066ff2c12ed2198605ecf68846b0c96b548adafa5b80e0c786d0df488411a5e8973358fce7192dc977ad4e68414cf14500e3c39746de62465eb145bb819  mpfr-3.1.4.tar.bz2
  0028b76df130720c1fad7de937a0d041224806ce5ef76589f19c7b49d956071a683e2f20d154c192a231e69756b19e48208f2889b0c13950ceb7b3cfaf059a43  mpc-1.0.3.tar.gz
! c188667a84dc5bdddb4ab7c35f89c91bf15a8171f4fcaf41301cf285fb7328846d9a367c096012fec4cc69d244f0bc9e95d84c09ec097394cd4093076f2a041b  isl-0.16.1.tar.bz2
--- 1,4 ----
  3c82aeab9c1596d4da8afac2eec38e429e84f3211e1a572cf8fd2b546493c44c039b922a1133eaaa48bd7f3e11dbe795a384e21ed95cbe3ecc58d7ac02246117  gmp-6.1.0.tar.bz2
  51066066ff2c12ed2198605ecf68846b0c96b548adafa5b80e0c786d0df488411a5e8973358fce7192dc977ad4e68414cf14500e3c39746de62465eb145bb819  mpfr-3.1.4.tar.bz2
  0028b76df130720c1fad7de937a0d041224806ce5ef76589f19c7b49d956071a683e2f20d154c192a231e69756b19e48208f2889b0c13950ceb7b3cfaf059a43  mpc-1.0.3.tar.gz
! 85d0b40f4dbf14cb99d17aa07048cdcab2dc3eb527d2fbb1e84c41b2de5f351025370e57448b63b2b8a8cf8a0843a089c3263f9baee1542d5c2e1cb37ed39d94  isl-0.18.tar.bz2
diff -Nrcpad gcc-7.3.0/contrib/reghunt/ChangeLog gcc-8.1.0/contrib/reghunt/ChangeLog
*** gcc-7.3.0/contrib/reghunt/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-8.1.0/contrib/reghunt/ChangeLog	Wed May  2 08:07:22 2018
***************
*** 1,14 ****
! 2018-01-25  Release Manager
! 
! 	* GCC 7.3.0 released.
! 
! 2017-08-14  Release Manager
! 
! 	* GCC 7.2.0 released.
! 
! 2017-05-02  Release Manager
  
! 	* GCC 7.1.0 released.
  
  2010-06-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
  
--- 1,6 ----
! 2018-05-02  Release Manager
  
! 	* GCC 8.1.0 released.
  
  2010-06-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
  
diff -Nrcpad gcc-7.3.0/contrib/regression/ChangeLog gcc-8.1.0/contrib/regression/ChangeLog
*** gcc-7.3.0/contrib/regression/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-8.1.0/contrib/regression/ChangeLog	Wed May  2 08:07:22 2018
***************
*** 1,14 ****
! 2018-01-25  Release Manager
! 
! 	* GCC 7.3.0 released.
! 
! 2017-08-14  Release Manager
! 
! 	* GCC 7.2.0 released.
! 
! 2017-05-02  Release Manager
  
! 	* GCC 7.1.0 released.
  
  2012-08-26  Hans-Peter Nilsson  <hp@axis.com>
  
--- 1,6 ----
! 2018-05-02  Release Manager
  
! 	* GCC 8.1.0 released.
  
  2012-08-26  Hans-Peter Nilsson  <hp@axis.com>
  
diff -Nrcpad gcc-7.3.0/contrib/test_summary gcc-8.1.0/contrib/test_summary
*** gcc-7.3.0/contrib/test_summary	Fri Jun  4 14:01:22 2010
--- gcc-8.1.0/contrib/test_summary	Wed Mar 21 08:47:12 2018
*************** BEGIN {
*** 103,116 ****
  NR == 1 {
      configflags = $0 " ";
      srcdir = configflags;
!     sub(/\/configure .*/, "", srcdir);
      if ( system("test -f " srcdir "/LAST_UPDATED") == 0 ) {
          printf "LAST_UPDATED: ";
          system("tail -1 " srcdir "/LAST_UPDATED");
          print "";
      }
  
!     sub(/^[^ ]*\/configure */, " ", configflags);
      sub(/,;t t $/, " ", configflags);
      sub(/ --with-gcc-version-trigger=[^ ]* /, " ", configflags);
      sub(/ --norecursion /, " ", configflags);
--- 103,117 ----
  NR == 1 {
      configflags = $0 " ";
      srcdir = configflags;
!     sub(/\/configure\047? .*/, "", srcdir);
!     sub(/^\047/, "", srcdir);
      if ( system("test -f " srcdir "/LAST_UPDATED") == 0 ) {
          printf "LAST_UPDATED: ";
          system("tail -1 " srcdir "/LAST_UPDATED");
          print "";
      }
  
!     sub(/^[^ ]*\/configure\047? */, " ", configflags);
      sub(/,;t t $/, " ", configflags);
      sub(/ --with-gcc-version-trigger=[^ ]* /, " ", configflags);
      sub(/ --norecursion /, " ", configflags);
diff -Nrcpad gcc-7.3.0/contrib/update-copyright.py gcc-8.1.0/contrib/update-copyright.py
*** gcc-7.3.0/contrib/update-copyright.py	Mon Jan 30 14:31:59 2017
--- gcc-8.1.0/contrib/update-copyright.py	Fri Mar  2 16:35:26 2018
***************
*** 1,6 ****
  #!/usr/bin/python
  #
! # Copyright (C) 2013-2017 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) 2013-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
*************** class TestsuiteFilter (GenericFilter):
*** 591,596 ****
--- 591,598 ----
          # Similarly params/README.
          if filename == 'README' and os.path.basename (dir) == 'params':
              return True
+         if filename == 'pdt_5.f03' and os.path.basename (dir) == 'gfortran.dg':
+ 	    return True
          return GenericFilter.skip_file (self, dir, filename)
  
  class LibCppFilter (GenericFilter):
*************** class GCCCmdLine (CmdLine):
*** 706,712 ****
          self.add_dir ('libatomic')
          self.add_dir ('libbacktrace')
          self.add_dir ('libcc1')
-         # libcilkrts is imported from upstream.
          self.add_dir ('libcpp', LibCppFilter())
          self.add_dir ('libdecnumber')
          # libffi is imported from upstream.
--- 708,713 ----
diff -Nrcpad gcc-7.3.0/contrib/warn_summary gcc-8.1.0/contrib/warn_summary
*** gcc-7.3.0/contrib/warn_summary	Sun Jan 22 20:53:48 2017
--- gcc-8.1.0/contrib/warn_summary	Mon Feb 19 08:03:17 2018
*************** s%^[^ ]*/\(lib[a-z23+-]*/\)%\1%;'
*** 138,144 ****
  
  usage="usage: `basename $0` [-llf] [-s stage] [-nosub|-ch|-cp|-f|-fortran|-ada|-intl|-fixinc] [-pass|-wpass] [file(s)]"
  stageN=3
! tmpfile=/tmp/tmp-warn.$$
  
  # Remove $tmpfile on exit and various signals.
  trap "rm -f $tmpfile" 0
--- 138,144 ----
  
  usage="usage: `basename $0` [-llf] [-s stage] [-nosub|-ch|-cp|-f|-fortran|-ada|-intl|-fixinc] [-pass|-wpass] [file(s)]"
  stageN=3
! tmpfile=${TMPDIR:-/tmp}/tmp-warn.$$
  
  # Remove $tmpfile on exit and various signals.
  trap "rm -f $tmpfile" 0
diff -Nrcpad gcc-7.3.0/fixincludes/ChangeLog gcc-8.1.0/fixincludes/ChangeLog
*** gcc-7.3.0/fixincludes/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-8.1.0/fixincludes/ChangeLog	Wed May  2 08:07:22 2018
***************
*** 1,14 ****
! 2018-01-25  Release Manager
  
! 	* GCC 7.3.0 released.
  
! 2017-08-14  Release Manager
  
! 	* GCC 7.2.0 released.
  
! 2017-05-02  Release Manager
  
! 	* GCC 7.1.0 released.
  
  2017-02-25  John David Anglin  <danglin@gcc.gnu.org>
  
--- 1,29 ----
! 2018-05-02  Release Manager
  
! 	* GCC 8.1.0 released.
  
! 2018-04-18  David Malcolm  <dmalcolm@redhat.com>
  
! 	PR jit/85384
! 	* configure: Regenerate.
  
! 2018-02-22  David Edelsohn  <dje.gcc@gmail.com>
  
! 	* inclhack.def (aix_stdlib_vec_malloc): New.
! 	(aix_stdlib_vec_calloc): New.
! 	* fixincl.x: Regenerate.
! 	* tests/base/stdlib.h [AIX_STDLIB_VEC_MALLOC]: New test.
! 	[AIX_STDLIB_VEC_CALLOC]: New test.
! 
! 2017-10-13  Mike Frysinger  <vapier@chromium.org>
! 
! 	* fixinc.in (dirname): Change sed from 's|[^/]*/||' to
! 	's|[^/]*//*||'.
! 
! 2017-06-12  Doug Rupp  <rupp@adacore.com>
! 
! 	* inclhack.def (AAB_vxworks_stdint): Remove hack.
! 	* fixincl.x: Regenerate.
  
  2017-02-25  John David Anglin  <danglin@gcc.gnu.org>
  
diff -Nrcpad gcc-7.3.0/fixincludes/configure gcc-8.1.0/fixincludes/configure
*** gcc-7.3.0/fixincludes/configure	Tue Jan 17 09:38:48 2017
--- gcc-8.1.0/fixincludes/configure	Wed Apr 18 09:46:58 2018
*************** _ACEOF
*** 5401,5407 ****
  # Check whether --with-gcc-major-version-only was given.
  if test "${with_gcc_major_version_only+set}" = set; then :
    withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then
!         get_gcc_base_ver="sed -e 's/^\([0-9]*\).*\$\$/\1/'"
        fi
  
  fi
--- 5401,5407 ----
  # Check whether --with-gcc-major-version-only was given.
  if test "${with_gcc_major_version_only+set}" = set; then :
    withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then
!         get_gcc_base_ver="sed -e 's/^\([0-9]*\).*/\1/'"
        fi
  
  fi
diff -Nrcpad gcc-7.3.0/fixincludes/fixinc.in gcc-8.1.0/fixincludes/fixinc.in
*** gcc-7.3.0/fixincludes/fixinc.in	Tue Aug  2 15:58:06 2016
--- gcc-8.1.0/fixincludes/fixinc.in	Fri Oct 13 15:28:41 2017
*************** if $LINKS; then
*** 344,350 ****
              mkdir $component >/dev/null 2>&1
              cd $component
              dirmade=$dirmade/$component
!             dirname=`echo $dirname | sed -e 's|[^/]*/||'`
            done
          fi
  
--- 344,350 ----
              mkdir $component >/dev/null 2>&1
              cd $component
              dirmade=$dirmade/$component
!             dirname=`echo $dirname | sed -e 's|[^/]*//*||'`
            done
          fi
  
diff -Nrcpad gcc-7.3.0/fixincludes/fixincl.x gcc-8.1.0/fixincludes/fixincl.x
*** gcc-7.3.0/fixincludes/fixincl.x	Sat Feb 25 20:29:39 2017
--- gcc-8.1.0/fixincludes/fixincl.x	Thu Feb 22 16:12:26 2018
***************
*** 1,12 ****
  /*  -*- buffer-read-only: t -*- vi: set ro:
!  * 
   * DO NOT EDIT THIS FILE   (fixincl.x)
!  * 
!  * It has been AutoGen-ed  Saturday February 25, 2017 at 03:25:44 PM EST
   * From the definitions    inclhack.def
   * and the template file   fixincl
   */
! /* DO NOT SVN-MERGE THIS FILE, EITHER Sat 25 Feb 2017 15:25:44 EST
   *
   * You must regenerate it.  Use the ./genfixes script.
   *
--- 1,12 ----
  /*  -*- buffer-read-only: t -*- vi: set ro:
!  *
   * DO NOT EDIT THIS FILE   (fixincl.x)
!  *
!  * It has been AutoGen-ed  February 22, 2018 at 03:46:51 PM by AutoGen 5.18
   * From the definitions    inclhack.def
   * and the template file   fixincl
   */
! /* DO NOT SVN-MERGE THIS FILE, EITHER Thu Feb 22 15:46:51 UTC 2018
   *
   * 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 248 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 249 fixup descriptions.
   *
   * See README for more information.
   *
*************** static const char* apzAab_Vxworks_Regs_V
*** 581,700 ****
  
  /* * * * * * * * * * * * * * * * * * * * * * * * * *
   *
-  *  Description of Aab_Vxworks_Stdint fix
-  */
- tSCC zAab_Vxworks_StdintName[] =
-      "AAB_vxworks_stdint";
- 
- /*
-  *  File name selection pattern
-  */
- tSCC zAab_Vxworks_StdintList[] =
-   "stdint.h\0";
- /*
-  *  Machine/OS name selection pattern
-  */
- tSCC* apzAab_Vxworks_StdintMachs[] = {
-         "*-*-vxworks*",
-         (const char*)NULL };
- #define AAB_VXWORKS_STDINT_TEST_CT  0
- #define aAab_Vxworks_StdintTests   (tTestDesc*)NULL
- 
- /*
-  *  Fix Command Arguments for Aab_Vxworks_Stdint
-  */
- static const char* apzAab_Vxworks_StdintPatch[] = {
- "#ifndef _STDINT_H\n\
- #define _STDINT_H\n\
- /* get int*_t, uint*_t */\n\
- #include <types/vxTypes.h>\n\n\
- /* get legacy vxworks types for compatibility */\n\
- #include <types/vxTypesOld.h>\n\n\
- typedef long intptr_t;\n\
- typedef unsigned long uintptr_t;\n\n\
- typedef int64_t intmax_t;\n\
- typedef uint64_t uintmax_t;\n\n\
- typedef int8_t int_least8_t;\n\
- typedef int16_t int_least16_t;\n\
- typedef int32_t int_least32_t;\n\
- typedef int64_t int_least64_t;\n\n\
- typedef uint8_t uint_least8_t;\n\
- typedef uint16_t uint_least16_t;\n\
- typedef uint32_t uint_least32_t;\n\
- typedef uint64_t uint_least64_t;\n\n\
- typedef int8_t int_fast8_t;\n\
- typedef int int_fast16_t;\n\
- typedef int32_t int_fast32_t;\n\
- typedef int64_t int_fast64_t;\n\n\
- typedef uint8_t uint_fast8_t;\n\
- typedef unsigned int uint_fast16_t;\n\
- typedef uint32_t uint_fast32_t;\n\
- typedef uint64_t uint_fast64_t;\n\n\
- /* Ranges */\n\
- #define UINT8_MAX (~(uint8_t)0)\n\
- #define UINT8_MIN 0\n\
- #define UINT16_MAX (~(uint16_t)0)\n\
- #define UINT16_MIN 0\n\
- #define UINT32_MAX (~(uint32_t)0)\n\
- #define UINT32_MIN 0\n\
- #define UINT64_MAX (~(uint64_t)0)\n\
- #define UINT64_MIN 0\n\n\
- #define UINTPTR_MAX (~(uintptr_t)0)\n\
- #define UINTPTR_MIN 0\n\n\
- /* Need to do int_fast16_t as well, as type\n\
-    size may be architecture dependent */\n\
- #define UINT_FAST16_MAX (~(uint_fast16_t)0)\n\
- #define UINT_FAST16_MAX 0\n\n\
- #define INT8_MAX (UINT8_MAX>>1)\n\
- #define INT8_MIN (INT8_MAX+1)\n\
- #define INT16_MAX (UINT16_MAX>>1)\n\
- #define INT16_MIN (INT16_MAX+1)\n\
- #define INT32_MAX (UINT32_MAX>>1)\n\
- #define INT32_MIN (INT32_MAX+1)\n\
- #define INT64_MAX (UINT64_MAX>>1)\n\
- #define INT64_MIN (INT64_MAX+1)\n\n\
- #define INTPTR_MAX (UINTPTR_MAX>>1)\n\
- #define INTPTR_MIN (INTPTR_MAX+1)\t\n\n\
- #define INT_FAST16_MAX (UINT_FAST16_MAX>>1)\n\
- #define INT_FAST16_MIN (INT_FAST16_MAX+1)\n\n\
- /* now define equiv. constants */\n\
- #define UINT_FAST8_MAX UINT8_MAX\n\
- #define UINT_FAST8_MIN UINT_FAST8_MIN\n\
- #define INT_FAST8_MAX INT8_MAX\n\
- #define INT_FAST8_MIN INT8_MIN\n\
- #define UINT_FAST32_MAX UINT32_MAX\n\
- #define UINT_FAST32_MIN UINT32_MIN\n\
- #define INT_FAST32_MAX INT32_MAX\n\
- #define INT_FAST32_MIN INT32_MIN\n\
- #define UINT_FAST64_MAX UINT64_MAX\n\
- #define UINT_FAST64_MIN UINT64_MIN\n\
- #define INT_FAST64_MAX INT64_MAX\n\
- #define INT_FAST64_MIN INT64_MIN\n\n\
- #define UINT_LEAST8_MAX UINT8_MAX\n\
- #define UINT_LEAST8_MIN UINT8_MIN\n\
- #define INT_LEAST8_MAX INT8_MAX\n\
- #define INT_LEAST8_MIN INT8_MIN\n\
- #define UINT_LEAST16_MAX UINT16_MAX\n\
- #define UINT_LEAST16_MIN UINT16_MIN\n\
- #define INT_LEAST16_MAX INT16_MAX\n\
- #define INT_LEAST16_MIN INT16_MIN\n\
- #define UINT_LEAST32_MAX UINT32_MAX\n\
- #define UINT_LEAST32_MIN UINT32_MIN\n\
- #define INT_LEAST32_MAX INT32_MAX\n\
- #define INT_LEAST32_MIN INT32_MIN\n\
- #define UINT_LEAST64_MAX UINT64_MAX\n\
- #define UINT_LEAST64_MIN UINT64_MIN\n\
- #define INT_LEAST64_MAX INT64_MAX\n\
- #define INT_LEAST64_MIN INT64_MIN\n\n\
- #define UINTMAX_MAX UINT64_MAX\n\
- #define UINTMAX_MIN UINT64_MIN\n\
- #define INTMAX_MAX INT64_MAX\n\
- #define INTMAX_MIN INT64_MIN\n\n\
- #endif",
-     (char*)NULL };
- 
- /* * * * * * * * * * * * * * * * * * * * * * * * * *
-  *
   *  Description of Aab_Vxworks_Unistd fix
   */
  tSCC zAab_Vxworks_UnistdName[] =
--- 581,586 ----
*************** static const char* apzAix_Stdlib_VallocP
*** 1695,1700 ****
--- 1581,1660 ----
  
  /* * * * * * * * * * * * * * * * * * * * * * * * * *
   *
+  *  Description of Aix_Stdlib_Vec_Malloc fix
+  */
+ tSCC zAix_Stdlib_Vec_MallocName[] =
+      "aix_stdlib_vec_malloc";
+ 
+ /*
+  *  File name selection pattern
+  */
+ tSCC zAix_Stdlib_Vec_MallocList[] =
+   "stdlib.h\0";
+ /*
+  *  Machine/OS name selection pattern
+  */
+ tSCC* apzAix_Stdlib_Vec_MallocMachs[] = {
+         "*-*-aix*",
+         (const char*)NULL };
+ 
+ /*
+  *  content selection pattern - do fix if pattern found
+  */
+ tSCC zAix_Stdlib_Vec_MallocSelect0[] =
+        "#define[ \t]+malloc[ \t]+vec_malloc";
+ 
+ #define    AIX_STDLIB_VEC_MALLOC_TEST_CT  1
+ static tTestDesc aAix_Stdlib_Vec_MallocTests[] = {
+   { TT_EGREP,    zAix_Stdlib_Vec_MallocSelect0, (regex_t*)NULL }, };
+ 
+ /*
+  *  Fix Command Arguments for Aix_Stdlib_Vec_Malloc
+  */
+ static const char* apzAix_Stdlib_Vec_MallocPatch[] = {
+     "format",
+     "extern void *malloc(size_t) __asm__(\"vec_malloc\");",
+     (char*)NULL };
+ 
+ /* * * * * * * * * * * * * * * * * * * * * * * * * *
+  *
+  *  Description of Aix_Stdlib_Vec_Calloc fix
+  */
+ tSCC zAix_Stdlib_Vec_CallocName[] =
+      "aix_stdlib_vec_calloc";
+ 
+ /*
+  *  File name selection pattern
+  */
+ tSCC zAix_Stdlib_Vec_CallocList[] =
+   "stdlib.h\0";
+ /*
+  *  Machine/OS name selection pattern
+  */
+ tSCC* apzAix_Stdlib_Vec_CallocMachs[] = {
+         "*-*-aix*",
+         (const char*)NULL };
+ 
+ /*
+  *  content selection pattern - do fix if pattern found
+  */
+ tSCC zAix_Stdlib_Vec_CallocSelect0[] =
+        "#define[ \t]+calloc[ \t]+vec_calloc";
+ 
+ #define    AIX_STDLIB_VEC_CALLOC_TEST_CT  1
+ static tTestDesc aAix_Stdlib_Vec_CallocTests[] = {
+   { TT_EGREP,    zAix_Stdlib_Vec_CallocSelect0, (regex_t*)NULL }, };
+ 
+ /*
+  *  Fix Command Arguments for Aix_Stdlib_Vec_Calloc
+  */
+ static const char* apzAix_Stdlib_Vec_CallocPatch[] = {
+     "format",
+     "extern void *calloc(size_t, size_t) __asm__(\"vec_calloc\");",
+     (char*)NULL };
+ 
+ /* * * * * * * * * * * * * * * * * * * * * * * * * *
+  *
   *  Description of Aix_Strtof_Const fix
   */
  tSCC zAix_Strtof_ConstName[] =
*************** static const char* apzX11_SprintfPatch[]
*** 10139,10147 ****
   *
   *  List of all fixes
   */
! #define REGEX_COUNT          285
  #define MACH_LIST_SIZE_LIMIT 187
! #define FIX_COUNT            248
  
  /*
   *  Enumerate the fixes
--- 10099,10107 ----
   *
   *  List of all fixes
   */
! #define REGEX_COUNT          287
  #define MACH_LIST_SIZE_LIMIT 187
! #define FIX_COUNT            249
  
  /*
   *  Enumerate the fixes
*************** typedef enum {
*** 10157,10163 ****
      AAB_SUN_MEMCPY_FIXIDX,
      AAB_VXWORKS_ASSERT_FIXIDX,
      AAB_VXWORKS_REGS_VXTYPES_FIXIDX,
-     AAB_VXWORKS_STDINT_FIXIDX,
      AAB_VXWORKS_UNISTD_FIXIDX,
      AIX_ASSERT_FIXIDX,
      AIX_COMPLEX_FIXIDX,
--- 10117,10122 ----
*************** typedef enum {
*** 10183,10188 ****
--- 10142,10149 ----
      AIX_STDLIB_REALLOC_FIXIDX,
      AIX_STDLIB_CALLOC_FIXIDX,
      AIX_STDLIB_VALLOC_FIXIDX,
+     AIX_STDLIB_VEC_MALLOC_FIXIDX,
+     AIX_STDLIB_VEC_CALLOC_FIXIDX,
      AIX_STRTOF_CONST_FIXIDX,
      AIX_SYSMACHINE_FIXIDX,
      AIX_SYSWAIT_2_FIXIDX,
*************** tFixDesc fixDescList[ FIX_COUNT ] = {
*** 10448,10458 ****
       AAB_VXWORKS_REGS_VXTYPES_TEST_CT, FD_MACH_ONLY | FD_REPLACEMENT,
       aAab_Vxworks_Regs_VxtypesTests,   apzAab_Vxworks_Regs_VxtypesPatch, 0 },
  
-   {  zAab_Vxworks_StdintName,    zAab_Vxworks_StdintList,
-      apzAab_Vxworks_StdintMachs,
-      AAB_VXWORKS_STDINT_TEST_CT, FD_MACH_ONLY | FD_REPLACEMENT,
-      aAab_Vxworks_StdintTests,   apzAab_Vxworks_StdintPatch, 0 },
- 
    {  zAab_Vxworks_UnistdName,    zAab_Vxworks_UnistdList,
       apzAab_Vxworks_UnistdMachs,
       AAB_VXWORKS_UNISTD_TEST_CT, FD_MACH_ONLY | FD_REPLACEMENT,
--- 10409,10414 ----
*************** tFixDesc fixDescList[ FIX_COUNT ] = {
*** 10578,10583 ****
--- 10534,10549 ----
       AIX_STDLIB_VALLOC_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
       aAix_Stdlib_VallocTests,   apzAix_Stdlib_VallocPatch, 0 },
  
+   {  zAix_Stdlib_Vec_MallocName,    zAix_Stdlib_Vec_MallocList,
+      apzAix_Stdlib_Vec_MallocMachs,
+      AIX_STDLIB_VEC_MALLOC_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+      aAix_Stdlib_Vec_MallocTests,   apzAix_Stdlib_Vec_MallocPatch, 0 },
+ 
+   {  zAix_Stdlib_Vec_CallocName,    zAix_Stdlib_Vec_CallocList,
+      apzAix_Stdlib_Vec_CallocMachs,
+      AIX_STDLIB_VEC_CALLOC_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+      aAix_Stdlib_Vec_CallocTests,   apzAix_Stdlib_Vec_CallocPatch, 0 },
+ 
    {  zAix_Strtof_ConstName,    zAix_Strtof_ConstList,
       apzAix_Strtof_ConstMachs,
       AIX_STRTOF_CONST_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
diff -Nrcpad gcc-7.3.0/fixincludes/inclhack.def gcc-8.1.0/fixincludes/inclhack.def
*** gcc-7.3.0/fixincludes/inclhack.def	Sat Feb 25 20:29:39 2017
--- gcc-8.1.0/fixincludes/inclhack.def	Thu Feb 22 16:12:26 2018
*************** fix = {
*** 427,548 ****
  };
  
  /*
-  * Make VxWorks stdint.h a bit more compliant - add typedefs
-  */
- fix = {
-     hackname    = AAB_vxworks_stdint;
-     files       = stdint.h;
-     mach        = "*-*-vxworks*";
-         
-     replace     = <<- _EndOfHeader_
- 	#ifndef _STDINT_H
- 	#define _STDINT_H
- 	/* get int*_t, uint*_t */
- 	#include <types/vxTypes.h>
- 	
- 	/* get legacy vxworks types for compatibility */
- 	#include <types/vxTypesOld.h>
- 	
- 	typedef long intptr_t;
- 	typedef unsigned long uintptr_t;
- 	
- 	typedef int64_t intmax_t;
- 	typedef uint64_t uintmax_t;
- 	
- 	typedef int8_t int_least8_t;
- 	typedef int16_t int_least16_t;
- 	typedef int32_t int_least32_t;
- 	typedef int64_t int_least64_t;
- 	
- 	typedef uint8_t uint_least8_t;
- 	typedef uint16_t uint_least16_t;
- 	typedef uint32_t uint_least32_t;
- 	typedef uint64_t uint_least64_t;
- 	
- 	typedef int8_t int_fast8_t;
- 	typedef int int_fast16_t;
- 	typedef int32_t int_fast32_t;
- 	typedef int64_t int_fast64_t;
- 	
- 	typedef uint8_t uint_fast8_t;
- 	typedef unsigned int uint_fast16_t;
- 	typedef uint32_t uint_fast32_t;
- 	typedef uint64_t uint_fast64_t;
- 	
- 	/* Ranges */
- 	#define UINT8_MAX (~(uint8_t)0)
- 	#define UINT8_MIN 0
- 	#define UINT16_MAX (~(uint16_t)0)
- 	#define UINT16_MIN 0
- 	#define UINT32_MAX (~(uint32_t)0)
- 	#define UINT32_MIN 0
- 	#define UINT64_MAX (~(uint64_t)0)
- 	#define UINT64_MIN 0
- 	
- 	#define UINTPTR_MAX (~(uintptr_t)0)
- 	#define UINTPTR_MIN 0
- 	
- 	/* Need to do int_fast16_t as well, as type
- 	   size may be architecture dependent */
- 	#define UINT_FAST16_MAX (~(uint_fast16_t)0)
- 	#define UINT_FAST16_MAX 0
- 	
- 	#define INT8_MAX (UINT8_MAX>>1)
- 	#define INT8_MIN (INT8_MAX+1)
- 	#define INT16_MAX (UINT16_MAX>>1)
- 	#define INT16_MIN (INT16_MAX+1)
- 	#define INT32_MAX (UINT32_MAX>>1)
- 	#define INT32_MIN (INT32_MAX+1)
- 	#define INT64_MAX (UINT64_MAX>>1)
- 	#define INT64_MIN (INT64_MAX+1)
- 	
- 	#define INTPTR_MAX (UINTPTR_MAX>>1)
- 	#define INTPTR_MIN (INTPTR_MAX+1)	
- 	
- 	#define INT_FAST16_MAX (UINT_FAST16_MAX>>1)
- 	#define INT_FAST16_MIN (INT_FAST16_MAX+1)
- 	
- 	/* now define equiv. constants */
- 	#define UINT_FAST8_MAX UINT8_MAX
- 	#define UINT_FAST8_MIN UINT_FAST8_MIN
- 	#define INT_FAST8_MAX INT8_MAX
- 	#define INT_FAST8_MIN INT8_MIN
- 	#define UINT_FAST32_MAX UINT32_MAX
- 	#define UINT_FAST32_MIN UINT32_MIN
- 	#define INT_FAST32_MAX INT32_MAX
- 	#define INT_FAST32_MIN INT32_MIN
- 	#define UINT_FAST64_MAX UINT64_MAX
- 	#define UINT_FAST64_MIN UINT64_MIN
- 	#define INT_FAST64_MAX INT64_MAX
- 	#define INT_FAST64_MIN INT64_MIN
- 	
- 	#define UINT_LEAST8_MAX UINT8_MAX
- 	#define UINT_LEAST8_MIN UINT8_MIN
- 	#define INT_LEAST8_MAX INT8_MAX
- 	#define INT_LEAST8_MIN INT8_MIN
- 	#define UINT_LEAST16_MAX UINT16_MAX
- 	#define UINT_LEAST16_MIN UINT16_MIN
- 	#define INT_LEAST16_MAX INT16_MAX
- 	#define INT_LEAST16_MIN INT16_MIN
- 	#define UINT_LEAST32_MAX UINT32_MAX
- 	#define UINT_LEAST32_MIN UINT32_MIN
- 	#define INT_LEAST32_MAX INT32_MAX
- 	#define INT_LEAST32_MIN INT32_MIN
- 	#define UINT_LEAST64_MAX UINT64_MAX
- 	#define UINT_LEAST64_MIN UINT64_MIN
- 	#define INT_LEAST64_MAX INT64_MAX
- 	#define INT_LEAST64_MIN INT64_MIN
- 	
- 	#define UINTMAX_MAX UINT64_MAX
- 	#define UINTMAX_MIN UINT64_MIN
- 	#define INTMAX_MAX INT64_MAX
- 	#define INTMAX_MIN INT64_MIN
- 	
- 	#endif
- 	_EndOfHeader_;
- };
- 
- /*
   *  This hack makes makes unistd.h more POSIX-compliant on VxWorks
   */
  fix = {
--- 427,432 ----
*************** fix = {
*** 954,959 ****
--- 838,863 ----
      test_text = "#define valloc __linux_valloc";
  };
  
+ fix = {
+     hackname  = aix_stdlib_vec_malloc;
+     mach      = "*-*-aix*";
+     files     = stdlib.h;
+     select    = "#define[ \t]+malloc[ \t]+vec_malloc";
+     c_fix     = format;
+     c_fix_arg = "extern void *malloc(size_t) __asm__(\"vec_malloc\");";
+     test_text = "#define malloc vec_malloc";
+ };
+ 
+ fix = {
+     hackname  = aix_stdlib_vec_calloc;
+     mach      = "*-*-aix*";
+     files     = stdlib.h;
+     select    = "#define[ \t]+calloc[ \t]+vec_calloc";
+     c_fix     = format;
+     c_fix_arg = "extern void *calloc(size_t, size_t) __asm__(\"vec_calloc\");";
+     test_text = "#define calloc vec_calloc";
+ };
+ 
  /*
   * stdlib.h on AIX 4.3 declares strtof() with a non-const first argument.
   */
diff -Nrcpad gcc-7.3.0/fixincludes/tests/base/stdlib.h gcc-8.1.0/fixincludes/tests/base/stdlib.h
*** gcc-7.3.0/fixincludes/tests/base/stdlib.h	Mon Jun 13 18:59:43 2016
--- gcc-8.1.0/fixincludes/tests/base/stdlib.h	Thu Feb 22 16:12:26 2018
*************** extern void *valloc(size_t) __asm__("__l
*** 29,34 ****
--- 29,44 ----
  #endif  /* AIX_STDLIB_VALLOC_CHECK */
  
  
+ #if defined( AIX_STDLIB_VEC_MALLOC_CHECK )
+ extern void *malloc(size_t) __asm__("vec_malloc");
+ #endif  /* AIX_STDLIB_VEC_MALLOC_CHECK */
+ 
+ 
+ #if defined( AIX_STDLIB_VEC_CALLOC_CHECK )
+ extern void *calloc(size_t, size_t) __asm__("vec_calloc");
+ #endif  /* AIX_STDLIB_VEC_CALLOC_CHECK */
+ 
+ 
  #if defined( AIX_STRTOF_CONST_CHECK )
  extern float    strtof(const char *, char **);
  #endif  /* AIX_STRTOF_CONST_CHECK */
diff -Nrcpad gcc-7.3.0/gcc/ABOUT-GCC-NLS gcc-8.1.0/gcc/ABOUT-GCC-NLS
*** gcc-7.3.0/gcc/ABOUT-GCC-NLS	Sun Jan  1 12:07:43 2017
--- gcc-8.1.0/gcc/ABOUT-GCC-NLS	Wed Jan  3 10:03:58 2018
*************** configure GCC with --enable-maintainer-m
*** 49,55 ****
  rebuilt.
  
  
! Copyright (C) 1998-2017 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-2018 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-7.3.0/gcc/BASE-VER gcc-8.1.0/gcc/BASE-VER
*** gcc-7.3.0/gcc/BASE-VER	Thu Jan 25 08:17:27 2018
--- gcc-8.1.0/gcc/BASE-VER	Wed May  2 08:07:22 2018
***************
*** 1 ****
! 7.3.0
--- 1 ----
! 8.1.0
diff -Nrcpad gcc-7.3.0/gcc/ChangeLog gcc-8.1.0/gcc/ChangeLog
*** gcc-7.3.0/gcc/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-8.1.0/gcc/ChangeLog	Wed May  2 08:07:22 2018
***************
*** 1,12022 ****
! 2018-01-25  Release Manager
! 
! 	* GCC 7.3.0 released.
! 
! 2018-01-23  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	PR rtl-optimization/81443
! 	* rtlanal.c (num_sign_bit_copies1) <SUBREG>: Do not propagate results
! 	from inner REGs to paradoxical SUBREGs.
! 
! 2018-01-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
! 
! 	Backport from mainline
! 	2018-01-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
! 		    David Edelsohn  <dje.gcc@gmail.com>
! 
! 	PR target/83946
! 	* config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
! 	Change "crset eq" to "crset 2".
! 	(*call_value_indirect_nonlocal_sysv<mode>): Likewise.
! 	(*call_indirect_aix<mode>_nospec): Likewise.
! 	(*call_value_indirect_aix<mode>_nospec): Likewise.
! 	(*call_indirect_elfv2<mode>_nospec): Likewise.
! 	(*call_value_indirect_elfv2<mode>_nospec): Likewise.
! 	(*sibcall_nonlocal_sysv<mode>): Change "crset eq" to "crset 2";
! 	change assembly output from . to $.
! 	(*sibcall_value_nonlocal_sysv<mode>): Likewise.
! 	(indirect_jump<mode>_nospec): Change assembly output from . to $.
! 	(*tablejump<mode>_internal1_nospec): Likewise.
! 
! 2018-01-21  Oleg Endo  <olegendo@gcc.gnu.org>
! 
! 	Backport from mainline
! 	2018-01-21  Oleg Endo  <olegendo@gcc.gnu.org>
! 
! 	PR target/80870
! 	* config/sh/sh_optimize_sett_clrt.cc:
! 	Use INCLUDE_ALGORITHM and INCLUDE_VECTOR instead of direct includes.
! 
! 2018-01-17  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
! 
! 	Backport from mainline
! 	2018-01-16  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
! 
! 	* config/rs6000/rs6000.c (rs6000_opt_vars): Add entry for
! 	-mspeculate-indirect-jumps.
! 	* config/rs6000/rs6000.md (*call_indirect_elfv2<mode>): Disable
! 	for -mno-speculate-indirect-jumps.
! 	(*call_indirect_elfv2<mode>_nospec): New define_insn.
! 	(*call_value_indirect_elfv2<mode>): Disable for
! 	-mno-speculate-indirect-jumps.
! 	(*call_value_indirect_elfv2<mode>_nospec): New define_insn.
! 	(indirect_jump): Emit different RTL for
! 	-mno-speculate-indirect-jumps.
! 	(*indirect_jump<mode>): Disable for
! 	-mno-speculate-indirect-jumps.
! 	(*indirect_jump<mode>_nospec): New define_insn.
! 	(tablejump): Emit different RTL for
! 	-mno-speculate-indirect-jumps.
! 	(tablejumpsi): Disable for -mno-speculate-indirect-jumps.
! 	(tablejumpsi_nospec): New define_expand.
! 	(tablejumpdi): Disable for -mno-speculate-indirect-jumps.
! 	(tablejumpdi_nospec): New define_expand.
! 	(*tablejump<mode>_internal1): Disable for
! 	-mno-speculate-indirect-jumps.
! 	(*tablejump<mode>_internal1_nospec): New define_insn.
! 	* config/rs6000/rs6000.opt (mspeculate-indirect-jumps): New
! 	option.
! 
! 	Backport from mainline
! 	2018-01-17  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
! 
! 	* config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
! 	Generate different code for -mno-speculate-indirect-jumps.
! 	(*call_value_indirect_nonlocal_sysv<mode>): Likewise.
! 	(*call_indirect_aix<mode>): Disable for
! 	-mno-speculate-indirect-jumps.
! 	(*call_indirect_aix<mode>_nospec): New define_insn.
! 	(*call_value_indirect_aix<mode>): Disable for
! 	-mno-speculate-indirect-jumps.
! 	(*call_value_indirect_aix<mode>_nospec): New define_insn.
! 	(*sibcall_nonlocal_sysv<mode>): Generate different code for
! 	-mno-speculate-indirect-jumps.
! 	(*sibcall_value_nonlocal_sysv<mode>): Likewise.
! 
! 2018-01-17  Richard Biener  <rguenther@suse.de>
! 
! 	Backport from mainline
! 	2017-12-18  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/81877
! 	* tree-ssa-loop-im.c (ref_indep_loop_p): Remove safelen parameters.
! 	(outermost_indep_loop): Adjust.
! 	(ref_indep_loop_p_1): Likewise.  Remove safelen handling again.
! 	(can_sm_ref_p): Adjust.
! 
! 	2017-12-08  Richard Biener  <rguenther@suse.de>
! 
! 	PR middle-end/81782
! 	* tree-ssa-uninit.c (warn_uninitialized_vars): Properly
! 	handle accesses outside of zero-sized vars.
! 
! 2018-01-17  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
! 
! 	Backport from mailine
! 	2018-01-15  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
! 
! 	PR target/83687
! 	* config/arm/iterators.md (VF): New mode iterator.
! 	* config/arm/neon.md (neon_vabd<mode>_2): Use the above.
! 	Remove integer-related logic from pattern.
! 	(neon_vabd<mode>_3): Likewise.
! 
! 2018-01-17  Martin Liska  <mliska@suse.cz>
! 
! 	Backport from mainline
! 	2018-01-04  Martin Liska  <mliska@suse.cz>
! 
! 	PR ipa/82352
! 	* ipa-icf.c (sem_function::merge): Do not cross comdat boundary.
! 
! 2018-01-17  Martin Liska  <mliska@suse.cz>
! 
! 	Backport from mainline
! 	2018-01-03  Martin Liska  <mliska@suse.cz>
! 
! 	PR ipa/83549
! 	* cif-code.def (VARIADIC_THUNK): New enum value.
! 	* ipa-inline-analysis.c (compute_inline_parameters):
! 	Do not inline variadic thunks.
! 
! 2018-01-17  Martin Liska  <mliska@suse.cz>
! 
! 	Backport from mainline
! 	2017-12-27  Martin Liska  <mliska@suse.cz>
! 
! 	PR tree-optimization/83552
! 	* tree-ssa-strlen.c (fold_strstr_to_strncmp): Assign result
! 	of get_string_lenth to a SSA_NAME if not a GIMPLE value.
! 
! 2018-01-16  Segher Boessenkool  <segher@kernel.crashing.org>
! 
! 	Backport from mainline
! 	2017-12-18  Segher Boessenkool  <segher@kernel.crashing.org>
! 
! 	PR rtl-optimization/83424
! 	* rtlanal.c (dead_or_set_regno_p): Handle CLOBBER just like SET.
! 
! 2018-01-16  H.J. Lu  <hongjiu.lu@intel.com>
! 
! 	* config/i386/i386.c (ix86_expand_prologue): Don't use reference
! 	of struct ix86_frame.
! 	(ix86_expand_epilogue): Likewise.
! 
! 2018-01-16  H.J. Lu  <hongjiu.lu@intel.com>
! 
! 	Backport from mainline
! 	2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
! 
! 	* config/i386/i386.c (ix86_set_indirect_branch_type): Disallow
! 	-mcmodel=large with -mindirect-branch=thunk,
! 	-mindirect-branch=thunk-extern, -mfunction-return=thunk and
! 	-mfunction-return=thunk-extern.
! 	* doc/invoke.texi: Document -mcmodel=large is incompatible with
! 	-mindirect-branch=thunk, -mindirect-branch=thunk-extern,
! 	-mfunction-return=thunk and -mfunction-return=thunk-extern.
! 
! 2018-01-16  H.J. Lu  <hongjiu.lu@intel.com>
! 
! 	Backport from mainline
! 	2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
! 
! 	* config/i386/i386.c (print_reg): Print the name of the full
! 	integer register without '%'.
! 	(ix86_print_operand): Handle 'V'.
! 	 * doc/extend.texi: Document 'V' modifier.
! 
! 2018-01-16  H.J. Lu  <hongjiu.lu@intel.com>
! 
! 	Backport from mainline
! 	2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
! 
! 	* config/i386/predicates.md (indirect_branch_operand): Rewrite
! 	ix86_indirect_branch_register logic.
! 
! 	Backport from mainline
! 	2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
! 
! 	* config/i386/constraints.md (Bs): Update
! 	ix86_indirect_branch_register check.  Don't check
! 	ix86_indirect_branch_register with GOT_memory_operand.
! 	(Bw): Likewise.
! 	* config/i386/predicates.md (GOT_memory_operand): Don't check
! 	ix86_indirect_branch_register here.
! 	(GOT32_symbol_operand): Likewise.
! 
! 	Backport from mainline
! 	2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
! 
! 	* config/i386/predicates.md (constant_call_address_operand):
! 	Rewrite ix86_indirect_branch_register logic.
! 	(sibcall_insn_operand): Likewise.
! 
! 	Backport from mainline
! 	2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
! 
! 	* config/i386/constraints.md (Bs): Replace
! 	ix86_indirect_branch_thunk_register with
! 	ix86_indirect_branch_register.
! 	(Bw): Likewise.
! 	* config/i386/i386.md (indirect_jump): Likewise.
! 	(tablejump): Likewise.
! 	(*sibcall_memory): Likewise.
! 	(*sibcall_value_memory): Likewise.
! 	Peepholes of indirect call and jump via memory: Likewise.
! 	* config/i386/i386.opt: Likewise.
! 	* config/i386/predicates.md (indirect_branch_operand): Likewise.
! 	(GOT_memory_operand): Likewise.
! 	(call_insn_operand): Likewise.
! 	(sibcall_insn_operand): Likewise.
! 	(GOT32_symbol_operand): Likewise.
! 
! 	Backport from mainline
! 	2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
! 
! 	* config/i386/constraints.md (Bs): Disallow memory operand for
! 	-mindirect-branch-register.
! 	(Bw): Likewise.
! 	* config/i386/predicates.md (indirect_branch_operand): Likewise.
! 	(GOT_memory_operand): Likewise.
! 	(call_insn_operand): Likewise.
! 	(sibcall_insn_operand): Likewise.
! 	(GOT32_symbol_operand): Likewise.
! 	* config/i386/i386.md (indirect_jump): Call convert_memory_address
! 	for -mindirect-branch-register.
! 	(tablejump): Likewise.
! 	(*sibcall_memory): Likewise.
! 	(*sibcall_value_memory): Likewise.
! 	Disallow peepholes of indirect call and jump via memory for
! 	-mindirect-branch-register.
! 	(*call_pop): Replace m with Bw.
! 	(*call_value_pop): Likewise.
! 	(*sibcall_pop_memory): Replace m with Bs.
! 	* config/i386/i386.opt (mindirect-branch-register): New option.
! 	* doc/invoke.texi: Document -mindirect-branch-register option.
! 
! 2018-01-16  H.J. Lu  <hongjiu.lu@intel.com>
! 
! 	Backport from mainline
! 	2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
! 
! 	PR target/83839
! 	* config/i386/i386.c (output_indirect_thunk_function): Use
! 	ASM_OUTPUT_LABEL, instead of ASM_OUTPUT_DEF, for TARGET_MACHO
! 	for  __x86.return_thunk.
! 
! 	Backport from mainline
! 	2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
! 
! 	* config/i386/i386-protos.h (ix86_output_function_return): New.
! 	* config/i386/i386.c (ix86_set_indirect_branch_type): Also
! 	set function_return_type.
! 	(indirect_thunk_name): Add ret_p to indicate thunk for function
! 	return.
! 	(output_indirect_thunk_function): Pass false to
! 	indirect_thunk_name.
! 	(ix86_output_indirect_branch_via_reg): Likewise.
! 	(ix86_output_indirect_branch_via_push): Likewise.
! 	(output_indirect_thunk_function): Create alias for function
! 	return thunk if regno < 0.
! 	(ix86_output_function_return): New function.
! 	(ix86_handle_fndecl_attribute): Handle function_return.
! 	(ix86_attribute_table): Add function_return.
! 	* config/i386/i386.h (machine_function): Add
! 	function_return_type.
! 	* config/i386/i386.md (simple_return_internal): Use
! 	ix86_output_function_return.
! 	(simple_return_internal_long): Likewise.
! 	* config/i386/i386.opt (mfunction-return=): New option.
! 	(indirect_branch): Mention -mfunction-return=.
! 	* doc/extend.texi: Document function_return function attribute.
! 	* doc/invoke.texi: Document -mfunction-return= option.
! 
! 2018-01-16  H.J. Lu  <hongjiu.lu@intel.com>
! 
! 	Backport from mainline
! 	2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
! 
! 	* config/i386/i386-opts.h (indirect_branch): New.
! 	* config/i386/i386-protos.h (ix86_output_indirect_jmp): Likewise.
! 	* config/i386/i386.c (ix86_using_red_zone): Disallow red-zone
! 	with local indirect jump when converting indirect call and jump.
! 	(ix86_set_indirect_branch_type): New.
! 	(ix86_set_current_function): Call ix86_set_indirect_branch_type.
! 	(indirectlabelno): New.
! 	(indirect_thunk_needed): Likewise.
! 	(indirect_thunk_bnd_needed): Likewise.
! 	(indirect_thunks_used): Likewise.
! 	(indirect_thunks_bnd_used): Likewise.
! 	(INDIRECT_LABEL): Likewise.
! 	(indirect_thunk_name): Likewise.
! 	(output_indirect_thunk): Likewise.
! 	(output_indirect_thunk_function): Likewise.
! 	(ix86_output_indirect_branch_via_reg): Likewise.
! 	(ix86_output_indirect_branch_via_push): Likewise.
! 	(ix86_output_indirect_branch): Likewise.
! 	(ix86_output_indirect_jmp): Likewise.
! 	(ix86_code_end): Call output_indirect_thunk_function if needed.
! 	(ix86_output_call_insn): Call ix86_output_indirect_branch if
! 	needed.
! 	(ix86_handle_fndecl_attribute): Handle indirect_branch.
! 	(ix86_attribute_table): Add indirect_branch.
! 	* config/i386/i386.h (machine_function): Add indirect_branch_type
! 	and has_local_indirect_jump.
! 	* config/i386/i386.md (indirect_jump): Set has_local_indirect_jump
! 	to true.
! 	(tablejump): Likewise.
! 	(*indirect_jump): Use ix86_output_indirect_jmp.
! 	(*tablejump_1): Likewise.
! 	(simple_return_indirect_internal): Likewise.
! 	* config/i386/i386.opt (mindirect-branch=): New option.
! 	(indirect_branch): New.
! 	(keep): Likewise.
! 	(thunk): Likewise.
! 	(thunk-inline): Likewise.
! 	(thunk-extern): Likewise.
! 	* doc/extend.texi: Document indirect_branch function attribute.
! 	* doc/invoke.texi: Document -mindirect-branch= option.
! 
! 2018-01-16  Richard Biener  <rguenther@suse.de>
! 
! 	Backport from mainline
! 	2017-09-29  Vladimir Makarov  <vmakarov@redhat.com>
! 
! 	PR target/81481
! 	* ira-costs.c (scan_one_insn): Don't take into account PIC equiv
! 	with a symbol for LRA.
! 
! 2018-01-15  Segher Boessenkool  <segher@kernel.crashing.org>
! 
! 	Backport from mainline
! 	2018-01-10  Segher Boessenkool  <segher@kernel.crashing.org>
! 
! 	PR target/83629
! 	* config/rs6000/rs6000.md (load_toc_v4_PIC_2, load_toc_v4_PIC_3b,
! 	load_toc_v4_PIC_3c): Wrap const term in CONST RTL.
! 
! 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
! 
! 	Backport from mainline
! 	PR target/83330
! 	* config/i386/i386.c (ix86_function_arg_advance): Set
! 	outgoing_args_on_stack to true if there are outgoing arguments
! 	on stack.
! 	(ix86_function_arg): Likewise.
! 	(ix86_compute_frame_layout): Align stack frame if argument is
! 	passed on stack.
! 	* config/i386/i386.h (machine_function): Add
! 	outgoing_args_on_stack.
! 
! 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
! 
! 	Backport from mainline
! 	* config/i386/i386.c (ix86_expand_prologue): Use reference of
! 	struct ix86_frame.
! 	(ix86_expand_epilogue): Likewise.
! 
! 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
! 
! 	Backport from mainline
! 	2017-11-06  H.J. Lu  <hongjiu.lu@intel.com>
! 
! 	* config/i386/i386.c (ix86_can_use_return_insn_p): Use reference
! 	of struct ix86_frame.
! 	(ix86_initial_elimination_offset): Likewise.
! 	(ix86_expand_split_stack_prologue): Likewise.
! 
! 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
! 
! 	Backport from mainline
! 	2017-06-01  Bernd Edlinger  <bernd.edlinger@hotmail.de>
! 
! 	* config/i386/i386.c (ix86_frame): Moved to ...
! 	* config/i386/i386.h (ix86_frame): Here.
! 	(machine_function): Add frame.
! 	* config/i386/i386.c (ix86_compute_frame_layout): Repace the
! 	frame argument with &cfun->machine->frame.
! 	(ix86_can_use_return_insn_p): Don't pass &frame to
! 	ix86_compute_frame_layout.  Copy frame from cfun->machine->frame.
! 	(ix86_can_eliminate): Likewise.
! 	(ix86_expand_prologue): Likewise.
! 	(ix86_expand_epilogue): Likewise.
! 	(ix86_expand_split_stack_prologue): Likewise.
! 
! 2018-01-14  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
! 
! 	Backport from mainline
! 	2018-01-08  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
! 
! 	PR target/83677
! 	* config/rs6000/altivec.md (*altivec_vpermr_<mode>_internal):
! 	Reverse order of second and third operands in first alternative.
! 	* config/rs6000/rs6000.c (rs6000_expand_vector_set): Reverse order
! 	of first and second elements in UNSPEC_VPERMR vector.
! 	(altivec_expand_vec_perm_le): Likewise.
! 
! 2018-01-14  Uros Bizjak  <ubizjak@gmail.com>
! 
! 	Backport from mainline
! 	2018-01-12  Uros Bizjak  <ubizjak@gmail.com>
! 
! 	PR target/83628
! 	* config/alpha/alpha.md (*saddsi_1): New insn_ans_split pattern.
! 	(*saddl_se_1): Ditto.
! 	(*ssubsi_1): Ditto.
! 	(*ssubl_se_1): Ditto.
! 
! 	Backport from mainline
! 	2018-01-09  Uros Bizjak  <ubizjak@gmail.com>
! 
! 	PR target/83628
! 	* combine.c (force_int_to_mode) <case ASHIFT>: Use mode instead of
! 	op_mode in the force_to_mode call.
! 
! 2018-01-12  Oleg Endo  <olegendo@gcc.gnu.org>
! 
! 	Backport from mainline
! 	2018-01-12  Oleg Endo  <olegendo@gcc.gnu.org>
  
! 	PR target/81819
! 	* config/rx/rx.c (rx_is_restricted_memory_address):
! 	Handle SUBREG case.
  
! 2018-01-12  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR rtl-optimization/83565
! 	* rtlanal.c (nonzero_bits1): On WORD_REGISTER_OPERATIONS machines, do
! 	not extend the result to a larger mode for rotate operations.
! 	(num_sign_bit_copies1): Likewise.
  
! 2018-01-12  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
  
! 	Backport from mainline
! 	2018-01-04  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
  
! 	PR bootstrap/81926
! 	* cgraphunit.c (symbol_table::compile): Switch to text_section
! 	before calling assembly_start debug hook.
  
! 2018-01-11  Oleg Endo  <olegendo@gcc.gnu.org>
  
! 	Backport from mainline
! 	2018-01-11  Oleg Endo  <olegendo@gcc.gnu.org>
  
! 	PR target/81821
! 	* config/rx/rx.md (BW): New mode attribute.
! 	(sync_lock_test_and_setsi): Add mode suffix to insn output.
  
! 2018-01-09  Richard Biener  <rguenther@suse.de>
  
! 	Backport from mainline
! 	2018-01-08  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/83713
! 	* convert.c (do_narrow): Properly guard TYPE_OVERFLOW_WRAPS checks.
  
! 2018-01-08  Jim Wilson  <jimw@sifive.com>
  
! 	Backport from mainline
! 	2018-01-08  Monk Chiang  <sh.chiang04@gmail.com>
! 		    Kito Cheng  <kito.cheng@gmail.com>
  
! 	* config/riscv/riscv.c (machine_function::is_leaf): Remove field.
! 	(riscv_leaf_function_p): Delete.
! 	(riscv_function_ok_for_sibcall): Return false when TARGET_SAVE_RESTORE.
  
! 2018-01-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
  	Backport from mainline
! 	2017-12-20  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
! 
! 	PR target/82975
! 	* config/arm/arm.h (TEST_REGNO): Adjust comment as expected in r255830.
! 
! 2018-01-08  Sebastian Huber  <sebastian.huber@embedded-brains.de>
! 
! 	Backported from mainline
! 	2018-01-05  Sebastian Huber  <sebastian.huber@embedded-brains.de>
! 
! 	* config.gcc (epiphany-*-elf*): Add (epiphany-*-rtems*) configuration.
! 	* config/epiphany/rtems.h: New file.
! 
! 2018-01-04  Uros Bizjak  <ubizjak@gmail.com>
! 
! 	PR target/83628
! 	* config/alpha/alpha.md (*sadd<modesuffix>): Use ASHIFT
! 	instead of MULT rtx.  Update all corresponding splitters.
! 	(*saddl_se): Ditto.
! 	(*ssub<modesuffix>): Ditto.
! 	(*ssubl_se): Ditto.
! 	(*cmp_sadd_di): Update split patterns.
! 	(*cmp_sadd_si): Ditto.
! 	(*cmp_sadd_sidi): Ditto.
! 	(*cmp_ssub_di): Ditto.
! 	(*cmp_ssub_si): Ditto.
! 	(*cmp_ssub_sidi): Ditto.
! 	* config/alpha/predicates.md (const23_operand): New predicate.
! 	* config/alpha/alpha.c (alpha_rtx_costs) [PLUS, MINUS]:
! 	Look for ASHIFT, not MULT inner operand.
! 	(alpha_split_conditional_move): Update for *sadd<modesuffix> change.
! 
! 2018-01-02  Andrew Waterman  <andrew@sifive.com>
! 
! 	* config/riscv/linux.h (ICACHE_FLUSH_FUNC): New.
! 	* config/riscv/riscv.md (clear_cache): Use it.
! 
! 2018-01-01  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR middle-end/83608
! 	* expr.c (store_expr_with_bounds): Use simplify_gen_subreg instead of
! 	convert_modes if target mode has the right side, but different mode
! 	class.
! 
! 	PR middle-end/83609
! 	* expr.c (expand_assignment): Fix up a typo in simplify_gen_subreg
! 	last argument when extracting from CONCAT.  If either from_real or
! 	from_imag is NULL, use expansion through memory.  If result is not
! 	a CONCAT and simplify_gen_subreg fails, try to simplify_gen_subreg
! 	the parts directly to inner mode, if even that fails, use expansion
! 	through memory.
  
! 	PR middle-end/83623
! 	* expmed.c (expand_shift_1): For 2-byte rotates by BITS_PER_UNIT,
! 	check for bswap in mode rather than HImode and use that in expand_unop
! 	too.
  
! 2017-12-23  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR c++/83553
! 	* fold-const.c (struct contains_label_data): New type.
! 	(contains_label_1): Return non-NULL even for CASE_LABEL_EXPR, unless
! 	inside of a SWITCH_BODY seen during the walk.
! 	(contains_label_p): Use walk_tree instead of
! 	walk_tree_without_duplicates, prepare data for contains_label_1 and
! 	provide own pset.
  
! 2017-12-22  Martin Jambor  <mjambor@suse.cz>
  
! 	PR lto/82027
! 	* lto-cgraph.c (output_cgraph_opt_summary_p): Also check former
! 	clones.
  
! 2017-12-22  Jakub Jelinek  <jakub@redhat.com>
  
! 	Backported from mainline
! 	2017-12-21  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR c/83448
! 	* gimple-ssa-sprintf.c (maybe_warn): Don't call set_caret_index
! 	if navail is >= dir.len.
  
! 	PR rtl-optimization/80747
! 	PR rtl-optimization/83512
! 	* cfgrtl.c (force_nonfallthru_and_redirect): When splitting
! 	succ edge from ENTRY, copy partition from e->dest to the newly
! 	created bb.
! 	* bb-reorder.c (reorder_basic_blocks_simple): If last_tail is
! 	ENTRY, use BB_PARTITION of its successor block as current_partition.
! 	Don't copy partition when splitting succ edge from ENTRY.
  
! 	PR tree-optimization/83523
! 	* tree-ssa-math-opts.c (is_widening_mult_p): Return false if
! 	for INTEGER_TYPE TYPE_OVERFLOW_TRAPS.
! 	(convert_mult_to_fma): Likewise.
  
! 	PR tree-optimization/83521
! 	* tree-ssa-phiopt.c (factor_out_conditional_conversion): Use
! 	gimple_build_assign without code on result of
! 	fold_build1 (VIEW_CONVERT_EXPR, ...), as it might not create
! 	a VIEW_CONVERT_EXPR.
  
! 	2017-12-19  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR ipa/82801
! 	PR ipa/83346
! 	* ipa-inline.c (flatten_remove_node_hook): New function.
! 	(ipa_inline): Keep only nodes with flatten attribute at the end of
! 	the array in the order from ipa_reverse_postorder, only walk that
! 	portion of array for flattening, if there is more than one such
! 	node, temporarily register a removal hook and ignore removed nodes.
  
! 2017-12-21  Uros Bizjak  <ubizjak@gmail.com>
  
! 	PR target/83467
! 	* config/i386/i386.md (*ashl<mode>3_mask): Add operand
! 	constraints to operand 2.
! 	(*<shift_insn><mode>3_mask): Ditto.
! 	(*<rotate_insn><mode>3_mask): Ditto.
  
! 2017-12-19  Bin Cheng  <bin.cheng@arm.com>
  
! 	Backport from mainline
! 	2017-11-15  Bin Cheng  <bin.cheng@arm.com>
  
! 	PR tree-optimization/82726
! 	PR tree-optimization/70754
! 	* tree-predcom.c (order_drefs_by_pos): New function.
! 	(combine_chains): Move code setting has_max_use_after to...
! 	(try_combine_chains): ...here.  New parameter.  Sort combined chains
! 	according to position information.
! 	(tree_predictive_commoning_loop): Update call to above function.
! 	(update_pos_for_combined_chains, pcom_stmt_dominates_stmt_p): New.
  
! 	2017-11-15  Bin Cheng  <bin.cheng@arm.com>
  
! 	PR tree-optimization/82726
! 	Revert
! 	2017-01-23  Bin Cheng  <bin.cheng@arm.com>
  
! 	PR tree-optimization/70754
! 	* tree-predcom.c (stmt_combining_refs): New parameter INSERT_BEFORE.
! 	(reassociate_to_the_same_stmt): New parameter INSERT_BEFORE.  Insert
! 	combined stmt before it if not NULL.
! 	(combine_chains): Process refs reversely and compute dominance point
! 	for root ref.
  
! 	Revert
! 	2017-02-23  Bin Cheng  <bin.cheng@arm.com>
  
! 	PR tree-optimization/79663
! 	* tree-predcom.c (combine_chains): Process refs in reverse order
! 	only for ZERO length chains, and add explaining comment.
  
! 2017-12-19  Sebastian Huber  <sebastian.huber@embedded-brains.de>
  
! 	Backport from mainline
! 	2017-12-19  Sebastian Huber  <sebastian.huber@embedded-brains.de>
  
! 	PR target/83387
! 	* config/rs6000/t-rtems (MULTILIB_REQUIRED): Remove 64-bit soft-float
! 	multilib.
  
! 2017-12-19  Daniel Cederman  <cederman@gaisler.com>
  
! 	Backport from mainline
! 	2017-12-19  Daniel Cederman  <cederman@gaisler.com>
  
! 	* config/sparc/sparc.c (sparc_do_work_around_errata): Make sure
! 	the jump is to a label.
  
! 2017-12-17  John David Anglin  <danglin@gcc.gnu.org>
  
! 	Backport from mainline
! 	2017-12-03  John David Anglin  <danglin@gcc.gnu.org>
  
! 	* config/pa/pa.c (pa_legitimate_address_p): For scaled indexing,
! 	require base operand is a REG_POINTER prior to reload on targets
! 	with non-equivalent space registers.
  
! 2017-12-15  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/83269
! 	* fold-const.c (fold_binary_loc): Perform (-A) - B -> (-B) - A
! 	subtraction in arg0's type if type is signed and arg0 is unsigned.
! 	Formatting fix.
  
! 	Backported from mainline
! 	2017-12-14  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/83198
! 	* gimple-ssa-sprintf.c (format_floating): Set type solely based on
! 	dir.modifier, regardless of TREE_TYPE (arg).  Assume non-REAL_CST
! 	value if arg is a REAL_CST with incompatible type.
  
! 	2017-12-12  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/80631
! 	* tree-vect-loop.c (get_initial_def_for_reduction): Fix comment typo.
! 	(vect_create_epilog_for_reduction): Add INDUC_VAL argument, for
! 	INTEGER_INDUC_COND_REDUCTION use INDUC_VAL instead of
! 	hardcoding zero as the value if COND_EXPR is never true.  For
! 	INTEGER_INDUC_COND_REDUCTION don't emit the final COND_EXPR if
! 	INDUC_VAL is equal to INITIAL_DEF.
! 	(vectorizable_reduction): Compute INDUC_VAL for
! 	vect_create_epilog_for_reduction, if no value is suitable, don't
! 	use INTEGER_INDUC_COND_REDUCTION for now.  Formatting fixes.
  
! 	2017-12-08  Joseph Myers  <joseph@codesourcery.com>
! 		    Alexander Monakov  <amonakov@ispras.ru>
! 		    Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/81906
! 	* config/i386/i386.c (ix86_expand_rint): Handle flag_rounding_math.
  
! 	2017-12-02  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR c++/81212
! 	* tree-cfg.c (pass_warn_function_return::execute): Handle
! 	__builtin_ubsan_handle_missing_return like __builtin_unreachable
! 	with BUILTINS_LOCATION.
  
! 	PR target/78643
! 	PR target/80583
! 	* expr.c (get_inner_reference): If DECL_MODE of a non-bitfield
! 	is BLKmode for vector field with vector raw mode, use TYPE_MODE
! 	instead of DECL_MODE.
  
! 	2017-11-29  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/80819
! 	* config/i386/sse.md (vec_concatv2di): Remove * from (=Yr,0,*rm)
! 	alternative.
  
! 	2017-11-25  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR rtl-optimization/81553
! 	* combine.c (simplify_if_then_else): In (if_then_else COND (OP Z C1) Z)
! 	to (OP Z (mult COND (C1 * STORE_FLAG_VALUE))) optimization, if OP
! 	is a shift where C1 has different mode than the whole shift, use C1's
! 	mode for MULT rather than the shift's mode.
  
! 	2017-11-24  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR sanitizer/83014
! 	* ubsan.c (ubsan_type_descriptor): Use pp_unsigned_wide_integer
! 	instead of pp_printf with HOST_WIDE_INT_PRINT_DEC.  Avoid calling
! 	tree_to_uhwi twice.
  
! 	* tree-object-size.c (pass_through_call): Do not handle
! 	BUILT_IN_STPNCPY_CHK which is not a pass through call.
  
! 	2017-11-23  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/82253
! 	* expr.c (expand_assignment): For CONCAT to_rtx, complex type from and
! 	bitpos/bitsize covering the whole destination, use store_expr only if
! 	the complex mode is the same.  Otherwise, use expand_normal and if
! 	it returns CONCAT, subreg each part separately instead of trying to
! 	subreg the whole result.
  
! 	2017-11-22  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR debug/83084
! 	* valtrack.c (propagate_for_debug_subst, propagate_for_debug): Reset
! 	debug insns if they would contain UNSPEC_VOLATILE or volatile asm.
! 	(dead_debug_insert_temp): Likewise, but also ignore even non-volatile
! 	asm.
  
! 	2017-11-21  James Cowgill  <James.Cowgill@imgtec.com>
! 		    Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/82880
! 	* config/mips/frame-header-opt.c (mips_register_frame_header_opt):
! 	Remove static keyword from f variable.
  
! 2017-12-15  Richard Biener  <rguenther@suse.de>
  
! 	PR bootstrap/83439
! 	* tree-ssa-pre.c (eliminate_dom_walker::before_dom_children):
! 	Adjust remaining gimple_set_modified to use the modified
! 	variable instead.
  
! 2017-12-15  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR target/66488
! 	* ggc-page.c (HOST_BITS_PER_PTR): Do not define here...
! 	* hwint.h (HOST_BITS_PER_PTR): ...but here instead.
! 	* config/i386/xm-mingw32.h (HOST_BITS_PER_PTR): Delete.
  
! 2017-12-15  Richard Biener  <rguenther@suse.de>
  
! 	Backport from mainline
! 	PR tree-optimization/82060
! 	* tree-ssa-pre.c (eliminate_dom_walker::before_dom_children):
! 	Move devirtualization after stmt folding and before EH/AB/noreturn
! 	cleanup to get the stmt refs canonicalized.  Use a bool instead
! 	of gimple_modified_p since that doesn't work for NOPs.  Schedule
! 	NOPs generated by folding for removal.
  
! 2017-12-15  Richard Biener  <rguenther@suse.de>
  
! 	Backport from mainline
! 	2017-09-05  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/82102
! 	* tree-ssa-pre.c (eliminate): Check if lhs is NULL.
  
! 	2017-09-13  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/82128
! 	* gimple-fold.c (gimple_fold_call): Update SSA name in-place to
! 	default-def to avoid breaking iterator update with the weird
! 	interaction with cgraph_update_edges_for_call_stmt_node.
  
! 2017-12-15  Richard Biener  <rguenther@suse.de>
  
! 	Backport from mainline
! 	2017-11-24  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/82402
! 	* tree-vect-loop-manip.c (create_lcssa_for_virtual_phi): Properly
! 	set SSA_NAME_OCCURS_IN_ABNORMAL_PHI.
  
! 	2017-10-24  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/82697
! 	* tree-ssa-phiopt.c (cond_store_replacement): Use alias-set
! 	zero for conditional load and unconditional store.
  
! 	2017-11-02  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/82765
! 	* varasm.c (decode_addr_const): Make offset HOST_WIDE_INT.
! 	Truncate ARRAY_REF index and element size.
  
! 	2017-11-09  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/82902
! 	* tree-ssa-phiprop.c (propagate_with_phi): Test proper type.
  
! 2017-12-14  Peter Bergner  <bergner@vnet.ibm.com>
  
! 	Backport from mainline
! 	2017-10-02  Peter Bergner  <bergner@vnet.ibm.com>
  
! 	PR target/80210
! 	* config/rs6000/rs6000.c (rs6000_option_override_internal): Rewrite
! 	function to not use the have_cpu variable.  Do not set cpu_index,
! 	rs6000_cpu_index or rs6000_tune_index if we end up using TARGET_DEFAULT
! 	or the default cpu.
! 	(rs6000_valid_attribute_p): Remove duplicate initializations of
! 	old_optimize and func_optimize.
! 	(rs6000_pragma_target_parse): Call rs6000_activate_target_options ().
! 	(rs6000_activate_target_options): Make global.
! 	* config/rs6000/rs6000-protos.h (rs6000_activate_target_options): Add
! 	prototype.
  
! 2017-12-13  Peter Bergner  <bergner@vnet.ibm.com>
  
! 	Backport from mainline
! 	2017-12-13  Peter Bergner  <bergner@vnet.ibm.com>
  
! 	* config/rs6000/ppc-auxv.h (PPC_FEATURE2_HTM_NO_SUSPEND): New define.
! 	* config/rs6000/rs6000.c (cpu_supports_info): Use it.
  
! 2017-12-11  Michael Meissner  <meissner@linux.vnet.ibm.com>
  
! 	Back port from trunk
! 	2017-12-01  Michael Meissner  <meissner@linux.vnet.ibm.com>
  
! 	PR target/81959
! 	* config/rs6000/rs6000.c (rs6000_address_for_fpconvert): Check for
! 	whether we can allocate pseudos before trying to fix an address.
! 	* config/rs6000/rs6000.md (float_<mode>si2_hw): Make sure the
! 	memory address is indexed or indirect.
! 	(floatuns_<mode>si2_hw2): Likewise.
  
! 2017-12-11  Sudakshina Das  <sudi.das@arm.com>
  
! 	Backported from trunk
! 	2017-12-01  Sudakshina Das  <sudi.das@arm.com>
  
! 	* config/arm/vfp.md (*movhf_vfp_fp16): Add conds attribute.
  
! 2017-12-07  Kelvin Nilsen  <kelvin@gcc.gnu.org>
  
! 	Backport from trunk
! 	2017-05-08  Kelvin Nilsen  <kelvin@gcc.gnu.org>
  
! 	PR target/80101
! 	* config/rs6000/power6.md: Replace store_data_bypass_p calls with
! 	rs6000_store_data_bypass_p in seven define_bypass directives and
! 	in several comments.
! 	* config/rs6000/rs6000-protos.h: Add prototype for
! 	rs6000_store_data_bypass_p function.
! 	* config/rs6000/rs6000.c (rs6000_store_data_bypass_p): New
! 	function implements slightly different (rs6000-specific) semantics
! 	than store_data_bypass_p, returning false rather than aborting
! 	with assertion error when arguments do not satisfy the
! 	requirements of store data bypass.
! 	(rs6000_adjust_cost): Replace six calls of store_data_bypass_p with
! 	rs6000_store_data_bypass_p.
  
! 2017-12-06  Eric Botcazou  <ebotcazou@adacore.com>
  
  	Revert
! 	2017-11-29  Martin Aberg  <maberg@gaisler.com>
! 
! 	* config/sparc/sparc.md (divdf3_fix): Add NOP and adjust length
! 	to prevent b2bst errata sequence.
! 	(sqrtdf2_fix): Likewise.
! 
! 2017-12-05  Max Filippov  <jcmvbkbc@gmail.com>
! 
! 	Backport from mainline
! 	2017-12-05  Max Filippov  <jcmvbkbc@gmail.com>
! 	* config/xtensa/xtensa.c (xtensa_asan_shadow_offset): New
! 	function.
! 	(TARGET_ASAN_SHADOW_OFFSET): New macro definition.
! 	* config/xtensa/xtensa.h (FRAME_GROWS_DOWNWARD): Set to 1 if
! 	ASAN is enabled.
! 
! 2017-12-05  Max Filippov  <jcmvbkbc@gmail.com>
! 
! 	Backport from mainline
! 	2017-05-08  Max Filippov  <jcmvbkbc@gmail.com>
! 	* config/xtensa/xtensa-protos.h
! 	(xtensa_initial_elimination_offset): New declaration.
! 	* config/xtensa/xtensa.c (xtensa_initial_elimination_offset):
! 	New function. Move its body from the INITIAL_ELIMINATION_OFFSET
! 	macro definition, add case for FRAME_POINTER_REGNUM when
! 	FRAME_GROWS_DOWNWARD.
! 	* config/xtensa/xtensa.h (FRAME_GROWS_DOWNWARD): New macro
! 	definition.
! 	(INITIAL_ELIMINATION_OFFSET): Replace body with call to
! 	xtensa_initial_elimination_offset.
! 
! 2017-12-04  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* config/sparc/sparc.c (sparc_do_work_around_errata): Use mem_ref
! 	instead of MEM_P in a couple more places.  Fix formatting issues.
! 
! 2017-12-04  Sebastian Peryt  <sebastian.peryt@intel.com>
! 	H.J. Lu  <hongjiu.lu@intel.com>
! 
! 	Bakcported from trunk
! 	PR target/82941
! 	PR target/82942
! 	PR target/82990
! 	* config/i386/i386.c (pass_insert_vzeroupper): Remove
! 	TARGET_AVX512F check from gate condition.
! 	(ix86_check_avx256_register): Changed to ...
! 	(ix86_check_avx_upper_register): ... this. Add extra check for
! 	VALID_AVX512F_REG_OR_XI_MODE.
! 	(ix86_avx_u128_mode_needed): Changed
! 	ix86_check_avx256_register to ix86_check_avx_upper_register.
! 	(ix86_check_avx256_stores): Changed to ...
! 	(ix86_check_avx_upper_stores): ... this. Changed
! 	ix86_check_avx256_register to ix86_check_avx_upper_register.
! 	(ix86_avx_u128_mode_after): Changed
! 	avx_reg256_found to avx_upper_reg_found. Changed
! 	ix86_check_avx256_stores to ix86_check_avx_upper_stores.
! 	(ix86_avx_u128_mode_entry): Changed
! 	ix86_check_avx256_register to ix86_check_avx_upper_register.
! 	(ix86_avx_u128_mode_exit): Ditto.
! 	(ix86_option_override_internal): Set MASK_VZEROUPPER if
! 	neither -mzeroupper nor -mno-zeroupper is used and
! 	TARGET_EMIT_VZEROUPPER is set.
! 	* config/i386/i386.h: (host_detect_local_cpu): New define.
! 	(TARGET_EMIT_VZEROUPPER): New.
! 	* config/i386/x86-tune.def: Add X86_TUNE_EMIT_VZEROUPPER
! 
! 2017-12-01  Segher Boessenkool  <segher@kernel.crashing.org>
! 
! 	Backport from mainline
! 	2017-11-28  Segher Boessenkool  <segher@kernel.crashing.org>
! 
! 	PR 81288/target
! 	* config/rs6000/rs6000.c (rs6000_rtx_costs): Do not handle
! 	TARGET_ISEL && !TARGET_MFCRF differently.  Simplify code.
! 
! 2017-11-30  Jim Wilson  <jimw@sifive.com>
! 
! 	Backport from mainline
! 	2017-11-30  Jim Wilson  <jimw@sifive.com>
! 	* doc/invoke.texi (RISC-V Options): Delete nonexistent -mmemcpy and
! 	-mno-memcpy options.  For -mplt, -mfdiv, -mdiv, -msave-restore, and
! 	-mstrict-align, add info on default value.  Delete redundant lines for
! 	-mabi.  Add missing -mexplicit-relocs docs.
! 
! 	Backport from mainline
! 	2017-11-01  Palmer Dabbelt  <palmer@dabbelt.com>
! 	* doc/invoke.texi (RISC-V Options): Use "@minus{}2 GB", not "-2 GB".
! 	* doc/invoke.texi (RISC-V Options): Explicitly name the medlow
! 	and medany code models, and describe what they do.
! 
! 	2017-10-27  Palmer Dabbelt  <palmer@dabbelt.com>
! 	PR target/82717
! 	* doc/invoke.texi (RISC-V) <-mabi>: Correct and improve.
! 
! 2017-11-29  Martin Jambor  <mjambor@suse.cz>
! 
! 	PR ipa/82808
! 	* tree.c (expr_type_first_operand_type_p): New function.
! 	* tree.h (expr_type_first_operand_type_p): Declare it.
! 	* ipa-cp.c (ipa_get_jf_pass_through_result): Use it.
! 
! 2017-11-29  Daniel Cederman  <cederman@gaisler.com>
! 
! 	* config/sparc/sparc.c (sparc_do_work_around_errata): Treat the
! 	movsi_pic_gotdata_op instruction as a load for the UT699 errata
! 	workaround.
! 
! 2017-11-29  Martin Aberg  <maberg@gaisler.com>
! 
! 	* config/sparc/sparc.md (divdf3_fix): Add NOP and adjust length
! 	to prevent b2bst errata sequence.
! 	(sqrtdf2_fix): Likewise.
! 
! 2017-11-29  Daniel Cederman  <cederman@gaisler.com>
! 
! 	* config/sparc/sparc.c (fpop_reg_depend_p): New function.
! 	(div_sqrt_insn_p): New function.
! 	(sparc_do_work_around_errata): Insert NOP instructions to
! 	prevent sequences that could trigger the TN-0013 errata for
! 	certain LEON3 processors.
! 	(pass_work_around_errata::gate): Also test sparc_fix_lost_divsqrt.
! 	(sparc_option_override): Set sparc_fix_lost_divsqrt appropriately.
! 	* config/sparc/sparc.md (fix_lost_divsqrt): New attribute.
! 	(in_branch_delay): Prevent div and sqrt in delay slot if
! 	fix_lost_divsqrt.
! 	* config/sparc/sparc.opt (sparc_fix_lost_divsqrt): New variable.
! 
! 2017-11-29  Daniel Cederman  <cederman@gaisler.com>
! 
! 	* config/sparc/sparc.c (atomic_insn_p): New function.
! 	(sparc_do_work_around_errata): Insert NOP instructions to
! 	prevent sequences that could trigger the TN-0010 errata for
! 	UT700.
! 	* config/sparc/sync.md (atomic_compare_and_swap_leon3_1): Make
! 	instruction referable in atomic_insns_p.
! 
! 2017-11-29  Daniel Cederman  <cederman@gaisler.com>
! 
! 	* config/sparc/sync.md (swapsi): 16-byte align if sparc_fix_gr712rc.
! 	(atomic_compare_and_swap_leon3_1): Likewise.
! 	(ldstub): Likewise.
! 
! 2017-11-29  Daniel Cederman  <cederman@gaisler.com>
! 
! 	* config/sparc/sparc.c (fpop_insn_p): New function.
! 	(sparc_do_work_around_errata): Insert NOP instructions to
! 	prevent sequences that could trigger the TN-0012 errata for
! 	GR712RC.
! 	(pass_work_around_errata::gate): Also test sparc_fix_gr712rc.
! 	* config/sparc/sparc.md (fix_gr712rc): New attribute.
! 	(in_branch_annul_delay): Prevent floating-point instructions
! 	in delay slot of annulled integer branch.
! 
! 2017-11-28  Jim Wilson  <jimw@sifive.com>
! 
! 	Backport from mainline
! 	2017-11-04  Andrew Waterman  <andrew@sifive.com>
! 
! 	* config/riscv/riscv.c (riscv_option_override): Conditionally set
! 	TARGET_STRICT_ALIGN based upon -mtune argument.
! 
! 	Backport from mainline
! 	2017-05-04  Andrew Waterman  <andrew@sifive.com>
! 
! 	* config/riscv/riscv.opt (mstrict-align): New option.
! 	* config/riscv/riscv.h (STRICT_ALIGNMENT): Use it.  Update comment.
! 	(SLOW_UNALIGNED_ACCESS): Define.
! 	(riscv_slow_unaligned_access): Declare.
! 	* config/riscv/riscv.c (riscv_tune_info): Add slow_unaligned_access
! 	field.
! 	(riscv_slow_unaligned_access): New variable.
! 	(rocket_tune_info): Set slow_unaligned_access to true.
! 	(optimize_size_tune_info): Set slow_unaligned_access to false.
! 	(riscv_cpu_info_table): Add entry for optimize_size_tune_info.
! 	(riscv_valid_lo_sum_p): Use TARGET_STRICT_ALIGN.
! 	(riscv_option_override): Set riscv_slow_unaligned_access.
! 	* doc/invoke.texi: Add -mstrict-align to RISC-V.
! 
! 	Backport from mainline
! 	2017-11-07  Michael Clark  <michaeljclark@mac.com>
! 
! 	* config/riscv/linux.h (MUSL_ABI_SUFFIX): New define.
! 	(MUSL_DYNAMIC_LINKER): Likewise.
! 
! 2017-11-27  Jim Wilson  <jimw@sifive.com>
! 
! 	Backport from mainline
! 	2017-10-25  Palmer Dabbelt  <palmer@dabbelt.com>
! 
! 	* config/riscv/riscv.md (ZERO_EXTEND_LOAD): Define.
! 	* config/riscv/pic.md (local_pic_load): Rename to local_pic_load_s,
! 	mark as a sign-extending load.
! 	(local_pic_load_u): Define.
! 
! 	Backport from mainline
! 	2017-11-03  Kito Cheng  <kito.cheng@gmail.com>
! 
! 	* config/riscv/riscv.c (riscv_legitimize_move): Handle
! 	non-legitimate address.
! 
! 2017-11-24  Segher Boessenkool  <segher@kernel.crashing.org>
! 
! 	Backport from mainline
! 	2017-11-17  Segher Boessenkool  <segher@kernel.crashing.org>
! 
! 	PR rtl-optimization/82621
! 	* combine.c (try_combine): Do not split PARALLELs of two SETs if the
! 	dest of one of those SETs is unused.
! 
! 2017-11-23  Oleg Endo  <olegendo@gcc.gnu.org>
! 
! 	Backport from mainline
! 	2017-11-23  Oleg Endo  <olegendo@gcc.gnu.org>
  
! 	PR target/83111
! 	* config/sh/sh.md (udivsi3, divsi3, sibcall_value_pcrel,
! 	sibcall_value_pcrel_fdpic): Use local variable instead of
! 	operands[3].
! 	(calli_tbr_rel): Add missing operand 2.
! 	(call_valuei_tbr_rel): Add missing operand 3.
  
! 2017-11-22  Richard Biener  <rguenther@suse.de>
  
  	Revert
! 	2017-11-21  Martin Liska  <mliska@suse.cz>
! 
! 	Backport from mainline
! 	2017-11-21  Martin Liska  <mliska@suse.cz>
! 
! 	PR rtl-optimization/82044
! 	PR tree-optimization/82042
! 	* dse.c (check_mem_read_rtx): Check for overflow.
! 
! 2017-11-21  Martin Liska  <mliska@suse.cz>
! 
! 	Backport from mainline
! 	2017-10-27  Martin Liska  <mliska@suse.cz>
! 
! 	PR gcov-profile/82457
! 	* doc/invoke.texi: Document that one needs a non-strict ISO mode
! 	for fork-like functions to be properly instrumented.
! 
! 2017-11-21  Pat Haugen  <pthaugen@us.ibm.com>
! 
! 	Backport from mainline
! 	2017-11-21  Pat Haugen  <pthaugen@us.ibm.com>
! 
! 	* config/rs6000/ppc-asm.h (f50, vs50): Fix values.
! 
! 2017-11-21  Thomas Preud'homme  <thomas.preudhomme@arm.com>
! 
! 	Backport from mainline
! 	2017-11-09  Thomas Preud'homme  <thomas.preudhomme@arm.com>
! 
! 	* config/arm/arm.c (output_return_instruction): Add comments to
! 	indicate requirement for cmse_nonsecure_entry return to account
! 	for the size of clearing instruction output here.
! 	(thumb_exit): Likewise.
! 	* config/arm/thumb2.md (thumb2_cmse_entry_return): Fix length for
! 	return in hardfloat mode.
! 
! 2017-11-21  Martin Liska  <mliska@suse.cz>
! 
! 	Backport from mainline
! 	2017-11-21  Martin Liska  <mliska@suse.cz>
! 
! 	PR rtl-optimization/82044
! 	PR tree-optimization/82042
! 	* dse.c (check_mem_read_rtx): Check for overflow.
! 
! 2017-11-21  Martin Liska  <mliska@suse.cz>
! 
! 	Backport from mainline
! 	2017-11-08  Martin Liska  <mliska@suse.cz>
! 
! 	* gimplify.c (expand_FALLTHROUGH_r): Simplify usage
! 	of gimple_call_internal_p.
! 
! 2017-11-21  Martin Liska  <mliska@suse.cz>
! 
! 	Backport from mainline
! 	2017-11-08  Martin Liska  <mliska@suse.cz>
! 
! 	PR sanitizer/82792
! 	* gimplify.c (expand_FALLTHROUGH_r): Skip IFN_ASAN_MARK.
! 
! 2017-11-21  Martin Liska  <mliska@suse.cz>
! 
! 	Backport from mainline
! 	2017-10-31  Martin Liska  <mliska@suse.cz>
! 
! 	PR gcov-profile/82633
! 	* doc/gcov.texi: Document -fkeep-{static,inline}-functions and
! 	their interaction with GCOV infrastructure.
! 
! 2017-11-21  Martin Liska  <mliska@suse.cz>
! 
! 	Backport from mainline
! 	2017-10-19  Martin Liska  <mliska@suse.cz>
! 
! 	PR driver/81829
! 	* file-find.c (remove_prefix): Remove.
! 	* file-find.h (remove_prefix): Likewise.
! 	* gcc-ar.c: Remove smartness of lookup.
! 
! 2017-11-21  Martin Liska  <mliska@suse.cz>
! 
! 	Backport from mainline
! 	2017-10-18  Martin Liska  <mliska@suse.cz>
! 
! 	PR sanitizer/82545
! 	* asan.c (asan_expand_poison_ifn): Do not put gimple stmt
! 	on an abnormal edge.
! 
! 2017-11-21  Martin Liska  <mliska@suse.cz>
! 
! 	Backport from mainline
! 	2017-10-11  Martin Liska  <mliska@suse.cz>
! 
! 	* print-rtl.c (print_insn): Move declaration of idbuf
! 	to same scope as name.
! 
! 2017-11-21  Claudiu Zissulescu  <claziss@synopsys.com>
! 
! 	Backport from mainline
! 	2017-11-17  Vineet Gupta  <vgupta@synopsys.com>
! 
! 	* config/arc/linux.h: GLIBC_DYNAMIC_LINKER update per glibc
! 	upstreaming review comments.
! 
! 2017-11-21  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
! 
! 	Backport from mainline
! 	2017-11-14  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
! 
! 	* config.gcc (*-*-solaris2*): Enable default_use_cxa_atexit since
! 	Solaris 11.  Update comment.
! 	* configure.ac (gcc_cv_ld_pid): Adapt comment for Solaris 12
! 	renaming.
! 	* config/sol2.h (STARTFILE_SPEC): Likewise.
! 	* configure: Regenerate.
! 
! 2017-11-20  Segher Boessenkool  <segher@kernel.crashing.org>
! 
! 	Backport from mainline
! 	2017-09-20  Segher Boessenkool  <segher@kernel.crashing.org>
! 
! 	PR target/77687
! 	* config/rs6000/rs6000.md (stack_restore_tie): Store to a scratch
! 	address instead of to r1 and r11.
! 
! 2017-11-17  Vineet Gupta <vgupta@synopsys.com>
! 
! 	* config.gcc: Remove uclibc from arc target spec.
! 
! 2017-11-16  Uros Bizjak  <ubizjak@gmail.com>
! 
! 	* config/i386/i386.c (x86_print_call_or_nop): Emit 5 byte nop
! 	explicitly as a stream of bytes.
! 
! 2017-11-15  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/82985
! 	Backport from mainline
! 	2017-08-15  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/81790
! 	* tree-ssa-sccvn.c (vn_lookup_simplify_result): Handle both
! 	CONSTRUCTORs from simplifying and VN.
! 
! 2017-11-15  Pierre-Marie de Rodat  <derodat@adacore.com>
  
! 	Backport from mainline
! 	2017-09-25  Pierre-Marie de Rodat  <derodat@adacore.com>
  
! 	PR debug/82155
! 	* dwarf2out.c (dwarf2out_early_global_decl): Call dwarf2out_decl
! 	on the FUNCTION_DECL function context if it has a DIE that is a
! 	declaration.
  
! 2017-11-13  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
  
! 	Backport from mainline
! 	2017-10-26  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
  
! 	* configure.ac (gcc_cv_as_ix86_xbrace_comment): Check if assembler
! 	supports -xbrace_comment option.
  	* configure: Regenerate.
- 	* config.in: Regenerate.
- 	* config/i386/sol2.h (ASM_XBRACE_COMMENT_SPEC): Define.
- 	(ASM_CPU_SPEC): Use it.
- 
- 2017-11-09  Segher Boessenkool  <segher@kernel.crashing.org>
- 
- 	Backport from mainline
- 	2017-11-01  Segher Boessenkool  <segher@kernel.crashing.org>
- 
- 	PR rtl-optimization/64682
- 	PR rtl-optimization/69567
- 	PR rtl-optimization/69737
- 	PR rtl-optimization/82683
- 	* combine.c (distribute_notes) <REG_DEAD>: If the new I2 sets the same
- 	register mentioned in the note, drop the note, unless it came from I3,
- 	in which case it should go to I3 again.
- 
- 2017-11-07  Eric Botcazou  <ebotcazou@adacore.com>
- 
- 	Backport from mainline
- 	2017-10-31  Matthew Fortune  <matthew.fortune@imgtec.com>
- 		    Eric Botcazou  <ebotcazou@adacore.com>
- 
- 	PR rtl-optimization/81803
- 	* lra-constraints.c (curr_insn_transform): Also reload the whole
- 	register for a strict subreg no wider than a word if this is for
- 	a WORD_REGISTER_OPERATIONS target.
- 
- 2017-11-03  Wilco Dijkstra  <wdijkstr@arm.com>
- 
- 	PR middle-end/60580
- 	* config/aarch64/aarch64.c (aarch64_frame_pointer_required)
- 	Check special value of flag_omit_frame_pointer.
- 	(aarch64_can_eliminate): Likewise.
- 	(aarch64_override_options_after_change_1): Simplify handling of
- 	-fomit-frame-pointer and -fomit-leaf-frame-pointer.
- 
- 2017-11-01  Martin Jambor  <mjambor@suse.cz>
- 
- 	PR c++/81702
- 	* gimple-fold.c (gimple_get_virt_method_for_vtable): Remove assert.
- 
- 2017-10-31  Uros Bizjak  <ubizjak@gmail.com>
- 
- 	PR target/82772
- 	* config/alpha/sync.md (fetchop_constr) <and>: Change to "rINM".
- 
- 2017-10-27  Jakub Jelinek  <jakub@redhat.com>
- 
- 	Backported from mainline
- 	2017-10-12  Jakub Jelinek  <jakub@redhat.com>
- 
- 	PR c++/82159
- 	* expr.c (store_field): Don't optimize away bitsize == 0 store
- 	from CALL_EXPR with addressable return type.
- 
- 	2017-09-21  Jakub Jelinek  <jakub@redhat.com>
- 
- 	PR sanitizer/81715
- 	* tree-inline.c (expand_call_inline): Emit clobber stmts for
- 	VAR_DECLs to which addressable non-volatile parameters are mapped
- 	and for id->retvar after the return value assignment, though
- 	for -fsanitize=kernel-address only.  Clear id->retval and id->retbnd
- 	after inlining.
- 
- 	2017-09-18  Jakub Jelinek  <jakub@redhat.com>
- 
- 	PR c/82234
- 	* doc/extend.texi: Add @findex entry for __builtin_shuffle.
- 
- 	2017-09-15  Jakub Jelinek  <jakub@redhat.com>
- 
- 	PR rtl-optimization/82192
- 	* combine.c (make_extraction): Don't look through non-paradoxical
- 	SUBREGs or TRUNCATE if pos + len is or might be bigger than
- 	inner's mode.
- 
- 2017-10-27  Jakub Jelinek  <jakub@redhat.com>
- 
- 	PR target/82703
- 	* config/i386/i386-protos.h (maybe_get_pool_constant): Removed.
- 	* config/i386/i386.c (maybe_get_pool_constant): Removed.
- 	(ix86_split_to_parts): Use avoid_constant_pool_reference instead of
- 	maybe_get_pool_constant.
- 	* config/i386/predicates.md (zero_extended_scalar_load_operand):
- 	Likewise.
- 
- 2017-10-24  Qing Zhao <qing.zhao@oracle.com>
- 	    Wilco Dijkstra  <wilco.dijkstra@arm.com>
- 
- 	* builtins.c (expand_builtin_update_setjmp_buf): Add a
- 	converstion to Pmode from the buf_addr.
- 
- 2017-10-20  Richard Biener  <rguenther@suse.de>
- 
- 	PR tree-optimization/82603
- 	* tree-if-conv.c (predicate_mem_writes): Make sure to only
- 	remove false predicated stores.
- 
- 2017-10-20  Richard Biener  <rguenther@suse.de>
- 
- 	Backport from mainline
- 	2017-10-06  Richard Biener  <rguenther@suse.de>
- 
- 	PR tree-optimization/82436
- 	* tree-vect-slp.c (vect_supported_load_permutation_p): More
- 	conservatively choose the vectorization factor when checking
- 	whether we can perform the required load permutation.
- 	(vect_transform_slp_perm_load): Assert when we may not fail.
- 
- 2017-10-19  Richard Earnshaw  <rearnsha@arm.com>
- 
- 	PR target/82445
- 	* config/arm/arm.c (align_ok_ldrd_strd): New function.
- 	(mem_ok_for_ldrd_strd): New parameter align.  Extract the alignment of
- 	the mem into it.
- 	(gen_operands_ldrd_strd): Validate the alignment of the accesses.
- 
- 2017-10-18  Segher Boessenkool  <segher@kernel.crashing.org>
- 
- 	PR rtl-optimization/82602
- 	* ira.c (rtx_moveable_p): Return false for volatile asm.
- 
- 2017-10-18  Vladimir Makarov  <vmakarov@redhat.com>
- 
- 	PR middle-end/82556
- 	* lra-constraints.c (curr_insn_transform): Use non-input operand
- 	instead of output one for matched reload.
- 
- 2017-10-17  Jakub Jelinek  <jakub@redhat.com>
- 
- 	PR tree-optimization/82549
- 	* fold-const.c (optimize_bit_field_compare, fold_truth_andor_1):
- 	Formatting fixes.  Instead of calling make_bit_field_ref with negative
- 	bitpos return 0.
- 
- 2017-10-13  Jakub Jelinek  <jakub@redhat.com>
- 
- 	PR target/82274
- 	* internal-fn.c (expand_mul_overflow): If both operands have
- 	the same highpart of -1 or 0 and the topmost bit of lowpart
- 	is different, overflow is if res <= 0 rather than res < 0.
- 
- 	PR target/82524
- 	* config/i386/i386.md (addqi_ext_1, andqi_ext_1,
- 	*andqi_ext_1_cc, *<code>qi_ext_1, *xorqi_ext_1_cc): Change
- 	=Q constraints to +Q and into insn condition add check
- 	that operands[0] and operands[1] are equal.
- 	(*addqi_ext_2, *andqi_ext_2, *<code>qi_ext_2): Change
- 	=Q constraints to +Q and into insn condition add check
- 	that operands[0] is equal to either operands[1] or operands[2].
- 
- 2017-10-10  Andreas Tobler  <andreast@gcc.gnu.org>
- 
- 	Backported from mainline r253602
- 	2017-10-10  Andreas Tobler  <andreast@gcc.gnu.org>
  
! 	* config.gcc: (armv7*-*-freebsd*): New target.
! 	(armv6*-*-freebsd*): Remove obsolete TARGET_FREEBSD_ARMv6 define.
! 
! 2017-10-06  Christophe Lyon  <christophe.lyon@linaro.org>
! 
! 	Backport from mainline r253242.
! 	2017-09-27  Christophe Lyon  <christophe.lyon@linaro.org>
! 
! 	PR target/71727
! 	* config/aarch64/aarch64.c
! 	(aarch64_builtin_support_vector_misalignment): Always return false
! 	when misalignment is unknown.
! 
! 2017-10-04  Jason Merrill  <jason@redhat.com>
! 
! 	PR c++/82406 - C++ error with noexcept function type
! 	PR c++/70029 - ICE with ref-qualifier and -flto
! 	* langhooks.h (struct lang_hooks_for_types): Add
! 	copy_lang_qualifiers.
! 	* attribs.c (build_type_attribute_qual_variant): Use it.
! 	* langhooks-def.h (LANG_HOOKS_COPY_LANG_QUALIFIERS): Default to
! 	NULL.
! 	(LANG_HOOKS_FOR_TYPES_INITIALIZER): Use it.
! 	* tree.c (verify_type): Re-enable TYPE_CANONICAL main variant check.
! 
! 2017-10-02  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
! 
! 	Backport from mainline
! 	2017-09-29  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
! 
! 	PR tree-optimization/82337
! 	* gimple-ssa-strength-reduction.c (find_phi_def): Don't record a
! 	phi definition if the PHI result appears in an abnormal PHI.
! 	(find_basis_for_base_expr): Don't record a basis if the LHS of the
! 	basis appears in an abnormal PHI.
! 
! 2017-09-30  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* config/i386/i386.c (ix86_split_idivmod): Use mode instead of
! 	always SImode for DIV and MOD in REG_EQUAL notes.
! 
! 	Backported from mainline
! 	2017-09-27  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR c++/82159
! 	* gimplify.c (gimplify_modify_expr): Don't optimize away zero sized
! 	lhs from calls if the lhs has addressable type.
! 
! 2017-09-29  Krister Walfridsson  <krister.walfridsson@gmail.com>
! 
! 	Backport from mainline
! 	2017-06-29  Maya Rashish  <coypu@sdf.org>
! 
! 	PR target/77480
! 	* config/netbsd.h (NETBSD_LIB_SPEC): Add -lc when creating shared
! 	objects.
! 
! 2017-09-29  Krister Walfridsson  <krister.walfridsson@gmail.com>
! 
! 	Backport from mainline
! 	2017-09-26  Krister Walfridsson  <krister.walfridsson@gmail.com>
! 
! 	PR target/39570
! 	* gcc/config/netbsd-protos.h: New file.
! 	* gcc/config/netbsd.c: New file.
! 	* gcc/config/netbsd.h (SUBTARGET_INIT_BUILTINS): Define.
! 	* gcc/config/t-netbsd: New file.
! 	* gcc/config.gcc (tm_p_file): Add netbsd-protos.h.
! 	(tmake_file) Add t-netbsd.
! 	(extra_objs) Add netbsd.o.
! 
! 2017-09-28  Krister Walfridsson  <krister.walfridsson@gmail.com>
! 
! 	Backport from mainline
! 	2017-05-14  Krister Walfridsson  <krister.walfridsson@gmail.com>
! 
! 	PR target/80600
! 	* config/netbsd.h (NETBSD_LIBGCC_SPEC): Always add -lgcc.
! 
! 2017-09-27  Christophe Lyon  <christophe.lyon@linaro.org>
  
! 	Backport from trunk r249639.
! 	2017-06-26  Christophe Lyon  <christophe.lyon@linaro.org>
  
! 	* doc/sourcebuild.texi (ARM-specific attributes): Document new
! 	arm_neon_ok_no_float_abi effective target.
  
! 2017-09-26  Richard Biener  <rguenther@suse.de>
  
! 	Backport from mainline
! 	2017-09-19  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/82244
! 	* tree-vrp.c (remove_range_assertions): Do not propagate
! 	a constant to abnormals but replace the assert with a copy.
  
! 	2017-09-21  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/82276
! 	PR tree-optimization/82244
! 	* tree-vrp.c (build_assert_expr_for): Set
! 	SSA_NAME_OCCURS_IN_ABNORMAL_PHI if the variable we assert on
! 	has it set.
! 	(remove_range_assertions): Revert earlier change.
  
! 	2017-09-20  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/82264
! 	* tree-ssa-sccvn.c (vn_phi_eq): Use safe_dyn_cast to check
! 	for GIMPLE_CONDs.
! 	(vn_phi_lookup): Likewise.
! 	(vn_phi_insert): Likewise.
! 	* is-a.h (safe_dyn_cast): New.
  
! 	2017-09-25  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/82285
! 	* tree-vect-patterns.c (vect_recog_bool_pattern): Also handle
! 	enumeral types.
  
! 	2017-09-22  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/82291
! 	* tree-if-conv.c (predicate_mem_writes): Make sure to
! 	remove writes in blocks predicated with false.
  
! 2017-09-21  Alan Modra  <amodra@gmail.com>
  
! 	PR target/81996
! 	* gcc/config/rs6000/rs6000.c (rs6000_return_addr): Use
! 	stack_pointer_rtx for count 0.  Update comments.  Break up
! 	large rtl expression.
  
! 2017-09-21  Wilco Dijkstra  <wdijkstr@arm.com>
  
! 	PR target/71951
! 	* config/aarch64/aarch64.h (LIBGCC2_UNWIND_ATTRIBUTE): Define.
  
! 2017-09-19  Uros Bizjak  <ubizjak@gmail.com>
  
! 	* config/i386/i386.c (fold_builtin_cpu): Add M_AMDFAM17H
! 	to processor_model and "amdfam17h" to arch_names_table.
! 	* doc/extend.texi (__builtin_cpu_is): Document amdfam17h CPU name.
  
! 2017-09-19  Martin Liska  <mliska@suse.cz>
  
! 	PR c++/81355
! 	* config/i386/i386.c (sorted_attr_string): Skip empty strings.
  
! 2017-09-19  Martin Liska  <mliska@suse.cz>
  
! 	Revert backport:
! 	2017-08-10  Martin Liska  <mliska@suse.cz>
  
! 	PR c++/81355
! 	* c-attribs.c (handle_target_attribute):
! 	Report warning for an empty string argument of target attribute.
  
! 2017-09-18  Richard Biener  <rguenther@suse.de>
  
! 	Backport from mainline
! 	2017-09-04  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/82084
! 	* fold-const.h (can_native_encode_string_p): Declare.
! 	* fold-const.c (can_native_encode_string_p): Factor out from ...
! 	(native_encode_string): ... here.
! 	* tree-vect-stmts.c (vectorizable_store): Call it to avoid
! 	vectorizing stores from constants we later cannot handle.
  
! 	2017-09-06  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/82108
! 	* tree-vect-stmts.c (vectorizable_load): Fix pointer adjustment
! 	for gap in the non-permutation SLP case.
  
! 2017-09-15  Jakub Jelinek  <jakub@redhat.com>
  
! 	Backported from mainline
! 	2017-09-14  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/81325
! 	* cfgbuild.c (find_bb_boundaries): Ignore debug insns in decisions
! 	if and where to split a bb, except for splitting before debug insn
! 	sequences followed by non-label real insn.  Delete debug insns
! 	in between basic blocks.
  
! 	2017-09-12  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/82112
! 	* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): For
! 	ALTIVEC_BUILTIN_VEC_LD if arg1 has array type call default_conversion
! 	on it early, rather than manual conversion late.  For
! 	ALTIVEC_BUILTIN_VEC_ST if arg2 has array type call default_conversion
! 	instead of performing manual conversion.
  
! 2017-09-15  Martin Liska  <mliska@suse.cz>
  
! 	Backport from mainline
! 	2017-09-14  Martin Liska  <mliska@suse.cz>
  
! 	* gimple-ssa-strength-reduction.c (create_add_on_incoming_edge):
! 	Add proper printf format.
  
! 2017-09-15  Martin Liska  <mliska@suse.cz>
  
! 	Backport from mainline
! 	2017-08-30  Martin Liska  <mliska@suse.cz>
  
! 	PR inline-asm/82001
! 	* ipa-icf-gimple.c (func_checker::compare_tree_list_operand):
! 	Rename to ...
! 	(func_checker::compare_asm_inputs_outputs): ... this function.
! 	(func_checker::compare_gimple_asm): Use the function to compare
! 	also ASM constrains.
! 	* ipa-icf-gimple.h: Rename the function.
  
! 2017-09-15  Martin Liska  <mliska@suse.cz>
  
! 	Backport from mainline
! 	2017-08-29  Martin Liska  <mliska@suse.cz>
  
! 	PR other/39851
! 	* gcc.c (driver_handle_option): Add new argument.
! 	* opts-common.c (handle_option): Pass
! 	target_option_override_hook.
! 	* opts-global.c (lang_handle_option): Add new option.
! 	(set_default_handlers):  Add new argument.
! 	(decode_options): Likewise.
! 	* opts.c (target_handle_option): Likewise.
! 	(common_handle_option): Call target_option_override_hook.
! 	* opts.h (struct cl_option_handler_func): Add hook for
! 	target option override.
! 	(struct cl_option_handlers): Likewise.
! 	(set_default_handlers): Add new argument.
! 	(decode_options): Likewise.
! 	(common_handle_option): Likewise.
! 	(target_handle_option): Likewise.
! 	* toplev.c (toplev::main): Pass targetm.target_option.override
! 	hook.
  
! 2017-09-15  Martin Liska  <mliska@suse.cz>
  
! 	Backport from mainline
! 	2017-08-10  Martin Liska  <mliska@suse.cz>
  
! 	PR c++/81355
! 	* c-attribs.c (handle_target_attribute):
! 	Report warning for an empty string argument of target attribute.
  
! 2017-09-15  Martin Liska  <mliska@suse.cz>
  
! 	Backport from mainline
! 	2017-08-08  Martin Liska  <mliska@suse.cz>
  
! 	PR tree-opt/81696
! 	* ipa-icf-gimple.c (func_checker::compare_cst_or_decl): Consider
! 	LABEL_DECLs that can be from a different function.
  
! 2017-09-15  Martin Liska  <mliska@suse.cz>
  
! 	Backport from mainline
! 	2017-06-28  Martin Liska  <mliska@suse.cz>
  
! 	PR ipa/81128
! 	* ipa-visibility.c (non_local_p): Handle visibility.
  
! 2017-09-12  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
  
! 	Backport from mainline
! 	2017-09-05  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
  
! 	PR target/81833
! 	* config/rs6000/altivec.md (altivec_vsum2sws): Convert from a
! 	define_insn to a define_expand.
! 	(altivec_vsum2sws_direct): New define_insn.
! 	(altivec_vsumsws): Convert from a define_insn to a define_expand.
  
! 2017-09-11  Max Filippov  <jcmvbkbc@gmail.com>
  
! 	Backport from mainline
! 	PR target/82181
! 	* config/xtensa/xtensa.c (xtensa_mem_offset): Check that both
! 	words of DImode object are reachable by xtensa_uimm8x4 access.
  
! 2017-09-10  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
  
! 	Backport from mainline
! 	2017-05-11  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
  
! 	PR target/80695
! 	* config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost):
! 	Account for direct move costs for vec_construct of integer
! 	vectors.
  
! 	Backport from mainline
! 	2017-07-23  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
  
! 	PR target/80695
! 	* config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost):
! 	Reduce cost estimate for direct moves.
  
! 2017-09-08  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR target/81988
! 	* config/sparc/sparc.md (mulsi3): Rename into *mulsi3_sp32.
! 	(*mulsi3_sp64): New instruction.
! 	(mulsi3): New expander.
  
! 2017-09-07  Jakub Jelinek  <jakub@redhat.com>
  
! 	Backported from mainline
! 	2017-09-05  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/81768
! 	* omp-low.c (lower_omp_for): Recompute tree invariant if
! 	gimple_omp_for_initial/final is ADDR_EXPR.
  
! 	PR middle-end/81768
! 	* omp-expand.c (expand_omp_simd): Force second operands of COND_EXPR
! 	into gimple val before gimplification fo the COND_EXPR.
  
! 	2017-09-04  Jakub Jelinek  <jakub@redhat.com>
  
! 	* lra-remat.c (reg_overlap_for_remat_p): Fix a pasto.
  
! 	2017-09-01  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR sanitizer/81923
! 	* asan.c (create_odr_indicator): Strip name encoding from assembler
! 	name before appending it after __odr_asan_.
  
! 	2017-08-09  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR c/81687
! 	* omp-low.c (omp_copy_decl): Don't remap FORCED_LABEL or DECL_NONLOCAL
! 	LABEL_DECLs.
! 	* tree-cfg.c (move_stmt_op): Don't adjust DECL_CONTEXT of FORCED_LABEL
! 	or DECL_NONLOCAL labels.
! 	(move_stmt_r) <case GIMPLE_LABEL>: Adjust DECL_CONTEXT of FORCED_LABEL
! 	or DECL_NONLOCAL labels here.
  
! 	2017-08-03  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/81621
! 	* bb-reorder.c (pass_partition_blocks::execute): Return TODO_df_finish
! 	after setting changeable df flags.
  
! 	PR driver/81650
! 	* calls.c (alloc_max_size): Use HOST_WIDE_INT_UC (10??)
! 	instead of 10??LU, perform unit multiplication in wide_int,
! 	don't change alloc_object_size_limit if the limit is larger
! 	than SSIZE_MAX.
  
! 	PR middle-end/81052
! 	* omp-low.c (diagnose_sb_0): Handle flag_openmp_simd like flag_openmp.
! 	(pass_diagnose_omp_blocks::gate): Enable also for flag_openmp_simd.
  
! 2017-09-06  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
  
! 	Backport from mainline:
! 	2017-08-30  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
  
! 	PR tree-optimization/81987
! 	* gimple-ssa-strength-reduction.c (insert_initializers): Don't
! 	insert an initializer in a location not dominated by the stride
! 	definition.
  
! 2017-09-05  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
  
! 	Backport from mainline
! 	2017-08-29  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
! 		    Jakub Jelinek  <jakub@redhat.com>
! 		    Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/81503
! 	* gimple-ssa-strength-reduction.c (replace_mult_candidate): Ensure
! 	folded constant fits in the target type; reorder tests for clarity.
  
! 2017-09-05  Pierre-Marie de Rodat  <derodat@adacore.com>
  
! 	Backport from trunk
! 	PR ada/79542
! 	* dwarf2out.c (modified_type_die): For C typedef types that have
! 	an ultimate origin, process the ultimate origin instead of the
! 	input type.
! 	(gen_typedef_die): Assert that input DECLs have no ultimate
! 	origin.
! 	(gen_type_die_with_usage): For typedef variants that have an
! 	ultimate origin, just call gen_decl_die on the original DECL.
! 	(process_scope_var): Avoid creating DIEs for local typedefs and
! 	concrete static variables.
  
! 2017-08-31  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
  
! 	Backport from mainline
! 	2017-08-25  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
  
! 	PR target/81504
! 	* config/rs6000/rs6000.c (find_alignment_op): Add reference
! 	parameter and_insn and return it.
! 	(recombine_lvx_pattern): Insert a copy to ensure availability of
! 	the base register of the copied masking operation at the point of
! 	the instruction replacement.
! 	(recombine_stvx_pattern): Likewise.
  
! 2017-08-29  Michael Meissner  <meissner@linux.vnet.ibm.com>
  
! 	Back port from trunk
! 	2017-08-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
  
! 	PR target/81593
! 	* config/rs6000/vsx.md (vsx_concat_<mode>_1): New combiner insns
! 	to recognize inserting into a vector from a double word element
! 	that was extracted from another vector, and eliminate extra
! 	XXPERMDI instructions.
! 	(vsx_concat_<mode>_2): Likewise.
! 	(vsx_concat_<mode>_3): Likewise.
! 	(vsx_set_<mode>, VSX_D): Rewrite vector set in terms of vector
! 	concat to allow optimizing inserts from previous extracts.
  
! 2017-08-29  Alan Modra  <amodra@gmail.com>
  
! 	Apply from mainline
! 	2017-08-12  Alan Modra  <amodra@gmail.com>
! 	PR target/81170
! 	PR target/81295
! 	* config/rs6000/sysv4.h (STARTFILE_LINUX_SPEC): Upgrade to
! 	match gnu-user.h startfile.
! 	(ENDFILE_LINUX_SPEC): Similarly.
  
! 	2017-08-08  Alan Modra  <amodra@gmail.com>
! 		    H.J. Lu  <hongjiu.lu@intel.com>
! 	PR target/81170
! 	PR target/81295
! 	PR driver/81523
! 	* gcc.c (NO_PIE_SPEC): Delete.
! 	(PIE_SPEC): Define as !no-pie/pie.  Move static|shared|r
! 	exclusion..
! 	(LINK_PIE_SPEC): ..to here.
! 	(LINK_COMMAND_SPEC): Support -no-pie.
! 	* config/gnu-user.h (GNU_USER_TARGET_STARTFILE_SPEC): Correct
! 	chain of crtbegin*.o selection, update for PIE_SPEC changes and
! 	format.
! 	(GNU_USER_TARGET_ENDFILE_SPEC): Similarly.
! 	* config/sol2.h (STARTFILE_CRTBEGIN_SPEC): Similarly.
! 	(ENDFILE_CRTEND_SPEC): Similarly.
  
! 2017-08-29  Richard Biener  <rguenther@suse.de>
  
! 	Backport from mainline
! 	2017-08-28  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/81977
! 	* tree-ssa-sccvn.c (vn_reference_lookup_3): Fix look through
! 	memcpy.
  
! 	2017-08-28  Richard Biener  <rguenther@suse.de>
  
! 	PR debug/81993
! 	* dwarf2out.c (gen_remaining_tmpl_value_param_die_attributes):
! 	Do nothing for removed DIEs.
  
! 2017-08-28  Richard Biener  <rguenther@suse.de>
  
! 	Backport from mainline
! 	2017-06-14  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/81088
! 	* fold-const.c (split_tree): Drop TREE_OVERFLOW flag from
! 	literal constants.
! 	(fold_binary_loc): When associating do not treat pre-existing
! 	TREE_OVERFLOW on literal constants as a reason to allow
! 	TREE_OVERFLOW on associated literal constants.
  
! 	2017-06-13  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/81065
! 	* fold-const.c (extract_muldiv_1): Remove bogus distribution
! 	case of C * (x * C2 + C3).
! 	(fold_addr_of_array_ref_difference): Properly fold index difference.
  
! 	2017-06-07  Marek Polacek  <polacek@redhat.com>
  
! 	PR sanitizer/80932
! 	* fold-const.c (extract_muldiv_1) <case MINUS_EXPR>: Add
! 	TYPE_OVERFLOW_WRAPS check.
  
! 2017-08-28  Richard Biener  <rguenther@suse.de>
  
! 	Backport from mainline
! 	2017-08-21  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/81884
! 	* tree-ssa-alias.c (stmt_kills_ref_p): Handle array accesses
! 	at struct end conservatively when comparing common bases.
  
! 	2017-05-04  Richard Biener  <rguenther@suse.de>
  
! 	* tree.c (array_at_struct_end_p): Handle arrays at struct
! 	end with flexarrays more conservatively.  Refactor and treat
! 	arrays of arrays or aggregates more strict.  Fix
! 	VIEW_CONVERT_EXPR handling.  Remove allow_compref argument.
! 	* tree.h (array_at_struct_end_p): Adjust prototype.
! 	* gimple-fold.c (get_range_strlen): Likewise.
! 	* tree-chkp.c (chkp_may_narrow_to_field): Likewise.
  
! 2017-08-28  Richard Biener  <rguenther@suse.de>
  
! 	Backport from mainline
! 	2017-08-01  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/81181
! 	* tree-ssa-pre.c (compute_antic_aux): Defer clean() to ...
! 	(compute_antic): ... end of iteration here.
  
! 	2017-08-08  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/81723
! 	* tree-vect-slp.c (struct bst_traits): New hash traits.
! 	(bst_fail): New global.
! 	(vect_build_slp_tree_2): New worker, split out from ...
! 	(vect_build_slp_tree): ... this now wrapping it with using
! 	bst_fail set to cache SLP tree build fails.  Properly handle
! 	max_tree_size.
! 	(vect_analyze_slp_instance): Allocate and free bst_fail.
  
! 	2017-08-24  Richard Biener  <rguenther@suse.de>
  
! 	PR target/81921
! 	* config/i386/i386.c: Include symbol-summary.h, ipa-prop.h
! 	and ipa-inline.h.
! 	(ix86_can_inline_p): When ix86_fpmath flags do not match
! 	check whether the callee uses FP math at all.
  
! 2017-08-23  Peter Bergner  <bergner@vnet.ibm.com>
  
! 	Backport from mainline
! 	2017-08-17  Peter Bergner  <bergner@vnet.ibm.com>
  
! 	PR target/72804
! 	* config/rs6000/vsx.md (*vsx_le_permute_<mode>): Add support for
! 	operands residing in integer registers.
! 	(*vsx_le_perm_load_<mode>): Likewise.
! 	(*vsx_le_perm_store_<mode>): Likewise.
! 	(define_peephole2): Add peepholes to optimize the above.
  
! 2017-08-22  Peter Bergner  <bergner@vnet.ibm.com>
  
! 	Backport from mainline
! 	2017-08-17  Peter Bergner  <bergner@vnet.ibm.com>
  
! 	PR target/80210
! 	* config/rs6000/rs6000.c (rs6000_activate_target_options): New function.
! 	(rs6000_set_current_function): Rewrite function to use it.
  
! 2017-08-22  Sebastian Huber  <sebastian.huber@embedded-brains.de>
  
! 	Backport from mainline
! 	2017-08-22  Sebastian Huber  <sebastian.huber@embedded-brains.de>
  
! 	* config.gcc (powerpc-*-rtems*): Add rs6000/linux64.opt.
! 	* config/rs6000/rtems.h (ASM_PREFERRED_EH_DATA_FORMAT): New define.
! 	(DOT_SYMBOLS): Likewise.
! 	(MINIMAL_TOC_SECTION_ASM_OP): Likewise.
! 	(RELOCATABLE_NEEDS_FIXUP): Likewise.
! 	(RS6000_ABI_NAME): Likewise.
! 	(TARGET_CMODEL): Likewise.
! 	(TOC_SECTION_ASM_OP): Likewise.
! 	(SET_CMODEL): New macro.
! 	(SUBSUBTARGET_OVERRIDE_OPTIONS): Evaluate cmodel options.
  
! 2017-08-22  Georg-Johann Lay  <avr@gjlay.de>
  
! 	Backport from 2017-08-22 trunk r251256.
  
! 	PR target/81910
! 	* config/avr/avr.c (avr_handle_addr_attribute): Early return if
! 	not VAR_P. Filter attribute warnings with OPT_Wattributes.
! 	(avr_attribute_table) <io, io_low, address>: Initialize
! 	.decl_required with true.
  
! 2017-08-21  Georg-Johann Lay  <avr@gjlay.de>
  
! 	PR target/79883
! 	* config/avr/avr.c (avr_set_current_function): Typo in diagnostic.
  
! 2017-08-19  Uros Bizjak  <ubizjak@gmail.com>
  
! 	PR target/81894
! 	* doc/extend.texi (x86 Built-in Functions): Correct the name of
! 	__builtin_ia32_lzcnt_u16.
  
! 2017-08-17  Uros Bizjak  <ubizjak@gmail.com>
  
! 	Backport from mainline
! 	2017-08-17  Maxim Ostapenko  <m.ostapenko@samsung.com>
  
! 	PR target/81861
! 	* config/i386/i386.c (ix86_option_override_internal): Save target
! 	specific options after ix86_stack_protector_guard_reg was changed.
  
! 2017-08-16  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
  
! 	Backport from mainline
! 	2017-08-08  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
  
! 	PR tree-optimization/81354
! 	* gimple-ssa-strength-reduction.c (create_add_on_incoming_edge):
! 	Insert on edges rather than explicitly creating landing pads.
! 	(analyze_candidates_and_replace): Commit edge inserts.
  
! 2017-08-15  Joseph Myers  <joseph@codesourcery.com>
  
! 	PR target/78460
! 	PR target/67712
! 	* config/sh/sh-mem.cc (sh_expand_cmpnstr): Only unroll for
! 	constant count if that count is less than 32.
  
! 2017-08-14  Richard Biener  <rguenther@suse.de>
  
! 	* BASE-VER: Set to 7.2.1.
  
! 2017-08-14  Release Manager
  
! 	* GCC 7.2.0 released.
  
! 2017-08-08  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/81766
! 	* function.c (thread_prologue_and_epilogue_insns): Restore
! 	behavior of always calling find_many_sub_basic_blocks on
! 	the inserted prologue.
  
! 2017-08-02  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/79499
! 	* function.c (thread_prologue_and_epilogue_insns): Determine blocks
! 	for find_many_sub_basic_blocks bitmap by looking up BLOCK_FOR_INSN
! 	of first NONDEBUG_INSN_P in each of the split_prologue_seq and
! 	prologue_seq sequences - if any.
  
! 2017-08-01  Uros Bizjak  <ubizjak@gmail.com>
  
! 	PR target/81641
! 	* config/i386/i386.c (ix86_print_operand_address_as): For -masm=intel
! 	print "ds:" only for immediates in generic address space.
  
! 2017-08-01  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/81622
! 	* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): For
! 	__builtin_vec_cmpne verify both arguments are compatible vectors
! 	before looking at TYPE_MODE on the element type.  For __builtin_vec_ld
! 	verify arg1_type is a pointer or array type.  For __builtin_vec_st,
! 	move computation of aligned to after checking the argument types.
! 	Formatting fixes.
  
! 2017-08-01  Martin Liska  <mliska@suse.cz>
  
! 	Backport from mainline
! 	2017-07-26  Martin Liska  <mliska@suse.cz>
  
! 	PR gcov-profile/81561
! 	* gcov.c (unblock): Make unblocking safe as we need to preserve
! 	index correspondence of blocks and block_lists.
  
! 2017-08-01  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/71752
! 	PR tree-optimization/81633
! 	* tree-vect-slp.c (vect_get_slp_defs): Handle null operands
! 	in the original suggested way.
  
! 2017-08-01  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	PR tree-optimization/80769
! 	* tree-ssa-strlen.c (strinfo): Document that "stmt" is also used
! 	for malloc and calloc.  Document the new invariant that all related
! 	strinfos have delayed lengths or none do.
! 	(get_next_strinfo): New function.
! 	(verify_related_strinfos): Move earlier in file.
! 	(set_endptr_and_length): New function, split out from...
! 	(get_string_length): ...here.  Also set the lengths of related
! 	strinfos.
  
! 2017-08-01  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/81588
! 	* tree-ssa-reassoc.c (optimize_range_tests_var_bound): If
! 	ranges[i].in_p, invert comparison code ccode.  For >/>=,
! 	swap rhs1 and rhs2 and comparison code unconditionally,
! 	for </<= don't do that.  Don't swap rhs1/rhs2 again if
! 	ranges[i].in_p, instead invert comparison code ccode if
! 	opcode or oe->rank is BIT_IOR_EXPR.
  
! 2017-07-31  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
  
! 	Backport from mainline
! 	2017-07-31  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
  
! 	* config.gcc: Add z14.
! 	* config/s390/driver-native.c (s390_host_detect_local_cpu): Add
! 	CPU model numbers for z13s and z14.
! 	* config/s390/s390-c.c (s390_resolve_overloaded_builtin): Replace
! 	arch12 with z14.
! 	* config/s390/s390-opts.h (enum processor_type): Rename
! 	PROCESSOR_ARCH12 to PROCESSOR_3906_Z14.
! 	* config/s390/s390.c (processor_table): Add field for CPU name to
! 	be passed to Binutils.
! 	(s390_asm_output_machine_for_arch): Use the new field in
! 	processor_table for Binutils.
! 	(s390_expand_builtin): Replace arch12 with z14.
! 	(s390_issue_rate): Rename PROCESSOR_ARCH12 to PROCESSOR_3906_Z14.
! 	(s390_get_sched_attrmask): Likewise.
! 	(s390_get_unit_mask): Likewise.
! 	* config/s390/s390.opt: Add z14 to processor_type enum.
  
! 2017-07-31  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR sanitizer/81604
! 	* ubsan.c (ubsan_type_descriptor): For UBSAN_PRINT_ARRAY don't
! 	change type to the element type, instead add eltype variable and
! 	use it where we are interested in the element type.
  
! 2017-07-28  Peter Bergner  <bergner@vnet.ibm.com>
  
! 	Backport from mainline
! 	2017-07-28  Peter Bergner  <bergner@vnet.ibm.com>
  
! 	* config/rs6000/ppc-auxv.h (PPC_FEATURE2_DARN): New define.
! 	(PPC_FEATURE2_SCV): Likewise.
! 	* config/rs6000/rs6000.c (cpu_supports_info): Use them.
  
! 2017-07-28  David Edelsohn  <dje.gcc@gmail.com>
  
! 	Backport from mainline
! 	2017-07-25  David Edelsohn  <dje.gcc@gmail.com>
  
! 	* dwarf2asm.c (dw2_asm_output_nstring): Encode double quote
! 	character for AIX.
! 	* dwarf2out.c (output_macinfo): Copy debug_line_section_label
! 	to dl_section_ref.  On AIX, append an expression to subtract
! 	the size of the section length to dl_section_ref.
  
! 2017-07-28  Bin Cheng  <bin.cheng@arm.com>
  
! 	Backport from mainline r250496
! 	2017-07-25  Bin Cheng  <bin.cheng@arm.com>
  
! 	PR target/81414
! 	* config/aarch64/cortex-a57-fma-steering.c (analyze): Skip fmul/fmac
! 	instructions if no du chain is found.
  
! 2017-07-28  Sebastian Huber  <sebastian.huber@embedded-brains.de>
  
! 	Backport from mainline
! 	2017-07-28  Sebastian Huber  <sebastian.huber@embedded-brains.de>
  
! 	* config.gcc (powerpc-*-rtems*): Remove rs6000/eabi.h.  Add
! 	rs6000/biarch64.h.
! 	* config/rs6000/rtems.h (ASM_DECLARE_FUNCTION_SIZE): New macro.
! 	(ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Likewise.
! 	(CRT_CALL_STATIC_FUNCTION): Likewise.
! 	(ASM_DEFAULT_SPEC): New define.
! 	(ASM_SPEC32): Likewise.
! 	(ASM_SPEC64): Likewise.
! 	(ASM_SPEC_COMMON): Likewise.
! 	(ASM_SPEC): Likewise.
! 	(INVALID_64BIT): Likewise.
! 	(LINK_OS_DEFAULT_SPEC): Likewise.
! 	(LINK_OS_SPEC32): Likewise.
! 	(LINK_OS_SPEC64): Likewise.
! 	(POWERPC_LINUX): Likewise.
! 	(PTRDIFF_TYPE): Likewise.
! 	(RESTORE_FP_PREFIX): Likewise.
! 	(RESTORE_FP_SUFFIX): Likewise.
! 	(SAVE_FP_PREFIX): Likewise.
! 	(SAVE_FP_SUFFIX): Likewise.
! 	(SIZE_TYPE): Likewise.
! 	(SUBSUBTARGET_OVERRIDE_OPTIONS): Likewise.
! 	(TARGET_64BIT): Likewise.
! 	(TARGET_64BIT): Likewise.
! 	(TARGET_AIX): Likewise.
! 	(WCHAR_TYPE_SIZE): Likewise.
! 	(WCHAR_TYPE): Undefine.
! 	(TARGET_OS_CPP_BUILTINS): Add 64-bit PowerPC defines.
! 	(CPP_OS_DEFAULT_SPEC): Use previous CPP_OS_RTEMS_SPEC.
! 	(CPP_OS_RTEMS_SPEC): Delete.
! 	(SUBSUBTARGET_EXTRA_SPECS): Remove cpp_os_rtems.  Add
! 	asm_spec_common, asm_spec32, asm_spec64, link_os_spec32, and
! 	link_os_spec64.
! 	* config/rs6000/t-rtems: Add mcpu=e6500/m64 multilibs.
  
! 2017-07-28  Sebastian Huber  <sebastian.huber@embedded-brains.de>
  
! 	Backport from mainline
! 	2017-07-27  Sebastian Huber  <sebastian.huber@embedded-brains.de>
  
! 	* config.gcc (riscv*-*-elf*): Add (riscv*-*-rtems*).
! 	* config/riscv/rtems.h: New file.
  
! 2017-07-27  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* config/sparc/sparc.c (sparc_option_override): Set MASK_FSMULD flag
! 	earlier and only if MASK_FPU is set.  Adjust formatting.
  
! 2017-07-27  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
  
! 	Backport from mainline
! 	2017-07-27  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
  
! 	PR target/81534
! 	* config/s390/s390.md ("*atomic_compare_and_swap<mode>_1")
! 	("*atomic_compare_and_swapdi_2", "*atomic_compare_and_swapsi_3"):
! 	Change s_operand to memory_operand.
  
! 2017-07-27  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/81555
! 	PR tree-optimization/81556
! 	* tree-ssa-reassoc.c (rewrite_expr_tree): Add NEXT_CHANGED argument,
! 	if true, force CHANGED for the recursive invocation.
! 	(reassociate_bb): Remember original length of ops array, pass
! 	len != orig_len as NEXT_CHANGED in rewrite_expr_tree call.
  
! 2017-07-27  Martin Liska  <mliska@suse.cz>
  
! 	Backport from mainline
! 	2017-07-17  Martin Liska  <mliska@suse.cz>
  
! 	PR sanitizer/81302
! 	* opts.c (finish_options): Do not allow -fgnu-tm
! 	w/ -fsanitize={kernel-,}address.  Say sorry.
  
! 2017-07-27  Martin Liska  <mliska@suse.cz>
  
! 	Backport from mainline
! 	2017-07-26  Martin Liska  <mliska@suse.cz>
  
! 	PR sanitize/81186
! 	* function.c (expand_function_start): Make expansion of
! 	nonlocal_goto_save_area after parm_birth_insn.
  
! 2017-07-27  Martin Liska  <mliska@suse.cz>
  
! 	Backport from mainline
! 	2017-06-30  Martin Liska  <mliska@suse.cz>
  
! 	PR sanitizer/81021
! 	* tree-eh.c (lower_resx): Call BUILT_IN_ASAN_HANDLE_NO_RETURN
! 	before BUILT_IN_UNWIND_RESUME when ASAN is used.
  
! 2017-07-27  Martin Liska  <mliska@suse.cz>
  
! 	Backport from mainline
! 	2017-06-28  Martin Liska  <mliska@suse.cz>
  
! 	PR sanitizer/81224
! 	* asan.c (instrument_derefs): Bail out inner references
! 	that are hard register variables.
  
! 2017-07-26  Sebastian Huber  <sebastian.huber@embedded-brains.de>
  
! 	Backport from mainline
! 	2017-07-26  Sebastian Huber  <sebastian.huber@embedded-brains.de>
  
! 	* config/sparc/sparc.c (dump_target_flag_bits): Dump MASK_FSMULD.
! 	(sparc_option_override): Honour MASK_FSMULD.
! 	* config/sparc/sparc.h (MASK_FEATURES): Add MASK_FSMULD.
! 	* config/sparc/sparc.md (muldf3_extend): Use TARGET_FSMULD.
! 	* config/sparc/sparc.opt (mfsmuld): New option.
! 	* doc/invoke.texi (mfsmuld): Document option.
  
! 2017-07-26  Georg-Johann Lay  <avr@gjlay.de>
  
! 	Backport from 2017-07-25 trunk r250499.
  
! 	PR 81487
! 	* hsa-brig.c (brig_init): Use xasprintf instead of asprintf.
! 	* gimple-pretty-print.c (dump_probability): Same.
! 	* tree-ssa-structalias.c (alias_get_name): Same.
  
! 2017-07-26  Richard Biener  <rguenther@suse.de>
  
! 	Backport from mainline
! 	2017-06-18  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/81410
! 	* tree-vect-stmts.c (vectorizable_load): Properly adjust for
! 	the gap in the ! slp_perm SLP case after each group.
  
! 	2017-07-25  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/81455
! 	* tree-ssa-loop-unswitch.c (find_loop_guard): Make sure to
! 	not walk in cycles when looking for guards.
  
! 	2017-07-25  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/81505
! 	* fold-const.c (fold_negate_const): TREE_OVERFLOW should be
! 	sticky.
  
! 	2017-06-28  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/81175
! 	* config/i386/i386.c (ix86_init_mmx_sse_builtins): Use def_builtin
! 	rather than def_builtin_pure for __builtin_ia32_gatherpf*.
  
! 	2017-06-26  Richard Biener  <rguenther@suse.de>
  
! 	PR target/81175
! 	* config/i386/i386.c (ix86_init_mmx_sse_builtins):
! 	Use def_builtin_pure for all gather builtins.
  
! 	2017-06-21  Marc Glisse  <marc.glisse@inria.fr>
  
! 	* config/i386/i386.c (struct builtin_isa): New field pure_p.
! 	Reorder for compactness.
! 	(def_builtin, def_builtin2, ix86_add_new_builtins): Handle pure_p.
! 	(def_builtin_pure, def_builtin_pure2): New functions.
! 	(ix86_init_mmx_sse_builtins) [__builtin_ia32_stmxcsr]: Mark as pure.
  
! 2017-07-26  Sebastian Huber  <sebastian.huber@embedded-brains.de>
  
! 	Backport from mainline
! 	2017-07-26  Sebastian Huber  <sebastian.huber@embedded-brains.de>
  
! 	* config/sparc/sparc.c (sparc_option_override): Remove MASK_FPU
! 	from all CPU target flags enable members.
  
! 2017-07-26  Sebastian Huber  <sebastian.huber@embedded-brains.de>
  
! 	Backport from mainline
! 	2017-07-25  Sebastian Huber  <sebastian.huber@embedded-brains.de>
  
! 	PR libgcc/61152
! 	* config/aarch64/rtems.h: Add GCC Runtime Library Exception.
! 	Format changes.
! 	* config/arm/rtems.h: Likewise.
! 	* config/bfin/rtems.h: Likewise.
! 	* config/i386/rtemself.h: Likewise.
! 	* config/lm32/rtems.h: Likewise.
! 	* config/m32c/rtems.h: Likewise.
! 	* config/m68k/rtemself.h: Likewise.
! 	* config/microblaze/rtems.h: Likewise.
! 	* config/mips/rtems.h: Likewise.
! 	* config/moxie/rtems.h: Likewise.
! 	* config/nios2/rtems.h: Likewise.
! 	* config/rs6000/rtems.h: Likewise.
! 	* config/rtems.h: Likewise.
! 	* config/sh/rtems.h: Likewise.
! 	* config/sh/rtemself.h: Likewise.
! 	* config/sparc/rtemself.h: Likewise.
  
! 2017-07-25  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
  
! 	Backport from mainline
! 	2017-07-14  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
  
! 	PR tree-optimization/81162
! 	* gimple-ssa-strength-reduction.c (replace_mult_candidate): Don't
! 	replace a negate with an add.
  
! 2017-07-25  Georg-Johann Lay  <avr@gjlay.de>
  
! 	Backport from 2017-07-12 trunk r250151.
  
! 	PR target/81407
! 	* config/avr/avr.c (avr_encode_section_info)
! 	[progmem && !TREE_READONLY]: Error if progmem object needs
! 	constructing.
  
! 2017-07-25  Wilco Dijkstra  <wdijkstr@arm.com>
  
! 	PR target/79041
! 	* config/aarch64/aarch64.c (aarch64_classify_symbol):
! 	Avoid SYMBOL_SMALL_ABSOLUTE for literals with pc-relative literals.
  
! 2017-07-25  Georg-Johann Lay  <avr@gjlay.de>
  
! 	Backport from trunk r247719.
  
! 	2017-05-06  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	PR rtl-optimization/75964
! 	* simplify-rtx.c (simplify_const_relational_operation): Remove
! 	invalid handling of comparisons of integer ABS.
  
! 2017-07-25  Bin Cheng  <bin.cheng@arm.com>
  
! 	Backport from 2017-07-20 trunk r250384.
  
! 	PR tree-optimization/81388
! 	Revert r238585:
! 	2016-07-21  Bin Cheng  <bin.cheng@arm.com>
  
! 	* tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Clean up
! 	by removing computation of may_be_zero.
  
! 2017-07-23  Uros Bizjak  <ubizjak@gmail.com>
  
! 	PR target/80569
! 	* config/i386/i386.c (ix86_option_override_internal): Disable
! 	BMI, BMI2 and TBM instructions for -m16.
  
! 2017-07-19  Michael Meissner  <meissner@linux.vnet.ibm.com>
  
! 	Back port from trunk
! 	2017-07-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
  
! 	PR target/81193
! 	* config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): If GLIBC
! 	provides the hardware capability bits, define the macro
! 	__BUILTIN_CPU_SUPPORTS__.
! 	* config/rs6000/rs6000.c (cpu_expand_builtin): Generate a warning
! 	if GLIBC does not provide the hardware capability bits.  Add a
! 	gcc_unreachable call if the built-in cpu function is neither
! 	__builtin_cpu_is nor __builtin_cpu_supports.
! 	* doc/extend.texi (PowerPC built-in functions): Document that
! 	GLIBC 2.23 or newer is needed by __builtin_cpu_is and
! 	__builtin_cpu_supports.  Document the macros defined by GCC if the
! 	newer GLIBC is available.
  
! 2017-07-18  Uros Bizjak  <ubizjak@gmail.com>
  
! 	PR target/81471
! 	* config/i386/i386.md (rorx_immediate_operand): New mode attribute.
! 	(*bmi2_rorx<mode>3_1): Use rorx_immediate_operand as
! 	operand 2 predicate.
! 	(*bmi2_rorxsi3_1_zext): Use const_0_to_31_operand as
! 	operand 2 predicate.
! 	(ror,rol -> rorx splitters): Use const_int_operand as
! 	operand 2 predicate.
  
! 2017-07-18  Tom de Vries  <tom@codesourcery.com>
  
! 	backport from mainline:
! 	PR target/81069
! 	2017-07-17  Tom de Vries  <tom@codesourcery.com>
  
! 	* config/nvptx/nvptx.c (nvptx_single): Insert diverging branch as late
! 	as possible.
  
! 2017-07-18  Georg-Johann Lay  <avr@gjlay.de>
  
! 	Backport from 2017-07-18 trunk r250301.
  
! 	PR target/81473
! 	* config/avr/avr.c (avr_optimize_casesi): Don't use
! 	INT8_MIN, INT8_MAX, UINT8_MAX, INT16_MIN, INT16_MAX, UINT16_MAX.
  
! 2017-07-17  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/81428
! 	* match.pd (X / X -> one): Don't optimize _Fract divisions, as 1
! 	can't be built for those types.
  
! 	PR tree-optimization/81365
! 	* tree-ssa-phiprop.c (propagate_with_phi): When considering hoisting
! 	aggregate moves onto bb predecessor edges, make sure there are no
! 	loads that could alias the lhs in between the start of bb and the
! 	loads from *phi.
  
! 	Backported from mainline
! 	2017-06-30  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/81225
! 	* config/i386/sse.md (vec_extract_lo_<mode><mask_name>): For
! 	V8FI, V16FI and VI8F_256 iterators, use <store_mask_predicate> instead
! 	of nonimmediate_operand and <store_mask_constraint> instead of m for
! 	the input operand.  For V8FI iterator, always split if input is a MEM.
! 	For V16FI and V8SF_256 iterators, don't test if both operands are MEM
! 	if <mask_applied>.  For VI4F_256 iterator, use <store_mask_predicate>
! 	instead of register_operand and <store_mask_constraint> instead of v for
! 	the input operand.  Make sure both operands aren't MEMs for if not
! 	<mask_applied>.
  
! 2017-07-17  Georg-Johann Lay  <avr@gjlay.de>
  
! 	Backport from 2017-07-17 trunk r250258.
  
! 	PR 80929
! 	* config/avr/avr.c (avr_mul_highpart_cost): New static function.
! 	(avr_rtx_costs_1) [TRUNCATE]: Use it to compute mul_highpart cost.
! 	[LSHIFTRT, outer_code = TRUNCATE]: Same.
  
! 2017-07-17  Sebastian Huber  <sebastian.huber@embedded-brains.de>
  
! 	Backport from mainline
! 	2017-07-17  Sebastian Huber  <sebastian.huber@embedded-brains.de>
  
! 	*  gcc/config/sparc/rtemself.h (TARGET_OS_CPP_BUILTINS): Add
! 	conditional builtin define __FIX_LEON3FT_B2BST.
  
! 2017-07-17  Daniel Cederman  <cederman@gaisler.com>
  
! 	Backport from mainline
! 	2017-07-17  Daniel Cederman  <cederman@gaisler.com>
  
! 	* config/sparc/t-rtems: Add mfix-gr712rc multilibs. Replace
! 	MULTILIB_EXCEPTIONS with MULTILIB_REQUIRED. Match -mfix-gr712rc
! 	with -mfix-ut700.
  
! 2017-07-16  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR rtl-optimization/81424
! 	* optabs.c (prepare_cmp_insn): Use copy_to_reg instead of force_reg
! 	to remove potential trapping from operands if -fnon-call-exceptions.
  
! 2017-07-16  Daniel Cederman  <cederman@gaisler.com>
  
! 	* config/sparc/sparc.md (divdf3_fix): Add NOP to prevent back
! 	to back store errata sensitive sequence from being generated.
! 	(sqrtdf2_fix): Likewise.
  
! 2017-07-12  Georg-Johann Lay  <avr@gjlay.de>
  
! 	Backport from 2017-07-12 trunk r250156.
  
! 	PR target/79883
! 	* config/avr/avr.c (avr_set_current_function): In diagnostic
! 	messages: Quote keywords and (parts of) identifiers.
! 	[WITH_AVRLIBC]: Warn for functions named "ISR", "SIGNAL" or
! 	"INTERRUPT".
  
! 2017-07-11  Daniel Cederman  <cederman@gaisler.com>
  
! 	* config/sparc/sparc.opt (mfix-ut700): New option.
! 	(mfix-gr712rc): Likewise.
! 	(sparc_fix_b2bst): New variable.
! 	* doc/invoke.texi (SPARC options): Document them.
! 	(ARM options): Fix warnings.
! 	* config/sparc/sparc.c (sparc_do_work_around_errata): Insert NOP
! 	instructions to prevent sequences that can trigger the store-store
! 	errata for certain LEON3FT processors.
! 	(pass_work_around_errata::gate): Also test sparc_fix_b2bst.
! 	(sparc_option_override): Set sparc_fix_b2bst appropriately.
! 	* config/sparc/sparc.md (fix_b2bst): New attribute.
! 	(in_branch_delay): Prevent stores in delay slot if fix_b2bst.
  
! 2017-07-10  Uros Bizjak  <ubizjak@gmail.com>
  
! 	PR target/81375
! 	* config/i386/i386.md (divsf3): Add TARGET_SSE to TARGET_SSE_MATH.
! 	(rcpps): Ditto.
! 	(*rsqrtsf2_sse): Ditto.
! 	(rsqrtsf2): Ditto.
! 	(div<mode>3): Macroize insn from divdf3 and divsf3
! 	using MODEF mode iterator.
  
! 2017-07-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
  
! 	Backport from mainline
! 	2017-07-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
  
! 	PR target/81348
! 	* config/rs6000/rs6000.md (HI sign_extend splitter): Use the
! 	correct operand in doing the split.
  
! 2017-07-07  Jose E. Marchesi  <jose.marchesi@oracle.com>
  
! 	* config/sparc/m8.md: New file.
! 	* config/sparc/sparc.md: Include m8.md.
  
! 2017-07-07  Jose E. Marchesi  <jose.marchesi@oracle.com>
  
! 	* config/sparc/sparc.opt: New option -mvis4b.
! 	* config/sparc/sparc.c (dump_target_flag_bits): Handle MASK_VIS4B.
! 	(sparc_option_override): Handle VIS4B.
! 	(enum sparc_builtins): Define
! 	SPARC_BUILTIN_DICTUNPACK{8,16,32},
! 	SPARC_BUILTIN_FPCMP{LE,GT,EQ,NE}{8,16,32}SHL,
! 	SPARC_BUILTIN_FPCMPU{LE,GT}{8,16,32}SHL,
! 	SPARC_BUILTIN_FPCMPDE{8,16,32}SHL and
! 	SPARC_BUILTIN_FPCMPUR{8,16,32}SHL.
! 	(check_constant_argument): New function.
! 	(sparc_vis_init_builtins): Define builtins
! 	__builtin_vis_dictunpack{8,16,32},
! 	__builtin_vis_fpcmp{le,gt,eq,ne}{8,16,32}shl,
! 	__builtin_vis_fpcmpu{le,gt}{8,16,32}shl,
! 	__builtin_vis_fpcmpde{8,16,32}shl and
! 	__builtin_vis_fpcmpur{8,16,32}shl.
! 	(sparc_expand_builtin): Check that the constant operands to
! 	__builtin_vis_fpcmp*shl and _builtin_vis_dictunpack* are indeed
! 	constant and in range.
! 	* config/sparc/sparc-c.c (sparc_target_macros): Handle
! 	TARGET_VIS4B.
! 	* config/sparc/sparc.h (SPARC_IMM2_P): Define.
! 	(SPARC_IMM5_P): Likewise.
! 	* config/sparc/sparc.md (cpu_feature): Add new feagure "vis4b".
! 	(enabled): Handle vis4b.
! 	(UNSPEC_DICTUNPACK): New unspec.
! 	(UNSPEC_FPCMPSHL): Likewise.
! 	(UNSPEC_FPUCMPSHL): Likewise.
! 	(UNSPEC_FPCMPDESHL): Likewise.
! 	(UNSPEC_FPCMPURSHL): Likewise.
! 	(cpu_feature): New CPU feature `vis4b'.
! 	(dictunpack{8,16,32}): New insns.
! 	(FPCSMODE): New mode iterator.
! 	(fpcscond): New code iterator.
! 	(fpcsucond): Likewise.
! 	(fpcmp{le,gt,eq,ne}{8,16,32}{si,di}shl): New insns.
! 	(fpcmpu{le,gt}{8,16,32}{si,di}shl): Likewise.
! 	(fpcmpde{8,16,32}{si,di}shl): Likewise.
! 	(fpcmpur{8,16,32}{si,di}shl): Likewise.
! 	* config/sparc/constraints.md: Define constraints `q' for unsigned
! 	2-bit integer constants and `t' for unsigned 5-bit integer
! 	constants.
! 	* config/sparc/predicates.md (imm5_operand_dictunpack8): New
! 	predicate.
! 	(imm5_operand_dictunpack16): Likewise.
! 	(imm5_operand_dictunpack32): Likewise.
! 	(imm2_operand): Likewise.
! 	* doc/invoke.texi (SPARC Options): Document -mvis4b.
! 	* doc/extend.texi (SPARC VIS Built-in Functions): Document the
! 	ditunpack* and fpcmp*shl builtins.
  
! 2017-07-07  Jose E. Marchesi  <jose.marchesi@oracle.com>
  
! 	* config.gcc: Handle m8 in --with-{cpu,tune} options.
! 	* config.in: Add HAVE_AS_SPARC6 define.
! 	* config/sparc/driver-sparc.c (cpu_names): Add entry for the SPARC
! 	M8.
! 	* config/sparc/sol2.h (CPP_CPU64_DEFAULT_SPEC): Define for
! 	TARGET_CPU_m8.
! 	(ASM_CPU32_DEFAUILT_SPEC): Likewise.
! 	(CPP_CPU_SPEC): Handle m8.
! 	(ASM_CPU_SPEC): Likewise.
! 	* config/sparc/sparc-opts.h (enum processor_type): Add
! 	PROCESSOR_M8.
! 	* config/sparc/sparc.c (m8_costs): New struct.
! 	(sparc_option_override): Handle TARGET_CPU_m8.
! 	(sparc32_initialize_trampoline): Likewise.
! 	(sparc64_initialize_trampoline): Likewise.
! 	(sparc_issue_rate): Likewise.
! 	(sparc_register_move_cost): Likewise.
! 	* config/sparc/sparc.h (TARGET_CPU_m8): Define.
! 	(CPP_CPU64_DEFAULT_SPEC): Define for M8.
! 	(ASM_CPU64_DEFAULT_SPEC): Likewise.
! 	(CPP_CPU_SPEC): Handle M8.
! 	(ASM_CPU_SPEC): Likewise.
! 	(AS_M8_FLAG): Define.
! 	* config/sparc/sparc.md: Add m8 to the cpu attribute.
! 	* config/sparc/sparc.opt: New option -mcpu=m8 for sparc targets.
! 	* configure.ac (HAVE_AS_SPARC6): Check for assembler support for
! 	M8 instructions.
! 	* configure: Regenerate.
! 	* doc/invoke.texi (SPARC Options): Document -mcpu=m8 and
! 	-mtune=m8.
  
! 2017-07-07  Jose E. Marchesi  <jose.marchesi@oracle.com>
  
! 	* config/sparc/niagara7.md: Rework the DFA scheduler to use insn
! 	subtypes.
! 	* config/sparc/sparc.md: Remove the `v3pipe' insn attribute.
! 	("*movdi_insn_sp32"): Do not set v3pipe.
! 	("*movsi_insn"): Likewise.
! 	("*movdi_insn_sp64"): Likewise.
! 	("*movsf_insn"): Likewise.
! 	("*movdf_insn_sp32"): Likewise.
! 	("*movdf_insn_sp64"): Likewise.
! 	("*zero_extendsidi2_insn_sp64"): Likewise.
! 	("*sign_extendsidi2_insn"): Likewise.
! 	("*mov<VM32:mode>_insn"): Likewise.
! 	("*mov<VM64:mode>_insn_sp64"): Likewise.
! 	("*mov<VM64:mode>_insn_sp32"): Likewise.
! 	("<plusminus_insn><VADDSUB:mode>3"): Likewise.
! 	("<vlop:code><VL:mode>3"): Likewise.
! 	("*not_<vlop:code><VL:mode>3"): Likewise.
! 	("*nand<VL:mode>_vis"): Likewise.
! 	("*<vlnotop:code>_not1<VL:mode>_vis"): Likewise.
! 	("*<vlnotop:code>_not2<VL:mode>_vis"): Likewise.
! 	("one_cmpl<VL:mode>2"): Likewise.
! 	("faligndata<VM64:mode>_vis"): Likewise.
! 	("alignaddrsi_vis"): Likewise.
! 	("alignaddrdi_vis"): Likweise.
! 	("alignaddrlsi_vis"): Likewise.
! 	("alignaddrldi_vis"): Likewise.
! 	("fcmp<gcond:code><GCM:gcm_name><P:mode>_vis"): Likewise.
! 	("bmaskdi_vis"): Likewise.
! 	("bmasksi_vis"): Likewise.
! 	("bshuffle<VM64:mode>_vis"): Likewise.
! 	("cmask8<P:mode>_vis"): Likewise.
! 	("cmask16<P:mode>_vis"): Likewise.
! 	("cmask32<P:mode>_vis"): Likewise.
! 	("pdistn<P:mode>_vis"): Likewise.
! 	("<vis3_addsub_ss_patname><VASS:mode>3"): Likewise.
  
! 2017-07-07  Jose E. Marchesi  <jose.marchesi@oracle.com>
  
! 	* config/sparc/sparc.md ("subtype"): New insn attribute.
! 	("*wrgsr_sp64"): Set insn subtype.
! 	("*rdgsr_sp64"): Likewise.
! 	("alignaddrsi_vis"): Likewise.
! 	("alignaddrdi_vis"): Likewise.
! 	("alignaddrlsi_vis"): Likewise.
! 	("alignaddrldi_vis"): Likewise.
! 	("<plusminus_insn><VADDSUB:mode>3"): Likewise.
! 	("fexpand_vis"): Likewise.
! 	("fpmerge_vis"): Likewise.
! 	("faligndata<VM64:mode>_vis"): Likewise.
! 	("bshuffle<VM64:mode>_vis"): Likewise.
! 	("cmask8<P:mode>_vis"): Likewise.
! 	("cmask16<P:mode>_vis"): Likewise.
! 	("cmask32<P:mode>_vis"): Likewise.
! 	("fchksm16_vis"): Likewise.
! 	("v<vis3_shift_patname><GCM:mode>3"): Likewise.
! 	("fmean16_vis"): Likewise.
! 	("fp<plusminus_insn>64_vis"): Likewise.
! 	("<plusminus_insn>v8qi3"): Likewise.
! 	("<vis3_addsub_ss_patname><VASS:mode>3"): Likewise.
! 	("<vis4_minmax_patname><VMMAX:mode>3"): Likewise.
! 	("<vis4_uminmax_patname><VMMAX:mode>3"): Likewise.
! 	("<vis3_addsub_ss_patname>v8qi3"): Likewise.
! 	("<vis4_addsub_us_patname><VAUS:mode>3"): Likewise.
! 	("*movqi_insn"): Likewise.
! 	("*movhi_insn"): Likewise.
! 	("*movsi_insn"): Likewise.
! 	("movsi_pic_gotdata_op"): Likewise.
! 	("*movdi_insn_sp32"): Likewise.
! 	("*movdi_insn_sp64"): Likewise.
! 	("movdi_pic_gotdata_op"): Likewise.
! 	("*movsf_insn"): Likewise.
! 	("*movdf_insn_sp32"): Likewise.
! 	("*movdf_insn_sp64"): Likewise.
! 	("*zero_extendhisi2_insn"): Likewise.
! 	("*zero_extendqihi2_insn"): Likewise.
! 	("*zero_extendqisi2_insn"): Likewise.
! 	("*zero_extendqidi2_insn"): Likewise.
! 	("*zero_extendhidi2_insn"): Likewise.
! 	("*zero_extendsidi2_insn_sp64"): Likewise.
! 	("ldfsr"): Likewise.
! 	("prefetch_64"): Likewise.
! 	("prefetch_32"): Likewise.
! 	("tie_ld32"): Likewise.
! 	("tie_ld64"): Likewise.
! 	("*tldo_ldub_sp32"): Likewise.
! 	("*tldo_ldub1_sp32"): Likewise.
! 	("*tldo_ldub2_sp32"): Likewise.
! 	("*tldo_ldub_sp64"): Likewise.
! 	("*tldo_ldub1_sp64"): Likewise.
! 	("*tldo_ldub2_sp64"): Likewise.
! 	("*tldo_ldub3_sp64"): Likewise.
! 	("*tldo_lduh_sp32"): Likewise.
! 	("*tldo_lduh1_sp32"): Likewise.
! 	("*tldo_lduh_sp64"): Likewise.
! 	("*tldo_lduh1_sp64"): Likewise.
! 	("*tldo_lduh2_sp64"): Likewise.
! 	("*tldo_lduw_sp32"): Likewise.
! 	("*tldo_lduw_sp64"): Likewise.
! 	("*tldo_lduw1_sp64"): Likewise.
! 	("*tldo_ldx_sp64"): Likewise.
! 	("*mov<VM32:mode>_insn"): Likewise.
! 	("*mov<VM64:mode>_insn_sp64"): Likewise.
! 	("*mov<VM64:mode>_insn_sp32"): Likewise.
  
! 2017-07-07  Jose E. Marchesi  <jose.marchesi@oracle.com>
  
! 	* config/sparc/sparc.md ("type"): New insn type viscmp.
! 	("fcmp<gcond:code><GCM:gcm_name><P:mode>_vis"): Set insn type to
! 	viscmp.
! 	("fpcmp<gcond:code>8<P:mode>_vis"): Likewise.
! 	("fucmp<gcond:code>8<P:mode>_vis"): Likewise.
! 	("fpcmpu<gcond:code><GCM:gcm_name><P:mode>_vis"): Likewise.
! 	* config/sparc/niagara7.md ("n7_vis_logical_v3pipe"): Handle
! 	viscmp.
! 	("n7_vis_logical_11cycle"): Likewise.
! 	* config/sparc/niagara4.md ("n4_vis_logical"): Likewise.
! 	* config/sparc/niagara2.md ("niag3_vis": Likewise.
! 	* config/sparc/niagara.md ("niag_vis"): Likewise.
! 	* config/sparc/ultra3.md ("us3_fga"): Likewise.
! 	* config/sparc/ultra1_2.md ("us1_fga_double"): Likewise.
  
! 2017-07-07  Jose E. Marchesi  <jose.marchesi@oracle.com>
  
! 	* config/sparc/sparc.md: New instruction type `bmask'.
! 	(bmaskdi_vis): Use the `bmask' type.
! 	(bmasksi_vis): Likewise.
! 	* config/sparc/ultra3.md (us3_array): Likewise.
! 	* config/sparc/niagara7.md (n7_array): Likewise.
! 	* config/sparc/niagara4.md (n4_array): Likewise.
! 	* config/sparc/niagara2.md (niag2_vis): Likewise.
! 	(niag3_vis): Likewise.
! 	* config/sparc/niagara.md (niag_vis): Likewise.
  
! 2017-07-05  Georg-Johann Lay  <avr@gjlay.de>
  
! 	Backport from 2017-07-05 trunk r249995.
  
! 	PR target/81305
! 	* config/avr/avr.c (avr_out_movhi_mr_r_xmega) [CONSTANT_ADDRESS_P]:
! 	Don't depend on "optimize > 0".
! 	(out_movhi_r_mr, out_movqi_mr_r): Same.
! 	(out_movhi_mr_r, out_movqi_r_mr): Same.
! 	(avr_address_cost) [CONSTANT_ADDRESS_P]: Don't depend cost for
! 	io_address_operand on "optimize > 0".
  
! 2017-07-04  Uros Bizjak  <ubizjak@gmail.com>
  
! 	PR target/81300
! 	* config/i386/i386.md (setcc + movzbl/and to xor + setcc peepholes):
! 	Require dead FLAGS_REG at the beginning of a peephole.
  
! 2017-07-04  Uros Bizjak  <ubizjak@gmail.com>
  
! 	PR target/81294
! 	* config/i386/adxintrin.h (_subborrow_u32): Swap _X and _Y
! 	arguments in the call to __builtin_ia32_sbb_u32.
! 	(_subborrow_u64): Swap _X and _Y arguments in the call to
! 	__builtin_ia32_sbb_u64.
  
! 2017-07-03  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	Backport from trunk:
  
! 	2017-06-15  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	* config/rs6000/rs6000.md (add<mode>3): Use reg_or_subregno instead
! 	of REGNO.
  
! 2017-07-03  Tom de Vries  <tom@codesourcery.com>
  
! 	backport from mainline:
! 	PR tree-optimization/81192
! 	2017-07-03  Tom de Vries  <tom@codesourcery.com>
  
! 	* tree-ssa-tail-merge.c (same_succ_flush_bb): Handle
! 	BB_SAME_SUCC (bb) == NULL.
  
! 2017-06-29  Michael Meissner  <meissner@linux.vnet.ibm.com>
  
! 	Backport from mainline
! 	2017-06-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
  
! 	PR target/80510
! 	* config/rs6000/rs6000.md (ALTIVEC_DFORM): Do not allow DImode in
! 	32-bit, since indexed is not valid for DImode.
! 	(mov<mode>_hardfloat32): Reorder ISA 2.07 load/stores before ISA
! 	3.0 d-form load/stores to be the same as mov<mode>_hardfloat64.
! 	(define_peephole2 for Altivec d-form load): Add 32-bit support.
! 	(define_peephole2 for Altivec d-form store): Likewise.
  
! 	Backport from mainline
! 	2017-06-20  Michael Meissner  <meissner@linux.vnet.ibm.com>
  
! 	PR target/79799
! 	* config/rs6000/rs6000.c (rs6000_expand_vector_init): Add support
! 	for doing vector set of SFmode on ISA 3.0.
! 	* config/rs6000/vsx.md (vsx_set_v4sf_p9): Likewise.
! 	(vsx_set_v4sf_p9_zero): Special case setting 0.0f to a V4SF
! 	element.
! 	(vsx_insert_extract_v4sf_p9): Add an optimization for inserting a
! 	SFmode value into a V4SF variable that was extracted from another
! 	V4SF variable without converting the element to double precision
! 	and back to single precision vector format.
! 	(vsx_insert_extract_v4sf_p9_2): Likewise.
  
! 2017-06-29  Richard Biener  <rguenther@suse.de>
  
! 	Backport from mainline
! 	2017-06-19  Richard Biener  <rguenther@suse.de>
  
! 	PR ipa/81112
! 	* ipa-prop.c (find_constructor_constant_at_offset): Handle
! 	RANGE_EXPR conservatively.
  
! 2017-06-28  Richard Biener  <rguenther@suse.de>
  
! 	Backport from mainline
! 	2017-06-09  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/81007
! 	* ipa-polymorphic-call.c
! 	(ipa_polymorphic_call_context::restrict_to_inner_class):
! 	Skip FIELD_DECLs with error_mark_node type.
! 	* passes.def (all_lowering_passes): Run pass_build_cgraph_edges
! 	last again.
  
! 	2017-06-14  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/81083
! 	* tree-ssa-sccvn.c (vn_reference_lookup_3): Do not use abnormals
! 	as values.
  
! 2017-06-27  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	Backports from trunk:
  
! 	2017-05-17  Segher Boessenkool  <segher@kernel.crashing.org>
! 	PR middle-end/80692
! 	* real.c (do_compare): Give decimal_do_compare preference over
! 	comparing just the signs.
  
! 	2017-05-31  Segher Boessenkool  <segher@kernel.crashing.org>
! 	PR target/80618
! 	* config/rs6000/vector.md (*vector_uneq<mode>): Write the nor in the
! 	splitter result in the canonical way.
  
! 	2017-06-09  Segher Boessenkool  <segher@kernel.crashing.org>
! 	PR target/80966
! 	* config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Assert that
! 	gen_add3_insn did not fail.
! 	* config/rs6000/rs6000.md (add<mode>3): If asked to add a constant to
! 	r0, construct that number in a temporary reg and add that reg to r0.
! 	If asked to put the result in r0 as well, fail.
  
! 	2017-06-23  Segher Boessenkool  <segher@kernel.crashing.org>
! 	PR middle-end/80902
! 	* builtins.c (expand_builtin_atomic_fetch_op): If emitting code after
! 	a call, force the call to not be a tail call.
  
! 2017-06-27  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR sanitizer/81209
! 	* ubsan.c (ubsan_encode_value): Initialize DECL_CONTEXT on var.
  
! 	PR middle-end/81207
! 	* gimple-fold.c (replace_call_with_call_and_fold): Handle
! 	gimple_vuse copying separately from gimple_vdef copying.
  
! 2017-06-24  Jim Wilson  <jim.wilson@linaro.org>
  
! 	* config/aarch64/aarch64-cost-tables.h (qdf24xx_extra_costs): Move to
! 	here.
! 	* config/arm/aarch-cost-tables.h (qdf24xx_extra_costs): From here.
! 	* config/arm/arm-cpu-cdata.h: Regenerate.
! 	* config/arm/arm-cpu-data.h, config/arm/arm-cpu.h: Likewise.
! 	* config/arm/arm-tables.opt, config/arm/arm-tune.md: Likewise.
! 	* config/arm/arm-cpus.in: Delete falkor and qdf24xx entries.
! 	* config/arm/arm.c (arm_qdf24xx_tune): Delete.
! 	* config/arm/bpabi.h (BE8_LINK_SPEC): Delete falkor and qdf24xx
! 	support.
! 	* config/arm/t-aprofile (MULTILIB_MATCHES): Delete falkor and qdf24xx
! 	support.
! 	* config/arm/t-rmprofile: Likewise.
! 	* doc/invoke.texi (ARM Options): Drop falkor and qdf24xx support.
  
! 2017-06-24  Marek Polacek  <polacek@redhat.com>
  
! 	Backport from mainline
! 	2017-05-04  Marek Polacek  <polacek@redhat.com>
  
! 	PR tree-optimization/80612
! 	* calls.c (get_size_range): Check for INTEGRAL_TYPE_P.
  
! 2017-06-23  Thomas Preud'homme  <thomas.preudhomme@arm.com>
  
! 	Backport from mainline
! 	2017-05-04  Prakhar Bahuguna  <prakhar.bahuguna@arm.com>
  
! 	* config/arm/arm-builtins.c (arm_init_builtins): Rename
! 	__builtin_arm_ldfscr to __builtin_arm_get_fpscr, and rename
! 	__builtin_arm_stfscr to __builtin_arm_set_fpscr.
  
! 2017-06-23  Jonathan Wakely  <jwakely@redhat.com>
  
! 	PR c++/81187
! 	* doc/invoke.texi (-Wnoexcept-type): Fix name of option, from
! 	-Wnoexcept.
  
! 2017-06-22  Martin Liska  <mliska@suse.cz>
  
! 	Backport from mainline
! 	2017-06-19  Martin Liska  <mliska@suse.cz>
  
! 	PR sanitizer/80879
! 	* gimplify.c (gimplify_switch_expr):
! 	Initialize live_switch_vars for SWITCH_BODY == STATEMENT_LIST.
  
! 2017-06-22  Martin Liska  <mliska@suse.cz>
  
! 	Backport from mainline
! 	2017-05-31  Martin Liska  <mliska@suse.cz>
  
! 	PR target/79155
! 	* config/i386/cpuid.h: Fix typo in a comment in cpuid.h.
  
! 2017-06-22  Martin Liska  <mliska@suse.cz>
  
! 	Backport from mainline
! 	2017-05-30  Martin Liska  <mliska@suse.cz>
  
! 	PR other/80909
! 	* auto-profile.c (get_function_decl_from_block): Fix
! 	parenthesis.
  
! 2017-06-22  Martin Liska  <mliska@suse.cz>
  
! 	Backport from mainline
! 	2017-05-26  Martin Liska  <mliska@suse.cz>
  
! 	PR ipa/80663
! 	* params.def: Bound partial-inlining-entry-probability param.
  
! 2017-06-22  Martin Liska  <mliska@suse.cz>
  
! 	Backport from mainline
! 	2017-05-16  Martin Liska  <mliska@suse.cz>
  
! 	PR ipa/79849.
! 	PR ipa/79850.
! 	* ipa-devirt.c (warn_types_mismatch): Fix typo.
! 	(odr_types_equivalent_p): Likewise.
  
! 2017-06-22  Martin Liska  <mliska@suse.cz>
  
! 	Backport from mainline
! 	2017-05-15  Martin Liska  <mliska@suse.cz>
  
! 	PR driver/31468
! 	* gcc.c (process_command): Do not allow empty argument of -o option.
  
! 2017-06-22  Martin Liska  <mliska@suse.cz>
  
! 	Backport from mainline
! 	2017-05-02  Martin Liska  <mliska@suse.cz>
  
! 	* doc/gcov.texi: Add missing preposition.
! 	* gcov.c (function_info::function_info): Properly fill up
! 	all member variables.
  
! 2017-06-22  Martin Liska  <mliska@suse.cz>
  
! 	Backport from mainline
! 	2017-05-02  Martin Liska  <mliska@suse.cz>
  
! 	PR other/80589
! 	* common.opt: Fix typo.
! 	* doc/invoke.texi: Likewise.
  
! 2017-06-22  Martin Liska  <mliska@suse.cz>
  
! 	Backport from mainline
! 	2017-04-28  Martin Liska  <mliska@suse.cz>
  
! 	* doc/gcov.texi: Enhance documentation of gcov.
  
! 2017-06-22  Martin Liska  <mliska@suse.cz>
  
! 	Backport from mainline
! 	2017-04-28  Martin Liska  <mliska@suse.cz>
  
! 	* doc/gcov.texi: Sort options in alphabetic order.
! 	* doc/gcov-dump.texi: Likewise.
! 	* doc/gcov-tool.texi: Likewise.
! 	* gcov.c (print_usage): Likewise.
! 	* gcov-dump.c (print_usage): Likewise.
! 	* gcov-tool.c (print_merge_usage_message): Likewise.
! 	(print_rewrite_usage_message): Likewise.
! 	(print_overlap_usage_message): Likewise.
  
! 2017-06-22  Martin Liska  <mliska@suse.cz>
  
! 	Backport from mainline
! 	2017-04-28  Martin Liska  <mliska@suse.cz>
  
! 	PR gcov-profile/53915
! 	* gcov.c (format_gcov): Print 'NAN %' when top > bottom.
  
! 2017-06-22  Martin Liska  <mliska@suse.cz>
  
! 	Backport from mainline
! 	2017-04-28  Martin Liska  <mliska@suse.cz>
  
! 	PR driver/56469
! 	* coverage.c (coverage_remove_note_file): New function.
! 	* coverage.h: Declare the function.
! 	* toplev.c (finalize): Clean if an error has been seen.
  
! 2017-06-21  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/81151
! 	* config/i386/sse.md (round<mode>2): Renumber match_dup and
! 	operands indexes to avoid gap between operands and match_dups.
  
! 	PR c++/81130
! 	* gimplify.c (omp_add_variable): Don't force GOVD_SEEN for types
! 	with ctors/dtors if GOVD_SHARED is set.
  
! 	Backported from mainline
! 	2017-06-20  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/81121
! 	* config/i386/i386.md (TARGET_USE_VECTOR_CONVERTS float si->{sf,df}
! 	splitter): Require TARGET_SSE2 in the condition.
  
! 	PR sanitizer/81125
! 	* ubsan.h (ubsan_encode_value): Workaround buggy clang++ parser
! 	by removing enum keyword.
! 	(ubsan_type_descriptor): Likewise.  Formatting fix.
  
! 	2017-06-19  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR sanitizer/81125
! 	* ubsan.h (enum ubsan_encode_value_phase): New.
! 	(ubsan_encode_value): Change second argument to
! 	enum ubsan_encode_value_phase with default value of
! 	UBSAN_ENCODE_VALUE_GENERIC.
! 	* ubsan.c (ubsan_encode_value): Change second argument to
! 	enum ubsan_encode_value_phase PHASE from bool IN_EXPAND_P,
! 	adjust uses, for UBSAN_ENCODE_VALUE_GENERIC use just
! 	create_tmp_var_raw instead of create_tmp_var and use a
! 	TARGET_EXPR.
! 	(ubsan_expand_bounds_ifn, ubsan_build_overflow_builtin,
! 	instrument_bool_enum_load, ubsan_instrument_float_cast): Adjust
! 	ubsan_encode_value callers.
  
! 	PR sanitizer/81111
! 	* ubsan.c (ubsan_encode_value): If current_function_decl is NULL,
! 	use create_tmp_var_raw instead of create_tmp_var, mark it addressable
! 	just by setting TREE_ADDRESSABLE on the result and use a TARGET_EXPR.
  
! 2017-06-20  James Greenhalgh  <james.greenhalgh@arm.com>
  
! 	Backport from Mainline
! 	* config/aarch64/aarch64-option-extensions.def (fp16): Fix expected
! 	feature string.
  
! 2017-06-20  Andreas Schwab  <schwab@suse.de>
  
! 	PR target/80970
! 	* config/m68k/m68k.md (bsetdreg, bchgdreg, bclrdreg): Use "=d"
! 	instead of "+d".
  
! 2017-06-19  James Greenhalgh  <james.greenhalgh@arm.com>
  
! 	Backport from mainline
! 	2017-06-19  James Greenhalgh  <james.greenhalgh@arm.com>
  
! 	PR target/71778
! 	* config/arm/arm-builtins.c (arm_expand_builtin_args): Return TARGET
! 	if given a non-constant argument for an intrinsic which requires a
! 	constant.
  
! 2017-06-19  Alexander Monakov  <amonakov@ispras.ru>
  
! 	* doc/invoke.texi (mcx16): Rewrite.
  
! 2017-06-15  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR rtl-optimization/80474
! 	* reorg.c (update_block): Do not ignore instructions in a delay slot.
  
! 2017-06-14  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* config/sparc/sparc.h (MASK_ISA): Add MASK_LEON and MASK_LEON3.
! 	(MASK_FEATURES): New macro.
! 	* config/sparc/sparc.c (sparc_option_override): Remove the special
! 	handling of -mfpu and generalize it to all MASK_FEATURES switches.
  
! 2017-06-14  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* config/sparc/driver-sparc.c (cpu_names): Add SPARC-T5 entry.
  
! 2017-06-12  David S. Miller  <davem@davemloft.net>
  
! 	PR target/80968
! 	* config/sparc/sparc.md (return expander): Emit frame blockage if
! 	function uses alloca.
  
! 2017-06-08  Uros Bizjak  <ubizjak@gmail.com>
  
! 	PR target/81015
! 	Revert:
! 	2016-12-14  Uros Bizjak  <ubizjak@gmail.com>
  
! 	PR target/59874
! 	* config/i386/i386.md (*ctzhi2): New insn_and_split pattern.
! 	(*clzhi2): Ditto.
  
! 2017-06-08  David Edelsohn  <dje.gcc@gmail.com>
  
! 	Backport from mainline
! 	2017-06-02  David Edelsohn  <dje.gcc@gmail.com>
  
! 	* dwarf2out.c (DWARF_INITIAL_LENGTH_SIZE_STR): New.
! 	(dl_section_ref): New.
! 	(dwarf2out_finish): Copy debug_line_section_label to dl_section_ref.
! 	On AIX, append an expression to subtract the size of the
! 	section length to dl_section_ref.
  
! 2017-06-07  Richard Biener  <rguenther@suse.de>
  
! 	Backport from mainline
! 	2017-05-02  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/80549
! 	* tree-cfgcleanup.c (mfb_keep_latches): New helper.
! 	(cleanup_tree_cfg_noloop): Create forwarders to known loop
! 	headers if they do not have a preheader.
  
! 	2017-05-26  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/80842
! 	* tree-ssa-ccp.c (set_lattice_value): Always meet with the old
! 	value.
  
! 	2017-05-31  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/80906
! 	* graphite-isl-ast-to-gimple.c (copy_loop_close_phi_nodes): Get
! 	and pass through iv_map.
! 	(copy_bb_and_scalar_dependences): Adjust.
! 	(translate_pending_phi_nodes): Likewise.
! 	(copy_loop_close_phi_args): Handle code-generating IVs instead
! 	of ICEing.
  
! 	2017-05-11  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/80705
! 	* tree-vect-data-refs.c (vect_analyze_data_refs): DECL_NONALIASED
! 	bases are not vectorizable.
  
! 2017-06-06  Michael Meissner  <meissner@linux.vnet.ibm.com>
  
! 	Back port from mainline
! 	2017-05-19  Michael Meissner  <meissner@linux.vnet.ibm.com>
  
! 	PR target/80718
! 	* config/rs6000/vsx.md (vsx_splat_<mode>, VSX_D iterator): Prefer
! 	VSX registers over GPRs, particularly on ISA 2.07 which does not
! 	have the MTVSRDD instruction.
  
! 2017-06-06  David S. Miller  <davem@davemloft.net>
  
! 	PR target/80968
! 	* config/sparc/sparc.c (sparc_expand_prologue): Emit frame
! 	blockage if function uses alloca.
  
! 2017-06-05  Volker Reichelt  <v.reichelt@netcologne.de>
  
! 	* doc/invoke.texi (-Wduplicated-branches): Add to warning list.
  
! 2017-06-02  Prakhar Bahuguna  <prakhar.bahuguna@arm.com>
  
! 	Backport from mainline
! 	2017-05-05  Andre Vieira  <andre.simoesdiasvieira@arm.com>
! 		    Prakhar Bahuguna  <prakhar.bahuguna@arm.com>
  
! 	PR target/71607
! 	* config/arm/arm.md (use_literal_pool): Remove.
! 	(64-bit immediate split): No longer takes cost into consideration
! 	if arm_disable_literal_pool is enabled.
! 	* config/arm/arm.c (arm_tls_referenced_p): Add diagnostic if TLS is
! 	used when arm_disable_literal_pool is enabled.
! 	(arm_max_const_double_inline_cost): Remove use of
! 	arm_disable_literal_pool.
! 	(push_minipool_fix): Add assert.
! 	(arm_reorg): Add return if arm_disable_literal_pool is enabled.
! 	* config/arm/vfp.md (no_literal_pool_df_immediate): New.
! 	(no_literal_pool_sf_immediate): New.
  
! 2017-06-02  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR rtl-optimization/80903
! 	* loop-doloop.c (add_test): Unshare sequence.
  
! 2017-05-31  Martin Jambor  <mjambor@suse.cz>
  
! 	Backport from mainline
! 	2017-04-24  Martin Jambor  <mjambor@suse.cz>
  
! 	PR tree-optimization/80293
! 	* tree-sra.c (scalarizable_type_p): New parameter const_decl, make
! 	char arrays not totally scalarizable if it is false.
! 	(analyze_all_variable_accesses): Pass correct value in the new
! 	parameter.  Add a statistics counter.
  
! 2017-05-30  Max Filippov  <jcmvbkbc@gmail.com>
  
! 	Backport from mainline
! 	2017-05-29  Max Filippov  <jcmvbkbc@gmail.com>
  
! 	* config/xtensa/xtensa.c (xtensa_emit_call): Use
! 	HOST_WIDE_INT_PRINT_HEX instead of 0x%lx format string.
! 	(print_operand): Use HOST_WIDE_INT_PRINT_DEC instead of %ld
! 	format string.
  
! 2017-05-29  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* doc/install.texi (Options specification): Restore entry of
! 	--enable-sjlj-exceptions.
  
! 2017-05-29  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
  
! 	Backport from mainline
! 	2017-05-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
  
! 	PR target/80725
! 	* config/s390/s390.c (s390_check_qrst_address): Check incoming
! 	address against address_operand predicate.
! 	* config/s390/s390.md ("*indirect_jump"): Swap alternatives.
  
! 2017-05-28  Uros Bizjak  <ubizjak@gmail.com>
  
! 	Backport from mainline
! 	2017-05-23  Uros Bizjak  <ubizjak@gmail.com>
  
! 	* config/i386/i386.md (*movdi_internal): Remove SSE4
! 	alternative 18 (?r, *v).  Update insn attributes.
! 	(*movsi_internal): Remove SSE4 alternative 13 (?r, *v).
! 	Update insn attributes.
! 	(*zero_extendsidi2): Remove SSE4 alternative (?r, *x).
! 	Update insn attributes.
! 	* config/i386/sse.md (vec_extract<ssevecmodelower>_0): Remove SSE4
! 	alternative 1 (r, v). Remove isa attribute.
! 	* config/i386/i386.c (dimode_scalar_chain::make_vector_copies):
! 	Always move value through stack for !TARGET_INTER_UNIT_MOVES_TO_VEC
! 	and !TARGET_INTER_UNIT_MOVES_TO_VEC targets.
  
! 	2017-05-16  Uros Bizjak  <ubizjak@gmail.com>
  
! 	* config/i386/i386.md (*movsi_internal): Split (?rm,*y) alternative
! 	to (?r,*Yn) and (?m,*y) alternatives, and (?*y,rm) to (?*Ym,r)
! 	and (?*y,m).  Update insn attributes.
  
! 2017-05-26  Sheldon Lobo  <smlobo@sheldon.us.oracle.com>
  
! 	Backported from mainline
! 	2017-05-24  Sheldon Lobo  <smlobo@sheldon.us.oracle.com>
  
! 	* config/sparc/sparc.md (length): Return the correct value for -mflat
! 	sibcalls to match output_sibcall.
  
! 2017-05-26  Marek Polacek  <polacek@redhat.com>
  
! 	Backported from mainline
! 	2017-05-26  Marek Polacek  <polacek@redhat.com>
  
! 	PR sanitizer/80875
! 	* fold-const.c (fold_binary_loc) <case MULT_EXPR>: Check if OP1
! 	can be negated.
  
! 2017-05-26  Jakub Jelinek  <jakub@redhat.com>
  
! 	Backported from mainline
! 	2017-05-22  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/80809
! 	* omp-low.c (finish_taskreg_remap): New function.
! 	(finish_taskreg_scan): If unit size of ctx->record_type
! 	is non-constant, unshare the size expression and replace
! 	decls in it with possible outer var refs.
  
! 	PR middle-end/80809
! 	* gimplify.c (omp_add_variable): For GOVD_DEBUG_PRIVATE use
! 	GOVD_SHARED rather than GOVD_PRIVATE with it.
! 	(gimplify_adjust_omp_clauses_1, gimplify_adjust_omp_clauses): Expect
! 	GOVD_SHARED rather than GOVD_PRIVATE with GOVD_DEBUG_PRIVATE.
  
! 	PR middle-end/80853
! 	* omp-low.c (lower_reduction_clauses): Pass OMP_CLAUSE_PRIVATE
! 	as last argument to build_outer_var_ref for pointer bases of array
! 	section reductions.
  
! 2017-05-25  Michael Meissner  <meissner@linux.vnet.ibm.com>
  
! 	Backport from trunk
! 	2017-05-18  Michael Meissner  <meissner@linux.vnet.ibm.com>
  
! 	PR target/80510
! 	* config/rs6000/predicates.md (simple_offsettable_mem_operand):
! 	New predicate.
  
! 	* config/rs6000/rs6000.md (ALTIVEC_DFORM): New iterator.
! 	(define_peephole2 for Altivec d-form load): Add peepholes to catch
! 	cases where the register allocator uses a move and an offsettable
! 	memory operation to/from a FPR register on ISA 2.06/2.07.
! 	(define_peephole2 for Altivec d-form store): Likewise.
  
! 	Backport from trunk
! 	2017-05-09  Michael Meissner  <meissner@linux.vnet.ibm.com>
  
! 	PR target/68163
! 	* config/rs6000/rs6000.md (f32_lr): Delete mode attributes that
! 	are now unused after splitting mov{sf,sd}_hardfloat.
! 	(f32_lr2): Likewise.
! 	(f32_lm): Likewise.
! 	(f32_lm2): Likewise.
! 	(f32_li): Likewise.
! 	(f32_li2): Likewise.
! 	(f32_lv): Likewise.
! 	(f32_sr): Likewise.
! 	(f32_sr2): Likewise.
! 	(f32_sm): Likewise.
! 	(f32_sm2): Likewise.
! 	(f32_si): Likewise.
! 	(f32_si2): Likewise.
! 	(f32_sv): Likewise.
! 	(f32_dm): Likewise.
! 	(f32_vsx): Likewise.
! 	(f32_av): Likewise.
! 	(mov<mode>_hardfloat): Split into separate movsf and movsd pieces.
! 	For movsf, order stores so the VSX stores occur before the GPR
! 	store which encourages the register allocator to use a traditional
! 	FPR instead of a GPR.  For movsd, order the stores so that the GPR
! 	store comes before the VSX stores to allow the power6 to work.
! 	This is due to the power6 not having a 32-bit integer store
! 	instruction from a FPR.
! 	(movsf_hardfloat): Likewise.
! 	(movsd_hardfloat): Likewise.
  
! 2017-05-25  Wilco Dijkstra  <wdijkstr@arm.com>
  
! 	Backport from mainlin
! 	PR rtl-optimization/80754
! 	* lra-remat.c (do_remat): Add overlap checks for dst_regno.
  
! 2017-05-25  Wilco Dijkstra  <wdijkstr@arm.com>
  
! 	Backport from mainline
! 	PR target/80671
! 	* config/aarch64/cortex-a57-fma-steering.c (merge_forest):
! 	Move member access before delete.
  
! 2017-05-23  Sheldon Lobo  <sheldon.lobo@oracle.com>
  
! 	Backport from mainline
! 	2017-05-18  Sheldon Lobo  <sheldon.lobo@oracle.com>
  
! 	* config/sparc/sparc.c (sparc_option_override): Set function
! 	alignment for -mcpu=niagara7 to 64 to match the I$ line.
! 	* config/sparc/sparc.h (BRANCH_COST): Set the SPARC M7 branch
! 	latency to 1.
! 	* config/sparc/sparc.h (BRANCH_COST): Set the SPARC T4 branch
! 	latency to 2.
! 	* config/sparc/sol2.h: Fix a ASM_CPU32_DEFAULT_SPEC typo.
  
! 2017-05-19  Uros Bizjak  <ubizjak@gmail.com>
  
! 	Backport from mainline
! 	2017-05-18  Uros Bizjak  <ubizjak@gmail.com>
  
! 	PR target/80799
! 	* config/i386/mmx.md (*mov<mode>_internal): Enable
! 	alternatives 11, 12, 13 and 14 also for 32bit targets.
! 	Remove alternatives 15, 16, 17 and 18.
! 	* config/i386/sse.md (vec_concatv2di): Change
! 	alternative (!x, *y) to (x, ?!*Yn).
  
! 2017-05-14  Uros Bizjak  <ubizjak@gmail.com>
  
! 	Backport from mainline
! 	2017-05-11  Uros Bizjak  <ubizjak@gmail.com>
  
! 	PR target/80706
! 	* config/i386/sync.md (UNSPEC_LDX_ATOMIC): New unspec.
! 	(UNSPEC_STX_ATOMIC): Ditto.
! 	(loaddi_via_sse): New insn.
! 	(storedi_via_sse): Ditto.
! 	(atomic_loaddi_fpu): Emit loaddi_via_sse and storedi_via_sse.
! 	Update corresponding peephole2 patterns.
! 	(atomic_storedi_fpu): Ditto.
  
! 2017-05-13  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
  
! 	Backport from mainline
! 	2017-05-05  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
  
! 	* config/rs6000/rs6000.c (rs6000_vect_nonmem): New static var.
! 	(rs6000_init_cost): Initialize rs6000_vect_nonmem.
! 	(rs6000_add_stmt_cost): Update rs6000_vect_nonmem.
! 	(rs6000_finish_cost): Avoid vectorizing simple copy loops with
! 	VF=2 that require versioning.
  
! 2017-05-12  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
  
! 	Backport from mainline
! 	2017-05-10  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
  
! 	* config/rs6000/rs6000.c (altivec_init_builtins): Define POWER8
! 	built-ins for vec_xl and vec_xst with short and char pointer
! 	arguments.
  
! 2017-05-10  John David Anglin  <danglin@gcc.gnu.org>
  
! 	PR target/80090
! 	* config/pa/pa.c (pa_assemble_integer): When outputting a SYMBOL_REF,
! 	handle calling assemble_external ourself.
  
! 	PR target/79027
! 	* config/pa/pa.c (pa_cannot_change_mode_class): Reject changes to/from
! 	modes with zero size.  Enhance comment.
  
! 2017-05-09  Michael Meissner  <meissner@linux.vnet.ibm.com>
  
! 	Back port from mainline
! 	2017-05-05  Michael Meissner  <meissner@linux.vnet.ibm.com>
  
! 	PR target/79038
! 	PR target/79202
! 	PR target/79203
! 	* config/rs6000/rs6000.md (u code attribute): Add FIX and
! 	UNSIGNED_FIX.
! 	(extendsi<mode>2): Add support for doing sign extension via
! 	VUPKHSW and XXPERMDI if the value is in Altivec registers and we
! 	don't have ISA 3.0 instructions.
! 	(extendsi<mode>2 splitter): Likewise.
! 	(fix_trunc<mode>si2): If we are at ISA 2.07 (VSX small integer),
! 	generate the normal insns since SImode can now go in vector
! 	registers.  Disallow the special UNSPECs needed for previous
! 	machines to hide SImode being used.  Add new insns
! 	fctiw{,w}_<mode>_smallint if SImode can go in vector registers.
! 	(fix_trunc<mode>si2_stfiwx): Likewise.
! 	(fix_trunc<mode>si2_internal): Likewise.
! 	(fixuns_trunc<mode>si2): Likewise.
! 	(fixuns_trunc<mode>si2_stfiwx): Likewise.
! 	(fctiw<u>z_<mode>_smallint): Likewise.
! 	(fctiw<u>z_<mode>_mem): New combiner pattern to prevent conversion
! 	of floating point to 32-bit integer from doing a direct move to
! 	the GPR registers to do a store.
! 	(fctiwz_<mode>): Break long line.
  
! 2017-05-08  Tamar Christina  <tamar.christina@arm.com>
  
! 	PR middle-end/79665
! 	* expr.c (expand_expr_real_2): Move TRUNC_MOD_EXPR, FLOOR_MOD_EXPR,
! 	CEIL_MOD_EXPR, ROUND_MOD_EXPR cases.
  
! 2017-05-03  Jan Beulich  <jbeulich@suse.com>
  
! 	Backport from mainline
! 	2017-05-01  Jan Beulich  <jbeulich@suse.com>
  
! 	* config/i386/sse.md (xop_vpermil2<mode>3): Do not allow operand
! 	swapping, add (x,x,m,x,n) alternative.
  
! 2017-05-03  Richard Biener  <rguenther@suse.de>
  
! 	Backport from mainline
! 	2017-04-20  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/80453
! 	* tree-ssa-sccvn.h (struct vn_phi_s): Add cclhs and ccrhs members.
! 	* tree-ssa-sccvn.c (cond_stmts_equal_p): Use recorded lhs and rhs
! 	from the conditions.
! 	(vn_phi_eq): Pass them down.
! 	(vn_phi_lookup): Record them.
! 	(vn_phi_insert): Likewise.
  
! 	2017-04-25  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/80492
! 	* alias.c (compare_base_decls): Handle registers with asm
! 	specification conservatively.
  
! 	2017-04-27  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/80539
! 	* tree-chrec.c (chrec_fold_plus_poly_poly): Deal with not
! 	being in loop-closed SSA form conservatively.
! 	(chrec_fold_multiply_poly_poly): Likewise.
  
! 2017-05-02  Uros Bizjak  <ubizjak@gmail.com>
  
! 	Backport from mainline
! 	2017-05-01  Uros Bizjak  <ubizjak@gmail.com>
  
! 	PR target/68491
! 	* config/i386/cpuid.h (__get_cpuid): Always return 0 when
! 	__get_cpuid_max returns 0.
! 	(__get_cpuid_count): Ditto.
  
! 2017-05-02  Jakub Jelinek <jakub@redhat.com>
  
! 	Backported from mainline
! 	2017-04-25 Jakub Jelinek <jakub@redhat.com>
  
! 	* Makefile.in (s-options): Invoke opt-gather.awk with LC_ALL=C in the
! 	environment.
  
! 2017-05-02  Jakub Jelinek  <jakub@redhat.com>
  
! 	* BASE-VER: Set to 7.1.1.
  
! 2017-05-02  Release Manager
  
! 	* GCC 7.1.0 released.
  
! 2017-05-02  Richard Biener  <rguenther@suse.de>
  
- 	PR tree-optimization/80591
  	Revert
! 	2017-04-10  Richard Biener  <rguenther@suse.de>
! 
! 	* tree-ssa-structalias.c (find_func_aliases): Properly handle
! 	asm inputs.
! 
! 2017-04-28  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR bootstrap/80531
! 	* cgraph.h (symtab_node::debug_symtab): No longer inline.
! 	* symtab.c (symtab_node::debug_symtab): Move definition here.
! 
! 2017-04-27  Richard Earnshaw  <rearnsha@arm.com>
! 
! 	PR target/80530
! 	* config/aarch64/aarch64.c (aarch64_emit_approx_sqrt): Ensure
! 	that the logic for permitting reciprocal estimates matches that
! 	in use_rsqrt_p.
! 
! 2017-04-27  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR c++/80534
! 	* tree.c (type_cache_hasher::equal): Only compare
! 	TYPE_TYPELESS_STORAGE flag on non-aggregate element types.
! 	(build_array_type_1): Only hash TYPE_TYPELESS_STORAGE flag on
! 	non-aggregate element types.
! 	* tree.h (TYPE_TYPELESS_STORAGE): Fix comment typo, add more details
! 	about the flag on ARRAY_TYPEs in the comment, formatting fix.
! 
! 	PR target/79430
! 	* reg-stack.c (emit_swap_insn): If i1src mentions the stack pointer,
! 	punt if tmp contains autoinc of stack pointer.
! 
! 	PR target/77728
! 	* config/aarch64/aarch64.c (struct aarch64_fn_arg_alignment): Remove.
! 	(aarch64_function_arg_alignment): Return unsigned int again, but still
! 	ignore TYPE_FIELDS chain decls other than FIELD_DECLs.
! 	(aarch64_layout_arg): Adjust aarch64_function_arg_alignment caller.
! 	Don't emit -Wpsabi note.
! 	(aarch64_function_arg_boundary): Likewise.
! 	(aarch64_gimplify_va_arg_expr): Adjust aarch64_function_arg_alignment
! 	caller.
! 
! 2017-04-25  Martin Sebor  <msebor@redhat.com>
! 
! 	PR tree-optimization/80497
! 	* gimple-ssa-sprintf.c (get_int_range): Avoid assuming all integer
! 	constants are representable in HOST_WIDE_INT.
! 	(parse_directive): Ditto.
! 
! 2017-04-25  Marek Polacek  <polacek@redhat.com>
! 
! 	2017-04-25  Marek Polacek  <polacek@redhat.com>
! 	Backport from mainline
! 
! 	PR sanitizer/80349
! 	* fold-const.c (fold_binary_loc) <case BIT_IOR_EXPR>: Convert arg0's
! 	first argument to type.
! 
! 2017-04-25  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
! 	    Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR target/77728
! 	* config/arm/arm.c: Include gimple.h.
! 	(aapcs_layout_arg): Emit -Wpsabi note if arm_needs_doubleword_align
! 	returns negative, increment ncrn only if it returned positive.
! 	(arm_needs_doubleword_align): Return int instead of bool,
! 	ignore DECL_ALIGN of non-FIELD_DECL TYPE_FIELDS chain
! 	members, but if there is any such non-FIELD_DECL
! 	> PARM_BOUNDARY aligned decl, return -1 instead of false.
! 	(arm_function_arg): Emit -Wpsabi note if arm_needs_doubleword_align
! 	returns negative, increment nregs only if it returned positive.
! 	(arm_setup_incoming_varargs): Likewise.
! 	(arm_function_arg_boundary): Emit -Wpsabi note if
! 	arm_needs_doubleword_align returns negative, return
! 	DOUBLEWORD_ALIGNMENT only if it returned positive.
! 
! 2017-04-25  Bill Seurer  <seurer@linux.vnet.ibm.com>
! 
! 	Backport from mainline
! 	PR target/80482
! 	* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Change
! 	type checks to test for compatibility instead of equality.
! 
! 2017-04-25  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
! 	    Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR target/77728
! 	* config/aarch64/aarch64.c (struct aarch64_fn_arg_alignment): New
! 	type.
! 	(aarch64_function_arg_alignment): Return aarch64_fn_arg_alignment
! 	struct.  Ignore DECL_ALIGN of decls other than FIELD_DECL for
! 	the alignment computation, but return their maximum in warn_alignment.
! 	(aarch64_layout_arg): Adjust aarch64_function_arg_alignment caller.
! 	Emit a -Wpsabi note if warn_alignment is 16 bytes, but alignment
! 	is smaller.
! 	(aarch64_function_arg_boundary): Likewise.  Simplify using MIN/MAX.
! 	(aarch64_gimplify_va_arg_expr): Adjust aarch64_function_arg_alignment
! 	caller.
! 
! 2017-04-25  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
! 
! 	Backport from mainline
! 	2017-04-25  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
! 
! 	PR target/80464
! 	* config/s390/vector.md: Split MEM->GPR vector moves for
! 	non-s_operand addresses.
! 
! 2017-04-25  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
! 
! 	Backport from mainline
! 	2017-04-25  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
! 
! 	PR target/79895
! 	* config/s390/predicates.md (reload_const_wide_int_operand): New
! 	predicate.
! 	* config/s390/s390.md ("movti"): Remove d/P alternative.
! 	("movti_bigconst"): New pattern definition.
! 
! 2017-04-25  Dominik Vogt  <vogt@linux.vnet.ibm.com>
! 
! 	Backport from maineline
! 	2017-04-25  Dominik Vogt  <vogt@linux.vnet.ibm.com>
! 
! 	PR target/80080
! 	* s390-protos.h (s390_expand_cs_hqi): Removed.
! 	(s390_expand_cs, s390_expand_atomic_exchange_tdsi): New prototypes.
! 	* config/s390/s390.c (s390_emit_compare_and_swap): Handle all integer
! 	modes as well as CCZ1mode and CCZmode.
! 	(s390_expand_atomic_exchange_tdsi, s390_expand_atomic): Adapt to new
! 	signature of s390_emit_compare_and_swap.
! 	(s390_expand_cs_hqi): Likewise, make static.
! 	(s390_expand_cs_tdsi): Generate an explicit compare before trying
! 	compare-and-swap, in some cases.
! 	(s390_expand_cs): Wrapper function.
! 	(s390_expand_atomic_exchange_tdsi): New backend specific expander for
! 	atomic_exchange.
! 	(s390_match_ccmode_set): Allow CCZmode <-> CCZ1 mode.
! 	* config/s390/s390.md ("atomic_compare_and_swap<mode>"): Merge the
! 	patterns for small and large integers.  Forbid symref memory operands.
! 	Move expander to s390.c.  Require cc register.
! 	("atomic_compare_and_swap<DGPR:mode><CCZZ1:mode>_internal")
! 	("*atomic_compare_and_swap<TDI:mode><CCZZ1:mode>_1")
! 	("*atomic_compare_and_swapdi<CCZZ1:mode>_2")
! 	("*atomic_compare_and_swapsi<CCZZ1:mode>_3"): Use s_operand to forbid
! 	symref memory operands.  Remove CC mode and call s390_match_ccmode
! 	instead.
! 	("atomic_exchange<mode>"): Allow and implement all integer modes.
! 
! 2017-04-25  Dominik Vogt  <vogt@linux.vnet.ibm.com>
! 
! 	Backport from mainline
! 	2017-04-25  Dominik Vogt  <vogt@linux.vnet.ibm.com>
! 
! 	* config/s390/s390.md (define_peephole2): New peephole to help
! 	combining the load-and-test pattern with volatile memory.
! 
! 
! 2017-04-25  Dominik Vogt  <vogt@linux.vnet.ibm.com>
! 
! 	Backport from mainline
! 	2017-04-25  Dominik Vogt  <vogt@linux.vnet.ibm.com>
! 
! 	* config/s390/s390.md ("cstorecc4"): Use load-on-condition and deal
! 	with CCZmode for TARGET_Z196.
! 
! 2017-04-25  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR rtl-optimization/80501
! 	* combine.c (make_compound_operation_int): Set subreg_code to SET
! 	even for AND with mask of the sign bit of mode.
! 
! 	PR rtl-optimization/80500
! 	* loop-unroll.c (combine_var_copies_in_loop_exit): Call copy_rtx on
! 	sum's initial value.
! 
! 2017-04-24  Martin Liska  <mliska@suse.cz>
! 
! 	Backport from mainline
! 	2017-04-24  Jan Hubicka  <hubicka@ucw.cz>
! 
! 	PR middle-end/79931
! 	* ipa-devirt.c (dump_possible_polymorphic_call_targets): Fix ICE.
! 
! 2017-04-20  Alexander Monakov  <amonakov@ispras.ru>
! 
! 	Backport from mainline
! 	2017-04-20  Alexander Monakov  <amonakov@ispras.ru>
! 
! 	* omp-low.c (lower_lastprivate_clauses): Correct handling of linear
! 	and lastprivate clauses in SIMT case.
! 
! 2017-04-20  Matthew Fortune  <matthew.fortune@imgtec.com>
! 
! 	Backport from mainline
! 	2017-04-20  Matthew Fortune  <matthew.fortune@imgtec.com>
! 
! 	* config/mips/mips.c (mips_expand_vec_perm_const): Re-fix
! 	uninitialized variable warning to avoid buffer overrun.
! 
! 2017-04-20  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* DEV-PHASE: Set to prerelease.
! 
! 2017-04-20  Thomas Preud'homme  <thomas.preudhomme@arm.com>
! 
! 	* config/arm/arm.c (arm_elf_asm_cdtor): Create non-default
! 	priority .init_array and .fini_array section with SECTION_NOTYPE
! 	flag.
! 
! 2017-04-20  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR middle-end/80423
! 	* tree.h (build_array_type): Add typeless_storage default argument.
! 	* tree.c (type_cache_hasher::equal): Also compare
! 	TYPE_TYPELESS_STORAGE flag for ARRAY_TYPEs.
! 	(build_array_type): Add typeless_storage argument, set
! 	TYPE_TYPELESS_STORAGE to it, if shared also hash it, and pass to
! 	recursive call.
! 	(build_nonshared_array_type): Adjust build_array_type_1 caller.
! 	(build_array_type): Likewise.  Add typeless_storage argument.
! 
! 2017-04-19  Eric Botcazou  <ebotcazou@adacore.com>
! 	    Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR tree-optimization/80426
! 	* tree-vrp.c (extract_range_from_binary_expr_1): For an additive
! 	operation on symbolic operands, also compute the overflow for the
! 	invariant part when the operation degenerates into a negation.
! 
! 2017-04-19  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR debug/80461
! 	* dwarf2out.c (modified_type_die, gen_type_die_with_usage):
! 	Check for t with zero TYPE_QUALS_NO_ADDR_SPACE.
! 
! 	PR debug/80436
! 	* tree-ssa-loop-manip.c (find_uses_to_rename_def): Ignore debug uses.
! 
! 2017-04-19  Georg-Johann Lay  <avr@gjlay.de>
! 
! 	PR target/80462
! 	* config/avr/avr.c (tree.h): Include it.
! 	(cgraph.h): Include it.
! 	(avr_encode_section_info): Don't warn for uninitialized progmem
! 	variable if it's just an alias.
! 
! 2017-04-19  Richard Biener  <rguenther@suse.de>
! 
! 	PR ipa/65972
! 	* auto-profile.c (afdo_vpt_for_early_inline): Update SSA
! 	when needed by AutoPGO.
! 
! 2017-04-19  Paulo J. Matos  <paulo@matos-sorge.com>
! 
! 	PR lto/50345
! 	* doc/lto.texi: Remove an extra 'that'.
! 
! 2017-04-19  Segher Boessenkool  <segher@kernel.crashing.org>
! 
! 	PR rtl-optimization/80429
! 	* ira.c (split_live_ranges_for_shrink_wrap): Don't split regs that
! 	are only used in debug insns.
! 
! 2017-04-19  Eric Botcazou  <ebotcazou@adacore.com>
! 	    Vladimir Makarov  <vmakarov@redhat.com>
! 
! 	* config/sparc/predicates.md (input_operand): Add comment.  Return
! 	true for any memory operand when LRA is in progress.
! 	* config/sparc/sparc.c (sparc_expand_move): Minor formatting fix.
! 
! 2017-04-18  Jeff Law  <law@redhat.com>
! 
! 	PR target/74563
! 	* mips.md ({return,simple_return}_internal): Do not overwrite
! 	operands[0].
! 
! 2017-04-18  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR tree-optimization/80443
! 	* tree-vrp.c (intersect_ranges): For signed 1-bit precision type,
! 	instead of adding 1, subtract -1 and similarly instead of subtracting
! 	1 add -1.
! 
! 2017-04-18  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	PR rtl-optimization/80357
! 	* haifa-sched.c (tmp_bitmap): New variable.
! 	(model_recompute): Handle duplicate use records.
! 	(alloc_global_sched_pressure_data): Initialize tmp_bitmap.
! 	(free_global_sched_pressure_data): Free it.
! 
! 2017-04-18  Bernd Edlinger  <bernd.edlinger@hotmail.de>
! 
! 	Revert:
! 	2017-02-20  Bernd Edlinger  <bernd.edlinger@hotmail.de>
! 	* Makefile.in (BUILD_SYSTEM_HEADER_DIR): New make variabe.
! 	(LIMITS_H_TEST, if_multiarch, stmp-fixinc): Use BUILD_SYSTEM_HEADER_DIR
! 	instead of SYSTEM_HEADER_DIR.
! 
! 2017-04-18  Jeff Law  <law@redhat.com>
! 
! 	PR middle-end/80422
! 	* cfgcleanup.c (try_crossjump_to_edge): Verify SRC1 and SRC2 have
! 	predecessors after walking up the insn chain.
! 
! 2017-04-18  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR debug/80263
! 	* dwarf2out.c (modified_type_die): Try harder not to emit internal
! 	sizetype type into debug info.
! 
! 2017-04-18  Michael Meissner  <meissner@linux.vnet.ibm.com>
! 
! 	PR target/80099
! 	* config/rs6000/rs6000.c (rs6000_expand_vector_extract): Eliminate
! 	unneeded test for TARGET_UPPER_REGS_SF.
! 	* config/rs6000/vsx.md (vsx_extract_v4sf_var): Likewise.
! 
! 2017-04-18  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR sanitizer/80444
! 	* sancov.c (sancov_pass): Use gsi_start_nondebug_after_labels_bb
! 	instead of gsi_after_labels.
! 
! 2017-04-18  Jeff Law  <law@redhat.com>
! 
! 	* regcprop.c (maybe_mode_change): Avoid creating copies of the
! 	stack pointer.
! 
! 	Revert:
! 	2017-04-13  Jeff Law  <law@redhat.com>
! 	* config/mips.mips.md (zero_extendsidi2): Do not allow SP to appear
! 	in operands[1] if it is a MEM and TARGET_MIPS16 is active.
! 
! 2017-04-18  Georg-Johann Lay  <avr@gjlay.de>
! 
! 	PR target/79453
! 	* config/avr/avr.c (intl.h): Include it.
! 	(avr_pgm_check_var_decl) [reason]: Wrap	diagnostic snippets into _().
! 
! 2017-04-18  Martin Liska  <mliska@suse.cz>
! 
! 	PR gcov-profile/78783
! 	* gcov-tool.c (gcov_output_files): Validate that destination
! 	file is either removed by the tool or by a user.
! 
! 2017-04-14  Andrew Burgess  <andrew.burgess@embecosm.com>
! 	    Guy Benyei  <guybe@mellanox.com>
! 
! 	* config/arc/arc.c (arc_reorg): Move loop_end_id into a more local
! 	block, and do not negate it, the stored id is already negative.
! 
! 2017-04-14  Andrew Burgess  <andrew.burgess@embecosm.com>
! 
! 	* config/arc/arc.md (doloop_begin_i): Use @pcl assembler syntax.
! 
! 2017-04-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
! 
! 	PR target/80098
! 	* config/rs6000/rs6000-cpus.def (OTHER_P9_VECTOR_MASKS): Define
! 	masks of options that should be turned off if the VSX vector
! 	options are turned off.
! 	(OTHER_P8_VECTOR_MASKS): Likewise.
! 	(OTHER_VSX_VECTOR_MASKS): Likewise.
! 	* config/rs6000/rs6000.c (rs6000_option_override_internal): Call
! 	rs6000_disable_incompatible_switches to validate no type switches
! 	like -mvsx.
! 	(rs6000_incompatible_switch): New function to disallow turning on
! 	other vector options if -mno-vsx, -mno-power8-vector, or
! 	-mno-power9-vector are specified.
! 
! 2017-04-14  Claudiu Zissulescu  <claziss@synopsys.com>
! 
! 	* config/arc/arc.h (CRT_CALL_STATIC_FUNCTION): Use long calls.
! 
! 2017-04-14  Claudiu Zissulescu  <claziss@synopsys.com>
! 
! 	* config/arc/arc-protos.h (arc_decl_pretend_args): Remove.
! 	* config/arc/arc.c (arc_decl_pretend_args): Likewise.
! 	* config/arc/arc.h (CFA_FRAME_BASE_OFFSET): Likewise.
! 	(ARG_POINTER_CFA_OFFSET): Likewise.
! 
! 2017-04-14  Claudiu Zissulescu  <claziss@synopsys.com>
! 
! 	* config/arc/arc.c (arc_mode_dependent_address_p): Relax
! 	conditions to take advantage of various optimizations.
! 
! 2017-04-13  Jeff Law  <law@redhat.com>
! 
! 	* config/mips.mips.md (zero_extendsidi2): Do not allow SP to appear
! 	in operands[1] if it is a MEM and TARGET_MIPS16 is active.
! 	(zero_extendsidi2_dext): Likewise.
! 
! 2017-04-13  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR sanitizer/80403
! 	* fold-const.c (fold_ternary_loc): Revert
! 	use op0 instead of fold_convert_loc (loc, type, arg0) part of
! 	2017-04-12 change.
! 
! 2017-04-13  Vladimir Makarov  <vmakarov@redhat.com>
! 
! 	PR rtl-optimization/80343
! 	* lra-remat.c (update_scratch_ops): Assign original hard reg to
! 	new scratch pseudo.
! 
! 2017-04-13  Denis Khalikov <d.khalikov@partner.samsung.com>
! 
! 	PR sanitizer/80414
! 	* ubsan.c (ubsan_expand_bounds_ifn): Pass original index
! 	to ubsan_encode_value.
! 
! 2017-04-13  Jeff Law  <law@redhat.com>
! 
! 	* reload1.c (eliminate_regs_1): Call gen_rtx_raw_SUBREG for SUBREGs
! 	appearing in DEBUG_INSNs.
! 
! 2017-04-13  Martin Liska  <mliska@suse.cz>
! 
! 	PR gcov-profile/80413
! 	* gcov-io.c (gcov_write_string): Copy to buffer just when
! 	allocated size is greater than zero.
! 
! 2017-04-13  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR debug/80321
! 	* dwarf2out.c (decls_for_scope): Ignore declarations of
! 	current_function_decl in BLOCK_NONLOCALIZED_VARS.
! 
! 2017-04-12  Jan Hubicka  <hubicka@ucw.cz>
! 
! 	PR lto/69953 
! 	* ipa-visibility.c (non_local_p): Fix typos.
! 	(localize_node): When localizing symbol in same comdat group,
! 	dissolve the group only when we know external symbols are going
! 	to be privatized.
! 	(function_and_variable_visibility): Do not localize DECL_EXTERNAL.
! 
! 2017-04-12  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR tree-optimization/79390
! 	* optabs.c (emit_conditional_move): If the preferred op2/op3 operand
! 	order does not result in usable sequence, retry with reversed operand
! 	order.
! 
! 	PR sanitizer/80403
! 	PR sanitizer/80404
! 	PR sanitizer/80405
! 	* fold-const.c (fold_ternary_loc): Use op1 instead of arg1 as argument
! 	to fold_build2_loc.  Convert TREE_OPERAND (tem, 0) to type.  Use
! 	op0 instead of fold_convert_loc (loc, type, arg0).
! 
! 2017-04-12  Jeff Law  <law@redhat.com>
! 
! 	* genattrtab.c (write_eligible_delay): Verify DELAY_INSN still
! 	has a delay slot in the generated code.
! 
! 	* config/cris/cris.md (cris_preferred_reload_class): Return
! 	GENNONACR_REGS rather than GENERAL_REGS.
! 
! 2017-04-12  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR c/80163
! 	* expr.c <CASE_CONVERT>: For EXPAND_INITIALIZER determine SIGN_EXTEND
! 	vs. ZERO_EXTEND based on signedness of treeop0's type rather than
! 	signedness of the result type.
! 
! 2017-04-12  Richard Biener  <rguenther@suse.de>
! 	    Jeff Law  <law@redhat.com>
! 
! 	PR tree-optimization/80359
! 	* tree-ssa-dse.c (maybe_trim_partially_dead_store): Do not
! 	trim stores to TARGET_MEM_REFs.
! 
! 2017-04-12  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/79390
! 	* gimple-ssa-split-paths.c (is_feasible_trace): Restrict
! 	threading case even more.
! 
! 2017-04-12  Segher Boessenkool  <segher@kernel.crashing.org>
! 
! 	PR target/80382
! 	* config/rs6000/sync.md (atomic_load<mode>, atomic_store<mode): Test
! 	for quad_address_p for TImode, instead of just not indexed_address.
! 
! 2017-04-12  Richard Biener  <rguenther@suse.de>
! 	    Bernd Edlinger  <bernd.edlinger@hotmail.de>
! 
! 	PR middle-end/79671
! 	* alias.c (component_uses_parent_alias_set_from): Handle
! 	TYPE_TYPELESS_STORAGE.
! 	(get_alias_set): Likewise.
! 	* tree-core.h (tree_type_common): Add typeless_storage flag.
! 	* tree.h (TYPE_TYPELESS_STORAGE): New macro.
! 	* stor-layout.c (place_union_field): Set TYPE_TYPELESS_STORAGE
! 	for types containing members with TYPE_TYPELESS_STORAGE.
! 	(place_field): Likewise.
! 	(layout_type): Likewise for ARRAY_TYPE.
! 	* lto-streamer-out.c (hash_tree): Hash TYPE_TYPELESS_STORAGE.
! 	* tree-streamer-in.c (unpack_ts_type_common_value_fields): Stream
! 	TYPE_TYPELESS_STORAGE.
! 	* tree-streamer-out.c (pack_ts_type_common_value_fields): Likewise.
! 
! 2017-04-12  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR sanitizer/80349
! 	* fold-const.c (fold_binary_loc) <case BIT_IOR_EXPR>: Convert arg0's
! 	first argument to type.
! 
! 2017-04-11  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
! 
! 	PR target/80376
! 	PR target/80315
! 	* config/rs6000/rs6000.c (rs6000_expand_unop_builtin): Return
! 	CONST0_RTX (mode) rather than const0_rtx where appropriate.
! 	(rs6000_expand_binop_builtin): Likewise.
! 	(rs6000_expand_ternop_builtin): Likewise; also add missing
! 	vsx_xxpermdi_* variants; also fix typo (arg1 => arg2) for
! 	vshasigma built-ins.
! 	* doc/extend.texi: Document that vec_xxpermdi's third argument
! 	must be a constant.
! 
! 2017-04-11  Uros Bizjak  <ubizjak@gmail.com>
! 
! 	* config/i386/i386.c (dimode_scalar_chain::compute_convert_gain):
! 	Use shift_const cost parameter when calculating gain of STV shifts.
! 
! 2017-04-11  Vladimir Makarov  <vmakarov@redhat.com>
! 
! 	PR rtl-optimization/70478
! 	* lra-constraints.c (process_alt_operands): Check memory for
! 	disfavoring memory insn operand.
! 
! 2017-04-11  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR middle-end/80100
! 	* simplify-rtx.c (simplify_binary_operation_1) <case IOR>: Perform
! 	left shift in unsigned HOST_WIDE_INT type.
! 
! 	PR rtl-optimization/80385
! 	* simplify-rtx.c (simplify_unary_operation_1): Don't transform
! 	(not (neg X)) into (plus X -1) for complex or non-integral modes.
! 
! 	PR libgomp/80394
! 	* omp-low.c (scan_omp_task): Don't optimize away empty tasks
! 	if they have any depend clauses.
! 
! 2017-04-11  Martin Liska  <mliska@suse.cz>
! 
! 	PR ipa/80212
! 	* cgraph.c (cgraph_node::dump): Dump calls_comdat_local.
! 	* ipa-split.c (split_function): Create a local comdat symbol
! 	if caller is in a comdat group.
! 
! 2017-04-11  Martin Liska  <mliska@suse.cz>
! 
! 	PR ipa/80212
! 	* ipa-cp.c (determine_versionability): Handle calls_comdat_local
! 	flags.
! 
! 2017-04-11  Martin Sebor  <msebor@redhat.com>
! 
! 	PR middle-end/80364
! 	* gimple-ssa-sprintf.c (get_int_range): Remove second argument and
! 	always use the int type.  Use INTEGRAL_TYPE_P() rather than testing
! 	for INTEGER_TYPE.
! 	(directive::set_width, directive::set_precision, format_character):
! 	Adjust.
! 	(parse_directive): Use INTEGRAL_TYPE_P() rather than testing for
! 	INTEGER_TYPE.
! 
! 2017-04-11  Richard Earnshaw  <rearnsha@arm.com>
! 
! 	PR target/80389
! 	* config/arm/arm.c (arm_configure_build_target): When -mcpu and -arch
! 	conflict, set target->arch_name instead of target->cpu_name.
! 
! 2017-04-11  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/80374
! 	* tree-ssa-dom.c (derive_equivalences_from_bit_ior): Use
! 	build_zero_cst, remove fold_convertible_p check again.
! 
! 2017-04-11  Martin Liska  <mliska@suse.cz>
! 
! 	PR sanitizer/70878
! 	* ubsan.c (instrument_object_size): Do not instrument register
! 	variables.
! 
! 2017-04-11  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR target/80381
! 	* config/i386/i386-builtin-types.def
! 	(V16HI_FTYPE_V16HI_INT_V16HI_UHI_COUNT,
! 	V16HI_FTYPE_V16HI_V8HI_V16HI_UHI_COUNT,
! 	V16SI_FTYPE_V16SI_INT_V16SI_UHI_COUNT,
! 	V16SI_FTYPE_V16SI_V4SI_V16SI_UHI_COUNT,
! 	V2DI_FTYPE_V2DI_INT_V2DI_UQI_COUNT,
! 	V2DI_FTYPE_V2DI_V2DI_V2DI_UQI_COUNT,
! 	V32HI_FTYPE_V32HI_INT_V32HI_USI_COUNT,
! 	V32HI_FTYPE_V32HI_V8HI_V32HI_USI_COUNT,
! 	V4DI_FTYPE_V4DI_INT_V4DI_UQI_COUNT,
! 	V4DI_FTYPE_V4DI_V2DI_V4DI_UQI_COUNT,
! 	V4SI_FTYPE_V4SI_INT_V4SI_UQI_COUNT,
! 	V4SI_FTYPE_V4SI_V4SI_V4SI_UQI_COUNT,
! 	V8DI_FTYPE_V8DI_INT_V8DI_UQI_COUNT,
! 	V8DI_FTYPE_V8DI_V2DI_V8DI_UQI_COUNT,
! 	V8HI_FTYPE_V8HI_INT_V8HI_UQI_COUNT,
! 	V8HI_FTYPE_V8HI_V8HI_V8HI_UQI_COUNT,
! 	V8SI_FTYPE_V8SI_INT_V8SI_UQI_COUNT,
! 	V8SI_FTYPE_V8SI_V4SI_V8SI_UQI_COUNT): New function type aliases.
! 	* config/i386/i386-builtin.def (__builtin_ia32_pslld512_mask,
! 	__builtin_ia32_pslldi512_mask, __builtin_ia32_psllq512_mask,
! 	__builtin_ia32_psllqi512_mask, __builtin_ia32_psrad512_mask,
! 	__builtin_ia32_psradi512_mask, __builtin_ia32_psraq512_mask,
! 	__builtin_ia32_psraqi512_mask, __builtin_ia32_psrld512_mask,
! 	__builtin_ia32_psrldi512_mask, __builtin_ia32_psrlq512_mask,
! 	__builtin_ia32_psrlqi512_mask, __builtin_ia32_psllwi128_mask,
! 	__builtin_ia32_pslldi128_mask, __builtin_ia32_psllqi128_mask,
! 	__builtin_ia32_psllw128_mask, __builtin_ia32_pslld128_mask,
! 	__builtin_ia32_psllq128_mask, __builtin_ia32_psllwi256_mask,
! 	__builtin_ia32_psllw256_mask, __builtin_ia32_pslldi256_mask,
! 	__builtin_ia32_pslld256_mask, __builtin_ia32_psllqi256_mask,
! 	__builtin_ia32_psllq256_mask, __builtin_ia32_psradi128_mask,
! 	__builtin_ia32_psrad128_mask, __builtin_ia32_psradi256_mask,
! 	__builtin_ia32_psrad256_mask, __builtin_ia32_psraqi128_mask,
! 	__builtin_ia32_psraq128_mask, __builtin_ia32_psraqi256_mask,
! 	__builtin_ia32_psraq256_mask, __builtin_ia32_psrldi128_mask,
! 	__builtin_ia32_psrld128_mask, __builtin_ia32_psrldi256_mask,
! 	__builtin_ia32_psrld256_mask, __builtin_ia32_psrlqi128_mask,
! 	__builtin_ia32_psrlq128_mask, __builtin_ia32_psrlqi256_mask,
! 	__builtin_ia32_psrlq256_mask, __builtin_ia32_psrawi256_mask,
! 	__builtin_ia32_psraw256_mask, __builtin_ia32_psrawi128_mask,
! 	__builtin_ia32_psraw128_mask, __builtin_ia32_psrlwi256_mask,
! 	__builtin_ia32_psrlw256_mask, __builtin_ia32_psrlwi128_mask,
! 	__builtin_ia32_psrlw128_mask, __builtin_ia32_psllwi512_mask,
! 	__builtin_ia32_psllw512_mask, __builtin_ia32_psrawi512_mask,
! 	__builtin_ia32_psraw512_mask, __builtin_ia32_psrlwi512_mask,
! 	__builtin_ia32_psrlw512_mask): Use _COUNT suffixed function type
! 	aliases.
! 	* config/i386/i386.c (ix86_expand_args_builtin): Rename last_arg_count
! 	flag to second_arg_count, handle 4 argument function type _COUNT
! 	aliases, handle second_arg_count on second argument rather than last.
! 
! 2017-04-10  Jeff Law  <law@redhat.com>
! 
! 	PR tree-optimization/80374
! 	* tree-ssa-dom.c (derive_equivalences_from_bit_ior): Do not try to
! 	record anything if we can not convert integer_zero_node to the
! 	desired type.
! 
! 2017-04-10  Kelvin Nilsen  <kelvin@gcc.gnu.org>
! 
! 	PR target/80108
! 	* config/rs6000/rs6000.c (rs6000_option_override_internal):
! 	Enhance special handling given to the TARGET_P9_MINMAX option in
! 	relation to certain other options.
  
! 2017-04-10  Bin Cheng  <bin.cheng@arm.com>
  
! 	PR tree-optimization/80153
! 	* tree-ssa-loop-ivopts.c (add_iv_candidate_for_use): Check and
! 	remove POINTER_PLUS_EXPR's base part directly, rather than through
! 	aff_tree.
  
! 2017-04-10  Richard Biener  <rguenther@suse.de>
! 	    Bin Cheng  <bin.cheng@arm.com>
  
! 	PR tree-optimization/80153
! 	* tree-affine.c (aff_combination_to_tree): Get base pointer from
! 	the first element of pointer type aff_tree.  Build result expr in
! 	aff_tree's type.
! 	(add_elt_to_tree): Convert to type unconditionally.  Remove other
! 	fold_convert calls.
! 	* tree-ssa-loop-ivopts.c (alloc_iv): Pass in consistent types.
! 	(rewrite_use_nonlinear_expr): Check invariant using iv information.
  
! 2017-04-10  Richard Biener  <rguenther@suse.de>
  
! 	* tree-ssa-structalias.c (find_func_aliases): Properly handle
! 	asm inputs.
  
! 2017-04-10  Vladimir Makarov  <vmakarov@redhat.com>
  
! 	PR rtl-optimization/70478
! 	* lra-constraints.c (curr_small_class_check): New.
! 	(update_and_check_small_class_inputs): New.
! 	(process_alt_operands): Update curr_small_class_check.  Disfavor
! 	alternative insn memory operands.  Check available regs for small
! 	class operands.
  
! 2017-03-31  Matthew Fortune  <matthew.fortune@imgtec.com>
  
! 	PR target/80057
! 	* config/mips/mips.opt (-mvirt): Update description.
! 	* doc/invoke.texi (-mvirt): Likewise.
  
! 2017-04-10  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/80362
! 	* fold-const.c (fold_binary_loc): Look at unstripped ops when
! 	looking for NEGATE_EXPR in -A / -B to A / B folding.
  
! 2017-04-10  Martin Liska  <mliska@suse.cz>
  
! 	PR gcov-profile/80224
! 	* gcov.c (print_usage): Fix usage string.
! 	(get_gcov_intermediate_filename): Remove.
! 	(output_gcov_file): Use both for normal and intermediate format.
! 	(generate_results): Do not initialize special file for
! 	intermediate format.
  
! 2017-04-10  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/80304
! 	* tree-ssa-loop-im.c (ref_indep_loop_p_1): Also recurse
! 	for safelen.
  
! 2017-04-10  Nathan Sidwell  <nathan@acm.org>
  
! 	PR target/79905
! 	* config/rs6000/rs6000.c (rs6000_vector_type): New.
! 	(rs6000_init_builtins): Use it.
  
! 2016-04-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/arm/arm.md (<mrc>): Add mode to SET source.
! 	(<mrrc>): Likewise.
  
! 2017-04-10  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/80344
! 	* gimplify.c (is_gimple_mem_rhs_or_call): Allow CLOBBERs.
  
! 2017-04-10  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/80324
! 	* config/i386/avx512fintrin.h (_mm512_reduce_add_epi32,
! 	_mm512_reduce_mul_epi32, _mm512_reduce_and_epi32,
! 	_mm512_reduce_or_epi32, _mm512_mask_reduce_add_epi32,
! 	_mm512_mask_reduce_mul_epi32, _mm512_mask_reduce_and_epi32,
! 	_mm512_mask_reduce_or_epi32, _mm512_reduce_min_epi32,
! 	_mm512_reduce_max_epi32, _mm512_reduce_min_epu32,
! 	_mm512_reduce_max_epu32, _mm512_mask_reduce_min_epi32,
! 	_mm512_mask_reduce_max_epi32, _mm512_mask_reduce_min_epu32,
! 	_mm512_mask_reduce_max_epu32, _mm512_reduce_add_ps,
! 	_mm512_reduce_mul_ps, _mm512_mask_reduce_add_ps,
! 	_mm512_mask_reduce_mul_ps, _mm512_reduce_min_ps, _mm512_reduce_max_ps,
! 	_mm512_mask_reduce_min_ps, _mm512_mask_reduce_max_ps,
! 	_mm512_reduce_add_epi64, _mm512_reduce_mul_epi64,
! 	_mm512_reduce_and_epi64, _mm512_reduce_or_epi64,
! 	_mm512_mask_reduce_add_epi64, _mm512_mask_reduce_mul_epi64,
! 	_mm512_mask_reduce_and_epi64, _mm512_mask_reduce_or_epi64,
! 	_mm512_reduce_min_epi64, _mm512_reduce_max_epi64,
! 	_mm512_mask_reduce_min_epi64, _mm512_mask_reduce_max_epi64,
! 	_mm512_reduce_min_epu64, _mm512_reduce_max_epu64,
! 	_mm512_mask_reduce_min_epu64, _mm512_mask_reduce_max_epu64,
! 	_mm512_reduce_add_pd, _mm512_reduce_mul_pd, _mm512_mask_reduce_add_pd,
! 	_mm512_mask_reduce_mul_pd, _mm512_reduce_min_pd, _mm512_reduce_max_pd,
! 	_mm512_mask_reduce_min_pd, _mm512_mask_reduce_max_pd): New intrinsics.
  
! 2017-04-08  Vladimir Makarov  <vmakarov@redhat.com>
  
! 	PR rtl-optimization/70478
! 	* lra-constraints.c: Reverse the last patch.
  
! 2017-04-08  Andreas Tobler  <andreast@gcc.gnu.org>
  
! 	* config/aarch64/aarch64-freebsd.h: Define MCOUNT_NAME.
! 	Add comment for WCHAR_T.
  
! 2017-04-08  Martin Liska  <mliska@suse.cz>
  
! 	Revert:
! 	2017-04-07  Martin Liska  <mliska@suse.cz>
  
! 	PR ipa/80212
! 	* ipa-split.c (split_function): Add function part to a same comdat
! 	group.
  
! 2017-04-08  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
  
! 	PR target/80358
! 	* config/rs6000/rs6000.c (expand_block_compare): Fix boundary check.
  
! 2017-04-07  Pat Haugen  <pthaugen@us.ibm.com>
  
! 	* rs6000/rs6000.c (vec_load_pendulum): Rename...
! 	(vec_pairing): ...to this.
! 	(power9_sched_reorder2): Rewrite code for pairing vector/vecload insns.
! 	(rs6000_sched_init): Adjust for name change.
! 	(struct rs6000_sched_context): Likewise.
! 	(rs6000_init_sched_context): Likewise.
! 	(rs6000_set_sched_context): Likewise.
  
! 2017-04-07  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/80322
! 	PR target/80323
! 	PR target/80325
! 	PR target/80326
! 	* config/i386/avxintrin.h (_mm256_cvtsd_f64, _mm256_cvtss_f32): New
! 	intrinsics.
! 	* config/i386/avx512fintrin.h (_mm512_int2mask, _mm512_mask2int,
! 	_mm512_abs_ps, _mm512_mask_abs_ps, _mm512_abs_pd, _mm512_mask_abs_pd,
! 	_mm512_cvtsd_f64, _mm512_cvtss_f32): Likewise.
  
! 2017-04-07  Andreas Tobler  <andreast@gcc.gnu.org>
  
! 	* config/aarch64/aarch64-freebsd.h: Define WCHAR_TYPE.
  
! 2017-04-07  Vladimir Makarov  <vmakarov@redhat.com>
  
! 	PR rtl-optimization/70703
! 	* ira-color.c (update_conflict_hard_regno_costs): Use
! 	int64_t instead of HOST_WIDE_INT.
  
! 2017-04-07  Vladimir Makarov  <vmakarov@redhat.com>
  
! 	PR rtl-optimization/70478
! 	* lra-constraints.c (process_alt_operands): Disfavor alternative
! 	insn memory operands.
  
! 2017-04-07  Jeff Law  <law@redhat.com>
  
! 	* config/iq2000/iq2000.c (final_prescan_insn): Do not separate a
! 	CALL and NOTE_INSN_CALL_ARG_LOCATION.
  
! 2017-04-07  Martin Liska  <mliska@suse.cz>
  
! 	PR target/79889
! 	* config/aarch64/aarch64.c (aarch64_process_target_attr):
! 	Show error message instead of an ICE.
  
! 2017-04-07  Martin Liska  <mliska@suse.cz>
  
! 	PR ipa/80212
! 	* ipa-split.c (split_function): Add function part to a same comdat
! 	group.
  
! 2017-04-07  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/80341
! 	* tree.c (get_unwidened): Also handle ! for_type case for
! 	INTEGER_CSTs.
! 	* convert.c (do_narrow): Split out from ...
! 	(convert_to_integer_1): ... here.  Do not pass final truncation
! 	type to get_unwidened for TRUNC_DIV_EXPR.
  
! 2017-04-07  Richard Biener  <rguenther@suse.de>
  
! 	* tree-affine.c (wide_int_ext_for_comb): Take type rather
! 	than aff_tree.
! 	(aff_combination_const): Adjust.
! 	(aff_combination_scale): Likewise.
! 	(aff_combination_add_elt): Likewise.
! 	(aff_combination_add_cst): Likewise.
! 	(aff_combination_convert): Likewise.
! 	(add_elt_to_tree): Likewise.  Remove unused argument.
! 	(aff_combination_to_tree): Adjust calls to add_elt_to_tree.
  
! 2017-04-07  Sebastian Huber  <sebastian.huber@embedded-brains.de>
  
! 	* config/arm/arm.h (ARM_DEFAULT_SHORT_ENUMS): Provide default
  	definition.
- 	* config/arm/arm.c (arm_default_short_enums): Use
- 	ARM_DEFAULT_SHORT_ENUMS.
- 	* config/arm/rtems.h (ARM_DEFAULT_SHORT_ENUMS): Define.
- 
- 2017-04-06  Jakub Jelinek  <jakub@redhat.com>
- 
- 	PR debug/80234
- 	* dwarf2out.c (gen_member_die): Handle C++17 inline static data
- 	members with redundant out-of-class redeclaration.
- 
- 2017-04-06  Uros Bizjak  <ubizjak@gmail.com>
- 
- 	PR target/80286
- 	* config/i386/sse.md (*vec_extractv4si_0_zext_sse4): New pattern.
- 	* config/i386/i386.md (*zero_extendsidi2):
- 	Add (?*x,*x) and (?*v,*v) alternatives.
- 
- 2017-04-06  Uros Bizjak  <ubizjak@gmail.com>
- 
- 	PR target/79733
- 	* config/i386/i386.c (ix86_expand_builtin)
- 	<case IX86_BUILTIN_K{,OR}TEST{C,Z}{8,16,32,64}>: Determine insn operand
- 	mode from insn data. Convert operands to insn operand mode.
- 	Copy operands that don't satisfy insn predicate to a register.
- 
- 2017-04-06  Sam Thursfield  <sam.thursfield@codethink.co.uk>
- 
- 	* config/rs6000/x-aix: Increase memory limit for genautomata on AIX.
- 	Update comments.
- 
- 2017-04-06  Richard Biener  <rguenther@suse.de>
- 
- 	PR tree-optimization/80334
- 	* tree-ssa-loop-ivopts.c (rewrite_use_address): Properly
- 	preserve alignment of accesses.
- 
- 2017-04-06  Richard Biener  <rguenther@suse.de>
- 
- 	PR tree-optimization/80262
- 	* tree-sra.c (build_ref_for_offset): Preserve address-space
- 	information.
- 	* tree-ssa-sccvn.c (vn_reference_maybe_forwprop_address):
- 	Drop useless address-space information on MEM_REF offsets.
  
! 2017-04-05  Andreas Schwab  <schwab@linux-m68k.org>
! 
! 	* builtins.def (BUILT_IN_UPDATE_SETJMP_BUF): Fix type.
  
! 2017-04-05  Vladimir Makarov  <vmakarov@redhat.com>
  
! 	PR rtl-optimization/70703
! 	* ira-color.c (update_conflict_hard_regno_costs): Use
! 	HOST_WIDE_INT instead of long.
  
! 2017-04-05  Uros Bizjak  <ubizjak@gmail.com>
  
! 	PR target/80298
! 	* config/i386/mmintrin.h: Add -msse target option when __SSE__ is
! 	not defined for x86_64 target.  Add -mmmx target option when __SSE2__
! 	is not defined.
! 	* config/i386/mm3dnow.h: Add -msse target when __SSE__ is not defined
! 	for x86_64 target.  Handle -m3dnowa option.
  
! 2017-04-05  Vladimir Makarov  <vmakarov@redhat.com>
  
! 	PR rtl-optimization/70703
! 	* ira-color.c (update_costs_from_allocno): Use the smallest mode.
! 	(update_conflict_hard_regno_costs): Use long instead of unsigned
! 	arithmetic for cost calculation.
  
! 2017-04-05  Jakub Jelinek  <jakub@redhat.com>
! 	    Bernd Edlinger  <bernd.edlinger@hotmail.de>
  
! 	PR sanitizer/80308
! 	* asan.c (asan_store_shadow_bytes): Fix location of last_chunk_value
! 	for big endian.
  
! 2017-04-05  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR target/78002
! 	* config/aarch64/aarch64.c (aarch64_emit_probe_stack_range): Replace
! 	ptr_mode with Pmode throughout.
! 	* config/aarch64/aarch64.md (probe_stack_range_<PTR:mode): Rename
! 	into probe_stack_range and use DImode.
  
! 2017-04-05  Dominik Vogt  <vogt@linux.vnet.ibm.com>
  
! 	PR target/79890
! 	* config/s390/s390.c (s390_register_info_gprtofpr): Return if
! 	call_eh_return is true.
  
! 2017-04-05  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
  
! 	* config/s390/s390-c.c (s390_resolve_overloaded_builtin):
! 	Initialize last_match_fntype_index.
  
! 2017-04-05  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/80310
! 	* tree-nvr.c: Include internal-fn.h.
! 	(pass_return_slot::execute): Ignore internal calls without
! 	direct optab.
  
! 2017-04-04  Jakub Jelinek  <jakub@redhat.com>
! 	    Richard Biener  <rguenther@suse.de>
  
! 	PR c++/80297
! 	* genmatch.c (capture::gen_transform): For GENERIC unshare_expr
! 	captures used multiple times, except for the last use.
! 	* generic-match-head.c: Include gimplify.h.
  
! 2017-04-04  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/79390
! 	* target.h (struct noce_if_info): Declare.
! 	* targhooks.h (default_noce_conversion_profitable_p): Declare.
! 	* target.def (noce_conversion_profitable_p): New target hook.
! 	* ifcvt.h (struct noce_if_info): New type, moved from ...
! 	* ifcvt.c (struct noce_if_info): ... here.
! 	(noce_conversion_profitable_p): Renamed to ...
! 	(default_noce_conversion_profitable_p): ... this.  No longer
! 	static nor inline.
! 	(noce_try_store_flag_constants, noce_try_addcc,
! 	noce_try_store_flag_mask, noce_try_cmove, noce_try_cmove_arith,
! 	noce_convert_multiple_sets): Use targetm.noce_conversion_profitable_p
! 	instead of noce_conversion_profitable_p.
! 	* config/i386/i386.c: Include ifcvt.h.
! 	(ix86_option_override_internal): Don't override
! 	PARAM_MAX_RTL_IF_CONVERSION_INSNS default.
! 	(ix86_noce_conversion_profitable_p): New function.
! 	(TARGET_NOCE_CONVERSION_PROFITABLE_P): Redefine.
! 	* config/i386/x86-tune.def (X86_TUNE_ONE_IF_CONV_INSN): Adjust comment.
! 	* doc/tm.texi.in (TARGET_NOCE_CONVERSION_PROFITABLE_P): Add.
! 	* doc/tm.texi: Regenerated.
  
! 2017-04-04  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
  
! 	* doc/extend.texi (PowerPC AltiVec Built-in Functions): Grammar
! 	correction.
  
! 2017-04-04  Thomas Preud'homme  <thomas.preudhomme@arm.com>
  
! 	PR target/80307
! 	* config/arm/arm.c (thumb1_rtx_costs): Give a cost of 32
! 	instructions for small multiply cores.
  
! 2017-04-04  Jeff Law  <law@redhat.com>
  
! 	* config/mips/mips.c (mips_multi_add): Zero initialize the newly
! 	added member.
! 	(mips_expand_vec_perm_const): Initialize elements in orig_perm
! 	that are not set by the loop over the elements.
  
! 2017-04-04  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/80286
! 	* config/i386/i386.c (ix86_expand_args_builtin): If op has scalar
! 	int mode, convert_modes it to mode as unsigned, otherwise use
! 	lowpart_subreg to mode rather than SImode.
! 	* config/i386/sse.md (<mask_codefor>ashr<mode>3<mask_name>,
! 	ashr<mode>3, ashr<mode>3<mask_name>, <shift_insn><mode>3<mask_name>):
! 	Use DImode instead of SImode for the shift count operand.
! 	* config/i386/mmx.md (mmx_ashr<mode>3, mmx_<shift_insn><mode>3):
! 	Likewise.
  
! 2017-04-04  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/80281
! 	* match.pd (A + (-B) -> A - B): Make sure to preserve unsigned
! 	arithmetic done for the negate or the plus.  Simplify.
! 	(A - (-B) -> A + B): Likewise.
! 	* fold-const.c (split_tree): Make sure to not negate pointers.
  
! 2017-04-04  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	PR rtl-optimization/60818
! 	* simplify-rtx.c (simplify_binary_operation_1): Do not replace
! 	a compare of comparisons with the thing compared if this results
! 	in a different machine mode.
  
! 2017-04-03  Jonathan Wakely  <jwakely@redhat.com>
  
! 	* alias.c (base_alias_check): Fix typo in comment.
! 	* cgraph.h (class ipa_polymorphic_call_context): Likewise.
! 	* cgraphunit.c (symbol_table::compile): Likewise.
! 	* collect2.c (maybe_run_lto_and_relink): Likewise.
! 	* config/arm/arm.c (arm_thumb1_mi_thunk): Likewise.
! 	* config/avr/avr-arch.h (avr_arch_info_t): Likewise.
! 	* config/avr/avr.c (avr_map_op_t): Likewise.
! 	* config/cr16/cr16.h (DATA_ALIGNMENT): Likewise.
! 	* config/epiphany/epiphany.c (TARGET_ARG_PARTIAL_BYTES): Likewise.
! 	* config/epiphany/epiphany.md (movcc): Likewise.
! 	* config/i386/i386.c (legitimize_pe_coff_extern_decl): Likewise.
! 	* config/m68k/m68k.c (struct _sched_ib, m68k_sched_variable_issue):
! 	Likewise.
! 	* config/mips/mips.c (mips_save_restore_reg): Likewise.
! 	* config/rx/rx.c (rx_is_restricted_memory_address): Likewise.
! 	* config/s390/s390.c (Z10_EARLYLOAD_DISTANCE): Likewise.
! 	* config/sh/sh.c (sh_rtx_costs): Likewise.
! 	* fold-const.c (fold_truth_andor): Likewise.
! 	* genautomata.c (collapse_flag): Likewise.
! 	* gengtype.h (struct type::u::s): Likewise.
! 	* gensupport.c (has_subst_attribute, add_mnemonic_string): Likewise.
! 	* input.c (FORMAT_AMOUNT): Likewise.
! 	* ipa-cp.c (class ipcp_lattice, agg_replacements_to_vector)
! 	(known_aggs_to_agg_replacement_list): Likewise.
! 	* ipa-inline-analysis.c: Likewise.
! 	* ipa-inline.h (estimate_edge_time, estimate_edge_hints): Likewise.
! 	* ipa-polymorphic-call.c
! 	(ipa_polymorphic_call_context::restrict_to_inner_class): Likewise.
! 	* loop-unroll.c (analyze_insn_to_expand_var): Likewise.
! 	* lra.c (lra_optional_reload_pseudos, lra_subreg_reload_pseudos):
! 	Likewise.
! 	* modulo-sched.c (apply_reg_moves): Likewise.
! 	* omp-expand.c (build_omp_regions_1): Likewise.
! 	* trans-mem.c (struct tm_wrapper_hasher): Likewise.
! 	* tree-ssa-loop-ivopts.c (may_eliminate_iv): Likewise.
! 	* tree-ssa-loop-niter.c (maybe_lower_iteration_bound): Likewise.
! 	* tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
! 	* value-prof.c: Likewise.
! 	* var-tracking.c (val_reset): Likewise.
  
! 2017-04-03  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/80275
! 	* fold-const.c (split_address_to_core_and_offset): Handle
! 	POINTER_PLUS_EXPR.
  
! 2017-04-03  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* tree-nested.c (get_descriptor_type): Make sure that the alignment of
! 	descriptors is at least equal to that of functions.
  
! 2017-04-02  Uros Bizjak  <ubizjak@gmail.com>
  
! 	* config/i386/sse.md (movdi_to_sse): Add missing DONE.
  
! 2017-04-02  Uros Bizjak  <ubizjak@gmail.com>
  
! 	PR target/80250
! 	* config/i386/sse.md (mov<IMOD4:mode>): Remove insn pattern.
! 	(mov<IMOD4:mode>): New expander.
! 	(*mov<IMOD4:mode>_internal): New insn and split pattern.
  
! 2017-03-31  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	PR rtl-optimization/79405
! 	* fwprop.c (propagations_left): New variable.
! 	(forward_propagate_into): Decrement it.
! 	(fwprop_init): Initialize it.
! 	(fw_prop): If the variable has reached zero, stop propagating.
! 	(fwprop_addr): Ditto.
  
! 2017-03-31  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR debug/79255
! 	* dwarf2out.c (decls_for_scope): If BLOCK_NONLOCALIZED_VAR is
! 	a FUNCTION_DECL, pass it as decl instead of origin to
! 	process_scope_var.
  
! 2017-03-31  Alexander Monakov  <amonakov@ispras.ru>
  
! 	* config/nvptx/nvptx.c (nvptx_output_softstack_switch): Correct format
! 	string.
  
! 2017-03-31  Pat Haugen  <pthaugen@us.ibm.com>
  
! 	PR target/80107
! 	* config/rs6000/rs6000.md (extendhi<mode>2): Add test for
! 	TARGET_VSX_SMALL_INTEGER.
  
! 2017-03-31  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
  
! 	* doc/extend.texi (PowerPC AltiVec Built-in Functions):	Add
! 	reference to the OpenPOWER 64-Bit ELF V2 ABI Specification.
  
! 2017-03-31  Matthew Fortune  <matthew.fortune@imgtec.com>
  
! 	* config/mips/mips-msa.md (msa_vec_extract_<msafmt_f>): Update
! 	extraction from odd-numbered MSA register.
  
! 2017-03-31  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/80173
! 	* expmed.c (store_bit_field_1): Don't attempt to create
! 	a word subreg out of hard registers wider than word if they
! 	have HARD_REGNO_NREGS of 1 for their mode.
  
! 	PR middle-end/80163
! 	* varasm.c (initializer_constant_valid_p_1): Disallow sign-extending
! 	conversions to integer types wider than word and pointer.
  
! 	PR debug/80025
! 	* cselib.h (rtx_equal_for_cselib_1): Add depth argument.
! 	(rtx_equal_for_cselib_p): Pass 0 to it.
! 	* cselib.c (cselib_hasher::equal): Likewise.
! 	(rtx_equal_for_cselib_1): Add depth argument.  If depth
! 	is 128, don't look up VALUE locs and punt.  Increment
! 	depth in recursive calls when walking VALUE locs.
  
! 2017-03-31  Bernd Edlinger  <bernd.edlinger@hotmail.de>
  
! 	* gcov.c (md5sum_to_hex): Fix output of MD5 hex bytes.
! 	(make_gcov_file_name): Use the canonical path name for generating
! 	the MD5 value.
! 	(read_line): Fix handling of files with ascii null bytes.
  
! 2017-03-30  Matthew Fortune  <matthew.fortune@imgtec.com>
  
! 	* config/mips/mips.c (mips_expand_vector_init): Create a const_vector
! 	to initialise a vector register instead
! 	of using a const_int.
  
! 2017-03-30  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR translation/80189
! 	* gimplify.c (omp_default_clause): Use %qs instead of %s in
! 	diagnostic messages.
  
! 2017-03-30  Peter Bergner  <bergner@vnet.ibm.com>
  
! 	PR target/80246
! 	* config/rs6000/dfp.md (dfp_dxex_<mode>): Update mode of operand 0.
! 	(dfp_diex_<mode>): Update mode of operand 1.
! 	* doc/extend.texi (dxex, dxexq): Document change to return type.
! 	(diex, diexq): Document change to argument type.
  
! 2017-03-30  Martin Jambor  <mjambor@suse.cz>
  
! 	PR ipa/77333
! 	* cgraph.h (cgraph_build_function_type_skip_args): Declare.
! 	* cgraph.c (redirect_call_stmt_to_callee): Set gimple fntype so that
! 	it reflects the signature changes performed at the callee side.
! 	* cgraphclones.c (build_function_type_skip_args): Make public, renamed
! 	to cgraph_build_function_type_skip_args.
! 	(build_function_decl_skip_args): Adjust call to the above function.
  
! 2017-03-30  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/80206
! 	* config/i386/sse.md
! 	(<extract_type>_vextract<shuffletype><extract_suf>_mask): Use
! 	register as dest whenever it is a MEM not rtx_equal_p to the
! 	corresponding dup operand, and when forcing into reg move the
! 	reg into the memory afterwards.
! 	(<extract_type_2>_vextract<shuffletype><extract_suf_2>_mask):
! 	Likewise.  Use <ssehalfvecmode> instead of <ssequartermode>
! 	for the force_reg mode.
! 	(avx512vl_vextractf128<mode>): Use register as dest either
! 	always when a MEM, or when it is a MEM not rtx_equal_p to the
! 	corresponding dup operand, or even not when it is a CONST_VECTOR
! 	depending on the mode and lo vs. hi.
! 	(avx512dq_vextract<shuffletype>64x2_1_maskm): Remove extraneous
! 	parens.
! 	(avx512f_vextract<shuffletype>32x4_1_maskm): Likewise.
! 	(<mask_codefor>avx512dq_vextract<shuffletype>64x2_1<mask_name>):
! 	Likewise.  Require that operands[2] is even.
! 	(<mask_codefor>avx512f_vextract<shuffletype>32x4_1<mask_name>):
! 	Remove extraneous parens.  Require that operands[2] is a multiple
! 	of 4.
! 	(vec_extract_lo_<mode><mask_name>): Don't bother testing if
! 	operands[0] is a MEM if <mask_applied>, the predicates/constraints
! 	disallow memory then.
  
! 2017-03-30  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/77498
! 	* tree-ssa-pre.c (phi_translate_1): Do not allow simplifications
! 	to non-constants over backedges.
  
! 2017-03-29  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	PR rtl-optimization/80233
! 	* combine.c (combine_instructions): Only take NONDEBUG_INSN_P insns
! 	as last_combined_insn.  Do not test for BARRIER_P separately.
  
! 2017-03-29  Andreas Schwab  <schwab@suse.de>
  
! 	PR ada/80146
! 	* calls.c (prepare_call_address): Convert funexp to Pmode before
! 	copying to temp reg.
  
! 2017-03-29  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
  
! 	PR tree-optimization/80158
! 	* gimple-ssa-strength-reduction.c (replace_mult_candidate):
! 	Handle possible future case of more than one alternate
! 	interpretation.
! 	(replace_rhs_if_not_dup): Likewise.
! 	(replace_one_candidate): Likewise.
  
! 2017-03-28  Vladimir Makarov  <vmakarov@redhat.com>
  
! 	PR rtl-optimization/80193
! 	* ira.c (ira): Do not check allocation for LRA.
  
! 2017-03-28  Alexander Monakov  <amonakov@ispras.ru>
  
! 	* config/nvptx/nvptx-protos.h (nvptx_output_simt_enter): Declare.
! 	(nvptx_output_simt_exit): Declare.
! 	* config/nvptx/nvptx.c (nvptx_init_unisimt_predicate): Use
! 	cfun->machine->unisimt_location.  Handle NULL unisimt_predicate.
! 	(init_softstack_frame): Move initialization of crtl->is_leaf to...
! 	(nvptx_declare_function_name): ...here.  Emit declaration of local
! 	memory space buffer for omp_simt_enter insn.
! 	(nvptx_output_unisimt_switch): New.
! 	(nvptx_output_softstack_switch): New.
! 	(nvptx_output_simt_enter): New.
! 	(nvptx_output_simt_exit): New.
! 	* config/nvptx/nvptx.h (struct machine_function): New fields
! 	has_simtreg, unisimt_location, simt_stack_size, simt_stack_align.
! 	* config/nvptx/nvptx.md (UNSPECV_SIMT_ENTER): New unspec.
! 	(UNSPECV_SIMT_EXIT): Ditto.
! 	(omp_simt_enter_insn): New insn.
! 	(omp_simt_enter): New expansion.
! 	(omp_simt_exit): New insn.
! 	* config/nvptx/nvptx.opt (msoft-stack-reserve-local): New option.
  
! 	* internal-fn.c (expand_GOMP_SIMT_ENTER): New.
! 	(expand_GOMP_SIMT_ENTER_ALLOC): New.
! 	(expand_GOMP_SIMT_EXIT): New.
! 	* internal-fn.def (GOMP_SIMT_ENTER): New internal function.
! 	(GOMP_SIMT_ENTER_ALLOC): Ditto.
! 	(GOMP_SIMT_EXIT): Ditto.
! 	* target-insns.def (omp_simt_enter): New insn.
! 	(omp_simt_exit): Ditto.
! 	* omp-low.c (struct omplow_simd_context): New fields simt_eargs,
! 	simt_dlist.
! 	(lower_rec_simd_input_clauses): Implement SIMT privatization.
! 	(lower_rec_input_clauses): Likewise.
! 	(lower_lastprivate_clauses): Handle SIMT privatization.
  
! 	* omp-offload.c: Include langhooks.h, tree-nested.h, stor-layout.h.
! 	(ompdevlow_adjust_simt_enter): New.
! 	(find_simtpriv_var_op): New.
! 	(execute_omp_device_lower): Handle IFN_GOMP_SIMT_ENTER,
! 	IFN_GOMP_SIMT_ENTER_ALLOC, IFN_GOMP_SIMT_EXIT.
  
! 	* tree-inline.h (struct copy_body_data): New field dst_simt_vars.
! 	* tree-inline.c (expand_call_inline): Handle SIMT privatization.
! 	(copy_decl_for_dup_finish): Ditto.
  
! 	* tree-ssa.c (execute_update_addresses_taken): Handle GOMP_SIMT_ENTER.
  
! 2017-03-28  Uros Bizjak  <ubizjak@gmail.com>
  
! 	PR target/53383
! 	* config/i386/i386.c (ix86_option_override_internal): Always
! 	allow -mpreferred-stack-boundary=3 for 64-bit targets.
  
! 2017-03-28  Bin Cheng  <bin.cheng@arm.com>
  
! 	* tree-vect-loop.c (optimize_mask_stores): Add bb to the right loop.
  
! 2017-03-28  Bin Cheng  <bin.cheng@arm.com>
  
! 	* tree-vect-loop-manip.c (slpeel_add_loop_guard): New param and
! 	mark new edge's irreducible flag accordign to it.
! 	(vect_do_peeling): Check loop preheader edge's irreducible flag
! 	and pass it to function slpeel_add_loop_guard.
  
! 2017-03-28  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR tree-optimization/80218
! 	* tree-call-cdce.c (shrink_wrap_one_built_in_call_with_conds):
! 	Update block frequencies and counts.
  
! 2017-03-28  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/78644
! 	* tree-ssa-ccp.c (evaluate_stmt): When we may not use the value
! 	of a simplification result we may not use it at all.
  
! 2017-03-28  Richard Biener  <rguenther@suse.de>
  
! 	PR ipa/80205
! 	* tree-inline.c (copy_phis_for_bb): Do not create PHI node
! 	without arguments, generate default definition of a SSA name.
  
! 2017-03-28  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/80222
! 	* gimple-fold.c (gimple_fold_indirect_ref): Do not touch
! 	TYPE_REF_CAN_ALIAS_ALL references.
! 	* fold-const.c (fold_indirect_ref_1): Likewise.
  
! 2017-03-28  Martin Liska  <mliska@suse.cz>
  
! 	PR ipa/80104
! 	* cgraphunit.c (cgraph_node::expand_thunk): Mark argument of a
! 	thunk call as DECL_GIMPLE_REG_P when vector or complex type.
  
! 2017-03-28  Claudiu Zissulescu  <claziss@synopsys.com>
! 	    Thomas Petazzoni  <thomas.petazzoni@free-electrons.com>
  
! 	* config/arc/arc.h (CPP_SPEC): Add subtarget_cpp_spec.
! 	(EXTRA_SPECS): Define.
! 	(SUBTARGET_EXTRA_SPECS): Likewise.
! 	(SUBTARGET_CPP_SPEC): Likewise.
! 	* config/arc/elf.h (EXTRA_SPECS): Renamed to
! 	SUBTARGET_EXTRA_SPECS.
! 	* config/arc/linux.h (SUBTARGET_CPP_SPEC): Define.
  
! 2017-03-28  Claudiu Zissulescu  <claziss@synopsys.com>
  
! 	* config/arc/simdext.md (vst64_insn): Update pattern.
! 	(vld32wh_insn): Likewise.
! 	(vld32wl_insn): Likewise.
! 	(vld64_insn): Likewise.
! 	(vld32_insn): Likewise.
  
! 2017-03-28  Marek Polacek  <polacek@redhat.com>
  
! 	PR sanitizer/80067
! 	* fold-const.c (fold_comparison): Use protected_set_expr_location
! 	instead of SET_EXPR_LOCATION.
  
! 2017-03-28  Markus Trippelsdorf  <markus@trippelsdorf.de>
  
! 	* tree.c (add_expr): Avoid name lookup warning.
  
! 2017-03-27  Jeff Law  <law@redhat.com>
  
! 	PR tree-optimization/80216
! 	* tree-ssa-dom.c (derive_equivalences_from_bit_ior): Fix typo in
! 	function name.  Limit recursion depth.
! 	(record_temporary_equivalences): Corresponding changes.
  
! 2017-03-27  Jonathan Wakely  <jwakely@redhat.com>
  
! 	* doc/invoke.texi (-Wno-narrowing): Reorder so default behavior is
! 	covered first.
  
! 2017-03-27  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/80102
! 	* reg-notes.def (REG_CFA_NOTE): Define.  Use it for CFA related
! 	notes.
! 	* cfgcleanup.c (reg_note_cfa_p): New array.
! 	(insns_have_identical_cfa_notes): New function.
! 	(old_insns_match_p): Don't cross-jump in between /f
! 	and non-/f instructions.  If both i1 and i2 are frame related,
! 	verify all CFA notes, their order and content.
  
! 2017-03-27  Michael Meissner  <meissner@linux.vnet.ibm.com>
  
! 	PR target/78543
! 	* config/rs6000/rs6000.md (bswaphi2_extenddi): Combine bswap
! 	HImode and SImode with zero extend to DImode to one insn.
! 	(bswap<mode>2_extenddi): Likewise.
! 	(bswapsi2_extenddi): Likewise.
! 	(bswaphi2_extendsi): Likewise.
! 	(bswaphi2): Combine bswap HImode and SImode into one insn.
! 	Separate memory insns from swapping register.
! 	(bswapsi2): Likewise.
! 	(bswap<mode>2): Likewise.
! 	(bswaphi2_internal): Delete, no longer used.
! 	(bswapsi2_internal): Likewise.
! 	(bswap<mode>2_load): Split bswap HImode/SImode into separate load,
! 	store, and gpr<-gpr swap insns.
! 	(bswap<mode>2_store): Likewise.
! 	(bswaphi2_reg): Register only splitter, combine with the splitter.
! 	(bswaphi2 splitter): Likewise.
! 	(bswapsi2_reg): Likewise.
! 	(bswapsi2 splitter): Likewise.
! 	(bswapdi2): If we have the LDBRX and STDBRX instructions, split
! 	the insns into load, store, and register/register insns.
! 	(bswapdi2_ldbrx): Likewise.
! 	(bswapdi2_load): Likewise.
! 	(bswapdi2_store): Likewise.
! 	(bswapdi2_reg): Likewise.
  
! 2017-03-27  Gunther Nikl  <gnikl@users.sourceforge.net>
  
! 	* system.h (HAVE_DESIGNATED_INITIALIZERS): Fix non C++ case.
! 	(HAVE_DESIGNATED_UNION_INITIALIZERS): Likewise.
  
! 2017-03-27  Kelvin Nilsen  <kelvin@gcc.gnu.org>
  
! 	PR target/80103
! 	* config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Edit and
! 	add comments.
! 	* config/rs6000/rs6000.c (rs6000_option_override_internal): Add
! 	special handling for target option conflicts between dform
! 	options (-mpower9-dform, -mpower9-dform-vector,
! 	-mpower9-dform-scalar) and -mno-direct-move.
  
! 2017-03-27  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/80181
! 	* tree-ssa-ccp.c (likely_value): UNDEFINED ^ X is UNDEFINED.
  
! 2017-03-27  Claudiu Zissulescu  <claziss@synopsys.com>
  
! 	* config/arc/predicates.md (move_double_src_operand): Replace the
! 	call to move_double_src_operand with a call to address_operand.
  
! 2017-03-27  Claudiu Zissulescu  <claziss@synopsys.com>
  
! 	* config/arc/elf.h (ARGET_ARC_TP_REGNO_DEFAULT): Define.
! 	* config/arc/linux.h (ARGET_ARC_TP_REGNO_DEFAULT): Likewise.
! 	* config/arc/arc.opt (mtp-regno): Use ARGET_ARC_TP_REGNO_DEFAULT.
  
! 2017-03-27  Claudiu Zissulescu  <claziss@synopsys.com>
  
! 	* config/arc/predicates.md (long_immediate_loadstore_operand):
! 	Consider scaled addresses cases.
  
! 2017-03-27  Claudiu Zissulescu  <claziss@synopsys.com>
  
! 	* config/arc/arc.c (arc_epilogue_uses): BLINK should be also
! 	restored when in interrupt.
! 	* config/arc/arc.md (simple_return): ARCv2 rtie instruction
! 	doesn't have delay slot.
  
! 2017-03-27  Richard Biener  <rguenther@suse.de>
  
! 	PR ipa/79776
! 	* tree-ssa-structalias.c (associate_varinfo_to_alias): Skip
! 	inlined thunk clones.
  
! 2017-03-27  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR sanitizer/80168
! 	* asan.c (instrument_derefs): Copy over last operand from
! 	original COMPONENT_REF to the new COMPONENT_REF with
! 	DECL_BIT_FIELD_REPRESENTATIVE.
! 	* ubsan.c (instrument_object_size): Likewise.
  
! 2017-03-27  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/80170
! 	* tree-vect-data-refs.c (vect_compute_data_ref_alignment): Make
! 	sure DR/SCEV didnt fold in constants we do not see when looking
! 	at the reference base alignment.
  
! 2017-03-27  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/80171
! 	* gimple-fold.c (fold_ctor_reference): Properly guard against
! 	NULL return value from canonicalize_constructor_val.
  
! 2017-03-25  Uros Bizjak  <ubizjak@gmail.com>
  
! 	PR target/80180
! 	* config/i386/i386.c (ix86_expand_builtin)
! 	<IX86_BUILTIN_RDSEED{16,32,64}_STEP>: Do not expand arg0 between
! 	flags reg setting and flags reg using instructions.
! 	<IX86_BUILTIN_RDRAND{16,32,64}_STEP>: Ditto.  Use non-flags reg
! 	clobbering instructions to zero extend op2.
  
! 2017-03-25  Gerald Pfeifer  <gerald@pfeifer.com>
  
! 	* doc/install.texi (Configuration) <--with-aix-soname>:
! 	Update link to AIX ld.
  
! 2017-03-25  Bernd Schmidt  <bschmidt@redhat.com>
  
! 	PR rtl-optimization/80160
! 	PR rtl-optimization/80159
! 	* lra-assigns.c (must_not_spill_p): Tighten new test to also take
! 	reg_alternate_class into account.
  
! 2017-03-24  Vladimir Makarov  <vmakarov@redhat.com>
  
! 	PR target/80148
! 	* lra-assigns.c (assign_by_spills): Add spilled non-reload pseudos
! 	to consider in curr_insn_transform.
  
! 2017-03-24  Jakub Jelinek  <jakub@redhat.com>
  
! 	* genrecog.c (validate_pattern): Add VEC_SELECT validation.
! 	* genmodes.c (emit_min_insn_modes_c): Call emit_mode_nunits
! 	and emit_mode_inner.
  
! 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
  
! 	* config/s390/s390-builtins.def: Add VXE builtins.  Add a flags
! 	argument to the overloaded builtin variants.  Use the new flag to
! 	deprecate certain builtin variants.
! 	* config/s390/s390-builtin-types.def: Add new builtin types.
! 	* config/s390/s390-builtins.h: Support new flags field for
! 	overloaded builtins.
! 	* config/s390/s390-c.c (OB_DEF_VAR): New flags field.
! 	(s390_macro_to_expand): Enable vector float data type.
! 	(s390_cpu_cpp_builtins_internal): Indicate support of the new
! 	builtins by incrementing the __VEC__ version number.
! 	(s390_expand_overloaded_builtin): Support expansion of vec_xl and
! 	vec_xst.
! 	(s390_resolve_overloaded_builtin): Emit error messages depending
! 	on the builtin flags.
! 	* config/s390/s390.c (s390_expand_builtin): Support additional
! 	flags argument.  Change error message to match the messages
! 	emitted in s390-c.c.
! 	* config/s390/s390.md: New UNSPEC_* constants.
! 	(op_type): Add new instruction types.
! 	* config/s390/vecintrin.h: Add new builtins and test data class
! 	constants.
! 	* config/s390/vx-builtins.md (V_HW_32_64): Add V4SF.
! 	(V_HW_4, VEC_HW, VECF_HW): New mode iterators.
! 	(VEC_INEXACT, VEC_NOINEXACT): New constants.
! 	("vec_splats<mode>", "vec_insert<mode>", "vec_promote<mode>")
! 	("vec_insert_and_zero<mode>", "vec_mergeh<mode>")
! 	("vec_mergel<mode>"): V_HW -> VEC_HW.
  
! 	("vlrlrv16qi", "vstrlrv16qi", "vbpermv16qi", "vec_msumv2di")
! 	("vmslg", "*vftci<mode>_cconly", "vftci<mode>_intcconly")
! 	("*vftci<mode>", "vftci<mode>_intcc", "vec_double_s64")
! 	("vec_double_u64", "vfmin<mode>", "vfmax<mode>"): New definition.
  
! 	("and_av2df3", "and_cv2df3", "vec_andc_av2df3")
! 	("vec_andc_cv2df3", "xor_av2df3", "xor_cv2df3", "vec_nor_av2df3")
! 	("vec_nor_cv2df3", "ior_av2df3", "ior_cv2df3", "vec_nabs")
! 	("*vftcidb", "*vftcidb_cconly", "vftcidb"): Remove definition.
  
! 	("vec_all_<fpcmpcc:code>v2df", "vec_any_<fpcmpcc:code>v2df")
! 	("vec_scatter_elementv4si_DI", "vec_cmp<fpcmp:code>v2df")
! 	("vec_di_to_df_s64", "vec_di_to_df_u64", "vec_df_to_di_u64")
! 	("vfidb", "*vldeb", "*vledb", "*vec_cmp<insn_cmp>v2df_cconly")
! 	("vec_cmpeqv2df_cc", "vec_cmpeqv2df_cc", "vec_cmphv2df_cc")
! 	("vec_cmphev2df_cc", "*vec_cmpeqv2df_cc")
! 	("*vec_cmphv2df_cc", "*vec_cmphev2df_cc"): Enable new modes as ...
  
! 	("vec_all_<fpcmpcc:code><mode>", "vec_any_<fpcmpcc:code><mode>")
! 	("vec_scatter_element<V_HW_4:mode>_DI")
! 	("vec_cmp<fpcmp:code><mode>", "vcdgb", "vcdlgb", "vclgdb")
! 	("vec_fpint<mode>", "vflls")
! 	("vflrd", "*vec_cmp<insn_cmp><mode>_cconly", "vec_cmpeq<mode>_cc")
! 	("vec_cmpeq<mode>_cc", "vec_cmph<mode>_cc", "vec_cmphe<mode>_cc")
! 	("*vec_cmpeq<mode>_cc", "*vec_cmph<mode>_cc")
! 	("*vec_cmphe<mode>_cc"): ... these.
  
! 	("vec_ctd_s64", "vec_ctsl", "vec_ctul", "vec_st2f"): Use rounding
! 	mode constant instead of magic value.
  
! 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
  
! 	* config/s390/s390.c (s390_expand_vec_compare): Support other
! 	vector floating point modes than just V2DF.
! 	(s390_expand_vcond): Likewise.
! 	(s390_hard_regno_mode_ok): Allow SFmode values in VRs.
! 	(s390_cannot_change_mode_class): Prevent mode changes between TF
! 	and V1TF in vector registers.
! 	* config/s390/s390.md (DF, SF): New mode attributes.
! 	("*cmp<mode>_ccs", "add<mode>3", "sub<mode>3", "mul<mode>3")
! 	("fma<mode>4", "fms<mode>4", "div<mode>3", "*neg<mode>2"): Add
! 	SFmode support for VRs.
! 	* config/s390/vector.md (V_HW, V_HW2, VT_HW, ti*, nonvec): Add new
! 	vector fp modes.
! 	(VFT, VF_HW): New mode iterators.
! 	(vw, sdx): New mode attributes.
! 	("addv2df3", "subv2df3", "mulv2df3", "divv2df3", "sqrtv2df2")
! 	("fmav2df4","fmsv2df4", "negv2df2", "absv2df2", "*negabsv2df2")
! 	("smaxv2df3", "sminv2df3", "*vec_cmp<VFCMP_HW_OP:code>v2df_nocc")
! 	("vec_cmpuneqv2df", "vec_cmpltgtv2df", "vec_orderedv2df")
! 	("vec_unorderedv2df"): Adjust the v2df only patterns to support
! 	also the new vector floating point modes.  Renaming to ...
  
! 	("add<mode>3", "sub<mode>3", "mul<mode>3", "div<mode>3")
! 	("sqrt<mode>2", "fma<mode>4", "fms<mode>4", "neg<mode>2")
! 	("abs<mode>2", "negabs<mode>2", "smax<mode>3")
! 	("smin<mode>3", "*vec_cmp<VFCMP_HW_OP:code><mode>_nocc")
! 	("vec_cmpuneq<mode>", "vec_cmpltgt<mode>", "vec_ordered<mode>")
! 	("vec_unordered<mode>"): ... these.
  
! 	("neg_fma<mode>4", "neg_fms<mode>4", "*smax<mode>3_vxe")
! 	("*smin<mode>3_vxe", "*sminv2df3_vx", "*vec_extendv4sf")
! 	("*vec_extendv2df"): New insn definitions.
  
! 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
  
! 	* config/s390/s390.md ("*adddi3_sign", "*subdi3_sign", "mulditi3")
! 	("mulditi3_2", "*muldi3_sign"): New patterns.
! 	("muldi3", "*muldi3", "mulsi3", "*mulsi3"): Add an expander and
! 	rename the pattern definition.
  
! 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
  
! 	* config/s390/s390.md ("indirect_jump"): Turn insn definition into
! 	expander.
! 	("*indirect_jump", "*indirect2_jump"): New pattern definitions.
  
! 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
  
! 	* config/s390/s390.c (s390_expand_vec_init): Use vllezl
! 	instruction if possible.
! 	* config/s390/vector.md (vec_halfnumelts): New mode
! 	attribute.
! 	("*vec_vllezlf<mode>"): New pattern.
  
! 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
  
! 	* config/s390/vector.md ("popcountv16qi2", "popcountv8hi2")
! 	("popcountv4si2", "popcountv2di2"): Rename to ...
! 	("popcount<mode>2", "popcountv8hi2_vx", "popcountv4si2_vx")
! 	("popcountv2di2_vx"): ... these and add !TARGET_VXE to the
! 	condition.
! 	("popcount<mode>2_vxe"): New pattern.
  
! 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
  
! 	* common/config/s390/s390-common.c (processor_flags_table): Add
! 	arch12.
! 	* config.gcc: Add arch12.
! 	* config/s390/driver-native.c (s390_host_detect_local_cpu):
! 	Default to arch12 for unknown CPU model numbers.
! 	* config/s390/s390-builtins.def: Add B_VXE builtin flag.
! 	* config/s390/s390-c.c (s390_cpu_cpp_builtins_internal): Adjust
! 	PROCESSOR_max sanity check.
! 	* config/s390/s390-opts.h (enum processor_type): Add
! 	PROCESSOR_ARCH12.
! 	* config/s390/s390.c (processor_table): Add arch12.
! 	(s390_expand_builtin): Add check for B_VXE flag.
! 	(s390_issue_rate): Add PROCESSOR_ARCH12.
! 	(s390_get_sched_attrmask): Likewise.
! 	(s390_get_unit_mask): Likewise.
! 	(s390_sched_score): Enable z13 scheduling for arch12.
! 	(s390_sched_reorder): Likewise.
! 	(s390_sched_variable_issue): Likewise.
! 	* config/s390/s390.h (enum processor_flags): Add PF_ARCH12 and
! 	PF_VXE.
! 	(s390_tune_attr): Use z13 scheduling also for arch12.
! 	(TARGET_CPU_ARCH12, TARGET_CPU_ARCH12_P, TARGET_CPU_VXE)
! 	(TARGET_CPU_VXE_P, TARGET_ARCH12, TARGET_ARCH12_P, TARGET_VXE)
! 	(TARGET_VXE_P): New macros.
! 	* config/s390/s390.md: Add arch12 to cpu attribute.  Add arch12
! 	and vxe to cpu_facility.  Add arch12 and vxe to enabled attribute.
! 	* config/s390/s390.opt: Add arch12 as processor_type.
  
! 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
  
! 	* config/s390/s390.md
! 	("fixuns_truncdddi2", "fixuns_trunctddi2")
! 	("fixuns_trunc<BFP:mode><GPR:mode>2"): Merge into ...
! 	("fixuns_trunc<FP:mode><GPR:mode>2"): New expander.
  
! 	("fixuns_trunc<BFP:mode><GPR:mode>2", "fixuns_trunc<mode>si2"):
! 	Rename expanders to ...
  
! 	("fixuns_trunc<BFP:mode><GPR:mode>2_emu")
! 	("fixuns_truncdddi2_emu"): ... these.
  
! 	("fixuns_trunc<mode>si2_emu"): New expander.
  
! 	("*fixuns_truncdfdi2_z13"): Rename to ...
! 	("*fixuns_truncdfdi2_vx"): ... this.
  
! 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
  
! 	* config/s390/2964.md: Remove the single element vector compare
! 	instructions which are no longer used.
! 	* config/s390/s390.c (s390_select_ccmode): Remove handling of
! 	vector CCmodes.
! 	(s390_canonicalize_comparison): Remove handling of DFmode
! 	compares.
! 	(s390_expand_vec_compare_scalar): Remove function.
! 	(s390_emit_compare): Don't call s390_expand_vec_compare_scalar.
! 	* config/s390/s390.md ("*vec_cmp<insn_cmp>df_cconly"): Remove
! 	pattern.
! 	("*cmp<mode>_ccs"): Add wfcdb instruction.
  
! 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
  
! 	* config/s390/s390.md ("mov<mode>_64dfp" DD_DF): Use vleig for loading a
! 	FP zero.
! 	("*mov<mode>_64" DD_DF): Remove the vector instructions. These
! 	will anyway by matched by mov<mode>_64dfp.
  
! 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
  
! 	* config/s390/s390.md ("mov<mode>" SD_SF): Change vleg/vsteg to
! 	vlef/vstef.  Add missing operand to vleif.
  
! 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
  
! 	* config/s390/s390.c (s390_expand_vec_init): Enable vector load
! 	pair for all vector types with 64 bit elements.
! 	* config/s390/vx-builtins.md (V_HW_64): Move mode iterator to ...
! 	* config/s390/vector.md (V_HW_64): ... here.
! 	(V_128_NOSINGLE): New mode iterator.
! 	("vec_init<V_HW:mode>"): Use V_128 as mode iterator.
! 	("*vec_splat<mode>"): Use V_128_NOSINGLE mode iterator.
! 	("*vec_tf_to_v1tf", "*vec_ti_to_v1ti"): New pattern definitions.
! 	("*vec_load_pairv2di"): Change to ...
! 	("*vec_load_pair<mode>"): ... this one.
  
! 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
  
! 	* config/s390/constraints.md: Add comments.
! 	(jKK): Reject element sizes > 8 bytes.
! 	* config/s390/s390.c (s390_split_ok_p): Enable splitting also for
! 	s_operands.
! 	* config/s390/s390.md: Add the s_operand checks formerly in
! 	s390_split_ok_p to various splitters where they are still
! 	required.
! 	* config/s390/vector.md ("mov<mode>" V_128): Add GPR alternatives
! 	for 128 bit vectors.  Plus two splitters.
  
! 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
  
! 	* config/s390/s390.md: Rename the cpu facilty vec to vx throughout
! 	the file.
  
! 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
  
! 	PR target/79893
! 	* config/s390/s390-c.c (s390_adjust_builtin_arglist): Issue an
! 	error if the boundary argument is not constant.
  
! 2017-03-24  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR rtl-optimization/80112
! 	* loop-doloop.c (doloop_condition_get): Don't check condition
! 	if cmp isn't SET with IF_THEN_ELSE src.
  
! 2017-03-24  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
  
! 	PR tree-optimization/80158
! 	* gimple-ssa-strength-reduction.c (replace_mult_candidate): When
! 	replacing a candidate statement, also replace it for the
! 	candidate's alternate interpretation.
! 	(replace_rhs_if_not_dup): Likewise.
! 	(replace_one_candidate): Likewise.
  
! 2017-03-24  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/80167
! 	* graphite-isl-ast-to-gimple.c
! 	(translate_isl_ast_to_gimple::is_valid_rename): Handle default-defs
! 	properly.
! 	(translate_isl_ast_to_gimple::get_rename): Likewise.
  
! 2017-03-23  Kelvin Nilsen  <kelvin@gcc.gnu.org>
  
! 	* config/rs6000/rs6000.c (rs6000_option_override_internal): Change
! 	handling of certain combinations of target options, including the
! 	combinations -mpower8-vector vs. -mno-vsx, -mpower9-vector vs.
! 	-mno-power8-vector, and -mpower9_dform vs. -mno-power9-vector.
  
! 2017-03-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	PR target/71436
! 	* config/arm/arm.md (*load_multiple): Add reload_completed to
! 	matching condition.
  
! 2017-03-23  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
! 	    Richard Biener  <rguenth@suse.de>
  
! 	PR tree-optimization/79908
! 	PR tree-optimization/80136
! 	* tree-stdarg.c (expand_ifn_va_arg_1): For a VA_ARG whose LHS has
! 	been cast away, gimplify_and_add suffices.
  
! 2017-03-23  Markus Trippelsdorf  <markus@trippelsdorf.de>
  
! 	* tree-vrp.c (identify_jump_threads): Delete avail_exprs.
  
! 2017-03-23  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/80032
! 	* gimplify.c (gimple_push_cleanup): Forced unconditional
! 	cleanups still have to go to the conditional_cleanups
! 	sequence.
  
! 2017-03-22  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/80072
! 	* tree-ssa-reassoc.c (struct operand_entry): Change id field type
! 	to unsigned int.
! 	(next_operand_entry_id): Change type to unsigned int.
! 	(sort_by_operand_rank): Make sure to return the right return value
! 	even if unsigned fields are bigger than INT_MAX.
! 	(struct oecount): Change cnt and id type to unsigned int.
! 	(oecount_hasher::equal): Formatting fix.
! 	(oecount_cmp): Make sure to return the right return value
! 	even if unsigned fields are bigger than INT_MAX.
! 	(undistribute_ops_list): Change next_oecount_id type to unsigned int.
  
! 	PR c++/80129
! 	* gimplify.c (gimplify_modify_expr_rhs) <case COND_EXPR>: Clear
! 	TREE_READONLY on result if writing it more than once.
  
! 	PR sanitizer/80110
! 	* doc/invoke.texi (-fsanitize=thread): Document that with
! 	-fnon-call-exceptions atomics are not able to throw
! 	exceptions.
  
! 	PR sanitizer/80110
! 	* tsan.c: Include tree-eh.h.
! 	(instrument_builtin_call): Call maybe_clean_eh_stmt or
! 	maybe_clean_or_replace_eh_stmt where needed.
! 	(instrument_memory_accesses): Add cfg_changed argument.
! 	Call gimple_purge_dead_eh_edges on each block and set *cfg_changed
! 	if it returned true.
! 	(tsan_pass): Adjust caller.  Return TODO_cleanup_cfg if cfg_changed.
  
! 	PR rtl-optimization/63191
! 	* config/i386/i386.c (ix86_delegitimize_address): Turn into small
! 	wrapper function, moved the whole old content into ...
! 	(ix86_delegitimize_address_1): ... this.  New inline function.
! 	(ix86_find_base_term): Use ix86_delegitimize_address_1 with
! 	true as last argument instead of ix86_delegitimize_address.
  
! 2017-03-22  Wilco Dijkstra  <wdijkstr@arm.com>
  
! 	* config/aarch64/aarch64.c (generic_branch_cost): Copy
! 	cortexa57_branch_cost.
  
! 2017-03-22  Wilco Dijkstra  <wdijkstr@arm.com>
  
! 	* config/aarch64/aarch64.c (generic_tunings): Add AES fusion.
  
! 2017-03-21  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
  
! 	PR target/80123
! 	* doc/md.texi (Constraints): Document wA constraint.
! 	* config/rs6000/constraints.md (wA): New.
! 	* config/rs6000/rs6000.c (rs6000_debug_reg_global): Add wA reg_class.
! 	(rs6000_init_hard_regno_mode_ok): Init wA constraint.
! 	* config/rs6000/rs6000.h (RS6000_CONSTRAINT_wA): New.
! 	* config/rs6000/vsx.md (vsx_splat_<mode>): Use wA constraint.
  
! 2017-03-22  Cesar Philippidis  <cesar@codesourcery.com>
  
! 	PR c++/80029
! 	* gimplify.c (is_oacc_declared): New function.
! 	(oacc_default_clause): Use it to set default flags for acc declared
! 	variables inside parallel regions.
! 	(gimplify_scan_omp_clauses): Strip firstprivate pointers for acc
! 	declared variables.
! 	(gimplify_oacc_declare): Gimplify the declare clauses.  Add the
! 	declare attribute to any decl as necessary.
  
! 2017-03-22  Thomas Preud'homme  <thomas.preudhomme@arm.com>
  
! 	PR target/80082
! 	* config/arm/arm-isa.h (isa_bit_lpae): New feature bit.
! 	(ISA_ARMv7ve): Add isa_bit_lpae to the definition.
! 	* config/arm/arm-protos.h (arm_arch7ve): Rename into ...
! 	(arm_arch_lpae): This.
! 	* config/arm/arm.c (arm_arch7ve): Rename into ...
! 	(arm_arch_lpae): This.  Define it in term of isa_bit_lpae.
! 	* config/arm/arm.h (TARGET_HAVE_LPAE): Redefine in term of
! 	arm_arch_lpae.
  
! 2017-03-22  Martin Liska  <mliska@suse.cz>
  
! 	PR target/79906
! 	* config/rs6000/rs6000.c (rs6000_inner_target_options): Show
! 	error message instead of an ICE.
  
! 2017-03-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
  
! 	* doc/extend.texi (6.11 Additional Floating Types): Revise.
  
! 2017-03-21  Kelvin Nilsen  <kelvin@gcc.gnu.org>
  
! 	* config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Add
! 	comments.
! 	* config/rs6000/rs6000.c (rs6000_option_override_internal): Add
! 	comments.
  
! 2017-03-21  Martin Sebor  <msebor@redhat.com>
  
! 	* doc/extend.texi: Use "cannot" instead of "can't."
! 	* doc/hostconfig.texi: Same.
! 	* doc/install.texi: Same.
! 	* doc/invoke.texi: Same.
! 	* doc/loop.texi: Same.
! 	* doc/md.texi: Same.
! 	* doc/objc.texi: Same.
! 	* doc/rtl.texi: Same.
! 	* doc/tm.texi: Same.
! 	* doc/tm.texi.in: Same.
! 	* doc/trouble.texi: Same.
  
! 2017-03-21  Alexandre Oliva <aoliva@redhat.com>
  
! 	PR debug/63238
! 	* dwarf2out.c (struct checksum_attributes): Add at_alignment.
! 	(collect_checksum_attributes): Set it.
! 	(die_checksum_ordered): Use it.
  
! 2017-03-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
  
! 	PR tree-optimization/79908
! 	* tree-stdarg.c (expand_ifn_va_arg_1): Revert the following
! 	change: For a VA_ARG whose LHS has been cast away, use
! 	force_gimple_operand to construct the side effects.
  
! 2017-03-21  David Malcolm  <dmalcolm@redhat.com>
  
! 	PR translation/80001
! 	* omp-offload.c (oacc_loop_fixed_partitions): Make diagnostics
! 	more amenable to translation.
! 	(oacc_loop_auto_partitions): Likewise.
  
! 2017-03-21  Marek Polacek  <polacek@redhat.com>
  	    Martin Sebor  <msebor@redhat.com>
  
! 	PR tree-optimization/80109
! 	* gimple-ssa-warn-alloca.c (alloca_call_type): Only call get_range_info
! 	on INTEGRAL_TYPE_P.
! 
! 2017-03-21  Jakub Jelinek  <jakub@redhat.com>
! 	    Segher Boessenkool  <segher@kernel.crashing.org>
! 
! 	PR target/80125
! 	* combine.c (can_combine_p): Revert the 2017-03-20 change, only
! 	check reg_used_between_p between insn and one of succ or succ2
! 	depending on if succ is artificial insn not inserted into insn
! 	stream.
! 
! 2017-03-21  Martin Liska  <mliska@suse.cz>
! 
! 	PR gcov-profile/80081
! 	* Makefile.in: Add gcov-dump and fix installation of gcov-tool.
! 	* doc/gcc.texi: Include gcov-dump stuff.
! 	* doc/gcov-dump.texi: New file.
! 
! 2017-03-21  Toma Tabacu  <toma.tabacu@imgtec.com>
! 
! 	PR rtl-optimization/79150
! 	* config/mips/mips.c (mips_block_move_loop): Emit a NOP after the
! 	conditional jump, if the jump is the last insn of the loop.
! 
! 2017-03-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
! 	    Richard Biener  <rguenth@suse.de>
! 
! 	PR tree-optimization/79908
! 	* tree-stdarg.c (expand_ifn_va_arg_1): For a VA_ARG whose LHS has
! 	been cast away, use force_gimple_operand to construct the side
! 	effects.
! 
! 2017-03-21  Martin Liska  <mliska@suse.cz>
! 
! 	PR libfortran/79956
! 	* simplify-rtx.c (simplify_immed_subreg): Initialize a variable
! 	to NULL.
! 
! 2017-03-21  Brad Spengler <spender@grsecurity.net>
! 
! 	PR plugins/80094
! 	* plugin.c (htab_hash_plugin): New function.
! 	(add_new_plugin): Use it and adjust.
! 	(parse_plugin_arg_opt): Adjust.
! 	(init_one_plugin): Likewise.
! 
! 2017-03-21  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/80032
! 	* gimplify.c (gimple_push_cleanup): Add force_uncond parameter,
! 	if set force the cleanup to happen unconditionally.
! 	(gimplify_target_expr): Push inserted clobbers with force_uncond
! 	to avoid them being removed by control-dependent DCE.
! 
! 2017-03-21  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/80122
! 	* tree-inline.c (copy_bb): Do not expans va-arg packs or
! 	va_arg_pack_len when the inlined call stmt requires pack
! 	expansion itself.
! 	* tree-inline.h (struct copy_body_data): Make call_stmt a gcall *.
! 
! 2017-03-21  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR sanitizer/78158
! 	* tsan.c (instrument_builtin_call): If the memory model argument
! 	is not a constant, assume it is valid.
! 
! 	PR c/67338
! 	* fold-const.c (round_up_loc): Negate divisor in unsigned type to
! 	avoid UB.
! 
! 2017-03-20  Segher Boessenkool  <segher@kernel.crashing.org>
! 
! 	PR rtl-optimization/79910
! 	* combine.c (can_combine_p): Do not allow combining an I0 or I1
! 	if its dest is used by an insn before I2 (other than the combined
! 	insns themselves, which are properly handled already).
! 
! 2017-03-20  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	Revert:
! 	2017-03-17  Bernd Schmidt  <bschmidt@redhat.com>
  
! 	* combine.c (record_used_regs): New static function.
! 	(try_combine): Handle situations where there is an additional
! 	instruction between I2 and I3 which needs to have a LOG_LINK
! 	updated.
  
! 	Revert:
! 	2017-03-17  Jim Wilson  <jim.wilson@linaro.org>
  
! 	* combine.c (try_combine): Delete redundant i1 test.  Call
! 	prev_nonnote_nondebug_insn instead of prev_nonnote_insn.
  
! 2017-03-20  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
  
! 	PR target/80083
! 	* config/rs6000/rs6000.md (*movsi_internal1): Fix constraints for
! 	alternatives 13/14.
  
! 2017-03-20  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
  
! 	PR tree-optimization/80054
! 	* gimple-ssa-strength-reduction.c (all_phi_incrs_profitable): Fail
! 	the optimization if a PHI or any of its arguments is not dominated
! 	by the candidate's basis.  Use gphi* rather than gimple* as
! 	appropriate.
! 	(replace_profitable_candidates): Clean up a gimple* variable that
! 	should be a gphi* variable.
  
! 2017-03-20  Martin Sebor  <msebor@redhat.com>
  
! 	PR c++/52477
! 	* doc/extend.texi (attribute constructor): Document present limitation.
  
! 2017-03-20  Kelvin Nilsen  <kelvin@gcc.gnu.org>
  
! 	PR target/79963
! 	* config/rs6000/altivec.h (vec_all_ne): Under __cplusplus__ and
! 	__POWER9_VECTOR__ #ifdef control, change template definition to
! 	use Power9-specific built-in function.
! 	(vec_any_eq): Likewise.
! 	* config/rs6000/vector.md (vector_ae_v2di_p): Change the flag used
! 	to control outcomes from this test.
! 	(vector_ae_<mode>p): For VEC_F modes, likewise.
  
! 2017-03-20  Ian Lance Taylor  <iant@google.com>
  
! 	* config/i386/i386.c (ix86_function_regparm): Save an extra
! 	register for -fsplit-stack with DECL_STATIC_CHAIN.
  
! 2017-03-17  Palmer Dabbelt  <palmer@dabbelt.com>
  
! 	PR target/79912
! 	* config/riscv/riscv.c (riscv_preferred_reload_class): Remove.
! 	(TARGET_PREFERRED_RELOAD_CLASS): Likewise.
  
! 2017-03-17  Palmer Dabbelt  <palmer@dabbelt.com>
  
! 	* config/riscv/riscv.c (riscv_print_operand): Use "fence
! 	iorw,ow".
! 	* config/riscv/sync.mc (mem_thread_fence_1): Use "fence
! 	iorw,iorw".
  
! 2017-03-20  Marek Polacek  <polacek@redhat.com>
  
! 	PR sanitizer/80063
! 	* asan.c (DEF_SANITIZER_BUILTIN): Use do { } while (0).
  
! 2017-03-20  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/80113
! 	* graphite-isl-ast-to-gimple.c (copy_loop_phi_nodes): Do not
! 	allocate extra SSA name for PHI def.
! 	(add_close_phis_to_outer_loops): Likewise.
! 	(add_close_phis_to_merge_points): Likewise.
! 	(copy_loop_close_phi_args): Likewise.
! 	(copy_cond_phi_nodes): Likewise.
  
! 2017-03-20  Martin Liska  <mliska@suse.cz>
  
! 	PR middle-end/79753
! 	* tree-chkp.c (chkp_build_returned_bound): Do not build
! 	returned bounds for a LHS that's not a BOUNDED_P type.
  
! 2017-03-20  Martin Liska  <mliska@suse.cz>
  
! 	PR target/79769
! 	PR target/79770
! 	* tree-chkp.c (chkp_find_bounds_1): Handle REAL_CST,
! 	COMPLEX_CST and VECTOR_CST.
  
! 2017-03-20  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
  
! 	PR target/78857
! 	* config/s390/s390.md ("cmp<mode>_ccs_0"): Add a clobber of the
! 	target operand.  A new splitter adds the clobber statement in case
! 	the target operand is dead anyway.
  
! 2017-03-19  Gerald Pfeifer  <gerald@pfeifer.com>
  
! 	* doc/install.texi (Specific) <sparc-*-linux*>: No longer refer
! 	to age-old versions of binutils and glibc.
  
! 2017-03-18  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	* doc/contrib.texi (Contributors): Remove duplicate entry for myself.
  
! 2017-03-18  Gerald Pfeifer  <gerald@pfeifer.com>
  
! 	* doc/contrib.texi (Contributors): Add Segher Boessenkool.
  
! 2017-03-18  Gerald Pfeifer  <gerald@pfeifer.com>
  
! 	* doc/install.texi (Specific) <arm-*-eabi>: Remove old
! 	requirement for binutils 2.13.
  
! 2017-03-17  Jim Wilson  <jim.wilson@linaro.org>
  
! 	* combine.c (try_combine): Delete redundant i1 test.  Call
! 	prev_nonnote_nondebug_insn instead of prev_nonnote_insn.
  
! 2017-03-17  Palmer Dabbelt  <palmer@dabbelt.com
  
! 	* doc/install.texi (Specific) <riscv32-*-elf>: Add riscv32-*-elf,
! 	riscv32-*-linux, riscv64-*-elf, riscv64-*-linux to the table of
! 	contents.
! 	<riscv64-*-elf>: Re-arrange section
! 	<riscv32-*-elf>: Add a note about requiring binutils 2.28.
! 	<riscv32-*-linux>: Likewise.
! 	<riscv64-*-elf>: Likewise
! 	<riscv64-*-linux>: Likewise.
  
! 2017-03-17  Richard Earnshaw  <rearnsha@arm.com>
  
! 	PR target/80052
! 	* aarch64.opt(verbose-cost-dump): Fix typo.
  
! 2017-03-17  Pat Haugen  <pthaugen@us.ibm.com>
  
! 	PR target/79951
! 	* config/rs6000/rs6000.md (copysign<mode>3_fcpsgn): Test
! 	for VECTOR_UNIT_VSX_P (<MODE>mode) too.
  
! 2017-03-17  Bernd Schmidt  <bschmidt@redhat.com>
  
! 	* reload.c (find_reloads): When reloading a nonoffsettable address,
! 	use RELOAD_OTHER for it and its address reloads.
  
! 	PR rtl-optimization/79910
! 	* combine.c (record_used_regs): New static function.
! 	(try_combine): Handle situations where there is an additional
! 	instruction between I2 and I3 which needs to have a LOG_LINK
! 	updated.
  
! 2017-03-17  Jeff Law  <law@redhat.com>
  
! 	PR tree-optimization/71437
! 	* tree-vrp.c (simplify_stmt_for_jump_threading): Lookup the
! 	conditional in the hash table first.
! 	(vrp_dom_walker::before_dom_children): Extract condition from
! 	ASSERT_EXPR.  Record condition, its inverion and any implied
! 	conditions as well.
  
! 2017-03-17  Marek Polacek  <polacek@redhat.com>
! 	    Markus Trippelsdorf  <markus@trippelsdorf.de>
  
! 	PR tree-optimization/80079
! 	* gimple-ssa-store-merging.c (class pass_store_merging): Initialize
! 	m_stores_head.
  
! 2017-03-17  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/80075
! 	* tree-eh.c (stmt_could_throw_1_p): Only handle gimple assigns.
! 	Properly verify the LHS before the RHS possibly claims to be
! 	handled.
! 	(stmt_could_throw_p): Hande gimple conds fully here.  Clobbers
! 	do not throw.
  
! 2017-03-17  Martin Jambor  <mjambor@suse.cz>
  
! 	* doc/invoke.texi (Option Options): Include -fipa-vrp in the list.
! 	(List of -O2 options): Likewise.
! 	(-fipa-bit-cp): Replace "ipa" with "interprocedural."
! 	(-fipa-vrp) New.
  
! 2017-03-17  Tom de Vries  <tom@codesourcery.com>
  
! 	* gcov-dump.c (print_usage): Print bug_report_url.
  
! 2017-03-17  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/80050
! 	* genmatch.c (parser::next): Remove pointless check for CPP_EOF.
! 	(parser::peek): Likewise.
  
! 2017-03-17  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/80048
! 	* sese.c (free_sese_info): Properly release rename_map and
! 	copied_bb_map elements.
  
! 2017-03-16  Alexandre Oliva <aoliva@redhat.com>
  
! 	* gimple-ssa-store-merging.c (struct imm_store_chain_info):
! 	Add linked-list forward and backlinks.  Insert on
! 	construction, remove on destruction.
! 	(class pass_store_merging): Add m_stores_head field.
! 	(pass_store_merging::terminate_and_process_all_chains):
! 	Iterate over m_stores_head list.
! 	(pass_store_merging::terminate_all_aliasing_chains):
! 	Likewise.
! 	(pass_store_merging::execute): Check for debug stmts first.
! 	Push new chains onto the m_stores_head stack.
  
! 2017-03-16  Michael Meissner  <meissner@linux.vnet.ibm.com>
  
! 	PR target/71294
! 	* config/rs6000/vsx.md (vsx_splat_<mode>, VSX_D iterator): Allow a
! 	SPLAT operation on ISA 2.07 64-bit systems that have direct move,
! 	but no MTVSRDD support, by doing MTVSRD and XXPERMDI.
  
! 2017-03-16  Jeff Law  <law@redhat.com>
  
! 	PR tree-optimization/71437
! 	* tree-ssa-dom.c (dom_opt_dom_walker): Remove thread_across_edge
! 	member function.  Implementation moved into after_dom_children
! 	member function and into the threader's thread_outgoing_edges
! 	function.
! 	(dom_opt_dom_walker::after_dom_children): Simplify by moving
! 	some code into new thread_outgoing_edges.
! 	* tree-ssa-threadedge.c (thread_across_edge): Make static and simplify
! 	definition.  Simplify marker handling (do it here).   Assume we always
! 	have the available expression and the const/copies tables.
! 	(thread_outgoing_edges): New function extracted from tree-ssa-dom.c
! 	and tree-vrp.c
! 	* tree-ssa-threadedge.h (thread_outgoing_edges): Declare.
! 	* tree-vrp.c (equiv_stack): No longer file scoped.
! 	(vrp_dom_walker): New class.
! 	(vrp_dom_walker::before_dom_children): New member function.
! 	(vrp_dom_walker::after_dom_children): Likewise.
! 	(identify_jump_threads):  Setup domwalker.  Use it rather than
! 	walking edges in a random order by hand.  Simplify setup/finalization.
! 	(finalize_jump_threads): Remove.
! 	(vrp_finalize): Do not call identify_jump_threads here.
! 	(execute_vrp): Do it here instead and call thread_through_all_blocks
! 	here too.
  
! 	PR tree-optimization/71437
! 	* tree-ssa-dom.c (pfn_simplify): Add basic_block argument.  All
! 	callers changed.
! 	(simplify_stmt_for_jump_threading): Add basic_block argument.  All
! 	callers changed.
! 	(lhs_of_dominating_assert): Moved from here into tree-vrp.c.
! 	(dom_opt_dom_walker::thread_across_edge): Remove
! 	handle_dominating_asserts argument.  All callers changed.
! 	(record_temporary_equivalences_from_stmts_at_dest): Corresponding
! 	changes.  Remove calls to lhs_of_dominating_assert.  Other
! 	uses of handle_dominating_asserts turn into unconditional code
! 	(simplify_control_stmt_condition_1): Likewise.
! 	(simplify_control_stmt_condition): Likewise.
! 	(thread_through_normal_block, thread_across_edge): Likewise.
! 	* tree-ssa-threadedge.h (thread_across_edge): Corresponding changes.
! 	* tree-vrp.c (lhs_of_dominating_assert): Move here.  Return original
! 	object if it is not an SSA_NAME.
! 	(simplify_stmt_for_jump_threading): Call lhs_of_dominating_assert
! 	before calling into the VRP specific simplifiers.
! 	(identify_jump_threads): Remove handle_dominating_asserts
! 	argument.
  
! 2017-03-16  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR fortran/79886
! 	* tree-diagnostic.c (default_tree_printer): No longer static.
! 	* tree-diagnostic.h (default_tree_printer): New prototype.
  
! 2017-03-16  Tamar Christina  <tamar.christina@arm.com>
  
! 	* config/aarch64/aarch64-simd.md (*aarch64_simd_mov<mode>)
! 	Change ins into fmov.
  
! 2017-03-16  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/aarch64/iterators.md (h_con): Return "x" for V4HF and V8HF.
! 	* config/aarch64/aarch64-simd.md (*aarch64_fma4_elt_from_dup<mode>):
! 	Use h_con constraint for operand 1.
! 	(*aarch64_fnma4_elt_from_dup<mode>): Likewise.
! 	(*aarch64_mulx_elt_from_dup<mode>): Likewise for operand 2.
  
! 2017-03-15  Jeff Law  <law@redhat.com>
  
! 	PR tree-optimization/71437
! 	* tree-ssa-dom.c (derive_equivalences_from_bit_ior): New function.
! 	(record_temporary_equivalences): Use it.
  
! 	PR tree-optimization/71437
! 	* tree-ssa-dom.c (struct cond_equivalence): Moved from here into
! 	tree-ssa-scopedtables.
! 	(lookup_avail_expr, build_and_record_new_cond): Likewise.
! 	(record_conditions, record_cond, vuse_eq): Likewise.
! 	(record_edge_info): Adjust to API tweak of record_conditions.
! 	(simplify_stmt_for_jump_threading): Similarly for lookup_avail_expr.
! 	(record_temporary_equivalences, optimize_stmt): Likewise.
! 	(eliminate_redundant_computations): Likewise.
! 	(record_equivalences_from_stmt): Likewise.
! 	* tree-ssa-scopedtables.c: Include options.h and params.h.
! 	(vuse_eq): New function, moved from tree-ssa-dom.c
! 	(build_and_record_new_cond): Likewise.
! 	(record_conditions): Likewise.  Accept vector of conditions rather
! 	than edge_equivalence structure for first argument.
! 	for the first argument.
! 	(avail_exprs_stack::lookup_avail_expr): New member function, moved
! 	from tree-ssa-dom.c.
! 	(avail_exprs_stack::record_cond): Likewise.
! 	* tree-ssa-scopedtables.h (struct cond_equivalence): Moved here
! 	from tree-ssa-dom.c.
! 	(avail_exprs_stack): Add new member functions lookup_avail_expr
! 	and record_cond.
! 	(record_conditions): Declare.
  
! 2017-03-15  Vladimir Makarov  <vmakarov@redhat.com>
  
! 	PR target/80017
! 	* lra-constraints.c (process_alt_operands): Increase reject for
! 	reloading an input/output operand.
  
! 2017-03-15  Michael Meissner  <meissner@linux.vnet.ibm.com>
  
! 	PR target/79038
! 	* config/rs6000/rs6000.md (float<QHI:mode><IEEE128:mode>2): Define
! 	insns to convert from signed/unsigned char/short to IEEE 128-bit
! 	floating point.
! 	(floatuns<QHI:mode><IEEE128:mode>2): Likewise.
  
! 2017-03-15  Uros Bizjak  <ubizjak@gmail.com>
  
! 	PR target/80019
! 	* config/i386/i386.c (ix86_vector_duplicate_value): Create
! 	subreg of inner mode for values already in registers.
  
! 2017-03-15  Bernd Schmidt  <bschmidt@redhat.com>
  
! 	* config/c6x/c6x.c (hwloop_optimize): Handle case where the old
! 	iteration reg is used after the loop.
  
! 2017-03-14  Martin Sebor  <msebor@redhat.com>
  
! 	PR tree-optimization/79800
! 	* gimple-ssa-sprintf.c (format_floating: Add argument.  Handle
! 	precision in negative-positive range.
! 	(format_floating): Call non-const overload with adjusted precision.
  
! 2017-03-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
  
! 	PR target/79947
! 	* config/rs6000/rs6000.h (TARGET_FRSQRTES): Add check for
! 	-mpowerpc-gfxopt.
  
! 2017-03-14  Martin Sebor  <msebor@redhat.com>
  
! 	PR middle-end/80020
! 	* builtin-attrs.def (ATTR_ALLOC_SIZE_2_NOTHROW_LIST): New macro.
! 	* builtins.def (aligned_alloc): Use it.
  
! 	PR c/79936
! 	* Makefile.in (GTFILES): Add calls.c.
! 	* calls.c: Include "gt-calls.h".
  
! 2017-03-14  Bernd Schmidt  <bschmidt@redhat.com>
  
! 	PR rtl-optimization/79728
! 	* regs.h (struct target_regs): New field
! 	x_contains_allocatable_regs_of_mode.
! 	(contains_allocatable_regs_of_mode): New macro.
! 	* reginfo.c (init_reg_sets_1): Initialize it, and change
! 	contains_reg_of_mode so it includes global regs as well.
! 	* reload.c (push_reload): Use contains_allocatable_regs_of_mode
! 	rather than contains_regs_of_mode.
  
! 2017-03-14  Martin Liska  <mliska@suse.cz>
  
! 	* doc/invoke.texi: Document options that can't be combined with
! 	-fcheck-pointer-bounds.
  
! 2017-03-14  Martin Liska  <mliska@suse.cz>
  
! 	PR middle-end/79831
! 	* doc/invoke.texi (-Wchkp): Document the option.
  
! 2017-03-14  Martin Liska  <mliska@suse.cz>
  
! 	* Makefile.in: Install gcov-dump.
  
! 2017-03-14  Martin Liska  <mliska@suse.cz>
  
! 	* multiple_target.c (expand_target_clones): Bail out for
! 	an invalid attribute.
  
! 2017-03-14  Richard Biener  <rguenther@suse.de>
  
! 	* alias.c (struct alias_set_entry): Pack properly.
! 	* cfgloop.h (struct loop): Likewise.
! 	* cse.c (struct set): Likewise.
! 	* ipa-utils.c (struct searchc_env): Likewise.
! 	* loop-invariant.c (struct invariant): Likewise.
! 	* lra-remat.c (struct cand): Likewise.
! 	* recog.c (struct change_t): Likewise.
! 	* rtl.h (struct address_info): Likewise.
! 	* symbol-summary.h (function_summary): Likewise.
! 	* tree-loop-distribution.c (struct partition): Likewise.
! 	* tree-object-size.c (struct object_size_info): Likewise.
! 	* tree-ssa-loop-ivopts.c (struct cost_pair): Likewise.
! 	* tree-ssa-threadupdate.c (struct ssa_local_info_t): Likewise.
! 	* tree-vect-data-refs.c (struct _vect_peel_info): Likewise.
! 	* tree-vect-slp.c (struct _slp_oprnd_info): Likewise.
! 	* tree-vect-stmts.c (struct simd_call_arg_info): Likewise.
! 	* tree-vectorizer.h (struct _loop_vec_info): Likewise.
! 	(struct _stmt_vec_info): Likewise.
  
! 2017-03-14  Martin Liska  <mliska@suse.cz>
  
! 	PR target/79892
! 	* multiple_target.c (create_dispatcher_calls): Check that
! 	a target can create a function dispatcher.
  
! 2017-03-14  Martin Liska  <mliska@suse.cz>
  
! 	PR lto/66295
! 	* multiple_target.c (expand_target_clones): Drop local.local
! 	flag for default implementation.
  
! 2017-03-14  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/80030
! 	* tree-vect-stmts.c (vectorizable_store): Plug memleak.
  
! 2017-03-13  Kito Cheng  <kito.cheng@gmail.com>
  
! 	* config/riscv/riscv.c (riscv_emit_float_compare>: Use
! 	gcc_fallthrough() instead of __attribute__((fallthrough));
  
! 2017-03-13  Gerald Pfeifer  <gerald@pfeifer.com>
  
! 	* doc/gcc.texi: Remove "up" link to (DIR).
! 	* doc/gccint.texi: Ditto.
  
! 2017-03-13  Gerald Pfeifer  <gerald@pfeifer.com>
  
! 	* doc/install.texi (Specific) <avr>: Remove reference to
! 	binutils 2.13.
  
! 2017-03-13  Jeff Law  <law@redhat.com>
  
! 	* config/riscv/riscv.c (riscv_emit_float_compare): Use fallthru
! 	attribute rather than comments.
  
! 	* config/pdp11/pdp11.md (movmemhi): Adjust operand numbers to
! 	match_scratch operand is highest.
  
! 2017-03-13  Martin Liska  <mliska@suse.cz>
  
! 	PR middle-end/78339
! 	* ipa-pure-const.c (warn_function_noreturn): If the declarations
! 	is a CHKP clone, use original declaration.
  
! 2017-03-13  Claudiu Zissulescu  <claziss@synopsys.com>
  
! 	* config/arc/arc.c (arc_init): Use multiplier whenever we have it.
! 	(arc_conditional_register_usage): Use a different allocation order
! 	when optimizing for size.
! 	* common/config/arc/arc-common.c (arc_option_optimization_table):
! 	Section anchors default on when optimizing for size.
  
! 2017-03-13  Claudiu Zissulescu  <claziss@synopsys.com>
  
! 	* config/arc/arc.md (*tst_bitfield_tst): Fix pattern.
  
! 2017-03-13  Claudiu Zissulescu  <claziss@synopsys.com>
  
! 	* config/arc/arc.c (arc_output_addsi): Emit code density adds.
! 	* config/arc/arc.md (cpu_facility): Add cd variant.
! 	(*movqi_insn): Add code density variant.
! 	(*movhi_insn): Likewise.
! 	(*movqi_insn): Likewise.
! 	(*addsi3_mixed): Likewise.
! 	(subsi3_insn): Likewise.
  
! 2017-03-13  Claudiu Zissulescu  <claziss@synopsys.com>
  
! 	* config/arc/arc.md (movsi_cond_exec): Update constraint.
  
! 2017-03-13  Claudiu Zissulescu  <claziss@synopsys.com>
  
! 	* config/arc/arc.c (arc_legitimize_pic_address): Handle PIC
! 	expressions with MINUS and UNARY ops.
  
! 2017-03-13  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	PR target/79911
! 	* config/arm/neon.md (vec_sel_widen_ssum_lo<VQI:mode><VW:mode>3):
! 	Rename to...
! 	(vec_sel_widen_ssum_lo<mode><V_half>3): ... This. Avoid mismatch
! 	between vec_select and vector argument.
! 	(vec_sel_widen_ssum_hi<VQI:mode><VW:mode>3): Rename to...
! 	(vec_sel_widen_ssum_hi<mode><V_half>3): ... This. Likewise.
! 	(vec_sel_widen_usum_lo<VQI:mode><VW:mode>3): Rename to...
! 	(vec_sel_widen_usum_lo<mode><V_half>3): ... This.
! 	(vec_sel_widen_usum_hi<VQI:mode><VW:mode>3): Rename to...
! 	(vec_sel_widen_usum_hi<mode><V_half>3): ... This.
  
! 2017-03-13  Richard Biener  <rguenther@suse.de>
  
! 	PR other/79991
! 	* params.def (vect-max-peeling-for-alignment): Fix typo.
  
! 2017-03-12  Gerald Pfeifer  <gerald@pfeifer.com>
  
! 	* doc/install.texi (Specific) <mips-*-*>: Remove description of
! 	issue that only occurred with binutils below 2.18.
  
! 2017-03-12  Gerald Pfeifer  <gerald@pfeifer.com>
  
! 	* doc/install.texi (Specific) <cris-axis-elf>: No longer
! 	refer to binutils 2.11/2.12 minimum.
  
! 2017-03-12  Gerald Pfeifer  <gerald@pfeifer.com>
  
! 	* doc/install.texi (Specific) <powerpc-*-*>: Remove link to
! 	ftp.kernel.org and simplify binutils requirement.
  
! 2017-03-11  Gerald Pfeifer  <gerald@pfeifer.com>
  
! 	* doc/invoke.texi (Warning Options): Fix spelling of link-time
! 	optimization.
! 	(Optimize Options): Ditto.  Also remove redundancy.
  
! 2017-03-10  David Malcolm  <dmalcolm@redhat.com>
  
! 	PR translation/79848
! 	* ipa-devirt.c (warn_types_mismatch): Simplify uses of "%<%s%>" to
! 	"%qs".
! 	* ipa-pure-const.c (suggest_attribute): Likewise.  Convert _
! 	to G_ to avoid double translation.
  
! 2017-03-10  David Malcolm  <dmalcolm@redhat.com>
  
! 	PR translation/79923
! 	* auto-profile.c (get_combined_location): Convert leading
! 	character of diagnostics to lower case and remove trailing period.
! 	(read_profile): Likewise for various diagnostics.
! 	* config/arm/arm.c (arm_option_override): Remove trailing period
! 	from various diagnostics.
! 	* config/msp430/msp430.c (msp430_expand_delay_cycles): Likewise.
! 	(msp430_expand_delay_cycles): Likewise.
  
! 2017-03-10  David Malcolm  <dmalcolm@redhat.com>
  
! 	PR target/79925
! 	* config/aarch64/aarch64.c (aarch64_validate_mcpu): Quote the
! 	full command-line argument, rather than just "str".
! 	(aarch64_validate_march): Likewise.
! 	(aarch64_validate_mtune): Likewise.
  
! 2017-03-10  Bernd Schmidt  <bschmidt@redhat.com>
  
! 	PR rtl-optimization/78911
! 	* lra-assigns.c (must_not_spill_p): New function.
! 	(spill_for): Use it.
  
! 2017-03-10  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/79981
! 	* tree-vrp.c (extract_range_basic): Handle IMAGPART_EXPR of
! 	ATOMIC_COMPARE_EXCHANGE ifn result.
! 	(stmt_interesting_for_vrp, vrp_visit_stmt): Handle
! 	IFN_ATOMIC_COMPARE_EXCHANGE.
  
! 2017-03-10  David Malcolm  <dmalcolm@redhat.com>
  
! 	PR driver/79875
! 	* opts.c (parse_sanitizer_options): Add missing question mark to
! 	"did you mean" message.
  
! 2017-03-10  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
  
! 	* config/rs6000/rs6000-builtin.def (VMULEUB_UNS): Remove orphaned
! 	built-in.
! 	(VMULEUH_UNS): Likewise.
! 	(VMULOUB_UNS): Likewise.
! 	(VMULOUH_UNS): Likewise.
! 	* config/rs6000/rs6000.c (builtin_function_type): Remove
! 	references to ALTIVEC_BUILTIN_VMUL[EO]U[BH]_UNS.
  
! 2017-03-10  David Malcolm  <dmalcolm@redhat.com>
  
! 	PR bootstrap/79952
! 	* read-rtl-function.c (function_reader::read_rtx_operand): Update
! 	x with result of extra_parsing_for_operand_code_0.
! 	(function_reader::extra_parsing_for_operand_code_0): Convert
! 	return type from void to rtx, returning x.  When reading
! 	SYMBOL_REF with SYMBOL_FLAG_HAS_BLOCK_INFO, reallocate x to the
! 	larger size containing struct block_symbol.
  
! 2017-03-10  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	* config/rs6000/rs6000.c (rs6000_option_override_internal): Disallow
! 	-mfloat128-hardware without -m64.
  
! 2017-03-10  Will Schmidt <will_schmidt@vnet.ibm.com>
  
! 	PR target/79941
! 	* config/rs6000/rs6000.c (builtin_function_type): Add VMUL*U[HB]
! 	entries to the case statement that marks unsigned arguments to
! 	overloaded functions.
  
! 2017-03-10  Kelvin Nilsen  <kelvin@gcc.gnu.org>
  
! 	* config/rs6000/rs6000.c (rs6000_option_override_internal): Fix
! 	two typographic errors in the handling of TARGET_UPPER_REGS_DI.
  
! 2017-03-10  Pat Haugen  <pthaugen@us.ibm.com>
  
! 	PR target/79907
! 	* config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Test
! 	TARGET_UPPER_REGS_DI when setting 'wi' constraint regclass.
  
! 2017-03-10  Martin Liska  <mliska@suse.cz>
  
! 	PR target/65705
! 	PR target/69804
! 	* toplev.c (process_options): Enable MPX with LSAN and UBSAN.
! 	* tree-chkp.c (chkp_walk_pointer_assignments): Verify that
! 	FIELD != NULL.
  
! 2017-03-10  Olivier Hainque  <hainque@adacore.com>
  
! 	* tree-switch-conversion (array_value_type): Start by resetting
! 	candidate type to it's main variant.
  
! 2017-03-10  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR rtl-optimization/79909
! 	* combine.c (try_combine): Use simplify_replace_rtx on individual
! 	CALL_INSN_FUNCTION_USAGE elements instead of replace_rtx on copy_rtx
! 	of the whole CALL_INSN_FUNCTION_USAGE.
  
! 	PR tree-optimization/79972
! 	* gimple-ssa-warn-alloca.c (alloca_call_type): Only call
! 	get_range_info on SSA_NAMEs.  Formatting fixes.
  
! 2017-03-10  Richard Biener  <rguenther@suse.de>
  	    Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/77975
! 	* tree-ssa-loop-niter.c (get_base_for): Allow phi argument from latch
! 	edge to be constant.
! 	(get_val_for): For constant x return it.  Formatting fix.
! 	(loop_niter_by_eval): Avoid pointless looping if the next iteration
! 	would use the same bases as the current one.
! 
! 2017-03-09  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
! 
! 	* config/rs6000/rs6000.c (rs6000_gen_le_vsx_permute): Use rotate
! 	instead of vec_select for V1TImode.
! 	* conifg/rs6000/vsx.md (VSX_LE): Remove mode iterator that is no
! 	longer needed.
! 	(VSX_LE_128): Add V1TI to this mode iterator.
! 	(*vsx_le_perm_load_<mode>): Change to use VSX_D mode iterator.
! 	(*vsx_le_perm_store_<mode>): Likewise.
! 	(pre-reload splitter for VSX stores): Likewise.
! 	(post-reload splitter for VSX stores): Likewise.
! 	(*vsx_xxpermdi2_le_<mode>): Likewise.
! 	(*vsx_lxvd2x2_le_<mode>): Likewise.
! 	(*vsx_stxvd2x2_le_<mode>): Likewise.
! 
! 2017-03-09  Michael Eager  <eager@eagercon.com>
! 
! 	Correct failures with --enable-checking=yes,rtl.
! 
! 	* config/microblaze/microblaze.c (microblaze_expand_shift):
! 	Replace GET_CODE test with CONST_INT_P and INTVAL test with
! 	test for const0_rtx.
! 	* config/microblaze/microblaze.md (ashlsi3_byone, ashrsi3_byone,
! 	lshrsi3_byone): Replace INTVAL with test for const1_rtx.
! 
! 2017-03-09  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/79977
! 	* graphite-scop-detection.c (scop_detection::merge_sese):
! 	Handle the case of extra exits to blocks dominating the entry.
! 
! 2017-03-09  Toma Tabacu  <toma.tabacu@imgtec.com>
! 
! 	* doc/sourcebuild.texi (Effective-Target Keywords, Other attributes):
! 	Document rdynamic.
! 
! 2017-03-09  Vladimir Makarov  <vmakarov@redhat.com>
! 
! 	PR rtl-optimization/79949
! 	* lra-constraints.c (process_alt_operands): Check memory when
! 	trying to predict a cycle.  Print about the overall increase.
! 
! 2017-03-09  Richard Biener  <rguenther@suse.de>
! 
! 	PR middle-end/79971
! 	* gimple-expr.c (useless_type_conversion_p): Preserve
! 	TYPE_SATURATING for fixed-point types.
! 
! 2017-03-09  Richard Biener  <rguenther@suse.de>
! 
! 	PR ipa/79970
! 	* ipa-prop.c (ipa_modify_formal_parameters): Avoid changing
! 	alignment of BLKmode params.
! 
! 2017-03-09  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
! 
! 	PR target/79913
! 	* config/aarch64/iterators.md (VALL_F16_NO_V2Q): New mode iterator.
! 	(VALL_NO_V2Q): Likewise.
! 	(VDQF_DF): Delete.
! 	* config/aarch64/aarch64-simd.md
! 	(aarch64_dup_lane_<vswap_width_name><mode>): Use VALL_F16_NO_V2Q
! 	iterator.
! 	(*aarch64_simd_vec_copy_lane_<vswap_width_name><mode>): Use
! 	VALL_NO_V2Q mode iterator.
! 	(*aarch64_vgetfmulx<mode>): Use VDQF iterator.
! 
! 2017-03-09  Martin Liska  <mliska@suse.cz>
! 
! 	PR tree-optimization/79631
! 	* tree-chkp-opt.c (chkp_is_constant_addr): Call
! 	tree_int_cst_sign_bit just for INTEGER constants.
! 
! 2017-03-09  Martin Liska  <mliska@suse.cz>
! 
! 	PR target/65705
! 	PR target/69804
! 	* toplev.c (process_options): Disable -fcheck-pointer-bounds with
! 	sanitizers.
! 
! 2017-03-09  Marek Polacek  <polacek@redhat.com>
! 
! 	PR c++/79672
! 	* tree.c (inchash::add_expr): Handle TREE_VEC.
! 
! 2017-03-09  Martin Liska  <mliska@suse.cz>
! 
! 	PR ipa/79764
! 	(chkp_narrow_size_and_offset): New function.
! 	(chkp_parse_array_and_component_ref): Support BIT_FIELD_REF.
! 	(void chkp_parse_bit_field_ref): New function.
! 	(chkp_make_addressed_object_bounds): Add case for BIT_FIELD_REF.
! 	(chkp_process_stmt): Use chkp_parse_bit_field_ref.
! 
! 2017-03-09  Martin Liska  <mliska@suse.cz>
! 
! 	PR ipa/79761
! 	* tree-chkp.c (chkp_get_bound_for_parm): Get bounds for a param.
! 	(chkp_find_bounds_1): Remove gcc_unreachable.
! 
! 2017-03-09  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR sanitizer/79944
! 	* asan.c (get_mem_refs_of_builtin_call): For BUILT_IN_ATOMIC* and
! 	BUILT_IN_SYNC*, determine the access type from the size suffix and
! 	always build a MEM_REF with that type.  Handle forgotten
! 	BUILT_IN_SYNC_FETCH_AND_NAND_16 and BUILT_IN_SYNC_NAND_AND_FETCH_16.
! 
! 	PR target/79932
! 	* config/i386/avx512vlintrin.h (_mm256_cmpge_epi32_mask,
! 	_mm256_cmpge_epi64_mask, _mm256_cmpge_epu32_mask,
! 	_mm256_cmpge_epu64_mask, _mm256_cmple_epi32_mask,
! 	_mm256_cmple_epi64_mask, _mm256_cmple_epu32_mask,
! 	_mm256_cmple_epu64_mask, _mm256_cmplt_epi32_mask,
! 	_mm256_cmplt_epi64_mask, _mm256_cmplt_epu32_mask,
! 	_mm256_cmplt_epu64_mask, _mm256_cmpneq_epi32_mask,
! 	_mm256_cmpneq_epi64_mask, _mm256_cmpneq_epu32_mask,
! 	_mm256_cmpneq_epu64_mask, _mm256_mask_cmpge_epi32_mask,
! 	_mm256_mask_cmpge_epi64_mask, _mm256_mask_cmpge_epu32_mask,
! 	_mm256_mask_cmpge_epu64_mask, _mm256_mask_cmple_epi32_mask,
! 	_mm256_mask_cmple_epi64_mask, _mm256_mask_cmple_epu32_mask,
! 	_mm256_mask_cmple_epu64_mask, _mm256_mask_cmplt_epi32_mask,
! 	_mm256_mask_cmplt_epi64_mask, _mm256_mask_cmplt_epu32_mask,
! 	_mm256_mask_cmplt_epu64_mask, _mm256_mask_cmpneq_epi32_mask,
! 	_mm256_mask_cmpneq_epi64_mask, _mm256_mask_cmpneq_epu32_mask,
! 	_mm256_mask_cmpneq_epu64_mask, _mm_cmpge_epi32_mask,
! 	_mm_cmpge_epi64_mask, _mm_cmpge_epu32_mask, _mm_cmpge_epu64_mask,
! 	_mm_cmple_epi32_mask, _mm_cmple_epi64_mask, _mm_cmple_epu32_mask,
! 	_mm_cmple_epu64_mask, _mm_cmplt_epi32_mask, _mm_cmplt_epi64_mask,
! 	_mm_cmplt_epu32_mask, _mm_cmplt_epu64_mask, _mm_cmpneq_epi32_mask,
! 	_mm_cmpneq_epi64_mask, _mm_cmpneq_epu32_mask, _mm_cmpneq_epu64_mask,
! 	_mm_mask_cmpge_epi32_mask, _mm_mask_cmpge_epi64_mask,
! 	_mm_mask_cmpge_epu32_mask, _mm_mask_cmpge_epu64_mask,
! 	_mm_mask_cmple_epi32_mask, _mm_mask_cmple_epi64_mask,
! 	_mm_mask_cmple_epu32_mask, _mm_mask_cmple_epu64_mask,
! 	_mm_mask_cmplt_epi32_mask, _mm_mask_cmplt_epi64_mask,
! 	_mm_mask_cmplt_epu32_mask, _mm_mask_cmplt_epu64_mask,
! 	_mm_mask_cmpneq_epi32_mask, _mm_mask_cmpneq_epi64_mask,
! 	_mm_mask_cmpneq_epu32_mask, _mm_mask_cmpneq_epu64_mask): Move
! 	definitions outside of __OPTIMIZE__ guarded section.
  
! 	PR target/79932
! 	* config/i386/avx512bwintrin.h (_mm512_packs_epi32,
! 	_mm512_maskz_packs_epi32, _mm512_mask_packs_epi32,
! 	_mm512_packus_epi32, _mm512_maskz_packus_epi32,
! 	_mm512_mask_packus_epi32): Move definitions outside of __OPTIMIZE__
! 	guarded section.
  
! 2017-03-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
  
! 	* config/s390/vx-builtins.md ("vfee<mode>", "vfeez<mode>")
! 	("vfenez<mode>"): Add missing constraints.
  
! 2017-03-08  Martin Sebor  <msebor@redhat.com>
  
! 	PR target/79928
! 	* config/nds32/nds32.c (nds32_option_override):
! 	Fix misspelled diagnostic.
  
! 2017-03-08  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR c/79940
! 	* gimplify.c (gimplify_omp_for): Replace index var in outer
! 	taskloop statement with an artificial variable and add
! 	OMP_CLAUSE_PRIVATE clause for it.
  
! 2017-03-08  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/79955
! 	* tree-ssa-uninit.c (warn_uninitialized_vars): Do not warn
! 	for accesses that are completely outside of the variable.
  
! 2017-03-08  Andrew Haley  <aph@redhat.com>
  
! 	PR tree-optimization/79943
! 	* tree-ssa-loop-split.c (compute_new_first_bound): When
! 	calculating the new upper bound, (END-BEG) should be added, not
! 	subtracted.
  
! 2017-03-08  Jakub Jelinek  <jakub@redhat.com>
  
! 	* config/avr/avr.md (setmemhi): Make sure match_dup
! 	operand number comes before match_scratch.
  
! 2017-03-08  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/79920
! 	* tree-vect-slp.c (vect_create_mask_and_perm): Remove and inline
! 	with ncopies == 1 to ...
! 	(vect_transform_slp_perm_load): ... here.  Properly compute
! 	all element loads by iterating VF times over the group.  Do
! 	not handle ncopies (computed in a broken way) in
! 	vect_create_mask_and_perm.
  
! 2017-03-08  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR sanitizer/79904
! 	* internal-fn.c (expand_vector_ubsan_overflow): If arg0 or arg1
! 	is a uniform vector, use uniform_vector_p return value instead of
! 	building ARRAY_REF on folded VIEW_CONVERT_EXPR to array type.
  
! 2017-03-07  Marek Polacek  <polacek@redhat.com>
  
! 	PR middle-end/79809
! 	* gimple-ssa-warn-alloca.c (pass_walloca::gate): Use HOST_WIDE_INT.
! 	(alloca_call_type): Likewise.
  
! 2017-03-07  Martin Liska  <mliska@suse.cz>
  
! 	* gcov.c (process_args): Put comment to correct location.
  
! 2017-03-07  Martin Liska  <mliska@suse.cz>
  
! 	PR middle-end/68270
! 	* tree-chkp.c (chkp_may_narrow_to_field): Add new argument ref.
! 	Use array_at_struct_end_p instead of DECL_CHAIN (field).
! 	(chkp_narrow_bounds_for_field): Likewise.
! 	(chkp_parse_array_and_component_ref): Pass one more argument to
! 	call.
  
! 2017-03-07  Richard Biener  <rguenther@suse.de>
  
! 	* tree-vect-loop-manip.c (slpeel_add_loop_guard): Preserve
! 	preheaders.
  
! 2017-03-07  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	* config/i386/i386.c (ix86_local_alignment): Align most aggregates
! 	of 16 bytes and more to 16 bytes, not those of 16 bits and more.
  
! 2017-03-07  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	PR c/79855
! 	* params.def (PARAM_STORE_MERGING_ALLOW_UNALIGNED): Add full stop
! 	to end of description.
! 	(PARAM_MAX_STORES_TO_MERGE): Likewise.
  
! 2017-03-07  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR rtl-optimization/79901
! 	* config/i386/sse.md (*avx512bw_<code><mode>3<mask_name>): Renamed to
! 	...
! 	(*avx512f_<code><mode>3<mask_name>): ... this.
! 	(<code><mode>3 with maxmin code iterator): Use VI8_AVX2_AVX512F
! 	iterator instead of VI8_AVX2_AVX512BW.
  
! 	PR rtl-optimization/79901
! 	* expr.c (expand_expr_real_2): For vector MIN/MAX, if there is no
! 	min/max expander, expand it using expand_vec_cond_expr.
  
! 	PR sanitizer/79897
! 	* ubsan.c (ubsan_encode_value): Call mark_addressable on the
! 	temporary.
  
! 2017-03-06  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR c++/79821
! 	* dwarf2out.h (dw_vec_const): Change array type from unsigned char *
! 	to void * for PCH reasons.
! 	* dwarf2out.c (output_loc_operands, output_die): Cast
! 	v.val_vec.array to unsigned char *.
  
! 2017-03-06  John David Anglin  <danglin@gcc.gnu.org>
  
! 	PR target/77850
! 	* config/pa/pa-64.h (PAD_VARARGS_DOWN): Don't pad down complex and
! 	vector types.
  
! 2017-03-06  Vladimir Makarov  <vmakarov@redhat.com>
  
! 	PR rtl-optimization/79571
! 	* lra-constraints.c (process_alt_operands): Calculate static
! 	reject and subtract it from overall when only addresses will be
! 	reloaded.
  
! 2017-03-06  Julia Koval  <julia.koval@intel.com>
  
! 	PR target/79793
! 	* config/i386/i386.c (ix86_minimum_incoming_stack_boundary): Set
! 	incoming stack boundary to 128 for 64-bit targets.
  
! 2017-03-06  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/79894
! 	* tree-vectorizer.c (vectorize_loops): Set loop_vectorized_call
! 	to NULL after folding it.
  
! 2017-03-06  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/79824
! 	* tree-vect-stmts.c (get_group_load_store_type): Fix alignment
! 	check disabling peeling for gaps.
  
! 2017-03-06  Toma Tabacu  <toma.tabacu@imgtec.com>
  
! 	* doc/sourcebuild.texi (Effective-Target Keywords, Environment
! 	attributes): Document gettimeofday.
  
! 2017-03-06  Robin Dapp  <rdapp@linux.vnet.ibm.com>
  
! 	* config/s390/s390.c (s390_option_override_internal): Set
! 	PARAM_MIN_VECT_LOOP_BOUND
  
! 2017-03-06  Robin Dapp  <rdapp@linux.vnet.ibm.com>
  
! 	* config/s390/s390.c (s390_asm_output_function_label): Use nopr %r0.
! 	* config/s390/s390.md: Likewise.
  
! 2017-03-06  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/79812
! 	* config/i386/sse.md (VI8F_256_512): Remove mode iterator.
! 	(<avx2_avx512>_perm<mode>): Rename to ...
! 	(avx2_perm<mode>): ... this.  Use VI8F_256 iterator instead
! 	of VI8F_256_512.
! 	(<avx512>_perm<mode>_mask): Rename to ...
! 	(avx512vl_perm<mode>_mask): ... this.  Use VI8F_256 iterator instead
! 	of VI8F_256_512.
! 	(<avx2_avx512>_perm<mode>_1<mask_name>): Rename to ...
! 	(avx2_perm<mode>_1<mask_name): ... this.  Use VI8F_256 iterator
! 	instead of VI8F_256_512.
! 	(avx512f_perm<mode>): New define_expand.
! 	(avx512f_perm<mode>_mask): Likewise.
! 	(avx512f_perm<mode>_1<mask_name>): New define_insn.
! 	(<avx512>_vec_dup<mode>_1): Fix up vec_select mode.
  
! 2017-03-06  Prachi Godbole  <prachi.godbole@imgtec.com>
  
! 	* config/mips/mips-msa.md (msa_fmax_a_<msafmt>, msa_fmin_a_<msafmt>,
! 	msa_max_a_<msafmt>, msa_min_a_<msafmt>): Introduce mode interator for
! 	if_then_else.
! 	(smin<mode>3, smax<mode>3): Change operand print code from 'B' to 'E'.
  
! 2017-03-06  Martin Liska  <mliska@suse.cz>
  
! 	PR sanitize/79783
! 	* asan.c (asan_expand_poison_ifn): Do not expand ASAN_POISON
! 	when having a SSA NAME w/o VAR_DECL assigned to it.
  
! 2017-03-06  Prachi Godbole  <prachi.godbole@imgtec.com>
  
! 	* config/mips/mips-msa.md (msa_dotp_<su>_d, msa_dpadd_<su>_d,
! 	msa_dpsub_<su>_d): Fix MODE for vec_select.
  
! 2017-03-06  Prachi Godbole  <prachi.godbole@imgtec.com>
  
! 	* config/mips/mips.c (mips_gen_const_int_vector): Change type of last
! 	argument.
! 	* config/mips/mips-protos.h (mips_gen_const_int_vector): Likewise.
  
! 2017-03-06  Richard Biener  <rguenther@suse.de>
  
! 	* lto-streamer.c (lto_check_version): Use %qs in diagnostics.
! 	* plugin.c (register_plugin_info): Likewise.
! 	* tree-chkp.c (chkp_make_static_const_bounds): Likewise.
  
! 2017-03-05  Jakub Jelinek  <jakub@redhat.com>
  
! 	* config/i386/sse.md (sse_storehps, sse_storelps,
! 	avx_<castmode><avxsizesuffix>_<castmode>,
! 	avx512f_<castmode><avxsizesuffix>_<castmode>,
! 	avx512f_<castmode><avxsizesuffix>_256<castmode>): Require
! 	in condition that at least one operand is not a MEM.
  
! 2017-03-03  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/79805
! 	* internal-fn.def (ATOMIC_BIT_TEST_AND_SET, ATOMIC_BIT_TEST_AND_RESET,
! 	ATOMIC_BIT_TEST_AND_COMPLEMENT, ATOMIC_COMPARE_EXCHANGE): Remove
! 	ECF_NOTHROW.
! 	* gimple-fold.c (fold_builtin_atomic_compare_exchange): Set
! 	gimple_call_nothrow_p flag based on whether original builtin can throw.
! 	If it can, emit following stmts on the fallthrough edge.
! 	* tree-ssa-ccp.c (optimize_atomic_bit_test_and): Similarly, except
! 	don't create new bb if inserting just debug stmts on the edge, try to
! 	insert them on the fallthru bb or just reset debug stmts.
  
! 2017-03-03  Segher Boesssenkool  <segher@kernel.crashing.org>
  
! 	PR target/43763
! 	* config/rs6000/rs6000.c (rs6000_final_prescan_insn): Save and
! 	restore recog_data (including the operand rtxes inside it) around
! 	the call to get_insn_template.
  
! 2017-03-03  Martin Sebor  <msebor@redhat.com>
  
! 	PR tree-optimization/79699
! 	* context.c (context::~context): Free MPFR caches to avoid
! 	a memory leak on program exit.
  
! 2017-03-03  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/aarch64/aarch64.c (aarch64_float_const_representable_p):
! 	Use wide_int::ulow () instead of .elt (0).
  
! 2017-03-03  Uros Bizjak  <ubizjak@gmail.com>
  
! 	* config/i386/i386.md (*pushtf): Change *roF constraint to *roC.
! 	(*pushxf): Limit oF constraint to 32bit targets and add oC
! 	constraint for 64bit targets.
! 	(pushxf splitter): Use PUSH_ROUNDING to calculate stack adjustment.
! 	(*pushdf): Change rmF constraint to rmC.
  
! 2017-03-03  Martin Liska  <mliska@suse.cz>
  
! 	* tree-ssa-loop-prefetch.c (pass_loop_prefetch::execute):
! 	Remove unused variable.
  
! 2017-03-03  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/79807
! 	* config/i386/i386.c (ix86_expand_multi_arg_builtin): If target
! 	is a memory operand, increase num_memory.
! 	(ix86_expand_args_builtin): Likewise.
  
! 2017-03-03  Jan Hubicka  <jh@suse.cz>
  
! 	PR lto/79760
! 	* ipa-devirt.c (maybe_record_node): Properly handle
! 	__cxa_pure_virtual visibility.
  
! 2017-03-03  Martin Liska  <mliska@suse.cz>
  
! 	PR tree-optimization/79803
! 	* tree-ssa-loop-prefetch.c (tree_ssa_prefetch_arrays): Remove
! 	assert.
! 	(pass_loop_prefetch::execute): Disabled optimization if an
! 	assumption about L1 cache size is not met.
  
! 2017-03-03  Martin Liska  <mliska@suse.cz>
  
! 	PR rtl-optimization/79574
! 	* gcse.c (struct gcse_expr): Use HOST_WIDE_INT instead of int.
! 	(hash_scan_set): Likewise.
! 	(dump_hash_table): Likewise.
! 	(hoist_code): Likewise.
  
! 2017-03-03  Richard Biener  <rguenther@suse.de>
  
! 	* fixed-value.c (fixed_from_string): Restore use of elt (1)
! 	in place of uhigh ().
! 	(fixed_convert_from_real): Likewise.
  
! 2017-03-03  Uros Bizjak  <ubizjak@gmail.com>
  
! 	PR target/79514
! 	* config/i386/i386.md (*pushxf_rounded): Use Pmode instead of DImode.
  
! 2017-03-03  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/79818
! 	* match.pd ( X +- C1 CMP C2 -> X CMP C2 -+ C1): Add missing
! 	TYPE_OVERFLOW_UNDEFINED check.
  
! 2017-03-02  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
  
! 	* config/rs6000/vector.md (vector_ne_<mode>_p): Correct operand
! 	numbers.
! 	(vector_ae_<mode>_p): Likewise.
! 	(vector_nez_<mode>_p): Likewise.
! 	(vector_ne_v2di_p): Likewise.
! 	(vector_ae_v2di_p): Likewise.
! 	(vector_ne_<mode>_p): Likewise.
! 	* config/rs6000/vsx.md (vsx_tsqrt<mode>2_fg): Correct operand
! 	numbers.
! 	(vsx_tsqrt<mode>2_fe): Likewise.
  
! 2017-03-02  Uros Bizjak  <ubizjak@gmail.com>
  
! 	PR target/79514
! 	* config/i386/i386.md (*pushxf_rounded): New insn_and_split pattern.
  
! 2017-03-02  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR rtl-optimization/79780
! 	* cprop.c (one_cprop_pass): When second and further conditional trap
! 	in a single basic block is turned into an unconditional trap, turn it
! 	into a deleted note to avoid RTL verification failures.
  
! 2017-03-02  Richard Biener  <rguenther@suse.de>
  
! 	* fold-const.c (const_binop): Use ulow () instead of elt (0).
  
! 2017-03-02  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/79345
! 	PR c++/42000
! 	* tree-ssa-alias.c (walk_aliased_vdefs_1): Take a limit
! 	param and abort the walk, returning -1 if it is hit.
! 	(walk_aliased_vdefs): Take a limit param and pass it on.
! 	* tree-ssa-alias.h (walk_aliased_vdefs): Add a limit param,
! 	defaulting to 0 and return a signed int.
! 	* tree-ssa-uninit.c (struct check_defs_data): New struct.
! 	(check_defs): New helper.
! 	(warn_uninitialized_vars): Use walk_aliased_vdefs to warn
! 	about uninitialized memory.
! 	* fixed-value.c (fixed_from_string): Use ulow/uhigh to avoid
! 	bogus uninitialized warning.
! 	(fixed_convert_from_real): Likewise.
  
! 2017-03-02  Bin Cheng  <bin.cheng@arm.com>
  
! 	PR tree-optimization/66768
! 	* tree-ssa-loop-ivopts.c (find_interesting_uses_address): Skip addr
! 	iv_use if base object can't be determined.
  
! 2017-03-02  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/79345
! 	* gensupport.h (struct pattern_stats): Add min_scratch_opno field.
! 	* gensupport.c (get_pattern_stats_1) <case MATCH_SCRATCH>: Update it.
! 	(get_pattern_stats): Initialize it.
! 	* genemit.c (gen_expand): Verify match_scratch numbers come after
! 	match_operand/match_dup numbers.
! 	* config/i386/i386.md (<s>mul<mode>3_highpart): Swap match_dup and
! 	match_scratch numbers.
! 	* config/i386/sse.md (avx2_gathersi<mode>, avx2_gatherdi<mode>):
! 	Likewise.
! 	* config/s390/s390.md (trunctdsd2): Likewise.
  
! 2017-03-02  Richard Biener  <rguenther@suse.de>
  
! 	* wide-int.h (wide_int_storage::operator=): Implement in terms
! 	of wi::copy.
  
! 2017-03-02  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/79777
! 	* tree-ssa-pre.c (eliminate_insert): Give up if we simplify
! 	the to insert expression to sth existing.
  
! 2017-03-01  Martin Sebor  <msebor@redhat.com>
  
! 	PR middle-end/79692
! 	* gimple-ssa-sprintf.c
! 	(directive::known_width_and_precision): New function.
! 	(format_integer): Use it.
! 	(get_mpfr_format_length): Consider the full range of precision
! 	when computing %g output with the # flag.  Set the likely byte
! 	count to 3 rather than 1 when precision is indeterminate.
! 	(format_floating): Correct the lower bound of precision.
  
! 2017-03-01  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
  
! 	* doc/invoke.texi: Document default code model for 64-bit Linux.
  
! 2017-03-01  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
  
! 	PR target/79752
! 	* config/rs6000/rs6000.md (peephole2 for udiv/umod): Should emit
! 	udiv rather than div since input pattern is unsigned.
  
! 2017-03-01  Uros Bizjak  <ubizjak@gmail.com>
  
! 	* config/i386/i386.c (print_reg): Warn for values of
! 	unsupported size in integer register.
  
! 2017-03-01  Michael Meissner  <meissner@linux.vnet.ibm.com>
  
! 	PR target/79439
! 	* config/rs6000/predicates.md (current_file_function_operand): Do
! 	not allow self calls to be local if the function is replaceable.
  
! 2017-03-01  Kelvin Nilsen  <kelvin@gcc.gnu.org>
  
! 	PR target/79395
! 	* config/rs6000/altivec.h (vec_ctz and others): Change the
! 	preprocessor macro that controls conditional compilation from
! 	_ARCH_PWR9 to __POWER9_VECTOR__.
! 	(vec_all_ne): Change parameterization of __altivec_scalar_pred
! 	macro expansion under preprocessor #ifdef __POWER9_VECTOR__
! 	control (instead of _ARCH_PWR9 control) so that template
! 	definition uses power9-specific function.
! 	(vec_any_eq): Likewise.
! 	(vec_all_ne): Change macro definition to use a power9-specific
! 	expansion under #ifdef __POWER9_VECTOR__ control (instead of
! 	_ARCH_PWR9 control).
! 	(vec_any_eq) Likewise.
! 	* config/rs6000/rs6000-builtin.def (CMPNEF): Remove BU_P9V_AV_2
! 	expansion for CMPNEF to remove support for xvcmpnesp instruction.
! 	(CMPNED): Remove BU_P9V_AV2 expansion for CMPNED to remove
! 	support for xvcmpnedp instruction.
! 	(VCMPNEB_P): Replace BU_P9V_AV_P macro expansion with BU_P9V_AV_2
! 	macro expansion so that Power9 implementation of vec_all_ne does
! 	not use the AltiVec predicate framework.
! 	(VCMPNEH_P): Likewise.
! 	(VCMPNEW_P): Likewise.
! 	(VCMPNED_P): Likewise.
! 	(VCMPNEFP_P): Likewise.
! 	(VCMPNEDP_P): Likewise.
! 	(VCMPAEB_P): Add BU_P9V_AV_2 macro expansion to change
! 	implementation of vec_any_eq to not use AltiVec predicate
! 	framework.
! 	(VCMPAEH_P): Likewise.
! 	(VCMPAEW_P): Likewise.
! 	(VCMPAED_P): Likewise.
! 	(VCMPAEFP_P): Likewise.
! 	(VCMPAEDP_P): Likewise.
! 	(VCMPNE_P): Replace BU_P9V_OVERLOAD_P macro expansion with
! 	BU_P9V_OVERLOAD_2 so that Power9 implementation of vec_all_ne does
! 	not use the AltiVec predicate framework.
! 	(VCMPAE_P): Add BU_P9V_OVERLOAD_2 macro to change implementation
! 	of vec_any_eq to not use AltiVec predicate framework.
! 	* config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Add
! 	support for predefined __POWER9_VECTOR__ macro to indicate that
! 	Power9 instruction selection is enabled.
! 	(altivec_overloaded_builtins): Remove extraneous
! 	ALTIVEC_BUILTIN_VEC_CMPNE entry for overloaded
! 	function argument types RS6000_BTI_bool_V16QI and
! 	RS6000_BTI_bool_V16QI.  Remove erroneous ALTIVEC_BUILTIN_VEC_CMPNE
! 	entry for overloaded function argument types RS6000_BTI_bool_V4SI
! 	andRS6000_BTI_bool_V4SI, mapping to P9V_BUILTIN_CMPNEB.  Remove
! 	two entries mapping to P9V_BUITIN_CMPNED and one entry mapping to
! 	P9V_BUILTIN_CMPNEF to force use of instructions not specific to
! 	Power9 for implementations of vec_cmpne.  Change the signature for
! 	all definitions of the overloaded P9V_BUILTIN_VEC_CMPNE_P function
! 	(representing vec_all_ne) to remove the previously described first
! 	argument of type RS6000_BTI_INTSI, as this was an artifact of
! 	reliance on the AltiVec predicate framework, which is no longer
! 	used in the implementation of these functions.  Add
! 	P9V_BUILTIN_VEC_VCMPAE_P entries (representing the vec_anyeq
! 	function) to match all of the P9V_BUILTIN_VEC_VCMNE_P entries
! 	since, unlike the AltiVec predicate framework implementation, we
! 	do not share function descriptors between vec_alle and vec_anyeq.
! 	(altivec_resolve_overloaded_builtin): Add SFmode and DFmode to the
! 	set of modes that receive special treatment even when
! 	TARGET_P9_VECTOR is true.  The special treatment emits code that
! 	does not depend on Power9 instructions.
! 	* config/rs6000/vector.md (vector_ne_<mode>_p): Change this
! 	define_expand to not rely on AltiVec predicate framework.
! 	(vector_ae_<mode>p): New define_expand to represent vec_any_eq
! 	function.
! 	(vector_ne_v2di_p): Change this define_expand to not rely on
! 	AltiVec predicate framework.
! 	(vector_ae_v2di_p): New define_expand to represent vec_any_eq
! 	function.
! 	(vector_ne_<mode>_p): Change this define_expand to not rely on
! 	AltiVec predicate framework.
! 	(vector_ae_<mode>p): New define_expand to represent vec_any_eq
! 	function.
! 	* config/rs6000/vsx.md (*vsx_ne_<mode>_p): For modes VSX_EXTRACT_I
! 	(V16QI, V8HI, V4SI), correct a typo in the code emitted for this
! 	define_insn pattern.
! 	(*vsx_ne_<mode>_p): For modes VSX_F (V4SF and V2DF), remove this
! 	define_insn pattern because the xvcmpne<VSs>. instruction is not
! 	supported.
! 	(vcmpne<VSs>): Remove this define_insn because xvcmpne<VSs>
! 	instruction is not supported.
  
! 2017-03-01  Jakub Jelinek  <jakub@redhat.com>
  
! 	* config/nvptx/nvptx.c: Include intl.h.
  
! 2017-03-01  Martin Jambor  <mjambor@suse.cz>
  
! 	PR lto/78140
! 	* ipa-prop.h (ipa_bits): Removed field known.
! 	(ipa_jump_func): Removed field vr_known.  Changed fields bits and m_vr
! 	to pointers.  Adjusted their comments to warn about their sharing.
! 	(ipcp_transformation_summary): Change bits to a vector of pointers.
! 	(ipa_check_create_edge_args): Moved to ipa-prop.c, declare.
! 	(ipa_get_ipa_bits_for_value): Declare.
! 	* tree-vrp.h (value_range): Mark as GTY((for_user)).
! 	* ipa-prop.c (ipa_bit_ggc_hash_traits): New.
! 	(ipa_bits_hash_table): Likewise.
! 	(ipa_vr_ggc_hash_traits): Likewise.
! 	(ipa_vr_hash_table): Likewise.
! 	(ipa_print_node_jump_functions_for_edge): Adjust for bits and m_vr
! 	being pointers and vr_known being removed.
! 	(ipa_set_jf_unknown): Likewise.
! 	(ipa_get_ipa_bits_for_value): New function.
! 	(ipa_set_jfunc_bits): Likewise.
! 	(ipa_get_value_range): New overloaded functions.
! 	(ipa_set_jfunc_vr): Likewise.
! 	(ipa_compute_jump_functions_for_edge): Use the above functions to
! 	construct bits and vr parts of jump functions.
! 	(ipa_check_create_edge_args): Move here from ipa-prop.h, also allocate
! 	ipa_bits_hash_table and ipa_vr_hash_table if they do not already
! 	exist.
! 	(ipcp_grow_transformations_if_necessary): Also allocate
! 	ipa_bits_hash_table and ipa_vr_hash_table if they do not already
! 	exist.
! 	(ipa_node_params_t::duplicate): Do not copy bits, just pointers to
! 	them.  Fix too long lines.
! 	(ipa_write_jump_function): Adjust for bits and m_vr being pointers and
! 	vr_known being removed.
! 	(ipa_read_jump_function): Use new setter functions to construct bits
! 	and vr parts of jump functions or set them to NULL.
! 	(write_ipcp_transformation_info): Adjust for bits being pointers.
! 	(read_ipcp_transformation_info): Likewise.
! 	(ipcp_update_bits): Likewise.  Fix excessively long lines a trailing
! 	space.
! 	Include gt-ipa-prop.h.
! 	* ipa-cp.c (propagate_bits_across_jump_function): Adjust for bits
! 	being pointers.
! 	(ipcp_store_bits_results): Likewise.
! 	(propagate_vr_across_jump_function): Adjust for m_vr being a pointer.
! 	Do not write to existing jump functions but use a temporary instead.
  
! 2017-03-01  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR c++/79681
! 	* fold-const.c (make_bit_field_ref): If orig_inner is COMPONENT_REF,
! 	attempt to use its first operand as BIT_FIELD_REF base.
  
! 2017-03-01  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/79721
! 	* tree-chrec.c (chrec_evaluate): Perform computation of Newtons
! 	interpolating formula in wrapping arithmetic.
! 	(chrec_apply): Convert chrec_evaluate return value to wanted type.
  
! 2017-03-01  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/79734
! 	* tree-vect-generic.c (expand_vector_condition): Optimize
! 	AVX512 vector boolean VEC_COND_EXPRs into bitwise operations.
! 	Handle VEC_COND_EXPR where comparison has different inner width from
! 	type's inner width.
  
! 2017-02-28  Sandra Loosemore  <sandra@codesourcery.com>
  
! 	* doc/invoke.texi (ARC Options): Copy-edit to fix punctuation,
! 	markup, and similar issues.  Remove @opindex entries for things
! 	that aren't options.  Add missing -mmpy-option entries.
  
! 2017-02-28  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/79737
! 	* gimple-ssa-store-merging.c (encode_tree_to_bitpos): If bitlen is
! 	a multiple of BITS_PER_UNIT and !BYTES_BIG_ENDIAN, clear
! 	tmpbuf[byte_size - 1].  Call natice_encode_expr with byte_size - 1
! 	instead of byte_size.  Formatting fix.
! 	(shift_bytes_in_array_right): Formatting fix.
  
! 2017-02-28  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR target/79749
! 	* config/sparc/sparc.c (sparc_frame_pointer_required): Add missing
! 	condition on optimize for the leaf function test.
  
! 2017-02-28  Martin Liska  <mliska@suse.cz>
  
! 	PR lto/79625
! 	* read-rtl-function.c (function_reader::handle_unknown_directive):
! 	Bail out when one uses -flto.
  
! 2017-02-28  Martin Liska  <mliska@suse.cz>
  
! 	* common.opt: Replace space with tabular for options of <number>
! 	type.
! 	* config/i386/i386.opt: Show <number> value for
! 	-mlarge-data-threshold.
! 	* opts.c (print_filtered_help): Do not display number in hexadecimal
! 	format.
  
! 2017-02-28  Martin Liska  <mliska@suse.cz>
  
! 	* common.opt: Fix --help=option -Q for options which are of
! 	an enum type.
  
! 2017-02-28  Uros Bizjak  <ubizjak@gmail.com>
  
! 	* config/i386/i386.c (print_reg): Error out for values
! 	of 8-bit size in invalid integer register.
  
! 2017-02-28  Martin Sebor  <msebor@redhat.com>
  
! 	PR tree-optimization/79691
! 	* passes.def (pass_all_optimizations_g): Enable pass_sprintf_length.
  
! 2017-02-28  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/79729
! 	* config/i386/i386.c (ix86_print_operand) <case 'R'>: Replace
! 	gcc_unreachable with output_operand_lossage.
  
! 2017-02-28  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/79740
! 	* tree-ssa-sccvn.c (vn_nary_op_insert_into): Allow redundant
! 	inserts.
! 	(visit_nary_op): Insert the nary into the hashtable if we
! 	pattern-matched sth.
! 	* tree-ssa-pre.c (eliminate_insert): Robustify.
  
! 2017-02-28  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/79731
! 	* fold-const.c (decode_field_reference): Reject out-of-bound
  	accesses.
  
! 2017-02-28  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* config/i386/i386.c: Include intl.h.
! 	(ix86_option_override_internal): Use cond ? G_("...") : G_("...")
! 	instead of just cond ? "..." : "...".
! 	* config/nvptx/nvptx.c (nvptx_goacc_validate_dims): Likewise.
! 	* coverage.c (read_counts_file): Likewise.
! 	* omp-offload.c: Include intl.h.
! 	(oacc_loop_fixed_partitions): Use cond ? G_("...") : G_("...") instead
! 	of just cond ? "..." : "...".
! 	* gcov.c (read_count_file): Use cond ? N_("...") : N_("...") instead
! 	of just cond ? "..." : "...".
! 
! 2017-02-28  Richard Earnshaw  <rearnsha@arm.com>
! 
! 	PR target/79742
! 	* config/arm/parsecpu.awk (gen_data): Set tuning target to 'tune for'
! 	entry, if present.
! 	* config/arm/arm-cpus.in (cortex-m0plus.small-multiply): Correct
! 	'tune for' CPU name.
! 	* config/arm/arm-cpu-data.h: Regenerated.
! 
! 2017-02-28  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/79732
! 	* tree-inline.c (expand_call_inline): Do not shadow var.
  
! 2017-02-28  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/79723
! 	* tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): Preserve
! 	address-space properly.
  
! 2017-02-28  Thomas Schwinge  <thomas@codesourcery.com>
  
! 	* doc/optinfo.texi (Optimization groups): Fix option used for
! 	OPTGROUP_ALL.
! 	* doc/invoke.texi (-fopt-info): Document "omp".
! 	* dumpfile.h: Sort OPTGROUP_OMP before OPTGROUP_VEC.
! 	(OPTGROUP_ALL): Add OPTGROUP_OMP.
! 	* hsa-gen.c (pass_data_gen_hsail): Use OPTGROUP_OMP.
! 	* ipa-hsa.c (pass_data_ipa_hsa): Likewise.
! 	* omp-simd-clone.c (pass_data_omp_simd_clone): Likewise.
  
! 	* dumpfile.h (OPTGROUP_OPENMP): Rename to OPTGROUP_OMP.  Adjust
! 	all users.
! 	* dumpfile.c (optgroup_options): Instead of "openmp", associate
! 	OPTGROUP_OMP with "omp".
  
! 2017-02-27  Pat Haugen  <pthaugen@us.ibm.com>
  
! 	PR target/79544
! 	* config/rs6000/rs6000-c.c (struct altivec_builtin_types): Use VSRAD
! 	for arithmetic shift of unsigned V2DI.
  
! 2017-02-27  Claudiu Zissulescu  <claziss@synopsys.com>
  
! 	* config.gcc (arc*-): Clean up, use arc/big.h, arc/elf.h, and
! 	arc/linux.h headers.
! 	* config/arc/arc.h (TARGET_OS_CPP_BUILTINS): Remove.
! 	(LINK_SPEC): Likewise.
! 	(ARC_TLS_EXTRA_START_SPEC): Likewise.
! 	(EXTRA_SPECS): Likewise.
! 	(STARTFILE_SPEC): Likewise.
! 	(ENDFILE_SPEC): Likewise.
! 	(LIB_SPEC): Likewise.
! 	(TARGET_SDATA_DEFAULT): Likewise.
! 	(TARGET_MMEDIUM_CALLS_DEFAULT): Likewise.
! 	(MULTILIB_DEFAULTS): Likewise.
! 	(DWARF2_UNWIND_INFO): Likewise.
! 	* config/arc/big.h: New file.
! 	* config/arc/elf.h: Likewise.
! 	* config/arc/linux.h: Likewise.
! 	* config/arc/t-uClibc: Remove.
  
! 2017-02-27  Bin Cheng  <bin.cheng@arm.com>
  
! 	PR tree-optimization/77536
! 	* tree-ssa-loop-manip.c (niter_for_unrolled_loop): New function.
! 	(tree_transform_and_unroll_loop): Use above function to compute the
! 	estimated niter of unrolled loop and use it when scaling profile.
! 	Also use count info rather than frequency if it's non-zero.
! 	* tree-ssa-loop-manip.h niter_for_unrolled_loop(): New declaration.
! 	* tree-vect-loop.c (scale_profile_for_vect_loop): New function.
! 	(vect_transform_loop): Call above function.
  
! 2017-02-27  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/45397
! 	* tree-ssa-pre.c (eliminate_insert): Handle BIT_AND_EXPR.
! 	* tree-ssa-sccvn.c (valueized_wider_op): New helper.
! 	(visit_nary_op): Add pattern matching for CSEing sign-changed
! 	or truncated operations with wider ones.
  
! 2017-02-27  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/79690
! 	* tree-vect-stmts.c (vectorizable_store): Use vector type
! 	built from the DR with address-space.
  
! 2017-02-26  Gerald Pfeifer  <gerald@pfeifer.com>
  
! 	* doc/invoke.texi (Optimize Options): Refine the description
! 	of asan-use-after-return.
  
! 2017-02-25  Alan Modra  <amodra@gmail.com>
  
! 	PR rtl-optimization/79584
! 	* lra-constraints.c (base_to_reg): Reload ad->base, the entire
! 	base, not ad->base_term, the reg within base.  Remove assertion
! 	that ad->base == ad->base_term.  Replace gen_int_mode using
! 	bogus mode with const0_rtx.
  
! 2017-02-25  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/79396
! 	* tree-eh.c (operation_could_trap_p, stmt_could_throw_1_p): Handle
! 	FMA_EXPR like tcc_binary or tcc_unary.
  
! 	* tree-ssa-loop-niter.c (number_of_iterations_exit): Simplify warning.
  
! 	PR debug/77589
! 	* dwarf2out.c (struct dw_loc_list_struct): Add noted_variable_value
! 	bitfield.
! 	(size_of_loc_descr): Handle DW_OP_GNU_variable_value.
! 	(output_loc_operands): Handle DW_OP_call_ref and
! 	DW_OP_GNU_variable_value.
! 	(struct variable_value_struct): New type.
! 	(struct variable_value_hasher): Likewise.
! 	(variable_value_hash): New variable.
! 	(string_types): Remove.
! 	(copy_loc_descr): New function.
! 	(add_loc_descr_to_each): Clarify comment.  Use copy_loc_descr.
! 	(prepend_loc_descr_to_each): New function.
! 	(add_loc_list): Fix comment typo.  Use prepend_loc_descr_to_each
! 	instead of add_loc_descr_to_each if the first argument is single
! 	location list and the second has multiple.
! 	(resolve_args_picking_1): Handle DW_OP_GNU_variable_value.
! 	(loc_list_from_tree_1): For early_dwarf, emit DW_OP_GNU_variable_value
! 	when looking for variable value which doesn't have other location info.
! 	(loc_list_from_tree): Formatting fix.
! 	(gen_array_type_die): Simplify DW_AT_string_length handling.
! 	(adjust_string_types): Remove.
! 	(gen_subprogram_die): Don't call adjust_string_types nor test/set
! 	string_types.  Call resolve_variable_values.
! 	(prune_unused_types_walk_loc_descr): Handle DW_OP_GNU_variable_value.
! 	(resolve_addr_in_expr): Likewise.  Add A argument.
! 	(copy_deref_exprloc): Remove deref argument.  Adjust for the
! 	original expression being DW_OP_GNU_variable_value with optionally
! 	DW_OP_stack_value after it instead of DW_OP_call4 with DW_OP_deref
! 	optionally after it.
! 	(optimize_string_length): Rework for DW_OP_GNU_variable_value.
! 	(resolve_addr): Adjust optimize_string_length and resolve_addr_in_expr
! 	callers.  Set remove_AT_byte_size if removing DW_AT_string_length.
! 	(variable_value_hasher::hash, variable_value_hasher::equal): New
! 	methods.
! 	(resolve_variable_value_in_expr, resolve_variable_value,
! 	resolve_variable_values, note_variable_value_in_expr,
! 	note_variable_value): New functions.
! 	(dwarf2out_early_finish): Call note_variable_value on all toplevel
! 	DIEs.
  
! 2017-02-24  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR c/79677
! 	* opts.h (handle_generated_option): Add GENERATED_P argument.
! 	* opts-common.c (handle_option): Adjust function comment.
! 	(handle_generated_option): Add GENERATED_P argument, pass it to
! 	handle_option.
! 	(control_warning_option): Pass false to handle_generated_option
! 	GENERATED_P.
! 	* opts.c (maybe_default_option): Pass true to handle_generated_option
! 	GENERATED_P.
! 	* optc-gen.awk: Likewise.
  
! 2017-02-24  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	* config/sh/sh.md (tstsi_t): If operands[0] is a SUBREG instead of
! 	a REG, look at the REG it is a SUBREG of.
! 	(splitter for cmpeqsi_t): Ditto.
  
! 2017-02-24  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	* config/pa/pa.c (pa_combine_instructions): Do not share RTL.  Make
! 	the special USEs with the pattern of the insn, not the insn itself.
  
! 2017-02-24  Matthew Fortune  <matthew.fortune@imgtec.com>
  
! 	PR target/79473
! 	* doc/invoke.texi: Document -mload-store-pairs.
  
! 2017-02-24  Segher Boessenkool  <segher@kernel.crashing.org>
! 	    Sandra Loosemore  <sandra@codesourcery.com>
  
! 	* config/nios2/nios2.c (nios2_simple_const_p): Returns false if the
! 	argument isn't a CONST_INT.
! 	(nios2_alternate_compare_const): Assert op is a CONST_INT.
! 	(nios2_valid_compare_const_p): Assert op is a CONST_INT.
! 	(nios2_validate_compare): Bypass alternate compare logic if *op2
! 	is not a CONST_INT.
! 	(ldstwm_operation_p): Return false if first_base is not a REG or
! 	if first_offset is not a CONST_INT.
  
! 2017-02-24  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	* config/cris/cris.md: Use correct operand in a define_peephole2.
  
! 2017-02-24  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	* config/c6x/c6x.c (predicate_insn): Do not incorrectly share RTL.
  
! 2017-02-24  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	* config/arc/arc.c (arc_ccfsm_advance): Only take the PATTERN of
! 	this_insn if it is an INSN or JUMP_INSN.
! 	(force_offsettable): Look at base, not at addr.
! 	* config/arc/predicates.md (brcc_nolimm_operator): Don't call INTVAL
! 	on things that aren't necessarily CONST_INTs.
  
! 2017-02-24  Uros Bizjak  <ubizjak@gmail.com>
  
! 	* doc/invoke.texi (x86 Options, -mfpmath=sse): Mention that
! 	-mfpmath=sse is the default also for x86-32 targets with SSE2
! 	instruction set when @option{-ffast-math} is enabled
  
! 2017-02-24  Jeff Law  <law@redhat.com>
  
! 	PR rtl-optimizatoin/79286
! 	* ira.c (update_equiv_regs): Drop may_trap_p exception to
! 	dominance test.
  
! 2017-02-24  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/79389
! 	* gimple-ssa-split-paths.c (is_feasible_trace): Properly skip
  	debug insns.
  
! 2017-02-24  Aldy Hernandez  <aldyh@redhat.com>
! 
! 	* tree-ssa-loop-niter.c (number_of_iterations_exit): Update
! 	function comment to reflect reality.
! 	(loop_exits_before_overflow): Fix typo in function description.
! 
! 2017-02-24  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/79389
! 	* gimple-ssa-split-paths.c (is_feasible_trace): Verify more
! 	properly that a threading opportunity exists.  Detect conditional
! 	copy/constant propagation opportunities.
! 
! 2017-02-23  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* config/visium/visium.md (type): Add trap.
! 	(b): New mode attribute.
! 	(*btst): Rename into...
! 	(*btst<mode>): ...this and adjust.
! 	(*cbranchsi4_btst_insn): Rename into...
! 	(*cbranch<mode>4_btst_insn): ...this and adjust.
! 	(trap): New define_insn.
! 
! 2017-02-23  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR tree-optimization/79389
! 	* ifcvt.c (struct noce_if_info): Add rev_cond field.
! 	(noce_reversed_cond_code): New function.
! 	(noce_emit_store_flag): Use rev_cond if non-NULL instead of
! 	reversed_comparison_code.  Formatting fix.
! 	(noce_try_store_flag): Test rev_cond != NULL in addition to
! 	reversed_comparison_code.
! 	(noce_try_store_flag_constants): Likewise.
! 	(noce_try_store_flag_mask): Likewise.
! 	(noce_try_addcc): Use rev_cond if non-NULL instead of
! 	reversed_comparison_code.
! 	(noce_try_cmove_arith): Likewise.  Formatting fixes.
! 	(noce_try_minmax, noce_try_abs): Clear rev_cond.
! 	(noce_find_if_block): Initialize rev_cond.
! 	(find_cond_trap): Call noce_get_condition with then_bb == trap_bb
! 	instead of false as last argument never attempt to reverse it
! 	afterwards.
! 
! 2017-02-23  Bin Cheng  <bin.cheng@arm.com>
! 
! 	PR tree-optimization/79663
! 	* tree-predcom.c (combine_chains): Process refs in reverse order
! 	only for ZERO length chains, and add explaining comment.
! 
! 2017-02-23  Jeff Law  <law@redhat.com>
! 
! 	PR tree-optimization/79578
! 	* tree-ssa-dse.c (clear_bytes_written_by): Use OEP_ADDRESS_OF
! 	in call to operand_equal_p.
! 
! 2017-01-23  Dominique d'Humieres  <dominiq@lps.ens.fr>
! 
! 	PR target/71017
! 	* config/i386/cpuid.h: Fix another undefined behavior.
! 
! 2017-02-23  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/79683
! 	* tree-vect-stmts.c (vect_analyze_stmt): Do not overwrite
! 	vector types for data-refs.
! 
! 2017-02-23  Martin Liska  <mliska@suse.cz>
! 
! 	* params.def (PARAM_MIN_NONDEBUG_INSN_UID): Change default to 0.
! 
! 2017-02-23  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR middle-end/79665
! 	* internal-fn.c (get_range_pos_neg): Moved to ...
! 	* tree.c (get_range_pos_neg): ... here.  No longer static.
! 	* tree.h (get_range_pos_neg): New prototype.
! 	* expr.c (expand_expr_real_2) <case TRUNC_DIV_EXPR>: If both arguments
! 	are known to be in between 0 and signed maximum inclusive, try to
! 	expand both unsigned and signed divmod and use the cheaper one from
! 	those.
! 
! 2017-02-22  Jeff Law  <law@redhat.com>
! 
! 	PR tree-optimization/79578
! 	* tree-ssa-dse.c (clear_bytes_written_by): Use operand_equal_p
! 	to compare base operands.
! 
! 2017-02-22  Segher Boessenkool  <segher@kernel.crashing.org>
! 
! 	PR target/79211
! 	* config/rs6000/rs6000.md (*fsel<SFDF:mode><SFDF2:mode>4): Use
! 	gpc_reg_operand instead of fpr_reg_operand.
! 
! 2017-02-22  Sameera Deshpande  <sameera.deshpande@imgtec.com>
! 
! 	* config/mips/mips.c (mips_return_in_memory): Force FP
! 	vector types to be returned in memory for o32 ABI.
! 
! 2017-02-22  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* dwarf2out.c (gen_variable_die): For -gdwarf-5, use DW_TAG_variable
! 	instead of DW_TAG_member for static data member declarations and don't
! 	set no_linkage_name for static inline data members.
! 	(gen_member_die): For -gdwarf-5 don't change DW_TAG_variable
! 	to DW_TAG_member.
! 
! 2017-02-22  Martin Liska  <mliska@suse.cz>
! 
! 	* doc/invoke.texi: Replace inequality signs with square brackets
! 	for -Wnormalized.
! 
! 2017-02-22  Matthew Fortune  <matthew.fortune@imgtec.com>
! 
! 	PR target/78660
! 	* lra-constraints.c (simplify_operand_subreg): Handle
! 	WORD_REGISTER_OPERATIONS targets.
! 
! 2017-02-22  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR target/70465
! 	* reg-stack.c (emit_swap_insn): Treat (float_extend:?F (mem:?F))
! 	and (const_double:?F) like (mem:?F) for the purpose of fxch %st(1)
! 	elimination by swapping fld*.
! 
! 2017-02-22  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/79673
! 	* tree-ssa-pre.c (compute_avail): Use wide_int_to_tree to
! 	convert the [TARGET_]MEM_REF offset INTEGER_CST, scrapping off
! 	irrelevant address-space qualifiers and avoiding a
! 	ADDR_SPACE_CONVERT_EXPR from fold_convert.
! 
! 2017-02-22  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/79666
! 	* tree-vrp.c (extract_range_from_binary_expr_1): Make sure
! 	to not symbolically negate if that may introduce undefined
! 	overflow.
! 
! 2017-02-22  Martin Liska  <mliska@suse.cz>
! 
! 	PR lto/79587
! 	* data-streamer-in.c (streamer_read_gcov_count): Remove assert.
! 	* data-streamer-out.c (streamer_write_gcov_count_stream):
! 	Likewise.
! 	* value-prof.c (stream_out_histogram_value): Make assert more
! 	precise based on type of counter.
! 
! 2017-02-21  Uros Bizjak  <ubizjak@gmail.com>
! 
! 	PR target/79593
! 	* config/i386/i386.md (standard_x87sse_constant_load splitter):
! 	Use nonimmediate_operand instead of memory_operand for operand 1.
! 	(float-extend standard_x87sse_constant_load splitter): Ditto.
! 
! 2017-02-21 Jeff Law  <law@redhat.com>
! 
! 	PR tree-optimization/79621
! 	* gimple-ssa-isolate-paths.c (find_implicit_erroneous_behavior): Ignore
! 	blocks with edges to themselves.
! 
! 2017-02-21  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR target/79633
! 	* tree-chkp-opt.c (chkp_optimize_string_function_calls): Use
! 	is_gimple_call instead of comparing gimple_code with GIMPLE_CALL.
! 	Use gimple_call_builtin_p.
! 
! 	PR target/79570
! 	* sel-sched.c (moveup_expr_cached): Don't call sel_bb_head
! 	on temporarily removed DEBUG_INSNs.
! 
! 	PR tree-optimization/79649
! 	* tree-loop-distribution.c (classify_partition): Give up on
! 	non-generic address space loads/stores.
! 
! 2017-02-21  Aldy Hernandez  <aldyh@redhat.com>
! 
! 	* doc/loop.texi (Loop manipulation): Remove nonexistent
! 	tree_ssa_loop_version from the documentation.
! 	* cfgloopmanip.c (loop_version): Document CONDITION_BB argument.
! 
! 2017-02-21  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR target/79494
! 	* config/i386/i386.c (ix86_expand_split_stack_prologue): Call
! 	make_reg_eh_region_note_nothrow_nononlocal on call_insn.
! 	* config/rs6000/rs6000.c: Include except.h.
! 	(rs6000_expand_split_stack_prologue): Call
! 	make_reg_eh_region_note_nothrow_nononlocal on the call insn.
! 
! 2017-02-21  Martin Jambor  <mjambor@suse.cz>
! 
! 	PR lto/79579
! 	* ipa-prop.c (ipa_prop_write_jump_functions): Bail out if no edges
! 	have been analyzed.
! 
! 2017-02-21  Martin Jambor  <mjambor@suse.cz>
! 
! 	* common.opt (-fipa-cp-alignment): Mark as ignored and preserved
! 	for backward compatibility only.
! 	* doc/invoke.texi (Option Summary): Remove all references to
! 	-fipa-cp-alignment.
! 
! 2017-02-21  Matthew Fortune  <matthew.fortune@imgtec.com>
! 
! 	PR target/78660
! 	Revert:
! 	2017-02-20  Matthew Fortune  <matthew.fortune@imgtec.com>
! 
! 	* lra-constraints.c (curr_insn_transform): Handle
! 	WORD_REGISTER_OPERATIONS requirements when reloading SUBREGs.
! 
! 2017-02-21  Martin Liska  <mliska@suse.cz>
! 
! 	* config/i386/i386.opt: Replace -masm-dialect with -masm.
! 
! 2017-02-21  Thomas Schwinge  <thomas@codesourcery.com>
! 
! 	PR translation/79638
! 	* config/nvptx/nvptx.c (ENTRY_TEMPLATE): Single out "%ntid.y".
! 
! 2017-02-21  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	PR ada/67205
! 	* config/arm/arm.c (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): Define.
! 	(arm_function_ok_for_sibcall): Return false for an indirect call by
! 	descriptor if all the argument registers are used.
! 	(arm_relayout_function): Use FUNCTION_ALIGNMENT macro to adjust the
! 	alignment of the function.
! 
! 2017-02-21  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR tree-optimization/61441
! 	* simplify-rtx.c (simplify_const_unary_operation): For
! 	-fsignaling-nans and sNaN operand, return NULL_RTX rather than
! 	the sNaN unmodified.
! 
! 2017-02-20  Bernd Edlinger  <bernd.edlinger@hotmail.de>
! 
! 	* Makefile.in (BUILD_SYSTEM_HEADER_DIR): New make variabe.
! 	(LIMITS_H_TEST, if_multiarch, stmp-fixinc): Use BUILD_SYSTEM_HEADER_DIR
! 	instead of SYSTEM_HEADER_DIR.
! 
! 2017-02-20  Gerald Pfeifer  <gerald@pfeifer.com>
! 	    Martin Liška  <mliska@suse.cz>
! 
! 	* doc/invoke.texi (use-after-scope-direct-emission-threshold):
! 	Fix typos and grammar, use active voice, and clarify.
! 
! 2017-02-20  Marek Polacek  <polacek@redhat.com>
! 
! 	PR middle-end/79537
! 	* gimplify.c (gimplify_expr): Handle unused *&&L;.
! 
! 	PR sanitizer/79558
! 	* ubsan.c (ubsan_type_descriptor): Check if TYPE_MAX_VALUE is null.
! 
! 2017-02-20  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR target/79568
! 	* config/i386/i386.c (ix86_expand_builtin): Handle
! 	OPTION_MASK_ISA_AVX512VL and OPTION_MASK_ISA_64BIT in
! 	ix86_builtins_isa[fcode].isa as a requirement of those
! 	flags and any other flag in the bitmask.
! 	(ix86_init_mmx_sse_builtins): Use 0 instead of
! 	~OPTION_MASK_ISA_64BIT as mask.
! 	* config/i386/i386-builtin.def (__builtin_ia32_rdtsc,
! 	__builtin_ia32_rdtscp, __builtin_ia32_pause, __builtin_ia32_bsrsi,
! 	__builtin_ia32_rdpmc, __builtin_ia32_rolqi, __builtin_ia32_rolhi,
! 	__builtin_ia32_rorqi, __builtin_ia32_rorhi): Likewise.
! 
! 2017-02-20  Matthew Fortune  <matthew.fortune@imgtec.com>
! 
! 	PR target/78012
! 	* lra-constraints.c (split_reg): Check requested split mode
! 	is supported by the register.
! 
! 2017-02-20  Matthew Fortune  <matthew.fortune@imgtec.com>
! 
! 	* lra-constraints.c (simplify_operand_subreg): Remove early
! 	return false.
  
! 2017-02-20  Matthew Fortune  <matthew.fortune@imgtec.com>
  
! 	PR target/78660
! 	* lra-constraints.c (curr_insn_transform): Tighten condition
! 	for converting SUBREG reloads from OP_OUT to OP_INOUT.
  
! 2017-02-20  Matthew Fortune  <matthew.fortune@imgtec.com>
  
! 	PR target/78660
! 	* lra-constraints.c (curr_insn_transform): Handle
! 	WORD_REGISTER_OPERATIONS requirements when reloading SUBREGs.
  
! 2017-02-19  Uros Bizjak  <ubizjak@gmail.com>
  
! 	Revert:
! 	2016-05-30  Uros Bizjak  <ubizjak@gmail.com>
  
! 	* config/i386/sync.md (mfence_nosse): Use "lock orl $0, -4(%esp)".
  
! 2017-02-19  Jonathan Wakely  <jwakely@redhat.com>
  
! 	PR c++/69523
! 	* doc/invoke.texi (C++ Dialect Options) [-Wliteral-suffix]: Update
! 	description.
  
! 2017-02-19  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
  
! 	* gimple-pretty-print.c (dump_ternary_rhs): Adjust gimple dump format
! 	for FMA_EXPR.
  
! 2017-02-18  Jakub Jelinek  <jakub@redhat.com>
  
! 	* final.c (last_columnnum, override_columnnum): New variables.
! 	(final_start_function): Set last_columnnum, pass it to begin_prologue
! 	hook and pass 0 to dwarf2out_begin_prologue.
! 	(final_scan_insn): Update override_columnnum.  Pass last_columnnum
! 	to source_line debug hook.
! 	(notice_source_line): Compute last_columnnum and for debug_column_info
! 	return true on column changes.
! 	* debug.h (struct gcc_debug_hooks): Add column argument to
! 	source_line and begin_prologue hooks.
! 	(debug_nothing_int_charstar_int_bool): Remove prototype.
! 	(debug_nothing_int_int_charstar,
! 	debug_nothing_int_int_charstar_int_bool): New prototypes.
! 	(dwarf2out_begin_prologue): Add column argument.
! 	* debug.c (do_nothing_debug_hooks): Adjust source_line and
! 	begin_prologue hooks.
! 	(debug_nothing_int_charstar_int_bool): Remove.
! 	(debug_nothing_int_int_charstar,
! 	debug_nothing_int_int_charstar_int_bool): New functions.
! 	* dwarf2out.c (dwarf2out_begin_prologue): Add column argument, pass it
! 	through to dwarf2out_source_line.
! 	(dwarf2_lineno_debug_hooks): Adjust begin_prologue hook.
! 	(dwarf2out_source_line): Add column argument, emit it if requested.
! 	* sdbout.c (sdbout_source_line, sdbout_begin_prologue): Add column
! 	arguments.
! 	* xcoffout.h (xcoffout_begin_prologue, xcoffout_source_line): Likewise.
! 	* xcoffout.c (xcoffout_begin_prologue, xcoffout_source_line): Likewise.
! 	* vmsdbgout.c (vmsdbgout_begin_prologue): Add column argument, pass it
! 	through to dwarf2out_begin_prologue.
! 	(vmsdbgout_source_line): Add column argument, pass it through to
! 	dwarf2out_source_line.
! 	* dbxout.c (dbxout_begin_prologue): Add column argument, adjust
! 	dbxout_source_line caller.
! 	(dbxout_source_line): Add column argument.
  
! 	* common.opt (gno-column-info, gcolumn-info): New options.
! 	* dwarf2out.c (dwarf2_lineno_debug_hooks): Formatting fix.
! 	(check_die): Also test for multiple DW_AT_decl_column attributes.
! 	(add_src_coords_attributes, dwarf2out_imported_module_or_decl_1): Add
! 	DW_AT_decl_column if requested.
! 	(gen_subprogram_die): Compare and/or add also DW_AT_decl_column
! 	if requested.
! 	(gen_variable_die): Likewise.
! 	(add_call_src_coords_attributes): Add DW_AT_call_column if requested.
! 	* doc/invoke.texi (-gcolumn-info, -gno-column-info): Document.
  
! 	PR target/79569
! 	* config/i386/i386.opt (m3dnowa): Replace Undocumented with Report.
! 	* common/config/i386/i386-common.c (OPTION_MASK_ISA_3DNOW_A_SET): Define.
! 	(ix86_handle_option): Handle OPT_m3dnowa.
! 	* doc/invoke.texi (-m3dnowa): Document.
! 	* doc/extend.texi (__builtin_ia32_pmulhuw, __builtin_ia32_pf2iw): Use
! 	-m3dnowa instead of -m3dnow -march=athlon.
  
! 	PR target/79559
! 	* config/i386/i386.c (ix86_print_operand): Use output_operand_lossage
! 	instead of gcc_assert for K, r and R code checks.  Formatting fixes.
  
! 2017-02-17  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
  
! 	PR target/79261
! 	* config/rs6000/rs6000.c (rs6000_expand_ternop_builtin): Add
! 	support for CODE_FOR_vsx_xxpermdi_v2d[fi]_be.
! 	* config/rs6000/rs6000.md (reload_gpr_from_vsx<mode>): Call
! 	generator for vsx_xxpermdi_<mode>_be.
! 	* config/rs6000/vsx.md (vsx_xxpermdi_<mode>): Remove logic to
! 	force big-endian semantics.
! 	(vsx_xxpermdi_<mode>_be): New define_expand with same
! 	implementation as previous version of vsx_xxpermdi_<mode>.
  
! 2017-02-17  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/79327
! 	* gimple-ssa-sprintf.c (format_integer): Remove likely_adjust
! 	variable, its initialization and use.
  
! 2017-02-17  Julia Koval  <julia.koval@intel.com>
  
! 	* common/config/i386/i386-common.c (OPTION_MASK_ISA_RDPID_SET): New.
! 	(OPTION_MASK_ISA_PKU_UNSET): New.
! 	(ix86_handle_option): Handle -mrdpid.
! 	* config/i386/cpuid.h (bit_RDPID): New.
! 	* config/i386/driver-i386.c (host_detect_local_cpu):
! 	Detect RDPID feature.
! 	* config/i386/i386-builtin.def (__builtin_ia32_rdpid): New.
! 	* config/i386/i386-c.c (ix86_target_macros_internal):
! 	Handle RDPID flag.
! 	* config/i386/i386.c (ix86_target_string): Add -mrdpid to isa2_opts.
! 	(ix86_valid_target_attribute_inner_p): Add "rdpid".
! 	(ix86_expand_builtin): Handle IX86_BUILTIN_RDPID.
! 	* config/i386/i386.h (TARGET_RDPID, TARGET_RDPID_P): New.
! 	* config/i386/i386.md (define_insn "rdpid"): New.
! 	* config/i386/i386.opt Add -mrdpid.
! 	* config/i386/immintrin.h (_rdpid_u32): New.
  
! 2017-02-17  Vladimir Makarov  <vmakarov@redhat.com>
  
! 	PR rtl-optimization/79541
! 	* lra-constraints.c (curr_insn_transform): Remove wrong asm insn
! 	instead of transforming it into USE.
  
! 2017-02-17  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	* config/rs6000/rs6000.md (extendsfdf2): Remove default arguments.
! 	If HONOR_SNANS (SFmode) force the input to a register.
! 	(*extendsfdf2_fpr): Add !HONOR_SNANS (SFmode) condition.
! 	(*extendsfdf2_snan): New pattern, used when using SNaNs; it generates
! 	an frsp or similar insn.
  
! 2017-02-17  Martin Liska  <mliska@suse.cz>
  
! 	PR rtl-optimization/79577
! 	* params.def (selsched-max-sched-times): Increase minimum to 1.
  
! 2017-02-17  Martin Liska  <mliska@suse.cz>
  
! 	PR rtl-optimization/79574
! 	* gcse.c (want_to_gcse_p): Prevent integer overflow.
  
! 2017-02-17  Martin Liska  <mliska@suse.cz>
  
! 	PR tree-optimization/79529
! 	* tree-ssa-loop-unswitch.c (is_maybe_undefined): Use
! 	ssa_defined_default_def_p to handle cases which are implicitly
! 	defined.
! 	* tree-ssa.c (ssa_defined_default_def_p): New function.
! 	(ssa_undefined_value_p): Use ssa_defined_default_def_p to handle cases
! 	which are implicitly defined.
! 	* tree-ssa.h (ssa_defined_default_def_p): Declare.
  
! 2017-02-17  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/79576
! 	* params.def (max-ssa-name-query-depth): Limit to 10.
  
! 2017-02-17  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/79552
! 	* tree-ssa-structalias.c (visit_loadstore): Properly verify
! 	default defs.
  
! 2017-02-17  Richard Biener  <rguenther@suse.de>
  
! 	PR bootstrap/79567
! 	* genmatch.c (output_line_directive): Handle DIR_SEPARATOR_2.
  
! 2017-02-17  Marek Polacek  <polacek@redhat.com>
  
! 	PR middle-end/79536
! 	* fold-const.c (fold_negate_expr_1): Renamed from fold_negate_expr.
! 	(fold_negate_expr): New wrapper.
  
! 2017-02-16  Sandra Loosemore  <sandra@codesourcery.com>
  
! 	* doc/invoke.texi (C++ Dialect Options) [-Wno-non-template-friend]: 
! 	Correct terminology and de-emphasize pre-standard behavior.
  
! 2017-02-16  Alan Modra  <amodra@gmail.com>
  
! 	PR rtl-optimization/79286
! 	* ira.c (def_dominates_uses): New function.
! 	(update_equiv_regs): Don't create an equivalence for insns that
! 	may trap where the register def does not dominate the use.
  
! 2017-02-16  Vladimir Makarov  <vmakarov@redhat.com>
  
! 	PR rtl-optimization/78127
! 	* lra.c (lra): Call lra_eliminate before finish the loop after
! 	lra_constraint.
  
! 2017-02-16  Richard Biener  <rguenther@suse.de>
  
! 	* graphite.h: Do not include isl/isl_val_gmp.h, instead include
! 	isl/isl_val.h.
! 	* graphite-isl-ast-to-gimple.c (gmp_cst_to_tree): Remove.
! 	(gcc_expression_from_isl_expr_int): Use generic isl_val interface.
! 	* graphite-sese-to-poly.c: Do not include isl/isl_val_gmp.h.
! 	(isl_val_int_from_wi): New function.
! 	(extract_affine_gmp): Rename to ...
! 	(extract_affine_wi): ... this, take a widest_int.
! 	(extract_affine_int): Just wrap extract_affine_wi.
! 	(add_param_constraints): Use isl_val_int_from_wi.
! 	(add_loop_constraints): Likewise, and extract_affine_wi.
  
! 2017-02-15 Jeff Law  <law@redhat.com>
  
! 	PR middle-end/79521
! 	* ira-costs.c (scan_one_insn): Check have_regs_of_mode before calling
! 	ira_init_register_move_cost_if_necessary.
  
! 2017-02-15  Martin Sebor  <msebor@redhat.com>
  
! 	PR middle-end/32003
! 	* doc/invoke.texi (-fdump-final-insns): Replace option accidentally
! 	removed in a prior commit.
  
! 2017-02-15  Bin Cheng  <bin.cheng@arm.com>
  
! 	PR tree-optimization/79347
! 	* tree-vect-loop-manip.c (vect_do_peeling): Maintain profile
! 	counters during peeling.
  
! 2017-02-15  Thomas Schwinge  <thomas@codesourcery.com>
  
! 	* Makefile.in (site.exp): Remove "set ISLVER".
  
! 2017-02-15  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/79487
! 	* real.c (real_from_integer): Call real_convert even for decimal.
  
! 2017-02-15  Dominik Vogt  <vogt@linux.vnet.ibm.com>
  
! 	PR target/79421
! 	* config/s390/s390.c: define TARGET_CUSTOM_FUNCTION_DESCRIPTORS.
  
! 2017-02-14  Andrew Pinski  <apinski@cavium.com>
  
! 	* config/aarch64/aarch64-cores.def (thunderx2t99): Move to under 'C"
! 	cores and change the partno/implementer to be correct.
! 	(thunderx2t99p1): New core which replaces thunderx2t99 and still has
! 	the 'B" as the implementer.
! 	* config/aarch64/aarch64-tune.md: Regenerate.
  
! 2017-02-14  Carl Love  <cel@us.ibm.com>
  
! 	* config/rs6000/rs6000.c: Add case statement entry to make the
! 	xvcvuxdsp built-in argument unsigned.
! 	* config/rs6000/vsx.md: Fix the source and return operand types so they
! 	match the instruction definitions from the ISA document.  Fix typo
! 	in the instruction generation for the (define_insn "vsx_xvcvuxdsp"
! 	statement.
  
! 2017-02-14  Vladimir Makarov  <vmakarov@redhat.com>
  
! 	PR target/79282
! 	* lra-int.h (struct lra_operand_data, struct lra_insn_reg): Add
! 	member early_clobber_alts.
! 	* lra-lives.c (reg_early_clobber_p): New.
! 	(process_bb_lives): Use it.
! 	* lra.c (new_insn_reg): New arg early_clobber_alts.  Use it.
! 	(debug_operand_data): Initialize early_clobber_alts.
! 	(setup_operand_alternative): Set up early_clobber_alts.
! 	(collect_non_operand_hard_regs): Ditto.  Pass early clobber
! 	alternatives to new_insn_reg.
! 	(add_regs_to_insn_regno_info): Add arg early_clobber_alts.  Use
! 	it.
! 	(lra_update_insn_regno_info): Pass the new arg.
  
! 2017-02-14  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/79505
! 	* omp-offload.c (free_oacc_loop): Release loop->ifns vector.
! 	(new_oacc_loop_raw): Don't clear already cleared fields.
  
! 	PR target/79481
! 	* config/i386/avx512pfintrin.h (_mm512_prefetch_i32gather_pd,
! 	_mm512_prefetch_i32gather_ps, _mm512_prefetch_i64gather_pd,
! 	_mm512_prefetch_i64gather_ps): New inline functions and macros.
  
! 2017-02-14  Uros Bizjak  <ubizjak@gmail.com>
  
! 	PR target/79495
! 	* config/i386/i386.md (*movxf_internal): Add (o,rC) alternative.
  
! 2017-02-14  H.J. Lu  <hongjiu.lu@intel.com>
  
! 	PR target/79498
! 	* config/i386/i386.c (timode_scalar_chain::convert_insn): Insert
! 	the extra instruction to the right place to store 128-bit constant
! 	when needed.
  
! 2017-02-14  Martin Sebor  <msebor@redhat.com>
  
! 	PR middle-end/79448
! 	* gimple-ssa-sprintf.c (format_directive): Avoid issuing INT_MAX
! 	  warning for strings of unknown length.
  
! 2017-02-13  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	* config.gcc (supported_defaults) [powerpc*-*-*]: Update.
  
! 2017-02-14 Jeff Law  <law@redhat.com>
  
! 	PR target/79404
! 	* ira-costs.c (scan_one_insn): Initialize register move costs
! 	for pseudos seen in USE/CLOBBER insns.
  
! 	PR tree-optimization/79095
! 	* tree-vrp.c (extract_range_from_binary_expr_1): For EXACT_DIV_EXPR,
! 	if the numerator has the range ~[0,0] make the resultant range ~[0,0].
! 	(extract_range_from_binary_expr): For MINUS_EXPR with no derived range,
! 	if the operands are known to be not equal, then the resulting range
! 	is ~[0,0].
! 	(intersect_ranges): If the new range is ~[0,0] and the old range is
! 	wide, then prefer ~[0,0].
! 	* tree-vrp.c (overflow_comparison_p_1): New function.
! 	(overflow_comparison_p): New function.
! 	* tree-vrp.c (register_edge_assert_for_2): Register additional asserts
! 	if NAME is used in an overflow test.
! 	(vrp_evaluate_conditional_warnv_with_ops): If the ops represent an
! 	overflow check that can be expressed as an equality test, then adjust
! 	ops to be that equality test.
  
! 2017-02-14  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
  
! 	* config/s390/s390-builtin-types.def: Remove flags argument.
! 	* config/s390/s390.c (s390_init_builtins): Likewise.
  
! 2017-02-14  Martin Liska  <mliska@suse.cz>
  
! 	* tree-ssa-loop-unswitch.c (hoist_guard): Release get_loop_body
! 	vector.  Fix trailing white spaces.
  
! 2017-02-14  James Greenhalgh  <james.greenhalgh@arm.com>
  
! 	* config/aarch64/aarch64.c (aarch64_simd_container_mode): Handle
! 	HFmode.
  
! 2017-02-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	PR rtl-optimization/68664
! 	* config/arm/arm.c (arm_sched_can_speculate_insn):
! 	New function.  Declare prototype.
! 	(TARGET_SCHED_CAN_SPECULATE_INSN): Define.
  
! 2017-02-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	PR rtl-optimization/68664
! 	* config/aarch64/aarch64.c (aarch64_sched_can_speculate_insn):
! 	New function.
! 	(TARGET_SCHED_CAN_SPECULATE_INSN): Define.
  
! 2017-02-14  Amit Pawar  <amit.pawar@amd.com>
  
! 	* config/i386/i386.c (znver1_cost): Fix the alignment for function and
! 	max skip bytes for function, loop and jump.
  
! 2017-02-14  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
  
! 	* gimple-pretty-print.c (dump_unary_rhs): Adjust dump format for
! 	ABS_EXPR for gimple dump.
  
! 2017-02-14  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/79462
! 	* config/sh/sh.c (expand_cbranchdi4): Don't clear operands[4].
  
! 	PR tree-optimization/79408
! 	* tree-vrp.c (simplify_div_or_mod_using_ranges): Handle also the
! 	case when on TRUNC_MOD_EXPR op0 is INTEGER_CST.
! 	(simplify_stmt_using_ranges): Call simplify_div_or_mod_using_ranges
! 	also if rhs1 is INTEGER_CST.
  
! 2017-02-14  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/79432
! 	* tree-into-ssa.c (insert_phi_nodes): When the function can
! 	have abnormal edges rewrite SSA names with broken use-def
! 	dominance out of SSA and register them for PHI insertion.
  
! 2017-02-13  Martin Sebor  <msebor@redhat.com>
  
! 	PR middle-end/79496
! 	* gimple-ssa-sprintf.c (pass_sprintf_length::handle_gimple_call): Avoid
! 	clearing info.nowrite flag when snprintf size argument is a range.
  
! 2017-02-13  Jakub Jelinek  <jakub@redhat.com>
  
! 	* cprop.c (cprop_jump): Add missing space in string literal.
! 	* tree-ssa-structalias.c (rewrite_constraints): Likewise.
! 	(get_constraint_for_component_ref): Likewise.
! 	* df-core.c (df_worklist_dataflow_doublequeue): Likewise.
! 	* tree-outof-ssa.c (insert_partition_copy_on_edge): Likewise.
! 	* lra-constraints.c (process_alt_operands): Likewise.
! 	* ipa-inline.c (inline_small_functions): Likewise.
! 	* tree-ssa-sccvn.c (visit_reference_op_store): Likewise.
! 	* cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Likewise.
! 	* trans-mem.c (diagnose_tm_1_op): Likewise.
! 	* omp-grid.c (grid_find_single_omp_among_assignments): Likewise.
! 	(grid_parallel_clauses_gridifiable): Likewise.
  
! 	* config/nvptx/mkoffload.c (process): Add space in between
! 	, and %d.
  
! 	* config/i386/i386.h (REG_CLASS_NAMES): Add , in between
! 	"MOD4_SSE_REGS" and "ALL_REGS".
  
! 	* spellcheck.c (test_data): Add , in between "foo" and "food".
  
! 2017-02-13  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
  
! 	PR target/79449
! 	* config/rs6000/rs6000.c (expand_block_compare): Make sure runtime
! 	boundary crossing check and subsequent code generation agree.
  
! 2017-02-13  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/aarch64/aarch64.c (has_memory_op): Delete.
! 	(aarch64_madd_needs_nop): Use contains_mem_rtx_p instead of
! 	has_memory_op.
  
! 2017-02-13  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR rtl-optimization/79388
! 	PR rtl-optimization/79450
! 	* combine.c (distribute_notes): When removing TEM_INSN for which
! 	corresponding dest has last value recorded, invalidate that last
! 	value.
  
! 2017-02-13  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/arm/arm.c (arm_print_tune_info): Use ASM_COMMENT_START instead
! 	of explicit '@'.  Add missing assembly comment marker on branch costs
! 	printout.
  
! 2017-02-13  Nathan Sidwell  <nathan@acm.org>
  
! 	* gengtype-lex.l (<in_struct>): Add '/'.
  
! 2017-02-13  Martin Liska  <mliska@suse.cz>
  
! 	PR c/79471
! 	* calls.c (expand_call): Replace XALLOCAVEC with XCNEWVEC.
  
! 2017-02-13  Richard Biener  <rguenther@suse.de>
  
! 	* configure.ac (HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS):
! 	Remove.
! 	* configure: Re-generate.
! 	* config.in: Likewise.
! 	* graphite-dependences.c: Simplify as if
! 	HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS was defined.
! 	* graphite-isl-ast-to-gimple.c: Likewise.
! 	* graphite-optimize-isl.c: Likewise.
! 	* graphite-poly.c: Likewise.
! 	* graphite-sese-to-poly.c: Likewise.
! 	* graphite.h: Likewise.
! 	* toplev.c: Include isl/version.h and use isl_version () for
! 	printing the ISL version.
! 	* doc/install.texi: Update ISL requirement.
  
! 2017-02-12  Gerald Pfeifer  <gerald@pfeifer.com>
  
! 	* doc/standards.texi (Standards): Update reference to
! 	Objective-C 2.0.
  
! 2017-02-12  Gerald Pfeifer  <gerald@pfeifer.com>
! 	
! 	* doc/extend.texi (Named Address Spaces): sourceware.org now
! 	defaults to https.
! 	* doc/install.texi (Binaries): Ditto.
! 	(Specific): Ditto.
  
! 2017-02-11  Sandra Loosemore  <sandra@codesourcery.com>
  
! 	* doc/cpp.texi: Replace "stringify"/"stringification" with C 
! 	standard terminology "stringize"/"stringizing" throughout.
! 	* doc/cppinternals.texi: Likewise.
  
! 2017-02-11  Sandra Loosemore  <sandra@codesourcery.com>
  
! 	* doc/extend.texi: Fix some spelling mistakes and typos.
! 	* doc/invoke.texi: Likewise.
  
! 2017-02-11  Jan Hubicka  <hubicka@ucw.cz>
  
! 	PR ipa/79224
! 	* params.def (inline-min-speedup) Change from 10 to 8.
  
! 2017-02-11  Jakub Jelinek  <jakub@redhat.com>
  
! 	* doc/invoke.texi (fopenmp): Bump OpenMP version from 4.0 to
! 	4.5.
  
! 2017-02-11  Jan Hubicka  <hubicka@ucw.cz>
  
! 	PR ipa/79224
! 	* ipa-inline-analysis.c (get_minimal_bb): New function.
! 	(record_modified): Use it.
! 	(remap_edge_change_prob): Handle also ancestor functions.
  
! 2017-02-11  Gerald Pfeifer  <gerald@pfeifer.com>
  
! 	* doc/contrib.texi (Contributors): Remove broken link into
! 	the Mauve CVS repository.
  
! 2017-02-11  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/79454
! 	* internal-fn.c (expand_vector_ubsan_overflow): Use piece-wise
! 	result computation whenever lhs doesn't have vector mode, not
! 	just when it has BLKmode.
  
! 2017-02-10  Gerald Pfeifer  <gerald@pfeifer.com>
  
! 	* doc/makefile.texi (profiledbootstrap): Refer to the
! 	installation instructions only in textual form.
  
! 2017-02-10  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
  
! 	PR target/79295
! 	* config/rs6000/altivec.md (bcd<bcd_add_sub>): Fix constraints.
  
! 2017-02-10  Gerald Pfeifer  <gerald@pfeifer.com>
  
! 	* doc/install.texi (Specific): Use https for blackfin.uclinux.org.
! 	(Specific): Update mingw-w64 reference.
! 	(Binaries): Ditto.
! 	(Specific): Remove broken link to Renesas RX processor.
  
! 2017-02-10  Richard Biener  <rguenther@suse.de>
  
! 	* toplev.c (process_options): Do not mention obsolete graphite
! 	options when printing sorry message about missing graphite support.
! 	Mention -floop-nest-optimize.
  
! 2017-02-10  Christophe Lyon  <christophe.lyon@linaro.org>
  
! 	* config/aarch64/arm_neon.h (vtst_p8): Rewrite without asm.
! 	(vtst_p16): Likewise.
! 	(vtstq_p8): Likewise.
! 	(vtstq_p16): Likewise.
! 	(vtst_p64): New.
! 	(vtstq_p64): Likewise.
! 	* config/arm/arm_neon.h (vgetq_lane_p64): New.
! 	(vset_lane_p64): New.
! 	(vsetq_lane_p64): New.
  
! 2017-02-10  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/79411
! 	* tree-ssa-reassoc.c (is_reassociable_op): Return false if
! 	stmt operands are SSA_NAMEs used in abnormal phis.
! 	(can_reassociate_p): Return false if op is SSA_NAME used in abnormal
! 	phis.
  
! 2017-02-09  Jan Hubicka  <hubicka@ucw.cz>
  
! 	PR ipa/70795
! 	* cgraphunit.c (cgraph_node::add_new_function): Set externally_visible
! 	flag if needed.
  
! 2017-02-09  Jan Hubicka  <hubicka@ucw.cz>
  
! 	* tree-ssa-loop-unswitch.c (hoist_guard): Update profile.
  
! 2017-02-09  Jakub Jelinek  <jakub@redhat.com>
  
! 	* omp-offload.c (oacc_loop_auto_partitions): Use || instead of |
! 	to avoid warning.
  
! 	PR c/79413
! 	* gimplify.h (is_gimple_sizepos): Only test for INTEGER_CST constants,
! 	not arbitrary TREE_CONSTANT.
  
! 	PR c/79431
! 	* gimplify.c (gimplify_adjust_omp_clauses): Ignore
! 	"omp declare target link" attribute unless is_global_var.
! 	* omp-offload.c (find_link_var_op): Likewise.
  
! 2017-02-09  Nathan Sidwell  <nathan@codesourcery.com>
! 	    Chung-Lin Tang  <cltang@codesourcery.com>
  
! 	* gimplify.c (gimplify_scan_omp_clauses): No special handling for
! 	OMP_CLAUSE_TILE.
! 	(gimplify_adjust_omp_clauses): Don't delete TILE.
! 	(gimplify_omp_for): Deal with TILE.
! 	* internal-fn.c (expand_GOACC_TILE): New function.
! 	* internal-fn.def (GOACC_DIM_POS): Comment may be overly conservative.
! 	(GOACC_TILE): New.
! 	* omp-expand.c (struct oacc_collapse): Add tile and outer fields.
! 	(expand_oacc_collapse_init): Add LOC paramter.  Initialize tile
! 	element fields.
! 	(expand_oacc_collapse_vars): Add INNER parm, adjust for tiling,
! 	avoid DIV for outermost collapse var.
! 	(expand_oacc_for): Insert tile element loop as needed.  Adjust.
! 	Remove out of date comments, fix whitespace.
! 	* omp-general.c (omp_extract_for_data): Deal with tiling.
! 	* omp-general.h (enum oacc_loop_flags): Add OLF_TILE flag,
! 	adjust OLF_DIM_BASE value.
! 	(struct omp_for_data): Add tiling field.
! 	* omp-low.c (scan_sharing_clauses): Allow OMP_CLAUSE_TILE.
! 	(lower_oacc_head_mark): Add OLF_TILE as appropriate.  Ensure 2 levels
! 	for auto loops.  Remove default auto determining, moved to
! 	oacc_loop_fixed_partitions.
! 	* omp-offload.c (struct oacc_loop): Change 'ifns' to vector of call
! 	stmts, add e_mask field.
! 	(oacc_dim_call): New function, abstracted out from oacc_thread_numbers.
! 	(oacc_thread_numbers): Use oacc_dim_call.
! 	(oacc_xform_tile): New.
! 	(new_oacc_loop_raw): Initialize e_mask, adjust for ifns vector.
! 	(finish_oacc_loop): Adjust for ifns vector.
! 	(oacc_loop_discover_walk): Append loop abstraction sites to list,
! 	add case for GOACC_TILE fns.
! 	(oacc_loop_xform_loop): Delete.
! 	(oacc_loop_process): Iterate over call list directly, and add
! 	handling for GOACC_TILE fns.
! 	(oacc_loop_fixed_partitions): Determine default auto, deal with TILE,
! 	dump partitioning.
! 	(oacc_loop_auto_partitions): Add outer_assign parm. Assign all but
! 	vector partitioning to outer loops.  Assign 2 partitions to loops
! 	when available. Add TILE handling.
! 	(oacc_loop_partition): Adjust oacc_loop_auto_partitions call.
! 	(execite_oacc_device_lower): Process GOACC_TILE fns, ignore unknown specs.
! 	* tree-nested.c (convert_nonlocal_omp_clauses): Allow OMP_CLAUSE_TILE.
! 	* tree.c (omp_clause_num_ops): Adjust TILE ops.
! 	* tree.h (OMP_CLAUSE_TILE_ITERVAR, OMP_CLAUSE_TILE_COUNT): New.
  
! 2017-02-09  Gerald Pfeifer  <gerald@pfeifer.com>
  
! 	* configure.ac (ACX_BUGURL): Update.
! 	* configure: Regenerate.
  
! 2017-02-09  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/69823
! 	* graphite-scop-detection.c (scop_detection::harmful_loop_in_region):
! 	Properly enumerate all BBs in the region.  Use auto_vec/auto_bitmap.
  
! 2017-02-09  Andrew Burgess  <andrew.burgess@embecosm.com>
  
! 	* config/arc/arc-c.def: Add __NPS400__ definition.
! 	* config/arc/arc.h (CPP_SPEC): Don't define __NPS400__ here.
! 	(TARGET_NPS400): Define.
  
! 2017-02-09  Andrew Burgess  <andrew.burgess@embecosm.com>
  
! 	* config/arc/arc-arch.h (arc_arch_t): Move unchanged to earlier in
! 	file.
! 	(arc_cpu_t): Change base_architecture field, arch, to a arc_arc_t
! 	pointer, arch_info.
! 	(arc_cpu_types): Fill the arch_info field with a pointer into the
! 	arc_arch_types table.
! 	(arc_selected_cpu): Declare.
! 	* config/arc/arc.c (arc_selected_cpu): Make global.
! 	(arc_selected_arch): Delete.
! 	(arc_base_cpu): Delete.
! 	(arc_override_options): Remove references to deleted variables,
! 	update access to arch information.
! 	(ARC_OPT): Update access to arch information.
! 	(ARC_OPTX): Likewise.
! 	* config/arc/arc.h (arc_base_cpu): Remove declaration.
! 	(TARGET_ARC600): Update access to arch information.
! 	(TARGET_ARC601): Likewise.
! 	(TARGET_ARC700): Likewise.
! 	(TARGET_EM): Likewise.
! 	(TARGET_HS): Likewise.
! 	* config/arc/driver-arc.c (arc_cpu_to_as): Update access to arch
! 	information.
  
! 2017-02-08  Pat Haugen  <pthaugen@us.ibm.com>
  
! 	PR target/78604
! 	* config/rs6000/rs6000.c (rs6000_emit_vector_cond_expr): Invert
! 	condition/operands for integer GE/LE/GEU/LEU operations.
  
! 2017-02-08  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	PR translation/79397
! 	* config/rs6000/rs6000.opt (maltivec=le, maltivec=be): Fix spelling
! 	of AltiVec.
  
! 2017-02-08  Martin Jambor  <mjambor@suse.cz>
  
! 	PR ipa/79375
! 	* ipa-prop.c (ipa_alloc_node_params): Make static, return bool
! 	whether allocation happened.
! 	(ipa_initialize_node_params): Do not call ipa_alloc_node_params if
! 	nothing was allocated.
  
! 2017-02-08  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/79408
! 	* tree-vrp.c (simplify_div_or_mod_using_ranges): If op1 is not
! 	constant, but SSA_NAME with a known integer range, use the minimum
! 	of that range instead of op1 to determine if modulo can be replaced
! 	with its first operand.
  
! 2016-02-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/riscv/riscv.c (riscv_build_integer_1): Avoid use of INT16_MAX.
  
! 2017-02-08  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/71824
! 	* graphite-scop-detection.c (scop_detection::build_scop_breadth):
! 	Check all loops contained in the merged region.
  
! 2017-02-07  Andrew Pinski  <apinski@cavium.com>
  
! 	* config/aarch64/aarch64.md (popcount<mode>2): New pattern.
  
! 2017-02-07  Andrew Pinski  <apinski@cavium.com>
  
! 	* config/aarch64/aarch64-cores.def (thunderx): Disable LSE.
! 	(thunderxt88): Likewise.
! 	(thunderxt81): Disable LSE and change v8.1 to v8.
! 	(thunderxt83): Likewise.
  
! 2017-02-07  Jakub Jelinek  <jakub@redhat.com>
! 	    Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/79399
! 	* ira-int.h (struct target_ira_int): Change x_max_struct_costs_size
! 	type from int to size_t.
! 	* ira-costs.c (struct_costs_size): Change type from int to size_t.
  
! 2017-02-07  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR rtl-optimization/79386
! 	* cprop.c (bypass_conditional_jumps): Initialize
! 	bypass_last_basic_block already before splitting bbs after
! 	unconditional traps...
! 	(bypass_conditional_jumps): ... rather than here.
  
! 	PR target/79299
! 	* config/i386/sse.md (xtg_mode, gatherq_mode): New mode attrs.
! 	(*avx512f_gathersi<mode>, *avx512f_gathersi<mode>_2,
! 	*avx512f_gatherdi<mode>, *avx512f_gatherdi<mode>_2): Use them,
! 	fix -masm=intel patterns.
  
! 2017-02-07  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/79256
! 	PR middle-end/79278
! 	* builtins.c (get_object_alignment_2): Use min_align_of_type
! 	to extract alignment for MEM_REFs to honor BIGGEST_FIELD_ALIGNMENT
! 	and ADJUST_FIELD_ALIGN.
  
! 	* doc/tm.texi.in (ADJUST_FIELD_ALIGN): Adjust to take additional
! 	type parameter.
! 	* doc/tm.texi: Regenerate.
! 	* stor-layout.c (layout_decl): Adjust.
! 	(update_alignment_for_field): Likewise.
! 	(place_field): Likewise.
! 	(min_align_of_type): Likewise.
! 	* config/arc/arc.h (ADJUST_FIELD_ALIGN): Adjust.
! 	* config/epiphany/epiphany.h (ADJUST_FIELD_ALIGN): Likewise.
! 	* config/epiphany/epiphany.c (epiphany_adjust_field_align): Likewise.
! 	* config/frv/frv.h (ADJUST_FIELD_ALIGN): Likewise.
! 	* config/frv/frv.c (frv_adjust_field_align): Likewise.
! 	* config/i386/i386.h (ADJUST_FIELD_ALIGN): Likewise.
! 	* config/i386/i386.c (x86_field_alignment): Likewise.
! 	* config/rs6000/aix.h (ADJUST_FIELD_ALIGN): Likewise.
! 	* config/rs6000/darwin.h (ADJUST_FIELD_ALIGN): Likewise.
! 	* config/rs6000/freebsd64.h (ADJUST_FIELD_ALIGN): Likewise.
! 	* config/rs6000/linux64.h (ADJUST_FIELD_ALIGN): Likewise.
! 	* config/rs6000/sysv4.h (ADJUST_FIELD_ALIGN): Likewise.
! 	* config/rs6000/rs6000.c (rs6000_special_adjust_field_align_p):
! 	 Likewise.
  
! 	Revert
! 	2017-01-30  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/79256
! 	* targhooks.c (default_builtin_vector_alignment_reachable): Honor
! 	BIGGEST_FIELD_ALIGNMENT and ADJUST_FIELD_ALIGN to fix up bogus
! 	alignment on TYPE.
  
! 2017-02-07  Toma Tabacu  <toma.tabacu@imgtec.com>
  
! 	* config/mips/mips.c (mips_expand_builtin_insn): Convert the QImode
! 	argument of the pshufh, psllh, psllw, psrah, psraw, psrlh, psrlw
! 	builtins to SImode and emit a zero-extend, if necessary.
  
! 2017-02-06  Palmer Dabbelt  <palmer@dabbelt.com>
  
! 	* docs/invoke.texi (RISC-V Options): Alphabetize.
  
! 2017-02-06  Palmer Dabbelt  <palmer@dabbelt.com>
  
! 	* doc/invoke.texi (RISC-V Options): Use two spaces to separate
! 	options.
  
! 2017-02-06  Palmer Dabbelt  <palmer@dabbelt.com>
  
! 	* config/riscv/riscv.c: New file.
! 	* gcc/common/config/riscv/riscv-common.c: Likewise.
! 	* config.gcc: Likewise.
! 	* config/riscv/constraints.md: Likewise.
! 	* config/riscv/elf.h: Likewise.
! 	* config/riscv/generic.md: Likewise.
! 	* config/riscv/linux.h: Likewise.
! 	* config/riscv/multilib-generator: Likewise.
! 	* config/riscv/peephole.md: Likewise.
! 	* config/riscv/pic.md: Likewise.
! 	* config/riscv/predicates.md: Likewise.
! 	* config/riscv/riscv-builtins.c: Likewise.
! 	* config/riscv/riscv-c.c: Likewise.
! 	* config/riscv/riscv-ftypes.def: Likewise.
! 	* config/riscv/riscv-modes.def: Likewise.
! 	* config/riscv/riscv-opts.h: Likewise.
! 	* config/riscv/riscv-protos.h: Likewise.
! 	* config/riscv/riscv.h: Likewise.
! 	* config/riscv/riscv.md: Likewise.
! 	* config/riscv/riscv.opt: Likewise.
! 	* config/riscv/sync.md: Likewise.
! 	* config/riscv/t-elf-multilib: Likewise.
! 	* config/riscv/t-linux: Likewise.
! 	* config/riscv/t-linux-multilib: Likewise.
! 	* config/riscv/t-riscv: Likewise.
! 	* configure.ac: Likewise.
! 	* doc/contrib.texi: Add Kito Cheng, Palmer Dabbelt, and Andrew
! 	Waterman as RISC-V maintainers.
! 	* doc/install.texi: Add RISC-V entries.
! 	* doc/invoke.texi: Add RISC-V options section.
! 	* doc/md.texi: Add RISC-V constraints section.
! 	* configure: Regenerated.
  
! 2017-02-06  Michael Meissner  <meissner@linux.vnet.ibm.com>
  
! 	PR target/66144
! 	* config/rs6000/vector.md (vcond<mode><mode>): Allow the true and
! 	false values to be constant vectors with all 0 or all 1 bits set.
! 	(vcondu<mode><mode>): Likewise.
! 	* config/rs6000/predicates.md (vector_int_reg_or_same_bit): New
! 	predicate.
! 	(fpmask_comparison_operator): Update comment.
! 	(vecint_comparison_operator): New predicate.
! 	* config/rs6000/rs6000.c (rs6000_emit_vector_cond_expr): Optimize
! 	vector conditionals when the true and false values are constant
! 	vectors with all 0 bits or all 1 bits set.
  
! 2017-02-06  Martin Sebor  <msebor@redhat.com>
  
! 	PR  tree-optimization/79376
! 	* gimple-fold.c (get_range_strlen): Set the minimum length to zero.
  
! 2017-02-06  Uros Bizjak  <ubizjak@gmail.com>
  
! 	* config/i386/sse.md (vector modes -> vec_extract* splitter): Use
! 	explicit subreg RTX with operand 1.  Use VECTOR_MODE_P predicate
! 	to simplify split condition.
  
! 2017-02-06  Jakub Jelinek  <jakub@redhat.com>
  
! 	* omp-expand.c (oxpand_omp_atomic_fetch_op,
! 	expand_omp_atomic_pipeline): Return false if can_atomic_load_p is
! 	false.
  
! 2017-02-06  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	PR rtl-optimization/68664
! 	* target.def (can_speculate_insn): New hook.
! 	* doc/tm.texi.in (TARGET_SCHED_CAN_SPECULATE_INSN): New hook.
! 	* doc/tm.texi: Regenerate.
! 	* sched-rgn.c (can_schedule_ready_p): Use the new hook.
! 	* config/rs6000/rs6000.c (TARGET_SCHED_CAN_SPECULATE_INSN): New macro.
! 	(rs6000_sched_can_speculate_insn): New function.
  
! 2017-02-06  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/79284
! 	* tree-vectorizer.h (VECT_SCALAR_BOOLEAN_TYPE_P): Define.
! 	* tree-vect-stmts.c (vect_get_vec_def_for_operand,
! 	vectorizable_mask_load_store, vectorizable_operation,
! 	vect_is_simple_cond, get_same_sized_vectype): Use it instead
! 	of comparing TREE_CODE of a type against BOOLEAN_TYPE.
! 	* tree-vect-patterns.c (check_bool_pattern, search_type_for_mask_1,
! 	vect_recog_bool_pattern, vect_recog_mask_conversion_pattern): Likewise.
! 	* tree-vect-slp.c (vect_get_constant_vectors): Likewise.
! 	* tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
! 	Remove redundant gimple_code (stmt) == GIMPLE_ASSIGN test after
! 	is_gimple_assign (stmt).  Replace another such test with
! 	is_gimple_assign (stmt).
  
! 2017-02-06  Georg-Johann Lay  <avr@gjlay.de>
  
! 	PR target/78883
! 	* config/avr/avr.c (rtl-iter.h): Include it.
! 	(TARGET_LEGITIMATE_COMBINED_INSN): New hook define...
! 	(avr_legitimate_combined_insn): ...and implementation.
  
! 2017-02-06  Dominik Vogt  <vogt@linux.vnet.ibm.com>
  
! 	* config/s390/predicates.md ("larl_operand"): Use macros from hwint.h.
! 	* config/s390/s390.c (s390_const_operand_ok)
! 	(s390_canonicalize_comparison, s390_extract_part)
! 	(s390_single_part, s390_contiguous_bitmask_nowrap_p)
! 	(s390_contiguous_bitmask_p, s390_rtx_costs)
! 	(legitimize_pic_address): Likewise.
! 	* config/s390/s390.md ("clzdi2", "clztidi2"): Likewise.
! 	* config/s390/vx-builtins.md ("vec_genbytemaskv16qi")
! 	("vec_permi<mode>", "vfae<mode>", "*vfaes<mode>", "vstrc<mode>")
! 	("*vstrcs<mode>"): Use UINTVAL() to set unsigned HOST_WIDE_INT.
! 	* config/s390/vector.md ("vec_vfenes<mode>"): Likewise.
  
! 2017-02-06  Georg-Johann Lay  <avr@gjlay.de>
  
! 	* config/avr/avr.md (*addhi3_zero_extend): Add alternative where
! 	REGNO($0) == REGNO($1).
  
! 2017-02-06  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
  
! 	* config/s390/linux.h(SIZE_TYPE): Add comment.
  
! 2017-02-06  Julian Brown  <julian@codesourcery.com>
! 	    Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
! 	    Virendra Pathak  <virendra.pathak@broadcom.com>
  
! 	* config/aarch64/aarch64-cores.def: Change the scheduler
! 	to Thunderx2t99.
! 	* config/aarch64/aarch64.md: Include thunderx2t99.md.
! 	* config/aarch64/thunderx2t99.md: New file.
  
! 2017-02-05  Gerald Pfeifer  <gerald@pfeifer.com>
  
! 	* doc/standards.texi (Go Language): Update link to language
! 	standard.
  
! 2017-02-05  Jan Hubicka  <hubicka@ucw.cz>
  
! 	* tree-eh.c (lower_resx): Sanitize profile.
! 	(cleanup_empty_eh_move_lp): Likewise.
  
! 2017-02-05  Jan Hubicka  <hubicka@ucw.cz>
  
! 	PR tree-ssa/79347
! 	* cfgloopmanip.c (lv_adjust_loop_entry_edge, loop_version): Add
! 	ELSE_PROB.
! 	* cfgloopmanip.h (loop_version): Update prototype.
! 	* modulo-sched.c (sms_schedule): Update call of loop_version.
! 	* tree-if-conv.c(version_loop_for_if_conversion): Likewise.
! 	* tree-parloops.c (gen_parallel_loop): Likewise.
! 	* tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Likewise.
! 	* tree-ssa-loop-split.c (split_loop): Likewise.
! 	* tree-ssa-loop-unswitch.c (tree_unswitch_loop): Likewise.
! 	* tree-vect-loop-manip.c (vect_loop_versioning): Likewise.
  
! 2017-02-05  Martin Liska  <mliska@suse.cz>
  
! 	PR bootstrap/78985
! 	* config/s390/s390.c (s390_gimplify_va_arg): Initialize local
! 	variable to NULL.
! 	(print_operand_address): Initialize a struct to zero.
  
! 2017-02-05  Gerald Pfeifer  <gerald@pfeifer.com>
  
! 	* doc/contrib.texi (Contributors): Refer to Hans Boehm's
! 	garbage collector only in textual form.
  
! 2017-02-05  Gerald Pfeifer  <gerald@pfeifer.com>
! 	
! 	* doc/extend.texi (x86 specific memory model extensions for
! 	transactional memory): Simplify a phrase.
  
! 2017-02-05  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR target/79353
! 	* config/sparc/sync.md (atomic_loaddi_1): Replace 'U' constraint with
! 	'r', 'm' constraint with 'T' and !TARGET_ARCH64 with TARGET_ARCH32.
! 	(atomic_storedi_1): Likewise.
  
! 2017-02-04  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/79338
! 	* tree-parloops.c (gather_scalar_reductions): Don't call
! 	vect_analyze_loop_form for loop->inner before destroying loop's
! 	loop_vinfo.
  
! 2017-02-03  Martin Sebor  <msebor@redhat.com>
  
! 	PR tree-optimization/79327
! 	* gimple-ssa-sprintf.c (tree_digits): Avoid adding the base prefix
! 	when precision has resulted in leading zeros.
! 	(format_integer): Adjust the likely counter to assume an unknown
! 	argument that may be zero is non-zero.
  
! 2017-02-03  Jason Merrill  <jason@redhat.com>
  
! 	PR c++/78689
! 	* tree-inline.c (copy_tree_body_r) [COND_EXPR]: Revert change to
! 	avoid copying non-taken branch.
  
! 2017-02-03  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/79340
! 	* tree-vect-loop.c (vectorizable_reduction): Release
! 	vec_defs elements after safe_splicing them into other vectors.
! 	Formatting fixes.
  
! 	PR tree-optimization/79327
! 	* gimple-ssa-sprintf.c (adjust_range_for_overflow): If returning
! 	true, always set *argmin and *argmax to TYPE_{MIN,MAX}_VALUE of
! 	dirtype.
! 	(format_integer): Use wide_int_to_tree instead of build_int_cst
! 	+ to_?hwi.  If argmin is NULL, just set argmin and argmax to
! 	TYPE_{MIN,MAX}_VALUE of argtype.  Simplify and fix computation
! 	of shortest and longest sequence.
  
! 2017-02-03  Uros Bizjak  <ubizjak@gmail.com>
  
! 	* config/i386/i386.c (dimode_scalar_chain::convert_reg):
! 	Use pextrd for TARGET_SSE4_1 when creating scalar copy.
  
! 2017-02-03  Walter Lee  <walt@tilera.com>
  
! 	PR target/78862
! 	* config/tilegx/tilegx.md (tilegx_expand_prologue): Add blockage
! 	after initial stackframe link reg save.
! 	* config/tilepro/tilepro.md (tilepro_expand_prologue): Likewise.
  
! 2017-02-03  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/79354
! 	* config/rs6000/rs6000.md (movsi_from_sf): Use wb constraint instead of
! 	wu for stxssp alternative.
  
! 2017-02-03  Martin Sebor  <msebor@redhat.com>
  
! 	PR tree-optimization/79352
! 	* gimple-fold.c (get_range_strlen): Add argument.
! 	(get_range_strlen): Change return type to bool.
! 	(get_maxval_strlen): Pass in a dummy argument.
! 	* gimple-fold.h (get_range_strlen): Change return type to bool.
! 	* gimple-ssa-sprintf.c (get_string_length): Set unlikely counter.
! 	* tree.h (array_at_struct_end_p): Add argument.
! 	* tree.c (array_at_struct_end_p): Handle it.
  
! 2017-02-03  Martin Liska  <mliska@suse.cz>
  
! 	PR lto/66295
! 	* multiple_target.c (create_dispatcher_calls): Redirect edge
! 	from a caller of a dispatcher.
! 	(expand_target_clones): Make the clones local.
! 	(ipa_target_clone): Do both target clones and resolvers.
! 	(ipa_dispatcher_calls): Remove the pass.
! 	(pass_dispatcher_calls::gate): Likewise.
! 	(make_pass_dispatcher_calls): Likewise.
! 	* passes.def (pass_target_clone): Put as very first IPA early
! 	pass.
  
! 2017-02-03  Martin Liska  <mliska@suse.cz>
  
! 	* symtab.c (symtab_node::binds_to_current_def_p): Bail out
! 	in case of a function with ifunc attribute.
  
! 2017-02-03  Martin Liska  <mliska@suse.cz>
  
! 	* cgraph.c (cgraph_node::dump): Dump function version info.
! 	* symtab.c (symtab_node::dump_base): Add missing new line.
  
! 2017-02-02  Jan Hubicka  <hubicka@ucw.cz>
  
! 	* tree-ssa-ifcombine.c (update_profile_after_ifcombine): New function.
! 	(ifcombine_ifandif): Use it.
  
! 2017-02-03  Martin Liska  <mliska@suse.cz>
  
! 	* doc/invoke.texi: Document default value for
! 	use-after-scope-direct-emission-threshold.
  
! 2017-02-03  Martin Liska  <mliska@suse.cz>
  
! 	PR tree-optimization/79339
! 	* gimple-ssa-sprintf.c (format_floating_max): Call mpfr_clear.
! 	(format_floating): Likewise.
  
! 2017-02-03  Martin Liska  <mliska@suse.cz>
  
! 	PR ipa/79337
! 	* ipa-prop.c (ipa_node_params_t::insert): Remove current
! 	implementation.
! 	(ipa_node_params_t::remove): Likewise.
! 	* ipa-prop.h (ipa_node_params::ipa_node_params): Make default
! 	initialization from removed ipa_node_params_t::insert.
! 	(ipa_node_params::~ipa_node_params): Move from removed
! 	ipa_node_params_t::release.
! 	* symbol-summary.h (symbol_summary::m_released): New member.
! 	Do not release a summary twice.  Do not allow to call finalizer
! 	for types of a summary that live in GGC memory.
  
! 2017-02-02  Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
  
! 	* config/aarch64/aarch64.c (thunderx2t99_tunings): Enable AES and
! 	cmp_branch fusion.
  
! 2017-02-02  Martin Sebor  <msebor@redhat.com>
  
! 	PR middle-end/79275
! 	* gimple-ssa-sprintf.c (get_string_length): Set lower bound to zero.
! 	(format_string): Tighten up the range of output for non-constant
! 	strings and correct the expected range for wide non-constant strings.
  
! 2017-02-02  Martin Sebor  <msebor@redhat.com>
  
! 	* doc/invoke.texi (-maccumulate-args): Fix bad grammar.
  
! 	PR middle-end/32003
! 	* doc/invoke.texi (-fdump-tree-): Remove pass-specific options from
! 	index.
! 	(-fdump-tree-@var): Add to index and document how to come up
! 	with pass-specific option and dump file names.
! 	(-fdump-passes): Clarify where to look for output.
  
! 2017-02-02  Jan Hubicka  <hubicka@ucw.cz>
  
! 	PR middle-end/77445
! 	* tree-ssa-threadbackward.c (profitable_jump_thread_path): Dump
! 	statistics of the analyzed path; allow threading for speed when
! 	any of BBs along the path are optimized for speed.
  
! 2017-02-02  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR middle-end/78468
! 	* emit-rtl.c (init_emit): Add ??? comment for problematic alignment
! 	settings of the virtual registers.
  
! 	Revert again
! 	2016-08-23  Dominik Vogt  <vogt@linux.vnet.ibm.com>
  
! 	* explow.c (get_dynamic_stack_size): Take known alignment of stack
! 	pointer + STACK_DYNAMIC_OFFSET into account when calculating the size
  	needed.
  
! 2017-02-02  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
! 
! 	* config/s390/vx-builtins.md ("vec_ceil", "vec_floor")
! 	("vec_trunc", "vec_roundc", "vec_round"): Remove expanders.
! 
! 2017-02-02  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
! 
! 	* config/s390/s390.md: Add missing comments with the expanded
! 	mnemonics.
! 	* config/s390/vector.md: Likewise.
! 	* config/s390/vx-builtins.md: Likewise.
! 
! 2017-02-02  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR target/79197
! 	* config/rs6000/rs6000.md (*fixuns_trunc<mode>di2_fctiduz): Rename to ...
! 	(fixuns_trunc<mode>di2): ... this, remove previous expander.  Put all
! 	conditions on a single line.
! 
! 2017-02-02  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
! 
! 	* config/s390/s390-c.c (s390_cpu_cpp_builtins_internal): Rename
! 	__S390_VX__ to __VX__.
! 
! 2017-02-01  Andrew Pinski  <apinski@cavium.com>
! 
! 	* tree-vect-loop.c (vect_compute_single_scalar_iteration_cost): Pass
! 	stmt_info to record_stmt_cost.
! 	(vect_get_known_peeling_cost): Pass stmt_info if known to
! 	record_stmt_cost.
! 	* config/aarch64/aarch64-protos.h (cpu_vector_cost): Split
! 	cpu_vector_cost field into
! 	scalar_int_stmt_cost and scalar_fp_stmt_cost.  Split vec_stmt_cost
! 	field into vec_int_stmt_cost and vec_fp_stmt_cost.
! 	* config/aarch64/aarch64.c (generic_vector_cost): Update for the
! 	splitting of scalar_stmt_cost and vec_stmt_cost.
! 	(thunderx_vector_cost): Likewise.
! 	(cortexa57_vector_cost): LIkewise.
! 	(exynosm1_vector_cost): Likewise.
! 	(xgene1_vector_cost): Likewise.
! 	(thunderx2t99_vector_cost): Improve after the splitting of the two
! 	fields.
! 	(aarch64_builtin_vectorization_cost): Update for the splitting of
! 	scalar_stmt_cost and vec_stmt_cost.
! 
! 2017-02-01  Torvald Riegel  <triegel@redhat.com>
! 	    Richard Henderson  <rth@redhat.com>
! 
! 	* builtins.c (fold_builtin_atomic_always_lock_free): Make "lock-free"
! 	conditional on existance of a fast atomic load.
! 	* optabs-query.c (can_atomic_load_p): New function.
! 	* optabs-query.h (can_atomic_load_p): Declare it.
! 	* optabs.c (expand_atomic_exchange): Always delegate to libatomic if
! 	no fast atomic load is available for the particular size of access.
! 	(expand_atomic_compare_and_swap): Likewise.
! 	(expand_atomic_load): Likewise.
! 	(expand_atomic_store): Likewise.
! 	(expand_atomic_fetch_op): Likewise.
! 	* testsuite/lib/target-supports.exp
! 	(check_effective_target_sync_int_128): Remove x86 because it provides
! 	no fast atomic load.
! 	(check_effective_target_sync_int_128_runtime): Likewise.
! 
! 2017-02-01  Richard Biener  <rguenther@suse.de>
! 
! 	* graphite.c: Include tree-vectorizer.h for find_loop_location.
! 	(graphite_transform_loops): Provide opt-info for optimized nests.
! 	* tree-parloop.c (parallelize_loops): Provide opt-info for
! 	parallelized loops.
! 
! 2017-02-01  Richard Biener  <rguenther@suse.de>
! 
! 	PR middle-end/79315
! 	* tree-cfg.c (move_stmt_op): Never set TREE_BLOCK when it
! 	was not set before.
! 
! 2017-02-01  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/71824
! 	* graphite-scop-detection.c (scop_detection::build_scop_breadth):
! 	Verify the loops are valid in the merged SESE region.
! 	(scop_detection::can_represent_loop_1): Check analyzing the
! 	evolution of the number of iterations in the region succeeds.
! 
! 2017-01-31  Ian Lance Taylor  <iant@golang.org>
! 
! 	* config/i386/i386.c (ix86_expand_split_stack_prologue): Add
! 	REG_ARGS_SIZE note to 32-bit push insns and call insn.
! 
! 2017-01-31  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR preprocessor/79210
! 	* input.c (get_substring_ranges_for_loc): Replace line_width
! 	assertion with error-handling.
! 
! 2017-01-31  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/77318
! 	* graphite-sese-to-poly.c (extract_affine): Fix assert.
! 	(create_pw_aff_from_tree): Take loop parameter.
! 	(add_condition_to_pbb): Pass loop of the condition to
! 	create_pw_aff_from_tree.
! 
! 2017-01-31  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* config/s390/s390.c (s390_asan_shadow_offset): New function.
! 	(TARGET_ASAN_SHADOW_OFFSET): Redefine.
! 
! 2017-01-31  Michael Meissner  <meissner@linux.vnet.ibm.com>
! 
! 	PR target/78597
! 	PR target/79038
! 	* config/rs6000/rs6000-protos.h (convert_float128_to_int): Delete,
! 	no longer used.
! 	(convert_int_to_float128): Likewise.
! 	* config/rs6000/rs6000.c (convert_float128_to_int): Likewise.
! 	(convert_int_to_float128): Likewise.
! 	* config/rs6000/rs6000.md (UNSPEC_IEEE128_MOVE): Likewise.
! 	(UNSPEC_IEEE128_CONVERT): Likewise.
! 	(floatsi<mode>2, FLOAT128 iterator): Bypass calling
! 	rs6000_expand_float128_convert if we have IEEE 128-bit hardware.
! 	Use local variables for IBM extended format.
! 	(fix_trunc<mode>si2, FLOAT128 iterator): Likewise.
! 	(fix_trunc<mode>si2_fprs): Likewise.
! 	(fixuns_trunc<IEEE128:mode><SDI:mode>2): Likewise.
! 	(floatuns<IEEE128:mode>2, IEEE128 iterator): Likewise.
! 	(fix<uns>_<mode>si2_hw): Rework the IEEE 128-bt hardware support
! 	to know that we can now have integers of all sizes in vector
! 	registers.
! 	(fix<uns>_<mode>di2_hw): Likewise.
! 	(float<uns>_<mode>si2_hw): Likewise.
! 	(fix_<mode>si2_hw): Likewise.
! 	(fixuns_<mode>si2_hw): Likewise.
! 	(float<uns>_<mode>di2_hw): Likewise.
! 	(float_<mode>di2_hw): Likewise.
! 	(float_<mode>si2_hw): Likewise.
! 	(floatuns_<mode>di2_hw): Likewise.
! 	(floatuns_<mode>si2_hw): Likewise.
! 	(xscvqp<su>wz_<mode>): Delete, no longer used.
! 	(xscvqp<su>dz_<mode>): Likewise.
! 	(xscv<su>dqp_<mode>): Likewise.
! 	(ieee128_mfvsrd_64bit): Likewise.
! 	(ieee128_mfvsrd_32bit): Likewise.
! 	(ieee128_mfvsrwz): Likewise.
! 	(ieee128_mtvsrw): Likewise.
! 	(ieee128_mtvsrd_64bit): Likewise.
! 	(ieee128_mtvsrd_32bit): Likewise.
! 
! 2017-01-31  Martin Liska  <mliska@suse.cz>
! 
! 	PR ipa/79285
! 	* ipa-prop.c (ipa_free_all_node_params): Call release method
! 	instead of ~sumbol_summary to not to trigger double times
! 	dtor of hash_map.
! 
! 2017-01-31  Aldy Hernandez  <aldyh@redhat.com>
! 
! 	PR tree-optimization/71691
! 	* bitmap.h (class auto_bitmap): New.
! 	* tree-ssa-loop-unswitch.c (tree_may_unswitch_on): Call
! 	is_maybe_undefined instead of ssa_undefined_value_p.
! 
! 2017-01-31  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
! 
! 	* config/s390/s390-c.c (s390_cpu_cpp_builtins_internal): Rename
! 	__S390_ARCH_LEVEL__ to __ARCH__.
! 
! 2017-01-31  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR tree-optimization/79267
! 	* value-prof.c (gimple_ic): Only drop lhs for noreturn calls
! 	if should_remove_lhs_p is true.
! 
! 2017-01-30  Alexandre Oliva <aoliva@redhat.com>
! 
! 	PR debug/63238
! 	* dwarf2out.c (clone_as_declaration): Drop DW_AT_alignment.
! 	(add_alignment_attribute): New.
! 	(base_type_die): Add alignment attribute.
! 	(subrange_type_die): Likewise.
! 	(modified_type_die): Likewise.
! 	(gen_array_type_die): Likewise.
! 	(gen_descr_array_type_die: Likewise.
! 	(gen_enumeration_type_die): Likewise.
! 	(gen_subprogram_die): Likewise.
! 	(gen_variable_die): Likewise.
! 	(gen_field_die): Likewise.
! 	(gen_ptr_to_mbr_type_die): Likewise.
! 	(gen_struct_or_union_type_die): Likewise.
! 	(gen_subroutine_type_die): Likewise.
! 	(gen_typedef_die): Likewise.
! 	(base_type_cmp): Compare alignment attribute.
! 
! 2017-01-30  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
! 
! 	PR target/79170
! 	* config/rs6000/altivec.md (*setb_internal): Rename to setb_signed.
! 	(setb_unsigned) New pattern for setb with CCUNS.
! 	* config/rs6000/rs6000.c (expand_block_compare): Use a different
! 	subfc./subfe sequence to avoid overflow problems.  Generate a
! 	shorter sequence with cmpld/setb for power9.
! 	* config/rs6000/rs6000.md (subf<mode>3_carry_dot2): Add a new pattern
! 	for generating subfc. instruction.
! 	(cmpstrsi): Add TARGET_POPCNTD predicate as the generate sequence
! 	now uses this instruction.
! 
! 2017-01-30  Ian Lance Taylor  <iant@google.com>
! 
! 	PR debug/79289
! 	* dwarf2out.c (gen_type_die_with_usage): When picking a variant
! 	for FUNCTION_TYPE/METHOD_TYPE, use the first matching one.
! 
! 2017-01-30  Martin Sebor  <msebor@redhat.com>
! 
! 	* gimple-ssa-sprintf.c (fmtresult::adjust_for_width_or_precision):
! 	Move constant to the right of a relational operator.
! 	(get_mpfr_format_length, format_character, format_string): Ditto.
! 	(should_warn_p, maybe_warn): Same.
! 
! 	* doc/invoke.texi (-Wformat-truncation=1): Fix typo.
! 
! 2017-01-30  Maxim Ostapenko  <m.ostapenko@samsung.com>
! 
! 	PR lto/79061
! 	* asan.c (get_translation_unit_decl): Remove function.
! 	(asan_add_global): Force has_dynamic_init to zero in LTO mode.
! 
! 2017-01-30  Martin Liska  <mliska@suse.cz>
! 
! 	PR gcov-profile/79259
! 	* opts.c (common_handle_option): Enable flag_ipa_bit_cp w/
! 	-fprofile-generate.
! 
! 2017-01-30  Martin Liska  <mliska@suse.cz>
! 
! 	PR bootstrap/78985
! 	* config/aarch64/cortex-a57-fma-steering.c (func_fma_steering::analyze):
! 	Initialize variables with NULL value.
! 
! 2017-01-30  Richard Earnshaw  <rearnsh@arm.com>
! 
! 	PR target/79260
! 	* config.gcc (arm*-*-*): Add arm/arm-flags.h and arm/arm-isa.h to
! 	tm_p_file.
! 	* arm/arm-protos.h: Don't directly include arm-flags.h and arm-isa.h.
! 
! 2017-01-30  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/79276
! 	* tree-vrp.c (process_assert_insertions): Properly adjust common
! 	when removing a duplicate.
! 
! 2017-01-30  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/79256
! 	* targhooks.c (default_builtin_vector_alignment_reachable): Honor
! 	BIGGEST_FIELD_ALIGNMENT and ADJUST_FIELD_ALIGN to fix up bogus
! 	alignment on TYPE.
! 	* tree.c (build_aligned_type): Set TYPE_USER_ALIGN.
! 
! 2017-01-30  Dominik Vogt  <vogt@linux.vnet.ibm.com>
! 
! 	PR target/79240
! 	* config/s390/s390.md ("*r<noxa>sbg_<mode>_srl_bitmask")
! 	("*r<noxa>sbg_<mode>_sll_bitmask")
! 	("*extzv_<mode>_srl<clobbercc_or_nocc>")
! 	("*extzv_<mode>_sll<clobbercc_or_nocc>"):
! 	Use contiguous_bitmask_nowrap_operand.
! 
! 2017-01-29  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
! 
! 	PR target/79268
! 	* config/rs6000/altivec.h (vec_xl): Revise #define.
! 	(vec_xst): Likewise.
! 
! 2017-01-27  Uros Bizjak  <ubizjak@gmail.com>
! 
! 	* config/i386/i386.c (print_reg): Use REGNO instead of true_regnum.
  
! 2017-01-27  Bernd Schmidt  <bschmidt@redhat.com>
  
! 	PR rtl-optimization/79194
! 	* cprop.c (one_cprop_pass): Move deletion of code after unconditional
! 	traps before call to bypass_conditional_jumps.
  
! 2017-01-27  Vladimir Makarov  <vmakarov@redhat.com>
  
! 	PR tree-optimization/71374
! 	* lra-constraints.c (check_conflict_input_operands): New.
! 	(match_reload): Use it.
  
! 2017-01-27  Vladimir Makarov  <vmakarov@redhat.com>
  
! 	PR target/79131
! 	* lra-assigns.c (find_hard_regno_for_1): Take endianess for into
! 	account to calculate conflict_set.
  
! 2017-01-27  Bin Cheng  <bin.cheng@arm.com>
  
! 	PR rtl-optimization/78559
! 	* combine.c (try_combine): Discard REG_EQUAL and REG_EQUIV for
! 	other_insn in combine.
  
! 2017-01-27  Pekka Jääskeläinen  <pekka.jaaskelainen@parmance.com>
  
! 	* builtin-types.def: Use unsigned_char_type_node for BT_UINT8.  Use
! 	uint16_type_node for BT_UINT16.
  
! 2017-01-27  David Malcolm  <dmalcolm@redhat.com>
  
! 	* doc/sourcebuild.texi (Testsuites): Add "GIMPLE Tests" and
! 	"RTL Tests" to menu.
! 	(GIMPLE Tests): New node.
! 	(RTL Tests): New node.
  
! 2017-01-27  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/79245
! 	* tree-loop-distribution.c (distribute_loop): Apply cost
! 	modeling also to detected patterns.
  
! 2017-01-27  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/71433
! 	* tree-vrp.c (register_new_assert_for): Revert earlier changes.
! 	(compare_assert_loc): New function.
! 	(process_assert_insertions): Sort and optimize assert locations
! 	to remove duplicates and push down identical assertions on
! 	edges to their destination block.
  
! 2017-01-27  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/79244
! 	* tree-vrp.c (remove_range_assertions): Forcefully propagate
! 	out SSA names even if abnormal.
  
! 2017-01-27  Jakub Jelinek  <jakub@redhat.com>
  
! 	* realmpfr.h: Poison MPFR_RND{N,Z,U,D}.
! 	* gimple-ssa-sprintf.c (format_floating_max): Use GMP_RNDN
! 	instead of MPFR_RNDN.
  
! 2017-01-27  Richard Earnshaw  <rearnsha@arm.com>
  
! 	PR target/79239
! 	* arm.c (arm_option_override): Don't call build_target_option_node
! 	until after doing all option overrides.
! 	(arm_valid_target_attribute_tree): Likewise.
  
! 2017-01-27  Martin Liska  <mliska@suse.cz>
  
! 	* doc/invoke.texi (-fprofile-arcs): Document profiling support
! 	for {cd}tors and C++ {cd}tors.
  
! 2017-01-27  Dominik Vogt  <vogt@linux.vnet.ibm.com>
  
! 	* config/s390/s390.md ("*setmem_long_and")
! 	("*setmem_long_and_31z"): Use zero_extend instead of and.
  
! 2017-01-26  Martin Sebor  <msebor@redhat.com>
  
! 	* gimple-ssa-sprintf.c (format_floating): Simplify the computation
! 	of precision.
  
! 2017-01-26  Martin Sebor  <msebor@redhat.com>
  
! 	* gimple-ssa-sprintf.c (format_floating): Test HAVE_XFmode and
! 	HAVE_DFmode before using XFmode or DFmode.
! 	(parse_directive): Avoid using the z length modifier to avoid
! 	the ISO C++98 does not support the ‘z’ gnu_printf length modifier.
  
! 	PR middle-end/78703
! 	* gimple-ssa-sprintf.c (adjust_for_width_or_precision): Change
! 	to accept adjustment as an array.
! 	(get_int_range): New function.
! 	(struct directive): Make width and prec arrays.
! 	(directive::set_width, directive::set_precision): Call get_int_range.
! 	(format_integer, format_floating): Handle width and precision ranges.
! 	(format_string, parse_directive): Same.
  
! 2017-01-26  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR debug/79129
! 	* dwarf2out.c (generate_skeleton_bottom_up): For children with
! 	comdat_type_p set, just clone them, but keep the children in the
! 	original DIE.
  
! 	PR debug/78835
! 	* dwarf2out.c (prune_unused_types): Mark all functions with DIEs
! 	which have direct callers with -fvar-tracking-assignments enabled
! 	in the current TU.
! 	(resolve_addr): Avoid adding skeleton DIEs for DW_AT_call_origin
! 	inside of type units.
  
! 2017-01-26  Martin Sebor  <msebor@redhat.com>
  
! 	PR middle-end/78703
! 	* gimple-ssa-sprintf.c (struct result_range): Add likely and
! 	unlikely counters.
! 	(struct format_result): Replace number_chars, number_chars_min,
! 	and number_chars_max with a single member of struct result_range.
! 	Remove bounded.
! 	(format_result::operator+=): Adjust.
! 	(struct fmtresult): Remove bounded.  Handle likely and unlikely
! 	counters.
! 	(fmtresult::adjust_for_width_or_precision): New function.
! 	(fmtresult:type_max_digits): New function.
! 	(bytes_remaining): Handle likely and unlikely counters.
! 	(min_bytes_remaining): Remove.
! 	(format_percent): Simplify.
! 	(format_integer, format_floating): Set likely and unlikely counters.
! 	(get_string_length, format_character, format_string): Same.
! 	(format_plain, should_warn_p): New function.
! 	(maybe_warn): Call should_warn_p.  Update diagnostic messages
! 	and handle those for all directives, including plain strings.
! 	(format_directive): Handle likely and unlikely counters.
! 	Remove unnecessary quoting from diagnostics.  Add an informational
! 	note.
! 	(add_bytes): Remove.
! 	(pass_sprintf_length::compute_format_length): Simplify.
! 	(try_substitute_return_value): Handle likely and unlikely counters.
  
! 2017-01-26  Carl Love  <cel@us.ibm.com>
  
! 	* config/rs6000/rs6000-c (altivec_overloaded_builtins): Remove
! 	bogus entries for the P8V_BUILTIN_VEC_VGBBD built-ins
  
! 2017-01-26  Vladimir Makarov  <vmakarov@redhat.com>
  
! 	PR target/79131
! 	* lra-assigns.c (setup_live_pseudos_and_spill_after_risky): Take
! 	endianess for subregs into account.
! 	* lra-constraints.c (lra_constraints): Do risky transformations
! 	always on the first iteration.
! 	* lra-lives.c (check_pseudos_live_through_calls): Add arg
! 	last_call_used_reg_set.
! 	(process_bb_lives): Define and use last_call_used_reg_set.
! 	* lra.c (lra): Always continue after lra_constraints on the first
! 	iteration.
  
! 2017-01-26  Kirill Yukhin  <kirill.yukhin@gmail.com>
  
! 	* gcc.target/i386/avx512bw-kshiftlq-2.c: Use unsigned long long
! 	constant.
! 	* gcc.target/i386/avx512bw-kshiftrq-2.c: Ditto.
  
! 2017-01-26  Jakub Jelinek  <jakub@redhat.com>
  
! 	* config/i386/avx512fintrin.h (_ktest_mask16_u8,
! 	_ktestz_mask16_u8, _ktestc_mask16_u8, _kadd_mask16): Move to ...
! 	* config/i386/avx512dqintrin.h (_ktest_mask16_u8,
! 	_ktestz_mask16_u8, _ktestc_mask16_u8, _kadd_mask16): ... here.
! 	* config/i386/i386-builtin.def (__builtin_ia32_ktestchi,
! 	__builtin_ia32_ktestzhi, __builtin_ia32_kaddhi): Use
! 	OPTION_MASK_ISA_AVX512DQ instead of OPTION_MASK_ISA_AVX512F.
! 	* config/i386/sse.md (SWI1248_AVX512BWDQ2): New mode iterator.
! 	(kadd<mode>, ktest<mode>): Use it instead of SWI1248_AVX512BWDQ.
  
! 2017-01-26  Marek Polacek  <polacek@redhat.com>
  
! 	PR c/79199
! 	* fold-const.c (operand_equal_p) [COND_EXPR]: Use OP_SAME_WITH_NULL
! 	for the third operand.
  
! 2017-01-26  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/79236
! 	* omp-low.c (struct omp_context): Add simt_stmt field.
! 	(scan_omp_for): Return omp_context *.
! 	(scan_omp_simd): Set simt_stmt on the non-_simt_ SIMD
! 	context to the _simt_ SIMD stmt.
! 	(lower_omp_for): For combined SIMD with sibling _simt_
! 	SIMD, make sure to use the same decls in _looptemp_
! 	clauses as in the sibling.
  
! 2017-01-26  David Sherwood  <david.sherwood@arm.com>
  
! 	PR middle-end/79212
! 	* gimplify.c (omp_notice_variable): Add GOVD_SEEN flag to variables in
! 	all contexts.
  
! 2017-01-26  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/70465
! 	* reg-stack.c (emit_swap_insn): Instead of fld a; fld b; fxchg %st(1);
! 	emit fld b; fld a; if possible.
  
! 	* brig-builtins.def: Update copyright years.
! 	* config/arm/arm_acle_builtins.def: Update copyright years.
  
! 2017-01-25  Michael Meissner  <meissner@linux.vnet.ibm.com>
  
! 	PR target/79179
! 	* config/rs6000/vsx.md (vsx_extract_<mode>_store): Use wY
! 	constraint instead of o for the stxsd instruction.
  
! 2017-01-25  Carl Love  <cel@us.ibm.com>
  
! 	* config/rs6000/rs6000-c (altivec_overloaded_builtins): Fix order
! 	of entries for ALTIVEC_BUILTIN_VEC_PACKS and P8V_BUILTIN_VEC_VGBBD.
  
! 2017-01-25  Jonathan Wakely  <jwakely@redhat.com>
  
! 	* doc/invoke.texi (C++ Dialect Options): Fix typo.
  
! 2017-01-25  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/69264
! 	* target.def (vector_alignment_reachable): Improve documentation.
  	* doc/tm.texi: Regenerate.
! 	* targhooks.c (default_builtin_vector_alignment_reachable): Simplify
! 	and add a comment.
! 	* tree-vect-data-refs.c (vect_supportable_dr_alignment): Revert
! 	earlier changes with respect to TYPE_USER_ALIGN.
! 	(vector_alignment_reachable_p): Likewise.  Improve dumping.
! 
! 2016-01-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
! 
! 	PR target/79145
! 	* config/arm/arm.md (xordi3): Force constant operand into a register
! 	for TARGET_IWMMXT.
! 
! 2016-01-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
! 
! 	* doc/invoke.texi (-fstore-merging): Correct default optimization
! 	levels at which it is enabled.
! 	(-O): Move -fstore-merging from list to...
! 	(-O2): ... Here.
! 
! 2017-01-25  Richard Biener  <rguenther@suse.de>
! 
! 	PR debug/78363
! 	* omp-expand.c: Include debug.h.
! 	(expand_omp_taskreg): Make sure to generate early debug before
! 	outlining anything from a function.
! 	(expand_omp_target): Likewise.
! 	(grid_expand_target_grid_body): Likewise.
  
! 2017-01-25  Maxim Ostapenko  <m.ostapenko@samsung.com>
  
! 	PR lto/79061
! 	* asan.c (get_translation_unit_decl): New function.
! 	(asan_add_global): Extract modules file name from globals
! 	TRANSLATION_UNIT_DECL name.
  
! 2017-01-24  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR target/77439
! 	* config/arm/arm.c (arm_function_ok_for_sibcall): Add back restriction
! 	for long calls with APCS frame and VFP.
  
! 2017-01-24  David Malcolm  <dmalcolm@redhat.com>
  
! 	* cfg.c (original_copy_tables_initialized_p): New function.
! 	* cfg.h (original_copy_tables_initialized_p): New decl.
! 	* cfgrtl.c (relink_block_chain): Guard the call to
! 	free_original_copy_tables with a call to
! 	original_copy_tables_initialized_p.
! 	* cgraph.h (symtab_node::native_rtl_p): New decl.
! 	* cgraphunit.c (symtab_node::native_rtl_p): New function.
! 	(symtab_node::needed_p): Don't assert for early assembly output
! 	for __RTL functions.
! 	(cgraph_node::finalize_function): Set "force_output" for __RTL
  	functions.
! 	(cgraph_node::analyze): Bail out early for __RTL functions.
! 	(analyze_functions): Update assertion to support __RTL functions.
! 	(cgraph_node::expand): Bail out early for __RTL functions.
! 	* final.c (rest_of_clean_state): Don't call delete_tree_ssa for
! 	__RTL functions.
! 	* function.h (struct function): Update comment for field
! 	"pass_startwith".
! 	* gimple-expr.c: Include "tree-pass.h".
! 	(gimple_has_body_p): Return false for __RTL functions.
! 	* Makefile.in (OBJS): Add run-rtl-passes.o.
! 	* pass_manager.h (gcc::pass_manager::get_rest_of_compilation): New
! 	accessor.
! 	(gcc::pass_manager::get_clean_slate): New accessor.
! 	* passes.c: Include "insn-addr.h".
! 	(should_skip_pass_p): Add logging.  Update logic for running
! 	"expand" to be compatible with both __GIMPLE and __RTL.  Guard
! 	property-provider override so it is only done for gimple passes.
! 	Don't skip dfinit.
! 	(skip_pass): New function.
! 	(execute_one_pass): Call skip_pass when skipping passes.
! 	* read-md.c (md_reader::read_char): Support filtering
! 	the input to a subset of line numbers.
! 	(md_reader::md_reader): Initialize fields
! 	m_first_line and m_last_line.
! 	(md_reader::read_file_fragment): New function.
! 	* read-md.h (md_reader::read_file_fragment): New decl.
! 	(md_reader::m_first_line): New field.
! 	(md_reader::m_last_line): New field.
! 	* read-rtl-function.c (function_reader::create_function): Only
! 	create cfun if it doesn't already exist.  Set PROP_rtl on cfun's
! 	curr_properties.  Set DECL_INITIAL to a dummy block.
! 	(read_rtl_function_body_from_file_range): New function.
! 	* read-rtl-function.h (read_rtl_function_body_from_file_range):
! 	New decl.
! 	* run-rtl-passes.c: New file.
! 	* run-rtl-passes.h: New file.
! 
! 2017-01-24 Jeff Law  <law@redhat.com>
! 
! 	* config/microblaze/microblaze.h (ASM_FORMAT_PRIVATE_NAME): Increase
! 	buffer size.
! 
! 2017-01-24  Bin Cheng  <bin.cheng@arm.com>
! 
! 	PR tree-optimization/79159
! 	* tree-ssa-loop-niter.c (get_cst_init_from_scev): New function.
! 	(record_nonwrapping_iv): Improve boundary using above function if no
! 	value range information.
! 
! 2017-01-24  Pekka Jääskeläinen  <pekka@parmance.com>
! 	    Martin Jambor  <mjambor@suse.cz>
! 
! 	* brig-builtins.def: New file.
! 	* builtins.def (DEF_HSAIL_BUILTIN): New macro.
! 	(DEF_HSAIL_ATOMIC_BUILTIN): Likewise.
! 	(DEF_HSAIL_SAT_BUILTIN): Likewise.
! 	(DEF_HSAIL_INTR_BUILTIN): Likewise.
! 	(DEF_HSAIL_CVT_ZEROI_SAT_BUILTIN): Likewise.
! 	* builtin-types.def (BT_INT8): New.
! 	(BT_INT16): Likewise.
! 	(BT_UINT8): Likewise.
! 	(BT_UINT16): Likewise.
! 	(BT_FN_ULONG): Likewise.
! 	(BT_FN_UINT_INT): Likewise.
! 	(BT_FN_UINT_ULONG): Likewise.
! 	(BT_FN_UINT_LONG): Likewise.
! 	(BT_FN_UINT_PTR): Likewise.
! 	(BT_FN_ULONG_PTR): Likewise.
! 	(BT_FN_INT8_FLOAT): Likewise.
! 	(BT_FN_INT16_FLOAT): Likewise.
! 	(BT_FN_UINT32_FLOAT): Likewise.
! 	(BT_FN_UINT16_FLOAT): Likewise.
! 	(BT_FN_UINT8_FLOAT): Likewise.
! 	(BT_FN_UINT64_FLOAT): Likewise.
! 	(BT_FN_UINT16_UINT32): Likewise.
! 	(BT_FN_UINT32_UINT16): Likewise.
! 	(BT_FN_UINT16_UINT16_UINT16): Likewise.
! 	(BT_FN_INT_PTR_INT): Likewise.
! 	(BT_FN_UINT_PTR_UINT): Likewise.
! 	(BT_FN_LONG_PTR_LONG): Likewise.
! 	(BT_FN_ULONG_PTR_ULONG): Likewise.
! 	(BT_FN_VOID_UINT64_UINT64): Likewise.
! 	(BT_FN_UINT8_UINT8_UINT8): Likewise.
! 	(BT_FN_INT8_INT8_INT8): Likewise.
! 	(BT_FN_INT16_INT16_INT16): Likewise.
! 	(BT_FN_INT_INT_INT): Likewise.
! 	(BT_FN_UINT_FLOAT_UINT): Likewise.
! 	(BT_FN_FLOAT_UINT_UINT): Likewise.
! 	(BT_FN_ULONG_UINT_UINT): Likewise.
! 	(BT_FN_ULONG_UINT_PTR): Likewise.
! 	(BT_FN_ULONG_ULONG_ULONG): Likewise.
! 	(BT_FN_UINT_UINT_UINT): Likewise.
! 	(BT_FN_VOID_UINT_PTR): Likewise.
! 	(BT_FN_UINT_UINT_PTR: Likewise.
! 	(BT_FN_UINT32_UINT64_PTR): Likewise.
! 	(BT_FN_INT_INT_UINT_UINT): Likewise.
! 	(BT_FN_UINT_UINT_UINT_UINT): Likewise.
! 	(BT_FN_UINT_UINT_UINT_PTR): Likewise.
! 	(BT_FN_UINT_ULONG_ULONG_UINT): Likewise.
! 	(BT_FN_ULONG_ULONG_ULONG_ULONG): Likewise.
! 	(BT_FN_LONG_LONG_UINT_UINT): Likewise.
! 	(BT_FN_ULONG_ULONG_UINT_UINT): Likewise.
! 	(BT_FN_VOID_UINT32_UINT64_PTR): Likewise.
! 	(BT_FN_VOID_UINT32_UINT32_PTR): Likewise.
! 	(BT_FN_UINT_UINT_UINT_UINT_UINT): Likewise.
! 	(BT_FN_UINT_FLOAT_FLOAT_FLOAT_FLOAT): Likewise.
! 	(BT_FN_ULONG_ULONG_ULONG_UINT_UINT): Likewise.
! 	* doc/frontends.texi: List BRIG FE.
! 	* doc/install.texi (Testing): Add BRIG tesring requirements.
! 	* doc/invoke.texi (Overall Options): Mention BRIG.
! 	* doc/standards.texi (Standards): Doucment BRIG HSA version.
! 
! 2017-01-24  Richard Biener  <rguenther@suse.de>
! 
! 	PR translation/79208
! 	* ipa-devirt.c (odr_types_equivalent_p): Fix typo in diagnostic.
! 
! 2017-01-24  Martin Jambor  <mjambor@suse.cz>
  
! 	PR bootstrap/79198
! 	* ipa-prop.c (ipa_free_all_node_params): Call summary destructor.
! 	* ipa-prop.c (ipa_node_params_t::insert): Initialize fields known_csts
! 	and known_contexts.
  
! 2017-01-24  Aldy Hernandez  <aldyh@redhat.com>
  
! 	PR middle-end/79123
! 	* gimple-ssa-warn-alloca.c (alloca_call_type): Make sure
! 	casts from signed to unsigned really don't have a range.
  
! 2017-01-24  Markus Trippelsdorf  <markus@trippelsdorf.de>
  
! 	* gimple-ssa-sprintf.c (format_floating): Change MPFR_RNDx to
! 	GMP_RNDx for compatiblity.
  
! 2017-01-24  Martin Liska  <mliska@suse.cz>
  
! 	PR bootstrap/79132
! 	* tree-ssa-reassoc.c (rewrite_expr_tree_parallel): Insert assert
! 	that would prevent us to call alloca with -1 as argument.
  
! 2017-01-24  Jakub Jelinek  <jakub@redhat.com>
  
! 	* dwarf2out.c (output_compilation_unit_header, output_file_names):
! 	Avoid -Wformat-security warning.
  
! 2017-01-23  Andrew Pinski  <apinski@cavium.com>
  
! 	* config/aarch64/aarch64.c (thunderx2t99_addrcost_table): Improve
! 	cost table.
  
! 2017-01-23  Martin Sebor  <msebor@redhat.com>
  
! 	PR middle-end/78703
! 	* gimple-ssa-sprintf.c (warn_level): New global.
! 	(format_integer): Use it here and throughout the rest of the file.
! 	Use the same switch to compute sign as base.
! 	(maybe_warn): New function.
! 	(format_directive): Factor out warnings into maybe_warn.
! 	Add debugging output.  Use warn_level.
! 	(add_bytes): Use warn_level.
! 	(pass_sprintf_length::compute_format_length): Add debugging output.
! 	(try_substitute_return_value): Same.
! 	(pass_sprintf_length::handle_gimple_call): Set and use warn_level.
  
! 	PR middle-end/78703
! 	* gimple-ssa-sprintf.c (struct format_result): Remove constant member.
! 	(struct fmtresult, format_integer, format_floating): Adjust.
! 	(fmtresult::fmtresult): Set max correctly in two argument ctor.
! 	(get_string_length, format_string,format_directive): Same.
! 	(pass_sprintf_length::compute_format_length): Same.
! 	(try_substitute_return_value): Simplify slightly.
  
! 	PR middle-end/78703
! 	* gimple-ssa-sprintf.c (pass_sprintf_length::gate): Adjust formatting.
! 	(fmtresult::operator+=): Outlined.
! 	(struct fmtresult): Add ctors.
! 	(struct conversion_spec): Rename...
! 	(struct directive): ...to this.  Add and remove data members.
! 	(directive::set_width, directive::set_precision): New functions.
! 	(format_percent): Use fmtresult ctor.
! 	(get_width_and_precision): Remove.
! 	(format_integer): Make naming changes.  Avoid computing width and
! 	precision.
! 	(format_floating): Same.  Adjust indentation.
! 	(format_character, format_none): New functions.
! 	(format_string): Moved character handling to format_character.
! 	(format_directive): Remove arguments, change return type.
! 	(parse_directive): New function.
! 	(pass_sprintf_length::compute_format_length): Move directive
! 	parsing to parse_directive.
  
! 2017-01-23  Jakub Jelinek  <jakub@redhat.com>
  
! 	* tree.h (assign_assembler_name_if_neeeded): Rename to ...
! 	(assign_assembler_name_if_needed): ... this.
! 	* tree.c (assign_assembler_name_if_neeeded): Rename to ...
! 	(assign_assembler_name_if_needed): ... this.
! 	(free_lang_data_in_cgraph): Adjust callers.
! 	* cgraphunit.c (cgraph_node::analyze): Likewise.
! 	* omp-expand.c (expand_omp_taskreg, expand_omp_target):
! 	Likewise.
  
! 2017-01-23  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/79088
! 	PR tree-optimization/79188
! 	* tree-ssa-threadupdate.c (mark_threaded_blocks): Move code
! 	resetting loop bounds after last path deletion.  Reset loop
! 	bounds of the target loop, make code match the comments.
! 	* tree-ssa-threadbackwards.c (pass_early_thread_jumps::execute):
! 	Make sure loops need no fixups.
  
! 2017-01-23  Kelvin Nilsen  <kelvin@gcc.gnu.org>
  
! 	* config/rs6000/rs6000-builtin.def (VSIEDPF): Add scalar insert
! 	exponent support with double type for first argument.
! 	* config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Changed
! 	type returned by __builtin_vec_extract_sig,
! 	__builtin_vec_extract_sig_sp, and __builtin_vec_extract_sig_dp
! 	functions from "vector int" to "vector unsigned int" or from
! 	"vector long long int" to "vector unsigned long long int".
! 	Changed type returned by __builtin_vec_extract_exp,
! 	__builtin_vec_extract_exp_sp, and __builtin_vec_extract_exp_dp
! 	functions from "vector int" to "vector unsigned int" or from
! 	"vector long long int" to "vector unsigned long long int".
! 	Changed return type of __builtin_vec_test_data_class,
! 	__builtin_vec_test_data_class_sp, and
! 	__builtin_vec_test_data_class_dp from "vector int" to
! 	"vector bool int" or from "vector long long int" to "vector bool
! 	long long int" and changed second argument type from "unsigned
! 	int" to "int".  Added new overloaded function forms "vector float
! 	__builtin_vec_insert_exp (vector float, vector unsigned int)" and
! 	"vector float __builtin_vec_insert_exp_sp (vector float, vector
! 	unsigned int)" and "vector double __builtin_vec_insert_exp (vector
! 	double, vector unsigned long long int)" and "vector double
! 	__builtin_vec_insert_exp_dp (vector double, vector unsigned long
! 	long int)".  Changed return type of
! 	__builtin_scalar_test_data_class and
! 	__builtin_scalar_test_data_class_sp and
! 	__builtin_scalar_test_data_class_dp from "unsigned int" to "bool
! 	int" and changed second argument from "unsigned int" to "int".
! 	Changed type returned by __builtin_scalar_test_neg,
! 	__builtin_scalar_test_neg_sp, and __builtin_scalar_test_neg_dp
! 	from "int" to "bool int".  Added new overloaded function form
! 	"double __builtin_scalar_insert_exp (double, unsigned long long int)".
! 	* config/rs6000/vsx.md (xsiexpdpf): New insn for scalar insert
! 	exponent double-precision with floating point first argument.
! 	* doc/extend.texi (PowerPC AltiVec Built-in Functions): Adjust
! 	documentation of scalar_test_data_class, scalar_test_neg,
! 	scalar_extract_sig, scalar_extract_exp, scalar_insert_exp,
! 	vector_extract_exp, vec_extract_sig, vec_insert_exp, and
! 	vec_test_data_class built-in functions to reflect refinements in
! 	their type signatures.
  
! 2017-01-23  Andreas Tobler  <andreast@gcc.gnu.org>
  
! 	* config/aarch64/aarch64.c (aarch64_elf_asm_constructor): Increase
! 	size of buf.
! 	(aarch64_elf_asm_destructor): Likewise.
  
! 2017-01-23  Bernd Schmidt  <bschmidt@redhat.com>
  
! 	PR rtl-optimization/78634
! 	* config/i386/i386.c (ix86_max_noce_ifcvt_seq_cost): New function.
! 	(TARGET_MAX_NOCE_IFCVT_SEQ_COST): Define.
! 	* ifcvt.c (noce_try_cmove): Add missing cost check.
  
! 	PR rtl-optimization/71724
! 	* combine.c (if_then_else_cond): Look for situations where it is
! 	beneficial to undo the work of one of the recursive calls.
  
! 2017-01-23  Bin Cheng  <bin.cheng@arm.com>
  
! 	PR tree-optimization/70754
! 	* tree-predcom.c (stmt_combining_refs): New parameter INSERT_BEFORE.
! 	(reassociate_to_the_same_stmt): New parameter INSERT_BEFORE.  Insert
! 	combined stmt before it if not NULL.
! 	(combine_chains): Process refs reversely and compute dominance point
! 	for root ref.
  
! 2017-01-23  Martin Liska  <mliska@suse.cz>
  
! 	PR tree-optimization/79196
! 	* tree-ssa-strlen.c (fold_strstr_to_memcmp): Rename to ...
! 	(fold_strstr_to_strncmp): ... this.  Fold the pattern to strncmp
! 	instead of memcmp.
! 	(strlen_optimize_stmt): Call the renamed function.
  
! 2017-01-23  Michael Matz  <matz@suse.de>
  
! 	PR tree-optimization/78384
! 	* tree-ssa-loop-split.c (patch_loop_exit): Use correct edge.
  
! 2017-01-23  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/79186
! 	* tree-vrp.c (register_new_assert_for): Make sure we've seen
! 	both incoming edges before moving an assert.
  
! 2017-01-23  Martin Jambor  <mjambor@suse.cz>
  
! 	* ipa-prop.c (load_from_param_1): Removed.
! 	(load_from_unmodified_param): Bits from load_from_param_1 put back
! 	here.
! 	(load_from_param): Removed.
! 	(compute_complex_assign_jump_func): Removed stmt2 and just replaced it
! 	with stmt.  Reverted back to use of load_from_unmodified_param.
  
! 2017-01-23  Martin Jambor  <mjambor@suse.cz>
  
! 	PR ipa/79108
! 	* ipa-prop.h (ipa_param_descriptor): Anotate with with GTY(()).
! 	(ipa_node_params): Annotate with GTY((for_user)).  Make descriptors
! 	field a pointer to garbage collected vector, mark lattices and
! 	ipcp_orig_node with GTY((skip)).
! 	(ipa_get_param_count): Adjust to descriptors being a pointer.
! 	(ipa_get_param): Likewise.
! 	(ipa_get_type): Likewise.
! 	(ipa_get_param_move_cost): Likewise.
! 	(ipa_set_param_used): Likewise.
! 	(ipa_get_controlled_uses): Likewise.
! 	(ipa_set_controlled_uses): Likewise.
! 	(ipa_is_param_used): Likewise.
! 	(ipa_node_params_t): Move into garbage collector.  New methods insert
! 	and remove.
! 	(ipa_node_params_sum): Annotate wth GTY(()).
! 	(ipa_check_create_node_params): Adjust to ipa_node_params_sum being
! 	garbage collected.
! 	(ipa_load_from_parm_agg): Adjust declaration.
! 	* ipa-icf.c (param_used_p): Adjust to descriptors being a pointer.
! 	* ipa-profile.c (ipa_profile): Likewise.
! 	* ipa-prop.c (ipa_get_param_decl_index_1): Likewise.
! 	(ipa_populate_param_decls): Make descriptors parameter garbage
! 	collected.
! 	(ipa_dump_param): Adjust to descriptors being a pointer.
! 	(ipa_alloc_node_params): Likewise.
! 	(ipa_initialize_node_params): Likewise.
! 	(load_from_param_1): Make descriptors parameter garbage collected.
! 	(load_from_unmodified_param): Likewise.
! 	(load_from_param): Likewise.
! 	(ipa_load_from_parm_agg): Likewise.
! 	(ipa_node_params::~ipa_node_params): Removed.
! 	(ipa_free_all_node_params): Remove call to delete operator.
! 	(ipa_node_params_t::insert): New.
! 	(ipa_node_params_t::remove): Likewise.
! 	(ipa_node_params_t::duplicate): Adjust to descriptors being a pointer,
! 	copy known_csts and known_contexts vectors.
! 	(ipa_read_node_info): Adjust to descriptors being a pointer.
! 	(ipcp_modif_dom_walker): Make m_descriptors field garbage
! 	collected.
! 	(ipcp_transform_function): Make descriptors variable garbage
! 	collected.
  
! 2017-01-23  Andrew Senkevich  <andrew.senkevich@intel.com>
  
! 	* config/i386/avx512bwintrin.h: Add k-mask test, kortest intrinsics.
! 	* config/i386/avx512dqintrin.h: Ditto.
! 	* config/i386/avx512fintrin.h: Ditto.
! 	* gcc/config/i386/i386.c: Handle new builtins.
! 	* config/i386/i386-builtin.def: Add new builtins.
! 	* config/i386/sse.md (ktest<mode>, kortest<mode>): New.
! 	(UNSPEC_KORTEST, UNSPEC_KTEST): New.
  
! 2017-01-23  Jakub Jelinek  <jakub@redhat.com>
! 	    Martin Liska  <mliska@suse.cz>
  
! 	* asan.h: Define ASAN_USE_AFTER_SCOPE_ATTRIBUTE.
! 	* asan.c (asan_expand_poison_ifn): Support stores and use
! 	appropriate ASAN report function.
! 	* internal-fn.c (expand_ASAN_POISON_USE): New function.
! 	* internal-fn.def (ASAN_POISON_USE): Declare.
! 	* tree-into-ssa.c (maybe_add_asan_poison_write): New function.
! 	(maybe_register_def): Create ASAN_POISON_USE when sanitizing.
! 	* tree-ssa-dce.c (eliminate_unnecessary_stmts): Remove
! 	ASAN_POISON calls w/o LHS.
! 	* tree-ssa.c (execute_update_addresses_taken): Create clobber
! 	for ASAN_MARK (UNPOISON, &x, ...) in order to prevent usage of a LHS
! 	from ASAN_MARK (POISON, &x, ...) coming to a PHI node.
! 	* gimplify.c (asan_poison_variables): Add attribute
! 	use_after_scope_memory to variables that really needs to live
! 	in memory.
! 	* tree-ssa.c (is_asan_mark_p): Do not rewrite into SSA when
! 	having the attribute.
  
! 2017-01-23  Martin Liska  <mliska@suse.cz>
  
! 	* asan.c (create_asan_shadow_var): New function.
! 	(asan_expand_poison_ifn): Likewise.
! 	* asan.h (asan_expand_poison_ifn): New declaration.
! 	* internal-fn.c (expand_ASAN_POISON): Likewise.
! 	* internal-fn.def (ASAN_POISON): New builtin.
! 	* sanopt.c (pass_sanopt::execute): Expand
! 	asan_expand_poison_ifn.
! 	* tree-inline.c (copy_decl_for_dup_finish): Make function
! 	external.
! 	* tree-inline.h (copy_decl_for_dup_finish): Likewise.
! 	* tree-ssa.c (is_asan_mark_p): New function.
! 	(execute_update_addresses_taken): Rewrite local variables
! 	(identified just by use-after-scope as addressable) into SSA.
  
! 2017-01-22  Gerald Pfeifer  <gerald@pfeifer.com>
  
! 	* doc/install.texi (Specific): opensource.apple.com uses https
! 	now. Remove trailing slash.
  
! 2017-01-22  Gerald Pfeifer  <gerald@pfeifer.com>
  
! 	* README.Portability: Remove note on an Irix compatibility issue.
  
! 2017-01-22  Dimitry Andric <dim@FreeBSD.org>
  
! 	* gcov.c (INCLUDE_ALGORITHM): Define.
! 	(INCLUDE_VECTOR): Define.
! 	No longer include <vector> and <algorithm> directly.
  
! 2017-01-21  Gerald Pfeifer  <gerald@pfeifer.com>
  
! 	* doc/extend.texi (Thread-Local): Change www.akkadia.org reference
! 	to https.
! 	* doc/invoke.texi (Code Gen Options): Ditto.
  
! 2017-01-21  Jan Hubicka  <hubicka@ucw.cz>
  
! 	PR lto/78407
! 	* cfg.c (update_bb_profile_for_threading): Fix updating of probablity.
  
! 2017-01-21  Bernd Schmidt  <bschmidt@redhat.com>
  
! 	rtl-optimization/79125
! 	* cprop.c (local_cprop_pass): Handle cases where we make an
! 	unconditional trap.
  
! 2017-01-20  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	PR target/61729
! 	PR target/77850
! 	* config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Adjust address to
! 	read from, for big endian.
  
! 2017-01-20  Jiong Wang  <jiong.wang@arm.com>
  
! 	* config/aarch64/aarch64-builtins.c (aarch64_init_builtins): Register
! 	register pauth builtins for LP64 only.
  
! 2017-01-20  Marek Polacek  <polacek@redhat.com>
  
! 	PR c/79152
! 	* gimplify.c (should_warn_for_implicit_fallthrough): Handle consecutive
! 	non-case labels.
  
! 2017-01-20  Alexander Monakov  <amonakov@ispras.ru>
  
! 	* omp-expand.c (expand_omp_simd): Clear PROP_gimple_lomp_dev regardless
! 	of safelen status.
! 	* omp-offload.c (pass_omp_device_lower::gate): Use PROP_gimple_lomp_dev.
! 	* passes.c (dump_properties): Handle PROP_gimple_lomp_dev.
! 	* tree-inline.c (expand_call_inline): Propagate PROP_gimple_lomp_dev.
  
! 2017-01-20  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	PR target/71270
! 	* config/arm/arm.c (neon_valid_immediate): Reject vector constants
! 	in big-endian mode when they are not a single duplicated value.
  
! 2017-01-20  Richard Biener  <rguenther@suse.de>
  
! 	* BASE-VER: Bump to 7.0.1.
  
! 2017-01-20  Alexander Monakov  <amonakov@ispras.ru>
  
! 	* omp-low.c (omplow_simd_context): New struct.  Use it...
! 	(lower_rec_simd_input_clauses): ...here and...
! 	(lower_rec_input_clauses): ...here to hold common data.  Adjust all
! 	references to idx, lane, max_vf, is_simt.
  
! 2017-01-20  Graham Markall  <graham.markall@embecosm.com>
  
! 	* config/arc/arc.h (LINK_SPEC): Use arclinux_nps emulation when
! 	mcpu=nps400.
  
! 2017-01-20  Martin Jambor  <mjambor@suse.cz>
  
! 	* hsa.h: Renaed to hsa-common.h.  Adjusted a comment.
! 	* hsa.c: Renaed to hsa-common.c.  Change include of gt-hsa.h to
! 	gt-hsa-common.h.
! 	* Makefile.in (OBJS): Rename hsa.o to hsa-common.o.
! 	(GTFILES): Rename hsa.c to hsa-common.c.
! 	* hsa-brig.c: Change include of hsa.h to hsa-common.h.
! 	* hsa-dump.c: Likewise.
! 	* hsa-gen.c: Likewise.
! 	* hsa-regalloc.c: Likewise.
! 	* ipa-hsa.c: Likewise.
! 	* omp-expand.c: Likewise.
! 	* omp-low.c: Likewise.
! 	* toplev.c: Likewise.
  
! 2017-01-20  Marek Polacek  <polacek@redhat.com>
  
! 	PR c/64279
! 	* doc/invoke.texi: Document -Wduplicated-branches.
! 	* fold-const.c (operand_equal_p): Handle MODIFY_EXPR, INIT_EXPR,
! 	COMPOUND_EXPR, PREDECREMENT_EXPR, PREINCREMENT_EXPR,
! 	POSTDECREMENT_EXPR, POSTINCREMENT_EXPR, CLEANUP_POINT_EXPR, EXPR_STMT,
! 	STATEMENT_LIST, and RETURN_EXPR.  For non-pure non-const functions
! 	return 0 only when not OEP_LEXICOGRAPHIC.
! 	(fold_build_cleanup_point_expr): Use the expression
! 	location when building CLEANUP_POINT_EXPR.
! 	* tree-core.h (enum operand_equal_flag): Add OEP_LEXICOGRAPHIC.
! 	* tree.c (add_expr): Handle error_mark_node.
  
! 2017-01-20  Martin Liska  <mliska@suse.cz>
  
! 	PR lto/69188
! 	* tree-profile.c (init_ic_make_global_vars): Do not call
! 	finalize_decl.
! 	(gimple_init_gcov_profiler): Likewise.
  
! 2017-01-20  Martin Liska  <mliska@suse.cz>
  
! 	PR ipa/71190
! 	* cgraph.h (maybe_create_reference): Remove argument and
! 	update comment.
! 	* cgraphclones.c (cgraph_node::create_virtual_clone): Remove one
! 	argument.
! 	* ipa-cp.c (create_specialized_node): Likewise.
! 	* symtab.c (symtab_node::maybe_create_reference): Handle
! 	VAR_DECLs and ADDR_EXPRs and select ipa_ref_use type.
  
! 2017-01-20  Martin Liska  <mliska@suse.cz>
  
! 	* read-rtl-function.c (function_reader::create_function): Use
! 	build_decl instread of build_decl_stat.
  
! 2017-01-20  Andrew Senkevich  <andrew.senkevich@intel.com>
  
! 	* config/i386/avx512bwintrin.h: Add k-mask registers shift intrinsics.
! 	* config/i386/avx512dqintrin.h: Ditto.
! 	* config/i386/avx512fintrin.h: Ditto.
! 	* config/i386/i386-builtin-types.def: Add new types.
! 	* gcc/config/i386/i386.c: Handle new types.
! 	* config/i386/i386-builtin.def (__builtin_ia32_kshiftliqi)
! 	(__builtin_ia32_kshiftlihi, __builtin_ia32_kshiftlisi)
! 	(__builtin_ia32_kshiftlidi, __builtin_ia32_kshiftriqi)
! 	(__builtin_ia32_kshiftrihi, __builtin_ia32_kshiftrisi)
! 	(__builtin_ia32_kshiftridi): New.
! 	* config/i386/sse.md (k<code><mode>): Rename *k<code><mode>.
  
! 2017-01-19  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	PR target/78875
! 	PR target/79140
! 	* config/rs6000/rs6000.c (TARGET_STACK_PROTECT_GUARD): Unconditionally
! 	define to rs6000_init_stack_protect_guard.
! 	(rs6000_init_stack_protect_guard): New function.
  
! 2017-01-19  Matthew Fortune  <matthew.fortune@imgtec.com>
! 	    Yunqiang Su  <yunqiang.su@imgtec.com>
  
! 	* config.gcc (supported_defaults): Add madd4.
! 	(with_madd4): Add validation.
! 	(all_defaults): Add madd4.
! 	* config/mips/mips.opt (mmadd4): New option.
! 	* gcc/config/mips/mips.h (OPTION_DEFAULT_SPECS): Add a default for
! 	mmadd4.
! 	(TARGET_CPU_CPP_BUILTINS): Add builtin_define for
! 	__mips_no_madd4.
! 	(ISA_HAS_UNFUSED_MADD4): Gate with mips_madd4.
! 	(ISA_HAS_FUSED_MADD4): Likewise.
! 	* gcc/doc/invoke.texi (-mmadd4): Document the new option.
! 	* gcc/doc/install.texi (--with-madd4): Document the new option.
  
! 2017-01-19  Jiong Wang  <jiong.wang@arm.com>
  
! 	* config/aarch64/aarch64-builtins.c (enum aarch64_builtins): New
! 	entries for AARCH64_PAUTH_BUILTIN_XPACLRI,
! 	AARCH64_PAUTH_BUILTIN_PACIA1716, AARCH64_PAUTH_BUILTIN_AUTIA1716.
! 	(aarch64_init_pauth_hint_builtins): New.
! 	(aarch64_init_builtins): Call aarch64_init_pauth_hint_builtins.
! 	(aarch64_expand_builtin): Expand new builtins.
  
! 2017-01-19  Jiong Wang  <jiong.wang@arm.com>
  
! 	* reg-notes.def (CFA_TOGGLE_RA_MANGLE): New reg-note.
! 	* combine-stack-adj.c (no_unhandled_cfa): Handle
! 	REG_CFA_TOGGLE_RA_MANGLE.
! 	* dwarf2cfi.c (dwarf2out_frame_debug): Handle REG_CFA_TOGGLE_RA_MANGLE.
! 	* config/aarch64/aarch64.c (aarch64_expand_prologue): Generates DWARF
! 	info for return address signing.
! 	(aarch64_expand_epilogue): Likewise.
  
! 2017-01-19  Jiong Wang  <jiong.wang@arm.com>
  
! 	* config/aarch64/aarch64-opts.h (aarch64_function_type): New enum.
! 	* config/aarch64/aarch64-protos.h
! 	(aarch64_return_address_signing_enabled): New declaration.
! 	* config/aarch64/aarch64.c (aarch64_return_address_signing_enabled):
! 	New function.
! 	(aarch64_expand_prologue): Sign return address before it's pushed onto
! 	stack.
! 	(aarch64_expand_epilogue): Authenticate return address fetched from
! 	stack.
! 	(aarch64_override_options): Sanity check for ILP32 and ISA level.
! 	(aarch64_attributes): New function attributes for "sign-return-address".
! 	* config/aarch64/aarch64.md (UNSPEC_AUTI1716, UNSPEC_AUTISP,
! 	UNSPEC_PACI1716, UNSPEC_PACISP, UNSPEC_XPACLRI): New unspecs.
! 	("*do_return"): Generate combined instructions according to key index.
! 	("<pauth_mnem_prefix>sp", "<pauth_mnem_prefix1716", "xpaclri"): New.
! 	* config/aarch64/iterators.md (PAUTH_LR_SP, PAUTH_17_16): New integer
! 	iterators.
! 	(pauth_mnem_prefix, pauth_hint_num_a): New integer attributes.
! 	* config/aarch64/aarch64.opt (msign-return-address=): New.
! 	* doc/extend.texi (AArch64 Function Attributes): Documents
! 	"sign-return-address=".
! 	* doc/invoke.texi (AArch64 Options): Documents "-msign-return-address=".
  
! 2017-01-19  Matthew Fortune  <matthew.fortune@imgtec.com>
  
! 	* doc/invoke.texi: Add missing -mlxc1-sxc1 options to
! 	overall option summary.
  
! 2017-01-19  Jiong Wang  <jiong.wang@arm.com>
  
! 	* config/aarch64/aarch64-arches.def: New entry for "armv8.3-a".
! 	* config/aarch64/aarch64.h (AARCH64_FL_V8_3, AARCH64_FL_FOR_ARCH8_3,
! 	AARCH64_ISA_V8_3, TARGET_ARMV8_3): New.
! 	* doc/invoke.texi (AArch64 Options): Document "armv8.3-a".
  
! 2017-01-19  Michael Meissner  <meissner@linux.vnet.ibm.com>
  
! 	* config/rs6000/rs6000-cpus.def (ISA_3_0_MASKS_SERVER): Enable
! 	-mpower9-minmax by default for -mcpu=power9.
! 	(ISA_3_MASKS_IEEE): Require -mvsx-small-integer to enable IEEE
! 	128-bit floating point.
  
! 2017-01-20  Alan Modra  <amodra@gmail.com>
  
! 	* config/rs6000/rs6000.md (cmpstrnsi, cmpstrsi): Fail if
! 	optimizing for size.
  
! 2017-01-20  Alan Modra  <amodra@gmail.com>
  
! 	PR target/79144
! 	* config/rs6000/rs6000.c (expand_strn_compare): Get the asm name
! 	for strcmp and strncmp from corresponding builtin decl.
  
! 2017-01-19  Uros Bizjak  <ubizjak@gmail.com>
  
! 	* config.gcc (x86_64-*-rtems*): Use i386/rtemself.h
! 	instead of i386/rtems-64.h.
! 	* config/i386/rtems-64.h: Remove.
  
! 2017-01-19  Uros Bizjak  <ubizjak@gmail.com>
  
! 	PR target/78478
! 	Revert:
! 	2013-11-05  Uros Bizjak  <ubizjak@gmail.com>
  
! 	* config/i386/rtemself.h (LONG_DOUBLE_TYPE_SIZE): New define.
  
! 2017-01-19  Tamar Christina  <tamar.christina@arm.com>
  
! 	* config/aarch64/aarch64.c (aarch64_simd_gen_const_vector_dup):
! 	Change int to HOST_WIDE_INT.
! 	* config/aarch64/aarch64-protos.h
! 	(aarch64_simd_gen_const_vector_dup): Likewise.
! 	* config/aarch64/aarch64-simd.md: Add copysign<mode>3.
  
! 2017-01-19  David Malcolm  <dmalcolm@redhat.com>
  
! 	* langhooks-def.h (lhd_type_for_size): New decl.
! 	(LANG_HOOKS_TYPE_FOR_SIZE): Define as lhd_type_for_size.
! 	* langhooks.c (lhd_type_for_size): New function, taken from
! 	lto_type_for_size.
  
! 2017-01-19  Pat Haugen  <pthaugen@us.ibm.com>
  
! 	* config/rs6000/power9.md (power9-alu): Remove 'cmp' type and add
! 	define_bypass for CR latency.
! 	(power9-cracked-alu): Update bypass latency and remove power9-branch.
! 	(power9-alu2): Add define_bypass for CR latency.
! 	(power9-cmp): New.
! 	(power9-mul): Update insn latency.
! 	(power9-mul-compare): Update insn latency, bypass latency and remove
! 	power9-branch.
  
! 2016-01-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/aarch64/aarch64-protos.h (aarch64_nopcrelative_literal_loads):
! 	Delete.
! 	* config/aarch64/aarch64.md
! 	(aarch64_reload_movcp<GPF_TF:mode><P:mode>): Delete reference to
! 	aarch64_nopcrelative_literal_loads.
! 	(aarch64_reload_movcp<VALL:mode><P:mode>): Likewise.
  
! 2017-01-19  Chenghua Xu  <paul.hua.gm@gmail.com>
  
! 	* config/mips/mips.h (ISA_HAS_FUSED_MADD4): Enable for
! 	TARGET_LOONGSON_3A.
! 	(ISA_HAS_UNFUSED_MADD4): Exclude TARGET_LOONGSON_3A.
  
! 2017-01-19  Doug Gilmore  <doug.gilmore@imgtec.com>
  
! 	PR target/78176
! 	* config.gcc (supported_defaults): Add lxc1-sxc1.
! 	(with_lxc1_sxc1): Add validation.
! 	(all_defaults): Add lxc1-sxc1.
! 	* config/mips/mips.opt (mlxc1-sxc1): New option.
! 	* gcc/config/mips/mips.h (OPTION_DEFAULT_SPECS): Add a default for
! 	mlxc1-sxc1.
! 	(TARGET_CPU_CPP_BUILTINS): Add builtin_define for
! 	__mips_no_lxc1_sxc1.
! 	(ISA_HAS_LXC1_SXC1): Gate with mips_lxc1_sxc1.
! 	* gcc/doc/invoke.texi (-mlxc1-sxc1): Document the new option.
! 	* doc/install.texi (--with-lxc1-sxc1): Document the new option.
  
! 2017-01-19  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/72488
! 	* tree-ssa-sccvn.c (run_scc_vn): When we abort the VN make
! 	sure to restore SSA info.
! 	* tree-ssa.c (verify_ssa): Verify SSA info is not shared.
  
! 2017-01-19  Richard Earnshaw  <rearnsha@arm.com>
  
! 	PR rtl-optimization/79121
! 	* expr.c (expand_expr_real_2, case LSHIFT_EXPR): Look at the signedness
! 	of the inner type when shifting an extended value.
  
! 2017-01-17  Jan Hubicka  <hubicka@ucw.cz>
  
! 	PR lto/78407
! 	* symtab.c (symtab_node::equal_address_to): Fix comparing of
! 	interposable aliases.
  
! 2017-01-18  Peter Bergner  <bergner@vnet.ibm.com>
  
! 	PR target/78516
! 	* config/rs6000/spe.md (mov_si<mode>_e500_subreg0): Fix constraints.
! 	Use the evmergelohi instruction.
! 	(mov_si<mode>_e500_subreg4_2_le): Likewise.
! 	(mov_sitf_e500_subreg8_2_be): Likewise.
! 	(mov_sitf_e500_subreg12_2_le): Likewise.
! 	(mov_si<mode>_e500_subreg0_2_le): Fix constraints.
! 	(mov_si<mode>_e500_subreg4_2_be): Likewise.
! 	(mov_sitf_e500_subreg8_2_le): Likewise.
! 	(mov_sitf_e500_subreg12_2_be): Likewise.
  
! 2017-01-18  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
  
! 	* config/rs6000/altivec.md (altivec_vbpermq): Change "type"
! 	attribute from vecsimple to vecperm.
! 	(altivec_vbpermq2): Likewise.
  
! 2017-01-18  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
  
! 	PR target/79040
! 	* config/rs6000/altivec.h: Fix typo of vec_cntlz to vec_cnttz.
  
! 2017-01-18  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
! 	* config/rs6000/rs6000-protos.h (expand_strn_compare): Add arg.
! 	* config/rs6000/rs6000.c (expand_strn_compare): Add ability to expand
! 	strcmp. Fix bug where comparison didn't stop with zero byte. Fix
! 	case where N arg is SIZE_MAX.
! 	* config/rs6000/rs6000.md (cmpstrnsi): Args to expand_strn_compare.
! 	(cmpstrsi): Add pattern.
  
! 2017-01-18  Michael Meissner  <meissner@linux.vnet.ibm.com>
  
! 	* config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
! 	__builtin_vec_revb builtins.
! 	* config/rs6000/rs6000-builtins.def (P9V_BUILTIN_XXBRQ_V16QI): Add
! 	built-in functions to support generation of the ISA 3.0 XXBR<x>
! 	vector byte reverse instructions.
! 	(P9V_BUILTIN_XXBRQ_V1TI): Likewise.
! 	(P9V_BUILTIN_XXBRD_V2DI): Likewise.
! 	(P9V_BUILTIN_XXBRD_V2DF): Likewise.
! 	(P9V_BUILTIN_XXBGW_V4SI): Likewise.
! 	(P9V_BUILTIN_XXBGW_V4SF): Likewise.
! 	(P9V_BUILTIN_XXBGH_V8HI): Likewise.
! 	(P9V_BUILTIN_VEC_REVB): Likewise.
! 	* config/rs6000/vsx.md (p9_xxbrq_v1ti): New insns/expanders to
! 	generate the ISA 3.0 XXBR<x> vector byte reverse instructions.
! 	(p9_xxbrq_v16qi): Likewise.
! 	(p9_xxbrd_<mode>, VSX_D iterator): Likewise.
! 	(p9_xxbrw_<mode>, VSX_W iterator): Likewise.
! 	(p9_xxbrh_v8hi): Likewise.
! 	* config/rs6000/altivec.h (vec_revb): Define if ISA 3.0.
! 	* doc/extend.texi (RS/6000 Altivec Built-ins): Document the
! 	vec_revb built-in functions.
  
! 2017-01-18  Uros Bizjak  <ubizjak@gmail.com>
  
! 	PR rtl-optimization/78952
! 	* config/i386/i386.md (any_extract): New code iterator.
! 	(*insvqi_2): Use any_extract for source operand.
! 	(*insvqi_3): Use any_shiftrt for source operand.
  
! 2017-01-18  Wilco Dijkstra  <wdijkstr@arm.com>
  
! 	* config/aarch64/aarch64.c (aarch64_sched_adjust_priority)
! 	New function.
! 	(TARGET_SCHED_ADJUST_PRIORITY): Define target hook.
  
! 2017-01-18  Matthias Klose  <doko@ubuntu.com>
  
! 	* doc/install.texi: Allow default for --with-target-bdw-gc-include.
  
! 2016-01-18  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
  
! 	* config/rs6000/altivec.h (vec_bperm): Change #define.
! 	* config/rs6000/altivec.md (UNSPEC_VBPERMD): New enum constant.
! 	(altivec_vbpermq2): New define_insn.
! 	(altivec_vbpermd): Likewise.
! 	* config/rs6000/rs6000-builtin.def (VBPERMQ2): New monomorphic
! 	function interface.
! 	(VBPERMD): Likewise.
! 	(VBPERM): New polymorphic function interface.
! 	* config/rs6000/r6000-c.c (altivec_overloaded_builtins_table):
! 	Add entries for P9V_BUILTIN_VEC_VBPERM.
! 	* doc/extend.texi: Add interfaces for vec_bperm.
  
! 2017-01-18  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
  
! 	* config/s390/s390-c.c (s390_expand_overloaded_builtin): Downcase
! 	first letter of error messages.
! 	(s390_resolve_overloaded_builtin): Likewise.
! 	* config/s390/s390.c (s390_expand_builtin): Likewise.
! 	(s390_invalid_arg_for_unprototyped_fn): Likewise.
! 	(s390_valid_target_attribute_inner_p): Likewise.
! 	* config/s390/s390.md ("tabort"): Likewise.
  
! 2017-01-18  Toma Tabacu  <toma.tabacu@imgtec.com>
  
! 	* config/mips/mips.h (ISA_HAS_DIV3): Remove unused macro.
! 	(ISA_AVOID_DIV_HILO): New macro.
! 	(ISA_HAS_DIV): Use new ISA_AVOID_DIV_HILO macro.
! 	(ISA_HAS_DDIV): Likewise.
  
! 2017-01-18  Markus Trippelsdorf  <markus@trippelsdorf.de>
  
! 	* doc/invoke.texi (fabi-version): Correct number of occurrences.
  
! 2017-01-18  Markus Trippelsdorf  <markus@trippelsdorf.de>
  
! 	* doc/invoke.texi (fabi-version): Spelling fix.
  
! 2017-01-18  Markus Trippelsdorf  <markus@trippelsdorf.de>
  
! 	PR c++/70182
! 	* doc/invoke.texi (fabi-version): Mention mangling fix for
! 	operator names.
  
! 2017-01-18  Markus Trippelsdorf  <markus@trippelsdorf.de>
  
! 	PR c++/77489
! 	* doc/invoke.texi (fabi-version): Document discriminator mangling.
  
! 2017-01-17  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	PR target/78875
! 	* config/rs6000/rs6000-opts.h (stack_protector_guard): New enum.
! 	* config/rs6000/rs6000.c (rs6000_option_override_internal): Handle
! 	the new options.
! 	* config/rs6000/rs6000.md (stack_protect_set): Handle the new more
! 	flexible settings.
! 	(stack_protect_test): Ditto.
! 	* config/rs6000/rs6000.opt (mstack-protector-guard=,
! 	mstack-protector-guard-reg=, mstack-protector-guard-offset=): New
! 	options.
! 	* doc/invoke.texi (Option Summary) [RS/6000 and PowerPC Options]:
! 	Add -mstack-protector-guard=, -mstack-protector-guard-reg=, and
! 	-mstack-protector-guard-offset=.
! 	(RS/6000 and PowerPC Options): Ditto.
  
! 2017-01-17  Uros Bizjak  <ubizjak@gmail.com>
  
! 	* config/i386/i386.h (MASK_CLASS_P): New define.
! 	* config/i386/i386.c (inline_secondary_memory_needed): Ensure that
! 	there are no registers from different register sets also when
! 	mask registers are used.  Update function comment.
! 	* config/i386/i386.md (*movsi_internal): Split (*k/*krm) alternative
! 	to (*k/*r) and (*k/*km) alternatives.
  
! 2017-01-17  Wilco Dijkstra  <wdijkstr@arm.com>
  
! 	* config/aarch64/aarch64.md (eh_return): Remove pattern and splitter.
! 	* config/aarch64/aarch64.h (AARCH64_EH_STACKADJ_REGNUM): Remove.
! 	(EH_RETURN_HANDLER_RTX): New define.
! 	* config/aarch64/aarch64.c (aarch64_frame_pointer_required):
! 	Force frame pointer in EH return functions.
! 	(aarch64_expand_epilogue): Add barrier for eh_return.
! 	(aarch64_final_eh_return_addr): Remove.
! 	(aarch64_eh_return_handler_rtx): New function.
! 	* config/aarch64/aarch64-protos.h (aarch64_final_eh_return_addr):
! 	Remove.
! 	(aarch64_eh_return_handler_rtx): New prototype.
  
! 2017-01-17  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
  
! 	* config/rs6000/altivec.h (vec_rlmi): New #define.
! 	(vec_vrlnm): Likewise.
! 	(vec_rlnm): Likewise.
! 	* config/rs6000/altivec.md (UNSPEC_VRLMI): New UNSPEC enum value.
! 	(UNSPEC_VRLNM): Likewise.
! 	(VIlong): New mode iterator.
! 	(altivec_vrl<VI_char>mi): New define_insn.
! 	(altivec_vrl<VI_char>nm): Likewise.
! 	* config/rs6000/rs6000-builtin.def (VRLWNM): New monomorphic
! 	function entry.
! 	(VRLDNM): Likewise.
! 	(RLNM): New polymorphic function entry.
! 	(VRLWMI): New monomorphic function entry.
! 	(VRLDMI): Likewise.
! 	(RLMI): New polymorphic function entry.
! 	* config/rs6000/r6000-c.c (altivec_overloaded_builtin_table): Add
! 	new entries for P9V_BUILTIN_VEC_RLMI and P9V_BUILTIN_VEC_RLNM.
! 	* doc/extend.texi: Add description of vec_rlmi, vec_rlnm, and
! 	vec_vrlnm.
  
! 2017-01-17  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR debug/78839
! 	* dwarf2out.c (field_byte_offset): Restore the
! 	PCC_BITFIELD_TYPE_MATTERS behavior for INTEGER_CST DECL_FIELD_OFFSET
! 	and DECL_FIELD_BIT_OFFSET.  Use fold_build2 instead of build2 + fold.
! 	(analyze_variants_discr, gen_variant_part): Use fold_build2 instead
! 	of build2 + fold.
  
! 2017-01-17  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR ada/67205
! 	* config/aarch64/aarch64.c (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): Define
  
! 2017-01-17  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR debug/71669
! 	* dwarf2out.c (add_data_member_location_attribute): For constant
! 	offset bitfield emit for -gdwarf-5 DW_AT_data_bit_offset attribute
! 	instead of DW_AT_data_member_location, DW_AT_bit_offset and
! 	DW_AT_byte_size attributes.
  
! 2017-01-17  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* config/rs6000/rs6000.c (rs6000_emit_move): Also use a TOC reference
! 	after forcing to constant memory when the code model is medium.
  
! 2017-01-17  Julia Koval  <julia.koval@intel.com>
  
! 	PR target/76731
! 	* config/i386/avx512fintrin.h
! 	(_mm512_i32gather_ps): Change __addr type to void const*.
! 	(_mm512_mask_i32gather_ps): Ditto.
! 	(_mm512_i32gather_pd): Ditto.
! 	(_mm512_mask_i32gather_pd): Ditto.
! 	(_mm512_i64gather_ps): Ditto.
! 	(_mm512_mask_i64gather_ps): Ditto.
! 	(_mm512_i64gather_pd): Ditto.
! 	(_mm512_mask_i64gather_pd): Ditto.
! 	(_mm512_i32gather_epi32): Ditto.
! 	(_mm512_mask_i32gather_epi32): Ditto.
! 	(_mm512_i32gather_epi64): Ditto.
! 	(_mm512_mask_i32gather_epi64): Ditto.
! 	(_mm512_i64gather_epi32): Ditto.
! 	(_mm512_mask_i64gather_epi32): Ditto.
! 	(_mm512_i64gather_epi64): Ditto.
! 	(_mm512_mask_i64gather_epi64): Ditto.
! 	(_mm512_i32scatter_ps): Change __addr type to void*.
! 	(_mm512_mask_i32scatter_ps): Ditto.
! 	(_mm512_i32scatter_pd): Ditto.
! 	(_mm512_mask_i32scatter_pd): Ditto.
! 	(_mm512_i64scatter_ps): Ditto.
! 	(_mm512_mask_i64scatter_ps): Ditto.
! 	(_mm512_i64scatter_pd): Ditto.
! 	(_mm512_mask_i64scatter_pd): Ditto.
! 	(_mm512_i32scatter_epi32): Ditto.
! 	(_mm512_mask_i32scatter_epi32): Ditto.
! 	(_mm512_i32scatter_epi64): Ditto.
! 	(_mm512_mask_i32scatter_epi64): Ditto.
! 	(_mm512_i64scatter_epi32): Ditto.
! 	(_mm512_mask_i64scatter_epi32): Ditto.
! 	(_mm512_i64scatter_epi64): Ditto.
! 	(_mm512_mask_i64scatter_epi64): Ditto.
! 	* config/i386/avx512pfintrin.h
! 	(_mm512_mask_prefetch_i32gather_pd): Change __addr type to void const*.
! 	(_mm512_mask_prefetch_i32gather_ps): Ditto.
! 	(_mm512_mask_prefetch_i64gather_pd): Ditto.
! 	(_mm512_mask_prefetch_i64gather_ps): Ditto.
! 	(_mm512_prefetch_i32scatter_pd): Change __addr type to void*.
! 	(_mm512_prefetch_i32scatter_ps): Ditto.
! 	(_mm512_mask_prefetch_i32scatter_pd): Ditto.
! 	(_mm512_mask_prefetch_i32scatter_ps): Ditto.
! 	(_mm512_prefetch_i64scatter_pd): Ditto.
! 	(_mm512_prefetch_i64scatter_ps): Ditto.
! 	(_mm512_mask_prefetch_i64scatter_pd): Ditto.
! 	(_mm512_mask_prefetch_i64scatter_ps): Ditto.
! 	* config/i386/avx512vlintrin.h
! 	(_mm256_mmask_i32gather_ps): Change __addr type to void const*.
! 	(_mm_mmask_i32gather_ps): Ditto.
! 	(_mm256_mmask_i32gather_pd): Ditto.
! 	(_mm_mmask_i32gather_pd): Ditto.
! 	(_mm256_mmask_i64gather_ps): Ditto.
! 	(_mm_mmask_i64gather_ps): Ditto.
! 	(_mm256_mmask_i64gather_pd): Ditto.
! 	(_mm_mmask_i64gather_pd): Ditto.
! 	(_mm256_mmask_i32gather_epi32): Ditto.
! 	(_mm_mmask_i32gather_epi32): Ditto.
! 	(_mm256_mmask_i32gather_epi64): Ditto.
! 	(_mm_mmask_i32gather_epi64): Ditto.
! 	(_mm256_mmask_i64gather_epi32): Ditto.
! 	(_mm_mmask_i64gather_epi32): Ditto.
! 	(_mm256_mmask_i64gather_epi64): Ditto.
! 	(_mm_mmask_i64gather_epi64): Ditto.
! 	(_mm256_i32scatter_ps): Change __addr type to void*.
! 	(_mm256_mask_i32scatter_ps): Ditto.
! 	(_mm_i32scatter_ps): Ditto.
! 	(_mm_mask_i32scatter_ps): Ditto.
! 	(_mm256_i32scatter_pd): Ditto.
! 	(_mm256_mask_i32scatter_pd): Ditto.
! 	(_mm_i32scatter_pd): Ditto.
! 	(_mm_mask_i32scatter_pd): Ditto.
! 	(_mm256_i64scatter_ps): Ditto.
! 	(_mm256_mask_i64scatter_ps): Ditto.
! 	(_mm_i64scatter_ps): Ditto.
! 	(_mm_mask_i64scatter_ps): Ditto.
! 	(_mm256_i64scatter_pd): Ditto.
! 	(_mm256_mask_i64scatter_pd): Ditto.
! 	(_mm_i64scatter_pd): Ditto.
! 	(_mm_mask_i64scatter_pd): Ditto.
! 	(_mm256_i32scatter_epi32): Ditto.
! 	(_mm256_mask_i32scatter_epi32): Ditto.
! 	(_mm_i32scatter_epi32): Ditto.
! 	(_mm_mask_i32scatter_epi32): Ditto.
! 	(_mm256_i32scatter_epi64): Ditto.
! 	(_mm256_mask_i32scatter_epi64): Ditto.
! 	(_mm_i32scatter_epi64): Ditto.
! 	(_mm_mask_i32scatter_epi64): Ditto.
! 	(_mm256_i64scatter_epi32): Ditto.
! 	(_mm256_mask_i64scatter_epi32): Ditto.
! 	(_mm_i64scatter_epi32): Ditto.
! 	(_mm_mask_i64scatter_epi32): Ditto.
! 	(_mm256_i64scatter_epi64): Ditto.
! 	(_mm256_mask_i64scatter_epi64): Ditto.
! 	(_mm_i64scatter_epi64): Ditto.
! 	(_mm_mask_i64scatter_epi64): Ditto.
! 	* config/i386/i386-builtin-types.def (V16SF_V16SF_PCFLOAT_V16SI_HI_INT)
! 	(V8DF_V8DF_PCDOUBLE_V8SI_QI_INT, V8SF_V8SF_PCFLOAT_V8DI_QI_INT)
! 	(V8DF_V8DF_PCDOUBLE_V8DI_QI_INT, V16SI_V16SI_PCINT_V16SI_HI_INT)
! 	(V8DI_V8DI_PCINT64_V8SI_QI_INT, V8SI_V8SI_PCINT_V8DI_QI_INT)
! 	(V8DI_V8DI_PCINT64_V8DI_QI_INT, V2DF_V2DF_PCDOUBLE_V4SI_QI_INT)
! 	(V4DF_V4DF_PCDOUBLE_V4SI_QI_INT, V2DF_V2DF_PCDOUBLE_V2DI_QI_INT)
! 	(V4DF_V4DF_PCDOUBLE_V4DI_QI_INT, V4SF_V4SF_PCFLOAT_V4SI_QI_INT)
! 	(V8SF_V8SF_PCFLOAT_V8SI_QI_INT, V4SF_V4SF_PCFLOAT_V2DI_QI_INT)
! 	(V4SF_V4SF_PCFLOAT_V4DI_QI_INT, V2DI_V2DI_PCINT64_V4SI_QI_INT)
! 	(V4DI_V4DI_PCINT64_V4SI_QI_INT, V2DI_V2DI_PCINT64_V2DI_QI_INT)
! 	(V4DI_V4DI_PCINT64_V4DI_QI_INT, V4SI_V4SI_PCINT_V4SI_QI_INT)
! 	(V8SI_V8SI_PCINT_V8SI_QI_INT, V4SI_V4SI_PCINT_V2DI_QI_INT)
! 	(V4SI_V4SI_PCINT_V4DI_QI_INT, VOID_PFLOAT_HI_V16SI_V16SF_INT)
! 	(VOID_PFLOAT_QI_V8SI_V8SF_INT, VOID_PFLOAT_QI_V4SI_V4SF_INT)
! 	(VOID_PDOUBLE_QI_V8SI_V8DF_INT, VOID_PDOUBLE_QI_V4SI_V4DF_INT)
! 	(VOID_PDOUBLE_QI_V4SI_V2DF_INT, VOID_PFLOAT_QI_V8DI_V8SF_INT)
! 	(VOID_PFLOAT_QI_V4DI_V4SF_INT, VOID_PFLOAT_QI_V2DI_V4SF_INT)
! 	(VOID_PDOUBLE_QI_V8DI_V8DF_INT, VOID_PDOUBLE_QI_V4DI_V4DF_INT)
! 	(VOID_PDOUBLE_QI_V2DI_V2DF_INT, VOID_PINT_HI_V16SI_V16SI_INT)
! 	(VOID_PINT_QI_V8SI_V8SI_INT, VOID_PINT_QI_V4SI_V4SI_INT)
! 	(VOID_PLONGLONG_QI_V8SI_V8DI_INT, VOID_PLONGLONG_QI_V4SI_V4DI_INT)
! 	(VOID_PLONGLONG_QI_V4SI_V2DI_INT, VOID_PINT_QI_V8DI_V8SI_INT)
! 	(VOID_PINT_QI_V4DI_V4SI_INT, VOID_PINT_QI_V2DI_V4SI_INT)
! 	(VOID_PLONGLONG_QI_V8DI_V8DI_INT, VOID_QI_V8SI_PCINT64_INT_INT)
! 	(VOID_PLONGLONG_QI_V4DI_V4DI_INT, VOID_PLONGLONG_QI_V2DI_V2DI_INT)
! 	(VOID_HI_V16SI_PCINT_INT_INT, VOID_QI_V8DI_PCINT64_INT_INT)
! 	(VOID_QI_V8DI_PCINT_INT_INT): Remove.
! 	(V16SF_V16SF_PCVOID_V16SI_HI_INT,  V8DF_V8DF_PCVOID_V8SI_QI_INT)
! 	(V8SF_V8SF_PCVOID_V8DI_QI_INT, V8DF_V8DF_PCVOID_V8DI_QI_INT)
! 	(V16SI_V16SI_PCVOID_V16SI_HI_INT, V8DI_V8DI_PCVOID_V8SI_QI_INT)
! 	(V8SI_V8SI_PCVOID_V8DI_QI_INT, V8DI_V8DI_PCVOID_V8DI_QI_INT)
! 	(VOID_PVOID_HI_V16SI_V16SF_INT, VOID_PVOID_QI_V8SI_V8DF_INT)
! 	(VOID_PVOID_QI_V8DI_V8SF_INT, VOID_PVOID_QI_V8DI_V8DF_INT)
! 	(VOID_PVOID_HI_V16SI_V16SI_INT, VOID_PVOID_QI_V8SI_V8DI_INT)
! 	(VOID_PVOID_QI_V8DI_V8SI_INT, VOID_PVOID_QI_V8DI_V8DI_INT)
! 	(V2DF_V2DF_PCVOID_V4SI_QI_INT, V4DF_V4DF_PCVOID_V4SI_QI_INT)
! 	(V2DF_V2DF_PCVOID_V2DI_QI_INT, V4DF_V4DF_PCVOID_V4DI_QI_INT
! 	(V4SF_V4SF_PCVOID_V4SI_QI_INT, V8SF_V8SF_PCVOID_V8SI_QI_INT)
! 	(V4SF_V4SF_PCVOID_V2DI_QI_INT, V4SF_V4SF_PCVOID_V4DI_QI_INT)
! 	(V2DI_V2DI_PCVOID_V4SI_QI_INT, V4DI_V4DI_PCVOID_V4SI_QI_INT)
! 	(V2DI_V2DI_PCVOID_V2DI_QI_INT, V4DI_V4DI_PCVOID_V4DI_QI_INT)
! 	(V4SI_V4SI_PCVOID_V4SI_QI_INT, V8SI_V8SI_PCVOID_V8SI_QI_INT)
! 	(V4SI_V4SI_PCVOID_V2DI_QI_INT, V4SI_V4SI_PCVOID_V4DI_QI_INT)
! 	(VOID_PVOID_QI_V8SI_V8SF_INT, VOID_PVOID_QI_V4SI_V4SF_INT)
! 	(VOID_PVOID_QI_V4SI_V4DF_INT, VOID_PVOID_QI_V4SI_V2DF_INT)
! 	(VOID_PVOID_QI_V4DI_V4SF_INT, VOID_PVOID_QI_V2DI_V4SF_INT)
! 	(VOID_PVOID_QI_V4DI_V4DF_INT, VOID_PVOID_QI_V2DI_V2DF_INT)
! 	(VOID_PVOID_QI_V8SI_V8SI_INT, VOID_PVOID_QI_V4SI_V4SI_INT)
! 	(VOID_PVOID_QI_V4SI_V4DI_INT, VOID_PVOID_QI_V4SI_V2DI_INT)
! 	(VOID_PVOID_QI_V4DI_V4SI_INT, VOID_PVOID_QI_V2DI_V4SI_INT)
! 	(VOID_PVOID_QI_V4DI_V4DI_INT, VOID_PVOID_QI_V2DI_V2DI_INT)
! 	(VOID_QI_V8SI_PCVOID_INT_INT, VOID_HI_V16SI_PCVOID_INT_INT)
! 	(VOID_QI_V8DI_PCVOID_INT_INT): Add.
! 	* config/i386/i386.c (ix86_init_mmx_sse_builtins): Adjust builtin
! 	definitions accordingly.
  
! 2017-01-17  Kito Cheng  <kito.cheng@gmail.com>
! 	    Kuan-Lin Chen  <kuanlinchentw@gmail.com>
  
! 	PR target/79079
! 	* internal-fn.c (expand_mul_overflow): Use convert_modes instead of
! 	gen_lowpart.
  
! 2017-01-17  Vladimir Makarov  <vmakarov@redhat.com>
  
! 	PR target/79058
! 	* ira-conflicts.c (ira_build_conflicts): Update total conflict
! 	hard regs for inner regno.
  
! 2017-01-17  Martin Liska  <mliska@suse.cz>
  
! 	PR ipa/71207
! 	* ipa-polymorphic-call.c (contains_type_p): Fix wrong
! 	assumption and add comment.
  
! 2017-01-17  Nathan Sidwell  <nathan@acm.org>
  
! 	* ipa-visibility.c (localize_node): New function, broken out of ...
! 	(function_and_variable_visibility): ... here. Call it.
  
! 2017-01-17  Jan Hubicka  <hubicka@ucw.cz>
  
! 	PR middle-end/77445
! 	* tree-ssa-threadupdate.c (remove_ctrl_stmt_and_useless_edges):
! 	correctly set frequency of oudgoing edge.
! 	(duplicate_thread_path): Fix profile updating.
  
! 2017-01-17  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR other/79046
! 	* configure.ac: Add GCC_BASE_VER.
! 	* Makefile.in (version): Use @get_gcc_base_ver@ instead of cat to get
! 	version from BASE-VER file.
! 	(CFLAGS-gcc.o): Add -DBASEVER=$(BASEVER_s).
! 	(gcc.o): Depend on $(BASEVER).
! 	* common.opt (dumpfullversion): New option.
! 	* gcc.c (driver_handle_option): Handle OPT_dumpfullversion.
! 	* doc/invoke.texi: Document -dumpfullversion.
! 	* doc/install.texi: Document --with-gcc-major-version-only.
! 	* configure: Regenerated.
  
! 2017-01-17  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/71433
! 	* tree-vrp.c (register_new_assert_for): Merge same asserts
! 	on all incoming edges.
! 	(process_assert_insertions_for): Handle insertions at the
! 	beginning of BBs.
  
! 2017-01-17  Gerald Pfeifer  <gerald@pfeifer.com>
  
! 	* config/i386/cygwin.h (LIBGCJ_SONAME): Remove.
! 	* config/i386/mingw32.h (LIBGCJ_SONAME): Remove.
  
! 2017-01-17  Kaz Kojima  <kkojima@gcc.gnu.org>
  
! 	PR target/78633
! 	* config/sh/sh.md (cmpeqsi_t+1): Call copy_rtx to avoid invalid
! 	RTL sharing.
  
! 2017-01-17  Alan Modra  <amodra@gmail.com>
  
! 	PR target/79066
! 	* config/rs6000/rs6000.md (elf_high, elf_low): Disable when pic.
! 	* config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Don't allow
! 	symbolic stack limit when pic.
  
! 2017-01-16  Martin Sebor  <msebor@redhat.com>
  
! 	PR tree-optimization/78608
! 	* gimple-ssa-sprintf.c (tree_digits): Avoid negating TYPE_MIN.
  
! 2017-01-16  Jeff Law  <law@redhat.com>
  
! 	Revert:
! 	2016-12-02  Tadek Kijkowski  <tkijkowski@gmail.com>
! 	* Makefile.in (PREPROCESSOR_DEFINES): Add a level of indirection
! 	for several include directories that may be relative to sysroot.
! 	* config/i386/x-mingw32 (gplus_includedir): Define.
! 	(gplus_tool_includedir, gplus_backward_include_dir): Likewise.
! 	(native_system_includedir): Likewise.
! 	* config/i386/mingw32.h (STANDARD_STARTFILE_PREFIX_1): Do not
! 	override if TARGET_SYSTEM_ROOT is defined.
! 	(NATIVE_SYSTEM_HEADER_DIR): Likewise.
  
! 	PR tree-optimization/79090
! 	PR tree-optimization/33562
! 	PR tree-optimization/61912
! 	PR tree-optimization/77485
! 	* tree-ssa-dse.c (compute_trims): Accept STMT argument.  Dump STMT
! 	and computed trims into the dump file.
  
! 2017-01-17  Uros Bizjak  <ubizjak@gmail.com>
  
! 	* config/i386/i386.h (LIMIT_RELOAD_CLASS): Remove.
  
! 2017-01-16  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR c/79089
! 	* gimplify.c (gimplify_init_constructor): If want_value and
! 	object == lhs, unshare lhs to avoid invalid tree sharing.  Formatting
! 	fix.
  
! 	PR target/79080
! 	* loop-doloop.c (doloop_modify): Call unshare_all_rtl_in_chain on
! 	sequence.  Formatting fixes.
! 	(doloop_optimize): Formatting fixes.
  
! 	PR driver/49726
! 	* gcc.c (debug_level_greater_than_spec_func): New function.
! 	(static_spec_functions): Add debug-level-gt spec function.
! 	(ASM_DEBUG_SPEC, cpp_options): Use %:debug-level-gt(0) instead of
! 	!g0.
! 	* config/darwin.h (DSYMUTIL_SPEC, ASM_DEBUG_SPEC): Likewise.
! 	* config/darwin9.h (DSYMUTIL_SPEC, ASM_DEBUG_SPEC): Likewise.
! 	* common.opt (g, gcoff, gdwarf, gdwarf-, ggdb, gno-pubnames,
! 	gpubnames, ggnu-pubnames, gno-record-gcc-switches,
! 	grecord-gcc-switches, gno-strict-dwarf, gstrict-dwarf, gstabs,
! 	gstabs+, gtoggle, gvms, gxcoff, gxcoff+): Add Driver flag.
  
! 2017-01-16  Uros Bizjak  <ubizjak@gmail.com>
  
! 	* config/i386/i386.h (HARD_REGNO_CALLER_SAVE_MODE): Apply HImode and
! 	QImode fixups to general and mask registers only.
  
! 2017-01-16  Carl Love  <cel@us.ibm.com>
  
! 	* config/rs6000/rs6000-c (altivec_overloaded_builtins): Add support
! 	for built-in functions
! 	vector signed char vec_nabs (vector signed char)
! 	vector signed short vec_nabs (vector signed short)
! 	vector signed int vec_nabs (vector signed int)
! 	vector signed long long vec_nabs (vector signed long long)
! 	vector float vec_nabs (vector float)
! 	vector double vec_nabs (vector double)
! 	* config/rs6000/rs6000-builtin.def: Add definitions for NABS functions
! 	and NABS overload.
! 	* config/rs6000/altivec.md: New define_expand nabs<mode>2 types
! 	* config/rs6000/altivec.h: New define for vec_nabs built-in function.
! 	* doc/extend.texi: Update the documentation file for the new built-in
! 	functions.
  
! 2017-01-16  Martin Sebor  <msebor@redhat.com>
  
! 	* gimple-ssa-sprintf.c (format_directive): Correct a typo in a warning
! 	message.
  
! 2017-01-16  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
  
! 	* config/rs6000/rs6000.c (rtx_is_swappable_p): Change
! 	UNSPEC_VSX__XXSPLTD to require special splat handling.
  
! 2017-01-16  David Malcolm  <dmalcolm@redhat.com>
  
! 	PR bootstrap/78616
! 	* system.h: Poison strndup.
  
! 2017-01-16  Alan Modra  <amodra@gmail.com>
  
! 	PR target/79098
! 	* config/rs6000/rs6000.c (rs6000_legitimate_combined_insn): Don't
! 	use a switch.
  
! 2017-01-16  Georg-Johann Lay  <avr@gjlay.de>
  
! 	* config/avr/avr.h (BRANCH_COST) [reload_completed]: Increase by 4.
  
! 2017-01-15  Uros Bizjak  <ubizjak@gmail.com>
  
! 	* config/i386/i386.c (ix86_legitimate_combined_insn): Do not
! 	call recog here.  Assert that INSN_CODE (insn) is non-negative.
  
! 2017-01-15  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	PR target/72749
! 	* cfgrtl.c (rtl_split_edge): Also patch jump insns that jump to the
! 	fallthrough.
! 	* haifa-sched.c (dump_insn_stream): Don't crash if there is a label
! 	in the currently scheduled RTL fragment.
  
! 2017-01-15  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	PR rtl-optimization/78751
! 	* ifcvt.c (find_cond_trap): If we generated a non-existing insn,
! 	give up.
  
! 2017-01-14  Jeff Law  <law@redhat.com>
  
! 	PR tree-optimization/79090
! 	* tree-ssa-dse.c (valid_ao_ref_for_dse): Reject zero length and
! 	variable length stores.
! 	(compute_trims): Delete dead assignment to *trim_tail.
! 	(dse_dom_walker::dse_optimize_stmt): Optimize mem* calls with
! 	zero length.
  
! 2017-01-14  Bernd Schmidt  <bschmidt@redhat.com>
  
! 	PR rtl-optimization/78626
! 	PR rtl-optimization/78727
! 	* cprop.c (one_cprop_pass): Collect unconditional traps in the middle
! 	of a block, and split such blocks after everything else is finished.
  
! 2017-01-14  Alan Modra  <amodra@gmail.com>
  
! 	PR target/72749
! 	* combine.c (recog_for_combine_1): Set INSN_CODE before calling
! 	target legitimate_combined_insn.
! 	* config/rs6000/rs6000.c (TARGET_LEGITIMATE_COMBINED_INSN): Define.
! 	(rs6000_legitimate_combined_insn): New function.
! 	* config/rs6000/rs6000.md (UNSPEC_DOLOOP): Delete, and remove
! 	all uses.
! 	(ctr<mode>_internal3): Rename from *ctr<mode>_internal5.
! 	(ctr<mode>_internal4): Rename from *ctr<mode>_internal6.
! 	(ctr<mode>_internal1, ctr<mode>_internal2): Remove '*' from name.
  
! 2017-01-14  Gerald Pfeifer  <gerald@pfeifer.com>
  
! 	* doc/frontends.texi (G++ and GCC): Remove references to Java.
  
! 2017-01-13  Jeff Law  <law@redhat.com>
  
! 	PR tree-optimization/33562
! 	PR tree-optimization/61912
! 	PR tree-optimization/77485
! 	* tree-ssa-dse.c (delete_dead_call): Accept gsi rather than
! 	a statement.
! 	(delete_dead_assignment): Likewise.
! 	(dse_dom_walker::dse_optimize_stmt): Pass in the gsi rather than
! 	statement to delete_dead_call and delete_dead_assignment.
  
! 2017-01-13  David Malcolm  <dmalcolm@redhat.com>
  
! 	PR c/78304
! 	* substring-locations.c (format_warning_va): Strengthen case 1 so
! 	that both endpoints of the substring must be within the format
! 	range for just the substring to be printed.
  
! 2017-01-13  Uros Bizjak  <ubizjak@gmail.com>
  
! 	* config/i386/i386.opt (msgx): Use ix86_isa_flags2 variable.
! 	* config/i386/i386.c (ix86_target_string): Add missing options
! 	to isa_opts and reorder options by implied ISAs.  Rename isa_opts2 to
! 	isa2_opts, ix86_flag_opts to flag2_opts, ix86_target_other to
! 	flags_other and ix86_target_other to flags2_other.  Display unknown
! 	isa2 options.
! 	(ix86_valid_target_attribute_inner_p): Add missing options and
! 	reorder options by implied ISAs, as in ix86_target_string.
  
! 2017-01-13  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* hash-table.h (hash_table::too_empty_p): New function.
! 	(hash_table::expand): Use it.
! 	(hash_table::traverse): Likewise.
! 	(hash_table::empty_slot): Use sizeof (value_type) instead of
! 	sizeof (PTR) to convert bytes to elements.  Shrink the table
! 	if the current size is excessive for the current number of
! 	elements.
  
! 2017-01-13  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* ira-costs.c (record_reg_classes): Break from the inner loop
! 	early once alt_fail is known to be true.  Update outer loop
! 	handling accordingly.
  
! 2017-01-13  Jeff Law  <law@redhat.com>
  
! 	* tree-ssa-dse.c (decrement_count): New function.
! 	(increment_start_addr, maybe_trim_memstar_call): Likewise.
! 	(dse_dom_walker::optimize_stmt): Call maybe_trim_memstar_call directly
! 	when we know the partially dead statement is a mem* function.
  
! 	PR tree-optimization/61912
! 	PR tree-optimization/77485
! 	* tree-ssa-dse.c: Include expr.h.
! 	(maybe_trim_constructor_store): New function.
! 	(maybe_trim_partially_dead_store): Call maybe_trim_constructor_store.
  
! 	PR tree-optimization/33562
! 	PR tree-optimization/61912
! 	PR tree-optimization/77485
! 	* doc/invoke.texi: Document new dse-max-object-size param.
! 	* params.def (PARM_DSE_MAX_OBJECT_SIZE): New PARAM.
! 	* tree-ssa-dse.c: Include params.h.
! 	(dse_store_status): New enum.
! 	(initialize_ao_ref_for_dse): New, partially extracted from
! 	dse_optimize_stmt.
! 	(valid_ao_ref_for_dse, normalize_ref): New.
! 	(setup_live_bytes_from_ref, compute_trims): Likewise.
! 	(clear_bytes_written_by, maybe_trim_complex_store): Likewise.
! 	(maybe_trim_partially_dead_store): Likewise.
! 	(maybe_trim_complex_store): Likewise.
! 	(dse_classify_store): Renamed from dse_possibly_dead_store_p.
! 	Track what bytes live from the original store.  Return tri-state
! 	for dead, partially dead or live.
! 	(dse_dom_walker): Add constructor, destructor and new private members.
! 	(delete_dead_call, delete_dead_assignment): New extracted from
! 	dse_optimize_stmt.
! 	(dse_optimize_stmt): Make a member of dse_dom_walker.
! 	Use initialize_ao_ref_for_dse.
  
! 	PR tree-optimization/33562
! 	PR tree-optimization/61912
! 	PR tree-optimization/77485
! 	* sbitmap.h (bitmap_count_bits): Prototype.
! 	(bitmap_clear_range, bitmap_set_range): Likewise.
! 	* sbitmap.c (bitmap_clear_range): New function.
! 	(bitmap_set_range, sbitmap_popcount, bitmap_count_bits): Likewise.
  
! 2017-01-13  Martin Liska  <mliska@suse.cz>
  
! 	PR ipa/79043
! 	* function.c (set_cfun): Add new argument force.
! 	* function.h (set_cfun): Likewise.
! 	* ipa-inline-transform.c (inline_call): Use the function when
! 	strict alising from is dropped for function we inline to.
  
! 2017-01-13  Richard Biener  <rguenther@suse.de>
  
! 	* tree-pretty-print.c (dump_generic_node): Fix inverted condition
! 	for dumping GIMPLE INTEGER_CSTs.
  
! 2017-01-13  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
  
! 	* config/sol2.h (TARGET_OS_CPP_BUILTINS): Define __STDC_VERSION__
! 	to 201112L since C++17.
  
! 2017-01-13  Maxim Ostapenko  <m.ostapenko@samsung.com>
  
! 	PR sanitizer/78887
! 	* asan.c (asan_needs_odr_indicator_p): Don't emit ODR indicators
! 	if -fsanitize=kernel-address is present.
  
! 2017-01-13  Richard Biener  <rguenther@suse.de>
  
! 	* tree-pretty-print.c (dump_generic_node): Dump INTEGER_CSTs
! 	as _Literal ( type ) number in case usual suffixes do not
! 	preserve all information.
  
! 2017-01-13  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/77283
! 	* gimple-ssa-split-paths.c: Include gimple-ssa.h, tree-phinodes.h
! 	and ssa-iterators.h.
! 	(is_feasible_trace): Implement a cost model based on joiner
! 	PHI node uses.
  
! 2017-01-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
  
! 	PR target/79004
! 	* config/rs6000/rs6000.md (FP_ISA3): Do not optimize converting
! 	char or short to __float128/_Float128 directly.
  
! 2017-01-12  Martin Sebor  <msebor@redhat.com>
  
! 	to -Wformat-overflow.
! 	* gimple-ssa-sprintf.c (pass_sprintf_length::gate): Adjust.
! 	(min_bytes_remaining): Same.
! 	(get_string_length): Same.
! 	(format_string): Same.
! 	(format_directive): Same.
! 	(add_bytes): Same.
! 	(pass_sprintf_length::handle_gimple_call): Same.
  
! 2017-01-12  Jakub Jelinek  <jakub@redhat.com>
  
! 	* gimple-ssa-sprintf.c (try_substitute_return_value): Remove
! 	info.nowrite calls with no lhs that can't throw.  Return bool
! 	whether gsi_remove has been called or not.
! 	(pass_sprintf_length::handle_gimple_call): Return bool whether
! 	try_substitute_return_value called gsi_remove.  Formatting fix.
! 	(pass_sprintf_length::execute): Don't use gsi_remove if
! 	handle_gimple_call returned true.
  
! 	PR bootstrap/79069
! 	* cfgrtl.c (rtl_tidy_fallthru_edge): For any_uncondjump_p that can't
! 	be removed due to side-effects, don't remove following barrier nor
! 	turn the successor edge into fallthru edge.
  
! 2017-01-12  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
  
! 	PR target/79044
! 	* config/rs6000/rs6000.c (insn_is_swappable_p): Mark
! 	element-reversing loads and stores as not swappable.
  
! 2017-01-12  Nathan Sidwell  <nathan@acm.org>
! 	    Nicolai Stange  <nicstange@gmail.com>
  
! 	* combine.c (try_combine): Don't ignore result of overlap checking
! 	loop.  Combine overlap & asm check into single loop.
  
! 2017-01-12  Richard Biener  <rguenther@suse.de>
  
! 	* tree-pretty-print.c (dump_generic_node): Provide -gimple
! 	variant for MEM_REF.  Sanitize INTEGER_CST for -gimple.
  
! 2017-01-12  Richard Biener  <rguenther@suse.de>
  
! 	* tree.c (initialize_tree_contains_struct): Make TS_OPTIMIZATION
! 	and TS_TARGET_OPTION directly derive from TS_BASE.
! 	* tree-core.h (tree_optimization_option): Derive from tree_base.
! 	(tree_target_option): Likewise.
  
! 2017-01-11  Uros Bizjak  <ubizjak@gmail.com>
  
! 	* config/i386/i386.c (memory_address_length): Increase len
! 	only when rip_relative_addr_p returns false.
  
! 2017-01-11  Julia Koval  <julia.koval@intel.com>
  
! 	* common/config/i386/i386-common.c (OPTION_MASK_ISA_SGX_UNSET): New.
! 	(OPTION_MASK_ISA_SGX_SET): New.
! 	(ix86_handle_option): Handle OPT_msgx.
! 	* config.gcc: Added sgxintrin.h.
! 	* config/i386/driver-i386.c (host_detect_local_cpu): Detect sgx.
! 	* config/i386/i386-c.c (ix86_target_macros_internal): Define __SGX__.
! 	* config/i386/i386.c (ix86_target_string): Add -msgx.
! 	(PTA_SGX): New.
! 	(ix86_option_override_internal): Handle new options.
! 	(ix86_valid_target_attribute_inner_p): Add sgx.
! 	* config/i386/i386.h (TARGET_SGX, TARGET_SGX_P): New.
! 	* config/i386/i386.opt: Add msgx.
! 	* config/i386/sgxintrin.h: New file.
! 	* config/i386/x86intrin.h: Add sgxintrin.h.
  
! 2017-01-11  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR c++/71537
! 	* fold-const.c (maybe_nonzero_address): Return 1 for function
! 	local objects.
! 	(tree_single_nonzero_warnv_p): Don't handle function local objects
! 	here.
  
! 	PR c++/72813
! 	* gcc.c (default_compilers): Don't add -o %g.s for -S -save-temps
! 	of c-header.
  
! 2017-01-11  David Malcolm  <dmalcolm@redhat.com>
  
! 	PR driver/78877
! 	* opts.c: Include "spellcheck.h"
! 	(struct string_fragment): New struct.
! 	(struct edit_distance_traits<const string_fragment &>): New
! 	struct.
! 	(get_closest_sanitizer_option): New function.
! 	(parse_sanitizer_options): Offer suggestions for unrecognized arguments.
  
! 2017-01-11  Jakub Jelinek  <jakub@redhat.com>
  
! 	* dwarf2out.c (DWARF_COMPILE_UNIT_HEADER_SIZE): For DWARF5 decrease
! 	by 12.
! 	(DWARF_COMDAT_TYPE_UNIT_HEADER_SIZE): Always
! 	DWARF_COMPILE_UNIT_HEADER_SIZE plus 12.
! 	(DWARF_COMPILE_UNIT_SKELETON_HEADER_SIZE): Define.
! 	(calc_base_type_die_sizes): Use DWARF_COMPILE_UNIT_SKELETON_HEADER_SIZE
! 	for initial die_offset if dwarf_split_debug_info.
! 	(output_comp_unit): Use DWARF_COMPILE_UNIT_SKELETON_HEADER_SIZE for
! 	initial next_die_offset if dwo_id is non-NULL.  Don't emit padding
! 	fields.
! 	(output_skeleton_debug_sections): Formatting fix.  Use
! 	DWARF_COMPILE_UNIT_SKELETON_HEADER_SIZE instead of
! 	DWARF_COMPILE_UNIT_HEADER_SIZE.  Don't emit padding.
  
! 2017-01-11  Wilco Dijkstra  <wdijkstr@arm.com>
  
! 	* config/arm/cortex-a53.md: Add bypasses for
! 	cortex_a53_r2f_cvt.
! 	(cortex_a53_r2f): Only use for transfers.
! 	(cortex_a53_f2r): Likewise.
! 	(cortex_a53_r2f_cvt): Add reservation for conversions.
! 	(cortex_a53_f2r_cvt): Likewise.
  
! 2017-01-11  Tamar Christina  <tamar.christina@arm.com>
  
! 	* config/arm/arm_neon.h: Add __artificial__ and gnu_inline
! 	to all inlined functions, change static to extern.
  
! 2017-01-11  Christophe Lyon  <christophe.lyon@linaro.org>
  
! 	PR target/78253
! 	* config/arm/arm.c (legitimize_pic_address): Handle reference to
! 	weak symbol.
! 	(arm_assemble_integer): Likewise.
  
! 2017-01-11  Richard Earnshaw  <rearnsha@arm.com>
  
! 	* config.gcc: Use new awk script to check CPU, FPU and architecture
! 	parameters for --with-... options.
! 	* config/arm/parsecpu.awk: New file
! 	* config/arm/arm-cpus.in: New file.
! 	* config/arm/arm-opts.h: Include arm-cpu.h instead of processing .def
! 	files.
! 	* config/arm/arm.c: Include arm-cpu-data.h instead of processing .def
! 	files.
! 	* config/arm/t-arm: Update dependency rules.
! 	* common/config/arm/arm-common.c: Include arm-cpu-cdata.h instead
! 	of processing .def files.
! 	* config/arm/genopt.sh: Deleted.
! 	* config/arm/gentune.sh: Deleted.
! 	* config/arm/arm-cores.def: Deleted.
! 	* config/arm/arm-arches.def: Deleted.
! 	* config/arm/arm-fpus.def: Deleted.
! 	* config/arm/arm-tune.md: Regenerated.
! 	* config/arm/arm-tables.opt: Regenerated.
! 	* config/arm/arm-cpu.h: New generated file.
! 	* config/arm/arm-cpu-data.h: New generated file.
! 	* config/arm/arm-cpu-cdata.h: New generated file.
  
! 2017-01-11  Maxim Ostapenko  <m.ostapenko@samsung.com>
  
! 	PR lto/79042
! 	* lto-cgraph.c (lto_output_varpool_node): Pack dynamically_initialized
! 	bit.
! 	(input_varpool_node): Unpack dynamically_initialized bit.
  
! 2017-01-11  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR rtl-optimization/79032
! 	* lra-constraints.c (simplify_operand_subreg): In the MEM case, test
! 	the alignment of the adjusted memory reference against that of MODE,
! 	instead of the alignment of the original memory reference.
  
! 2017-01-11  Martin Jambor  <mjambor@suse.cz>
  
! 	* hsa.c (hsa_callable_function_p): Revert addition of DECL_ARTIFICIAL
! 	test.
! 	* ipa-hsa.c (process_hsa_functions): Only duplicate non-artificial
! 	decorated functions.
  
! 2017-01-11  Richard Biener  <rguenther@suse.de>
  
! 	* tree-vrp.c (evrp_dom_walker::before_dom_children): Also
! 	set range/nonnull info for PHI results.  Do not set it on
! 	stmts marked for removal.
  
! 2017-01-10  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* expr.c (store_field): In the bitfield case, fetch the return value
! 	from the registers before applying a single big-endian adjustment.
! 	Always do a final load for a BLKmode value not larger than a word.
  
! 2017-01-10  David Malcolm  <dmalcolm@redhat.com>
  
! 	PR c++/77949
! 	* input.c (selftest::test_accessing_ordinary_linemaps): Verify
! 	that we correctly handle column numbers greater than
! 	LINE_MAP_MAX_COLUMN_NUMBER.
  
! 2017-01-10  Martin Sebor  <msebor@redhat.com>
  
! 	PR middle-end/78245
! 	* gimple-ssa-sprintf.c (get_destination_size): Call
! 	{init,fini}object_sizes.
! 	* tree-object-size.c (addr_object_size): Adjust.
! 	(pass_through_call): Adjust.
! 	(pass_object_sizes::execute): Adjust.
! 	* tree-object-size.h (fini_object_sizes): Declare.
  
! 2017-01-10  Martin Sebor  <msebor@redhat.com>
  
! 	PR tree-optimization/78775
! 	* builtins.c (get_size_range): Move...
! 	* calls.c: ...to here.
! 	(alloc_max_size): Accept zero argument.
! 	(operand_signed_p): Remove.
! 	(maybe_warn_alloc_args_overflow): Call get_size_range.
! 	* calls.h (get_size_range): Declare.
  
! 2017-01-10  Joe Seymour  <joe.s@somniumtech.com>
  
! 	* config/msp430/driver-msp430.c (msp430_mcu_data): Sync with data
! 	from TI's devices.csv file as of September 2016.
! 	* config/msp430/msp430.c (msp430_mcu_data): Likewise.
  
! 2017-01-10  Sandra Loosemore  <sandra@codesourcery.com>
  
! 	* doc/extend.texi: Tweak formatting to fix overfull hbox warnings.
! 	* doc/invoke.texi: Likewise.
! 	* doc/md.texi: Likewise.
! 	* doc/objc.texi: Likewise.
  
! 2017-01-10  Joshua Conner  <joshconner@google.com>
  
! 	* config/arm/fuchsia-elf.h: New file.
! 	* config/fuchsia.h: New file.
! 	* config.gcc (*-*-fuchsia*): Set native_system_header_dir.
! 	(aarch64*-*-fuchsia*, arm*-*-fuchsia*, x86_64-*-fuchsia*): Add to
! 	targets.
! 	* config.host: (aarch64*-*-fuchsia*, arm*-*-fuchsia*): Add to hosts.
  
! 2016-01-10  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/79034
! 	* tree-call-cdce.c (shrink_wrap_one_built_in_call_with_conds):
! 	Propagate out degenerate PHIs in the joiner.
  
! 2017-01-10  Martin Liska  <mliska@suse.cz>
  
! 	* ipa-icf.c (sort_sem_items_by_decl_uid): New function.
! 	(sort_congruence_classes_by_decl_uid): Likewise.
! 	(sort_congruence_class_groups_by_decl_uid): Likewise.
! 	(sem_item_optimizer::merge_classes): Sort class, groups in these
! 	classes and members in the groups by DECL_UID of declarations.
! 	This would make merge operations stable.
  
! 2017-01-10  Martin Liska  <mliska@suse.cz>
  
! 	* ipa-icf.c (sem_item_optimizer::sem_item_optimizer): Remove
! 	usage of m_classes_vec.
! 	(sem_item_optimizer::~sem_item_optimizer):  Likewise.
! 	(sem_item_optimizer::get_group_by_hash): Likewise.
! 	(sem_item_optimizer::subdivide_classes_by_equality): Likewise.
! 	(sem_item_optimizer::subdivide_classes_by_sensitive_refs): Likewise.
! 	(sem_item_optimizer::verify_classes): Likewise.
! 	(sem_item_optimizer::process_cong_reduction): Likewise.
! 	(sem_item_optimizer::dump_cong_classes): Likewise.
! 	(sem_item_optimizer::merge_classes): Likewise.
! 	* ipa-icf.h (congruence_class_hash): Rename from
! 	congruence_class_group_hash.  Remove declaration of m_classes_vec.
  
! 2017-01-10  Andrew Senkevich  <andrew.senkevich@intel.com>
  
! 	* common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512VPOPCNTDQ_SET,
! 	OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET): New.
! 	* config.gcc: Add avx512vpopcntdqintrin.h.
! 	* config/i386/avx512vpopcntdqintrin.h: New.
! 	* config/i386/cpuid.h (bit_AVX512VPOPCNTDQ): New.
! 	* config/i386/i386-builtin-types.def: Add new types.
! 	* config/i386/i386-builtin.def (__builtin_ia32_vpopcountd_v16si,
! 	__builtin_ia32_vpopcountd_v16si_mask, __builtin_ia32_vpopcountq_v8di,
! 	__builtin_ia32_vpopcountq_v8di_mask): New.
! 	* config/i386/i386-c.c (ix86_target_macros_internal): Define
! 	__AVX512VPOPCNTDQ__.
! 	* config/i386/i386.c (ix86_target_string): Add -mavx512vpopcntdq.
! 	(PTA_AVX512VPOPCNTDQ): Define.
! 	* config/i386/i386.h (TARGET_AVX512VPOPCNTDQ,
! 	TARGET_AVX512VPOPCNTDQ_P): Define.
! 	* config/i386/i386.opt: Add mavx512vpopcntdq.
! 	* config/i386/immintrin.h: Include avx512vpopcntdqintrin.h.
! 	* config/i386/sse.md (define_insn "vpopcount<mode><mask_name>"): New.
  
! 2017-01-01  Jan Hubicka  <hubicka@ucw.cz>
  
! 	PR middle-end/77484
! 	* predict.def (PRED_CALL): Set to 67.
  
! 2017-01-09  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* expr.c (store_field): In the bitfield case, if the value comes from
! 	a function call and is of an aggregate type returned in registers, do
! 	not modify the field mode; extract the value in all cases if the mode
! 	is BLKmode and the size is not larger than a word.
  
! 2017-01-09  Dominique d'Humieres  <dominiq@lps.ens.fr>
  
! 	PR target/71017
! 	* config/i386/cpuid.h: Fix undefined behavior.
  
! 2017-01-04  Jeff Law  <law@redhat.com>
  
! 	PR tree-optimization/79007
! 	PR tree-optimization/67955
! 	* tree-ssa-alias.c (same_addr_size_stores_p): Only need to be
! 	conservative for pt.null when flag_non_call_exceptions is on.
  
! 2017-01-09  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR translation/79019
! 	PR translation/79020
! 	* params.def (PARAM_INLINE_MIN_SPEEDUP,
! 	PARAM_IPA_CP_SINGLE_CALL_PENALTY,
! 	PARAM_USE_AFTER_SCOPE_DIRECT_EMISSION_THRESHOLD): Fix typos
! 	in descriptions.
! 	* config/avr/avr.opt (maccumulate-args): Likewise.
! 	* config/msp430/msp430.opt (mwarn-mcu): Likewise.
! 	* common.opt (freport-bug): Likewise.
! 	* cif-code.def (CIF_FINAL_ERROR): Likewise.
! 	* doc/invoke.texi (ipa-cp-single-call-penalty): Likewise.
! 	* config/s390/s390.c (s390_invalid_binary_op): Fix spelling in
! 	translatable string.
! 	* config/i386/i386.c (function_value_32): Likewise.
! 	* config/nios2/nios2.c (nios2_valid_target_attribute_rec): Likewise.
! 	* config/msp430/msp430.c (msp430_option_override, msp430_attr):
! 	Likewise.
! 	* config/msp430/driver-msp430.c (msp430_select_hwmult_lib): Likewise.
! 	* common/config/msp430/msp430-common.c (msp430_handle_option):
! 	Likewise.
! 	* symtab.c (symtab_node::verify_base): Likewise.
! 	* opts.c (set_debug_level): Likewise.
! 	* tree.c (verify_type_variant): Likewise.  Fix typo in comment.
! 	* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Add
! 	missing whitespace to translatable strings.
! 	* config/avr/avr.md (bswapsi2): Fix typo in comment.
! 	* config/sh/superh.h: Likewise.
! 	* config/i386/xopintrin.h: Likewise.
! 	* config/i386/znver1.md: Likewise.
! 	* config/rs6000/rs6000.c (struct rs6000_opt_mask): Likewise.
! 	* ipa-inline-analysis.c (compute_inline_parameters): Likewise.
! 	* double-int.h (struct double_int): Likewise.
! 	* double-int.c (div_and_round_double): Likewise.
! 	* wide-int.cc: Likewise.
! 	* tree-ssa.c (non_rewritable_mem_ref_base): Likewise.
! 	* tree-ssa-sccvn.c (vn_reference_lookup_3): Likewise.
! 	* cfgcleanup.c (crossjumps_occured): Renamed to ...
! 	(crossjumps_occurred): ... this.
! 	(try_crossjump_bb, try_head_merge_bb, try_optimize_cfg, cleanup_cfg):
! 	Adjust all uses.
  
! 	PR tree-optimization/78899
! 	* tree-if-conv.c (version_loop_for_if_conversion): Instead of
! 	returning bool return struct loop *, NULL for failure and the new
! 	loop on success.
! 	(versionable_outer_loop_p): Don't version outer loop if it has
! 	dont_vectorized bit set.
! 	(tree_if_conversion): When versioning outer loop, ensure
! 	tree_if_conversion is performed also on the inner loop of the
! 	non-vectorizable outer loop copy.
! 	* tree-vectorizer.c (set_uid_loop_bbs): Formatting fix.  Fold
! 	LOOP_VECTORIZED in inner loop of the scalar outer loop and
! 	prevent vectorization of it.
! 	(vectorize_loops): For outer + inner LOOP_VECTORIZED, ensure
! 	the outer loop vectorization of the non-scalar version is attempted
! 	before vectorization of the inner loop in scalar version.  If
! 	outer LOOP_VECTORIZED guarded loop is not vectorized, prevent
! 	vectorization of its inner loop.
! 	* tree-vect-loop-manip.c (rename_variables_in_bb): If outer_loop
! 	has 2 inner loops, rename also on edges from bb whose single pred
! 	is outer_loop->header.  Fix typo in function comment.
  
! 2017-01-09  Martin Sebor  <msebor@redhat.com>
  
! 	PR bootstrap/79033
! 	* asan.c (asan_emit_stack_protection): Increase local buffer size
! 	to avoid snprintf truncation warning.
  
! 2017-01-09  Andrew Pinski  <apinski@cavium.com>
  
! 	* config/aarch64/aarch64-cores.def: Add thunderx2t99.  Change vulcan
! 	to reference thunderx2t99 for the tuning structure
! 	* config/aarch64/aarch64-cost-tables.h (vulcan_extra_costs):
! 	Rename to ...
! 	(thunderx2t99_extra_costs): This.
! 	* config/aarch64/aarch64-tune.md: Regenerate.
! 	* config/aarch64/aarch64.c (vulcan_addrcost_table): Rename to ...
! 	(vulcan_addrcost_table): This.
! 	(vulcan_regmove_cost): Rename to ...
! 	(thunderx2t99_regmove_cost): This.
! 	(vulcan_vector_cost): Rename to ...
! 	(thunderx2t99_vector_cost): this.
! 	(vulcan_branch_cost): Rename to ...
! 	(thunderx2t99_branch_cost): This.
! 	(vulcan_tunings): Rename to ...
! 	(thunderx2t99_tunings): This and s/vulcan/thunderx2t99 .
! 	* doc/invoke.texi (AARCH64/mtune): Add thunderx2t99.
  
! 2017-01-09  Martin Jambor  <mjambor@suse.cz>
  
! 	PR ipa/78365
! 	PR ipa/78599
! 	* ipa-prop.h (ipa_jump_func): Swap positions of vr_known and m_vr.
! 	* ipa-cp.c (ipa_vr_operation_and_type_effects): New function.
! 	(propagate_vr_accross_jump_function): Use the above function for all
! 	value range computations for pass-through jump functions and type
! 	converasion from explicit value range values.
! 	(ipcp_propagate_stage): Do not attempt to deduce types of formal
! 	parameters from TYPE_ARG_TYPES.
! 	* ipa-prop.c (ipa_write_jump_function): Remove trailing whitespace.
! 	(ipa_write_node_info): Stream type of the actual argument.
! 	(ipa_read_node_info): Likewise. Also remove trailing whitespace.
  
! 2017-01-09  Martin Liska  <mliska@suse.cz>
  
! 	PR pch/78970
! 	* gcc.c (driver_handle_option): Handle OPT_E and set have_E.
! 	(lookup_compiler): Do not show error message with have_E.
  
! 2017-01-09  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/78938
! 	* tree-vect-stmts.c (vectorizable_condition): For non-masked COND_EXPR
! 	where comp_vectype is VECTOR_BOOLEAN_TYPE_P, use
! 	BIT_{NOT,XOR,AND,IOR}_EXPR on the comparison operands instead of
! 	{EQ,NE,GE,GT,LE,LT}_EXPR directly inside of VEC_COND_EXPR.  Formatting
! 	fixes.
  
! 2017-01-09  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* tree-ssa-address.c (gen_addr_rtx): Don't handle index if it
! 	is const0_rtx.
  
! 2017-01-09  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/78997
! 	* tree-vect-slp.c (vect_mask_constant_operand_p): Handle SSA
! 	name condition properly.
  
! 2017-01-09  Richard Biener  <rguenther@suse.de>
  
! 	PR debug/79000
! 	* dwarf2out.c (is_cxx): New overload with context.
! 	(is_naming_typedef_decl): Use it.
  
! 2017-01-08  Sandra Loosemore  <sandra@codesourcery.com>
  
! 	* invoke.texi (Option Summary): Correct spacing in option lists
! 	and add line breaks to fix over-long lines.
  
! 2017-01-08  Sandra Loosemore  <sandra@codesourcery.com>
  
! 	PR middle-end/17660
  
! 	* extend.texi (Common Variable Attributes): Add xref to GCC
! 	Internals manual to explain mode attribute keywords.
  
! 2017-01-08  Sandra Loosemore  <sandra@codesourcery.com>
  
! 	PR other/16519
! 	* doc/invoke.texi (Option Summary): Move -pthread to Linker Options
! 	and Preprocessor Options.
! 	(Options for Linking): Document -pthread here....
! 	(RS/6000 and PowerPC Options): ...not here.
! 	(Solaris 2 Options): ...or here.
! 	* doc/cppopts.texi: Document -pthread.
  
! 2017-01-08  Martin Sebor  <msebor@redhat.com>
  
! 	PR middle-end/77708
! 	* doc/invoke.texi (Warning Options): Document -Wformat-truncation.
! 	* gimple-ssa-sprintf.c (call_info::reval_used, call_info::warnopt):
! 	New member functions.
! 	(format_directive): Used them.
! 	(add_bytes): Same.
! 	(pass_sprintf_length::handle_gimple_call): Same.
! 	* graphite-sese-to-poly.c (tree_int_to_gmp): Increase buffer size
! 	to avoid truncation for any argument.
! 	(extract_affine_mul): Same.
! 	* tree.c (get_file_function_name): Same.
  
! 2017-01-01  Jan Hubicka  <hubicka@ucw.cz>
  
! 	PR middle-end/77484
! 	* predict.def (PRED_INDIR_CALL): Set to 86.
  
! 2017-01-07  Sandra Loosemore  <sandra@codesourcery.com>
  
! 	PR preprocessor/54124
! 	* doc/cppopts.texi: Reformat -d subtable to list the full name
! 	of the options.  Add cross-reference to the docs for the general
! 	compiler -d options.
! 	* doc/invoke.texi (Developer Options): Add cross-reference to the
! 	preprocessor-specific -d option documentation.
  
! 2017-01-07  Sandra Loosemore  <sandra@codesourcery.com>
  
! 	PR preprocessor/13498
! 	* doc/cpp.texi (Search Path): Rewrite to remove obsolete and
! 	redudant material, and reflect new command-line options.
! 	(System Headers): Likewise.
  
! 2017-01-07  Sandra Loosemore  <sandra@codesourcery.com>
  
! 	* doc/cppdiropts.texi: Merge documentation of -I, -iquote,
! 	-isystem, and -idirafter.  Copy-edit.
! 	* doc/cppopts.texi: Copy-edit.  Remove contradiction about
! 	default for -ftrack-macro-expansion.  Delete obsolete and
! 	badly-formatted implementation details about -fdebug-cpp output.
! 	* doc/cppwarnopts.texi: Copy-edit.
  
! 2017-01-07  David Malcolm  <dmalcolm@redhat.com>
  
! 	PR c++/72803
! 	* input.c (selftest::test_accessing_ordinary_linemaps): Verify
! 	that the transition from a max line width >= 1<<10 to narrower
! 	lines works correctly.
  
! 2017-01-07  Alexandre Oliva <aoliva@redhat.com>
  
! 	* doc/options.texi (PerFunction): New.
! 	* opt-functions.awk (switch_flags): Map both Optimization and
! 	PerFunction to CL_OPTIMIZATION.
! 	* opth-gen.awk: Test for PerFunction flag along with
! 	Optimization.
! 	* optc-save-gen.awk: Likewise.  Introduce var_opt_hash and set
! 	it only when the latter is present.  Skip those that don't in
! 	the hash function generator.
! 	* common.opt (fvar-tracking): Mark as PerFunction instead of
! 	Optimization.
! 	(fvar-tracking-assignments): Likewise.
! 	(fvar-tracking-assignments-toggle): Likewise.
! 	(fvar-tracking-uninit): Likewise.
  
! 2017-01-07  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR translation/79018
! 	* params.def (PARAM_MAX_STORES_TO_MERGE): Add missing space between
! 	the and store.
  
! 2017-01-06  Mikael Pettersson  <mikpelinux@gmail.com>
  
! 	PR target/57583
! 	* config/m68k/m68k.opt (LONG_JUMP_TABLE_OFFSETS): New option.
! 	* config/m68k/linux.h (ASM_RETURN_CASE_JUMP): Handle
! 	TARGET_LONG_JUMP_TABLE_OFFSETS.
! 	* config/m68k/m68kelf.h (ASM_RETURN_CASE_JUMP): Likewise.
! 	* config/m68k/netbsd-elf.h (ASM_RETURN_CASE_JUMP): Likewise.
! 	* config/m68k/m68k.h (CASE_VECTOR_MODE): Likewise.
! 	(ASM_OUTPUT_ADDR_DIFF_ELF): Likewise.
! 	* config/m68k/m68k.md (tablejump expander): Likewise.
! 	(*tablejump_pcrel_hi): Renamed from unnamed insn, reject
! 	TARGET_LONG_JUMP_TABLE_OFFSETS.
! 	(*tablejump_pcrel_si): New insn, handle TARGET_LONG_JUMP_TABLE_OFFSETS.
! 	* doc/invoke.texi (M68K options): Add -mlong-jump-table-offsets.
  
! 2017-01-06  Edgar E. Iglesias <edgar.iglesias@xilinx.com>
! 	    David Holsgrove <david.holsgrove@xilinx.com>
  
! 	* common/config/microblaze/microblaze-common.c
! 	(TARGET_EXCEPT_UNWIND_INFO): Remove.
! 	* config/microblaze/microblaze-protos.h (microblaze_eh_return):
! 	New prototype.
! 	* config/microblaze/microblaze.c (microblaze_must_save_register)
! 	(microblaze_expand_epilogue, microblaze_return_addr): Handle
! 	calls_eh_return.
! 	(microblaze_eh_return): New function.
! 	* config/microblaze/microblaze.h (RETURN_ADDR_OFFSET)
! 	(EH_RETURN_DATA_REGNO, MB_EH_STACKADJ_REGNUM)
! 	(EH_RETURN_STACKADJ_RTX, ASM_PREFERRED_EH_DATA_FORMAT): New macros.
! 	* config/microblaze/microblaze.md (eh_return): New pattern.
  
! 2017-01-06  Jakub Jelinek  <jakub@redhat.com>
  
! 	* system.h (GCC_DIAGNOSTIC_PUSH_IGNORED, GCC_DIAGNOSTIC_POP,
! 	GCC_DIAGNOSTIC_STRINGIFY): Define.
  
! 	* read-rtl.c (rtx_reader::read_rtx_code): Avoid -Wsign-compare warning.
  
! 2017-01-06  Andre Vieira  <andre.simoesdiasvieira@arm.com>
  
! 	* config/arm/arm.md (<mcrr>): New.
! 	(<mrrc>): New.
! 	* config/arm/arm.c (arm_arch5te): New.
! 	(arm_option_override): Set arm_arch5te.
! 	(arm_coproc_builtin_available): Add support for mcrr, mcrr2, mrrc
! 	and mrrc2.
! 	* config/arm/arm-builtins.c (MCRR_QUALIFIERS): Define to...
! 	(arm_mcrr_qualifiers): ... this. New.
! 	(MRRC_QUALIFIERS): Define to...
! 	(arm_mrrc_qualifiers): ... this. New.
! 	* config/arm/arm_acle.h (__arm_mcrr, __arm_mcrr2, __arm_mrrc,
! 	__arm_mrrc2): New.
! 	* config/arm/arm_acle_builtins.def (mcrr, mcrr2, mrrc, mrrc2): New.
! 	* config/arm/iterators.md (MCRRI, mcrr, MCRR): New.
! 	(MRRCI, mrrc, MRRC): New.
! 	* config/arm/unspecs.md (VUNSPEC_MCRR, VUNSPEC_MCRR2, VUNSPEC_MRRC,
! 	VUNSPEC_MRRC2): New.
  
! 2017-01-06  Andre Vieira  <andre.simoesdiasvieira@arm.com>
  
! 	* config/arm/arm.md (<mcr>): New.
! 	(<mrc>): New.
! 	* config/arm/arm.c (arm_coproc_builtin_available): Add
! 	support for mcr, mrc, mcr2 and mrc2.
! 	* config/arm/arm-builtins.c (MCR_QUALIFIERS): Define to...
! 	(arm_mcr_qualifiers): ... this. New.
! 	(MRC_QUALIFIERS): Define to ...
! 	(arm_mrc_qualifiers): ... this. New.
! 	(MCR_QUALIFIERS): Define to ...
! 	(arm_mcr_qualifiers): ... this. New.
! 	* config/arm/arm_acle.h (__arm_mcr, __arm_mrc, __arm_mcr2,
! 	__arm_mrc2): New.
! 	* config/arm/arm_acle_builtins.def (mcr, mcr2, mrc, mrc2): New.
! 	* config/arm/iterators.md (MCRI, mcr, MCR, MRCI, mrc, MRC): New.
! 	* config/arm/unspecs.md (VUNSPEC_MCR, VUNSPEC_MCR2, VUNSPEC_MRC,
! 	VUNSPEC_MRC2): New.
  
! 2017-01-06  Andre Vieira  <andre.simoesdiasvieira@arm.com>
  
! 	* config/arm/arm.md (*ldc): New.
! 	(*stc): New.
! 	(<ldc>): New.
! 	(<stc>): New.
! 	* config/arm/arm.c (arm_coproc_builtin_available): Add
! 	support for ldc,ldcl,stc,stcl,ldc2,ldc2l,stc2 and stc2l.
! 	(arm_coproc_ldc_stc_legitimate_address): New.
! 	* config/arm/arm-builtins.c (arm_type_qualifiers): Add
! 	'qualifier_const_pointer'.
! 	(LDC_QUALIFIERS): Define to...
! 	(arm_ldc_qualifiers): ... this. New.
! 	(STC_QUALIFIERS): Define to...
! 	(arm_stc_qualifiers): ... this. New.
! 	* config/arm/arm-protos.h
! 	(arm_coproc_ldc_stc_legitimate_address): New.
! 	* config/arm/arm_acle.h (__arm_ldc, __arm_ldcl, __arm_stc,
! 	__arm_stcl, __arm_ldc2, __arm_ldc2l, __arm_stc2, __arm_stc2l): New.
! 	* config/arm/arm_acle_builtins.def (ldc, ldc2, ldcl, ldc2l, stc,
! 	stc2, stcl, stc2l): New.
! 	* config/arm/constraints.md (Uz): New.
! 	* config/arm/iterators.md (LDCI, STCI, ldc, stc, LDC STC): New.
! 	* config/arm/unspecs.md (VUNSPEC_LDC, VUNSPEC_LDC2, VUNSPEC_LDCL,
! 	VUNSPEC_LDC2L, VUNSPEC_STC, VUNSPEC_STC2, VUNSPEC_STCL,
! 	VUNSPEC_STC2L): New.
  
! 2017-01-06  Andre Vieira  <andre.simoesdiasvieira@arm.com>
  
! 	* config/arm/arm.md (<cdp>): New.
! 	* config/arm/arm.c (neon_const_bounds): Rename this ...
! 	(arm_const_bounds): ... this.
! 	(arm_coproc_builtin_available): New.
! 	* config/arm/arm-builtins.c (SIMD_MAX_BUILTIN_ARGS): Increase.
! 	(arm_type_qualifiers): Add 'qualifier_unsigned_immediate'.
! 	(CDP_QUALIFIERS): Define to...
! 	(arm_cdp_qualifiers): ... this. New.
! 	(void_UP): Define.
! 	(arm_expand_builtin_args): Add case for 6 arguments.
! 	* config/arm/arm-protos.h (neon_const_bounds): Rename this ...
! 	(arm_const_bounds): ... this.
! 	(arm_coproc_builtin_available): New.
! 	* config/arm/arm_acle.h (__arm_cdp): New.
! 	(__arm_cdp2): New.
! 	* config/arm/arm_acle_builtins.def (cdp): New.
! 	(cdp2): New.
! 	* config/arm/iterators.md (CDPI,CDP,cdp): New.
! 	* config/arm/neon.md: Rename all 'neon_const_bounds' to
! 	'arm_const_bounds'.
! 	* config/arm/types.md (coproc): New.
! 	* config/arm/unspecs.md (VUNSPEC_CDP, VUNSPEC_CDP2): New.
! 	* gcc/doc/extend.texi (ACLE): Add a mention of Coprocessor intrinsics.
! 	* gcc/doc/sourcebuild.texi (arm_coproc1_ok, arm_coproc2_ok,
! 	arm_coproc3_ok, arm_coproc4_ok): Document new effective targets.
  
! 2017-01-06  Andre Vieira  <andre.simoesdiasvieira@arm.com>
  
! 	* config/arm/arm-builtins.c (arm_unsigned_binop_qualifiers): New.
! 	(UBINOP_QUALIFIERS): New.
! 	(si_UP): Define.
! 	(acle_builtin_data): New. Change comment.
! 	(arm_builtins): Remove ARM_BUILTIN_CRC32B, ARM_BUILTIN_CRC32H,
! 	ARM_BUILTIN_CRC32W, ARM_BUILTIN_CRC32CB, ARM_BUILTIN_CRC32CH,
! 	ARM_BUILTIN_CRC32CW. Add ARM_BUILTIN_ACLE_BASE and include
! 	arm_acle_builtins.def.
! 	(ARM_BUILTIN_ACLE_PATTERN_START): Define.
! 	(arm_init_acle_builtins): New.
! 	(CRC32_BUILTIN): Remove.
! 	(bdesc_2arg): Remove entries for crc32b, crc32h, crc32w,
! 	crc32cb, crc32ch and crc32cw.
! 	(arm_init_crc32_builtins): Remove.
! 	(arm_init_builtins): Use arm_init_acle_builtins rather
! 	than arm_init_crc32_builtins.
! 	(arm_expand_acle_builtin): New.
! 	(arm_expand_builtin): Use 'arm_expand_acle_builtin'.
! 	* config/arm/arm_acle_builtins.def: New.
  
! 2017-01-06  Andre Vieira  <andre.simoesdiasvieira@arm.com>
  
! 	* config/arm/arm-builtins.c (neon_builtin_datum): Rename to ..
! 	(arm_builtin_datum): ... this.
! 	(arm_init_neon_builtin): Rename to ...
! 	(arm_init_builtin): ... this. Add a new parameters PREFIX
! 	and USE_SIG_IN_NAME.
! 	(arm_init_neon_builtins): Replace 'arm_init_neon_builtin' with
! 	'arm_init_builtin'. Replace type 'neon_builtin_datum' with
! 	'arm_builtin_datum'.
! 	(arm_init_vfp_builtins): Likewise.
! 	(builtin_arg): Rename enum's replacing 'NEON_ARG' with
! 	'ARG_BUILTIN' and add a 'ARG_BUILTIN_NEON_MEMORY.
! 	(arm_expand_neon_args): Rename to ...
! 	(arm_expand_builtin_args): ... this. Rename builtin_arg
! 	enum values and differentiate between ARG_BUILTIN_MEMORY
! 	and ARG_BUILTIN_NEON_MEMORY.
! 	(arm_expand_neon_builtin_1): Rename to ...
! 	(arm_expand_builtin_1): ... this. Rename builtin_arg enum
! 	values, arm_expand_builtin_args and add bool parameter NEON.
! 	(arm_expand_neon_builtin): Use arm_expand_builtin_1.
! 	(arm_expand_vfp_builtin): Likewise.
! 	(NEON_MAX_BUILTIN_ARGS): Remove, it was unused.
  
! 2017-01-01  Jan Hubicka  <hubicka@ucw.cz>
  
! 	PR middle-end/77484
! 	* predict.def (PRED_POLYMORPHIC_CALL): Set to 59.
! 	* predict.c (tree_estimate_probability_bb): Reverse direction of
! 	polymorphic call predictor.
  
! 2017-01-06  David Malcolm  <dmalcolm@redhat.com>
  
! 	* passes.c (execute_one_pass): Split out pass-skipping logic into...
! 	(determine_pass_name_match): ...this new function and...
! 	(should_skip_pass_p): ...this new function.
  
! 2017-01-06  Nathan Sidwell  <nathan@acm.org>
  
! 	* ipa-visibility.c (function_and_variable_visibility): Reformat
! 	comments and long lines.  Remove extrneous if.
! 	* symtab.c (symtab_node::make_decl_local): Fix code format.
! 	(symtab_node::set_section_for_node): Fix comment typo.
  
! 2017-01-06  Martin Liska  <mliska@suse.cz>
  
! 	PR bootstrap/79003
! 	* lra-constraints.c: Rename invariant to lra_invariant.
! 	* predict.c (set_even_probabilities): Initialize e to NULL.
  
! 2017-01-05  Martin Sebor  <msebor@redhat.com>
  
! 	PR tree-optimization/78910
! 	* gimple-ssa-sprintf.c (tree_digits): Add an argument.
! 	(format_integer): Correct off-by-one error in the handling
! 	of precision with negative numbers in signed conversions..
  
! 2017-01-05  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* doc/invoke.texi (C Dialect Options): Adjust -fsso-struct entry.
  
! 2017-01-05  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/71016
! 	* tree-ssa-phiopt.c (tree_ssa_phiopt_worker): Pass cond_stmt to
! 	factor_out_conditional_conversion.  Formatting fix.
! 	(factor_out_conditional_conversion): Add cond_stmt argument.
! 	If arg1 is INTEGER_CST, punt if new_arg0 is not any operand of
! 	cond_stmt and if arg0_def_stmt is not the only stmt in its bb.
! 	Formatting fix.
  
! 2017-01-05  David Malcolm  <dmalcolm@redhat.com>
  
! 	* Makefile.in (OBJS): Add read-md.o, read-rtl.o,
! 	read-rtl-function.o, and selftest-rtl.o.
! 	* config/aarch64/aarch64.c: Include selftest.h and selftest-rtl.h.
! 	(selftest::aarch64_test_loading_full_dump): New function.
! 	(selftest::aarch64_run_selftests): New function.
! 	(TARGET_RUN_TARGET_SELFTESTS): Wire it up to
! 	selftest::aarch64_run_selftests.
! 	* config/i386/i386.c
! 	(selftest::ix86_test_loading_dump_fragment_1): New function.
! 	(selftest::ix86_test_loading_call_insn): New function.
! 	(selftest::ix86_test_loading_full_dump): New function.
! 	(selftest::ix86_test_loading_unspec): New function.
! 	(selftest::ix86_run_selftests): Call the new functions.
! 	* emit-rtl.c (maybe_set_max_label_num): New function.
! 	* emit-rtl.h (maybe_set_max_label_num): New decl.
! 	* function.c (instantiate_decls): Guard call to
! 	instantiate_decls_1 with if (DECL_INITIAL (fndecl)).
! 	* function-tests.c (selftest::verify_three_block_rtl_cfg): Remove
! 	"static".
! 	* gensupport.c (gen_reader::gen_reader): Pass "false"
! 	for new "compact" param of rtx_reader.
! 	* print-rtl.c (rtx_writer::print_rtx_operand): Print "(nil)"
! 	rather than an empty string for NULL strings.
! 	* read-md.c: Potentially include config.h rather than bconfig.h.
! 	Wrap include of errors.h with #ifdef GENERATOR_FILE.
! 	(have_error): New global, copied from errors.c.
! 	(md_reader::read_name): Rename to...
! 	(md_reader::read_name_1): ...this, adding "out_loc" param,
! 	and converting "missing name or number" to returning false, rather
! 	than failing.
! 	(md_reader::read_name): Reimplement in terms of read_name_1.
! 	(md_reader::read_name_or_nil): New function.
! 	(md_reader::read_string): Handle "(nil)" by returning NULL.
! 	(md_reader::md_reader): Add new param "compact".
! 	(md_reader::read_md_files): Wrap with #ifdef GENERATOR_FILE.
! 	(md_reader::read_file): New method.
! 	* read-md.h (md_reader::md_reader): Add new param "compact".
! 	(md_reader::read_file): New method.
! 	(md_reader::is_compact): New accessor.
! 	(md_reader::read_name): Convert return type from void to file_location.
! 	(md_reader::read_name_or_nil): New decl.
! 	(md_reader::read_name_1): New decl.
! 	(md_reader::m_compact): New field.
! 	(noop_reader::noop_reader): Pass "false" for new "compact" param
! 	of rtx_reader.
! 	(rtx_reader::rtx_reader): Add new "compact" param.
! 	(rtx_reader::read_rtx_operand): Make virtual and convert return
! 	type from void to rtx.
! 	(rtx_reader::read_until): New decl.
! 	(rtx_reader::handle_any_trailing_information): New virtual function.
! 	(rtx_reader::postprocess): New virtual function.
! 	(rtx_reader::finalize_string): New virtual function.
! 	(rtx_reader::m_in_call_function_usage): New field.
! 	(rtx_reader::m_reuse_rtx_by_id): New field.
! 	* read-rtl-function.c: New file.
! 	* selftest-rtl.c (selftest::assert_rtx_ptr_eq_at): New function.
! 	* selftest-rtl.h (ASSERT_RTX_PTR_EQ): New macro.
! 	(selftest::verify_three_block_rtl_cfg): New decl.
! 	* read-rtl-function.h: New file.
! 	* read-rtl.c: Potentially include config.h rather than bconfig.h.
! 	For host, include function.h, memmodel.h, and emit-rtl.h.
! 	(one_time_initialization): New function.
! 	(struct compact_insn_name): New struct.
! 	(compact_insn_names): New array.
! 	(find_code): Handle insn codes in compact dumps.
! 	(apply_subst_iterator): Wrap with #ifdef GENERATOR_FILE.
! 	(bind_subst_iter_and_attr): Likewise.
! 	(add_condition_to_string): Likewise.
! 	(add_condition_to_rtx): Likewise.
! 	(apply_attribute_uses): Likewise.
! 	(add_current_iterators): Likewise.
! 	(apply_iterators): Likewise.
! 	(initialize_iterators): Guard usage of apply_subst_iterator with
! 	#ifdef GENERATOR_FILE.
! 	(read_conditions): Wrap with #ifdef GENERATOR_FILE.
! 	(md_reader::read_mapping): Likewise.
! 	(add_define_attr_for_define_subst): Likewise.
! 	(add_define_subst_attr): Likewise.
! 	(read_subst_mapping): Likewise.
! 	(check_code_iterator): Likewise.
! 	(rtx_reader::read_rtx): Likewise.  Move one-time initialization
! 	logic to...
! 	(one_time_initialization): New function.
! 	(rtx_reader::read_until): New method.
! 	(read_flags): New function.
! 	(parse_reg_note_name): New function.
! 	(rtx_reader::read_rtx_code): Initialize "iterator" to NULL.
! 	Handle reuse_rtx ids.
! 	Wrap iterator lookup within #ifdef GENERATOR_FILE.
! 	Add parsing support for RTL dumps, mirroring the special-cases in
! 	print_rtx, by calling read_flags, reading REG_NOTE names, INSN_UID
! 	values, and calling handle_any_trailing_information.
! 	(rtx_reader::read_rtx_operand): Convert return type from void
! 	to rtx, returning return_rtx.  Handle case 'e'.  Call
! 	finalize_string on XSTR and XTMPL fields.
! 	(rtx_reader::read_nested_rtx):  Handle dumps in which trailing
! 	 "(nil)" values were omitted.  Call the postprocess vfunc on the
! 	return_rtx.
! 	(rtx_reader::rtx_reader): Add new "compact" param and pass to base
! 	class ctor.  Initialize m_in_call_function_usage.  Call
! 	one_time_initialization.
! 	* rtl-tests.c (selftest::test_uncond_jump): Call
! 	set_new_first_and_last_insn.
! 	* rtl.h (read_rtx): Wrap decl with #ifdef GENERATOR_FILE.
! 	* selftest-rtl.c: New file.
! 	* selftest-rtl.h (class selftest::rtl_dump_test): New class.
! 	(selftest::get_insn_by_uid): New decl.
! 	* selftest-run-tests.c (selftest::run_tests): Call
! 	read_rtl_function_c_tests.
! 	* selftest.h  (selftest::read_rtl_function_c_tests): New decl.
! 	* tree-dfa.c (ssa_default_def): Return NULL_TREE for rtl function
! 	dumps.
  
! 2017-01-05  Uros Bizjak  <ubizjak@gmail.com>
  
! 	* config/i386/i386.md (*testqi_ext_3): No need to handle memory
! 	operands in a special way.  Assert that pos+len <= mode precision.
  
! 2017-01-05  Jakub Jelinek  <jakub@redhat.com>
  
! 	* common.opt (fvect-cost-model): Remove RejectNegative flag, use
! 	3 argument Alias with unlimited for the negative form.
! 	(fno-vect-cost-model): Removed.
  
! 2017-01-05  Martin Liska  <mliska@suse.cz>
  
! 	* hsa-gen.c (gen_hsa_divmod): New function.
! 	(gen_hsa_insn_for_internal_fn_call): Use the function for IFN_DIVMOD.
  
! 2017-01-05  Martin Liska  <mliska@suse.cz>
  
! 	PR pch/78970
! 	* gcc.c (lookup_compiler): Reject '-' filename for a precompiled
! 	header.
  
! 2017-01-05  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
  
! 	* config/s390/s390.c (s390_expand_setmem): Unroll the loop for
! 	small constant length operands.
  
! 2017-01-05  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
  
! 	* config/s390/s390.c (s390_expand_setmem): Avoid overlapping bytes
! 	between loop iterations.
  
! 2017-01-05  Martin Liska  <mliska@suse.cz>
  
! 	PR sanitizer/78815
! 	* gimplify.c (gimplify_decl_expr): Compare to
! 	asan_poisoned_variables instread of checking flags.
! 	(gimplify_target_expr): Likewise.
! 	(gimplify_expr): Likewise.
! 	(gimplify_function_tree): Conditionally initialize
! 	asan_poisoned_variables.
  
! 2017-01-04  Jeff Law  <law@redhat.com>
  
! 	PR tree-optimizatin/78812
! 	* rtl.h (contains_mem_rtx_p): Prototype.
! 	* ifcvt.c (containts_mem_rtx_p): Move from here to...
! 	* rtlanal.c (contains_mem_rtx_p): Here and remove static linkage.
! 	* gcse.c (prune_expressions): Use contains_mem_rtx_p to discover
! 	and prune MEMs that are not at the toplevel of a SET_SRC rtx.  Look
! 	through ZERO_EXTEND and SIGN_EXTEND when trying to avoid pruning MEMs.
  
! 2017-01-04  Alexandre Oliva <aoliva@redhat.com>
  
! 	* input.c (assert_char_at_range): Default-initialize actual_range.
  
! 2017-01-04  Alexandre Oliva <aoliva@redhat.com>
  
! 	* df-scan.c (df_ref_create_structure): Make regno unsigned,
! 	to match the caller.
  
! 2017-01-04  Alexandre Oliva <aoliva@redhat.com>
  
! 	* cfgexpand.c (expand_gimple_basic_block): Disregard debug
! 	insns after final jump in test to emit dummy move.
  
! 2017-01-04  Alexandre Oliva <aoliva@redhat.com>
  
! 	* gimple-iterator.h (gsi_one_nondebug_before_end_p): New.
! 	* tree-eh.c (cleanup_empty_eh): Skip more debug stmts.
  
! 2017-01-04  Alexandre Oliva <aoliva@redhat.com>
  
! 	* multiple_target.c (create_dispatcher_calls): Init e_next.
! 	* tree-ssa-loop-split.c (split_loop): Init border.
! 	* tree-vect-loop.c (vect_determine_vectorization_factor): Init
! 	scalar_type.
  
! 2017-01-04  Michael Meissner  <meissner@linux.vnet.ibm.com>
  
! 	PR target/71977
! 	PR target/70568
! 	PR target/78823
! 	* config/rs6000/predicates.md (sf_subreg_operand): New predicate.
! 	(altivec_register_operand): Do not return true if the operand
! 	contains a SUBREG mixing SImode and SFmode.
! 	(vsx_register_operand): Likewise.
! 	(vsx_reg_sfsubreg_ok): New predicate.
! 	(vfloat_operand): Do not return true if the operand contains a
! 	SUBREG mixing SImode and SFmode.
! 	(vint_operand): Likewise.
! 	(vlogical_operand): Likewise.
! 	(gpc_reg_operand): Likewise.
! 	(int_reg_operand): Likewise.
! 	* config/rs6000/rs6000-protos.h (valid_sf_si_move): Add declaration.
! 	* config/rs6000/rs6000.c (valid_sf_si_move): New function to
! 	determine if a MOVSI or MOVSF operation contains SUBREGs that mix
! 	SImode and SFmode.
! 	(rs6000_emit_move_si_sf_subreg): New helper function.
! 	(rs6000_emit_move): Call rs6000_emit_move_si_sf_subreg to possbily
! 	fixup SUBREGs involving SImode and SFmode.
! 	* config/rs6000/vsx.md (SFBOOL_*): New constants that are operand
! 	numbers for the new peephole2 optimization.
! 	(peephole2 for SFmode unions): New peephole2 to optimize cases in
! 	the GLIBC math library that do AND/IOR/XOR operations on single
! 	precision floating point.
! 	* config/rs6000/rs6000.h (TARGET_NO_SF_SUBREG): New internal
! 	target macros to say whether we need to avoid SUBREGs mixing
! 	SImode and SFmode.
! 	(TARGET_ALLOW_SF_SUBREG): Likewise.
! 	* config/rs6000/rs6000.md (UNSPEC_SF_FROM_SI): New unspecs.
! 	(UNSPEC_SI_FROM_SF): Likewise.
! 	(iorxor): Change spacing.
! 	(and_ior_xor): New iterator for AND, IOR, and XOR.
! 	(movsi_from_sf): New insns for SImode/SFmode SUBREG support.
! 	(movdi_from_sf_zero_ext): Likewise.
! 	(mov<mode>_hardfloat, FMOVE32 iterator): Use register_operand
! 	instead of gpc_reg_operand.  Add SImode/SFmode SUBREG support.
! 	(movsf_from_si): New insn for SImode/SFmode SUBREG support.
! 	(fma<mode>4): Use gpc_reg_operand instead of register_operand.
! 	(fms<mode>4): Likewise.
! 	(fnma<mode>4): Likewise.
! 	(fnms<mode>4): Likewise.
! 	(nfma<mode>4): Likewise.
! 	(nfms<mode>4): Likewise.
  
! 2017-01-04  Marek Polacek  <polacek@redhat.com>
  
! 	PR c++/64767
! 	* doc/invoke.texi: Document -Wpointer-compare.
  
! 2017-01-04  Jakub Jelinek  <jakub@redhat.com>
  
! 	* optc-gen.awk: Emit #error for -W*/-f*/-m* Enum without
! 	RejectNegative.
  
! 	* dwarf2out.c (output_loc_list): Don't throw away 64K+ location
! 	descriptions for -gdwarf-5 and emit them as uleb128 instead of
! 	2-byte data.
  
! 2017-01-04  Kelvin Nilsen  <kelvin@gcc.gnu.org>
  
! 	PR target/78056
! 	* doc/sourcebuild.texi (PowerPC-specific attributes): Add
! 	documentation of the powerpc_popcntb_ok attribute.
! 	* config/rs6000/rs6000.c (rs6000_option_override_internal): Add
! 	code to issue warning messages if a requested CPU configuration is
! 	not supported by the binary (assembler and loader) toolchain.
! 	(spe_init_builtins): Add two assertions to prevent ICE if attempt is
! 	made to define a built-in function that has been disabled.
! 	(paired_init_builtins): Add assertion to prevent ICE if attempt is
! 	made to define a built-in function that has been disabled.
! 	(altivec_init_builtins): Add comment explaining why definition
! 	of the DST built-in functions is not preceded by an assertion
! 	check.  Add assertions to prevent ICE if attempts are made to
! 	define an altivec predicate or an abs* built-in function that has
! 	been disabled.
! 	(htm_init_builtins): Add comment explaining why definition of the
! 	htm built-in functions is not preceded by an assertion check.
  
! 2017-01-04  Jeff Law  <law@redhat.com>
  
! 	PR tree-optimizatin/67955
! 	* tree-ssa-alias.c (same_addr_size_stores_p): Check offsets first.
! 	Allow any SSA_VAR_P as the base objects.  Use integer_zerop.  Verify
! 	the points-to solution does not include pt_null.  Use DECL_PT_UID
! 	unconditionally.
  
! 2017-01-04  Uros Bizjak  <ubizjak@gmail.com>
  
! 	* config/i386/i386.md (HI/SImode test with imm to QImode splitters):
! 	Use gen_int_mode instead of gen_lopwart for const_int operands.
  
! 2017-01-04  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/71563
! 	* match.pd: Simplify X << Y into X if Y is known to be 0 or
! 	out of range value - has low bits known to be zero.
  
! 2017-01-04  Alan Modra  <amodra@gmail.com>
  
! 	* Makefile.in (aclocal_deps): Update and order as per aclocal.m4.
! 	* configure: Regenerate.
! 	* config.in: Regenerate.
  
! 2017-01-04  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR bootstrap/77569
! 	* input.c (ebcdic_execution_charset::on_error): Don't use strstr for
! 	a substring of the message, but strcmp with the whole message.  Ifdef
! 	ENABLE_NLS, translate the message first using dgettext.
  
! 2017-01-03  Jeff Law  <law@redhat.com>
  
! 	PR tree-optimizatin/78856
! 	* tree-ssa-threadupdate.c: Include tree-vectorizer.h.
! 	(mark_threaded_blocks): Remove code to truncate thread paths that
! 	cross multiple loop headers.  Instead invalidate the cached loop
! 	iteration information and handle case of a thread path walking
! 	into an irreducible region.
  
! 2017-01-03  Michael Meissner  <meissner@linux.vnet.ibm.com>
  
! 	PR target/78900
! 	* config/rs6000/rs6000.c (rs6000_split_signbit): Change some
! 	assertions.  Add support for doing the signbit if the IEEE 128-bit
! 	floating point value is in a GPR.
! 	* config/rs6000/rs6000.md (Fsignbit): Delete.
! 	(signbit<mode>2_dm): Delete using <Fsignbit> and just use "wa".
! 	Update the length attribute if the value is in a GPR.
! 	(signbit<mode>2_dm_<su>ext): Add combiner pattern to eliminate
! 	the sign or zero extension instruction, since the value is always 0/1.
! 	(signbit<mode>2_dm2): Delete using <Fsignbit>.
  
! 	PR target/78953
! 	* config/rs6000/vsx.md (vsx_extract_<mode>_store_p9): If we are
! 	extracting SImode to a GPR register so that we can generate a
! 	store, limit the vector to be in a traditional Altivec register
! 	for the vextuwrx instruction.
  
! 2017-01-03  Ian Lance Taylor  <iant@google.com>
  
! 	* godump.c (go_format_type): Treat ENUMERAL_TYPE like INTEGER_TYPE.
  
! 2017-01-03  Martin Sebor  <msebor@redhat.com>
  
! 	PR tree-optimization/78696
! 	* gimple-ssa-sprintf.c (format_floating): Correct handling of
! 	precision.  Use MPFR for %f for greater fidelity.  Correct handling
! 	of %g.
! 	(pass_sprintf_length::compute_format_length): Set width and precision
! 	specified by asrerisk to void_node for vararg functions.
! 	(try_substitute_return_value): Adjust dump output.
  
! 2017-01-03  David Edelsohn  <dje.gcc@gmail.com>
  
! 	* doc/invoke.texi (RS6000 options): LRA is enabled by default.
  
! 2017-01-03  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* doc/invoke.texi (SPARC options): Document -mlra as the default.
! 	* config/sparc/sparc.c (sparc_option_override): Force LRA unless
! 	-mlra/-mno-lra was passed to the compiler.
  
! 2017-01-03  James Cowgill  <James.Cowgill@imgtec.com>
  
! 	PR rtl-optimization/65618
! 	* emit-rtl.c (try_split): Move initialization of "before" and
! 	"after" to just before the call to emit_insn_after_setloc.
  
! 2017-01-03  Gerald Pfeifer  <gerald@pfeifer.com>
  
! 	* doc/md.texi (Standard Names): Remove reference to Java frontend.
  
! 2017-01-03  Pierre-Marie de Rodat  <derodat@adacore.com>
  
! 	* dwarf2out.c (gen_enumeration_type_die): When
! 	-gno-strict-dwarf, add a DW_AT_encoding attribute.
  
! 2017-01-03  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/78965
! 	* gimple-ssa-sprintf.c (pass_sprintf_length::compute_format_length):
! 	Change first argument from const call_info & to call_info &.  For %n
! 	set info.nowrite to false.
  
! 	PR middle-end/78901
! 	* gimple-ssa-sprintf.c (try_substitute_return_value): Don't change
! 	possibly throwing calls.
  
! 	* genmatch.c (dt_node::gen_kids_1): If generic_exprs include SSA_NAME
! 	and exprs_len || fns_len, emit the code for SSA_NAME next to the exprs
! 	and fns handling, rather than in a separate case SSA_NAME.
  
! 2017-01-02  Jeff Law  <law@redhat.com>
  
! 	* config/darwin-driver.c (darwin_driver_init): Const-correctness
! 	fixes for first_period and second_period variables.
  
! 2017-01-02  Uros Bizjak  <ubizjak@gmail.com>
  
! 	PR target/78967
! 	* config/i386/i386.md (UNSPEC_NOREX_MEM): New unspec.
! 	(*insvqi_1): New insn pattern.
! 	(*insvqi_1_mem_rex64): Ditto.
! 	(*insvqi_2): Ditto.
! 	(*insvqi_3): Rename from *insvqi.
  
! 	(*extzvqi_mem_rex64): Add UNSPEC_NOREX_MEM tag.
  
! 2017-01-02  Gerald Pfeifer  <gerald@pfeifer.com>
  
! 	* doc/cfg.texi (Edges): Remove reference to Java.
! 	(Maintaining the CFG): Ditto.
  
! 2017-01-01  Jan Hubicka  <hubicka@ucw.cz>
  
! 	PR middle-end/77674
! 	* symtab.c (symtab_node::binds_to_current_def_p): Fix handling of
! 	transparent aliases.
  
! 2017-01-01  Jan Hubicka  <hubicka@ucw.cz>
  
! 	PR middle-end/77484
! 	* predict.def (PRED_CALL): Update hitrate.
! 	(PRED_INDIR_CALL, PRED_POLYMORPHIC_CALL): New predictors.
! 	* predict.c (tree_estimate_probability_bb): Split CALL predictor
! 	into direct/indirect/polymorphic variants.
  
! 2017-01-01  Jakub Jelinek  <jakub@redhat.com>
  
! 	Update copyright years.
  
! 	* 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.
  
! Copyright (C) 2017 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,11433 ----
! 2018-05-02  Release Manager
  
! 	* GCC 8.1.0 released.
  
! 2018-05-02  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	PR tree-optimization/85586
! 	* tree-vect-data-refs.c (vect_analyze_data_ref_dependence): Only
! 	exit early for statements in the same group if the accesses are
! 	not strided.
  
! 2018-05-01  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR web/85578
! 	* doc/install.texi2html: Replace _002d with - and _002a with * in
! 	generated html files using sed.
  
! 2018-04-27  Martin Jambor  <mjambor@suse.cz>
  
! 	PR ipa/85549
! 	* ipa-cp.c (find_aggregate_values_for_callers_subset): Make sure
! 	the jump function allows for passing through aggregate values.
  
! 2018-04-27  Jeff Law  <law@redhat.com>
  
! 	* config.gcc: Mark tile* targets as deprecated/obsolete.
  
! 2018-04-27  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/85529
! 	* tree-ssa-reassoc.c (optimize_range_tests_var_bound): Add FIRST_BB
! 	argument.  Don't call get_nonzero_bits if opcode is ERROR_MARK_NODE,
! 	rhs2 def stmt's bb is dominated by first_bb and it isn't an obvious
! 	zero extension or masking of the MSB bit.
! 	(optimize_range_tests): Add FIRST_BB argument, pass it through
! 	to optimize_range_tests_var_bound.
! 	(maybe_optimize_range_tests, reassociate_bb): Adjust
! 	optimize_range_tests callers.
  
! 2018-04-26  Richard Biener  <rguenther@suse.de>
! 	    Jakub Jelinek  <jakub@redhat.com>
  
! 	* cgraph.h (symbol_table): Just declare debug method here.
! 	* symtab.c (symbol_table::debug): Define.
  
! 2018-04-26  Jonathan Wakely  <jwakely@redhat.com>
  
! 	* doc/invoke.texi (-Wreturn-type): Document default status for C++.
  
! 2018-04-25  H.J. Lu  <hongjiu.lu@intel.com>
  
  	Backport from mainline
! 	2018-04-25  Sebastian Peryt  <sebastian.peryt@intel.com>
  
! 	PR target/85473
! 	* config/i386/i386.c (ix86_expand_builtin): Change memory
! 	operand to XI, extend p0 to Pmode.
! 	* config/i386/i386.md: Change unspec volatile and operand
! 	1 mode to XI, change operand 0 mode to P.
  
! 2018-04-25  Jakub Jelinek  <jakub@redhat.com>
  
! 	* DEV-PHASE: Set to prerelease.
  
! 2018-04-24  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	* config/rs6000/rs6000.c (init_float128_ieee): Fix spelling mistakes
! 	in __abskf2 and __powikf2.
  
! 2018-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	PR target/85512
! 	* config/aarch64/constraints.md (Usg, Usj): New constraints.
! 	* config/aarch64/iterators.md (cmode_simd): New mode attribute.
! 	* config/aarch64/aarch64.md (*aarch64_ashr_sisd_or_int_<mode>3):
! 	Use the above on operand 2.  Reindent.
! 	(*aarch64_lshr_sisd_or_int_<mode>3): Likewise.
  
! 2018-04-24  H.J. Lu  <hongjiu.lu@intel.com>
  
! 	PR target/85485
! 	* common/config/i386/i386-common.c (ix86_handle_option): Don't
! 	handle OPT_mcet.
! 	* config/i386/i386.opt (mcet): Removed.
! 	* doc/install.texi: Remove -mcet documentation.
! 	* doc/invoke.texi: Likewise.
  
! 2018-04-24  H.J. Lu  <hongjiu.lu@intel.com>
  
! 	PR target/85485
! 	* doc/install.texi: Remove -mcet from bootstrap-cet.
  
! 2018-04-24  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/85511
! 	* config/i386/i386.c (ix86_init_mmx_sse_builtins): Don't define
! 	__builtin_ia32_readeflags_u32 and __builtin_ia32_writeeflags_u32
! 	if TARGET_64BIT.
  
! 	PR target/85503
! 	* config/rs6000/rs6000-p8swap.c (const_load_sequence_p): Punt if
! 	const_vector is not CONST_VECTOR or SYMBOL_REF for a constant pool
! 	containing a CONST_VECTOR.
  
! 2018-04-24  Cesar Philippidis  <cesar@codesourcery.com>
  
! 	* doc/install.texi: Update newlib dependency for nvptx.
  
! 2018-04-24  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/85508
! 	* config/i386/i386.c (ix86_expand_vector_init_one_var): Use UINTVAL
! 	instead of INTVAL when shifting x left.
  
! 2018-04-24  Andreas Krebbel  <krebbel@linux.ibm.com>
  
! 	PR tree-optimization/85478
! 	* tree-vect-loop.c (vect_analyze_loop_2): Do not call
! 	vect_grouped_store_supported for single element vectors.
  
! 2018-04-24  Richard Biener  <rguenther@suse.de>
  
! 	PR target/85491
! 	* config/i386/i386.c (ix86_add_stmt_cost): Restrict strided
! 	load cost increase to the case of non-constant step.
  
! 2018-04-24  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/84828
! 	* reg-stack.c (move_for_stack_reg): Don't fail assertion about dead
! 	destination if any_malformed_asm.
  
! 2018-04-23  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR middle-end/85496
! 	* expr.c (store_field): In the bitfield case, if the value comes from
! 	a function call and is returned in registers by means of a PARALLEL,
! 	do not change the mode of the temporary unless BLKmode and VOIDmode.
  
! 2018-04-23  Andrey Belevantsev  <abel@ispras.ru>
  
! 	PR rtl-optimization/85423
! 	* sel-sched-ir.c (has_dependence_note_mem_dep): Only discard
! 	dependencies to debug insns when the previous insn is non-debug.
  
! 2018-04-23  Claudiu Zissulescu  <claziss@synopsys.com>
  
! 	* config/arc/arc.md ("vunspec"): Delete it, unify all the unspec
! 	enums into a single definition.
! 	(fls): Fix predicates and printing.
! 	(seti): Likewise.
  
! 2018-04-23  Claudiu Zissulescu  <claziss@synopsys.com>
  
! 	* config/arc/arc-protos.h (check_if_valid_sleep_operand): Remove.
! 	* config/arc/arc.c (arc_expand_builtin): Sleep accepts registers
! 	and short u6 immediate.
! 	(check_if_valid_sleep_operand): Remove.
! 	* config/arc/arc.md (Sleep): Accepts registers and u6 immediates.
  
! 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
  
! 	* config/nds32/nds32.c (nds32_compute_stack_frame): Consider
! 	flag_always_save_lp condition.
! 	* config/nds32/nds32.opt (malways-save-lp): New option.
  
! 2018-04-22  Shiva Chen  <shiva0217@gmail.com>
  
! 	* config/nds32/nds32-protos.h (nds32_use_load_post_increment): Declare.
! 	* config/nds32/nds32.c (nds32_use_load_post_increment): New.
! 	* config/nds32/nds32.h
! 	(USE_LOAD_POST_INCREMENT, USE_LOAD_POST_DECREMENT): Define.
! 	(USE_STORE_POST_INCREMENT, USE_STORE_POST_DECREMENT): Define.
  
! 2018-04-22  Shiva Chen  <shiva0217@gmail.com>
  
! 	* config/nds32/nds32-protos.h (nds32_ls_333_p): Remove.
! 	* config/nds32/nds32.c (nds32_ls_333_p): Remove.
  
! 2018-04-22  Shiva Chen  <shiva0217@gmail.com>
! 	    Chung-Ju Wu  <jasonwucj@gmail.com>
  
! 	* config/nds32/nds32-protos.h (nds32_case_vector_shorten_mode):
! 	Declare.
! 	* config/nds32/nds32.c (nds32_case_vector_shorten_mode): New function.
! 	* config/nds32/nds32.h (CASE_VECTOR_SHORTEN_MODE): Modify.
  
! 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
  
! 	* config/nds32/nds32.c (nds32_compute_stack_frame): Fix wrong value.
  
! 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
  
! 	* config/nds32/nds32-protos.h (nds32_data_alignment,
! 	nds32_local_alignment): Declare.
! 	* config/nds32/nds32.c (nds32_data_alignment, nds32_constant_alignment,
! 	nds32_local_alignment): New functions.
! 	(TARGET_CONSTANT_ALIGNMENT): Define.
! 	* config/nds32/nds32.h (DATA_ALIGNMENT, LOCAL_ALIGNMENT): Define.
  
! 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
  
! 	* config/nds32/nds32.c
! 	(TARGET_HARD_REGNO_MODE_OK): Move to the bottom of file.
! 	(TARGET_MODES_TIEABLE_P): Likewise.
  
! 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
  
! 	* config/nds32/nds32.c (nds32_asm_file_start): Display optimization
! 	level Ofast and Og.
  
! 2018-04-22  Monk Chiang  <sh.chiang04@gmail.com>
! 	    Chung-Ju Wu  <jasonwucj@gmail.com>
  
! 	* config/nds32/constants.md (unspec_volatile_element): Add enum values
! 	for unaligned access.
! 	* config/nds32/nds32-intrinsic.c: Implementation of expanding
! 	unaligned access.
! 	* config/nds32/nds32-intrinsic.md: Likewise.
! 	* config/nds32/nds32_intrinsic.h: Likewise.
! 	* config/nds32/nds32.h (nds32_builtins): Likewise.
! 	* config/nds32/nds32.opt (munaligned-access): New option.
! 	* config/nds32/nds32.c (nds32_asm_file_start): Display
! 	flag_unaligned_access status.
  
! 2018-04-20  Kito Cheng  <kito.cheng@gmail.com>
  
! 	* config/riscv/elf.h (LINK_SPEC): Pass --no-relax if
! 	-mno-relax is present.
! 	* config/riscv/linux.h (LINK_SPEC): Ditto.
  
! 2018-04-20  Martin Sebor  <msebor@redhat.com>
  
! 	PR c/85365
! 	* gimple-fold.c (gimple_fold_builtin_strcpy): Suppress -Wrestrict
! 	for null pointers.
! 	(gimple_fold_builtin_stxcpy_chk): Same.
! 	* gimple-ssa-warn-restrict.c (check_bounds_or_overlap): Same.
  
! 2018-04-20  Michael Meissner  <meissner@linux.ibm.com>
  
! 	PR target/85456
! 	* config/rs6000/rs6000.c (init_float128_ieee): Add support to call
! 	__powikf2 when long double is IEEE 128-bit.
  
! 2018-04-20  Kito Cheng  <kito.cheng@gmail.com>
  
! 	* config/riscv/riscv.c (riscv_first_stack_step): Round up min
! 	step to make sure stack always aligned.
  
! 2018-04-20  Carl Love  <cel@us.ibm.com>
  
!         PR target/83402
!         * config/rs6000/rs6000-c.c (rs6000_gimple_fold_builtin): Add
!         size check for arg0.
  
! 2018-04-20  Nathan Sidwell  <nathan@codesourcery.com>
! 	    Tom de Vries  <tom@codesourcery.com>
  
! 	PR target/85445
! 	* config/nvptx/nvptx.c (nvptx_emit_forking, nvptx_emit_joining):
! 	Emit insns for calls too.
! 	(nvptx_find_par): Always look for worker-level predecessor insn.
! 	(nvptx_propagate): Add is_call parm, return bool.  Copy frame for
! 	calls.
! 	(nvptx_vpropagate, nvptx_wpropagate): Adjust.
! 	(nvptx_process_pars): Propagate frames for calls.
  
! 2018-04-20  H.J. Lu  <hongjiu.lu@intel.com>
  
! 	PR target/85469
! 	* common/config/i386/i386-common.c (OPTION_MASK_ISA_IBT_SET):
! 	Removed.
! 	(OPTION_MASK_ISA_IBT_UNSET): Likewise.
! 	(ix86_handle_option): Don't handle OPT_mibt.
! 	* config/i386/cet.h: Check __CET__ instead of __IBT__ and
! 	__SHSTK__.
! 	* config/i386/driver-i386.c (host_detect_local_cpu): Remove
! 	has_ibt and ibt.
! 	* config/i386/i386-c.c (ix86_target_macros_internal): Don't
! 	check OPTION_MASK_ISA_IBT nor flag_cf_protection.
! 	(ix86_target_macros): Define __CET__ with flag_cf_protection
! 	for -fcf-protection.
! 	* config/i386/i386.c (isa2_opts): Remove -mibt.
! 	* config/i386/i386.h (TARGET_IBT): Removed.
! 	(TARGET_IBT_P): Likewise.
! 	(ix86_valid_target_attribute_inner_p): Don't check OPT_mibt.
! 	* config/i386/i386.md (nop_endbr): Don't check TARGET_IBT.
! 	* config/i386/i386.opt (mcet): Update help message.
! 	(mshstk): Likewise.
! 	(mibt): Removed.
! 	* doc/invoke.texi: Remove -mibt.  Document __CET__.  Document
! 	-mcet as an alias for -mshstk.
  
! 2018-04-20  Richard Biener <rguenther@suse.de>
  
! 	PR middle-end/85475
! 	* match.pd ((X * CST) * Y -> (X * Y) * CST): Avoid exponential
! 	complexity by forcing a single use of the multiply operand.
  
! 2018-04-20  Martin Jambor  <mjambor@suse.cz>
  
! 	ipa/85449
! 	* ipa-cp.c (cgraph_edge_brings_value_p): Move check for self-feeding
! 	recursion dependency to only apply to non-clones.
  
! 2018-04-20  Martin Jambor  <mjambor@suse.cz>
  
! 	ipa/85447
! 	* ipa-cp.c (create_specialized_node): Check that clones of
! 	self-recursive edges exist during IPA-CP.
  
! 2018-04-19  Toon Moene  <toon@moene.org>
  
! 	* doc/invoke.texi: Add -floop-unroll-and-jam to options enabled
! 	by -O3. 
  
! 2018-04-19  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/85467
! 	* fold-const.c (fold_ternary_loc) <case BIT_FIELD_REF>: Use
! 	VECTOR_TYPE_P macro.  If type is vector type, VIEW_CONVERT_EXPR the
! 	VECTOR_CST element to type.
  
! 2018-04-19  H.J. Lu  <hongjiu.lu@intel.com>
  
! 	PR target/85397
! 	* config/i386/i386.h (STACK_SAVEAREA_MODE): New.
! 	* config/i386/i386.md (builtin_setjmp_setup): Removed.
! 	(builtin_longjmp): Likewise.
! 	(save_stack_nonlocal): New pattern.
! 	(restore_stack_nonlocal): Likewise.
  
! 2018-04-19  H.J. Lu  <hongjiu.lu@intel.com>
  
! 	PR target/85404
! 	* config/i386/cet.c (file_end_indicate_exec_stack_and_cet):
! 	Replace ASM_OUTPUT_LABEL with fprintf.
  
! 2018-04-19  H.J. Lu  <hongjiu.lu@intel.com>
  
! 	PR target/85417
! 	* config/i386/cet.c (file_end_indicate_exec_stack_and_cet):
! 	Check flag_cf_protection instead of TARGET_IBT and TARGET_SHSTK.
! 	* config/i386/i386-c.c (ix86_target_macros_internal): Also
! 	define __IBT__ and __SHSTK__ for -fcf-protection.
! 	* config/i386/i386.c (pass_insert_endbranch::gate): Don't check
! 	TARGET_IBT.
! 	(ix86_trampoline_init): Likewise.
! 	(x86_output_mi_thunk): Likewise.
! 	(ix86_notrack_prefixed_insn_p): Likewise.
! 	(ix86_option_override_internal): Don't disallow -fcf-protection.
! 	* config/i386/i386.md (rdssp<mode>): Also enable for
! 	-fcf-protection.
! 	(incssp<mode>): Likewise.
! 	(nop_endbr): Likewise.
! 	* config/i386/i386.opt (mcet): Change help message to built-in
! 	functions only.
! 	(mibt): Likewise.
! 	(mshstk): Likewise.
! 	* doc/invoke.texi: Remove -mcet, -mibt and -mshstk condition
! 	on -fcf-protection.  Change -mcet, -mibt and -mshstk to only
! 	enable CET built-in functions.
  
! 2018-04-19  Sebastian Peryt  <sebastian.peryt@intel.com>
  
! 	* common/config/i386/i386-common.c 
! 	(OPTION_MASK_ISA_MOVDIRI_SET, OPTION_MASK_ISA_MOVDIR64B_SET,
! 	OPTION_MASK_ISA_MOVDIRI_UNSET,
! 	OPTION_MASK_ISA_MOVDIR64B_UNSET): New defines.
! 	(ix86_handle_option): Handle -mmovdiri and -mmovdir64b.
! 	* config.gcc (movdirintrin.h): New header.
! 	* config/i386/cpuid.h (bit_MOVDIRI,
! 	bit_MOVDIR64B): New bits.
! 	* config/i386/driver-i386.c (host_detect_local_cpu): Detect -mmovdiri
! 	and -mmvodir64b.
! 	* config/i386/i386-builtin-types.def ((VOID, PUNSIGNED, UNSIGNED),
! 	(VOID, PVOID, PCVOID)): New function types.
! 	* config/i386/i386-builtin.def (__builtin_ia32_directstoreu_u32,
! 	__builtin_ia32_directstoreu_u64,
! 	 __builtin_ia32_movdir64b): New builtins.
! 	* config/i386/i386-c.c (__MOVDIRI__, __MOVDIR64B__): New.
! 	* config/i386/i386.c (ix86_target_string): Added -mmovdir64b
! 	and -mmovdiri.
! 	(ix86_valid_target_attribute_inner_p): Ditto.
! 	(ix86_expand_special_args_builtin): Added VOID_FTYPE_PUNSIGNED_UNSIGNED
! 	and VOID_FTYPE_PUNSIGNED_UNSIGNED.
! 	(ix86_expand_builtin): Expand IX86_BUILTIN_MOVDIR64B.
! 	* config/i386/i386.h (TARGET_MOVDIRI, TARGET_MOVDIRI_P,
! 	TARGET_MOVDIR64B, TARGET_MOVDIR64B_P): New.
! 	* config/i386/i386.md (UNSPECV_MOVDIRI, UNSPECV_MOVDIR64B): New.
! 	(movdiri<mode>, movdir64b_<mode>): New.
! 	* config/i386/i386.opt: Add -mmovdiri and -mmovdir64b.
! 	* config/i386/immintrin.h: Include movdirintrin.h.
! 	* config/i386/movdirintrin.h: New file.
! 	* doc/invoke.texi: Added -mmovdiri and -mmovdir64b.
  
! 2018-04-19  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/85455
! 	* cfg.c (clear_bb_flags): When loop state says we have
! 	marked irreducible regions also preserve BB_IRREDUCIBLE_LOOP.
  
! 2018-04-19  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/84737
! 	* tree-vect-data-refs.c (vect_copy_ref_info): New function
! 	copying restrict info.
! 	(vect_setup_realignment): Use it.
! 	* tree-vectorizer.h (vect_copy_ref_info): Declare.
! 	* tree-vect-stmts.c (vectorizable_store): Copy ref info from
! 	the first DR to all generated stores.
! 	(vectorizable_load): Likewise for loads.
  
! 2018-04-19  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/85446
! 	* match.pd ((intptr_t) x eq/ne CST to x eq/ne (typeof x) cst): Require
! 	the integral and pointer types to have the same precision.
  
! 	* doc/install.texi: Document --disable-cet being the default and
! 	--enable-cet=auto.
  
! 2018-04-18  Martin Liska  <mliska@suse.cz>
  
! 	* ipa-devirt.c (odr_subtypes_equivalent_p): Fix GNU coding
! 	style.
  
! 2018-04-18  Martin Liska  <mliska@suse.cz>
  
  	Revert
! 	2018-03-02  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR ipa/83983
! 	* ipa-devirt.c (odr_subtypes_equivalent_p): Get the ODR type of both
! 	arguments if they are comparable.
  
! 2018-04-18  Martin Liska  <mliska@suse.cz>
  
  	Revert
! 	2018-03-13  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR lto/84805
! 	* ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of
! 	incomplete types.
  
! 2018-04-18  H.J. Lu  <hongjiu.lu@intel.com>
  
! 	PR target/85388
! 	* config/i386/i386.c (ix86_expand_split_stack_prologue): Insert
! 	ENDBR after calling __morestack.
  
! 2018-04-18  David Malcolm  <dmalcolm@redhat.com>
  
! 	PR jit/85384
! 	* configure.ac (gcc-driver-name.h): Honor --with-gcc-major-version
! 	by using gcc_base_ver to generate a gcc_driver_version, and use
! 	it when generating GCC_DRIVER_NAME.
  	* configure: Regenerate.
  
! 2018-04-18  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/81084
! 	* config.gcc: Obsolete powerpc*-*-*spe*.
  
! 2018-04-17  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR debug/84637
! 	* dbxout.c (dbxout_int): Perform negation in unsigned int type.
! 	(stabstr_D): Change type of unum from unsigned int to
! 	unsigned HOST_WIDE_INT.  Perform negation in unsigned HOST_WIDE_INT
! 	type.
  
! 2018-04-17  Jim Wilson  <jimw@sifive.com>
  
! 	PR 84856
! 	* config/riscv/riscv.c (riscv_compute_frame_info): Add calls to
! 	RISCV_STACK_ALIGN when using outgoing_args_size and pretend_args_size.
! 	Set arg_pointer_offset after using pretend_args_size.
  
! 2018-04-17  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR rtl-optimization/85431
! 	* dse.c (record_store): Ignore zero width stores.
  
! 	PR sanitizer/85230
! 	* asan.c (handle_builtin_stack_restore): Adjust comment.  Emit
! 	__asan_allocas_unpoison call and last_alloca_addr = new_sp before
! 	__builtin_stack_restore rather than after it.
! 	* builtins.c (expand_asan_emit_allocas_unpoison): Pass
! 	arg1 + (virtual_dynamic_stack_rtx - stack_pointer_rtx) as second
! 	argument instead of virtual_dynamic_stack_rtx.
  
! 2018-04-17  Kelvin Nilsen  <kelvin@gcc.gnu.org>
  
! 	* config/rs6000/rs6000-protos.h (rs6000_builtin_is_supported_p):
! 	New prototype.
! 	* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
! 	Add note to error message to explain internal mapping of overloaded
! 	built-in function name to non-overloaded built-in function name.
! 	* config/rs6000/rs6000.c (rs6000_builtin_is_supported_p): New
! 	function.
  
! 2018-04-17  Michael Meissner  <meissner@linux.vnet.ibm.com>
  
! 	PR target/85424
! 	* config/rs6000/rs6000.md (pack<mode>): Do not try handle a pack
! 	where the inputs overlap with the output.
  
! 2018-04-17  Jakub Jelinek  <jakub@redhat.com>
  
! 	* config/i386/sse.md (vec_extract_lo_<mode><mask_name>): Add
! 	(=v, v) alternative and explicit "memory" attribute.
! 	(vec_extract_lo_<mode><mask_name>): Likewise.  Also add
! 	"type", "prefix", "prefix_extra", "length_immediate" and "mode"
! 	attributes.
! 	(vec_extract_lo_<mode><mask_name>): Add (=v, v) alternative and use
! 	"sselog1" type instead of "sselog".
! 	(vec_extract_hi_<mode><mask_name>): Use "sselog1" type instead of
! 	"sselog".  Remove explicit "memory" attribute.
! 	(vec_extract_lo_v32hi): Add (=v, v) alternative and explicit "memory",
! 	"type", "prefix", "prefix_extra", "length_immediate" and "mode"
! 	attributes.
! 	(vec_extract_hi_v32hi): Merge all alternatives into one, use
! 	"sselog1" type instead of "sselog".  Remove explicit "memory"
! 	attribute.
! 	(vec_extract_hi_v16hi): Merge each pair of alternatives into one,
! 	use "sselog1" type instead of "sselog".  Remove explicit "memory"
! 	attribute.
! 	(vec_extract_lo_v64qi): Add (=v, v) alternative and explicit "memory",
! 	"type", "prefix", "prefix_extra", "length_immediate" and "mode"
! 	attributes.
! 	(vec_extract_hi_v64qi): Merge all alternatives into one, use
! 	"sselog1" type instead of "sselog".  Remove explicit "memory"
! 	attribute.
! 	(vec_extract_hi_v32qi): Merge each pair of alternatives into one,
! 	use "sselog1" type instead of "sselog".  Remove explicit "memory"
! 	attribute.
  
! 	PR target/85430
! 	* config/i386/i386.md (*ashlqi3_1_slp): Use alu1 type instead of alu.
  
! 	PR middle-end/85414
! 	* rtlhooks.c (gen_lowpart_if_possible): Don't call gen_lowpart_SUBREG
! 	on a SUBREG.
  
! 2018-04-17  Martin Jambor  <mjambor@suse.cz>
  
! 	PR ipa/85421
! 	* ipa-cp.c (create_specialized_node): Call
! 	expand_all_artificial_thunks if necessary.
  
! 2018-04-17  Martin Liska  <mliska@suse.cz>
  
! 	PR lto/85405
! 	* ipa-devirt.c (odr_types_equivalent_p): Remove trailing
! 	in message, remote space in between '_G' and '('.
  
! 2018-04-17  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/85281
! 	* config/i386/sse.md (reduces<mode><mask_scalar_name>,
! 	avx512f_vmcmp<mode>3<round_saeonly_name>,
! 	avx512f_vmcmp<mode>3_mask<round_saeonly_name>,
! 	avx512f_sgetexp<mode><mask_scalar_name><round_saeonly_scalar_name>,
! 	avx512f_rndscale<mode><round_saeonly_name>,
! 	avx512dq_ranges<mode><mask_scalar_name><round_saeonly_scalar_name>,
! 	avx512f_vgetmant<mode><mask_scalar_name><round_saeonly_scalar_name>):
! 	Use %<iptr>2 instead of %2 for -masm=intel.
! 	(avx512f_vcvtss2usi<round_name>, avx512f_vcvtss2usiq<round_name>,
! 	avx512f_vcvttss2usi<round_saeonly_name>,
! 	avx512f_vcvttss2usiq<round_saeonly_name>): Use %k1 instead of %1 for
! 	-masm=intel.
! 	(avx512f_vcvtsd2usi<round_name>, avx512f_vcvtsd2usiq<round_name>,
! 	avx512f_vcvttsd2usi<round_saeonly_name>,
! 	avx512f_vcvttsd2usiq<round_saeonly_name>, ufloatv2siv2df2<mask_name>):
! 	Use %q1 instead of %1 for -masm=intel.
! 	(avx512f_sfixupimm<mode><sd_maskz_name><round_saeonly_name>,
! 	avx512f_sfixupimm<mode>_mask<round_saeonly_name>): Use %<iptr>3 instead
! 	of %3 for -masm=intel.
! 	(sse2_shufpd_v2df_mask): Fix a typo, change %{6%} to %{%6%} for
! 	-masm=intel.
! 	(*avx512vl_<code>v2div2qi2_store): Use %w0 instead of %0 for
! 	-masm=intel.
! 	(*avx512vl_<code><mode>v4qi2_store): Use %k0 instead of %0 for
! 	-masm=intel.
! 	(avx512vl_<code><mode>v4qi2_mask_store): Use a single pattern with
! 	%k0 and %1 for -masm=intel rather than two patterns, one with %0 and
! 	%g1.
! 	(*avx512vl_<code><mode>v8qi2_store): Use %q0 instead of %0 for
! 	-masm=intel.
! 	(avx512vl_<code><mode>v8qi2_mask_store): Use a single pattern with
! 	%q0 and %1 for -masm=intel rather than two patterns, one with %0 and
! 	%g1 and one with %0 and %1.
! 	(avx512er_vmrcp28<mode><round_saeonly_name>,
! 	avx512er_vmrsqrt28<mode><round_saeonly_name>): Use %<iptr>1 instead of
! 	%1 for -masm=intel.
! 	(avx5124fmaddps_4fmaddps_mask, avx5124fmaddps_4fmaddss_mask,
! 	avx5124fmaddps_4fnmaddps_mask, avx5124fmaddps_4fnmaddss_mask,
! 	avx5124vnniw_vp4dpwssd_mask, avx5124vnniw_vp4dpwssds_mask): Swap order
! 	of %0 and %{%4%} for -masm=intel.
! 	(avx5124fmaddps_4fmaddps_maskz, avx5124fmaddps_4fmaddss_maskz,
! 	avx5124fmaddps_4fnmaddps_maskz, avx5124fmaddps_4fnmaddss_maskz,
! 	avx5124vnniw_vp4dpwssd_maskz, avx5124vnniw_vp4dpwssds_maskz): Swap
! 	order of %0 and %{%5%}%{z%} for -masm=intel.
  
! 2018-04-17  Jan Hubicka  <jh@suse.cz>
  
! 	PR lto/85405
! 	* ipa-devirt.c (odr_types_equivalent_p): Handle bit fields.
  
! 2018-04-17  Martin Liska  <mliska@suse.cz>
  
! 	PR ipa/85329
! 	* multiple_target.c (create_dispatcher_calls): Set apostrophes
! 	for target_clone error message.  Make default implementation
!         clone to be a local declaration.
! 	(separate_attrs): Add new argument and check for an empty
! 	string.
! 	(expand_target_clones): Handle it.
! 	(ipa_target_clone): Make redirection just for target_clones
! 	functions.
  
! 2018-04-16  Cesar Philippidis  <cesar@codesourcery.com>
! 	    Tom de Vries  <tom@codesourcery.com>
  
! 	PR middle-end/84955
! 	* omp-expand.c (expand_oacc_for): Add dummy false branch for
! 	tiled basic blocks without omp continue statements.
  
! 2018-04-16  Aaron Sawdey  <acsawdey@linux.ibm.com>
  
! 	PR target/83660
! 	* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Mark
! 	vec_extract expression as having side effects to make sure it gets
! 	a cleanup point.
  
! 2018-04-16  H.J. Lu  <hongjiu.lu@intel.com>
  
! 	PR target/85403
! 	* config/i386/i386.c (get_builtin_code_for_version): Check
! 	error_mark_node.
  
! 2018-04-16  Olga Makhotina  <olga.makhotina@intel.com>
  
! 	PR target/84331
! 	* gcc/config.gcc: Support "skylake".
! 	* gcc/config/i386/i386-c.c (ix86_target_macros_internal): Handle
! 	PROCESSOR_SKYLAKE.
! 	* gcc/config/i386/i386.c (m_SKYLAKE): Define.
! 	(processor_target_table): Add "skylake".
! 	(ix86_option_override_internal): Add "skylake".
! 	(get_builtin_code_for_version): Handle PROCESSOR_SKYLAKE,
! 	PROCESSOR_CANNONLAKE.
! 	(get_builtin_code_for_version): Fix priority for
! 	PROCESSOR_ICELAKE_CLIENT, PROCESSOR_ICELAKE_SERVER,
! 	PROCESSOR_SKYLAKE-AVX512.
! 	* gcc/config/i386/i386.h (processor_costs): Define TARGET_SKYLAKE.
! 	(processor_type): Add PROCESSOR_SKYLAKE.
  
! 2018-04-16  Paolo Carlini  <paolo.carlini@oracle.com>
! 	    Jason Merrill  <jason@redhat.com>
  
! 	PR c++/85112
! 	* convert.c (convert_to_integer_1): Use direct recursion for
! 	enumeral types and types with a precision less than the number
! 	of bits in their mode.
  
! 2018-04-16  Julia Koval  <julia.koval@intel.com>
  
! 	PR target/84413
! 	* config/i386/x86-tune.def (X86_TUNE_SSE_UNALIGNED_LOAD_OPTIMAL,
! 	X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL): Add m_SKYLAKE_AVX512
  
! 2018-04-14  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	PR target/85293
! 	* config/rs6000/rs6000.opt (mdirect-move): Make deprecated.
! 	* doc/invoke.texi (RS/6000 and PowerPC Options): Remove -mdirect-move
! 	and -mno-direct-move.
  
! 2018-04-13  Paul A. Clarke  <pc@us.ibm.com>
  
! 	PR target/83402
! 	* config/rs6000/emmintrin.h (_mm_slli_epi{16,32,64}):
! 	Ensure that vec_splat_s32 is only called with 0 <= shift < 16.
! 	Ensure negative shifts result in {0}.
  
! 2018-04-13  Vladimir Makarov  <vmakarov@redhat.com>
  
! 	PR rtl-optimization/79916
! 	* config/rs6000/rs6000.c (rs6000_emit_move): Use assigned hard
! 	regs (if any) to define how to gnerate SD moves when LRA is in
! 	progress.
  
! 2018-04-13  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR rtl-optimization/85393
! 	* except.h (expand_dw2_landing_pad_for_region): Remove declaration.
! 	* except.c (expand_dw2_landing_pad_for_region): Make static.
! 	* bb-reorder.c (fix_up_crossing_landing_pad): In new_bb emit just
! 	a label and unconditional jump to old_bb, rather than
! 	expand_dw2_landing_pad_for_region insn(s) and jump to single_succ
! 	basic block.
  
! 	PR rtl-optimization/85376
! 	* simplify-rtx.c (simplify_const_unary_operation): For CLZ and CTZ and
! 	zero op0, if C?Z_DEFINED_VALUE_AT_ZERO is false, return NULL_RTX
! 	instead of a specific value.
  
! 2018-04-13  Jan Hubicka  <hubicka@ucw.cz>
! 	    Bin Cheng  <bin.cheng@arm.com>
  
! 	PR tree-optimization/82965
! 	PR tree-optimization/83991
! 	* cfgloopanal.c (expected_loop_iterations_unbounded): Add
! 	by_profile_only parameter.
! 	* cfgloopmanip.c (scale_loop_profile): Further scale loop's profile
!         information if the loop was predicted to iterate too many times.
! 	* cfgloop.h (expected_loop_iterations_unbounded): Update prototype
  
! 2018-04-13  Jan Hubicka  <hubicka@ucw.cz>
  
! 	PR lto/71991
! 	* config/i386/i386.c (ix86_can_inline_p): Allow safe transitions for
! 	always inline.
  
! 2018-04-13  Martin Liska  <mliska@suse.cz>
! 	    Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/81657
! 	* expr.h (enum block_op_methods): Add BLOCK_OP_NO_LIBCALL_RET.
! 	* expr.c (emit_block_move_hints): Handle BLOCK_OP_NO_LIBCALL_RET.
! 	* builtins.c (expand_builtin_memory_copy_args): Use
! 	BLOCK_OP_NO_LIBCALL_RET method for mempcpy with non-ignored target,
! 	handle dest_addr == pc_rtx.
  
! 2018-04-12  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	PR target/85291
! 	* config/rs6000/rs6000.md (fix_trunc<mode>si2): Use legacy code if
! 	asked to not generate direct moves.
! 	(fix_trunc<mode>si2_stfiwx): Similar.
! 	(fix_trunc<mode>si2_internal): Similar.
  
! 2018-04-12  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR debug/83157
! 	* var-tracking.c (add_stores): Handle STRICT_LOW_PART SET_DEST.
! 	* cselib.c (cselib_record_sets): For STRICT_LOW_PART dest,
! 	lookup if dest in some wider mode is known to be const0_rtx and
! 	if so, record permanent equivalence for it to be ZERO_EXTEND of
! 	the narrower mode destination.
  
! 2018-04-12  Cesar Philippidis  <cesar@codesourcery.com>
  
! 	* lto-streamer-out.c (output_function): Revert 259346.
! 	* omp-expand.c (expand_oacc_for): Likewise.
  
! 2018-04-12  Alexander Monakov  <amonakov@ispras.ru>
  
! 	PR rtl-optimization/85354
! 	* sel-sched-ir.c (sel_init_pipelining): Move cfg_cleanup call...
! 	* sel-sched.c (sel_global_init): ... here.
  
! 2018-04-12  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR target/85238
! 	* lto-wrapper.c (debug_objcopy): Open the files in binary mode.
! 	* dwarf2out.c (dwarf2out_early_finish): Do not generate assembly in LTO
! 	mode for PE-COFF targets.
! 	* config/i386/i386-protos.h (i386_pe_asm_lto_start): Declare.
! 	(i386_pe_asm_lto_end): Likewise.
! 	* config/i386/cygming.h (TARGET_ASM_LTO_START): Define.
! 	(TARGET_ASM_LTO_END): Likewise.
! 	* config/i386/winnt.c (saved_debug_info_level): New static variable.
! 	(i386_pe_asm_lto_start): New function.
! 	(i386_pe_asm_lto_end): Likewise.
  
! 2018-04-12  Cesar Philippidis  <cesar@codesourcery.com>
! 	    Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/84955
! 	* lto-streamer-out.c (output_function): Fix CFG loop state before
! 	streaming out.
! 	* omp-expand.c (expand_oacc_for): Handle calls to internal
! 	functions like regular functions.
  
! 2018-04-12  Richard Biener  <rguenther@suse.de>
  
! 	PR lto/85371
! 	* dwarf2out.c (init_sections_and_labels): Use debug_line_section[_label]
! 	for the early LTO debug to properly generate references to it
! 	during DIE emission.  Do not re-use that for the skeleton for
! 	split-dwarf.
! 	(dwarf2out_early_finish): Likewise.
  
! 2018-04-12  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/85328
! 	* config/i386/sse.md
! 	(<mask_codefor>avx512dq_vextract<shuffletype>64x2_1<mask_name> split,
! 	<mask_codefor>avx512f_vextract<shuffletype>32x4_1<mask_name> split,
! 	vec_extract_lo_<mode><mask_name> split, vec_extract_lo_v32hi,
! 	vec_extract_lo_v64qi): For non-AVX512VL if input is xmm16+ reg
! 	and output is a reg, avoid creating invalid lowpart subreg, but
! 	instead split into a 512-bit move.  Don't split if not AVX512VL,
! 	input is xmm16+ reg and output is a mem.
! 	(vec_extract_lo_<mode><mask_name>, vec_extract_lo_v32hi,
! 	vec_extract_lo_v64qi): Don't require split if not AVX512VL, input is
! 	xmm16+ reg and output is a mem.
  
! 2018-04-12  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
  
! 	* config/s390/s390.c (s390_output_indirect_thunk_function): Check
! 	also for flag_dwarf2_cfi_asm.
  
! 2018-04-12  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR rtl-optimization/85342
! 	* regcprop.c (copyprop_hardreg_forward_1): Remove replaced array, use
! 	a bool scalar var inside of the loop instead.  Don't try to update
! 	recog_data.operand after failed apply_change_group.
  
! 2018-04-12  Tom de Vries  <tom@codesourcery.com>
  
! 	PR target/85296
! 	* config/nvptx/nvptx.c (flexible_array_member_type_p): New function.
! 	(nvptx_assemble_decl_begin): Add undefined param.  Declare undefined
! 	array with flexible array member as array without given dimension.
! 	(nvptx_assemble_undefined_decl): Set nvptx_assemble_decl_begin call
! 	argument for undefined param to true.
  
! 2018-04-11  Aaron Sawdey  <acsawdey@linux.ibm.com>
  
! 	PR target/85321
! 	* doc/invoke.texi (RS/6000 and PowerPC Options): Document options
! 	-mcall- and -mtraceback=. Remove options -mabi=spe and -mabi=no-spe
! 	from PowerPC section.
! 	* config/rs6000/sysv4.opt (mcall-): Improve help text.
! 	* config/rs6000/rs6000.opt (mblock-compare-inline-limit=): Trim
! 	help text that is too long.
! 	* config/rs6000/rs6000.opt (mblock-compare-inline-loop-limit=): Trim
! 	help text that is too long.
! 	* config/rs6000/rs6000.opt (mstring-compare-inline-limit=): Trim
! 	help text that is too long.
  
! 2018-04-11  Uros Bizjak  <ubizjak@gmail.com>
  
! 	* config/alpha/alpha.md (stack_probe_internal): Rename
! 	from "probe_stack".  Update all callers.
  
! 2018-04-11  Alexander Monakov  <amonakov@ispras.ru>
  
! 	PR rtl-optimization/84566
! 	* sched-deps.c (sched_analyze_insn): Check deps->readonly when invoking
! 	sched_macro_fuse_insns.
  
! 2018-04-11  Alexander Monakov  <amonakov@ispras.ru>
  
! 	PR target/84301
! 	* sched-rgn.c (add_branch_dependences): Move sel_sched_p check here...
! 	(compute_block_dependences): ... from here.
  
! 2018-04-11  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/85331
! 	* vec-perm-indices.h (vec_perm_indices::clamp): Change input type
! 	from int to HOST_WIDE_INT.
  
! 2018-04-11  Martin Jambor  <mjambor@suse.cz>
  
! 	PR ipa/84149
! 	* ipa-cp.c (propagate_vals_across_pass_through): Expand comment.
! 	(cgraph_edge_brings_value_p): New parameter dest_val, check if it is
! 	not the same as the source val.
! 	(cgraph_edge_brings_value_p): New parameter.
! 	(gather_edges_for_value): Pass destination value to
! 	cgraph_edge_brings_value_p.
! 	(perhaps_add_new_callers): Likewise.
! 	(get_info_about_necessary_edges): Likewise and exclude values brought
! 	only by self-recursive edges.
! 	(create_specialized_node): Redirect only clones of self-calling edges.
! 	(+self_recursive_pass_through_p): New function.
! 	(find_more_scalar_values_for_callers_subset): Use it.
! 	(find_aggregate_values_for_callers_subset): Likewise.
! 	(known_aggs_to_agg_replacement_list): Removed.
! 	(decide_whether_version_node): Re-calculate known constants for all
! 	remaining context clones.
  
! 2018-04-11  Richard Biener  <rguenther@suse.de>
  
! 	PR lto/85339
! 	* dwarf2out.c (dwarf2out_finish): Remove DW_AT_stmt_list attribute
! 	from early DWARF output.
! 	(dwarf2out_early_finish): Output line info unconditionally into
! 	early DWARF and add reference to it.
  
! 2018-04-11  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/85281
! 	* config/i386/sse.md (iptr): Add V16SFmode and V8DFmode cases.
! 	(<avx512>_vec_dup<mode><mask_name>): Use a single pattern for modes
! 	other than V2DFmode using iptr mode attribute.
! 	(<avx512>_vec_dup<mode><mask_name>): Use iptr mode attribute.
  
! 2018-04-11  Alexander Monakov  <amonakov@ispras.ru>
  
! 	PR rtl-optimization/84659
! 	* sel-sched-ir.c (sel_init_pipelining): Invoke cleanup_cfg.
  
! 2018-04-11  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR debug/85302
! 	* dwarf2out.c (skip_loc_list_entry): Don't call size_of_locs if
! 	SIZEP is NULL.
! 	(output_loc_list): Pass address of a dummy size variable even in the
! 	locview handling loop.
! 	(index_location_lists): Add comment on why skip_loc_list_entry can't
! 	call size_of_locs.
  
! 2018-04-11  Thomas Preud'homme  <thomas.preudhomme@arm.com>
  
! 	PR target/85261
! 	* config/arm/arm-builtins.c (arm_expand_builtin): Force input operand
! 	into register.
  
! 2018-04-10  Aaron Sawdey  <acsawdey@linux.ibm.com>
  
! 	PR target/85321
! 	* doc/invoke.texi (RS/6000 and PowerPC Options): Document options
! 	-mblock-compare-inline-limit, -mblock-compare-inline-loop-limit,
! 	and -mstring-compare-inline-limit.
  
! 2018-04-10  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	PR target/85287
! 	* gcc/config/rs6000/rs6000.md (allocate_stack): Put the residual size
! 	for stack clash protection in a register whenever we need it to be in
! 	a register.
  
! 2018-04-10  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	* common/config/rs6000/rs6000-common.c (rs6000_option_init_struct):
! 	Enable -fasynchronous-unwind-tables by default if OBJECT_FORMAT_ELF.
  
! 2018-04-10  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	PR target/85321
! 	* config/rs6000/rs6000.opt (mtraceback=): Show the allowed values in
! 	the help text.
! 	(mlong-double-): Ditto.
! 	* config/rs6000/sysv4.opt (msdata=): Ditto.
! 	(mtls-size=): Ditto.
  
! 2018-04-10  Kelvin Nilsen  <kelvin@gcc.gnu.org>
  
! 	* config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Remove
! 	erroneous entries for
! 	"vector int vec_ldl (int, long int *)", and
! 	"vector unsigned int vec_ldl (int, unsigned long int *)".
! 	Add comments and entries for
! 	"vector bool char vec_ldl (int, bool char *)",
! 	"vector bool short vec_ldl (int, bool short *)",
! 	"vector bool int vec_ldl (int, bool int *)",
! 	"vector bool long long vec_ldl (int, bool long long *)",
! 	"vector pixel vec_ldl (int, pixel *)",
! 	"vector long long vec_ldl (int, long long *)",
! 	"vector unsigned long long vec_ldl (int, unsigned long long *)".
! 	* config/rs6000/rs6000.c (rs6000_init_builtins): Initialize new
! 	type tree bool_long_long_type_node and correct definition of
! 	bool_V2DI_type_node to make reference to this new type tree.
! 	(rs6000_mangle_type): Replace erroneous reference to
! 	bool_long_type_node with bool_long_long_type_node.
! 	* config/rs6000/rs6000.h (enum rs6000_builtin_type_index): Add
! 	comments to emphasize sign distinctions for char and int types and
! 	replace RS6000_BTI_bool_long constant with
! 	RS6000_BTI_bool_long_long constant.  Also add comment to restrict
! 	use of RS6000_BTI_pixel.
! 	(bool_long_type_node): Remove this macro definition.
! 	(bool_long_long_type_node): New macro definition
  
! 2018-04-10  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR rtl-optimization/85300
! 	* combine.c (subst): Handle subst of CONST_SCALAR_INT_P new_rtx also
! 	into FLOAT and UNSIGNED_FLOAT like ZERO_EXTEND, return a CLOBBER if
! 	simplify_unary_operation fails.
  
! 2018-04-10  Martin Liska  <mliska@suse.cz>
  
! 	* gdbhooks.py: Add pretty-printers for varpool_node, symtab_node,
! 	cgraph_edge and ipa_ref.
  
! 2018-04-10  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/85177
! 	PR target/85255
! 	* config/i386/sse.md
! 	(<extract_type>_vinsert<shuffletype><extract_suf>_mask): Fix
! 	computation of the VEC_MERGE selector from mask.
! 	(<extract_type>_vinsert<shuffletype><extract_suf>_1<mask_name>):
! 	Fix decoding of the VEC_MERGE selector into mask.
  
! 2018-04-10  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	PR tree-optimization/85286
! 	* tree-vect-data-refs.c (vect_get_smallest_scalar_type):
  
! 2018-04-10  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* final.c (final_1): Set insn_last_address as well as
! 	insn_current_address.
  
! 2018-04-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	PR target/85173
! 	* explow.c (emit_stack_probe): Call validize_mem on memory location
! 	before passing it to gen_probe_stack.  Create address operand and
! 	legitimize it for the probe_stack_address case.
  
! 2018-04-09  Jan Hubicka  <jh@suse.cz>
  
! 	PR lto/85078
! 	* ipa-devirt.c (rebuild_type_inheritance-hash): New.
! 	* ipa-utils.h (rebuild_type_inheritance-hash): Declare.
! 	* tree.c (free_lang_data_in_type): Fix handling of binfos;
! 	walk basetypes.
! 	(free_lang_data): Rebuild type inheritance graph.
  
! 2018-04-09  Martin Sebor  <msebor@redhat.com>
  
! 	* invoke.texi (-finline-small-functions): Mention other optimization
! 	options.
! 	(-findirect-inlining, -fpartial-inlining): Same.
! 	(-finline-functions-called-once): Same.
! 	(-freorder-blocks-and-partition): Same.
  
! 2018-04-09  Jan Hubicka  <jh@suse.cz>
  
! 	PR rtl/84058
! 	* cfgcleanup.c (try_forward_edges): Do not give up on crossing
! 	jumps; choose last target that matches the criteria (i.e.
! 	no partition changes for non-crossing jumps).
! 	* cfgrtl.c (cfg_layout_redirect_edge_and_branch): Add basic
! 	support for redirecting crossing jumps to non-crossing.
  
! 2018-04-09  Alexey Brodkin  <abrodkin@synopsys.com>
  
! 	* config/arc/arc.c (arc_expand_prologue): Set stack usage info
! 	also for naked functions.
  
! 2018-04-09  Claudiu Zissulescu  <claziss@synopsys.com>
  
! 	* config/arc/arc.md (add_shift): New pattern.
! 	(add_shift2): Likewise.
! 	(sub_shift): Likewise.
! 	(sub_shift_cmp0_noout): Likewise.
! 	(compare_si_ashiftsi): Likewise.
! 	(xbfu_cmp0_noout): New combine pattern.
! 	(xbfu_cmp0"): Likewise.
! 	(movsi_set_cc_insn): Place the predicable variant first.
! 	(commutative_binary_cmp0_noout): Remove clobber.
! 	(commutative_binary_cmp0): New pattern.
! 	(noncommutative_binary_cmp0): Likewise.
! 	(noncommutative_binary_cmp0_noout): Likewise.
! 	(noncommutative_binary_comparison_result_used): Removed.
! 	(rsub_cmp0): New pattern.
! 	(rsub_cmp0_noout): Likewise.
! 	(extzvsi): Changed, keep only meaningful variants.
! 	(SQH, SEZ): New iterators.
! 	(SQH_postfix): New mode attribute.
! 	(SEZ_prefix): New code attribute.
! 	(<SEZ_prefix>xt<SQH_postfix>_cmp0_noout): New instruction pattern.
! 	(<SEZ_prefix>xt<SQH_postfix>_cmp0): Likewise.
! 	* config/arc/predicates.md (cc_set_register): Use CC_REG instead
! 	of numerical value.
! 	(noncommutative_operator): Check the availability of barrel
! 	shifter option.
  
! 2018-04-09  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/85284
! 	* tree-ssa-loop-niter.c (number_of_iterations_exit_assumptions):
! 	Only use the niter constraining form of simple_iv when the exit
! 	is always executed.
  
! 2018-04-09  Tom de Vries  <tom@codesourcery.com>
  
! 	PR target/84041
! 	* config/nvptx/nvptx.md (define_c_enum "unspecv"): Add UNSPECV_MEMBAR.
! 	(define_expand "*memory_barrier"): New define_expand.
! 	(define_insn "memory_barrier"): New insn.
  
! 2018-04-09  Andrey Belevantsev  <abel@ispras.ru>
  
! 	PR rtl-optimization/80463
! 	PR rtl-optimization/83972
! 	PR rtl-optimization/83480
  
! 	* sel-sched-ir.c (has_dependence_note_mem_dep): Take into account the
! 	correct producer for the insn.
! 	(tidy_control_flow): Fixup seqnos in case of debug insns.
  
! 2018-04-09  Andrey Belevantsev  <abel@ispras.ru>
  
! 	PR rtl-optimization/83913
  
! 	* sel-sched-ir.c (merge_expr_data): Choose the middle between two
! 	different sched-times when merging exprs.
  
! 2018-04-09  Andrey Belevantsev  <abel@ispras.ru>
  
! 	PR rtl-optimization/83962
  
! 	* sel-sched-ir.c (tidy_control_flow): Correct the order in which we call
! 	tidy_fallthru_edge and tidy_control_flow.
  
! 2018-04-09  Andrey Belevantsev  <abel@ispras.ru>
  
! 	PR rtl-optimization/83530
  
! 	* sel-sched.c (force_next_insn): New global variable.
! 	(remove_insn_for_debug): When force_next_insn is true, also leave only
! 	next insn in the ready list.
! 	(sel_sched_region): When the region wasn't scheduled, make another pass
! 	over it with force_next_insn set to 1.
  
! 2018-04-08  Monk Chiang  <sh.chiang04@gmail.com>
  
! 	* config.gcc (nds32le-*-*, nds32be-*-*): Add nds32/nds32_intrinsic.h
! 	into tm_file.
! 	* config/nds32/constants.md (unspec_volatile_element): Add enum values
! 	for interrupt control.
! 	* config/nds32/nds32-intrinsic.c: Implementation of intrinsic
! 	functions for interrupt control.
! 	* config/nds32/nds32-intrinsic.md: Likewise.
! 	* config/nds32/nds32_intrinsic.h: Likewise.
! 	* config/nds32/nds32.h (nds32_builtins): Likewise.
  
! 2018-04-08  Chung-Ju Wu  <jasonwucj@gmail.com>
  
! 	* config/nds32/nds32.c (nds32_init_machine_status,
! 	nds32_legitimate_index_p, nds32_legitimate_address_p): Consider
! 	strict_aligned_p field.
! 	(nds32_expand_to_rtl_hook): New function.
! 	(TARGET_EXPAND_TO_RTL_HOOK): Define.
! 	* config/nds32/nds32.h (machine_function): Add strict_aligned_p field.
  
! 2018-04-08  Kito Cheng  <kito.cheng@gmail.com>
! 	    Chung-Ju Wu  <jasonwucj@gmail.com>
  
! 	* config.gcc (nds32*-*-*): Check that n7 is valid to --with-cpu.
! 	* config/nds32/nds32-n7.md: New file.
! 	* config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N7.
! 	* config/nds32/nds32-pipelines-auxiliary.c: Implementation for n7
! 	pipeline.
! 	* config/nds32/nds32-protos.h: More declarations for n7 pipeline.
! 	* config/nds32/nds32.md (pipeline_model): Add n7.
! 	* config/nds32/nds32.opt (mcpu): Support n7 pipeline cpus.
! 	* config/nds32/pipelines.md: Include n7 settings.
  
! 2018-04-08  Kito Cheng  <kito.cheng@gmail.com>
! 	    Chung-Ju Wu  <jasonwucj@gmail.com>
  
! 	* config.gcc (nds32*-*-*): Check that e8 is valid to --with-cpu.
! 	* config/nds32/nds32-e8.md: New file.
! 	* config/nds32/nds32-opts.h (nds32-cpu_type): Add CPU_E8.
! 	* config/nds32/nds32-pipelines-auxiliary.c: Implementation for e8
! 	pipeline.
! 	* config/nds32/nds32-protos.h: More declarations for e8 pipeline.
! 	* config/nds32/nds32.md (pipeline_model): Add e8.
! 	* config/nds32/nds32.opt (mcpu): Support e8 pipeline cpus.
! 	* config/nds32/pipelines.md: Include e8 settings.
  
! 2018-04-08  Kito Cheng  <kito.cheng@gmail.com>
! 	    Chung-Ju Wu  <jasonwucj@gmail.com>
  
! 	* config.gcc (nds32*-*-*): Check that n6/n8/s8 are valid to --with-cpu.
! 	* config/nds32/nds32-n8.md: New file.
! 	* config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N6 and CPU_N8.
! 	* config/nds32/nds32-pipelines-auxiliary.c: Implementation for n8
! 	pipeline.
! 	* config/nds32/nds32-protos.h: More declarations for n8 pipeline.
! 	* config/nds32/nds32-utils.c: More implementations for n8 pipeline.
! 	* config/nds32/nds32.md (pipeline_model): Add n8.
! 	* config/nds32/nds32.opt (mcpu): Support n8 pipeline cpus.
! 	* config/nds32/pipelines.md: Include n8 settings.
  
! 2018-04-08  Kito Cheng  <kito.cheng@gmail.com>
! 	    Chung-Ju Wu  <jasonwucj@gmail.com>
  
! 	* config.gcc (nds32*): Add nds32-utils.o into extra_objs.
! 	* config/nds32/nds32-n9-2r1w.md: New file.
! 	* config/nds32/nds32-n9-3r2w.md: New file.
! 	* config/nds32/nds32-opts.h (nds32_cpu_type, nds32_mul_type,
! 	nds32_register_ports): New or modify for cpu n9.
! 	* config/nds32/nds32-pipelines-auxiliary.c: Implementation for n9
! 	pipeline.
! 	* config/nds32/nds32-protos.h: More declarations for n9 pipeline.
! 	* config/nds32/nds32-utils.c: New file.
! 	* config/nds32/nds32.h (TARGET_PIPELINE_N9, TARGET_PIPELINE_SIMPLE,
! 	TARGET_MUL_SLOW): Define.
! 	* config/nds32/nds32.md (pipeline_model): New attribute.
! 	* config/nds32/nds32.opt (mcpu, mconfig-mul, mconfig-register-ports):
! 	New options that support cpu n9.
! 	* config/nds32/pipelines.md: Include n9 settings.
! 	* config/nds32/t-nds32 (nds32-utils.o): Add dependency.
  
! 2018-04-08  Chung-Ju Wu  <jasonwucj@gmail.com>
  
! 	* config/nds32/nds32-md-auxiliary.c (output_cond_branch): Output align
! 	information if necessary.
! 	(output_cond_branch_compare_zero): Likewise.
! 	* config/nds32/nds32.c (nds32_adjust_insn_length): Consider align case.
! 	(nds32_target_alignment): Refine for alignment.
! 	* config/nds32/nds32.h (NDS32_ALIGN_P): Define.
! 	(FUNCTION_BOUNDARY): Modify.
! 	* config/nds32/nds32.md (call_internal, call_value_internal): Consider
! 	align case.
! 	* config/nds32/nds32.opt (malways-align, malign-functions): New.
  
! 2018-04-08  Monk Chiang  <sh.chiang04@gmail.com>
  
! 	* config/nds32/constants.md (unspec_volatile_element): Add values for
! 	TLB operation and data prefetch.
! 	* config/nds32/nds32-intrinsic.c: Implementation of intrinsic
! 	functions for TLB operation and data prefetch.
! 	* config/nds32/nds32-intrinsic.md: Likewise.
! 	* config/nds32/nds32_intrinsic.h: Likewise.
! 	* config/nds32/nds32.c (nds32_dpref_names): Likewise.
! 	(nds32_print_operand): Likewise.
! 	* config/nds32/nds32.h (nds32_builtins): Likewise.
  
! 2018-04-07  Thomas Koenig  <tkoenig@gcc.gnu.org>
! 	Andrew Pinski <pinsika@gcc.gnu.org>
  
! 	PR middle-end/82976
! 	* match.pd: Use constant_boolean_node of correct type instead of
! 	boolean_true_node or boolean_false_node for simplifying
! 	pointer comparisons to zero.
  
! 2018-04-07  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/80021
! 	* tree.c (verify_type_variant): Make error call in verify_variant_match
! 	translatable and remove final full stop.
  
! 2018-04-07  Chung-Ju Wu  <jasonwucj@gmail.com>
  
! 	* config/nds32/constants.md (unspec_volatile_element): Add
! 	UNSPEC_VOLATILE_EH_RETURN.
! 	* config/nds32/nds32-md-auxiliary.c (nds32_output_stack_push,
! 	nds32_output_stack_pop): Support dwarf exception handling process.
! 	* config/nds32/nds32-protos.h (nds32_dynamic_chain_address): Declare.
! 	* config/nds32/nds32.c (nds32_init_machine_status): Support dwarf
! 	exception handling process.
! 	(nds32_compute_stack_frame): Likewise.
! 	(nds32_return_addr_rtx): Likewise.
! 	(nds32_initial_elimination_offset): Likewise.
! 	(nds32_expand_prologue): Likewise.
! 	(nds32_expand_epilogue): Likewise.
! 	(nds32_dynamic_chain_address): New function.
! 	* config/nds32/nds32.h (machine_function): Add fields for dwarf
! 	exception handling.
! 	(DYNAMIC_CHAIN_ADDRESS): Define.
! 	(EH_RETURN_DATA_REGNO): Define.
! 	(EH_RETURN_STACKADJ_RTX): Define.
! 	* config/nds32/nds32.md (eh_return, nds32_eh_return): Implement
! 	patterns for dwarf exception handling.
  
! 2018-04-07  Chung-Ju Wu  <jasonwucj@gmail.com>
  
! 	* config/nds32/nds32.h: Clean up obsolete macros.
  
! 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
  
! 	* config/nds32/constants.md (unspec_element, unspec_volatile_element):
! 	Add enum values for particular instructions.
! 	* config/nds32/nds32-intrinsic.c: Implementation of expanding
! 	particular intrinsic functions.
! 	* config/nds32/nds32-intrinsic.md: Likewise.
! 	* config/nds32/nds32_intrinsic.h: Likewise.
! 	* config/nds32/nds32.h (nds32_builtins): Likewise.
! 	* config/nds32/nds32.md (type): Add pbsad and pbsada.
! 	(btst, ave): New patterns for particular instructions.
  
! 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
  
! 	* config/nds32/constants.md (unspec_element, unspec_volatile_element):
! 	Add enum values for atomic load/store and memory sync.
! 	* config/nds32/nds32-intrinsic.c: Implementation for atomic load/store
! 	and memory sync.
! 	* config/nds32/nds32-intrinsic.md: Likewise.
! 	* config/nds32/nds32_intrinsic.h: Likewise.
! 	* config/nds32/nds32.h (nds32_builtins): Likewise.
  
! 2018-04-07  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/85257
! 	* fold-const.c (native_encode_vector): If not all elts could fit
! 	and off is -1, return 0 rather than offset.
! 	* tree-ssa-sccvn.c (vn_reference_lookup_3): Pass
! 	(offseti - offset2) / BITS_PER_UNIT as 4th argument to
! 	native_encode_expr.  Verify len * BITS_PER_UNIT >= maxsizei.  Don't
! 	adjust buffer in native_interpret_expr call.
  
! 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
  
! 	* config/nds32/constants.md (unspec_volatile_element): Add cache
! 	control enum values.
! 	* config/nds32/nds32-intrinsic.c: Add cache control expand functions.
! 	* config/nds32/nds32-intrinsic.md: Add cache control patterns.
! 	* config/nds32/nds32.c (nds32_cctl_names): New.
! 	(nds32_print_operand): Handle cache control register names.
! 	* config/nds32/nds32.h (nds32_builtins): New enum values.
! 	* config/nds32/nds32_intrinsic.h: Add cache control enum types and
! 	macros.
! 	* config/nds32/nds32.md (type): Add mmu.
! 	* config/nds32/pipelines.md (simple_insn): Add mmu.
  
! 2018-04-07  Chung-Ju Wu  <jasonwucj@gmail.com>
  
! 	* config/nds32/nds32.md (type): Remove call.
! 	* config/nds32/pipelines.md (simple_insn): Likewise.
  
! 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
  
! 	* config/nds32/constants.md (unspec_volatile_element): Add
! 	UNSPEC_VOLATILE_FMFCSR, UNSPEC_VOLATILE_FMTCSR and
! 	UNSPEC_VOLATILE_FMFCFG.
! 	* config/nds32/nds32-intrinsic.c (bdesc_noarg): New builtin
! 	description for fmfcfg and fmfcsr.
! 	(bdesc_1arg): Add fmtcsr.
! 	(bdesc_2arg): Add fcpynss, fcpyss, fcpynsd and fcpysd.
! 	(nds32_expand_builtin_impl): Deal with FPU intrinsic functions.
! 	* config/nds32/nds32-intrinsic.md (unspec_fcpynsd, unspec_fcpysd,
! 	unspec_fcpynss, unspec_fcpysd, unspec_fcpyss, unspec_fmfcsr,
! 	unspec_fmfcfg): New patterns.
! 	* config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_FMFCFG,
! 	NDS32_BUILTIN_FMFCSR, NDS32_BUILTIN_FMTCSR, NDS32_BUILTIN_FCPYNSS,
! 	NDS32_BUILTIN_FCPYSS,NDS32_BUILTIN_FCPYNSD and NDS32_BUILTIN_FCPYSD.
! 	* config/nds32/nds32_intrinsic.h (__nds32__fcpynsd, __nds32__fcpynss,
! 	__nds32__fcpysd, __nds32__fcpyss, __nds32__fmfcsr, __nds32__fmtcsr,
! 	__nds32__fmfcfg): Define.
  
! 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
  
! 	* config/nds32/nds32.c (nds32_intrinsic_register_names): Add more
! 	intrinsic register names.
! 	* config/nds32/nds32_intrinsic.h (nds32_intrinsic_registers): Add more
! 	intrinsic register enum values and macros.
  
! 2018-04-07  Chung-Ju Wu  <jasonwucj@gmail.com>
  
! 	* config/nds32/nds32.c (nds32_legitimate_index_p): Modify condition
! 	for load/store addressing form.
! 	(nds32_print_operand_address): Likewise.
  
! 2018-04-06  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR target/85196
! 	* config/sparc/sparc.c (sparc_expand_move): Deal with symbolic operands
! 	based on LABEL_REF.  Remove useless assertion.
! 	(pic_address_needs_scratch): Fix formatting.
! 	(sparc_legitimize_pic_address): Minor tweaks.
! 	(sparc_delegitimize_address): Adjust assertion accordingly.
! 	* config/sparc/sparc.md (movsi_pic_label_ref): Change label_ref_operand
! 	into symbolic_operand.
! 	(movsi_high_pic_label_ref): Likewise.
! 	(movsi_lo_sum_pic_label_ref): Likewise.
! 	(movdi_pic_label_ref): Likewise.
! 	(movdi_high_pic_label_ref): Likewise.
! 	(movdi_lo_sum_pic_label_ref): Likewise.
  
! 2018-04-06  Amaan Cheval  <amaan.cheval@gmail.com>
  
! 	* config.gcc (x86_64-*-rtems*): Add rtems.h to tm_file for
! 	custom LIB_SPEC setup.
  
! 2018-04-06  Ruslan Bukin  <br@bsdpad.com>
! 	    Kito Cheng  <kito.cheng@gmail.com>
  
! 	* config.gcc (riscv*-*-freebsd*): Add RISC-V FreeBSD support.
! 	* config/riscv/freebsd.h: New.
  
! 2018-04-06  Chung-Ju Wu  <jasonwucj@gmail.com>
  
! 	* config/nds32/nds32.c (nds32_adjust_insn_length): Refine.
! 	* config/nds32/nds32.h (ADJUST_INSN_LENGTH): Change the location in
! 	file.
  
! 2018-04-06  Chung-Ju Wu  <jasonwucj@gmail.com>
! 	    Kito Cheng  <kito.cheng@gmail.com>
  
! 	* config/nds32/nds32-md-auxiliary.c (nds32_output_return,
! 	nds32_output_call, nds32_symbol_binds_local_p): New functions.
! 	* config/nds32/nds32-protos.h (nds32_output_call,
! 	nds32_output_return): Declare.
! 	* config/nds32/nds32.md: Refine all the call and return patterns.
  
! 2018-04-06  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR debug/85252
! 	* dwarf2out.c (rtl_for_decl_init): For STRING_CST initializer only
! 	build CONST_STRING if TYPE_MAX_VALUE is non-NULL and is INTEGER_CST.
  
! 	PR rtl-optimization/84872
! 	* cfgloopmanip.c (create_preheader): Use make_forwarder_block even if
! 	nentry == 1 when CP_FALLTHRU_PREHEADERS and single_entry is
! 	EDGE_CROSSING edge.
  
! 2018-04-06  Tamar Christina  <tamar.christina@arm.com>
  
! 	* expr.c (copy_blkmode_to_reg): Revert 254862.
! 	* doc/sourcebuild.texi (word_mode_no_slow_unalign): Likewise.
  
! 2018-04-06  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/85244
! 	* tree-dfa.c (get_ref_base_and_extent): Reset seen_variable_array_ref
! 	after seeing a component reference with an adjacent field.  Treat
! 	refs to arrays at struct end of external decls similar to
! 	refs to unconstrained commons.
  
! 2018-04-06  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR sanitizer/85213
! 	* fold-const.c (twoval_comparison_p): Remove SAVE_P argument and don't
! 	look through SAVE_EXPRs with non-side-effects argument.  Adjust
! 	recursive calls.
! 	(fold_comparison): Adjust twoval_comparison_p caller, don't handle
! 	save_p here.
  
! 2018-04-06  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/85180
! 	* alias.c (find_base_term): New wrapper around find_base_term
! 	unwinding CSELIB_VAL_PTR changes.
! 	(find_base_term): Do not restore CSELIB_VAL_PTR during the
! 	recursion.
  
! 2018-04-06  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
  
! 	* config/s390/s390.c (s390_z10_optimize_cmp): Expand dedicated NOP
! 	instructions.
! 	* config/s390/s390.md (UNSPECV_NOP_LR_0, UNSPECV_NOP_LR_1): New
! 	constant definitions.
! 	("nop"): lr 0,0 -> nopr r0
! 	("nop_lr0", "nop_lr1"): New insn definitions.
  
! 2018-04-06  Chung-Ju Wu  <jasonwucj@gmail.com>
  
! 	* config/nds32/nds32.md (*stack_push, *stack_pop): Use
! 	NDS32_V3PUSH_AVAILABLE_P macro.
  
! 2018-04-06  Monk Chiang  <sh.chiang04@gmail.com>
! 	    Chung-Ju Wu  <jasonwucj@gmail.com>
  
! 	* config.gcc (nds32*-*-*): Add v2j v3f v3s checking.
! 	(nds32*-*-*): Add float and fpu_config into supported_defaults.
! 	* common/config/nds32/nds32-common.c (TARGET_DEFAULT_TARGET_FLAGS):
! 	Include TARGET_DEFAULT_FPU_ISA and TARGET_DEFAULT_FPU_FMA.
! 	* config/nds32/constants.md (unspec_element): Add UNSPEC_COPYSIGN,
! 	UNSPEC_FCPYNSD, UNSPEC_FCPYNSS, UNSPEC_FCPYSD and UNSPEC_FCPYSS.
! 	* config/nds32/constraints.md: New constraints and checking for hard
! 	float configuration.
! 	* config/nds32/iterators.md: New mode iterator and attribute for hard
! 	float configuration.
! 	* config/nds32/nds32-doubleword.md: Use hard float alternatives and
! 	patterns.
! 	* config/nds32/nds32-fpu.md: New file.
! 	* config/nds32/nds32-md-auxiliary.c: New functions and checkings to
! 	deal with hard float code generation.
! 	* config/nds32/nds32-opts.h (nds32_arch_type): Add ARCH_V3F and
! 	ARCH_V3S.
! 	(abi_type, float_reg_number): New enum type.
! 	* config/nds32/nds32-predicates.c: New predicates for hard float.
! 	* config/nds32/nds32-protos.h: Declare functions for hard float.
! 	* config/nds32/nds32.c: Implementation for hard float configuration.
! 	* config/nds32/nds32.h: Definitions for hard float configuration.
! 	* config/nds32/nds32.md: Include hard float machine description and
! 	modify patterns for hard float configuration.
! 	* config/nds32/nds32.opt: New options for hard float configuration.
! 	* config/nds32/predicates.md: New predicates for hard float
! 	configuration.
  
! 2018-04-06  Kuan-Lin Chen  <kuanlinchentw@gmail.com>
  
! 	* common/config/nds32/nds32-common.c
! 	(nds32_option_optimization_table): Enable -mreleax-hint by default.
  
! 2018-04-05  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/85195
! 	* match.pd (BIT_FIELD_REF CONSTRUCTOR@0 @1 @2): Use view_convert around
! 	CONSTRUCTOR_ELT (ctor, ...)->value.
  
! 2018-04-05  Uros Bizjak  <ubizjak@gmail.com>
  
! 	PR target/85193
! 	* config/i386/i386.md (define_attr "memory"): Handle rotate1 type.
  
! 2018-04-05  Tom de Vries  <tom@codesourcery.com>
  
! 	PR target/85204
! 	* config/nvptx/nvptx.c (nvptx_single): Fix neutering of bb with only
! 	cond jump.
  
! 2018-04-05  Shiva Chen  <shiva0217@gmail.com>
! 	    Kito Cheng  <kito.cheng@gmail.com>
  
! 	* config/nds32/constraints.md (U33): Fine-tune checking condition.
! 	* config/nds32/nds32-md-auxiliary.c (nds32_mem_format): Ditto.
! 	* config/nds32/nds32.h (nds32_16bit_address_type): Add
! 	ADDRESS_POST_MODIFY_LO_REG_IMM3U.
  
! 2018-04-05  Shiva Chen  <shiva0217@gmail.com>
! 	    Kito Cheng  <kito.cheng@gmail.com>
  
! 	* config/nds32/constraints.md (Ufe): New memory constraint.
! 	* config/nds32/nds32-md-auxiliary.c (nds32_mem_format,
! 	nds32_output_16bit_load): Consider r8 register for lwi45.fe format.
! 	* config/nds32/nds32.c (nds32_print_operand): Output lwi45.fe
! 	operands.
! 	* config/nds32/nds32.h (nds32_16bit_address_type): Add ADDRESS_R8_IMM7U.
! 	* config/nds32/nds32.md (*mov<mode>): Adjust pattern.
  
! 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
  
! 	* config/nds32/nds32.md: Use optimize_size in the condition for
! 	alu-shift instructions.
  
! 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
  
! 	* config/nds32/nds32.md (divsi4, udivsi4): New patterns.
  
! 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
  
! 	* config/nds32/nds32.md (negsi2): Refine pattern.
  
! 2018-04-05  Kito Cheng  <kito.cheng@gmail.com>
! 	    Chung-Ju Wu  <jasonwucj@gmail.com>
  
! 	* config/nds32/iterators.md (shift_rotate): New code iterator.
! 	(shift): New code attribute.
! 	* config/nds32/nds32-md-auxiliary.c (nds32_expand_constant): New.
! 	* config/nds32/nds32-protos.h (nds32_expand_constant): Declare.
! 	* config/nds32/nds32.c (nds32_print_operand): Deal with more cases.
! 	* config/nds32/nds32.md (addsi3, *add_srli): Refine implementation for
! 	bit-wise operations.
! 	(andsi3, *andsi3): Ditto.
! 	(iorsi3, *iorsi3, *or_slli, *or_srli): Ditto.
! 	(xorsi3, *xorsi3, *xor_slli, *xor_srli): Ditto.
! 	(<shift>si3, *ashlsi3, *ashrsi3, *lshrsi3, *rotrsi3): Ditto.
! 	* config/nds32/predicates.md (nds32_rimm5u_operand, nds32_and_operand,
! 	nds32_ior_operand, nds32_xor_operand): New predicates.
  
! 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
  
! 	* config/nds32/nds32.md (add<mode>3, sub<mode>3): Rename to ...
! 	(addsi3, subsi3): ... this.
  
! 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
  
! 	* config/nds32/nds32.md (*sub_srli, *and_slli): Fine-tune predicator.
  
! 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
  
! 	* config/nds32/nds32.md: Adjust indention.
  
! 2018-04-05  Kito Cheng  <kito.cheng@gmail.com>
  
! 	* config/nds32/nds32.md (feature): New attribute.
  
! 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
  
! 	* config/nds32/nds32.md (subtype): New attribute.
  
! 2018-04-04  Thomas Preud'homme  <thomas.preudhomme@arm.com>
  
! 	PR target/85203
! 	* config/arm/arm-builtins.c (arm_expand_builtin): Change
! 	expansion to perform a bitwise AND of the argument followed by a
! 	boolean negation of the result.
  
! 2018-04-04  Peter Bergner  <bergner@vnet.ibm.com>
  
! 	PR rtl-optimization/84878
! 	* ddg.c (add_cross_iteration_register_deps): Use DF_REF_BB to determine
! 	the basic block.  Assert the use reference is not artificial and that
! 	it has an associated insn.
  
! 2018-04-04  Michael Matz  <matz@suse.de>
  
! 	* builtins.c (compute_objsize): Pass correct operand
! 	to array_at_struct_end_p.
  
! 2018-04-04  Richard Biener  <rguenther@suse.de>
  
! 	PR lto/85176
! 	* dwarf2out.c (dwarf2out_register_external_die): Peel namespaces
! 	from contexts for DINFO_LEVEL_TERSE and below.
  
! 2018-04-04  Kito Cheng  <kito.cheng@gmail.com>
  
! 	* config/nds32/nds32-doubleword.md (move_<mode>): Require
! 	resiter_operand condition.
! 	* config/nds32/nds32.md (*move<mode>): Ditto.
  
! 2018-04-04  Kito Cheng  <kito.cheng@gmail.com>
! 	    Monk Chiang  <sh.chiang04@gmail.com>
  
! 	* config/nds32/nds32.md (movmisalign<mode>): New pattern.
  
! 2018-04-04  Chung-Ju Wu  <jasonwucj@gmail.com>
  
! 	* config/nds32/nds32.md (movqi, movhi): Merge into mov<mode>.
  
! 2018-04-04  Chung-Ju Wu  <jasonwucj@gmail.com>
! 	    Kito Cheng  <kito.cheng@gmail.com>
  
! 	* config/nds32/nds32-md-auxiliary.c (nds32_inverse_cond_code,
! 	nds32_cond_code_str, output_cond_branch,
! 	output_cond_branch_compare_zero, nds32_expand_cbranch,
! 	nds32_expand_cstore, nds32_expand_movcc,
! 	nds32_output_cbranchsi4_equality_zero,
! 	nds32_output_cbranchsi4_equality_reg,
! 	nds32_output_cbranchsi4_equality_reg_or_const_int,
! 	nds32_output_cbranchsi4_greater_less_zero: New functions.
! 	* config/nds32/nds32-protos.h (nds32_expand_cbranch,
! 	nds32_expand_cstore, nds32_expand_movcc,
! 	nds32_output_cbranchsi4_equality_zero,
! 	nds32_output_cbranchsi4_equality_reg,
! 	nds32_output_cbranchsi4_equality_reg_or_const_int,
! 	nds32_output_cbranchsi4_greater_less_zero): Declare.
! 	* config/nds32/predicates.md (nds32_movecc_comparison_operator,
! 	nds32_rimm11s_operand): New predicates.
! 	* config/nds32/nds32.h (nds32_expand_result_type): New enum type.
! 	* config/nds32/nds32.md: Rewrite all the branch and conditional move
! 	patterns.
  
! 2018-04-04  Kito Cheng  <kito.cheng@gmail.com>
  
! 	* config/nds32/nds32-doubleword.md: Refine all the instruction type.
! 	* config/nds32/nds32.md: Ditto.
! 	* config/nds32/pipelines.md: Ditto.
  
! 2018-04-04  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/85168
! 	* tree-ssa-sccvn.c (vn_reference_maybe_forwprop_address): Avoid
! 	propagating abnormals.
  
! 2018-04-04  Chung-Ju Wu  <jasonwucj@gmail.com>
  
! 	* config/nds32/nds32.md (enabled): Use yes/no for this attribute.
  
! 2018-04-04  Chung-Ju Wu  <jasonwucj@gmail.com>
! 	    Kito Cheng  <kito.cheng@gmail.com>
  
! 	* config/nds32/nds32-md-auxiliary.c (nds32_long_call_p): New function.
! 	* config/nds32/nds32-protos.h (nds32_long_call_p): Declare.
! 	* config/nds32/nds32.c (nds32_function_ok_for_sibcall): New function.
! 	(TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
! 	* config/nds32/nds32.md (sibcall_internal): New.
! 	(sibcall_register): Remove.
! 	(sibcall_immediate): Remove.
! 	(sibcall_value_internal): New.
! 	(sibcall_value_register): Remove.
! 	(sibcall_value_immediate): Remove.
! 	* config/nds32/predicates.md (nds32_general_register_operand): New.
! 	(nds32_call_address_operand): New.
  
! 2018-04-03  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR rtl-optimization/85167
! 	* shrink-wrap.c (move_insn_for_shrink_wrap): Don't set bb_uses and
! 	bb_defs if *split_p, instead preinitialize it to NULL.
  
! 	PR tree-optimization/85156
! 	* builtins.c (fold_builtin_expect): Use save_expr on arg1 to avoid
! 	evaluating the argument multiple times.
  
! 2018-04-03  Bill Schmidt  <wschmidt@linux.ibm.com>
  
! 	* config/rs6000/emmintrin.h (_mm_cvtpd_epi32): Use __vector rather
! 	than vector.
! 	(_mm_cvtpd_ps): Likewise.
! 	(_mm_cvttpd_epi32): Likewise.
! 	* config/rs6000/mmintrin.h (_mm_unpacklo_pi8): Likewise.
! 	* config/rs6000/xmmintrin.h: For strict-ANSI C++ or C11, undefine
! 	vector, pixel, and bool following altivec.h include.
  
! 2018-04-03  Martin Sebor  <msebor@redhat.com>
  
! 	* doc/extend.texi (Common Function Attributes): Clarify.
! 	(const attribute): Likewise.
! 	(pure attribute): Likewise.
  
! 2018-04-03  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/85169
! 	* config/i386/i386.c (ix86_expand_vector_set): Use
! 	HOST_WIDE_INT_1U << elt instead of 1 << elt.  Formatting fix.
  
! 2018-04-03  Uros Bizjak  <ubizjak@gmail.com>
  
! 	* config/i386/i386.c (emit_i387_cw_initialization): Always use logic
! 	instructions when changing rounding bits to preserve precision bits
! 	in the x87 control word.
  
! 2018-04-03  Martin Liska  <mliska@suse.cz>
  
! 	PR tree-optimization/82491
! 	* rtl.h (strip_offset_and_add): Replace += suboffset with
! 	poly_uint64 () + suboffset.
  
! 2018-03-29  Martin Liska  <mliska@suse.cz>
! 	    Martin Jambor  <mjambor@suse.cz>
  
! 	PR ipa/84947
! 	* ipa-cp.c (propagate_bits_across_jump_function): Bail out if
! 	param_type is not an integral or pointer type.
  
! 2018-04-03  Richard Biener  <rguenther@suse.de>
  
! 	* sese.h (recompute_all_dominators): Remove.
  
! 2018-04-02  Martin Sebor  <msebor@redhat.com>
  
! 	* doc/invoke.texi (-Wrestrict): Fix typos.
  
! 2018-04-02  Jim Wilson  <jimw@sifive.com>
  
! 	* config/riscv/riscv.h (SHIFT_COUNT_TRUNCATED): Set to zero.
! 	* config/riscv/riscv.md (<optab>si3): Use QImode shift count.
! 	(<optab>di3, <optab>si3_extend): Likewise.
! 	(<optab>si3_mask, <optab>si3_mask_1): New.
! 	(<optab>di3_mask, <optab>di3_mask_1): New.
! 	(<optab>si3_extend_mask, <optab>si3_extend_mask_1): New.
! 	(lshrsi3_zero_extend_1): Use VOIDmode shift count.
! 	* config/riscv/sync.md (atomic_test_and_set): Emit QImode shift count.
  
! 2018-04-02  Gerald Pfeifer  <gerald@pfeifer.com>
  
! 	* doc/cpp.texi (Variadic Macros): Fix line continuation in an
! 	example.
  
! 2018-04-02  Chung-Ju Wu  <jasonwucj@gmail.com>
  
! 	* config/nds32/nds32.c (TARGET_CANONICALIZE_COMPARISON): Define.
! 	(nds32_canonicalize_comparison): New function.
  
! 2018-04-01  Chung-Ju Wu  <jasonwucj@gmail.com>
! 	    Kito Cheng  <kito.cheng@gmail.com>
! 	    Kuan-Lin Chen  <kuanlinchentw@gmail.com>
  
! 	* config.gcc (nds32): Add nds32-relax-opt.o into extra_objs.
! 	* config/nds32/constants.md (unspec_volatile_element): Add
! 	UNSPEC_VOLATILE_RELAX_GROUP.
! 	* config/nds32/nds32-relax-opt.c: New file.
! 	* config/nds32/nds32-predicates.c
! 	(nds32_symbol_load_store_p): New function.
! 	* config/nds32/nds32-protos.h
! 	(nds32_symbol_load_store_p): Declare function.
! 	(make_pass_nds32_relax_opt): Declare new rtl pass function.
! 	* config/nds32/nds32.c
! 	(nds32_register_pass): New function to register pass.
! 	(nds32_register_passes): New function to register passes.
! 	* config/nds32/nds32.md (relax_group): New pattern.
! 	* config/nds32/nds32.opt (mrelax-hint): New option.
! 	* config/nds32/t-nds32 (nds32-relax-opt.o): New dependency.
  
! 2018-04-01  Kito Cheng  <kito.cheng@gmail.com>
  
! 	* config/nds32/t-nds32: Modify files dependency.
  
! 2018-04-01  Chung-Ju Wu  <jasonwucj@gmail.com>
  
! 	* config/nds32/nds32.h (FUNCTION_PROFILER): Output newline character.
! 	(PROFILE_HOOK): Define its implementation.
  
! 2018-04-01  Chung-Ju Wu  <jasonwucj@gmail.com>
  
! 	* config/nds32/nds32.h (WCHAR_TYPE, WCHAR_TYPE_SIZE): Use unsigned int
! 	type and 32-bit size.
  
! 2018-04-01  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/85090
! 	* config/i386/sse.md (V): Add V64QI and V32HI for TARGET_AVX512F.
! 	(V_128_256): New mode iterator.
! 	(*avx512dq_vextract<shuffletype>64x2_1 splitter): New define_split.
! 	(*avx512f_vextract<shuffletype>32x4_1 splitter): Likewise.
! 	(xop_pcmov_<mode><avxsizesuffix>): Use V_128_256 mode iterator instead
! 	of V.
! 	* config/i386/i386.c (ix86_expand_vector_set): Improve V32HImode and
! 	V64QImode expansion for !TARGET_AVX512BW && TARGET_AVX512F.
  
! 2018-03-31  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	PR target/83315
! 	* config/rs6000/xmmintrin.h (_mm_set_ps, _mm_max_ps): Handle (quiet)
! 	NaN inputs correctly.
  
! 2018-03-30  Peter Bergner  <bergner@vnet.ibm.com>
  
! 	PR target/80546
! 	* config/rs6000/vsx.md (??r): New mode attribute.
! 	(*vsx_mov<mode>_64bit): Use it.
! 	(*vsx_mov<mode>_32bit): Likewise.
  
! 2018-03-30  Martin Sebor  <msebor@redhat.com>
  
! 	PR tree-optimization/84818
! 	* builtins.c (check_access): Use warning_n.
  
! 2018-03-30  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
  
! 	PR target/83822
! 	* config/rs6000/rs6000-string.c (expand_compare_loop): Fix redundant
! 	condition.
! 	* config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Fix redundant
! 	condition.
  
! 2018-03-30  Julia Koval  <julia.koval@intel.com>
  
! 	PR target/84413
! 	* x86-tune.def (movx, partial_reg_dependency): Enable for
! 	m_SKYLAKE_AVX512.
  
! 2018-03-29  Vladimir Makarov  <vmakarov@redhat.com>
  
! 	PR inline-asm/84985
! 	* lra-constraints.c (process_alt_operands): Move setting
! 	this_alternative_matches below.
  
! 2018-03-29  Martin Liska  <mliska@suse.cz>
  
! 	PR lto/84995.
! 	* doc/invoke.texi: Document how LTO works with debug info.
! 	Describe auto-load support of binutils.  Mention 'x86-64'
! 	as valid option value of -march option.
  
! 2018-03-29  Jakub Jelinek  <jakub@redhat.com>
  
! 	* config/i386/sse.md (<avx512>_blendm<mode>): Use <sseintprefix>.
  
! 	PR c/85094
! 	* fold-const.c (operand_equal_p): Handle DEBUG_BEGIN_STMT.
! 	For STATEMENT_LIST, pass down OEP_LEXICOGRAPHIC and maybe
! 	OEP_NO_HASH_CHECK for recursive call, to avoid exponential
! 	checking.
  
! 2018-03-28  Peter Bergner  <bergner@vnet.ibm.com>
  
! 	PR target/84912
! 	* config/rs6000/rs6000.h (RS6000_BTM_POWERPC64): New define.
! 	(RS6000_BTM_COMMON): Add RS6000_BTM_POWERPC64.
! 	* config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Add support
! 	for RS6000_BTM_POWERPC64.
! 	(rs6000_invalid_builtin): Add handling for RS6000_BTM_POWERPC64
! 	(rs6000_builtin_mask_names): Add RS6000_BTM_POWERPC64.
! 	* config/rs6000/rs6000-builtin.def (BU_P7_POWERPC64_MISC_2): New macro
! 	definition.
! 	(DIVDE): Use it.
! 	(DIVDEU): Likewise.
  
! 2018-03-28 Carl Love  <cel@us.ibm.com>
  
! 	Revert
! 	2017-09-27  Carl Love  <cel@us.ibm.com>
  
! 	* config/rs6000/rs6000-builtin.def (BU_FP_1MISC_1): Add define macro.
! 	(FCTID, FCTIW): Add BU_FP_MISC_1 macro expansion for builtins.
! 	* config/rs6000/rs6000.md (lrintsfsi2): Add define_insn for the
! 	fctiw instruction.
  
! 2018-03-28  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
  
! 	* config/rs6000/xmmintrin.h (_mm_max_pi16): Use __vector __bool
! 	instead of __vector bool.
! 	(_mm_max_pu8): Likewise.
! 	(_mm_min_pi16): Likewise.
  
! 2018-03-28  Peter Bergner  <bergner@vnet.ibm.com>
  
! 	PR target/84912
! 	* config/rs6000/rs6000-builtin.def (DIVWEO): Delete macro expansion.
! 	(DIVWEUO): Likewise.
! 	(DIVDEO): Likewise.
! 	(DIVDEUO): Likewise.
! 	* config/rs6000/rs6000.c (builtin_function_type): Remove support for
! 	DIVWEUO and DIVDEUO.
! 	* config/rs6000/rs6000.md (UNSPEC_DIVEO, UNSPEC_DIVEUO): Delete unspecs.
! 	(UNSPEC_DIV_EXTEND): Remove deleted unspecs.
! 	(div_extend): Likewise.
! 	* doc/extend.texi (__builtin_divweo): Remove documentation for deleted
! 	builtin function.
! 	(__builtin_divweuo): Likewise.
! 	(__builtin_divdeo): Likewise.
! 	(__builtin_divdeuo): Likewise.
  
! 2018-03-28  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/85095
! 	* config/i386/i386.md (*add<mode>3_carry_0, *addsi3_carry_zext_0,
! 	*sub<mode>3_carry_0, *subsi3_carry_zext_0): New patterns.
  
! 	PR tree-optimization/82004
! 	* gimple-match-head.c (optimize_pow_to_exp): New function.
! 	* match.pd (pow(C,x) -> exp(log(C)*x)): Wrap with #if GIMPLE.
! 	Don't fold to exp if optimize_pow_to_exp is false.
  
! 2018-03-28  Martin Liska  <mliska@suse.cz>
  
! 	PR other/84819
! 	* calls.c (initialize_argument_information): Fix trailing space.
! 	* common.opt: Fix typo and provide better explanation for
! 	-fsanitize-coverage option.
! 	* config/i386/i386.opt: Fix typo.
  
! 2018-03-28  Jakub Jelinek  <jakub@redhat.com>
! 	    Martin Liska  <mliska@suse.cz>
  
! 	PR sanitizer/85081
! 	* gimplify.c (asan_poison_variable): Don't do the check for
! 	gimplify_omp_ctxp here.
! 	(gimplify_decl_expr): Do it here.
! 	(gimplify_target_expr): Likewise.
  
! 2018-03-28  Martin Liska  <mliska@suse.cz>
  
! 	PR target/84988
! 	* config/i386/i386.c (ix86_function_arg_advance): Do not call
! 	chkp_type_bounds_count if MPX is not enabled.
  
! 2018-03-27  Chung-Ju Wu  <jasonwucj@gmail.com>
  
! 	* config/nds32/nds32.h (BRANCH_COST): Adjust cost.
  
! 2018-03-27  Michael Meissner  <meissner@linux.vnet.ibm.com>
  
! 	PR target/84914
! 	* config/rs6000/rs6000.c (create_complex_muldiv): New helper
! 	function to create the function decl for complex long double
! 	multiply and divide for -mabi=ieeelongdouble.
! 	(init_float128_ieee): Call it.
  
! 2018-03-27  H.J. Lu  <hongjiu.lu@intel.com>
  
! 	PR target/85044
! 	* config/i386/i386.c (ix86_trampoline_init): Insert ENDBR for
! 	-fcf-protection=branch -mibt.
! 	* config/i386/i386.h (TRAMPOLINE_SIZE): Increased by 4 bytes.
  
! 2018-03-27  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
  
! 	PR target/81863
! 	* config/arm/arm.c (arm_valid_symbolic_address): Handle arm_word_relocations
  
! 2018-03-27  Cesar Philippidis  <cesar@codesourcery.com>
  
! 	PR target/85056
! 	* config/nvptx/nvptx.c (nvptx_assemble_decl_begin): Add '[]' to
! 	extern array declarations.
  
! 2018-03-27  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/84067
! 	* match.pd ((A * C) +- (B * C) -> (A+-B) * C): Guard with
! 	explicit single_use checks.
  
! 2018-03-27  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/85082
! 	* tree-ssa-sccvn.c (vn_reference_lookup_or_insert_for_pieces):
! 	Valueize the VUSE.
  
! 2018-03-27  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
  
! 	* config.gcc (aarch64*-*-linux*): New TARGET_DEFAULT_ASYNC_UNWIND_TABLES
! 	* common/config/aarch64/aarch64-common.c (aarch64_optimization_table[]):
! 	Turn on fasynchronous-unwind-tables and funwind-tables.
  
! 2018-03-26  Uros Bizjak  <ubizjak@gmail.com>
  
! 	PR target/85073
! 	* config/i386/i386.md (*bmi_blsr_<mode>_cmp): New insn pattern.
! 	(*bmi_blsr_<mode>_ccz): Ditto.
  
! 2018-03-26  Tom de Vries  <tom@codesourcery.com>
  
! 	PR tree-optimization/85063
! 	* omp-general.c (offloading_function_p): New function.  Factor out
! 	of ...
! 	* omp-offload.c (pass_omp_target_link::gate): ... here.
! 	* omp-general.h (offloading_function_p): Declare.
! 	* tree-switch-conversion.c (build_one_array): Mark CSWTCH.x variable
! 	with attribute omp declare target for offloading functions.
  
! 2018-03-24  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	PR tree-optimization/84005
! 	* tree-data-ref.h (get_base_for_alignment): Declare.
! 	* tree-data-ref.c (get_base_for_alignment_1): New function.
! 	(get_base_for_alignment): Likewise.
! 	* tree-vect-data-refs.c (vect_compute_data_ref_alignment): Use
! 	get_base_for_alignment to find a suitable base object, instead
! 	of always using drb->base_address.
  
! 2018-03-23  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR inline-asm/85022
! 	* emit-rtl.c (init_emit_regs): Indicate that VOIDmode MEMs don't have
! 	known size by default.
  
! 2018-03-23  Vladimir Makarov  <vmakarov@redhat.com>
  
! 	PR inline-asm/85030
! 	* lra-constraints.c (process_alt_operands): Don't match BLKmode
! 	and non BLKmode operands.
  
! 2018-03-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	PR target/85026
! 	* config/arm/arm.md (unaligned_loadhis): Remove first alternative.
! 	Clean up attributes.
  
! 2018-03-23  Richard Biener  <rguenther@suse.de>
  
! 	PR debug/85020
! 	* dwarf2out.c (rtl_for_decl_location): Do not generate RTL early when
! 	we are going to emit early debug for LTO.
  
! 2018-03-23  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR inline-asm/85034
! 	* function.c (match_asm_constraints_1): Don't optimize if input
! 	doesn't satisfy general_operand predicate for output's mode.
  
! 	PR inline-asm/85022
! 	* alias.c (write_dependence_p): Don't require for x_canonicalized
! 	non-VOIDmode if x has VOIDmode.
  
! 	PR sanitizer/85029
! 	* sanopt.c (maybe_optimize_ubsan_ptr_ifn): If DECL_REGISTER (base),
! 	just don't try to optimize it rather than assert it never happens.
  
! 2018-03-22  Kelvin Nilsen  <kelvin@gcc.gnu.org>
  
! 	* config/rs6000/rs6000-builtin.def: Remove various BU_ALTIVEC_X
! 	macro expansions for definition of ST_INTERNAL_<mode> and
! 	LD_INTERNAL_<mode> builtins.
! 	* config/rs6000/rs6000-protos.h (rs6000_address_for_altivec):
! 	Remove prototype.
! 	* config/rs6000/rs6000.c (altivec_expand_ld_builtin): Delete this
! 	function.
! 	(altivec_expand_st_builtin): Likewise.
! 	(altivec_expand_builtin): Remove calls to deleted functions.
! 	(rs6000_address_for_altivec): Delete this function.
! 	* config/rs6000/vector.md: Remove expands for
! 	vector_altivec_load_<mode> and vector_altivec_store_<mode>.
  
! 2018-03-22  Sudakshina Das  <sudi.das@arm.com>
  
! 	PR target/84826
! 	* config/arm/arm.h (machine_function): Add static_chain_stack_bytes.
! 	* config/arm/arm.c (arm_compute_static_chain_stack_bytes): Avoid
! 	re-computing once computed.
! 	(arm_expand_prologue): Compute machine->static_chain_stack_bytes.
! 	(arm_init_machine_status): Initialize
! 	machine->static_chain_stack_bytes.
  
! 2018-03-22  Kelvin Nilsen  <kelvin@gcc.gnu.org>
  
! 	PR target/84760
! 	* doc/extend.texi: Add four new prototypes for vec_ld.
! 	* config/rs6000/rs6000-builtin.def (LVX_V1TI): Reorder symbol
! 	definitions for more logical presentation.
! 	* config/rs6000/rs6000-c.c: (altivec_overloaded_builtins): Add
! 	entries for V1TI variants of __builtin_altivec_ld builtin.
! 	* config/rs6000/rs6000.c: (altivec_expand_lv_builtin): Add test and
! 	handling of V1TI variant of LVX icode pattern.
! 	(altivec_expand_builtin): Add case for ALTIVEC_BUILTIN_LVX_V1TI.
! 	(rs6000_gimple_fold_builtin): Likewise.
! 	(altivec_init_builtins): Add code to define
! 	__builtin_altivec_lvx_v1ti function.
  
! 2018-03-22  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR inline-asm/84941
! 	* function.c (match_asm_constraints_1): Don't do the optimization
! 	if input isn't a REG, SUBREG, MEM or constant.
  
! 2018-03-22  Tom de Vries  <tom@codesourcery.com>
  
! 	PR tree-optimization/84956
! 	* tree-ssa-tail-merge.c (find_clusters_1): Skip bbs with
! 	bb_has_abnormal_pred.
  
! 2018-03-22  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR sanitizer/85018
! 	* dwarf2asm.c (dw2_output_indirect_constant_1): Set
! 	DECL_INITIAL (decl) to decl at the end.
! 	* varasm.c (use_blocks_for_decl_p): Revert the 2018-03-20 change,
! 	adjust the comment.
  
! 2018-03-21  Joseph Myers  <joseph@codesourcery.com>
  
! 	* doc/extend.texi (__builtin_tgmath): Document when complex
! 	integer types are treated as _Complex _Float64.
  
! 2018-03-21  Tom de Vries  <tom@codesourcery.com>
  
! 	* doc/extend.texi (__builtin_extend_pointer): Remove pasto.
  
! 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/84960
! 	* tree-cfg.c (remove_bb): Don't move forced labels into bb->prev_bb
! 	if it is ENTRY block, move them into single succ of ENTRY in that case.
  
! 2018-03-21  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	PR tree-optimization/84811
! 	* poly-int.h (poly_span_traits): Remove the T3 parameter and
! 	promote HOST_WIDE_INT T2 - T1 results to unsigned HOST_WIDE_INT.
! 	(maybe_in_range_p, known_in_range_p, ranges_known_overlap_p):
! 	(known_subrange_p): Update accordingly.  Cast each value involved
! 	in the size comparison, rather than casting the result of the
! 	subtraction.
  
! 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/84982
! 	* gimple-ssa-store-merging.c (invert_op): Handle boolean inversion
! 	by flipping the least significant bit rather than all bits from
! 	bitpos to bitpos + bitsize - 1.
  
! 2018-03-21  Nathan Sidwell  <nathan@acm.org>
  
! 	* doc/extend.texi (Deprecated Features): Remove mention of
! 	long-deleted deprecations.
  
! 2018-03-21  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
  
! 	PR jit/84288
! 	* configure.ac (gcc_cv_ld_soname) <*-*-solaris2*>: Set.
! 	* configure: Regenerate.
  
! 2018-03-21  Tom de Vries  <tom@codesourcery.com>
  
! 	PR tree-optimization/83126
! 	* tree-parloops.c (num_phis): New function.
! 	(gen_parallel_loop): Detect and handle canonicalize_loop_ivs failure.
  
! 2018-03-21  Nathan Sidwell  <nathan@acm.org>
  
! 	* doc/extend.texi (Deprecated Features): Update deprecated flags,
! 	mention anon-struct/union members and trailing attributes.
  
! 2018-03-21  Bin Cheng  <bin.cheng@arm.com>
  
! 	PR tree-optimization/84969
! 	* tree-loop-distribution.c (fuse_memset_builtins): Don't reorder
! 	builtin memset partitions if they set different rhs values.
  
! 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR rtl-optimization/84989
! 	* simplify-rtx.c (simplify_unary_operation_1): Don't try to simplify
! 	VEC_DUPLICATE with scalar result mode.
  
! 2018-03-21  Martin Liska  <mliska@suse.cz>
  
! 	PR ipa/84963
! 	* ipa-icf.c (sem_item_optimizer::fixup_points_to_sets): Remove
! 	not intended return statement.
  
! 2018-03-21  Martin Liska  <mliska@suse.cz>
  
! 	PR target/84988
! 	* tree-chkp.c (CHKP_ARRAY_MAX_CHECK_STEPS): Define a new macro.
! 	(chkp_find_bound_slots_1): Limit number of iterations.
  
! 2018-03-20  David H. Gutteridge  <dhgutteridge@sympatico.ca>
  
! 	PR target/84838
! 	* Minor grammar fixes for x86 options.
  
! 2018-03-20  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR debug/84875
! 	* dce.c (delete_unmarked_insns): Don't remove frame related noop moves
! 	holding REG_CFA_RESTORE notes, instead turn them into a USE.
  
! 2018-03-20  Peter Bergner  <bergner@vnet.ibm.com>
  
! 	PR target/83789
! 	* config/rs6000/altivec.md (altivec_lvx_<mode>_2op): Delete define_insn.
! 	(altivec_lvx_<mode>_1op): Likewise.
! 	(altivec_stvx_<mode>_2op): Likewise.
! 	(altivec_stvx_<mode>_1op): Likewise.
! 	(altivec_lvx_<VM2:mode>): New define_expand.
! 	(altivec_stvx_<VM2:mode>): Likewise.
! 	(altivec_lvx_<VM2:mode>_2op_<P:mptrsize>): New define_insn.
! 	(altivec_lvx_<VM2:mode>_1op_<P:mptrsize>): Likewise.
! 	(altivec_stvx_<VM2:mode>_2op_<P:mptrsize>): Likewise.
! 	(altivec_stvx_<VM2:mode>_1op_<P:mptrsize>): Likewise.
! 	* config/rs6000/rs6000-p8swap.c (rs6000_gen_stvx): Use new expanders.
! 	(rs6000_gen_lvx): Likewise.
! 	* config/rs6000/rs6000.c (altivec_expand_lv_builtin): Likewise.
! 	(altivec_expand_stv_builtin): Likewise.
! 	(altivec_expand_builtin): Likewise.
! 	* config/rs6000/vector.md: Likewise.
  
! 2018-03-20  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	PR target/82518
! 	* config/arm/arm.c (arm_array_mode_supported_p): Return false for
! 	BYTES_BIG_ENDIAN.
  
! 2018-03-20  Richard Biener  <rguenther@suse.de>
  
! 	PR target/84986
! 	* config/i386/i386.c (ix86_add_stmt_cost): Only cost
! 	sign-conversions as zero, fall back to standard scalar_stmt
! 	cost for the rest.
  
! 2018-03-20  Martin Liska  <mliska@suse.cz>
  
! 	PR ipa/84825
! 	* predict.c (rebuild_frequencies): Handle case when we have
! 	PROFILE_ABSENT, but flag_guess_branch_prob is false.
  
! 2018-03-20  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/84990
! 	* dwarf2asm.c (dw2_output_indirect_constant_1): Temporarily turn off
! 	flag_section_anchors.
! 	* varasm.c (use_blocks_for_decl_p): Remove hack for
! 	dw2_force_const_mem.
  
! 	PR target/84845
! 	* config/aarch64/aarch64.md (*aarch64_reg_<mode>3_neg_mask2): Rename
! 	to ...
! 	(*aarch64_<optab>_reg_<mode>3_neg_mask2): ... this.  If pseudos can't
! 	be created, use lowpart_subreg of operands[0] rather than operands[0]
! 	itself.
! 	(*aarch64_reg_<mode>3_minus_mask): Rename to ...
! 	(*aarch64_ashl_reg_<mode>3_minus_mask): ... this.
! 	(*aarch64_<optab>_reg_di3_mask2): Use const_int_operand predicate
! 	and n constraint instead of aarch64_shift_imm_di and Usd.
! 	(*aarch64_reg_<optab>_minus<mode>3): Rename to ...
! 	(*aarch64_<optab>_reg_minus<mode>3): ... this.
  
! 2018-03-20  Sudakshina Das  <sudi.das@arm.com>
  
! 	PR target/82989
! 	* config/arm/neon.md (ashldi3_neon): Update ?s for constraints
! 	to favor GPR over NEON registers.
! 	(<shift>di3_neon): Likewise.
  
! 2018-03-20  Tom de Vries  <tom@codesourcery.com>
  
! 	PR target/84952
! 	* config/nvptx/nvptx.c (nvptx_single): Don't neuter bar.sync.
! 	(nvptx_process_pars): Emit bar.sync asap and alap.
  
! 2018-03-20  Tom de Vries  <tom@codesourcery.com>
  
! 	PR target/84954
! 	* config/nvptx/nvptx.c (prevent_branch_around_nothing): Also update
! 	seen_label if seen_label is already set.
  
! 2018-03-20  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/84945
! 	* config/i386/i386.c (fold_builtin_cpu): For features above 31
! 	use __cpu_features2 variable instead of __cpu_model.__cpu_features[0].
! 	Use 1U instead of 1.  Formatting fixes.
  
! 	PR c/84953
! 	* builtins.c (fold_builtin_strpbrk): For strpbrk(x, "") use type
! 	instead of TREE_TYPE (s1) for the return value.
  
! 2018-03-19  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/84946
! 	* gimple-ssa-store-merging.c (mem_valid_for_store_merging): Compute
! 	bitsize + bitsize in poly_uint64 rather than poly_int64.
  
! 	PR sanitizer/78651
! 	* dwarf2asm.c: Include fold-const.c.
! 	(dw2_output_indirect_constant_1): Set DECL_INITIAL (decl) to ADDR_EXPR
! 	of decl rather than decl itself.
  
! 	PR rtl-optimization/84643
! 	* memmodel.h (enum memmodel): Add MEMMODEL_MAX enumerator.
  
! 2018-03-19  Maxim Ostapenko  <m.ostapenko@samsung.com>
  
! 	PR sanitizer/78651
! 	* dwarf2asm.c (dw2_output_indirect_constant_1): Disable ASan before
! 	calling assemble_variable.
  
! 2018-03-19  Sudakshina Das  <sudi.das@arm.com>
  
! 	PR target/81647
! 	* config/aarch64/aarch64-simd.md (vec_cmp<mode><v_int_equiv>): Modify
! 	instructions for UNLT, UNLE, UNGT, UNGE, UNEQ, UNORDERED and ORDERED.
  
! 2018-03-19  Jim Wilson  <jimw@sifive.com>
  
! 	PR bootstrap/84856
! 	* config/riscv/riscv.c (riscv_function_arg_boundary): Use
! 	PREFERRED_STACK_BOUNDARY instead of STACK_BOUNDARY.
! 	(riscv_first_stack_step): Likewise.
! 	(riscv_option_override): Use STACK_BOUNDARY instead of
! 	MIN_STACK_BOUNDARY.
! 	* config/riscv/riscv.h (STACK_BOUNDARY): Renamed from
! 	MIN_STACK_BOUNDARY.
! 	(BIGGEST_ALIGNMENT): Set to 128.
! 	(PREFERRED_STACK_BOUNDARY): Renamed from STACK_BOUNDARY.
! 	(RISCV_STACK_ALIGN): Use PREFERRED_STACK_BOUNDARY instead of
! 	STACK_BOUNDARY.
  
! 2018-03-19  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/84933
! 	* tree-vrp.c (set_and_canonicalize_value_range): Treat out-of-bound
! 	values as -INF/INF when canonicalizing an ANTI_RANGE to a RANGE.
  
! 2018-03-19  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/84859
! 	* tree-ssa-phiopt.c (single_trailing_store_in_bb): New function.
! 	(cond_if_else_store_replacement): Perform sinking operation on
! 	single-store BBs regardless of MAX_STORES_TO_SINK setting.
! 	Generalize what a BB with a single eligible store is.
  
! 2018-03-19  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/84929
! 	* tree-data-ref.c (analyze_siv_subscript_cst_affine): Guard
! 	chrec_is_positive against non-chrec arg.
  
! 2018-03-19  Tamar Christina  <tamar.christina@arm.com>
  
! 	PR target/84711
! 	* config/arm/arm.c (arm_can_change_mode_class): revert r258554.
  
! 2018-03-18  Martin Liska  <mliska@suse.cz>
  
! 	PR rtl-optimization/84635
! 	* regrename.c (build_def_use): Use matches_mode only when
! 	matches >= 0.
  
! 2018-03-18  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	PR tree-optimization/84913
! 	* tree-vect-loop.c (vectorizable_reduction): Don't try to
! 	vectorize chains of COND_EXPRs.
  
! 2018-03-18  Chung-Ju Wu  <jasonwucj@gmail.com>
  
! 	* config/nds32/nds32.h (MAX_REGS_PER_ADDRESS): Fix the value.
  
! 2018-03-18  Chung-Ju Wu  <jasonwucj@gmail.com>
  
! 	* config/nds32/nds32.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Define.
  
! 2018-03-18  Chung-Ju Wu  <jasonwucj@gmail.com>
  
! 	* config/nds32/nds32.h (CLZ_DEFINED_VALUE_AT_ZERO): Define.
  
! 2018-03-17  Chung-Ju Wu  <jasonwucj@gmail.com>
! 	    Kito Cheng  <kito.cheng@gmail.com>
  
! 	* config/nds32/nds32-protos.h (nds32_adjust_reg_alloc_order): Declare.
! 	* config/nds32/nds32.c (nds32_reg_alloc_order_for_speed): New array.
! 	(nds32_adjust_reg_alloc_order): New function.
! 	* config/nds32/nds32.h (ADJUST_REG_ALLOC_ORDER): Define.
  
! 2018-03-17  Kito Cheng  <kito.cheng@gmail.com>
  
! 	* config/nds32/nds32.c (nds32_asm_output_mi_thunk,
! 	nds32_print_operand, nds32_print_operand_address): Use
! 	HOST_WIDE_INT_PRINT_DEC instead.
  
! 2018-03-17  Chung-Ju Wu  <jasonwucj@gmail.com>
  
! 	* config/nds32/nds32.c (nds32_register_priority): Modify cost.
  
! 2018-03-17  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/84902
! 	* config/i386/i386.c (initial_ix86_tune_features,
! 	initial_ix86_arch_features): Use unsigned HOST_WIDE_INT rather than
! 	unsigned long long.
! 	(set_ix86_tune_features): Change ix86_tune_mask from unsigned int
! 	to unsigned HOST_WIDE_INT, initialize to HOST_WIDE_INT_1U << ix86_tune
! 	rather than 1u << ix86_tune.  Formatting fix.
! 	(ix86_option_override_internal): Change ix86_arch_mask from
! 	unsigned int to unsigned HOST_WIDE_INT, initialize to
! 	HOST_WIDE_INT_1U << ix86_arch rather than 1u << ix86_arch.
! 	(ix86_function_specific_restore): Likewise.
  
! 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/84899
! 	* postreload.c (reload_combine_recognize_pattern): Perform
! 	INTVAL addition in unsigned HOST_WIDE_INT type to avoid UB and
! 	truncate_int_for_mode the result for the destination's mode.
  
! 	PR c/84909
! 	* hsa-gen.c (mem_type_for_type): Fix comment typo.
! 	* tree-vect-loop-manip.c (vect_create_cond_for_niters_checks):
! 	Likewise.
! 	* gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
! 	Likewise.
  
! 2018-03-16  Vladimir Makarov  <vmakarov@redhat.com>
  
! 	PR target/84876
! 	* lra-assigns.c (lra_split_hard_reg_for): Don't use
! 	regno_allocno_class_array and sorted_pseudos.
! 	* lra-constraints.c (spill_hard_reg_in_range): Ignore hard regs in
! 	insns where regno is used.
  
! 2018-03-16  Martin Liska  <mliska@suse.cz>
  
! 	PR ipa/84833
! 	* multiple_target.c (create_dispatcher_calls): Redirect
! 	reference in the symbol table.
  
! 2018-03-16  Martin Liska  <mliska@suse.cz>
  
! 	PR ipa/84722
! 	* multiple_target.c (create_dispatcher_calls): Redirect also
! 	an alias.
  
! 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR c++/79937
! 	PR c++/82410
! 	* tree.h (TARGET_EXPR_NO_ELIDE): Define.
! 	* gimplify.c (gimplify_modify_expr_rhs): Don't elide TARGET_EXPRs with
! 	TARGET_EXPR_NO_ELIDE flag set unless *expr_p is INIT_EXPR.
  
! 2018-03-16  Julia Koval  <julia.koval@intel.com>
  
! 	* doc/invoke.texi (Skylake Server): Add CLWB.
! 	Cannonlake): Remove CLWB.
  
! 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/84841
! 	* tree-ssa-reassoc.c (INTEGER_CONST_TYPE): Change to 1 << 4 from
! 	1 << 3.
! 	(FLOAT_ONE_CONST_TYPE): Define.
! 	(constant_type): Return FLOAT_ONE_CONST_TYPE for -1.0 and 1.0.
! 	(sort_by_operand_rank): Put entries with higher constant_type last
! 	rather than first to match comments.
  
! 2018-03-15  Sandra Loosemore  <sandra@codesourcery.com>
  
! 	* config/nios2/nios2.md (movsi_internal): Fix thinko in 
! 	split predicate.
  
! 2018-03-15  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR c++/79085
! 	* calls.c (expand_call): For TREE_ADDRESSABLE rettype ignore alignment
! 	check and use address of target always.
  
! 2018-03-15  H.J. Lu  <hongjiu.lu@intel.com>
  
! 	PR target/84574
! 	* config/i386/i386.c (indirect_thunk_needed): Update comments.
! 	(indirect_thunk_bnd_needed): Likewise.
! 	(indirect_thunks_used): Likewise.
! 	(indirect_thunks_bnd_used): Likewise.
! 	(indirect_return_needed): New.
! 	(indirect_return_bnd_needed): Likewise.
! 	(output_indirect_thunk_function): Add a bool argument for
! 	function return.
! 	(output_indirect_thunk_function): Don't generate alias for
! 	function return thunk.
! 	(ix86_code_end): Call output_indirect_thunk_function to generate
! 	function return thunks.
! 	(ix86_output_function_return): Set indirect_return_bnd_needed
! 	and indirect_return_needed instead of indirect_thunk_bnd_needed
! 	and indirect_thunk_needed.
  
! 2018-03-15  Olga Makhotina  <olga.makhotina@intel.com>
  
! 	* config/i386/sgxintrin.h (_enclv_u32): New intrinsic.
! 	(__enclv_bc, __enclv_cd, __enclv_generic): New definitions.
! 	(ERDINFO, ETRACKC, ELDBC, ELDUC): New leaves.
  
! 2018-03-15  David Malcolm  <dmalcolm@redhat.com>
! 	    Paul Hua <paul.hua.gm@gmail.com>
  
! 	PR c/84852
! 	* gcc.dg/fixits-pr84852-1.c: Fix filename in dg-regexp.
  
! 2018-03-15  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	* config/rs6000/rs6000.c (abi_v4_pass_in_fpr): Add back the
! 	TARGET_DOUBLE_FLOAT and TARGET_SINGLE_FLOAT conditions on the DFmode
! 	resp. SFmode cases.
  
! 2018-03-15  Tamar Christina  <tamar.christina@arm.com>
  
! 	PR target/84711
! 	* config/arm/arm.c (arm_can_change_mode_class): Use GET_MODE_UNIT_SIZE
! 	instead of GET_MODE_SIZE when comparing Units.
  
! 2018-03-15  Vladimir Mezentsev  <vladimir.mezentsev@oracle.com>
  
! 	PR target/68256
! 	* varasm.c (hash_section): Return an unchangeble hash value
! 	* config/aarch64/aarch64.c (aarch64_use_blocks_for_constant_p):
! 	Return !aarch64_can_use_per_function_literal_pools_p ().
  
! 2018-03-15  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/84860
! 	* optabs.c (emit_conditional_move): Pass address of cmode's copy
! 	rather than address of cmode as last argument to prepare_cmp_insn.
  
! 2018-03-15  Julia Koval  <julia.koval@intel.com>
  
! 	* config/i386/i386.c (F_AVX512VBMI2, F_GFNI, F_VPCLMULQDQ,
! 	F_AVX512VNNI, F_AVX512BITALG): New.
  
! 2018-03-14  John David Anglin  <danglin@gcc.gnu.org>
  
! 	PR target/83451
! 	* config/pa/pa.c (pa_emit_move_sequence):  Always emit secondary reload
! 	insn for floating-point loads and stores.
  
! 2018-03-14  Carl Love  <cel@us.ibm.com>
  
! 	* config/rs6000/rs6000-c.c: Add macro definitions for
! 	ALTIVEC_BUILTIN_VEC_PERMXOR.
! 	* config/rs6000/rs6000.h: Add #define for vec_permxor builtin.
! 	* config/rs6000/rs6000-builtin.def: Add macro expansions for VPERMXOR.
! 	* config/rs6000/altivec.md (altivec_vpermxor): New define expand.
! 	* config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Add case
! 	UNSPEC_VPERMXOR.
! 	* config/doc/extend.texi: Add prototypes for vec_permxor.
  
! 2018-03-14  David Malcolm  <dmalcolm@redhat.com>
  
! 	PR c/84852
! 	* diagnostic-show-locus.c (class layout_point): Convert m_line
! 	from int to linenum_type.
! 	(line_span::comparator): Use linenum "compare" function when
! 	comparing line numbers.
! 	(test_line_span): New function.
! 	(layout_range::contains_point): Convert param "row" from int to
! 	linenum_type.
! 	(layout_range::intersects_line_p): Likewise.
! 	(layout::will_show_line_p): Likewise.
! 	(layout::print_source_line): Likewise.
! 	(layout::should_print_annotation_line_p): Likewise.
! 	(layout::print_annotation_line): Likewise.
! 	(layout::print_leading_fixits): Likewise.
! 	(layout::annotation_line_showed_range_p): Likewise.
! 	(struct line_corrections): Likewise for field m_row.
! 	(line_corrections::line_corrections): Likewise for param "row".
! 	(layout::print_trailing_fixits): Likewise.
! 	(layout::get_state_at_point): Likewise.
! 	(layout::get_x_bound_for_row): Likewise.
! 	(layout::print_line): Likewise.
! 	(diagnostic_show_locus): Likewise for locals "last_line" and
! 	"row".
! 	(selftest::diagnostic_show_locus_c_tests): Call test_line_span.
! 	* input.c (selftest::test_linenum_comparisons): New function.
! 	(selftest::input_c_tests): Call it.
! 	* selftest.c (selftest::test_assertions): Test ASSERT_GT,
! 	ASSERT_GT_AT, ASSERT_LT, and ASSERT_LT_AT.
! 	* selftest.h (ASSERT_GT): New macro.
! 	(ASSERT_GT_AT): New macro.
! 	(ASSERT_LT): New macro.
! 	(ASSERT_LT_AT): New macro.
  
! 2018-03-14  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	PR rtl-optimization/84780
! 	* combine.c (distribute_links): Don't make a link based on pc_rtx.
  
! 2018-03-14  Martin Liska  <mliska@suse.cz>
  
! 	* tree.c (record_node_allocation_statistics): Use
! 	get_stats_node_kind.
! 	(get_stats_node_kind): New function extracted from
! 	record_node_allocation_statistics.
! 	(free_node): Use get_stats_node_kind.
  
! 2018-03-14  Richard Biener  <rguenther@suse.de>
  
! 	* tree-ssa-pre.c (compute_antic_aux): Remove code that asserts
! 	that the value-set of ANTIC_IN doesn't grow.
  
  	Revert
! 	* tree-ssa-pre.c (struct bb_bitmap_sets): Add visited_with_visited_succs
! 	member.
! 	(BB_VISITED_WITH_VISITED_SUCCS): New define.
! 	(compute_antic): Initialize BB_VISITED_WITH_VISITED_SUCCS.
  
! 2018-03-14  Julia Koval  <julia.koval@intel.com>
  
! 	* config.gcc (icelake-client, icelake-server): New.
! 	(icelake): Remove.
! 	* config/i386/i386.c (initial_ix86_tune_features): Extend to 64 bit.
! 	(initial_ix86_arch_features): Ditto.
! 	(PTA_SKYLAKE): Add SGX.
! 	(PTA_ICELAKE): Remove.
! 	(PTA_ICELAKE_CLIENT): New.
! 	(PTA_ICELAKE_SERVER): New.
! 	(ix86_option_override_internal): Split up icelake on icelake client and
! 	icelake server.
! 	(get_builtin_code_for_version): Ditto.
! 	(fold_builtin_cpu): Ditto.
! 	* config/i386/driver-i386.c (config/i386/driver-i386.c): Ditto.
! 	* config/i386/i386-c.c (ix86_target_macros_internal): Ditto
! 	* config/i386/i386.h (processor_type): Ditto.
! 	* doc/invoke.texi: Ditto.
  
! 2018-03-14  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR sanitizer/83392
! 	* sanopt.c (maybe_optimize_ubsan_ptr_ifn): Handle also
! 	INTEGER_CST offset, add it together with bitpos / 8 and
! 	sign extend based on POINTER_SIZE.
  
! 	PR target/84844
! 	Revert
! 	2017-04-20  Uros Bizjak  <ubizjak@gmail.com>
  
! 	PR target/78090
! 	* config/i386/constraints.md (Yc): New register constraint.
! 	* config/i386/i386.md (*float<SWI48:mode><MODEF:mode>2_mixed):
! 	Use Yc constraint for alternative 2 of operand 0.  Remove
! 	preferred_for_speed attribute.
  
! 2018-03-14  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/84830
! 	* tree-ssa-pre.c (compute_antic_aux): Intersect the new ANTIC_IN
! 	with the old one to avoid oscillations.
  
! 2018-03-13  Vladimir Makarov  <vmakarov@redhat.com>
  
! 	PR target/83712
! 	* lra-assigns.c (find_all_spills_for): Ignore uninteresting
! 	pseudos.
! 	(assign_by_spills): Return a flag of reload assignment failure.
! 	Do not process the reload assignment failures.  Do not spill other
! 	reload pseudos if they has the same reg class.  Update n if
! 	necessary.
! 	(lra_assign): Add a return arg.  Set up from the result of
! 	assign_by_spills call.
! 	(find_reload_regno_insns, lra_split_hard_reg_for): New functions.
! 	* lra-constraints.c (split_reg): Add a new arg.  Use it instead of
! 	usage_insns if it is not NULL.
! 	(spill_hard_reg_in_range): New function.
! 	(split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
! 	* lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
! 	function prototypes.
! 	(lra_assign): Change prototype.
! 	* lra.c (lra): Add code to deal with fails by splitting hard reg
! 	live ranges.
  
! 2018-03-01  Palmer Dabbelt  <palmer@sifive.com>
  
! 	* config/riscv/riscv.opt (mrelax): New option.
! 	* config/riscv/riscv.c (riscv_file_start): Emit ".option
! 	"norelax" when riscv_mrelax is disabled.
! 	* doc/invoke.texi (RISC-V): Document "-mrelax" and "-mno-relax".
  
! 2018-03-13  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
  
! 	PR target/84743
! 	* config/rs6000/rs6000.c (rs6000_reassociation_width): Disable parallel
! 	reassociation for int modes.
  
! 2018-03-13  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* tree-vect-loop-manip.c (vect_maybe_permute_loop_masks):
! 	Reverse the choice between VEC_UNPACK_LO_EXPR and VEC_UNPACK_HI_EXPR
! 	for big-endian.
! 	* config/aarch64/iterators.md (hi_lanes_optab): New int attribute.
! 	* config/aarch64/aarch64-sve.md
! 	(*aarch64_sve_<perm_insn><perm_hilo><mode>): Rename to...
! 	(aarch64_sve_<perm_insn><perm_hilo><mode>): ...this.
! 	(*extend<mode><Vwide>2): Rename to...
! 	(aarch64_sve_extend<mode><Vwide>2): ...this.
! 	(vec_unpack<su>_<perm_hilo>_<mode>): Turn into a define_expand,
! 	renaming the old pattern to...
! 	(aarch64_sve_punpk<perm_hilo>_<mode>): ...this.  Only define
! 	unsigned packs.
! 	(vec_unpack<su>_<perm_hilo>_<SVE_BHSI:mode>): Turn into a
! 	define_expand, renaming the old pattern to...
! 	(aarch64_sve_<su>unpk<perm_hilo>_<SVE_BHSI:mode>): ...this.
! 	(*vec_unpacku_<perm_hilo>_<mode>_no_convert): Delete.
! 	(vec_unpacks_<perm_hilo>_<mode>): Take BYTES_BIG_ENDIAN into
! 	account when deciding which SVE instruction the optab should use.
! 	(vec_unpack<su_optab>_float_<perm_hilo>_vnx4si): Likewise.
  
! 2018-03-13  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* config/aarch64/aarch64.md (V4_REGNUM, V8_REGNUM, V12_REGNUM)
! 	(V20_REGNUM, V24_REGNUM, V28_REGNUM, P1_REGNUM, P2_REGNUM, P3_REGNUM)
! 	(P4_REGNUM, P5_REGNUM, P6_REGNUM, P8_REGNUM, P9_REGNUM, P10_REGNUM)
! 	(P11_REGNUM, P12_REGNUM, P13_REGNUM, P14_REGNUM): New define_constants.
! 	(tlsdesc_small_<mode>): Turn a define_expand and use
! 	tlsdesc_small_sve_<mode> for SVE.  Rename original define_insn to...
! 	(tlsdesc_small_advsimd_<mode>): ...this.
! 	(tlsdesc_small_sve_<mode>): New pattern.
  
! 2018-03-13  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* config/aarch64/iterators.md (UNSPEC_SMUL_HIGHPART)
! 	(UNSPEC_UMUL_HIGHPART): New constants.
! 	(MUL_HIGHPART): New int iteraor.
! 	(su): Handle UNSPEC_SMUL_HIGHPART and UNSPEC_UMUL_HIGHPART.
! 	* config/aarch64/aarch64-sve.md (<su>mul<mode>3_highpart): New
! 	define_expand.
! 	(*<su>mul<mode>3_highpart): New define_insn.
  
! 2018-03-13  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR lto/84805
! 	* ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of
! 	incomplete types.
  
! 2018-03-13  Martin Liska  <mliska@suse.cz>
  
! 	PR ipa/84658.
! 	* (sem_item_optimizer::sem_item_optimizer): Initialize new
! 	vector.
! 	(sem_item_optimizer::~sem_item_optimizer): Release it.
! 	(sem_item_optimizer::merge_classes): Register variable aliases.
! 	(sem_item_optimizer::fixup_pt_set): New function.
! 	(sem_item_optimizer::fixup_points_to_sets): Likewise.
! 	* ipa-icf.h: Declare new variables and functions.
  
! 2018-03-13  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/84834
! 	* match.pd ((A & C) != 0 ? D : 0): Use INTEGER_CST@2 instead of
! 	integer_pow2p@2 and test integer_pow2p in condition.
! 	(A < 0 ? C : 0): Similarly for @1.
  
! 	PR middle-end/84831
! 	* stmt.c (parse_output_constraint): If the CONSTRAINT_LEN (*p, p)
! 	characters starting at p contain '\0' character, don't look beyond
! 	that.
  
! 	PR target/84827
! 	* config/i386/i386.md (round<mode>2): For 387 fancy math, disable
! 	pattern if -ftrapping-math -fno-fp-int-builtin-inexact.
  
! 	PR target/84828
! 	* reg-stack.c (change_stack): Change update_end var from int to
! 	rtx_insn *, if non-NULL don't update just BB_END (current_block), but
! 	also call set_block_for_insn on the newly added insns and rescan.
  
! 	PR target/84786
! 	* config/i386/sse.md (sse2_loadhpd): Use Yv constraint rather than v
! 	on the last operand.
  
! 	PR c++/84704
! 	* tree.c (stabilize_reference_1): Return save_expr (e) for
! 	STATEMENT_LIST even if it doesn't have side-effects.
  
! 2018-03-12  Jonathan Wakely  <jwakely@redhat.com>
  
! 	* doc/invoke.texi (-mclflushopt): Fix spelling of option.
  
! 2018-03-12  Renlin Li  <renlin.li@arm.com>
  
! 	* config/aarch64/aarch64.md (movhf_aarch64): Fix mode argument to
! 	aarch64_output_scalar_simd_mov_immediate.
  
! 2018-03-12  Martin Sebor  <msebor@redhat.com>
  
! 	PR tree-optimization/83456
! 	* gimple-fold.c (gimple_fold_builtin_memory_op): Avoid warning
! 	for perfectly overlapping calls to memcpy.
! 	(gimple_fold_builtin_memory_chk): Same.
! 	(gimple_fold_builtin_strcpy): Handle no-warning.
! 	(gimple_fold_builtin_stxcpy_chk): Same.
! 	* tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Handle no-warning.
  
! 2018-03-12  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	* config/rs6000/rs6000.c (abi_v4_pass_in_fpr): Add bool "named"
! 	parameter.  Use it for SFmode.
! 	(rs6000_function_arg_advance_1): Adjust.
! 	(rs6000_function_arg): Adjust.
! 	(rs6000_gimplify_va_arg): Pass false for that new parameter.
  
! 2018-03-12  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	PR rtl-optimization/84169
! 	PR rtl-optimization/84780
! 	* combine.c (can_combine_p): Check for a 2-insn combination whether
! 	the destination register is used between the two insns, too.
  
! 2018-03-12  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/84803
! 	* tree-if-conv.c (ifcvt_memrefs_wont_trap): Don't do anything
! 	for refs DR analysis didn't process.
  
! 2018-03-12  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/84777
! 	* tree-ssa-loop-ch.c (should_duplicate_loop_header_p): For
! 	force-vectorize loops ignore whether we are optimizing for size.
  
! 2018-03-12  Chung-Ju Wu  <jasonwucj@gmail.com>
  
! 	* config/nds32/nds32.c (nds32_md_asm_adjust): New function.
! 	(TARGET_MD_ASM_ADJUST): Define.
  
! 2018-03-12  Monk Chiang  <sh.chiang04@gmail.com>
! 	    Kito Cheng  <kito.cheng@gmail.com>
! 	    Chung-Ju Wu  <jasonwucj@gmail.com>
  
! 	* config/nds32/nds32.c (nds32_compute_stack_frame,
! 	nds32_emit_stack_push_multiple, nds32_emit_stack_pop_multiple,
! 	nds32_emit_stack_v3push, nds32_emit_stack_v3pop,
! 	nds32_emit_adjust_frame, nds32_expand_prologue, nds32_expand_epilogue,
! 	nds32_expand_prologue_v3push, nds32_expand_epilogue_v3pop): Refine.
! 	* config/nds32/nds32.h (NDS32_FIRST_CALLEE_SAVE_GPR_REGNUM,
! 	NDS32_LAST_CALLEE_SAVE_GPR_REGNUM, NDS32_V3PUSH_AVAILABLE_P): New.
! 	* config/nds32/nds32.md (prologue, epilogue): Use macro
! 	NDS32_V3PUSH_AVAILABLE_P to do checking.
  
! 2018-03-11  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR debug/58150
! 	* dwarf2out.c (gen_enumeration_type_die): Don't guard adding
! 	DW_AT_declaration for ENUM_IS_OPAQUE on -gdwarf-4 or -gno-strict-dwarf,
! 	but on TYPE_SIZE.  Don't do anything for ENUM_IS_OPAQUE if not creating
! 	a new die.  Don't set TREE_ASM_WRITTEN if ENUM_IS_OPAQUE.  Guard
! 	addition of most attributes on !orig_type_die or the attribute not
! 	being present already.  Assert TYPE_VALUES is NULL for ENUM_IS_OPAQUE.
  
! 2018-03-11  Kito Cheng  <kito.cheng@gmail.com>
! 	    Chung-Ju Wu  <jasonwucj@gmail.com>
  
! 	* config/nds32/nds32.c (nds32_cpu_cpp_builtins): Modify to define
! 	__NDS32_VH__ macro.
! 	* config/nds32/nds32.opt (mvh): New option.
  
! 2018-03-11  Kito Cheng  <kito.cheng@gmail.com>
! 	    Chung-Ju Wu  <jasonwucj@gmail.com>
  
! 	* config/nds32/nds32-protos.h (nds32_cpu_cpp_builtins): Declare
! 	function.
! 	* config/nds32/nds32.c (nds32_cpu_cpp_builtins): New function.
! 	* config/nds32/nds32.h (TARGET_CPU_CPP_BUILTINS): Modify its
  	definition.
  
! 2018-03-11  Kito Cheng  <kito.cheng@gmail.com>
! 	    Chung-Ju Wu  <jasonwucj@gmail.com>
  
! 	* config/nds32/nds32-memory-manipulation.c (nds32_expand_strlen): New
! 	function.
! 	* config/nds32/nds32-multiple.md (strlensi): New pattern.
! 	* config/nds32/nds32-protos.h (nds32_expand_strlen): Declare function.
  
! 2018-03-11  Monk Chiang  <sh.chiang04@gmail.com>
! 	    Kito Cheng  <kito.cheng@gmail.com>
! 	    Chung-Ju Wu  <jasonwucj@gmail.com>
  
! 	* config/nds32/constants.md (unspec_element): Add UNSPEC_FFB,
! 	UNSPEC_FFMISM and UNSPEC_FLMISM.
! 	* config/nds32/nds32-intrinsic.c (bdesc_2arg): Add builtin description
! 	for ffb, ffmism and flmism.
! 	* config/nds32/nds32-intrinsic.md (unspec_ffb): Define new pattern.
! 	(unspec_ffmism): Ditto.
! 	(unspec_flmism): Ditto.
! 	(nds32_expand_builtin_impl): Check if string extension is available.
! 	* config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_FFB,
! 	NDS32_BUILTIN_FFMISM and NDS32_BUILTIN_FLMISM.
  
! 2018-03-10  Vladimir Makarov  <vmakarov@redhat.com>
  
! 	Reverting patch:
! 	2018-03-09  Vladimir Makarov  <vmakarov@redhat.com>
  
! 	PR target/83712
! 	* lra-assigns.c (assign_by_spills): Return a flag of reload
! 	assignment failure.  Do not process the reload assignment
! 	failures.  Do not spill other reload pseudos if they has the same
! 	reg class.
! 	(lra_assign): Add a return arg.  Set up from the result of
! 	assign_by_spills call.
! 	(find_reload_regno_insns, lra_split_hard_reg_for): New functions.
! 	* lra-constraints.c (split_reg): Add a new arg.  Use it instead of
! 	usage_insns if it is not NULL.
! 	(spill_hard_reg_in_range): New function.
! 	(split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
! 	* lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
! 	function prototypes.
! 	(lra_assign): Change prototype.
! 	* lra.c (lra): Add code to deal with fails by splitting hard reg
! 	live ranges.
  
! 2018-03-10  H.J. Lu  <hongjiu.lu@intel.com>
  
! 	PR target/84807
! 	* config/i386/i386.opt: Replace Enforcment with Enforcement.
  
! 2018-03-10  Alexandre Oliva  <aoliva@redhat.com>
  
! 	PR debug/84620
! 	* dwarf2out.h (dw_val_class): Add dw_val_class_symview.
! 	(dw_val_node): Add val_symbolic_view.
! 	* dwarf2out.c (dw_line_info_table): Add symviews_since_reset.
! 	(symview_upper_bound): New.
! 	(new_line_info_table): Initialize symviews_since_reset.
! 	(dwarf2out_source_line): Count symviews_since_reset and set
! 	symview_upper_bound.
! 	(dw_val_equal_p): Handle symview.
! 	(add_AT_symview): New.
! 	(print_dw_val): Handle symview.
! 	(attr_checksum, attr_checksum_ordered): Likewise.
! 	(same_dw_val_p, size_of_die): Likewise.
! 	(value_format, output_die): Likewise.
! 	(add_high_low_attributes): Use add_AT_symview for entry_view.
! 	(dwarf2out_finish): Reset symview_upper_bound, clear
! 	zero_view_p.
  
! 2018-03-09  Peter Bergner  <bergner@vnet.ibm.com>
  
! 	PR target/83969
! 	* config/rs6000/rs6000.c (rs6000_offsettable_memref_p): New prototype.
! 	Add strict argument and use it.
! 	(rs6000_split_multireg_move): Update for new strict argument.
! 	(mem_operand_gpr): Disallow all non-offsettable addresses.
! 	* config/rs6000/rs6000.md (*movdi_internal64): Use YZ constraint.
  
! 2018-03-09  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/84772
! 	* config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Mark va_arg_tmp
! 	temporary TREE_ADDRESSABLE before gimplification of BUILT_IN_MEMCPY.
! 	* config/powerpcspe/powerpcspe.c (rs6000_gimplify_va_arg): Likewise.
  
! 	PR c++/84767
! 	* tree-inline.c (copy_tree_body_r): For INDIRECT_REF of a remapped
! 	decl, use remap_type if we want to use the type.
  
! 2018-03-09  Martin Sebor  <msebor@redhat.com>
  
! 	PR tree-optimization/84526
! 	* gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
! 	Remove dead code.
! 	(builtin_access::generic_overlap): Be prepared to handle non-array
! 	base objects.
  
! 2018-03-09  Alexandre Oliva  <aoliva@redhat.com>
  
! 	PR rtl-optimization/84682
! 	* lra-constraints.c (process_address_1): Check is_address flag
! 	for address constraints.
! 	(process_alt_operands): Likewise.
! 	* lra.c (lra_set_insn_recog_data): Pass asm operand locs to
! 	preprocess_constraints.
! 	* recog.h (preprocess_constraints): Add oploc parameter.
! 	Adjust callers.
! 	* recog.c (preprocess_constraints): Test address_operand for
! 	CT_ADDRESS constraints.
  
! 2018-03-09  Vladimir Makarov  <vmakarov@redhat.com>
  
! 	PR target/83712
! 	* lra-assigns.c (assign_by_spills): Return a flag of reload
! 	assignment failure.  Do not process the reload assignment
! 	failures.  Do not spill other reload pseudos if they has the same
! 	reg class.
! 	(lra_assign): Add a return arg.  Set up from the result of
! 	assign_by_spills call.
! 	(find_reload_regno_insns, lra_split_hard_reg_for): New functions.
! 	* lra-constraints.c (split_reg): Add a new arg.  Use it instead of
! 	usage_insns if it is not NULL.
! 	(spill_hard_reg_in_range): New function.
! 	(split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
! 	* lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
! 	function prototypes.
! 	(lra_assign): Change prototype.
! 	* lra.c (lra): Add code to deal with fails by splitting hard reg
! 	live ranges.
  
! 2018-03-09  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	PR target/83193
! 	* common/config/arm/arm-common.c (arm_parse_arch_option_name):
! 	Accept complain bool parameter.  Only emit errors if it is true.
! 	(arm_parse_cpu_option_name): Likewise.
! 	(arm_target_thumb_only): Adjust callers of the above.
! 	* config/arm/arm-protos.h (arm_parse_cpu_option_name): Adjust
! 	prototype to take a default true bool parameter.
! 	(arm_parse_arch_option_name): Likewise.
  
! 2018-03-09  David Malcolm  <dmalcolm@redhat.com>
! 	    Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
  
! 	PR jit/64089
! 	PR jit/84288
! 	* Makefile.in (LD_VERSION_SCRIPT_OPTION, LD_SONAME_OPTION): New.
! 	* configure: Regenerate.
! 	* configure.ac ("linker --version-script option"): New.
! 	("linker soname option"): New.
  
! 2018-03-09  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/84775
! 	* tree-if-conv.c (add_bb_predicate_gimplified_stmts): Delink
! 	immediate uses of predicate stmts and mark them modified.
  
! 	Revert
! 	PR tree-optimization/84178
! 	* tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates
! 	to caller.
! 	(version_loop_for_if_conversion): Delay update_ssa call.
! 	(tree_if_conversion): Delay update_ssa until after predicate
! 	insertion.
  
! 2018-03-09  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR target/84763
! 	* config/i386/winnt.c (i386_pe_seh_cold_init): Use small pre-allocation
! 	when the function accesses prior frames.
  
! 2018-03-08  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR debug/84456
! 	* dwarf2out.c (dw_loc_list): If list && loc_list->first->next, call
! 	gen_llsym, otherwise call maybe_gen_llsym.
  
! 	PR inline-asm/84742
! 	* recog.c (asm_operand_ok): Return 0 if multi-character constraint
! 	has ',' character inside of it.
  
! 2018-03-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	PR target/84748
! 	* config/aarch64/aarch64.md (*compare_cstore<mode>_insn): Mark pattern
! 	as clobbering CC_REGNUM.
  
! 2018-03-08  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/84552
! 	* tree-scalar-evolution.c: Include tree-into-ssa.h.
! 	(follow_copies_to_constant): Do not follow SSA names registered
! 	for update.
  
! 2018-03-08  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/84178
! 	* tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates
! 	to caller.
! 	(version_loop_for_if_conversion): Delay update_ssa call.
! 	(tree_if_conversion): Delay update_ssa until after predicate
! 	insertion.
  
! 2018-03-08  David Malcolm  <dmalcolm@redhat.com>
  
! 	PR tree-optimization/84178
! 	* tree-if-conv.c (release_bb_predicate): Remove the
! 	the assertion that the stmts have NULL use_ops.
! 	Discard the statements, asserting that they haven't
! 	yet been added to a BB.
  
! 2018-03-08  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/84746
! 	* tree-ssa-pre.c (find_leader_in_sets): Deal with SET1 being NULL.
! 	(phi_translate): Pass in destination ANTIC_OUT set.
! 	(phi_translate_1): Likewise.  For a simplified result lookup
! 	a leader in ANTIC_OUT and AVAIL_OUT, not the ANTIC_IN sets.
! 	(phi_translate_set): Adjust.
! 	(do_pre_regular_insertion): Likewise.
! 	(do_pre_partial_partial_insertion): Likewise.
  
! 2018-03-08  Martin Liska  <mliska@suse.cz>
  
! 	PR gcov-profile/84735
! 	* doc/gcov.texi: Document usage of profile files.
! 	* gcov-io.h: Document changes in the format.
  
! 2018-03-08  Alexandre Oliva  <aoliva@redhat.com>
  
! 	PR debug/84404
! 	PR debug/84408
! 	* dwarf2out.c (struct dw_line_info_table): Update comments for
! 	view == -1.
! 	(FORCE_RESET_NEXT_VIEW): New.
! 	(FORCE_RESETTING_VIEW_P): New.
! 	(RESETTING_VIEW_P): Check for -1 too.
! 	(ZERO_VIEW_P): Likewise.
! 	(new_line_info_table): Force-reset next view.
! 	(dwarf2out_begin_function): Likewise.
! 	(dwarf2out_source_line): Simplify zero_view_p initialization.
! 	Test FORCE_RESETTING_VIEW_P and RESETTING_VIEW_P instead of
! 	view directly.  Omit view when omitting .loc at line 0.
  
! 2018-03-08  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/84740
! 	* tree-switch-conversion.c (process_switch): Call build_constructors
! 	only if info.phi_count is non-zero.
  
! 	PR tree-optimization/84739
! 	* tree-tailcall.c (find_tail_calls): Check call arguments against
! 	DECL_ARGUMENTS (current_function_decl) rather than
! 	DECL_ARGUMENTS (func) when checking for tail recursion.
  
! 2018-03-07  Jakub Jelinek  <jakub@redhat.com>
  
! 	* doc/contrib.texi: Add entries for Martin Liska, David Malcolm,
! 	Marek Polacek, extend Vladimir Makarov's, Jonathan Wakely's and
! 	Volker Reichelt's entry and add entries for people that perform
! 	GCC fuzzy testing and report numerous bugs.
  
! 2018-03-07  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	PR target/82411
! 	* config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Don't put
! 	readonly data in sdata, if that is disabled.
! 	* config/rs6000/sysv4.opt (mreadonly-in-sdata): New option.
! 	* doc/invoke.texi (RS/6000 and PowerPC Options): Document
! 	-mreadonly-in-sdata option.
  
! 2018-03-07  Martin Sebor  <msebor@redhat.com>
  
! 	PR tree-optimization/84468
! 	* tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Consider successor
! 	basic block when looking for nul assignment.
  
! 2018-03-07  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR target/84277
! 	* except.h (output_function_exception_table): Adjust prototype.
! 	* except.c (output_function_exception_table): Remove FNNAME parameter
! 	and add SECTION parameter.  Ouput one part of the table at a time.
! 	* final.c (final_scan_insn_1) <NOTE_INSN_SWITCH_TEXT_SECTIONS>: Output
! 	the first part of the exception table and emit unwind directives.
! 	* config/i386/i386-protos.h (i386_pe_end_cold_function): Declare.
! 	(i386_pe_seh_cold_init): Likewise.
! 	* config/i386/cygming.h (ASM_DECLARE_COLD_FUNCTION_NAME): New macro.
! 	(ASM_DECLARE_COLD_FUNCTION_SIZE): Likewise.
! 	* config/i386/i386.c (x86_expand_epilogue): Fix wording in comment.
! 	(ix86_output_call_insn): Emit a nop in one more case for SEH.
! 	* config/i386/winnt.c: Include except.h.
! 	(struct seh_frame_state): Add reg_offset, after_prologue and
! 	in_cold_section fields.
! 	(i386_pe_seh_end_prologue): Set seh->after_prologue.
! 	(i386_pe_seh_cold_init): New function.
! 	(i386_pe_seh_fini): Add COLD parameter and bail out if it is not equal
! 	to seh->in_cold_section.
! 	(seh_emit_push): Record the offset of the push.
! 	(seh_emit_save): Record the offet of the save.
! 	(i386_pe_seh_unwind_emit): Deal with NOTE_INSN_SWITCH_TEXT_SECTIONS.
! 	Test seh->after_prologue to disregard the epilogue.
! 	(i386_pe_end_function): Pass FALSE to i386_pe_seh_fini.
! 	(i386_pe_end_cold_function): New function.
  
! 2018-03-07  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR fortran/84565
! 	* config/aarch64/predicates.md (aarch64_simd_reg_or_zero): Use
! 	aarch64_simd_or_scalar_imm_zero rather than aarch64_simd_imm_zero.
  
! 	PR c++/84704
! 	* gimple-expr.c (create_tmp_var_raw): Set DECL_NAMELESS flag
! 	on tmp_var.
! 	* tree-pretty-print.c (dump_decl_name): For TDF_COMPARE_DEBUG,
! 	don't print names of DECL_NAMELESS DECL_IGNORED_P decls.
  
! 	PR middle-end/84723
! 	* multiple_target.c: Include tree-inline.h and intl.h.
! 	(expand_target_clones): Diagnose and fail if node->definition and
! 	!tree_versionable_function_p (node->decl).
  
! 2018-03-06  John David Anglin  <danglin@gcc.gnu.org>
  
! 	* config/pa/pa.h (ASM_GENERATE_INTERNAL_LABEL): Revise to use
! 	sprint_ul.
! 	(ASM_OUTPUT_ADDR_VEC_ELT): Revise for above change.
! 	(ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
! 	* config/pa/pa64-hpux.h (ASM_GENERATE_INTERNAL_LABEL): Revise as above.
  
! 2018-03-06  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/84710
! 	* combine.c (try_combine): Use reg_or_subregno instead of handling
! 	just paradoxical SUBREGs and REGs.
  
! 2018-03-06  Claudiu Zissulescu  <claziss@synopsys.com>
  
! 	 * config/arc/arc.c (arc_finalize_pic): Remove function.
! 	 (arc_must_save_register): We use single base PIC register, remove
! 	 checks to save/restore the PIC register.
! 	 (arc_expand_prologue): Likewise.
! 	 * config/arc/arc-protos.h (arc_set_default_type_attributes):
! 	 Remove.
! 	 (arc_verify_short): Likewise.
! 	 (arc_attr_type): Likewise.
! 	 * config/arc/arc.c (arc_set_default_type_attributes): Remove.
! 	 (walk_stores): Likewise.
! 	 (arc_address_cost): Make it static.
! 	 (arc_verify_short): Likewise.
! 	 (branch_dest): Likewise.
! 	 (arc_attr_type): Likewise.
! 	 * config/arc/arc.c (TARGET_ADJUST_INSN_LENGTH): Remove.
! 	 (TARGET_INSN_LENGTH_PARAMETERS): Likewise.
! 	 (arc_final_prescan_insn): Remove inserting the nops due to
! 	 hardware hazards.  It is done in reorg step.
! 	 (insn_length_variant_t): Remove.
! 	 (insn_length_parameters_t): Likewise.
! 	 (arc_insn_length_parameters): Likewise.
! 	 (arc_get_insn_variants): Likewise.
! 	 * config/arc/arc.h (TARGET_UPSIZE_DBR): Remove.
  
! 2018-03-06  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR inline-asm/84683
! 	* reg-stack.c (move_for_stack_reg): If any_malformed_asm, avoid
! 	assertion failure.
  
! 	PR tree-optimization/84687
! 	* omp-simd-clone.c (simd_clone_create): Clear DECL_BUILT_IN_CLASS
! 	on new_node->decl.
! 	* match.pd (pow(C,x)*expN(y) -> expN(logN(C)*x+y)): New optimization.
  
! 2018-03-05  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
  
! 	* config/rs6000/rs6000-builtin.def (rs6000_speculation_barrier):
! 	Rename to ppc_speculation_barrier.
! 	* config/rs6000/rs6000.c (rs6000_init_builtins): Rename builtin to
! 	__builtin_ppc_speculation_barrier.
  
! 2018-03-05  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/84700
! 	* combine.c (combine_simplify_rtx): Don't try to simplify if
! 	if_then_else_cond returned non-NULL, but either true_rtx or false_rtx
! 	are equal to x.
  
! 2018-03-05  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	* config/rs6000/rs6000.c (rs6000_loop_align): Don't align tiny loops
! 	to 32 bytes when compiling for POWER9.
  
! 2018-03-05  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/84564
! 	* config/i386/i386.c (ix86_function_ok_for_sibcall): Check for
! 	regparm >= 3 with no arg reg available also for calls with
! 	flag_force_indirect_call.  Pass decl to ix86_function_regparm.
  
! 	PR target/84524
! 	* config/i386/sse.md (*<code><mode>3): Replace <mask_prefix3> with
! 	orig,vex.
! 	(*<plusminus_insn><mode>3): Likewise.  Remove <mask_operand3> uses.
  
! 2018-03-05  Peter Bergner  <bergner@vnet.ibm.com>
  
! 	PR target/84264
! 	* config/rs6000/vector.md (mov<mode>): Disallow altivec memory operands.
  
! 2018-03-05  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/84486
! 	* tree-ssa-pre.c (create_expression_by_pieces): Remove dead code.
! 	When inserting a __builtin_assume_aligned call set the LHS
! 	SSA name alignment info accordingly.
  
! 2018-03-05  Wilco Dijkstra  <wdijkstr@arm.com>
  
! 	PR tree-optimization/84114
! 	* config/aarch64/aarch64.c (aarch64_reassociation_width)
! 	Avoid reassociation of FLOAT_MODE addition.
  
! 2018-03-05  Olga Makhotina  <olga.makhotina@intel.com>
  
! 	* common/config/i386/i386-common.c (OPTION_MASK_ISA_PCONFIG_SET,
! 	OPTION_MASK_ISA_PCONFIG_UNSET, OPTION_MASK_ISA_WBNOINVD_SET,
! 	OPTION_MASK_ISA_WBNOINVD_UNSET): New definitions.
! 	(ix86_handle_option): Handle -mpconfig and -mwbnoinvd.
! 	* config.gcc (pconfigintrin.h, wbnoinvdintrin.h) : Add headers.
! 	* config/i386/cpuid.h (bit_PCONFIG, bit_WBNOINVD): New.
! 	* config/i386/driver-i386.c (host_detect_local_cpu): Detect -mpconfig
! 	and -mwbnoinvd.
! 	* config/i386/i386-builtin.def (__builtin_ia32_wbnoinvd,
! 	__builtin_ia32_wbinvd): New builtins.
! 	(SPECIAL_ARGS2): New.
! 	* config/i386/i386-c.c (__WBNOINVD__, __PCONFIG__): New.
! 	(SPECIAL_ARGS2): New.
! 	* config/i386/i386.c (ix86_target_string): Add -mpconfig and -mwbnoinvd.
! 	(ix86_valid_target_attribute_inner_p): Ditto.
! 	(ix86_init_mmx_sse_builtins): Add special_args2.
! 	* config/i386/i386.h (TARGET_PCONFIG, TARGET_PCONFIG_P, TARGET_WBNOINVD,
! 	TARGET_WBNOINVD_P): New.
! 	* config/i386/i386.md (UNSPECV_WBINVD, UNSPECV_WBNOINVD): New.
! 	(define_insn "wbinvd", define_insn "wbnoinvd"): New.
! 	* config/i386/i386.opt: Add -mpconfig and -mwbnoinvd.
! 	* config/i386/immintrin.h (_wbinvd): New intrinsic.
! 	* config/i386/pconfigintrin.h: New file.
! 	* config/i386/wbnoinvdintrin.h: Ditto.
! 	* config/i386/x86intrin.h: Add headers pconfigintrin.h and wbnoinvdintrin.h.
! 	* doc/invoke.texi (-mpconfig, -mwbnoinvd): New.
  
! 2018-03-05  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/84670
! 	* tree-ssa-pre.c (struct bb_bitmap_sets): Add visited_with_visited_succs
! 	member.
! 	(BB_VISITED_WITH_VISITED_SUCCS): New define.
! 	(compute_antic): Initialize BB_VISITED_WITH_VISITED_SUCCS.
! 	(compute_antic_aux): Only assert the number of values in ANTIC_IN
! 	doesn't grow if all successors (recursively) were visited at least
! 	once.
  
! 2018-03-05  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/84650
! 	* tree-ssa-loop-im.c (pass_lim::execute): Reset the SCEV cache
! 	if executed in the loop pipeline.
  
! 2018-03-05  Sandra Loosemore  <sandra@codesourcery.com>
  
! 	* doc/configfiles.texi (Configuration Files): Move info about
! 	conditionalizing $target-protos.h to...
! 	* doc/sourcebuild.texi (Back End): Here.  Explain how $target.h
! 	differs from $target-protos.h.
  
! 2018-03-05  Kito Cheng  <kito.cheng@gmail.com>
! 	    Chung-Ju Wu  <jasonwucj@gmail.com>
  
! 	* config/nds32/nds32-protos.h (nds32_expand_setmem): Declare.
! 	* config/nds32/nds32-multiple.md (setmemsi): Define.
! 	* config/nds32/nds32-memory-manipulation.c
! 	(nds32_gen_dup_4_byte_to_word_value): New.
! 	(emit_setmem_word_loop): New.
! 	(emit_setmem_byte_loop): New.
! 	(nds32_expand_setmem_loop): New.
! 	(nds32_expand_setmem_loop_v3m): New.
! 	(nds32_expand_setmem_unroll): New.
! 	(nds32_expand_setmem): New.
  
! 2018-03-04  Kito Cheng  <kito.cheng@gmail.com>
! 	    Chung-Ju Wu  <jasonwucj@gmail.com>
  
! 	* config/nds32/nds32-memory-manipulation.c
! 	(nds32_emit_load_store): New.
! 	(nds32_emit_post_inc_load_store): New.
! 	(nds32_emit_mem_move): New.
! 	(nds32_emit_mem_move_block): New.
! 	(nds32_expand_movmemsi_loop_unknown_size): New.
! 	(nds32_expand_movmemsi_loop_known_size): New.
! 	(nds32_expand_movmemsi_loop): New.
! 	(nds32_expand_movmemsi_unroll): New.
! 	(nds32_expand_movmemqi): Rename ...
! 	(nds32_expand_movmemsi): ... to this.
! 	* config/nds32/nds32-multiple.md (movmemqi): Rename ...
! 	(movmemsi): ... to this.
! 	* config/nds32/nds32-protos.h (nds32_expand_movmemqi): Rename ...
! 	(nds32_expand_movmemsi): ... to this.
  
! 2018-03-04  Kito Cheng  <kito.cheng@gmail.com>
! 	    Monk Chiang  <sh.chiang04@gmail.com>
! 	    Chung-Ju Wu  <jasonwucj@gmail.com>
  
! 	* config/nds32/nds32-protos.h
! 	(nds32_expand_load_multiple): New arguments.
! 	(nds32_expand_store_multiple): Ditto.
! 	(nds32_valid_multiple_load_store): Rename ...
! 	(nds32_valid_multiple_load_store_p): ... to this.
! 	* config/nds32/nds32-memory-manipulation.c
! 	(nds32_expand_load_multiple): Refine implementation.
! 	(nds32_expand_store_multiple): Ditto.
! 	* config/nds32/nds32-multiple.md
! 	(load_multiple): Update nds32_expand_load_multiple interface.
! 	(store_multiple): Update nds32_expand_store_multiple interface.
! 	* config/nds32/nds32-predicates.c
! 	(nds32_valid_multiple_load_store): Rename ...
! 	(nds32_valid_multiple_load_store_p): ... to this and refine
! 	implementation.
! 	* config/nds32/predicates.md
! 	(nds32_load_multiple_and_update_address_operation): New predicate.
! 	(nds32_store_multiple_and_update_address_operation): New predicate.
  
! 2018-03-04  Kito Cheng  <kito.cheng@gmail.com>
! 	    Chung-Ju Wu  <jasonwucj@gmail.com>
  
! 	* config/nds32/nds32.md (type): Add load_multiple and store_multiple.
! 	(combo): New attribute.
! 	* config/nds32/nds32-multiple.md: Refine patterns with new attributes.
  
! 2018-03-03  Chung-Ju Wu  <jasonwucj@gmail.com>
  
! 	* config/nds32/nds32.opt: Change -mcmodel= default value.
  
! 2018-03-03  Kito Cheng  <kito.cheng@gmail.com>
! 	    Monk Chiang  <sh.chiang04@gmail.com>
! 	    Chung-Ju Wu  <jasonwucj@gmail.com>
  
! 	* config/nds32/constants.md (unspec_element): New enum.
! 	* config/nds32/constraints.md (Umw): New constraint.
! 	* config/nds32/nds32-intrinsic.c: Add more builtin functions.
! 	* config/nds32/nds32-intrinsic.md: Likewise.
! 	* config/nds32/nds32-md-auxiliary.c (nds32_regno_to_enable4): New.
! 	(nds32_valid_smw_lwm_base_p): New.
! 	(nds32_output_smw_single_word): New.
! 	(nds32_output_lmw_single_word): New.
! 	(nds32_expand_unaligned_load): New.
! 	(nds32_expand_unaligned_store): New.
! 	* config/nds32/nds32-protos.h (nds32_valid_smw_lwm_base_p): Declare.
! 	(nds32_output_smw_single_word): Declare.
! 	(nds32_output_lmw_single_word): Declare.
! 	(nds32_expand_unaligned_load): Declare.
! 	(nds32_expand_unaligned_store): Declare.
! 	* config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_UALOAD_HW,
! 	NDS32_BUILTIN_UALOAD_W, NDS32_BUILTIN_UALOAD_DW,
! 	NDS32_BUILTIN_UASTORE_HW, NDS32_BUILTIN_UASTORE_W,
! 	NDS32_BUILTIN_UASTORE_DW.
! 	* config/nds32/predicates.md (nds32_lmw_smw_base_operand): New
! 	predicate.
  
! 2018-03-03  Monk Chiang  <sh.chiang04@gmail.com>
! 	    Kito Cheng  <kito.cheng@gmail.com>
! 	    Chung-Ju Wu  <jasonwucj@gmail.com>
  
! 	* config/nds32/nds32-intrinsic.c
! 	(nds32_expand_builtin_null_ftype_reg): Delete.
! 	(nds32_expand_builtin_reg_ftype_imm): Ditto.
! 	(nds32_expand_builtin_null_ftype_reg_imm): Ditto.
! 	(nds32_read_argument): New.
! 	(nds32_legitimize_target): Ditto.
! 	(nds32_legitimize_argument): Ditto.
! 	(nds32_check_constant_argument): Ditto.
! 	(nds32_expand_unop_builtin): Ditto.
! 	(nds32_expand_unopimm_builtin): Ditto.
! 	(nds32_expand_binop_builtin): Ditto.
! 	(nds32_builtin_decl_impl): Ditto.
! 	(builtin_description): Ditto.
! 	(nds32_expand_builtin_impl): Rewrite with new infrastructure.
! 	(nds32_init_builtins_impl): Ditto.
! 	* config/nds32/nds32.c (TARGET_BUILTIN_DECL): Define.
! 	(nds32_builtin_decl): New.
! 	* config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_COUNT.
! 	* config/nds32/nds32-protos.h (nds32_builtin_decl_impl): Declare.
  
! 2018-03-02  Jeff Law  <law@redhat.com>
  
! 	* reorg.c (stop_search_p): Handle DEBUG_INSN.
! 	(redundant_insn, fill_simple_delay_slots): Likewise.
! 	(fill_slots_from_thread): Likewise.
! 	* resource.c (mark_referenced_resources): Likewise.
! 	(mark_set_resources, find_dead_or_set_registers): Likewise.
  
! 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
  
! 	* substring-locations.h (format_warning_va): Formatting fix for
! 	ATTRIBUTE_GCC_DIAG.
! 	(format_warning_at_substring): Fix up ATTRIBUTE_GCC_DIAG second
! 	argument.
! 	(format_warning_n_va, format_warning_at_substring_n): New prototypes.
! 	* substring-locations.c: Include intl.h.
! 	(format_warning_va): Turned into small wrapper around
! 	format_warning_n_va, renamed to ...
! 	(format_warning_n_va): ... this, add N and PLURAL_GMSGID arguments,
! 	rename GMSGID to SINGULAR_GMSGID, if SINGULAR_GMSGID != PLURAL_GMSGID,
! 	use ngettext.
! 	(format_warning_at_substring_n): New function.
! 	* gimple-ssa-sprintf.c: Remove GCC diagnostic ignored pragma.
! 	(fmtwarn): Add ATTRIBUTE_GCC_DIAG.  Turn into a copy of
! 	format_warning_at_substring with just a shorter name instead of
! 	const function pointer.
! 	(fmtwarn_n): New function.
! 	(maybe_warn, format_directive, parse_directive): Use fmtwarn_n where
! 	appropriate, get rid of all the fmtstr temporaries, move conditionals
! 	with G_() wrapped string literals directly into fmtwarn arguments,
! 	cast dir.len to (int), formatting fixes.
  
! 2018-03-02  Thomas Schwinge  <thomas@codesourcery.com>
  
! 	* doc/invoke.texi: Remove "Cilk Plus" references.
  
! 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
! 	    Richard Biener  <rguenther@suse.de>
  
! 	PR ipa/84628
! 	* expr.c (expand_expr_real_1) <case CALL_EXPR>: Don't emit diagnostics
! 	for error or warning attributes if CALL_FROM_THUNK_P is set.
! 	Formatting fixes.
  
! 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/56540
! 	* config/pa/pa.h (TARGET_CPU_CPP_BUILTINS): Predefine
! 	__SIZEOF_128__ macro if HPUX_LONG_DOUBLE_LIBRARY.
  
! 	PR target/56540
! 	* config/ia64/ia64.h (TARGET_CPU_CPP_BUILTINS): Predefine
! 	__SIZEOF_{FPREG,FLOAT{80,128}}__ macros.
  
! 	* predict.c (test_prediction_value_range): Use PROB_UNINITIALIZED
! 	instead of -1U in last predictors element's probability member.
  
! 2018-03-02  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR ipa/83983
! 	* ipa-devirt.c (odr_subtypes_equivalent_p): Get the ODR type of both
! 	arguments if they are comparable.
  
! 2018-03-02  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	PR tree-optimization/84634
! 	* tree-vect-stmts.c (vectorizable_store, vectorizable_load): Replace
! 	masks and masked_loop_p with a single loop_masks, making sure it's
! 	null for bb vectorization.
  
! 2018-03-02  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* tree-vect-data-refs.c (vect_analyze_data_ref_dependence)
! 	(vect_analyze_data_ref_access): Use loop->safe_len rather than
! 	loop->force_vectorize to check whether there is no alias.
  
! 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/84614
! 	* rtl.h (prev_real_nondebug_insn, next_real_nondebug_insn): New
! 	prototypes.
! 	* emit-rtl.c (next_real_insn, prev_real_insn): Fix up function
! 	comments.
! 	(next_real_nondebug_insn, prev_real_nondebug_insn): New functions.
! 	* cfgcleanup.c (try_head_merge_bb): Use prev_real_nondebug_insn
! 	instead of a loop around prev_real_insn.
! 	* combine.c (move_deaths): Use prev_real_nondebug_insn instead of
! 	prev_real_insn.
  
! 	PR inline-asm/84625
! 	* config/i386/i386.c (ix86_print_operand): Use conditional
! 	output_operand_lossage instead of gcc_assert if CONST_VECTOR is not
! 	zero vector.
  
! 2018-03-02  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/84427
! 	* tree-ssa-pre.c (bitmap_remove_expr_from_set): Remove.
! 	(bitmap_set_subtract_values): Rewrite to handle multiple
! 	exprs per value.
! 	(clean): Likewise.
! 	(prune_clobbered_mems): Likewise.
! 	(phi_translate): Take edge instead of pred/phiblock.
! 	(phi_translate_1): Likewise.
! 	(phi_translate_set): Likewise.  Insert all translated
! 	exprs for a value into the set, keeping possibly multiple
! 	expressions per value.
! 	(compute_antic_aux): Adjust for phi_translate changes.
! 	When intersecting union the expressions and prune those
! 	not in the final value set, keeping possibly multiple
! 	expressions per value.  Do not use value-insertion
! 	for unioning ANTIC_OUT U EXP_GEN - TMP_GEN but merge
! 	all expressions.  Add verification that the value-sets
! 	only shrink during iteration.
! 	(compute_partial_antic_aux): Adjust for the phi_translate changes.
! 	(do_pre_regular_insertion): Likewise.
! 	(do_pre_partial_partial_insertion): Likewise.
  
! 2018-03-02  Richard Biener  <rguenther@suse.de>
  
! 	PR target/82005
! 	* config/darwin.c (saved_debug_info_level): New static global.
! 	(darwin_asm_lto_start): Disable debug info generation for LTO out.
! 	(darwin_asm_lto_end): Restore debug info generation settings.
  
! 2018-03-01  Martin Liska  <mliska@suse.cz>
  
! 	PR sanitizer/82484
! 	* sanopt.c (sanitize_rewrite_addressable_params): Do not handle
! 	volatile arguments.
  
! 2018-03-01  Richard Biener  <rguenther@suse.de>
  
! 	PR debug/84645
! 	* dwarf2out.c (gen_variable_die): Properly handle late VLA
! 	type annotation with LTO when debug was disabled at compile-time.
  
! 2018-03-01  Matthew Fortune  <mfortune@gmail.com>
  
! 	* config/mips/mips.c (mips_final_prescan_insn): Fix incorrect
! 	XINT with INTVAL.
! 	(mips_final_postscan_insn): Likewise.
  
! 2018-03-01  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	PR rtl-optimization/84528
! 	* alias.c (init_alias_target): Add commentary.
! 	(init_alias_analysis): Only give HARD_FRAME_POINTER_REGNUM
! 	a unique base value if the frame pointer is not eliminated
! 	to the stack pointer.
  
! 2018-03-01  Tom de Vries  <tom@codesourcery.com>
  
! 	PR rtl-optimization/83327
! 	* lra-int.h (hard_regs_spilled_into): Declare.
! 	* lra.c (hard_regs_spilled_into): Define.
! 	(init_reg_info): Init hard_regs_spilled_into.
! 	* lra-spills.c (assign_spill_hard_regs): Update hard_regs_spilled_into.
! 	* lra-lives.c (make_hard_regno_born, make_hard_regno_dead)
! 	(process_bb_lives): Handle hard_regs_spilled_into.
! 	(lra_create_live_ranges_1): Before doing liveness propagation, clear
! 	regs in all_hard_regs_bitmap if set in hard_regs_spilled_into.
  
! 2018-02-28  David Edelsohn  <dje.gcc@gmail.com>
  
! 	* config.gcc (powerpc-ibm-aix7.1.*): New stanza.
! 	(powerpc-ibm-aix[789]*): Default to AIX 7.2.
! 	* config/rs6000/aix71.h (TARGET_DEFAULT): Revert to Power4 ISA.
! 	* config/rs6000/aix72.h: New file.
  
! 2018-02-28  Jakub Jelinek  <jakub@redhat.com>
  
! 	* gimple-ssa-warn-restrict.c (maybe_diag_overlap): Use warning_n
! 	instead of warning_at with conditional singular and plural messages
! 	where possible.
  
! 	PR target/52991
! 	* stor-layout.c (update_alignment_for_field): For
! 	targetm.ms_bitfield_layout_p (rli->t), if !is_bitfield
! 	&& !DECL_PACKED (field), do the alignment update, just use
! 	only desired_align instead of MAX (type_align, desired_align)
! 	as the alignment.
! 	(place_field): Don't do known_align < desired_align handling
! 	early if targetm.ms_bitfield_layout_p (rli->t) and rli->prev_field
! 	is non-NULL, instead do it after rli->prev_field handling and
! 	only if not within a bitfield word.  For DECL_PACKED (field)
! 	use type_align of BITS_PER_UNIT.
  
! 2018-02-28  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* config/aarch64/aarch64.c (aarch64_emit_probe_stack_range): Remove
! 	superfluous parentheses and trailing spaces.
  
! 2018-02-28  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/84584
! 	* graphite-scop-detection.c (scop_detection::add_scop): Discard
! 	SCoPs with fake exit edge.
  
! 2018-02-28  Martin Liska  <mliska@suse.cz>
  
! 	PR testsuite/84597
! 	* timevar.c (timer::print): Fix format to properly print 100%
! 	values.
  
! 2018-02-28  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/84607
! 	* genmatch.c (capture_info::walk_match): Do not mark
! 	captured expressions without operands as expr_p given
! 	they act more like predicates and should be subject to
! 	"lost tail" side-effect preserving.
  
! 2018-02-28  Alexandre Oliva  <aoliva@redhat.com>
  
! 	PR rtl-optimization/81611
! 	* auto-inc-dec.c (attempt_change): Move dead note from
! 	mem_insn if it's the next use of regno
! 	(find_address): Take address use of reg holding
! 	non-incremented value.  Add parm to limit search to the named
! 	reg only.
! 	(merge_in_block): Attempt to use a mem insn that is the next
! 	use of the original regno.
  
! 2018-02-27  Martin Sebor  <msebor@redhat.com>
  
! 	PR c++/83871
! 	* gcc/doc/invoke.texi (-Wmissing-attributes): New option.
! 	* gcc/print-tree.c (print_node): Handle DECL_UNINLINABLE.
  
! 2018-02-27  Martin Sebor  <msebor@redhat.com>
  
! 	PR translation/84207
! 	* diagnostic-core.h (warning_n, error_n, inform_n): Change
! 	n argument to unsigned HOST_WIDE_INT.
! 	* diagnostic.c (warning_n, error_n, inform_n): Ditto.
! 	(diagnostic_n_impl): Ditto.  Handle arguments in excess of LONG_MAX.
! 	* gimple-ssa-sprintf.c (format_directive): Simplify inform_n call.
! 	* tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Use warning_n.
  
! 2018-02-27  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/84512
! 	* tree-vect-loop.c (vect_compute_single_scalar_iteration_cost):
! 	Do not use the estimate returned from record_stmt_cost for
! 	the scalar iteration cost but sum properly using add_stmt_cost.
  
! 2018-02-27  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/84466
! 	* graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
! 	Adjust last change to less strictly validate use operands.
  
! 2018-02-27  Martin Liska  <mliska@suse.cz>
  
! 	PR gcov-profile/84548
! 	* gcov.c (process_file): Allow partial overlap and consider it
! 	also as group functions.
! 	(output_lines): Properly calculate range of lines for a group.
  
! 2018-02-27  Martin Liska  <mliska@suse.cz>
  
! 	* timevar.c (timer::print_row): Remove 'usr', 'sys', 'wall' and
! 	'ggc' suffixes.  Change first column width.
! 	(timer::print): Fix formatting of the column.
  
! 2018-02-27  Alexandre Oliva  <aoliva@redhat.com>
  
! 	* tree-ssa-live.c (remove_unused_scope_block_p): Do not
! 	preserve inline entry blocks for the sake of debug inline
! 	entry point markers alone.
! 	(remove_unused_locals): Suggest in comments a better place to
! 	force the preservation of inline entry blocks that are
! 	otherwise unused, but do not preserve them.
  
! 2018-02-26  H.J. Lu  <hongjiu.lu@intel.com>
  
! 	* config/i386/i386.c (ix86_output_indirect_jmp): Update comments.
  
! 2018-02-26  H.J. Lu  <hongjiu.lu@intel.com>
  
! 	PR target/84039
! 	* config/i386/constraints.md (Bs): Replace
! 	ix86_indirect_branch_register with
! 	TARGET_INDIRECT_BRANCH_REGISTER.
! 	(Bw): Likewise.
! 	* config/i386/i386.md (indirect_jump): Likewise.
! 	(tablejump): Likewise.
! 	(*sibcall_memory): Likewise.
! 	(*sibcall_value_memory): Likewise.
! 	Peepholes of indirect call and jump via memory: Likewise.
! 	(*sibcall_GOT_32): Disallowed for TARGET_INDIRECT_BRANCH_REGISTER.
! 	(*sibcall_value_GOT_32): Likewise.
! 	* config/i386/predicates.md (indirect_branch_operand): Likewise.
! 	(GOT_memory_operand): Likewise.
! 	(call_insn_operand): Likewise.
! 	(sibcall_insn_operand): Likewise.
! 	(GOT32_symbol_operand): Likewise.
! 	* config/i386/i386.h (TARGET_INDIRECT_BRANCH_REGISTER): New.
  
! 2018-02-26  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR rtl-optimization/83496
! 	* reorg.c (steal_delay_list_from_target): Change REDUNDANT array from
! 	booleans to RTXes.  Call fix_reg_dead_note on every non-null element.
! 	(steal_delay_list_from_fallthrough): Call fix_reg_dead_note on a
! 	redundant insn, if any.
! 	(relax_delay_slots): Likewise.
! 	(update_reg_unused_notes): Rename REDUNDANT_INSN to OTHER_INSN.
  
! 2018-02-26  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	PR tree-optimization/83965
! 	* tree-vect-patterns.c (vect_reassociating_reduction_p): Assume
! 	that grouped statements are part of a reduction chain.  Return
! 	true if the statement is not marked as a reduction itself but
! 	is part of a group.
! 	(vect_recog_dot_prod_pattern): Don't check whether the statement
! 	is part of a group here.
! 	(vect_recog_sad_pattern): Likewise.
! 	(vect_recog_widen_sum_pattern): Likewise.
  
! 2018-02-26  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR debug/84545
! 	* final.c (rest_of_clean_state): Also look for calls inside sequences.
  
! 2018-02-26  H.J. Lu  <hongjiu.lu@intel.com>
  
! 	PR target/84530
! 	* config/i386/i386-protos.h (ix86_output_indirect_jmp): Remove
! 	the bool argument.
! 	(ix86_output_indirect_function_return): New prototype.
! 	(ix86_split_simple_return_pop_internal): Likewise.
! 	* config/i386/i386.c (indirect_return_via_cx): New.
! 	(indirect_return_via_cx_bnd): Likewise.
! 	(indirect_thunk_name): Handle return va CX_REG.
! 	(output_indirect_thunk_function): Create alias for
! 	__x86_return_thunk_[re]cx and __x86_return_thunk_[re]cx_bnd.
! 	(ix86_output_indirect_jmp): Remove the bool argument.
! 	(ix86_output_indirect_function_return): New function.
! 	(ix86_split_simple_return_pop_internal): Likewise.
! 	* config/i386/i386.md (*indirect_jump): Don't pass false
! 	to ix86_output_indirect_jmp.
! 	(*tablejump_1): Likewise.
! 	(simple_return_pop_internal): Change it to define_insn_and_split.
! 	Call ix86_split_simple_return_pop_internal to split it for
! 	-mfunction-return=.
! 	(simple_return_indirect_internal): Call
! 	ix86_output_indirect_function_return instead of
! 	ix86_output_indirect_jmp.
  
! 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR bootstrap/84405
! 	* vec.h (vec_default_construct): For BROKEN_VALUE_INITIALIZATION use
! 	memset and value initialization afterwards.
  
! 2018-02-26  Christophe Lyon  <christophe.lyon@linaro.org>
  
! 	* Makefile.in (lto-wrapper): Use ALL_LINKERFLAGS.
  
! 2018-02-26  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
  
!         PR target/84521
! 	* common/config/aarch64/aarch64-common.c
! 	(aarch_option_optimization_table[]): Switch
! 	off fomit-frame-pointer
  
! 2018-02-26  Kito Cheng  <kito.cheng@gmail.com>
! 	    Chung-Ju Wu  <jasonwucj@gmail.com>
  
! 	* config/nds32/nds32-multiple.md (load_multiple): Disallow
! 	volatile memory.
! 	(store_multiple): Ditto.
  
! 2018-02-26  Kito Cheng  <kito.cheng@gmail.com>
  
! 	* config.gcc: Add --with-cpu support for nds32 target.
! 	* config/nds32/nds32-opts.h (nds32_cpu_type): New.
! 	* config/nds32/nds32.opt: Add -mcpu= option.
  
! 2018-02-25  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	* config/rs6000/rs6000.opt (mvrsave=no, mvrsave=yes, isel=no,
! 	isel=yes): Warn for these deprecated options.
  
! 2018-02-23  David Edelsohn  <dje.gcc@gmail.com>
  
! 	* config/rs6000/aix71.h (TARGET_DEFAULT): Change to
! 	ISA_2_5_MASKS_EMBEDDED.
  
! 2018-02-23  Jakub Jelinek  <jakub@redhat.com>
  
! 	* ipa-prop.c (ipa_vr_ggc_hash_traits::hash): Hash p->min and
! 	p->max as pointers rather than using iterative_hash_expr.
  
! 2018-02-23  Carl Love  <cel@us.ibm.com>
  
! 	* config/rs6000/rs6000-builtin.def: Change VSIGNED2 and VUNSIGNED2
! 	macro expansions from BU_VSX_2 to BU_P8V_VSX_2 and BU_VSX_OVERLOAD_2 to
! 	BU_P8V_OVERLOAD_2.
! 	* config/rs6000/rs6000-c.c: Change VSX_BUILTIN_VEC_VSIGNED2 to
! 	P8V_BUILTIN_VEC_VSIGNED2.  Change VSX_BUILTIN_VEC_VUNSIGNED2 to
! 	P8V_BUILTIN_VEC_VUNSIGNED2.
  
! 2018-02-22  Vladimir Makarov  <vmakarov@redhat.com>
  
! 	PR target/81572
! 	* lra-int.h (LRA_UNKNOWN_ALT, LRA_NON_CLOBBERED_ALT): New macros.
! 	* lra.c (lra_set_insn_recog_data, lra_update_insn_recog_data): Use
! 	LRA_UNKNOWN_ALT.
! 	* lra-constraints.c (curr_insn_transform): Set up
! 	LRA_NON_CLOBBERED_ALT for moves processed on the fast path.  Use
! 	LRA_UNKNOWN_ALT.
! 	(remove_inheritance_pseudos): Use LRA_UNKNOWN_ALT.
! 	* lra-eliminations.c (spill_pseudos): Ditto.
! 	(process_insn_for_elimination): Ditto.
! 	* lra-lives.c (reg_early_clobber_p): Use the new macros.
! 	* lra-spills.c (spill_pseudos): Use LRA_UNKNOWN_ALT and
! 	LRA_NON_CLOBBERED_ALT.
  
! 2018-02-22  Martin Sebor  <msebor@redhat.com>
  
! 	PR tree-optimization/84480
! 	* gimple-fold.c (gimple_fold_builtin_strcpy): Move warnings
! 	to maybe_diag_stxncpy_trunc.  Call it.
! 	* tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Integrate warnings
! 	from gimple_fold_builtin_strcpy.  Print inlining stack.
! 	(handle_builtin_stxncpy): Print inlining stack.
! 	* tree-ssa-strlen.h (maybe_diag_stxncpy_trunc): Declare.
  
! 2018-02-22  H.J. Lu  <hongjiu.lu@intel.com>
  
! 	PR target/84176
! 	* config/i386/i386.c (ix86_set_indirect_branch_type): Issue an
! 	error when -mindirect-branch=thunk-extern, -fcf-protection=branch
! 	and -fcheck-pointer-bounds are used together.
! 	(indirect_thunk_prefix): New enum.
! 	(indirect_thunk_need_prefix): New function.
! 	(indirect_thunk_name): Replace need_bnd_p with need_prefix.  Use
! 	"_nt" instead of "_bnd" for NOTRACK prefix.
! 	(output_indirect_thunk): Replace need_bnd_p with need_prefix.
! 	(output_indirect_thunk_function): Likewise.
! 	(): Likewise.
! 	(ix86_code_end): Update output_indirect_thunk_function calls.
! 	(ix86_output_indirect_branch_via_reg): Replace
! 	ix86_bnd_prefixed_insn_p with indirect_thunk_need_prefix.
! 	(ix86_output_indirect_branch_via_push): Likewise.
! 	(ix86_output_function_return): Likewise.
! 	* doc/invoke.texi: Document -mindirect-branch=thunk-extern is
! 	incompatible with -fcf-protection=branch and
! 	-fcheck-pointer-bounds.
  
! 2018-02-22  Steve Ellcey  <sellcey@cavium.com>
  
! 	PR target/83335
! 	* config/aarch64/aarch64.c (aarch64_print_address_internal):
! 	Change gcc_assert call to output_operand_lossage.
  
! 2018-02-22  Steve Ellcey  <sellcey@cavium.com>
  
! 	* doc/extend.texi (__builtin_extend_pointer): Document builtin.
  
! 2018-02-22  DJ Delorie  <dj@redhat.com>
! 	    Sebastian Perta  <sebastian.perta@renesas.com>
! 	    Oleg Endo  <olegendo@gcc.gnu.org>
  
! 	* config/rx/rx.c (rx_rtx_costs): New function.
! 	(TARGET_RTX_COSTS): Override to use rx_rtx_costs.
  
! 2018-02-22  Thomas Preud'homme  <thomas.preudhomme@arm.com>
  
! 	* config/arm/t-multilib: Map Armv8-R to Armv7 multilibs.
  
! 2018-02-22  Martin Liska  <mliska@suse.cz>
  
! 	PR driver/83193
! 	* common/config/arm/arm-common.c (arm_print_hint_for_cpu_option):
! 	Add "native" as a possible value.
  
! 2018-02-22  Martin Liska  <mliska@suse.cz>
  
! 	PR driver/83193
! 	* config/i386/i386.c (ix86_option_override_internal):
! 	Add "native" as a possible value for -march and -mtune.
  
! 2018-02-22  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/84502
! 	* stor-layout.c (finalize_type_size): Propagate TYPE_EMPTY_P flag
! 	to all type variants.
  
! 	PR tree-optimization/84503
! 	* gimple-ssa-store-merging.c (merged_store_group::merge_into): Compute
! 	width as info->bitpos + info->bitsize - start.
! 	(merged_store_group::merge_overlapping): Simplify width computation.
! 	(check_no_overlap): New function.
! 	(imm_store_chain_info::try_coalesce_bswap): Compute expected
! 	start + width and last_order of the group, fail if check_no_overlap
! 	fails.
! 	(imm_store_chain_info::coalesce_immediate_stores): Don't merge info
! 	to group if check_no_overlap fails.
  
! 2018-02-21  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	* config/rs6000/altivec.md: Delete contraint arguments to
! 	define_expand, define_split, and define_peephole2, and in
! 	define_insn_and_split if always unused.
! 	* config/rs6000/darwin.md: Ditto.
! 	* config/rs6000/dfp.md: Ditto.
! 	* config/rs6000/rs6000.md: Ditto.
! 	* config/rs6000/sync.md: Ditto.
! 	* config/rs6000/vector.md: Ditto.
! 	* config/rs6000/vsx.md: Ditto.
  
! 2018-02-21  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	* config/rs6000/altivec.md: Write output control strings as braced
! 	blocks instead of double-quoted strings.
! 	* config/rs6000/darwin.md: Ditto.
! 	* config/rs6000/rs6000.md: Ditto.
! 	* config/rs6000/vector.md: Ditto.
! 	* config/rs6000/vsx.md: Ditto.
  
! 2018-02-21  Jason Merrill  <jason@redhat.com>
  
! 	PR c++/84314 - ICE with templates and fastcall attribute.
! 	* attribs.c (build_type_attribute_qual_variant): Remove assert.
  
! 2018-02-21  Jan Hubicka  <hubicka@ucw.cz>
  
! 	* ipa-cp.c (determine_versionability): Fix comment typos.
  
! 2018-02-21  Jan Hubicka  <hubicka@ucw.cz>
  
! 	PR c/84229
! 	* ipa-cp.c (determine_versionability): Do not version functions caling
! 	va_arg_pack.
  
! 2018-02-21  Martin Liska  <mliska@suse.cz>
  
! 	PR driver/83193
! 	* config/aarch64/aarch64.c (aarch64_print_hint_for_core_or_arch):
! 	Add "native" as a possible value.
! 	* config/aarch64/aarch64.h (HAVE_LOCAL_CPU_DETECT):  Define
! 	the macro when native cpu detection is available.
  
! 2018-02-21  Martin Liska  <mliska@suse.cz>
  
! 	PR driver/83193
! 	* common/config/arm/arm-common.c (arm_print_hint_for_arch_option):
! 	Add "native" as a possible value.
! 	* config/arm/arm.h (HAVE_LOCAL_CPU_DETECT): Define the macro
! 	when native cpu detection is available.
  
! 2018-02-21  Jakub Jelinek  <jakub@redhat.com>
  	    Martin Sebor  <msebor@redhat.com>
  
! 	PR tree-optimization/84478
! 	* gimple-fold.h (get_range_strlen): Add a bool argument defaulted to
! 	false.
! 	* gimple-fold.c (get_range_strlen): Make minlen const and assume it
! 	can't be NULL.  Change FUZZY from bool to int, for 1 add PHI/COND_EXPR
! 	support which is conservatively correct, for 2 only stay conservative
! 	for maxlen.  Formatting and comment capitalization fixes.  Add STRICT
! 	argument to the 2 argument get_range_strlen, adjust 6 arg
! 	get_range_strlen caller and clear minmaxlen[0] and [1] if it returned
! 	false.
! 	(get_maxval_strlen): Adjust 6 arg get_range_strlen caller.
! 	(gimple_fold_builtin_strlen): Pass true as last argument to
! 	get_range_strlen.
  
! 2018-02-20  Martin Sebor  <msebor@redhat.com>
  
! 	PR middle-end/84095
! 	* gimple-ssa-warn-restrict.c (builtin_memref::extend_offset_range): New.
! 	(builtin_memref::set_base_and_offset): Same.  Handle inner references.
! 	(builtin_memref::builtin_memref): Factor out parts into
! 	set_base_and_offset and call it.
  
! 2018-02-20  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	PR middle-end/84406
! 	* optabs-query.c (find_widening_optab_handler_and_mode): If from_mode
! 	is a scalar_int_mode, assert that to_mode is a scalar_int_mode with
! 	greater precision.  If to_mode is a MODE_PARTIAL_INT, stop the
! 	search at the associated MODE_INT.
  
! 2018-02-20  Jeff Law  <law@redhat.com>
  
! 	PR middle-end/82123
! 	PR tree-optimization/81592
! 	PR middle-end/79257
! 	* gimple-ssa-sprintf.c (format_integer): Query EVRP range analyzer
! 	for range data rather than using global data.
! 	* gimple-ssa-sprintf.c (get_int_range): Query EVRP range analyzer for
! 	range data rather than using global data.
! 	* gimple-ssa-sprintf.c (get_int_range): Accept vr_values parameter
! 	pass it to children as needed.
! 	(struct directive::fmtresult): Similarly.
! 	(struct directive::set_width): Similarly.
! 	(struct directive::set_precision): Similarly.
! 	(format_integer, format_directive, parse_directive): Similarly.
! 	(format_none): Accept unnamed vr_values parameter.
! 	(format_percent, format_floating, format_character): Similarly.
! 	(format_string, format_plain): Similarly.
! 	* gimple-ssa-sprintf.c (sprintf_dom_walker::handle_gimple_call): Query
! 	the EVRP range analyzer for range data rather than using global data.
! 	* gimple-ssa-sprintf.c: Include alloc-pool.h, vr-values.h and 
! 	gimple-ssa-evrp-analyze.h
! 	(class sprintf_dom_walker): Add after_dom_children member function.
! 	Add evrp_range_analyzer member.
! 	(sprintf_dom_walker::before_dom_children): Call into the EVRP
! 	range analyzer as needed.
! 	(sprintf_dom_walker::after_dom_children): New member function.
! 	* gimple-ssa-evrp-analyze.c (evrp_range_analyzer::enter): Do nothing
! 	if not optimizing.
! 	(evrp_range_analyzer::record_ranges_from_stmt): Likewise.
! 	(evrp_range_analyzer::pop_to_marker): Likewise.
  
! 2018-02-20  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	PR tree-optimization/84419
! 	* internal-fn.c (expand_call_mem_ref): Create a TARGET_MEM_REF
! 	with the required type if its current type is compatible but
! 	different.
  
! 2018-02-20  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/82004
! 	* match.pd (pow(C,x) -> exp(log(C)*x)): Delay all folding until
! 	after vectorization.
  
! 2018-02-20  Martin Liska  <mliska@suse.cz>
  
! 	PR driver/83193
! 	* config/aarch64/aarch64.c (aarch64_print_hint_for_core_or_arch): Print
! 	possible values if we don't have a hint.
  
! 2018-02-20  Martin Liska  <mliska@suse.cz>
  
! 	PR c/84310
! 	PR target/79747
! 	* final.c (shorten_branches): Build align_tab array with one
! 	more element.
! 	* opts.c (finish_options): Add alignment option limit check.
! 	(MAX_CODE_ALIGN): Likewise.
! 	(MAX_CODE_ALIGN_VALUE): Likewise.
! 	* doc/invoke.texi: Document maximum allowed option value for
! 	all -falign-* options.
  
! 2018-02-19  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/84146
! 	* reg-notes.def (REG_CALL_ARG_LOCATION): New reg note.
! 	* insn-notes.def (NOTE_INSN_CALL_ARG_LOCATION): Remove.
! 	* var-tracking.c (emit_note_insn_var_location): Remove all references
! 	to NOTE_INSN_CALL_ARG_LOCATION.
! 	(emit_notes_in_bb): Emit arguments as REG_CALL_ARG_LOCATION note on
! 	the CALL_INSN rather than separate NOTE_INSN_CALL_ARG_LOCATION note.
! 	Use copy_rtx_if_shared.
! 	* dwarf2out.c (gen_subprogram_die): Use XEXP with 0 instead of
! 	NOTE_VAR_LOCATION on ca_loc->call_arg_loc_note.
! 	(dwarf2out_var_location): Remove handling of
! 	NOTE_INSN_CALL_ARG_LOCATION, instead handle REG_CALL_ARG_LOCATION note
! 	on call_insn.
! 	* final.c (final_scan_insn): Remove all references to
! 	NOTE_INSN_CALL_ARG_LOCATION.
! 	(rest_of_clean_state): Likewise.  Remove REG_CALL_ARG_LOCATION notes
! 	before dumping final insns.
! 	* except.c (emit_note_eh_region_end): Remove all references to
! 	NOTE_INSN_CALL_ARG_LOCATION.
! 	* config/alpha/alpha.c (alpha_pad_function_end): Likewise.
! 	* config/c6x/c6x.c (c6x_gen_bundles): Likewise.
! 	* config/arc/arc.c (hwloop_optimize): Likewise.
! 	* config/arm/arm.c (create_fix_barrier): Likewise.
! 	* config/s390/s390.c (s390_chunkify_start): Likewise.
! 	* config/sh/sh.c (find_barrier): Likewise.
! 	* config/i386/i386.c (rest_of_insert_endbranch,
! 	ix86_seh_fixup_eh_fallthru): Likewise.
! 	* config/xtensa/xtensa.c (hwloop_optimize): Likewise.
! 	* config/iq2000/iq2000.c (final_prescan_insn): Likewise.
! 	* config/frv/frv.c (frv_function_prologue): Likewise.
! 	* emit-rtl.c (try_split): Likewise.  Copy over REG_CALL_ARG_LOCATION
! 	reg note.
! 	(note_outside_basic_block_p): Remove all references to
! 	NOTE_INSN_CALL_ARG_LOCATION.
! 	* gengtype.c (adjust_field_rtx_def): Likewise.
! 	* print-rtl.c (rtx_writer::print_rtx_operand_code_0, print_insn):
! 	Likewise.
! 	* jump.c (cleanup_barriers, delete_related_insns): Likewise.
! 	* cfgrtl.c (force_nonfallthru_and_redirect): Likewise.
  
! 	PR c++/84444
! 	* builtins.c (builtin_mathfn_code): Don't check if CALL_EXPR_FN (t)
! 	is ADDR_EXPR.
  
! 	PR tree-optimization/84452
! 	* tree-vect-patterns.c (vect_recog_pow_pattern): Don't call
! 	expand_simd_clones if targetm.simd_clone.compute_vecsize_and_simdlen
! 	is NULL.
  
! 2018-02-19  Martin Liska  <mliska@suse.cz>
  
! 	PR sanitizer/82183
! 	* passes.def: Put pass_sancov_O0 before pass_lower_switch with -O0.
  
! 2018-02-19  Martin Liska  <mliska@suse.cz>
! 	    Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	PR tree-optimization/82491
! 	* gimple-fold.c (get_base_constructor): Make earlier bail out
! 	to prevent ubsan.
  
! 2018-02-19  Carl Love  <cel@us.ibm.com>
  
! 	* config/rs6000/rs6000-builtin.def: Change NEG macro expansions from
! 	BU_ALTIVEC_A to BU_P8V_AV_1 and BU_ALTIVEC_OVERLOAD_1 to
! 	BU_P8V_OVERLOAD_1.
! 	* config/rs6000/rs6000-c.c: Change ALTIVEC_BUILTIN_VEC_NEG to
! 	P8V_BUILTIN_VEC_NEG.
  
! 2018-02-19  Sebastian Perta  <sebastian.perta@renesas.com>
  
! 	* config/rl78/rl78.md (movdf): New define expand.
  
! 2018-02-19  Martin Liska  <mliska@suse.cz>
  
! 	PR other/80589
! 	* doc/invoke.texi: Fix typo.
! 	* params.def (PARAM_MAX_LOOP_HEADER_INSNS): Likewise.
  
! 2018-02-18  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	* config/rs6000/rs6000.c (rs6000_option_override_internal): Don't
! 	handle rs6000_single_float and rs6000_double_float specially for
! 	e500 family CPUs.
  
! 2018-02-16  Jeff Law  <law@redhat.com>
  
! 	* config/rx/rx.c (add_pop_cfi_notes): New function.;
! 	(pop_regs): Use it.
  
! 2018-02-16  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR ipa/84425
! 	* ipa-inline.c (inline_small_functions): Fix a typo.
  
! 2018-02-16  Nathan Sidwell  <nathan@acm.org>
  
! 	* doc/extend.texi (Backwards Compatibility): Americanize 'behaviour'.
  
! 2018-02-16  Carl Love  <cel@us.ibm.com>
  
! 	* config/rs6000/rs6000-builtin.def: Add BU_P8V_VSX_2 macro definition.
! 	Change FLOAT2 expansions from BU_VSX_2 to BU_P8V_VSX_2 and
! 	from BU_VSX_OVERLOAD_2 to BU_P8V_OVERLOAD_2.
! 	* config/rs6000/rs6000-c.c: Changed macro VSX_BUILTIN_VEC_FLOAT2
! 	expansion to P8V_BUILTIN_VEC_FLOAT2.
  
! 2018-02-16  Vladimir Makarov  <vmakarov@redhat.com>
  
! 	PR rtl-optimization/70023
! 	* lra-constraints.c (inherit_in_ebb): Take hard reg mode of
! 	src_regno into account.
  
! 2018-02-16  Carl Love  <cel@us.ibm.com>
  
! 	* config/rs6000/altivec.h: Remove vec_vextract4b and vec_vinsert4b.
! 	* config/rs6000/rs6000-builtin.def: Remove macro expansion for
! 	VEXTRACT4B, VINSERT4B, VINSERT4B_DI and VEXTRACT4B.
! 	* config/rs6000/rs6000.c: Remove case statements for
! 	P9V_BUILTIN_VEXTRACT4B, P9V_BUILTIN_VEC_VEXTRACT4B,
! 	P9V_BUILTIN_VINSERT4B, P9V_BUILTIN_VINSERT4B_DI,
! 	and P9V_BUILTIN_VEC_VINSERT4B.
! 	* config/rs6000/rs6000-c.c (altivec_expand_builtin): Remove entries for
! 	P9V_BUILTIN_VEC_VEXTRACT4B and P9V_BUILTIN_VEC_VINSERT4B.
! 	* config/rs6000/vsx.md:
! 	* doc/extend.texi: Remove vec_vextract4b, non ABI definitions for
! 	vec_insert4b.
  
! 2018-02-16  Carl Love  <cel@us.ibm.com>
  
! 	* config/rs6000/altivec.h: Add builtin names vec_extract4b
! 	vec_insert4b.
! 	* config/rs6000/rs6000-builtin.def: Add INSERT4B and EXTRACT4B
! 	definitions.
! 	* config/rs6000/rs6000-c.c: Add the definitions for
! 	P9V_BUILTIN_VEC_EXTRACT4B and P9V_BUILTIN_VEC_INSERT4B.
! 	* config/rs6000/rs6000.c (altivec_expand_builtin): Add
! 	P9V_BUILTIN_EXTRACT4B and P9V_BUILTIN_INSERT4B case statements.
! 	* config/rs6000/vsx.md: Add define_insn extract4b.  Add define_expand
! 	definition for insert4b and define insn *insert3b_internal.
! 	* doc/extend.texi: Add documentation for vec_extract4b.
  
! 2018-02-16  Nathan Sidwell  <nathan@acm.org>
  
! 	* doc/extend.texi (Backwards Compatibility): Mention friend
! 	injection.  Note for-scope is deprecated.
! 	* doc/invoke.texi (-ffriend-injection): Deprecate.
  
! 2018-02-16  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	* combine.c (try_combine): When adjusting LOG_LINKS for the destination
! 	that moved to I2, also allow destinations that are a paradoxical
! 	subreg (instead of a normal reg).
  
! 2018-02-16  Oleg Endo  <olegendo@gcc.gnu.org>
  
! 	PR target/83831
! 	* config/rx/rx.c (rx_fuse_in_memory_bitop): Convert shift operand
! 	to QImode.
  
! 2018-02-16  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/84037
! 	PR tree-optimization/84016
! 	PR target/82862
! 	* config/i386/i386.c (ix86_builtin_vectorization_cost):
! 	Adjust vec_construct for the fact we need additional higher latency
! 	128bit inserts for AVX256 and AVX512 vector builds.
! 	(ix86_add_stmt_cost): Scale vector construction cost for
! 	elementwise loads.
  
! 2018-02-16  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/84417
! 	* tree-ssa.c (non_rewritable_mem_ref_base): Properly constrain
! 	the MEM_REF offset when conversion to BIT_FIELD_REF is desired.
! 	(non_rewritable_lvalue_p): Likewise, use poly-ints.
  
! 2018-02-16  Martin Liska  <mliska@suse.cz>
  
! 	PR sanitizer/84307
! 	* internal-fn.def (ASAN_CHECK): Set proper flags.
! 	(ASAN_MARK): Likewise.
  
! 2018-02-16  Julia Koval  <julia.koval@intel.com>
  
! 	* config/i386/i386.c (ix86_option_override_internal): Remove PTA_CLWB
! 	from PTA_CANNONLAKE.
  
! 2018-02-16  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/84272
! 	* config/aarch64/cortex-a57-fma-steering.c (fma_forest::merge_forest):
! 	Use ++iter rather than iter++ for std::list iterators.
! 	(func_fma_steering::dfs): Likewise.  Don't delete nodes right away,
! 	defer deleting them until all nodes in the forest are processed.  Do
! 	free even leaf nodes.  Change to_process into auto_vec.
  
! 	PR bootstrap/84405
! 	* system.h (BROKEN_VALUE_INITIALIZATION): Define for GCC < 4.3.
! 	* vec.h (vec_default_construct): Use memset instead of placement new
! 	if BROKEN_VALUE_INITIALIZATION is defined.
! 	* hash-table.h (hash_table<Descriptor, Allocator>::empty_slow): Use
! 	memset instead of value initialization if BROKEN_VALUE_INITIALIZATION
! 	is defined.
  
! 	PR rtl-optimization/83723
! 	* lra-int.h (lra_substitute_pseudo): Add DEBUG_P argument.
! 	* lra.c (lra_substitute_pseudo): Likewise.  If true, use
! 	gen_rtx_raw_SUBREG instead of gen_rtx_SUBREG.  Pass DEBUG_P to
! 	recursive calls.
! 	(lra_substitute_pseudo_within_insn): Adjust lra_substitute_pseudo
! 	callers.
! 	* lra-constraints.c (inherit_reload_reg, split_reg): Likewise.
  
! 2018-02-16  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR rtl-optimization/81443
! 	* rtlanal.c (num_sign_bit_copies1) <SUBREG>: Do not propagate results
! 	from inner REGs to paradoxical SUBREGs.
  
! 2018-02-16  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/84399
! 	* graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
! 	For operands we can analyze at their definition make sure we can
! 	analyze them at each use as well.
  
! 2018-02-16  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/84190
! 	* tree-ssa.c (non_rewritable_mem_ref_base): Do not touch
! 	volatile accesses if the decl isn't volatile.
  
! 2018-02-15  Jason Merrill  <jason@redhat.com>
  
! 	PR c++/84314 - ICE with templates and fastcall attribute.
! 	* attribs.c (build_type_attribute_qual_variant): Don't clobber
! 	TYPE_CANONICAL on an existing type.
  
! 2018-02-15  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/84383
! 	* tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Don't look at
! 	dstoff nor call operand_equal_p if dstbase is NULL.
  
! 	PR tree-optimization/84334
! 	* match.pd ((A +- CST1) +- CST2 -> A + CST3): If A is
! 	also a CONSTANT_CLASS_P, punt.
  
! 2018-02-14  Jim Wilson  <jimw@sifive.com>
  
! 	* config/riscv/riscv.c (riscv_first_stack_step): Move locals after
! 	first SMALL_OPERAND check.  New local min_second_step.  Move assert
! 	to where locals are set.  Add TARGET_RVC support.
! 	* config/riscv/riscv.h (C_SxSP_BITS, SWSP_REACH, SDSP_REACH): New.
  
! 2018-02-14  Indu Bhagat  <indu.bhagat@oracle.com>
  
! 	* doc/invoke.texi: Correct -Wformat-overflow code sample.
  
! 2018-02-14  Martin Sebor  <msebor@redhat.com>
  
! 	PR tree-optimization/83698
! 	* gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): For
! 	arrays constrain the offset range to their bounds.
! 	(builtin_access::strcat_overlap): Adjust the bounds of overlap offset.
! 	(builtin_access::overlap): Avoid setting the size of overlap if it's
! 	already been set.
! 	(maybe_diag_overlap): Also consider arrays when deciding what values
! 	of offsets to include in diagnostics.
  
! 2018-02-14  Martin Sebor  <msebor@redhat.com>
  
! 	PR c/84108
! 	* attribs.c (diag_attr_exclusions): Consider the exclusion(s)
! 	that correspond to the kind of a declaration.
  
! 2018-02-14  John David Anglin  <danglin@gcc.gnu.org>
  
! 	PR target/83984
! 	* config/pa/pa.md: Load address of PIC label using the linkage table
! 	if the label is nonlocal.
  
! 2018-02-14  Kelvin Nilsen  <kelvin@gcc.gnu.org>
  
! 	* config/rs6000/rs6000.c (rs6000_option_override_internal): Issue
! 	warning message if user requests -maltivec=be.
! 	* doc/invoke.texi: Document deprecation of -maltivec=be.
  
! 2018-02-14  Will Schmidt  <will_schmidt@vnet.ibm.com>
  
! 	PR target/84220
! 	* config/rs6000/rs6000-c.c: Update definitions for
! 	ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VEC_SLDW,
! 	VEC_XXSLDWI and ALTIVEC_BUILTIN_VEC_XXPERMDI builtins.
  
! 2018-02-14  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
  
! 	PR target/84239
! 	* config/i386/cetintrin.h: Remove _rdssp[d|q] and
! 	add _get_ssp intrinsics. Remove argument from
! 	__builtin_ia32_rdssp[d|q].
! 	* config/i386/i386-builtin-types.def: Add UINT_FTYPE_VOID.
! 	* config/i386/i386-builtin.def: Remove argument from
! 	__builtin_ia32_rdssp[d|q].
! 	* config/i386/i386.c: Use UINT_FTYPE_VOID. Use
! 	ix86_expand_special_args_builtin for _rdssp[d|q].
! 	* config/i386/i386.md: Remove argument from rdssp[si|di] insn.
! 	Clear register before usage.
! 	* doc/extend.texi: Remove argument from __builtin_ia32_rdssp[d|q].
! 	Add documentation for new _get_ssp and _inc_ssp intrinsics.
  
! 2018-02-14  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	PR tree-optimization/84357
! 	* tree-data-ref.c (object_address_invariant_in_loop_p): Check
! 	operand 1 of an ARRAY_REF too.
  
! 2018-02-14  Oleg Endo  <olegendo@gcc.gnu.org>
  
! 	PR target/83831
! 	* config/rx/rx-protos.h (rx_reg_dead_or_unused_after_insn,
! 	rx_copy_reg_dead_or_unused_notes, rx_fuse_in_memory_bitop): New
! 	declarations.
! 	(set_of_reg): New struct.
! 	(rx_find_set_of_reg, rx_find_use_of_reg): New functions.
! 	* config/rx/rx.c (rx_reg_dead_or_unused_after_insn,
! 	rx_copy_reg_dead_or_unused_notes, rx_fuse_in_memory_bitop): New
! 	functions.
! 	* config/rx/rx.md (andsi3, iorsi3, xorsi3): Convert to insn_and_split.
! 	Split into bitclr, bitset, bitinvert patterns if appropriate.
! 	(*bitset, *bitinvert, *bitclr): Convert to named insn_and_split and
! 	use rx_fuse_in_memory_bitop.
! 	(*bitset_in_memory, *bitinvert_in_memory, *bitclr_in_memory): Convert
! 	to named insn, correct maximum insn length.
  
! 2018-02-14  Jozef Lawrynowicz  <jozefl.gcc@gmail.com>
  
! 	PR target/79242
! 	* machmode.def: Define a complex mode for PARTIAL_INT.
! 	* genmodes.c (complex_class): Return MODE_COMPLEX_INT for
! 	MODE_PARTIAL_INT.
! 	* doc/rtl.texi: Document CSPImode.
! 	* config/msp430/msp430.c (msp430_hard_regno_nregs): Add CPSImode
! 	handling.
! 	(msp430_hard_regno_nregs_with_padding): Likewise.
  
! 2018-02-13  Peter Bergner  <bergner@vnet.ibm.com>
  
! 	PR target/84279
! 	* config/rs6000/rs6000.c (mem_operand_gpr): Disallow altivec addresses.
  
! 2018-02-13  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	PR rtl-optimization/84169
! 	* combine.c (try_combine): New variable split_i2i3.  Set it to true if
! 	we generated a parallel as new i3 and we split that to new i2 and i3
! 	instructions.  Handle split_i2i3 similar to swap_i2i3: scan the
! 	LOG_LINKs of i3 to see which of those need to link to i2 now.  Link
! 	those to i2, not i1.  Partially rewrite this scan code.
  
! 2018-02-13  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR c/82210
! 	* stor-layout.c (place_field): For variable length fields, adjust
! 	offset_align afterwards not just based on the field's alignment,
! 	but also on the size.
  
! 	PR middle-end/84309
! 	* match.pd (pow(C,x) -> exp(log(C)*x)): Use exp2s and log2s instead
! 	of exps and logs in the use_exp2 case.
  
! 2018-02-13  Jeff Law  <law@redhat.com>
  
!  	* config/rl/rl78.c (rl78_attribute_table): Fix terminator and
! 	entry for "vector".
  
! 	* config/rl78/rl78.c (rl78_handle_func_attribute): Mark
! 	ARGS as unused.
  
! 2018-02-13  Alexandre Oliva  <aoliva@redhat.com>
  
! 	PR debug/84342
! 	PR debug/84319
! 	* common.opt (gas-loc-support, gas-locview-support): New.
! 	(ginline-points, ginternal-reset-location-views): New.
! 	* doc/invoke.texi: Document them.  Use @itemx where intended.
! 	(gvariable-location-views): Adjust.
! 	* target.def (reset_location_view): New.
! 	* doc/tm.texi.in (DWARF2_ASM_VIEW_DEBUG_INFO): New.
! 	(TARGET_RESET_LOCATION_VIEW): New.
! 	* doc/tm.texi: Rebuilt.
! 	* dwarf2out.c (dwarf2out_default_as_loc_support): New.
! 	(dwarf2out_default_as_locview_support): New.
! 	(output_asm_line_debug_info): Use option variables.
! 	(dwarf2out_maybe_output_loclist_view_pair): Likewise.
! 	(output_loc_list): Likewise.
! 	(add_high_low_attributes): Check option variables.
! 	Don't output entry view attribute in strict mode.
! 	(gen_inlined_subroutine_die): Check option variables.
! 	(dwarf2out_inline_entry): Likewise.
! 	(init_sections_and_labels): Likewise.
! 	(dwarf2out_early_finish): Likewise.
! 	(maybe_reset_location_view): New, from...
! 	(dwarf2out_var_location): ... here.  Call it.
! 	* debug.h (dwarf2out_default_as_loc_support): Declare.
! 	(dwarf2out_default_as_locview_support): Declare.
! 	* hooks.c (hook_int_rtx_insn_0): New.
! 	* hooks.h (hook_int_rtx_insn_0): Declare.
! 	* toplev.c (process_options): Take -gas-loc-support and
! 	-gas-locview-support from dwarf2out.  Enable
! 	-gvariable-location-views by default only with locview
! 	assembler support.  Enable -ginternal-reset-location-views by
! 	default only if the target defines the corresponding hook.
! 	Enable -ginline-points by default if location views are
! 	enabled; force it disabled if statement frontiers are
! 	disabled.
! 	* tree-inline.c (expand_call_inline): Check option variables.
! 	* tree-ssa-live.c (remove_unused_scope_block_p): Likewise.
  
! 2018-02-13  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	PR tree-optimization/84321
! 	* tree-vrp.c (intersect_range_with_nonzero_bits): Fix VR_ANTI_RANGE
! 	handling.  Also check whether the anti-range contains any values
! 	that satisfy the mask; switch to a VR_RANGE if not.
  
! 2018-02-13  Paolo Bonzini  <bonzini@gnu.org>
  
! 	PR sanitizer/84340
! 	* internal-fn.def (ASAN_CHECK, ASAN_MARK): Revert changes to fnspec.
  
! 2018-02-13  Martin Jambor  <mjambor@suse.cz>
  
! 	PR c++/83990
! 	* ipa-param-manipulation.c (ipa_modify_call_arguments): Use location
! 	of call statements, also set location of a load to a temporary.
  
! 2018-02-13  Sebastian Perta  <sebastian.perta@renesas.com>
  
! 	* config/rl78/rl78.c (add_vector_labels): New function.
! 	* config/rl78/rl78.c (rl78_handle_vector_attribute): New function.
! 	* config/rl78/rl78.c (rl78_start_function): Call add_vector_labels.
! 	* config/rl78/rl78.c (rl78_handle_func_attribute): Removed the assert 
! 	which checks that no arguments are passed.
! 	* config/rl78/rl78.c (rl78_attribute_table): Add "vector" attribute.
! 	* doc/extend.texi: Documentation for the new attribute.
  
! 2018-02-13  Andreas Schwab  <schwab@suse.de>
  
! 	* config/riscv/linux.h (CPP_SPEC): Define.
  
! 2018-02-13  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/84335
! 	* config/i386/i386.c (ix86_init_mmx_sse_builtins): Pass
! 	OPTION_MASK_ISA_AES | OPTION_MASK_ISA_SSE2 instead of
! 	OPTION_MASK_ISA_AES as first argument to def_builtin_const
! 	for AES builtins.  Pass OPTION_MASK_ISA_PCLMUL | OPTION_MASK_ISA_SSE2
! 	instead of OPTION_MASK_ISA_PCLMUL as first argument to
! 	def_builtin_const for __builtin_ia32_pclmulqdq128 builtin.
! 	* config/i386/wmmintrin.h: If __SSE2__ is not defined, enable it
! 	temporarily for AES and PCLMUL builtins.
  
! 	PR tree-optimization/84339
! 	* gimple-fold.c (get_range_strlen): Set *FLEXP to true when handling
! 	ARRAY_REF where first operand is array_at_struct_end_p COMPONENT_REF.
! 	Formatting fixes.
  
! 	PR middle-end/84309
! 	* match.pd (pow(C,x) -> exp(log(C)*x)): Optimize instead into
! 	exp2(log2(C)*x) if C is a power of 2 and c99 runtime is available.
! 	* generic-match-head.c (canonicalize_math_after_vectorization_p): New
! 	inline function.
! 	* gimple-match-head.c (canonicalize_math_after_vectorization_p): New
! 	inline function.
! 	* omp-simd-clone.h: New file.
! 	* omp-simd-clone.c: Include omp-simd-clone.h.
! 	(expand_simd_clones): No longer static.
! 	* tree-vect-patterns.c: Include fold-const-call.h, attribs.h,
! 	cgraph.h and omp-simd-clone.h.
! 	(vect_recog_pow_pattern): Optimize pow(C,x) to exp(log(C)*x).
! 	(vect_recog_widen_shift_pattern): Formatting fix.
! 	(vect_pattern_recog_1): Don't check optab for calls.
  
! 	PR target/84336
! 	* config/i386/sse.md (<avx512>_vpermi2var<mode>3_mask): Force
! 	operands[2] into a REG before using gen_lowpart on it.
  
! 2018-02-12  Jeff Law  <law@redhat.com>
  
! 	PR target/83760
! 	* config/sh/sh.c (find_barrier): Consider a sibling call
! 	a barrier as well.
  
! 	* cse.c (try_back_substitute_reg): Move any REG_ARGS_SIZE note when
! 	successfully back substituting a reg.
  
! 2018-02-12  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/84037
! 	* tree-vect-slp.c (vect_analyze_slp_cost): Add visited
! 	parameter, move visited init to caller.
! 	(vect_slp_analyze_operations): Separate cost from validity
! 	check, initialize visited once for all instances.
! 	(vect_schedule_slp): Analyze map to CSE vectorized nodes once
! 	for all instances.
! 	* tree-vect-stmts.c (vect_model_simple_cost): Make early
! 	out an assert.
! 	(vect_model_promotion_demotion_cost): Likewise.
! 	(vectorizable_bswap): Guard cost modeling with !slp_node
! 	instead of !PURE_SLP_STMT to avoid double-counting on hybrid
! 	SLP stmts.
! 	(vectorizable_call): Likewise.
! 	(vectorizable_conversion): Likewise.
! 	(vectorizable_assignment): Likewise.
! 	(vectorizable_shift): Likewise.
! 	(vectorizable_operation): Likewise.
! 	(vectorizable_store): Likewise.
! 	(vectorizable_load): Likewise.
! 	(vectorizable_condition): Likewise.
! 	(vectorizable_comparison): Likewise.
  
! 2018-02-12  Paolo Bonzini  <bonzini@gnu.org>
  
! 	PR sanitizer/84307
! 	* internal-fn.def (ASAN_CHECK): Fix fnspec to account for return value.
! 	(ASAN_MARK): Fix fnspec to account for return value, change pointer
! 	argument from 'R' to 'W' so that the pointed-to datum is clobbered.
  
! 2018-02-08  Jan Hubicka  <hubicka@ucw.cz>
  
! 	PR middle-end/83665
! 	* params.def (inline-min-speedup): Increase from 8 to 15.
! 	(max-inline-insns-auto): Decrease from 40 to 30.
! 	* ipa-split.c (consider_split): Add some buffer for function to
! 	be considered inlining candidate.
! 	* invoke.texi (max-inline-insns-auto, inline-min-speedup): UPdate
! 	default values.
  
! 2018-02-12  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/84037
! 	* tree-vect-slp.c (vect_build_slp_tree_2): Try swapping the
! 	matched stmts if we cannot swap the non-matched ones.
  
! 2018-02-12  Olga Makhotina  <olga.makhotina@intel.com>
  
! 	* config/i386/avx512fintrin.h (_mm_mask_scalef_round_sd,
! 	_mm_maskz_scalef_round_sd, _mm_mask_scalef_round_ss,
! 	_mm_maskz_scalef_round_ss): New intrinsics.
! 	(__builtin_ia32_scalefsd_round, __builtin_ia32_scalefss_round): Fix.
! 	* config/i386/i386-builtin.def (__builtin_ia32_scalefsd_round,
! 	__builtin_ia32_scalefss_round): Remove.
! 	(__builtin_ia32_scalefsd_mask_round,
! 	__builtin_ia32_scalefss_mask_round): New intrinsics.
! 	* config/i386/sse.md (vmscalef<mode><round_name>): Renamed to ...
! 	(vmscalef<mode><mask_scalar_name><round_scalar_name>): ... this.
! 	((match_operand:VF_128 2 "<round_nimm_predicate>"
! 	"<round_constraint>")): Changed to ...
! 	((match_operand:VF_128 2 "<round_scalar_nimm_predicate>"
! 	"<round_scalar_constraint>")): ... this.
! 	("vscalef<ssescalarmodesuffix>\t{<round_op3>%2, %1, %0|
! 	%0, %1, %2<round_op3>}"): Changed to ...
! 	("vscalef<ssescalarmodesuffix>\t{<round_scalar_mask_op3>%2, %1,
! 	%0<mask_scalar_operand3>|%0<mask_scalar_operand3>, %1,
! 	%2<round_scalar_mask_op3>}"): ... this.
! 	* config/i386/subst.md (round_scalar_nimm_predicate): New.
  
! 2018-02-12  Olga Makhotina  <olga.makhotina@intel.com>
  
! 	* config/i386/avx512fintrin.h (_mm_mask_sqrt_round_sd)
! 	(_mm_maskz_sqrt_round_sd, _mm_mask_sqrt_round_ss)
! 	(_mm_maskz_sqrt_round_ss): New intrinsics.
! 	(__builtin_ia32_sqrtsd_round, __builtin_ia32_sqrtss_round): Remove.
! 	(__builtin_ia32_sqrtsd_mask_round)
! 	(__builtin_ia32_sqrtss_mask_round): New builtins.
! 	* config/i386/i386-builtin.def (__builtin_ia32_sqrtsd_round)
! 	(__builtin_ia32_sqrtss_round): Remove.
! 	(__builtin_ia32_sqrtsd_mask_round)
! 	(__builtin_ia32_sqrtss_mask_round): New builtins.
! 	* config/i386/sse.md (vmsqrt<mode>2<round_name>): Renamed to ...
! 	(vmsqrt<mode>2<mask_scalar_name><round_scalar_name>): ... this.
! 	((match_operand:VF_128 1 "vector_operand"
! 	"xBm,<round_constraint>")): Changed to ...
! 	((match_operand:VF_128 1 "vector_operand"
! 	"xBm,<round_scalar_constraint>")): ... this.
! 	(vsqrt<ssescalarmodesuffix>\t{<round_op3>%1, %2, %0|
! 	%0, %2, %<iptr>1<round_op3>}): Changed to ...
! 	(vsqrt<ssescalarmodesuffix>\t{<round_scalar_mask_op3>%1, %2,
! 	%0<mask_scalar_operand3>|%0<mask_scalar_operand3>, %2,
! 	%<iptr>1<round_scalar_mask_op3>}): ... this.
! 	((set_attr "prefix" "<round_prefix>")): Changed to ...
! 	((set_attr "prefix" "<round_scalar_prefix>")): ... this.
  
! 2018-02-11  Steven Munroe  <munroesj@gcc.gnu.org>
  
! 	PR target/84266
! 	* config/rs6000/mmintrin.h (_mm_cmpeq_pi32 [_ARCH_PWR9]):
! 	Cast vec_cmpeq result to correct type.
! 	* config/rs6000/mmintrin.h (_mm_cmpgt_pi32 [_ARCH_PWR9]):
! 	Cast vec_cmpgt result to correct type.
  
! 2018-02-11  Alexandre Oliva  <aoliva@redhat.com>
  
! 	* final.c (final_scan_insn_1): Renamed from...
! 	(final_scan_insn): ... this.  New wrapper, to recover
! 	seen from the outermost call in recursive ones.
! 	* config/sparc/sparc.c (output_return): Drop seen from call.
! 	(output_sibcall): Likewise.
! 	* config/visium/visium.c (output_branch): Likewise.
  
! 2018-02-10  John David Anglin  <danglin@gcc.gnu.org>
  
! 	* config/pa/pa.c (hppa_profile_hook): Mark SYMBOL_REF for _mcount as
! 	function label.
  
! 2018-02-10  Alan Modra  <amodra@gmail.com>
  
! 	PR target/84300
! 	* config/rs6000/rs6000.md (split_stack_return): Remove (use ..).
! 	Specify LR as an input.
  
! 2018-02-10  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR sanitizer/83987
! 	* omp-low.c (maybe_remove_omp_member_access_dummy_vars,
! 	remove_member_access_dummy_vars): New functions.
! 	(lower_omp_for, lower_omp_taskreg, lower_omp_target,
! 	lower_omp_1, execute_lower_omp): Use them.
  
! 	PR rtl-optimization/84308
! 	* shrink-wrap.c (spread_components): Release todo vector.
  
! 2018-02-09  Vladimir Makarov  <vmakarov@redhat.com>
  
! 	PR rtl-optimization/57193
! 	* ira-color.c (struct allocno_color_data): Add member
! 	conflict_allocno_hard_prefs.
! 	(update_conflict_allocno_hard_prefs): New.
! 	(bucket_allocno_compare_func): Add a preference based on
! 	conflict_allocno_hard_prefs.
! 	(push_allocno_to_stack): Update conflict_allocno_hard_prefs.
! 	(color_allocnos): Remove a dead code.  Initiate
! 	conflict_allocno_hard_prefs.  Call update_costs_from_prefs.
  
! 2018-02-09  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/84226
! 	* config/rs6000/vsx.md (p9_xxbrq_v16qi): Change input operand
! 	constraint from =wa to wa.  Avoid a subreg on the output operand,
! 	instead use a pseudo and subreg it in a move.
! 	(p9_xxbrd_<mode>): Changed to ...
! 	(p9_xxbrd_v2di): ... this insn, without VSX_D iterator.
! 	(p9_xxbrd_v2df): New expander.
! 	(p9_xxbrw_<mode>): Changed to ...
! 	(p9_xxbrw_v4si): ... this insn, without VSX_W iterator.
! 	(p9_xxbrw_v4sf): New expander.
  
! 2018-02-09  Sebastian Perta  <sebastian.perta@renesas.com>
  
! 	* config/rx/rx.md (movsicc): Update expander to be matched by GCC.
  
! 2018-02-09  Peter Bergner  <bergner@vnet.ibm.com>
  
! 	PR target/83926
! 	* config/rs6000/vsx.md (vsx_mul_v2di): Handle generating a 64-bit
! 	multiply in 32-bit mode.
! 	(vsx_div_v2di): Handle generating a 64-bit signed divide in 32-bit mode.
! 	(vsx_udiv_v2di): Handle generating a 64-bit unsigned divide in 32-bit
! 	mode.
  
! 2018-02-09  Sebastian Perta  <sebastian.perta@renesas.com>
  
! 	* config/rx/constraints.md (CALL_OP_SYMBOL_REF): Added new constraint
! 	to allow or block "symbol_ref" depending on the value of TARGET_JSR.
! 	* config/rx/rx.md (call_internal): Use CALL_OP_SYMBOL_REF.
! 	* config/rx/rx.md (call_value_internal): Use CALL_OP_SYMBOL_REF.
  
! 2018-02-09  Pierre-Marie de Rodat  <derodat@adacore.com>
  
! 	PR lto/84213
! 	* dwarf2out.c (is_trivial_indirect_ref): New function.
! 	(dwarf2out_late_global_decl): Do not generate a location
! 	attribute for variables that have a non-trivial DECL_VALUE_EXPR
! 	and that are not defined in the current unit.
  
! 2018-02-09  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* optabs.c (prepare_cmp_insn): Try harder to emit a direct comparison
! 	instead of a libcall for UNORDERED.
  
! 2018-02-09  Tamar Christina  <tamar.christina@arm.com>
  
! 	PR target/82641
! 	* config/arm/arm-c.c (arm_cpu_builtins): Un-define __ARM_FEATURE_LDREX,
! 	__ARM_ARCH_PROFILE, __ARM_ARCH_ISA_THUMB, __ARM_FP and __ARM_NEON_FP.
  
! 2018-02-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
  
! 	PR target/PR84295
! 	* config/s390/s390.c (s390_set_current_function): Invoke
! 	s390_indirect_branch_settings also if fndecl didn't change.
  
! 2018-02-09  Alexandre Oliva  <aoliva@redhat.com>
  
! 	* config/rs6000/rs6000.md (blockage): Set length to zero.
  
! 2018-02-09  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* expr.c (optimize_bitfield_assignment_op): Remove obsolete assertion.
  
! 2018-02-09  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR sanitizer/84285
! 	* gcc.c (STATIC_LIBASAN_LIBS, STATIC_LIBTSAN_LIBS,
! 	STATIC_LIBLSAN_LIBS, STATIC_LIBUBSAN_LIBS): Handle -static like
! 	-static-lib*san.
  
! 	PR debug/84252
! 	* var-tracking.c (vt_add_function_parameter): Punt for non-onepart
! 	PARALLEL incoming that failed vt_get_decl_and_offset check.
  
! 	PR middle-end/84237
! 	* output.h (bss_initializer_p): Add NAMED argument, defaulted to false.
! 	* varasm.c (bss_initializer_p): Add NAMED argument, if true, ignore
! 	TREE_READONLY bit.
! 	(get_variable_section): For decls in named .bss* sections pass true as
! 	second argument to bss_initializer_p.
  
! 2018-02-09  Marek Polacek  <polacek@redhat.com>
  	    Jakub Jelinek  <jakub@redhat.com>
  
! 	PR c++/83659
! 	* fold-const.c (fold_indirect_ref_1): Use VECTOR_TYPE_P macro.
! 	Formatting fixes.  Verify first that tree_fits_poly_int64_p (op01).
! 	Sync some changes from cxx_fold_indirect_ref.
  
! 2018-02-09  Alexandre Oliva  <aoliva@redhat.com>
  
! 	* cfgexpand.c (expand_gimple_basic_block): Handle inline entry
! 	markers.
! 	* dwarf2out.c (dwarf2_debug_hooks): Enable inline_entry hook.
! 	(BLOCK_INLINE_ENTRY_LABEL): New.
! 	(dwarf2out_var_location): Disregard inline entry markers.
! 	(inline_entry_data): New struct.
! 	(inline_entry_data_hasher): New hashtable type.
! 	(inline_entry_data_hasher::hash): New.
! 	(inline_entry_data_hasher::equal): New.
! 	(inline_entry_data_table): New variable.
! 	(add_high_low_attributes): Add DW_AT_entry_pc and
! 	DW_AT_GNU_entry_view attributes if a pending entry is found
! 	in inline_entry_data_table.  Add old entry_pc attribute only
! 	if debug nonbinding markers are disabled.
! 	(gen_inlined_subroutine_die): Set BLOCK_DIE if nonbinding
! 	markers are enabled.
! 	(block_within_block_p, dwarf2out_inline_entry): New.
! 	(dwarf2out_finish): Check that no entries remained in
! 	inline_entry_data_table.
! 	* final.c (reemit_insn_block_notes): Handle inline entry notes.
! 	(final_scan_insn, notice_source_line): Likewise.
! 	(rest_of_clean_state): Skip inline entry markers.
! 	* gimple-pretty-print.c (dump_gimple_debug): Handle inline entry
! 	markers.
! 	* gimple.c (gimple_build_debug_inline_entry): New.
! 	* gimple.h (enum gimple_debug_subcode): Add
! 	GIMPLE_DEBUG_INLINE_ENTRY.
! 	(gimple_build_debug_inline_entry): Declare.
! 	(gimple_debug_inline_entry_p): New.
! 	(gimple_debug_nonbind_marker_p): Adjust.
! 	* insn-notes.def (INLINE_ENTRY): New.
! 	* print-rtl.c (rtx_writer::print_rtx_operand_code_0): Handle
! 	inline entry marker notes.
! 	(print_insn): Likewise.
! 	* rtl.h	(NOTE_MARKER_P): Add INLINE_ENTRY support.
! 	(INSN_DEBUG_MARKER_KIND): Likewise.
! 	(GEN_RTX_DEBUG_MARKER_INLINE_ENTRY_PAT): New.
! 	* tree-inline.c	(expand_call_inline): Build and insert
! 	debug_inline_entry stmt.
! 	* tree-ssa-live.c (remove_unused_scope_block_p): Preserve
! 	inline entry blocks early, if nonbind markers are enabled.
! 	(dump_scope_block): Dump fragment info.
! 	* var-tracking.c (reemit_marker_as_note): Handle inline entry note.
! 	* doc/gimple.texi (gimple_debug_inline_entry_p): New.
! 	(gimple_build_debug_inline_entry): New.
! 	* doc/invoke.texi (gstatement-frontiers, gno-statement-frontiers):
! 	Enable/disable inline entry points too.
! 	* doc/rtl.texi (NOTE_INSN_INLINE_ENTRY): New.
! 	(DEBUG_INSN): Describe inline entry markers.
  
! 	* common.opt (gvariable-location-views): New.
! 	(gvariable-location-views=incompat5): New.
! 	* config.in: Rebuilt.
! 	* configure: Rebuilt.
! 	* configure.ac: Test assembler for view support.
! 	* dwarf2asm.c (dw2_asm_output_symname_uleb128): New.
! 	* dwarf2asm.h (dw2_asm_output_symname_uleb128): Declare.
! 	* dwarf2out.c (var_loc_view): New typedef.
! 	(struct dw_loc_list_struct): Add vl_symbol, vbegin, vend.
! 	(dwarf2out_locviews_in_attribute): New.
! 	(dwarf2out_locviews_in_loclist): New.
! 	(dw_val_equal_p): Compare val_view_list of dw_val_class_view_lists.
! 	(enum dw_line_info_opcode): Add LI_adv_address.
! 	(struct dw_line_info_table): Add view.
! 	(RESET_NEXT_VIEW, RESETTING_VIEW_P): New macros.
! 	(DWARF2_ASM_VIEW_DEBUG_INFO): Define default.
! 	(zero_view_p): New variable.
! 	(ZERO_VIEW_P): New macro.
! 	(output_asm_line_debug_info): New.
! 	(struct var_loc_node): Add view.
! 	(add_AT_view_list, AT_loc_list): New.
! 	(add_var_loc_to_decl): Add view param.  Test it against last.
! 	(new_loc_list): Add view params.  Record them.
! 	(AT_loc_list_ptr): Handle loc and view lists.
! 	(view_list_to_loc_list_val_node): New.
! 	(print_dw_val): Handle dw_val_class_view_list.
! 	(size_of_die): Likewise.
! 	(value_format): Likewise.
! 	(loc_list_has_views): New.
! 	(gen_llsym): Set vl_symbol too.
! 	(maybe_gen_llsym, skip_loc_list_entry): New.
! 	(dwarf2out_maybe_output_loclist_view_pair): New.
! 	(output_loc_list): Output view list or entries too.
! 	(output_view_list_offset): New.
! 	(output_die): Handle dw_val_class_view_list.
! 	(output_dwarf_version): New.
! 	(output_compilation_unit_header): Use it.
! 	(output_skeleton_debug_sections): Likewise.
! 	(output_rnglists, output_line_info): Likewise.
! 	(output_pubnames, output_aranges): Update version comments.
! 	(output_one_line_info_table): Output view numbers in asm comments.
! 	(dw_loc_list): Determine current endview, pass it to new_loc_list.
! 	Call maybe_gen_llsym.
! 	(loc_list_from_tree_1): Adjust.
! 	(add_AT_location_description): Create view list attribute if
! 	needed, check it's absent otherwise.
! 	(convert_cfa_to_fb_loc_list): Adjust.
! 	(maybe_emit_file): Call output_asm_line_debug_info for test.
! 	(dwarf2out_var_location): Reset views as needed.  Precompute
! 	add_var_loc_to_decl args.  Call get_attr_min_length only if we have the
! 	attribute.  Set view.
! 	(new_line_info_table): Reset next view.
! 	(set_cur_line_info_table): Call output_asm_line_debug_info for test.
! 	(dwarf2out_source_line): Likewise.  Output view resets and labels to
! 	the assembler, or select appropriate line info opcodes.
! 	(prune_unused_types_walk_attribs): Handle dw_val_class_view_list.
! 	(optimize_string_length): Catch it.  Adjust.
! 	(resolve_addr): Copy vl_symbol along with ll_symbol.  Handle
! 	dw_val_class_view_list, and remove it if no longer needed.
! 	(hash_loc_list): Hash view numbers.
! 	(loc_list_hasher::equal): Compare them.
! 	(optimize_location_lists): Check whether a view list symbol is
! 	needed, and whether the locview attribute is present, and
! 	whether they match.  Remove the locview attribute if no longer
! 	needed.
! 	(index_location_lists): Call skip_loc_list_entry for test.
! 	(dwarf2out_finish): Call output_asm_line_debug_info for test.
! 	Use output_dwarf_version.
! 	* dwarf2out.h (enum dw_val_class): Add dw_val_class_view_list.
! 	(struct dw_val_node): Add val_view_list.
! 	* final.c (SEEN_NEXT_VIEW): New.
! 	(set_next_view_needed): New.
! 	(clear_next_view_needed): New.
! 	(maybe_output_next_view): New.
! 	(final_start_function): Rename to...
! 	(final_start_function_1): ... this.  Take pointer to FIRST,
! 	add SEEN parameter.  Emit param bindings in the initial view.
! 	(final_start_function): Reintroduce SEEN-less interface.
! 	(final): Rename to...
! 	(final_1): ... this.  Take SEEN parameter.  Output final pending
! 	next view at the end.
! 	(final): Reintroduce seen-less interface.
! 	(final_scan_insn): Output pending next view before switching
! 	sections or ending a block.  Mark the next view as needed when
! 	outputting variable locations.  Notify debug backend of section
! 	changes, and of location view changes.
! 	(rest_of_handle_final): Adjust.
! 	* toplev.c (process_options): Autodetect value for debug variable
! 	location views option.  Warn on incompat5 without -gdwarf-5.
! 	* doc/invoke.texi (gvariable-location-views): New.
! 	(gvariable-location-views=incompat5): New.
! 	(gno-variable-location-views): New.
  
! 2018-02-08  David Malcolm  <dmalcolm@redhat.com>
  
! 	PR tree-optimization/84136
! 	* tree-cfg.c (find_taken_edge_computed_goto): Remove assertion
! 	that the result of find_edge is non-NULL.
  
! 2018-02-08  Sergey Shalnov  <sergey.shalnov@intel.com>
  
! 	PR target/83008
! 	* config/i386/x86-tune-costs.h (skylake_cost): Fix cost of
! 	storing integer register in SImode.  Fix cost of 256 and 512
! 	byte aligned SSE register store.
  
! 2018-02-08  Sergey Shalnov  <sergey.shalnov@intel.com>
  
! 	* config/i386/i386.c (ix86_multiplication_cost): Fix
! 	multiplication cost for TARGET_AVX512DQ.
  
! 2018-02-08  Marek Polacek  <polacek@redhat.com>
  
! 	PR tree-optimization/84238
! 	* tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Verify the result of
! 	get_range_strlen.
  
! 2018-02-08  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	PR tree-optimization/84265
! 	* tree-vect-stmts.c (vectorizable_store): Don't treat
! 	VMAT_CONTIGUOUS accesses as grouped.
! 	(vectorizable_load): Likewise.
  
! 2018-02-08  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	PR tree-optimization/81635
! 	* wide-int.h (wi::round_down_for_mask, wi::round_up_for_mask): Declare.
! 	* wide-int.cc (wi::round_down_for_mask, wi::round_up_for_mask)
! 	(test_round_for_mask): New functions.
! 	(wide_int_cc_tests): Call test_round_for_mask.
! 	* tree-vrp.h (intersect_range_with_nonzero_bits): Declare.
! 	* tree-vrp.c (intersect_range_with_nonzero_bits): New function.
! 	* tree-data-ref.c (split_constant_offset_1): Use it to refine the
! 	range returned by get_range_info.
  
! 2018-02-08  Jan Hubicka  <hubicka@ucw.cz>
  
! 	PR ipa/81360
! 	* cgraph.h (symtab_node::output_to_lto_symbol_table_p): Declare
! 	* symtab.c: Include builtins.h
! 	(symtab_node::output_to_lto_symbol_table_p): Move here
! 	from lto-streamer-out.c:output_symbol_p.
! 	* lto-streamer-out.c (write_symbol): Turn early exit to assert.
! 	(output_symbol_p): Move all logic to symtab.c
! 	(produce_symtab): Update.
  
! 2018-02-08  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
  
! 	* config/s390/s390-opts.h (enum indirect_branch): Define.
! 	* config/s390/s390-protos.h (s390_return_addr_from_memory)
! 	(s390_indirect_branch_via_thunk)
! 	(s390_indirect_branch_via_inline_thunk): Add function prototypes.
! 	(enum s390_indirect_branch_type): Define.
! 	* config/s390/s390.c (struct s390_frame_layout, struct
! 	machine_function): Remove.
! 	(indirect_branch_prez10thunk_mask, indirect_branch_z10thunk_mask)
! 	(indirect_branch_table_label_no, indirect_branch_table_name):
! 	Define variables.
! 	(INDIRECT_BRANCH_NUM_OPTIONS): Define macro.
! 	(enum s390_indirect_branch_option): Define.
! 	(s390_return_addr_from_memory): New function.
! 	(s390_handle_string_attribute): New function.
! 	(s390_attribute_table): Add new attribute handler.
! 	(s390_execute_label): Handle UNSPEC_EXECUTE_JUMP patterns.
! 	(s390_indirect_branch_via_thunk): New function.
! 	(s390_indirect_branch_via_inline_thunk): New function.
! 	(s390_function_ok_for_sibcall): When jumping via thunk disallow
! 	sibling call optimization for non z10 compiles.
! 	(s390_emit_call): Force indirect branch target to be a single
! 	register.  Add r1 clobber for non-z10 compiles.
! 	(s390_emit_epilogue): Emit return jump via return_use expander.
! 	(s390_reorg): Handle JUMP_INSNs as execute targets.
! 	(s390_option_override_internal): Perform validity checks for the
! 	new command line options.
! 	(s390_indirect_branch_attrvalue): New function.
! 	(s390_indirect_branch_settings): New function.
! 	(s390_set_current_function): Invoke s390_indirect_branch_settings.
! 	(s390_output_indirect_thunk_function):  New function.
! 	(s390_code_end): Implement target hook.
! 	(s390_case_values_threshold): Implement target hook.
! 	(TARGET_ASM_CODE_END, TARGET_CASE_VALUES_THRESHOLD): Define target
! 	macros.
! 	* config/s390/s390.h (struct s390_frame_layout)
! 	(struct	machine_function): Move here from s390.c.
! 	(TARGET_INDIRECT_BRANCH_NOBP_RET)
! 	(TARGET_INDIRECT_BRANCH_NOBP_JUMP)
! 	(TARGET_INDIRECT_BRANCH_NOBP_JUMP_THUNK)
! 	(TARGET_INDIRECT_BRANCH_NOBP_JUMP_INLINE_THUNK)
! 	(TARGET_INDIRECT_BRANCH_NOBP_CALL)
! 	(TARGET_DEFAULT_INDIRECT_BRANCH_TABLE)
! 	(TARGET_INDIRECT_BRANCH_THUNK_NAME_EXRL)
! 	(TARGET_INDIRECT_BRANCH_THUNK_NAME_EX)
! 	(TARGET_INDIRECT_BRANCH_TABLE): Define macros.
! 	* config/s390/s390.md (UNSPEC_EXECUTE_JUMP)
! 	(INDIRECT_BRANCH_THUNK_REGNUM): Define constants.
! 	(mnemonic attribute): Add values which aren't recognized
! 	automatically.
! 	("*cjump_long", "*icjump_long", "*basr", "*basr_r"): Disable
! 	pattern for branch conversion.  Fix mnemonic attribute.
! 	("*c<code>", "*sibcall_br", "*sibcall_value_br", "*return"): Emit
! 	indirect branch via thunk if requested.
! 	("indirect_jump", "<code>"): Expand patterns for branch conversion.
! 	("*indirect_jump"): Disable for branch conversion using out of
! 	line thunks.
! 	("indirect_jump_via_thunk<mode>_z10")
! 	("indirect_jump_via_thunk<mode>")
! 	("indirect_jump_via_inlinethunk<mode>_z10")
! 	("indirect_jump_via_inlinethunk<mode>", "*casesi_jump")
! 	("casesi_jump_via_thunk<mode>_z10", "casesi_jump_via_thunk<mode>")
! 	("casesi_jump_via_inlinethunk<mode>_z10")
! 	("casesi_jump_via_inlinethunk<mode>", "*basr_via_thunk<mode>_z10")
! 	("*basr_via_thunk<mode>", "*basr_r_via_thunk_z10")
! 	("*basr_r_via_thunk", "return<mode>_prez10"): New pattern.
! 	("*indirect2_jump"): Disable for branch conversion.
! 	("casesi_jump"): Turn into expander and expand patterns for branch
! 	conversion.
! 	("return_use"): New expander.
! 	("*return"): Emit return via thunk and rename it to ...
! 	("*return<mode>"): ... this one.
! 	* config/s390/s390.opt: Add new options and and enum for the
! 	option values.
  
! 2018-02-08  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* lra-constraints.c (match_reload): Unconditionally use
! 	gen_lowpart_SUBREG, rather than selecting between that
! 	and equivalent gen_rtx_SUBREG code.
  
! 2018-02-08  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/84233
! 	* tree-ssa-phiprop.c (propagate_with_phi): Use separate
! 	changed flag instead of boguously re-using phi_inserted.
  
! 2018-02-08  Martin Jambor  <mjambor@suse.cz>
  
! 	* hsa-gen.c (get_symbol_for_decl): Set program allocation for
! 	static local variables.
  
! 2018-02-08  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/84278
! 	* tree-vect-stmts.c (vectorizable_store): When looking for
! 	smaller vector types to perform grouped strided loads/stores
! 	make sure the mode is supported by the target.
! 	(vectorizable_load): Likewise.
  
! 2018-02-08  Wilco Dijkstra  <wdijkstr@arm.com>
  
! 	* config/aarch64/aarch64.c (aarch64_components_for_bb):
! 	Increase LDP/STP opportunities by adding adjacent callee-saves.
  
! 2018-02-08  Wilco Dijkstra  <wdijkstr@arm.com>
  
! 	PR rtl-optimization/84068
! 	PR rtl-optimization/83459
! 	* haifa-sched.c (rank_for_schedule): Fix SCHED_PRESSURE_MODEL sorting.
  
! 2018-02-08  Aldy Hernandez  <aldyh@redhat.com>
  
! 	PR tree-optimization/84224
! 	* gimple-ssa-warn-alloca.c (pass_walloca::execute): Remove assert.
! 	* calls.c (gimple_alloca_call_p): Only return TRUE when we have
! 	non-zero arguments.
  
! 2018-02-07  Iain Sandoe  <iain@codesourcery.com>
  
! 	PR target/84113
! 	* config/rs6000/altivec.md (*restore_world): Remove LR use.
! 	* config/rs6000/predicates.md (restore_world_operation): Adjust op
! 	count, remove one USE.
  
! 2018-02-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
  
! 	* doc/install.texi (Configuration): Document the
! 	--with-long-double-format={ibm,ieee} PowerPC configuration
! 	options.
  
! 	PR target/84154
! 	* config/rs6000/rs6000.md (fix_trunc<SFDF:mode><QHI:mode>2):
! 	Convert from define_expand to be define_insn_and_split.  Rework
! 	float/double/_Float128 conversions to QI/HI/SImode to work with
! 	both ISA 2.07 (power8) or ISA 3.0 (power9).  Fix regression where
! 	conversions to QI/HImode types did a store and then a load to
! 	truncate the value.  For conversions to VSX registers, don't split
! 	the insn, instead emit the code directly.  Use the code iterator
! 	any_fix to combine signed and unsigned conversions.
! 	(fix<uns>_trunc<SFDF:mode>si2_p8): Likewise.
! 	(fixuns_trunc<SFDF:mode><QHI:mode>2): Likewise.
! 	(fix_trunc<IEEE128:mode><QHI:mode>2): Likewise.
! 	(fix<uns>_trunc<SFDF:mode><QHI:mode>2): Likewise.
! 	(fix_<mode>di2_hw): Likewise.
! 	(fixuns_<mode>di2_hw): Likewise.
! 	(fix_<mode>si2_hw): Likewise.
! 	(fixuns_<mode>si2_hw): Likewise.
! 	(fix<uns>_<IEEE128:mode><SDI:mode>2_hw): Likewise.
! 	(fix<uns>_trunc<IEEE128:mode><QHI:mode>2): Likewise.
! 	(fctiw<u>z_<mode>_smallint): Rename fctiw<u>z_<mode>_smallint to
! 	fix<uns>_trunc<SFDF:mode>si2_p8.
! 	(fix_trunc<SFDF:mode><QHI:mode>2_internal): Delete, no longer
! 	used.
! 	(fixuns_trunc<SFDF:mode><QHI:mode>2_internal): Likewise.
! 	(fix<uns>_<mode>_mem): Likewise.
! 	(fctiw<u>z_<mode>_mem): Likewise.
! 	(fix<uns>_<mode>_mem): Likewise.
! 	(fix<uns>_trunc<SFDF:mode><QHSI:mode>2_mem): On ISA 3.0, prevent
! 	the register allocator from doing a direct move to the GPRs to do
! 	a store, and instead use the ISA 3.0 store byte/half-word from
! 	vector register instruction.  For IEEE 128-bit floating point,
! 	also optimize stores of 32-bit ints.
! 	(fix<uns>_trunc<IEEE128:mode><QHSI:mode>2_mem): Likewise.
  
! 2018-02-07  Alan Hayward  <alan.hayward@arm.com>
  
! 	* genextract.c (push_pathstr_operand): New function to support
! 	[a-zA-Z].
! 	(walk_rtx): Call push_pathstr_operand.
! 	(print_path): Support [a-zA-Z].
  
! 2018-02-07  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/84037
! 	* tree-vectorizer.h (struct _loop_vec_info): Add ivexpr_map member.
! 	(cse_and_gimplify_to_preheader): Declare.
! 	(vect_get_place_in_interleaving_chain): Likewise.
! 	* tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
! 	ivexpr_map.
! 	(_loop_vec_info::~_loop_vec_info): Delete it.
! 	(cse_and_gimplify_to_preheader): New function.
! 	* tree-vect-slp.c (vect_get_place_in_interleaving_chain): Export.
! 	* tree-vect-stmts.c (vectorizable_store): CSE base and steps.
! 	(vectorizable_load): Likewise.  For grouped stores always base
! 	the IV on the first element.
! 	* tree-vect-loop-manip.c (vect_loop_versioning): Unshare versioning
! 	condition before gimplifying.
  
! 2018-02-07  Jakub Jelinek  <jakub@redhat.com>
  
! 	* tree-eh.c (operation_could_trap_helper_p): Ignore honor_trapv for
! 	*DIV_EXPR and *MOD_EXPR.
  
! 2018-02-07  H.J. Lu  <hongjiu.lu@intel.com>
  
! 	PR target/84248
! 	* config/i386/i386.c (ix86_option_override_internal): Mask out
! 	the CF_SET bit when checking -fcf-protection.
  
! 2018-02-07  Tom de Vries  <tom@codesourcery.com>
  
! 	PR libgomp/84217
! 	* omp-expand.c (expand_oacc_collapse_init): Ensure diff_type is large
! 	enough.
  
! 2018-02-07  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/84204
! 	* tree-chrec.c (chrec_fold_plus_1): Remove size limiting in
! 	this place.
  
! 	PR tree-optimization/84205
! 	* graphite-isl-ast-to-gimple.c (binary_op_to_tree): Also
! 	special-case isl_ast_op_zdiv_r.
  
! 	PR tree-optimization/84223
! 	* graphite-scop-detection.c (gather_bbs::before_dom_children):
! 	Only add conditions from within the region.
! 	(gather_bbs::after_dom_children): Adjust.
  
! 2018-02-07  Georg-Johann Lay  <avr@gjlay.de>
  
! 	PR target/84209
! 	* config/avr/avr.h (GENERAL_REGNO_P, GENERAL_REG_P): New macros.
! 	* config/avr/avr.md: Only post-reload split REG-REG moves if
! 	either register is GENERAL_REG_P.
  
! 2018-02-07  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/84235
! 	* tree-ssa-scopedtables.c
! 	(avail_exprs_stack::simplify_binary_operation): Fir MINUS_EXPR, punt
! 	if the subtraction is performed in floating point type where NaNs are
! 	honored.  For *DIV_EXPR, punt for ALL_FRACT_MODE_Ps where we can't
! 	build 1.  Formatting fix.
  
! 2018-02-06  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/84146
! 	* config/i386/i386.c (rest_of_insert_endbranch): Only skip
! 	NOTE_INSN_CALL_ARG_LOCATION after a call, not anything else,
! 	and skip it regardless of bb boundaries.  Use CALL_P macro,
! 	don't test INSN_P (insn) together with CALL_P or JUMP_P check
! 	unnecessarily, formatting fix.
  
! 2018-02-06  Michael Collison  <michael.collison@arm.com>
  
! 	* config/arm/thumb2.md:
! 	(*thumb2_mov_negscc): Split only if TARGET_THUMB2 && !arm_restrict_it.
! 	(*thumb_mov_notscc): Ditto.
  
! 2018-02-06  Michael Meissner  <meissner@linux.vnet.ibm.com>
  
! 	PR target/84154
! 	* config/rs6000/rs6000.md (su code attribute): Use "u" for
! 	unsigned_fix, not "s".
  
! 2018-02-06  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
  
! 	* configure.ac (gcc_fn_eh_frame_ro): New function.
! 	(gcc_cv_as_cfi_directive): Check both 32 and 64-bit assembler for
! 	correct .eh_frame permissions.
! 	* configure: Regenerate.
  
! 2018-02-06  Andrew Jenner  <andrew@codeourcery.com>
  
! 	* doc/invoke.texi: Add section for the PowerPC SPE backend. Remove
! 	irrelevant options.
  
! 2018-02-06  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
  
! 	* config/rs6000/rs6000.c (rs6000_option_override_internal):
! 	Display warning message for -mno-speculate-indirect-jumps.
  
! 2018-02-06  Andrew Jenner  <andrew@codesourcery.com>
  
! 	* config/powerpcspe/powerpcspe.opt: (msimple-fpu, mfpu) Add
! 	Undocumented.
! 	* config/powerpcspe/sysv4.opt (mbit-align): Likewise.
  
! 2018-02-06  Aldy Hernandez  <aldyh@redhat.com>
  
! 	PR tree-optimization/84225
! 	* tree-eh.c (find_trapping_overflow): Only call
! 	operation_no_trapping_overflow when ANY_INTEGRAL_TYPE_P.
  
! 2018-02-06  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
  
! 	PR target/84145
! 	* config/i386/i386.c: Reimplement the check of possible options
! 	-mibt/-mshstk conbination. Change error messages.
! 	* doc/invoke.texi: Fix a typo: remove extra '='.
  
! 2018-02-06  Marek Polacek  <polacek@redhat.com>
  
! 	PR tree-optimization/84228
! 	* tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Skip debug statements.
  
! 2018-02-06  Tamar Christina  <tamar.christina@arm.com>
  
! 	PR target/82641
! 	* config/arm/arm.c (arm_print_asm_arch_directives): Record already
! 	emitted arch directives.
! 	* config/arm/arm-c.c (arm_cpu_builtins): Undefine __ARM_ARCH and
! 	__ARM_FEATURE_COPROC before changing architectures.
  
! 2018-02-06  Richard Biener  <rguenther@suse.de>
  
! 	* config/i386/i386.c (print_reg): Fix typo.
! 	(ix86_loop_unroll_adjust): Do not unroll beyond the original nunroll.
  
! 2018-02-06  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* configure: Regenerate.
  
! 2018-02-05  Martin Sebor  <msebor@redhat.com>
  
! 	PR tree-optimization/83369
! 	* tree-ssa-ccp.c (pass_post_ipa_warn::execute): Use %G to print
! 	inlining context.
  
! 2018-02-05  Martin Liska  <mliska@suse.cz>
  
! 	* doc/invoke.texi: Cherry-pick upstream r323995.
  
! 2018-02-05  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* ira.c (ira_init_register_move_cost): Adjust comment.
  
! 2018-02-05  Martin Liska  <mliska@suse.cz>
  
! 	PR gcov-profile/84137
! 	* doc/gcov.texi: Fix typo in documentation.
  
! 2018-02-05  Martin Liska  <mliska@suse.cz>
  
! 	PR gcov-profile/83879
! 	* doc/gcov.texi: Document necessity of --dynamic-list-data when
! 	using dlopen functionality.
  
! 2018-02-05  Olga Makhotina  <olga.makhotina@intel.com>
  
! 	* config/i386/avx512dqintrin.h (_mm_mask_range_sd, _mm_maskz_range_sd,
! 	_mm_mask_range_round_sd, _mm_maskz_range_round_sd, _mm_mask_range_ss,
! 	_mm_maskz_range_ss, _mm_mask_range_round_ss,
! 	_mm_maskz_range_round_ss): New intrinsics.
! 	(__builtin_ia32_rangesd128_round)
! 	(__builtin_ia32_rangess128_round): Remove.
! 	(__builtin_ia32_rangesd128_mask_round,
! 	__builtin_ia32_rangess128_mask_round): New builtins.
! 	* config/i386/i386-builtin.def (__builtin_ia32_rangesd128_round,
! 	__builtin_ia32_rangess128_round): Remove.
! 	(__builtin_ia32_rangesd128_mask_round,
! 	__builtin_ia32_rangess128_mask_round): New builtins.
! 	* config/i386/sse.md (ranges<mode><round_saeonly_name>): Renamed to ...
! 	(ranges<mode><mask_scalar_name><round_saeonly_scalar_name>): ... this.
! 	((match_operand:VF_128 2 "<round_saeonly_nimm_predicate>"
! 	"<round_saeonly_constraint>")): Changed to ...
! 	((match_operand:VF_128 2 "<round_saeonly_scalar_nimm_predicate>"
! 	"<round_saeonly_scalar_constraint>")): ... this.
! 	("vrange<ssescalarmodesuffix>\t{%3, <round_saeonly_op4>%2, %1, %0|
! 	%0, %1, %2<round_saeonly_op4>, %3}"): Changed to ...
! 	("vrange<ssescalarmodesuffix>\t{%3, <round_saeonly_scalar_mask_op4>%2,
! 	%1, %0<mask_scalar_operand4>|%0<mask_scalar_operand4>, %1,
! 	%2<round_saeonly_scalar_mask_op4>, %3}"): ... this.
  
! 2018-02-02  Andrew Jenner  <andrew@codesourcery.com>
  
! 	* config/powerpcspe/powerpcspe.opt: Add Undocumented to irrelevant
! 	options.
! 	* config/powerpcspe/powerpcspe-tables.opt (rs6000_cpu_opt_value):
! 	Remove all values except native, 8540 and 8548.
  
! 2018-02-02  H.J. Lu  <hongjiu.lu@intel.com>
  
! 	* config/i386/i386.c (ix86_output_function_return): Pass
! 	INVALID_REGNUM, instead of -1, as invalid register number to
! 	indirect_thunk_name and output_indirect_thunk.
  
! 2018-02-02  Julia Koval  <julia.koval@intel.com>
  
! 	* config.gcc: Add -march=icelake.
! 	* config/i386/driver-i386.c (host_detect_local_cpu): Detect icelake.
! 	* config/i386/i386-c.c (ix86_target_macros_internal): Handle icelake.
! 	* config/i386/i386.c (processor_costs): Add m_ICELAKE.
! 	(PTA_ICELAKE, PTA_AVX512VNNI, PTA_GFNI, PTA_VAES, PTA_AVX512VBMI2,
! 	PTA_VPCLMULQDQ, PTA_RDPID, PTA_AVX512BITALG): New.
! 	(processor_target_table): Add icelake.
! 	(ix86_option_override_internal): Handle new PTAs.
! 	(get_builtin_code_for_version): Handle icelake.
! 	(M_INTEL_COREI7_ICELAKE): New.
! 	(fold_builtin_cpu): Handle icelake.
! 	* config/i386/i386.h (TARGET_ICELAKE, PROCESSOR_ICELAKE): New.
! 	* doc/invoke.texi: Add -march=icelake.
  
! 2018-02-02  Julia Koval  <julia.koval@intel.com>
  
! 	* config/i386/i386.c (ix86_option_override_internal): Change flags type
! 	to wide_int_bitmask.
! 	* wide-int-bitmask.h: New.
  
! 2018-02-02  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
  
! 	PR target/84066
! 	* config/i386/i386.md: Replace Pmode with word_mode in
! 	builtin_setjmp_setup and builtin_longjmp to support x32.
  
! 2018-02-01  Peter Bergner  <bergner@vnet.ibm.com>
  
! 	PR target/56010
! 	PR target/83743
! 	* config/rs6000/driver-rs6000.c: #include "diagnostic.h".
! 	#include "opts.h".
! 	(rs6000_supported_cpu_names): New static variable.
! 	(linux_cpu_translation_table): Likewise.
! 	(elf_platform) <cpu>: Define new static variable and use it.
! 	Translate kernel AT_PLATFORM name to canonical name if needed.
! 	Error if platform name is unknown.
  
! 2018-02-01  Aldy Hernandez  <aldyh@redhat.com>
  
! 	PR target/84089
! 	* config/pa/predicates.md (base14_operand): Handle E_VOIDmode.
  
! 2018-02-01  Jeff Law  <law@redhat.com>
  
! 	PR target/84128
! 	* config/i386/i386.c (release_scratch_register_on_entry): Add new
! 	OFFSET and RELEASE_VIA_POP arguments.  Use SP+OFFSET to restore
! 	the scratch if RELEASE_VIA_POP is false.
! 	(ix86_adjust_stack_and_probe_stack_clash): Un-constify SIZE.
! 	If we have to save a temporary register, decrement SIZE appropriately.
! 	Pass new arguments to release_scratch_register_on_entry.
! 	(ix86_adjust_stack_and_probe): Likewise.
! 	(ix86_emit_probe_stack_range): Pass new arguments to
! 	release_scratch_register_on_entry.
  
! 2018-02-01  Uros Bizjak  <ubizjak@gmail.com>
  
! 	PR rtl-optimization/84157
! 	* combine.c (change_zero_ext): Use REG_P predicate in
! 	front of HARD_REGISTER_P predicate.
  
! 2018-02-01  Georg-Johann Lay  <avr@gjlay.de>
  
! 	* config/avr/avr.c (avr_option_override): Move disabling of
! 	-fdelete-null-pointer-checks to...
! 	* common/config/avr/avr-common.c (avr_option_optimization_table):
! 	...here.
  
! 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	PR tree-optimization/81635
! 	* tree-data-ref.c (split_constant_offset_1): For types that
! 	wrap on overflow, try to use range info to prove that wrapping
! 	cannot occur.
  
! 2018-02-01  Renlin Li  <renlin.li@arm.com>
  
! 	PR target/83370
! 	* config/aarch64/aarch64.c (aarch64_class_max_nregs): Handle
! 	TAILCALL_ADDR_REGS.
! 	(aarch64_register_move_cost): Likewise.
! 	* config/aarch64/aarch64.h (reg_class): Rename CALLER_SAVE_REGS to
! 	TAILCALL_ADDR_REGS.
! 	(REG_CLASS_NAMES): Likewise.
! 	(REG_CLASS_CONTENTS): Rename CALLER_SAVE_REGS to
! 	TAILCALL_ADDR_REGS. Remove IP registers.
! 	* config/aarch64/aarch64.md (Ucs): Update register constraint.
  
! 2018-02-01  Richard Biener  <rguenther@suse.de>
  
! 	* domwalk.h (dom_walker::dom_walker): Add additional constructor
! 	for specifying RPO order and allow NULL for that.
! 	* domwalk.c (dom_walker::dom_walker): Likewise.
! 	(dom_walker::walk): Handle NULL RPO order.
! 	* tree-into-ssa.c (rewrite_dom_walker): Do not walk dom children
! 	in RPO order.
! 	(rewrite_update_dom_walker): Likewise.
! 	(mark_def_dom_walker): Likewise.
  
! 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* config/aarch64/aarch64-protos.h (aarch64_split_sve_subreg_move)
! 	(aarch64_maybe_expand_sve_subreg_move): Declare.
! 	* config/aarch64/aarch64.md (UNSPEC_REV_SUBREG): New unspec.
! 	* config/aarch64/predicates.md (aarch64_any_register_operand): New
! 	predicate.
! 	* config/aarch64/aarch64-sve.md (mov<mode>): Optimize subreg moves
! 	that are semantically a reverse operation.
! 	(*aarch64_sve_mov<mode>_subreg_be): New pattern.
! 	* config/aarch64/aarch64.c (aarch64_maybe_expand_sve_subreg_move):
! 	(aarch64_replace_reg_mode, aarch64_split_sve_subreg_move): New
! 	functions.
! 	(aarch64_can_change_mode_class): For big-endian, forbid changes
! 	between two SVE modes if they have different element sizes.
  
! 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* config/aarch64/aarch64.c (aarch64_expand_sve_const_vector): Prefer
! 	the TImode handling for big-endian targets.
  
! 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* config/aarch64/aarch64-sve.md (sve_ld1rq): Replace with...
! 	(*sve_ld1rq<Vesize>): ... this new pattern.  Handle all element sizes,
! 	not just bytes.
! 	* config/aarch64/aarch64.c (aarch64_expand_sve_widened_duplicate):
! 	Remove BSWAP handing for big-endian targets and use the form of
! 	LD1RQ appropariate for the mode.
  
! 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* config/aarch64/aarch64.c (aarch64_simd_valid_immediate): Handle
! 	all CONST_VECTOR_DUPLICATE_P vectors, not just those with a single
! 	duplicated element.
  
! 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	PR tearget/83845
! 	* config/aarch64/aarch64.c (aarch64_secondary_reload): Tighten
! 	check for operands that need to go through aarch64_sve_reload_be.
  
! 2018-02-01  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/81661
! 	PR tree-optimization/84117
! 	* tree-eh.h (rewrite_to_non_trapping_overflow): Declare.
! 	* tree-eh.c: Include gimplify.h.
! 	(find_trapping_overflow, replace_trapping_overflow,
! 	rewrite_to_non_trapping_overflow): New functions.
! 	* tree-vect-loop.c: Include tree-eh.h.
! 	(vect_get_loop_niters): Use rewrite_to_non_trapping_overflow.
! 	* tree-data-ref.c: Include tree-eh.h.
! 	(get_segment_min_max): Use rewrite_to_non_trapping_overflow.
  
! 2018-01-31  Uros Bizjak  <ubizjak@gmail.com>
  
! 	PR rtl-optimization/84123
! 	* combine.c (change_zero_ext): Check if hard register satisfies
! 	can_change_dest_mode before calling gen_lowpart_SUBREG.
  
! 2018-01-31  Vladimir Makarov  <vmakarov@redhat.com>
  
! 	PR target/82444
! 	* ira.c (ira_init_register_move_cost): Remove assert.
  
! 2018-01-31  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR rtl-optimization/84071
! 	* doc/tm.texi.in (WORD_REGISTER_OPERATIONS): Add explicit case.
! 	* doc/tm.texi: Regenerate.
  
! 2018-01-31  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/84132
! 	* tree-data-ref.c (analyze_miv_subscript): Properly
! 	check whether evolution_function_is_affine_multivariate_p
! 	before calling gcd_of_steps_may_divide_p.
  
! 2018-01-31  Julia Koval  <julia.koval@intel.com>
  
! 	PR target/83618
! 	* config/i386/i386.c (ix86_expand_builtin): Handle IX86_BUILTIN_RDPID.
! 	* config/i386/i386.md (rdpid_rex64) New.
! 	(rdpid): Make 32bit only.
  
! 2018-01-29  Aldy Hernandez  <aldyh@redhat.com>
  
! 	PR lto/84105
! 	* tree-pretty-print.c (dump_generic_node): Handle a TYPE_NAME with
! 	an IDENTIFIER_NODE for FUNCTION_TYPE's.
  
! 2018-01-31  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	Revert
! 	2018-01-12  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* config/sparc/sparc.md (vxworks_load_got): Set the GOT register.
  
! 2018-01-31  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR rtl-optimization/84071
! 	* combine.c (record_dead_and_set_regs_1): Record the source unmodified
! 	for a paradoxical SUBREG on a WORD_REGISTER_OPERATIONS target.
  
! 2018-01-31  Claudiu Zissulescu  <claziss@synopsys.com>
  
! 	* config/arc/arc.c (arc_handle_aux_attribute): New function.
! 	(arc_attribute_table): Add 'aux' attribute.
! 	(arc_in_small_data_p): Consider aux like variables.
! 	(arc_is_aux_reg_p): New function.
! 	(arc_asm_output_aligned_decl_local): Ignore 'aux' like variables.
! 	(arc_get_aux_arg): New function.
! 	(prepare_move_operands): Handle aux-register access.
! 	(arc_handle_aux_attribute): New function.
! 	* doc/extend.texi (ARC Variable attributes): Add subsection.
  
! 2018-01-31  Claudiu Zissulescu  <claziss@synopsys.com>
  
! 	* config/arc/arc-protos.h (arc_is_uncached_mem_p): Function proto.
! 	* config/arc/arc.c (arc_handle_uncached_attribute): New function.
! 	(arc_attribute_table): Add 'uncached' attribute.
! 	(arc_print_operand): Print '.di' flag for uncached memory
  	accesses.
+ 	(arc_in_small_data_p): Do not consider for small data the uncached
+ 	types.
+ 	(arc_is_uncached_mem_p): New function.
+ 	* config/arc/predicates.md (compact_store_memory_operand): Check
+ 	for uncached memory accesses.
+ 	(nonvol_nonimm_operand): Likewise.
+ 	* gcc/doc/extend.texi (ARC Type Attribute): New subsection.
  
! 2018-01-31  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR c/84100
! 	* common.opt (falign-functions=, falign-jumps=, falign-labels=,
! 	falign-loops=): Add Optimization flag.
  
! 2018-01-30  Jeff Law  <law@redhat.com>
  
! 	PR target/84064
! 	* i386.c (ix86_adjust_stack_and_probe_stack_clash): New argument
! 	INT_REGISTERS_SAVED.  Check it prior to calling
! 	get_scratch_register_on_entry.
! 	(ix86_adjust_stack_and_probe): Similarly.
! 	(ix86_emit_probe_stack_range): Similarly.
! 	(ix86_expand_prologue): Corresponding changes.
  
! 2018-01-30  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
  
! 	PR target/40411
! 	* config/sol2.h (STARTFILE_ARCH_SPEC): Use -std=c*,
! 	-std=iso9899:199409 instead of -pedantic to select values-Xc.o.
  
! 2018-01-30  Vladimir Makarov  <vmakarov@redhat.com>
  
! 	PR target/84112
! 	* lra-constraints.c (curr_insn_transform): Process AND in the
! 	address.
  
! 2018-01-30  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR rtl-optimization/83986
! 	* sched-deps.c (sched_analyze_insn): For frame related insns, add anti
! 	dependence against last_pending_memory_flush in addition to
! 	pending_jump_insns.
  
! 2018-01-30  Alexandre Oliva  <aoliva@redhat.com>
  
! 	PR tree-optimization/81611
! 	* tree-ssa-dom.c (simple_iv_increment_p): Skip intervening
! 	copies.
  
! 2018-01-30  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
  
! 	PR target/83758
! 	* config/rs6000/rs6000.c (rs6000_internal_arg_pointer): Only return
! 	a reg rtx.
  
! 2018-01-30  Richard Biener  <rguenther@suse.de>
! 	    Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/84111
! 	* tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely_1): Skip
! 	inner loops added during recursion, as they don't have up-to-date
! 	SSA form.
  
! 2018-01-30  Jan Hubicka  <hubicka@ucw.cz>
  
! 	PR ipa/81360
! 	* ipa-inline.c (can_inline_edge_p): Break out late tests to...
! 	(can_inline_edge_by_limits_p): ... here.
! 	(can_early_inline_edge_p, check_callers,
! 	update_caller_keys, update_callee_keys, recursive_inlining,
! 	add_new_edges_to_heap, speculation_useful_p,
! 	inline_small_functions,
! 	inline_small_functions, flatten_function,
! 	inline_to_all_callers_1): Update.
  
! 2018-01-30  Jan Hubicka  <hubicka@ucw.cz>
  
! 	* profile-count.c (profile_count::combine_with_ipa_count): Handle
! 	zeros correctly.
  
! 2018-01-30  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/83008
! 	* tree-vect-slp.c (vect_analyze_slp_cost_1): Properly cost
! 	invariant and constant vector uses in stmts when they need
! 	more than one stmt.
  
! 2018-01-30  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
  
! 	PR bootstrap/84017
! 	* configure.ac (gcc_cv_as_shf_merge): Disable on Solaris 10/x86.
! 	* configure: Regenerate.
  
! 2018-01-30  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* config/aarch64/aarch64-sve.md (*vec_extract<mode><Vel>_0): New
! 	pattern.
! 	(*vec_extract<mode><Vel>_v128): Require a nonzero lane number.
! 	Use gen_rtx_REG rather than gen_lowpart.
  
! 2018-01-30  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* lra-constraints.c (match_reload): Use subreg_lowpart_offset
! 	rather than 0 when creating partial subregs.
  
! 2018-01-30  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* vec-perm-indices.c (vec_perm_indices::series_p): Give examples
! 	of usage.
  
! 2018-01-29  Michael Meissner  <meissner@linux.vnet.ibm.com>
  
! 	PR target/81550
! 	* config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): If DFmode
! 	and SFmode can go in Altivec registers (-mcpu=power7 for DFmode,
! 	-mcpu=power8 for SFmode) don't set the PRE_INCDEC or PRE_MODIFY
! 	flags.  This restores the settings used before the 2017-07-24.
! 	Turning off pre increment/decrement/modify allows IVOPTS to
! 	optimize DF/SF loops where the index is an int.
  
! 2018-01-29  Richard Biener  <rguenther@suse.de>
! 	    Kelvin Nilsen  <kelvin@gcc.gnu.org>
  
! 	PR bootstrap/80867
! 	* tree-vect-stmts.c (vectorizable_call): Don't call
! 	targetm.vectorize_builtin_md_vectorized_function if callee is
! 	NULL.
  
! 2018-01-22  Carl Love  <cel@us.ibm.com>
  
! 	* doc/extend.tex: Fix typo in second arg in
! 	__builtin_bcdadd_{lt|eq|gt|ov} and __builtin_bcdsub_{lt|eq|gt|ov}.
  
! 2018-01-29  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/84086
! 	* tree-ssanames.c: Include cfgloop.h and tree-scalar-evolution.h.
! 	(flush_ssaname_freelist): When SSA names were released reset
! 	the SCEV hash table.
  
! 2018-01-29  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/84057
! 	* tree-ssa-loop-ivcanon.c (unloop_loops): Deal with already
! 	removed paths when removing edges.
  
! 2018-01-27  H.J. Lu  <hongjiu.lu@intel.com>
  
! 	* doc/invoke.texi: Replace -mfunction-return==@var{choice} with
! 	-mfunction-return=@var{choice}.
  
! 2018-01-27  Bernd Edlinger  <bernd.edlinger@hotmail.de>
  
! 	PR diagnostic/84034
! 	* diagnostic-show-locus.c (get_line_width_without_trailing_whitespace):
! 	Handle CR like TAB.
! 	(layout::print_source_line): Likewise.
! 	(test_get_line_width_without_trailing_whitespace): Add test cases.
  
! 2018-01-27  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/84040
! 	* sched-deps.c (sched_macro_fuse_insns): Return immediately for
  	debug insns.
  
! 2018-01-26  Jim Wilson  <jimw@sifive.com>
  
! 	* config/riscv/riscv.h (MAX_FIXED_MODE_SIZE): New.
  
! 	* config/riscv/elf.h (LIB_SPEC): Don't include -lgloss when nosys.specs
! 	specified.
  
! 2018-01-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/aarch64/aarch64.md: Add peepholes for CMP + SUB -> SUBS
! 	and CMP + SUB-immediate -> SUBS.
  
! 2018-01-26  Martin Sebor  <msebor@redhat.com>
  
! 	PR tree-optimization/83896
! 	* tree-ssa-strlen.c (get_string_len): Rename...
! 	(get_string_cst_length): ...to this.  Return HOST_WIDE_INT.
! 	Avoid assuming length is constant.
! 	(handle_char_store): Use HOST_WIDE_INT for string length.
  
! 2018-01-26  Uros Bizjak  <ubizjak@gmail.com>
  
! 	PR target/81763
! 	* config/i386/i386.md (*andndi3_doubleword): Add earlyclobber
! 	to (=&r,r,rm) alternative. Add (=r,0,rm) and (=r,r,0) alternatives.
  
! 2018-01-26  Richard Biener  <rguenther@suse.de>
  
! 	PR rtl-optimization/84003
! 	* dse.c (record_store): Only record redundant stores when
! 	the earlier store aliases at least all accesses the later one does.
  
! 2018-01-26  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR rtl-optimization/83985
! 	* dce.c (deletable_insn_p): Return false for separate shrink wrapping
! 	REG_CFA_RESTORE insns.
! 	(delete_unmarked_insns): Don't ignore separate shrink wrapping
! 	REG_CFA_RESTORE insns here.
  
! 	PR c/83989
! 	* gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Don't
! 	use SSA_NAME_VAR as base for SSA_NAMEs with non-NULL SSA_NAME_VAR.
  
! 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
  
! 	* config/arc/arc-arch.h (arc_tune_attr): Add ARC_TUNE_CORE_3.
! 	* config/arc/arc.c (arc_sched_issue_rate): Use ARC_TUNE_... .
! 	(arc_init): Likewise.
! 	(arc_override_options): Likewise.
! 	(arc_file_start): Choose Tag_ARC_CPU_variation based on arc_tune
! 	value.
! 	(hwloop_fail): Use TARGET_DBNZ when we want to check for dbnz insn
! 	support.
! 	* config/arc/arc.h (TARGET_DBNZ): Define.
! 	* config/arc/arc.md (attr tune): Add core_3, use ARC_TUNE_... to
! 	properly set the tune attribute.
! 	(dbnz): Use TARGET_DBNZ guard.
! 	* config/arc/arc.opt (mtune): Add core3 option.
  
! 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
  
! 	* config/arc/arc.c (arc_delegitimize_address_0): Refactored to
! 	recognize new pic like addresses.
! 	(arc_delegitimize_address): Clean up.
  
! 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
  
! 	* config/arc/arc-arches.def: Option mrf16 valid for all
! 	architectures.
! 	* config/arc/arc-c.def (__ARC_RF16__): New predefined macro.
! 	* config/arc/arc-cpus.def (em_mini): New cpu with rf16 on.
! 	* config/arc/arc-options.def (FL_RF16): Add mrf16 option.
! 	* config/arc/arc-tables.opt: Regenerate.
! 	* config/arc/arc.c (arc_conditional_register_usage): Handle
! 	reduced register file case.
! 	(arc_file_start): Set must have build attributes.
! 	* config/arc/arc.h (MAX_ARC_PARM_REGS): Conditional define using
! 	mrf16 option value.
! 	* config/arc/arc.opt (mrf16): Add new option.
! 	* config/arc/elf.h (ATTRIBUTE_PCS): Define.
! 	* config/arc/genmultilib.awk: Handle new mrf16 option.
! 	* config/arc/linux.h (ATTRIBUTE_PCS): Define.
! 	* config/arc/t-multilib: Regenerate.
! 	* doc/invoke.texi (ARC Options): Document mrf16 option.
  
! 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
  
! 	* config/arc/arc-protos.h: Add arc_is_secure_call_p proto.
! 	* config/arc/arc.c (arc_handle_secure_attribute): New function.
! 	(arc_attribute_table): Add 'secure_call' attribute.
! 	(arc_print_operand): Print secure call operand.
! 	(arc_function_ok_for_sibcall): Don't optimize tail calls when
! 	secure.
! 	(arc_is_secure_call_p): New function.  * config/arc/arc.md
! 	(call_i): Add support for sjli instruction.
! 	(call_value_i): Likewise.
! 	* config/arc/constraints.md (Csc): New constraint.
  
! 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
! 	    John Eric Martin  <John.Martin@emmicro-us.com>
  
! 	* config/arc/arc-protos.h: Add arc_is_jli_call_p proto.
! 	* config/arc/arc.c (_arc_jli_section): New struct.
! 	(arc_jli_section): New type.
! 	(rc_jli_sections): New static variable.
! 	(arc_handle_jli_attribute): New function.
! 	(arc_attribute_table): Add jli_always and jli_fixed attribute.
! 	(arc_file_end): New function.
! 	(TARGET_ASM_FILE_END): Define.
! 	(arc_print_operand): Reuse 'S' letter for JLI output instruction.
! 	(arc_add_jli_section): New function.
! 	(jli_call_scan): Likewise.
! 	(arc_reorg): Call jli_call_scan.
! 	(arc_output_addsi): Remove 'S' from printing asm operand.
! 	(arc_is_jli_call_p): New function.
! 	* config/arc/arc.md (movqi_insn): Remove 'S' from printing asm
! 	operand.
! 	(movhi_insn): Likewise.
! 	(movsi_insn): Likewise.
! 	(movsi_set_cc_insn): Likewise.
! 	(loadqi_update): Likewise.
! 	(load_zeroextendqisi_update): Likewise.
! 	(load_signextendqisi_update): Likewise.
! 	(loadhi_update): Likewise.
! 	(load_zeroextendhisi_update): Likewise.
! 	(load_signextendhisi_update): Likewise.
! 	(loadsi_update): Likewise.
! 	(loadsf_update): Likewise.
! 	(movsicc_insn): Likewise.
! 	(bset_insn): Likewise.
! 	(bxor_insn): Likewise.
! 	(bclr_insn): Likewise.
! 	(bmsk_insn): Likewise.
! 	(bicsi3_insn): Likewise.
! 	(cmpsi_cc_c_insn): Likewise.
! 	(movsi_ne): Likewise.
! 	(movsi_cond_exec): Likewise.
! 	(clrsbsi2): Likewise.
! 	(norm_f): Likewise.
! 	(normw): Likewise.
! 	(swap): Likewise.
! 	(divaw): Likewise.
! 	(flag): Likewise.
! 	(sr): Likewise.
! 	(kflag): Likewise.
! 	(ffs): Likewise.
! 	(ffs_f): Likewise.
! 	(fls): Likewise.
! 	(call_i): Remove 'S' asm letter, add jli instruction.
! 	(call_value_i): Likewise.
! 	* config/arc/arc.op (mjli-always): New option.
! 	* config/arc/constraints.md (Cji): New constraint.
! 	* config/arc/fpx.md (addsf3_fpx): Remove 'S' from printing asm
! 	operand.
! 	(subsf3_fpx): Likewise.
! 	(mulsf3_fpx): Likewise.
! 	* config/arc/simdext.md (vendrec_insn): Remove 'S' from printing
! 	asm operand.
! 	* doc/extend.texi (ARC): Document 'jli-always' and 'jli-fixed'
! 	function attrbutes.
! 	* doc/invoke.texi (ARC): Document mjli-always option.
  
! 2018-01-26  Sebastian Perta  <sebastian.perta@renesas.com>
  
! 	* config/rl78/rl78.c (rl78_addsi3_internal): If operand 2 is const 
! 	avoid addition with 0 and use incw and decw where possible.
  
! 2018-01-26  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/81082
! 	* fold-const.c (fold_plusminus_mult_expr): Do not perform the
! 	association if it requires casting to unsigned.
! 	* match.pd ((A * C) +- (B * C) -> (A+-B)): New patterns derived
! 	from fold_plusminus_mult_expr to catch important cases late when
! 	range info is available.
  
! 2018-01-26  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
  
! 	* config/i386/sol2.h (USE_HIDDEN_LINKONCE): Remove.
! 	* configure.ac (hidden_linkonce): New test.
! 	* configure: Regenerate.
! 	* config.in: Regenerate.
  
! 2018-01-26  Julia Koval  <julia.koval@intel.com>
  
! 	* config/i386/avx512bitalgintrin.h (_mm512_bitshuffle_epi64_mask,
! 	_mm512_mask_bitshuffle_epi64_mask, _mm256_bitshuffle_epi64_mask,
! 	_mm256_mask_bitshuffle_epi64_mask, _mm_bitshuffle_epi64_mask,
! 	_mm_mask_bitshuffle_epi64_mask): Fix type.
! 	* config/i386/i386-builtin-types.def (UHI_FTYPE_V2DI_V2DI_UHI,
! 	USI_FTYPE_V4DI_V4DI_USI): Remove.
! 	* config/i386/i386-builtin.def (__builtin_ia32_vpshufbitqmb512_mask,
! 	__builtin_ia32_vpshufbitqmb256_mask,
! 	__builtin_ia32_vpshufbitqmb128_mask): Fix types.
! 	* config/i386/i386.c (ix86_expand_args_builtin): Remove old types.
! 	* config/i386/sse.md (VI1_AVX512VLBW): Change types.
  
! 2018-01-26  Alan Modra  <amodra@gmail.com>
  
! 	PR target/84033
! 	* config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Exclude
! 	UNSPEC_VBPERMQ.  Sort other unspecs.
  
! 2018-01-25  David Edelsohn  <dje.gcc@gmail.com>
  
! 	* doc/invoke.texi (PowerPC Options): Document 'native' cpu type.
  
! 2018-01-25  Jan Hubicka  <hubicka@ucw.cz>
  
! 	PR middle-end/83055
! 	* predict.c (drop_profile): Do not push/pop cfun; update also
! 	node->count.
! 	(handle_missing_profiles): Fix logic looking for zero profiles.
  
! 2018-01-25  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/83977
! 	* ipa-fnsummary.c (compute_fn_summary): Clear can_change_signature
! 	on functions with #pragma omp declare simd or functions with simd
! 	attribute.
! 	* omp-simd-clone.c (expand_simd_clones): Revert 2018-01-24 change.
! 	* config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen):
! 	Remove trailing \n from warning_at calls.
  
! 2018-01-25  Tom de Vries  <tom@codesourcery.com>
  
! 	PR target/84028
! 	* config/nvptx/nvptx.c (nvptx_single): Add exit insn after noreturn call
! 	for neutered workers.
  
! 2018-01-24  Joseph Myers  <joseph@codesourcery.com>
  
! 	PR target/68467
! 	* config/m68k/m68k.c (m68k_promote_function_mode): New function.
! 	(TARGET_PROMOTE_FUNCTION_MODE): New macro.
  
! 2018-01-24  Jeff Law  <law@redhat.com>
  
! 	PR target/83994
! 	* i386.c (get_probe_interval): Move to earlier point.
! 	(ix86_compute_frame_layout): If -fstack-clash-protection and
! 	the frame is larger than the probe interval, then use pushes
! 	to save registers rather than reg->mem moves.
! 	(ix86_expand_prologue): Remove conditional for int_registers_saved
! 	assertion.
  
! 2018-01-24  Vladimir Makarov  <vmakarov@redhat.com>
  
! 	PR target/84014
! 	* ira-build.c (setup_min_max_allocno_live_range_point): Set up
! 	min/max for never referenced object.
  
! 2018-01-24  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/83977
! 	* tree.c (free_lang_data_in_decl): Don't clear DECL_ABSTRACT_ORIGIN
! 	here.
! 	* omp-low.c (create_omp_child_function): Remove "omp declare simd"
! 	attributes from DECL_ATTRIBUTES (decl) without affecting
! 	DECL_ATTRIBUTES (current_function_decl).
! 	* omp-simd-clone.c (expand_simd_clones): Ignore DECL_ARTIFICIAL
! 	functions with non-NULL DECL_ABSTRACT_ORIGIN.
  
! 2018-01-24  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	PR tree-optimization/83979
! 	* fold-const.c (fold_comparison): Use constant_boolean_node
! 	instead of boolean_{true,false}_node.
  
! 2018-01-24  Jan Hubicka  <hubicka@ucw.cz>
  
! 	* ipa-profile.c (ipa_propagate_frequency_1): Fix logic skipping calls
! 	with zero counts.
  
! 2018-01-24  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
  
! 	* config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
! 	Simplify the clause that sets the length attribute.
! 	(*call_value_indirect_nonlocal_sysv<mode>): Likewise.
! 	(*sibcall_nonlocal_sysv<mode>): Clean up code block; simplify the
! 	clause that sets the length attribute.
! 	(*sibcall_value_nonlocal_sysv<mode>): Likewise.
  
! 2018-01-24  Tom de Vries  <tom@codesourcery.com>
  
! 	PR target/83589
! 	* config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG_2): Define to 1.
! 	(nvptx_pc_set, nvptx_condjump_label): New function. Copy from jump.c.
! 	Add strict parameter.
! 	(prevent_branch_around_nothing): Insert dummy insn between branch to
! 	label and label with no ptx insn inbetween.
! 	* config/nvptx/nvptx.md (define_insn "fake_nop"): New insn.
  
! 2018-01-24  Tom de Vries  <tom@codesourcery.com>
  
! 	PR target/81352
! 	* config/nvptx/nvptx.c (nvptx_single): Add exit insn after noreturn call
! 	for neutered threads in warp.
! 	* config/nvptx/nvptx.md (define_insn "exit"): New insn.
  
! 2018-01-24  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/83176
! 	* tree-chrec.c (chrec_fold_plus_1): Handle (signed T){(T) .. }
! 	operands.
  
! 2018-01-24  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/82819
! 	* graphite-isl-ast-to-gimple.c (binary_op_to_tree): Avoid
! 	code generating pluses that are no-ops in the target precision.
  
! 2018-01-24  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/84000
! 	* tree-cfg.c (replace_loop_annotate): Handle annot_expr_parallel_kind.
  
! 2018-01-23  Jan Hubicka  <hubicka@ucw.cz>
  
! 	* cfgcleanup.c (try_crossjump_to_edge): Use combine_with_count
! 	to merge probabilities.
! 	* predict.c (probably_never_executed): Also mark as cold functions
! 	with global 0 profile and guessed local profile.
! 	* profile-count.c (profile_probability::combine_with_count): New
! 	member function.
! 	* profile-count.h (profile_probability::operator*,
! 	profile_probability::operator*=, profile_probability::operator/,
! 	profile_probability::operator/=): Reduce precision to adjusted
! 	and set value to guessed on contradictory divisions.
! 	(profile_probability::combine_with_freq): Remove.
! 	(profile_probability::combine_wiht_count): Declare.
! 	(profile_count::force_nonzero):: Set to adjusted.
! 	(profile_count::probability_in):: Set quality to adjusted.
! 	* tree-ssa-tail-merge.c (replace_block_by): Use
! 	combine_with_count.
  
! 2018-01-23  Andrew Waterman  <andrew@sifive.com>
! 	    Jim Wilson  <jimw@sifive.com>
  
! 	* config/riscv/riscv.c (riscv_stack_boundary): New.
! 	(riscv_option_override): Set riscv_stack_boundary.  Handle
! 	riscv_preferred_stack_boundary_arg.
! 	* config/riscv/riscv.h (MIN_STACK_BOUNDARY, ABI_STACK_BOUNDARY): New.
! 	(BIGGEST_ALIGNMENT): Set to STACK_BOUNDARY.
! 	(STACK_BOUNDARY): Set to riscv_stack_boundary.
! 	(RISCV_STACK_ALIGN): Use STACK_BOUNDARY.
! 	* config/riscv/riscv.opt (mpreferred-stack-boundary): New.
! 	* doc/invoke.tex (RISC-V Options): Add -mpreferred-stack-boundary.
  
! 2018-01-23  H.J. Lu  <hongjiu.lu@intel.com>
  
! 	PR target/83905
! 	* config/i386/i386.c (ix86_expand_prologue): Use cost reference
! 	of struct ix86_frame.
! 	(ix86_expand_epilogue): Likewise.  Add a local variable for
! 	the reg_save_offset field in struct ix86_frame.
  
! 2018-01-23  Bin Cheng  <bin.cheng@arm.com>
  
! 	PR tree-optimization/82604
! 	* tree-loop-distribution.c (enum partition_kind): New enum item
! 	PKIND_PARTIAL_MEMSET.
! 	(partition_builtin_p): Support above new enum item.
! 	(generate_code_for_partition): Ditto.
! 	(compute_access_range): Differentiate cases that equality can be
! 	proven at all loops, the innermost loops or no loops.
! 	(classify_builtin_st, classify_builtin_ldst): Adjust call to above
! 	function.  Set PKIND_PARTIAL_MEMSET for partition appropriately.
! 	(finalize_partitions, distribute_loop): Don't fuse partition of
! 	PKIND_PARTIAL_MEMSET kind when distributing 3-level loop nest.
! 	(prepare_perfect_loop_nest): Distribute 3-level loop nest only if
! 	parloop is enabled.
  
! 2018-01-23  Martin Liska  <mliska@suse.cz>
  
! 	* predict.def (PRED_INDIR_CALL): Set probability to PROB_EVEN in
! 	order to ignore the predictor.
! 	(PRED_POLYMORPHIC_CALL): Likewise.
! 	(PRED_RECURSIVE_CALL): Likewise.
  
! 2018-01-23  Martin Liska  <mliska@suse.cz>
  
! 	* tree-profile.c (tree_profiling): Print function header to
! 	aware reader which function we are working on.
! 	* value-prof.c (gimple_find_values_to_profile): Do not print
! 	not interesting value histograms.
  
! 2018-01-23  Martin Liska  <mliska@suse.cz>
  
! 	* profile-count.h (enum profile_quality): Add
! 	profile_uninitialized as the first value. Do not number values
! 	as they are zero based.
! 	(profile_count::verify): Update sanity check.
! 	(profile_probability::verify): Likewise.
  
! 2018-01-23  Nathan Sidwell  <nathan@acm.org>
  
! 	* doc/invoke.texi (ffor-scope): Deprecate.
  
! 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
  
! 	PR tree-optimization/83510
! 	* domwalk.c (set_all_edges_as_executable): New function.
! 	(dom_walker::dom_walker): Convert bool param
! 	"skip_unreachable_blocks" to enum reachability.  Move setup of
! 	edge flags to set_all_edges_as_executable and only do it when
! 	reachability is REACHABLE_BLOCKS.
! 	* domwalk.h (enum dom_walker::reachability): New enum.
! 	(dom_walker::dom_walker): Convert bool param
! 	"skip_unreachable_blocks" to enum reachability.
! 	(set_all_edges_as_executable): New decl.
! 	* graphite-scop-detection.c  (gather_bbs::gather_bbs): Convert
! 	from false for "skip_unreachable_blocks" to ALL_BLOCKS for
! 	"reachability".
! 	* tree-ssa-dom.c (dom_opt_dom_walker::dom_opt_dom_walker): Likewise,
! 	but converting true to REACHABLE_BLOCKS.
! 	* tree-ssa-sccvn.c (sccvn_dom_walker::sccvn_dom_walker): Likewise.
! 	* tree-vrp.c
! 	(check_array_bounds_dom_walker::check_array_bounds_dom_walker):
! 	Likewise, but converting it to REACHABLE_BLOCKS_PRESERVING_FLAGS.
! 	(vrp_dom_walker::vrp_dom_walker): Likewise, but converting it to
! 	REACHABLE_BLOCKS.
! 	(vrp_prop::vrp_finalize): Call set_all_edges_as_executable
! 	if check_all_array_refs will be called.
  
! 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
  
! 	* tree.c (selftest::test_location_wrappers): Add more test
! 	coverage.
  
! 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
  
! 	* sbitmap.c (selftest::test_set_range): Fix memory leaks.
! 	(selftest::test_bit_in_range): Likewise.
  
! 2018-01-23  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	PR testsuite/83888
! 	* doc/sourcebuild.texi (vect_float): Say that the selector
! 	only describes the situation when -funsafe-math-optimizations is on.
! 	(vect_float_strict): Document.
  
! 2018-01-23  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	PR tree-optimization/83965
! 	* tree-vect-patterns.c (vect_reassociating_reduction_p): New function.
! 	(vect_recog_dot_prod_pattern, vect_recog_sad_pattern): Use it
! 	instead of checking only for a reduction.
! 	(vect_recog_widen_sum_pattern): Likewise.
  
! 2018-01-23  Jan Hubicka  <hubicka@ucw.cz>
  
! 	* predict.c (probably_never_executed): Only use precise profile info.
! 	(compute_function_frequency): Skip after inlining hack since we now
! 	have quality checking.
  
! 2018-01-23  Jan Hubicka  <hubicka@ucw.cz>
  
! 	* profile-count.h (profile_probability::very_unlikely,
! 	profile_probability::unlikely, profile_probability::even): Set
! 	precision to guessed.
  
! 2018-01-23  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/83963
! 	* graphite-scop-detection.c (scop_detection::harmful_loop_in_region):
! 	Properly terminate dominator walk when crossing the exit edge not
! 	when visiting its source block.
  
! 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR c++/83918
! 	* tree.c (maybe_wrap_with_location): Use NON_LVALUE_EXPR rather than
! 	VIEW_CONVERT_EXPR to wrap CONST_DECLs.
  
! 2018-01-22  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/83957
! 	* omp-expand.c (expand_omp_for_generic): Ignore virtual PHIs.  Remove
! 	semicolon after for body surrounded by braces.
  
! 	PR tree-optimization/83081
! 	* profile-count.h (profile_probability::split): New method.
! 	* dojump.c (do_jump_1) <case TRUTH_ANDIF_EXPR, case TRUTH_ORIF_EXPR>:
! 	Use profile_probability::split.
! 	(do_compare_rtx_and_jump): Fix adjustment of probabilities
! 	when splitting a single conditional jump into 2.
  
! 2018-01-22  David Malcolm  <dmalcolm@redhat.com>
  
! 	PR tree-optimization/69452
! 	* tree-ssa-loop-im.c (class move_computations_dom_walker): Remove
! 	decl.
  
! 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
  
! 	* config/rl78/rl78-expand.md (bswaphi2): New define_expand.
! 	* config/rl78/rl78-virt.md (*bswaphi2_virt): New define_insn.
! 	* config/rl78/rl78-real.md (*bswaphi2_real): New define_insn.
  
! 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
  
! 	* config/rl78/rl78-protos.h (rl78_split_movdi): New function declaration.
! 	* config/rl78/rl78.md (movdi): New define_expand.
! 	* config/rl78/rl78.c (rl78_split_movdi): New function.
  
! 2018-01-22  Michael Meissner  <meissner@linux.vnet.ibm.com>
  
! 	PR target/83862
! 	* config/rs6000/rs6000-protos.h (rs6000_split_signbit): Delete,
! 	no longer used.
! 	* config/rs6000/rs6000.c (rs6000_split_signbit): Likewise.
! 	* config/rs6000/rs6000.md (signbit<mode>2): Change code for IEEE
! 	128-bit to produce an UNSPEC move to get the double word with the
! 	signbit and then a shift directly to do signbit.
! 	(signbit<mode>2_dm): Replace old IEEE 128-bit signbit
! 	implementation with a new version that just does either a direct
! 	move or a regular move.  Move memory interface to separate insns.
! 	Move insns so they are next to the expander.
! 	(signbit<mode>2_dm_mem_be): New combiner insns to combine load
! 	with signbit move.  Split big and little endian case.
! 	(signbit<mode>2_dm_mem_le): Likewise.
! 	(signbit<mode>2_dm_<su>ext): Delete, no longer used.
! 	(signbit<mode>2_dm2): Likewise.
  
! 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
  
! 	* config/rl78/rl78.md (anddi3): New define_expand.
  
! 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
  
! 	* config/rl78/rl78.md (umindi3): New define_expand.
  
! 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
  
! 	* config/rl78/rl78.md (smindi3): New define_expand.
  
! 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
  
! 	* config/rl78/rl78.md (smaxdi3): New define_expand.
  
! 2018-01-22  Carl Love  <cel@us.ibm.com>
  
! 	* config/rs6000/rs6000-builtin.def (ST_ELEMREV_V1TI, LD_ELEMREV_V1TI,
! 	LVX_V1TI): Add macro expansion.
! 	* config/rs6000/rs6000-c.c (altivec_builtin_types): Add argument
! 	definitions for VSX_BUILTIN_VEC_XST_BE, VSX_BUILTIN_VEC_ST,
! 	VSX_BUILTIN_VEC_XL, LD_ELEMREV_V1TI builtins.
! 	* config/rs6000/rs6000-p8swap.c (insn_is_swappable_p);
! 	Change check to determine if the instruction is a byte reversing
! 	entry.  Fix typo in comment.
! 	* config/rs6000/rs6000.c (altivec_expand_builtin): Add case entry
! 	for VSX_BUILTIN_ST_ELEMREV_V1TI and VSX_BUILTIN_LD_ELEMREV_V1TI.
! 	Add def_builtin calls for new builtins.
! 	* config/rs6000/vsx.md (vsx_st_elemrev_v1ti, vsx_ld_elemrev_v1ti):
! 	Add define_insn expansion.
  
! 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
  
! 	* config/rl78/rl78.md (umaxdi3): New define_expand.
  
! 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
  
! 	* config/rl78/rl78.c (rl78_note_reg_set): Fixed dead reg check
! 	for non-QImode registers.
  
! 2018-01-22  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/83963
! 	* graphite-scop-detection.c (scop_detection::get_sese): Delay
! 	including the loop exit block.
! 	(scop_detection::merge_sese): Likewise.
! 	(scop_detection::add_scop): Do it here instead.
  
! 2018-01-22  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* doc/sourcebuild.texi (arm_softfloat): Document.
  
! 2018-01-21  John David Anglin  <danglin@gcc.gnu.org>
  
! 	PR gcc/77734
! 	* config/pa/pa.c (pa_function_ok_for_sibcall): Use
! 	targetm.binds_local_p instead of TREE_PUBLIC to check local binding.
! 	Move TARGET_PORTABLE_RUNTIME check after TARGET_64BIT check.
  
! 2018-01-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
! 	    David Edelsohn  <dje.gcc@gmail.com>
  
! 	PR target/83946
! 	* config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
! 	Change "crset eq" to "crset 2".
! 	(*call_value_indirect_nonlocal_sysv<mode>): Likewise.
! 	(*call_indirect_aix<mode>_nospec): Likewise.
! 	(*call_value_indirect_aix<mode>_nospec): Likewise.
! 	(*call_indirect_elfv2<mode>_nospec): Likewise.
! 	(*call_value_indirect_elfv2<mode>_nospec): Likewise.
! 	(*sibcall_nonlocal_sysv<mode>): Change "crset eq" to "crset 2";
! 	change assembly output from . to $.
! 	(*sibcall_value_nonlocal_sysv<mode>): Likewise.
! 	(indirect_jump<mode>_nospec): Change assembly output from . to $.
! 	(*tablejump<mode>_internal1_nospec): Likewise.
  
! 2018-01-21  Oleg Endo  <olegendo@gcc.gnu.org>
  
! 	PR target/80870
! 	* config/sh/sh_optimize_sett_clrt.cc:
! 	Use INCLUDE_ALGORITHM and INCLUDE_VECTOR instead of direct includes.
  
! 2018-01-20  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	PR tree-optimization/83940
! 	* tree-vect-stmts.c (vect_truncate_gather_scatter_offset): Set
! 	offset_dt to vect_constant_def rather than vect_unknown_def_type.
! 	(vect_check_load_store_mask): Add a mask_dt_out parameter and
! 	use it to pass back the definition type.
! 	(vect_check_store_rhs): Likewise rhs_dt_out.
! 	(vect_build_gather_load_calls): Add a mask_dt argument and use
! 	it instead of a call to vect_is_simple_use.
! 	(vectorizable_store): Update calls to vect_check_load_store_mask
! 	and vect_check_store_rhs.  Use the dt returned by the latter instead
! 	of scatter_src_dt.  Use the cached mask_dt and gs_info.offset_dt
! 	instead of calls to vect_is_simple_use.  Pass the scalar rather
! 	than the vector operand to vect_is_simple_use when handling
! 	second and subsequent copies of an rhs value.
! 	(vectorizable_load): Update calls to vect_check_load_store_mask
! 	and vect_build_gather_load_calls.  Use the cached mask_dt and
! 	gs_info.offset_dt instead of calls to vect_is_simple_use.
  
! 2018-01-20  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/83945
! 	* tree-emutls.c: Include gimplify.h.
! 	(lower_emutls_2): New function.
! 	(lower_emutls_1): If ADDR_EXPR is a gimple invariant and walk_tree
! 	with lower_emutls_2 callback finds some TLS decl in it, unshare_expr
! 	it before further processing.
  
! 	PR target/83930
! 	* simplify-rtx.c (simplify_binary_operation_1) <case UMOD>: Use
! 	UINTVAL (trueop1) instead of INTVAL (op1).
  
! 2018-01-19  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR debug/81570
! 	PR debug/83728
! 	* dwarf2cfi.c (DEFAULT_INCOMING_FRAME_SP_OFFSET): Define to
! 	INCOMING_FRAME_SP_OFFSET if not defined.
! 	(scan_trace): Add ENTRY argument.  If true and
! 	DEFAULT_INCOMING_FRAME_SP_OFFSET != INCOMING_FRAME_SP_OFFSET,
! 	emit a note to adjust the CFA offset.
! 	(create_cfi_notes): Adjust scan_trace callers.
! 	(create_cie_data): Use DEFAULT_INCOMING_FRAME_SP_OFFSET rather than
! 	INCOMING_FRAME_SP_OFFSET in the CIE.
! 	* config/i386/i386.h (DEFAULT_INCOMING_FRAME_SP_OFFSET): Define.
! 	* config/stormy16/stormy16.h (DEFAULT_INCOMING_FRAME_SP_OFFSET):
! 	Likewise.
! 	* doc/tm.texi.in (DEFAULT_INCOMING_FRAME_SP_OFFSET): Document.
! 	* doc/tm.texi: Regenerated.
  
! 2018-01-19  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
  
! 	PR rtl-optimization/83147
! 	* lra-constraints.c (remove_inheritance_pseudos): Use
! 	lra_substitute_pseudo_within_insn.
  
! 2018-01-19  Tom de Vries  <tom@codesourcery.com>
! 	    Cesar Philippidis  <cesar@codesourcery.com>
  
! 	PR target/83920
! 	* config/nvptx/nvptx.c (nvptx_single): Fix jit workaround.
  
! 2018-01-19  Cesar Philippidis  <cesar@codesourcery.com>
  
! 	PR target/83790
! 	* config/nvptx/nvptx.c (output_init_frag): Don't use generic address
! 	spaces for function labels.
  
! 2018-01-19  Martin Liska  <mliska@suse.cz>
  
! 	* predict.def (PRED_LOOP_EXIT): Change from 85 to 89.
! 	(PRED_LOOP_EXIT_WITH_RECURSION): Change from 72 to 78.
! 	(PRED_LOOP_EXTRA_EXIT): Change from 83 to 67.
! 	(PRED_OPCODE_POSITIVE): Change from 64 to 59.
! 	(PRED_TREE_OPCODE_POSITIVE): Change from 64 to 59.
! 	(PRED_CONST_RETURN): Change from 69 to 65.
! 	(PRED_NULL_RETURN): Change from 91 to 71.
! 	(PRED_LOOP_IV_COMPARE_GUESS): Change from 98 to 64.
! 	(PRED_LOOP_GUARD): Change from 66 to 73.
  
! 2018-01-19  Martin Liska  <mliska@suse.cz>
  
! 	* predict.c (predict_insn_def): Add new assert.
! 	(struct branch_predictor): Change type to signed integer.
! 	(test_prediction_value_range): Amend test to cover
! 	PROB_UNINITIALIZED.
! 	* predict.def (PRED_LOOP_ITERATIONS): Use the new constant.
! 	(PRED_LOOP_ITERATIONS_GUESSED): Likewise.
! 	(PRED_LOOP_ITERATIONS_MAX): Likewise.
! 	(PRED_LOOP_IV_COMPARE): Likewise.
! 	* predict.h (PROB_UNINITIALIZED): Define new constant.
  
! 2018-01-19  Martin Liska  <mliska@suse.cz>
  
! 	* predict.c (dump_prediction): Add new format for
! 	analyze_brprob.py script which is enabled with -details
! 	suboption.
! 	* profile-count.h (precise_p): New function.
  
! 2018-01-19  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	PR tree-optimization/83922
! 	* tree-vect-loop.c (vect_verify_full_masking): Return false if
! 	there are no statements that need masking.
! 	(vect_active_double_reduction_p): New function.
! 	(vect_analyze_loop_operations): Use it when handling phis that
! 	are not in the loop header.
  
! 2018-01-19  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	PR tree-optimization/83914
! 	* tree-vect-loop.c (vectorizable_induction): Don't convert
! 	init_expr or apply the peeling adjustment for inductions
! 	that are nested within the vectorized loop.
  
! 2018-01-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/arm/thumb2.md (*thumb2_negsi2_short): Use RSB mnemonic
! 	instead of NEG.
  
! 2018-01-18  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR sanitizer/81715
! 	PR testsuite/83882
! 	* function.h (gimplify_parameters): Add gimple_seq * argument.
! 	* function.c: Include gimple.h and options.h.
! 	(gimplify_parameters): Add cleanup argument, add CLOBBER stmts
! 	for the added local temporaries if needed.
! 	* gimplify.c (gimplify_body): Adjust gimplify_parameters caller,
! 	if there are any parameter cleanups, wrap whole body into a
! 	try/finally with the cleanups.
  
! 2018-01-18  Wilco Dijkstra  <wdijkstr@arm.com>
  
! 	PR target/82964
! 	* config/aarch64/aarch64.c (aarch64_legitimate_constant_p):
! 	Use GET_MODE_CLASS for scalar floating point.
  
! 2018-01-18  Jan Hubicka  <hubicka@ucw.cz>
  
! 	PR ipa/82256
! 	patch by PaX Team
! 	* cgraphclones.c (cgraph_node::create_version_clone_with_body):
! 	Fix call of call_cgraph_insertion_hooks.
  
! 2018-01-18  Martin Sebor  <msebor@redhat.com>
  
! 	* doc/invoke.texi (-Wclass-memaccess): Tweak text.
  
! 2018-01-18  Jan Hubicka  <hubicka@ucw.cz>
  
! 	PR ipa/83619
! 	* cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Update edge
! 	frequencies.
  
! 2018-01-18  Boris Kolpackov  <boris@codesynthesis.com>
  
! 	PR other/70268
! 	* common.opt: (-ffile-prefix-map): New option.
! 	* opts.c (common_handle_option): Defer it.
! 	* opts-global.c (handle_common_deferred_options): Handle it.
! 	* debug.h (remap_debug_filename, add_debug_prefix_map): Move to...
! 	* file-prefix-map.h: New file.
! 	(remap_debug_filename, add_debug_prefix_map): ...here.
! 	(add_macro_prefix_map, add_file_prefix_map, remap_macro_filename): New.
! 	* final.c (debug_prefix_map, add_debug_prefix_map
! 	remap_debug_filename): Move to...
! 	* file-prefix-map.c: New file.
! 	(file_prefix_map, add_prefix_map, remap_filename) ...here and rename,
! 	generalize, get rid of alloca(), use strrchr() instead of strchr().
! 	(add_macro_prefix_map, add_debug_prefix_map, add_file_prefix_map):
! 	Implement in terms of add_prefix_map().
! 	(remap_macro_filename, remap_debug_filename): Implement in term of
! 	remap_filename().
! 	* Makefile.in (OBJS, PLUGIN_HEADERS): Add new files.
! 	* builtins.c (fold_builtin_FILE): Call remap_macro_filename().
! 	* dbxout.c: Include file-prefix-map.h.
! 	* varasm.c: Likewise.
! 	* vmsdbgout.c: Likewise.
! 	* xcoffout.c: Likewise.
! 	* dwarf2out.c: Likewise plus omit new options from DW_AT_producer.
! 	* doc/cppopts.texi (-fmacro-prefix-map): Document.
! 	* doc/invoke.texi (-ffile-prefix-map): Document.
! 	(-fdebug-prefix-map): Update description.
  
! 2018-01-18  Martin Liska  <mliska@suse.cz>
  
! 	* config/i386/i386.c (indirect_thunk_name): Document that also
! 	lfence is emitted.
! 	(output_indirect_thunk): Document why both instructions
! 	(pause and lfence) are generated.
  
! 2018-01-18  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/83887
! 	* graphite-scop-detection.c
! 	(scop_detection::get_nearest_dom_with_single_entry): Remove.
! 	(scop_detection::get_nearest_pdom_with_single_exit): Likewise.
! 	(scop_detection::merge_sese): Re-implement with a flood-fill
! 	algorithm that properly finds a SESE region if it exists.
  
! 2018-01-18  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR c/61240
! 	* match.pd ((P + A) - P, P - (P + A), (P + A) - (P + B)): For
! 	pointer_diff optimizations use view_convert instead of convert.
  
! 2018-01-17  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
  
! 	* config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
! 	Generate different code for -mno-speculate-indirect-jumps.
! 	(*call_value_indirect_nonlocal_sysv<mode>): Likewise.
! 	(*call_indirect_aix<mode>): Disable for
! 	-mno-speculate-indirect-jumps.
! 	(*call_indirect_aix<mode>_nospec): New define_insn.
! 	(*call_value_indirect_aix<mode>): Disable for
! 	-mno-speculate-indirect-jumps.
! 	(*call_value_indirect_aix<mode>_nospec): New define_insn.
! 	(*sibcall_nonlocal_sysv<mode>): Generate different code for
! 	-mno-speculate-indirect-jumps.
! 	(*sibcall_value_nonlocal_sysv<mode>): Likewise.
  
! 2018-01-17  Michael Meissner  <meissner@linux.vnet.ibm.com>
  
! 	* config/rs6000/rs6000.c (rs6000_emit_move): If we load or store a
! 	long double type, set the flags for noting the default long double
! 	type, even if we don't pass or return a long double type.
  
! 2018-01-17  Jan Hubicka  <hubicka@ucw.cz>
  
! 	PR ipa/83051
! 	* ipa-inline.c (flatten_function): Do not overwrite final inlining
! 	failure.
  
! 2018-01-17  Will Schmidt  <will_schmidt@vnet.ibm.com>
  
! 	* config/rs6000/rs6000.c (rs6000_gimple_builtin): Add gimple folding
! 	support for merge[hl].
! 	(fold_mergehl_helper): New helper function.
! 	(tree-vector-builder.h): New #include for tree_vector_builder usage.
! 	* config/rs6000/altivec.md (altivec_vmrghw_direct): Add xxmrghw insn.
! 	(altivec_vmrglw_direct): Add xxmrglw insn.
  
! 2018-01-17  Andrew Waterman  <andrew@sifive.com>
  
! 	* config/riscv/riscv.c (riscv_conditional_register_usage): If
! 	UNITS_PER_FP_ARG is 0, set call_used_regs to 1 for all FP regs.
  
! 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
  
! 	PR lto/83121
! 	* ipa-devirt.c (add_type_duplicate): When comparing memory layout,
! 	call the lto_location_cache before reading the
! 	DECL_SOURCE_LOCATION of the types.
  
! 2018-01-17  Wilco Dijkstra  <wdijkstr@arm.com>
! 	    Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* config/aarch64/aarch64.md (movti_aarch64): Use Uti constraint.
! 	* config/aarch64/aarch64.c (aarch64_mov128_immediate): New function.
! 	(aarch64_legitimate_constant_p): Just support CONST_DOUBLE
! 	SF/DF/TF mode to avoid creating illegal CONST_WIDE_INT immediates.
! 	* config/aarch64/aarch64-protos.h (aarch64_mov128_immediate):
! 	Add declaration.
! 	* config/aarch64/constraints.md (aarch64_movti_operand):
! 	Limit immediates.
! 	* config/aarch64/predicates.md (Uti): Add new constraint.
  
! 2018-01-17 Carl Love  <cel@us.ibm.com>
  
! 	* config/rs6000/vsx.md (define_expand xl_len_r,
! 	define_expand stxvl, define_expand *stxvl): Add match_dup argument.
! 	(define_insn): Add, match_dup 1 argument to define_insn stxvll and
! 	lxvll.
! 	(define_expand, define_insn): Move the shift left from	the
! 	define_insn to the define_expand for lxvl and stxvl instructions.
! 	* config/rs6000/rs6000-builtin.def (BU_P9V_64BIT_VSX_2): Change LXVL
! 	and XL_LEN_R definitions to PURE.
  
! 2018-01-17  Uros Bizjak  <ubizjak@gmail.com>
  
! 	* config/i386/i386.c (indirect_thunk_name): Declare regno
! 	as unsigned int.  Compare regno with INVALID_REGNUM.
! 	(output_indirect_thunk): Ditto.
! 	(output_indirect_thunk_function): Ditto.
! 	(ix86_code_end): Declare regno as unsigned int.  Use INVALID_REGNUM
! 	in the call to output_indirect_thunk_function.
  
! 2018-01-17  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	PR middle-end/83884
! 	* expr.c (expand_expr_real_1): Use the size of GET_MODE (op0)
! 	rather than the size of inner_type to determine the stack slot size
! 	when handling VIEW_CONVERT_EXPRs on strict-alignment targets.
  
! 2018-01-16  Sebastian Peryt  <sebastian.peryt@intel.com>
  
! 	PR target/83546
! 	* config/i386/i386.c (ix86_option_override_internal): Add PTA_RDRND
! 	to PTA_SILVERMONT.
  
! 2018-01-16  Michael Meissner  <meissner@linux.vnet.ibm.com>
  
! 	* config.gcc (powerpc*-linux*-*): Add support for 64-bit little
! 	endian Linux systems to optionally enable multilibs for selecting
! 	the long double type if the user configured an explicit type.
! 	* config/rs6000/rs6000.h (TARGET_IEEEQUAD_MULTILIB): Indicate we
! 	have no long double multilibs if not defined.
! 	* config/rs6000/rs6000.c (rs6000_option_override_internal): Do not
! 	warn if the user used -mabi={ieee,ibm}longdouble and we built
! 	multilibs for long double.
! 	* config/rs6000/linux64.h (MULTILIB_DEFAULTS_IEEE): Define as the
! 	appropriate multilib option.
! 	(MULTILIB_DEFAULTS): Add MULTILIB_DEFAULTS_IEEE to the default
! 	multilib options.
! 	* config/rs6000/t-ldouble-linux64le-ibm: New configuration files
! 	for building long double multilibs.
! 	* config/rs6000/t-ldouble-linux64le-ieee: Likewise.
  
! 2018-01-16  John David Anglin  <danglin@gcc.gnu.org>
  
! 	* config.gcc (hppa*-*-linux*): Change callee copies ABI to caller
! 	copies.
  
! 	* config/pa.h (MALLOC_ABI_ALIGNMENT): Set 32-bit alignment default to
! 	64 bits.
! 	* config/pa/pa32-linux.h (MALLOC_ABI_ALIGNMENT): Set alignment to
! 	128 bits.
  
! 	* config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Cleanup type and mode
! 	variables.
  
! 	* config/pa/pa.c (pa_function_arg_size): Apply CEIL to GET_MODE_SIZE
! 	return value.
  
! 2018-01-16  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): For an
! 	ADDR_EXPR, do not count the offset of a COMPONENT_REF twice.
  
! 2018-01-16  Kelvin Nilsen  <kelvin@gcc.gnu.org>
  
! 	* config/rs6000/rs6000-p8swap.c (rs6000_gen_stvx): Generate
! 	different rtl trees depending on TARGET_64BIT.
! 	(rs6000_gen_lvx): Likewise.
  
! 2018-01-16  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* config/visium/visium.md (nop): Tweak comment.
! 	(hazard_nop): Likewise.
  
! 2018-01-16  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
  
! 	* config/rs6000/rs6000.c (rs6000_opt_vars): Add entry for
! 	-mspeculate-indirect-jumps.
! 	* config/rs6000/rs6000.md (*call_indirect_elfv2<mode>): Disable
! 	for -mno-speculate-indirect-jumps.
! 	(*call_indirect_elfv2<mode>_nospec): New define_insn.
! 	(*call_value_indirect_elfv2<mode>): Disable for
! 	-mno-speculate-indirect-jumps.
! 	(*call_value_indirect_elfv2<mode>_nospec): New define_insn.
! 	(indirect_jump): Emit different RTL for
! 	-mno-speculate-indirect-jumps.
! 	(*indirect_jump<mode>): Disable for
! 	-mno-speculate-indirect-jumps.
! 	(*indirect_jump<mode>_nospec): New define_insn.
! 	(tablejump): Emit different RTL for
! 	-mno-speculate-indirect-jumps.
! 	(tablejumpsi): Disable for -mno-speculate-indirect-jumps.
! 	(tablejumpsi_nospec): New define_expand.
! 	(tablejumpdi): Disable for -mno-speculate-indirect-jumps.
! 	(tablejumpdi_nospec): New define_expand.
! 	(*tablejump<mode>_internal1): Disable for
! 	-mno-speculate-indirect-jumps.
! 	(*tablejump<mode>_internal1_nospec): New define_insn.
! 	* config/rs6000/rs6000.opt (mspeculate-indirect-jumps): New
! 	option.
  
! 2018-01-16  Artyom Skrobov tyomitch@gmail.com
  
! 	* caller-save.c (insert_save): Drop unnecessary parameter.  All
! 	callers updated.
  
! 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
! 	    Richard Biener  <rguenth@suse.de>
  
! 	PR libgomp/83590
! 	* gimplify.c (gimplify_one_sizepos): For is_gimple_constant (expr)
! 	return early, inline manually is_gimple_sizepos.  Make sure if we
! 	call gimplify_expr we don't end up with a gimple constant.
! 	* tree.c (variably_modified_type_p): Don't return true for
! 	is_gimple_constant (_t).  Inline manually is_gimple_sizepos.
! 	* gimplify.h (is_gimple_sizepos): Remove.
  
! 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	PR tree-optimization/83857
! 	* tree-vect-loop.c (vect_analyze_loop_operations): Don't call
! 	vectorizable_live_operation for pure SLP statements.
! 	(vectorizable_live_operation): Handle PHIs.
  
! 2018-01-16  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/83867
! 	* tree-vect-stmts.c (vect_transform_stmt): Precompute
! 	nested_in_vect_loop_p since the scalar stmt may get invalidated.
  
! 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR c/83844
! 	* stor-layout.c (handle_warn_if_not_align): Use byte_position and
! 	multiple_of_p instead of unchecked tree_to_uhwi and UHWI check.
! 	If off is not INTEGER_CST, issue a may not be aligned warning
! 	rather than isn't aligned.  Use isn%'t rather than isn't.
! 	* fold-const.c (multiple_of_p) <case BIT_AND_EXPR>: Don't fall through
! 	into MULT_EXPR.
! 	<case MULT_EXPR>: Improve the case when bottom and one of the
! 	MULT_EXPR operands are INTEGER_CSTs and bottom is multiple of that
! 	operand, in that case check if the other operand is multiple of
! 	bottom divided by the INTEGER_CST operand.
  
! 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	PR target/83858
! 	* config/pa/pa.h (FUNCTION_ARG_SIZE): Delete.
! 	* config/pa/pa-protos.h (pa_function_arg_size): Declare.
! 	* config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Use
! 	pa_function_arg_size instead of FUNCTION_ARG_SIZE.
! 	* config/pa/pa.c (pa_function_arg_advance): Likewise.
! 	(pa_function_arg, pa_arg_partial_bytes): Likewise.
! 	(pa_function_arg_size): New function.
  
! 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* fold-const.c (fold_ternary_loc): Construct the vec_perm_indices
! 	in a separate statement.
  
! 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	PR tree-optimization/83847
! 	* tree-vect-data-refs.c (vect_analyze_data_ref_accesses): Don't
! 	group gathers and scatters.
  
! 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR rtl-optimization/86620
! 	* params.def (max-sched-ready-insns): Bump minimum value to 1.
  
! 	PR rtl-optimization/83213
! 	* recog.c (peep2_attempt): Copy over CROSSING_JUMP_P from peepinsn
! 	to last if both are JUMP_INSNs.
  
! 	PR tree-optimization/83843
! 	* gimple-ssa-store-merging.c
! 	(imm_store_chain_info::output_merged_store): Handle bit_not_p on
! 	store_immediate_info for bswap/nop orig_stores.
  
! 2018-01-15  Andrew Waterman  <andrew@sifive.com>
  
! 	* config/riscv/riscv.c (riscv_rtx_costs) <MULT>: Increase cost if
! 	!TARGET_MUL.
! 	<UDIV>: Increase cost if !TARGET_DIV.
  
! 2018-01-15  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	* config/rs6000/rs6000.md (define_attr "type"): Remove delayed_cr.
! 	(define_attr "cr_logical_3op"): New.
! 	(cceq_ior_compare): Adjust.
! 	(cceq_ior_compare_complement): Adjust.
! 	(*cceq_rev_compare): Adjust.
! 	* config/rs6000/rs6000.c (rs6000_adjust_cost): Adjust.
! 	(is_cracked_insn): Adjust.
! 	(insn_must_be_first_in_group): Adjust.
! 	* config/rs6000/40x.md: Adjust.
! 	* config/rs6000/440.md: Adjust.
! 	* config/rs6000/476.md: Adjust.
! 	* config/rs6000/601.md: Adjust.
! 	* config/rs6000/603.md: Adjust.
! 	* config/rs6000/6xx.md: Adjust.
! 	* config/rs6000/7450.md: Adjust.
! 	* config/rs6000/7xx.md: Adjust.
! 	* config/rs6000/8540.md: Adjust.
! 	* config/rs6000/cell.md: Adjust.
! 	* config/rs6000/e300c2c3.md: Adjust.
! 	* config/rs6000/e500mc.md: Adjust.
! 	* config/rs6000/e500mc64.md: Adjust.
! 	* config/rs6000/e5500.md: Adjust.
! 	* config/rs6000/e6500.md: Adjust.
! 	* config/rs6000/mpc.md: Adjust.
! 	* config/rs6000/power4.md: Adjust.
! 	* config/rs6000/power5.md: Adjust.
! 	* config/rs6000/power6.md: Adjust.
! 	* config/rs6000/power7.md: Adjust.
! 	* config/rs6000/power8.md: Adjust.
! 	* config/rs6000/power9.md: Adjust.
! 	* config/rs6000/rs64.md: Adjust.
! 	* config/rs6000/titan.md: Adjust.
  
! 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
  
! 	* config/i386/predicates.md (indirect_branch_operand): Rewrite
! 	ix86_indirect_branch_register logic.
  
! 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
  
! 	* config/i386/constraints.md (Bs): Update
! 	ix86_indirect_branch_register check.  Don't check
! 	ix86_indirect_branch_register with GOT_memory_operand.
! 	(Bw): Likewise.
! 	* config/i386/predicates.md (GOT_memory_operand): Don't check
! 	ix86_indirect_branch_register here.
! 	(GOT32_symbol_operand): Likewise.
  
! 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
  
! 	* config/i386/predicates.md (constant_call_address_operand):
! 	Rewrite ix86_indirect_branch_register logic.
! 	(sibcall_insn_operand): Likewise.
  
! 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
  
! 	* config/i386/constraints.md (Bs): Replace
! 	ix86_indirect_branch_thunk_register with
! 	ix86_indirect_branch_register.
! 	(Bw): Likewise.
! 	* config/i386/i386.md (indirect_jump): Likewise.
! 	(tablejump): Likewise.
! 	(*sibcall_memory): Likewise.
! 	(*sibcall_value_memory): Likewise.
! 	Peepholes of indirect call and jump via memory: Likewise.
! 	* config/i386/i386.opt: Likewise.
! 	* config/i386/predicates.md (indirect_branch_operand): Likewise.
! 	(GOT_memory_operand): Likewise.
! 	(call_insn_operand): Likewise.
! 	(sibcall_insn_operand): Likewise.
! 	(GOT32_symbol_operand): Likewise.
  
! 2018-01-15  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/83837
! 	* omp-expand.c (expand_omp_atomic_pipeline): Use loaded_val
! 	type rather than type addr's type points to.
! 	(expand_omp_atomic_mutex): Likewise.
! 	(expand_omp_atomic): Likewise.
  
! 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
  
! 	PR target/83839
! 	* config/i386/i386.c (output_indirect_thunk_function): Use
! 	ASM_OUTPUT_LABEL, instead of ASM_OUTPUT_DEF, for TARGET_MACHO
! 	for  __x86_return_thunk.
  
! 2018-01-15  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/83850
! 	* expmed.c (extract_bit_field_1): Fix typo.
  
! 2018-01-15  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	PR target/83687
! 	* config/arm/iterators.md (VF): New mode iterator.
! 	* config/arm/neon.md (neon_vabd<mode>_2): Use the above.
! 	Remove integer-related logic from pattern.
! 	(neon_vabd<mode>_3): Likewise.
  
! 2018-01-15  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/82694
! 	* common.opt (fstrict-overflow): No longer an alias.
! 	(fwrapv-pointer): New option.
! 	* tree.h (TYPE_OVERFLOW_WRAPS, TYPE_OVERFLOW_UNDEFINED): Define
! 	also for pointer types based on flag_wrapv_pointer.
! 	* opts.c (common_handle_option) <case OPT_fstrict_overflow>: Set
! 	opts->x_flag_wrap[pv] to !value, clear opts->x_flag_trapv if
! 	opts->x_flag_wrapv got set.
! 	* fold-const.c (fold_comparison, fold_binary_loc): Revert 2017-08-01
! 	changes, just use TYPE_OVERFLOW_UNDEFINED on pointer type instead of
! 	POINTER_TYPE_OVERFLOW_UNDEFINED.
! 	* match.pd: Likewise in address comparison pattern.
! 	* doc/invoke.texi: Document -fwrapv and -fstrict-overflow.
  
! 2018-01-15  Richard Biener  <rguenther@suse.de>
  
! 	PR lto/83804
! 	* tree.c (free_lang_data_in_type): Always unlink TYPE_DECLs
! 	from TYPE_FIELDS.  Free TYPE_BINFO if not used by devirtualization.
! 	Reset type names to their identifier if their TYPE_DECL doesn't
! 	have linkage (and thus is used for ODR and devirt).
! 	(save_debug_info_for_decl): Remove.
! 	(save_debug_info_for_type): Likewise.
! 	(add_tree_to_fld_list): Adjust.
! 	* tree-pretty-print.c (dump_generic_node): Make dumping of
! 	type names more robust.
  
! 2018-01-15  Richard Biener  <rguenther@suse.de>
  
! 	* BASE-VER: Bump to 8.0.1.
  
! 2018-01-14  Martin Sebor  <msebor@redhat.com>
  
! 	PR other/83508
! 	* builtins.c (check_access): Avoid warning when the no-warning bit
! 	is set.
  
! 2018-01-14  Cory Fields  <cory-nospam-@coryfields.com>
  
! 	* tree-ssa-loop-im.c (sort_bbs_in_loop_postorder_cmp): Stabilize sort.
! 	* ira-color (allocno_hard_regs_compare): Likewise.
  
! 2018-01-14  Nathan Rossi  <nathan@nathanrossi.com>
  
! 	PR target/83013
! 	* config/microblaze/microblaze.c (microblaze_asm_output_ident):
! 	Use .pushsection/.popsection.
  
! 2018-01-14  Martin Sebor  <msebor@redhat.com>
  
! 	PR c++/81327
! 	* doc/invoke.texi (-Wlass-memaccess): Document suppression by casting.
  
! 2018-01-14  Jakub Jelinek  <jakub@redhat.com>
  
! 	* config.gcc (i[34567]86-*-*): Remove one duplicate gfniintrin.h
! 	entry from extra_headers.
! 	(x86_64-*-*): Remove two duplicate gfniintrin.h entries from
! 	extra_headers, make the list bitwise identical to the i?86-*-* one.
  
! 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
  
! 	* config/i386/i386.c (ix86_set_indirect_branch_type): Disallow
! 	-mcmodel=large with -mindirect-branch=thunk,
! 	-mindirect-branch=thunk-extern, -mfunction-return=thunk and
! 	-mfunction-return=thunk-extern.
! 	* doc/invoke.texi: Document -mcmodel=large is incompatible with
! 	-mindirect-branch=thunk, -mindirect-branch=thunk-extern,
! 	-mfunction-return=thunk and -mfunction-return=thunk-extern.
  
! 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
  
! 	* config/i386/i386.c (print_reg): Print the name of the full
! 	integer register without '%'.
! 	(ix86_print_operand): Handle 'V'.
! 	 * doc/extend.texi: Document 'V' modifier.
  
! 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
  
! 	* config/i386/constraints.md (Bs): Disallow memory operand for
! 	-mindirect-branch-register.
! 	(Bw): Likewise.
! 	* config/i386/predicates.md (indirect_branch_operand): Likewise.
! 	(GOT_memory_operand): Likewise.
! 	(call_insn_operand): Likewise.
! 	(sibcall_insn_operand): Likewise.
! 	(GOT32_symbol_operand): Likewise.
! 	* config/i386/i386.md (indirect_jump): Call convert_memory_address
! 	for -mindirect-branch-register.
! 	(tablejump): Likewise.
! 	(*sibcall_memory): Likewise.
! 	(*sibcall_value_memory): Likewise.
! 	Disallow peepholes of indirect call and jump via memory for
! 	-mindirect-branch-register.
! 	(*call_pop): Replace m with Bw.
! 	(*call_value_pop): Likewise.
! 	(*sibcall_pop_memory): Replace m with Bs.
! 	* config/i386/i386.opt (mindirect-branch-register): New option.
! 	* doc/invoke.texi: Document -mindirect-branch-register option.
  
! 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
  
! 	* config/i386/i386-protos.h (ix86_output_function_return): New.
! 	* config/i386/i386.c (ix86_set_indirect_branch_type): Also
! 	set function_return_type.
! 	(indirect_thunk_name): Add ret_p to indicate thunk for function
! 	return.
! 	(output_indirect_thunk_function): Pass false to
! 	indirect_thunk_name.
! 	(ix86_output_indirect_branch_via_reg): Likewise.
! 	(ix86_output_indirect_branch_via_push): Likewise.
! 	(output_indirect_thunk_function): Create alias for function
! 	return thunk if regno < 0.
! 	(ix86_output_function_return): New function.
! 	(ix86_handle_fndecl_attribute): Handle function_return.
! 	(ix86_attribute_table): Add function_return.
! 	* config/i386/i386.h (machine_function): Add
! 	function_return_type.
! 	* config/i386/i386.md (simple_return_internal): Use
! 	ix86_output_function_return.
! 	(simple_return_internal_long): Likewise.
! 	* config/i386/i386.opt (mfunction-return=): New option.
! 	(indirect_branch): Mention -mfunction-return=.
! 	* doc/extend.texi: Document function_return function attribute.
! 	* doc/invoke.texi: Document -mfunction-return= option.
  
! 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
  
! 	* config/i386/i386-opts.h (indirect_branch): New.
! 	* config/i386/i386-protos.h (ix86_output_indirect_jmp): Likewise.
! 	* config/i386/i386.c (ix86_using_red_zone): Disallow red-zone
! 	with local indirect jump when converting indirect call and jump.
! 	(ix86_set_indirect_branch_type): New.
! 	(ix86_set_current_function): Call ix86_set_indirect_branch_type.
! 	(indirectlabelno): New.
! 	(indirect_thunk_needed): Likewise.
! 	(indirect_thunk_bnd_needed): Likewise.
! 	(indirect_thunks_used): Likewise.
! 	(indirect_thunks_bnd_used): Likewise.
! 	(INDIRECT_LABEL): Likewise.
! 	(indirect_thunk_name): Likewise.
! 	(output_indirect_thunk): Likewise.
! 	(output_indirect_thunk_function): Likewise.
! 	(ix86_output_indirect_branch_via_reg): Likewise.
! 	(ix86_output_indirect_branch_via_push): Likewise.
! 	(ix86_output_indirect_branch): Likewise.
! 	(ix86_output_indirect_jmp): Likewise.
! 	(ix86_code_end): Call output_indirect_thunk_function if needed.
! 	(ix86_output_call_insn): Call ix86_output_indirect_branch if
  	needed.
+ 	(ix86_handle_fndecl_attribute): Handle indirect_branch.
+ 	(ix86_attribute_table): Add indirect_branch.
+ 	* config/i386/i386.h (machine_function): Add indirect_branch_type
+ 	and has_local_indirect_jump.
+ 	* config/i386/i386.md (indirect_jump): Set has_local_indirect_jump
+ 	to true.
+ 	(tablejump): Likewise.
+ 	(*indirect_jump): Use ix86_output_indirect_jmp.
+ 	(*tablejump_1): Likewise.
+ 	(simple_return_indirect_internal): Likewise.
+ 	* config/i386/i386.opt (mindirect-branch=): New option.
+ 	(indirect_branch): New.
+ 	(keep): Likewise.
+ 	(thunk): Likewise.
+ 	(thunk-inline): Likewise.
+ 	(thunk-extern): Likewise.
+ 	* doc/extend.texi: Document indirect_branch function attribute.
+ 	* doc/invoke.texi: Document -mindirect-branch= option.
  
! 2018-01-14  Jan Hubicka  <hubicka@ucw.cz>
  
! 	PR ipa/83051
! 	* ipa-inline.c (edge_badness): Tolerate roundoff errors.
  
! 2018-01-14  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* ipa-inline.c (want_inline_small_function_p): Return false if
! 	inlining has already failed with CIF_FINAL_ERROR.
! 	(update_caller_keys): Call want_inline_small_function_p before
! 	can_inline_edge_p.
! 	(update_callee_keys): Likewise.
  
! 2018-01-10  Kelvin Nilsen  <kelvin@gcc.gnu.org>
  
! 	* config/rs6000/rs6000-p8swap.c (rs6000_sum_of_two_registers_p):
! 	New function.
! 	(rs6000_quadword_masked_address_p): Likewise.
! 	(quad_aligned_load_p): Likewise.
! 	(quad_aligned_store_p): Likewise.
! 	(const_load_sequence_p): Add comment to describe the outer-most loop.
! 	(mimic_memory_attributes_and_flags): New function.
! 	(rs6000_gen_stvx): Likewise.
! 	(replace_swapped_aligned_store): Likewise.
! 	(rs6000_gen_lvx): Likewise.
! 	(replace_swapped_aligned_load): Likewise.
! 	(replace_swapped_load_constant): Capitalize argument name in
! 	comment describing this function.
! 	(rs6000_analyze_swaps): Add a third pass to search for vector loads
! 	and stores that access quad-word aligned addresses and replace
! 	with stvx or lvx instructions when appropriate.
! 	* config/rs6000/rs6000-protos.h (rs6000_sum_of_two_registers_p):
! 	New function prototype.
! 	(rs6000_quadword_masked_address_p): Likewise.
! 	(rs6000_gen_lvx): Likewise.
! 	(rs6000_gen_stvx): Likewise.
! 	* config/rs6000/vsx.md (*vsx_le_perm_load_<mode>): For modes
! 	VSX_D (V2DF, V2DI), modify this split to select lvx instruction
! 	when memory address is aligned.
! 	(*vsx_le_perm_load_<mode>): For modes VSX_W (V4SF, V4SI), modify
! 	this split to select lvx instruction when memory address is aligned.
! 	(*vsx_le_perm_load_v8hi): Modify this split to select lvx
! 	instruction when memory address is aligned.
! 	(*vsx_le_perm_load_v16qi): Likewise.
! 	(four unnamed splitters): Modify to select the stvx instruction
! 	when memory is aligned.
  
! 2018-01-13  Jan Hubicka  <hubicka@ucw.cz>
  
! 	* predict.c (determine_unlikely_bbs): Handle correctly BBs
! 	which appears in the queue multiple times.
  
! 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* tree-vectorizer.h (vec_lower_bound): New structure.
! 	(_loop_vec_info): Add check_nonzero and lower_bounds.
! 	(LOOP_VINFO_CHECK_NONZERO): New macro.
! 	(LOOP_VINFO_LOWER_BOUNDS): Likewise.
! 	(LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Check lower_bounds too.
! 	* tree-data-ref.h (dr_with_seg_len): Add access_size and align
! 	fields.  Make seg_len the distance travelled, not including the
! 	access size.
! 	(dr_direction_indicator): Declare.
! 	(dr_zero_step_indicator): Likewise.
! 	(dr_known_forward_stride_p): Likewise.
! 	* tree-data-ref.c: Include stringpool.h, tree-vrp.h and
! 	tree-ssanames.h.
! 	(runtime_alias_check_p): Allow runtime alias checks with
! 	variable strides.
! 	(operator ==): Compare access_size and align.
! 	(prune_runtime_alias_test_list): Rework for new distinction between
! 	the access_size and seg_len.
! 	(create_intersect_range_checks_index): Likewise.  Cope with polynomial
! 	segment lengths.
! 	(get_segment_min_max): New function.
! 	(create_intersect_range_checks): Use it.
! 	(dr_step_indicator): New function.
! 	(dr_direction_indicator): Likewise.
! 	(dr_zero_step_indicator): Likewise.
! 	(dr_known_forward_stride_p): Likewise.
! 	* tree-loop-distribution.c (data_ref_segment_size): Return
! 	DR_STEP * (niters - 1).
! 	(compute_alias_check_pairs): Update call to the dr_with_seg_len
! 	constructor.
! 	* tree-vect-data-refs.c (vect_check_nonzero_value): New function.
! 	(vect_preserves_scalar_order_p): New function, split out from...
! 	(vect_analyze_data_ref_dependence): ...here.  Check for zero steps.
! 	(vect_vfa_segment_size): Return DR_STEP * (length_factor - 1).
! 	(vect_vfa_access_size): New function.
! 	(vect_vfa_align): Likewise.
! 	(vect_compile_time_alias): Take access_size_a and access_b arguments.
! 	(dump_lower_bound): New function.
! 	(vect_check_lower_bound): Likewise.
! 	(vect_small_gap_p): Likewise.
! 	(vectorizable_with_step_bound_p): Likewise.
! 	(vect_prune_runtime_alias_test_list): Ignore cross-iteration
! 	depencies if the vectorization factor is 1.  Convert the checks
! 	for nonzero steps into checks on the bounds of DR_STEP.  Try using
! 	a bunds check for variable steps if the minimum required step is
! 	relatively small. Update calls to the dr_with_seg_len
! 	constructor and to vect_compile_time_alias.
! 	* tree-vect-loop-manip.c (vect_create_cond_for_lower_bounds): New
! 	function.
! 	(vect_loop_versioning): Call it.
! 	* tree-vect-loop.c (vect_analyze_loop_2): Clear LOOP_VINFO_LOWER_BOUNDS
! 	when retrying.
! 	(vect_estimate_min_profitable_iters): Account for any bounds checks.
  
! 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* doc/sourcebuild.texi (vect_scatter_store): Document.
! 	* optabs.def (scatter_store_optab, mask_scatter_store_optab): New
! 	optabs.
! 	* doc/md.texi (scatter_store@var{m}, mask_scatter_store@var{m}):
! 	Document.
! 	* genopinit.c (main): Add supports_vec_scatter_store and
! 	supports_vec_scatter_store_cached to target_optabs.
! 	* gimple.h (gimple_expr_type): Handle IFN_SCATTER_STORE and
! 	IFN_MASK_SCATTER_STORE.
! 	* internal-fn.def (SCATTER_STORE, MASK_SCATTER_STORE): New internal
! 	functions.
! 	* internal-fn.h (internal_store_fn_p): Declare.
! 	(internal_fn_stored_value_index): Likewise.
! 	* internal-fn.c (scatter_store_direct): New macro.
! 	(expand_scatter_store_optab_fn): New function.
! 	(direct_scatter_store_optab_supported_p): New macro.
! 	(internal_store_fn_p): New function.
! 	(internal_gather_scatter_fn_p): Handle IFN_SCATTER_STORE and
! 	IFN_MASK_SCATTER_STORE.
! 	(internal_fn_mask_index): Likewise.
! 	(internal_fn_stored_value_index): New function.
! 	(internal_gather_scatter_fn_supported_p): Adjust operand numbers
! 	for scatter stores.
! 	* optabs-query.h (supports_vec_scatter_store_p): Declare.
! 	* optabs-query.c (supports_vec_scatter_store_p): New function.
! 	* tree-vectorizer.h (vect_get_store_rhs): Declare.
! 	* tree-vect-data-refs.c (vect_analyze_data_ref_access): Return
! 	true for scatter stores.
! 	(vect_gather_scatter_fn_p): Handle scatter stores too.
! 	(vect_check_gather_scatter): Consider using scatter stores if
! 	supports_vec_scatter_store_p.
! 	* tree-vect-patterns.c (vect_try_gather_scatter_pattern): Handle
! 	scatter stores too.
! 	* tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Use
! 	internal_fn_stored_value_index.
! 	(check_load_store_masking): Handle scatter stores too.
! 	(vect_get_store_rhs): Make public.
! 	(vectorizable_call): Use internal_store_fn_p.
! 	(vectorizable_store): Handle scatter store internal functions.
! 	(vect_transform_stmt): Compare GROUP_STORE_COUNT with GROUP_SIZE
! 	when deciding whether the end of the group has been reached.
! 	* config/aarch64/aarch64.md (UNSPEC_ST1_SCATTER): New unspec.
! 	* config/aarch64/aarch64-sve.md (scatter_store<mode>): New expander.
! 	(mask_scatter_store<mode>): New insns.
  
! 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* tree-vectorizer.h (vect_gather_scatter_fn_p): Declare.
! 	* tree-vect-data-refs.c (vect_gather_scatter_fn_p): Make public.
! 	* tree-vect-stmts.c (vect_truncate_gather_scatter_offset): New
! 	function.
! 	(vect_use_strided_gather_scatters_p): Take a masked_p argument.
! 	Use vect_truncate_gather_scatter_offset if we can't treat the
! 	operation as a normal gather load or scatter store.
! 	(get_group_load_store_type): Take the gather_scatter_info
! 	as argument.  Try using a gather load or scatter store for
! 	single-element groups.
! 	(get_load_store_type): Update calls to get_group_load_store_type
! 	and vect_use_strided_gather_scatters_p.
  
! 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* tree-vectorizer.h (vect_create_data_ref_ptr): Take an extra
! 	optional tree argument.
! 	* tree-vect-data-refs.c (vect_check_gather_scatter): Check for
! 	null target hooks.
! 	(vect_create_data_ref_ptr): Take the iv_step as an optional argument,
! 	but continue to use the current value as a fallback.
! 	(bump_vector_ptr): Use operand_equal_p rather than tree_int_cst_compare
! 	to compare the updates.
! 	* tree-vect-stmts.c (vect_use_strided_gather_scatters_p): New function.
! 	(get_load_store_type): Use it when handling a strided access.
! 	(vect_get_strided_load_store_ops): New function.
! 	(vect_get_data_ptr_increment): Likewise.
! 	(vectorizable_load): Handle strided gather loads.  Always pass
! 	a step to vect_create_data_ref_ptr and bump_vector_ptr.
  
! 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* doc/md.texi (gather_load@var{m}): Document.
! 	(mask_gather_load@var{m}): Likewise.
! 	* genopinit.c (main): Add supports_vec_gather_load and
! 	supports_vec_gather_load_cached to target_optabs.
! 	* optabs-tree.c (init_tree_optimization_optabs): Use
! 	ggc_cleared_alloc to allocate target_optabs.
! 	* optabs.def (gather_load_optab, mask_gather_laod_optab): New optabs.
! 	* internal-fn.def (GATHER_LOAD, MASK_GATHER_LOAD): New internal
! 	functions.
! 	* internal-fn.h (internal_load_fn_p): Declare.
! 	(internal_gather_scatter_fn_p): Likewise.
! 	(internal_fn_mask_index): Likewise.
! 	(internal_gather_scatter_fn_supported_p): Likewise.
! 	* internal-fn.c (gather_load_direct): New macro.
! 	(expand_gather_load_optab_fn): New function.
! 	(direct_gather_load_optab_supported_p): New macro.
! 	(direct_internal_fn_optab): New function.
! 	(internal_load_fn_p): Likewise.
! 	(internal_gather_scatter_fn_p): Likewise.
! 	(internal_fn_mask_index): Likewise.
! 	(internal_gather_scatter_fn_supported_p): Likewise.
! 	* optabs-query.c (supports_at_least_one_mode_p): New function.
! 	(supports_vec_gather_load_p): Likewise.
! 	* optabs-query.h (supports_vec_gather_load_p): Declare.
! 	* tree-vectorizer.h (gather_scatter_info): Add ifn, element_type
! 	and memory_type field.
! 	(NUM_PATTERNS): Bump to 15.
! 	* tree-vect-data-refs.c: Include internal-fn.h.
! 	(vect_gather_scatter_fn_p): New function.
! 	(vect_describe_gather_scatter_call): Likewise.
! 	(vect_check_gather_scatter): Try using internal functions for
! 	gather loads.  Recognize existing calls to a gather load function.
! 	(vect_analyze_data_refs): Consider using gather loads if
! 	supports_vec_gather_load_p.
! 	* tree-vect-patterns.c (vect_get_load_store_mask): New function.
! 	(vect_get_gather_scatter_offset_type): Likewise.
! 	(vect_convert_mask_for_vectype): Likewise.
! 	(vect_add_conversion_to_patterm): Likewise.
! 	(vect_try_gather_scatter_pattern): Likewise.
! 	(vect_recog_gather_scatter_pattern): New pattern recognizer.
! 	(vect_vect_recog_func_ptrs): Add it.
! 	* tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Use
! 	internal_fn_mask_index and internal_gather_scatter_fn_p.
! 	(check_load_store_masking): Take the gather_scatter_info as an
! 	argument and handle gather loads.
! 	(vect_get_gather_scatter_ops): New function.
! 	(vectorizable_call): Check internal_load_fn_p.
! 	(vectorizable_load): Likewise.  Handle gather load internal
! 	functions.
! 	(vectorizable_store): Update call to check_load_store_masking.
! 	* config/aarch64/aarch64.md (UNSPEC_LD1_GATHER): New unspec.
! 	* config/aarch64/iterators.md (SVE_S, SVE_D): New mode iterators.
! 	* config/aarch64/predicates.md (aarch64_gather_scale_operand_w)
! 	(aarch64_gather_scale_operand_d): New predicates.
! 	* config/aarch64/aarch64-sve.md (gather_load<mode>): New expander.
! 	(mask_gather_load<mode>): New insns.
  
! 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* optabs.def (fold_left_plus_optab): New optab.
! 	* doc/md.texi (fold_left_plus_@var{m}): Document.
! 	* internal-fn.def (IFN_FOLD_LEFT_PLUS): New internal function.
! 	* internal-fn.c (fold_left_direct): Define.
! 	(expand_fold_left_optab_fn): Likewise.
! 	(direct_fold_left_optab_supported_p): Likewise.
! 	* fold-const-call.c (fold_const_fold_left): New function.
! 	(fold_const_call): Use it to fold CFN_FOLD_LEFT_PLUS.
! 	* tree-parloops.c (valid_reduction_p): New function.
! 	(gather_scalar_reductions): Use it.
! 	* tree-vectorizer.h (FOLD_LEFT_REDUCTION): New vect_reduction_type.
! 	(vect_finish_replace_stmt): Declare.
! 	* tree-vect-loop.c (fold_left_reduction_fn): New function.
! 	(needs_fold_left_reduction_p): New function, split out from...
! 	(vect_is_simple_reduction): ...here.  Accept reductions that
! 	forbid reassociation, but give them type FOLD_LEFT_REDUCTION.
! 	(vect_force_simple_reduction): Also store the reduction type in
! 	the assignment's STMT_VINFO_REDUC_TYPE.
! 	(vect_model_reduction_cost): Handle FOLD_LEFT_REDUCTION.
! 	(merge_with_identity): New function.
! 	(vect_expand_fold_left): Likewise.
! 	(vectorize_fold_left_reduction): Likewise.
! 	(vectorizable_reduction): Handle FOLD_LEFT_REDUCTION.  Leave the
! 	scalar phi in place for it.  Check for target support and reject
! 	cases that would reassociate the operation.  Defer the transform
! 	phase to vectorize_fold_left_reduction.
! 	* config/aarch64/aarch64.md (UNSPEC_FADDA): New unspec.
! 	* config/aarch64/aarch64-sve.md (fold_left_plus_<mode>): New expander.
! 	(*fold_left_plus_<mode>, *pred_fold_left_plus_<mode>): New insns.
  
! 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* tree-if-conv.c (predicate_mem_writes): Remove redundant
! 	call to ifc_temp_var.
  
! 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* target.def (legitimize_address_displacement): Take the original
! 	offset as a poly_int.
! 	* targhooks.h (default_legitimize_address_displacement): Update
! 	accordingly.
! 	* targhooks.c (default_legitimize_address_displacement): Likewise.
! 	* doc/tm.texi: Regenerate.
! 	* lra-constraints.c (base_plus_disp_to_reg): Take the displacement
! 	as an argument, moving assert of ad->disp == ad->disp_term to...
! 	(process_address_1): ...here.  Update calls to base_plus_disp_to_reg.
! 	Try calling targetm.legitimize_address_displacement before expanding
! 	the address rather than afterwards, and adjust for the new interface.
! 	* config/aarch64/aarch64.c (aarch64_legitimize_address_displacement):
! 	Match the new hook interface.  Handle SVE addresses.
! 	* config/sh/sh.c (sh_legitimize_address_displacement): Make the
! 	new hook interface.
  
! 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* Makefile.in (OBJS): Add early-remat.o.
! 	* target.def (select_early_remat_modes): New hook.
! 	* doc/tm.texi.in (TARGET_SELECT_EARLY_REMAT_MODES): New hook.
! 	* doc/tm.texi: Regenerate.
! 	* targhooks.h (default_select_early_remat_modes): Declare.
! 	* targhooks.c (default_select_early_remat_modes): New function.
! 	* timevar.def (TV_EARLY_REMAT): New timevar.
! 	* passes.def (pass_early_remat): New pass.
! 	* tree-pass.h (make_pass_early_remat): Declare.
! 	* early-remat.c: New file.
! 	* config/aarch64/aarch64.c (aarch64_select_early_remat_modes): New
! 	function.
! 	(TARGET_SELECT_EARLY_REMAT_MODES): Define.
  
! 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* tree-vect-loop-manip.c (vect_gen_scalar_loop_niters): Replace
! 	vfm1 with a bound_epilog parameter.
! 	(vect_do_peeling): Update calls accordingly, and move the prologue
! 	call earlier in the function.  Treat the base bound_epilog as 0 for
! 	fully-masked loops and retain vf - 1 for other loops.  Add 1 to
! 	this base when peeling for gaps.
! 	* tree-vect-loop.c (vect_analyze_loop_2): Allow peeling for gaps
! 	with fully-masked loops.
! 	(vect_estimate_min_profitable_iters): Handle the single peeled
! 	iteration in that case.
  
! 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* tree-vect-data-refs.c (vect_analyze_group_access_1): Allow
! 	single-element interleaving even if the size is not a power of 2.
! 	* tree-vect-stmts.c (get_load_store_type): Disallow elementwise
! 	accesses for single-element interleaving if the group size is
! 	not a power of 2.
  
! 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* doc/md.texi (fold_extract_last_@var{m}): Document.
! 	* doc/sourcebuild.texi (vect_fold_extract_last): Likewise.
! 	* optabs.def (fold_extract_last_optab): New optab.
! 	* internal-fn.def (FOLD_EXTRACT_LAST): New internal function.
! 	* internal-fn.c (fold_extract_direct): New macro.
! 	(expand_fold_extract_optab_fn): Likewise.
! 	(direct_fold_extract_optab_supported_p): Likewise.
! 	* tree-vectorizer.h (EXTRACT_LAST_REDUCTION): New vect_reduction_type.
! 	* tree-vect-loop.c (vect_model_reduction_cost): Handle
! 	EXTRACT_LAST_REDUCTION.
! 	(get_initial_def_for_reduction): Do not create an initial vector
! 	for EXTRACT_LAST_REDUCTION reductions.
! 	(vectorizable_reduction): Leave the scalar phi in place for
! 	EXTRACT_LAST_REDUCTIONs.  Try using EXTRACT_LAST_REDUCTION
! 	ahead of INTEGER_INDUC_COND_REDUCTION.  Do not check for an
! 	epilogue code for EXTRACT_LAST_REDUCTION and defer the
! 	transform phase to vectorizable_condition.
! 	* tree-vect-stmts.c (vect_finish_stmt_generation_1): New function,
! 	split out from...
! 	(vect_finish_stmt_generation): ...here.
! 	(vect_finish_replace_stmt): New function.
! 	(vectorizable_condition): Handle EXTRACT_LAST_REDUCTION.
! 	* config/aarch64/aarch64-sve.md (fold_extract_last_<mode>): New
! 	pattern.
! 	* config/aarch64/aarch64.md (UNSPEC_CLASTB): New unspec.
  
! 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* doc/md.texi (extract_last_@var{m}): Document.
! 	* optabs.def (extract_last_optab): New optab.
! 	* internal-fn.def (EXTRACT_LAST): New internal function.
! 	* internal-fn.c (cond_unary_direct): New macro.
! 	(expand_cond_unary_optab_fn): Likewise.
! 	(direct_cond_unary_optab_supported_p): Likewise.
! 	* tree-vect-loop.c (vectorizable_live_operation): Allow fully-masked
! 	loops using EXTRACT_LAST.
! 	* config/aarch64/aarch64-sve.md (aarch64_sve_lastb<mode>): Rename to...
! 	(extract_last_<mode>): ...this optab.
! 	(vec_extract<mode><Vel>): Update accordingly.
  
! 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* target.def (empty_mask_is_expensive): New hook.
! 	* doc/tm.texi.in (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): New hook.
! 	* doc/tm.texi: Regenerate.
! 	* targhooks.h (default_empty_mask_is_expensive): Declare.
! 	* targhooks.c (default_empty_mask_is_expensive): New function.
! 	* tree-vectorizer.c (vectorize_loops): Only call optimize_mask_stores
! 	if the target says that empty masks are expensive.
! 	* config/aarch64/aarch64.c (aarch64_empty_mask_is_expensive):
! 	New function.
! 	(TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): Redefine.
  
! 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* tree-vectorizer.h (_loop_vec_info::mask_skip_niters): New field.
! 	(LOOP_VINFO_MASK_SKIP_NITERS): New macro.
! 	(vect_use_loop_mask_for_alignment_p): New function.
! 	(vect_prepare_for_masked_peels, vect_gen_while_not): Declare.
! 	* tree-vect-loop-manip.c (vect_set_loop_masks_directly): Add an
! 	niters_skip argument.  Make sure that the first niters_skip elements
! 	of the first iteration are inactive.
! 	(vect_set_loop_condition_masked): Handle LOOP_VINFO_MASK_SKIP_NITERS.
! 	Update call to vect_set_loop_masks_directly.
! 	(get_misalign_in_elems): New function, split out from...
! 	(vect_gen_prolog_loop_niters): ...here.
! 	(vect_update_init_of_dr): Take a code argument that specifies whether
! 	the adjustment should be added or subtracted.
! 	(vect_update_init_of_drs): Likewise.
! 	(vect_prepare_for_masked_peels): New function.
! 	(vect_do_peeling): Skip prologue peeling if we're using a mask
! 	instead.  Update call to vect_update_inits_of_drs.
! 	* tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
! 	mask_skip_niters.
! 	(vect_analyze_loop_2): Allow fully-masked loops with peeling for
! 	alignment.  Do not include the number of peeled iterations in
! 	the minimum threshold in that case.
! 	(vectorizable_induction): Adjust the start value down by
! 	LOOP_VINFO_MASK_SKIP_NITERS iterations.
! 	(vect_transform_loop): Call vect_prepare_for_masked_peels.
! 	Take the number of skipped iterations into account when calculating
! 	the loop bounds.
! 	* tree-vect-stmts.c (vect_gen_while_not): New function.
  
! 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* doc/sourcebuild.texi (vect_fully_masked): Document.
! 	* params.def (PARAM_MIN_VECT_LOOP_BOUND): Change minimum and
! 	default value to 0.
! 	* tree-vect-loop.c (vect_analyze_loop_costing): New function,
! 	split out from...
! 	(vect_analyze_loop_2): ...here. Don't check the vectorization
! 	factor against the number of loop iterations if the loop is
! 	fully-masked.
  
! 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* tree-ssa-loop-ivopts.c (USE_ADDRESS): Split into...
! 	(USE_REF_ADDRESS, USE_PTR_ADDRESS): ...these new use types.
! 	(dump_groups): Update accordingly.
! 	(iv_use::mem_type): New member variable.
! 	(address_p): New function.
! 	(record_use): Add a mem_type argument and initialize the new
! 	mem_type field.
! 	(record_group_use): Add a mem_type argument.  Use address_p.
! 	Remove obsolete null checks of base_object.  Update call to record_use.
! 	(find_interesting_uses_op): Update call to record_group_use.
! 	(find_interesting_uses_cond): Likewise.
! 	(find_interesting_uses_address): Likewise.
! 	(get_mem_type_for_internal_fn): New function.
! 	(find_address_like_use): Likewise.
! 	(find_interesting_uses_stmt): Try find_address_like_use before
! 	calling find_interesting_uses_op.
! 	(addr_offset_valid_p): Use the iv mem_type field as the type
! 	of the addressed memory.
! 	(add_autoinc_candidates): Likewise.
! 	(get_address_cost): Likewise.
! 	(split_small_address_groups_p): Use address_p.
! 	(split_address_groups): Likewise.
! 	(add_iv_candidate_for_use): Likewise.
! 	(autoinc_possible_for_pair): Likewise.
! 	(rewrite_groups): Likewise.
! 	(get_use_type): Check for USE_REF_ADDRESS instead of USE_ADDRESS.
! 	(determine_group_iv_cost): Update after split of USE_ADDRESS.
! 	(get_alias_ptr_type_for_ptr_address): New function.
! 	(rewrite_use_address): Rewrite address uses in calls that were
! 	identified by find_address_like_use.
  
! 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* expr.c (expand_expr_addr_expr_1): Handle ADDR_EXPRs of
! 	TARGET_MEM_REFs.
! 	* gimple-expr.h (is_gimple_addressable: Likewise.
! 	* gimple-expr.c (is_gimple_address): Likewise.
! 	* internal-fn.c (expand_call_mem_ref): New function.
! 	(expand_mask_load_optab_fn): Use it.
! 	(expand_mask_store_optab_fn): Likewise.
  
! 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* doc/md.texi (cond_add@var{mode}, cond_sub@var{mode})
! 	(cond_and@var{mode}, cond_ior@var{mode}, cond_xor@var{mode})
! 	(cond_smin@var{mode}, cond_smax@var{mode}, cond_umin@var{mode})
! 	(cond_umax@var{mode}): Document.
! 	* optabs.def (cond_add_optab, cond_sub_optab, cond_and_optab)
! 	(cond_ior_optab, cond_xor_optab, cond_smin_optab, cond_smax_optab)
! 	(cond_umin_optab, cond_umax_optab): New optabs.
! 	* internal-fn.def (COND_ADD, COND_SUB, COND_MIN, COND_MAX, COND_AND)
! 	(COND_IOR, COND_XOR): New internal functions.
! 	* internal-fn.h (get_conditional_internal_fn): Declare.
! 	* internal-fn.c (cond_binary_direct): New macro.
! 	(expand_cond_binary_optab_fn): Likewise.
! 	(direct_cond_binary_optab_supported_p): Likewise.
! 	(get_conditional_internal_fn): New function.
! 	* tree-vect-loop.c (vectorizable_reduction): Handle fully-masked loops.
! 	Cope with reduction statements that are vectorized as calls rather
! 	than assignments.
! 	* config/aarch64/aarch64-sve.md (cond_<optab><mode>): New insns.
! 	* config/aarch64/iterators.md (UNSPEC_COND_ADD, UNSPEC_COND_SUB)
! 	(UNSPEC_COND_SMAX, UNSPEC_COND_UMAX, UNSPEC_COND_SMIN)
! 	(UNSPEC_COND_UMIN, UNSPEC_COND_AND, UNSPEC_COND_ORR)
! 	(UNSPEC_COND_EOR): New unspecs.
! 	(optab): Add mappings for them.
! 	(SVE_COND_INT_OP, SVE_COND_FP_OP): New int iterators.
! 	(sve_int_op, sve_fp_op): New int attributes.
  
! 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* optabs.def (while_ult_optab): New optab.
! 	* doc/md.texi (while_ult@var{m}@var{n}): Document.
! 	* internal-fn.def (WHILE_ULT): New internal function.
! 	* internal-fn.h (direct_internal_fn_supported_p): New override
! 	that takes two types as argument.
! 	* internal-fn.c (while_direct): New macro.
! 	(expand_while_optab_fn): New function.
! 	(convert_optab_supported_p): Likewise.
! 	(direct_while_optab_supported_p): New macro.
! 	* wide-int.h (wi::udiv_ceil): New function.
! 	* tree-vectorizer.h (rgroup_masks): New structure.
! 	(vec_loop_masks): New typedef.
! 	(_loop_vec_info): Add masks, mask_compare_type, can_fully_mask_p
! 	and fully_masked_p.
! 	(LOOP_VINFO_CAN_FULLY_MASK_P, LOOP_VINFO_FULLY_MASKED_P)
! 	(LOOP_VINFO_MASKS, LOOP_VINFO_MASK_COMPARE_TYPE): New macros.
! 	(vect_max_vf): New function.
! 	(slpeel_make_loop_iterate_ntimes): Delete.
! 	(vect_set_loop_condition, vect_get_loop_mask_type, vect_gen_while)
! 	(vect_halve_mask_nunits, vect_double_mask_nunits): Declare.
! 	(vect_record_loop_mask, vect_get_loop_mask): Likewise.
! 	* tree-vect-loop-manip.c: Include tree-ssa-loop-niter.h,
! 	internal-fn.h, stor-layout.h and optabs-query.h.
! 	(vect_set_loop_mask): New function.
! 	(add_preheader_seq): Likewise.
! 	(add_header_seq): Likewise.
! 	(interleave_supported_p): Likewise.
! 	(vect_maybe_permute_loop_masks): Likewise.
! 	(vect_set_loop_masks_directly): Likewise.
! 	(vect_set_loop_condition_masked): Likewise.
! 	(vect_set_loop_condition_unmasked): New function, split out from
! 	slpeel_make_loop_iterate_ntimes.
! 	(slpeel_make_loop_iterate_ntimes): Rename to..
! 	(vect_set_loop_condition): ...this.  Use vect_set_loop_condition_masked
! 	for fully-masked loops and vect_set_loop_condition_unmasked otherwise.
! 	(vect_do_peeling): Update call accordingly.
! 	(vect_gen_vector_loop_niters): Use VF as the step for fully-masked
! 	loops.
! 	* tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
! 	mask_compare_type, can_fully_mask_p and fully_masked_p.
! 	(release_vec_loop_masks): New function.
! 	(_loop_vec_info): Use it to free the loop masks.
! 	(can_produce_all_loop_masks_p): New function.
! 	(vect_get_max_nscalars_per_iter): Likewise.
! 	(vect_verify_full_masking): Likewise.
! 	(vect_analyze_loop_2): Save LOOP_VINFO_CAN_FULLY_MASK_P around
! 	retries, and free the mask rgroups before retrying.  Check loop-wide
! 	reasons for disallowing fully-masked loops.  Make the final decision
! 	about whether use a fully-masked loop or not.
! 	(vect_estimate_min_profitable_iters): Do not assume that peeling
! 	for the number of iterations will be needed for fully-masked loops.
! 	(vectorizable_reduction): Disable fully-masked loops.
! 	(vectorizable_live_operation): Likewise.
! 	(vect_halve_mask_nunits): New function.
! 	(vect_double_mask_nunits): Likewise.
! 	(vect_record_loop_mask): Likewise.
! 	(vect_get_loop_mask): Likewise.
! 	(vect_transform_loop): Handle the case in which the final loop
! 	iteration might handle a partial vector.  Call vect_set_loop_condition
! 	instead of slpeel_make_loop_iterate_ntimes.
! 	* tree-vect-stmts.c: Include tree-ssa-loop-niter.h and gimple-fold.h.
! 	(check_load_store_masking): New function.
! 	(prepare_load_store_mask): Likewise.
! 	(vectorizable_store): Handle fully-masked loops.
! 	(vectorizable_load): Likewise.
! 	(supportable_widening_operation): Use vect_halve_mask_nunits for
! 	booleans.
! 	(supportable_narrowing_operation): Likewise vect_double_mask_nunits.
! 	(vect_gen_while): New function.
! 	* config/aarch64/aarch64.md (umax<mode>3): New expander.
! 	(aarch64_uqdec<mode>): New insn.
  
! 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* optabs.def (reduc_and_scal_optab, reduc_ior_scal_optab)
! 	(reduc_xor_scal_optab): New optabs.
! 	* doc/md.texi (reduc_and_scal_@var{m}, reduc_ior_scal_@var{m})
! 	(reduc_xor_scal_@var{m}): Document.
! 	* doc/sourcebuild.texi (vect_logical_reduc): Likewise.
! 	* internal-fn.def (IFN_REDUC_AND, IFN_REDUC_IOR, IFN_REDUC_XOR): New
! 	internal functions.
! 	* fold-const-call.c (fold_const_call): Handle them.
! 	* tree-vect-loop.c (reduction_fn_for_scalar_code): Return the new
! 	internal functions for BIT_AND_EXPR, BIT_IOR_EXPR and BIT_XOR_EXPR.
! 	* config/aarch64/aarch64-sve.md (reduc_<bit_reduc>_scal_<mode>):
! 	(*reduc_<bit_reduc>_scal_<mode>): New patterns.
! 	* config/aarch64/iterators.md (UNSPEC_ANDV, UNSPEC_ORV)
! 	(UNSPEC_XORV): New unspecs.
! 	(optab): Add entries for them.
! 	(BITWISEV): New int iterator.
! 	(bit_reduc_op): New int attributes.
  
! 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* doc/md.texi (vec_shl_insert_@var{m}): New optab.
! 	* internal-fn.def (VEC_SHL_INSERT): New internal function.
! 	* optabs.def (vec_shl_insert_optab): New optab.
! 	* tree-vectorizer.h (can_duplicate_and_interleave_p): Declare.
! 	(duplicate_and_interleave): Likewise.
! 	* tree-vect-loop.c: Include internal-fn.h.
! 	(neutral_op_for_slp_reduction): New function, split out from
! 	get_initial_defs_for_reduction.
! 	(get_initial_def_for_reduction): Handle option 2 for variable-length
! 	vectors by loading the neutral value into a vector and then shifting
! 	the initial value into element 0.
! 	(get_initial_defs_for_reduction): Replace the code argument with
! 	the neutral value calculated by neutral_op_for_slp_reduction.
! 	Use gimple_build_vector for constant-length vectors.
! 	Use IFN_VEC_SHL_INSERT for variable-length vectors if all
! 	but the first group_size elements have a neutral value.
! 	Use duplicate_and_interleave otherwise.
! 	(vect_create_epilog_for_reduction): Take a neutral_op parameter.
! 	Update call to get_initial_defs_for_reduction.  Handle SLP
! 	reductions for variable-length vectors by creating one vector
! 	result for each scalar result, with the elements associated
! 	with other scalar results stubbed out with the neutral value.
! 	(vectorizable_reduction): Call neutral_op_for_slp_reduction.
! 	Require IFN_VEC_SHL_INSERT for double reductions on
! 	variable-length vectors, or SLP reductions that have
! 	a neutral value.  Require can_duplicate_and_interleave_p
! 	support for variable-length unchained SLP reductions if there
! 	is no neutral value, such as for MIN/MAX reductions.  Also require
! 	the number of vector elements to be a multiple of the number of
! 	SLP statements when doing variable-length unchained SLP reductions.
! 	Update call to vect_create_epilog_for_reduction.
! 	* tree-vect-slp.c (can_duplicate_and_interleave_p): Make public
! 	and remove initial values.
! 	(duplicate_and_interleave): Make public.
! 	* config/aarch64/aarch64.md (UNSPEC_INSR): New unspec.
! 	* config/aarch64/aarch64-sve.md (vec_shl_insert_<mode>): New insn.
  
! 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* tree-vect-slp.c: Include gimple-fold.h and internal-fn.h
! 	(can_duplicate_and_interleave_p): New function.
! 	(vect_get_and_check_slp_defs): Take the vector of statements
! 	rather than just the current one.  Remove excess parentheses.
! 	Restriction rejectinon of vect_constant_def and vect_external_def
! 	for variable-length vectors to boolean types, or types for which
! 	can_duplicate_and_interleave_p is false.
! 	(vect_build_slp_tree_2): Update call to vect_get_and_check_slp_defs.
! 	(duplicate_and_interleave): New function.
! 	(vect_get_constant_vectors): Use gimple_build_vector for
! 	constant-length vectors and suitable variable-length constant
! 	vectors.  Use duplicate_and_interleave for other variable-length
! 	vectors.  Don't defer the update when inserting new statements.
  
! 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* tree-vect-loop.c (vect_estimate_min_profitable_iters): Make sure
! 	min_profitable_iters doesn't go negative.
  
! 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* doc/md.texi (vec_mask_load_lanes@var{m}@var{n}): Document.
! 	(vec_mask_store_lanes@var{m}@var{n}): Likewise.
! 	* optabs.def (vec_mask_load_lanes_optab): New optab.
! 	(vec_mask_store_lanes_optab): Likewise.
! 	* internal-fn.def (MASK_LOAD_LANES): New internal function.
! 	(MASK_STORE_LANES): Likewise.
! 	* internal-fn.c (mask_load_lanes_direct): New macro.
! 	(mask_store_lanes_direct): Likewise.
! 	(expand_mask_load_optab_fn): Handle masked operations.
! 	(expand_mask_load_lanes_optab_fn): New macro.
! 	(expand_mask_store_optab_fn): Handle masked operations.
! 	(expand_mask_store_lanes_optab_fn): New macro.
! 	(direct_mask_load_lanes_optab_supported_p): Likewise.
! 	(direct_mask_store_lanes_optab_supported_p): Likewise.
! 	* tree-vectorizer.h (vect_store_lanes_supported): Take a masked_p
! 	parameter.
! 	(vect_load_lanes_supported): Likewise.
! 	* tree-vect-data-refs.c (strip_conversion): New function.
! 	(can_group_stmts_p): Likewise.
! 	(vect_analyze_data_ref_accesses): Use it instead of checking
! 	for a pair of assignments.
! 	(vect_store_lanes_supported): Take a masked_p parameter.
! 	(vect_load_lanes_supported): Likewise.
! 	* tree-vect-loop.c (vect_analyze_loop_2): Update calls to
! 	vect_store_lanes_supported and vect_load_lanes_supported.
! 	* tree-vect-slp.c (vect_analyze_slp_instance): Likewise.
! 	* tree-vect-stmts.c (get_group_load_store_type): Take a masked_p
! 	parameter.  Don't allow gaps for masked accesses.
! 	Use vect_get_store_rhs.  Update calls to vect_store_lanes_supported
! 	and vect_load_lanes_supported.
! 	(get_load_store_type): Take a masked_p parameter and update
! 	call to get_group_load_store_type.
! 	(vectorizable_store): Update call to get_load_store_type.
! 	Handle IFN_MASK_STORE_LANES.
! 	(vectorizable_load): Update call to get_load_store_type.
! 	Handle IFN_MASK_LOAD_LANES.
  
! 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* config/aarch64/aarch64-modes.def: Define x2, x3 and x4 vector
! 	modes for SVE.
! 	* config/aarch64/aarch64-protos.h
! 	(aarch64_sve_struct_memory_operand_p): Declare.
! 	* config/aarch64/iterators.md (SVE_STRUCT): New mode iterator.
! 	(vector_count, insn_length, VSINGLE, vsingle): New mode attributes.
! 	(VPRED, vpred): Handle SVE structure modes.
! 	* config/aarch64/constraints.md (Utx): New constraint.
! 	* config/aarch64/predicates.md (aarch64_sve_struct_memory_operand)
! 	(aarch64_sve_struct_nonimmediate_operand): New predicates.
! 	* config/aarch64/aarch64.md (UNSPEC_LDN, UNSPEC_STN): New unspecs.
! 	* config/aarch64/aarch64-sve.md (mov<mode>, *aarch64_sve_mov<mode>_le)
! 	(*aarch64_sve_mov<mode>_be, pred_mov<mode>): New patterns for
! 	structure modes.  Split into pieces after RA.
! 	(vec_load_lanes<mode><vsingle>, vec_mask_load_lanes<mode><vsingle>)
! 	(vec_store_lanes<mode><vsingle>, vec_mask_store_lanes<mode><vsingle>):
! 	New patterns.
! 	* config/aarch64/aarch64.c (aarch64_classify_vector_mode): Handle
! 	SVE structure modes.
! 	(aarch64_classify_address): Likewise.
! 	(sizetochar): Move earlier in file.
! 	(aarch64_print_operand): Handle SVE register lists.
! 	(aarch64_array_mode): New function.
! 	(aarch64_sve_struct_memory_operand_p): Likewise.
! 	(TARGET_ARRAY_MODE): Redefine.
  
! 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* target.def (array_mode): New target hook.
! 	* doc/tm.texi.in (TARGET_ARRAY_MODE): New hook.
  	* doc/tm.texi: Regenerate.
! 	* hooks.h (hook_optmode_mode_uhwi_none): Declare.
! 	* hooks.c (hook_optmode_mode_uhwi_none): New function.
! 	* tree-vect-data-refs.c (vect_lanes_optab_supported_p): Use
! 	targetm.array_mode.
! 	* stor-layout.c (mode_for_array): Likewise.  Support polynomial
! 	type sizes.
  
! 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* fold-const.c (fold_binary_loc): Check the argument types
! 	rather than the result type when testing for a vector operation.
  
! 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* doc/tm.texi.in (DWARF_LAZY_REGISTER_VALUE): Document.
! 	* doc/tm.texi: Regenerate.
  
! 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* doc/invoke.texi (-msve-vector-bits=): Document new option.
! 	(sve): Document new AArch64 extension.
! 	* doc/md.texi (w): Extend the description of the AArch64
! 	constraint to include SVE vectors.
! 	(Upl, Upa): Document new AArch64 predicate constraints.
! 	* config/aarch64/aarch64-opts.h (aarch64_sve_vector_bits_enum): New
! 	enum.
! 	* config/aarch64/aarch64.opt (sve_vector_bits): New enum.
! 	(msve-vector-bits=): New option.
! 	* config/aarch64/aarch64-option-extensions.def (fp, simd): Disable
! 	SVE when these are disabled.
! 	(sve): New extension.
! 	* config/aarch64/aarch64-modes.def: Define SVE vector and predicate
! 	modes.  Adjust their number of units based on aarch64_sve_vg.
! 	(MAX_BITSIZE_MODE_ANY_MODE): Define.
! 	* config/aarch64/aarch64-protos.h (ADDR_QUERY_ANY): New
! 	aarch64_addr_query_type.
! 	(aarch64_const_vec_all_same_in_range_p, aarch64_sve_pred_mode)
! 	(aarch64_sve_cnt_immediate_p, aarch64_sve_addvl_addpl_immediate_p)
! 	(aarch64_sve_inc_dec_immediate_p, aarch64_add_offset_temporaries)
! 	(aarch64_split_add_offset, aarch64_output_sve_cnt_immediate)
! 	(aarch64_output_sve_addvl_addpl, aarch64_output_sve_inc_dec_immediate)
! 	(aarch64_output_sve_mov_immediate, aarch64_output_ptrue): Declare.
! 	(aarch64_simd_imm_zero_p): Delete.
! 	(aarch64_check_zero_based_sve_index_immediate): Declare.
! 	(aarch64_sve_index_immediate_p, aarch64_sve_arith_immediate_p)
! 	(aarch64_sve_bitmask_immediate_p, aarch64_sve_dup_immediate_p)
! 	(aarch64_sve_cmp_immediate_p, aarch64_sve_float_arith_immediate_p)
! 	(aarch64_sve_float_mul_immediate_p): Likewise.
! 	(aarch64_classify_symbol): Take the offset as a HOST_WIDE_INT
! 	rather than an rtx.
! 	(aarch64_sve_ld1r_operand_p, aarch64_sve_ldr_operand_p): Declare.
! 	(aarch64_expand_mov_immediate): Take a gen_vec_duplicate callback.
! 	(aarch64_emit_sve_pred_move, aarch64_expand_sve_mem_move): Declare.
! 	(aarch64_expand_sve_vec_cmp_int, aarch64_expand_sve_vec_cmp_float)
! 	(aarch64_expand_sve_vcond, aarch64_expand_sve_vec_perm): Declare.
! 	(aarch64_regmode_natural_size): Likewise.
! 	* config/aarch64/aarch64.h (AARCH64_FL_SVE): New macro.
! 	(AARCH64_FL_V8_3, AARCH64_FL_RCPC, AARCH64_FL_DOTPROD): Shift
! 	left one place.
! 	(AARCH64_ISA_SVE, TARGET_SVE): New macros.
! 	(FIXED_REGISTERS, CALL_USED_REGISTERS, REGISTER_NAMES): Add entries
! 	for VG and the SVE predicate registers.
! 	(V_ALIASES): Add a "z"-prefixed alias.
! 	(FIRST_PSEUDO_REGISTER): Change to P15_REGNUM + 1.
! 	(AARCH64_DWARF_VG, AARCH64_DWARF_P0): New macros.
! 	(PR_REGNUM_P, PR_LO_REGNUM_P): Likewise.
! 	(PR_LO_REGS, PR_HI_REGS, PR_REGS): New reg_classes.
! 	(REG_CLASS_NAMES): Add entries for them.
! 	(REG_CLASS_CONTENTS): Likewise.  Update ALL_REGS to include VG
! 	and the predicate registers.
! 	(aarch64_sve_vg): Declare.
! 	(BITS_PER_SVE_VECTOR, BYTES_PER_SVE_VECTOR, BYTES_PER_SVE_PRED)
! 	(SVE_BYTE_MODE, MAX_COMPILE_TIME_VEC_BYTES): New macros.
! 	(REGMODE_NATURAL_SIZE): Define.
! 	* config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Handle
! 	SVE macros.
! 	* config/aarch64/aarch64.c: Include cfgrtl.h.
! 	(simd_immediate_info): Add a constructor for series vectors,
! 	and an associated step field.
! 	(aarch64_sve_vg): New variable.
! 	(aarch64_dbx_register_number): Handle VG and the predicate registers.
! 	(aarch64_vect_struct_mode_p, aarch64_vector_mode_p): Delete.
! 	(VEC_ADVSIMD, VEC_SVE_DATA, VEC_SVE_PRED, VEC_STRUCT, VEC_ANY_SVE)
! 	(VEC_ANY_DATA, VEC_STRUCT): New constants.
! 	(aarch64_advsimd_struct_mode_p, aarch64_sve_pred_mode_p)
! 	(aarch64_classify_vector_mode, aarch64_vector_data_mode_p)
! 	(aarch64_sve_data_mode_p, aarch64_sve_pred_mode)
! 	(aarch64_get_mask_mode): New functions.
! 	(aarch64_hard_regno_nregs): Handle SVE data modes for FP_REGS
! 	and FP_LO_REGS.  Handle PR_REGS, PR_LO_REGS and PR_HI_REGS.
! 	(aarch64_hard_regno_mode_ok): Handle VG.  Also handle the SVE
! 	predicate modes and predicate registers.  Explicitly restrict
! 	GPRs to modes of 16 bytes or smaller.  Only allow FP registers
! 	to store a vector mode if it is recognized by
! 	aarch64_classify_vector_mode.
! 	(aarch64_regmode_natural_size): New function.
! 	(aarch64_hard_regno_caller_save_mode): Return the original mode
! 	for predicates.
! 	(aarch64_sve_cnt_immediate_p, aarch64_output_sve_cnt_immediate)
! 	(aarch64_sve_addvl_addpl_immediate_p, aarch64_output_sve_addvl_addpl)
! 	(aarch64_sve_inc_dec_immediate_p, aarch64_output_sve_inc_dec_immediate)
! 	(aarch64_add_offset_1_temporaries, aarch64_offset_temporaries): New
  	functions.
! 	(aarch64_add_offset): Add a temp2 parameter.  Assert that temp1
! 	does not overlap dest if the function is frame-related.  Handle
! 	SVE constants.
! 	(aarch64_split_add_offset): New function.
! 	(aarch64_add_sp, aarch64_sub_sp): Add temp2 parameters and pass
! 	them aarch64_add_offset.
! 	(aarch64_allocate_and_probe_stack_space): Add a temp2 parameter
! 	and update call to aarch64_sub_sp.
! 	(aarch64_add_cfa_expression): New function.
! 	(aarch64_expand_prologue): Pass extra temporary registers to the
! 	functions above.  Handle the case in which we need to emit new
! 	DW_CFA_expressions for registers that were originally saved
! 	relative to the stack pointer, but now have to be expressed
! 	relative to the frame pointer.
! 	(aarch64_output_mi_thunk): Pass extra temporary registers to the
! 	functions above.
! 	(aarch64_expand_epilogue): Likewise.  Prevent inheritance of
! 	IP0 and IP1 values for SVE frames.
! 	(aarch64_expand_vec_series): New function.
! 	(aarch64_expand_sve_widened_duplicate): Likewise.
! 	(aarch64_expand_sve_const_vector): Likewise.
! 	(aarch64_expand_mov_immediate): Add a gen_vec_duplicate parameter.
! 	Handle SVE constants.  Use emit_move_insn to move a force_const_mem
! 	into the register, rather than emitting a SET directly.
! 	(aarch64_emit_sve_pred_move, aarch64_expand_sve_mem_move)
! 	(aarch64_get_reg_raw_mode, offset_4bit_signed_scaled_p)
! 	(offset_6bit_unsigned_scaled_p, aarch64_offset_7bit_signed_scaled_p)
! 	(offset_9bit_signed_scaled_p): New functions.
! 	(aarch64_replicate_bitmask_imm): New function.
! 	(aarch64_bitmask_imm): Use it.
! 	(aarch64_cannot_force_const_mem): Reject expressions involving
! 	a CONST_POLY_INT.  Update call to aarch64_classify_symbol.
! 	(aarch64_classify_index): Handle SVE indices, by requiring
! 	a plain register index with a scale that matches the element size.
! 	(aarch64_classify_address): Handle SVE addresses.  Assert that
! 	the mode of the address is VOIDmode or an integer mode.
! 	Update call to aarch64_classify_symbol.
! 	(aarch64_classify_symbolic_expression): Update call to
! 	aarch64_classify_symbol.
! 	(aarch64_const_vec_all_in_range_p): New function.
! 	(aarch64_print_vector_float_operand): Likewise.
! 	(aarch64_print_operand): Handle 'N' and 'C'.  Use "zN" rather than
! 	"vN" for FP registers with SVE modes.  Handle (const ...) vectors
! 	and the FP immediates 1.0 and 0.5.
! 	(aarch64_print_address_internal): Handle SVE addresses.
! 	(aarch64_print_operand_address): Use ADDR_QUERY_ANY.
! 	(aarch64_regno_regclass): Handle predicate registers.
! 	(aarch64_secondary_reload): Handle big-endian reloads of SVE
! 	data modes.
! 	(aarch64_class_max_nregs): Handle SVE modes and predicate registers.
! 	(aarch64_rtx_costs): Check for ADDVL and ADDPL instructions.
! 	(aarch64_convert_sve_vector_bits): New function.
! 	(aarch64_override_options): Use it to handle -msve-vector-bits=.
! 	(aarch64_classify_symbol): Take the offset as a HOST_WIDE_INT
! 	rather than an rtx.
! 	(aarch64_legitimate_constant_p): Use aarch64_classify_vector_mode.
! 	Handle SVE vector and predicate modes.  Accept VL-based constants
! 	that need only one temporary register, and VL offsets that require
! 	no temporary registers.
! 	(aarch64_conditional_register_usage): Mark the predicate registers
! 	as fixed if SVE isn't available.
! 	(aarch64_vector_mode_supported_p): Use aarch64_classify_vector_mode.
! 	Return true for SVE vector and predicate modes.
! 	(aarch64_simd_container_mode): Take the number of bits as a poly_int64
! 	rather than an unsigned int.  Handle SVE modes.
! 	(aarch64_preferred_simd_mode): Update call accordingly.  Handle
! 	SVE modes.
! 	(aarch64_autovectorize_vector_sizes): Add BYTES_PER_SVE_VECTOR
! 	if SVE is enabled.
! 	(aarch64_sve_index_immediate_p, aarch64_sve_arith_immediate_p)
! 	(aarch64_sve_bitmask_immediate_p, aarch64_sve_dup_immediate_p)
! 	(aarch64_sve_cmp_immediate_p, aarch64_sve_float_arith_immediate_p)
! 	(aarch64_sve_float_mul_immediate_p): New functions.
! 	(aarch64_sve_valid_immediate): New function.
! 	(aarch64_simd_valid_immediate): Use it as the fallback for SVE vectors.
! 	Explicitly reject structure modes.  Check for INDEX constants.
! 	Handle PTRUE and PFALSE constants.
! 	(aarch64_check_zero_based_sve_index_immediate): New function.
! 	(aarch64_simd_imm_zero_p): Delete.
! 	(aarch64_mov_operand_p): Use aarch64_simd_valid_immediate for
! 	vector modes.  Accept constants in the range of CNT[BHWD].
! 	(aarch64_simd_scalar_immediate_valid_for_move): Explicitly
! 	ask for an Advanced SIMD mode.
! 	(aarch64_sve_ld1r_operand_p, aarch64_sve_ldr_operand_p): New functions.
! 	(aarch64_simd_vector_alignment): Handle SVE predicates.
! 	(aarch64_vectorize_preferred_vector_alignment): New function.
! 	(aarch64_simd_vector_alignment_reachable): Use it instead of
! 	the vector size.
! 	(aarch64_shift_truncation_mask): Use aarch64_vector_data_mode_p.
! 	(aarch64_output_sve_mov_immediate, aarch64_output_ptrue): New
! 	functions.
! 	(MAX_VECT_LEN): Delete.
! 	(expand_vec_perm_d): Add a vec_flags field.
! 	(emit_unspec2, aarch64_expand_sve_vec_perm): New functions.
! 	(aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_zip)
! 	(aarch64_evpc_ext): Don't apply a big-endian lane correction
! 	for SVE modes.
! 	(aarch64_evpc_rev): Rename to...
! 	(aarch64_evpc_rev_local): ...this.  Use a predicated operation for SVE.
! 	(aarch64_evpc_rev_global): New function.
! 	(aarch64_evpc_dup): Enforce a 64-byte range for SVE DUP.
! 	(aarch64_evpc_tbl): Use MAX_COMPILE_TIME_VEC_BYTES instead of
! 	MAX_VECT_LEN.
! 	(aarch64_evpc_sve_tbl): New function.
! 	(aarch64_expand_vec_perm_const_1): Update after rename of
! 	aarch64_evpc_rev.  Handle SVE permutes too, trying
! 	aarch64_evpc_rev_global and using aarch64_evpc_sve_tbl rather
! 	than aarch64_evpc_tbl.
! 	(aarch64_vectorize_vec_perm_const): Initialize vec_flags.
! 	(aarch64_sve_cmp_operand_p, aarch64_unspec_cond_code)
! 	(aarch64_gen_unspec_cond, aarch64_expand_sve_vec_cmp_int)
! 	(aarch64_emit_unspec_cond, aarch64_emit_unspec_cond_or)
! 	(aarch64_emit_inverted_unspec_cond, aarch64_expand_sve_vec_cmp_float)
! 	(aarch64_expand_sve_vcond): New functions.
! 	(aarch64_modes_tieable_p): Use aarch64_vector_data_mode_p instead
! 	of aarch64_vector_mode_p.
! 	(aarch64_dwarf_poly_indeterminate_value): New function.
! 	(aarch64_compute_pressure_classes): Likewise.
! 	(aarch64_can_change_mode_class): Likewise.
! 	(TARGET_GET_RAW_RESULT_MODE, TARGET_GET_RAW_ARG_MODE): Redefine.
! 	(TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): Likewise.
! 	(TARGET_VECTORIZE_GET_MASK_MODE): Likewise.
! 	(TARGET_DWARF_POLY_INDETERMINATE_VALUE): Likewise.
! 	(TARGET_COMPUTE_PRESSURE_CLASSES): Likewise.
! 	(TARGET_CAN_CHANGE_MODE_CLASS): Likewise.
! 	* config/aarch64/constraints.md (Upa, Upl, Uav, Uat, Usv, Usi, Utr)
! 	(Uty, Dm, vsa, vsc, vsd, vsi, vsn, vsl, vsm, vsA, vsM, vsN): New
! 	constraints.
! 	(Dn, Dl, Dr): Accept const as well as const_vector.
! 	(Dz): Likewise.  Compare against CONST0_RTX.
! 	* config/aarch64/iterators.md: Refer to "Advanced SIMD" instead
! 	of "vector" where appropriate.
! 	(SVE_ALL, SVE_BH, SVE_BHS, SVE_BHSI, SVE_HSDI, SVE_HSF, SVE_SD)
! 	(SVE_SDI, SVE_I, SVE_F, PRED_ALL, PRED_BHS): New mode iterators.
! 	(UNSPEC_SEL, UNSPEC_ANDF, UNSPEC_IORF, UNSPEC_XORF, UNSPEC_COND_LT)
! 	(UNSPEC_COND_LE, UNSPEC_COND_EQ, UNSPEC_COND_NE, UNSPEC_COND_GE)
! 	(UNSPEC_COND_GT, UNSPEC_COND_LO, UNSPEC_COND_LS, UNSPEC_COND_HS)
! 	(UNSPEC_COND_HI, UNSPEC_COND_UO): New unspecs.
! 	(Vetype, VEL, Vel, VWIDE, Vwide, vw, vwcore, V_INT_EQUIV)
! 	(v_int_equiv): Extend to SVE modes.
! 	(Vesize, V128, v128, Vewtype, V_FP_EQUIV, v_fp_equiv, VPRED): New
! 	mode attributes.
! 	(LOGICAL_OR, SVE_INT_UNARY, SVE_FP_UNARY): New code iterators.
! 	(optab): Handle popcount, smin, smax, umin, umax, abs and sqrt.
! 	(logical_nn, lr, sve_int_op, sve_fp_op): New code attributs.
! 	(LOGICALF, OPTAB_PERMUTE, UNPACK, UNPACK_UNSIGNED, SVE_COND_INT_CMP)
! 	(SVE_COND_FP_CMP): New int iterators.
! 	(perm_hilo): Handle the new unpack unspecs.
! 	(optab, logicalf_op, su, perm_optab, cmp_op, imm_con): New int
! 	attributes.
! 	* config/aarch64/predicates.md (aarch64_sve_cnt_immediate)
! 	(aarch64_sve_addvl_addpl_immediate, aarch64_split_add_offset_immediate)
! 	(aarch64_pluslong_or_poly_operand, aarch64_nonmemory_operand)
! 	(aarch64_equality_operator, aarch64_constant_vector_operand)
! 	(aarch64_sve_ld1r_operand, aarch64_sve_ldr_operand): New predicates.
! 	(aarch64_sve_nonimmediate_operand): Likewise.
! 	(aarch64_sve_general_operand): Likewise.
! 	(aarch64_sve_dup_operand, aarch64_sve_arith_immediate): Likewise.
! 	(aarch64_sve_sub_arith_immediate, aarch64_sve_inc_dec_immediate)
! 	(aarch64_sve_logical_immediate, aarch64_sve_mul_immediate): Likewise.
! 	(aarch64_sve_dup_immediate, aarch64_sve_cmp_vsc_immediate): Likewise.
! 	(aarch64_sve_cmp_vsd_immediate, aarch64_sve_index_immediate): Likewise.
! 	(aarch64_sve_float_arith_immediate): Likewise.
! 	(aarch64_sve_float_arith_with_sub_immediate): Likewise.
! 	(aarch64_sve_float_mul_immediate, aarch64_sve_arith_operand): Likewise.
! 	(aarch64_sve_add_operand, aarch64_sve_logical_operand): Likewise.
! 	(aarch64_sve_lshift_operand, aarch64_sve_rshift_operand): Likewise.
! 	(aarch64_sve_mul_operand, aarch64_sve_cmp_vsc_operand): Likewise.
! 	(aarch64_sve_cmp_vsd_operand, aarch64_sve_index_operand): Likewise.
! 	(aarch64_sve_float_arith_operand): Likewise.
! 	(aarch64_sve_float_arith_with_sub_operand): Likewise.
! 	(aarch64_sve_float_mul_operand): Likewise.
! 	(aarch64_sve_vec_perm_operand): Likewise.
! 	(aarch64_pluslong_operand): Include aarch64_sve_addvl_addpl_immediate.
! 	(aarch64_mov_operand): Accept const_poly_int and const_vector.
! 	(aarch64_simd_lshift_imm, aarch64_simd_rshift_imm): Accept const
! 	as well as const_vector.
! 	(aarch64_simd_imm_zero, aarch64_simd_imm_minus_one): Move earlier
! 	in file.  Use CONST0_RTX and CONSTM1_RTX.
! 	(aarch64_simd_or_scalar_imm_zero): Likewise.  Add match_codes.
! 	(aarch64_simd_reg_or_zero): Accept const as well as const_vector.
! 	Use aarch64_simd_imm_zero.
! 	* config/aarch64/aarch64-sve.md: New file.
! 	* config/aarch64/aarch64.md: Include it.
! 	(VG_REGNUM, P0_REGNUM, P7_REGNUM, P15_REGNUM): New register numbers.
! 	(UNSPEC_REV, UNSPEC_LD1_SVE, UNSPEC_ST1_SVE, UNSPEC_MERGE_PTRUE)
! 	(UNSPEC_PTEST_PTRUE, UNSPEC_UNPACKSHI, UNSPEC_UNPACKUHI)
! 	(UNSPEC_UNPACKSLO, UNSPEC_UNPACKULO, UNSPEC_PACK)
! 	(UNSPEC_FLOAT_CONVERT, UNSPEC_WHILE_LO): New unspec constants.
! 	(sve): New attribute.
! 	(enabled): Disable instructions with the sve attribute unless
! 	TARGET_SVE.
! 	(movqi, movhi): Pass CONST_POLY_INT operaneds through
! 	aarch64_expand_mov_immediate.
! 	(*mov<mode>_aarch64, *movsi_aarch64, *movdi_aarch64): Handle
! 	CNT[BHSD] immediates.
! 	(movti): Split CONST_POLY_INT moves into two halves.
! 	(add<mode>3): Accept aarch64_pluslong_or_poly_operand.
! 	Split additions that need a temporary here if the destination
! 	is the stack pointer.
! 	(*add<mode>3_aarch64): Handle ADDVL and ADDPL immediates.
! 	(*add<mode>3_poly_1): New instruction.
! 	(set_clobber_cc): New expander.
  
! 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* simplify-rtx.c (simplify_immed_subreg): Add an inner_bytes
! 	parameter and use it instead of GET_MODE_SIZE (innermode).  Use
! 	inner_bytes * BITS_PER_UNIT instead of GET_MODE_BITSIZE (innermode).
! 	Use CEIL (inner_bytes, GET_MODE_UNIT_SIZE (innermode)) instead of
! 	GET_MODE_NUNITS (innermode).  Also add a first_elem parameter.
! 	Change innermode from fixed_mode_size to machine_mode.
! 	(simplify_subreg): Update call accordingly.  Handle a constant-sized
! 	subreg of a variable-length CONST_VECTOR.
  
! 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* tree-ssa-address.c (mem_ref_valid_without_offset_p): New function.
! 	(add_offset_to_base): New function, split out from...
! 	(create_mem_ref): ...here.  When handling a scale other than 1,
! 	check first whether the address is valid without the offset.
! 	Add it into the base if so, leaving the index and scale as-is.
  
! 2018-01-12  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR c++/83778
! 	* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Call
! 	fold_for_warn before checking if arg2 is INTEGER_CST.
  
! 2018-01-12  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	* config/rs6000/predicates.md (load_multiple_operation): Delete.
! 	(store_multiple_operation): Delete.
! 	* config/rs6000/rs6000-cpus.def (601): Remove MASK_STRING.
! 	* config/rs6000/rs6000-protos.h (rs6000_output_load_multiple): Delete.
! 	* config/rs6000/rs6000-string.c (expand_block_move): Delete everything
! 	guarded by TARGET_STRING.
! 	(rs6000_output_load_multiple): Delete.
! 	* config/rs6000/rs6000.c (rs6000_option_override_internal): Delete
! 	OPTION_MASK_STRING / TARGET_STRING handling.
! 	(print_operand) <'N', 'O'>: Add comment that these are unused now.
! 	(const rs6000_opt_masks) <"string">: Change mask to 0.
! 	* config/rs6000/rs6000.h (TARGET_DEFAULT): Remove MASK_STRING.
! 	(MASK_STRING): Delete.
! 	* config/rs6000/rs6000.md (*mov<mode>_string): Delete TARGET_STRING
! 	parts.  Simplify.
! 	(load_multiple): Delete.
! 	(*ldmsi8): Delete.
! 	(*ldmsi7): Delete.
! 	(*ldmsi6): Delete.
! 	(*ldmsi5): Delete.
! 	(*ldmsi4): Delete.
! 	(*ldmsi3): Delete.
! 	(store_multiple): Delete.
! 	(*stmsi8): Delete.
! 	(*stmsi7): Delete.
! 	(*stmsi6): Delete.
! 	(*stmsi5): Delete.
! 	(*stmsi4): Delete.
! 	(*stmsi3): Delete.
! 	(movmemsi_8reg): Delete.
! 	(corresponding unnamed define_insn): Delete.
! 	(movmemsi_6reg): Delete.
! 	(corresponding unnamed define_insn): Delete.
! 	(movmemsi_4reg): Delete.
! 	(corresponding unnamed define_insn): Delete.
! 	(movmemsi_2reg): Delete.
! 	(corresponding unnamed define_insn): Delete.
! 	(movmemsi_1reg): Delete.
! 	(corresponding unnamed define_insn): Delete.
! 	* config/rs6000/rs6000.opt (mno-string): New.
! 	(mstring): Replace by deprecation warning stub.
! 	* doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mstring.
  
! 2018-01-12  Jakub Jelinek  <jakub@redhat.com>
  
! 	* regrename.c (regrename_do_replace): If replacing the same
! 	reg multiple times, try to reuse last created gen_raw_REG.
  
! 	PR debug/81155
! 	* bb-reorder.c (pass_partition_blocks::gate): In lto don't partition
! 	main to workaround a bug in GDB.
  
! 2018-01-12  Tom de Vries  <tom@codesourcery.com>
  
! 	PR target/83737
! 	* config.gcc (nvptx*-*-*): Set use_gcc_stdint=wrap.
  
! 2018-01-12  Vladimir Makarov  <vmakarov@redhat.com>
  
! 	PR rtl-optimization/80481
! 	* ira-color.c (get_cap_member): New function.
! 	(allocnos_conflict_by_live_ranges_p): Use it.
! 	(slot_coalesced_allocno_live_ranges_intersect_p): Add assert.
! 	(setup_slot_coalesced_allocno_live_ranges): Ditto.
  
! 2018-01-12  Uros Bizjak  <ubizjak@gmail.com>
  
! 	PR target/83628
! 	* config/alpha/alpha.md (*saddsi_1): New insn_ans_split pattern.
! 	(*saddl_se_1): Ditto.
! 	(*ssubsi_1): Ditto.
! 	(*ssubl_se_1): Ditto.
  
! 2018-01-12  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* tree-predcom.c (aff_combination_dr_offset): Use wi::to_poly_widest
! 	rather than wi::to_widest for DR_INITs.
! 	* tree-vect-data-refs.c (vect_find_same_alignment_drs): Use
! 	wi::to_poly_offset rather than wi::to_offset for DR_INIT.
! 	(vect_analyze_data_ref_accesses): Require both DR_INITs to be
! 	INTEGER_CSTs.
! 	(vect_analyze_group_access_1): Note that here.
  
! 2018-01-12  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* tree-vectorizer.c (get_vec_alignment_for_array_type): Handle
! 	polynomial type sizes.
  
! 2018-01-12  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* gimplify.c (gimple_add_tmp_var_fn): Allow variables to have a
! 	poly_uint64 size, rather than requiring an unsigned HOST_WIDE_INT size.
! 	(gimple_add_tmp_var): Likewise.
  
! 2018-01-12  Martin Liska  <mliska@suse.cz>
  
! 	* gimple.c (gimple_alloc_counts): Use uint64_t instead of int.
! 	(gimple_alloc_sizes): Likewise.
! 	(dump_gimple_statistics): Use PRIu64 in printf format.
! 	* gimple.h: Change uint64_t to int.
  
! 2018-01-12  Martin Liska  <mliska@suse.cz>
  
! 	* tree-core.h: Use uint64_t instead of int.
! 	* tree.c (tree_node_counts): Likewise.
! 	(tree_node_sizes): Likewise.
! 	(dump_tree_statistics): Use PRIu64 in printf format.
  
! 2018-01-12  Martin Liska  <mliska@suse.cz>
  
! 	* Makefile.in: As qsort_chk is implemented in vec.c, add
! 	vec.o to linkage of gencfn-macros.
! 	* tree.c (build_new_poly_int_cst): Add CXX_MEM_STAT_INFO as it's
! 	passing the info to record_node_allocation_statistics.
! 	(test_vector_cst_patterns): Add CXX_MEM_STAT_INFO to declaration
! 	and pass the info.
! 	* ggc-common.c (struct ggc_usage): Add operator== and use
! 	it in operator< and compare function.
! 	* mem-stats.h (struct mem_usage): Likewise.
! 	* vec.c (struct vec_usage): Remove operator< and compare
! 	function. Can be simply inherited.
  
! 2018-01-12  Martin Jambor  <mjambor@suse.cz>
  
! 	PR target/81616
! 	* params.def: New parameter PARAM_AVOID_FMA_MAX_BITS.
! 	* tree-ssa-math-opts.c: Include domwalk.h.
! 	(convert_mult_to_fma_1): New function.
! 	(fma_transformation_info): New type.
! 	(fma_deferring_state): Likewise.
! 	(cancel_fma_deferring): New function.
! 	(result_of_phi): Likewise.
! 	(last_fma_candidate_feeds_initial_phi): Likewise.
! 	(convert_mult_to_fma): Added deferring logic, split actual
! 	transformation to convert_mult_to_fma_1.
! 	(math_opts_dom_walker): New type.
! 	(math_opts_dom_walker::after_dom_children): New method, body moved
! 	here from pass_optimize_widening_mul::execute, added deferring logic
! 	bits.
! 	(pass_optimize_widening_mul::execute): Moved most of code to
! 	math_opts_dom_walker::after_dom_children.
! 	* config/i386/x86-tune.def (X86_TUNE_AVOID_128FMA_CHAINS): New.
! 	* config/i386/i386.c (ix86_option_override_internal): Added
! 	maybe_setting of PARAM_AVOID_FMA_MAX_BITS.
  
! 2018-01-12  Richard Biener  <rguenther@suse.de>
  
! 	PR debug/83157
! 	* dwarf2out.c (gen_variable_die): Do not reset old_die for
! 	inline instance vars.
  
! 2018-01-12  Oleg Endo  <olegendo@gcc.gnu.org>
  
! 	PR target/81819
! 	* config/rx/rx.c (rx_is_restricted_memory_address):
! 	Handle SUBREG case.
  
! 2018-01-12  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/80846
! 	* target.def (split_reduction): New target hook.
! 	* targhooks.c (default_split_reduction): New function.
! 	* targhooks.h (default_split_reduction): Declare.
! 	* tree-vect-loop.c (vect_create_epilog_for_reduction): If the
! 	target requests first reduce vectors by combining low and high
! 	parts.
! 	* tree-vect-stmts.c (vect_gen_perm_mask_any): Adjust.
! 	(get_vectype_for_scalar_type_and_size): Export.
! 	* tree-vectorizer.h (get_vectype_for_scalar_type_and_size): Declare.
! 	* doc/tm.texi.in (TARGET_VECTORIZE_SPLIT_REDUCTION): Document.
! 	* doc/tm.texi: Regenerate.
! 	* config/i386/i386.c (ix86_split_reduction): Implement
! 	TARGET_VECTORIZE_SPLIT_REDUCTION.
  
! 2018-01-12  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR target/83368
! 	* config/sparc/sparc.h (PIC_OFFSET_TABLE_REGNUM): Set to INVALID_REGNUM
! 	in PIC mode except for TARGET_VXWORKS_RTP.
! 	* config/sparc/sparc.c: Include cfgrtl.h.
! 	(TARGET_INIT_PIC_REG): Define.
! 	(TARGET_USE_PSEUDO_PIC_REG): Likewise.
! 	(sparc_pic_register_p): New predicate.
! 	(sparc_legitimate_address_p): Use it.
! 	(sparc_legitimize_pic_address): Likewise.
! 	(sparc_delegitimize_address): Likewise.
! 	(sparc_mode_dependent_address_p): Likewise.
! 	(gen_load_pcrel_sym): Remove 4th parameter.
! 	(load_got_register): Adjust call to above.  Remove obsolete stuff.
! 	(sparc_expand_prologue): Do not call load_got_register here.
! 	(sparc_flat_expand_prologue): Likewise.
! 	(sparc_output_mi_thunk): Set the pic_offset_table_rtx object.
! 	(sparc_use_pseudo_pic_reg): New function.
! 	(sparc_init_pic_reg): Likewise.
! 	* config/sparc/sparc.md (vxworks_load_got): Set the GOT register.
! 	(builtin_setjmp_receiver): Enable only for TARGET_VXWORKS_RTP.
  
! 2018-01-12  Christophe Lyon  <christophe.lyon@linaro.org>
  
! 	* doc/sourcebuild.texi (Effective-Target Keywords, Other attributes):
! 	Add item for branch_cost.
  
! 2018-01-12  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR rtl-optimization/83565
! 	* rtlanal.c (nonzero_bits1): On WORD_REGISTER_OPERATIONS machines, do
! 	not extend the result to a larger mode for rotate operations.
! 	(num_sign_bit_copies1): Likewise.
  
! 2018-01-12  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
  
! 	PR target/40411
! 	* config/sol2.h (STARTFILE_ARCH_SPEC): Don't use with -shared or
! 	-symbolic.
! 	Use values-Xc.o for -pedantic.
! 	Link with values-xpg4.o for C90, values-xpg6.o otherwise.
  
! 2018-01-12  Martin Liska  <mliska@suse.cz>
  
! 	PR ipa/83054
! 	* ipa-devirt.c (final_warning_record::grow_type_warnings):
! 	New function.
! 	(possible_polymorphic_call_targets): Use it.
! 	(ipa_devirt): Likewise.
  
! 2018-01-12  Martin Liska  <mliska@suse.cz>
  
! 	* profile-count.h (enum profile_quality): Use 0 as invalid
! 	enum value of profile_quality.
  
! 2018-01-12  Chung-Ju Wu  <jasonwucj@gmail.com>
  
! 	* doc/invoke.texi (NDS32 Options): Add -mext-perf, -mext-perf2 and
! 	-mext-string options.
  
! 2018-01-12  Richard Biener  <rguenther@suse.de>
  
! 	* lto-streamer-out.c (DFS::DFS_write_tree_body): Process
! 	DECL_DEBUG_EXPR conditional on DECL_HAS_DEBUG_EXPR_P.
! 	* tree-streamer-in.c (lto_input_ts_decl_common_tree_pointers):
! 	Likewise.
! 	* tree-streamer-out.c (write_ts_decl_common_tree_pointers): Likewise.
  
! 2018-01-11  Michael Meissner  <meissner@linux.vnet.ibm.com>
  
! 	* configure.ac (--with-long-double-format): Add support for the
! 	configuration option to change the default long double format on
! 	PowerPC systems.
! 	* config.gcc (powerpc*-linux*-*): Likewise.
! 	* configure: Regenerate.
! 	* config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): If long
! 	double is IEEE, define __KC__ and __KF__ to allow floatn.h to be
! 	used without modification.
  
! 2018-01-11  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
  
! 	* config/rs6000/rs6000-builtin.def (BU_P7_MISC_X): New #define.
! 	(SPEC_BARRIER): New instantiation of BU_P7_MISC_X.
! 	* config/rs6000/rs6000.c (rs6000_expand_builtin): Handle
! 	MISC_BUILTIN_SPEC_BARRIER.
! 	(rs6000_init_builtins): Likewise.
! 	* config/rs6000/rs6000.md (UNSPECV_SPEC_BARRIER): New UNSPECV
! 	enum value.
! 	(speculation_barrier): New define_insn.
! 	* doc/extend.texi: Document __builtin_speculation_barrier.
  
! 2018-01-11  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/83203
! 	* config/i386/i386.c (ix86_expand_vector_init_one_nonzero): If one_var
! 	is 0, for V{8,16}S[IF] and V[48]D[IF]mode use gen_vec_set<mode>_0.
! 	* config/i386/sse.md (VI8_AVX_AVX512F, VI4F_256_512): New mode
! 	iterators.
! 	(ssescalarmodesuffix): Add 512-bit vectors.  Use "d" or "q" for
! 	integral modes instead of "ss" and "sd".
! 	(vec_set<mode>_0): New define_insns for 256-bit and 512-bit
! 	vectors with 32-bit and 64-bit elements.
! 	(vecdupssescalarmodesuffix): New mode attribute.
! 	(vec_dup<mode>): Use it.
  
! 2018-01-11  H.J. Lu  <hongjiu.lu@intel.com>
  
! 	PR target/83330
! 	* config/i386/i386.c (ix86_compute_frame_layout): Align stack
! 	frame if argument is passed on stack.
  
! 2018-01-11  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/82682
! 	* ree.c (combine_reaching_defs): Optimize also
! 	reg2=exp; reg1=reg2; reg2=any_extend(reg1); into
! 	reg2=any_extend(exp); reg1=reg2;, formatting fix.
  
! 2018-01-11  Jan Hubicka  <hubicka@ucw.cz>
  
! 	PR middle-end/83189
! 	* gimple-ssa-isolate-paths.c (isolate_path): Fix profile update.
  
! 2018-01-11  Jan Hubicka  <hubicka@ucw.cz>
  
! 	PR middle-end/83718
! 	* tree-inline.c (copy_cfg_body): Adjust num&den for scaling
! 	after they are computed.
  
! 2018-01-11  Bin Cheng  <bin.cheng@arm.com>
  
! 	PR tree-optimization/83695
! 	* gimple-loop-linterchange.cc
! 	(tree_loop_interchange::interchange_loops): Call scev_reset_htab to
! 	reset cached scev information after interchange.
! 	(pass_linterchange::execute): Remove call to scev_reset_htab.
  
! 2018-01-11  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/arm/arm_neon.h (vfmlal_lane_low_u32, vfmlal_lane_high_u32,
! 	vfmlalq_laneq_low_u32, vfmlalq_lane_low_u32, vfmlal_laneq_low_u32,
! 	vfmlalq_laneq_high_u32, vfmlalq_lane_high_u32, vfmlal_laneq_high_u32,
! 	vfmlsl_lane_low_u32, vfmlsl_lane_high_u32, vfmlslq_laneq_low_u32,
! 	vfmlslq_lane_low_u32, vfmlsl_laneq_low_u32, vfmlslq_laneq_high_u32,
! 	vfmlslq_lane_high_u32, vfmlsl_laneq_high_u32): Define.
! 	* config/arm/arm_neon_builtins.def (vfmal_lane_low,
! 	vfmal_lane_lowv4hf, vfmal_lane_lowv8hf, vfmal_lane_high,
! 	vfmal_lane_highv4hf, vfmal_lane_highv8hf, vfmsl_lane_low,
! 	vfmsl_lane_lowv4hf, vfmsl_lane_lowv8hf, vfmsl_lane_high,
! 	vfmsl_lane_highv4hf, vfmsl_lane_highv8hf): New sets of builtins.
! 	* config/arm/iterators.md (VFMLSEL2, vfmlsel2): New mode attributes.
! 	(V_lane_reg): Likewise.
! 	* config/arm/neon.md (neon_vfm<vfml_op>l_lane_<vfml_half><VCVTF:mode>):
! 	New define_expand.
! 	(neon_vfm<vfml_op>l_lane_<vfml_half><vfmlsel2><mode>): Likewise.
! 	(vfmal_lane_low<mode>_intrinsic,
! 	vfmal_lane_low<vfmlsel2><mode>_intrinsic,
! 	vfmal_lane_high<vfmlsel2><mode>_intrinsic,
! 	vfmal_lane_high<mode>_intrinsic, vfmsl_lane_low<mode>_intrinsic,
! 	vfmsl_lane_low<vfmlsel2><mode>_intrinsic,
! 	vfmsl_lane_high<vfmlsel2><mode>_intrinsic,
! 	vfmsl_lane_high<mode>_intrinsic): New define_insns.
  
! 2018-01-11  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/arm/arm-cpus.in (fp16fml): New feature.
! 	(ALL_SIMD): Add fp16fml.
! 	(armv8.2-a): Add fp16fml as an option.
! 	(armv8.3-a): Likewise.
! 	(armv8.4-a): Add fp16fml as part of fp16.
! 	* config/arm/arm.h (TARGET_FP16FML): Define.
! 	* config/arm/arm-c.c (arm_cpu_builtins): Define __ARM_FEATURE_FP16_FML
! 	when appropriate.
! 	* config/arm/arm-modes.def (V2HF): Define.
! 	* config/arm/arm_neon.h (vfmlal_low_u32, vfmlsl_low_u32,
! 	vfmlal_high_u32, vfmlsl_high_u32, vfmlalq_low_u32,
! 	vfmlslq_low_u32, vfmlalq_high_u32, vfmlslq_high_u32): Define.
! 	* config/arm/arm_neon_builtins.def (vfmal_low, vfmal_high,
! 	vfmsl_low, vfmsl_high): New set of builtins.
! 	* config/arm/iterators.md (PLUSMINUS): New code iterator.
! 	(vfml_op): New code attribute.
! 	(VFMLHALVES): New int iterator.
! 	(VFML, VFMLSEL): New mode attributes.
! 	(V_reg): Define mapping for V2HF.
! 	(V_hi, V_lo): New mode attributes.
! 	(VF_constraint): Likewise.
! 	(vfml_half, vfml_half_selector): New int attributes.
! 	* config/arm/neon.md (neon_vfm<vfml_op>l_<vfml_half><mode>): New
! 	define_expand.
! 	(vfmal_low<mode>_intrinsic, vfmsl_high<mode>_intrinsic,
! 	vfmal_high<mode>_intrinsic, vfmsl_low<mode>_intrinsic):
! 	New define_insn.
! 	* config/arm/t-arm-elf (v8_fps): Add fp16fml.
! 	* config/arm/t-multilib (v8_2_a_simd_variants): Add fp16fml.
! 	* config/arm/unspecs.md (UNSPEC_VFML_LO, UNSPEC_VFML_HI): New unspecs.
! 	* doc/invoke.texi (ARM Options): Document fp16fml.  Update armv8.4-a
! 	documentation.
! 	* doc/sourcebuild.texi (arm_fp16fml_neon_ok, arm_fp16fml_neon):
! 	Document new effective target and option set.
  
! 2018-01-11  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/arm/arm-cpus.in (armv8_4): New feature.
! 	(ARMv8_4a): New fgroup.
! 	(armv8.4-a): New arch.
! 	* config/arm/arm-tables.opt: Regenerate.
! 	* config/arm/t-aprofile: Add matching rules for -march=armv8.4-a.
! 	* config/arm/t-arm-elf (all_v8_archs): Add armv8.4-a.
! 	* config/arm/t-multilib (v8_4_a_simd_variants): New variable.
! 	Add matching rules for -march=armv8.4-a and extensions.
! 	* doc/invoke.texi (ARM Options): Document -march=armv8.4-a.
  
! 2018-01-11  Oleg Endo  <olegendo@gcc.gnu.org>
  
! 	PR target/81821
! 	* config/rx/rx.md (BW): New mode attribute.
! 	(sync_lock_test_and_setsi): Add mode suffix to insn output.
  
! 2018-01-11  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/83435
! 	* graphite.c (canonicalize_loop_form): Ignore fake loop exit edges.
! 	* graphite-scop-detection.c (scop_detection::get_sese): Likewise.
! 	* tree-vrp.c (add_assert_info): Drop TREE_OVERFLOW if they appear.
  
! 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* config/aarch64/aarch64.c (aarch64_address_info): Add a const_offset
! 	field.
! 	(aarch64_classify_address): Initialize it.  Track polynomial offsets.
! 	(aarch64_print_address_internal): Use it to check for a zero offset.
  
! 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* config/aarch64/aarch64-modes.def (NUM_POLY_INT_COEFFS): Set to 2.
! 	* config/aarch64/aarch64-protos.h (aarch64_initial_elimination_offset):
! 	Return a poly_int64 rather than a HOST_WIDE_INT.
! 	(aarch64_offset_7bit_signed_scaled_p): Take the offset as a poly_int64
! 	rather than a HOST_WIDE_INT.
! 	* config/aarch64/aarch64.h (aarch64_frame): Protect with
! 	HAVE_POLY_INT_H rather than HOST_WIDE_INT.  Change locals_offset,
! 	hard_fp_offset, frame_size, initial_adjust, callee_offset and
! 	final_offset from HOST_WIDE_INT to poly_int64.
! 	* config/aarch64/aarch64-builtins.c (aarch64_simd_expand_args): Use
! 	to_constant when getting the number of units in an Advanced SIMD
! 	mode.
! 	(aarch64_builtin_vectorized_function): Check for a constant number
! 	of units.
! 	* config/aarch64/aarch64-simd.md (mov<mode>): Handle polynomial
! 	GET_MODE_SIZE.
! 	(aarch64_ld<VSTRUCT:nregs>_lane<VALLDIF:mode>): Use the nunits
! 	attribute instead of GET_MODE_NUNITS.
! 	* config/aarch64/aarch64.c (aarch64_hard_regno_nregs)
! 	(aarch64_class_max_nregs): Use the constant_lowest_bound of the
! 	GET_MODE_SIZE for fixed-size registers.
! 	(aarch64_const_vec_all_same_in_range_p): Use const_vec_duplicate_p.
! 	(aarch64_hard_regno_call_part_clobbered, aarch64_classify_index)
! 	(aarch64_mode_valid_for_sched_fusion_p, aarch64_classify_address)
! 	(aarch64_legitimize_address_displacement, aarch64_secondary_reload)
! 	(aarch64_print_operand, aarch64_print_address_internal)
! 	(aarch64_address_cost, aarch64_rtx_costs, aarch64_register_move_cost)
! 	(aarch64_short_vector_p, aapcs_vfp_sub_candidate)
! 	(aarch64_simd_attr_length_rglist, aarch64_operands_ok_for_ldpstp):
! 	Handle polynomial GET_MODE_SIZE.
! 	(aarch64_hard_regno_caller_save_mode): Likewise.  Return modes
! 	wider than SImode without modification.
! 	(tls_symbolic_operand_type): Use strip_offset instead of split_const.
! 	(aarch64_pass_by_reference, aarch64_layout_arg, aarch64_pad_reg_upward)
! 	(aarch64_gimplify_va_arg_expr): Assert that we don't yet handle
! 	passing and returning SVE modes.
! 	(aarch64_function_value, aarch64_layout_arg): Use gen_int_mode
! 	rather than GEN_INT.
! 	(aarch64_emit_probe_stack_range): Take the size as a poly_int64
! 	rather than a HOST_WIDE_INT, but call sorry if it isn't constant.
! 	(aarch64_allocate_and_probe_stack_space): Likewise.
! 	(aarch64_layout_frame): Cope with polynomial offsets.
! 	(aarch64_save_callee_saves, aarch64_restore_callee_saves): Take the
! 	start_offset as a poly_int64 rather than a HOST_WIDE_INT.  Track
! 	polynomial offsets.
! 	(offset_9bit_signed_unscaled_p, offset_12bit_unsigned_scaled_p)
! 	(aarch64_offset_7bit_signed_scaled_p): Take the offset as a
! 	poly_int64 rather than a HOST_WIDE_INT.
! 	(aarch64_get_separate_components, aarch64_process_components)
! 	(aarch64_expand_prologue, aarch64_expand_epilogue)
! 	(aarch64_use_return_insn_p): Handle polynomial frame offsets.
! 	(aarch64_anchor_offset): New function, split out from...
! 	(aarch64_legitimize_address): ...here.
! 	(aarch64_builtin_vectorization_cost): Handle polynomial
! 	TYPE_VECTOR_SUBPARTS.
! 	(aarch64_simd_check_vect_par_cnst_half): Handle polynomial
! 	GET_MODE_NUNITS.
! 	(aarch64_simd_make_constant, aarch64_expand_vector_init): Get the
! 	number of elements from the PARALLEL rather than the mode.
! 	(aarch64_shift_truncation_mask): Use GET_MODE_UNIT_BITSIZE
! 	rather than GET_MODE_BITSIZE.
! 	(aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_ext)
! 	(aarch64_evpc_rev, aarch64_evpc_dup, aarch64_evpc_zip)
! 	(aarch64_expand_vec_perm_const_1): Handle polynomial
! 	d->perm.length () and d->perm elements.
! 	(aarch64_evpc_tbl): Likewise.  Use nelt rather than GET_MODE_NUNITS.
! 	Apply to_constant to d->perm elements.
! 	(aarch64_simd_valid_immediate, aarch64_vec_fpconst_pow_of_2): Handle
! 	polynomial CONST_VECTOR_NUNITS.
! 	(aarch64_move_pointer): Take amount as a poly_int64 rather
! 	than an int.
! 	(aarch64_progress_pointer): Avoid temporary variable.
! 	* config/aarch64/aarch64.md (aarch64_<crc_variant>): Use
! 	the mode attribute instead of GET_MODE.
  
! 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* config/aarch64/aarch64.c (aarch64_force_temporary): Assert that
! 	x exists before using it.
! 	(aarch64_add_constant_internal): Rename to...
! 	(aarch64_add_offset_1): ...this.  Replace regnum with separate
! 	src and dest rtxes.  Handle the case in which they're different,
! 	including when the offset is zero.  Replace scratchreg with an rtx.
! 	Use 2 additions if there is no spare register into which we can
! 	move a 16-bit constant.
! 	(aarch64_add_constant): Delete.
! 	(aarch64_add_offset): Replace reg with separate src and dest
! 	rtxes.  Take a poly_int64 offset instead of a HOST_WIDE_INT.
! 	Use aarch64_add_offset_1.
! 	(aarch64_add_sp, aarch64_sub_sp): Take the scratch register as
! 	an rtx rather than an int.  Take the delta as a poly_int64
! 	rather than a HOST_WIDE_INT.  Use aarch64_add_offset.
! 	(aarch64_expand_mov_immediate): Update uses of aarch64_add_offset.
! 	(aarch64_expand_prologue): Update calls to aarch64_sub_sp,
! 	aarch64_allocate_and_probe_stack_space and aarch64_add_offset.
! 	(aarch64_expand_epilogue): Update calls to aarch64_add_offset
! 	and aarch64_add_sp.
! 	(aarch64_output_mi_thunk): Use aarch64_add_offset rather than
! 	aarch64_add_constant.
  
! 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* config/aarch64/aarch64.c (aarch64_reinterpret_float_as_int):
! 	Use scalar_float_mode.
  
! 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* config/aarch64/aarch64-simd.md
! 	(aarch64_fml<f16mac1>l<f16quad>_low<mode>): Avoid GET_MODE_NUNITS.
! 	(aarch64_fml<f16mac1>l<f16quad>_high<mode>): Likewise.
! 	(aarch64_fml<f16mac1>l_lane_lowv2sf): Likewise.
! 	(aarch64_fml<f16mac1>l_lane_highv2sf): Likewise.
! 	(aarch64_fml<f16mac1>lq_laneq_lowv4sf): Likewise.
! 	(aarch64_fml<f16mac1>lq_laneq_highv4sf): Likewise.
! 	(aarch64_fml<f16mac1>l_laneq_lowv2sf): Likewise.
! 	(aarch64_fml<f16mac1>l_laneq_highv2sf): Likewise.
! 	(aarch64_fml<f16mac1>lq_lane_lowv4sf): Likewise.
! 	(aarch64_fml<f16mac1>lq_lane_highv4sf): Likewise.
  
! 2018-01-11  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
  
! 	PR target/83514
! 	* config/arm/arm.c (arm_declare_function_name): Set arch_to_print if
! 	targ_options->x_arm_arch_string is non NULL.
  
! 2018-01-11  Tamar Christina  <tamar.christina@arm.com>
  
! 	* config/aarch64/aarch64.h
! 	(AARCH64_FL_FOR_ARCH8_4): Add  AARCH64_FL_DOTPROD.
  
! 2018-01-11  Sudakshina Das  <sudi.das@arm.com>
  
! 	PR target/82096
! 	* expmed.c (emit_store_flag_force): Swap if const op0
! 	and change VOIDmode to mode of op0.
  
! 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	PR rtl-optimization/83761
! 	* caller-save.c (replace_reg_with_saved_mem): Pass bits rather
! 	than bytes to mode_for_size.
  
! 2018-01-10  Jan Hubicka  <hubicka@ucw.cz>
  
! 	PR middle-end/83189
! 	* gfortran.fortran-torture/compile/pr83189.f90: New testcase.
! 	* tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Handle zero
! 	profile.
  
! 2018-01-10  Jan Hubicka  <hubicka@ucw.cz>
  
! 	PR middle-end/83575
! 	* cfgrtl.c (rtl_verify_edges): Only verify fixability of partition
! 	when in layout mode.
! 	(cfg_layout_finalize): Do not verify cfg before we are out of layout.
! 	* cfgcleanup.c (try_optimize_cfg): Only verify flow info when doing
! 	partition fixup.
  
! 2018-01-10  Michael Collison  <michael.collison@arm.com>
  
! 	* config/aarch64/aarch64-modes.def (V2HF): New VECTOR_MODE.
! 	* config/aarch64/aarch64-option-extension.def: Add
! 	AARCH64_OPT_EXTENSION of 'fp16fml'.
! 	* config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
! 	(__ARM_FEATURE_FP16_FML): Define if TARGET_F16FML is true.
! 	* config/aarch64/predicates.md (aarch64_lane_imm3): New predicate.
! 	* config/aarch64/constraints.md (Ui7): New constraint.
! 	* config/aarch64/iterators.md (VFMLA_W): New mode iterator.
! 	(VFMLA_SEL_W): Ditto.
! 	(f16quad): Ditto.
! 	(f16mac1): Ditto.
! 	(VFMLA16_LOW): New int iterator.
! 	(VFMLA16_HIGH): Ditto.
! 	(UNSPEC_FMLAL): New unspec.
! 	(UNSPEC_FMLSL): Ditto.
! 	(UNSPEC_FMLAL2): Ditto.
! 	(UNSPEC_FMLSL2): Ditto.
! 	(f16mac): New code attribute.
! 	* config/aarch64/aarch64-simd-builtins.def
! 	(aarch64_fmlal_lowv2sf): Ditto.
! 	(aarch64_fmlsl_lowv2sf): Ditto.
! 	(aarch64_fmlalq_lowv4sf): Ditto.
! 	(aarch64_fmlslq_lowv4sf): Ditto.
! 	(aarch64_fmlal_highv2sf): Ditto.
! 	(aarch64_fmlsl_highv2sf): Ditto.
! 	(aarch64_fmlalq_highv4sf): Ditto.
! 	(aarch64_fmlslq_highv4sf): Ditto.
! 	(aarch64_fmlal_lane_lowv2sf): Ditto.
! 	(aarch64_fmlsl_lane_lowv2sf): Ditto.
! 	(aarch64_fmlal_laneq_lowv2sf): Ditto.
! 	(aarch64_fmlsl_laneq_lowv2sf): Ditto.
! 	(aarch64_fmlalq_lane_lowv4sf): Ditto.
! 	(aarch64_fmlsl_lane_lowv4sf): Ditto.
! 	(aarch64_fmlalq_laneq_lowv4sf): Ditto.
! 	(aarch64_fmlsl_laneq_lowv4sf): Ditto.
! 	(aarch64_fmlal_lane_highv2sf): Ditto.
! 	(aarch64_fmlsl_lane_highv2sf): Ditto.
! 	(aarch64_fmlal_laneq_highv2sf): Ditto.
! 	(aarch64_fmlsl_laneq_highv2sf): Ditto.
! 	(aarch64_fmlalq_lane_highv4sf): Ditto.
! 	(aarch64_fmlsl_lane_highv4sf): Ditto.
! 	(aarch64_fmlalq_laneq_highv4sf): Ditto.
! 	(aarch64_fmlsl_laneq_highv4sf): Ditto.
! 	* config/aarch64/aarch64-simd.md:
! 	(aarch64_fml<f16mac1>l<f16quad>_low<mode>): New pattern.
! 	(aarch64_fml<f16mac1>l<f16quad>_high<mode>): Ditto.
! 	(aarch64_simd_fml<f16mac1>l<f16quad>_low<mode>): Ditto.
! 	(aarch64_simd_fml<f16mac1>l<f16quad>_high<mode>): Ditto.
! 	(aarch64_fml<f16mac1>l_lane_lowv2sf): Ditto.
! 	(aarch64_fml<f16mac1>l_lane_highv2sf): Ditto.
! 	(aarch64_simd_fml<f16mac>l_lane_lowv2sf): Ditto.
! 	(aarch64_simd_fml<f16mac>l_lane_highv2sf): Ditto.
! 	(aarch64_fml<f16mac1>lq_laneq_lowv4sf): Ditto.
! 	(aarch64_fml<f16mac1>lq_laneq_highv4sf): Ditto.
! 	(aarch64_simd_fml<f16mac>lq_laneq_lowv4sf): Ditto.
! 	(aarch64_simd_fml<f16mac>lq_laneq_highv4sf): Ditto.
! 	(aarch64_fml<f16mac1>l_laneq_lowv2sf): Ditto.
! 	(aarch64_fml<f16mac1>l_laneq_highv2sf): Ditto.
! 	(aarch64_simd_fml<f16mac>l_laneq_lowv2sf): Ditto.
! 	(aarch64_simd_fml<f16mac>l_laneq_highv2sf): Ditto.
! 	(aarch64_fml<f16mac1>lq_lane_lowv4sf): Ditto.
! 	(aarch64_fml<f16mac1>lq_lane_highv4sf): Ditto.
! 	(aarch64_simd_fml<f16mac>lq_lane_lowv4sf): Ditto.
! 	(aarch64_simd_fml<f16mac>lq_lane_highv4sf): Ditto.
! 	* config/aarch64/arm_neon.h (vfmlal_low_u32): New intrinsic.
! 	(vfmlsl_low_u32): Ditto.
! 	(vfmlalq_low_u32): Ditto.
! 	(vfmlslq_low_u32): Ditto.
! 	(vfmlal_high_u32): Ditto.
! 	(vfmlsl_high_u32): Ditto.
! 	(vfmlalq_high_u32): Ditto.
! 	(vfmlslq_high_u32): Ditto.
! 	(vfmlal_lane_low_u32): Ditto.
! 	(vfmlsl_lane_low_u32): Ditto.
! 	(vfmlal_laneq_low_u32): Ditto.
! 	(vfmlsl_laneq_low_u32): Ditto.
! 	(vfmlalq_lane_low_u32): Ditto.
! 	(vfmlslq_lane_low_u32): Ditto.
! 	(vfmlalq_laneq_low_u32): Ditto.
! 	(vfmlslq_laneq_low_u32): Ditto.
! 	(vfmlal_lane_high_u32): Ditto.
! 	(vfmlsl_lane_high_u32): Ditto.
! 	(vfmlal_laneq_high_u32): Ditto.
! 	(vfmlsl_laneq_high_u32): Ditto.
! 	(vfmlalq_lane_high_u32): Ditto.
! 	(vfmlslq_lane_high_u32): Ditto.
! 	(vfmlalq_laneq_high_u32): Ditto.
! 	(vfmlslq_laneq_high_u32): Ditto.
! 	* config/aarch64/aarch64.h (AARCH64_FL_F16SML): New flag.
! 	(AARCH64_FL_FOR_ARCH8_4): New.
! 	(AARCH64_ISA_F16FML): New ISA flag.
! 	(TARGET_F16FML): New feature flag for fp16fml.
! 	(doc/invoke.texi): Document new fp16fml option.
  
! 2018-01-10  Michael Collison  <michael.collison@arm.com>
  
! 	* config/aarch64/aarch64-builtins.c:
! 	(aarch64_types_ternopu_imm_qualifiers, TYPES_TERNOPUI): New.
! 	* config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
! 	(__ARM_FEATURE_SHA3): Define if TARGET_SHA3 is true.
! 	* config/aarch64/aarch64.h (AARCH64_FL_SHA3): New flags.
! 	(AARCH64_ISA_SHA3): New ISA flag.
! 	(TARGET_SHA3): New feature flag for sha3.
! 	* config/aarch64/iterators.md (sha512_op): New int attribute.
! 	(CRYPTO_SHA512): New int iterator.
! 	(UNSPEC_SHA512H): New unspec.
! 	(UNSPEC_SHA512H2): Ditto.
! 	(UNSPEC_SHA512SU0): Ditto.
! 	(UNSPEC_SHA512SU1): Ditto.
! 	* config/aarch64/aarch64-simd-builtins.def
! 	(aarch64_crypto_sha512hqv2di): New builtin.
! 	(aarch64_crypto_sha512h2qv2di): Ditto.
! 	(aarch64_crypto_sha512su0qv2di): Ditto.
! 	(aarch64_crypto_sha512su1qv2di): Ditto.
! 	(aarch64_eor3qv8hi): Ditto.
! 	(aarch64_rax1qv2di): Ditto.
! 	(aarch64_xarqv2di): Ditto.
! 	(aarch64_bcaxqv8hi): Ditto.
! 	* config/aarch64/aarch64-simd.md:
! 	(aarch64_crypto_sha512h<sha512_op>qv2di): New pattern.
! 	(aarch64_crypto_sha512su0qv2di): Ditto.
! 	(aarch64_crypto_sha512su1qv2di): Ditto.
! 	(aarch64_eor3qv8hi): Ditto.
! 	(aarch64_rax1qv2di): Ditto.
! 	(aarch64_xarqv2di): Ditto.
! 	(aarch64_bcaxqv8hi): Ditto.
! 	* config/aarch64/arm_neon.h (vsha512hq_u64): New intrinsic.
! 	(vsha512h2q_u64): Ditto.
! 	(vsha512su0q_u64): Ditto.
! 	(vsha512su1q_u64): Ditto.
! 	(veor3q_u16): Ditto.
! 	(vrax1q_u64): Ditto.
! 	(vxarq_u64): Ditto.
! 	(vbcaxq_u16): Ditto.
! 	* config/arm/types.md (crypto_sha512): New type attribute.
! 	(crypto_sha3): Ditto.
! 	(doc/invoke.texi): Document new sha3 option.
  
! 2018-01-10  Michael Collison  <michael.collison@arm.com>
  
! 	* config/aarch64/aarch64-builtins.c:
! 	(aarch64_types_quadopu_imm_qualifiers, TYPES_QUADOPUI): New.
! 	* config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
! 	(__ARM_FEATURE_SM3): Define if TARGET_SM4 is true.
! 	(__ARM_FEATURE_SM4): Define if TARGET_SM4 is true.
! 	* config/aarch64/aarch64.h (AARCH64_FL_SM4): New flags.
! 	(AARCH64_ISA_SM4): New ISA flag.
! 	(TARGET_SM4): New feature flag for sm4.
! 	* config/aarch64/aarch64-simd-builtins.def
! 	(aarch64_sm3ss1qv4si): Ditto.
! 	(aarch64_sm3tt1aq4si): Ditto.
! 	(aarch64_sm3tt1bq4si): Ditto.
! 	(aarch64_sm3tt2aq4si): Ditto.
! 	(aarch64_sm3tt2bq4si): Ditto.
! 	(aarch64_sm3partw1qv4si): Ditto.
! 	(aarch64_sm3partw2qv4si): Ditto.
! 	(aarch64_sm4eqv4si): Ditto.
! 	(aarch64_sm4ekeyqv4si): Ditto.
! 	* config/aarch64/aarch64-simd.md:
! 	(aarch64_sm3ss1qv4si): Ditto.
! 	(aarch64_sm3tt<sm3tt_op>qv4si): Ditto.
! 	(aarch64_sm3partw<sm3part_op>qv4si): Ditto.
! 	(aarch64_sm4eqv4si): Ditto.
! 	(aarch64_sm4ekeyqv4si): Ditto.
! 	* config/aarch64/iterators.md (sm3tt_op): New int iterator.
! 	(sm3part_op): Ditto.
! 	(CRYPTO_SM3TT): Ditto.
! 	(CRYPTO_SM3PART): Ditto.
! 	(UNSPEC_SM3SS1): New unspec.
! 	(UNSPEC_SM3TT1A): Ditto.
! 	(UNSPEC_SM3TT1B): Ditto.
! 	(UNSPEC_SM3TT2A): Ditto.
! 	(UNSPEC_SM3TT2B): Ditto.
! 	(UNSPEC_SM3PARTW1): Ditto.
! 	(UNSPEC_SM3PARTW2): Ditto.
! 	(UNSPEC_SM4E): Ditto.
! 	(UNSPEC_SM4EKEY): Ditto.
! 	* config/aarch64/constraints.md (Ui2): New constraint.
! 	* config/aarch64/predicates.md (aarch64_imm2): New predicate.
! 	* config/arm/types.md (crypto_sm3): New type attribute.
! 	(crypto_sm4): Ditto.
! 	* config/aarch64/arm_neon.h (vsm3ss1q_u32): New intrinsic.
! 	(vsm3tt1aq_u32): Ditto.
! 	(vsm3tt1bq_u32): Ditto.
! 	(vsm3tt2aq_u32): Ditto.
! 	(vsm3tt2bq_u32): Ditto.
! 	(vsm3partw1q_u32): Ditto.
! 	(vsm3partw2q_u32): Ditto.
! 	(vsm4eq_u32): Ditto.
! 	(vsm4ekeyq_u32): Ditto.
! 	(doc/invoke.texi): Document new sm4 option.
  
! 2018-01-10  Michael Collison  <michael.collison@arm.com>
  
! 	* config/aarch64/aarch64-arches.def (armv8.4-a): New architecture.
! 	* config/aarch64/aarch64.h (AARCH64_ISA_V8_4): New ISA flag.
! 	(AARCH64_FL_FOR_ARCH8_4): New.
! 	(AARCH64_FL_V8_4): New flag.
! 	(doc/invoke.texi): Document new armv8.4-a option.
  
! 2018-01-10  Michael Collison  <michael.collison@arm.com>
  
! 	* config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
! 	(__ARM_FEATURE_AES): Define if TARGET_AES is true.
! 	(__ARM_FEATURE_SHA2): Define if TARGET_SHA2 is true.
! 	* config/aarch64/aarch64-option-extension.def: Add
! 	AARCH64_OPT_EXTENSION of 'sha2'.
! 	(aes): Add AARCH64_OPT_EXTENSION of 'aes'.
! 	(crypto): Disable sha2 and aes if crypto disabled.
! 	(crypto): Enable aes and sha2 if enabled.
! 	(simd): Disable sha2 and aes if simd disabled.
! 	* config/aarch64/aarch64.h (AARCH64_FL_AES, AARCH64_FL_SHA2):
! 	New flags.
! 	(AARCH64_ISA_AES, AARCH64_ISA_SHA2): New ISA flags.
! 	(TARGET_SHA2): New feature flag for sha2.
! 	(TARGET_AES): New feature flag for aes.
! 	* config/aarch64/aarch64-simd.md:
! 	(aarch64_crypto_aes<aes_op>v16qi): Make pattern
! 	conditional on TARGET_AES.
! 	(aarch64_crypto_aes<aesmc_op>v16qi): Ditto.
! 	(aarch64_crypto_sha1hsi): Make pattern conditional
! 	on TARGET_SHA2.
! 	(aarch64_crypto_sha1hv4si): Ditto.
! 	(aarch64_be_crypto_sha1hv4si): Ditto.
! 	(aarch64_crypto_sha1su1v4si): Ditto.
! 	(aarch64_crypto_sha1<sha1_op>v4si): Ditto.
! 	(aarch64_crypto_sha1su0v4si): Ditto.
! 	(aarch64_crypto_sha256h<sha256_op>v4si): Ditto.
! 	(aarch64_crypto_sha256su0v4si): Ditto.
! 	(aarch64_crypto_sha256su1v4si): Ditto.
! 	(doc/invoke.texi): Document new aes and sha2 options.
  
! 2018-01-10  Martin Sebor  <msebor@redhat.com>
  
! 	PR tree-optimization/83781
! 	* gimple-fold.c (get_range_strlen): Avoid treating arrays of pointers
! 	as string arrays.
  
! 2018-01-11  Martin Sebor  <msebor@gmail.com>
! 	    Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
  
! 	PR tree-optimization/83501
! 	PR tree-optimization/81703
  
! 	* tree-ssa-strlen.c (get_string_cst): Rename...
! 	(get_string_len): ...to this.  Handle global constants.
! 	(handle_char_store): Adjust.
  
! 2018-01-10  Kito Cheng  <kito.cheng@gmail.com>
! 	    Jim Wilson  <jimw@sifive.com>
  
! 	* config/riscv/riscv-protos.h (riscv_output_return): New.
! 	* config/riscv/riscv.c (struct machine_function): New naked_p field.
! 	(riscv_attribute_table, riscv_output_return),
! 	(riscv_handle_fndecl_attribute, riscv_naked_function_p),
! 	(riscv_allocate_stack_slots_for_args, riscv_warn_func_return): New.
! 	(riscv_compute_frame_info): Only compute frame->mask if not a naked
! 	function.
! 	(riscv_expand_prologue): Add early return for naked function.
! 	(riscv_expand_epilogue): Likewise.
! 	(riscv_function_ok_for_sibcall): Return false for naked function.
! 	(riscv_set_current_function): New.
! 	(TARGET_SET_CURRENT_FUNCTION, TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS),
! 	(TARGET_ATTRIBUTE_TABLE, TARGET_WARN_FUNC_RETURN): New.
! 	* config/riscv/riscv.md (simple_return): Call riscv_output_return.
! 	* doc/extend.texi (RISC-V Function Attributes): New.
  
! 2018-01-10  Michael Meissner  <meissner@linux.vnet.ibm.com>
  
! 	* config/rs6000/rs6000.c (is_complex_IBM_long_double): Explicitly
! 	check for 128-bit long double before checking TCmode.
! 	* config/rs6000/rs6000.h (FLOAT128_IEEE_P): Explicitly check for
! 	128-bit long doubles before checking TFmode or TCmode.
! 	(FLOAT128_IBM_P): Likewise.
  
! 2018-01-10  Martin Sebor  <msebor@redhat.com>
  
! 	PR tree-optimization/83671
! 	* builtins.c (c_strlen): Unconditionally return zero for the empty
! 	string.
! 	Use -Warray-bounds for warnings.
! 	* gimple-fold.c (get_range_strlen): Handle non-constant lengths
! 	for non-constant array indices with COMPONENT_REF, arrays of
! 	arrays, and pointers to arrays.
! 	(gimple_fold_builtin_strlen): Determine and set length range for
! 	non-constant character arrays.
  
! 2018-01-10  Aldy Hernandez  <aldyh@redhat.com>
  
! 	PR middle-end/81897
! 	* tree-ssa-uninit.c (convert_control_dep_chain_into_preds): Skip
! 	empty blocks.
  
! 2018-01-10  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* dwarf2out.c (dwarf2out_var_location): Do not pass NULL to fprintf.
  
! 2018-01-10  Peter Bergner  <bergner@vnet.ibm.com>
  
! 	PR target/83399
! 	* config/rs6000/rs6000.c (print_operand) <'y'>: Use
! 	VECTOR_MEM_ALTIVEC_OR_VSX_P.
! 	* config/rs6000/vsx.md (*vsx_le_perm_load_<mode> for VSX_D): Use
! 	indexed_or_indirect_operand predicate.
! 	(*vsx_le_perm_load_<mode> for VSX_W): Likewise.
! 	(*vsx_le_perm_load_v8hi): Likewise.
! 	(*vsx_le_perm_load_v16qi): Likewise.
! 	(*vsx_le_perm_store_<mode> for VSX_D): Likewise.
! 	(*vsx_le_perm_store_<mode> for VSX_W): Likewise.
! 	(*vsx_le_perm_store_v8hi): Likewise.
! 	(*vsx_le_perm_store_v16qi): Likewise.
! 	(eight unnamed splitters): Likewise.
  
! 2018-01-10  Peter Bergner  <bergner@vnet.ibm.com>
  
! 	* config/rs6000/x86intrin.h: Change #warning to #error. Update message.
! 	* config/rs6000/emmintrin.h: Likewise.
! 	* config/rs6000/mmintrin.h: Likewise.
! 	* config/rs6000/xmmintrin.h: Likewise.
  
! 2018-01-10  David Malcolm  <dmalcolm@redhat.com>
  
! 	PR c++/43486
! 	* tree-core.h: Document EXPR_LOCATION_WRAPPER_P's usage of
! 	"public_flag".
! 	* tree.c (tree_nop_conversion): Return true for location wrapper
! 	nodes.
! 	(maybe_wrap_with_location): New function.
! 	(selftest::check_strip_nops): New function.
! 	(selftest::test_location_wrappers): New function.
! 	(selftest::tree_c_tests): Call it.
! 	* tree.h (STRIP_ANY_LOCATION_WRAPPER): New macro.
! 	(maybe_wrap_with_location): New decl.
! 	(EXPR_LOCATION_WRAPPER_P): New macro.
! 	(location_wrapper_p): New inline function.
! 	(tree_strip_any_location_wrapper): New inline function.
  
! 2018-01-10  H.J. Lu  <hongjiu.lu@intel.com>
  
! 	PR target/83735
! 	* config/i386/i386.c (ix86_compute_frame_layout): Always adjust
! 	stack_realign_offset for the largest alignment of stack slot
! 	actually used.
! 	(ix86_find_max_used_stack_alignment): New function.
! 	(ix86_finalize_stack_frame_flags): Use it.  Set
! 	max_used_stack_alignment if we don't realign stack.
! 	* config/i386/i386.h (machine_function): Add
! 	max_used_stack_alignment.
  
! 2018-01-10  Christophe Lyon  <christophe.lyon@linaro.org>
  
! 	* config/arm/arm.opt (-mbranch-cost): New option.
! 	* config/arm/arm.h (BRANCH_COST): Take arm_branch_cost into
! 	account.
  
! 2018-01-10  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	PR target/83629
! 	* config/rs6000/rs6000.md (load_toc_v4_PIC_2, load_toc_v4_PIC_3b,
! 	load_toc_v4_PIC_3c): Wrap const term in CONST RTL.
  
! 2018-01-10  Richard Biener  <rguenther@suse.de>
  
! 	PR debug/83765
! 	* dwarf2out.c (gen_subprogram_die): Hoist old_die && declaration
! 	early out so it also covers the case where we have a non-NULL
! 	origin.
  
! 2018-01-10  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	PR tree-optimization/83753
! 	* tree-vect-stmts.c (get_group_load_store_type): Use VMAT_CONTIGUOUS
! 	for non-strided grouped accesses if the number of elements is 1.
  
! 2018-01-10  Jan Hubicka  <hubicka@ucw.cz>
  
! 	PR target/81616
! 	* i386.c (ix86_vectorize_builtin_gather): Check TARGET_USE_GATHER.
! 	* i386.h (TARGET_USE_GATHER): Define.
! 	* x86-tune.def (X86_TUNE_USE_GATHER): New.
  
! 2018-01-10  Martin Liska  <mliska@suse.cz>
  
! 	PR bootstrap/82831
! 	* basic-block.h (CLEANUP_NO_PARTITIONING): New define.
! 	* bb-reorder.c (pass_reorder_blocks::execute): Do not clean up
! 	partitioning.
! 	* cfgcleanup.c (try_optimize_cfg): Fix up partitioning if
! 	CLEANUP_NO_PARTITIONING is not set.
  
! 2018-01-10  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* doc/rtl.texi: Remove documentation of (const ...) wrappers
! 	for vectors, as a partial revert of r254296.
! 	* rtl.h (const_vec_p): Delete.
! 	(const_vec_duplicate_p): Don't test for vector CONSTs.
! 	(unwrap_const_vec_duplicate, const_vec_series_p): Likewise.
! 	* expmed.c (make_tree): Likewise.
  
! 	Revert:
! 	* common.md (E, F): Use CONSTANT_P instead of checking for
! 	CONST_VECTOR.
! 	* emit-rtl.c (gen_lowpart_common): Use const_vec_p instead of
! 	checking for CONST_VECTOR.
  
! 2018-01-09  Jan Hubicka  <hubicka@ucw.cz>
  
! 	PR middle-end/83575
! 	* predict.c (force_edge_cold): Handle in more sane way edges
! 	with no prediction.
  
! 2018-01-09  Carl Love  <cel@us.ibm.com>
  
! 	* config/rs6002/altivec.md (p8_vmrgow): Add support for V2DI, V2DF,
! 	V4SI, V4SF types.
! 	(p8_vmrgew): Add support for V2DI, V2DF, V4SF types.
! 	* config/rs6000/rs6000-builtin.def: Add definitions for FLOAT2_V2DF,
! 	VMRGEW_V2DI, VMRGEW_V2DF, VMRGEW_V4SF, VMRGOW_V4SI, VMRGOW_V4SF,
! 	VMRGOW_V2DI, VMRGOW_V2DF.  Remove definition for VMRGOW.
! 	* config/rs6000/rs6000-c.c (VSX_BUILTIN_VEC_FLOAT2,
! 	P8V_BUILTIN_VEC_VMRGEW, P8V_BUILTIN_VEC_VMRGOW):  Add definitions.
! 	* config/rs6000/rs6000-protos.h: Add extern defition for
! 	rs6000_generate_float2_double_code.
! 	* config/rs6000/rs6000.c (rs6000_generate_float2_double_code): Add
! 	function.
! 	* config/rs6000/vsx.md (vsx_xvcdpsp): Add define_insn.
! 	(float2_v2df): Add define_expand.
  
! 2018-01-09  Uros Bizjak  <ubizjak@gmail.com>
  
! 	PR target/83628
! 	* combine.c (force_int_to_mode) <case ASHIFT>: Use mode instead of
! 	op_mode in the force_to_mode call.
  
! 2018-01-09  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* config/aarch64/aarch64.c (aarch64_evpc_trn): Use d.perm.series_p
! 	instead of checking each element individually.
! 	(aarch64_evpc_uzp): Likewise.
! 	(aarch64_evpc_zip): Likewise.
! 	(aarch64_evpc_ext): Likewise.
! 	(aarch64_evpc_rev): Likewise.
! 	(aarch64_evpc_dup): Test the encoding for a single duplicated element,
! 	instead of checking each element individually.  Return true without
! 	generating rtl if
! 	(aarch64_vectorize_vec_perm_const): Use all_from_input_p to test
! 	whether all selected elements come from the same input, instead of
! 	checking each element individually.  Remove calls to gen_rtx_REG,
! 	start_sequence and end_sequence and instead assert that no rtl is
! 	generated.
  
! 2018-01-09  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* config/aarch64/aarch64.c (aarch64_legitimate_constant_p): Fix
! 	order of HIGH and CONST checks.
  
! 2018-01-09  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* tree-vect-stmts.c (permute_vec_elements): Create a fresh variable
! 	if the destination isn't an SSA_NAME.
  
! 2018-01-09  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/83668
! 	* graphite.c (canonicalize_loop_closed_ssa): Add edge argument,
! 	move prologue...
! 	(canonicalize_loop_form): ... here, renamed from ...
! 	(canonicalize_loop_closed_ssa_form): ... this and amended to
! 	swap successor edges for loop exit blocks to make us use
! 	the RPO order we need for initial schedule generation.
  
! 2018-01-09  Joseph Myers  <joseph@codesourcery.com>
  
! 	PR tree-optimization/64811
! 	* match.pd: When optimizing comparisons with Inf, avoid
! 	introducing or losing exceptions from comparisons with NaN.
  
! 2018-01-09  Martin Liska  <mliska@suse.cz>
  
! 	PR sanitizer/82517
! 	* asan.c (shadow_mem_size): Add gcc_assert.
  
! 2018-01-09  Georg-Johann Lay  <avr@gjlay.de>
  
! 	Don't save registers in main().
  
! 	PR target/83738
! 	* doc/invoke.texi (AVR Options) [-mmain-is-OS_task]: Document it.
! 	* config/avr/avr.opt (-mmain-is-OS_task): New target option.
! 	* config/avr/avr.c (avr_set_current_function): Don't error if
! 	naked, OS_task or OS_main are specified at the same time.
! 	(avr_function_ok_for_sibcall): Don't disable sibcalls for OS_task,
! 	OS_main.
! 	(avr_insert_attributes) [-mmain-is-OS_task] <main>: Add OS_task
! 	attribute.
! 	* common/config/avr/avr-common.c (avr_option_optimization_table):
! 	Switch on -mmain-is-OS_task for optimizing compilations.
  
! 2018-01-09  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/83572
! 	* graphite.c: Include cfganal.h.
! 	(graphite_transform_loops): Connect infinite loops to exit
! 	and remove fake edges at the end.
  
! 2018-01-09  Jan Hubicka  <hubicka@ucw.cz>
  
! 	* ipa-inline.c (edge_badness): Revert accidental checkin.
  
! 2018-01-09  Jan Hubicka  <hubicka@ucw.cz>
  
! 	PR ipa/80763
! 	* ipa-comdats.c (set_comdat_group): Only set comdat group of real
! 	symbols; not inline clones.
  
! 2018-01-09  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/83507
! 	* modulo-sched.c (schedule_reg_moves): Punt if we'd need to move
! 	hard registers.  Formatting fixes.
  
! 	PR preprocessor/83722
! 	* gcc.c (try_generate_repro): Pass
! 	&temp_stderr_files[RETRY_ICE_ATTEMPTS - 1] rather than
! 	&temp_stdout_files[RETRY_ICE_ATTEMPTS - 1] as last argument to
! 	do_report_bug.
  
! 2018-01-08  Monk Chiang  <sh.chiang04@gmail.com>
! 	    Kito Cheng  <kito.cheng@gmail.com>
  
! 	* config/riscv/riscv.c (machine_function::is_leaf): Remove field.
! 	(riscv_leaf_function_p): Delete.
! 	(riscv_function_ok_for_sibcall): Return false when TARGET_SAVE_RESTORE.
  
! 2018-01-08  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
  
! 	* config/rs6000/rs6000-string.c (do_load_for_compare_from_addr): New
! 	function.
! 	(do_ifelse): New function.
! 	(do_isel): New function.
! 	(do_sub3): New function.
! 	(do_add3): New function.
! 	(do_load_mask_compare): New function.
! 	(do_overlap_load_compare): New function.
! 	(expand_compare_loop): New function.
! 	(expand_block_compare): Call expand_compare_loop() when appropriate.
! 	* config/rs6000/rs6000.opt (-mblock-compare-inline-limit): Change
! 	option description.
! 	(-mblock-compare-inline-loop-limit): New option.
  
! 2018-01-08  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
  
! 	PR target/83677
! 	* config/rs6000/altivec.md (*altivec_vpermr_<mode>_internal):
! 	Reverse order of second and third operands in first alternative.
! 	* config/rs6000/rs6000.c (rs6000_expand_vector_set): Reverse order
! 	of first and second elements in UNSPEC_VPERMR vector.
! 	(altivec_expand_vec_perm_le): Likewise.
  
! 2018-01-08  Jeff Law  <law@redhat.com>
  
! 	PR rtl-optimizatin/81308
! 	* tree-switch-conversion.c (cfg_altered): New file scoped static.
! 	(process_switch): If group_case_labels makes a change, then set
! 	cfg_altered.
! 	(pass_convert_switch::execute): If a switch is converted, then
! 	set cfg_altered.  Return TODO_cfg_cleanup if cfg_altered is true.
  
! 	PR rtl-optimization/81308
! 	* recog.c (split_all_insns): Conditionally cleanup the CFG after
! 	splitting insns.
  
! 2018-01-08  Vidya Praveen  <vidyapraveen@arm.com>
  
! 	PR target/83663 - Revert r255946
! 	* config/aarch64/aarch64.c (aarch64_expand_vector_init): Modify code
! 	generation for cases where splatting a value is not useful.
! 	* simplify-rtx.c (simplify_ternary_operation): Simplify vec_merge
! 	across a vec_duplicate and a paradoxical subreg forming a vector
! 	mode to a vec_concat.
  
! 2018-01-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/arm/t-aprofile (MULTILIB_MATCHES): Add mapping rules for
! 	-march=armv8.3-a variants.
! 	* config/arm/t-multilib: Likewise.
! 	* config/arm/t-arm-elf: Likewise.  Handle dotprod extension.
  
! 2018-01-08  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
  
! 	* config/rs6000/rs6000.md (cceq_ior_compare): Remove * so I can use it
! 	to generate rtl.
! 	(cceq_ior_compare_complement): Give it a name so I can use it, and
! 	change boolean_or_operator predicate to boolean_operator so it can
! 	be used to generate a crand.
! 	(eqne): New code iterator.
! 	(bd/bd_neg): New code_attrs.
! 	(<bd>_<mode>): New name for ctr<mode>_internal[12] now combined into
! 	a single define_insn.
! 	(<bd>tf_<mode>): A new insn pattern for the conditional form branch
! 	decrement (bdnzt/bdnzf/bdzt/bdzf).
! 	* config/rs6000/rs6000.c (rs6000_legitimate_combined_insn): Updated
! 	with the new names of the branch decrement patterns, and added the
! 	names of the branch decrement conditional patterns.
  
! 2018-01-08  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/83563
! 	* graphite.c (canonicalize_loop_closed_ssa_form): Reset the SCEV
! 	cache.
  
! 2018-01-08  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/83713
! 	* convert.c (do_narrow): Properly guard TYPE_OVERFLOW_WRAPS checks.
  
! 2018-01-08  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/83685
! 	* tree-ssa-pre.c (create_expression_by_pieces): Do not insert
! 	references to abnormals.
  
! 2018-01-08  Richard Biener  <rguenther@suse.de>
  
! 	PR lto/83719
! 	* dwarf2out.c (output_indirect_strings): Handle empty
! 	skeleton_debug_str_hash.
! 	(dwarf2out_early_finish): Index strings for -gsplit-dwarf.
  
! 2018-01-08  Claudiu Zissulescu  <claziss@synopsys.com>
  
! 	* config/arc/arc.c (TARGET_TRAMPOLINE_ADJUST_ADDRESS): Delete.
! 	(emit_store_direct): Likewise.
! 	(arc_trampoline_adjust_address): Likewise.
! 	(arc_asm_trampoline_template): New function.
! 	(arc_initialize_trampoline): Use asm_trampoline_template.
! 	(TARGET_ASM_TRAMPOLINE_TEMPLATE): Define.
! 	* config/arc/arc.h (TRAMPOLINE_SIZE): Adjust to 16.
! 	* config/arc/arc.md (flush_icache): Delete pattern.
  
! 2018-01-08  Claudiu Zissulescu  <claziss@synopsys.com>
  
! 	* config/arc/arc-c.def (__ARC_UNALIGNED__): New define.
! 	* config/arc/arc.h (STRICT_ALIGNMENT): Control this macro using
! 	munaligned-access.
  
! 2018-01-08  Sebastian Huber  <sebastian.huber@embedded-brains.de>
  
! 	PR target/83681
! 	* config/epiphany/epiphany.h (make_pass_mode_switch_use): Guard
! 	by not USED_FOR_TARGET.
! 	(make_pass_resolve_sw_modes): Likewise.
  
! 2018-01-08  Sebastian Huber  <sebastian.huber@embedded-brains.de>
  
! 	* config/nios2/nios2.h (nios2_section_threshold): Guard by not
! 	USED_FOR_TARGET.
  
! 2018-01-08  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/83580
! 	* tree-data-ref.c (split_constant_offset): Remove STRIP_NOPS.
  
! 2018-01-08  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/83517
! 	* match.pd ((t * 2) / 2) -> t): Add missing :c.
  
! 2018-01-06  Aldy Hernandez  <aldyh@redhat.com>
  
! 	PR middle-end/81897
! 	* tree-ssa-uninit.c (compute_control_dep_chain): Do not bail on
! 	basic blocks with a small number of successors.
! 	(convert_control_dep_chain_into_preds): Improve handling of
! 	forwarder blocks.
! 	(dump_predicates): Split apart into...
! 	(dump_pred_chain): ...here...
! 	(dump_pred_info): ...and here.
! 	(can_one_predicate_be_invalidated_p): Add debugging printfs.
! 	(can_chain_union_be_invalidated_p): Improve check for invalidation
! 	of paths.
! 	(uninit_uses_cannot_happen): Avoid unnecessary if
! 	convert_control_dep_chain_into_preds yielded nothing.
  
! 2018-01-06  Martin Sebor  <msebor@redhat.com>
  
! 	PR tree-optimization/83640
! 	* gimple-ssa-warn-restrict.c (builtin_access::builtin_access): Avoid
! 	subtracting negative offset from size.
! 	(builtin_access::overlap): Adjust offset bounds of the access to fall
! 	within the size of the object if possible.
  
! 2018-01-06  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	PR rtl-optimization/83699
! 	* expmed.c (extract_bit_field_1): Restrict the vector usage of
! 	extract_bit_field_as_subreg to cases in which the extracted
! 	value is also a vector.
  
! 	* lra-constraints.c (process_alt_operands): Test for the equivalence
! 	substitutions when detecting a possible reload cycle.
  
! 2018-01-06  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR debug/83480
! 	* toplev.c (process_options): Don't enable debug_nonbind_markers_p
! 	by default if flag_selective_schedling{,2}.  Formatting fixes.
  
! 	PR rtl-optimization/83682
! 	* rtl.h (const_vec_duplicate_p): Only return true for VEC_DUPLICATE
! 	if it has non-VECTOR_MODE element mode.
! 	(vec_duplicate_p): Likewise.
  
! 	PR middle-end/83694
! 	* cfgexpand.c (expand_debug_expr): Punt if mode1 is VOIDmode
! 	and bitsize might be greater than MAX_BITSIZE_MODE_ANY_INT.
  
! 2018-01-05  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/83604
! 	* config/i386/i386-builtin.def
! 	(__builtin_ia32_vgf2p8affineinvqb_v64qi,
! 	__builtin_ia32_vgf2p8affineqb_v64qi, __builtin_ia32_vgf2p8mulb_v64qi):
! 	Require also OPTION_MASK_ISA_AVX512F in addition to
! 	OPTION_MASK_ISA_GFNI.
! 	(__builtin_ia32_vgf2p8affineinvqb_v16qi_mask,
! 	__builtin_ia32_vgf2p8affineqb_v16qi_mask): Require
! 	OPTION_MASK_ISA_AVX512VL instead of OPTION_MASK_ISA_SSE in addition
! 	to OPTION_MASK_ISA_GFNI.
! 	(__builtin_ia32_vgf2p8mulb_v32qi_mask): Require
! 	OPTION_MASK_ISA_AVX512VL in addition to OPTION_MASK_ISA_GFNI and
! 	OPTION_MASK_ISA_AVX512BW.
! 	(__builtin_ia32_vgf2p8mulb_v16qi_mask): Require
! 	OPTION_MASK_ISA_AVX512VL instead of OPTION_MASK_ISA_AVX512BW in
! 	addition to OPTION_MASK_ISA_GFNI.
! 	(__builtin_ia32_vgf2p8affineinvqb_v16qi,
! 	__builtin_ia32_vgf2p8affineqb_v16qi, __builtin_ia32_vgf2p8mulb_v16qi):
! 	Require OPTION_MASK_ISA_SSE2 instead of OPTION_MASK_ISA_SSE in addition
! 	to OPTION_MASK_ISA_GFNI.
! 	* config/i386/i386.c (def_builtin): Change to builtin isa/isa2 being
! 	a requirement for all ISAs rather than any of them with a few
! 	exceptions.
! 	(ix86_add_new_builtins): Clear OPTION_MASK_ISA_64BIT from isa before
! 	processing.
! 	(ix86_expand_builtin): Require all ISAs from builtin's isa and isa2
! 	bitmasks to be enabled with 3 exceptions, instead of requiring any
! 	enabled ISA with lots of exceptions.
! 	* config/i386/sse.md (vgf2p8affineinvqb_<mode><mask_name>,
! 	vgf2p8affineqb_<mode><mask_name>, vgf2p8mulb_<mode><mask_name>):
! 	Change avx512bw in isa attribute to avx512f.
! 	* config/i386/sgxintrin.h: Add license boilerplate.
! 	* config/i386/vaesintrin.h: Likewise.  Fix macro spelling __AVX512F
! 	to __AVX512F__ and __AVX512VL to __AVX512VL__.
! 	(_mm256_aesdec_epi128, _mm256_aesdeclast_epi128, _mm256_aesenc_epi128,
! 	_mm256_aesenclast_epi128): Enable temporarily avx if __AVX__ is not
! 	defined.
! 	* config/i386/gfniintrin.h (_mm_gf2p8mul_epi8,
! 	_mm_gf2p8affineinv_epi64_epi8, _mm_gf2p8affine_epi64_epi8): Enable
! 	temporarily sse2 rather than sse if not enabled already.
  
! 	PR target/83604
! 	* config/i386/sse.md (VI248_VLBW): Rename to ...
! 	(VI248_AVX512VL): ... this.  Don't guard V32HI with TARGET_AVX512BW.
! 	(vpshrd_<mode><mask_name>, vpshld_<mode><mask_name>,
! 	vpshrdv_<mode>, vpshrdv_<mode>_mask, vpshrdv_<mode>_maskz,
! 	vpshrdv_<mode>_maskz_1, vpshldv_<mode>, vpshldv_<mode>_mask,
! 	vpshldv_<mode>_maskz, vpshldv_<mode>_maskz_1): Use VI248_AVX512VL
! 	mode iterator instead of VI248_VLBW.
  
! 2018-01-05  Jan Hubicka  <hubicka@ucw.cz>
  
! 	* ipa-fnsummary.c (record_modified_bb_info): Add OP.
! 	(record_modified): Skip clobbers; add debug output.
! 	(param_change_prob): Use sreal frequencies.
  
! 2018-01-05  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* tree-vect-data-refs.c (vect_compute_data_ref_alignment): Don't
! 	punt for user-aligned variables.
  
! 2018-01-05  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* tree-chrec.c (chrec_contains_symbols): Return true for
! 	POLY_INT_CST.
  
! 2018-01-05  Sudakshina Das  <sudi.das@arm.com>
  
! 	PR target/82439
! 	* simplify-rtx.c (simplify_relational_operation_1): Add simplifications
! 	of (x|y) == x for BICS pattern.
  
! 2018-01-05  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/83605
! 	* gimple-ssa-strength-reduction.c: Include tree-eh.h.
! 	(find_candidates_dom_walker::before_dom_children): Ignore stmts that
! 	can throw.
  
! 2018-01-05  Sebastian Huber  <sebastian.huber@embedded-brains.de>
  
! 	* config.gcc (epiphany-*-elf*): Add (epiphany-*-rtems*) configuration.
! 	* config/epiphany/rtems.h: New file.
  
! 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
! 	    Uros Bizjak  <ubizjak@gmail.com>
  
! 	PR target/83554
! 	* config/i386/i386.md (*<rotate_insn>hi3_1 splitter): Use
! 	QIreg_operand instead of register_operand predicate.
! 	* config/i386/i386.c (ix86_rop_should_change_byte_p,
! 	set_rop_modrm_reg_bits, ix86_mitigate_rop): Use -mmitigate-rop in
! 	comments instead of -fmitigate[-_]rop.
  
! 2018-01-04  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
  
! 	PR bootstrap/81926
! 	* cgraphunit.c (symbol_table::compile): Switch to text_section
! 	before calling assembly_start debug hook.
! 	* run-rtl-passes.c (run_rtl_passes): Likewise.
! 	Include output.h.
  
! 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* tree-vrp.c (extract_range_from_binary_expr_1): Check
! 	range_int_cst_p rather than !symbolic_range_p before calling
! 	extract_range_from_multiplicative_op_1.
  
! 2018-01-04  Jeff Law  <law@redhat.com>
  
! 	* tree-ssa-math-opts.c (execute_cse_reciprocals_1): Remove
! 	redundant test in assertion.
  
! 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* doc/rtl.texi: Document machine_mode wrapper classes.
  
! 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* fold-const.c (fold_ternary_loc): Check tree_fits_uhwi_p before
! 	using tree_to_uhwi.
  
! 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* tree-ssa-forwprop.c (is_combined_permutation_identity): Allow
! 	the VEC_PERM_EXPR fold to fail.
  
! 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR debug/83585
! 	* bb-reorder.c (insert_section_boundary_note): Set has_bb_partition
! 	to switched_sections.
  
! 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	PR target/83680
! 	* config/arm/arm.c (arm_vectorize_vec_perm_const): Fix inverted
! 	test for d.testing.
  
! 2018-01-04  Peter Bergner  <bergner@vnet.ibm.com>
  
! 	PR target/83387
! 	* config/rs6000/rs6000.c (rs6000_discover_homogeneous_aggregate): Do not
! 	allow arguments in FP registers if TARGET_HARD_FLOAT is false.
  
! 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR debug/83666
! 	* cfgexpand.c (expand_debug_expr) <case BIT_FIELD_REF>: Punt if mode
! 	is BLKmode and bitpos not zero or mode change is needed.
  
! 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	PR target/83675
! 	* config/sparc/sparc.c (sparc_vectorize_vec_perm_const): Require
! 	TARGET_VIS2.
  
! 2018-01-04  Uros Bizjak  <ubizjak@gmail.com>
  
! 	PR target/83628
! 	* config/alpha/alpha.md (*sadd<modesuffix>): Use ASHIFT
! 	instead of MULT rtx.  Update all corresponding splitters.
! 	(*saddl_se): Ditto.
! 	(*ssub<modesuffix>): Ditto.
! 	(*ssubl_se): Ditto.
! 	(*cmp_sadd_di): Update split patterns.
! 	(*cmp_sadd_si): Ditto.
! 	(*cmp_sadd_sidi): Ditto.
! 	(*cmp_ssub_di): Ditto.
! 	(*cmp_ssub_si): Ditto.
! 	(*cmp_ssub_sidi): Ditto.
! 	* config/alpha/predicates.md (const23_operand): New predicate.
! 	* config/alpha/alpha.c (alpha_rtx_costs) [PLUS, MINUS]:
! 	Look for ASHIFT, not MULT inner operand.
! 	(alpha_split_conditional_move): Update for *sadd<modesuffix> change.
  
! 2018-01-04  Martin Liska  <mliska@suse.cz>
  
! 	PR gcov-profile/83669
! 	* gcov.c (output_intermediate_file): Add version to intermediate
! 	gcov file.
! 	* doc/gcov.texi: Document new field 'version' in intermediate
! 	file format. Fix location of '-k' option of gcov command.
  
! 2018-01-04  Martin Liska  <mliska@suse.cz>
  
! 	PR ipa/82352
! 	* ipa-icf.c (sem_function::merge): Do not cross comdat boundary.
  
! 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
  
! 	* gimple-ssa-sprintf.c (parse_directive): Cast second dir.len to uhwi.
  
! 2018-01-03  Martin Sebor  <msebor@redhat.com>
  
! 	PR tree-optimization/83655
! 	* gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call): Avoid
! 	checking calls with invalid arguments.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* tree-vect-stmts.c (vect_get_store_rhs): New function.
! 	(vectorizable_mask_load_store): Delete.
! 	(vectorizable_call): Return false for masked loads and stores.
! 	(vectorizable_store): Handle IFN_MASK_STORE.  Use vect_get_store_rhs
! 	instead of gimple_assign_rhs1.
! 	(vectorizable_load): Handle IFN_MASK_LOAD.
! 	(vect_transform_stmt): Don't set is_store for call_vec_info_type.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* tree-vect-stmts.c (vect_build_gather_load_calls): New function,
! 	split out from..,
! 	(vectorizable_mask_load_store): ...here.
! 	(vectorizable_load): ...and here.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* tree-vect-stmts.c (vect_build_all_ones_mask)
! 	(vect_build_zero_merge_argument): New functions, split out from...
! 	(vectorizable_load): ...here.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* tree-vect-stmts.c (vect_check_store_rhs): New function,
! 	split out from...
! 	(vectorizable_mask_load_store): ...here.
! 	(vectorizable_store): ...and here.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* tree-vect-stmts.c (vect_check_load_store_mask): New function,
! 	split out from...
! 	(vectorizable_mask_load_store): ...here.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* tree-vectorizer.h (vec_load_store_type): Moved from tree-vec-stmts.c
! 	(vect_model_store_cost): Take a vec_load_store_type instead of a
! 	vect_def_type.
! 	* tree-vect-stmts.c (vec_load_store_type): Move to tree-vectorizer.h.
! 	(vect_model_store_cost): Take a vec_load_store_type instead of a
! 	vect_def_type.
! 	(vectorizable_mask_load_store): Update accordingly.
! 	(vectorizable_store): Likewise.
! 	* tree-vect-slp.c (vect_analyze_slp_cost_1): Update accordingly.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* tree-vect-loop.c (vect_transform_loop): Stub out scalar
! 	IFN_MASK_LOAD calls here rather than...
! 	* tree-vect-stmts.c (vectorizable_mask_load_store): ...here.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* expmed.c (extract_bit_field_1): For vector extracts,
! 	fall back to extract_bit_field_as_subreg if vec_extract
! 	isn't available.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* lra-spills.c (pseudo_reg_slot_compare): Sort slots by whether
! 	they are variable or constant sized.
! 	(assign_stack_slot_num_and_sort_pseudos): Don't reuse variable-sized
! 	slots for constant-sized data.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* tree-vect-patterns.c (vect_recog_mask_conversion_pattern): When
! 	handling COND_EXPRs with boolean comparisons, try to find a better
! 	basis for the mask type than the boolean itself.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* doc/rtl.texi (MAX_BITSIZE_MODE_ANY_MODE): Describe how the default
! 	is calculated and how it can be overridden.
! 	* genmodes.c (max_bitsize_mode_any_mode): New variable.
! 	(create_modes): Initialize it from MAX_BITSIZE_MODE_ANY_MODE,
! 	if defined.
! 	(emit_max_int): Use it to set the output MAX_BITSIZE_MODE_ANY_MODE,
! 	if nonzero.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* config/aarch64/aarch64-protos.h (aarch64_output_simd_mov_immediate):
! 	Remove the mode argument.
! 	(aarch64_simd_valid_immediate): Remove the mode and inverse
! 	arguments.
! 	* config/aarch64/iterators.md (bitsize): New iterator.
! 	* config/aarch64/aarch64-simd.md (*aarch64_simd_mov<mode>, and<mode>3)
! 	(ior<mode>3): Update calls to aarch64_output_simd_mov_immediate.
! 	* config/aarch64/constraints.md (Do, Db, Dn): Update calls to
! 	aarch64_simd_valid_immediate.
! 	* config/aarch64/predicates.md (aarch64_reg_or_orr_imm): Likewise.
! 	(aarch64_reg_or_bic_imm): Likewise.
! 	* config/aarch64/aarch64.c (simd_immediate_info): Replace mvn
! 	with an insn_type enum and msl with a modifier_type enum.
! 	Replace element_width with a scalar_mode.  Change the shift
! 	to unsigned int.  Add constructors for scalar_float_mode and
! 	scalar_int_mode elements.
! 	(aarch64_vect_float_const_representable_p): Delete.
! 	(aarch64_can_const_movi_rtx_p)
! 	(aarch64_simd_scalar_immediate_valid_for_move)
! 	(aarch64_simd_make_constant): Update call to
! 	aarch64_simd_valid_immediate.
! 	(aarch64_advsimd_valid_immediate_hs): New function.
! 	(aarch64_advsimd_valid_immediate): Likewise.
! 	(aarch64_simd_valid_immediate): Remove mode and inverse
! 	arguments.  Rewrite to use the above.  Use const_vec_duplicate_p
! 	to detect duplicated constants and use aarch64_float_const_zero_rtx_p
! 	and aarch64_float_const_representable_p on the result.
! 	(aarch64_output_simd_mov_immediate): Remove mode argument.
! 	Update call to aarch64_simd_valid_immediate and use of
! 	simd_immediate_info.
! 	(aarch64_output_scalar_simd_mov_immediate): Update call
! 	accordingly.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* machmode.h (mode_precision): Prefix with CONST_MODE_PRECISION.
! 	(mode_nunits): Likewise CONST_MODE_NUNITS.
! 	* machmode.def (ADJUST_NUNITS): Document.
! 	* genmodes.c (mode_data::need_nunits_adj): New field.
! 	(blank_mode): Update accordingly.
! 	(adj_nunits): New variable.
! 	(print_maybe_const_decl): Replace CATEGORY with a NEEDS_ADJ
! 	parameter.
! 	(emit_mode_size_inline): Set need_bytesize_adj for all modes
! 	listed in adj_nunits.
! 	(emit_mode_nunits_inline): Set need_nunits_adj for all modes
! 	listed in adj_nunits.  Don't emit case statements for such modes.
! 	(emit_insn_modes_h): Emit definitions of CONST_MODE_NUNITS
! 	and CONST_MODE_PRECISION.  Make CONST_MODE_SIZE expand to
! 	nothing if adj_nunits is nonnull.
! 	(emit_mode_precision, emit_mode_nunits): Use print_maybe_const_decl.
! 	(emit_mode_unit_size, emit_mode_base_align, emit_mode_ibit)
! 	(emit_mode_fbit): Update use of print_maybe_const_decl.
! 	(emit_move_size): Likewise.  Treat the array as non-const
! 	if adj_nunits.
! 	(emit_mode_adjustments): Handle adj_nunits.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* machmode.def (VECTOR_MODES_WITH_PREFIX): Document.
! 	* genmodes.c (VECTOR_MODES_WITH_PREFIX): New macro.
! 	(VECTOR_MODES): Use it.
! 	(make_vector_modes): Take the prefix as an argument.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* mode-classes.def (MODE_VECTOR_BOOL): New mode class.
! 	* machmode.h (INTEGRAL_MODE_P, VECTOR_MODE_P): Return true
! 	for MODE_VECTOR_BOOL.
! 	* machmode.def (VECTOR_BOOL_MODE): Document.
! 	* genmodes.c (VECTOR_BOOL_MODE): New macro.
! 	(make_vector_bool_mode): New function.
! 	(complete_mode, emit_mode_wider, emit_mode_adjustments): Handle
! 	MODE_VECTOR_BOOL.
! 	* lto-streamer-in.c (lto_input_mode_table): Likewise.
! 	* rtx-vector-builder.c (rtx_vector_builder::find_cached_value):
! 	Likewise.
! 	* stor-layout.c (int_mode_for_mode): Likewise.
! 	* tree.c (build_vector_type_for_mode): Likewise.
! 	* varasm.c (output_constant_pool_2): Likewise.
! 	* emit-rtl.c (init_emit_once): Make sure that CONST1_RTX (BImode) and
! 	CONSTM1_RTX (BImode) are the same thing.  Initialize const_tiny_rtx
! 	for MODE_VECTOR_BOOL.
! 	* expr.c (expand_expr_real_1): Use VECTOR_MODE_P instead of a list
! 	of mode class checks.
! 	* tree-vect-generic.c (expand_vector_operation): Use VECTOR_MODE_P
! 	instead of a list of mode class checks.
! 	(expand_vector_scalar_condition): Likewise.
! 	(type_for_widest_vector_mode): Handle BImode as an inner mode.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* machmode.h (mode_size): Change from unsigned short to
! 	poly_uint16_pod.
! 	(mode_to_bytes): Return a poly_uint16 rather than an unsigned short.
! 	(GET_MODE_SIZE): Return a constant if ONLY_FIXED_SIZE_MODES,
! 	or if measurement_type is not polynomial.
! 	(fixed_size_mode::includes_p): Check for constant-sized modes.
! 	* genmodes.c (emit_mode_size_inline): Make mode_size_inline
! 	return a poly_uint16 rather than an unsigned short.
! 	(emit_mode_size): Change the type of mode_size from unsigned short
! 	to poly_uint16_pod.  Use ZERO_COEFFS for the initializer.
! 	(emit_mode_adjustments): Cope with polynomial vector sizes.
! 	* lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
! 	for GET_MODE_SIZE.
! 	* lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
! 	for GET_MODE_SIZE.
! 	* auto-inc-dec.c (try_merge): Treat GET_MODE_SIZE as polynomial.
! 	* builtins.c (expand_ifn_atomic_compare_exchange_into_call): Likewise.
! 	* caller-save.c (setup_save_areas): Likewise.
! 	(replace_reg_with_saved_mem): Likewise.
! 	* calls.c (emit_library_call_value_1): Likewise.
! 	* combine-stack-adj.c (combine_stack_adjustments_for_block): Likewise.
! 	* combine.c (simplify_set, make_extraction, simplify_shift_const_1)
! 	(gen_lowpart_for_combine): Likewise.
! 	* convert.c (convert_to_integer_1): Likewise.
! 	* cse.c (equiv_constant, cse_insn): Likewise.
! 	* cselib.c (autoinc_split, cselib_hash_rtx): Likewise.
! 	(cselib_subst_to_values): Likewise.
! 	* dce.c (word_dce_process_block): Likewise.
! 	* df-problems.c (df_word_lr_mark_ref): Likewise.
! 	* dwarf2cfi.c (init_one_dwarf_reg_size): Likewise.
! 	* dwarf2out.c (multiple_reg_loc_descriptor, mem_loc_descriptor)
! 	(concat_loc_descriptor, concatn_loc_descriptor, loc_descriptor)
! 	(rtl_for_decl_location): Likewise.
! 	* emit-rtl.c (gen_highpart, widen_memory_access): Likewise.
! 	* expmed.c (extract_bit_field_1, extract_integral_bit_field): Likewise.
! 	* expr.c (emit_group_load_1, clear_storage_hints): Likewise.
! 	(emit_move_complex, emit_move_multi_word, emit_push_insn): Likewise.
! 	(expand_expr_real_1): Likewise.
! 	* function.c (assign_parm_setup_block_p, assign_parm_setup_block)
! 	(pad_below): Likewise.
! 	* gimple-fold.c (optimize_atomic_compare_exchange_p): Likewise.
! 	* gimple-ssa-store-merging.c (rhs_valid_for_store_merging_p): Likewise.
! 	* ira.c (get_subreg_tracking_sizes): Likewise.
! 	* ira-build.c (ira_create_allocno_objects): Likewise.
! 	* ira-color.c (coalesced_pseudo_reg_slot_compare): Likewise.
! 	(ira_sort_regnos_for_alter_reg): Likewise.
! 	* ira-costs.c (record_operand_costs): Likewise.
! 	* lower-subreg.c (interesting_mode_p, simplify_gen_subreg_concatn)
! 	(resolve_simple_move): Likewise.
! 	* lra-constraints.c (get_reload_reg, operands_match_p): Likewise.
! 	(process_addr_reg, simplify_operand_subreg, curr_insn_transform)
! 	(lra_constraints): Likewise.
! 	(CONST_POOL_OK_P): Reject variable-sized modes.
! 	* lra-spills.c (slot, assign_mem_slot, pseudo_reg_slot_compare)
! 	(add_pseudo_to_slot, lra_spill): Likewise.
! 	* omp-low.c (omp_clause_aligned_alignment): Likewise.
! 	* optabs-query.c (get_best_extraction_insn): Likewise.
! 	* optabs-tree.c (expand_vec_cond_expr_p): Likewise.
! 	* optabs.c (expand_vec_perm_var, expand_vec_cond_expr): Likewise.
! 	(expand_mult_highpart, valid_multiword_target_p): Likewise.
! 	* recog.c (offsettable_address_addr_space_p): Likewise.
! 	* regcprop.c (maybe_mode_change): Likewise.
! 	* reginfo.c (choose_hard_reg_mode, record_subregs_of_mode): Likewise.
! 	* regrename.c (build_def_use): Likewise.
! 	* regstat.c (dump_reg_info): Likewise.
! 	* reload.c (complex_word_subreg_p, push_reload, find_dummy_reload)
! 	(find_reloads, find_reloads_subreg_address): Likewise.
! 	* reload1.c (eliminate_regs_1): Likewise.
! 	* rtlanal.c (for_each_inc_dec_find_inc_dec, rtx_cost): Likewise.
! 	* simplify-rtx.c (avoid_constant_pool_reference): Likewise.
! 	(simplify_binary_operation_1, simplify_subreg): Likewise.
! 	* targhooks.c (default_function_arg_padding): Likewise.
! 	(default_hard_regno_nregs, default_class_max_nregs): Likewise.
! 	* tree-cfg.c (verify_gimple_assign_binary): Likewise.
! 	(verify_gimple_assign_ternary): Likewise.
! 	* tree-inline.c (estimate_move_cost): Likewise.
! 	* tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
! 	* tree-ssa-loop-ivopts.c (add_autoinc_candidates): Likewise.
! 	(get_address_cost_ainc): Likewise.
! 	* tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
! 	(vect_supportable_dr_alignment): Likewise.
! 	* tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
! 	(vectorizable_reduction): Likewise.
! 	* tree-vect-stmts.c (vectorizable_assignment, vectorizable_shift)
! 	(vectorizable_operation, vectorizable_load): Likewise.
! 	* tree.c (build_same_sized_truth_vector_type): Likewise.
! 	* valtrack.c (cleanup_auto_inc_dec): Likewise.
! 	* var-tracking.c (emit_note_insn_var_location): Likewise.
! 	* config/arc/arc.h (ASM_OUTPUT_CASE_END): Use as_a <scalar_int_mode>.
! 	(ADDR_VEC_ALIGN): Likewise.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* machmode.h (mode_to_bits): Return a poly_uint16 rather than an
! 	unsigned short.
! 	(GET_MODE_BITSIZE): Return a constant if ONLY_FIXED_SIZE_MODES,
! 	or if measurement_type is polynomial.
! 	* calls.c (shift_return_value): Treat GET_MODE_BITSIZE as polynomial.
! 	* combine.c (make_extraction): Likewise.
! 	* dse.c (find_shift_sequence): Likewise.
! 	* dwarf2out.c (mem_loc_descriptor): Likewise.
! 	* expmed.c (store_integral_bit_field, extract_bit_field_1): Likewise.
! 	(extract_bit_field, extract_low_bits): Likewise.
! 	* expr.c (convert_move, convert_modes, emit_move_insn_1): Likewise.
! 	(optimize_bitfield_assignment_op, expand_assignment): Likewise.
! 	(store_expr_with_bounds, store_field, expand_expr_real_1): Likewise.
! 	* fold-const.c (optimize_bit_field_compare, merge_ranges): Likewise.
! 	* gimple-fold.c (optimize_atomic_compare_exchange_p): Likewise.
! 	* reload.c (find_reloads): Likewise.
! 	* reload1.c (alter_reg): Likewise.
! 	* stor-layout.c (bitwise_mode_for_mode, compute_record_mode): Likewise.
! 	* targhooks.c (default_secondary_memory_needed_mode): Likewise.
! 	* tree-if-conv.c (predicate_mem_writes): Likewise.
! 	* tree-ssa-strlen.c (handle_builtin_memcmp): Likewise.
! 	* tree-vect-patterns.c (adjust_bool_pattern): Likewise.
! 	* tree-vect-stmts.c (vectorizable_simd_clone_call): Likewise.
! 	* valtrack.c (dead_debug_insert_temp): Likewise.
! 	* varasm.c (mergeable_constant_section): Likewise.
! 	* config/sh/sh.h (LOCAL_ALIGNMENT): Use as_a <fixed_size_mode>.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* expr.c (expand_assignment): Cope with polynomial mode sizes
! 	when assigning to a CONCAT.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* machmode.h (mode_precision): Change from unsigned short to
! 	poly_uint16_pod.
! 	(mode_to_precision): Return a poly_uint16 rather than an unsigned
! 	short.
! 	(GET_MODE_PRECISION): Return a constant if ONLY_FIXED_SIZE_MODES,
! 	or if measurement_type is not polynomial.
! 	(HWI_COMPUTABLE_MODE_P): Turn into a function.  Optimize the case
! 	in which the mode is already known to be a scalar_int_mode.
! 	* genmodes.c (emit_mode_precision): Change the type of mode_precision
! 	from unsigned short to poly_uint16_pod.  Use ZERO_COEFFS for the
! 	initializer.
! 	* lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
! 	for GET_MODE_PRECISION.
! 	* lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
! 	for GET_MODE_PRECISION.
! 	* combine.c (update_rsp_from_reg_equal): Treat GET_MODE_PRECISION
! 	as polynomial.
! 	(try_combine, find_split_point, combine_simplify_rtx): Likewise.
! 	(expand_field_assignment, make_extraction): Likewise.
! 	(make_compound_operation_int, record_dead_and_set_regs_1): Likewise.
! 	(get_last_value): Likewise.
! 	* convert.c (convert_to_integer_1): Likewise.
! 	* cse.c (cse_insn): Likewise.
! 	* expr.c (expand_expr_real_1): Likewise.
! 	* lra-constraints.c (simplify_operand_subreg): Likewise.
! 	* optabs-query.c (can_atomic_load_p): Likewise.
! 	* optabs.c (expand_atomic_load): Likewise.
! 	(expand_atomic_store): Likewise.
! 	* ree.c (combine_reaching_defs): Likewise.
! 	* rtl.h (partial_subreg_p, paradoxical_subreg_p): Likewise.
! 	* rtlanal.c (nonzero_bits1, lsb_bitfield_op_p): Likewise.
! 	* tree.h (type_has_mode_precision_p): Likewise.
! 	* ubsan.c (instrument_si_overflow): Likewise.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* tree.h (TYPE_VECTOR_SUBPARTS): Turn into a function and handle
! 	polynomial numbers of units.
! 	(SET_TYPE_VECTOR_SUBPARTS): Likewise.
! 	(valid_vector_subparts_p): New function.
! 	(build_vector_type): Remove temporary shim and take the number
! 	of units as a poly_uint64 rather than an int.
! 	(build_opaque_vector_type): Take the number of units as a
! 	poly_uint64 rather than an int.
! 	* tree.c (build_vector_from_ctor): Handle polynomial
! 	TYPE_VECTOR_SUBPARTS.
! 	(type_hash_canon_hash, type_cache_hasher::equal): Likewise.
! 	(uniform_vector_p, vector_type_mode, build_vector): Likewise.
! 	(build_vector_from_val): If the number of units is variable,
! 	use build_vec_duplicate_cst for constant operands and
! 	VEC_DUPLICATE_EXPR otherwise.
! 	(make_vector_type): Remove temporary is_constant ().
! 	(build_vector_type, build_opaque_vector_type): Take the number of
! 	units as a poly_uint64 rather than an int.
! 	(check_vector_cst): Handle polynomial TYPE_VECTOR_SUBPARTS and
! 	VECTOR_CST_NELTS.
! 	* cfgexpand.c (expand_debug_expr): Likewise.
! 	* expr.c (count_type_elements, categorize_ctor_elements_1): Likewise.
! 	(store_constructor, expand_expr_real_1): Likewise.
! 	(const_scalar_mask_from_tree): Likewise.
! 	* fold-const-call.c (fold_const_reduction): Likewise.
! 	* fold-const.c (const_binop, const_unop, fold_convert_const): Likewise.
! 	(operand_equal_p, fold_vec_perm, fold_ternary_loc): Likewise.
! 	(native_encode_vector, vec_cst_ctor_to_array): Likewise.
! 	(fold_relational_const): Likewise.
! 	(native_interpret_vector): Likewise.  Change the size from an
! 	int to an unsigned int.
! 	* gimple-fold.c (gimple_fold_stmt_to_constant_1): Handle polynomial
! 	TYPE_VECTOR_SUBPARTS.
! 	(gimple_fold_indirect_ref, gimple_build_vector): Likewise.
! 	(gimple_build_vector_from_val): Use VEC_DUPLICATE_EXPR when
! 	duplicating a non-constant operand into a variable-length vector.
! 	* hsa-brig.c (hsa_op_immed::emit_to_buffer): Handle polynomial
! 	TYPE_VECTOR_SUBPARTS and VECTOR_CST_NELTS.
! 	* ipa-icf.c (sem_variable::equals): Likewise.
! 	* match.pd: Likewise.
! 	* omp-simd-clone.c (simd_clone_subparts): Likewise.
! 	* print-tree.c (print_node): Likewise.
! 	* stor-layout.c (layout_type): Likewise.
! 	* targhooks.c (default_builtin_vectorization_cost): Likewise.
! 	* tree-cfg.c (verify_gimple_comparison): Likewise.
! 	(verify_gimple_assign_binary): Likewise.
! 	(verify_gimple_assign_ternary): Likewise.
! 	(verify_gimple_assign_single): Likewise.
! 	* tree-pretty-print.c (dump_generic_node): Likewise.
! 	* tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
! 	(simplify_bitfield_ref, is_combined_permutation_identity): Likewise.
! 	* tree-vect-data-refs.c (vect_permute_store_chain): Likewise.
! 	(vect_grouped_load_supported, vect_permute_load_chain): Likewise.
! 	(vect_shift_permute_load_chain): Likewise.
! 	* tree-vect-generic.c (nunits_for_known_piecewise_op): Likewise.
! 	(expand_vector_condition, optimize_vector_constructor): Likewise.
! 	(lower_vec_perm, get_compute_type): Likewise.
! 	* tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
! 	(get_initial_defs_for_reduction, vect_transform_loop): Likewise.
! 	* tree-vect-patterns.c (vect_recog_bool_pattern): Likewise.
! 	(vect_recog_mask_conversion_pattern): Likewise.
! 	* tree-vect-slp.c (vect_supported_load_permutation_p): Likewise.
! 	(vect_get_constant_vectors, vect_transform_slp_perm_load): Likewise.
! 	* tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
! 	(get_group_load_store_type, vectorizable_mask_load_store): Likewise.
! 	(vectorizable_bswap, simd_clone_subparts, vectorizable_assignment)
! 	(vectorizable_shift, vectorizable_operation, vectorizable_store)
! 	(vectorizable_load, vect_is_simple_cond, vectorizable_comparison)
! 	(supportable_widening_operation): Likewise.
! 	(supportable_narrowing_operation): Likewise.
! 	* tree-vector-builder.c (tree_vector_builder::binary_encoded_nelts):
! 	Likewise.
! 	* varasm.c (output_constant): Likewise.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* tree-vect-data-refs.c (vect_permute_store_chain): Reorganize
! 	so that both the length == 3 and length != 3 cases set up their
! 	own permute vectors.  Add comments explaining why we know the
! 	number of elements is constant.
! 	(vect_permute_load_chain): Likewise.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* machmode.h (mode_nunits): Change from unsigned char to
! 	poly_uint16_pod.
! 	(ONLY_FIXED_SIZE_MODES): New macro.
! 	(pod_mode::measurement_type, scalar_int_mode::measurement_type)
! 	(scalar_float_mode::measurement_type, scalar_mode::measurement_type)
! 	(complex_mode::measurement_type, fixed_size_mode::measurement_type):
! 	New typedefs.
! 	(mode_to_nunits): Return a poly_uint16 rather than an unsigned short.
! 	(GET_MODE_NUNITS): Return a constant if ONLY_FIXED_SIZE_MODES,
! 	or if measurement_type is not polynomial.
! 	* genmodes.c (ZERO_COEFFS): New macro.
! 	(emit_mode_nunits_inline): Make mode_nunits_inline return a
! 	poly_uint16.
! 	(emit_mode_nunits): Change the type of mode_nunits to poly_uint16_pod.
! 	Use ZERO_COEFFS when emitting initializers.
! 	* data-streamer.h (bp_pack_poly_value): New function.
! 	(bp_unpack_poly_value): Likewise.
! 	* lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
! 	for GET_MODE_NUNITS.
! 	* lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
! 	for GET_MODE_NUNITS.
! 	* tree.c (make_vector_type): Remove temporary shim and make
! 	the real function take the number of units as a poly_uint64
! 	rather than an int.
! 	(build_vector_type_for_mode): Handle polynomial nunits.
! 	* dwarf2out.c (loc_descriptor, add_const_value_attribute): Likewise.
! 	* emit-rtl.c (const_vec_series_p_1): Likewise.
! 	(gen_rtx_CONST_VECTOR): Likewise.
! 	* fold-const.c (test_vec_duplicate_folding): Likewise.
! 	* genrecog.c (validate_pattern): Likewise.
! 	* optabs-query.c (can_vec_perm_var_p, can_mult_highpart_p): Likewise.
! 	* optabs-tree.c (expand_vec_cond_expr_p): Likewise.
! 	* optabs.c (expand_vector_broadcast, expand_binop_directly): Likewise.
! 	(shift_amt_for_vec_perm_mask, expand_vec_perm_var): Likewise.
! 	(expand_vec_cond_expr, expand_mult_highpart): Likewise.
! 	* rtlanal.c (subreg_get_info): Likewise.
! 	* tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
! 	(vect_grouped_load_supported): Likewise.
! 	* tree-vect-generic.c (type_for_widest_vector_mode): Likewise.
! 	* tree-vect-loop.c (have_whole_vector_shift): Likewise.
! 	* simplify-rtx.c (simplify_unary_operation_1): Likewise.
! 	(simplify_const_unary_operation, simplify_binary_operation_1)
! 	(simplify_const_binary_operation, simplify_ternary_operation)
! 	(test_vector_ops_duplicate, test_vector_ops): Likewise.
! 	(simplify_immed_subreg): Use GET_MODE_NUNITS on a fixed_size_mode
! 	instead of CONST_VECTOR_NUNITS.
! 	* varasm.c (output_constant_pool_2): Likewise.
! 	* rtx-vector-builder.c (rtx_vector_builder::build): Only include the
! 	explicit-encoded elements in the XVEC for variable-length vectors.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* lra-constraints.c (curr_insn_transform): Use partial_subreg_p.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* coretypes.h (fixed_size_mode): Declare.
! 	(fixed_size_mode_pod): New typedef.
! 	* builtins.h (target_builtins::x_apply_args_mode)
! 	(target_builtins::x_apply_result_mode): Change type to
! 	fixed_size_mode_pod.
! 	* builtins.c (apply_args_size, apply_result_size, result_vector)
! 	(expand_builtin_apply_args_1, expand_builtin_apply)
! 	(expand_builtin_return): Update accordingly.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* cse.c (hash_rtx_cb): Hash only the encoded elements.
! 	* cselib.c (cselib_hash_rtx): Likewise.
! 	* expmed.c (make_tree): Build VECTOR_CSTs directly from the
! 	CONST_VECTOR encoding.
  
! 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
! 	    Jeff Law  <law@redhat.com>
  
! 	PR target/83641
! 	* config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): For
! 	noreturn probe, use gen_pop instead of ix86_emit_restore_reg_using_pop,
! 	only set RTX_FRAME_RELATED_P on both the push and pop if cfa_reg is sp
! 	and add REG_CFA_ADJUST_CFA notes in that case to both insns.
  
! 	PR target/83641
! 	* config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): Do not
! 	explicitly probe *sp in a noreturn function if there were any callee
! 	register saves or frame pointer is needed.
  
! 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR debug/83621
! 	* cfgexpand.c (expand_debug_expr): Return NULL if mode is
! 	BLKmode for ternary, binary or unary expressions.
  
! 	PR debug/83645
! 	* var-tracking.c (delete_vta_debug_insn): New inline function.
! 	(delete_vta_debug_insns): Add USE_CFG argument, if true, walk just
! 	insns from get_insns () to NULL instead of each bb separately.
! 	Use delete_vta_debug_insn.  No longer static.
! 	(vt_debug_insns_local, variable_tracking_main_1): Adjust
! 	delete_vta_debug_insns callers.
! 	* rtl.h (delete_vta_debug_insns): Declare.
! 	* final.c (rest_of_handle_final): Call delete_vta_debug_insns
! 	instead of variable_tracking_main.
  
! 2018-01-03  Martin Sebor  <msebor@redhat.com>
  
! 	PR tree-optimization/83603
! 	* calls.c (maybe_warn_nonstring_arg): Avoid accessing function
! 	arguments past the endof the argument list in functions declared
! 	without a prototype.
! 	* gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call):
! 	Avoid checking when arguments are null.
  
! 2018-01-03  Martin Sebor  <msebor@redhat.com>
  
! 	PR c/83559
! 	* doc/extend.texi (attribute const): Fix a typo.
! 	* ipa-pure-const.c ((warn_function_const, warn_function_pure): Avoid
! 	issuing -Wsuggest-attribute for void functions.
  
! 2018-01-03  Martin Sebor  <msebor@redhat.com>
  
! 	* gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Use
! 	offset_int::from instead of wide_int::to_shwi.
! 	(maybe_diag_overlap): Remove assertion.
! 	Use HOST_WIDE_INT_PRINT_DEC instead of %lli.
! 	* gimple-ssa-sprintf.c (format_directive): Same.
! 	(parse_directive): Same.
! 	(sprintf_dom_walker::compute_format_length): Same.
! 	(try_substitute_return_value): Same.
  
! 2018-01-03  Jeff Law  <law@redhat.com>
  
! 	PR middle-end/83654
! 	* explow.c (anti_adjust_stack_and_probe_stack_clash): Test a
! 	non-constant residual for zero at runtime and avoid probing in
! 	that case.  Reorganize code for trailing problem to mirror handling
! 	of the residual.
  
! 2018-01-03  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
  
! 	PR tree-optimization/83501
! 	* tree-ssa-strlen.c (get_string_cst): New.
! 	(handle_char_store): Call get_string_cst.
  
! 2018-01-03  Martin Liska  <mliska@suse.cz>
  
! 	PR tree-optimization/83593
! 	* tree-ssa-strlen.c: Include tree-cfg.h.
! 	(strlen_check_and_optimize_stmt): Add new argument cleanup_eh.
! 	(strlen_dom_walker): Add new member variable m_cleanup_cfg.
! 	(strlen_dom_walker::strlen_dom_walker): Initialize m_cleanup_cfg
! 	to false.
! 	(strlen_dom_walker::before_dom_children): Call
! 	gimple_purge_dead_eh_edges. Dump tranformation with details
! 	dump flags.
! 	(strlen_dom_walker::before_dom_children): Update call by adding
! 	new argument cleanup_eh.
! 	(pass_strlen::execute): Return TODO_cleanup_cfg if needed.
  
! 2018-01-03  Martin Liska  <mliska@suse.cz>
  
! 	PR ipa/83549
! 	* cif-code.def (VARIADIC_THUNK): New enum value.
! 	* ipa-fnsummary.c (compute_fn_summary): Do not inline variadic
! 	thunks.
  
! 2018-01-03  Jan Beulich  <jbeulich@suse.com>
  
! 	* sse.md (mov<mode>_internal): Tighten condition for when to use
! 	vmovdqu<ssescalarsize> for TI and OI modes.
  
! 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
  
! 	Update copyright years.
  
! 2018-01-03  Martin Liska  <mliska@suse.cz>
  
! 	PR ipa/83594
! 	* ipa-visibility.c (function_and_variable_visibility): Skip
! 	functions with noipa attribure.
  
! 2018-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.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* vector-builder.h (vector_builder::m_full_nelts): Change from
! 	unsigned int to poly_uint64.
! 	(vector_builder::full_nelts): Update prototype accordingly.
! 	(vector_builder::new_vector): Likewise.
! 	(vector_builder::encoded_full_vector_p): Handle polynomial full_nelts.
! 	(vector_builder::operator ==): Likewise.
! 	(vector_builder::finalize): Likewise.
! 	* int-vector-builder.h (int_vector_builder::int_vector_builder):
! 	Take the number of elements as a poly_uint64 rather than an
! 	unsigned int.
! 	* vec-perm-indices.h (vec_perm_indices::m_nelts_per_input): Change
! 	from unsigned int to poly_uint64.
! 	(vec_perm_indices::vec_perm_indices): Update prototype accordingly.
! 	(vec_perm_indices::new_vector): Likewise.
! 	(vec_perm_indices::length): Likewise.
! 	(vec_perm_indices::nelts_per_input): Likewise.
! 	(vec_perm_indices::input_nelts): Likewise.
! 	* vec-perm-indices.c (vec_perm_indices::new_vector): Take the
! 	number of elements per input as a poly_uint64 rather than an
! 	unsigned int.  Use the original encoding for variable-length
! 	vectors, rather than clamping each individual element.
! 	For the second and subsequent elements in each pattern,
! 	clamp the step and base before clamping their sum.
! 	(vec_perm_indices::series_p): Handle polynomial element counts.
! 	(vec_perm_indices::all_in_range_p): Likewise.
! 	(vec_perm_indices_to_tree): Likewise.
! 	(vec_perm_indices_to_rtx): Likewise.
! 	* tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise.
! 	* tree-vector-builder.c (tree_vector_builder::new_unary_operation)
! 	(tree_vector_builder::new_binary_operation): Handle polynomial
! 	element counts.  Return false if we need to know the number
! 	of elements at compile time.
! 	* fold-const.c (fold_vec_perm): Punt if the number of elements
! 	isn't known at compile time.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* vec-perm-indices.h (vec_perm_builder): Change element type
! 	from HOST_WIDE_INT to poly_int64.
! 	(vec_perm_indices::element_type): Update accordingly.
! 	(vec_perm_indices::clamp): Handle polynomial element_types.
! 	* vec-perm-indices.c (vec_perm_indices::series_p): Likewise.
! 	(vec_perm_indices::all_in_range_p): Likewise.
! 	(tree_to_vec_perm_builder): Check for poly_int64 trees rather
! 	than shwi trees.
! 	* vector-builder.h (vector_builder::stepped_sequence_p): Handle
! 	polynomial vec_perm_indices element types.
! 	* int-vector-builder.h (int_vector_builder::equal_p): Likewise.
! 	* fold-const.c (fold_vec_perm): Likewise.
! 	* optabs.c (shift_amt_for_vec_perm_mask): Likewise.
! 	* tree-vect-generic.c (lower_vec_perm): Likewise.
! 	* tree-vect-slp.c (vect_transform_slp_perm_load): Likewise.
! 	* config/aarch64/aarch64.c (aarch64_evpc_tbl): Cast d->perm
! 	element type to HOST_WIDE_INT.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* alias.c (addr_side_effect_eval): Take the size as a poly_int64
! 	rather than an int.  Use plus_constant.
! 	(memrefs_conflict_p): Take the sizes as poly_int64s rather than ints.
! 	Take the offset "c" as a poly_int64 rather than a HOST_WIDE_INT.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* calls.c (emit_call_1, expand_call): Change struct_value_size from
! 	a HOST_WIDE_INT to a poly_int64.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* calls.c (load_register_parameters): Cope with polynomial
! 	mode sizes.  Require a constant size for BLKmode parameters
! 	that aren't described by a PARALLEL.  If BLOCK_REG_PADDING
! 	forces a parameter to be padded at the lsb end in order to
! 	fill a complete number of words, require the parameter size
! 	to be ordered wrt UNITS_PER_WORD.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* reload1.c (spill_stack_slot_width): Change element type
! 	from unsigned int to poly_uint64_pod.
! 	(alter_reg): Treat mode sizes as polynomial.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* reload.c (complex_word_subreg_p): New function.
! 	(reload_inner_reg_of_subreg, push_reload): Use it.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* lra-constraints.c (process_alt_operands): Reject matched
! 	operands whose sizes aren't ordered.
! 	(match_reload): Refer to this check here.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* builtins.c (expand_ifn_atomic_compare_exchange_into_call): Assert
! 	that the mode size is in the set {1, 2, 4, 8, 16}.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* var-tracking.c (adjust_mems): Treat mode sizes as polynomial.
! 	Use plus_constant instead of gen_rtx_PLUS.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* config/cr16/cr16-protos.h (cr16_push_rounding): Declare.
! 	* config/cr16/cr16.h (PUSH_ROUNDING): Move implementation to...
! 	* config/cr16/cr16.c (cr16_push_rounding): ...this new function.
! 	* config/h8300/h8300-protos.h (h8300_push_rounding): Declare.
! 	* config/h8300/h8300.h (PUSH_ROUNDING): Move implementation to...
! 	* config/h8300/h8300.c (h8300_push_rounding): ...this new function.
! 	* config/i386/i386-protos.h (ix86_push_rounding): Declare.
! 	* config/i386/i386.h (PUSH_ROUNDING): Move implementation to...
! 	* config/i386/i386.c (ix86_push_rounding): ...this new function.
! 	* config/m32c/m32c-protos.h (m32c_push_rounding): Take and return
! 	a poly_int64.
! 	* config/m32c/m32c.c (m32c_push_rounding): Likewise.
! 	* config/m68k/m68k-protos.h (m68k_push_rounding): Declare.
! 	* config/m68k/m68k.h (PUSH_ROUNDING): Move implementation to...
! 	* config/m68k/m68k.c (m68k_push_rounding): ...this new function.
! 	* config/pdp11/pdp11-protos.h (pdp11_push_rounding): Declare.
! 	* config/pdp11/pdp11.h (PUSH_ROUNDING): Move implementation to...
! 	* config/pdp11/pdp11.c (pdp11_push_rounding): ...this new function.
! 	* config/stormy16/stormy16-protos.h (xstormy16_push_rounding): Declare.
! 	* config/stormy16/stormy16.h (PUSH_ROUNDING): Move implementation to...
! 	* config/stormy16/stormy16.c (xstormy16_push_rounding): ...this new
! 	function.
! 	* expr.c (emit_move_resolve_push): Treat the input and result
! 	of PUSH_ROUNDING as a poly_int64.
! 	(emit_move_complex_push, emit_single_push_insn_1): Likewise.
! 	(emit_push_insn): Likewise.
! 	* lra-eliminations.c (mark_not_eliminable): Likewise.
! 	* recog.c (push_operand): Likewise.
! 	* reload1.c (elimination_effects): Likewise.
! 	* rtlanal.c (nonzero_bits1): Likewise.
! 	* calls.c (store_one_arg): Likewise.  Require the padding to be
! 	known at compile time.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* expr.c (emit_single_push_insn_1): Treat mode sizes as polynomial.
! 	Use plus_constant instead of gen_rtx_PLUS.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* auto-inc-dec.c (set_inc_state): Take the mode size as a poly_int64
! 	rather than an int.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* expr.c (expand_expr_real_1): Use tree_to_poly_uint64
! 	instead of int_size_in_bytes when handling VIEW_CONVERT_EXPRs
! 	via stack temporaries.  Treat the mode size as polynomial too.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* expr.c (expand_expr_real_2): When handling conversions involving
! 	unions, apply tree_to_poly_uint64 to the TYPE_SIZE rather than
! 	multiplying int_size_in_bytes by BITS_PER_UNIT.  Treat GET_MODE_BISIZE
! 	as a poly_uint64 too.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* rtlanal.c (subreg_get_info): Handle polynomial mode sizes.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* combine.c (can_change_dest_mode): Handle polynomial
! 	REGMODE_NATURAL_SIZE.
! 	* expmed.c (store_bit_field_1): Likewise.
! 	* expr.c (store_constructor): Likewise.
! 	* emit-rtl.c (validate_subreg): Operate on polynomial mode sizes
! 	and polynomial REGMODE_NATURAL_SIZE.
! 	(gen_lowpart_common): Likewise.
! 	* reginfo.c (record_subregs_of_mode): Likewise.
! 	* rtlanal.c (read_modify_subreg_p): Likewise.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* internal-fn.c (expand_vector_ubsan_overflow): Handle polynomial
! 	numbers of elements.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* match.pd: Cope with polynomial numbers of vector elements.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* fold-const.c (fold_indirect_ref_1): Handle polynomial offsets
! 	in a POINTER_PLUS_EXPR.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* omp-simd-clone.c (simd_clone_subparts): New function.
! 	(simd_clone_init_simd_arrays): Use it instead of TYPE_VECTOR_SUBPARTS.
! 	(ipa_simd_modify_function_body): Likewise.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* tree-vect-generic.c (nunits_for_known_piecewise_op): New function.
! 	(expand_vector_piecewise): Use it instead of TYPE_VECTOR_SUBPARTS.
! 	(expand_vector_addition, add_rshift, expand_vector_divmod): Likewise.
! 	(expand_vector_condition, vector_element): Likewise.
! 	(subparts_gt): New function.
! 	(get_compute_type): Use subparts_gt.
! 	(count_type_subparts): Delete.
! 	(expand_vector_operations_1): Use subparts_gt instead of
! 	count_type_subparts.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* tree-vect-data-refs.c (vect_no_alias_p): Replace with...
! 	(vect_compile_time_alias): ...this new function.  Do the calculation
! 	on poly_ints rather than trees.
! 	(vect_prune_runtime_alias_test_list): Update call accordingly.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* tree-vect-slp.c (vect_build_slp_tree_1): Handle polynomial
! 	numbers of units.
! 	(vect_schedule_slp_instance): Likewise.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* tree-vect-slp.c (vect_get_and_check_slp_defs): Reject
! 	constant and extern definitions for variable-length vectors.
! 	(vect_get_constant_vectors): Note that the number of units
! 	is known to be constant.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* tree-vect-stmts.c (vectorizable_conversion): Treat the number
! 	of units as polynomial.  Choose between WIDE and NARROW based
! 	on multiple_p.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* tree-vect-stmts.c (simd_clone_subparts): New function.
! 	(vectorizable_simd_clone_call): Use it instead of TYPE_VECTOR_SUBPARTS.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* tree-vect-stmts.c (vectorizable_call): Treat the number of
! 	vectors as polynomial.  Use build_index_vector for
! 	IFN_GOMP_SIMD_LANE.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* tree-vect-stmts.c (get_load_store_type): Treat the number of
! 	units as polynomial.  Reject VMAT_ELEMENTWISE and VMAT_STRIDED_SLP
! 	for variable-length vectors.
! 	(vectorizable_mask_load_store): Treat the number of units as
! 	polynomial, asserting that it is constant if the condition has
! 	already been enforced.
! 	(vectorizable_store, vectorizable_load): Likewise.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* tree-vect-loop.c (vectorizable_live_operation): Treat the number
! 	of units as polynomial.  Punt if we can't tell at compile time
! 	which vector contains the final result.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* tree-vect-loop.c (vectorizable_induction): Treat the number
! 	of units as polynomial.  Punt on SLP inductions.  Use an integer
! 	VEC_SERIES_EXPR for variable-length integer reductions.  Use a
! 	cast of such a series for variable-length floating-point
! 	reductions.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* tree.h (build_index_vector): Declare.
! 	* tree.c (build_index_vector): New function.
! 	* tree-vect-loop.c (get_initial_defs_for_reduction): Treat the number
! 	of units as polynomial, forcibly converting it to a constant if
! 	vectorizable_reduction has already enforced the condition.
! 	(vect_create_epilog_for_reduction): Likewise.  Use build_index_vector
! 	to create a {1,2,3,...} vector.
! 	(vectorizable_reduction): Treat the number of units as polynomial.
! 	Choose vectype_in based on the largest scalar element size rather
! 	than the smallest number of units.  Enforce the restrictions
! 	relied on above.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* tree-vect-data-refs.c (vector_alignment_reachable_p): Treat the
! 	number of units as polynomial.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* target.h (vector_sizes, auto_vector_sizes): New typedefs.
! 	* target.def (autovectorize_vector_sizes): Return the vector sizes
! 	by pointer, using vector_sizes rather than a bitmask.
! 	* targhooks.h (default_autovectorize_vector_sizes): Update accordingly.
! 	* targhooks.c (default_autovectorize_vector_sizes): Likewise.
! 	* config/aarch64/aarch64.c (aarch64_autovectorize_vector_sizes):
! 	Likewise.
! 	* config/arc/arc.c (arc_autovectorize_vector_sizes): Likewise.
! 	* config/arm/arm.c (arm_autovectorize_vector_sizes): Likewise.
! 	* config/i386/i386.c (ix86_autovectorize_vector_sizes): Likewise.
! 	* config/mips/mips.c (mips_autovectorize_vector_sizes): Likewise.
! 	* omp-general.c (omp_max_vf): Likewise.
! 	* omp-low.c (omp_clause_aligned_alignment): Likewise.
! 	* optabs-query.c (can_vec_mask_load_store_p): Likewise.
! 	* tree-vect-loop.c (vect_analyze_loop): Likewise.
! 	* tree-vect-slp.c (vect_slp_bb): Likewise.
! 	* doc/tm.texi: Regenerate.
! 	* tree-vectorizer.h (current_vector_size): Change from an unsigned int
! 	to a poly_uint64.
! 	* tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): Take
! 	the vector size as a poly_uint64 rather than an unsigned int.
! 	(current_vector_size): Change from an unsigned int to a poly_uint64.
! 	(get_vectype_for_scalar_type): Update accordingly.
! 	* tree.h (build_truth_vector_type): Take the size and number of
! 	units as a poly_uint64 rather than an unsigned int.
! 	(build_vector_type): Add a temporary overload that takes
! 	the number of units as a poly_uint64 rather than an unsigned int.
! 	* tree.c (make_vector_type): Likewise.
! 	(build_truth_vector_type): Take the number of units as a poly_uint64
! 	rather than an unsigned int.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* target.def (get_mask_mode): Take the number of units and length
! 	as poly_uint64s rather than unsigned ints.
! 	* targhooks.h (default_get_mask_mode): Update accordingly.
! 	* targhooks.c (default_get_mask_mode): Likewise.
! 	* config/i386/i386.c (ix86_get_mask_mode): Likewise.
! 	* doc/tm.texi: Regenerate.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* omp-general.h (omp_max_vf): Return a poly_uint64 instead of an int.
! 	* omp-general.c (omp_max_vf): Likewise.
! 	* omp-expand.c (omp_adjust_chunk_size): Update call to omp_max_vf.
! 	(expand_omp_simd): Handle polynomial safelen.
! 	* omp-low.c (omplow_simd_context): Add a default constructor.
! 	(omplow_simd_context::max_vf): Change from int to poly_uint64.
! 	(lower_rec_simd_input_clauses): Update accordingly.
! 	(lower_rec_input_clauses): Likewise.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* tree-vectorizer.h (vect_nunits_for_cost): New function.
! 	* tree-vect-loop.c (vect_model_reduction_cost): Use it.
! 	* tree-vect-slp.c (vect_analyze_slp_cost_1): Likewise.
! 	(vect_analyze_slp_cost): Likewise.
! 	* tree-vect-stmts.c (vect_model_store_cost): Likewise.
! 	(vect_model_load_cost): Likewise.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* tree-vect-slp.c (vect_record_max_nunits, vect_build_slp_tree_1)
! 	(vect_build_slp_tree_2, vect_build_slp_tree): Change max_nunits
! 	from an unsigned int * to a poly_uint64_pod *.
! 	(calculate_unrolling_factor): New function.
! 	(vect_analyze_slp_instance): Use it.  Track polynomial max_nunits.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* tree-vectorizer.h (_slp_instance::unrolling_factor): Change
! 	from an unsigned int to a poly_uint64.
! 	(_loop_vec_info::slp_unrolling_factor): Likewise.
! 	(_loop_vec_info::vectorization_factor): Change from an int
! 	to a poly_uint64.
! 	(MAX_VECTORIZATION_FACTOR): Bump from 64 to INT_MAX.
! 	(vect_get_num_vectors): New function.
! 	(vect_update_max_nunits, vect_vf_for_cost): Likewise.
! 	(vect_get_num_copies): Use vect_get_num_vectors.
! 	(vect_analyze_data_ref_dependences): Change max_vf from an int *
! 	to an unsigned int *.
! 	(vect_analyze_data_refs): Change min_vf from an int * to a
! 	poly_uint64 *.
! 	(vect_transform_slp_perm_load): Take the vf as a poly_uint64 rather
! 	than an unsigned HOST_WIDE_INT.
! 	* tree-vect-data-refs.c (vect_analyze_possibly_independent_ddr)
! 	(vect_analyze_data_ref_dependence): Change max_vf from an int *
! 	to an unsigned int *.
! 	(vect_analyze_data_ref_dependences): Likewise.
! 	(vect_compute_data_ref_alignment): Handle polynomial vf.
! 	(vect_enhance_data_refs_alignment): Likewise.
! 	(vect_prune_runtime_alias_test_list): Likewise.
! 	(vect_shift_permute_load_chain): Likewise.
! 	(vect_supportable_dr_alignment): Likewise.
! 	(dependence_distance_ge_vf): Take the vectorization factor as a
! 	poly_uint64 rather than an unsigned HOST_WIDE_INT.
! 	(vect_analyze_data_refs): Change min_vf from an int * to a
! 	poly_uint64 *.
! 	* tree-vect-loop-manip.c (vect_gen_scalar_loop_niters): Take
! 	vfm1 as a poly_uint64 rather than an int.  Make the same change
! 	for the returned bound_scalar.
! 	(vect_gen_vector_loop_niters): Handle polynomial vf.
! 	(vect_do_peeling): Likewise.  Update call to
! 	vect_gen_scalar_loop_niters and handle polynomial bound_scalars.
! 	(vect_gen_vector_loop_niters_mult_vf): Assert that the vf must
! 	be constant.
! 	* tree-vect-loop.c (vect_determine_vectorization_factor)
! 	(vect_update_vf_for_slp, vect_analyze_loop_2): Handle polynomial vf.
! 	(vect_get_known_peeling_cost): Likewise.
! 	(vect_estimate_min_profitable_iters, vectorizable_reduction): Likewise.
! 	(vect_worthwhile_without_simd_p, vectorizable_induction): Likewise.
! 	(vect_transform_loop): Likewise.  Use the lowest possible VF when
! 	updating the upper bounds of the loop.
! 	(vect_min_worthwhile_factor): Make static.  Return an unsigned int
! 	rather than an int.
! 	* tree-vect-slp.c (vect_attempt_slp_rearrange_stmts): Cope with
! 	polynomial unroll factors.
! 	(vect_analyze_slp_cost_1, vect_analyze_slp_instance): Likewise.
! 	(vect_make_slp_decision): Likewise.
! 	(vect_supported_load_permutation_p): Likewise, and polynomial
! 	vf too.
! 	(vect_analyze_slp_cost): Handle polynomial vf.
! 	(vect_slp_analyze_node_operations): Likewise.
! 	(vect_slp_analyze_bb_1): Likewise.
! 	(vect_transform_slp_perm_load): Take the vf as a poly_uint64 rather
! 	than an unsigned HOST_WIDE_INT.
! 	* tree-vect-stmts.c (vectorizable_simd_clone_call, vectorizable_store)
! 	(vectorizable_load): Handle polynomial vf.
! 	* tree-vectorizer.c (simduid_to_vf::vf): Change from an int to
! 	a poly_uint64.
! 	(adjust_simduid_builtins, shrink_simd_arrays): Update accordingly.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* match.pd: Handle bit operations involving three constants
! 	and try to fold one pair.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* tree-vect-loop-manip.c: Include gimple-fold.h.
! 	(slpeel_make_loop_iterate_ntimes): Add step, final_iv and
! 	niters_maybe_zero parameters.  Handle other cases besides a step of 1.
! 	(vect_gen_vector_loop_niters): Add a step_vector_ptr parameter.
! 	Add a path that uses a step of VF instead of 1, but disable it
! 	for now.
! 	(vect_do_peeling): Add step_vector, niters_vector_mult_vf_var
! 	and niters_no_overflow parameters.  Update calls to
! 	slpeel_make_loop_iterate_ntimes and vect_gen_vector_loop_niters.
! 	Create a new SSA name if the latter choses to use a ste other
! 	than zero, and return it via niters_vector_mult_vf_var.
! 	* tree-vect-loop.c (vect_transform_loop): Update calls to
! 	vect_do_peeling, vect_gen_vector_loop_niters and
! 	slpeel_make_loop_iterate_ntimes.
! 	* tree-vectorizer.h (slpeel_make_loop_iterate_ntimes, vect_do_peeling)
! 	(vect_gen_vector_loop_niters): Update declarations after above changes.
  
! 2018-01-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
  
! 	* config/rs6000/rs6000.md (floor<mode>2): Add support for IEEE
! 	128-bit round to integer instructions.
! 	(ceil<mode>2): Likewise.
! 	(btrunc<mode>2): Likewise.
! 	(round<mode>2): Likewise.
  
! 2018-01-02  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
  
! 	* config/rs6000/rs6000-string.c (expand_block_move): Allow the use of
! 	unaligned VSX load/store on P8/P9.
! 	(expand_block_clear): Allow the use of unaligned VSX
! 	load/store on P8/P9.
  
! 2018-01-02  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
  
! 	* config/rs6000/rs6000-p8swap.c (swap_feeds_both_load_and_store):
! 	New function.
! 	(rs6000_analyze_swaps): Mark a web unoptimizable if it contains a
! 	swap associated with both a load and a store.
  
! 2018-01-02  Andrew Waterman  <andrew@sifive.com>
  
! 	* config/riscv/linux.h (ICACHE_FLUSH_FUNC): New.
! 	* config/riscv/riscv.md (clear_cache): Use it.
  
! 2018-01-02  Artyom Skrobov  <tyomitch@gmail.com>
  
! 	* web.c: Remove out-of-date comment.
  
! 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* expr.c (fixup_args_size_notes): Check that any existing
! 	REG_ARGS_SIZE notes are correct, and don't try to re-add them.
! 	(emit_single_push_insn_1): Move stack_pointer_delta adjustment to...
! 	(emit_single_push_insn): ...here.
  
! 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* rtl.h (CONST_VECTOR_ELT): Redefine to const_vector_elt.
! 	(const_vector_encoded_nelts): New function.
! 	(CONST_VECTOR_NUNITS): Redefine to use GET_MODE_NUNITS.
! 	(const_vector_int_elt, const_vector_elt): Declare.
! 	* emit-rtl.c (const_vector_int_elt_1): New function.
! 	(const_vector_elt): Likewise.
! 	* simplify-rtx.c (simplify_immed_subreg): Avoid taking the address
! 	of CONST_VECTOR_ELT.
  
! 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* expr.c: Include rtx-vector-builder.h.
! 	(const_vector_mask_from_tree): Use rtx_vector_builder and operate
! 	directly on the tree encoding.
! 	(const_vector_from_tree): Likewise.
! 	* optabs.c: Include rtx-vector-builder.h.
! 	(expand_vec_perm_var): Use rtx_vector_builder and create a repeating
! 	sequence of "u" values.
! 	* vec-perm-indices.c: Include rtx-vector-builder.h.
! 	(vec_perm_indices_to_rtx): Use rtx_vector_builder and operate
! 	directly on the vec_perm_indices encoding.
  
! 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* doc/rtl.texi (const_vector): Describe new encoding scheme.
! 	* Makefile.in (OBJS): Add rtx-vector-builder.o.
! 	* rtx-vector-builder.h: New file.
! 	* rtx-vector-builder.c: Likewise.
! 	* rtl.h (rtx_def::u2): Add a const_vector field.
! 	(CONST_VECTOR_NPATTERNS): New macro.
! 	(CONST_VECTOR_NELTS_PER_PATTERN): Likewise.
! 	(CONST_VECTOR_DUPLICATE_P): Likewise.
! 	(CONST_VECTOR_STEPPED_P): Likewise.
! 	(CONST_VECTOR_ENCODED_ELT): Likewise.
! 	(const_vec_duplicate_p): Check for a duplicated vector encoding.
! 	(unwrap_const_vec_duplicate): Likewise.
! 	(const_vec_series_p): Check for a non-duplicated vector encoding.
! 	Say that the function only returns true for integer vectors.
! 	* emit-rtl.c: Include rtx-vector-builder.h.
! 	(gen_const_vec_duplicate_1): Delete.
! 	(gen_const_vector): Call gen_const_vec_duplicate instead of
! 	gen_const_vec_duplicate_1.
! 	(const_vec_series_p_1): Operate directly on the CONST_VECTOR encoding.
! 	(gen_const_vec_duplicate): Use rtx_vector_builder.
! 	(gen_const_vec_series): Likewise.
! 	(gen_rtx_CONST_VECTOR): Likewise.
! 	* config/powerpcspe/powerpcspe.c: Include rtx-vector-builder.h.
! 	(swap_const_vector_halves): Take an rtx pointer rather than rtx.
! 	Build a new vector rather than modifying a CONST_VECTOR in-place.
! 	(handle_special_swappables): Update call accordingly.
! 	* config/rs6000/rs6000-p8swap.c: Include rtx-vector-builder.h.
! 	(swap_const_vector_halves): Take an rtx pointer rather than rtx.
! 	Build a new vector rather than modifying a CONST_VECTOR in-place.
! 	(handle_special_swappables): Update call accordingly.
  
! 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* simplify-rtx.c (simplify_const_binary_operation): Use
! 	CONST_VECTOR_ELT instead of XVECEXP.
  
! 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* tree-cfg.c (verify_gimple_assign_ternary): Allow the size of
! 	the selector elements to be different from the data elements
! 	if the selector is a VECTOR_CST.
! 	* tree-vect-stmts.c (vect_gen_perm_mask_any): Use a vector of
! 	ssizetype for the selector.
  
! 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* optabs.c (shift_amt_for_vec_perm_mask): Try using series_p
! 	before testing each element individually.
! 	* tree-vect-generic.c (lower_vec_perm): Likewise.
  
! 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* selftest.h (selftest::vec_perm_indices_c_tests): Declare.
! 	* selftest-run-tests.c (selftest::run_tests): Call it.
! 	* vector-builder.h (vector_builder::operator ==): New function.
! 	(vector_builder::operator !=): Likewise.
! 	* vec-perm-indices.h (vec_perm_indices::series_p): Declare.
! 	(vec_perm_indices::all_from_input_p): New function.
! 	* vec-perm-indices.c (vec_perm_indices::series_p): Likewise.
! 	(test_vec_perm_12, selftest::vec_perm_indices_c_tests): Likewise.
! 	* fold-const.c (fold_ternary_loc): Use tree_to_vec_perm_builder
! 	instead of reading the VECTOR_CST directly.  Detect whether both
! 	vector inputs are the same before constructing the vec_perm_indices,
! 	and update the number of inputs argument accordingly.  Use the
! 	utility functions added above.  Only construct sel2 if we need to.
  
! 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* optabs.c (expand_vec_perm_var): Use an explicit encoding for
! 	the broadcast of the low byte.
! 	(expand_mult_highpart): Use an explicit encoding for the permutes.
! 	* optabs-query.c (can_mult_highpart_p): Likewise.
! 	* tree-vect-loop.c (calc_vec_perm_mask_for_shift): Likewise.
! 	* tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
! 	(vectorizable_bswap): Likewise.
! 	* tree-vect-data-refs.c (vect_grouped_store_supported): Use an
! 	explicit encoding for the power-of-2 permutes.
! 	(vect_permute_store_chain): Likewise.
! 	(vect_grouped_load_supported): Likewise.
! 	(vect_permute_load_chain): Likewise.
  
! 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* vec-perm-indices.h (vec_perm_indices_to_tree): Declare.
! 	* vec-perm-indices.c (vec_perm_indices_to_tree): New function.
! 	* tree-ssa-forwprop.c (simplify_vector_constructor): Use it.
! 	* tree-vect-slp.c (vect_transform_slp_perm_load): Likewise.
! 	* tree-vect-stmts.c (vectorizable_bswap): Likewise.
! 	(vect_gen_perm_mask_any): Likewise.
  
! 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* int-vector-builder.h: New file.
! 	* vec-perm-indices.h: Include int-vector-builder.h.
! 	(vec_perm_indices): Redefine as an int_vector_builder.
! 	(auto_vec_perm_indices): Delete.
! 	(vec_perm_builder): Redefine as a stand-alone class.
! 	(vec_perm_indices::vec_perm_indices): New function.
! 	(vec_perm_indices::clamp): Likewise.
! 	* vec-perm-indices.c: Include fold-const.h and tree-vector-builder.h.
! 	(vec_perm_indices::new_vector): New function.
! 	(vec_perm_indices::new_expanded_vector): Update for new
! 	vec_perm_indices class.
! 	(vec_perm_indices::rotate_inputs): New function.
! 	(vec_perm_indices::all_in_range_p): Operate directly on the
! 	encoded form, without computing elided elements.
! 	(tree_to_vec_perm_builder): Operate directly on the VECTOR_CST
! 	encoding.  Update for new vec_perm_indices class.
! 	* optabs.c (expand_vec_perm_const): Create a vec_perm_indices for
! 	the given vec_perm_builder.
! 	(expand_vec_perm_var): Update vec_perm_builder constructor.
! 	(expand_mult_highpart): Use vec_perm_builder instead of
! 	auto_vec_perm_indices.
! 	* optabs-query.c (can_mult_highpart_p): Use vec_perm_builder and
! 	vec_perm_indices instead of auto_vec_perm_indices.  Use a single
! 	or double series encoding as appropriate.
! 	* fold-const.c (fold_ternary_loc): Use vec_perm_builder and
! 	vec_perm_indices instead of auto_vec_perm_indices.
! 	* tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
! 	* tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
! 	(vect_permute_store_chain): Likewise.
! 	(vect_grouped_load_supported): Likewise.
! 	(vect_permute_load_chain): Likewise.
! 	(vect_shift_permute_load_chain): Likewise.
! 	* tree-vect-slp.c (vect_build_slp_tree_1): Likewise.
! 	(vect_transform_slp_perm_load): Likewise.
! 	(vect_schedule_slp_instance): Likewise.
! 	* tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
! 	(vectorizable_mask_load_store): Likewise.
! 	(vectorizable_bswap): Likewise.
! 	(vectorizable_store): Likewise.
! 	(vectorizable_load): Likewise.
! 	* tree-vect-generic.c (lower_vec_perm): Use vec_perm_builder and
! 	vec_perm_indices instead of auto_vec_perm_indices.  Use
! 	tree_to_vec_perm_builder to read the vector from a tree.
! 	* tree-vect-loop.c (calc_vec_perm_mask_for_shift): Take a
! 	vec_perm_builder instead of a vec_perm_indices.
! 	(have_whole_vector_shift): Use vec_perm_builder and
! 	vec_perm_indices instead of auto_vec_perm_indices.  Leave the
! 	truncation to calc_vec_perm_mask_for_shift.
! 	(vect_create_epilog_for_reduction): Likewise.
! 	* config/aarch64/aarch64.c (expand_vec_perm_d::perm): Change
! 	from auto_vec_perm_indices to vec_perm_indices.
! 	(aarch64_expand_vec_perm_const_1): Use rotate_inputs on d.perm
! 	instead of changing individual elements.
! 	(aarch64_vectorize_vec_perm_const): Use new_vector to install
! 	the vector in d.perm.
! 	* config/arm/arm.c (expand_vec_perm_d::perm): Change
! 	from auto_vec_perm_indices to vec_perm_indices.
! 	(arm_expand_vec_perm_const_1): Use rotate_inputs on d.perm
! 	instead of changing individual elements.
! 	(arm_vectorize_vec_perm_const): Use new_vector to install
! 	the vector in d.perm.
! 	* config/powerpcspe/powerpcspe.c (rs6000_expand_extract_even):
! 	Update vec_perm_builder constructor.
! 	(rs6000_expand_interleave): Likewise.
! 	* config/rs6000/rs6000.c (rs6000_expand_extract_even): Likewise.
! 	(rs6000_expand_interleave): Likewise.
  
! 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* optabs-query.c (can_vec_perm_var_p): Check whether lowering
! 	to qimode could truncate the indices.
! 	* optabs.c (expand_vec_perm_var): Likewise.
  
! 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* Makefile.in (OBJS): Add vec-perm-indices.o.
! 	* vec-perm-indices.h: New file.
! 	* vec-perm-indices.c: Likewise.
! 	* target.h (vec_perm_indices): Replace with a forward class
! 	declaration.
! 	(auto_vec_perm_indices): Move to vec-perm-indices.h.
! 	* optabs.h: Include vec-perm-indices.h.
! 	(expand_vec_perm): Delete.
! 	(selector_fits_mode_p, expand_vec_perm_var): Declare.
! 	(expand_vec_perm_const): Declare.
! 	* target.def (vec_perm_const_ok): Replace with...
! 	(vec_perm_const): ...this new hook.
! 	* doc/tm.texi.in (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Replace with...
! 	(TARGET_VECTORIZE_VEC_PERM_CONST): ...this new hook.
! 	* doc/tm.texi: Regenerate.
! 	* optabs.def (vec_perm_const): Delete.
! 	* doc/md.texi (vec_perm_const): Likewise.
! 	(vec_perm): Refer to TARGET_VECTORIZE_VEC_PERM_CONST.
! 	* expr.c (expand_expr_real_2): Use expand_vec_perm_const rather than
! 	expand_vec_perm for constant permutation vectors.  Assert that
! 	the mode of variable permutation vectors is the integer equivalent
! 	of the mode that is being permuted.
! 	* optabs-query.h (selector_fits_mode_p): Declare.
! 	* optabs-query.c: Include vec-perm-indices.h.
! 	(selector_fits_mode_p): New function.
! 	(can_vec_perm_const_p): Check whether targetm.vectorize.vec_perm_const
! 	is defined, instead of checking whether the vec_perm_const_optab
! 	exists.  Use targetm.vectorize.vec_perm_const instead of
! 	targetm.vectorize.vec_perm_const_ok.  Check whether the indices
! 	fit in the vector mode before using a variable permute.
! 	* optabs.c (shift_amt_for_vec_perm_mask): Take a mode and a
! 	vec_perm_indices instead of an rtx.
! 	(expand_vec_perm): Replace with...
! 	(expand_vec_perm_const): ...this new function.  Take the selector
! 	as a vec_perm_indices rather than an rtx.  Also take the mode of
! 	the selector.  Update call to shift_amt_for_vec_perm_mask.
! 	Use targetm.vectorize.vec_perm_const instead of vec_perm_const_optab.
! 	Use vec_perm_indices::new_expanded_vector to expand the original
! 	selector into bytes.  Check whether the indices fit in the vector
! 	mode before using a variable permute.
! 	(expand_vec_perm_var): Make global.
! 	(expand_mult_highpart): Use expand_vec_perm_const.
! 	* fold-const.c: Includes vec-perm-indices.h.
! 	* tree-ssa-forwprop.c: Likewise.
! 	* tree-vect-data-refs.c: Likewise.
! 	* tree-vect-generic.c: Likewise.
! 	* tree-vect-loop.c: Likewise.
! 	* tree-vect-slp.c: Likewise.
! 	* tree-vect-stmts.c: Likewise.
! 	* config/aarch64/aarch64-protos.h (aarch64_expand_vec_perm_const):
! 	Delete.
! 	* config/aarch64/aarch64-simd.md (vec_perm_const<mode>): Delete.
! 	* config/aarch64/aarch64.c (aarch64_expand_vec_perm_const)
! 	(aarch64_vectorize_vec_perm_const_ok): Fuse into...
! 	(aarch64_vectorize_vec_perm_const): ...this new function.
! 	(TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
! 	(TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
! 	* config/arm/arm-protos.h (arm_expand_vec_perm_const): Delete.
! 	* config/arm/vec-common.md (vec_perm_const<mode>): Delete.
! 	* config/arm/arm.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
! 	(TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
! 	(arm_expand_vec_perm_const, arm_vectorize_vec_perm_const_ok): Merge
! 	into...
! 	(arm_vectorize_vec_perm_const): ...this new function.  Explicitly
! 	check for NEON modes.
! 	* config/i386/i386-protos.h (ix86_expand_vec_perm_const): Delete.
! 	* config/i386/sse.md (VEC_PERM_CONST, vec_perm_const<mode>): Delete.
! 	* config/i386/i386.c (ix86_expand_vec_perm_const_1): Update comment.
! 	(ix86_expand_vec_perm_const, ix86_vectorize_vec_perm_const_ok): Merge
! 	into...
! 	(ix86_vectorize_vec_perm_const): ...this new function.  Incorporate
! 	the old VEC_PERM_CONST conditions.
! 	* config/ia64/ia64-protos.h (ia64_expand_vec_perm_const): Delete.
! 	* config/ia64/vect.md (vec_perm_const<mode>): Delete.
! 	* config/ia64/ia64.c (ia64_expand_vec_perm_const)
! 	(ia64_vectorize_vec_perm_const_ok): Merge into...
! 	(ia64_vectorize_vec_perm_const): ...this new function.
! 	* config/mips/loongson.md (vec_perm_const<mode>): Delete.
! 	* config/mips/mips-msa.md (vec_perm_const<mode>): Delete.
! 	* config/mips/mips-ps-3d.md (vec_perm_constv2sf): Delete.
! 	* config/mips/mips-protos.h (mips_expand_vec_perm_const): Delete.
! 	* config/mips/mips.c (mips_expand_vec_perm_const)
! 	(mips_vectorize_vec_perm_const_ok): Merge into...
! 	(mips_vectorize_vec_perm_const): ...this new function.
! 	* config/powerpcspe/altivec.md (vec_perm_constv16qi): Delete.
! 	* config/powerpcspe/paired.md (vec_perm_constv2sf): Delete.
! 	* config/powerpcspe/spe.md (vec_perm_constv2si): Delete.
! 	* config/powerpcspe/vsx.md (vec_perm_const<mode>): Delete.
! 	* config/powerpcspe/powerpcspe-protos.h (altivec_expand_vec_perm_const)
! 	(rs6000_expand_vec_perm_const): Delete.
! 	* config/powerpcspe/powerpcspe.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK):
! 	Delete.
! 	(TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
! 	(altivec_expand_vec_perm_const_le): Take each operand individually.
! 	Operate on constant selectors rather than rtxes.
! 	(altivec_expand_vec_perm_const): Likewise.  Update call to
! 	altivec_expand_vec_perm_const_le.
! 	(rs6000_expand_vec_perm_const): Delete.
! 	(rs6000_vectorize_vec_perm_const_ok): Delete.
! 	(rs6000_vectorize_vec_perm_const): New function.
! 	(rs6000_do_expand_vec_perm): Take a vec_perm_builder instead of
! 	an element count and rtx array.
! 	(rs6000_expand_extract_even): Update call accordingly.
! 	(rs6000_expand_interleave): Likewise.
! 	* config/rs6000/altivec.md (vec_perm_constv16qi): Delete.
! 	* config/rs6000/paired.md (vec_perm_constv2sf): Delete.
! 	* config/rs6000/vsx.md (vec_perm_const<mode>): Delete.
! 	* config/rs6000/rs6000-protos.h (altivec_expand_vec_perm_const)
! 	(rs6000_expand_vec_perm_const): Delete.
! 	* config/rs6000/rs6000.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
! 	(TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
! 	(altivec_expand_vec_perm_const_le): Take each operand individually.
! 	Operate on constant selectors rather than rtxes.
! 	(altivec_expand_vec_perm_const): Likewise.  Update call to
! 	altivec_expand_vec_perm_const_le.
! 	(rs6000_expand_vec_perm_const): Delete.
! 	(rs6000_vectorize_vec_perm_const_ok): Delete.
! 	(rs6000_vectorize_vec_perm_const): New function.  Remove stray
! 	reference to the SPE evmerge intructions.
! 	(rs6000_do_expand_vec_perm): Take a vec_perm_builder instead of
! 	an element count and rtx array.
! 	(rs6000_expand_extract_even): Update call accordingly.
! 	(rs6000_expand_interleave): Likewise.
! 	* config/sparc/sparc.md (vec_perm_constv8qi): Delete in favor of...
! 	* config/sparc/sparc.c (sparc_vectorize_vec_perm_const): ...this
! 	new function.
! 	(TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
  
! 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* optabs.c (expand_vec_perm_1): Assert that SEL has an integer
! 	vector mode and that that mode matches the mode of the data
! 	being permuted.
! 	(expand_vec_perm): Split handling of non-CONST_VECTOR selectors
! 	out into expand_vec_perm_var.  Do all CONST_VECTOR handling here,
! 	directly using expand_vec_perm_1 when forcing selectors into
! 	registers.
! 	(expand_vec_perm_var): New function, split out from expand_vec_perm.
  
! 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* optabs-query.h (can_vec_perm_p): Delete.
! 	(can_vec_perm_var_p, can_vec_perm_const_p): Declare.
! 	* optabs-query.c (can_vec_perm_p): Split into...
! 	(can_vec_perm_var_p, can_vec_perm_const_p): ...these two functions.
! 	(can_mult_highpart_p): Use can_vec_perm_const_p to test whether a
! 	particular selector is valid.
! 	* tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
! 	* tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
! 	(vect_grouped_load_supported): Likewise.
! 	(vect_shift_permute_load_chain): Likewise.
! 	* tree-vect-slp.c (vect_build_slp_tree_1): Likewise.
! 	(vect_transform_slp_perm_load): Likewise.
! 	* tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
! 	(vectorizable_bswap): Likewise.
! 	(vect_gen_perm_mask_checked): Likewise.
! 	* fold-const.c (fold_ternary_loc): Likewise.  Don't take
! 	implementations of variable permutation vectors into account
! 	when deciding which selector to use.
! 	* tree-vect-loop.c (have_whole_vector_shift): Don't check whether
! 	vec_perm_const_optab is supported; instead use can_vec_perm_const_p
! 	with a false third argument.
! 	* tree-vect-generic.c (lower_vec_perm): Use can_vec_perm_const_p
! 	to test whether the constant selector is valid and can_vec_perm_var_p
! 	to test whether a variable selector is valid.
  
! 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* optabs-query.h (can_vec_perm_p): Take a const vec_perm_indices *.
! 	* optabs-query.c (can_vec_perm_p): Likewise.
! 	* fold-const.c (fold_vec_perm): Take a const vec_perm_indices &
! 	instead of vec_perm_indices.
! 	* tree-vectorizer.h (vect_gen_perm_mask_any): Likewise,
! 	(vect_gen_perm_mask_checked): Likewise,
! 	* tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise,
! 	(vect_gen_perm_mask_checked): Likewise,
  
! 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
  
! 	* optabs-query.h (qimode_for_vec_perm): Declare.
! 	* optabs-query.c (can_vec_perm_p): Split out qimode search to...
! 	(qimode_for_vec_perm): ...this new function.
! 	* optabs.c (expand_vec_perm): Use qimode_for_vec_perm.
  
! 2018-01-02  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
  
! 	* rtlanal.c (canonicalize_condition): Return 0 if final rtx
! 	does not have a conditional at the top.
  
! 2018-01-02  Richard Biener  <rguenther@suse.de>
  
! 	* ipa-inline.c (big_speedup_p): Fix expression.
  
! 2018-01-02  Jan Hubicka  <hubicka@ucw.cz>
  
! 	PR target/81616
! 	* config/i386/x86-tune-costs.h: Increase cost of integer load costs
! 	for generic 4->6.
  
! 2018-01-02  Jan Hubicka  <hubicka@ucw.cz>
  
! 	PR target/81616
! 	Generic tuning.
! 	* x86-tune-costs.h (generic_cost): Reduce cost of FDIV 20->17,
! 	cost of sqrt 20->14, DIVSS 18->13, DIVSD 32->17, SQRtSS 30->14
! 	and SQRTsD 58->18, cond_not_taken_branch_cost. 2->1. Increase
! 	cond_taken_branch_cost 3->4.
  
! 2018-01-01  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/83581
! 	* tree-loop-distribution.c (pass_loop_distribution::execute): Return
! 	TODO_cleanup_cfg if any changes have been made.
  
! 	PR middle-end/83608
! 	* expr.c (store_expr_with_bounds): Use simplify_gen_subreg instead of
! 	convert_modes if target mode has the right side, but different mode
! 	class.
  
! 	PR middle-end/83609
! 	* expr.c (expand_assignment): Fix up a typo in simplify_gen_subreg
! 	last argument when extracting from CONCAT.  If either from_real or
! 	from_imag is NULL, use expansion through memory.  If result is not
! 	a CONCAT and simplify_gen_subreg fails, try to simplify_gen_subreg
! 	the parts directly to inner mode, if even that fails, use expansion
! 	through memory.
  
! 	PR middle-end/83623
! 	* expmed.c (expand_shift_1): For 2-byte rotates by BITS_PER_UNIT,
! 	check for bswap in mode rather than HImode and use that in expand_unop
! 	too.
  
! Copyright (C) 2018 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-7.3.0/gcc/ChangeLog-2017 gcc-8.1.0/gcc/ChangeLog-2017
*** gcc-7.3.0/gcc/ChangeLog-2017	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ChangeLog-2017	Wed Jan  3 09:17:54 2018
***************
*** 0 ****
--- 1,41783 ----
+ 2017-12-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/83536
+ 	* config/i386/i386.c (ix86_attribute_table): Remove excess
+ 	initializer for "shared" attribute.
+ 
+ 2017-12-30  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	PR libgomp/83046
+ 	* omp-expand.c (expand_omp_target): If in_lto_p, mark offload_funcs with
+ 	DECL_PRESERVE_P.
+ 	* lto-streamer-out.c (prune_offload_funcs): New function.  Remove
+ 	offload_funcs entries that no longer have a corresponding cgraph_node.
+ 	Mark the remaining ones as DECL_PRESERVE_P.
+ 	(output_lto): Call prune_offload_funcs.
+ 
+ 2017-12-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* config/i386/sse.md (vgf2p8affineinvqb_<mode><mask_name>,
+ 	vgf2p8affineqb_<mode><mask_name>, vgf2p8mulb_<mode><mask_name>,
+ 	vpshrd_<mode><mask_name>, vpshld_<mode><mask_name>,
+ 	vpshrdv_<mode>, vpshrdv_<mode>_mask, vpshrdv_<mode>_maskz,
+ 	vpshrdv_<mode>_maskz_1, vpshldv_<mode>, vpshldv_<mode>_mask,
+ 	vpshldv_<mode>_maskz, vpshldv_<mode>_maskz_1, vpdpbusd_<mode>,
+ 	vpdpbusd_<mode>_mask, vpdpbusd_<mode>_maskz, vpdpbusd_<mode>_maskz_1,
+ 	vpdpbusds_<mode>, vpdpbusds_<mode>_mask, vpdpbusds_<mode>_maskz,
+ 	vpdpbusds_<mode>_maskz_1, vpdpwssd_<mode>, vpdpwssd_<mode>_mask,
+ 	vpdpwssd_<mode>_maskz, vpdpwssd_<mode>_maskz_1, vpdpwssds_<mode>,
+ 	vpdpwssds_<mode>_mask, vpdpwssds_<mode>_maskz,
+ 	vpdpwssds_<mode>_maskz_1, vaesdec_<mode>, vaesdeclast_<mode>,
+ 	vaesenc_<mode>, vpclmulqdq_<mode>,
+ 	avx512vl_vpshufbitqmb<mode><mask_scalar_merge_name>): Formatting fixes.
+ 
+ 2017-12-28  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	* builtins.def: (_Float<N> and _Float<N>X BUILT_IN_CEIL): Add
+ 	_Float<N> and _Float<N>X variants for rounding built-in
+ 	functions.
+ 	(_Float<N> and _Float<N>X BUILT_IN_FLOOR): Likewise.
+ 	(_Float<N> and _Float<N>X BUILT_IN_NEARBYINT): Likewise.
+ 	(_Float<N> and _Float<N>X BUILT_IN_RINT): Likewise.
+ 	(_Float<N> and _Float<N>X BUILT_IN_ROUND): Likewise.
+ 	(_Float<N> and _Float<N>X BUILT_IN_TRUNC): Likewise.
+ 	* builtins.c (mathfn_built_in_2): Likewise.
+ 	* internal-fn.def (CEIL): Likewise.
+ 	(FLOOR): Likewise.
+ 	(NEARBYINT): Likewise.
+ 	(RINT): Likewise.
+ 	(ROUND): Likewise.
+ 	(TRUNC): Likewise.
+ 	* convert.c (convert_to_integer_1): Likewise.
+ 	* fold-const.c (tree_call_nonnegative_warnv_p): Likewise.
+ 	(integer_valued_real_call_p): Likewise.
+ 	* fold-const-call.c (fold_const_call_ss): Likewise.
+ 	* gencfn-macros.c (print_case_cfn): Change CFN and operator
+ 	printers to take a const char * suffix instead of a bool.
+ 	(print_define_operator_list): Likewise.
+ 	(fltall_suffixes): New list of suffixes, that include the
+ 	traditional suffixes as well as all of the _Float<N> and
+ 	_Float<N>X suffixes.
+ 	(main): For _Float<N> and _Float<N>X functions, emit both
+ 	<name>_FN and <name>_ALL variants.  The <macro>_FN variant only
+ 	has the _Float<N> and _Float<N>X case names or operators.  The
+ 	<name>_ALL variant has both the traditional and the
+ 	_Float<N>/_Float<N>X case names or operators.
+ 	* match.pd (COPYSIGN optimizations): Provide optimizations for
+ 	_Float<N> and _Float<N>X types where possible.
+ 	(MIN/MAX optimizations): Likewise.
+ 	(sqrt optimizations): Likewise.
+ 	(rounding optimizations): Likewise.
+ 
+ 2017-12-28  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* config/powerpcspe/powerpcspe.md (ieee_128bit_negative_zero): Use
+ 	gen_int_mode rather than GEN_INT.
+ 	* config/rs6000/rs6000.md (ieee_128bit_negative_zero): Likewise.
+ 
+ 2017-12-28  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* emit-rtl.c (gen_const_vec_series): Use valid_for_const_vector_p
+ 	instead of CONSTANT_P.
+ 	(gen_vec_series): Likewise.
+ 	* simplify-rtx.c (simplify_binary_operation_1): Likewise.
+ 
+ 2017-12-28  Andreas Schwab  <schwab@linux-m68k.org>
+ 
+ 	* config/m68k/m68k.md (ashrdi3_const1, lshrdi3_const1): Add
+ 	CC_STATUS_INIT.
+ 
+ 2017-12-27  Kugan Vivekanandarajah  <kuganv@linaro.org>
+ 
+ 	* config/aarch64/aarch64-simd.md (aarch64_ld1x2<VQ:mode>): New.
+ 	(aarch64_ld1x2<VDC:mode>): Likewise.
+ 	(aarch64_simd_ld1<mode>_x2): Likewise.
+ 	(aarch64_simd_ld1<mode>_x2): Likewise.
+ 	* config/aarch64/arm_neon.h (vld1_u8_x2): New.
+ 	(vld1_s8_x2): Likewise.
+ 	(vld1_u16_x2): Likewise.
+ 	(vld1_s16_x2): Likewise.
+ 	(vld1_u32_x2): Likewise.
+ 	(vld1_s32_x2): Likewise.
+ 	(vld1_u64_x2): Likewise.
+ 	(vld1_s64_x2): Likewise.
+ 	(vld1_f16_x2): Likewise.
+ 	(vld1_f32_x2): Likewise.
+ 	(vld1_f64_x2): Likewise.
+ 	(vld1_p8_x2): Likewise.
+ 	(vld1_p16_x2): Likewise.
+ 	(vld1_p64_x2): Likewise.
+ 	(vld1q_u8_x2): Likewise.
+ 	(vld1q_s8_x2): Likewise.
+ 	(vld1q_u16_x2): Likewise.
+ 	(vld1q_s16_x2): Likewise.
+ 	(vld1q_u32_x2): Likewise.
+ 	(vld1q_s32_x2): Likewise.
+ 	(vld1q_u64_x2): Likewise.
+ 	(vld1q_s64_x2): Likewise.
+ 	(vld1q_f16_x2): Likewise.
+ 	(vld1q_f32_x2): Likewise.
+ 	(vld1q_f64_x2): Likewise.
+ 	(vld1q_p8_x2): Likewise.
+ 	(vld1q_p16_x2): Likewise.
+ 	(vld1q_p64_x2): Likewise.
+ 
+ 2017-12-27  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR tree-optimization/83552
+ 	* tree-ssa-strlen.c (fold_strstr_to_strncmp): Assign result
+ 	of get_string_lenth to a SSA_NAME if not a GIMPLE value.
+ 
+ 2017-12-27  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	* config/nvptx/nvptx.c (nvptx_option_override): Disable
+ 	-gstatement-frontiers.
+ 
+ 2017-12-26  Alexander Monakov  <amonakov@ispras.ru>
+ 
+ 	PR rtl-optimization/83513
+ 	* sel-sched.c (sel_rank_for_schedule): Order by non-zero usefulness
+ 	before priority comparison.
+ 
+ 2017-12-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/83488
+ 	* config/i386/i386.opt (-mavx512vpopcntdq, -mmavx512bitalg): Move from
+ 	ix86_isa_flags2 to ix86_isa_flags.
+ 	* config/i386/i386-c.c (ix86_target_macros_internal): Test
+ 	OPTION_MASK_ISA_AVX512BITALG and OPTION_MASK_ISA_AVX512VPOPCNTDQ in
+ 	isa_flags rather than isa_flags2.
+ 	* config/i386/i386.c (ix86_target_string): Move -mavx512vpopcntdq
+ 	and -mavx512bitalg from isa2_opts to isa_opts.
+ 	(ix86_option_override_internal): Test OPTION_MASK_ISA_AVX512VPOPCNTDQ
+ 	in x_ix86_isa_flags_explicit rather than x_ix86_isa_flags2_explicit
+ 	and set it in x_ix86_isa_flags rather than x_ix86_isa_flags2.
+ 	Formatting fixes.
+ 	(def_builtin): Treat OPTION_MASK_ISA_AVX512BW or
+ 	OPTION_MASK_ISA_AVX512F ored with another option similarly to
+ 	OPTION_MASK_ISA_AVX512VL.  Even for OPTION_MASK_ISA_AVX512VL don't
+ 	clear it if mask is just OPTION_MASK_ISA_AVX512VL itself.
+ 	(ix86_expand_builtin): Don't handle OPTION_MASK_ISA_GFNI and
+ 	OPTION_MASK_ISA_VPCLMULQDQ specially, instead handle
+ 	OPTION_MASK_ISA_AVX512BW and OPTION_MASK_ISA_AVX512F that way.
+ 	* config/i386/i386-builtin.def: Move AVX512VPOPCNTDQ and AVX512BITALG
+ 	builtins from bdesc_args2 to bdesc_args section.
+ 	(__builtin_ia32_compressstoreuqi512_mask,
+ 	__builtin_ia32_compressstoreuhi512_mask,
+ 	__builtin_ia32_compressstoreuqi256_mask,
+ 	__builtin_ia32_expandloadqi512_mask,
+ 	__builtin_ia32_expandloadqi512_maskz,
+ 	__builtin_ia32_expandloadhi512_mask,
+ 	__builtin_ia32_expandloadhi512_maskz,
+ 	__builtin_ia32_compressqi512_mask, __builtin_ia32_compresshi512_mask,
+ 	__builtin_ia32_compressqi256_mask, __builtin_ia32_expandqi512_mask,
+ 	__builtin_ia32_expandqi512_maskz, __builtin_ia32_expandhi512_mask,
+ 	__builtin_ia32_expandhi512_maskz, __builtin_ia32_expandqi256_mask,
+ 	__builtin_ia32_expandqi256_maskz, __builtin_ia32_vpshrd_v32hi_mask,
+ 	__builtin_ia32_vpshld_v32hi_mask, __builtin_ia32_vpshrdv_v32hi_mask,
+ 	__builtin_ia32_vpshrdv_v32hi_maskz, __builtin_ia32_vpshldv_v32hi_mask,
+ 	__builtin_ia32_vpshldv_v32hi_maskz,
+ 	__builtin_ia32_vpopcountb_v64qi_mask,
+ 	__builtin_ia32_vpopcountw_v32hi_mask,
+ 	__builtin_ia32_vpshufbitqmb512_mask,
+ 	__builtin_ia32_vpshufbitqmb256_mask): Add
+ 	" | OPTION_MASK_ISA_AVX512BW".
+ 	(__builtin_ia32_expandloadqi256_mask,
+ 	__builtin_ia32_expandloadqi256_maskz,
+ 	__builtin_ia32_vpopcountb_v32qi_mask): Add
+ 	" | OPTION_MASK_ISA_AVX512VL | OPTION_MASK_ISA_AVX512BW".
+ 	(__builtin_ia32_expandloadhi256_mask,
+ 	__builtin_ia32_expandloadhi256_maskz,
+ 	__builtin_ia32_expandloadqi128_mask,
+ 	__builtin_ia32_expandloadqi128_maskz,
+ 	__builtin_ia32_expandloadhi128_mask,
+ 	__builtin_ia32_expandloadhi128_maskz,
+ 	__builtin_ia32_vpshrd_v16hi, __builtin_ia32_vpshrd_v16hi_mask,
+ 	__builtin_ia32_vpshrd_v8hi, __builtin_ia32_vpshrd_v8hi_mask,
+ 	__builtin_ia32_vpshrd_v8si, __builtin_ia32_vpshrd_v8si_mask,
+ 	__builtin_ia32_vpshrd_v4si, __builtin_ia32_vpshrd_v4si_mask,
+ 	__builtin_ia32_vpshrd_v4di, __builtin_ia32_vpshrd_v4di_mask,
+ 	__builtin_ia32_vpshrd_v2di, __builtin_ia32_vpshrd_v2di_mask,
+ 	__builtin_ia32_vpshld_v16hi, __builtin_ia32_vpshld_v16hi_mask,
+ 	__builtin_ia32_vpshld_v8hi, __builtin_ia32_vpshld_v8hi_mask,
+ 	__builtin_ia32_vpshld_v8si, __builtin_ia32_vpshld_v8si_mask,
+ 	__builtin_ia32_vpshld_v4si, __builtin_ia32_vpshld_v4si_mask,
+ 	__builtin_ia32_vpshld_v4di, __builtin_ia32_vpshld_v4di_mask,
+ 	__builtin_ia32_vpshld_v2di, __builtin_ia32_vpshld_v2di_mask,
+ 	__builtin_ia32_vpshrdv_v16hi, __builtin_ia32_vpshrdv_v16hi_mask,
+ 	__builtin_ia32_vpshrdv_v16hi_maskz, __builtin_ia32_vpshrdv_v8hi,
+ 	__builtin_ia32_vpshrdv_v8hi_mask, __builtin_ia32_vpshrdv_v8hi_maskz,
+ 	__builtin_ia32_vpshrdv_v8si, __builtin_ia32_vpshrdv_v8si_mask,
+ 	__builtin_ia32_vpshrdv_v8si_maskz, __builtin_ia32_vpshrdv_v4si,
+ 	__builtin_ia32_vpshrdv_v4si_mask, __builtin_ia32_vpshrdv_v4si_maskz,
+ 	__builtin_ia32_vpshrdv_v4di, __builtin_ia32_vpshrdv_v4di_mask,
+ 	__builtin_ia32_vpshrdv_v4di_maskz, __builtin_ia32_vpshrdv_v2di,
+ 	__builtin_ia32_vpshrdv_v2di_mask, __builtin_ia32_vpshrdv_v2di_maskz,
+ 	__builtin_ia32_vpshldv_v16hi, __builtin_ia32_vpshldv_v16hi_mask,
+ 	__builtin_ia32_vpshldv_v16hi_maskz, __builtin_ia32_vpshldv_v8hi,
+ 	__builtin_ia32_vpshldv_v8hi_mask, __builtin_ia32_vpshldv_v8hi_maskz,
+ 	__builtin_ia32_vpshldv_v8si, __builtin_ia32_vpshldv_v8si_mask,
+ 	__builtin_ia32_vpshldv_v8si_maskz, __builtin_ia32_vpshldv_v4si,
+ 	__builtin_ia32_vpshldv_v4si_mask, __builtin_ia32_vpshldv_v4si_maskz,
+ 	__builtin_ia32_vpshldv_v4di, __builtin_ia32_vpshldv_v4di_mask,
+ 	__builtin_ia32_vpshldv_v4di_maskz, __builtin_ia32_vpshldv_v2di,
+ 	__builtin_ia32_vpshldv_v2di_mask, __builtin_ia32_vpshldv_v2di_maskz,
+ 	__builtin_ia32_vpopcountb_v32qi, __builtin_ia32_vpopcountb_v16qi,
+ 	__builtin_ia32_vpopcountb_v16qi_mask, __builtin_ia32_vpopcountw_v16hi,
+ 	__builtin_ia32_vpopcountw_v16hi_mask, __builtin_ia32_vpopcountw_v8hi,
+ 	__builtin_ia32_vpopcountw_v8hi_mask): Add
+ 	" | OPTION_MASK_ISA_AVX512VL".
+ 	* config/i386/avx512vbmi2intrin.h (_mm512_shrdi_epi16,
+ 	_mm512_shrdi_epi32, _mm512_mask_shrdi_epi32, _mm512_maskz_shrdi_epi32,
+ 	_mm512_shrdi_epi64, _mm512_mask_shrdi_epi64, _mm512_maskz_shrdi_epi64,
+ 	_mm512_shldi_epi16, _mm512_shldi_epi32, _mm512_mask_shldi_epi32,
+ 	_mm512_maskz_shldi_epi32, _mm512_shldi_epi64, _mm512_mask_shldi_epi64,
+ 	_mm512_maskz_shldi_epi64, _mm512_shrdv_epi16, _mm512_shrdv_epi32,
+ 	_mm512_mask_shrdv_epi32, _mm512_maskz_shrdv_epi32, _mm512_shrdv_epi64,
+ 	_mm512_mask_shrdv_epi64, _mm512_maskz_shrdv_epi64, _mm512_shldv_epi16,
+ 	_mm512_shldv_epi32, _mm512_mask_shldv_epi32, _mm512_maskz_shldv_epi32,
+ 	_mm512_shldv_epi64, _mm512_mask_shldv_epi64,
+ 	_mm512_maskz_shldv_epi64): Don't require avx512bw for these intrinsics.
+ 	* config/i386/avx512bitalgintrin.h (_mm_bitshuffle_epi64_mask,
+ 	_mm_mask_bitshuffle_epi64_mask): Likewise.
+ 	* common/config/i386/i386-common.c
+ 	(OPTION_MASK_ISA_AVX512VPOPCNTDQ_SET,
+ 	OPTION_MASK_ISA_AVX512BITALG_SET): Or in OPTION_MASK_ISA_AVX512F_SET.
+ 	(OPTION_MASK_ISA_AVX512F_UNSET): Or in
+ 	OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET and
+ 	OPTION_MASK_ISA_AVX512BITALG_UNSET.
+ 	(OPTION_MASK_ISA2_AVX512F_UNSET,
+ 	OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET): Define.
+ 	(ix86_handle_option): For -mno-general-regs-only, clear from
+ 	ix86_isa_flags2 OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET rather than
+ 	just OPTION_MASK_ISA_MPX.  For -mno-sse{,2,3,4,4.1,4.2,avx,avx2} and
+ 	-mno-ssse3 clear OPTION_MASK_ISA2_AVX512F_UNSET bits from
+ 	ix86_isa_flags2.  For -mno-avx512f likewise, instead of masking
+ 	individually listed ISAs.  For -m{,no-}avx512{vpopcntdq,bitalg} adjust
+ 	for moving from ix86_isa_flags2 to ix86_isa_flags.
+ 
+ 2017-12-23  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/83553
+ 	* fold-const.c (struct contains_label_data): New type.
+ 	(contains_label_1): Return non-NULL even for CASE_LABEL_EXPR, unless
+ 	inside of a SWITCH_BODY seen during the walk.
+ 	(contains_label_p): Use walk_tree instead of
+ 	walk_tree_without_duplicates, prepare data for contains_label_1 and
+ 	provide own pset.
+ 
+ 2017-12-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/83547
+ 	* tree-iterator.c (alloc_stmt_list): Start with cleared
+ 	TREE_SIDE_EFFECTS regardless whether a new STATEMENT_LIST is allocated
+ 	or old one reused.
+ 
+ 	PR target/83488
+ 	* config/i386/avx512vnniintrin.h: Don't check for __AVX512F__ nor
+ 	enable avx512f explicitly in #pragma GCC target.
+ 	* config/i386/i386-builtin.def (__builtin_ia32_vpdpbusd_v8si,
+ 	__builtin_ia32_vpdpbusd_v8si_mask, __builtin_ia32_vpdpbusd_v8si_maskz,
+ 	__builtin_ia32_vpdpbusd_v4si, __builtin_ia32_vpdpbusd_v4si_mask,
+ 	__builtin_ia32_vpdpbusd_v4si_maskz, __builtin_ia32_vpdpbusds_v8si,
+ 	__builtin_ia32_vpdpbusds_v8si_mask,
+ 	__builtin_ia32_vpdpbusds_v8si_maskz, __builtin_ia32_vpdpbusds_v4si,
+ 	__builtin_ia32_vpdpbusds_v4si_mask,
+ 	__builtin_ia32_vpdpbusds_v4si_maskz, __builtin_ia32_vpdpwssd_v8si,
+ 	__builtin_ia32_vpdpwssd_v8si_mask, __builtin_ia32_vpdpwssd_v8si_maskz,
+ 	__builtin_ia32_vpdpwssd_v4si, __builtin_ia32_vpdpwssd_v4si_mask,
+ 	__builtin_ia32_vpdpwssd_v4si_maskz, __builtin_ia32_vpdpwssds_v8si,
+ 	__builtin_ia32_vpdpwssds_v8si_mask,
+ 	__builtin_ia32_vpdpwssds_v8si_maskz, __builtin_ia32_vpdpwssds_v4si,
+ 	__builtin_ia32_vpdpwssds_v4si_mask,
+ 	__builtin_ia32_vpdpwssds_v4si_maskz): Use
+ 	OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL instead of
+ 	just OPTION_MASK_ISA_AVX512VNNI.
+ 
+ 2017-12-22  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR lto/82027
+ 	* lto-cgraph.c (output_cgraph_opt_summary_p): Also check former
+ 	clones.
+ 
+ 2017-12-22  Julia Koval  <julia.koval@intel.com>
+ 	    Sebastian Peryt  <sebastian.peryt@intel.com>
+ 
+ 	* common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512BITALG_SET,
+ 	OPTION_MASK_ISA_AVX512BITALG_UNSET): New.
+ 	(ix86_handle_option): Handle -mavx512bitalg, fix 4VNNIW formatting.
+ 	* config.gcc: Add avx512vpopcntdqvlintrin.h and avx512bitalgintrin.h.
+ 	* config/i386/avx512bitalgintrin.h (_mm512_popcnt_epi8, _mm512_popcnt_epi16,
+ 	_mm512_mask_popcnt_epi8, _mm512_maskz_popcnt_epi8, _mm512_mask_popcnt_epi16,
+ 	_mm512_maskz_popcnt_epi16, _mm512_bitshuffle_epi64_mask, _mm256_popcnt_epi8,
+ 	_mm512_mask_bitshuffle_epi64_mask, _mm256_mask_popcnt_epi8, _mm_popcnt_epi8,
+ 	_mm256_maskz_popcnt_epi8, _mm_bitshuffle_epi64_mask, _mm256_popcnt_epi16,
+ 	_mm_mask_bitshuffle_epi64_mask, _mm256_bitshuffle_epi64_mask,
+ 	_mm256_mask_bitshuffle_epi64_mask, _mm_popcnt_epi16, _mm_maskz_popcnt_epi8,
+ 	_mm256_mask_popcnt_epi16, _mm256_maskz_popcnt_epi16, _mm_mask_popcnt_epi8,
+ 	_mm_mask_popcnt_epi16, _mm_maskz_popcnt_epi16): New intrinsics.
+ 	* config/i386/avx512vpopcntdqvlintrin.h (_mm_popcnt_epi32, _mm_popcnt_epi64,
+ 	_mm_mask_popcnt_epi32, _mm_maskz_popcnt_epi32, _mm256_popcnt_epi32,
+ 	_mm256_mask_popcnt_epi32, _mm256_maskz_popcnt_epi32, _mm_mask_popcnt_epi64,
+ 	_mm_maskz_popcnt_epi64, _mm256_popcnt_epi64, _mm256_mask_popcnt_epi64,
+ 	_mm256_maskz_popcnt_epi64): New intrinsics.
+ 	* config/i386/cpuid.h (bit_AVX512BITALG): New bit.
+ 	* config/i386/driver-i386.c (host_detect_local_cpu): Detect -mavx512bitalg.
+ 	* config/i386/i386-builtin-types.def (V64QI_FTYPE_V64QI, V64QI_FTYPE_V64QI,
+ 	V4DI_FTYPE_V4DI, UHI_FTYPE_V2DI_V2DI_UHI, USI_FTYPE_V4DI_V4DI_USI,
+ 	V4SI_FTYPE_V4SI_V4SI_UHI, V8SI_FTYPE_V8SI_V8SI_UHI): New types.
+ 	* config/i386/i386-builtin.def (__builtin_ia32_vpopcountq_v4di,
+ 	__builtin_ia32_vpopcountq_v4di_mask, __builtin_ia32_vpopcountq_v2di,
+ 	__builtin_ia32_vpopcountq_v2di_mask, __builtin_ia32_vpopcountd_v4si,
+ 	__builtin_ia32_vpopcountd_v4si_mask, __builtin_ia32_vpopcountd_v8si,
+ 	__builtin_ia32_vpopcountd_v8si_mask, __builtin_ia32_vpopcountb_v64qi,
+ 	__builtin_ia32_vpopcountb_v64qi_mask, __builtin_ia32_vpopcountb_v32qi,
+ 	__builtin_ia32_vpopcountb_v32qi_mask, __builtin_ia32_vpopcountb_v16qi,
+ 	__builtin_ia32_vpopcountb_v16qi_mask, __builtin_ia32_vpopcountw_v32hi,
+ 	__builtin_ia32_vpopcountw_v32hi_mask, __builtin_ia32_vpopcountw_v16hi,
+ 	__builtin_ia32_vpopcountw_v16hi_mask, __builtin_ia32_vpopcountw_v8hi,
+ 	__builtin_ia32_vpopcountw_v8hi_mask, __builtin_ia32_vpshufbitqmb128_mask,
+ 	__builtin_ia32_vpshufbitqmb256_mask,
+ 	__builtin_ia32_vpshufbitqmb512_mask): New builtins.
+ 	* config/i386/i386-c.c (__AVX512BITALG__): New.
+ 	* config/i386/i386.c (isa2_opts): Add -mavx512bitalg.
+ 	(ix86_valid_target_attribute_inner_p): Ditto.
+ 	(ix86_expand_args_builtin): Handle new types.
+ 	* config/i386/i386.h (TARGET_AVX512BITALG, TARGET_AVX512BITALG_P): New.
+ 	* config/i386/i386.opt: Add -mavx512bitalg.
+ 	* config/i386/immintrin.h: Add avx512vpopcntdqvlintrin.h and
+ 	avx512bitalgintrin.h.
+ 	* config/i386/sse.md (VI48_AVX512VLBW): New iterator.
+ 	(vpopcount<mode><mask_name>): Add more types.
+ 	(avx512vl_vpshufbitqmb<mode><mask_scalar_merge_name>): New.
+ 	* doc/invoke.texi: Add -mavx512bitalg and -mavx512vpopcntdq.
+ 
+ 2017-12-22  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
+ 
+ 	* common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512VNNI_SET):
+ 	Or in OPTION_MASK_ISA_AVX512F_SET.
+ 	(OPTION_MASK_ISA_AVX512F_UNSET): Or in
+ 	OPTION_MASK_ISA_AVX512VNNI_UNSET.
+ 	(ix86_handle_option): Adjust for
+ 	OPTION_MASK_ISA_AVX512VNNI_*SET being in ix86_isa_flags.
+ 	* config/i386/i386-builtin.def: Move VNNI builtins from ARGS2
+ 	section to ARGS.
+ 	* config/i386/i386-c.c: Check for OPTION_MASK_ISA_AVX512VNNI in
+ 	isa_flag instead of isa_flag2.
+ 	* config/i386/i386.c (ix86_target_string): Move -mavx512vnni from
+ 	isa_opts2 to isa_opts.
+ 	* config/i386/i386.opt (mavx512vnni): Move from ix86_isa_flags2
+ 	to ix86_isa_flags.
+ 
+ 2017-12-22  Mike Stump  <mikestump@comcast.net>
+             Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* doc/extend.texi (Loop-Specific Pragmas): Document pragma GCC unroll.
+ 
+ 2017-12-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/83487
+ 	* config/i386/i386.c (ix86_function_arg_boundary): Return
+ 	PARM_BOUNDARY for TYPE_EMPTY_P types.
+ 
+ 	PR c/83448
+ 	* gimple-ssa-sprintf.c (maybe_warn): Don't call set_caret_index
+ 	if navail is >= dir.len.
+ 
+ 2017-12-21  Steve Ellcey  <sellcey@cavium.com>
+ 
+ 	* config/aarch64/t-aarch64-linux (MULTILIB_OSDIRNAMES): Fix
+ 	triplet for ilp32.
+ 
+ 2017-12-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/80747
+ 	PR rtl-optimization/83512
+ 	* cfgrtl.c (force_nonfallthru_and_redirect): When splitting
+ 	succ edge from ENTRY, copy partition from e->dest to the newly
+ 	created bb.
+ 	* bb-reorder.c (reorder_basic_blocks_simple): If last_tail is
+ 	ENTRY, use BB_PARTITION of its successor block as current_partition.
+ 	Don't copy partition when splitting succ edge from ENTRY.
+ 
+ 	PR tree-optimization/83523
+ 	* tree-ssa-math-opts.c (is_widening_mult_p): Return false if
+ 	for INTEGER_TYPE TYPE_OVERFLOW_TRAPS.
+ 	(convert_mult_to_fma): Likewise.
+ 
+ 	PR tree-optimization/83521
+ 	* tree-ssa-phiopt.c (factor_out_conditional_conversion): Use
+ 	gimple_build_assign without code on result of
+ 	fold_build1 (VIEW_CONVERT_EXPR, ...), as it might not create
+ 	a VIEW_CONVERT_EXPR.
+ 
+ 2017-12-21  Andrew Pinski  <apinski@cavium.com>
+ 	    Steve Ellcey  <sellcey@cavium.com>
+ 
+ 	* config/aarch64/t-aarch64-linux (MULTILIB_OSDIRNAMES): Handle
+ 	multi-arch for ilp32.
+ 
+ 2017-12-21  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/83467
+ 	* config/i386/i386.md (*ashl<mode>3_mask): Add operand
+ 	constraints to operand 2.
+ 	(*ashl<mode>3_mask_1): Ditto.
+ 	(*<shift_insn><mode>3_mask): Ditto.
+ 	(*<shift_insn><mode>3_mask_1): Ditto.
+ 	(*<rotate_insn><mode>3_mask): Ditto.
+ 	(*<rotate_insn><mode>3_mask_1): Ditto.
+ 
+ 2017-12-21  Alexandre Oliva  <aoliva@redhat.com>
+ 
+ 	* reorg.c (make_return_insns): Reemit each insn with its own location.
+ 
+ 2017-12-21  James Greenhalgh  <james.greenhalgh@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_expand_vector_init): Modify code
+ 	generation for cases where splatting a value is not useful.
+ 	* simplify-rtx.c (simplify_ternary_operation): Simplify vec_merge
+ 	across a vec_duplicate and a paradoxical subreg forming a vector
+ 	mode to a vec_concat.
+ 
+ 2017-12-21  James Greenhalgh  <james.greenhalgh@arm.com>
+ 
+ 	* combine.c (simplify_set): Do not transform subregs to zero_extends
+ 	if the destination is not a scalar int mode.
+ 
+ 2017-12-21  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR c++/82872
+ 	* convert.c (convert_to_integer_1) <POINTER_TYPE>: Do not return the
+ 	shared zero if the input has overflowed.
+ 
+ 2017-12-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* config/arm/driver-arm.c (arm_cpu_table): Specify dotprod
+ 	support for Cortex-A55 and Cortex-A75.
+ 
+ 2017-12-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* common/config/arm/arm-common.c (compare_opt_names): Add function
+ 	comment.  Use strcmp instead of manual loop.
+ 
+ 2017-12-21  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR gcov-profile/83509
+ 	* gcov-dump.c (dump_gcov_file): Do not read info about
+ 	support_unexecuted_blocks for gcda files.
+ 
+ 2017-12-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/82973
+ 	* emit-rtl.h (valid_for_const_vec_duplicate_p): Rename to ...
+ 	(valid_for_const_vector_p): ... this.
+ 	* emit-rtl.c (valid_for_const_vec_duplicate_p): Rename to ...
+ 	(valid_for_const_vector_p): ... this.  Adjust function comment.
+ 	(gen_vec_duplicate): Adjust caller.
+ 	* optabs.c (expand_vector_broadcast): Likewise.
+ 	* simplify-rtx.c (simplify_const_unary_operation): Don't optimize into
+ 	CONST_VECTOR if some element isn't simplified valid_for_const_vector_p
+ 	constant.
+ 	(simplify_const_binary_operation): Likewise.  Use CONST_FIXED_P macro
+ 	instead of GET_CODE == CONST_FIXED.
+ 	(simplify_subreg): Use CONST_FIXED_P macro instead of
+ 	GET_CODE == CONST_FIXED.
+ 
+ 	PR target/83488
+ 	* config/i386/i386.c (ix86_target_string): Move -mavx512vbmi2 and
+ 	-mshstk entries from isa_opts2 to isa_opts and -mhle, -mmovbe,
+ 	-mclzero and -mmwaitx entries from isa_opts to isa_opts2.
+ 	(ix86_option_override_internal): Adjust for
+ 	OPTION_MASK_ISA_{HLE,MOVBE,CLZERO,MWAITX} moving to ix86_isa_flags2
+ 	and OPTION_MASK_ISA_SHSTK moving to ix86_isa_flags.
+ 	(BDESC_VERIFYS): Remove SPECIAL_ARGS2 related checks.
+ 	(ix86_init_mmx_sse_builtins): Remove bdesc_special_args2 handling.
+ 	Use def_builtin2 instead of def_builtin for OPTION_MASK_ISA_MWAITX
+ 	and OPTION_MASK_ISA_CLZERO builtins.  Use def_builtin instead of
+ 	def_builtin2 for CET builtins.
+ 	(ix86_expand_builtin): Remove bdesc_special_args2 handling.  Fix
+ 	up formatting in IX86_BUILTIN_RDPID code.
+ 	* config/i386/i386-builtin.def: Move VBMI2 builtins from SPECIAL_ARGS2
+ 	section to SPECIAL_ARGS and from ARGS2 section to ARGS.
+ 	* config/i386/i386.opt (mavx512vbmi2, mshstk): Move from
+ 	ix86_isa_flags2 to ix86_isa_flags.
+ 	(mhle, mmovbe, mclzero, mmwaitx): Move from ix86_isa_flags to
+ 	ix86_isa_flags2.
+ 	* config/i386/i386-c.c (ix86_target_macros_internal): Check for
+ 	OPTION_MASK_ISA_{CLZERO,MWAITX} in isa_flag2 instead of isa_flag.
+ 	Check for OPTION_MASK_ISA_{SHSTK,AVX512VBMI2} in isa_flag instead
+ 	of isa_flag2.
+ 	* common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512VBMI2_SET):
+ 	Or in OPTION_MASK_ISA_AVX512F_SET.
+ 	(OPTION_MASK_ISA_AVX512F_UNSET): Or in
+ 	OPTION_MASK_ISA_AVX512VBMI2_UNSET.
+ 	(ix86_handle_option): Adjust for
+ 	OPTION_MASK_ISA_{SHSTK,AVX512VBMI2}_*SET being in ix86_isa_flags
+ 	and OPTION_MASK_ISA_{MOVBE,MWAITX,CLZERO}_*SET in ix86_isa_flags2.
+ 
+ 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* tree-data-ref.h (prune_runtime_alias_test_list): Take the
+ 	factor as a poly_uint64 rather than an unsigned HOST_WIDE_INT.
+ 	* tree-data-ref.c (prune_runtime_alias_test_list): Likewise.
+ 	Track polynomial offsets.
+ 
+ 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* tree-vect-data-refs.c (vect_compute_data_ref_alignment):
+ 	Treat drb->init as a poly_int.  Fail if its misalignment wrt
+ 	vector_alignment isn't known.
+ 
+ 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* tree-vectorizer.h (_loop_vec_info): Add a versioning_threshold
+ 	field.
+ 	(LOOP_VINFO_VERSIONING_THRESHOLD): New macro
+ 	(vect_loop_versioning): Take the loop versioning threshold as a
+ 	separate parameter.
+ 	* tree-vect-loop-manip.c (vect_loop_versioning): Likewise.
+ 	* tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
+ 	versioning_threshold.
+ 	(vect_analyze_loop_2): Compute the loop versioning threshold
+ 	whenever loop versioning is needed, and store it in the new
+ 	field rather than combining it with the cost model threshold.
+ 	(vect_transform_loop): Update call to vect_loop_versioning.
+ 	Try to combine the loop versioning and cost thresholds here.
+ 
+ 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* tree-ssa-loop-ivopts.h (strip_offset): Return the offset as
+ 	poly_uint64_pod rather than an unsigned HOST_WIDE_INT.
+ 	* tree-loop-distribution.c (classify_builtin_st): Update accordingly.
+ 	* tree-ssa-loop-ivopts.c (iv_use::addr_offset): Change from
+ 	an unsigned HOST_WIDE_INT to a poly_uint64_pod.
+ 	(group_compare_offset): Update accordingly.
+ 	(split_small_address_groups_p): Likewise.
+ 	(record_use): Take addr_offset as a poly_uint64 rather than
+ 	an unsigned HOST_WIDE_INT.
+ 	(strip_offset): Return the offset as a poly_uint64 rather than
+ 	an unsigned HOST_WIDE_INT.
+ 	(record_group_use, split_address_groups): Track polynomial offsets.
+ 	(add_iv_candidate_for_use): Likewise.
+ 	(addr_offset_valid_p): Take the offset as a poly_int64 rather
+ 	than a HOST_WIDE_INT.
+ 	(strip_offset_1): Return the offset as a poly_int64 rather than
+ 	a HOST_WIDE_INT.
+ 
+ 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* tree.h (get_binfo_at_offset): Take the offset as a poly_int64
+ 	rather than a HOST_WIDE_INT.
+ 	* tree.c (get_binfo_at_offset): Likewise.
+ 
+ 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* ipa-prop.h (build_ref_for_offset): Take the offset as a poly_int64
+ 	rather than a HOST_WIDE_INT.
+ 	* tree-sra.c (build_ref_for_offset): Likewise.
+ 
+ 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* fold-const.h (mem_ref_offset): Return a poly_offset_int rather
+ 	than an offset_int.
+ 	* tree.c (mem_ref_offset): Likewise.
+ 	(build_simple_mem_ref_loc): Treat MEM_REF offsets as poly_ints.
+ 	* builtins.c (get_object_alignment_2): Likewise.
+ 	* expr.c (get_inner_reference, expand_expr_real_1): Likewise.
+ 	* gimple-fold.c (get_base_constructor): Likewise.
+ 	* gimple-ssa-strength-reduction.c (restructure_reference): Likewise.
+ 	* gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref):
+ 	Likewise.
+ 	* ipa-polymorphic-call.c
+ 	(ipa_polymorphic_call_context::ipa_polymorphic_call_context): Likewise.
+ 	* ipa-prop.c (compute_complex_assign_jump_func): Likewise.
+ 	(get_ancestor_addr_info): Likewise.
+ 	* ipa-param-manipulation.c (ipa_get_adjustment_candidate): Likewise.
+ 	* match.pd: Likewise.
+ 	* tree-data-ref.c (dr_analyze_innermost): Likewise.
+ 	* tree-dfa.c (get_addr_base_and_unit_offset_1): Likewise.
+ 	* tree-eh.c (tree_could_trap_p): Likewise.
+ 	* tree-object-size.c (addr_object_size): Likewise.
+ 	* tree-ssa-address.c (copy_ref_info): Likewise.
+ 	* tree-ssa-alias.c (indirect_ref_may_alias_decl_p): Likewise.
+ 	(indirect_refs_may_alias_p): Likewise.
+ 	* tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
+ 	* tree-ssa.c (maybe_rewrite_mem_ref_base): Likewise.
+ 	(non_rewritable_mem_ref_base): Likewise.
+ 	* tree-vect-data-refs.c (vect_check_gather_scatter): Likewise.
+ 	* tree-vrp.c (vrp_prop::check_array_ref): Likewise.
+ 	* varasm.c (decode_addr_const): Likewise.
+ 
+ 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* gimple-ssa-stor-merging.c (find_bswap_or_nop_load): Track polynomial
+ 	offsets for MEM_REFs.
+ 
+ 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* tree-ssanames.h (adjust_ptr_info_misalignment): Take the increment
+ 	as a poly_uint64 rather than an unsigned int.
+ 	* tree-ssanames.c (adjust_ptr_info_misalignment): Likewise.
+ 
+ 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* varasm.c (addr_const::offset): Change from HOST_WIDE_INT
+ 	to poly_int64.
+ 	(decode_addr_const): Update accordingly.
+ 
+ 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* tree.h (bit_field_size, bit_field_offset): New functions.
+ 	* hsa-gen.c (gen_hsa_addr): Use them.
+ 	* tree-ssa-forwprop.c (simplify_bitfield_ref): Likewise.
+ 	(simplify_vector_constructor): Likewise.
+ 	* tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
+ 	* tree-cfg.c (verify_expr): Require the sizes and offsets of a
+ 	BIT_FIELD_REF to be poly_uint64s rather than uhwis.
+ 	* fold-const.c (fold_ternary_loc): Protect tree_to_uhwi with
+ 	tree_fits_uhwi_p.
+ 
+ 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* expr.h (emit_group_load, emit_group_load_into_temps)
+ 	(emit_group_store): Take the size as a poly_int64 rather than an int.
+ 	* expr.c (emit_group_load_1, emit_group_load): Likewise.
+ 	(emit_group_load_into_temp, emit_group_store): Likewise.
+ 
+ 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* ira-int.h (ira_spilled_reg_stack_slot::width): Change from
+ 	an unsigned int to a poly_uint64.
+ 	* ira.h (ira_reuse_stack_slot, ira_mark_new_stack_slot): Take the
+ 	sizes as poly_uint64s rather than unsigned ints.
+ 	* ira-color.c (ira_reuse_stack_slot, ira_mark_new_stack_slot):
+ 	Likewise.
+ 
+ 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* lra-constraints.c (emit_inc): Change inc_amount from an int
+ 	to a poly_int64.
+ 
+ 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* cfgexpand.c (stack_var::size): Change from a HOST_WIDE_INT
+ 	to a poly_uint64.
+ 	(add_stack_var, stack_var_cmp, partition_stack_vars)
+ 	(dump_stack_var_partition): Update accordingly.
+ 	(alloc_stack_frame_space): Take the size as a poly_int64 rather
+ 	than a HOST_WIDE_INT.
+ 	(expand_stack_vars, expand_one_stack_var_1): Handle polynomial sizes.
+ 	(defer_stack_allocation, estimated_stack_frame_size): Likewise.
+ 	(account_stack_vars, expand_one_var): Likewise.  Return a poly_uint64
+ 	rather than a HOST_WIDE_INT.
+ 
+ 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* target.def (return_pops_args): Treat both the input and output
+ 	sizes as poly_int64s rather than HOST_WIDE_INTS.
+ 	* targhooks.h (default_return_pops_args): Update accordingly.
+ 	* targhooks.c (default_return_pops_args): Likewise.
+ 	* doc/tm.texi: Regenerate.
+ 	* emit-rtl.h (incoming_args): Change pops_args, size and
+ 	outgoing_args_size from int to poly_int64_pod.
+ 	* function.h (expr_status): Change x_pending_stack_adjust and
+ 	x_stack_pointer_delta from int to poly_int64.
+ 	(args_size::constant): Change from HOST_WIDE_INT to poly_int64.
+ 	(ARGS_SIZE_RTX): Update accordingly.
+ 	* calls.c (highest_outgoing_arg_in_use): Change from int to
+ 	unsigned int.
+ 	(stack_usage_watermark, stored_args_watermark): New variables.
+ 	(stack_region_maybe_used_p, mark_stack_region_used): New functions.
+ 	(emit_call_1): Change the stack_size and rounded_stack_size
+ 	parameters from HOST_WIDE_INT to poly_int64.  Track n_popped
+ 	as a poly_int64.
+ 	(save_fixed_argument_area): Check stack_usage_watermark.
+ 	(initialize_argument_information): Change old_pending_adj from
+ 	a HOST_WIDE_INT * to a poly_int64_pod *.
+ 	(compute_argument_block_size): Return the size as a poly_int64
+ 	rather than an int.
+ 	(finalize_must_preallocate): Track polynomial argument sizes.
+ 	(compute_argument_addresses): Likewise.
+ 	(internal_arg_pointer_based_exp): Track polynomial offsets.
+ 	(mem_overlaps_already_clobbered_arg_p): Rename to...
+ 	(mem_might_overlap_already_clobbered_arg_p): ...this and take the
+ 	size as a poly_uint64 rather than an unsigned HOST_WIDE_INT.
+ 	Check stored_args_used_watermark.
+ 	(load_register_parameters): Update accordingly.
+ 	(check_sibcall_argument_overlap_1): Likewise.
+ 	(combine_pending_stack_adjustment_and_call): Take the unadjusted
+ 	args size as a poly_int64 rather than an int.  Return a bool
+ 	indicating whether the optimization was possible and return
+ 	the new adjustment by reference.
+ 	(check_sibcall_argument_overlap): Track polynomail argument sizes.
+ 	Update stored_args_watermark.
+ 	(can_implement_as_sibling_call_p): Handle polynomial argument sizes.
+ 	(expand_call): Likewise.  Maintain stack_usage_watermark and
+ 	stored_args_watermark.  Update calls to
+ 	combine_pending_stack_adjustment_and_call.
+ 	(emit_library_call_value_1): Handle polynomial argument sizes.
+ 	Call stack_region_maybe_used_p and mark_stack_region_used.
+ 	Maintain stack_usage_watermark.
+ 	(store_one_arg): Likewise.  Update call to
+ 	mem_overlaps_already_clobbered_arg_p.
+ 	* config/arm/arm.c (arm_output_function_prologue): Add a cast to
+ 	HOST_WIDE_INT.
+ 	* config/avr/avr.c (avr_outgoing_args_size): Likewise.
+ 	* config/microblaze/microblaze.c (microblaze_function_prologue):
+ 	Likewise.
+ 	* config/cr16/cr16.c (cr16_return_pops_args): Update for new
+ 	TARGET_RETURN_POPS_ARGS interface.
+ 	(cr16_compute_frame, cr16_initial_elimination_offset): Add casts
+ 	to HOST_WIDE_INT.
+ 	* config/ft32/ft32.c (ft32_compute_frame): Likewise.
+ 	* config/i386/i386.c (ix86_return_pops_args): Update for new
+ 	TARGET_RETURN_POPS_ARGS interface.
+ 	(ix86_expand_split_stack_prologue): Add a cast to HOST_WIDE_INT.
+ 	* config/moxie/moxie.c (moxie_compute_frame): Likewise.
+ 	* config/m68k/m68k.c (m68k_return_pops_args): Update for new
+ 	TARGET_RETURN_POPS_ARGS interface.
+ 	* config/vax/vax.c (vax_return_pops_args): Likewise.
+ 	* config/pa/pa.h (STACK_POINTER_OFFSET): Add a cast to poly_int64.
+ 	(EXIT_IGNORE_STACK): Update reference to crtl->outgoing_args_size.
+ 	* config/arm/arm.h (CALLER_INTERWORKING_SLOT_SIZE): Likewise.
+ 	* config/powerpcspe/aix.h (STACK_DYNAMIC_OFFSET): Likewise.
+ 	* config/powerpcspe/darwin.h (STACK_DYNAMIC_OFFSET): Likewise.
+ 	* config/powerpcspe/powerpcspe.h (STACK_DYNAMIC_OFFSET): Likewise.
+ 	* config/rs6000/aix.h (STACK_DYNAMIC_OFFSET): Likewise.
+ 	* config/rs6000/darwin.h (STACK_DYNAMIC_OFFSET): Likewise.
+ 	* config/rs6000/rs6000.h (STACK_DYNAMIC_OFFSET): Likewise.
+ 	* dojump.h (saved_pending_stack_adjust): Change x_pending_stack_adjust
+ 	and x_stack_pointer_delta from int to poly_int64.
+ 	* dojump.c (do_pending_stack_adjust): Update accordingly.
+ 	* explow.c (allocate_dynamic_stack_space): Handle polynomial
+ 	stack_pointer_deltas.
+ 	* function.c (STACK_DYNAMIC_OFFSET): Add a cast to poly_int64.
+ 	(pad_to_arg_alignment): Track polynomial offsets.
+ 	(assign_parm_find_stack_rtl): Likewise.
+ 	(assign_parms, locate_and_pad_parm): Handle polynomial argument sizes.
+ 	* toplev.c (output_stack_usage): Update reference to
+ 	current_function_pushed_stack_size.
+ 
+ 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* function.c (in_arg_offset, var_offset, dynamic_offset)
+ 	(out_arg_offset, cfa_offset): Change from int to poly_int64.
+ 	(instantiate_new_reg): Return the new offset as a poly_int64_pod
+ 	rather than a HOST_WIDE_INT.
+ 	(instantiate_virtual_regs_in_rtx): Track polynomial offsets.
+ 	(instantiate_virtual_regs_in_insn): Likewise.
+ 
+ 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* rtl.h (get_args_size, add_args_size_note): New functions.
+ 	(find_args_size_adjust): Return a poly_int64 rather than a
+ 	HOST_WIDE_INT.
+ 	(fixup_args_size_notes): Likewise.  Make the same change to the
+ 	end_args_size parameter.
+ 	* rtlanal.c (get_args_size, add_args_size_note): New functions.
+ 	* builtins.c (expand_builtin_trap): Use add_args_size_note.
+ 	* calls.c (emit_call_1): Likewise.
+ 	* explow.c (adjust_stack_1): Likewise.
+ 	* cfgcleanup.c (old_insns_match_p): Update use of
+ 	find_args_size_adjust.
+ 	* combine.c (distribute_notes): Track polynomial arg sizes.
+ 	* dwarf2cfi.c (dw_trace_info): Change beg_true_args_size,
+ 	end_true_args_size, beg_delay_args_size and end_delay_args_size
+ 	from HOST_WIDE_INT to poly_int64.
+ 	(add_cfi_args_size): Take the args_size as a poly_int64 rather
+ 	than a HOST_WIDE_INT.
+ 	(notice_args_size, notice_eh_throw, maybe_record_trace_start)
+ 	(maybe_record_trace_start_abnormal, scan_trace, connect_traces): Track
+ 	polynomial arg sizes.
+ 	* emit-rtl.c (try_split): Use get_args_size.
+ 	* recog.c (peep2_attempt): Likewise.
+ 	* reload1.c (reload_as_needed): Likewise.
+ 	* expr.c (find_args_size_adjust): Return the adjustment as a
+ 	poly_int64 rather than a HOST_WIDE_INT.
+ 	(fixup_args_size_notes): Change end_args_size from a HOST_WIDE_INT
+ 	to a poly_int64 and change the return type in the same way.
+ 	(emit_single_push_insn): Track polynomial arg sizes.
+ 
+ 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* expr.h (push_block, emit_push_insn): Change the "extra" parameter
+ 	from HOST_WIDE_INT to poly_int64.
+ 	* expr.c (push_block, emit_push_insn): Likewise.
+ 
+ 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* function.h (frame_space): Change start and length from HOST_WIDE_INT
+ 	to poly_int64.
+ 	(get_frame_size): Return the size as a poly_int64 rather than a
+ 	HOST_WIDE_INT.
+ 	(frame_offset_overflow): Take the offset as a poly_int64 rather
+ 	than a HOST_WIDE_INT.
+ 	(assign_stack_local_1, assign_stack_local, assign_stack_temp_for_type)
+ 	(assign_stack_temp): Likewise for the size.
+ 	* function.c (get_frame_size): Return a poly_int64 rather than
+ 	a HOST_WIDE_INT.
+ 	(frame_offset_overflow): Take the offset as a poly_int64 rather
+ 	than a HOST_WIDE_INT.
+ 	(try_fit_stack_local): Take the start, length and size as poly_int64s
+ 	rather than HOST_WIDE_INTs.  Return the offset as a poly_int64_pod
+ 	rather than a HOST_WIDE_INT.
+ 	(add_frame_space): Take the start and end as poly_int64s rather than
+ 	HOST_WIDE_INTs.
+ 	(assign_stack_local_1, assign_stack_local, assign_stack_temp_for_type)
+ 	(assign_stack_temp): Likewise for the size.
+ 	(temp_slot): Change size, base_offset and full_size from HOST_WIDE_INT
+ 	to poly_int64.
+ 	(find_temp_slot_from_address): Handle polynomial offsets.
+ 	(combine_temp_slots): Likewise.
+ 	* emit-rtl.h (rtl_data::x_frame_offset): Change from HOST_WIDE_INT
+ 	to poly_int64.
+ 	* cfgexpand.c (alloc_stack_frame_space): Return the offset as a
+ 	poly_int64 rather than a HOST_WIDE_INT.
+ 	(expand_one_stack_var_at): Take the offset as a poly_int64 rather
+ 	than a HOST_WIDE_INT.
+ 	(expand_stack_vars, expand_one_stack_var_1, expand_used_vars): Handle
+ 	polynomial frame offsets.
+ 	* config/m32r/m32r-protos.h (m32r_compute_frame_size): Take the size
+ 	as a poly_int64 rather than an int.
+ 	* config/m32r/m32r.c (m32r_compute_frame_size): Likewise.
+ 	* config/v850/v850-protos.h (compute_frame_size): Likewise.
+ 	* config/v850/v850.c (compute_frame_size): Likewise.
+ 	* config/xtensa/xtensa-protos.h (compute_frame_size): Likewise.
+ 	* config/xtensa/xtensa.c (compute_frame_size): Likewise.
+ 	* config/pa/pa-protos.h (pa_compute_frame_size): Likewise.
+ 	* config/pa/pa.c (pa_compute_frame_size): Likewise.
+ 	* explow.h (get_dynamic_stack_base): Take the offset as a poly_int64
+ 	rather than a HOST_WIDE_INT.
+ 	* explow.c (get_dynamic_stack_base): Likewise.
+ 	* final.c (final_start_function): Use the constant lower bound
+ 	of the frame size for -Wframe-larger-than.
+ 	* ira.c (do_reload): Adjust for new get_frame_size return type.
+ 	* lra.c (lra): Likewise.
+ 	* reload1.c (reload): Likewise.
+ 	* config/avr/avr.c (avr_asm_function_end_prologue): Likewise.
+ 	* config/pa/pa.h (EXIT_IGNORE_STACK): Likewise.
+ 	* rtlanal.c (get_initial_register_offset): Return the offset as
+ 	a poly_int64 rather than a HOST_WIDE_INT.
+ 
+ 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* reload1.c (elim_table): Change initial_offset, offset and
+ 	previous_offset from HOST_WIDE_INT to poly_int64_pod.
+ 	(offsets_at): Change the target array's element type from
+ 	HOST_WIDE_INT to poly_int64_pod.
+ 	(set_label_offsets, eliminate_regs_1, eliminate_regs_in_insn)
+ 	(elimination_costs_in_insn, update_eliminable_offsets)
+ 	(verify_initial_elim_offsets, set_offsets_for_label)
+ 	(init_eliminable_invariants): Update after above changes.
+ 
+ 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* reload.h (reload::inc): Change from an int to a poly_int64_pod.
+ 	* reload.c (combine_reloads, debug_reload_to_stream): Likewise.
+ 	(decomposition): Change start and end from HOST_WIDE_INT
+ 	to poly_int64_pod.
+ 	(decompose, immune_p): Update accordingly.
+ 	(find_inc_amount): Return a poly_int64 rather than an int.
+ 	* reload1.c (inc_for_reload): Take the inc_amount as a poly_int64
+ 	rather than an int.
+ 
+ 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* tree.h (get_inner_reference): Return the bitsize and bitpos
+ 	as poly_int64_pods rather than HOST_WIDE_INT.
+ 	* fold-const.h (ptr_difference_const): Return the pointer difference
+ 	as a poly_int64_pod rather than a HOST_WIDE_INT.
+ 	* expr.c (get_inner_reference): Return the bitsize and bitpos
+ 	as poly_int64_pods rather than HOST_WIDE_INT.
+ 	(expand_expr_addr_expr_1, expand_expr_real_1): Track polynomial
+ 	offsets and sizes.
+ 	* fold-const.c (make_bit_field_ref): Take the bitpos as a poly_int64
+ 	rather than a HOST_WIDE_INT.  Update call to get_inner_reference.
+ 	(optimize_bit_field_compare): Update call to get_inner_reference.
+ 	(decode_field_reference): Likewise.
+ 	(fold_unary_loc): Track polynomial offsets and sizes.
+ 	(split_address_to_core_and_offset): Return the bitpos as a
+ 	poly_int64_pod rather than a HOST_WIDE_INT.
+ 	(ptr_difference_const): Likewise for the pointer difference.
+ 	* asan.c (instrument_derefs): Track polynomial offsets and sizes.
+ 	* config/mips/mips.c (r10k_safe_mem_expr_p): Likewise.
+ 	* dbxout.c (dbxout_expand_expr): Likewise.
+ 	* dwarf2out.c (loc_list_for_address_of_addr_expr_of_indirect_ref)
+ 	(loc_list_from_tree_1, fortran_common): Likewise.
+ 	* gimple-laddress.c (pass_laddress::execute): Likewise.
+ 	* gimple-ssa-store-merging.c (find_bswap_or_nop_load): Likewise.
+ 	* gimplify.c (gimplify_scan_omp_clauses): Likewise.
+ 	* simplify-rtx.c (delegitimize_mem_from_attrs): Likewise.
+ 	* tree-affine.c (tree_to_aff_combination): Likewise.
+ 	(get_inner_reference_aff): Likewise.
+ 	* tree-data-ref.c (split_constant_offset_1): Likewise.
+ 	(dr_analyze_innermost): Likewise.
+ 	* tree-scalar-evolution.c (interpret_rhs_expr): Likewise.
+ 	* tree-sra.c (ipa_sra_check_caller): Likewise.
+ 	* tree-vect-data-refs.c (vect_check_gather_scatter): Likewise.
+ 	* ubsan.c (maybe_instrument_pointer_overflow): Likewise.
+ 	(instrument_bool_enum_load, instrument_object_size): Likewise.
+ 	* gimple-ssa-strength-reduction.c (slsr_process_ref): Update call
+ 	to get_inner_reference.
+ 	* hsa-gen.c (gen_hsa_addr): Likewise.
+ 	* sanopt.c (maybe_optimize_ubsan_ptr_ifn): Likewise.
+ 	* tsan.c (instrument_expr): Likewise.
+ 	* match.pd: Update call to ptr_difference_const.
+ 
+ 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* fold-const.c (fold_comparison): Track sizes and offsets as
+ 	poly_int64s rather than HOST_WIDE_INTs when folding address
+ 	comparisons.
+ 
+ 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* expr.h (get_bit_range): Return the bitstart and bitend as
+ 	poly_uint64s rather than unsigned HOST_WIDE_INTs.  Return the bitpos
+ 	as a poly_int64 rather than a HOST_WIDE_INT.
+ 	* expr.c (get_bit_range): Likewise.
+ 	(expand_assignment): Update call accordingly.
+ 	* fold-const.c (optimize_bit_field_compare): Likewise.
+ 
+ 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* config/aarch64/aarch64-protos.h (aarch64_addr_query_type): New enum.
+ 	(aarch64_legitimate_address_p): Use it instead of an rtx code,
+ 	as an optional final parameter.
+ 	* config/aarch64/aarch64.c (aarch64_classify_address): Likewise.
+ 	(aarch64_legitimate_address_p): Likewise.
+ 	(aarch64_print_address_internal): Take an aarch64_addr_query_type
+ 	instead of an rtx code.
+ 	(aarch64_address_valid_for_prefetch_p): Update calls accordingly.
+ 	(aarch64_legitimate_address_hook_p): Likewise.
+ 	(aarch64_print_ldpstp_address): Likewise.
+ 	(aarch64_print_operand_address): Likewise.
+ 	(aarch64_address_cost): Likewise.
+ 	* config/aarch64/constraints.md (Uml, Umq, Ump, Utq): Likewise.
+ 	* config/aarch64/predicates.md (aarch64_mem_pair_operand): Likewise.
+ 	(aarch64_mem_pair_lanes_operand): Likewise.
+ 
+ 2017-12-20  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-dom.c (dom_opt_dom_walker::optimize_stmt): Call
+ 	update_stmt_if_modified.
+ 
+ 2017-12-20  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	PR tree-optimization/83491
+ 	* tree-ssa-math-opts.c (execute_cse_reciprocals_1): Check for SSA_NAME
+ 	before walking uses.  Improve coding style and comments.
+ 
+ 2017-12-20  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	* gimple-fold.c (fold_internal_goacc_dim): Simplify.
+ 
+ 2017-12-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR ipa/83506
+ 	* ipa-fnsummary.c (pass_data_ipa_free_fn_summary): Use 0 for
+ 	todo_flags_finish.
+ 	(pass_ipa_free_fn_summary): Add small_p private data member,
+ 	initialize to false in the ctor.
+ 	(pass_ipa_free_fn_summary::clone,
+ 	pass_ipa_free_fn_summary::set_pass_param,
+ 	pass_ipa_free_fn_summary::gate): New methods.
+ 	(pass_ipa_free_fn_summary::execute): Return TODO_remove_functions
+ 	| TODO_dump_symtab if small_p.
+ 	* passes.def: Add true parm for the existing pass_ipa_free_fn_summary
+ 	entry and add another instance of the pass with false parm after
+ 	ipa-pure-const.
+ 	* ipa-pure-const.c (pass_ipa_pure_const): Don't call
+ 	ipa_free_fn_summary here.
+ 
+ 2017-12-20  Paolo Carlini  <paolo.carlini@oracle.com>
+ 
+ 	* gimplify.c (gimplify_return_expr): Remove dead error_mark_node check.
+ 
+ 2017-12-20  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR testsuite/83131
+ 	* builtins.c (expand_builtin_strlen): Use get_callee_fndecl.
+ 	(expand_builtin_strcmp): Call maybe_warn_nonstring_arg.
+ 	(expand_builtin_strncmp): Same.
+ 
+ 2017-12-20  Alexandre Oliva  <aoliva@redhat.com>
+ 
+ 	PR bootstrap/83396
+ 	* cfgexpand.c (label_rtx_for_bb): Revert SFN changes that
+ 	allowed debug stmts before labels.
+ 	(expand_gimple_basic_block): Likewise.
+ 	* gimple-iterator.c (gimple_find_edge_insert_loc): Likewise.
+ 	* gimple-iterator.h (gsi_after_labels): Likewise.
+ 	* tree-cfgcleanup (remove_forwarder_block): Likewise, but
+ 	rename reused variable, and simplify using gsi_move_before.
+ 	* tree-ssa-tail-merge.c (find_duplicate): Likewise.
+ 	* tree-cfg.c (make_edges, cleanup_dead_labels): Likewise.
+ 	(gimple_can_merge_blocks_p, verify_gimple_in_cfg): Likewise.
+ 	(gimple_verify_flow_info, gimple_block_label): Likewise.
+ 	(make_blocks): Move debug markers after adjacent labels.
+ 	* cfgrtl.c (skip_insns_after_block): Revert SFN changes that
+ 	allowed debug insns outside blocks.
+ 	* df-scan.c (df_insn_delete): Likewise.
+ 	* lra-constraints.c (update_ebb_live_info): Likewise.
+ 	* var-tracking.c (get_first_insn, vt_emit_notes): Likewise.
+ 	(vt_initialize, delete_vta_debug_insns): Likewise.
+ 	(reemit_marker_as_note): Drop BB parm.  Adjust callers.
+ 
+ 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* poly-int-types.h (round_down_to_byte_boundary): New macro.
+ 	(round_up_to_byte_boundary): Likewise.
+ 	* expr.h (get_bit_range): Add temporary shim.
+ 	* gimple-ssa-store-merging.c (store_operand_info): Change the
+ 	bitsize, bitpos, bitregion_start and bitregion_end fields from
+ 	unsigned HOST_WIDE_INT to poly_uint64.
+ 	(merged_store_group): Likewise load_align_base.
+ 	(compatible_load_p, compatible_load_p): Update accordingly.
+ 	(imm_store_chain_info::coalesce_immediate_stores): Likewise.
+ 	(split_group, imm_store_chain_info::output_merged_store): Likewise.
+ 	(mem_valid_for_store_merging): Return the bitsize, bitpos,
+ 	bitregion_start and bitregion_end as poly_uint64s rather than
+ 	unsigned HOST_WIDE_INTs.  Track polynomial offsets internally.
+ 	(handled_load): Take the bitsize, bitpos,
+ 	bitregion_start and bitregion_end as poly_uint64s rather than
+ 	unsigned HOST_WIDE_INTs.
+ 	(pass_store_merging::process_store): Update call to
+ 	mem_valid_for_store_merging.
+ 
+ 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* builtins.c (get_object_alignment_2): Track polynomial offsets
+ 	and sizes.  Update the alignment handling.
+ 
+ 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* tree.h (get_inner_reference): Add a version that returns the
+ 	offset and size as poly_int64_pods rather than HOST_WIDE_INTs.
+ 	* cfgexpand.c (expand_debug_expr): Track polynomial offsets.  Simply
+ 	the case in which bitpos is not associated with the first byte.
+ 
+ 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* tree-affine.h (get_inner_reference_aff): Return the size as a
+ 	poly_widest_int.
+ 	* tree-affine.c (get_inner_reference_aff): Likewise.
+ 	* tree-data-ref.c (dr_may_alias_p): Update accordingly.
+ 	* tree-ssa-loop-im.c (mem_refs_may_alias_p): Likewise.
+ 
+ 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* fold-const.c (pointer_may_wrap_p): Take the offset as a
+ 	HOST_WIDE_INT rather than a poly_int64.
+ 
+ 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* gimple-ssa-store-merging.c (symbolic_number::bytepos): Change from
+ 	HOST_WIDE_INT to poly_int64_pod.
+ 	(perform_symbolic_merge): Update accordingly.
+ 	(bswap_replace): Likewise.
+ 
+ 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* tree-affine.h (aff_tree::offset): Change from widest_int
+ 	to poly_widest_int.
+ 	(wide_int_ext_for_comb): Delete.
+ 	(aff_combination_const, aff_comb_cannot_overlap_p): Take the
+ 	constants as poly_widest_int rather than widest_int.
+ 	(aff_combination_constant_multiple_p): Return the multiplier
+ 	as a poly_widest_int.
+ 	(aff_combination_zero_p, aff_combination_singleton_var_p): Handle
+ 	polynomial offsets.
+ 	* tree-affine.c (wide_int_ext_for_comb): Make original widest_int
+ 	version static and add an overload for poly_widest_int.
+ 	(aff_combination_const, aff_combination_add_cst)
+ 	(wide_int_constant_multiple_p, aff_comb_cannot_overlap_p): Take
+ 	the constants as poly_widest_int rather than widest_int.
+ 	(tree_to_aff_combination): Generalize INTEGER_CST case to
+ 	poly_int_tree_p.
+ 	(aff_combination_to_tree): Track offsets as poly_widest_ints.
+ 	(aff_combination_add_product, aff_combination_mult): Handle
+ 	polynomial offsets.
+ 	(aff_combination_constant_multiple_p): Return the multiplier
+ 	as a poly_widest_int.
+ 	* tree-predcom.c (determine_offset): Return the offset as a
+ 	poly_widest_int.
+ 	(split_data_refs_to_components, suitable_component_p): Update
+ 	accordingly.
+ 	(valid_initializer_p): Update call to
+ 	aff_combination_constant_multiple_p.
+ 	* tree-ssa-address.c (addr_to_parts): Handle polynomial offsets.
+ 	* tree-ssa-loop-ivopts.c (get_address_cost_ainc): Take the step
+ 	as a poly_int64 rather than a HOST_WIDE_INT.
+ 	(get_address_cost): Handle polynomial offsets.
+ 	(iv_elimination_compare_lt): Likewise.
+ 	(rewrite_use_nonlinear_expr): Likewise.
+ 
+ 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* tree-dfa.h (get_addr_base_and_unit_offset_1): Return the offset
+ 	as a poly_int64_pod rather than a HOST_WIDE_INT.
+ 	(get_addr_base_and_unit_offset): Likewise.
+ 	* tree-dfa.c (get_addr_base_and_unit_offset_1): Likewise.
+ 	(get_addr_base_and_unit_offset): Likewise.
+ 	* doc/match-and-simplify.texi: Change off from HOST_WIDE_INT
+ 	to poly_int64 in example.
+ 	* fold-const.c (fold_binary_loc): Update call to
+ 	get_addr_base_and_unit_offset.
+ 	* gimple-fold.c (gimple_fold_builtin_memory_op): Likewise.
+ 	(maybe_canonicalize_mem_ref_addr): Likewise.
+ 	(gimple_fold_stmt_to_constant_1): Likewise.
+ 	* gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref):
+ 	Likewise.
+ 	* ipa-param-manipulation.c (ipa_modify_call_arguments): Likewise.
+ 	* match.pd: Likewise.
+ 	* omp-low.c (lower_omp_target): Likewise.
+ 	* tree-sra.c (build_ref_for_offset): Likewise.
+ 	(build_debug_ref_for_model): Likewise.
+ 	* tree-ssa-address.c (maybe_fold_tmr): Likewise.
+ 	* tree-ssa-alias.c (ao_ref_init_from_ptr_and_size): Likewise.
+ 	* tree-ssa-ccp.c (optimize_memcpy): Likewise.
+ 	* tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
+ 	(constant_pointer_difference): Likewise.
+ 	* tree-ssa-loop-niter.c (expand_simple_operations): Likewise.
+ 	* tree-ssa-phiopt.c (jump_function_from_stmt): Likewise.
+ 	* tree-ssa-pre.c (create_component_ref_by_pieces_1): Likewise.
+ 	* tree-ssa-sccvn.c (vn_reference_fold_indirect): Likewise.
+ 	(vn_reference_maybe_forwprop_address, vn_reference_lookup_3): Likewise.
+ 	(set_ssa_val_to): Likewise.
+ 	* tree-ssa-strlen.c (get_addr_stridx, addr_stridxptr)
+ 	(maybe_diag_stxncpy_trunc): Likewise.
+ 	* tree-vrp.c (vrp_prop::check_array_ref): Likewise.
+ 	* tree.c (build_simple_mem_ref_loc): Likewise.
+ 	(array_at_struct_end_p): Likewise.
+ 
+ 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* tree-dfa.h (get_ref_base_and_extent): Return the base, size and
+ 	max_size as poly_int64_pods rather than HOST_WIDE_INTs.
+ 	(get_ref_base_and_extent_hwi): Declare.
+ 	* tree-dfa.c (get_ref_base_and_extent): Return the base, size and
+ 	max_size as poly_int64_pods rather than HOST_WIDE_INTs.
+ 	(get_ref_base_and_extent_hwi): New function.
+ 	* cfgexpand.c (expand_debug_expr): Update call to
+ 	get_ref_base_and_extent.
+ 	* dwarf2out.c (add_var_loc_to_decl): Likewise.
+ 	* gimple-fold.c (get_base_constructor): Return the offset as a
+ 	poly_int64_pod rather than a HOST_WIDE_INT.
+ 	(fold_const_aggregate_ref_1): Track polynomial sizes and offsets.
+ 	* ipa-polymorphic-call.c
+ 	(ipa_polymorphic_call_context::set_by_invariant)
+ 	(extr_type_from_vtbl_ptr_store): Track polynomial offsets.
+ 	(ipa_polymorphic_call_context::ipa_polymorphic_call_context)
+ 	(check_stmt_for_type_change): Use get_ref_base_and_extent_hwi
+ 	rather than get_ref_base_and_extent.
+ 	(ipa_polymorphic_call_context::get_dynamic_type): Likewise.
+ 	* ipa-prop.c (ipa_load_from_parm_agg, compute_complex_assign_jump_func)
+ 	(get_ancestor_addr_info, determine_locally_known_aggregate_parts):
+ 	Likewise.
+ 	* ipa-param-manipulation.c (ipa_get_adjustment_candidate): Update
+ 	call to get_ref_base_and_extent.
+ 	* tree-sra.c (create_access, get_access_for_expr): Likewise.
+ 	* tree-ssa-alias.c (ao_ref_base, aliasing_component_refs_p)
+ 	(stmt_kills_ref_p): Likewise.
+ 	* tree-ssa-dce.c (mark_aliased_reaching_defs_necessary_1): Likewise.
+ 	* tree-ssa-scopedtables.c (avail_expr_hash, equal_mem_array_ref_p):
+ 	Likewise.
+ 	* tree-ssa-sccvn.c (vn_reference_lookup_3): Likewise.
+ 	Use get_ref_base_and_extent_hwi rather than get_ref_base_and_extent
+ 	when calling native_encode_expr.
+ 	* tree-ssa-structalias.c (get_constraint_for_component_ref): Update
+ 	call to get_ref_base_and_extent.
+ 	(do_structure_copy): Use get_ref_base_and_extent_hwi rather than
+ 	get_ref_base_and_extent.
+ 	* var-tracking.c (track_expr_p): Likewise.
+ 
+ 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* ipa-param-manipulation.h (ipa_parm_adjustment::offset): Change from
+ 	HOST_WIDE_INT to poly_int64_pod.
+ 	* ipa-param-manipulation.c (ipa_modify_call_arguments): Track
+ 	polynomail parameter offsets.
+ 
+ 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* gengtype.c (main): Handle poly_int64_pod.
+ 	* dwarf2out.h (dw_cfi_oprnd_cfa_loc): New dw_cfi_oprnd_type.
+ 	(dw_cfi_oprnd::dw_cfi_cfa_loc): New field.
+ 	(dw_cfa_location::offset, dw_cfa_location::base_offset): Change
+ 	from HOST_WIDE_INT to poly_int64_pod.
+ 	* dwarf2cfi.c (queued_reg_save::cfa_offset): Likewise.
+ 	(copy_cfa): New function.
+ 	(lookup_cfa_1): Use the cached dw_cfi_cfa_loc, if it exists.
+ 	(cfi_oprnd_equal_p): Handle dw_cfi_oprnd_cfa_loc.
+ 	(cfa_equal_p, dwarf2out_frame_debug_adjust_cfa)
+ 	(dwarf2out_frame_debug_cfa_offset, dwarf2out_frame_debug_expr)
+ 	(initial_return_save): Treat offsets as poly_ints.
+ 	(def_cfa_0): Likewise.  Cache the CFA in dw_cfi_cfa_loc if either
+ 	offset is nonconstant.
+ 	(reg_save): Take the offset as a poly_int64.  Fall back to
+ 	DW_CFA_expression for nonconstant offsets.
+ 	(queue_reg_save): Take the offset as a poly_int64.
+ 	* dwarf2out.c (dw_cfi_oprnd2_desc): Handle DW_CFA_def_cfa_expression.
+ 
+ 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* rtl.h (operand_subword, operand_subword_force): Take the offset
+ 	as a poly_uint64 an unsigned int.
+ 	* emit-rtl.c (operand_subword, operand_subword_force): Likewise.
+ 
+ 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* doc/rtl.texi: Update documentation of SUBREG_BYTE.  Document the
+ 	'p' format code.  Use INT_LIST rather than SUBREG as the example of
+ 	a code with an XINT and an XEXP.  Remove the implication that
+ 	accessing an rtx field using XINT is expected to work.
+ 	* rtl.def (SUBREG): Change format from "ei" to "ep".
+ 	* rtl.h (rtunion::rt_subreg): New field.
+ 	(XCSUBREG): New macro.
+ 	(SUBREG_BYTE): Use it.
+ 	(subreg_shape): Change offset from an unsigned int to a poly_uint16.
+ 	Update constructor accordingly.
+ 	(subreg_shape::operator ==): Update accordingly.
+ 	(subreg_shape::unique_id): Return an unsigned HOST_WIDE_INT rather
+ 	than an unsigned int.
+ 	(subreg_lsb, subreg_lowpart_offset, subreg_highpart_offset): Return
+ 	a poly_uint64 rather than an unsigned int.
+ 	(subreg_lsb_1): Likewise.  Take the offset as a poly_uint64 rather
+ 	than an unsigned int.
+ 	(subreg_size_offset_from_lsb, subreg_size_lowpart_offset)
+ 	(subreg_size_highpart_offset): Return a poly_uint64 rather than
+ 	an unsigned int.  Take the sizes as poly_uint64s.
+ 	(subreg_offset_from_lsb): Return a poly_uint64 rather than
+ 	an unsigned int.  Take the shift as a poly_uint64 rather than
+ 	an unsigned int.
+ 	(subreg_regno_offset, subreg_offset_representable_p): Take the offset
+ 	as a poly_uint64 rather than an unsigned int.
+ 	(simplify_subreg_regno): Likewise.
+ 	(byte_lowpart_offset): Return the memory offset as a poly_int64
+ 	rather than an int.
+ 	(subreg_memory_offset): Likewise.  Take the subreg offset as a
+ 	poly_uint64 rather than an unsigned int.
+ 	(simplify_subreg, simplify_gen_subreg, subreg_get_info)
+ 	(gen_rtx_SUBREG, validate_subreg): Take the subreg offset as a
+ 	poly_uint64 rather than an unsigned int.
+ 	* rtl.c (rtx_format): Describe 'p' in comment.
+ 	(copy_rtx, rtx_equal_p_cb, rtx_equal_p): Handle 'p'.
+ 	* emit-rtl.c (validate_subreg, gen_rtx_SUBREG): Take the subreg
+ 	offset as a poly_uint64 rather than an unsigned int.
+ 	(byte_lowpart_offset): Return the memory offset as a poly_int64
+ 	rather than an int.
+ 	(subreg_memory_offset): Likewise.  Take the subreg offset as a
+ 	poly_uint64 rather than an unsigned int.
+ 	(subreg_size_lowpart_offset, subreg_size_highpart_offset): Take the
+ 	mode sizes as poly_uint64s rather than unsigned ints.  Return a
+ 	poly_uint64 rather than an unsigned int.
+ 	(subreg_lowpart_p): Treat subreg offsets as poly_ints.
+ 	(copy_insn_1): Handle 'p'.
+ 	* rtlanal.c (set_noop_p): Treat subregs offsets as poly_uint64s.
+ 	(subreg_lsb_1): Take the subreg offset as a poly_uint64 rather than
+ 	an unsigned int.  Return the shift in the same way.
+ 	(subreg_lsb): Return the shift as a poly_uint64 rather than an
+ 	unsigned int.
+ 	(subreg_size_offset_from_lsb): Take the sizes and shift as
+ 	poly_uint64s rather than unsigned ints.  Return the offset as
+ 	a poly_uint64.
+ 	(subreg_get_info, subreg_regno_offset, subreg_offset_representable_p)
+ 	(simplify_subreg_regno): Take the offset as a poly_uint64 rather than
+ 	an unsigned int.
+ 	* rtlhash.c (add_rtx): Handle 'p'.
+ 	* genemit.c (gen_exp): Likewise.
+ 	* gengenrtl.c (type_from_format, gendef): Likewise.
+ 	* gensupport.c (subst_pattern_match, get_alternatives_number)
+ 	(collect_insn_data, alter_predicate_for_insn, alter_constraints)
+ 	(subst_dup): Likewise.
+ 	* gengtype.c (adjust_field_rtx_def): Likewise.
+ 	* genrecog.c (find_operand, find_matching_operand, validate_pattern)
+ 	(match_pattern_2): Likewise.
+ 	(rtx_test::SUBREG_FIELD): New rtx_test::kind_enum.
+ 	(rtx_test::subreg_field): New function.
+ 	(operator ==, safe_to_hoist_p, transition_parameter_type)
+ 	(print_nonbool_test, print_test): Handle SUBREG_FIELD.
+ 	* genattrtab.c (attr_rtx_1): Say that 'p' is deliberately not handled.
+ 	* genpeep.c (match_rtx): Likewise.
+ 	* print-rtl.c (print_poly_int): Include if GENERATOR_FILE too.
+ 	(rtx_writer::print_rtx_operand): Handle 'p'.
+ 	(print_value): Handle SUBREG.
+ 	* read-rtl.c (apply_int_iterator): Likewise.
+ 	(rtx_reader::read_rtx_operand): Handle 'p'.
+ 	* alias.c (rtx_equal_for_memref_p): Likewise.
+ 	* cselib.c (rtx_equal_for_cselib_1, cselib_hash_rtx): Likewise.
+ 	* caller-save.c (replace_reg_with_saved_mem): Treat subreg offsets
+ 	as poly_ints.
+ 	* calls.c (expand_call): Likewise.
+ 	* combine.c (combine_simplify_rtx, expand_field_assignment): Likewise.
+ 	(make_extraction, gen_lowpart_for_combine): Likewise.
+ 	* loop-invariant.c (hash_invariant_expr_1, invariant_expr_equal_p):
+ 	Likewise.
+ 	* cse.c (remove_invalid_subreg_refs): Take the offset as a poly_uint64
+ 	rather than an unsigned int.  Treat subreg offsets as poly_ints.
+ 	(exp_equiv_p): Handle 'p'.
+ 	(hash_rtx_cb): Likewise.  Treat subreg offsets as poly_ints.
+ 	(equiv_constant, cse_insn): Treat subreg offsets as poly_ints.
+ 	* dse.c (find_shift_sequence): Likewise.
+ 	* dwarf2out.c (rtl_for_decl_location): Likewise.
+ 	* expmed.c (extract_low_bits): Likewise.
+ 	* expr.c (emit_group_store, undefined_operand_subword_p): Likewise.
+ 	(expand_expr_real_2): Likewise.
+ 	* final.c (alter_subreg): Likewise.
+ 	(leaf_renumber_regs_insn): Handle 'p'.
+ 	* function.c (assign_parm_find_stack_rtl, assign_parm_setup_stack):
+ 	Treat subreg offsets as poly_ints.
+ 	* fwprop.c (forward_propagate_and_simplify): Likewise.
+ 	* ifcvt.c (noce_emit_move_insn, noce_emit_cmove): Likewise.
+ 	* ira.c (get_subreg_tracking_sizes): Likewise.
+ 	* ira-conflicts.c (go_through_subreg): Likewise.
+ 	* ira-lives.c (process_single_reg_class_operands): Likewise.
+ 	* jump.c (rtx_renumbered_equal_p): Likewise.  Handle 'p'.
+ 	* lower-subreg.c (simplify_subreg_concatn): Take the subreg offset
+ 	as a poly_uint64 rather than an unsigned int.
+ 	(simplify_gen_subreg_concatn, resolve_simple_move): Treat
+ 	subreg offsets as poly_ints.
+ 	* lra-constraints.c (operands_match_p): Handle 'p'.
+ 	(match_reload, curr_insn_transform): Treat subreg offsets as poly_ints.
+ 	* lra-spills.c (assign_mem_slot): Likewise.
+ 	* postreload.c (move2add_valid_value_p): Likewise.
+ 	* recog.c (general_operand, indirect_operand): Likewise.
+ 	* regcprop.c (copy_value, maybe_mode_change): Likewise.
+ 	(copyprop_hardreg_forward_1): Likewise.
+ 	* reginfo.c (simplifiable_subregs_hasher::hash, simplifiable_subregs)
+ 	(record_subregs_of_mode): Likewise.
+ 	* rtlhooks.c (gen_lowpart_general, gen_lowpart_if_possible): Likewise.
+ 	* reload.c (operands_match_p): Handle 'p'.
+ 	(find_reloads_subreg_address): Treat subreg offsets as poly_ints.
+ 	* reload1.c (alter_reg, choose_reload_regs): Likewise.
+ 	(compute_reload_subreg_offset): Likewise, and return an poly_int64.
+ 	* simplify-rtx.c (simplify_truncation, simplify_binary_operation_1):
+ 	(test_vector_ops_duplicate): Treat subreg offsets as poly_ints.
+ 	(simplify_const_poly_int_tests<N>::run): Likewise.
+ 	(simplify_subreg, simplify_gen_subreg): Take the subreg offset as
+ 	a poly_uint64 rather than an unsigned int.
+ 	* valtrack.c (debug_lowpart_subreg): Likewise.
+ 	* var-tracking.c (var_lowpart): Likewise.
+ 	(loc_cmp): Handle 'p'.
+ 
+ 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* ira.c (get_subreg_tracking_sizes): New function.
+ 	(init_live_subregs): Take an integer size rather than a register.
+ 	(build_insn_chain): Use get_subreg_tracking_sizes.  Update calls
+ 	to init_live_subregs.
+ 
+ 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* expr.c (store_constructor_field): Change bitsize from a
+ 	unsigned HOST_WIDE_INT to a poly_uint64 and bitpos from a
+ 	HOST_WIDE_INT to a poly_int64.
+ 	(store_constructor): Change size from a HOST_WIDE_INT to
+ 	a poly_int64.
+ 	(store_field): Likewise bitsize and bitpos.
+ 
+ 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* expmed.h (store_bit_field): Change bitregion_start and
+ 	bitregion_end from unsigned HOST_WIDE_INT to poly_uint64.
+ 	* expmed.c (adjust_bit_field_mem_for_reg, strict_volatile_bitfield_p)
+ 	(store_bit_field_1, store_integral_bit_field, store_bit_field)
+ 	(store_fixed_bit_field, store_split_bit_field): Likewise.
+ 	* expr.c (store_constructor_field, store_field): Likewise.
+ 	(optimize_bitfield_assignment_op): Likewise.  Make the same change
+ 	to bitsize and bitpos.
+ 	* machmode.h (bit_field_mode_iterator): Change m_bitregion_start
+ 	and m_bitregion_end from HOST_WIDE_INT to poly_int64.  Make the
+ 	same change in the constructor arguments.
+ 	(get_best_mode): Change bitregion_start and bitregion_end from
+ 	unsigned HOST_WIDE_INT to poly_uint64.
+ 	* stor-layout.c (bit_field_mode_iterator::bit_field_mode_iterator):
+ 	Change bitregion_start and bitregion_end from HOST_WIDE_INT to
+ 	poly_int64.
+ 	(bit_field_mode_iterator::next_mode): Update for new types
+ 	of m_bitregion_start and m_bitregion_end.
+ 	(get_best_mode): Change bitregion_start and bitregion_end from
+ 	unsigned HOST_WIDE_INT to poly_uint64.
+ 
+ 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* rtl.h (simplify_gen_subreg): Add a temporary overload that
+ 	accepts poly_uint64 offsets.
+ 	* expmed.h (extract_bit_field): Take bitsize and bitnum as
+ 	poly_uint64s rather than unsigned HOST_WIDE_INTs.
+ 	* expmed.c (lowpart_bit_field_p): Likewise.
+ 	(extract_bit_field_as_subreg): New function, split out from...
+ 	(extract_bit_field_1): ...here.  Take bitsize and bitnum as
+ 	poly_uint64s rather than unsigned HOST_WIDE_INTs.  For vector
+ 	extractions, check that BITSIZE matches the size of the extracted
+ 	value and that BITNUM is an exact multiple of that size.
+ 	If all else fails, try forcing the value into memory if
+ 	BITNUM is variable, and adjusting the address so that the
+ 	offset is constant.  Split the part that can only handle constant
+ 	bitsize and bitnum out into...
+ 	(extract_integral_bit_field): ...this new function.
+ 	(extract_bit_field): Take bitsize and bitnum as poly_uint64s
+ 	rather than unsigned HOST_WIDE_INTs.
+ 
+ 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* expmed.h (store_bit_field): Take bitsize and bitnum as
+ 	poly_uint64s rather than unsigned HOST_WIDE_INTs.
+ 	* expmed.c (simple_mem_bitfield_p): Likewise.  Add a parameter
+ 	that returns the byte size.
+ 	(store_bit_field_1): Take bitsize and bitnum as
+ 	poly_uint64s rather than unsigned HOST_WIDE_INTs.  Update call
+ 	to simple_mem_bitfield_p.  Split the part that can only handle
+ 	constant bitsize and bitnum out into...
+ 	(store_integral_bit_field): ...this new function.
+ 	(store_bit_field): Take bitsize and bitnum as poly_uint64s rather
+ 	than unsigned HOST_WIDE_INTs.
+ 	(extract_bit_field_1): Update call to simple_mem_bitfield_p.
+ 
+ 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* lra-int.h (lra_reg): Change offset from int to poly_int64.
+ 	(lra_insn_recog_data): Change sp_offset from HOST_WIDE_INT
+ 	to poly_int64.
+ 	(lra_eliminate_regs_1, eliminate_regs_in_insn): Change
+ 	update_sp_offset from a HOST_WIDE_INT to a poly_int64.
+ 	(lra_update_reg_val_offset, lra_reg_val_equal_p): Take the
+ 	offset as a poly_int64 rather than an int.
+ 	* lra-assigns.c (find_hard_regno_for_1): Handle poly_int64 offsets.
+ 	(setup_live_pseudos_and_spill_after_risky_transforms): Likewise.
+ 	* lra-constraints.c (equiv_address_substitution): Track offsets
+ 	as poly_int64s.
+ 	(emit_inc): Check poly_int_rtx_p instead of CONST_INT_P.
+ 	(curr_insn_transform): Handle the new form of sp_offset.
+ 	* lra-eliminations.c (lra_elim_table): Change previous_offset
+ 	and offset from HOST_WIDE_INT to poly_int64.
+ 	(print_elim_table, update_reg_eliminate): Update accordingly.
+ 	(self_elim_offsets): Change from HOST_WIDE_INT to poly_int64_pod.
+ 	(get_elimination): Update accordingly.
+ 	(form_sum): Check poly_int_rtx_p instead of CONST_INT_P.
+ 	(lra_eliminate_regs_1, eliminate_regs_in_insn): Change
+ 	update_sp_offset from a HOST_WIDE_INT to a poly_int64.  Handle
+ 	poly_int64 offsets generally.
+ 	(curr_sp_change): Change from HOST_WIDE_INT to poly_int64.
+ 	(mark_not_eliminable, init_elimination): Update accordingly.
+ 	(remove_reg_equal_offset_note): Return a bool and pass the new
+ 	offset back by pointer as a poly_int64.
+ 	* lra-remat.c (change_sp_offset): Take sp_offset as a poly_int64
+ 	rather than a HOST_WIDE_INT.
+ 	(do_remat): Track offsets poly_int64s.
+ 	* lra.c (lra_update_insn_recog_data, setup_sp_offset): Likewise.
+ 
+ 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* rtl.h (mem_attrs): Add a default constructor.  Change size and
+ 	offset from HOST_WIDE_INT to poly_int64.
+ 	* emit-rtl.h (set_mem_offset, set_mem_size, adjust_address_1)
+ 	(adjust_automodify_address_1, set_mem_attributes_minus_bitpos)
+ 	(widen_memory_access): Take the sizes and offsets as poly_int64s
+ 	rather than HOST_WIDE_INTs.
+ 	* alias.c (ao_ref_from_mem): Handle the new form of MEM_OFFSET.
+ 	(offset_overlap_p): Take poly_int64s rather than HOST_WIDE_INTs
+ 	and ints.
+ 	(adjust_offset_for_component_ref): Change the offset from a
+ 	HOST_WIDE_INT to a poly_int64.
+ 	(nonoverlapping_memrefs_p): Track polynomial offsets and sizes.
+ 	* cfgcleanup.c (merge_memattrs): Update after mem_attrs changes.
+ 	* dce.c (find_call_stack_args): Likewise.
+ 	* dse.c (record_store): Likewise.
+ 	* dwarf2out.c (tls_mem_loc_descriptor, dw_sra_loc_expr): Likewise.
+ 	* print-rtl.c (rtx_writer::print_rtx): Likewise.
+ 	* read-rtl-function.c (test_loading_mem): Likewise.
+ 	* rtlanal.c (may_trap_p_1): Likewise.
+ 	* simplify-rtx.c (delegitimize_mem_from_attrs): Likewise.
+ 	* var-tracking.c (int_mem_offset, track_expr_p): Likewise.
+ 	* emit-rtl.c (mem_attrs_eq_p, get_mem_align_offset): Likewise.
+ 	(mem_attrs::mem_attrs): New function.
+ 	(set_mem_attributes_minus_bitpos): Change bitpos from a
+ 	HOST_WIDE_INT to poly_int64.
+ 	(set_mem_alias_set, set_mem_addr_space, set_mem_align, set_mem_expr)
+ 	(clear_mem_offset, clear_mem_size, change_address)
+ 	(get_spill_slot_decl, set_mem_attrs_for_spill): Directly
+ 	initialize mem_attrs.
+ 	(set_mem_offset, set_mem_size, adjust_address_1)
+ 	(adjust_automodify_address_1, offset_address, widen_memory_access):
+ 	Likewise.  Take poly_int64s rather than HOST_WIDE_INT.
+ 
+ 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* rtlanal.c (rtx_addr_can_trap_p_1): Take the offset and size
+ 	as poly_int64s rather than HOST_WIDE_INTs.  Use a size of -1
+ 	rather than 0 to represent an unknown size.  Assert that the size
+ 	is known when the mode isn't BLKmode.
+ 	(may_trap_p_1): Use -1 for unknown sizes.
+ 	(rtx_addr_can_trap_p): Likewise.  Pass BLKmode rather than VOIDmode.
+ 
+ 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* dse.c (store_info): Change offset and width from HOST_WIDE_INT
+ 	to poly_int64.  Update commentary for positions_needed.large.
+ 	(read_info_type): Change offset and width from HOST_WIDE_INT
+ 	to poly_int64.
+ 	(set_usage_bits): Likewise.
+ 	(canon_address): Return the offset as a poly_int64 rather than
+ 	a HOST_WIDE_INT.  Use strip_offset_and_add.
+ 	(set_all_positions_unneeded, any_positions_needed_p): Use
+ 	positions_needed.large to track stores with non-constant widths.
+ 	(all_positions_needed_p): Likewise.  Take the offset and width
+ 	as poly_int64s rather than ints.  Assert that rhs is nonnull.
+ 	(record_store): Cope with non-constant offsets and widths.
+ 	Nullify the rhs of an earlier store if we can't tell which bytes
+ 	of it are needed.
+ 	(find_shift_sequence): Take the access_size and shift as poly_int64s
+ 	rather than ints.
+ 	(get_stored_val): Take the read_offset and read_width as poly_int64s
+ 	rather than HOST_WIDE_INTs.
+ 	(check_mem_read_rtx, scan_stores, scan_reads, dse_step5): Handle
+ 	non-constant offsets and widths.
+ 
+ 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* inchash.h (inchash::hash::add_poly_int): New function.
+ 	* tree-ssa-alias.h (ao_ref::offset, ao_ref::size, ao_ref::max_size):
+ 	Use poly_int64 rather than HOST_WIDE_INT.
+ 	(ao_ref::max_size_known_p): New function.
+ 	* tree-ssa-sccvn.h (vn_reference_op_struct::off): Use poly_int64_pod
+ 	rather than HOST_WIDE_INT.
+ 	* tree-ssa-alias.c (ao_ref_base): Apply get_ref_base_and_extent
+ 	to temporaries until its interface is adjusted to match.
+ 	(ao_ref_init_from_ptr_and_size): Handle polynomial offsets and sizes.
+ 	(aliasing_component_refs_p, decl_refs_may_alias_p)
+ 	(indirect_ref_may_alias_decl_p, indirect_refs_may_alias_p): Take
+ 	the offsets and max_sizes as poly_int64s instead of HOST_WIDE_INTs.
+ 	(refs_may_alias_p_1, stmt_kills_ref_p): Adjust for changes to
+ 	ao_ref fields.
+ 	* alias.c (ao_ref_from_mem): Likewise.
+ 	* tree-ssa-dce.c (mark_aliased_reaching_defs_necessary_1): Likewise.
+ 	* tree-ssa-dse.c (valid_ao_ref_for_dse, normalize_ref)
+ 	(clear_bytes_written_by, setup_live_bytes_from_ref, compute_trims)
+ 	(maybe_trim_complex_store, maybe_trim_constructor_store)
+ 	(live_bytes_read, dse_classify_store): Likewise.
+ 	* tree-ssa-sccvn.c (vn_reference_compute_hash, vn_reference_eq):
+ 	(copy_reference_ops_from_ref, ao_ref_init_from_vn_reference)
+ 	(fully_constant_vn_reference_p, valueize_refs_1): Likewise.
+ 	(vn_reference_lookup_3): Likewise.
+ 	* tree-ssa-uninit.c (warn_uninitialized_vars): Likewise.
+ 
+ 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* tree-ssa-alias.c (indirect_ref_may_alias_decl_p)
+ 	(indirect_refs_may_alias_p): Use ranges_may_overlap_p
+ 	instead of ranges_overlap_p.
+ 
+ 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* tree-ssa-alias.c (same_addr_size_stores_p): Take the offsets and
+ 	sizes as poly_int64s rather than HOST_WIDE_INTs.
+ 
+ 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* gimple-fold.h (fold_ctor_reference): Take the offset and size
+ 	as poly_uint64 rather than unsigned HOST_WIDE_INT.
+ 	* gimple-fold.c (fold_ctor_reference): Likewise.
+ 
+ 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* target.def (dwarf_poly_indeterminate_value): New hook.
+ 	* targhooks.h (default_dwarf_poly_indeterminate_value): Declare.
+ 	* targhooks.c (default_dwarf_poly_indeterminate_value): New function.
+ 	* doc/tm.texi.in (TARGET_DWARF_POLY_INDETERMINATE_VALUE): Document.
+ 	* doc/tm.texi: Regenerate.
+ 	* dwarf2out.h (build_cfa_loc, build_cfa_aligned_loc): Take the
+ 	offset as a poly_int64.
+ 	* dwarf2out.c (new_reg_loc_descr): Move later in file.  Take the
+ 	offset as a poly_int64.
+ 	(loc_descr_plus_const, loc_list_plus_const, build_cfa_aligned_loc):
+ 	Take the offset as a poly_int64.
+ 	(build_cfa_loc): Likewise.  Use loc_descr_plus_const.
+ 	(frame_pointer_fb_offset): Change to a poly_int64.
+ 	(int_loc_descriptor): Take the offset as a poly_int64.  Use
+ 	targetm.dwarf_poly_indeterminate_value for polynomial offsets.
+ 	(based_loc_descr): Take the offset as a poly_int64.
+ 	Use strip_offset_and_add to handle (plus X (const)).
+ 	Use new_reg_loc_descr instead of an open-coded version of the
+ 	previous implementation.
+ 	(mem_loc_descriptor): Handle CONST_POLY_INT.
+ 	(compute_frame_pointer_to_fb_displacement): Take the offset as a
+ 	poly_int64.  Use strip_offset_and_add to handle (plus X (const)).
+ 
+ 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* rtl.h (reg_attrs::offset): Change from HOST_WIDE_INT to poly_int64.
+ 	(gen_rtx_REG_offset): Take the offset as a poly_int64.
+ 	* inchash.h (inchash::hash::add_poly_hwi): New function.
+ 	* gengtype.c (main): Register poly_int64.
+ 	* emit-rtl.c (reg_attr_hasher::hash): Use inchash.  Treat the
+ 	offset as a poly_int.
+ 	(reg_attr_hasher::equal): Use must_eq to compare offsets.
+ 	(get_reg_attrs, update_reg_offset, gen_rtx_REG_offset): Take the
+ 	offset as a poly_int64.
+ 	(set_reg_attrs_from_value): Treat the offset as a poly_int64.
+ 	* print-rtl.c (print_poly_int): New function.
+ 	(rtx_writer::print_rtx_operand_code_r): Treat REG_OFFSET as
+ 	a poly_int.
+ 	* var-tracking.c (track_offset_p, get_tracked_reg_offset): New
+ 	functions.
+ 	(var_reg_set, var_reg_delete_and_set, var_reg_delete): Use them.
+ 	(same_variable_part_p, track_loc_p): Take the offset as a poly_int64.
+ 	(vt_get_decl_and_offset): Return the offset as a poly_int64.
+ 	Enforce track_offset_p for parts of a PARALLEL.
+ 	(vt_add_function_parameter): Use const_offset for the final
+ 	offset to track.  Use get_tracked_reg_offset for the parts
+ 	of a PARALLEL.
+ 
+ 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* target.def (truly_noop_truncation): Take poly_uint64s instead of
+ 	unsigned ints.  Change default to hook_bool_puint64_puint64_true.
+ 	* doc/tm.texi: Regenerate.
+ 	* hooks.h (hook_bool_uint_uint_true): Delete.
+ 	(hook_bool_puint64_puint64_true): Declare.
+ 	* hooks.c (hook_bool_uint_uint_true): Delete.
+ 	(hook_bool_puint64_puint64_true): New function.
+ 	* config/mips/mips.c (mips_truly_noop_truncation): Take poly_uint64s
+ 	instead of unsigned ints.
+ 	* config/spu/spu.c (spu_truly_noop_truncation): Likewise.
+ 	* config/tilegx/tilegx.c (tilegx_truly_noop_truncation): Likewise.
+ 
+ 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* optabs.h (expand_operand): Add an int_value field.
+ 	(create_expand_operand): Add an int_value parameter and use it
+ 	to initialize the new expand_operand field.
+ 	(create_integer_operand): Replace with a declaration of a function
+ 	that accepts poly_int64s.  Move the implementation to...
+ 	* optabs.c (create_integer_operand): ...here.
+ 	(maybe_legitimize_operand): For EXPAND_INTEGER, check whether
+ 	the mode preserves the value of int_value, instead of calling
+ 	const_int_operand on the rtx.  Use gen_int_mode to generate
+ 	the new rtx.
+ 
+ 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* dumpfile.h (dump_dec): Declare.
+ 	* dumpfile.c (dump_dec): New function.
+ 	* pretty-print.h (pp_wide_integer): Turn into a function and
+ 	declare a poly_int version.
+ 	* pretty-print.c (pp_wide_integer): New function for poly_ints.
+ 
+ 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* doc/generic.texi (POLY_INT_CST): Document.
+ 	* tree.def (POLY_INT_CST): New tree code.
+ 	* treestruct.def (TS_POLY_INT_CST): New tree layout.
+ 	* tree-core.h (tree_poly_int_cst): New struct.
+ 	(tree_node): Add a poly_int_cst field.
+ 	* tree.h (POLY_INT_CST_P, POLY_INT_CST_COEFF): New macros.
+ 	(wide_int_to_tree, force_fit_type): Take a poly_wide_int_ref
+ 	instead of a wide_int_ref.
+ 	(build_int_cst, build_int_cst_type): Take a poly_int64 instead
+ 	of a HOST_WIDE_INT.
+ 	(build_int_cstu, build_array_type_nelts): Take a poly_uint64
+ 	instead of an unsigned HOST_WIDE_INT.
+ 	(build_poly_int_cst, tree_fits_poly_int64_p, tree_fits_poly_uint64_p)
+ 	(ptrdiff_tree_p): Declare.
+ 	(tree_to_poly_int64, tree_to_poly_uint64): Likewise.  Provide
+ 	extern inline implementations if the target doesn't use POLY_INT_CST.
+ 	(poly_int_tree_p): New function.
+ 	(wi::unextended_tree): New class.
+ 	(wi::int_traits <unextended_tree>): New override.
+ 	(wi::extended_tree): Add a default constructor.
+ 	(wi::extended_tree::get_tree): New function.
+ 	(wi::widest_extended_tree, wi::offset_extended_tree): New typedefs.
+ 	(wi::tree_to_widest_ref, wi::tree_to_offset_ref): Use them.
+ 	(wi::tree_to_poly_widest_ref, wi::tree_to_poly_offset_ref)
+ 	(wi::tree_to_poly_wide_ref): New typedefs.
+ 	(wi::ints_for): Provide overloads for extended_tree and
+ 	unextended_tree.
+ 	(poly_int_cst_value, wi::to_poly_widest, wi::to_poly_offset)
+ 	(wi::to_wide): New functions.
+ 	(wi::fits_to_boolean_p, wi::fits_to_tree_p): Handle poly_ints.
+ 	* tree.c (poly_int_cst_hasher): New struct.
+ 	(poly_int_cst_hash_table): New variable.
+ 	(tree_node_structure_for_code, tree_code_size, simple_cst_equal)
+ 	(valid_constant_size_p, add_expr, drop_tree_overflow): Handle
+ 	POLY_INT_CST.
+ 	(initialize_tree_contains_struct): Handle TS_POLY_INT_CST.
+ 	(init_ttree): Initialize poly_int_cst_hash_table.
+ 	(build_int_cst, build_int_cst_type, build_invariant_address): Take
+ 	a poly_int64 instead of a HOST_WIDE_INT.
+ 	(build_int_cstu, build_array_type_nelts): Take a poly_uint64
+ 	instead of an unsigned HOST_WIDE_INT.
+ 	(wide_int_to_tree): Rename to...
+ 	(wide_int_to_tree_1): ...this.
+ 	(build_new_poly_int_cst, build_poly_int_cst): New functions.
+ 	(force_fit_type): Take a poly_wide_int_ref instead of a wide_int_ref.
+ 	(wide_int_to_tree): New function that takes a poly_wide_int_ref.
+ 	(ptrdiff_tree_p, tree_to_poly_int64, tree_to_poly_uint64)
+ 	(tree_fits_poly_int64_p, tree_fits_poly_uint64_p): New functions.
+ 	* lto-streamer-out.c (DFS::DFS_write_tree_body, hash_tree): Handle
+ 	TS_POLY_INT_CST.
+ 	* tree-streamer-in.c (lto_input_ts_poly_tree_pointers): Likewise.
+ 	(streamer_read_tree_body): Likewise.
+ 	* tree-streamer-out.c (write_ts_poly_tree_pointers): Likewise.
+ 	(streamer_write_tree_body): Likewise.
+ 	* tree-streamer.c (streamer_check_handled_ts_structures): Likewise.
+ 	* asan.c (asan_protect_global): Require the size to be an INTEGER_CST.
+ 	* cfgexpand.c (expand_debug_expr): Handle POLY_INT_CST.
+ 	* expr.c (expand_expr_real_1, const_vector_from_tree): Likewise.
+ 	* gimple-expr.h (is_gimple_constant): Likewise.
+ 	* gimplify.c (maybe_with_size_expr): Likewise.
+ 	* print-tree.c (print_node): Likewise.
+ 	* tree-data-ref.c (data_ref_compare_tree): Likewise.
+ 	* tree-pretty-print.c (dump_generic_node): Likewise.
+ 	* tree-ssa-address.c (addr_for_mem_ref): Likewise.
+ 	* tree-vect-data-refs.c (dr_group_sort_cmp): Likewise.
+ 	* tree-vrp.c (compare_values_warnv): Likewise.
+ 	* tree-ssa-loop-ivopts.c (determine_base_object, constant_multiple_of)
+ 	(get_loop_invariant_expr, add_candidate_1, get_computation_aff_1)
+ 	(force_expr_to_var_cost): Likewise.
+ 	* tree-ssa-loop.c (for_each_index): Likewise.
+ 	* fold-const.h (build_invariant_address, size_int_kind): Take a
+ 	poly_int64 instead of a HOST_WIDE_INT.
+ 	* fold-const.c (fold_negate_expr_1, const_binop, const_unop)
+ 	(fold_convert_const, multiple_of_p, fold_negate_const): Handle
+ 	POLY_INT_CST.
+ 	(size_binop_loc): Likewise.  Allow int_const_binop_1 to fail.
+ 	(int_const_binop_2): New function, split out from...
+ 	(int_const_binop_1): ...here.  Handle POLY_INT_CST.
+ 	(size_int_kind): Take a poly_int64 instead of a HOST_WIDE_INT.
+ 	* expmed.c (make_tree): Handle CONST_POLY_INT_P.
+ 	* gimple-ssa-strength-reduction.c (slsr_process_add)
+ 	(slsr_process_mul): Check for INTEGER_CSTs before using them
+ 	as candidates.
+ 	* stor-layout.c (bits_from_bytes): New function.
+ 	(bit_from_pos): Use it.
+ 	(layout_type): Likewise.  For vectors, multiply the TYPE_SIZE_UNIT
+ 	by BITS_PER_UNIT to get the TYPE_SIZE.
+ 	* tree-cfg.c (verify_expr, verify_types_in_gimple_reference): Allow
+ 	MEM_REF and TARGET_MEM_REF offsets to be a POLY_INT_CST.
+ 
+ 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* doc/rtl.texi (const_poly_int): Document.  Also document the
+ 	rtl sharing behavior.
+ 	* gengenrtl.c (excluded_rtx): Return true for CONST_POLY_INT.
+ 	* rtl.h (const_poly_int_def): New struct.
+ 	(rtx_def::u): Add a cpi field.
+ 	(CASE_CONST_UNIQUE, CASE_CONST_ANY): Add CONST_POLY_INT.
+ 	(CONST_POLY_INT_P, CONST_POLY_INT_COEFFS): New macros.
+ 	(wi::rtx_to_poly_wide_ref): New typedef
+ 	(const_poly_int_value, wi::to_poly_wide, rtx_to_poly_int64)
+ 	(poly_int_rtx_p): New functions.
+ 	(trunc_int_for_mode): Declare a poly_int64 version.
+ 	(plus_constant): Take a poly_int64 instead of a HOST_WIDE_INT.
+ 	(immed_wide_int_const): Take a poly_wide_int_ref rather than
+ 	a wide_int_ref.
+ 	(strip_offset): Declare.
+ 	(strip_offset_and_add): New function.
+ 	* rtl.def (CONST_POLY_INT): New rtx code.
+ 	* rtl.c (rtx_size): Handle CONST_POLY_INT.
+ 	(shared_const_p): Use poly_int_rtx_p.
+ 	* emit-rtl.h (gen_int_mode): Take a poly_int64 instead of a
+ 	HOST_WIDE_INT.
+ 	(gen_int_shift_amount): Likewise.
+ 	* emit-rtl.c (const_poly_int_hasher): New class.
+ 	(const_poly_int_htab): New variable.
+ 	(init_emit_once): Initialize it when NUM_POLY_INT_COEFFS > 1.
+ 	(const_poly_int_hasher::hash): New function.
+ 	(const_poly_int_hasher::equal): Likewise.
+ 	(gen_int_mode): Take a poly_int64 instead of a HOST_WIDE_INT.
+ 	(immed_wide_int_const): Rename to...
+ 	(immed_wide_int_const_1): ...this and make static.
+ 	(immed_wide_int_const): New function, taking a poly_wide_int_ref
+ 	instead of a wide_int_ref.
+ 	(gen_int_shift_amount): Take a poly_int64 instead of a HOST_WIDE_INT.
+ 	(gen_lowpart_common): Handle CONST_POLY_INT.
+ 	* cse.c (hash_rtx_cb, equiv_constant): Likewise.
+ 	* cselib.c (cselib_hash_rtx): Likewise.
+ 	* dwarf2out.c (const_ok_for_output_1): Likewise.
+ 	* expr.c (convert_modes): Likewise.
+ 	* print-rtl.c (rtx_writer::print_rtx, print_value): Likewise.
+ 	* rtlhash.c (add_rtx): Likewise.
+ 	* explow.c (trunc_int_for_mode): Add a poly_int64 version.
+ 	(plus_constant): Take a poly_int64 instead of a HOST_WIDE_INT.
+ 	Handle existing CONST_POLY_INT rtxes.
+ 	* expmed.h (expand_shift): Take a poly_int64 instead of a
+ 	HOST_WIDE_INT.
+ 	* expmed.c (expand_shift): Likewise.
+ 	* rtlanal.c (strip_offset): New function.
+ 	(commutative_operand_precedence): Give CONST_POLY_INT the same
+ 	precedence as CONST_DOUBLE and put CONST_WIDE_INT between that
+ 	and CONST_INT.
+ 	* rtl-tests.c (const_poly_int_tests): New struct.
+ 	(rtl_tests_c_tests): Use it.
+ 	* simplify-rtx.c (simplify_const_unary_operation): Handle
+ 	CONST_POLY_INT.
+ 	(simplify_const_binary_operation): Likewise.
+ 	(simplify_binary_operation_1): Fold additions of symbolic constants
+ 	and CONST_POLY_INTs.
+ 	(simplify_subreg): Handle extensions and truncations of
+ 	CONST_POLY_INTs.
+ 	(simplify_const_poly_int_tests): New struct.
+ 	(simplify_rtx_c_tests): Use it.
+ 	* wide-int.h (storage_ref): Add default constructor.
+ 	(wide_int_ref_storage): Likewise.
+ 	(trailing_wide_ints): Use GTY((user)).
+ 	(trailing_wide_ints::operator[]): Add a const version.
+ 	(trailing_wide_ints::get_precision): New function.
+ 	(trailing_wide_ints::extra_size): Likewise.
+ 
+ 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* emit-rtl.h (gen_int_shift_amount): Declare.
+ 	* emit-rtl.c (gen_int_shift_amount): New function.
+ 	* asan.c (asan_emit_stack_protection): Use gen_int_shift_amount
+ 	instead of GEN_INT.
+ 	* calls.c (shift_return_value): Likewise.
+ 	* cse.c (fold_rtx): Likewise.
+ 	* dse.c (find_shift_sequence): Likewise.
+ 	* expmed.c (init_expmed_one_mode, store_bit_field_1, expand_shift_1)
+ 	(expand_shift, expand_smod_pow2): Likewise.
+ 	* lower-subreg.c (shift_cost): Likewise.
+ 	* optabs.c (expand_superword_shift, expand_doubleword_mult)
+ 	(expand_unop, expand_binop, shift_amt_for_vec_perm_mask)
+ 	(expand_vec_perm_var): Likewise.
+ 	* simplify-rtx.c (simplify_unary_operation_1): Likewise.
+ 	(simplify_binary_operation_1): Likewise.
+ 	* combine.c (try_combine, find_split_point, force_int_to_mode)
+ 	(simplify_shift_const_1, simplify_shift_const): Likewise.
+ 	(change_zero_ext): Likewise.  Use simplify_gen_binary.
+ 
+ 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* poly-int.h (multiple_p): Fix handling of two non-poly_ints.
+ 
+ 2017-12-20  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* doc/invoke.texi (ARM Options): Document accepted extension options
+ 	for -march=armv8.3-a.
+ 
+ 2017-12-20  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR target/83105
+ 	* config.gcc (arm*-*-linux*): When configured with --with-float=hard
+ 	or --with-float=softfp, set the default CPU to arm10e.
+ 
+ 2017-12-20  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* config/visium/constraints.md (J, K, L): Use IN_RANGE macro.
+ 	* config/visium/predicates.md (const_shift_operand): Likewise.
+ 	* config/visium/visium.c (visium_legitimize_address): Fix oversight.
+ 	(visium_legitimize_reload_address): Likewise.
+ 
+ 2017-12-20  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	PR target/82975
+ 	* config/arm/arm.h (TEST_REGNO): Adjust comment as expected in r255830.
+ 
+ 2017-12-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/83490
+ 	* calls.c (compute_argument_addresses): Ignore TYPE_EMPTY_P arguments.
+ 
+ 2017-12-20  Julia Koval  <julia.koval@intel.com>
+ 
+ 	* common/config/i386/i386-common.c (OPTION_MASK_ISA_VPCLMULQDQ_SET,
+ 	OPTION_MASK_ISA_VPCLMULQDQ_UNSET): New.
+ 	(ix86_handle_option): Handle -mvpclmulqdq, move cx6 to flags2.
+ 	* config.gcc: Include vpclmulqdqintrin.h.
+ 	* config/i386/cpuid.h: Handle bit_VPCLMULQDQ.
+ 	* config/i386/driver-i386.c (host_detect_local_cpu): Handle
+ 	-mvpclmulqdq.
+ 	* config/i386/i386-builtin.def (__builtin_ia32_vpclmulqdq_v2di,
+ 	__builtin_ia32_vpclmulqdq_v4di, __builtin_ia32_vpclmulqdq_v8di): New.
+ 	* config/i386/i386-c.c (__VPCLMULQDQ__): New.
+ 	* config/i386/i386.c (isa2_opts): Add -mcx16.
+ 	(isa_opts): Add -mpclmulqdq, remove -mcx16.
+ 	(ix86_option_override_internal): Move mcx16 to flags2.
+ 	(ix86_valid_target_attribute_inner_p): Add vpclmulqdq.
+ 	(ix86_expand_builtin): Handle OPTION_MASK_ISA_VPCLMULQDQ.
+ 	* config/i386/i386.h (TARGET_VPCLMULQDQ, TARGET_VPCLMULQDQ_P): New.
+ 	* config/i386/i386.opt: Add mvpclmulqdq, move mcx16 to flags2.
+ 	* config/i386/immintrin.h: Include vpclmulqdqintrin.h.
+ 	* config/i386/sse.md (vpclmulqdq_<mode>): New pattern.
+ 	* config/i386/vpclmulqdqintrin.h (_mm512_clmulepi64_epi128,
+ 	_mm_clmulepi64_epi128, _mm256_clmulepi64_epi128): New intrinsics.
+ 	* doc/invoke.texi: Add -mvpclmulqdq.
+ 
+ 2017-12-20  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	PR middle-end/83423
+ 	* config/i386/i386.c (ix86_static_chain): Move
+ 	DECL_STATIC_CHAIN test ...
+ 	* calls.c (rtx_for_static_chain): ... here.  New function.
+ 	* calls.h (rtx_for_static_chain): Declare.
+ 	* builtins.c (expand_builtin_setjmp_receiver): Use rtx_for_static_chain
+ 	instead of targetm.calls.static_chain.
+ 	* df-scan.c (df_get_entry_block_def_set): Same.
+ 
+ 2017-12-19  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	PR tree-optimization/83493
+ 	* graphite-isl-ast-to-gimple.c (translate_isl_ast_node_for): Unshare ub
+ 	and lb.
+ 
+ 2017-12-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* gimple-ssa-sprintf.c (format_directive): Use inform_n instead of
+ 	inform with hardcoded english plural handling.
+ 
+ 2017-12-18  Jeff Law  <law@redhat.com>
+ 
+ 	PR tree-optimization/83477
+ 	* tree-ssa-threadedge.c (record_temporary_equivalences_from_phis): For
+ 	a non-virtual PHI, always push a new range.
+ 
+ 2017-12-19  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/77608
+ 	* builtins.c (compute_objsize): Handle non-constant offsets.
+ 
+ 2017-12-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/83444
+ 	* tree-ssa-strlen.c (strlen_check_and_optimize_stmt): For the
+ 	character load case, if get_stridx on MEM_REF's operand doesn't
+ 	look usable, retry with get_addr_stridx.
+ 
+ 2017-12-19  Alexandre Oliva  <aoliva@redhat.com>
+ 
+ 	PR debug/83422
+ 	* var-tracking.c (vt_debug_insns_local): Do not drop markers.
+ 	(variable_tracking_main_1): Keep markers even when VTA fails.
+ 
+ 	PR bootstrap/83396
+ 	* cfgexpand.c (expand_gimple_basic_block): Expand label first,
+ 	even if there are markers before it.
+ 	* cfgrtl.c (rtl_verify_bb_layout): Reject DEBUG_INSNs outside BBs.
+ 
+ 2017-12-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* read-rtl.c (parse_reg_note_name): Replace Yoda conditions with
+ 	typical order conditions.
+ 	* sel-sched.c (extract_new_fences_from): Likewise.
+ 	* config/visium/constraints.md (J, K, L): Likewise.
+ 	* config/visium/predicates.md (const_shift_operand): Likewise.
+ 	* config/visium/visium.c (visium_legitimize_address,
+ 	visium_legitimize_reload_address): Likewise.
+ 	* config/m68k/m68k.c (output_reg_adjust, emit_reg_adjust): Likewise.
+ 	* config/arm/arm.c (arm_block_move_unaligned_straight): Likewise.
+ 	* config/avr/constraints.md (Y01, Ym1, Y02, Ym2): Likewise.
+ 	* config/avr/avr-log.c (avr_vdump, avr_log_set_avr_log,
+ 	SET_DUMP_DETAIL): Likewise.
+ 	* config/avr/predicates.md (const_8_16_24_operand): Likewise.
+ 	* config/avr/avr.c (STR_PREFIX_P, avr_popcount_each_byte,
+ 	avr_is_casesi_sequence, avr_casei_sequence_check_operands,
+ 	avr_set_core_architecture, avr_set_current_function,
+ 	avr_legitimize_reload_address, avr_asm_len, avr_print_operand,
+ 	output_movqi, output_movsisf, avr_out_plus, avr_out_bitop,
+ 	avr_out_fract, avr_adjust_insn_length, avr_encode_section_info,
+ 	avr_2word_insn_p, output_reload_in_const, avr_has_nibble_0xf,
+ 	avr_map_decompose, avr_fold_builtin): Likewise.
+ 	* config/avr/driver-avr.c (avr_devicespecs_file): Likewise.
+ 	* config/avr/gen-avr-mmcu-specs.c (str_prefix_p, print_mcu): Likewise.
+ 	* config/i386/i386.c (ix86_parse_stringop_strategy_string): Likewise.
+ 	* config/m32c/m32c-pragma.c (m32c_pragma_memregs): Likewise.
+ 	* config/m32c/m32c.c (m32c_conditional_register_usage,
+ 	m32c_address_cost): Likewise.
+ 	* config/m32c/predicates.md (shiftcount_operand,
+ 	longshiftcount_operand): Likewise.
+ 	* config/iq2000/iq2000.c (iq2000_expand_prologue): Likewise.
+ 	* config/nios2/nios2.c (nios2_handle_custom_fpu_insn_option,
+ 	can_use_cdx_ldstw): Likewise.
+ 	* config/nios2/nios2.h (CDX_REG_P): Likewise.
+ 	* config/cr16/cr16.h (RETURN_ADDR_RTX, REGNO_MODE_OK_FOR_BASE_P):
+ 	Likewise.
+ 	* config/cr16/cr16.md (*mov<mode>_double): Likewise.
+ 	* config/cr16/cr16.c (cr16_create_dwarf_for_multi_push): Likewise.
+ 	* config/h8300/h8300.c (h8300_rtx_costs, get_shift_alg): Likewise.
+ 	* config/vax/constraints.md (U06, U08, U16, CN6, S08, S16): Likewise.
+ 	* config/vax/vax.c (adjacent_operands_p): Likewise.
+ 	* config/ft32/constraints.md (L, b, KA): Likewise.
+ 	* config/ft32/ft32.c (ft32_load_immediate, ft32_expand_prologue):
+ 	Likewise.
+ 	* cfgexpand.c (expand_stack_alignment): Likewise.
+ 	* gcse.c (insert_expr_in_table): Likewise.
+ 	* print-rtl.c (rtx_writer::print_rtx_operand_codes_E_and_V): Likewise.
+ 	* cgraphunit.c (cgraph_node::expand): Likewise.
+ 	* ira-build.c (setup_min_max_allocno_live_range_point): Likewise.
+ 	* emit-rtl.c (add_insn): Likewise.
+ 	* input.c (dump_location_info): Likewise.
+ 	* passes.c (NEXT_PASS): Likewise.
+ 	* read-rtl-function.c (parse_note_insn_name,
+ 	function_reader::read_rtx_operand_r, function_reader::parse_mem_expr):
+ 	Likewise.
+ 	* sched-rgn.c (sched_rgn_init): Likewise.
+ 	* diagnostic-show-locus.c (layout::show_ruler): Likewise.
+ 	* combine.c (find_split_point, simplify_if_then_else, force_to_mode,
+ 	if_then_else_cond, simplify_shift_const_1, simplify_comparison):
+ 	Likewise.
+ 	* explow.c (eliminate_constant_term): Likewise.
+ 	* final.c (leaf_renumber_regs_insn): Likewise.
+ 	* cfgrtl.c (print_rtl_with_bb): Likewise.
+ 	* genhooks.c (emit_init_macros): Likewise.
+ 	* poly-int.h (maybe_ne, maybe_le, maybe_lt): Likewise.
+ 	* tree-data-ref.c (conflict_fn): Likewise.
+ 	* selftest.c (assert_streq): Likewise.
+ 	* expr.c (store_constructor_field, expand_expr_real_1): Likewise.
+ 	* fold-const.c (fold_range_test, extract_muldiv_1, fold_truth_andor,
+ 	fold_binary_loc, multiple_of_p): Likewise.
+ 	* reload.c (push_reload, find_equiv_reg): Likewise.
+ 	* et-forest.c (et_nca, et_below): Likewise.
+ 	* dbxout.c (dbxout_symbol_location): Likewise.
+ 	* reorg.c (relax_delay_slots): Likewise.
+ 	* dojump.c (do_compare_rtx_and_jump): Likewise.
+ 	* gengtype-parse.c (type): Likewise.
+ 	* simplify-rtx.c (simplify_gen_ternary, simplify_gen_relational,
+ 	simplify_const_relational_operation): Likewise.
+ 	* reload1.c (do_output_reload): Likewise.
+ 	* dumpfile.c (get_dump_file_info_by_switch): Likewise.
+ 	* gengtype.c (type_for_name): Likewise.
+ 	* gimple-ssa-sprintf.c (format_directive): Likewise.
+ 
+ 2017-12-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	PR target/82975
+ 	* config/arm/arm.h (TEST_REGNO): Check reg_renumber is set before
+ 	accessing it.  Adjust comment.
+ 
+ 2017-12-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/81914
+ 	* predict.c (zero_one_minusone): New function.
+ 	(apply_return_prediction): Avoid return prediction for functions
+ 	returning only -1, 0 and 1 values, unless they only return -1 and 0
+ 	or 0 and 1.
+ 
+ 2017-12-19  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.c (legitimate_scaled_address_p): Clean
+ 	fall-through warning.
+ 	(arc_compute_frame_size): Remove unused variables.
+ 	(arc_print_operand): Fix fprintif format.
+ 	(arc_can_follow_jump): Clean fall-through warning.
+ 
+ 2017-12-19  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/83489
+ 	* config/i386/i386.c (init_cumulative_args): Don't check TYPE_EMPTY_P
+ 	on an error node.
+ 
+ 2017-12-19  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.c (overriderregs): New variable.
+ 	(arc_override_options): Track fixed/call saved/call options.
+ 	(arc_conditional_register_usage): Check against overrideregs
+ 	variable whenever we change register properties.
+ 
+ 2017-12-19  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* opts.c (finish_options): Don't prefix dump_base_name if it
+ 	already contains directories.
+ 
+ 2017-12-19  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR rtl-optimization/82675
+ 	* loop-unroll.c (unroll_loop_constant_iterations): Allocate one
+ 	more element in sbitmap.
+ 
+ 2017-12-19  Paolo Carlini  <paolo.carlini@oracle.com>
+ 
+ 	* gimplify.c (gimplify_expr): Use error_operand_p.
+ 
+ 2017-12-19  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+ 
+ 	PR target/83387
+ 	* config/rs6000/t-rtems (MULTILIB_REQUIRED): Remove 64-bit soft-float
+ 	multilib.
+ 
+ 2017-12-19  Daniel Cederman  <cederman@gaisler.com>
+ 
+ 	* config/sparc/sparc.c (sparc_do_work_around_errata): Make sure
+ 	the jump is to a label.
+ 
+ 2017-12-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/83444
+ 	* tree-ssa-strlen.c (strlen_check_and_optimize_stmt): Optimize
+ 	character loads.
+ 
+ 	PR ipa/82801
+ 	PR ipa/83346
+ 	* ipa-inline.c (flatten_remove_node_hook): New function.
+ 	(ipa_inline): Keep only nodes with flatten attribute at the end of
+ 	the array in the order from ipa_reverse_postorder, only walk that
+ 	portion of array for flattening, if there is more than one such
+ 	node, temporarily register a removal hook and ignore removed nodes.
+ 
+ 	PR tree-optimization/80631
+ 	* tree-vect-loop.c (vect_create_epilog_for_reduction): Compare
+ 	induc_code against MAX_EXPR or MIN_EXPR instead of reduc_fn against
+ 	IFN_REDUC_MAX or IFN_REDUC_MIN.
+ 
+ 2017-12-18  Jeff Law  <law@redhat.com>
+ 
+ 	* tree-ssa-dom.c (record_equivalences_from_phis): Do not
+ 	record symbolic equivalences from backedges in the CFG.
+ 
+ 	Revert
+ 	2017-11-19  Jeff Law  <law@redhat.com>
+ 
+ 	* tree-ssa-dom.c (record_equivalences_from_phis): Fix handling
+ 	of degenerates resulting from ignoring an edge.
+ 
+ 2017-12-18  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/83373
+ 	PR tree-optimization/78450
+ 	* tree-ssa-strlen.c (maybe_set_strlen_range): New function.
+ 	(handle_builtin_strlen): Call it.
+ 
+ 2017-12-18  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR rtl-optimization/83424
+ 	* rtlanal.c (dead_or_set_regno_p): Handle CLOBBER just like SET.
+ 
+ 2017-12-18  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR middle-end/83463
+ 	* gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref):
+ 	Check if TYPE is INTEGRAL_TYPE_P before accessing its min/max
+ 	values.
+ 
+ 2017-12-18  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.md (maddsidi4, maddsidi4_split): Update pattern.
+ 	(umaddsidi4, umaddsidi_split): Likewise.
+ 
+ 2017-12-18  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.c (arc_legitimate_constant_p): Always check all
+ 	constants.
+ 
+ 2017-12-18  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	PR target/83420
+ 	* config/s390/s390.c (s390_option_override): Avoid strncpy.
+ 
+ 2017-12-18  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/81877
+ 	* tree-ssa-loop-im.c (ref_indep_loop_p): Remove safelen parameters.
+ 	(outermost_indep_loop): Adjust.
+ 	(ref_indep_loop_p_1): Likewise.  Remove safelen handling again.
+ 	(can_sm_ref_p): Adjust.
+ 
+ 2017-12-18  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/77291
+ 	* tree.c (array_at_struct_end_p): Return true if the underlying
+ 	object has space for at least one element in excess of what
+ 	the array domain specifies.
+ 
+ 2017-12-17  Sandra Loosemore  <sandra@codesourcery.com>
+ 
+ 	* doc/extend.texi (x86 Function Attributes): Reformat nocf_check
+ 	example	to avoid overfull hbox.
+ 	* doc/invoke.texi (Option Summary): Add missing @gol.
+ 	(C++ Dialect Options): Reformat -Wnoexcept-type example to avoid
+ 	overfull hbox.
+ 
+ 2017-12-17  Sandra Loosemore  <sandra@codesourcery.com>
+ 	    Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* doc/invoke.texi (Option Summary): Add -mverbose-cost-dump
+ 	to AArch64 and ARM lists, plus missing -mflip-thumb for ARM.
+ 	(AArch64 Options): Document -mverbose-cost-dump.
+ 	(ARM Options): Likewise, plus -mflip-thumb.
+ 
+ 2017-12-17  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR bootstrap/83446
+ 	* gimple-ssa-warn-restrict.c
+ 	(builtin_memref::offset_out_of_bounds): Correct the handling of
+ 	anti-ranges.
+ 
+ 2017-12-17  Sandra Loosemore  <sandra@codesourcery.com>
+ 
+ 	* doc/invoke.texi (ARC Options): Add missing -mlra entry.
+ 
+ 2017-12-17  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	* config/pa/pa.c (pa_som_asm_init_sections): Fix comment.
+ 
+ 2017-12-17  Markus Trippelsdorf  <markus@trippelsdorf.de>
+ 
+ 	* x86-tune-costs.h (skylake_cost, core_cost): Decrease r64 multiply
+ 	latencies.
+ 
+ 2017-12-16  Sandra Loosemore  <sandra@codesourcery.com>
+ 
+ 	* doc/invoke.texi: Fix some typos.
+ 
+ 2017-12-16  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR tree-optimization/78918
+ 	* Makefile.in (OBJS): Add gimple-ssa-warn-restrict.o.
+ 	* builtins.c (check_sizes): Rename...
+ 	(check_access): ...to this.  Rename function arguments for clarity.
+ 	(check_memop_sizes): Adjust names.
+ 	(expand_builtin_memchr, expand_builtin_memcpy): Same.
+ 	(expand_builtin_memmove, expand_builtin_mempcpy): Same.
+ 	(expand_builtin_strcat, expand_builtin_stpncpy): Same.
+ 	(check_strncat_sizes, expand_builtin_strncat): Same.
+ 	(expand_builtin_strncpy, expand_builtin_memset): Same.
+ 	(expand_builtin_bzero, expand_builtin_memcmp): Same.
+ 	(expand_builtin_memory_chk, maybe_emit_chk_warning): Same.
+ 	(maybe_emit_sprintf_chk_warning): Same.
+ 	(expand_builtin_strcpy): Adjust.
+ 	(expand_builtin_stpcpy): Same.
+ 	(expand_builtin_with_bounds): Detect out-of-bounds accesses
+ 	in pointer-checking forms of memcpy, memmove, and mempcpy.
+ 	(gcall_to_tree_minimal, max_object_size): Define new functions.
+ 	* builtins.h (max_object_size): Declare.
+ 	* calls.c (alloc_max_size): Call max_object_size instead of
+ 	hardcoding ssizetype limit.
+ 	(get_size_range): Handle new argument.
+ 	* calls.h (get_size_range): Add a new argument.
+ 	* cfgexpand.c (expand_call_stmt): Propagate no-warning bit.
+ 	* doc/invoke.texi (-Wrestrict): Adjust, add example.
+ 	* gimple-fold.c (gimple_fold_builtin_memory_op): Detect overlapping
+ 	operations.
+ 	(gimple_fold_builtin_memory_chk): Same.
+ 	(gimple_fold_builtin_stxcpy_chk): New function.
+ 	* gimple-ssa-warn-restrict.c: New source.
+ 	* gimple-ssa-warn-restrict.h: New header.
+ 	* gimple.c (gimple_build_call_from_tree): Propagate location.
+ 	* passes.def (pass_warn_restrict): Add new pass.
+ 	* tree-pass.h (make_pass_warn_restrict): Declare.
+ 	* tree-ssa-strlen.c (handle_builtin_strcpy): Detect overlapping
+ 	operations.
+ 	(handle_builtin_strcat): Same.
+ 	(strlen_optimize_stmt): Rename...
+ 	(strlen_check_and_optimize_stmt): ...to this.  Handle strncat,
+ 	stpncpy, strncpy, and their checking forms.
+ 
+ 2017-12-16  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR rtl-optimization/82849
+ 	* modulo-sched.c (sms_schedule): Use get_estimated_loop_iterations_int
+ 	and get_max_loop_iterations_int.
+ 
+ 2017-12-16  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* machmode.h (mode_for_size, int_mode_for_size, float_mode_for_size)
+ 	(smallest_mode_for_size, smallest_int_mode_for_size): Take the mode
+ 	size as a poly_uint64.
+ 	(mode_for_vector, mode_for_int_vector): Take the number of vector
+ 	elements as a poly_uint64.
+ 	* stor-layout.c (mode_for_size, smallest_mode_for_size): Take the mode
+ 	size as a poly_uint64.
+ 	(mode_for_vector, mode_for_int_vector): Take the number of vector
+ 	elements as a poly_uint64.
+ 
+ 2017-12-16  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* machmode.h (MACRO_MODE): New macro.
+ 	* addresses.h (base_reg_class, ok_for_base_p_1): Use it.
+ 	* targhooks.c (default_libcall_value, default_secondary_reload)
+ 	(default_memory_move_cost, default_register_move_cost)
+ 	(default_class_max_nregs): Likewise.
+ 
+ 2017-12-16  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* doc/sourcebuild.texi: Document IN_TARGET_CODE.
+ 	* genattrtab.c (write_header): Define IN_TARGET_CODE to 1 in the
+ 	target C file.
+ 	* genautomata.c (main): Likewise.
+ 	* genconditions.c (write_header): Likewise.
+ 	* genemit.c (main): Likewise.
+ 	* genextract.c (print_header): Likewise.
+ 	* genopinit.c (main): Likewise.
+ 	* genoutput.c (output_prologue): Likewise.
+ 	* genpeep.c (main): Likewise.
+ 	* genpreds.c (write_insn_preds_c): Likewise.
+ 	* genrecog.c (writer_header): Likewise.
+ 	* config/aarch64/aarch64-builtins.c (IN_TARGET_CODE): Define.
+ 	* config/aarch64/aarch64-c.c (IN_TARGET_CODE): Likewise.
+ 	* config/aarch64/aarch64.c (IN_TARGET_CODE): Likewise.
+ 	* config/aarch64/cortex-a57-fma-steering.c (IN_TARGET_CODE): Likewise.
+ 	* config/aarch64/driver-aarch64.c (IN_TARGET_CODE): Likewise.
+ 	* config/alpha/alpha.c (IN_TARGET_CODE): Likewise.
+ 	* config/alpha/driver-alpha.c (IN_TARGET_CODE): Likewise.
+ 	* config/arc/arc-c.c (IN_TARGET_CODE): Likewise.
+ 	* config/arc/arc.c (IN_TARGET_CODE): Likewise.
+ 	* config/arc/driver-arc.c (IN_TARGET_CODE): Likewise.
+ 	* config/arm/aarch-common.c (IN_TARGET_CODE): Likewise.
+ 	* config/arm/arm-builtins.c (IN_TARGET_CODE): Likewise.
+ 	* config/arm/arm-c.c (IN_TARGET_CODE): Likewise.
+ 	* config/arm/arm.c (IN_TARGET_CODE): Likewise.
+ 	* config/arm/driver-arm.c (IN_TARGET_CODE): Likewise.
+ 	* config/avr/avr-c.c (IN_TARGET_CODE): Likewise.
+ 	* config/avr/avr-devices.c (IN_TARGET_CODE): Likewise.
+ 	* config/avr/avr-log.c (IN_TARGET_CODE): Likewise.
+ 	* config/avr/avr.c (IN_TARGET_CODE): Likewise.
+ 	* config/avr/driver-avr.c (IN_TARGET_CODE): Likewise.
+ 	* config/avr/gen-avr-mmcu-specs.c (IN_TARGET_CODE): Likewise.
+ 	* config/bfin/bfin.c (IN_TARGET_CODE): Likewise.
+ 	* config/c6x/c6x.c (IN_TARGET_CODE): Likewise.
+ 	* config/cr16/cr16.c (IN_TARGET_CODE): Likewise.
+ 	* config/cris/cris.c (IN_TARGET_CODE): Likewise.
+ 	* config/darwin.c (IN_TARGET_CODE): Likewise.
+ 	* config/epiphany/epiphany.c (IN_TARGET_CODE): Likewise.
+ 	* config/epiphany/mode-switch-use.c (IN_TARGET_CODE): Likewise.
+ 	* config/epiphany/resolve-sw-modes.c (IN_TARGET_CODE): Likewise.
+ 	* config/fr30/fr30.c (IN_TARGET_CODE): Likewise.
+ 	* config/frv/frv.c (IN_TARGET_CODE): Likewise.
+ 	* config/ft32/ft32.c (IN_TARGET_CODE): Likewise.
+ 	* config/h8300/h8300.c (IN_TARGET_CODE): Likewise.
+ 	* config/i386/djgpp.c (IN_TARGET_CODE): Likewise.
+ 	* config/i386/driver-i386.c (IN_TARGET_CODE): Likewise.
+ 	* config/i386/driver-mingw32.c (IN_TARGET_CODE): Likewise.
+ 	* config/i386/host-cygwin.c (IN_TARGET_CODE): Likewise.
+ 	* config/i386/host-i386-darwin.c (IN_TARGET_CODE): Likewise.
+ 	* config/i386/host-mingw32.c (IN_TARGET_CODE): Likewise.
+ 	* config/i386/i386-c.c (IN_TARGET_CODE): Likewise.
+ 	* config/i386/i386.c (IN_TARGET_CODE): Likewise.
+ 	* config/i386/intelmic-mkoffload.c (IN_TARGET_CODE): Likewise.
+ 	* config/i386/msformat-c.c (IN_TARGET_CODE): Likewise.
+ 	* config/i386/winnt-cxx.c (IN_TARGET_CODE): Likewise.
+ 	* config/i386/winnt-stubs.c (IN_TARGET_CODE): Likewise.
+ 	* config/i386/winnt.c (IN_TARGET_CODE): Likewise.
+ 	* config/i386/x86-tune-sched-atom.c (IN_TARGET_CODE): Likewise.
+ 	* config/i386/x86-tune-sched-bd.c (IN_TARGET_CODE): Likewise.
+ 	* config/i386/x86-tune-sched-core.c (IN_TARGET_CODE): Likewise.
+ 	* config/i386/x86-tune-sched.c (IN_TARGET_CODE): Likewise.
+ 	* config/ia64/ia64-c.c (IN_TARGET_CODE): Likewise.
+ 	* config/ia64/ia64.c (IN_TARGET_CODE): Likewise.
+ 	* config/iq2000/iq2000.c (IN_TARGET_CODE): Likewise.
+ 	* config/lm32/lm32.c (IN_TARGET_CODE): Likewise.
+ 	* config/m32c/m32c-pragma.c (IN_TARGET_CODE): Likewise.
+ 	* config/m32c/m32c.c (IN_TARGET_CODE): Likewise.
+ 	* config/m32r/m32r.c (IN_TARGET_CODE): Likewise.
+ 	* config/m68k/m68k.c (IN_TARGET_CODE): Likewise.
+ 	* config/mcore/mcore.c (IN_TARGET_CODE): Likewise.
+ 	* config/microblaze/microblaze-c.c (IN_TARGET_CODE): Likewise.
+ 	* config/microblaze/microblaze.c (IN_TARGET_CODE): Likewise.
+ 	* config/mips/driver-native.c (IN_TARGET_CODE): Likewise.
+ 	* config/mips/frame-header-opt.c (IN_TARGET_CODE): Likewise.
+ 	* config/mips/mips.c (IN_TARGET_CODE): Likewise.
+ 	* config/mmix/mmix.c (IN_TARGET_CODE): Likewise.
+ 	* config/mn10300/mn10300.c (IN_TARGET_CODE): Likewise.
+ 	* config/moxie/moxie.c (IN_TARGET_CODE): Likewise.
+ 	* config/msp430/driver-msp430.c (IN_TARGET_CODE): Likewise.
+ 	* config/msp430/msp430-c.c (IN_TARGET_CODE): Likewise.
+ 	* config/msp430/msp430.c (IN_TARGET_CODE): Likewise.
+ 	* config/nds32/nds32-cost.c (IN_TARGET_CODE): Likewise.
+ 	* config/nds32/nds32-fp-as-gp.c (IN_TARGET_CODE): Likewise.
+ 	* config/nds32/nds32-intrinsic.c (IN_TARGET_CODE): Likewise.
+ 	* config/nds32/nds32-isr.c (IN_TARGET_CODE): Likewise.
+ 	* config/nds32/nds32-md-auxiliary.c (IN_TARGET_CODE): Likewise.
+ 	* config/nds32/nds32-memory-manipulation.c (IN_TARGET_CODE): Likewise.
+ 	* config/nds32/nds32-pipelines-auxiliary.c (IN_TARGET_CODE): Likewise.
+ 	* config/nds32/nds32-predicates.c (IN_TARGET_CODE): Likewise.
+ 	* config/nds32/nds32.c (IN_TARGET_CODE): Likewise.
+ 	* config/nios2/nios2.c (IN_TARGET_CODE): Likewise.
+ 	* config/nvptx/mkoffload.c (IN_TARGET_CODE): Likewise.
+ 	* config/nvptx/nvptx.c (IN_TARGET_CODE): Likewise.
+ 	* config/pa/pa.c (IN_TARGET_CODE): Likewise.
+ 	* config/pdp11/pdp11.c (IN_TARGET_CODE): Likewise.
+ 	* config/powerpcspe/driver-powerpcspe.c (IN_TARGET_CODE): Likewise.
+ 	* config/powerpcspe/host-darwin.c (IN_TARGET_CODE): Likewise.
+ 	* config/powerpcspe/host-ppc64-darwin.c (IN_TARGET_CODE): Likewise.
+ 	* config/powerpcspe/powerpcspe-c.c (IN_TARGET_CODE): Likewise.
+ 	* config/powerpcspe/powerpcspe-linux.c (IN_TARGET_CODE): Likewise.
+ 	* config/powerpcspe/powerpcspe.c (IN_TARGET_CODE): Likewise.
+ 	* config/riscv/riscv-builtins.c (IN_TARGET_CODE): Likewise.
+ 	* config/riscv/riscv-c.c (IN_TARGET_CODE): Likewise.
+ 	* config/riscv/riscv.c (IN_TARGET_CODE): Likewise.
+ 	* config/rl78/rl78-c.c (IN_TARGET_CODE): Likewise.
+ 	* config/rl78/rl78.c (IN_TARGET_CODE): Likewise.
+ 	* config/rs6000/driver-rs6000.c (IN_TARGET_CODE): Likewise.
+ 	* config/rs6000/host-darwin.c (IN_TARGET_CODE): Likewise.
+ 	* config/rs6000/host-ppc64-darwin.c (IN_TARGET_CODE): Likewise.
+ 	* config/rs6000/rs6000-c.c (IN_TARGET_CODE): Likewise.
+ 	* config/rs6000/rs6000-linux.c (IN_TARGET_CODE): Likewise.
+ 	* config/rs6000/rs6000-p8swap.c (IN_TARGET_CODE): Likewise.
+ 	* config/rs6000/rs6000-string.c (IN_TARGET_CODE): Likewise.
+ 	* config/rs6000/rs6000.c (IN_TARGET_CODE): Likewise.
+ 	* config/rx/rx.c (IN_TARGET_CODE): Likewise.
+ 	* config/s390/driver-native.c (IN_TARGET_CODE): Likewise.
+ 	* config/s390/s390-c.c (IN_TARGET_CODE): Likewise.
+ 	* config/s390/s390.c (IN_TARGET_CODE): Likewise.
+ 	* config/sh/sh-c.c (IN_TARGET_CODE): Likewise.
+ 	* config/sh/sh-mem.cc (IN_TARGET_CODE): Likewise.
+ 	* config/sh/sh.c (IN_TARGET_CODE): Likewise.
+ 	* config/sh/sh_optimize_sett_clrt.cc (IN_TARGET_CODE): Likewise.
+ 	* config/sh/sh_treg_combine.cc (IN_TARGET_CODE): Likewise.
+ 	* config/sparc/driver-sparc.c (IN_TARGET_CODE): Likewise.
+ 	* config/sparc/sparc-c.c (IN_TARGET_CODE): Likewise.
+ 	* config/sparc/sparc.c (IN_TARGET_CODE): Likewise.
+ 	* config/spu/spu-c.c (IN_TARGET_CODE): Likewise.
+ 	* config/spu/spu.c (IN_TARGET_CODE): Likewise.
+ 	* config/stormy16/stormy16.c (IN_TARGET_CODE): Likewise.
+ 	* config/tilegx/mul-tables.c (IN_TARGET_CODE): Likewise.
+ 	* config/tilegx/tilegx-c.c (IN_TARGET_CODE): Likewise.
+ 	* config/tilegx/tilegx.c (IN_TARGET_CODE): Likewise.
+ 	* config/tilepro/mul-tables.c (IN_TARGET_CODE): Likewise.
+ 	* config/tilepro/tilepro-c.c (IN_TARGET_CODE): Likewise.
+ 	* config/tilepro/tilepro.c (IN_TARGET_CODE): Likewise.
+ 	* config/v850/v850-c.c (IN_TARGET_CODE): Likewise.
+ 	* config/v850/v850.c (IN_TARGET_CODE): Likewise.
+ 	* config/vax/vax.c (IN_TARGET_CODE): Likewise.
+ 	* config/visium/visium.c (IN_TARGET_CODE): Likewise.
+ 	* config/vms/vms-c.c (IN_TARGET_CODE): Likewise.
+ 	* config/vms/vms-f.c (IN_TARGET_CODE): Likewise.
+ 	* config/vms/vms.c (IN_TARGET_CODE): Likewise.
+ 	* config/xtensa/xtensa.c (IN_TARGET_CODE): Likewise.
+ 
+ 2017-12-16  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* tree-ssa-sccvn.c (vn_reference_lookup_3): Avoid repeated
+ 	checks for MEM_REF.
+ 
+ 2017-12-16  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* doc/generic.texi (VEC_SERIES_EXPR): Document.
+ 	* doc/md.texi (vec_series@var{m}): Document.
+ 	* tree.def (VEC_SERIES_EXPR): New tree code.
+ 	* tree.h (build_vec_series): Declare.
+ 	* tree.c (build_vec_series): New function.
+ 	* cfgexpand.c (expand_debug_expr): Handle VEC_SERIES_EXPR.
+ 	* tree-pretty-print.c (dump_generic_node): Likewise.
+ 	* gimple-pretty-print.c (dump_binary_rhs): Likewise.
+ 	* tree-inline.c (estimate_operator_cost): Likewise.
+ 	* expr.c (expand_expr_real_2): Likewise.
+ 	* optabs-tree.c (optab_for_tree_code): Likewise.
+ 	* tree-cfg.c (verify_gimple_assign_binary): Likewise.
+ 	* fold-const.c (const_binop): Fold VEC_SERIES_EXPRs of constants.
+ 	* expmed.c (make_tree): Handle VEC_SERIES.
+ 	* optabs.def (vec_series_optab): New optab.
+ 	* optabs.h (expand_vec_series_expr): Declare.
+ 	* optabs.c (expand_vec_series_expr): New function.
+ 	* tree-vect-generic.c (expand_vector_operations_1): Check that
+ 	the operands also have vector type.
+ 
+ 2017-12-16  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hawyard@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* doc/generic.texi (VEC_DUPLICATE_EXPR): Document.
+ 	(VEC_COND_EXPR): Add missing @tindex.
+ 	* doc/md.texi (vec_duplicate@var{m}): Document.
+ 	* tree.def (VEC_DUPLICATE_EXPR): New tree codes.
+ 	* tree.c (build_vector_from_val): Add stubbed-out handling of
+ 	variable-length vectors, using VEC_DUPLICATE_EXPR.
+ 	(uniform_vector_p): Handle VEC_DUPLICATE_EXPR.
+ 	* cfgexpand.c (expand_debug_expr): Likewise.
+ 	* tree-cfg.c (verify_gimple_assign_unary): Likewise.
+ 	* tree-inline.c (estimate_operator_cost): Likewise.
+ 	* tree-pretty-print.c (dump_generic_node): Likewise.
+ 	* tree-vect-generic.c (ssa_uniform_vector_p): Likewise.
+ 	* fold-const.c (const_unop): Fold VEC_DUPLICATE_EXPRs of a constant.
+ 	(test_vec_duplicate_folding): New function.
+ 	(fold_const_c_tests): Call it.
+ 	* optabs.def (vec_duplicate_optab): New optab.
+ 	* optabs-tree.c (optab_for_tree_code): Handle VEC_DUPLICATE_EXPR.
+ 	* optabs.h (expand_vector_broadcast): Declare.
+ 	* optabs.c (expand_vector_broadcast): Make non-static.  Try using
+ 	vec_duplicate_optab.
+ 	* expr.c (store_constructor): Try using vec_duplicate_optab for
+ 	uniform vectors.
+ 	(expand_expr_real_2): Handle VEC_DUPLICATE_EXPR.
+ 
+ 2017-12-15  Markus Trippelsdorf  <markus@trippelsdorf.de>
+ 
+ 	PR target/83358
+ 	* config/i386/x86-tune-costs.h (skylake_cost, core_cost): Increase
+ 	div/mod latencies a bit.
+ 
+ 2017-12-15  Jeff Law  <law@redhat.com>
+ 
+ 	PR tree-optimization/36550
+ 	* tree-ssa-threadupdate.c (count_stmts_and_phis_in_block): New.
+ 	(mark_threaded_blocks): Rewrite code to avoid block copying when
+ 	optimizing for size.  Don't pessimize blocks which will be
+ 	copied, but all the statements will be dead.
+ 
+ 2017-12-15  Alexandre Oliva  <aoliva@redhat.com>
+ 
+ 	PR tree-optimization/81165
+ 	* tree-ssa-threadupdate.c (uses_in_bb): New.
+ 	(estimate_threading_killed_stmts): New.
+ 	* tree-ssa-threadupdate.h (estimate_threading_killed_stmts): Prototype.
+ 	* tree-ssa-threadedge.c
+ 	(record_temporary_equivalences_from_stmts_at_dest): Expand limit
+ 	when its hit.
+ 
+ 2017-12-15  Jeff Law  <law@redhat.com>
+ 
+ 	PR tree-optimization/83410
+ 	* tree-ssa-threadupdate.c (thread_block_1): Avoid certain jump
+ 	threads when parallelizing loops.
+ 
+ 2017-12-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* tree-core.h (struct attribute_spec): Swap affects_type_identity and
+ 	handler fields.
+ 	* config/alpha/alpha.c (vms_attribute_table): Swap
+ 	affects_type_identity and handler fields, adjust comments.
+ 	* config/mips/mips.c (mips_attribute_table): Likewise.
+ 	* config/visium/visium.c (visium_attribute_table): Likewise.
+ 	* config/epiphany/epiphany.c (epiphany_attribute_table): Likewise.
+ 	* config/microblaze/microblaze.c (microblaze_attribute_table):
+ 	Likewise.
+ 	* config/spu/spu.c (spu_attribute_table): Likewise.
+ 	* config/mcore/mcore.c (mcore_attribute_table): Likewise.
+ 	* config/arc/arc.c (arc_attribute_table): Likewise.
+ 	* config/m68k/m68k.c (m68k_attribute_table): Likewise.
+ 	* config/v850/v850.c (v850_handle_interrupt_attribute,
+ 	v850_handle_data_area_attribute): Formatting fixes.
+ 	(v850_attribute_table): Swap affects_type_identity and handler
+ 	fields, adjust comments.
+ 	* config/m32r/m32r.c (m32r_attribute_table): Likewise.
+ 	* config/arm/arm.c (arm_attribute_table): Likewise.
+ 	* config/avr/avr.c (avr_attribute_table): Likewise.
+ 	* config/s390/s390.c (s390_attribute_table): Likewise.
+ 	* config/sh/sh.c (sh_attribute_table): Likewise.
+ 	* config/i386/i386.c (ix86_handle_cconv_attribute,
+ 	ix86_handle_callee_pop_aggregate_return): Formatting fixes.
+ 	(ix86_attribute_table): Swap affects_type_identity and handler
+ 	fields, adjust comments.
+ 	* config/i386/cygming.h (SUBTARGET_ATTRIBUTE_TABLE): Likewise.
+ 	* config/sparc/sparc.c (sparc_attribute_table): Likewise.
+ 	* config/m32c/m32c.c (m32c_attribute_table): Likewise.
+ 	* config/sol2.h (SOLARIS_ATTRIBUTE_TABLE): Likewise.
+ 	* config/ia64/ia64.c (ia64_attribute_table): Likewise.
+ 	* config/msp430/msp430.c (msp430_attribute_table): Likewise.
+ 	* config/rx/rx.c (rx_attribute_table): Likewise.
+ 	* config/cr16/cr16.c (cr16_attribute_table): Likewise.
+ 	* config/h8300/h8300.c (h8300_attribute_table): Likewise.
+ 	* config/nvptx/nvptx.c (nvptx_attribute_table): Likewise.
+ 	* config/powerpcspe/powerpcspe.c (rs6000_attribute_table): Likewise.
+ 	* config/darwin.h (SUBTARGET_ATTRIBUTE_TABLE): Likewise.
+ 	* config/stormy16/stormy16.c (xstormy16_attribute_table): Likewise.
+ 	* config/bfin/bfin.c (bfin_attribute_table): Likewise.
+ 	* config/rs6000/rs6000.c (rs6000_attribute_table): Likewise.
+ 	* config/rl78/rl78.c (rl78_attribute_table): Likewise.
+ 	* config/nds32/nds32.c (nds32_attribute_table): Likewise.
+ 	* doc/plugins.texi (user_attr): Likewise.  Add NULL for
+ 	exclude.
+ 	* attribs.c (empty_attribute_table): Swap affects_type_identity and
+ 	handler fields.
+ 	(register_scoped_attributes, decl_attributes): Formatting fixes.
+ 
+ 	PR tree-optimization/83269
+ 	* fold-const.c (fold_binary_loc): Perform (-A) - B -> (-B) - A
+ 	subtraction in arg0's type if type is signed and arg0 is unsigned.
+ 	Formatting fix.
+ 
+ 	PR sanitizer/81281
+ 	* match.pd ((T)(P + A) - (T)P -> (T) A): Use @@0 instead of @0 and
+ 	convert? on @0 instead of convert.  Check type of @1, not @0.
+ 	((T)P - (T)(P + A) -> -(T) A): Use @@0 instead of @0 and
+ 	convert? on @0 instead of convert.  Check type of @1, not @0.
+ 	((T)(P + A) - (T)(P + B) -> (T)A - (T)B): Use @@0 instead of @0,
+ 	only optimize if either both @1 and @2 types are narrower
+ 	precision, or both are wider or equal precision, and in the former
+ 	case only if both have undefined overflow.
+ 
+ 2017-12-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR lto/83388
+ 	* internal-fn.def (IFN_NOP): Add.
+ 	* internal-fn.c (expand_NOP): Do nothing.
+ 	* lto-streamer-in.c (input_function): Instead of removing
+ 	sanitizer calls replace them with IFN_NOP calls.
+ 
+ 2017-12-15  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* dse.c (store_info, read_info_type): Replace begin and end with
+ 	offset and width.
+ 	(print_range): New function.
+ 	(set_all_positions_unneeded, any_positions_needed_p)
+ 	(check_mem_read_rtx, scan_stores, scan_reads, dse_step5): Update
+ 	accordingly.
+ 	(record_store): Likewise.  Optimize the case in which all positions
+ 	are unneeded.
+ 	(get_stored_val): Replace read_begin and read_end with read_offset
+ 	and read_width.
+ 	(replace_read): Update call accordingly.
+ 
+ 2017-12-15  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* gimple-loop-interchange.cc (STMT_COST_RATIO): New macro.
+ 	(loop_cand::m_num_stmts, loop_cand::m_const_init_reduc): New members.
+ 	(loop_cand::loop_cand): Initialize above members.
+ 	(loop_cand::supported_operations): Delete.
+ 	(loop_cand::can_interchange_p): Inline above function.
+ 	(loop_cand::classify_simple_reduction): Record number of constant
+ 	initialized simple reductions.
+ 	(should_interchange_loops): New parameters.  Check stmt cost of loops
+ 	to be interchange.
+ 	(tree_loop_interchange::interchange): Prepare stmt cost of outer loop.
+ 	Update call to should_interchange_loops.
+ 	(should_interchange_loop_nest): Update call to
+ 	should_interchange_loops.
+ 
+ 2017-12-15  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR target/66488
+ 	* ggc-page.c (HOST_BITS_PER_PTR): Do not define here...
+ 	* hwint.h (HOST_BITS_PER_PTR): ...but here instead.
+ 	* config/i386/xm-mingw32.h (HOST_BITS_PER_PTR): Delete.
+ 
+ 2017-12-15  Julia Koval  <julia.koval@intel.com>
+ 
+ 	* config/i386/i386-builtin.def (__builtin_ia32_vaesenclast_v16qi,
+ 	__builtin_ia32_vaesenclast_v32qi, __builtin_ia32_vaesenclast_v64qi):
+ 	New.
+ 	* config/i386/sse.md (vaesenclast_<mode>): New pattern.
+ 	* config/i386/vaesintrin.h (_mm256_aesenclast_epi128,
+ 	_mm512_aesenclast_epi128, _mm_aesenclast_epi128): New intrinsics.
+ 
+ 2017-12-15  Julia Koval  <julia.koval@intel.com>
+ 
+ 	* config/i386/i386-builtin.def (__builtin_ia32_vaesenc_v16qi,
+ 	__builtin_ia32_vaesenc_v32qi, __builtin_ia32_vaesenc_v64qi): New.
+ 	* config/i386/sse.md (vaesenc_<mode>): New pattern.
+ 	* config/i386/vaesintrin.h (_mm256_aesenc_epi128, _mm512_aesenc_epi128,
+ 	_mm_aesenc_epi128): New intrinsics.
+ 
+ 2017-12-15  Julia Koval  <julia.koval@intel.com>
+ 
+ 	* config/i386/i386-builtin.def (__builtin_ia32_vaesdeclast_v16qi,
+ 	__builtin_ia32_vaesdeclast_v32qi, __builtin_ia32_vaesdeclast_v64qi):
+ 	New.
+ 	* config/i386/sse.md (vaesdeclast_<mode>): New pattern.
+ 	* config/i386/vaesintrin.h (_mm256_aesdeclast_epi128,
+ 	_mm512_aesdeclast_epi128, _mm_aesdeclast_epi128): New intrinsics.
+ 
+ 2017-12-14  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	* gimple-ssa-strength-reduction.c (analyze_increments):
+ 	Distinguish replacement costs for constant strides from those for
+ 	unknown strides.
+ 
+ 2017-12-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* var-tracking.c (variable_tracking_main_1): Formatting fix.
+ 
+ 2017-12-14  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+ 
+ 	* doc/invoke.texi: Document -Wcast-function-type.
+ 	* recog.h (stored_funcptr): Change signature.
+ 	* tree-dump.c (dump_node): Avoid warning.
+ 	* typed-splay-tree.h (typed_splay_tree): Avoid warning.
+ 
+ 2017-12-14  Qing Zhao  <qing.zhao@oracle.com>
+ 
+ 	PR middle_end/79538
+ 	* gimple-fold.c (get_range_strlen): Add the handling of non-member 
+ 	array.
+ 
+ 2017-12-14  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR tree-optimization/83312
+ 	* domwalk.h (dom_walker::dom_walker): Fix typo in comment.
+ 	* tree-cfg.c (find_taken_edge): Update to handle NULL_TREE for
+ 	"val" param, and to cope with arbitrary basic blocks.
+ 	(find_taken_edge_cond_expr): Add "cond_stmt" param and use it to
+ 	handle NULL_TREE for "val", dropping "bb" param.
+ 	(find_taken_edge_switch_expr): Make "switch_stmt" param const and
+ 	drop "bb" param.  Handle NULL_TREE for "val".
+ 	(find_case_label_for_value): Make "switch_stmt" param const.
+ 	* tree-vrp.c (class check_array_bounds_dom_walker): New subclass
+ 	of dom_walker.
+ 	(vrp_prop::check_all_array_refs): Reimplement as...
+ 	(check_array_bounds_dom_walker::before_dom_children): ...this new
+ 	vfunc.  Replace linear search through BB block list, excluding
+ 	those with non-executable in-edges via dominator walk.
+ 
+ 2017-12-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* config/arm/arm.opt (mverbose-cost-dump): New option.
+ 	* config/arm/arm.c (arm_rtx_costs): Use it.
+ 
+ 2017-12-14  Andreas Schwab  <schwab@linux-m68k.org>
+ 
+ 	PR bootstrap/83396
+ 	* reload1.c (emit_input_reload_insns): Skip debug markers.
+ 
+ 2017-12-14  Alexandre Oliva  <aoliva@redhat.com>
+ 
+ 	* config/i386/i386.c (rest_of_insert_endbranch): Use call loc
+ 	for its nop_endbr.
+ 
+ 	PR bootstrap/83396
+ 	* config/arc/arc.c (hwloop_optimize): Skip debug insns.
+ 	* config/sh/sh-protos.h (sh_find_set_of_reg): Adjust.
+ 	* config/sh/sh.c: Skip debug insns besides notes.
+ 	* config/sh/sh.md: Likewise.
+ 	* config/sh/sh_treg_combine.cc: Likewise.
+ 	* config/sh/sync.md: Likewise.
+ 
+ 2017-12-14  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	* doc/sourcebuild.texi (Effective-Target Keywords, Other attributes):
+ 	Add item for weak_undefined.
+ 
+ 2017-12-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/67842
+ 	* sese.h (bb_in_region): Remove #if 0'ed code.
+ 
+ 2017-12-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/83326
+ 	* tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Add
+ 	may_be_zero parameter and handle it by not marking the first
+ 	peeled copy as not exiting the loop.
+ 	(try_peel_loop): Likewise.
+ 	(canonicalize_loop_induction_variables): Use number_of_iterations_exit
+ 	to handle the case of constant or zero iterations and perform
+ 	loop header copying on-the-fly.
+ 
+ 2017-12-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/83418
+ 	* vr-values.c (vr_values::extract_range_for_var_from_comparison_expr):
+ 	Instead of asserting we don't get unfolded comparisons deal with them.
+ 
+ 2017-12-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR bootstrap/83396
+ 	* var-tracking.c (vt_initialize): Ignore non-DEBUG_INSNs outside of
+ 	basic blocks.  Assert debug bind insns don't appear outside of bbs,
+ 	don't reset them.  Assert insns without BLOCK_FOR_INSN are outside of
+ 	bb.  Simplify.
+ 
+ 	PR tree-optimization/83198
+ 	* gimple-ssa-sprintf.c (format_floating): Set type solely based on
+ 	dir.modifier, regardless of TREE_TYPE (arg).  Assume non-REAL_CST
+ 	value if arg is a REAL_CST with incompatible type.
+ 
+ 2017-12-14  Sudakshina Das  <sudi.das@arm.com>
+ 	    Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	PR target/81228
+ 	* config/aarch64/aarch64.c (aarch64_select_cc_mode): Move LTGT
+ 	to CCFPEmode.
+ 	* config/aarch64/aarch64-simd.md (vec_cmp<mode><v_int_equiv>): Add
+ 	LTGT.
+ 
+ 2017-12-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* config/aarch64/aarch64-cores.def (cortex-a55, cortex-a75,
+ 	cortex-a75.cortex-a55): Specify AARCH64_FL_F16 in the arch features.
+ 
+ 2017-12-14  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* poly-int.h: New file.
+ 	* poly-int-types.h: Likewise.
+ 	* coretypes.h: Include them.
+ 	(POLY_INT_CONVERSION): Define.
+ 	* target.def (estimated_poly_value): New hook.
+ 	* doc/tm.texi.in (TARGET_ESTIMATED_POLY_VALUE): New hook.
+ 	* doc/tm.texi: Regenerate.
+ 	* doc/poly-int.texi: New file.
+ 	* doc/gccint.texi: Include it.
+ 	* doc/rtl.texi: Describe restrictions on subreg modes.
+ 	* Makefile.in (TEXI_GCCINT_FILES): Add poly-int.texi.
+ 	* genmodes.c (NUM_POLY_INT_COEFFS): Provide a default definition.
+ 	(emit_insn_modes_h): Emit a definition of NUM_POLY_INT_COEFFS.
+ 	* targhooks.h (default_estimated_poly_value): Declare.
+ 	* targhooks.c (default_estimated_poly_value): New function.
+ 	* target.h (estimated_poly_value): Likewise.
+ 	* wide-int.h (WI_UNARY_RESULT): Use wi::binary_traits.
+ 	(wi::unary_traits): Delete.
+ 	(wi::binary_traits::signed_shift_result_type): Define for
+ 	offset_int << HOST_WIDE_INT, etc.
+ 	(generic_wide_int::operator <<=): Define for all types and use
+ 	wi::lshift instead of <<.
+ 	(wi::hwi_with_prec): Add a default constructor.
+ 	(wi::ints_for): New class.
+ 	(operator <<): Define for all wide-int types.
+ 	(operator /): New function.
+ 	(operator %): Likewise.
+ 	* selftest.h (ASSERT_KNOWN_EQ, ASSERT_KNOWN_EQ_AT, ASSERT_MAYBE_NE)
+ 	(ASSERT_MAYBE_NE_AT): New macros.
+ 
+ 2017-12-13  Eric Botcazou  <ebotcazou@adacore.com>
+ 	    Dominik Vogt  <vogt@linux.vnet.ibm.com>
+ 
+ 	PR middle-end/78468
+ 	* emit-rtl.c (init_emit): Remove ??? comment.
+ 	* explow.c (get_dynamic_stack_size): Take known alignment of stack
+ 	pointer + STACK_DYNAMIC_OFFSET into account in lieu of STACK_BOUNDARY.
+ 	* config/sparc/sparc.h (INIT_EXPANDERS): In 32-bit mode, lower the
+ 	alignment of 3 virtual registers to BITS_PER_WORD.
+ 
+ 	* config/sparc/sparc.c (sparc_compute_frame_size): Simplify.
+ 
+ 2017-12-13  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	* config/rs6000/ppc-auxv.h (PPC_FEATURE2_HTM_NO_SUSPEND): New define.
+ 	* config/rs6000/rs6000.c (cpu_supports_info): Use it.
+ 
+ 2017-12-13  Alexandre Oliva  <aoliva@redhat.com>
+ 
+ 	PR bootstrap/83396
+ 	* reload1.c (eliminate_regs_in_insn): Skip debug markers.
+ 
+ 2017-12-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* tree-cfg.c (verify_gimple_in_cfg): Verify no non-label stmts
+ 	with the exception of debug begin stmt markers appear before
+ 	labels.
+ 
+ 	PR bootstrap/83396
+ 	* final.c (rest_of_handle_final): Call variable_tracking_main only
+ 	if !flag_var_tracking.
+ 
+ 2017-12-13  Alexandre Oliva  <aoliva@redhat.com>
+ 	    Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR bootstrap/83396
+ 	PR debug/83391
+ 	* tree-cfgcleanup.c (remove_forwarder_block): Keep after
+ 	labels debug stmts that can only appear after labels.
+ 
+ 2017-12-13  Alexander Monakov  <amonakov@ispras.ru>
+ 
+ 	PR rtl-optimization/82398
+ 	* sel-sched.c (sel_rank_for_schedule): Fix check for zero
+ 	EXPR_USEFULNESS in priority comparison.
+ 
+ 2017-12-13  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR rtl-optimization/83393
+ 	* combine.c (move_deaths): If reg_stat points to a too new insn in
+ 	last_death, do not use it: find the proper insn instead.
+ 
+ 2017-12-12  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
+ 
+ 	PR target/82190
+ 	* config/rs6000/rs6000-string.c (expand_block_compare,
+ 	expand_strn_compare): Fix set_mem_size() calls.
+ 
+ 2017-12-12  Jeff Law  <law@redhat.com>
+ 
+ 	PR tree-optimization/83298
+ 	PR tree-optimization/83362
+ 	PR tree-optimization/83383
+ 	* gimple-ssa-evrp-analyze.h (class evrp_range_analyzer): Make
+ 	push_value_range a public interface.  Add new argument to
+ 	record_ranges_from_stmt.
+ 	* gimple-ssa-evrp-analyze.c
+ 	(evrp_range_analyzer::record_ranges_from_stmt): Add new argument.
+ 	Update comments.  Handle recording temporary equivalences.
+ 	* tree-ssa-dom.c (dom_opt_opt_walker::before_dom_children): Add
+ 	new argument to call to evrp_range_analyzer::record_ranges_from_stmt.
+ 	* gimple-ssa-evrp.c (evrp_dom_walker::before_dom_children): Likewise.
+ 	* tree-ssa-threadedge.c: Include alloc-pool.h, vr-values.h and
+ 	gimple-ssa-evrp-analyze.h.
+ 	(record_temporary_equivalences_from_phis): Add new argument.  When
+ 	the PHI arg is an SSA_NAME, set the result's range to the range
+ 	of the PHI arg.
+ 	(record_temporary_equivalences_from_stmts_at_dest): Record ranges
+ 	from statements too.
+ 	(thread_through_normal_block): Accept new argument, evrp_range_analyzer.
+ 	Pass it down to children as needed.
+ 	(thread_outgoing_edges): Likewise.
+ 	(thread_across_edge): Likewise.   Push/pop range state as needed.
+ 	* tree-ssa-threadedge.h (thread_outgoing_edges): Update prototype.
+ 
+ 2017-12-12  Julia Koval  <julia.koval@intel.com>
+ 
+ 	* config/i386/i386.c (PTA_SKYLAKE_AVX512): Add PTA_CLWB.
+ 	(PTA_CANNONLAKE): Remove PTA_CLWB.
+ 
+ 2017-12-12  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	PR target/83332
+ 	* config/rs6000/vector.md (vcondv2dfv2di): New define_expand.
+ 	(vcondv2div2df): Likewise.
+ 	(vconduv2dfv2di): Likewise.
+ 
+ 2017-12-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* builtins.def (BUILT_IN_NEXTAFTER, BUILT_IN_NEXTAFTERF,
+ 	BUILT_IN_NEXTAFTERL, BUILT_IN_NEXTTOWARD, BUILT_IN_NEXTTOWARDF,
+ 	BUILT_IN_NEXTTOWARDL): Use ATTR_MATHFN_ERRNO instead of
+ 	ATTR_MATHFN_FPROUNDING_ERRNO.
+ 
+ 2017-12-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/83385
+ 	* graphite-scop-detection.c (get_order, order): Remove.
+ 	(bb_to_rpo): New global.
+ 	(cmp_pbbs): Adjust.
+ 	(build_scops): Sort pbbs in RPO order.
+ 
+ 2017-12-12  James Greenhalgh  <james.greenhalgh@arm.com>
+ 
+ 	* combine.c (simplify_set): Do not transform subregs to zero_extends
+ 	if the destination mode is a vector mode.
+ 
+ 2017-12-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/83359
+ 	* tree-cfg.h (fold_loop_internal_call): Declare.
+ 	* tree-vectorizer.c (fold_loop_internal_call): Moved to ...
+ 	* tree-cfg.c (fold_loop_internal_call): ... here.  No longer static.
+ 	(find_loop_dist_alias): New function.
+ 	(move_sese_region_to_fn): If any dloop->orig_loop_num value is
+ 	updated, also adjust any corresponding LOOP_DIST_ALIAS internal
+ 	calls.
+ 
+ 	PR tree-optimization/80631
+ 	* tree-vect-loop.c (get_initial_def_for_reduction): Fix comment typo.
+ 	(vect_create_epilog_for_reduction): Add INDUC_VAL and INDUC_CODE
+ 	arguments, for INTEGER_INDUC_COND_REDUCTION use INDUC_VAL instead of
+ 	hardcoding zero as the value if COND_EXPR is never true.  For
+ 	INTEGER_INDUC_COND_REDUCTION don't emit the final COND_EXPR if
+ 	INDUC_VAL is equal to INITIAL_DEF, and use INDUC_CODE instead of
+ 	hardcoding MAX_EXPR as the reduction operation.
+ 	(is_nonwrapping_integer_induction): Allow negative step.
+ 	(vectorizable_reduction): Compute INDUC_VAL and INDUC_CODE for
+ 	vect_create_epilog_for_reduction, if no value is suitable, don't
+ 	use INTEGER_INDUC_COND_REDUCTION for now.  Formatting fixes.
+ 
+ 2017-12-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/81889
+ 	* tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness): Use
+ 	range info from the non-wrapping IV instead of just the range
+ 	of the type.
+ 
+ 2017-12-12  Julia Koval  <julia.koval@intel.com>
+ 
+ 	* config.gcc: Add vaesintrin.h.
+ 	* config/i386/i386-builtin-types.def (V64QI_FTYPE_V64QI_V64QI):
+ 	New type.
+ 	* config/i386/i386-builtin.def (__builtin_ia32_vaesdec_v16qi,
+ 	__builtin_ia32_vaesdec_v32qi, __builtin_ia32_vaesdec_v64qi):
+ 	New builtins.
+ 	* config/i386/i386.c (ix86_expand_args_builtin): Handle new type.
+ 	* config/i386/immintrin.h: Include vaesintrin.h.
+ 	* config/i386/sse.md (vaesdec_<mode>): New pattern.
+ 	* config/i386/vaesintrin.h (_mm256_aesdec_epi128, _mm512_aesdec_epi128,
+ 	_mm_aesdec_epi128): New intrinsics.
+ 
+ 2017-12-12  Julia Koval  <julia.koval@intel.com>
+ 
+ 	* common/config/i386/i386-common.c (OPTION_MASK_ISA_VAES_SET,
+ 	OPTION_MASK_ISA_VAES_UNSET): New.
+ 	(ix86_handle_option): Handle -mvaes.
+ 	* config/i386/cpuid.h: Define bit_VAES.
+ 	* config/i386/driver-i386.c (host_detect_local_cpu): Detect -mvaes.
+ 	* config/i386/i386-c.c (__VAES__): New.
+ 	* config/i386/i386.c (ix86_target_string): Add -mvaes.
+ 	(ix86_valid_target_attribute_inner_p): Ditto.
+ 	* config/i386/i386.h (TARGET_VAES, TARGET_VAES_P): New.
+ 	* config/i386/i386.opt: Add -mvaes.
+ 	* doc/invoke.texi: Ditto.
+ 
+ 2017-12-12  Alexandre Oliva  <aoliva@redhat.com>
+ 
+ 	* debug.h (gcc_debug_hooks): Add inline_entry.
+ 	* dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Likewise.
+ 	* debug.c (do_nothing_debug_hooks): Likewise.
+ 	* vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
+ 	* dwarf2out.c (dwarf2_debug_hooks): Likewise.
+ 	(dwarf2_lineno_debug_hooks): Likewise.
+ 
+ 	* common.opt (gstatement-frontiers): New, setting
+ 	debug_nonbind_markers_p.
+ 	* rtl.h (MAY_HAVE_DEBUG_MARKER_INSNS): Activate.
+ 	* toplev.c (process_options): Autodetect value for debug statement
+ 	frontiers option.
+ 	* tree.h (MAY_HAVE_DEBUG_MARKER_STMTS): Activate.
+ 	* doc/invoke.texi (gstatement-frontiers, gno-statement-frontiers): New.
+ 
+ 	* cfgexpand.c (expand_gimple_basic_block): Handle begin stmt
+ 	markers.  Integrate source bind into debug stmt expand loop.
+ 	(pass_expand::execute): Check debug marker limit.  Avoid deep
+ 	TER and expand debug locations for debug bind insns only.
+ 	* cse.c (insn_live_p): Keep nonbind markers and debug bindings
+ 	followed by them.
+ 	* df-scan.c (df_insn_delete): Accept out-of-block debug insn.
+ 	* final.c (reemit_insn_block_notes): Take current block from
+ 	nonbind markers.  Declare note where it's first set.
+ 	(final_scan_insn): Handle begin stmt notes.  Emit is_stmt according to
+ 	begin stmt markers if enabled.
+ 	(notice_source_line): Handle nonbind markers.  Fail if their
+ 	location is unknown or that of builtins.
+ 	(rest_of_handle_final): Convert begin stmt markers to notes if
+ 	var-tracking didn't run.
+ 	(rest_of_clean_state): Skip begin stmt markers.
+ 	* gimple-pretty-print.c (dump_gimple_debug): Handle begin stmt
+ 	markers.
+ 	* function.c (allocate_struct_function): Set begin_stmt_markers.
+ 	* function.h (struct function): Add debug_marker_count counter
+ 	and debug_nonbind_markers flag.
+ 	* gimple-iterator.c (gsi_remove): Adjust debug_marker_count.
+ 	* gimple-low.c (lower_function_body): Adjust
+ 	debug_nonbind_markers.
+ 	(lower_stmt): Drop or skip gimple debug stmts.
+ 	(lower_try_catch): Skip debug stmts.
+ 	* gimple.c (gimple_build_debug_begin_stmt): New.
+ 	(gimple_copy): Increment debug_marker_count if copying one.
+ 	* gimple.h (gimple_build_debug_begin_stmt): Declare.
+ 	* gimplify.c (rexpr_location): New.
+ 	(rexpr_has_location): New.
+ 	(warn_switch_unreachable_r): Handle gimple debug stmts.
+ 	(shortcut_cond_r): Call expr_location.
+ 	(find_goto): New.
+ 	(find_goto_label): New.
+ 	(shortcut_cond_expr): Call expr_has_location, expr_location, and
+ 	find_goto_label.
+ 	(gimplify_cond_expr): Call find_goto_label, expr_has_location, and
+ 	expr_location.
+ 	(gimplify_expr): Handle begin stmt markers.  Reject debug expr decls.
+ 	* langhooks-def.h (LANG_HOOKS_EMITS_BEGIN_STMT): New.  Add to...
+ 	(LANG_HOOKS_INITIALIZER): ... this.
+ 	* langhooks.h (struct lang_hooks): Add emits_begin_stmt.
+ 	* lra-contraints.c (inherit_reload_reg): Tolerate between-blocks
+ 	debug insns.
+ 	(update_ebb_live_info): Skip debug insn markers.
+ 	* lra.c (debug_insn_static_data): Rename to...
+ 	(debug_bind_static_data): ... this.
+ 	(debug_marker_static_data): New.
+ 	(lra_set_insn_recog_data): Select one of the above depending
+ 	on debug insn kind.
+ 	(lra_update_isn_regno_info): Don't assume debug insns have
+ 	freqs.
+ 	(push_insns): Skip debug insns.
+ 	* lto-streamer-in.c (input_function): Drop debug stmts
+ 	depending on active options.  Adjust debug_nonbind_markers.
+ 	* params.def (PARAM_MAX_DEBUG_MARKER_COUNT): New.
+ 	* print-rtl.c (rtx_writer::print_rtx_operand_code_0): Handle
+ 	begin stmt marker notes.
+ 	(print_insn): Likewise.
+ 	* recog.c (extract_insn): Recognize rtl for debug markers.
+ 	* rtl.def (DEBUG_MARKER): New.
+ 	* tree-inline.c: Include params.h.
+ 	(remap_gimple_stmt): Handle nonbind markers.
+ 	(maybe_move_debug_stmts_to_successors): Likewise.
+ 	(copy_debug_stmt): Likewise.
+ 	* tree-iterator.c (append_to_statement_list_1): Append begin stmt
+ 	markers regardless of no side effects.
+ 	(tsi_link_before): Don't update container's side effects when adding
+ 	a begin stmt marker.
+ 	(tsi_link_after): Likewise.
+ 	(expr_first): Skip begin stmt markers.
+ 	(expr_last): Likewise.
+ 	* tree-pretty-print (dump_generic_node): Handle begin stmt markers.
+ 	* tree-ssa-threadedge.c (propagate_threaded_block_debug_info):
+ 	Disregard nonbind markers.
+ 	* tree.c (make_node_stat): Don't set side effects for begin stmt
+ 	markers.
+ 	(build1_stat): Likewise.
+ 	* tree.def (DEBUG_BEGIN_STMT): New.
+ 	* tree.h (GOTO_DESTINATION): Require a GOTO_EXPR.
+ 	* var-tracking.c (delete_debug_insns): Renamed to...
+ 	(delete_vta_debug_insns): ... this.
+ 	(reemit_marker_as_note): New.
+ 	(vt_initialize): Reemit markers.
+ 	(delete_vta_debug_insns): Likewise.
+ 	(vt_debug_insns_local): Reemit or delete markers.
+ 	(variable_tracking_main_1): Likewise.
+ 	* doc/generic.texi (DEBUG_BEGIN_STMT): Document.
+ 	* doc/gimple.texi (gimple_debug_begin_stmt_p): New.
+ 	(gimple_debug_nonbind_marker_p): New.
+ 	(gimple_build_debug_bind): Adjust.
+ 	(gimple_build_debug_begin_stmt): New.
+ 	* doc/invoke.texi (max-debug-marker-count): New param.
+ 	* doc/rtl.texi (debug_implicit_ptr, entry_value): New.
+ 	(debug_parameter_ref, debug_marker): New.
+ 	(NOTE_INSN_BEGIN_STMT): New.
+ 	(DEBUG_INSN): Describe begin stmt markers.
+ 
+ 	* cfgbuild.c (find_bb_boundaries): Don't purge dead edges if,
+ 	without debug insns, we wouldn't, but clean up debug insns
+ 	after a control flow insn nevertheless.
+ 
+ 	* cfgcleanup.c (delete_unreachable_blocks): Use alternate
+ 	block removal order if MAY_HAVE_DEBUG_BIND_INSNS.
+ 	* cfgexpand.c (label_rtx_for_bb): Skip debug insns.
+ 	* cfgrtl.c (try_redirect_by_replacing_jump): Skip debug insns.
+ 	(rtl_tidy_fallthru_edge): Likewise.
+ 	(rtl_verify_fallthru): Likewise.
+ 	(rtl_verify_bb_layout): Likewise.
+ 	(skip_insns_after_block): Likewise.
+ 	(duplicate_insn_chain): Use DEBUG_BIND_INSN_P.
+ 	* dwarf2out.c: Include print-rtl.h.
+ 	(dwarf2out_next_real_insn): New.
+ 	(dwarf2out_var_location): Call it.  Disregard begin stmt markers.
+ 	Dump debug binds in asm comments.
+ 	* gimple-iterator.c (gimple_find_edge_insert_loc): Skip debug stmts.
+ 	* gimple-iterator.h (gsi_start_bb_nondebug): Remove; adjust
+ 	callers to use gsi_start_nondebug_bb instead.
+ 	(gsi_after_labels): Skip gimple debug stmts.
+ 	(gsi_start_nondebug): New.
+ 	* gimple-loop-interchange.c (find_deps_in_bb_for_stmt): Adjust.
+ 	(proper_loop_form_for_interchange): Adjust.
+ 	* gimple-low.c (gimple_seq_may_fallthru): Take last nondebug stmt.
+ 	* gimple.h (gimple_seq_last_nondebug_stmt): New.
+ 	* gimplify.c (last_stmt_in_scope): Skip debug stmts.
+ 	(collect_fallthrough_labels): Likewise.
+ 	(should_warn_for_implicit_fallthrough): Likewise.
+ 	(warn_implicit_fallthrough_r): Likewise.
+ 	(expand_FALLTHROUGH_r): Likewise.
+ 	* graphite-isl-ast-to-gimple.c (gsi_insert_earliest): Adjust.
+ 	(graphite_copy_stmts_from_block): Skip nonbind markers.
+ 	* haifa-sched.c (sched_extend_bb): Skip debug insns.
+ 	* ipa-icf-gimple.c (func_checker::compare_bb): Adjust.
+ 	* jump.c (clean_barriers): Skip debug insns.
+ 	* omp-expand.c (expand_parallel_call): Skip debug insns.
+ 	(expand_task_call): Likewise.
+ 	(remove_exit_barrier): Likewise.
+ 	(expand_omp_taskreg): Likewise.
+ 	(expand_omp_for_init_counts): Likewise.
+ 	(expand_omp_for_generic): Likewise.
+ 	(expand_omp_for_static_nochunk): Likewise.
+ 	(expand_omp_for_static_chunk): Likewise.
+ 	(expand_omp_simd): Likewise.
+ 	(expand_omp_taskloop_for_outer): Likewise.
+ 	(expand_omp_taskloop_for_inner): Likewise.
+ 	(expand_oacc_for): Likewise.
+ 	(expand_omp_sections): Likewise.
+ 	(expand_omp_single): Likewise.
+ 	(expand_omp_synch): Likewise.
+ 	(expand_omp_atomic_load): Likewise.
+ 	(expand_omp_atomic_store): Likewise.
+ 	(expand_omp_atomic_fetch_op): Likewise.
+ 	(expand_omp_atomic_pipeline): Likewise.
+ 	(expand_omp_atomic_mutex): Likewise.
+ 	(expand_omp_target): Likewise.
+ 	(grid_expand_omp_for_loop): Likewise.
+ 	(grid_expand_target_grid_body): Likewise.
+ 	(build_omp_regions_1): Likewise.
+ 	* omp-low.c (check_combined_parallel): Skip debug stmts.
+ 	* postreload.c (fixup_debug_insns): Skip nonbind debug insns.
+ 	* regcprop.c (find_oldest_value_reg): Ensure REGNO is not a pseudo.
+ 	* sese.c (sese_trivially_empty_bb_p): Call is_gimple_debug in
+ 	test.
+ 	* tree-cfg.c (make_blobs_1): Skip debug stmts.
+ 	(make_edges): Likewise.
+ 	(cleanup_dead_labels): Likewise.
+ 	(gimple_can_merge_blocks_p): Likewise.
+ 	(stmt_starts_bb_p): Likewise.
+ 	(gimple_block_label): Likewise.
+ 	(gimple_redirect_edge_and_branch): Likewise.
+ 	* tree-cfgcleanup.c (remove_forwarder_block): Rearrange skipping
+ 	of debug stmts.
+ 	(execute_cleanup_cfg_post_optimizing): Dump enumerated decls with
+ 	TDF_SLIM.
+ 	* tree-pretty-print (print_declaration): Omit initializer in slim
+ 	dumps.
+ 	* tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Mark begin stmt
+ 	markers.
+ 	(eliminate_unnecessary_stmts): Stabilize block removal order.
+ 	* tree-ssa-tail-merge.c (find_duplicate): Skip debug stmts.
+ 	* var-tracking.c (get_first_insn): New.
+ 	(vt_emit_notes): Call it.
+ 	(vt_initialize): Walk any insns before the first BB.
+ 	(delete_debug_insns): Likewise.
+ 
+ 	* gimple.h (enum gimple_debug_subcode): Add
+ 	GIMPLE_DEBUG_BEGIN_STMT.
+ 	(gimple_debug_begin_stmt_p): New.
+ 	(gimple_debug_nonbind_marker_p): New.
+ 	* tree.h (MAY_HAVE_DEBUG_MARKER_STMTS): New.
+ 	(MAY_HAVE_DEBUG_BIND_STMTS): Renamed from....
+ 	(MAY_HAVE_DEBUG_STMTS): ... this.  Check both.
+ 	* insn-notes.def (BEGIN_STMT): New.
+ 	* rtl.h (MAY_HAVE_DEBUG_MARKER_INSNS): New.
+ 	(MAY_HAVE_DEBUG_BIND_INSNS): Renamed from....
+ 	(MAY_HAVE_DEBUG_INSNS): ... this.  Check both.
+ 	(NOTE_MARKER_LOCATION, NOTE_MARKER_P): New.
+ 	(DEBUG_BIND_INSN_P, DEBUG_MARKER_INSN_P): New.
+ 	(INSN_DEBUG_MARKER_KIND): New.
+ 	(GEN_RTX_DEBUG_MARKER_BEGIN_STMT_PAT): New.
+ 	(INSN_VAR_LOCATION): Check for VAR_LOCATION.
+ 	(INSN_VAR_LOCATION_PTR): New.
+ 	* cfgexpand.c (expand_debug_locations): Handle debug bind insns
+ 	only.
+ 	(expand_gimple_basic_block): Likewise.  Emit debug temps for TER
+ 	deps only if debug bind insns are enabled.
+ 	(pass_expand::execute): Avoid deep TER and expand
+ 	debug locations for debug bind insns only.
+ 	* cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Narrow
+ 	debug stmts special handling down to debug bind stmts.
+ 	* combine.c (try_combine): Narrow debug insns special handling
+ 	down to debug bind insns.
+ 	* cse.c (delete_trivially_dead_insns): Handle debug bindings.
+ 	Narrow debug insns preexisting special handling down to debug
+ 	bind insns.
+ 	* dce.c (rest_of_handle_ud_dce): Narrow debug insns special
+ 	handling down to debug bind insns.
+ 	* function.c (instantiate_virtual_regs): Skip debug markers,
+ 	adjust handling of debug binds.
+ 	* gimple-ssa-backprop.c (backprop::prepare_change): Try debug
+ 	temp insertion iff MAY_HAVE_DEBUG_BIND_STMTS.
+ 	* haifa-sched.c (schedule_insn): Narrow special handling of debug
+ 	insns to debug bind insns.
+ 	* ipa-param-manipulation.c (ipa_modify_call_arguments): Narrow
+ 	special handling of debug stmts to debug bind stmts.
+ 	* ipa-split.c (split_function): Likewise.
+ 	* ira.c (combine_and_move_insns): Adjust debug bind insns only.
+ 	* loop-unroll.c (apply_opt_in_copies): Adjust tests on bind
+ 	debug insns.
+ 	* reg-stack.c (convert_regs_1): Use DEBUG_BIND_INSN_P.
+ 	* regrename.c (build_def_use): Likewise.
+ 	* regcprop.c (copyprop_hardreg_forward_1): Likewise.
+ 	(pass_cprop_hardreg): Narrow special casing of debug insns to
+ 	debug bind insns.
+ 	* regstat.c (regstat_init_n_sets_and_refs): Likewise.
+ 	* reload1.c (reload): Likewise.
+ 	* sese.c (sese_insert_phis_for_liveouts): Narrow special
+ 	casing of debug stmts to debug bind stmts.
+ 	* shrink-wrap.c (move_insn_for_shrink_wrap): Likewise.
+ 	* ssa-iterators.h (num_imm_uses): Likewise.
+ 	* tree-cfg.c (gimple_merge_blocks): Narrow special casing of
+ 	debug stmts to debug bind stmts.
+ 	* tree-inline.c	(tree_function_versioning): Narrow special casing
+ 	of debug stmts to debug bind stmts.
+ 	* tree-loop-distribution.c (generate_loops_for_partition):
+ 	Narrow special casing of debug stmts to debug bind stmts.
+ 	* tree-sra.c (analyze_access_subtree): Narrow special casing
+ 	of debug stmts to debug bind stmts.
+ 	* tree-ssa-dce.c (remove_dead_stmt): Narrow special casing of debug
+ 	stmts to debug bind stmts.
+ 	* tree-ssa-loop-ivopt.c (remove_unused_ivs): Narrow special
+ 	casing of debug stmts to debug bind stmts.
+ 	* tree-ssa-reassoc.c (reassoc_remove_stmt): Likewise.
+ 	* tree-ssa-tail-merge.c (tail_merge_optimize): Narrow special
+ 	casing of debug stmts to debug bind stmts.
+ 	* tree-ssa-threadedge.c (propagate_threaded_block_debug_info):
+ 	Likewise.
+ 	* tree-ssa.c (flush_pending_stmts): Narrow special casing of
+ 	debug stmts to debug bind stmts.
+ 	(gimple_replace_ssa_lhs): Likewise.
+ 	(insert_debug_temp_for_var_def): Likewise.
+ 	(insert_debug_temps_for_defs): Likewise.
+ 	(reset_debug_uses): Likewise.
+ 	* tree-ssanames.c (release_ssa_name_fn): Likewise.
+ 	* tree-vect-loop-manip.c (adjust_debug_stmts_now): Likewise.
+ 	(adjust_debug_stmts): Likewise.
+ 	(adjust_phi_and_debug_stmts): Likewise.
+ 	(vect_do_peeling): Likewise.
+ 	* tree-vect-loop.c (vect_transform_loop): Likewise.
+ 	* valtrack.c (propagate_for_debug): Use BIND_DEBUG_INSN_P.
+ 	* var-tracking.c (adjust_mems): Narrow special casing of debug
+ 	insns to debug bind insns.
+ 	(dv_onepart_p, dataflow_set_clar_at_call, use_type): Likewise.
+ 	(compute_bb_dataflow, vt_find_locations): Likewise.
+ 	(vt_expand_loc, emit_notes_for_changes): Likewise.
+ 	(vt_init_cfa_base): Likewise.
+ 	(vt_emit_notes): Likewise.
+ 	(vt_initialize): Likewise.
+ 	(vt_finalize): Likewise.
+ 
+ 	* emit-rtl.c (next_nondebug_insn, prev_nondebug_insn): Reorder.
+ 	(next_nonnote_nondebug_insn, prev_nonnote_nondebug_insn): Reorder.
+ 	(next_nonnote_nondebug_insn_bb): New.
+ 	(prev_nonnote_nondebug_insn_bb): New.
+ 	(prev_nonnote_insn_bb, next_nonnote_insn_bb): Remove.
+ 	* rtl.h	(prev_nonnote_insn_bb, next_nonnote_insn_bb): Remove decls.
+ 	(prev_nonnote_nondebug_insn_bb): Declare.
+ 	(next_nonnote_nondebug_insn_bb): Declare.
+ 	* cfgbuild.c (find_bb_boundaries): Adjust to skip debug insns.
+ 	* cfgrtl.c (get_last_bb_insn): Likewise.
+ 	* lra.c (push_insns): Likewise.
+ 
+ 2017-12-11  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR c/82050
+ 	* selftest-run-tests.c (selftest::run_tests): Move start/finish code
+ 	to...
+ 	* selftest.c (selftest::test_runner::test_runner): New ctor.
+ 	(selftest::test_runner::~test_runner): New dtor.
+ 	* selftest.h (class selftest::test_runner): New class.
+ 
+ 2017-12-11  Carl Love  <cel@us.ibm.com>
+ 
+ 	* config/rs6000/altivec.h (vec_extract_fp32_from_shorth,
+ 	vec_extract_fp32_from_shortl]): Add #defines.
+ 	* config/rs6000/rs6000-builtin.def (VSLDOI_2DI): Add macro expansion.
+ 	* config/rs6000/rs6000-c.c (ALTIVEC_BUILTIN_VEC_UNPACKH,
+ 	ALTIVEC_BUILTIN_VEC_UNPACKL, ALTIVEC_BUILTIN_VEC_AND,
+ 	ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VEC_SRL,
+ 	ALTIVEC_BUILTIN_VEC_SRO, ALTIVEC_BUILTIN_VEC_SLD,
+ 	ALTIVEC_BUILTIN_VEC_SLL): Add expansions.
+ 	* doc/extend.texi: Add documentation for the added builtins.
+ 
+ 2017-12-11  Alexandre Oliva  <aoliva@redhat.com>
+ 
+ 	PR rtl-optimization/80693
+ 	PR rtl-optimization/81019
+ 	PR rtl-optimization/81020
+ 	* combine.c (distribute_notes): Reset any REG_UNUSED REGs that
+ 	are not mentioned in i3.  Place the REG_UNUSED note on i2,
+ 	possibly modified to REG_DEAD, if it did not originate in i3.
+ 
+ 2017-12-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* recog.c (store_data_bypass_p_1): New function.
+ 	(store_data_bypass_p): Handle USE in a PARALLEL like CLOBBER.  Use
+ 	store_data_bypass_p_1 to avoid code duplication.  Formatting fixes.
+ 
+ 2017-12-11  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR rtl-optimization/83361
+ 	* ifcvt.c (if_convert): Call fixup_partitions.
+ 
+ 2017-12-11  Will Schmidt  <will_schmidt@vnet.ibm.com>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add support for
+ 	early folding of splat_u{8,16,32}.
+ 
+ 2017-12-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_print_operand): Don't start
+ 	output_operand_lossage first argument with capital letter.
+ 	(aarch64_override_options): Don't start error and sorry first argument
+ 	with capital letter.
+ 
+ 2017-12-11  Andi Kleen  <ak@linux.intel.com>
+ 
+ 	PR gcov-profile/83355
+ 	* auto-profile.c (string_table::get_index_by_decl): Don't
+ 	recurse when abstract origin points to itself.
+ 
+ 2017-12-11  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	PR tree-optimization/83320
+ 	* gimple-loop-interchange.cc (free_data_refs_with_aux): Use delete.
+ 	(prune_datarefs_not_in_loop): Ditto.
+ 
+ 2017-12-10  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* doc/install.texi (Specific): Tweak link to mkssoftware.com.
+ 
+ 2017-12-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/83337
+ 	* gimple-loop-interchange.cc (compute_access_stride): Handle
+ 	bitfield DRs properly.
+ 
+ 2017-12-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/83338
+ 	* tree-vect-stmts.c (vectorizable_operation): Handle POINTER_DIFF_EXPR
+ 	vectorization as MINUS_EXPR with a subsequent VIEW_CONVERT_EXPR from
+ 	vector of unsigned integers to vector of signed integers.
+ 
+ 2017-12-08  Vladimir Makarov  <vmakarov@redhat.com>
+ 
+ 	PR rtl-optimization/83317
+ 	* lra-constraints.c (process_address_1): Add insn code check.
+ 
+ 2017-12-08  Michael Matz  <matz@suse.de>
+ 
+ 	Fix PR tree-optimization/83323
+ 	* gimple-loop-jam (unroll_jam_possible_p): Correct test for
+ 	head-controlled loops and loop BBs.
+ 	* common.opt (funroll-and-jam): Remove, instead ...
+ 	(floop-unroll-and-jam): ... reuse this option.
+ 	* opts.c (default_options_table): Use OPT_floop_unroll_and_jam.
+ 	* doc/invoke.texi (-funroll-and-jam): Move docu to ...
+ 	(-floop-unroll-and-jam): ... this option.
+ 
+ 2017-12-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* ipa-polymorphic-call.c (noncall_stmt_may_be_vtbl_ptr_store): Fix
+ 	a comment typo, get_base_ref_and_offset -> get_ref_base_and_extent.
+ 	* ipa-prop.c (stmt_may_be_vtbl_ptr_store): Likewise.
+ 
+ 2017-12-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/81782
+ 	* tree-ssa-uninit.c (warn_uninitialized_vars): Properly
+ 	handle accesses outside of zero-sized vars.
+ 
+ 2017-12-08  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR tree-optimization/83141
+ 	* tree-sra.c (contains_vce_or_bfcref_p): Move up in the file, also
+ 	test for MEM_REFs implicitely changing types with padding.  Remove
+ 	inline keyword.
+ 	(build_accesses_from_assign): Added contains_vce_or_bfcref_p checks.
+ 
+ 2017-12-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* config/arc/arc.c (arc_attribute_table): Add exclusions to
+ 	the comment.
+ 	* config/avr/avr.c (avr_attribute_table): Likewise.
+ 	* config/msp430/msp430.c (msp430_attribute_table): Likewise.
+ 	* config/rl78/rl78.c (rl78_attribute_table): Likewise.
+ 	* config/nds32/nds32.c (nds32_attribute_table): Likewise.
+ 	* config/darwin.h (SUBTARGET_ATTRIBUTE_TABLE): Initialize new member
+ 	of struct attribute_spec.
+ 	* config/i386/cygming.h (SUBTARGET_ATTRIBUTE_TABLE): Likewise.
+ 
+ 2017-12-08  Ulrich Weigand  <uweigand@de.ibm.com>
+ 
+ 	PR target/82960
+ 	* config/spu/spu.c (pad_bb): Only check INSN_CODE when INSN_P is true.
+ 
+ 2017-12-08  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR middle-end/83609
+ 	* profile-count.c (profile_count::from_gcov_type): Move from
+ 	profile-count.h; handle overflow.
+ 	* profile-count.h (profile_count::from_gcov_type): Move offline.
+ 
+ 2017-12-08  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR rtl-optimization/83304
+ 	* combine.c (move_deaths): If we do not know where a register died,
+ 	search for it.
+ 
+ 2017-12-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gimple-loop-interchange.cc (tree_loop_interchange::interchange):
+ 	Provide -fopt-info-loop feedback when we interchange in a nest.
+ 
+ 2017-06-08  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config/arm/driver-arm.c (arm_cpu_table): Use fp-capable product names
+ 	for armv6 ARM CPU IDs.
+ 
+ 2017-06-08  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* common/config/arm/arm-common.c: Include <algorithm>.
+ 	(INCLUDE_VECTOR): Define.
+ 	(compare_opt_names): New function.
+ 	(arm_rewrite_selected_arch): Only strip out extensions that can be
+ 	expressed through -mfpu.  Sort the remaining extensions
+ 	alphabetically.
+ 
+ 2017-06-08  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config/arm/arm.h (arm_asm_auto_mfpu): Declare.
+ 	(ASM_CPU_SPEC_FUNCTIONS): Add new rule asm_auto_mfpu.
+ 	(ASM_CPU_SPEC): Use it if -mfpu is set to auto.
+ 	* common/config/arm/arm-common.c (arm_asm_auto_mfpu): New function.
+ 
+ 2017-06-08  Tristan Gingold  <gindold@adacore.com>
+ 
+ 	PR ada/81470
+ 	* dwarf2out.c (dwarf2out_do_cfi_startproc): Only emit
+ 	.cfi_personality or .cfi_lsda if the eh data format is dwarf2.
+ 
+ 2017-12-08  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	* config/sol2.h (SOLARIS_ATTRIBUTE_TABLE): Initialize new member
+ 	of struct attribute_spec.
+ 
+ 2017-12-08  Julia Koval  <julia.koval@intel.com>
+ 
+ 	* config/i386/avx512vnniintrin.h (_mm512_dpwssds_epi32,
+ 	_mm512_mask_dpwssds_epi32, _mm512_maskz_dpwssds_epi32): New intrinsics.
+ 	* config/i386/avx512vnnivlintrin.h (_mm256_dpwssds_epi32,
+ 	_mm256_mask_dpwssds_epi32, _mm256_maskz_dpwssds_epi32,
+ 	_mm_dpwssds_epi32, _mm_mask_dpwssds_epi32,
+ 	_mm_maskz_dpwssds_epi32): Ditto.
+ 
+ 2017-12-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/81303
+ 	* tree-vect-stmts.c (vect_is_simple_cond): For invariant
+ 	conditions try to create a comparison vector type matching
+ 	the data vector type.
+ 	(vectorizable_condition): Adjust.
+ 	* tree-vect-patterns.c (vect_recog_mask_conversion_pattern):
+ 	Leave invariant conditions alone in case we can vectorize those.
+ 
+ 2017-12-08  Julia Koval  <julia.koval@intel.com>
+ 
+ 	* config/i386/avx512vnniintrin.h (_mm512_dpwssd_epi32,
+ 	_mm512_mask_dpwssd_epi32, _mm512_maskz_dpwssd_epi32): New intrinsics.
+ 	* config/i386/avx512vnnivlintrin.h (_mm256_dpwssd_epi32,
+ 	_mm256_mask_dpwssd_epi32, _mm256_maskz_dpwssd_epi32, _mm_dpwssd_epi32,
+ 	_mm_mask_dpwssd_epi32, _mm_maskz_dpwssd_epi32): Ditto.
+ 
+ 2017-12-08  Julia Koval  <julia.koval@intel.com>
+ 
+ 	* config/i386/avx512vnniintrin.h (_mm512_dpbusds_epi32,
+ 	_mm512_mask_dpbusds_epi32, _mm512_maskz_dpbusds_epi32): New.
+ 	* config/i386/avx512vnnivlintrin.h (_mm256_dpbusds_epi32,
+ 	_mm256_mask_dpbusds_epi32, _mm256_maskz_dpbusds_epi32,
+ 	_mm_dpbusds_epi32, _mm_mask_dpbusds_epi32,
+ 	_mm_maskz_dpbusds_epi32): New intrinsics.
+ 
+ 2017-12-07  Sandra Loosemore  <sandra@codesourcery.com>
+ 
+ 	* config/nios2/nios2.md (ld<bhw_uns>io): Add splitter for memory
+ 	operand.
+ 	(ld<bh>io_signed): Likewise.
+ 	(st<bhw>io): Likewise.
+ 	* config/nios2/predicates.md (ldstio_memory_operand): Allow
+ 	SMALL_INT12 constant integer operand.
+ 
+ 2017-12-07  Sandra Loosemore  <sandra@codesourcery.com>
+ 
+ 	* config/nios2/nios2.c (nios2_symbolic_constant_allowed):
+ 	Rename to...
+ 	(nios2_large_constant_allowed): ...this.  Adjust uses.
+ 	(nios2_plus_symbolic_constant_p): Rename to...
+ 	(nios2_plus_large_constant_p): ...this.  Adjust uses.
+ 	(nios2_legitimate_address_p): Correct CONST_INT handling.
+ 	(nios2_symbolic_memory_operand_p): Rename to...
+ 	(nios2_large_constant_memory_operand_p): ...this.  Adjust uses.
+ 	(nios2_large_constant_p): Check for large constant integers too.
+ 	(nios2_split_large_constant): Handle constant integers.
+ 	(nios2_split_symbolic_memory_operand): Rename to...
+ 	(nios2_split_large_constant_memory_operand): ...this.  Adjust uses.
+ 	(nios2_legitimize_constant_address): Handle constant integers.
+ 	(r0rel_constant_p): Handle small constant integers.
+ 	(nios2_print_operand_address): Handle r0-relative integer addresses.
+ 	* config/nios2/nios2-protos.h: Adjust for renamed functions.
+ 	* config/nios2/nios2.md: Adjust for renamed functions.
+ 
+ 2017-12-07  Andrew Waterman  <andrew@sifive.com>
+ 
+ 	* config/riscv/riscv.c (TARGET_ASM_SELECT_SECTION): New define.
+ 	(TARGET_HAVE_SRODATA_SECTION): New define.
+ 	(riscv_select_section): New function.
+ 
+ 2017-12-08  Joseph Myers  <joseph@codesourcery.com>
+ 	    Alexander Monakov  <amonakov@ispras.ru>
+ 	    Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/81906
+ 	* config/i386/i386.c (ix86_expand_rint): Handle flag_rounding_math.
+ 
+ 2017-12-07  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_print_address_internal): Return
+ 	a bool success value.  Don't call output_operand_lossage here.
+ 	(aarch64_print_ldpstp_address): Return a bool success value.
+ 	(aarch64_print_operand_address): Call output_addr_const if
+ 	aarch64_print_address_internal fails.
+ 	(aarch64_print_operand): Don't assert that the mode is 16 bytes for
+ 	'y'; call output_operand_lossage instead.  Call output_operand_lossage
+ 	if aarch64_print_ldpstp_address fails.
+ 
+ 2017-12-07  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* tree-vector-builder.h
+ 	(tree_vector_builder::binary_encoded_nelts): Declare.
+ 	* tree-vector-builder.c
+ 	(tree_vector_builder::binary_encoded_nelts): New function.
+ 	* fold-const.c (negate_expr_p): Likewise.
+ 	(operand_equal_p, fold_checksum_tree): Likewise.
+ 	* tree-loop-distribution.c (const_with_all_bytes_same): Likewise.
+ 	* tree.c (integer_zerop, integer_onep, integer_all_onesp, real_zerop)
+ 	(real_onep, real_minus_onep, add_expr, initializer_zerop): Likewise.
+ 	(uniform_vector_p): Likewise.
+ 	* varasm.c (const_hash_1, compare_constant): Likewise.
+ 	* tree-ssa-ccp.c: Include tree-vector-builder.h.
+ 	(valid_lattice_transition): Operate directly on the VECTOR_CST
+ 	encoding.
+ 	* ipa-icf.c: Include tree-vector-builder.h.
+ 	(sem_variable::equals): Operate directly on the VECTOR_CST encoding.
+ 	* print-tree.c (print_node): Print encoding of VECTOR_CSTs.
+ 
+ 2017-12-07  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* tree.c (build_vector): Delete.
+ 	* tree.h (build_vector): Make static and move into the self-testing
+ 	block.
+ 
+ 2017-12-07  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* vector-builder.h (vector_builder::derived): New const overload.
+ 	(vector_builder::elt): New function.
+ 	* tree-vector-builder.h (tree_vector_builder::type): New function.
+ 	(tree_vector_builder::apply_step): Declare.
+ 	* tree-vector-builder.c (tree_vector_builder::apply_step): New
+ 	function.
+ 	* gimple-fold.h (tree_vector_builder): Declare.
+ 	(gimple_build_vector): Take a tree_vector_builder instead of a
+ 	type and vector of elements.
+ 	* gimple-fold.c (gimple_build_vector): Likewise.
+ 	* tree-vect-loop.c (get_initial_def_for_reduction): Update call
+ 	accordingly.
+ 	(get_initial_defs_for_reduction): Likewise.
+ 	(vectorizable_induction): Likewise.
+ 
+ 2017-12-07  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* tree-vector-builder.h
+ 	(tree_vector_builder::new_binary_operation): Declare.
+ 	* tree-vector-builder.c
+ 	(tree_vector_builder::new_binary_operation): New function.
+ 	* fold-const.c (fold_relational_const): Use it.
+ 	(const_binop): Likewise.  Check that both input vectors have
+ 	the same number of elements, thus excluding things like WIDEN_SUM.
+ 	Check whether it is possible to operate directly on the encodings
+ 	of stepped inputs.
+ 
+ 2017-12-07  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* fold-const.c (fold_negate_expr_1): Use tree_vector_builder and
+ 	new_unary_operation, operating only on the encoded elements.
+ 	(const_unop): Likewise.
+ 	(exact_inverse): Likewise.
+ 	(distributes_over_addition_p): New function.
+ 	(const_binop): Use tree_vector_builder and new_unary_operation
+ 	for combinations of VECTOR_CST and INTEGER_CST.  Operate only
+ 	on the encoded elements unless the encoding is strided and the
+ 	operation does not distribute over addition.
+ 	(fold_convert_const):  Use tree_vector_builder and
+ 	new_unary_operation.  Operate only on the encoded elements
+ 	for truncating integer conversions, or for non-stepped encodings.
+ 
+ 2017-12-07  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* config/sparc/sparc.c: Include tree-vector-builder.h.
+ 	(sparc_fold_builtin): Use tree_vector_builder instead of build_vector.
+ 	* expmed.c: Include tree-vector-builder.h.
+ 	(make_tree): Use tree_vector_builder instead of build_vector.
+ 	* fold-const.c: Include tree-vector-builder.h.
+ 	(const_binop): Use tree_vector_builder instead of build_vector.
+ 	(const_unop): Likewise.
+ 	(native_interpret_vector): Likewise.
+ 	(fold_vec_perm): Likewise.
+ 	(fold_ternary_loc): Likewise.
+ 	* gimple-fold.c: Include tree-vector-builder.h.
+ 	(gimple_fold_stmt_to_constant_1): Use tree_vector_builder instead
+ 	of build_vector.
+ 	* tree-ssa-forwprop.c: Include tree-vector-builder.h.
+ 	(simplify_vector_constructor): Use tree_vector_builder instead
+ 	of build_vector.
+ 	* tree-vect-generic.c: Include tree-vector-builder.h.
+ 	(add_rshift): Use tree_vector_builder instead of build_vector.
+ 	(expand_vector_divmod): Likewise.
+ 	(optimize_vector_constructor): Likewise.
+ 	* tree-vect-loop.c: Include tree-vector-builder.h.
+ 	(vect_create_epilog_for_reduction): Use tree_vector_builder instead
+ 	of build_vector.  Explicitly use a stepped encoding for
+ 	{ 1, 2, 3, ... }.
+ 	* tree-vect-slp.c: Include tree-vector-builder.h.
+ 	(vect_get_constant_vectors): Use tree_vector_builder instead
+ 	of build_vector.
+ 	(vect_transform_slp_perm_load): Likewise.
+ 	(vect_schedule_slp_instance): Likewise.
+ 	* tree-vect-stmts.c: Include tree-vector-builder.h.
+ 	(vectorizable_bswap): Use tree_vector_builder instead of build_vector.
+ 	(vect_gen_perm_mask_any): Likewise.
+ 	(vectorizable_call): Likewise.  Explicitly use a stepped encoding.
+ 	* tree.c: (build_vector_from_ctor): Use tree_vector_builder instead
+ 	of build_vector.
+ 	(build_vector_from_val): Likewise.  Explicitly use a duplicate
+ 	encoding.
+ 
+ 2017-12-07  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* doc/generic.texi (VECTOR_CST): Describe new representation of
+ 	vector constants.
+ 	* vector-builder.h: New file.
+ 	* tree-vector-builder.h: Likewise.
+ 	* tree-vector-builder.c: Likewise.
+ 	* Makefile.in (OBJS): Add tree-vector-builder.o.
+ 	* tree.def (VECTOR_CST): Update comment to refer to generic.texi.
+ 	* tree-core.h (tree_base): Add a vector_cst field to the u union.
+ 	(tree_vector): Change the number of elements to
+ 	vector_cst_encoded_nelts.
+ 	* tree.h (VECTOR_CST_NELTS): Redefine using TYPE_VECTOR_SUBPARTS.
+ 	(VECTOR_CST_ELTS): Delete.
+ 	(VECTOR_CST_ELT): Redefine using vector_cst_elt.
+ 	(VECTOR_CST_LOG2_NPATTERNS, VECTOR_CST_NPATTERNS): New macros.
+ 	(VECTOR_CST_NELTS_PER_PATTERN, VECTOR_CST_DUPLICATE_P): Likewise.
+ 	(VECTOR_CST_STEPPED_P, VECTOR_CST_ENCODED_ELTS): Likewise.
+ 	(VECTOR_CST_ENCODED_ELT): Likewise.
+ 	(vector_cst_encoded_nelts): New function.
+ 	(make_vector): Take the values of VECTOR_CST_LOG2_NPATTERNS and
+ 	VECTOR_CST_NELTS_PER_PATTERN as arguments.
+ 	(vector_cst_int_elt, vector_cst_elt): Declare.
+ 	* tree.c: Include tree-vector-builder.h.
+ 	(tree_code_size): Abort if passed VECTOR_CST.
+ 	(tree_size): Update for new VECTOR_CST layout.
+ 	(make_vector): Take the values of VECTOR_CST_LOG2_NPATTERNS and
+ 	VECTOR_CST_NELTS_PER_PATTERN as arguments.
+ 	(build_vector): Use tree_vector_builder.
+ 	(vector_cst_int_elt, vector_cst_elt): New functions.
+ 	(drop_tree_overflow): For VECTOR_CST, drop the TREE_OVERFLOW from the
+ 	encoded elements and then create the vector in the canonical form.
+ 	(check_vector_cst, check_vector_cst_duplicate, check_vector_cst_fill)
+ 	(check_vector_cst_stepped, test_vector_cst_patterns): New functions.
+ 	(tree_c_tests): Call test_vector_cst_patterns.
+ 	* lto-streamer-out.c (DFS::DFS_write_tree_body): Handle the new
+ 	VECTOR_CST fields.
+ 	(hash_tree): Likewise.
+ 	* tree-streamer-out.c (write_ts_vector_tree_pointers): Likewise.
+ 	(streamer_write_tree_header): Likewise.
+ 	* tree-streamer-in.c (lto_input_ts_vector_tree_pointers): Likewise.
+ 	(streamer_alloc_tree): Likewise.  Update call to make_vector.
+ 	* fold-const.c (fold_ternary_loc): Avoid using VECTOR_CST_ELTS.
+ 
+ 2017-12-07  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* selftest.h (ASSERT_TRUE_AT, ASSERT_FALSE_AT, ASSERT_EQ_AT)
+ 	(ASSERT_NE, ASSERT_PRED1): Add underscores to local variable names
+ 	* selftest-rtl.h (ASSERT_RTX_EQ, ASSERT_RTX_PTR_EQ): Likewise.
+ 
+ 2017-12-07  Bin Cheng  <bin.cheng@arm.com>
+ 	    Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/81303
+ 	* Makefile.in (gimple-loop-interchange.o): New object file.
+ 	* common.opt (floop-interchange): Reuse the option from graphite.
+ 	* doc/invoke.texi (-floop-interchange): Ditto.  New document for
+ 	-floop-interchange and mention it for -O3.
+ 	* opts.c (default_options_table): Enable -floop-interchange at -O3.
+ 	* gimple-loop-interchange.cc: New file.
+ 	* params.def (PARAM_LOOP_INTERCHANGE_MAX_NUM_STMTS): New parameter.
+ 	(PARAM_LOOP_INTERCHANGE_STRIDE_RATIO): New parameter.
+ 	* passes.def (pass_linterchange): New pass.
+ 	* timevar.def (TV_LINTERCHANGE): New time var.
+ 	* tree-pass.h (make_pass_linterchange): New declaration.
+ 	* tree-ssa-loop-ivcanon.c (create_canonical_iv): Change to external
+ 	interchange.  Record IV before/after increment in new parameters.
+ 	* tree-ssa-loop-ivopts.h (create_canonical_iv): New declaration.
+ 	* tree-vect-loop.c (vect_is_simple_reduction): Factor out reduction
+ 	path check into...
+ 	(check_reduction_path): ...New function here.
+ 	* tree-vectorizer.h (check_reduction_path): New declaration.
+ 
+ 2017-12-07  Vladimir Makarov  <vmakarov@redhat.com>
+ 
+ 	PR target/83252
+ 	PR rtl-optimization/80818
+ 	* lra.c (add_regs_to_insn_regno_info): Make a hard reg in CLOBBER
+ 	always early clobbered.
+ 	* lra-lives.c (process_bb_lives): Check input hard regs for early
+ 	clobbered non-operand hard reg.
+ 
+ 2017-12-07  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/83164
+ 	* tree-cfg.c (verify_gimple_assign_binary): Don't require
+ 	types_compatible_p, just that TYPE_MODE is the same.
+ 
+ 2017-12-07  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR c/81544
+ 	* attribs.c (empty_attribute_table): Initialize new member of
+ 	struct attribute_spec.
+ 	(decl_attributes): Add argument.  Handle mutually exclusive
+ 	combinations of attributes.
+ 	(selftests::test_attribute_exclusions): New function.
+ 	(selftests::attribute_c_tests): Ditto.
+ 	* attribs.h (decl_attributes): Add default argument.
+ 	* selftest.h (attribute_c_tests): Declare.
+ 	* selftest-run-tests.c (selftest::run_tests): Call attribute_c_tests.
+ 	* tree-core.h (attribute_spec::exclusions, exclude): New type and
+ 	member.
+ 	* doc/extend.texi (Common Function Attributes): Update const and pure.
+ 	* config/alpha/alpha.c (vms_attribute_table): Initialize new member
+ 	of struct attribute_spec.
+ 	* config/arc/arc.c (arc_attribute_table): Same.
+ 	* config/arm/arm.c (arm_attribute_table): Same.
+ 	* config/avr/avr.c ( avr_attribute_table): Same.
+ 	* config/bfin/bfin.c (bfin_attribute_table): Same.
+ 	* config/cr16/cr16.c (cr16_attribute_table): Same.
+ 	* config/epiphany/epiphany.c (epiphany_attribute_table): Same.
+ 	* config/h8300/h8300.c (h8300_attribute_table): Same.
+ 	* config/i386/i386.c (ix86_attribute_table): Same.
+ 	* config/ia64/ia64.c (ia64_attribute_table): Same.
+ 	* config/m32c/m32c.c (m32c_attribute_table): Same.
+ 	* config/m32r/m32r.c (m32r_attribute_table): Same.
+ 	* config/m68k/m68k.c (m68k_attribute_table): Same.
+ 	* config/mcore/mcore.c (mcore_attribute_table): Same.
+ 	* config/microblaze/microblaze.c (microblaze_attribute_table): Same.
+ 	* config/mips/mips.c (mips_attribute_table): Same.
+ 	* config/msp430/msp430.c (msp430_attribute_table): Same.
+ 	* config/nds32/nds32.c (nds32_attribute_table): Same.
+ 	* config/nvptx/nvptx.c (nvptx_attribute_table): Same.
+ 	* config/powerpcspe/powerpcspe.c (rs6000_attribute_table): Same.
+ 	* config/rl78/rl78.c (rl78__attribute_table): Same.
+ 	* config/rs6000/rs6000.c (rs6000_attribute_table): Same.
+ 	* onfig/rx/rx.c (rx_attribute_table): Same.
+ 	* config/s390/s390.c (s390_handle_vectorbool_attribute): Same.
+ 	* config/sh/sh.c (sh_attribute_table): Same.
+ 	* config/sparc/sparc.c (sparc_attribute_table): Same.
+ 	* config/spu/spu.c (spu_attribute_table): Same.
+ 	* config/stormy16/stormy16.c (xstormy16_attribute_table): Same.
+ 	* config/v850/v850.c (v850_attribute_table): Same.
+ 	* config/visium/visium.c (visium_attribute_table): Same.
+ 
+ 2017-12-07  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR target/82641
+ 	* config/arm/arm.c (INCLUDE_STRING): Define.
+ 	(arm_last_printed_arch_string, arm_last_printed_fpu_string): New.
+ 	(arm_declare_function_name): Conservatively emit .arch, .arch_extensions
+ 	and .fpu.
+ 
+ 2017-12-07  Michael Matz  <matz@suse.de>
+ 
+ 	Add unroll and jam pass
+ 
+ 	* gimple-loop-jam.c: New file.
+ 	* Makefile.in (OBJS): Add gimple-loop-jam.o.
+ 	* common.opt (funroll-and-jam): New option.
+ 	* opts.c (default_options_table): Add unroll-and-jam at -O3.
+ 	* params.def (PARAM_UNROLL_JAM_MIN_PERCENT): New param.
+ 	(PARAM_UNROLL_JAM_MAX_UNROLL): Ditto.
+ 	* passes.def: Add pass_loop_jam.
+ 	* timevar.def (TV_LOOP_JAM): Add.
+ 	* tree-pass.h (make_pass_loop_jam): Declare.
+ 	* cfgloop.c (flow_loop_tree_node_add): Add AT argument.
+ 	* cfgloop.h (flow_loop_tree_node_add): Adjust declaration.
+ 	* cfgloopmanip.c (duplicate_loop): Add AT argument, adjust call
+ 	to flow_loop_tree_node_add.
+ 	(duplicate_subloops, copy_loops_to): Append to sibling list.
+ 	* cfgloopmanip.h: (duplicate_loop): Adjust declaration.
+ 	* doc/invoke.texi (-funroll-and-jam): Document new option.
+ 	(unroll-jam-min-percent, unroll-jam-max-unroll): Document new params.
+ 
+ 2017-12-07  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/83296
+ 	PR tree-optimization/67769
+ 	* tree-ssa-phiopt.c (conditional_replacement): Do not reset
+ 	flow sensitive info in an unrelated BB.
+ 	(value_replacement): Use reset_flow_sensitive_info.
+ 	(minmax_replacement): Reset flow sensitive info on the def
+ 	we move.  Do not reset flow sensitive info in the whole BB
+ 	we move the stmt to.
+ 	(abs_replacement): Likewise.
+ 
+ 2017-12-07  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR target/43871
+ 	* config/rs6000/rs6000.c (rs6000_option_override_internal): Set
+ 	rs6000_cpu to the given -mcpu=, or to the default processor.
+ 
+ 2017-12-07  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/rs6000.h (rs6000_cpu_attr): Delete.
+ 	* config/rs6000/rs6000.c (rs6000_variable_issue_1): Use rs6000_tune
+ 	instead of rs6000_cpu_attr.
+ 	(rs6000_adjust_cost): Ditto.
+ 	(is_microcoded_insn): Ditto.
+ 	(rs6000_adjust_priority): Ditto.
+ 	(rs6000_issue_rate): Ditto.
+ 	(rs6000_use_sched_lookahead): Ditto.
+ 	(rs6000_use_sched_lookahead_guard): Ditto.
+ 	(rs6000_sched_reorder): Ditto.
+ 	(force_new_group): Ditto.
+ 	* config/rs6000/rs6000.md (cpu attribute): Ditto.
+ 	(group_ending_nop): Ditto.
+ 
+ 2017-12-07  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/rs6000.opt (rs6000_tune): New variable.
+ 	* config/rs6000/rs6000.c (rs6000_option_override_internal): Also set
+ 	rs6000_tune.  Use rs6000_tune instead of rs6000_cpu where appropriate.
+ 	(rs6000_loop_align): Use rs6000_tune instead of rs6000_cpu where
+ 	appropriate.
+ 	(rs6000_reassociation_width): Ditto.
+ 	(rs6000_emit_epilogue): Ditto.
+ 	(rs6000_adjust_cost): Ditto.
+ 	(is_microcoded_insn): Ditto.
+ 	(is_cracked_insn): Ditto.
+ 	(rs6000_adjust_priority): Ditto.
+ 	(rs6000_sched_reorder): Ditto.
+ 	(rs6000_sched_reorder2): Ditto.
+ 	(insn_must_be_first_in_group): Ditto.
+ 	(insn_must_be_last_in_group): Ditto.
+ 	(rs6000_register_move_cost): Ditto.
+ 	* config/rs6000/rs6000.h (rs6000_cpu_attr): Use rs6000_tune instead of
+ 	rs6000_cpu.
+ 
+ 2017-12-07  Julia Koval  <julia.koval@intel.com>
+ 
+ 	* config.gcc: Add vaesintrin.h.
+ 	* config/i386/i386-builtin-types.def (V64QI_FTYPE_V64QI_V64QI):
+ 	New type.
+ 	* config/i386/i386-builtin.def (__builtin_ia32_vaesdec_v16qi,
+ 	__builtin_ia32_vaesdec_v32qi, __builtin_ia32_vaesdec_v64qi):
+ 	New builtins.
+ 	* config/i386/i386.c (ix86_expand_args_builtin): Handle new type.
+ 	* config/i386/immintrin.h: Include vaesintrin.h.
+ 	* config/i386/sse.md (vaesdec_<mode>): New pattern.
+ 	* config/i386/vaesintrin.h (_mm256_aesdec_epi128, _mm512_aesdec_epi128,
+ 	_mm_aesdec_epi128): New intrinsics.
+ 
+ 2017-12-06  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* Makefile.in (C_COMMON_OBJS): Add c-family/c-spellcheck.o.
+ 	* spellcheck-tree.c (find_closest_macro_cpp_cb): Move to
+ 	c-family/c-spellcheck.cc.
+ 	(best_macro_match::best_macro_match): Likewise.
+ 	* spellcheck-tree.h
+ 	(struct edit_distance_traits<cpp_hashnode *>): Move to
+ 	c-family/c-spellcheck.h.
+ 	(class best_macro_match): Likewise.
+ 
+ 2017-12-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/83293
+ 	* gimple-ssa-strength-reduction.c (insert_initializers): Use
+ 	GSI_NEW_STMT instead of GSI_SAME_STMT in gsi_insert_after that
+ 	might insert into empty bb.
+ 
+ 	PR sanitizer/81281
+ 	* match.pd ((T)(P + A) - (T)P -> (T) A): Split into separate
+ 	simplify for plus with :c added, and pointer_plus without that.
+ 	((T)P - (T)(P + A) -> -(T) A): Likewise.  If type is integral
+ 	with undefined overflow and the conversion is not widening,
+ 	perform negation in utype and only convert to type afterwards.
+ 	((T)(P + A) - (T)(P + B) -> (T)A - (T)B): Split into separate
+ 	simplify for plus with :c added, and pointer_plus without that.
+ 	If type is integral with undefined overflow and the conversion is
+ 	not widening, perform minus in utype and only convert to type
+ 	afterwards.  Move the last pointer_diff_expr simplify into the
+ 	two outermost ifs.
+ 
+ 2017-12-06  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR tree-optimization/82646
+ 	* builtins.c (maybe_emit_chk_warning): Use size as the bound for
+ 	strncpy, not maxlen.
+ 
+ 2017-12-06  Martin Sebor  <msebor@redhat.com>
+ 
+ 	* doc/invoke.texi (-Wstringop-truncation): Mention attribute
+ 	nonstring.
+ 
+ 	PR tree-optimization/83075
+ 	* tree-ssa-strlen.c (handle_builtin_stxncpy): Avoid assuming
+ 	strncat/strncpy don't change length of source string.
+ 
+ 2017-12-06  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	Revert
+ 	2017-11-29  Martin Aberg  <maberg@gaisler.com>
+ 
+ 	* config/sparc/sparc.md (divdf3_fix): Add NOP and adjust length
+ 	to prevent b2bst errata sequence.
+ 	(sqrtdf2_fix): Likewise.
+ 
+ 2017-12-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/81945
+ 	* cfgloop.h (FOR_EACH_LOOP_FN): Use FN instead of hardcoding fn.
+ 	* tree-cfg.c (move_sese_region_to_fn): If any of the loops moved
+ 	to dest_cfun has orig_loop_num set, either remap it to the new
+ 	loop number if the loop got moved too, or clear it.
+ 
+ 2017-12-05  Steve Ellcey  <sellcey@cavium.com>
+ 
+ 	* config/aarch64/thunderx2-t99.md (thunderx2t99_branch): Add trap
+ 	to reservation.
+ 	(thunderx2t99_nothing): New insn reservation.
+ 	(thunderx2t99_mrs): New insn reservation.
+ 	(thunderx2t99_multiple): New insn reservation.
+ 	(thunderx2t99_alu_basi): Add bfx to reservation.
+ 	(thunderx2t99_fp_cmp): Add fccmps and fccmpd to reservation.
+ 
+ 2017-12-05  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
+ 
+ 	PR target/82248
+ 	* config/arm/arm.md (probe_stack) : Use the 'o' constraint.
+ 
+ 2017-12-05  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-ssa-dce.c (simple_dce_from_worklist): Move and rename from
+ 	tree-ssa-pre.c::remove_dead_inserted_code.
+ 	* tree-ssa-dce.h: New file.
+ 	* tree-ssa-pre.c (tree-ssa-dce.h): Include new header file.
+ 	(remove_dead_inserted_code): Move and rename to function
+ 	tree-ssa-dce.c::simple_dce_from_worklist.
+ 	(pass_pre::execute): Update use.
+ 
+ 2017-12-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/83277
+ 	* graphite-isl-ast-to-gimple.c (should_copy_to_new_region): Make sure
+ 	to code-gen liveout vars.
+ 
+ 2017-12-05  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* config/aarch64/aarch64-simd.md (aarch64_simd_bsldi_internal)
+ 	(aarch64_simd_bsldi_alt): Check REG_P before GP_REGNUM_P.
+ 	(aarch64_cm<optab>di, aarch64_cmtstdi): Add leading "&&" to
+ 	split condition.
+ 
+ 2017-12-05  Max Filippov  <jcmvbkbc@gmail.com>
+ 
+ 	* config/xtensa/xtensa.c (xtensa_asan_shadow_offset): New
+ 	function.
+ 	(TARGET_ASAN_SHADOW_OFFSET): New macro definition.
+ 	* config/xtensa/xtensa.h (FRAME_GROWS_DOWNWARD): Set to 1 if
+ 	ASAN is enabled.
+ 
+ 2017-12-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	* timevar.def (TV_TREE_RECIP, TV_TREE_SINCOS, TV_TREE_WIDEN_MUL): Add.
+ 	* tree-ssa-math-opts.c (pass_data_cse_reciprocal): Use TV_TREE_RECIP.
+ 	(pass_data_cse_sincos): Use TV_TREE_SINCOS.
+ 	(pass_data_optimize_widening_mul): Use TV_TREE_WIDEN_MUL.
+ 
+ 2017-12-05  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	* dbxout.c (dbxout_block): Grow buf to 30 bytes.
+ 
+ 2017-12-05  Martin Liska  <mliska@suse.cz>
+ 	    Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* doc/invoke.texi: Document the options.
+ 	* flag-types.h (enum sanitize_code): Add
+ 	SANITIZE_POINTER_COMPARE and SANITIZE_POINTER_SUBTRACT.
+ 	* ipa-inline.c (sanitize_attrs_match_for_inline_p): Add handling
+ 	of SANITIZE_POINTER_COMPARE and SANITIZE_POINTER_SUBTRACT.
+ 	* opts.c: Define new sanitizer options.
+ 	* sanitizer.def (BUILT_IN_ASAN_POINTER_COMPARE): Likewise.
+ 	(BUILT_IN_ASAN_POINTER_SUBTRACT): Likewise.
+ 
+ 2017-12-05  Julia Koval  <julia.koval@intel.com>
+ 
+ 	* common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512VNNI_SET,
+ 	OPTION_MASK_ISA_AVX512VNNI_UNSET): New.
+ 	(ix86_handle_option): Handle -mavx512vnni.
+ 	* config/i386/cpuid.h (bit_AVX512VNNI): New bit.
+ 	* config/i386/driver-i386.c (host_detect_local_cpu): Handle new bit.
+ 	* config/i386/i386-c (__AVX512VNNI__): New.
+ 	* config/i386/i386.c (ix86_target_string): Handle new option.
+ 	(ix86_valid_target_attribute_inner_p): Handle new option.
+ 	* config/i386/i386.h (TARGET_AVX512VNNI, TARGET_AVX512VNNI_P): New.
+ 	* config/i386/i386.opt (mavx512vnni): New option.
+ 
+ 2017-12-01  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR target/81616
+ 	* athlon.md: Disable for generic.
+ 	* haswell.md: Enable for generic.
+ 	* i386.c (ix86_sched_init_global): Add core hooks for generic.
+ 	* x86-tune-sched.c (ix86_issue_rate): Increase issue rate for generic
+ 	to 4.
+ 	(ix86_adjust_cost): Move generic to haswell path.
+ 
+ 2017-12-04  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* config/sparc/sparc.c (sparc_do_work_around_errata): Use mem_ref
+ 	instead of MEM_P in a couple more places.  Fix formatting issues.
+ 
+ 2017-12-04  Jim Wilson  <jimw@sifive.com>
+ 
+ 	* config/riscv/riscv.c (riscv_for_each_saved_reg): Use GP_REG_LAST
+ 	instead of GP_REG_LAST-1.
+ 	(riscv_adjust_libcall_cfi_prologue): Likewise.
+ 	(riscv_adjust_libcall_cri_epilogue): Likewise.
+ 	* config/riscv/riscv.h (CALL_USED_REGISTERS): Change a6 to t6 in
+ 	comment.
+ 
+ 2017-12-04  Luis Machado  <luis.machado@linaro.org>
+ 
+ 	* ipa-pure-const.c (check_decl): Add missing newline.
+ 	(state_from_flags): Likewise.
+ 
+ 2017-12-04  Jeff Law  <law@redhat.com>
+ 
+ 	PR tree-optimizatin/78496
+ 	* gimple-ssa-evrp-analyze.h
+ 	(evrp_range_analyzer::get_vr_values): Simplify.
+ 	* gimple-ssa-evrp-analyze.c: Corresponding changes.
+ 	* tree-ssa-dom.c: Include alloc-pool.h, tree-vrp.h, vr-values.h
+ 	and gimple-ssa-evrp-analyze.h.
+ 	(dom_opt_dom_walker class): Add evrp_range_analyzer member.
+ 	(simplify_stmt_for_jump_threading): Copy a blob of code from
+ 	tree-vrp.c to use ranges to simplify statements.
+ 	(dom_opt_dom_walker::before_dom_children): Call
+ 	evrp_range_analyzer::{enter,record_ranges_from_stmt} methods.
+ 	(dom_opt_dom_walker::after_dom_children): Similarly for
+ 	evrp_range_analyzer::leave.
+ 	(dom_opt_dom_walker::optimize_stmt): Use EVRP ranges to optimize
+ 	conditionals.
+ 
+ 	* gimple-ssa-evrp-analyze.c
+ 	(evrp_range_analyzer::extract_range_from_stmt):  Always use
+ 	vr_values::update_value_range so preexisting range info is
+ 	medged with new range info, even if the new range is VR_VARYING.
+ 
+ 2017-12-04  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* combine.c: Adjust comment.
+ 	(use_crosses_set_p): Delete.
+ 	(can_combine_p): Use modified_between_p instead of use_crosses_set_p.
+ 	(try_combine): Ditto.
+ 
+ 2017-12-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/83255
+ 	* graphite-isl-ast-to-gimple.c (translate_isl_ast_node_for):
+ 	Re-add zero-iteration check.
+ 
+ 2017-12-04  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR rtl-optimization/83245
+ 	* lra.c (collect_non_operand_hard_regs): Treat clobbers of non-operand
+ 	hard registers as earlyclobber, also if not in an asm.
+ 
+ 2017-12-04  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR bootstrap/83265
+ 	Revert
+ 	2017-12-01  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR target/43871
+ 	* config/rs6000/rs6000.c (rs6000_option_override_internal): Set
+ 	rs6000_cpu based on cpu_index, not tune_index.
+ 
+ 2017-12-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/83238
+ 	* graphite-scop-detection.c (scop_detection::merge_sese): Make
+ 	code match comment, rejecting invalid SESE regions.
+ 
+ 2017-12-03  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	* config/pa/pa.c (pa_legitimate_address_p): For scaled indexing,
+ 	require base operand is a REG_POINTER prior to reload on targets
+ 	with non-equivalent space registers.
+ 
+ 2017-12-01  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* ipa-cp.c (ipcp_lattice<valtype>::print): Update dumping.
+ 	(update_specialized_profile): Fix updating of counts.
+ 	(perhaps_add_new_callers): Likewise.
+ 
+ 2017-12-01  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR target/81616
+ 	* x86-tune.def: Remove obsolette FIXMEs.
+ 	(X86_TUNE_PARTIAL_FLAG_REG_STALL): Disable for generic
+ 	(X86_TUNE_FUSE_CMP_AND_BRANCH_32, X86_TUNE_FUSE_CMP_AND_BRANCH_64,
+ 	X86_TUNE_FUSE_CMP_AND_BRANCH_SOFLAGS, X86_TUNE_FUSE_ALU_AND_BRANCH):
+ 	Enable for generic.
+ 	(X86_TUNE_PAD_RETURNS): Disable for generic.
+ 
+ 2017-12-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/83170
+ 	PR tree-optimization/83241
+ 	* gimple-ssa-store-merging.c
+ 	(imm_store_chain_info::try_coalesce_bswap): Update vuse field from
+ 	gimple_vuse (ins_stmt) in case it has changed.
+ 	(imm_store_chain_info::output_merged_store): Likewise.
+ 
+ 	* tree-chkp.c (chkp_compute_bounds_for_assignment): Handle
+ 	POINTER_DIFF_EXPR.
+ 
+ 	PR c++/81212
+ 	* tree-cfg.c (pass_warn_function_return::execute): Handle
+ 	__builtin_ubsan_handle_missing_return like __builtin_unreachable
+ 	with BUILTINS_LOCATION.
+ 
+ 	PR target/78643
+ 	PR target/80583
+ 	* expr.c (get_inner_reference): If DECL_MODE of a non-bitfield
+ 	is BLKmode for vector field with vector raw mode, use TYPE_MODE
+ 	instead of DECL_MODE.
+ 
+ 	* config/i386/i386-protos.h (standard_sse_constant_opcode): Change
+ 	last argument to rtx pointer.
+ 	* config/i386/i386.c (standard_sse_constant_opcode): Replace X argument
+ 	with OPERANDS.  For AVX+ 128-bit VEX encoded instructions over 256-bit
+ 	or 512-bit.  If setting EXT_REX_SSE_REG_P, use EVEX encoded insn
+ 	depending on the chosen ISAs.
+ 	* config/i386/i386.md (*movxi_internal_avx512f, *movoi_internal_avx,
+ 	*movti_internal, *movdi_internal, *movsi_internal, *movtf_internal,
+ 	*movdf_internal, *movsf_internal): Adjust standard_sse_constant_opcode
+ 	callers.
+ 	* config/i386/sse.md (mov<mode>_internal): Likewise.
+ 	* config/i386/mmx.md (*mov<mode>_internal): Likewise.
+ 
+ 2017-12-01  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* doc/invoke.texi (-dp): Say that instruction cost is printed as well.
+ 
+ 2017-12-01  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/rs6000-protos.h (emit_fusion_addis): Remove last two
+ 	parameters from prototype.
+ 	* config/rs6000/rs6000.c (emit_fusion_addis): Remove last two
+ 	parameters.  Don't print a comment.
+ 	(emit_fusion_gpr_load): Adjust.
+ 	(emit_fusion_load_store): Adjust.
+ 	* config/rs6000/rs6000.md (*fusion_p9_<mode>_constant): Adjust.
+ 	* config/rs6000/vsx.md (two peepholes): Print the "vector load fusion"
+ 	comment on the second line.
+ 
+ 2017-12-01  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR target/43871
+ 	* config/rs6000/rs6000.c (rs6000_option_override_internal): Set
+ 	rs6000_cpu based on cpu_index, not tune_index.
+ 
+ 2017-12-01  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* final.c (output_asm_name): Print insn_cost.  Shorten output.  Print
+ 	which_alternative instead of which_alternative + 1.
+ 	(output_asm_insn): Print an extra tab if the template is short.
+ 
+ 2017-12-01  Jim Wilson  <jimw@sifive.com>
+ 
+ 	* common.opt (use_gnu_debug_info_extensions): Delete DWARF_DEBUG from
+ 	comment.
+ 	* config/vx-common.h (DWARF_DEBUGGING_INFO): Delete undef.
+ 	* doc/tm.texi.in (PREFERRED_DEBUGGING_TYPE): Delete DWARF_DEBUG
+ 	reference.
+ 	* doc/tm.texi: Regenerate.
+ 
+ 2017-12-01  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	PR target/81959
+ 	* config/rs6000/rs6000.c (rs6000_address_for_fpconvert): Check for
+ 	whether we can allocate pseudos before trying to fix an address.
+ 	* config/rs6000/rs6000.md (float_<mode>si2_hw): Make sure the
+ 	memory address is indexed or indirect.
+ 	(floatuns_<mode>si2_hw2): Likewise.
+ 
+ 2017-12-01  Jason Merrill  <jason@redhat.com>
+ 
+ 	* Makefile.in (TAGS): Add c-family/*.cc.
+ 
+ 2017-12-01  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	* config/aarch64/aarch64.md (call_insn): Use %c rather than %a.
+ 	(call_value_insn): Likewise.
+ 	(sibcall_insn): Likewise.
+ 	(sibcall_value_insn): Likewise.
+ 	(movsi_aarch64): Likewise.
+ 	(movdi_aarch64): Likewise.
+ 	(add_losym_): Likewise.
+ 	(ldr_got_small_): Likewise.
+ 	(ldr_got_small_sidi): Likewise.
+ 	(ldr_got_small_28k_): Likewise.
+ 	(ldr_got_small_28k_sidi): Likewise.
+ 	* config/aarch64/aarch64.c (aarch64_print_address_internal):
+ 	Move output_addr_const to symbolic case. Add error check.
+ 
+ 2017-12-01  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	* config/s390/predicates.md (plus16_Q_operand): New predicate.
+ 	* config/s390/s390.md: Disable MVC merging peephole if it would
+ 	disable operand forwarding.
+ 	(new peephole2): Split MVCs if it would turn them into up to 2
+ 	forwardable MVCs.
+ 
+ 2017-12-01  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/83232
+ 	* tree-vect-data-refs.c (vect_analyze_data_ref_accesses): Fix
+ 	detection of same access. Instead of breaking the group here
+ 	do not consider the duplicate.  Add comment explaining real fix.
+ 
+ 2017-12-01  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* doc/md.texi (Insn Splitting): Fix "central flowgraph" typo.
+ 
+ 2017-12-01  Sudakshina Das  <sudi.das@arm.com>
+ 
+ 	* config/arm/vfp.md (*movhf_vfp_fp16): Add conds attribute.
+ 
+ 2017-12-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* function.h (struct function): Remove cilk_frame_decl,
+ 	is_cilk_function and calls_cilk_spawn fields.
+ 	* tree-inline.h (struct copy_body_data): Remove remap_var_for_cilk
+ 	field.
+ 	* omp-simd-clone.c (simd_clone_clauses_extract): Don't clear
+ 	cilk_elemental field.
+ 	* cgraph.h (struct cgraph_simd_clone): Remove cilk_elemental field.
+ 	* target.def: Adjust comment.
+ 	* config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen):
+ 	Don't test cilk_elemental.
+ 
+ 	PR tree-optimization/83233
+ 	* gimple-ssa-store-merging.c (nop_stats, bswap_stats): Use
+ 	bswap_stat name for the struct.
+ 
+ 	PR c/79153
+ 	* tree.h (SWITCH_BREAK_LABEL_P): Define.
+ 	* gimplify.c (collect_fallthrough_labels): Handle GIMPLE_BIND
+ 	starting with a GIMPLE_SWITCH and ending with GIMPLE_LABEL with
+ 	SWITCH_BREAK_LABEL_P set on the label.
+ 	(gimplify_switch_expr): Set SWITCH_BREAK_LABEL_P on the label
+ 	added for default case if it was missing and not all cases covered.
+ 	Wrap GIMPLE_SWITCH and the switch_body_seq into a GIMPLE_BIND if
+ 	switch_body_seq ends with a GIMPLE_LABEL with SWITCH_BREAK_LABEL_P
+ 	set on the label.
+ 	* tree-chrec.c (evolution_function_is_univariate_p): Add return true;
+ 	to avoid -Wimplicit-fallthrough warning.
+ 	* config/i386/i386.c (ix86_expand_special_args_builtin): Add
+ 	FALLTHRU comment to avoid -Wimplicit-fallthrough warning.
+ 
+ 	PR tree-optimization/83221
+ 	* tree-ssa-reassoc.c (sort_by_operand_rank): Shift bb_rank
+ 	down by 16.
+ 	(init_reassoc): Formatting fix.
+ 
+ 	PR sanitizer/81275
+ 	* tree-cfg.c (group_case_labels_stmt): Don't optimize away
+ 	C++ FE implicitly added __builtin_unreachable () until -Wreturn-type
+ 	is diagnosed.
+ 
+ 	PR sanitizer/83219
+ 	* tree-cfg.c: Include asan.h.
+ 	(gimple_seq_unreachable_p): Return false for -fsanitize=unreachable.
+ 
+ 2017-12-01  Sergey Shalnov  <Sergey.Shalnov@intel.com>
+ 
+ 	* config/i386/i386.md: Fix AVX512 register width in AVX512 instruction.
+ 
+ 2017-12-01  Sergey Shalnov  <Sergey.Shalnov@intel.com>
+ 
+ 	* config/i386/i386.c (standard_sse_constant_opcode): Fix wrong form for
+ 	vpcmpeqd instruction.
+ 
+ 2017-12-01  Sergey Shalnov  <Sergey.Shalnov@intel.com>
+ 
+ 	* config/i386/i386.c (standard_sse_constant_opcode): Fix
+ 	registers type for 128bit mode.
+ 
+ 2017-11-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* spellcheck-tree.c (test_find_closest_identifier): Use ; instead
+ 	of ;;.
+ 	* gengtype-state.c (read_state_pair): Likewise.
+ 	* gimple-fold.c (gimple_fold_builtin_string_compare): Likewise.
+ 	* sel-sched-dump.c (dump_insn_rtx_1): Likewise.
+ 	* ipa-cp.c (intersect_aggregates_with_edge): Likewise.
+ 	* ifcvt.c (noce_try_store_flag_constants): Likewise.
+ 	* tree-ssa-ccp.c (ccp_finalize): Likewise.
+ 	* omp-grid.c (grid_process_kernel_body_copy): Likewise.
+ 	* builtins.c (fold_builtin_3): Likewise.
+ 	* graphite-scop-detection.c
+ 	(scop_detection::stmt_has_simple_data_refs_p): Likewise.
+ 	* hsa-gen.c (hsa_function_representation::hsa_function_representation):
+ 	Likewise.
+ 
+ 2017-12-01  Maxim Ostapenko  <m.ostapenko@samsung.com>
+ 
+ 	PR sanitizer/81697
+ 	* asan.c (asan_protect_global): Add new ignore_decl_rtl_set_p
+ 	parameter. Return true if ignore_decl_rtl_set_p is true and other
+ 	conditions are satisfied.
+ 	* asan.h (asan_protect_global): Add new parameter.
+ 	* varasm.c (categorize_decl_for_section): Pass true as second parameter
+ 	to asan_protect_global calls.
+ 
+ 2017-11-30  Jim Wilson  <jimw@sifive.com>
+ 
+ 	* doc/invoke.texi (RISC-V Options): Delete nonexistent -mmemcpy and
+ 	-mno-memcpy options.  For -mplt, -mfdiv, -mdiv, -msave-restore, and
+ 	-mstrict-align, add info on default value.  Delete redundant lines for
+ 	-mabi.  Add missing -mexplicit-relocs docs.
+ 
+ 2017-11-30  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.md (trap): New pattern.
+ 
+ 2017-11-30  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.c (hwloop_optimize): Prevent the last ZOL
+ 	instruction to end into a delay slot.
+ 	* config/arc/arc.md (cond_delay_insn): Check if the instruction
+ 	can be placed into a delay slot against reg_note.
+ 
+ 2017-11-30  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.c (hwloop_optimize): Update hw-loop's end/start
+ 	labels number of usages.
+ 
+ 2017-11-30  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.c (arc_cannot_substitue_mem_equiv_p): New
+ 	function.
+ 	(TARGET_CANNOT_SUBSTITUTE_MEM_EQUIV_P): Define.
+ 
+ 2017-11-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/83210
+ 	* internal-fn.c (expand_mul_overflow): Optimize unsigned
+ 	multiplication by power of 2 constant into two shifts + comparison.
+ 
+ 2017-11-30  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR target/81616
+ 	* config/i386/x86-tune-costs.h (generic_cost): Revise for modern CPUs.
+ 
+ 2017-11-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/83202
+ 	* tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Add
+ 	allow_peel argument and guard peeling.
+ 	(canonicalize_loop_induction_variables): Likewise.
+ 	(canonicalize_induction_variables): Pass false.
+ 	(tree_unroll_loops_completely_1): Pass unroll_outer to disallow
+ 	peeling from cunrolli.
+ 
+ 2017-11-29  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* combine.c (try_combine): Print a message to dump file whenever
+ 	I0, I1, or I2 cannot be combined into I3.
+ 
+ 2017-11-29  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR rtl-optimization/83156
+ 	PR rtl-optimization/82621
+ 	* combine.c (try_combine): Don't split an I2 if one of the dests is
+ 	set again before I3.  Allow unused dests.
+ 
+ 2017-11-29  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/rs6000.md (*add<mode>3_carry_in_internal2): New.
+ 
+ 2017-11-29  Vladimir Makarov  <vmakarov@redhat.com>
+ 
+ 	PR rtl-optimization/80818
+ 	* lra.c (collect_non_operand_hard_regs): New arg insn.  Pass it
+ 	recursively.  Use insn code for clobber.
+ 	(lra_set_insn_recog_data): Pass the new arg to
+ 	collect_non_operand_hard_regs.
+ 	(add_regs_to_insn_regno_info): Pass insn instead of uid.  Use insn
+ 	code for clobber.
+ 	(lra_update_insn_regno_info): Pass insn to
+ 	add_regs_to_insn_regno_info.
+ 
+ 2017-11-29  Jim Wilson  <jimw@sifive.com>
+ 	    Andrew Waterman  <andrew@sifive.com>
+ 
+ 	* config/riscv/riscv.c (SINGLE_SHIFT_COST): New.
+ 	(riscv_rtx_costs): Case ZERO_EXTRACT, match new pattern, and return
+ 	SINGLE_SHIFT_COST.  Case LT and ZERO_EXTEND, likewise.  Case ASHIFT,
+ 	use SINGLE_SHIFT_COST.
+ 	* config/riscv/riscv.md (lshrsi3_zero_extend_1): New.
+ 	(lshrsi3_zero_extend_2, lshrsi3_zero_extend_3): New.
+ 
+ 2017-11-29  Julia Koval  <julia.koval@intel.com>
+ 
+ 	* config/i386/avx512vbmi2intrin.h (_mm512_shldv_epi16,
+ 	_mm512_mask_shldv_epi16, _mm512_maskz_shldv_epi16, _mm512_shldv_epi32,
+ 	_mm512_mask_shldv_epi32, _mm512_maskz_shldv_epi32, _mm512_shldv_epi64,
+ 	_mm512_mask_shldv_epi64, _mm512_maskz_shldv_epi64): New intrinsics.
+ 	* config/i386/avx512vbmi2vlintrin.h (_mm256_shldv_epi16,
+ 	_mm256_mask_shldv_epi16, _mm256_maskz_shldv_epi16, _mm256_shldv_epi32,
+ 	_mm256_mask_shldv_epi32, _mm256_maskz_shldv_epi32, _mm256_shldv_epi64,
+ 	_mm256_mask_shldv_epi64, _mm256_maskz_shldv_epi64, _mm_shldv_epi16,
+ 	_mm_mask_shldv_epi16, _mm_maskz_shldv_epi16, _mm_shldv_epi32,
+ 	_mm_mask_shldv_epi32, _mm_maskz_shldv_epi32, _mm_shldv_epi64,
+ 	_mm_mask_shldv_epi64, _mm_maskz_shldv_epi64): Ditto.
+ 	* config/i386/i386-builtin.def (__builtin_ia32_vpshldv_v32hi,
+ 	__builtin_ia32_vpshldv_v32hi_mask, __builtin_ia32_vpshldv_v32hi_maskz,
+ 	__builtin_ia32_vpshldv_v16hi, __builtin_ia32_vpshldv_v16hi_mask,
+ 	__builtin_ia32_vpshldv_v16hi_maskz, __builtin_ia32_vpshldv_v8hi,
+ 	__builtin_ia32_vpshldv_v8hi_mask, __builtin_ia32_vpshldv_v8hi_maskz,
+ 	__builtin_ia32_vpshldv_v16si, __builtin_ia32_vpshldv_v16si_mask,
+ 	__builtin_ia32_vpshldv_v16si_maskz, __builtin_ia32_vpshldv_v8si,
+ 	__builtin_ia32_vpshldv_v8si_mask, __builtin_ia32_vpshldv_v8si_maskz,
+ 	__builtin_ia32_vpshldv_v4si, __builtin_ia32_vpshldv_v4si_mask,
+ 	__builtin_ia32_vpshldv_v4si_maskz, __builtin_ia32_vpshldv_v8di,
+ 	__builtin_ia32_vpshldv_v8di_mask, __builtin_ia32_vpshldv_v8di_maskz,
+ 	__builtin_ia32_vpshldv_v4di, __builtin_ia32_vpshldv_v4di_mask,
+ 	__builtin_ia32_vpshldv_v4di_maskz, __builtin_ia32_vpshldv_v2di,
+ 	__builtin_ia32_vpshldv_v2di_mask,
+ 	__builtin_ia32_vpshldv_v2di_maskz): New builtins.
+ 	* config/i386/sse.md (vpshldv_<mode>, vpshldv_<mode>_mask,
+ 	vpshldv_<mode>_maskz, vpshldv_<mode>_maskz_1): New patterns.
+ 
+ 2017-11-29  Julia Koval  <julia.koval@intel.com>
+ 
+ 	* config/i386/avx512vbmi2intrin.h (_mm512_shrdv_epi16,
+ 	_mm512_mask_shrdv_epi16, _mm512_maskz_shrdv_epi16, _mm512_shrdv_epi32,
+ 	_mm512_mask_shrdv_epi32, _mm512_maskz_shrdv_epi32, _mm512_shrdv_epi64,
+ 	_mm512_mask_shrdv_epi64, _mm512_maskz_shrdv_epi64): New intrinsics.
+ 	* config/i386/avx512vbmi2vlintrin.h (_mm256_shrdv_epi16,
+ 	_mm256_mask_shrdv_epi16, _mm256_maskz_shrdv_epi16, _mm256_shrdv_epi32,
+ 	_mm256_mask_shrdv_epi32, _mm256_maskz_shrdv_epi32, _mm256_shrdv_epi64,
+ 	_mm256_mask_shrdv_epi64, _mm256_maskz_shrdv_epi64, _mm_shrdv_epi16,
+ 	_mm_mask_shrdv_epi16, _mm_maskz_shrdv_epi16, _mm_shrdv_epi32,
+ 	_mm_mask_shrdv_epi32, _mm_maskz_shrdv_epi32, _mm_shrdv_epi64,
+ 	_mm_mask_shrdv_epi64, _mm_maskz_shrdv_epi64): Ditto.
+ 	* config/i386/i386-builtin-types.def (V32HI_FTYPE_V32HI_V32HI_V32HI,
+ 	V32HI_FTYPE_V32HI_V32HI_V32HI_INT, V16HI_FTYPE_V16HI_V16HI_V16HI_INT,
+ 	V8HI_FTYPE_V8HI_V8HI_V8HI_INT, V8SI_FTYPE_V8SI_V8SI_V8SI_INT,
+ 	V4SI_FTYPE_V4SI_V4SI_V4SI_INT, V8DI_FTYPE_V8DI_V8DI_V8DI,
+ 	V8DI_FTYPE_V8DI_V8DI_V8DI_INT, V4DI_FTYPE_V4DI_V4DI_V4DI_INT,
+ 	V16SI_FTYPE_V16SI_V16SI_V16SI, V16SI_FTYPE_V16SI_V16SI_V16SI_INT,
+ 	V2DI_FTYPE_V2DI_V2DI_V2DI_INT): New types.
+ 	* config/i386/i386.c (ix86_expand_args_builtin): Handle new types.
+ 	* config/i386/sse.md (vpshrdv_<mode>, vpshrdv_<mode>_mask,
+ 	vpshrdv_<mode>_maskz, vpshrdv_<mode>_maskz_1): New pattern.
+ 
+ 2017-11-29  Daniel Cederman  <cederman@gaisler.com>
+ 
+ 	* config/sparc/sparc.c (sparc_do_work_around_errata): Treat the
+ 	movsi_pic_gotdata_op instruction as a load for the UT699 errata
+ 	workaround.
+ 
+ 2017-11-29  Martin Aberg  <maberg@gaisler.com>
+ 
+ 	* config/sparc/sparc.md (divdf3_fix): Add NOP and adjust length
+ 	to prevent b2bst errata sequence.
+ 	(sqrtdf2_fix): Likewise.
+ 
+ 2017-11-29  Daniel Cederman  <cederman@gaisler.com>
+ 
+ 	* config/sparc/sparc.c (fpop_reg_depend_p): New function.
+ 	(div_sqrt_insn_p): New function.
+ 	(sparc_do_work_around_errata): Insert NOP instructions to
+ 	prevent sequences that could trigger the TN-0013 errata for
+ 	certain LEON3 processors.
+ 	(pass_work_around_errata::gate): Also test sparc_fix_lost_divsqrt.
+ 	(sparc_option_override): Set sparc_fix_lost_divsqrt appropriately.
+ 	* config/sparc/sparc.md (fix_lost_divsqrt): New attribute.
+ 	(in_branch_delay): Prevent div and sqrt in delay slot if
+ 	fix_lost_divsqrt.
+ 	* config/sparc/sparc.opt (sparc_fix_lost_divsqrt): New variable.
+ 
+ 2017-11-29  Daniel Cederman  <cederman@gaisler.com>
+ 
+ 	* config/sparc/sparc.c (atomic_insn_p): New function.
+ 	(sparc_do_work_around_errata): Insert NOP instructions to
+ 	prevent sequences that could trigger the TN-0010 errata for
+ 	UT700.
+ 	* config/sparc/sync.md (atomic_compare_and_swap_leon3_1): Make
+ 	instruction referable in atomic_insns_p.
+ 
+ 2017-11-29  Daniel Cederman  <cederman@gaisler.com>
+ 
+ 	* config/sparc/sync.md (swapsi): 16-byte align if sparc_fix_gr712rc.
+ 	(atomic_compare_and_swap_leon3_1): Likewise.
+ 	(ldstub): Likewise.
+ 
+ 2017-11-29  Daniel Cederman  <cederman@gaisler.com>
+ 
+ 	* config/sparc/sparc.c (fpop_insn_p): New function.
+ 	(sparc_do_work_around_errata): Insert NOP instructions to
+ 	prevent sequences that could trigger the TN-0012 errata for
+ 	GR712RC.
+ 	(pass_work_around_errata::gate): Also test sparc_fix_gr712rc.
+ 	* config/sparc/sparc.md (fix_gr712rc): New attribute.
+ 	(in_branch_annul_delay): Prevent floating-point instructions
+ 	in delay slot of annulled integer branch.
+ 
+ 2017-11-29  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/83202
+ 	* tree-vect-slp.c (scalar_stmts_set_t): New typedef.
+ 	(bst_fail): Use it.
+ 	(vect_analyze_slp_cost_1): Add visited set, do not account SLP
+ 	nodes vectorized to the same stmts multiple times.
+ 	(vect_analyze_slp_cost): Allocate a visited set and pass it down.
+ 	(vect_analyze_slp_instance): Adjust.
+ 	(scalar_stmts_to_slp_tree_map_t): New typedef.
+ 	(vect_schedule_slp_instance): Add a map recording the SLP node
+ 	representing the vectorized stmts for a set of scalar stmts.
+ 	Avoid code-generating redundancies.
+ 	(vect_schedule_slp): Allocate map and pass it down.
+ 
+ 2017-11-29  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	PR c++/83187
+ 	* tree.c (build_complex_type): Fix canonicalization.  Only fill in
+ 	type if it is new.
+ 
+ 2017-11-29  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_print_operand): Add new
+ 	cases for printing LDP/STP memory addresses.
+ 	(aarch64_print_address_internal): Renamed from
+ 	aarch64_print_operand_address, added parameter, add Pmode check.
+ 	(aarch64_print_ldpstp_address): New function for LDP/STP addresses.
+ 	(aarch64_print_operand_address): Indirect to
+ 	aarch64_print_address_internal.
+ 	* config/aarch64/aarch64-simd.md (store_pair_lanes): Use new
+ 	'y' operand output specifier.
+ 
+ 2017-11-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/83185
+ 	* tree.c (build_simple_mem_ref_loc): Handle
+ 	get_addr_base_and_unit_offset returning a MEM_REF.
+ 
+ 	PR middle-end/80929
+ 	* rtlanal.c (seq_cost): For non-single_set insns try to use insn_cost.
+ 
+ 	PR target/80819
+ 	* config/i386/sse.md (vec_concatv2di): Remove * from (=Yr,0,*rm)
+ 	alternative.
+ 
+ 2017-11-28  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* diagnostic-show-locus.c (layout::print_trailing_fixits): Handle
+ 	m_x_offset.
+ 	(layout::move_to_column): Likewise.
+ 
+ 2017-11-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/81275
+ 	* tree.c (block_may_fallthru): Return false if SWITCH_ALL_CASES_P
+ 	is set on SWITCH_EXPR and !block_may_fallthru (SWITCH_BODY ()).
+ 
+ 2017-11-28  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
+ 	    Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR ipa/82808
+ 	* tree.h (expr_type_first_operand_type_p): Declare
+ 	* tree.c (expr_type_first_operand_type_p): New function.
+ 	* ipa-prop.h (ipa_get_type): Allow i to be out of bounds.
+ 	(ipa_value_from_jfunc): Adjust declaration.
+ 	* ipa-cp.c (ipa_get_jf_pass_through_result): New parameter RES_TYPE.
+ 	Use it as result type for arithmetics, unless it is NULL in which case
+ 	be more conservative.
+ 	(ipa_value_from_jfunc): New parameter PARM_TYPE, pass it to
+ 	ipa_get_jf_pass_through_result.
+ 	(propagate_vals_across_pass_through): Likewise.
+ 	(propagate_scalar_across_jump_function): New parameter PARM_TYPE, pass
+ 	is to propagate_vals_across_pass_through.
+ 	(propagate_constants_across_call): Pass PARM_TYPE to
+ 	propagate_scalar_across_jump_function.
+ 	(find_more_scalar_values_for_callers_subset): Pass parameter type to
+ 	ipa_value_from_jfunc.
+ 	(cgraph_edge_brings_all_scalars_for_node): Likewise.
+ 	* ipa-fnsummary.c (evaluate_properties_for_edge): Renamed parms_info
+ 	to caller_parms_info, pass parameter type to ipa_value_from_jfunc.
+ 	* ipa-prop.c (try_make_edge_direct_simple_call): New parameter
+ 	target_type, pass it to ipa_value_from_jfunc.
+ 	(update_indirect_edges_after_inlining): Pass parameter type to
+ 	try_make_edge_direct_simple_call.
+ 
+ 2017-11-28  Jeff Law  <law@redhat.com>
+ 
+ 	* gimple-ssa-evrp-analyze.c
+ 	(evrp_range_analyzer::record_ranges_from_phis): Only use SCEV to
+ 	refine ranges if scev_initialized_p returns true.
+ 	* vr-values.c (vr_values::extract_range_from_phi_node): Likewise.
+ 
+ 2017-11-28  Julia Koval  <julia.koval@intel.com>
+ 
+ 	* config/i386/avx512vbmi2intrin.h (_mm512_shrdi_epi16,
+ 	_mm512_mask_shrdi_epi16, _mm512_maskz_shrdi_epi16, _mm512_shrdi_epi32,
+ 	_mm512_mask_shrdi_epi32, _mm512_maskz_shrdi_epi32, _mm512_shrdi_epi64,
+ 	_mm512_mask_shrdi_epi64, _mm512_maskz_shrdi_epi64): New intrinsics.
+ 	* config/i386/avx512vbmi2vlintrin.h (_mm256_shrdi_epi16,
+ 	_mm256_mask_shrdi_epi16, _mm256_maskz_shrdi_epi16,
+ 	_mm256_mask_shrdi_epi32, _mm256_maskz_shrdi_epi32, _mm256_shrdi_epi32,
+ 	_mm256_mask_shrdi_epi64, _mm256_maskz_shrdi_epi64, _mm256_shrdi_epi64,
+ 	_mm_mask_shrdi_epi16, _mm_maskz_shrdi_epi16, _mm_shrdi_epi16,
+ 	_mm_mask_shrdi_epi32, _mm_maskz_shrdi_epi32, _mm_shrdi_epi32,
+ 	_mm_mask_shrdi_epi64, _mm_maskz_shrdi_epi64, _mm_shrdi_epi64): Ditto.
+ 	* config/i386/i386-builtin.def (__builtin_ia32_vpshrd_v32hi,
+ 	__builtin_ia32_vpshrd_v32hi_mask, __builtin_ia32_vpshrd_v16hi,
+ 	__builtin_ia32_vpshrd_v16hi_mask, __builtin_ia32_vpshrd_v8hi,
+ 	__builtin_ia32_vpshrd_v8hi_mask, __builtin_ia32_vpshrd_v16si,
+ 	__builtin_ia32_vpshrd_v16si_mask, __builtin_ia32_vpshrd_v8si,
+ 	__builtin_ia32_vpshrd_v8si_mask, __builtin_ia32_vpshrd_v4si,
+ 	__builtin_ia32_vpshrd_v4si_mask, __builtin_ia32_vpshrd_v8di,
+ 	__builtin_ia32_vpshrd_v8di_mask, __builtin_ia32_vpshrd_v4di,
+ 	__builtin_ia32_vpshrd_v4di_mask, __builtin_ia32_vpshrd_v2di,
+ 	__builtin_ia32_vpshrd_v2di_mask): New builtins.
+ 	* config/i386/sse.md (vpshrd_<mode><mask_name>): New pattern.
+ 
+ 2017-11-28  Julia Koval  <julia.koval@intel.com>
+ 
+ 	* config/i386/avx512vbmi2intrin.h (_mm512_shldi_epi16,
+ 	_mm512_mask_shldi_epi16, _mm512_maskz_shldi_epi16, _mm512_shldi_epi32,
+ 	_mm512_mask_shldi_epi32, _mm512_maskz_shldi_epi32, _mm512_shldi_epi64,
+ 	_mm512_mask_shldi_epi64, _mm512_maskz_shldi_epi64): New intrinsics.
+ 	* config/i386/avx512vbmi2vlintrin.h (_mm256_shldi_epi16,
+ 	_mm256_mask_shldi_epi16, _mm256_maskz_shldi_epi16,
+ 	_mm256_mask_shldi_epi32, _mm256_maskz_shldi_epi32, _mm256_shldi_epi32,
+ 	_mm256_mask_shldi_epi64, _mm256_maskz_shldi_epi64, _mm256_shldi_epi64,
+ 	_mm_mask_shldi_epi16, _mm_maskz_shldi_epi16, _mm_shldi_epi16,
+ 	_mm_mask_shldi_epi32, _mm_maskz_shldi_epi32, _mm_shldi_epi32,
+ 	_mm_mask_shldi_epi64, _mm_maskz_shldi_epi64, _mm_shldi_epi64): Ditto.
+ 	* config/i386/i386-builtin-types.def (V32HI_FTYPE_V32HI_V32HI_INT,
+ 	V32HI_FTYPE_V32HI_V32HI_INT_V32HI_INT, V16SI_FTYPE_V16SI_V16SI_INT,
+ 	V16SI_FTYPE_V16SI_V16SI_INT_V16SI_INT,
+ 	V8DI_FTYPE_V8DI_V8DI_INT_V8DI_INT, V8SI_FTYPE_V8SI_V8SI_INT_V8SI_INT,
+ 	V16HI_FTYPE_V16HI_V16HI_INT_V16HI_INT,
+ 	V4DI_FTYPE_V4DI_V4DI_INT_V4DI_INT,
+ 	V8HI_FTYPE_V8HI_V8HI_INT_V8HI_INT,
+ 	V4SI_FTYPE_V4SI_V4SI_INT_V4SI_INT,
+ 	V2DI_FTYPE_V2DI_V2DI_INT_V2DI_INT): New types.
+ 	* config/i386/i386-builtin.def (__builtin_ia32_vpshld_v32hi,
+ 	__builtin_ia32_vpshld_v32hi_mask, __builtin_ia32_vpshld_v16hi,
+ 	__builtin_ia32_vpshld_v16hi_mask, __builtin_ia32_vpshld_v8hi,
+ 	__builtin_ia32_vpshld_v8hi_mask, __builtin_ia32_vpshld_v16si,
+ 	__builtin_ia32_vpshld_v16si_mask, __builtin_ia32_vpshld_v8si,
+ 	__builtin_ia32_vpshld_v8si_mask, __builtin_ia32_vpshld_v4si,
+ 	__builtin_ia32_vpshld_v4si_mask, __builtin_ia32_vpshld_v8di,
+ 	__builtin_ia32_vpshld_v8di_mask, __builtin_ia32_vpshld_v4di,
+ 	__builtin_ia32_vpshld_v4di_mask, __builtin_ia32_vpshld_v2di,
+ 	__builtin_ia32_vpshld_v2di_mask): New builtins.
+ 	* config/i386/i386.c (ix86_expand_args_builtin): Handle new types.
+ 	* config/i386/sse.md (vpshld_<mode><mask_name>): New pattern.
+ 
+ 2017-11-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/80776
+ 	* gimple-ssa-evrp-analyze.h (evrp_range_analyzer::set_ssa_range_info):
+ 	Declare.
+ 	* gimple-ssa-evrp-analyze.c (evrp_range_analyzer::set_ssa_range_info):
+ 	New function.
+ 	(evrp_range_analyzer::record_ranges_from_incoming_edges):
+ 	If the incoming edge is an effective fallthru because the other
+ 	edge only reaches a __builtin_unreachable () then record ranges
+ 	derived from the controlling condition in SSA info.
+ 	(evrp_range_analyzer::record_ranges_from_phis): Use set_ssa_range_info.
+ 	(evrp_range_analyzer::record_ranges_from_stmt): Likewise.
+ 
+ 2017-11-28  Olivier Hainque  <hainque@adacore.com>
+ 
+ 	* Makefile.in (SELFTEST_FLAGS): Use nul instead of /dev/null
+ 	on mingw build hosts.
+ 
+ 2017-11-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/81307
+ 	* dbxout.c (dbx_block_with_cold_children): Fix function comment.
+ 
+ 2017-11-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/83141
+ 	* gimple-fold.c (gimple_fold_builtin_memory_op): For aggregate
+ 	copies generated from memcpy use a character array as reference
+ 	type.
+ 
+ 2017-11-28  Julia Koval  <julia.koval@intel.com>
+ 	    Sebastian Peryt  <sebastian.peryt@intel.com>
+ 
+ 	* Makefile.in (cilkplus.def, cilk-builtins.def, c-family/cilk.o,
+ 	c-family/c-cilkplus.o, c-family/array-notation-common.o,
+ 	cilk-common.o, cilk.h, cilk-common.c): Remove.
+ 	* builtin-types.def
+ 	(BT_FN_INT_PTR_PTR_PTR_FTYPE_BT_INT_BT_PTR_BT_PTR_BT_PTR): Remove.
+ 	* builtins.c (is_builtin_name): Remove cilkplus condition.
+ 	(BUILT_IN_CILK_DETACH, BUILT_IN_CILK_POP_FRAME): Remove.
+ 	* builtins.def (DEF_CILK_BUILTIN_STUB, DEF_CILKPLUS_BUILTIN,
+ 	cilk-builtins.def, cilkplus.def): Remove.
+ 	* cif-code.def (CILK_SPAWN): Remove.
+ 	* cilk-builtins.def: Delete.
+ 	* cilk-common.c: Ditto.
+ 	* cilk.h: Ditto.
+ 	* cilkplus.def: Ditto.
+ 	* config/darwin.h (fcilkplus): Delete.
+ 	* cppbuiltin.c: Ditto.
+ 	* doc/extend.texi: Remove cilkplus doc.
+ 	* doc/generic.texi: Ditto.
+ 	* doc/invoke.texi: Ditto.
+ 	* doc/passes.texi: Ditto.
+ 	* gcc.c (fcilkplus): Remove.
+ 	* gengtype.c (cilk.h): Remove.
+ 	* gimple-pretty-print.c (dump_gimple_omp_for): Remove cilkplus
+ 	support.
+ 	* gimple.h (GF_OMP_FOR_KIND_CILKFOR, GF_OMP_FOR_KIND_CILKSIMD):
+ 	Remove.
+ 	* gimplify.c (gimplify_return_expr, maybe_fold_stmt,
+ 	gimplify_call_expr,
+ 	is_gimple_stmt, gimplify_modify_expr, gimplify_scan_omp_clauses,
+ 	gimplify_adjust_omp_clauses, gimplify_omp_for, gimplify_expr): Remove
+ 	cilkplus conditions.
+ 	* ipa-fnsummary.c (ipa_dump_fn_summary, compute_fn_summary,
+ 	inline_read_section): Ditto.
+ 	* ipa-inline-analysis.c (cilk.h): Remove.
+ 	* ira.c (ira_setup_eliminable_regset): Remove cilkplus support.
+ 	* lto-wrapper.c (merge_and_complain, append_compiler_options,
+ 	append_linker_options): Remove condition for fcilkplus.
+ 	* lto/lto-lang.c (cilk.h): Remove.
+ 	(lto_init): Remove condition for fcilkplus.
+ 	* omp-expand.c (expand_cilk_for_call): Delete.
+ 	(expand_omp_taskreg, expand_omp_for_static_chunk,
+ 	expand_omp_for): Remove cilkplus
+ 	conditions.
+ 	(expand_cilk_for): Delete.
+ 	* omp-general.c (omp_extract_for_data): Remove cilkplus support.
+ 	* omp-low.c (scan_sharing_clauses, create_omp_child_function,
+ 	execute_lower_omp, diagnose_sb_0): Ditto.
+ 	* omp-simd-clone.c (simd_clone_clauses_extract): Ditto.
+ 	* tree-core.h (OMP_CLAUSE__CILK_FOR_COUNT_): Delete.
+ 	* tree-nested.c: Ditto.
+ 	* tree-pretty-print.c (dump_omp_clause): Remove cilkplus support.
+ 	(dump_generic_node): Ditto.
+ 	* tree.c (OMP_CLAUSE__CILK_FOR_COUNT_): Delete.
+ 	* tree.def (cilk_simd, cilk_for, cilk_spawn_stmt, cilk_sync_stmt):
+ 	Delete.
+ 	* tree.h (CILK_SPAWN_FN, EXPR_CILK_SPAWN): Delete.
+ 
+ 2017-11-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
+ 
+ 	* config/aarch64/aarch64.md (div<mode>3): Change check to TARGET_FLOAT.
+ 	* config/aarch64/aarch64.c (aarch64_emit_approx_div): Add early exit
+ 	for vector mode and !TARGET_SIMD.
+ 
+ 2017-11-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* tree.def (SWITCH_EXPR): Change from 3 operand to 2 operand tree.
+ 	Adjust comment.
+ 	* tree.h (SWITCH_LABELS): Remove.
+ 	* gimplify.c (gimplify_switch_expr): Don't test SWITCH_LABELS,
+ 	assert SWITCH_BODY is non-NULL.
+ 	* tree-pretty-print.c (dump_generic_node): Remove SWITCH_LABELS
+ 	handling.
+ 	* tree.c (block_may_fallthru): Always return true; for SWITCH_EXPR.
+ 
+ 	PR tree-optimization/80788
+ 	* match.pd (X +- C1 CMP C2 -> X CMP C2 -+ C1): If res
+ 	has TREE_OVERFLOW set, call drop_tree_overflow.
+ 
+ 2017-11-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/83158
+ 	* tree-vrp.c (intersect_ranges): Prefer ~[0, 0] in a few more cases.
+ 
+ 2017-11-28  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR 81288/target
+ 	* config/rs6000/rs6000.c (rs6000_rtx_costs): Do not handle
+ 	TARGET_ISEL && !TARGET_MFCRF differently.  Simplify code.
+ 
+ 2017-11-27  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/rs6000.md (<code><GPR:mode><GPR2:mode>2_isel): Change
+ 	LT/GT/LTU/GTU to LE/GE/LEU/GEU where possible.
+ 
+ 2017-11-27  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	PR middle_end/82333
+ 	* varasm.c (compare_constant): Take the mode of the constants into
+ 	account when comparing floating point constants.
+ 
+ 2017-11-27  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* hash-set.h (DEFINE_DEBUG_HASH_SET): Remove static qualifier
+ 	from explicit instantiation of debug_helper.
+ 	* vec.h (DEFINE_DEBUG_VEC): Ditto.
+ 
+ 2017-11-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gimple-fold.c (gimple_fold_builtin_memory_op): Remove dead code,
+ 	refactor a bit.
+ 
+ 2017-11-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree.c (wide_int_to_tree): Free discarded INTEGER_CST.
+ 	(type_hash_canon): Also clear int_cst_hash_table entry for
+ 	TYPE_MIN/MAX_VALUE.
+ 	(build_nonstandard_integer_type): Hash all TYPE_MAX_VALUEs.
+ 
+ 2017-11-27  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* doc/extend.texi: Add -A suffix (ARMv8*-A, ARMv7-A).
+ 	* doc/invoke.texi: Add -A suffix (ARMv8*-A, ARMv7-A).
+ 	* doc/sourcebuild.texi: Add -A suffix (ARMv8*-A, ARMv7-A).
+ 
+ 2017-11-27  Markus Trippelsdorf  <markus@trippelsdorf.de>
+ 
+ 	* hash-map.h (gt_cleare_cache): Avoid UB.
+ 
+ 2017-11-27  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* cfgloop.h (struct loop): Document usage of USHRT_MAX for unroll.
+ 	* loop-unroll.c (decide_unroll_constant_iterations): Implement it.
+ 	(decide_unroll_runtime_iterations): Likewise.
+ 	(decide_unroll_stupid): Likewise.
+ 
+ 2017-11-27  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
+ 
+ 	PR target/83109
+ 	* config/i386/i386.md: Add a loop with incssp.
+ 
+ 2017-11-27  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR tree-optimization/81248
+ 	* tree-sra.c (splice_param_accesses): Remove size check.
+ 	(decide_one_param_reduction): Fix size check.
+ 	* gimple-pretty-print.c (dump_profile): Silence warning.
+ 	* params.def (PARAM_IPA_SRA_PTR_GROWTH_FACTOR): Adjust description.
+ 
+ 2017-11-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/81307
+ 	* dbxout.c (lastlineno): New variable.
+ 	(dbx_debug_hooks): Use dbxout_switch_text_section as
+ 	switch_text_section debug hook.
+ 	(dbxout_function_end): Switch to current_function_section
+ 	rather than function_section.  If crtl->has_bb_partition,
+ 	output just one N_FUN, depending on in_cold_section_p.
+ 	(dbxout_source_line): Remember last lineno in lastlineno.
+ 	(dbxout_switch_text_section): New function.
+ 	(dbxout_function_decl): Adjust dbxout_block caller.
+ 	(dbx_block_with_cold_children): New function.
+ 	(dbxout_block): Return true if any LBRAC/RBRAC have been
+ 	emitted.  Use dbx_block_with_cold_children at depth == 0
+ 	in second partition.  Add PARENT_BLOCKNUM argument, pass
+ 	it optionally adjusted to children.  Output LBRAC/RBRAC
+ 	around recursive call only if the block is in the current
+ 	partition, if not and anything was output, emit empty
+ 	range LBRAC/RBRAC.
+ 	* final.c (final_scan_insn): Compute cold_function_name
+ 	before calling switch_text_section debug hook.  Call
+ 	that hook even if dwarf2out_do_frame if not emitting
+ 	dwarf debug info.
+ 
+ 	PR target/83100
+ 	* varasm.c (bss_initializer_p): Return true for DECL_COMMON
+ 	TREE_READONLY decls.
+ 
+ 2017-11-27  Markus Trippelsdorf  <markus@trippelsdorf.de>
+ 
+ 	PR rtl-optimization/82488
+ 	* expr.c (fixup_args_size_notes): Avoid signed integer overflow.
+ 
+ 2017-11-26  Julia Koval  <julia.koval@intel.com>
+ 
+ 	* config/i386/i386.c (processor_target_table): Add skylake_cost for
+ 	skylake-avx512.
+ 	* config/i386/x86-tune-costs.h (skylake_memcpy, skylake_memset,
+ 	skylake_cost): New.
+ 
+ 2017-11-26  Julia Koval  <julia.koval@intel.com>
+ 
+ 	* config/i386/driver-i386.c (host_detect_local_cpu):
+ 	Detect skylake-avx512.
+ 
+ 2017-11-26  Julia Koval  <julia.koval@intel.com>
+ 
+ 	* config.gcc: Add -march=cannonlake.
+ 	* config/i386/driver-i386.c (host_detect_local_cpu): Detect cannonlake.
+ 	* config/i386/i386-c.c (ix86_target_macros_internal): Handle cannonlake.
+ 	* config/i386/i386.c (processor_costs): Add m_CANNONLAKE.
+ 	(PTA_CANNONLAKE): New.
+ 	(processor_target_table): Add cannonlake.
+ 	(ix86_option_override_internal): Ditto.
+ 	(fold_builtin_cpu): Ditto.
+ 	(get_builtin_code_for_version): Handle cannonlake.
+ 	(M_INTEL_COREI7_CANNONLAKE): New.
+ 	* config/i386/i386.h (TARGET_CANNONLAKE, PROCESSOR_CANNONLAKE): New.
+ 	* doc/invoke.texi: Add -march=cannonlake.
+ 
+ 2017-11-14  Boris Kolpackov  <boris@codesynthesis.com>
+ 
+ 	* plugin.c (add_new_plugin): Use platform-specific library extensions.
+ 	(try_init_one_plugin): Alternative implementation for MinGW.
+ 	* Makefile.in (plugin_implib): New.
+ 	(gengtype-lex.c): Fix broken AIX workaround.
+ 	* configure: Regenerate.
+ 	* doc/plugins.texi: Document support for MinGW.
+ 
+ 2017-11-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/81553
+ 	* combine.c (simplify_if_then_else): In (if_then_else COND (OP Z C1) Z)
+ 	to (OP Z (mult COND (C1 * STORE_FLAG_VALUE))) optimization, if OP
+ 	is a shift where C1 has different mode than the whole shift, use C1's
+ 	mode for MULT rather than the shift's mode.
+ 
+ 	PR target/82848
+ 	* config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Don't fold
+ 	builtins not enabled in the currently selected ISA.
+ 
+ 2017-11-24  Jackson Woodruff  <jackson.woodruff@arm.com>
+ 
+ 	PR tree-optimization/71026
+ 	* tree-ssa-math-opts (is_division_by_square, is_square_of): New.
+ 	(insert_reciprocals): Change to insert reciprocals before a division
+ 	by a square and to insert the square of a reciprocal.
+ 	(execute_cse_reciprocals_1): Change to consider division by a square.
+ 	(register_division_in): Add importance parameter.
+ 
+ 2017-11-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/82402
+ 	* tree-vect-loop-manip.c (create_lcssa_for_virtual_phi): Properly
+ 	set SSA_NAME_OCCURS_IN_ABNORMAL_PHI.
+ 
+ 2017-11-24  Marc Glisse  <marc.glisse@inria.fr>
+ 
+ 	* match.pd (0-ptr): New transformation.
+ 
+ 2017-11-24  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR bootstrap/83015
+ 	* ipa-inline.c (inline_small_functions): Set current badnes correctly
+ 	when skipping checking.
+ 
+ 2017-11-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/83128
+ 	* tree-ssa-sccvn.c (fully_constant_vn_reference_p): Handle STRING_CSTs.
+ 	(vn_reference_lookup_3): Likewise.
+ 
+ 2017-11-24  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/83014
+ 	* ubsan.c (ubsan_type_descriptor): Use pp_unsigned_wide_integer
+ 	instead of pp_printf with HOST_WIDE_INT_PRINT_DEC.  Avoid calling
+ 	tree_to_uhwi twice.
+ 
+ 	* tree-object-size.c (pass_through_call): Use gimple_call_return_flags
+ 	ERF_RETURN*ARG* for builtins other than BUILT_IN_ASSUME_ALIGNED,
+ 	check for the latter with gimple_call_builtin_p.  Do not handle
+ 	BUILT_IN_STPNCPY_CHK which is not a pass through call.
+ 
+ 2017-11-24  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	* config/arm/arm_neon.h: Fix pragma GCC push_options before
+ 	vdot_u32.
+ 
+ 2017-11-23  Julia Koval  <julia.koval@intel.com>
+ 
+ 	* config/i386/avx512vbmi2intrin.h (_mm512_mask_expand_epi8,
+ 	_mm512_maskz_expand_epi8, _mm512_mask_expandloadu_epi8,
+ 	_mm512_maskz_expandloadu_epi8, _mm512_mask_expand_epi16,
+ 	_mm512_maskz_expand_epi16, _mm512_mask_expandloadu_epi16,
+ 	_mm512_maskz_expandloadu_epi16): New intrinsics.
+ 	* config/i386/avx512vbmi2vlintrin.h (_mm_mask_expand_epi8,
+ 	_mm_maskz_expand_epi8, _mm_mask_expandloadu_epi8,
+ 	_mm_maskz_expandloadu_epi8, _mm_mask_expand_epi16,
+ 	_mm_maskz_expand_epi16, _mm_mask_expandloadu_epi16,
+ 	_mm_maskz_expandloadu_epi16, _mm256_mask_expand_epi16,
+ 	_mm256_maskz_expand_epi16, _mm256_mask_expandloadu_epi16,
+ 	_mm256_maskz_expandloadu_epi16, _mm256_mask_expand_epi8,
+ 	_mm256_maskz_expand_epi8, _mm256_mask_expandloadu_epi8,
+ 	_mm256_maskz_expandloadu_epi8): New intrinsics.
+ 	* config/i386/i386-builtin-types.def (V64QI_FTYPE_PCV64QI_V64QI_UDI,
+ 	V32HI_FTYPE_PCV32HI_V32HI_USI, V32QI_FTYPE_PCV32QI_V32QI_USI,
+ 	V16HI_FTYPE_PCV16HI_V16HI_UHI, V16QI_FTYPE_PCV16QI_V16QI_UHI,
+ 	V8HI_FTYPE_PCV8HI_V8HI_UQI): New types.
+ 	* config/i386/i386.c (ix86_expand_special_args_builtin): Use new types.
+ 	* config/i386/sse.md (VI248_VLBW): New iterator.
+ 	(expand<mode>_mask, expand<mode>_maskz): New patterns.
+ 
+ 2017-11-23  Julia Koval  <julia.koval@intel.com>
+ 
+ 	* config.gcc (avx512vbmi2intrin.h, avx512vbmi2vlintrin): New headers.
+ 	* config/i386/avx512vbmi2intrin.h (_mm512_mask_compress_epi8,
+ 	_mm512_maskz_compress_epi8, _mm512_mask_compressstoreu_epi8,
+ 	_mm512_mask_compress_epi16, _mm512_maskz_compress_epi16,
+ 	_mm512_mask_compressstoreu_epi16): New.
+ 	* config/i386/avx512vbmi2vlintrin.h (_mm_mask_compress_epi8,
+ 	_mm_maskz_compress_epi8, _mm256_mask_compressstoreu_epi16,
+ 	_mm_mask_compress_epi16, _mm_maskz_compress_epi16,
+ 	_mm256_mask_compress_epi16, _mm256_maskz_compress_epi16,
+ 	_mm_mask_compressstoreu_epi8, _mm_mask_compressstoreu_epi16,
+ 	_mm256_mask_compress_epi8, _mm256_maskz_compress_epi8,
+ 	_mm256_mask_compressstoreu_epi8): New.
+ 	* config/i386/i386-builtin-types.def (VOID_FTYPE_PV64QI_V64QI_UDI,
+ 	VOID_FTYPE_PV32HI_V32HI_USI, VOID_FTYPE_PV32QI_V32QI_USI,
+ 	VOID_FTYPE_PV16QI_V16QI_UHI, VOID_FTYPE_PV16HI_V16HI_UHI,
+ 	VOID_FTYPE_PV8HI_V8HI_UQI): New types.
+ 	* config/i386/i386-builtin.def (__builtin_ia32_compressqi512_mask,
+ 	__builtin_ia32_compresshi512_mask, __builtin_ia32_compressqi256_mask,
+ 	__builtin_ia32_compressqi128_mask, __builtin_ia32_compresshi256_mask,
+ 	__builtin_ia32_compresshi128_mask,
+ 	__builtin_ia32_compressstoreuqi512_mask,
+ 	__builtin_ia32_compressstoreuhi512_mask,
+ 	__builtin_ia32_compressstoreuqi256_mask,
+ 	__builtin_ia32_compressstoreuqi128_mask,
+ 	__builtin_ia32_compressstoreuhi256_mask,
+ 	__builtin_ia32_compressstoreuhi128_mask): New builtins.
+ 	* config/i386/i386.c (ix86_init_mmx_sse_builtins): Create special args
+ 	array for flags2.
+ 	(ix86_expand_special_args_builtin): Handle new types.
+ 	(s4fma_expand): Handle new builtin array.
+ 	* config/i386/immintrin.h: Include new headers.
+ 	* config/i386/sse.md (VI12_AVX512VLBW): New iterator.
+ 	(compress<mode>_mask, compressstore<mode>_mask): New patterns.
+ 
+ 2017-11-23  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Formatting
+ 	fixes.  Declare temp and g variables at the top in order to avoid
+ 	{} in most of the cases.
+ 
+ 2017-11-23  Marc Glisse  <marc.glisse@inria.fr>
+ 
+ 	* match.pd (ptr-0): New transformation.
+ 
+ 2017-11-23  Charles Baylis  <charles.baylis@linaro.org>
+ 
+ 	* config/arm/arm-protos.h (enum arm_addr_mode_op): New.
+ 	(struct addr_mode_cost_table): New.
+ 	(struct tune_params): Add field addr_mode_costs.
+ 	* config/arm/arm.c (generic_addr_mode_costs): New.
+ 	(arm_slowmul_tune): Initialise addr_mode_costs field.
+ 	(arm_fastmul_tune): Likewise.
+ 	(arm_strongarm_tune): Likewise.
+ 	(arm_xscale_tune): Likewise.
+ 	(arm_9e_tune): Likewise.
+ 	(arm_marvell_pj4_tune): Likewise.
+ 	(arm_v6t2_tune): Likewise.
+ 	(arm_cortex_tune): Likewise.
+ 	(arm_cortex_a8_tune): Likewise.
+ 	(arm_cortex_a7_tune): Likewise.
+ 	(arm_cortex_a15_tune): Likewise.
+ 	(arm_cortex_a35_tune): Likewise.
+ 	(arm_cortex_a53_tune): Likewise.
+ 	(arm_cortex_a57_tune): Likewise.
+ 	(arm_exynosm1_tune): Likewise.
+ 	(arm_xgene1_tune): Likewise.
+ 	(arm_cortex_a5_tune): Likewise.
+ 	(arm_cortex_a9_tune): Likewise.
+ 	(arm_cortex_a12_tune): Likewise.
+ 	(arm_cortex_a73_tune): Likewise.
+ 	(arm_v7m_tune): Likewise.
+ 	(arm_cortex_m7_tune): Likewise.
+ 	(arm_v6m_tune): Likewise.
+ 	(arm_fa726te_tune): Likewise.
+ 	(arm_mem_costs): Use table lookup to calculate cost of addressing mode.
+ 
+ 2017-11-23  Charles Baylis  <charles.baylis@linaro.org>
+ 
+ 	* config/arm/arm.c (arm_mem_costs): New function.
+ 	(arm_rtx_costs_internal): Use arm_mem_costs.
+ 
+ 2017-11-23  Mark Wielaard  <mark@klomp.org>
+ 
+ 	* dwarf2out.c (init_sections_and_labels): Use generation to create
+ 	unique ranges_section_label and ranges_base_label. Return generation.
+ 	(output_rnglists): Add generation argument. Use generation to create
+ 	unique ranges labels.
+ 	(dwarf2out_finish): Get generation from init_sections_and_labels
+ 	and pass generation to output_rnglists.
+ 
+ 2017-11-23  Mike Stump  <mikestump@comcast.net>
+ 	    Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* doc/generic.texi (ANNOTATE_EXPR): Document 3rd operand.
+ 	* cfgloop.h (struct loop): Add unroll field.
+ 	* function.h (struct function): Add has_unroll bitfield.
+ 	* gimplify.c (gimple_boolify) <ANNOTATE_EXPR>: Deal with unroll kind.
+ 	(gimplify_expr) <ANNOTATE_EXPR>: Propagate 3rd operand.
+ 	* loop-init.c (pass_loop2::gate): Return true if cfun->has_unroll.
+ 	(pass_rtl_unroll_loops::gate): Likewise.
+ 	* loop-unroll.c (decide_unrolling): Tweak note message.  Skip loops
+ 	for which loop->unroll==1.
+ 	(decide_unroll_constant_iterations): Use note for consistency and
+ 	take loop->unroll into account.  Return early if loop->unroll is set.
+ 	Fix thinko in existing test.
+ 	(decide_unroll_runtime_iterations): Use note for consistency and
+ 	take loop->unroll into account.
+ 	(decide_unroll_stupid): Likewise.
+ 	* lto-streamer-in.c (input_cfg): Read loop->unroll.
+ 	* lto-streamer-out.c (output_cfg): Write loop->unroll.
+ 	* tree-cfg.c (replace_loop_annotate_in_block) <annot_expr_unroll_kind>:
+ 	New case.
+ 	(replace_loop_annotate) <annot_expr_unroll_kind>: Likewise.
+ 	(print_loop): Print loop->unroll if set.
+ 	* tree-core.h (enum annot_expr_kind): Add annot_expr_unroll_kind.
+ 	* tree-inline.c (copy_loops): Copy unroll and set cfun->has_unroll.
+ 	* tree-pretty-print.c (dump_generic_node) <annot_expr_unroll_kind>:
+ 	New case.
+ 	* tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Bail out if
+ 	loop->unroll is set and smaller than the trip count.  Otherwise bypass
+ 	entirely the heuristics if loop->unroll is set.  Remove dead note.
+ 	Fix off-by-one bug in other note.
+ 	(try_peel_loop): Bail out if loop->unroll is set.  Fix formatting.
+ 	(tree_unroll_loops_completely_1): Force unrolling if loop->unroll
+ 	is greater than 1.
+ 	(tree_unroll_loops_completely): Make static.
+ 	(pass_complete_unroll::execute): Use correct type for variable.
+ 	(pass_complete_unrolli::execute): Fix formatting.
+ 	* tree.def (ANNOTATE_EXPR): Add 3rd operand.
+ 
+ 2017-11-23  Sergey Shalnov  <Sergey.Shalnov@intel.com>
+ 
+ 	* config/i386/i386.h (TARGET_PREFER_AVX256): Also
+ 	enable when TARGET_PREFER_AVX128 is set.
+ 
+ 2017-11-23  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* ipa-profile.c (ipa_propagate_frequency_1): Use count instead of
+ 	frequency.
+ 	* cgraph.c (cgraph_edge::dump_edge_flags): Dump sreal frequencies.
+ 	(cgraph_edge::maybe_hot_p): Use sreal frequencies.
+ 
+ 2017-11-23  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* ipa-fnsummary.c (record_modified_bb_info): Use sreal
+ 	frequencies. Fix estimation of aggregate parameters.
+ 
+ 2017-11-23  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* cgraphclones.c (cgraph_node::create_clone): Fix updating of profile
+ 	when inlining.
+ 
+ 2017-11-23  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	* config/sh/sh.h (ASM_OUTPUT_ADDR_VEC_ELT): Wrap in "do {} while (0)".
+ 
+ 2017-11-23  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	* config/ft32/ft32.h (ASM_OUTPUT_ADDR_VEC_ELT): Remove semicolon after
+ 	macro.
+ 
+ 2017-11-23  Oleg Endo  <olegendo@gcc.gnu.org>
+ 
+ 	PR target/83111
+ 	* config/sh/sh.md (udivsi3, divsi3, sibcall_value_pcrel,
+ 	sibcall_value_pcrel_fdpic): Use local variable instead of
+ 	operands[3].
+ 	(calli_tbr_rel): Add missing operand 2.
+ 	(call_valuei_tbr_rel): Add missing operand 3.
+ 
+ 2017-11-23  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/82253
+ 	* expr.c (expand_assignment): For CONCAT to_rtx, complex type from and
+ 	bitpos/bitsize covering the whole destination, use store_expr only if
+ 	the complex mode is the same.  Otherwise, use expand_normal and if
+ 	it returns CONCAT, subreg each part separately instead of trying to
+ 	subreg the whole result.
+ 
+ 2017-11-23  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/23094
+ 	* tree-ssa-sccvn.c (vuse_ssa_val): Handle VN_TOP when we
+ 	come here from walking over backedges in the first iteration.
+ 	(vn_reference_lookup_3): Skip clobbers that store the same value.
+ 
+ 2017-11-23  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/81403
+ 	* tree-ssa-pre.c (get_representative_for): Add parameter specifying
+ 	a block we need a leader relative to.
+ 	(phi_translate_1): For nary processing require a leader from
+ 	get_representative_for given we run expression simplification
+ 	using match-and-simplify.  Remove previous fix.
+ 
+ 2017-11-22  Jeff Law  <law@redhat.com>
+ 
+ 	* gimple-ssa-evrp-analyze.c (evrp_range_analyzer::try_find_new_range):
+ 	Use new method allocate_value_range rather than accessing the
+ 	vrp_value_range_pool data member directly.
+ 	* tree-vrp.c (simplify_stmt_for_jump_threading): Tweak slightly
+ 	to use extract_range_from_stmt method to avoid need for
+ 	extract_range_from_assignment method.
+ 	(vrp_prop::vrp_finalize): Use set_lattice_propagation_complete
+ 	method rather than setting values_propgated data member directly.
+ 	* vr-values.h (class vr_values): Privatize vrp_value_range_pool,
+ 	and values propagated data members and extract_range_from_assignment
+ 	method.  Reorder private data members to conform to standards.
+ 	Add new methods set_lattice_propagation_complete and
+ 	allocate_value_range.
+ 
+ 2017-11-22  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR rtl-optimization/83030
+ 	* doc/rtl.texi (Flags in an RTL Expression): Alphabetize, add entry
+ 	for CROSSING_JUMP_P and mention usage of 'jump' for JUMP_INSNs.
+ 	(Insns): Delete entry for REG_CROSSING_JUMP in register notes.
+ 	* bb-reorder.c (update_crossing_jump_flags): Do not test whether the
+ 	CROSSING_JUMP_P flag is already set before setting it.
+ 	* cfgrtl.c (fixup_partition_crossing): Likewise.
+ 	* reorg.c (relax_delay_slots): Do not consider a CROSSING_JUMP_P
+ 	insn as useless.
+ 
+ 2017-11-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* simplify-rtx.c (simplify_binary_operation_1) <case VEC_SERIES>:
+ 	Handle the case where both arguments are using gen_const_vec_series.
+ 
+ 2017-11-22  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR c++/62170
+ 	* pretty-print.c (pp_format): Move quoting implementation to
+ 	pp_begin_quote and pp_end_quote.  Update pp_format_decoder call
+ 	to pass address of "quote" local.
+ 	(pp_begin_quote): New function.
+ 	(pp_end_quote): New function.
+ 	* pretty-print.h (printer_fn): Convert penultimate param from bool
+ 	to bool *.
+ 	(pp_begin_quote): New decl.
+ 	(pp_end_quote): New decl.
+ 	* tree-diagnostic.c (default_tree_printer): Convert penultimate
+ 	param from bool to bool *.
+ 	* tree-diagnostic.h (default_tree_printer): Likewise.
+ 
+ 2017-11-22  Jeff Law  <law@redhat.com>
+ 
+ 	* gimple-ssa-evrp-analyze.c (evrp_range_analyzer::evrp_range_analyzer)
+ 	Initialize vr_values.
+ 	(evrp_range_analyzer::try_find_new_range): Call methods attached to
+ 	vr_values via vr_values class instance rather than delegators.
+ 	(evrp_range_analyzer::record_ranges_from_phis): Likewise.
+ 	(evrp_range_analyzer::record_ranges_from_stmt): Likewise.
+ 	(evrp_range_analyzer::push_value_range): Likewise.
+ 	(evrp_range_analyzer::pop_value_range): Likewise.
+ 	* gimple-ssa-evrp-analyze.h (class evrp_range_analyzer): Remove
+ 	most delegators.  Those remaining are exposed as public interfaces.
+ 	Make vr_values a pointer and private.
+ 	(evrp_range_analyzer::~evrp_range_analyzer): Delete the attached
+ 	vr_values.
+ 	(evrp_range_analyzer::get_vr_value): New method.
+ 	* gimple-ssa-evrp.c (class evrp_folder): Use DISABLE_COPY_AND_ASSIGN.
+ 	(evrp_folder::evrp_folder): New ctor to initialize vr_values.
+ 	(class evrp_dom_walker): Attach evrp_folder class, initialize
+ 	it in the ctor.  Remove temporary delegators.
+ 	(evrp_dom_walker::before_dom_children): Call methods in attached
+ 	evrp_range_analyzer class via class instance pointer.  Use
+ 	free value_range_constant_singleton to remove need for
+ 	op_with_constant_singleton_value delegator method.  Do not
+ 	create a vrp_prop class instance for every call!  Narrow
+ 	scope of a couple variables.
+ 	(evrp_dom_walker::cleanup): Call methods in attached
+ 	evrp_range_analyzer class via class instance pointer.
+ 	* vr-values.h (class vr_values): Privatize many methods and
+ 	data members.
+ 
+ 2017-11-22  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* tree.def (REDUC_MAX_EXPR, REDUC_MIN_EXPR, REDUC_PLUS_EXPR): Delete.
+ 	* cfgexpand.c (expand_debug_expr): Remove handling for them.
+ 	* expr.c (expand_expr_real_2): Likewise.
+ 	* fold-const.c (const_unop): Likewise.
+ 	* optabs-tree.c (optab_for_tree_code): Likewise.
+ 	* tree-cfg.c (verify_gimple_assign_unary): Likewise.
+ 	* tree-inline.c (estimate_operator_cost): Likewise.
+ 	* tree-pretty-print.c (dump_generic_node): Likewise.
+ 	(op_code_prio): Likewise.
+ 	(op_symbol_code): Likewise.
+ 	* internal-fn.def (DEF_INTERNAL_SIGNED_OPTAB_FN): Define.
+ 	(IFN_REDUC_PLUS, IFN_REDUC_MAX, IFN_REDUC_MIN): New internal functions.
+ 	* internal-fn.c (direct_internal_fn_optab): New function.
+ 	(direct_internal_fn_array, direct_internal_fn_supported_p
+ 	(internal_fn_expanders): Handle DEF_INTERNAL_SIGNED_OPTAB_FN.
+ 	* fold-const-call.c (fold_const_reduction): New function.
+ 	(fold_const_call): Handle CFN_REDUC_PLUS, CFN_REDUC_MAX and
+ 	CFN_REDUC_MIN.
+ 	* tree-vect-loop.c: Include internal-fn.h.
+ 	(reduction_code_for_scalar_code): Rename to...
+ 	(reduction_fn_for_scalar_code): ...this and return an internal
+ 	function.
+ 	(vect_model_reduction_cost): Take an internal_fn rather than
+ 	a tree_code.
+ 	(vect_create_epilog_for_reduction): Likewise.  Build calls rather
+ 	than assignments.
+ 	(vectorizable_reduction): Use internal functions rather than tree
+ 	codes for the reduction operation.  Update calls to the functions
+ 	above.
+ 	* config/aarch64/aarch64-builtins.c (aarch64_gimple_fold_builtin):
+ 	Use calls to internal functions rather than REDUC tree codes.
+ 	* config/aarch64/aarch64-simd.md: Update comment accordingly.
+ 
+ 2017-11-22  Olivier Hainque  <hainque@adacore.com>
+ 
+ 	* config/vxworks.c (vxworks_override_options): Pick default
+ 	dwarf version from macro value, VXWORKS_DWARF_VERSION_DEFAULT.
+ 	* config/vxworks.h: Define VXWORKS_DWARF_VERSION_DEFAULT and
+ 	DWARF_GNAT_ENCODINGS_DEFAULT.
+ 	* config/vxworksae.h: Likewise.
+ 
+ 2017-11-22  Marc Glisse  <marc.glisse@inria.fr>
+ 
+ 	PR tree-optimization/83104
+ 	* vr-values.c (simplify_stmt_using_ranges): Check integral argument,
+ 	not result.
+ 
+ 2017-11-22  Marek Polacek  <polacek@redhat.com>
+ 	    H.J. Lu  <hongjiu.lu@intel.com>
+ 	    Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/60336
+ 	PR middle-end/67239
+ 	PR target/68355
+ 	* calls.c (initialize_argument_information): Call
+ 	warn_parameter_passing_abi target hook.
+ 	(store_one_arg): Use 0 for empty record size.  Don't push 0 size
+ 	argument onto stack.
+ 	(must_pass_in_stack_var_size_or_pad): Return false for empty types.
+ 	* common.opt: Update -fabi-version description.
+ 	* config/i386/i386.c (init_cumulative_args): Set cum->warn_empty.
+ 	(ix86_gimplify_va_arg): Call arg_int_size_in_bytes instead of
+ 	int_size_in_bytes.
+ 	(ix86_is_empty_record): New function.
+ 	(ix86_warn_parameter_passing_abi): New function.
+ 	(TARGET_EMPTY_RECORD_P): Redefine.
+ 	(TARGET_WARN_PARAMETER_PASSING_ABI): Redefine.
+ 	* config/i386/i386.h (CUMULATIVE_ARGS): Add warn_empty.
+ 	* doc/tm.texi: Regenerated.
+ 	* doc/tm.texi.in (TARGET_EMPTY_RECORD_P,
+ 	TARGET_WARN_PARAMETER_PASSING_ABI): Add.
+ 	* dwarf2out.c (get_ultimate_context): Move to tree.c.
+ 	* explow.c (hard_function_value): Call arg_int_size_in_bytes
+ 	instead of int_size_in_bytes.
+ 	* expr.c (copy_blkmode_to_reg): Likewise.
+ 	* function.c (aggregate_value_p): Return 0 for empty types.
+ 	(assign_parm_find_entry_rtl): Call warn_parameter_passing_abi
+ 	target hook.
+ 	(locate_and_pad_parm): Call arg size_in_bytes instead
+ 	size_in_bytes.
+ 	* lto-streamer-out.c (hash_tree): Hash TYPE_EMPTY_P and DECL_PADDING_P.
+ 	* stor-layout.c (finalize_type_size): Set TYPE_EMPTY_P.
+ 	* target.def (empty_record_p, warn_parameter_passing_abi): New target
+ 	hooks.
+ 	* targhooks.c (hook_void_CUMULATIVE_ARGS_tree): New hook.
+ 	(std_gimplify_va_arg_expr): Skip empty records.  Call
+ 	arg_size_in_bytes instead size_in_bytes.
+ 	* targhooks.h (hook_void_CUMULATIVE_ARGS_tree): Declare.
+ 	* tree-core.h (tree_type_common): Add empty_flag.
+ 	(tree_decl_common): Update comments.
+ 	* tree-streamer-in.c (unpack_ts_decl_common_value_fields): Stream
+ 	DECL_PADDING_P.
+ 	(unpack_ts_type_common_value_fields): Stream TYPE_EMPTY_P.
+ 	* tree-streamer-out.c (pack_ts_decl_common_value_fields): Stream
+ 	DECL_PADDING_P.
+ 	(pack_ts_type_common_value_fields): Stream TYPE_EMPTY_P.
+ 	* tree.c (default_is_empty_type): New function.
+ 	(default_is_empty_record): New function.
+ 	(arg_int_size_in_bytes): New function.
+ 	(arg_size_in_bytes): New function.
+ 	(get_ultimate_context): New function.
+ 	* tree.h: Define TYPE_EMPTY_P, DECL_PADDING_P and
+ 	TRANSLATION_UNIT_WARN_EMPTY_P.
+ 	(default_is_empty_record, arg_int_size_in_bytes,
+ 	arg_size_in_bytes, get_ultimate_context): Declare.
+ 
+ 2017-11-22  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	* config/arm/arm.c (cmse_clear_registers): New function.
+ 	(cmse_nonsecure_call_clear_caller_saved): Replace register clearing
+ 	code by call to cmse_clear_registers.
+ 	(cmse_nonsecure_entry_clear_before_return): Likewise.
+ 
+ 2017-11-22  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* config/arm/arm_neon.h (vdot_u32, vdotq_u32)
+ 	(vdot_s32, vdotq_s32): New.
+ 	(vdot_lane_u32, vdotq_lane_u32): New.
+ 	(vdot_lane_s32, vdotq_lane_s32): New.
+ 
+ 
+ 2017-11-22  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	PR middle-end/82547
+ 	* wide-int.cc (wi::add_large, wi::sub_large): Fix overflow detection
+ 	for unsigned values with fewer HWIs than the precision.
+ 	(test_overflow): New function.
+ 	(wide_int_cc_tests): Call it.
+ 
+ 2017-11-22  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* emit-rtl.c (init_derived_machine_modes): Make sure ptr_mode
+ 	has the same mode class as Pmode.
+ 
+ 2017-11-22  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	* config/arm/arm.c (cmse_nonsecure_call_clear_caller_saved): Get rid of
+ 	padding_bits_to_clear_ptr.
+ 	(cmse_nonsecure_entry_clear_before_return): Likewise.
+ 
+ 2017-11-22  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	* config/arm/arm.c (cmse_nonsecure_call_clear_caller_saved): Use
+ 	auto_sbitap instead of integer bitfield to control register needing
+ 	clearing.
+ 
+ 2017-11-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/83044
+ 	* tree-vrp.c (vrp_prop::check_array_ref): If eltsize is not
+ 	INTEGER_CST or is 0, clear up_bound{,_p1} and later ignore tests
+ 	that need the upper bound.  Subtract offset from
+ 	get_addr_base_and_unit_offset only if positive and subtract it
+ 	before division by eltsize rather than after it.
+ 
+ 	PR debug/83084
+ 	* valtrack.c (propagate_for_debug_subst, propagate_for_debug): Reset
+ 	debug insns if they would contain UNSPEC_VOLATILE or volatile asm.
+ 	(dead_debug_insert_temp): Likewise, but also ignore even non-volatile
+ 	asm.
+ 
+ 	PR middle-end/82875
+ 	* optabs.c (expand_doubleword_mult, expand_binop): Before calling
+ 	expand_binop with *mul_widen_optab, make sure at least one of the
+ 	operands doesn't have VOIDmode.
+ 
+ 	PR debug/83034
+ 	* dwarf2out.c (mem_loc_descriptor): Handle VEC_SERIES.
+ 
+ 	PR rtl-optimization/82044
+ 	PR tree-optimization/82042
+ 	* dse.c (record_store): Check for overflow.
+ 	(check_mem_read_rtx): Properly check for overflow if width == -1, call
+ 	add_wild_read instead of clear_rhs_from_active_local_stores on
+ 	overflow and log it into dump_file.
+ 
+ 2017-11-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gimple-iterator.c (gimple_find_edge_insert_loc): Ignore
+ 	fake edges to exit when looking for a place to insert.
+ 	* tree-ssa-pre.c (clear_expression_ids): Inline into callers
+ 	and remove.
+ 	(insert_into_preds_of_block): Commit edge insertion immediately,
+ 	assert that doesn't require new BBs.
+ 	(fini_pre): Release expressions.
+ 	(pass_pre::execute): Shuffle things around a bit, if the fn
+ 	is too large do not compute AVAIL either as this is really the
+ 	quadratic bit.
+ 
+ 2017-11-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/83089
+ 	* tree-if-conv.c (pass_if_conversion::execute): If anything
+ 	changed reset SCEV and free the number of iteration estimates.
+ 
+ 2017-11-21  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR tree-optimization/82945
+ 	* calls.h (warn_nonstring_bound): Remove unused function.
+ 
+ 2017-11-21  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR tree-optimization/82945
+ 	* builtins.c (expand_builtin_strlen): Call maybe_warn_nonstring_arg.
+ 	* calls.h (maybe_warn_nonstring_arg): Declare new function.
+ 	* calls.c (get_attr_nonstring_decl, maybe_warn_nonstring_arg): New
+ 	functions.
+ 	(initialize_argument_information): Call maybe_warn_nonstring_arg.
+ 	* calls.h (get_attr_nonstring_decl): Declare new function.
+ 	* doc/extend.texi (attribute nonstring): Update.
+ 	* gimple-fold.c (gimple_fold_builtin_strncpy): Call
+ 	get_attr_nonstring_decl and handle it.
+ 	* tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Same.  Improve
+ 	detection of nul-termination.
+ 	(strlen_to_stridx): Change to a pointer.
+ 	(handle_builtin_strlen, handle_builtin_stxncpy): Adjust.
+ 	(pass_strlen::execute): Same.
+ 
+ 2017-11-21  Sergey Shalnov  <Sergey.Shalnov@intel.com>
+ 
+ 	* config/i386/i386-opts.h (enum prefer_vector_width): Added new enum
+ 	for the new option -mprefer-vector-width=[none|128|256|512].
+ 	* config/i386/i386.c (ix86_target_string): remove old style options
+ 	-mprefer-avx256 and make -mprefer-avx128 as alias.
+ 	(ix86_option_override_internal):  Apply defaults for the
+ 	-mprefer-vector-width=[128|256] option.
+ 	* config/i386/i386.h (TARGET_PREFER_AVX128, TARGET_PREFER_AVX256):
+ 	Implement macros to work with -mprefer-vector-width=.
+ 	* config/i386/i386.opt: Implemented option
+ 	-mprefer-vector-width=[none|128|256|512].
+ 	* doc/invoke.texi: Documentation for
+ 	-mprefer-vector-width=[none|128|256|512].
+ 
+ 2017-11-21  Pat Haugen  <pthaugen@us.ibm.com>
+ 
+ 	* config/rs6000/ppc-asm.h (f50, vs50): Fix values.
+ 
+ 2017-11-21  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* doc/invoke.texi (-Wmaybe-uninitialized): Rephrase for clarity.
+ 
+ 2017-11-21  Marc Glisse  <marc.glisse@inria.fr>
+ 
+ 	* doc/generic.texi: Document POINTER_DIFF_EXPR, update
+ 	POINTER_PLUS_EXPR.
+ 	* cfgexpand.c (expand_debug_expr): Handle POINTER_DIFF_EXPR.
+ 	* expr.c (expand_expr_real_2): Likewise.
+ 	* fold-const.c (const_binop, fold_addr_of_array_ref_difference,
+ 	fold_binary_loc): Likewise.
+ 	* match.pd (X-X, P+(Q-P), &D-P, (P+N)-P, P-(P+N), (P+M)-(P+N),
+ 	P-Q==0, -(A-B), X-Z<Y-Z, (X-Z)-(Y-Z), Z-X<Z-Y, (Z-X)-(Z-Y),
+ 	(A-B)+(C-A)): New transformations for POINTER_DIFF_EXPR, based on
+ 	MINUS_EXPR transformations.
+ 	* optabs-tree.c (optab_for_tree_code): Handle POINTER_DIFF_EXPR.
+ 	* tree-cfg.c (verify_expr, verify_gimple_assign_binary): Likewise.
+ 	* tree-inline.c (estimate_operator_cost): Likewise.
+ 	* tree-pretty-print.c (dump_generic_node, op_code_prio,
+ 	op_symbol_code): Likewise.
+ 	* tree-vect-stmts.c (vectorizable_operation): Likewise.
+ 	* vr-values.c (extract_range_from_binary_expr): Likewise.
+ 	* varasm.c (initializer_constant_valid_p_1): Likewise.
+ 	* tree.def: New tree code POINTER_DIFF_EXPR.
+ 
+ 2017-11-21  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.md (*bswap<mode>2_movbe): Add
+ 	integer suffix to movbe mnemonic.
+ 	(*bswaphi2_movbe): Ditto.
+ 	(bswaphi_lowpart): Merge with *bswaphi_lowpart_1.
+ 
+ 2017-11-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/83045
+ 	* tree-cfg.c (pass_warn_function_return::execute): Formatting fix.
+ 	Also warn if seen __builtin_unreachable () call with BUILTINS_LOCATION.
+ 	Use LOCATION_LOCUS when comparing against UNKNOWN_LOCATION.
+ 
+ 2017-11-21  Martin Liska  <mliska@suse.cz>
+ 
+ 	* tree-inline.c (expand_call_inline): Remove not needed
+ 	xstrdup_for_dump.
+ 
+ 2017-11-21  James Cowgill  <James.Cowgill@imgtec.com>
+ 	    Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/82880
+ 	* config/mips/frame-header-opt.c (mips_register_frame_header_opt):
+ 	Remove static keyword from f variable.
+ 
+ 2017-11-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/83086
+ 	* gimple-ssa-store-merging.c
+ 	(imm_store_chain_info::try_coalesce_bswap): Test this_n.base_addr
+ 	rather than n.base_addr.
+ 
+ 2017-11-21  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR rtl-optimization/82044
+ 	PR tree-optimization/82042
+ 	* dse.c (check_mem_read_rtx): Check for overflow.
+ 
+ 2017-11-21  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* tree-ssa-threadbackward.c (find_jump_threads_backwards): Fix
+ 	typo in comment.
+ 
+ 2017-11-21  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* cfgrtl.c (force_nonfallthru_and_redirect): Don't split a call
+ 	and its corresponding call arg location note.
+ 
+ 2017-11-21  Claudiu Zissulescu  <claziss@synopsys.com>
+ 	    Andrew Burgess  <andrew.burgess@embecosm.com>
+ 
+ 	* config/arc/arc-protos.h (arc_compute_frame_size): Delete
+ 	declaration.
+ 	(arc_return_slot_offset): Likewise.
+ 	(arc_eh_return_address_location): New declaration.
+ 	* config/arc/arc.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Define.
+ 	(MUST_SAVE_REGISTER): Add exception handler case.
+ 	(MUST_SAVE_RETURN_ADDR): Likewise.
+ 	(arc_frame_pointer_required): Likewise.
+ 	(arc_frame_pointer_needed): New function.
+ 	(arc_compute_frame_size): Changed.
+ 	(arc_expand_prologue): Likewise.
+ 	(arc_expand_epilogue): Likewise.
+ 	(arc_initial_elimination_offset): Likewise.
+ 	(arc_return_slot_offset): Delete.
+ 	(arc_eh_return_address_location): New function.
+ 	(arc_builtin_setjmp_frame_value): Likewise.
+ 	* config/arc/arc.h (EH_RETURN_DATA_REGNO): Use 2 registers.
+ 	(EH_RETURN_STACKADJ_RTX): Define.
+ 	(EH_RETURN_HANDLER_RTX): Likewise.
+ 	* config/arc/arc.md (eh_return): Delete.
+ 
+ 2017-11-21  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* print-tree.h (debug_vec_tree): Remove prototype.
+ 	* gdbinit.in (pvt): Remove macro.
+ 
+ 2017-11-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/83047
+ 	* gimple-ssa-store-merging.c
+ 	(imm_store_chain_info::output_merged_store): If the loads with the
+ 	same vuse are in different basic blocks, for load_gsi pick a load
+ 	location that is dominated by the other loads.
+ 
+ 	PR c++/83059
+ 	* config/i386/i386.c (ix86_memmodel_check): Start
+ 	-Winvalid-memory-model diagnostics with lowercase letter.
+ 
+ 	PR debug/82718
+ 	* dwarf2out.c (dw_loc_list): If crtl->has_bb_partition, temporarily
+ 	set in_cold_section_p to the partition containing loc_list->first.
+ 	When seeing loc_list->last_before_switch node, update secname and
+ 	perform range_across_switch second partition handling only after that.
+ 
+ 	PR debug/82933
+ 	* run-rtl-passes.c: Include debug.h.
+ 	(run_rtl_passes): Call debug_hooks->assembly_start.
+ 	* dwarf2out.c (dwarf2out_assembly_start): Return early if invoked
+ 	multiple times.
+ 
+ 	PR target/82981
+ 	* internal-fn.c (expand_mul_overflow): Use OPTAB_WIDEN instead of
+ 	OPTAB_DIRECT in calls to expand_simple_binop.
+ 
+ 2017-11-20  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR c/81404
+ 	* Makefile.in (C_COMMON_OBJS): Add c-family/known-headers.o.
+ 
+ 2017-11-20  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR c++/72786
+ 	* spellcheck.h (best_match::blithely_get_best_candidate): New
+ 	accessor.
+ 
+ 2017-11-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* config/i386/i386.c (parse_mtune_ctrl_str): Start diagnostics
+ 	with lower case letter.
+ 
+ 2017-11-20  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.md (bswaphi2): New expander.
+ 	(*bswaphi2_movbe): New insn pattern.
+ 	(bswaphi -> rorhi pepehole2): New peephole pattern.
+ 
+ 2017-11-20  Jeff Law  <law@redhat.com>
+ 
+ 	* Makefile.in (OBJS): Add gimple-ssa-evrp-analyze.o.
+ 	* gimple-ssa-evrp-analyze.c: New file pulled from gimple-ssa-evrp.c.
+ 	* gimple-ssa-evrp-analyze.h: New file pulled from gimple-ssa-evrp.c.
+ 	* gimple-ssa-evrp.c: Remove bits moved into new files.  Include
+ 	gimple-ssa-evrp-analyze.h.
+ 
+ 	* gimple-ssa-evrp.c (evrp_dom_walker::before_dom_children): Do not
+ 	set BB_VISITED here.
+ 	(evrp_range_analyzer::enter): Set BB_VISITED here instead.
+ 
+ 2017-11-20  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-predcom.c: Add general comment on Store-Store chains.
+ 	(split_data_refs_to_components): Postpone clearing eliminate_store_p
+ 	flag in component.
+ 	(get_chain_last_ref_at): Rename into...
+ 	(get_chain_last_write_at): ...this.
+ 	(get_chain_last_write_before_load): New function.
+ 	(add_ref_to_chain): Promote type of chain from CT_STORE_LOAD to
+ 	CT_STORE_STORE when write reference is added.
+ 	(determine_roots_comp): Support load ref in CT_STORE_STORE chains.
+ 	(is_inv_store_elimination_chain): Update get_chain_last_write_at call.
+ 	(initialize_root_vars_store_elim_1): Ditto.
+ 	(initialize_root_vars_store_elim_2): Ditto.  Replace rhs once default
+ 	definition is created.
+ 	(execute_pred_commoning_chain): Support load ref in CT_STORE_STORE
+ 	chain by replacing it with dominant stored value.
+ 
+ 2017-11-20  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-predcom.c (add_ref_to_chain): Remove check on distance.
+ 
+ 2017-11-20  Marc Glisse  <marc.glisse@inria.fr>
+ 
+ 	* vr-values.c (extract_range_from_binary_expr): Use a full range
+ 	for VR_VARYING.
+ 
+ 2017-11-20  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	* config/arm/arm.md (R4_REGNUM): Define constant.
+ 	(nonsecure_call_internal): Remove r4 clobber.
+ 	(nonsecure_call_value_internal): Likewise.
+ 	* config/arm/thumb1.md (nonsecure_call_reg_thumb1_v5): Remove second
+ 	clobber and resequence match_operands.
+ 	(nonsecure_call_value_reg_thumb1_v5): Likewise.
+ 	* config/arm/thumb2.md (nonsecure_call_reg_thumb2): Likewise.
+ 	(nonsecure_call_value_reg_thumb2): Likewise.
+ 
+ 2017-11-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/78821
+ 	* gimple-ssa-store-merging.c (find_bswap_or_nop_load): Give up
+ 	if base is TARGET_MEM_REF.  If base is not MEM_REF, set base_addr
+ 	to the address of the base rather than the base itself.
+ 	(find_bswap_or_nop_1): Just use pointer comparison for vuse check.
+ 	(find_bswap_or_nop_finalize): New function.
+ 	(find_bswap_or_nop): Use it.
+ 	(bswap_replace): Return a tree rather than bool, change first
+ 	argument from gimple * to gimple_stmt_iterator, allow inserting
+ 	into an empty sequence, allow ins_stmt to be NULL - then emit
+ 	all stmts into gsi.  Fix up MEM_REF address gimplification.
+ 	(pass_optimize_bswap::execute): Adjust bswap_replace caller.
+ 	(struct store_immediate_info): Add N and INS_STMT non-static
+ 	data members.
+ 	(store_immediate_info::store_immediate_info): Initialize them
+ 	from newly added ctor args.
+ 	(merged_store_group::apply_stores): Formatting fixes.  Sort by
+ 	bitpos at the end.
+ 	(stmts_may_clobber_ref_p): For stores call also
+ 	refs_anti_dependent_p.
+ 	(gather_bswap_load_refs): New function.
+ 	(imm_store_chain_info::try_coalesce_bswap): New method.
+ 	(imm_store_chain_info::coalesce_immediate_stores): Use it.
+ 	(split_group): Handle LROTATE_EXPR and NOP_EXPR rhs_code specially.
+ 	(imm_store_chain_info::output_merged_store): Fail if number of
+ 	new estimated stmts is bigger or equal than old.  Handle LROTATE_EXPR
+ 	and NOP_EXPR rhs_code.
+ 	(pass_store_merging::process_store): Compute n and ins_stmt, if
+ 	ins_stmt is non-NULL and the store rhs is otherwise invalid, use
+ 	LROTATE_EXPR rhs_code.  Pass n and ins_stmt to store_immediate_info
+ 	ctor.
+ 	(pass_store_merging::execute): Calculate dominators.
+ 
+ 	* tree-ssa-math-opts.c (nop_stats, bswap_stats, struct symbolic_number,
+ 	BITS_PER_MARKER, MARKER_MASK, MARKER_BYTE_UNKNOWN, HEAD_MARKER, CMPNOP,
+ 	CMPXCHG, do_shift_rotate, verify_symbolic_number_p,
+ 	init_symbolic_number, find_bswap_or_nop_load, perform_symbolic_merge,
+ 	find_bswap_or_nop_1, find_bswap_or_nop, pass_data_optimize_bswap,
+ 	class pass_optimize_bswap, bswap_replace,
+ 	pass_optimize_bswap::execute): Moved to ...
+ 	* gimple-ssa-store-merging.c: ... this file.
+ 	Include optabs-tree.h.
+ 	(nop_stats, bswap_stats, do_shift_rotate, verify_symbolic_number_p,
+ 	init_symbolic_number, find_bswap_or_nop_load, perform_symbolic_merge,
+ 	find_bswap_or_nop_1, find_bswap_or_nop, bswap_replace): Put into
+ 	anonymous namespace, remove static keywords.
+ 	(pass_optimize_bswap::gate): Test BITS_PER_UNIT == 8 here...
+ 	(pass_optimize_bswap::execute): ... rather than here.  Formatting fix.
+ 
+ 2017-11-20  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR bootstrap/83062
+ 	* ipa-inline.c (can_inline_edge_p): Fix typo in previous patch.
+ 
+ 2017-11-20  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* vec.h (debug_helper): New function.
+ 	(DEFINE_DEBUG_VEC): New macro.
+ 	* hash-set.h (debug_helper): New function.
+ 	(DEFINE_DEBUG_HASH_SET): New macro.
+ 	* cfg.c (debug_slim (edge)): New function.
+ 	Call DEFINE_DEBUG_VEC for edges.
+ 	Call DEFINE_DEBUG_HASH_SET for edges.
+ 	* cfghooks.c (debug_slim (basic_block)): New function.
+ 	Call DEFINE_DEBUG_VEC for basic blocks.
+ 	Call DEFINE_DEBUG_HASH_SET for basic blocks.
+ 	* print-tree.c (debug_slim): New function to handle trees.
+ 	Call DEFINE_DEBUG_VEC for trees.
+ 	Call DEFINE_DEBUG_HASH_SET for trees.
+ 	(debug (vec<tree, va_gc>) &): Remove.
+ 	(debug (<vec<tree, va_gc>) *): Remove.
+ 	* print-rtl.c (debug_slim): New function to handle const_rtx.
+ 	Call DEFINE_DEBUG_VEC for rtx_def.
+ 	Call DEFINE_DEBUG_VEC for rtx_insn.
+ 	Call DEFINE_DEBUG_HASH_SET for rtx_def.
+ 	Call DEFINE_DEBUG_HASH_SET for rtx_insn.
+ 	* sel-sched-dump.c (debug (vec<rtx_insn *> &): Remove.
+ 	(debug (vec<rtx_insn *> *ptr): Remove.
+ 	(debug_insn_vector): Remove.
+ 	* stor-layout.c (debug_rli): Call debug() instead of debug_vec_tree.
+ 
+ 2017-11-20  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	PR rtl-optimization/82020
+ 	* simplify-rtx.c (simplify_ternary_operation): Fix comparison mode of
+ 	IF_THEN_ELSE condition.
+ 
+ 2017-11-19  Jeff Law  <law@redhat.com>
+ 
+ 	* tree-ssa-dom.c (record_equivalences_from_phis): Fix handling
+ 	of degenerates resulting from ignoring an edge.
+ 
+ 2017-11-19  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR ipa/81360
+ 	* ipa-inline.c (can_inline_edge_p): Also check that caller is optimized
+ 
+ 2017-11-19  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR ipa/83001
+ 	* profile-count.c (profile_count::to_sreal_scale): Fix return value
+ 	for uninitialied counts.
+ 
+ 2017-11-19  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR ipa/60243
+ 	* tree-inline.c (estimate_num_insns): Set to 1 at least.
+ 
+ 2017-11-19  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR target/82713
+ 	* i386.c (ix86_builtin_vectorization_cost): Be ready for insane types.
+ 
+ 2017-11-19  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	* config/arc/arc.h (FUNCTION_PROFILER): Remove semicolon after
+ 	"do while (0)".
+ 
+ 2017-11-19  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	* config/phoenix.h (TARGET_OS_CPP_BUILTINS): Remove semicolon after
+ 	"do {} while (0)".
+ 
+ 2017-11-19  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	* config/visium/visium.h (ASM_OUTPUT_CASE_END): Remove semicolon after
+ 	macro body.
+ 
+ 2017-11-19  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	* config/ft32/ft32.h (REGISTER_TARGET_PRAGMAS): Remove semicolon after
+ 	"do {} while (0)".
+ 	* config/spu/spu.h (REGISTER_TARGET_PRAGMAS): Same.
+ 
+ 2017-11-19  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	* config/mcore/mcore-elf.h (MCORE_EXPORT_NAME): Remove semicolon after
+ 	"do {} while (0)".
+ 	* config/mcore/mcore.h (ASM_OUTPUT_ALIGNED_COMMON): After missing
+ 	semicolon after MCORE_EXPORT_NAME call.
+ 
+ 2017-11-19  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	PR target/82961
+ 	* vmsdbgout.c (vmsdbgout_early_finish): New function.
+ 	(vmsdbg_debug_hooks): Set early_finish field to vmsdbgout_early_finish.
+ 
+ 2017-11-18  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* cgraphclones.c (cgraph_edge::clone): Rename gcov_count to prof_count.
+ 	(cgraph_edge::clone): Cleanup updating of profile.
+ 	* ipa-cp.c (update_profiling_info): Likewise.
+ 	* ipa-inline-transform.c (inline_transform): Likewise.
+ 	* ipa-inline.c (inline_small_functions): Add missing space to dump.
+ 	* ipa-split.c (execute_split_functions): Do not split when function
+ 	is cold.
+ 	* predict.c (estimate_bb_frequencies): Cleanup updating of profile.
+ 	* profile-count.c (profile_count::dump): Add global0.
+ 	(profile_count::to_cgraph_frequency): Do not ICE when entry is
+ 	undefined.
+ 	(profile_count::to_sreal_scale): Likewise.
+ 	(profile_count::adjust_for_ipa_scaling): Fix typo in comment.
+ 	(profile_count::combine_with_ipa_count): New function.
+ 	* profile-count.h (profile_guessed_global0adjusted): New.
+ 	(profile_count::adjusted_zero): New.
+ 	(profile_count::global0adjusted): New.
+ 	(profile_count::combine_with_ipa_count): New.
+ 	* tree-inline.c (copy_edges_for_bb): Add NUM/DEN arugment;
+ 	correct profile of return block of split functions.
+ 	(copy_cfg_body): Remove unused profile_count.
+ 	(copy_body): Likewise.
+ 	(expand_call_inline): Update.
+ 	(tree_function_versioning): Update.
+ 
+ 2017-11-18  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* hash-set.h (hash_set::empty): New.
+ 	* tree-ssa-threadbackward.h: Delete.
+ 	* tree-ssa-threadbackward.c (class thread_jumps): New.
+ 	Move max_threaded_paths into class.
+ 	(fsm_find_thread_path): Remove arguments that are now in class.
+ 	(profitable_jump_thread_path): Rename to...
+ 	(thread_jumps::profitable_jump_thread_path): ...this.
+ 	(convert_and_register_jump_thread_path): Rename to...
+ 	(thread_jumps::convert_and_register_current_path): ...this.
+ 	(check_subpath_and_update_thread_path): Rename to...
+ 	(thread_jumps::check_subpath_and_update_thread_path): ...this.
+ 	(register_jump_thread_path_if_profitable): Rename to...
+ 	(thread_jumps::register_jump_thread_path_if_profitable): ...this.
+ 	(handle_phi): Rename to...
+ 	(thread_jumps::handle_phi): ...this.
+ 	(handle_assignment): Rename to...
+ 	(thread_jumps::handle_assignment): ...this.
+ 	(fsm_find_control_statement_thread_paths): Rename to...
+ 	(thread_jumps::fsm_find_control_statement_thread_paths): ...this.
+ 	(find_jump_threads_backwards): Rename to...
+ 	(thread_jumps::find_jump_threads_backwards): ...this.
+ 	Initialize path local data.
+ 	(pass_thread_jumps::execute): Call find_jump_threads_backwards
+ 	from within thread_jumps class.
+ 	(pass_early_thread_jumps::execute): Same.
+ 
+ 2017-11-17  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* cgraph.c (cgraph_node::dump): Do IPA sanity checking on IPA counts.
+ 
+ 2017-11-17  Steve Ellcey  <sellcey@cavium.com>
+ 
+ 	* config/aarch64/aarch64-simd.md (fnma<mode>4): Move neg operator
+ 	to canonical location.
+ 
+ 2017-11-17  Steve Ellcey  <sellcey@cavium.com>
+ 
+ 	PR target/81356
+ 	* config/aarch64/aarch64.c (aarch64_use_by_pieces_infrastructure_p):
+ 	Remove.
+ 	(TARGET_USE_BY_PIECES_INFRASTRUCTURE_P): Remove define.
+ 
+ 2017-11-17  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	* config/gnu-user.h (GNU_USER_TARGET_STARTFILE_SPEC): Use
+ 	rcrt1.o%s/grcrt1.o%s for -static-pie.
+ 
+ 2017-11-17  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* i386.c (ix86_multiplication_cost, ix86_division_cost,
+ 	ix86_shift_rotate_cost): Break out from ...
+ 	(ix86_rtx_costs): ... here.
+ 	(ix86_add_stmt_cost): Use rtx cost machinery to compute cost of
+ 	vector operations.
+ 
+ 2017-11-17  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* predict.c (determine_unlikely_bbs): Set cgraph node count to 0
+ 	when entry block was promoted unlikely.
+ 	(estimate_bb_frequencies): Increase frequency scale.
+ 	* profile-count.h (profile_count): Export precision info.
+ 
+ 2017-11-17  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* tree-tailcall.c (eliminate_tail_call): Be more careful about not
+ 	disturbin profile of entry block.
+ 
+ 2017-11-17  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* ipa-fnsummary.c (estimate_node_size_and_time): Be more tolerant for
+ 	roundoff errors.
+ 
+ 2017-11-17  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* ipa-cp.c (update_profiling_info): Handle conversion to local profile.
+ 	* tree-cfg.c (execute_fixup_cfg): Do fixup same way as inliner does.
+ 
+ 2017-11-17  Jeff Law  <law@redhat.com>
+ 
+ 	* gimple-ssa-evrp.c (class evrp_range_analyzer): New class extracted
+ 	from evrp_dom_walker class.  Various methods moved into new class.
+ 	(evrp_range_analyzer::evrp_range_analyzer): Constructor for new class.
+ 	(evrp_range_analyzer::enter): New method.
+ 	(evrp_range_analyzer::leave): New method.
+ 	(evrp_dom_walker): Remove delegators no longer needed by this class.
+ 	Replace vr_values data member with evrp_range_analyzer
+ 
+ 	* gimple-ssa-evrp.c (evrp_dom_walker::record_ranges_from_phis): New
+ 	method extracted from evrp_dom_walker::before_dom_children.
+ 	(evrp_dom_walker::record_ranges_from_stmt): Likewise.
+ 	(evrp_dom_walker::record_ranges_from_incoming_edge): Likewise.
+ 
+ 	* gimple-ssa-evrp.c (evrp_dom_walker): Add cleanup method.
+ 	Add private copy constructor and move assignment operators.
+ 	Privatize methods and class data where trivially possible.
+ 	(evrp_dom_walker::cleanup): New function, extracted from
+ 	execute_early_vrp.  Simplify access to class data.
+ 
+ 	* vr-values.h (get_output_for_vrp): Prototype.
+ 	* vr-values.c (get_output_for_vrp): New function extracted from
+ 	vrp_visit_assignment_or_call and extract_range_from_stmt.
+ 	(vrp_visit_assignment_or_call): Use get_output_for_vrp.  Simplify.
+ 
+ 2017-11-17  Luis Machado  <luis.machado@linaro.org>
+ 
+ 	* config/aarch64/aarch64.c
+ 	(qdf24xx_prefetch_tune) <default_opt_level>: Set to -1.
+ 	(qdf24xx_tunings) <autoprefetcher_model>: Set to
+ 	tune_params::AUTOPREFETCHER_WEAK.
+ 
+ 2017-11-17  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR target/82641
+ 	* config/arm/arm.c (arm_valid_target_attribute_rec):
+ 	Parse "arch=" and "+<ext>".
+ 	(arm_valid_target_attribute_tree): Re-init global options.
+ 	(arm_option_override): Make non-static.
+ 	(arm_options_perform_arch_sanity_checks): Make errors fatal.
+ 	* gcc/config/arm/arm-c.c (__ARM_FEATURE_CMSE): Support undef.
+ 	(__ARM_FEATURE_CRC32): Support undef.
+ 	* config/arm/arm_acle.h (__ARM_FEATURE_CRC32): Replace with pragma.
+ 	* doc/extend.texi (ARM Function Attributes): Add pragma and target.
+ 
+ 2017-11-17  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* gdbinit.in (break-on-diagnostic): New command.
+ 
+ 2017-11-17  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
+ 
+ 	* config/i386/i386.c (ix86_expand_epilogue): Change simple
+ 	return to indirect jump for EH return if control-flow
+ 	protection is enabled. Change explicit 'false' argument in
+ 	pro_epilogue_adjust_stack with a value of
+ 	flag_cf_protection.
+ 	* config/i386/i386.md (simple_return_indirect_internal):
+ 	Remove SImode restriction to support 64-bit.
+ 
+ 2017-11-17  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* combine.c (added_notes_insn): New.
+ 	(try_combine): Handle added_notes_insn like added_links_insn.
+ 	Rewrite return value code.
+ 	(distribute_notes): Set added_notes_insn to the earliest insn we added
+ 	a note to.
+ 
+ 2017-11-17  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR rtl-optimization/82621
+ 	* combine.c (try_combine): Do not split PARALLELs of two SETs if the
+ 	dest of one of those SETs is unused.
+ 
+ 2017-11-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR fortran/83017
+ 	* tree-core.h (enum annot_expr_kind): Add annot_expr_parallel_kind.
+ 	* tree-pretty-print.c (dump_generic_node): Handle
+ 	annot_expr_parallel_kind.
+ 	* tree-cfg.c (replace_loop_annotate_in_block): Likewise.
+ 	* gimplify.c (gimple_boolify): Likewise.
+ 
+ 2017-11-17  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
+ 
+ 	* config.gcc (extra_headers): Add cet.h for x86 targets.
+ 	* config/i386/cet.h: New file.
+ 	* doc/install.texi: Add --enable-cet/--disable-cet.
+ 
+ 2017-11-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/83017
+ 	* tree-parloops.c (MIN_PER_THREAD): Use --param parloops-min-per-thread.
+ 	(gen_parallel_loop): Properly count iterations.
+ 	(parallelize_loops): Handle loop->can_be_parallel independent
+ 	of flag_loop_parallelize_all.  Make static profitability test match
+ 	the runtime one.
+ 	* params.def (PARAM_PARLOOPS_MIN_PER_THREAD): New.
+ 	* invoke.texi (parloops-min-per-thread): Document.
+ 
+ 2017-11-17  Vineet Gupta  <vgupta@synopsys.com>
+ 
+ 	* config/arc/linux.h: GLIBC_DYNAMIC_LINKER update per glibc
+ 	upstreaming review comments.
+ 
+ 2017-11-17  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* expr.c (copy_blkmode_to_reg): Fix bitsize for targets
+ 	with fast unaligned access.
+ 	* doc/sourcebuild.texi (word_mode_no_slow_unalign): New.
+ 
+ 2017-11-17  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	* config/arm/arm.c (cmse_nonsecure_entry_clear_before_return): Allocate
+ 	to_clear_arg_regs_bitmap to the same size as to_clear_bitmap.
+ 
+ 2017-11-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-pre.c (phi_translate_1): Remove redundant constant
+ 	folding of references.
+ 
+ 2017-11-17  Qing Zhao  <qing.zhao@oracle.com>
+ 
+ 	PR middle-end/78809
+ 	* gimple-fold.c (gimple_fold_builtin_string_compare): Add handling
+ 	of replacing call to strncmp with corresponding call to strcmp when
+ 	meeting conditions.
+ 
+ 2017-11-17  Sergey Shalnov  <Sergey.Shalnov@intel.com>
+ 
+ 	* config/i386/x86-tune.def (X86_TUNE_AVX256_OPTIMAL): Add tuning
+ 	option prefer-avx256 for skylake-avx512 configuration.
+ 	* config/i386/i386.c (ix86_option_override_internal): Ditto.
+ 	(get_builtin_code_for_version): Ditto.
+ 
+ 2017-11-17  Chung-Ju Wu  <jasonwucj@gmail.com>
+ 	    Monk Chiang  <sh.chiang04@gmail.com>
+ 
+ 	* config/nds32/nds32.h (FIRST_PSEUDO_REGISTER): Modify.
+ 	(FIXED_REGISTERS): Reserve more register numbers.
+ 	(CALL_USED_REGISTERS): Likewise.
+ 	(REG_ALLOC_ORDER): Likewise.
+ 	(REG_CLASS_CONTENTS): Likewise.
+ 	(REGISTER_NAMES): Likewise.
+ 
+ 2017-11-17  Chung-Ju Wu  <jasonwucj@gmail.com>
+ 	    Kito Cheng  <kito.cheng@gmail.com>
+ 
+ 	* config/nds32/nds32-modes.def: Add vector mode V4QI V2HI V8QI V4HI
+ 	V2SI.
+ 	* config/nds32/iterators.md: Add vector mode iterators and attributes.
+ 
+ 2017-11-16  Steven Munroe  <munroesj@gcc.gnu.org>
+ 
+ 	* config/rs6000/mmintrin.h (_mm_add_pi32[_ARCH_PWR]): Correct
+ 	parameter list for vec_splats.
+ 
+ 2017-11-16  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	* doc/invoke.texi (-std=c17): Refer to 2018 expected publication
+ 	date of C17.
+ 	(-std=c18, -std=iso9899:2018, -std=gnu18): Document option aliases.
+ 
+ 2017-11-16  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR bootstrap/82856
+ 	* doc/install.texi: Document incompatibility of Perl >=5.6.26
+ 	with the required version of automake 1.11.6.
+ 
+ 2017-11-16  Pat Haugen  <pthaugen@us.ibm.com>
+ 
+ 	* rs6000/power9.md (power9fpdiv): New automaton and cpu_unit defined
+ 	for it.
+ 	(DU_C2_3_power9): Correct reservation combinations.
+ 	(FP_DIV_power9, VEC_DIV_power9): New.
+ 	(power9-alu): Split out rotate/shift...
+ 	(power9-rot): ...to here, correct dispatch resource.
+ 	(power9-cracked-alu, power9-mul, power9-mul-compare): Correct dispatch
+ 	resource.
+ 	(power9-fp): Correct latency.
+ 	(power9-sdiv): Add div/sqrt resource.
+ 	(power9-ddiv): Correct latency, add div/sqrt resource.
+ 	(power9-sqrt, power9-dsqrt): Add div/sqrt resource.
+ 	(power9-vecfdiv, power9-vecdiv): Correct latency, add div/sqrt
+ 	resource.
+ 	(power9-qpdiv, power9-qpmul): Adjust resource usage.
+ 
+ 2017-11-15  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_expand_builtin): Do not do the
+ 	switch statement mapping KF built-ins to TF built-ins if we don't
+ 	have the proper ISA 3.0 assembler support.
+ 
+ 2017-11-16  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* tree-emutls.c (lower_emutls_data): Remove unused bb_freq.
+ 	(lower_emutls_function_body): Do not compute it.
+ 
+ 2017-11-16  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* ipa-split.c (split_bb_info): Turn time to sreal.
+ 	(split_point): Likewise.
+ 	(dump_split_point): Likewise.
+ 	(fine_split_points): Likewise.
+ 	(execute_split_functions): Only zero split_bbs; turn time to sreals.
+ 
+ 2017-11-16  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* ipa-fnsummary.c (analyze_function_body): Accumulate time consistently
+ 	in sreal.
+ 
+ 2017-11-16  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* predict.c (combine_predictions_for_bb): Preserve zero predicted
+ 	edges.
+ 	(expensive_function_p): Remove useless assert.
+ 	(determine_unlikely_bbs): Propagate also forward; determine cold blocks
+ 
+ 2017-11-16  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR tree-optimization/82588
+ 	PR tree-optimization/82583
+ 	* tree-vrp.c (check_array_ref): Handle flexible array members,
+ 	string literals, and inner indices.
+ 	(search_for_addr_array): Add detail to diagnostics.
+ 
+ 2017-11-16  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	PR c++/82836
+ 	PR c++/82737
+ 	* tree.h (COPY_DECL_RTL): Rename parms for clarity.
+ 	(SET_DECL_ASSEMBLER_NAME): Forward to
+ 	overwrite_decl_assembler_name.
+ 	(COPY_DECL_ASSEMBLER_NAME): Rename parms for clarity.
+ 	(overwrite_decl_assembler_name): Declare.
+ 	* tree.c (overwrite_decl_assembler_name): New.
+ 	* langhooks-def.h (lhd_overwrite_decl_assembler_name): Declare.
+ 	(LANG_HOOKS_OVERWRITE_DECL_ASSEMBLER_NAME): Provide default.
+ 	(LANG_HOOKS_INITIALIZER): Add it.
+ 	* langhooks.h (struct lang_hooks): Add overwrite_decl_assembler_name.
+ 	* langhooks.c (lhd_set_decl_assembler_name): Use
+ 	SET_DECL_ASSEMBLER_NAME.
+ 	(lhd_overwrite_decl_assembler_name): Default implementation.
+ 
+ 2017-11-16  Wilco Dijkstra  <wdijkstr@arm.com>
+ 	    Jackson Woodruff  <jackson.woodruff@arm.com>
+ 
+ 	PR tree-optimization/71026
+ 	* match.pd: Canonicalize constant multiplies in division.
+ 
+ 2017-11-16  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	* opts.c (default_options_table): Add OPT_fomit_frame_pointer entry.
+ 	* common/config/alpha/alpha-common.c (TARGET_OPTION_OPTIMIZATION_TABLE):
+ 	Remove OPT_fomit_frame_pointer entry.
+ 	* common/config/arc/arc-common.c: Likewise.
+ 	* common/config/arm/arm-common.c: Likewise.
+ 	* common/config/avr/avr-common.c: Likewise.
+ 	* common/config/c6x/c6x-common.c: Likewise.
+ 	* common/config/cr16/cr16-common.c: Likewise.
+ 	* common/config/cris/cris-common.c: Likewise.
+ 	* common/config/epiphany/epiphany-common.c: Likewise.
+ 	* common/config/fr30/fr30-common.c: Likewise.
+ 	* common/config/frv/frv-common.c: Likewise.
+ 	* common/config/ia64/ia64-common.c: Likewise.
+ 	* common/config/iq2000/iq2000-common.c: Likewise.
+ 	* common/config/lm32/lm32-common.c: Likewise.
+ 	* common/config/m32r/m32r-common.c: Likewise.
+ 	* common/config/mcore/mcore-common.c: Likewise.
+ 	* common/config/microblaze/microblaze-common.c: Likewise.
+ 	* common/config/mips/mips-common.c: Likewise.
+ 	* common/config/mmix/mmix-common.c: Likewise.
+ 	* common/config/mn10300/mn10300-common.c: Likewise.
+ 	* common/config/nios2/nios2-common.c: Likewise.
+ 	* common/config/pa/pa-common.c: Likewise.
+ 	* common/config/pdp11/pdp11-common.c: Likewise.
+ 	* common/config/powerpcspe/powerpcspe-common.c: Likewise.
+ 	* common/config/riscv/riscv-common.c: Likewise.
+ 	* common/config/rs6000/rs6000-common.c: Likewise.
+ 	* common/config/rx/rx-common.c: Likewise.
+ 	* common/config/s390/s390-common.c: Likewise.
+ 	* common/config/sh/sh-common.c: Likewise.
+ 	* common/config/sparc/sparc-common.c: Likewise.
+ 	* common/config/tilegx/tilegx-common.c: Likewise.
+ 	* common/config/tilepro/tilepro-common.c: Likewise.
+ 	* common/config/v850/v850-common.c: Likewise.
+ 	* common/config/visium/visium-common.c: Likewise.
+ 	* common/config/xstormy16/xstormy16-common.c: Likewise.
+ 	* common/config/xtensa/xtensa-common.c: Likewise.
+ 	* invoke.texi (-fomit-frame-pointer): Update documentation.
+ 
+ 2017-11-16  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* tree-cfg.c (gimple_find_sub_bbs): Do not compute freq.
+ 
+ 2017-11-14  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* cfg.c (scale_bbs_frequencies_int,
+ 	cale_bbs_frequencies_gcov_type): Remove.
+ 	* cfg.h (scale_bbs_frequencies_int,
+ 	cale_bbs_frequencies_gcov_type): Remove.
+ 
+ 2017-11-14  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* tree-ssa-loop-manip.c
+ 	(scale_dominated_blocks_in_loop): Update to profile counts.
+ 	(tree_transform_and_unroll_loop): Likewise.
+ 
+ 2017-11-14  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* tree-vect-loop-manip.c (vect_do_peeling): Do not use
+ 	scale_bbs_frequencies_int.
+ 
+ 2017-11-14  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* final.c (compute_alignments): Use counts rather than frequencies.
+ 
+ 2017-11-14  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* cfgloopanal.c: Include sreal.h
+ 	(average_num_loop_insns): Use counts and sreal for accounting.
+ 
+ 2017-11-14  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* cfgloopmanip.c (duplicate_loop_to_header_edge): Cleanup profile
+ 	manipulation.
+ 
+ 2017-11-16  Chung-Ju Wu  <jasonwucj@gmail.com>
+ 	    Kito Cheng  <kito.cheng@gmail.com>
+ 
+ 	* config/nds32/constraints.md: Provide more constraints.
+ 	* config/nds32/nds32.h (enum reg_class, REG_CLASS_NAMES,
+ 	REG_CLASS_CONTENTS): Define R5_REG, R8_REG, and FRAME_POINTER_REG to
+ 	support constraints usage.
+ 
+ 2017-11-16  Chung-Ju Wu  <jasonwucj@gmail.com>
+ 
+ 	* config/nds32/constants.md (UNSPEC_VOLATILE_FUNC_RETURN): Remove.
+ 
+ 2017-11-16  Chung-Ju Wu  <jasonwucj@gmail.com>
+ 	    Kito Cheng  <kito.cheng@gmail.com>
+ 
+ 	* config/nds32/nds32.opt: Add mext-perf, mext-perf2, mext-string.
+ 	* config/nds32/nds32.opt: Refine the layout.
+ 	* config/nds32/nds32.c (TARGET_EXT_PERF, TARGET_EXT_PERF2,
+ 	TARGET_EXT_STRING): Support new options.
+ 	* config/nds32/nds32.h: Likewise.
+ 	* config/nds32/nds32.md: Likewise.
+ 	* config/nds32/nds32-predicates.c: Likewise.
+ 	* config/nds32/constraints.md: Likewise.
+ 	* common/config/nds32/nds32-common.c: Likewise.
+ 
+ 2017-11-16  Julia Koval  <julia.koval@intel.com>
+ 
+ 	PR target/82983
+ 	* config/i386/gfniintrin.h: Add sse check.
+ 	* config/i386/i386.c (ix86_expand_builtin): Fix gfni check.
+ 
+ 2017-11-16  Julia Koval  <julia.koval@intel.com>
+ 
+ 	* common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512VBMI2_SET,
+ 	OPTION_MASK_ISA_AVX512VBMI2_UNSET): New.
+ 	(ix86_handle_option): Handle -mavx512vbmi2.
+ 	* config/i386/cpuid.h: Add bit_AVX512VBMI2.
+ 	* config/i386/driver-i386.c (host_detect_local_cpu): Handle new bit.
+ 	* config/i386/i386-c.c (__AVX512VBMI2__): New.
+ 	* config/i386/i386.c (ix86_target_string): Handle -mavx512vbmi2.
+ 	(ix86_valid_target_attribute_inner_p): Ditto.
+ 	* config/i386/i386.h (TARGET_AVX512VBMI2, TARGET_AVX512VBMI2_P): New.
+ 	* config/i386/i386.opt (mavx512vbmi2): New option.
+ 	* doc/invoke.texi: Add new option.
+ 
+ 2017-11-16  Julia Koval  <julia.koval@intel.com>
+ 
+ 	* config/i386/gfniintrin.h (_mm_gf2p8mul_epi8, _mm256_gf2p8mul_epi8,
+ 	_mm_mask_gf2p8mul_epi8, _mm_maskz_gf2p8mul_epi8,
+ 	_mm256_mask_gf2p8mul_epi8, _mm256_maskz_gf2p8mul_epi8,
+ 	_mm512_mask_gf2p8mul_epi8, _mm512_maskz_gf2p8mul_epi8,
+ 	_mm512_gf2p8mul_epi8): New intrinsics.
+ 	* config/i386/i386-builtin-types.def
+ 	(V64QI_FTYPE_V64QI_V64QI): New type.
+ 	* config/i386/i386-builtin.def (__builtin_ia32_vgf2p8mulb_v64qi,
+ 	__builtin_ia32_vgf2p8mulb_v64qi_mask, __builtin_ia32_vgf2p8mulb_v32qi,
+ 	__builtin_ia32_vgf2p8mulb_v32qi_mask, __builtin_ia32_vgf2p8mulb_v16qi,
+ 	__builtin_ia32_vgf2p8mulb_v16qi_mask): New builtins.
+ 	* config/i386/sse.md (vgf2p8mulb_*): New pattern.
+ 	* config/i386/i386.c (ix86_expand_args_builtin): Handle new type.
+ 
+ 2017-11-15  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.c (x86_print_call_or_nop): Emit 5 byte nop
+ 	explicitly as a stream of bytes.
+ 
+ 2017-11-15  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	* config/rs6000/altivec.h (vec_xst_be): New #define.
+ 	* config/rs6000/altivec.md (altivec_vperm_<mode>_direct): Rename
+ 	and externalize from *altivec_vperm_<mode>_internal.
+ 	* config/rs6000/rs6000-builtin.def (XL_BE_V16QI): Remove macro
+ 	instantiation.
+ 	(XL_BE_V8HI): Likewise.
+ 	(XL_BE_V4SI): Likewise.
+ 	(XL_BE_V4SI): Likewise.
+ 	(XL_BE_V2DI): Likewise.
+ 	(XL_BE_V4SF): Likewise.
+ 	(XL_BE_V2DF): Likewise.
+ 	(XST_BE): Add BU_VSX_OVERLOAD_X macro instantiation.
+ 	* config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Correct
+ 	all array entries with these keys: VSX_BUILTIN_VEC_XL,
+ 	VSX_BUILTIN_VEC_XL_BE, VSX_BUILTIN_VEC_XST.  Add entries for key
+ 	VSX_BUILTIN_VEC_XST_BE.
+ 	* config/rs6000/rs6000.c (altivec_expand_xl_be_builtin): Remove.
+ 	(altivec_expand_builtin): Remove handling for VSX_BUILTIN_XL_BE_*
+ 	built-ins.
+ 	(altivec_init_builtins): Replace conditional calls to def_builtin
+ 	for __builtin_vsx_ld_elemrev_{v8hi,v16qi} and
+ 	__builtin_vsx_st_elemrev_{v8hi,v16qi} based on TARGET_P9_VECTOR
+ 	with unconditional calls.  Remove calls to def_builtin for
+ 	__builtin_vsx_le_be_<mode>.  Add a call to def_builtin for
+ 	__builtin_vec_xst_be.
+ 	* config/rs6000/vsx.md (vsx_ld_elemrev_v8hi): Convert define_insn
+ 	to define_expand, and add alternate RTL generation for P8.
+ 	(*vsx_ld_elemrev_v8hi_internal): New define_insn based on
+ 	vsx_ld_elemrev_v8hi.
+ 	(vsx_ld_elemrev_v16qi): Convert define_insn to define_expand, and
+ 	add alternate RTL generation for P8.
+ 	(*vsx_ld_elemrev_v16qi_internal): New define_insn based on
+ 	vsx_ld_elemrev_v16qi.
+ 	(vsx_st_elemrev_v8hi): Convert define_insn
+ 	to define_expand, and add alternate RTL generation for P8.
+ 	(*vsx_st_elemrev_v8hi_internal): New define_insn based on
+ 	vsx_st_elemrev_v8hi.
+ 	(vsx_st_elemrev_v16qi): Convert define_insn to define_expand, and
+ 	add alternate RTL generation for P8.
+ 	(*vsx_st_elemrev_v16qi_internal): New define_insn based on
+ 	vsx_st_elemrev_v16qi.
+ 
+ 2017-11-15  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/82990
+ 	* config/i386/i386.c (pass_insert_vzeroupper::gate): Remove
+ 	TARGET_AVX512ER check.
+ 	(ix86_option_override_internal): Set MASK_VZEROUPPER if
+ 	neither -mzeroupper nor -mno-zeroupper is used and
+ 	TARGET_EMIT_VZEROUPPER is set.
+ 	* config/i386/i386.h (TARGET_EMIT_VZEROUPPER): New.
+ 	* config/i386/x86-tune.def: Add X86_TUNE_EMIT_VZEROUPPER.
+ 
+ 2017-11-15  Will Schmidt  <will_schmidt@vnet.ibm.com>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add support for
+ 	folding of vector compares.
+ 	(fold_build_vec_cmp): New helper function.
+ 	(fold_compare_helper): New helper function.
+ 	(builtin_function_type): Add compare builtins to the list of functions
+ 	having unsigned arguments.  Cosmetic updates to comment indentation.
+ 	* config/rs6000/vsx.md (vcmpneb, vcmpneh, vcmpnew): Update to specify
+ 	the not+eq combination.
+ 
+ 2017-11-15  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	PR tree-optimization/82726
+ 	PR tree-optimization/70754
+ 	* tree-predcom.c (order_drefs_by_pos): New function.
+ 	(combine_chains): Move code setting has_max_use_after to...
+ 	(try_combine_chains): ...here.  New parameter.  Sort combined chains
+ 	according to position information.
+ 	(tree_predictive_commoning_loop): Update call to above function.
+ 	(update_pos_for_combined_chains, pcom_stmt_dominates_stmt_p): New.
+ 
+ 2017-11-15  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	PR tree-optimization/82726
+ 	Revert
+ 	2017-01-23  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	PR tree-optimization/70754
+ 	* tree-predcom.c (stmt_combining_refs): New parameter INSERT_BEFORE.
+ 	(reassociate_to_the_same_stmt): New parameter INSERT_BEFORE.  Insert
+ 	combined stmt before it if not NULL.
+ 	(combine_chains): Process refs reversely and compute dominance point
+ 	for root ref.
+ 
+ 	Revert
+ 	2017-02-23  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	PR tree-optimization/79663
+ 	* tree-predcom.c (combine_chains): Process refs in reverse order
+ 	only for ZERO length chains, and add explaining comment.
+ 
+ 2017-11-15  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* config/arm/arm-cpus.in (armv8_3, ARMv8_3a, armv8.3-a): New
+ 	* config/arm/arm-tables.opt (armv8.3-a): Regenerated.
+ 	* doc/invoke.texi (ARM Options): Add armv8.3-a.
+ 
+ 2017-11-15  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* config/arm/arm.h (TARGET_DOTPROD): Add arm_arch8_2.
+ 
+ 2017-11-15  Martin Liska  <mliska@suse.cz>
+ 
+ 	* tree-cfg.c (pass_warn_function_return::execute):
+ 	Compare warn_return_type for greater than zero.
+ 
+ 2017-11-15  Sebastian Peryt  <sebastian.peryt@intel.com>
+ 
+ 	PR target/82941
+ 	PR target/82942
+ 	* config/i386/i386.c (pass_insert_vzeroupper): Modify gate condition
+ 	to return true on Xeon and not on Xeon Phi.
+ 	(ix86_check_avx256_register): Changed to ...
+ 	(ix86_check_avx_upper_register): ... this. Add extra check for
+ 	VALID_AVX512F_REG_OR_XI_MODE.
+ 	(ix86_avx_u128_mode_needed): Changed
+ 	ix86_check_avx256_register to ix86_check_avx_upper_register.
+ 	(ix86_check_avx256_stores): Changed to ...
+ 	(ix86_check_avx_upper_stores): ... this. Changed
+ 	ix86_check_avx256_register to ix86_check_avx_upper_register.
+ 	(ix86_avx_u128_mode_after): Changed
+ 	avx_reg256_found to avx_upper_reg_found. Changed
+ 	ix86_check_avx256_stores to ix86_check_avx_upper_stores.
+ 	(ix86_avx_u128_mode_entry): Changed
+ 	ix86_check_avx256_register to ix86_check_avx_upper_register.
+ 	(ix86_avx_u128_mode_exit): Ditto.
+ 	* config/i386/i386.h: (host_detect_local_cpu): New define.
+ 
+ 2017-11-15  Dominik Infuehr  <dominik.infuehr@theobroma-systems.com>
+ 
+ 	* config/arm/xgene1.md (xgene1): Split into automatons
+ 	xgene1_main, xgene1_decoder, xgene1_div, xgene1_simd.
+ 	(xgene1_f_load): Adjust reservations and/or types.
+ 	(xgene1_f_store): Likewise.
+ 	(xgene1_load_pair): Likewise.
+ 	(xgene1_store_pair): Likewise.
+ 	(xgene1_fp_load1): Likewise.
+ 	(xgene1_load1): Likewise.
+ 	(xgene1_store1): Likewise.
+ 	(xgene1_move): Likewise.
+ 	(xgene1_alu): Likewise.
+ 	(xgene1_simd): Likewise.
+ 	(xgene1_bfm): Likewise.
+ 	(xgene1_neon_load1): Likewise.
+ 	(xgene1_neon_store1): Likewise.
+ 	(xgene1_neon_logic): Likewise.
+ 	(xgene1_neon_st1): Likewise.
+ 	(xgene1_neon_ld1r): Likewise.
+ 	(xgene1_alu_cond): Added.
+ 	(xgene1_shift_reg): Likwise.
+ 	(xgene1_bfx): Likewise.
+ 	(xgene1_mul): Split into xgene1_mul32, xgene1_mul64.
+ 
+ 2017-11-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/82981
+ 	* internal-fn.c: Include gimple-ssa.h, tree-phinodes.h and
+ 	ssa-iterators.h.
+ 	(can_widen_mult_without_libcall): New function.
+ 	(expand_mul_overflow): If only checking unsigned mul overflow,
+ 	not result, and can do efficiently MULT_HIGHPART_EXPR, emit that.
+ 	Don't use WIDEN_MULT_EXPR if it would involve a libcall, unless
+ 	no other way works.  Add MULT_HIGHPART_EXPR + MULT_EXPR support.
+ 	(expand_DIVMOD): Formatting fix.
+ 	* expmed.h (expand_mult): Add NO_LIBCALL argument.
+ 	* expmed.c (expand_mult): Likewise.  Use OPTAB_WIDEN rather
+ 	than OPTAB_LIB_WIDEN if NO_LIBCALL is true, and allow it to fail.
+ 
+ 	PR tree-optimization/82977
+ 	* tree-ssa-strlen.c (strlen_optimize_stmt): Pass a reference to a copy
+ 	constructed temporary to strlen_to_stridx.put.
+ 
+ 2017-11-15  Martin Liska  <mliska@suse.cz>
+ 
+ 	* configure.ac: Remove -fkeep-inline-functions from coverage_flags.
+ 	* configure: Regenerate.
+ 
+ 2017-11-15  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR target/82927
+ 	* config/sh/sh-mem.cc: Use proper probability for
+ 	REG_BR_PROB_NOTE.
+ 
+ 2017-11-14  Jeff Law  <law@redhat.com>
+ 
+ 	* explow.c (anti_adjust_stack_and_probe_stack_clash): Avoid probing
+ 	the red zone for stack_clash_protection_final_dynamic_probe targets
+ 	when the total dynamic stack size is zero bytes.
+ 
+ 	* tree-ssa-threadupdate.c (thread_through_all_blocks): Thread
+ 	blocks is post order.
+ 
+ 2017-11-15  Alexandre Oliva  <aoliva@redhat.com>
+ 
+ 	* dumpfile.h (TDF_COMPARE_DEBUG): New.
+ 	* final.c (rest_of_clean_state): Set it for the
+ 	-fcompare-debug dump.
+ 	* tree-pretty-print.c (dump_generic_node): Omit OBJ_TYPE_REF
+ 	class when TDF_COMPARE_DEBUG is set.
+ 
+ 	* dwarf2out.c (gen_producer_string): Discard
+ 	OPT_fcompare_debug.
+ 
+ 2017-11-15  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	PR c/81156
+ 	* doc/extend.texi (Other Builtins): Document __builtin_tgmath.
+ 	* ginclude/tgmath.h (__tg_cplx, __tg_ldbl, __tg_dbl, __tg_choose)
+ 	(__tg_choose_2, __tg_choose_3, __TGMATH_REAL_1_2)
+ 	(__TGMATH_REAL_2_3): Remove macros.
+ 	(__TGMATH_CPLX, __TGMATH_CPLX_2, __TGMATH_REAL, __TGMATH_REAL_2)
+ 	(__TGMATH_REAL_3, __TGMATH_CPLX_ONLY): Define using
+ 	__builtin_tgmath.
+ 	(frexp, ldexp, nexttoward, scalbn, scalbln): Define using
+ 	__TGMATH_REAL_2.
+ 	(remquo): Define using __TGMATH_REAL_3.
+ 
+ 2017-11-14  Jeff Law  <law@redhat.com>
+ 
+ 	* vr-values.c: New file with contents extracted from tree-vrp.c.
+ 	* Makefile.in (OBJS): Add vr-values.o
+ 	* tree-vrp.h (set_value_range_to_nonnull): Prototype.
+ 	(set_value_range, set_and_canonicalize_value_range): Likewise.
+ 	(vrp_bitmap_equal_p, range_is_nonnull): Likewise.
+ 	(value_range_constant_singleton, symbolic_range_p): Likewise.
+ 	(compare_values, compare_values_warnv, vrp_val_is_min): Likewise.
+ 	(vrp_val_is_max, copy_value_range, set_value_range_to_value): Likewise.
+ 	(extract_range_from_binary_expr_1, vrp_val_min, vrp_val_max): Likewise.
+ 	(set_value_range_to_null, range_int_cst_p, opreand_less_p): Likewise.
+ 	(find_case_label_range, find_case_label_index): Likewise.
+ 	(zero_nonzero_bits_from_vr, overflow_comparison_p): Likewise.
+ 	(range_int_cst_singleton_p, value_inside_range): Likewise.
+ 	(get_single_symbol): Likewise.
+ 	(switch_update): Move structure definition here.
+ 	(to_remove_edges, to_update_switch_stmts): Provide externs.
+ 	* tree-vrp.c: Move all methods for vr-values class to vr-values.c
+ 	(vrp_val_max, vrp_val_min, vrp_val_is_max): Make externally visible.
+ 	(vrp_val_is_min, set_value_range): Likewise.
+ 	(set_and_canonicalize_value_range, copy_value_range): Likewise.
+ 	(set_value_range_to_value, set_value_range_to_nonnull): Likewise.
+ 	(set_value_range_to_null, vrp_bitmap_equal_p): Likewise.
+ 	(range_is_nonnull, range_int_cst_p): Likewwise.
+ 	(range_int_cst_singleton_p, symbolic_range_p): Likewise.
+ 	(get_single_symbol, operand_less_p): Likewise
+ 	(compare_values_warnv, compare_values): Likewise.
+ 	(value_inside_range, value_range_constant_singleton): Likewise.
+ 	(zero_nonzero_bitgs_from_vr): Likewise.
+ 	(extract_range_from_binary_expr_1): Likewise.
+ 	(overflow_comparison_p): Likewise.
+ 	(to_remove_edges, to_update_switch_stmts): Likewise.
+ 	(find_case_label-index, find_case_label_range): Likewise.
+ 	(switch_update, set_value_range_to_nonnegative): Remove.
+ 	(set_value_range_to_truthvalue): Likewise.
+ 	(symbolic_range_based_on_p, gimple_assign_nonzero_p): Likewise.
+ 	(gimple_stmt_nonzero_p, compare_ranges): Likewise.
+ 	(compare_range_with_value, vrp_valueize, vrp_valueize_1): Likewise.
+ 	(find_case_label_ranges, test_for_singularity): Likewise.
+ 	(range_fits_type_p, simplify_conversion_using_ranges): LIkewise.
+ 	(x_vr_values): Move to its remaining use site.
+ 
+ 2017-11-10  Jeff Law  <law@redhat.com>
+ 
+ 	* vr-values.h (VR_INITIALIZER): Move #define here.
+ 	* gimple-ssa-evrp.c: New file with contents extracted from tree-vrp.c
+ 	* Makefile.in (OBJS): Add tree-evrp.o
+ 	* tree-vrp.h (assert_info): Move structure definition here.
+ 	(set_value_range_to_varying): Prototype.
+ 	(vrp_operand_equal_p, range_includes_zero_p): Likewise.
+ 	(infer_value_range, register_edge_assert_for): Likewise.
+ 	(stmt_interesting_for_vrp): Likewise.
+ 	* tree-vrp.c: Move all methods for evrp class into gimple-ssa-evrp.c.
+ 	(set_value_range_to_varying): No longer static.
+ 	(vrp_operand_equal_p, range_includes_zero_p): Likewise.
+ 	(infer_value_range, register_edge_assert_for): Likewise.
+ 
+ 2017-11-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	* config/rs6000/rs6000.md (bswapdi2): On 32-bit ISA 3.0, don't
+ 	generate the XXBRD instruction.
+ 
+ 	* config/rs6000/rs6000-c.c (is_float128_p): New helper function.
+ 	(rs6000_builtin_type_compatible): Treat _Float128 and long double
+ 	as being compatible if -mabi=ieeelongdouble.
+ 	* config/rs6000/rs6000-builtin.def (BU_FLOAT128_HW_1): New macros
+ 	to setup float128 built-ins with hardware support.
+ 	(BU_FLOAT128_HW_2): Likewise.
+ 	(BU_FLOAT128_HW_3): Likewise.
+ 	(BU_FLOAT128_HW_VSX_1): Likewise.
+ 	(BU_FLOAT128_HW_VSX_2): Likewise.
+ 	(scalar_extract_expq): Change float128 built-in functions to
+ 	accommodate having both KFmode and TFmode functions.  Use the
+ 	KFmode variant as the default.
+ 	(scalar_extract_sigq): Likewise.
+ 	(scalar_test_neg_qp): Likewise.
+ 	(scalar_insert_exp_q): Likewise.
+ 	(scalar_insert_exp_qp): Likewise.
+ 	(scalar_test_data_class_qp): Likewise.
+ 	(sqrtf128_round_to_odd): Delete processing the round to odd
+ 	built-in functions as special built-in functions, and define them
+ 	as float128 built-ins.  Use the KFmode variant as the default.
+ 	(truncf128_round_to_odd): Likewise.
+ 	(addf128_round_to_odd): Likewise.
+ 	(subf128_round_to_odd): Likewise.
+ 	(mulf128_round_to_odd): Likewise.
+ 	(divf128_round_to_odd): Likewise.
+ 	(fmaf128_round_to_odd): Likewise.
+ 	* config/rs6000/rs6000.c (rs6000_expand_binop_builtin): Add
+ 	support for KFmode and TFmode xststdcqp calls.
+ 	(rs6000_expand_builtin): If long double is IEEE 128-bit floating
+ 	point, switch the built-in handlers for the get/set float128
+ 	exponent, get float128 mantissa, float128 test built-ins, and the
+ 	float128 round to odd built-in functions.  Eliminate creating the
+ 	float128 round to odd built-in functions as special built-ins.
+ 	(rs6000_init_builtins): Eliminate special creation of the float128
+ 	round to odd built-in functions.
+ 	* config/rs6000/vsx.md (xsxexpqp_<mode>): Change float128 built-in
+ 	function insns to support both TFmode and KFmode variants.
+ 	(xsxsigqp_<mode>): Likewise.
+ 	(xsiexpqpf_<mode>): Likewise.
+ 	(xsiexpqp_<mode>): Likewise.
+ 	(xststdcqp_<mode>): Likewise.
+ 	(xststdcnegqp_<mode>): Likewise.
+ 	(xststdcqp_<mode>): Likewise.
+ 
+ 2017-11-14  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* tree-ssa-threadupdate.c (compute_path_counts): Remove
+ 	unused path_in_freq_ptr parameter.
+ 	(ssa_fix_duplicate_block_edges): Do not pass around path_in_freq
+ 
+ 2017-11-14  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* ipa-inline.c (edge_badness): Dump sreal frequency.
+ 	(compute_inlined_call_time): Match natural implementaiton ...
+ 	* ipa-fnsummary.c (estimate_edge_size_and_time): ... here; remove
+ 	forgotten division by CGRAPH_FREQ_BASE.
+ 
+ 2017-11-14  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	* config.gcc (*-*-solaris2*): Enable default_use_cxa_atexit since
+ 	Solaris 11.  Update comment.
+ 	* configure.ac (gcc_cv_ld_pid): Adapt comment for Solaris 12
+ 	renaming.
+ 	* config/sol2.h (STARTFILE_SPEC): Likewise.
+ 	* configure: Regenerate.
+ 
+ 2017-11-14  Carl Love  <cel@us.ibm.com>
+ 
+ 	* config/rs6000/rs6000.c (swap_endian_selector_for_mode): Remove
+ 	le_ and be_ prefixes to swap* variables.  Remove
+ 	if (VECTOR_ELT_ORDER_BIG) statement. Remove E_V16QImode case
+ 	statements.
+ 
+ 2017-11-14  Jason Merrill  <jason@redhat.com>
+ 
+ 	Support GTY((cache)) on hash_map.
+ 	* hash-traits.h (ggc_remove): Add ggc_maybe_mx member function.
+ 	(ggc_cache_remove): Override it instead of ggc_mx.
+ 	* hash-table.h (gt_ggc_mx): Call it instead of ggc_mx.
+ 	(gt_cleare_cache): Call ggc_mx instead of gt_ggc_mx.
+ 	* hash-map-traits.h (simple_hashmap_traits): Add maybe_mx member.
+ 	(simple_cache_map_traits): Override maybe_mx.
+ 	* hash-map.h (hash_entry): Add ggc_maybe_mx and keep_cache_entry.
+ 	(hash_map): Friend gt_cleare_cache.
+ 	(gt_cleare_cache): New.
+ 	* tree.h (tree_cache_traits): New hash_map traits class.
+ 	(tree_cache_map): New typedef.
+ 
+ 2017-11-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-cfgcleanup.c (cleanup_control_expr_graph): Remove first_p
+ 	paramter and handling.
+ 	(cleanup_control_flow_bb): Likewise.
+ 	(cleanup_control_flow_pre): New helper performing a DFS walk
+ 	to call cleanup_control_flow_bb in PRE order.
+ 	(cleanup_tree_cfg_1): Do the first phase of cleanup_control_flow_bb
+ 	via cleanup_control_flow_pre.
+ 
+ 2017-11-14  James Greenhalgh  <james.greenhalgh@arm.com>
+ 
+ 	* config/aarch64/aarch64-simd.md
+ 	(aarch64_simd_bsl<mode>_internal): Remove DImode.
+ 	(*aarch64_simd_bsl<mode>_alt): Likewise.
+ 	(aarch64_simd_bsldi_internal): New.
+ 	(aarch64_simd_bsldi_alt): Likewise.
+ 
+ 2017-11-13  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* tracer.c (better_p): Do not compare frequencies.
+ 	* reg-stack.c (better_edge): Likewise.
+ 	* shrink-wrap.c (try_shrink_wrapping): Do not convert to gcov counts
+ 	and back.
+ 
+ 2017-11-13  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* auto-profile.c (afdo_annotate_cfg): Use update_max_bb_count.
+ 	* cgraphunit.c (cgraph_node::expand_thunk): Use update_max_bb_count.
+ 	* ipa-utils.c (ipa_merge_profiles): Use update_max_bb_count.
+ 	* lto-streamer-in.c (input_function): Use update_max_bb_count.
+ 	* omp-expand.c (expand_omp_taskreg): Use update_max_bb_count.
+ 	* predict.c (maybe_hot_frequency_p): Inline to ...
+ 	(maybe_hot_count_p): ... here; rewrite to counts.
+ 	(counts_to_freqs): Rename to ...
+ 	(update_max_bb_count): ... this one.
+ 	(expensive_function_p): Use counts.
+ 	(estimate_bb_frequencies): Update.
+ 	(rebuild_frequencies): Update.
+ 	* predict.h (counts_to_freqs): Rename to ...
+ 	(update_max_bb_count): ... this one.
+ 	* profile.c (compute_branch_probabilities): Add debug info
+ 	* tree-inline.c (expand_call_inline): Update debug info.
+ 	(optimize_inline_calls): Use update_max_bb_count..
+ 	(tree_function_versioning): Use update_max_bb_count..
+ 	* value-prof.c (gimple_value_profile_transformations):
+ 	Do not use update_max_bb_count.
+ 
+ 2017-11-13  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* ipa-inline.c (compute_uninlined_call_time, compute_inlined_call_time):
+ 	always use frequencies.
+ 
+ 2017-11-13  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* bb-reorder.c: Remove frequencies from comments.
+ 	(better_edge_p): Use profile counts.
+ 	(find_traces): Dump profile counts.
+ 	(rotate_loop): Use profile counts.
+ 	(find_traces_1_round): Likewise.
+ 	(connect_better_edge_p): Use counts instead of probabilities for
+ 	reverse walk.
+ 	(copy_bb_p): Drop early check for non-0 frequency.
+ 	(sanitize_hot_paths): Update comments.
+ 
+ 2017-11-13  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* ipa-split.c (struct split_point): Add count.
+ 	(consider_split): Do not compute incoming frequency; compute incoming
+ 	count and store it to split_point.
+ 	(split_function): Set count of the call to split part correctly.
+ 
+ 2017-11-13  Carl Love  <cel@us.ibm.com>
+ 
+ 	* config/rs6000/altivec.md (altivec_vsumsws_be): Add define_expand.
+ 
+ 2017-11-13  Tom Tromey  <tom@tromey.com>
+ 
+ 	* doc/cpp.texi (Variadic Macros): Document __VA_OPT__.
+ 
+ 2017-11-13  Carl Love  <cel@us.ibm.com>
+ 
+ 	* config/rs6000/rs6000-c.c (altivec_overloaded_builtins):
+ 	Add support for builtins:
+ 	unsigned int vec_first_{,miss}_match_{,or_eos}index,
+ 	vector {un,}signed {char,int,short},
+ 	vector {un,}signed {char,int,short}) arguments.
+ 	* config/rs6000/rs6000-builtin.def (VFIRSTMATCHINDEX,
+ 	VFIRSTMATCHOREOSINDEX, VFIRSTMISMATCHINDEX, VFIRSTMISMATCHOREOSINDEX):
+ 	Add BU_P9V_AV_2 expansions for the builtins.
+ 	* config/rs6000/altivec.h (vec_first_match_index,
+ 	vec_first_mismatch_index, vec_first_match_or_eos_index,
+ 	vec_first_mismatch_or_eos_index): Add #defines for the builtins.
+ 	* config/rs6000/rs6000-protos.h (bytes_in_mode): Add
+ 	new extern declaration.
+ 	* config/rs6000/rs6000.c (bytes_in_mode): Add new function.
+ 	* config/rs6000/vsx.md (first_match_index_<mode>,
+ 	first_match_or_eos_index_<mode>, first_mismatch_index_<mode>,
+ 	first_mismatch_or_eos_index_<mode>): Add define expand.
+ 	(vctzlsbb_<mode>): Add mode field to define_insn for vctzlsbb.
+ 	* doc/extend.texi: Update the built-in documenation file for the new
+ 	built-in functions.
+ 
+ 2017-11-13  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	* match.pd: Convert fminf<N>, fminf<N>x, fmax<N>, and fmax<N>x
+ 	into the min/max operations for _Float<N> and _Float<N>X types.
+ 
+ 2017-11-13  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR lto/81351
+ 	* dwarf2out.c (do_eh_frame): New static variable.
+ 	(dwarf2out_begin_prologue): Set it.
+ 	(dwarf2out_frame_finish): Test it instead of dwarf2out_do_eh_frame.
+ 
+ 2017-11-13  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* tree-ssa-coalesce.c (coalesce_cost): Fix formating.
+ 
+ 	* tree-ssa-sink.c (select_best_block): Do not use frequencies.
+ 
+ 2017-11-13  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR lto/81351
+ 	* debug.h (dwarf2out_do_eh_frame): Declare.
+ 	* dwarf2cfi.c (dwarf2out_do_eh_frame): New predicate.
+ 	(dwarf2out_do_frame): Use it.
+ 	(dwarf2out_do_cfi_asm): Likewise.
+ 	* dwarf2out.c (dwarf2out_frame_finish): Likewise.
+ 	(dwarf2out_assembly_start): Likewise.
+ 	(dwarf2out_begin_prologue): Fix comment.
+ 	* toplev.c (compile_file): Always call dwarf2out_frame_finish
+ 	if the target needs either debug or unwind DWARF2 info.
+ 	* lto-opts.c (lto_write_options): Do not save -fexceptions,
+ 	-fnon-call-exceptions, -ffp-contract, -fmath-errno, -fsigned-zeros,
+ 	-ftrapping-math, -ftrapv and -fwrapv.
+ 
+ 2017-11-13  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* cgraph.c (cgraph_edge::sreal_frequency): New function.
+ 	* cgraph.h (cgraph_edge::sreal_frequency): Declare.
+ 	* ipa-fnsummary.c (dump_ipa_call_summary): Use sreal_frequency.
+ 	(estimate_edge_size_and_time): Likewise.
+ 	(ipa_merge_fn_summary_after_inlining): Likewise.
+ 	* ipa-inline.c (cgraph_freq_base_rec): Remove.
+ 	(compute_uninlined_call_time): Use sreal_frequency.
+ 	(compute_inlined_call_time): Likewise.
+ 	(ipa_inline): Do not initialize cgraph_freq_base_rec.
+ 	* profile-count.c: Include sreal.h.
+ 	(profile_count::to_sreal_scale): New.
+ 	* profile-count.h: Forward declare sreal.
+ 	(profile_count::to_sreal_scale): Declare.
+ 
+ 2017-11-13  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* diagnostic.c (maybe_line_and_column): New.
+ 	(diagnostic_get_location_text): Use it.
+ 	(diagnostic_report_current_module): Likewise.
+ 	(test_diagnostic_get_location_text): Add tests.
+ 
+ 2017-11-13  Luis Machado  <luis.machado@linaro.org>
+ 
+ 	* doc/md.texi (Specifying processor pipeline description): Fix
+ 	incorrect latency for the div instruction example.
+ 
+ 2017-11-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/78821
+ 	* gimple-ssa-store-merging.c (compatible_load_p): Don't require
+ 	that bit_not_p is the same.
+ 	(imm_store_chain_info::coalesce_immediate_stores): Likewise.
+ 	(split_group): Count precisely bit_not_p bits in each statement.
+ 	(invert_op): New function.
+ 	(imm_store_chain_info::output_merged_store): Use invert_op to
+ 	emit BIT_XOR_EXPR with a xor_mask instead of BIT_NOT_EXPR if some
+ 	but not all orig_stores have BIT_NOT_EXPR in the corresponding spots.
+ 
+ 2017-11-13  Martin Liska  <mliska@suse.cz>
+ 
+ 	* gcov.c (struct coverage_info): Remove typedef of coverage_t.
+ 	(struct source_info): Likewise.
+ 	(add_branch_counts): Likewise.
+ 	(add_line_counts): Likewise.
+ 	(function_summary): Likewise.
+ 	(output_intermediate_line): Likewise.
+ 	(generate_results): Likewise.
+ 
+ 2017-11-13  Martin Liska  <mliska@suse.cz>
+ 
+ 	* gcov.c (struct block_info): Remove typedef for block_t.
+ 	(struct line_info): Likewise.
+ 	(line_info::has_block): Likewise.
+ 	(EXIT_BLOCK): Likewise.
+ 	(unblock): Likewise.
+ 	(circuit): Likewise.
+ 	(get_cycles_count): Likewise.
+ 	(process_file): Likewise.
+ 	(read_graph_file): Likewise.
+ 	(solve_flow_graph): Likewise.
+ 	(find_exception_blocks): Likewise.
+ 	(add_line_counts): Likewise.
+ 	(accumulate_line_info): Likewise.
+ 	(output_line_details): Likewise.
+ 
+ 2017-11-13  Martin Liska  <mliska@suse.cz>
+ 
+ 	* gcov.c (struct arc_info): Remove typedef for arc_t.
+ 	(struct line_info): Likewise.
+ 	(add_branch_counts): Likewise.
+ 	(output_branch_count): Likewise.
+ 	(function_info::~function_info): Likewise.
+ 	(circuit): Likewise.
+ 	(output_intermediate_line): Likewise.
+ 	(read_graph_file): Likewise.
+ 	(solve_flow_graph): Likewise.
+ 	(find_exception_blocks): Likewise.
+ 	(add_line_counts): Likewise.
+ 	(accumulate_line_info): Likewise.
+ 	(output_line_details): Likewise.
+ 	(output_function_details): Likewise.
+ 
+ 2017-11-13  Martin Liska  <mliska@suse.cz>
+ 
+ 	* gcov.c (struct function_info): Remove typedef for function_t.
+ 	(struct source_info): Likewise.
+ 	(source_info::get_functions_at_location): Likewise.
+ 	(solve_flow_graph): Likewise.
+ 	(find_exception_blocks): Likewise.
+ 	(add_line_counts): Likewise.
+ 	(output_intermediate_file): Likewise.
+ 	(process_file): Likewise.
+ 	(generate_results): Likewise.
+ 	(release_structures): Likewise.
+ 	(read_graph_file): Likewise.
+ 	(read_count_file): Likewise.
+ 	(accumulate_line_counts): Likewise.
+ 	(output_lines): Likewise.
+ 
+ 2017-11-13  Martin Liska  <mliska@suse.cz>
+ 
+ 	* gcov.c (function_info::function_info): Remove num_counts
+ 	and add vector<gcov_type>.
+ 	(function_info::~function_info): Use the vector.
+ 	(process_file): Likewise.
+ 	(read_graph_file): Likewise.
+ 	(read_count_file): Likewise.
+ 	(solve_flow_graph): Likewise.
+ 
+ 2017-11-13  Martin Liska  <mliska@suse.cz>
+ 
+ 	* gcov.c (function_info::is_artificial): New function.
+ 	(process_file): Erase all artificial early.
+ 	(generate_results): Skip as all artificial are already
+ 	removed.
+ 
+ 2017-11-13  Martin Liska  <mliska@suse.cz>
+ 
+ 	* gcov.c (read_graph_file): Store to global vector of functions.
+ 	(read_count_file): Iterate the vector.
+ 	(process_file): Likewise.
+ 	(generate_results): Likewise.
+ 	(release_structures): Likewise.
+ 
+ 2017-11-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/82954
+ 	* gimple-ssa-store-merging.c
+ 	(imm_store_chain_info::coalesce_immediate_stores): If
+ 	!infof->ops[N].base_addr, split group if info->ops[N].base_addr.
+ 
+ 2017-11-13  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* config/aarch64/aarch64-simd.md (aarch64_store_lane0<mode>):
+ 	Upddate call to ENDIAN_LANE_N.
+ 	(aarch64_<sur>dot_lane<vsi2qi>): Use aarch64_endian_lane_rtx.
+ 	(aarch64_<sur>dot_laneq<vsi2qi>): Likewise.
+ 	(*aarch64_simd_vec_copy_lane<mode>): Update calls to ENDIAN_LANE_N
+ 	and use aarch64_endian_lane_rtx.
+ 	(*aarch64_simd_vec_copy_lane_<vswap_width_name><mode>): Likewise.
+ 
+ 2017-11-12  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	* config/riscv/riscv.h (ASM_OUTPUT_LABELREF): Wrap in do {} while (0).
+ 
+ 2017-11-12  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	* config/elfos.h (ASM_OUTPUT_ASCII): Remove semicolon after macro body.
+ 
+ 2017-11-12  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	* config/cr16/cr16.h (ASM_OUTPUT_LABELREF): Remove semicolon after macro
+ 	body.
+ 	* config/powerpcspe/xcoff.h (ASM_OUTPUT_LABELREF): Same.
+ 	* config/rs6000/xcoff.h (ASM_OUTPUT_LABELREF): Same.
+ 	* defaults.h (ASM_OUTPUT_LABELREF): Same.
+ 
+ 2017-11-11  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR c/81117
+ 	* doc/extend.texi (attribute nonstring): Remove spurious argument.
+ 
+ 	PR bootstrap/82948
+ 	* prefic.c (translate_name): Replace strncpy with memcpy to
+ 	avoid -Wstringop-truncation.
+ 
+ 2017-11-10  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* tree-ssa-loop-im.c (execute_sm_if_changed): Do not compute freq_sum.
+ 
+ 2017-11-10  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* predict.c (maybe_hot_frequency_p): Do not use cfun.
+ 
+ 2017-11-10  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* tree-ssa-tail-merge.c (replace_block_by): Fix and re-enable profile
+ 	merging.
+ 
+ 2017-11-10  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	* config/rs6000/rs6000.md (bswaphi2_reg): On ISA 3.0 systems,
+ 	enable generating XXBRH if the value is in a vector register.
+ 	(bswapsi2_reg): On ISA 3.0 systems, enable generating XXBRW if the
+ 	value is in a vector register.
+ 	(bswapdi2_reg): On ISA 3.0 systems, always use XXBRD to do
+ 	register to register bswap64's instead of doing the GPR sequence
+ 	used on previous machines.
+ 	(bswapdi2_xxbrd): New insn.
+ 	(bswapdi2_reg): Disallow on ISA 3.0.
+ 	(register to register bswap64 splitter): Do not split the insn on
+ 	ISA 3.0 systems that use XXBRD.
+ 
+ 2017-11-10  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR c/81117
+ 	* config/darwin-c.c (framework_construct_pathname): Replace strncpy
+ 	with memcpy.
+ 	(find_subframework_file): Same.
+ 
+ 2017-11-10  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* auto-profile.c (afdo_indirect_call): Drop frequency.
+ 	* cgraph.c (symbol_table::create_edge): Drop frequency argument.
+ 	(cgraph_node::create_edge): Drop frequency argument.
+ 	(cgraph_node::create_indirect_edge): Drop frequency argument.
+ 	(cgraph_edge::make_speculative): Drop frequency arguments.
+ 	(cgraph_edge::resolve_speculation): Do not update frequencies
+ 	(cgraph_edge::dump_edge_flags): Do not dump frequency.
+ 	(cgraph_node::dump): Check consistency in IPA mode.
+ 	(cgraph_edge::maybe_hot_p): Use IPA counter.
+ 	(cgraph_edge::verify_count_and_frequency): Rename to ...
+ 	(cgraph_edge::verify_count): ... this one; drop frequency checking.
+ 	(cgraph_node::verify_node): Update.
+ 	* cgraph.h (struct cgraph_edge): Drop frequency.
+ 	(cgraph_edge::frequency): New function.
+ 	* cgraphbuild.c (pass_build_cgraph_edges::execute): Donot pass
+ 	frequencies.
+ 	(cgraph_edge::rebuild_edges): Likewise.
+ 	* cgraphclones.c (cgraph_edge::clone): Scale only counts.
+ 	(duplicate_thunk_for_node): Do not pass frequency.
+ 	(cgraph_node::create_clone): Scale only counts.
+ 	(cgraph_node::create_virtual_clone): Do not pass frequency.
+ 	(cgraph_node::create_edge_including_clones): Do not pass frequency.
+ 	(cgraph_node::create_version_clone): Do not pass frequency.
+ 	* cgraphunit.c (cgraph_node::analyze): Do not pass frequency.
+ 	(cgraph_node::expand_thunk): Do not pass frequency.
+ 	(cgraph_node::create_wrapper): Do not pass frequency.
+ 	* gimple-iterator.c (update_call_edge_frequencies): Do not pass
+ 	frequency.
+ 	* gimple-streamer-in.c (input_bb): Scale only IPA counts.
+ 	* ipa-chkp.c (chkp_produce_thunks): Do not pass frequency.
+ 	* ipa-cp.c (ipcp_lattice::print): Use frequency function.
+ 	(gather_caller_stats): Use frequency function.
+ 	(ipcp_cloning_candidate_p): Use frequency function.
+ 	(ipcp_propagate_stage): Use frequency function.
+ 	(get_info_about_necessary_edges): Use frequency function.
+ 	(update_profiling_info): Update only IPA profile.
+ 	(update_specialized_profile): Use frequency functoin.
+ 	(perhaps_add_new_callers): Update only IPA profile.
+ 	* ipa-devirt.c (ipa_devirt): Use IPA profile.
+ 	* ipa-fnsummary.c (redirect_to_unreachable): Do not set frequrency.
+ 	(dump_ipa_call_summary): Use frequency function.
+ 	(estimate_edge_size_and_time): Use frequency function.
+ 	(ipa_merge_fn_summary_after_inlining): Use frequency function.
+ 	* ipa-inline-analysis.c (do_estimate_edge_time): Use IPA profile.
+ 	* ipa-inline-transform.c (update_noncloned_frequencies): Rename to ..
+ 	(update_noncloned_counts): ... ths one; scale counts only.
+ 	(clone_inlined_nodes): Do not scale frequency.
+ 	(inline_call): Do not pass frequency.
+ 	* ipa-inline.c (compute_uninlined_call_time): Use IPA profile.
+ 	(compute_inlined_call_time): Use IPA profile.
+ 	(want_inline_small_function_p): Use IPA profile.
+ 	(want_inline_self_recursive_call_p): Use IPA profile.
+ 	(edge_badness): Use IPA profile.
+ 	(lookup_recursive_calls): Use IPA profile.
+ 	(recursive_inlining): Do not pass frequency.
+ 	(resolve_noninline_speculation): Do not update frequency.
+ 	(inline_small_functions): Collect max of IPA profile.
+ 	(dump_overall_stats): Dump IPA porfile.
+ 	(dump_inline_stats): Dump IPA porfile.
+ 	(ipa_inline): Collect IPA stats.
+ 	* ipa-inline.h (clone_inlined_nodes): Update prototype.
+ 	* ipa-profile.c (ipa_propagate_frequency_1): Use frequency function.
+ 	(ipa_propagate_frequency): Use frequency function.
+ 	(ipa_profile): Cleanup.
+ 	* ipa-prop.c (ipa_make_edge_direct_to_target): Do not pass frequency
+ 	* ipa-utils.c (ipa_merge_profiles): Merge all profiles.
+ 	* lto-cgraph.c (lto_output_edge): Do not stream frequency.
+ 	(input_node): Do not stream frequency.
+ 	(input_edge): Do not stream frequency.
+ 	(merge_profile_summaries): Scale only IPA profiles.
+ 	* omp-simd-clone.c (simd_clone_adjust): Do not pass frequency.
+ 	* predict.c (drop_profile): Do not recompute frequency.
+ 	* trans-mem.c (ipa_tm_insert_irr_call): Do not pass frequency.
+ 	(ipa_tm_insert_gettmclone_call): Do not pass frequency.
+ 	* tree-cfg.c (execute_fixup_cfg): Drop profile to global0 if needed.
+ 	* tree-chkp.c (chkp_copy_bounds_for_assign): Do not pass frequency.
+ 	* tree-emutls.c (gen_emutls_addr): Do not pass frequency.
+ 	* tree-inline.c (copy_bb): Do not scale frequency.
+ 	(expand_call_inline): Do not scale frequency.
+ 	(tree_function_versioning): Do not scale frequency.
+ 	* ubsan.c (ubsan_create_edge): Do not pass frequency.
+ 
+ 2017-11-10  Julia Koval  <julia.koval@intel.com>
+ 
+ 	* config/i386/gfniintrin.h (_mm_gf2p8affine_epi64_epi8)
+ 	(_mm256_gf2p8affine_epi64_epi8, _mm_mask_gf2p8affine_epi64_epi8)
+ 	(_mm_maskz_gf2p8affine_epi64_epi8, _mm256_mask_gf2p8affine_epi64_epi8)
+ 	(_mm256_maskz_gf2p8affine_epi64_epi8)
+ 	(_mm512_mask_gf2p8affine_epi64_epi8, _mm512_gf2p8affine_epi64_epi8)
+ 	(_mm512_maskz_gf2p8affine_epi64_epi8): New intrinsics.
+ 	* config/i386/i386-builtin.def (__builtin_ia32_vgf2p8affineqb_v64qi)
+ 	(__builtin_ia32_vgf2p8affineqb_v32qi)
+ 	(__builtin_ia32_vgf2p8affineqb_v16qi): New builtins.
+ 	* config/i386/sse.md (vgf2p8affineqb_<mode><mask_name>): New pattern.
+ 
+ 2017-11-10  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR target/82641
+ 	* config/arm/arm.c
+ 	(arm_option_override): Refactor.
+ 	(arm_option_reconfigure_globals): New.
+ 	(arm_options_perform_arch_sanity_checks): New.
+ 	* config/arm/arm-protos.h (arm_option_reconfigure_globals):
+ 	New prototype.
+ 	(arm_options_perform_arch_sanity_checks): Likewise
+ 
+ 2017-11-10  Pat Haugen  <pthaugen@us.ibm.com>
+ 
+ 	* rs6000/power9.md (power9-qpdiv): Correct DFU pipe usage.
+ 	(power9-qpmul): New.
+ 	* rs6000/rs6000.md ("type" attr): Add qmul.
+ 	(mul<mode>3, fma<mode>4_hw, *fms<mode>4_hw, *nfma<mode>4_hw,
+ 	*nfms<mode>4_hw, mul<mode>3_odd, fma<mode>4_odd, *fms<mode>4_odd,
+ 	*nfma<mode>4_odd, *nfms<mode>4_odd): Change type to qmul.
+ 
+ 2017-11-10  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR c/81117
+ 	* builtins.c (compute_objsize): Handle arrays that
+ 	compute_builtin_object_size likes to fail for.  Make extern.
+ 	* builtins.h (compute_objsize): Declare.
+ 	(check_strncpy_sizes): New function.
+ 	(expand_builtin_strncpy): Call check_strncpy_sizes.
+ 	* gimple-fold.c (gimple_fold_builtin_strncpy): Implement
+ 	-Wstringop-truncation.
+ 	(gimple_fold_builtin_strncat): Same.
+ 	* gimple.c (gimple_build_call_from_tree): Set call location.
+ 	* tree-ssa-strlen.c (strlen_to_stridx): New global variable.
+ 	(maybe_diag_bound_equal_length, is_strlen_related_p): New functions.
+ 	(handle_builtin_stxncpy, handle_builtin_strncat): Same.
+ 	(handle_builtin_strlen): Use strlen_to_stridx.
+ 	(strlen_optimize_stmt): Handle flavors of strncat, strncpy, and
+ 	stpncpy.
+ 	Use strlen_to_stridx.
+ 	(pass_strlen::execute): Release strlen_to_stridx.
+ 	* doc/invoke.texi (-Wsizeof-pointer-memaccess): Document enhancement.
+ 	(-Wstringop-truncation): Document new option.
+ 
+ 2017-11-10  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR gcov-profile/82702
+ 	* gcov.c (main): Handle intermediate files in a different
+ 	way.
+ 	(get_gcov_intermediate_filename): New function.
+ 	(output_gcov_file): Remove support of intermediate files.
+ 	(generate_results): Allocate intermediate file.
+ 	(release_structures): Clean-up properly fn_end.
+ 	(output_intermediate_file): Start iterating with line 1.
+ 
+ 2017-11-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/82929
+ 	* gimple-ssa-store-merging.c (struct store_immediate_info): Add
+ 	ops_swapped_p non-static data member.
+ 	(store_immediate_info::store_immediate_info): Clear it.
+ 	(imm_store_chain_info::coalesce_immediate_stores): If swapping
+ 	ops set ops_swapped_p.
+ 	(count_multiple_uses): Handle ops_swapped_p.
+ 
+ 2017-11-10  Martin Liska  <mliska@suse.cz>
+ 
+ 	* coverage.c (coverage_init): Stream information about
+ 	support of has_unexecuted_blocks.
+ 	* doc/gcov.texi: Document that.
+ 	* gcov-dump.c (dump_gcov_file): Support it in gcov_dump tool.
+ 	* gcov.c (read_graph_file): Likewise.
+ 	(output_line_beginning): Fix a small issue with
+ 	color output.
+ 
+ 2017-11-10  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-predcom.c (determine_roots_comp): Avoid memory leak by freeing
+ 	reference of trivial component.
+ 
+ 2017-11-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR bootstrap/82916
+ 	* gimple-ssa-store-merging.c
+ 	(pass_store_merging::terminate_all_aliasing_chains): For
+ 	gimple_store_p stmts also call refs_output_dependent_p.
+ 
+ 	PR rtl-optimization/82913
+ 	* compare-elim.c (try_merge_compare): Punt if def_insn is not
+ 	single set.
+ 
+ 2017-11-09  Jeff Law  <law@redhat.com>
+ 
+ 	* vr-values.h: New file with vr_values class.
+ 	* tree-vrp.c: Include vr-values.h
+ 	(vrp_value_range_pool, vrp_equiv_obstack, num_vr_values): Move static
+ 	data objects into the vr_values class.
+ 	(vr_value, values_propagated, vr_phi_edge_counts): Likewise.
+ 	(get_value_range): Make it a member function within vr_values class.
+ 	(set_defs_to_varying, update_value_range, add_equivalence): Likewise.
+ 	(vrp_stmt_computes_nonzero_p, op_with_boolean_value_range_p): Likewise.
+ 	(op_with_constant_singleton_value_range): Likewise.
+ 	(extract_range_for_var_from_comparison_expr): Likewise.
+ 	(extract_range_from_assert, extract_range_from_ssa_name): Likewise.
+ 	(extract_range_from_binary_expr): Likewise.
+ 	(extract_range_from_unary_expr): Likewise.
+ 	(extract_range_from_cond_expr, extrat_range_from_comparison): Likewise.
+ 	(check_for_binary_op_overflow, extract_range_basic): Likewise.
+ 	(extract_range_from_assignment, adjust_range_with_scev): Likewise.
+ 	(dump_all_value_ranges, get_vr_for_comparison): Likewise.
+ 	(compare_name_with_value, compare_names): Likewise.
+ 	(vrp_evaluate_conditional_warnv_with_ops_using_ranges): Likewise.
+ 	(vrp_evaluate_conditional_warnv_with_ops): Likewise.  Remove prototype.
+ 	(vrp_evaluate_conditional, vrp_visit_cond_stmt): Likewise.
+ 	(vrp_visit_switch_stmt, extract_range_from_stmt): Likewise.
+ 	(extract_range_from_phi_node): Likewise.
+ 	(simplify_truth_ops_using_ranges): Likewise.
+ 	(simplify_div_or_mod_using_ranges): Likewise.
+ 	(simplify_min_or_max_using_ranges, simplify_abs_using_ranges): Likewise.
+ 	(simplify_bit_ops_using_ranges, simplify_cond_using_ranges_1): Likewise.
+ 	(simplify_cond_using_ranges_2, simplify_switch_using_ranges): Likewise.
+ 	(simplify_float_conversion_using_ranges): Likewise.
+ 	(simplify_internal_call_using_ranges): Likewise.
+ 	(two_valued_val_range_p, simplify_stmt_using_ranges): Likewise.
+ 	(vrp_visit_assignment_or_call): Likewise.  Smuggle class instance
+ 	poitner via x_vr_values for calls into gimple folder.
+ 	(vrp_initialize_lattice): Make this the vr_values ctor.
+ 	(vrp_free_lattice): Make this the vr_values dtor.
+ 	(set_vr_value): New function.
+ 	(class vrp_prop): Add vr_values data member.  Add various member
+ 	functions as well as member functions that delegate to vr_values.
+ 	(check_array_ref): Make a member function within vrp_prop class.
+ 	(search_for_addr_array, vrp_initialize): Likewise.
+ 	(vrp_finalize): Likewise.  Revamp to avoid direct access to
+ 	vr_value, values_propagated, etc.
+ 	(check_array_bounds): Extract vrp_prop class instance pointer from
+ 	walk info structure.  Use it to call member functions.
+ 	(check_all_array_refs): Make a member function within vrp_prop class.
+ 	Smuggle class instance pointer via walk info structure.
+ 	(x_vr_values): New local static.
+ 	(vrp_valueize): Use x_vr_values to get class instance.
+ 	(vr_valueize_1): Likewise.
+ 	(class vrp_folder): Add vr_values data member.  Add various member
+ 	functions as well as member functions that delegate to vr_values.
+ 	(fold_predicate_in): Make a mber fucntion within vrp_folder class.
+ 	(simplify_stmt_for_jump_threading): Extract smuggled vr_values
+ 	class instance from vr_values.  Use it to call member functions.
+ 	(vrp_dom_walker): Add vr_values data member.
+ 	(vrp_dom_walker::after_dom_children): Smuggle vr_values class
+ 	instance via x_vr_values.
+ 	(identify_jump_threads): Accept vr_values as argument.  Store
+ 	it into the walker structure.
+ 	(evrp_dom_walker): Add vr_values class data member.  Add various
+ 	delegators.
+ 	(evrp_dom_walker::try_find_new_range): Use vr_values data
+ 	member to access the memory allocator.
+ 	(evrp_dom_walker::before_dom_children): Store vr_values class
+ 	instance into the vrp_folder class.
+ 	(evrp_dom_walker::push_value_range): Rework to avoid direct
+ 	access to num_vr_values and vr_value.
+ 	(evrp_dom_walker::pop_value_range): Likewise.
+ 	(execute_early_vrp): Remove call to vrp_initialize_lattice.
+ 	Use vr_values to get to dump_all_value_ranges member function.
+ 	Remove call to vrp_free_lattice.  Call vrp_initialize, vrp_finalize,
+ 	and simplify_cond_using_ranges_2 via vrp_prop class instance.
+ 	Pass vr_values class instance down to identify_jump_threads.
+ 	Remove call to vrp_free_lattice.
+ 	(debug_all_value_ranges): Remove.
+ 
+ 	* tree-vrp.c (vrp_prop): Move class to earlier point in the file.
+ 	(vrp_folder): Likewise.
+ 
+ 	* tree-vrp.c (set_value_range): Do not reference vrp_equiv_obstack.
+ 	Get it from the existing bitmap instead.
+ 	(vrp_intersect_ranges_1): Likewise.
+ 
+ 2017-11-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* gimple-ssa-store-merging.c (struct store_immediate_info): Add
+ 	bit_not_p field.
+ 	(store_immediate_info::store_immediate_info): Add bitnotp argument,
+ 	set bit_not_p to it.
+ 	(imm_store_chain_info::coalesce_immediate_stores): Break group
+ 	if bit_not_p is different.
+ 	(count_multiple_uses, split_group,
+ 	imm_store_chain_info::output_merged_store): Handle info->bit_not_p.
+ 	(handled_load): Avoid multiple chained BIT_NOT_EXPRs.
+ 	(pass_store_merging::process_store): Handle BIT_{AND,IOR,XOR}_EXPR
+ 	result inverted using BIT_NOT_EXPR, compute bit_not_p, pass it
+ 	to store_immediate_info ctor.
+ 
+ 2017-11-09  Jim Wilson  <jimw@sifive.com>
+ 
+ 	* collect2.c (OBJECT_FORMAT_COFF): Remove EXTENDED_COFF support.
+ 	(scan_prog_file): Likewise.
+ 
+ 2017-11-09  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* bb-reorder.c (max_entry_frequency): Remove.
+ 	(find_traces, rotate_loop, mark_bb_visited, connect_better_edge_p,
+ 	connect_traces, push_to_next_round_p): Remove prototypes.
+ 	(find_traces_1_round): Use counts only.
+ 	(push_to_next_round_p): Likewise.
+ 	(find_traces): Likewise.
+ 	(rotate_loop): Likewise.
+ 	(find_traces_1_round): Likewise.
+ 	(connect_traces): Likewise.
+ 	(edge_order): Likewise.
+ 
+ 2017-11-09  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	* config/arm/arm.c (output_return_instruction): Add comments to
+ 	indicate requirement for cmse_nonsecure_entry return to account
+ 	for the size of clearing instruction output here.
+ 	(thumb_exit): Likewise.
+ 	* config/arm/thumb2.md (thumb2_cmse_entry_return): Fix length for
+ 	return in hardfloat mode.
+ 
+ 2017-11-09  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/rs6000.c (machine_function): Add a bool,
+ 	"toc_is_wrapped_separately".
+ 	(rs6000_option_override_internal): Enable OPTION_MASK_SAVE_TOC_INDIRECT
+ 	if it wasn't explicitly set or unset, we are optimizing for speed, and
+ 	doing separate shrink-wrapping.
+ 	(rs6000_get_separate_components): Enable the TOC component if
+ 	saving the TOC register in the prologue.
+ 	(rs6000_components_for_bb): Handle the TOC component.
+ 	(rs6000_emit_prologue_components): Store the TOC register where needed.
+ 	(rs6000_set_handled_components): Mark TOC as handled, if handled.
+ 	(rs6000_emit_prologue): Don't save the TOC if that is already done.
+ 
+ 2017-11-09  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* ipa-param-manipulation.c: New file.
+ 	* ipa-param-manipulation.h: Likewise.
+ 	* Makefile.in (OBJS): Add ipa-param-manipulation.o.
+ 	(PLUGIN_HEADERS): Addded ipa-param-manipulation.h
+ 	* ipa-param.h (ipa_parm_op): Moved to ipa-param-manipulation.h.
+ 	(ipa_parm_adjustment): Likewise.
+ 	(ipa_parm_adjustment_vec): Likewise.
+ 	(ipa_get_vector_of_formal_parms): Moved declaration to
+ 	ipa-param-manipulation.h.
+ 	(ipa_get_vector_of_formal_parm_types): Likewise.
+ 	(ipa_modify_formal_parameters): Likewise.
+ 	(ipa_modify_call_arguments): Likewise.
+ 	(ipa_combine_adjustments): Likewise.
+ 	(ipa_dump_param_adjustments): Likewise.
+ 	(ipa_modify_expr): Likewise.
+ 	(ipa_get_adjustment_candidate): Likewise.
+ 	* ipa-prop.c (ipa_get_vector_of_formal_parms): Moved to
+ 	ipa-param-manipulation.c.
+ 	(ipa_get_vector_of_formal_parm_types): Likewise.
+ 	(ipa_modify_formal_parameters): Likewise.
+ 	(ipa_modify_call_arguments): Likewise.
+ 	(ipa_modify_expr): Likewise.
+ 	(get_ssa_base_param): Likewise.
+ 	(ipa_get_adjustment_candidate): Likewise.
+ 	(index_in_adjustments_multiple_times_p): Likewise.
+ 	(ipa_combine_adjustments): Likewise.
+ 	(ipa_dump_param_adjustments): Likewise.
+ 	* tree-sra.c: Also include ipa-param-manipulation.h
+ 	* omp-simd-clone.c: Include ipa-param-manipulation.h instead of
+ 	ipa-param.h.
+ 
+ 2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* doc/sourcebuild.texi (vect_masked_store): Document.
+ 
+ 2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* doc/sourcebuild.texi (vect_align_stack_vars): Document.
+ 
+ 2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* doc/sourcebuild.texi (vect_variable_length): Document.
+ 
+ 2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* doc/sourcebuild.texi (vect_unaligned_possible): Document.
+ 
+ 2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* doc/sourcebuild.texi (vect_element_align_preferred): Document.
+ 
+ 2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* doc/sourcebuild.texi (vect_perm_short, vect_perm_byte): Document
+ 	previously undocumented selectors.
+ 	(vect_perm3_byte, vect_perm3_short, vect_perm3_int): Document.
+ 
+ 2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* doc/rtl.texi (const_vector): Say that elements can be
+ 	const_wide_ints too.
+ 	* emit-rtl.h (valid_for_const_vec_duplicate_p): Declare.
+ 	* emit-rtl.c (valid_for_const_vec_duplicate_p): New function.
+ 	(gen_vec_duplicate): Use it instead of CONSTANT_P.
+ 	* optabs.c (expand_vector_broadcast): Likewise.
+ 
+ 2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* tree-ssa-loop-ivopts.c (get_address_cost): Try using a
+ 	scaled index even if the unscaled address was invalid.
+ 	Don't increase the complexity of using a scale in that case.
+ 
+ 2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* doc/rtl.texi: Rewrite the subreg rules so that they partition
+ 	the inner register into REGMODE_NATURAL_SIZE bytes rather than
+ 	UNITS_PER_WORD bytes.
+ 	* emit-rtl.c (validate_subreg): Divide subregs into blocks
+ 	based on REGMODE_NATURAL_SIZE of the inner mode.
+ 	(gen_lowpart_common): Split the SCALAR_FLOAT_MODE_P and
+ 	!SCALAR_FLOAT_MODE_P cases.  Use REGMODE_NATURAL_SIZE for the latter.
+ 	* expmed.c (lowpart_bit_field_p): Divide the value up into
+ 	chunks of REGMODE_NATURAL_SIZE rather than UNITS_PER_WORD.
+ 	* expr.c (store_constructor): Use REGMODE_NATURAL_SIZE to test
+ 	whether something is likely to occupy more than one register.
+ 
+ 2017-11-09  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR ipa/82879
+ 	* ipa-inline-transform.c (update_noncloned_frequencies): Use
+ 	profile_count::adjust_for_ipa_scaling.
+ 	* tree-inline.c (copy_bb, copy_cfg_body): Likewise.
+ 	* profile-count.c (profile_count::adjust_for_ipa_scaling): New member
+ 	function.
+ 	* profile-count.h (profile_count::adjust_for_ipa_scaling): Declare.
+ 
+ 2017-11-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* gimple-ssa-store-merging.c (count_multiple_uses): New function.
+ 	(split_group): Add total_orig and total_new arguments, estimate the
+ 	number of statements related to the store group without store merging
+ 	and with store merging.
+ 	(imm_store_chain_info::output_merged_store): Adjust split_group
+ 	callers, punt if estimated number of statements with store merging
+ 	is not smaller than estimated number of statements without it.
+ 	Formatting fix.
+ 	(handled_load): Remove has_single_use checks.
+ 	(pass_store_merging::process_store): Likewise.
+ 
+ 2017-11-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/82902
+ 	* tree-ssa-phiprop.c (propagate_with_phi): Test proper type.
+ 
+ 2017-11-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR target/82863
+ 	* emit-rtl.c (init_emit_regs): Initialize split_branch_probability to
+ 	uninitialized.
+ 
+ 2017-11-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR tree-optimization/82669
+ 	* sbitmap.h (bmp_iter_set_init): Remove non needed check.
+ 
+ 2017-11-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR gcov-profile/48463
+ 	* coverage.c (coverage_begin_function): Output also end locus
+ 	of a function and information whether the function is
+ 	artificial.
+ 	* gcov-dump.c (tag_function): Parse and print the information.
+ 	* gcov.c (INCLUDE_MAP): Add include.
+ 	(INCLUDE_SET): Likewise.
+ 	(struct line_info): Move earlier in the source file because
+ 	of vector<line_info> in function_info structure.
+ 	(line_info::line_info): Likewise.
+ 	(line_info::has_block): Likewise.
+ 	(struct source_info): Add new member index.
+ 	(source_info::get_functions_at_location): New function.
+ 	(function_info::group_line_p): New function.
+ 	(output_intermediate_line): New function.
+ 	(output_intermediate_file): Use the mentioned function.
+ 	(struct function_start): New.
+ 	(struct function_start_pair_hash): Likewise.
+ 	(process_file): Add code that identifies group functions.
+ 	Assign lines either to global or function scope.
+ 	(generate_results): Skip artificial functions.
+ 	(find_source): Assign index for each source file.
+ 	(read_graph_file): Read new flag artificial and end_line.
+ 	(add_line_counts): Assign it either to global of function scope.
+ 	(accumulate_line_counts): Isolate core of the function to
+ 	accumulate_line_info and call it for both function and global
+ 	scope lines.
+ 	(accumulate_line_info): New function.
+ 	(output_line_beginning): Fix GNU coding style.
+ 	(print_source_line): New function.
+ 	(output_line_details): Likewise.
+ 	(output_function_details): Likewise.
+ 	(output_lines): Iterate both source (global) scope and function
+ 	scope.
+ 	(struct function_line_start_cmp): New class.
+ 	* doc/gcov.texi: Reflect changes in documentation.
+ 
+ 2017-11-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/82837
+ 	* dwarf2out.c (const_ok_for_output_1): Reject NEG in addition to NOT.
+ 	(mem_loc_descriptor): Handle (const (neg (...))) as (neg (const (...)))
+ 	and similarly for not instead of neg.
+ 
+ 2017-11-08  Andi Kleen  <ak@linux.intel.com>
+ 
+ 	* config/i386/i386.opt: Add -mforce-indirect-call.
+ 	* config/i386/predicates.md: Check for flag_force_indirect_call.
+ 	* doc/invoke.texi: Document -mforce-indirect-call
+ 
+ 2017-11-08  Kito Cheng  <kito.cheng@gmail.com>
+ 
+ 	* config/riscv/riscv-protos.h (riscv_slow_unaligned_access_p):
+ 	New extern.
+ 	(MOVE_RATIO): Use riscv_slow_unaligned_access_p.
+ 	config/riscv/riscv.c (predict.h): New include.
+ 	(riscv_slow_unaligned_access_p): No longer static.
+ 	(riscv_block_move_straight): Add require.
+ 	* config/riscv/riscv-protos.h (riscv_hard_regno_nregs): Delete.
+ 
+ 2017-11-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/82855
+ 	* config/i386/sse.md (<avx512>_eq<mode>3<mask_scalar_merge_name>,
+ 	<avx512>_eq<mode>3<mask_scalar_merge_name>_1): Use
+ 	nonimmediate_operand predicate for operand 1 instead of
+ 	register_operand.
+ 
+ 2017-11-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* config/aarch64/aarch64-simd.md (store_pair_lanes<mode>):
+ 	New pattern.
+ 	* config/aarch64/constraints.md (Uml): New constraint.
+ 	* config/aarch64/predicates.md (aarch64_mem_pair_lanes_operand): New
+ 	predicate.
+ 
+ 2017-11-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* simplify-rtx.c (simplify_ternary_operation): Simplify vec_merge
+ 	of two vec_duplicates into a vec_concat.
+ 
+ 2017-11-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* simplify-rtx.c (simplify_ternary_operation, VEC_MERGE):
+ 	Simplify vec_merge of vec_duplicate and vec_concat.
+ 	* config/aarch64/constraints.md (Utq): New constraint.
+ 	* config/aarch64/aarch64-simd.md (load_pair_lanes<mode>): New
+ 	define_insn.
+ 
+ 2017-11-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* simplify-rtx.c (simplify_ternary_operation, VEC_MERGE):
+ 	Simplify vec_merge of vec_duplicate and const_vector.
+ 	* config/aarch64/predicates.md (aarch64_simd_or_scalar_imm_zero):
+ 	New predicate.
+ 	* config/aarch64/aarch64-simd.md (*aarch64_combinez<mode>): Use VDC
+ 	mode iterator.  Update predicate on operand 1 to
+ 	handle non-const_vec constants.  Delete constraints.
+ 	(*aarch64_combinez_be<mode>): Likewise for operand 2.
+ 
+ 2017-11-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/78821
+ 	* gimple-ssa-store-merging.c (struct store_operand_info): Add bit_not_p
+ 	data member.
+ 	(store_operand_info::store_operand_info): Initialize it to false.
+ 	(pass_store_merging::terminate_all_aliasing_chains): Rewritten to use
+ 	ref_maybe_used_by_stmt_p and stmt_may_clobber_ref_p on lhs of each
+ 	store in the group, and if chain_info is non-NULL, to ignore altogether
+ 	that chain.
+ 	(compatible_load_p): Fail if bit_not_p does not match.
+ 	(imm_store_chain_info::output_merged_store): Handle bit_not_p loads.
+ 	(handled_load): Fill in bit_not_p.  Handle BIT_NOT_EXPR.
+ 	(pass_store_merging::process_store): Adjust
+ 	terminate_all_aliasing_chains calls to pass NULL in all current spots,
+ 	call terminate_all_aliasing_chains newly when adding a store into
+ 	a chain with non-NULL chain_info.
+ 
+ 2017-11-08  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_can_eliminate): Simplify logic.
+ 
+ 2017-11-08  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_frame_pointer_required)
+ 	Remove.
+ 	(aarch64_layout_frame): Initialise emit_frame_chain.
+ 	(aarch64_can_eliminate): Remove omit leaf frame pointer code.
+ 	(TARGET_FRAME_POINTER_REQUIRED): Remove define.
+ 
+ 2017-11-08  Martin Liska  <mliska@suse.cz>
+ 
+ 	* gimplify.c (expand_FALLTHROUGH_r): Simplify usage
+ 	of gimple_call_internal_p.
+ 
+ 2017-11-07  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	* config/mips/mips.h (ASM_OUTPUT_LABELREF): Wrap in "do {} while (0)".
+ 
+ 2017-11-07  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	* config/mips/mips.h (ASM_OUTPUT_CASE_END): Remove semicolon after
+ 	"do {} while (0)".
+ 
+ 2017-11-08  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR sanitizer/82792
+ 	* gimplify.c (expand_FALLTHROUGH_r): Skip IFN_ASAN_MARK.
+ 
+ 2017-11-07  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gimple-pretty-print.c (dump_profile): Return "" instead of NULL.
+ 
+ 2017-11-07  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/82855
+ 	* config/i386/i386.md (SWI1248_AVX512BWDQ2_64): New mode iterator.
+ 	(*cmp<mode>_ccz_1): New insn with $k alternative.
+ 
+ 	PR target/82855
+ 	* config/i386/i386.c (ix86_swap_binary_operands_p): Treat
+ 	RTX_COMM_COMPARE as commutative as well.
+ 	(ix86_binary_operator_ok): Formatting fix.
+ 	* config/i386/sse.md (*mul<mode>3<mask_name><round_name>,
+ 	*<code><mode>3<mask_name><round_saeonly_name>,
+ 	*<code><mode>3<mask_name>, *<code>tf3, *mul<mode>3<mask_name>,
+ 	*<s>mul<mode>3_highpart<mask_name>,
+ 	*vec_widen_umult_even_v16si<mask_name>,
+ 	*vec_widen_umult_even_v8si<mask_name>,
+ 	*vec_widen_umult_even_v4si<mask_name>,
+ 	*vec_widen_smult_even_v16si<mask_name>,
+ 	*vec_widen_smult_even_v8si<mask_name>, *sse4_1_mulv2siv2di3<mask_name>,
+ 	*avx2_pmaddwd, *sse2_pmaddwd, *<sse4_1_avx2>_mul<mode>3<mask_name>,
+ 	*avx2_<code><mode>3, *avx512f_<code><mode>3<mask_name>,
+ 	*sse4_1_<code><mode>3<mask_name>, *<code>v8hi3,
+ 	*sse4_1_<code><mode>3<mask_name>, *<code>v16qi3, *avx2_eq<mode>3,
+ 	<avx512>_eq<mode>3<mask_scalar_merge_name>_1, *sse4_1_eqv2di3,
+ 	*sse2_eq<mode>3, <mask_codefor><code><mode>3<mask_name>,
+ 	*<code><mode>3, *<sse2_avx2>_uavg<mode>3<mask_name>,
+ 	*<ssse3_avx2>_pmulhrsw<mode>3<mask_name>, *ssse3_pmulhrswv4hi3): Use
+ 	!(MEM_P (operands[1]) && MEM_P (operands[2])) condition instead of
+ 	ix86_binary_operator_ok.  Formatting fixes.
+ 	(*<plusminus_insn><mode>3<mask_name><round_name>,
+ 	*<plusminus_insn><mode>3, *<plusminus_insn><mode>3_m): Formatting
+ 	fixes.
+ 
+ 2017-11-07  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/rs6000.md (GPR2): New mode_iterator.
+ 	("cstore<mode>4"): Don't always expand with rs6000_emit_int_cmove for
+ 	eq and ne if TARGET_ISEL.
+ 	(cmp): New code_iterator.
+ 	(UNS, UNSU_, UNSIK): New code_attrs.
+ 	(<code><GPR:mode><GPR2:mode>2_isel): New define_insn_and_split.
+ 	("eq<mode>3"): New define_expand, rename the define_insn_and_split
+ 	to...
+ 	("eq<mode>3"): ... this.
+ 	("ne<mode>3"): New define_expand, rename the define_insn_and_split
+ 	to...
+ 	("ne<mode>3"): ... this.
+ 
+ 2017-11-07  Julia Koval  <julia.koval@intel.com>
+ 
+ 	PR target/82812
+ 	* common/config/i386/i386-common.c
+ 	(OPTION_MASK_ISA_GENERAL_REGS_ONLY_UNSET): Remove MPX from flag.
+ 	(ix86_handle_option): Move MPX to isa_flags2 and GFNI to isa_flags.
+ 	* config/i386/i386-c.c (ix86_target_macros_internal): Ditto.
+ 	* config/i386/i386.opt: Ditto.
+ 	* config/i386/i386.c (ix86_target_string): Ditto.
+ 	(ix86_option_override_internal): Ditto.
+ 	(ix86_init_mpx_builtins): Move MPX to args2.
+ 	(ix86_expand_builtin): Special handling for OPTION_MASK_ISA_GFNI.
+ 	* config/i386/i386-builtin.def (__builtin_ia32_vgf2p8affineinvqb_v64qi,
+ 	__builtin_ia32_vgf2p8affineinvqb_v64qi_mask,
+ 	__builtin_ia32_vgf2p8affineinvqb_v32qi,
+ 	__builtin_ia32_vgf2p8affineinvqb_v32qi_mask,
+ 	__builtin_ia32_vgf2p8affineinvqb_v16qi,
+ 	__builtin_ia32_vgf2p8affineinvqb_v16qi_mask): Move to ARGS array.
+ 
+ 2017-11-07  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/80425
+ 	* config/i386.i386.md (*zero_extendsidi2): Change (?r,*Yj), (?*Yi,r)
+ 	and (*x,m) to ($r,Yj), ($Yi,r) and ($x,m).
+ 	(zero-extendsidi peephole2): Remove peephole.
+ 
+ 2017-11-07  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR c/53037
+ 	* stor-layout.c: Include attribs.h.
+ 	(handle_warn_if_not_align): Replace test on TYPE_USER_ALIGN with
+ 	explicit lookup of "aligned" attribute.
+ 
+ 2017-11-07  Andrew Waterman  <andrew@sifive.com>
+ 
+ 	* config/riscv/riscv-protos.h (riscv_hard_regno_nregs): New prototype.
+ 	(riscv_expand_block_move): Likewise.
+ 	* config/riscv/riscv.h (MOVE_RATIO): Tune cost to movmemsi
+ 	implementation.
+ 	(RISCV_MAX_MOVE_BYTES_PER_LOOP_ITER): New define.
+ 	(RISCV_MAX_MOVE_BYTES_STRAIGHT): New define.
+ 	* config/riscv/riscv.c (riscv_block_move_straight): New function.
+ 	(riscv_adjust_block_mem): Likewise.
+ 	(riscv_block_move_loop): Likewise.
+ 	(riscv_expand_block_move): Likewise.
+ 	* config/riscv/riscv.md (movmemsi): New pattern.
+ 
+ 2017-11-07  Michael Clark  <michaeljclark@mac.com>
+ 
+ 	* config/riscv/linux.h (MUSL_ABI_SUFFIX): New define.
+ 	(MUSL_DYNAMIC_LINKER): Likewise.
+ 
+ 2017-11-07  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* config/aarch64/aarch64.md (ashl<mode>3, ashr<mode>3, lshr<mode>3)
+ 	(rotr<mode>3, rotl<mode>3): Use aarch64_reg_or_imm instead of
+ 	nonmmory_operand.
+ 
+ 2017-11-07  Richard Biener  <rguenther@suse.de>
+ 
+ 	* match.pd: Fix build.
+ 
+ 2017-11-07  Wilco Dijkstra  <wdijkstr@arm.com>
+ 	    Jackson Woodruff  <jackson.woodruff@arm.com>
+ 
+ 	PR tree-optimization/71026
+ 	* match.pd: Canonicalize negate in division.
+ 
+ 2017-11-07  Sudakshina Das  <sudi.das@arm.com>
+ 
+ 	PR middle-end/80131
+ 	* match.pd: Simplify 1 << (C - x) where C = precision (x) - 1.
+ 
+ 2017-11-07  Marc Glisse  <marc.glisse@inria.fr>
+ 
+ 	* match.pd ((a&~b)|(a^b),(a&~b)^~a,(a|b)&~(a^b),a|~(a^b),
+ 	(a|b)|(a&^b),(a&b)|~(a^b),~(~a&b),~X^Y): New transformations.
+ 
+ 2017-11-07  Marc Glisse  <marc.glisse@inria.fr>
+ 
+ 	* fold-const.c (negate_expr_p) [PLUS_EXPR, MINUS_EXPR]: Handle
+ 	non-scalar integral types.
+ 	* match.pd (negate_expr_p): Handle MINUS_EXPR.
+ 	(-(A-B), -(~A)): New transformations.
+ 
+ 2017-11-07  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	* config/powerpcspe/aix43.h (SUBTARGET_OVERRIDE_OPTIONS): Remove
+ 	semicolon after "do {} while (0)".
+ 	* config/powerpcspe/aix51.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
+ 	* config/powerpcspe/aix52.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
+ 	* config/powerpcspe/aix53.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
+ 	* config/powerpcspe/aix61.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
+ 	* config/powerpcspe/aix71.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
+ 
+ 2017-11-07  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	* config/rs6000/aix43.h (SUBTARGET_OVERRIDE_OPTIONS): Remove semicolon
+ 	after "do {} while (0)".
+ 	* config/rs6000/aix51.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
+ 	* config/rs6000/aix52.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
+ 	* config/rs6000/aix53.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
+ 	* config/rs6000/aix61.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
+ 	* config/rs6000/aix71.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
+ 
+ 2017-11-07  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	PR other/82784
+ 	* config/arm/arm.c (HANDLE_NARROW_SHIFT_ARITH): Remove semicolon after
+ 	"while {} do (0)".
+ 	(arm_rtx_costs_internal): Add missing semicolon after
+ 	HANDLE_NARROW_SHIFT_ARITH call.
+ 
+ 2017-11-06  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_option_override_internal): Don't
+ 	disable isel if it was not set explicitly.
+ 
+ 2017-11-06  James Bowman  <james.bowman@ftdichip.com>
+ 
+ 	* gcc/dwarf2out.c (modified_type_die): Retain ADDR_SPACE qualifiers.
+ 	(add_type_attribute) likewise.
+ 
+ 2017-11-06  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	* config/i386/i386.c (ix86_can_use_return_insn_p): Use reference
+ 	of struct ix86_frame.
+ 	(ix86_initial_elimination_offset): Likewise.
+ 	(ix86_expand_split_stack_prologue): Likewise.
+ 
+ 2017-11-06  Marc Glisse  <marc.glisse@inria.fr>
+ 
+ 	* tree-vrp.h (enum value_range_type): Update stale comment.
+ 
+ 2017-11-06  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* config/aarch64/aarch64-protos.h (aarch64_expand_vec_perm)
+ 	(aarch64_expand_vec_perm_const): Take the number of units too.
+ 	* config/aarch64/aarch64.c (aarch64_expand_vec_perm)
+ 	(aarch64_expand_vec_perm_const): Likewise.
+ 	* config/aarch64/aarch64-simd.md (vec_perm_const<mode>)
+ 	(vec_perm<mode>): Update accordingly.
+ 
+ 2017-11-06  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* config/aarch64/aarch64-protos.h (aarch64_simd_vect_par_cnst_half):
+ 	Take the number of units too.
+ 	* config/aarch64/aarch64.c (aarch64_simd_vect_par_cnst_half): Likewise.
+ 	(aarch64_simd_check_vect_par_cnst_half): Update call accordingly,
+ 	but check for a vector mode before rather than after the call.
+ 	* config/aarch64/aarch64-simd.md (aarch64_split_simd_mov<mode>)
+ 	(move_hi_quad_<mode>, vec_unpack<su>_hi_<mode>)
+ 	(vec_unpack<su>_lo_<mode, vec_widen_<su>mult_lo_<mode>)
+ 	(vec_widen_<su>mult_hi_<mode>, vec_unpacks_lo_<mode>)
+ 	(vec_unpacks_hi_<mode>, aarch64_saddl2<mode>, aarch64_uaddl2<mode>)
+ 	(aarch64_ssubl2<mode>, aarch64_usubl2<mode>, widen_ssum<mode>3)
+ 	(widen_usum<mode>3, aarch64_saddw2<mode>, aarch64_uaddw2<mode>)
+ 	(aarch64_ssubw2<mode>, aarch64_usubw2<mode>, aarch64_sqdmlal2<mode>)
+ 	(aarch64_sqdmlsl2<mode>, aarch64_sqdmlal2_lane<mode>)
+ 	(aarch64_sqdmlal2_laneq<mode>, aarch64_sqdmlsl2_lane<mode>)
+ 	(aarch64_sqdmlsl2_laneq<mode>, aarch64_sqdmlal2_n<mode>)
+ 	(aarch64_sqdmlsl2_n<mode>, aarch64_sqdmull2<mode>)
+ 	(aarch64_sqdmull2_lane<mode>, aarch64_sqdmull2_laneq<mode>)
+ 	(aarch64_sqdmull2_n<mode>): Update accordingly.
+ 
+ 2017-11-06  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* config/aarch64/aarch64-protos.h (aarch64_reverse_mask): Take
+ 	the number of units too.
+ 	* config/aarch64/aarch64.c (aarch64_reverse_mask): Likewise.
+ 	* config/aarch64/aarch64-simd.md (vec_load_lanesoi<mode>)
+ 	(vec_store_lanesoi<mode>, vec_load_lanesci<mode>)
+ 	(vec_store_lanesci<mode>, vec_load_lanesxi<mode>)
+ 	(vec_store_lanesxi<mode>): Update accordingly.
+ 
+ 2017-11-06  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* config/aarch64/aarch64-protos.h (aarch64_endian_lane_rtx): Declare.
+ 	* config/aarch64/aarch64.c (aarch64_endian_lane_rtx): New function.
+ 	* config/aarch64/aarch64.h (ENDIAN_LANE_N): Take the number
+ 	of units rather than the mode.
+ 	* config/aarch64/iterators.md (nunits): New mode attribute.
+ 	* config/aarch64/aarch64-builtins.c (aarch64_simd_expand_args):
+ 	Use aarch64_endian_lane_rtx instead of GEN_INT (ENDIAN_LANE_N ...).
+ 	* config/aarch64/aarch64-simd.md (aarch64_dup_lane<mode>)
+ 	(aarch64_dup_lane_<vswap_width_name><mode>, *aarch64_mul3_elt<mode>)
+ 	(*aarch64_mul3_elt_<vswap_width_name><mode>): Likewise.
+ 	(*aarch64_mul3_elt_to_64v2df, *aarch64_mla_elt<mode>): Likewise.
+ 	(*aarch64_mla_elt_<vswap_width_name><mode>, *aarch64_mls_elt<mode>)
+ 	(*aarch64_mls_elt_<vswap_width_name><mode>, *aarch64_fma4_elt<mode>)
+ 	(*aarch64_fma4_elt_<vswap_width_name><mode>):: Likewise.
+ 	(*aarch64_fma4_elt_to_64v2df, *aarch64_fnma4_elt<mode>): Likewise.
+ 	(*aarch64_fnma4_elt_<vswap_width_name><mode>): Likewise.
+ 	(*aarch64_fnma4_elt_to_64v2df, reduc_plus_scal_<mode>): Likewise.
+ 	(reduc_plus_scal_v4sf, reduc_<maxmin_uns>_scal_<mode>): Likewise.
+ 	(reduc_<maxmin_uns>_scal_<mode>): Likewise.
+ 	(*aarch64_get_lane_extend<GPI:mode><VDQQH:mode>): Likewise.
+ 	(*aarch64_get_lane_zero_extendsi<mode>): Likewise.
+ 	(aarch64_get_lane<mode>, *aarch64_mulx_elt_<vswap_width_name><mode>)
+ 	(*aarch64_mulx_elt<mode>, *aarch64_vgetfmulx<mode>): Likewise.
+ 	(aarch64_sq<r>dmulh_lane<mode>, aarch64_sq<r>dmulh_laneq<mode>)
+ 	(aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_lane<mode>): Likewise.
+ 	(aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_laneq<mode>): Likewise.
+ 	(aarch64_sqdml<SBINQOPS:as>l_lane<mode>): Likewise.
+ 	(aarch64_sqdml<SBINQOPS:as>l_laneq<mode>): Likewise.
+ 	(aarch64_sqdml<SBINQOPS:as>l2_lane<mode>_internal): Likewise.
+ 	(aarch64_sqdml<SBINQOPS:as>l2_laneq<mode>_internal): Likewise.
+ 	(aarch64_sqdmull_lane<mode>, aarch64_sqdmull_laneq<mode>): Likewise.
+ 	(aarch64_sqdmull2_lane<mode>_internal): Likewise.
+ 	(aarch64_sqdmull2_laneq<mode>_internal): Likewise.
+ 	(aarch64_vec_load_lanesoi_lane<mode>): Likewise.
+ 	(aarch64_vec_store_lanesoi_lane<mode>): Likewise.
+ 	(aarch64_vec_load_lanesci_lane<mode>): Likewise.
+ 	(aarch64_vec_store_lanesci_lane<mode>): Likewise.
+ 	(aarch64_vec_load_lanesxi_lane<mode>): Likewise.
+ 	(aarch64_vec_store_lanesxi_lane<mode>): Likewise.
+ 	(aarch64_simd_vec_set<mode>): Update use of ENDIAN_LANE_N.
+ 	(aarch64_simd_vec_setv2di): Likewise.
+ 
+ 2017-11-06  Carl Love  <cel@us.ibm.com>
+ 
+ 	* config/rs6000/rs6000-c.c (P8V_BUILTIN_VEC_REVB): Add power 8
+ 	definitions.
+ 	(P9V_BUILTIN_VEC_REVB): Remove the power 9 instance definitions.
+ 	* config/rs6000/altivec.h (vec_revb): Change the #define from power 9
+ 	to power 8.
+ 	* config/rs6000/r6000-protos.h (swap_endian_selector_for_mode): Add new
+ 	extern declaration.
+ 	* config/rs6000/rs6000.c (swap_endian_selector_for_mode): Add function.
+ 	* config/rs6000/rs6000-builtin.def (BU_P8V_VSX_1, BU_P8V_OVERLOAD_1):
+ 	Add power 8 macro expansions.
+ 	(BU_P9V_OVERLOAD_1): Remove power 9 overload expansion.
+ 	* config/rs6000/vsx.md (revb_<mode>): Add define_expand to generate
+ 	power 8 instructions.  (VSX_XXBR): Add iterator.
+ 
+ 2017-11-06  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	* config/arm/arm.md (predicable_short_it): Change default to "no",
+ 	improve documentation, remove uses that are identical to the default.
+ 	(enabled_for_depr_it): Rename to enabled_for_short_it.
+ 	* gcc/config/arm/arm-fixed.md (predicable_short_it):
+ 	Remove default uses.
+ 	* gcc/config/arm/ldmstm.md (predicable_short_it): Likewise.
+ 	* gcc/config/arm/sync.md (predicable_short_it): Likewise.
+ 	* gcc/config/arm/thumb2.md (predicable_short_it): Likewise.
+ 	* gcc/config/arm/vfp.md (predicable_short_it): Likewise.
+ 
+ 2017-11-06  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	PR target/82748
+ 	* config/rs6000/rs6000-builtin.def (BU_FLOAT128_1): Delete
+ 	float128 helper macros, which are no longer used after deleting
+ 	the old 'q' built-in functions, and moving the round to odd
+ 	built-in functions to being special built-in functions.
+ 	(BU_FLOAT128_2): Likewise.
+ 	(BU_FLOAT128_1_HW): Likewise.
+ 	(BU_FLOAT128_2_HW): Likewise.
+ 	(BU_FLOAT128_3_HW): Likewise.
+ 	(FABSQ): Delete old 'q' built-in functions.
+ 	(COPYSIGNQ): Likewise.
+ 	(SQRTF128_ODD): Move round to odd built-in functions to be
+ 	special built-in functions, so that we can handle
+ 	-mabi=ieeelongdouble.
+ 	(TRUNCF128_ODD): Likewise.
+ 	(ADDF128_ODD): Likewise.
+ 	(SUBF128_ODD): Likewise.
+ 	(MULF128_ODD): Likewise.
+ 	(DIVF128_ODD): Likewise.
+ 	(FMAF128_ODD): Likewise.
+ 	* config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Map old 'q'
+ 	built-in names to 'f128'.
+ 	* config/rs6000/rs6000.c (rs6000_fold_builtin): Remove folding the
+ 	old 'q' built-in functions, as the machine independent code for
+ 	'f128' built-in functions handles this.
+ 	(rs6000_expand_builtin): Add expansion for float128 round to odd
+ 	functions, keying off on -mabi=ieeelongdouble of whether to use
+ 	the KFmode or TFmode variant.
+ 	(rs6000_init_builtins): Initialize the _Float128 round to odd
+ 	built-in functions.
+ 	* doc/extend.texi (PowerPC Built-in Functions): Document the old
+ 	_Float128 'q' built-in functions are now mapped into the new
+ 	'f128' built-in functions.
+ 
+ 2017-11-06  David Edelsohn  <dje.gcc@gmail.com>
+ 
+ 	* collect2.c (add_lto_object): Compile for OBJECT_COFF.
+ 	(scan_prog_file): Don't skip PASS_LTOINFO. Scan for LTO objects.
+ 
+ 2017-11-06  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR jit/82826
+ 	* ipa-fnsummary.c (ipa_fnsummary_c_finalize): New function.
+ 	* ipa-fnsummary.h (ipa_fnsummary_c_finalize): New decl.
+ 	* toplev.c: Include "ipa-fnsummary.h".
+ 	(toplev::finalize): Call ipa_fnsummary_c_finalize.
+ 
+ 2017-11-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/82838
+ 	* gimple-ssa-store-merging.c
+ 	(imm_store_chain_info::output_merged_store): Call force_gimple_operand_1
+ 	on a separate gimple_seq which is then appended to seq.
+ 
+ 2017-11-06  Jeff Law  <law@redhat.com>
+ 
+ 	PR target/82788
+ 	* config/i386/i386.c (PROBE_INTERVAL): Remove.
+ 	(get_probe_interval): New functions.
+ 	(ix86_adjust_stack_and_probe_stack_clash): Use get_probe_interval.
+ 	(ix86_adjust_stack_and_probe): Likewise.
+ 	(output_adjust_stack_and_probe): Likewise.
+ 	(ix86_emit_probe_stack_range): Likewise.
+ 	(ix86_expand_prologue): Likewise.
+ 
+ 2017-11-06  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	PR tree-optimization/82816
+ 	* tree-ssa-math-opts.c (convert_mult_to_widen): Return false
+ 	if the modes of the two types are the same.
+ 	(convert_plusminus_to_widen): Likewise.
+ 
+ 2017-11-06  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	* config/rs6000/altivec.md (*p9_vadu<mode>3) Rename to
+ 	p9_vadu<mode>3.
+ 	(usadv16qi): New define_expand.
+ 	(usadv8hi): New define_expand.
+ 
+ 2017-11-06  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR bootstrap/82832
+ 	* ipa-inline-transform.c (update_noncloned_frequencies): Always
+ 	scale.
+ 	(inline_transform): Likewise.
+ 	* predict.c (counts_to_freqs): Remove useless conditional.
+ 	* profile-count.h (profile_count::apply_scale): Move sanity check.
+ 	* tree-inline.c (copy_bb): Always scale.
+ 	(copy_cfg_body): Likewise.
+ 
+ 2017-11-06  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	PR target/67591
+ 	* config/arm/arm.md (*sub_shiftsi): Add predicable_short_it
+ 	attribute.
+ 	(*cmp_ite0): Add enabled_for_depr_it attribute.
+ 	(*cmp_ite1): Likewise.
+ 
+ 2017-11-06  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_insn_cost): Handle TYPE_MFCR and
+ 	TYPE_MFCRF.
+ 
+ 2017-11-06  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* tree-vrp.c (vrp_int_const_binop): Return true on success and
+ 	return the value by pointer.
+ 	(extract_range_from_multiplicative_op_1): Update accordingly.
+ 	Return as soon as an operation fails.
+ 
+ 2017-11-05  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	PR other/82784
+ 	* asan.c (DEF_SANITIZER_BUILTIN_1): Factor out of ...
+ 	(DEF_SANITIZER_BUILTIN): ... here.
+ 	(initialize_sanitizer_builtins): Use DEF_SANITIZER_BUILTIN_1 instead of
+ 	DEF_SANITIZER_BUILTIN in if stmt.  Add missing semicolon.
+ 
+ 2017-11-05  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	PR other/82784
+ 	* config/elfos.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Remove semicolon after
+ 	macro body.
+ 	(ASM_OUTPUT_CASE_LABEL): Add semicolon after
+ 	ASM_OUTPUT_BEFORE_CASE_LABEL call.
+ 	* config/arc/arc.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Remove semicolon
+ 	after macro body.
+ 	* config/m68k/m68kelf.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Same.
+ 	* config/mips/mips.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Same.
+ 	* config/v850/v850.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Same.
+ 
+ 2017-11-05  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	PR other/82784
+ 	* graphite-scop-detection.c (DEBUG_PRINT): Remove semicolon after
+ 	"do {} while (0)".
+ 
+ 2017-11-04  Michael Clark  <michaeljclark@mac.com>
+ 
+ 	* config/riscv/riscv.c (riscv_print_operand): Add a 'i' format.
+ 	config/riscv/riscv.md (addsi3): Use 'i' for immediates.
+ 	(adddi3): Likewise.
+ 	(*addsi3_extended): Likewise.
+ 	(*addsi3_extended2): Likewise.
+ 	(<optab>si3): Likewise.
+ 	(<optab>di3): Likewise.
+ 	(<optab><mode>3): Likewise.
+ 	(<*optabe>si3_internal): Likewise.
+ 	(zero_extendqi<SUPERQI:mode>2): Likewise.
+ 	(*add<mode>hi3): Likewise.
+ 	(*xor<mode>hi3): Likewise.
+ 	(<optab>di3): Likewise.
+ 	(*<optab>si3_extend): Likewise.
+ 	(*sge<u>_<X:mode><GPR:mode>): Likewise.
+ 	(*slt<u>_<X:mode><GPR:mode>): Likewise.
+ 	(*sle<u>_<X:mode><GPR:mode>): Likewise.
+ 
+ 2017-11-04  Andrew Waterman  <andrew@sifive.com>
+ 
+ 	* config/riscv/riscv.c (riscv_option_override): Conditionally set
+ 	TARGET_STRICT_ALIGN based upon -mtune argument.
+ 
+ 2017-11-04  Andrew Waterman  <andrew@sifive.com>
+ 
+ 	* config/riscv/riscv.h (SLOW_BYTE_ACCESS): Change to 1.
+ 
+ 2017-11-04  Daniel Santos  <daniel.santos@pobox.com>
+ 
+ 	* config/i386/i386.c (choose_basereg): Use optional scratch
+ 	register and add assertion.
+ 	(x86_emit_outlined_ms2sysv_save): Use scratch register when
+ 	needed, and don't allocate stack.
+ 	(ix86_expand_prologue): Rearrange where SSE saves/stub call is
+ 	emitted, correct wrong allocation with -mcall-ms2sysv-xlogues.
+ 	(ix86_emit_outlined_ms2sysv_restore): Fix non-immediate offsets.
+ 
+ 2017-11-03  Jeff Law  <law@redhat.com>
+ 
+ 	* config/i386/i386.c (ix86_emit_restore_reg_using_pop): Prototype.
+ 	(ix86_adjust_stack_and_probe_stack_clash): Use a push/pop sequence
+ 	to probe at the start of a noreturn function.
+ 
+ 2017-11-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/78821
+ 	* gimple-ssa-store-merging.c: Update the file comment.
+ 	(MAX_STORE_ALIAS_CHECKS): Define.
+ 	(struct store_operand_info): New type.
+ 	(store_operand_info::store_operand_info): New constructor.
+ 	(struct store_immediate_info): Add rhs_code and ops data members.
+ 	(store_immediate_info::store_immediate_info): Add rhscode, op0r
+ 	and op1r arguments to the ctor, initialize corresponding data members.
+ 	(struct merged_store_group): Add load_align_base and load_align
+ 	data members.
+ 	(merged_store_group::merged_store_group): Initialize them.
+ 	(merged_store_group::do_merge): Update them.
+ 	(merged_store_group::apply_stores): Pick the constant for
+ 	encode_tree_to_bitpos from one of the two operands, or skip
+ 	encode_tree_to_bitpos if neither operand is a constant.
+ 	(class pass_store_merging): Add process_store method decl.  Remove
+ 	bool argument from terminate_all_aliasing_chains method decl.
+ 	(pass_store_merging::terminate_all_aliasing_chains): Remove
+ 	var_offset_p argument and corresponding handling.
+ 	(stmts_may_clobber_ref_p): New function.
+ 	(compatible_load_p): New function.
+ 	(imm_store_chain_info::coalesce_immediate_stores): Terminate group
+ 	if there is overlap and rhs_code is not INTEGER_CST.  For
+ 	non-overlapping stores terminate group if rhs is not mergeable.
+ 	(get_alias_type_for_stmts): Change first argument from
+ 	auto_vec<gimple *> & to vec<gimple *> &.  Add IS_LOAD, CLIQUEP and
+ 	BASEP arguments.  If IS_LOAD is true, look at rhs1 of the stmts
+ 	instead of lhs.  Compute *CLIQUEP and *BASEP in addition to the
+ 	alias type.
+ 	(get_location_for_stmts): Change first argument from
+ 	auto_vec<gimple *> & to vec<gimple *> &.
+ 	(struct split_store): Remove orig_stmts data member, add orig_stores.
+ 	(split_store::split_store): Create orig_stores rather than orig_stmts.
+ 	(find_constituent_stmts): Renamed to ...
+ 	(find_constituent_stores): ... this.  Change second argument from
+ 	vec<gimple *> * to vec<store_immediate_info *> *, push pointers
+ 	to info structures rather than the statements.
+ 	(split_group): Rename ALLOW_UNALIGNED argument to
+ 	ALLOW_UNALIGNED_STORE, add ALLOW_UNALIGNED_LOAD argument and handle
+ 	it.  Adjust find_constituent_stores caller.
+ 	(imm_store_chain_info::output_merged_store): Handle rhs_code other
+ 	than INTEGER_CST, adjust split_group, get_alias_type_for_stmts and
+ 	get_location_for_stmts callers.  Set MR_DEPENDENCE_CLIQUE and
+ 	MR_DEPENDENCE_BASE on the MEM_REFs if they are the same in all stores.
+ 	(mem_valid_for_store_merging): New function.
+ 	(handled_load): New function.
+ 	(pass_store_merging::process_store): New method.
+ 	(pass_store_merging::execute): Use process_store method.  Adjust
+ 	terminate_all_aliasing_chains caller.
+ 
+ 2017-11-03  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_legitimate_constant_p):
+ 	Return true for more constants, symbols and label references.
+ 	(aarch64_valid_floating_const): Remove unused function.
+ 
+ 2017-11-03  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	PR target/82786
+ 	* config/aarch64/aarch64.c (aarch64_layout_frame):
+ 	Undo forcing of LR at bottom of frame.
+ 
+ 2017-11-03  Jeff Law  <law@redhat.com>
+ 
+ 	PR target/82823
+ 	* config/i386/i386.c (ix86_expand_prologue): Tighten assert
+ 	for int_registers_saved.
+ 
+ 	* cfganal.c (single_pred_edge_ignoring_loop_edges): New function
+ 	extracted from tree-ssa-dom.c.
+ 	* cfganal.h (single_pred_edge_ignoring_loop_edges): Prototype.
+ 	* tree-ssa-dom.c (single_incoming_edge_ignoring_loop_edges): Remove.
+ 	(record_equivalences_from_incoming_edge): Add additional argument
+ 	to single_pred_edge_ignoring_loop_edges call.
+ 	* tree-ssa-uncprop.c (single_incoming_edge_ignoring_loop_edges): Remove.
+ 	(uncprop_dom_walker::before_dom_children): Add additional argument
+ 	to single_pred_edge_ignoring_loop_edges call.
+ 	* tree-ssa-sccvn.c (sccvn_dom_walker::before_dom_children): Use
+ 	single_pred_edge_ignoring_loop_edges rather than open coding.
+ 	* tree-vrp.c (evrp_dom_walker::before_dom_children): Similarly.
+ 
+ 2017-11-03  Marc Glisse  <marc.glisse@inria.fr>
+ 
+ 	* match.pd (-(-A)): Rewrite.
+ 
+ 2017-11-03  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/rs60000-protos.h (rs6000_emit_sISEL): Delete.
+ 	(rs6000_emit_int_cmove): New declaration.
+ 	* config/rs6000/rs6000.c (rs6000_emit_int_cmove): Delete declaration.
+ 	(rs6000_emit_sISEL): Delete.
+ 	(rs6000_emit_int_cmove): Make non-static.
+ 	* config/rs6000/rs6000.md (cstore<mode>4): Use rs6000_emit_int_cmove
+ 	instead of rs6000_emit_sISEL.
+ 
+ 2017-11-03  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* asan.c (create_cond_insert_point): Maintain profile.
+ 	* ipa-utils.c (ipa_merge_profiles): Be sure only IPA profiles are
+ 	merged.
+ 	* basic-block.h (struct basic_block_def): Remove frequency.
+ 	(EDGE_FREQUENCY): Use to_frequency
+ 	* bb-reorder.c (push_to_next_round_p): Use only IPA counts for global
+ 	heuristics.
+ 	(find_traces): Update to use to_frequency.
+ 	(find_traces_1_round): Likewise; use only IPA counts.
+ 	(bb_to_key): Likewise.
+ 	(connect_traces): Use IPA counts only.
+ 	(copy_bb_p): Update to use to_frequency.
+ 	(fix_up_crossing_landing_pad): Likewise.
+ 	(sanitize_hot_paths): Likewise.
+ 	* bt-load.c (basic_block_freq): Likewise.
+ 	* cfg.c (init_flow): Set count_max to uninitialized.
+ 	(check_bb_profile): Remove frequencies; check counts.
+ 	(dump_bb_info): Do not dump frequencies.
+ 	(update_bb_profile_for_threading): Update counts only.
+ 	(scale_bbs_frequencies_int): Likewise.
+ 	(MAX_SAFE_MULTIPLIER): Remove.
+ 	(scale_bbs_frequencies_gcov_type): Update counts only.
+ 	(scale_bbs_frequencies_profile_count): Update counts only.
+ 	(scale_bbs_frequencies): Update counts only.
+ 	* cfg.h (struct control_flow_graph): Add count-max.
+ 	(update_bb_profile_for_threading): Update prototype.
+ 	* cfgbuild.c (find_bb_boundaries): Do not update frequencies.
+ 	(find_many_sub_basic_blocks): Likewise.
+ 	* cfgcleanup.c (try_forward_edges): Likewise.
+ 	(try_crossjump_to_edge): Likewise.
+ 	* cfgexpand.c (expand_gimple_cond): Likewise.
+ 	(expand_gimple_tailcall): Likewise.
+ 	(construct_init_block): Likewise.
+ 	(construct_exit_block): Likewise.
+ 	* cfghooks.c (verify_flow_info): Check consistency of counts.
+ 	(dump_bb_for_graph): Do not dump frequencies.
+ 	(split_block_1): Do not update frequencies.
+ 	(split_edge): Do not update frequencies.
+ 	(make_forwarder_block): Do not update frequencies.
+ 	(duplicate_block): Do not update frequencies.
+ 	(account_profile_record): Do not update frequencies.
+ 	* cfgloop.c (find_subloop_latch_edge_by_profile): Use IPA counts
+ 	for global heuristics.
+ 	* cfgloopanal.c (average_num_loop_insns): Update to use to_frequency.
+ 	(expected_loop_iterations_unbounded): Use counts only.
+ 	* cfgloopmanip.c (scale_loop_profile): Simplify.
+ 	(create_empty_loop_on_edge): Simplify
+ 	(loopify): Simplify
+ 	(duplicate_loop_to_header_edge): Simplify
+ 	* cfgrtl.c (force_nonfallthru_and_redirect): Update profile.
+ 	(update_br_prob_note): Take care of removing note when profile
+ 	becomes undefined.
+ 	(relink_block_chain): Do not dump frequency.
+ 	(rtl_account_profile_record): Use to_frequency.
+ 	* cgraph.c (symbol_table::create_edge): Convert count to ipa count.
+ 	(cgraph_edge::redirect_call_stmt_to_calle): Conver tcount to ipa count.
+ 	(cgraph_update_edges_for_call_stmt_node): Likewise.
+ 	(cgraph_edge::verify_count_and_frequency): Update.
+ 	(cgraph_node::verify_node): Temporarily disable frequency verification.
+ 	* cgraphbuild.c (compute_call_stmt_bb_frequency): Use
+ 	to_cgraph_frequency.
+ 	(cgraph_edge::rebuild_edges): Convert to ipa counts.
+ 	* cgraphunit.c (init_lowered_empty_function): Do not initialize
+ 	frequencies.
+ 	(cgraph_node::expand_thunk): Update profile.
+ 	* except.c (dw2_build_landing_pads): Do not update frequency.
+ 	* final.c (compute_alignments): Use to_frequency.
+ 	(dump_basic_block_info): Do not dump frequency.
+ 	* gimple-pretty-print.c (dump_profile): Do not dump frequency.
+ 	(dump_gimple_bb_header): Do not dump frequency.
+ 	* gimple-ssa-isolate-paths.c (isolate_path): Do not update frequency;
+ 	do update count.
+ 	* gimple-streamer-in.c (input_bb): Do not stream frequency.
+ 	* gimple-streamer-out.c (output_bb): Do not stream frequency.
+ 	* haifa-sched.c (sched_pressure_start_bb): Use to_freuqency.
+ 	(init_before_recovery): Do not update frequency.
+ 	(sched_create_recovery_edges): Do not update frequency.
+ 	* hsa-gen.c (convert_switch_statements): Do not update frequency.
+ 	* ipa-cp.c (ipcp_propagate_stage): Update search for max_count.
+ 	(ipa_cp_c_finalize): Set max_count to uninitialized.
+ 	* ipa-fnsummary.c (get_minimal_bb): Use counts.
+ 	(param_change_prob): Use counts.
+ 	* ipa-profile.c (ipa_profile_generate_summary): Do not summarize
+ 	local profiles.
+ 	* ipa-split.c (consider_split): Use to_frequency.
+ 	(split_function): Use to_frequency.
+ 	* ira-build.c (loop_compare_func): Likewise.
+ 	(mark_loops_for_removal): Likewise.
+ 	(mark_all_loops_for_removal): Likewise.
+ 	* loop-doloop.c (doloop_modify): Do not update frequency.
+ 	* loop-unroll.c (unroll_loop_runtime_iterations): Do not update
+ 	frequency.
+ 	* lto-streamer-in.c (input_function): Update count_max.
+ 	* omp-expand.c (expand_omp_taskreg): Update count_max.
+ 	* omp-simd-clone.c (simd_clone_adjust): Update profile.
+ 	* predict.c (maybe_hot_frequency_p): Use to_frequency.
+ 	(maybe_hot_count_p): Use ipa counts only.
+ 	(maybe_hot_bb_p): Simplify.
+ 	(maybe_hot_edge_p): Simplify.
+ 	(probably_never_executed): Do not take frequency argument.
+ 	(probably_never_executed_bb_p): Do not pass frequency.
+ 	(probably_never_executed_edge_p): Likewise.
+ 	(combine_predictions_for_bb): Check that profile is nonzero.
+ 	(propagate_freq): Do not set frequency.
+ 	(drop_profile): Simplify.
+ 	(counts_to_freqs): Simplify.
+ 	(expensive_function_p): Use to_frequency.
+ 	(propagate_unlikely_bbs_forward): Simplify.
+ 	(determine_unlikely_bbs): Simplify.
+ 	(estimate_bb_frequencies): Add hack to silence graphite issues.
+ 	(compute_function_frequency): Use ipa counts.
+ 	(pass_profile::execute): Update.
+ 	(rebuild_frequencies): Use counts only.
+ 	(force_edge_cold): Use counts only.
+ 	* profile-count.c (profile_count::dump): Dump new count types.
+ 	(profile_count::differs_from_p): Check compatiblity.
+ 	(profile_count::to_frequency): New function.
+ 	(profile_count::to_cgraph_frequency): New function.
+ 	* profile-count.h (struct function): Declare.
+ 	(enum profile_quality): Add profile_guessed_local and
+ 	profile_guessed_global0.
+ 	(class profile_proability): Decrease number of bits to 29;
+ 	update from_reg_br_prob_note and to_reg_br_prob_note.
+ 	(class profile_count: Update comment; decrease number of bits
+ 	to 61. Check compatibility.
+ 	(profile_count::compatible_p): New private member function.
+ 	(profile_count::ipa_p): New member function.
+ 	(profile_count::operator<): Handle global zero correctly.
+ 	(profile_count::operator>): Handle global zero correctly.
+ 	(profile_count::operator<=): Handle global zero correctly.
+ 	(profile_count::operator>=): Handle global zero correctly.
+ 	(profile_count::nonzero_p): New member function.
+ 	(profile_count::force_nonzero): New member function.
+ 	(profile_count::max): New member function.
+ 	(profile_count::apply_scale): Handle IPA scalling.
+ 	(profile_count::guessed_local): New member function.
+ 	(profile_count::global0): New member function.
+ 	(profile_count::ipa): New member function.
+ 	(profile_count::to_frequency): Declare.
+ 	(profile_count::to_cgraph_frequency): Declare.
+ 	* profile.c (OVERLAP_BASE): Delete.
+ 	(compute_frequency_overlap): Delete.
+ 	(compute_branch_probabilities): Do not use compute_frequency_overlap.
+ 	* regs.h (REG_FREQ_FROM_BB): Use to_frequency.
+ 	* sched-ebb.c (rank): Use counts only.
+ 	* shrink-wrap.c (handle_simple_exit): Use counts only.
+ 	(try_shrink_wrapping): Use counts only.
+ 	(place_prologue_for_one_component): Use counts only.
+ 	* tracer.c (find_best_predecessor): Use to_frequency.
+ 	(find_trace): Use to_frequency.
+ 	(tail_duplicate): Use to_frequency.
+ 	* trans-mem.c (expand_transaction): Do not update frequency.
+ 	* tree-call-cdce.c: Do not update frequency.
+ 	* tree-cfg.c (gimple_find_sub_bbs): Likewise.
+ 	(gimple_merge_blocks): Likewise.
+ 	(gimple_split_edge): Likewise.
+ 	(gimple_duplicate_sese_region): Likewise.
+ 	(gimple_duplicate_sese_tail): Likewise.
+ 	(move_sese_region_to_fn): Likewise.
+ 	(gimple_account_profile_record): Likewise.
+ 	(insert_cond_bb): Likewise.
+ 	* tree-complex.c (expand_complex_div_wide): Likewise.
+ 	* tree-eh.c (lower_resx): Update profile.
+ 	* tree-inline.c (copy_bb): Simplify count scaling; do not scale
+ 	frequencies.
+ 	(initialize_cfun): Do not initialize frequencies
+ 	(freqs_to_counts): Delete.
+ 	(copy_cfg_body): Ignore count parameter.
+ 	(copy_body): Update.
+ 	(expand_call_inline): Update count_max.
+ 	(optimize_inline_calls): Update count_max.
+ 	(tree_function_versioning): Update count_max.
+ 	* tree-ssa-coalesce.c (coalesce_cost_bb): Use to_frequency.
+ 	* tree-ssa-ifcombine.c (update_profile_after_ifcombine): Do not update
+ 	frequency.
+ 	* tree-ssa-loop-im.c (execute_sm_if_changed): Use counts only.
+ 	* tree-ssa-loop-ivcanon.c (unloop_loops): Do not update freuqency.
+ 	(try_peel_loop): Likewise.
+ 	* tree-ssa-loop-ivopts.c (get_scaled_computation_cost_at): Use
+ 	to_frequency.
+ 	* tree-ssa-loop-manip.c (niter_for_unrolled_loop): Pass -1.
+ 	(tree_transform_and_unroll_loop): Do not use frequencies
+ 	* tree-ssa-loop-niter.c (estimate_numbers_of_iterations):
+ 	Use reliable prediction only.
+ 	* tree-ssa-loop-unswitch.c (hoist_guard): Do not use frequencies.
+ 	* tree-ssa-sink.c (select_best_block): Use to_frequency.
+ 	* tree-ssa-tail-merge.c (replace_block_by): Temporarily disable
+ 	probability scaling.
+ 	* tree-ssa-threadupdate.c (create_block_for_threading): Do
+ 	not update frequency
+ 	(any_remaining_duplicated_blocks): Likewise.
+ 	(update_profile): Likewise.
+ 	(estimated_freqs_path): Delete.
+ 	(freqs_to_counts_path): Delete.
+ 	(clear_counts_path): Delete.
+ 	(ssa_fix_duplicate_block_edges): Likewise.
+ 	(duplicate_thread_path): Likewise.
+ 	* tree-switch-conversion.c (gen_inbound_check): Use counts.
+ 	* tree-tailcall.c (decrease_profile): Do not update frequency.
+ 	(eliminate_tail_call): Likewise.
+ 	* tree-vect-loop-manip.c (vect_do_peeling): Likewise.
+ 	* tree-vect-loop.c (scale_profile_for_vect_loop): Likewise.
+ 	(optimize_mask_stores): Likewise.
+ 	* tree-vect-stmts.c (vectorizable_simd_clone_call): Likewise.
+ 	* ubsan.c (ubsan_expand_null_ifn): Update profile.
+ 	(ubsan_expand_ptr_ifn): Update profile.
+ 	* value-prof.c (gimple_ic): Simplify.
+ 	* value-prof.h (gimple_ic): Update prototype.
+ 	* ipa-inline-transform.c (inline_transform): Fix scaling conditoins.
+ 	* ipa-inline.c (compute_uninlined_call_time): Be sure that
+ 	counts are nonzero.
+ 	(want_inline_self_recursive_call_p): Likewise.
+ 	(resolve_noninline_speculation): Only cummulate defined counts.
+ 	(inline_small_functions): Use nonzero_p.
+ 	(ipa_inline): Do not access freed node.
+ 
+ 2017-11-03  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_override_options_internal):
+ 	Set PARAM_SCHED_PRESSURE_ALGORITHM to SCHED_PRESSURE_MODEL.
+ 
+ 2017-11-03  Kito Cheng  <kito.cheng@gmail.com>
+ 
+ 	* config/riscv/riscv.c (riscv_legitimize_move): Handle
+ 	non-legitimate address.
+ 
+ 2017-11-03  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/rs6000.md (*lt0_disi): Delete.
+ 	(*lt0_<mode>di, *lt0_<mode>si): New.
+ 
+ 2017-11-03  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/rs6000.md (move_from_CR_ov_bit): Change condition to
+ 	TARGET_PAIRED_FLOAT.
+ 
+ 2017-11-03  Siddhesh Poyarekar  <siddhesh.poyarekar@linaro.org>
+ 	    Jim Wilson  <jim.wilson@linaro.org>
+ 
+ 	* config/aarch64/aarch64-cores.def (saphira): New CPU.
+ 	* config/aarch64/aarch64-tune.md: Regenerated.
+ 	* doc/invoke.texi (AArch64 Options/-mtune): Add "saphira".
+ 	* gcc/config/aarch64/aarch64.c (saphira_tunings): New tuning table.
+ 
+ 2017-11-03  Cupertino Miranda  <cmiranda@synopsys.com>
+ 
+ 	* config/arc/arc.c (arc_save_restore): Corrected CFA note.
+ 	(arc_expand_prologue): Restore blink for millicode.
+ 	* config/arc/linux.h (LINK_EH_SPEC): Defined.
+ 
+ 2017-11-03  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	PR target/82809
+ 	* config/i386/i386.c (ix86_vector_duplicate_value): Use
+ 	gen_vec_duplicate after forcing the scalar into a register.
+ 
+ 2017-11-02  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* combine (try_combine): Print the insns input to try_combine to the
+ 	dump file.
+ 
+ 2017-11-02  Steve Ellcey  <sellcey@cavium.com>
+ 
+ 	PR target/79868
+ 	* config/aarch64/aarch64-c.c (aarch64_pragma_target_parse):
+ 	Remove second argument from aarch64_process_target_attr call.
+ 	* config/aarch64/aarch64-protos.h (aarch64_process_target_attr):
+ 	Ditto.
+ 	* config/aarch64/aarch64.c (aarch64_attribute_info): Change
+ 	field type.
+ 	(aarch64_handle_attr_arch): Remove second argument.
+ 	(aarch64_handle_attr_cpu): Ditto.
+ 	(aarch64_handle_attr_tune): Ditto.
+ 	(aarch64_handle_attr_isa_flags): Ditto.
+ 	(aarch64_process_one_target_attr): Ditto.
+ 	(aarch64_process_target_attr): Ditto.
+ 	(aarch64_option_valid_attribute_p): Remove second argument.
+ 	on aarch64_process_target_attr call.
+ 
+ 2017-11-02  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* diagnostic.c: Include "selftest-diagnostic.h".
+ 	(selftest::assert_location_text): New function.
+ 	(selftest::test_diagnostic_get_location_text): New function.
+ 	(selftest::diagnostic_c_tests): Call it.
+ 
+ 2017-11-02  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* Makefile.in (OBJS-libcommon): Add selftest-diagnostic.o.
+ 	* diagnostic-show-locus.c: Include "selftest-diagnostic.h".
+ 	(class selftest::test_diagnostic_context): Move to...
+ 	* selftest-diagnostic.c: New file.
+ 	* selftest-diagnostic.h: New file.
+ 
+ 2017-11-02  James Bowman  <james.bowman@ftdichip.com>
+ 
+ 	* config/ft32/ft32.c (ft32_addr_space_legitimate_address_p): increase
+ 	offset range for FT32B.
+ 	* config/ft32/ft32.h: option "mcompress" enables relaxation.
+ 	* config/ft32/ft32.md: Add TARGET_NOPM.
+ 	* config/ft32/ft32.opt: Add mft32b, mcompress, mnopm.
+ 	* gcc/doc/invoke.texi: Add mft32b, mcompress, mnopm.
+ 
+ 2017-11-02  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	* config/aarch64/aarch64.h (MALLOC_ABI_ALIGNMENT): New define.
+ 
+ 2017-11-02  Jeff Law  <law@redhat.com>
+ 
+ 	* gimple-ssa-sprintf.c (sprintf_dom_walker): Remove
+ 	virtual keyword on FINAL OVERRIDE members.
+ 
+ 	* tree-ssa-propagate.h (ssa_propagation_engine): Group
+ 	virtuals together.  Add virtual destructor.
+ 	(substitute_and_fold_engine): Similarly.
+ 
+ 2017-11-02  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* x86-tune.def (X86_TUNE_USE_INCDEC): Enable for Haswell+.
+ 
+ 2017-11-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/82795
+ 	* tree-if-conv.c (predicate_mem_writes): Remove bogus assert.
+ 
+ 2017-11-02  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	* acinclude.m4 (gcc_AC_INITFINI_ARRAY): Don't require
+ 	gcc_SUN_LD_VERSION.
+ 	(gcc_GAS_CHECK_FEATURE): Remove.
+ 	* configure.ac (ld_vers) <*-*-solaris2*>: Move comments from
+ 	gcc_AC_INITFINI_ARRAY here.  Update for Solaris 11.4 changes.
+ 	* configure: Regenerate.
+ 
+ 2017-11-02  Claudiu Zissulescu <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.c (hwloop_optimize): Account for empty
+ 	body loops.
+ 
+ 2017-11-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/82765
+ 	* varasm.c (decode_addr_const): Make offset HOST_WIDE_INT.
+ 	Truncate ARRAY_REF index and element size.
+ 
+ 2017-11-01  Palmer Dabbelt  <palmer@dabbelt.com>
+ 
+ 	* doc/invoke.texi (RISC-V Options): Use "@minus{}2 GB", not "-2 GB".
+ 
+ 2017-11-01  Jeff Law  <law@redhat.com>
+ 
+ 	* tree-ssa-ccp.c (ccp_folder): New class derived from
+ 	substitute_and_fold_engine.
+ 	(ccp_folder::get_value): New member function.
+ 	(ccp_folder::fold_stmt): Renamed from ccp_fold_stmt.
+ 	(ccp_fold_stmt): Remove prototype.
+ 	(ccp_finalize): Call substitute_and_fold from the ccp_class.
+ 	* tree-ssa-copy.c (copy_folder): New class derived from
+ 	substitute_and_fold_engine.
+ 	(copy_folder::get_value): Renamed from get_value.
+ 	(fini_copy_prop): Call substitute_and_fold from copy_folder class.
+ 	* tree-vrp.c (vrp_folder): New class derived from
+ 	substitute_and_fold_engine.
+ 	(vrp_folder::fold_stmt): Renamed from vrp_fold_stmt.
+ 	(vrp_folder::get_value): New member function.
+ 	(vrp_finalize): Call substitute_and_fold from vrp_folder class.
+ 	(evrp_dom_walker::before_dom_children): Similarly for replace_uses_in.
+ 	* tree-ssa-propagate.h (substitute_and_fold_engine): New class to
+ 	provide a class interface to folder/substitute routines.
+ 	(ssa_prop_fold_stmt_fn): Remove typedef.
+ 	(ssa_prop_get_value_fn): Likewise.
+ 	(subsitute_and_fold): Remove prototype.
+ 	(replace_uses_in): Likewise.
+ 	* tree-ssa-propagate.c (substitute_and_fold_engine::replace_uses_in):
+ 	Renamed from replace_uses_in.  Call the virtual member function
+ 	(substitute_and_fold_engine::replace_phi_args_in): Similarly.
+ 	(substitute_and_fold_dom_walker): Remove initialization of
+ 	data member entries for calbacks.  Add substitute_and_fold_engine
+ 	member and initialize it.
+ 	(substitute_and_fold_dom_walker::before_dom_children0: Use the
+ 	member functions for get_value, replace_phi_args_in c
+ 	replace_uses_in, and fold_stmt calls.
+ 	(substitute_and_fold_engine::substitute_and_fold): Renamed from
+ 	substitute_and_fold.  Remove assert.   Update ctor call.
+ 
+ 	* tree-ssa-propagate.h (ssa_prop_visit_stmt_fn): Remove typedef.
+ 	(ssa_prop_visit_phi_fn): Likewise.
+ 	(class ssa_propagation_engine): New class to provide an interface
+ 	into ssa_propagate.
+ 	* tree-ssa-propagate.c (ssa_prop_visit_stmt): Remove file scoped
+ 	variable.
+ 	(ssa_prop_visit_phi): Likewise.
+ 	(ssa_propagation_engine::simulate_stmt): Moved into class.
+ 	Call visit_phi/visit_stmt from the class rather than via
+ 	file scoped static variables.
+ 	(ssa_propagation_engine::simulate_block): Moved into class.
+ 	(ssa_propagation_engine::process_ssa_edge_worklist): Similarly.
+ 	(ssa_propagation_engine::ssa_propagate): Similarly.  No longer
+ 	set file scoped statics for the visit_stmt/visit_phi callbacks.
+ 	* tree-complex.c (complex_propagate): New class derived from
+ 	ssa_propagation_engine.
+ 	(complex_propagate::visit_stmt): Renamed from complex_visit_stmt.
+ 	(complex_propagate::visit_phi): Renamed from complex_visit_phi.
+ 	(tree_lower_complex): Call ssa_propagate via the complex_propagate
+ 	class.
+ 	* tree-ssa-ccp.c: (ccp_propagate): New class derived from
+ 	ssa_propagation_engine.
+ 	(ccp_propagate::visit_phi): Renamed from ccp_visit_phi_node.
+ 	(ccp_propagate::visit_stmt): Renamed from ccp_visit_stmt.
+ 	(do_ssa_ccp): Call ssa_propagate from the ccp_propagate class.
+ 	* tree-ssa-copy.c (copy_prop): New class derived from
+ 	ssa_propagation_engine.
+ 	(copy_prop::visit_stmt): Renamed from copy_prop_visit_stmt.
+ 	(copy_prop::visit_phi): Renamed from copy_prop_visit_phi_node.
+ 	(execute_copy_prop): Call ssa_propagate from the copy_prop class.
+ 	* tree-vrp.c (vrp_prop): New class derived from ssa_propagation_engine.
+ 	(vrp_prop::visit_stmt): Renamed from vrp_visit_stmt.
+ 	(vrp_prop::visit_phi): Renamed from vrp_visit_phi_node.
+ 	(execute_vrp): Call ssa_propagate from the vrp_prop class.
+ 
+ 2017-11-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/82778
+ 	PR rtl-optimization/82597
+ 	* compare-elim.c (struct comparison): Add in_a_setter field.
+ 	(find_comparison_dom_walker::before_dom_children): Remove killed
+ 	bitmap and df_simulate_find_defs call, instead walk the defs.
+ 	Compute last_setter and initialize in_a_setter.  Merge definitions
+ 	with first initialization for a few variables.
+ 	(try_validate_parallel): Use insn_invalid_p instead of
+ 	recog_memoized.  Return insn rather than just the pattern.
+ 	(try_merge_compare): Fix up comment.  Don't uselessly test if
+ 	in_a is a REG_P.  Use cmp->in_a_setter instead of walking UD
+ 	chains.
+ 	(execute_compare_elim_after_reload): Remove df_chain_add_problem
+ 	call.
+ 
+ 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_rtx_costs): Use
+ 	aarch64_hard_regno_nregs to get the number of registers
+ 	in a mode.
+ 
+ 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* config/aarch64/constraints.md (Upl): Rename to...
+ 	(Uaa): ...this.
+ 	* config/aarch64/aarch64.md
+ 	(*zero_extend<SHORT:mode><GPI:mode>2_aarch64, *addsi3_aarch64_uxtw):
+ 	Update accordingly.
+ 
+ 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_add_constant_internal)
+ 	(aarch64_add_constant, aarch64_add_sp, aarch64_sub_sp): Move
+ 	earlier in file.
+ 
+ 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_evpc_trn, aarch64_evpc_uzp)
+ 	(aarch64_evpc_zip, aarch64_evpc_ext, aarch64_evpc_rev)
+ 	(aarch64_evpc_dup): Generate rtl direcly, rather than using
+ 	named expanders.
+ 	(aarch64_expand_vec_perm_const_1): Explicitly check for permutes
+ 	of a single element.
+ 	* config/aarch64/iterators.md: Add a comment above the permute
+ 	unspecs to say that they are generated directly by
+ 	aarch64_expand_vec_perm_const.
+ 	* config/aarch64/aarch64-simd.md: Likewise the permute instructions.
+ 
+ 2017-11-01  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* tree-dump.c (dequeue_and_dump): Use HAS_DECL_ASSEMBLER_NAME_P.
+ 
+ 2017-11-01  Palmer Dabbelt  <palmer@dabbelt.com>
+ 
+ 	* doc/invoke.texi (RISC-V Options): Explicitly name the medlow
+ 	and medany code models, and describe what they do.
+ 
+ 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	Revert accidental duplicate:
+ 
+ 	* combine.c (can_change_dest_mode): Reject changes in
+ 	REGMODE_NATURAL_SIZE.
+ 
+ 2017-11-01  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR rtl-optimization/64682
+ 	PR rtl-optimization/69567
+ 	PR rtl-optimization/69737
+ 	PR rtl-optimization/82683
+ 	* combine.c (distribute_notes) <REG_DEAD>: If the new I2 sets the same
+ 	register mentioned in the note, drop the note, unless it came from I3,
+ 	in which case it should go to I3 again.
+ 
+ 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* tree-ssa-dse.c (normalize_ref): Check whether the ranges overlap
+ 	and return false if not.
+ 	(clear_bytes_written_by, live_bytes_read): Update accordingly.
+ 
+ 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* tree-ssa-alias.h (ranges_overlap_p): Return false if either
+ 	range is known to be empty.
+ 
+ 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* simplify-rtx.c (simplify_const_unary_operation): Use GET_MODE_NUNITS
+ 	and CONST_VECTOR_NUNITS instead of computing the number of units from
+ 	the byte sizes of the vector and element.
+ 	(simplify_binary_operation_1): Likewise.
+ 	(simplify_const_binary_operation): Likewise.
+ 	(simplify_ternary_operation): Likewise.
+ 
+ 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* var-tracking.c (INT_MEM_OFFSET): Replace with...
+ 	(int_mem_offset): ...this new function.
+ 	(var_mem_set, var_mem_delete_and_set, var_mem_delete)
+ 	(find_mem_expr_in_1pdv, dataflow_set_preserve_mem_locs)
+ 	(same_variable_part_p, use_type, add_stores, vt_get_decl_and_offset):
+ 	Update accordingly.
+ 
+ 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* lower-subreg.c (interesting_mode_p): New function.
+ 	(compute_costs, find_decomposable_subregs, decompose_register)
+ 	(simplify_subreg_concatn, can_decompose_p, resolve_simple_move)
+ 	(resolve_clobber, dump_choices): Use it.
+ 
+ 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* rtlhash.c (add_rtx): Use add_hwi for 'w' and add_int for 'i'.
+ 
+ 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* alias.c (find_base_value, find_base_term): Only process integer
+ 	truncations.  Check the precision rather than the size.
+ 
+ 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* machmode.h (is_narrower_int_mode): New function
+ 	* optabs.c (expand_float, expand_fix): Use it.
+ 	* dwarf2out.c (rotate_loc_descriptor): Likewise.
+ 
+ 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* rtl.h (narrower_subreg_mode): New function.
+ 	* ira-color.c (update_costs_from_allocno): Use it.
+ 
+ 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* optabs-query.h (convert_optab_p): New function, split out from...
+ 	(convert_optab_handler): ...here.
+ 	(widening_optab_handler): Delete.
+ 	(find_widening_optab_handler): Remove permit_non_widening parameter.
+ 	(find_widening_optab_handler_and_mode): Likewise.  Provide an
+ 	override that operates on mode class wrappers.
+ 	* optabs-query.c (widening_optab_handler): Delete.
+ 	(find_widening_optab_handler_and_mode): Remove permit_non_widening
+ 	parameter.  Assert that the two modes are the same class and that
+ 	the "from" mode is narrower than the "to" mode.  Use
+ 	convert_optab_handler instead of widening_optab_handler.
+ 	* expmed.c (expmed_mult_highpart_optab): Use convert_optab_handler
+ 	instead of widening_optab_handler.
+ 	* expr.c (expand_expr_real_2): Update calls to
+ 	find_widening_optab_handler.
+ 	* optabs.c (expand_widen_pattern_expr): Likewise.
+ 	(expand_binop_directly): Take the insn_code as a parameter.
+ 	(expand_binop): Only call find_widening_optab_handler for
+ 	conversion optabs; use optab_handler otherwise.  Update calls
+ 	to find_widening_optab_handler and expand_binop_directly.
+ 	Use convert_optab_handler instead of widening_optab_handler.
+ 	* tree-ssa-math-opts.c (convert_mult_to_widen): Update calls to
+ 	find_widening_optab_handler and use scalar_mode rather than
+ 	machine_mode.
+ 	(convert_plusminus_to_widen): Likewise.
+ 
+ 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* machmode.h (fixed_size_mode): New class.
+ 	* rtl.h (get_pool_mode): Return fixed_size_mode.
+ 	* gengtype.c (main): Add fixed_size_mode.
+ 	* target.def (get_raw_result_mode): Return a fixed_size_mode.
+ 	(get_raw_arg_mode): Likewise.
+ 	* doc/tm.texi: Regenerate.
+ 	* targhooks.h (default_get_reg_raw_mode): Return a fixed_size_mode.
+ 	* targhooks.c (default_get_reg_raw_mode): Likewise.
+ 	* config/ia64/ia64.c (ia64_get_reg_raw_mode): Likewise.
+ 	* config/mips/mips.c (mips_get_reg_raw_mode): Likewise.
+ 	* config/msp430/msp430.c (msp430_get_raw_arg_mode): Likewise.
+ 	(msp430_get_raw_result_mode): Likewise.
+ 	* config/avr/avr-protos.h (regmask): Use as_a <fixed_side_mode>
+ 	* dbxout.c (dbxout_parms): Require fixed-size modes.
+ 	* expr.c (copy_blkmode_from_reg, copy_blkmode_to_reg): Likewise.
+ 	* gimple-ssa-store-merging.c (encode_tree_to_bitpos): Likewise.
+ 	* omp-low.c (lower_oacc_reductions): Likewise.
+ 	* simplify-rtx.c (simplify_immed_subreg): Take fixed_size_modes.
+ 	(simplify_subreg): Update accordingly.
+ 	* varasm.c (constant_descriptor_rtx::mode): Change to fixed_size_mode.
+ 	(force_const_mem): Update accordingly.  Return NULL_RTX for modes
+ 	that aren't fixed-size.
+ 	(get_pool_mode): Return a fixed_size_mode.
+ 	(output_constant_pool_2): Take a fixed_size_mode.
+ 
+ 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* doc/rtl.texi (vec_series): Document.
+ 	(const): Say that the operand can be a vec_series.
+ 	* rtl.def (VEC_SERIES): New rtx code.
+ 	* rtl.h (const_vec_series_p_1): Declare.
+ 	(const_vec_series_p): New function.
+ 	* emit-rtl.h (gen_const_vec_series): Declare.
+ 	(gen_vec_series): Likewise.
+ 	* emit-rtl.c (const_vec_series_p_1, gen_const_vec_series)
+ 	(gen_vec_series): Likewise.
+ 	* optabs.c (expand_mult_highpart): Use gen_const_vec_series.
+ 	* simplify-rtx.c (simplify_unary_operation): Handle negations
+ 	of vector series.
+ 	(simplify_binary_operation_series): New function.
+ 	(simplify_binary_operation_1): Use it.  Handle VEC_SERIES.
+ 	(test_vector_ops_series): New function.
+ 	(test_vector_ops): Call it.
+ 	* config/powerpcspe/altivec.md (altivec_lvsl): Use
+ 	gen_const_vec_series.
+ 	(altivec_lvsr): Likewise.
+ 	* config/rs6000/altivec.md (altivec_lvsl, altivec_lvsr): Likewise.
+ 
+ 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* doc/rtl.texi (const): Update description of address constants.
+ 	Say that vector constants are allowed too.
+ 	* common.md (E, F): Use CONSTANT_P instead of checking for
+ 	CONST_VECTOR.
+ 	* emit-rtl.c (gen_lowpart_common): Use const_vec_p instead of
+ 	checking for CONST_VECTOR.
+ 	* expmed.c (make_tree): Use build_vector_from_val for a CONST
+ 	VEC_DUPLICATE.
+ 	* expr.c (expand_expr_real_2): Check for vector modes instead
+ 	of checking for CONST_VECTOR.
+ 	* rtl.h (const_vec_p): New function.
+ 	(const_vec_duplicate_p): Check for a CONST VEC_DUPLICATE.
+ 	(unwrap_const_vec_duplicate): Handle them here too.
+ 
+ 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    David Malcolm  <dmalcolm@redhat.com>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* rtl.h (vec_duplicate_p): New function.
+ 	* selftest-rtl.c (assert_rtx_eq_at): New function.
+ 	* selftest-rtl.h (ASSERT_RTX_EQ): New macro.
+ 	(assert_rtx_eq_at): Declare.
+ 	* selftest.h (selftest::simplify_rtx_c_tests): Declare.
+ 	* selftest-run-tests.c (selftest::run_tests): Call it.
+ 	* simplify-rtx.c: Include selftest.h and selftest-rtl.h.
+ 	(simplify_unary_operation_1): Recursively handle vector duplicates.
+ 	(simplify_binary_operation_1): Likewise.  Handle VEC_SELECTs of
+ 	vector duplicates.
+ 	(simplify_subreg): Handle subregs of vector duplicates.
+ 	(make_test_reg, test_vector_ops_duplicate, test_vector_ops)
+ 	(selftest::simplify_rtx_c_tests): New functions.
+ 
+ 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* emit-rtl.h (gen_const_vec_duplicate): Declare.
+ 	(gen_vec_duplicate): Likewise.
+ 	* emit-rtl.c (gen_const_vec_duplicate_1): New function, split
+ 	out from...
+ 	(gen_const_vector): ...here.
+ 	(gen_const_vec_duplicate, gen_vec_duplicate): New functions.
+ 	(gen_rtx_CONST_VECTOR): Use gen_const_vec_duplicate for constants
+ 	whose elements are all equal.
+ 	* optabs.c (expand_vector_broadcast): Use gen_const_vec_duplicate.
+ 	* simplify-rtx.c (simplify_const_unary_operation): Likewise.
+ 	(simplify_relational_operation): Likewise.
+ 	* config/aarch64/aarch64.c (aarch64_simd_gen_const_vector_dup):
+ 	Likewise.
+ 	(aarch64_simd_dup_constant): Use gen_vec_duplicate.
+ 	(aarch64_expand_vector_init): Likewise.
+ 	* config/arm/arm.c (neon_vdup_constant): Likewise.
+ 	(neon_expand_vector_init): Likewise.
+ 	(arm_expand_vec_perm): Use gen_const_vec_duplicate.
+ 	(arm_block_set_unaligned_vect): Likewise.
+ 	(arm_block_set_aligned_vect): Likewise.
+ 	* config/arm/neon.md (neon_copysignf<mode>): Likewise.
+ 	* config/i386/i386.c (ix86_expand_vec_perm): Likewise.
+ 	(expand_vec_perm_even_odd_pack): Likewise.
+ 	(ix86_vector_duplicate_value): Use gen_vec_duplicate.
+ 	* config/i386/sse.md (one_cmpl<mode>2): Use CONSTM1_RTX.
+ 	* config/ia64/ia64.c (ia64_expand_vecint_compare): Use
+ 	gen_const_vec_duplicate.
+ 	* config/ia64/vect.md (addv2sf3, subv2sf3): Use CONST1_RTX.
+ 	* config/mips/mips.c (mips_gen_const_int_vector): Use
+ 	gen_const_vec_duplicate.
+ 	(mips_expand_vector_init): Use CONST0_RTX.
+ 	* config/powerpcspe/altivec.md (abs<mode>2, nabs<mode>2): Likewise.
+ 	(define_split): Use gen_const_vec_duplicate.
+ 	* config/rs6000/altivec.md (abs<mode>2, nabs<mode>2): Use CONST0_RTX.
+ 	(define_split): Use gen_const_vec_duplicate.
+ 	* config/s390/vx-builtins.md (vec_genmask<mode>): Likewise.
+ 	(vec_ctd_s64, vec_ctd_u64, vec_ctsl, vec_ctul): Likewise.
+ 	* config/spu/spu.c (spu_const): Likewise.
+ 
+ 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* combine.c (can_change_dest_mode): Reject changes in
+ 	REGMODE_NATURAL_SIZE.
+ 
+ 2017-10-31  Sandra Loosemore  <sandra@codesourcery.com>
+ 
+ 	* configure.ac (--enable-libssp): New.
+ 	(gcc_cv_libc_provides_ssp): Check for explicit setting before
+ 	trying to determine target-specific default.  Adjust indentation.
+ 	* configure: Regenerated.
+ 	* doc/install.texi (Configuration): Expand --disable-libssp
+ 	documentation.
+ 
+ 2017-10-31  Daniel Santos  <daniel.santos@pobox.com>
+ 
+ 	config/i386/i386.c (ix86_expand_epilogue): Correct stack
+ 	calculation.
+ 
+ 2017-10-31  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR c++/81702
+ 	* gimple-fold.c (gimple_get_virt_method_for_vtable): Remove assert.
+ 
+ 2017-10-31  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* auto-profile.c (autofdo_source_profile::read): Use
+ 	UNKNOWN_LOCATION rather than 0.
+ 	* diagnostic-core.h (warning_at_rich_loc): Rename to...
+ 	(warning_at): ...this overload.
+ 	(warning_at_rich_loc_n): Rename to...
+ 	(warning_n): ...this overload.
+ 	(error_at_rich_loc): Rename to...
+ 	(error_at): ...this overload.
+ 	(pedwarn_at_rich_loc): Rename to...
+ 	(pedwarn): ...this overload.
+ 	(permerror_at_rich_loc): Rename to...
+ 	(permerror): ...this overload.
+ 	(inform_at_rich_loc): Rename to...
+ 	(inform): ...this overload.
+ 	* diagnostic.c: (diagnostic_n_impl): Delete location_t-based decl.
+ 	(diagnostic_n_impl_richloc): Rename to...
+ 	(diagnostic_n_impl): ...this rich_location *-based decl.
+ 	(inform_at_rich_loc): Rename to...
+ 	(inform): ...this, and add an assertion.
+ 	(inform_n): Update for removal of location_t-based diagnostic_n_impl.
+ 	(warning_at_rich_loc): Rename to...
+ 	(warning_at): ...this, and add an assertion.
+ 	(warning_at_rich_loc_n): Rename to...
+ 	(warning_n): ...this, and add an assertion.
+ 	(warning_n): Update location_t-based implementation for removal of
+ 	location_t-based diagnostic_n_impl.
+ 	(pedwarn_at_rich_loc): Rename to...
+ 	(pedwarn): ...this, and add an assertion.
+ 	(permerror_at_rich_loc): Rename to...
+ 	(permerror): ...this, and add an assertion.
+ 	(error_n): Update for removal of location_t-based diagnostic_n_impl.
+ 	(error_at_rich_loc): Rename to...
+ 	(error_at): ...this, and add an assertion.
+ 	* gcc.c (do_spec_1): Use UNKNOWN_LOCATION rather than 0.
+ 	(driver::do_spec_on_infiles): Likewise.
+ 	* substring-locations.c (format_warning_va): Update for renaming
+ 	of inform_at_rich_loc.
+ 
+ 2017-10-31  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	* builtins.def (DEF_FLOATN_BUILTIN): Change most _Float<N> and
+ 	_Float<N>X built-in functions so that the variant without the
+ 	"__builtin_" prefix is only enabled for the GNU C and Objective C
+ 	languages when they are in non-strict ANSI/ISO mode.
+ 	(DEF_EXT_LIB_FLOATN_NX_BUILTINS): Likewise.
+ 	* target.def (floatn_builtin_p): Add a target hook to control
+ 	whether _Float<N> and _Float<N>X built-in functions without the
+ 	"__builtin_" prefix are enabled, and return true for C and
+ 	Objective C in the default hook.  Include langhooks.h in
+ 	targhooks.c.
+ 	* targhooks.h (default_floatn_builtin_p): Likewise.
+ 	* targhooks.c (default_floatn_builtin_p): Likewise.
+ 	* doc/tm.texi.in (TARGET_FLOATN_BUILTIN_P): Document the
+ 	floatn_builtin_p target hook.
+ 	* doc/tm.texi (TARGET_FLOATN_BUILTIN_P): Likewise.
+ 
+ 2017-10-31  Matthew Fortune  <matthew.fortune@imgtec.com>
+ 	    Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR rtl-optimization/81803
+ 	* lra-constraints.c (curr_insn_transform): Also reload the whole
+ 	register for a strict subreg no wider than a word if this is for
+ 	a WORD_REGISTER_OPERATIONS target.
+ 
+ 2017-10-31  Jason Merrill  <jason@redhat.com>
+ 
+ 	* gdbinit.in: Skip over inlines from timevar.h.
+ 
+ 2017-10-31  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/gcov.texi: Document new option.
+ 	* gcov.c (print_usage): Likewise print it.
+ 	(process_args): Support the argument.
+ 	(format_count): New function.
+ 	(format_gcov): Use the function.
+ 
+ 2017-10-31  Martin Liska  <mliska@suse.cz>
+ 
+ 	* gcov.c (struct name_map): do not use typedef.
+ 	Define operator== and operator<.
+ 	(name_search): Remove.
+ 	(name_sort): Remove.
+ 	(main): Do not allocate names.
+ 	(process_file): Add vertical space.
+ 	(generate_results): Use std::find.
+ 	(release_structures): Do not release memory.
+ 	(find_source): Use std::find.
+ 
+ 2017-10-31  Martin Liska  <mliska@suse.cz>
+ 
+ 	* gcov.c (struct line_info): Remove it's typedef.
+ 	(line_info::line_info): Add proper ctor.
+ 	(line_info::has_block): Do not use a typedef.
+ 	(struct source_info): Do not use typedef.
+ 	(circuit): Likewise.
+ 	(get_cycles_count): Likewise.
+ 	(output_intermediate_file): Iterate via vector iterator.
+ 	(add_line_counts): Use std::vector methods.
+ 	(accumulate_line_counts): Likewise.
+ 	(output_lines): Likewise.
+ 
+ 2017-10-31  Martin Liska  <mliska@suse.cz>
+ 
+ 	* gcov.c (struct source_info): Remove typedef.
+ 	(source_info::source_info): Add proper ctor.
+ 	(accumulate_line_counts): Use struct, not it's typedef.
+ 	(output_gcov_file): Likewise.
+ 	(output_lines): Likewise.
+ 	(main): Do not allocate an array.
+ 	(output_intermediate_file): Use size of vector container.
+ 	(process_file): Resize the vector.
+ 	(generate_results): Do not preallocate, use newly added vector
+ 	lines.
+ 	(release_structures): Do not release sources.
+ 	(find_source): Use vector methods.
+ 	(add_line_counts): Do not use typedef.
+ 
+ 2017-10-31  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/gcov.texi: Document that.
+ 	* gcov.c (add_line_counts): Mark lines with a non-executed
+ 	statement.
+ 	(output_line_beginning): Handle such lines.
+ 	(output_lines): Pass new argument.
+ 	(output_intermediate_file): Print it in intermediate format.
+ 
+ 2017-10-31  Martin Liska  <mliska@suse.cz>
+ 
+ 	* color-macros.h: New file.
+ 	* diagnostic-color.c: Factor out color related to macros to
+ 	color-macros.h.
+ 	* doc/gcov.texi: Document -k option.
+ 	* gcov.c (INCLUDE_STRING): Include string.h.
+ 	(print_usage): Add -k option.
+ 	(process_args): Parse it.
+ 	(pad_count_string): New function.
+ 	(output_line_beginning): Likewise.
+ 	(DEFAULT_LINE_START): New macro.
+ 	(output_lines): Support color output.
+ 
+ 2017-10-31  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR gcov-profile/82633
+ 	* doc/gcov.texi: Document -fkeep-{static,inline}-functions and
+ 	their interaction with GCOV infrastructure.
+ 	* configure.ac: Add -fkeep-{inline,static}-functions to
+ 	coverage_flags.
+ 	* configure: Regenerate.
+ 
+ 2017-10-31  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/82772
+ 	* config/alpha/sync.md (fetchop_constr) <and>: Change to "rINM".
+ 
+ 2017-10-31  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR target/82674
+ 	* config/rs6000/rs6000.md (allocate_stack): Force update interval
+ 	into a register if it does not fit into an immediate offset field.
+ 
+ 2017-10-31  Olivier Hainque  <hainque@adacore.com>
+ 
+ 	* gcc/Makefile.in (FLAGS_TO_PASS): Pass libsubdir as well.
+ 
+ 2017-10-31  Julia Koval  <julia.koval@intel.com>
+ 
+ 	* config.gcc: Add gfniintrin.h.
+ 	* config/i386/gfniintrin.h: New.
+ 	* config/i386/i386-builtin-types.def
+ 	(__builtin_ia32_vgf2p8affineinvqb_v64qi,
+ 	__builtin_ia32_vgf2p8affineinvqb_v64qi_mask,
+ 	__builtin_ia32_vgf2p8affineinvqb_v32qi,
+ 	__builtin_ia32_vgf2p8affineinvqb_v32qi_mask,
+ 	__builtin_ia32_vgf2p8affineinvqb_v16qi,
+ 	__builtin_ia32_vgf2p8affineinvqb_v16qi_mask): New builtins.
+ 	* config/i386/i386-builtin.def (V64QI_FTYPE_V64QI_V64QI_INT_V64QI_UDI,
+ 	V32QI_FTYPE_V32QI_V32QI_INT_V32QI_USI,
+ 	V16QI_FTYPE_V16QI_V16QI_INT_V16QI_UHI,
+ 	V64QI_FTYPE_V64QI_V64QI_INT): New types.
+ 	* config/i386/i386.c (ix86_expand_args_builtin): Handle new types.
+ 	* config/i386/immintrin.h: Include gfniintrin.h.
+ 	* config/i386/sse.md (vgf2p8affineinvqb_*) New pattern.
+ 
+ 2017-10-30  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc.c (HAVE_TARGET_EXECUTABLE_SUFFIX): Remove old kludge.
+ 
+ 2017-10-30  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	* config/arm/arm.md (ashldi3): Remove shift by 1 expansion.
+ 	(arm_ashldi3_1bit): Remove pattern.
+ 	(ashrdi3): Remove shift by 1 expansion.
+ 	(arm_ashrdi3_1bit): Remove pattern.
+ 	(lshrdi3): Remove shift by 1 expansion.
+ 	(arm_lshrdi3_1bit): Remove pattern.
+ 	* config/arm/arm.c (arm_rtx_costs_internal): Slightly increase
+ 	cost of ashldi3 by 1.
+ 	* config/arm/neon.md (ashldi3_neon): Remove shift by 1 expansion.
+ 	(<shift>di3_neon): Likewise.
+ 
+ 2017-10-30  Dominik Infuehr  <dominik.infuehr@theobroma-systems.com>
+ 
+ 	* config/aarch64/aarch64-simd.md (*aarch64_simd_mov): Rename
+ 	both identically named patterns to (*aarch64_simd_mov<VD:mode>)
+ 	and (*aarch64_simd_mov<VQ:mode>).
+ 	(*aarch64_simd_mov<VD:mode>): Change type attribute to match
+ 	pattern alternative.
+ 	(*aarch64_simd_mov<VQ:mode>): Re-order and change type
+ 	attributes to match pattern alternative.
+ 
+ 2017-10-30  Steven Munroe  <munroesj@gcc.gnu.org>
+ 
+ 	* config.gcc (powerpc*-*-*): Add emmintrin.h.
+ 	* config/rs6000/emmintrin.h: New file.
+ 	* config/rs6000/x86intrin.h [__ALTIVEC__]: Include emmintrin.h.
+ 
+ 2017-10-30  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	* config/arm/vfp.md (movdi_vfp): Merge changes from movdi_vfp_cortexa8.
+ 	* (movdi_vfp_cortexa8): Remove pattern.
+ 
+ 2017-10-30  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	* doc/install.texi (Specific, alpha*-*-*): Remove DEC OSF/1
+ 	etc. reference.
+ 	(Specific, alpha*-dec-osf5.1): Remove.
+ 	(Specific, mips-sgi-irix5): Remove.
+ 	(Specific, mips-sgi-irix6): Remove.
+ 
+ 2017-10-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/22141
+ 	* gimple-ssa-store-merging.c (merged_store_group::apply_stores): Fix
+ 	arguments to clear_bit_region_be.
+ 
+ 2017-10-30  Jim Wilson  <wilson@tuliptree.org>
+ 
+ 	* gimplify.c: Include memmodel.h.
+ 
+ 2017-10-30  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* omp-grid.c (grid_attempt_target_gridification): Also insert a
+ 	condition whether loop should be executed at all.
+ 
+ 2017-10-30  Will Schmidt  <will_schmidt@vnet.ibm.com>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add support for
+ 	gimple folding of vec_madd() intrinsics.
+ 	* config/rs6000/altivec.md (mulv8hi3): Rename altivec_vmladduhm to
+ 	fmav8hi4.  (altivec_vmladduhm): Rename to fmav8hi4.
+ 	* config/rs6000/rs6000-builtin.def: Rename vmladduhm to fmav8hi4
+ 
+ 2017-10-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/82762
+ 	Revert
+ 	2017-10-23  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/82129
+ 	Revert
+ 	2017-08-01  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/81181
+ 	* tree-ssa-pre.c (compute_antic_aux): Defer clean() to ...
+ 	(compute_antic): ... end of iteration here.
+ 
+ 2017-10-30  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	* doc/invoke.texi (C Dialect Options): Document -std=c17,
+ 	-std=iso9899:2017 and -std=gnu17.
+ 	* doc/standards.texi (C Language): Document C17 support.
+ 	* doc/cpp.texi (Overview): Mention -std=c17.
+ 	(Standard Predefined Macros): Document C11 and C17 values of
+ 	__STDC_VERSION__.  Do not refer to C99 support as incomplete.
+ 	* doc/extend.texi (Inline): Do not list individual options for
+ 	standards newer than C99.
+ 	* dwarf2out.c (highest_c_language, gen_compile_unit_die): Handle
+ 	"GNU C17".
+ 	* config/rl78/rl78.c (rl78_option_override): Handle "GNU C17"
+ 	language name.
+ 
+ 2017-10-30  Maxim Ostapenko  <m.ostapenko@samsung.com>
+ 
+ 	* asan.c (asan_finish_file): Align asan globals array by shadow
+ 	granularity.
+ 
+ 2017-10-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/22141
+ 	* gimple-ssa-store-merging.c: Include rtl.h and expr.h.
+ 	(struct store_immediate_info): Add bitregion_start and bitregion_end
+ 	fields.
+ 	(store_immediate_info::store_immediate_info): Add brs and bre
+ 	arguments and initialize bitregion_{start,end} from those.
+ 	(struct merged_store_group): Add bitregion_start, bitregion_end,
+ 	align_base and mask fields.  Drop unnecessary struct keyword from
+ 	struct store_immediate_info.  Add do_merge method.
+ 	(clear_bit_region_be): Use memset instead of loop storing zeros.
+ 	(merged_store_group::do_merge): New method.
+ 	(merged_store_group::merge_into): Use do_merge.  Allow gaps in between
+ 	stores as long as the surrounding bitregions have no gaps.
+ 	(merged_store_group::merge_overlapping): Use do_merge.
+ 	(merged_store_group::apply_stores): Test that bitregion_{start,end}
+ 	is byte aligned, rather than requiring that start and width are
+ 	byte aligned.  Drop unnecessary struct keyword from
+ 	struct store_immediate_info.  Allocate and populate also mask array.
+ 	Make start of the arrays relative to bitregion_start rather than
+ 	start and size them according to bitregion_{end,start} difference.
+ 	(struct imm_store_chain_info): Drop unnecessary struct keyword from
+ 	struct store_immediate_info.
+ 	(pass_store_merging::gate): Punt if BITS_PER_UNIT or CHAR_BIT is not 8.
+ 	(pass_store_merging::terminate_all_aliasing_chains): Drop unnecessary
+ 	struct keyword from struct store_immediate_info.
+ 	(imm_store_chain_info::coalesce_immediate_stores): Allow gaps in
+ 	between stores as long as the surrounding bitregions have no gaps.
+ 	Formatting fixes.
+ 	(struct split_store): Add orig non-static data member.
+ 	(split_store::split_store): Initialize orig to false.
+ 	(find_constituent_stmts): Return store_immediate_info *, non-NULL
+ 	if there is exactly a single original stmt.  Change stmts argument
+ 	to pointer from reference, if NULL, don't push anything to it.  Add
+ 	first argument, use it to optimize skipping over orig stmts that
+ 	are known to be before bitpos already.  Simplify.
+ 	(split_group): Return unsigned int count how many stores are or
+ 	would be needed rather than a bool.  Add allow_unaligned argument.
+ 	Change split_stores argument from reference to pointer, if NULL,
+ 	only do a dry run computing how many stores would be produced.
+ 	Rewritten algorithm to use both alignment and misalign if
+ 	!allow_unaligned and handle bitfield stores with gaps.
+ 	(imm_store_chain_info::output_merged_store): Set start_byte_pos
+ 	from bitregion_start instead of start.  Compute allow_unaligned
+ 	here, if true, do 2 split_group dry runs to compute which one
+ 	produces fewer stores and prefer aligned if equal.  Punt if
+ 	new count is bigger or equal than original before emitting any
+ 	statements, rather than during that.  Remove no longer needed
+ 	new_ssa_names tracking.  Replace num_stmts with
+ 	split_stores.length ().  Use 32-bit stack allocated entries
+ 	in split_stores auto_vec.  Try to reuse original store lhs/rhs1
+ 	if possible.  Handle bitfields with gaps.
+ 	(pass_store_merging::execute): Ignore bitsize == 0 stores.
+ 	Compute bitregion_{start,end} for the stores and construct
+ 	store_immediate_info with that.  Formatting fixes.
+ 
+ 2017-10-30  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/82725
+ 	* config/i386/i386.c (legitimate_pic_address_disp_p): Allow
+ 	UNSPEC_DTPOFF and UNSPEC_NTPOFF with SImode immediate offset.
+ 
+ 2017-10-29  Jim Wilson  <wilson@tuliptree.org>
+ 
+ 	* gimplify.c: Include tm_p.h.
+ 
+ 	* common.opt (gcoff): Re-add as ignored option.
+ 	(gcoff1, gcoff2, gcoff3): Likewise.
+ 
+ 	* Makefile.in (OBJS): Delete sdbout.o.
+ 	(GTFILES): Delete $(srcdir)/sdbout.c.
+ 	* debug.h: Delete sdb_debug_hooks.
+ 	* final.c: Delete sdbout.h include.
+ 	(final_scan_insn): Delete SDB_DEBUG check.
+ 	(rest_of_clean_state): Likewise.
+ 	* output.h: Delete sdb_begin_function_line.
+ 	* sdbout.c: Delete.
+ 	* sdbout.h: Delete.
+ 	* toplev.c: Delete sdbout.h include.
+ 	(process_options): Delete SDB_DEBUG check.
+ 	* tree-core.h (tree_type_common): Delete pointer field of
+ 	tree_type_symtab.
+ 	* tree.c (copy_node): Clear TYPE_SYMTAB_DIE instead of
+ 	TYPE_SYMTAB_POINTER.
+ 	* tree.h (TYPE_SYMTAB_POINTER): Delete.
+ 	(TYPE_SYMTAB_IS_POINTER): Delete.
+ 	(TYPE_SYMTAB_IS_DIE): Renumber.
+ 	* xcoffout.c: Refer to former sdbout.c file.
+ 	(xcoffout_begin_prologue): Use past tense for sdbout.c reference.
+ 
+ 	* doc/install.texi (--with-stabs): Delete COFF and ECOFF info.
+ 	* doc/invoke.texi (SEEALSO): Delete adb and sdb references.
+ 	(Debugging Options): Delete -gcoff.
+ 	(-gstabs): Delete SDB reference.
+ 	(-gcoff): Delete.
+ 	(-gcoff@var{level}): Delete.
+ 	* doc/passes.texi (Debugging information output): Delete SDB and
+ 	sdbout.c references.
+ 	* doc/tm.texi: Regenerate.
+ 	* doc/tm.texi.in (DWARF_CIE_DATA_ALIGNMENT): Delete SDB from xref.
+ 	(SDB and DWARF): Change node name to DWARF and delete SDB and COFF
+ 	references.
+ 	(DEBUGGER_AUTO_OFFSET): Delete COFF and SDB references.
+ 	(PREFERRED_DEBUGGING_TYPE): Delete SDB_DEBUG and -gcoff references.
+ 	(SDB_DEBUGGING_INFO): Delete.
+ 	(PUT_SDB_@dots{}, SDB_DELIM, SDB_ALLOW_UNKNOWN_REFERENCES)
+ 	SDB_ALLOW_FORWARD_REFERENCES, SDB_OUTPUT_SOURCE_LINE): Delete.
+ 	* target.def (output_source_filename): Delete COFF reference.
+ 
+ 	* common.opt (gcoff): Delete.
+ 	(gxcoff+): Update Negative chain.
+ 	* defaults.h: Delete all references to SDB_DEBUGGING_INFO and
+ 	SDB_DEBUG.
+ 	* dwarf2out.c (gen_array_type_die): Change SDB to debuggers.
+ 	* flag-types.h (enum debug_info_type): Delete SDB_DEBUG.
+ 	* function.c (number_blocks): Delete SDB_DEBUGGING_INFO, SDB_DEBUG,
+ 	and SDB references.
+ 	(expand_function_start): Change sdb reference to past tense.
+ 	(expand_function_end): Change sdb reference to past tense.
+ 	* gcc.c (cpp_unique_options): Delete gcoff3 reference.
+ 	* opts.c (debug_type_names): Delete coff entry.
+ 	(common_handle_option): Delete OPT_gcoff case.
+ 	* system.h (SDB_DEBUG, SDB_DEBUGGING_INFO): Poison.
+ 
+ 	* config/dbxcoff.h (PREFERRED_DEBUGGING_TYPE): Set to DBX_DEBUG.
+ 	* config/cris/cris.h: Delete SDB reference in comment.
+ 	* config/i386/cygming.h: Don't define SDB_DEBUGGING_INFO.
+ 	(ASM_DECLARE_FUNCTION_NAME): Delete SDB reference from comment.
+ 	* config/i386/gas.h: Don't define SDB_DEBUGGING_INFO.
+ 	* config/i386/i386.c (svr4_dbx_register_map): Change SDB references
+ 	to past tense.
+ 	(ix86_expand_prologue): Likewise.
+ 	* config/i386/winnt.c (i386_pe_start_function): Don't check SDB_DEBUG.
+ 	* config/ia64/ia64.h: Likewise.
+ 	* config/m68k/m68kelf.h (DBX_REGISTER_NUMBER): Delete SDB reference.
+ 	* config/mips/mips.h (SUBTARGET_ASM_DEBUGGING_SPEC): Delete gcoff*
+ 	support.
+ 	* config/mmix/mmix.h: Likewise.
+ 	* config/nds32/nds32.c: Likewise.
+ 	* config/stormy/storym16.h: Likewise.
+ 	* config/visium/visium.h: Likewise.
+ 	* config/vx-common.h (SDB_DEBUGGING_INFO): Delete undef.
+ 
+ 2017-10-28  Sandra Loosemore  <sandra@codesourcery.com>
+ 
+ 	* config/nios2/nios2.h (FRAME_GROWS_DOWNWARD): Define to 1.
+ 	* config/nios2/nios2.c (nios2_initial_elimination_offset):  Make
+ 	FRAME_POINTER_REGNUM point at high end of local var area.
+ 
+ 2017-10-27  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* bb-reorder.c (find_traces_1_round): Fix off-by-one index.
+ 	Move comment around.  Do not reset best_edge for a copiable
+ 	destination if the copy would cause a partition change.
+ 	(better_edge_p): Remove redundant check.
+ 
+ 2017-10-27  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386-protos.h (ix86_fp_compare_mode): Remove prototype.
+ 
+ 2017-10-27  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	* builtins.c (CASE_MATHFN_FLOATN): New helper macro to add cases
+ 	for math functions that have _Float<N> and _Float<N>X variants.
+ 	(mathfn_built_in_2): Add support for math functions that have
+ 	_Float<N> and _Float<N>X variants.
+ 	(DEF_INTERNAL_FLT_FLOATN_FN): New helper macro.
+ 	(expand_builtin_mathfn_ternary): Add support for fma with
+ 	_Float<N> and _Float<N>X variants.
+ 	(expand_builtin): Likewise.
+ 	(fold_builtin_3): Likewise.
+ 	* builtins.def (DEF_EXT_LIB_FLOATN_NX_BUILTINS): New macro to
+ 	create math function _Float<N> and _Float<N>X variants as external
+ 	library builtins.
+ 	(BUILT_IN_COPYSIGN _Float<N> and _Float<N>X variants) Use
+ 	DEF_EXT_LIB_FLOATN_NX_BUILTINS to make built-in functions using
+ 	the __builtin_ prefix and if not strict ansi, without the prefix.
+ 	(BUILT_IN_FABS _Float<N> and _Float<N>X variants): Likewise.
+ 	(BUILT_IN_FMA _Float<N> and _Float<N>X variants): Likewise.
+ 	(BUILT_IN_FMAX _Float<N> and _Float<N>X variants): Likewise.
+ 	(BUILT_IN_FMIN _Float<N> and _Float<N>X variants): Likewise.
+ 	(BUILT_IN_NAN _Float<N> and _Float<N>X variants): Likewise.
+ 	(BUILT_IN_SQRT _Float<N> and _Float<N>X variants): Likewise.
+ 	* builtin-types.def (BT_FN_FLOAT16_FLOAT16_FLOAT16_FLOAT16): New
+ 	function signatures for fma _Float<N> and _Float<N>X variants.
+ 	(BT_FN_FLOAT32_FLOAT32_FLOAT32_FLOAT32): Likewise.
+ 	(BT_FN_FLOAT64_FLOAT64_FLOAT64_FLOAT64): Likewise.
+ 	(BT_FN_FLOAT128_FLOAT128_FLOAT128_FLOAT128): Likewise.
+ 	(BT_FN_FLOAT32X_FLOAT32X_FLOAT32X_FLOAT32X): Likewise.
+ 	(BT_FN_FLOAT64X_FLOAT64X_FLOAT64X_FLOAT64X): Likewise.
+ 	(BT_FN_FLOAT128X_FLOAT128X_FLOAT128X_FLOAT128X): Likewise.
+ 	* gencfn-macros.c (print_case_cfn): Add support for math functions
+ 	that have _Float<N> and _Float<N>X variants.
+ 	(print_define_operator_list): Likewise.
+ 	(fltfn_suffixes): Likewise.
+ 	(main): Likewise.
+ 	* internal-fn.def (DEF_INTERNAL_FLT_FLOATN_FN): New helper macro
+ 	for math functions that have _Float<N> and _Float<N>X variants.
+ 	(SQRT): Add support for sqrt, copysign, fmin and fmax _Float<N>
+ 	and _Float<N>X variants.
+ 	(COPYSIGN): Likewise.
+ 	(FMIN): Likewise.
+ 	(FMAX): Likewise.
+ 	* fold-const.c (tree_call_nonnegative_warnv_p): Add support for
+ 	copysign, fma, fmax, fmin, and sqrt _Float<N> and _Float<N>X
+ 	variants.
+ 	(integer_valued_read_call_p): Likewise.
+ 	* fold-const-call.c (fold_const_call_ss): Likewise.
+ 	(fold_const_call_sss): Add support for copysign, fmin, and fmax
+ 	_Float<N> and _Float<N>X variants.
+ 	(fold_const_call_ssss): Add support for fma _Float<N> and
+ 	_Float<N>X variants.
+ 	* gimple-ssa-backprop.c (backprop::process_builtin_call_use): Add
+ 	support for copysign and fma _Float<N> and _Float<N>X variants.
+ 	(backprop::process_builtin_call_use): Likewise.
+ 	* tree-call-cdce.c (can_test_argument_range); Add support for
+ 	sqrt _Float<N> and _Float<N>X variants.
+ 	(edom_only_function): Likewise.
+ 	(get_no_error_domain): Likewise.
+ 	* tree-ssa-math-opts.c (internal_fn_reciprocal): Likewise.
+ 	* tree-ssa-reassoc.c (attempt_builtin_copysign): Add support for
+ 	copysign _Float<N> and _Float<N>X variants.
+ 	* config/rs6000/rs6000-builtin.def (SQRTF128): Delete, this is now
+ 	handled by machine independent code.
+ 	(FMAF128): Likewise.
+ 	* doc/cpp.texi (Common Predefined Macros): Document defining
+ 	__FP_FAST_FMAF<N> and __FP_FAST_FMAF<N>X if the backend supports
+ 	fma _Float<N> and _Float<N>X variants.
+ 
+ 2017-10-27  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/82692
+ 	* config/i386/i386-modes.def (CCFPU): Remove definition.
+ 	* config/i386/i386.c (put_condition_mode): Remove CCFPU mode handling.
+ 	(ix86_cc_modes_compatible): Ditto.
+ 	(ix86_expand_carry_flag_compare): Ditto.
+ 	(ix86_expand_int_movcc): Ditto.
+ 	(ix86_expand_int_addcc): Ditto.
+ 	(ix86_reverse_condition): Ditto.
+ 	(ix86_unordered_fp_compare): Rename from ix86_fp_compare_mode.
+ 	Return true/false for unordered/ordered fp comparisons.
+ 	(ix86_cc_mode): Always return CCFPmode for float mode comparisons.
+ 	(ix86_prepare_fp_compare_args): Update for rename.
+ 	(ix86_expand_fp_compare): Update for rename.  Generate unordered
+ 	compare RTXes wrapped with UNSPEC_NOTRAP unspec.
+ 	(ix86_expand_sse_compare_and_jump): Ditto.
+ 	* config/i386/predicates.md (fcmov_comparison_operator):
+ 	Remove CCFPU mode handling.
+ 	(ix86_comparison_operator): Ditto.
+ 	(ix86_carry_flag_operator): Ditto.
+ 	* config/i386/i386.md (UNSPEC_NOTRAP): New unspec.
+ 	(*cmpu<mode>_i387): Wrap compare RTX with UNSPEC_NOTRAP unspec.
+ 	(*cmpu<mode>_cc_i387): Ditto.
+ 	(FPCMP): Remove mode iterator.
+ 	(unord): Remove mode attribute.
+ 	(unord_subst): New define_subst transformation
+ 	(unord): New define_subst attribute.
+ 	(unordered): Ditto.
+ 	(*cmpi<unord><MODEF:mode>): Rewrite using unord_subst transformation.
+ 	(*cmpi<unord>xf_i387): Ditto.
+ 	* config/i386/sse.md (<sse>_<unord>comi<round_saeonly_name>): Merge
+ 	from <sse>_comi<round_saeonly_name> and <sse>_ucomi<round_saeonly_name>
+ 	using unord_subst transformation.
+ 	* config/i386/subst.md (SUBST_A): Remove CCFP and CCFPU modes.
+ 	(round_saeonly): Also handle CCFP mode.
+ 	* reg-stack.c (subst_stack_regs_pat): Handle UNSPEC_NOTRAP unspec.
+ 	Remove UNSPEC_SAHF unspec handling.
+ 
+ 2017-10-27  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* x86-tune.def (X86_TUNE_INTER_UNIT_MOVES_TO_VEC): Disable for Zen.
+ 
+ 2017-10-27  Jeff Law  <law@redhat.com>
+ 
+ 	* gimple-ssa-sprintf.c: Include domwalk.h.
+ 	(class sprintf_dom_walker): New class, derived from dom_walker.
+ 	(sprintf_dom_walker::before_dom_children): New function.
+ 	(struct call_info): Moved into sprintf_dom_walker class
+ 	(compute_formath_length, handle_gimple_call): Likewise.
+ 	(sprintf_length::execute): Call the dominator walker rather
+ 	than walking the statements.
+ 
+ 	* tree-vrp.c (check_all_array_refs): Do not use wi->info to smuggle
+ 	gimple statement locations.
+ 	(check_array_bounds): Corresponding changes.  Get the statement's
+ 	location directly from wi->stmt.
+ 
+ 2017-10-27  Palmer Dabbelt  <palmer@dabbelt.com>
+ 
+ 	PR target/82717
+ 	* doc/invoke.texi (RISC-V) <-mabi>: Correct and improve.
+ 
+ 2017-10-27  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* config/i386/x86-tune.def (X86_TUNE_PARTIAL_REG_DEPENDENCY,
+ 	X86_TUNE_MOVX): Disable for Haswell and newer CPUs.
+ 
+ 2017-10-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/82703
+ 	* config/i386/i386-protos.h (maybe_get_pool_constant): Removed.
+ 	* config/i386/i386.c (maybe_get_pool_constant): Removed.
+ 	(ix86_split_to_parts): Use avoid_constant_pool_reference instead of
+ 	maybe_get_pool_constant.
+ 	* config/i386/predicates.md (zero_extended_scalar_load_operand):
+ 	Likewise.
+ 
+ 2017-10-27  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	* doc/install.texi (Specific, i?86-*-solaris2.10): Simplify gas
+ 	2.26 caveat.  Update gas and gld versions.
+ 	(Specific, *-*-solaris2*): Update binutils version.  Remove caveat
+ 	reference.
+ 
+ 2017-10-27  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
+ 
+ 	* cgraph.h (set_malloc_flag): Declare.
+ 	* cgraph.c (set_malloc_flag_1): New function.
+ 	(set_malloc_flag): Likewise.
+ 	* ipa-fnsummary.h (ipa_call_summary): Add new field is_return_callee.
+ 	* ipa-fnsummary.c (ipa_call_summary::reset): Set is_return_callee to
+ 	false.
+ 	(read_ipa_call_summary): Add support for reading is_return_callee.
+ 	(write_ipa_call_summary): Stream is_return_callee.
+ 	* ipa-inline.c (ipa_inline): Remove call to ipa_free_fn_summary.
+ 	* ipa-pure-const.c: Add headers ssa.h, alloc-pool.h, symbol-summary.h,
+ 	ipa-prop.h, ipa-fnsummary.h.
+ 	(pure_const_names): Change to static.
+ 	(malloc_state_e): Define.
+ 	(malloc_state_names): Define.
+ 	(funct_state_d): Add field malloc_state.
+ 	(varying_state): Set malloc_state to STATE_MALLOC_BOTTOM.
+ 	(check_retval_uses): New function.
+ 	(malloc_candidate_p): Likewise.
+ 	(analyze_function): Add support for malloc attribute.
+ 	(pure_const_write_summary): Stream malloc_state.
+ 	(pure_const_read_summary): Add support for reading malloc_state.
+ 	(dump_malloc_lattice): New function.
+ 	(propagate_malloc): New function.
+ 	(warn_function_malloc): New function.
+ 	(ipa_pure_const::execute): Call propagate_malloc and
+ 	ipa_free_fn_summary.
+ 	(pass_local_pure_const::execute): Add support for malloc attribute.
+ 	* ssa-iterators.h (RETURN_FROM_IMM_USE_STMT): New macro.
+ 	* doc/invoke.texi: Document Wsuggest-attribute=malloc.
+ 
+ 2017-10-27  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR gcov-profile/82457
+ 	* doc/invoke.texi: Document that one needs a non-strict ISO mode
+ 	for fork-like functions to be properly instrumented.
+ 
+ 2017-10-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/81659
+ 	* tree-eh.c (pass_lower_eh_dispatch::execute): Free dominator
+ 	info when we redirected EH.
+ 
+ 2017-10-26  Michael Collison  <michael.collison@arm.com>
+ 
+ 	* config/aarch64/aarch64.md(<optab>_trunc><vf><GPI:mode>2):
+ 	New pattern.
+ 	(<optab>_trunchf<GPI:mode>2: New pattern.
+ 	(<optab>_trunc<vgp><GPI:mode>2: New pattern.
+ 	* config/aarch64/iterators.md (wv): New mode attribute.
+ 	(vf, VF): New mode attributes.
+ 	(vgp, VGP): New mode attributes.
+ 	(s): Update attribute with SImode and DImode prefixes.
+ 
+ 2017-10-26  Sandra Loosemore  <sandra@codesourcery.com>
+ 
+ 	* config/nios2/constraints.md ("S"): Match r0rel_constant_p too.
+ 	* config/nios2/nios2-protos.h (r0rel_constant_p): Declare.
+ 	* config/nios2/nios2.c: (nios2_r0rel_sec_regex): New.
+ 	(nios2_option_overide): Initialize it.  Don't allow R0-relative
+ 	addressing with PIC.
+ 	(nios2_rtx_costs): Handle r0rel_constant_p like gprel_constant_p.
+ 	(nios2_symbolic_constant_p): Likewise.
+ 	(nios2_legitimate_address_p): Likewise.
+ 	(nios2_r0rel_section_name_p): New.
+ 	(nios2_symbol_ref_in_r0rel_data_p): New.
+ 	(nios2_emit_move_sequence): Handle r0rel_constant_p.
+ 	(r0rel_constant_p): New.
+ 	(nios2_print_operand_address): Handle r0rel_constant_p.
+ 	(nios2_cdx_narrow_form_p): Likewise.
+ 	* config/nios2/nios2.opt (mr0rel-sec=): New option.
+ 	* doc/invoke.texi (Option Summary): Add -mr0rel-sec.
+ 	(Nios II Options): Document -mr0rel-sec.
+ 
+ 2017-10-26  Sandra Loosemore  <sandra@codesourcery.com>
+ 
+ 	* config/nios2/nios2.c: Include xregex.h.
+ 	(nios2_gprel_sec_regex): New.
+ 	(nios2_option_overide): Initialize it.  Don't allow GP-relative
+ 	addressing with PIC.
+ 	(nios2_small_section_name_p): Check for regex match.
+ 	* config/nios2/nios2.opt (mgprel-sec=): New option.
+ 	* doc/invoke.texi (Option Summary): Add -mgprel-sec.
+ 	(Nios II Options): Document -mgprel-sec.
+ 
+ 2017-10-26  Jim Wilson  <wilson@tuliptree.org>
+ 
+ 	* doc/invoke.texi (-fdebug-prefix-map): Expand documentation.
+ 
+ 2017-10-26  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	PR tree-optimization/82707
+ 	* gimple.c (gimple_copy): Fix unsharing of
+ 	GIMPLE_OMP_{SINGLE,TARGET,TEAMS}.
+ 
+ 2017-10-26  Olga Makhotina  <olga.makhotina@intel.com>
+ 
+ 	* config/i386/avx512fintrin.h (_mm512_cmpeq_pd_mask,
+ 	_mm512_cmple_pd_mask, _mm512_cmplt_pd_mask,
+ 	_mm512_cmpneq_pd_mask, _mm512_cmpnle_pd_mask,
+ 	_mm512_cmpnlt_pd_mask, _mm512_cmpord_pd_mask,
+ 	_mm512_cmpunord_pd_mask, _mm512_mask_cmpeq_pd_mask,
+ 	_mm512_mask_cmple_pd_mask, _mm512_mask_cmplt_pd_mask,
+ 	_mm512_mask_cmpneq_pd_mask, _mm512_mask_cmpnle_pd_mask,
+ 	_mm512_mask_cmpnlt_pd_mask, _mm512_mask_cmpord_pd_mask,
+ 	_mm512_mask_cmpunord_pd_mask, _mm512_cmpeq_ps_mask,
+ 	_mm512_cmple_ps_mask, _mm512_cmplt_ps_mask,
+ 	_mm512_cmpneq_ps_mask, _mm512_cmpnle_ps_mask,
+ 	_mm512_cmpnlt_ps_mask, _mm512_cmpord_ps_mask,
+ 	_mm512_cmpunord_ps_mask, _mm512_mask_cmpeq_ps_mask,
+ 	_mm512_mask_cmple_ps_mask, _mm512_mask_cmplt_ps_mask,
+ 	_mm512_mask_cmpneq_ps_mask, _mm512_mask_cmpnle_ps_mask,
+ 	_mm512_mask_cmpnlt_ps_mask, _mm512_mask_cmpord_ps_mask,
+ 	_mm512_mask_cmpunord_ps_mask): New intrinsics.
+ 
+ 2017-10-26  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	* config/rs6000/aix.h (TARGET_IEEEQUAD_DEFAULT): Set long double
+ 	default to IBM.
+ 	* config/rs6000/darwin.h (TARGET_IEEEQUAD_DEFAULT): Likewise.
+ 	* config/rs6000/rs6000.opt (-mabi=ieeelongdouble): Move the
+ 	warning to rs6000.c.  Remove the Undocumented flag, since it has
+ 	been documented.
+ 	(-mabi=ibmlongdouble): Likewise.
+ 	* config/rs6000/rs6000.c (TARGET_IEEEQUAD_DEFAULT): If it is not
+ 	already set, set the default format for long double.
+ 	(rs6000_debug_reg_global): Print whether long double is IBM or
+ 	IEEE.
+ 	(rs6000_option_override_internal): Rework setting long double
+ 	format.  Only warn if the user is changing the long double default
+ 	and they did not use -Wno-psabi.
+ 	* doc/invoke.texi (PowerPC options): Update the documentation for
+ 	-mabi=ieeelongdouble and -mabi=ibmlongdouble.
+ 
+ 2017-10-26  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* rtl.h (wider_subreg_mode): New function.
+ 	* ira.h (ira_sort_regnos_for_alter_reg): Take a machine_mode *
+ 	rather than an unsigned int *.
+ 	* ira-color.c (regno_max_ref_width): Replace with...
+ 	(regno_max_ref_mode): ...this new variable.
+ 	(coalesced_pseudo_reg_slot_compare): Update accordingly.
+ 	Use wider_subreg_mode.
+ 	(ira_sort_regnos_for_alter_reg): Likewise.  Take a machine_mode *
+ 	rather than an unsigned int *.
+ 	* lra-constraints.c (uses_hard_regs_p): Use wider_subreg_mode.
+ 	(process_alt_operands): Likewise.
+ 	(invariant_p): Likewise.
+ 	* lra-spills.c (assign_mem_slot): Likewise.
+ 	(add_pseudo_to_slot): Likewise.
+ 	* lra.c (collect_non_operand_hard_regs): Likewise.
+ 	(add_regs_to_insn_regno_info): Likewise.
+ 	* reload1.c (regno_max_ref_width): Replace with...
+ 	(regno_max_ref_mode): ...this new variable.
+ 	(reload): Update accordingly.  Update call to
+ 	ira_sort_regnos_for_alter_reg.
+ 	(alter_reg): Update to use regno_max_ref_mode.  Call wider_subreg_mode.
+ 	(init_eliminable_invariants): Update to use regno_max_ref_mode.
+ 	(scan_paradoxical_subregs): Likewise.
+ 
+ 2017-10-26  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	* config/aarch64/aarch64.h (EXIT_IGNORE_STACK): Set if alloca is used.
+ 	(aarch64_frame): Add emit_frame_chain boolean.
+ 	* config/aarch64/aarch64.c (aarch64_frame_pointer_required)
+ 	Move eh_return case to aarch64_layout_frame.
+ 	(aarch64_layout_frame): Initialize emit_frame_chain.
+ 	(aarch64_expand_prologue): Use emit_frame_chain.
+ 
+ 2017-10-26  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_layout_frame):
+ 	Ensure LR is always stored at the bottom of the callee-saves.
+ 	Remove rarely used frame layout which saves callee-saves at top of
+ 	frame, so the store of LR can be used as a valid probe in all cases.
+ 
+ 2017-10-26  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_legitimize_address_displacement):
+ 	Improve unaligned TImode/TFmode base/offset split.
+ 
+ 2017-10-26  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* caller-save.c (mark_referenced_regs):  Use read_modify_subreg_p.
+ 	* combine.c (find_single_use_1): Likewise.
+ 	(expand_field_assignment): Likewise.
+ 	(move_deaths): Likewise.
+ 	* lra-constraints.c (simplify_operand_subreg): Likewise.
+ 	(curr_insn_transform): Likewise.
+ 	* lra.c (collect_non_operand_hard_regs): Likewise.
+ 	(add_regs_to_insn_regno_info): Likewise.
+ 	* rtlanal.c (reg_referenced_p): Likewise.
+ 	(covers_regno_no_parallel_p): Likewise.
+ 
+ 2017-10-26  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* wide-int-print.cc (print_hex): Loop based on extract_uhwi.
+ 	Don't print any bits outside the precision of the value.
+ 	* wide-int.cc (test_printing): Add some new tests.
+ 
+ 2017-10-26  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	* configure.ac (gcc_cv_as_ix86_xbrace_comment): Check if assembler
+ 	supports -xbrace_comment option.
+ 	* configure: Regenerate.
+ 	* config.in: Regenerate.
+ 	* config/i386/sol2.h (ASM_XBRACE_COMMENT_SPEC): Define.
+ 	(ASM_CPU_SPEC): Use it.
+ 
+ 2017-10-26  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* target.def (static_rtx_alignment): New hook.
+ 	* targhooks.h (default_static_rtx_alignment): Declare.
+ 	* targhooks.c (default_static_rtx_alignment): New function.
+ 	* doc/tm.texi.in (TARGET_STATIC_RTX_ALIGNMENT): New hook.
+ 	* doc/tm.texi: Regenerate.
+ 	* varasm.c (force_const_mem): Use targetm.static_rtx_alignment
+ 	instead of targetm.constant_alignment.  Remove call to
+ 	set_mem_attributes.
+ 	* config/cris/cris.c (TARGET_STATIC_RTX_ALIGNMENT): Redefine.
+ 	(cris_preferred_mininum_alignment): New function, split out from...
+ 	(cris_constant_alignment): ...here.
+ 	(cris_static_rtx_alignment): New function.
+ 	* config/i386/i386.c (ix86_static_rtx_alignment): New function,
+ 	split out from...
+ 	(ix86_constant_alignment): ...here.
+ 	(TARGET_STATIC_RTX_ALIGNMENT): Redefine.
+ 	* config/mmix/mmix.c (TARGET_STATIC_RTX_ALIGNMENT): Redefine.
+ 	(mmix_static_rtx_alignment): New function.
+ 	* config/spu/spu.c (spu_static_rtx_alignment): New function.
+ 	(TARGET_STATIC_RTX_ALIGNMENT): Redefine.
+ 
+ 2017-10-26  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR target/81800
+ 	* config/aarch64/aarch64.md (lrint<GPF:mode><GPI:mode>2):
+ 	Add flag_trapping_math and flag_fp_int_builtin_inexact.
+ 
+ 2017-10-25  Palmer Dabbelt  <palmer@dabbelt.com>
+ 
+ 	* config/riscv/riscv.md (ZERO_EXTEND_LOAD): Define.
+ 	* config/riscv/pic.md (local_pic_load): Rename to local_pic_load_s,
+ 	mark as a sign-extending load.
+ 	(local_pic_load_u): Define.
+ 
+ 2017-10-25  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR middle-end/82062
+ 	* fold-const.c (operand_equal_for_comparison_p): Also return true
+ 	if ARG0 is a simple variant of ARG1 with narrower precision.
+ 	(fold_ternary_loc): Always pass unstripped operands to the predicate.
+ 
+ 2017-10-25  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* i386.c (ix86_builtin_vectorization_cost): Compute scatter/gather
+ 	cost correctly.
+ 	* i386.h (processor_costs): Add gather_static, gather_per_elt,
+ 	scatter_static, scatter_per_elt.
+ 	* x86-tune-costs.h: Add new cost entries.
+ 
+ 2017-10-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-sccvn.h (vn_eliminate): Declare.
+ 	* tree-ssa-pre.c (class eliminate_dom_walker, eliminate,
+ 	class pass_fre): Move to ...
+ 	* tree-ssa-sccvn.c (class eliminate_dom_walker, vn_eliminate,
+ 	class pass_fre): ... here and adjust for statistics.
+ 
+ 2017-10-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR libstdc++/81706
+ 	* attribs.c (attribute_value_equal): Use omp_declare_simd_clauses_equal
+ 	for comparison of OMP_CLAUSEs regardless of flag_openmp{,_simd}.
+ 	(duplicate_one_attribute, copy_attributes_to_builtin): New functions.
+ 	* attribs.h (duplicate_one_attribute, copy_attributes_to_builtin): New
+ 	declarations.
+ 
+ 2017-10-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-pre.c (need_eh_cleanup, need_ab_cleanup, el_to_remove,
+ 	el_to_fixup, el_todo, el_avail, el_avail_stack, eliminate_avail,
+ 	eliminate_push_avail, eliminate_insert): Move inside...
+ 	(class eliminate_dom_walker): ... this class in preparation
+ 	of move.
+ 	(fini_eliminate): Remove by merging with ...
+ 	(eliminate): ... this function.  Adjust for class changes.
+ 	(pass_pre::execute): Remove fini_eliminate call.
+ 	(pass_fre::execute): Likewise.
+ 
+ 2017-10-24  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/82460
+ 	* config/i386/sse.md (UNSPEC_VPERMI2, UNSPEC_VPERMI2_MASK): Remove.
+ 	(VPERMI2, VPERMI2I): New mode iterators.
+ 	(<avx512>_vpermi2var<mode>3_maskz): Remove 3 define_expand patterns.
+ 	(<avx512>_vpermi2var<mode>3<sd_maskz_name>): Remove 3 define_insn
+ 	patterns.
+ 	(<avx512>_vpermi2var<mode>3_mask): New define_expand using VPERMI2
+ 	mode iterator.  Remove 3 old define_insn patterns.
+ 	(*<avx512>_vpermi2var<mode>3_mask): 2 new define_insn patterns.
+ 	(<avx512>_vpermt2var<mode>3_maskz): Adjust 1 define_expand to use
+ 	VPERMI2 mode iterator, remove the other two expanders.
+ 	(<avx512>_vpermt2var<mode>3<sd_maskz_name>): Adjust 1 define_insn
+ 	to use VPERMI2 mode iterator, add another alternative for vpermi2*
+ 	instructions, remove the other two patterns.
+ 	(<avx512>_vpermt2var<mode>3_mask): Adjust 1 define_insn to use VPERMI2
+ 	mode iterator, remove the other two patterns.
+ 	* config/i386/i386.c (ix86_expand_vec_perm_vpermi2): Renamed to ...
+ 	(ix86_expand_vec_perm_vpermt2): ... this.  Swap mask and op0
+ 	arguments, use gen_*vpermt2* expanders instead of gen_*vpermi2*
+ 	and adjust argument order accordingly.
+ 	(ix86_expand_vec_perm): Adjust caller.
+ 	(expand_vec_perm_1): Likewise.
+ 	(expand_vec_perm_vpermi2_vpshub2): Rename to ...
+ 	(expand_vec_perm_vpermt2_vpshub2): ... this.
+ 	(ix86_expand_vec_perm_const_1): Adjust caller.
+ 	(ix86_vectorize_vec_perm_const_ok): Adjust comments.
+ 
+ 	PR target/82370
+ 	* config/i386/sse.md (VIMAX_AVX2): Remove V4TImode.
+ 	(VIMAX_AVX2_AVX512BW, VIMAX_AVX512VL): New mode iterators.
+ 	(vec_shl_<mode>): Remove unused expander.
+ 	(avx512bw_<shift_insn><mode>3): New define_insn.
+ 	(<sse2_avx2>_ashl<mode>3, <sse2_avx2>_lshr<mode>3): Replaced by ...
+ 	(<sse2_avx2>_<shift_insn><mode>3): ... this.  New define_insn.
+ 
+ 2017-10-24  Paolo Carlini  <paolo.carlini@oracle.com>
+ 
+ 	PR c++/82466
+ 	* doc/invoke.texi ([Wbuiltin-declaration-mismatch]): Extend
+ 	description.
+ 
+ 2017-10-24  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	PR rtl-optimization/82396
+ 	* gcc/haifa-sched.c (ready_sort_real): Remove qsort workaround.
+ 	(autopref_multipass_init): Simplify initialization.
+ 	(autopref_rank_data): Simplify sort order.
+ 	* gcc/sched-int.h (autopref_multipass_data_): Remove
+ 	multi_mem_insn_p, min_offset and max_offset.
+ 
+ 2017-10-24  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	PR middle-end/60580
+ 	* config/aarch64/aarch64.c (aarch64_frame_pointer_required)
+ 	Check special value of flag_omit_frame_pointer.
+ 	(aarch64_can_eliminate): Likewise.
+ 	(aarch64_override_options_after_change_1): Simplify handling of
+ 	-fomit-frame-pointer and -fomit-leaf-frame-pointer.
+ 
+ 2017-10-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/82697
+ 	* tree-ssa-phiopt.c (cond_store_replacement): Use alias-set
+ 	zero for conditional load and unconditional store.
+ 
+ 2017-10-24  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	* doc/install.texi: Document bootstrap-cet.
+ 
+ 2017-10-24  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/82659
+ 	* config/i386/i386.c (rest_of_insert_endbranch): Don't insert
+ 	ENDBR instruction at function entrance if function is only
+ 	called directly.
+ 
+ 2017-10-24  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/82628
+ 	* config/i386/i386.md (addcarry<mode>, subborrow<mode>): Change
+ 	patterns to better describe from which operation the CF is computed.
+ 	(addcarry<mode>_0, subborrow<mode>_0): New patterns.
+ 	* config/i386/i386.c (ix86_expand_builtin) <case handlecarry>: Pass
+ 	one LTU with [DT]Imode and another one with [SD]Imode.  If arg0
+ 	is 0, use _0 suffixed expanders instead of emitting a comparison
+ 	before it.
+ 
+ 2017-10-06  Sergey Shalnov  <Sergey.Shalnov@intel.com>
+ 
+ 	* config/i386/i386.md(*movsf_internal, *movdf_internal):
+ 	Avoid 512-bit AVX modes for TARGET_PREFER_AVX256.
+ 
+ 2017-10-24  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR middle-end/82569
+ 	* tree-outof-ssa.h (always_initialized_rtx_for_ssa_name_p): Delete.
+ 	* expr.c (expand_expr_real_1) <expand_decl_rtl>: Revert latest change.
+ 	* loop-iv.c (iv_get_reaching_def): Likewise.
+ 	* cfgexpand.c (expand_one_ssa_partition): Initialize the RTX if the
+ 	variable is promoted and the partition contains undefined values.
+ 
+ 2017-10-23  Sandra Loosemore  <sandra@codesourcery.com>
+ 
+ 	* config/nios2/nios2.c (nios2_rtx_costs): Make costs better
+ 	reflect reality.
+ 	(nios2_address_cost): Define.
+ 	(nios2_legitimize_address): Recognize (exp + constant) directly.
+ 	(TARGET_ADDRESS_COST): Define.
+ 
+ 2017-10-23  Sandra Loosemore  <sandra@codesourcery.com>
+ 
+ 	* config/nios2/nios2-protos.h (nios2_large_constant_p): Declare.
+ 	(nios2_symbolic_memory_operand_p): Declare.
+ 	(nios2_split_large_constant): Declare.
+ 	(nios2_split_symbolic_memory_operand): Declare.
+ 	* config/nios2/nios2.c: Adjust includes.
+ 	(nios2_symbolic_constant_allowed): New.
+ 	(nios2_symbolic_constant_p): New.
+ 	(nios2_plus_symbolic_constant_p): New.
+ 	(nios2_valid_addr_expr_p): Recognize addresses involving
+ 	symbolic constants.
+ 	(nios2_legitimate_address_p): Likewise, also LO_SUM.
+ 	(nios2_symbolic_memory_operand_p): New.
+ 	(nios2_large_constant_p): New.
+ 	(nios2_split_large_constant): New.
+ 	(nios2_split_plus_large_constant): New.
+ 	(nios2_split_symbolic_memory_operand): New.
+ 	(nios2_legitimize_address): Code refactoring.  Handle addresses
+ 	involving symbolic constants.
+ 	(nios2_emit_move_sequence): Likewise.
+ 	(nios2_print_operand): Improve error output.
+ 	(nios2_print_operand_address): Handle LO_SUM.
+ 	(nios2_cdx_narrow_form_p): Likewise.
+ 	* config/nios2/nios2.md (movqi_internal): Add splitter for memory
+ 	operands involving symbolic constants.
+ 	(movhi_internal, movsi_internal): Likewise.
+ 	(zero_extendhisi2, zero_extendqi<mode>2): Likewise.
+ 	(extendhisi2, extendqi<mode>2): Likewise.
+ 
+ 2017-10-23  Sandra Loosemore  <sandra@codesourcery.com>
+ 
+ 	* tree-pass.h (PROP_rtl_split_insns): Define.
+ 	* recog.c (pass_data_split_all_insns): Provide PROP_rtl_split_insns.
+ 
+ 2017-10-23  Sandra Loosemore  <sandra@codesourcery.com>
+ 
+ 	* config/nios2/nios2.c (TARGET_LRA_P): Don't override.
+ 
+ 2017-10-23  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/82630
+ 	* target.def (const_not_ok_for_debug_p): Default to
+ 	default_const_not_ok_for_debug_p instead of hook_bool_rtx_false.
+ 	* targhooks.h (default_const_not_ok_for_debug_p): New declaration.
+ 	* targhooks.c (default_const_not_ok_for_debug_p): New function.
+ 	* dwarf2out.c (const_ok_for_output_1): Only reject UNSPECs for
+ 	which targetm.const_not_ok_for_debug_p returned true.
+ 	* config/arm/arm.c (arm_const_not_ok_for_debug_p): Return true
+ 	for UNSPECs.
+ 	* config/powerpcspe/powerpcspe.c (rs6000_const_not_ok_for_debug_p):
+ 	Likewise.
+ 	* config/rs6000/rs6000.c (rs6000_const_not_ok_for_debug_p): Likewise.
+ 	* config/i386/i386.c (ix86_delegitimize_address_1): Don't delegitimize
+ 	UNSPEC_GOTOFF with addend into addend - _GLOBAL_OFFSET_TABLE_ + symbol
+ 	if !base_term_p.
+ 	(ix86_const_not_ok_for_debug_p): New function.
+ 	(i386_asm_output_addr_const_extra): Handle UNSPEC_GOTOFF.
+ 	(TARGET_CONST_NOT_OK_FOR_DEBUG_P): Redefine.
+ 
+ 2017-10-23  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR bootstrap/82610
+ 	* system.h: Conditionally include "unique-ptr.h" if
+ 	INCLUDE_UNIQUE_PTR is defined.
+ 	* unique-ptr-tests.cc: Remove include of "unique-ptr.h" in favor
+ 	of defining INCLUDE_UNIQUE_PTR before including "system.h".
+ 
+ 2017-10-23  Sebastian Perta  <sebastian.perta@renesas.com>
+ 
+ 	* config/rl78/rl78.md: New define_expand "subdi3".
+ 
+ 2017-10-23  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/82673
+ 	* config/i386/i386.c (ix86_finalize_stack_frame_flags): Skip
+ 	DF_REF_INSN if DF_REF_INSN_INFO is false.
+ 
+ 2017-10-23  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* i386.c (dimode_scalar_chain::compute_convert_gain): Use
+ 	xmm_move instead of sse_move.
+ 	(sse_store_index): New function.
+ 	(ix86_register_move_cost): Be more sensible about mismatch stall;
+ 	model AVX moves correctly; make difference between sse->integer and
+ 	integer->sse.
+ 	(ix86_builtin_vectorization_cost): Model correctly aligned and unaligned
+ 	moves; make difference between SSE and AVX.
+ 	* i386.h (processor_costs): Remove sse_move; add xmm_move, ymm_move
+ 	and zmm_move. Increase size of sse load and store tables;
+ 	add unaligned load and store tables; add ssemmx_to_integer.
+ 	* x86-tune-costs.h: Update all entries according to real
+ 	move latencies from Agner Fog's manual and chip documentation.
+ 
+ 2017-10-23  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/82628
+ 	* config/i386/predicates.md (x86_64_dwzext_immediate_operand): New.
+ 	* config/i386/constraints.md (Wf): New constraint.
+ 	* config/i386/i386.md (UNSPEC_SBB): New unspec.
+ 	(cmp<dwi>_doubleword): Removed.
+ 	(sub<mode>3_carry_ccc, *sub<mode>3_carry_ccc_1): New patterns.
+ 	(sub<mode>3_carry_ccgz): Use unspec instead of compare.
+ 	* config/i386/i386.c (ix86_expand_branch) <case E_TImode>: Don't
+ 	expand with cmp<dwi>_doubleword.  For LTU and GEU use
+ 	sub<mode>3_carry_ccc instead of sub<mode>3_carry_ccgz and use CCCmode.
+ 
+ 	* common.opt (gcolumn-info): Enable by default.
+ 	* doc/invoke.texi (gcolumn-info): Document new default.
+ 
+ 2017-10-23  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/82672
+ 	* graphite-isl-ast-to-gimple.c (graphite_copy_stmts_from_block):
+ 	Fold the stmt if we propagated into it.
+ 
+ 2017-10-23  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-pre.c (bitmap_remove_from_set): Rename to...
+ 	(bitmap_remove_expr_from_set): ... this.  All callers call this
+ 	for non-constant values.
+ 	(bitmap_set_subtract): Rename to...
+ 	(bitmap_set_subtract_expressions): ... this.  Adjust and
+ 	optimize.
+ 	(bitmap_set_contains_value): Remove superfluous check.
+ 	(bitmap_set_replace_value): Inline into single caller ...
+ 	(bitmap_value_replace_in_set): ... here and simplify.
+ 	(dependent_clean): Merge into ...
+ 	(clean): ... this using an overload.  Adjust.
+ 	(prune_clobbered_mems): Adjust.
+ 	(compute_antic_aux): Likewise.
+ 	(compute_partial_antic_aux): Likewise.
+ 
+ 2017-10-23  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/82129
+ 	Revert
+ 	2017-08-01  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/81181
+ 	* tree-ssa-pre.c (compute_antic_aux): Defer clean() to ...
+ 	(compute_antic): ... end of iteration here.
+ 
+ 2017-10-23  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* target.def (starting_frame_offset): New hook.
+ 	* doc/tm.texi (STARTING_FRAME_OFFSET): Remove in favor of...
+ 	(TARGET_STARTING_FRAME_OFFSET): ...this new hook.
+ 	* doc/tm.texi.in: Regenerate.
+ 	* hooks.h (hook_hwi_void_0): Declare.
+ 	* hooks.c (hook_hwi_void_0): New function.
+ 	* doc/rtl.texi: Refer to TARGET_STARTING_FRAME_OFFSET instead of
+ 	STARTING_FRAME_OFFSET.
+ 	* builtins.c (expand_builtin_setjmp_receiver): Likewise.
+ 	* reload1.c (reload): Likewise.
+ 	* cfgexpand.c (expand_used_vars): Use targetm.starting_frame_offset
+ 	instead of STARTING_FRAME_OFFSET.
+ 	* function.c (try_fit_stack_local): Likewise.
+ 	(assign_stack_local_1): Likewise
+ 	(instantiate_virtual_regs): Likewise.
+ 	* rtlanal.c (rtx_addr_can_trap_p_1): Likewise.
+ 	* config/avr/avr.md (nonlocal_goto_receiver): Likewise.
+ 	* config/aarch64/aarch64.h (STARTING_FRAME_OFFSET): Delete.
+ 	* config/alpha/alpha.h (STARTING_FRAME_OFFSET): Likewise.
+ 	* config/arc/arc.h (STARTING_FRAME_OFFSET): Likewise.
+ 	* config/arm/arm.h (STARTING_FRAME_OFFSET): Likewise.
+ 	* config/bfin/bfin.h (STARTING_FRAME_OFFSET): Likewise.
+ 	* config/c6x/c6x.h (STARTING_FRAME_OFFSET): Likewise.
+ 	* config/cr16/cr16.h (STARTING_FRAME_OFFSET): Likewise.
+ 	* config/cris/cris.h (STARTING_FRAME_OFFSET): Likewise.
+ 	* config/fr30/fr30.h (STARTING_FRAME_OFFSET): Likewise.
+ 	* config/frv/frv.h (STARTING_FRAME_OFFSET): Likewise.
+ 	* config/ft32/ft32.h (STARTING_FRAME_OFFSET): Likewise.
+ 	* config/h8300/h8300.h (STARTING_FRAME_OFFSET): Likewise.
+ 	* config/i386/i386.h (STARTING_FRAME_OFFSET): Likewise.
+ 	* config/ia64/ia64.h (STARTING_FRAME_OFFSET): Likewise.
+ 	* config/m32c/m32c.h (STARTING_FRAME_OFFSET): Likewise.
+ 	* config/m68k/m68k.h (STARTING_FRAME_OFFSET): Likewise.
+ 	* config/mcore/mcore.h (STARTING_FRAME_OFFSET): Likewise.
+ 	* config/mn10300/mn10300.h (STARTING_FRAME_OFFSET): Likewise.
+ 	* config/moxie/moxie.h (STARTING_FRAME_OFFSET): Likewise.
+ 	* config/msp430/msp430.h (STARTING_FRAME_OFFSET): Likewise.
+ 	* config/nds32/nds32.h (STARTING_FRAME_OFFSET): Likewise.
+ 	* config/nios2/nios2.h (STARTING_FRAME_OFFSET): Likewise.
+ 	* config/nvptx/nvptx.h (STARTING_FRAME_OFFSET): Likewise.
+ 	* config/pdp11/pdp11.h (STARTING_FRAME_OFFSET): Likewise.
+ 	* config/riscv/riscv.h (STARTING_FRAME_OFFSET): Likewise.
+ 	* config/rl78/rl78.h (STARTING_FRAME_OFFSET): Likewise.
+ 	* config/rx/rx.h (STARTING_FRAME_OFFSET): Likewise.
+ 	* config/s390/s390.h (STARTING_FRAME_OFFSET): Likewise.
+ 	* config/sh/sh.h (STARTING_FRAME_OFFSET): Likewise.
+ 	* config/sparc/sparc.c (sparc_compute_frame_size): Likewise.
+ 	* config/sparc/sparc.h (STARTING_FRAME_OFFSET): Likewise.
+ 	* config/spu/spu.h (STARTING_FRAME_OFFSET): Likewise.
+ 	* config/stormy16/stormy16.h (STARTING_FRAME_OFFSET): Likewise.
+ 	* config/tilegx/tilegx.h (STARTING_FRAME_OFFSET): Likewise.
+ 	* config/tilepro/tilepro.h (STARTING_FRAME_OFFSET): Likewise.
+ 	* config/v850/v850.h (STARTING_FRAME_OFFSET): Likewise.
+ 	* config/visium/visium.h (STARTING_FRAME_OFFSET): Likewise.
+ 	* config/avr/avr.h (STARTING_FRAME_OFFSET): Likewise.
+ 	* config/avr/avr-protos.h (avr_starting_frame_offset): Likewise.
+ 	* config/avr/avr.c (avr_starting_frame_offset): Make static and
+ 	return a HOST_WIDE_INT.
+ 	(avr_builtin_setjmp_frame_value): Use it instead of
+ 	STARTING_FRAME_OFFSET.
+ 	(TARGET_STARTING_FRAME_OFFSET): Redefine.
+ 	* config/epiphany/epiphany.h (STARTING_FRAME_OFFSET): Delete.
+ 	* config/epiphany/epiphany.c (epiphany_starting_frame_offset):
+ 	New function.
+ 	(TARGET_STARTING_FRAME_OFFSET): Redefine.
+ 	* config/iq2000/iq2000.h (STARTING_FRAME_OFFSET): Delete.
+ 	* config/iq2000/iq2000.c (iq2000_starting_frame_offset): New function.
+ 	(TARGET_CONSTANT_ALIGNMENT): Redefine.
+ 	* config/lm32/lm32.h (STARTING_FRAME_OFFSET): Delete.
+ 	* config/lm32/lm32.c (lm32_starting_frame_offset): New function.
+ 	(TARGET_STARTING_FRAME_OFFSET): Redefine.
+ 	* config/m32r/m32r.h (STARTING_FRAME_OFFSET): Delete.
+ 	* config/m32r/m32r.c (m32r_starting_frame_offset): New function.
+ 	(TARGET_STARTING_FRAME_OFFSET): Redefine.
+ 	* config/microblaze/microblaze.h (STARTING_FRAME_OFFSET): Delete.
+ 	* config/microblaze/microblaze.c (microblaze_starting_frame_offset):
+ 	New function.
+ 	(TARGET_STARTING_FRAME_OFFSET): Redefine.
+ 	* config/mips/mips.h (STARTING_FRAME_OFFSET): Delete.
+ 	* config/mips/mips.c (mips_compute_frame_info): Refer to
+ 	TARGET_STARTING_FRAME_OFFSET instead of STARTING_FRAME_OFFSET.
+ 	(mips_starting_frame_offset): New function.
+ 	(TARGET_STARTING_FRAME_OFFSET): Redefine.
+ 	* config/mmix/mmix.h (STARTING_FRAME_OFFSET): Delete.
+ 	* config/mmix/mmix-protos.h (mmix_starting_frame_offset): Delete.
+ 	* config/mmix/mmix.c (mmix_starting_frame_offset): Make static
+ 	and return a HOST_WIDE_INT.
+ 	(TARGET_STARTING_FRAME_OFFSET): Redefine.
+ 	(mmix_initial_elimination_offset): Refer to
+ 	TARGET_STARTING_FRAME_OFFSET instead of STARTING_FRAME_OFFSET.
+ 	* config/pa/pa.h (STARTING_FRAME_OFFSET): Delete.
+ 	* config/pa/pa.c (pa_starting_frame_offset): New function.
+ 	(pa_compute_frame_size): Use it instead of STARTING_FRAME_OFFSET.
+ 	(pa_expand_prologue): Likewise.
+ 	(TARGET_STARTING_FRAME_OFFSET): Redefine.
+ 	* config/powerpcspe/aix.h (STARTING_FRAME_OFFSET): Split out
+ 	!FRAME_GROWS_DOWNWARD handling to...
+ 	(RS6000_STARTING_FRAME_OFFSET): ...this new macro.
+ 	* config/powerpcspe/darwin.h (STARTING_FRAME_OFFSET): Split out
+ 	!FRAME_GROWS_DOWNWARD handling to...
+ 	(RS6000_STARTING_FRAME_OFFSET): ...this new macro.
+ 	* config/powerpcspe/powerpcspe.h (STARTING_FRAME_OFFSET): Split out
+ 	!FRAME_GROWS_DOWNWARD handling to...
+ 	(RS6000_STARTING_FRAME_OFFSET): ...this new macro.
+ 	* config/powerpcspe/powerpcspe.c (TARGET_STARTING_FRAME_OFFSET):
+ 	Redefine.
+ 	(rs6000_starting_frame_offset): New function.
+ 	* config/rs6000/aix.h (STARTING_FRAME_OFFSET): Split out
+ 	!FRAME_GROWS_DOWNWARD handling to...
+ 	(RS6000_STARTING_FRAME_OFFSET): ...this new macro.
+ 	* config/rs6000/darwin.h (STARTING_FRAME_OFFSET): Split out
+ 	!FRAME_GROWS_DOWNWARD handling to...
+ 	(RS6000_STARTING_FRAME_OFFSET): ...this new macro.
+ 	* config/rs6000/rs6000.h (STARTING_FRAME_OFFSET): Split out
+ 	!FRAME_GROWS_DOWNWARD handling to...
+ 	(RS6000_STARTING_FRAME_OFFSET): ...this new macro.
+ 	* config/rs6000/rs6000.c (TARGET_STARTING_FRAME_OFFSET): Refine.
+ 	(rs6000_starting_frame_offset): New function.
+ 	* config/vax/elf.h (STARTING_FRAME_OFFSET): Delete.
+ 	* config/vax/vax.h (STARTING_FRAME_OFFSET): Delete.
+ 	* config/vax/vax.c (vax_starting_frame_offset): New function.
+ 	(vax_expand_prologue): Use it instead of STARTING_FRAME_OFFSET.
+ 	(TARGET_STARTING_FRAME_OFFSET): Redefine.
+ 	* config/xtensa/xtensa.h (STARTING_FRAME_OFFSET): Delete.
+ 	* config/xtensa/xtensa.c (xtensa_starting_frame_offset): New function.
+ 	(TARGET_STARTING_FRAME_OFFSET): Redefine.
+ 	* system.h (STARTING_FRAME_OFFSET): Poison.
+ 
+ 2017-10-23  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* tree-vect-loop.c (vect_create_epilog_for_reduction): Use
+ 	SCALAR_TYPE_MODE instead of TYPE_MODE.
+ 
+ 2017-10-23  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* dwarf2out.c (loc_list_from_tree_1): Use SCALAR_INT_TYPE_MODE
+ 
+ 2017-10-23  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* expmed.c (expand_shift_1): Use scalar_mode for scalar_mode.
+ 
+ 2017-10-23  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/82129
+ 	* tree-ssa-pre.c (bitmap_set_and): Remove.
+ 	(compute_antic_aux): Compute ANTIC_OUT intersection in a way
+ 	canonicalizing expressions in the set to those with lowest
+ 	ID rather than taking that from the first edge.
+ 
+ 2017-10-23  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* combine.c (rtx_equal_for_field_assignment_p): Use
+ 	byte_lowpart_offset.
+ 
+ 2017-10-22  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* internal-fn.c (expand_direct_optab_fn): Don't assign directly
+ 	to a SUBREG_PROMOTED_VAR.
+ 
+ 2017-10-22  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* cfgexpand.c (expand_debug_expr): Use GET_MODE_UNIT_PRECISION.
+ 	(expand_debug_source_expr): Likewise.
+ 	* combine.c (combine_simplify_rtx): Likewise.
+ 	* cse.c (fold_rtx): Likewise.
+ 	* optabs.c (expand_float): Likewise.
+ 	* simplify-rtx.c (simplify_unary_operation_1): Likewise.
+ 	(simplify_binary_operation_1): Likewise.
+ 
+ 2017-10-22  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* combine.c (simplify_comparison): Use HWI_COMPUTABLE_MODE_P.
+ 	(record_promoted_value): Likewise.
+ 	* expr.c (expand_expr_real_2): Likewise.
+ 	* ree.c (update_reg_equal_equiv_notes): Likewise.
+ 	(combine_set_extension): Likewise.
+ 	* rtlanal.c (low_bitmask_len): Likewise.
+ 	* simplify-rtx.c (neg_const_int): Likewise.
+ 	(simplify_binary_operation_1): Likewise.
+ 
+ 2017-10-22  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* lra-spills.c (assign_mem_slot): Use subreg_size_lowpart_offset.
+ 	* regcprop.c (maybe_mode_change): Likewise.
+ 	* reload1.c (alter_reg): Likewise.
+ 
+ 2017-10-22  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* inchash.h (inchash::hash::add_wide_int): New function.
+ 	* lto-streamer-out.c (hash_tree): Use it.
+ 
+ 2017-10-22  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* inchash.h (inchash::hash::add_wide_int): Rename to...
+ 	(inchash::hash::add_hwi): ...this.
+ 	* ipa-devirt.c (hash_odr_vtable): Update accordingly.
+ 	(polymorphic_call_target_hasher::hash): Likewise.
+ 	* ipa-icf.c (sem_function::get_hash, sem_function::init): Likewise.
+ 	(sem_item::add_expr, sem_item::add_type, sem_variable::get_hash)
+ 	(sem_item_optimizer::update_hash_by_addr_refs): Likewise.
+ 	* lto-streamer-out.c (hash_tree): Likewise.
+ 	* optc-save-gen.awk: Likewise.
+ 	* tree.c (add_expr): Likewise.
+ 
+ 2017-10-22  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/52451
+ 	* config/i386/i386.c (ix86_fp_compare_mode): Return CCFPmode
+ 	for ordered inequality comparisons even with TARGET_IEEE_FP.
+ 
+ 2017-10-22  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/82628
+ 	* config/i386/i386.md (cmp<dwi>_doubleword): New pattern.
+ 	* config/i386/i386.c (ix86_expand_branch) <case E_TImode>:
+ 	Expand with cmp<dwi>_doubleword.
+ 
+ 2017-10-21  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
+ 
+ 	* extend.texi: Add x86 specific to 'nocf_check' attribute.
+ 	List CET intrinsics.
+ 	* invoke.texi: Add -mcet, -mibt, -mshstk options.  Add x86
+ 	specific to -fcf-protection option.
+ 
+ 2017-10-21  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
+ 
+ 	* common/config/i386/i386-common.c (OPTION_MASK_ISA_IBT_SET): New.
+ 	(OPTION_MASK_ISA_SHSTK_SET): Likewise.
+ 	(OPTION_MASK_ISA_IBT_UNSET): Likewise.
+ 	(OPTION_MASK_ISA_SHSTK_UNSET): Likewise.
+ 	(ix86_handle_option): Add -mibt, -mshstk, -mcet handling.
+ 	* config.gcc (extra_headers): Add cetintrin.h for x86 targets.
+ 	(extra_objs): Add cet.o for Linux/x86 targets.
+ 	(tmake_file): Add i386/t-cet for Linux/x86 targets.
+ 	* config/i386/cet.c: New file.
+ 	* config/i386/cetintrin.h: Likewise.
+ 	* config/i386/t-cet: Likewise.
+ 	* config/i386/cpuid.h (bit_SHSTK): New.
+ 	(bit_IBT): Likewise.
+ 	* config/i386/driver-i386.c (host_detect_local_cpu): Detect and
+ 	pass IBT and SHSTK bits.
+ 	* config/i386/i386-builtin-types.def
+ 	(VOID_FTYPE_UNSIGNED_PVOID): New.
+ 	(VOID_FTYPE_UINT64_PVOID): Likewise.
+ 	* config/i386/i386-builtin.def: Add CET intrinsics.
+ 	* config/i386/i386-c.c (ix86_target_macros_internal): Add
+ 	OPTION_MASK_ISA_IBT, OPTION_MASK_ISA_SHSTK handling.
+ 	* config/i386/i386-passes.def: Add pass_insert_endbranch pass.
+ 	* config/i386/i386-protos.h (make_pass_insert_endbranch): New
+ 	prototype.
+ 	* config/i386/i386.c (rest_of_insert_endbranch): New.
+ 	(pass_data_insert_endbranch): Likewise.
+ 	(pass_insert_endbranch): Likewise.
+ 	(make_pass_insert_endbranch): Likewise.
+ 	(ix86_notrack_prefixed_insn_p): Likewise.
+ 	(ix86_target_string): Add -mibt, -mshstk flags.
+ 	(ix86_option_override_internal): Add flag_cf_protection
+ 	processing.
+ 	(ix86_valid_target_attribute_inner_p): Set OPT_mibt, OPT_mshstk.
+ 	(ix86_print_operand): Add 'notrack' prefix output.
+ 	(ix86_init_mmx_sse_builtins): Add CET intrinsics.
+ 	(ix86_expand_builtin): Expand CET intrinsics.
+ 	(x86_output_mi_thunk): Add 'endbranch' instruction.
+ 	* config/i386/i386.h (TARGET_IBT): New.
+ 	(TARGET_IBT_P): Likewise.
+ 	(TARGET_SHSTK): Likewise.
+ 	(TARGET_SHSTK_P): Likewise.
+ 	* config/i386/i386.md (unspecv): Add UNSPECV_NOP_RDSSP,
+ 	UNSPECV_INCSSP, UNSPECV_SAVEPREVSSP, UNSPECV_RSTORSSP,
+ 	UNSPECV_WRSS, UNSPECV_WRUSS, UNSPECV_SETSSBSY, UNSPECV_CLRSSBSY.
+ 	(builtin_setjmp_setup): New pattern.
+ 	(builtin_longjmp): Likewise.
+ 	(rdssp<mode>): Likewise.
+ 	(incssp<mode>): Likewise.
+ 	(saveprevssp): Likewise.
+ 	(rstorssp): Likewise.
+ 	(wrss<mode>): Likewise.
+ 	(wruss<mode>): Likewise.
+ 	(setssbsy): Likewise.
+ 	(clrssbsy): Likewise.
+ 	(nop_endbr): Likewise.
+ 	* config/i386/i386.opt: Add -mcet, -mibt, -mshstk and -mcet-switch
+ 	options.
+ 	* config/i386/immintrin.h: Include <cetintrin.h>.
+ 	* config/i386/linux-common.h
+ 	(file_end_indicate_exec_stack_and_cet): New prototype.
+ 	(TARGET_ASM_FILE_END): New.
+ 
+ 2017-10-20  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* i386.c (ix86_builtin_vectorization_cost): Use existing rtx_cost
+ 	latencies instead of having separate table; make difference between
+ 	integer and float costs.
+ 	* i386.h (processor_costs): Remove scalar_stmt_cost,
+ 	scalar_load_cost, scalar_store_cost, vec_stmt_cost, vec_to_scalar_cost,
+ 	scalar_to_vec_cost, vec_align_load_cost, vec_unalign_load_cost,
+ 	vec_store_cost.
+ 	* x86-tune-costs.h: Remove entries which has been removed in
+ 	procesor_costs from all tables; make cond_taken_branch_cost
+ 	and cond_not_taken_branch_cost COST_N_INSNS based.
+ 
+ 2017-10-20  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* x86-tune-costs.h (intel_cost, generic_cost): Fix move costs.
+ 
+ 2017-10-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* config/i386/i386.md (isa): Remove fma_avx512f.
+ 	* config/i386/sse.md (<avx512>_fmadd_<mode>_mask<round_name>,
+ 	<avx512>_fmadd_<mode>_mask3<round_name>,
+ 	<avx512>_fmsub_<mode>_mask<round_name>,
+ 	<avx512>_fmsub_<mode>_mask3<round_name>,
+ 	<avx512>_fnmadd_<mode>_mask<round_name>,
+ 	<avx512>_fnmadd_<mode>_mask3<round_name>,
+ 	<avx512>_fnmsub_<mode>_mask<round_name>,
+ 	<avx512>_fnmsub_<mode>_mask3<round_name>,
+ 	<avx512>_fmaddsub_<mode>_mask<round_name>,
+ 	<avx512>_fmaddsub_<mode>_mask3<round_name>,
+ 	<avx512>_fmsubadd_<mode>_mask<round_name>,
+ 	<avx512>_fmsubadd_<mode>_mask3<round_name>): Remove isa attribute.
+ 	(*vec_widen_umult_even_v16si<mask_name>,
+ 	*vec_widen_smult_even_v16si<mask_name>): Likewise.
+ 	(<mask_codefor>avx512bw_dbpsadbw<mode><mask_name>): Likewise.
+ 
+ 2017-10-20  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
+ 
+ 	* extend.texi: Add 'nocf_check' documentation.
+ 	* gimple.texi: Add second parameter to
+ 	gimple_build_call_from_tree.
+ 	* invoke.texi: Add -fcf-protection documentation.
+ 	* rtl.texi: Add REG_CALL_NOTRACK documenation.
+ 
+ 2017-10-20  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/82473
+ 	* tree-vect-loop.c (vectorizable_reduction): Properly get at
+ 	the largest input type.
+ 
+ 2017-10-20  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
+ 
+ 	* c-attribs.c (handle_nocf_check_attribute): New function.
+ 	(c_common_attribute_table): Add 'nocf_check' handling.
+ 	* gimple-parser.c: Add second argument NULL to
+ 	gimple_build_call_from_tree.
+ 	* attrib.c (comp_type_attributes): Check nocf_check attribute.
+ 	* cfgexpand.c (expand_call_stmt): Set REG_CALL_NOCF_CHECK for
+ 	call insn.
+ 	* combine.c (distribute_notes): Add REG_CALL_NOCF_CHECK handling.
+ 	* common.opt: Add fcf-protection flag.
+ 	* emit-rtl.c (try_split): Add REG_CALL_NOCF_CHECK handling.
+ 	* flag-types.h: Add enum cf_protection_level.
+ 	* gimple.c (gimple_build_call_from_tree): Add second parameter.
+ 	Add 'nocf_check' attribute propagation to gimple call.
+ 	* gimple.h (gf_mask): Add GF_CALL_NOCF_CHECK.
+ 	(gimple_build_call_from_tree): Update prototype.
+ 	(gimple_call_nocf_check_p): New function.
+ 	(gimple_call_set_nocf_check): Likewise.
+ 	* gimplify.c: Add second argument to gimple_build_call_from_tree.
+ 	* ipa-icf.c: Add nocf_check attribute in statement hash.
+ 	* recog.c (peep2_attempt): Add REG_CALL_NOCF_CHECK handling.
+ 	* reg-notes.def: Add REG_NOTE (CALL_NOCF_CHECK).
+ 	* toplev.c (process_options): Add flag_cf_protection handling.
+ 
+ 2017-10-19  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* x86-tune-costs.h (core_cost): Fix div, move and sqrt latencies.
+ 
+ 2017-10-20  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/82603
+ 	* tree-if-conv.c (predicate_mem_writes): Make sure to only
+ 	remove false predicated stores.
+ 
+ 2017-10-20  Richard Biener  <rguenther@suse.de>
+ 
+ 	* graphite-isl-ast-to-gimple.c
+ 	(translate_isl_ast_to_gimple::graphite_copy_stmts_from_block):
+ 	Remove return value and simplify, dump copied stmt after lhs
+ 	adjustment.
+ 	(translate_isl_ast_to_gimple::translate_isl_ast_node_user):
+ 	Reduce dump verbosity.
+ 	(gsi_insert_earliest): Likewise.
+ 	(translate_isl_ast_to_gimple::copy_bb_and_scalar_dependences): Adjust.
+ 	* graphite.c (print_global_statistics): Adjust dumping.
+ 	(print_graphite_scop_statistics): Likewise.
+ 	(print_graphite_statistics): Do not dump loops here.
+ 	(graphite_transform_loops): But here.
+ 
+ 2017-10-20  Nicolas Roche  <roche@adacore.com>
+ 
+ 	* configure.ac (ACX_PROG_GNAT): Append "libgnat" to include search dir.
+ 	* configure: Regenerate.
+ 
+ 2017-10-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/82158
+ 	* tree-cfg.c (pass_warn_function_return::execute): In noreturn
+ 	functions when optimizing replace GIMPLE_RETURN stmts with
+ 	calls to __builtin_unreachable ().
+ 
+ 	PR sanitizer/82595
+ 	* config/gnu-user.h (LIBTSAN_EARLY_SPEC): Add libtsan_preinit.o
+ 	for -fsanitize=thread link of executables.
+ 	(LIBLSAN_EARLY_SPEC): Add liblsan_preinit.o for -fsanitize=leak
+ 	link of executables.
+ 
+ 	PR target/82370
+ 	* config/i386/sse.md (VI248_AVX2, VI248_AVX512BW, VI248_AVX512BW_2):
+ 	New mode iterators.
+ 	(<shift_insn><mode>3<mask_name>): Change the last of the 3
+ 	define_insns for logical vector shifts to use VI248_AVX512BW
+ 	iterator instead of VI48_AVX512, remove <mask_mode512bit_condition>
+ 	condition, useless isa and prefix attributes.  Change the first
+ 	2 of these define_insns to ...
+ 	(<mask_codefor><shift_insn><mode>3<mask_name>): ... this, new
+ 	define_insn for avx512vl.
+ 	(<shift_insn><mode>3): ... and this, new define_insn without
+ 	masking for non-avx512vl.
+ 
+ 	PR target/82370
+ 	* config/i386/sse.md (*andnot<mode>3,
+ 	<mask_codefor><code><mode>3<mask_name>, *<code><mode>3): Split
+ 	(=v,v,vm) alternative into (=x,x,xm) and (=v,v,vm), for 128-bit
+ 	and 256-bit vectors, the (=x,x,xm) alternative and when mask is
+ 	not applied use empty suffix even for TARGET_AVX512VL.
+ 	* config/i386/subst.md (mask_prefix3, mask_prefix4): When mask
+ 	is applied, supply evex,evex or evex,evex,evex instead of just
+ 	evex.
+ 
+ 2017-10-20  Julia Koval  <julia.koval@intel.com>
+ 
+ 	* common/config/i386/i386-common.c (OPTION_MASK_ISA_GFNI_SET,
+ 	(OPTION_MASK_ISA_GFNI_UNSET): New.
+ 	(ix86_handle_option): Handle OPT_mgfni.
+ 	* config/i386/cpuid.h (bit_GFNI): New.
+ 	* config/i386/driver-i386.c (host_detect_local_cpu): Detect gfni.
+ 	* config/i386/i386-c.c (ix86_target_macros_internal): Define __GFNI__.
+ 	* config/i386/i386.c (ix86_target_string): Add -mgfni.
+ 	(ix86_valid_target_attribute_inner_p): Add OPT_mgfni.
+ 	* config/i386/i386.h (TARGET_GFNI, TARGET_GFNI_P): New.
+ 	* config/i386/i386.opt: Add mgfni.
+ 
+ 2017-10-20  Orlando Arias  <oarias@knights.ucf.edu>
+ 
+ 	* config/msp430/msp430.c (msp430_option_override): Disable
+ 	-fdelete-null-pointer-checks.
+ 	* doc/invoke.text (-fdelete-null-pointer-checks): Document that.
+ 
+ 2017-10-19  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* x86-tune-costs.h (generic_cost, core_cost): Correct costs
+ 	of x87 and SSE instructions.
+ 
+ 2017-10-19  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* asan.c (create_cond_insert_point): Do not update edge count.
+ 	* auto-profile.c (afdo_propagate_edge): Update for edge count removal.
+ 	(afdo_propagate_circuit): Likewise.
+ 	(afdo_calculate_branch_prob): Likewise.
+ 	(afdo_annotate_cfg): Likewise.
+ 	* basic-block.h (struct edge_def): Remove count.
+ 	(edge_def::count): New accessor.
+ 	* bb-reorder.c (rotate_loop): Update.
+ 	(find_traces_1_round): Update.
+ 	(connect_traces): Update.
+ 	(sanitize_hot_paths): Update.
+ 	* cfg.c (unchecked_make_edge): Update.
+ 	(make_single_succ_edge): Update.
+ 	(check_bb_profile): Update.
+ 	(dump_edge_info): Update.
+ 	(update_bb_profile_for_threading): Update.
+ 	(scale_bbs_frequencies_int): Update.
+ 	(scale_bbs_frequencies_gcov_type): Update.
+ 	(scale_bbs_frequencies_profile_count): Update.
+ 	(scale_bbs_frequencies): Update.
+ 	* cfganal.c (connect_infinite_loops_to_exit): Update.
+ 	* cfgbuild.c (compute_outgoing_frequencies): Update.
+ 	(find_many_sub_basic_blocks): Update.
+ 	* cfgcleanup.c (try_forward_edges): Update.
+ 	(try_crossjump_to_edge): Update
+ 	* cfgexpand.c (expand_gimple_cond): Update
+ 	(expand_gimple_tailcall): Update
+ 	(construct_exit_block): Update
+ 	* cfghooks.c (verify_flow_info): Update
+ 	(redirect_edge_succ_nodup): Update
+ 	(split_edge): Update
+ 	(make_forwarder_block): Update
+ 	(duplicate_block): Update
+ 	(account_profile_record): Update
+ 	* cfgloop.c (find_subloop_latch_edge_by_profile): Update.
+ 	* cfgloopanal.c (expected_loop_iterations_unbounded): Update.
+ 	* cfgloopmanip.c (scale_loop_profile): Update.
+ 	(loopify): Update.
+ 	(lv_adjust_loop_entry_edge): Update.
+ 	* cfgrtl.c (try_redirect_by_replacing_jump): Update.
+ 	(force_nonfallthru_and_redirect): Update.
+ 	(purge_dead_edges): Update.
+ 	(rtl_flow_call_edges_add): Update.
+ 	* cgraphunit.c (init_lowered_empty_function): Update.
+ 	(cgraph_node::expand_thunk): Update.
+ 	* gimple-pretty-print.c (dump_probability): Update.
+ 	(dump_edge_probability): Update.
+ 	* gimple-ssa-isolate-paths.c (isolate_path): Update.
+ 	* haifa-sched.c (sched_create_recovery_edges): Update.
+ 	* hsa-gen.c (convert_switch_statements): Update.
+ 	* ifcvt.c (dead_or_predicable): Update.
+ 	* ipa-inline-transform.c (inline_transform): Update.
+ 	* ipa-split.c (split_function): Update.
+ 	* ipa-utils.c (ipa_merge_profiles): Update.
+ 	* loop-doloop.c (add_test): Update.
+ 	* loop-unroll.c (unroll_loop_runtime_iterations): Update.
+ 	* lto-streamer-in.c (input_cfg): Update.
+ 	(input_function): Update.
+ 	* lto-streamer-out.c (output_cfg): Update.
+ 	* modulo-sched.c (sms_schedule): Update.
+ 	* postreload-gcse.c (eliminate_partially_redundant_load): Update.
+ 	* predict.c (maybe_hot_edge_p): Update.
+ 	(unlikely_executed_edge_p): Update.
+ 	(probably_never_executed_edge_p): Update.
+ 	(dump_prediction): Update.
+ 	(drop_profile): Update.
+ 	(propagate_unlikely_bbs_forward): Update.
+ 	(determine_unlikely_bbs): Update.
+ 	(force_edge_cold): Update.
+ 	* profile.c (compute_branch_probabilities): Update.
+ 	* reg-stack.c (better_edge): Update.
+ 	* shrink-wrap.c (handle_simple_exit): Update.
+ 	* tracer.c (better_p): Update.
+ 	* trans-mem.c (expand_transaction): Update.
+ 	(split_bb_make_tm_edge): Update.
+ 	* tree-call-cdce.c: Update.
+ 	* tree-cfg.c (gimple_find_sub_bbs): Update.
+ 	(gimple_split_edge): Update.
+ 	(gimple_duplicate_sese_region): Update.
+ 	(gimple_duplicate_sese_tail): Update.
+ 	(gimple_flow_call_edges_add): Update.
+ 	(insert_cond_bb): Update.
+ 	(execute_fixup_cfg): Update.
+ 	* tree-cfgcleanup.c (cleanup_control_expr_graph): Update.
+ 	* tree-complex.c (expand_complex_div_wide): Update.
+ 	* tree-eh.c (lower_resx): Update.
+ 	(unsplit_eh): Update.
+ 	(cleanup_empty_eh_move_lp): Update.
+ 	* tree-inline.c (copy_edges_for_bb): Update.
+ 	(freqs_to_counts): Update.
+ 	(copy_cfg_body): Update.
+ 	* tree-ssa-dce.c (remove_dead_stmt): Update.
+ 	* tree-ssa-ifcombine.c (update_profile_after_ifcombine): Update.
+ 	* tree-ssa-loop-im.c (execute_sm_if_changed): Update.
+ 	* tree-ssa-loop-ivcanon.c (remove_exits_and_undefined_stmts): Update.
+ 	(unloop_loops): Update.
+ 	* tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update.
+ 	* tree-ssa-loop-split.c (connect_loops): Update.
+ 	(split_loop): Update.
+ 	* tree-ssa-loop-unswitch.c (hoist_guard): Update.
+ 	* tree-ssa-phionlycprop.c (propagate_rhs_into_lhs): Update.
+ 	* tree-ssa-phiopt.c (replace_phi_edge_with_variable): Update.
+ 	* tree-ssa-reassoc.c (branch_fixup): Update.
+ 	* tree-ssa-tail-merge.c (replace_block_by): Update.
+ 	* tree-ssa-threadupdate.c (remove_ctrl_stmt_and_useless_edges): Update.
+ 	(compute_path_counts): Update.
+ 	(update_profile): Update.
+ 	(recompute_probabilities): Update.
+ 	(update_joiner_offpath_counts): Update.
+ 	(estimated_freqs_path): Update.
+ 	(freqs_to_counts_path): Update.
+ 	(clear_counts_path): Update.
+ 	(ssa_fix_duplicate_block_edges): Update.
+ 	(duplicate_thread_path): Update.
+ 	* tree-switch-conversion.c (hoist_edge_and_branch_if_true): Update.
+ 	(case_bit_test_cmp): Update.
+ 	(collect_switch_conv_info): Update.
+ 	(gen_inbound_check): Update.
+ 	(do_jump_if_equal): Update.
+ 	(emit_cmp_and_jump_insns): Update.
+ 	* tree-tailcall.c (decrease_profile): Update.
+ 	(eliminate_tail_call): Update.
+ 	* tree-vect-loop-manip.c (slpeel_add_loop_guard): Update.
+ 	(vect_do_peeling): Update.
+ 	* tree-vect-loop.c (scale_profile_for_vect_loop): Update.
+ 	* ubsan.c (ubsan_expand_null_ifn): Update.
+ 	(ubsan_expand_ptr_ifn): Update.
+ 	* value-prof.c (gimple_divmod_fixed_value): Update.
+ 	(gimple_mod_pow2): Update.
+ 	(gimple_mod_subtract): Update.
+ 	(gimple_ic): Update.
+ 	(gimple_stringop_fixed_value): Update.
+ 
+ 2017-10-19  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/82618
+ 	* config/i386/i386.md (sub to cmp): New peephole2 pattern.
+ 
+ 2017-10-19  Alexander Monakov  <amonakov@ispras.ru>
+ 
+ 	PR rtl-optimization/82395
+ 	* ira-color.c (allocno_priority_compare_func): Fix comparison step
+ 	based on non_spilled_static_chain_regno_p.
+ 
+ 2017-10-19  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.c (output_387_binary_op): Rewrite SSE part.
+ 	(ix86_emit_mode_set): Rewrite insn mnemonic construction.
+ 	(ix86_prepare_fp_compare_args): Redefine is_sse as bool.
+ 
+ 2017-10-19  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR tree-optimization/82596
+ 	* tree.c (array_at_struct_end_p): Handle STRING_CST.
+ 
+ 2017-10-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* asan.c (handle_builtin_alloca): Deal with all alloca variants.
+ 	(get_mem_refs_of_builtin_call): Likewise.
+ 	* builtins.c (expand_builtin_apply): Adjust call to
+ 	allocate_dynamic_stack_space.
+ 	(expand_builtin_alloca): For __builtin_alloca_with_align_and_max, pass
+ 	the third argument to allocate_dynamic_stack_space, otherwise -1.
+ 	(expand_builtin): Deal with all alloca variants.
+ 	(is_inexpensive_builtin): Likewise.
+ 	* builtins.def (BUILT_IN_ALLOCA_WITH_ALIGN_AND_MAX): New.
+ 	* calls.c (special_function_p): Deal with all alloca variants.
+ 	(initialize_argument_information): Adjust call to
+ 	allocate_dynamic_stack_space.
+ 	(expand_call): Likewise.
+ 	* cfgexpand.c (expand_call_stmt): Deal with all alloca variants.
+ 	* doc/extend.texi (Built-ins): Add __builtin_alloca_with_align_and_max
+ 	* explow.c (allocate_dynamic_stack_space): Add MAX_SIZE parameter and
+ 	use it for the stack usage computation.
+ 	* explow.h (allocate_dynamic_stack_space): Adjust prototype.
+ 	* function.c (gimplify_parameters): Call build_alloca_call_expr.
+ 	* gimple-ssa-warn-alloca.c (alloca_call_type): Simplify control flow.
+ 	Take into account 3rd argument of __builtin_alloca_with_align_and_max.
+ 	(in_loop_p): Remove first argument and useless check.
+ 	(pass_walloca::execute): Remove useless test and adjust call to above.
+ 	* gimple.c (gimple_build_call_from_tree): Deal with all alloc variants
+ 	* gimplify.c (gimplify_vla_decl): Call build_alloca_call_expr.
+ 	(gimplify_call_expr): Deal with all alloca variants.
+ 	* hsa-gen.c (gen_hsa_alloca): Likewise.
+ 	(gen_hsa_insns_for_call): Likewise.
+ 	* ipa-pure-const.c (special_builtin_state): Likewise.
+ 	* tree-chkp.c (chkp_build_returned_bound): Likewise.
+ 	* tree-object-size.c (alloc_object_size): Likewise.
+ 	* tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Likewise.
+ 	(call_may_clobber_ref_p_1): Likewise.
+ 	* tree-ssa-ccp.c (evaluate_stmt): Likewise.
+ 	(ccp_fold_stmt): Likewise.
+ 	(optimize_stack_restore): Likewise.
+ 	* tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
+ 	(mark_all_reaching_defs_necessary_1): Likewise.
+ 	(propagate_necessity): Likewise.
+ 	(eliminate_unnecessary_stmts): Likewise.
+ 	* tree.c (build_common_builtin_nodes): Build
+ 	BUILT_IN_ALLOCA_WITH_ALIGN_AND_MAX.
+ 	(build_alloca_call_expr): New function.
+ 	* tree.h (ALLOCA_FUNCTION_CODE_P): New macro.
+ 	(CASE_BUILT_IN_ALLOCA): Likewise.
+ 	(build_alloca_call_expr): Declare.
+ 	* varasm.c (incorporeal_function_p): Deal with all alloca variants.
+ 
+ 2017-10-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR debug/82509
+ 	* dwarf2out.c (new_die_raw): New static inline function.
+ 	(new_die): Use it to create the DIE.
+ 	(add_AT_external_die_ref): Likewise.
+ 	(clone_die): Likewise.
+ 	(clone_as_declaration): Likewise.
+ 	(dwarf2out_vms_debug_main_pointer): Likewise.
+ 	(base_type_die): Likewise.  Remove early return for corner cases.
+ 	Do not call add_pubtype on the DIE here.
+ 	(is_base_type): Remove ERROR_MARK and return 0 for VOID_TYPE.
+ 	(modified_type_die): Adjust the lookup for reverse order DIEs.  Skip
+ 	typedefs for base types with DW_AT_endianity.  Make sure a DIE with
+ 	native order exists for base types, attach the DIE manually and call
+ 	add_pubtype on it.  Do not equate a reverse order DIE to the type.
+ 
+ 2017-10-19  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config/arm/arm.c (align_ok_ldrd_strd): New function.
+ 	(mem_ok_for_ldrd_strd): New parameter align.  Extract the alignment of
+ 	the mem into it.
+ 	(gen_operands_ldrd_strd): Validate the alignment of the accesses.
+ 
+ 2017-10-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* flag-types.h (enum sanitize_code): Add SANITIZE_BUILTIN.  Or
+ 	SANITIZE_BUILTIN into SANITIZE_UNDEFINED.
+ 	* sanitizer.def (BUILT_IN_UBSAN_HANDLE_INVALID_BUILTIN,
+ 	BUILT_IN_UBSAN_HANDLE_INVALID_BUILTIN_ABORT): New builtins.
+ 	* opts.c (sanitizer_opts): Add builtin.
+ 	* ubsan.c (instrument_builtin): New function.
+ 	(pass_ubsan::execute): Call it.
+ 	(pass_ubsan::gate): Enable even for SANITIZE_BUILTIN.
+ 	* doc/invoke.texi: Document -fsanitize=builtin.
+ 
+ 	* ubsan.c (ubsan_expand_null_ifn): Use _v1 suffixed type mismatch
+ 	builtins, store max (log2 (align), 0) into uchar field instead of
+ 	align into uptr field.
+ 	(ubsan_expand_objsize_ifn): Use _v1 suffixed type mismatch builtins,
+ 	store uchar 0 field instead of uptr 0 field.
+ 	(instrument_nonnull_return): Use _v1 suffixed nonnull return builtin,
+ 	instead of passing one address of struct with 2 locations pass
+ 	two addresses of structs with 1 location each.
+ 	* sanitizer.def (BUILT_IN_UBSAN_HANDLE_TYPE_MISMATCH,
+ 	BUILT_IN_UBSAN_HANDLE_TYPE_MISMATCH_ABORT,
+ 	BUILT_IN_UBSAN_HANDLE_NONNULL_RETURN,
+ 	BUILT_IN_UBSAN_HANDLE_NONNULL_RETURN_ABORT): Removed.
+ 	(BUILT_IN_UBSAN_HANDLE_TYPE_MISMATCH_V1,
+ 	BUILT_IN_UBSAN_HANDLE_TYPE_MISMATCH_V1_ABORT,
+ 	BUILT_IN_UBSAN_HANDLE_NONNULL_RETURN_V1,
+ 	BUILT_IN_UBSAN_HANDLE_NONNULL_RETURN_V1_ABORT): New builtins.
+ 
+ 2017-10-19  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR driver/81829
+ 	* file-find.c (remove_prefix): Remove.
+ 	* file-find.h (remove_prefix): Likewise.
+ 	* gcc-ar.c: Remove smartness of lookup.
+ 
+ 2017-10-19  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/rs6000.md (*call_indirect_aix<mode>,
+ 	*call_value_indirect_aix<mode>, *call_indirect_elfv2<mode>,
+ 	*call_value_indirect_elfv2<mode>): Add correct mode to the unspec.
+ 
+ 2017-10-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/82580
+ 	* config/i386/i386.md (setcc + movzbl to xor + setcc): New peephole2.
+ 	(setcc + and to xor + setcc): New peephole2.
+ 
+ 2017-10-19  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	* doc/sourcebuild.texi (Test Directives, Variants of
+ 	dg-require-support): Add dg-require-stack-size.
+ 
+ 2017-10-19  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR sanitizer/82517
+ 	* gimplify.c (gimplify_decl_expr): Do not instrument variables
+ 	that have a large alignment.
+ 	(gimplify_target_expr): Likewise.
+ 
+ 2017-10-18  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR rtl-optimization/82602
+ 	* ira.c (rtx_moveable_p): Return false for volatile asm.
+ 
+ 2017-10-18  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/82580
+ 	* config/i386/i386-modes.def (CCGZ): New CC mode.
+ 	* config/i386/i386.md (sub<mode>3_carry_ccgz): New insn pattern.
+ 	* config/i386/predicates.md (ix86_comparison_operator):
+ 	Handle CCGZmode.
+ 	* config/i386/i386.c (ix86_expand_branch) <case E_TImode>:
+ 	Emulate LE, LEU, GT, GTU, LT, LTU, GE and GEU double-word comparisons
+ 	with double-word subtraction.
+ 	(put_condition_code): Handle CCGZmode.
+ 
+ 2017-10-18  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* wide-int.cc (debug (const wide_int &)): New.
+ 	(debug (const wide_int *)): New.
+ 	(debug (const widest_int &)): New.
+ 	(debug (const widest_int *)): New.
+ 
+ 2017-10-18  Vladimir Makarov  <vmakarov@redhat.com>
+ 
+ 	PR middle-end/82556
+ 	* lra-constraints.c (curr_insn_transform): Use non-input operand
+ 	instead of output one for matched reload.
+ 
+ 2017-10-18  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-loop-distribution.c (INCLUDE_ALGORITHM): New header file.
+ 	(tree-ssa-loop-ivopts.h): New header file.
+ 	(struct builtin_info): New fields.
+ 	(classify_builtin_1): Compute and record base and offset parts for
+ 	memset builtin partition by calling strip_offset.
+ 	(offset_cmp, fuse_memset_builtins): New functions.
+ 	(finalize_partitions): Fuse adjacent memset partitions by calling
+ 	above function.
+ 	* tree-ssa-loop-ivopts.c (strip_offset): Delete static declaration.
+ 	Expose the interface.
+ 	* tree-ssa-loop-ivopts.h (strip_offset): New declaration.
+ 
+ 2017-10-18  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	PR tree-optimization/82574
+ 	* tree-loop-distribution.c (find_single_drs): New parameter.  Check
+ 	that data reference must be executed exactly once per iteration
+ 	against the outermost loop in nest.
+ 	(classify_partition): Update call to above function.
+ 
+ 2017-10-18  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/82591
+ 	* graphite.c (graphite_transform_loops): Move code gen message
+ 	printing ...
+ 	* graphite-isl-ast-to-gimple.c (graphite_regenerate_ast_isl):
+ 	Here.  Handle scop_to_isl_ast failing.
+ 	(scop_to_isl_ast): Limit the number of ISL operations.
+ 
+ 2017-10-18  Richard Biener  <rguenther@suse.de>
+ 
+ 	* graphite-isl-ast-to-gimple.c
+ 	(translate_isl_ast_to_gimple::set_rename): Simplify.
+ 	(translate_isl_ast_to_gimple::set_rename_for_each_def): Inline...
+ 	(graphite_copy_stmts_from_block): ... here.
+ 	(copy_bb_and_scalar_dependences): Simplify.
+ 	(add_parameters_to_ivs_params): Canonicalize.
+ 	(generate_entry_out_of_ssa_copies): Simplify.
+ 	* graphite-sese-to-poly.c (extract_affine_name): Simplify
+ 	by passing in ISL dimension.
+ 	(parameter_index_in_region_1): Rename to ...
+ 	(parameter_index_in_region): ... this.
+ 	(extract_affine): Adjust assert, pass down parameter index.
+ 	(add_param_constraints): Use range-info when available.
+ 	(build_scop_context): Adjust.
+ 	* sese.c (new_sese_info): Adjust.
+ 	(free_sese_info): Likewise.
+ 	* sese.h (bb_map_t, rename_map_t, phi_rename, init_back_edge_pair_t):
+ 	Remove unused typedefs.
+ 	(struct sese_info_t): Simplify rename_map, remove incomplete_phis.
+ 
+ 2017-10-18  Martin Liska  <mliska@suse.cz>
+ 
+ 	* combine.c (simplify_compare_const): Add gcc_fallthrough.
+ 
+ 2017-10-18  Robin Dapp  <rdapp@linux.vnet.ibm.com>
+ 
+ 	* config/s390/s390.c (s390_bb_fallthru_entry_likely): New function.
+ 	(s390_sched_init): Do not reset s390_sched_state if we entered the
+ 	current basic block via a fallthru edge and all others are unlikely.
+ 
+ 2017-10-18  Robin Dapp  <rdapp@linux.vnet.ibm.com>
+ 
+ 	* config/s390/s390.c (NUM_SIDES): New variable.
+ 	(LONGRUNNING_THRESHOLD): New variable.
+ 	(LATENCY_FACTOR): New variable.
+ 	(s390_sched_score): Decrease score for long-running instructions on
+ 	wrong side.
+ 	(s390_sched_variable_issue): Perform bookkeeping for long-running
+ 	instructions.
+ 
+ 2017-10-18  Richard Biener  <rguenther@suse.de>
+ 
+ 	* graphite-isl-ast-to-gimple.c (gcc_expression_from_isl_ast_expr_id):
+ 	Simplify with removal of the parameter rename map.
+ 	(set_rename): Likewise.
+ 	(should_copy_to_new_region): Likewise.
+ 	(graphite_copy_stmts_from_block): Likewise.
+ 	(copy_bb_and_scalar_dependences): Remove initialization of
+ 	unused copied_bb_map.
+ 	(copy_def): Remove.
+ 	(copy_internal_parameters): Likewise.
+ 	(graphite_regenerate_ast_isl): Do not call copy_internal_parameters.
+ 	* graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
+ 	Use INTEGRAL_TYPE_P.
+ 	(parameter_index_in_region_1): Rename to ...
+ 	(assign_parameter_index_in_region): ... this.  Assert we have
+ 	a parameter we handle.
+ 	(scan_tree_for_params): Adjust.
+ 	* sese.h (parameter_rename_map_t): Remove.
+ 	(struct sese_info_t): Remove unused parameter_rename_map and
+ 	copied_bb_map members.
+ 	* sese.c (new_sese_info): Adjust.
+ 	(free_sese_info): Likewise.
+ 
+ 2017-10-18  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR sanitizer/82545
+ 	* asan.c (asan_expand_poison_ifn): Do not put gimple stmt
+ 	on an abnormal edge.
+ 
+ 2017-10-18  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+ 
+ 	* doc/invoke.texi (ffunction-sections and fdata-sections):
+ 	Update.
+ 
+ 2017-10-17  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* tree-ssa-loop-ivopts.c (add_autoinc_candidates): Bail out only if
+ 	the use statement can throw internally.
+ 
+ 2017-10-17  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* config/visium/visium.c (visium_select_cc_mode): Return CCmode for
+ 	any RTX present on the RHS of a SET.
+ 	* compare-elim.c (try_eliminate_compare): Restore comment.
+ 
+ 2017-10-17  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* langhooks.h (struct lang_hooks): Document that tree_size langhook
+ 	may be also called on tcc_type nodes.
+ 	* langhooks.c (lhd_tree_size): Likewise.
+ 
+ 2017-10-17  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* gimple-ssa-sprintf.c (fmtwarn): Update for changed signature of
+ 	format_warning_at_substring.
+ 	(maybe_warn): Convert source_range * param to a location_t.  Pass
+ 	UNKNOWN_LOCATION rather than NULL to fmtwarn.
+ 	(format_directive): Remove code to extract source_ranges and
+ 	source_range * in favor of just a location_t.
+ 	(parse_directive): Pass UNKNOWN_LOCATION rather than NULL to
+ 	fmtwarn.
+ 	* substring-locations.c (format_warning_va): Convert
+ 	source_range * param to a location_t.
+ 	(format_warning_at_substring): Likewise.
+ 	* substring-locations.h (format_warning_va): Likewise.
+ 	(format_warning_at_substring): Likewise.
+ 
+ 2017-10-17  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* target.h (enum vect_cost_for_stmt): Add vec_gather_load and
+ 	vec_scatter_store
+ 	* tree-vect-stmts.c (record_stmt_cost): Make difference between normal
+ 	and scatter/gather ops.
+ 
+ 	* aarch64/aarch64.c (aarch64_builtin_vectorization_cost): Add
+ 	vec_gather_load and vec_scatter_store.
+ 	* arm/arm.c (arm_builtin_vectorization_cost): Likewise.
+ 	* powerpcspe/powerpcspe.c (rs6000_builtin_vectorization_cost): Likewise.
+ 	* rs6000/rs6000.c (rs6000_builtin_vectorization_cost): Likewise.
+ 	* s390/s390.c (s390_builtin_vectorization_cost): Likewise.
+ 	* spu/spu.c (spu_builtin_vectorization_cost): Likewise.
+ 	* i386/i386.c (x86_builtin_vectorization_cost): Likewise.
+ 
+ 2017-10-17  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* reg-stack.c (compare_for_stack_reg): Add bool argument.
+ 	Detect FTST instruction and handle its register pops.  Only pop
+ 	second operand if can_pop_second_op is true.
+ 	(subst_stack_regs_pat) <case COMPARE>: Detect FCOMI instruction to
+ 	set can_pop_second_op to false in the compare_for_stack_reg call.
+ 
+ 	* config/i386/i386.md (*cmpi<FPCMP:unord><MODEF:mode>): Only call
+ 	output_fp_compare for stack register operands.
+ 	* config/i386/i386.c (output_fp_compare): Do not output SSE compare
+ 	instructions here.  Do not emit stack register pops here.  Assert
+ 	that FCOMPP pops next to top stack register.  Rewrite function.
+ 
+ 2017-10-17  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	PR middle-end/82577
+ 	* alias.c (compare_base_decls): Check HAS_DECL_ASSEMBLER_NAME_P,
+ 	use DECL_ASSEMBLER_NAME_RAW.
+ 
+ 	PR middle-end/82546
+ 	* tree.c (tree_code_size): Reformat.  Punt to lang hook for unknown
+ 	TYPE nodes.
+ 
+ 2017-10-17  Qing Zhao <qing.zhao@oracle.com>
+ 	    Wilco Dijkstra <wilco.dijkstra@arm.com>
+ 
+ 	* builtins.c (expand_builtin_update_setjmp_buf): Add a
+ 	converstion to Pmode from the buf_addr.
+ 
+ 2017-10-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	* graphite-dependences.c (scop_get_reads_and_writes): Change
+ 	output parameters to references.
+ 
+ 2017-10-17  Jackson Woodruff  <jackson.woodruff@arm.com>
+ 
+ 	PR 71026/tree-optimization
+ 	* fold-const.c (distribute_real_division): Removed.
+ 	(fold_binary_loc): Remove calls to distribute_real_divison.
+ 
+ 2017-10-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	* graphite-scop-detection.c
+ 	(scop_detection::stmt_has_simple_data_refs_p): Always use
+ 	the full nest as region.
+ 	(try_generate_gimple_bb): Likewise.
+ 	* sese.c (scalar_evolution_in_region): Simplify now that
+ 	SCEV can handle instantiation in regions.
+ 	* tree-scalar-evolution.c (instantiate_scev_name): Also instantiate
+ 	in the non-loop part of a function if requested.
+ 
+ 2017-10-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/82563
+ 	* graphite-isl-ast-to-gimple.c (generate_entry_out_of_ssa_copies):
+ 	New function.
+ 	(graphite_regenerate_ast_isl): Call it.
+ 	* graphite-scop-detection.c (build_scops): Remove entry edge split.
+ 
+ 2017-10-17  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/82549
+ 	* fold-const.c (optimize_bit_field_compare, fold_truth_andor_1):
+ 	Formatting fixes.  Instead of calling make_bit_field_ref with negative
+ 	bitpos return 0.
+ 
+ 2017-10-17  Olga Makhotina  <olga.makhotina@intel.com>
+ 
+ 	* config/i386/avx512dqintrin.h (_mm_mask_reduce_sd,
+ 	_mm_maskz_reduce_sd, _mm_mask_reduce_ss,=20
+ 	_mm_maskz_reduce_ss): New.
+ 	* config/i386/i386-builtin.def (__builtin_ia32_reducesd_mask,
+ 	__builtin_ia32_reducess_mask): Ditto..
+ 	(__builtin_ia32_reducesd, __builtin_ia32_reducess): Remove.
+ 	* config/i386/sse.md (reduces<mode>): Renamed to ...
+ 	(reduces<mode><mask_scalar_name>): ... this.
+ 	(vreduce<ssescalarmodesuffix>\t{%3, %2, %1, %0|%0, %1, %2, %3}):
+ 	Changed to ...
+ 	(vreduce<ssescalarmodesuffix>\t{%3, %2, %1, %0<mask_scalar_operand4>|
+ 	%0<mask_scalar_operand4>, %1, %2, %3}): ... this.
+ 
+ 2017-10-16  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* Makefile.in (OBJS): Add unique-ptr-tests.o.
+ 	* selftest-run-tests.c (selftest::run_tests): Call
+ 	selftest::unique_ptr_tests_cc_tests.
+ 	* selftest.h (selftest::unique_ptr_tests_cc_tests): New decl.
+ 	* unique-ptr-tests.cc: New file.
+ 
+ 2017-10-16  Vladimir Makarov  <vmakarov@redhat.com>
+ 
+ 	PR sanitizer/82353
+ 	* lra.c (collect_non_operand_hard_regs): Don't ignore operator
+ 	locations.
+ 	* lra-lives.c (bb_killed_pseudos, bb_gen_pseudos): Move up.
+ 	(make_hard_regno_born, make_hard_regno_dead): Update
+ 	bb_killed_pseudos and bb_gen_pseudos for fixed regs.
+ 
+ 2017-10-16  Jeff Law  <law@redhat.com>
+ 
+ 	* tree-ssa-dse.c (live_bytes_read): Fix thinko.
+ 
+ 2017-10-16  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* x86-tune-costs.h (znver1_cost): Fix move cost tables.
+ 
+ 2017-10-16  Olivier Hainque  <hainque@adacore.com>
+ 
+ 	* gcc/config.gcc (powerpc*-*-*spe*): Pick 8548 as the default
+ 	with_cpu if we were configured for an e500v2 target cpu name.
+ 
+ 2017-10-16  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	* config/arm/arm-cpus.in (cortex-m33): Add nodsp option.
+ 	* doc/invoke.texi: Document +nodsp as a valid extension for
+ 	-mcpu=cortex-m33.
+ 
+ 2017-10-16  Martin Liska  <mliska@suse.cz>
+ 
+ 	* sbitmap.c (bitmap_bit_in_range_p_checking): New function.
+ 	(test_set_range): Likewise.
+ 	(test_range_functions): Rename to ...
+ 	(test_bit_in_range): ... this.
+ 	(sbitmap_c_tests): Add new test.
+ 
+ 2017-10-16  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* config/aarch64/arm_neon.h (vdot_u32, vdotq_u32, vdot_s32, vdotq_s32):
+ 	New.
+ 	(vdot_lane_u32, vdot_laneq_u32, vdotq_lane_u32, vdotq_laneq_u32): New.
+ 	(vdot_lane_s32, vdot_laneq_s32, vdotq_lane_s32, vdotq_laneq_s32): New.
+ 
+ 2017-10-16  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* config/aarch64/aarch64-builtins.c
+ 	(aarch64_types_quadopu_lane_qualifiers): New.
+ 	(TYPES_QUADOPU_LANE): New.
+ 	* config/aarch64/aarch64-simd.md (aarch64_<sur>dot<vsi2qi>): New.
+ 	(<sur>dot_prod<vsi2qi>, aarch64_<sur>dot_lane<vsi2qi>): New.
+ 	(aarch64_<sur>dot_laneq<vsi2qi>): New.
+ 	* config/aarch64/aarch64-simd-builtins.def (sdot, udot): New.
+ 	(sdot_lane, udot_lane, sdot_laneq, udot_laneq): New.
+ 	* config/aarch64/iterators.md (sur): Add UNSPEC_SDOT, UNSPEC_UDOT.
+ 	(Vdottype, DOTPROD): New.
+ 	(sur): Add SDOT and UDOT.
+ 
+ 2017-10-16  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* config/aarch64/aarch64.h (AARCH64_FL_DOTPROD): New.
+ 	(AARCH64_ISA_DOTPROD, TARGET_DOTPROD): New.
+ 	* config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
+ 	Add TARGET_DOTPROD.
+ 	* config/aarch64/aarch64-option-extensions.def (dotprod): New.
+ 	* config/aarch64/aarch64-cores.def (cortex-a55, cortex-a75):
+ 	Enable TARGET_DOTPROD.
+ 	(cortex-a75.cortex-a55): Likewise.
+ 	* doc/invoke.texi (aarch64-feature-modifiers): Document dotprod.
+ 
+ 2017-10-16  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* config/arm/arm-builtins.c (arm_unsigned_uternop_qualifiers): New.
+ 	(UTERNOP_QUALIFIERS, arm_umac_lane_qualifiers, UMAC_LANE_QUALIFIERS):
+ 	New.
+ 	* config/arm/arm_neon_builtins.def (sdot, udot, sdot_lane, udot_lane):
+ 	New.
+ 	* config/arm/iterators.md (DOTPROD, VSI2QI, vsi2qi): New.
+ 	(UNSPEC_DOT_S, UNSPEC_DOT_U, opsuffix): New.
+ 	* config/arm/neon.md (neon_<sup>dot<vsi2qi>): New.
+ 	(neon_<sup>dot_lane<vsi2qi>, <sup>dot_prod<vsi2qi>): New.
+ 	* config/arm/types.md (neon_dot, neon_dot_q): New.
+ 	* config/arm/unspecs.md (sup): Add UNSPEC_DOT_S, UNSPEC_DOT_U.
+ 
+ 2017-10-16  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* config/arm/arm.h (TARGET_DOTPROD): New.
+ 	* config/arm/arm.c (arm_arch_dotprod): New.
+ 	(arm_option_reconfigure_globals): Add arm_arch_dotprod.
+ 	* config/arm/arm-c.c (__ARM_FEATURE_DOTPROD): New.
+ 	* config/arm/arm-cpus.in (armv8.2-a): Enabled +dotprod.
+ 	(feature dotprod, group dotprod, ALL_SIMD_INTERNAL): New.
+ 	(ALL_FPU_INTERNAL): Use ALL_SIMD_INTERNAL.
+ 	* config/arm/t-multilib (v8_2_a_simd_variants): Add dotprod.
+ 	* doc/invoke.texi (armv8.2-a): Document dotprod
+ 
+ 2017-10-14  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* i386.c (ix86_vec_cost): New function.
+ 	(ix86_rtx_costs): Handle vector operations better.
+ 	* i386.h (struct processor_costs): Add sse_op, fmasd, fmass.
+ 	* x86-tune-costs.h: Add new costs to all tables.
+ 
+ 2017-10-14  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* i386.c (ix86_rtx_costs): Make difference between x87 and SSE
+ 	operations.
+ 	* i386.h (struct processor_costs): Add addss, mulss, mulsd, divss,
+ 	divsd, sqrtss and sqrtsd
+ 	* x86-tune-costs.h: Add new entries to all costs.
+ 	(znver1_cost): Fix to match real instruction latencies.
+ 
+ 2017-10-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 	    Michael Collison <michael.collison@arm.com>
+ 
+ 	* compare-elim.c: Include emit-rtl.h.
+ 	(can_merge_compare_into_arith): New function.
+ 	(try_validate_parallel): Likewise.
+ 	(try_merge_compare): Likewise.
+ 	(try_eliminate_compare): Call the above when no previous clobber
+ 	is available.
+ 	(execute_compare_elim_after_reload): Add DF_UD_CHAIN and DF_DU_CHAIN
+ 	dataflow problems.
+ 
+ 2017-10-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/62263
+ 	PR middle-end/82498
+ 	* tree-ssa-phiopt.c (value_replacement): Comment fix.  Handle
+ 	up to 2 preparation statements for ASSIGN in MIDDLE_BB.
+ 
+ 	PR middle-end/62263
+ 	PR middle-end/82498
+ 	* tree-ssa-forwprop.c (simplify_rotate): Allow def_arg1[N]
+ 	to be any operand_equal_p operands.  For & (B - 1) require
+ 	B to be power of 2.  Recognize
+ 	(X << (Y & (B - 1))) | (X >> ((-Y) & (B - 1))) and similar patterns.
+ 
+ 2017-10-14  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR bootstrap/82553
+ 	* optabs.c (expand_memory_blockage): Fix call of
+ 	targetm.have_memory_blockage.
+ 
+ 2017-10-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR bootstrap/82548
+ 	* config.gcc (*-*-solaris2*, i[34567]86-*-cygwin*,
+ 	x86_64-*-cygwin*, i[34567]86-*-mingw* | x86_64-*-mingw*): Append
+ 	objects to extra_objs instead of overwriting it.
+ 
+ 2017-10-14  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/sync.md (FILD_ATOMIC/FIST_ATOMIC FP load peephole2):
+ 	Use any_fp_register_operand as operand[3] predicate.  Simplify
+ 	equality test for operands[2] and operands[4] memory location.
+ 	(LDX_ATOMIC/STX_ATOMIC FP load peephole2): Ditto.
+ 	(FILD_ATOMIC/FIST_ATOMIC FP load peephole2 with mem blockage): New.
+ 	(LDX_ATOMIC/LDX_ATOMIC FP load peephole2 with mem blockage): Ditto.
+ 	(FILD_ATOMIC/FIST_ATOMIC FP store peephole2): Use
+ 	any_fp_register_operand as operand[1] predicate.  Simplify
+ 	equality test for operands[0] and operands[3] memory location.
+ 	(LDX_ATOMIC/STX_ATOMIC FP store peephole2): Ditto.
+ 	(FILD_ATOMIC/FIST_ATOMIC FP store peephole2 with mem blockage): New.
+ 	(LDX_ATOMIC/LDX_ATOMIC FP storepeephole2 with mem blockage): Ditto.
+ 
+ 2017-10-14  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* target-insns.def: Add memory_blockage.
+ 	* optabs.c (expand_memory_blockage): New function.
+ 	(expand_asm_memory_barrier): Rename ...
+ 	(expand_asm_memory_blockage): ... to this.
+ 	(expand_mem_thread_fence): Call expand_memory_blockage
+ 	instead of expand_asm_memory_barrier.
+ 	(expand_mem_singnal_fence): Ditto.
+ 	(expand_atomic_load): Ditto.
+ 	(expand_atomic_store): Ditto.
+ 	* doc/md.texi (Standard Pattern Names For Generation):
+ 	Document memory_blockage instruction pattern.
+ 
+ 2017-10-13  Sebastian Perta  <sebastian.perta@renesas.com>
+ 
+ 	* config/rl78/rl78.c (rl78_emit_libcall): New function.
+ 	* config/rl78/rl78-protos.h (rl78_emit_libcall): New function.
+ 	* config/rl78/rl78.md: New define_expand "adddi3".
+ 
+ 2017-10-13  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* cfghooks.c (verify_flow_info): Disable check that all probabilities
+ 	are set correctly.
+ 
+ 2017-10-13  Jeff Law  <law@redhat.com>
+ 
+ 	* tree-ssa-reassoc.c (reassociate_bb): Clarify code slighly.
+ 
+ 2017-10-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/82274
+ 	* internal-fn.c (expand_mul_overflow): If both operands have
+ 	the same highpart of -1 or 0 and the topmost bit of lowpart
+ 	is different, overflow is if res <= 0 rather than res < 0.
+ 
+ 2017-10-13  Pat Haugen  <pthaugen@us.ibm.com>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost): Remove
+ 	TARGET_P9_VECTOR code for unaligned_load case.
+ 
+ 2017-10-13  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* cfghooks.c (verify_flow_info): Check that edge probabilities are set.
+ 
+ 2017-10-13  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* tree-core.h (tree_contains_struct): Make bool.
+ 	* tree.c (tree_contains_struct): Likewise.
+ 	* tree.h (MARK_TS_BASE): Remove do ... while (0) idiom.
+ 	(MARK_TS_TYPED, MARK_TS_COMMON, MARK_TS_TYPE_COMMON,
+ 	MARK_TS_TYPE_WITH_LANG_SPECIFIC, MARK_TS_DECL_MINIMAL,
+ 	MARK_TS_DECL_COMMON, MARK_TS_DECL_WRTL, MARK_TS_DECL_WITH_VIS,
+ 	MARK_TS_DECL_NON_COMMON): Likewise, use comma operator.
+ 
+ 2017-10-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	* graphite-isl-ast-to-gimple.c
+ 	(translate_isl_ast_to_gimple::get_rename_from_scev): Remove unused
+ 	parameters and dominance check.
+ 	(translate_isl_ast_to_gimple::graphite_copy_stmts_from_block): Adjust.
+ 	(translate_isl_ast_to_gimple::copy_bb_and_scalar_dependences): Likewise.
+ 	(translate_isl_ast_to_gimple::graphite_regenerate_ast_isl):
+ 	Do not update SSA form here or do intermediate IL verification.
+ 	* graphite.c: Include tree-ssa.h and tree-into-ssa.h.
+ 	(graphite_initialize): Remove check on the number of loops in
+ 	the function and inline into graphite_transform_loops.
+ 	(graphite_finalize): Inline into graphite_transform_loops.
+ 	(graphite_transform_loops): Perform SSA update and IL verification
+ 	here.
+ 	* params.def (PARAM_GRAPHITE_MIN_LOOPS_PER_FUNCTION): Remove.
+ 
+ 2017-10-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	* graphite-isl-ast-to-gimple.c (max_mode_int_precision,
+ 	graphite_expression_type_precision): Avoid global constructor
+ 	by moving ...
+ 	(translate_isl_ast_to_gimple::translate_isl_ast_to_gimple): Here.
+ 	(translate_isl_ast_to_gimple::graphite_expr_type): Add type member.
+ 	(translate_isl_ast_to_gimple::translate_isl_ast_node_for): Use it.
+ 	(translate_isl_ast_to_gimple::build_iv_mapping): Likewise.
+ 	(translate_isl_ast_to_gimple::graphite_create_new_guard): Likewise.
+ 	* graphite-sese-to-poly.c (build_original_schedule): Return nothing.
+ 
+ 2017-10-13  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/82499
+ 	* config/i386/i386.h (ix86_red_zone_size): New.
+ 	* config/i386/i386.md (push peephole2s): Replace
+ 	"!ix86_using_red_zone ()" with "ix86_red_zone_size == 0".
+ 
+ 2017-10-13  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* combine.c (can_change_dest_mode): Reject changes in
+ 	REGMODE_NATURAL_SIZE.
+ 
+ 2017-10-13  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* cfgexpand.c (expand_debug_expr): Use GET_MODE_UNIT_BITSIZE.
+ 	(expand_debug_source_expr): Likewise.
+ 	* combine.c (combine_simplify_rtx): Likewise.
+ 	* cse.c (fold_rtx): Likewise.
+ 	* fwprop.c (canonicalize_address): Likewise.
+ 	* targhooks.c (default_shift_truncation_mask): Likewise.
+ 
+ 2017-10-13  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* optabs.c (add_equal_note): Use GET_MODE_UNIT_SIZE.
+ 	(widened_mode): Likewise.
+ 	(expand_unop): Likewise.
+ 	* ree.c (transform_ifelse): Likewise.
+ 	(merge_def_and_ext): Likewise.
+ 	(combine_reaching_defs): Likewise.
+ 	* simplify-rtx.c (simplify_unary_operation_1): Likewise.
+ 
+ 2017-10-13  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* caller-save.c (replace_reg_with_saved_mem): Use byte_lowpart_offset.
+ 	* combine.c (gen_lowpart_for_combine): Likewise.
+ 	* dwarf2out.c (rtl_for_decl_location): Likewise.
+ 	* final.c (alter_subreg): Likewise.
+ 	* rtlhooks.c (gen_lowpart_general): Likewise.
+ 	(gen_lowpart_if_possible): Likewise.
+ 
+ 2017-10-13  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* calls.c (expand_call): Use subreg_lowpart_offset.
+ 	* cse.c (cse_insn): Likewise.
+ 	* regcprop.c (copy_value): Likewise.
+ 	(copyprop_hardreg_forward_1): Likewise.
+ 
+ 2017-10-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/82524
+ 	* config/i386/i386.md (addqi_ext_1, andqi_ext_1,
+ 	*andqi_ext_1_cc, *<code>qi_ext_1, *xorqi_ext_1_cc): Change
+ 	=Q constraints to +Q and into insn condition add check
+ 	that operands[0] and operands[1] are equal.
+ 	(*addqi_ext_2, *andqi_ext_2, *<code>qi_ext_2): Change
+ 	=Q constraints to +Q and into insn condition add check
+ 	that operands[0] is equal to either operands[1] or operands[2].
+ 
+ 	PR target/82498
+ 	* fold-const.c (fold_binary_loc) <bit_rotate>: Code cleanups,
+ 	instead of handling MINUS_EXPR twice (once for each argument),
+ 	canonicalize operand order and handle just once, use rtype where
+ 	possible.  Handle (A << B) | (A >> (-B & (Z - 1))).
+ 
+ 	PR target/82498
+ 	* config/i386/ia32intrin.h (__rold, __rord, __rolq, __rorq): Allow
+ 	any values of __C while still being pattern recognizable as a simple
+ 	rotate instruction.
+ 
+ 2017-10-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/82451
+ 	Revert
+ 	2017-10-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/82355
+ 	* graphite-isl-ast-to-gimple.c (build_iv_mapping): Also build
+ 	a mapping for the enclosing loop but avoid generating one for
+ 	the loop tree root.
+ 	(copy_bb_and_scalar_dependences): Remove premature codegen
+ 	error on PHIs in blocks duplicated into multiple places.
+ 	* graphite-scop-detection.c
+ 	(scop_detection::stmt_has_simple_data_refs_p): For a loop not
+ 	in the region use it as loop and nest to analyze the DR in.
+ 	(try_generate_gimple_bb): Likewise.
+ 	* graphite-sese-to-poly.c (extract_affine_chrec): Adjust.
+ 	(add_loop_constraints): For blocks in a loop not in the region
+ 	create a dimension with a single iteration.
+ 	* sese.h (gbb_loop_at_index): Remove assert.
+ 
+ 	* cfgloop.c (loop_preheader_edge): For the loop tree root
+ 	return the single successor of the entry block.
+ 	* graphite-isl-ast-to-gimple.c (graphite_regenerate_ast_isl):
+ 	Reset the SCEV hashtable and niters.
+ 	* graphite-scop-detection.c
+ 	(scop_detection::graphite_can_represent_scev): Add SCOP parameter,
+ 	assert that we only have POLYNOMIAL_CHREC that vary in loops
+ 	contained in the region.
+ 	(scop_detection::graphite_can_represent_expr): Adjust.
+ 	(scop_detection::stmt_has_simple_data_refs_p): For loops
+ 	not in the region set loop to NULL.  The nest is now the
+ 	entry edge to the region.
+ 	(try_generate_gimple_bb): Likewise.
+ 	* sese.c (scalar_evolution_in_region): Adjust for
+ 	instantiate_scev change.
+ 	* tree-data-ref.h (graphite_find_data_references_in_stmt):
+ 	Make nest parameter the edge into the region.
+ 	(create_data_ref): Likewise.
+ 	* tree-data-ref.c (dr_analyze_indices): Make nest parameter an
+ 	entry edge into a region and adjust instantiate_scev calls.
+ 	(create_data_ref): Likewise.
+ 	(graphite_find_data_references_in_stmt): Likewise.
+ 	(find_data_references_in_stmt): Pass the loop preheader edge
+ 	from the nest argument.
+ 	* tree-scalar-evolution.h (instantiate_scev): Make instantiate_below
+ 	parameter the edge into the region.
+ 	(instantiate_parameters): Use the loop preheader edge as entry.
+ 	* tree-scalar-evolution.c (analyze_scalar_evolution): Handle
+ 	NULL loop.
+ 	(get_instantiated_value_entry): Make instantiate_below parameter
+ 	the edge into the region.
+ 	(instantiate_scev_name): Likewise.  Adjust dominance checks,
+ 	when we cannot use loop-based instantiation instantiate by
+ 	walking use-def chains.
+ 	(instantiate_scev_poly): Adjust.
+ 	(instantiate_scev_binary): Likewise.
+ 	(instantiate_scev_convert): Likewise.
+ 	(instantiate_scev_not): Likewise.
+ 	(instantiate_array_ref): Remove.
+ 	(instantiate_scev_3): Likewise.
+ 	(instantiate_scev_2): Likewise.
+ 	(instantiate_scev_1): Likewise.
+ 	(instantiate_scev_r): Do not blindly handle N-operand trees.
+ 	Do not instantiate array-refs.  Handle all constants and invariants.
+ 	(instantiate_scev): Make instantiate_below parameter
+ 	the edge into the region.
+ 	(resolve_mixers): Use the loop preheader edge for the region
+ 	parameter to instantiate_scev_r.
+ 	* tree-ssa-loop-prefetch.c (determine_loop_nest_reuse): Adjust.
+ 
+ 2017-10-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/82525
+ 	* graphite-isl-ast-to-gimple.c
+ 	(translate_isl_ast_to_gimple::widest_int_from_isl_expr_int): Split
+ 	out from ...
+ 	(translate_isl_ast_to_gimple::gcc_expression_from_isl_expr_int): Here.
+ 	Fail code generation when we cannot represent the isl integer.
+ 	(binary_op_to_tree): Elide modulo operations that are no-ops
+ 	in the type we code generate.  Remove now superfluous code
+ 	generation errors.
+ 
+ 2017-10-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	* graphite-scop-detection.c (loop_ivs_can_be_represented): Remove.
+ 	(scop_detection::harmful_loop_in_region): Remove premature
+ 	IV type restriction.
+ 	(scop_detection::graphite_can_represent_scev): We can handle
+ 	pointer IVs just fine.
+ 
+ 2017-10-13  Alan Modra  <amodra@gmail.com>
+ 
+ 	* doc/extend.texi (Extended Asm <Clobbers>): Rename to
+ 	"Clobbers and Scratch Registers".  Add paragraph on
+ 	alternative to clobbers for scratch registers and OpenBLAS
+ 	example.
+ 
+ 2017-10-13  Alan Modra  <amodra@gmail.com>
+ 
+ 	* doc/extend.texi (Clobbers): Correct vax example.  Delete old
+ 	example of a memory input for a string of known length.  Move
+ 	commentary out of table.  Add a number of new examples
+ 	covering array memory inputs.
+ 
+ 2017-10-12  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR tree-optimization/82493
+ 	* sbitmap.c (bitmap_bit_in_range_p): Fix the implementation.
+ 	(test_range_functions): New function.
+ 	(sbitmap_c_tests): Likewise.
+ 	* selftest-run-tests.c (selftest::run_tests): Run new tests.
+ 	* selftest.h (sbitmap_c_tests): New function.
+ 
+ 	* tree-ssa-dse.c (live_bytes_read): Fix thinko.
+ 
+ 2017-10-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	* config/rs6000/amo.h: Fix spacing issue.
+ 
+ 2017-10-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/82498
+ 	* config/i386/i386.md (*ashl<mode>3_mask_1,
+ 	*<shift_insn><mode>3_mask_1, *<rotate_insn><mode>3_mask_1,
+ 	*<btsc><mode>_mask_1, *btr<mode>_mask_1): New define_insn_and_split
+ 	patterns.
+ 
+ 2017-10-12  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* profile-count.h (safe_scale_64bit): Fix GCC4.x path.
+ 	(profile_probability): Set max_probability
+ 	to (uint32_t) 1 << (n_bits - 2) and update accessors to avoid overlfows
+ 	in temporaries.
+ 	* profile-count.c (profile_probability::differs_from_p): Do not
+ 	rely on max_probaiblity == 10000
+ 
+ 2017-10-12  Jeff Law  <law@redhat.com>
+ 
+ 	* tree-ssa-dse.c (valid_ao_ref_for_dse): Reject ao_refs with
+ 	negative offsets.
+ 
+ 2017-10-12  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR other/82301
+ 	PR c/82435
+ 	* cgraphunit.c (maybe_diag_incompatible_alias): New function.
+ 	(handle_alias_pairs): Call it.
+ 	* common.opt (-Wattribute-alias): New option.
+ 	* doc/extend.texi (ifunc attribute): Discuss C++ specifics.
+ 	* doc/invoke.texi (-Wattribute-alias): Document.
+ 
+ 2017-10-12  Vladimir Makarov  <vmakarov@redhat.com>
+ 
+ 	Revert
+ 	2017-10-11  Vladimir Makarov  <vmakarov@redhat.com>
+ 	PR sanitizer/82353
+ 	* lra.c (collect_non_operand_hard_regs): Don't ignore operator
+ 	locations.
+ 	* lra-lives.c (bb_killed_pseudos, bb_gen_pseudos): Move up.
+ 	(make_hard_regno_born, make_hard_regno_dead): Update
+ 	bb_killed_pseudos and bb_gen_pseudos.
+ 
+ 2017-10-12  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* config/i386/x86-tune-sched.c (ix86_adjust_cost): Fix Zen support.
+ 
+ 2017-10-12  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/alpha/alpha.c (alpha_split_conditional_move):
+ 	Use std::swap instead of manually swapping.
+ 	(alpha_stdarg_optimize_hook): Ditto.
+ 	(alpha_canonicalize_comparison): Ditto.
+ 
+ 2017-10-12  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-loop-distribution.c (struct builtin_info): New struct.
+ 	(struct partition): Refactor fields into struct builtin_info.
+ 	(partition_free): Free struct builtin_info.
+ 	(build_size_arg_loc, build_addr_arg_loc): Delete.
+ 	(generate_memset_builtin, generate_memcpy_builtin): Get memory range
+ 	information from struct builtin_info.
+ 	(find_single_drs): New function refactored from classify_partition.
+ 	Also moved builtin validity checks to this function.
+ 	(compute_access_range, alloc_builtin): New functions.
+ 	(classify_builtin_st, classify_builtin_ldst): New functions.
+ 	(classify_partition): Refactor code into functions find_single_drs,
+ 	classify_builtin_st and classify_builtin_ldst.
+ 	(distribute_loop): Don't do runtime alias check when distributing
+ 	loop nest.
+ 	(find_seed_stmts_for_distribution): New function.
+ 	(pass_loop_distribution::execute): Refactor code finding seed
+ 	stmts into above function.  Support distribution for the innermost
+ 	two-level loop nest.  Adjust dump information.
+ 
+ 2017-10-12  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-loop-distribution.c: Adjust the general comment.
+ 	(NUM_PARTITION_THRESHOLD): New macro.
+ 	(ssa_name_has_uses_outside_loop_p): Support loop nest distribution.
+ 	(classify_partition): Skip builtin pattern of loop nest's inner loop.
+ 	(merge_dep_scc_partitions): New parameter ignore_alias_p and use it
+ 	in call to build_partition_graph.
+ 	(finalize_partitions): New parameter.  Make loop distribution more
+ 	conservative by fusing more partitions.
+ 	(distribute_loop): Don't do runtime alias check in case of loop nest
+ 	distribution.
+ 	(find_seed_stmts_for_distribution): New function.
+ 	(prepare_perfect_loop_nest): New function.
+ 	(pass_loop_distribution::execute): Refactor code finding seed stmts
+ 	and loop nest into above functions.  Support loop nest distribution.
+ 	Adjust dump information accordingly.
+ 
+ 2017-10-12  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-loop-distribution.c (break_alias_scc_partitions): Add comment
+ 	and set PTYPE_SEQUENTIAL for merged partition.
+ 
+ 2017-10-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/69728
+ 	Revert
+ 	2017-09-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/69728
+ 	* graphite-sese-to-poly.c (schedule_error): New global.
+ 	(add_loop_schedule): Handle empty domain by failing the
+ 	schedule.
+ 	(build_original_schedule): Handle schedule_error.
+ 
+ 	* graphite-sese-to-poly.c (add_loop_schedule): Handle empty
+ 	domain by returning an unchanged schedule.
+ 
+ 2017-10-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* genrecog.c (validate_pattern): For VEC_SELECT verify that
+ 	CONST_INT selectors are 0 to GET_MODE_NUNITS (imode) - 1.
+ 
+ 2017-10-12  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* Makefile.in (TAGS): Merge all the *.def files into one pattern.
+ 	Handle params.def.
+ 
+ 2017-10-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/82159
+ 	* expr.c (store_field): Don't optimize away bitsize == 0 store
+ 	from CALL_EXPR with addressable return type.
+ 
+ 2017-10-11  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/rs6000.h (TARGET_ISEL64): Delete.
+ 	* config/rs6000/rs6000.md (sel): Delete mode attribute.
+ 	(mov<mode>cc, isel_signed_<mode>, isel_unsigned_<mode>,
+ 	*isel_reversed_signed_<mode>, *isel_reversed_unsigned_<mode>): Use
+ 	TARGET_ISEL instead of TARGET_ISEL<sel>.
+ 
+ 2017-10-11  David Edelsohn  <dje.gcc@gmail.com>
+ 
+ 	* config/rs6000/rs6000.c
+ 	(rs6000_xcoff_asm_output_aligned_decl_common): Test for NULL decl.
+ 
+ 2017-10-11  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/predicates.md (zero_constant, all_ones_constant):
+ 	Move up in file.
+ 	(reg_or_cint_operand): Fix comment.
+ 	(reg_or_zero_operand): New predicate.
+ 	* config/rs6000/rs6000-protos.h (output_isel): Delete.
+ 	* config/rs6000/rs6000.c (output_isel): Delete.
+ 	* config/rs6000/rs6000.md (isel_signed_<mode>): Use reg_or_zero_operand
+ 	instead of reg_or_cint_operand.  Output instruction directly (not via
+ 	output_isel).
+ 	(isel_unsigned_<mode>): Ditto.
+ 	(*isel_reversed_signed_<mode>): Use reg_or_zero_operand instead of
+ 	gpc_reg_operand.  Add an instruction alternative for this.  Output
+ 	instruction directly.
+ 	(*isel_reversed_unsigned_<mode>): Ditto.
+ 
+ 2017-10-11  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.c (ix86_canonicalize_comparison): New function.
+ 	(TARGET_CANONICALIZE_COMPARISON): Define.
+ 
+ 2017-10-11  Qing Zhao  <qing.zhao@oracle.com>
+ 
+ 	PR target/81422
+ 	* config/aarch64/aarch64.c (aarch64_load_symref_appropriately):
+ 	Check whether the dest is REG before adding REG_EQUIV note.
+ 
+ 2017-10-11  Vladimir Makarov  <vmakarov@redhat.com>
+ 
+ 	PR sanitizer/82353
+ 	* lra.c (collect_non_operand_hard_regs): Don't ignore operator
+ 	locations.
+ 	* lra-lives.c (bb_killed_pseudos, bb_gen_pseudos): Move up.
+ 	(make_hard_regno_born, make_hard_regno_dead): Update
+ 	bb_killed_pseudos and bb_gen_pseudos.
+ 
+ 2017-10-11  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* incpath.h (enum incpath_kind): Name enum, prefix values.
+ 	(add_path, add_cpp_dir_path, get_added_cpp_dirs): Use incpath_kind.
+ 	* incpath.c (heads, tails): Use INC_MAX.
+ 	(add_env_var_paths, add_standard_paths): Use incpath_kind.
+ 	(merge_include_chains, split_quote_chain,
+ 	register_include_chains): Update incpath_kind names.
+ 	(add_cpp_dir_path, add_path, get_added_cpp_dirs): Use incpath_kind.
+ 	* config/darwin-c.c (add_system_framework_path): Update incpath_kind
+ 	names.
+ 	(add_framework_path, darwin_register_objc_includes): Likewise.
+ 	* config/vms/vms-c.c (vms_c_register_includes): Likewise.
+ 
+ 2017-10-11  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.md (*cmp<X87MODEF:mode>_<SWI24:mode>_i387):
+ 	Do not use float_operator operator predicate.
+ 	(*cmp<X87MODEF:mode>_<SWI24:mode>_cc_i387): Ditto.
+ 	* config/i386/predicates.md (float_operator): Remove predicate.
+ 
+ 2017-10-11  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.md (*jcc<mode>_0_i387): Remove insn pattern.
+ 	(*jccxf_i387): Ditto.
+ 	(*jcc<mode>_i387): Ditto.
+ 	(*jccu<mode>_i387): Ditto.
+ 	(*jcc<X87MODEF:mode>_<SWI24:mode>_i387): Ditto.
+ 	(*jcc_*_i387 splitters): Remove.
+ 	* config/i386/i386-protos.h (ix86_split_fp_branch): Remove prototype.
+ 	* config/i386/i386.c (ix86_split_fp_branch): Remove.
+ 	* config/i386/predicates.md (ix86_swapped_fp_comparison_operator):
+ 	Remove predicate.
+ 
+ 2017-10-11  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* profile-count.h (slow_safe_scale_64bit): New function.
+ 	(safe_scale_64bit): New inline.
+ 	(profile_count::max_safe_multiplier): Remove; use safe_scale_64bit.
+ 	* profile-count.c: Include wide-int.h
+ 	(slow_safe_scale_64bit): New.
+ 
+ 2017-10-11  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* tree.h (DECL_ASSEMBLER_NAME_SET_P): Don't check
+ 	HAS_DECL_ASSEMBLER_NAME_P.
+ 	* gimple-expr.c (gimple_decl_printable_name: Check
+ 	HAS_DECL_ASSEMBLER_NAME_P too.
+ 	* ipa-utils.h (type_in_anonymous_namespace_p): Check
+ 	DECL_ASSEMBLER_NAME_SET_P of TYPE_NAME.
+ 	(odr_type_p): No need to assert TYPE_NAME is a TYPE_DECL.
+ 	* passes.c (rest_of_decl_compilation): Check
+ 	HAS_DECL_ASSEMBLER_NAME_P too.
+ 	* recog.c (verify_changes): Likewise.
+ 	* tree-pretty-print.c (dump_decl_name): Likewise.
+ 	* tree-ssa-structalias.c (alias_get_name): Likewise.  Reimplement.
+ 
+ 	* tree.h (DECL_ASSEMBLER_NAME_RAW): New.
+ 	(SET_DECL_ASSEMBLER_NAME): Use it.
+ 	(DECL_ASSEMBLER_NAME_SET_P): Likewise.
+ 	(COPY_DECL_ASSEMBLER_NAME): Likewise.
+ 	* tree.c (decl_assembler_name): Use DECL_ASSEMBLER_NAME_RAW.
+ 
+ 2017-10-11  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* config.gcc (i386, x86_64): Add extra objects.
+ 	* config/i386/i386-protos.h (ix86_rip_relative_addr_p): Declare.
+ 	(ix86_min_insn_size): Declare.
+ 	(ix86_issue_rate): Declare.
+ 	(ix86_adjust_cost): Declare.
+ 	(ia32_multipass_dfa_lookahead): Declare.
+ 	(ix86_macro_fusion_p): Declare.
+ 	(ix86_macro_fusion_pair_p): Declare.
+ 	(ix86_bd_has_dispatch): Declare.
+ 	(ix86_bd_do_dispatch): Declare.
+ 	(ix86_core2i7_init_hooks): Declare.
+ 	(ix86_atom_sched_reorder): Declare.
+ 	* config/i386/i386.c Move all CPU cost tables to x86-tune-costs.h.
+ 	(COSTS_N_BYTES): Move to x86-tune-costs.h.
+ 	(DUMMY_STRINGOP_ALGS):Move to x86-tune-costs.h.
+ 	(rip_relative_addr_p): Rename to ...
+ 	(ix86_rip_relative_addr_p): ... this one; export.
+ 	(memory_address_length): Update.
+ 	(ix86_issue_rate): Move to x86-tune-sched.c.
+ 	(ix86_flags_dependent): Move to x86-tune-sched.c.
+ 	(ix86_agi_dependent): Move to x86-tune-sched.c.
+ 	(exact_dependency_1): Move to x86-tune-sched.c.
+ 	(exact_store_load_dependency): Move to x86-tune-sched.c.
+ 	(ix86_adjust_cost): Move to x86-tune-sched.c.
+ 	(ia32_multipass_dfa_lookahead): Move to x86-tune-sched.c.
+ 	(ix86_macro_fusion_p): Move to x86-tune-sched.c.
+ 	(ix86_macro_fusion_pair_p): Move to x86-tune-sched.c.
+ 	(do_reorder_for_imul): Move to x86-tune-sched-atom.c.
+ 	(swap_top_of_ready_list): Move to x86-tune-sched-atom.c.
+ 	(ix86_sched_reorder): Move to x86-tune-sched-atom.c.
+ 	(core2i7_first_cycle_multipass_init): Move to x86-tune-sched-core.c.
+ 	(core2i7_dfa_post_advance_cycle): Move to x86-tune-sched-core.c.
+ 	(min_insn_size): Rename to ...
+ 	(ix86_min_insn_size): ... this one; export.
+ 	(core2i7_first_cycle_multipass_begin): Move to x86-tune-sched-core.c.
+ 	(core2i7_first_cycle_multipass_issue): Move to x86-tune-sched-core.c.
+ 	(core2i7_first_cycle_multipass_backtrack): Move to
+ 	x86-tune-sched-core.c.
+ 	(core2i7_first_cycle_multipass_end): Move to x86-tune-sched-core.c.
+ 	(core2i7_first_cycle_multipass_fini): Move to x86-tune-sched-core.c.
+ 	(ix86_sched_init_global): Break up logic to ix86_core2i7_init_hooks.
+ 	(ix86_avoid_jump_mispredicts): Update.
+ 	(TARGET_SCHED_DISPATCH): Move to ix86-tune-sched-bd.c.
+ 	(TARGET_SCHED_DISPATCH_DO): Move to ix86-tune-sched-bd.c.
+ 	(TARGET_SCHED_REORDER): Move to ix86-tune-sched-bd.c.
+ 	(DISPATCH_WINDOW_SIZE): Move to ix86-tune-sched-bd.c.
+ 	(MAX_DISPATCH_WINDOWS): Move to ix86-tune-sched-bd.c.
+ 	(MAX_INSN): Move to ix86-tune-sched-bd.c.
+ 	(MAX_IMM): Move to ix86-tune-sched-bd.c.
+ 	(MAX_IMM_SIZE): Move to ix86-tune-sched-bd.c.
+ 	(MAX_IMM_32): Move to ix86-tune-sched-bd.c.
+ 	(MAX_IMM_64): Move to ix86-tune-sched-bd.c.
+ 	(MAX_LOAD): Move to ix86-tune-sched-bd.c.
+ 	(MAX_STORE): Move to ix86-tune-sched-bd.c.
+ 	(BIG): Move to ix86-tune-sched-bd.c.
+ 	(enum dispatch_group): Move to ix86-tune-sched-bd.c.
+ 	(enum insn_path): Move to ix86-tune-sched-bd.c.
+ 	(get_mem_group): Move to ix86-tune-sched-bd.c.
+ 	(is_cmp): Move to ix86-tune-sched-bd.c.
+ 	(dispatch_violation): Move to ix86-tune-sched-bd.c.
+ 	(is_branch): Move to ix86-tune-sched-bd.c.
+ 	(is_prefetch): Move to ix86-tune-sched-bd.c.
+ 	(init_window): Move to ix86-tune-sched-bd.c.
+ 	(allocate_window): Move to ix86-tune-sched-bd.c.
+ 	(init_dispatch_sched): Move to ix86-tune-sched-bd.c.
+ 	(is_end_basic_block): Move to ix86-tune-sched-bd.c.
+ 	(process_end_window): Move to ix86-tune-sched-bd.c.
+ 	(allocate_next_window): Move to ix86-tune-sched-bd.c.
+ 	(find_constant): Move to ix86-tune-sched-bd.c.
+ 	(get_num_immediates): Move to ix86-tune-sched-bd.c.
+ 	(has_immediate): Move to ix86-tune-sched-bd.c.
+ 	(get_insn_path): Move to ix86-tune-sched-bd.c.
+ 	(get_insn_group): Move to ix86-tune-sched-bd.c.
+ 	(count_num_restricted): Move to ix86-tune-sched-bd.c.
+ 	(fits_dispatch_window): Move to ix86-tune-sched-bd.c.
+ 	(add_insn_window): Move to ix86-tune-sched-bd.c.
+ 	(add_to_dispatch_window): Move to ix86-tune-sched-bd.c.
+ 	(debug_dispatch_window_file): Move to ix86-tune-sched-bd.c.
+ 	(debug_dispatch_window): Move to ix86-tune-sched-bd.c.
+ 	(debug_insn_dispatch_info_file): Move to ix86-tune-sched-bd.c.
+ 	(debug_ready_dispatch): Move to ix86-tune-sched-bd.c.
+ 	(do_dispatch): Move to ix86-tune-sched-bd.c.
+ 	(has_dispatch): Move to ix86-tune-sched-bd.c.
+ 	* config/i386/t-i386: Add new object files.
+ 	* config/i386/x86-tune-costs.h: 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.
+ 
+ 2017-10-11  Liu Hao  <lh_mouse@126.com>
+ 
+ 	* pretty-print.c [_WIN32] (colorize_init): Remove.  Use
+ 	the generic version below instead.
+ 	(should_colorize): Recognize Windows consoles as terminals
+ 	for MinGW targets.
+ 	* pretty-print.c [__MINGW32__] (write_all): New function.
+ 	[__MINGW32__] (find_esc_head): Likewise.
+ 	[__MINGW32__] (find_esc_terminator): Likewise.
+ 	[__MINGW32__] (eat_esc_sequence): Likewise.
+ 	[__MINGW32__] (mingw_ansi_fputs): New function that handles
+ 	ANSI escape codes.
+ 	(pp_write_text_to_stream): Use mingw_ansi_fputs instead of fputs
+ 	for MinGW targets.
+ 
+ 2017-10-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-loop-niter.c (infer_loop_bounds_from_pointer_arith):
+ 	Properly call analyze_scalar_evolution with the loop of the stmt.
+ 
+ 2017-10-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree.def (POLYNOMIAL_CHREC): Remove CHREC_VARIABLE tree operand.
+ 	* tree-core.h (tree_base): Add chrec_var union member.
+ 	* tree.h (CHREC_VAR): Remove.
+ 	(CHREC_LEFT, CHREC_RIGHT, CHREC_VARIABLE): Adjust.
+ 	* tree-chrec.h (build_polynomial_chrec): Adjust.
+ 	* tree-chrec.c (reset_evolution_in_loop): Use build_polynomial_chrec.
+ 	* tree-pretty-print.c (dump_generic_node): Use CHREC_VARIABLE.
+ 
+ 2017-10-11  Marc Glisse  <marc.glisse@inria.fr>
+ 
+ 	* fold-const.c (fold_binary_loc) [X +- Y CMP X]: Move ...
+ 	* match.pd: ... here.
+ 	((T) X == (T) Y): Relax condition.
+ 
+ 2017-10-11  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	PR tree-optimization/82472
+ 	* tree-loop-distribution.c (sort_partitions_by_post_order): Refine
+ 	comment.
+ 	(break_alias_scc_partitions): Update postorder number.
+ 
+ 2017-10-11  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR sanitizer/82490
+ 	* opts.c (parse_no_sanitize_attribute): Do not use error_value
+ 	variable.
+ 	* opts.h (parse_no_sanitize_attribute): Remove last argument.
+ 
+ 2017-10-11  Martin Liska  <mliska@suse.cz>
+ 
+ 	* print-rtl.c (print_insn): Move declaration of idbuf
+ 	to same scope as name.
+ 
+ 2017-10-11  Martin Liska  <mliska@suse.cz>
+ 
+ 	Revert r253637:
+ 
+ 	PR sanitizer/82484
+ 	* sanopt.c (sanitize_rewrite_addressable_params): Do not handle
+ 	volatile arguments.
+ 
+ 2017-10-11  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR sanitizer/82484
+ 	* sanopt.c (sanitize_rewrite_addressable_params): Do not handle
+ 	volatile arguments.
+ 
+ 2017-10-11  Adhemerval Zanella  <adhemerval.zanella@linaro.org>
+ 
+ 	* config.gcc (default_gnu_indirect_function): Default to yes for
+ 	arm*-*-linux* with glibc.
+ 
+ 2017-10-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-scalar-evolution.c (get_scalar_evolution): Handle
+ 	default-defs and types we do not want to analyze.
+ 	(interpret_loop_phi): Replace unreachable code with an assert.
+ 	(compute_scalar_evolution_in_loop): Remove and inline ...
+ 	(analyze_scalar_evolution_1): ... here, replacing condition with
+ 	what makes the intent clearer.  Remove handling of cases
+ 	get_scalar_evolution now handles.
+ 
+ 2017-10-10  Jim Wilson  <wilson@tuliptree.org>
+ 
+ 	PR rtl-optimization/81434
+ 	* haifa-sched.c (prune_ready_list): Init min_cost_group to 0.  Update
+ 	comment for main loop.  In sched_group_found if, also add checks for
+ 	pass and min_cost_group.
+ 
+ 2017-10-10  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/rs6000.c (TARGET_INSN_COST): New.
+ 	(rs6000_insn_cost): New function.
+ 	* config/rs6000/rs6000.md (cost): New attribute.
+ 
+ 2017-10-10  Jakub Jelinek  <jakub@redhat.com>
+ 	    H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/79565
+ 	PR target/82483
+ 	* config/i386/i386.c (ix86_init_mmx_sse_builtins): Add
+ 	OPTION_MASK_ISA_MMX for __builtin_ia32_maskmovq,
+ 	__builtin_ia32_vec_ext_v4hi and __builtin_ia32_vec_set_v4hi.
+ 	(ix86_expand_builtin): Treat OPTION_MASK_ISA_MMX similarly
+ 	to OPTION_MASK_ISA_AVX512VL - builtins that have both
+ 	OPTION_MASK_ISA_MMX and some other bit set require both
+ 	mmx and the ISAs without the mmx bit.
+ 	* config/i386/i386-builtin.def (__builtin_ia32_cvtps2pi,
+ 	__builtin_ia32_cvttps2pi, __builtin_ia32_cvtpi2ps,
+ 	__builtin_ia32_pavgb, __builtin_ia32_pavgw, __builtin_ia32_pmulhuw,
+ 	__builtin_ia32_pmaxub, __builtin_ia32_pmaxsw, __builtin_ia32_pminub,
+ 	__builtin_ia32_pminsw, __builtin_ia32_psadbw, __builtin_ia32_pmovmskb,
+ 	__builtin_ia32_pshufw, __builtin_ia32_cvtpd2pi,
+ 	__builtin_ia32_cvttpd2pi, __builtin_ia32_cvtpi2pd,
+ 	__builtin_ia32_pmuludq, __builtin_ia32_pabsb, __builtin_ia32_pabsw,
+ 	__builtin_ia32_pabsd, __builtin_ia32_phaddw, __builtin_ia32_phaddd,
+ 	__builtin_ia32_phaddsw, __builtin_ia32_phsubw, __builtin_ia32_phsubd,
+ 	__builtin_ia32_phsubsw, __builtin_ia32_pmaddubsw,
+ 	__builtin_ia32_pmulhrsw, __builtin_ia32_pshufb, __builtin_ia32_psignb,
+ 	__builtin_ia32_psignw, __builtin_ia32_psignd, __builtin_ia32_movntq,
+ 	__builtin_ia32_paddq, __builtin_ia32_psubq, __builtin_ia32_palignr):
+ 	Add OPTION_MASK_ISA_MMX.
+ 
+ 2017-10-10  Andreas Tobler  <andreast@gcc.gnu.org>
+ 
+ 	* config.gcc (armv7*-*-freebsd*): New target.
+ 	(armv6*-*-freebsd*): Remove obsolete TARGET_FREEBSD_ARMv6 define.
+ 
+ 2017-10-10  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* x86-tune.def (X86_TUNE_AVOID_FALSE_DEP_FOR_BMI,
+ 	X86_TUNE_ADJUST_UNROLL, X86_TUNE_ONE_IF_CONV_INSN): Move to right
+ 	spot in the file.
+ 
+ 2017-10-10  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* wide-int.h (wide_int_ref_storage): Make host_dependent_precision
+ 	a template parameter.
+ 	(WIDE_INT_REF_FOR): Update accordingly.
+ 	* tree.h (wi::int_traits <const_tree>): Delete.
+ 	(wi::tree_to_widest_ref, wi::tree_to_offset_ref): New typedefs.
+ 	(wi::to_widest, wi::to_offset): Use them.  Expand commentary.
+ 	(wi::tree_to_wide_ref): New typedef.
+ 	(wi::to_wide): New function.
+ 	* calls.c (get_size_range): Use wi::to_wide when operating on
+ 	trees as wide_ints.
+ 	* cgraph.c (cgraph_node::create_thunk): Likewise.
+ 	* config/i386/i386.c (ix86_data_alignment): Likewise.
+ 	(ix86_local_alignment): Likewise.
+ 	* dbxout.c (stabstr_O): Likewise.
+ 	* dwarf2out.c (add_scalar_info, gen_enumeration_type_die): Likewise.
+ 	* expr.c (const_vector_from_tree): Likewise.
+ 	* fold-const-call.c (host_size_t_cst_p, fold_const_call_1): Likewise.
+ 	* fold-const.c (may_negate_without_overflow_p, negate_expr_p)
+ 	(fold_negate_expr_1, int_const_binop_1, const_binop)
+ 	(fold_convert_const_int_from_real, optimize_bit_field_compare)
+ 	(all_ones_mask_p, sign_bit_p, unextend, extract_muldiv_1)
+ 	(fold_div_compare, fold_single_bit_test, fold_plusminus_mult_expr)
+ 	(pointer_may_wrap_p, expr_not_equal_to, fold_binary_loc)
+ 	(fold_ternary_loc, multiple_of_p, fold_negate_const, fold_abs_const)
+ 	(fold_not_const, round_up_loc): Likewise.
+ 	* gimple-fold.c (gimple_fold_indirect_ref): Likewise.
+ 	* gimple-ssa-warn-alloca.c (alloca_call_type_by_arg): Likewise.
+ 	(alloca_call_type): Likewise.
+ 	* gimple.c (preprocess_case_label_vec_for_gimple): Likewise.
+ 	* godump.c (go_output_typedef): Likewise.
+ 	* graphite-sese-to-poly.c (tree_int_to_gmp): Likewise.
+ 	* internal-fn.c (get_min_precision): Likewise.
+ 	* ipa-cp.c (ipcp_store_vr_results): Likewise.
+ 	* ipa-polymorphic-call.c
+ 	(ipa_polymorphic_call_context::ipa_polymorphic_call_context): Likewise.
+ 	* ipa-prop.c (ipa_print_node_jump_functions_for_edge): Likewise.
+ 	(ipa_modify_call_arguments): Likewise.
+ 	* match.pd: Likewise.
+ 	* omp-low.c (scan_omp_1_op, lower_omp_ordered_clauses): Likewise.
+ 	* print-tree.c (print_node_brief, print_node): Likewise.
+ 	* stmt.c (expand_case): Likewise.
+ 	* stor-layout.c (layout_type): Likewise.
+ 	* tree-affine.c (tree_to_aff_combination): Likewise.
+ 	* tree-cfg.c (group_case_labels_stmt): Likewise.
+ 	* tree-data-ref.c (dr_analyze_indices): Likewise.
+ 	(prune_runtime_alias_test_list): Likewise.
+ 	* tree-dump.c (dequeue_and_dump): Likewise.
+ 	* tree-inline.c (remap_gimple_op_r, copy_tree_body_r): Likewise.
+ 	* tree-predcom.c (is_inv_store_elimination_chain): Likewise.
+ 	* tree-pretty-print.c (dump_generic_node): Likewise.
+ 	* tree-scalar-evolution.c (iv_can_overflow_p): Likewise.
+ 	(simple_iv_with_niters): Likewise.
+ 	* tree-ssa-address.c (addr_for_mem_ref): Likewise.
+ 	* tree-ssa-ccp.c (ccp_finalize, evaluate_stmt): Likewise.
+ 	* tree-ssa-loop-ivopts.c (constant_multiple_of): Likewise.
+ 	* tree-ssa-loop-niter.c (split_to_var_and_offset)
+ 	(refine_value_range_using_guard, number_of_iterations_ne_max)
+ 	(number_of_iterations_lt_to_ne, number_of_iterations_lt)
+ 	(get_cst_init_from_scev, record_nonwrapping_iv)
+ 	(scev_var_range_cant_overflow): Likewise.
+ 	* tree-ssa-phiopt.c (minmax_replacement): Likewise.
+ 	* tree-ssa-pre.c (compute_avail): Likewise.
+ 	* tree-ssa-sccvn.c (vn_reference_fold_indirect): Likewise.
+ 	(vn_reference_maybe_forwprop_address, valueized_wider_op): Likewise.
+ 	* tree-ssa-structalias.c (get_constraint_for_ptr_offset): Likewise.
+ 	* tree-ssa-uninit.c (is_pred_expr_subset_of): Likewise.
+ 	* tree-ssanames.c (set_nonzero_bits, get_nonzero_bits): Likewise.
+ 	* tree-switch-conversion.c (collect_switch_conv_info, array_value_type)
+ 	(dump_case_nodes, try_switch_expansion): Likewise.
+ 	* tree-vect-loop-manip.c (vect_gen_vector_loop_niters): Likewise.
+ 	(vect_do_peeling): Likewise.
+ 	* tree-vect-patterns.c (vect_recog_bool_pattern): Likewise.
+ 	* tree-vect-stmts.c (vectorizable_load): Likewise.
+ 	* tree-vrp.c (compare_values_warnv, vrp_int_const_binop): Likewise.
+ 	(zero_nonzero_bits_from_vr, ranges_from_anti_range): Likewise.
+ 	(extract_range_from_binary_expr_1, adjust_range_with_scev): Likewise.
+ 	(overflow_comparison_p_1, register_edge_assert_for_2): Likewise.
+ 	(is_masked_range_test, find_switch_asserts, maybe_set_nonzero_bits)
+ 	(vrp_evaluate_conditional_warnv_with_ops, intersect_ranges): Likewise.
+ 	(range_fits_type_p, two_valued_val_range_p, vrp_finalize): Likewise.
+ 	(evrp_dom_walker::before_dom_children): Likewise.
+ 	* tree.c (cache_integer_cst, real_value_from_int_cst, integer_zerop)
+ 	(integer_all_onesp, integer_pow2p, integer_nonzerop, tree_log2)
+ 	(tree_floor_log2, tree_ctz, mem_ref_offset, tree_int_cst_sign_bit)
+ 	(tree_int_cst_sgn, get_unwidened, int_fits_type_p): Likewise.
+ 	(get_type_static_bounds, num_ending_zeros, drop_tree_overflow)
+ 	(get_range_pos_neg): Likewise.
+ 	* ubsan.c (ubsan_expand_ptr_ifn): Likewise.
+ 	* config/darwin.c (darwin_mergeable_constant_section): Likewise.
+ 	* config/aarch64/aarch64.c (aapcs_vfp_sub_candidate): Likewise.
+ 	* config/arm/arm.c (aapcs_vfp_sub_candidate): Likewise.
+ 	* config/avr/avr.c (avr_fold_builtin): Likewise.
+ 	* config/bfin/bfin.c (bfin_local_alignment): Likewise.
+ 	* config/msp430/msp430.c (msp430_attr): Likewise.
+ 	* config/nds32/nds32.c (nds32_insert_attributes): Likewise.
+ 	* config/powerpcspe/powerpcspe-c.c
+ 	(altivec_resolve_overloaded_builtin): Likewise.
+ 	* config/powerpcspe/powerpcspe.c (rs6000_aggregate_candidate)
+ 	(rs6000_expand_ternop_builtin): Likewise.
+ 	* config/rs6000/rs6000-c.c
+ 	(altivec_resolve_overloaded_builtin): Likewise.
+ 	* config/rs6000/rs6000.c (rs6000_aggregate_candidate): Likewise.
+ 	(rs6000_expand_ternop_builtin): Likewise.
+ 	* config/s390/s390.c (s390_handle_hotpatch_attribute): Likewise.
+ 
+ 2017-10-10  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-vect-loop-manip.c (rename_variables_in_bb): Rename PHI nodes
+ 	when copying loop nest with only one inner loop.
+ 
+ 2017-10-10  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-cfgcleanup.c (cleanup_tree_cfg_noloop): Avoid compacting
+ 	blocks if SCEV is active.
+ 	* tree-scalar-evolution.c (analyze_scalar_evolution_1): Remove
+ 	dead code.
+ 	(analyze_scalar_evolution): Handle cached evolutions the obvious way.
+ 	(scev_initialize): Assert we are not yet initialized.
+ 
+ 2017-10-10  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-loop-distribution.c (generate_loops_for_partition): Remove
+ 	inner loop's exit stmt by making it always exit the loop, otherwise
+ 	we would generate an infinite empty loop.
+ 
+ 2017-10-10  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-vect-loop-manip.c (slpeel_tree_duplicate_loop_to_edge_cfg): Skip
+ 	renaming variables in new preheader if it's deleted.
+ 
+ 2017-10-10  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-loop-distribution.c (struct partition): Remove unused field
+ 	loops of the structure.
+ 	(partition_alloc, partition_free): Ditto.
+ 	(build_rdg_partition_for_vertex): Ditto.
+ 
+ 2017-10-09  Jeff Law  <law@redhat.com>
+ 
+ 	* targhooks.c (default_stack_clash_protection_final_dynamic_probe): Fix
+ 	return type to match prototype and documentation.
+ 
+ 2010-10-09  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/rs6000.c (processor_costs): Move to ...
+ 	* config/rs6000/rs6000.h: ... here.
+ 	(rs6000_cost): Declare.
+ 
+ 2017-10-09  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* except.c (setjmp_fn): New global variable.
+ 	(init_eh): Initialize it if DONT_USE_BUILTIN_SETJMP is defined.
+ 	(sjlj_emit_function_enter): Call it instead of BUILTIN_SETJMP
+ 	if DONT_USE_BUILTIN_SETJMP is defined.
+ 
+ 2017-10-09  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* target.def (insn_cost): New hook.
+ 	* doc/tm.texi.in (TARGET_INSN_COST): New hook.
+ 	* doc/tm.texi: Regenerate.
+ 	* rtlanal.c (insn_cost): Use the new hook.
+ 
+ 2017-10-09  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* combine.c (combine_validate_cost): Compute the new insn_cost,
+ 	not just pattern_cost.
+ 	(try_combine): Adjust comment.
+ 
+ 2017-10-09  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* cfgrtl.c (rtl_account_profile_record): Replace insn_rtx_cost with
+ 	insn_cost.
+ 	* combine.c (uid_insn_cost): Adjust comment.
+ 	(combine_validate_cost): Adjust comment.  Use pattern_cost instead
+ 	of insn_rtx_cost
+ 	(combine_instructions): Use insn_cost instead of insn_rtx_cost.
+ 	* dse.c (find_shift_sequence): Ditto.
+ 	* ifcvt.c (cheap_bb_rtx_cost_p): Ditto.
+ 	(bb_valid_for_noce_process_p): Use pattern_cost.
+ 	* rtl.h (insn_rtx_cost): Delete.
+ 	(pattern_cost): New prototype.
+ 	(insn_cost): New prototype.
+ 	* rtlanal.c (insn_rtx_cost): Rename to...
+ 	(pattern_cost): ... this.
+ 	(insn_cost): New.
+ 
+ 2017-10-09  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.md (*jcc_2): Remove insn pattern.
+ 	(*jcc<mode>_0_r_i387): Ditto.
+ 	(*jccxf_r_i387): Ditto.
+ 	(*jcc<mode>_r_i387): Ditto.
+ 	(*jccu<mode>_r_i387): Ditto.
+ 	(*jcc<X87MODEF:mode>_<SWI24:mode>_r_i387): Ditto.
+ 	(*jcc): Rename from *jcc_1.
+ 
+ 2017-10-09  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	* config/rs6000/rs6000-p8swap.c (rs6000_analyze_swaps): Process
+ 	deferred rescans after the lvx/stvx recombination pre-pass.
+ 
+ 2017-10-09  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	* config/rs6000/amo.h: New include file to provide ISA 3.0 atomic
+ 	memory operation instruction support.
+ 	* config.gcc (powerpc*-*-*): Include amo.h as an extra header.
+ 	(rs6000-ibm-aix[789]*): Likewise.
+ 	* doc/extend.texi (PowerPC Atomic Memory Operation Functions):
+ 	Document new functions.
+ 
+ 2017-10-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/82397
+ 	* tree-data-ref.c (data_ref_compare_tree): Make sure to return
+ 	equality only for semantically equal trees.
+ 
+ 2017-10-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/82449
+ 	* sese.c (scev_analyzable_p): Check whether the SCEV is linear.
+ 	* tree-chrec.h (evolution_function_is_constant_p): Adjust to
+ 	allow constant addresses.
+ 	* tree-chrec.c (scev_is_linear_expression): Constant evolutions
+ 	are linear.
+ 
+ 2017-10-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	* config/s390/s390-builtins.def (vec_nabs, vec_vfi): Fix builtin
+ 	flags.
+ 
+ 2017-10-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	PR target/82463
+ 	* config/s390/vecintrin.h (vec_madd, vec_msub): Fix macro
+ 	definitions.
+ 
+ 2017-10-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	PR target/82465
+ 	* config/s390/s390-builtins.def (vec_sqrt): Fix builtin flags.
+ 
+ 2017-10-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/82464
+ 	* config/s390/s390-builtins.def (s390_vec_xor_flt_a,
+ 	s390_vec_xor_flt_b, s390_vec_xor_flt_c): New.
+ 
+ 2017-10-09  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* wide-int.h (WI_BINARY_OPERATOR_RESULT): New macro.
+ 	(WI_BINARY_PREDICATE_RESULT): Likewise.
+ 	(wi::binary_traits::operator_result): New type.
+ 	(wi::binary_traits::predicate_result): Likewise.
+ 	(generic_wide_int::operator~, unary generic_wide_int::operator-)
+ 	(generic_wide_int::operator==, generic_wide_int::operator!=)
+ 	(generic_wide_int::operator&, generic_wide_int::and_not)
+ 	(generic_wide_int::operator|, generic_wide_int::or_not)
+ 	(generic_wide_int::operator^, generic_wide_int::operator+
+ 	(binary generic_wide_int::operator-, generic_wide_int::operator*):
+ 	Delete.
+ 	(operator~, unary operator-, operator==, operator!=, operator&)
+ 	(operator|, operator^, operator+, binary operator-, operator*): New
+ 	functions.
+ 	* expr.c (get_inner_reference): Use wi::bit_and_not.
+ 	* fold-const.c (fold_binary_loc): Likewise.
+ 	* ipa-prop.c (ipa_compute_jump_functions_for_edge): Likewise.
+ 	* tree-ssa-ccp.c (get_value_from_alignment): Likewise.
+ 	(bit_value_binop): Likewise.
+ 	* tree-ssa-math-opts.c (find_bswap_or_nop_load): Likewise.
+ 	* tree-vrp.c (zero_nonzero_bits_from_vr): Likewise.
+ 	(extract_range_from_binary_expr_1): Likewise.
+ 	(masked_increment): Likewise.
+ 	(simplify_bit_ops_using_ranges): Likewise.
+ 
+ 2017-10-09  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR hsa/82416
+ 	* hsa-common.h (hsa_op_with_type): New method extend_int_to_32bit.
+ 	* hsa-gen.c (hsa_extend_inttype_to_32bit): New function.
+ 	(hsa_type_for_scalar_tree_type): Use it.  Always force min32int for
+ 	COMPLEX types.
+ 	(hsa_fixup_mov_insn_type): New function.
+ 	(hsa_op_with_type::get_in_type): Use it.
+ 	(hsa_build_append_simple_mov): Likewise.  Allow sub-32bit
+ 	immediates in an assert.
+ 	(hsa_op_with_type::extend_int_to_32bit): New method.
+ 	(gen_hsa_insns_for_bitfield): Fixup instruction and intermediary
+ 	types.  Convert to dest type if necessary.
+ 	(gen_hsa_insns_for_bitfield_load): Fixup load type if necessary.
+ 	(reg_for_gimple_ssa): Pass false as min32int to
+ 	hsa_type_for_scalar_tree_type.
+ 	(gen_hsa_addr): Fixup type when creating addresable temporary.
+ 	(gen_hsa_cmp_insn_from_gimple): Extend operands if necessary.
+ 	(gen_hsa_unary_operation): Extend operands and convert to dest type if
+ 	necessary.  Call hsa_fixup_mov_insn_type.
+ 	(gen_hsa_binary_operation): Changed operand types to hsa_op_with_type,
+ 	extend operands and convert to dest type if necessary.
+ 	(gen_hsa_insns_for_operation_assignment): Extend operands and convert
+ 	to dest type if necessary.
+ 	(set_output_in_type): Call hsa_fixup_mov_insn_type.  Just ude dest
+ 	if conversion nt necessary and size matches.
+ 	(gen_hsa_insns_for_load): Call hsa_fixup_mov_insn_type, convert
+ 	to dest type if necessary.
+ 	(gen_hsa_insns_for_store): Call hsa_fixup_mov_insn_type.
+ 	(gen_hsa_insns_for_switch_stmt): Likewise. Also extend operands if
+ 	necessary.
+ 	(gen_hsa_clrsb): Likewise.
+ 	(gen_hsa_ffs): Likewise.
+ 	(gen_hsa_divmod): Extend operands and convert to dest type if
+ 	necessary.
+ 	(gen_hsa_atomic_for_builtin): Change type of op to hsa_op_with_type.
+ 
+ 2017-10-08  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/rs6000.md (conditional branch): Clean up formatting.
+ 	Remove empty default arguments.  Use a brace block as output
+ 	statement.
+ 	(conditional return): Ditto.
+ 	(jump): Ditto.
+ 	(indirect_jump): Ditto.  Use b%T0 instead of bctr/blr.
+ 	(tablejump, tablejumpsi, tablejumpdi, *tablejump<mode>_internal1):
+ 	Ditto.
+ 	(group_ending_nop): Ditto.
+ 	(doloop_end): Ditto.
+ 	(ctr<mode>, ctr<mode>_internal1, ctr<mode>_internal2): Ditto.
+ 	(splitters for those): Ditto.
+ 
+ 2017-10-08  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/rs6000-string.c (expand_strncmp_align_check): Invert
+ 	a conditional jump (and the compare for it) so that pc_rtx is the
+ 	last operand.
+ 	* config/rs6000/rs6000.c (rs6000_legitimate_combined_insn): Adjust
+ 	for the deleted and renamed ctr<mode>_internal[234] patterns.
+ 	* config/rs6000/rs6000.md: Delete second conditional branch pattern.
+ 	Delete second conditional return pattern.
+ 	(ctr<mode>_internal2): Delete this second bdnz pattern.
+ 	(ctr<mode>_internal3): Rename to ctr<mode>_internal2.
+ 	(ctr<mode>_internal4): Delete this second bdz pattern.
+ 
+ 2017-10-08  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* tree-outof-ssa.h (ssaexpand): Add partitions_for_undefined_values.
+ 	(always_initialized_rtx_for_ssa_name_p): New predicate.
+ 	* tree-outof-ssa.c (remove_ssa_form): Initialize new field of SA.
+ 	(finish_out_of_ssa): Free new field of SA.
+ 	* tree-ssa-coalesce.h (get_undefined_value_partitions): Declare.
+ 	* tree-ssa-coalesce.c: Include tree-ssa.h.
+ 	(get_parm_default_def_partitions): Remove extern keyword.
+ 	(get_undefined_value_partitions): New function.
+ 	* expr.c (expand_expr_real_1) <expand_decl_rtl>: For a SSA_NAME, do
+ 	not set SUBREG_PROMOTED_VAR_P on the sub-register if it may contain
+ 	uninitialized bits.
+ 	* loop-iv.c (iv_get_reaching_def): Disqualify all subregs.
+ 
+ 2017-10-08  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* builtins.def (BUILT_IN_SETJMP): Revert latest change.
+ 
+ 2017-10-08  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* config/i386/i386.c (ix86_expand_set_or_movmem): Disable 512bit loops
+ 	for targets that preffer 128bit.
+ 
+ 2017-10-08  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* config/i386/i386.c (has_dispatch): Disable for Ryzen.
+ 
+ 2017-10-08  Olivier Hainque  <hainque@adacore.com>
+ 
+ 	* config/arm/arm.c (arm_set_return_address): Use MEM_VOLATILE_P
+ 	on the target mem instead of RTX_FRAME_RELATED_P on the insn to
+ 	prevent DSE.
+ 	(thumb_set_return_address): Likewise.
+ 
+ 2017-10-08  Olivier Hainque  <hainque@adacore.com>
+ 
+ 	* common/config/arm/arm-common.c (arm_except_unwind_info):
+ 	Handle DWARF2_UNWIND_INFO.
+ 
+ 2017-10-07  Michael Collison <michael.collison@arm.com>
+ 
+ 	* config/aarch64/aarch64.md (*aarch64_reg_<optab>_minus<mode>3):
+ 	New pattern.
+ 
+ 2017-10-07  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* builtins.def (BUILT_IN_SETJMP): Declare as library builtin instead
+ 	of GCC builtin if DONT_USE_BUILTIN_SETJMP is defined.
+ 	* except.c (sjlj_emit_function_enter): If DONT_USE_BUILTIN_SETJMP is
+ 	defined, force the creation of a new block for a dispatch label.
+ 
+ 2017-10-07  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* invoke.texi (Wsuggest-attribute=cold): Document.
+ 	* common.opt (Wsuggest-attribute=cold): New
+ 	* ipa-pure-const.c (warn_function_cold): New function.
+ 	* predict.c (compute_function_frequency): Use it.
+ 	* predict.h (warn_function_cold): Declare.
+ 
+ 2017-10-06  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* tree-switch-conversion.c (do_jump_if_equal, emit_cmp_and_jump_insns):
+ 	Update profile.
+ 
+ 2017-10-06  Martin Liska  <mliska@suse.cz>
+ 
+ 	* sanopt.c (struct sanopt_tree_triplet_hash): Remove inline
+ 	keyword for member functions.
+ 	(struct sanopt_tree_couple): New struct.
+ 	(struct sanopt_tree_couple_hash): New function.
+ 	(struct sanopt_ctx): Add new hash_map.
+ 	(has_dominating_ubsan_ptr_check): New function.
+ 	(record_ubsan_ptr_check_stmt): Likewise.
+ 	(maybe_optimize_ubsan_ptr_ifn): Likewise.
+ 	(sanopt_optimize_walker): Handle IFN_UBSAN_PTR.
+ 	(pass_sanopt::execute): Handle also SANITIZE_POINTER_OVERFLOW.
+ 
+ 2017-10-06  Sudakshina Das  <sudi.das@arm.com>
+ 
+ 	PR target/82440
+ 	* config/aarch64/predicates.md (aarch64_reg_or_orr_imm): Only call
+ 	aarch64_simd_valid_immediate on CONST_VECTORs.
+ 	(aarch64_reg_or_bic_imm): Likewise.
+ 
+ 2017-10-06  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	PR rtl-optimization/82396
+ 	* haifa-sched.c (ready_sort_real): Disable qsort checking.
+ 
+ 2017-10-06  Sebastian Pop  <sebpop@gmail.com>
+ 
+ 	* graphite-dependences.c (scop_get_reads): Move code to...
+ 	(scop_get_must_writes): Move code to...
+ 	(scop_get_may_writes): Move code to...
+ 	(scop_get_reads_and_writes): ... here.
+ 	(scop_get_dependences): Call scop_get_reads_and_writes.
+ 
+ 2017-10-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/82434
+ 	* fold-const.h (can_native_encode_type_p,
+ 	can_native_encode_string_p): Remove.
+ 	* fold-const.c (native_encode_int): Formatting fixes.  If ptr is NULL,
+ 	don't encode anything, just return what would be otherwise returned.
+ 	(native_encode_fixed, native_encode_complex, native_encode_vector):
+ 	Likewise.
+ 	(native_encode_string): Likewise.  Inline by hand
+ 	can_native_encode_string_p.
+ 	(can_native_encode_type_p): Remove.
+ 	(can_native_encode_string_p): Remove.
+ 	* tree-vect-stmts.c (vectorizable_store): Instead of testing just
+ 	STRING_CSTs using can_native_encode_string_p, test all
+ 	CONSTANT_CLASS_P values using native_encode_expr with NULL ptr.
+ 	* gimple-ssa-store-merging.c (encode_tree_to_bitpos): Remove last
+ 	argument from native_encode_expr.
+ 	(rhs_valid_for_store_merging_p): Use native_encode_expr with NULL ptr.
+ 	(pass_store_merging::execute): Don't unnecessarily look for 3 stmts,
+ 	but just 2.
+ 
+ 2017-10-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/82397
+ 	* tree-vect-data-refs.c (dr_group_sort_cmp): Do not use
+ 	operand_equal_p but rely on data_ref_compare_tree for detecting
+ 	equalities.
+ 	(vect_analyze_data_ref_accesses): Use data_ref_compare_tree
+ 	to match up with dr_group_sort_cmp.
+ 
+ 2017-10-06  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	PR target/82322
+ 	* config/s390/s390-builtins.def (s390_vfi): Define new overloaded
+ 	builtin.
+ 	* config/s390/s390-builtin-types.def: Regenerate.
+ 
+ 2017-10-06  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	PR target/82317
+ 	* config/s390/s390-builtin-types.def: Regenerate.
+ 	* config/s390/s390-builtins.def (s390_vfmaxdb_4, s390_vfmindb_4):
+ 	Change flag from B_VXE to B_VX.
+ 	(s390_vec_min_dbl): Remove B_VXE flag.
+ 
+ 2017-10-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	* graphite-isl-ast-to-gimple.c: Include ssa.h and tree-ssa.h.
+ 	(translate_isl_ast_to_gimple::translate_pending_phi_nodes,
+ 	translate_isl_ast_to_gimple::is_valid_rename,
+ 	translate_isl_ast_to_gimple::get_rename,
+ 	translate_isl_ast_to_gimple::get_def_bb_for_const,
+ 	translate_isl_ast_to_gimple::get_new_name,
+ 	translate_isl_ast_to_gimple::collect_all_ssa_names,
+ 	translate_isl_ast_to_gimple::copy_loop_phi_args,
+ 	translate_isl_ast_to_gimple::collect_all_ssa_names,
+ 	translate_isl_ast_to_gimple::copy_loop_phi_args,
+ 	translate_isl_ast_to_gimple::copy_loop_phi_nodes,
+ 	translate_isl_ast_to_gimple::add_close_phis_to_merge_points,
+ 	translate_isl_ast_to_gimple::add_close_phis_to_outer_loops,
+ 	translate_isl_ast_to_gimple::copy_loop_close_phi_args,
+ 	translate_isl_ast_to_gimple::copy_loop_close_phi_nodes,
+ 	translate_isl_ast_to_gimple::copy_cond_phi_args,
+ 	translate_isl_ast_to_gimple::copy_cond_phi_nodes,
+ 	translate_isl_ast_to_gimple::edge_for_new_close_phis,
+ 	translate_isl_ast_to_gimple::add_phi_arg_for_new_expr,
+ 	translate_isl_ast_to_gimple::rename_uses,
+ 	translate_isl_ast_to_gimple::rename_all_uses): Remove.
+ 	(translate_isl_ast_to_gimple::get_rename_from_scev): Simplify.
+ 	(set_rename_for_each_def): Likewise.
+ 	(graphite_copy_stmts_from_block): Handle debug stmt resetting
+ 	here.  Handle rewriting SCEV analyzable uses here.
+ 	(copy_bb_and_scalar_dependences): Generate code for PHI
+ 	copy-in/outs.
+ 	(graphite_regenerate_ast_isl): Adjust.
+ 	* graphite-scop-detection.c (trivially_empty_bb_p): Move to sese.[ch].
+ 	(add_write, add_read): New functions.
+ 	(build_cross_bb_scalars_def): Use it and simplify.
+ 	(build_cross_bb_scalars_use): Likewise.
+ 	(graphite_find_cross_bb_scalar_vars): Inline into...
+ 	(try_generate_gimple_bb): ...here.  Add dependences for PHIs,
+ 	simulating out-of-SSA.  Compute liveout and add dependencies.
+ 	(build_scops): Force an empty entry block.
+ 	* sese.h (sese_info_t::liveout, sese_info_t::debug_liveout): New
+ 	members.
+ 	(sese_build_liveouts): Declare.
+ 	(sese_trivially_empty_bb_p): Likewise.
+ 	* sese.c (sese_build_liveouts_bb): Properly handle PHIs,
+ 	compute liveout and debug_liveout.
+ 	(sese_bad_liveouts_use): Remove.
+ 	(sese_reset_debug_liveouts_bb): Likewise.
+ 	(sese_reset_debug_liveouts): Rewrite in terms of debug_liveout.
+ 	(sese_build_liveouts): Build liveout and debug_liveout and store
+ 	it in region.
+ 	(new_sese_info): Adjust.
+ 	(free_sese_info): Likewise.
+ 	(sese_insert_phis_for_liveouts): Reset debug stmts from here,
+ 	do not build liveout here.
+ 	(move_sese_in_condition): Adjust region entry.
+ 	(scev_analyzable_p): Match up with chrec_apply requirements.
+ 	(sese_trivially_empty_bb_p): New.
+ 	* tree-into-ssa.c (get_reaching_def): Properly support generating
+ 	default-defs for incremental rewrite of anonymous names.
+ 
+ 2017-10-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	* graphite-sese-to-poly.c (extract_affine): For casts increasing
+ 	precision do not perform modulo reduction.
+ 
+ 2017-10-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/82436
+ 	* tree-vect-slp.c (vect_supported_load_permutation_p): More
+ 	conservatively choose the vectorization factor when checking
+ 	whether we can perform the required load permutation.
+ 	(vect_transform_slp_perm_load): Assert when we may not fail.
+ 
+ 2017-10-05  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Correct error
+ 	message for incompatible -msdata=* and -mcall-* options.
+ 
+ 2017-10-05  Jan Hubicka <hubicka@ucw.cz>
+ 
+ 	* config/i386/i386.c (ia32_multipass_dfa_lookahead): Default to issue
+ 	rate for post-reload scheduling.
+ 
+ 2017-10-05  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* doc/sourcebuild.texi (vect_sizes_16B_8B, vect_sizes_32B_16B): New.
+ 
+ 2017-10-05  Jan Hubicka <hubicka@ucw.cz>
+ 
+ 	* config/i386/i386.c (znver1_cost): Set branch_cost to 3 (instead of 2)
+ 	to improve monte carlo in scimark.
+ 
+ 2017-10-05  Jan Hubicka <hubicka@ucw.cz>
+ 
+ 	* config/i386/i386.c (ix86_size_cost, i386_cost, i486_cost,
+ 	pentium_cost, lakemont_cost, pentiumpro_cost, geode_cost, k6_cost,
+ 	athlon_cost, k8_cost, amdfam10_cost, btver1_cost, btver2_cost,
+ 	pentium4_cost, nocona_cost): Set reassociation width to 1.
+ 	(bdver1_cost, bdver2_cost, bdver3_cost, bdver4_cost): Set reassociation
+ 	width to 2 for fp operations and 1 otherwise.
+ 	(znver1_cost): Set scalar reassoc width to 4 and vector to 3 and 6
+ 	for int and fp.
+ 	(atom_cost): Set reassociation width to 2.
+ 	(slm_cost, generic_cost): Set fp reassociation width
+ 	to 2 and 1 otherwise.
+ 	(intel_cost): Set fp reassociation width to 4 and 1 otherwise.
+ 	(core_cost): Set fp reassociation width to 4 and vector to 2.
+ 	(ix86_reassociation_width): Rewrite using cost table; special case
+ 	plus/minus on Zen; honor X86_TUNE_SSE_SPLIT_REGS
+ 	and TARGET_AVX128_OPTIMAL.
+ 	* config/i386/i386.h (processor_costs): Add
+ 	reassoc_int, reassoc_fp, reassoc_vec_int, reassoc_vec_fp.
+ 	(TARGET_VECTOR_PARALLEL_EXECUTION, TARGET_REASSOC_INT_TO_PARALLEL,
+ 	TARGET_REASSOC_FP_TO_PARALLEL): Remove.
+ 	* x86-tune.def (X86_TUNE_REASSOC_INT_TO_PARALLEL): Remove.
+ 	(X86_TUNE_REASSOC_FP_TO_PARALLEL): Remove.
+ 	(X86_TUNE_VECTOR_PARALLEL_EXECUTION):  Remove.
+ 
+ 2017-10-05  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* doc/invoke.texi (Wparentheses): Document C++ MVP behaviour.
+ 
+ 2017-10-05  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* config/arm/arm.c (arm_test_fpu_data): New.
+ 	(arm_run_selftests): Call arm_test_fpu_data.
+ 
+ 2017-10-04  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* toplev.c (toplev::main): Remove excess parens on pretty_printer
+ 	decl.
+ 	* caller-save.c (insert_save): Remove excess parens on TO_SAVE parm.
+ 
+ 2017-10-04  Sudakshina Das  <sudi.das@arm.com>
+ 
+ 	* config/aarch64/aarch64-protos.h (enum simd_immediate_check): New
+ 	check type for aarch64_simd_valid_immediate.
+ 	(aarch64_output_simd_mov_immediate): Update prototype.
+ 	(aarch64_simd_valid_immediate): Update prototype.
+ 	* config/aarch64/aarch64-simd.md (orr<mode>3): modified pattern to add
+ 	support for ORR-immediate.
+ 	(and<mode>3): modified pattern to add support for BIC-immediate.
+ 	* config/aarch64/aarch64.c (aarch64_simd_valid_immediate): Function
+ 	now checks for valid immediate for BIC and ORR based on new enum
+ 	argument.
+ 	(aarch64_output_simd_mov_immediate): Function now used to output
+ 	BIC/ORR imm as well based on new enum argument.
+ 	* config/aarch64/constraints.md (Do): New vector immediate constraint.
+ 	(Db) : Likewise.
+ 	* config/aarch64/predicates.md (aarch64_reg_or_orr_imm): New predicate.
+ 	(aarch64_reg_or_bic_imm): Likewise.
+ 
+ 2017-10-04  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	* config/s390/vx-builtins.md ("vec_mergeh<mode>")
+ 	("vec_mergel<mode>"): Change mode iterator to V_128_NOSINGLE.
+ 
+ 2017-10-04  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	Revert r253399:
+ 
+ 	PR rtl-optimization/82396
+ 	* haifa-sched.c (autopref_multipass_init): Simplify
+ 	initialization.
+ 	(autopref_rank_data): Simplify sort order.
+ 	* sched-int.h (autopref_multipass_data_): Remove
+ 	multi_mem_insn_p, min_offset and max_offset.
+ 
+ 2017-10-04  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	* doc/sourcebuild.texi: Document vect_peeling_profitable.
+ 
+ 2017-10-04  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	* doc/sourcebuild.texi: Document vect_intdouble_cvt and
+ 	vect_doubleint_cvt.
+ 
+ 2017-10-04  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	* doc/sourcebuild.texi: Document vect_long_mult.
+ 
+ 2017-10-04  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	PR tree-optimization/82413
+ 	* fold-const.c (build_range_check): Use widest_int when comparing
+ 	the maximum ETYPE value with HIGH.
+ 
+ 2017-10-04  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	PR rtl-optimization/82396
+ 	* haifa-sched.c (autopref_multipass_init): Simplify
+ 	initialization.
+ 	(autopref_rank_data): Simplify sort order.
+ 	* sched-int.h (autopref_multipass_data_): Remove
+ 	multi_mem_insn_p, min_offset and max_offset.
+ 
+ 2017-10-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/82381
+ 	* tree-ssa-reassoc.c (sort_by_operand_rank): Check for different
+ 	oeN->rank first.  Return 1 or -1 if one op is SSA_NAME and the other
+ 	is not.
+ 
+ 	PR tree-optimization/82374
+ 	* omp-low.c (create_omp_child_function): Copy DECL_ATTRIBUTES,
+ 	DECL_FUNCTION_SPECIFIC_OPTIMIZATION,
+ 	DECL_FUNCTION_SPECIFIC_TARGET and DECL_FUNCTION_VERSIONED from
+ 	current_function_decl to the new decl.
+ 
+ 2017-10-03  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	* config/rs6000/rs6000-builtin.def (BU_FLOAT128_2_HW): Define new
+ 	helper macro for IEEE float128 hardware built-in functions.
+ 	(SQRTF128_ODD): Add built-in functions with the round-to-odd
+ 	semantics.
+ 	(TRUNCF128_ODD): Likewise.
+ 	(ADDF128_ODD): Likewise.
+ 	(SUBF128_ODD): Likewise.
+ 	(MULF128_ODD): Likewise.
+ 	(DIVF128_ODD): Likewise.
+ 	(FMAF128_ODD): Likewise.
+ 	* config/rs6000/rs6000.md (UNSPEC_ROUND_TO_ODD): Rename to
+ 	UNSPEC_TRUNC_ROUND_TO_ODD.
+ 	(UNSPEC_TRUNC_ROUND_TO_ODD): Likewise.
+ 	(UNSPEC_ADD_ROUND_TO_ODD): New unspec codes for the IEEE 128-bit
+ 	floating point round to odd instructions.
+ 	(UNSPEC_SUB_ROUND_TO_ODD): Likewise.
+ 	(UNSPEC_MUL_ROUND_TO_ODD): Likewise.
+ 	(UNSPEC_DIV_ROUND_TO_ODD): Likewise.
+ 	(UNSPEC_FMA_ROUND_TO_ODD): Likewise.
+ 	(UNSPEC_SQRT_ROUND_TO_ODD): Likewise.
+ 	(trunc<mode>sf2_hw): Change the truncate with round to odd
+ 	expansion to use UNSPEC_TRUNC_ROUND_TO_ODD.
+ 	(add<mode>3_odd): Add insns for IEEE 128-bit floating point round
+ 	to odd hardware instructions.
+ 	(sub<mode>3_odd): Likewise.
+ 	(mul<mode>3_odd): Likewise.
+ 	(div<mode>3_odd): Likewise.
+ 	(sqrt<mode>2_odd): Likewise.
+ 	(fma<mode>4_odd): Likewise.
+ 	(fms<mode>4_odd): Likewise.
+ 	(nfma<mode>4_odd): Likewise.
+ 	(nfms<mode>4_odd): Likewise.
+ 	(trunc<mode>df2_odd): Change the truncate with round to odd
+ 	expansion to use UNSPEC_TRUNC_ROUND_TO_ODD.  Add a generator
+ 	function.
+ 	* doc/extend.texi (PowerPC built-in functions): Update documentation
+ 	for existing IEEE float128-bit built-in functions.  Add built-in
+ 	functions that generate the IEEE 128-bit floating point round to
+ 	odd instructions.
+ 
+ 2017-10-03  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR rtl-optimization/77729
+ 	* simplify-rtx.c (simplify_binary_operation_1): Delete the (X&C1)|C2
+ 	to (X&(C1&~C2))|C2 transformations.
+ 
+ 2017-10-03  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR tree-optimization/82363
+ 	* tree-sra.c (propagate_subaccesses_across_link): In unrecoverable
+ 	mismatch, mark lacc written regardless of racc.
+ 
+ 2017-10-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/82381
+ 	* tree-ssa-reassoc.c (sort_by_operand_rank): Don't check
+ 	stmt_to_insert nor wheather SSA_NAMEs are default defs.
+ 	Return 1 or -1 if one of bba and bbb is NULL. If bb_rank is equal,
+ 	fallthrough into reassoc_stmt_dominates_stmt_p.
+ 
+ 	PR target/82386
+ 	* combine.c (combine_instructions): Don't combine in unreachable
+ 	basic blocks.
+ 
+ 2017-10-02  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	PR target/80210
+ 	* config/rs6000/rs6000.c (rs6000_option_override_internal): Rewrite
+ 	function to not use the have_cpu variable.  Do not set cpu_index,
+ 	rs6000_cpu_index or rs6000_tune_index if we end up using TARGET_DEFAULT
+ 	or the default cpu.
+ 	(rs6000_valid_attribute_p): Remove duplicate initializations of
+ 	old_optimize and func_optimize.
+ 	(rs6000_pragma_target_parse): Call rs6000_activate_target_options ().
+ 	(rs6000_activate_target_options): Make global.
+ 	* config/rs6000/rs6000-protos.h (rs6000_activate_target_options): Add
+ 	prototype.
+ 
+ 2017-10-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* tree-dfa.c (get_ref_base_and_extent): Set *pmax_size to -1
+ 	if *poffset + *pmax_size overflows in HOST_WIDE_INT.
+ 	Set *poffset to 0 and *psize and *pmax_size to -1 if
+ 	*poffset + *psize overflows in HOST_WIDE_INT.
+ 
+ 	PR tree-optimization/82387
+ 	PR tree-optimization/82388
+ 	PR tree-optimization/82389
+ 	* tree-ssa-dse.c (dse_classify_store): Test byte_tracking_enabled
+ 	instead of live_bytes non-NULL.
+ 
+ 2017-10-02  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR target/41076
+ 	* confg/avr/avr.md (*iorhi3.ashift8-ext.zerox): Add "r,r,0"
+ 	alternative.
+ 
+ 2017-10-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	* graphite-isl-ast-to-gimple.c (set_codegen_error): With
+ 	-fchecking and --param graphite-allow-codegen-errors=0 ICE.
+ 	* params.def (PARAM_GRAPHITE_ALLOW_CODEGEN_ERRORS): New param.
+ 
+ 2017-10-02  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* tree.h (wi::int_traits <const_tree>::decompose): Assert that the
+ 	requested precision matches the type's.
+ 	* calls.c (alloc_max_size): Calculate the new candidate size as
+ 	a widest_int and use wi::to_widest when comparing it with the
+ 	current candidate size.
+ 	* gimple-ssa-warn-alloca.c (pass_walloca::execute): Compare with
+ 	zero rather than integer_zero_node.
+ 	* match.pd: Check for a no-op conversion before using wi::add
+ 	rather than after.  Use tree_to_uhwi when summing small shift
+ 	counts into an unsigned int.
+ 
+ 2017-10-02  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	PR target/71307
+ 	* config/aarch64/aarch64.h (POINTER_AND_FP_REGS): New reg class.
+ 	(REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
+ 	* config/aarch64/aarch64.c (aarch64_class_max_nregs): Handle
+ 	POINTER_AND_FP_REGS.
+ 
+ 2017-10-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/82355
+ 	* graphite-isl-ast-to-gimple.c (build_iv_mapping): Also build
+ 	a mapping for the enclosing loop but avoid generating one for
+ 	the loop tree root.
+ 	(copy_bb_and_scalar_dependences): Remove premature codegen
+ 	error on PHIs in blocks duplicated into multiple places.
+ 	* graphite-scop-detection.c
+ 	(scop_detection::stmt_has_simple_data_refs_p): For a loop not
+ 	in the region use it as loop and nest to analyze the DR in.
+ 	(try_generate_gimple_bb): Likewise.
+ 	* graphite-sese-to-poly.c (extract_affine_chrec): Adjust.
+ 	(add_loop_constraints): For blocks in a loop not in the region
+ 	create a dimension with a single iteration.
+ 	* sese.h (gbb_loop_at_index): Remove assert.
+ 
+ 2017-10-01  Kevin Buettner  <kevinb@redhat.com>
+ 
+ 	* omp-expand.c (adjust_context_scope): New function.
+ 	(expand_parallel_call): Call adjust_context_scope.
+ 
+ 2017-10-01  Jeff Law  <law@redhat.com>
+ 
+ 	* tree-ssa-dom.c (optimize_stmt): Make this a method within the
+ 	dom_opt_dom_walker class with direct access to private members.
+ 	Add comments.  Call test_for_singularity.
+ 	(dom_opt_dom_walker::before_dom_children): Corresponding changes.
+ 	(dom_opt_dom_walker::after_dom_children): Do not lazily initialize
+ 	m_dummy_cond anymore.
+ 	(class dom_opt_dom_walker): Initialize m_dummy_cond member in the
+ 	class ctor.
+ 	(pass_dominator:execute): Build the dummy_cond here and pass it
+ 	to the dom_opt_dom_walker ctor.
+ 	(test_for_singularity): New function.
+ 
+ 2017-09-30  Krister Walfridsson  <krister.walfridsson@gmail.com>
+ 	    Maya Rashish  <coypu@sdf.org>
+ 
+ 	* config.gcc (*-*-netbsd*): New variable nbsd_tm_file containing
+ 	netbsd.h, netbsd-stdint.h, and netbsd-elf.h.
+ 	(alpha*-*-netbsd*) Use nbsd_tm_file.
+ 	(arm*-*-netbsdelf*) Likewise.
+ 	(i[34567]86-*-netbsdelf*) Likewise.
+ 	(x86_64-*-netbsd*) Likewise.
+ 	(mips*-*-netbsd*) Likewise.
+ 	(powerpc-*-netbsd*) Likewise.
+ 	(sh*-*-netbsd*) Likewise.
+ 	(sparc-*-netbsdelf*) Likewise.
+ 	(sparc64-*-netbsd*) Likewise.
+ 	(m68k*-*-netbsdelf*) Use nbsd_tm_file and add CHAR_FAST8/SHORT_FAST16
+ 	to tm_defines.
+ 	(vax-*-netbsdelf*) Likewise.
+ 	* config/netbsd-stdint.h (INT_FAST8_TYPE): Check CHAR_FAST8.
+ 	(UINT_FAST8_TYPE) Likewise.
+ 	(INT_FAST16_TYPE) Check CHAR_FAST16.
+ 	(UINT_FAST16_TYPE) Likewise.
+ 
+ 2017-09-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/82361
+ 	* config/i386/i386.md
+ 	(TARGET_USE_8BIT_IDIV zext divmodsi4 splitter): New define_split.
+ 	(divmodsi4_zext_1, divmodsi4_zext_2, *divmodsi4_zext_1,
+ 	*divmodsi4_zext_2): New define_insn_and_split.
+ 	(*divmodsi4_noext_zext_1, *divmodsi4_noext_zext_2): New define_insn.
+ 	(TARGET_USE_8BIT_IDIV zext udivmodsi4 splitter): New define_split.
+ 	(udivmodsi4_zext_1, udivmodsi4_zext_2, *udivmodsi4_zext_1,
+ 	*udivmodsi4_zext_2, *udivmodsi4_pow2_zext_1, *udivmodsi4_pow2_zext_2):
+ 	New define_insn_and_split.
+ 	(*udivmodsi4_noext_zext_1, *udivmodsi4_noext_zext_2): New define_insn.
+ 	* config/i386/i386.c (ix86_split_idivmod): Handle operands[0] or
+ 	operands[1] having DImode when mode is SImode.
+ 
+ 	* config/i386/i386.c (ix86_split_idivmod): Use mode instead of
+ 	always SImode for DIV and MOD in REG_EQUAL notes.
+ 
+ 2017-09-29  Yury Gribov  <tetra2005@gmail.com>
+ 
+ 	PR middle-end/82319
+ 	* match.pd: Fix handling of NaNs in pattern.
+ 
+ 2017-09-29  Jeff Law  <law@redhat.com>
+ 
+ 	* sbitmap.c (bitmap_bit_in_range_p): New function.
+ 	* sbitmap.h (bitmap_bit_in_range_p): Prototype.
+ 	* tree-ssa-dse.c (live_bytes_read): New function.
+ 	(dse_classify_store): Ignore reads of dead bytes.
+ 
+ 	* config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): Fix
+ 	typos and whitespace errors.
+ 	* config/i386/predicates.md (address_no_seg_operand): Likewise.
+ 	* config/s390/s390.c (s390_emit_prologue): Likewise.
+ 
+ 2017-09-29  Vladimir Makarov  <vmakarov@redhat.com>
+ 
+ 	PR target/81481
+ 	* ira-costs.c (scan_one_insn): Don't take into account PIC equiv
+ 	with a symbol for LRA.
+ 
+ 2017-09-29  Vladimir Makarov  <vmakarov@redhat.com>
+ 
+ 	PR rtl-optimization/82338
+ 	* lra-constraints.c (inherit_in_ebb): Check usage_insns check.
+ 
+ 2017-09-29  Alexander Monakov  <amonakov@ispras.ru>
+ 
+ 	* genmodes.c (calc_wider_mode): Suppress qsort macro.
+ 	* system.h [CHECKING_P] (qsort): Redirect to qsort_chk.
+ 	(qsort_chk): Declare.
+ 	* vec.c [CHECKING_P] (qsort_chk_error): New static function.
+ 	(qsort_chk): New function.
+ 
+ 2017-09-29  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	PR tree-optimization/82337
+ 	* gimple-ssa-strength-reduction.c (find_phi_def): Don't record a
+ 	phi definition if the PHI result appears in an abnormal PHI.
+ 	(find_basis_for_base_expr): Don't record a basis if the LHS of the
+ 	basis appears in an abnormal PHI.
+ 
+ 2017-09-29  Richard Biener  <rguenther@suse.de>
+ 
+ 	* graphite-isl-ast-to-gimple.c
+ 	(translate_isl_ast_to_gimple::set_codegen_error): New function.
+ 	(binary_op_to_tree): Use it.
+ 	(get_rename_from_scev): Likewise.
+ 	(copy_loop_phi_nodes): Likewise.
+ 	(copy_bb_and_scalar_dependences): Likewise.
+ 	(translate_pending_phi_nodes): Likewise.
+ 
+ 2017-09-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/82339
+ 	* config/i386/i386.md (*movdi_internal peephole2): New -Os peephole
+ 	for movabsq $(i32 << shift), r64.
+ 
+ 2017-09-28  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.c (ix86_print_operand_address_as): Do not check
+ 	index when encoding %esp as %rsp to avoid 0x67 prefix.
+ 
+ 2017-09-28  Sergey Shalnov  <Sergey.Shalnov@intel.com>
+ 
+ 	* config/i386/i386.md (*movsf_internal, *movdf_internal):
+ 	Return 256-bit AVX modes for TARGET_PREFER_AVX256.
+ 
+ 2017-09-28  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	* config/arm/arm.c (arm_option_override): Forbid ARMv8-M Security
+ 	Extensions with more than 16 double VFP registers.
+ 	(cmse_nonsecure_entry_clear_before_return): Remove second entry of
+ 	to_clear_mask and all code related to it.  Replace the remaining
+ 	entry by a sbitmap and adapt code accordingly.
+ 
+ 2017-09-28  Henry Linjamäki  <henry.linjamaki@parmance.com>
+ 
+ 	* brig-builtins.def: Change pure attributes to const.
+ 
+ 2017-09-28  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	* config.gcc (default_gnu_indirect_function): Default to yes for
+ 	sparc*-*-linux* with glibc.
+ 
+ 2017-09-28  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_elf_asm_constructor)
+ 	(aarch64_elf_asm_destructor): Pass SECTION_NOTYPE to get_section
+ 	when creating .init_array and .fini_array sections with priority
+ 	specified.
+ 
+ 2017-09-27  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	PR target/71727
+ 	* config/aarch64/aarch64.c
+ 	(aarch64_builtin_support_vector_misalignment): Always return false
+ 	when misalignment is unknown.
+ 
+ 2017-09-27  Kelvin Nilsen  <kelvin@gcc.gnu.org>
+ 
+ 	* config/rs6000/rs6000-p8swap.c (const_load_sequence_p): Revise
+ 	this function to return false if the definition used by the swap
+ 	instruction is artificial, or if the memory address from which the
+ 	constant value is loaded is not represented by a base address held
+ 	in a register or if the base address register is a frame or stack
+ 	pointer.  Additionally, return false if the base address of the
+ 	loaded constant is a SYMBOL_REF but is not considered to be a
+ 	constant.
+ 	(replace_swapped_load_constant): New function.
+ 	(rs6000_analyze_swaps): Add a new pass to replace a swap of a
+ 	loaded constant vector with a load of a swapped constant vector.
+ 
+ 2017-09-27  Carl Love  <cel@us.ibm.com>
+ 
+ 	* config/rs6000/rs6000-builtin.def (BU_FP_1MISC_1): Add define macro.
+ 	(FCTID, FCTIW): Add BU_FP_MISC_1 macro expansion for builtins.
+ 	* config/rs6000/rs6000.md (lrintsfsi2): Add define_insn for the
+ 	fctiw instruction.
+ 
+ 2017-09-27  Alexander Monakov  <amonakov@ispras.ru>
+ 
+ 	* haifa-sched.c (autopref_rank_for_schedule): Order 'irrelevant' insns
+ 	first, always call autopref_rank_data otherwise.
+ 
+ 2017-09-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	* graphite-scop-detection.c (find_scop_parameters): Move
+ 	loop bound handling ...
+ 	(gather_bbs::before_dom_children): ... here, avoiding the need
+ 	to build scop_info->loop_nest.
+ 	(record_loop_in_sese): Remove.
+ 	* sese.h (sese_info_t::loop_nest): Remove.
+ 	* sese.c (new_sese_info): Do not allocate loop_nest.
+ 	(free_sese_info): Do not free loop_nest.
+ 
+ 2017-09-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/82159
+ 	* gimplify.c (gimplify_modify_expr): Don't optimize away zero sized
+ 	lhs from calls if the lhs has addressable type.
+ 
+ 2017-09-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	* graphite.h (scop::max_alias_set): New member.
+ 	* graphite-scop-detection.c: Remove references to non-existing
+ 	--param in comments.
+ 	(build_alias_sets): Record the maximum alias set used for drs.
+ 	(build_scops): Support zero as unlimited for
+ 	--param graphite-max-arrays-per-scop.
+ 	* graphite-sese-to-poly.c (add_scalar_version_numbers): Remove
+ 	and inline into ...
+ 	(build_poly_sr_1): ... here.  Compute alias set based on the
+ 	maximum alias set used for drs rather than
+ 	PARAM_GRAPHITE_MAX_ARRAYS_PER_SCOP
+ 
+ 2017-09-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	* graphite-optimize-isl.c (get_schedule_for_node_st): Allow
+ 	--param loop-block-tile-size=0 to disable tiling.
+ 
+ 2017-09-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	* doc/invoke.texi (graphite-max-bbs-per-function): Remove.
+ 	(graphite-max-nb-scop-params): Document special value zero.
+ 	* domwalk.h (dom_walker::STOP): New symbolical constant.
+ 	(dom_walker::dom_walker): Add optional parameter for bb to
+ 	RPO mapping.
+ 	(dom_walker::~dom_walker): Declare.
+ 	(dom_walker::before_dom_children): Document STOP return value.
+ 	(dom_walker::m_user_bb_to_rpo): New member.
+ 	(dom_walker::m_bb_to_rpo): Likewise.
+ 	* domwalk.c (dom_walker::dom_walker): Compute bb to RPO
+ 	mapping here if not provided by the user.
+ 	(dom_walker::~dom_walker): Free bb to RPO mapping if not
+ 	provided by the user.
+ 	(dom_walker::STOP): Define.
+ 	(dom_walker::walk): Do not compute bb to RPO mapping here.
+ 	Support STOP return value from before_dom_children to stop
+ 	walking.
+ 	* graphite-optimize-isl.c (optimize_isl): If the schedule
+ 	is the same still generate code if -fgraphite-identity
+ 	or -floop-parallelize-all are given.
+ 	* graphite-scop-detection.c: Include cfganal.h.
+ 	(gather_bbs::gather_bbs): Get and pass through bb to RPO
+ 	mapping.
+ 	(gather_bbs::before_dom_children): Return STOP for BBs
+ 	not in the region.
+ 	(build_scops): Compute bb to RPO mapping and pass it to
+ 	the domwalk.  Treat --param graphite-max-nb-scop-params=0
+ 	as not limiting the number of params.
+ 	* graphite.c (graphite_initialize): Remove limit on the
+ 	number of basic-blocks in a function.
+ 	* params.def (PARAM_GRAPHITE_MAX_BBS_PER_FUNCTION): Remove.
+ 	(PARAM_GRAPHITE_MAX_NB_SCOP_PARAMS): Adjust to documented
+ 	default value of 10.
+ 
+ 2017-09-26  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	* config/rs6000/vsx.md (peephole for optimizing move SF to GPR):
+ 	Adjust code to eliminate needing to do the shift right 32-bits
+ 	operation after XSCVDPSPN.
+ 
+ 2017-09-26  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
+ 
+ 	* match.pd ((X / Y) == 0 -> X < Y): New pattern.
+ 	((X / Y) != 0 -> X >= Y): Likewise.
+ 
+ 2017-09-26  Carl Love  <cel@us.ibm.com>
+ 
+ 	* config/rs6000/rs6000-c.c (P9V_BUILTIN_VEC_XL_LEN_R,
+ 	P9V_BUILTIN_VEC_XST_LEN_R): Add support for builtins
+ 	vector unsigned char vec_xl_len_r (unsigned char *, size_t);
+ 	void vec_xst_len_r (vector unsigned char, unsigned char *, size_t);
+ 	* config/rs6000/altivec.h (vec_xl_len_r, vec_xst_len_r): Add defines.
+ 	* config/rs6000/rs6000-builtin.def (XL_LEN_R, XST_LEN_R): Add
+ 	definitions and overloading.
+ 	* config/rs6000/rs6000.c (altivec_expand_builtin): Add case
+ 	statement for P9V_BUILTIN_XST_LEN_R.
+ 	(altivec_init_builtins): Add def_builtin for P9V_BUILTIN_STXVLL.
+ 	* config/rs6000/vsx.md (lxvll, stxvll, xl_len_r, xst_len_r): Add
+ 	define_expand and define_insn for the instructions and builtins.
+ 	* doc/extend.texi: Update the built-in documentation file for the new
+ 	built-in functions.
+ 	* config/rs6000/altivec.md (altivec_lvsl_reg, altivec_lvsr_reg): Add
+ 	define_insn for the instructions
+ 
+ 2017-09-26  Krister Walfridsson  <krister.walfridsson@gmail.com>
+ 
+ 	PR target/39570
+ 	* gcc/config/netbsd-protos.h: New file.
+ 	* gcc/config/netbsd.c: New file.
+ 	* gcc/config/netbsd.h (SUBTARGET_INIT_BUILTINS): Define.
+ 	* gcc/config/t-netbsd: New file.
+ 	* gcc/config.gcc (tm_p_file): Add netbsd-protos.h.
+ 	(tmake_file) Add t-netbsd.
+ 	(extra_objs) Add netbsd.o.
+ 
+ 2017-09-26  Janus Weil  <janus@gcc.gnu.org>
+ 
+ 	PR fortran/82143
+ 	PR fortran/82324
+ 	* doc/sourcebuild.texi: Document fortran_real_10 and fortran_real_16.
+ 
+ 2017-09-26  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	* config/rs6000/rs6000.md (extendsi<mode>2): Add a splitter to do
+ 	sign extension from a vector register to a GPR by doing a 32-bit
+ 	direct move and then an EXTSW.
+ 	(extendsi<mode>2 splitter): Likewise.
+ 	(movsi_from_sf): Adjust code to eliminate doing a 32-bit shift
+ 	right or vector extract after doing XSCVDPSPN.  Use
+ 	zero_extendsidi2 instead of p8_mfvsrd_4_disf to move the value to
+ 	the GPRs.
+ 	(movdi_from_sf_zero_ext): Likewise.
+ 	(reload_gpr_from_vsxsf): Likewise.
+ 	(p8_mfvsrd_4_disf): Delete, no longer used.
+ 	(movsi_from_df): Optimize converting a DFmode to a SFmode, and
+ 	then needing to move the SFmode to a GPR to use the XSCVDPSP
+ 	instruction instead of FRSP and XSCVDPSPN.
+ 	* config/rs6000/vsx.md (vsx_xscvspdp_scalar2): Move insn so that
+ 	it is adjacent to the other XSCVSPDP insns.
+ 	(vsx_xscvdpsp_scalar): Use "ww" constraint instead of "f" to allow
+ 	SFmode to be in traditional Altivec registers.
+ 	(vsx_xscvdpspn): Eliminate useless alternative constraint.
+ 	(vsx_xscvspdpn): Likewise.
+ 	(vsx_xscvspdpn_scalar): Likewise.
+ 
+ 2017-09-26  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* tree-sra.c (compare_access_positions): Put integral types first,
+ 	stabilize sorting of integral types, remove conditions putting
+ 	non-full-precision integers last.
+ 	(sort_and_splice_var_accesses): Disable scalarization if a
+ 	non-integert would be represented by a non-full-precision integer.
+ 
+ 2017-09-26  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	* config/microblaze/linux.h (TARGET_ASM_FILE_END): Likewise.
+ 	* config/pa/pa.h (NEED_INDICATE_EXEC_STACK): Likewise.
+ 	* config/pa/pa-linux.h (NEED_INDICATE_EXEC_STACK): Likewise.
+ 	* config/pa/pa.c (pa_hpux_file_end): Rename to pa_file_end.
+ 	Define unconditionally, with [ASM_OUTPUT_EXTERNAL_REAL]
+ 	conditionals inside the function instead of around it.  Call
+ 	file_end_indicate_exec_stack if NEED_INDICATE_EXEC_STACK.
+ 	(TARGET_ASM_FILE_END): Define unconditionally to pa_file_end.
+ 
+ 2017-09-26  Richard Biener  <rguenther@suse.de>
+ 
+ 	* graphite-scop-detection.c (scop_detection::build_scop_depth): Rewrite,
+ 	fold in ...
+ 	(scop_detection::build_scop_breadth): ... this.  Removed.
+ 	(scop_detection::loop_is_valid_in_scop): Fold into single caller.
+ 	(scop_detection::harmful_stmt_in_bb): Likewise.
+ 	(scop_detection::graphite_can_represent_stmt): Likewise.
+ 	(scop_detection::loop_body_is_valid_scop): Likewise.  Remove recursion.
+ 	(scop_detection::can_represent_loop): Remove recursion, fold in ...
+ 	(scop_detection::can_represent_loop_1): ... this.  Removed.
+ 	(scop_detection::harmful_loop_in_region): Simplify after inlining
+ 	the above and remove more quadraticness.
+ 	(build_scops): Adjust.
+ 	* tree-data-ref.c (loop_nest_has_data_refs): Remove pointless
+ 	quadraticness.
+ 
+ 2017-09-26  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/82267
+ 	* config/i386/i386.c (ix86_print_operand_address_as): Only test
+ 	REGNO (base) == SP_REG if base is a REG.
+ 
+ 	PR middle-end/35691
+ 	* tree-ssa-reassoc.c (update_range_test): Dump r->exp each time
+ 	if it is different SSA_NAME.
+ 	(optimize_range_tests_cmp_bitwise): New function.
+ 	(optimize_range_tests): Call it.
+ 
+ 2017-09-26  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/82321
+ 	* graphite.c (canonicalize_loop_closed_ssa): Properly check
+ 	for the def being inside the loop.
+ 
+ 2017-09-26  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	* config/s390/vx-builtins.md ("vmslg"): Add missing operand in
+ 	assembler output.
+ 	* config/s390/s390-builtins.def: Fix constraint on op4.
+ 
+ 2017-09-26  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	* config/s390/s390.c (s390_expand_vec_compare): Use the new mode
+ 	independent expanders.
+ 	* config/s390/vector.md ("vec_cmpuneq", "vec_cmpltgt")
+ 	("vec_ordered", "vec_unordered"): New expanders.
+ 
+ 2017-09-26  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	* config/s390/s390.c (s390_preferred_simd_mode): Return V4SFmode
+ 	for SFmode.
+ 
+ 2017-09-26  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	* config/s390/vector.md ("vec_unpacks_low_v16qi"): Rename to
+ 	vec_unpacks_lo_v16qi.
+ 	("vec_unpacku_low_v16qi"): Rename to vec_unpacku_lo_v16qi.
+ 
+ 2017-09-26  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	* config/s390/vector.md ("vec_unpacks_lo_v4sf")
+ 	("vec_unpacks_hi_v4sf", "vec_unpacks_lo_v2df")
+ 	("vec_unpacks_hi_v2df", "vec_pack_trunc_v2df"): New expanders.
+ 
+ 2017-09-26  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	* config/s390/predicates.md ("const_shift_by_byte_operand"): New
+ 	predicate.
+ 	* config/s390/vector.md ("*vec_srb<mode>"): Change modes to V_128
+ 	and V16QI.
+ 	("*vec_slb<mode>"): New insn pattern.
+ 	("vec_shr_<mode>"): New expander.
+ 	* config/s390/vx-builtins.md ("vec_slb<mode>"): Turn into expander
+ 	and force the shift count operand to V16QImode.
+ 	("vec_srb<mode>"): Set shift count mode to V16QI.
+ 
+ 2017-09-26  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	* config/s390/vector.md ("vec_widen_umult_lo_<mode>")
+ 	("vec_widen_umult_hi_<mode>", "vec_widen_smult_lo_<mode>")
+ 	("vec_widen_smult_hi_<mode>"): New expander definitions.
+ 
+ 2017-09-26  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR target/82175
+ 	* config/arm/arm.h (DRIVER_SELF_SPECS): Separate sub-rules with commas.
+ 
+ 2017-09-26  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/82320
+ 	* tree-ssa-sccvn.c (set_ssa_val_to): Changing undef to undef
+ 	isn't a change.
+ 
+ 2017-09-25  Jeff Law  <law@redhat.com>
+ 
+ 	* config/rs6000/rs6000-protos.h (output_probe_stack_range): Update
+ 	prototype for new argument.
+ 	* config/rs6000/rs6000.c (rs6000_emit_allocate_stack_1): New function,
+ 	mostly extracted from rs6000_emit_allocate_stack.
+ 	(rs6000_emit_probe_stack_range_stack_clash): New function.
+ 	(rs6000_emit_allocate_stack): Call
+ 	rs6000_emit_probe_stack_range_stack_clash as needed.
+ 	(rs6000_emit_probe_stack_range): Add additional argument
+ 	to call to gen_probe_stack_range{si,di}.
+ 	(output_probe_stack_range): New.
+ 	(output_probe_stack_range_1): Renamed from output_probe_stack_range.
+ 	(output_probe_stack_range_stack_clash): New.
+ 	(rs6000_emit_prologue): Emit notes into dump file as requested.
+ 	* rs6000.md (allocate_stack): Handle -fstack-clash-protection.
+ 	(probe_stack_range<P:mode>): Operand 0 is now early-clobbered.
+ 	Add additional operand and pass it to output_probe_stack_range.
+ 
+ 2017-09-25  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	PR tree-optimization/82163
+ 	* tree-ssa-loop-manip.h (verify_loop_closed_ssa): New parameter.
+ 	(checking_verify_loop_closed_ssa): New parameter.
+ 	* tree-ssa-loop-manip.c (check_loop_closed_ssa_use): Delete.
+ 	(check_loop_closed_ssa_stmt): Delete.
+ 	(check_loop_closed_ssa_def, check_loop_closed_ssa_bb): New functions.
+ 	(verify_loop_closed_ssa): Check loop closed ssa form for LOOP.
+ 	(tree_transform_and_unroll_loop): Check loop closed ssa form only for
+ 	changed loops.
+ 
+ 2017-09-25  Pekka Jaaskelainen <pekka@parmance.com>
+ 
+ 	* brig-builtins.def: Treat HSAIL barrier builtins as
+ 	setjmp/longjump style functions.
+ 
+ 2017-09-25  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* target.def (constant_alignment): New hook.
+ 	* defaults.h (CONSTANT_ALIGNMENT): Delete.
+ 	* doc/tm.texi.in (CONSTANT_ALIGNMENT): Replace with...
+ 	(TARGET_CONSTANT_ALIGNMENT): ...this new hook.
+ 	* doc/tm.texi: Regenerate.
+ 	* targhooks.h (default_constant_alignment): Declare.
+ 	(constant_alignment_word_strings): Likewise.
+ 	* targhooks.c (default_constant_alignment): New function.
+ 	(constant_alignment_word_strings): Likewise.
+ 	* builtins.c (get_object_alignment_2): Use targetm.constant_alignment
+ 	instead of CONSTANT_ALIGNMENT.
+ 	* varasm.c (align_variable, get_variable_align, build_constant_desc)
+ 	(force_const_mem): Likewise.
+ 	* config/aarch64/aarch64.h (CONSTANT_ALIGNMENT): Delete.
+ 	* config/aarch64/aarch64.c (aarch64_constant_alignment): New function.
+ 	(aarch64_classify_address): Call it instead of CONSTANT_ALIGNMENT.
+ 	(TARGET_CONSTANT_ALIGNMENT): Redefine.
+ 	* config/alpha/alpha.h (CONSTANT_ALIGNMENT): Delete commented-out
+ 	definition.
+ 	* config/arc/arc.h (CONSTANT_ALIGNMENT): Delete.
+ 	* config/arc/arc.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
+ 	constant_alignment_word_strings.
+ 	* config/arm/arm.h (CONSTANT_ALIGNMENT_FACTOR): Delete.
+ 	(CONSTANT_ALIGNMENT): Likewise.
+ 	* config/arm/arm.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
+ 	(arm_constant_alignment): New function.
+ 	* config/bfin/bfin.h (CONSTANT_ALIGNMENT): Delete.
+ 	* config/bfin/bfin.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
+ 	constant_alignment_word_strings.
+ 	* config/cr16/cr16.h (CONSTANT_ALIGNMENT): Delete.
+ 	* config/cr16/cr16.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
+ 	constant_alignment_word_strings.
+ 	* config/cris/cris.h (CONSTANT_ALIGNMENT): Delete.
+ 	* config/cris/cris.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
+ 	(cris_constant_alignment): New function.
+ 	* config/epiphany/epiphany.h (CONSTANT_ALIGNMENT): Delete.
+ 	* config/epiphany/epiphany.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
+ 	(epiphany_constant_alignment): New function.
+ 	* config/fr30/fr30.h (CONSTANT_ALIGNMENT): Delete.
+ 	* config/fr30/fr30.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
+ 	constant_alignment_word_strings.
+ 	* config/frv/frv.h (CONSTANT_ALIGNMENT): Delete.
+ 	* config/frv/frv.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
+ 	constant_alignment_word_strings.
+ 	* config/ft32/ft32.h (CONSTANT_ALIGNMENT): Delete.
+ 	* config/ft32/ft32.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
+ 	constant_alignment_word_strings.
+ 	* config/i386/i386.h (CONSTANT_ALIGNMENT): Delete.
+ 	* config/i386/i386-protos.h (ix86_constant_alignment): Delete.
+ 	* config/i386/i386.c (ix86_constant_alignment): Make static.
+ 	Use the same interface as the target hook.
+ 	(TARGET_CONSTANT_ALIGNMENT): Redefine.
+ 	* config/ia64/ia64.h (CONSTANT_ALIGNMENT): Delete.
+ 	* config/ia64/ia64.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
+ 	constant_alignment_word_strings.
+ 	* config/iq2000/iq2000.h (CONSTANT_ALIGNMENT): Delete.
+ 	* config/iq2000/iq2000.c (iq2000_constant_alignment): New function.
+ 	(TARGET_CONSTANT_ALIGNMENT): Redefine.
+ 	* config/lm32/lm32.h (CONSTANT_ALIGNMENT): Delete.
+ 	* config/lm32/lm32.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
+ 	constant_alignment_word_strings.
+ 	* config/m32r/m32r.h (CONSTANT_ALIGNMENT): Delete.
+ 	* config/m32r/m32r.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
+ 	constant_alignment_word_strings.
+ 	* config/mcore/mcore.h (CONSTANT_ALIGNMENT): Delete.
+ 	* config/mcore/mcore.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
+ 	constant_alignment_word_strings.
+ 	* config/microblaze/microblaze.h (CONSTANT_ALIGNMENT): Delete.
+ 	* config/microblaze/microblaze.c (microblaze_constant_alignment):
+ 	New function.
+ 	(TARGET_CONSTANT_ALIGNMENT): Redefine.
+ 	* config/mips/mips.h (CONSTANT_ALIGNMENT): Delete.
+ 	* config/mips/mips.c (mips_constant_alignment): New function.
+ 	(TARGET_CONSTANT_ALIGNMENT): Redefine.
+ 	* config/mmix/mmix.h (CONSTANT_ALIGNMENT): Delete.
+ 	* config/mmix/mmix-protos.h (mmix_constant_alignment): Delete.
+ 	* config/mmix/mmix.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
+ 	(mmix_constant_alignment): Make static.  Use the same interface
+ 	as the target hook.
+ 	* config/moxie/moxie.h (CONSTANT_ALIGNMENT): Delete.
+ 	* config/moxie/moxie.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
+ 	constant_alignment_word_strings.
+ 	* config/nios2/nios2.h (CONSTANT_ALIGNMENT): Delete.
+ 	* config/nios2/nios2.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
+ 	constant_alignment_word_strings.
+ 	* config/pa/pa.h (CONSTANT_ALIGNMENT): Delete.
+ 	* config/pa/pa.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
+ 	constant_alignment_word_strings.
+ 	* config/powerpcspe/powerpcspe.h (CONSTANT_ALIGNMENT): Delete.
+ 	* config/powerpcspe/powerpcspe.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
+ 	(rs6000_constant_alignment): New function.
+ 	* config/riscv/riscv.h (CONSTANT_ALIGNMENT): Delete.
+ 	* config/riscv/riscv.c (riscv_constant_alignment): New function.
+ 	(TARGET_CONSTANT_ALIGNMENT): Redefine.
+ 	* config/rs6000/rs6000.h (CONSTANT_ALIGNMENT): Delete.
+ 	* config/rs6000/rs6000.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
+ 	(rs6000_constant_alignment): New function.
+ 	* config/s390/s390.h (CONSTANT_ALIGNMENT): Delete.
+ 	* config/s390/s390.c (s390_constant_alignment): New function.
+ 	(TARGET_CONSTANT_ALIGNMENT): Redefine.
+ 	* config/sh/sh.h (CONSTANT_ALIGNMENT): Delete.
+ 	* config/sh/sh.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
+ 	constant_alignment_word_strings.
+ 	* config/sparc/sparc.h (CONSTANT_ALIGNMENT): Delete.
+ 	* config/sparc/sparc.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
+ 	(sparc_constant_alignment): New function.
+ 	* config/spu/spu.h (CONSTANT_ALIGNMENT): Delete.
+ 	* config/spu/spu.c (spu_constant_alignment): New function.
+ 	(TARGET_CONSTANT_ALIGNMENT): Redefine.
+ 	* config/stormy16/stormy16.h (CONSTANT_ALIGNMENT): Delete.
+ 	* config/stormy16/stormy16.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
+ 	constant_alignment_word_strings.
+ 	* config/tilegx/tilegx.h (CONSTANT_ALIGNMENT): Delete.
+ 	* config/tilegx/tilegx.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
+ 	constant_alignment_word_strings.
+ 	* config/tilepro/tilepro.h (CONSTANT_ALIGNMENT): Delete.
+ 	* config/tilepro/tilepro.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
+ 	constant_alignment_word_strings.
+ 	* config/visium/visium.h (CONSTANT_ALIGNMENT): Delete.
+ 	* config/visium/visium.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
+ 	(visium_constant_alignment): New function.
+ 	* config/xtensa/xtensa.h (CONSTANT_ALIGNMENT): Delete.
+ 	* config/xtensa/xtensa.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
+ 	(xtensa_constant_alignment): New function.
+ 	* system.h (CONSTANT_ALIGNMENT): Poison.
+ 
+ 2017-09-25  Will Schmidt  <will_schmidt@vnet.ibm.com>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling
+ 	for early folding of vector stores (ALTIVEC_BUILTIN_ST_*).
+ 	(rs6000_builtin_valid_without_lhs): New helper function.
+ 	* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
+ 	Remove obsoleted code for handling ALTIVEC_BUILTIN_VEC_ST.
+ 
+ 2017-09-25  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* target.h (vec_perm_indices): Use unsigned short rather than
+ 	unsigned char.
+ 	(auto_vec_perm_indices): Likewise.
+ 	* config/aarch64/aarch64.c (aarch64_vectorize_vec_perm_const_ok):
+ 	Use unsigned int rather than unsigned char.
+ 	* config/arm/arm.c (arm_vectorize_vec_perm_const_ok): Likewise.
+ 
+ 2017-09-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	* cfgloop.h (sort_sibling_loops): Declare.
+ 	* cfgloop.c (sort_sibling_loops_cmp): New helper.
+ 	(sort_sibling_loops): New function sorting the sibling loop list
+ 	in RPO order.
+ 	* graphite.c (graphite_transform_loops): Sort sibling loops.
+ 
+ 2017-09-25  Richard Sandiford  <richard.sandifird@linaro.org>
+ 
+ 	* target.def (vec_perm_const_ok): Change sel parameter to
+ 	vec_perm_indices.
+ 	* optabs-query.c (can_vec_perm_p): Update accordingly.
+ 	* doc/tm.texi: Regenerate.
+ 	* config/aarch64/aarch64.c (expand_vec_perm_d): Change perm to
+ 	auto_vec_perm_indices and remove separate nelt field.
+ 	(aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_zip)
+ 	(aarch64_evpc_ext, aarch64_evpc_rev, aarch64_evpc_dup)
+ 	(aarch64_evpc_tbl, aarch64_expand_vec_perm_const_1)
+ 	(aarch64_expand_vec_perm_const): Update accordingly.
+ 	(aarch64_vectorize_vec_perm_const_ok): Likewise.  Change sel
+ 	to vec_perm_indices.
+ 	* config/arm/arm.c (expand_vec_perm_d): Change perm to
+ 	auto_vec_perm_indices and remove separate nelt field.
+ 	(arm_evpc_neon_vuzp, arm_evpc_neon_vzip, arm_evpc_neon_vrev)
+ 	(arm_evpc_neon_vtrn, arm_evpc_neon_vext, arm_evpc_neon_vtbl)
+ 	(arm_expand_vec_perm_const_1, arm_expand_vec_perm_const): Update
+ 	accordingly.
+ 	(arm_vectorize_vec_perm_const_ok): Likewise.  Change sel
+ 	to vec_perm_indices.
+ 	* config/i386/i386.c (ix86_vectorize_vec_perm_const_ok): Change
+ 	sel to vec_perm_indices.
+ 	* config/ia64/ia64.c (ia64_vectorize_vec_perm_const_ok): Likewise.
+ 	* config/mips/mips.c (mips_vectorize_vec_perm_const_ok): Likewise.
+ 	* config/powerpcspe/powerpcspe.c (rs6000_vectorize_vec_perm_const_ok):
+ 	Likewise.
+ 	* config/rs6000/rs6000.c (rs6000_vectorize_vec_perm_const_ok):
+ 	Likewise.
+ 
+ 2017-09-25  Pierre-Marie de Rodat  <derodat@adacore.com>
+ 
+ 	PR debug/82155
+ 	* dwarf2out.c (dwarf2out_early_global_decl): Call dwarf2out_decl
+ 	on the FUNCTION_DECL function context if it has a DIE that is a
+ 	declaration.
+ 
+ 2017-09-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/82285
+ 	* tree-vect-patterns.c (vect_recog_bool_pattern): Also handle
+ 	enumeral types.
+ 
+ 2017-09-25  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	PR target/80035
+ 	PR target/81069
+ 	* config/nvptx/nvptx.c (nvptx_output_call_insn): Add exit after call to
+ 	noreturn function.
+ 
+ 2017-09-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	* graphite-optimize-isl.c (optimize_isl): Fail and dump if
+ 	ISL errors other than isl_error_quota happen.  Dump if the
+ 	schedule is the same.
+ 	* graphite-sese-to-poly.c (build_poly_scop): Fail on ISL
+ 	errors instead of aborting inside ISL.
+ 
+ 2017-09-25  Iain Sandoe  <iain@codesourcery.com>
+ 
+ 	PR target/80556
+ 	* config/i386/darwin.h (REAL_LIB_SPEC): New; put libSystem ahead
+ 	of libgcc_eh for m64.
+ 	* config/i386/darwin64.h: Likewise.
+ 
+ 2017-09-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/82144
+ 	* dwarf2out.c (gen_enumeration_type_die): Do not add alignment
+ 	attribute for incomplete types nor twice for complete ones.
+ 
+ 2017-09-24  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/82267
+ 	* config/i386/i386.c (ix86_print_operand_address_as): Encode
+ 	%esp as %rsp to avoid 0x67 prefix if there is no index or base
+ 	register.
+ 
+ 2017-09-23  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR bootstrap/82306
+ 	* config/i386/i386.opt (mprefer-avx256): Use
+ 	ix86_target_flags variable.
+ 	* config/i386/i386.c (ix86_target_string): Move
+ 	-mprefer-avx256 to flag2_opts.
+ 
+ 2017-09-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/35691
+ 	* match.pd: Simplify x == -1 & y == -1 into (x & y) == -1
+ 	and x != -1 | y != -1 into (x & y) != -1.
+ 
+ 2017-09-22  Steve Ellcey  <sellcey@cavium.com>
+ 
+ 	* config.gcc: Add new case statement to set
+ 	default_gnu_indirect_function.  Remove it from x86_64-*-linux*,
+ 	i[34567]86-*, powerpc*-*-linux*spe*, powerpc*-*-linux*, s390-*-linux*,
+ 	s390x-*-linux* case statements.   Added aarch64 to the list of
+ 	supported architectures.
+ 
+ 2017-09-22  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	PR tree-optimization/82289
+ 	* tree-vect-data-refs.c (vect_get_peeling_costs_all_drs): Check
+ 	STMT_VINFO_RELEVANT_P.
+ 
+ 2017-09-22  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* tree-vrp.c (extract_range_from_multiplicative_op_1): Assert
+ 	for VR_RANGE only; don't allow VR_ANTI_RANGE.
+ 	(extract_range_from_binary_expr_1): Don't call
+ 	extract_range_from_multiplicative_op_1 if !range_int_cst_p.
+ 
+ 2017-09-22  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* target.def (preferred_vector_alignment): New hook.
+ 	* doc/tm.texi.in (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): New
+ 	hook.
+ 	* doc/tm.texi: Regenerate.
+ 	* targhooks.h (default_preferred_vector_alignment): Declare.
+ 	* targhooks.c (default_preferred_vector_alignment): New function.
+ 	* tree-vectorizer.h (dataref_aux): Add a target_alignment field.
+ 	Expand commentary.
+ 	(DR_TARGET_ALIGNMENT): New macro.
+ 	(aligned_access_p): Update commentary.
+ 	(vect_known_alignment_in_bytes): New function.
+ 	* tree-vect-data-refs.c (vect_calculate_required_alignment): New
+ 	function.
+ 	(vect_compute_data_ref_alignment): Set DR_TARGET_ALIGNMENT.
+ 	Calculate the misalignment based on the target alignment rather than
+ 	the vector size.
+ 	(vect_update_misalignment_for_peel): Use DR_TARGET_ALIGMENT
+ 	rather than TYPE_ALIGN / BITS_PER_UNIT to update the misalignment.
+ 	(vect_enhance_data_refs_alignment): Mask the byte misalignment with
+ 	the target alignment, rather than masking the element misalignment
+ 	with the number of elements in a vector.  Also use the target
+ 	alignment when calculating the maximum number of peels.
+ 	(vect_find_same_alignment_drs): Use vect_calculate_required_alignment
+ 	instead of TYPE_ALIGN_UNIT.
+ 	(vect_duplicate_ssa_name_ptr_info): Remove stmt_info parameter.
+ 	Measure DR_MISALIGNMENT relative to DR_TARGET_ALIGNMENT.
+ 	(vect_create_addr_base_for_vector_ref): Update call accordingly.
+ 	(vect_create_data_ref_ptr): Likewise.
+ 	(vect_setup_realignment): Realign by ANDing with
+ 	-DR_TARGET_MISALIGNMENT.
+ 	* tree-vect-loop-manip.c (vect_gen_prolog_loop_niters): Calculate
+ 	the number of peels based on DR_TARGET_ALIGNMENT.
+ 	* tree-vect-stmts.c (get_group_load_store_type): Compare the gap
+ 	with the guaranteed alignment boundary when deciding whether
+ 	overrun is OK.
+ 	(vectorizable_mask_load_store): Interpret DR_MISALIGNMENT
+ 	relative to DR_TARGET_ALIGNMENT instead of TYPE_ALIGN_UNIT.
+ 	(ensure_base_align): Remove stmt_info parameter.  Get the
+ 	target base alignment from DR_TARGET_ALIGNMENT.
+ 	(vectorizable_store): Update call accordingly.   Interpret
+ 	DR_MISALIGNMENT relative to DR_TARGET_ALIGNMENT instead of
+ 	TYPE_ALIGN_UNIT.
+ 	(vectorizable_load): Likewise.
+ 
+ 2017-09-22  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* tree-vectorizer.h (vect_get_scalar_dr_size): New function.
+ 	* tree-vect-data-refs.c (vect_update_misalignment_for_peel): Use it.
+ 	(vect_enhance_data_refs_alignment): Likewise.
+ 
+ 2017-09-22  Richard Earnshaw  <richard.earnshaw@arm.com>
+ 
+ 	* config/arm/parsecpu.awk (fatal): Note that we've encountered an
+ 	error.  Only quit immediately if parsing is complete.
+ 	(BEGIN): Initialize fatal_err and parse_done.
+ 	(begin fpu, end fpu): Check number of arguments.
+ 	(begin arch, end arch): Likewise.
+ 	(begin cpu, end cpu): Likewise.
+ 	(cname, tune for, tune flags, architecture, fpu, option): Likewise.
+ 	(optalias): Likewise.
+ 
+ 2017-09-22  Richard Earnshaw  <richard.earnshaw@arm.com>
+ 
+ 	* config.gcc (arm*-*-*): Don't add arm-isa.h to tm_p_file.
+ 	* config/arm/arm-isa.h: Delete.  Move definitions to ...
+ 	* arm-cpus.in: ... here.  Use new feature and fgroup values.
+ 	* config/arm/arm.c (arm_option_override): Use lower case for feature
+ 	bit names.
+ 	* config/arm/arm.h (TARGET_HARD_FLOAT): Likewise.
+ 	(TARGET_VFP3, TARGET_VFP5, TARGET_FMA): Likewise.
+ 	* config/arm/parsecpu.awk (END): Add new command 'isa'.
+ 	(isa_pfx): Delete.
+ 	(print_isa_bits_for): New function.
+ 	(gen_isa): New function.
+ 	(gen_comm_data): Use print_isa_bits_for.
+ 	(define feature): New keyword.
+ 	(define fgroup): New keyword.
+ 	* config/arm/t-arm (TM_H): Remove.
+ 	(GTM_H): Add arm-isa.h.
+ 	(arm-isa.h): Add rule to generate file.
+ 	* common/config/arm/arm-common.c: (arm_canon_arch_option): Use lower
+ 	case for feature bit names.
+ 
+ 2017-09-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	* graphite-isl-ast-to-gimple.c (graphite_verify): Inline into
+ 	single caller.
+ 	(graphite_regenerate_ast_isl): Do not reset SCEV.  Move debug
+ 	print of no dependency loops ...
+ 	* graphite.c (graphite_transform_loops): ... here.
+ 	(canonicalize_loop_closed_ssa_form): Work from inner to outer
+ 	loops.
+ 	(same_close_phi_node, remove_duplicate_close_phi,
+ 	make_close_phi_nodes_unique, defined_in_loop_p): Fold into ...
+ 	(canonicalize_loop_closed_ssa): ... here and simplify.
+ 	* graphite-optimize-isl.c: Include tree-vectorizer.h.
+ 	(optimize_isl): Use dump_printf_loc to tell when we stopped
+ 	optimizing because of an ISL timeout.
+ 
+ 2017-09-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/82291
+ 	* tree-if-conv.c (predicate_mem_writes): Make sure to
+ 	remove writes in blocks predicated with false.
+ 
+ 2017-09-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	* sese.c: Include cfganal.h.
+ 	(if_region_set_false_region): Remove.
+ 	(create_if_region_on_edge): Likewise.
+ 	(move_sese_in_condition): Re-implement without destroying
+ 	dominators.
+ 
+ 2017-09-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	* graphite-isl-ast-to-gimple.c (translate_pending_phi_nodes):
+ 	Verify both BBs contain loop PHI nodes before dispatching to
+ 	copy_loop_phi_args.
+ 	(graphite_regenerate_ast_isl): Do not recompute dominators,
+ 	do not verify three times.  Restructure for clarity.
+ 	* graphite-scop-detection.c (same_close_phi_node,
+ 	remove_duplicate_close_phi, make_close_phi_nodes_unique,
+ 	defined_in_loop_p, canonicalize_loop_closed_ssa,
+ 	canonicalize_loop_closed_ssa_form): Simplify, remove excess
+ 	checking and SSA rewrite, move to ...
+ 	* graphite.c: ... here.  Include ssa.h and tree-ssa-loop-manip.h.
+ 	(graphite_initialize): Do not pass in ctx, do not reset the
+ 	SCEV cache, compute only dominators.
+ 	(graphite_transform_loops): Allocate ISL ctx after
+ 	graphite_initialize.  Call canonicalize_loop_closed_ssa_form.
+ 	Maintain post-dominators only around build_scops.
+ 	* sese.c (if_region_set_false_region): Make static.  Free
+ 	and recompute dominators.
+ 	(move_sese_in_condition): Assert we don't get called with
+ 	post-dominators computed.
+ 	* sese.h (if_region_set_false_region): Remove.
+ 
+ 2017-09-22  Sergey Shalnov  <sergey.shalnov@intel.com>
+ 
+ 	* config/i386/sse.md ("mov<mode>_internal"): Use <sseinsnmode>
+ 	mode attribute for TARGET_AVX512VL.
+ 
+ 2017-09-21  Sergey Shalnov  <sergey.shalnov@intel.com>
+ 
+ 	* config/i386/i386.opt (mprefer-avx256): New option.
+ 	* config/i386/i386.c (ix86_target_string): Add -mprefer-avx256
+ 	to flag_opts.
+ 	(ix86_preferred_simd_mode): Return 256-bit AVX modes
+ 	for TARGET_PREFER_AVX256.
+ 	* doc/invoke.texi (x86 Options): Document -mprefer-avx256.
+ 
+ 2017-09-21  Jeff Law  <law@redhat.com>
+ 
+ 	* config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash):
+ 	Fix dump output if the only stack space is for pushed registers.
+ 
+ 2017-09-21  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* config/spu/spu.c (spu_sched_adjust_cost): Update after renaming
+ 	of insn_cost.
+ 
+ 2017-09-21  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR c/81882
+ 	* doc/extend.texi (attribute ifunc): Avoid relying on ill-formed
+ 	code (in C++) or code that triggers warnings.
+ 
+ 2017-09-21  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* stor-layout.c (bit_from_pos): Do not distribute the conversion.
+ 
+ 2017-09-21  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* haifa-sched.c: Rename insn_cost to insn_sched_cost.
+ 	* sched-rgn.c: Ditto.
+ 	* sel-sched-ir.c: Ditto.
+ 
+ 2017-09-21  Alexander Monakov  <amonakov@ispras.ru>
+ 
+ 	* toplev.h (set_random_seed): Adjust return type.
+ 	* toplev.c (init_local_tick): Move eager initialization of random_seed
+ 	to get_random_seed.  Adjust comment.
+ 	(init_random_seed): Inline to get_random_seed, delete.
+ 	(get_random_seed): Initialize random_seed lazily.
+ 	(set_random_seed): Do not return previous value.
+ 	(print_switch_value): Do not call get_random_seed.
+ 
+ 2017-09-21  Evgeny Kudryashov  <kudryashov@ispras.ru>
+ 
+ 	* cgraph.c (delete_function_version): New, broken out from...
+ 	(cgraph_node::delete_function_version): ...here.  Rename to
+ 	cgraph_node::delete_function_version_by_decl.  Update all uses.
+ 	(cgraph_node::remove): Call delete_function_version.
+ 
+ 2017-09-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/81715
+ 	* tree-inline.c (expand_call_inline): Emit clobber stmts for
+ 	VAR_DECLs to which addressable non-volatile parameters are mapped
+ 	and for id->retvar after the return value assignment.  Clear
+ 	id->retval and id->retbnd after inlining.
+ 
+ 2017-09-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/82276
+ 	PR tree-optimization/82244
+ 	* tree-vrp.c (build_assert_expr_for): Set
+ 	SSA_NAME_OCCURS_IN_ABNORMAL_PHI if the variable we assert on
+ 	has it set.
+ 	(remove_range_assertions): Revert earlier change.
+ 
+ 2017-09-21  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	PR target/71951
+ 	* config/aarch64/aarch64.h (LIBGCC2_UNWIND_ATTRIBUTE): Define.
+ 
+ 2017-09-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	* graphite-isl-ast-to-gimple.c (graphite_regenerate_ast_isl):
+ 	Restore valid IL after code generation errors.
+ 	* graphite.c (graphite_transform_loops): Diagnose code
+ 	generation issues as MSG_MISSED_OPTIMIZATION and continue
+ 	with processing SCOPs.
+ 
+ 2017-09-21  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* calls.c (compute_argument_addresses): Use simplify_gen_binary
+ 	rather than choosing between plus_constant and gen_rtx_<CODE>.
+ 	* expr.c (emit_push_insn): Likewise.
+ 	(expand_expr_real_2): Likewise.
+ 
+ 2017-09-21  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* loop-unroll.c (split_iv): Call copy_rtx on the step.
+ 
+ 2017-09-21  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* tree.c (find_atomic_core_type): Check tree_fits_uhwi_p before
+ 	calling tree_to_uhwi.
+ 
+ 2017-09-21  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* tree-ssa-ccp.c (get_value_for_expr): Use a positive test for
+ 	INTEGER_CST rather than a negative test for ADDR_EXPR.
+ 
+ 2017-09-21  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* tree-vrp.c (extract_range_from_binary_expr_1): Check
+ 	int_cst_rangeN before calling value_range_constant_singleton (&vrN).
+ 
+ 2017-09-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/71351
+ 	* graphite-isl-ast-to-gimple.c (translate_isl_ast_to_gimple::
+ 	graphite_create_new_loop_guard): Remove, fold remaining parts
+ 	into caller ...
+ 	(translate_isl_ast_node_for): ... here and simplify.
+ 
+ 2017-09-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/82260
+ 	* config/i386/i386.md (*movqi_internal): Replace (=q,q) alternative
+ 	with (=Q,Q), (=R,R) and (=r,r) alternatives, only enable the
+ 	latter two for 64-bit, renumber alternatives, for -Os imov (=q,n)
+ 	alternative always use QI mode, for -Os imov (=R,R) alternative
+ 	always use SI mode, for imov (=Q,Q) or (=r,r) alternatives
+ 	ignore -Os.
+ 
+ 2017-09-20  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 	    Jeff Law  <law@redhat.com>
+ 
+ 	* config/s390/s390.c (MIN_UNROLL_PROBES): Define.
+ 	(allocate_stack_space): New function, partially extracted from
+ 	s390_emit_prologue.
+ 	(s390_emit_prologue): Track offset to most recent stack probe.
+ 	Code to allocate space moved into allocate_stack_space.
+ 	Dump actions when no stack is allocated.
+ 	(s390_prologue_plus_offset): New function.
+ 	(s390_emit_stack_probe): Likewise.
+ 
+ 2017-09-20  Alexandre Oliva  <aoliva@redhat.com>
+ 
+ 	* common.opt (Wa, Wl, Wp, g, gz=): Add
+ 	RejectNegative.
+ 	(gno-column-info): Remove.
+ 	(gcolumn-info): Drop RejectNegative.
+ 	(gno-): New prefix.
+ 	(gno-record-gcc-switches): Remove.
+ 	(grecord-gcc-switches): Drop RejectNegative.
+ 	(gno-split-dwarf): Remove.
+ 	(gsplit-dwarf): Drop RejectNegative.
+ 	(gno-strict-dwarf): Remove.
+ 	(gstrict-dwarf): Drop RejectNegative.
+ 	* config/darwin.opt (gfull, gused): Add RejectNegative.
+ 	* dwarf2out.c (gen_producer_string): Drop
+ 	gno-record-gcc-switches handler.
+ 	* optc-gen.awk: Add g to prefixes with negative forms.
+ 	* opts-common.c (remapping_prefix_p): New.
+ 	(find_opt): Check it.
+ 	(generate_canonical_option): Test g prefix.
+ 	(option_map): Add -gno- mapping.
+ 	(add_misspelling_candidates): Check remapping_prefix_p.
+ 
+ 2017-09-20  Jeff Law  <law@redhat.com>
+ 
+ 	* config/powerpcspe/powerpcspe.c (rs6000_expand_prologue): Fix
+ 	thinko in stack clash protection support.
+ 
+ 	* explow.c (compute_stack_clash_protection_loop_data): Use
+ 	CONST_INT_P instead of explicit test.  Verify object is a
+ 	CONST_INT_P before looking at INTVAL.
+ 	(anti_adjust_stack_and_probe_stack_clash): Use CONST_INT_P
+ 	instead of explicit test.
+ 
+ 2017-09-20  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR target/77687
+ 	* config/rs6000/rs6000.md (stack_restore_tie): Store to a scratch
+ 	address instead of to r1 and r11.
+ 
+ 2017-09-20  Sebastian Peryt  <sebastian.peryt@intel.com>
+ 
+ 	* config.gcc: Support "knm".
+ 	* config/i386/driver-i386.c (host_detect_local_cpu): Detect "knm".
+ 	* config/i386/i386-c.c (ix86_target_macros_internal): Handle
+ 	PROCESSOR_KNM.
+ 	* config/i386/i386.c (m_KNM): Define.
+ 	(processor_target_table): Add "knm".
+ 	(PTA_KNM): Define.
+ 	(ix86_option_override_internal): Add "knm".
+ 	(ix86_issue_rate): Add PROCESSOR_KNM.
+ 	(ix86_adjust_cost): Ditto.
+ 	(ia32_multipass_dfa_lookahead): Ditto.
+ 	(get_builtin_code_for_version): Handle PROCESSOR_KNM.
+ 	(fold_builtin_cpu): Add M_INTEL_KNM.
+ 	* config/i386/i386.h (processor_costs): Define TARGET_KNM.
+ 	(processor_type): Add PROCESSOR_KNM.
+ 	* config/i386/x86-tune.def: Add m_KNM.
+ 	* doc/invoke.texi: Add knm as x86 -march=/-mtune= CPU type.
+ 
+ 2017-09-20  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/80213
+ 	* graphite-scop-detection.c (trivially_empty_bb_p): Labels
+ 	are allowed in empty BBs as well.
+ 	(canonicalize_loop_closed_ssa): Also look for other complex
+ 	edges.
+ 	(scop_detection::get_sese): Include the loop-closed PHI block
+ 	in loop SESEs.
+ 	(scop_detection::merge_sese): Remove code adding extra blocks.
+ 	(scop_detection::region_has_one_loop): Adjust for get_sese changes.
+ 	(build_scops): Assert the final returned scop is invalid.
+ 
+ 2017-09-20  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/82264
+ 	* tree-ssa-sccvn.c (vn_phi_eq): Use safe_dyn_cast to check
+ 	for GIMPLE_CONDs.
+ 	(vn_phi_lookup): Likewise.
+ 	(vn_phi_insert): Likewise.
+ 
+ 2017-09-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* dwarf2out.c (tree_add_const_value_attribute): For INTEGER_CST
+ 	that fits into uhwi or shwi, add DW_AT_const_value regardless
+ 	of early_dwarf without going through RTL, using add_AT_unsigned
+ 	or add_AT_int.
+ 
+ 	* dwarf2out.c (DEBUG_LTO_DWO_INFO_SECTION): Reorder defines.
+ 	(DEBUG_LTO_ABBREV_SECTION): Likewise.
+ 	(DEBUG_LTO_MACINFO_SECTION): Likewise.
+ 	(DEBUG_MACRO_SECTION): Likewise.
+ 	(DEBUG_LTO_MACRO_SECTION): Likewise.
+ 	(DEBUG_STR_DWO_SECTION): Likewise.
+ 	(DEBUG_LTO_STR_DWO_SECTION): Likewise.
+ 	(DEBUG_LTO_LINE_SECTION): Drop .dwo suffix from the name.
+ 	(DEBUG_LTO_DWO_LINE_SECTION): Define.
+ 	(DEBUG_LTO_LINE_STR_SECTION): Define.
+ 	(init_sections_and_labels): Initialize debug_line_str_section
+ 	variable.  Initialize debug_loc_section for -gdwarf-5 to
+ 	DEBUG_LOCLISTS_SECTION.  Formatting fixes.
+ 
+ 2017-09-20  Richard Biener  <rguenther@suse.de>
+ 
+ 	* graphite-sese-to-poly.c (extract_affine): Properly handle
+ 	POINTER_PLUS_EXPR, BIT_NOT_EXPR and conversion to signed.
+ 
+ 2017-09-20  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/81373
+ 	* graphite-scop-detection.c (build_cross_bb_scalars_def):
+ 	Force SESE live-out defs to be handled even if they are
+ 	scev_analyzable_p.
+ 
+ 2017-09-19  Jeff Law  <law@redhat.com>
+ 
+ 	* combine-stack-adj.c (combine_stack_adjustments_for_block): Do
+ 	nothing for stack adjustments with REG_STACK_CHECK.
+ 	* sched-deps.c (parse_add_or_inc): Reject insns with
+ 	REG_STACK_CHECK from dependency breaking.
+ 	* config/i386/i386.c (pro_epilogue_adjust_stack): Return insn.
+ 	(ix86_adjust_satck_and_probe_stack_clash): Add REG_STACK_NOTEs.
+ 	* reg-notes.def (STACK_CHECK): New note.
+ 
+ 	* config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): New.
+ 	(ix86_expand_prologue): Dump stack clash info as needed.
+ 	Call ix86_adjust_stack_and_probe_stack_clash as needed.
+ 
+ 	* function.c (dump_stack_clash_frame_info): New function.
+ 	* function.h (dump_stack_clash_frame_info): Prototype.
+ 	(enum stack_clash_probes): New enum.
+ 
+ 	* config/alpha/alpha.c (alpha_expand_prologue): Also check
+ 	flag_stack_clash_protection.
+ 	* config/arm/arm.c (arm_compute_static_chain_stack_bytes): Likewise.
+ 	(arm_expand_prologue, thumb1_expand_prologue): Likewise.
+ 	(arm_frame_pointer_required): Likewise.
+ 	* config/ia64/ia64.c (ia64_compute_frame_size): Likewise.
+ 	(ia64_expand_prologue): Likewise.
+ 	* config/mips/mips.c (mips_expand_prologue): Likewise.
+ 	* config/powerpcspe/powerpcspe.c (rs6000_expand_prologue): Likewise.
+ 	* config/sparc/sparc.c (sparc_expand_prologue): Likewise.
+ 	(sparc_flat_expand_prologue): Likewise.
+ 	* config/spu/spu.c (spu_expand_prologue): Likewise.
+ 
+ 	* explow.c: Include "params.h".
+ 	(anti_adjust_stack_and_probe_stack_clash): New function.
+ 	(get_stack_check_protect): Likewise.
+ 	(compute_stack_clash_protection_loop_data): Likewise.
+ 	(emit_stack_clash_protection_loop_start): Likewise.
+ 	(emit_stack_clash_protection_loop_end): Likewise.
+ 	(allocate_dynamic_stack_space): Use get_stack_check_protect.
+ 	Use anti_adjust_stack_and_probe_stack_clash.
+ 	* explow.h (compute_stack_clash_protection_loop_data): Prototype.
+ 	(emit_stack_clash_protection_loop_start): Likewise.
+ 	(emit_stack_clash_protection_loop_end): Likewise.
+ 	* rtl.h (get_stack_check_protect): Prototype.
+ 	* target.def (stack_clash_protection_final_dynamic_probe): New hook.
+ 	* targhooks.c (default_stack_clash_protection_final_dynamic_probe): New.
+ 	* targhooks.h (default_stack_clash_protection_final_dynamic_probe):
+ 	Prototype.
+ 	* doc/tm.texi.in (TARGET_STACK_CLASH_PROTECTION_FINAL_DYNAMIC_PROBE):
+ 	Add @hook.
+ 	* doc/tm.texi: Rebuilt.
+ 	* config/aarch64/aarch64.c (aarch64_expand_prologue): Use
+ 	get_stack_check_protect.
+ 	* config/alpha/alpha.c (alpha_expand_prologue): Likewise.
+ 	* config/arm/arm.c (arm_expand_prologue): Likewise.
+ 	(arm_frame_pointer_required): Likewise.
+ 	* config/i386/i386.c (ix86_expand_prologue): Likewise.
+ 	* config/ia64/ia64.c (ia64_expand_prologue): Likewise.
+ 	* config/mips/mips.c (mips_expand_prologue): Likewise.
+ 	* config/powerpcspe/powerpcspe.c (rs6000_emit_prologue): Likewise.
+ 	* config/rs6000/rs6000.c (rs6000_emit_prologue): Likewise.
+ 	* config/sparc/sparc.c (sparc_expand_prologue): Likewise.
+ 	(sparc_flat_expand_prologue): Likewise.
+ 
+ 	* common.opt (-fstack-clash-protection): New option.
+ 	* flag-types.h (enum stack_check_type): Note difference between
+ 	-fstack-check= and -fstack-clash-protection.
+ 	* params.def (PARAM_STACK_CLASH_PROTECTION_GUARD_SIZE): New PARAM.
+ 	(PARAM_STACK_CLASH_PROTECTION_PROBE_INTERVAL): Likewise.
+ 	* toplev.c (process_options): Issue warnings/errors for cases
+ 	not handled with -fstack-clash-protection.
+ 	* doc/invoke.texi (-fstack-clash-protection): Document new option.
+ 	(-fstack-check): Note additional problem with -fstack-check=generic.
+ 	Note that -fstack-check is primarily for Ada and refer users
+ 	to -fstack-clash-protection for stack-clash-protection.
+ 	Document new params for stack clash protection.
+ 
+ 2017-09-19  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.c (ix86_split_long_move): Do not handle
+ 	address used for LEA in a special way.
+ 
+ 2017-09-19  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* simplify-rtx.c (simplify_binary_operation_1): Fix typo in comment.
+ 
+ 2017-09-19  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR c/81854
+ 	* cgraphunit.c (handle_alias_pairs): Reject aliases between functions
+ 	of incompatible types.
+ 
+ 2017-09-19  Will Schmidt  <will_schmidt@vnet.ibm.com>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling
+ 	for early folding of vector loads (ALTIVEC_BUILTIN_LVX_*).
+ 	* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
+ 	Remove obsoleted code for handling ALTIVEC_BUILTIN_VEC_LD.
+ 
+ 2017-09-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/82244
+ 	* tree-vrp.c (remove_range_assertions): Do not propagate
+ 	a constant to abnormals but replace the assert with a copy.
+ 
+ 2017-09-19  Alexander Monakov  <amonakov@ispras.ru>
+ 
+ 	PR rtl-optimization/57878
+ 	PR rtl-optimization/68988
+ 	* lra-assigns.c (reload_pseudo_compare_func): Remove fragmentation
+ 	avoidance test involving non_reload_pseudos.  Move frequency test
+ 	below the general fragmentation avoidance test.
+ 
+ 2017-09-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/69728
+ 	* graphite-sese-to-poly.c (schedule_error): New global.
+ 	(add_loop_schedule): Handle empty domain by failing the
+ 	schedule.
+ 	(build_original_schedule): Handle schedule_error.
+ 
+ 2017-09-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	* graphite-scop-detection.c (scop_detection::can_represent_loop):
+ 	Do not iterate to sibling loops but only to siblings of inner
+ 	loops.
+ 
+ 2017-09-18  Andreas Schwab  <schwab@linux-m68k.org>
+ 
+ 	PR target/81613
+ 	* config/m68k/m68k.md (moveq feeding equality comparison): Check
+ 	that the registers are different.
+ 
+ 2017-09-18  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.c (fold_builtin_cpu): Add M_AMDFAM17H
+ 	to processor_model and "amdfam17h" to arch_names_table.
+ 	* doc/extend.texi (__builtin_cpu_is): Document amdfam17h CPU name.
+ 
+ 2017-09-18  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/82234
+ 	* doc/extend.texi: Add @findex entry for __builtin_shuffle.
+ 
+ 2017-09-18  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* tree-vectorizer.h (vect_slp_analyze_operations): Replace parameters
+ 	with a vec_info *.
+ 	* tree-vect-loop.c (vect_analyze_loop_operations): Update call
+ 	accordingly.
+ 	* tree-vect-slp.c (vect_slp_analyze_node_operations): Add vec_info *
+ 	parameter.  Set SLP_TREE_NUMBER_OF_VEC_STMTS here rather than in
+ 	vect_schedule_slp_instance.
+ 	(vect_slp_analyze_operations): Replace parameters with a vec_info *.
+ 	Update call to vect_slp_analyze_node_operations.  Simplify return
+ 	value.
+ 	(vect_slp_analyze_bb_1): Update call accordingly.
+ 	(vect_schedule_slp_instance): Remove vectorization_factor parameter.
+ 	Don't calculate SLP_TREE_NUMBER_OF_VEC_STMTS here.
+ 	(vect_schedule_slp): Update call accordingly.
+ 
+ 2017-09-18  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* tree-vect-data-refs.c (vect_get_smallest_scalar_type): Cope
+ 	with types that aren't in fact scalar.
+ 
+ 2017-09-18  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* tree-vect-slp.c (vect_record_max_nunits): New function,
+ 	split out from...
+ 	(vect_build_slp_tree_1): ...here.
+ 	(vect_build_slp_tree_2): Call it for phis too.
+ 
+ 2017-09-18  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* tree-vect-stmts.c (vectorizable_mask_load_store): Pass mask_vectype
+ 	to vect_get_vec_def_for_operand when getting the mask operand.
+ 
+ 2017-09-18  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* tree-vect-loop.c (vectorizable_live_operation): Fix type of
+ 	bitstart.
+ 
+ 2017-09-18  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* tree-vect-loop.c (vectorizable_live_operation): Fix element size
+ 	calculation for vector booleans.
+ 
+ 2017-09-18  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* tree-vect-stmts.c (can_vectorize_live_stmts): New function,
+ 	split out from...
+ 	(vect_transform_stmt): ...here.
+ 	(vect_analyze_stmt): Use it instead of calling
+ 	vectorizable_live_operation directly.
+ 
+ 2017-09-18  Cesar Philippidis  <cesar@codesourcery.com>
+ 
+ 	* omp-offload.c (oacc_xform_loop): Enable SIMD vectorization on
+ 	non-SIMT targets in acc vector loops.
+ 
+ 2017-09-18  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* configure.ac: Add arc and check if assembler supports gdwarf2.
+ 	* configure: Regenerate.
+ 
+ 2017-09-18  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/82220
+ 	* tree-vect-loop.c (vect_estimate_min_profitable_iters): Exclude
+ 	epilogue niters from the min_profitable_iters compute.
+ 
+ 2017-09-18  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/82145
+ 	* config/i386/i386.c (ix86_init_large_pic_reg): Revert 2017-09-01
+ 	changes.  Turn CODE_LABEL into NOTE_INSN_DELETED_LABEL immediately.
+ 	(ix86_init_pic_reg): Revert 2017-09-01 changes.
+ 
+ 2017-09-18  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR target/81361
+ 	* dwarf2cfi.c (add_cfis_to_fde): Do not generate DW_CFA_set_loc after
+ 	switching to a new text section.
+ 
+ 2017-09-18  Richard Biener  <rguenther@suse.de>
+ 
+ 	* graphite-scop-detection.c (scop_detection::stmt_has_simple_data_ref):
+ 	Simplify.
+ 	(build_alias_set): Reject aliases with no access function.
+ 
+ 2017-09-18  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/79622
+ 	* graphite-scop-detection.c (build_cross_bb_scalars_def): Properly
+ 	handle PHIs.
+ 	(build_cross_bb_scalars_use): Likewise.
+ 
+ 2017-09-18  Pierre-Marie de Rodat  <derodat@adacore.com>
+ 
+ 	* cgraph.h (cgraph_thunk_info): Fix a typo in a comment.
+ 
+ 2017-09-18  Alan Modra  <amodra@gmail.com>
+ 
+ 	PR target/81996
+ 	* gcc/config/rs6000/rs6000.c (rs6000_return_addr): Use
+ 	stack_pointer_rtx for count 0.  Update comments.  Break up
+ 	large rtl expression.
+ 
+ 2017-09-17  Daniel Santos  <daniel.santos@pobox.com>
+ 
+ 	* config/i386/i386.c (xlogue_layout::STUB_NAME_MAX_LEN):
+ 	Increase to 20 bytes.
+ 	(xlogue_layout::s_stub_names): Add an additional size-2 diminsion.
+ 	(xlogue_layout::get_stub_name): Modify to select the appropairate sse
+ 	or avx version of the stub.
+ 
+ 2017-09-17  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/82166
+ 	* config/i386/i386.c (ix86_finalize_stack_frame_flags): Properly
+ 	compute the minimum stack alignment.  Also update preferred stack
+ 	boundary for leaf functions.
+ 
+ 2017-09-16  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	PR tree-optimization/82228
+ 	* tree-vect-loop.c (vectorizable_live_operation): Move initialization
+ 	of ncopies.
+ 
+ 2017-09-16  Chung-Ju Wu  <jasonwucj@gmail.com>
+ 
+ 	* common/config/nds32/nds32-common.c
+ 	(nds32_option_optimization_table): Refine formatting.
+ 	(nds32_option_optimization_table): Use -fsched-pressure and
+ 	-fomit-frame-pointer for specific optimization level.
+ 
+ 2017-09-16  Chung-Ju Wu  <jasonwucj@gmail.com>
+ 
+ 	* config/nds32/nds32.c: Refine formatting and comments.
+ 	* config/nds32/nds32.h: Likewise.
+ 	* config/nds32/nds32.md: Likewise.
+ 	* config/nds32/nds32-cost.c: Likewise.
+ 	* config/nds32/nds32-isr.c: Likewise.
+ 	* config/nds32/nds32-md-auxiliary.c: Likewise.
+ 	* config/nds32/nds32-multiple.md: Likewise.
+ 	* config/nds32/nds32-predicates.c: Likewise.
+ 
+ 2017-09-15  Andrew Sutton  <andrew.n.sutton@gmail.com>
+ 	    Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Add support for -std=c++2a.
+ 	* doc/cpp.texi (__cplusplus): Document value for -std=c++2a
+ 	or -std=gnu+2a.
+ 	* doc/invoke.texi: Document -std=c++2a and -std=gnu++2a.
+ 
+ 2017-09-15  Steve Ellcey  <sellcey@cavium.com>
+ 
+ 	PR target/82066
+ 	* doc/extend.texi (Common Function Attributes): Add 
+ 	references to ARM, AArch64, and S/390 specific attributes.
+ 	(Function Specific Option Pragmas): Add AArch64 and S/390
+ 	to list of back ends that support the target pragma.
+ 
+ 2017-09-15  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* doc/standards.texi: Fix C++17 description.  Update URLs for
+ 	C++11 & 14.
+ 
+ 2017-09-15  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+ 
+ 	* common.opt (Wcast-align=strict): New warning option.
+ 	* doc/invoke.texi: Document -Wcast-align=strict. 
+ 
+ 2017-09-15  Pierre-Marie de Rodat  <derodat@adacore.com>
+ 
+ 	* cgraph.h (cgraph_thunk_info): Add comments.
+ 	* cgraph.c (cgraph_node::create_thunk): Adjust comment, make
+ 	assert for VIRTUAL_* arguments stricter.
+ 
+ 2017-09-15  Jackson Woodruff  <jackson.woodruff@arm.com>
+ 
+ 	PR tree-optimization/71026
+ 	* match.pd: Move RDIV patterns from fold-const.c
+ 	* fold-const.c (distribute_real_division): Removed.
+ 	(fold_binary_loc): Remove calls to distribute_real_divison.
+ 
+ 2017-09-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* doc/invoke.texi: Document -std=c++17 and -std=gnu++17 and document
+ 	c++1z and gnu++1z as deprecated.  Change other references to
+ 	-std=c++1z to -std=c++17 and -std=gnu++1z to -std=gnu++17.
+ 	Change -Wc++1z-compat to -Wc++17-compat.
+ 	* doc/cpp.texi: Document -std=c++17 defines __cplusplus 201703L.
+ 	* dwarf2out.c (highest_c_language): Handle C++17.
+ 	(gen_compile_unit_die): Likewise.
+ 
+ 2017-09-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/82192
+ 	* combine.c (make_extraction): Don't look through non-paradoxical
+ 	SUBREGs or TRUNCATE if pos + len is or might be bigger than
+ 	inner's mode.
+ 
+ 2017-09-15  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* target.def (function_arg_offset): New hook.
+ 	* targhooks.h (default_function_arg_offset): Declare.
+ 	* targhooks.c (default_function_arg_offset): New function.
+ 	* function.c (locate_and_pad_parm): Use
+ 	targetm.calls.function_arg_offset instead of FUNCTION_ARG_OFFSET.
+ 	* doc/tm.texi.in (FUNCTION_ARG_OFFSET): Replace with...
+ 	(TARGET_FUNCTION_ARG_OFFSET): ...this.
+ 	* doc/tm.texi: Regenerate.
+ 	* config/spu/spu.h (FUNCTION_ARG_OFFSET): Delete.
+ 	* config/spu/spu.c (spu_function_arg_offset): New function.
+ 	(TARGET_FUNCTION_ARG_OFFSET): Redefine.
+ 	* system.h (FUNCTION_ARG_OFFSET): Poison.
+ 
+ 2017-09-15  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayard  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* target.def (truly_noop_truncation): New hook.
+ 	(mode_rep_extended): Refer to TARGET_TRULY_NOOP_TRUNCATION rather
+ 	than TRULY_NOOP_TRUNCATION.
+ 	* hooks.h (hook_bool_uint_uint_true): Declare.
+ 	* hooks.c (hook_bool_uint_uint_true): New function.
+ 	* doc/tm.texi.in (TRULY_NOOP_TRUNCATION): Replace with...
+ 	(TARGET_TRULY_NOOP_TRUNCATION): ...this.
+ 	* doc/tm.texi: Regenerate.
+ 	* combine.c (make_extraction): Refer to TARGET_TRULY_NOOP_TRUNCATION
+ 	rather than TRULY_NOOP_TRUNCATION in comments.
+ 	(simplify_comparison): Likewise.
+ 	(record_truncated_value): Likewise.
+ 	* expmed.c (extract_bit_field_1): Likewise.
+ 	(extract_split_bit_field): Likewise.
+ 	* convert.c (convert_to_integer_1): Use targetm.truly_noop_truncation
+ 	instead of TRULY_NOOP_TRUNCATION.
+ 	* function.c (assign_parm_setup_block): Likewise.
+ 	* machmode.h (TRULY_NOOP_TRUNCATION_MODES_P): Likewise.
+ 	* rtlhooks.c: Include target.h.
+ 	* config/aarch64/aarch64.h (TRULY_NOOP_TRUNCATION): Delete.
+ 	* config/alpha/alpha.h (TRULY_NOOP_TRUNCATION): Delete.
+ 	* config/arc/arc.h (TRULY_NOOP_TRUNCATION): Delete.
+ 	* config/arm/arm.h (TRULY_NOOP_TRUNCATION): Delete.
+ 	* config/avr/avr.h (TRULY_NOOP_TRUNCATION): Delete.
+ 	* config/bfin/bfin.h (TRULY_NOOP_TRUNCATION): Delete.
+ 	* config/c6x/c6x.h (TRULY_NOOP_TRUNCATION): Delete.
+ 	* config/cr16/cr16.h (TRULY_NOOP_TRUNCATION): Delete.
+ 	* config/cris/cris.h (TRULY_NOOP_TRUNCATION): Delete.
+ 	* config/epiphany/epiphany.h (TRULY_NOOP_TRUNCATION): Delete.
+ 	* config/fr30/fr30.h (TRULY_NOOP_TRUNCATION): Delete.
+ 	* config/frv/frv.h (TRULY_NOOP_TRUNCATION): Delete.
+ 	* config/ft32/ft32.h (TRULY_NOOP_TRUNCATION): Delete.
+ 	* config/h8300/h8300.h (TRULY_NOOP_TRUNCATION): Delete.
+ 	* config/i386/i386.h (TRULY_NOOP_TRUNCATION): Delete.
+ 	* config/ia64/ia64.h (TRULY_NOOP_TRUNCATION): Delete.
+ 	* config/iq2000/iq2000.h (TRULY_NOOP_TRUNCATION): Delete.
+ 	* config/lm32/lm32.h (TRULY_NOOP_TRUNCATION): Delete.
+ 	* config/m32c/m32c.h (TRULY_NOOP_TRUNCATION): Delete.
+ 	* config/m32r/m32r.h (TRULY_NOOP_TRUNCATION): Delete.
+ 	* config/m68k/m68k.h (TRULY_NOOP_TRUNCATION): Delete.
+ 	* config/mcore/mcore.h (TRULY_NOOP_TRUNCATION): Delete.
+ 	* config/microblaze/microblaze.h (TRULY_NOOP_TRUNCATION): Delete.
+ 	* config/mips/mips.h (TRULY_NOOP_TRUNCATION): Delete.
+ 	* config/mips/mips.c (mips_truly_noop_truncation): New function.
+ 	(TARGET_TRULY_NOOP_TRUNCATION): Redefine.
+ 	* config/mips/mips.md: Refer to TARGET_TRULY_NOOP_TRUNCATION
+ 	rather than TRULY_NOOP_TRUNCATION in comments.
+ 	* config/mmix/mmix.h (TRULY_NOOP_TRUNCATION): Delete.
+ 	* config/mn10300/mn10300.h (TRULY_NOOP_TRUNCATION): Delete.
+ 	* config/moxie/moxie.h (TRULY_NOOP_TRUNCATION): Delete.
+ 	* config/msp430/msp430.h (TRULY_NOOP_TRUNCATION): Delete.
+ 	* config/nds32/nds32.h (TRULY_NOOP_TRUNCATION): Delete.
+ 	* config/nios2/nios2.h (TRULY_NOOP_TRUNCATION): Delete.
+ 	* config/nvptx/nvptx.h (TRULY_NOOP_TRUNCATION): Delete.
+ 	* config/pa/pa.h (TRULY_NOOP_TRUNCATION): Delete.
+ 	* config/pdp11/pdp11.h (TRULY_NOOP_TRUNCATION): Delete.
+ 	* config/powerpcspe/powerpcspe.h (TRULY_NOOP_TRUNCATION): Delete.
+ 	* config/riscv/riscv.h (TRULY_NOOP_TRUNCATION): Delete.
+ 	* config/riscv/riscv.md: Refer to TARGET_TRULY_NOOP_TRUNCATION
+ 	rather than TRULY_NOOP_TRUNCATION in comments.
+ 	* config/rl78/rl78.h (TRULY_NOOP_TRUNCATION): Delete.
+ 	* config/rs6000/rs6000.h (TRULY_NOOP_TRUNCATION): Delete.
+ 	* config/rx/rx.h (TRULY_NOOP_TRUNCATION): Delete.
+ 	* config/s390/s390.h (TRULY_NOOP_TRUNCATION): Delete.
+ 	* config/sh/sh.h (MAYBE_BASE_REGISTER_RTX_P): Remove
+ 	TRULY_NOOP_TRUNCATION condition.
+ 	(MAYBE_INDEX_REGISTER_RTX_P): Likewise.
+ 	(TRULY_NOOP_TRUNCATION): Delete.
+ 	* config/sparc/sparc.h (TRULY_NOOP_TRUNCATION): Delete.
+ 	* config/spu/spu.h (TRULY_NOOP_TRUNCATION): Delete.
+ 	* config/spu/spu.c (spu_truly_noop_truncation): New function.
+ 	(TARGET_TRULY_NOOP_TRUNCATION): Redefine.
+ 	* config/stormy16/stormy16.h (TRULY_NOOP_TRUNCATION): Delete.
+ 	* config/tilegx/tilegx.h (TRULY_NOOP_TRUNCATION): Delete.
+ 	* config/tilegx/tilegx.c (tilegx_truly_noop_truncation): New fuction.
+ 	(TARGET_TRULY_NOOP_TRUNCATION): Redefine.
+ 	* config/tilegx/tilegx.md: Refer to TARGET_TRULY_NOOP_TRUNCATION
+ 	rather than TRULY_NOOP_TRUNCATION in comments.
+ 	* config/tilepro/tilepro.h (TRULY_NOOP_TRUNCATION): Delete.
+ 	* config/v850/v850.h (TRULY_NOOP_TRUNCATION): Delete.
+ 	* config/vax/vax.h (TRULY_NOOP_TRUNCATION): Delete.
+ 	* config/visium/visium.h (TRULY_NOOP_TRUNCATION): Delete.
+ 	* config/xtensa/xtensa.h (TRULY_NOOP_TRUNCATION): Delete.
+ 	* system.h (TRULY_NOOP_TRUNCATION): Poison.
+ 
+ 2017-09-15  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	PR target/67591
+ 	* config/arm/arm.md (*cmp_and): Add enabled_for_depr_it attribute.
+ 	(*cmp_ior): Likewise.
+ 	(*ior_scc_scc): Add alternative for enabled_for_depr_it attribute.
+ 	(*ior_scc_scc_cmp): Likewise.
+ 	(*and_scc_scc): Likewise.
+ 	(*and_scc_scc_cmp): Likewise.
+ 
+ 2017-09-15  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayard  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* target.def (can_change_mode_class): New hook.
+ 	(mode_rep_extended): Refer to it instead of CANNOT_CHANGE_MODE_CLASS.
+ 	(hard_regno_nregs): Likewise.
+ 	* hooks.h (hook_bool_mode_mode_reg_class_t_true): Declare.
+ 	* hooks.c (hook_bool_mode_mode_reg_class_t_true): New function.
+ 	* doc/tm.texi.in (CANNOT_CHANGE_MODE_CLASS): Replace with...
+ 	(TARGET_CAN_CHANGE_MODE_CLASS): ...this.
+ 	(LOAD_EXTEND_OP): Update accordingly.
+ 	* doc/tm.texi: Regenerate.
+ 	* doc/rtl.texi: Refer to TARGET_CAN_CHANGE_MODE_CLASS instead of
+ 	CANNOT_CHANGE_MODE_CLASS.
+ 	* hard-reg-set.h (REG_CANNOT_CHANGE_MODE_P): Replace with...
+ 	(REG_CAN_CHANGE_MODE_P): ...this new macro.
+ 	* combine.c (simplify_set): Update accordingly.
+ 	* emit-rtl.c (validate_subreg): Likewise.
+ 	* recog.c (general_operand): Likewise.
+ 	* regcprop.c (mode_change_ok): Likewise.
+ 	* reload1.c (choose_reload_regs): Likewise.
+ 	(inherit_piecemeal_p): Likewise.
+ 	* rtlanal.c (simplify_subreg_regno): Likewise.
+ 	* postreload.c (reload_cse_simplify_set): Use REG_CAN_CHANGE_MODE_P
+ 	instead of CANNOT_CHANGE_MODE_CLASS.
+ 	(reload_cse_simplify_operands): Likewise.
+ 	* reload.c (push_reload): Use targetm.can_change_mode_class
+ 	instead of CANNOT_CHANGE_MODE_CLASS.
+ 	(push_reload): Likewise.  Also use REG_CAN_CHANGE_MODE_P instead of
+ 	REG_CANNOT_CHANGE_MODE_P.
+ 	* config/alpha/alpha.h (CANNOT_CHANGE_MODE_CLASS): Delete.
+ 	* config/alpha/alpha.c (alpha_can_change_mode_class): New function.
+ 	(TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
+ 	* config/arm/arm.h (CANNOT_CHANGE_MODE_CLASS): Delete.
+ 	* config/arm/arm.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
+ 	(arm_can_change_mode_class): New function.
+ 	* config/arm/neon.md: Refer to TARGET_CAN_CHANGE_MODE_CLASS rather
+ 	than CANNOT_CHANGE_MODE_CLASS in comments.
+ 	* config/i386/i386.h (CANNOT_CHANGE_MODE_CLASS): Delete.
+ 	* config/i386/i386-protos.h (ix86_cannot_change_mode_class): Delete.
+ 	* config/i386/i386.c (ix86_cannot_change_mode_class): Replace with...
+ 	(ix86_can_change_mode_class): ...this new function, inverting the
+ 	sense of the return value.
+ 	(TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
+ 	* config/ia64/ia64.h (CANNOT_CHANGE_MODE_CLASS): Delete.
+ 	* config/ia64/ia64.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
+ 	(ia64_can_change_mode_class): New function.
+ 	* config/m32c/m32c.h (CANNOT_CHANGE_MODE_CLASS): Delete.
+ 	* config/m32c/m32c-protos.h (m32c_cannot_change_mode_class): Delete.
+ 	* config/m32c/m32c.c (m32c_cannot_change_mode_class): Replace with...
+ 	(m32c_can_change_mode_class): ...this new function, inverting the
+ 	sense of the return value.
+ 	(TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
+ 	* config/mips/mips.h (CANNOT_CHANGE_MODE_CLASS): Delete.
+ 	* config/mips/mips-protos.h (mips_cannot_change_mode_class): Delete.
+ 	* config/mips/mips.c (mips_cannot_change_mode_class): Replace with...
+ 	(mips_can_change_mode_class): ...this new function, inverting the
+ 	sense of the return value.
+ 	(TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
+ 	* config/msp430/msp430.h (CANNOT_CHANGE_MODE_CLASS): Delete.
+ 	* config/msp430/msp430.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
+ 	(msp430_can_change_mode_class): New function.
+ 	* config/nvptx/nvptx.h (CANNOT_CHANGE_MODE_CLASS): Delete.
+ 	* config/nvptx/nvptx.c (nvptx_can_change_mode_class): New function.
+ 	(TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
+ 	* config/pa/pa32-regs.h (CANNOT_CHANGE_MODE_CLASS): Delete.
+ 	* config/pa/pa64-regs.h (CANNOT_CHANGE_MODE_CLASS): Delete.
+ 	* config/pa/pa-protos.h (pa_cannot_change_mode_class): Delete.
+ 	* config/pa/pa.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
+ 	(pa_cannot_change_mode_class): Replace with...
+ 	(pa_can_change_mode_class): ...this new function, inverting the
+ 	sense of the return value.
+ 	(pa_modes_tieable_p): Refer to TARGET_CAN_CHANGE_MODE_CLASS rather
+ 	than CANNOT_CHANGE_MODE_CLASS in comments.
+ 	* config/pdp11/pdp11.h (CANNOT_CHANGE_MODE_CLASS): Delete.
+ 	* config/pdp11/pdp11-protos.h (pdp11_cannot_change_mode_class): Delete.
+ 	* config/pdp11/pdp11.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
+ 	(pdp11_cannot_change_mode_class): Replace with...
+ 	(pdp11_can_change_mode_class): ...this new function, inverting the
+ 	sense of the return value.
+ 	* config/powerpcspe/powerpcspe.h (CANNOT_CHANGE_MODE_CLASS): Delete.
+ 	* config/powerpcspe/powerpcspe-protos.h
+ 	(rs6000_cannot_change_mode_class_ptr): Delete.
+ 	* config/powerpcspe/powerpcspe.c
+ 	(rs6000_cannot_change_mode_class_ptr): Delete.
+ 	(TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
+ 	(rs6000_option_override_internal): Assign to
+ 	targetm.can_change_mode_class instead of
+ 	rs6000_cannot_change_mode_class_ptr.
+ 	(rs6000_cannot_change_mode_class): Replace with...
+ 	(rs6000_can_change_mode_class): ...this new function, inverting the
+ 	sense of the return value.
+ 	(rs6000_debug_cannot_change_mode_class): Replace with...
+ 	(rs6000_debug_can_change_mode_class): ...this new function.
+ 	* config/riscv/riscv.h (CANNOT_CHANGE_MODE_CLASS): Delete.
+ 	* config/riscv/riscv.c (riscv_can_change_mode_class): New function.
+ 	(TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
+ 	* config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Delete.
+ 	* config/rs6000/rs6000-protos.h (rs6000_cannot_change_mode_class_ptr):
+ 	Delete.
+ 	* config/rs6000/rs6000.c (rs6000_cannot_change_mode_class_ptr): Delete.
+ 	(TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
+ 	(rs6000_option_override_internal): Assign to
+ 	targetm.can_change_mode_class instead of
+ 	rs6000_cannot_change_mode_class_ptr.
+ 	(rs6000_cannot_change_mode_class): Replace with...
+ 	(rs6000_can_change_mode_class): ...this new function, inverting the
+ 	sense of the return value.
+ 	(rs6000_debug_cannot_change_mode_class): Replace with...
+ 	(rs6000_debug_can_change_mode_class): ...this new function.
+ 	* config/s390/s390.h (CANNOT_CHANGE_MODE_CLASS): Delete.
+ 	* config/s390/s390-protos.h (s390_cannot_change_mode_class): Delete.
+ 	* config/s390/s390.c (s390_cannot_change_mode_class): Replace with...
+ 	(s390_can_change_mode_class): ...this new function, inverting the
+ 	sense of the return value.
+ 	(TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
+ 	* config/sh/sh.h (CANNOT_CHANGE_MODE_CLASS): Delete.
+ 	* config/sh/sh-protos.h (sh_cannot_change_mode_class): Delete.
+ 	* config/sh/sh.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
+ 	(sh_cannot_change_mode_class): Replace with...
+ 	(sh_can_change_mode_class): ...this new function, inverting the
+ 	sense of the return value.
+ 	* config/sparc/sparc.h (CANNOT_CHANGE_MODE_CLASS): Delete.
+ 	* config/sparc/sparc.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
+ 	(sparc_can_change_mode_class): New function.
+ 	* config/spu/spu.h (CANNOT_CHANGE_MODE_CLASS): Delete.
+ 	* config/spu/spu.c (spu_can_change_mode_class): New function.
+ 	(TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
+ 	* config/visium/visium.h (CANNOT_CHANGE_MODE_CLASS): Delete.
+ 	* config/visium/visium.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
+ 	(visium_can_change_mode_class): New function.
+ 	* system.h (CANNOT_CHANGE_MODE_CLASS): Poison.
+ 
+ 2017-09-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/82217
+ 	* tree-ssa-sccvn.c (visit_phi): Properly handle all VN_TOP
+ 	but not undefined case.
+ 
+ 2017-09-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/82145
+ 	* postreload.c (reload_cse_simplify_operands): Skip
+ 	NOTE_INSN_DELETED_LABEL similarly to skipping CODE_LABEL.
+ 
+ 2017-09-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/68823
+ 	* graphite-scop-detection.c (build_alias_set): If we have a
+ 	possible dependence check whether we can handle them by just
+ 	looking at the DRs DR_ACCESS_FNs.
+ 	(build_scops): If build_alias_set fails, fail the SCOP.
+ 
+ 2017-09-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	* config/rs6000/rs6000-builtin.def (BU_FLOAT128_1_HW): New macros
+ 	to support float128 built-in functions that require the ISA 3.0
+ 	hardware.
+ 	(BU_FLOAT128_3_HW): Likewise.
+ 	(SQRTF128): Add support for the IEEE 128-bit square root and fma
+ 	built-in functions.
+ 	(FMAF128): Likewise.
+ 	(FMAQ): Likewise.
+ 	* config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Add
+ 	support for built-in functions that need the ISA 3.0 IEEE 128-bit
+ 	floating point instructions.
+ 	(rs6000_invalid_builtin): Likewise.
+ 	(rs6000_builtin_mask_names): Likewise.
+ 	* config/rs6000/rs6000.h (MASK_FLOAT128_HW): Likewise.
+ 	(RS6000_BTM_FLOAT128_HW): Likewise.
+ 	(RS6000_BTM_COMMON): Likewise.
+ 	* config/rs6000/rs6000.md (fma<mode>4_hw): Add a generator
+ 	function.
+ 	* doc/extend.texi (RS/6000 built-in functions): Document the
+ 	IEEE 128-bit floating point square root and fused multiply-add
+ 	built-in functions.
+ 
+ 2017-09-14  Pat Haugen  <pthaugen@us.ibm.com>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_set_up_by_prologue): Make sure the TOC
+ 	reg (r2) isn't in the set of registers defined in the prologue.
+ 
+ 2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* tree-vectorizer.h (_loop_vec_info): Add max_vectorization_factor.
+ 	(LOOP_VINFO_MAX_VECT_FACTOR): New macro.
+ 	(LOOP_VINFO_ORIG_VECT_FACTOR): Replace with...
+ 	(LOOP_VINFO_ORIG_MAX_VECT_FACTOR): ...this new macro.
+ 	* tree-vect-data-refs.c (vect_analyze_data_ref_dependences): Update
+ 	accordingly.
+ 	* tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
+ 	max_vectorization_factor.
+ 	(vect_analyze_loop_2): Set LOOP_VINFO_MAX_VECT_FACTOR.
+ 
+ 2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* tree-vectorizer.h (vect_min_worthwhile_factor): Delete.
+ 	(vect_worthwhile_without_simd_p): Declare.
+ 	* tree-vect-loop.c (vect_worthwhile_without_simd_p): New function.
+ 	(vectorizable_reduction): Use it.
+ 	* tree-vect-stmts.c (vectorizable_shift): Likewise.
+ 	(vectorizable_operation): Likewise.
+ 
+ 2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* tree-vectorizer.h (vect_get_num_copies): New function.
+ 	* tree-vect-data-refs.c (vect_get_data_access_cost): Use it.
+ 	* tree-vect-loop.c (vectorizable_reduction): Likewise.
+ 	(vectorizable_induction): Likewise.
+ 	(vectorizable_live_operation): Likewise.
+ 	* tree-vect-stmts.c (vectorizable_mask_load_store): Likewise.
+ 	(vectorizable_bswap): Likewise.
+ 	(vectorizable_call): Likewise.
+ 	(vectorizable_conversion): Likewise.
+ 	(vectorizable_assignment): Likewise.
+ 	(vectorizable_shift): Likewise.
+ 	(vectorizable_operation): Likewise.
+ 	(vectorizable_store): Likewise.
+ 	(vectorizable_load): Likewise.
+ 	(vectorizable_condition): Likewise.
+ 	(vectorizable_comparison): Likewise.
+ 	(vect_analyze_stmt): Pass the slp node to vectorizable_live_operation.
+ 
+ 2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* tree-vect-loop.c (vectorizable_induction): Use gimple_build instead
+ 	of vect_init_vector.
+ 
+ 2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* gimple-fold.h (gimple_build_vector_from_val): Declare, and provide
+ 	an inline wrapper that provides a location.
+ 	(gimple_build_vector): Likewise.
+ 	* gimple-fold.c (gimple_build_vector_from_val): New function.
+ 	(gimple_build_vector): Likewise.
+ 	* tree-vect-loop.c (get_initial_def_for_reduction): Use the new
+ 	functions to build the initial value.  Always return a gimple value.
+ 	(get_initial_defs_for_reduction): Likewise.  Only compute
+ 	neutral_vec once.
+ 	(vect_create_epilog_for_reduction): Don't call force_gimple_operand or
+ 	vect_init_vector on the results from get_initial_def(s)_for_reduction.
+ 	(vectorizable_induction): Use gimple_build_vector rather than
+ 	vect_init_vector.
+ 
+ 2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* target.h (vec_perm_indices): New typedef.
+ 	(auto_vec_perm_indices): Likewise.
+ 	* optabs-query.h: Include target.h
+ 	(can_vec_perm_p): Take a vec_perm_indices *.
+ 	* optabs-query.c (can_vec_perm_p): Likewise.
+ 	(can_mult_highpart_p): Update accordingly.  Use auto_vec_perm_indices.
+ 	* tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
+ 	* tree-vect-generic.c (lower_vec_perm): Likewise.
+ 	* tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
+ 	(vect_grouped_load_supported): Likewise.
+ 	(vect_shift_permute_load_chain): Likewise.
+ 	(vect_permute_store_chain): Use auto_vec_perm_indices.
+ 	(vect_permute_load_chain): Likewise.
+ 	* fold-const.c (fold_vec_perm): Take vec_perm_indices.
+ 	(fold_ternary_loc): Update accordingly.  Use auto_vec_perm_indices.
+ 	Update uses of can_vec_perm_p.
+ 	* tree-vect-loop.c (calc_vec_perm_mask_for_shift): Replace the
+ 	mode with a number of elements.  Take a vec_perm_indices *.
+ 	(vect_create_epilog_for_reduction): Update accordingly.
+ 	Use auto_vec_perm_indices.
+ 	(have_whole_vector_shift): Likewise.  Update call to can_vec_perm_p.
+ 	* tree-vect-slp.c (vect_build_slp_tree_1): Likewise.
+ 	(vect_transform_slp_perm_load): Likewise.
+ 	(vect_schedule_slp_instance): Use auto_vec_perm_indices.
+ 	* tree-vectorizer.h (vect_gen_perm_mask_any): Take a vec_perm_indices.
+ 	(vect_gen_perm_mask_checked): Likewise.
+ 	* tree-vect-stmts.c (vect_gen_perm_mask_any): Take a vec_perm_indices.
+ 	(vect_gen_perm_mask_checked): Likewise.
+ 	(vectorizable_mask_load_store): Use auto_vec_perm_indices.
+ 	(vectorizable_store): Likewise.
+ 	(vectorizable_load): Likewise.
+ 	(perm_mask_for_reverse): Likewise.  Update call to can_vec_perm_p.
+ 	(vectorizable_bswap): Likewise.
+ 
+ 2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* tree.h (build_vector): Take a vec<tree> instead of a tree *.
+ 	* tree.c (build_vector): Likewise.
+ 	(build_vector_from_ctor): Update accordingly.
+ 	(build_vector_from_val): Likewise.
+ 	* gimple-fold.c (gimple_fold_stmt_to_constant_1): Likewise.
+ 	* tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
+ 	* tree-vect-generic.c (add_rshift): Likewise.
+ 	(expand_vector_divmod): Likewise.
+ 	(optimize_vector_constructor): Likewise.
+ 	* tree-vect-slp.c (vect_get_constant_vectors): Likewise.
+ 	(vect_transform_slp_perm_load): Likewise.
+ 	(vect_schedule_slp_instance): Likewise.
+ 	* tree-vect-stmts.c (vectorizable_bswap): Likewise.
+ 	(vectorizable_call): Likewise.
+ 	(vect_gen_perm_mask_any): Likewise.  Add elements in order.
+ 	* expmed.c (make_tree): Likewise.
+ 	* fold-const.c (fold_negate_expr_1): Use auto_vec<tree> when building
+ 	a vector passed to build_vector.
+ 	(fold_convert_const): Likewise.
+ 	(exact_inverse): Likewise.
+ 	(fold_ternary_loc): Likewise.
+ 	(fold_relational_const): Likewise.
+ 	(const_binop): Likewise.  Use VECTOR_CST_ELT directly when operating
+ 	on VECTOR_CSTs, rather than going through vec_cst_ctor_to_array.
+ 	(const_unop): Likewise.  Store the reduction accumulator in a
+ 	variable rather than an array.
+ 	(vec_cst_ctor_to_array): Take the number of elements as a parameter.
+ 	(fold_vec_perm): Update calls accordingly.  Use auto_vec<tree> for
+ 	the new vector, rather than constructing it after the input arrays.
+ 	(native_interpret_vector): Use auto_vec<tree> when building
+ 	a vector passed to build_vector.  Add elements in order.
+ 	* tree-vect-loop.c (get_initial_defs_for_reduction): Use
+ 	auto_vec<tree> when building a vector passed to build_vector.
+ 	(vect_create_epilog_for_reduction): Likewise.
+ 	(vectorizable_induction): Likewise.
+ 	(get_initial_def_for_reduction): Likewise.  Fix indentation of
+ 	case statements.
+ 	* config/sparc/sparc.c (sparc_handle_vis_mul8x16): Change n_elts
+ 	to a vec<tree> *.
+ 	(sparc_fold_builtin): Use auto_vec<tree> when building a vector
+ 	passed to build_vector.
+ 
+ 2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* tree-core.h (tree_base::u): Add an "nelts" field.
+ 	(tree_vector): Use VECTOR_CST_NELTS as the length.
+ 	* tree.c (tree_size): Likewise.
+ 	(make_vector): Initialize VECTOR_CST_NELTS.
+ 	* tree.h (VECTOR_CST_NELTS): Use the u.nelts field.
+ 	* cfgexpand.c (expand_debug_expr): Use VECTOR_CST_NELTS instead of
+ 	TYPE_VECTOR_SUBPARTS.
+ 	* expr.c (const_vector_mask_from_tree): Consistently use "units"
+ 	as the number of units, setting it from VECTOR_CST_NELTS.
+ 	(const_vector_from_tree): Likewise.
+ 	* fold-const.c (negate_expr_p): Use VECTOR_CST_NELTS instead of
+ 	TYPE_VECTOR_SUBPARTS for the number of elements in a VECTOR_CST.
+ 	(fold_negate_expr_1): Likewise.
+ 	(fold_convert_const): Likewise.
+ 	(const_binop): Likewise.  Differentiate the number of output and
+ 	input elements.
+ 	(const_unop): Likewise.
+ 	(fold_ternary_loc): Use VECTOR_CST_NELTS for the number of elements
+ 	in a VECTOR_CST, asserting that it is the same as TYPE_VECTOR_SUBPARTS
+ 	in cases that did the opposite.
+ 
+ 2017-09-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-sccvn.c (visit_phi): Merge undefined values similar
+ 	to VN_TOP.
+ 
+ 2017-09-14  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* dwarf2out.c (dwarf2out_source_line): Remove superfluous test.
+ 
+ 2017-09-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/81325
+ 	* cfgbuild.c (find_bb_boundaries): Ignore debug insns in decisions
+ 	if and where to split a bb, except for splitting before debug insn
+ 	sequences followed by non-label real insn.  Delete debug insns
+ 	in between basic blocks.
+ 
+ 	* combine.c (make_compound_operation_int): Formatting fixes.
+ 
+ 	* config/alpha/elf.h (LINK_EH_SPEC): Add -static-pie support.
+ 	* config/alpha/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
+ 	* config/netbsd.h (LINK_EH_SPEC): Likewise.
+ 	* config/sol2.h (LINK_EH_SPEC): Likewise.
+ 	* config/arm/uclinux-elf.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
+ 	* config/s390/linux.h (LINK_SPEC): Likewise.
+ 	* config/freebsd.h (LINK_EH_SPEC): Likewise.
+ 	* config/openbsd.h (LINK_EH_SPEC): Likewise.
+ 	* config/lm32/uclinux-elf.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
+ 	* config/aarch64/aarch64-linux.h (LINUX_TARGET_LINK_SPEC): Likewise.
+ 	* config/powerpcspe/sysv4.h (LINK_EH_SPEC): Likewise.
+ 	* config/bfin/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
+ 	* config/i386/gnu-user64.h (GNU_USER_TARGET_LINK_SPEC): Fix a typo.
+ 	* config/i386/gnu-user.h (GNU_USER_TARGET_LINK_SPEC): Formatting fix.
+ 
+ 2017-09-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* config/rs6000/sysv4.h (STARTFILE_LINUX_SPEC): Add -static-pie
+ 	support.
+ 	(ENDFILE_LINUX_SPEC): Likewise.
+ 	(LINK_EH_SPEC): Likewise.
+ 	* config/rs6000/linux64.h (LINK_SHLIB_SPEC): Likewise.
+ 	(LINK_OS_LINUX_SPEC32): Likewise.
+ 	(LINK_OS_LINUX_SPEC64): Likewise.
+ 	* config/rs6000/linux.h (LINK_SHLIB_SPEC): Likewise.
+ 	(LINK_OS_LINUX_SPEC): Likewise.
+ 
+ 2017-09-13  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR middle-end/82154
+ 	* stmt.c (expand_sjlj_dispatch_table): Use CASE_LOW when
+ 	CASE_HIGH is NULL_TREE.
+ 
+ 2017-09-13  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* target.def (secondary_memory_needed): New hook.
+ 	(secondary_reload): Refer to TARGET_SECONDARY_MEMORY_NEEDED
+ 	instead of SECONDARY_MEMORY_NEEDED.
+ 	(secondary_memory_needed_mode): Likewise.
+ 	* hooks.h (hook_bool_mode_reg_class_t_reg_class_t_false): Declare.
+ 	* hooks.c (hook_bool_mode_reg_class_t_reg_class_t_false): New function.
+ 	* doc/tm.texi.in (SECONDARY_MEMORY_NEEDED): Replace with...
+ 	(TARGET_SECONDARY_MEMORY_NEEDED): ...this.
+ 	(SECONDARY_MEMORY_NEEDED_RTX): Update reference accordingly.
+ 	* doc/tm.texi: Regenerate.
+ 	* config/alpha/alpha.h (SECONDARY_MEMORY_NEEDED): Delete.
+ 	* config/alpha/alpha.c (alpha_secondary_memory_needed): New function.
+ 	(TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
+ 	* config/i386/i386.h (SECONDARY_MEMORY_NEEDED): Delete.
+ 	* config/i386/i386-protos.h (ix86_secondary_memory_needed): Delete.
+ 	* config/i386/i386.c (inline_secondary_memory_needed): Put the
+ 	mode argument first and change the reg_class arguments to reg_class_t.
+ 	(ix86_secondary_memory_needed): Likewise.  Remove the strict parameter.
+ 	Make static.  Update the call to inline_secondary_memory_needed.
+ 	(ix86_register_move_cost): Update the call to
+ 	inline_secondary_memory_needed.
+ 	(TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
+ 	* config/ia64/ia64.h (SECONDARY_MEMORY_NEEDED): Delete commented-out
+ 	definition.
+ 	* config/ia64/ia64.c (spill_xfmode_rfmode_operand): Refer to
+ 	TARGET_SECONDARY_MEMORY_NEEDED rather than SECONDARY_MEMORY_NEEDED
+ 	in comment.
+ 	* config/mips/mips.h (SECONDARY_MEMORY_NEEDED): Delete.
+ 	* config/mips/mips-protos.h (mips_secondary_memory_needed): Delete.
+ 	* config/mips/mips.c (mips_secondary_memory_needed): Make static
+ 	and match hook interface.  Add comment from mips.h.
+ 	(TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
+ 	* config/mmix/mmix.md (truncdfsf2): Refer to
+ 	TARGET_SECONDARY_MEMORY_NEEDED rather than SECONDARY_MEMORY_NEEDED
+ 	in comment.
+ 	* config/pa/pa-64.h (SECONDARY_MEMORY_NEEDED): Rename to...
+ 	(PA_SECONDARY_MEMORY_NEEDED): ...this, and put the mode argument first.
+ 	* config/pa/pa.c (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
+ 	(pa_secondary_memory_needed): New function.
+ 	* config/pdp11/pdp11.h (SECONDARY_MEMORY_NEEDED): Delete.
+ 	* config/pdp11/pdp11-protos.h (pdp11_secondary_memory_needed): Delete.
+ 	* config/pdp11/pdp11.c (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
+ 	(pdp11_secondary_memory_needed): Make static and match hook interface.
+ 	* config/powerpcspe/powerpcspe.h (SECONDARY_MEMORY_NEEDED): Delete.
+ 	* config/powerpcspe/powerpcspe-protos.h
+ 	(rs6000_secondary_memory_needed_ptr): Delete.
+ 	* config/powerpcspe/powerpcspe.c (rs6000_secondary_memory_needed_ptr):
+ 	Delete.
+ 	(TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
+ 	(rs6000_option_override_internal): Assign to
+ 	targetm.secondary_memory_needed rather than
+ 	rs6000_secondary_memory_needed_ptr.
+ 	(rs6000_secondary_memory_needed): Match hook interface.
+ 	(rs6000_debug_secondary_memory_needed): Likewise.
+ 	* config/riscv/riscv.h (SECONDARY_MEMORY_NEEDED): Delete.
+ 	* config/riscv/riscv.c (riscv_secondary_memory_needed): New function.
+ 	(riscv_register_move_cost): Use it instead of SECONDARY_MEMORY_NEEDED.
+ 	(TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
+ 	* config/rs6000/rs6000.h (SECONDARY_MEMORY_NEEDED): Delete.
+ 	* config/rs6000/rs6000-protos.h (rs6000_secondary_memory_needed_ptr):
+ 	Delete.
+ 	* config/rs6000/rs6000.c (rs6000_secondary_memory_needed_ptr): Delete.
+ 	(TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
+ 	(rs6000_option_override_internal): Assign to
+ 	targetm.secondary_memory_needed rather than
+ 	rs6000_secondary_memory_needed_ptr.
+ 	(rs6000_secondary_memory_needed): Match hook interface.
+ 	(rs6000_debug_secondary_memory_needed): Likewise.
+ 	* config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Delete.
+ 	* config/s390/s390.c (s390_secondary_memory_needed): New function.
+ 	(TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
+ 	* config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED): Delete.
+ 	* config/sparc/sparc.c (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
+ 	(sparc_secondary_memory_needed): New function.
+ 	* lra-constraints.c (check_and_process_move): Refer to
+ 	TARGET_SECONDARY_MEMORY_NEEDED rather than SECONDARY_MEMORY_NEEDED
+ 	in comment.
+ 	(curr_insn_transform): Likewise.
+ 	(process_alt_operands): Use targetm.secondary_memory_needed
+ 	instead of TARGET_SECONDARY_MEMORY_NEEDED.
+ 	(check_secondary_memory_needed_p): Likewise.
+ 	(choose_split_class): Likewise.
+ 	* reload.c: Unconditionally include code that was previously
+ 	conditional on SECONDARY_MEMORY_NEEDED.
+ 	(push_secondary_reload): Use targetm.secondary_memory_needed
+ 	instead of TARGET_SECONDARY_MEMORY_NEEDED.
+ 	(push_reload): Likewise.
+ 	* reload1.c: Unconditionally include code that was previously
+ 	conditional on SECONDARY_MEMORY_NEEDED.
+ 	(choose_reload_regs): Use targetm.secondary_memory_needed
+ 	instead of TARGET_SECONDARY_MEMORY_NEEDED.
+ 	(gen_reload): Likewise.
+ 	* system.h (SECONDARY_MEMORY_NEEDED): Poison.
+ 
+ 2017-09-13  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* target.def (secondary_memory_needed_mode): New hook:
+ 	* targhooks.c (default_secondary_memory_needed_mode): Declare.
+ 	* targhooks.h (default_secondary_memory_needed_mode): New function.
+ 	* doc/tm.texi.in (SECONDARY_MEMORY_NEEDED_MODE): Replace with...
+ 	(TARGET_SECONDARY_MEMORY_NEEDED_MODE): ...this.
+ 	* doc/tm.texi: Regenerate.
+ 	* lra-constraints.c (check_and_process_move): Use
+ 	targetm.secondary_memory_needed_mode instead of
+ 	TARGET_SECONDARY_MEMORY_NEEDED_MODE.
+ 	(curr_insn_transform): Likewise.
+ 	* reload.c (get_secondary_mem): Likewise.
+ 	* config/alpha/alpha.h (SECONDARY_MEMORY_NEEDED_MODE): Delete.
+ 	* config/alpha/alpha.c (alpha_secondary_memory_needed_mode): New
+ 	function.
+ 	(TARGET_SECONDARY_MEMORY_NEEDED_MODE): Redefine.
+ 	* config/i386/i386.h (SECONDARY_MEMORY_NEEDED_MODE): Delete.
+ 	* config/i386/i386.c (ix86_secondary_memory_needed_mode): New function.
+ 	(TARGET_SECONDARY_MEMORY_NEEDED_MODE): Redefine.
+ 	* config/powerpcspe/powerpcspe.h (SECONDARY_MEMORY_NEEDED_MODE):
+ 	Delete.
+ 	* config/powerpcspe/powerpcspe-protos.h
+ 	(rs6000_secondary_memory_needed_mode): Delete.
+ 	* config/powerpcspe/powerpcspe.c
+ 	(TARGET_SECONDARY_MEMORY_NEEDED_MODE): Redefine.
+ 	(rs6000_secondary_memory_needed_mode): Make static.
+ 	* config/rs6000/rs6000.h (SECONDARY_MEMORY_NEEDED_MODE): Delete.
+ 	* config/rs6000/rs6000-protos.h (rs6000_secondary_memory_needed_mode):
+ 	Delete.
+ 	* config/rs6000/rs6000.c (TARGET_SECONDARY_MEMORY_NEEDED_MODE):
+ 	Redefine.
+ 	(rs6000_secondary_memory_needed_mode): Make static.
+ 	* config/s390/s390.h (SECONDARY_MEMORY_NEEDED_MODE): Delete.
+ 	* config/s390/s390.c (s390_secondary_memory_needed_mode): New function.
+ 	(TARGET_SECONDARY_MEMORY_NEEDED_MODE): Redefine.
+ 	* config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_MODE): Delete.
+ 	* config/sparc/sparc.c (TARGET_SECONDARY_MEMORY_NEEDED_MODE):
+ 	Redefine.
+ 	(sparc_secondary_memory_needed_mode): New function.
+ 	* system.h (TARGET_SECONDARY_MEMORY_NEEDED_MODE): Poison.
+ 
+ 2017-09-13  Jackson Woodruff  <jackson.woodruff@arm.com>
+ 
+ 	* config/aarch64/constraints.md (Umq): New constraint.
+ 	* config/aarch64/aarch64-simd.md (*aarch64_simd_mov<mode>):
+ 	Change to use Umq.
+ 	(mov<mode>): Update condition.
+ 
+ 2017-09-13  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* gimple-ssa-store-merging.c (sort_by_bitpos): Compare store order
+ 	when bitposition is the same.
+ 
+ 2017-09-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	* dwarf2out.c (output_die_symbol): Remove.
+ 	(output_die): Do not output a DIEs symbol.
+ 
+ 2017-09-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/82128
+ 	* gimple-fold.c (gimple_fold_call): Update SSA name in-place to
+ 	default-def to avoid breaking iterator update with the weird
+ 	interaction with cgraph_update_edges_for_call_stmt_node.
+ 
+ 2017-09-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-cfg.c (verify_gimple_assign_binary): Add verification
+ 	for WIDEN_SUM_EXPR, VEC_WIDEN_MULT_{HI,LO,EVEN,ODD}_EXPR,
+ 	VEC_PACK_{TRUNC,SAT,FIX_TRUNC}_EXPR.
+ 	(verify_gimple_assign_ternary): Add verification for DOT_PROD_EXPR.
+ 
+ 2017-09-13  Kugan Vivekanandarajah  <kuganv@linaro.org>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_override_options_after_change_1):
+ 	Disable pc relative literal load irrespective of
+ 	TARGET_FIX_ERR_A53_84341 for default.
+ 
+ 2017-09-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* config/sparc/sparc.c (output_return): Output the source location of
+ 	the insn in the delay slot, if any.
+ 	(output_sibcall): Likewise.
+ 
+ 2017-09-12  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR driver/81498
+ 	* common.opt (-static-pie): New alias.
+ 	(shared): Negate static-pie.
+ 	(-no-pie): Update help text.
+ 	(-pie): Likewise.
+ 	(static-pie): New option.
+ 	* config/gnu-user.h (GNU_USER_TARGET_STARTFILE_SPEC): Add
+ 	-static-pie support.
+ 	(GNU_USER_TARGET_ENDFILE_SPEC): Likewise.
+ 	(LINK_EH_SPEC): Likewise.
+ 	(LINK_GCC_C_SEQUENCE_SPEC): Likewise.
+ 	* config/i386/gnu-user.h (GNU_USER_TARGET_LINK_SPEC): Likewise.
+ 	* config/i386/gnu-user64.h (GNU_USER_TARGET_LINK_SPEC): Likewise.
+ 	* gcc.c (LINK_COMMAND_SPEC): Likewise.
+ 	(init_gcc_specs): Likewise.
+ 	(init_spec): Likewise.
+ 	(display_help): Update help message for -pie.
+ 	* doc/invoke.texi: Update -pie, -no-pie and -static.  Document
+ 	-static-pie.
+ 
+ 2017-09-12  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	* config/aarch64/aarch64.md (movsi_aarch64): Remove all '*'.
+ 	(movdi_aarch64): Likewise.
+ 	(movti_aarch64): Likewise.
+ 
+ 2017-09-12 Simon Wright <simon@pushface.org>
+ 
+ 	PR target/80204
+ 	* config/darwin-driver.c (darwin_find_version_from_kernel): Eliminate
+ 	calculation of the minor version, always output as 0.
+ 
+ 2017-09-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/82112
+ 	* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): For
+ 	ALTIVEC_BUILTIN_VEC_LD if arg1 has array type call default_conversion
+ 	on it early, rather than manual conversion late.  For
+ 	ALTIVEC_BUILTIN_VEC_ST if arg2 has array type call default_conversion
+ 	instead of performing manual conversion.
+ 
+ 2017-09-12  Carl Love  <cel@us.ibm.com>
+ 
+ 	* config/rs6000/altivec.md (vec_widen_umult_even_v4si,
+ 	vec_widen_smult_even_v4si): Add define expands for vmuleuw, vmulesw,
+ 	vmulouw, vmulosw.
+ 	* config/rs6000/rs6000-builtin.def (VMLEUW, VMULESW, VMULOUW,
+ 	VMULOSW): Add definitions.
+ 	* config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
+ 	ALTIVEC_BUILTIN_VMULESW, ALTIVEC_BUILTIN_VMULEUW,
+ 	ALTIVEC_BUILTIN_VMULOSW, ALTIVEC_BUILTIN_VMULOUW entries.
+ 	* config/rs6000/rs6000.c (rs6000_gimple_fold_builtin,
+ 	builtin_function_type): Add ALTIVEC_BUILTIN_* case statements.
+ 
+ 2017-09-12  James Greenhalgh  <james.greenhalgh@arm.com>
+ 
+ 	* config/aarch64/aarch64.md (movdi_aarch64): Set load/store
+ 	types correctly.
+ 	(movti_aarch64): Likewise.
+ 	(movdf_aarch64): Likewise.
+ 	(movtf_aarch64): Likewise.
+ 	(load_pairdi): Likewise.
+ 	(store_pairdi): Likewise.
+ 	(load_pairdf): Likewise.
+ 	(store_pairdf): Likewise.
+ 	(loadwb_pair<GPI:mode>_<P:mode>): Likewise.
+ 	(storewb_pair<GPI:mode>_<P:mode>): Likewise.
+ 	(ldr_got_small_<mode>): Likewise.
+ 	(ldr_got_small_28k_<mode>): Likewise.
+ 	(ldr_got_tiny): Likewise.
+ 	* config/aarch64/iterators.md (ldst_sz): New.
+ 	(ldpstp_sz): Likewise.
+ 	* config/aarch64/thunderx.md (thunderx_storepair): Split store_8
+ 	to store_16.
+ 	(thunderx_load): Split load_8 to load_16.
+ 	* config/aarch64/thunderx2t99.md (thunderx2t99_loadpair): Split
+ 	load_8 to load_16.
+ 	(thunderx2t99_storepair_basic): Split store_8 to store_16.
+ 	* config/arm/xgene1.md (xgene1_load_pair): Split load_8 to load_16.
+ 	(xgene1_store_pair): Split store_8 to store_16.
+ 	* config/aarch64/falkor.md (falkor_ld_3_ld): Split load_8 to load_16.
+ 	(falkor_st_0_st_sd): Split store_8 to store_16.
+ 
+ 2017-09-12  James Greenhalgh  <james.greenhalgh@arm.com>
+ 
+ 	* config/arm/types.md (type): Rename load1/2/3/4 to load_4/8/12/16
+ 	and store1/2/3/4 to store_4/8/12/16.
+ 	* config/aarch64/aarch64.md: Update for rename.
+ 	* config/arm/arm.md: Likewise.: Likewise.
+ 	* config/arm/arm.c: Likewise.
+ 	* config/arm/thumb1.md: Likewise.
+ 	* config/arm/thumb2.md: Likewise.
+ 	* config/arm/vfp.md: Likewise.
+ 	* config/arm/arm-generic.md: Likewise.
+ 	* config/arm/arm1020e.md: Likewise.
+ 	* config/arm/arm1026ejs.md: Likewise.
+ 	* config/arm/arm1136jfs.md: Likewise.
+ 	* config/arm/arm926ejs.md: Likewise.
+ 	* config/arm/cortex-a15.md: Likewise.
+ 	* config/arm/cortex-a17.md: Likewise.
+ 	* config/arm/cortex-a5.md: Likewise.
+ 	* config/arm/cortex-a53.md: Likewise.
+ 	* config/arm/cortex-a57.md: Likewise.
+ 	* config/arm/cortex-a7.md: Likewise.
+ 	* config/arm/cortex-a8.md: Likewise.
+ 	* config/arm/cortex-a9.md: Likewise.
+ 	* config/arm/cortex-m4.md: Likewise.
+ 	* config/arm/cortex-m7.md: Likewise.
+ 	* config/arm/cortex-r4.md: Likewise.
+ 	* config/arm/exynos-m1.md: Likewise.
+ 	* config/arm/fa526.md: Likewise.
+ 	* config/arm/fa606te.md: Likewise.
+ 	* config/arm/fa626te.md: Likewise.
+ 	* config/arm/fa726te.md: Likewise.
+ 	* config/arm/fmp626.md: Likewise.
+ 	* config/arm/iwmmxt.md: Likewise.
+ 	* config/arm/ldmstm.md: Likewise.
+ 	* config/arm/marvell-pj4.md: Likewise.
+ 	* config/arm/xgene1.md: Likewise.
+ 	* config/aarch64/thunderx.md: Likewise.
+ 	* config/aarch64/thunderx2t99.md: Likewise.
+ 	* config/aarch64/falkor.md: Likewise.
+ 
+ 2017-09-12  Martin Liska  <mliska@suse.cz>
+ 
+ 	* attribs.c (private_lookup_attribute): New function.
+ 	* attribs.h (private_lookup_attribute): Declared here.
+ 	(lookup_attribute): Called from this place.
+ 
+ 2017-09-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/82157
+ 	* tree-ssa-pre.c (remove_dead_inserted_code): Do not remove
+ 	stmts with side-effects.
+ 
+ 2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood <david.sherwood@arm.com>
+ 
+ 	* target.def (hard_regno_nregs): New hook.
+ 	(class_max_nregs): Refer to it instead of HARD_REGNO_NREGS.
+ 	* targhooks.h (default_hard_regno_nregs): Declare.
+ 	* targhooks.c (default_hard_regno_nregs): New function.
+ 	* doc/tm.texi.in (HARD_REGNO_NREGS): Replace with...
+ 	(TARGET_HARD_REGNO_NREGS): ...this hook.
+ 	(HARD_REGNO_NREGS_HAS_PADDING): Update accordingly.
+ 	(CLASS_MAX_NREGS): Likewise.
+ 	* doc/tm.texi: Regenerate.
+ 	* reginfo.c (init_reg_modes_target): Use targetm.hard_regno_nregs
+ 	instead of HARD_REGNO_NREGS.
+ 	* rtl.h (REG_NREGS): Refer to TARGET_HARD_REGNO_NREGS rather than
+ 	HARD_REGNO_NREGS in the comment.
+ 	* config/aarch64/aarch64.h (HARD_REGNO_NREGS): Delete.
+ 	* config/aarch64/aarch64-protos.h (aarch64_hard_regno_nregs): Delete.
+ 	* config/aarch64/aarch64.c (aarch64_hard_regno_nregs): Make static.
+ 	Return an unsigned int.
+ 	(TARGET_HARD_REGNO_NREGS): Redefine.
+ 	* config/alpha/alpha.h (HARD_REGNO_NREGS): Delete.
+ 	* config/arc/arc.h (HARD_REGNO_NREGS): Delete.
+ 	* config/arc/arc.c (TARGET_HARD_REGNO_NREGS): Redefine.
+ 	(arc_hard_regno_nregs): New function.
+ 	* config/arm/arm.h (HARD_REGNO_NREGS): Delete.
+ 	* config/arm/arm.c (TARGET_HARD_REGNO_NREGS): Redefine.
+ 	(arm_hard_regno_nregs): New function.
+ 	* config/avr/avr.h (HARD_REGNO_NREGS): Delete.
+ 	* config/bfin/bfin.h (HARD_REGNO_NREGS): Delete.
+ 	* config/bfin/bfin.c (bfin_hard_regno_nregs): New function.
+ 	(TARGET_HARD_REGNO_NREGS): Redefine.
+ 	* config/c6x/c6x.h (HARD_REGNO_NREGS): Delete.
+ 	* config/cr16/cr16.h (LONG_REG_P): Use targetm.hard_regno_nregs.
+ 	(HARD_REGNO_NREGS): Delete.
+ 	* config/cr16/cr16.c (TARGET_HARD_REGNO_NREGS): Redefine.
+ 	(cr16_hard_regno_nregs): New function.
+ 	(cr16_memory_move_cost): Use it instead of HARD_REGNO_NREGS.
+ 	* config/cris/cris.h (HARD_REGNO_NREGS): Delete.
+ 	* config/cris/cris.c (TARGET_HARD_REGNO_NREGS): Redefine.
+ 	(cris_hard_regno_nregs): New function.
+ 	* config/epiphany/epiphany.h (HARD_REGNO_NREGS): Delete.
+ 	* config/fr30/fr30.h (HARD_REGNO_NREGS): Delete.
+ 	(CLASS_MAX_NREGS): Use targetm.hard_regno_nregs.
+ 	* config/frv/frv.h (HARD_REGNO_NREGS): Delete.
+ 	(CLASS_MAX_NREGS): Remove outdated copy of documentation.
+ 	* config/frv/frv-protos.h (frv_hard_regno_nregs): Delete.
+ 	* config/frv/frv.c (TARGET_HARD_REGNO_NREGS): Redefine.
+ 	(frv_hard_regno_nregs): Make static.  Take and return an
+ 	unsigned int.
+ 	(frv_class_max_nregs): Remove outdated copy of documentation.
+ 	* config/ft32/ft32.h (HARD_REGNO_NREGS): Delete.
+ 	* config/h8300/h8300.h (HARD_REGNO_NREGS): Delete.
+ 	* config/h8300/h8300-protos.h (h8300_hard_regno_nregs): Delete.
+ 	* config/h8300/h8300.c (h8300_hard_regno_nregs): Delete.
+ 	* config/i386/i386.h (HARD_REGNO_NREGS): Delete.
+ 	* config/i386/i386.c (ix86_hard_regno_nregs): New function.
+ 	(TARGET_HARD_REGNO_NREGS): Redefine.
+ 	* config/ia64/ia64.h (HARD_REGNO_NREGS): Delete.
+ 	(CLASS_MAX_NREGS): Update comment.
+ 	* config/ia64/ia64.c (TARGET_HARD_REGNO_NREGS): Redefine.
+ 	(ia64_hard_regno_nregs): New function.
+ 	* config/iq2000/iq2000.h (HARD_REGNO_NREGS): Delete.
+ 	* config/lm32/lm32.h (HARD_REGNO_NREGS): Delete.
+ 	* config/m32c/m32c.h (HARD_REGNO_NREGS): Delete.
+ 	* config/m32c/m32c-protos.h (m32c_hard_regno_nregs): Delete.
+ 	* config/m32c/m32c.c (m32c_hard_regno_nregs_1): Take and return
+ 	an unsigned int.
+ 	(m32c_hard_regno_nregs): Likewise.  Make static.
+ 	(TARGET_HARD_REGNO_NREGS): Redefine.
+ 	* config/m32r/m32r.h (HARD_REGNO_NREGS): Delete.
+ 	* config/m68k/m68k.h (HARD_REGNO_NREGS): Delete.
+ 	* config/m68k/m68k.c (TARGET_HARD_REGNO_NREGS): Redefine.
+ 	(m68k_hard_regno_nregs): New function.
+ 	* config/mcore/mcore.h (HARD_REGNO_NREGS): Delete.
+ 	* config/microblaze/microblaze.h (HARD_REGNO_NREGS): Delete.
+ 	* config/mips/mips.h (HARD_REGNO_NREGS): Delete.
+ 	* config/mips/mips-protos.h (mips_hard_regno_nregs): Delete.
+ 	* config/mips/mips.c (mips_hard_regno_nregs): Make static.
+ 	Take and return an unsigned int.
+ 	(TARGET_HARD_REGNO_NREGS): Redefine.
+ 	* config/mmix/mmix.h (HARD_REGNO_NREGS): Delete.
+ 	(CLASS_MAX_NREGS): Use targetm.hard_regno_nregs.
+ 	* config/mn10300/mn10300.h (HARD_REGNO_NREGS): Delete.
+ 	* config/moxie/moxie.h (HARD_REGNO_NREGS): Delete.
+ 	* config/msp430/msp430.h (HARD_REGNO_NREGS): Delete.
+ 	* config/msp430/msp430-protos.h (msp430_hard_regno_nregs): Delete.
+ 	* config/msp430/msp430.c (TARGET_HARD_REGNO_NREGS): Redefine.
+ 	(msp430_hard_regno_nregs): Make static.  Take and return an
+ 	unsigned int.
+ 	* config/nds32/nds32.h (HARD_REGNO_NREGS): Delete.
+ 	* config/nds32/nds32-protos.h (nds32_hard_regno_nregs): Delete.
+ 	* config/nds32/nds32.c (nds32_hard_regno_nregs): Delete.
+ 	(nds32_hard_regno_mode_ok): Use targetm.hard_regno_nregs.
+ 	* config/nios2/nios2.h (HARD_REGNO_NREGS): Delete.
+ 	* config/nvptx/nvptx.h (HARD_REGNO_NREGS): Delete.
+ 	* config/nvptx/nvptx.c (nvptx_hard_regno_nregs): New function.
+ 	(TARGET_HARD_REGNO_NREGS): Redefine.
+ 	* config/pa/pa32-regs.h (HARD_REGNO_NREGS): Rename to...
+ 	(PA_HARD_REGNO_NREGS): ...this.
+ 	* config/pa/pa64-regs.h (HARD_REGNO_NREGS): Rename to...
+ 	(PA_HARD_REGNO_NREGS): ...this.
+ 	* config/pa/pa.c (TARGET_HARD_REGNO_NREGS): Redefine.
+ 	(pa_hard_regno_nregs): New function.
+ 	* config/pdp11/pdp11.h (HARD_REGNO_NREGS): Delete.
+ 	* config/pdp11/pdp11.c (TARGET_HARD_REGNO_NREGS): Redefine.
+ 	(pdp11_hard_regno_nregs): New function.
+ 	* config/powerpcspe/powerpcspe.h (HARD_REGNO_NREGS): Delete.
+ 	* config/powerpcspe/powerpcspe.c (TARGET_HARD_REGNO_NREGS): Redefine.
+ 	(rs6000_hard_regno_nregs_hook): New function.
+ 	* config/riscv/riscv.h (HARD_REGNO_NREGS): Delete.
+ 	* config/riscv/riscv-protos.h (riscv_hard_regno_nregs): Delete.
+ 	* config/riscv/riscv.c (riscv_hard_regno_nregs): Make static.
+ 	Take and return an unsigned int.  Move earlier in file.
+ 	(TARGET_HARD_REGNO_NREGS): Redefine.
+ 	* config/rl78/rl78.h (HARD_REGNO_NREGS): Delete.
+ 	* config/rl78/rl78-protos.h (rl78_hard_regno_nregs): Delete.
+ 	* config/rl78/rl78.c (TARGET_HARD_REGNO_NREGS): Reefine.
+ 	(rl78_hard_regno_nregs): Make static.  Take and return an
+ 	unsigned int.
+ 	* config/rs6000/rs6000.h (HARD_REGNO_NREGS): Delete.
+ 	* config/rs6000/rs6000.c (TARGET_HARD_REGNO_NREGS): Redefine.
+ 	(rs6000_hard_regno_nregs_hook): New function.
+ 	* config/rx/rx.h (HARD_REGNO_NREGS): Delete.
+ 	* config/rx/rx.c (rx_hard_regno_nregs): New function.
+ 	(TARGET_HARD_REGNO_NREGS): Redefine.
+ 	* config/s390/s390.h (HARD_REGNO_NREGS): Delete.
+ 	* config/s390/s390.c (REGNO_PAIR_OK): Use s390_hard_regno_nregs
+ 	instead of HARD_REGNO_NREGS.
+ 	(s390_hard_regno_nregs): New function.
+ 	(s390_hard_regno_mode_ok): Add comment from s390.h.
+ 	(TARGET_HARD_REGNO_NREGS): Redefine.
+ 	* config/sh/sh.h (HARD_REGNO_NREGS): Delete.
+ 	* config/sh/sh.c (TARGET_HARD_REGNO_NREGS): Redefine.
+ 	(sh_hard_regno_nregs): New function.
+ 	(sh_pass_in_reg_p): Use it.
+ 	* config/sparc/sparc.h (HARD_REGNO_NREGS): Delete.
+ 	* config/sparc/sparc.c (TARGET_HARD_REGNO_NREGS): Redefine.
+ 	(sparc_hard_regno_nregs): New function.
+ 	* config/spu/spu.h (HARD_REGNO_NREGS): Delete.
+ 	* config/spu/spu.c (spu_hard_regno_nregs): New function.
+ 	(spu_function_arg_advance): Use it, supplying a valid register number.
+ 	(TARGET_HARD_REGNO_NREGS): Redefine.
+ 	* config/stormy16/stormy16.h (HARD_REGNO_NREGS): Delete.
+ 	* config/tilegx/tilegx.h (HARD_REGNO_NREGS): Delete.
+ 	* config/tilepro/tilepro.h (HARD_REGNO_NREGS): Delete.
+ 	* config/v850/v850.h (HARD_REGNO_NREGS): Delete.
+ 	* config/vax/vax.h (HARD_REGNO_NREGS): Delete.
+ 	* config/visium/visium.h (HARD_REGNO_NREGS): Delete.
+ 	(CLASS_MAX_NREGS): Remove copy of old documentation.
+ 	* config/visium/visium.c (TARGET_HARD_REGNO_NREGS): Redefine.
+ 	(visium_hard_regno_nregs): New function.
+ 	(visium_hard_regno_mode_ok): Use it instead of HARD_REGNO_NREGS.
+ 	* config/xtensa/xtensa.h (HARD_REGNO_NREGS): Delete.
+ 	* config/xtensa/xtensa.c (TARGET_HARD_REGNO_NREGS): Redefine.
+ 	xtensa_hard_regno_nregs): New function.
+ 	* system.h (HARD_REGNO_NREGS): Poison.
+ 
+ 2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* config/arm/arm.h (THUMB_SECONDARY_INPUT_RELOAD_CLASS): Use
+ 	hard_regno_nregs instead of HARD_REGNO_NREGS.
+ 	(THUMB_SECONDARY_OUTPUT_RELOAD_CLASS): Likewise.
+ 	* config/c6x/c6x.c (c6x_expand_prologue): Likewise.
+ 	(c6x_expand_epilogue): Likewise.
+ 	* config/frv/frv.c (frv_alloc_temp_reg): Likewise.
+ 	(frv_read_iacc_argument): Likewise.
+ 	* config/sh/sh.c: Include regs.h.
+ 	(sh_print_operand): Use hard_regno_nregs instead of HARD_REGNO_NREGS.
+ 	(regs_used): Likewise.
+ 	(output_stack_adjust): Likewise.
+ 	* config/xtensa/xtensa.c (xtensa_copy_incoming_a7): Likewise.
+ 	* expmed.c: Include regs.h.
+ 	(store_bit_field_1): Use hard_regno_nregs instead of HARD_REGNO_NREGS.
+ 	* ree.c: Include regs.h.
+ 	(combine_reaching_defs): Use hard_regno_nregs instead of
+ 	HARD_REGNO_NREGS.
+ 	(add_removable_extension): Likewise.
+ 
+ 2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* regs.h (hard_regno_nregs): Turn into a function.
+ 	(end_hard_regno): Update accordingly.
+ 	* caller-save.c (setup_save_areas): Likewise.
+ 	(save_call_clobbered_regs): Likewise.
+ 	(replace_reg_with_saved_mem): Likewise.
+ 	(insert_restore): Likewise.
+ 	(insert_save): Likewise.
+ 	* combine.c (can_change_dest_mode): Likewise.
+ 	(move_deaths): Likewise.
+ 	(distribute_notes): Likewise.
+ 	* config/mips/mips.c (mips_hard_regno_call_part_clobbered): Likewise.
+ 	* config/powerpcspe/powerpcspe.c (rs6000_cannot_change_mode_class)
+ 	(rs6000_split_multireg_move): Likewise.
+ 	(rs6000_register_move_cost): Likewise.
+ 	(rs6000_memory_move_cost): Likewise.
+ 	* config/rs6000/rs6000.c (rs6000_cannot_change_mode_class): Likewise.
+ 	(rs6000_split_multireg_move): Likewise.
+ 	(rs6000_register_move_cost): Likewise.
+ 	(rs6000_memory_move_cost): Likewise.
+ 	* cselib.c (cselib_reset_table): Likewise.
+ 	(cselib_lookup_1): Likewise.
+ 	* emit-rtl.c (set_mode_and_regno): Likewise.
+ 	* function.c (aggregate_value_p): Likewise.
+ 	* ira-color.c (setup_profitable_hard_regs): Likewise.
+ 	(check_hard_reg_p): Likewise.
+ 	(calculate_saved_nregs): Likewise.
+ 	(assign_hard_reg): Likewise.
+ 	(improve_allocation): Likewise.
+ 	(calculate_spill_cost): Likewise.
+ 	* ira-emit.c (modify_move_list): Likewise.
+ 	* ira-int.h (ira_hard_reg_set_intersection_p): Likewise.
+ 	(ira_hard_reg_in_set_p): Likewise.
+ 	* ira.c (setup_reg_mode_hard_regset): Likewise.
+ 	(clarify_prohibited_class_mode_regs): Likewise.
+ 	(check_allocation): Likewise.
+ 	* lra-assigns.c (find_hard_regno_for_1): Likewise.
+ 	(lra_setup_reg_renumber): Likewise.
+ 	(setup_try_hard_regno_pseudos): Likewise.
+ 	(spill_for): Likewise.
+ 	(assign_hard_regno): Likewise.
+ 	(setup_live_pseudos_and_spill_after_risky_transforms): Likewise.
+ 	* lra-constraints.c (in_class_p): Likewise.
+ 	(lra_constraint_offset): Likewise.
+ 	(simplify_operand_subreg): Likewise.
+ 	(lra_constraints): Likewise.
+ 	(split_reg): Likewise.
+ 	(split_if_necessary): Likewise.
+ 	(invariant_p): Likewise.
+ 	(inherit_in_ebb): Likewise.
+ 	* lra-lives.c (process_bb_lives): Likewise.
+ 	* lra-remat.c (reg_overlap_for_remat_p): Likewise.
+ 	(get_hard_regs): Likewise.
+ 	(do_remat): Likewise.
+ 	* lra-spills.c (assign_spill_hard_regs): Likewise.
+ 	* mode-switching.c (create_pre_exit): Likewise.
+ 	* postreload.c (reload_combine_recognize_pattern): Likewise.
+ 	* recog.c (peep2_find_free_register): Likewise.
+ 	* regcprop.c (kill_value_regno): Likewise.
+ 	(set_value_regno): Likewise.
+ 	(copy_value): Likewise.
+ 	(maybe_mode_change): Likewise.
+ 	(find_oldest_value_reg): Likewise.
+ 	(copyprop_hardreg_forward_1): Likewise.
+ 	* regrename.c (check_new_reg_p): Likewise.
+ 	(regrename_do_replace): Likewise.
+ 	* reload.c (push_reload): Likewise.
+ 	(combine_reloads): Likewise.
+ 	(find_dummy_reload): Likewise.
+ 	(operands_match_p): Likewise.
+ 	(find_reloads): Likewise.
+ 	(find_equiv_reg): Likewise.
+ 	(reload_adjust_reg_for_mode): Likewise.
+ 	* reload1.c (count_pseudo): Likewise.
+ 	(count_spilled_pseudo): Likewise.
+ 	(find_reg): Likewise.
+ 	(clear_reload_reg_in_use): Likewise.
+ 	(free_for_value_p): Likewise.
+ 	(allocate_reload_reg): Likewise.
+ 	(choose_reload_regs): Likewise.
+ 	(reload_adjust_reg_for_temp): Likewise.
+ 	(emit_reload_insns): Likewise.
+ 	(delete_output_reload): Likewise.
+ 	* rtlanal.c (subreg_get_info): Likewise.
+ 	* sched-deps.c (sched_analyze_reg): Likewise.
+ 	* sel-sched.c (init_regs_for_mode): Likewise.
+ 	(mark_unavailable_hard_regs): Likewise.
+ 	(choose_best_reg_1): Likewise.
+ 	(verify_target_availability): Likewise.
+ 	* valtrack.c (dead_debug_insert_temp): Likewise.
+ 	* var-tracking.c (track_loc_p): Likewise.
+ 	(emit_note_insn_var_location): Likewise.
+ 	* varasm.c (make_decl_rtl): Likewise.
+ 	* reginfo.c (choose_hard_reg_mode): Likewise.
+ 	(init_reg_modes_target): Refer directly to
+ 	this_target_regs->x_hard_regno_nregs.
+ 
+ 2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* ira-costs.c (record_operand_costs): Use in_hard_reg_set_p
+ 	instead of hard_regno_nregs.
+ 
+ 2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_hard_regno_mode_ok): Use
+ 	end_hard_regno instead of hard_regno_nregs.
+ 	* config/s390/s390.c (s390_reg_clobbered_rtx): Likewise.
+ 	* config/sparc/sparc.h (ASM_DECLARE_REGISTER_GLOBAL): Likewise.
+ 	* config/visium/visium.c (visium_hard_regno_mode_ok): Likewise.
+ 	* ira-color.c (improve_allocation): Likewise.
+ 	* lra-assigns.c (find_hard_regno_for_1): Likewise.
+ 	* lra-lives.c (mark_regno_live): Likewise.
+ 	(mark_regno_dead): Likewise.
+ 	* lra-remat.c (operand_to_remat): Likewise.
+ 	* lra.c (collect_non_operand_hard_regs): Likewise.
+ 	* postreload.c (reload_combine_note_store): Likewise.
+ 	(move2add_valid_value_p): Likewise.
+ 	* reload.c (regno_clobbered_p): Likewise.
+ 
+ 2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* config/frv/frv.c (FOR_EACH_REGNO): Use END_REGNO instead of
+ 	hard_regno_nregs.
+ 	* config/v850/v850.c (v850_reorg): Likewise.
+ 	* reload.c (refers_to_regno_for_reload_p): Likewise.
+ 	(find_equiv_reg): Likewise.
+ 	* reload1.c (reload_reg_reaches_end_p): Likewise.
+ 
+ 2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* caller-save.c (add_used_regs): Use REG_NREGS instead of
+ 	hard_regno_nregs.
+ 	* config/aarch64/aarch64.c (aarch64_split_combinev16qi): Likewise.
+ 	* config/arm/arm.c (output_move_neon): Likewise.
+ 	(arm_attr_length_move_neon): Likewise.
+ 	(neon_split_vcombine): Likewise.
+ 	* config/c6x/c6x.c (c6x_mark_reg_read): Likewise.
+ 	(c6x_mark_reg_written): Likewise.
+ 	(c6x_dwarf_register_span): Likewise.
+ 	* config/i386/i386.c (ix86_save_reg): Likewise.
+ 	* config/ia64/ia64.c (mark_reg_gr_used_mask): Likewise.
+ 	(rws_access_reg): Likewise.
+ 	* config/s390/s390.c (s390_call_saved_register_used): Likewise.
+ 	* mode-switching.c (create_pre_exit): Likewise.
+ 	* ree.c (combine_reaching_defs): Likewise.
+ 	(add_removable_extension): Likewise.
+ 	* regcprop.c (find_oldest_value_reg): Likewise.
+ 	(copyprop_hardreg_forward_1): Likewise.
+ 	* reload.c (reload_inner_reg_of_subreg): Likewise.
+ 	(push_reload): Likewise.
+ 	(combine_reloads): Likewise.
+ 	(find_dummy_reload): Likewise.
+ 	(reload_adjust_reg_for_mode): Likewise.
+ 	* reload1.c (find_reload_regs): Likewise.
+ 	(forget_old_reloads_1): Likewise.
+ 	(reload_reg_free_for_value_p): Likewise.
+ 	(reload_adjust_reg_for_temp): Likewise.
+ 	(emit_reload_insns): Likewise.
+ 	(delete_output_reload): Likewise.
+ 	* sel-sched.c (choose_best_reg_1): Likewise.
+ 	(choose_best_pseudo_reg): Likewise.
+ 
+ 2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood <david.sherwood@arm.com>
+ 
+ 	* defaults.h (SLOW_UNALIGNED_ACCESS): Delete.
+ 	* target.def (slow_unaligned_access): New hook.
+ 	* targhooks.h (default_slow_unaligned_access): Declare.
+ 	* targhooks.c (default_slow_unaligned_access): New function.
+ 	* doc/tm.texi.in (SLOW_UNALIGNED_ACCESS): Replace with...
+ 	(TARGET_SLOW_UNALIGNED_ACCESS): ...this.
+ 	* doc/tm.texi: Regenerate.
+ 	* config/alpha/alpha.h (SLOW_UNALIGNED_ACCESS): Delete.
+ 	* config/arm/arm.h (SLOW_UNALIGNED_ACCESS): Delete.
+ 	* config/i386/i386.h (SLOW_UNALIGNED_ACCESS): Delete commented-out
+ 	definition.
+ 	* config/powerpcspe/powerpcspe.h (SLOW_UNALIGNED_ACCESS): Delete.
+ 	* config/powerpcspe/powerpcspe.c (TARGET_SLOW_UNALIGNED_ACCESS):
+ 	Redefine.
+ 	(rs6000_slow_unaligned_access): New function.
+ 	(rs6000_emit_move): Use it instead of SLOW_UNALIGNED_ACCESS.
+ 	(expand_block_compare): Likewise.
+ 	(expand_strn_compare): Likewise.
+ 	(rs6000_rtx_costs): Likewise.
+ 	* config/riscv/riscv.h (SLOW_UNALIGNED_ACCESS): Delete.
+ 	(riscv_slow_unaligned_access): Likewise.
+ 	* config/riscv/riscv.c (riscv_slow_unaligned_access): Rename to...
+ 	(riscv_slow_unaligned_access_p): ...this and make static.
+ 	(riscv_option_override): Update accordingly.
+ 	(riscv_slow_unaligned_access): New function.
+ 	(TARGET_SLOW_UNALIGNED_ACCESS): Redefine.
+ 	* config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Delete.
+ 	* config/rs6000/rs6000.c (TARGET_SLOW_UNALIGNED_ACCESS): Redefine.
+ 	(rs6000_slow_unaligned_access): New function.
+ 	(rs6000_emit_move): Use it instead of SLOW_UNALIGNED_ACCESS.
+ 	(rs6000_rtx_costs): Likewise.
+ 	* config/rs6000/rs6000-string.c (expand_block_compare)
+ 	(expand_strn_compare): Use targetm.slow_unaligned_access instead
+ 	of SLOW_UNALIGNED_ACCESS.
+ 	* config/tilegx/tilegx.h (SLOW_UNALIGNED_ACCESS): Delete.
+ 	* config/tilepro/tilepro.h (SLOW_UNALIGNED_ACCESS): Delete.
+ 	* calls.c (expand_call): Use targetm.slow_unaligned_access instead
+ 	of SLOW_UNALIGNED_ACCESS.
+ 	* expmed.c (simple_mem_bitfield_p): Likewise.
+ 	* expr.c (alignment_for_piecewise_move): Likewise.
+ 	(emit_group_load_1): Likewise.
+ 	(emit_group_store): Likewise.
+ 	(copy_blkmode_from_reg): Likewise.
+ 	(emit_push_insn): Likewise.
+ 	(expand_assignment): Likewise.
+ 	(store_field): Likewise.
+ 	(expand_expr_real_1): Likewise.
+ 	* gimple-fold.c (gimple_fold_builtin_memory_op): Likewise.
+ 	* lra-constraints.c (simplify_operand_subreg): Likewise.
+ 	* stor-layout.c (bit_field_mode_iterator::next_mode): Likewise.
+ 	* gimple-ssa-store-merging.c: Likewise in block comment at start
+ 	of file.
+ 	* tree-ssa-strlen.c: Include target.h.
+ 	(handle_builtin_memcmp): Use targetm.slow_unaligned_access instead
+ 	of SLOW_UNALIGNED_ACCESS.
+ 	* system.h (SLOW_UNALIGNED_ACCESS): Poison.
+ 
+ 2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	PR rtl-optimization/82185
+ 	* expmed.c (emit_store_flag_int): Only test tem if it has been
+ 	initialized.
+ 
+ 2017-09-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/82149
+ 	* match.pd ((FTYPE) N CMP CST): Fix typo.
+ 
+ 2017-09-12  Simon Atanasyan  <simon.atanasyan@imgtec.com>
+ 
+ 	* config/mips/mips.c (mips_attribute_table): Add 'short_call'
+ 	attribute.
+ 	(mips_near_type_p): Add 'short_call' attribute as a synonym
+ 	for 'near'.
+ 	* doc/extend.texi (short_call): Document new function attribute.
+ 
+ 2017-09-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/82112
+ 	* c-common.c (sync_resolve_size): Instead of c_dialect_cxx ()
+ 	assertion check that in the condition.
+ 	(get_atomic_generic_size): Likewise.  Before testing if parameter
+ 	has pointer type, if it has array type, call for C++
+ 	default_conversion to perform array-to-pointer conversion.
+ 
+ 2017-09-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-generic.c (expand_vector_operations_1): Do nothing
+ 	for operations we cannot scalarize.
+ 
+ 2017-09-12  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* tree-ssa-threadbackward.c (fsm_find_thread_path): Make GC
+ 	vectors heap vectors.  Clean up comments.
+ 	Make visited_bbs a reference.
+ 	(profitable_jump_thread_path): Make GC
+ 	vectors heap vectors.  Clean up comments.
+ 	Misc cleanups.
+ 	(convert_and_register_jump_thread_path): Make GC vectors heap
+ 	vectors.
+ 	(check_subpath_and_update_thread_path): Same.  Clean up comments.
+ 	Make visited_bbs a reference.
+ 	(handle_phi): Abstract common code to to
+ 	register_jump_thread_path_if_profitable.
+ 	Rename VAR_BB to DEF_BB.
+ 	Update comments.
+ 	Make GC vectors heap vectors.
+ 	Make visited_bbs a reference.
+ 	(handle_assignment): Same.
+ 	(register_jump_thread_path_if_profitable): New.
+ 	(fsm_find_control_statement_thread_paths): Rename VAR_BB to
+ 	DEF_BB.
+ 	Make GC	vectors heap vectors.  Clean up comments.
+ 	Make visited_bbs a reference.
+ 	(find_jump_threads_backwards): Make visited_bbs live in the stack.
+ 	* tree-ssa-threadupdate.c (delete_jump_thread_path): Fix typo in
+ 	comment.
+ 
+ 2017-09-11  Max Filippov  <jcmvbkbc@gmail.com>
+ 
+ 	PR target/82181
+ 	* config/xtensa/xtensa.c (xtensa_mem_offset): Check that both
+ 	words of E_DImode object are reachable by xtensa_uimm8x4 access.
+ 
+ 2017-09-11  Vidya Praveen  <vidyapraveen@arm.com>
+ 
+ 	Revert r251800 and r251799.
+ 
+ 2017-09-11  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR hsa/82119
+ 	* hsa-gen.c (gen_hsa_phi_from_gimple_phi): Process ADDR_EXPRs in
+ 	arguments in advance.
+ 	* hsa-regalloc.c (naive_process_phi): New parameter predecessors,
+ 	use it to find predecessor edges.
+ 	(naive_outof_ssa): Collect vector of predecessors.
+ 
+ 2017-09-08  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/70029 - ICE with ref-qualifier and -flto
+ 	* langhooks.h (struct lang_hooks_for_types): Add
+ 	copy_lang_qualifiers.
+ 	* attribs.c (build_type_attribute_qual_variant): Use it.
+ 	* langhooks-def.h (LANG_HOOKS_COPY_LANG_QUALIFIERS): Default to
+ 	NULL.
+ 	(LANG_HOOKS_FOR_TYPES_INITIALIZER): Use it.
+ 	* tree.c (verify_type): Re-enable TYPE_CANONICAL main variant check.
+ 
+ 2017-09-08  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR target/81988
+ 	* config/sparc/sparc.md (mulsi3): Rename into *mulsi3_sp32.
+ 	(*mulsi3_sp64): New instruction.
+ 	(mulsi3): New expander.
+ 
+ 2017-09-08  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/alpha/alpha.c (alpha_print_operand) <case 'S'>: Remove.
+ 
+ 2017-09-08  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	* sancov.c: Include memmodel.h.
+ 
+ 2017-09-07  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR target/80897
+ 	* config/sparc/sparc.c (sparc_emit_set_symbolic_const64): Deal with too
+ 	large offsets.
+ 
+ 2017-09-07  Carl Love  <cel@us.ibm.com>
+ 
+ 	* config/rs6000/vsx.md (define_insn "*stxvl"): Add missing argument to
+ 	the sldi instruction.
+ 
+ 2017-09-07  David Edelsohn  <dje.gcc@gmail.com>
+ 
+ 	* sancov.c: Include tm_p.h.
+ 
+ 2017-09-07  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/81979
+ 	* output.h (switch_to_other_text_partition): New declaration.
+ 	* varasm.c (switch_to_other_text_partition): New function.
+ 	* config/rs6000/rs6000.c (uses_TOC): Return 2 if
+ 	NOTE_INSN_SWITCH_TEXT_SECTIONS is seen before finding load_toc_* insn.
+ 	(rs6000_elf_declare_function_name): If uses_TOC returned 2, switch
+ 	to the other text partition before emitting LCL label and switch back
+ 	after emitting the word after it.
+ 
+ 2017-09-07  Richard Biener  <rguenther@suse.de>
+ 
+ 	* passes.def (pass_split_crit_edges): Remove instance before PRE.
+ 	* tree-ssa-pre.c (pass_pre::execute): Instead manually split
+ 	critical edges here, after loop init.
+ 	(pass_data_pre): Remove PROP_no_crit_edges flags.
+ 	* tree-ssa-sccvn.c (vn_reference_lookup_3): Use vn_valueize
+ 	for valueization of call args to avoid leaking VN_TOP.
+ 	(visit_use): Assert we do not visit default defs.
+ 	(init_scc_vn): Use build_decl for VN_TOP to make name nicer.
+ 	Use error_mark_node to more easily detect leaking VN_TOP.
+ 	All default-defs are varying, not VN_TOP.  Mark them visited.
+ 	(run_scc_vn): Make code match comment.
+ 
+ 2017-09-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	* config/rs6000/rs6000-cpus.def (OTHER_VSX_VECTOR_MASKS): Delete
+ 	OPTION_MASK_FLOAT128_KEYWORD.
+ 	(POWERPC_MASKS): Likewise.
+ 	* config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Delete
+ 	support for the -mfloat128-type option, and make -mfloat128
+ 	default on PowerPC Linux systems.  Define or undefine
+ 	__FLOAT128__ and  __FLOAT128_HARDWARE__ for the current options.
+ 	Define __float128 to be __ieee128 if IEEE 128-bit support is
+ 	enabled, or undefine it.
+ 	(rs6000_cpu_cpp_builtins): Delete defining __FLOAT128__ here.
+ 	Delete defining __FLOAT128_TYPE__.
+ 	* config/rs6000/rs6000.opt (x_TARGET_FLOAT128_TYPE): Delete the
+ 	-mfloat128-type option and make -mfloat128 default on PowerPC
+ 	Linux systems.
+ 	(TARGET_FLOAT128_TYPE): Likewise.
+ 	(-mfloat128-type): Likewise.
+ 	* config/rs6000/rs6000.c (rs6000_option_override_internal):
+ 	Delete the -mfloat128-type option and make -mfloat128 default on
+ 	PowerPC Linux systems.  Always use __ieee128 to be the keyword for
+ 	the IEEE 128-bit type, and map __float128 to __ieee128 if IEEE
+ 	128-bit floating point is enabled.  Change tests from using
+ 	-mfloat128-type to -mfloat128.
+ 	(rs6000_mangle_type): Use the correct mangling for the __float128
+ 	type even if normal long double is restricted to 64-bits.
+ 	(floatn_mode): Enable the _Float128 type by default on VSX Linux
+ 	systems.
+ 	* config/rs6000/rs6000.h (MASK_FLOAT128_TYPE): Delete.
+ 	(MASK_FLOAT128_KEYWORD): Define new shortcut macro.
+ 	(RS6000BTM_FLOAT128): Define in terms of -mfloat128, not
+ 	-mfloat128-type.
+ 	* doc/invoke.texi (RS/6000 and PowerPC Options): Update
+ 	documentation for -mfloat128.
+ 
+ 2017-09-06  Olivier Hainque  <hainque@adacore.com>
+ 
+ 	* config.gcc (powerpc-wrs-vxworksspe): Now match as vxworks*spe.
+ 
+ 2017-09-06  Wish Wu  <wishwu007@gmail.com>
+ 	    Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* asan.c (initialize_sanitizer_builtins): Add
+ 	BT_FN_VOID_UINT8_UINT8, BT_FN_VOID_UINT16_UINT16,
+ 	BT_FN_VOID_UINT32_UINT32, BT_FN_VOID_UINT64_UINT64,
+ 	BT_FN_VOID_FLOAT_FLOAT, BT_FN_VOID_DOUBLE_DOUBLE and
+ 	BT_FN_VOID_UINT64_PTR variables.
+ 	* builtin-types.def (BT_FN_VOID_UINT8_UINT8): New fn type.
+ 	(BT_FN_VOID_UINT16_UINT16): Likewise.
+ 	(BT_FN_VOID_UINT32_UINT32): Likewise.
+ 	(BT_FN_VOID_FLOAT_FLOAT): Likewise.
+ 	(BT_FN_VOID_DOUBLE_DOUBLE): Likewise.
+ 	(BT_FN_VOID_UINT64_PTR): Likewise.
+ 	* common.opt (flag_sanitize_coverage): New variable.
+ 	(fsanitize-coverage=trace-pc): Remove.
+ 	(fsanitize-coverage=): Add.
+ 	* flag-types.h (enum sanitize_coverage_code): New enum.
+ 	* fold-const.c (fold_range_test): Disable non-short-circuit
+ 	optimization if flag_sanitize_coverage.
+ 	(fold_truth_andor): Likewise.
+ 	* tree-ssa-ifcombine.c (ifcombine_ifandif): Likewise.
+ 	* opts.c (COVERAGE_SANITIZER_OPT): Define.
+ 	(coverage_sanitizer_opts): New array.
+ 	(get_closest_sanitizer_option): Add OPTS argument, handle also
+ 	OPT_fsanitize_coverage_.
+ 	(parse_sanitizer_options): Adjusted to also handle
+ 	OPT_fsanitize_coverage_.
+ 	(common_handle_option): Add OPT_fsanitize_coverage_.
+ 	* sancov.c (instrument_comparison, instrument_switch): New function.
+ 	(sancov_pass): Add trace-cmp support.
+ 	* sanitizer.def (BUILT_IN_SANITIZER_COV_TRACE_CMP1,
+ 	BUILT_IN_SANITIZER_COV_TRACE_CMP2, BUILT_IN_SANITIZER_COV_TRACE_CMP4,
+ 	BUILT_IN_SANITIZER_COV_TRACE_CMP8,
+ 	BUILT_IN_SANITIZER_COV_TRACE_CONST_CMP1,
+ 	BUILT_IN_SANITIZER_COV_TRACE_CONST_CMP2,
+ 	BUILT_IN_SANITIZER_COV_TRACE_CONST_CMP4,
+ 	BUILT_IN_SANITIZER_COV_TRACE_CONST_CMP8,
+ 	BUILT_IN_SANITIZER_COV_TRACE_CMPF, BUILT_IN_SANITIZER_COV_TRACE_CMPD,
+ 	BUILT_IN_SANITIZER_COV_TRACE_SWITCH): New builtins.
+ 	* doc/invoke.texi: Document -fsanitize-coverage=trace-cmp.
+ 
+ 2017-09-06  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config/arm/parsecpu.awk (fatal): Note that we've encountered an
+ 	error.  Only quit immediately if parsing is complete.
+ 	(BEGIN): Initialize fatal_err and parse_done.
+ 	(begin fpu, end fpu): Check number of arguments.
+ 	(begin arch, end arch): Likewise.
+ 	(begin cpu, end cpu): Likewise.
+ 	(cname, tune for, tune flags, architecture, fpu, option): Likewise.
+ 	(optalias): Likewise.
+ 
+ 2017-09-06  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config.gcc (arm*-*-*): Don't add arm-isa.h to tm_p_file.
+ 	* config/arm/arm-isa.h: Delete.  Move definitions to ...
+ 	* arm-cpus.in: ... here.  Use new feature and fgroup values.
+ 	* config/arm/arm.c (arm_option_override): Use lower case for feature
+ 	bit names.
+ 	* config/arm/arm.h (TARGET_HARD_FLOAT): Likewise.
+ 	(TARGET_VFP3, TARGET_VFP5, TARGET_FMA): Likewise.
+ 	* config/arm/parsecpu.awk (END): Add new command 'isa'.
+ 	(isa_pfx): Delete.
+ 	(print_isa_bits_for): New function.
+ 	(gen_isa): New function.
+ 	(gen_comm_data): Use print_isa_bits_for.
+ 	(define feature): New keyword.
+ 	(define fgroup): New keyword.
+ 	* config/arm/t-arm (OPTIONS_H_EXTRA): Add arm-isa.h
+ 	(arm-isa.h): Add rule to generate file.
+ 	* common/config/arm/arm-common.c: (arm_canon_arch_option): Use lower
+ 	case for feature bit names.
+ 
+ 2017-09-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-pre.c (NECESSARY): Remove.
+ 	(create_expression_by_pieces): Do not touch pass-local flags.
+ 	(insert_into_preds_of_block): Likewise.
+ 	(do_pre_regular_insertion): Likewise.
+ 	(eliminate_insert): Likewise.
+ 	(eliminate_dom_walker::before_dom_children): Likewise.
+ 	(fini_eliminate): Do not look at inserted_exprs.
+ 	(mark_operand_necessary): Remove.
+ 	(remove_dead_inserted_code): Replace with simple work-list
+ 	algorithm based on inserted_exprs and SSA uses.
+ 	(pass_pre::execute): Re-order fini_eliminate and
+ 	remove_dead_inserted_code.
+ 
+ 2017-09-06  Olivier Hainque  <hainque@adacore.com>
+ 
+ 	* config/powerpcspe/vxworks.h (VXCPU_FOR_8548): Correct definition
+ 	for VxWorks 7.  Adjust surrounding comments.
+ 
+ 2017-09-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gimple-ssa-strength-reduction.c
+ 	(find_candidates_dom_walker::before_dom_children): Also allow
+ 	pointer types.
+ 
+ 2017-09-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/82108
+ 	* tree-vect-stmts.c (vectorizable_load): Fix pointer adjustment
+ 	for gap in the non-permutation SLP case.
+ 
+ 2017-09-06  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR tree-optimization/82078
+ 	* tree-sra.c (sort_and_splice_var_accesses): Move call to
+ 	add_access_to_work_queue...
+ 	(build_accesses_from_assign): ...here.
+ 	(propagate_all_subaccesses): Make sure racc is the group
+ 	representative, if there is one.
+ 
+ 2017-09-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/82095
+ 	* varasm.c (categorize_decl_for_section): Use SECCAT_TBSS for TLS vars with
+ 	NULL DECL_INITIAL.
+ 
+ 2017-09-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gimple-ssa-strength-reduction.c
+ 	(find_candidates_dom_walker::before_doom_children): Use a
+ 	type and not a mode check.
+ 
+ 2017-09-06  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+ 
+ 	PR target/77308
+ 	* config/arm/predicates.md (arm_general_adddi_operand): Create new
+ 	non-vfp predicate.
+ 	* config/arm/arm.md (*arm_adddi3, *arm_subdi3): Use new predicates.
+ 
+ 2017-09-05  Jeff Law  <law@redhat.com>
+ 
+ 	PR tree-optimization/64910
+ 	* tree-ssa-reassoc.c (reassociate_bb): Restrict last change to
+ 	cases where we have 3 or more operands.
+ 
+ 2017-09-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/81768
+ 	* omp-low.c (lower_omp_for): Recompute tree invariant if
+ 	gimple_omp_for_initial/final is ADDR_EXPR.
+ 
+ 	PR middle-end/81768
+ 	* omp-expand.c (expand_omp_simd): Force second operands of COND_EXPR
+ 	into gimple val before gimplification fo the COND_EXPR.
+ 
+ 2017-09-05  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* tree-ssa-threadupdate.c (duplicate_thread_path): Remove unused
+ 	REGION_COPY argument.
+ 	(thread_through_all_blocks): Remove unused argument to
+ 	duplicate_thread_path.
+ 
+ 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* config/aarch64/aarch64-protos.h (aarch64_gen_adjusted_ldpstp):
+ 	Take a scalar_mode rather than a machine_mode.
+ 	(aarch64_operands_adjust_ok_for_ldpstp): Likewise.
+ 	* config/aarch64/aarch64.c (aarch64_simd_container_mode): Likewise.
+ 	(aarch64_operands_adjust_ok_for_ldpstp): Likewise.
+ 	(aarch64_gen_adjusted_ldpstp): Likewise.
+ 	(aarch64_expand_vector_init): Use scalar_mode instead of machine_mode.
+ 
+ 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* config/aarch64/aarch64-protos.h (aarch64_is_extend_from_extract):
+ 	Take a scalar_int_mode instead of a machine_mode.
+ 	(aarch64_mask_and_shift_for_ubfiz_p): Likewise.
+ 	(aarch64_output_scalar_simd_mov_immediate): Likewise.
+ 	(aarch64_simd_scalar_immediate_valid_for_move): Likewise.
+ 	(aarch64_simd_attr_length_rglist): Delete.
+ 	* config/aarch64/aarch64.c (aarch64_is_extend_from_extract): Take
+ 	a scalar_int_mode instead of a machine_mode.
+ 	(aarch64_add_offset): Likewise.
+ 	(aarch64_internal_mov_immediate): Likewise
+ 	(aarch64_add_constant_internal): Likewise.
+ 	(aarch64_add_constant): Likewise.
+ 	(aarch64_movw_imm): Likewise.
+ 	(aarch64_rtx_arith_op_extract_p): Likewise.
+ 	(aarch64_mask_and_shift_for_ubfiz_p): Likewise.
+ 	(aarch64_simd_scalar_immediate_valid_for_move): Likewise.
+ 	Remove assert that the mode isn't a vector.
+ 	(aarch64_output_scalar_simd_mov_immediate): Likewise.
+ 	(aarch64_expand_mov_immediate): Update calls after above changes.
+ 	(aarch64_output_casesi): Use as_a <scalar_int_mode>.
+ 	(aarch64_and_bitmask_imm): Check for scalar integer modes.
+ 	(aarch64_move_imm): Likewise.
+ 	(aarch64_can_const_movi_rtx_p): Likewise.
+ 	(aarch64_strip_extend): Likewise.
+ 	(aarch64_extr_rtx_p): Likewise.
+ 	(aarch64_rtx_costs): Likewise, using wode_mode as the mode of
+ 	a CONST_INT when the mode parameter is VOIDmode.
+ 	(aarch64_float_const_rtx_p): Use scalar_int_mode for a temporary.
+ 
+ 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* machmode.h (bitwise_mode_for_mode): Return opt_mode.
+ 	* stor-layout.c (bitwise_mode_for_mode): Likewise.
+ 	(bitwise_type_for_mode): Update accordingly.
+ 
+ 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* stor-layout.h (mode_for_size_tree): Return an opt_mode.
+ 	* stor-layout.c (mode_for_size_tree): Likewise.
+ 	(mode_for_array): Update accordingly.
+ 	(layout_decl): Likewise.
+ 	(compute_record_mode): Likewise.  Only set the mode once.
+ 
+ 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* target.def (get_mask_mode): Change return type to opt_mode.
+ 	Expand commentary.
+ 	* doc/tm.texi: Regenerate.
+ 	* targhooks.h (default_get_mask_mode): Return an opt_mode.
+ 	* targhooks.c (default_get_mask_mode): Likewise.
+ 	* config/i386/i386.c (ix86_get_mask_mode): Likewise.
+ 	* optabs-query.c (can_vec_mask_load_store_p): Update use of
+ 	targetm.get_mask_mode.
+ 	* tree.c (build_truth_vector_type): Likewise.
+ 
+ 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* machmode.h (mode_for_vector): Return an opt_mode.
+ 	* stor-layout.c (mode_for_vector): Likewise.
+ 	(mode_for_int_vector): Update accordingly.
+ 	(layout_type): Likewise.
+ 	* config/i386/i386.c (emit_memmov): Likewise.
+ 	(ix86_expand_set_or_movmem): Likewise.
+ 	(ix86_expand_vector_init): Likewise.
+ 	(ix86_get_mask_mode): Likewise.
+ 	* config/powerpcspe/powerpcspe.c (rs6000_expand_vec_perm_const_1):
+ 	Likewise.
+ 	* config/rs6000/rs6000.c (rs6000_expand_vec_perm_const_1): Likewise.
+ 	* expmed.c (extract_bit_field_1): Likewise.
+ 	* expr.c (expand_expr_real_2): Likewise.
+ 	* optabs-query.c (can_vec_perm_p): Likewise.
+ 	(can_vec_mask_load_store_p): Likewise.
+ 	* optabs.c (expand_vec_perm): Likewise.
+ 	* targhooks.c (default_get_mask_mode): Likewise.
+ 	* tree-vect-stmts.c (vectorizable_store): Likewise.
+ 	(vectorizable_load): Likewise.
+ 	(get_vectype_for_scalar_type_and_size): Likewise.
+ 
+ 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* machmode.h (mode_for_int_vector): New function.
+ 	* stor-layout.c (mode_for_int_vector): Likewise.
+ 	* config/aarch64/aarch64.c (aarch64_emit_approx_sqrt): Use it.
+ 	* config/powerpcspe/powerpcspe.c (rs6000_do_expand_vec_perm): Likewise.
+ 	* config/rs6000/rs6000.c (rs6000_do_expand_vec_perm): Likewise.
+ 	* config/s390/s390.c (s390_expand_vec_compare_cc): Likewise.
+ 	(s390_expand_vcond): Likewise.
+ 
+ 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* machmode.h (opt_machine_mode): New type.
+ 	(opt_mode<T>): Allow construction from anything that can be
+ 	converted to a T.
+ 	(is_a, as_a, dyn_cast): Add overloads for opt_mode.
+ 	(mode_for_size): Return an opt_machine_mode.
+ 	* stor-layout.c (mode_for_size): Likewise.
+ 	(mode_for_size_tree): Update call accordingly.
+ 	(bitwise_mode_for_mode): Likewise.
+ 	(make_fract_type): Likewise.
+ 	(make_accum_type): Likewise.
+ 	* caller-save.c (replace_reg_with_saved_mem): Update call
+ 	accordingly.
+ 	* config/alpha/alpha.h (SECONDARY_MEMORY_NEEDED_MODE): Likewise.
+ 	* config/i386/i386.h (SECONDARY_MEMORY_NEEDED_MODE): Likewise.
+ 	* config/s390/s390.h (SECONDARY_MEMORY_NEEDED_MODE): Likewise.
+ 	* config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_MODE): Likewise.
+ 	* expmed.c (extract_bit_field_1): Likewise.
+ 	* reload.c (get_secondary_mem): Likewise.
+ 	* varasm.c (assemble_integer): Likewise.
+ 	* lower-subreg.c (simplify_subreg_concatn): Likewise.  Move
+ 	early-out.
+ 
+ 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* machmode.h (decimal_float_mode_for_size): New function.
+ 	* real.h (REAL_VALUE_TO_TARGET_LONG_DOUBLE): Use float_mode_for_size.
+ 	(REAL_VALUE_TO_TARGET_DOUBLE): Likewise.
+ 	(REAL_VALUE_TO_TARGET_SINGLE): Likewise.
+ 	(REAL_VALUE_TO_TARGET_DECIMAL128): Use decimal_float_mode_for_size.
+ 	(REAL_VALUE_TO_TARGET_DECIMAL64): Likewise.
+ 	(REAL_VALUE_TO_TARGET_DECIMAL32): Likewise.
+ 
+ 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* builtins.c (expand_builtin_powi): Use int_mode_for_size.
+ 	(get_builtin_sync_mode): Likewise.
+ 	(expand_ifn_atomic_compare_exchange): Likewise.
+ 	(expand_builtin_atomic_clear): Likewise.
+ 	(expand_builtin_atomic_test_and_set): Likewise.
+ 	(fold_builtin_atomic_always_lock_free): Likewise.
+ 	* calls.c (compute_argument_addresses): Likewise.
+ 	(emit_library_call_value_1): Likewise.
+ 	(store_one_arg): Likewise.
+ 	* combine.c (combine_instructions): Likewise.
+ 	* config/aarch64/aarch64.c (aarch64_function_value): Likewise.
+ 	* config/arm/arm.c (arm_function_value): Likewise.
+ 	(aapcs_allocate_return_reg): Likewise.
+ 	* config/c6x/c6x.c (c6x_expand_movmem): Likewise.
+ 	* config/i386/i386.c (construct_container): Likewise.
+ 	(ix86_gimplify_va_arg): Likewise.
+ 	(ix86_expand_sse_cmp): Likewise.
+ 	(emit_memmov): Likewise.
+ 	(emit_memset): Likewise.
+ 	(expand_small_movmem_or_setmem): Likewise.
+ 	(ix86_expand_pextr): Likewise.
+ 	(ix86_expand_pinsr): Likewise.
+ 	* config/lm32/lm32.c (lm32_block_move_inline): Likewise.
+ 	* config/microblaze/microblaze.c (microblaze_block_move_straight):
+ 	Likewise.
+ 	* config/mips/mips.c (mips_function_value_1) Likewise.
+ 	(mips_block_move_straight): Likewise.
+ 	(mips_expand_ins_as_unaligned_store): Likewise.
+ 	* config/powerpcspe/powerpcspe.c
+ 	(rs6000_darwin64_record_arg_advance_flush): Likewise.
+ 	(rs6000_darwin64_record_arg_flush): Likewise.
+ 	* config/rs6000/rs6000.c
+ 	(rs6000_darwin64_record_arg_advance_flush): Likewise.
+ 	(rs6000_darwin64_record_arg_flush): Likewise.
+ 	* config/sparc/sparc.c (sparc_function_arg_1): Likewise.
+ 	(sparc_function_value_1): Likewise.
+ 	* config/spu/spu.c (adjust_operand): Likewise.
+ 	(spu_emit_branch_or_set): Likewise.
+ 	(arith_immediate_p): Likewise.
+ 	* emit-rtl.c (gen_lowpart_common): Likewise.
+ 	* expr.c (expand_expr_real_1): Likewise.
+ 	* function.c (assign_parm_setup_block): Likewise.
+ 	* gimple-ssa-store-merging.c (encode_tree_to_bitpos): Likewise.
+ 	* reload1.c (alter_reg): Likewise.
+ 	* stor-layout.c (mode_for_vector): Likewise.
+ 	(layout_type): Likewise.
+ 
+ 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* config/spu/spu.c (exp2_immediate_p): Use int_mode_for_mode.
+ 	(spu_convert_move): Likewise.
+ 	* lower-subreg.c (resolve_simple_move): Likewise.
+ 
+ 2017-09-05  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	PR target/81833
+ 	* config/rs6000/altivec.md (altivec_vsum2sws): Convert from a
+ 	define_insn to a define_expand.
+ 	(altivec_vsum2sws_direct): New define_insn.
+ 	(altivec_vsumsws): Convert from a define_insn to a define_expand.
+ 
+ 2017-09-05  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	* config/arm/arm.c (arm_option_params_internal): Improve setting of
+ 	max_insns_skipped.
+ 
+ 2017-09-05  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/59501
+ 	PR target/81624
+ 	PR target/81769
+ 	* config/i386/i386.c (ix86_finalize_stack_frame_flags): Don't
+ 	realign stack if stack alignment needed is less than incoming
+ 	stack boundary.
+ 
+ 2017-09-05  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR sanitizer/82072
+ 	* convert.c (convert_to_integer_1) <case NEGATE_EXPR>: Move the ubsan
+ 	check earlier.
+ 
+ 2017-09-05  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	* explow.c (get_dynamic_stack_size): Improve dynamic alignment.
+ 
+ 2017-09-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/82084
+ 	* fold-const.c (can_native_encode_string_p): Handle wide characters.
+ 
+ 2017-09-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/82102
+ 	* tree-ssa-pre.c (fini_eliminate): Check if lhs is NULL.
+ 
+ 2017-09-05  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR tree-optimization/82032
+ 	* tree-cfg.c (generate_range_test): New function.
+ 	* tree-cfg.h (generate_range_test): Declared here.
+ 	* tree-cfgcleanup.c (convert_single_case_switch): New function.
+ 	(cleanup_control_expr_graph): Use it.
+ 	* tree-switch-conversion.c (try_switch_expansion): Remove
+ 	assert.
+ 	(emit_case_nodes): Use generate_range_test.
+ 
+ 2017-09-04  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/82098
+ 	* config/i386/i386.md (*<btsc><mode>_mask): Add
+ 	TARGET_USE_BT to insn constraint.
+ 	(*btr<mode>_mask): Ditto.
+ 
+ 2017-09-04  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	* config/arm/arm.c (arm_legitimate_index_p): Add comment.
+ 	(thumb2_legitimate_index_p): Use correct range for DI/DF mode.
+ 
+ 2017-09-04  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+ 
+ 	PR target/77308
+ 	* config/arm/arm.md (*arm_adddi3, *arm_subdi3): Split early except for
+ 	TARGET_NEON and TARGET_IWMMXT.
+ 	(anddi3, iordi3, xordi3, one_cmpldi2): Split while expanding except for
+ 	TARGET_NEON and TARGET_IWMMXT.
+ 	(*one_cmpldi2_insn): Moved the body of one_cmpldi2 here.
+ 
+ 2017-09-04  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386-protos.h (ix86_tls_address_pattern_p) New prototype.
+ 	(ix86_rewrite_tls_address): Ditto.
+ 	* config/i386/i386.c (ix86_tls_address_pattern_p) New function.
+ 	(ix86_rewrite_tls_address_1): Ditto.
+ 	(ix86_rewrite_tls_address): Ditto.
+ 	* config/i386/predicates.md (tls_address_pattern): New predicate.
+ 	* config/i386/i386.md (TLS address splitter): New splitter.
+ 
+ 2017-09-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/82084
+ 	* fold-const.h (can_native_encode_string_p): Declare.
+ 	* fold-const.c (can_native_encode_string_p): Factor out from ...
+ 	(native_encode_string): ... here.
+ 	* tree-vect-stmts.c (vectorizable_store): Call it to avoid
+ 	vectorizing stores from constants we later cannot handle.
+ 
+ 2017-09-04  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c/81783
+ 	* doc/invoke.texi: Update -Wtautological-compare documentation.
+ 
+ 2017-09-04  Jeff Law  <law@redhat.com>
+ 
+ 	PR tree-optimization/64910
+ 	* tree-ssa-reassoc.c (reassociate_bb): For bitwise binary ops,
+ 	swap the first and last operand if the last is a constant.
+ 
+ 2017-09-04  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR sanitizer/82072
+ 	* convert.c (do_narrow): When sanitizing signed integer overflows,
+ 	bail out for signed types.
+ 	(convert_to_integer_1) <case NEGATE_EXPR>: Likewise.
+ 
+ 2017-09-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/82060
+ 	* tree-ssa-pre.c (eliminate_dom_walker::before_dom_children):
+ 	Move devirtualization after stmt folding and before EH/AB/noreturn
+ 	cleanup to get the stmt refs canonicalized.  Use a bool instead
+ 	of gimple_modified_p since that doesn't work for NOPs.  Schedule
+ 	NOPs generated by folding for removal.
+ 
+ 2017-09-04  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* coretypes.h (pad_direction): New enum.
+ 	* defaults.h (DEFAULT_FUNCTION_ARG_PADDING): Delete.
+ 	(FUNCTION_ARG_PADDING): Likewise.
+ 	* target.def (function_arg_padding): New hook.
+ 	* targhooks.h (default_function_arg_padding): Declare.
+ 	* targhooks.c (default_function_arg_padding): New function.
+ 	* doc/tm.texi.in (FUNCTION_ARG_PADDING): Replace with...
+ 	(TARGET_FUNCTION_ARG_PADDING): ...this.
+ 	* doc/tm.texi: Regenerate.
+ 	* calls.c (store_unaligned_arguments_into_pseudos): Use pad_direction
+ 	instead of direction.
+ 	(compute_argument_addresses): Likewise.
+ 	(load_register_parameters): Likewise.
+ 	(emit_library_call_value_1): Likewise.
+ 	(store_one_arg): Use targetm.calls.function_arg_padding instead
+ 	of FUNCTION_ARG_PADDING.
+ 	(must_pass_in_stack_var_size_or_pad): Likewise.
+ 	* expr.c (emit_group_load_1): Use pad_direction instead of direction.
+ 	(emit_group_store): Likewise.
+ 	(emit_single_push_insn_1): Use targetm.calls.function_arg_padding
+ 	instead of FUNCTION_ARG_PADDING.
+ 	(emit_push_insn): Likewise, and propagate enum change throughout
+ 	function.
+ 	* function.h (direction): Delete.
+ 	(locate_and_pad_arg_data::where_pad): Use pad_direction instead
+ 	of direction.
+ 	* function.c (assign_parm_find_stack_rtl): Likewise.
+ 	(assign_parm_setup_block_p): Likewise.
+ 	(assign_parm_setup_block): Likewise.
+ 	(gimplify_parameters): Likewise.
+ 	(locate_and_pad_parm): Use targetm.calls.function_arg_padding
+ 	instead of FUNCTION_ARG_PADDING, and propagate enum change throughout
+ 	function.
+ 	* config/aarch64/aarch64.h (FUNCTION_ARG_PADDING): Delete.
+ 	(BLOCK_REG_PADDING): Use pad_direction instead of direction.
+ 	* config/aarch64/aarch64-protos.h (aarch64_pad_arg_upward): Delete.
+ 	* config/aarch64/aarch64.c (aarch64_pad_arg_upward): Replace with...
+ 	(aarch64_function_arg_padding): ...this new function.
+ 	(aarch64_gimplify_va_arg_expr): Use pad_direction instead of direction.
+ 	(TARGET_FUNCTION_ARG_PADDING): Redefine.
+ 	* config/arm/arm.h (FUNCTION_ARG_PADDING): Delete.
+ 	(BLOCK_REG_PADDING): Use pad_direction instead of direction.
+ 	* config/arm/arm-protos.h (arm_pad_arg_upward): Delete.
+ 	* config/arm/arm.c (TARGET_FUNCTION_ARG_PADDING): Redefine.
+ 	(arm_pad_arg_upward): Replace with...
+ 	(arm_function_arg_padding): ...this new function.
+ 	* config/c6x/c6x.h (BLOCK_REG_PADDING): Use pad_direction instead
+ 	of direction.
+ 	* config/ia64/hpux.h (FUNCTION_ARG_PADDING): Delete.
+ 	* config/ia64/ia64-protos.h (ia64_hpux_function_arg_padding): Delete.
+ 	* config/ia64/ia64.c (TARGET_FUNCTION_ARG_PADDING): Redefine.
+ 	(ia64_hpux_function_arg_padding): Replace with...
+ 	(ia64_function_arg_padding): ...this new function.  Use pad_direction
+ 	instead of direction.  Check for TARGET_HPUX.
+ 	* config/iq2000/iq2000.h (FUNCTION_ARG_PADDING): Delete.
+ 	* config/iq2000/iq2000.c (TARGET_FUNCTION_ARG_PADDING): Redefine.
+ 	(iq2000_function_arg_padding): New function.
+ 	* config/mips/mips-protos.h (mips_pad_arg_upward): Delete.
+ 	* config/mips/mips.c (mips_pad_arg_upward): Replace with...
+ 	(mips_function_arg_padding): ...this new function.
+ 	(mips_pad_reg_upward): Update accordingly.
+ 	(TARGET_FUNCTION_ARG_PADDING): Redefine.
+ 	* config/mips/mips.h (PAD_VARARGS_DOWN): Use
+ 	targetm.calls.function_arg_padding.
+ 	(FUNCTION_ARG_PADDING): Delete.
+ 	(BLOCK_REG_PADDING): Use pad_direction instead of direction.
+ 	* config/nios2/nios2.h (FUNCTION_ARG_PADDING): Delete.
+ 	(PAD_VARARGS_DOWN): Use targetm.calls.function_arg_padding.
+ 	* config/nios2/nios2-protos.h (nios2_function_arg_padding): Delete.
+ 	(nios2_block_reg_padding): Return pad_direction instead of direction.
+ 	* config/nios2/nios2.c (nios2_block_reg_padding): Return pad_direction
+ 	instead of direction.
+ 	(nios2_function_arg_padding): Likewise.  Make static.
+ 	(TARGET_FUNCTION_ARG_PADDING): Redefine.
+ 	* config/pa/pa.h (FUNCTION_ARG_PADDING): Delete.
+ 	(BLOCK_REG_PADDING): Use targetm.calls.function_arg_padding.
+ 	* config/pa/pa-protos.h (pa_function_arg_padding): Delete.
+ 	* config/pa/pa.c (TARGET_FUNCTION_ARG_PADDING): Redefine.
+ 	(pa_function_arg_padding): Make static.  Return pad_direction instead
+ 	of direction.
+ 	* config/powerpcspe/powerpcspe.h (FUNCTION_ARG_PADDING): Delete.
+ 	(PAD_VARARGS_DOWN): Use targetm.calls.function_arg_padding.
+ 	* config/powerpcspe/aix.h (BLOCK_REG_PADDING): Use pad_direction
+ 	instead of direction.  Use targetm.calls.function_arg_padding.
+ 	* config/powerpcspe/darwin.h (BLOCK_REG_PADDING): Likewise.
+ 	* config/powerpcspe/freebsd64.h (BLOCK_REG_PADDING): Likewise.
+ 	* config/powerpcspe/linux64.h (BLOCK_REG_PADDING): Likewise.
+ 	* config/powerpcspe/powerpcspe-protos.h (function_arg_padding): Delete.
+ 	* config/powerpcspe/powerpcspe.c (TARGET_FUNCTION_ARG_PADDING):
+ 	Redefine.
+ 	(function_arg_padding): Rename to...
+ 	(rs6000_function_arg_padding): ...this.  Make static.  Return
+ 	pad_direction instead of direction.
+ 	(rs6000_return_in_msb): Use rs6000_function_arg_padding.
+ 	* config/rs6000/rs6000.h (FUNCTION_ARG_PADDING): Delete.
+ 	(PAD_VARARGS_DOWN): Use targetm.calls.function_arg_padding.
+ 	* config/rs6000/aix.h (BLOCK_REG_PADDING): Use pad_direction
+ 	instead of direction.  Use targetm.calls.function_arg_padding.
+ 	* config/rs6000/darwin.h (BLOCK_REG_PADDING): Likewise.
+ 	* config/rs6000/freebsd64.h (BLOCK_REG_PADDING): Likewise.
+ 	* config/rs6000/linux64.h (BLOCK_REG_PADDING): Likewise.
+ 	* config/rs6000/rs6000-protos.h (function_arg_padding): Delete.
+ 	* config/rs6000/rs6000.c (TARGET_FUNCTION_ARG_PADDING): Redefine.
+ 	(function_arg_padding): Rename to...
+ 	(rs6000_function_arg_padding): ...this.  Make static.  Return
+ 	pad_direction instead of direction.
+ 	(rs6000_return_in_msb): Use rs6000_function_arg_padding.
+ 	* config/s390/s390.h (FUNCTION_ARG_PADDING): Delete.
+ 	* config/s390/s390.c (s390_function_arg_padding): New function.
+ 	(TARGET_FUNCTION_ARG_PADDING): Redefine.
+ 	* config/sparc/sparc.h (FUNCTION_ARG_PADDING): Delete.
+ 	* config/sparc/sparc-protos.h (function_arg_padding): Delete.
+ 	* config/sparc/sparc.c (TARGET_FUNCTION_ARG_PADDING): Redefine.
+ 	(function_arg_padding): Rename to...
+ 	(sparc_function_arg_padding): ...this.  Make static.  Return
+ 	pad_direction instead of direction.
+ 	* config/spu/spu.h (FUNCTION_ARG_PADDING): Delete.
+ 	* config/spu/spu.c (spu_function_arg_padding): New function.
+ 	(TARGET_FUNCTION_ARG_PADDING): Redefine.
+ 	* system.h (FUNCTION_ARG_PADDING): Poison.
+ 
+ 2017-09-04  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* target.def (modes_tieable_p): New hook.
+ 	* doc/tm.texi (MODES_TIEABLE_P): Replace with...
+ 	(TARGET_MODES_TIEABLE_P): ...this.
+ 	* doc/tm.texi.in: Regenerate.
+ 	* hooks.h (hook_bool_mode_mode_true): Declare.
+ 	* hooks.c (hook_bool_mode_mode_true): New function.
+ 	* combine.c (subst): Use targetm.modes_tieable_p instead of
+ 	MODES_TIEABLE_P.
+ 	* dse.c (find_shift_sequence): Likewise.
+ 	* expmed.c (extract_low_bits): Likewise.
+ 	* lower-subreg.c: Include target.h.
+ 	(find_decomposable_subregs): Use targetm.modes_tieable_p instead of
+ 	MODES_TIEABLE_P.
+ 	* rtlanal.c (rtx_cost): Likewise.
+ 	* config/aarch64/aarch64.h (MODES_TIEABLE_P): Delete.
+ 	* config/aarch64/aarch64-protos.h (aarch64_modes_tieable_p): Delete.
+ 	* config/aarch64/aarch64.c (aarch64_modes_tieable_p): Make static.
+ 	(TARGET_MODES_TIEABLE_P): Redefine.
+ 	* config/alpha/alpha.h (MODES_TIEABLE_P): Delete.
+ 	* config/alpha/alpha.c (alpha_modes_tieable_p): New function.
+ 	(TARGET_MODES_TIEABLE_P): Redefine.
+ 	* config/arc/arc.h (MODES_TIEABLE_P): Delete.
+ 	* config/arc/arc.c (TARGET_MODES_TIEABLE_P): Redefine.
+ 	(arc_modes_tieable_p): New function.
+ 	* config/arm/arm.h (MODES_TIEABLE_P): Delete.
+ 	* config/arm/arm-protos.h (arm_modes_tieable_p): Delete.
+ 	* config/arm/arm.c (TARGET_MODES_TIEABLE_P): Redefine.
+ 	(arm_modes_tieable_p): Make static.
+ 	* config/avr/avr.h (MODES_TIEABLE_P): Delete.
+ 	* config/bfin/bfin.h (MODES_TIEABLE_P): Delete.
+ 	* config/bfin/bfin.c (bfin_modes_tieable_p): New function.
+ 	(TARGET_MODES_TIEABLE_P): Redefine.
+ 	* config/c6x/c6x.h (MODES_TIEABLE_P): Delete.
+ 	* config/c6x/c6x.c (c6x_modes_tieable_p): New function.
+ 	(TARGET_MODES_TIEABLE_P): Redefine.
+ 	* config/cr16/cr16.h (MODES_TIEABLE_P): Delete.
+ 	* config/cr16/cr16.c (TARGET_MODES_TIEABLE_P): Redefine.
+ 	(cr16_modes_tieable_p): New function.
+ 	* config/cris/cris.h (MODES_TIEABLE_P): Delete.
+ 	* config/epiphany/epiphany.h (MODES_TIEABLE_P): Delete.
+ 	* config/fr30/fr30.h (MODES_TIEABLE_P): Delete.
+ 	(TRULY_NOOP_TRUNCATION): Update comment.
+ 	* config/frv/frv.h (MODES_TIEABLE_P): Delete.
+ 	(TRULY_NOOP_TRUNCATION): Update comment.
+ 	* config/frv/frv.c (TARGET_MODES_TIEABLE_P): Redefine.
+ 	(frv_modes_tieable_p): New function.
+ 	* config/ft32/ft32.h (MODES_TIEABLE_P): Delete.
+ 	* config/h8300/h8300.h (MODES_TIEABLE_P): Delete.
+ 	* config/h8300/h8300.c (h8300_modes_tieable_p): New function.
+ 	(TARGET_MODES_TIEABLE_P): Redefine.
+ 	* config/i386/i386.h (MODES_TIEABLE_P): Delete.
+ 	* config/i386/i386-protos.h (ix86_modes_tieable_p): Delete.
+ 	* config/i386/i386.c (ix86_modes_tieable_p): Make static.
+ 	(TARGET_MODES_TIEABLE_P): Redefine.
+ 	* config/ia64/ia64.h (MODES_TIEABLE_P): Delete.
+ 	* config/ia64/ia64.c (TARGET_MODES_TIEABLE_P): Redefine.
+ 	(ia64_modes_tieable_p): New function.
+ 	* config/iq2000/iq2000.h (MODES_TIEABLE_P): Delete.
+ 	* config/iq2000/iq2000.c (TARGET_MODES_TIEABLE_P): Redefine.
+ 	(iq2000_modes_tieable_p): New function.
+ 	* config/lm32/lm32.h (MODES_TIEABLE_P): Delete.
+ 	* config/lm32/lm32.c (TARGET_MODES_TIEABLE_P): Redefine.
+ 	(lm32_modes_tieable_p): New function.
+ 	* config/m32c/m32c.h (MODES_TIEABLE_P): Delete.
+ 	* config/m32c/m32c-protos.h (m32c_modes_tieable_p): Delete.
+ 	* config/m32c/m32c.c (m32c_modes_tieable_p): Make static.
+ 	(TARGET_MODES_TIEABLE_P): Redefine.
+ 	* config/m32r/m32r.h (MODES_TIEABLE_P): Delete.
+ 	* config/m32r/m32r.c (TARGET_MODES_TIEABLE_P): Redefine.
+ 	(m32r_modes_tieable_p): New function.
+ 	* config/m68k/m68k.h (MODES_TIEABLE_P): Delete.
+ 	* config/m68k/m68k.c (TARGET_MODES_TIEABLE_P): Redefine.
+ 	(m68k_modes_tieable_p): New function.
+ 	* config/mcore/mcore.h (MODES_TIEABLE_P): Delete.
+ 	* config/mcore/mcore.c (TARGET_MODES_TIEABLE_P): Redefine.
+ 	(mcore_modes_tieable_p): New function.
+ 	* config/microblaze/microblaze.h (MODES_TIEABLE_P): Delete.
+ 	* config/microblaze/microblaze.c (microblaze_modes_tieable_p): New
+ 	function.
+ 	(TARGET_MODES_TIEABLE_P): Redefine.
+ 	* config/mips/mips.h (MODES_TIEABLE_P): Delete.
+ 	* config/mips/mips-protos.h (mips_modes_tieable_p): Delete.
+ 	* config/mips/mips.c (mips_modes_tieable_p): Make static.
+ 	(TARGET_MODES_TIEABLE_P): Redefine.
+ 	* config/mmix/mmix.h (MODES_TIEABLE_P): Delete.
+ 	* config/mn10300/mn10300.h (MODES_TIEABLE_P): Delete.
+ 	* config/mn10300/mn10300-protos.h (mn10300_modes_tieable): Delete.
+ 	* config/mn10300/mn10300.c (mn10300_modes_tieable): Rename to...
+ 	(mn10300_modes_tieable_p): ...this and make static.
+ 	(TARGET_MODES_TIEABLE_P): Redefine.
+ 	* config/moxie/moxie.h (MODES_TIEABLE_P): Delete.
+ 	* config/msp430/msp430.h (MODES_TIEABLE_P): Delete.
+ 	* config/msp430/msp430-protos.h (msp430_modes_tieable_p): Delete.
+ 	* config/msp430/msp430.c (TARGET_MODES_TIEABLE_P): Redefine.
+ 	(msp430_modes_tieable_p): Make static.
+ 	* config/nds32/nds32.h (MODES_TIEABLE_P): Delete.
+ 	* config/nds32/nds32.c (nds32_modes_tieable_p): New function.
+ 	(TARGET_MODES_TIEABLE_P): Redefine.
+ 	* config/nios2/nios2.h (MODES_TIEABLE_P): Delete.
+ 	* config/nvptx/nvptx.h (MODES_TIEABLE_P): Delete.
+ 	* config/nvptx/nvptx.c (nvptx_modes_tieable_p): New function.
+ 	(TARGET_MODES_TIEABLE_P): Redefine.
+ 	* config/pa/pa.h (MODES_TIEABLE_P): Delete.
+ 	* config/pa/pa-protos.h (pa_modes_tieable_p): Delete.
+ 	* config/pa/pa.c (pa_modes_tieable_p): Make static.
+ 	(TARGET_MODES_TIEABLE_P): Redefine.
+ 	* config/pdp11/pdp11.h (MODES_TIEABLE_P): Delete.
+ 	* config/pdp11/pdp11.c (TARGET_MODES_TIEABLE_P): Redefine.
+ 	(pdp11_modes_tieable_p): New function.
+ 	* config/powerpcspe/powerpcspe.h (MODES_TIEABLE_P): Delete.
+ 	* config/powerpcspe/powerpcspe.c (TARGET_MODES_TIEABLE_P): Redefine.
+ 	(rs6000_modes_tieable_p): New function.
+ 	(rs6000_debug_reg_global): Use it instead of MODES_TIEABLE_P.
+ 	* config/powerpcspe/powerpcspe.md: Update comment.
+ 	* config/riscv/riscv.h (MODES_TIEABLE_P): Delete.
+ 	* config/riscv/riscv.c (riscv_modes_tieable_p): New function.
+ 	(TARGET_MODES_TIEABLE_P): Redefine.
+ 	* config/rl78/rl78.h (MODES_TIEABLE_P): Delete.
+ 	* config/rl78/rl78.c (TARGET_MODES_TIEABLE_P): Redefine.
+ 	(rl78_modes_tieable_p): New function.
+ 	* config/rs6000/rs6000.h (MODES_TIEABLE_P): Delete.
+ 	* config/rs6000/rs6000.c (TARGET_MODES_TIEABLE_P): Redefine.
+ 	(rs6000_modes_tieable_p): New function.
+ 	(rs6000_debug_reg_global): Use it instead of MODES_TIEABLE_P.
+ 	* config/rs6000/rs6000.md: Update comment.
+ 	* config/rx/rx.h (MODES_TIEABLE_P): Delete.
+ 	* config/rx/rx.c (rx_modes_tieable_p): New function.
+ 	(TARGET_MODES_TIEABLE_P): Redefine.
+ 	* config/s390/s390.h (MODES_TIEABLE_P): Delete.
+ 	* config/s390/s390.c (s390_modes_tieable_p): New function.
+ 	(TARGET_MODES_TIEABLE_P): Redefine.
+ 	* config/sh/sh.h (MODES_TIEABLE_P): Delete.
+ 	* config/sh/sh.c (TARGET_MODES_TIEABLE_P): Redefine.
+ 	(sh_modes_tieable_p): New function.
+ 	* config/sparc/sparc.h (MODES_TIEABLE_P): Delete.
+ 	* config/sparc/sparc-protos.h (sparc_modes_tieable_p): Delete.
+ 	* config/sparc/sparc.c (TARGET_MODES_TIEABLE_P): Redefine.
+ 	(sparc_modes_tieable_p): Make static.
+ 	* config/spu/spu.h (MODES_TIEABLE_P): Delete.
+ 	* config/spu/spu.c (spu_modes_tieable_p): New function.
+ 	(TARGET_MODES_TIEABLE_P): Redefine.
+ 	* config/stormy16/stormy16.h (MODES_TIEABLE_P): Delete.
+ 	* config/stormy16/stormy16.c (xstormy16_modes_tieable_p): New function.
+ 	(TARGET_MODES_TIEABLE_P): Redefine.
+ 	* config/tilegx/tilegx.h (MODES_TIEABLE_P): Delete.
+ 	* config/tilepro/tilepro.h (MODES_TIEABLE_P): Delete.
+ 	* config/v850/v850.h (MODES_TIEABLE_P): Delete.
+ 	* config/v850/v850.c (v850_modes_tieable_p): New function.
+ 	(TARGET_MODES_TIEABLE_P): Redefine.
+ 	* config/vax/vax.h (MODES_TIEABLE_P): Delete.
+ 	* config/visium/visium.h (MODES_TIEABLE_P): Delete.
+ 	* config/visium/visium.c (TARGET_MODES_TIEABLE_P): Redefine.
+ 	(visium_modes_tieable_p): New function.
+ 	* config/xtensa/xtensa.h (MODES_TIEABLE_P): Delete.
+ 	* config/xtensa/xtensa.c (TARGET_MODES_TIEABLE_P): Redefine.
+ 	(xtensa_modes_tieable_p): New function.
+ 	* system.h (MODES_TIEABLE_P): Poison.
+ 
+ 2017-09-04  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* target.def (hard_regno_mode_ok): New hook.
+ 	* doc/tm.texi (HARD_REGNO_MODE_OK): Replace with...
+ 	(TARGET_HARD_REGNO_MODE_OK): ...this.
+ 	* doc/tm.texi.in: Regenerate.
+ 	* hooks.h (hook_bool_uint_mode_true): Declare.
+ 	* hooks.c (hook_bool_uint_mode_true): New function.
+ 	* doc/md.texi: Refer to targetm.hard_regno_mode_ok instead of
+ 	HARD_REGNO_MODE_OK.
+ 	* genpreds.c (write_insn_preds_c): Add an include of target.h.
+ 	* alias.c (init_alias_target): Use targetm.hard_regno_mode_ok
+ 	instead of HARD_REGNO_MODE_OK.
+ 	* caller-save.c: Include target.h.
+ 	(reg_save_code): Use targetm.hard_regno_mode_ok instead of
+ 	HARD_REGNO_MODE_OK.
+ 	* combine.c (can_combine_p): Likewise.
+ 	(combinable_i3pat): Likewise.
+ 	(can_change_dest_mode): Likewise.
+ 	* expr.c (init_expr_target): Likewise.
+ 	(convert_move): Likewise.
+ 	(convert_modes): Likewise.
+ 	* ira.c (setup_prohibited_class_mode_regs): Likewise.
+ 	(setup_prohibited_mode_move_regs): Likewise.
+ 	* ira.h (target_ira): Likewise.
+ 	* lra-assigns.c (find_hard_regno_for_1): Likewise.
+ 	* lra-constraints.c (process_alt_operands): Likewise.
+ 	(split_reg): Likewise.
+ 	* recog.c (peep2_find_free_register): Likewise.
+ 	* ree.c (combine_reaching_defs): Likewise.
+ 	* regcprop.c (maybe_mode_change): Likewise.
+ 	* reginfo.c (init_reg_sets_1): Likewise.
+ 	(choose_hard_reg_mode): Likewise.
+ 	(simplifiable_subregs): Likewise.
+ 	* regrename.c (check_new_reg_p): Likewise.
+ 	* reload.c (find_valid_class): Likewise.
+ 	(find_valid_class_1): Likewise.
+ 	(reload_inner_reg_of_subreg): Likewise.
+ 	(push_reload): Likewise.
+ 	(combine_reloads): Likewise.
+ 	(find_dummy_reload): Likewise.
+ 	(find_reloads): Likewise.
+ 	* reload1.c (find_reg): Likewise.
+ 	(set_reload_reg): Likewise.
+ 	(allocate_reload_reg): Likewise.
+ 	(choose_reload_regs): Likewise.
+ 	(reload_adjust_reg_for_temp): Likewise.
+ 	* rtlanal.c (subreg_size_offset_from_lsb): Likewise.
+ 	(simplify_subreg_regno): Likewise.
+ 	* sel-sched.c (init_regs_for_mode): Likewise.
+ 	* varasm.c (make_decl_rtl): Likewise.
+ 	* config/aarch64/aarch64.h (HARD_REGNO_MODE_OK): Delete.
+ 	(MODES_TIEABLE_P): Use targetm.hard_regno_mode_ok instead of
+ 	HARD_REGNO_MODE_OK.
+ 	* config/aarch64/aarch64-protos.h (aarch64_hard_regno_mode_ok): Delete.
+ 	* config/aarch64/aarch64.c (aarch64_hard_regno_mode_ok): Make static.
+ 	(TARGET_HARD_REGNO_MODE_OK): Redefine.
+ 	* config/alpha/alpha.h (HARD_REGNO_MODE_OK): Delete.
+ 	* config/alpha/alpha.c (alpha_hard_regno_mode_ok): New function.
+ 	(TARGET_HARD_REGNO_MODE_OK): Redefine.
+ 	* config/arc/arc.h (arc_hard_regno_mode_ok): Delete.
+ 	(arc_mode_class): Delete.
+ 	(HARD_REGNO_MODE_OK): Delete.
+ 	* config/arc/arc.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
+ 	(arc_hard_regno_mode_ok): Rename old array to...
+ 	(arc_hard_regno_mode_ok_modes): ...this.
+ 	(arc_conditional_register_usage): Update accordingly.
+ 	(arc_mode_class): Make static.
+ 	(arc_hard_regno_mode_ok): New function.
+ 	* config/arm/arm.h (HARD_REGNO_MODE_OK): Delete.
+ 	* config/arm/arm-protos.h (arm_hard_regno_mode_ok): Delete.
+ 	* config/arm/arm.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
+ 	(arm_hard_regno_mode_ok): Make static.
+ 	* config/arm/arm.md (movdi): Use targetm.hard_regno_mode_ok instead of
+ 	HARD_REGNO_MODE_OK.
+ 	* config/avr/avr-protos.h (avr_hard_regno_mode_ok): Delete.
+ 	* config/avr/avr.h (HARD_REGNO_MODE_OK): Delete.
+ 	* config/avr/avr.c (avr_hard_regno_mode_ok): Make static and
+ 	return a bool.
+ 	(TARGET_HARD_REGNO_MODE_OK): Redefine.
+ 	* config/bfin/bfin-protos.h (hard_regno_mode_ok): Delete.
+ 	* config/bfin/bfin.h (HARD_REGNO_MODE_OK): Delete.
+ 	* config/bfin/bfin.c (hard_regno_mode_ok): Rename to...
+ 	(bfin_hard_regno_mode_ok): ...this.  Make static and return a bool.
+ 	(TARGET_HARD_REGNO_MODE_OK): Redefine.
+ 	* config/bfin/predicates.md (valid_reg_operand): Use
+ 	targetm.hard_regno_mode_ok instead of HARD_REGNO_MODE_OK.
+ 	* config/c6x/c6x.h (HARD_REGNO_MODE_OK): Delete.
+ 	* config/c6x/c6x.c (c6x_hard_regno_mode_ok): New function.
+ 	(TARGET_HARD_REGNO_MODE_OK): Redefine.
+ 	* config/cr16/cr16.h (HARD_REGNO_MODE_OK): Delete.
+ 	* config/cr16/cr16-protos.h (cr16_hard_regno_mode_ok): Delete.
+ 	* config/cr16/cr16.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
+ 	(cr16_hard_regno_mode_ok): Make static and return a bool.
+ 	* config/cris/cris.h (HARD_REGNO_MODE_OK): Delete.
+ 	* config/cris/cris.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
+ 	(cris_hard_regno_mode_ok): New function.
+ 	* config/epiphany/epiphany.h (epiphany_hard_regno_mode_ok): Delete.
+ 	(epiphany_mode_class): Delete.
+ 	(HARD_REGNO_MODE_OK): Delete.
+ 	* config/epiphany/epiphany-protos.h (hard_regno_mode_ok): Delete.
+ 	* config/epiphany/epiphany.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
+ 	(hard_regno_mode_ok): Rename to...
+ 	(epiphany_hard_regno_mode_ok): ...this.  Make static and return a bool.
+ 	* config/fr30/fr30.h (HARD_REGNO_MODE_OK): Delete.
+ 	* config/fr30/fr30.md: Refer to targetm.hard_regno_mode_ok instead of
+ 	HARD_REGNO_MODE_OK.
+ 	* config/frv/frv.h (HARD_REGNO_MODE_OK): Delete.
+ 	* config/frv/frv-protos.h (frv_hard_regno_mode_ok): Delete.
+ 	* config/frv/frv.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
+ 	(frv_hard_regno_mode_ok): Make static and return a bool.
+ 	* config/frv/frv.md: Refer to targetm.hard_regno_mode_ok instead of
+ 	HARD_REGNO_MODE_OK.
+ 	* config/ft32/ft32.h (HARD_REGNO_MODE_OK): Delete.
+ 	* config/h8300/h8300.h (HARD_REGNO_MODE_OK): Delete.
+ 	* config/h8300/h8300-protos.h (h8300_hard_regno_mode_ok): Delete.
+ 	* config/h8300/h8300.c (h8300_hard_regno_mode_ok): Make static
+ 	and return a bool.
+ 	(TARGET_HARD_REGNO_MODE_OK): Redefine.
+ 	* config/i386/i386.h (HARD_REGNO_MODE_OK): Delete.
+ 	* config/i386/i386-protos.h (ix86_hard_regno_mode_ok): Delete.
+ 	* config/i386/i386.c (ix86_hard_regno_mode_ok): Make static and
+ 	return a bool.
+ 	(TARGET_HARD_REGNO_MODE_OK): Redefine.
+ 	* config/ia64/ia64.h (HARD_REGNO_MODE_OK): Delete.
+ 	* config/ia64/ia64.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
+ 	(ia64_hard_regno_mode_ok): New function.
+ 	* config/iq2000/iq2000.h (HARD_REGNO_MODE_OK): Delete.
+ 	* config/iq2000/iq2000.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
+ 	(iq2000_hard_regno_mode_ok): New function.
+ 	* config/lm32/lm32.h (HARD_REGNO_MODE_OK): Delete.
+ 	* config/lm32/lm32.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
+ 	(lm32_hard_regno_mode_ok): New function.
+ 	* config/m32c/m32c.h (HARD_REGNO_MODE_OK): Delete.
+ 	* config/m32c/m32c-protos.h (m32c_hard_regno_ok): Delete.
+ 	* config/m32c/m32c.c (class_can_hold_mode): Use m32c_hard_regno_mode_ok
+ 	instead of HARD_REGNO_MODE_OK.
+ 	(m32c_hard_regno_ok): Rename to...
+ 	(m32c_hard_regno_mode_ok): ...this.  Make static and return a bool.
+ 	(m32c_cannot_change_mode_class): Update accordingly.
+ 	(TARGET_HARD_REGNO_MODE_OK): Redefine.
+ 	* config/m32r/m32r.h (m32r_hard_regno_mode_ok): Delete.
+ 	(m32r_mode_class): Delete.
+ 	(HARD_REGNO_MODE_OK): Delete.
+ 	* config/m32r/m32r.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
+ 	(m32r_hard_regno_mode_ok): Rename to...
+ 	(m32r_hard_regno_modes): ...this.
+ 	(m32r_mode_class): Make static.
+ 	(m32r_hard_regno_mode_ok): New function.
+ 	* config/m68k/m68k.h (HARD_REGNO_MODE_OK): Delete.
+ 	* config/m68k/m68k-protos.h (m68k_regno_mode_ok): Delete.
+ 	* config/m68k/m68k.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
+ 	(m68k_hard_regno_mode_ok): Make static.
+ 	* config/mcore/mcore.h (HARD_REGNO_MODE_OK): Delete.
+ 	* config/mcore/mcore.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
+ 	(mcore_hard_regno_mode_ok): New function.
+ 	* config/microblaze/microblaze.h (microblaze_hard_regno_mode_ok)
+ 	(HARD_REGNO_MODE_OK): Delete.
+ 	* config/microblaze/microblaze.c (microblaze_hard_regno_mode_ok):
+ 	Rename to...
+ 	(microblaze_hard_regno_mode_ok_p): ...this and make static.
+ 	(microblaze_hard_regno_mode_ok): New function.
+ 	(TARGET_HARD_REGNO_MODE_OK): Redefine.
+ 	* config/mips/mips.h (HARD_REGNO_MODE_OK): Delete.
+ 	(mips_hard_regno_mode_ok): Delete.
+ 	* config/mips/mips.c (mips_hard_regno_mode_ok): Rename to...
+ 	(mips_hard_regno_mode_ok_p): ...this and make static.
+ 	(mips_hard_regno_mode_ok_p): Rename to...
+ 	(mips_hard_regno_mode_ok_uncached): ...this.
+ 	(mips_hard_regno_mode_ok): New function.
+ 	(mips_class_max_nregs): Use mips_hard_regno_mode_ok instead
+ 	of HARD_REGNO_MODE_OK.
+ 	(mips_option_override): Update after above name changes.
+ 	(TARGET_HARD_REGNO_MODE_OK): Redefine.
+ 	* config/mmix/mmix.h (HARD_REGNO_MODE_OK): Delete.
+ 	* config/mn10300/mn10300.h (HARD_REGNO_MODE_OK): Delete.
+ 	* config/mn10300/mn10300-protos.h (mn10300_hard_regno_mode_ok): Delete.
+ 	* config/mn10300/mn10300.c (mn10300_hard_regno_mode_ok): Make static.
+ 	(TARGET_HARD_REGNO_MODE_OK): Redefine.
+ 	* config/moxie/moxie.h (HARD_REGNO_MODE_OK): Delete.
+ 	* config/msp430/msp430.h (HARD_REGNO_MODE_OK): Delete.
+ 	* config/msp430/msp430-protos.h (msp430_hard_regno_mode_ok): Delete.
+ 	* config/msp430/msp430.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
+ 	(msp430_hard_regno_mode_ok): Make static and return a bool.
+ 	* config/nds32/nds32.h (HARD_REGNO_MODE_OK): Delete.
+ 	* config/nds32/nds32-protos.h (nds32_hard_regno_mode_ok): Delete.
+ 	* config/nds32/nds32.c (nds32_hard_regno_mode_ok): Make static
+ 	and return a bool.
+ 	(TARGET_HARD_REGNO_MODE_OK): Redefine.
+ 	* config/nios2/nios2.h (HARD_REGNO_MODE_OK): Delete.
+ 	* config/nvptx/nvptx.h (HARD_REGNO_MODE_OK): Delete.
+ 	* config/pa/pa.h (MODES_TIEABLE_P): Update commentary.
+ 	* config/pa/pa32-regs.h (HARD_REGNO_MODE_OK): Rename to...
+ 	(PA_HARD_REGNO_MODE_OK): ...this
+ 	* config/pa/pa64-regs.h (HARD_REGNO_MODE_OK): Rename to...
+ 	(PA_HARD_REGNO_MODE_OK): ...this.
+ 	* config/pa/pa.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
+ 	(pa_hard_regno_mode_ok): New function.
+ 	* config/pdp11/pdp11.h (HARD_REGNO_MODE_OK): Delete.
+ 	* config/pdp11/pdp11.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
+ 	(pdp11_hard_regno_mode_ok): New function.
+ 	* config/powerpcspe/powerpcspe.h (HARD_REGNO_MODE_OK): Delete.
+ 	* config/powerpcspe/powerpcspe-protos.h (rs6000_hard_regno_mode_ok_p):
+ 	Delete.
+ 	* config/powerpcspe/powerpcspe.c (rs6000_hard_regno_mode_ok_p):
+ 	Make static.
+ 	(TARGET_HARD_REGNO_MODE_OK): Redefine.
+ 	(rs6000_hard_regno_mode_ok): Rename to...
+ 	(rs6000_hard_regno_mode_ok_uncached): ...this.
+ 	(rs6000_init_hard_regno_mode_ok): Update accordingly.
+ 	(rs6000_hard_regno_mode_ok): New function.
+ 	* config/riscv/riscv.h (HARD_REGNO_MODE_OK): Delete.
+ 	* config/riscv/riscv-protos.h (riscv_hard_regno_mode_ok_p): Delete.
+ 	* config/riscv/riscv.c (riscv_hard_regno_mode_ok_p): Rename to...
+ 	(riscv_hard_regno_mode_ok): ...this and make static.
+ 	(TARGET_HARD_REGNO_MODE_OK): Redefine.
+ 	* config/rl78/rl78.h (HARD_REGNO_MODE_OK): Delete.
+ 	* config/rl78/rl78-protos.h (rl78_hard_regno_mode_ok): Delete.
+ 	* config/rl78/rl78.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
+ 	(rl78_hard_regno_mode_ok): Make static and return bool.
+ 	* config/rs6000/rs6000.h (HARD_REGNO_MODE_OK): Delete.
+ 	* config/rs6000/rs6000-protos.h (rs6000_hard_regno_mode_ok_p):
+ 	Delete.
+ 	* config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok_p): Make static.
+ 	(TARGET_HARD_REGNO_MODE_OK): Redefine.
+ 	(rs6000_hard_regno_mode_ok): Rename to...
+ 	(rs6000_hard_regno_mode_ok_uncached): ...this.
+ 	(rs6000_init_hard_regno_mode_ok): Update accordingly.
+ 	(rs6000_hard_regno_mode_ok): New function.
+ 	* config/rx/rx.h (HARD_REGNO_MODE_OK): Delete.
+ 	* config/rx/rx.c (rx_hard_regno_mode_ok): New function.
+ 	(TARGET_HARD_REGNO_MODE_OK): Redefine.
+ 	* config/s390/s390.h (HARD_REGNO_MODE_OK): Delete.
+ 	* config/s390/s390-protos.h (s390_hard_regno_mode_ok): Delete.
+ 	* config/s390/s390.c (s390_hard_regno_mode_ok): Make static.
+ 	(TARGET_HARD_REGNO_MODE_OK): Redefine.
+ 	* config/sh/sh.h (HARD_REGNO_MODE_OK): Delete.
+ 	* config/sh/sh-protos.h (sh_hard_regno_mode_ok): Delete.
+ 	* config/sh/sh.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
+ 	(sh_hard_regno_mode_ok): Make static.
+ 	* config/sparc/constraints.md: Refer to targetm.hard_regno_mode_ok
+ 	instead of HARD_REGNO_MODE_OK.
+ 	* config/sparc/sparc.h (hard_regno_mode_classes): Delete.
+ 	(sparc_mode_class): Delete.
+ 	(HARD_REGNO_MODE_OK): Delete.
+ 	* config/sparc/sparc.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
+ 	(hard_regno_mode_classes): Make static.
+ 	(sparc_mode_class): Likewise.
+ 	(sparc_hard_regno_mode_ok): New function.
+ 	* config/spu/spu.h (HARD_REGNO_MODE_OK): Delete.
+ 	* config/stormy16/stormy16.h (HARD_REGNO_MODE_OK): Delete.
+ 	* config/stormy16/stormy16.c (xstormy16_hard_regno_mode_ok): New
+ 	function.
+ 	(TARGET_HARD_REGNO_MODE_OK): Redefine.
+ 	* config/tilegx/tilegx.h (HARD_REGNO_MODE_OK): Delete.
+ 	* config/tilepro/tilepro.h (HARD_REGNO_MODE_OK): Delete.
+ 	* config/v850/v850.h (HARD_REGNO_MODE_OK): Delete.
+ 	* config/v850/v850.c (v850_hard_regno_mode_ok): New function.
+ 	(TARGET_HARD_REGNO_MODE_OK): Redefine.
+ 	* config/vax/vax.h (HARD_REGNO_MODE_OK): Delete.
+ 	* config/visium/visium.h (HARD_REGNO_MODE_OK): Delete.
+ 	* config/visium/visium.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
+ 	(visium_hard_regno_mode_ok): New function.
+ 	* config/visium/visium.md: Refer to targetm.hard_regno_mode_ok
+ 	instead of HARD_REGNO_MODE_OK.
+ 	* config/xtensa/xtensa.h (xtensa_hard_regno_mode_ok): Delete.
+ 	(HARD_REGNO_MODE_OK): Delete.
+ 	* config/xtensa/xtensa.c (xtensa_hard_regno_mode_ok): Rename to...
+ 	(xtensa_hard_regno_mode_ok_p): ...this and make static.
+ 	(xtensa_option_override): Update accordingly.
+ 	(TARGET_HARD_REGNO_MODE_OK): Redefine.
+ 	(xtensa_hard_regno_mode_ok): New function.
+ 	* system.h (HARD_REGNO_MODE_OK): Poison.
+ 
+ 2017-09-04  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* target.def (hard_regno_call_part_clobbered): New hook.
+ 	* doc/tm.texi.in (HARD_REGNO_CALL_PART_CLOBBERED): Replace with...
+ 	(TARGET_HARD_REGNO_CALL_PART_CLOBBERED): ...this hook.
+ 	* doc/tm.texi: Regenerate.
+ 	* hooks.h (hook_bool_uint_mode_false): Declare.
+ 	* hooks.c (hook_bool_uint_mode_false): New function.
+ 	* regs.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete.
+ 	* cselib.c (cselib_process_insn): Use
+ 	targetm.hard_regno_call_part_clobbered instead of
+ 	HARD_REGNO_CALL_PART_CLOBBERED.
+ 	* ira-conflicts.c (ira_build_conflicts): Likewise.
+ 	* ira-costs.c (ira_tune_allocno_costs): Likewise.
+ 	* lra-constraints.c (need_for_call_save_p): Likewise.
+ 	* lra-lives.c: Include target.h.
+ 	(check_pseudos_live_through_calls): Use
+ 	targetm.hard_regno_call_part_clobbered instead of
+ 	HARD_REGNO_CALL_PART_CLOBBERED.
+ 	* regcprop.c: Include target.h.
+ 	(copyprop_hardreg_forward_1): Use
+ 	targetm.hard_regno_call_part_clobbered instead of
+ 	HARD_REGNO_CALL_PART_CLOBBERED.
+ 	* reginfo.c (choose_hard_reg_mode): Likewise.
+ 	* regrename.c (check_new_reg_p): Likewise.
+ 	* reload.c (find_equiv_reg): Likewise.
+ 	* reload1.c (emit_reload_insns): Likewise.
+ 	* sched-deps.c (deps_analyze_insn): Likewise.
+ 	* sel-sched.c (init_regs_for_mode): Likewise.
+ 	(mark_unavailable_hard_regs): Likewise.
+ 	* targhooks.c (default_dwarf_frame_reg_mode): Likewise.
+ 	* config/aarch64/aarch64.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete.
+ 	* config/aarch64/aarch64.c (aarch64_hard_regno_call_part_clobbered):
+ 	New function.
+ 	(TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine.
+ 	* config/avr/avr.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete.
+ 	* config/avr/avr-protos.h (avr_hard_regno_call_part_clobbered):
+ 	Delete.
+ 	* config/avr/avr.c (avr_hard_regno_call_part_clobbered): Make static
+ 	and return a bool.
+ 	(TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine.
+ 	* config/i386/i386.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete.
+ 	* config/i386/i386.c (ix86_hard_regno_call_part_clobbered): New
+ 	function.
+ 	(TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine.
+ 	* config/mips/mips.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete.
+ 	* config/mips/mips.c (mips_hard_regno_call_part_clobbered): New
+ 	function.
+ 	(TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine.
+ 	* config/powerpcspe/powerpcspe.h (HARD_REGNO_CALL_PART_CLOBBERED):
+ 	Delete.
+ 	* config/powerpcspe/powerpcspe.c
+ 	(rs6000_hard_regno_call_part_clobbered): New function.
+ 	(TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine.
+ 	* config/rs6000/rs6000.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete.
+ 	* config/rs6000/rs6000.c (rs6000_hard_regno_call_part_clobbered):
+ 	New function.
+ 	(TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine.
+ 	* config/s390/s390.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete.
+ 	* config/s390/s390.c (s390_hard_regno_call_part_clobbered): New
+ 	function.
+ 	(TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine.
+ 	* config/sh/sh.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete.
+ 	* system.h (HARD_REGNO_CALL_PART_CLOBBERED): Poison.
+ 
+ 2017-09-04  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* rtl.h (subreg_memory_offset): Declare.
+ 	* emit-rtl.c (subreg_memory_offset): New function.
+ 	* expmed.c (store_bit_field_1): Use it.
+ 	* expr.c (undefined_operand_subword_p): Likewise.
+ 	* simplify-rtx.c (simplify_subreg): Likewise.
+ 
+ 2017-09-04  Alexander Monakov  <amonakov@ispras.ru>
+ 
+ 	PR rtl-optimization/57448
+ 	PR target/67458
+ 	PR target/81316
+ 	* optabs.c (expand_atomic_load): Place compiler memory barriers if
+ 	using atomic_load pattern.
+ 	(expand_atomic_store): Likewise.
+ 
+ 2017-09-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/81981
+ 	* gimple-fold.c (gimple_fold_call): Optimize away useless UBSAN_PTR
+ 	and UBSAN_BOUNDS internal calls.  Clean up IFN_UBSAN_OBJECT_SIZE
+ 	handling.  Use replace_call_with_value with NULL instead of
+ 	gsi_replace, unlink_stmt_vdef and release_defs.
+ 
+ 	* gdbhooks.py (OptMachineModePrinter.to_string): Use 8 spaces
+ 	instead of tab.
+ 
+ 	* lra-remat.c (reg_overlap_for_remat_p): Fix a pasto.
+ 
+ 2017-09-04  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	PR bootstrap/82045
+ 	* rtl.h (emit_library_call_value_1): Declare.
+ 	(emit_library_call): Replace declaration with a series of overloads.
+ 	Remove the parameter count argument.
+ 	(emit_library_call_value): Likewise.
+ 	* calls.c (emit_library_call_value_1): Make global.  Replace varargs
+ 	with an "rtx_mode_t *".
+ 	(emit_library_call_value): Delete.
+ 	(emit_library_call): Likewise.
+ 	* asan.c (asan_emit_stack_protection): Update calls accordingly.
+ 	(asan_emit_allocas_unpoison): Likewise.
+ 	* builtins.c (expand_builtin_powi): Likewise.
+ 	(expand_asan_emit_allocas_unpoison): Likewise.
+ 	* cfgexpand.c (expand_main_function): Likewise.
+ 	* config/aarch64/aarch64.c (aarch64_trampoline_init): Likewise.
+ 	* config/aarch64/aarch64.h (PROFILE_HOOK): Likewise.
+ 	* config/alpha/alpha.c (alpha_trampoline_init): Likewise.
+ 	* config/arm/arm.c (arm_trampoline_init): Likewise.
+ 	(arm_call_tls_get_addr): Likewise.
+ 	(arm_expand_divmod_libfunc): Likewise.
+ 	* config/bfin/bfin.md (umulsi3_highpart): Likewise.
+ 	(smulsi3_highpart): Likewise.
+ 	* config/c6x/c6x.c (c6x_initialize_trampoline): Likewise.
+ 	(c6x_expand_compare): Likewise.
+ 	(c6x_expand_movmem): Likewise.
+ 	* config/frv/frv.c (frv_trampoline_init): Likewise.
+ 	* config/i386/i386.c (ix86_trampoline_init): Likewise.
+ 	(ix86_expand_divmod_libfunc): Likewise.
+ 	* config/ia64/ia64.c (ia64_expand_tls_address): Likewise.
+ 	(ia64_expand_compare): Likewise.
+ 	(ia64_profile_hook): Likewise.
+ 	* config/ia64/ia64.md (save_stack_nonlocal): Likewise.
+ 	(nonlocal_goto): Likewise.
+ 	(restore_stack_nonlocal): Likewise.
+ 	* config/m32r/m32r.c (block_move_call): Likewise.
+ 	(m32r_trampoline_init): Likewise.
+ 	* config/m68k/linux.h (FINALIZE_TRAMPOLINE): Likewise.
+ 	* config/m68k/m68k.c (m68k_call_tls_get_addr): Likewise.
+ 	(m68k_call_m68k_read_tp): Likewise.
+ 	* config/microblaze/microblaze.c (microblaze_call_tls_get_addr)
+ 	(microblaze_expand_divide): Likewise.
+ 	* config/mips/mips.h (mips_args): Likewise.
+ 	* config/mips/sdemtk.h (mips_sync_icache): Likewise.
+ 	(MIPS_ICACHE_SYNC): Likewise.
+ 	* config/nios2/nios2.c (nios2_emit_expensive_div): Likewise.
+ 	(nios2_trampoline_init): Likewise.
+ 	* config/pa/pa.c (hppa_tls_call): Likewise.
+ 	(pa_trampoline_init): Likewise.
+ 	* config/pa/pa.md (canonicalize_funcptr_for_compare): Likewise.
+ 	* config/powerpcspe/powerpcspe.c (rs6000_legitimize_tls_address)
+ 	(expand_strn_compare): Likewise.
+ 	(rs6000_generate_compare): Likewise.
+ 	(rs6000_expand_float128_convert): Likewise.
+ 	(output_profile_hook): Likewise.
+ 	(rs6000_trampoline_init): Likewise.
+ 	* config/powerpcspe/powerpcspe.md (neg<mode>2): Likewise.
+ 	* config/riscv/riscv.h (PROFILE_HOOK): Likewise.
+ 	* config/rs6000/rs6000-string.c (expand_strn_compare): Likewise.
+ 	* config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Likewise.
+ 	(rs6000_generate_compare): Likewise.
+ 	(rs6000_expand_float128_convert): Likewise.
+ 	(output_profile_hook): Likewise.
+ 	(rs6000_trampoline_init): Likewise.
+ 	* config/rs6000/rs6000.md (neg<mode>2): Likewise.
+ 	* config/sh/sh.c (sh_trampoline_init): Likewise.
+ 	* config/sparc/sparc.c (emit_soft_tfmode_libcall): Likewise.
+ 	(sparc_emit_float_lib_cmp): Likewise.
+ 	(sparc32_initialize_trampoline): Likewise.
+ 	(sparc64_initialize_trampoline): Likewise.
+ 	(sparc_profile_hook): Likewise.
+ 	* config/spu/spu.c (ea_load_store): Likewise.
+ 	* config/spu/spu.md (floatunssidf2): Likewise.
+ 	* config/tilegx/tilegx.c (tilegx_trampoline_init): Likewise.
+ 	* config/tilepro/tilepro.c (tilepro_trampoline_init): Likewise.
+ 	* config/visium/visium.c (expand_block_move_4): Likewise.
+ 	(expand_block_move_2): Likewise.
+ 	(expand_block_move_1): Likewise.
+ 	(expand_block_set_4): Likewise.
+ 	(expand_block_set_2): Likewise.
+ 	(expand_block_set_1): Likewise.
+ 	(visium_trampoline_init): Likewise.
+ 	(visium_profile_hook): Likewise.
+ 	* config/xtensa/xtensa.c (xtensa_expand_nonlocal_goto): Likewise.
+ 	(xtensa_setup_frame_addresses): Likewise.
+ 	(xtensa_trampoline_init): Likewise.
+ 	* except.c (sjlj_emit_function_enter): Likewise.
+ 	(sjlj_emit_function_exit): Likewise.
+ 	* explow.c (allocate_dynamic_stack_space): Likewise.
+ 	(probe_stack_range): Likewise.
+ 	* expr.c (convert_mode_scalar): Likewise.
+ 	* optabs.c (expand_binop): Likewise.
+ 	(expand_twoval_binop_libfunc): Likewise.
+ 	(expand_unop): Likewise.
+ 	(prepare_cmp_insn): Likewise.
+ 	(prepare_float_lib_cmp): Likewise.
+ 	(expand_float): Likewise.
+ 	(expand_fix): Likewise.
+ 	(expand_fixed_convert): Likewise.
+ 	(maybe_emit_sync_lock_test_and_set): Likewise.
+ 	(expand_atomic_compare_and_swap): Likewise.
+ 	(expand_mem_thread_fence): Likewise.
+ 	(expand_atomic_fetch_op): Likewise.
+ 
+ 2017-09-03  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* doc/generic.texi (OpenACC): Adjust URL.
+ 	* doc/invoke.texi (C Dialect Options): Ditto.
+ 
+ 2017-09-03  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.md (*bt<mode>): Use nonimmediate_operand
+ 	predicate for operand 1.  Add (m,<S>) constraint.
+ 	(*jcc_bt<mode>): Use nonimmediate_operand predicate for operand 1.
+ 	Prevent memory operand 1 with register operand 2.
+ 
+ 2017-09-01  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR rtl-optimization/82024
+ 	* combine.c (try_combine): If the combination result is a PARALLEL,
+ 	and we only need to retain the SET in there that would be placed
+ 	at I2, check that we can place that at I3 instead, before doing so.
+ 
+ 2017-09-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/81766
+ 	* config/i386/i386.c (ix86_init_large_pic_reg): Return label
+ 	instead of void.
+ 	(ix86_init_pic_reg): Remember label from ix86_init_large_pic_reg,
+ 	if non-NULL and preceded by NOTE_INSN_BASIC_BLOCK, swap the note
+ 	and label.
+ 
+ 2017-09-01  Joerg Sonnenberger  <joerg@bec.de>
+ 	    Jeff Law  <law@redhat.com>
+ 
+ 	* varasm.c (bss_initializer_p): Do not put constants into .bss
+ 	(categorize_decl_for_section): Handle bss_initializer_p returning
+ 	false when DECL_INITIAL is NULL.
+ 
+ 2017-09-01  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	PR target/82012
+ 	* config/s390/s390.c (s390_can_inline_p): New function.
+ 
+ 2017-09-01  Jeff Law  <law@redhat.com>
+ 
+ 	PR tree-optimization/82052
+ 	* tree-ssa-scopedtables.c (avail_exprs_stack::lookup_avail_expr):
+ 	Always initialize the returned slot after a hash table miss
+ 	when INSERT is true.
+ 
+ 2017-09-01  Alexander Monakov  <amonakov@ispras.ru>
+ 
+ 	* config/s390/s390.md (mem_signal_fence): Remove.
+ 	* doc/md.texi (mem_signal_fence): Remove.
+ 	* optabs.c (expand_mem_signal_fence): Remove uses of mem_signal_fence.
+ 	Update comments.
+ 	* target-insns.def (mem_signal_fence): Remove.
+ 
+ 2017-09-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/81902
+ 	* doc/invoke.texi: Document -fsanitize=pointer-overflow.
+ 
+ 	PR sanitizer/81923
+ 	* asan.c (create_odr_indicator): Strip name encoding from assembler
+ 	name before appending it after __odr_asan_.
+ 
+ 2017-09-01  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR tree-optimization/82059
+ 	* gimple-ssa-isolate-paths.c (isolate_path): Add profile and
+ 	frequency only when an edge is redirected.
+ 
+ 2017-09-01  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc-c.c (__ARC_LPC_WIDTH__): Add builtin define.
+ 	* config/arc/arc.c (ARC_MAX_LOOP_LENGTH): Define.
+ 	(arc_conditional_register_usage): Remove ARC600 lp_count
+ 	exception.
+ 	(arc_file_start): Emit Tag_ARC_CPU_variation.
+ 	(arc_can_use_doloop_p): New conditions to use ZOLs.
+ 	(hwloop_fail): New function.
+ 	(hwloop_optimize): Likewise.
+ 	(hwloop_pattern_reg): Likewise.
+ 	(arc_doloop_hooks): New struct, to be used with reorg_loops.
+ 	(arc_reorg_loops): New function, calls reorg_loops.
+ 	(arc_reorg): Call arc_reorg_loops.  Remove old ZOL handling.
+ 	(arc600_corereg_hazard): Remove ZOL checking, case handled by
+ 	hwloop_optimize.
+ 	(arc_loop_hazard): Remove function, functionality moved into
+ 	hwloop_optimize.
+ 	(arc_hazard): Remove arc_loop_hazard call.
+ 	(arc_adjust_insn_length): Remove ZOL handling, functionality moved
+ 	into hwloop_optimize.
+ 	(arc_label_align): Remove ZOL handling.
+ 	* config/arc/arc.h (LOOP_ALIGN): Changed to 0.
+ 	* config/arc/arc.md (doloop_begin): Remove pattern.
+ 	(doloop_begin_i): Likewise.
+ 	(doloop_end_i): Likewise.
+ 	(doloop_fallback): Likewise.
+ 	(doloop_fallback_m): Likewise.
+ 	(doloop_end): Reimplement expand.
+ 	(arc_lp): New pattern for LP instruction.
+ 	(loop_end): New pattern.
+ 	(loop_fail): Likewise.
+ 	(decrement_and_branch_until_zero): Likewise.
+ 	* config/arc/arc.opt (mlpc-width): New option.
+ 	* doc/invoke.texi (mlpc-width): Document option.
+ 
+ 2017-09-01  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.c (arc_ifcvt): Remove use of merge_blocks call.
+ 	(arc_ccfsm_advance): Fix checking for delay slots.
+ 	(arc_reorg): Add rtl dump after each call to arc_ifcvt.
+ 
+ 2017-09-01  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.md (movqi_insn): Add stores to save constant long
+ 	immediates.
+ 	(movhi_insn): Update store instruction constraint which are saving
+ 	6-bit short immediates.
+ 	(movsi_insn): Consider also short scaled load operations.
+ 	(zero_extendhisi2_i): Use Usd constraint instead of T.
+ 	(extendhisi2_i): Add q constraint.
+ 	(arc_clzsi2): Add type and length attributes.
+ 	(arc_ctzsi2): Likewise.
+ 	* config/arc/constraints.md (Usc): Update constraint, the
+ 	assembler can parse two relocations for a single instruction.
+ 
+ 2017-09-01  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.c (arc_use_anchors_for_symbol_p): New function.
+ 	(TARGET_USE_ANCHORS_FOR_SYMBOL_P): Define.
+ 
+ 2017-08-31  Olivier Hainque  <hainque@adacore.com>
+ 
+ 	* config.gcc (powerpc-wrs-vxworks|vxworksae|vxworksmils): Now
+ 	match as powerpc-wrs-vxworks*.
+ 
+ 2017-08-31  James Greenhalgh  <james.greenhalgh@arm.com>
+ 
+ 	* config/aarch64/aarch64-simd.md (aarch64_mla_elt_merge<mode>): Fix
+ 	register constraint for by-element operand.
+ 	(aarch64_mls_elt_merge<mode>): Likewise.
+ 
+ 2017-08-31  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.c (arc_can_follow_jump): Check for short
+ 	branches.
+ 
+ 2017-08-31  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config.gcc: Use g.opt for arc.
+ 	* config/arc/arc.c (LEGITIMATE_SCALED_ADDRESS_P): Deleted,
+ 	functionality moved to ...
+ 	(legitimate_scaled_address_p): New function, ...here.
+ 	(LEGITIMATE_SMALL_DATA_OFFSET_P): New define.
+ 	(LEGITIMATE_SMALL_DATA_ADDRESS_P): Use the above define.
+ 	(legitimate_offset_address_p): Delete TARGET_NO_SDATA_SET
+ 	condition.
+ 	(arc_override_options): Handle G option.
+ 	(arc_output_pic_addr_const): Correct function definition.
+ 	(arc_legitimate_address_p): Use legitimate_scaled_address_p.
+ 	(arc_decl_anon_ns_mem_p): Delete.
+ 	(arc_in_small_data_p): Overhaul this function to take into
+ 	consideration the value given via G option.
+ 	(arc_rewrite_small_data_1): Renamed and corrected old
+ 	arc_rewrite_small_data function.
+ 	(arc_rewrite_small_data): New function.
+ 	(small_data_pattern): Don't use pic_offset_table_rtx.
+ 	* config/arc/arc.h (CC1_SPEC): Recognize G option.
+ 	* config/arc/simdext.md (movmisalignv2hi): Use
+ 	prepare_move_operands function.
+ 	(mov*): Likewise.
+ 	(movmisalign*): Likewise.
+ 	* doc/invoke.texi (ARC options): Document -G option.
+ 
+ 2017-08-31  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc-protos.h (compact_sda_memory_operand): Update
+ 	prototype.
+ 	* config/arc/arc.c (arc_print_operand): Output scalled address for
+ 	sdata whenever is possible.
+ 	(arc_in_small_data_p): Allow sdata for 64bit datum when double
+ 	load/stores are available.
+ 	(compact_sda_memory_operand): Check for the alignment required by
+ 	code density instructions.
+ 	* config/arc/arc.md (movsi_insn): Use newly introduced Us0
+ 	constraint.
+ 	* config/arc/constraints.md (Usd): Update constraint.
+ 	(Us0): New constraint.
+ 	(Usc): Update constraint.
+ 
+ 2017-08-31  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/82054
+ 	* dwarf2out.c (dwarf2out_early_global_decl): Process each
+ 	function only once.
+ 
+ 2017-08-31  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* config/aarch64/aarch64-builtins.c (aarch64_init_simd_builtins):
+ 	Resize type_signature.
+ 
+ 2017-08-31  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_base_register_rtx_p): Only allow
+ 	subregs whose inner modes can be stored in GPRs.
+ 	(aarch64_classify_index): Likewise.
+ 
+ 2017-08-31  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* config/aarch64/iterators.md (V_cmp_result): Rename to...
+ 	(V_INT_EQUIV): ...this.
+ 	(v_cmp_result): Rename to...
+ 	(v_int_equiv): ...this.
+ 	* config/aarch64/aarch64.md (xorsign<mode>3): Update accordingly.
+ 	* config/aarch64/aarch64-simd.md (xorsign<mode>3): Likewise.
+ 	(copysign<mode>3): Likewise.
+ 	(aarch64_simd_bsl<mode>_internal): Likewise.
+ 	(aarch64_simd_bsl<mode>): Likewise.
+ 	(vec_cmp<mode><mode>): Likewise.
+ 	(vcond<mode><mode>): Likewise.
+ 	(vcond<v_cmp_mixed><mode>): Likewise.
+ 	(vcondu<mode><v_cmp_mixed>): Likewise.
+ 	(aarch64_cm<optab><mode>): Likewise.
+ 	(aarch64_cmtst<mode>): Likewise.
+ 	(aarch64_fac<optab><mode>): Likewise.
+ 	(vec_perm_const<mode>): Likewise.
+ 	(vcond_mask_<mode><v_cmp_result>): Rename to...
+ 	(vcond_mask_<mode><v_int_equiv>): ...this.
+ 	(vec_cmp<mode><v_cmp_result>): Rename to...
+ 	(vec_cmp<mode><v_int_equiv>): ...this.
+ 
+ 2017-08-31  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* config/aarch64/aarch64-modes.def: Remove 32-, 48- and 64-byte
+ 	vector modes.
+ 	* config/aarch64/iterators.md (VRL2, VRL3, VRL4): Delete.
+ 	* config/aarch64/aarch64.md (UNSPEC_LD2_DREG, UNSPEC_LD3_DREG)
+ 	(UNSPEC_LD4_DREG): New unspecs.
+ 	* config/aarch64/aarch64-simd.md (aarch64_ld2<mode>_dreg_le)
+ 	(aarch64_ld2<mode>_dreg_be): Replace with...
+ 	(aarch64_ld2<mode>_dreg): ...this pattern and use the new DREG
+ 	unspec.
+ 	(aarch64_ld3<mode>_dreg_le)
+ 	(aarch64_ld3<mode>_dreg_be): Replace with...
+ 	(aarch64_ld3<mode>_dreg): ...this pattern and use the new DREG
+ 	unspec.
+ 	(aarch64_ld4<mode>_dreg_le)
+ 	(aarch64_ld4<mode>_dreg_be): Replace with...
+ 	(aarch64_ld4<mode>_dreg): ...this pattern and use the new DREG
+ 	unspec.
+ 
+ 2017-08-30  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	PR tree-optimization/81987
+ 	* gimple-ssa-strength-reduction.c (insert_initializers): Don't
+ 	insert an initializer in a location not dominated by the stride
+ 	definition.
+ 
+ 2017-08-30  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* tree-eh.c (lower_try_finally_switch): Set the location of the finally
+ 	on the entire header of the finally block in the fallthru case.
+ 
+ 2017-08-30  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* varasm.c (decode_addr_const): Deal with INDIRECT_REF <INTEGER_CST>.
+ 
+ 2017-08-30  Pat Haugen  <pthaugen@us.ibm.com>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_emit_prologue_move_from_cr): Rename from
+ 	rs6000_emit_move_from_cr and call renamed function.
+ 	(rs6000_emit_prologue): Call renamed functions.
+ 	* config/rs6000/rs6000.md (prologue_movesi_from_cr): Rename from
+ 	movesi_from_cr, remove volatile CRs.
+ 
+ 2017-08-30  Jon Beniston  <jon@beniston.com>
+ 	    Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-patterns.c (vect_pattern_recog_1): Use VECTOR_TYPE_P instead
+ 	of VECTOR_MODE_P check.
+ 	* tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): Allow single
+ 	element vector types.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* df.h (df_read_modify_subreg_p): Remove in favor of...
+ 	* rtl.h (read_modify_subreg_p): ...this new function.  Take a
+ 	const_rtx instead of an rtx.
+ 	* cprop.c (local_cprop_find_used_regs): Update accordingly.
+ 	* df-problems.c (df_word_lr_mark_ref): Likewise.
+ 	* ira-lives.c (mark_pseudo_reg_live): Likewise.
+ 	(mark_pseudo_reg_dead): Likewise.
+ 	(mark_ref_dead): Likewise.
+ 	* reginfo.c (init_subregs_of_mode): Likewise.
+ 	* sched-deps.c (sched_analyze_1): Likewise.
+ 	* df-scan.c (df_def_record_1): Likewise.
+ 	(df_uses_record): Likewise.
+ 	(df_read_modify_subreg_p): Remove in favor of...
+ 	* rtlanal.c (read_modify_subreg_p): ...this new function.  Take a
+ 	const_rtx instead of an rtx.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* rtl.h (partial_subreg_p): New function.
+ 	* caller-save.c (save_call_clobbered_regs): Use it.
+ 	* calls.c (expand_call): Likewise.
+ 	* combine.c (combinable_i3pat): Likewise.
+ 	(simplify_set): Likewise.
+ 	(make_extraction): Likewise.
+ 	(make_compound_operation_int): Likewise.
+ 	(gen_lowpart_or_truncate): Likewise.
+ 	(force_to_mode): Likewise.
+ 	(make_field_assignment): Likewise.
+ 	(reg_truncated_to_mode): Likewise.
+ 	(record_truncated_value): Likewise.
+ 	(move_deaths): Likewise.
+ 	* cse.c (record_jump_cond): Likewise.
+ 	(cse_insn): Likewise.
+ 	* cselib.c (cselib_lookup_1): Likewise.
+ 	* expmed.c (extract_bit_field_using_extv): Likewise.
+ 	* function.c (assign_parm_setup_reg): Likewise.
+ 	* ifcvt.c (noce_convert_multiple_sets): Likewise.
+ 	* ira-build.c (create_insn_allocnos): Likewise.
+ 	* lra-coalesce.c (merge_pseudos): Likewise.
+ 	* lra-constraints.c (match_reload): Likewise.
+ 	(simplify_operand_subreg): Likewise.
+ 	(curr_insn_transform): Likewise.
+ 	* lra-lives.c (process_bb_lives): Likewise.
+ 	* lra.c (new_insn_reg): Likewise.
+ 	(lra_substitute_pseudo): Likewise.
+ 	* regcprop.c (mode_change_ok): Likewise.
+ 	(maybe_mode_change): Likewise.
+ 	(copyprop_hardreg_forward_1): Likewise.
+ 	* reload.c (push_reload): Likewise.
+ 	(find_reloads): Likewise.
+ 	(find_reloads_subreg_address): Likewise.
+ 	* reload1.c (alter_reg): Likewise.
+ 	(eliminate_regs_1): Likewise.
+ 	* simplify-rtx.c (simplify_unary_operation_1): Likewise.
+ 
+ 2017-08-30  David Edelsohn  <dje.gcc@gmail.com>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_expand_binop_builtin): Revert
+ 	back to if statements, including unpack.
+ 
+ 2017-08-30  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR inline-asm/82001
+ 	* ipa-icf-gimple.c (func_checker::compare_tree_list_operand):
+ 	Rename to ...
+ 	(func_checker::compare_asm_inputs_outputs): ... this function.
+ 	(func_checker::compare_gimple_asm): Use the function to compare
+ 	also ASM constrains.
+ 	* ipa-icf-gimple.h: Rename the function.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* coretypes.h (complex_mode): New type.
+ 	* gdbhooks.py (build_pretty_printer): Handle it.
+ 	* machmode.h (complex_mode): New class.
+ 	(complex_mode::includes_p): New function.
+ 	(is_complex_int_mode): Likewise.
+ 	(is_complex_float_mode): Likewise.
+ 	* genmodes.c (get_mode_class): Handle complex mode classes.
+ 	* function.c (expand_function_end): Use is_complex_int_mode.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* coretypes.h (scalar_mode_pod): New typedef.
+ 	* gdbhooks.py (build_pretty_printer): Handle it.
+ 	* machmode.h (gt_ggc_mx, gt_pch_nx): New functions.
+ 	* fixed-value.h (fixed_value::mode): Change type to scalar_mode_pod.
+ 	* fold-const.c (fold_convert_const_int_from_fixed): Use scalar_mode.
+ 	* tree-streamer-in.c (unpack_ts_fixed_cst_value_fields): Use
+ 	as_a <scalar_mode>.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* machmode.h (mode_for_vector): Take a scalar_mode instead
+ 	of a machine_mode.
+ 	* stor-layout.c (mode_for_vector): Likewise.
+ 	* explow.c (promote_mode): Use as_a <scalar_mode>.
+ 	* sdbout.c (sdbout_parms): Use is_a <scalar_mode>.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* target.def (preferred_simd_mode): Take a scalar_mode
+ 	instead of a machine_mode.
+ 	* targhooks.h (default_preferred_simd_mode): Likewise.
+ 	* targhooks.c (default_preferred_simd_mode): Likewise.
+ 	* config/arc/arc.c (arc_preferred_simd_mode): Likewise.
+ 	* config/arm/arm.c (arm_preferred_simd_mode): Likewise.
+ 	* config/c6x/c6x.c (c6x_preferred_simd_mode): Likewise.
+ 	* config/epiphany/epiphany.c (epiphany_preferred_simd_mode): Likewise.
+ 	* config/i386/i386.c (ix86_preferred_simd_mode): Likewise.
+ 	* config/mips/mips.c (mips_preferred_simd_mode): Likewise.
+ 	* config/nvptx/nvptx.c (nvptx_preferred_simd_mode): Likewise.
+ 	* config/powerpcspe/powerpcspe.c (rs6000_preferred_simd_mode):
+ 	Likewise.
+ 	* config/rs6000/rs6000.c (rs6000_preferred_simd_mode): Likewise.
+ 	* config/s390/s390.c (s390_preferred_simd_mode): Likewise.
+ 	* config/sparc/sparc.c (sparc_preferred_simd_mode): Likewise.
+ 	* config/aarch64/aarch64.c (aarch64_preferred_simd_mode): Likewise.
+ 	(aarch64_simd_scalar_immediate_valid_for_move): Update accordingly.
+ 	* doc/tm.texi: Regenerate.
+ 	* optabs-query.c (can_vec_mask_load_store_p): Return false for
+ 	non-scalar modes.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* target.def (scalar_mode_supported_p): Take a scalar_mode
+ 	instead of a machine_mode.
+ 	* targhooks.h (default_scalar_mode_supported_p): Likewise.
+ 	* targhooks.c (default_scalar_mode_supported_p): Likewise.
+ 	* config/aarch64/aarch64.c (aarch64_scalar_mode_supported_p): Likewise.
+ 	* config/alpha/alpha.c (alpha_scalar_mode_supported_p): Likewise.
+ 	* config/arm/arm.c (arm_scalar_mode_supported_p): Likewise.
+ 	* config/avr/avr.c (avr_scalar_mode_supported_p): Likewise.
+ 	* config/c6x/c6x.c (c6x_scalar_mode_supported_p): Likewise.
+ 	* config/i386/i386.c (ix86_scalar_mode_supported_p): Likewise.
+ 	* config/ia64/ia64.c (ia64_scalar_mode_supported_p): Likewise.
+ 	* config/mips/mips.c (mips_scalar_mode_supported_p): Likewise.
+ 	* config/msp430/msp430.c (msp430_scalar_mode_supported_p): Likewise.
+ 	* config/pa/pa.c (pa_scalar_mode_supported_p): Likewise.
+ 	* config/pdp11/pdp11.c (pdp11_scalar_mode_supported_p): Likewise.
+ 	* config/powerpcspe/powerpcspe.c (rs6000_scalar_mode_supported_p):
+ 	Likewise.
+ 	* config/rs6000/rs6000.c (rs6000_scalar_mode_supported_p): Likewise.
+ 	* config/s390/s390.c (s390_scalar_mode_supported_p): Likewise.
+ 	* config/spu/spu.c (spu_scalar_mode_supported_p): Likewise.
+ 	* config/tilegx/tilegx.c (tilegx_scalar_mode_supported_p): Likewise.
+ 	* config/tilepro/tilepro.c (tilepro_scalar_mode_supported_p):
+ 	Likewise.
+ 	* doc/tm.texi: Regenerate.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* coretypes.h (opt_scalar_mode): New typedef.
+ 	* gdbhooks.py (build_pretty_printers): Handle it.
+ 	* machmode.h (mode_iterator::get_2xwider): Add overload for
+ 	opt_mode<T>.
+ 	* emit-rtl.c (init_emit_once): Use opt_scalar_mode when iterating
+ 	over scalar modes.
+ 	* expr.c (convert_mode_scalar): Likewise.
+ 	* omp-low.c (omp_clause_aligned_alignment): Likewise.
+ 	* optabs.c (expand_float): Likewise.
+ 	(expand_fix): Likewise.
+ 	* tree-vect-stmts.c (vectorizable_conversion): Likewise.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* optabs.c (expand_float): Explicitly check for scalars before
+ 	using a branching expansion.
+ 	(expand_fix): Likewise.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* expr.c (convert_mode): Split scalar handling out into...
+ 	(convert_mode_scalar): ...this new function.  Treat the modes
+ 	as scalar_modes.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* omp-expand.c (expand_omp_atomic): Use is_int_mode, is_float_mode
+ 	and scalar_mode.
+ 	* tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): Likewise.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* fixed-value.h (fixed_from_double_int): Take a scalar_mode
+ 	rather than a machine_mode.
+ 	(fixed_from_string): Likewise.
+ 	(fixed_convert): Likewise.
+ 	(fixed_convert_from_int): Likewise.
+ 	(fixed_convert_from_real): Likewise.
+ 	(real_convert_from_fixed): Likewise.
+ 	* fixed-value.c (fixed_from_double_int): Likewise.
+ 	(fixed_from_string): Likewise.
+ 	(fixed_convert): Likewise.
+ 	(fixed_convert_from_int): Likewise.
+ 	(fixed_convert_from_real): Likewise.
+ 	(real_convert_from_fixed): Likewise.
+ 	* config/avr/avr.c (avr_out_round): Use as_a <scalar_mode>.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* emit-rtl.c (immed_double_const): Use is_a <scalar_mode> instead
+ 	of separate mode class checks.  Do not allow vector modes here.
+ 	(immed_wide_int_const): Use as_a <scalar_mode>.
+ 	* explow.c (trunc_int_for_mode): Likewise.
+ 	* rtl.h (wi::int_traits<rtx_mode_t>::get_precision): Likewise.
+ 	(wi::shwi): Likewise.
+ 	(wi::min_value): Likewise.
+ 	(wi::max_value): Likewise.
+ 	* dwarf2out.c (loc_descriptor): Likewise.
+ 	* simplify-rtx.c (simplify_immed_subreg): Fix rtx_mode_t argument
+ 	for CONST_WIDE_INT.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* tree.h (SCALAR_TYPE_MODE): New macro.
+ 	* expr.c (expand_expr_addr_expr_1): Use it.
+ 	(expand_expr_real_2): Likewise.
+ 	* fold-const.c (fold_convert_const_fixed_from_fixed): Likeise.
+ 	(fold_convert_const_fixed_from_int): Likewise.
+ 	(fold_convert_const_fixed_from_real): Likewise.
+ 	(native_encode_fixed): Likewise
+ 	(native_encode_complex): Likewise
+ 	(native_encode_vector): Likewise.
+ 	(native_interpret_fixed): Likewise.
+ 	(native_interpret_real): Likewise.
+ 	(native_interpret_complex): Likewise.
+ 	(native_interpret_vector): Likewise.
+ 	* omp-simd-clone.c (simd_clone_adjust_return_type): Likewise.
+ 	(simd_clone_adjust_argument_types): Likewise.
+ 	(simd_clone_init_simd_arrays): Likewise.
+ 	(simd_clone_adjust): Likewise.
+ 	* stor-layout.c (layout_type): Likewise.
+ 	* tree.c (build_minus_one_cst): Likewise.
+ 	* tree-cfg.c (verify_gimple_assign_ternary): Likewise.
+ 	* tree-inline.c (estimate_move_cost): Likewise.
+ 	* tree-ssa-math-opts.c (convert_plusminus_to_widen): Likewise.
+ 	* tree-vect-loop.c (vect_create_epilog_for_reduction): Likewise.
+ 	(vectorizable_reduction): Likewise.
+ 	* tree-vect-patterns.c (vect_recog_widen_mult_pattern): Likewise.
+ 	(vect_recog_mixed_size_cond_pattern): Likewise.
+ 	(check_bool_pattern): Likewise.
+ 	(adjust_bool_pattern): Likewise.
+ 	(search_type_for_mask_1): Likewise.
+ 	* tree-vect-slp.c (vect_schedule_slp_instance): Likewise.
+ 	* tree-vect-stmts.c (vectorizable_conversion): Likewise.
+ 	(vectorizable_load): Likewise.
+ 	(vectorizable_store): Likewise.
+ 	* ubsan.c (ubsan_encode_value): Likewise.
+ 	* varasm.c (output_constant): Likewise.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* coretypes.h (scalar_mode): New class.
+ 	* machmode.h (scalar_mode): Likewise.
+ 	(scalar_mode::includes_p): New function.
+ 	(mode_to_inner): Return a scalar_mode rather than a machine_mode.
+ 	* gdbhooks.py (build_pretty_printers): Handle scalar_mode.
+ 	* genmodes.c (get_mode_class): Handle remaining scalar modes.
+ 	* cfgexpand.c (expand_debug_expr): Use scalar_mode.
+ 	* expmed.c (store_bit_field_1): Likewise.
+ 	(extract_bit_field_1): Likewise.
+ 	* expr.c (write_complex_part): Likewise.
+ 	(read_complex_part): Likewise.
+ 	(emit_move_complex_push): Likewise.
+ 	(expand_expr_real_2): Likewise.
+ 	* function.c (assign_parm_setup_reg): Likewise.
+ 	(assign_parms_unsplit_complex): Likewise.
+ 	* optabs.c (expand_binop): Likewise.
+ 	* rtlanal.c (subreg_get_info): Likewise.
+ 	* simplify-rtx.c (simplify_immed_subreg): Likewise.
+ 	* varasm.c (output_constant_pool_2): Likewise.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* expmed.c (extract_high_half): Use scalar_int_mode and remove
+ 	assertion.
+ 	(expmed_mult_highpart_optab): Likewise.
+ 	(expmed_mult_highpart): Likewise.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* builtins.h (builtin_strncpy_read_str): Take a scalar_int_mode
+ 	instead of a machine_mode.
+ 	(builtin_memset_read_str): Likewise.
+ 	* builtins.c (c_readstr): Likewise.
+ 	(builtin_memcpy_read_str): Likewise.
+ 	(builtin_strncpy_read_str): Likewise.
+ 	(builtin_memset_read_str): Likewise.
+ 	(builtin_memset_gen_str): Likewise.
+ 	(expand_builtin_signbit): Use scalar_int_mode for local variables.
+ 	* cfgexpand.c (convert_debug_memory_address): Take a scalar_int_mode
+ 	instead of a machine_mode.
+ 	* combine.c (simplify_if_then_else): Use scalar_int_mode for local
+ 	variables.
+ 	(make_extraction): Likewise.
+ 	(try_widen_shift_mode): Take and return scalar_int_modes instead
+ 	of machine_modes.
+ 	* config/aarch64/aarch64.c (aarch64_libgcc_cmp_return_mode): Return
+ 	a scalar_int_mode instead of a machine_mode.
+ 	* config/avr/avr.c (avr_addr_space_address_mode): Likewise.
+ 	(avr_addr_space_pointer_mode): Likewise.
+ 	* config/cr16/cr16.c (cr16_unwind_word_mode): Likewise.
+ 	* config/msp430/msp430.c (msp430_addr_space_pointer_mode): Likewise.
+ 	(msp430_unwind_word_mode): Likewise.
+ 	* config/spu/spu.c (spu_unwind_word_mode): Likewise.
+ 	(spu_addr_space_pointer_mode): Likewise.
+ 	(spu_addr_space_address_mode): Likewise.
+ 	(spu_libgcc_cmp_return_mode): Likewise.
+ 	(spu_libgcc_shift_count_mode): Likewise.
+ 	* config/rl78/rl78.c (rl78_addr_space_address_mode): Likewise.
+ 	(rl78_addr_space_pointer_mode): Likewise.
+ 	(fl78_unwind_word_mode): Likewise.
+ 	(rl78_valid_pointer_mode): Take a scalar_int_mode instead of a
+ 	machine_mode.
+ 	* config/alpha/alpha.c (vms_valid_pointer_mode): Likewise.
+ 	* config/ia64/ia64.c (ia64_vms_valid_pointer_mode): Likewise.
+ 	* config/mips/mips.c (mips_mode_rep_extended): Likewise.
+ 	(mips_valid_pointer_mode): Likewise.
+ 	* config/tilegx/tilegx.c (tilegx_mode_rep_extended): Likewise.
+ 	* config/ft32/ft32.c (ft32_valid_pointer_mode): Likewise.
+ 	(ft32_addr_space_pointer_mode): Return a scalar_int_mode instead
+ 	of a machine_mode.
+ 	(ft32_addr_space_address_mode): Likewise.
+ 	* config/m32c/m32c.c (m32c_valid_pointer_mode): Take a
+ 	scalar_int_mode instead of a machine_mode.
+ 	(m32c_addr_space_pointer_mode): Return a scalar_int_mode instead
+ 	of a machine_mode.
+ 	(m32c_addr_space_address_mode): Likewise.
+ 	* config/powerpcspe/powerpcspe.c (rs6000_abi_word_mode): Likewise.
+ 	(rs6000_eh_return_filter_mode): Likewise.
+ 	* config/rs6000/rs6000.c (rs6000_abi_word_mode): Likewise.
+ 	(rs6000_eh_return_filter_mode): Likewise.
+ 	* config/s390/s390.c (s390_libgcc_cmp_return_mode): Likewise.
+ 	(s390_libgcc_shift_count_mode): Likewise.
+ 	(s390_unwind_word_mode): Likewise.
+ 	(s390_valid_pointer_mode): Take a scalar_int_mode rather than a
+ 	machine_mode.
+ 	* target.def (mode_rep_extended): Likewise.
+ 	(valid_pointer_mode): Likewise.
+ 	(addr_space.valid_pointer_mode): Likewise.
+ 	(eh_return_filter_mode): Return a scalar_int_mode rather than
+ 	a machine_mode.
+ 	(libgcc_cmp_return_mode): Likewise.
+ 	(libgcc_shift_count_mode): Likewise.
+ 	(unwind_word_mode): Likewise.
+ 	(addr_space.pointer_mode): Likewise.
+ 	(addr_space.address_mode): Likewise.
+ 	* doc/tm.texi: Regenerate.
+ 	* dojump.c (prefer_and_bit_test): Take a scalar_int_mode rather than
+ 	a machine_mode.
+ 	(do_jump): Use scalar_int_mode for local variables.
+ 	* dwarf2cfi.c (init_return_column_size): Take a scalar_int_mode
+ 	rather than a machine_mode.
+ 	* dwarf2out.c (convert_descriptor_to_mode): Likewise.
+ 	(scompare_loc_descriptor_wide): Likewise.
+ 	(scompare_loc_descriptor_narrow): Likewise.
+ 	* emit-rtl.c (adjust_address_1): Use scalar_int_mode for local
+ 	variables.
+ 	* except.c (sjlj_emit_dispatch_table): Likewise.
+ 	(expand_builtin_eh_copy_values): Likewise.
+ 	* explow.c (convert_memory_address_addr_space_1): Likewise.
+ 	Take a scalar_int_mode rather than a machine_mode.
+ 	(convert_memory_address_addr_space): Take a scalar_int_mode rather
+ 	than a machine_mode.
+ 	(memory_address_addr_space): Use scalar_int_mode for local variables.
+ 	* expmed.h (expand_mult_highpart_adjust): Take a scalar_int_mode
+ 	rather than a machine_mode.
+ 	* expmed.c (mask_rtx): Likewise.
+ 	(init_expmed_one_conv): Likewise.
+ 	(expand_mult_highpart_adjust): Likewise.
+ 	(extract_high_half): Likewise.
+ 	(expmed_mult_highpart_optab): Likewise.
+ 	(expmed_mult_highpart): Likewise.
+ 	(expand_smod_pow2): Likewise.
+ 	(expand_sdiv_pow2): Likewise.
+ 	(emit_store_flag_int): Likewise.
+ 	(adjust_bit_field_mem_for_reg): Use scalar_int_mode for local
+ 	variables.
+ 	(extract_low_bits): Likewise.
+ 	* expr.h (by_pieces_constfn): Take a scalar_int_mode rather than
+ 	a machine_mode.
+ 	* expr.c (pieces_addr::adjust):  Likewise.
+ 	(can_store_by_pieces): Likewise.
+ 	(store_by_pieces): Likewise.
+ 	(clear_by_pieces_1): Likewise.
+ 	(expand_expr_addr_expr_1): Likewise.
+ 	(expand_expr_addr_expr): Use scalar_int_mode for local variables.
+ 	(expand_expr_real_1): Likewise.
+ 	(try_casesi): Likewise.
+ 	* final.c (shorten_branches): Likewise.
+ 	* fold-const.c (fold_convert_const_int_from_fixed): Change the
+ 	type of "mode" to machine_mode.
+ 	* internal-fn.c (expand_arith_overflow_result_store): Take a
+ 	scalar_int_mode rather than a machine_mode.
+ 	(expand_mul_overflow): Use scalar_int_mode for local variables.
+ 	* loop-doloop.c (doloop_modify): Likewise.
+ 	(doloop_optimize): Likewise.
+ 	* optabs.c (expand_subword_shift): Take a scalar_int_mode rather
+ 	than a machine_mode.
+ 	(expand_doubleword_shift_condmove): Likewise.
+ 	(expand_doubleword_shift): Likewise.
+ 	(expand_doubleword_clz): Likewise.
+ 	(expand_doubleword_popcount): Likewise.
+ 	(expand_doubleword_parity): Likewise.
+ 	(expand_absneg_bit): Use scalar_int_mode for local variables.
+ 	(prepare_float_lib_cmp): Likewise.
+ 	* rtl.h (convert_memory_address_addr_space_1): Take a scalar_int_mode
+ 	rather than a machine_mode.
+ 	(convert_memory_address_addr_space): Likewise.
+ 	(get_mode_bounds): Likewise.
+ 	(get_address_mode): Return a scalar_int_mode rather than a
+ 	machine_mode.
+ 	* rtlanal.c (get_address_mode): Likewise.
+ 	* stor-layout.c (get_mode_bounds): Take a scalar_int_mode rather
+ 	than a machine_mode.
+ 	* targhooks.c (default_mode_rep_extended): Likewise.
+ 	(default_valid_pointer_mode): Likewise.
+ 	(default_addr_space_valid_pointer_mode): Likewise.
+ 	(default_eh_return_filter_mode): Return a scalar_int_mode rather
+ 	than a machine_mode.
+ 	(default_libgcc_cmp_return_mode): Likewise.
+ 	(default_libgcc_shift_count_mode): Likewise.
+ 	(default_unwind_word_mode): Likewise.
+ 	(default_addr_space_pointer_mode): Likewise.
+ 	(default_addr_space_address_mode): Likewise.
+ 	* targhooks.h (default_eh_return_filter_mode): Likewise.
+ 	(default_libgcc_cmp_return_mode): Likewise.
+ 	(default_libgcc_shift_count_mode): Likewise.
+ 	(default_unwind_word_mode): Likewise.
+ 	(default_addr_space_pointer_mode): Likewise.
+ 	(default_addr_space_address_mode): Likewise.
+ 	(default_mode_rep_extended): Take a scalar_int_mode rather than
+ 	a machine_mode.
+ 	(default_valid_pointer_mode): Likewise.
+ 	(default_addr_space_valid_pointer_mode): Likewise.
+ 	* tree-ssa-address.c (addr_for_mem_ref): Use scalar_int_mode for
+ 	local variables.
+ 	* tree-ssa-loop-ivopts.c (get_shiftadd_cost): Take a scalar_int_mode
+ 	rather than a machine_mode.
+ 	* tree-switch-conversion.c (array_value_type): Use scalar_int_mode
+ 	for local variables.
+ 	* tree-vrp.c (simplify_float_conversion_using_ranges): Likewise.
+ 	* var-tracking.c (use_narrower_mode): Take a scalar_int_mode rather
+ 	than a machine_mode.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* dojump.c (do_jump_by_parts_greater_rtx): Change the type of
+ 	the mode argument to scalar_int_mode.
+ 	(do_jump_by_parts_zero_rtx): Likewise.
+ 	(do_jump_by_parts_equality_rtx): Likewise.
+ 	(do_jump_by_parts_greater): Take a mode argument.
+ 	(do_jump_by_parts_equality): Likewise.
+ 	(do_jump_1): Update calls accordingly.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* is-a.h (safe_dyn_cast): New function.
+ 	* rtl.h (rtx_jump_table_data::get_data_mode): New function.
+ 	(jump_table_for_label): Likewise.
+ 	* final.c (final_addr_vec_align): Take an rtx_jump_table_data *
+ 	instead of an rtx_insn *.
+ 	(shorten_branches): Use dyn_cast instead of LABEL_P and
+ 	JUMP_TABLE_DATA_P.  Use jump_table_for_label and
+ 	rtx_jump_table_data::get_data_mode.
+ 	(final_scan_insn): Likewise.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* combine.c (try_combine): Use is_a <scalar_int_mode> when
+ 	trying to combine a full-register integer set with a subreg
+ 	integer set.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* expr.c (expand_expr_addr_expr): Add a new_tmode local variable
+ 	that is always either address_mode or pointer_mode.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* expr.c (expand_expr_real_2): Use word_mode instead of innermode
+ 	when the two are known to be equal.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* simplify-rtx.c (simplify_const_unary_operation): Use
+ 	is_a <scalar_int_mode> instead of checking for a nonzero
+ 	precision.  Forcibly convert op_mode to a scalar_int_mode
+ 	in that case.  More clearly differentiate the operand and
+ 	result modes and use the former when deciding what the value
+ 	of a count-bits operation should be.  Use is_int_mode instead
+ 	of checking for a MODE_INT.  Remove redundant check for whether
+ 	this mode has a zero precision.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* optabs.c (widen_leading): Change the type of the mode argument
+ 	to scalar_int_mode.  Use opt_scalar_int_mode for the mode iterator.
+ 	(widen_bswap): Likewise.
+ 	(expand_parity): Likewise.
+ 	(expand_ctz): Change the type of the mode argument to scalar_int_mode.
+ 	(expand_ffs): Likewise.
+ 	(epand_unop): Check for scalar integer modes before calling the
+ 	above routines.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* expr.c (const_scalar_mask_from_tree): Add a mode argument.
+ 	Expand commentary.
+ 	(expand_expr_real_1): Update call accordingly.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* expmed.c (store_bit_field_using_insv): Add op0_mode and
+ 	value_mode arguments.  Use scalar_int_mode internally.
+ 	(store_bit_field_1): Rename the new integer mode from imode
+ 	to op0_mode and use it instead of GET_MODE (op0).  Update calls
+ 	to store_split_bit_field, store_bit_field_using_insv and
+ 	store_fixed_bit_field.
+ 	(store_fixed_bit_field): Add op0_mode and value_mode arguments.
+ 	Use scalar_int_mode internally.  Use a bit count rather than a mode
+ 	when calculating the largest bit size for get_best_mode.
+ 	Update calls to store_split_bit_field and store_fixed_bit_field_1.
+ 	(store_fixed_bit_field_1): Add mode and value_mode arguments.
+ 	Remove assertion that OP0 has a scalar integer mode.
+ 	(store_split_bit_field): Add op0_mode and value_mode arguments.
+ 	Update calls to extract_fixed_bit_field.
+ 	(extract_bit_field_using_extv): Add an op0_mode argument.
+ 	Use scalar_int_mode internally.
+ 	(extract_bit_field_1): Rename the new integer mode from imode to
+ 	op0_mode and use it instead of GET_MODE (op0).  Update calls to
+ 	extract_split_bit_field, extract_bit_field_using_extv and
+ 	extract_fixed_bit_field.
+ 	(extract_fixed_bit_field): Add an op0_mode argument.  Update calls
+ 	to extract_split_bit_field and extract_fixed_bit_field_1.
+ 	(extract_fixed_bit_field_1): Add a mode argument.  Remove assertion
+ 	that OP0 has a scalar integer mode.  Use as_a <scalar_int_mode>
+ 	on the target mode.
+ 	(extract_split_bit_field): Add an op0_mode argument.  Update call
+ 	to extract_fixed_bit_field.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* cse.c (cse_insn): Use opt_scalar_int_mode for the mode iterator.
+ 	* explow.c (hard_function_value): Likewise.
+ 	* expmed.c (extract_fixed_bit_field_1): Likewise.  Move the
+ 	convert_to_mode call outside the loop.
+ 	* expr.c (alignment_for_piecewise_move): Use opt_scalar_int_mode
+ 	for the mode iterator.  Require the mode specified by max_pieces
+ 	to exist.
+ 	(emit_block_move_via_movmem): Use opt_scalar_int_mode for the
+ 	mode iterator.
+ 	(copy_blkmode_to_reg): Likewise.
+ 	(set_storage_via_setmem): Likewise.
+ 	* optabs.c (prepare_cmp_insn): Likewise.
+ 	* rtlanal.c (init_num_sign_bit_copies_in_rep): Likewise.
+ 	* stor-layout.c (finish_bitfield_representative): Likewise.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* rtl.h (subreg_unpromoted_mode, subreg_promoted_mode): New functions.
+ 	* expr.c (convert_move): Use them.
+ 	(convert_modes): Likewise.
+ 	(store_expr_with_bounds): Likewise.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* rtl.h (rtl_hooks::reg_nonzero_bits): Add a scalar_int_mode
+ 	parameter for the mode of "x".  Remove the "known_x", "known_mode"
+ 	and "known_ret" arguments.  Change the type of the mode argument
+ 	to scalar_int_mode.
+ 	(rtl_hooks:reg_num_sign_bit_copies): Likewise.
+ 	* combine.c (reg_nonzero_bits_for_combine): Update accordingly.
+ 	(reg_num_sign_bit_copies_for_combine): Likewise.
+ 	* rtlanal.c (nonzero_bits1): Likewise.
+ 	(num_sign_bit_copies1): Likewise.
+ 	* rtlhooks-def.h (reg_nonzero_bits_general): Likewise.
+ 	(reg_num_sign_bit_copies_general): Likewise.
+ 	* rtlhooks.c (reg_num_sign_bit_copies_general): Likewise.
+ 	(reg_nonzero_bits_general): Likewise.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* rtlanal.c (num_sign_bit_copies): Handle VOIDmode here rather
+ 	than in subroutines.  Return 1 for non-integer modes.
+ 	(cached_num_sign_bit_copies): Change the type of the mode parameter
+ 	to scalar_int_mode.
+ 	(num_sign_bit_copies1): Likewise.  Remove early exit for other mode
+ 	classes.  Handle CONST_INT_P first and then check whether X also
+ 	has a scalar integer mode.  Check the same thing for inner registers
+ 	of a SUBREG and for values that are being extended or truncated.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* rtlanal.c (nonzero_bits): Handle VOIDmode here rather than
+ 	in subroutines.  Return the mode mask for non-integer modes.
+ 	(cached_nonzero_bits): Change the type of the mode parameter
+ 	to scalar_int_mode.
+ 	(nonzero_bits1): Likewise.  Remove early exit for other mode
+ 	classes.  Handle CONST_INT_P first and then check whether X
+ 	also has a scalar integer mode.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* expr.c (widest_int_mode_for_size): Make the comment match the code.
+ 	Return a scalar_int_mode and assert that the size is greater than
+ 	one byte.
+ 	(by_pieces_ninsns): Update accordingly and remove VOIDmode handling.
+ 	(op_by_pieces_d::op_by_pieces_d): Likewise.
+ 	(op_by_pieces_d::run): Likewise.
+ 	(can_store_by_pieces): Likewise.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* combine.c (extract_left_shift): Add a mode argument and update
+ 	recursive calls.
+ 	(make_compound_operation_int): Change the type of the mode parameter
+ 	to scalar_int_mode and update the call to extract_left_shift.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* combine.c (simplify_and_const_int): Change the type of the mode
+ 	parameter to scalar_int_mode.
+ 	(simplify_and_const_int_1): Likewise.  Update recursive call.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* combine.c (simplify_compare_const): Check that the mode is a
+ 	scalar_int_mode (rather than VOIDmode) before testing its
+ 	precision.
+ 	(simplify_comparison): Move COMPARISON_P handling out of the
+ 	loop and restrict the latter part of the loop to scalar_int_modes.
+ 	Check is_a <scalar_int_mode> before calling HWI_COMPUTABLE_MODE_P
+ 	and when considering SUBREG_REGs.  Use is_int_mode instead of
+ 	checking GET_MODE_CLASS against MODE_INT.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* combine.c (try_widen_shift_mode): Move check for equal modes to...
+ 	(simplify_shift_const_1): ...here.  Use scalar_int_mode for
+ 	shift_unit_mode and for modes involved in scalar shifts.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* combine.c (force_int_to_mode): New function, split out from...
+ 	(force_to_mode): ...here.  Keep xmode up-to-date and use it
+ 	instead of GET_MODE (x).
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* optabs-query.h (extraction_insn::struct_mode): Change type to
+ 	opt_scalar_int_mode and update comment.
+ 	(extraction_insn::field_mode): Change type to scalar_int_mode.
+ 	(extraction_insn::pos_mode): Likewise.
+ 	* combine.c (make_extraction): Update accordingly.
+ 	* optabs-query.c (get_traditional_extraction_insn): Likewise.
+ 	(get_optab_extraction_insn): Likewise.
+ 	* recog.c (simplify_while_replacing): Likewise.
+ 	* expmed.c (narrow_bit_field_mem): Change the type of the mode
+ 	parameter to opt_scalar_int_mode.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* machmode.h (bit_field_mode_iterator::next_mode): Take a pointer
+ 	to a scalar_int_mode instead of a machine_mode.
+ 	(bit_field_mode_iterator::m_mode): Change type to opt_scalar_int_mode.
+ 	(get_best_mode): Return a boolean and use a pointer argument to store
+ 	the selected mode.  Replace the limit mode parameter with a bit limit.
+ 	* expmed.c (adjust_bit_field_mem_for_reg): Use scalar_int_mode
+ 	for the values returned by bit_field_mode_iterator::next_mode.
+ 	(store_bit_field): Update call to get_best_mode.
+ 	(store_fixed_bit_field): Likewise.
+ 	(extract_fixed_bit_field): Likewise.
+ 	* expr.c (optimize_bitfield_assignment_op): Likewise.
+ 	* fold-const.c (optimize_bit_field_compare): Likewise.
+ 	(fold_truth_andor_1): Likewise.
+ 	* stor-layout.c (bit_field_mode_iterator::next_mode): As above.
+ 	Update for new type of m_mode.
+ 	(get_best_mode): As above.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* expmed.c (strict_volatile_bitfield_p): Change the type of fieldmode
+ 	to scalar_int_mode.  Remove check for SCALAR_INT_MODE_P.
+ 	(store_bit_field): Check is_a <scalar_int_mode> before calling
+ 	strict_volatile_bitfield_p.
+ 	(extract_bit_field): Likewise.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* target.def (cstore_mode): Return a scalar_int_mode.
+ 	* doc/tm.texi: Regenerate.
+ 	* config/sparc/sparc.c (sparc_cstore_mode): Return a scalar_int_mode.
+ 	* targhooks.h (default_cstore_mode): Likewise.
+ 	* targhooks.c (default_cstore_mode): Likewise, using a forced
+ 	conversion.
+ 	* expmed.c (emit_cstore): Expect the target of the cstore to be
+ 	a scalar_int_mode.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* cfgloop.h (rtx_iv): Change type of extend_mode and mode to
+ 	scalar_int_mode.
+ 	(niter_desc): Likewise mode.
+ 	(iv_analyze): Add a mode parameter.
+ 	(biv_p): Likewise.
+ 	(iv_analyze_expr): Pass the mode paraeter before the rtx it describes
+ 	and change its type to scalar_int_mode.
+ 	* loop-iv.c: Update commentary at head of file.
+ 	(iv_constant): Pass the mode paraeter before the rtx it describes
+ 	and change its type to scalar_int_mode.  Remove VOIDmode handling.
+ 	(iv_subreg): Change the type of the mode parameter to scalar_int_mode.
+ 	(iv_extend): Likewise.
+ 	(shorten_into_mode): Likewise.
+ 	(iv_add): Use scalar_int_mode.
+ 	(iv_mult): Likewise.
+ 	(iv_shift): Likewise.
+ 	(canonicalize_iv_subregs): Likewise.
+ 	(get_biv_step_1): Pass the outer_mode parameter before the rtx
+ 	it describes and change its mode to scalar_int_mode.   Also change
+ 	the type of the returned inner_mode to scalar_int_mode.
+ 	(get_biv_step): Likewise, turning outer_mode from a pointer
+ 	into a direct parameter.  Update call to get_biv_step_1.
+ 	(iv_analyze_biv): Add an outer_mode parameter.  Update calls to
+ 	iv_constant and get_biv_step.
+ 	(iv_analyze_expr): Pass the mode parameter before the rtx it describes
+ 	and change its type to scalar_int_mode.  Don't initialise iv->mode
+ 	to VOIDmode and remove later checks for its still being VOIDmode.
+ 	Update calls to iv_analyze_op and iv_analyze_expr.  Check
+ 	is_a <scalar_int_mode> when changing the mode under consideration.
+ 	(iv_analyze_def): Ignore registers that don't have a scalar_int_mode.
+ 	Update call to iv_analyze_expr.
+ 	(iv_analyze_op): Add a mode parameter.  Reject subregs whose
+ 	inner register is not also a scalar_int_mode.  Update call to
+ 	iv_analyze_biv.
+ 	(iv_analyze): Add a mode parameter.  Update call to iv_analyze_op.
+ 	(biv_p): Add a mode parameter.  Update call to iv_analyze_biv.
+ 	(iv_number_of_iterations): Use is_a <scalar_int_mode> instead of
+ 	separate mode class checks.  Update calls to iv_analyze.  Remove
+ 	fix-up of VOIDmodes after iv_analyze_biv.
+ 	* loop-unroll.c (analyze_iv_to_split_insn): Reject registers that
+ 	don't have a scalar_int_mode.  Update call to biv_p.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* cfgexpand.c (convert_debug_memory_address): Use
+ 	as_a <scalar_int_mode>.
+ 	* combine.c (expand_compound_operation): Likewise.
+ 	(make_extraction): Likewise.
+ 	(change_zero_ext): Likewise.
+ 	(simplify_comparison): Likewise.
+ 	* cse.c (cse_insn): Likewise.
+ 	* dwarf2out.c (minmax_loc_descriptor): Likewise.
+ 	(mem_loc_descriptor): Likewise.
+ 	(loc_descriptor): Likewise.
+ 	* expmed.c (init_expmed_one_mode): Likewise.
+ 	(synth_mult): Likewise.
+ 	(emit_store_flag_1): Likewise.
+ 	(expand_divmod): Likewise.  Use HWI_COMPUTABLE_MODE_P instead
+ 	of a comparison with size.
+ 	* expr.c (expand_assignment): Use as_a <scalar_int_mode>.
+ 	(reduce_to_bit_field_precision): Likewise.
+ 	* function.c (expand_function_end): Likewise.
+ 	* internal-fn.c (expand_arith_overflow_result_store): Likewise.
+ 	* loop-doloop.c (doloop_modify): Likewise.
+ 	* optabs.c (expand_binop): Likewise.
+ 	(expand_unop): Likewise.
+ 	(expand_copysign_absneg): Likewise.
+ 	(prepare_cmp_insn): Likewise.
+ 	(maybe_legitimize_operand): Likewise.
+ 	* recog.c (const_scalar_int_operand): Likewise.
+ 	* rtlanal.c (get_address_mode): Likewise.
+ 	* simplify-rtx.c (simplify_unary_operation_1): Likewise.
+ 	(simplify_cond_clz_ctz): Likewise.
+ 	* tree-nested.c (get_nl_goto_field): Likewise.
+ 	* tree.c (build_vector_type_for_mode): Likewise.
+ 	* var-tracking.c (use_narrower_mode): Likewise.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* tree.h (SCALAR_INT_TYPE_MODE): New macro.
+ 	* builtins.c (expand_builtin_signbit): Use it.
+ 	* cfgexpand.c (expand_debug_expr): Likewise.
+ 	* dojump.c (do_jump): Likewise.
+ 	(do_compare_and_jump): Likewise.
+ 	* dwarf2cfi.c (expand_builtin_init_dwarf_reg_sizes): Likewise.
+ 	* expmed.c (make_tree): Likewise.
+ 	* expr.c (expand_expr_real_2): Likewise.
+ 	(expand_expr_real_1): Likewise.
+ 	(try_casesi): Likewise.
+ 	* fold-const-call.c (fold_const_call_ss): Likewise.
+ 	* fold-const.c (unextend): Likewise.
+ 	(extract_muldiv_1): Likewise.
+ 	(fold_single_bit_test): Likewise.
+ 	(native_encode_int): Likewise.
+ 	(native_encode_string): Likewise.
+ 	(native_interpret_int): Likewise.
+ 	* gimple-fold.c (gimple_fold_builtin_memset): Likewise.
+ 	* internal-fn.c (expand_addsub_overflow): Likewise.
+ 	(expand_neg_overflow): Likewise.
+ 	(expand_mul_overflow): Likewise.
+ 	(expand_arith_overflow): Likewise.
+ 	* match.pd: Likewise.
+ 	* stor-layout.c (layout_type): Likewise.
+ 	* tree-cfg.c (verify_gimple_assign_ternary): Likewise.
+ 	* tree-ssa-math-opts.c (convert_mult_to_widen): Likewise.
+ 	* tree-ssanames.c (get_range_info): Likewise.
+ 	* tree-switch-conversion.c (array_value_type) Likewise.
+ 	* tree-vect-patterns.c (vect_recog_rotate_pattern): Likewise.
+ 	(vect_recog_divmod_pattern): Likewise.
+ 	(vect_recog_mixed_size_cond_pattern): Likewise.
+ 	* tree-vrp.c (extract_range_basic): Likewise.
+ 	(simplify_float_conversion_using_ranges): Likewise.
+ 	* tree.c (int_fits_type_p): Likewise.
+ 	* ubsan.c (instrument_bool_enum_load): Likewise.
+ 	* varasm.c (mergeable_string_section): Likewise.
+ 	(narrowing_initializer_constant_valid_p): Likewise.
+ 	(output_constant): Likewise.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* machmode.h (NARROWEST_INT_MODE): New macro.
+ 	* expr.c (alignment_for_piecewise_move): Use it instead of
+ 	GET_CLASS_NARROWEST_MODE (MODE_INT).
+ 	(push_block): Likewise.
+ 	* stor-layout.c (bit_field_mode_iterator::bit_field_mode_iterator):
+ 	Likewise.
+ 	* tree-vrp.c (simplify_float_conversion_using_ranges): Likewise.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* postreload.c (move2add_valid_value_p): Change the type of the
+ 	mode parameter to scalar_int_mode.
+ 	(move2add_use_add2_insn): Add a mode parameter and use it instead
+ 	of GET_MODE (reg).
+ 	(move2add_use_add3_insn): Likewise.
+ 	(reload_cse_move2add): Update accordingly.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* expr.c (expand_expr_real_2): Use scalar_int_mode for the
+ 	double-word mode.
+ 	* lower-subreg.c (resolve_shift_zext): Use is_a <scalar_int_mode>.
+ 	* optabs.c (expand_unop): Likewise.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* dwarf2out.c (typed_binop): Change mode parameter to scalar_int_mode.
+ 	(clz_loc_descriptor): Likewise.  Remove SCALAR_INT_MODE_P check.
+ 	(popcount_loc_descriptor): Likewise.
+ 	(bswap_loc_descriptor): Likewise.
+ 	(rotate_loc_descriptor): Likewise.
+ 	(mem_loc_descriptor): Add is_a <scalar_int_mode> checks before
+ 	calling the functions above.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* combine.c (sign_extend_short_imm): Add is_a <scalar_int_mode>
+ 	checks.
+ 	(try_combine): Likewise.
+ 	(simplify_if_then_else): Likewise.
+ 	* cse.c (cse_insn): Likewise.
+ 	* dwarf2out.c (mem_loc_descriptor): Likewise.
+ 	* emit-rtl.c (gen_lowpart_common): Likewise.
+ 	* simplify-rtx.c (simplify_truncation): Likewise.
+ 	(simplify_binary_operation_1): Likewise.
+ 	(simplify_const_relational_operation): Likewise.
+ 	(simplify_ternary_operation): Likewise.
+ 	* tree-ssa-loop-ivopts.c (force_expr_to_var_cost): Likewise.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* cse.c (cse_insn): Add is_a <scalar_int_mode> checks.
+ 	* reload.c (push_reload): Likewise.
+ 	(find_reloads): Likewise.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* combine.c (find_split_point): Add is_a <scalar_int_mode> checks.
+ 	(make_compound_operation_int): Likewise.
+ 	(change_zero_ext): Likewise.
+ 	* expr.c (convert_move): Likewise.
+ 	(convert_modes): Likewise.
+ 	* fwprop.c (forward_propagate_subreg): Likewise.
+ 	* loop-iv.c (get_biv_step_1): Likewise.
+ 	* optabs.c (widen_operand): Likewise.
+ 	* postreload.c (move2add_valid_value_p): Likewise.
+ 	* recog.c (simplify_while_replacing): Likewise.
+ 	* simplify-rtx.c (simplify_unary_operation_1): Likewise.
+ 	(simplify_binary_operation_1): Likewise.  Remove redundant
+ 	mode equality check.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* combine.c (combine_simplify_rtx): Add checks for
+ 	is_a <scalar_int_mode>.
+ 	(simplify_if_then_else): Likewise.
+ 	(make_field_assignment): Likewise.
+ 	(simplify_comparison): Likewise.
+ 	* ifcvt.c (noce_try_bitop): Likewise.
+ 	* loop-invariant.c (canonicalize_address_mult): Likewise.
+ 	* simplify-rtx.c (simplify_unary_operation_1): Likewise.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* gimple-fold.c (gimple_fold_builtin_memory_op): Use
+ 	is_a <scalar_int_mode> instead of != BLKmode.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* cfgexpand.c (expand_debug_expr): Use is_a <scalar_int_mode>
+ 	instead of != VOIDmode.
+ 	* combine.c (if_then_else_cond): Likewise.
+ 	(change_zero_ext): Likewise.
+ 	* dwarf2out.c (mem_loc_descriptor): Likewise.
+ 	(loc_descriptor): Likewise.
+ 	* rtlanal.c (canonicalize_condition): Likewise.
+ 	* simplify-rtx.c (simplify_relational_operation_1): Likewise.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* simplify-rtx.c (simplify_binary_operation_1): Use
+ 	is_a <scalar_int_mode> instead of !VECTOR_MODE_P.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* wide-int.h (int_traits<unsigned char>) New class.
+ 	(int_traits<unsigned short>) Likewise.
+ 	* cfgexpand.c (expand_debug_expr): Use is_a <scalar_int_mode>.
+ 	Use GET_MODE_UNIT_PRECISION and remove redundant test for
+ 	SCALAR_INT_MODE_P.
+ 	* combine.c (set_nonzero_bits_and_sign_copies): Use
+ 	is_a <scalar_int_mode>.
+ 	(find_split_point): Likewise.
+ 	(combine_simplify_rtx): Likewise.
+ 	(simplify_logical): Likewise.
+ 	(expand_compound_operation): Likewise.
+ 	(expand_field_assignment): Likewise.
+ 	(make_compound_operation): Likewise.
+ 	(extended_count): Likewise.
+ 	(change_zero_ext): Likewise.
+ 	(simplify_comparison): Likewise.
+ 	* dwarf2out.c (scompare_loc_descriptor): Likewise.
+ 	(ucompare_loc_descriptor): Likewise.
+ 	(minmax_loc_descriptor): Likewise.
+ 	(mem_loc_descriptor): Likewise.
+ 	(loc_descriptor): Likewise.
+ 	* expmed.c (init_expmed_one_mode): Likewise.
+ 	* lra-constraints.c (lra_constraint_offset): Likewise.
+ 	* optabs.c (prepare_libcall_arg): Likewise.
+ 	* postreload.c (move2add_note_store): Likewise.
+ 	* reload.c (operands_match_p): Likewise.
+ 	* rtl.h (load_extend_op): Likewise.
+ 	* rtlhooks.c (gen_lowpart_general): Likewise.
+ 	* simplify-rtx.c (simplify_truncation): Likewise.
+ 	(simplify_unary_operation_1): Likewise.
+ 	(simplify_binary_operation_1): Likewise.
+ 	(simplify_const_binary_operation): Likewise.
+ 	(simplify_const_relational_operation): Likewise.
+ 	(simplify_subreg): Likewise.
+ 	* stor-layout.c (bitwise_mode_for_mode): Likewise.
+ 	* var-tracking.c (adjust_mems): Likewise.
+ 	(prepare_call_arguments): Likewise.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* machmode.h (is_int_mode): New fuction.
+ 	* combine.c (find_split_point): Use it.
+ 	(combine_simplify_rtx): Likewise.
+ 	(simplify_if_then_else): Likewise.
+ 	(simplify_set): Likewise.
+ 	(simplify_shift_const_1): Likewise.
+ 	(simplify_comparison): Likewise.
+ 	* config/aarch64/aarch64.c (aarch64_rtx_costs): Likewise.
+ 	* cse.c (notreg_cost): Likewise.
+ 	(cse_insn): Likewise.
+ 	* cselib.c (cselib_lookup_1): Likewise.
+ 	* dojump.c (do_jump_1): Likewise.
+ 	(do_compare_rtx_and_jump): Likewise.
+ 	* dse.c (get_call_args): Likewise.
+ 	* dwarf2out.c (rtl_for_decl_init): Likewise.
+ 	(native_encode_initializer): Likewise.
+ 	* expmed.c (emit_store_flag_1): Likewise.
+ 	(emit_store_flag): Likewise.
+ 	* expr.c (convert_modes): Likewise.
+ 	(store_field): Likewise.
+ 	(expand_expr_real_1): Likewise.
+ 	* fold-const.c (fold_read_from_constant_string): Likewise.
+ 	* gimple-ssa-sprintf.c (get_format_string): Likewise.
+ 	* optabs-libfuncs.c (gen_int_libfunc): Likewise.
+ 	* optabs.c (expand_binop): Likewise.
+ 	(expand_unop): Likewise.
+ 	(expand_abs_nojump): Likewise.
+ 	(expand_one_cmpl_abs_nojump): Likewise.
+ 	* simplify-rtx.c (mode_signbit_p): Likewise.
+ 	(val_signbit_p): Likewise.
+ 	(val_signbit_known_set_p): Likewise.
+ 	(val_signbit_known_clear_p): Likewise.
+ 	(simplify_relational_operation_1): Likewise.
+ 	* tree.c (vector_type_mode): Likewise.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* machmode.h (smallest_mode_for_size): Fix formatting.
+ 	(smallest_int_mode_for_size): New function.
+ 	* cfgexpand.c (expand_debug_expr): Use smallest_int_mode_for_size
+ 	instead of smallest_mode_for_size.
+ 	* combine.c (make_extraction): Likewise.
+ 	* config/arc/arc.c (arc_expand_movmem): Likewise.
+ 	* config/arm/arm.c (arm_expand_divmod_libfunc): Likewise.
+ 	* config/i386/i386.c (ix86_get_mask_mode): Likewise.
+ 	* config/s390/s390.c (s390_expand_insv): Likewise.
+ 	* config/sparc/sparc.c (assign_int_registers): Likewise.
+ 	* config/spu/spu.c (spu_function_value): Likewise.
+ 	(spu_function_arg): Likewise.
+ 	* coverage.c (get_gcov_type): Likewise.
+ 	(get_gcov_unsigned_t): Likewise.
+ 	* dse.c (find_shift_sequence): Likewise.
+ 	* expmed.c (store_bit_field_1): Likewise.
+ 	* expr.c (convert_move): Likewise.
+ 	(store_field): Likewise.
+ 	* internal-fn.c (expand_arith_overflow): Likewise.
+ 	* optabs-query.c (get_best_extraction_insn): Likewise.
+ 	* optabs.c (expand_twoval_binop_libfunc): Likewise.
+ 	* stor-layout.c (layout_type): Likewise.
+ 	(initialize_sizetypes): Likewise.
+ 	* targhooks.c (default_get_mask_mode): Likewise.
+ 	* tree-ssa-loop-manip.c (canonicalize_loop_ivs): Likewise.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* machmode.h (opt_mode::else_blk): New function.
+ 	(int_mode_for_mode): Declare.
+ 	* stor-layout.c (int_mode_for_mode): Return an opt_scalar_int_mode.
+ 	* builtins.c (expand_builtin_signbit): Adjust for new int_mode_for_mode
+ 	return type.
+ 	* cfgexpand.c (expand_debug_expr): Likewise.
+ 	* combine.c (gen_lowpart_or_truncate): Likewise.
+ 	(gen_lowpart_for_combine): Likewise.
+ 	* config/aarch64/aarch64.c (aarch64_emit_approx_sqrt): Likewise.
+ 	* config/avr/avr.c (avr_to_int_mode): Likewise.
+ 	(avr_out_plus_1): Likewise.
+ 	(avr_out_plus): Likewise.
+ 	(avr_out_round): Likewise.
+ 	* config/i386/i386.c (ix86_split_to_parts): Likewise.
+ 	* config/s390/s390.c (s390_expand_vec_compare_cc): Likewise.
+ 	(s390_expand_vcond): Likewise.
+ 	* config/spu/spu.c (spu_split_immediate): Likewise.
+ 	(spu_expand_mov): Likewise.
+ 	* dse.c (get_stored_val): Likewise.
+ 	* expmed.c (store_bit_field_1): Likewise.
+ 	(convert_extracted_bit_field): Use int_mode_for_mode instead of
+ 	int_mode_for_size.
+ 	(extract_bit_field_1): Adjust for new int_mode_for_mode return type.
+ 	(extract_low_bits): Likewise.
+ 	* expr.c (emit_group_load_1): Likewise.  Separate out the BLKmode
+ 	handling rather than repeating the check.
+ 	(emit_group_store): Likewise.
+ 	(emit_move_via_integer): Adjust for new int_mode_for_mode return type.
+ 	* optabs.c (expand_absneg_bit): Likewise.
+ 	(expand_copysign_absneg): Likewise.
+ 	(expand_copysign_bit): Likewise.
+ 	* tree-if-conv.c (ifcvt_can_use_mask_load_store): Likewise.
+ 	* tree-vect-slp.c (vect_transform_slp_perm_load): Likewise.
+ 	* tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise.
+ 	* var-tracking.c (prepare_call_arguments):  Likewise.
+ 	* config/powerpcspe/powerpcspe.c (rs6000_do_expand_vec_perm): Use
+ 	int_mode_for_mode instead of mode_for_size.
+ 	* config/rs6000/rs6000.c (rs6000_do_expand_vec_perm): Likewise.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* machmode.h (int_mode_for_size): New function.
+ 	* builtins.c (set_builtin_user_assembler_name): Use int_mode_for_size
+ 	instead of mode_for_size.
+ 	* calls.c (save_fixed_argument_area): Likewise.  Make use of BLKmode
+ 	explicit.
+ 	* combine.c (expand_field_assignment): Use int_mode_for_size
+ 	instead of mode_for_size.
+ 	(make_extraction): Likewise.
+ 	(simplify_shift_const_1): Likewise.
+ 	(simplify_comparison): Likewise.
+ 	* dojump.c (do_jump): Likewise.
+ 	* dwarf2out.c (mem_loc_descriptor): Likewise.
+ 	* emit-rtl.c (init_derived_machine_modes): Likewise.
+ 	* expmed.c (flip_storage_order): Likewise.
+ 	(convert_extracted_bit_field): Likewise.
+ 	* expr.c (copy_blkmode_from_reg): Likewise.
+ 	* graphite-isl-ast-to-gimple.c (max_mode_int_precision): Likewise.
+ 	* internal-fn.c (expand_mul_overflow): Likewise.
+ 	* lower-subreg.c (simple_move): Likewise.
+ 	* optabs-libfuncs.c (init_optabs): Likewise.
+ 	* simplify-rtx.c (simplify_unary_operation_1): Likewise.
+ 	* tree.c (vector_type_mode): Likewise.
+ 	* tree-ssa-strlen.c (handle_builtin_memcmp): Likewise.
+ 	* tree-vect-data-refs.c (vect_lanes_optab_supported_p): Likewise.
+ 	* tree-vect-generic.c (expand_vector_parallel): Likewise.
+ 	* tree-vect-stmts.c (vectorizable_load): Likewise.
+ 	(vectorizable_store): Likewise.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* coretypes.h (pod_mode): New type.
+ 	(scalar_int_mode_pod): New typedef.
+ 	* machmode.h (pod_mode): New class.
+ 	(int_n_data_t::m): Change type to scalar_int_mode_pod.
+ 	* genmodes.c (emit_mode_int_n): Update accordingly.
+ 	* lower-subreg.h (target_lower_subreg): Change type to
+ 	scalar_int_mode_pod.
+ 	* gdbhooks.py (build_pretty_printer): Handle pod_mode and
+ 	scalar_int_mode_pod.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* config/powerpcspe/powerpcspe.h (rs6000_pmode): Change type from
+ 	machine_mode to scalar_int_mode.
+ 	* config/powerpcspe/powerpcspe.c (rs6000_pmode): Likewise.
+ 	(rs6000_option_override_internal): Remove cast to int.
+ 	* config/rs6000/rs6000.h (rs6000_pmode): Change type from
+ 	machine_mode to scalar_int_mode.
+ 	* config/rs6000/rs6000.c (rs6000_pmode): Likewise.
+ 	(rs6000_option_override_internal): Remove cast to int.
+ 	* config/s390/s390.h (Pmode): Remove cast to machine_mode.
+ 	* config/epiphany/epiphany.h (RTX_OK_FOR_OFFSET_P): Add cast
+ 	to machine_mode.
+ 	* config/s390/s390.c (s390_expand_builtin): Likewise.
+ 	* coretypes.h (scalar_int_mode): New type.
+ 	(opt_scalar_int_mode): New typedef.
+ 	* machmode.h (scalar_int_mode): New class.
+ 	(scalar_int_mode::includes_p): New function.
+ 	(byte_mode): Change type to scalar_int_mode.
+ 	(word_mode): Likewise.
+ 	(ptr_mode): Likewise.
+ 	* emit-rtl.c (byte_mode): Likewise.
+ 	(word_mode): Likewise.
+ 	(ptr_mode): Likewise.
+ 	(init_derived_machine_modes): Update accordingly.
+ 	* genmodes.c (get_mode_class): Return scalar_int_mode for MODE_INT
+ 	and MODE_PARTIAL_INT.
+ 	* gdbhooks.py (build_pretty_printer): Handle scalar_int_mode and
+ 	opt_scalar_int_mode.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* target.def (libgcc_floating_mode_supported_p): Take a
+ 	scalar_float_mode.
+ 	* doc/tm.texi: Regenerate.
+ 	* targhooks.h (default_libgcc_floating_mode_supported_p): Take a
+ 	scalar_float_mode.
+ 	* targhooks.c (default_libgcc_floating_mode_supported_p): Likewise.
+ 	* config/aarch64/aarch64.c (aarch64_libgcc_floating_mode_supported_p):
+ 	Likewise.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* target.def (default_floatn_mode): Return an opt_scalar_float_mode.
+ 	* doc/tm.texi: Regenerate.
+ 	* config/arm/arm.c (arm_floatn_mode): Return an opt_scalar_float_mode.
+ 	* config/powerpcspe/powerpcspe.c (rs6000_floatn_mode): Likewise.
+ 	* config/rs6000/rs6000.c (rs6000_floatn_mode): Likewise.
+ 	* targhooks.h (default_floatn_mode): Likewise.
+ 	* targhooks.c (default_floatn_mode): Likewise.
+ 	* tree.c (build_common_tree_nodes): Update accordingly.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* machmode.h (mode_iterator::start): Provide overload for opt_modes.
+ 	(mode_iterator::iterate_p): Likewise.
+ 	(mode_iterator::get_wider): Likewise.
+ 	* expr.c (init_expr_target): Use opt_scalar_float_mode.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* coretypes.h (opt_scalar_float_mode): New typedef.
+ 	* machmode.h (float_mode_for_size): New function.
+ 	* emit-rtl.c (double_mode): Delete.
+ 	(init_emit_once): Use float_mode_for_size.
+ 	* stor-layout.c (layout_type): Likewise.
+ 	* gdbhooks.py (build_pretty_printer): Handle opt_scalar_float_mode.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* output.h (assemble_real): Take a scalar_float_mode.
+ 	* config/arm/arm.c (arm_assemble_integer): Update accordingly.
+ 	* config/arm/arm.md (consttable_4): Likewise.
+ 	(consttable_8): Likewise.
+ 	(consttable_16): Likewise.
+ 	* config/mips/mips.md (consttable_float): Likewise.
+ 	* config/s390/s390.c (s390_output_pool_entry): Likewise.
+ 	* varasm.c (assemble_real): Take a scalar_float_mode.
+ 	(output_constant_pool_2): Update accordingly.
+ 	(output_constant): Likewise.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* tree.h (SCALAR_FLOAT_TYPE_MODE): New macro.
+ 	* builtins.c (expand_builtin_signbit): Use it instead of TYPE_MODE.
+ 	* fold-const.c (fold_convert_const_real_from_fixed): Likewise.
+ 	(native_encode_real): Likewise.
+ 	(native_interpret_real): Likewise.
+ 	* hsa-brig.c (emit_immediate_scalar_to_buffer): Likewise.
+ 	* tree-vrp.c (simplify_float_conversion_using_ranges): Likewise.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* optabs-libfuncs.c (gen_trunc_conv_libfunc): Use is_a
+ 	<scalar_float_mode>.  Simplify.
+ 	(gen_extend_conv_libfunc): Likewise.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* coretypes.h (scalar_float_mode): New type.
+ 	* machmode.h (mode_traits::from_int): Use machine_mode if
+ 	USE_ENUM_MODES is defined.
+ 	(is_a): New function.
+ 	(as_a): Likewise.
+ 	(dyn_cast): Likewise.
+ 	(scalar_float_mode): New class.
+ 	(scalar_float_mode::includes_p): New function.
+ 	(is_float_mode): Likewise.
+ 	* gdbhooks.py (MachineModePrinter): New class.
+ 	(build_pretty_printer): Use it for scalar_float_mode.
+ 	* real.h (FLOAT_MODE_FORMAT): Use as_a <scalar_float_mode>.
+ 	(format_helper::format_helper): Turn into a template.
+ 	* genmodes.c (get_mode_class): New function.
+ 	(emit_insn_modes_h): Give modes the class returned by get_mode_class,
+ 	or machine_mode if none.
+ 	* config/aarch64/aarch64.c (aarch64_simd_valid_immediate): Use
+ 	as_a <scalar_float_mode>.
+ 	* dwarf2out.c (mem_loc_descriptor): Likewise.
+ 	(insert_float): Likewise.
+ 	(add_const_value_attribute): Likewise.
+ 	* simplify-rtx.c (simplify_immed_subreg): Likewise.
+ 	* optabs.c (expand_absneg_bit): Take a scalar_float_mode.
+ 	(expand_unop): Update accordingly.
+ 	(expand_abs_nojump): Likewise.
+ 	(expand_copysign_absneg): Take a scalar_float_mode.
+ 	(expand_copysign_bit): Likewise.
+ 	(expand_copysign): Update accordingly.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* coretypes.h (opt_mode): New class.
+ 	* machmode.h (opt_mode): Likewise.
+ 	(opt_mode::else_void): New function.
+ 	(opt_mode::require): Likewise.
+ 	(opt_mode::exists): Likewise.
+ 	(GET_MODE_WIDER_MODE): Turn into a function and return an opt_mode.
+ 	(GET_MODE_2XWIDER_MODE): Likewise.
+ 	(mode_iterator::get_wider): Update accordingly.
+ 	(mode_iterator::get_2xwider): Likewise.
+ 	(mode_iterator::get_known_wider): Likewise, turning into a template.
+ 	* combine.c (make_extraction): Update use of GET_MODE_WIDER_MODE,
+ 	forcing a wider mode to exist.
+ 	* config/cr16/cr16.h (LONG_REG_P): Likewise.
+ 	* rtlanal.c (init_num_sign_bit_copies_in_rep): Likewise.
+ 	* config/c6x/c6x.c (c6x_rtx_costs): Update use of
+ 	GET_MODE_2XWIDER_MODE, forcing a wider mode to exist.
+ 	* lower-subreg.c (init_lower_subreg): Likewise.
+ 	* optabs-libfuncs.c (init_sync_libfuncs_1): Likewise, but not
+ 	on the final iteration.
+ 	* config/i386/i386.c (ix86_expand_set_or_movmem): Check whether
+ 	a wider mode exists before asking for a move pattern.
+ 	(get_mode_wider_vector): Update use of GET_MODE_WIDER_MODE,
+ 	forcing a wider mode to exist.
+ 	(expand_vselect_vconcat): Update use of GET_MODE_2XWIDER_MODE,
+ 	returning false if no such mode exists.
+ 	* config/ia64/ia64.c (expand_vselect_vconcat): Likewise.
+ 	* config/mips/mips.c (mips_expand_vselect_vconcat): Likewise.
+ 	* expmed.c (init_expmed_one_mode): Update use of GET_MODE_WIDER_MODE.
+ 	Avoid checking for a MODE_INT if we already know the mode is not a
+ 	SCALAR_INT_MODE_P.
+ 	(extract_high_half): Update use of GET_MODE_WIDER_MODE,
+ 	forcing a wider mode to exist.
+ 	(expmed_mult_highpart_optab): Likewise.
+ 	(expmed_mult_highpart): Likewise.
+ 	* expr.c (expand_expr_real_2): Update use of GET_MODE_WIDER_MODE,
+ 	using else_void.
+ 	* lto-streamer-in.c (lto_input_mode_table): Likewise.
+ 	* optabs-query.c (find_widening_optab_handler_and_mode): Likewise.
+ 	* stor-layout.c (bit_field_mode_iterator::next_mode): Likewise.
+ 	* internal-fn.c (expand_mul_overflow): Update use of
+ 	GET_MODE_2XWIDER_MODE.
+ 	* omp-low.c (omp_clause_aligned_alignment): Likewise.
+ 	* tree-ssa-math-opts.c (convert_mult_to_widen): Update use of
+ 	GET_MODE_WIDER_MODE.
+ 	(convert_plusminus_to_widen): Likewise.
+ 	* tree-switch-conversion.c (array_value_type): Likewise.
+ 	* var-tracking.c (emit_note_insn_var_location): Likewise.
+ 	* tree-vrp.c (simplify_float_conversion_using_ranges): Likewise.
+ 	Return false inside rather than outside the loop if no wider mode
+ 	exists
+ 	* optabs.c (expand_binop): Update use of GET_MODE_WIDER_MODE
+ 	and GET_MODE_2XWIDER_MODE
+ 	(can_compare_p): Use else_void.
+ 	* gdbhooks.py (OptMachineModePrinter): New class.
+ 	(build_pretty_printer): Use it for opt_mode.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* tree-switch-conversion.c (array_value_type): Only read TYPE_MODE
+ 	once.  Use get_narrowest_mode instead of GET_CLASS_NARROWEST_MODE.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* machmode.h (mode_traits): New structure.
+ 	(get_narrowest_mode): New function.
+ 	(mode_iterator::start): Likewise.
+ 	(mode_iterator::iterate_p): Likewise.
+ 	(mode_iterator::get_wider): Likewise.
+ 	(mode_iterator::get_known_wider): Likewise.
+ 	(mode_iterator::get_2xwider): Likewise.
+ 	(FOR_EACH_MODE_IN_CLASS): New mode iterator.
+ 	(FOR_EACH_MODE): Likewise.
+ 	(FOR_EACH_MODE_FROM): Likewise.
+ 	(FOR_EACH_MODE_UNTIL): Likewise.
+ 	(FOR_EACH_WIDER_MODE): Likewise.
+ 	(FOR_EACH_2XWIDER_MODE): Likewise.
+ 	* builtins.c (expand_builtin_strlen): Use new mode iterators.
+ 	* combine.c (simplify_comparison): Likewise
+ 	* config/i386/i386.c (type_natural_mode): Likewise.
+ 	* cse.c (cse_insn): Likewise.
+ 	* dse.c (find_shift_sequence): Likewise.
+ 	* emit-rtl.c (init_derived_machine_modes): Likewise.
+ 	(init_emit_once): Likewise.
+ 	* explow.c (hard_function_value): Likewise.
+ 	* expmed.c (extract_fixed_bit_field_1): Likewise.
+ 	(extract_bit_field_1): Likewise.
+ 	(expand_divmod): Likewise.
+ 	(emit_store_flag_1): Likewise.
+ 	* expr.c (init_expr_target): Likewise.
+ 	(convert_move): Likewise.
+ 	(alignment_for_piecewise_move): Likewise.
+ 	(widest_int_mode_for_size): Likewise.
+ 	(emit_block_move_via_movmem): Likewise.
+ 	(copy_blkmode_to_reg): Likewise.
+ 	(set_storage_via_setmem): Likewise.
+ 	(compress_float_constant): Likewise.
+ 	* omp-low.c (omp_clause_aligned_alignment): Likewise.
+ 	* optabs-query.c (get_best_extraction_insn): Likewise.
+ 	* optabs.c (expand_binop): Likewise.
+ 	(expand_twoval_unop): Likewise.
+ 	(expand_twoval_binop): Likewise.
+ 	(widen_leading): Likewise.
+ 	(widen_bswap): Likewise.
+ 	(expand_parity): Likewise.
+ 	(expand_unop): Likewise.
+ 	(prepare_cmp_insn): Likewise.
+ 	(prepare_float_lib_cmp): Likewise.
+ 	(expand_float): Likewise.
+ 	(expand_fix): Likewise.
+ 	(expand_sfix_optab): Likewise.
+ 	* postreload.c (move2add_use_add2_insn): Likewise.
+ 	* reg-stack.c (reg_to_stack): Likewise.
+ 	* reginfo.c (choose_hard_reg_mode): Likewise.
+ 	* rtlanal.c (init_num_sign_bit_copies_in_rep): Likewise.
+ 	* stor-layout.c (mode_for_size): Likewise.
+ 	(smallest_mode_for_size): Likewise.
+ 	(mode_for_vector): Likewise.
+ 	(finish_bitfield_representative): Likewise.
+ 	* tree-ssa-math-opts.c (target_supports_divmod_p): Likewise.
+ 	* tree-vect-generic.c (type_for_widest_vector_mode): Likewise.
+ 	* tree-vect-stmts.c (vectorizable_conversion): Likewise.
+ 	* var-tracking.c (prepare_call_arguments): Likewise.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* genconditions.c (write_header): Add a "#define USE_ENUM_MODES".
+ 	* genmodes.c (emit_insn_modes_h): Define FOOmode to E_FOOmode if
+ 	USE_ENUM_MODES is defined and to ((void) 0, E_FOOmode) otherwise.
+ 	* machmode.h (mode_size): Move earlier in file.
+ 	(mode_precision): Likewise.
+ 	(mode_inner): Likewise.
+ 	(mode_nunits): Likewise.
+ 	(mode_unit_size): Likewise.
+ 	(unit_unit_precision): Likewise.
+ 	(mode_wider): Likewise.
+ 	(mode_2xwider): Likewise.
+ 	(machine_mode): New class.
+ 	(mode_to_bytes): New function.
+ 	(mode_to_bits): Likewise.
+ 	(mode_to_precision): Likewise.
+ 	(mode_to_inner): Likewise.
+ 	(mode_to_unit_size): Likewise.
+ 	(mode_to_unit_precision): Likewise.
+ 	(mode_to_nunits): Likewise.
+ 	(GET_MODE_SIZE): Use mode_to_bytes.
+ 	(GET_MODE_BITSIZE): Use mode_to_bits.
+ 	(GET_MODE_PRECISION): Use mode_to_precision.
+ 	(GET_MODE_INNER): Use mode_to_inner.
+ 	(GET_MODE_UNIT_SIZE): Use mode_to_unit_size.
+ 	(GET_MODE_UNIT_PRECISION): Use mode_to_unit_precision.
+ 	(GET_MODE_NUNITS): Use mode_to_nunits.
+ 	* system.h (ALWAYS_INLINE): New macro.
+ 	* config/powerpcspe/powerpcspe-c.c
+ 	(altivec_resolve_overloaded_builtin): Use machine_mode instead of
+ 	int for arg1_mode and arg2_mode.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* config/aarch64/aarch64-builtins.c (aarch64_simd_builtin_std_type):
+ 	Prefix mode names with E_ in case statements.
+ 	* config/aarch64/aarch64-elf.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
+ 	* config/aarch64/aarch64.c (aarch64_split_simd_combine): Likewise.
+ 	(aarch64_split_simd_move): Likewise.
+ 	(aarch64_gen_storewb_pair): Likewise.
+ 	(aarch64_gen_loadwb_pair): Likewise.
+ 	(aarch64_gen_store_pair): Likewise.
+ 	(aarch64_gen_load_pair): Likewise.
+ 	(aarch64_get_condition_code_1): Likewise.
+ 	(aarch64_constant_pool_reload_icode): Likewise.
+ 	(get_rsqrte_type): Likewise.
+ 	(get_rsqrts_type): Likewise.
+ 	(get_recpe_type): Likewise.
+ 	(get_recps_type): Likewise.
+ 	(aarch64_gimplify_va_arg_expr): Likewise.
+ 	(aarch64_simd_container_mode): Likewise.
+ 	(aarch64_emit_load_exclusive): Likewise.
+ 	(aarch64_emit_store_exclusive): Likewise.
+ 	(aarch64_expand_compare_and_swap): Likewise.
+ 	(aarch64_gen_atomic_cas): Likewise.
+ 	(aarch64_emit_bic): Likewise.
+ 	(aarch64_emit_atomic_swap): Likewise.
+ 	(aarch64_emit_atomic_load_op): Likewise.
+ 	(aarch64_evpc_trn): Likewise.
+ 	(aarch64_evpc_uzp): Likewise.
+ 	(aarch64_evpc_zip): Likewise.
+ 	(aarch64_evpc_ext): Likewise.
+ 	(aarch64_evpc_rev): Likewise.
+ 	(aarch64_evpc_dup): Likewise.
+ 	(aarch64_gen_ccmp_first): Likewise.
+ 	(aarch64_gen_ccmp_next): Likewise.
+ 	* config/alpha/alpha.c (alpha_scalar_mode_supported_p): Likewise.
+ 	(alpha_emit_xfloating_libcall): Likewise.
+ 	(emit_insxl): Likewise.
+ 	(alpha_arg_type): Likewise.
+ 	* config/arc/arc.c (arc_vector_mode_supported_p): Likewise.
+ 	(arc_preferred_simd_mode): Likewise.
+ 	(arc_secondary_reload): Likewise.
+ 	(get_arc_condition_code): Likewise.
+ 	(arc_print_operand): Likewise.
+ 	(arc_legitimate_constant_p): Likewise.
+ 	* config/arc/arc.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
+ 	* config/arc/arc.md (casesi_load): Likewise.
+ 	(casesi_compact_jump): Likewise.
+ 	* config/arc/predicates.md (proper_comparison_operator): Likewise.
+ 	(cc_use_register): Likewise.
+ 	* config/arm/aout.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
+ 	* config/arm/arm-builtins.c (arm_simd_builtin_std_type): Likewise.
+ 	(arm_init_iwmmxt_builtins): Likewise.
+ 	* config/arm/arm.c (thumb1_size_rtx_costs): Likewise.
+ 	(neon_expand_vector_init): Likewise.
+ 	(arm_attr_length_move_neon): Likewise.
+ 	(maybe_get_arm_condition_code): Likewise.
+ 	(arm_emit_vector_const): Likewise.
+ 	(arm_preferred_simd_mode): Likewise.
+ 	(arm_output_iwmmxt_tinsr): Likewise.
+ 	(thumb1_output_casesi): Likewise.
+ 	(thumb2_output_casesi): Likewise.
+ 	(arm_emit_load_exclusive): Likewise.
+ 	(arm_emit_store_exclusive): Likewise.
+ 	(arm_expand_compare_and_swap): Likewise.
+ 	(arm_evpc_neon_vuzp): Likewise.
+ 	(arm_evpc_neon_vzip): Likewise.
+ 	(arm_evpc_neon_vrev): Likewise.
+ 	(arm_evpc_neon_vtrn): Likewise.
+ 	(arm_evpc_neon_vext): Likewise.
+ 	(arm_validize_comparison): Likewise.
+ 	* config/arm/neon.md (neon_vc<cmp_op><mode>): Likewise.
+ 	* config/avr/avr-c.c (avr_resolve_overloaded_builtin): Likewise.
+ 	* config/avr/avr.c (avr_rtx_costs_1): Likewise.
+ 	* config/c6x/c6x.c (c6x_vector_mode_supported_p): Likewise.
+ 	(c6x_preferred_simd_mode): Likewise.
+ 	* config/epiphany/epiphany.c (get_epiphany_condition_code): Likewise.
+ 	(epiphany_rtx_costs): Likewise.
+ 	* config/epiphany/predicates.md (proper_comparison_operator):
+ 	Likewise.
+ 	* config/frv/frv.c (condexec_memory_operand): Likewise.
+ 	(frv_emit_move): Likewise.
+ 	(output_move_single): Likewise.
+ 	(output_condmove_single): Likewise.
+ 	(frv_hard_regno_mode_ok): Likewise.
+ 	(frv_matching_accg_mode): Likewise.
+ 	* config/h8300/h8300.c (split_adds_subs): Likewise.
+ 	(h8300_rtx_costs): Likewise.
+ 	(h8300_print_operand): Likewise.
+ 	(compute_mov_length): Likewise.
+ 	(output_logical_op): Likewise.
+ 	(compute_logical_op_length): Likewise.
+ 	(compute_logical_op_cc): Likewise.
+ 	(h8300_shift_needs_scratch_p): Likewise.
+ 	(output_a_shift): Likewise.
+ 	(compute_a_shift_length): Likewise.
+ 	(compute_a_shift_cc): Likewise.
+ 	(expand_a_rotate): Likewise.
+ 	(output_a_rotate): Likewise.
+ 	* config/i386/i386.c (classify_argument): Likewise.
+ 	(function_arg_advance_32): Likewise.
+ 	(function_arg_32): Likewise.
+ 	(function_arg_64): Likewise.
+ 	(function_value_64): Likewise.
+ 	(ix86_gimplify_va_arg): Likewise.
+ 	(ix86_legitimate_constant_p): Likewise.
+ 	(put_condition_code): Likewise.
+ 	(split_double_mode): Likewise.
+ 	(ix86_avx256_split_vector_move_misalign): Likewise.
+ 	(ix86_expand_vector_logical_operator): Likewise.
+ 	(ix86_split_idivmod): Likewise.
+ 	(ix86_expand_adjust_ufix_to_sfix_si): Likewise.
+ 	(ix86_build_const_vector): Likewise.
+ 	(ix86_build_signbit_mask): Likewise.
+ 	(ix86_match_ccmode): Likewise.
+ 	(ix86_cc_modes_compatible): Likewise.
+ 	(ix86_expand_branch): Likewise.
+ 	(ix86_expand_sse_cmp): Likewise.
+ 	(ix86_expand_sse_movcc): Likewise.
+ 	(ix86_expand_int_sse_cmp): Likewise.
+ 	(ix86_expand_vec_perm_vpermi2): Likewise.
+ 	(ix86_expand_vec_perm): Likewise.
+ 	(ix86_expand_sse_unpack): Likewise.
+ 	(ix86_expand_int_addcc): Likewise.
+ 	(ix86_split_to_parts): Likewise.
+ 	(ix86_vectorize_builtin_gather): Likewise.
+ 	(ix86_vectorize_builtin_scatter): Likewise.
+ 	(avx_vpermilp_parallel): Likewise.
+ 	(inline_memory_move_cost): Likewise.
+ 	(ix86_tieable_integer_mode_p): Likewise.
+ 	(x86_maybe_negate_const_int): Likewise.
+ 	(ix86_expand_vector_init_duplicate): Likewise.
+ 	(ix86_expand_vector_init_one_nonzero): Likewise.
+ 	(ix86_expand_vector_init_one_var): Likewise.
+ 	(ix86_expand_vector_init_concat): Likewise.
+ 	(ix86_expand_vector_init_interleave): Likewise.
+ 	(ix86_expand_vector_init_general): Likewise.
+ 	(ix86_expand_vector_set): Likewise.
+ 	(ix86_expand_vector_extract): Likewise.
+ 	(emit_reduc_half): Likewise.
+ 	(ix86_emit_i387_round): Likewise.
+ 	(ix86_mangle_type): Likewise.
+ 	(ix86_expand_round_sse4): Likewise.
+ 	(expand_vec_perm_blend): Likewise.
+ 	(canonicalize_vector_int_perm): Likewise.
+ 	(ix86_expand_vec_one_operand_perm_avx512): Likewise.
+ 	(expand_vec_perm_1): Likewise.
+ 	(expand_vec_perm_interleave3): Likewise.
+ 	(expand_vec_perm_even_odd_pack): Likewise.
+ 	(expand_vec_perm_even_odd_1): Likewise.
+ 	(expand_vec_perm_broadcast_1): Likewise.
+ 	(ix86_vectorize_vec_perm_const_ok): Likewise.
+ 	(ix86_expand_vecop_qihi): Likewise.
+ 	(ix86_expand_mul_widen_hilo): Likewise.
+ 	(ix86_expand_sse2_abs): Likewise.
+ 	(ix86_expand_pextr): Likewise.
+ 	(ix86_expand_pinsr): Likewise.
+ 	(ix86_preferred_simd_mode): Likewise.
+ 	(ix86_simd_clone_compute_vecsize_and_simdlen): Likewise.
+ 	* config/i386/sse.md (*andnot<mode>3): Likewise.
+ 	(<mask_codefor><code><mode>3<mask_name>): Likewise.
+ 	(*<code><mode>3): Likewise.
+ 	* config/ia64/ia64.c (ia64_expand_vecint_compare): Likewise.
+ 	(ia64_expand_atomic_op): Likewise.
+ 	(ia64_arg_type): Likewise.
+ 	(ia64_mode_to_int): Likewise.
+ 	(ia64_scalar_mode_supported_p): Likewise.
+ 	(ia64_vector_mode_supported_p): Likewise.
+ 	(expand_vec_perm_broadcast): Likewise.
+ 	* config/iq2000/iq2000.c (iq2000_move_1word): Likewise.
+ 	(iq2000_function_arg_advance): Likewise.
+ 	(iq2000_function_arg): Likewise.
+ 	* config/m32c/m32c.c (m32c_preferred_reload_class): Likewise.
+ 	* config/m68k/m68k.c (output_dbcc_and_branch): Likewise.
+ 	(m68k_libcall_value): Likewise.
+ 	(m68k_function_value): Likewise.
+ 	(sched_attr_op_type): Likewise.
+ 	* config/mcore/mcore.c (mcore_output_move): Likewise.
+ 	* config/microblaze/microblaze.c (microblaze_function_arg_advance):
+ 	Likewise.
+ 	(microblaze_function_arg): Likewise.
+ 	* config/mips/mips.c (mips16_build_call_stub): Likewise.
+ 	(mips_print_operand): Likewise.
+ 	(mips_mode_ok_for_mov_fmt_p): Likewise.
+ 	(mips_vector_mode_supported_p): Likewise.
+ 	(mips_preferred_simd_mode): Likewise.
+ 	(mips_expand_vpc_loongson_even_odd): Likewise.
+ 	(mips_expand_vec_unpack): Likewise.
+ 	(mips_expand_vi_broadcast): Likewise.
+ 	(mips_expand_vector_init): Likewise.
+ 	(mips_expand_vec_reduc): Likewise.
+ 	(mips_expand_msa_cmp): Likewise.
+ 	* config/mips/mips.md (casesi_internal_mips16_<mode>): Likewise.
+ 	* config/mn10300/mn10300.c (mn10300_print_operand): Likewise.
+ 	(cc_flags_for_mode): Likewise.
+ 	* config/msp430/msp430.c (msp430_print_operand): Likewise.
+ 	* config/nds32/nds32-md-auxiliary.c (nds32_mem_format): Likewise.
+ 	(nds32_output_casesi_pc_relative): Likewise.
+ 	* config/nds32/nds32.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
+ 	* config/nvptx/nvptx.c (nvptx_ptx_type_from_mode): Likewise.
+ 	(nvptx_gen_unpack): Likewise.
+ 	(nvptx_gen_pack): Likewise.
+ 	(nvptx_gen_shuffle): Likewise.
+ 	(nvptx_gen_wcast): Likewise.
+ 	(nvptx_preferred_simd_mode): Likewise.
+ 	* config/pa/pa.c (pa_secondary_reload): Likewise.
+ 	* config/pa/predicates.md (base14_operand): Likewise.
+ 	* config/powerpcspe/powerpcspe-c.c
+ 	(altivec_resolve_overloaded_builtin): Likewise.
+ 	* config/powerpcspe/powerpcspe.c (rs6000_setup_reg_addr_masks):
+ 	Likewise.
+ 	(rs6000_preferred_simd_mode): Likewise.
+ 	(output_vec_const_move): Likewise.
+ 	(rs6000_expand_vector_extract): Likewise.
+ 	(rs6000_split_vec_extract_var): Likewise.
+ 	(reg_offset_addressing_ok_p): Likewise.
+ 	(rs6000_legitimate_offset_address_p): Likewise.
+ 	(rs6000_legitimize_address): Likewise.
+ 	(rs6000_emit_set_const): Likewise.
+ 	(rs6000_const_vec): Likewise.
+ 	(rs6000_emit_move): Likewise.
+ 	(spe_build_register_parallel): Likewise.
+ 	(rs6000_darwin64_record_arg_recurse): Likewise.
+ 	(swap_selector_for_mode): Likewise.
+ 	(spe_init_builtins): Likewise.
+ 	(paired_init_builtins): Likewise.
+ 	(altivec_init_builtins): Likewise.
+ 	(do_load_for_compare): Likewise.
+ 	(rs6000_generate_compare): Likewise.
+ 	(rs6000_expand_float128_convert): Likewise.
+ 	(emit_load_locked): Likewise.
+ 	(emit_store_conditional): Likewise.
+ 	(rs6000_output_function_epilogue): Likewise.
+ 	(rs6000_handle_altivec_attribute): Likewise.
+ 	(rs6000_function_value): Likewise.
+ 	(emit_fusion_gpr_load): Likewise.
+ 	(emit_fusion_p9_load): Likewise.
+ 	(emit_fusion_p9_store): Likewise.
+ 	* config/powerpcspe/predicates.md (easy_fp_constant): Likewise.
+ 	(fusion_gpr_mem_load): Likewise.
+ 	(fusion_addis_mem_combo_load): Likewise.
+ 	(fusion_addis_mem_combo_store): Likewise.
+ 	* config/rs6000/predicates.md (easy_fp_constant): Likewise.
+ 	(fusion_gpr_mem_load): Likewise.
+ 	(fusion_addis_mem_combo_load): Likewise.
+ 	(fusion_addis_mem_combo_store): Likewise.
+ 	* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
+ 	Likewise.
+ 	* config/rs6000/rs6000-string.c (do_load_for_compare): Likewise.
+ 	* config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): Likewise.
+ 	(rs6000_preferred_simd_mode): Likewise.
+ 	(output_vec_const_move): Likewise.
+ 	(rs6000_expand_vector_extract): Likewise.
+ 	(rs6000_split_vec_extract_var): Likewise.
+ 	(reg_offset_addressing_ok_p): Likewise.
+ 	(rs6000_legitimate_offset_address_p): Likewise.
+ 	(rs6000_legitimize_address): Likewise.
+ 	(rs6000_emit_set_const): Likewise.
+ 	(rs6000_const_vec): Likewise.
+ 	(rs6000_emit_move): Likewise.
+ 	(rs6000_darwin64_record_arg_recurse): Likewise.
+ 	(swap_selector_for_mode): Likewise.
+ 	(paired_init_builtins): Likewise.
+ 	(altivec_init_builtins): Likewise.
+ 	(rs6000_expand_float128_convert): Likewise.
+ 	(emit_load_locked): Likewise.
+ 	(emit_store_conditional): Likewise.
+ 	(rs6000_output_function_epilogue): Likewise.
+ 	(rs6000_handle_altivec_attribute): Likewise.
+ 	(rs6000_function_value): Likewise.
+ 	(emit_fusion_gpr_load): Likewise.
+ 	(emit_fusion_p9_load): Likewise.
+ 	(emit_fusion_p9_store): Likewise.
+ 	* config/rx/rx.c (rx_gen_move_template): Likewise.
+ 	(flags_from_mode): Likewise.
+ 	* config/s390/predicates.md (s390_alc_comparison): Likewise.
+ 	(s390_slb_comparison): Likewise.
+ 	* config/s390/s390.c (s390_handle_vectorbool_attribute): Likewise.
+ 	(s390_vector_mode_supported_p): Likewise.
+ 	(s390_cc_modes_compatible): Likewise.
+ 	(s390_match_ccmode_set): Likewise.
+ 	(s390_canonicalize_comparison): Likewise.
+ 	(s390_emit_compare_and_swap): Likewise.
+ 	(s390_branch_condition_mask): Likewise.
+ 	(s390_rtx_costs): Likewise.
+ 	(s390_secondary_reload): Likewise.
+ 	(__SECONDARY_RELOAD_CASE): Likewise.
+ 	(s390_expand_cs): Likewise.
+ 	(s390_preferred_simd_mode): Likewise.
+ 	* config/s390/vx-builtins.md (vec_packsu_u<mode>): Likewise.
+ 	* config/sh/sh.c (sh_print_operand): Likewise.
+ 	(dump_table): Likewise.
+ 	(sh_secondary_reload): Likewise.
+ 	* config/sh/sh.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
+ 	* config/sh/sh.md (casesi_worker_1): Likewise.
+ 	(casesi_worker_2): Likewise.
+ 	* config/sparc/predicates.md (icc_comparison_operator): Likewise.
+ 	(fcc_comparison_operator): Likewise.
+ 	* config/sparc/sparc.c (sparc_expand_move): Likewise.
+ 	(emit_soft_tfmode_cvt): Likewise.
+ 	(sparc_preferred_simd_mode): Likewise.
+ 	(output_cbranch): Likewise.
+ 	(sparc_print_operand): Likewise.
+ 	(sparc_expand_vec_perm_bmask): Likewise.
+ 	(vector_init_bshuffle): Likewise.
+ 	* config/spu/spu.c (spu_scalar_mode_supported_p): Likewise.
+ 	(spu_vector_mode_supported_p): Likewise.
+ 	(spu_expand_insv): Likewise.
+ 	(spu_emit_branch_or_set): Likewise.
+ 	(spu_handle_vector_attribute): Likewise.
+ 	(spu_builtin_splats): Likewise.
+ 	(spu_builtin_extract): Likewise.
+ 	(spu_builtin_promote): Likewise.
+ 	(spu_expand_sign_extend): Likewise.
+ 	* config/tilegx/tilegx.c (tilegx_scalar_mode_supported_p): Likewise.
+ 	(tilegx_simd_int): Likewise.
+ 	* config/tilepro/tilepro.c (tilepro_scalar_mode_supported_p): Likewise.
+ 	(tilepro_simd_int): Likewise.
+ 	* config/v850/v850.c (const_double_split): Likewise.
+ 	(v850_print_operand): Likewise.
+ 	(ep_memory_offset): Likewise.
+ 	* config/vax/vax.c (vax_rtx_costs): Likewise.
+ 	(vax_output_int_move): Likewise.
+ 	(vax_output_int_add): Likewise.
+ 	(vax_output_int_subtract): Likewise.
+ 	* config/visium/predicates.md (visium_branch_operator): Likewise.
+ 	* config/visium/visium.c (rtx_ok_for_offset_p): Likewise.
+ 	(visium_print_operand_address): Likewise.
+ 	* config/visium/visium.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
+ 	* config/xtensa/xtensa.c (xtensa_mem_offset): Likewise.
+ 	(xtensa_expand_conditional_branch): Likewise.
+ 	(xtensa_copy_incoming_a7): Likewise.
+ 	(xtensa_output_literal): Likewise.
+ 	* dfp.c (decimal_real_maxval): Likewise.
+ 	* targhooks.c (default_libgcc_floating_mode_supported_p): Likewise.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* genmodes.c (mode_size_inline): Add an E_ prefix to mode names.
+ 	(mode_nunits_inline): Likewise.
+ 	(mode_inner_inline): Likewise.
+ 	(mode_unit_size_inline): Likewise.
+ 	(mode_unit_precision_inline): Likewise.
+ 	(emit_insn_modes_h): Likewise.  Also emit a #define of the
+ 	unprefixed name.
+ 	(emit_mode_wider): Add an E_ prefix to mode names.
+ 	(emit_mode_complex): Likewise.
+ 	(emit_mode_inner): Likewise.
+ 	(emit_mode_adjustments): Likewise.
+ 	(emit_mode_int_n): Likewise.
+ 	* config/aarch64/aarch64-builtins.c (v8qi_UP, v4hi_UP, v4hf_UP)
+ 	(v2si_UP, v2sf_UP, v1df_UP, di_UP, df_UP, v16qi_UP, v8hi_UP, v8hf_UP)
+ 	(v4si_UP, v4sf_UP, v2di_UP, v2df_UP, ti_UP, oi_UP, ci_UP, xi_UP)
+ 	(si_UP, sf_UP, hi_UP, hf_UP, qi_UP): Likewise.
+ 	(CRC32_BUILTIN, ENTRY): Likewise.
+ 	* config/aarch64/aarch64.c (aarch64_push_regs): Likewise.
+ 	(aarch64_pop_regs): Likewise.
+ 	(aarch64_process_components): Likewise.
+ 	* config/alpha/alpha.c (alpha_emit_conditional_move): Likewise.
+ 	* config/arm/arm-builtins.c (v8qi_UP, v4hi_UP, v4hf_UP, v2si_UP)
+ 	(v2sf_UP, di_UP, v16qi_UP, v8hi_UP, v8hf_UP, v4si_UP, v4sf_UP)
+ 	(v2di_UP, ti_UP, ei_UP, oi_UP, hf_UP, si_UP, void_UP): Likewise.
+ 	* config/arm/arm.c (arm_init_libfuncs): Likewise.
+ 	* config/i386/i386-builtin-types.awk (ix86_builtin_type_vect_mode):
+ 	Likewise.
+ 	* config/i386/i386-builtin.def (pcmpestr): Likewise.
+ 	(pcmpistr): Likewise.
+ 	* config/microblaze/microblaze.c (double_memory_operand): Likewise.
+ 	* config/mmix/mmix.c (mmix_output_condition): Likewise.
+ 	* config/powerpcspe/powerpcspe.c (rs6000_init_hard_regno_mode_ok):
+ 	Likewise.
+ 	* config/rl78/rl78.c (mduc_regs): Likewise.
+ 	* config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Likewise.
+ 	(htm_expand_builtin): Likewise.
+ 	* config/sh/sh.h (REGISTER_NATURAL_MODE): Likewise.
+ 	* config/sparc/sparc.c (emit_save_or_restore_regs): Likewise.
+ 	* config/xtensa/xtensa.c (print_operand): Likewise.
+ 	* expmed.h (NUM_MODE_PARTIAL_INT): Likewise.
+ 	(NUM_MODE_VECTOR_INT): Likewise.
+ 	* genoutput.c (null_operand): Likewise.
+ 	(output_operand_data): Likewise.
+ 	* genrecog.c (print_parameter_value): Likewise.
+ 	* lra.c (debug_operand_data): Likewise.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* dwarf2out.c (scompare_loc_descriptor_wide)
+ 	(scompare_loc_descriptor_narrow): New functions, split out from...
+ 	(scompare_loc_descriptor): ...here.
+ 	* expmed.c (emit_store_flag_int): New function, split out from...
+ 	(emit_store_flag): ...here.
+ 
+ 2017-08-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	* dwarf2out.c (dwarf2out_finish): Remove setting AT_pubnames.
+ 	(dwarf2out_early_finish): Move setting of AT_pubnames from
+ 	early debug output to early finish.
+ 
+ 2017-08-30  Jozef Lawrynowicz  <jozef.l@somniumtech.com>
+ 
+ 	* gcc/config/msp430/msp430.h: Pass -mcode/data-region to the linker
+ 	and -mdata-region to the assembler.
+ 
+ 2017-08-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	* dwarf2out.c (add_dwarf_attr): Check we don't add duplicate
+ 	attributes.
+ 	(gen_subprogram_die): Add DW_AT_object_pointer only early.
+ 	(dwarf2out_early_global_decl): Only generate a DIE for the
+ 	abstract origin if it doesn't already exist or is a declaration DIE.
+ 	(resolve_addr): Do not add the linkage name twice when
+ 	generating a stub DIE for the DW_TAG_GNU_call_site target.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
+ 	Use machine_mode rather than int for arg1_mode.
+ 
+ 2017-08-29  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	PR target/82015
+ 	* config/rs6000/rs6000.c (rs6000_expand_binop_builtin): Insure
+ 	that the second argument of the built-in functions to unpack
+ 	128-bit scalar types to 64-bit values is 0 or 1.  Change to use a
+ 	switch statement instead a lot of if statements.
+ 	* config/rs6000/rs6000.md (unpack<mode>, FMOVE128_VSX iterator):
+ 	Allow 64-bit values to be in Altivec registers as well as
+ 	traditional floating point registers.
+ 	(pack<mode>, FMOVE128_VSX iterator): Likewise.
+ 
+ 2017-08-29  Alexander Monakov  <amonakov@ispras.ru>
+ 
+ 	* ira-costs.c (record_address_regs): Handle both operands of PLUS for
+ 	MAX_REGS_PER_ADDRESS == 1.
+ 
+ 2017-08-29  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.opt (flag_fentry): Do not init to -1.
+ 	* config/i386/i386.c (ix86_option_override_internal): Simplify
+ 	setting of opts->x_flag_entry.
+ 
+ 2017-08-29  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 	    Jakub Jelinek  <jakub@redhat.com>
+ 	    Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/81503
+ 	* gimple-ssa-strength-reduction.c (replace_mult_candidate): Ensure
+ 	folded constant fits in the target type; reorder tests for clarity.
+ 
+ 2017-08-29  Martin Liska  <mliska@suse.cz>
+ 
+ 	* passes.def: Include pass_lower_switch.
+ 	* stmt.c (dump_case_nodes): Remove and move to
+ 	tree-switch-conversion.
+ 	(case_values_threshold): Likewise.
+ 	(expand_switch_as_decision_tree_p): Likewise.
+ 	(emit_case_decision_tree): Likewise.
+ 	(expand_case): Likewise.
+ 	(balance_case_nodes): Likewise.
+ 	(node_has_low_bound): Likewise.
+ 	(node_has_high_bound): Likewise.
+ 	(node_is_bounded): Likewise.
+ 	(emit_case_nodes): Likewise.
+ 	(struct simple_case_node): New struct.
+ 	(add_case_node): Remove.
+ 	(emit_case_dispatch_table): Use vector instead of case_list.
+ 	(reset_out_edges_aux): Remove.
+ 	(compute_cases_per_edge): Likewise.
+ 	(expand_case): Build list of simple_case_node.
+ 	(expand_sjlj_dispatch_table): Use it.
+ 	* tree-switch-conversion.c (struct case_node): Moved from
+ 	stmt.c and adjusted.
+ 	(emit_case_nodes): Likewise.
+ 	(node_has_low_bound): Likewise.
+ 	(node_has_high_bound): Likewise.
+ 	(node_is_bounded): Likewise.
+ 	(case_values_threshold): Likewise.
+ 	(reset_out_edges_aux): Likewise.
+ 	(compute_cases_per_edge): Likewise.
+ 	(add_case_node): Likewise.
+ 	(dump_case_nodes): Likewise.
+ 	(balance_case_nodes): Likewise.
+ 	(expand_switch_as_decision_tree_p): Likewise.
+ 	(emit_jump): Likewise.
+ 	(emit_case_decision_tree): Likewise.
+ 	(try_switch_expansion): Likewise.
+ 	(do_jump_if_equal): Likewise.
+ 	(emit_cmp_and_jump_insns): Likewise.
+ 	(fix_phi_operands_for_edge): New function.
+ 	(record_phi_operand_mapping): Likewise.
+ 	(class pass_lower_switch): New pass.
+ 	(pass_lower_switch::execute): New function.
+ 	(make_pass_lower_switch): Likewise.
+ 	(conditional_probability):
+ 	* timevar.def: Add TV_TREE_SWITCH_LOWERING.
+ 	* tree-pass.h: Add make_pass_lower_switch.
+ 
+ 2017-08-29  Jozef Lawrynowicz  <jozef.l@somniumtech.com>
+ 
+ 	PR target/80993
+ 	* gcc/config/msp430/msp430.c (msp430_attr): Mark interrupt
+ 	handlers as used.
+ 
+ 2017-08-29  Richard Biener  <rguenther@suse.de>
+ 
+ 	* dwarf2out.c (add_dwarf_attr): When checking is enabled verify
+ 	we do not add a DW_AT_inline attribute twice.
+ 	(gen_subprogram_die): Remove code setting DW_AT_inline on
+ 	DECL_ABSTRACT_P nodes.
+ 
+ 2017-08-29  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* gimplify.c (gimplify_call_expr): Copy the nothrow flag to
+ 	calls to internal functions.
+ 	(gimplify_modify_expr): Likewise.
+ 	* tree-call-cdce.c (use_internal_fn): Likewise.
+ 	* tree-ssa-math-opts.c (pass_cse_reciprocals::execute): Likewise.
+ 	(convert_to_divmod): Set the nothrow flag.
+ 	* tree-if-conv.c (predicate_mem_writes):  Likewise.
+ 	* tree-vect-stmts.c (vectorizable_mask_load_store): Likewise.
+ 	(vectorizable_call): Likewise.
+ 	(vectorizable_store): Likewise.
+ 	(vectorizable_load): Likewise.
+ 	* tree-vect-patterns.c (vect_recog_pow_pattern): Likewise.
+ 	(vect_recog_mask_conversion_pattern): Likewise.
+ 
+ 2017-08-29  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR other/39851
+ 	* gcc.c (driver_handle_option): Add new argument.
+ 	* opts-common.c (handle_option): Pass
+ 	target_option_override_hook.
+ 	* opts-global.c (lang_handle_option): Add new option.
+ 	(set_default_handlers):  Add new argument.
+ 	(decode_options): Likewise.
+ 	* opts.c (target_handle_option): Likewise.
+ 	(common_handle_option): Call target_option_override_hook.
+ 	* opts.h (struct cl_option_handler_func): Add hook for
+ 	target option override.
+ 	(struct cl_option_handlers): Likewise.
+ 	(set_default_handlers): Add new argument.
+ 	(decode_options): Likewise.
+ 	(common_handle_option): Likewise.
+ 	(target_handle_option): Likewise.
+ 	* toplev.c (toplev::main): Pass targetm.target_option.override
+ 	hook.
+ 
+ 2017-08-29  Richard Biener  <rguenther@suse.de>
+ 	Dominik Infuehr <dominik.infuehr@theobroma-systems.com>
+ 
+ 	* tree-vect-slp.c (vect_bb_slp_scalar_cost): Properly confine
+ 	life to the active subtree.
+ 
+ 2017-08-28  Jeff Law  <law@redhat.com>
+ 
+ 	* tree-ssa-dom.c (edge_info::record_simple_equiv): Call
+ 	derive_equivalences.
+ 	(derive_equivalences_from_bit_ior, record_temporary_equivalences):
+ 	Code moved into....
+ 	(edge_info::derive_equivalences): New private member function
+ 
+ 	* tree-ssa-dom.c (class edge_info): Changed from a struct
+ 	to a class.  Add ctor/dtor, methods and data members.
+ 	(edge_info::edge_info): Renamed from allocate_edge_info.
+ 	Initialize additional members.
+ 	(edge_info::~edge_info): New.
+ 	(free_dom_edge_info): Delete the edge info.
+ 	(record_edge_info): Use new class & associated member functions.
+ 	Tighten forms for testing for edge equivalences.
+ 	(record_temporary_equivalences): Iterate over the simple
+ 	equivalences rather than assuming there's only one per edge.
+ 	(cprop_into_successor_phis): Iterate over the simple
+ 	equivalences rather than assuming there's only one per edge.
+ 	(optimize_stmt): Use operand_equal_p rather than pointer
+ 	equality for mini-DSE code.
+ 
+ 2017-08-28  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* gcc.c (execute): Fold SIGPIPE handling into switch
+ 	statement.  Adjust internal error message.
+ 
+ 2017-08-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR debug/81993
+ 	* dwarf2out.c (gen_remaining_tmpl_value_param_die_attributes):
+ 	Do nothing for removed DIEs.
+ 
+ 2017-08-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/81977
+ 	* tree-ssa-sccvn.c (vn_reference_lookup_3): Fix look through
+ 	memcpy.
+ 
+ 2017-08-28  Alexander Monakov  <amonakov@ispras.ru>
+ 
+ 	PR target/80640
+ 	* doc/md.texi (mem_thread_fence): Remove mention of mode.  Rewrite.
+ 	* optabs.c (expand_mem_thread_fence): Emit a compiler barrier when
+ 	using targetm.gen_mem_thread_fence.
+ 
+ 2017-08-27  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/81995
+ 	* config/i386/i386.md (*<btsc><mode>): Change operand 2
+ 	predicate to register_operand.  Reorder operands.
+ 	(*btr<mode>): Ditto.
+ 	(*<btsc><mode>_mask): Change operand 3 predicate to register_operand.
+ 	(*btr<mode>_mask): Ditto.
+ 
+ 2017-08-25  Steven Munroe  <munroesj@gcc.gnu.org>
+ 
+ 	* config.gcc (powerpc*-*-*): Add xmmintrin.h and mm_malloc.h.
+ 	* config/rs6000/xmmintrin.h: New file.
+ 	* config/rs6000/x86intrin.h [__ALTIVEC__]: Include xmmintrin.h.
+ 
+ 2017-08-25  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	PR target/81504
+ 	* config/rs6000/rs6000-p8swap.c (find_alignment_op): Add reference
+ 	parameter and_insn and return it.
+ 	(recombine_lvx_pattern): Insert a copy to ensure availability of
+ 	the base register of the copied masking operation at the point of
+ 	the instruction replacement.
+ 	(recombine_stvx_pattern): Likewise.
+ 
+ 2017-08-25  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	* config/rs6000/rs6000.opt (-mpower9-dform-scalar): Delete
+ 	undocumented switches.
+ 	(-mpower9-dform-vector): Likewise.
+ 	(-mpower9-dform): Likewise.
+ 	* config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Update
+ 	comments to delete references to -mpower9-dform* switches.
+ 	* config/rs6000/predicates.md (vsx_quad_dform_memory_operand):
+ 	Delete reference to -mpower9-dform* switches, test for
+ 	-mpower9-vector instead.
+ 	* config/rs6000/rs6000-cpus.def (ISA_3_0_MASKS_SERVER): Likewise.
+ 	(OTHER_P9_VECTOR_MASKS): Likewise.
+ 	(POWERPC_MASKS): Likewise.
+ 	* config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): Change
+ 	tests against -mpower9-dform* to -mpower9-vector.  Delete code
+ 	that checked for -mpower9-dform* consistancy with other options.
+ 	Add test for -mpower9-misc to enable other power9 switches.
+ 	(rs6000_init_hard_regno_mode_ok): Likewise.
+ 	(rs6000_option_override_internal): Likewise.
+ 	(rs6000_emit_prologue): Likewise.
+ 	(rs6000_emit_epilogue): Likewise.
+ 	(rs6000_opt_masks): Delete -mpower9-dform-{scalar,vector}.
+ 	(rs6000_disable_incompatiable_switches): Delete -mpower9-dform.
+ 	(emit_fusion_p9_load): Change tests for -mpower9-dform-scalar
+ 	-mpower9-vector.
+ 	(emit_fusion_p9_store): Likewise.
+ 	* config/rs6000/rs6000.h (TARGET_P9_DFORM_SCALAR): Delete
+ 	resetting these macros if the assembler does not support ISA 3.0
+ 	instructions.
+ 	(TARGET_P9_DFORM_VECTOR): Likewise.
+ 	* config/rs6000/rs6000.md (peepholes to optimize altivec memory):
+ 	Change to use -mpower9-vector instead of -mpower9-dform-scalar.
+ 
+ 2017-08-25  Alan Modra  <amodra@gmail.com>
+ 
+ 	PR rtl-optimization/81747
+ 	* cse.c (cse_extended_basic_block): Don't attempt to record
+ 	equivalences for degenerate conditional branches that branch
+ 	to their fall-through.
+ 
+ 2017-08-24  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/81908
+ 	* gimple-fold.c (size_must_be_zero_p): New function.
+ 	(gimple_fold_builtin_memory_op): Call it.
+ 
+ 2017-08-24  Steven Munroe  <munroesj@gcc.gnu.org>
+ 
+ 	* config/rs6000/mm_malloc.h: New file.
+ 
+ 2017-08-24  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	PR tree-optimization/81913
+ 	* tree-ssa-loop-niter.c (number_of_iterations_cond): Skip niter
+ 	analysis when either IVs in condition can wrap.
+ 
+ 2017-08-24  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* dwarf2out.c (MAX_ARTIFICIAL_LABEL_BYTES): Increase to 40.
+ 	* dwarf2cfi.c (MAX_ARTIFICIAL_LABEL_BYTES): Remove.
+ 
+ 2017-08-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR target/81921
+ 	* targhooks.c (default_target_can_inline_p): Properly
+ 	use target_option_default_node when no DECL_FUNCTION_SPECIFIC_TARGET
+ 	is present and always compare.
+ 	* config/i386/i386.c (ix86_valid_target_attribute_tree): Do not
+ 	infer -mfpmath=sse from TARGET_SSE_P.
+ 	(ix86_can_inline_p): Properly use target_option_default_node when
+ 	no DECL_FUNCTION_SPECIFIC_TARGET is present and always compare.
+ 
+ 2017-08-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR debug/81936
+ 	* dwarf2out.c (output_die): Handle flag_generate_offload like
+ 	flag_generate_lto.
+ 	(output_comp_unit): Likewise.
+ 	(gen_array_type_die): Likewise.
+ 	(dwarf2out_early_finish): Likewise.
+ 	(note_variable_value_in_expr): Likewise.
+ 	(dwarf2out_finish): Likewise.  Adjust assert.
+ 	* cgraphunit.c (symbol_table::compile): Move setting of
+ 	flag_generate_offload earlier ...
+ 	(symbol_table::finalize_compilation_unit): ... here, before
+ 	early debug finalization.
+ 
+ 2017-08-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	* config/i386/i386.c: Include symbol-summary.h, ipa-prop.h
+ 	and ipa-fnsummary.h.
+ 	(ix86_can_inline_p): When ix86_fpmath flags do not match
+ 	check whether the callee uses FP math at all.
+ 
+ 2017-08-24  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	PR middle-end/81931
+ 	* tree-ssanames.c (get_nonzero_bits): Use element_precision
+ 	instead of TYPE_PRECISION.
+ 
+ 2017-08-24  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* combine.c (make_extraction): Use subreg_offset_from_lsb.
+ 
+ 2017-08-23  Daniel Santos  <daniel.santos@pobox.com>
+ 
+ 	* config/i386/i386.h (ix86_frame::stack_realign_allocate_offset):
+ 	Remove field.
+ 	(ix86_frame::stack_realign_allocate): New field.
+ 	(struct machine_frame_state): Modify comments.
+ 	(machine_frame_state::sp_realigned_fp_end): New field.
+ 	* config/i386/i386.c (ix86_compute_frame_layout): Rework stack frame
+ 	layout calculation.
+ 	(sp_valid_at): Add assertion to assure no attempt to access invalid
+ 	offset of a realigned stack.
+ 	(fp_valid_at): Likewise.
+ 	(choose_baseaddr): Modify comments.
+ 	(ix86_emit_outlined_ms2sysv_save): Adjust to changes in
+ 	ix86_expand_prologue.
+ 	(ix86_expand_prologue): Modify stack realignment and allocation.
+ 	(ix86_expand_epilogue): Modify comments.
+ 	* doc/sourcebuild.texi: Add documentation for target selectors avx2,
+ 	avx2_runtime, avx512f, and avx512f_runtime.
+ 
+ 2017-08-23  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.opt: Remove unneeded Init(0) initializations.
+ 	(mstackrealign): Do not init to -1.
+ 	* config/i386/i386.c (ix86_option_override_internal):
+ 	Check opts_set, not opts when setting default value of
+ 	opts->x_ix86_force_align_arg_pointer.
+ 
+ 2017-08-23  Richard Biener  <rguenther@suse.de>
+ 
+ 	* function.c (fndecl_name): Use verbosity 1 (no arguments) for
+ 	lang_hooks.decl_printable_name.
+ 	* print-rtl-function.c (print_rtx_function): Likewise.
+ 	* tree-pretty-print.c (dump_function_header): Likewise.
+ 
+ 2017-08-23  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR lto/81940
+ 	* dwarf2out.c (dwarf2out_abstract_function): Handle LTO with
+ 	-g0 at compile-time.
+ 
+ 2017-08-23  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR middle-end/19706
+ 	* doc/sourcebuild.texi (Other hardware attributes):
+ 	Document xorsign.
+ 
+ 2017-08-23  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR middle-end/19706
+ 	* tree-ssa-math-opts.c (convert_expand_mult_copysign):
+ 	Fix single-use check.
+ 
+ 2017-08-23  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	* gcc.c (execute): Only test for SIGKILL and SIGQUIT if available.
+ 
+ 2017-08-22  Daniel Santos  <daniel.santos@pobox.com>
+ 
+ 	* doc/install.texi: Modify to add more details on running selected
+ 	tests.
+ 
+ 2017-08-22  Daniel Santos  <daniel.santos@pobox.com>
+ 
+ 	* config/i386/i386.c (ix86_option_override_internal): Error when -mx32
+ 	is combined with -mabi=ms.
+ 	(ix86_function_type_abi): Limit errors for mixing -mx32 with attribute
+ 	ms_abi.
+ 
+ 2017-08-22  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	PR tree-optimization/81488
+ 	* gimple-ssa-strength-reduction (struct slsr_cand_d): Add visited
+ 	and cached_basis fields.
+ 	(MAX_SPREAD): New constant.
+ 	(alloc_cand_and_find_basis): Initialize new fields.
+ 	(clear_visited): New function.
+ 	(create_phi_basis_1): Rename from create_phi_basis, set visited
+ 	and cached_basis fields.
+ 	(create_phi_basis): New wrapper function.
+ 	(phi_add_costs_1): Rename from phi_add_costs, add spread
+ 	parameter, set visited field, short-circuit when limits reached.
+ 	(phi_add_costs): New wrapper function.
+ 	(record_phi_increments_1): Rename from record_phi_increments, set
+ 	visited field.
+ 	(record_phi_increments): New wrapper function.
+ 	(phi_incr_cost_1): Rename from phi_incr_cost, set visited field.
+ 	(phi_incr_cost): New wrapper function.
+ 	(all_phi_incrs_profitable_1): Rename from
+ 	all_phi_incrs_profitable, set visited field.
+ 	(all_phi_incrs_profitable): New wrapper function.
+ 
+ 2017-08-22  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* rtl.h (paradoxical_subreg_p): Define inline, and add a version
+ 	that takes the outer and inner modes.
+ 	* doc/rtl.texi: Use paradoxical_subreg_p instead of a GET_MODE_SIZE
+ 	comparison as the canonical test for a paradoxical subreg.
+ 	* combine.c (simplify_set): Use paradoxical_subreg_p.
+ 	(make_extraction): Likewise.
+ 	(force_to_mode): Likewise.
+ 	(rtx_equal_for_field_assignment_p): Likewise.
+ 	(gen_lowpart_for_combine): Likewise.
+ 	(simplify_comparison): Likewise.
+ 	* cse.c (equiv_constant): Likewise.
+ 	* expmed.c (store_bit_field_1): Likewise.
+ 	* final.c (alter_subreg): Likewise.
+ 	* fwprop.c (propagate_rtx): Likewise.
+ 	(forward_propagate_subreg): Likewise.
+ 	* ira-conflicts.c (ira_build_conflicts): Likewise.
+ 	* lower-subreg.c (simplify_gen_subreg_concatn): Likewise.
+ 	* lra-constraints.c (curr_insn_transform): Likewise.
+ 	(split_reg): Likewise.
+ 	* lra-eliminations.c (move_plus_up): Likewise.
+ 	(lra_eliminate_regs_1): Likewise.
+ 	* recog.c (general_operand): Likewise.
+ 	* ree.c (combine_reaching_defs): Likewise.
+ 	* reload.c (push_reload): Likewise.
+ 	(find_reloads): Likewise.
+ 	* reload1.c (elimination_effects): Likewise.
+ 	(compute_reload_subreg_offset): Likewise.
+ 	(choose_reload_regs): Likewise.
+ 	* rtlanal.c (subreg_lsb_1): Likewise.
+ 	* simplify-rtx.c (simplify_unary_operation_1): Likewise.
+ 	(simplify_subreg): Likewise.
+ 	* var-tracking.c (track_loc_p): Likewise.
+ 	* emit-rtl.c (byte_lowpart_offset): Likewise.
+ 	(paradoxical_subreg_p): Delete out-of-line definition.
+ 
+ 2017-08-22  Jeff Law  <law@redhat.com>
+ 
+ 	PR tree-optimization/81741
+ 	PR tree-optimization/71947
+ 	* tree-ssa-dom.c: Include tree-inline.h.
+ 	(record_temporary_equivalences): Only record SSA_NAME = SSA_NAME
+ 	equivalences if one is more expensive to compute than the other.
+ 	* tree-ssa-scopedtables.h (class const_or_copies): Make
+ 	record_const_or_copy_raw method private.
+ 	(class avail_exprs_stack): New method simplify_binary_operation.
+ 	* tree-ssa-scopedtables.c (avail_exprs_stack::lookup_avail_expr): Call
+ 	avail_exprs_stack::simplify_binary_operation as needed.
+ 	(avail_exprs_stack::simplify_binary_operation): New function.
+ 
+ 2017-08-22  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+ 
+ 	* config.gcc (powerpc-*-rtems*): Add rs6000/linux64.opt.
+ 	* config/rs6000/rtems.h (ASM_PREFERRED_EH_DATA_FORMAT): New define.
+ 	(DOT_SYMBOLS): Likewise.
+ 	(MINIMAL_TOC_SECTION_ASM_OP): Likewise.
+ 	(RELOCATABLE_NEEDS_FIXUP): Likewise.
+ 	(RS6000_ABI_NAME): Likewise.
+ 	(TARGET_CMODEL): Likewise.
+ 	(TOC_SECTION_ASM_OP): Likewise.
+ 	(SET_CMODEL): New macro.
+ 	(SUBSUBTARGET_OVERRIDE_OPTIONS): Evaluate cmodel options.
+ 
+ 2017-08-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-inline.c (remap_type_1): Change asserts on TYPE_SIZE[_UNIT]
+ 	to allow for free-lang-data replacements similar to verify_type_variant.
+ 
+ 2017-08-22  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* config/aarch64/aarch64.md (casesi): Use DImode rather than
+ 	VOIDmode for the LABEL_REF.
+ 
+ 2017-08-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-cfg.c (gimple_split_edge): Avoid reallocating target PHI nodes.
+ 
+ 2017-08-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	* common.opt (feliminate-dwarf2-dups): Ignore.
+ 	* doc/invoke.texi (feliminate-dwarf2-dups): Remove documentation.
+ 	* dwarf2out.c (push_new_compile_unit, pop_compile_unit,
+ 	same_die_p_wrap, compute_section_prefix,
+ 	is_symbol_die, assign_symbol_names, break_out_includes): Remove.
+ 	(comdat_symbol_id, comdat_symbol_number): Likewise.
+ 	(cu_hash_table_entry, cu_hash_table_entry_hasher, cu_hash_type):
+ 	Likewise.
+ 	(check_duplicate_cu, record_comdat_symbol_number): Likewise.
+ 	(output_die): Mark unreachable path unreachable.
+ 	(dwarf2out_start_source_file): Do not create DW_TAG_GNU_BINCL.
+ 	(dwarf2out_end_source_file): Do not create DW_TAG_GNU_EINCL.
+ 	(dwarf2out_init): Remove code handling flag_eliminate_dwarf2_dups.
+ 	(dwarf2out_early_finish): Likewise.
+ 
+ 2017-08-22  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* wide-int.h (hwi_with_prec::hwi_with_prec): Sign extend.
+ 
+ 2017-08-22  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR target/81910
+ 	* config/avr/avr.c (avr_handle_addr_attribute): Early return if
+ 	not VAR_P. Filter attribute warnings with OPT_Wattributes.
+ 	(avr_attribute_table) <io, io_low, address>: Initialize
+ 	.decl_required with true.
+ 
+ 2017-08-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	* config/rs6000/rs6000-cpus.def (-mvsx-scalar-float): Delete
+ 	undocumented debugging options.
+ 	(-mvsx-scalar-double): Likewise.
+ 	(-mallow-df-permute): Likewise.
+ 	(-mvectorize-builtins): Likewise.
+ 	* config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Likewise.
+ 	(rs6000_builtin_vectorized_function): Likewise.
+ 	(rs6000_builtin_md_vectorized_function): Likewise.
+ 	(rs6000_opt_vars): Likewise.
+ 
+ 2017-08-21  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/46091
+ 	* config/i386/i386.md (*btsq_imm): Rename from *btsq.
+ 	(*btrq_imm): Rename from *btrq.
+ 	(*btcq_imm): Rename from *btcq.
+ 	(btsc): New code attribute.
+ 	(*<btsc><mode>): New insn pattern.
+ 	(*btr<mode>): Ditto.
+ 	(*<btsc><mode>_mask): New insn_and_split pattern.
+ 	(*btr<mode>_mask): Ditto.
+ 
+ 2017-08-21  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* function.c (pad_below): Simplify padding calculation.
+ 
+ 2017-08-21  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* target.def (function_prologue): Remove frame size argument.
+ 	(function_epilogue): Likewise.
+ 	* doc/tm.texi: Regenerate.
+ 	* final.c (final_start_function): Update call to function_prologue.
+ 	(final_end_function): Update call to function_epilogue.
+ 	(default_function_pro_epilogue): Remove frame size argument.
+ 	* output.h (default_function_pro_epilogue): Likewise.
+ 	* config/arm/arm.c (arm_output_function_epilogue): Likewise.
+ 	(arm_output_function_prologue): Likewise.
+ 	* config/frv/frv.c (frv_function_prologue): Likewise.
+ 	(frv_function_epilogue): Likewise.
+ 	* config/i386/i386.c (ix86_output_function_epilogue): Likewise.
+ 	* config/ia64/ia64.c (ia64_output_function_prologue): Likewise.
+ 	(ia64_output_function_epilogue): Likewise.
+ 	* config/m32r/m32r.c (m32r_output_function_prologue): Likewise.
+ 	(m32r_output_function_epilogue): Likewise.
+ 	* config/microblaze/microblaze.c (microblaze_function_prologue)
+ 	(microblaze_function_epilogue): Likewise.
+ 	* config/mips/mips.c (mips_output_function_prologue): Likewise.
+ 	(mips_output_function_epilogue): Likewise.
+ 	* config/mmix/mmix.c (mmix_target_asm_function_prologue): Likewise.
+ 	(mmix_target_asm_function_epilogue): Likewise.
+ 	* config/msp430/msp430.c (msp430_start_function): Likewise.
+ 	* config/nds32/nds32.c (nds32_asm_function_prologue): Likewise.
+ 	(nds32_asm_function_epilogue): Likewise.
+ 	* config/nios2/nios2.c (nios2_asm_function_prologue): Likewise.
+ 	* config/pa/pa.c (pa_output_function_prologue): Likewise.
+ 	(pa_output_function_epilogue): Likewise.
+ 	* config/powerpcspe/powerpcspe.c (rs6000_output_function_prologue)
+ 	(rs6000_output_function_epilogue): Likewise.
+ 	* config/rl78/rl78.c (rl78_start_function): Likewise.
+ 	* config/rs6000/rs6000.c (rs6000_output_function_prologue): Likewise.
+ 	(rs6000_output_function_epilogue): Likewise.
+ 	* config/rx/rx.c (rx_output_function_prologue): Likewise.
+ 	* config/sh/sh.c (sh_output_function_epilogue): Likewise.
+ 	* config/sparc/sparc.c (sparc_asm_function_prologue): Likewise.
+ 	(sparc_asm_function_epilogue): Likewise.
+ 
+ 2017-08-21  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* tree.h (type_has_mode_precision_p): New function.
+ 	* convert.c (convert_to_integer_1): Use it.
+ 	* expr.c (expand_expr_real_2): Likewise.
+ 	(expand_expr_real_1): Likewise.
+ 	* fold-const.c (fold_single_bit_test_into_sign_test): Likewise.
+ 	* match.pd: Likewise.
+ 	* tree-ssa-forwprop.c (simplify_rotate): Likewise.
+ 	* tree-ssa-math-opts.c (convert_mult_to_fma): Likewise.
+ 	* tree-tailcall.c (process_assignment): Likewise.
+ 	* tree-vect-loop.c (vectorizable_reduction): Likewise.
+ 	* tree-vect-patterns.c (vect_recog_vector_vector_shift_pattern)
+ 	(vect_recog_mult_pattern, vect_recog_divmod_pattern): Likewise.
+ 	* tree-vect-stmts.c (vectorizable_conversion): Likewise.
+ 	(vectorizable_assignment): Likewise.
+ 	(vectorizable_shift): Likewise.
+ 	(vectorizable_operation): Likewise.
+ 	* tree-vrp.c (register_edge_assert_for_2): Likewise.
+ 
+ 2017-08-21  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	* match.pd: Add pow (C, x) simplification.
+ 
+ 2017-08-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/81900
+ 	* tree-ssa-pre.c (compute_antic_aux): Properly compute changed
+ 	for blocks with abnormal predecessors.
+ 	(compute_antic): Do not set visited flag prematurely.
+ 
+ 2017-08-21  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR target/79883
+ 	* config/avr/avr.c (avr_set_current_function): Typo in diagnostic.
+ 
+ 2017-08-21  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* stor-layout.h (vector_type_mode): Move to...
+ 	* tree.h (vector_type_mode): ...here.
+ 	* stor-layout.c (vector_type_mode): Move to...
+ 	* tree.c (vector_type_mode): ...here.  Include rtl.h and regs.h.
+ 
+ 2017-08-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	* debug.h (struct gcc_debug_hooks): Add die_ref_for_decl and
+ 	register_external_die hooks.
+ 	(debug_false_tree_charstarstar_uhwistar): Declare.
+ 	(debug_nothing_tree_charstar_uhwi): Likewise.
+ 	* debug.c (do_nothing_debug_hooks): Adjust.
+ 	(debug_false_tree_charstarstar_uhwistar): New do nothing.
+ 	(debug_nothing_tree_charstar_uhwi): Likewise.
+ 	* dbxout.c (dbx_debug_hooks): Adjust.
+ 	(xcoff_debug_hooks): Likewise.
+ 	* sdbout.c (sdb_debug_hooks): Likewise.
+ 	* vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
+ 	* dwarf2out.c (macinfo_label_base): New global.
+ 	(dwarf2out_register_external_die): New function for the
+ 	register_external_die hook.
+ 	(dwarf2out_die_ref_for_decl): Likewise for die_ref_for_decl.
+ 	(dwarf2_debug_hooks): Use them.
+ 	(dwarf2_lineno_debug_hooks): Adjust.
+ 	(struct die_struct): Add with_offset flag.
+ 	(DEBUG_LTO_DWO_INFO_SECTION, DEBUG_LTO_INFO_SECTION,
+ 	DEBUG_LTO_DWO_ABBREV_SECTION, DEBUG_LTO_ABBREV_SECTION,
+ 	DEBUG_LTO_DWO_MACINFO_SECTION, DEBUG_LTO_MACINFO_SECTION,
+ 	DEBUG_LTO_DWO_MACRO_SECTION, DEBUG_LTO_MACRO_SECTION,
+ 	DEBUG_LTO_LINE_SECTION, DEBUG_LTO_DWO_STR_OFFSETS_SECTION,
+ 	DEBUG_LTO_STR_DWO_SECTION, DEBUG_STR_LTO_SECTION): New macros
+ 	defining section names for the early LTO debug variants.
+ 	(reset_indirect_string): New helper.
+ 	(add_AT_external_die_ref): Helper for dwarf2out_register_external_die.
+ 	(print_dw_val): Add support for offsetted symbol references.
+ 	(get_ultimate_context): Split out from is_cxx.
+ 	(is_cxx): Use get_ultimate_context.
+ 	(is_fortran): Add decl overload.
+ 	(compute_comp_unit_symbol): Split out worker from
+ 	compute_section_prefix.
+ 	(compute_section_prefix): Call compute_comp_unit_symbol and
+ 	set comdat_type_p here.
+ 	(output_die): Skip DIE symbol output for the LTO added one.
+ 	Handle DIE symbol references with offset.
+ 	(output_comp_unit): Guard section name mangling properly.
+ 	For LTO debug sections emit a symbol at the section beginning
+ 	which we use to refer to its DIEs.
+ 	(add_abstract_origin_attribute): For DIEs registered via
+ 	dwarf2out_register_external_die directly refer to the early
+ 	DIE rather than indirectly through the shadow one we created.
+ 	Remove obsolete call to dwarf2out_abstract_function for
+ 	non-function/block origins.
+ 	(gen_array_type_die): When generating early LTO debug do
+ 	not emit DW_AT_string_length.
+ 	(gen_formal_parameter_die): Do not re-create DIEs for PARM_DECLs
+ 	late when in LTO.  As suggested place a gcc_unreachable for
+ 	the DECL_ABSTRACT_P case.
+ 	(gen_subprogram_die): Avoid another specification DIE
+ 	for early built declarations/definitions for the late LTO case.
+ 	(gen_variable_die): Add type references for late duplicated VLA dies
+ 	when in late LTO.
+ 	(gen_inlined_subroutine_die): Do not call dwarf2out_abstract_function,
+ 	we have the abstract instance already.
+ 	(process_scope_var): Adjust decl DIE contexts in LTO which
+ 	first puts them in limbo.
+ 	(gen_decl_die): Do not generate type DIEs late apart from
+ 	types for VLAs or for decls we do not yet have a DIE.  Do not
+ 	call dwarf2out_abstract_function late.
+ 	(dwarf2out_early_global_decl): Make sure to create DIEs
+ 	for abstract instances of a decl first.
+ 	(dwarf2out_late_global_decl): Adjust comment.
+ 	(output_macinfo_op): With multiple macro sections use
+ 	macinfo_label_base to distinguish labels.
+ 	(output_macinfo): Likewise.  Update macinfo_label_base.
+ 	Pass in the line info label.
+ 	(note_variable_value_in_expr): When generating LTO resolve
+ 	all variable values here by generating DIEs as needed.
+ 	(init_sections_and_labels): Add early LTO debug flag parameter
+ 	and generate different sections and names if set.  Add generation
+ 	counter for the labels so we can have multiple of them.
+ 	(reset_dies): Helper to allow DIEs to be output multiple times.
+ 	(dwarf2out_finish): When outputting DIEs to the fat part of an
+ 	LTO object first reset DIEs.
+ 	(dwarf2out_early_finish): Output early DIEs when generating LTO.
+ 	(modified_type_die): Check for decl_ultimate_origin being self
+ 	before recursing.
+ 	(gen_type_die_with_usage): Likewise.
+ 	(gen_typedef_die): Allow decl_ultimate_origin being self.
+ 	(set_decl_abstract_flags): Remove.
+ 	(set_block_abstract_flags): Likewise.
+ 	(dwarf2out_abstract_function): Treat the early generated DIEs
+ 	as the abstract copy and only add DW_AT_inline and
+ 	DW_AT_artificial here and call set_decl_origin_self.
+ 	If the DIE has an abstract origin don't do anything.
+ 	* tree.c (free_lang_data): Build a dummy TRANSLATION_UNIT_DECL
+ 	if we have none yet (Go fails to build one, PR78628).
+ 	(variably_modified_type_p): Prevent endless recursion for Ada
+ 	cyclic pointer types.
+ 	* lto-streamer-in.c: Include debug.h.
+ 	(dref_queue): New global.
+ 	(lto_read_tree_1): Stream in DIE references.
+ 	(lto_input_tree): Register DIE references.
+ 	(input_function): Stream DECL_DEBUG_ARGS.
+ 	* lto-streamer-out.c: Include debug.h.
+ 	(lto_write_tree_1): Output DIE references.
+ 	(DFS::DFS_write_tree_body): Follow DECL_ABSTRACT_ORIGIN.
+ 	Force a TRANSLATION_UNIT_DECL DECL_CONTEXT for file-scope decls.
+ 	(output_function): Stream DECL_DEBUG_ARGS.
+ 	* tree-streamer-in.c (lto_input_ts_decl_common_tree_pointers):
+ 	Stream DECL_ABSTRACT_ORIGIN.
+ 	* tree-streamer-out.c (write_ts_decl_common_tree_pointers): Likewise.
+ 	(write_ts_decl_minimal_tree_pointers): Force a TRANSLATION_UNIT_DECL
+ 	DECL_CONTEXT for file-scope decls.
+ 	* lto-streamer.h (struct dref_entry): Declare.
+ 	(dref_queue): Likewise.
+ 	* cfgexpand.c (pass_expand::execute): Do not call the
+ 	outlining_inline_function hook here.
+ 	* lto-wrapper.c (debug_obj): New global.
+ 	(tool_cleanup): Unlink it if required.
+ 	(debug_objcopy): New function.
+ 	(run_gcc): Handle early debug sections in the IL files by
+ 	extracting them to separate files, partially linkin them and
+ 	feeding the result back as result to the linker.
+ 	* config/darwin.h (DEBUG_LTO_INFO_SECTION, DEBUG_LTO_ABBREV_SECTION,
+ 	DEBUG_LTO_MACINFO_SECTION, DEBUG_LTO_LINE_SECTION,
+ 	DEBUG_STR_LTO_SECTION, DEBUG_LTO_MACRO_SECTION): Put early debug
+ 	sections into a separate segment.
+ 	* config/darwin.c (darwin_asm_named_section): Handle __GNU_DWARF_LTO
+ 	segments.
+ 	(darwin_asm_dwarf_section): Likewise.
+ 	(darwin_asm_output_dwarf_offset): Likewise.
+ 	* config/i386/i386.c (make_resolver_func): Set DECL_IGNORED_P.
+ 
+ 2017-08-21  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* read-md.h (md_reader::record_potential_iterator_use): Replace
+ 	pointer argument with an rtx and an index.
+ 	* read-rtl.c (iterator_group::apply_iterator): Likewise.
+ 	(apply_mode_iterator): Likewise.
+ 	(apply_code_iterator): Likewise.
+ 	(apply_int_iterator): Likewise.
+ 	(apply_subst_iterator): Likewise.
+ 	(record_iterator_use): Likewise.
+ 	(record_attribute_use): Likewise.
+ 	(md_reader::record_potential_iterator_use): Likewise.  Update calls
+ 	to record_iterator_use and apply_iterator.
+ 	(iterator_use): Replace ptr with x and index.
+ 	(attribute_use): Likewise.
+ 	(apply_attribute_uses): Update calls to apply_iterator.
+ 	(apply_iterators): Likewise.  Update initialization of iterator_use.
+ 	(rtx_reader::read_rtx_code): Update calls to record_iterator_use
+ 	and record_potential_iterator_use.
+ 	(rtx_reader::read_rtx_operand): Likewise.
+ 
+ 2017-08-21  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* varasm.c (const_rtx_hash_1): Don't hash in the mode of a
+ 	CONST_WIDE_INT.
+ 
+ 2017-08-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/81884
+ 	* tree-ssa-alias.c (stmt_kills_ref_p): Handle array accesses
+ 	at struct end conservatively when comparing common bases.
+ 
+ 2017-08-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-loop-im.c (struct lim_aux_data): Add ref index member.
+ 	(mem_ref_in_stmt): Remove.
+ 	(determine_max_movement): Use ref index to get at the reference.
+ 	(invariantness_dom_walker::before_dom_children): Deal with
+ 	lim data already initialized.
+ 	(gather_mem_refs_stmt): Initialize lim data and record ref index.
+ 
+ 2017-08-19  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.h (OPTION_MASK_ISA_ROUND): Remove.
+ 	(TARGET_ISA_ROUND): Ditto.
+ 	(TARGET_ROUND): Ditto.
+ 	* config/i386/i386.c: Substitute TARGET_ROUND with TARGET_SSE4_1.
+ 	* config/i386/i386.md: Ditto.
+ 	* config/i386/sse.md: Ditto.
+ 	* config/i386/i386-builtin.def: Substitute OPTION_MASK_ISA_ROUND
+ 	with OPTION_MASK_ISA_SSE4_1.
+ 
+ 2017-08-19  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/81894
+ 	* doc/extend.texi (x86 Built-in Functions): Correct the name of
+ 	__builtin_ia32_lzcnt_u16.
+ 
+ 2017-08-18  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	PR target/80210
+ 	* config/rs6000/rs6000.c (rs6000_activate_target_options): New function.
+ 	(rs6000_set_current_function): Rewrite function to use it.
+ 
+ 2017-08-18  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR c/53037
+ 	* print-tree.c (print_node): Support DECL_WARN_IF_NOT_ALIGN
+ 	and TYPE_WARN_IF_NOT_ALIGN.
+ 	* stor-layout.c (do_type_align): Merge DECL_WARN_IF_NOT_ALIGN.
+ 	(handle_warn_if_not_align): New.
+ 	(place_union_field): Call handle_warn_if_not_align.
+ 	(place_field): Call handle_warn_if_not_align.
+ 	Copy TYPE_WARN_IF_NOT_ALIGN.
+ 	(finish_builtin_struct): Copy TYPE_WARN_IF_NOT_ALIGN.
+ 	(layout_type): Likewise.
+ 	* tree-core.h (tree_type_common): Add warn_if_not_align.  Set
+ 	spare to 18.
+ 	(tree_decl_common): Add warn_if_not_align.
+ 	* tree.c (build_range_type_1): Copy TYPE_WARN_IF_NOT_ALIGN.
+ 	* tree.h (TYPE_WARN_IF_NOT_ALIGN): New.
+ 	(SET_TYPE_WARN_IF_NOT_ALIGN): Likewise.
+ 	(DECL_WARN_IF_NOT_ALIGN): Likewise.
+ 	(SET_DECL_WARN_IF_NOT_ALIGN): Likewise.
+ 	* doc/extend.texi: Document warn_if_not_aligned attribute.
+ 	* doc/invoke.texi: Document -Wif-not-aligned and -Wpacked-not-aligned.
+ 
+ 2017-08-17  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR bootstrap/81864
+ 	* tree-loop-distribution.c (ddrs_table): Change type to pointer type.
+ 	(get_data_dependence): Use it as pointer type.
+ 	(distribute_loop): Likewise.
+ 
+ 2017-08-17  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	* config/rs6000/altivec.md (UNSPEC_VMRGOW_DIRECT): New constant.
+ 	(p8_vmrgew_v4sf_direct): Generalize to p8_vmrgew_<mode>_direct.
+ 	(p8_vmrgow_<mode>_direct): New define_insn.
+ 	* config/rs6000/rs6000.c (altivec_expand_vec_perm_const): Properly
+ 	handle endianness for vmrgew and vmrgow permute patterns.
+ 
+ 2017-08-17  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	* config/rs6000/altivec.md (VParity): Remove TARGET_VSX_TIMODE.
+ 	* config/rs6000/rs6000-cpus.def: Remove comment.
+ 	(ISA_2_7_MASKS_SERVER): Delete OPTION_MASK_VSX_TIMODE;
+ 	(POWERPC_MASKS): Likewise.
+ 	* config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Remove unneeded
+ 	use of TARGET_VSX_TIMODE.
+ 	(rs6000_setup_reg_addr_masks): Change TARGET_VSX_TIMODE to TARGET_VSX.
+ 	(rs6000_init_hard_regno_mode_ok): Remove unneeded uses of
+ 	TARGET_VSX_TIMODE.  Change use of TARGET_VSX_TIMODE to TARGET_VSX.
+ 	(rs6000_option_override_internal): Remove dead code.
+ 	(rs6000_legitimize_address): Change TARGET_VSX_TIMODE to TARGET_VSX.
+ 	(rs6000_legitimize_reload_address): Likewise.
+ 	(rs6000_legitimate_address_p): Likewise.
+ 	(rs6000_opt_masks): Delete "vsx-timode".
+ 	(rs6000_disable_incompatible_switches): Remove mention of -mvsx-timode
+ 	from function comment.
+ 	* config/rs6000/rs6000.h (MASK_VSX_TIMODE): Delete.
+ 	* config/rs6000/rs6000.md (FMOVE128_GPR): Remove TARGET_VSX_TIMODE.
+ 	(V16QI, V8HI, V4SI, V4SF, V2DI, V2DF, V1TI): Remove useless empty
+ 	condition.
+ 	* config/rs6000/rs6000.opt (mvsx-timode): Replace with stub.
+ 	* config/rs6000/vector.md (VEC_IP): Remove TARGET_VSX_TIMODE.
+ 	* config/rs6000/vsx.md (VSX_LE_128): Likewise.
+ 	(VSX_TI): Likewise.
+ 	(VSX_M): Likewise.
+ 	(define_peephole2): Likewise.
+ 
+ 2017-08-17  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR c/81859
+ 	* pretty-print.c (pp_format): Use strnlen in %.*s to avoid reading
+ 	past the end of an array.
+ 	(test_pp_format): Add test cases.
+ 
+ 2017-08-17  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* internal-fn.def (CLRSB, CLZ, CTZ, FFS, PARITY, POPCOUNT): Add
+ 	missing ECF_NOTHROW flags.
+ 
+ 2017-08-17  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	PR target/72804
+ 	* config/rs6000/vsx.md (*vsx_le_permute_<mode>): Add support for
+ 	operands residing in integer registers.
+ 	(*vsx_le_perm_load_<mode>): Likewise.
+ 	(*vsx_le_perm_store_<mode>): Likewise.
+ 	(define_peephole2): Add peepholes to optimize the above.
+ 
+ 2017-08-17  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR middle-end/81814
+ 	* fold-const.c (operand_equal_for_comparison_p): Remove code that used
+ 	to mimic what shorten_compare did.  Change the return type to bool.
+ 	(fold_cond_expr_with_comparison): Update call to
+ 	operand_equal_for_comparison_p.
+ 	(fold_ternary_loc): Likewise.
+ 
+ 2017-08-17  Jackson Woodruff  <jackson.woodruff@arm.com>
+ 
+ 	* aarch64-simd.md (mov<mode>): No longer force zero immediate into
+ 	register.
+ 	(*aarch64_simd_mov<mode>): Add new case for stp	using zero immediate.
+ 
+ 2017-08-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-structalias.c (solve_graph): When propagating
+ 	to successors update the graphs succ edges and avoid duplicate work.
+ 
+ 2017-08-17  Maxim Ostapenko  <m.ostapenko@samsung.com>
+ 
+ 	PR target/81861
+ 	* config/i386/i386.c (ix86_option_override_internal): Save target
+ 	specific options after ix86_stack_protector_guard_reg was changed.
+ 
+ 2017-08-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/81827
+ 	* tree-ssa-structalias.c (struct variable_info): Add is_reg_var flag.
+ 	(new_var_info): Initialize it conservatively.
+ 	(get_call_vi): Mark register vars.
+ 	(new_scalar_tmp_constraint_exp): Likewise.
+ 	(handle_rhs_call): Likewise.
+ 	(handle_const_call): Likewise.
+ 	(create_function_info_for): Likewise.
+ 	(solve_constraints): Sort varinfos to separate register from
+ 	non-register vars to pack points-to solution bitmaps during
+ 	iteration.
+ 
+ 2017-08-17  Marek Polacek  <polacek@redhat.com>
+ 
+ 	* gimplify.c (gimplify_adjust_omp_clauses): Compare with 0 instead of 1.
+ 
+ 2017-08-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vrp.c (vrp_int_const_binop): Do not set *overflow_p
+ 	to true when overflow is undefined and we saturated the result.
+ 
+ 2017-08-17  Alan Modra  <amodra@gmail.com>
+ 
+ 	PR target/80938
+ 	* config/rs6000/rs6000.c (rs6000_savres_strategy): Revert 2017-08-09.
+ 	Don't use store multiple if only one reg needs saving.
+ 	(interesting_frame_related_regno): New function.
+ 	(rs6000_frame_related): Don't emit frame info for regs that
+ 	don't need saving.
+ 	(rs6000_emit_epilogue): Likewise.
+ 
+ 2017-08-16  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* tree-core.h (tree_type_non_common): Rename binfo to lang_1.
+ 	* tree.h (TYPE_BINFO): Use type_non_common.maxval.
+ 	(TYPE_LANG_SLOT_1): Use type_non_common.lang_1, for any type.
+ 	* tree.c (free_lang_data_in_type): Use else-if chain.  Always
+ 	clear TYPE_LANG_1.  Remove obsolete member-function stripping.
+ 	(find_decls_types_r): Comment about TYPE_MAX_VALUES_RAW.
+ 	(verify_type): Adjust for TYPE_BINFO move.
+ 	* lto-streamer-out.c (DFS::DFS_write_tree_body): No need to
+ 	process TYPE_BINFO directly.
+ 	(hash_tree): Likewise.
+ 	* tree-streamer-in.c (lto_input_ts_type_non_common_tree_pointers):
+ 	Likewise.
+ 	* tree-streamer-out.c (write_ts_type_non_common_tree_pointers):
+ 	Likewise.
+ 
+ 2017-08-16  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* diagnostic-show-locus.c (colorizer::m_caret): Remove unused field.
+ 
+ 2017-08-16  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/46091
+ 	* config/i386/i386.md (*anddi_1_btr): Change predicates of
+ 	operand 0 and operand 1 to nomimmediate_operand. Add "m" constraint.
+ 	Add ix86_binary_operator_ok to insn constraint.
+ 	(*iordi_1_bts): Ditto.
+ 	(*xordi_1_btc): Ditto.
+ 	(*btsq): Change predicate of operand 0 to nonimmediate_operand.
+ 	Update corresponding peephole2 pattern.
+ 	(*btrq): Ditto.
+ 	(*btcq): Ditto.
+ 
+ 2017-08-16  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	PR tree-optimization/81832
+ 	* tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Don't
+ 	copy loop header which has IFN_LOOP_DIST_ALIAS call.
+ 
+ 2017-08-16  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR middle/81695
+ 	* fold-const.c (fold_indirect_ref_1): Restore original behavior
+ 	regarding size_zero_node.
+ 
+ 2017-08-16  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR target/81753
+ 	* config.gcc: Respect previously set extra_objs in case
+ 	of darwin target.
+ 
+ 2017-08-16  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	PR tree-optimization/81835
+ 	* tree-vect-loop.c (vect_is_simple_reduction): Simply checks for
+ 	the phi SSA_NAME.  Check that the condition in a COND_EXPR does
+ 	not depend on the phi.
+ 
+ 2017-08-16  Alan Modra  <amodra@gmail.com>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Delete
+ 	dead code.
+ 
+ 2017-08-16  Alan Modra  <amodra@gmail.com>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_reg_live_or_pic_offset_p): Merge..
+ 	(save_reg_p): ..into this.  Update all callers.
+ 	(first_reg_to_save): Simplify.
+ 
+ 2017-08-16  Alan Modra  <amodra@gmail.com>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_savres_strategy): Don't restore
+ 	fixed regs.
+ 
+ 2017-08-15  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	PR target/78460
+ 	PR target/67712
+ 	* config/sh/sh-mem.cc (sh_expand_cmpnstr): Only unroll for
+ 	constant count if that count is less than 32.
+ 
+ 2017-08-15  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* gcc.c (execute): Emit friendlier message if inferior is killed
+ 	by an external cause.
+ 
+ 2017-08-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/81790
+ 	* tree-ssa-sccvn.c (vn_lookup_simplify_result): Handle both
+ 	CONSTRUCTORs from simplifying and VN.
+ 
+ 2017-08-14  Martin Sebor  <msebor@redhat.com>
+ 
+ 	* builtin-attrs.def: Add comments.
+ 
+ 2017-08-14  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR c/81117
+ 	* doc/extend.texi (attribute nonstring): Document new attribute.
+ 
+ 2017-08-14  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR c/81117
+ 	* tree-diagnostic.c (default_tree_printer): Handle %G.
+ 	* gimple-pretty-print.h (percent_G_format): Declare new function.
+ 	* gimple-pretty-print.c (percent_G_format): Define.
+ 	* tree-pretty-print.c (percent_K_format): Add argument.
+ 
+ 2017-08-14  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR translation/79998
+ 	* gimple-ssa-sprintf.c (pass_sprintf_length::handle_gimple_call):
+ 	Remove a stray space.
+ 
+ 2017-08-14  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/46091
+ 	* config/i386/i386.md (*anddi_1_btr): New insn_and_split pattern.
+ 	(*iordi_1_bts): Ditto.
+ 	(*xordi_1_btc): Ditto.
+ 
+ 2017-08-14  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	PR target/79845
+ 	* config/rs6000/linux64.h (INVALID_64BIT): Use quoted strings.
+ 	* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
+ 	Likewise.
+ 	* config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Use
+ 	quoted strings, and make more translator-friendly.
+ 	(darwin_rs6000_override_options): Likewise.
+ 	(rs6000_option_override_internal): Likewise.
+ 	(rs6000_return_in_memory): Fix overlong line.
+ 	(init_cmulative_args): Use quoted strings, and make more
+ 	translator-friendly.
+ 	(rs6000_pass_by_reference): Fix overlong line.
+ 	(def_builtin): Use quoted strings.
+ 	(altivec_expand_predicate_builtin): Use quoted strings, and make
+ 	more translator-friendly.
+ 	(htm_expand_builtin): Use quoted strings.
+ 	(cpu_expand_builtin): Use quoted strings, and make more
+ 	translator-friendly.
+ 	(altivec_expand_builtin): Likewise.
+ 	(paired_expand_predicate_builtin): Likewise.
+ 	(rs6000_invalid_builtin): Likewise.
+ 	(builtin_function_type): Use quoted strings.
+ 	(rs6000_expand_split_stack_prologue): Use quoted strings, and make
+ 	more translator-friendly.
+ 	(rs6000_trampoline_init): Likewise.
+ 	(rs6000_handle_altivec_attribute): Likewise.
+ 	(rs6000_inner_target_options): Use quoted strings.
+ 	(rs6000_disable_incompatible_switches): Likewise.
+ 	* config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Use quoted
+ 	strings, and make more translator-friendly.
+ 	(SUBSUBTARGET_OVERRIDE_OPTIONS): Use quoted strings.
+ 
+ 2017-08-14  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	PR tree-optimization/81799
+ 	* tree-loop-distribution.c (version_loop_by_alias_check): Force
+ 	cond_expr to simple gimple operand.
+ 
+ 2017-08-14  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	PR middle-end/46932
+ 	* doc/sourcebuild.texi (autoincdec): Add autoincdec description.
+ 
+ 2017-08-14  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR target/81754
+ 	PR target/81268
+ 	* config/avr/avr.opt (mgas-isr-prologues): New Var avr_gasisr_prologues.
+ 	* config/avr/avr.md (gasisr, *gasisr): Use it instead of
+ 	TARGET_GASISR_PROLOGUES.
+ 	* config/avr/avr.c (avr_option_override): Same.
+ 	(avr_pass_pre_proep::execute): Same.
+ 
+ 2017-08-13  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/81820
+ 	* config/i386/i386.c (ix86_finalize_stack_frame_flags): Replace
+ 	frame pointer with stack pointer - UNITS_PER_WORD in debug insns.
+ 
+ 2017-08-13  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.md (*load_tp_<mode>): Redefine as
+ 	define_insn_and_split.  Split to a memory load from 0 in
+ 	DEFAULT_TLS_SEG_REG address space.  Merge with *load_tp_x32
+ 	using PTR mode iterator.
+ 	(*load_tp_x32_zext"): Redefine as define_insn_and_split.
+ 	Split to a memory load from 0 in DEFAULT_TLS_SEG_REG address space.
+ 	(*add_tp_<mode>): Redefine as define_insn_and_split.
+ 	Split to an add with a memory load from 0 in DEFAULT_TLS_SEG_REG
+ 	address space.  Merge with *add_tp_x32 using PTR mode iterator.
+ 	(*add_tp_x32_zext"): Redefine as define_insn_and_split.
+ 	Split to an add with a  memory load from 0 in
+ 	DEFAULT_TLS_SEG_REG address space.
+ 
+ 2017-08-12  Andrew Pinski  <apinski@cavium.com>
+ 
+ 	* config/aarch64/aarch64-option-extensions.def (rdma):
+ 	Fix feature string to what Linux prints out in /proc/cpuinfo.
+ 
+ 2017-08-12  Pierre-Marie de Rodat  <derodat@adacore.com>
+ 
+ 	PR ada/79542
+ 	* dwarf2out.c (modified_type_die): For C typedef types that have
+ 	an ultimate origin, process the ultimate origin instead of the
+ 	input type.
+ 	(gen_typedef_die): Assert that input DECLs have no ultimate
+ 	origin.
+ 	(gen_type_die_with_usage): For typedef variants that have an
+ 	ultimate origin, just call gen_decl_die on the original DECL.
+ 	(process_scope_var): Avoid creating DIEs for local typedefs and
+ 	concrete static variables.
+ 
+ 2017-08-12  Alan Modra  <amodra@gmail.com>
+ 
+ 	PR target/81170
+ 	PR target/81295
+ 	* config/rs6000/sysv4.h (STARTFILE_LINUX_SPEC): Upgrade to
+ 	match gnu-user.h startfile.
+ 	(ENDFILE_LINUX_SPEC): Similarly.
+ 
+ 2017-08-11  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	PR lto/81430
+ 	* config/nvptx/nvptx.c (nvptx_override_options_after_change):
+ 	Remove function.
+ 	(TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): Remove definition.
+ 
+ 2017-08-11  Tamar Christina  <tamar.christina@arm.com>
+ 	* config/aarch64/aarch64.md (mov<mode>): Change.
+ 	(*movhf_aarch64, *movsf_aarch64, *movdf_aarch64):
+ 	aarch64_reg_or_fp_float into aarch64_reg_or_fp_zero.
+ 	* config/aarch64/predicates.md (aarch64_reg_or_fp_float): Removed.
+ 
+ 2017-08-11  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* tree-sra.c (build_access_from_expr_1): Use more precise diagnostics
+ 	for storage order barriers.
+ 
+ 2017-08-11  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR tree-opt/79987
+ 	* tree-chkp.c (chkp_get_bounds_for_decl_addr): Do not instrument
+ 	variables of void type.
+ 
+ 2017-08-11  Martin Liska  <mliska@suse.cz>
+ 
+ 	* asan.c (asan_protect_global): Replace ASM_OUTPUT_DEF with
+ 	TARGET_SUPPORTS_ALIASES.
+ 	* cgraph.c (cgraph_node::create_same_body_alias): Likewise.
+ 	* ipa-visibility.c (can_replace_by_local_alias): Likewise.
+ 	(optimize_weakref): Likewise.
+ 	* symtab.c (symtab_node::noninterposable_alias): Likewise.
+ 	* varpool.c (varpool_node::create_extra_name_alias): Likewise.
+ 	* defaults.h: Introduce TARGET_SUPPORTS_ALIASES.
+ 
+ 2017-08-11  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR ipa/81213
+ 	* config/i386/i386.c (make_resolver_func): Do complete
+ 	refactoring of the function.
+ 
+ 2017-08-10  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/81708
+ 	* config/i386/i386.opt (mstack-protector-guard-symbol=): New option
+ 	* config/i386/i386.c (ix86_stack_protect_guard): Use
+ 	ix86_stack_protect_guard_symbol_str to generate varible declaration.
+ 	* doc/invoke.texi (x86 Options): Document
+ 	-mstack-protector-guard-symbol= option.
+ 
+ 2017-08-10  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386-protos.h (ix86_split_stack_guard): New prototype.
+ 	* config/i386/i386.c (ix86_split_stack_guard): New function.
+ 	(ix86_xpand_split_stack_prologue): Call ix86_split_stack_guard.
+ 	(ix86_legitimate_address_p) <case UNSPEC_STACK_CHECK>: Remove.
+ 	(i386_asm_output_addr_const_extra) <case UNSPEC_STACK_CHECK>: Ditto.
+ 	(optput_pic_addr_const): Remove UNSPEC_STACK_CHECK handling.
+ 	* config/i386/i386.md (unspec): Remove UNSPEC_STACK_CHECK.
+ 	(split_stack_space_check): Call ix86_split_stack_guard.
+ 
+ 2017-08-10  Martin Sebor  <msebor@redhat.com>
+ 
+ 	* print-tree.c (print_node): Print location using the established
+ 	format %s:%i%i.
+ 	Replace spaces with colons.
+ 	(debug_raw, debug): Ditto.
+ 
+ 2017-08-10  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR c++/81586
+ 	* pretty-print.c (pp_format): Correct the handling of %s precision.
+ 
+ 2017-08-10  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/81736
+ 	* config/i386/i386.c (ix86_finalize_stack_realign_flags): Renamed
+ 	to ...
+ 	(ix86_finalize_stack_frame_flags): This.  Also clear
+ 	frame_pointer_needed if -fno-omit-frame-pointer is used without
+ 	stack access.
+ 	(ix86_expand_prologue): Replace ix86_finalize_stack_realign_flags
+ 	with ix86_finalize_stack_frame_flags.
+ 	(ix86_expand_epilogue): Likewise.
+ 	(ix86_expand_split_stack_prologue): Likewise.
+ 	* doc/invoke.texi: Add a note for -fno-omit-frame-pointer.
+ 
+ 2017-08-10  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR c++/81355
+ 	* c-attribs.c (handle_target_attribute):
+ 	Report warning for an empty string argument of target attribute.
+ 
+ 2017-08-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/81687
+ 	* omp-low.c (omp_copy_decl): Don't remap FORCED_LABEL or DECL_NONLOCAL
+ 	LABEL_DECLs.
+ 	* tree-cfg.c (move_stmt_op): Don't adjust DECL_CONTEXT of FORCED_LABEL
+ 	or DECL_NONLOCAL labels.
+ 	(move_stmt_r) <case GIMPLE_LABEL>: Adjust DECL_CONTEXT of FORCED_LABEL
+ 	or DECL_NONLOCAL labels here.
+ 
+ 2017-08-09  Will Schmidt  <will_schmidt@vnet.ibm.com>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_option_override_internal): Add blurb
+ 	to indicate when early gimple folding has been disabled.
+ 	(rs6000_gimple_fold_builtin): Add debug content.
+ 	(rs6000_invalid_builtin): Fix whitespace.
+ 	(rs6000_expand_builtin): Fix whitespace.
+ 	* config/rs6000/rs6000.opt: Add option for -mfold-gimple.
+ 
+ 2017-08-09  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR target/80938
+ 	* config/rs6000/rs6000.c (rs6000_savres_strategy): Don't use
+ 	SAVE_MULTIPLE if not all the registers that saves, should be saved.
+ 
+ 2017-08-09  Jim Wilson  <jim.wilson@linaro.org>
+ 
+ 	* config/aarch64/aarch64-cores.def (falkor): Use falkor pipeline.
+ 	(qdf24xx): Likewise.
+ 	* config/aarch64/aarch64.md: Include falkor.md.
+ 	* config/aarch64/falkor.md: New.
+ 
+ 2017-08-09  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c/81233
+ 	* diagnostic-core.h (emit_diagnostic_valist): Add declaration.
+ 	* diagnostic.c (emit_diagnostic): Add a comment.
+ 	(emit_diagnostic_valist): New function.
+ 
+ 2017-08-09  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c/81417
+ 	* input.c (make_location): New overload.
+ 	* input.h (make_location): Declare.
+ 
+ 2017-08-08  Alan Modra  <amodra@gmail.com>
+ 	    H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR driver/81523
+ 	* gcc.c (NO_PIE_SPEC): Delete.
+ 	(PIE_SPEC): Define as !no-pie/pie.  Move static|shared|r
+ 	exclusion..
+ 	(LINK_PIE_SPEC): ..to here.
+ 	(LINK_COMMAND_SPEC): Support -no-pie.
+ 	* config/gnu-user.h (GNU_USER_TARGET_STARTFILE_SPEC): Correct
+ 	chain of crtbegin*.o selection, update for PIE_SPEC changes and
+ 	format.
+ 	(GNU_USER_TARGET_ENDFILE_SPEC): Similarly.
+ 	* config/sol2.h (STARTFILE_CRTBEGIN_SPEC): Similarly.
+ 	(ENDFILE_CRTEND_SPEC): Similarly.
+ 
+ 2017-08-08  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/81708
+ 	* config/i386/i386.opt (mstack-protector-guard-reg=): New option
+ 	(mstack-protector-guard-offset=): Ditto.
+ 	* config/i386/i386.c (ix86_option_override): Handle
+ 	-mstack-protector-guard-reg= and -mstack-protector-guard-offset=
+ 	options.
+ 	(ix86_stack_protect_guard): Use ix86_stack_protect_guard_reg and
+ 	ix86_stack_protect_guard_offset variables.
+ 	(TARGET_STACK_PROTECT_GUARD): Always define.
+ 	* doc/invoke.texi (x86 Options): Document -mstack-protector-guard-reg=
+ 	and -mstack-protector-guard-offset= options.
+ 
+ 2017-08-08  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-ssa-loop-ivopts.c (relate_compare_use_with_all_cands): Handle
+ 	boundary case for the last candidate.
+ 
+ 2017-08-08  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* doc/invoke.texi: Document -ftree-loop-distribution for O3.
+ 	* opts.c (default_options_table): Add OPT_ftree_loop_distribution.
+ 
+ 2017-08-08  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR middle-end/19706
+ 	* config/aarch64/aarch64.md (xorsign<mode>3): New optabs.
+ 	* config/aarch64/aarch64-builtins.c
+ 	(aarch64_builtin_vectorized_function): Added CASE_CFN_XORSIGN.
+ 	* config/aarch64/aarch64-simd-builtins.def: Added xorsign BINOP.
+ 	* config/aarch64/aarch64-simd.md: Added xorsign<mode>3
+ 
+ 2017-08-08  Tamar Christina  <tamar.christina@arm.com>
+ 	    Andrew Pinski <pinskia@gmail.com>
+ 
+ 	PR middle-end/19706
+ 	* internal-fn.def (XORSIGN): New.
+ 	* optabs.def (xorsign_optab): New.
+ 	* tree-ssa-math-opts.c (is_copysign_call_with_1): New.
+ 	(convert_expand_mult_copysign): New.
+ 	(pass_optimize_widening_mul::execute): Call
+ 	convert_expand_mult_copysign.
+ 
+ 2017-08-08  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	PR tree-optimization/81354
+ 	* gimple-ssa-strength-reduction.c (create_add_on_incoming_edge):
+ 	Insert on edges rather than explicitly creating landing pads.
+ 	(analyze_candidates_and_replace): Commit edge inserts.
+ 
+ 2017-08-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/81719
+ 	* tree-ssa-loop-niter.c: Include tree-dfa.h.
+ 	(expand_simple_operations): Also look through ADDR_EXPRs with
+ 	MEM_REF bases treating them as POINTER_PLUS_EXPR.
+ 
+ 2017-08-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/81723
+ 	* tree-vect-slp.c (struct bst_traits): New hash traits.
+ 	(bst_fail): New global.
+ 	(vect_build_slp_tree_2): New worker, split out from ...
+ 	(vect_build_slp_tree): ... this now wrapping it with using
+ 	bst_fail set to cache SLP tree build fails.  Properly handle
+ 	max_tree_size.
+ 	(vect_analyze_slp_instance): Allocate and free bst_fail.
+ 
+ 2017-08-08  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR tree-opt/81696
+ 	* ipa-icf-gimple.c (func_checker::compare_cst_or_decl): Consider
+ 	LABEL_DECLs that can be from a different function.
+ 
+ 2017-08-08  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	PR tree-optimization/81744
+ 	* tree-predcom.c (prepare_finalizers_chain): Deep copy expr of
+ 	loop's number of iterations.
+ 
+ 2017-08-08  Martin Liska  <mliska@suse.cz>
+ 
+ 	* asan.c: Include header files.
+ 	* attribs.c (build_decl_attribute_variant): New function moved
+ 	from tree.[ch].
+ 	(build_type_attribute_qual_variant): Likewise.
+ 	(cmp_attrib_identifiers): Likewise.
+ 	(simple_cst_list_equal): Likewise.
+ 	(omp_declare_simd_clauses_equal): Likewise.
+ 	(attribute_value_equal): Likewise.
+ 	(comp_type_attributes): Likewise.
+ 	(build_type_attribute_variant): Likewise.
+ 	(lookup_ident_attribute): Likewise.
+ 	(remove_attribute): Likewise.
+ 	(merge_attributes): Likewise.
+ 	(merge_type_attributes): Likewise.
+ 	(merge_decl_attributes): Likewise.
+ 	(merge_dllimport_decl_attributes): Likewise.
+ 	(handle_dll_attribute): Likewise.
+ 	(attribute_list_equal): Likewise.
+ 	(attribute_list_contained): Likewise.
+ 	* attribs.h (lookup_attribute): New function moved from tree.[ch].
+ 	(lookup_attribute_by_prefix): Likewise.
+ 	* bb-reorder.c: Include header files.
+ 	* builtins.c: Likewise.
+ 	* calls.c: Likewise.
+ 	* cfgexpand.c: Likewise.
+ 	* cgraph.c: Likewise.
+ 	* cgraphunit.c: Likewise.
+ 	* convert.c: Likewise.
+ 	* dwarf2out.c: Likewise.
+ 	* final.c: Likewise.
+ 	* fold-const.c: Likewise.
+ 	* function.c: Likewise.
+ 	* gimple-expr.c: Likewise.
+ 	* gimple-fold.c: Likewise.
+ 	* gimple-pretty-print.c: Likewise.
+ 	* gimple.c: Likewise.
+ 	* gimplify.c: Likewise.
+ 	* hsa-common.c: Likewise.
+ 	* hsa-gen.c: Likewise.
+ 	* internal-fn.c: Likewise.
+ 	* ipa-chkp.c: Likewise.
+ 	* ipa-cp.c: Likewise.
+ 	* ipa-devirt.c: Likewise.
+ 	* ipa-fnsummary.c: Likewise.
+ 	* ipa-inline.c: Likewise.
+ 	* ipa-visibility.c: Likewise.
+ 	* ipa.c: Likewise.
+ 	* lto-cgraph.c: Likewise.
+ 	* omp-expand.c: Likewise.
+ 	* omp-general.c: Likewise.
+ 	* omp-low.c: Likewise.
+ 	* omp-offload.c: Likewise.
+ 	* omp-simd-clone.c: Likewise.
+ 	* opts-global.c: Likewise.
+ 	* passes.c: Likewise.
+ 	* predict.c: Likewise.
+ 	* sancov.c: Likewise.
+ 	* sanopt.c: Likewise.
+ 	* symtab.c: Likewise.
+ 	* toplev.c: Likewise.
+ 	* trans-mem.c: Likewise.
+ 	* tree-chkp.c: Likewise.
+ 	* tree-eh.c: Likewise.
+ 	* tree-into-ssa.c: Likewise.
+ 	* tree-object-size.c: Likewise.
+ 	* tree-parloops.c: Likewise.
+ 	* tree-profile.c: Likewise.
+ 	* tree-ssa-ccp.c: Likewise.
+ 	* tree-ssa-live.c: Likewise.
+ 	* tree-ssa-loop.c: Likewise.
+ 	* tree-ssa-sccvn.c: Likewise.
+ 	* tree-ssa-structalias.c: Likewise.
+ 	* tree-ssa.c: Likewise.
+ 	* tree-streamer-in.c: Likewise.
+ 	* tree-vectorizer.c: Likewise.
+ 	* tree-vrp.c: Likewise.
+ 	* tsan.c: Likewise.
+ 	* ubsan.c: Likewise.
+ 	* varasm.c: Likewise.
+ 	* varpool.c: Likewise.
+ 	* tree.c: Remove functions moved to attribs.[ch].
+ 	* tree.h: Likewise.
+ 	* config/aarch64/aarch64.c: Add attrs.h header file.
+ 	* config/alpha/alpha.c: Likewise.
+ 	* config/arc/arc.c: Likewise.
+ 	* config/arm/arm.c: Likewise.
+ 	* config/avr/avr.c: Likewise.
+ 	* config/bfin/bfin.c: Likewise.
+ 	* config/c6x/c6x.c: Likewise.
+ 	* config/cr16/cr16.c: Likewise.
+ 	* config/cris/cris.c: Likewise.
+ 	* config/darwin.c: Likewise.
+ 	* config/epiphany/epiphany.c: Likewise.
+ 	* config/fr30/fr30.c: Likewise.
+ 	* config/frv/frv.c: Likewise.
+ 	* config/ft32/ft32.c: Likewise.
+ 	* config/h8300/h8300.c: Likewise.
+ 	* config/i386/winnt.c: Likewise.
+ 	* config/ia64/ia64.c: Likewise.
+ 	* config/iq2000/iq2000.c: Likewise.
+ 	* config/lm32/lm32.c: Likewise.
+ 	* config/m32c/m32c.c: Likewise.
+ 	* config/m32r/m32r.c: Likewise.
+ 	* config/m68k/m68k.c: Likewise.
+ 	* config/mcore/mcore.c: Likewise.
+ 	* config/microblaze/microblaze.c: Likewise.
+ 	* config/mips/mips.c: Likewise.
+ 	* config/mmix/mmix.c: Likewise.
+ 	* config/mn10300/mn10300.c: Likewise.
+ 	* config/moxie/moxie.c: Likewise.
+ 	* config/msp430/msp430.c: Likewise.
+ 	* config/nds32/nds32-isr.c: Likewise.
+ 	* config/nds32/nds32.c: Likewise.
+ 	* config/nios2/nios2.c: Likewise.
+ 	* config/nvptx/nvptx.c: Likewise.
+ 	* config/pa/pa.c: Likewise.
+ 	* config/pdp11/pdp11.c: Likewise.
+ 	* config/powerpcspe/powerpcspe.c: Likewise.
+ 	* config/riscv/riscv.c: Likewise.
+ 	* config/rl78/rl78.c: Likewise.
+ 	* config/rx/rx.c: Likewise.
+ 	* config/s390/s390.c: Likewise.
+ 	* config/sh/sh.c: Likewise.
+ 	* config/sol2.c: Likewise.
+ 	* config/sparc/sparc.c: Likewise.
+ 	* config/spu/spu.c: Likewise.
+ 	* config/stormy16/stormy16.c: Likewise.
+ 	* config/tilegx/tilegx.c: Likewise.
+ 	* config/tilepro/tilepro.c: Likewise.
+ 	* config/v850/v850.c: Likewise.
+ 	* config/vax/vax.c: Likewise.
+ 	* config/visium/visium.c: Likewise.
+ 	* config/xtensa/xtensa.c: Likewise.
+ 
+ 2017-08-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	PR target/81593
+ 	* config/rs6000/vsx.md (vsx_concat_<mode>, VSX_D): Cleanup
+ 	constraints since the -mupper-regs-* switches have been
+ 	eliminated.
+ 	(vsx_concat_<mode>_1): New combiner insns to recognize inserting
+ 	into a vector from a double word element that was extracted from
+ 	another vector, and eliminate extra XXPERMDI instructions.
+ 	(vsx_concat_<mode>_2): Likewise.
+ 	(vsx_concat_<mode>_3): Likewise.
+ 	(vsx_set_<mode>, VSX_D): Rewrite vector set in terms of vector
+ 	concat to allow optimizing inserts from previous extracts.
+ 
+ 2017-08-07  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.c (ix86_stack_protect_guard): Generate
+ 	memory reference to a SSP offset in TLS address space.
+ 	(ix86_print_operand) <case '@'>: Remove.
+ 	(ix86_print_operand_punct_valid_p): Remove '@' code.
+ 	* config/i386/i386.md (unspec): Remove UNSPEC_SP_TLS_SET and
+ 	UNSPEC_SP_TLS_TEST.
+ 	(stack_tls_protect_set_<mode>): Remove.
+ 	(stack_protect_set): Do not call gen_stack_tls_protect_set_<mode>.
+ 	(stack_tls_protect_test_<mode>): Remove.
+ 	(stack_protect_test): Do not call gen_stack_tls_protect_test_<mode>.
+ 
+ 2017-08-07  Olivier Hainque  <hainque@adacore.com>
+ 
+ 	PR target/81755
+ 	* config/vxworksae.h (VXWORKS_HAVE_TLS): Define.
+ 
+ 2017-08-07  Douglas Rupp  <rupp@adacore.com>
+ 
+ 	* Makefile.in (install-mkheaders): Fix typo, where the multi_dir
+ 	variable was referenced as multidir in command.
+ 
+ 2017-08-07  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/69389
+ 	* gimplify.c (goa_stabilize_expr): Handle BIT_INSERT_EXPR and
+ 	BIT_FIELD_REF.
+ 
+ 2017-08-07  Martin Liska  <mliska@suse.cz>
+ 
+ 	* config/m32c/m32c.c: Add include of stringpool.h and attribs.h.
+ 	* config/rl78/rl78.c: Add include of attribs.h.
+ 	* config/sh/sh.c: Likewise.
+ 	* config/v850/v850.c: Likewise.
+ 
+ 2017-08-07  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	PR middle-end/78266
+ 	* omp-expand.c (expand_oacc_for): Ensure diff_type is large enough.
+ 
+ 2017-08-07  Martin Liska  <mliska@suse.cz>
+ 
+ 	* config/mips/mips.c: Include attribs.h.
+ 
+ 2017-08-07  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/68829
+ 	* doc/invoke.texi: Document change in behvaior for -Ofast for
+ 	Fortran.
+ 
+ 2017-08-07  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_pushwb_single_reg):
+ 	Use gen_frame_mem.
+ 	(aarch64_pop_regs): Likewise.
+ 	(aarch64_gen_load_pair): Likewise.
+ 	(aarch64_save_callee_saves): Likewise.
+ 	(aarch64_restore_callee_saves): Likewise.
+ 
+ 2017-08-07  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	* config/i386/i386.c: Revert the last change.
+ 
+ 2017-08-07  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/81736
+ 	* config/i386/i386.c (ix86_finalize_stack_realign_flags): Renamed
+ 	to ...
+ 	(ix86_finalize_stack_frame_flags): This.  Also clear
+ 	frame_pointer_needed if -fno-omit-frame-pointer is used without
+ 	stack access.
+ 	(ix86_expand_prologue): Replace ix86_finalize_stack_realign_flags
+ 	with ix86_finalize_stack_frame_flags.
+ 	(ix86_expand_epilogue): Likewise.
+ 	(ix86_expand_split_stack_prologue): Likewise.
+ 
+ 2017-08-07  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/81743
+ 	* config/i386/i386.c (get_builtin_code_for_version): Set priority
+ 	to P_AES for Westmere.
+ 
+ 2017-08-07  Jonathan Yong  <10walls@gmail.com>
+ 
+ 	* config/i386/mingw.opt (fset-stack-executable): Removed.
+ 	* config/i386/cygming.opt (fset-stack-executable): Moved
+ 	from mingw.opt.
+ 	* config/i386/cygwin.h: Define CHECK_EXECUTE_STACK_ENABLED.
+ 
+ 2017-08-07  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* print-rtl.c (print_exp): Print NOT as "~" instead of as "!".
+ 
+ 2017-08-07  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR middle-end/81737
+ 	* fold-const.c (fold_indirect_ref_1): Check type_domain.
+ 
+ 2017-08-07  Martin Liska  <mliska@suse.cz>
+ 
+ 	* attribs.h (canonicalize_attr_name): New function.
+ 	(cmp_attribs): Move from c-format.c and adjusted.
+ 	(is_attribute_p): Moved from tree.h.
+ 	* tree-inline.c: Add new includes.
+ 	* tree.c (cmp_attrib_identifiers): Use cmp_attribs.
+ 	(private_is_attribute_p): Remove.
+ 	(private_lookup_attribute): Likewise.
+ 	(private_lookup_attribute_by_prefix): Simplify.
+ 	(remove_attribute): Use is_attribute_p.
+ 	* tree.h: Remove removed declarations.
+ 
+ 2017-08-07  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/81698
+ 	* stmt.c (emit_case_dispatch_table): Add DEFAULT_EDGE argument,
+ 	instead of computing it in the function.  Formatting fix.
+ 	(expand_case): Don't rely on default_edge being the first edge,
+ 	clear it if removing it, pass default_edge to
+ 	emit_case_dispatch_table.
+ 	(expand_sjlj_dispatch_table): Pass NULL as DEFAULT_EDGE, formatting
+ 	fix.
+ 
+ 2017-08-06  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/alpha/alpha.c (alpha_reorg): If trap is the last active
+ 	insn in the function, emit NOP after the insn.
+ 
+ 2017-08-06  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	* omp-expand.c (expand_oacc_for): Add missing edge probability for tile
+ 	and element loops.
+ 
+ 2017-08-06  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	* omp-expand.c (expand_oacc_for): Add missing edge probability for chunk
+ 	loop.
+ 
+ 2017-08-04  Yury Gribov  <tetra2005@gmail.com>
+ 
+ 	PR tree-optimization/57371
+ 	* match.pd: New pattern.
+ 
+ 2017-08-04  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR middle-end/81695
+ 	* fold-const.c (fold_indirect_ref_1): For ((int *)&a + 4 -> a[1],
+ 	perform the computation in offset_int.
+ 
+ 2017-08-04  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	PR tree-optimization/81136
+ 	* tree-vectorizer.h: Include tree-hash-traits.h.
+ 	(vec_base_alignments): New typedef.
+ 	(vec_info): Add a base_alignments field.
+ 	(vect_record_base_alignments): Declare.
+ 	* tree-data-ref.h (data_reference): Add an is_conditional_in_stmt
+ 	field.
+ 	(DR_IS_CONDITIONAL_IN_STMT): New macro.
+ 	(create_data_ref): Add an is_conditional_in_stmt argument.
+ 	* tree-data-ref.c (create_data_ref): Likewise.  Use it to initialize
+ 	the is_conditional_in_stmt field.
+ 	(data_ref_loc): Add an is_conditional_in_stmt field.
+ 	(get_references_in_stmt): Set the is_conditional_in_stmt field.
+ 	(find_data_references_in_stmt): Update call to create_data_ref.
+ 	(graphite_find_data_references_in_stmt): Likewise.
+ 	* tree-ssa-loop-prefetch.c (determine_loop_nest_reuse): Likewise.
+ 	* tree-vect-data-refs.c (vect_analyze_data_refs): Likewise.
+ 	(vect_record_base_alignment): New function.
+ 	(vect_record_base_alignments): Likewise.
+ 	(vect_compute_data_ref_alignment): Adjust base_addr and aligned_to
+ 	for nested statements even if we fail to compute a misalignment.
+ 	Use pooled base alignments for unconditional references.
+ 	(vect_find_same_alignment_drs): Compare base addresses instead
+ 	of base objects.
+ 	(vect_analyze_data_refs_alignment): Call vect_record_base_alignments.
+ 	* tree-vect-slp.c (vect_slp_analyze_bb_1): Likewise.
+ 
+ 2017-08-04  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* tree-vectorizer.h (vec_info): Add a constructor and destructor.
+ 	Add an explicit name for the enum.  Use auto_vec for slp_instances
+ 	and grouped_stores.
+ 	(_loop_vec_info): Add a constructor and destructor.  Use auto_vec
+ 	for all vectors.
+ 	(_bb_vec_info): Add a constructor and destructor.
+ 	(vinfo_for_stmt): Return NULL for uids of -1 as well.
+ 	(destroy_loop_vec_info): Delete.
+ 	(vect_destroy_datarefs): Likewise.
+ 	* tree-vectorizer.c (vect_destroy_datarefs): Delete.
+ 	(vec_info::vec_info): New function.
+ 	(vec_info::~vec_info): Likewise.
+ 	(vectorize_loops): Use delete instead of destroy_loop_vec_info.
+ 	* tree-parloops.c (gather_scalar_reductions): Use delete instead of
+ 	destroy_loop_vec_info.
+ 	* tree-vect-loop.c (new_loop_vec_info): Replace with...
+ 	(_loop_vec_info::_loop_vec_info): ...this.
+ 	(destroy_loop_vec_info): Replace with...
+ 	(_loop_vec_info::~_loop_vec_info): ...this.  Unconditionally delete
+ 	the stmt_vec_infos.  Leave handling of vec_info information to its
+ 	destructor.  Remove explicit vector releases.
+ 	(vect_analyze_loop_form): Use new instead of new_loop_vec_info.
+ 	(vect_analyze_loop): Use delete instead of destroy_loop_vec_info.
+ 	* tree-vect-slp.c (new_bb_vec_info): Replace with...
+ 	(_bb_vec_info::_bb_vec_info): ...this.  Don't reserve space in
+ 	BB_VINFO_GROUPED_STORES or BB_VINFO_SLP_INSTANCES.
+ 	(destroy_bb_vec_info): Replace with...
+ 	(_bb_vec_info::~_bb_vec_info): ...this.  Leave handling of vec_info
+ 	information to its destructor.
+ 	(vect_slp_analyze_bb_1): Use new and delete instead of
+ 	new_bb_vec_info and destroy_bb_vec_info.
+ 	(vect_slp_bb): Replace 2 calls to destroy_bb_vec_info with a
+ 	single delete.
+ 
+ 2017-08-04  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* tree-data-ref.h (subscript): Add access_fn field.
+ 	(data_dependence_relation): Add could_be_independent_p.
+ 	(SUB_ACCESS_FN, DDR_COULD_BE_INDEPENDENT_P): New macros.
+ 	(same_access_functions): Move to tree-data-ref.c.
+ 	* tree-data-ref.c (ref_contains_union_access_p): New function.
+ 	(access_fn_component_p): Likewise.
+ 	(access_fn_components_comparable_p): Likewise.
+ 	(dr_analyze_indices): Add a reference to access_fn_component_p.
+ 	(dump_data_dependence_relation): Use SUB_ACCESS_FN instead of
+ 	DR_ACCESS_FN.
+ 	(constant_access_functions): Likewise.
+ 	(add_other_self_distances): Likewise.
+ 	(same_access_functions): Likewise.  (Moved from tree-data-ref.h.)
+ 	(initialize_data_dependence_relation): Use XCNEW and remove
+ 	explicit zeroing of DDR_REVERSED_P.  Look for a subsequence
+ 	of access functions that have the same type.  Allow the
+ 	subsequence to end with different bases in some circumstances.
+ 	Record the chosen access functions in SUB_ACCESS_FN.
+ 	(build_classic_dist_vector_1): Replace ddr_a and ddr_b with
+ 	a_index and b_index.  Use SUB_ACCESS_FN instead of DR_ACCESS_FN.
+ 	(subscript_dependence_tester_1): Likewise dra and drb.
+ 	(build_classic_dist_vector): Update calls accordingly.
+ 	(subscript_dependence_tester): Likewise.
+ 	* tree-ssa-loop-prefetch.c (determine_loop_nest_reuse): Check
+ 	DDR_COULD_BE_INDEPENDENT_P.
+ 	* tree-vectorizer.h (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Test
+ 	comp_alias_ddrs instead of may_alias_ddrs.
+ 	* tree-vect-data-refs.c (vect_analyze_possibly_independent_ddr):
+ 	New function.
+ 	(vect_analyze_data_ref_dependence): Use it if
+ 	DDR_COULD_BE_INDEPENDENT_P, but fall back to using the recorded
+ 	distance vectors if that fails.
+ 	(dependence_distance_ge_vf): New function.
+ 	(vect_prune_runtime_alias_test_list): Use it.  Don't clear
+ 	LOOP_VINFO_MAY_ALIAS_DDRS.
+ 
+ 2017-08-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/81705
+ 	* fold-const.c (fold_binary_loc): Properly restrict
+ 	minus_var0 && minus_var1 case when associating undefined overflow
+ 	entities.
+ 
+ 2017-08-04  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	* omp-simd-clone.c (simd_clone_adjust): Add missing edge probability.
+ 
+ 2017-08-03  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
+ 	Don't start diagnostic messages with a capital letter.
+ 	* config/rs6000/rs6000.c (rs6000_option_override_internal):
+ 	Likewise.
+ 	(rs6000_invalid_builtin): Likewise.
+ 	(rs6000_trampoline_init): Likewise.
+ 
+ 2017-08-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/81621
+ 	* bb-reorder.c (pass_partition_blocks::execute): Return TODO_df_finish
+ 	after setting changeable df flags.
+ 
+ 2017-08-03  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-reassoc.c (should_break_up_subtract): Also break
+ 	up if the use is in USE - X.
+ 
+ 2017-08-03  Alexander Monakov  <amonakov@ispras.ru>
+ 
+ 	* toplev.c (dumpfile.h): New include.
+ 	(internal_error_reentered): New static function.  Use it...
+ 	(internal_error_function): ...here to handle reentered internal_error.
+ 
+ 2017-08-03  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/81148
+ 	* fold-const.c (split_tree): Add minus_var and minus_con
+ 	arguments, remove unused loc arg.  Never generate NEGATE_EXPRs
+ 	here but always use minus_*.
+ 	(associate_trees): Assert we never associate with MINUS_EXPR
+ 	and NULL first operand.  Do not recurse for PLUS_EXPR operands
+ 	when associating as MINUS_EXPR either.
+ 	(fold_binary_loc): Track minus_var and minus_con.
+ 
+ 2017-08-03  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	PR lto/81430
+ 	* tree-streamer-in.c (lto_input_ts_function_decl_tree_pointers): If
+ 	ACCEL_COMPILER, apply finish_options on
+ 	DECL_FUNCTION_SPECIFIC_OPTIMIZATION.
+ 
+ 2017-08-03  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	PR target/81662
+ 	* config/nvptx/nvptx.c (nvptx_option_override): Emit sorry if
+ 	function_entry_patch_area_size > 0.
+ 
+ 2017-08-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR driver/81650
+ 	* calls.c (alloc_max_size): Use HOST_WIDE_INT_UC (10??)
+ 	instead of 10??LU, perform unit multiplication in wide_int,
+ 	don't change alloc_object_size_limit if the limit is larger
+ 	than SSIZE_MAX.
+ 
+ 	PR tree-optimization/81655
+ 	PR tree-optimization/81588
+ 	* tree-ssa-reassoc.c (optimize_range_tests_var_bound): Handle also
+ 	the case when ranges[i].low and high are 1 for unsigned type with
+ 	precision 1.
+ 
+ 	PR middle-end/81052
+ 	* omp-low.c (diagnose_sb_0): Handle flag_openmp_simd like flag_openmp.
+ 	(pass_diagnose_omp_blocks::gate): Enable also for flag_openmp_simd.
+ 
+ 2017-08-03  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
+ 
+ 	* tree-vrp.h: Add include guard.
+ 
+ 2017-08-02  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/81644
+ 	* config/i386/i386.md (unspecv): Add UNSPECV_UD2.
+ 	(ud2): New insn pattern.
+ 	* config/i386/i386.c (ix86_expand_epilogue):
+ 	For naked functions, generate ud2 instead of trap insn.
+ 
+ 2017-08-02  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR other/81667
+ 	* alloc-pool.h (base_pool_allocator): Initialize m_elt_size.
+ 
+ 2017-08-02  Tom de Vries  <tom@codesourcery.com>
+ 	    Cesar Philippidis  <cesar@codesourcery.com>
+ 
+ 	* config/nvptx/nvptx.c (nvptx_lockless_update, nvptx_lockfull_update):
+ 	Add missing edge probabilities.
+ 
+ 2017-08-02  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_reinterpret_float_as_int):
+ 	Correct endianness.
+ 
+ 2017-08-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/79499
+ 	* function.c (thread_prologue_and_epilogue_insns): Determine blocks
+ 	for find_many_sub_basic_blocks bitmap by looking up BLOCK_FOR_INSN
+ 	of first NONDEBUG_INSN_P in each of the split_prologue_seq and
+ 	prologue_seq sequences - if any.
+ 
+ 2017-08-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-stmts.c (vectorizable_store): Perform vector extracts
+ 	via vectors if supported, integer extracts via punning if supported
+ 	or otherwise vector extracts.
+ 
+ 2017-08-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-pre.c (bitmap_insert_into_set_1): Remove and inline
+ 	into ...
+ 	(bitmap_insert_into_set): ... this.
+ 
+ 2017-08-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/81633
+ 	Revert
+ 	2015-08-17  Alan Hayward  <alan.hayward@arm.com>
+ 
+ 	PR tree-optimization/71752
+ 	* tree-vect-slp.c (vect_get_slp_defs): Handle null operands.
+ 
+ 2017-08-01  Daniel Santos  <daniel.santos@pobox.com>
+ 
+ 	* config/i386/i386.h (ix86_frame::outlined_save_offset): Remove field.
+ 	(machine_function::call_ms2sysv_pad_out): Remove field.
+ 	* config/i386/i386.c (xlogue_layout::get_stack_space_used): Modify.
+ 	(ix86_compute_frame_layout): Likewise.
+ 
+ 2017-08-01  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/81654
+ 	* config/i386/i386.c (ix86_set_func_type): Disallow naked
+ 	attribute with interrupt attribute.
+ 
+ 2017-08-01  Andrew Pinski  <apinski@cavium.com>
+ 
+ 	* tree-ssa-scopedtables.c (hashable_expr_equal_p): Check
+ 	BIT_INSERT_EXPR's operand 1
+ 	to see if the types precision matches.
+ 
+ 2017-08-01  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR middle-end/70140
+ 	* builtins.c (expand_builtin_memcpy_args): Remove.
+ 	(expand_builtin_memcpy): Call newly added function
+ 	expand_builtin_memory_copy_args.
+ 	(expand_builtin_memcpy_with_bounds): Likewise.
+ 	(expand_builtin_mempcpy): Remove last argument.
+ 	(expand_builtin_mempcpy_with_bounds): Likewise.
+ 	(expand_builtin_memory_copy_args): New function created from
+ 	expand_builtin_mempcpy_args with small modifications.
+ 	(expand_builtin_mempcpy_args): Remove.
+ 	(expand_builtin_stpcpy): Remove unused argument.
+ 	(expand_builtin): Likewise.
+ 	(expand_builtin_with_bounds): Likewise.
+ 
+ 2017-08-01  Martin Liska  <mliska@suse.cz>
+ 
+ 	Revert r250771
+ 	Make mempcpy more optimal (PR middle-end/70140).
+ 
+ 2017-08-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/81622
+ 	* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): For
+ 	__builtin_vec_cmpne verify both arguments are compatible vectors
+ 	before looking at TYPE_MODE on the element type.  For __builtin_vec_ld
+ 	verify arg1_type is a pointer or array type.  For __builtin_vec_st,
+ 	move computation of aligned to after checking the argument types.
+ 	Formatting fixes.
+ 
+ 	PR target/80846
+ 	* config/rs6000/vsx.md (vextract_fp_from_shorth,
+ 	vextract_fp_from_shortl): Add element mode after mode in gen_vec_init*
+ 	calls.
+ 
+ 2017-08-01  Jerome Lambourg  <lambourg@adacore.com>
+ 	    Doug Rupp  <rupp@adacore.com>
+ 	    Olivier Hainque  <hainque@adacore.com>
+ 
+ 	* config.gcc (arm-wrs-vxworks*): Rework to handle arm-wrs-vxworks7 as
+ 	well as arm-wrs-vxworks. Update target_cpu_name from arm6 (arch v3) to
+ 	arm8 (arch v4).
+ 	* config/arm/vxworks.h (MAYBE_TARGET_BPABI_CPP_BUILTINS): New, helper
+ 	for TARGET_OS_CPP_BUILTIN.
+ 	(TARGET_OS_CPP_BUILTIN): Invoke MAYBE_TARGET_BPABI_CPP_BUILTINS(),
+ 	refine CPU definitions for arm_arch5 and add those for arm_arch6 and
+ 	arm_arch7.
+ 	(MAYBE_ASM_ABI_SPEC): New, helper for SUBTARGET_EXTRA_ASM_SPEC,
+ 	passing required abi options to the assembler for EABI configurations.
+ 	(EXTRA_CC1_SPEC): New macro, to help prevent the implicit production
+ 	of .text.hot and .text.unlikely sections for kernel modules when
+ 	using ARM style exceptions.
+ 	(CC1_SPEC): Remove obsolete attempt at mimicking Diab toolchain
+ 	options. Add EXTRA_CC1_SPEC.
+ 	(VXWORKS_ENDIAN_SPEC): Adjust comment and remove handling of Diab
+ 	toolchain options.
+ 	(DWARF2_UNWIND_INFO): Redefine to handle the pre/post VxWorks 7
+ 	transition.
+ 	(ARM_TARGET2_DWARF_FORMAT): Define.
+ 	* config/arm/t-vxworks: Adjust multilib control to removal of the
+ 	Diab command line options.
+ 
+ 2017-08-01  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR gcov-profile/81561
+ 	* gcov.c (unblock): Make unblocking safe as we need to preserve
+ 	index correspondence of blocks and block_lists.
+ 
+ 2017-08-01  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/81181
+ 	* tree-ssa-pre.c (compute_antic_aux): Defer clean() to ...
+ 	(compute_antic): ... end of iteration here.
+ 
+ 2017-08-01  James Greenhalgh  <james.greenhalgh@arm.com>
+ 
+ 	* common.opt (ftree-vectorize): No longer set flag_tree_vectorize.
+ 	(ftree-loop-vectorize): Set as EnabledBy ftree-vectorize.
+ 	(ftree-slp-vectorize): Likewise.
+ 	* omp-expand (expand_omp_simd): Remove flag_tree_vectorize, as it
+ 	can no longer be set independent of flag_tree_loop_vectorize.
+ 	* omp-general.c (emp_max_vf): Likewise.
+ 	* opts.c (enable_fdo_optimizations): Remove references to
+ 	flag_tree_vectorize, these are now implicit.
+ 	(common_handle_option): Remove handling for OPT_ftree_vectorize,
+ 	and leave it for the options machinery.
+ 
+ 2017-08-01  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR middle-end/70140
+ 	* builtins.c (expand_builtin_memcpy_args): Remove.
+ 	(expand_builtin_memcpy): Call newly added function
+ 	expand_builtin_memory_copy_args.
+ 	(expand_builtin_memcpy_with_bounds): Likewise.
+ 	(expand_builtin_mempcpy): Remove last argument.
+ 	(expand_builtin_mempcpy_with_bounds): Likewise.
+ 	(expand_builtin_memory_copy_args): New function created from
+ 	expand_builtin_mempcpy_args with small modifications.
+ 	(expand_builtin_mempcpy_args): Remove.
+ 	(expand_builtin_stpcpy): Remove unused argument.
+ 	(expand_builtin): Likewise.
+ 	(expand_builtin_with_bounds): Likewise.
+ 
+ 2017-08-01  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/81641
+ 	* config/i386/i386.c (ix86_print_operand_address_as): For -masm=intel
+ 	print "ds:" only for immediates in generic address space.
+ 
+ 2017-08-01  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/81639
+ 	* config/i386/i386.c (ix86_funciton_naked): New prototype.
+ 	(ix86_function_ok_for_sibcall): Return false for naked functions.
+ 
+ 2017-08-01  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-pre.c (print_pre_expr): Handle NULL expr.
+ 	(compute_antic): Seed worklist with exit block predecessors.
+ 	* cfganal.c (dfs_find_deadend): For a cycle return the source
+ 	of the edge closing it.
+ 
+ 2017-08-01  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* config/aarch64/aarch64.c
+ 	(aarch64_can_const_movi_rtx_p): Move 0 check.
+ 
+ 2017-08-01  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree.h (POINTER_TYPE_OVERFLOW_UNDEFINED): Delete.
+ 	* fold-const.c (fold_comparison, fold_binary_loc): Delete use of
+ 	above macro.
+ 	* match.pd: Ditto in address comparison pattern.
+ 
+ 2017-08-01  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	PR tree-optimization/81627
+ 	* tree-predcom.c (prepare_finalizers): Always rewrite into loop
+ 	closed ssa form for store-store chain.
+ 
+ 2017-08-01  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	PR tree-optimization/81620
+ 	* tree-predcom.c (add_ref_to_chain): Don't set has_max_use_after
+ 	for store-store chain.
+ 
+ 2017-08-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/81588
+ 	* tree-ssa-reassoc.c (optimize_range_tests_var_bound): If
+ 	ranges[i].in_p, invert comparison code ccode.  For >/>=,
+ 	swap rhs1 and rhs2 and comparison code unconditionally,
+ 	for </<= don't do that.  Don't swap rhs1/rhs2 again if
+ 	ranges[i].in_p, instead invert comparison code ccode if
+ 	opcode or oe->rank is BIT_IOR_EXPR.
+ 
+ 	PR target/80846
+ 	* optabs.def (vec_extract_optab, vec_init_optab): Change from
+ 	a direct optab to conversion optab.
+ 	* optabs.c (expand_vector_broadcast): Use convert_optab_handler
+ 	with GET_MODE_INNER as last argument instead of optab_handler.
+ 	* expmed.c (extract_bit_field_1): Likewise.  Use vector from
+ 	vector extraction if possible and optab is available.
+ 	* expr.c (store_constructor): Use convert_optab_handler instead
+ 	of optab_handler.  Use vector initialization from smaller
+ 	vectors if possible and optab is available.
+ 	* tree-vect-stmts.c (vectorizable_load): Likewise.
+ 	* doc/md.texi (vec_extract, vec_init): Document that the optabs
+ 	now have two modes.
+ 	* config/i386/i386.c (ix86_expand_vector_init): Handle expansion
+ 	of vec_init from half-sized vectors with the same element mode.
+ 	* config/i386/sse.md (ssehalfvecmode): Add V4TI case.
+ 	(ssehalfvecmodelower, ssescalarmodelower): New mode attributes.
+ 	(reduc_plus_scal_v8df, reduc_plus_scal_v4df, reduc_plus_scal_v2df,
+ 	reduc_plus_scal_v16sf, reduc_plus_scal_v8sf, reduc_plus_scal_v4sf,
+ 	reduc_<code>_scal_<mode>, reduc_umin_scal_v8hi): Add element mode
+ 	after mode in gen_vec_extract* calls.
+ 	(vec_extract<mode>): Renamed to ...
+ 	(vec_extract<mode><ssescalarmodelower>): ... this.
+ 	(vec_extract<mode><ssehalfvecmodelower>): New expander.
+ 	(rotl<mode>3, rotr<mode>3, <shift_insn><mode>3, ashrv2di3): Add
+ 	element mode after mode in gen_vec_init* calls.
+ 	(VEC_INIT_HALF_MODE): New mode iterator.
+ 	(vec_init<mode>): Renamed to ...
+ 	(vec_init<mode><ssescalarmodelower>): ... this.
+ 	(vec_init<mode><ssehalfvecmodelower>): New expander.
+ 	* config/i386/mmx.md (vec_extractv2sf): Renamed to ...
+ 	(vec_extractv2sfsf): ... this.
+ 	(vec_initv2sf): Renamed to ...
+ 	(vec_initv2sfsf): ... this.
+ 	(vec_extractv2si): Renamed to ...
+ 	(vec_extractv2sisi): ... this.
+ 	(vec_initv2si): Renamed to ...
+ 	(vec_initv2sisi): ... this.
+ 	(vec_extractv4hi): Renamed to ...
+ 	(vec_extractv4hihi): ... this.
+ 	(vec_initv4hi): Renamed to ...
+ 	(vec_initv4hihi): ... this.
+ 	(vec_extractv8qi): Renamed to ...
+ 	(vec_extractv8qiqi): ... this.
+ 	(vec_initv8qi): Renamed to ...
+ 	(vec_initv8qiqi): ... this.
+ 	* config/rs6000/vector.md (VEC_base_l): New mode attribute.
+ 	(vec_init<mode>): Renamed to ...
+ 	(vec_init<mode><VEC_base_l>): ... this.
+ 	(vec_extract<mode>): Renamed to ...
+ 	(vec_extract<mode><VEC_base_l>): ... this.
+ 	* config/rs6000/paired.md (vec_initv2sf): Renamed to ...
+ 	(vec_initv2sfsf): ... this.
+ 	* config/rs6000/altivec.md (splitter, altivec_copysign_v4sf3,
+ 	vec_unpacku_hi_v16qi, vec_unpacku_hi_v8hi, vec_unpacku_lo_v16qi,
+ 	vec_unpacku_lo_v8hi, mulv16qi3, altivec_vreve<mode>2): Add
+ 	element mode after mode in gen_vec_init* calls.
+ 	* config/aarch64/aarch64-simd.md (vec_init<mode>): Renamed to ...
+ 	(vec_init<mode><Vel>): ... this.
+ 	(vec_extract<mode>): Renamed to ...
+ 	(vec_extract<mode><Vel>): ... this.
+ 	* config/aarch64/iterators.md (Vel): New mode attribute.
+ 	* config/s390/s390.c (s390_expand_vec_strlen, s390_expand_vec_movstr):
+ 	Add element mode after mode in gen_vec_extract* calls.
+ 	* config/s390/vector.md (non_vec_l): New mode attribute.
+ 	(vec_extract<mode>): Renamed to ...
+ 	(vec_extract<mode><non_vec_l>): ... this.
+ 	(vec_init<mode>): Renamed to ...
+ 	(vec_init<mode><non_vec_l>): ... this.
+ 	* config/s390/s390-builtins.def (s390_vlgvb, s390_vlgvh, s390_vlgvf,
+ 	s390_vlgvf_flt, s390_vlgvg, s390_vlgvg_dbl): Add element mode after
+ 	vec_extract mode.
+ 	* config/arm/iterators.md (V_elem_l): New mode attribute.
+ 	* config/arm/neon.md (vec_extract<mode>): Renamed to ...
+ 	(vec_extract<mode><V_elem_l>): ... this.
+ 	(vec_extractv2di): Renamed to ...
+ 	(vec_extractv2didi): ... this.
+ 	(vec_init<mode>): Renamed to ...
+ 	(vec_init<mode><V_elem_l>): ... this.
+ 	(reduc_plus_scal_<mode>, reduc_plus_scal_v2di, reduc_smin_scal_<mode>,
+ 	reduc_smax_scal_<mode>, reduc_umin_scal_<mode>,
+ 	reduc_umax_scal_<mode>, neon_vget_lane<mode>, neon_vget_laneu<mode>):
+ 	Add element mode after gen_vec_extract* calls.
+ 	* config/mips/mips-msa.md (vec_init<mode>): Renamed to ...
+ 	(vec_init<mode><unitmode>): ... this.
+ 	(vec_extract<mode>): Renamed to ...
+ 	(vec_extract<mode><unitmode>): ... this.
+ 	* config/mips/loongson.md (vec_init<mode>): Renamed to ...
+ 	(vec_init<mode><unitmode>): ... this.
+ 	* config/mips/mips-ps-3d.md (vec_initv2sf): Renamed to ...
+ 	(vec_initv2sfsf): ... this.
+ 	(vec_extractv2sf): Renamed to ...
+ 	(vec_extractv2sfsf): ... this.
+ 	(reduc_plus_scal_v2sf, reduc_smin_scal_v2sf, reduc_smax_scal_v2sf):
+ 	Add element mode after gen_vec_extract* calls.
+ 	* config/mips/mips.md (unitmode): New mode iterator.
+ 	* config/spu/spu.c (spu_expand_prologue, spu_allocate_stack,
+ 	spu_builtin_extract): Add element mode after gen_vec_extract* calls.
+ 	* config/spu/spu.md (inner_l): New mode attribute.
+ 	(vec_init<mode>): Renamed to ...
+ 	(vec_init<mode><inner_l>): ... this.
+ 	(vec_extract<mode>): Renamed to ...
+ 	(vec_extract<mode><inner_l>): ... this.
+ 	* config/sparc/sparc.md (veltmode): New mode iterator.
+ 	(vec_init<VMALL:mode>): Renamed to ...
+ 	(vec_init<VMALL:mode><VMALL:veltmode>): ... this.
+ 	* config/ia64/vect.md (vec_initv2si): Renamed to ...
+ 	(vec_initv2sisi): ... this.
+ 	(vec_initv2sf): Renamed to ...
+ 	(vec_initv2sfsf): ... this.
+ 	(vec_extractv2sf): Renamed to ...
+ 	(vec_extractv2sfsf): ... this.
+ 	* config/powerpcspe/vector.md (VEC_base_l): New mode attribute.
+ 	(vec_init<mode>): Renamed to ...
+ 	(vec_init<mode><VEC_base_l>): ... this.
+ 	(vec_extract<mode>): Renamed to ...
+ 	(vec_extract<mode><VEC_base_l>): ... this.
+ 	* config/powerpcspe/paired.md (vec_initv2sf): Renamed to ...
+ 	(vec_initv2sfsf): ... this.
+ 	* config/powerpcspe/altivec.md (splitter, altivec_copysign_v4sf3,
+ 	vec_unpacku_hi_v16qi, vec_unpacku_hi_v8hi, vec_unpacku_lo_v16qi,
+ 	vec_unpacku_lo_v8hi, mulv16qi3): Add element mode after mode in
+ 	gen_vec_init* calls.
+ 
+ 2017-08-01  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/81297
+ 	* tree-vrp.c (get_single_symbol): Remove assert, instead drop
+ 	TREE_OVERFLOW from INTEGER_CSTs.
+ 
+ 2017-07-31  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/rs6000.c (enum rs6000_reg_type): Delete trailing comma.
+ 
+ 2017-07-31  Carl Love  <cel@us.ibm.com>
+ 
+ 	* config/rs6000/rs6000-c: Add support for built-in functions
+ 	vector signed char vec_xl_be (signed long long, signed char *);
+ 	vector unsigned char vec_xl_be (signed long long, unsigned char *);
+ 	vector signed int vec_xl_be (signed long long, signed int *);
+ 	vector unsigned int vec_xl_be (signed long long, unsigned int *);
+ 	vector signed long long vec_xl_be (signed long long, signed long long *);
+ 	vector unsigned long long vec_xl_be (signed long long, unsigned long long *);
+ 	vector signed short vec_xl_be (signed long long, signed short *);
+ 	vector unsigned short vec_xl_be (signed long long, unsigned short *);
+ 	vector double vec_xl_be (signed long long, double *);
+ 	vector float vec_xl_be (signed long long, float *);
+ 	* config/rs6000/altivec.h (vec_xl_be): Add #define.
+ 	* config/rs6000/rs6000-builtin.def (XL_BE_V16QI, XL_BE_V8HI, XL_BE_V4SI)
+ 	XL_BE_V2DI, XL_BE_V4SF, XL_BE_V2DF, XL_BE): Add definitions
+ 	for the builtins.
+ 	* config/rs6000/rs6000.c (altivec_expand_xl_be_builtin): Add function.
+ 	(altivec_expand_builtin): Add switch statement to call
+ 	altivec_expand_xl_be for each builtin.
+ 	(altivec_init_builtins): Add def_builtin for _builtin_vsx_le_be_v8hi,
+ 	__builtin_vsx_le_be_v4si, __builtin_vsx_le_be_v2di,
+ 	__builtin_vsx_le_be_v4sf, __builtin_vsx_le_be_v2df,
+ 	__builtin_vsx_le_be_v16qi.
+ 	* doc/extend.texi: Update the built-in documentation file for the
+ 	new built-in functions.
+ 
+ 2017-07-31  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/25967
+ 	* config/i386/i386.c (ix86_allocate_stack_slots_for_args):
+ 	New function.
+ 	(TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS): Define.
+ 
+ 2017-07-31  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	* config.gcc: Add z14.
+ 	* config/s390/driver-native.c (s390_host_detect_local_cpu): Add
+ 	CPU model numbers for z13s and z14.
+ 	* config/s390/s390-c.c (s390_resolve_overloaded_builtin): Replace
+ 	arch12 with z14.
+ 	* config/s390/s390-opts.h (enum processor_type): Rename
+ 	PROCESSOR_ARCH12 to PROCESSOR_3906_Z14.
+ 	* config/s390/s390.c (processor_table): Add field for CPU name to
+ 	be passed to Binutils.
+ 	(s390_asm_output_machine_for_arch): Use the new field in
+ 	processor_table for Binutils.
+ 	(s390_expand_builtin): Replace arch12 with z14.
+ 	(s390_issue_rate): Rename PROCESSOR_ARCH12 to PROCESSOR_3906_Z14.
+ 	(s390_get_sched_attrmask): Likewise.
+ 	(s390_get_unit_mask): Likewise.
+ 	* config/s390/s390.opt: Add z14 to processor_type enum.
+ 
+ 2017-07-31  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR hsa/81477
+ 	* ipa-fnsummary.c (ipa_fn_summary_generate): Set versionable
+ 	regardless of optimization level.
+ 
+ 2017-07-31  Jan Hubicka <hubicka@ucw.cz>
+ 	    Martin Liska  <mliska@suse.cz>
+ 
+ 	* predict.def: Remove old comment and adjust probability.
+ 	* gimplify.c (should_warn_for_implicit_fallthrough): Ignore
+ 	PREDICT statements.
+ 
+ 2017-07-31  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/25967
+ 	* config/i386/i386.c (ix86_function_naked): New function.
+ 	(ix86_can_use_return_insn_p): Return false for naked functions.
+ 	(ix86_expand_prologue): Skip prologue for naked functions.
+ 	(ix86_expand_epilogue): Skip epilogue for naked functions
+ 	and emit trap instruction.
+ 	(ix86_warn_func_return): New function.
+ 	(ix86_attribute_table): Add "naked" attribute specification.
+ 	(TARGET_WARN_FUNC_RETURN): Define.
+ 	* doc/extend.texi (x86 Function Attributes) <naked>: Document it.
+ 
+ 2017-07-31  Martin Liska  <mliska@suse.cz>
+ 
+ 	* gimple-pretty-print.c (dump_gimple_label): Never dump BB info.
+ 	(dump_gimple_bb_header): Always dump BB info.
+ 	(pp_cfg_jump): Do not append info about BB when dumping a jump.
+ 
+ 2017-07-31  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR sanitize/81530
+ 	* convert.c (convert_to_integer_1): Guard condition with flag_sanitize_p
+ 	also with current_function_decl non-null equality.
+ 
+ 2017-07-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/81604
+ 	* ubsan.c (ubsan_type_descriptor): For UBSAN_PRINT_ARRAY don't
+ 	change type to the element type, instead add eltype variable and
+ 	use it where we are interested in the element type.
+ 
+ 	PR tree-optimization/81603
+ 	* ipa-polymorphic-call.c
+ 	(ipa_polymorphic_call_context::ipa_polymorphic_call_context): Perform
+ 	offset arithmetic in offset_int, bail out if the resulting bit offset
+ 	doesn't fit into shwi.
+ 
+ 2017-07-31  Martin Liska  <mliska@suse.cz>
+ 
+ 	* gimplify.c (mostly_copy_tree_r): Remove Java specific hunk.
+ 	(gimplify_save_expr): Fix comment.
+ 
+ 2017-07-30  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/79793
+ 	* config/i386/i386.c (ix86_function_arg): Update arguments for
+ 	exception handler.
+ 	(ix86_compute_frame_layout): Set the initial stack offset to
+ 	INCOMING_FRAME_SP_OFFSET.  Update red-zone offset with
+ 	INCOMING_FRAME_SP_OFFSET.
+ 	(ix86_expand_epilogue): Don't pop the 'ERROR_CODE' off the
+ 	stack before exception handler returns.
+ 	* config/i386/i386.h (INCOMING_FRAME_SP_OFFSET): Add the
+ 	the 'ERROR_CODE' for exception handler.
+ 
+ 2017-07-30  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.h (ASM_PRINTF_EXTENSIONS): New macro.
+ 	(ASM_OUTPUT_REG_PUSH): Rewrite with new operand modifiers.
+ 	(ASM_OUTPUT_REG_POP): Ditto.
+ 	* config/i386/i386.c (ix86_asm_output_function_label): Use fputs
+ 	instead of asm_fprintf to output pure string.
+ 
+ 2017-07-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* debug.h (struct gcc_debug_hooks): Add IMPLICIT argument
+ 	to imported_module_or_decl hook.
+ 	(debug_nothing_tree_tree_tree_bool): Remove.
+ 	(debug_nothing_tree_tree_tree_bool_bool): New declaration.
+ 	* debug.c (do_nothing_debug_hooks): Use
+ 	debug_nothing_tree_tree_tree_bool_bool instead of
+ 	debug_nothing_tree_tree_tree_bool.
+ 	* vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
+ 	* dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Likewise.
+ 	* sdbout.c (sdb_debug_hooks): Likewise.
+ 	* dwarf2out.c (dwarf2_lineno_debug_hooks): Likewise.
+ 	(gen_namespace_die): Add DW_AT_export_symbols attribute if
+ 	langhook wants it.
+ 	(dwarf2out_imported_module_or_decl): Add IMPLICIT argument,
+ 	if true, -gdwarf-5 and decl will have DW_AT_export_symbols
+ 	attribute, don't add anything.
+ 
+ 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
+ 
+ 	* fold-const.c (fold_build1_stat_loc): Remove _stat from name.
+ 	(fold_build2_stat_loc): Likewise.
+ 	(fold_build3_stat_loc): Likewise.
+ 	* fold-const.h (fold_build1, fold_build2, fold_build3): Adjust.
+ 	(fold_build1_loc): Remove macro.
+ 	(fold_build2_loc): Likewise.
+ 	(fold_build3_loc): Likewise.
+ 
+ 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
+ 
+ 	* gimple.c (gimple_build_debug_bind_stat): Remove _stat from name.
+ 	(gimple_build_debug_bind_source_stat): Likewise.
+ 	* gimple.h (gimple_build_debug_bind): Remove macro.
+ 	(gimple_build_debug_bind_source): Likewise.
+ 
+ 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
+ 
+ 	* bitmap.c (bitmap_alloc): Adjust.
+ 	(bitmap_gc_alloc): Likewise.
+ 	* bitmap.h (bitmap_initialize_stat): Remove _stat from name.
+ 
+ 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
+ 
+ 	* bitmap.c (bitmap_obstack_alloc_stat): Rename to bitmap_alloc.
+ 	(bitmap_gc_alloc_stat): Rename to bitmap_gc_alloc.
+ 	* bitmap.h (bitmap_obstack_alloc_stat): Adjust prototype.
+ 	(bitmap_gc_alloc_stat): Likewise.
+ 	(BITMAP_ALLOC, BITMAP_GGC_ALLOC): Adjust.
+ 
+ 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
+ 
+ 	* rtl.c (shallow_copy_rtx_stat): Remove _stat from name.
+ 	* rtl.h (shallow_copy_rtx): Remove macro.
+ 
+ 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
+ 
+ 	* emit-rtl.c (gen_raw_REG): Adjust.
+ 	* gengenrtl.c (gendef): Likewise.
+ 	* rtl.c (rtx_alloc_stat): Remove _stat from name.
+ 	* rtl.h (rtx_alloc): Remove macro.
+ 
+ 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
+ 
+ 	* tree.c (build_tree_list_vec_stat): Remove _stat from name.
+ 	(build_tree_list_stat): Likewise.
+ 	* tree.h (build_tree_list): Remove macro.
+ 	(build_tree_list_vec): Likewise.
+ 
+ 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
+ 
+ 	* tree.c (make_vector_stat): Remove _stat from name.
+ 	(build_vector_stat): Likewise.
+ 	* tree.h (make_vector_stat): Remove macro.
+ 	(build_vector_stat): Likewise.
+ 
+ 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
+ 
+ 	* tree.h (build_var_debug_value): Remove prototype.
+ 
+ 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
+ 
+ 	* tree.c (tree_cons_stat): Remove _stat from name.
+ 	* tree.h (tree_cons): Remove macro.
+ 
+ 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
+ 
+ 	* tree.c (build_vl_exp_stat): Remove _stat from name.
+ 	* tree.h (build_vl_exp): Remove macro.
+ 
+ 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
+ 
+ 	* tree.c (build_decl_stat): Remove _stat from name.
+ 	* tree.h (build_decl): Remove macro.
+ 
+ 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
+ 
+ 	* gimple.c (gimple_build_with_ops_stat): Adjust.
+ 	(gimple_alloc_stat): Remove _stat from name.
+ 	* gimple.h (gimple_alloc): Remove macro.
+ 
+ 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
+ 
+ 	* tree.c (make_tree_vec_stat): Remove _stat from name.
+ 	(grow_tree_vec_stat): Likewise.
+ 	* tree.h (make_tree_vec_stat): Adjust prototype.
+ 	(grow_tree_vec_stat): Likewise.
+ 	(make_tree_vec): Remove macro.
+ 	(grow_tree_vec): Likewise.
+ 
+ 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
+ 
+ 	* fold-const.c (fold_build1_stat_loc): Adjust.
+ 	(fold_build2_stat_loc): Likewise.
+ 	(fold_build3_stat_loc): Likewise.
+ 	* tree.c (build0_stat): Remove _stat from name.
+ 	(build1_stat): Likewise.
+ 	(build2_stat): Likewise.
+ 	(build3_stat): Likewise.
+ 	(build4_stat): Likewise.
+ 	(build5_stat): Likewise.
+ 	* tree.h (build1_loc): Remove macro, and rename _stat function
+ 	to this.
+ 	(build2_loc): Likewise.
+ 	(build3_loc): Likewise.
+ 	(build4_loc): Likewise.
+ 	(build5_loc): Likewise.
+ 
+ 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
+ 
+ 	* tree.c (make_int_cst_stat): Remove _stat from name.
+ 	* tree.h (make_int_cst_stat): Adjust prototype.
+ 	(make_int_cst): Remove macro.
+ 
+ 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
+ 
+ 	* tree.c (make_tre_binfo_stat): Remove _stat from name.
+ 	* tree.h (make_tree_binfo_stat): Adjust prototype.
+ 	(make_tree_binfo): Remove.
+ 
+ 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
+ 
+ 	* tree.c (copy_node_stat): Rename to copy_node.
+ 	(build_distinct_type_copy): Adjust.
+ 	* tree.h (copy_node_stat): Adjust prototype.
+ 	(copy_node): Remove macro.
+ 
+ 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
+ 
+ 	* tree.c (make_node_stat): rename to make_node.
+ 	(build_tree_list_stat): Adjust.
+ 	(build0_stat): Likewise.
+ 	(build2_stat): Likewise.
+ 	(build3_stat): Likewise.
+ 	(build4_stat): Likewise.
+ 	(build5_stat): Likewise.
+ 	(build_decl_stat): Likewise.
+ 	* tree.h (make_node_stat): Adjust prototype.
+ 	(make_node): remove macro.
+ 
+ 2017-07-28  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	* config/rs6000/ppc-auxv.h (PPC_FEATURE2_DARN): New define.
+ 	(PPC_FEATURE2_SCV): Likewise.
+ 	* config/rs6000/rs6000.c (cpu_supports_info): Use them.
+ 
+ 2017-07-28  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* config/aarch64/aarch64.c
+ 	(aarch64_internal_mov_immediate): Add new special pattern.
+ 	* config/aarch64/aarch64.md (*movdi_aarch64):
+ 	Add reg/32bit const mov case.
+ 
+ 2017-07-28  Tamar Christina  <tamar.christina@arm.com>
+ 	    Richard Sandiford <richard.sandiford@linaro.org>
+ 
+ 	* config/aarch64/aarch64.md (mov<mode>): Generalize.
+ 	(*movhf_aarch64, *movsf_aarch64, *movdf_aarch64):
+ 	Add integer and movi cases.
+ 	(movi-split-hf-df-sf split, fp16): New.
+ 	(enabled): Added TARGET_FP_F16INST.
+ 	* config/aarch64/iterators.md (GPF_HF): New.
+ 	* config/aarch64/predicates.md (aarch64_reg_or_fp_float): New.
+ 
+ 2017-07-28  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* config/aarch64/aarch64.c
+ 	(aarch64_simd_container_mode): Add prototype.
+ 	(aarch64_expand_mov_immediate): Add HI support.
+ 	(aarch64_reinterpret_float_as_int, aarch64_float_const_rtx_p: New.
+ 	(aarch64_can_const_movi_rtx_p): New.
+ 	(aarch64_preferred_reload_class):
+ 	Remove restrictions of using FP registers for certain SIMD operations.
+ 	(aarch64_rtx_costs): Added new cost for CONST_DOUBLE moves.
+ 	(aarch64_valid_floating_const): Add integer move validation.
+ 	(aarch64_simd_imm_scalar_p): Remove.
+ 	(aarch64_output_scalar_simd_mov_immediate): Generalize function.
+ 	(aarch64_legitimate_constant_p): Expand list of supported cases.
+ 	* config/aarch64/aarch64-protos.h
+ 	(aarch64_float_const_rtx_p, aarch64_can_const_movi_rtx_p): New.
+ 	(aarch64_reinterpret_float_as_int): New.
+ 	(aarch64_simd_imm_scalar_p): Remove.
+ 	* config/aarch64/constraints.md (Uvi): New.
+ 	(Dd): Split into Ds and new Dd.
+ 	* config/aarch64/aarch64.md (*movsi_aarch64):
+ 	Add SIMD mov case.
+ 	(*movdi_aarch64): Add SIMD mov case.
+ 
+ 2017-07-28  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-predcom.c: (struct chain): Handle store-store chain in which
+ 	stores for elimination only store loop invariant values.
+ 	(execute_pred_commoning_chain): Ditto.
+ 	(prepare_initializers_chain_store_elim): Ditto.
+ 	(prepare_finalizers): Ditto.
+ 	(is_inv_store_elimination_chain): New function.
+ 	(initialize_root_vars_store_elim_1): New function.
+ 
+ 2017-07-28  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-predcom.c: Revise general description of the pass.
+ 	(enum chain_type): New enum type for store elimination.
+ 	(struct chain): New field supporting store elimination.
+ 	(struct component): Ditto.
+ 	(dump_chain): Dump store-stores chain.
+ 	(release_chain): Release resources.
+ 	(split_data_refs_to_components): Compute and create component
+ 	contains only stores for elimination.
+ 	(get_chain_last_ref_at): New function.
+ 	(make_invariant_chain): Initialization.
+ 	(make_rooted_chain): Specify chain type in parameter and record it.
+ 	(add_looparound_copies): Skip for store-stores chain.
+ 	(determine_roots_comp): Compute type of chain and pass it to
+ 	make_rooted_chain.
+ 	(initialize_root_vars_store_elim_2): New function.
+ 	(finalize_eliminated_stores): New function.
+ 	(remove_stmt): Handle store for elimination.
+ 	(execute_pred_commoning_chain): Execute predictive commoning on
+ 	store-store chains.
+ 	(determine_unroll_factor): Skip unroll for store-stores chain.
+ 	(prepare_initializers_chain_store_elim): New function.
+ 	(prepare_initializers_chain): Hanlde store-store chain.
+ 	(prepare_finalizers_chain, prepare_finalizers): New function.
+ 	(tree_predictive_commoning_loop): Return integer value indicating
+ 	if loop is unrolled or lcssa form is corrupted.
+ 	(tree_predictive_commoning): Rewrite for lcssa form if necessary.
+ 
+ 2017-07-28  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-predcom.c (initialize_root): Delete.
+ 	(execute_pred_commoning_chain): Initialize root vars and replace
+ 	reference of non-combined chain directly, rather than call above
+ 	function.
+ 
+ 2017-07-28  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-predcom.c (ref_at_iteration): Add parameter NITERS.  Compute
+ 	memory reference to DR at (NITERS + ITERS)-th iteration of loop.
+ 
+ 2017-07-28  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-predcom.c (struct chain): New field init_seq.
+ 	(release_chain): Release init_seq.
+ 	(prepare_initializers_chain): Record intialization stmts in above
+ 	field.
+ 	(insert_init_seqs): New function.
+ 	(tree_predictive_commoning_loop): Call insert_init_seqs.
+ 
+ 2017-07-28  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-predcom.c (determine_roots_comp): Skip trivial components.
+ 
+ 2017-07-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	* match.pd: Remove superfluous :c.
+ 	* genmatch.c (simplify::id): Add member.
+ 	(lower_commutative, lower_opt_convert, lower_cond, lower_for):
+ 	Copy id.
+ 	(current_id): New global.
+ 	(dt_node::parent): Move from ...
+ 	(dt_operand::parent): ... here.  Add for_id member.
+ 	(is_a_helper <dt_operand *>::test): DT_TRUE is also a dt_operand.
+ 	(decision_tree::find_node): Relax order requirement when
+ 	merging DT_TRUE nodes to ones inbetween the current simplify
+ 	and the one we try to merge with.  Add diagnostic whenever
+ 	we need to enforce pattern order by not merging.
+ 	(decision_tree::insert): Set current_id.
+ 	(decision_tree::print_node): Dump parent node and for_id.
+ 	(parser::last_id): Add member.
+ 	(parser::push_simplify): Assign unique id.
+ 	(parser::parser): Initialize last_id.
+ 
+ 2017-07-28  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR sanitizer/81340
+ 	* sanopt.c (sanitize_rewrite_addressable_params): Set VALUE_EXPR after
+ 	gimple_build_debug_bind.
+ 
+ 2017-07-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/81502
+ 	* match.pd: Add pattern combining BIT_INSERT_EXPR with
+ 	BIT_FIELD_REF.
+ 	* tree-cfg.c (verify_expr): Verify types of BIT_FIELD_REF
+ 	size/pos operands.
+ 	(verify_gimple_assign_ternary): Likewise for BIT_INSERT_EXPR pos.
+ 	* gimple-fold.c (maybe_canonicalize_mem_ref_addr): Use bitsizetype
+ 	for BIT_FIELD_REF args.
+ 	* fold-const.c (make_bit_field_ref): Likewise.
+ 	* tree-vect-stmts.c (vectorizable_simd_clone_call): Likewise.
+ 
+ 2017-07-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/80998
+ 	* sanopt.c (pass_sanopt::execute): Handle IFN_UBSAN_PTR.
+ 	* tree-ssa-alias.c (call_may_clobber_ref_p_1): Likewise.
+ 	* flag-types.h (enum sanitize_code): Add SANITIZER_POINTER_OVERFLOW.
+ 	Or it into SANITIZER_UNDEFINED.
+ 	* ubsan.c: Include gimple-fold.h and varasm.h.
+ 	(ubsan_expand_ptr_ifn): New function.
+ 	(instrument_pointer_overflow): New function.
+ 	(maybe_instrument_pointer_overflow): New function.
+ 	(instrument_object_size): Formatting fix.
+ 	(pass_ubsan::execute): Call instrument_pointer_overflow
+ 	and maybe_instrument_pointer_overflow.
+ 	* internal-fn.c (expand_UBSAN_PTR): New function.
+ 	* ubsan.h (ubsan_expand_ptr_ifn): Declare.
+ 	* sanitizer.def (__ubsan_handle_pointer_overflow,
+ 	__ubsan_handle_pointer_overflow_abort): New builtins.
+ 	* tree-ssa-tail-merge.c (merge_stmts_p): Handle IFN_UBSAN_PTR.
+ 	* internal-fn.def (UBSAN_PTR): New internal function.
+ 	* opts.c (sanitizer_opts): Add pointer-overflow.
+ 	* lto-streamer-in.c (input_function): Handle IFN_UBSAN_PTR.
+ 	* fold-const.c (build_range_check): Compute pointer range check in
+ 	integral type if pointer arithmetics would be needed.  Formatting
+ 	fixes.
+ 
+ 2017-07-28  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR sanitizer/81460
+ 	* sanopt.c (sanitize_rewrite_addressable_params): Do not rewrite
+ 	parameters that are of a variable-length.
+ 
+ 2017-07-28  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+ 
+ 	* config.gcc (powerpc-*-rtems*): Remove rs6000/eabi.h.  Add
+ 	rs6000/biarch64.h.
+ 	* config/rs6000/rtems.h (ASM_DECLARE_FUNCTION_SIZE): New macro.
+ 	(ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Likewise.
+ 	(CRT_CALL_STATIC_FUNCTION): Likewise.
+ 	(ASM_DEFAULT_SPEC): New define.
+ 	(ASM_SPEC32): Likewise.
+ 	(ASM_SPEC64): Likewise.
+ 	(ASM_SPEC_COMMON): Likewise.
+ 	(ASM_SPEC): Likewise.
+ 	(INVALID_64BIT): Likewise.
+ 	(LINK_OS_DEFAULT_SPEC): Likewise.
+ 	(LINK_OS_SPEC32): Likewise.
+ 	(LINK_OS_SPEC64): Likewise.
+ 	(POWERPC_LINUX): Likewise.
+ 	(PTRDIFF_TYPE): Likewise.
+ 	(RESTORE_FP_PREFIX): Likewise.
+ 	(RESTORE_FP_SUFFIX): Likewise.
+ 	(SAVE_FP_PREFIX): Likewise.
+ 	(SAVE_FP_SUFFIX): Likewise.
+ 	(SIZE_TYPE): Likewise.
+ 	(SUBSUBTARGET_OVERRIDE_OPTIONS): Likewise.
+ 	(TARGET_64BIT): Likewise.
+ 	(TARGET_64BIT): Likewise.
+ 	(TARGET_AIX): Likewise.
+ 	(WCHAR_TYPE_SIZE): Likewise.
+ 	(WCHAR_TYPE): Undefine.
+ 	(TARGET_OS_CPP_BUILTINS): Add 64-bit PowerPC defines.
+ 	(CPP_OS_DEFAULT_SPEC): Use previous CPP_OS_RTEMS_SPEC.
+ 	(CPP_OS_RTEMS_SPEC): Delete.
+ 	(SUBSUBTARGET_EXTRA_SPECS): Remove cpp_os_rtems.  Add
+ 	asm_spec_common, asm_spec32, asm_spec64, link_os_spec32, and
+ 	link_os_spec64.
+ 	* config/rs6000/t-rtems: Add mcpu=e6500/m64 multilibs.
+ 
+ 2017-07-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/81578
+ 	* tree-parloops.c (build_new_reduction): Bail out if
+ 	reduction_code isn't one of the standard OpenMP reductions.
+ 	Move the details printing after that decision.
+ 
+ 2017-07-27  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	* config/rs6000/predicates.md (volatile_mem_operand): Remove code
+ 	related to reload_in_progress.
+ 	(splat_input_operand): Likewise.
+ 	* config/rs6000/rs6000-protos.h (rs6000_secondary_memory_needed_rtx):
+ 	Delete prototype.
+ 	* config/rs6000/rs6000.c (machine_function): Remove sdmode_stack_slot
+ 	field.
+ 	(TARGET_EXPAND_TO_RTL_HOOK): Delete.
+ 	(TARGET_INSTANTIATE_DECLS): Likewise.
+ 	(legitimate_indexed_address_p): Delete reload_in_progress code.
+ 	(rs6000_debug_legitimate_address_p): Likewise.
+ 	(rs6000_eliminate_indexed_memrefs): Likewise.
+ 	(rs6000_emit_le_vsx_store): Likewise.
+ 	(rs6000_emit_move_si_sf_subreg): Likewise.
+ 	(rs6000_emit_move): Likewise.
+ 	(register_to_reg_type): Likewise.
+ 	(rs6000_pre_atomic_barrier): Likewise.
+ 	(rs6000_machopic_legitimize_pic_address): Likewise.
+ 	(rs6000_allocate_stack_temp): Likewise.
+ 	(rs6000_address_for_fpconvert): Likewise.
+ 	(rs6000_address_for_altivec): Likewise.
+ 	(rs6000_secondary_memory_needed_rtx): Delete function.
+ 	(rs6000_check_sdmode): Likewise.
+ 	(rs6000_alloc_sdmode_stack_slot): Likewise.
+ 	(rs6000_instantiate_decls): Likewise.
+ 	* config/rs6000/rs6000.h (SECONDARY_MEMORY_NEEDED_RTX): Delete.
+ 	* config/rs6000/rs6000.md (splitter for *movsi_got_internal):
+ 	Delete reload_in_progress.
+ 	(*vec_reload_and_plus_<mptrsize>): Likewise.
+ 	* config/rs6000/vsx.md (vsx_mul_v2di): Likewise.
+ 	(vsx_div_v2di): Likewise.
+ 	(vsx_udiv_v2di): Likewise.
+ 
+ 2017-07-27  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	* config/rs6000/rs6000.opt (mlra): Replace with stub.
+ 	* config/rs6000/rs6000-cpus.def (POWERPC_MASKS): Delete OPTION_MASK_LRA.
+ 	* config/rs6000/rs6000.c (TARGET_LRA_P): Delete.
+ 	(rs6000_debug_reg_global): Delete print of LRA status.
+ 	(rs6000_option_override_internal): Delete dead LRA related code.
+ 	(rs6000_lra_p): Delete function.
+ 	* doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mlra.
+ 
+ 2017-07-27  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+ 
+ 	* config.gcc (riscv*-*-elf*): Add (riscv*-*-rtems*).
+ 	* config/riscv/rtems.h: New file.
+ 
+ 2017-07-27  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 	    Sudakshina Das  <sudi.das@arm.com>
+ 
+ 	* config/aarch64/aarch64.md
+ 	(define_split for and<mode>3nr_compare): Move
+ 	non aarch64_logical_operand to a register.
+ 	(define_split for and_<SHIFT:optab><mode>3nr_compare0): Move non
+ 	register immediate operand to a register.
+ 	* config/aarch64/predicates.md (aarch64_mov_imm_operand): New.
+ 
+ 2017-07-27  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	PR middle-end/81564
+ 	* tree-cfg.c (group_case_labels_stmt): Handle already deleted blocks.
+ 
+ 2017-07-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/81573
+ 	PR tree-optimization/81494
+ 	* tree-vect-loop.c (vect_create_epilog_for_reduction): Handle
+ 	multi defuse cycle case.
+ 
+ 2017-07-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/81571
+ 	* tree-vect-slp.c (vect_build_slp_tree): Properly verify reduction
+ 	PHIs.
+ 
+ 2017-07-27  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* config/sparc/sparc.c (sparc_option_override): Set MASK_FSMULD flag
+ 	earlier and only if MASK_FPU is set.  Adjust formatting.
+ 
+ 2017-07-27  Martin Liska  <mliska@suse.cz>
+ 
+ 	* opt-functions.awk: Add validation of value of Init.
+ 	* optc-gen.awk: Pass new argument.
+ 
+ 2017-07-27  Martin Liska  <mliska@suse.cz>
+ 
+ 	* auto-profile.c (autofdo_source_profile::update_inlined_ind_target):
+ 	Fix wrong condition.
+ 
+ 2017-07-27  Martin Liska  <mliska@suse.cz>
+ 
+ 	* auto-profile.c (afdo_annotate_cfg): Assign zero counts to
+ 	BBs and edges seen by autoFDO.
+ 
+ 2017-07-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/81502
+ 	* tree-ssa.c (non_rewritable_lvalue_p): Handle BIT_INSERT_EXPR
+ 	with incompatible but same sized type.
+ 	(execute_update_addresses_taken): Likewise.
+ 
+ 2017-07-27  James Greenhalgh  <james.greenhalgh@arm.com>
+ 
+ 	* tree-ssa-loop-ch.c (pass_ch::process_loop_p): Guard on
+ 	flag_tree_loop_vectorize rather than flag_tree_vectorize.
+ 
+ 2017-07-27  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	PR target/81534
+ 	* config/s390/s390.md ("*atomic_compare_and_swap<mode>_1")
+ 	("*atomic_compare_and_swapdi_2", "*atomic_compare_and_swapsi_3"):
+ 	Change s_operand to memory_operand.
+ 
+ 2017-07-27  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* config/rs6000/rs6000-protos.h (rs6000_emit_le_vsx_permute): Declare.
+ 	* config/rs6000/rs6000.c (rs6000_gen_le_vsx_permute): Replace with...
+ 	(rs6000_emit_le_vsx_permute): ...this.  Take the destination as input.
+ 	Emit instructions rather than returning an expression.  Handle TFmode
+ 	and KFmode by casting to TImode.
+ 	(rs6000_emit_le_vsx_load): Update to use rs6000_emit_le_vsx_permute.
+ 	(rs6000_emit_le_vsx_store): Likewise.
+ 	* config/rs6000/vsx.md (VSX_TI): New iterator.
+ 	(*vsx_le_permute_<mode>): Use it instead of VSX_LE_128.
+ 	(*vsx_le_undo_permute_<mode>): Likewise.
+ 	(*vsx_le_perm_load_<mode>): Use rs6000_emit_le_vsx_permute to
+ 	emit the split sequence.
+ 	(*vsx_le_perm_store_<mode>): Likewise.
+ 
+ 2017-07-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/81555
+ 	PR tree-optimization/81556
+ 	* tree-ssa-reassoc.c (rewrite_expr_tree): Add NEXT_CHANGED argument,
+ 	if true, force CHANGED for the recursive invocation.
+ 	(reassociate_bb): Remember original length of ops array, pass
+ 	len != orig_len as NEXT_CHANGED in rewrite_expr_tree call.
+ 
+ 	* attribs.c (decl_attributes): Imply noinline, noclone and no_icf
+ 	attributes for noipa attribute.  For naked attribute use
+ 	lookup_attribute first before lookup_attribute_spec.
+ 	* final.c (rest_of_handle_final): Disable IPA RA for functions with
+ 	noipa attribute.
+ 	* ipa-visibility.c (non_local_p): Fix comment typos.  Return true
+ 	for functions with noipa attribute.
+ 	(cgraph_externally_visible_p): Return true for functions with noipa
+ 	attribute.
+ 	* cgraph.c (cgraph_node::get_availability): Return AVAIL_INTERPOSABLE
+ 	for functions with noipa attribute.
+ 	* doc/extend.texi: Document noipa function attribute.
+ 	* tree-ssa-structalias.c (refered_from_nonlocal_fn): Set *nonlocal_p
+ 	also for functions with noipa attribute.
+ 	(ipa_pta_execute): Set nonlocal_p also for nodes with noipa attribute.
+ 
+ 2017-07-26  Andrew Pinski  <apinski@cavium.com>
+ 
+ 	* config/aarch64/aarch64.c (thunderx_vector_cost): Decrease cost of
+ 	vec_unalign_load_cost and vec_unalign_store_cost.
+ 
+ 2017-07-26  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	* config/rs6000/rs6000-cpus.def (ISA_2_7_MASKS_SERVER): Delete
+ 	-mvsx-small-integer option.
+ 	(ISA_3_0_MASKS_IEEE): Likewise.
+ 	(OTHER_VSX_VECTOR_MASKS): Likewise.
+ 	(POWERPC_MASKS): Likewise.
+ 	* config/rs6000/rs6000.opt (-mvsx-small-integer): Likewise.
+ 	* config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Simplify
+ 	code, only testing for DImode being allowed in non-VSX floating
+ 	point registers.
+ 	(rs6000_init_hard_regno_mode_ok): Change TARGET_VSX_SMALL_INTEGER
+ 	to TARGET_P8_VECTOR test.  Remove redundant VSX test inside of
+ 	another VSX test.
+ 	(rs6000_option_override_internal): Delete -mvsx-small-integer.
+ 	(rs6000_expand_vector_set): Change TARGET_VSX_SMALL_INTEGER to
+ 	TARGET_P8_VECTOR test.
+ 	(rs6000_secondary_reload_simple_move): Likewise.
+ 	(rs6000_preferred_reload_class): Delete TARGET_VSX_SMALL_INTEGER,
+ 	since TARGET_P9_VECTOR was already tested.
+ 	(rs6000_opt_masks): Remove -mvsx-small-integer.
+ 	* config/rs6000/vsx.md (vsx_extract_<mode>): Delete
+ 	TARGET_VSX_SMALL_INTEGER, since a test for TARGET_P9_VECTOR was
+ 	used.
+ 	(vsx_extract_<mode>_p9): Delete TARGET_VSX_SMALL_INTEGER, since a
+ 	test for TARGET_VEXTRACTUB was used, and that uses
+ 	TARGET_P9_VECTOR.
+ 	(p9 extract splitter): Likewise.
+ 	(vsx_extract_<mode>_di_p9): Likewise.
+ 	(vsx_extract_<mode>_store_p9): Likewise.
+ 	(vsx_extract_si): Delete TARGET_VSX_SMALL_INTEGER, since a test
+ 	for TARGET_P9_VECTOR was used.  Delete code that is now dead with
+ 	the elimination of TARGET_VSX_SMALL_INTEGER.
+ 	(vsx_extract_<mode>_p8): Likewise.
+ 	(vsx_ext_<VSX_EXTRACT_I:VS_scalar>_fl_<FL_CONV:mode>): Likewise.
+ 	(vsx_ext_<VSX_EXTRACT_I:VS_scalar>_ufl_<FL_CONV:mode>): Likewise.
+ 	(vsx_set_<mode>_p9): Likewise.
+ 	(vsx_set_v4sf_p9): Likewise.
+ 	(vsx_set_v4sf_p9_zero): Likewise.
+ 	(vsx_insert_extract_v4sf_p9): Likewise.
+ 	(vsx_insert_extract_v4sf_p9_2): Likewise.
+ 	* config/rs6000/rs6000.md (sign extend splitter): Change
+ 	TARGET_VSX_SMALL_INTEGER to TARGET_P8_VECTOR test.
+ 	(floatsi<mode>2_lfiwax_mem): Likewise.
+ 	(floatunssi<mode>2_lfiwzx_mem): Likewise.
+ 	(float<QHI:mode><FP_ISA3:mode>2): Delete TARGET_VSX_SMALL_INTEGER,
+ 	since a test for TARGET_P9_VECTOR was used.
+ 	(float<QHI:mode><FP_ISA3:mode>2_internal): Likewise.
+ 	(floatuns<QHI:mode><FP_ISA3:mode>2): Likewise.
+ 	(floatuns<QHI:mode><FP_ISA3:mode>2_internal): Likewise.
+ 	(fix_trunc<mode>si2): Change TARGET_VSX_SMALL_INTEGER to
+ 	TARGET_P8_VECTOR test.
+ 	(fix_trunc<mode>si2_stfiwx): Likewise.
+ 	(fix_trunc<mode>si2_internal): Likewise.
+ 	(fix_trunc<SFDF:mode><QHI:mode>2): Delete
+ 	TARGET_VSX_SMALL_INTEGER, since a test for TARGET_P9_VECTOR was
+ 	used.
+ 	(fix_trunc<SFDF:mode><QHI:mode>2_internal): Likewise.
+ 	(fixuns_trunc<mode>si2): Change TARGET_VSX_SMALL_INTEGER to
+ 	TARGET_P8_VECTOR test.
+ 	(fixuns_trunc<mode>si2_stfiwx): Likewise.
+ 	(fixuns_trunc<SFDF:mode><QHI:mode>2): Delete
+ 	TARGET_VSX_SMALL_INTEGER, since a test for TARGET_P9_VECTOR was
+ 	used.
+ 	(fixuns_trunc<SFDF:mode><QHI:mode>2_internal): Likewise.
+ 	(fctiw<u>z_<mode>_smallint): Delete TARGET_VSX_SMALL_INTEGER,
+ 	since a test for TARGET_P9_VECTOR was used.
+ 	(splitter for loading small constants): Likewise.
+ 
+ 2017-07-26  Andrew Pinski  <apinski@cavium.com>
+ 
+ 	* config/aarch64/aarch64.c (thunderx_vector_cost): Fix
+ 	vec_fp_stmt_cost.
+ 
+ 2017-07-26  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/81563
+ 	* config/i386/i386.c (sp_valid_at): Properly check CFA offset.
+ 	(fp_valid_at): Likewise.
+ 
+ 2017-07-26  James Greenhalgh  <james.greenhalgh@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (cortexa57_addrcost_table): Remove.
+ 	(qdf24xx_addrcost_table): Likewise.
+ 	(cortexa57_tunings): Update to use generic_branch_cost.
+ 	(cortexa72_tunings): Likewise.
+ 	(cortexa73_tunings): Likewise.
+ 	(qdf24xx_tunings): Likewise.
+ 
+ 2017-07-26  James Greenhalgh  <james.greenhalgh@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (cortexa57_branch_cost): Remove.
+ 	(thunderx2t99_branch_cost): Likewise.
+ 	(cortexa35_tunings): Update to use generic_branch_cost.
+ 	(cortexa53_tunings): Likewise.
+ 	(cortexa57_tunings): Likewise.
+ 	(cortexa72_tunings): Likewise.
+ 	(cortexa73_tunings): Likewise.
+ 	(thunderx2t99_tunings): Likewise.
+ 
+ 2017-07-26  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+ 
+ 	* config/sparc/sparc.c (dump_target_flag_bits): Dump MASK_FSMULD.
+ 	(sparc_option_override): Honour MASK_FSMULD.
+ 	* config/sparc/sparc.h (MASK_FEATURES): Add MASK_FSMULD.
+ 	* config/sparc/sparc.md (muldf3_extend): Use TARGET_FSMULD.
+ 	* config/sparc/sparc.opt (mfsmuld): New option.
+ 	* doc/invoke.texi (mfsmuld): Document option.
+ 
+ 2017-07-26  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR middle-end/70992
+ 	* tree.c (build2_stat): Don't set TREE_CONSTANT on divisions by zero.
+ 
+ 2017-07-26  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gimple-match-head.c (do_valueize): Return OP if valueize
+ 	returns NULL_TREE.
+ 	(get_def): New helper to get at the def stmt of a SSA name
+ 	if valueize allows.
+ 	* genmatch.c (dt_node::gen_kids_1): Use get_def instead of
+ 	do_valueize to get at the def stmt.
+ 	(dt_operand::gen_gimple_expr): Simplify do_valueize calls.
+ 
+ 2017-07-26  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	PR middle-end/46932
+ 	* auto-inc-dec.c (parse_add_or_inc): Block autoinc on sfp.
+ 
+ 2017-07-26  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR sanitize/81186
+ 	* function.c (expand_function_start): Make expansion of
+ 	nonlocal_goto_save_area after parm_birth_insn.
+ 
+ 2017-07-26  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+ 
+ 	* config/sparc/sparc.c (sparc_option_override): Remove MASK_FPU
+ 	from all CPU target flags enable members.
+ 
+ 2017-07-26  Richard Biener  <rguenther@suse.de>
+ 
+ 	* genmatch.c (dt_simplify::gen): Make iterator vars const.
+ 	(decision_tree::gen): Make 'type' const.
+ 	(write_predicate): Likewise.
+ 
+ 2017-07-24  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok):
+ 	Eliminate TARGET_UPPER_REGS_{DF,DI,SF} usage.
+ 	(rs6000_option_override_internal): Likewise.
+ 	(rs6000_expand_vector_set): Likewise.
+ 	* config/rs6000/rs6000.h (TARGET_UPPER_REGS_DF): Delete.
+ 	(TARGET_UPPER_REGS_SF): Likewise.
+ 	(TARGET_UPPER_REGS_DI): Likewise.
+ 	(TARGET_VEXTRACTUB): Eliminate TARGET_UPPER_REGS_{DF,DI,SF}.
+ 	(TARGET_DIRECT_MOVE_64BIT): Likewise.
+ 	* config/rs6000/rs6000.md (ALTIVEC_DFORM): Likewise.
+ 	(float<QHI:mode><FP_ISA3:mode>2_internal): Likewise.
+ 	(Splitters for DI constants in Altivec registers): Likewise.
+ 	* config/rs6000/vsx.md (vsx_set_<mode>_p9): Likewise.
+ 	(vsx_set_v4sf_p9): Likewise.
+ 	(vsx_set_v4sf_p9_zero): Likewise.
+ 	(vsx_insert_extract_v4sf_p9): Likewise.
+ 	(vsx_insert_extract_v4sf_p9_2): Likewise.
+ 
+ 2017-07-25  Carl Love  <cel@us.ibm.com>
+ 
+ 	* doc/extend.texi: Update the built-in documentation file for the
+ 	existing built-in functions
+ 	vector signed char vec_cnttz (vector signed char);
+ 	vector unsigned char vec_cnttz (vector unsigned char);
+ 	vector signed short vec_cnttz (vector signed short);
+ 	vector unsigned short vec_cnttz (vector unsigned short);
+ 	vector signed int vec_cnttz (vector signed int);
+ 	vector unsigned int vec_cnttz (vector unsigned int);
+ 	vector signed long long vec_cnttz (vector signed long long);
+ 	vector unsigned long long vec_cnttz (vector unsigned long long);
+ 
+ 2017-07-25  Andrew Pinski  <apinski@cavium.com>
+ 
+ 	* tree-ssa-uninit.c (warn_uninitialized_vars): Don't warn about memory
+ 	accesses where the use is for the first operand of a BIT_INSERT.
+ 
+ 2017-07-25  Jim Wilson  <jim.wilson@linaro.org>
+ 
+ 	PR bootstrap/81521
+ 	* config/i386/winnt-cxx.c (i386_pe_adjust_class_at_definition): Look
+ 	for FUNCTION_DECLs in TYPE_FIELDS rather than TYPE_METHODS.
+ 
+ 2017-07-25  Jim Wilson  <jim.wilson@linaro.org>
+ 
+ 	* config/i386/gstabs.h: Delete.
+ 	* config/i386/openbsd.h, config/i386/t-openbsd: Likewise.
+ 
+ 2017-07-25  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.c (ix86_decompose_address): Do not check for
+ 	register RTX when looking at index_reg or base_reg.
+ 	* config/i386/i386.h (INCOMING_RETURN_ADDR_RTX): Use stack_pointer_rtx.
+ 
+ 2017-07-25  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gimple.c (gimple_assign_set_rhs_with_ops): Do not ask gsi_replace
+ 	to update EH info here.
+ 
+ 2017-07-25  Alexander Monakov  <amonakov@ispras.ru>
+ 
+ 	* match.pd ((X * CST1) * CST2): Simplify to X * (CST1 * CST2).
+ 
+ 2017-07-25  Alexander Monakov  <amonakov@ispras.ru>
+ 
+ 	* match.pd ((X * CST) * Y): Reassociate to (X * Y) * CST.
+ 
+ 2017-07-25  Torsten Duwe  <duwe@suse.de>
+ 
+ 	* common.opt: Introduce -fpatchable-function-entry
+ 	command line option, and its variables function_entry_patch_area_size
+ 	and function_entry_patch_area_start.
+ 	* opts.c (common_handle_option): Add -fpatchable_function_entry_ case,
+ 	including a two-value parser.
+ 	* target.def (print_patchable_function_entry): New target hook.
+ 	* targhooks.h (default_print_patchable_function_entry): New function.
+ 	* targhooks.c (default_print_patchable_function_entry): Likewise.
+ 	* toplev.c (process_options): Switch off IPA-RA if
+ 	patchable function entries are being generated.
+ 	* varasm.c (assemble_start_function): Look at the
+ 	patchable-function-entry command line switch and current
+ 	function attributes and maybe generate NOP instructions by
+ 	calling the print_patchable_function_entry hook.
+ 	* doc/extend.texi: Document patchable_function_entry attribute.
+ 	* doc/invoke.texi: Document -fpatchable_function_entry
+ 	command line option.
+ 	* doc/tm.texi.in (TARGET_ASM_PRINT_PATCHABLE_FUNCTION_ENTRY):
+ 	New target hook.
+ 	* doc/tm.texi: Re-generate.
+ 
+ 2017-07-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/81532
+ 	* config/i386/constraints.md (Yd, Ye): Use ALL_SSE_REGS for
+ 	TARGET_AVX512DQ rather than TARGET_AVX512BW.
+ 
+ 2017-07-25  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* config/arm/parsecpu.awk (all_cores): Remove duplicates.
+ 
+ 2017-07-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/81455
+ 	* tree-ssa-loop-unswitch.c (find_loop_guard): Make sure to
+ 	not walk in cycles when looking for guards.
+ 
+ 2017-07-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/81529
+ 	* tree-vect-stmts.c (process_use): Disregard live induction PHIs
+ 	when optimizing backedge uses.
+ 
+ 2017-07-25  David Edelsohn  <dje.gcc@gmail.com>
+ 
+ 	* dwarf2asm.c (dw2_asm_output_nstring): Encode double quote
+ 	character for AIX.
+ 	* dwarf2out.c (output_macinfo): Copy debug_line_section_label
+ 	to dl_section_ref.  On AIX, append an expression to subtract
+ 	the size of the section length to dl_section_ref.
+ 
+ 2017-07-25  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* configure.ac: If any of the config.* scripts fail, exit 1.
+ 	* configure: Regenerate.
+ 
+ 2017-07-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/81546
+ 	* tree-ssa-operands.c (verify_imm_links): Remove cap on number
+ 	of immediate uses, be more verbose on errors.
+ 
+ 2017-07-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/81510
+ 	* tree-vect-loop.c (vect_is_simple_reduction): When the
+ 	reduction stmt is not inside the loop bail out.
+ 
+ 2017-07-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/81303
+ 	* tree-vect-loop-manip.c (vect_loop_versioning): Build
+ 	profitability check against LOOP_VINFO_NITERSM1.
+ 
+ 2017-07-25  Alexander Monakov  <amonakov@ispras.ru>
+ 
+ 	* domwalk.c (cmp_bb_postorder): Simplify.
+ 	(sort_bbs_postorder): New function.  Use it...
+ 	(dom_walker::walk): ...here to optimize common cases.
+ 
+ 2017-07-25  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR ipa/81520
+ 	* ipa-visibility.c (function_and_variable_visibility): Make the
+ 	redirection just on target that supports aliasing.
+ 	Fix GNU coding style.
+ 
+ 2017-07-25  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+ 
+ 	PR libgcc/61152
+ 	* config/aarch64/rtems.h: Add GCC Runtime Library Exception.
+ 	Format changes.
+ 	* config/arm/rtems.h: Likewise.
+ 	* config/bfin/rtems.h: Likewise.
+ 	* config/i386/rtemself.h: Likewise.
+ 	* config/lm32/rtems.h: Likewise.
+ 	* config/m32c/rtems.h: Likewise.
+ 	* config/m68k/rtemself.h: Likewise.
+ 	* config/microblaze/rtems.h: Likewise.
+ 	* config/mips/rtems.h: Likewise.
+ 	* config/moxie/rtems.h: Likewise.
+ 	* config/nios2/rtems.h: Likewise.
+ 	* config/powerpcspe/rtems.h: Likewise.
+ 	* config/rs6000/rtems.h: Likewise.
+ 	* config/rtems.h: Likewise.
+ 	* config/sh/rtems.h: Likewise.
+ 	* config/sh/rtemself.h: Likewise.
+ 	* config/sparc/rtemself.h: Likewise.
+ 
+ 2017-07-25  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR 81487
+ 	* hsa-brig.c (brig_init): Use xasprintf instead of asprintf.
+ 	* gimple-pretty-print.c (dump_profile, dump_probability): Same.
+ 	* tree-ssa-structalias.c (alias_get_name): Same.
+ 
+ 2017-07-25  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	PR target/81414
+ 	* config/aarch64/cortex-a57-fma-steering.c (analyze): Skip fmul/fmac
+ 	instructions if no du chain is found.
+ 
+ 2017-07-25  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	* config/avr/avr-log.c (avr_log_vadump) ['T']: Print NULL-TREE.
+ 
+ 2017-07-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/81505
+ 	* fold-const.c (fold_negate_const): TREE_OVERFLOW should be
+ 	sticky.
+ 
+ 2017-07-24  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	* config/rs6000/rs6000-cpus.def (ISA_2_6_MASKS_SERVER): Delete
+ 	upper-regs options.
+ 	(ISA_2_7_MASKS_SERVER): Likewise.
+ 	(ISA_3_0_MASKS_IEEE): Likewise.
+ 	(OTHER_P8_VECTOR_MASKS): Likewise.
+ 	(OTHER_VSX_VECTOR_MASKS): Likewise.
+ 	(POWERPC_MASKS): Likewise.
+ 	(power7 cpu): Use ISA_2_6_MASKS_SERVER instead of using a
+ 	duplicate list of options.
+ 	* config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Remove
+ 	explicit -mupper-regs options.
+ 	* config/rs6000/rs6000.opt (-mvsx-scalar-memory): Delete
+ 	-mupper-regs* options.  Delete -mvsx-scalar-memory, which was an
+ 	alias for -mupper-regs-df.
+ 	* config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): Likewise.
+ 	(rs6000_init_hard_regno_mode_ok): Likewise.
+ 	(rs6000_option_override_internal): Likewise.
+ 	(rs6000_opt_masks): Likewise.
+ 	* config/rs6000/rs6000.h (TARGET_UPPER_REGS_DF): Define upper regs
+ 	options in terms of whether -mvsx or -mpower8-vector was used.
+ 	(TARGET_UPPER_REGS_DI): Likewise.
+ 	(TARGET_UPPER_REGS_SF): Likewise.
+ 	* doc/invoke.texi (RS/6000 and PowerPC Options): Delete the
+ 	-mupper-regs-* options.
+ 
+ 2017-07-24  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* passes.c (emergency_dump_function): Print some empty lines and a
+ 	header before the RTL dump.
+ 
+ 2017-07-24  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* cfgrtl.c (rtl_dump_bb): Don't call NEXT_INSN on NULL.
+ 
+ 2017-07-24  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	PR target/79041
+ 	* config/aarch64/aarch64.c (aarch64_classify_symbol):
+ 	Avoid SYMBOL_SMALL_ABSOLUTE for literals with pc-relative literals.
+ 
+ 2017-07-24  Carl Love  <cel@us.ibm.com>
+ 
+ 	* config/rs6000/rs6000-c.c: Add support for built-in functions
+ 	vector float vec_extract_fp32_from_shorth (vector unsigned short);
+ 	vector float vec_extract_fp32_from_shortl (vector unsigned short);
+ 	* config/rs6000/altivec.h (vec_extract_fp_from_shorth,
+ 	vec_extract_fp_from_shortl): Add defines for the two builtins.
+ 	* config/rs6000/rs6000-builtin.def (VEXTRACT_FP_FROM_SHORTH,
+ 	VEXTRACT_FP_FROM_SHORTL): Add BU_P9V_OVERLOAD_1 and BU_P9V_VSX_1
+ 	new builtins.
+ 	* config/rs6000/vsx.md vsx_xvcvhpsp): Add define_insn.
+ 	(vextract_fp_from_shorth, vextract_fp_from_shortl): Add define_expands.
+ 	* doc/extend.texi: Update the built-in documentation file for the
+ 	new built-in function.
+ 
+ 2017-07-24  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR bootstrap/81521
+ 	* tree.def: Remove TYPE_METHODS documentation, adjust TYPE_FIELDS
+ 	documentation.
+ 	* doc/generic.texi: Likewise.
+ 	* config/i386/winnt-cxx.c (i386_pe_adjust_class_at_definition): Look
+ 	for FUNCTION_DECLs in TYPE_FIELDS rather than TYPE_METHODS.
+ 
+ 2017-07-24  Jackson Woodruff  <jackson.woodruff@arm.com>
+ 
+ 	* config/aarch64/aarch64-simd.md (aarch64_mla_elt_merge<mode>): New.
+ 	(aarch64_mls_elt_merge<mode>): Likewise.
+ 
+ 2017-07-23  Krister Walfridsson  <krister.walfridsson@gmail.com>
+ 
+ 	* config.gcc (*-*-netbsd*): Remove check for NetBSD versions not
+ 	having __cxa_atexit.
+ 
+ 2017-07-23  Michael Collison  <michael.collison@arm.com>
+ 
+ 	* config/arm/arm.c (arm_option_override): Deprecate
+ 	use of -mstructure-size-boundary.
+ 	* config/arm/arm.opt: Deprecate -mstructure-size-boundary.
+ 	* doc/invoke.texi: Deprecate -mstructure-size-boundary.
+ 
+ 2017-07-23  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	PR target/80695
+ 	* config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost):
+ 	Reduce cost estimate for direct moves.
+ 
+ 2017-07-23  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/80569
+ 	* config/i386/i386.c (ix86_option_override_internal): Disable
+ 	BMI, BMI2 and TBM instructions for -m16.
+ 
+ 2017-07-21  Carl Love  <cel@us.ibm.com>
+ 
+ 	* config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
+ 	ALTIVEC_BUILTIN_VMULESW, ALTIVEC_BUILTIN_VMULEUW,
+ 	ALTIVEC_BUILTIN_VMULOSW, ALTIVEC_BUILTIN_VMULOUW entries.
+ 	* config/rs6000/rs6000.c (rs6000_gimple_fold_builtin,
+ 	builtin_function_type): Add ALTIVEC_BUILTIN_* case statements.
+ 	* config/rs6000/altivec.md (MVULEUW, VMULESW, VMULOUW,
+ 	VMULOSW): New enum "unspec" values.
+ 	(altivec_vmuleuw, altivec_vmulesw, altivec_vmulouw,
+ 	altivec_vmulosw): New patterns.
+ 	* config/rs6000/rs6000-builtin.def (VMLEUW, VMULESW, VMULOUW,
+ 	VMULOSW): Add definitions.
+ 
+ 2017-07-21  Jim Wilson  <jim.wilson@linaro.org>
+ 
+ 	* config/aarch64/aarch64-cores.def (falkor): Add AARCH64_FL_RDMA.
+ 	(qdf24xx): Likewise.
+ 	* config/aarch64/aarch64-options-extensions.def (rdma); New.
+ 	* config/aarch64/aarch64.h (AARCH64_FL_RDMA): New.
+ 	(AARCH64_FL_V8_1): Renumber.
+ 	(AARCH64_FL_FOR_ARCH8_1): Add AARCH64_FL_RDMA.
+ 	(AARCH64_ISA_RDMA): Use AARCH64_FL_RDMA.
+ 	* config/aarch64/arm_neon.h: Use +rdma instead of arch=armv8.1-a.
+ 	* doc/invoke.texi (AArch64 Options): Mention +rmda in -march docs.  Add
+ 	rdma to feature modifiers list.
+ 
+ 2017-07-21  Yury Gribov  <tetra2005@gmail.com>
+ 
+ 	PR middle-end/56727
+ 	* ipa-visibility (function_and_variable_visibility): Convert
+ 	recursive PLT call to direct call if appropriate.
+ 
+ 2017-07-21  Andrew Pinski  <apinski@cavium.com>
+ 
+ 	* tree-ssa-sccvn.c (vn_nary_op_eq): Check BIT_INSERT_EXPR's
+ 	operand 1 to see if the types precision matches.
+ 	* fold-const.c (operand_equal_p): Likewise.
+ 
+ 2017-07-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/81303
+ 	* tree-vect-data-refs.c (vect_get_peeling_costs_all_drs): Pass
+ 	in datarefs vector.  Allow NULL dr0 for no peeling cost estimate.
+ 	(vect_peeling_hash_get_lowest_cost): Adjust.
+ 	(vect_enhance_data_refs_alignment): Likewise.  Use
+ 	vect_get_peeling_costs_all_drs to compute the penalty for no
+ 	peeling to match up costs.
+ 
+ 2017-07-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/81500
+ 	* tree-vect-loop.c (vect_is_simple_reduction): Properly fail if
+ 	we didn't identify a reduction path.
+ 
+ 2017-07-21  Tom de Vries  <tom@codesourcery.com>
+ 	    Cesar Philippidis  <cesar@codesourcery.com>
+ 
+ 	PR gcov-profile/81442
+ 	* config/nvptx/nvptx.c (nvptx_goacc_reduction_init): Add missing edge
+ 	probabilities.
+ 
+ 2017-07-21  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	PR lto/81430
+ 	* config/nvptx/nvptx.c (nvptx_override_options_after_change): New
+ 	function.
+ 	(TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): Define to
+ 	nvptx_override_options_after_change.
+ 
+ 2017-07-21  Ulrich Drepper  <drepper@redhat.com>
+ 
+ 	* dwarf2out.c (output_file_names): Avoid double testing for
+ 	dwarf_version >= 5.
+ 
+ 2017-07-21  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	* doc/invoke.texi (AVR Built-in Functions): Re-layout section.
+ 
+ 2016-07-21  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* cfgcleanup.c (flow_find_cross_jump): Do not crossjump across
+ 	hot/cold regions.
+ 	(try_crossjump_to_edge): Do not punt on partitioned functions.
+ 
+ 2016-07-21  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges):
+ 	Put all BBs reachable only via paths crossing cold region to cold
+ 	region.
+ 	* cfgrtl.c (find_bbs_reachable_by_hot_paths): New function.
+ 
+ 2016-07-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/81303
+ 	* tree-vect-loop.c (vect_estimate_min_profitable_iters): Take
+ 	into account prologue and epilogue iterations when raising
+ 	min_profitable_iters to sth at least covering one vector iteration.
+ 
+ 2017-07-21  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* config/arm/arm.c (arm_test_cpu_arch_dat):
+ 	Check for overlap.
+ 
+ 2017-07-20  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	Remove TYPE_METHODS.
+ 	* tree.h (TYPE_METHODS): Delete.
+ 	* dwarf2out.c (gen_member_die): Member fns are on TYPE_FIELDS.
+ 	* dbxout.c (dbxout_type_fields): Ignore FUNCTION_DECLs.
+ 	(dbxout_type_methods): Scan TYPE_FIELDS.
+ 	(dbxout_type): Don't check TYPE_METHODS here.
+ 	* function.c (use_register_for_decl): Always ignore register for
+ 	class types when not optimizing.
+ 	* ipa-devirt.c (odr_types_equivalent_p): Delete TYPE_METHODS scan.
+ 	* tree.c (free_lang_data_in_type): Stitch out member functions and
+ 	templates from TYPE_FIELDS.
+ 	(build_distinct_type_copy, verify_type_variant,
+ 	verify_type): Member fns are on TYPE_FIELDS.
+ 	* tree-dump.c (dequeue_and_dump): No TYPE_METHODS.
+ 	* tree-pretty-print.c (dump_generic_node): Likewise.
+ 
+ 2017-07-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/80846
+ 	* config/i386/i386.c (ix86_expand_vector_init_general): Handle
+ 	V2TImode and V4TImode.
+ 	(ix86_expand_vector_extract): Likewise.
+ 	* config/i386/sse.md (VMOVE): Enable V4TImode even for just
+ 	TARGET_AVX512F, instead of only for TARGET_AVX512BW.
+ 	(ssescalarmode): Handle V4TImode and V2TImode.
+ 	(VEC_EXTRACT_MODE): Add V4TImode and V2TImode.
+ 	(*vec_extractv2ti, *vec_extractv4ti): New insns.
+ 	(VEXTRACTI128_MODE): New mode iterator.
+ 	(splitter for *vec_extractv?ti first element): New.
+ 	(VEC_INIT_MODE): New mode iterator.
+ 	(vec_init<mode>): Consolidate 3 expanders into one using
+ 	VEC_INIT_MODE mode iterator.
+ 
+ 2017-07-20  Alexander Monakov  <amonakov@ispras.ru>
+ 
+ 	* lra-assigns.c (pseudo_compare_func): Fix comparison step based on
+ 	non_spilled_static_chain_regno_p.
+ 
+ 2017-07-20  Alexander Monakov  <amonakov@ispras.ru>
+ 
+ 	* gimple-ssa-store-merging.c (sort_by_bitpos): Return 0 on equal bitpos.
+ 
+ 2017-07-20  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* bb-reorder.c (connect_traces): Allow copying of blocks within
+ 	single partition.
+ 
+ 2017-07-20  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gimple.h (gimple_phi_result): Add gphi * overload.
+ 	(gimple_phi_result_ptr): Likewise.
+ 	(gimple_phi_arg): Likewise.  Adjust index assert to only
+ 	allow actual argument accesses rather than all slots available
+ 	by capacity.
+ 	(gimple_phi_arg_def): Add gphi * overload.
+ 	* tree-phinodes.c (make_phi_node): Initialize only actual
+ 	arguments.
+ 	(resize_phi_node): Clear memory not covered by old node,
+ 	do not initialize excess argument slots.
+ 	(reserve_phi_args_for_new_edge): Initialize new argument slot
+ 	completely.
+ 
+ 2017-07-20  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	PR tree-optimization/81388
+ 	Revert r238585:
+ 	2016-07-21  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Clean up
+ 	by removing computation of may_be_zero.
+ 
+ 2017-07-18  Jan Hubicka  <hubicka@ucw.cz>
+ 	    Tom de Vries  <tom@codesourcery.com>
+ 
+ 	PR middle-end/81030
+ 	* cfgbuild.c (find_many_sub_basic_blocks): Update REG_BR_PROB note
+ 	when gimple level profile disagrees with what RTL expander did.
+ 
+ 2017-07-20  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/61171
+ 	* tree-vectorizer.h (slp_instance): Add reduc_phis member.
+ 	(vect_analyze_stmt): Add slp instance parameter.
+ 	(vectorizable_reduction): Likewise.
+ 	* tree-vect-loop.c (vect_analyze_loop_operations): Adjust.
+ 	(vect_is_simple_reduction): Deal with chains not detected
+ 	as SLP reduction chain, specifically not properly associated
+ 	chains containing a mix of plus/minus.
+ 	(get_reduction_op): Remove.
+ 	(get_initial_defs_for_reduction): Simplify, pass in whether
+ 	this is a reduction chain, pass in the SLP node for the PHIs.
+ 	(vect_create_epilog_for_reduction): Get the SLP instance as
+ 	arg and adjust.
+ 	(vectorizable_reduction): Get the SLP instance as arg.
+ 	During analysis remember the SLP node with the PHIs in the
+ 	instance.  Simplify getting at the vectorized reduction PHIs.
+ 	* tree-vect-slp.c (vect_slp_analyze_node_operations): Pass
+ 	through SLP instance.
+ 	(vect_slp_analyze_operations): Likewise.
+ 	* tree-vect-stms.c (vect_analyze_stmt): Likewise.
+ 	(vect_transform_stmt): Likewise.
+ 
+ 2017-07-20  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	PR tree-optimization/81489
+ 	* gimple-ssa-isolate-paths.c (find_implicit_erroneous_behavior): Move
+ 	read of phi arg location to before loop that modifies phi.
+ 
+ 2017-07-20  Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
+ 
+ 	* match.pd (((m1 >/</>=/<= m2) * d -> (m1 >/</>=/<= m2) ? d : 0):
+ 	New pattern.
+ 
+ 2017-07-19  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR middle-end/81331
+ 	* except.c (execute): Fix ordering issue.
+ 
+ 2018-07-19  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR rtl-optimization/81423
+ 	* combine.c (make_compound_operation_int): Don't try to optimize
+ 	the AND of a SUBREG of an LSHIFTRT if that SUBREG is paradoxical.
+ 
+ 2017-07-19  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR rtl-optimization/81423
+ 	* simplify-rtx.c (simplify_truncation): Handle truncating an IOR
+ 	with a constant that is -1 in the truncated to mode.
+ 
+ 2017-07-19  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* predict.c (propagate_unlikely_bbs_forward): Break out from ...
+ 	(determine_unlikely_bbs): ... here.
+ 	* predict.h (propagate_unlikely_bbs_forward): Declare.
+ 	* cfgexpand.c (pass_expand::execute): Use it.
+ 	* bb-reorder.c (sanitize_hot_paths): Do not consider known to be
+ 	unlikely edges.
+ 	(find_rarely_executed_basic_blocks_and_crossing_edges): Use
+ 	propagate_unlikely_bbs_forward.
+ 
+ 2017-07-19  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR middle-end/81331
+ 	* except.c (maybe_add_nop_after_section_switch): New function.
+ 	(execute): Use it.
+ 
+ 2017-07-19  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	* gimple.h (gimple_phi_set_arg): Make assert more strict.
+ 
+ 2017-07-19  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	* gimple.h (gimple_phi_arg): Make assert more strict.
+ 
+ 2017-07-19  Steven Munroe  <munroesj@gcc.gnu.org>
+ 
+ 	* config.gcc (powerpc*-*-*): Add mmintrin.h.
+ 	* config/rs6000/mmintrin.h: New file.
+ 	* config/rs6000/x86intrin.h [__ALTIVEC__]: Include mmintrin.h.
+ 
+ 2017-07-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/81346
+ 	* match.pd: Optimize (X - 1U) <= INT_MAX-1U into (int) X > 0.
+ 
+ 2017-07-19  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	* config/nvptx/nvptx.md (VECIM): Add V2DI.
+ 
+ 2017-07-19  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	* config/nvptx/nvptx-modes.def: Add V2DImode.
+ 	* config/nvptx/nvptx-protos.h (nvptx_data_alignment): Declare.
+ 	* config/nvptx/nvptx.c (nvptx_ptx_type_from_mode): Handle V2DImode.
+ 	(nvptx_output_mov_insn): Handle lack of mov.b128.
+ 	(nvptx_print_operand): Handle 'H' and 'L' codes.
+ 	(nvptx_vector_mode_supported): Allow V2DImode.
+ 	(nvptx_preferred_simd_mode): New function.
+ 	(nvptx_data_alignment): New function.
+ 	(TARGET_VECTORIZE_PREFERRED_SIMD_MODE): Redefine to
+ 	nvptx_preferred_simd_mode.
+ 	* config/nvptx/nvptx.h (STACK_BOUNDARY, BIGGEST_ALIGNMENT): Change from
+ 	64 to 128 bits.
+ 	(DATA_ALIGNMENT): Define.  Set to nvptx_data_alignment.
+ 
+ 2017-07-19  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	* config/nvptx/nvptx-modes.def: New file.  Add V2SImode.
+ 	* config/nvptx/nvptx.c (nvptx_ptx_type_from_mode): Handle V2SImode.
+ 	(nvptx_vector_mode_supported): New function.  Allow V2SImode.
+ 	(TARGET_VECTOR_MODE_SUPPORTED_P): Redefine to nvptx_vector_mode_supported.
+ 	* config/nvptx/nvptx.md (VECIM): New mode iterator. Add V2SI.
+ 	(mov<VECIM>_insn): New define_insn.
+ 	(define_expand "mov<VECIM>): New define_expand.
+ 
+ 2017-07-19  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	* config/nvptx/nvptx.c (nvptx_print_operand): Handle v2 vector mode.
+ 
+ 2017-07-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/81346
+ 	* fold-const.h (fold_div_compare, range_check_type): Declare.
+ 	* fold-const.c (range_check_type): New function.
+ 	(build_range_check): Use range_check_type.
+ 	(fold_div_compare): No longer static, rewritten into
+ 	a match.pd helper function.
+ 	(fold_comparison): Don't call fold_div_compare here.
+ 	* match.pd (X / C1 op C2): New optimization using fold_div_compare
+ 	as helper function.
+ 
+ 2017-07-19  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* tree.h (TYPE_MINVAL, TYPE_MAXVAL): Rename to ...
+ 	(TYPE_MIN_VALUE_RAW, TYPE_MAX_VALUE_RAW): ... these.
+ 	* tree.c (find_decls_types_r, verify_type): Use
+ 	TYPE_{MIN,MAX}_VALUE_RAW.
+ 	* lto-streamer-out.c (DFS::DFS_write_tree_body): Likewise.
+ 	(hash_tree): Likewise.
+ 	* tree-streamer-in.c (lto_input_ts_type_non_common_tree_pointers):
+ 	Likewise.
+ 	* tree-streamer-out.c (write_ts_type_non_common_tree_pointers):
+ 	Likewise.
+ 
+ 2017-07-18  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	PR middle-end/81464
+ 	* omp-expand.c (expand_omp_for_static_chunk): Handle
+ 	equal-argument loop exit phi.
+ 
+ 2017-07-18  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/81471
+ 	* config/i386/i386.md (rorx_immediate_operand): New mode attribute.
+ 	(*bmi2_rorx<mode>3_1): Use rorx_immediate_operand as
+ 	operand 2 predicate.
+ 	(*bmi2_rorxsi3_1_zext): Use const_0_to_31_operand as
+ 	operand 2 predicate.
+ 	(ror,rol -> rorx splitters): Use const_int_operand as
+ 	operand 2 predicate.
+ 
+ 2017-06-18  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/81410
+ 	* tree-vect-stmts.c (vectorizable_load): Properly adjust for
+ 	the gap in the ! slp_perm SLP case after each group.
+ 
+ 2017-07-18  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR middle-end/81463
+ 	* cfgloopmanip.c (scale_loop_profile): Watch out for zero frequency
+ 	again.
+ 
+ 2017-07-18  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR middle-end/81462
+ 	* predict.c (set_even_probabilities): Cleanup; do not affect
+ 	probabilities that are already known.
+ 	(combine_predictions_for_bb): Call even when count is set.
+ 
+ 2017-07-18  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* tree-parloops.c (try_transform_to_exit_first_loop_alt): Use
+ 	TYPE_MAX_VALUE.
+ 
+ 2017-07-18  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	PR target/81408
+ 	* tree-ssa-loop-niter.c (number_of_iterations_exit): Dump missed
+ 	optimization for loop niter analysis.
+ 
+ 2017-07-18  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR target/81473
+ 	* config/avr/avr.c (avr_optimize_casesi): Don't use
+ 	INT8_MIN, INT8_MAX, UINT8_MAX, INT16_MIN, INT16_MAX, UINT16_MAX.
+ 
+ 2017-07-18  Robin Dapp  <rdapp@linux.vnet.ibm.com>
+ 
+ 	* tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Remove
+ 	body_cost_vec from _vect_peel_extended_info.
+ 	(vect_peeling_hash_get_lowest_cost): Do not set body_cost_vec.
+ 	(vect_peeling_hash_choose_best_peeling): Remove body_cost_vec and
+ 	npeel.
+ 
+ 2017-07-18  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* config/arm/arm.c (emit_unlikely_jump): Remove unused var.
+ 
+ 2017-07-18  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/80620
+ 	PR tree-optimization/81403
+ 	* tree-ssa-pre.c (phi_translate_1): Clear range and points-to
+ 	info when re-using a VN table entry.
+ 
+ 2017-07-18  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/81418
+ 	* tree-vect-loop.c (vectorizable_reduction): Properly compute
+ 	vectype_in.  Verify that with lane-reducing reduction operations
+ 	we have a single def-use cycle.
+ 
+ 2017-07-17  Carl Love  <cel@us.ibm.com>
+ 
+ 	Revert commit r249424	2017-06-20  Carl Love  <cel@us.ibm.com>
+ 
+ 	* config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
+ 	ALTIVEC_BUILTIN_VMULESW, ALTIVEC_BUILTIN_VMULEUW,
+ 	ALTIVEC_BUILTIN_VMULOSW, ALTIVEC_BUILTIN_VMULOUW entries.
+ 	* config/rs6000/rs6000.c (rs6000_gimple_fold_builtin,
+ 	builtin_function_type): Add ALTIVEC_BUILTIN_* case statements.
+ 	* config/rs6000/altivec.md (MVULEUW, VMULESW, VMULOUW,
+ 	VMULOSW): New enum "unspec" values.
+ 	(vec_widen_umult_even_v4si, vec_widen_smult_even_v4si,
+ 	vec_widen_umult_odd_v4si, vec_widen_smult_odd_v4si,
+ 	altivec_vmuleuw, altivec_vmulesw, altivec_vmulouw,
+ 	altivec_vmulosw): New patterns.
+ 	* config/rs6000/rs6000-builtin.def (VMLEUW, VMULESW, VMULOUW,
+ 	VMULOSW): Add definitions.
+ 
+ 2017-07-17  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/alpha/alpha.c: Include predict.h.
+ 
+ 2017-07-17  Yury Gribov  <tetra2005@gmail.com>
+ 
+ 	* tree-vrp.c (compare_assert_loc): Fix comparison function
+ 	to return predictable results.
+ 
+ 2017-07-17  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.md (adddi3): Remove support for mexpand-adddi
+ 	option.
+ 	(subdi3): Likewise.
+ 	* config/arc/arc.opt (mexpand-adddi): Deprecate it.
+ 	* doc/invoke.texi (mexpand-adddi): Update text.
+ 
+ 2017-07-17  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.md (clzsi2): Expand to an arc_clzsi2 instruction
+ 	that also clobbers the CC register. The old expand code is moved
+ 	to ...
+ 	(*arc_clzsi2): ... here.
+ 	(ctzsi2): Expand to an arc_ctzsi2 instruction that also clobbers
+ 	the CC register. The old expand code is moved to ...
+ 	(arc_ctzsi2): ... here.
+ 
+ 2017-07-17  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.opt (mindexed-loads): Use initial value
+ 	TARGET_INDEXED_LOADS_DEFAULT.
+ 	(mauto-modify-reg): Use initial value
+ 	TARGET_AUTO_MODIFY_REG_DEFAULT.
+ 	* config/arc/elf.h (TARGET_INDEXED_LOADS_DEFAULT): Define.
+ 	(TARGET_AUTO_MODIFY_REG_DEFAULT): Likewise.
+ 	* config/arc/linux.h (TARGET_INDEXED_LOADS_DEFAULT): Define.
+ 	(TARGET_AUTO_MODIFY_REG_DEFAULT): Likewise.
+ 
+ 2017-07-17  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR sanitizer/81302
+ 	* opts.c (finish_options): Do not allow -fgnu-tm
+ 	w/ -fsanitize={kernel-,}address.  Say sorry.
+ 
+ 2017-07-17  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	PR target/81369
+ 	* tree-loop-distribution.c (classify_partition): Only assert on
+ 	numer of iterations.
+ 	(merge_dep_scc_partitions): Delete prameter.  Update function call.
+ 	(distribute_loop): Remove code handling loop with unknown niters.
+ 	(pass_loop_distribution::execute): Skip loop with unknown niters.
+ 
+ 2017-07-17  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	PR target/81369
+ 	* tree-loop-distribution.c (merge_dep_scc_partitions): Sink call to
+ 	function sort_partitions_by_post_order.
+ 
+ 2017-07-17  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	PR tree-optimization/81374
+ 	* tree-loop-distribution.c (pass_loop_distribution::execute): Record
+ 	the max index of basic blocks, rather than number of basic blocks.
+ 
+ 2017-07-17  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc-protos.h (arc_legitimate_pc_offset_p): Remove
+ 	proto.
+ 	(arc_legitimate_pic_operand_p): Likewise.
+ 	* config/arc/arc.c (arc_legitimate_pic_operand_p): Remove
+ 	function.
+ 	(arc_needs_pcl_p): Likewise.
+ 	(arc_legitimate_pc_offset_p): Likewise.
+ 	(arc_legitimate_pic_addr_p): Remove LABEL_REF case, as this
+ 	function is also used in constrains.md.
+ 	(arc_legitimate_constant_p): Use arc_legitimate_pic_addr_p to
+ 	validate pic constants. Handle CONST_INT, CONST_DOUBLE, MINUS and
+ 	PLUS.  Only return true/false in known cases, otherwise assert.
+ 	(arc_legitimate_address_p): Remove arc_legitimate_pic_addr_p as it
+ 	is already called in arc_legitimate_constant_p.
+ 	* config/arc/arc.h (CONSTANT_ADDRESS_P): Consider also LABEL for
+ 	pic addresses.
+ 	(LEGITIMATE_PIC_OPERAND_P): Use
+ 	arc_raw_symbolic_reference_mentioned_p function.
+ 	* config/arc/constraints.md (Cpc): Use arc_legitimate_pic_addr_p
+ 	function.
+ 	(Cal): Likewise.
+ 	(C32): Likewise.
+ 
+ 2017-07-17  Claudiu Zissulescu  <claziss@synopsys.com>
+ 	Andrew Burgess  <andrew.burgess@embecosm.com>
+ 
+ 	* config/arc/arc-protos.h (arc_compute_function_type): Change prototype.
+ 	(arc_return_address_register): New function.
+ 	* config/arc/arc.c (arc_handle_fndecl_attribute): New function.
+ 	(arc_handle_fndecl_attribute): Add naked attribute.
+ 	(TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS): Define.
+ 	(TARGET_WARN_FUNC_RETURN): Likewise.
+ 	(arc_allocate_stack_slots_for_args): New function.
+ 	(arc_warn_func_return): Likewise.
+ 	(machine_function): Change type fn_type.
+ 	(arc_compute_function_type): Consider new naked function type,
+ 	change function return type.
+ 	(arc_must_save_register): Adapt to handle new
+ 	arc_compute_function_type's return type.
+ 	(arc_expand_prologue): Likewise.
+ 	(arc_expand_epilogue): Likewise.
+ 	(arc_return_address_regs): Delete.
+ 	(arc_return_address_register): New function.
+ 	(arc_epilogue_uses): Use above function.
+ 	* config/arc/arc.h (arc_return_address_regs): Delete prototype.
+ 	(arc_function_type): Change encoding, add naked type.
+ 	(ARC_INTERRUPT_P): Change to handle the new encoding.
+ 	(ARC_FAST_INTERRUPT_P): Likewise.
+ 	(ARC_NORMAL_P): Define.
+ 	(ARC_NAKED_P): Likewise.
+ 	(arc_compute_function_type): Delete prototype.
+ 	* config/arc/arc.md (in_ret_delay_slot): Use
+ 	arc_return_address_register function.
+ 	(simple_return): Likewise.
+ 	(p_return_i): Likewise.
+ 
+ 2017-07-17  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/81428
+ 	* match.pd (X / X -> one): Don't optimize _Fract divisions, as 1
+ 	can't be built for those types.
+ 
+ 2017-07-17  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Remove stuff dead since r239246.
+ 
+ 	* config/avr/avr-arch.h (avr_inform_devices): Remove dead proto.
+ 	* config/avr/avr-devices.c (mcu_name, comparator, avr_mcus_str)
+ 	(avr_inform_devices): Remove dead stuff.
+ 
+ 2017-07-17  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* config/arm/arm_neon.h: Fix softp typo.
+ 
+ 2017-07-17  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/81365
+ 	* tree-ssa-phiprop.c (propagate_with_phi): When considering hoisting
+ 	aggregate moves onto bb predecessor edges, make sure there are no
+ 	loads that could alias the lhs in between the start of bb and the
+ 	loads from *phi.
+ 
+ 2017-07-17  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR 80929
+ 	* config/avr/avr.c (avr_mul_highpart_cost): New static function.
+ 	(avr_rtx_costs_1) [TRUNCATE]: Use it to compute mul_highpart cost.
+ 	[LSHIFTRT, outer_code = TRUNCATE]: Same.
+ 
+ 2017-07-17  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/81396
+ 	* tree-ssa-math-opts.c (struct symbolic_number): Add n_ops field.
+ 	(init_symbolic_number): Initialize it to 1.
+ 	(perform_symbolic_merge): Add n_ops from both operands into the new
+ 	n_ops.
+ 	(find_bswap_or_nop): Don't consider n->n == cmpnop computations
+ 	without base_addr as useless if they need more than one operation.
+ 	(bswap_replace): Handle !bswap case for NULL base_addr.
+ 
+ 2017-07-17  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	PR target/81069
+ 	* config/nvptx/nvptx.c (nvptx_single): Insert diverging branch as late
+ 	as possible.
+ 
+ 2017-07-17  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+ 
+ 	* config/sparc/rtemself.h (TARGET_OS_CPP_BUILTINS): Add
+ 	conditional builtin define __FIX_LEON3FT_B2BST.
+ 
+ 2017-07-17  Daniel Cederman  <cederman@gaisler.com>
+ 
+ 	* config/sparc/t-rtems: Add mfix-gr712rc multilibs. Replace
+ 	MULTILIB_EXCEPTIONS with MULTILIB_REQUIRED. Match -mfix-gr712rc
+ 	with -mfix-ut700.
+ 
+ 2017-07-16  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR rtl-optimization/81424
+ 	* optabs.c (prepare_cmp_insn): Use copy_to_reg instead of force_reg
+ 	to remove potential trapping from operands if -fnon-call-exceptions.
+ 
+ 2017-07-16  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Use
+ 	profile_proability for scalling.
+ 	* scale_profile_for_vect_loop.c (scale_profile_for_vect_loop): Likewise.
+ 
+ 2017-07-16  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* cgraph.c (cgraph_edge::redirect_call_stmt_to_caller): Cleanup.
+ 
+ 2017-07-16  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* cfgloopmanip.c (scale_loop_profile): Avoid use of REG_BR_PROB_BASE
+ 	fixpoint arithmetics.
+ 
+ 2017-07-16  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* tree-ssa-loop-unswitch.c (hoist_guard): Avoid use of REG_BR_PROB_BASE
+ 	fixpoint arithmetics.
+ 
+ 2017-07-16  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* asan.c (create_cond_insert_point): Avoid use of REG_BR_PROB_BASE
+ 	fixpoint arithmetics.
+ 
+ 2017-07-16  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* profile-count.h (profile_probability::from_reg_br_prob_note,
+ 	profile_probability::to_reg_br_prob_note): New functions.
+ 	* doc/rtl.texi (REG_BR_PROB_NOTE): Update documentation.
+ 	* reg-notes.h (REG_BR_PROB, REG_BR_PRED): Update docs.
+ 	* predict.c (probability_reliable_p): Update.
+ 	(edge_probability_reliable_p): Update.
+ 	(br_prob_note_reliable_p): Update.
+ 	(invert_br_probabilities): Update.
+ 	(add_reg_br_prob_note): New function.
+ 	(combine_predictions_for_insn): Update.
+ 	* asan.c (asan_clear_shadow): Update.
+ 	* cfgbuild.c (compute_outgoing_frequencies): Update.
+ 	* cfgrtl.c (force_nonfallthru_and_redirect): Update.
+ 	(update_br_prob_note): Update.
+ 	(rtl_verify_edges): Update.
+ 	(purge_dead_edges): Update.
+ 	(fixup_reorder_chain): Update.
+ 	* emit-rtl.c (try_split): Update.
+ 	* ifcvt.c (cond_exec_process_insns): Update.
+ 	(cond_exec_process_if_block): Update.
+ 	(dead_or_predicable): Update.
+ 	* internal-fn.c (expand_addsub_overflow): Update.
+ 	(expand_neg_overflow): Update.
+ 	(expand_mul_overflow): Update.
+ 	* loop-doloop.c (doloop_modify): Update.
+ 	* loop-unroll.c (compare_and_jump_seq): Update.
+ 	* optabs.c (emit_cmp_and_jump_insn_1): Update.
+ 	* predict.h: Update.
+ 	* reorg.c (mostly_true_jump): Update.
+ 	* rtl.h: Update.
+ 	* config/aarch64/aarch64.c (aarch64_emit_unlikely_jump): Update.
+ 	* config/alpha/alpha.c (emit_unlikely_jump): Update.
+ 	* config/arc/arc.c: (emit_unlikely_jump): Update.
+ 	* config/arm/arm.c: (emit_unlikely_jump): Update.
+ 	* config/bfin/bfin.c (cbranch_predicted_taken_p): Update.
+ 	* config/frv/frv.c (frv_print_operand_jump_hint): Update.
+ 	* config/i386/i386.c (ix86_expand_split_stack_prologue): Update.
+ 	(ix86_print_operand): Update.
+ 	(ix86_split_fp_branch): Update.
+ 	(predict_jump): Update.
+ 	* config/ia64/ia64.c (ia64_print_operand): Update.
+ 	* config/mmix/mmix.c (mmix_print_operand): Update.
+ 	* config/powerpcspe/powerpcspe.c (output_cbranch): Update.
+ 	(rs6000_expand_split_stack_prologue): Update.
+ 	* config/rs6000/rs6000.c: Update.
+ 	* config/s390/s390.c (s390_expand_vec_strlen): Update.
+ 	(s390_expand_vec_movstr): Update.
+ 	(s390_expand_cs_tdsi): Update.
+ 	(s390_expand_split_stack_prologue): Update.
+ 	* config/sh/sh.c (sh_print_operand): Update.
+ 	(expand_cbranchsi4): Update.
+ 	(expand_cbranchdi4): Update.
+ 	* config/sparc/sparc.c (output_v9branch): Update.
+ 	* config/spu/spu.c (get_branch_target): Update.
+ 	(ea_load_store_inline): Update.
+ 	* config/tilegx/tilegx.c (cbranch_predicted_p): Update.
+ 	* config/tilepro/tilepro.c: Update.
+ 
+ 2017-07-16  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gimplify.c (mostly_copy_tree_r): Revert latest change.
+ 	(gimplify_save_expr): Likewise.
+ 
+ 2017-07-07  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* ipa-visibility.c (function_and_variable_visibility): Fix pasto.
+ 
+ 2017-07-07  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* ipa-fnsummary.c (pass_data_ipa_fn_summary): Use
+ 	TV_IPA_FNSUMMARY.
+ 	* timevar.def (TV_IPA_FNSUMMARY): Define.
+ 
+ 2017-07-16  Daniel Cederman  <cederman@gaisler.com>
+ 
+ 	* config/sparc/sparc.md (divdf3_fix): Add NOP to prevent back
+ 	to back store errata sensitive sequence from being generated.
+ 	(sqrtdf2_fix): Likewise.
+ 
+ 2017-07-07  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* tree-ssa-threadupdate.c (compute_path_counts,
+ 	update_joiner_offpath_counts): Use profile_probability.
+ 
+ 2017-07-15  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	Revert:
+ 	2017-07-14  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	* config/arm/arm-c.c (arm_cpu_builtins): Define
+ 	__ARM_FEATURE_NUMERIC_MAXMIN solely based on TARGET_VFP5.
+ 
+ 2017-07-14  Kelvin Nilsen  <kelvin@gcc.gnu.org>
+ 
+ 	* config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
+ 	array entries to represent __ieee128 versions of the
+ 	scalar_test_data_class, scalar_test_neg, scalar_extract_exp,
+ 	scalar_extract_sig, and scalar_insert_exp built-in functions.
+ 	(altivec_resolve_overloaded_builtin): Add special case handling
+ 	for the __builtin_scalar_insert_exp function, as represented by
+ 	the P9V_BUILTIN_VEC_VSIEDP constant.
+ 	* config/rs6000/rs6000-builtin.def (VSEEQP): Add scalar extract
+ 	exponent support for __ieee128 argument.
+ 	(VSESQP): Add scalar extract signature support for __ieee128
+ 	argument.
+ 	(VSTDCNQP): Add scalar test negative support for __ieee128
+ 	argument.
+ 	(VSIEQP): Add scalar insert exponent support for __int128 argument
+ 	with __ieee128 result.
+ 	(VSIEQPF): Add scalar insert exponent support for __ieee128
+ 	argument with __ieee128 result.
+ 	(VSTDCQP): Add scalar test data class support for __ieee128
+ 	argument.
+ 	(VSTDCNQP): Add overload support for scalar test negative with
+ 	__ieee128 argument.
+ 	(VSTDCQP): Add overload support for scalar test data class
+ 	__ieee128 argument.
+ 	* config/rs6000/vsx.md (UNSPEC_VSX_SXSIG) Replace
+ 	UNSPEC_VSX_SXSIGDP.
+ 	(UNSPEC_VSX_SIEXPQP): New constant.
+ 	(xsxexpqp): New insn for VSX scalar extract exponent quad
+ 	precision.
+ 	(xsxsigqp): New insn for VSX scalar extract significand quad
+ 	precision.
+ 	(xsiexpqpf): New insn for VSX scalar insert exponent quad
+ 	precision with floating point argument.
+ 	(xststdcqp): New expand for VSX scalar test data class quad
+ 	precision.
+ 	(xststdcnegqp): New expand for VSX scalar test negative quad
+ 	precision.
+ 	(xststdcqp): New insn to match expansions for VSX scalar test data
+ 	class quad precision and VSX scalar test negative quad precision.
+ 	* config/rs6000/rs6000.c (rs6000_expand_binop_builtin): Add
+ 	special case operand checking to enforce that second operand of
+ 	VSX scalar test data class with quad precision argument is a 7-bit
+ 	unsigned literal.
+ 	* doc/extend.texi (PowerPC AltiVec Built-in Functions): Add
+ 	prototypes and descriptions of __ieee128 versions of
+ 	scalar_extract_exp, scalar_extract_sig, scalar_insert_exp,
+ 	scalar_test_data_class, and scalar_test_neg built-in functions.
+ 
+ 2016-07-14  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	PR tree-optimization/81162
+ 	* gimple-ssa-strength-reduction.c (replace_mult_candidate): Don't
+ 	replace a negate with an add.
+ 
+ 2017-07-14  James Greenhalgh  <james.greenhalgh@arm.com>
+ 
+ 	* doc/invoke.texi (arm/-mcpu): Document +crypto.
+ 
+ 2017-07-14  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	* config/arm/arm-c.c (arm_cpu_builtins): Define
+ 	__ARM_FEATURE_NUMERIC_MAXMIN solely based on TARGET_VFP5.
+ 
+ 2017-07-14  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	* config/arm/arm-cpus.in (cortex-r52): Add new entry.
+ 	(armv8-r): Set ARM Cortex-R52 as default CPU.
+ 	* config/arm/arm-tables.opt: Regenerate.
+ 	* config/arm/arm-tune.md: Regenerate.
+ 	* config/arm/driver-arm.c (arm_cpu_table): Add entry for ARM
+ 	Cortex-R52.
+ 	* doc/invoke.texi: Mention -mtune=cortex-r52 and availability of fp.dp
+ 	extension for -mcpu=cortex-r52.
+ 
+ 2017-07-14  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	* config/arm/arm-isa.h (isa_bit_FP_ARMv8): Delete enumerator.
+ 	(ISA_FP_ARMv8): Define as ISA_FPv5 and ISA_FP_D32.
+ 	* config/arm/arm-cpus.in (armv8-r): Define fp.sp as enabling FPv5.
+ 	(fp-armv8): Define it as FP_ARMv8 only.
+ 	config/arm/arm.h (TARGET_FPU_ARMV8): Delete.
+ 	(TARGET_VFP_FP16INST): Define using TARGET_VFP5 rather than
+ 	TARGET_FPU_ARMV8.
+ 	config/arm/arm.c (arm_rtx_costs_internal): Replace checks against
+ 	TARGET_FPU_ARMV8 by checks against TARGET_VFP5.
+ 	* config/arm/arm-builtins.c (arm_builtin_vectorized_function): Define
+ 	first ARM_CHECK_BUILTIN_MODE definition using TARGET_VFP5 rather
+ 	than TARGET_FPU_ARMV8.
+ 	* config/arm/arm-c.c (arm_cpu_builtins): Likewise for
+ 	__ARM_FEATURE_NUMERIC_MAXMIN macro definition.
+ 	* config/arm/arm.md (cmov<mode>): Condition on TARGET_VFP5 rather than
+ 	TARGET_FPU_ARMV8.
+ 	* config/arm/neon.md (neon_vrint): Likewise.
+ 	(neon_vcvt): Likewise.
+ 	(neon_<fmaxmin_op><mode>): Likewise.
+ 	(<fmaxmin><mode>3): Likewise.
+ 	* config/arm/vfp.md (l<vrint_pattern><su_optab><mode>si2): Likewise.
+ 	* config/arm/predicates.md (arm_cond_move_operator): Check against
+ 	TARGET_VFP5 rather than TARGET_FPU_ARMV8 and fix spacing.
+ 
+ 2017-07-14  Jackson Woodruff  <jackson.woodruff@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_print_operand): Move comments
+ 	to top of function.
+ 
+ 2017-07-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* gimple-ssa-store-merging.c (clear_bit_region): Replace reference to
+ 	loop in comment with memset.
+ 
+ 2017-07-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	* cfgexpand.c (expand_gimple_basic_block): Remove dead comment.
+ 	* dwarf2out.c (is_java): Remove the function.
+ 	(output_pubname): Remove usage of the function.
+ 	(lower_bound_default): Remove usage of DW_LANG_Java.
+ 	(gen_compile_unit_die): Likewise.
+ 	* gcc.c: Remove compiler defaults for .java and .zip files.
+ 	* gimple-expr.c (remove_suffix): Change as there's no longer
+ 	extension than 4-letter one.
+ 	* gimplify.c (mostly_copy_tree_r): Remove Java-special part.
+ 	(gimplify_save_expr): Likewise.
+ 	* ipa-utils.h (polymorphic_type_binfo_p): Remove the comment
+ 	as it's possible even for other languages than Java.
+ 	* langhooks.h (struct lang_hooks): Remove Java from a comment.
+ 	* lto-opts.c (lto_write_options): Remove reference to Java.
+ 	* opts.c (strip_off_ending): Update file extension handling.
+ 	* tree-cfg.c (verify_gimple_call): Remove comment with Java.
+ 	* tree-eh.c (lower_resx): Likewise.
+ 	* tree.c (free_lang_data_in_type): Remove dead code.
+ 	(find_decls_types_r): Likewise.
+ 	(build_common_builtin_nodes): Remove Java from a comment.
+ 	(verify_type): Remove dead code.
+ 	* varasm.c (assemble_external): Remove Java from a comment.
+ 
+ 2017-07-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	* opts.c (finish_options): Add quotes.
+ 	(common_handle_option): Likewise.
+ 
+ 2017-07-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	* dbxout.c (get_lang_number): Do not handle GNU Pascal.
+ 	* dbxout.h (extern void dbxout_stab_value_internal_label_diff):
+ 	Remove N_SO_PASCAL.
+ 	* dwarf2out.c (lower_bound_default): Do not handle
+ 	DW_LANG_Pascal83.
+ 	(gen_compile_unit_die): Likewise.
+ 	* gcc.c: Remove default extension binding for GNU Pascal.
+ 	* stmt.c: Remove Pascal language from a comment.
+ 	* xcoffout.c: Likewise.
+ 
+ 2017-07-13  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR c/81405
+ 	* diagnostic-show-locus.c (fixit_cmp): New function.
+ 	(layout::layout): Sort m_fixit_hints.
+ 	(column_range::column_range): Assert that the values are valid.
+ 	(struct char_span): New struct.
+ 	(correction::overwrite): New method.
+ 	(struct source_line): New struct.
+ 	(line_corrections::add_hint): Add assertions.  Reimplement memcpy
+ 	calls in terms of classes source_line and char_span, and
+ 	correction::overwrite.
+ 	(selftest::test_overlapped_fixit_printing_2): New function.
+ 	(selftest::diagnostic_show_locus_c_tests): Call it.
+ 
+ 2017-07-13  Will Schmidt  <will_schmidt@vnet.ibm.com>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Return
+ 	early if there is no lhs.
+ 
+ 2017-07-13  Martin Liska  <mliska@suse.cz>
+ 
+ 	* dwarf2out.c (gen_pointer_type_die): Remove dead code.
+ 	(gen_reference_type_die): Likewise.
+ 	* stor-layout.c: Remove Pascal-related comment.
+ 
+ 2017-07-13  Martin Liska  <mliska@suse.cz>
+ 
+ 	* opts.c (finish_options): Add quotes to error messages.
+ 	(parse_sanitizer_options): Likewise.
+ 
+ 2017-07-13  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	* doc/invoke.texi (armv8-r): Document +fp.sp ARMv8-R extension.
+ 
+ 2017-07-13  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config/arm/vxworks.h (TARGET_ENDIAN_DEFAULT): Define.
+ 
+ 2017-07-13  Maxim Ostapenko  <m.ostapenko@samsung.com>
+ 
+ 	* asan.c (asan_emit_allocas_unpoison): Use ptr_mode for arguments
+ 	during expansion.
+ 	* builtins.c (expand_asan_emit_allocas_unpoison): Likewise.
+ 
+ 2017-07-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	PR target/81193
+ 	* config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): If GLIBC
+ 	provides the hardware capability bits, define the macro
+ 	__BUILTIN_CPU_SUPPORTS__.
+ 	* config/rs6000/rs6000.c (cpu_expand_builtin): Generate a warning
+ 	if GLIBC does not provide the hardware capability bits.  Add a
+ 	gcc_unreachable call if the built-in cpu function is neither
+ 	__builtin_cpu_is nor __builtin_cpu_supports.
+ 	(rs6000_get_function_versions_dispatcher): Change the warning
+ 	that an old GLIBC is used which does not export the capability
+ 	bits to be an error.
+ 	* doc/extend.texi (target_clones attribute): Document the
+ 	restriction that GLIBC 2.23 or newer is needed on the PowerPC.
+ 	(PowerPC built-in functions): Document that GLIBC 2.23 or newer is
+ 	needed by __builtin_cpu_is and __builtin_cpu_supports.  Document
+ 	the macros defined by GCC if the newer GLIBC is available.
+ 
+ 2017-07-12  Jeff Law  <law@redhat.com>
+ 
+ 	* config/riscv/riscv.c: Remove unnecessary includes.  Reorder
+ 	remaining includes slightly.
+ 	* config/riscv/riscv-builtins.c: Include profile-count.h.
+ 
+ 2017-07-12  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR target/79883
+ 	* config/avr/avr.c (avr_set_current_function): In diagnostic
+ 	messages: Quote keywords and (parts of) identifiers.
+ 	[WITH_AVRLIBC]: Warn for functions named "ISR", "SIGNAL" or
+ 	"INTERUPT".
+ 
+ 2017-07-12  Carl Love  <cel@us.ibm.com>
+ 
+ 	* config/rs6000/rs6000-c.c: Add support for built-in functions
+ 	vector bool char vec_revb (vector bool char);
+ 	vector bool short vec_revb (vector short char);
+ 	vector bool int vec_revb (vector bool int);
+ 	vector bool long long vec_revb (vector bool long long);
+ 	* doc/extend.texi: Update the built-in documentation file for the
+ 	new built-in functions.
+ 
+ 2017-07-12  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	* config/s390/s390.md: Remove movcc splitter.
+ 
+ 2017-07-12  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	* config/s390/s390.c (s390_rtx_costs): Return proper costs for
+ 	load/store on condition.
+ 
+ 2017-07-12  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR target/81407
+ 	* config/avr/avr.c (avr_encode_section_info)
+ 	[progmem && !TREE_READONLY]: Error if progmem object needs
+ 	constructing.
+ 
+ 2017-07-11  Michael Collison  <michael.collison@arm.com>
+ 
+ 	* config/aarch64/aarch64-simd.md (aarch64_sub<mode>_compare0):
+ 	New pattern.
+ 
+ 2017-07-11  Carl Love  <cel@us.ibm.com>
+ 
+ 	* config/rs6000/rs6000-c.c: Add support for builtins
+ 	vector unsigned int vec_parity_lsbb (vector signed int);
+ 	vector unsigned int vec_parity_lsbb (vector unsigned int);
+ 	vector unsigned __int128 vec_parity_lsbb (vector signed __int128);
+ 	vector unsigned __int128 vec_parity_lsbb (vector unsigned __int128);
+ 	vector unsigned long long vec_parity_lsbb (vector signed long long);
+ 	vector unsigned long long vec_parity_lsbb (vector unsigned long long);
+ 	* config/rs6000/rs6000-builtin.def (VPARITY_LSBB): Add BU_P9V_OVERLOAD1.
+ 	* config/rs6000/altivec.h (vec_parity_lsbb): Add define.
+ 	* doc/extend.texi: Update the built-in documentation file for the
+ 	new built-in functions.
+ 
+ 2017-07-11  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* diagnostic-show-locus.c: Include "gcc-rich-location.h".
+ 	(layout::m_primary_loc): New field.
+ 	(layout::layout): Initialize new field.  Move location filtering
+ 	logic from here to...
+ 	(layout::maybe_add_location_range): ...this new method.  Add
+ 	support for filtering to just the lines already specified by other
+ 	locations.
+ 	(layout::will_show_line_p): New method.
+ 	(gcc_rich_location::add_location_if_nearby): New method.
+ 	(selftest::test_add_location_if_nearby): New test function.
+ 	(selftest::diagnostic_show_locus_c_tests): Call it.
+ 	* gcc-rich-location.h (gcc_rich_location::add_location_if_nearby):
+ 	New method.
+ 
+ 2017-07-11  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	* config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG): New macro.
+ 	(bb_first_real_insn): New function.
+ 	(nvptx_single): Add extra initialization of broadcasted condition
+ 	variables.
+ 
+ 2017-07-11  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* dwarf2out.c (gen_member_die): Remove useless check for anon ctors.
+ 
+ 2017-07-11  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	* doc/extend.texi (AVR Function Attributes): Remove weblink to
+ 	Binutils doc as TEXI will mess them up.
+ 	* doc/invoke.texi (AVR Options): Same here.
+ 
+ 2017-07-11  Daniel Cederman  <cederman@gaisler.com>
+ 
+ 	* config/sparc/sparc.opt (mfix-ut700): New option.
+ 	(mfix-gr712rc): Likewise.
+ 	(sparc_fix_b2bst): New variable.
+ 	* doc/invoke.texi (SPARC options): Document them.
+ 	(ARM options): Fix warnings.
+ 	* config/sparc/sparc.c (sparc_do_work_around_errata): Insert NOP
+ 	instructions to prevent sequences that can trigger the store-store
+ 	errata for certain LEON3FT processors.
+ 	(pass_work_around_errata::gate): Also test sparc_fix_b2bst.
+ 	(sparc_option_override): Set sparc_fix_b2bst appropriately.
+ 	* config/sparc/sparc.md (fix_b2bst): New attribute.
+ 	(in_branch_delay): Prevent stores in delay slot if fix_b2bst.
+ 
+ 2017-07-10  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/81375
+ 	* config/i386/i386.md (divsf3): Add TARGET_SSE to TARGET_SSE_MATH.
+ 	(rcpps): Ditto.
+ 	(*rsqrtsf2_sse): Ditto.
+ 	(rsqrtsf2): Ditto.
+ 	(div<mode>3): Macroize insn from divdf3 and divsf3
+ 	using MODEF mode iterator.
+ 
+ 2017-07-10  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR tree-optimization/80397
+ 	* gimple-ssa-sprintf.c (format_integer): Use INTEGRAL_TYPE_P()
+ 	instead of testing for equality to INTEGER_TYPE.
+ 
+ 2017-07-10  Vineet Gupta <vgupta@synopsys.com>
+ 
+ 	* config.gcc: Remove uclibc from arc target spec.
+ 
+ 2017-07-10  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.h (ADDITIONAL_REGISTER_NAMES): Define.
+ 
+ 2017-07-07  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR lto/80838
+ 	* lto-wrapper.c (remove_option): New function.
+ 	(merge_and_complain): Merge PIC/PIE options more realistically.
+ 
+ 2017-07-10  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Better ISR prologues by supporting GASes __gcc_isr pseudo insn.
+ 
+ 	PR target/20296
+ 	PR target/81268
+ 	* configure.ac [target=avr]: Add GAS check for -mgcc-isr.
+ 	(HAVE_AS_AVR_MGCCISR_OPTION):  If so, AC_DEFINE it.
+ 	* config.in: Regenerate.
+ 	* configure: Regenerate.
+ 	* doc/extend.texi (AVR Function Attributes) <no_gccisr>: Document it.
+ 	* doc/invoke.texi (AVR Options) <-mgas-isr-prologues>: Document it.
+ 	* config/avr/avr.opt (-mgas-isr-prologues): New option and...
+ 	(TARGET_GASISR_PROLOGUES): ...target mask.
+ 	* common/config/avr/avr-common.c
+ 	(avr_option_optimization_table) [OPT_LEVELS_1_PLUS_NOT_DEBUG]:
+ 	Set -mgas-isr-prologues.
+ 	* config/avr/avr-passes.def (avr_pass_pre_proep): Add
+ 	INSERT_PASS_BEFORE for it.
+ 	* config/avr/avr-protos.h (make_avr_pass_pre_proep): New proto.
+ 	* config/avr/avr.c (avr_option_override)
+ 	[!HAVE_AS_AVR_MGCCISR_OPTION]: Unset TARGET_GASISR_PROLOGUES.
+ 	(avr_no_gccisr_function_p, avr_hregs_split_reg): New static functions.
+ 	(avr_attribute_table) <no_gccisr>: Add new function attribute.
+ 	(avr_set_current_function) <is_no_gccisr>: Init machine field.
+ 	(avr_pass_data_pre_proep, avr_pass_pre_proep): New pass data
+ 	and rtl_opt_pass.
+ 	(make_avr_pass_pre_proep): New function.
+ 	(emit_push_sfr) <treg>: Add argument to function and use it
+ 	instead of TMP_REG.
+ 	(avr_expand_prologue) [machine->gasisr.maybe]: Emit gasisr insn
+ 	and set machine->gasisr.yes.
+ 	(avr_expand_epilogue) [machine->gasisr.yes]: Similar.
+ 	(avr_asm_function_end_prologue) [machine->gasisr.yes]: Add
+ 	__gcc_isr.n_pushed to .L__stack_usage.
+ 	(TARGET_ASM_FINAL_POSTSCAN_INSN): Define to...
+ 	(avr_asm_final_postscan_insn): ...this new static function.
+ 	* config/avr/avr.h (machine_function)
+ 	<is_no_gccisr, use_L__stack_usage>: New fields.
+ 	<gasisr, gasisr.yes, gasisr.maybe, gasisr.regno>: New fields.
+ 	* config/avr/avr.md (UNSPECV_GASISR): Add unspecv enum.
+ 	(GASISR_Prologue, GASISR_Epilogue, GASISR_Done): New define_constants.
+ 	(gasisr, *gasisr): New expander and insn.
+ 	* config/avr/gen-avr-mmcu-specs.c (print_mcu)
+ 	[HAVE_AS_AVR_MGCCISR_OPTION]: Print asm_gccisr spec.
+ 	* config/avr/specs.h (ASM_SPEC) <asm_gccisr>: Add sub spec.
+ 
+ 2017-07-10  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config/arm/parsecpu.awk (gen_comm_data): Do not escape single quotes
+ 	in quoted strings.
+ 
+ 2017-07-10  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Move jump-tables out of .text again.
+ 
+ 	PR target/81075
+ 	* config/avr/avr.c (ASM_OUTPUT_ADDR_VEC_ELT): Remove function.
+ 	(ASM_OUTPUT_ADDR_VEC): New function.
+ 	(avr_adjust_insn_length) [JUMP_TABLE_DATA_P]: Return 0.
+ 	(avr_final_prescan_insn) [avr_log.insn_addresses]: Dump
+ 	INSN_ADDRESSes as asm comment.
+ 	* config/avr/avr.h (JUMP_TABLES_IN_TEXT_SECTION): Adjust comment.
+ 	(ASM_OUTPUT_ADDR_VEC_ELT): Remove define.
+ 	(ASM_OUTPUT_ADDR_VEC): Define to avr_output_addr_vec.
+ 	* config/avr/avr.md (*tablejump): Adjust comment.
+ 	* config/avr/elf.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Remove.
+ 	* config/avr/avr-log.c (avr_log_set_avr_log) <insn_addresses>:
+ 	New detail.
+ 	* config/avr/avr-protos.h (avr_output_addr_vec_elt): Remove proto.
+ 	(avr_output_addr_vec): New proto.
+ 	(avr_log_t) <insn_addresses>: New field.
+ 
+ 2017-07-09  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/81313
+ 	* config/i386/i386.c (ix86_function_arg_advance): Set
+ 	outgoing_args_on_stack to true if there are outgoing arguments
+ 	on stack.
+ 	(ix86_function_arg): Likewise.
+ 	(ix86_get_drap_rtx): Use DRAP only if there are outgoing
+ 	arguments on stack and ACCUMULATE_OUTGOING_ARGS is false.
+ 	* config/i386/i386.h (machine_function): Add
+ 	outgoing_args_on_stack.
+ 
+ 2017-07-09  Krister Walfridsson  <krister.walfridsson@gmail.com>
+ 
+ 	* config.gcc (*-*-netbsd*): Remove check for NetBSD versions not
+ 	supporting pthreds.
+ 	* config/netbsd.h (NETBSD_LIBGCC_SPEC): Always enable pthreads.
+ 
+ 2017-07-08  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* Makefile.in (HOOKS_H, RTL_BASE_H, FUNCTION_H, EXPR_H, REGS_H)
+ 	(REAL_H): Remove $(MACHMODE_H).
+ 	(FIXED_VALUE_H, TREE_CORE_H, CFGLOOP_H): Remove $(MACHMODE_H) and
+ 	double-int.h.
+ 	(CORETYPES_H): Add signop.h, wide-int.h, wide-int-print.h,
+ 	$(MACHMODE_H) and double-int.h.
+ 	(build/min-insn-modes.o): Depend on $(CORETYPES_H) rather than
+ 	$(MACHMODE_H).
+ 	(gengtype-state.o, gengtype.o, build/gengtype.o): Don't depend on
+ 	double-int.h.
+ 
+ 2017-07-07  Andrew Pinski  <apinski@cavium.com>
+ 
+ 	* config/aarch64/aarch64.c (aarch_macro_fusion_pair_p): Check
+ 	prev_set and curr_set for AARCH64_FUSE_ALU_BRANCH.
+ 
+ 2017-07-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_get_function_versions_dispatcher):
+ 	Add warning if GCC was not configured to link against a GLIBC that
+ 	exports the hardware capability bits.
+ 	(make_resolver_func): Make resolver function private and not a
+ 	COMDAT function.  Create the name with clone_function_name instead
+ 	of make_unique_name.
+ 
+ 	PR target/81348
+ 	* config/rs6000/rs6000.md (HI sign_extend splitter): Use the
+ 	correct operand in doing the split.
+ 
+ 2017-07-07 Carl Love  <cel@us.ibm.com>
+ 
+ 	* config/rs6000/rs6000-c: Add support for built-in function
+ 	vector unsigned short vec_pack_to_short_fp32 (vector float,
+ 						      vector float).
+ 	* config/rs6000/rs6000-builtin.def (CONVERT_4F32_8I16): Add
+ 	BU_P9V_AV_2 and BU_P9V_OVERLOAD_2 definitions.
+ 	* config/rs6000/altivec.h (vec_pack_to_short_fp32): Add define.
+ 	* config/rs6000/altivec.md(UNSPEC_CONVERT_4F32_8I16): Add UNSPEC.
+ 	(convert_4f32_8i16): Add define_expand.
+ 	* doc/extend.texi: Update the built-in documentation file for the
+ 	new built-in function.
+ 
+ 2017-07-07  Jose E. Marchesi  <jose.marchesi@oracle.com>
+ 
+ 	* config/sparc/m8.md: New file.
+ 	* config/sparc/sparc.md: Include m8.md.
+ 
+ 2017-07-07  Jose E. Marchesi  <jose.marchesi@oracle.com>
+ 
+ 	* config/sparc/sparc.opt: New option -mvis4b.
+ 	* config/sparc/sparc.c (dump_target_flag_bits): Handle MASK_VIS4B.
+ 	(sparc_option_override): Handle VIS4B.
+ 	(enum sparc_builtins): Define
+ 	SPARC_BUILTIN_DICTUNPACK{8,16,32},
+ 	SPARC_BUILTIN_FPCMP{LE,GT,EQ,NE}{8,16,32}SHL,
+ 	SPARC_BUILTIN_FPCMPU{LE,GT}{8,16,32}SHL,
+ 	SPARC_BUILTIN_FPCMPDE{8,16,32}SHL and
+ 	SPARC_BUILTIN_FPCMPUR{8,16,32}SHL.
+ 	(check_constant_argument): New function.
+ 	(sparc_vis_init_builtins): Define builtins
+ 	__builtin_vis_dictunpack{8,16,32},
+ 	__builtin_vis_fpcmp{le,gt,eq,ne}{8,16,32}shl,
+ 	__builtin_vis_fpcmpu{le,gt}{8,16,32}shl,
+ 	__builtin_vis_fpcmpde{8,16,32}shl and
+ 	__builtin_vis_fpcmpur{8,16,32}shl.
+ 	(sparc_expand_builtin): Check that the constant operands to
+ 	__builtin_vis_fpcmp*shl and _builtin_vis_dictunpack* are indeed
+ 	constant and in range.
+ 	* config/sparc/sparc-c.c (sparc_target_macros): Handle
+ 	TARGET_VIS4B.
+ 	* config/sparc/sparc.h (SPARC_IMM2_P): Define.
+ 	(SPARC_IMM5_P): Likewise.
+ 	* config/sparc/sparc.md (cpu_feature): Add new feagure "vis4b".
+ 	(enabled): Handle vis4b.
+ 	(UNSPEC_DICTUNPACK): New unspec.
+ 	(UNSPEC_FPCMPSHL): Likewise.
+ 	(UNSPEC_FPUCMPSHL): Likewise.
+ 	(UNSPEC_FPCMPDESHL): Likewise.
+ 	(UNSPEC_FPCMPURSHL): Likewise.
+ 	(cpu_feature): New CPU feature `vis4b'.
+ 	(dictunpack{8,16,32}): New insns.
+ 	(FPCSMODE): New mode iterator.
+ 	(fpcscond): New code iterator.
+ 	(fpcsucond): Likewise.
+ 	(fpcmp{le,gt,eq,ne}{8,16,32}{si,di}shl): New insns.
+ 	(fpcmpu{le,gt}{8,16,32}{si,di}shl): Likewise.
+ 	(fpcmpde{8,16,32}{si,di}shl): Likewise.
+ 	(fpcmpur{8,16,32}{si,di}shl): Likewise.
+ 	* config/sparc/constraints.md: Define constraints `q' for unsigned
+ 	2-bit integer constants and `t' for unsigned 5-bit integer
+ 	constants.
+ 	* config/sparc/predicates.md (imm5_operand_dictunpack8): New
+ 	predicate.
+ 	(imm5_operand_dictunpack16): Likewise.
+ 	(imm5_operand_dictunpack32): Likewise.
+ 	(imm2_operand): Likewise.
+ 	* doc/invoke.texi (SPARC Options): Document -mvis4b.
+ 	* doc/extend.texi (SPARC VIS Built-in Functions): Document the
+ 	ditunpack* and fpcmp*shl builtins.
+ 
+ 2017-07-07  Jose E. Marchesi  <jose.marchesi@oracle.com>
+ 
+ 	* config.gcc: Handle m8 in --with-{cpu,tune} options.
+ 	* config.in: Add HAVE_AS_SPARC6 define.
+ 	* config/sparc/driver-sparc.c (cpu_names): Add entry for the SPARC
+ 	M8.
+ 	* config/sparc/sol2.h (CPP_CPU64_DEFAULT_SPEC): Define for
+ 	TARGET_CPU_m8.
+ 	(ASM_CPU32_DEFAUILT_SPEC): Likewise.
+ 	(CPP_CPU_SPEC): Handle m8.
+ 	(ASM_CPU_SPEC): Likewise.
+ 	* config/sparc/sparc-opts.h (enum processor_type): Add
+ 	PROCESSOR_M8.
+ 	* config/sparc/sparc.c (m8_costs): New struct.
+ 	(sparc_option_override): Handle TARGET_CPU_m8.
+ 	(sparc32_initialize_trampoline): Likewise.
+ 	(sparc64_initialize_trampoline): Likewise.
+ 	(sparc_issue_rate): Likewise.
+ 	(sparc_register_move_cost): Likewise.
+ 	* config/sparc/sparc.h (TARGET_CPU_m8): Define.
+ 	(CPP_CPU64_DEFAULT_SPEC): Define for M8.
+ 	(ASM_CPU64_DEFAULT_SPEC): Likewise.
+ 	(CPP_CPU_SPEC): Handle M8.
+ 	(ASM_CPU_SPEC): Likewise.
+ 	(AS_M8_FLAG): Define.
+ 	* config/sparc/sparc.md: Add m8 to the cpu attribute.
+ 	* config/sparc/sparc.opt: New option -mcpu=m8 for sparc targets.
+ 	* configure.ac (HAVE_AS_SPARC6): Check for assembler support for
+ 	M8 instructions.
+ 	* configure: Regenerate.
+ 	* doc/invoke.texi (SPARC Options): Document -mcpu=m8 and
+ 	-mtune=m8.
+ 
+ 2017-07-07  Jose E. Marchesi  <jose.marchesi@oracle.com>
+ 
+ 	* config/sparc/niagara7.md: Rework the DFA scheduler to use insn
+ 	subtypes.
+ 	* config/sparc/sparc.md: Remove the `v3pipe' insn attribute.
+ 	("*movdi_insn_sp32"): Do not set v3pipe.
+ 	("*movsi_insn"): Likewise.
+ 	("*movdi_insn_sp64"): Likewise.
+ 	("*movsf_insn"): Likewise.
+ 	("*movdf_insn_sp32"): Likewise.
+ 	("*movdf_insn_sp64"): Likewise.
+ 	("*zero_extendsidi2_insn_sp64"): Likewise.
+ 	("*sign_extendsidi2_insn"): Likewise.
+ 	("*mov<VM32:mode>_insn"): Likewise.
+ 	("*mov<VM64:mode>_insn_sp64"): Likewise.
+ 	("*mov<VM64:mode>_insn_sp32"): Likewise.
+ 	("<plusminus_insn><VADDSUB:mode>3"): Likewise.
+ 	("<vlop:code><VL:mode>3"): Likewise.
+ 	("*not_<vlop:code><VL:mode>3"): Likewise.
+ 	("*nand<VL:mode>_vis"): Likewise.
+ 	("*<vlnotop:code>_not1<VL:mode>_vis"): Likewise.
+ 	("*<vlnotop:code>_not2<VL:mode>_vis"): Likewise.
+ 	("one_cmpl<VL:mode>2"): Likewise.
+ 	("faligndata<VM64:mode>_vis"): Likewise.
+ 	("alignaddrsi_vis"): Likewise.
+ 	("alignaddrdi_vis"): Likweise.
+ 	("alignaddrlsi_vis"): Likewise.
+ 	("alignaddrldi_vis"): Likewise.
+ 	("fcmp<gcond:code><GCM:gcm_name><P:mode>_vis"): Likewise.
+ 	("bmaskdi_vis"): Likewise.
+ 	("bmasksi_vis"): Likewise.
+ 	("bshuffle<VM64:mode>_vis"): Likewise.
+ 	("cmask8<P:mode>_vis"): Likewise.
+ 	("cmask16<P:mode>_vis"): Likewise.
+ 	("cmask32<P:mode>_vis"): Likewise.
+ 	("pdistn<P:mode>_vis"): Likewise.
+ 	("<vis3_addsub_ss_patname><VASS:mode>3"): Likewise.
+ 
+ 2017-07-07  Jose E. Marchesi  <jose.marchesi@oracle.com>
+ 
+ 	* config/sparc/sparc.md ("subtype"): New insn attribute.
+ 	("*wrgsr_sp64"): Set insn subtype.
+ 	("*rdgsr_sp64"): Likewise.
+ 	("alignaddrsi_vis"): Likewise.
+ 	("alignaddrdi_vis"): Likewise.
+ 	("alignaddrlsi_vis"): Likewise.
+ 	("alignaddrldi_vis"): Likewise.
+ 	("<plusminus_insn><VADDSUB:mode>3"): Likewise.
+ 	("fexpand_vis"): Likewise.
+ 	("fpmerge_vis"): Likewise.
+ 	("faligndata<VM64:mode>_vis"): Likewise.
+ 	("bshuffle<VM64:mode>_vis"): Likewise.
+ 	("cmask8<P:mode>_vis"): Likewise.
+ 	("cmask16<P:mode>_vis"): Likewise.
+ 	("cmask32<P:mode>_vis"): Likewise.
+ 	("fchksm16_vis"): Likewise.
+ 	("v<vis3_shift_patname><GCM:mode>3"): Likewise.
+ 	("fmean16_vis"): Likewise.
+ 	("fp<plusminus_insn>64_vis"): Likewise.
+ 	("<plusminus_insn>v8qi3"): Likewise.
+ 	("<vis3_addsub_ss_patname><VASS:mode>3"): Likewise.
+ 	("<vis4_minmax_patname><VMMAX:mode>3"): Likewise.
+ 	("<vis4_uminmax_patname><VMMAX:mode>3"): Likewise.
+ 	("<vis3_addsub_ss_patname>v8qi3"): Likewise.
+ 	("<vis4_addsub_us_patname><VAUS:mode>3"): Likewise.
+ 	("*movqi_insn"): Likewise.
+ 	("*movhi_insn"): Likewise.
+ 	("*movsi_insn"): Likewise.
+ 	("movsi_pic_gotdata_op"): Likewise.
+ 	("*movdi_insn_sp32"): Likewise.
+ 	("*movdi_insn_sp64"): Likewise.
+ 	("movdi_pic_gotdata_op"): Likewise.
+ 	("*movsf_insn"): Likewise.
+ 	("*movdf_insn_sp32"): Likewise.
+ 	("*movdf_insn_sp64"): Likewise.
+ 	("*zero_extendhisi2_insn"): Likewise.
+ 	("*zero_extendqihi2_insn"): Likewise.
+ 	("*zero_extendqisi2_insn"): Likewise.
+ 	("*zero_extendqidi2_insn"): Likewise.
+ 	("*zero_extendhidi2_insn"): Likewise.
+ 	("*zero_extendsidi2_insn_sp64"): Likewise.
+ 	("ldfsr"): Likewise.
+ 	("prefetch_64"): Likewise.
+ 	("prefetch_32"): Likewise.
+ 	("tie_ld32"): Likewise.
+ 	("tie_ld64"): Likewise.
+ 	("*tldo_ldub_sp32"): Likewise.
+ 	("*tldo_ldub1_sp32"): Likewise.
+ 	("*tldo_ldub2_sp32"): Likewise.
+ 	("*tldo_ldub_sp64"): Likewise.
+ 	("*tldo_ldub1_sp64"): Likewise.
+ 	("*tldo_ldub2_sp64"): Likewise.
+ 	("*tldo_ldub3_sp64"): Likewise.
+ 	("*tldo_lduh_sp32"): Likewise.
+ 	("*tldo_lduh1_sp32"): Likewise.
+ 	("*tldo_lduh_sp64"): Likewise.
+ 	("*tldo_lduh1_sp64"): Likewise.
+ 	("*tldo_lduh2_sp64"): Likewise.
+ 	("*tldo_lduw_sp32"): Likewise.
+ 	("*tldo_lduw_sp64"): Likewise.
+ 	("*tldo_lduw1_sp64"): Likewise.
+ 	("*tldo_ldx_sp64"): Likewise.
+ 	("*mov<VM32:mode>_insn"): Likewise.
+ 	("*mov<VM64:mode>_insn_sp64"): Likewise.
+ 	("*mov<VM64:mode>_insn_sp32"): Likewise.
+ 
+ 2017-07-07  Jose E. Marchesi  <jose.marchesi@oracle.com>
+ 
+ 	* config/sparc/sparc.md ("type"): New insn type viscmp.
+ 	("fcmp<gcond:code><GCM:gcm_name><P:mode>_vis"): Set insn type to
+ 	viscmp.
+ 	("fpcmp<gcond:code>8<P:mode>_vis"): Likewise.
+ 	("fucmp<gcond:code>8<P:mode>_vis"): Likewise.
+ 	("fpcmpu<gcond:code><GCM:gcm_name><P:mode>_vis"): Likewise.
+ 	* config/sparc/niagara7.md ("n7_vis_logical_v3pipe"): Handle
+ 	viscmp.
+ 	("n7_vis_logical_11cycle"): Likewise.
+ 	* config/sparc/niagara4.md ("n4_vis_logical"): Likewise.
+ 	* config/sparc/niagara2.md ("niag3_vis": Likewise.
+ 	* config/sparc/niagara.md ("niag_vis"): Likewise.
+ 	* config/sparc/ultra3.md ("us3_fga"): Likewise.
+ 	* config/sparc/ultra1_2.md ("us1_fga_double"): Likewise.
+ 
+ 2017-07-07  Jose E. Marchesi  <jose.marchesi@oracle.com>
+ 
+ 	* config/sparc/sparc.md: New instruction type `bmask'.
+ 	(bmaskdi_vis): Use the `bmask' type.
+ 	(bmasksi_vis): Likewise.
+ 	* config/sparc/ultra3.md (us3_array): Likewise.
+ 	* config/sparc/niagara7.md (n7_array): Likewise.
+ 	* config/sparc/niagara4.md (n4_array): Likewise.
+ 	* config/sparc/niagara2.md (niag2_vis): Likewise.
+ 	(niag3_vis): Likewise.
+ 	* config/sparc/niagara.md (niag_vis): Likewise.
+ 
+ 2017-07-06  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* ipa-comdats.c: Remove optimize check from gate.
+ 	* ipa-fnsummary.c (ipa_fn_summary_generate): do not generate summary
+ 	for functions not optimized.
+ 	(ipa_fn_summary_read): Skip optimize check.
+ 	(ipa_fn_summary_write): Likewise.
+ 	* ipa-inline-analysis.c (do_estimate_growth_1): Check that caller
+ 	is optimized.
+ 	* ipa-inline.c (can_inline_edge_p): Not optimized functions are
+ 	uninlinable.
+ 	(can_inline_edge_p): Check flag_pcc_struct_return for match.
+ 	(check_callers): Give up on caller which is not optimized.
+ 	(inline_small_functions): Likewise.
+ 	(ipa_inline): Do not give up when not optimizing.
+ 	* ipa-visbility.c (function_and_variable_visibility): Do not optimize
+ 	away unoptimizes cdtors.
+ 	(whole_program_function_and_variable_visibility): Do
+ 	ipa_discover_readonly_nonaddressable_vars in LTO mode.
+ 	* ipa.c (process_references): Do not check optimize.
+ 	(symbol_table::remove_unreachable_nodes): Update optimize check.
+ 	(set_writeonly_bit): Update optimize check.
+ 	(pass_ipa_cdtor_merge::gate): Do not check optimize.
+ 	(pass_ipa_single_use::gate): Remove.
+ 
+ 2017-07-06  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
+ 
+ 	* config/rs6000/rs6000.c (union_defs, union_uses, insn_is_load_p,
+ 	insn_is_store_p, insn_is_swap_p, const_load_sequence_p, v2df_reduction_p,
+ 	rtx_is_swappable_p, insn_is_swappable_p, chain_contains_only_swaps,
+ 	mark_swaps_for_removal, swap_const_vector_halves, adjust_subreg_index,
+ 	permute_load, permute_store, adjust_extract, adjust_splat,
+ 	adjust_xxpermdi, adjust_concat, adjust_vperm, handle_special_swappables,
+ 	replace_swap_with_copy, dump_swap_insn_table,
+ 	alignment_with_canonical_addr, alignment_mask, find_alignment_op,
+ 	recombine_lvx_pattern, recombine_stvx_pattern,
+ 	recombine_lvx_stvx_patterns, rs6000_analyze_swaps,
+ 	make_pass_analyze_swaps): Move all code related to p8 swap optimizations
+ 	to file rs6000-p8swap.c.
+ 	* config/rs6000/rs6000-p8swap.c: New file.
+ 	* config/rs6000/t-rs6000: Add rule to build rs6000-p8swap.o.
+ 	* config.gcc: Add rs6000-p8swap.o to extra_objs for powerpc*-*-*
+ 	and rs6000*-*-* targets.
+ 
+ 2017-07-06  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* Makefile.in (selftest): Remove dependency on s-selftest-c++.
+ 
+ 2017-07-06  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* lto-wrapper.c (merge_and_complain): Do not merge
+ 	fexceptions, fnon_call_exceptions, ftrapv, ffp_contract_, fmath_errno,
+ 	fsigned_zeros, ftrapping_math, fwrapv.
+ 	(append_compiler_options): Do not track these options.
+ 	(append_linker_options): Likewie
+ 
+ 2017-07-06  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* cgraphunit.c (cgraph_node::finalize_function): When
+ 	!flag_toplevel_reorde set no_reorder flag.
+ 	(varpool_node::finalize_decl): Likewise.
+ 	(symbol_table::compile): Drop no toplevel reorder path.
+ 
+ 2017-07-06  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* bb-reorder.c (better_edge_p): Do not build traces across abnormal/eh
+ 	edges; zero probability is not better than uninitialized.
+ 
+ 2017-07-06  Maxim Ostapenko  <m.ostapenko@samsung.com>
+ 
+ 	* asan.h (asan_sanitize_allocas_p): Declare.
+ 	* asan.c (asan_sanitize_allocas_p): New function.
+ 	(handle_builtin_stack_restore): Bail out if !asan_sanitize_allocas_p.
+ 	(handle_builtin_alloca): Likewise.
+ 	* cfgexpand.c (expand_used_vars): Do not add allocas unpoisoning stuff
+ 	if !asan_sanitize_allocas_p.
+ 	* params.def (asan-instrument-allocas): Add new option.
+ 	* params.h (ASAN_PROTECT_ALLOCAS): Define.
+ 	* opts.c (common_handle_option): Disable allocas sanitization for
+ 	KASan by default.
+ 
+ 2017-07-06  Maxim Ostapenko  <m.ostapenko@samsung.com>
+ 
+ 	* asan.c: Include gimple-fold.h.
+ 	(get_last_alloca_addr): New function.
+ 	(handle_builtin_stackrestore): Likewise.
+ 	(handle_builtin_alloca): Likewise.
+ 	(asan_emit_allocas_unpoison): Likewise.
+ 	(get_mem_refs_of_builtin_call): Add new parameter, remove const
+ 	quallifier from first paramerer. Handle BUILT_IN_ALLOCA,
+ 	BUILT_IN_ALLOCA_WITH_ALIGN and BUILT_IN_STACK_RESTORE builtins.
+ 	(instrument_builtin_call): Pass gimple iterator to
+ 	get_mem_refs_of_builtin_call.
+ 	(last_alloca_addr): New global.
+ 	* asan.h (asan_emit_allocas_unpoison): Declare.
+ 	* builtins.c (expand_asan_emit_allocas_unpoison): New function.
+ 	(expand_builtin): Handle BUILT_IN_ASAN_ALLOCAS_UNPOISON.
+ 	* cfgexpand.c (expand_used_vars): Call asan_emit_allocas_unpoison
+ 	if function calls alloca.
+ 	* gimple-fold.c (replace_call_with_value): Remove static keyword.
+ 	* gimple-fold.h (replace_call_with_value): Declare.
+ 	* internal-fn.c: Include asan.h.
+ 	* sanitizer.def (BUILT_IN_ASAN_ALLOCA_POISON,
+ 	BUILT_IN_ASAN_ALLOCAS_UNPOISON): New builtins.
+ 
+ 2017-07-06  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* Makefile.in (SELFTEST_FLAGS): Drop "-x c", moving it to...
+ 	(C_SELFTEST_FLAGS): New.
+ 	(CPP_SELFTEST_FLAGS): New.
+ 	(SELFTEST_DEPS): New, from deps of s-selftest.
+ 	(C_SELFTEST_DEPS): New, from deps of s-selftest.
+ 	(CPP_SELFTEST_DEPS): New.
+ 	(selftest): Add dependency on s-selftest-c++.
+ 	(s-selftest): Rename to...
+ 	(s-selftest-c): ...this, moving deps to SELFTEST_DEPS
+ 	and C_SELFTEST_DEPS, and using C_SELFTEST_FLAGS rather
+ 	than SELFTEST_FLAGS.
+ 	(selftest-gdb): Rename to...
+ 	(selftest-c-gdb): ...this, using C_SELFTEST_DEPS and
+ 	C_SELFTEST_FLAGS.
+ 	(selftest-gdb): Reintroduce as an alias for selftest-c-gdb.
+ 	(selftest-valgrind): Rename to...
+ 	(selftest-c-valgrind): ...this, using C_SELFTEST_DEPS and
+ 	C_SELFTEST_FLAGS.
+ 	(selftest-valgrind): Reintroduce as an alias for
+ 	selftest-c-valgrind.
+ 	(s-selftest-c++): New.
+ 	(selftest-c++-gdb): New.
+ 	(selftest-c++-valgrind): New.
+ 
+ 2017-07-06  Olivier Hainque  <hainque@adacore.com>
+ 
+ 	* gcc.c (process_command): When deciding if undefined variables
+ 	should be ignored when processing specs, accept "gcc -v" as well.
+ 
+ 2017-07-06  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* auto-profile.c (afdo_set_bb_count, afdo_propagate_edge,
+ 	afdo_annotate_cfg): Set counts/probabilities as determined by afdo.
+ 
+ 2017-07-06  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	* config/arm/arm-cpus.in (armv8-r): Add new entry.
+ 	* config/arm/arm-isa.h (ISA_ARMv8r): Define macro.
+ 	* config/arm/arm-tables.opt: Regenerate.
+ 	* config/arm/arm.h (enum base_architecture): Add BASE_ARCH_8R
+ 	enumerator.
+ 	* doc/invoke.texi: Mention -march=armv8-r and its extensions.
+ 
+ 2017-07-06  Carl Love  <cel@us.ibm.com>
+ 
+ 	* ChangeLog: Clean up from mid air collision
+ 
+ 2017-07-06  Carl Love  <cel@us.ibm.com>
+ 
+ 	* config/rs6000/rs6000-c.c: Add support for built-in functions
+ 	vector signed int vec_subc (vector signed int, vector signed int);
+ 	vector signed __int128 vec_subc (vector signed __int128,
+ 					 vector signed __int128);
+ 	vector unsigned __int128 vec_subc (vector unsigned __int128,
+ 					   vector unsigned __int128);
+ 	vector signed int vec_sube (vector signed int, vector signed int,
+ 				    vector signed int);
+ 	vector unsigned int vec_sube (vector unsigned int,
+ 				      vector unsigned int,
+ 				      vector unsigned int);
+ 	vector signed __int128 vec_sube (vector signed __int128,
+ 					 vector signed __int128,
+ 					 vector signed__int128);
+ 	vector unsigned __int128 vec_sube (vector unsigned __int128,
+ 					   vector unsigned __int128,
+ 					   vector unsigned __int128);
+ 	vector signed int vec_subec (vector signed int, vector signed int,
+ 				     vector signed int);
+ 	vector unsigned int vec_subec (vector unsigned int,
+ 				       vector unsigned int,
+ 				       vector unsigned int);
+ 	vector signed __int128 vec_subec (vector signed __int128,
+ 					  vector signed __int128,
+ 					  vector signed__int128);
+ 	vector unsigned __int128 vec_subec (vector unsigned __int128,
+ 					    vector unsigned __int128,
+ 					    vector unsigned __int128);
+ 	* config/rs6000/rs6000.c (ALTIVEC_BUILTIN_VEC_SUBE,
+ 	ALTIVEC_BUILTIN_VEC_SUBEC): Add ef_builtins.
+ 	* config/rs6000/rs6000-builtin.def (SUBE, SUBEC): Add
+ 	BU_ALTIVEC_OVERLOAD_X definitions.
+ 	* config/rs6000/altivec.h (vec_sube, vec_subec): Add builtin defines.
+ 	* doc/extend.texi: Update the built-in documentation file for the new
+ 	built-in functions.
+ 
+ 2017-07-06  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR c++/79300
+ 	* diagnostic-show-locus.c (layout::layout): Use start and finish
+ 	spelling location for the start and finish of each range.
+ 	* genmatch.c (linemap_client_expand_location_to_spelling_point):
+ 	Add unused aspect param.
+ 	* input.c (expand_location_1): Add "aspect" param, and use it
+ 	to access the correct part of the location.
+ 	(expand_location): Pass LOCATION_ASPECT_CARET to new param of
+ 	expand_location_1.
+ 	(expand_location_to_spelling_point): Likewise.
+ 	(linemap_client_expand_location_to_spelling_point): Add "aspect"
+ 	param, and pass it to expand_location_1.
+ 
+ 2017-07-06  Sebastian Peryt  <sebastian.peryt@intel.com>
+ 
+ 	* config/i386/avx512fintrin.h (_mm_mask_getexp_round_ss,
+ 	_mm_maskz_getexp_round_ss, _mm_mask_getexp_round_sd,
+ 	_mm_maskz_getexp_round_sd, _mm_mask_getmant_round_sd,
+ 	_mm_maskz_getmant_round_sd, _mm_mask_getmant_round_ss,
+ 	_mm_maskz_getmant_round_ss, _mm_mask_getexp_ss, _mm_maskz_getexp_ss,
+ 	_mm_mask_getexp_sd, _mm_maskz_getexp_sd, _mm_mask_getmant_sd,
+ 	_mm_maskz_getmant_sd, _mm_mask_getmant_ss,
+ 	_mm_maskz_getmant_ss): New intrinsics.
+ 	(__builtin_ia32_getexpss128_mask): Changed to ...
+ 	__builtin_ia32_getexpss128_round ... this.
+ 	(__builtin_ia32_getexpsd128_mask): Changed to ...
+ 	__builtin_ia32_getexpsd128_round ... this.
+ 	* config/i386/i386-builtin-types.def
+ 	((V2DF, V2DF, V2DF, INT, V2DF, UQI, INT),
+ 	(V4SF, V4SF, V4SF, INT, V4SF, UQI, INT)): New function type aliases.
+ 	* config/i386/i386-builtin.def (__builtin_ia32_getexpsd_mask_round,
+ 	__builtin_ia32_getexpss_mask_round,	__builtin_ia32_getmantsd_mask_round,
+ 	__builtin_ia32_getmantss_mask_round): New builtins.
+ 	* config/i386/i386.c (V2DF_FTYPE_V2DF_V2DF_INT_V2DF_UQI_INT,
+ 	V4SF_FTYPE_V4SF_V4SF_INT_V4SF_UQI_INT): Handle new types.
+ 	(CODE_FOR_avx512f_vgetmantv2df_mask_round,
+ 	CODE_FOR_avx512f_vgetmantv4sf_mask_round): New cases.
+ 	* config/i386/sse.md
+ 	(avx512f_sgetexp<mode><round_saeonly_name>): Changed to ...
+ 	avx512f_sgetexp<mode><mask_scalar_name>
+ 	<round_saeonly_scalar_name> ... this.
+ 	(vgetexp<ssescalarmodesuffix>\t{<round_saeonly_op3>%2, %1, %0|
+ 	%0, %1, %2<round_saeonly_op3>}): Changed to ...
+ 	vgetexp<ssescalarmodesuffix>
+ 	\t{<round_saeonly_scalar_mask_op3>%2, %1, %0<mask_scalar_operand3>|
+ 	%0<mask_scalar_operand3>, %1, %2<round_saeonly_scalar_mask_op3>} ... this.
+ 	(avx512f_vgetmant<mode><round_saeonly_name>): Changed to ...
+ 	avx512f_vgetmant<mode><mask_scalar_name>
+ 	<round_saeonly_scalar_name> ... this.
+ 	(vgetmant<ssescalarmodesuffix>\t{%3, <round_saeonly_op4>%2, %1, %0|
+ 	%0, %1, %2<round_saeonly_op4>, %3}): Changed to ...
+ 	vgetmant<ssescalarmodesuffix>
+ 	\t{%3, <round_saeonly_scalar_mask_op4>%2, %1, %0<mask_scalar_operand4>|
+ 	%0<mask_scalar_operand4>, %1, %2
+ 	<round_saeonly_scalar_mask_op4>, %3} ... this.
+ 	* config/i386/subst.md (mask_scalar_operand4,
+ 	round_saeonly_scalar_mask_operand4,	round_saeonly_scalar_mask_op4,
+ 	round_saeonly_scalar_nimm_predicate): New subst attributes.
+ 
+ 2017-07-06  Julia Koval  <julia.koval@intel.com>
+ 
+ 	* config/i386/i386.c (ix86_erase_embedded_rounding):
+ 	Remove code for old rounding pattern.
+ 
+ 2017-07-06  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config/arm/t-arm (GTM_H): Add arm-cpu.h.
+ 
+ 2017-07-06  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	* doc/sourcebuild.texi (Test Directives, Variants of
+ 	dg-require-support): Add documentation for dg-require-stack-check.
+ 
+ 2017-07-05  Sebastian Peryt  <sebastian.peryt@intel.com>
+ 
+ 	* config/i386/subst.md (mask_scalar, round_scalar,
+ 	round_saeonly_scalar): New meta-templates.
+ 	(mask_scalar_name, mask_scalar_operand3, round_scalar_name,
+ 	round_scalar_mask_operand3, round_scalar_mask_op3,
+ 	round_scalar_constraint, round_scalar_prefix, round_saeonly_scalar_name,
+ 	round_saeonly_scalar_mask_operand3, round_saeonly_scalar_mask_op3,
+ 	round_saeonly_scalar_constraint,
+ 	round_saeonly_scalar_prefix): New subst attribute.
+ 	* config/i386/sse.md
+ 	(<sse>_vm<plusminus_insn><mode>3<mask_name><round_name>): Renamed to ...
+ 	<sse>_vm<plusminus_insn><mode>3<mask_scalar_name>
+ 	<round_scalar_name> ... this.
+ 	(<sse>_vm<multdiv_mnemonic><mode>3<mask_name><round_name>): Renamed to ...
+ 	<sse>_vm<multdiv_mnemonic><mode>3<mask_scalar_name>
+ 	<round_scalar_name> ... this.
+ 	(<sse>_vm<code><mode>3<mask_name><round_saeonly_name>): Renamed to ...
+ 	<sse>_vm<code><mode>3<mask_scalar_name>
+ 	<round_saeonly_scalar_name> ... this.
+ 	(v<plusminus_mnemonic><ssescalarmodesuffix>
+ 	\t{<round_mask_op3>%2, %1, %0<mask_operand3>|
+ 	%0<mask_operand3>, %1, %<iptr>2<round_mask_op3>}): Changed to ...
+ 	v<plusminus_mnemonic><ssescalarmodesuffix>
+ 	\t{<round_scalar_mask_op3>%2, %1, %0<mask_scalar_operand3>|
+ 	%0<mask_scalar_operand3>, %1, %<iptr>2<round_scalar_mask_op3>} ... this.
+ 	(v<multdiv_mnemonic><ssescalarmodesuffix>
+ 	\t{<round_mask_op3>%2, %1, %0<mask_operand3>|
+ 	%0<mask_operand3>, %1, %<iptr>2<round_mask_op3>}): Changed to ...
+ 	v<multdiv_mnemonic><ssescalarmodesuffix>
+ 	\t{<round_scalar_mask_op3>%2, %1, %0<mask_scalar_operand3>|
+ 	%0<mask_scalar_operand3>, %1, %<iptr>2<round_scalar_mask_op3>} ... this.
+ 	(v<maxmin_float><ssescalarmodesuffix>
+ 	\t{<round_saeonly_mask_op3>%2, %1, %0<mask_operand3>|
+ 	%0<mask_operand3>, %1, %<iptr>2<round_saeonly_mask_op3>}): Changed to ...
+ 	v<maxmin_float><ssescalarmodesuffix>
+ 	\t{<round_saeonly_scalar_mask_op3>%2, %1, %0<mask_scalar_operand3>|
+ 	%0<mask_scalar_operand3>, %1, %<iptr>2
+ 	<round_saeonly_scalar_mask_op3>} ... this.
+ 
+ 2017-07-05  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config/arm/arm.c (arm_fixed_condition_code_regs): New function.
+ 	(TARGET_FIXED_CONDITION_CODE_REGS): Redefine.
+ 
+ 2017-07-05  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* combine.c (simplify_if_then_else): Remove "enum" before
+ 	"machine_mode".
+ 	* compare-elim.c (can_eliminate_compare): Likewise.
+ 	* config/aarch64/aarch64-builtins.c (aarch64_simd_builtin_std_type):
+ 	Likewise.
+ 	(aarch64_lookup_simd_builtin_type): Likewise.
+ 	(aarch64_simd_builtin_type): Likewise.
+ 	(aarch64_init_simd_builtin_types): Likewise.
+ 	(aarch64_simd_expand_args): Likewise.
+ 	* config/aarch64/aarch64-protos.h (aarch64_simd_attr_length_rglist):
+ 	Likewise.
+ 	(aarch64_reverse_mask): Likewise.
+ 	(aarch64_simd_emit_reg_reg_move): Likewise.
+ 	(aarch64_gen_adjusted_ldpstp): Likewise.
+ 	(aarch64_ccmp_mode_to_code): Likewise.
+ 	(aarch64_operands_ok_for_ldpstp): Likewise.
+ 	(aarch64_operands_adjust_ok_for_ldpstp): Likewise.
+ 	* config/aarch64/aarch64.c (aarch64_ira_change_pseudo_allocno_class):
+ 	Likewise.
+ 	(aarch64_min_divisions_for_recip_mul): Likewise.
+ 	(aarch64_reassociation_width): Likewise.
+ 	(aarch64_get_condition_code_1): Likewise.
+ 	(aarch64_simd_emit_reg_reg_move): Likewise.
+ 	(aarch64_simd_attr_length_rglist): Likewise.
+ 	(aarch64_reverse_mask): Likewise.
+ 	(aarch64_operands_ok_for_ldpstp): Likewise.
+ 	(aarch64_operands_adjust_ok_for_ldpstp): Likewise.
+ 	(aarch64_gen_adjusted_ldpstp): Likewise.
+ 	* config/aarch64/cortex-a57-fma-steering.c (fma_node::rename):
+ 	Likewise.
+ 	* config/arc/arc.c (legitimate_offset_address_p): Likewise.
+ 	* config/arm/arm-builtins.c (arm_simd_builtin_std_type): Likewise.
+ 	(arm_lookup_simd_builtin_type): Likewise.
+ 	(arm_simd_builtin_type): Likewise.
+ 	(arm_init_simd_builtin_types): Likewise.
+ 	(arm_expand_builtin_args): Likewise.
+ 	* config/arm/arm-protos.h (arm_expand_builtin): Likewise.
+ 	* config/ft32/ft32.c (ft32_libcall_value): Likewise.
+ 	(ft32_setup_incoming_varargs): Likewise.
+ 	(ft32_function_arg): Likewise.
+ 	(ft32_function_arg_advance): Likewise.
+ 	(ft32_pass_by_reference): Likewise.
+ 	(ft32_arg_partial_bytes): Likewise.
+ 	(ft32_valid_pointer_mode): Likewise.
+ 	(ft32_addr_space_pointer_mode): Likewise.
+ 	(ft32_addr_space_legitimate_address_p): Likewise.
+ 	* config/i386/i386-protos.h (ix86_operands_ok_for_move_multiple):
+ 	Likewise.
+ 	* config/i386/i386.c (ix86_setup_incoming_vararg_bounds): Likewise.
+ 	(ix86_emit_outlined_ms2sysv_restore): Likewise.
+ 	(iamcu_alignment): Likewise.
+ 	(canonicalize_vector_int_perm): Likewise.
+ 	(ix86_noce_conversion_profitable_p): Likewise.
+ 	(ix86_mpx_bound_mode): Likewise.
+ 	(ix86_operands_ok_for_move_multiple): Likewise.
+ 	* config/microblaze/microblaze-protos.h
+ 	(microblaze_expand_conditional_branch_reg): Likewise.
+ 	* config/microblaze/microblaze.c
+ 	(microblaze_expand_conditional_branch_reg): Likewise.
+ 	* config/powerpcspe/powerpcspe.c (rs6000_init_hard_regno_mode_ok):
+ 	Likewise.
+ 	(rs6000_reassociation_width): Likewise.
+ 	(rs6000_invalid_binary_op): Likewise.
+ 	(fusion_p9_p): Likewise.
+ 	(emit_fusion_p9_load): Likewise.
+ 	(emit_fusion_p9_store): Likewise.
+ 	* config/riscv/riscv-protos.h (riscv_regno_mode_ok_for_base_p):
+ 	Likewise.
+ 	(riscv_hard_regno_mode_ok_p): Likewise.
+ 	(riscv_address_insns): Likewise.
+ 	(riscv_split_symbol): Likewise.
+ 	(riscv_legitimize_move): Likewise.
+ 	(riscv_function_value): Likewise.
+ 	(riscv_hard_regno_nregs): Likewise.
+ 	(riscv_expand_builtin): Likewise.
+ 	* config/riscv/riscv.c (riscv_build_integer_1): Likewise.
+ 	(riscv_build_integer): Likewise.
+ 	(riscv_split_integer): Likewise.
+ 	(riscv_legitimate_constant_p): Likewise.
+ 	(riscv_cannot_force_const_mem): Likewise.
+ 	(riscv_regno_mode_ok_for_base_p): Likewise.
+ 	(riscv_valid_base_register_p): Likewise.
+ 	(riscv_valid_offset_p): Likewise.
+ 	(riscv_valid_lo_sum_p): Likewise.
+ 	(riscv_classify_address): Likewise.
+ 	(riscv_legitimate_address_p): Likewise.
+ 	(riscv_address_insns): Likewise.
+ 	(riscv_load_store_insns): Likewise.
+ 	(riscv_force_binary): Likewise.
+ 	(riscv_split_symbol): Likewise.
+ 	(riscv_force_address): Likewise.
+ 	(riscv_legitimize_address): Likewise.
+ 	(riscv_move_integer): Likewise.
+ 	(riscv_legitimize_const_move): Likewise.
+ 	(riscv_legitimize_move): Likewise.
+ 	(riscv_address_cost): Likewise.
+ 	(riscv_subword): Likewise.
+ 	(riscv_output_move): Likewise.
+ 	(riscv_canonicalize_int_order_test): Likewise.
+ 	(riscv_emit_int_order_test): Likewise.
+ 	(riscv_function_arg_boundary): Likewise.
+ 	(riscv_pass_mode_in_fpr_p): Likewise.
+ 	(riscv_pass_fpr_single): Likewise.
+ 	(riscv_pass_fpr_pair): Likewise.
+ 	(riscv_get_arg_info): Likewise.
+ 	(riscv_function_arg): Likewise.
+ 	(riscv_function_arg_advance): Likewise.
+ 	(riscv_arg_partial_bytes): Likewise.
+ 	(riscv_function_value): Likewise.
+ 	(riscv_pass_by_reference): Likewise.
+ 	(riscv_setup_incoming_varargs): Likewise.
+ 	(riscv_print_operand): Likewise.
+ 	(riscv_elf_select_rtx_section): Likewise.
+ 	(riscv_save_restore_reg): Likewise.
+ 	(riscv_for_each_saved_reg): Likewise.
+ 	(riscv_register_move_cost): Likewise.
+ 	(riscv_hard_regno_mode_ok_p): Likewise.
+ 	(riscv_hard_regno_nregs): Likewise.
+ 	(riscv_class_max_nregs): Likewise.
+ 	(riscv_memory_move_cost): Likewise.
+ 	* config/rl78/rl78-protos.h (rl78_split_movsi): Likewise.
+ 	* config/rl78/rl78.c (rl78_split_movsi): Likewise.
+ 	(rl78_addr_space_address_mode): Likewise.
+ 	* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
+ 	Likewise.
+ 	* config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Likewise.
+ 	(rs6000_reassociation_width): Likewise.
+ 	(rs6000_invalid_binary_op): Likewise.
+ 	(fusion_p9_p): Likewise.
+ 	(emit_fusion_p9_load): Likewise.
+ 	(emit_fusion_p9_store): Likewise.
+ 	* config/visium/visium-protos.h (prepare_move_operands): Likewise.
+ 	(ok_for_simple_move_operands): Likewise.
+ 	(ok_for_simple_move_strict_operands): Likewise.
+ 	(ok_for_simple_arith_logic_operands): Likewise.
+ 	(visium_legitimize_reload_address): Likewise.
+ 	(visium_select_cc_mode): Likewise.
+ 	(output_cbranch): Likewise.
+ 	(visium_split_double_move): Likewise.
+ 	(visium_expand_copysign): Likewise.
+ 	(visium_expand_int_cstore): Likewise.
+ 	(visium_expand_fp_cstore): Likewise.
+ 	* config/visium/visium.c (visium_pass_by_reference): Likewise.
+ 	(visium_function_arg): Likewise.
+ 	(visium_function_arg_advance): Likewise.
+ 	(visium_libcall_value): Likewise.
+ 	(visium_setup_incoming_varargs): Likewise.
+ 	(visium_legitimate_constant_p): Likewise.
+ 	(visium_legitimate_address_p): Likewise.
+ 	(visium_legitimize_address): Likewise.
+ 	(visium_secondary_reload): Likewise.
+ 	(visium_register_move_cost): Likewise.
+ 	(visium_memory_move_cost): Likewise.
+ 	(prepare_move_operands): Likewise.
+ 	(ok_for_simple_move_operands): Likewise.
+ 	(ok_for_simple_move_strict_operands): Likewise.
+ 	(ok_for_simple_arith_logic_operands): Likewise.
+ 	(visium_function_value_1): Likewise.
+ 	(rtx_ok_for_offset_p): Likewise.
+ 	(visium_legitimize_reload_address): Likewise.
+ 	(visium_split_double_move): Likewise.
+ 	(visium_expand_copysign): Likewise.
+ 	(visium_expand_int_cstore): Likewise.
+ 	(visium_expand_fp_cstore): Likewise.
+ 	(visium_split_cstore): Likewise.
+ 	(visium_select_cc_mode): Likewise.
+ 	(visium_split_cbranch): Likewise.
+ 	(output_cbranch): Likewise.
+ 	(visium_print_operand_address): Likewise.
+ 	* expmed.c (flip_storage_order): Likewise.
+ 	* expmed.h (emit_cstore): Likewise.
+ 	(flip_storage_order): Likewise.
+ 	* genrecog.c (validate_pattern): Likewise.
+ 	* hsa-gen.c (gen_hsa_addr): Likewise.
+ 	* internal-fn.c (expand_arith_overflow): Likewise.
+ 	* ira-color.c (allocno_copy_cost_saving): Likewise.
+ 	* lra-assigns.c (find_hard_regno_for_1): Likewise.
+ 	* lra-constraints.c (prohibited_class_reg_set_mode_p): Likewise.
+ 	(process_invariant_for_inheritance): Likewise.
+ 	* lra-eliminations.c (move_plus_up): Likewise.
+ 	* omp-low.c (lower_oacc_reductions): Likewise.
+ 	* simplify-rtx.c (simplify_subreg): Likewise.
+ 	* target.def (TARGET_SETUP_INCOMING_VARARG_BOUNDS): Likewise.
+ 	(TARGET_CHKP_BOUND_MODE): Likewise..
+ 	* targhooks.c (default_chkp_bound_mode): Likewise.
+ 	(default_setup_incoming_vararg_bounds): Likewise.
+ 	* targhooks.h (default_chkp_bound_mode): Likewise.
+ 	(default_setup_incoming_vararg_bounds): Likewise.
+ 	* tree-ssa-math-opts.c (divmod_candidate_p): Likewise.
+ 	* tree-vect-loop.c (calc_vec_perm_mask_for_shift): Likewise.
+ 	(have_whole_vector_shift): Likewise.
+ 	* tree-vect-stmts.c (vectorizable_load): Likewise.
+ 	* doc/tm.texi: Regenerate.
+ 
+ 2017-07-05  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Graceful degrade if Binutils PR21472 is not available.
+ 
+ 	PR target/81072
+ 	* configure.ac [target=avr]: WARN instead of ERROR if avrxmega3
+ 	.rodata in flash test fails.
+ 	(HAVE_LD_AVR_AVRXMEGA3_RODATA_IN_FLASH): Define it if test passes.
+ 	* confgure: Regenerate.
+ 	* config.in: Regenerate.
+ 	* config/avr/avr.c (avr_asm_named_section)
+ 	[HAVE_LD_AVR_AVRXMEGA3_RODATA_IN_FLASH]: Only trigger
+ 	__do_copy_data for stuff in .rodata if flash_pm_offset = 0.
+ 	(avr_asm_init_sections): Same.
+ 
+ 2017-07-05  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
+ 
+ 	* config/arm/neon.md (fma<VCVTF:mode>4): Remove %?.
+ 	(fma<VH:mode>4_intrinsic): Likewise.
+ 	(*fmsub<VCVTF:mode>4): Likewise.
+ 	(*fmsub<VH:mode>4_intrinsic): Likewise.
+ 
+ 2017-07-05  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR target/81305
+ 	* config/avr/avr.c (avr_out_movhi_mr_r_xmega) [CONSTANT_ADDRESS_P]:
+ 	Don't depend on "optimize > 0".
+ 	(out_movhi_r_mr, out_movqi_mr_r): Same.
+ 	(out_movhi_mr_r, out_movqi_r_mr): Same.
+ 	(avr_address_cost) [CONSTANT_ADDRESS_P]: Don't depend cost for
+ 	io_address_operand on "optimize > 0".
+ 
+ 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-loop-distribution.c: Add general explanantion on the pass.
+ 	(generate_loops_for_partition): Mark distributed loop.
+ 	(pg_add_dependence_edges): New parameter.  Handle alias data
+ 	dependence specially and record it in the parameter if asked.
+ 	(struct pg_vdata, pg_edata, pg_edge_callback_data): New structs.
+ 	(init_partition_graph_vertices, add_partition_graph_edge): New.
+ 	(pg_skip_alias_edge, free_partition_graph_edata_cb): New.
+ 	(free_partition_graph_vdata, build_partition_graph): New.
+ 	(sort_partitions_by_post_order, merge_dep_scc_partitions): New.
+ 	(pg_collect_alias_ddrs, break_alias_scc_partitions): New.
+ 	(data_ref_segment_size, latch_dominated_by_data_ref): New.
+ 	(compute_alias_check_pairs, version_loop_by_alias_check): New.
+ 	(version_for_distribution_p, finalize_partitions): New.
+ 	(distribute_loop): Handle alias data dependence specially.  Factor
+ 	out loop fusion code as functions and call these functions.
+ 
+ 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-loop-distribution.c (classify_partition): New parameter and
+ 	better handle reduction statement.
+ 	(rdg_build_partitions): Revise comment.
+ 	(distribute_loop): Compute statements in all partitions and pass it
+ 	to classify_partition.
+ 
+ 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-loop-distribution.c (enum partition_type): New.
+ 	(struct partition): New field type.
+ 	(partition_merge_into): Add parameter.  Update partition type.
+ 	(data_dep_in_cycle_p, update_type_for_merge): New functions.
+ 	(build_rdg_partition_for_vertex): Compute partition type.
+ 	(rdg_build_partitions): Dump partition type.
+ 	(distribute_loop): Update calls to partition_merge_into.
+ 
+ 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-loop-distribution.c (struct ddr_hasher): New.
+ 	(ddr_hasher::hash, ::equal, get_data_dependence): New function.
+ 	(ddrs_table): New.
+ 	(classify_partition): Call get_data_dependence.
+ 	(pg_add_dependence_edges): Ditto.
+ 	(distribute_loop): Release data dependence hash table.
+ 
+ 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-loop-distribution.c (ref_base_address): Delete.
+ 	(similar_memory_accesses): Rename ...
+ 	(share_memory_accesses): ... to this.  Check if partitions access
+ 	the same memory reference.
+ 	(distribute_loop): Call share_memory_accesses.
+ 
+ 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-loop-distribution.c (struct partition): New field recording
+ 	its data reference.
+ 	(partition_alloc, partition_free): Init and release data refs.
+ 	(partition_merge_into): Merge data refs.
+ 	(build_rdg_partition_for_vertex): Collect data refs for partition.
+ 	(pg_add_dependence_edges): Change parameters from vector to bitmap.
+ 	Update uses.
+ 	(distribute_loop): Remve data refs from vertice data of partition
+ 	graph.
+ 
+ 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-loop-distribution.c (params.h): Include header file.
+ 	(MAX_DATAREFS_NUM, DR_INDEX): New macro.
+ 	(datarefs_vec): New global var.
+ 	(create_rdg_vertices): Use datarefs_vec directly.
+ 	(free_rdg): Don't free data references.
+ 	(build_rdg): Update use.  Don't free data references.
+ 	(distribute_loop): Compute global variable for data references.
+ 	Bail out if there are too many data references.
+ 
+ 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-loop-distribution.c (loop_nest): New global var.
+ 	(build_rdg): Use loop directly, rather than loop nest.
+ 	(pg_add_dependence_edges): Remove loop nest parameter.  Use global
+ 	variable directly.
+ 	(distribute_loop): Compute global variable loop nest.  Update use.
+ 
+ 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-loop-distribution.c (enum fuse_type, fuse_message): New.
+ 	(partition_merge_into): New parameter.  Dump reason for fusion.
+ 	(distribute_loop): Update use of partition_merge_into.
+ 
+ 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-loop-distribution.c (bb_top_order_index): New.
+ 	(bb_top_order_index_size, bb_top_order_cmp): New.
+ 	(stmts_from_loop): Use topological order.
+ 	(pass_loop_distribution::execute): Compute and release topological
+ 	order for basic blocks.
+ 
+ 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-loop-distribution.c (pass_loop_distribution::execute): Skip
+ 	if no loops.
+ 
+ 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* cfgloop.h (struct loop): Add comment.  New field orig_loop_num.
+ 	* cfgloopmanip.c (lv_adjust_loop_entry_edge): Comment change.
+ 	* internal-fn.c (expand_LOOP_DIST_ALIAS): New function.
+ 	* internal-fn.def (LOOP_DIST_ALIAS): New.
+ 	* tree-vectorizer.c (fold_loop_vectorized_call): Rename to ...
+ 	(fold_loop_internal_call): ... this.
+ 	(vect_loop_dist_alias_call): New function.
+ 	(set_uid_loop_bbs): Call fold_loop_internal_call.
+ 	(vectorize_loops): Fold IFN_LOOP_VECTORIZED and IFN_LOOP_DIST_ALIAS
+ 	internal calls.
+ 
+ 2017-07-04  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/81300
+ 	* config/i386/i386.md (setcc + movzbl/and to xor + setcc peepholes):
+ 	Require dead FLAGS_REG at the beginning of a peephole.
+ 
+ 2017-07-04  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/81294
+ 	* config/i386/adxintrin.h (_subborrow_u32): Swap _X and _Y
+ 	arguments in the call to __builtin_ia32_sbb_u32.
+ 	(_subborrow_u64): Swap _X and _Y arguments in the call to
+ 	__builtin_ia32_sbb_u64.
+ 
+ 2017-07-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/81278
+ 	* tree-vrp.c (compare_assert_loc): Turn into a function template
+ 	with stable template parameter.  Only test if a->e is NULL,
+ 	!a->e == !b->e has been verified already.  Use e == NULL or
+ 	e != NULL instead of e or ! e tests.  If stable is true, don't use
+ 	iterative_hash_expr, on the other side allow a or b or both NULL
+ 	and sort the NULLs last.
+ 	(process_assert_insertions): Sort using compare_assert_loc<false>
+ 	instead of compare_assert_loc, later sort using
+ 	compare_assert_loc<true> before calling process_assert_insertions_for
+ 	in a loop.  Use break instead of continue once seen NULL pointer.
+ 
+ 2017-07-04  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	* config/arm/driver-arm.c (arm_cpu_table): Add entry for ARM
+ 	Cortex-R7 and Cortex-R8 processors.
+ 
+ 2017-07-04  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* ipa-utils.c (ipa_merge_profiles): Fix merging when dst is
+ 	uninitialized while src is not.
+ 
+ 2017-07-04  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* common/config/arm/arm-common.c: Adjust include path for
+ 	arm-cpu-cdata.h
+ 	* config/arm/t-arm (TM_H): Adjust path for arm-cpu.h.
+ 	(arm-cpu.h): Create in build directory.  Adjust dependency rules.
+ 	(arm-cpu-data.h): Likewise.
+ 	(arm-cpu-cdata.h): Likewise.
+ 	* config/arm/arm-cpu.h: Delete.
+ 	* config/arm/arm-cpu-cdata.h: Delete.
+ 	* config/arm/arm-cpu-data.h: Delete.
+ 
+ 2017-07-04  James Greenhalgh  <james.greenhalgh@arm.com>
+ 
+ 	* config/arm/arm-cpus.in (cortex-a55): New.
+ 	(cortex-a75): Likewise.
+ 	(cortex-a75.cortex-a55): Likewise.
+ 	* config/arm/driver-arm.c (arm_cpu_table): Add cortex-a55 and
+ 	cortex-a75.
+ 	* doc/invoke.texi (-mcpu): Document cortex-a55 and cortex-a75.
+ 	* config/arm/arm-cpu-cdata.h: Regenerate.
+ 	* config/arm/arm-cpu-data.h: Regenerate.
+ 	* config/arm/arm-cpu.h: Regenerate.
+ 	* config/arm/arm-tables.opt: Regenerate.
+ 	* config/arm/arm-tune.md: Regenerate.
+ 
+ 2017-07-04  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* haifa-sched.c (sched_create_recovery_edges): Update profile.
+ 
+ 2017-07-04  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* bb-reorder.c (better_edge_p): Fix handling of uninitialized
+ 	probability.
+ 
+ 2017-07-04  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	PR tree-optimization/81292
+ 	* tree-ssa-strlen.c (handle_builtin_strlen): When setting
+ 	full_string_p, also call adjust_related_strinfos if the adjustment
+ 	is simple, otherwise invalidate related strinfos.
+ 
+ 2017-07-04  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR sanitizer/81040
+ 	* sanopt.c (sanitize_rewrite_addressable_params): Mark the
+ 	newly created variable as DECL_IGNORED_P.
+ 
+ 2017-07-04  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR ipa/81293
+ 	* ipa-inline.c (inline_small_functions):
+ 	Use xstrdup_for_dump.
+ 
+ 2017-07-04  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	* graph.c (draw_cfg_edges): Save and restore EDGE_DFS_BACK.
+ 
+ 2017-07-03  Dominique d'Humieres  <dominiq@lps.ens.fr>
+ 
+ 	PR target/81033
+ 	* config/darwin.c (darwin_function_switched_text_sections):
+ 	Fix spaces.
+ 
+ 2017-07-03  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* tree-vect-loop-manip.c (vect_do_peeling): Fix scaling up.
+ 
+ 2017-07-03  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* doc/invoke.texi (ARM Options): Add -mbe8 and -mbe32 to option summary.
+ 
+ 2017-07-03  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* tree-vect-loop.c (vect_analyze_loop_2): Treat min_scalar_loop_bound,
+ 	min_profitable_iters, and th as inclusive lower bounds.
+ 	Fix LOOP_VINFO_PEELING_FOR_GAPS condition.
+ 	(vect_estimate_min_profitable_iters): Return inclusive lower bounds
+ 	for min_profitable_iters and min_profitable_estimate.
+ 	(vect_transform_loop): Treat th as an inclusive lower bound.
+ 	* tree-vect-loop-manip.c (vect_loop_versioning): Likewise.
+ 
+ 2017-07-03  Dominique d'Humieres  <dominiq@lps.ens.fr>
+ 
+ 	PR target/81033
+ 	* config/darwin.c (darwin_function_switched_text_sections):
+ 	Replace DECL_NAME with DECL_ASSEMBLER_NAME, split assemble_name_raw
+ 	in two pieces, and suppress the use of buf.
+ 
+ 2017-07-03  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* hash-table.h (hash_table_mod1): Fix indentation.
+ 
+ 2017-07-02  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR middle-end/81290
+ 	* predict.c (force_edge_cold): Be more careful about propagation
+ 	backward.
+ 	* profile-count.h (profile_probability::guessed,
+ 	profile_probability::fdo, profile_count::guessed, profile_count::fdo):
+ 	New.
+ 	* tree-ssa-threadupdate.c (recompute_probabilities): Result is guessed.
+ 
+ 2017-07-03  James Greenhalgh  <james.greenhalgh@arm.com>
+ 
+ 	* doc/invoke.texi (rcpc architecture extension): Document it.
+ 
+ 2017-07-03  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/60510
+ 	* tree-vect-loop.c (vect_create_epilog_for_reduction): Pass in
+ 	the scalar reduction PHI and use it.
+ 	(vectorizable_reduction): Properly guard the single_defuse_cycle
+ 	path for non-SLP reduction chains where we cannot use it.
+ 	Rework reduc_def/index and vector type deduction.  Rework
+ 	vector operand gathering during reduction op code-gen.
+ 	* tree-vect-slp.c (vect_analyze_slp): For failed SLP reduction
+ 	chains dissolve the chain and leave it to non-SLP reduction
+ 	handling.
+ 
+ 2017-07-03  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* tree-data-ref.h (dr_alignment): Declare.
+ 	* tree-data-ref.c (dr_alignment): New function.
+ 	* tree-vectorizer.h (dataref_aux): Remove base_element_aligned.
+ 	* tree-vect-data-refs.c (vect_compute_data_ref_alignment): Don't
+ 	set it.
+ 	* tree-vect-stmts.c (vectorizable_store): Use dr_alignment.
+ 
+ 2017-07-03  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* tree-data-ref.h (innermost_loop_behavior): Add base_alignment
+ 	and base_misalignment fields.
+ 	(DR_BASE_ALIGNMENT, DR_BASE_MISALIGNMENT): New macros.
+ 	* tree-data-ref.c: Include builtins.h.
+ 	(dr_analyze_innermost): Set up the new innmost_loop_behavior fields.
+ 	* tree-vectorizer.h (STMT_VINFO_DR_BASE_ALIGNMENT): New macro.
+ 	(STMT_VINFO_DR_BASE_MISALIGNMENT): Likewise.
+ 	* tree-vect-data-refs.c: Include tree-cfg.h.
+ 	(vect_compute_data_ref_alignment): Use the new innermost_loop_behavior
+ 	fields instead of calculating an alignment here.
+ 	(vect_analyze_data_refs): Use dr_analyze_innermost.  Dump the new
+ 	innermost_loop_behavior fields.
+ 
+ 2017-07-03  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* tree-data-ref.h (innermost_loop_behavior): Add a step_alignment
+ 	field.
+ 	(DR_STEP_ALIGNMENT): New macro.
+ 	* tree-vectorizer.h (STMT_VINFO_DR_STEP_ALIGNMENT): Likewise.
+ 	* tree-data-ref.c (dr_analyze_innermost): Initalize step_alignment.
+ 	(create_data_ref): Print it.
+ 	* tree-vect-stmts.c (vectorizable_load): Use the step alignment
+ 	to tell whether the step preserves vector (mis)alignment.
+ 	* tree-vect-data-refs.c (vect_compute_data_ref_alignment): Likewise.
+ 	Move the check for an integer step and generalise to all INTEGER_CST.
+ 	(vect_analyze_data_refs): Set DR_STEP_ALIGNMENT when setting DR_STEP.
+ 	Print the outer step alignment.
+ 
+ 2017-07-03  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* tree-data-ref.h (innermost_loop_behavior): Replace aligned_to
+ 	with offset_alignment.
+ 	(DR_ALIGNED_TO): Delete.
+ 	(DR_OFFSET_ALIGNMENT): New macro.
+ 	* tree-vectorizer.h (STMT_VINFO_DR_ALIGNED_TO): Delete.
+ 	(STMT_VINFO_DR_OFFSET_ALIGNMENT): New macro.
+ 	* tree-data-ref.c (dr_analyze_innermost): Update after above changes.
+ 	(create_data_ref): Likewise.
+ 	* tree-vect-data-refs.c (vect_compute_data_ref_alignment): Likewise.
+ 	(vect_analyze_data_refs): Likewise.
+ 	* tree-if-conv.c (if_convertible_loop_p_1): Use memset before
+ 	creating dummy innermost behavior.
+ 
+ 2017-07-03  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* tree-data-ref.h (dr_analyze_innermost): Replace the dr argument
+ 	with a "innermost_loop_behavior *" and refeence tree.
+ 	* tree-data-ref.c (dr_analyze_innermost): Likewise.
+ 	(create_data_ref): Update call accordingly.
+ 	* tree-predcom.c (find_looparound_phi): Likewise.
+ 
+ 2017-07-03  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* tree-vectorizer.h (_stmt_vec_info): Replace individual dr_*
+ 	fields with dr_wrt_vec_loop.
+ 	(STMT_VINFO_DR_BASE_ADDRESS, STMT_VINFO_DR_INIT, STMT_VINFO_DR_OFFSET)
+ 	(STMT_VINFO_DR_STEP, STMT_VINFO_DR_ALIGNED_TO): Update accordingly.
+ 	(STMT_VINFO_DR_WRT_VEC_LOOP): New macro.
+ 	(vect_dr_behavior): New function.
+ 	(vect_create_addr_base_for_vector_ref): Remove loop parameter.
+ 	* tree-vect-data-refs.c (vect_compute_data_ref_alignment): Use
+ 	vect_dr_behavior.  Use a step_preserves_misalignment_p boolean to
+ 	track whether the step preserves the misalignment.
+ 	(vect_create_addr_base_for_vector_ref): Remove loop parameter.
+ 	Use vect_dr_behavior.
+ 	(vect_setup_realignment): Update call accordingly.
+ 	(vect_create_data_ref_ptr): Likewise.  Use vect_dr_behavior.
+ 	* tree-vect-loop-manip.c (vect_gen_prolog_loop_niters): Update
+ 	call to vect_create_addr_base_for_vector_ref.
+ 	(vect_create_cond_for_align_checks): Likewise.
+ 	* tree-vect-patterns.c (vect_recog_bool_pattern): Copy
+ 	STMT_VINFO_DR_WRT_VEC_LOOP as a block.
+ 	(vect_recog_mask_conversion_pattern): Likewise.
+ 	* tree-vect-stmts.c (compare_step_with_zero): Use vect_dr_behavior.
+ 	(new_stmt_vec_info): Remove redundant zeroing.
+ 
+ 2017-07-03  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* common/config/arm/arm-common.c (arm_be8_option): New function.
+ 	* config/arm/arm-isa.h (isa_feature): Add new feature bit isa_bit_be8.
+ 	(ISA_ARMv6): Add isa_bit_be8.
+ 	* config/arm/arm.h (arm_be8_option): Add prototype.
+ 	(BE8_SPEC_FUNCTION): New define.
+ 	(EXTRA_SPEC_FUNCTIONS): Add BE8_SPEC_FUNCTION.
+ 	* config/arm/arm.opt (mbig-endian): Mark as Negative of mlittle-endian.
+ 	(mlittle-endian): Similarly.
+ 	(mbe8, mbe32): New options.
+ 	* config/arm/bpabi.h (BE8_LINK_SPEC): Call arm_be8_option.
+ 	* doc/invoke.texi (ARM Options): Document -mbe8 and -mbe32.
+ 
+ 2017-07-02  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* tree-cfg.c (gimple_find_sub_bbs): Fix profile updating.
+ 
+ 2017-07-02  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* tree-cfgcleanup.c (want_merge_blocks_p): New function.
+ 	(cleanup_tree_cfg_bb): Use it.
+ 	* profile-count.h (profile_count::of_for_merging, profile_count::merge):
+ 	New functions.
+ 	* tree-cfg.c (gimple_merge_blocks): Use profile_count::merge.
+ 
+ 2017-07-02  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR bootstrap/81285
+ 	* loop-doloop.c (add_test): Update profile.
+ 
+ 2017-07-03  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR sanitize/81040
+ 	* sanopt.c (rewrite_usage_of_param): New function.
+ 	(sanitize_rewrite_addressable_params): Likewise.
+ 	(pass_sanopt::execute): Call rewrite_usage_of_param.
+ 
+ 2017-07-03  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-loop.c (vect_create_epilog_for_reduction): Revert
+ 	back to using VIEW_CONVERT_EXPR.
+ 
+ 2017-07-03  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR other/78366
+ 	* doc/extend.texi: Document when a resolver function is
+ 	generated for target_clones.
+ 
+ 2017-07-03  Martin Liska  <mliska@suse.cz>
+ 
+ 	* asan.c (asan_emit_stack_protection): Unpoison just red zones
+ 	and shadow memory of auto variables which are subject of
+ 	use-after-scope sanitization.
+ 	(asan_expand_mark_ifn): Add do set only when is_poison.
+ 
+ 2016-07-03  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-loop.c (vect_analyze_loop_operations): Also analyze
+ 	reduction PHIs.
+ 	(vect_force_simple_reduction): Record reduction def -> phi mapping.
+ 	(vectorizable_reduction): Perform reduction PHI creation when
+ 	visiting a reduction PHI and adjust and simplify code generation
+ 	phase of the reduction op.  Cache dts, use fold_binary, not fold_build2.
+ 	(vect_transform_loop): Visit reduction PHIs.
+ 	* tree-vect-slp.c (vect_get_and_check_slp_defs): Record reduction
+ 	defs into the SLP tree.
+ 	(vect_build_slp_tree): Reduction defs terminate the recursion.
+ 	* tree-vect-stmts.c (vect_get_vec_def_for_operand_1): Allow lookup
+ 	of reduction defs.
+ 	(vect_get_vec_defs_for_stmt_copy): Export.
+ 	(vect_get_vec_defs): Likewise.
+ 	* tree-vectorizer.h (struct _stmt_vec_info): Amend reduc_def
+ 	purpose.
+ 	(vect_get_vec_defs_for_stmt_copy): Declare.
+ 	(vect_get_vec_defs): Likewise.
+ 
+ 2017-07-03  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* tree-data-ref.c (dr_analyze_innermost): Replace the "nest"
+ 	parameter with a "loop" parameter and use it instead of the
+ 	loop containing DR_STMT.  Don't check simple_iv when doing
+ 	BB analysis.  Describe the two analysis modes in the comment.
+ 
+ 2017-07-03  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	PR tree-optimization/69468
+ 	* tree-ssa-tail-merge.c (ignore_edge_flags): New constant.
+ 	(find_same_succ_bb): Handle ignore_edge_flags.
+ 
+ 2017-07-03  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	PR tree-optimization/81192
+ 	* tree-ssa-tail-merge.c (same_succ_hash): Use bb->loop_father->num in
+ 	hash.
+ 	(same_succ::equal): Don't find bbs to be equal if bb->loop_father
+ 	differs.
+ 	(find_same_succ_bb): Remove obsolete test on bb->loop_father->latch.
+ 
+ 2017-07-03  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	PR tree-optimization/81192
+ 	* tree-ssa-tail-merge.c (same_succ_flush_bb): Handle
+ 	BB_SAME_SUCC (bb) == NULL.
+ 
+ 2017-07-02  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* cfgrtl.c (rtl_verify_edges): Enable checking of profile_probability
+ 	consistency.
+ 
+ 2017-07-02  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* dumpfile.c: Include profile-count.h
+ 	* tree-cfg.c (gimple_duplicate_sese_tail): Drop UNUSED attributes;
+ 	update profile.
+ 	(insert_cond_bb): Update profile.
+ 	* tree-cfg.h (insert_cond_bb): Update prototype.
+ 	* tree-chkp-opt.c (chkp_optimize_string_function_calls): Update.
+ 	* tree-dump.c: Do not include tree-cfg.
+ 
+ 2017-07-02  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* bb-reorder.c (fix_up_crossing_landing_pad): Update profile.
+ 
+ 2017-07-02  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* expect.c (dw2_build_landing_pads): Update profile of the landing pad
+ 	bb.
+ 
+ 2017-07-02  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* tree-complex.c (expand_complex_div_wide): update profile.
+ 
+ 2017-07-02  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* Makefile.in (MACHMODE_H): Remove insn-modes.h
+ 	(CORETYPES_H): New define.
+ 	(MOSTLYCLEANFILES): Add insn-modes-inline.h.
+ 	(insn-modes-inline.h, s-modes-inline-h): New rules.
+ 	(generated_files): Add insn-modes-inline.h.
+ 	(RTL_BASE_H, TREE_CORE_H): Use CORETYPES_H instead of coretypes.h.
+ 	(build/gensupport.o, build/ggc-none.o, build/print-rtl.o): Likewise.
+ 	(build/read-md.o, build/read-rtl.o, build/rtl.o): Likewise.
+ 	(build/vec.o, build/hash-table.o, build/inchash.o): Likewise.
+ 	(build/gencondmd.o, build/genattr.o, build/genattr-common.o): Likewise.
+ 	(build/genattrtab.o, build/genautomata.o, build/gencheck.o): Likewise.
+ 	(build/gencodes.o, build/genconditions.o): Likewise.
+ 	(build/genconfig.o, build/genconstants.o, build/genemit.o): Likewise.
+ 	(build/genenums.o, build/genextract.o, build/genflags.o): Likewise.
+ 	(build/gentarget-def.o, build/genmddeps.o, build/genopinit.o)
+ 	(build/genoutput.o, build/genpeep.o, build/genpreds.o): Likewise.
+ 	(build/genrecog.o, build/genmddump.o, build/genmatch.o): Likewise.
+ 	(build/gencfn-macros.o, build/gcov-iov.o): Likewise.
+ 	* coretypes.h: Include everything up to real.h for generators.
+ 	Include insn-modes.h first.  Include wide-int-print.h after
+ 	wide-int.h.  Include insn-modes-inline.h and then machmode.h.
+ 	* machmode.h: Don't include insn-modes.h here.
+ 	* function-tests.c: Remove includes of signop.h, machmode.h,
+ 	double-int.h and wide-int.h.
+ 	* rtl.h: Likewise.
+ 	* gcc-rich-location.c: Remove includes of machmode.h, double-int.h
+ 	and wide-int.h.
+ 	* optc-save-gen.awk: Likewise.
+ 	* gencheck.c (BITS_PER_UNIT): Delete dummy definition.
+ 	* godump.c: Remove include of wide-int-print.h.
+ 	* pretty-print.h: Likewise.
+ 	* wide-int-print.cc: Likewise.
+ 	* wide-int.cc: Likewise.
+ 	* hash-map-tests.c: Remove include of signop.h.
+ 	* hash-set-tests.c: Likewise.
+ 	* rtl-tests.c: Likewise.
+ 	* mkconfig.sh: Remove include of machmode.h.
+ 	* genmodes.c (emit_insn_modes_h): Split emission of inline functions
+ 	into...
+ 	(emit_insn_modes_inline_h): ...this new function.  Emit the code
+ 	into an insn-modes-inline.h header file, adding appropriate
+ 	include guards and end comments.
+ 	(emit_insn_modes_c_header): Remove include of machmode.h.
+ 	(emit_min_insn_modes_c_header): Include coretypes.h rather than
+ 	machmode.h.
+ 	(main): Handle -i flag and call emit_insn_modes_inline_h when
+ 	it is passed.
+ 
+ 2017-07-02  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* tree-ssa-strlen.c (strinfo): Rename the length field to
+ 	nonzero_chars.  Add a full_string_p field.
+ 	(compare_nonzero_chars, zero_length_string_p): New functions.
+ 	(get_addr_stridx): Add an offset_out parameter.
+ 	Use compare_nonzero_chars.
+ 	(get_stridx): Update accordingly.  Use compare_nonzero_chars.
+ 	(new_strinfo): Update after above changes to strinfo.
+ 	(set_endptr_and_length): Set full_string_p.
+ 	(get_string_length): Update after above changes to strinfo.
+ 	(unshare_strinfo): Update call to new_strinfo.
+ 	(maybe_invalidate): Likewise.
+ 	(get_stridx_plus_constant): Change off to unsigned HOST_WIDE_INT.
+ 	Use compare_nonzero_chars and zero_string_p.  Treat nonzero_chars
+ 	as a uhwi instead of an shwi.  Update after above changes to
+ 	strinfo and new_strinfo.
+ 	(zero_length_string): Assert that chainsi contains full strings.
+ 	Use zero_length_string_p.  Update call to new_strinfo.
+ 	(adjust_related_strinfos): Update after above changes to strinfo.
+ 	Copy full_string_p from origsi.
+ 	(adjust_last_stmt): Use zero_length_string_p.
+ 	(handle_builtin_strlen): Update after above changes to strinfo and
+ 	new_strinfo.  Install the lhs as the string length if the previous
+ 	entry didn't describe a full string.
+ 	(handle_builtin_strchr): Update after above changes to strinfo
+ 	and new_strinfo.
+ 	(handle_builtin_strcpy): Likewise.
+ 	(handle_builtin_strcat): Likewise.
+ 	(handle_builtin_malloc): Likewise.
+ 	(handle_pointer_plus): Likewise.
+ 	(handle_builtin_memcpy): Likewise.  Track nonzero characters
+ 	that aren't necessarily followed by a nul terminator.
+ 	(handle_char_store): Likewise.
+ 
+ 2017-07-02  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	PR tree-optimization/80769
+ 	* tree-ssa-strlen.c (strinfo): Document that "stmt" is also used
+ 	for malloc and calloc.  Document the new invariant that all related
+ 	strinfos have delayed lengths or none do.
+ 	(verify_related_strinfos): Move earlier in file.
+ 	(set_endptr_and_length): New function, split out from...
+ 	(get_string_length): ...here.  Also set the lengths of related
+ 	strinfos.
+ 	(zero_length_string): Assert that chainsi has known (rather than
+ 	delayed) lengths.
+ 	(adjust_related_strinfos): Likewise.
+ 
+ 2017-07-02  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	PR tree-optimization/81136
+ 	* tree-vect-data-refs.c (vect_update_misalignment_for_peel): Only
+ 	assert that two references with the same misalignment have the same
+ 	compile-time misalignment if those compile-time misalignments
+ 	are known.
+ 
+ 2017-07-01  Andi Kleen  <ak@linux.intel.com>
+ 
+ 	* print-tree.c (print_node): Print all attributes.
+ 
+ 2017-07-01  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* cfg.c (scale_bbs_frequencies): New function.
+ 	* cfg.h (scale_bbs_frequencies): Declare it.
+ 	* cfgloopanal.c (single_likely_exit): Cleanup.
+ 	* cfgloopmanip.c (scale_loop_frequencies): Take profile_probability
+ 	as parameter.
+ 	(scale_loop_profile): Likewise.
+ 	(loop_version): Likewise.
+ 	(create_empty_loop_on_edge): Update.
+ 	* cfgloopmanip.h (scale_loop_frequencies, scale_loop_profile,
+ 	scale_loop_frequencies, scale_loop_profile, loopify,
+ 	loop_version): Update prototypes.
+ 	* modulo-sched.c (sms_schedule): Update.
+ 	* predict.c (unlikely_executed_edge_p): Also check probability.
+ 	(probably_never_executed_edge_p): Fix typo.
+ 	* tree-if-conv.c (version_loop_for_if_conversion): Update.
+ 	* tree-parloops.c (gen_parallel_loop): Update.
+ 	* tree-ssa-loop-ivcanon.c (try_peel_loop): Update.
+ 	* tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update.
+ 	* tree-ssa-loop-split.c (split_loop): Update.
+ 	* tree-ssa-loop-unswitch.c (tree_unswitch_loop): Update.
+ 	* tree-vect-loop-manip.c (vect_do_peeling): Update.
+ 	(vect_loop_versioning): Update.
+ 	* tree-vect-loop.c (scale_profile_for_vect_loop): Update.
+ 
+ 2017-07-01  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* trans-mem.c (split_bb_make_tm_edge): Update profile.
+ 
+ 2017-07-01  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* tree-if-conv.c (combine_blocks): Use make_single_succ_edge
+ 	to keep profile consistent.
+ 
+ 2017-07-01  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* cfgrtl.c (rtl_flow_call_edges_add): Update profile.
+ 	* tree-cfg.c (gimple_flow_call_edges_add): Likewise.
+ 	* profile-count.h (max_safe_multiplier): Make unsigned.
+ 	(profile_count::guessed_zero): New.
+ 
+ 2017-07-01  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* bb-reorder.c (fix_up_crossing_landing_pad,
+ 	fix_crossing_conditional_branches): Use make_single_succ_edge
+ 	to keep profile consistent.
+ 
+ 2017-07-01  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* tree-vect-loop.c (optimize_mask_stores): Use make_single_succ_edge
+ 	to update profile.
+ 
+ 2017-07-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/81262
+ 	* bb-reorder.c (fix_up_fall_thru_edges): Move variable declarations to
+ 	the right scopes, make sure cond_jump isn't preserved between multiple
+ 	iterations.  Search for fallthru edge whenever there are 3+ edges and
+ 	use find_fallthru_edge for it.
+ 
+ 2017-06-29  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	Patch by Alexander Monakov <amonakov@ispras.ru>
+ 	* sel-sched-ir.c (compute_succs_info): Handle uninitialized
+ 	probabilities consistently.
+ 
+ 2017-06-29  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* pa.c (pa_expand_compare_and_swap_loop): Update call of
+ 	emit_cmp_and_jump_insns.
+ 
+ 2017-06-29  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR ipa/81261
+ 	* tree-inline.c (expand_call_inline): Combine profile statuses.
+ 
+ 2017-06-30  Andrew Pinski  <apinski@cavium.com>
+ 
+ 	* tree-if-conv.c (predicate_scalar_phi): Update new_stmt if
+ 	fold_stmt returned true.
+ 
+ 2017-06-30  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* ggc.h (empty_string): Delete.
+ 	* cfgexpand.c (expand_asm_stmt): Use plain "".
+ 	* optabs.c (expand_asm_memory_barrier): Likewise.
+ 	* stringpool.c (empty_string): Delete.
+ 	(digit_vector, digit_string): Delete.
+ 	(ggc_alloc_string): Use plain "", don't optimize single digit
+ 	strings.  Use ggc_alloc_atomic.
+ 
+ 2017-06-30  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* rtlanal.c (insn_rtx_cost): If a parallel contains exactly one
+ 	comparison set and one other set, use the cost of the non-comparison
+ 	set.
+ 
+ 2017-06-30  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* ggc.h: Replace all 'static inline' with plain 'inline'.  Fix
+ 	some formatting.
+ 
+ 2017-06-30  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	* tree-cfg.c (group_case_labels_stmt): Merge scanning and compressing
+ 	loops.  Remove now unneeded calls to gimple_switch_set_label() that
+ 	just set removed labels to NULL_TREE.
+ 
+ 2017-06-30  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* tree-ssanames.c (set_range_info_raw): Abstract from ...
+ 	(set_range_info): ...here.  Only call set_range_info_raw if domain
+ 	is useful.
+ 	(set_nonzero_bits): Call set_range_info_raw.
+ 	* tree-ssanames.h (set_range_info_raw): New.
+ 
+ 2017-06-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/81225
+ 	* config/i386/sse.md (vec_extract_lo_<mode><mask_name>): For V8FI,
+ 	V16FI and VI8F_256 iterators, use <store_mask_predicate> instead
+ 	of nonimmediate_operand and <store_mask_constraint> instead of m
+ 	for the input operand.  For V8FI iterator, always split if input
+ 	is a MEM.  For V16FI and V8SF_256 iterators, don't test if both
+ 	operands are MEM if <mask_applied>.  For VI4F_256 iterator, use
+ 	<store_mask_predicate> instead of register_operand and
+ 	<store_mask_constraint> instead of v for the input operand.  Make
+ 	sure both operands aren't MEMs for if not <mask_applied>.
+ 
+ 2017-06-30  Sylvestre Ledru  <sylvestre@debian.org>
+ 
+ 	* lto-wrapper.c (copy_file) Close both file descriptors before
+ 	exiting normally.
+ 
+ 2017-06-30  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR ipa/81214
+ 	* multiple_target.c (create_dispatcher_calls): Make ifunc
+ 	also for function that don't have calls or are not referenced.
+ 
+ 2017-06-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-slp.c (vect_slp_analyze_node_operations): Only
+ 	analyze the first scalar stmt.  Move vector type computation
+ 	for the BB case here from ...
+ 	* tree-vect-stmts.c (vect_analyze_stmt): ... here.  Guard
+ 	live operation processing in the SLP case properly.
+ 
+ 2017-06-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	* graph.c (draw_cfg_node_succ_edges): Fix broken dot syntax.
+ 
+ 2017-06-30  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR sanitizer/81021
+ 	* tree-eh.c (lower_resx): Call BUILT_IN_ASAN_HANDLE_NO_RETURN
+ 	before BUILT_IN_UNWIND_RESUME when ASAN is used.
+ 
+ 2017-06-30  Yvan Roux  <yvan.roux@linaro.org>
+ 
+ 	* doc/invoke.texi (AArch64): Add missing options and remove redundant
+ 	ones.
+ 
+ 2017-06-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/81249
+ 	* tree-vect-loop.c (vect_create_epilog_for_reduction): Convert
+ 	condition reduction result to original scalar type.
+ 
+ 2017-06-30  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	* profile-count.h (enum profile_quality): Fix typos and whitespace
+ 	issues.
+ 
+ 2017-06-30  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	* config/s390/s390.c (s390_expand_setmem): Adjust to the new data
+ 	type for branch probabilities.
+ 
+ 2017-06-29  Julian Brown  <julian@codesourcery.com>
+ 	    Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
+ 
+ 	* config/aarch64/aarch64-fusion-pairs.def: Add ALU_BRANCH entry.
+ 	* config/aarch64/aarch64.c (AARCH64_FUSE_ALU_BRANCH): New fusion type.
+ 	(thunderx2t99_tunings): Set AARCH64_FUSE_ALU_BRANCH flag.
+ 	(aarch_macro_fusion_pair_p): Add support for AARCH64_FUSE_ALU_BRANCH.
+ 
+ 2017-06-29  Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
+ 
+ 	* config/aarch64/aarch64.c (aarch_macro_fusion_pair_p): Push the
+ 	check for CC usage into AARCH64_FUSE_CMP_BRANCH.
+ 	* config/i386/i386.c (ix86_macro_fusion_pair_p): Push the check for
+ 	CC usage from generic code to here.
+ 	* sched-deps.c (sched_macro_fuse_insns): Move the condition for
+ 	CC usage into the target macros.
+ 
+ 2017-06-29  Maya Rashish  <coypu@sdf.org>
+ 
+ 	* config/netbsd.h (NETBSD_LIB_SPEC): Add -lc when creating shared
+ 	objects.
+ 
+ 2017-06-29  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* arm/arm-builtins.c: Include profile-count.h
+ 	* except.c (sjlj_emit_function_enter): Use
+ 	profile_probability::unlikely.
+ 
+ 2017-06-29  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
+ 
+ 	* config/rs6000/rs6000.c (toc_relative_expr_p): Make tocrel_base
+ 	and tocrel_offset be pointer args rather than implicitly using
+ 	static versions.
+ 	(legitimate_constant_pool_address_p, rs6000_emit_move,
+ 	const_load_sequence_p, adjust_vperm): Add local tocrel_base and
+ 	tocrel_offset and use in toc_relative_expr_p call.
+ 	(print_operand, print_operand_address): Use static tocrel_base_oac
+ 	and tocrel_offset_oac.
+ 	(rs6000_output_addr_const_extra): Use static tocrel_base_oac and
+ 	tocrel_offset_oac.
+ 
+ 2017-06-29  Maya Rashish  <coypu@sdf.org>
+ 
+ 	* config/vax/builtins.md (ffssi2_internal): Correct constraint.
+ 
+ 2017-06-29  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* expr.c (expand_expr) <normal_inner_ref>: When testing for unaligned
+ 	objects, take into account only the alignment of 'op0' and 'mode1' if
+ 	'op0' is a MEM.
+ 
+ 2017-06-29  Steve Ellcey  <sellcey@cavium.com>
+ 
+ 	* ccmp.c (ccmp_tree_comparison_p): New function.
+ 	(ccmp_candidate_p): Update to use above function.
+ 	(get_compare_parts): New function.
+ 	(expand_ccmp_next): Update to use new functions.
+ 	(expand_ccmp_expr_1): Take tree arg instead of gimple, update to use
+ 	new functions.
+ 	(expand_ccmp_expr): Pass tree instead of gimple to expand_ccmp_expr_1,
+ 	take mode as argument.
+ 	* ccmp.h (expand_ccmp_expr): Add mode as argument.
+ 	* expr.c (expand_expr_real_1): Pass mode as argument.
+ 
+ 2017-06-29  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* combine.c (combine_instructions): Print insns to dump_file, together
+ 	with their costs.
+ 
+ 2017-06-29  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* asan.c (asan_emit_stack_protection): Update.
+ 	(create_cond_insert_point): Update.
+ 	* auto-profile.c (afdo_propagate_circuit): Update.
+ 	* basic-block.h (struct edge_def): Turn probability to
+ 	profile_probability.
+ 	(EDGE_FREQUENCY): Update.
+ 	* bb-reorder.c (find_traces_1_round): Update.
+ 	(better_edge_p): Update.
+ 	(sanitize_hot_paths): Update.
+ 	* cfg.c (unchecked_make_edge): Initialize probability to uninitialized.
+ 	(make_single_succ_edge): Update.
+ 	(check_bb_profile): Update.
+ 	(dump_edge_info): Update.
+ 	(update_bb_profile_for_threading): Update.
+ 	* cfganal.c (connect_infinite_loops_to_exit): Initialize new edge
+ 	probabilitycount to 0.
+ 	* cfgbuild.c (compute_outgoing_frequencies): Update.
+ 	* cfgcleanup.c (try_forward_edges): Update.
+ 	(outgoing_edges_match): Update.
+ 	(try_crossjump_to_edge): Update.
+ 	* cfgexpand.c (expand_gimple_cond): Update make_single_succ_edge.
+ 	(expand_gimple_tailcall): Update.
+ 	(construct_init_block): Use make_single_succ_edge.
+ 	(construct_exit_block): Use make_single_succ_edge.
+ 	* cfghooks.c (verify_flow_info): Update.
+ 	(redirect_edge_succ_nodup): Update.
+ 	(split_edge): Update.
+ 	(account_profile_record): Update.
+ 	* cfgloopanal.c (single_likely_exit): Update.
+ 	* cfgloopmanip.c (scale_loop_profile): Update.
+ 	(set_zero_probability): Remove.
+ 	(duplicate_loop_to_header_edge): Update.
+ 	* cfgloopmanip.h (loop_version): Update prototype.
+ 	* cfgrtl.c (try_redirect_by_replacing_jump): Update.
+ 	(force_nonfallthru_and_redirect): Update.
+ 	(update_br_prob_note): Update.
+ 	(rtl_verify_edges): Update.
+ 	(purge_dead_edges): Update.
+ 	(rtl_lv_add_condition_to_bb): Update.
+ 	* cgraph.c: (cgraph_edge::redirect_call_stmt_to_calle): Update.
+ 	* cgraphunit.c (init_lowered_empty_function): Update.
+ 	(cgraph_node::expand_thunk): Update.
+ 	* cilk-common.c: Include profile-count.h
+ 	* dojump.c (inv): Remove.
+ 	(jumpifnot): Update.
+ 	(jumpifnot_1): Update.
+ 	(do_jump_1): Update.
+ 	(do_jump): Update.
+ 	(do_jump_by_parts_greater_rtx): Update.
+ 	(do_compare_rtx_and_jump): Update.
+ 	* dojump.h (jumpifnot, jumpifnot_1, jumpif_1, jumpif, do_jump,
+ 	do_jump_1. do_compare_rtx_and_jump): Update prototype.
+ 	* dwarf2cfi.c: Include profile-count.h
+ 	* except.c (dw2_build_landing_pads): Use make_single_succ_edge.
+ 	(sjlj_emit_dispatch_table): Likewise.
+ 	* explow.c: Include profile-count.h
+ 	* expmed.c (emit_store_flag_force): Update.
+ 	(do_cmp_and_jump): Update.
+ 	* expr.c (compare_by_pieces_d::generate): Update.
+ 	(compare_by_pieces_d::finish_mode): Update.
+ 	(emit_block_move_via_loop): Update.
+ 	(store_expr_with_bounds): Update.
+ 	(store_constructor): Update.
+ 	(expand_expr_real_2): Update.
+ 	(expand_expr_real_1): Update.
+ 	* expr.h (try_casesi, try_tablejump): Update prototypes.
+ 	* gimple-pretty-print.c (dump_probability): Update.
+ 	(dump_profile): New.
+ 	(dump_gimple_label): Update.
+ 	(dump_gimple_bb_header): Update.
+ 	* graph.c (draw_cfg_node_succ_edges): Update.
+ 	* hsa-gen.c (convert_switch_statements): Update.
+ 	* ifcvt.c (cheap_bb_rtx_cost_p): Update.
+ 	(find_if_case_1): Update.
+ 	(find_if_case_2): Update.
+ 	* internal-fn.c (expand_arith_overflow_result_store): Update.
+ 	(expand_addsub_overflow): Update.
+ 	(expand_neg_overflow): Update.
+ 	(expand_mul_overflow): Update.
+ 	(expand_vector_ubsan_overflow): Update.
+ 	* ipa-cp.c (good_cloning_opportunity_p): Update.
+ 	* ipa-split.c (split_function): Use make_single_succ_edge.
+ 	* ipa-utils.c (ipa_merge_profiles): Update.
+ 	* loop-doloop.c (add_test): Update.
+ 	(doloop_modify): Update.
+ 	* loop-unroll.c (compare_and_jump_seq): Update.
+ 	(unroll_loop_runtime_iterations): Update.
+ 	* lra-constraints.c (lra_inheritance): Update.
+ 	* lto-streamer-in.c (input_cfg): Update.
+ 	* lto-streamer-out.c (output_cfg): Update.
+ 	* mcf.c (adjust_cfg_counts): Update.
+ 	* modulo-sched.c (sms_schedule): Update.
+ 	* omp-expand.c (expand_omp_for_init_counts): Update.
+ 	(extract_omp_for_update_vars): Update.
+ 	(expand_omp_ordered_sink): Update.
+ 	(expand_omp_for_ordered_loops): Update.
+ 	(expand_omp_for_generic): Update.
+ 	(expand_omp_for_static_nochunk): Update.
+ 	(expand_omp_for_static_chunk): Update.
+ 	(expand_cilk_for): Update.
+ 	(expand_omp_simd): Update.
+ 	(expand_omp_taskloop_for_outer): Update.
+ 	(expand_omp_taskloop_for_inner): Update.
+ 	* omp-simd-clone.c (simd_clone_adjust): Update.
+ 	* optabs.c (expand_doubleword_shift): Update.
+ 	(expand_abs): Update.
+ 	(emit_cmp_and_jump_insn_1): Update.
+ 	(expand_compare_and_swap_loop): Update.
+ 	* optabs.h (emit_cmp_and_jump_insns): Update prototype.
+ 	* predict.c (predictable_edge_p): Update.
+ 	(edge_probability_reliable_p): Update.
+ 	(set_even_probabilities): Update.
+ 	(combine_predictions_for_insn): Update.
+ 	(combine_predictions_for_bb): Update.
+ 	(propagate_freq): Update.
+ 	(estimate_bb_frequencies): Update.
+ 	(force_edge_cold): Update.
+ 	* profile-count.c (profile_count::dump): Add missing space into dump.
+ 	(profile_count::debug): Add newline.
+ 	(profile_count::differs_from_p): Explicitly convert to unsigned.
+ 	(profile_count::stream_in): Update.
+ 	(profile_probability::dump): New member function.
+ 	(profile_probability::debug): New member function.
+ 	(profile_probability::differs_from_p): New member function.
+ 	(profile_probability::differs_lot_from_p): New member function.
+ 	(profile_probability::stream_in): New member function.
+ 	(profile_probability::stream_out): New member function.
+ 	* profile-count.h (profile_count_quality): Rename to ...
+ 	(profile_quality): ... this one.
+ 	(profile_probability): New.
+ 	(profile_count): Update.
+ 	* profile.c (compute_branch_probabilities): Update.
+ 	* recog.c (peep2_attempt): Update.
+ 	* sched-ebb.c (schedule_ebbs): Update.
+ 	* sched-rgn.c (find_single_block_region): Update.
+ 	(compute_dom_prob_ps): Update.
+ 	(schedule_region): Update.
+ 	* sel-sched-ir.c (compute_succs_info): Update.
+ 	* stmt.c (struct case_node): Update.
+ 	(do_jump_if_equal): Update.
+ 	(get_outgoing_edge_probs): Update.
+ 	(conditional_probability): Update.
+ 	(emit_case_dispatch_table): Update.
+ 	(expand_case): Update.
+ 	(expand_sjlj_dispatch_table): Update.
+ 	(emit_case_nodes): Update.
+ 	* targhooks.c: Update.
+ 	* tracer.c (better_p): Update.
+ 	(find_best_successor): Update.
+ 	* trans-mem.c (expand_transaction): Update.
+ 	* tree-call-cdce.c: Update.
+ 	* tree-cfg.c (gimple_split_edge): Upate.
+ 	(move_sese_region_to_fn): Upate.
+ 	* tree-cfgcleanup.c (cleanup_control_expr_graph): Upate.
+ 	* tree-eh.c (lower_resx): Upate.
+ 	(cleanup_empty_eh_move_lp): Upate.
+ 	* tree-if-conv.c (version_loop_for_if_conversion): Update.
+ 	* tree-inline.c (copy_edges_for_bb): Update.
+ 	(copy_cfg_body): Update.
+ 	* tree-parloops.c (gen_parallel_loop): Update.
+ 	* tree-profile.c (gimple_gen_ic_func_profiler): Update.
+ 	(gimple_gen_time_profiler): Update.
+ 	* tree-ssa-dce.c (remove_dead_stmt): Update.
+ 	* tree-ssa-ifcombine.c (update_profile_after_ifcombine): Update.
+ 	* tree-ssa-loop-im.c (execute_sm_if_changed): Update.
+ 	* tree-ssa-loop-ivcanon.c (remove_exits_and_undefined_stmts): Update.
+ 	(unloop_loops): Update.
+ 	(try_peel_loop): Update.
+ 	* tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update.
+ 	* tree-ssa-loop-split.c (connect_loops): Update.
+ 	(split_loop): Update.
+ 	* tree-ssa-loop-unswitch.c (tree_unswitch_loop): Update.
+ 	(hoist_guard): Update.
+ 	* tree-ssa-phionlycprop.c (propagate_rhs_into_lhs): Update.
+ 	* tree-ssa-phiopt.c (replace_phi_edge_with_variable): Update.
+ 	(value_replacement): Update.
+ 	* tree-ssa-reassoc.c (branch_fixup): Update.
+ 	* tree-ssa-tail-merge.c (replace_block_by): Update.
+ 	* tree-ssa-threadupdate.c (remove_ctrl_stmt_and_useless_edges): Update.
+ 	(create_edge_and_update_destination_phis): Update.
+ 	(compute_path_counts): Update.
+ 	(recompute_probabilities): Update.
+ 	(update_joiner_offpath_counts): Update.
+ 	(freqs_to_counts_path): Update.
+ 	(duplicate_thread_path): Update.
+ 	* tree-switch-conversion.c (hoist_edge_and_branch_if_true): Update.
+ 	(struct switch_conv_info): Update.
+ 	(gen_inbound_check): Update.
+ 	* tree-vect-loop-manip.c (slpeel_add_loop_guard): Update.
+ 	(vect_do_peeling): Update.
+ 	(vect_loop_versioning): Update.
+ 	* tree-vect-loop.c (scale_profile_for_vect_loop): Update.
+ 	(optimize_mask_stores): Update.
+ 	* ubsan.c (ubsan_expand_null_ifn): Update.
+ 	* value-prof.c (gimple_divmod_fixed_value): Update.
+ 	(gimple_divmod_fixed_value_transform): Update.
+ 	(gimple_mod_pow2): Update.
+ 	(gimple_mod_pow2_value_transform): Update.
+ 	(gimple_mod_subtract): Update.
+ 	(gimple_mod_subtract_transform): Update.
+ 	(gimple_ic): Update.
+ 	(gimple_stringop_fixed_value): Update.
+ 	(gimple_stringops_transform): Update.
+ 	* value-prof.h: Update.
+ 
+ 2017-06-29  Carl Love  <cel@us.ibm.com>
+ 
+ 	* config/rs6000/rs6000-c.c: Add support for built-in functions
+ 	vector signed int vec_signed (vector float);
+ 	vector signed long long vec_signed (vector double);
+ 	vector signed int vec_signed2 (vector double, vector double);
+ 	vector signed int vec_signede (vector double);
+ 	vector signed int vec_signedo (vector double);
+ 	* config/rs6000/rs6000.c (rs6000_generate_vsigned2_code): Add
+ 	instruction generator.
+ 	* config/rs6000/vsx.md (UNSPEC_VSX_XVCVSPSXWS, UNSPEC_VSX_XVCVSPSXDS,
+ 	UNSPEC_VSX_VSIGNED2): Add UNSPECS.
+ 	(vsx_xvcvspsxws, vsx_xvcvdpuxds_scale, vsx_xvcvspuxws, vsigned2_v2df):
+ 	Add define_insn.
+ 	(vsignedo_v2df, vsignede_v2df, vunsigned2_v2df, vunsignedo_v2df,
+ 	vunsignede_v2df): Add define_expands.
+ 	* config/rs6000/rs6000-builtin.def (VEC_SIGNED, VEC_UNSIGNED,
+ 	VEC_SIGNED2, VEC_UNSIGNED2, VEC_SIGNEDE, VEC_UNSIGNEDE, VEC_SIGNEDO,
+ 	VEC_UNSIGNEDO): Add definitions.
+ 	* config/vsx.md (UNSPEC_VSX_XVCVSPSXWS, UNSPEC_VSX_XVCVSPSXDS,
+ 	UNSPEC_VSX_VSIGNED2): Add UNSPECs.
+ 	(vsx_xvcvspsxws, vsx_xvcvspuxws): Add define_insn.
+ 	(vsigned2_v2df, vsigendo_v2df, vsignede_v2df,
+ 	vunsigned2_v2df, vunsignedo_v2df, vunsignede_v2df): Add define_expands.
+ 	* config/rs6000/altivec.h (vec_signed, vec_signed2,
+ 	vec_signede and vec_signedo, vec_unsigned, vec_unsigned2,
+ 	vec_unsignede, vec_unsignedo): Add builtin defines.
+ 	* config/rs6000-protos.h (rs6000_generate_vsigned2_code): Add extern
+ 	declaration.
+ 	* doc/extend.texi: Update the built-in documentation file for the
+ 	new built-in functions.
+ 
+ 2017-06-29  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-loop.c (vect_analyze_scalar_cycles_1): Do not add
+ 	reduction chains to LOOP_VINFO_REDUCTIONS.
+ 	* tree-vect-slp.c (vect_analyze_slp): Continue looking for
+ 	SLP reductions after processing reduction chains.
+ 
+ 2017-06-29  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* builtins.c (fold_builtin_FUNCTION): Use
+ 	lang_hooks.decl_printable_name.
+ 
+ 2017-06-29  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	PR middle-end/81194
+ 	* cfgexpand.c (expand_gimple_stmt_1): Handle switch statements
+ 	with only one label.
+ 	* stmt.c (expand_case): Assert NCASES is greater than one.
+ 
+ 2017-06-29  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-cfg.c (group_case_labels_stmt): Return whether we changed
+ 	anything.
+ 	(group_case_labels): Likewise.
+ 	(find_taken_edge): Push sanity checking on val to workers...
+ 	(find_taken_edge_cond_expr): ... here
+ 	(find_taken_edge_switch_expr): ... and here, handle cases
+ 	with just a default label.
+ 	* tree-cfg.h (group_case_labels_stmt): Adjust prototype.
+ 	(group_case_labels): Likewise.
+ 	* tree-cfgcleanup.c (execute_cleanup_cfg_post_optimizing): When
+ 	group_case_labels does anything cleanup the CFG again.
+ 
+ 2017-06-29  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	PR tree-optimization/81196
+ 	* tree-ssa-loop-niter.c (number_of_iterations_cond): Handle loop
+ 	exit condition comparing two IVs.
+ 
+ 2017-06-29  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config/arm/parsecpu.awk (gen_comm_data): Add initializer for
+ 	profile to the dummy entry at the end of the list of architectures.
+ 	* config/arm/arm-cpu-cdata.h: Regenerated.
+ 
+ 2017-06-29  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 	    Michael Collison <michael.collison@arm.com>
+ 
+ 	PR target/70119
+ 	* config/aarch64/aarch64.md (*aarch64_<optab>_reg_<mode>3_mask1):
+ 	New pattern.
+ 	(*aarch64_reg_<mode>3_neg_mask2): New pattern.
+ 	(*aarch64_reg_<mode>3_minus_mask): New pattern.
+ 	(*aarch64_<optab>_reg_di3_mask2): New pattern.
+ 	* config/aarch64/aarch64.c (aarch64_rtx_costs): Account for cost
+ 	of shift when the shift amount is masked with constant equal to
+ 	the size of the mode.
+ 	* config/aarch64/predicates.md (subreg_lowpart_operator): New
+ 	predicate.
+ 
+ 2017-06-29  Martin Liska  <mliska@suse.cz>
+ 
+ 	* config/i386/i386.opt: Change range from [1,5] to [0,5].
+ 
+ 2017-06-29  Yury Gribov  <tetra2005@gmail.com>
+ 
+ 	PR bootstrap/80565
+ 	* ipa-cp.c (allocate_and_init_ipcp_value): Add initialization
+ 	code.
+ 	* ipa-inline.h
+ 	(edge_growth_cache_entry::edge_growth_cache_entry): New
+ 	function.
+ 	(reset_edge_growth_cache): Update to use constructor.
+ 
+ 2017-06-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
+ 
+ 	* config/aarch64/aarch64.h (AARCH64_EXPAND_ALIGNMENT): New.
+ 	(DATA_ALIGNMENT): Update to use AARCH64_EXPAND_ALIGNMENT.
+ 	(LOCAL_ALIGNMENT): Update to use AARCH64_EXPAND_ALIGNMENT.
+ 
+ 2017-06-28  Sebastian Peryt  <sebastian.peryt@intel.com>
+ 
+ 	* config/i386/avx512vlintrin.h (_mm256_permutexvar_epi64)
+ 	(_mm256_permutexvar_epi32, _mm256_permutex_epi64): New intrinsics.
+ 
+ 2017-06-28  Szabolcs Nagy  <szabolcs.nagy@arm.com>
+ 
+ 	* config.gcc (*-linux-musl*): Add t-musl tmake_file.
+ 	(*-linux-uclibc*): Add t-uclibc tmake_file.
+ 	* config/t-musl: New.
+ 	* config/t-uclibc: New.
+ 
+ 2017-06-28  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config/arm/parsecpu.awk (profile): Parse new keyword in an arch
+ 	context.
+ 	(gen_comm_data): Emit architectural setting of arch_prof.
+ 	* config/arm/arm-cpus.in (armv6-m, armv6s-m, armv7-a, armv7ve): Set the
+ 	profile.
+ 	(armv7-r, armv7-m, armv7e-m, armv8-a, armv8.1-a, armv8.2-a): Likewise.
+ 	(armv8-m.base, armv8-m.main): Likewise.
+ 	* arm-protos.h (arm_build_target): Add profile field.
+ 	(arch_option): Likewise.
+ 	* config/arm/arm.c (arm_configure_build_target): Copy the profile to
+ 	the active target.
+ 	* config/arm/arm.h (TARGET_ARM_ARCH_PROFILE): Use
+ 	arm_active_target.profile.
+ 
+ 2017-06-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/81227
+ 	* fold-const.c (negate_expr_p): Use TYPE_UNSIGNED, not
+ 	TYPE_OVERFLOW_WRAPS.
+ 	* match.pd (negate_expr_p): Likewise.
+ 	* tree-ssa-reassoc.c (optimize_range_tests_diff): Use
+ 	fold_build2, not fold_binary.
+ 
+ 2017-06-28  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	* config/aarch64/aarch64 (aarch64_expand_mov_immediate):
+ 	Convert memory address to Pmode.
+ 	(aarch64_print_operand): Assert MEM operands are always Pmode.
+ 
+ 2017-06-28  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	PR target/79665
+ 	* config/arm/aarch-common.c (arm_no_early_alu_shift_dep):
+ 	Remove redundant if.
+ 	(aarch_forward_to_shift_is_not_shifted_reg): Remove.
+ 	* config/arm/aarch-common-protos.h
+ 	(aarch_forward_to_shift_is_not_shifted_re): Remove.
+ 	* config/arm/cortex-a53.md: Use arm_no_early_alu_shift_dep in bypass.
+ 
+ 2017-06-28  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	PR ipa/81238
+ 	* multiple_target.c (create_dispatcher_calls): Set the default
+ 	clone to be static, not public.
+ 
+ 2017-06-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-loop.c (vectorizable_reduction): Move special
+ 	cond reduction IV var creation ...
+ 	(vect_create_epilog_for_reduction): ... here.  Remove induction_index
+ 	parameter.  Use STMT_VINFO_VECTYPE.
+ 	* tree-vect-slp.c (vect_get_constant_vectors): Properly reset
+ 	constant_p.
+ 
+ 2017-06-28  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR ipa/81128
+ 	* ipa-visibility.c (non_local_p): Handle visibility.
+ 
+ 2017-06-28  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR driver/79659
+ 	* common.opt: Add IntegerRange to various options.
+ 	* opt-functions.awk (integer_range_info): New function.
+ 	* optc-gen.awk: Add integer_range_info to cl_options struct.
+ 	* opts-common.c (decode_cmdline_option): Handle
+ 	CL_ERR_INT_RANGE_ARG.
+ 	(cmdline_handle_error): Likewise.
+ 	* opts.c (print_filtered_help): Show valid interval in
+ 	when --help is provided.
+ 	* opts.h (struct cl_option): Add range_min and range_max fields.
+ 	* config/i386/i386.opt: Add IntegerRange for -mbranch-cost.
+ 
+ 2017-06-28  Marc Glisse  <marc.glisse@inria.fr>
+ 
+ 	* match.pd ((X & ~Y) | (~X & Y)): Generalize to + and ^.
+ 	(x * C EQ/NE y * C): New transformation.
+ 
+ 2017-06-28  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	* genmultilib (combination_space): Accept '+' in option names.
+ 
+ 2017-06-28  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR sanitizer/81224
+ 	* asan.c (instrument_derefs): Bail out inner references
+ 	that are hard register variables.
+ 
+ 2017-06-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/81175
+ 	* config/i386/i386.c (ix86_init_mmx_sse_builtins): Use def_builtin
+ 	rather than def_builtin_pure for __builtin_ia32_gatherpf*.
+ 
+ 2017-06-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vectorizer.h (vect_get_vec_defs): Remove.
+ 	(vect_get_slp_defs): Adjust.
+ 	* tree-vect-loop.c (get_initial_defs_for_reduction): Split
+ 	out from ...
+ 	* tree-vect-slp.c (vect_get_constant_vectors): ... here and
+ 	simplify.
+ 	* tree-vect-loop.c (vect_create_epilog_for_reduction): Use
+ 	get_initial_defs_for_reduction instead of vect_get_vec_defs.
+ 	(vectorizable_reduction): Adjust.
+ 	* tree-vect-slp.c (vect_get_constant_vectors): Remove reduction
+ 	handling.
+ 	(vect_get_slp_defs): Likewise.
+ 	* tree-vect-stmts.c (vect_get_vec_defs): Make static and adjust.
+ 	(vectorizable_bswap): Adjust.
+ 	(vectorizable_call): Likewise.
+ 	(vectorizable_conversion): Likewise.
+ 	(vectorizable_assignment): Likewise.
+ 	(vectorizable_shift): Likewise.
+ 	(vectorizable_operation): Likewise.
+ 	(vectorizable_store): Likewise.
+ 	(vectorizable_condition): Likewise.
+ 	(vectorizable_comparison): Likewise.
+ 
+ 2017-06-28  Michael Collison  <michael.collison@arm.com>
+ 
+ 	PR target/68535
+ 	* config/arm/arm.c (gen_ldm_seq): Remove last unnecessary
+ 	set of base_reg
+ 	(arm_gen_movmemqi): Removed unused variable 'i'.
+ 	Convert 'for' loop into 'while' loop.
+ 	(arm_expand_prologue): Remove last unnecessary set of insn.
+ 	(thumb_pop): Remove unused variable 'pushed_words'.
+ 	(thumb_exit): Remove last unnecessary set of regs_to_pop.
+ 
+ 2017-06-28  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	* config/s390/predicates.md: Use s390_rel_address_ok_p.
+ 	* config/s390/s390-protos.h: Add prototype of
+ 	s390_rel_address_ok_p.
+ 	* config/s390/s390.c (s390_got_symbol): New function.
+ 	(s390_rel_address_ok_p): New function.
+ 	(legitimize_pic_address): Use s390_rel_address_ok_p.
+ 	(s390_load_got): Use s390_got_symbol.
+ 	(s390_option_override): Issue error if
+ 	-mno-pic-data-is-text-relative is used without -fpic/-fPIC.
+ 	* config/s390/s390.h (TARGET_DEFAULT_PIC_DATA_IS_TEXT_RELATIVE):
+ 	New macro.
+ 	* config/s390/s390.opt: New option mpic-data-is-text-relative.
+ 
+ 2017-06-27  Andrew Pinski  <apinski@cavium.com>
+ 
+ 	* match.pd (X >/>=/</<= 0 ? 1.0 : -1.0): New patterns.
+ 	(X * copysign (1.0, X)): New pattern.
+ 	(X * copysign (1.0, -X)): New pattern.
+ 	(copysign (-1.0, CST)): New pattern.
+ 
+ 2017-06-27  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	* genmultilib (combination_space): Remove variable.
+ 	Validate reuse rules against regular expression for any sequence
+ 	of multilib options in any order.
+ 
+ 2017-06-27  Michael Collison  <michael.collison@arm.com>
+ 
+ 	* config/aarch64/aarch64-simd.md (aarch64_combine<mode>): Directly
+ 	call aarch64_split_simd_combine.
+ 	* (aarch64_combine_internal<mode>): Delete pattern.
+ 	* config/aarch64/aarch64.c (aarch64_split_simd_combine):
+ 	Allow register and subreg operands.
+ 
+ 2017-06-27  Jerome Lambourg  <lambourg@adacore.com>
+ 
+ 	* config/i386/vxworks.h (ASM_SPEC): Remove definition. No target
+ 	specific need, just fallback on defaults.
+ 	(ASM_OUTPUT_ALIGNED_BSS): Add #undef before #define.
+ 
+ 2017-06-27  Jerome Lambourg  <lambourg@adacore.com>
+ 	    Olivier Hainque  <hainque@adacore.com>
+ 
+ 	* config/i386/vxworks.h (DBX_REGISTER_NUMBER): Pick distinct
+ 	map for 64bits.
+ 	(TARGET_OS_CPP_BUILTINS): builtin_define CPU to X86_64 for 64bit
+ 	targets. Pick a default if no particular attempt applied.
+ 	(STACK_CHECK_PROTECT): Double for 64bit targets, which have
+ 	larger contexts.
+ 
+ 2017-06-27  Jerome Lambourg  <lambourg@adacore.com>
+ 
+ 	* config.gcc (i*86-wrs-vxworks7): Handle new acceptable triplet.
+ 	(x86_64-wrs-vxworks7): Likewise.
+ 
+ 2017-06-27  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR sanitizer/81223
+ 	* ubsan.c (instrument_null): Check get_base_address's result for null.
+ 
+ 2017-06-27  Marc Glisse  <marc.glisse@inria.fr>
+ 
+ 	* match.pd ((A+-B)+(C-A), (A+B)-(A-C)): New transformations.
+ 
+ 2017-06-27  Marc Glisse  <marc.glisse@inria.fr>
+ 
+ 	* builtin-types.def (BT_FENV_T_PTR, BT_CONST_FENV_T_PTR,
+ 	BT_FEXCEPT_T_PTR, BT_CONST_FEXCEPT_T_PTR): New primitive types.
+ 	(BT_FN_INT_FENV_T_PTR, BT_FN_INT_CONST_FENV_T_PTR,
+ 	BT_FN_INT_FEXCEPT_T_PTR_INT, BT_FN_INT_CONST_FEXCEPT_T_PTR_INT):
+ 	New function types.
+ 	* builtins.def (BUILT_IN_FECLEAREXCEPT, BUILT_IN_FEGETENV,
+ 	BUILT_IN_FEGETEXCEPTFLAG, BUILT_IN_FEGETROUND,
+ 	BUILT_IN_FEHOLDEXCEPT, BUILT_IN_FERAISEEXCEPT,
+ 	BUILT_IN_FESETENV, BUILT_IN_FESETEXCEPTFLAG,
+ 	BUILT_IN_FESETROUND, BUILT_IN_FETESTEXCEPT,
+ 	BUILT_IN_FEUPDATEENV): New builtins.
+ 	* tree-core.h (TI_FENV_T_PTR_TYPE, TI_CONST_FENV_T_PTR_TYPE,
+ 	TI_FEXCEPT_T_PTR_TYPE, TI_CONST_FEXCEPT_T_PTR_TYPE): New entries.
+ 	* tree.h (fenv_t_ptr_type_node, const_fenv_t_ptr_type_node,
+ 	fexcept_t_ptr_type_node, const_fexcept_t_ptr_type_node): New
+ 	macros.
+ 	(builtin_structptr_types): Adjust size.
+ 	* tree.c (builtin_structptr_types): Add four entries.
+ 
+ 2017-06-27  Jerome Lambourg  <lambourg@adacore.com>
+ 	    Olivier Hainque  <hainque@adacore.com>
+ 
+ 	* config/vxworks.h (VXWORKS_LIB_SPEC): Incorporate ...
+ 	(TLS_SYM): New local macro, forcing reference to __tls__ on
+ 	link command lines for VxWorks 7 RTPs, triggering initialization
+ 	of tlsLib.
+ 	(VXWORKS_HAVE_TLS): New macro. State whether the target VxWorks
+ 	OS features TLS support, true for RTPs on VxWorks 7.
+ 	* config/vxworks.c (vxworks_override_options): Setup emutls
+ 	accordingly.
+ 
+ 2017-06-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* predict.c (test_prediction_value_range): Use -1U instead of -1
+ 	to avoid narrowing conversion warning.
+ 	* dumpfile.c (dump_options): Wrap all value into dump_flags_t cast
+ 	to avoid narrowing conversion warning.
+ 	* opt-functions.awk (var_ref): Return (unsigned short) -1 instead of
+ 	-1.
+ 	* optc-gen.awk (END): Expect (unsigned short) -1 instead of -1.
+ 
+ 2017-06-27  Jerome Lambourg  <lambourg@adacore.com>
+ 
+ 	* config/vxworks.h (VXWORKS_LIBS_RTP): Alternative definition for
+ 	64bit configurations.
+ 	(PTR_DIFF_TYPE): Alternative definition for TARGET_LP64.
+ 	(SIZE_TYPE): Likewise.
+ 	* config/vxworks.c (vxworks_emutls_var_fields): Use
+ 	long_unsigned_type_node instead of unsigned_type_node as the offset
+ 	field type, which is "pointer" mode in emutls.c.
+ 
+ 2017-06-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/81209
+ 	* ubsan.c (ubsan_encode_value): Initialize DECL_CONTEXT on var.
+ 
+ 	PR middle-end/81207
+ 	* gimple-fold.c (replace_call_with_call_and_fold): Handle
+ 	gimple_vuse copying separately from gimple_vdef copying.
+ 
+ 2017-06-27  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
+ 
+ 	* value-prof.c (free_hist): Remove call to memset and the enclosing if
+ 	condition.
+ 
+ 2017-06-26  Jerome Lambourg  <lambourg@adacore.com>
+ 	    Olivier Hainque  <hainque@adacore.com>
+ 
+ 	* config.gcc (*-*-vxworks*): Add TARGET_VXWORKS7=1 to tm_defines
+ 	for all vxworks7 targets.
+ 	* config/vxworks.h (TARGET_VXWORKS7): If not defined, define to 0.
+ 	(VXWORKS_ADDITIONAL_CPP_SPEC): Alternative definition for VXWORKS7.
+ 	(VXWORKS_LIBS_RTP, VXWORKS_LIBS_RTP_DIR): New macros, allowing
+ 	variations for VX6/VX7 and 32/64bits later on in ...
+ 	(VXWORKS_LIB_SPEC): Leverage new macros.
+ 	(VXWORKS_OS_CPP_BUILTINS): Define _VSB_CONFIG_FILE for VXWORKS7,
+ 	as well as _ALLOW_KEYWORD_MACROS when "inline" is not a keyword.
+ 
+ 2017-06-26  Jerome Lambourg  <lambourg@adacore.com>
+ 
+ 	* config/vxworks.h (VXWORKS_OS_CPP_BUILTINS): builtin_define
+ 	_VX_TOOL_FAMILY and _VX_TOOL to gnu.
+ 
+ 2017-06-26  Carl Love  <cel@us.ibm.com>
+ 
+ 	* config/rs6000/rs6000-c.c: Add support for built-in functions
+ 	vector bool char vec_reve (vector bool char);
+ 	vector signed char vec_reve (vector signed char);
+ 	vector unsigned char vec_reve (vector unsigned char);
+ 	vector bool int vec_reve (vector bool int);
+ 	vector signed int vec_reve (vector signed int);
+ 	vector unsigned int vec_reve (vector unsigned int);
+ 	vector bool long long vec_reve (vector bool long long);
+ 	vector signed long long vec_reve (vector signed long long);
+ 	vector unsigned long long vec_reve (vector unsigned long long);
+ 	vector bool short vec_reve (vector bool short);
+ 	vector signed short vec_reve (vector signed short);
+ 	vector double vec_reve (vector double);
+ 	vector float vec_reve (vector float);
+ 	* config/rs6000/rs6000-builtin.def (VREVE_V2DI, VREVE_V4SI,
+ 	VREVE_V8HI, VREVE_V16QI, VREVE_V2DF, VREVE_V4SF, VREVE): New builtin.
+ 	* config/rs6000/altivec.md (UNSPEC_VREVEV): New UNSPEC.
+ 	(altivec_vreve): New pattern.
+ 	* config/rs6000/altivec.h (vec_reve): New define.
+ 	* doc/extend.texi (vec_rev): Update the built-in documentation file
+ 	for the new built-in functions.
+ 
+ 2016-06-26  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	PR tree-optimization/71815
+ 	* gimple-ssa-strength-reduction.c (uses_consumed_by_stmt): New
+ 	function.
+ 	(find_basis_for_candidate): Call uses_consumed_by_stmt rather than
+ 	has_single_use.
+ 	(slsr_process_phi): Likewise.
+ 	(replace_uncond_cands_and_profitable_phis): Don't replace a
+ 	multiply candidate with a stride of 1 (copy or cast).
+ 	(phi_incr_cost): Call uses_consumed_by_stmt rather than
+ 	has_single_use.
+ 	(lowest_cost_path): Likewise.
+ 	(total_savings): Likewise.
+ 
+ 2017-06-26  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR target/81175
+ 	* config/i386/i386.c (ix86_init_mmx_sse_builtins):
+ 	Use def_builtin_pure for all gather builtins.
+ 
+ 2017-06-26  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/81203
+ 	* tree-tailcall.c (find_tail_calls): Do not move stmts into
+ 	non-dominating BBs.
+ 
+ 2017-06-26  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c/80116
+ 	* doc/invoke.texi: Document -Wmultistatement-macros.
+ 
+ 2017-06-26  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	* doc/sourcebuild.texi (ARM-specific attributes): Document new
+ 	arm_neon_ok_no_float_abi effective target.
+ 
+ 2017-06-26  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/80928
+ 	* cfghooks.c (duplicate_block): Do not copy BB_DUPLICATED flag.
+ 	(copy_bbs): Set BB_DUPLICATED flag early.
+ 	(execute_on_growing_pred): Do not execute for BB_DUPLICATED
+ 	marked blocks.
+ 	(execute_on_shrinking_pred): Likewise.
+ 	* tree-ssa.c (ssa_redirect_edge): Do not look for PHI args in
+ 	BB_DUPLICATED blocks.
+ 	* tree-ssa-phionlycoprop.c (eliminate_degenerate_phis_1): Properly
+ 	iterate over all PHIs considering removal of *gsi.
+ 
+ 2017-06-23  Jim Wilson  <jim.wilson@linaro.org>
+ 
+ 	* doc/invoke.texi (AArch64 Options, -mtune): Re-add falkor and
+ 	qdf24xx.
+ 
+ 2017-06-23  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
+ 
+ 	* config/rs6000/rs6000-string.c: (expand_block_clear,
+ 	do_load_for_compare, select_block_compare_mode,
+ 	compute_current_alignment, expand_block_compare,
+ 	expand_strncmp_align_check, expand_strn_compare,
+ 	expand_block_move, rs6000_output_load_multiple)
+ 	Move functions related to string/block move/compare
+ 	to a separate file.
+ 	* config/rs6000/rs6000.c: Move above functions to rs6000-string.c.
+ 	* config/rs6000/rs6000-protos.h (rs6000_emit_dot_insn): Add prototype
+ 	for this function which is now used in two files.
+ 	* config/rs6000/t-rs6000: Add rule to compile rs6000-string.o.
+ 	* config.gcc: Add rs6000-string.o to extra_objs for
+ 	targets powerpc*-*-* and rs6000*-*-*.
+ 
+ 2017-06-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	PR target/80510
+ 	* config/rs6000/rs6000.md (ALTIVEC_DFORM): Do not allow DImode in
+ 	32-bit, since indexed is not valid for DImode.
+ 	(mov<mode>_hardfloat32): Reorder ISA 2.07 load/stores before ISA
+ 	3.0 d-form load/stores to be the same as mov<mode>_hardfloat64.
+ 	(define_peephole2 for Altivec d-form load): Add 32-bit support.
+ 	(define_peephole2 for Altivec d-form store): Likewise.
+ 
+ 	PR ipa/81185
+ 	* multiple_target.c (create_dispatcher_calls): Only create the
+ 	dispatcher call if the function is the default clone of a
+ 	versioned function.
+ 
+ 2017-06-23  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR middle-end/80902
+ 	* builtins.c (expand_builtin_atomic_fetch_op): If emitting code after
+ 	a call, force the call to not be a tail call.
+ 
+ 2017-06-23  Jeff Law  <law@redhat.com>
+ 
+ 	* doc/contrib.texi: Add entry for Steven Pemberton's work on
+ 	enquire.
+ 
+ 2017-06-23  Will Schmidt  <will_schmidt@vnet.ibm.com>
+ 
+ 	* config/rs6000/rs6000.c: Add include of ssa-propagate.h for
+ 	update_call_from_tree().  (rs6000_gimple_fold_builtin): Add
+ 	handling for early expansion of vector shifts (sl,sr,sra,rl).
+ 	(builtin_function_type): Add vector shift right instructions
+ 	to the unsigned argument list.
+ 
+ 2017-06-23  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+ 
+ 	rtl-optimizatoin/79286
+ 	* ira.c (update_equiv_regs): Revert to using may_trap_or_fault_p again.
+ 	* rtlanal.c (rtx_addr_can_trap_p_1): SYMBOL_REF_FUNCTION_P can never
+ 	trap.  PIC register plus a const unspec without offset can never trap.
+ 
+ 2017-06-23  Marc Glisse  <marc.glisse@inria.fr>
+ 
+ 	* tree.h (builtin_structptr_type): New type.
+ 	(builtin_structptr_types): Declare new array.
+ 	* tree.c (builtin_structptr_types): New array.
+ 	(free_lang_data, build_common_tree_nodes): Use it.
+ 
+ 2017-06-23  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR c++/81187
+ 	* doc/invoke.texi (-Wnoexcept-type): Fix name of option, from
+ 	-Wnoexcept.
+ 
+ 2017-06-22  Matt Turner  <mattst88@gmail.com>
+ 
+ 	* config/i386/driver-i386.c (host_detect_local_cpu): Add Kaby
+ 	Lake models to skylake case.  Assume skylake for unknown
+ 	models with clflushopt.
+ 
+ 2017-06-22  Jeff Law  <law@redhat.com>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_emit_probe_stack_range): Handle
+ 	frame sizes that do not satisfy aarch64_uimm12_shift.
+ 
+ 2017-06-22  Jan Hubicka <hubicka@ucw.cz>
+ 
+ 	* profile-count.h (apply_probability,
+ 	apply_scale, probability_in): Fix checks for zero.
+ 
+ 2017-06-22  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	* incpath.c (add_sysroot_to_chain): Allow for $SYSROOT prefix.
+ 	* doc/cppdiropts.texi (-I @var{dir}): Document it.
+ 
+ 2016-06-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-loop.c (vect_model_reduction_cost): Handle
+ 	COND_REDUCTION and INTEGER_INDUC_COND_REDUCTION without
+ 	REDUC_MAX_EXPR support.
+ 	(vectorizable_reduction): Likewise.
+ 	(vect_create_epilog_for_reduction): Likewise.
+ 
+ 2017-06-22  James Greenhalgh  <james.greenhalgh@arm.com>
+ 
+ 	* match.pd (A / (1 << B) -> A >> B): New.
+ 	* generic-match-head.c: Include optabs-tree.h.
+ 	* gimple-match-head.c: Likewise.
+ 	* optabs-tree.h (target_supports_op_p): New.
+ 	* optabs-tree.c (target_supports_op_p): New.
+ 
+ 2017-06-22  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	* configure.ac (gcc_cv_ld_static_dynamic): Also check stderr for
+ 	$gcc_cv_ld --help output.
+ 	(gcc_cv_ld_demangle): Likewise.
+ 	(gcc_cv_ld_eh_frame_hdr): Likewise.
+ 	(gcc_cv_ld_pie): Likewise.
+ 	(gcc_cv_ld_as_needed): Likewise.  Prefer native forms unless $gnu_ld.
+ 	(gcc_cv_ld_buildid): Likewise.
+ 	(gcc_cv_ld_sysroot): Likewise.
+ 	(ld_bndplt_support): Likewise.
+ 	(ld_pushpopstate_support): Likewise.
+ 	* configure: Regenerate.
+ 	* config/sol2.h [!USE_GLD] (SYSROOT_SPEC): Define.
+ 
+ 2017-06-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/81151
+ 	* config/i386/sse.md (round<mode>2): Renumber match_dup and
+ 	operands indexes to avoid gap between operands and match_dups.
+ 
+ 2017-06-21  Andrew Pinski  <apinski@cavium.com>
+ 
+ 	* config/aarch64/aarch64-cost-tables.h (thunderx_extra_costs):
+ 	Increment Arith_shift and Arith_shift_reg by 1.
+ 	* config/aarch64/aarch64-tuning-flags.def (cheap_shift_extend):
+ 	New tuning flag.
+ 	* config/aarch64/aarch64.c (thunderx_tunings): Enable
+ 	AARCH64_EXTRA_TUNE_CHEAP_SHIFT_EXTEND.
+ 	(aarch64_strip_extend): Add new argument and test for it.
+ 	(aarch64_cheap_mult_shift_p): New function.
+ 	(aarch64_rtx_mult_cost): Call aarch64_cheap_mult_shift_p and don't
+ 	add a cost if it is true.
+ 	Update calls to aarch64_strip_extend.
+ 	(aarch64_rtx_costs): Update calls to aarch64_strip_extend.
+ 
+ 2017-06-21  Andrew Pinski  <apinski@cavium.com>
+ 
+ 	* config/aarch64/aarch64-cores.def (thunderxt88p1): Use thunderxt88
+ 	tunings.
+ 	(thunderxt88): Likewise.
+ 	* config/aarch64/aarch64.c (thunderxt88_prefetch_tune): New variable.
+ 	(thunderx_prefetch_tune): New variable.
+ 	(thunderx2t99_prefetch_tune): Update for the correct values.
+ 	(thunderxt88_tunings): New variable.
+ 	(thunderx_tunings): Use thunderx_prefetch_tune instead of
+ 	generic_prefetch_tune.
+ 	(thunderx2t99_tunings): Use AUTOPREFETCHER_WEAK.
+ 
+ 2017-06-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* config/aarch64/atomics.md (aarch64_compare_and_swap<mode>_lse,
+ 	SHORT): Relax operand 3 to aarch64_reg_or_zero and constraint to Z.
+ 	(aarch64_compare_and_swap<mode>_lse, GPI): Likewise.
+ 	(aarch64_atomic_cas<mode>, SHORT): Likewise for operand 2.
+ 	(aarch64_atomic_cas<mode>, GPI): Likewise.
+ 
+ 2017-06-21  Martin Liska  <mliska@suse.cz>
+ 
+ 	* gimplify.c (gimplify_label_expr): Insert GIMPLE_PREDICT
+ 	statements on cold and hot labels.
+ 	* predict.c (tree_estimate_probability_bb): Remove the
+ 	prediction from this place.
+ 
+ 2017-06-21  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR tree-optimization/79489
+ 	* gimplify.c (maybe_add_early_return_predict_stmt): New
+ 	function.
+ 	(gimplify_return_expr): Call the function.
+ 	* predict.c (tree_estimate_probability_bb): Remove handling
+ 	of early return.
+ 	* predict.def: Update comment about early return predictor.
+ 	* gimple-predict.h (is_gimple_predict): New function.
+ 	* predict.def: Change default value of early return to 66.
+ 	* tree-tailcall.c (find_tail_calls): Skip GIMPLE_PREDICT
+ 	statements.
+ 	* passes.def: Put pass_strip_predict_hints to the beginning of
+ 	IPA passes.
+ 
+ 2017-06-21  Pierre-Marie de Rodat  <derodat@adacore.com>
+ 
+ 	* dwarf2out.c (gen_decl_die): Remove the guard to skip file-scope
+ 	FUNCTION_DECL declarations.
+ 	(dwarf2out_early_global_decl): Remove the guard to skip FUNCTION_DECL
+ 	declarations.
+ 	(dwaf2out_decl): Likewise.
+ 	* godump.c (go_early_global_decl): Skip call to the real debug hook
+ 	for FUNCTION_DECL declarations.
+ 	* passes.c (rest_of_decl_compilation): Skip call to the
+ 	early_global_decl debug hook for FUNCTION_DECL declarations, unless
+ 	-fdump-go-spec is passed.
+ 
+ 2017-06-21  Marc Glisse  <marc.glisse@inria.fr>
+ 
+ 	* config/i386/i386.c (struct builtin_isa): New field pure_p.
+ 	Reorder for compactness.
+ 	(def_builtin, def_builtin2, ix86_add_new_builtins): Handle pure_p.
+ 	(def_builtin_pure, def_builtin_pure2): New functions.
+ 	(ix86_init_mmx_sse_builtins) [__builtin_ia32_stmxcsr]: Mark as pure.
+ 
+ 2017-06-21  Marc Glisse  <marc.glisse@inria.fr>
+ 
+ 	* match.pd (nop_convert): New predicate.
+ 	((A +- CST1) +- CST2): Allow some NOP conversions.
+ 
+ 2017-06-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/81130
+ 	* gimplify.c (omp_add_variable): Don't force GOVD_SEEN for types
+ 	with ctors/dtors if GOVD_SHARED is set.
+ 
+ 2017-06-21  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	* config/aarch64/aarch64.md (movti_aarch64):
+ 	Emit mov rather than orr.
+ 	(movtf_aarch64): Likewise.
+ 	* config/aarch64/aarch64-simd.md (aarch64_simd_mov):
+ 	Emit mov rather than orr.
+ 
+ 2017-06-21  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	* config/aarch64/aarch64-simd.md (aarch64_simd_dup):
+ 	Swap alternatives, make integer dup more expensive.
+ 
+ 2017-06-21  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_legitimate_constant_p):
+ 	Return true for non-tls symbols.
+ 
+ 2017-06-21  James Greenhalgh  <james.greenhalgh@arm.com>
+ 
+ 	* config/aarch64/aarch64-cores.def (cortex-a55): New.
+ 	(cortex-a75): Likewise.
+ 	(cortex-a75.cortex-a55): Likewise.
+ 	* config/aarch64/aarch64-tune.md: Regenerate.
+ 	* doc/invoke.texi (-mtune): Document new values for -mtune.
+ 
+ 2017-06-21  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	* doc/sourcebuild.texi (Add Options, Features for dg-add-options): Add
+ 	stack_size feature.
+ 	(Effective-Target Keywords, Other attributes): Suggest using
+ 	dg-add-options stack_size feature to get stack limit in stack_size
+ 	effective target documentation.
+ 
+ 2017-06-21  Julian Brown  <julian@codesourcery.com>
+ 	    Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
+ 
+ 	* config/aarch64/aarch64-simd.md (aarch64_crypto_pmulldi)
+ 	(aarch64_crypto_pmullv2di): Change type attribute to crypto_pmull.
+ 	* config/aarch64/thunderx2t99.md (thunderx2t99_pmull): New
+ 	reservation.
+ 	* config/arm/cortex-a53.md (cortex_a53_advsimd_type): Add crypto_pmull to
+ 	attribute type list for neon_multiply.
+ 	* config/arm/cortex-a57.md (cortex_a57_neon_type): Add crypto_pmull to
+ 	attribute type list for neon_multiply.
+ 	* config/arm/crypto.md (crypto_vmullp64): Change type to crypto_pmull.
+ 	* config/arm/exynos-m1.md (exynos_m1_neon_type): Add crypto_pmull to
+ 	attribute type list for neon_multiply.
+ 	* config/arm/types.md (crypto_pmull): Add.
+ 	* config/arm/xgene1.md (xgene1_neon_pmull): Add crypto_pmull to
+ 	attribute type list.
+ 
+ 2017-06-20  Andreas Tobler  <andreast@gcc.gnu.org>
+ 
+ 	* config.gcc (armv6*-*-freebsd*): Change the target_cpu_cname to
+ 	arm1176jzf-s.
+ 
+ 2017-06-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* ira-costs.c (find_costs_and_classes): Initialize cost_classes later
+ 	to make sure not to dereference a NULL cost_classes_ptr pointer.
+ 
+ 2017-06-20  Carl Love  <cel@us.ibm.com>
+ 
+ 	* config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
+ 	ALTIVEC_BUILTIN_VMULESW, ALTIVEC_BUILTIN_VMULEUW,
+ 	ALTIVEC_BUILTIN_VMULOSW, ALTIVEC_BUILTIN_VMULOUW entries.
+ 	* config/rs6000/rs6000.c (rs6000_gimple_fold_builtin,
+ 	builtin_function_type): Add ALTIVEC_BUILTIN_* case statements.
+ 	* config/rs6000/altivec.md (MVULEUW, VMULESW, VMULOUW,
+ 	VMULOSW): New enum "unspec" values.
+ 	(vec_widen_umult_even_v4si, vec_widen_smult_even_v4si,
+ 	vec_widen_umult_odd_v4si, vec_widen_smult_odd_v4si,
+ 	altivec_vmuleuw, altivec_vmulesw, altivec_vmulouw,
+ 	altivec_vmulosw): New patterns.
+ 	* config/rs6000/rs6000-builtin.def (VMLEUW, VMULESW, VMULOUW,
+ 	VMULOSW): Add definitions.
+ 
+ 2017-06-20  Julia Koval  <julia.koval@intel.com>
+ 
+ 	* config/i386/i386.c: Fix rounding expand for new pattern.
+ 	* config/i386/subst.md: Fix pattern (parallel -> unspec).
+ 
+ 2017-06-20  James Greenhalgh  <james.greenhalgh@arm.com>
+ 
+ 	* config/aarch64/aarch64-option-extensions.def (rcpc): New.
+ 	* config/aarch64/aarch64.h (AARCH64_FL_RCPC): New.
+ 
+ 2017-06-20  James Greenhalgh  <james.greenhalgh@arm.com>
+ 
+ 	* config/aarch64/aarch64-option-extensions.def (fp16): Fix expected
+ 	feature string.
+ 
+ 2017-06-20  James Greenhalgh  <james.greenhalgh@arm.com>
+ 
+ 	* config/aarch64/aarch64-cores.def: Rearrange to sort by
+ 	architecture, then by implementer ID.
+ 	* config/aarch64/aarch64-tune.md: Regenerate.
+ 
+ 2017-06-20  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/81097
+ 	* fold-const.c (split_tree): Fold to type before negating.
+ 
+ 2017-06-20  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* diagnostic-show-locus.c
+ 	(selftest::test_fixit_deletion_affecting_newline): New function.
+ 	(selftest::diagnostic_show_locus_c_tests): Call it.
+ 
+ 2017-06-20  Andreas Schwab  <schwab@suse.de>
+ 
+ 	PR target/80970
+ 	* config/m68k/m68k.md (bsetdreg, bchgdreg, bclrdreg): Use "=d"
+ 	instead of "+d".
+ 
+ 2017-06-20  Prakhar Bahuguna  <prakhar.bahuguna@arm.com>
+ 
+ 	* config/arm/arm-c.c (arm_cpu_builtins): New block to define
+ 	__ARM_FEATURE_COPROC according to support.
+ 
+ 2017-06-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* tree-chkp.c (chkp_get_hard_register_var_fake_base_address):
+ 	Rewritten to avoid overflow for > 32-bit pointers.
+ 
+ 	PR sanitizer/81125
+ 	* ubsan.h (ubsan_encode_value): Workaround buggy clang++ parser
+ 	by removing enum keyword.
+ 	(ubsan_type_descriptor): Likewise.  Formatting fix.
+ 
+ 	PR target/81121
+ 	* config/i386/i386.md (TARGET_USE_VECTOR_CONVERTS float si->{sf,df}
+ 	splitter): Require TARGET_SSE2 in the condition.
+ 
+ 2017-06-20  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	PR target/79799
+ 	* config/rs6000/rs6000.c (rs6000_expand_vector_init): Add support
+ 	for doing vector set of SFmode on ISA 3.0.
+ 	* config/rs6000/vsx.md (vsx_set_v4sf_p9): Likewise.
+ 	(vsx_set_v4sf_p9_zero): Special case setting 0.0f to a V4SF
+ 	element.
+ 	(vsx_insert_extract_v4sf_p9): Add an optimization for inserting a
+ 	SFmode value into a V4SF variable that was extracted from another
+ 	V4SF variable without converting the element to double precision
+ 	and back to single precision vector format.
+ 	(vsx_insert_extract_v4sf_p9_2): Likewise.
+ 
+ 2017-06-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* tree-ssa-structalias.c (get_constraint_for_ptr_offset): Multiply
+ 	in UWHI to avoid undefined overflow.
+ 
+ 	PR sanitizer/81125
+ 	* ubsan.h (enum ubsan_encode_value_phase): New.
+ 	(ubsan_encode_value): Change second argument to
+ 	enum ubsan_encode_value_phase with default value of
+ 	UBSAN_ENCODE_VALUE_GENERIC.
+ 	* ubsan.c (ubsan_encode_value): Change second argument to
+ 	enum ubsan_encode_value_phase PHASE from bool IN_EXPAND_P,
+ 	adjust uses, for UBSAN_ENCODE_VALUE_GENERIC use just
+ 	create_tmp_var_raw instead of create_tmp_var and use a
+ 	TARGET_EXPR.
+ 	(ubsan_expand_bounds_ifn, ubsan_build_overflow_builtin,
+ 	instrument_bool_enum_load, ubsan_instrument_float_cast): Adjust
+ 	ubsan_encode_value callers.
+ 
+ 	PR sanitizer/81111
+ 	* ubsan.c (ubsan_encode_value): If current_function_decl is NULL,
+ 	use create_tmp_var_raw instead of create_tmp_var, mark it addressable
+ 	just by setting TREE_ADDRESSABLE on the result and use a TARGET_EXPR.
+ 
+ 2017-06-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/81118
+ 	* tree-cfgcleanup.c (cleanup_tree_cfg_noloop): Clear niter
+ 	estimates if we changed anything.
+ 
+ 2017-06-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/80887
+ 	* tree-ssa-sccvn.c (mprts_hook_cnt): New global.
+ 	(vn_lookup_simplify_result): Allow only mprts_hook_cnt succesful
+ 	simplified lookups, then reset mprts_hook.
+ 	(vn_nary_build_or_lookup_1): Set mprts_hook_cnt to 9 before
+ 	simplifying.
+ 	(try_to_simplify): Likewise.
+ 
+ 2017-06-19  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR sanitizer/80879
+ 	* gimplify.c (gimplify_switch_expr):
+ 	Initialize live_switch_vars for SWITCH_BODY == STATEMENT_LIST.
+ 
+ 2017-06-19  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/install.texi: Document that PGO runs in 4 stages.
+ 
+ 2017-06-19  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR ipa/80732
+ 	* attribs.c (make_dispatcher_decl): Do not append '.ifunc'
+ 	to dispatcher function name.
+ 	* multiple_target.c (replace_function_decl): New function.
+ 	(create_dispatcher_calls): Redirect both edges and references.
+ 
+ 2017-06-19  Jan Hubicka <hubicka@ucw.cz>
+ 
+ 	* profile-count.c (profile_count::dump): Dump quality.
+ 	(profile_count::differs_from_p): Update for unsigned val.
+ 	* profile-count.h (profile_count_quality): New enum.
+ 	(profile_count): Turn m_val to 62bit unsigned, add quality tracking.
+ 
+ 2017-06-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-loop-niter.h (estimate_numbers_of_iterations): Take
+ 	struct function as arg.
+ 	(estimate_numbers_of_iterations): Export overload with loop arg.
+ 	(free_numbers_of_iterations_estimates_loop): Use an overload of
+ 	free_numbers_of_iterations_estimates instead.
+ 	* tree-cfg.c (remove_bb): Adjust.
+ 	* tree-cfgcleanup.c (remove_forwarder_block_with_phi): Likewise.
+ 	* tree-parloops.c (gen_parallel_loop): Likewise.
+ 	* tree-ssa-loop-ivcanon.c (canonicalize_induction_variables):
+ 	Likewise.
+ 	(tree_unroll_loops_completely): Likewise.
+ 	* tree-ssa-loop-niter.c (estimate_numbers_of_iterations_loop):
+ 	Use an overload instead and export.
+ 	(estimated_loop_iterations): Adjust.
+ 	(max_loop_iterations): Likewise.
+ 	(likely_max_loop_iterations): Likewise.
+ 	(estimate_numbers_of_iterations): Take struct function as arg
+ 	and adjust.
+ 	(loop_exits_before_overflow): Adjust.
+ 	(free_numbers_of_iterations_estimates_loop): Use an overload.
+ 	* tree-vect-loop.c (vect_analyze_loop_form): Adjust.
+ 	* tree-vectorizer.c (vect_free_loop_info_assumptions): Likewise.
+ 
+ 2017-06-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR ipa/81112
+ 	* ipa-prop.c (find_constructor_constant_at_offset): Handle
+ 	RANGE_EXPR conservatively.
+ 
+ 2017-06-16  Carl Love  <cel@us.ibm.com>
+ 
+ 	* config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
+ 	definitions for vec_float, vec_float2, vec_floato,
+ 	vec_floate built-ins.
+ 	* config/rs6000/vsx.md (define_c_enum "unspec"): Add RTL code
+ 	for instructions vsx_xvcvsxws vsx_xvcvuxwsp, float2, floato and
+ 	floate.
+ 	* config/rs6000/rs6000-builtin.def (FLOAT2_V2DI, FLOATE_V2DF,
+ 	FLOATE_2DI, FLOATO_V2DF, FLOATEE_V2DI, XVCVSXWSP_V4SF,
+ 	UNS_FLOATO_V2DI, UNS_FLOATE_V2DI): Add definitions.
+ 	* config/altivec.md (define_insn "p8_vmrgew_<mode>",
+ 	define_mode_attr VF_sxddp): Add V4SF type to p8_vmrgew.
+ 	* config/rs6000/altivec.h (vec_float, vec_float2, vec_floate,
+ 	vec_floato): Add builtin defines.
+ 	* doc/extend.texi (vec_float, vec_float2, vec_floate, vec_floato):
+ 	Update the built-in documentation file for the new built-in
+ 	functions.
+ 
+ 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config/arm/arm.opt (marm): Mark as the negative of of -mthumb.
+ 	(mthumb): Mark as the negative of -marm.
+ 
+ 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* doc/invoke.texi (ARM Options, -mcpu): Document supported
+ 	extension options.
+ 	(ARM Options, -mtune): Document that this accepts the same
+ 	extension options as -mcpu.
+ 	(ARM Options, -mfpu): Document addition of -mfpu=auto.
+ 
+ 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* doc/invoke.texi (ARM Options, -march=): Document new syntax and
+ 	permitted extensions.
+ 
+ 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config/arm/arm-cpus.in (armv7): Add extension +nofp.
+ 	(armv7-r): Add aliases vfpv3xd and vfpv3-d16.
+ 	(armv8-m.main): Add option +nodsp.
+ 	* config/arm/arm-cpu-cdata.h: Regenerated.
+ 
+ 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config/arm/t-fuchsia: New file.
+ 	* config.gcc (arm*-*-fuchsia*): Use it.
+ 
+ 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config/arm/t-symbian: Rewrite for new option infrastructure.
+ 
+ 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config/arm/t-phoenix (MULTILIB_REUSE): Clear variable.
+ 	(MULTILIB_REQUIRED): Likewise.
+ 
+ 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config/arm/t-linux-eabi (MULTILIB_EXCEPTIONS): Set to empty.
+ 	(MULTILIB_RESUE): Likewise.
+ 	(MULTILIB_MATCHES): Likewise.
+ 	(MULTLIB_REQUIRED): Likewise.
+ 
+ 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config/arm/t-rtems: Rewrite for new option framework.
+ 
+ 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config/arm/t-aprofile (v7_a_nosimd_variants, v7_a_simd_variants)
+ 	(v7ve_nosimd_variatns, v7ve_vfpv3_simd_variants)
+ 	(v7ve_vfpv4_simd_variants, v8_a_nosimd_variants, v8_a_simd_variants)
+ 	(v8_1_a_simd_variants, v8_2_a_simd_variants): Move to ...
+ 	* config/arm/t-multilib: ... here.
+ 	(MULTILIB_OPTIONS): Add armv7 and armv7+fp architectures.
+ 	(MULTILIB_MATCHES): Use armv7 libraries for armv7-r.  Also use for
+ 	armv7-a and armv8*-a when A-profile libraries have not been built.
+ 	* config/arm/t-rmprofile: Rewrite.
+ 
+ 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* genmultilib (multilib_reuse): Allow an explicit period to be escaped
+ 	with a backslash.  Remove the backslash after substituting unescaped
+ 	periods.
+ 	* doc/fragments.texi (MULTILIB_REUSE): Document it.
+ 
+ 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config.gcc: (arm*-*-*): When building a-profile libraries, force
+ 	the driver to pass through the default setting of -mfloat-abi.
+ 	* common/config/arm/arm-common.c (arm_target_thumb_only): Return -marm
+ 	rather than NULL.
+ 	* config/arm/t-multilib (MULTILIB_REUSE): Initialize to empty.
+ 	(all_feat_combs): New rule.
+ 	(MULTILIB_OPTIONS): Use explicit ARM and Thumb directories.  Rework
+ 	default libraries.
+ 	* config/arm/t-aprofile: Rewrite.
+ 
+ 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config/arm/arm.h (FPUTYPE_AUTO): Define.
+ 	* config/arm/arm.c (arm_option_override): Use FPUTYPE_AUTO if the
+ 	fpu is not specified by the user/command-line.
+ 	* config/arm/bpabi.h (FPUTYPE_DEFAULT): Delete.
+ 	* config/arm/netbsd-elf.h (FPUTYPE_DEFAULT): Delete.
+ 	* config/arm/linux-elf.h (FPUTYPE_DEFAULT): Delete.
+ 	* config/arm/vxworks.h (FPUTYPE_DEFAULT): Delete.
+ 	* common/config/arm/arm-common.c (arm_canon_arch_option): Use
+ 	FPUTYPE_AUTO insted of FPUTYPE_DEFAULT.
+ 
+ 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config/arm/elf.h (MULTILIB_DEFAULTS): Delete.
+ 	* config/arm/t-arm-elf: Rewritten.
+ 
+ 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config/arm/arm.h (TARGET_HARD_FLOAT): Also check that we
+ 	have some floating-point instructions.
+ 	(TARGET_SOFT_FLOAT): Define as inverse of TARGET_HARD_FLOAT.
+ 	(TARGET_MAYBE_HARD_FLOAT): New macro.
+ 	* config/arm/arm-builtins.c (arm_init_builtins): Use
+ 	TARGET_MAYBE_HARD_FLOAT.
+ 	* config/arm/arm.c (arm_option_override): Use TARGET_HARD_FLOAT_ABI.
+ 
+ 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* common/config/arm/arm-common.c: Define INCLUDE_LIST.
+ 	(configargs.h): Include it.
+ 	(arm_print_hint_for_fpu_option): New function.
+ 	(arm_parse_fpu_option): New function.
+ 	(candidate_extension): New class.
+ 	(arm_canon_for_multilib): New function.
+ 	* config/arm/arm.h (CANON_ARCH_SPEC_FUNCTION): New macro.
+ 	(EXTRA_SPEC_FUNCTIONS): Add CANON_ARCH_SPEC_FUNCTION.
+ 	(ARCH_CANONICAL_SPECS): New macro.
+ 	(DRIVER_SELF_SPECS): Add ARCH_CANONICAL_SPECS.
+ 
+ 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config.gcc (arm*-*-*): Ensure both target_cpu_cname and with_cpu
+ 	are set after handling multilib fragments.  Set target_cpu_default2
+ 	from with_cpu.
+ 
+ 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config.gcc (arm*-*-fucshia*): Set target_cpu_cname to the real
+ 	cpu name.
+ 	(arm*-*-*): Set target_cpu_default2 to a quoted string.
+ 	* config/arm/parsecpu.awk (check_cpu): Validate any extension
+ 	options.
+ 	(check_arch): Likewise.
+ 	* config/arm/arm.c (arm_configure_build_target): Handle
+ 	TARGET_CPU_DEFAULT being a string constant.  Scan any feature
+ 	options in the default.
+ 
+ 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config/arm/arm-protos.h (cpu_arch_extension): Add field to record
+ 	when an option is an alias of another.
+ 	* config/arm/parsecpu.awk (optalias): New parser token.
+ 	(gen_comm_data): Mark non-alias options as such.  Emit entries
+ 	for extension aliases.
+ 	* config/arm/arm-cpus.in (armv5e): Make vfpv2 an alias.
+ 	(armv5te, armv5tej, armv6, armv6j, armv6k, armv6z): Likewise.
+ 	(armv6kz, armv6zk, armv6t2): Likewise.
+ 	(armv7): Make vfpv3-d16 an alias.
+ 	(armv7-a): Make vfpv3-d16, neon and neon-vfpv3 aliases.	 Sort in
+ 	canonical order.
+ 	(armv7ve): Make vfpv4-d16, neon-vfpv3 and neon-vfpv4 aliases.
+ 	Sort in canonical order.
+ 	(armv8-a): Sort in canonical order.
+ 	(armv8.1-a, armv8.2-a):	 Likewise.
+ 	(generic-armv7-a): Make neon and neon-vfpv3 aliases.  Sort in
+ 	canonical order.
+ 	(cortex-a9): Sort in canonical order.
+ 	* config/arm/arm.c (selftests.h): Include it.
+ 	(arm_test_cpu_arch_data): New function.
+ 	(arm_run_self_tests): New function.
+ 	(TARGET_RUN_TARGET_SELFTESTS): Redefine.
+ 	(targetm): Move declaration to the end of the file.
+ 	* arm-cpu-cdata.h: Regenerated.
+ 
+ 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config/arm/arm.h (TARGET_MODE_SPECS): Add additional parameter to
+ 	call to target_mode_check describing the type of option passed.
+ 	* common/config/arm/arm-common.c (arm_arch_core_flag): Delete.
+ 	(arm_target_thumb_only): Use arm_parse_arch_option_name or
+ 	arm_parse_cpu_option_name to match parameters against list of
+ 	available targets.
+ 	* config/arm/parsecpu.awk (gen_comm_data): Don't generate
+ 	arm_arch_core_flags data structure.
+ 	* config/arm/arm-cpu_cdata.h: Regenerated.
+ 
+ 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* common/config/arm/arm-common.c (arm_initialize_isa): Moved here from
+ 	config/arm/arm.c.
+ 	(arm_print_hint_for_cpu_option): Likewise.
+ 	(arm_print_hint_for_arch_option): Likewise.
+ 	(arm_parse_cpu_option_name): Likewise.
+ 	(arm_parse_arch_option_name): Likewise.
+ 	* config/arm/arm.c (arm_identify_fpu_from_isa): Use the computed number
+ 	of entries in the all_fpus list.
+ 	* config/arm/arm-protos.h (all_architectures, all_cores): Declare.
+ 	(arm_parse_cpu_option_name): Declare.
+ 	(arm_parse_arch_option_name): Declare.
+ 	(arm_parse_option_features): Declare.
+ 	(arm_intialize_isa): Declare.
+ 	* config/arm/parsecpu.awk (gen_data): Move CPU and architecture
+ 	data tables to ...
+ 	(gen_comm_data): ... here.  Make definitions non-static.
+ 	* config/arm/arm-cpu-data.h: Regenerated.
+ 	* config/arm/arm-cpu-cdata.h: Regenerated.
+ 
+ 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config/arm/arm-protos.h (arm_build_target): Remove arch_core.
+ 	(cpu_arch_extension): New structure.
+ 	(cpu_arch_option, arch_option, cpu_option): New structures.
+ 	* config/arm/parsecpu.awk (gen_headers): Build an enumeration of
+ 	architecture types.
+ 	(gen_data): Generate new format data tables.
+ 	* config/arm/arm.c (cpu_tune): New structure.
+ 	(cpu_option, processors): Delete.
+ 	(arm_print_hint_for_core_or_arch): Delete.  Replace with ...
+ 	(arm_print_hint_for_cpu_option): ... this and ...
+ 	(arm_print_hint_for_arch_option): ... this.
+ 	(arm_parse_arch_cpu_name): Delete.  Replace with ...
+ 	(arm_parse_cpu_option_name): ... this and ...
+ 	(arm_parse_arch_option_name): ... this.
+ 	(arm_unrecognized_feature): Change type of target parameter to
+ 	cpu_arch_option.
+ 	(arm_parse_arch_cpu_features): Delete.	Replace with ...
+ 	(arm_parse_option_features): ... this.
+ 	(arm_configure_build_target): Rework to use new configuration data
+ 	tables.
+ 	(arm_print_tune_info): Rework for new configuration data tables.
+ 	* config/arm/arm-cpu-data.h: Regenerated.
+ 	* config/arm/arm-cpu.h: Regenerated.
+ 
+ 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* Makefile.in (OBJS): Move sbitmap.o from here ...
+ 	(OBJS-libcommon): ... to here.
+ 
+ 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config/arm/arm-isa.h (ISA_ALL_FPU_INTERNAL): Renamed from ISA_ALL_FPU.
+ 	(ISA_ALL_CRYPTO): New macro.
+ 	(ISA_ALL_SIMD): New macro
+ 	(ISA_ALL_FP): New macro.
+ 	* config/arm/arm.c (fpu_bitlist): Update initializer.
+ 	* config/arm/arm-cpus.in: Use new ISA_ALL macros to disable crypto,
+ 	simd or fp.
+ 	(arm9e): Add fpu.  Add option for nofp
+ 	(arm946e-s, arm966e-s, arm968e-s, arm10e, arm1020e, arm1022e): Likewise.
+ 	(arm926ej-s, arm1026ej-s): Likewise.
+ 	(generic-armv7-a): Add fpu.  Add options for simd, vfpv3, vfpv3-d16,
+ 	vfpv3-fp16, vfpv3-d16-fp16, vfpv4, vfpv4-d16, neon, neon-vfp3,
+ 	neon-fp16, neon-vfpv4, nofp and nosimd.
+ 	(cortex-a5, cortex-a7): Add fpu.  Add options for nosimd and nofp.
+ 	(cortex-a8): Add fpu.  Add option for nofp.
+ 	(cortex-a9): Add fpu.  Add options for nosimd and nofp.
+ 	(cortex-a12, cortex-a15, cortex-a17): Add fpu.	Add option for nofp.
+ 	(cortex-r4f): Add fpu.
+ 	(cortex-r5): Add fpu.  Add options for nofp.dp and nofp.
+ 	(cortex-r7): Use idiv option from architecture.	 Add fpu.  Add option
+ 	for nofp.
+ 	(cortex-r8): Likewise.
+ 	(cortex-m4): Add fpu.  Add option for nofp.
+ 	(cortex-a15.cortex-a7): Add fpu.  Add option for nofp.
+ 	(cortex-a17.cortex-a7): Likewise.
+ 	(cortex-a32): Add fpu.	Add options for crypto and nofp.
+ 	(cortex-a35, cortex-a53): Likewise.
+ 	(cortex-a57): Add fpu.	Add option for crypto.
+ 	(cortex-a72, cortex-a73): Likewise.
+ 	(exynos-m1): Likewise.
+ 	(cortex-a57.cortex-a53, cortex-a72.cortex-a53): Likewise.
+ 	(cortex-a73.cortex-a35, cortex-a73.cortex-a53): Likewise.
+ 	(cortex-m33): Add fpu.	Add option for nofp.
+ 	* config/arm/arm-cpu-cdata.h: Regenerated
+ 	* config/arm/arm-cpu-data.h: Regenerated.
+ 
+ 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* arm-cpus.in (armv5e): Add options fp, vfpv2 and nofp.
+ 	(armv5te, armv5tej): Likewise.
+ 	(armv6, armv6j, armv6k, armv6z, armv6kz, armv6zk, armv6t2): Likewise.
+ 	(armv7): Add options fp and vfpv3-d16.
+ 	(armv7-a): Add options fp, simd, vfpv3, vfpv3-d16, vfpv3-d16-fp16,
+ 	vfpv3-fp16, vfpv4, vfpv4-d16, neon, neon-vfpv3, neon-fp16, neon-vfpv4,
+ 	nofp and nosimd.
+ 	(armv7ve): Likewise.
+ 	(armv7-r): Add options fp, fp.sp, idiv, nofp and noidiv.
+ 	(armv7e-m): Add options fp, fpv5, fp.dp and nofp.
+ 	(armv8-a): Add nocrypto option.
+ 	(armv8.1-a, armv8.2-a): Likewise.
+ 	(armv8-m.main): add options fp, fp.dp and nofp.
+ 
+ 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config/arm/arm-cpus.in (armv8-a): Add options crc, simd crypto and
+ 	nofp.
+ 	(armv8-a+crc): Delete.
+ 	(armv8.1-a): Add options simd, crypto and nofp.
+ 	(armv8.2-a): Add options fp16, simd, crypto and nofp.
+ 	(armv8.2-a+fp16): Delete.
+ 	(armv8-m.main): Add option dsp.
+ 	(armv8-m.main+dsp): Delete.
+ 	(cortex-a8): Add fpu.  Add nofp option.
+ 	(cortex-a9): Add fpu.  Add nofp and nosimd options.
+ 	* config/arm/parsecpu.awk (gen_data): Generate option tables and
+ 	link to main cpu and architecture data structures.
+ 	(gen_comm_data): Only put isa attributes from the main architecture
+ 	in common tables.
+ 	(option): New statement for architecture and CPU entries.
+ 	* arm.c (struct cpu_option): New structure.
+ 	(struct processors): Add entry for options.
+ 	(arm_unrecognized_feature): New function.
+ 	(arm_parse_arch_cpu_name): Ignore any characters after the first
+ 	'+' character.
+ 	(arm_parse_arch_cpu_feature): New function.
+ 	(arm_configure_build_target): Separate out any CPU and architecture
+ 	features and parse separately.	Don't error out if -mfpu=auto is
+ 	used with only an architecture string.
+ 	(arm_print_asm_arch_directives): New function.
+ 	(arm_file_start): Call it.
+ 	* config/arm/arm-cpu-cdata.h: Regenerated.
+ 	* config/arm/arm-cpu-data.h: Likewise.
+ 	* config/arm/arm-tables.opt: Likewise.
+ 
+ 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config/arm/elf.h (ASM_SPEC): Only pass -mfpu through to the
+ 	assembler when it is not -mfpu=auto.
+ 
+ 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config/arm/arm.h (BIG_LITTLE_SPEC): Delete macro.
+ 	(ASM_REWRITE_SPEC_FUNCTIONS): New macro.
+ 	(BIG_LITTLE_CPU_SPEC_FUNCTIONS): Delete macro.
+ 	(ASM_CPU_SPEC): Rewrite.
+ 	(MCPU_MTUNE_NATIVE_FUNCTIONS): New macro.
+ 	(EXTRA_SPEC_FUNCTIONS): Move outside of ifdef.	Use
+ 	MCPU_MTUNE_NATIVE_FUNCTIONS and ASM_REWRITE_SPEC_FUNCTIONS.  Remove
+ 	reference to BIG_LITTLE_CPU_SPEC_FUNCTIONS.
+ 	* common/config/arm/arm-common.c (arm_rewrite_selected_cpu): Ensure
+ 	copied string is NUL-terminated.  Also strip any characters prefixed
+ 	by '+'.
+ 	(arm_rewrite_selected_arch): New function.
+ 	(arm_rewrite_march): New function.
+ 
+ 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config/arm/arm.opt (x_arm_arch_string): New TargetSave option.
+ 	(x_arm_cpu_string, x_arm_tune_string): Likewise.
+ 	(march, mcpu, mtune): Convert to string-based options.
+ 	* config/arm/arm.c (arm_print_hint_for_core_or_arch): New function.
+ 	(arm_parse_arch_cpu_name): New function.
+ 	(arm_configure_build_target): Use arm_parse_arch_cpu_name to
+ 	identify selected architecture or CPU.
+ 	(arm_option_save): New function.
+ 	(TARGET_OPTION_SAVE): Redefine.
+ 	(arm_option_restore): Restore string options.
+ 	(arm_option_print): Print string options.
+ 
+ 2017-06-16  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR tree-optimization/80933
+ 	PR tree-optimization/80934
+ 	* builtins.c (fold_builtin_3): Do not handle bcmp here.
+ 	* gimple-fold.c (gimple_fold_builtin_bcmp): New function.
+ 	(gimple_fold_builtin_bcopy, gimple_fold_builtin_bzero): Likewise.
+ 	(gimple_fold_builtin): Call them.
+ 
+ 2017-06-16  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* gimple-ssa-isolate-paths.c (isolate_path): Set edge leading to path
+ 	as unlikely; update profile.
+ 
+ 2017-06-16  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* predict.c (force_edge_cold): Handle declaring edges impossible
+ 	more aggresively.
+ 
+ 2017-06-16  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* tree-ssa-loop-ivcanon.c (remove_exits_and_undefined_stmts): Update
+ 	profile.
+ 	(try_unroll_loop_completely): Fix reporting.
+ 
+ 2017-06-16  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* tree-ssa-tail-merge.c (replace_block_by): Fix profile updating.
+ 
+ 2017-06-16  James Greenhalgh  <james.greenhalgh@arm.com>
+ 
+ 	PR target/71778
+ 	* config/arm/arm-builtins.c (arm_expand_builtin_args): Return TARGET
+ 	if given a non-constant argument for an intrinsic which requires a
+ 	constant.
+ 
+ 2017-06-16  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* profile.c (compare_freqs): New function.
+ 	(branch_prob): Sort edge list.
+ 	(find_spanning_tree): Assume that the list is priority sorted.
+ 
+ 2017-06-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/81090
+ 	* passes.def (pass_record_bounds): Remove.
+ 	* tree-pass.h (make_pass_record_bounds): Likewise.
+ 	* tree-ssa-loop.c (pass_data_record_bounds, pass_record_bounds,
+ 	make_pass_record_bounds): Likewise.
+ 	* tree-ssa-loop-ivcanon.c (canonicalize_induction_variables): Do
+ 	not free niter estimates at the beginning but at the end.
+ 	* tree-scalar-evolution.c (scev_finalize): Free niter estimates.
+ 
+ 2017-06-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-switch-conversion.c (emit_case_bit_tests): Adjust
+ 	initializer to workaround ICE in host GCC 4.8.
+ 
+ 2017-06-16  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* ipa-inline-transform.c (update_noncloned_frequencies): Update also
+ 	counts.
+ 	(clone_inlined_nodes): Update.
+ 
+ 2017-06-16  Maxim Kuvyrkov  <maxim.kuvyrkov@linaro.org>
+ 
+ 	* config/aarch64/aarch64.c (qdf24xx_prefetch_tune): Update
+ 	prefetch settings, and enable prefetching by default at -O3.
+ 
+ 2017-06-16  Maxim Kuvyrkov  <maxim.kuvyrkov@linaro.org>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_override_options_internal):
+ 	Set flag_prefetch_loop_arrays according to tuning data.
+ 
+ 2017-06-16  Maxim Kuvyrkov  <maxim.kuvyrkov@linaro.org>
+ 
+ 	* config/aarch64/aarch64-protos.h (struct cpu_prefetch_tune):
+ 	New tune structure.
+ 	(struct tune_params): Use cpu_prefetch_tune instead of cache_line_size.
+ 	[Unrelated to main purpose of the patch] Place the pointer field last
+ 	to enable type checking errors when tune structure are wrongly merged.
+ 	* config/aarch64/aarch64.c (generic_prefetch_tune,)
+ 	(exynosm1_prefetch_tune, qdf24xx_prefetch_tune,)
+ 	(thunderx2t99_prefetch_tune): New tune constants.
+ 	(tune_params *_tunings): Update all tunings (no functional change).
+ 	(aarch64_override_options_internal): Set PARAM_SIMULTANEOUS_PREFETCHES,
+ 	PARAM_L1_CACHE_SIZE, PARAM_L1_CACHE_LINE_SIZE, and PARAM_L2_CACHE_SIZE
+ 	from tunings structures.
+ 
+ 2017-06-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/81094
+ 	* ubsan.c (instrument_null): Add T argument, use it instead
+ 	of computing it based on IS_LHS.
+ 	(instrument_object_size): Likewise.
+ 	(pass_ubsan::execute): Adjust instrument_null and
+ 	instrument_object_size callers to pass gimple_get_lhs or
+ 	gimple_assign_rhs1 result to it.  Use instrument_null instead of
+ 	calling get_base_address and instrument_mem_ref.  Handle
+ 	aggregate call arguments for object-size sanitization.
+ 
+ 2017-06-16  Yury Gribov  <tetra2005@gmail.com>
+ 
+ 	PR tree-optimization/81089
+ 	* tree-vrp.c (is_masked_range_test): Validate operands of
+ 	subexpression.
+ 
+ 2017-06-15  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR c++/80560
+ 	* dumpfile.c (dump_register): Avoid calling memset to initialize
+ 	a class with a default ctor.
+ 	* gcc.c (struct compiler): Remove const qualification.
+ 	* genattrtab.c (gen_insn_reserv): Replace memset with initialization.
+ 	* hash-table.h: Ditto.
+ 	* ipa-cp.c (allocate_and_init_ipcp_value): Replace memset with
+ 	  assignment.
+ 	* ipa-prop.c (ipa_free_edge_args_substructures): Ditto.
+ 	* omp-low.c (lower_omp_ordered_clauses): Replace memset with
+ 	default ctor.
+ 	* params.h (struct param_info): Make struct members non-const.
+ 	* tree-switch-conversion.c (emit_case_bit_tests): Replace memset
+ 	with default initialization.
+ 	* vec.h (vec_copy_construct, vec_default_construct): New helper
+ 	functions.
+ 	(vec<T>::copy, vec<T>::splice, vec<T>::reserve): Replace memcpy
+ 	with vec_copy_construct.
+ 	(vect<T>::quick_grow_cleared): Replace memset with default ctor.
+ 	(vect<T>::vec_safe_grow_cleared, vec_safe_grow_cleared): Same.
+ 	* doc/invoke.texi (-Wclass-memaccess): Document.
+ 
+ 2017-06-15  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
+ 
+ 	* emit-rtl.h (is_leaf): Update comment about local
+ 	register allocator.
+ 
+ 2017-06-15  Jozef Lawrynowicz	<jozef.l@somniumtech.com>
+ 
+ 	PR target/78818
+ 	* config/msp430/msp430.c (msp430_data_attr): Check that it's possible
+ 	for a variable to have a section before checking if the section has a
+ 	name.
+ 	Set section to.persistent if persistent	attribute is set.
+ 	Warn if .persistent attribute is used on an automatic variable.
+ 
+ 2017-06-15  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR rtl-optimization/80474
+ 	* reorg.c (update_block): Do not ignore instructions in a delay slot.
+ 
+ 2017-06-15  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/rs6000.md (add<mode>3): Use reg_or_subregno instead
+ 	of REGNO.
+ 
+ 2017-06-14  Maciej W. Rozycki  <macro@imgtec.com>
+ 
+ 	* config/mips/mips.md (MIPS16_T_REGNUM): Remove constant.
+ 	(casesi): Emit bounds checking as RTL.
+ 	(casesi_internal_mips16_<mode>): Remove bounds checking.
+ 
+ 2017-06-14  Max Filippov  <jcmvbkbc@gmail.com>
+ 
+ 	* config/xtensa/xtensa.c (xtensa_option_override): Append
+ 	MASK_CONST16 to target_flags in the absence of TARGET_L32R.
+ 	(hwloop_optimize, hwloop_fail, hwloop_pattern_reg,
+ 	 xtensa_doloop_hooks): Define unconditionally.
+ 	(xtensa_reorg_loops): Only call reorg_loops in the presence of
+ 	TARGET_LOOPS.
+ 	* config/xtensa/xtensa.h (TARGET_L32R): New definition.
+ 	(TARGET_DEFAULT): Remove XCHAL_HAVE_L32R condition and account
+ 	for it in xtensa_option_override.
+ 	(HARD_FRAME_POINTER_IS_FRAME_POINTER,
+ 	 HARD_FRAME_POINTER_IS_ARG_POINTER): New definitions.
+ 
+ 2017-06-14  Boris Kolpackov  <boris@codesynthesis.com>
+ 
+ 	* doc/cppopts.texi: Document '-' special value to -MF.
+ 
+ 2017-06-14  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	* config/arm/cortex-a53.md (cortex_a53_fpalu) Adjust latency.
+ 	(cortex_a53_fconst): Likewise.
+ 	(cortex_a53_fpmul): Likewise.
+ 	(cortex_a53_f_load_64): Likewise.
+ 	(cortex_a53_f_load_many): Likewise.
+ 	(cortex_a53_advsimd_alu): Likewise.
+ 	(cortex_a53_advsimd_alu_q): Likewise.
+ 	(cortex_a53_advsimd_mul): Likewise.
+ 	(cortex_a53_advsimd_mul_q): Likewise.
+ 	(fpmac bypass): Add new bypass for fpmac-fpmac case.
+ 	Add missing fmul, r2f_cvt and fconst cases.
+ 
+ 2017-06-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/81088
+ 	* fold-const.c (split_tree): Drop TREE_OVERFLOW flag from
+ 	literal constants.
+ 	(fold_binary_loc): When associating do not treat pre-existing
+ 	TREE_OVERFLOW on literal constants as a reason to allow
+ 	TREE_OVERFLOW on associated literal constants.
+ 
+ 2017-06-14  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* config/sparc/sparc.h (MASK_ISA): Add MASK_LEON and MASK_LEON3.
+ 	(MASK_FEATURES): New macro.
+ 	* config/sparc/sparc.c (sparc_option_override): Remove the special
+ 	handling of -mfpu and generalize it to all MASK_FEATURES switches.
+ 
+ 2017-06-14  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* simplify-rtx.c (simplify_binary_operation_1) <UDIV>: Do not simplify
+ 	a division of 0 if non-call exceptions are enabled.
+ 
+ 2017-06-14  Andrew Pinski  <apinski@cavium.com>
+ 	    Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
+ 
+ 	PR target/71663
+ 	* config/aarch64/aarch64.c (aarch64_expand_vector_init):
+ 	Improve vector initialization code gen for only variable case.
+ 
+ 2017-06-14  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* config/sparc/driver-sparc.c (cpu_names): Add SPARC-T5 entry.
+ 
+ 2017-06-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/81083
+ 	* tree-ssa-sccvn.c (vn_reference_lookup_3): Do not use abnormals
+ 	as values.
+ 
+ 2017-06-13  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/rs6000.c: Update all comments that mentioned SPE.
+ 	(rs6000_expand_builtin): Remove RS6000_BTC_EVSEL.
+ 	* config/rs6000/rs6000.h (RS6000_BTC_EVSEL): Delete.
+ 	* config/rs6000/vxworks.h (VXCPU_FOR_8548): Delete.  Adjust former use.
+ 	* config/rs6000/vxworksae.h (VXCPU_FOR_8548): Delete.
+ 	* config/rs6000/vxworksmils.h (VXCPU_FOR_8548): Delete.
+ 
+ 2017-06-13  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/rs6000-opts.h (enum rs6000_vector): Delete VECTOR_SPE.
+ 	* config/rs6000/rs6000.c (rs6000_debug_vector_unit): Delete VECTOR_SPE.
+ 
+ 2017-06-13  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/rs6000.h (FIXED_SCRATCH): Delete.
+ 
+ 2017-06-13  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/t-rtems: Don't handle SPE.
+ 
+ 2017-06-13  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/t-linux: Don't handle SPE.
+ 
+ 2017-06-13  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/eabispe.h: Delete file.
+ 
+ 2017-06-13  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/t-spe: Delete file.
+ 
+ 2017-06-13  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/rs6000.c (SPE_CONST_OFFSET_OK): Delete.
+ 	(rs6000_legitimate_offset_address_p): Return false for anything in
+ 	V2SImode or V2SFmode.
+ 
+ 2017-06-13  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/rs6000-modes.def: Remove all 8-byte vector modes
+ 	except V2SF and V2SI.  Rearrange the vector modes, and add comments.
+ 	* config/rs6000/rs6000.c (rs6000_debug_reg_global): Remove V8QImode
+ 	and V4HImode.
+ 	(reg_offset_addressing_ok_p): Remove V4HImode and V1DImode.
+ 	(rs6000_legitimate_offset_address_p): Ditto.
+ 	(rs6000_emit_move): Ditto.
+ 	(rs6000_init_builtins): Remove V4HI_type_node.
+ 
+ 2017-06-13  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR sanitize/78204
+ 	* asan.c (asan_sanitize_stack_p): Use sanitize_flags_p.
+ 	(gate_asan): Likewise.
+ 	* asan.h (asan_no_sanitize_address_p): Remove the function.
+ 	(sanitize_flags_p): New function.
+ 	* builtins.def: Fix coding style.
+ 	* common.opt: Use renamed enum value.
+ 	* convert.c (convert_to_integer_1): Use sanitize_flags_p.
+ 	* doc/extend.texi: Document no_sanitize attribute.
+ 	* flag-types.h (enum sanitize_code): Rename SANITIZE_NONDEFAULT
+ 	to SANITIZE_UNDEFINED_NONDEFAULT.
+ 	* gcc.c (sanitize_spec_function): Use the renamed enum value.
+ 	* gimple-fold.c (optimize_atomic_compare_exchange_p):
+ 	Use sanitize_flags_p.
+ 	* gimplify.c (gimplify_function_tree): Likewise.
+ 	* ipa-inline.c (sanitize_attrs_match_for_inline_p): Likewise.
+ 	* opts.c (parse_no_sanitize_attribute): New function.
+ 	(common_handle_option): Use renamed enum value.
+ 	* opts.h (parse_no_sanitize_attribute): Declare.
+ 	* tree.c (sanitize_flags_p): New function.
+ 	* tree.h: Declared here.
+ 	* tsan.c: Use sanitize_flags_p.
+ 	* ubsan.c (ubsan_expand_null_ifn): Likewise.
+ 	(instrument_mem_ref): Likewise.
+ 	(instrument_bool_enum_load): Likewise.
+ 	(do_ubsan_in_current_function): Remove the function.
+ 	(pass_ubsan::execute): Use sanitize_flags_p.
+ 	* ubsan.h: Remove do_ubsan_in_current_function
+ 	* tree-cfg.c (print_no_sanitize_attr_value): New function.
+ 	(dump_function_to_file): Use it here.
+ 
+ 2017-06-13  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR tree-optimization/80803
+ 	PR tree-optimization/81063
+ 	* tree-sra.c (subtree_mark_written_and_enqueue): Move up in the file.
+ 	(propagate_subaccesses_across_link): Enqueue subtree whenever
+ 	necessary instead of relying on the caller.
+ 
+ 2017-06-13  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* tree-sra.c (add_access_to_work_queue): Only enqueue accesses
+ 	that have a first_link.
+ 	(sort_and_splice_var_accesses): Do not check first_link before
+ 	enquing.
+ 	(subtree_mark_written_and_enqueue): Likewise.
+ 	(propagate_all_subaccesses): Likewise and do not stop at first
+ 	parent with a first_link.
+ 
+ 2017-06-13  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* tree-sra.c (dump_access_tree_1): Fix accidental dumping to stderr
+ 	instead of f.
+ 
+ 2017-06-13  Yury Gribov  <tetra2005@gmail.com>
+ 
+ 	* match.pd: New pattern.
+ 
+ 2017-06-13  Yury Gribov  <tetra2005@gmail.com>
+ 
+ 	* tree-vrp.c (is_masked_range_test): New function.
+ 	(register_edge_assert_for): Determine ranges for
+ 	some bit tests.
+ 
+ 2017-06-13  Yury Gribov  <tetra2005@gmail.com>
+ 
+ 	PR tree-optimization/67328
+ 	* fold-const.c (maskable_range_p): New function.
+ 	(build_range_check): Generate bittests if possible.
+ 
+ 2017-06-13  Martin Liska  <mliska@suse.cz>
+ 
+ 	* gimple-pretty-print.c (dump_probability): Add new argument.
+ 	(dump_edge_probability): Dump both probability and count.
+ 	(dump_gimple_label): Likewise.
+ 	(dump_gimple_bb_header): Likewise.
+ 
+ 2017-06-13  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR target/81072
+ 	* config/avr/avr-devices.c: Fix indentation.
+ 	* config/avr/gen-avr-mmcu-specs.c: Dito.
+ 
+ 2017-06-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-loop.c (vect_model_reduction_cost): Do not fail,
+ 	instead get vector type from stmt_info.
+ 	(vectorizable_reduction): Adjust.  Remove dead code.
+ 
+ 2017-06-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/81065
+ 	* fold-const.c (extract_muldiv_1): Remove bogus distribution
+ 	case of C * (x * C2 + C3).
+ 	(fold_addr_of_array_ref_difference): Properly fold index difference.
+ 
+ 2017-06-12  David S. Miller  <davem@davemloft.net>
+ 
+ 	PR target/80968
+ 	* config/sparc/sparc.md (return expander): Emit frame blockage if
+ 	function uses alloca.
+ 
+ 2017-06-12  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* combine.c (make_field_assignment): Check len rather than the mode
+ 	precision when calling force_to_mode.
+ 
+ 2017-06-12  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Support multilibs and devices that see flash in RAM address range.
+ 
+ 	PR target/81072
+ 	* config/avr/avr-arch.h (avr_arch_id) <ARCH_AVRXMEGA3>: New enum.
+ 	(avr_mcu_t) <flash_pm_offset>: New field.
+ 	(avr_device_specific_features) <AVR_ISA_RCALL>: New enum.
+ 	* config/avr/avr.h (AVR_SHORT_CALLS): New define.
+ 	(AVR_HAVE_JMP_CALL): Don't set if AVR_SHORT_CALLS.
+ 	(AVR_TINY_PM_OFFSET): Remove macro.
+ 	* config/avr/avr.opt (-mshort-calls): New option.
+ 	* config/avr/gen-avr-mmcu-specs.c (print_mcu)
+ 	[*self_spec]: Add / remove -mshort-calls depending on AVR_ISA_RCALL.
+ 	* config/avr/avr-c.c (avr_cpu_cpp_builtins)
+ 	<__AVR_SHORT_CALLS__>: Built-in define if AVR_SHORT_CALLS.
+ 	<__AVR_HAVE_JMP_CALL__>: Use AVR_HAVE_JMP_CALL as condition
+ 	instead of avr_arch->have_jmp_call.
+ 	<__AVR_PM_BASE_ADDRESS__>: Built-in define if avr_arch->flash_pm_offset.
+ 	[AVR_TINY] <__AVR_TINY_PM_BASE_ADDRESS__>: Use
+ 	avr_arch->flash_pm_offset to define.
+ 	* config/avr/avr-devices.c (avr_arch_types): Add initializers for
+ 	new field flash_pm_offset.  Add entry for avrxmega3.
+ 	(avr_texinfo): Add entry for avrxmega3.
+ 	* config/avr/avr-mcus.def: Add entries for: avrxmega3,
+ 	attiny212, attiny214,
+ 	attiny412, attiny414, attiny416, attiny417,
+ 	attiny814, attiny816, attiny817,
+ 	attiny1614, attiny1616, attiny1617,
+ 	attiny3214, attiny3216, attiny3217.
+ 	* config/avr/avr.c (avr_assemble_integer)[AVR_TINY]: Use
+ 	avr_arch->flash_pm_offset instead of AVR_TINY_PM_OFFSET.
+ 	(avr_print_operand_address) [AVR_TINY]: Same.
+ 	(avr_asm_init_sections) <readonly_data_section>: Only patch
+ 	callback if avr_arch->flash_pm_offset = 0.
+ 	(avr_asm_named_section) <avr_need_copy_data_p>: Skip setting it
+ 	for rodata if avr_arch->flash_pm_offset != 0.
+ 	(avr_encode_section_info) [AVR_TINY]: Adjust comment.
+ 	* config/avr/genmultilib.awk (dir_rcall, opt_rcall): New vars.
+ 	(opts) [AVR_ISA_RCALL]: Append opt_rcall.
+ 	(m_options): Append opt_rcall.
+ 	(m_dirnames): Append dir_rcall.
+ 	* config/avr/t-multilib: Regenerate.
+ 
+ 	* configure.ac [target=avr]: Check whether avrxmega3 default
+ 	linker description file works as needed.
+ 	* configure: Regenerate.
+ 	* doc/avr-mmcu.texi: Regenerate.
+ 	* doc/invoke.texi (AVR Options) <-mshort-calls>: Document it.
+ 	<__AVR_ARCH__>: Document avrxmega3 and 103.
+ 	<__AVR_HAVE_JMP_CALL__>: Adjust documentation.
+ 	<__AVR_SHORT_CALLS__>: Document it.
+ 	<__AVR_PM_BASE_ADDRESS__>: Document it.
+ 	* doc/extend.texi (AVR Options) <-mshort-calls>: Document it.
+ 	(AVR Variable Attributes) <progmem>: Document this is
+ 	not needed for avrxmega3.
+ 	(AVR Named Address Spaces) <__flash>: Dito.
+ 
+ 2017-06-12  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* cgraph.c (cgraph_node::dump): Complain about profile insanities.
+ 
+ 2017-06-12  Doug Rupp  <rupp@adacore.com>
+ 
+ 	* config.gcc (*-*-vxworks*): Set use_gcc_stdint to "provide".
+ 	Append vxworks-stdint.h to the tm_file list.
+ 	* config/vxworks-stdint.h: New file.
+ 
+ 2017-06-12  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR tree-optimization/81041
+ 	* tree-profile.c (gimple_gen_ic_func_profiler):
+ 	Create an extra BB in profile-generate
+ 	(gimple_gen_time_profiler): Likewise.
+ 
+ 2017-06-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/81003
+ 	* tree-ssa-reassoc.c (force_into_ssa_name): New function.
+ 	(update_range_test): Use it instead of force_gimple_operand_gsi.
+ 
+ 2017-06-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/81053
+ 	* tree-vect-loop.c (vect_is_simple_reduction): Handle PHI
+ 	with backedge value not defined in loop.  Simplify def stmt
+ 	compute.
+ 
+ 2017-06-11  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	PR target/79939
+ 	* config/nvptx/nvptx.c (nvptx_cannot_force_const_mem): New function.
+ 	Return true.
+ 	(TARGET_CANNOT_FORCE_CONST_MEM): Redefine to
+ 	nvptx_cannot_force_const_mem.
+ 
+ 2017-06-10  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* opts.c (finish_options): Move test for flag_split_stack after
+ 	it has been initialized.
+ 
+ 2017-06-11  Jason Merrill  <jason@redhat.com>
+ 
+ 	* tree.h (id_equal): New.
+ 	* dwarf2out.c, hsa-gen.c, ipa-devirt.c, omp-expand.c,
+ 	omp-simd-clone.c, read-rtl-function.c, tree-chkp.c, tree.c: Use it
+ 	instead of strcmp of IDENTIFIER_POINTER.
+ 
+ 2017-06-10  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* ipa-inline-transform.c: Include function.h, cfg.h and basic-block.h
+ 	(mark_all_inlined_calls_cdtor): Fix formating.
+ 	(inline_transform): Rescale profile before inlining.
+ 
+ 2017-06-10  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* cgraph.h (cgraph_edge::clone): Update prototype.
+ 	* cgraphclones.c (cgraph_edge::clone): Update profile scaling.
+ 	(cgraph_node::create_clone): Update.
+ 	(cgraph_node::create_version_clone): Update.
+ 	* tree-inline.c (copy_bb): Update.
+ 	(expand_call_inline): Update.
+ 
+ 2017-06-10  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/rs6000.c (emit_vrsave_prologue): New function,
+ 	factored out from ...
+ 	(rs6000_emit_prologue): ... here.
+ 
+ 2017-06-10  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/rs6000.c (emit_split_stack_prologue): New function,
+ 	factored out from ...
+ 	(rs6000_emit_prologue): ... here.
+ 
+ 2017-06-10  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* predict.c (drop_profile): Also drop individual bb/edge and cgraph
+ 	edge counts.
+ 	(handle_missing_profiles): Fix computation of tp_first_run.
+ 	(counts_to_freqs): Do not touch freqs when count is 0.
+ 
+ 2017-06-10  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* cgraphbuild.c (cgraph_edge::rebuild_references): Do not touch
+ 	profile.
+ 
+ 2017-06-10  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	* doc/sourcebuild.texi (Effective-Target Keywords, Environment
+ 	attributes): Document signal effective target.
+ 
+ 2017-06-10  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	* doc/sourcebuild.texi (Effective-Target Keywords, Other attributes):
+ 	Document effective target stack_size.
+ 
+ 2017-06-09  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* diagnostic.c (diagnostic_report_diagnostic): Only add fixits
+ 	to the edit_context if they can be auto-applied.
+ 
+ 2017-06-9  Ian Lance Taylor  <iant@golang.org>
+ 
+ 	* opts.c (finish_options): If -fsplit-stack, disable implicit
+ 	-forder-blocks-and-partition.
+ 	* doc/invoke.texi (Optimize Options): Document that when using
+ 	-fsplit-stack -forder-blocks-and-partition is not implicitly
+ 	enabled.
+ 
+ 2017-06-09  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* builtin-attrs.def (ATTR_NORETURN_NOTHROW_LEAF_COLD_LIST,
+ 	ATTR_CONST_NORETURN_NOTHROW_LEAF_COLD_LIST,
+ 	ATTR_TMPURE_NORETURN_NOTHROW_LEAF_COLD_LIST): New.
+ 	* builtins.def (abort, trap, unreachable): Declare cold.
+ 	* calls.c (flags_from_decl_or_type): Lookup ECF_COLD.
+ 	* tree-core.h (ECF_COLD): New.
+ 	* tree.c (set_call_expr_flags): Handle ECF_COLD.
+ 	(build_common_builtin_nodes): Mark unreachable and abort as cold.
+ 
+ 2017-06-09  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* predict.c (unlikely_executed_stmt_p): Cleanup.
+ 
+ 2017-06-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-loop-im.c (execute_sm): Do not force multi-threaded
+ 	model if the ref is always written to.
+ 
+ 2017-06-09  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* config/aarch64/aarch64.md (lrint<GPF:mode><GPI:mode>2): New.
+ 
+ 2017-06-09  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* config/arm/arm.c (arm_rtx_costs_internal): Make sdiv more expensive
+ 	than udiv.
+ 
+ 2017-06-09  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	PR target/80855
+ 	* config/nvptx/nvptx.md (define_expand "mov<QHSDISDFM>"): Error out with
+ 	"target cannot support label values" when encountering LABEL_REF.
+ 
+ 2017-06-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	* tree-profile.c (gimple_gen_ic_profiler): Update comment.
+ 	(gimple_gen_ic_func_profiler): Emit direct comparison
+ 	of __gcov_indirect_call_callee with NULL.
+ 	(gimple_gen_time_profiler): Change probability from
+ 	PROB_VERY_UNLIKELY to PROB_UNLIKELY.
+ 
+ 2017-06-09  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* profile.c (edge_gcov_counts): Turn to pointer.
+ 	(compute_branch_probabilities, compute_branch_probabilities): Update.
+ 	(branch_prob): Do not clear edge_gcov_count.
+ 	* profile.h (edge_gcov_counts): Turn to pointer.
+ 	(edge_gcov_count): Update.
+ 
+ 2017-06-09  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* gimple.h (gimple_check_failed): Mark cold.
+ 
+ 2017-06-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/66623
+ 	* tree-vect-loop.c (vect_is_simple_reduction): Cleanup,
+ 	refactor check_reduction into two parts, properly computing
+ 	whether we have to check reduction validity for outer loop
+ 	vectorization.
+ 
+ 2017-06-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/79483
+ 	* graphite-scop-detection.c (order): New global.
+ 	(get_order): Compute bb to order mapping that satisfies code
+ 	generation constraints.
+ 	(cmp_pbbs): New helper.
+ 	(build_scops): Start domwalk at entry block, sort generated
+ 	pbbs.
+ 
+ 2017-06-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/81007
+ 	* ipa-polymorphic-call.c
+ 	(ipa_polymorphic_call_context::restrict_to_inner_class):
+ 	Skip FIELD_DECLs with error_mark_node type.
+ 	* passes.def (all_lowering_passes): Run pass_build_cgraph_edges
+ 	last again.
+ 
+ 2017-06-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	* predict.c (struct branch_predictor): New struct.
+ 	(test_prediction_value_range): New test.
+ 	(predict_c_tests): New function.
+ 	* selftest-run-tests.c (selftest::run_tests): Run the function.
+ 	* selftest.h: Declare new tests.
+ 
+ 2017-06-09  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR target/80966
+ 	* config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Assert that
+ 	gen_add3_insn did not fail.
+ 	* config/rs6000/rs6000.md (add<mode>3): If asked to add a constant to
+ 	r0, construct that number in a temporary reg and add that reg to r0.
+ 	If asked to put the result in r0 as well, fail.
+ 
+ 2017-06-08  Will Schmidt  <will_schmidt@vnet.ibm.com>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling
+ 	for early expansion of vec_eqv.
+ 
+ 2017-06-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/81005
+ 	* ubsan.c (instrument_null): Avoid pointless code temporary.
+ 	(pass_ubsan::execute): Instrument aggregate arguments of calls.
+ 
+ 2017-06-08  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/81015
+ 	Revert:
+ 	2016-12-14  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/59874
+ 	* config/i386/i386.md (*ctzhi2): New insn_and_split pattern.
+ 	(*clzhi2): Ditto.
+ 
+ 2017-06-08  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* predict.c (unlikely_executed_edge_p): Move ahead.
+ 	(probably_never_executed_edge_p): Use it.
+ 
+ 2017-06-08  Alexander Ivchenko  <alexander.ivchenko@intel.com>
+ 
+ 	PR middle-end/79988
+ 	* tree-chkp.c (chkp_gimple_call_builtin_p): Remove
+ 	gimple_call_builtin_p call.
+ 
+ 2017-06-08  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* system.h (fancy_abort): Annotate by ATTRIBUTE_COLD.
+ 	* rtl.h (rtl_check_failed_bounds, rtl_check_failed_type1,
+ 	rtl_check_failed_type2, rtl_check_failed_code1,
+ 	rtl_check_failed_code2, rtl_check_failed_code_mode,
+ 	rtl_check_failed_block_symbol, cwi_check_failed_bounds,
+ 	rtvec_check_failed_bounds, rtl_check_failed_flag,
+ 	_fatal_insn_not_found, _fatal_insn): Likewise.
+ 	* tree.h (tree_contains_struct_check_failed,
+ 	tree_check_failed, tree_not_check_failed,
+ 	tree_class_check_failed, tree_range_check_failed,
+ 	tree_not_class_check_failed, tree_int_cst_elt_check_failed,
+ 	tree_vec_elt_check_failed, phi_node_elt_check_failed,
+ 	tree_operand_check_failed, omp_clause_check_failed,
+ 	omp_clause_operand_check_failed, omp_clause_range_check_failed):
+ 	Likewise.
+ 
+ 2017-06-08  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* cgraph.c (cgraph_edge::maybe_hot_p): Do not check
+ 	flag_branch_probabilities.
+ 	* ipa-inline.c (edge_badness): Likewise.
+ 	* ipa-profile.c (ipa_propagate_frequency_1): Likewise.
+ 	* postreload-gcse.c (eliminate_partially_redundant_load): Likewise.
+ 	* predict.c (maybe_hot_frequency_p): Likewise.
+ 	(probably_never_executed): Likewise.
+ 	* sched-ebb.c (schedule_ebbs): Likewise.
+ 	* sched-rgn.c (find_single_block_region): Likewise.
+ 	* tracer.c (tail_duplicate): Likewise.
+ 
+ 2017-06-08  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* opts.c (finish_options): x_flag_reorder_blocks_and_partition no
+ 	longer requires x_flag_profile_use.
+ 
+ 2017-06-08  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* cfgrtl.c (cfg_layout_initialize): Check crtl->has_bb_partition
+ 	instead of flag_reorder_blocks_and_partition.
+ 	* dbxout.c (dbxout_function_end): Likewise.
+ 	* dwarf2out.c (gen_subprogram_die): Likewise.
+ 	* haifa-sched.c (sched_create_recovery_edges): Likewise.
+ 	* hw-doloop.c (reorg_loops): Likewise.
+ 	* varasm.c (assemble_start_function,
+ 	assemble_end_function): Likewise.
+ 	(decide_function_section): Do not check for
+ 	flag_reorder_blocks_and_partition.
+ 
+ 2017-06-08  Alexander Ivchenko  <alexander.ivchenko@intel.com>
+ 
+ 	* tree-chkp.c (chkp_get_hard_register_var_fake_base_address):
+ 	New function.
+ 	(chkp_get_hard_register_fake_addr_expr): Ditto.
+ 	(chkp_build_addr_expr): Add check for hard reg case.
+ 	(chkp_parse_array_and_component_ref): Ditto.
+ 	(chkp_find_bounds_1): Ditto.
+ 	(chkp_process_stmt): Don't generate bounds store for
+ 	hard reg case.
+ 
+ 2017-06-08  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* predict.c (maybe_hot_bb_p): Do not check profile status.
+ 	(maybe_hot_edge_p): Likewise.
+ 	(probably_never_executed): Check for zero counts even if profile
+ 	is not read.
+ 	(unlikely_executed_edge_p): New function.
+ 	(unlikely_executed_stmt_p): New function.
+ 	(unlikely_executed_bb_p): New function.
+ 	(set_even_probabilities): Use unlikely predicates.
+ 	(combine_predictions_for_bb): Likewise.
+ 	(predict_paths_for_bb): Likewise.
+ 	(predict_paths_leading_to_edge): Likewise.
+ 	(determine_unlikely_bbs): New function.
+ 	(estimate_bb_frequencies): Use it.
+ 	(compute_function_frequency): Use zero counts even if profile is
+ 	not read.
+ 	* profile-count.h: Fix typo.
+ 
+ 2017-08-08  Julia Koval  <julia.koval@intel.com>
+ 
+ 	* config/i386/avx512bwintrin.h (_mm512_mask_cvtepi16_storeu_epi8,
+ 	_mm512_mask_cvtsepi16_storeu_epi8,
+ 	_mm512_mask_cvtusepi16_storeu_epi8): New intrinsics.
+ 	* config/i386/avx512vlbwintrin.h (_mm256_mask_cvtepi16_storeu_epi8,
+ 	_mm_mask_cvtsepi16_storeu_epi8, _mm256_mask_cvtsepi16_storeu_epi8,
+ 	_mm_mask_cvtusepi16_storeu_epi8, _mm256_mask_cvtusepi16_storeu_epi8,
+ 	_mm_mask_cvtepi16_storeu_epi8): New intrinsics.
+ 	* config/i386/i386-builtin-types.def (PV8Q, V8QI): New pointer type.
+ 	(VOID_FTYPE_PV32QI_V32HI_USI, VOID_FTYPE_PV8QI_V8HI_UQI,
+ 	VOID_FTYPE_PV16QI_V16HI_UHI): New function types.
+ 	* config/i386/i386-builtin.def (__builtin_ia32_pmovwb128mem_mask,
+ 	__builtin_ia32_pmovwb256mem_mask, __builtin_ia32_pmovswb128mem_mask,
+ 	__builtin_ia32_pmovswb256mem_mask, __builtin_ia32_pmovuswb128mem_mask,
+ 	__builtin_ia32_pmovuswb256mem_mask,
+ 	__builtin_ia32_pmovuswb512mem_mask, __builtin_ia32_pmovswb512mem_mask)
+ 	__builtin_ia32_pmovwb512mem_mask): New builtins.
+ 
+ 2017-08-08  Julia Koval  <julia.koval@intel.com>
+ 
+ 	PR target/73350,80862
+ 	* config/i386/subst.md (round): Fix round pattern.
+ 	* config/i386/i386.c (ix86_erase_embedded_rounding):
+ 	Fix erasing rounding for the fixed pattern.
+ 
+ 2017-06-08  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* cfgbuild.c (find_many_sub_basic_blocks): Fix thinko.
+ 
+ 2017-06-08  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR gcov-profile/80911
+ 	* gcov.c (block_info::block_info): New constructor.
+ 
+ 2017-06-07  Carl Love  <cel@us.ibm.com>
+ 
+ 	* config/rs6000/rs6000-c: The return type of the following
+ 	built-in functions was implemented as int not long long.  Fix sign
+ 	of return value for the unsigned version of vec_mulo and vec_mule.
+ 	vector unsigned long long vec_bperm (vector unsigned long long,
+ 					     vector unsigned char)
+ 	vector signed long long vec_mule (vector signed int,
+ 					  vector signed int)
+ 	vector unsigned long long vec_mule (vector unsigned int,
+ 					    vector unsigned int)
+ 	vector signed long long vec_mulo (vector signed int,
+ 					  vector signed int)
+ 	vector unsigned long long vec_mulo (vector unsigned int,
+ 					    vector unsigned int)
+ 	* doc/extend.texi: Fix the documentation for the built-in
+ 	functions.
+ 
+ 2017-06-07  Carl Love  <cel@us.ibm.com>
+ 
+ 	PR target/80982
+ 	* config/rs6000/altivec.md (double<mode>2): Fix the implementation of
+ 	for BE.
+ 
+ 2017-06-07  Carl Love  <cel@us.ibm.com>
+ 
+ 	* config/rs6000/altivec.md: Fix argument swizzle in vec_doublel
+ 	support, Generate	doublehv for signed int/float for BE case only.
+ 
+ 2017-06-07  Alexander Monakov  <amonakov@ispras.ru>
+ 
+ 	* doc/invoke.texi (mcx16): Rewrite.
+ 
+ 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/predicates.md (rs6000_nonimmediate_operand): Delete.
+ 	* config/rs6000/rs6000.md (*movsi_internal1, movsi_from_sf,
+ 	*mov<mode>_softfloat, and an anonymous splitter): Use
+ 	nonimmediate_operand instead of rs6000_nonimmediate_operand.
+ 
+ 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/darwin.h (REGISTER_NAMES): Delete the SPE_ACC and
+ 	SPEFSCR registers.
+ 	* config/rs6000/rs6000.c (rs6000_reg_names, alt_reg_names): Ditto.
+ 	(enum rs6000_reg_type): Delete SPE_ACC_TYPE and SPEFSCR_REG_TYPE.
+ 	(rs6000_debug_reg_global): Adjust.
+ 	(rs6000_init_hard_regno_mode_ok): Adjust.
+ 	(rs6000_dbx_register_number): Adjust.
+ 	* config/rs6000/rs6000.h (FIRST_PSEUDO_REGISTER): Change to 115.
+ 	(FIXED_REGISTERS, CALL_USED_REGISTERS, CALL_REALLY_USED_REGISTERS):
+ 	Remove SPE_ACC and SPEFSCR.
+ 	(REG_ALLOC_ORDER): Ditto.
+ 	(FRAME_POINTER_REGNUM): Change to 111.
+ 	(enum reg_class): Remove the SPE_ACC and SPEFSCR registers.
+ 	(REG_CLASS_NAMES): Ditto.
+ 	(REG_CLASS_CONTENTS): Delete the SPE_ACC and SPEFSCR registers.
+ 	(REGISTER_NAMES): Ditto.
+ 	(ADDITIONAL_REG_NAMES): Ditto.
+ 	(rs6000_reg_names): Ditto.
+ 	* config/rs6000/rs6000.md: Renumber some register number
+ 	define_constants.
+ 
+ 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/darwin.h (REGISTER_NAMES): Delete the SPE high
+ 	registers.
+ 	* config/rs6000/rs6000.c (rs6000_reg_names, alt_reg_names): Ditto.
+ 	* config/rs6000/rs6000.h (FIRST_PSEUDO_REGISTER): Change from 149
+ 	to 117.
+ 	(DWARF_REG_TO_UNWIND_COLUMN): Do not define.
+ 	(FIXED_REGISTERS, CALL_USED_REGISTERS, CALL_REALLY_USED_REGISTERS):
+ 	Delete the SPE high registers.
+ 	(REG_ALLOC_ORDER): Ditto.
+ 	(enum reg_class): Remove SPE_HIGH_REGS.
+ 	(REG_CLASS_NAMES): Ditto.
+ 	(REG_CLASS_CONTENTS): Delete the SPE high registers.
+ 	(REGISTER_NAMES): Ditto.
+ 	(rs6000_reg_names): Ditto.
+ 	* doc/tm.texi.in: Remove SPE as example.
+ 	* doc/tm.texi: Regenerate.
+ 
+ 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/8540.md (ppc8540_brinc): Delete.
+ 	* config/rs6000/e500mc.md (e500mc_brinc): Delete.
+ 	* config/rs6000/e500mc64.md (e500mc64_brinc): Delete.
+ 	* config/rs6000/rs6000.md (type): Remove "brinc".
+ 
+ 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config.gcc (powerpc*-*-*): Don't add spe.h to extra_headers.
+ 	(powerpc*-linux*spe*): Use ${cpu_type} instead of rs6000.
+ 	* config/rs6000/linuxspe.h: Delete file.
+ 	* config/rs6000/rs6000.md: Don't include spe.md.
+ 	* config/rs6000/spe.h: Delete file.
+ 	* config/rs6000/spe.md: Delete file.
+ 	* config/rs6000/t-rs6000: Remove spe.md.
+ 
+ 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/predicates.md (reg_or_mem_operand): Reformat.
+ 	(reg_or_none500mem_operand): Delete.
+ 	* config/rs6000/rs6000.md (extendsfdf2): Use reg_or_mem_operand
+ 	instead of reg_or_none500mem_operand.
+ 
+ 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_option_override_internal): Delete
+ 	handling of SPE flags.
+ 	* config/rs6000/rs6000.opt (-mspe, -mspe=no, -mspe=yes): Delete.
+ 
+ 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/rs6000-common.c (rs6000_handle_option): Remove
+ 	SPE ABI handling.
+ 	* config/rs6000/paired.md (paired_negv2sf2): Rename to negv2sf2.
+ 	(paired_absv2sf2, paired_addv2sf3, paired_subv2sf3, paired_mulv2sf3,
+ 	paired_divv2sf3): Similar.
+ 	* config/rs6000/predicates.md: Replace TARGET_SPE, TARGET_SPE_ABI,
+ 	SPE_VECTOR_MODE and SPE_HIGH_REGNO_P by 0; simplify.
+ 	* config/rs6000/rs6000-builtin.def: Delete RS6000_BUILTIN_E and
+ 	RS6000_BUILTIN_S.
+ 	Delete BU_SPE_1, BU_SPE_2, BU_SPE_3, BU_SPE_E, BU_SPE_P, and BU_SPE_X.
+ 	Rename the paired_* instruction patterns.
+ 	* config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Do not
+ 	define __SPE__.
+ 	* config/rs6000/rs6000-protos.h (invalid_e500_subreg): Delete.
+ 	* config/rs6000/rs6000.c: Delete RS6000_BUILTIN_E and RS6000_BUILTIN_S.
+ 	(struct rs6000_stack): Delete fields spe_gp_save_offset, spe_gp_size,
+ 	spe_padding_size, and spe_64bit_regs_used.  Replace TARGET_SPE and
+ 	TARGET_SPE_ABI with 0, simplify.  Replace SPE_VECTOR_MODE with
+ 	PAIRED_VECTOR_MODE.
+ 	(struct machine_function): Delete field spe_insn_chain_scanned_p.
+ 	(spe_func_has_64bit_regs_p): Delete.
+ 	(spe_expand_predicate_builtin): Delete.
+ 	(spe_expand_evsel_builtin): Delete.
+ 	(TARGET_DWARF_REGISTER_SPAN): Do not define.
+ 	(TARGET_MEMBER_TYPE_FORCES_BLK): Do not define.
+ 	(invalid_e500_subreg): Delete.
+ 	(rs6000_legitimize_address): Always force_reg op2 as well, for
+ 	paired single memory accesses.
+ 	(rs6000_member_type_forces_blk): Delete.
+ 	(rs6000_spe_function_arg): Delete.
+ 	(rs6000_expand_unop_builtin): Delete SPE handling.
+ 	(rs6000_expand_binop_builtin): Ditto.
+ 	(spe_expand_stv_builtin): Delete.
+ 	(bdesc_2arg_spe): Delete.
+ 	(spe_expand_builtin): Delete.
+ 	(spe_expand_predicate_builtin): Delete.
+ 	(spe_expand_evsel_builtin): Delete.
+ 	(rs6000_invalid_builtin): Remove RS6000_BTM_SPE handling.
+ 	(spe_init_builtins): Delete.
+ 	(spe_func_has_64bit_regs_p): Delete.
+ 	(savres_routine_name): Delete "info" parameter.  Adjust callers.
+ 	(rs6000_emit_stack_reset): Ditto.
+ 	(rs6000_dwarf_register_span): Delete.
+ 	* config/rs6000/rs6000.h (TARGET_SPE_ABI, TARGET_SPE,
+ 	UNITS_PER_SPE_WORD, SPE_HIGH_REGNO_P, SPE_SIMD_REGNO_P,
+ 	SPE_VECTOR_MODE, RS6000_BTM_SPE, RS6000_BUILTIN_E, RS6000_BUILTIN_S):
+ 	Delete.
+ 	* config/rs6000/rs6000.md (FIRST_SPE_HIGH_REGNO, LAST_SPE_HIGH_REGNO):
+ 	Delete.
+ 	* config/rs6000/rs6000.opt (-mabi=spe, -mabi=no-spe): Delete.
+ 	* config/rs6000/spe.md: Delete every pattern that uses TARGET_SPE.
+ 	* config/rs6000/vector.md (absv2sf2, negv2sf2, addv2sf3, subv2sf3,
+ 	mulv2sf3, divv2sf3): Delete expanders.
+ 
+ 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	config/rs6000/rs6000.md (UNSPEC_MV_CR_GT): Delete.
+ 
+ 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/rs6000-protos.h (output_e500_flip_gt_bit): Delete.
+ 	* config/rs6000/rs6000.c: Ditto.
+ 
+ 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/predicated.md (rs6000_cbranch_operator): Delete.
+ 	* config/rs6000/rs6000.md: Replace rs6000_cbranch_operator by
+ 	comparison_operator.
+ 
+ 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/rs6000.c: Remove everything related to -mfloat-gprs.
+ 	* config/rs6000/rs6000.opt: Ditto.
+ 	* config/rs6000/t-rtems: Ditto.
+ 
+ 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/predicates.md: Replace TARGET_E500_DOUBLE and
+ 	TARGET_E500_SINGLE by 0, simplify.
+ 	* config/rs6000/rs6000.c: Ditto.
+ 	(rs6000_option_override_internal): Delete CHECK_E500_OPTIONS.
+ 	(spe_build_register_parallel): Delete.
+ 	* config/rs6000/rs6000.h: Delete TARGET_E500_SINGLE,
+ 	TARGET_E500_DOUBLE, and CHECK_E500_OPTIONS.
+ 	* config/rs6000/rs6000.md: Replace TARGET_E500_DOUBLE,
+ 	TARGET_E500_SINGLE, and <E500_CONVERT> by 0, simplify.
+ 	(E500_CONVERT): Delete.
+ 	* config/rs6000/spe.md: Remove many patterns and all define_constants.
+ 
+ 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/darwin.md: Replace TARGET_FPRS by 1 and simplify.
+ 	* config/rs6000/dfp.md: Ditto.
+ 	(negdd2, *negdd2_fpr): Merge.
+ 	(absdd2, *absdd2_fpr): Merge.
+ 	(negtd2, *negtd2_fpr): Merge.
+ 	(abstd2, *abstd2_fpr): Merge.
+ 	* config/rs6000/e500.h: Delete file.
+ 	* config/rs6000/predicates.md (rs6000_cbranch_operator): Replace
+ 	TARGET_FPRS by 1 and simplify.
+ 	* config/rs6000/rs6000-c.c: Ditto.
+ 	* config/rs6000/rs6000.c: Ditto.  Also replace TARGET_SF_SPE and
+ 	TARGET_DF_SPE by 0.
+ 	* config/rs6000/rs6000.h: Ditto.  Delete TARGET_SF_SPE and
+ 	TARGET_DF_SPE.
+ 	* config/rs6000/rs6000.md: Ditto.
+ 	(floatdidf2, *floatdidf2_fpr): Merge.
+ 	(move_from_CR_gt_bit): Delete.
+ 	* config/rs6000/spe.md: Replace TARGET_FPRS by 1 and simplify.
+ 	(E500_CR_IOR_COMPARE): Delete.
+ 	(All patterns that require !TARGET_FPRS): Delete.
+ 	* config/rs6000/vsx.md: Replace TARGET_FPRS by 1 and simplify.
+ 
+ 2017-06-07  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* passes.def (pass_iv_canon): Move before pass_loop_distribution.
+ 
+ 2017-06-07  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* graphds.c (add_edge): Intitialize edge's attached data.
+ 	(foll_in_subgraph, dfs_fst_edge, dfs_next_edge): New function
+ 	pointer parameter.  Call pointed function on each edge during
+ 	graph traversing.  Skip traversing the edge when the function
+ 	returns true.
+ 	(graphds_dfs, graphds_scc): Ditto.
+ 	(for_each_edge): New parameter.  Pass the new parameter to callback
+ 	function.
+ 	* graphds.h (skip_edge_callback): New function pointer type.
+ 	(graphds_dfs, graphds_scc): New function pointer parameter.
+ 	(graphds_edge_callback, for_each_edge): New parameter.
+ 
+ 2017-06-07  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-vect-data-refs.c (vect_mark_for_runtime_alias_test): Factor
+ 	out code checking if runtime alias check is possible to below ...
+ 	Call the new function.
+ 	* tree-data-ref.c (runtime_alias_check_p): ... to new function.
+ 	* tree-data-ref.h (runtime_alias_check_p): New decalaration.
+ 
+ 2017-06-07  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR sanitizer/80932
+ 	* fold-const.c (extract_muldiv_1) <case MINUS_EXPR>: Add
+ 	TYPE_OVERFLOW_WRAPS check.
+ 
+ 2017-06-07  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-vect-loop-manip.c (vect_do_peeling): Don't skip vector loop
+ 	if versioning is required.
+ 	* tree-vect-loop.c (vect_analyze_loop_2): Merge niter check for loop
+ 	peeling with the check for versioning.
+ 
+ 2017-06-07  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-vectorizer.h (vect_build_loop_niters): New parameter.
+ 	* tree-vect-loop-manip.c (vect_build_loop_niters): New parameter.
+ 	Set true to new parameter if new ssa variable is defined.
+ 	(vect_gen_vector_loop_niters): Refactor.  Set range information
+ 	for the new vector loop bound variable.
+ 	(vect_do_peeling): Ditto.
+ 
+ 2017-06-07  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-affine.c (ssa.h): Include header file.
+ 	(tree_to_aff_combination): Handle (T1)(X - CST) when inner type
+ 	has wrapping overflow behavior.
+ 
+ 2017-06-07  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-affine.c (tree_to_aff_combination): Handle (T1)(X + X).
+ 
+ 2017-06-07  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	(aff_combination_expand): Move (T1)(X *+- CST) simplification to ...
+ 	(tree_to_aff_combination): ... here.
+ 
+ 2017-06-07  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-ssa-loop-ivopts.c (ivopts_estimate_reg_pressure): New
+ 	reg_pressure model function.
+ 	(ivopts_global_cost_for_size): Delete.
+ 	(determine_set_costs, iv_ca_recount_cost): Call new model function
+ 	ivopts_estimate_reg_pressure.
+ 
+ 2017-06-07  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_rtx_costs): Make sdiv more
+ 	expensive than udiv.  Remove floating point cases from mod.
+ 
+ 2017-06-07  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* config/arm/aarch-cost-tables.h (cortexa53_extra_cost):
+ 	Increase idiv cost.
+ 
+ 2017-06-07  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* config/aarch64/aarch64.md
+ 	(copysignsf3): Fix mask generation.
+ 
+ 2017-06-07  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* dumpfile.h (enum tree_dump_index): Rename TDI_generic to
+ 	TDI_gimple.
+ 	(class dump_manager): Add register_dumps method.
+ 	* dumpfile.c: Include langhooks.h.
+ 	(dump_files): Use 0 instead of 3/4/5 for TDI_{original,gimple,nested}.
+ 	(FIRST_AUTO_NUMBERED_DUMP): Decrease to 1.
+ 	(FIRST_ME_AUTO_NUMBERED_DUMP): Define.
+ 	(dump_manager::dump_register): Start with 512 entries instead of 32.
+ 	(dump_manager::register_dumps): New method.
+ 	* toplev.c (general_init): Instead of invoking register_dumps
+ 	langhook, invoke register_dumps method on the dump manager.
+ 	* gimplify.c (gimplify_function_tree): Use TDI_gimple instead of
+ 	TDI_generic.
+ 
+ 2017-06-07  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* doc/md.texi: Clarify the restrictions on a define_insn condition.
+ 	Say that # requires an associated define_split to exist, and that
+ 	the define_split must be suitable for use after register allocation.
+ 
+ 2017-06-06  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* cfgbuild.c (find_bb_boundaries): Initialize profile of split blocks.
+ 	(compute_outgoing_frequencies): Also initialize zero counts.
+ 	(find_many_sub_basic_blocks): Do not produce uninitialized profile
+ 	around loops; preserve more of profile when nothing changes.
+ 
+ 2017-06-06  Jim Wilson  <jim.wilson@linaro.org>
+ 
+ 	* config/aarch64/aarch64-cost-tables.h (qdf24xx_extra_costs): Move to
+ 	here.
+ 	* config/arm/aarch-cost-tables.h (qdf24xx_extra_costs): From here.
+ 	* config/arm/arm-cpu-cdata.h: Regenerate.
+ 	* config/arm/arm-cpu-data.h, config/arm/arm-cpu.h: Likewise.
+ 	* config/arm/arm-tables.opt, config/arm/arm-tune.md: Likewise.
+ 	* config/arm/arm-cpus.in: Delete falkor and qdf24xx entries.
+ 	* config/arm/arm.c (arm_qdf24xx_tune): Delete.
+ 	* config/arm/bpabi.h (BE8_LINK_SPEC): Delete falkor and qdf24xx
+ 	support.
+ 	* config/arm/t-aprofile (MULTILIB_MATCHES): Delete falkor and qdf24xx
+ 	support.
+ 	* config/arm/t-rmprofile: Likewise.
+ 	* doc/invoke.texi (ARM Options): Drop falkor and qdf24xx support.
+ 
+ 2017-06-06  David S. Miller  <davem@davemloft.net>
+ 
+ 	PR target/80968
+ 	* config/sparc/sparc.c (sparc_expand_prologue): Emit frame
+ 	blockage if function uses alloca.
+ 
+ 2017-06-06  Maxim Kuvyrkov  <maxim.kuvyrkov@linaro.org>
+ 
+ 	* tree-ssa-loop-prefetch.c (struct mem_ref_group, struct mem_ref):
+ 	New "uid" fields to hold pretty-print IDs of group and ref.
+ 	Memory references are now identified as <group_id>:<ref_id>
+ 	instead of using [random] addresses.
+ 	(dump_mem_details): Simplify, no functional change.
+ 	(dump_mem_ref): Simplify and make output more concise.
+ 	Replace couple of fprintf's throughout code with calls to dump_mem_ref.
+ 	(find_or_create_group): Initialize group uid.
+ 	(record_ref): Initialize ref uid.  Improve debug output.
+ 	(prune_group_by_reuse, should_issue_prefetch_p,)
+ 	(should_issue_prefetch_p, schedule_prefetches, issue_prefetch_ref,)
+ 	(mark_nontemporal_store, determine_loop_nest_reuse):
+ 	Improve debug output.
+ 
+ 2017-06-06  Maxim Kuvyrkov  <maxim.kuvyrkov@linaro.org>
+ 
+ 	* dbgcnt.def (prefetch): New debug counter.
+ 	* tree-ssa-loop-prefetch.c (dbgcnt.h): New include.
+ 	(schedule_prefetches): Stop issueing prefetches if debug counter
+ 	tripped.
+ 
+ 2017-06-06  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	* doc/sourcebuild.texi (Testsuites, C Language Testsuites,
+ 	gcc.c-torture/compile): Remove mention of NO_LABEL_VALUES in fixme.
+ 
+ 2017-06-06  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* config/aarch64/atomics.md (atomic_compare_and_swap<mode> expander):
+ 	Use aarch64_reg_or_zero predicate for operand 4.
+ 	(aarch64_compare_and_swap<mode> define_insn_and_split):
+ 	Use aarch64_reg_or_zero predicate for operand 3.  Add 'Z' constraint.
+ 	(aarch64_store_exclusive<mode>): Likewise for operand 2.
+ 
+ 2017-06-06  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	* config/arm/arm.c (arm_compute_save_reg_mask): Rename into ...
+ 	(arm_compute_save_core_reg_mask): This.
+ 	(thumb1_compute_save_reg_mask): Rename into ...
+ 	(thumb1_compute_save_core_reg_mask): This.
+ 	(arm_compute_save_reg0_reg12_mask): Adapt comment.
+ 	(arm_compute_frame_layout): Likewise.
+ 
+ 2017-06-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/80974
+ 	* tree-ssa-sccvn.c (set_ssa_val_to): Do not change but only
+ 	keep or clear leaders SSA info.
+ 
+ 2017-06-06  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	* config/nvptx/nvptx.c (split_mode_p): New function.
+ 	(nvptx_declare_function_name, nvptx_print_operand): Use split_mode_p.
+ 
+ 2017-06-06  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	* config/nvptx/nvptx.c (nvptx_print_operand): Use maybe_split_mode.
+ 
+ 2017-06-06  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR bootstrap/80978
+ 	* tree-cfg.c (execute_fixup_cfg): Fix condition on when to rescale
+ 	profile.
+ 
+ 2017-06-06  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* shrink-wrap.c (handle_simple_exit): Update profile.
+ 	(try_shrink_wrapping): Upate profile.
+ 
+ 2017-06-06  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* predict.c (tree_estimate_probability_bb): Add LOCAL_ONLY.
+ 	(tree_guess_outgoing_edge_probabilities): New.
+ 	* predict.h (tree_guess_outgoing_edge_probabilities): Declare.
+ 	* tree-cfg.c (gimple_find_sub_bbs): Propagate profile.
+ 
+ 2017-06-06  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* ipa-split.c (split_function): Initialize return bb profile.
+ 
+ 2017-06-06  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* profile.c (compute_branch_probabilities): Also initialize
+ 	EXIT_BLOCK profile.
+ 
+ 2017-06-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/80928
+ 	* tree-vect-loop.c (vect_update_vf_for_slp): Amend dumps.
+ 	(vect_analyze_loop_operations): Properly guard analysis for
+ 	pure SLP case.
+ 	(vect_transform_loop): Likewise.
+ 	(vect_analyze_loop_2): Also reset SLP type on PHIs.
+ 	(vect_model_induction_cost): Do not cost for pure SLP.
+ 	(vectorizable_induction): Pass in SLP node, implement SLP vectorization
+ 	of induction in inner loop vectorization.
+ 	* tree-vect-slp.c (vect_create_new_slp_node): Handle PHIs.
+ 	(vect_get_and_check_slp_defs): Handle vect_induction_def.
+ 	(vect_build_slp_tree): Likewise.  Handle PHIs as terminating the
+ 	recursion.
+ 	(vect_analyze_slp_cost_1): Cost induction.
+ 	(vect_detect_hybrid_slp_stmts): Handle PHIs.
+ 	(vect_get_slp_vect_defs): Likewise.
+ 	* tree-vect-stmts.c (vect_analyze_stmt): Handle induction.
+ 	(vect_transform_stmt): Handle SLP reductions.
+ 	* tree-vectorizer.h (vectorizable_induction): Adjust.
+ 
+ 2017-06-05  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	* config/rs6000/rs6000.c (make_resolver_func): Update
+ 	init_lowered_empty_function call.
+ 
+ 2017-06-05  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+ 
+ 	* doc/invoke.texi: Document the -fprofile-abs-path option.
+ 	* common.opt (fprofile-abs-path): New option.
+ 	* gcov-io.h (gcov_write_filename): Declare.
+ 	* gcov-io.c (gcov_write_filename): New function.
+ 	* coverage.c (coverage_begin_function): Use gcov_write_filename.
+ 	* profile.c (output_location): Likewise.
+ 
+ 2017-06-05  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* shring-wrap.c: Revert accidental commit.
+ 
+ 2017-06-05  Volker Reichelt  <v.reichelt@netcologne.de>
+ 
+ 	* doc/invoke.texi (-Wduplicated-branches): Add to warning list.
+ 
+ 2017-06-05  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* cfgexpand.c (expand_gimple_tailcall): Initialize profile of
+ 	new edge.
+ 	* ipa-inline.c (want_inline_self_recursive_call_p): Watch for missing
+ 	profile in callgraph edge.
+ 	* profile-count.h (apply_probability): If THIS is 0, then result is 0
+ 	(apply_scale): Likewise.
+ 	* tree-inline.c (copy_bb, copy_edges_for_bb, copy_cfg_body):
+ 	Also scale profile when inlining function with zero profile.
+ 	(initialize_cfun): Update exit block profile even when it is zero.
+ 	* tree-ssa-threadupdate.c (clear_counts_path): Handle correctly case
+ 	when profile is read.
+ 
+ 2017-06-05  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	* config/rs6000/rs6000.c (toplevel): Include attribs.h.
+ 	(CLONE_*): New constants to define the processors we can generate
+ 	code for with the target_clone attribute.
+ 	(rs6000_clone_map): New array to identify which clone processors
+ 	the current program is running on.
+ 	(TARGET_COMPARE_VERSION_PRIORITY): Define to enable the
+ 	target_clone attribute.
+ 	(TARGET_GENERATE_VERSION_DISPATCHER_BODY): Likewise.
+ 	(TARGET_GET_FUNCTION_VERSIONS_DISPATCHER): Likewise.
+ 	(TARGET_OPTION_FUNCTION_VERSIONS): Likewise.
+ 	(cpu_expand_builtin): Add support for target_clone attribute.
+ 	(rs6000_valid_attribute_p): Allow "default" attribute.
+ 	(get_decl_name): New debug function to simplify printing the
+ 	current function name in debugging statements.
+ 	(rs6000_clone_priority): New functions to support the target_clone
+ 	attribute, and be able to generate code to switch between ISA 2.05
+ 	through ISA 3.0 (power6 through power9).
+ 	(rs6000_compare_version_priority): Likewise.
+ 	(rs6000_get_function_versions_dispatcher): Likewise.
+ 	(make_resolver_func): Likewise.
+ 	(add_condition_to_bb): Likewise.
+ 	(dispatch_function_versions): Likewise.
+ 	(rs6000_generate_version_dispatcher_body): Likewise.
+ 	(rs6000_can_inline_p): Call get_decl_name for debugging usage.
+ 	(fusion_gpr_load_p): Fix a spacing issue.
+ 	* doc/extend.texi (Common Function Attributes): Document that the
+ 	PowerPC supports the target_clone attribute.
+ 
+ 2017-06-05  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	* config/arm/arm.h: explain F symbol found in description of ARM
+ 	register allocation in its legend.
+ 
+ 2017-06-05  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* config/mips/frame-header-opt.c: Include profile-count.h.
+ 	* config/riscv/riscv.c: Include profile-count.h
+ 
+ 2017-06-05  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* tree-ssa-loop-im.c (execute_sm_if_changed): Add FLAG_BBS parameter;
+ 	update profile.
+ 	(sm_set_flag_if_changed): Add bbs field.
+ 	(execute_sm_if_changed_flag_set): Pass BBS.
+ 	(execute_sm): Update.
+ 
+ 2017-06-05  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* config/aarch64/aarch64-simd.md (aarch64_store_lane0<mode>):
+ 	New pattern.
+ 
+ 2017-06-05  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* config/aarch64/aarch64.md (sub<mode>3_compare1_imm): New define_insn.
+ 	(peephole2): New peephole2 to emit the above.
+ 	* config/aarch64/predicates.md (aarch64_sub_immediate): New predicate.
+ 
+ 2017-06-05  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (define_peephole2 above
+ 	*sub_<shift>_<mode>): New peephole.
+ 
+ 2017-05-23  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* config/i386/i386.c (make_resolver_func): Update.
+ 	* Makefile.in: Add profile-count.h and profile-count.o
+ 	* auto-profile.c (afdo_indirect_call): Update to new API.
+ 	(afdo_set_bb_count): Update.
+ 	(afdo_propagate_edge): Update.
+ 	(afdo_propagate_circuit): Update.
+ 	(afdo_calculate_branch_prob): Update.
+ 	(afdo_annotate_cfg): Update.
+ 	* basic-block.h: Include profile-count.h
+ 	(struct edge_def): Turn count to profile_count.
+ 	(struct basic_block_def): Likewie.
+ 	(REG_BR_PROB_BASE): Move to profile-count.h
+ 	(RDIV): Move to profile-count.h
+ 	* bb-reorder.c (max_entry_count): Turn to profile_count.
+ 	(find_traces): Update.
+ 	(rotate_loop):Update.
+ 	(connect_traces):Update.
+ 	(sanitize_hot_paths):Update.
+ 	* bt-load.c (migrate_btr_defs): Update.
+ 	* cfg.c (RDIV): Remove.
+ 	(init_flow): Use alloc_block.
+ 	(alloc_block): Uninitialize count.
+ 	(unchecked_make_edge): Uninitialize count.
+ 	(check_bb_profile): Update.
+ 	(dump_edge_info): Update.
+ 	(dump_bb_info): Update.
+ 	(update_bb_profile_for_threading): Update.
+ 	(scale_bbs_frequencies_int): Update.
+ 	(scale_bbs_frequencies_gcov_type): Update.
+ 	(scale_bbs_frequencies_profile_count): New.
+ 	* cfg.h (update_bb_profile_for_threading): Update.
+ 	(scale_bbs_frequencies_profile_count): Declare.
+ 	* cfgbuild.c (compute_outgoing_frequencies): Update.
+ 	(find_many_sub_basic_blocks): Update.
+ 	* cfgcleanup.c (try_forward_edges): Update.
+ 	(try_crossjump_to_edge): Update.
+ 	* cfgexpand.c (expand_gimple_tailcall): Update.
+ 	(construct_exit_block): Update.
+ 	* cfghooks.c (verify_flow_info): Update.
+ 	(dump_bb_for_graph): Update.
+ 	(split_edge): Update.
+ 	(make_forwarder_block): Update.
+ 	(duplicate_block): Update.
+ 	(account_profile_record): Update.
+ 	* cfgloop.c (find_subloop_latch_edge_by_profile): Update.
+ 	(get_estimated_loop_iterations): Update.
+ 	* cfgloopanal.c (expected_loop_iterations_unbounded): Update.
+ 	(single_likely_exit): Update.
+ 	* cfgloopmanip.c (scale_loop_profile): Update.
+ 	(loopify): Update.
+ 	(set_zero_probability): Update.
+ 	(lv_adjust_loop_entry_edge): Update.
+ 	* cfgrtl.c (force_nonfallthru_and_redirect): Update.
+ 	(purge_dead_edges): Update.
+ 	(rtl_account_profile_record): Update.
+ 	* cgraph.c (cgraph_node::create): Uninitialize count.
+ 	(symbol_table::create_edge): Uninitialize count.
+ 	(cgraph_update_edges_for_call_stmt_node): Update.
+ 	(cgraph_edge::dump_edge_flags): Update.
+ 	(cgraph_node::dump): Update.
+ 	(cgraph_edge::maybe_hot_p): Update.
+ 	* cgraph.h: Include profile-count.h
+ 	(create_clone), create_edge, create_indirect_edge): Update.
+ 	(cgraph_node): Turn count to profile_count.
+ 	(cgraph_edge0: Likewise.
+ 	(make_speculative, clone): Update.
+ 	(create_edge): Update.
+ 	(init_lowered_empty_function): Update.
+ 	* cgraphclones.c (cgraph_edge::clone): Update.
+ 	(duplicate_thunk_for_node): Update.
+ 	(cgraph_node::create_clone): Update.
+ 	* cgraphunit.c (cgraph_node::analyze): Update.
+ 	(cgraph_node::expand_thunk): Update.
+ 	* final.c (dump_basic_block_info): Update.
+ 	* gimple-streamer-in.c (input_bb): Update.
+ 	* gimple-streamer-out.c (output_bb): Update.
+ 	* graphite.c (print_global_statistics): Update.
+ 	(print_graphite_scop_statistics): Update.
+ 	* hsa-brig.c: Include basic-block.h.
+ 	* hsa-dump.c: Include basic-block.h.
+ 	* hsa-gen.c (T sum_slice): Update.
+ 	(convert_switch_statements):Update.
+ 	* hsa-regalloc.c: Include basic-block.h.
+ 	* ipa-chkp.c (chkp_produce_thunks): Update.
+ 	* ipa-cp.c (struct caller_statistics): Update.
+ 	(init_caller_stats): Update.
+ 	(gather_caller_stats): Update.
+ 	(ipcp_cloning_candidate_p): Update.
+ 	(good_cloning_opportunity_p): Update.
+ 	(get_info_about_necessary_edges): Update.
+ 	(dump_profile_updates): Update.
+ 	(update_profiling_info): Update.
+ 	(update_specialized_profile): Update.
+ 	(perhaps_add_new_callers): Update.
+ 	(decide_about_value): Update.
+ 	(ipa_cp_c_finalize): Update.
+ 	* ipa-devirt.c (struct odr_type_warn_count): Update.
+ 	(struct decl_warn_count): Update.
+ 	(struct final_warning_record): Update.
+ 	(possible_polymorphic_call_targets): Update.
+ 	(ipa_devirt): Update.
+ 	* ipa-fnsummary.c (redirect_to_unreachable): Update.
+ 	* ipa-icf.c (sem_function::merge): Update.
+ 	* ipa-inline-analysis.c (do_estimate_edge_time): Update.
+ 	* ipa-inline.c (compute_uninlined_call_time): Update.
+ 	(compute_inlined_call_time): Update.
+ 	(want_inline_small_function_p): Update.
+ 	(want_inline_self_recursive_call_p): Update.
+ 	(edge_badness): Update.
+ 	(lookup_recursive_calls): Update.
+ 	(recursive_inlining): Update.
+ 	(inline_small_functions): Update.
+ 	(dump_overall_stats): Update.
+ 	(dump_inline_stats): Update.
+ 	* ipa-profile.c (ipa_profile_generate_summary): Update.
+ 	(ipa_propagate_frequency): Update.
+ 	(ipa_profile): Update.
+ 	* ipa-prop.c (ipa_make_edge_direct_to_target): Update.
+ 	* ipa-utils.c (ipa_merge_profiles): Update.
+ 	* loop-doloop.c (doloop_modify): Update.
+ 	* loop-unroll.c (report_unroll): Update.
+ 	(unroll_loop_runtime_iterations): Update.
+ 	* lto-cgraph.c (lto_output_edge): Update.
+ 	(lto_output_node): Update.
+ 	(input_node): Update.
+ 	(input_edge): Update.
+ 	(merge_profile_summaries): Update.
+ 	* lto-streamer-in.c (input_cfg): Update.
+ 	* lto-streamer-out.c (output_cfg): Update.
+ 	* mcf.c (create_fixup_graph): Update.
+ 	(adjust_cfg_counts): Update.
+ 	(sum_edge_counts): Update.
+ 	* modulo-sched.c (sms_schedule): Update.
+ 	* postreload-gcse.c (eliminate_partially_redundant_load): Update.
+ 	* predict.c (maybe_hot_count_p): Update.
+ 	(probably_never_executed): Update.
+ 	(dump_prediction): Update.
+ 	(combine_predictions_for_bb): Update.
+ 	(propagate_freq): Update.
+ 	(handle_missing_profiles): Update.
+ 	(counts_to_freqs): Update.
+ 	(rebuild_frequencies): Update.
+ 	(force_edge_cold): Update.
+ 	* predict.h: Include profile-count.h
+ 	(maybe_hot_count_p, counts_to_freqs): UPdate.
+ 	* print-rtl-function.c: Do not include cfg.h
+ 	* print-rtl.c: Include basic-block.h
+ 	* profile-count.c: New file.
+ 	* profile-count.h: New file.
+ 	* profile.c (is_edge_inconsistent): Update.
+ 	(correct_negative_edge_counts): Update.
+ 	(is_inconsistent): Update.
+ 	(set_bb_counts): Update.
+ 	(read_profile_edge_counts): Update.
+ 	(compute_frequency_overlap): Update.
+ 	(compute_branch_probabilities): Update; Initialize and deinitialize
+ 	gcov_count tables.
+ 	(branch_prob): Update.
+ 	* profile.h (bb_gcov_counts, edge_gcov_counts): New.
+ 	(edge_gcov_count): New.
+ 	(bb_gcov_count): New.
+ 	* shrink-wrap.c (try_shrink_wrapping): Update.
+ 	* tracer.c (better_p): Update.
+ 	* trans-mem.c (expand_transaction): Update.
+ 	(ipa_tm_insert_irr_call): Update.
+ 	(ipa_tm_insert_gettmclone_call): Update.
+ 	* tree-call-cdce.c: Update.
+ 	* tree-cfg.c (gimple_duplicate_sese_region): Update.
+ 	(gimple_duplicate_sese_tail): Update.
+ 	(gimple_account_profile_record): Update.
+ 	(execute_fixup_cfg): Update.
+ 	* tree-inline.c (copy_bb): Update.
+ 	(copy_edges_for_bb): Update.
+ 	(initialize_cfun): Update.
+ 	(freqs_to_counts): Update.
+ 	(copy_cfg_body): Update.
+ 	(expand_call_inline): Update.
+ 	* tree-ssa-ifcombine.c (update_profile_after_ifcombine): Update.
+ 	* tree-ssa-loop-ivcanon.c (unloop_loops): Update.
+ 	(try_unroll_loop_completely): Update.
+ 	(try_peel_loop): Update.
+ 	* tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update.
+ 	* tree-ssa-loop-niter.c (estimate_numbers_of_iterations_loop): Update.
+ 	* tree-ssa-loop-split.c (connect_loops): Update.
+ 	* tree-ssa-loop-unswitch.c (hoist_guard): Update.
+ 	* tree-ssa-reassoc.c (branch_fixup): Update.
+ 	* tree-ssa-tail-merge.c (replace_block_by): Update.
+ 	* tree-ssa-threadupdate.c (create_block_for_threading): Update.
+ 	(compute_path_counts): Update.
+ 	(update_profile): Update.
+ 	(recompute_probabilities): Update.
+ 	(update_joiner_offpath_counts): Update.
+ 	(estimated_freqs_path): Update.
+ 	(freqs_to_counts_path): Update.
+ 	(clear_counts_path): Update.
+ 	(ssa_fix_duplicate_block_edges): Update.
+ 	(duplicate_thread_path): Update.
+ 	* tree-switch-conversion.c (case_bit_test_cmp): Update.
+ 	(struct switch_conv_info): Update.
+ 	* tree-tailcall.c (decrease_profile): Update.
+ 	* tree-vect-loop-manip.c (slpeel_add_loop_guard): Update.
+ 	* tree-vect-loop.c (scale_profile_for_vect_loop): Update.
+ 	* value-prof.c (check_counter): Update.
+ 	(gimple_divmod_fixed_value): Update.
+ 	(gimple_mod_pow2): Update.
+ 	(gimple_mod_subtract): Update.
+ 	(gimple_ic_transform): Update.
+ 	(gimple_stringop_fixed_value): Update.
+ 	* value-prof.h (gimple_ic): Update.
+ 
+ 2017-06-02  Carl Love  <cel@us.ibm.com>
+ 
+ 	* config/rs6000/rs6000-c: Add support for built-in functions
+ 	vector double vec_doublee (vector signed int);
+ 	vector double vec_doublee (vector unsigned int);
+ 	vector double vec_doublee (vector float);
+ 	vector double vec_doubleh (vector signed int);
+ 	vector double vec_doubleh (vector unsigned int);
+ 	vector double vec_doubleh (vector float);
+ 	vector double vec_doublel (vector signed int);
+ 	vector double vec_doublel (vector unsigned int);
+ 	vector double vec_doublel (vector float);
+ 	vector double vec_doubleo (vector signed int);
+ 	vector double vec_doubleo (vector unsigned int);
+ 	vector double vec_doubleo (vector float);.
+ 	* config/rs6000/rs6000-builtin.def: Add definitions for DOUBLEE,
+ 	DOUBLEO, DOUBLEH, DOUBLEL, UNS_DOUBLEO, UNS_DOUBLEE, UNS_DOUBLEH,
+ 	UNS_DOUBLEL.
+ 	* config/rs6000/altivec.md: Add code generator for doublee<mode>2,
+ 	unsdoubleev4si2, doubleo<mode>2, unsdoubleov4si2, doubleh<mode>2,
+ 	unsdoublehv4si2, doublel<mode>2, unsdoublelv4si2, add mode attribute
+ 	VS_sxwsp.
+ 	* config/rs6000/altivec.h: Add define for vec_doublee, vec_doubleo,
+ 	vec_doublel, vec_doubleh.
+ 	* doc/extend.texi: Update the built-in documentation file for the
+ 	new built-in functions.
+ 
+ 2017-06-02  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR jit/80954
+ 	* ipa-inline-analysis.c (free_growth_caches): Set
+ 	edge_removal_hook_holder to NULL after removing it.
+ 
+ 2017-06-02  Sudakshina Das  <sudi.das@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_select_cc_mode): Return CC_SWP for
+ 	comparision with zero.
+ 
+ 2017-06-02  Will Schmidt  <will_schmidt@vnet.ibm.com>
+ 	* config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling
+ 	for early expansion of vec_min and vec_max builtins.
+ 	(builtin_function_type): Add min/max unsigned variants to those
+ 	identified as having unsigned arguments.
+ 
+ 2017-06-02  Olivier Hainque  <hainque@adacore.com>
+ 
+ 	* config/vx-common.h (DWARF_UNWIND_INFO): Switch #define to 1.
+ 
+ 2017-06-02  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* config/aarch64/aarch64-simd.md (*aarch64_simd_vec_copy_lane<mode>):
+ 	Use VALL_F16 iterator rather than VALL.
+ 
+ 2017-06-02  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_split_compare_and_swap):
+ 	Emit CBNZ inside loop when doing a strong exchange and comparing
+ 	against zero.  Generate the CC flags after the loop.
+ 
+ 2017-06-02  David Edelsohn  <dje.gcc@gmail.com>
+ 
+ 	* dwarf2out.c (DWARF_INITIAL_LENGTH_SIZE_STR): New.
+ 	(dl_section_ref): New.
+ 	(dwarf2out_finish): Copy debug_line_section_label to dl_section_ref.
+ 	On AIX, append an expression to subtract the size of the
+ 	section length to dl_section_ref.
+ 
+ 2017-06-02  Will Schmidt  <will_schmidt@vnet.ibm.com>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling
+ 	for early expansion of vector absolute builtins.
+ 
+ 2017-06-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-slp.c (vect_detect_hybrid_slp_2): Match up
+ 	what we consider a relevant use stmt with vect_detect_hybrid_slp_stmts.
+ 
+ 2017-06-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/80948
+ 	* tree-tailcall.c (find_tail_calls): Track stmts to move in
+ 	stmt order as well.
+ 
+ 2017-06-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-loop.c (vect_analyze_loop_operations): Not relevant
+ 	PHIs are ok.
+ 	* tree-vect-stmts.c (process_use): Do not mark backedge defs
+ 	for inductions as relevant.
+ 
+ 2017-06-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-loop.c (get_initial_def_for_induction): Inline into ...
+ 	(vectorizable_induction): ... this.  Remove dead code.
+ 
+ 2017-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* builtins. (expand_builtin_alloca): Remove second parameter and
+ 	infer its value from the first parameter instead.
+ 	(expand_builtin) <BUILT_IN_ALLOCA>: Adjust call to above.
+ 
+ 2017-06-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/80903
+ 	* loop-doloop.c (add_test): Unshare sequence.
+ 
+ 2017-06-02  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+ 
+ 	* doc/invoke.texi: Document the -Wsizeof-pointer-div warning.
+ 
+ 2017-06-01  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+ 
+ 	* config/i386/i386.c (x86_64_ms_sysv_extra_clobbered_registers): Make
+ 	static.
+ 	(xlogue_layout::get_stack_space_used, xlogue_layout::s_instances,
+ 	xlogue_layout::get_instance, logue_layout::xlogue_layout,
+ 	sp_valid_at, fp_valid_at, choose_basereg): Formatting.
+ 	(xlogue_layout::get_stub_rtx): Make static.
+ 	(xlogue_layout::get_stub_name): Avoid const-cast, make static.
+ 	(xlogue_layout::compute_stub_managed_regs): Rename to...
+ 	(xlogue_layout::count_stub_managed_regs): ...this.
+ 	(xlogue_layout::is_stub_managed_reg): New function.
+ 	(xlogue_layout::m_stub_names): Rename to...
+ 	(xlogue_layout::s_stub_names): ...this, make static.
+ 	(xlogue_layout::STUB_INDEX_OFFSET, xlogue_layout::MIN_REGS,
+ 	xlogue_layout::MAX_REGS, xlogue_layout::MAX_EXTRA_REGS,
+ 	xlogue_layout::VARIANT_COUNT, xlogue_layout::STUB_NAME_MAX_LEN,
+ 	xlogue_layout::s_stub_names): Instantiate statics.
+ 	(stub_managed_regs): Remove.
+ 	(ix86_save_reg): Use xlogue_layout::compute_stub_managed_regs.
+ 	(disable_call_ms2sysv_xlogues): Rename to...
+ 	(warn_once_call_ms2sysv_xlogues): ...this, and warn only once.
+ 	(ix86_initial_elimination_offset, ix86_expand_call): Fix call_ms2sysv
+ 	warning logic.
+ 	(ix86_static_chain): Make sure that ix86_static_chain_on_stack can't
+ 	change after reload_completed.
+ 	(ix86_can_use_return_insn_p): Use the ix86_frame data structure
+ 	directly.
+ 	(ix86_expand_prologue): Likewise.
+ 	(ix86_expand_epilogue): Likewise.
+ 	(ix86_expand_split_stack_prologue): Likewise.
+ 	(ix86_compute_frame_layout): Remove frame parameter ...
+ 	(TARGET_COMPUTE_FRAME_LAYOUT): ... and export it as a target hook.
+ 	(ix86_finalize_stack_realign_flags): Call ix86_compute_frame_layout
+ 	only if necessary.
+ 	(ix86_init_machine_status): Don't set use_fast_prologue_epilogue_nregs.
+ 	(ix86_frame): Move from here ...
+ 	* config/i386/i386.h (ix86_frame): ... to here.
+ 	(machine_function): Remove use_fast_prologue_epilogue_nregs, cache the
+ 	complete ix86_frame data structure instead.  Remove some_ld_name.
+ 
+ 2017-06-01  Pierre-Marie de Rodat  <derodat@adacore.com>
+ 
+ 	* dwarf2out.c (dwarf2out_late_global_decl): Add locations for
+ 	symbols that hold a DECL_VALUE_EXPR.
+ 
+ 2017-06-01  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR tree-optimization/80898
+ 	* tree-sra.c (process_subtree_disqualification): Removed.
+ 	(disqualify_candidate): Do not acll
+ 	process_subtree_disqualification.
+ 	(subtree_mark_written_and_enqueue): New function.
+ 	(propagate_all_subaccesses): Set grp_write of LHS subtree if the
+ 	RHS has been disqualified and re-queue LHS if necessary.  Apart
+ 	from that, ignore disqualified RHS.
+ 
+ 2017-06-01  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	* config/s390/s390.c (s390_emit_epilogue): Disable early return
+ 	address fetch for z10 or later.
+ 
+ 2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.md (tst_movb): Add guard when splitting.
+ 
+ 2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.c (arc_can_eliminate): Test against
+ 	arc_frame_pointer_needed.
+ 
+ 2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.c (arc_expand_prologue): Emit a special barrier
+ 	to prevent store reordering.
+ 	* config/arc/arc.md (UNSPEC_ARC_STKTIE): Define.
+ 	(type): Add block type.
+ 	(stack_tie): Define special instruction to be used in
+ 	expand_prologue.
+ 
+ 2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.md (commutative_binary_comparison): Remove 'I'
+ 	constraint. It is not valid for the pattern.
+ 	(noncommutative_binary_comparison): Likewise.
+ 
+ 2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/simdext.md (movv2hi_insn): Change predicate to avoid
+ 	scaled addresses.
+ 
+ 2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.c (arc_conditional_register_usage): Allow r30 to
+ 	be used by the reg-alloc.
+ 
+ 2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.md (mulsi3): Avoid use of hard registers before
+ 	reg-alloc when having mul64 or mul32x16 instructions.
+ 	(mulsidi3): Likewise.
+ 	(umulsidi3): Likewise.
+ 	(mulsi32x16): New pattern.
+ 	(mulsi64): Likewise.
+ 	(mulsidi64): Likewise.
+ 	(umulsidi64): Likewise.
+ 	(MUL32x16_REG): Define.
+ 	(mul64_600): Use MUL32x16_REG.
+ 	(mac64_600): Likewise.
+ 	(umul64_600): Likewise.
+ 	(umac64_600): Likewise.
+ 
+ 2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.md (mulsi3_700): Make it commutative.
+ 
+ 2017-06-01  Jose E. Marchesi  <jose.marchesi@oracle.com>
+ 
+ 	* config/sparc/sparc.md (*zero_extendsidi2_insn_sp64): Set insn
+ 	type for movstouw.
+ 	(*sign_extendsidi2_insn): Likewise for movstosw.
+ 
+ 2017-06-01  Pierre-Marie de Rodat  <derodat@adacore.com>
+ 
+ 	* dwarf2out.c (get_discr_value): Call the get_debug_type hook on
+ 	the type of the input discriminant value.  Convert the
+ 	discriminant value of signedness vary.
+ 
+ 2017-06-01  Volker Reichelt  <v.reichelt@netcologne.de>
+ 
+ 	* doc/invoke.texi (-Wcatch-value): Document new shortcut.
+ 	Add to -Wall section.
+ 
+ 2017-06-01  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/66313
+ 	* fold-const.c (fold_plusminus_mult_expr): If the factored
+ 	factor may be zero use a wrapping type for the inner operation.
+ 	* tree-tailcall.c (independent_of_stmt_p): Pass in to_move bitmap
+ 	and handle moved defs.
+ 	(process_assignment): Properly guard the unary op case.  Return a
+ 	tri-state indicating that moving the stmt before the call may allow
+ 	to continue.  Pass through to_move.
+ 	(find_tail_calls): Handle moving unrelated defs before
+ 	the call.
+ 
+ 2017-05-31  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR target/80618
+ 	* config/rs6000/vector.md (*vector_uneq<mode>): Write the nor in the
+ 	splitter result in the canonical way.
+ 
+ 2017-05-31  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.md (*zero_extendsidi2): Enable alternative (?r, *Yj)
+ 	also for 32bit target.  Update insn attributes.
+ 	(zero-extendsidi2 splitter): Allow all registers for operand 1.
+ 
+ 2017-05-31  Sebastian Peryt  <sebastian.peryt@intel.com>
+ 
+ 	* config/i386/avx512fintrin.h (_mm_mask_max_sd)
+ 	(_mm_maskz_max_sd, _mm_mask_max_ss, _mm_maskz_max_ss)
+ 	(_mm_mask_min_sd, _mm_maskz_min_sd, _mm_mask_min_ss)
+ 	(_mm_maskz_min_ss): New intrinsics.
+ 
+ 2017-05-31  Martin Liska  <mliska@suse.cz>
+ 
+ 	* tree-vect-loop.c (vect_create_epilog_for_reduction):
+ 	Change comment style to one we normally use.
+ 	(vectorizable_reduction): Likewise.
+ 	(vectorizable_induction): Likewise.
+ 	* tree-vect-stmts.c (vectorizable_mask_load_store): Likewise.
+ 	(vectorizable_call): Likewise.
+ 	(vectorizable_simd_clone_call): Likewise.
+ 	(vectorizable_conversion): Likewise.
+ 	(vectorizable_assignment): Likewise.
+ 	(vectorizable_shift): Likewise.
+ 	(vectorizable_operation): Likewise.
+ 	(vectorizable_store): Likewise.
+ 	(vectorizable_load): Likewise.
+ 	* tree-vectorizer.h: Likewise.
+ 
+ 2017-05-31  Alexander Monakov  <amonakov@ispras.ru>
+ 
+ 	* passes.c (emergency_dump_function): New.
+ 	* tree-pass.h (emergency_dump_function): Declare.
+ 	* plugin.c (plugins_internal_error_function): Remove.
+ 	* plugin.h (plugins_internal_error_function): Remove declaration.
+ 	* toplev.c (internal_error_function): New static function.  Use it...
+ 	(general_init): ...here.
+ 
+ 2017-05-31  Graham Markall  <graham.markall@embecosm.com>
+ 
+ 	* config/arc/arc.c (arc_print_operand): Handle constant operands.
+ 	(arc_rtx_costs): Add costs for new patterns.
+ 	* config/arc/arc.md: Additional *add_n and *sub_n patterns.
+ 	* config/arc/predicates.md: Add _1_2_3_operand predicate.
+ 
+ 2017-05-31  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* tree-ssa-strlen.c (get_next_strinfo): New function.
+ 	(get_stridx_plus_constant): Use it.
+ 	(zero_length_string): Likewise.
+ 	(adjust_related_strinfos): Likewise.
+ 	(adjust_last_stmt): Likewise.
+ 
+ 2017-05-31  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR target/80880
+ 	* config/i386/i386.c (ix86_expand_builtin): Remove assert
+ 	for arg being an SSA name when expanding IX86_BUILTIN_BNDRET.
+ 
+ 2017-05-31  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* tree-vect-data-refs.c (vect_find_same_alignment_drs): Remove
+ 	loop_vinfo argument and use of dependence distance vectors.
+ 	Check instead whether the two references differ only in their
+ 	initial value and assume that they have the same alignment if the
+ 	difference is a multiple of the vector alignment.
+ 	(vect_analyze_data_refs_alignment): Update call accordingly.
+ 
+ 2017-05-31  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR target/79155
+ 	* config/i386/cpuid.h: Fix typo in a comment in cpuid.h.
+ 
+ 2017-05-31  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-vect-loop-manip.c (create_intersect_range_checks_index)
+ 	(create_intersect_range_checks): Move from ...
+ 	* tree-data-ref.c (create_intersect_range_checks_index)
+ 	(create_intersect_range_checks): ... to here.
+ 	(create_runtime_alias_checks): New function factored from ...
+ 	* tree-vect-loop-manip.c (vect_create_cond_for_alias_checks): ...
+ 	here.  Call above function.
+ 	* tree-data-ref.h (create_runtime_alias_checks): New function.
+ 
+ 2017-05-31  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-data-ref.c (prune_runtime_alias_test_list): Relax minimal
+ 	segment length for dr_b and compute it in wide_int.
+ 
+ 2017-05-31  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/80906
+ 	* graphite-isl-ast-to-gimple.c (copy_loop_close_phi_nodes): Get
+ 	and pass through iv_map.
+ 	(copy_bb_and_scalar_dependences): Adjust.
+ 	(translate_pending_phi_nodes): Likewise.
+ 	(copy_loop_close_phi_args): Handle code-generating IVs instead
+ 	of ICEing.
+ 
+ 2017-05-30  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* diagnostic-color.c (color_dict): Add "type-diff".
+ 	(parse_gcc_colors): Update comment.
+ 	* doc/invoke.texi (Diagnostic Message Formatting Options): Add
+ 	-fdiagnostics-show-template-tree and -fno-elide-type.
+ 	(GCC_COLORS): Add type-diff to example.
+ 	(type-diff=): New.
+ 	(-fdiagnostics-show-template-tree): New.
+ 	(-fno-elide-type): New.
+ 	* pretty-print.c (pp_format): Pass quote and formatters[argno] to
+ 	the pp_format_decoder callback.  Call any m_format_postprocessor's
+ 	"handle" method.
+ 	(pretty_printer::pretty_printer): Initialize
+ 	m_format_postprocessor.
+ 	(pretty_printer::~pretty_printer): Delete any
+ 	m_format_postprocessor.
+ 	* pretty-print.h (printer_fn): Add bool and const char ** parameters.
+ 	(class format_postprocessor): New class.
+ 	(struct pretty_printer::format_decoder): Document the new parameters.
+ 	(struct pretty_printer::m_format_postprocessor): New field.
+ 	* tree-diagnostic.c (default_tree_printer): Update for new
+ 	bool and const char ** params.
+ 	* tree-diagnostic.h (default_tree_printer): Likewise.
+ 
+ 2017-05-30  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/predicates.md (cc_reg_not_micro_cr0_operand): Delete.
+ 	(lwa_operand): Delete rs6000_gen_cell_microcode test.
+ 	* config/rs6000/rs6000.c (rs6000_option_override_internal): Delete
+ 	rs6000_gen_cell_microcode code.
+ 	(rs6000_final_prescan_insn): Delete.
+ 	(rs6000_opt_vars): Delete the "gen-cell-microcode" and
+ 	"warn-cell-microcode" entries.
+ 	* config/rs6000/rs6000.h (FINAL_PRESCAN_INSN): Delete.
+ 	* config/rs6000/rs6000.md: Delete rs6000_gen_cell_microcode tests
+ 	throughout.  Change cc_reg_not_micro_cr0_operand to
+ 	cc_reg_not_cr0_operand throughout.
+ 	(*extendhi<mode>2_noload): Delete.
+ 	* config/rs6000/rs6000.opt (mgen-cell-microcode): Replace by stub.
+ 	(mwarn-cell-microcode): Delete.
+ 	* doc/invoke.texi (RS/6000 and PowerPC Options): Delete
+ 	-mgen-cell-microcode and -mwarn-cell-microcode.
+ 
+ 2017-05-30  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/80833
+ 	* config/i386/constraints.md (Yd): New constraint.
+ 	(Ye): Ditto.
+ 	* config/i386/i386.md (*movti_internal): Add (?r, Ye)
+ 	and (?Yd, r) alternatives.  Update insn attributes.
+ 	* config/i386/i386.md (*movti_internal): Add (?r, *Ye)
+ 	and (?*Yd, r) alternatives.  Update insn attributes.
+ 	(double-mode inter-unit splitters): Add new GR<->XMM splitters.
+ 
+ 2017-05-30  Pierre-Marie de Rodat  <derodat@adacore.com>
+ 
+ 	* gimplify.c (gimplify_modify_expr): Don't create a
+ 	DECL_DEBUG_EXPR link if *FROM_P does not belong to the current
+ 	function.
+ 
+ 2017-05-30  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	* config/arm/arm-builtins.c (arm_expand_builtin): Remove const.
+ 
+ 2017-05-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vectorizer.h (struct _stmt_vec_info): Add reduc_type
+ 	and reduc_def fields.
+ 	(STMT_VINFO_REDUC_TYPE): New define.
+ 	(STMT_VINFO_REDUC_DEF): Likewise.
+ 	(vect_force_simple_reduction): Adjust prototype.
+ 	* tree-vect-loop.c (vect_analyze_scalar_cycles_1): Adjust.
+ 	(vect_is_simple_reduction): Remove check_reduction argument.
+ 	(vect_force_simple_reduction): Adjust and set
+ 	STMT_VINFO_REDUC_TYPE and STMT_VINFO_REDUC_DEF.
+ 	(vectorizable_reduction): Do not re-do reduction analysis
+ 	but use STMT_VINFO_REDUC_TYPE and STMT_VINFO_REDUC_DEF.
+ 	* tree-parloops.c (gather_scalar_reductions): Adjust.
+ 
+ 2017-05-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/80901
+ 	* cfgexpand.c (expand_gimple_cond): Match up loop fixup with
+ 	split_edge code.
+ 
+ 2017-05-24  Robin Dapp  <rdapp@linux.vnet.ibm.com>
+ 
+ 	* tree-vect-data-refs.c (vect_get_peeling_costs_all_drs):
+ 	Introduce unknown_misalignment parameter and remove vf.
+ 	(vect_peeling_hash_get_lowest_cost):
+ 	Pass unknown_misalignment parameter.
+ 	(vect_enhance_data_refs_alignment):
+ 	Fix unsupportable data ref treatment.
+ 
+ 2017-05-30  Robin Dapp  <rdapp@linux.vnet.ibm.com>
+ 
+ 	* tree-vect-data-refs.c (vect_get_data_access_cost):
+ 	Workaround for SLP handling.
+ 	(vect_enhance_data_refs_alignment):
+ 	Compute costs for doing no peeling at all, compare to the best
+ 	peeling costs so far and avoid peeling if cheaper.
+ 
+ 2017-05-30  Robin Dapp  <rdapp@linux.vnet.ibm.com>
+ 
+ 	* tree-vect-data-refs.c (vect_peeling_hash_choose_best_peeling):
+ 	Return peeling info and set costs to zero for unlimited cost
+ 	model.
+ 	(vect_enhance_data_refs_alignment): Also inspect all datarefs
+ 	with unknown misalignment. Compute and costs for unknown
+ 	misalignment, compare them to the costs for known misalignment
+ 	and choose the cheapest for peeling.
+ 
+ 2017-05-30  Robin Dapp  <rdapp@linux.vnet.ibm.com>
+ 
+ 	* tree-vect-data-refs.c (vect_update_misalignment_for_peel): Rename.
+ 	(vect_get_peeling_costs_all_drs): Create function.
+ 	(vect_peeling_hash_get_lowest_cost):
+ 	Use vect_get_peeling_costs_all_drs.
+ 	(vect_peeling_supportable): Create function.
+ 	(vect_enhance_data_refs_alignment): Use vect_peeling_supportable.
+ 
+ 2017-05-30  Robin Dapp  <rdapp@linux.vnet.ibm.com>
+ 
+ 	* tree-vect-data-refs.c (vect_compute_data_ref_alignment): Create
+ 	DR_HAS_NEGATIVE_STEP.
+ 	(vect_update_misalignment_for_peel): Define DR_MISALIGNMENT.
+ 	(vect_enhance_data_refs_alignment): Use.
+ 	(vect_duplicate_ssa_name_ptr_info): Use.
+ 	* tree-vectorizer.h (dr_misalignment): Use.
+ 	(known_alignment_for_access_p): Use.
+ 
+ 2017-05-30  Jozef Lawrynowicz  <jozef.l@somniumtech.com>
+ 
+ 	PR target/78838
+ 	* config/msp430/msp430.c (gen_prefix): Return NULL when section name is
+ 	.lowtext.
+ 	(has_section_name): New function.
+ 
+ 2017-05-30  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR other/80909
+ 	* auto-profile.c (get_function_decl_from_block): Fix
+ 	parenthesis.
+ 
+ 2017-05-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/80876
+ 	* cfgexpand.c (expand_gimple_cond): Fixup preserving loops again.
+ 
+ 2017-05-30  Martin Liska  <mliska@suse.cz>
+ 
+ 	* dumpfile.c: Use newly added macro DUMP_FILE_INFO.
+ 	* dumpfile.h (struct dump_file_info): Remove ctors.
+ 
+ 2017-05-30  Martin Liska  <mliska@suse.cz>
+ 
+ 	* predict.def: Fix GNU coding style.
+ 
+ 2017-05-29  Max Filippov  <jcmvbkbc@gmail.com>
+ 
+ 	* config/xtensa/xtensa.c (xtensa_initial_elimination_offset):
+ 	Mark 'to' argument with ATTRIBUTE_UNUSED.
+ 
+ 2017-05-29  Max Filippov  <jcmvbkbc@gmail.com>
+ 
+ 	* config/xtensa/xtensa.c (xtensa_emit_call): Use
+ 	HOST_WIDE_INT_PRINT_HEX instead of 0x%lx format string.
+ 	(print_operand): Use HOST_WIDE_INT_PRINT_DEC instead of %ld
+ 	format string.
+ 
+ 2017-05-29  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* doc/install.texi (Options specification): Restore entry of
+ 	--enable-sjlj-exceptions.
+ 
+ 2017-05-27  Michael Eager  <eager@eagercon.com>
+ 
+ 	Revert:
+ 	2016-01-21  Ajit Agarwal  <ajitkum@xilinx.com>
+ 
+ 	See https://gcc.gnu.org/ml/gcc/2017-05/msg00221.html.
+ 
+ 	* config/microblaze/microblaze.h
+ 	(FIXED_REGISTERS): Update in macro.
+ 	(CALL_USED_REGISTERS): Update in macro.
+ 
+ 2017-05-27  François-Xavier Coudett  <fxcoudert@gcc.gnu.org>
+ 
+ 	* doc/install.texi: Add links to macOS binary distributions.
+ 
+ 2017-05-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR bootstrap/80887
+ 	Revert:
+ 	2017-05-25  Marc Glisse  <marc.glisse@inria.fr>
+ 
+ 	* match.pd ((A +- CST1) +- CST2): Allow some conversions.
+ 
+ 2017-05-26  Martin Liska  <mliska@suse.cz>
+ 
+ 	* dumpfile.h (enum dump_kind): Renumber TDF_* flags to be contiguous.
+ 
+ 2017-05-26  Martin Liska  <mliska@suse.cz>
+ 
+ 	* cfg.c (check_bb_profile): Do not use TDF_COMMENT and print
+ 	always leading ';; '.
+ 	(dump_bb_info): Likewise.
+ 	(brief_dump_cfg): Likewise.
+ 	* cfgrtl.c (print_rtl_with_bb): Do not use TDF_COMMENT.
+ 	* dumpfile.c: Remove usage of TDF_VERBOSE.
+ 	* dumpfile.h (enum dump_kind): Likewise.
+ 	(dump_gimple_bb_header): Do not use TDF_COMMENT.
+ 	* print-tree.c (debug_verbose): Remove.
+ 	* tree-cfg.c (gimple_dump_cfg): Do not use TDF_COMMENT.
+ 	(dump_function_to_file): Remove dumps guarded with TDF_VERBOSE.
+ 	* tree-diagnostic.c (default_tree_printer): Replace
+ 	TDF_DIAGNOSTIC with TDF_SLIM.
+ 
+ 2017-05-26  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-vect-loop-manip.c (create_intersect_range_checks_index): Pass
+ 	in parameter loop, rather than loop_vinfo.
+ 	(create_intersect_range_checks): Ditto.
+ 	(vect_create_cond_for_alias_checks): Update call to above functions.
+ 
+ 2017-05-26  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	PR tree-optimization/80815
+ 	* tree-data-ref.c (prune_runtime_alias_test_list): Simplify condition
+ 	for merging runtime alias checks.  Handle negative DR_STEPs.
+ 
+ 2017-05-26  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-vect-data-refs.c (Operator==, comp_dr_with_seg_len_pair):
+ 	Move from ...
+ 	* tree-data-ref.c (Operator==, comp_dr_with_seg_len_pair): To here.
+ 	* tree-vect-data-refs.c (vect_prune_runtime_alias_test_list): Factor
+ 	out code pruning runtime alias checks.
+ 	* tree-data-ref.c (prune_runtime_alias_test_list): New function
+ 	factored out from above.
+ 	* tree-vectorizer.h (struct dr_with_seg_len, dr_with_seg_len_pair_t):
+ 	Move from ...
+ 	* tree-data-ref.h (struct dr_with_seg_len, dr_with_seg_len_pair_t):
+ 	... to here.
+ 	(prune_runtime_alias_test_list): New decalaration.
+ 
+ 2017-05-26  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-vect-data-refs.c (compare_tree): Rename and move ...
+ 	* tree-data-ref.c (data_ref_compare_tree): ... to here.
+ 	* tree-data-ref.h (data_ref_compare_tree): New decalaration.
+ 	* tree-vect-data-refs.c (dr_group_sort_cmp): Update uses.
+ 	(operator==, comp_dr_with_seg_len_pair): Ditto.
+ 	(vect_prune_runtime_alias_test_list): Ditto.
+ 
+ 2017-05-26  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR ipa/80663
+ 	* params.def: Bound partial-inlining-entry-probability param.
+ 
+ 2017-05-26  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR sanitizer/80875
+ 	* fold-const.c (fold_binary_loc) <case MULT_EXPR>: Check if OP1
+ 	can be negated.
+ 
+ 2017-05-26  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/80842
+ 	* tree-ssa-ccp.c (set_lattice_value): Always meet with the old
+ 	value.
+ 
+ 2017-05-26  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/80844
+ 	* tree-vectorizer.c (adjust_simduid_builtins): Propagate results.
+ 
+ 2017-05-25  Sebastian Peryt  <sebastian.peryt@intel.com>
+ 
+ 	* doc/md.texi (Machine Constraints): Update x86 family
+ 	machine constraints section to match 'config/i386/constraints.md'.
+ 
+ 2017-05-25  Volker Reichelt  <v.reichelt@netcologne.de>
+ 
+ 	* doc/invoke.texi (-Wcatch-value=): Document new warning option.
+ 
+ 2017-05-25  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* doc/invoke.texi (--enable-languages): Update documentation.
+ 
+ 2017-05-25  Martin Liska  <mliska@suse.cz>
+ 
+ 	* dumpfile.c: Add TDF_FOLDING.
+ 	* dumpfile.h (enum dump_kind): Likewise.
+ 	* genmatch.c (dt_simplify::gen_1): Use it.
+ 
+ 2017-05-25  Marc Glisse  <marc.glisse@inria.fr>
+ 
+ 	* match.pd (view_convert (convert@0 @1)): Handle zero-extension.
+ 
+ 2017-05-25  Marc Glisse  <marc.glisse@inria.fr>
+ 
+ 	* match.pd ((A +- CST1) +- CST2): Allow some conversions.
+ 	* tree.c (drop_tree_overflow): Handle COMPLEX_CST and VECTOR_CST.
+ 
+ 2017-05-25  Marc Glisse  <marc.glisse@inria.fr>
+ 
+ 	* fold-const.c (fold_binary_loc) [(A & C) == D]: Remove transformation.
+ 	* match.pd (X == C): Rewrite it here.
+ 	(with_possible_nonzero_bits, with_possible_nonzero_bits2,
+ 	with_certain_nonzero_bits2): New predicates.
+ 	* tree-ssanames.c (get_nonzero_bits): Handle INTEGER_CST.
+ 
+ 2017-05-24  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* lto-streamer-in.c (lto_input_data_block): Adjust T const cast to
+ 	avoid warning.
+ 
+ 	* auto-profile.c (afdo_propagate): Adjust T const cast to avoid
+ 	warning.
+ 
+ 2017-05-24  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/powerpcspe: New port.  Files are copied from the rs6000
+ 	port, with "rs6000" in filenames replaced by "powerpcspe".
+ 
+ 2017-05-24  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	PR rtl-optimization/80754
+ 	* lra-remat.c (do_remat): Add overlap checks for dst_regno.
+ 
+ 2017-05-24  Sheldon Lobo  <smlobo@sheldon.us.oracle.com>
+ 
+ 	* config/sparc/sparc.md (length): Return the correct value for -mflat
+ 	sibcalls to match output_sibcall.
+ 
+ 2017-05-24  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR bootstrap/80860
+ 	PR bootstrap/80843
+ 	* config/rs6000/rs6000.c (struct machine_function): Add new field
+ 	n_components.
+ 	(rs6000_get_separate_components): Init that field, use it.
+ 	(rs6000_components_for_bb): Use the field.
+ 
+ 2017-05-24  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	* config/arm/arm.c (arm_expand_prologue): Fix typo in comment.
+ 
+ 2017-05-24  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	PR middle-end/80823
+ 	* tree-cfg.c (group_case_labels_stmt): Delete increment of "i";
+ 
+ 2017-05-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	PR target/80725
+ 	* config/s390/s390.c (s390_check_qrst_address): Check incoming
+ 	address against address_operand predicate.
+ 	* config/s390/s390.md ("*indirect_jump"): Swap alternatives.
+ 
+ 2017-05-24  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* var-tracking.c (track_expr_p): Do not return 0 for tracked record
+ 	parameters passed indirectly.
+ 
+ 2017-05-23  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.md (*movdi_internal): Remove SSE4
+ 	alternative 18 (?r, *v).  Update insn attributes.
+ 	(*movsi_internal): Remove SSE4 alternative 13 (?r, *v).
+ 	Update insn attributes.
+ 	(*zero_extendsidi2): Remove SSE4 alternative (?r, *x).
+ 	Update insn attributes.
+ 	* config/i386/sse.md (vec_extract<ssevecmodelower>_0): Remove SSE4
+ 	alternative 1 (r, v). Remove isa attribute.
+ 	* config/i386/i386.c (dimode_scalar_chain::make_vector_copies):
+ 	Always move value through stack for !TARGET_INTER_UNIT_MOVES_TO_VEC
+ 	and !TARGET_INTER_UNIT_MOVES_TO_VEC targets.
+ 
+ 2017-05-23  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	* doc/sourcebuild.texi (Directives, Verify compiler message): Document
+ 	dg-line directive.
+ 
+ 2017-05-23  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* cgraphunit.c (symbol_table::process_new_functions): Update.
+ 	* ipa-fnsummary.c (pass_data_inline_parameters): Remove.
+ 	(inline_generate_summary): Rename to ...
+ 	(ipa_fn_summary_generate): ... this one.
+ 	(inline_read_summary): Rename to ...
+ 	(ipa_fn_summary_read): ... this one.
+ 	(inline_write_summary): Rename to ...
+ 	(ipa_fn_summary_write): ... this one.
+ 	(inline_free_summary): Rename to ...
+ 	(ipa_free_fn_summary): ... this one.
+ 	(pass_data_local_fn_summary, pass_local_fn_summary,
+ 	make_pass_local_fn_summary, pass_data_ipa_free_fn_summary,
+ 	pass_ipa_free_fn_summary, make_pass_ipa_free_fn_summary,
+ 	pass_data_ipa_fn_summary, pass_ipa_fn_summary,
+ 	make_pass_ipa_fn_summary): New.
+ 	* ipa-fnsummary.h (inline_generate_summary, inline_read_summary,
+ 	inline_write_summary, inline_free_summary): Remove.
+ 	(ipa_free_fn_summary) : New.
+ 	* ipa-inline.c (ipa_inline): Update.
+ 	(pass_ipa_inline): Do not generate summaries.
+ 	* ipa.c (pass_data_ipa_free_fn_summary, pass_ipa_free_fn_summary):
+ 	Remove.
+ 	* passes.def: Replace pass_inline_parameters by pass_local_fn_summary
+ 	and add pass_ipa_fn_summary.
+ 	* tree-pass.h (make_pass_ipa_fn_summary, make_pass_local_fn_summary):
+ 	New.
+ 	(make_pass_inline_parameters): Remove.
+ 
+ 2017-05-23  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	* omp-low.c (struct omp_context): Remove "default_kind" member.
+ 	Adjust all users.
+ 
+ 	* omp-offload.c (execute_oacc_device_lower): Remove the
+ 	parallelism dimensions function attributes for unparallelized
+ 	OpenACC kernels constructs.
+ 
+ 2017-05-23  Martin Liska  <mliska@suse.cz>
+ 
+ 	* cgraph.c (cgraph_node::get_create): Use symtab_node::dump_{asm_,}name
+ 	functions.
+ 	(cgraph_edge::make_speculative): Likewise.
+ 	(cgraph_edge::resolve_speculation): Likewise.
+ 	(cgraph_edge::redirect_call_stmt_to_callee): Likewise.
+ 	(cgraph_node::dump): Likewise.
+ 	* cgraph.h: Likewise.
+ 	* cgraphunit.c (analyze_functions): Likewise.
+ 	(symbol_table::compile): Likewise.
+ 	* ipa-cp.c (print_all_lattices): Likewise.
+ 	(determine_versionability): Likewise.
+ 	(initialize_node_lattices): Likewise.
+ 	(ipcp_verify_propagated_values): Likewise.
+ 	(estimate_local_effects): Likewise.
+ 	(update_profiling_info): Likewise.
+ 	(create_specialized_node): Likewise.
+ 	(perhaps_add_new_callers): Likewise.
+ 	(decide_about_value): Likewise.
+ 	(decide_whether_version_node): Likewise.
+ 	(identify_dead_nodes): Likewise.
+ 	(ipcp_store_bits_results): Likewise.
+ 	* ipa-devirt.c (dump_targets): Likewise.
+ 	(ipa_devirt): Likewise.
+ 	* ipa-icf.c (sem_item::dump): Likewise.
+ 	(sem_function::equals): Likewise.
+ 	(sem_variable::equals): Likewise.
+ 	(sem_item_optimizer::read_section): Likewise.
+ 	(sem_item_optimizer::execute): Likewise.
+ 	(congruence_class::dump): Likewise.
+ 	* ipa-inline-analysis.c (dump_ipa_call_summary): Likewise.
+ 	(dump_inline_summary): Likewise.
+ 	(estimate_node_size_and_time): Likewise.
+ 	(inline_analyze_function): Likewise.
+ 	* ipa-inline-transform.c (inline_call): Likewise.
+ 	* ipa-inline.c (report_inline_failed_reason): Likewise.
+ 	(want_early_inline_function_p): Likewise.
+ 	(edge_badness): Likewise.
+ 	(update_edge_key): Likewise.
+ 	(inline_small_functions): Likewise.
+ 	* ipa-profile.c (ipa_profile): Likewise.
+ 	* ipa-prop.c (ipa_print_node_jump_functions): Likewise.
+ 	(ipa_make_edge_direct_to_target): Likewise.
+ 	(remove_described_reference): Likewise.
+ 	(ipa_impossible_devirt_target): Likewise.
+ 	(propagate_controlled_uses): Likewise.
+ 	(ipa_print_node_params): Likewise.
+ 	(ipcp_transform_function): Likewise.
+ 	* ipa-pure-const.c (pure_const_read_summary): Likewise.
+ 	(propagate_pure_const): Likewise.
+ 	* ipa-reference.c (generate_summary): Likewise.
+ 	(read_write_all_from_decl): Likewise.
+ 	(propagate): Likewise.
+ 	(ipa_reference_read_optimization_summary): Likewise.
+ 	* ipa-utils.c (ipa_merge_profiles): Likewise.
+ 	* ipa.c (walk_polymorphic_call_targets): Likewise.
+ 	(symbol_table::remove_unreachable_nodes): Likewise.
+ 	(ipa_single_use): Likewise.
+ 	* passes.c (execute_todo): Likewise.
+ 	* predict.c (drop_profile): Likewise.
+ 	* symtab.c (symtab_node::get_dump_name): New function.
+ 	(symtab_node::dump_name): Likewise.
+ 	(symtab_node::dump_asm_name): Likewise.
+ 	(symtab_node::dump_references): Likewise.
+ 	(symtab_node::dump_referring): Likewise.
+ 	(symtab_node::dump_base): Likewise.
+ 	(symtab_node::debug_symtab): Likewise.
+ 	* tree-sra.c (convert_callers_for_node): Likewise.
+ 	* tree-ssa-structalias.c (ipa_pta_execute): Likewise.
+ 	* value-prof.c (init_node_map): Likewise.
+ 
+ 2017-05-23  Martin Liska  <mliska@suse.cz>
+ 
+ 	* cgraph.h: Move symtab_node::dump_table to symbol_table::dump
+ 	and symtab_node::debug_symtab to symbol_table::debug.
+ 	* cgraphunit.c (analyze_functions): Use the renamed function.
+ 	(symbol_table::compile): Likewise.
+ 	* ipa-cp.c (ipcp_verify_propagated_values): Likewise.
+ 	* ipa-icf.c (sem_item_optimizer::execute): Likewise.
+ 	* passes.c (execute_todo): Likewise.
+ 	* symtab.c (symbol_table::dump): New function.
+ 	* tree-ssa-structalias.c (ipa_pta_execute): Use the renamed function.
+ 
+ 2017-05-23  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* ipa-fnsummary.c (estimate_node_size_and_time): Do not sanity check
+ 	that nonconst implies exec.
+ 
+ 2017-05-23  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* ipa-inline-analysis.c (cgraph_2edge_hook_list, cgraph_edge_hook_list,
+ 	inline_edge_removal_hook, inline_edge_duplication_hook): Remove.
+ 	(inline_edge_summary_vec): Turn into ...
+ 	(ipa_call_summaries): ... this one.
+ 	(redirect_to_unreachable, edge_set_predicate,
+ 	evaluate_properties_for_edge, inline_summary_alloc,
+ 	reset_ipa_call_summary, reset_inline_summary,
+ 	inline_summary_t::duplicate): Update.
+ 	(inline_edge_duplication_hook): Turn to ...
+ 	(ipa_call_summary_t::duplicate): ... this one.
+ 	(inline_edge_removal_hook): Turn to ...
+ 	(ipa_call_summary_t::remove): ... this one.
+ 	(dump_inline_edge_summary): Turn to ...
+ 	(dump_ipa_call_summary): ... this one.
+ 	(estimate_function_body_sizes): Update.
+ 	(inline_update_callee_summaries): Update.
+ 	(remap_edge_change_prob): Update.
+ 	(remap_edge_summaries): Update.
+ 	(inline_merge_summary): Update.
+ 	(do_estimate_edge_time): Update.
+ 	(inline_generate_summary): Update.
+ 	(inline_read_section): Update.
+ 	(inline_read_summary): Update.
+ 	(inline_free_summary): Update.
+ 	* ipa-inline.c (can_inline_edge_p): Update.
+ 	(compute_inlined_call_time): Update.
+ 	(want_inline_small_function_p): Update.
+ 	(edge_badness): Update.
+ 	(early_inliner): Update.
+ 	* ipa-inline.h (inline_edge_summary): Turn to ...
+ 	(ipa_call_summary): ... this one.
+ 	(ipa_call_summary_t): New class.
+ 	(inline_edge_summary_t, inline_edge_summary_vec): Remove.
+ 	(ipa_call_summaries): New.
+ 	(inline_edge_summary): Remove.
+ 	(estimate_edge_growth): Update.
+ 	* ipa-profile.c (ipa_propagate_frequency_1): Update.
+ 	* ipa-prop.c (ipa_make_edge_direct_to_target): Update.
+ 	* ipa-split.c (execute_split_functions): Update.
+ 	* ipa.c (symbol_table::remove_unreachable_nodes): Update.
+ 
+ 2017-05-23  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	* doc/sourcebuild.texi (Effective-Target Keywords, Other hardware
+ 	attributes): Document rdrand effective target.
+ 
+ 2017-05-23  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	* doc/sourcebuild.texi (Effective-Target Keywords, Other hardware
+ 	attributes): Sort alphabetically.
+ 
+ 2017-05-23  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	* config/avr/genmultilib.awk: Use gsub instead of gensub.
+ 
+ 2017-05-22  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	PR target/80718
+ 	* config/rs6000/vsx.md (vsx_splat_<mode>, VSX_D iterator): Split
+ 	V2DF/V2DI splat into two separate patterns, one that handles
+ 	registers, and the other that only handles memory.  Drop support
+ 	for splatting from a GPR on ISA 2.07 and then splitting the
+ 	splat into direct move and splat.
+ 	(vsx_splat_<mode>_reg): Likewise.
+ 	(vsx_splat_<mode>_mem): Likewise.
+ 
+ 2017-05-22  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* cfgcleanup.c (bb_is_just_return): Allow CLOBBERs.
+ 
+ 2017-05-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/80809
+ 	* omp-low.c (finish_taskreg_remap): New function.
+ 	(finish_taskreg_scan): If unit size of ctx->record_type
+ 	is non-constant, unshare the size expression and replace
+ 	decls in it with possible outer var refs.
+ 
+ 	PR middle-end/80809
+ 	* gimplify.c (omp_add_variable): For GOVD_DEBUG_PRIVATE use
+ 	GOVD_SHARED rather than GOVD_PRIVATE with it.
+ 	(gimplify_adjust_omp_clauses_1, gimplify_adjust_omp_clauses): Expect
+ 	GOVD_SHARED rather than GOVD_PRIVATE with GOVD_DEBUG_PRIVATE.
+ 
+ 	PR middle-end/80853
+ 	* omp-low.c (lower_reduction_clauses): Pass OMP_CLAUSE_PRIVATE
+ 	as last argument to build_outer_var_ref for pointer bases of array
+ 	section reductions.
+ 
+ 2017-05-19  Martin Sebor  <msebor@redhat.com>
+ 
+ 	* print-tree.c (print_node): Print DECL_READ_P flag.
+ 
+ 2017-05-22  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* Makefile.in: Add ipa-fnsummary.o and ipa-fnsummary.h
+ 	* auto-profile.c: Replace ipa-inline.h by ipa-fnsummary.h
+ 	* cgraph.c: Likewise.
+ 	* cgraphunit.c: Likewise.
+ 	* gengtype.c: Likewise.
+ 	* ipa-cp.c: Likewise.
+ 	* ipa-devirt.c: Likewise.
+ 	* ipa-icf.c: Likewise.
+ 	* ipa-predicate.c: Likewise.
+ 	* ipa-profile.c: Likewise.
+ 	* ipa-prop.c: Likewise.
+ 	* ipa-split.c: Likewise.
+ 	* ipa.c: Likewise.
+ 	* ipa-inline-analysis.c (inline_summaries, ipa_call_summaries,
+ 	edge_predicate_pool, dump_inline_hints,
+ 	inline_summary::account_size_time, redirect_to_unreachable,
+ 	edge_set_predicate, set_hint_predicate,
+ 	evaluate_conditions_for_known_args, evaluate_properties_for_edge,
+ 	inline_summary_alloc, ipa_call_summary::reset, inline_summary::reset,
+ 	inline_summary_t::remove, remap_hint_predicate_after_duplication,
+ 	inline_summary_t::duplicate, ipa_call_summary_t::duplicate,
+ 	ipa_call_summary_t::remove, initialize_growth_caches,
+ 	free_growth_caches, dump_ipa_call_summary, dump_inline_summary,
+ 	debug_inline_summary, dump_inline_summaries, initialize_inline_failed,
+ 	mark_modified, unmodified_parm_1, unmodified_parm,
+ 	unmodified_parm_or_parm_agg_item, eliminated_by_inlining_prob,
+ 	set_cond_stmt_execution_predicate, set_switch_stmt_execution_predicate,
+ 	compute_bb_predicates, will_be_nonconstant_expr_predicate,
+ 	will_be_nonconstant_predicate, record_modified_bb_info,
+ 	get_minimal_bb, record_modified, param_change_prob,
+ 	phi_result_unknown_predicate, predicate_for_phi_result,
+ 	array_index_predicate, clobber_only_eh_bb_p, fp_expression_p,
+ 	estimate_function_body_sizes, compute_inline_parameters,
+ 	compute_inline_parameters_for_curren, pass_data_inline_parameters,
+ 	estimate_node_size_and_time, estimate_ipcp_clone_size_and_time,
+ 	inline_update_callee_summaries, remap_edge_change_prob,
+ 	remap_edge_summaries, remap_hint_predicate, inline_merge_summary,
+ 	inline_update_overall_summary, inline_indirect_intraprocedural_analysis,
+ 	inline_analyze_function, inline_summary_t::insert,
+ 	inline_generate_summary, read_ipa_call_summary, inline_read_section,
+ 	inline_read_summary, write_ipa_call_summary, inline_write_summary,
+ 	inline_free_summary): Move to ipa-fnsummary.h
+ 	(predicate_t): Remove.
+ 	* ipa-fnsummary.c: New file.
+ 	* ipa-inline.h:  Do not include sreal.h and ipa-predicate.h
+ 	(enum inline_hints_vals, inline_hints, agg_position_info,
+ 	INLINE_SIZE_SCALE, size_time_entry, inline_summary, inline_summary_t,
+ 	inline_summaries, ipa_call_summary, ipa_call_summary_t,
+ 	ipa_call_summaries, debug_inline_summary, dump_inline_summaries,
+ 	dump_inline_summary, dump_inline_hints, inline_generate_summary,
+ 	inline_read_summary, inline_write_summary, inline_free_summary,
+ 	inline_analyze_function, initialize_inline_failed,
+ 	inline_merge_summary, inline_update_overall_summary,
+ 	compute_inline_parameters): Move to ipa-fnsummary.h
+ 	* ipa-fnsummary.h: New file.
+ 	* ipa-inline-transform.h: Include ipa-inline.h.
+ 	* ipa-inline.c: LIkewise.
+ 
+ 2017-05-22  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* ipa-inline.c (edge_badness): Use inlined_time instead of
+ 	inline_summaries->get.
+ 
+ 2017-05-22  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* ipa-inline.c (edge_badness): Use estimate_size_after_inlining.
+ 
+ 2017-05-22  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* doc/invoke.texi (fdump-translation-unit): Delete documentation.
+ 	(fdump-lang): Document 'raw' option.
+ 	* dumpfile.h (TDI_tu): Delete.
+ 	* dumpfile.c (dump_files): Remove translation-unit.
+ 	(FIRST_AUTO_NUMBERED_DUMP): Decrement.
+ 
+ 2017-05-22  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	* config/avr/t-avr (AWK) [t-multilib]: Remove "-v FORMAT=Makefile"
+ 	command option from $(AWK) call.
+ 	* config/avr/genmultilib.awk: Simplify and rewrite so that it
+ 	generates MULTILIB_REQUIRED instead of MULTILIB_EXCEPTIONS.
+ 	[FORMAT]: Remove handling of variable.
+ 	* config/avr/t-multilib: Regenerate.
+ 
+ 2017-05-22  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* ipa-inline-analysis.c (inline_summary::reset): Do not reset
+ 	self_time.
+ 	(dump_inline_summary): Do not print self_time.
+ 	(estimate_function_body_sizes): Do not set self_time.
+ 	(compute_inline_parameters): Likewise.
+ 	(inline_read_section, inline_write_summary): Do not stream self_time.
+ 	* ipa-inline.h (inline_summary): Drop self_time.
+ 
+ 2017-05-22  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* ipa-inline-analysis.c (account_size_time): Rename to ...
+ 	(inline_summary::account_size_time): ... this one.
+ 	(reset_ipa_call_summary): Turn to ...
+ 	(ipa_call_summary::reset): ... this one.
+ 	(reset_inline_summary): Turn to ...
+ 	(inline_summary::reset): ... this one.
+ 	(inline_summary_t::remove): Update.
+ 	(inline_summary_t::duplicate): Update.
+ 	(ipa_call_summary_t::remove): Update.
+ 	(dump_inline_summary): Update.
+ 	(estimate_function_body_sizes): Update.
+ 	(compute_inline_parameters): Update.
+ 	(estimate_node_size_and_time): Update.
+ 	(inline_merge_summary): Update.
+ 	(inline_update_overall_summary): Update.
+ 	(inline_read_section): Update.
+ 	(inline_write_summary): Update.
+ 	* ipa-inline.h (inline_summary): Rename entry to size_time_table;
+ 	add account_size_time and reset member functions.
+ 	(ipa_call_summary): Add reset function.
+ 	* ipa-predicate.h (predicate::operator &): Constify.
+ 
+ 2017-05-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	* df-scan.c (df_insn_refs_verify): Speedup when not verifying.
+ 
+ 2017-05-19  Jason Merrill  <jason@redhat.com>
+ 
+ 	* tree.c (make_tree_vec_stat, grow_tree_vec_stat): Use size_t.
+ 
+ 2017-05-19  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR sanitizer/80800
+ 	* fold-const.c (extract_muldiv_1) <case TRUNC_DIV_EXPR>: Add
+ 	TYPE_OVERFLOW_WRAPS checks.
+ 
+ 2017-05-19  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	* tree-core.h (enum omp_clause_default_kind): Add
+ 	"OMP_CLAUSE_DEFAULT_PRESENT".
+ 	* tree-pretty-print.c (dump_omp_clause): Handle it.
+ 	* gimplify.c (enum gimplify_omp_var_data): Add
+ 	"GOVD_MAP_FORCE_PRESENT".
+ 	(gimplify_adjust_omp_clauses_1): Map it to
+ 	"GOMP_MAP_FORCE_PRESENT".
+ 	(oacc_default_clause): Handle "OMP_CLAUSE_DEFAULT_PRESENT".
+ 
+ 	* gimplify.c (oacc_default_clause): Clarify.
+ 
+ 2017-05-19  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	LANG_HOOK_REGISTER_DUMPS
+ 	* toplev.c (general_init): Call register dump lang hook.
+ 	* doc/invoke.texi: Document -fdump-lang option family.
+ 	* dumpfile.c (dump_files): Remove class dump here.
+ 	(FIRST_AUTO_NUMBERED_DUMP): Adjust.
+ 	* dumpfile.h (tree_dump_index): Remove TDI_class.
+ 	* langhooks-def.h (lhd_register_dumps): Declare.
+ 	(LANG_HOOKS_REGISTER_DUMPS): Define.
+ 	(LANG_HOOKS_INITIALIZER): Add it.
+ 	* langhooks.c (lhd_register_dumps): Define.
+ 	* langhooks.h (struct lang_hooks): Add register_dumps.
+ 
+ 2017-05-19  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* context.h (context::set_passes): New.
+ 	* context.c (context::context): Do not create pass manager.
+ 	* toplev.c (general_init): Create pass manager here.
+ 
+ 2017-05-19  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/rs6000.md (splitter to load of -1 and mask): Don't
+ 	use this splitter if two add or or instructions would also work for
+ 	the constant we want to generate.
+ 
+ 2017-05-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR build/80821
+ 	* genmatch.c (dt_node::gen_kids_1): Add missing scope around
+ 	predicate evaluation.
+ 
+ 2017-05-19  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* ipa-inline.h (ipa_call_summary): Turn sizes into signed;
+ 	add ctor.
+ 	* ipa-inline.c (want_inline_small_function_p): Do not cast to
+ 	unsigned.
+ 
+ 2017-05-19  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* ipa-inline-analysis.c (cgraph_2edge_hook_list, cgraph_edge_hook_list,
+ 	inline_edge_removal_hook, inline_edge_duplication_hook): Remove.
+ 	(inline_edge_summary_vec): Turn into ...
+ 	(ipa_call_summaries): ... this one.
+ 	(redirect_to_unreachable, edge_set_predicate,
+ 	evaluate_properties_for_edge, inline_summary_alloc,
+ 	reset_ipa_call_summary, reset_inline_summary,
+ 	inline_summary_t::duplicate): Update.
+ 	(inline_edge_duplication_hook): Turn to ...
+ 	(ipa_call_summary_t::duplicate): ... this one.
+ 	(inline_edge_removal_hook): Turn to ...
+ 	(ipa_call_summary_t::remove): ... this one.
+ 	(dump_inline_edge_summary): Turn to ...
+ 	(dump_ipa_call_summary): ... this one.
+ 	(estimate_function_body_sizes): Update.
+ 	(inline_update_callee_summaries): Update.
+ 	(remap_edge_change_prob): Update.
+ 	(remap_edge_summaries): Update.
+ 	(inline_merge_summary): Update.
+ 	(do_estimate_edge_time): Update.
+ 	(inline_generate_summary): Update.
+ 	(inline_read_section): Update.
+ 	(inline_read_summary): Update.
+ 	(inline_free_summary): Update.
+ 	* ipa-inline.c (can_inline_edge_p): Update.
+ 	(compute_inlined_call_time): Update.
+ 	(want_inline_small_function_p): Update.
+ 	(edge_badness): Update.
+ 	(early_inliner): Update.
+ 	* ipa-inline.h (inline_edge_summary): Turn to ...
+ 	(ipa_call_summary): ... this one.
+ 	(ipa_call_summary_t): New class.
+ 	(inline_edge_summary_t, inline_edge_summary_vec): Remove.
+ 	(ipa_call_summaries): New.
+ 	(inline_edge_summary): Remove.
+ 	(estimate_edge_growth): Update.
+ 	* ipa-profile.c (ipa_propagate_frequency_1): Update.
+ 	* ipa-prop.c (ipa_make_edge_direct_to_target): Update.
+ 	* ipa-split.c (execute_split_functions): Update.
+ 	* ipa.c (symbol_table::remove_unreachable_nodes): Update.
+ 
+ 2017-05-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/80764
+ 	* cfgexpand.c (expand_gimple_cond): Fix loop fixup.
+ 
+ 2017-05-18  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/rs6000.c (struct machine_function): Add field
+ 	fpr_is_wrapped_separately.
+ 	(rs6000_get_separate_components): Use 64 components.  Handle the
+ 	new FPR components.
+ 	(rs6000_components_for_bb): Handle the FPR components.
+ 	(rs6000_emit_prologue_components): Handle the FPR components.
+ 	(rs6000_emit_epilogue_components): Handle the FPR components.
+ 	(rs6000_set_handled_components): Handle the FPR components.
+ 	(rs6000_emit_prologue): Don't output prologue code for those FPRs
+ 	that are already separately shrink-wrapped.
+ 	(rs6000_emit_epilogue): Don't output epilogue code for those FPRs
+ 	that are already separately shrink-wrapped.
+ 
+ 2017-05-18  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	PR target/80510
+ 	* config/rs6000/predicates.md (simple_offsettable_mem_operand):
+ 	New predicate.
+ 
+ 	* config/rs6000/rs6000.md (ALTIVEC_DFORM): New iterator.
+ 	(define_peephole2 for Altivec d-form load): Add peepholes to catch
+ 	cases where the register allocator uses a move and an offsettable
+ 	memory operation to/from a FPR register on ISA 2.06/2.07.
+ 	(define_peephole2 for Altivec d-form store): Likewise.
+ 
+ 2017-05-18  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/80799
+ 	* config/i386/mmx.md (*mov<mode>_internal): Enable
+ 	alternatives 11, 12, 13 and 14 also for 32bit targets.
+ 	Remove alternatives 15, 16, 17 and 18.
+ 	* config/i386/sse.md (vec_concatv2di): Change
+ 	alternative (!x, *y) to (x, ?!*Yn).
+ 
+ 2017-05-18  Paolo Carlini  <paolo.carlini@oracle.com>
+ 
+ 	* dumpfile.h (enum dump_kind): Remove stray comma.
+ 
+ 2017-05-18  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* Makefile.in: Add ipa-predicate.o and ipa-predicate.h
+ 	* ipa-inline-analysis.c (NUM_CONDITIONS): turn into
+ 	predicate::num_conditions
+ 	(IS_NOT_CONSTANT): turn into predicate::is_not_constant.
+ 	(CHANGED): turn into predicate::changed.
+ 	(agg_position_info): Move to ipa-predicate.h
+ 	(add_condition, predicate::add_clause, predicate::operator &=,
+ 	predicate::or_with, predicate::evaluate, predicate::probability,
+ 	dump_condition, dump_clause, predicate::dump,
+ 	predicate::remap_after_duplication, predicate::remap_after_inlining,
+ 	predicate::stream_in, predicate::stream_out): Move to ipa-predicate.c
+ 	(evaluate_conditions_for_known_args): Update.
+ 	(set_cond_stmt_execution_predicate): Update.
+ 	* ipa-inline.h: Include ipa-predicate.h
+ 	(condition, inline_param_summary, conditions, agg_position_info,
+ 	predicate): Move to ipa-predicate.h
+ 	* ipa-predicate.c: New file.
+ 	* ipa-predicate.h: New file.
+ 
+ 2017-05-18  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	* final.c (leaf_function_p): Check we are not in a sequence.
+ 
+ 2017-05-18  Martin Liska  <mliska@suse.cz>
+ 
+ 	* cfgrtl.c (rtl_verify_edges): Remove usage of TDF_RTL.
+ 	* dumpfile.c (dump_register): Use new enum dump_kind.
+ 	(get_dump_file_name): Likewise.
+ 	(dump_enable_all): Likewise.
+ 	(dump_switch_p_1): Likewise.
+ 	(enable_rtl_dump_file): Remove usage of TDF_RTL.
+ 	* dumpfile.h (enum dump_kind): New enum type.
+ 	(struct dump_file_info): Create constructor and
+ 	format fields and comments.
+ 	* passes.c (pass_manager::register_one_dump_file):
+ 	Use num dump_kind.
+ 	* statistics.c (statistics_early_init): Likewise.
+ 	* tree-ssa-loop-prefetch.c (dump_mem_details): Replace
+ 	TDF_TREE with TDF_SLIM.
+ 	(gather_memory_references_ref): Likewise.
+ 
+ 2017-05-18  Martin Liska  <mliska@suse.cz>
+ 
+ 	* vec.h (struct vnull): Use it.
+ 
+ 2017-05-18  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* ipa-inline-analysis.c (predicate_conditions): Move to ipa-inline.h
+ 	(true_predicate, false_predicate, true_predicate_p,
+ 	false_predicate_p): Remove.
+ 	(single_cond_predicate, not_inlined_predicate): Turn to member function
+ 	in ipa-inline.h
+ 	(add_condition): Update.
+ 	(add_clause): Turn to...
+ 	(predicate::add_clause): ... this one; update; allow passing NULL
+ 	as parameter.
+ 	(and_predicates): Turn to ...
+ 	(predicate::operator &=): ... this one.
+ 	(predicates_equal_p): Move to predicate::operator == in ipa-inline.h
+ 	(or_predicates): Turn to ...
+ 	(predicate::or_with): ... this one.
+ 	(evaluate_predicate): Turn to ...
+ 	(predicate::evaluate): ... this one.
+ 	(predicate_probability): Turn to ...
+ 	(predicate::probability): ... this one.
+ 	(dump_condition): Update.
+ 	(dump_predicate): Turn to ...
+ 	(predicate::dump): ... this one.
+ 	(account_size_time): Update.
+ 	(edge_set_predicate): Update.
+ 	(set_hint_predicate): UPdate.
+ 	(evaluate_conditions_for_known_args): Update.
+ 	(evaluate_properties_for_edge): Update.
+ 	(remap_predicate_after_duplication): Turn to...
+ 	(predicate::remap_after_duplication): ... this one.
+ 	(remap_hint_predicate_after_duplication): Update.
+ 	(inline_summary_t::duplicate): UPdate.
+ 	(dump_inline_edge_summary): Update.
+ 	(dump_inline_summary): Update.
+ 	(set_cond_stmt_execution_predicate): Update.
+ 	(set_switch_stmt_execution_predicate): Update.
+ 	(compute_bb_predicates): Update.
+ 	(will_be_nonconstant_expr_predicate): Update.
+ 	(will_be_nonconstant_predicate): Update.
+ 	(phi_result_unknown_predicate): Update.
+ 	(predicate_for_phi_result): Update.
+ 	(array_index_predicate): Update.
+ 	(estimate_function_body_sizes): Update.
+ 	(estimate_node_size_and_time): Update.
+ 	(estimate_ipcp_clone_size_and_time): Update.
+ 	(remap_predicate): Rename to ...
+ 	(predicate::remap_after_inlining): ... this one.
+ 	(remap_hint_predicate): Update.
+ 	(inline_merge_summary): Update.
+ 	(inline_update_overall_summary): Update.
+ 	(estimate_size_after_inlining): Update.
+ 	(read_predicate): Rename to ...
+ 	(predicate::stream_in): ... this one.
+ 	(read_inline_edge_summary): Update.
+ 	(write_predicate): Rename to ...
+ 	(predicate::stream_out): ... this one.
+ 	(write_inline_edge_summary): Update.
+ 	* ipa-inline.h (MAX_CLAUSES): Turn to predicate::max_clauses.
+ 	(clause_t): Turn to uint32_t
+ 	(predicate): Turn to class; implement constructor and operators
+ 	==, !=, &
+ 	(size_time_entry): Update.
+ 	(inline_summary): Update.
+ 	(inline_edge_summary): Update.
+ 
+ 2017-05-18  Marc Glisse  <marc.glisse@inria.fr>
+ 
+ 	* fold-const.c (fold_binary_loc): Move transformation...
+ 	* match.pd (C - X CMP X): ... here.
+ 
+ 2017-05-18  Sheldon Lobo  <sheldon.lobo@oracle.com>
+ 
+ 	* config/sparc/sparc.c (sparc_option_override): Set function
+ 	alignment for -mcpu=niagara7 to 64 to match the I$ line.
+ 	* config/sparc/sparc.h (BRANCH_COST): Set the SPARC M7 branch
+ 	latency to 1.
+ 	* config/sparc/sparc.h (BRANCH_COST): Set the SPARC T4 branch
+ 	latency to 2.
+ 	* config/sparc/sol2.h: Fix a ASM_CPU32_DEFAULT_SPEC typo.
+ 
+ 2017-05-18  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR sanitizer/80797
+ 	* ubsan.c (instrument_null): Unwrap ADDR_EXPRs.
+ 	(pass_ubsan::execute): Call gimple_assign_single_p instead of
+ 	gimple_assign_load_p.
+ 
+ 2017-05-17  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR middle-end/80692
+ 	* real.c (do_compare): Give decimal_do_compare preference over
+ 	comparing just the signs.
+ 
+ 2017-05-17  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* doc/md.texi (Canonicalization of Instructions): Describe the
+ 	canonical form of instructions that inherently set a condition
+ 	code register.
+ 
+ 2017-05-17  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	PR middle-end/80775
+ 	* tree-cfg.c: Move deletion of unreachable case statements to after
+ 	the merging of consecutive case labels.
+ 
+ 2017-05-17  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	* config/arm/arm.c (cmse_nonsecure_call_clear_caller_saved): Refer
+ 	readers to __gnu_cmse_nonsecure_call libcall for saving, clearing and
+ 	restoring of callee-saved registers.
+ 
+ 2017-05-17  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* compare-elim.c (equivalent_reg_at_start): Adjust outdated comment.
+ 	* config/visium/visium.c (single_set_and_flags): Likewise.
+ 	* config/visium/visium.md (Substitutions): Likewise.
+ 
+ 2017-05-17  Martin Liska  <mliska@suse.cz>
+ 
+ 	* cfg.c: Introduce dump_flags_t type and
+ 	use it instead of int type.
+ 	* cfg.h: Likewise.
+ 	* cfghooks.c: Likewise.
+ 	* cfghooks.h (struct cfg_hooks): Likewise.
+ 	* cfgrtl.c: Likewise.
+ 	* cfgrtl.h: Likewise.
+ 	* cgraph.c (cgraph_node::get_body): Likewise.
+ 	* coretypes.h: Likewise.
+ 	* domwalk.c: Likewise.
+ 	* domwalk.h: Likewise.
+ 	* dumpfile.c (struct dump_option_value_info): Likewise.
+ 	(dump_enable_all): Likewise.
+ 	(dump_switch_p_1): Likewise.
+ 	(opt_info_switch_p): Likewise.
+ 	* dumpfile.h (enum tree_dump_index): Likewise.
+ 	(struct dump_file_info): Likewise.
+ 	* genemit.c: Likewise.
+ 	* generic-match-head.c: Likewise.
+ 	* gengtype.c (open_base_files): Likewise.
+ 	* gimple-pretty-print.c: Likewise.
+ 	* gimple-pretty-print.h: Likewise.
+ 	* graph.c (print_graph_cfg): Likewise.
+ 	* graphite-scop-detection.c (dot_all_sese): Likewise.
+ 	* ipa-devirt.c (build_type_inheritance_graph): Likewise.
+ 	* loop-unroll.c (report_unroll): Likewise.
+ 	* passes.c (pass_manager::register_one_dump_file): Likewise.
+ 	* print-tree.c: Likewise.
+ 	* statistics.c: Likewise.
+ 	* tree-cfg.c: Likewise.
+ 	* tree-cfg.h: Likewise.
+ 	* tree-dfa.c: Likewise.
+ 	* tree-dfa.h: Likewise.
+ 	* tree-dump.c (dump_function): Likewise.
+ 	* tree-dump.h (struct dump_info): Likewise.
+ 	* tree-pretty-print.c: Likewise.
+ 	* tree-pretty-print.h: Likewise.
+ 	* tree-ssa-live.c: Likewise.
+ 	* tree-ssa-live.h: Likewise.
+ 	* tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Likewise.
+ 	* tree-vect-loop.c: Likewise.
+ 	* tree-vect-slp.c: Likewise.
+ 
+ 2017-05-16  James Greenhalgh  <james.greenhalgh@arm.com>
+ 	    Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	PR tree-optimization/80457
+ 	* tree-vect-stmts.c (vect_model_simple_cost): Model the cost
+ 	of all arguments to a statement as scalar_to_vec operations.
+ 	(vectorizable_call): Adjust call to vect_model_simple_cost for
+ 	new parameter.
+ 	(vectorizable_conversion): Likewise.
+ 	(vectorizable_assignment): Likewise.
+ 	(vectorizable_shift): Likewise.
+ 	(vectorizable_operation): Likewise.
+ 	(vectorizable_comparison): Likewise.
+ 	(vect_is_simple_cond): Record the def types for operands.
+ 	(vectorizable_condition): Likewise, call vect_model_simple_cost.
+ 	* tree-vectorizer.h (vect_model_simple_cost): Add new parameter
+ 	for statement argument count.
+ 
+ 2017-05-16  Carl Love  <cel@us.ibm.com>
+ 
+ 	* config/rs6000/rs6000-c: Add support for built-in functions
+ 	vector unsigned long long vec_bperm (vector unsigned long long,
+ 					     vector unsigned char)
+ 	vector signed long long vec_mule (vector signed int,
+ 					  vector signed int)
+ 	vector unsigned long long vec_mule (vector unsigned int,
+ 					    vector unsigned int)
+ 	vector signed long long vec_mulo (vector signed int,
+ 					  vector signed int)
+ 	vector unsigned long long vec_mulo (vector unsigned int,
+ 					    vector unsigned int)
+ 	vector signed char vec_sldw (vector signed char,
+ 				     vector signed char,
+ 				     const int)
+ 	vector unsigned char vec_sldw (vector unsigned char,
+ 				       vector unsigned char,
+ 				       const int)
+ 	vector signed short vec_sldw (vector signed short,
+ 				      vector signed short,
+ 				      const int)
+ 	vector unsigned short vec_sldw (vector unsigned short,
+ 					vector unsigned short,
+ 					const int)
+ 	vector signed int vec_sldw (vector signed int,
+ 				    vector signed int,
+ 				    const int)
+ 	vector unsigned int vec_sldw (vector unsigned int,
+ 				      vector unsigned int,
+ 				      const int)
+ 	vector signed long long vec_sldw (vector signed long long,
+ 					  vector signed long long,
+ 					  const int)
+ 	vector unsigned long long vec_sldw (vector unsigned long long,
+ 					    vector unsigned long long,
+ 					    const int)
+ 	* config/rs6000/rs6000-c: Add support for built-in functions
+ 	* config/rs6000/rs6000-builtin.def: Add definition for SLDW.
+ 	* config/rs6000/altivec.h: Add defintion for vec_sldw.
+ 	* doc/extend.texi: Update the built-in documentation for the
+ 	new built-in functions.
+ 
+ 2017-05-16  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR sanitizer/80536
+ 	PR sanitizer/80386
+ 	* tree.c (save_expr): Don't fold the expression.
+ 
+ 2017-05-16  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.md (*movsi_internal): Split (?rm,*y) alternative
+ 	to (?r,*Yn) and (?m,*y) alternatives, and (?*y,rm) to (?*Ym,r)
+ 	and (?*y,m).  Update insn attributes.
+ 
+ 2017-05-16  Martin Liska  <mliska@suse.cz>
+ 
+ 	* cgraph.c (cgraph_edge::resolve_speculation): Add default value for
+ 	flags argument of print_gimple_stmt, print_gimple_expr,
+ 	print_generic_stmt and print_generic_expr.
+ 	* cgraphclones.c (symbol_table::materialize_all_clones): Likewise.
+ 	* coretypes.h: Likewise.
+ 	* except.c (dump_eh_tree): Likewise.
+ 	* gimple-fold.c (gimple_fold_stmt_to_constant_1): Likewise.
+ 	* gimple-pretty-print.h: Likewise.
+ 	* gimple-ssa-backprop.c (dump_usage_prefix): Likewise.
+ 	(backprop::push_to_worklist): Likewise.
+ 	(backprop::pop_from_worklist): Likewise.
+ 	(backprop::process_use): Likewise.
+ 	(backprop::intersect_uses): Likewise.
+ 	(note_replacement): Likewise.
+ 	* gimple-ssa-store-merging.c
+ 	(pass_store_merging::terminate_all_aliasing_chains): Likewise.
+ 	(imm_store_chain_info::coalesce_immediate_stores): Likewise.
+ 	(pass_store_merging::execute): Likewise.
+ 	* gimple-ssa-strength-reduction.c (dump_candidate): Likewise.
+ 	(ssa_base_cand_dump_callback): Likewise.
+ 	(dump_incr_vec): Likewise.
+ 	(replace_refs): Likewise.
+ 	(replace_mult_candidate): Likewise.
+ 	(create_add_on_incoming_edge): Likewise.
+ 	(create_phi_basis): Likewise.
+ 	(insert_initializers): Likewise.
+ 	(all_phi_incrs_profitable): Likewise.
+ 	(introduce_cast_before_cand): Likewise.
+ 	(replace_one_candidate): Likewise.
+ 	* gimplify.c (gimplify_expr): Likewise.
+ 	* graphite-isl-ast-to-gimple.c (is_valid_rename): Likewise.
+ 	(set_rename): Likewise.
+ 	(rename_uses): Likewise.
+ 	(copy_loop_phi_nodes): Likewise.
+ 	(add_close_phis_to_merge_points): Likewise.
+ 	(copy_loop_close_phi_args): Likewise.
+ 	(copy_cond_phi_args): Likewise.
+ 	(graphite_copy_stmts_from_block): Likewise.
+ 	(translate_pending_phi_nodes): Likewise.
+ 	* graphite-poly.c (print_pdr): Likewise.
+ 	(dump_gbb_cases): Likewise.
+ 	(dump_gbb_conditions): Likewise.
+ 	(print_scop_params): Likewise.
+ 	* graphite-scop-detection.c (build_cross_bb_scalars_def): Likewise.
+ 	(build_cross_bb_scalars_use): Likewise.
+ 	(gather_bbs::before_dom_children): Likewise.
+ 	* hsa-dump.c (dump_hsa_immed): Likewise.
+ 	* ipa-cp.c (print_ipcp_constant_value): Likewise.
+ 	(get_replacement_map): Likewise.
+ 	* ipa-inline-analysis.c (dump_condition): Likewise.
+ 	(estimate_function_body_sizes): Likewise.
+ 	* ipa-polymorphic-call.c (check_stmt_for_type_change): Likewise.
+ 	(ipa_polymorphic_call_context::get_dynamic_type): Likewise.
+ 	* ipa-prop.c (ipa_dump_param): Likewise.
+ 	(ipa_print_node_jump_functions_for_edge): Likewise.
+ 	(ipa_modify_call_arguments): Likewise.
+ 	(ipa_modify_expr): Likewise.
+ 	(ipa_dump_param_adjustments): Likewise.
+ 	(ipa_dump_agg_replacement_values): Likewise.
+ 	(ipcp_modif_dom_walker::before_dom_children): Likewise.
+ 	* ipa-pure-const.c (check_stmt): Likewise.
+ 	(pass_nothrow::execute): Likewise.
+ 	* ipa-split.c (execute_split_functions): Likewise.
+ 	* omp-offload.c (dump_oacc_loop_part): Likewise.
+ 	(dump_oacc_loop): Likewise.
+ 	* trans-mem.c (tm_log_emit): Likewise.
+ 	(tm_memopt_accumulate_memops): Likewise.
+ 	(dump_tm_memopt_set): Likewise.
+ 	(dump_tm_memopt_transform): Likewise.
+ 	* tree-cfg.c (gimple_verify_flow_info): Likewise.
+ 	(print_loop): Likewise.
+ 	* tree-chkp-opt.c (chkp_print_addr): Likewise.
+ 	(chkp_gather_checks_info): Likewise.
+ 	(chkp_get_check_result): Likewise.
+ 	(chkp_remove_check_if_pass): Likewise.
+ 	(chkp_use_outer_bounds_if_possible): Likewise.
+ 	(chkp_reduce_bounds_lifetime): Likewise.
+ 	* tree-chkp.c (chkp_register_addr_bounds): Likewise.
+ 	(chkp_mark_completed_bounds): Likewise.
+ 	(chkp_register_incomplete_bounds): Likewise.
+ 	(chkp_mark_invalid_bounds): Likewise.
+ 	(chkp_maybe_copy_and_register_bounds): Likewise.
+ 	(chkp_build_returned_bound): Likewise.
+ 	(chkp_get_bound_for_parm): Likewise.
+ 	(chkp_build_bndldx): Likewise.
+ 	(chkp_get_bounds_by_definition): Likewise.
+ 	(chkp_generate_extern_var_bounds): Likewise.
+ 	(chkp_get_bounds_for_decl_addr): Likewise.
+ 	* tree-chrec.c (chrec_apply): Likewise.
+ 	* tree-data-ref.c (dump_data_reference): Likewise.
+ 	(dump_subscript): Likewise.
+ 	(dump_data_dependence_relation): Likewise.
+ 	(analyze_overlapping_iterations): Likewise.
+ 	* tree-inline.c (expand_call_inline): Likewise.
+ 	(tree_function_versioning): Likewise.
+ 	* tree-into-ssa.c (dump_defs_stack): Likewise.
+ 	(dump_currdefs): Likewise.
+ 	(dump_names_replaced_by): Likewise.
+ 	(dump_update_ssa): Likewise.
+ 	(update_ssa): Likewise.
+ 	* tree-object-size.c (pass_object_sizes::execute): Likewise.
+ 	* tree-parloops.c (build_new_reduction): Likewise.
+ 	(try_create_reduction_list): Likewise.
+ 	(ref_conflicts_with_region): Likewise.
+ 	(oacc_entry_exit_ok_1): Likewise.
+ 	(oacc_entry_exit_single_gang): Likewise.
+ 	* tree-pretty-print.h: Likewise.
+ 	* tree-scalar-evolution.c (set_scalar_evolution): Likewise.
+ 	(get_scalar_evolution): Likewise.
+ 	(add_to_evolution): Likewise.
+ 	(get_loop_exit_condition): Likewise.
+ 	(analyze_evolution_in_loop): Likewise.
+ 	(analyze_initial_condition): Likewise.
+ 	(analyze_scalar_evolution): Likewise.
+ 	(instantiate_scev): Likewise.
+ 	(number_of_latch_executions): Likewise.
+ 	(gather_chrec_stats): Likewise.
+ 	(final_value_replacement_loop): Likewise.
+ 	(scev_const_prop): Likewise.
+ 	* tree-sra.c (dump_access): Likewise.
+ 	(disqualify_candidate): Likewise.
+ 	(create_access): Likewise.
+ 	(reject): Likewise.
+ 	(maybe_add_sra_candidate): Likewise.
+ 	(create_access_replacement): Likewise.
+ 	(analyze_access_subtree): Likewise.
+ 	(analyze_all_variable_accesses): Likewise.
+ 	(sra_modify_assign): Likewise.
+ 	(initialize_constant_pool_replacements): Likewise.
+ 	(find_param_candidates): Likewise.
+ 	(decide_one_param_reduction): Likewise.
+ 	(replace_removed_params_ssa_names): Likewise.
+ 	* tree-ssa-ccp.c (ccp_fold_stmt): Likewise.
+ 	* tree-ssa-copy.c (dump_copy_of): Likewise.
+ 	(copy_prop_visit_cond_stmt): Likewise.
+ 	* tree-ssa-dce.c (mark_operand_necessary): Likewise.
+ 	* tree-ssa-dom.c (pass_dominator::execute): Likewise.
+ 	(record_equivalences_from_stmt): Likewise.
+ 	* tree-ssa-dse.c (compute_trims): Likewise.
+ 	(delete_dead_call): Likewise.
+ 	(delete_dead_assignment): Likewise.
+ 	* tree-ssa-forwprop.c (forward_propagate_into_gimple_cond): Likewise.
+ 	(forward_propagate_into_cond): Likewise.
+ 	(pass_forwprop::execute): Likewise.
+ 	* tree-ssa-ifcombine.c (ifcombine_ifandif): Likewise.
+ 	* tree-ssa-loop-im.c (invariantness_dom_walker::before_dom_children):
+ 	Likewise.
+ 	(move_computations_worker): Likewise.
+ 	(execute_sm): Likewise.
+ 	* tree-ssa-loop-ivcanon.c (tree_estimate_loop_size): Likewise.
+ 	(remove_exits_and_undefined_stmts): Likewise.
+ 	(remove_redundant_iv_tests): Likewise.
+ 	* tree-ssa-loop-ivopts.c (dump_use): Likewise.
+ 	(adjust_iv_update_pos): Likewise.
+ 	* tree-ssa-math-opts.c (bswap_replace): Likewise.
+ 	* tree-ssa-phiopt.c (factor_out_conditional_conversion): Likewise.
+ 	(value_replacement): Likewise.
+ 	* tree-ssa-phiprop.c (phiprop_insert_phi): Likewise.
+ 	* tree-ssa-pre.c (print_pre_expr): Likewise.
+ 	(get_representative_for): Likewise.
+ 	(create_expression_by_pieces): Likewise.
+ 	(insert_into_preds_of_block): Likewise.
+ 	(eliminate_insert): Likewise.
+ 	(eliminate_dom_walker::before_dom_children): Likewise.
+ 	(eliminate): Likewise.
+ 	(remove_dead_inserted_code): Likewise.
+ 	* tree-ssa-propagate.c (substitute_and_fold): Likewise.
+ 	* tree-ssa-reassoc.c (get_rank): Likewise.
+ 	(eliminate_duplicate_pair): Likewise.
+ 	(eliminate_plus_minus_pair): Likewise.
+ 	(eliminate_not_pairs): Likewise.
+ 	(undistribute_ops_list): Likewise.
+ 	(eliminate_redundant_comparison): Likewise.
+ 	(update_range_test): Likewise.
+ 	(optimize_range_tests_var_bound): Likewise.
+ 	(optimize_vec_cond_expr): Likewise.
+ 	(rewrite_expr_tree): Likewise.
+ 	(rewrite_expr_tree_parallel): Likewise.
+ 	(linearize_expr): Likewise.
+ 	(break_up_subtract): Likewise.
+ 	(linearize_expr_tree): Likewise.
+ 	(attempt_builtin_powi): Likewise.
+ 	(attempt_builtin_copysign): Likewise.
+ 	(transform_stmt_to_copy): Likewise.
+ 	(transform_stmt_to_multiply): Likewise.
+ 	(dump_ops_vector): Likewise.
+ 	* tree-ssa-sccvn.c (vn_nary_build_or_lookup_1): Likewise.
+ 	(print_scc): Likewise.
+ 	(set_ssa_val_to): Likewise.
+ 	(visit_reference_op_store): Likewise.
+ 	(visit_use): Likewise.
+ 	(sccvn_dom_walker::before_dom_children): Likewise.
+ 	(run_scc_vn): Likewise.
+ 	* tree-ssa-scopedtables.c (avail_exprs_stack::lookup_avail_expr):
+ 	Likewise.
+ 	(expr_hash_elt::print): Likewise.
+ 	(const_and_copies::pop_to_marker): Likewise.
+ 	(const_and_copies::record_const_or_copy_raw): Likewise.
+ 	* tree-ssa-structalias.c (compute_dependence_clique): Likewise.
+ 	* tree-ssa-uninit.c (collect_phi_def_edges): Likewise.
+ 	(dump_predicates): Likewise.
+ 	(find_uninit_use): Likewise.
+ 	(warn_uninitialized_phi): Likewise.
+ 	(pass_late_warn_uninitialized::execute): Likewise.
+ 	* tree-ssa.c (verify_vssa): Likewise.
+ 	(verify_ssa): Likewise.
+ 	(maybe_optimize_var): Likewise.
+ 	* tree-vrp.c (dump_value_range): Likewise.
+ 	(dump_all_value_ranges): Likewise.
+ 	(dump_asserts_for): Likewise.
+ 	(register_edge_assert_for_2): Likewise.
+ 	(vrp_visit_cond_stmt): Likewise.
+ 	(vrp_visit_switch_stmt): Likewise.
+ 	(vrp_visit_stmt): Likewise.
+ 	(vrp_visit_phi_node): Likewise.
+ 	(simplify_cond_using_ranges_1): Likewise.
+ 	(fold_predicate_in): Likewise.
+ 	(evrp_dom_walker::before_dom_children): Likewise.
+ 	(evrp_dom_walker::push_value_range): Likewise.
+ 	(evrp_dom_walker::pop_value_range): Likewise.
+ 	(execute_early_vrp): Likewise.
+ 
+ 2017-05-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	* dwarf2out.c (loc_list_from_tree_1): Do not create
+ 	DW_OP_GNU_variable_value for DECL_IGNORED_P decls.
+ 
+ 2017-05-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	* dwarf2out.c (resolve_variable_value_in_expr): Lookup DIE
+ 	just generated.
+ 	(note_variable_value_in_expr): If we resolved the decl ref
+ 	do not push to the stack.
+ 
+ 2017-05-16  Matthew Wahab  <matthew.wahab@arm.com>
+ 
+ 	* config/arm/arm_neon.h (vadd_f16): Use standard arithmetic
+ 	operations in fast-math mode.
+ 	(vaddq_f16): Likewise.
+ 	(vmul_f16): Likewise.
+ 	(vmulq_f16): Likewise.
+ 	(vsub_f16): Likewise.
+ 	(vsubq_f16): Likewise.
+ 	* config/arm/neon.md (add<mode>3): New.
+ 	(sub<mode>3): New.
+ 	(fma:<VH:mode>3): New.  Also remove outdated comment.
+ 	(mul<mode>3): New.
+ 
+ 2017-05-16  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR ipa/79849.
+ 	PR ipa/79850.
+ 	* ipa-devirt.c (warn_types_mismatch): Fix typo.
+ 	(odr_types_equivalent_p): Likewise.
+ 
+ 2017-05-15  Sylvestre Ledru  <sylvestre@debian.org>
+ 
+ 	* plugin.c (try_init_one_plugin): Fix ressource leaks (CID 726637).
+ 
+ 2017-05-15  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/80425
+ 	* config/i386.i386.md (*zero_extendsidi2): Do not penalize
+ 	non-interunit SSE move alternatives with '?'.
+ 	(zero-extendsidi peephole2): New peephole to skip intermediate
+ 	general register in SSE zero-extend sequence.
+ 
+ 2017-05-15  Jeff Law  <law@redhat.com>
+ 
+ 	* reorg.c (relax_delay_slots): Create a new variable to hold
+ 	the temporary target rather than clobbering TARGET_LABEL.
+ 
+ 	* config/tilegx/tilegx.c (tilegx_expand_unaligned_load): Add
+ 	missing argument to extract_bit_field call.
+ 	* config/tilepro/tilepro.c (tilepro_expand_unaligned_load): Likewise.
+ 
+ 2017-05-15  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR driver/31468
+ 	* gcc.c (process_command): Do not allow empty argument of -o option.
+ 
+ 2017-05-15  Renlin Li  <renlin.li@arm.com>
+ 
+ 	* config/aarch64/aarch64-protos.h (aarch64_expand_call): Declare.
+ 	* config/aarch64/aarch64.c (aarch64_expand_call): Define.
+ 	* config/aarch64/constraints.md (Usf): Add long call check.
+ 	* config/aarch64/aarch64.md (call): Use aarch64_expand_call.
+ 	(call_value): Likewise.
+ 	(sibcall): Likewise.
+ 	(sibcall_value): Likewise.
+ 	(call_insn): New.
+ 	(call_value_insn): New.
+ 	(sibcall_insn): Update rtx pattern.
+ 	(sibcall_value_insn): Likewise.
+ 	(call_internal): Remove.
+ 	(call_value_internal): Likewise.
+ 	(sibcall_internal): Likewise.
+ 	(sibcall_value_internal): Likewise.
+ 	(call_reg): Likewise.
+ 	(call_symbol): Likewise.
+ 	(call_value_reg): Likewise.
+ 	(call_value_symbol): Likewise.
+ 
+ 2017-05-14  Krister Walfridsson  <krister.walfridsson@gmail.com>
+ 
+ 	PR target/80600
+ 	* config/netbsd.h (NETBSD_LIBGCC_SPEC): Always add -lgcc.
+ 
+ 2017-05-14  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386.i386.c (ix86_cc_modes_compatible): CCNOmode is
+ 	compatible with CCGOCmode and with CCZmode.
+ 
+ 2017-05-14  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/77671
+ 	* gimple-fold.c (gimple_fold_builtin_sprintf): Make extern.
+ 	(gimple_fold_builtin_snprintf): Same.
+ 	* gimple-fold.h (gimple_fold_builtin_sprintf): Declare.
+ 	(gimple_fold_builtin_snprintf): Same.
+ 	* gimple-ssa-sprintf.c (get_format_string): Correct the detection
+ 	of character types.
+ 	(is_call_safe): New function.
+ 	(try_substitute_return_value): Call it.
+ 	(try_simplify_call): New function.
+ 	(pass_sprintf_length::handle_gimple_call): Call it.
+ 
+ 2017-05-14  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/80669
+ 	* builtins.c (expand_builtin_stpncpy): Simplify.
+ 
+ 2017-05-14  Daniel Santos  <daniel.santos@pobox.com>
+ 
+ 	* config/i386/i386.opt: Add option -mcall-ms2sysv-xlogues.
+ 	* config/i386/i386.h
+ 	(x86_64_ms_sysv_extra_clobbered_registers): Change type to unsigned.
+ 	(NUM_X86_64_MS_CLOBBERED_REGS): New macro.
+ 	(struct machine_function): Add new members call_ms2sysv,
+ 	call_ms2sysv_pad_in, call_ms2sysv_pad_out and call_ms2sysv_extra_regs.
+ 	(struct machine_frame_state): New fields sp_realigned and
+ 	sp_realigned_offset.
+ 	* config/i386/i386.c
+ 	(enum xlogue_stub): New enum.
+ 	(enum xlogue_stub_sets): New enum.
+ 	(class xlogue_layout): New class.
+ 	(struct ix86_frame): New fields stack_realign_allocate_offset,
+ 	stack_realign_offset and outlined_save_offset.  Modify comments to
+ 	detail stack layout when using out-of-line stubs.
+ 	(ix86_target_string): Add -mcall-ms2sysv-xlogues option.
+ 	(ix86_option_override_internal): Add sorry() for TARGET_SEH and
+ 	-mcall-ms2sysv-xlogues.
+ 	(stub_managed_regs): New static variable.
+ 	(ix86_save_reg): Add new parameter ignore_outlined to optionally omit
+ 	registers managed by out-of-line stub.
+ 	(disable_call_ms2sysv_xlogues): New function.
+ 	(ix86_compute_frame_layout): Modify re-alignment calculations, disable
+ 	m->call_ms2sysv when appropriate and compute frame layout for
+ 	out-of-line stubs.
+ 	(sp_valid_at, fp_valid_at): New inline functions.
+ 	(choose_basereg): New function.
+ 	(choose_baseaddr): Add align parameter, use choose_basereg and modify
+ 	all callers.
+ 	(ix86_emit_save_reg_using_mov, ix86_emit_restore_sse_regs_using_mov):
+ 	Use align parameter of choose_baseaddr to generated aligned SSE movs
+ 	when possible.
+ 	(pro_epilogue_adjust_stack): Modify to track
+ 	machine_frame_state::sp_realigned.
+ 	(ix86_nsaved_regs): Modify to accommodate changes to ix86_save_reg.
+ 	(ix86_nsaved_sseregs): Likewise.
+ 	(ix86_emit_save_regs): Likewise.
+ 	(ix86_emit_save_regs_using_mov): Likewise.
+ 	(ix86_emit_save_sse_regs_using_mov): Likewise.
+ 	(get_scratch_register_on_entry): Likewise.
+ 	(gen_frame_set): New function.
+ 	(gen_frame_load): Likewise.
+ 	(gen_frame_store): Likewise.
+ 	(emit_outlined_ms2sysv_save): Likewise.
+ 	(emit_outlined_ms2sysv_restore): Likewise.
+ 	(ix86_expand_prologue): Modify stack re-alignment code and call
+ 	emit_outlined_ms2sysv_save when appropriate.
+ 	(ix86_emit_leave): Clear machine_frame_state::sp_realigned.  Add
+ 	parameter rtx_insn *insn, which allows the function to be used to only
+ 	generate the notes.
+ 	(ix86_expand_epilogue): Modify validity checks of frame and stack
+ 	pointers, and call emit_outlined_ms2sysv_restore when appropriate.
+ 	(ix86_expand_call): Modify to enable m->call_ms2sysv when appropriate.
+ 	* config/i386/predicates.md
+ 	(save_multiple): New predicate.
+ 	(restore_multiple): Likewise.
+ 	* config/i386/sse.md
+ 	(save_multiple<mode>): New pattern.
+ 	(save_multiple_realign<mode>): Likewise.
+ 	(restore_multiple<mode>): Likewise.
+ 	(restore_multiple_and_return<mode>): Likewise.
+ 	(restore_multiple_leave_return<mode>): Likewise.
+ 	* Makefile.in: Export HOSTCXX and HOSTCXXFLAGS to site.exp
+ 
+ 2017-05-14  Julia Koval  <julia.koval@intel.com>
+ 
+ 	* config/i386/i386-builtin-types.def (VOID_FTYPE_INT_INT64): New type.
+ 	* config/i386/i386-builtin.def (__builtin_ia32_xgetbv)
+ 	(__builtin_ia32_xsetbv): New builtins.
+ 	* config/i386/i386.c (ix86_expand_special_args_builtin):
+ 	Process new types.
+ 	(ix86_expand_builtin): Special expand for new intrinsics.
+ 	* config/i386/i386.md (UNSPECV_XGETBV, UNSPECV_XSETBV): New.
+ 	(xsetbv, xsetbv_rex64, xgetbv, xgetbv_rex64): New insn patterns.
+ 	* config/i386/xsaveintrin.h (_xsetbv, _getbv): New intrinsics.
+ 
+ 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
+ 
+ 	* cfganal.c (inverted_post_order_compute): Change argument type
+ 	to vec *.
+ 	* cfganal.h (inverted_post_order_compute): Adjust prototype.
+ 	* df-core.c (rest_of_handle_df_initialize): Adjust.
+ 	(rest_of_handle_df_finish): Likewise.
+ 	(df_analyze_1): Likewise.
+ 	(df_analyze): Likewise.
+ 	(loop_inverted_post_order_compute): Change argument to be a vec *.
+ 	(df_analyze_loop): Adjust.
+ 	(df_get_n_blocks): Likewise.
+ 	(df_get_postorder): Likewise.
+ 	* df.h (struct df_d): Change field to be a vec.
+ 	* lcm.c (compute_laterin): Adjust.
+ 	(compute_available): Likewise.
+ 	* lra-lives.c (lra_create_live_ranges_1): Likewise.
+ 	* tree-ssa-dce.c (remove_dead_stmt): Likewise.
+ 	* tree-ssa-pre.c (compute_antic): Likewise.
+ 
+ 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
+ 
+ 	* cfganal.c (connect_infinite_loops_to_exit): Adjust.
+ 	(depth_first_search::depth_first_search): Change structure init
+ 	function to this constructor.
+ 	(depth_first_search::add_bb): Rename function to this member.
+ 	(depth_first_search::execute): Likewise.
+ 	(flow_dfs_compute_reverse_finish): Adjust.
+ 
+ 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
+ 
+ 	* ddg.c (find_nodes_on_paths): Use auto_sbitmap.
+ 	(longest_simple_path): Likewise.
+ 	* shrink-wrap.c (spread_components): Likewise.
+ 	(disqualify_problematic_components): Likewise.
+ 	(emit_common_heads_for_components): Likewise.
+ 	(emit_common_tails_for_components): Likewise.
+ 	(insert_prologue_epilogue_for_components): Likewise.
+ 
+ 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
+ 
+ 	* tree-ssa-dse.c (dse_dom_walker): Make m_live_byes a
+ 	auto_sbitmap.
+ 
+ 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
+ 
+ 	* df-core.c (df_set_blocks): Start using auto_bitmap.
+ 	(df_compact_blocks): Likewise.
+ 	* df-problems.c (df_rd_confluence_n): Likewise.
+ 	* df-scan.c (df_insn_rescan_all): Likewise.
+ 	(df_process_deferred_rescans): Likewise.
+ 	(df_update_entry_block_defs): Likewise.
+ 	(df_update_exit_block_uses): Likewise.
+ 	(df_entry_block_bitmap_verify): Likewise.
+ 	(df_exit_block_bitmap_verify): Likewise.
+ 	(df_scan_verify): Likewise.
+ 	* lra-constraints.c (lra_constraints): Likewise.
+ 	(undo_optional_reloads): Likewise.
+ 	(lra_undo_inheritance): Likewise.
+ 	* lra-remat.c (calculate_gen_cands): Likewise.
+ 	(do_remat): Likewise.
+ 	* lra-spills.c (assign_spill_hard_regs): Likewise.
+ 	(spill_pseudos): Likewise.
+ 	* tree-ssa-pre.c (bitmap_set_and): Likewise.
+ 	(bitmap_set_subtract_values): Likewise.
+ 
+ 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
+ 
+ 	* haifa-sched.c (estimate_shadow_tick): Replace manual bitmap
+ 	management with auto_bitmap.
+ 	(fix_inter_tick): Likewise.
+ 	(fix_recovery_deps): Likewise.
+ 	* ira.c (add_store_equivs): Likewise.
+ 	(find_moveable_pseudos): Likewise.
+ 	(split_live_ranges_for_shrink_wrap): Likewise.
+ 	* print-rtl.c (rtx_reuse_manager::rtx_reuse_manager): Likewise.
+ 	(rtx_reuse_manager::seen_def_p): Likewise.
+ 	(rtx_reuse_manager::set_seen_def): Likewise.
+ 	* print-rtl.h (class rtx_reuse_manager): Likewise.
+ 
+ 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
+ 
+ 	* bt-load.c (combine_btr_defs): Use auto_bitmap to manage bitmap
+ 	lifetime.
+ 	(migrate_btr_def): Likewise.
+ 	* cfgloop.c (get_loop_body_in_bfs_order): Likewise.
+ 	* df-core.c (loop_post_order_compute): Likewise.
+ 	(loop_inverted_post_order_compute): Likewise.
+ 	* hsa-common.h: Likewise.
+ 	* hsa-gen.c (hsa_bb::~hsa_bb): Likewise.
+ 	* init-regs.c (initialize_uninitialized_regs): Likewise.
+ 	* ipa-inline.c (resolve_noninline_speculation): Likewise.
+ 	(inline_small_functions): Likewise.
+ 	* ipa-reference.c (ipa_reference_write_optimization_summary): Likewise.
+ 	* ira.c (combine_and_move_insns): Likewise.
+ 	(build_insn_chain): Likewise.
+ 	* loop-invariant.c (find_invariants): Likewise.
+ 	* lower-subreg.c (propagate_pseudo_copies): Likewise.
+ 	* predict.c (tree_predict_by_opcode): Likewise.
+ 	(predict_paths_leading_to): Likewise.
+ 	(predict_paths_leading_to_edge): Likewise.
+ 	(estimate_loops_at_level): Likewise.
+ 	(estimate_loops): Likewise.
+ 	* shrink-wrap.c (try_shrink_wrapping): Likewise.
+ 	(spread_components): Likewise.
+ 	* tree-cfg.c (remove_edge_and_dominated_blocks): Likewise.
+ 	* tree-loop-distribution.c (rdg_build_partitions): Likewise.
+ 	* tree-predcom.c (tree_predictive_commoning_loop): Likewise.
+ 	* tree-ssa-coalesce.c (coalesce_ssa_name): Likewise.
+ 	* tree-ssa-phionlycprop.c (pass_phi_only_cprop::execute): Likewise.
+ 	* tree-ssa-pre.c (remove_dead_inserted_code): Likewise.
+ 	* tree-ssa-sink.c (nearest_common_dominator_of_uses): Likewise.
+ 	* tree-ssa-threadupdate.c (compute_path_counts): Likewise.
+ 	(mark_threaded_blocks): Likewise.
+ 	(thread_through_all_blocks): Likewise.
+ 	* tree-ssa.c (verify_ssa): Likewise.
+ 	(execute_update_addresses_taken): Likewise.
+ 	* tree-ssanames.c (verify_ssaname_freelists): Likewise.
+ 
+ 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
+ 
+ 	* cfganal.c (mark_dfs_back_edges): Replace manual stack with
+ 	auto_vec.
+ 	(post_order_compute): Likewise.
+ 	(inverted_post_order_compute): Likewise.
+ 	(pre_and_rev_post_order_compute_fn): Likewise.
+ 
+ 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
+ 
+ 	* genrecog.c (int_set::int_set): Explicitly construct our
+ 	auto_vec base class.
+ 	* vec.h (auto_vec::auto_vec): New constructor.
+ 
+ 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
+ 
+ 	* bitmap.h (class auto_bitmap): New constructor taking
+ 	bitmap_obstack * argument.
+ 
+ 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
+ 
+ 	* bitmap.h (class auto_bitmap): Change type of m_bits to
+ 	bitmap_head, and adjust ctor / dtor and member operators.
+ 
+ 2017-05-13  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* compare-elim.c (equivalent_reg_at_start): Return NULL_RTX
+ 	when returned register mode doesn't match original mode.
+ 
+ 2017-05-12  Jeff Law  <law@redhat.com>
+ 	    Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* config/mn10300/mn10300.c (mn10300_match_ccmode): Fix where
+ 	we look for cc setter after the compare-elim changes.
+ 	* config/mn10300/mn10300.md (addsi3_flags): Fix order of patterns
+ 	within the vector to match what compare-elim now expects.
+ 	(subsi3_flags, andsi3_flags, iorsi3_flags): Likewise.
+ 	(xorsi3_flags, one_cmplsi2_flags): Likewise.
+ 
+ 	* config/rx/rx.c (rx_match_ccmode): Fix where we look cc setter
+ 	after the compare-elim changes.
+ 	* config/rx/rx.md (abssi2_flags): Fix order of patterns within
+ 	the vector to match what compare-elim now expects.
+ 	(addsi3_flags, adc_flags, addsi3_flags peepholes): Likewise.
+ 	(andsi3_flags, negsi2_flags, one_cmplsi2_flags): Likewise.
+ 	(iorsi3_flags, rotlsi3_flags, rotrsi3_flags): Likewise.
+ 	(ashrsi3_flags, lshrsi3_flags, ashlsi3_flags): Likewise.
+ 	(ssaddsi3, subsi3_flags, sbb_flags, xorsi3_flags): Likewise.
+ 
+ 	* config/visium/visium.c (single_set_and_flags): Fix where
+ 	we look for cc setter after the compare-elim changes.
+ 	* config/visium/visium.md (flags_subst_logic): Fix order of patterns
+ 	with the vector to match what compare-elim now expects.
+ 	(flags_subst_arith, add<mode>3_insn_set_carry): Likewise.
+ 	(add<mode>3_insn_set_overflow, addsi3_insn_set_carry): Likewise.
+ 	(addsi3_insn_set_overflow, sub<mode>3_insn_set_carry): Likewise.
+ 	(sub<mode>3_insn_set_overflow, subsi3_insn_set_carry): Likewise.
+ 	(subsi3_insn_set_overflow, negsi2_insn_set_carry): Likewise.
+ 	(neg<mode>2_insn_set_overflow): Likewise.
+ 
+ 2017-05-12  Jim Wilson  <jim.wilson@linaro.org>
+ 
+ 	PR middle-end/79794
+ 	* expmed.c (extract_bit_field_1): Add alt_rtl argument.  Before
+ 	maybe_expand_insn call, set ops[0].target.  If still set after call,
+ 	set alt_rtl.  Add extra arg to recursive calls.
+ 	(extract_bit_field): Add alt_rtl argument.  Pass to
+ 	extract_bit_field.
+ 	* expmed.h (extract_bit_field): Fix prototype.
+ 	* expr.c (emit_group_load_1, copy_blkmode_from_reg)
+ 	(copy_blkmode_to_reg, read_complex_part, store_field): Pass extra NULL
+ 	to extract_bit_field_calls.
+ 	(expand_expr_real_1): Pass alt_rtl to expand_expr_real instead of 0.
+ 	Pass alt_rtl to extract_bit_field calls.
+ 	* calls.c (store_unaligned_arguments_into_psuedos)
+ 	load_register_parameters): Pass extra NULL to extract_bit_field calls.
+ 	* optabs.c (maybe_legitimize_operand): Clear op->target when call
+ 	gen_reg_rtx.
+ 	* optabs.h (struct expand_operand): Add target bitfield.
+ 
+ 2017-05-12  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* compare-elim.c (try_eliminate_compare): Canonicalize
+ 	operation with embedded compare to
+ 	[(set (reg:CCM) (compare:CCM (operation) (immediate)))
+ 	 (set (reg) (operation)].
+ 
+ 	* config/i386/i386.c (TARGET_FLAGS_REGNUM): New define.
+ 
+ 2017-05-12  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/80723
+ 	* config/i386/i386.c (ix86_rtx_cost) [case PLUS]: Ignore the
+ 	cost of adding a carry flag for ADC instruction.
+ 	[case MINUS]: Ignore the cost of subtracting a carry flag
+ 	for SBB instruction.
+ 
+ 2017-05-12  Steven Munroe  <munroesj@gcc.gnu.org>
+ 
+ 	* config.gcc (powerpc*-*-*): Add bmi2intrin.h, bmiintrin.h,
+ 	and x86intrin.h
+ 	* config/rs6000/bmiintrin.h: New file.
+ 	* config/rs6000/bmi2intrin.h: New file.
+ 	* config/rs6000/x86intrin.h: New file.
+ 
+ 2017-05-12  Jeff Law  <law@redhat.com>
+ 
+ 	* tree-vrp.c (vrp_dom_walker::before_dom_children): Push unwinding
+ 	markers.
+ 
+ 2017-05-12  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	PR middle-end/80707
+ 	* tree-cfg.c: Remove cfg edges of unreachable case statements.
+ 
+ 2017-05-12  Will Schmidt  <will_schmidt@vnet.ibm.com>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling for
+ 	early expansion of vector divide builtins.
+ 	(builtin_function_type): Add VSX_BUILTIN_UDIV_V2DI to the list of
+ 	builtins identified as having unsigned arguments.
+ 
+ 2017-05-12  Will Schmidt  <will_schmidt@vnet.ibm.com>
+ 
+ 	* config/rs6000/rs6000.c (gimple-fold.h): New #include.
+ 	(rs6000_gimple_fold_builtin): Add handling for early GIMPLE
+ 	expansion of vector logical operations (and, andc, or, xor,
+ 	nor, orc, nand).
+ 
+ 2017-05-12  Will Schmidt  <will_schmidt@vnet.ibm.com>
+ 
+ 	* gimple-fold.c (create_tmp_reg_or_ssa_name): Remove static declaration.
+ 	* gimple-fold.h (create_tmp_reg_or_ssa_name): New prototype.
+ 
+ 2017-05-12  Will Schmidt  <will_schmidt@vnet.ibm.com>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling for
+ 	early GIMPLE expansion of vector multiplies.
+ 
+ 2017-05-12  Prakhar Bahuguna  <prakhar.bahuguna@arm.com>
+ 
+ 	* config/arm/arm.md (movsi): Add TARGET_32BIT in addition to the
+ 	TARGET_HAVE_MOVT conditional.
+ 	(movt splitter): Likewise.
+ 
+ 2017-05-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-sccvn.h (has_VN_INFO): Declare.
+ 	* tree-ssa-pre.c (eliminate_dom_walker::before_dom_children):
+ 	Fold all stmts not inplace.
+ 
+ 2017-05-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/80713
+ 	* tree-ssa-pre.c (remove_dead_inserted_code): Clear
+ 	inserted_exprs bit for not removed stmts.
+ 
+ 2017-05-12  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	PR middle-end/69921
+ 	* tree-parloops.c (create_parallel_loop): Set "oacc kernels
+ 	parallelized" attribute for parallelized OpenACC kernels.
+ 	* omp-offload.c (execute_oacc_device_lower): Use it.
+ 
+ 	* omp-expand.c (expand_omp_target) <GF_OMP_TARGET_KIND_OACC_KERNELS>:
+ 	Set "oacc kernels" attribute.
+ 	* omp-general.c (oacc_set_fn_attrib): Remove is_kernel formal
+ 	parameter.  Adjust all users.
+ 	(oacc_fn_attrib_kernels_p): Remove function.
+ 	* omp-offload.c (execute_oacc_device_lower): Look for "oacc
+ 	kernels" attribute instead of calling oacc_fn_attrib_kernels_p.
+ 	* tree-ssa-loop.c (gate_oacc_kernels): Likewise.
+ 	* tree-parloops.c (create_parallel_loop): If oacc_kernels_p,
+ 	assert "oacc kernels" attribute is set.
+ 
+ 2017-05-11  Carl Love  <cel@us.ibm.com>
+ 
+ 	* config/rs6000/rs6000-c: Add support for built-in functions
+ 	vector unsigned char vec_popcnt (vector signed char)
+ 	vector unsigned char vec_popcnt (vector unsigned char)
+ 	vector unsigned short vec_popcnt (vector signed short)
+ 	vector unsigned short vec_popcnt (vector unsigned short)
+ 	vector unsigned int vec_popcnt (vector signed int)
+ 	vector unsigned int vec_popcnt (vector unsigned int)
+ 	vector unsigned long long vec_popcnt (vector signed long long)
+ 	vector unsigned long long vec_popcnt (vector unsigned long long)
+ 	vector signed long long vec_slo (vector signed long long,
+ 					 vector signed char)
+ 	vector signed long long vec_slo (vector signed long long,
+ 					 vector unsigned char)
+ 	vector unsigned long long vec_slo (vector unsigned long long,
+ 					   vector signed char)
+ 	vector unsigned long long vec_slo (vector unsigned long long,
+ 					   vector unsigned char)
+ 	* config/rs6000/rs6000-builtin.def: Add definitions for VPOPCNTUB,
+ 	VPOPCNTUH, VPOPCNTUW, and VPOPCNTUD overloads.
+ 	* config/rs6000/altivec.h: Add define for vec_popcnt, vec_popcntb,
+ 	vec_popcnth, vec_popcntw and vec_popcntd built-in functions.
+ 	* doc/extend.texi: Update the built-in documentation file for the
+ 	new built-in functions.
+ 
+ 2017-05-11  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	* attribs.h (sorted_attr_string): Move machine independent
+ 	functions for target clone support from the i386 port to common
+ 	code.  Rename ix86_function_versions to common_function_versions.
+ 	Rename make_name to make_unique_name.
+ 	(common_function_versions): Likewise.
+ 	(make_unique_name): Likewise.
+ 	(make_dispatcher_decl): Likewise.
+ 	(is_function_default_version): Likewise.
+ 	* attribs.c (attr_strcmp): Likewise.
+ 	(sorted_attr_string): Likewise.
+ 	(common_function_versions): Likewise.
+ 	(make_unique_name): Likewise.
+ 	(make_dispatcher_decl): Likewise.
+ 	(is_function_default_version): Likewise.
+ 	* config/i386/i386.c (attr_strcmp): Likewise.
+ 	(sorted_attr_string): Likewise.
+ 	(ix86_function_versions): Likewise.
+ 	(make_name): Likewise.
+ 	(make_dispatcher_decl): Likewise.
+ 	(is_function_default_version): Likewise.
+ 	(TARGET_OPTION_FUNCTION_VERSIONS): Update target function hook.
+ 
+ 2017-05-11  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	PR target/80695
+ 	* config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost):
+ 	Account for direct move costs for vec_construct of integer
+ 	vectors.
+ 
+ 2017-05-11  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/80706
+ 	* config/i386/sync.md (UNSPEC_LDX_ATOMIC): New unspec.
+ 	(UNSPEC_STX_ATOMIC): Ditto.
+ 	(loaddi_via_sse): New insn.
+ 	(storedi_via_sse): Ditto.
+ 	(atomic_loaddi_fpu): Emit loaddi_via_sse and storedi_via_sse.
+ 	Update corresponding peephole2 patterns.
+ 	(atomic_storedi_fpu): Ditto.
+ 
+ 2017-05-11  Julia Koval  <julia.koval@intel.com>
+ 
+ 	* config/i386/avx512fintrin.h (_mm_mask_rsqrt14_sd)
+ 	(_mm_maskz_rsqrt14_sd, _mm_mask_rsqrt14_ss, _mm_maskz_rsqrt14_ss):
+ 	New intrinsics.
+ 	* config/i386/i386-builtin.def (__builtin_ia32_rsqrt14sd_mask)
+ 	(__builtin_ia32_rsqrt14ss_mask): New builtins.
+ 	* config/i386/sse.md (rsqrt14_<mode>_mask): New pattern.
+ 
+ 2017-05-11  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* graphite-poly.c: Include dumpfile.h.
+ 
+ 	* dumpfle.h (dump_function): Declare here ...
+ 	* tree-dump.h (dump_function): ... not here.
+ 	* dumpfile.c: #include tree-cfg.h.
+ 	(dump_function): Move here from ...
+ 	* tree-dump.c (dump_function): ... here.
+ 	* gimplify.c: #include splay-tree.h, not tree-dump.h.
+ 	* graphite-poly.c: Don't include tree-dump.h.
+ 	* cgraphclones.c: Include dumpfile.h not tree-dump.h.
+ 	* print-tree.c: Likewise.
+ 	* stor-layout.c: Likewise.
+ 	* tree-nested.c: Likewise.
+ 
+ 	* dumpfile.c (dump_start): Use TDF_FLAGS.
+ 	(dump_enable_all): Fix TDF_KIND check thinko.
+ 
+ 2017-05-11  Kelvin Nilsen  <kelvin@gcc.gnu.org>
+ 
+ 	* config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
+ 	array entries to represent two legal parameterizations of the
+ 	overloaded __builtin_cmpb function, as represented by the
+ 	P6_OV_BUILTIN_CMPB constant.
+ 	(altivec_resolve_overloaded_builtin): Add special case handling
+ 	for the __builtin_cmpb function, as represented by the
+ 	P6_OV_BUILTIN_CMPB constant.
+ 	* config/rs6000/rs6000-builtin.def (BU_P6_2): New macro.
+ 	(BU_P6_64BIT_2): New macro.
+ 	(BU_P6_OVERLOAD_2): New macro
+ 	(CMPB_32): Add 32-bit compare-bytes support for 32-bit only targets.
+ 	(CMPB): Add 64-bit compare-bytes support for 32-bit and 64-bit targets.
+ 	(CMPB): Add overload support to represent both 32-bit and 64-bit
+ 	compare-bytes function.
+ 	* config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Add
+ 	support for TARGET_CMPB.
+ 	* config/rs6000/rs6000.h: Add support for RS6000_BTM_CMPB.
+ 	* doc/extend.texi (PowerPC AltiVec Built-in Functions): Add
+ 	documentation of the __builtin_cmpb overloaded built-in function.
+ 
+ 2017-05-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/80705
+ 	* tree-vect-data-refs.c (vect_analyze_data_refs): DECL_NONALIASED
+ 	bases are not vectorizable.
+ 
+ 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-ssa-loop-ivopts.c (determine_set_costs): Skip non-interger
+ 	when counting register pressure.
+ 
+ 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-ssa-loop-ivopts.c (compare_cost_pair): New.
+ 	(iv_ca_more_deps): Renamed to ...
+ 	(iv_ca_compare_deps): ... this.
+ 	(iv_ca_extend): Extend iv_ca if NEW_CP is cheaper than OLD_CP.
+ 
+ 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-ssa-loop-ivopts.c (find_interesting_uses): Move inv vars dump
+ 	to ...
+ 	(determine_group_iv_costs): ... here.
+ 	(find_inv_vars_cb): Record inv var if it's not recorded before.
+ 
+ 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-ssa-loop-ivopts.c (allow_ip_end_pos_p): Refine comments.
+ 	(get_shiftadd_cost): Ditto.
+ 
+ 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-ssa-address.c: Include header file.
+ 	(move_hint_to_base): Return TRUE if BASE_HINT is moved to memory
+ 	address.
+ 	(add_to_parts): Refactor.
+ 	(addr_to_parts): New parameter.  Update use of move_hint_to_base.
+ 	(create_mem_ref): Update use of addr_to_parts.  Re-associate addr
+ 	in new order.
+ 
+ 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	PR tree-optimization/53090
+ 	* tree-ssa-loop-ivopts.c (enum comp_iv_rewrite): New enum value
+ 	COMP_IV_EXPR_2.
+ 	(extract_cond_operands): Detect condition with IV on both sides
+ 	and return COMP_IV_EXPR_2.
+ 	(find_interesting_uses_cond): Add iv_use for both IVs in condition.
+ 	(rewrite_use_compare): Simplify by removing call to function
+ 	extract_cond_operands.
+ 
+ 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-ssa-loop-ivopts.c (enum comp_iv_rewrite): New.
+ 	(extract_cond_operands): Detect condition comparing against non-
+ 	invariant bound and return appropriate enum value.
+ 	(find_interesting_uses_cond): Update use of extract_cond_operands.
+ 	Handle its return value accordingly.
+ 	(determine_group_iv_cost_cond, rewrite_use_compare): Ditto.
+ 
+ 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Re-associate
+ 	nonlinear iv_use computation in loop invariant sensitive way.
+ 
+ 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-ssa-loop-ivopts.c (relate_compare_use_with_all_cands): New.
+ 	(find_iv_candidates): Call relate_compare_use_with_all_cands.
+ 
+ 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-ssa-loop-ivopts.c (struct iv_cand): New field inv_exprs.
+ 	(dump_cand): Support iv_cand.inv_exprs.
+ 	(add_candidate_1): Record invariant exprs in iv_cand.inv_exprs
+ 	for candidates.
+ 	(iv_ca_set_no_cp, iv_ca_set_cp, free_loop_data): Support
+ 	iv_cand.inv_exprs.
+ 
+ 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-ssa-loop-ivopts.c (multiplier_allowed_in_address_p): Move
+ 	from ...
+ 	* tree-ssa-address.c (multiplier_allowed_in_address_p): ... to here
+ 	as local function.  Include necessary header files.
+ 	* tree-ssa-loop-ivopts.h (multiplier_allowed_in_address_p): Delete.
+ 
+ 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-ssa-loop-ivopts.c (autoinc_possible_for_pair): Simplify.
+ 
+ 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-ssa-loop-ivopts.c (force_expr_to_var_cost): Handle more
+ 	operators: TRUNC_DIV_EXPR, BIT_AND_EXPR, BIT_IOR_EXPR, LSHIFT_EXPR,
+ 	RSHIFT_EXPR and BIT_NOT_EXPR.
+ 
+ 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-ssa-loop-ivopts.c (get_loop_invariant_expr): Simplify.
+ 	(adjust_setup_cost): New parameter supporting round up adjustment.
+ 	(struct address_cost_data): Delete.
+ 	(force_expr_to_var_cost): Don't bound cost with spill_cost.
+ 	(split_address_cost, ptr_difference_cost): Delete.
+ 	(difference_cost, compare_aff_trees, record_inv_expr): Delete.
+ 	(struct ainc_cost_data): New struct.
+ 	(get_address_cost_ainc): New function.
+ 	(get_address_cost, get_computation_cost): Reimplement.
+ 	(determine_group_iv_cost_address): Record inv_expr for all uses of
+ 	a group.
+ 	(determine_group_iv_cost_cond): Call get_loop_invariant_expr.
+ 	(iv_ca_has_deps): Reimplemented to ...
+ 	(iv_ca_more_deps): ... this.  Check if NEW_CP introduces more deps
+ 	than OLD_CP.
+ 	(iv_ca_extend): Call iv_ca_more_deps.
+ 
+ 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-ssa-address.c (struct mem_address): Move to header file.
+ 	(valid_mem_ref_p, move_fixed_address_to_symbol): Make it global.
+ 	* tree-ssa-address.h (struct mem_address): Move from C file.
+ 	(valid_mem_ref_p, move_fixed_address_to_symbol): Declare.
+ 
+ 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-affine.h (aff_combination_type): New interface.
+ 	(aff_combination_zero_p): Remove static.
+ 	(aff_combination_const_p): New interface.
+ 	(aff_combination_singleton_var_p): New interfaces.
+ 
+ 2017-05-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-pre.c (eliminate_dom_walker::before_dom_children):
+ 	Skip unreachable blocks and destinations.
+ 	(eliminate): Move stmt removal and fixup ...
+ 	(fini_eliminate): ... here.  Skip inserted exprs.
+ 	(pass_pre::execute): Move fini_pre after fini_eliminate.
+ 	* tree-ssa-tailmerge.c: Include tree-cfgcleanup.h.
+ 	(tail_merge_optimize): Run cleanup_tree_cfg if requested by
+ 	PRE to get rid of dead code that has invalid SSA form and
+ 	split critical edges again.
+ 
+ 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* rtlanal.c (rtx_cost): Handle TRUNCATE between tieable modes.
+ 
+ 2017-05-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	* passes.c (execute_function_todo): Verify loops if they are
+ 	said to be up-to-date.
+ 	* cfgexpand.c (pass_expand::execute): Discard loops for -dx.
+ 	* trans-mem.c (pass_tm_edges::execute): Mark loops for fixup.
+ 
+ 2017-05-10  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	PR target/80090
+ 	* config/pa/pa.c (pa_assemble_integer): When outputting a SYMBOL_REF,
+ 	handle calling assemble_external ourself.
+ 
+ 	PR target/79027
+ 	* config/pa/pa.c (pa_cannot_change_mode_class): Reject changes to/from
+ 	modes with zero size.  Enhance comment.
+ 
+ 2017-05-10  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	* config/rs6000/rs6000.c (altivec_init_builtins): Define POWER8
+ 	built-ins for vec_xl and vec_xst with short and char pointer
+ 	arguments.
+ 
+ 2017-05-10  Sebastian Peryt  <sebastian.peryt@intel.com>
+ 
+ 	* config/i386/avx512fintrin.h (_mm_mask_max_round_sd)
+ 	(_mm_maskz_max_round_sd, _mm_mask_max_round_ss)
+ 	(_mm_maskz_max_round_ss, _mm_mask_min_round_sd)
+ 	(_mm_maskz_min_round_sd, _mm_mask_min_round_ss)
+ 	(_mm_maskz_min_round_ss): New intrinsics.
+ 	* config/i386/i386-builtin-types.def (V2DF, V2DF, V2DF, V2DF, UQI, INT)
+ 	(V4SF, V4SF, V4SF, V4SF, UQI, INT): New function type aliases.
+ 	* config/i386/i386-builtin.def (__builtin_ia32_maxsd_mask_round)
+ 	(__builtin_ia32_maxss_mask_round, __builtin_ia32_minsd_mask_round)
+ 	(__builtin_ia32_minss_mask_round): New builtins.
+ 	* config/i386/i386.c (V2DF_FTYPE_V2DF_V2DF_V2DF_UQI_INT)
+ 	(V4SF_FTYPE_V4SF_V4SF_V4SF_UQI_INT): Handle new types.
+ 	* config/i386/sse.md (<sse>_vm<code><mode>3<round_saeonly_name>):
+ 	Rename to ...
+ 	(<sse>_vm<code><mode>3<mask_name><round_saeonly_name>): ... this.
+ 	(v<maxmin_float><ssescalarmodesuffix>\t{<round_saeonly_op3>%2, %1, %0|%0, %1, %<iptr>2<round_saeonly_op3>}):
+ 	Change to ...
+ 	(v<maxmin_float><ssescalarmodesuffix>\t{<round_saeonly_mask_op3>%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %<iptr>2<round_saeonly_mask_op3>}):
+ 	... this.
+ 
+ 2017-05-10  Sebastian Peryt  <sebastian.peryt@intel.com>
+ 
+ 	* config/i386/avx512fintrin.h (_mm_mask_mul_round_sd)
+ 	(_mm_maskz_mul_round_sd, _mm_mask_mul_round_ss)
+ 	(_mm_maskz_mul_round_ss, _mm_mask_div_round_sd)
+ 	(_mm_maskz_div_round_sd, _mm_mask_div_round_ss)
+ 	(_mm_maskz_div_round_ss, _mm_mask_mul_sd, _mm_maskz_mul_sd)
+ 	(_mm_mask_mul_ss, _mm_maskz_mul_ss, _mm_mask_div_sd)
+ 	(_mm_maskz_div_sd, _mm_mask_div_ss, _mm_maskz_div_ss): New intrinsics.
+ 	* config/i386/i386-builtin-types.def (V2DF_FTYPE_V2DF_V2DF_V2DF_UQI_INT)
+ 	(V4SF_FTYPE_V4SF_V4SF_V4SF_UQI_INT): New function type aliases.
+ 	* config/i386/i386-builtin.def (__builtin_ia32_divsd_mask_round)
+ 	(__builtin_ia32_divss_mask_round, __builtin_ia32_mulsd_mask_round)
+ 	(__builtin_ia32_mulss_mask_round): New builtins.
+ 	* config/i386/i386.c (V2DF_FTYPE_V2DF_V2DF_V2DF_UQI_INT)
+ 	(V4SF_FTYPE_V4SF_V4SF_V4SF_UQI_INT): Handle new types.
+ 	* config/i386/sse.md (<sse>_vm<multdiv_mnemonic><mode>3<round_name>):
+ 	Rename to ...
+ 	(<sse>_vm<multdiv_mnemonic><mode>3<mask_name><round_name>): ... this.
+ 	(v<multdiv_mnemonic><ssescalarmodesuffix>\t{<round_op3>%2, %1, %0|%0, %1, %<iptr>2<round_op3>}):
+ 	Change to ...
+ 	(v<multdiv_mnemonic><ssescalarmodesuffix>\t{<round_mask_op3>%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %<iptr>2<round_mask_op3>}):
+ 	... this.
+ 
+ 2017-05-10  Julia Koval  <julia.koval@intel.com>
+ 
+ 	* config/i386/avxintrin.h (_mm256_set_m128, _mm256_set_m128d)
+ 	(_mm256_set_m128i, _mm256_setr_m128, _mm256_setr_m128d)
+ 	(_mm256_setr_m128i): New intrinsics.
+ 
+ 2017-05-10  Julia Koval  <julia.koval@intel.com>
+ 
+ 	* config/i386/avx512fintrin.h (_mm_mask_rcp14_sd)
+ 	(_mm_maskz_rcp14_sd, _mm_mask_rcp14_ss)
+ 	(_mm_maskz_rcp14_ss): New intrinsics.
+ 	* config/i386/i386-builtin.def (__builtin_ia32_rcp14sd_mask)
+ 	(__builtin_ia32_rcp14ss_mask): New builtins.
+ 	* config/i386/sse.md (srcp14<mode>_mask): New pattern.
+ 
+ 2017-05-10  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	PR tree-optimization/51513
+ 	* tree-cfg.c (gimple_seq_unreachable_p): New function.
+ 	(assert_unreachable_fallthru_edge_p): Use it.
+ 	(group_case_labels_stmt): Likewise.
+ 	* tree-cfg.h: Prototype it.
+ 	* stmt.c: Include cfghooks.h and tree-cfg.h.
+ 	(emit_case_dispatch_table) <gap_label>: New local variable.
+ 	Use it to fill dispatch table gaps.
+ 	Test for default_label before updating probabilities.
+ 	(expand_case) <default_label>: Remove unneeded initialization.
+ 	Test for unreachable default case statement and remove its edge.
+ 	Set default_label accordingly.
+ 	* tree-ssa-ccp.c (optimize_unreachable): Update comment.
+ 
+ 2017-05-10  Carl Love  <cel@us.ibm.com>
+ 
+ 	* config/rs6000/rs6000-c: Add support for built-in functions
+ 	vector signed char	vec_neg (vector signed char)
+ 	vector signed short int	vec_neg (vector short int)
+ 	vector signed int	vec_neg (vector signed int)
+ 	vector signed long long	vec_neg (vector signed long long)
+ 	vector float		vec_neg (vector float)
+ 	vector double		vec_neg (vector double)
+ 	* config/rs6000/rs6000-builtin.def: Add definitions for NEG function
+ 	overload.
+ 	* config/rs6000/altivec.h: Add define for vec_neg
+ 	* doc/extend.texi: Update the built-in documentation for the
+ 	new built-in functions.
+ 
+ 2017-05-10  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
+ 
+ 	PR tree-optimization/77644
+ 	* match.pd (sqrt(x) cmp sqrt(y) -> x cmp y): New pattern.
+ 
+ 2017-05-10  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* dumpfile.h (TDI_lang_all): New.
+ 	(TDF_KIND): New. Renumber others
+ 	(TDF_LANG, TDF_TREE, TDF_RTL, TDF_IPA): Enumerate value, rather
+ 	than bits.
+ 	* dumpfile.c (dump_files): Mark language dumps as TDF_LANG.  add
+ 	lang-all.
+ 	(get_dump_file_name): Adjust suffix generation.
+ 	(dump_enable_all): Use TDF_KIND.
+ 	* doc/invoke.texi (-fdump-lang-all): Document.
+ 
+ 	* dumpfile.h: Tabify.
+ 
+ 2017-05-10  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	PR target/80671
+ 	* config/aarch64/cortex-a57-fma-steering.c (merge_forest):
+ 	Move member access before delete.
+ 
+ 2017-05-10  Alexandre Oliva  <aoliva@redhat.com>
+ 
+ 	* tree-inline.c (expand_call_inline): Split block at stmt
+ 	before the call.
+ 
+ 2017-05-09  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	PR target/68163
+ 	* config/rs6000/rs6000.md (f32_lr): Delete mode attributes that
+ 	are now unused after splitting mov{sf,sd}_hardfloat.
+ 	(f32_lr2): Likewise.
+ 	(f32_lm): Likewise.
+ 	(f32_lm2): Likewise.
+ 	(f32_li): Likewise.
+ 	(f32_li2): Likewise.
+ 	(f32_lv): Likewise.
+ 	(f32_sr): Likewise.
+ 	(f32_sr2): Likewise.
+ 	(f32_sm): Likewise.
+ 	(f32_sm2): Likewise.
+ 	(f32_si): Likewise.
+ 	(f32_si2): Likewise.
+ 	(f32_sv): Likewise.
+ 	(f32_dm): Likewise.
+ 	(f32_vsx): Likewise.
+ 	(f32_av): Likewise.
+ 	(mov<mode>_hardfloat): Split into separate movsf and movsd pieces.
+ 	For movsf, order stores so the VSX stores occur before the GPR
+ 	store which encourages the register allocator to use a traditional
+ 	FPR instead of a GPR.  For movsd, order the stores so that the GPR
+ 	store comes before the VSX stores to allow the power6 to work.
+ 	This is due to the power6 not having a 32-bit integer store
+ 	instruction from a FPR.
+ 	(movsf_hardfloat): Likewise.
+ 	(movsd_hardfloat): Likewise.
+ 
+ 2017-05-09  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR translation/80280
+ 	* config/sol2-c.c (cmn_err_flag_specs): Initialize new data member
+ 	added in r247778.
+ 
+ 	PR translation/80280
+ 	* config/i386/msformat-c.c (ms_printf_flag_specs): Initialize new
+ 	data member added in r247778.
+ 	(ms_scanf_flag_specs, ms_strftime_flag_specs): Same.
+ 
+ 2017-05-09  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* tree.h (tree_fits_shwi_p, tree_fits_uhwi_p): Unconditionally pure.
+ 
+ 	* ipa-devirt.c (default_hash_traits<type_pair>): Skip struct-scope
+ 	typedefs.
+ 
+ 2017-05-09  Marek Polacek  <polacek@redhat.com>
+ 
+ 	* doc/invoke.texi: Fix typo.
+ 
+ 2017-05-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vrp.c (vrp_val_is_max): Adjust comment.
+ 	(vrp_val_is_min): Likewise.
+ 	(set_value_range_to_value): Likewise.
+ 	(set_value_range_to_nonnegative): Likewise.
+ 	(gimple_assign_nonzero_p): Likewise.
+ 	(gimple_stmt_nonzero_p): Likewise.
+ 	(vrp_int_const_binop): Likewise.  Remove unreachable case.
+ 	(adjust_range_with_scev): Adjust comments.
+ 	(compare_range_with_value): Likewise.
+ 	(extract_range_from_phi_node): Likewise.
+ 	(test_for_singularity): Likewise.
+ 
+ 2017-05-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vrp.c (get_single_symbol): Add assert that we don't
+ 	get overflowed constants as invariant part.
+ 	(compare_values_warnv): Add comment before the TREE_NO_WARNING
+ 	checks.  Use wi::cmp instead of recursing for integer constants.
+ 	(compare_values): Just ignore whether we assumed undefined
+ 	overflow instead of failing the compare.
+ 	(extract_range_for_var_from_comparison_expr): Add comment before the
+ 	TREE_NO_WARNING sets.
+ 	(test_for_singularity): Likewise.
+ 	(extract_range_from_comparison): Do not disable optimization
+ 	when we assumed undefined overflow.
+ 	(extract_range_basic): Remove init of unused var.
+ 
+ 2017-05-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vrp.c (vrp_int_const_binop): Use wide-ints and simplify.
+ 	(extract_range_from_multiplicative_op_1): Adjust.
+ 	(extract_range_from_binary_expr_1): Use int_const_binop.
+ 
+ 2017-05-08  Kelvin Nilsen  <kelvin@gcc.gnu.org>
+ 
+ 	PR target/80101
+ 	* config/rs6000/power6.md: Replace store_data_bypass_p calls with
+ 	rs6000_store_data_bypass_p in seven define_bypass directives and
+ 	in several comments.
+ 	* config/rs6000/rs6000-protos.h: Add prototype for
+ 	rs6000_store_data_bypass_p function.
+ 	* config/rs6000/rs6000.c (rs6000_store_data_bypass_p): New
+ 	function implements slightly different (rs6000-specific) semantics
+ 	than store_data_bypass_p, returning false rather than aborting
+ 	with assertion error when arguments do not satisfy the
+ 	requirements of store data bypass.
+ 	(rs6000_adjust_cost): Replace six calls of store_data_bypass_p with
+ 	rs6000_store_data_bypass_p.
+ 
+ 2017-05-08  Max Filippov  <jcmvbkbc@gmail.com>
+ 
+ 	* config/xtensa/xtensa-protos.h
+ 	(xtensa_initial_elimination_offset): New declaration.
+ 	* config/xtensa/xtensa.c (xtensa_initial_elimination_offset):
+ 	New function. Move its body from the INITIAL_ELIMINATION_OFFSET
+ 	macro definition, add case for FRAME_POINTER_REGNUM when
+ 	FRAME_GROWS_DOWNWARD.
+ 	* config/xtensa/xtensa.h (FRAME_GROWS_DOWNWARD): New macro definition.
+ 	(INITIAL_ELIMINATION_OFFSET): Replace body with call to
+ 	xtensa_initial_elimination_offset.
+ 
+ 2017-05-08  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* doc/invoke.texi: Alphabetize -fdump options.
+ 
+ 2017-05-08  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR translation/80280
+ 	* config/sol2-c.c (solaris_pragma_align): Correct quoting.
+ 
+ 2017-05-08  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+ 
+ 	* target.def (compute_frame_layout): New optional target hook.
+ 	* doc/tm.texi.in (TARGET_COMPUTE_FRAME_LAYOUT): Add hook.
+ 	* doc/tm.texi (TARGET_COMPUTE_FRAME_LAYOUT): Add documentation.
+ 	* lra-eliminations.c (update_reg_eliminate): Call compute_frame_layout
+ 	target hook.
+ 	* reload1.c (verify_initial_elim_offsets): Likewise.
+ 	* config/arm/arm.c (TARGET_COMPUTE_FRAME_LAYOUT): Define.
+ 	(use_simple_return_p): Call arm_compute_frame_layout if needed.
+ 	(arm_get_frame_offsets): Split up into this ...
+ 	(arm_compute_frame_layout): ... and this function.
+ 
+ 2017-05-08  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/constraints.md (Usa): New constraint.
+ 	* config/aarch64/aarch64.md (*movsi_aarch64, *movdi_aarch64): Use it.
+ 
+ 2017-05-08  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	* config.gcc (arm*-*-*): Set TM_MULTILIB_CONFIG from
+ 	with_multilib_list after it has been checked.
+ 
+ 2017-05-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-pre.c (bitmap_set_and): Avoid bitmap copy.
+ 	(bitmap_set_subtract_values): Likewise.
+ 
+ 2017-05-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vrp.c (gimple_assign_nonzero_warnv_p): Rename to ...
+ 	(gimple_assign_nonzero): ... this and remove strict_overflow_p
+ 	argument.
+ 	(gimple_stmt_nonzero_warnv_p): Rename to ...
+ 	(gimple_stmt_nonzero_p): ... this and remove strict_overflow_p
+ 	argument.
+ 	(vrp_stmt_computes_nonzero): Remove strict_overflow_p argument.
+ 	(extract_range_basic): Adjust, do not disable propagation on
+ 	strict overflow sensitive simplification.
+ 	(vrp_visit_cond_stmt): Likewise.
+ 
+ 2017-05-05  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* ipa-inline-analysis.c (estimate_function_body_sizes): Recompute
+ 	body size unconditionally.
+ 
+ 2017-05-07  Jeff Law  <law@redhat.com>
+ 
+ 	Revert:
+ 	2017-05-06  Jeff Law  <law@redhat.com>
+ 	PR tree-optimization/78496
+ 	* tree-vrp.c (simplify_assert_expr_using_ranges): Remove debugging
+ 	code.
+ 
+ 	PR tree-optimization/78496
+ 	* tree-vrp.c (simplify_assert_expr_using_ranges): New function.
+ 	(simplify_stmt_using_ranges): Call it.
+ 	(vrp_dom_walker::before_dom_children): Extract equivalences
+ 	from an ASSERT_EXPR with an equality comparison against a
+ 	constant.
+ 
+ 2017-05-06  Jeff Law  <law@redhat.com>
+ 
+ 	PR tree-optimization/78496
+ 	* tree-vrp.c (simplify_assert_expr_using_ranges): Remove debugging
+ 	code.
+ 
+ 	PR tree-optimization/78496
+ 	* tree-vrp.c (simplify_assert_expr_using_ranges): New function.
+ 	(simplify_stmt_using_ranges): Call it.
+ 	(vrp_dom_walker::before_dom_children): Extract equivalences
+ 	from an ASSERT_EXPR with an equality comparison against a
+ 	constant.
+ 
+ 2017-05-06  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* lra-constraints.c (lra_copy_reg_equiv): New function.
+ 	(split_reg): Use it to copy equivalence information from the
+ 	original register to the spill register.
+ 
+ 2017-05-06  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	PR rtl-optimization/75964
+ 	* simplify-rtx.c (simplify_const_relational_operation): Remove
+ 	invalid handling of comparisons of integer ABS.
+ 
+ 2017-05-06  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.c (ext_80387_constant_init): Do not explicitly
+ 	initialize to zero.
+ 	(init_regs): Remove declaration.
+ 	(function_arg_advance_32): Initialize error_p as boolean variable.
+ 
+ 2017-05-05  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* store-motion.c (remove_reachable_equiv_notes): Reformat long
+ 	lines.  Use for (;;).
+ 
+ 2017-05-05  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_vect_nonmem): New static var.
+ 	(rs6000_init_cost): Initialize rs6000_vect_nonmem.
+ 	(rs6000_add_stmt_cost): Update rs6000_vect_nonmem.
+ 	(rs6000_finish_cost): Avoid vectorizing simple copy loops with
+ 	VF=2 that require versioning.
+ 
+ 2017-05-05  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* diagnostic.h (CARET_LINE_MARGIN): Convert from macro to const
+ 	int.
+ 
+ 2017-05-05  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* diagnostic.h (diagnostic_override_option_index): Convert from
+ 	macro to inline function.
+ 
+ 2017-05-05  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* diagnostic.c (last_module_changed_p): New function.
+ 	(set_last_module): New function.
+ 	(diagnostic_report_current_module): Convert macro usage to
+ 	the above functions.
+ 	* diagnostic.h (diagnostic_context::last_module): Strengthen
+ 	from const line_map * to const line_map_ordinary *.
+ 	(diagnostic_last_module_changed): Delete macro.
+ 	(diagnostic_set_last_module): Delete macro.
+ 
+ 2017-05-05  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* diagnostic.c (diagnostic_impl): Replace report_diagnostic
+ 	with diagnostic_report_diagnostic.
+ 	(diagnostic_n_impl_richloc): Likewise.
+ 	* diagnostic.h (report_diagnostic): Delete macro.
+ 	* rtl-error.c (diagnostic_for_asm): Replace report_diagnostic
+ 	with diagnostic_report_diagnostic.
+ 	* substring-locations.c (format_warning_va): Likewise.
+ 
+ 2017-05-05  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* diagnostic.c (diagnostic_report_diagnostic): Eliminate
+ 	save/restor of format_spec.  Move option-printing code to...
+ 	(print_option_information): ...this new function, and
+ 	reimplement by simply printing to the pretty_printer,
+ 	rather than appending to the format string.
+ 
+ 2017-05-05  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* diagnostic.c (diagnostic_report_diagnostic): Split out pragma
+ 	handling logic into...
+ 	(update_effective_level_from_pragmas): ...this new function.
+ 
+ 2017-05-04  Andrew Waterman  <andrew@sifive.com>
+ 
+ 	* config/riscv/riscv.opt (mstrict-align): New option.
+ 	* config/riscv/riscv.h (STRICT_ALIGNMENT): Use it.  Update comment.
+ 	(SLOW_UNALIGNED_ACCESS): Define.
+ 	(riscv_slow_unaligned_access): Declare.
+ 	* config/riscv/riscv.c (riscv_tune_info): Add slow_unaligned_access
+ 	field.
+ 	(riscv_slow_unaligned_access): New variable.
+ 	(rocket_tune_info): Set slow_unaligned_access to true.
+ 	(optimize_size_tune_info): Set slow_unaligned_access to false.
+ 	(riscv_cpu_info_table): Add entry for optimize_size_tune_info.
+ 	(riscv_valid_lo_sum_p): Use TARGET_STRICT_ALIGN.
+ 	(riscv_option_override): Set riscv_slow_unaligned_access.
+ 	* doc/invoke.texi: Add -mstrict-align to RISC-V.
+ 
+ 2017-05-04  Kito Cheng  <kito.cheng@gmail.com>
+ 
+ 	* config/riscv/riscv.md: Unify indentation.
+ 
+ 2017-05-05  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	PR target/79038
+ 	PR target/79202
+ 	PR target/79203
+ 	* config/rs6000/rs6000.md (u code attribute): Add FIX and
+ 	UNSIGNED_FIX.
+ 	(extendsi<mode>2): Add support for doing sign extension via
+ 	VUPKHSW and XXPERMDI if the value is in Altivec registers and we
+ 	don't have ISA 3.0 instructions.
+ 	(extendsi<mode>2 splitter): Likewise.
+ 	(fix_trunc<mode>si2): If we are at ISA 2.07 (VSX small integer),
+ 	generate the normal insns since SImode can now go in vector
+ 	registers.  Disallow the special UNSPECs needed for previous
+ 	machines to hide SImode being used.  Add new insns
+ 	fctiw{,w}_<mode>_smallint if SImode can go in vector registers.
+ 	(fix_trunc<mode>si2_stfiwx): Likewise.
+ 	(fix_trunc<mode>si2_internal): Likewise.
+ 	(fixuns_trunc<mode>si2): Likewise.
+ 	(fixuns_trunc<mode>si2_stfiwx): Likewise.
+ 	(fctiw<u>z_<mode>_smallint): Likewise.
+ 	(fctiw<u>z_<mode>_mem): New combiner pattern to prevent conversion
+ 	of floating point to 32-bit integer from doing a direct move to
+ 	the GPR registers to do a store.
+ 	(fctiwz_<mode>): Break long line.
+ 
+ 2017-05-05  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* Makefile.in (GTFILES): Add tree-ssa-loop-ivopts.c.
+ 	* tree-ssa-loop-ivopts.c (compute_max_addr_offset): Delete.
+ 	(addr_list, addr_offset_valid_p): New.
+ 	(split_address_groups): Check offset validity with above function.
+ 	(gt-tree-ssa-loop-ivopts.h): Include header file.
+ 
+ 2017-05-05  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* config.gcc (arm*-*-*): Add missing 'fi'.
+ 
+ 2017-05-05  Steve Ellcey  <sellcey@cavium.com>
+ 
+ 	* doc/invoke.texi (-fopt-info): Explicitly say order of options
+ 	included in -fopt-info does not matter.
+ 	* doc/optinfo.texi (-fopt-info): Fix description of default
+ 	behavour. Explicitly say order of options included in -fopt-info
+ 	does not matter.
+ 
+ 2017-05-05  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	* config.gcc: Allow combinations of aprofile and rmprofile values for
+ 	--with-multilib-list.
+ 	* config/arm/t-multilib: New file.
+ 	* config/arm/t-aprofile: Remove initialization of MULTILIB_*
+ 	variables.  Remove setting of ISA and floating-point ABI in
+ 	MULTILIB_OPTIONS and MULTILIB_DIRNAMES.  Set architecture and FPU in
+ 	MULTI_ARCH_OPTS_A and MULTI_ARCH_DIRS_A rather than MULTILIB_OPTIONS
+ 	and MULTILIB_DIRNAMES respectively.  Add comment to introduce all
+ 	matches.  Add architecture matches for marvel-pj4 and generic-armv7-a
+ 	CPU options.
+ 	* config/arm/t-rmprofile: Likewise except for the matches changes.
+ 	* doc/install.texi (--with-multilib-list): Document the combination of
+ 	aprofile and rmprofile values and warn about pitfalls in doing that.
+ 
+ 2017-05-05  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	* config/aarch64/aarch64.md (movsi_aarch64): Remove '*' from r=w.
+ 	(movdi_aarch64): Likewise.
+ 
+ 2017-05-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/80632
+ 	* tree-switch-conversion.c (struct switch_conv_info): Add target_vop
+ 	field.
+ 	(build_arrays): Initialize it for virtual phis.
+ 	(fix_phi_nodes): Use it for virtual phis.
+ 
+ 	PR tree-optimization/80558
+ 	* tree-vrp.c (extract_range_from_binary_expr_1): Optimize
+ 	[x, y] op z into [x op, y op z] for op & or | if conditions
+ 	are met.
+ 
+ 2017-05-05  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 	    Prakhar Bahuguna  <prakhar.bahuguna@arm.com>
+ 
+ 	PR target/71607
+ 	* config/arm/arm.md (use_literal_pool): Remove.
+ 	(64-bit immediate split): No longer takes cost into consideration
+ 	if arm_disable_literal_pool is enabled.
+ 	* config/arm/arm.c (arm_tls_referenced_p): Add diagnostic if TLS is
+ 	used when arm_disable_literal_pool is enabled.
+ 	(arm_max_const_double_inline_cost): Remove use of
+ 	arm_disable_literal_pool.
+ 	(push_minipool_fix): Add assert.
+ 	(arm_reorg): Add return if arm_disable_literal_pool is enabled.
+ 	* config/arm/vfp.md (no_literal_pool_df_immediate): New.
+ 	(no_literal_pool_sf_immediate): New.
+ 
+ 2017-05-05  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
+ 
+ 	PR tree-optimization/80613
+ 	* tree-ssa-dce.c (propagate_necessity): Remove cases for
+ 	BUILT_IN_STRDUP and BUILT_IN_STRNDUP.
+ 
+ 2017-05-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-pre.c (get_or_alloc_expr_for): Simplify.
+ 
+ 2017-05-05  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	* config/avr/avr.md [flag_strict_overflow]: Remove any occurence
+ 	of this flag from insn conditions due to removal from r247495.
+ 
+ 2017-05-05  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	* config/arm/aarch-common.c (arm_early_load_addr_dep_ptr):
+ 	New function.
+ 	(arm_early_store_addr_dep_ptr): Likewise.
+ 	* config/arm/aarch-common-protos.h
+ 	(arm_early_load_addr_dep_ptr): Add prototype.
+ 	(arm_early_store_addr_dep_ptr): Likewise.
+ 	* config/arm/cortex-a53.md: Add new bypasses.
+ 
+ 2017-05-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* tree.c (next_type_uid): Change type to unsigned.
+ 	(type_hash_canon): Decrement back next_type_uid if
+ 	freeing a type node with the highest TYPE_UID.  For INTEGER_TYPEs
+ 	also ggc_free TYPE_MIN_VALUE, TYPE_MAX_VALUE and TYPE_CACHED_VALUES
+ 	if possible.
+ 
+ 2017-05-04  Martin Sebor  <msebor@redhat.com>
+ 
+ 	* builtins.c: Fix a trivial typo in a comment.
+ 
+ 	PR middle-end/79234
+ 	* builtins.c (check_sizes): Adjust to handle reading past the end.
+ 	Avoid printing excessive upper bound of ranges.  Use %E to print
+ 	tree nodes instead of converting them to %wu.
+ 	(expand_builtin_memchr): New function.
+ 	(compute_dest_size): Rename...
+ 	(compute_objsize): ...to this.
+ 	(expand_builtin_memcpy): Adjust.
+ 	(expand_builtin_mempcpy): Adjust.
+ 	(expand_builtin_strcat): Adjust.
+ 	(expand_builtin_strcpy): Adjust.
+ 	(check_strncat_sizes): Adjust.
+ 	(expand_builtin_strncat): Adjust.
+ 	(expand_builtin_strncpy): Adjust and simplify.
+ 	(expand_builtin_memset): Adjust.
+ 	(expand_builtin_bzero): Adjust.
+ 	(expand_builtin_memcmp): Adjust.
+ 	(expand_builtin): Handle memcmp.
+ 	(maybe_emit_chk_warning): Check strncat just once.
+ 
+ 2017-05-04  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR preprocessor/79214
+ 	PR middle-end/79222
+ 	PR middle-end/79223
+ 	* builtins.c (check_sizes): Add inlining context and issue
+ 	warnings even when -Wno-system-headers is set.
+ 	(check_strncat_sizes): Same.
+ 	(expand_builtin_strncat): Same.
+ 	(expand_builtin_memmove): New function.
+ 	(expand_builtin_stpncpy): Same.
+ 	(expand_builtin): Handle memmove and stpncpy.
+ 
+ 2017-05-04  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-ssa-loop-ivopts.c (struct cost_pair): Remove field inv_expr
+ 	which is not used any more.
+ 
+ 2017-05-04  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (generic_tunings): Update prefetch model.
+ 
+ 2017-05-04  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (cortexa35_tunings): Set jump alignment to 4.
+ 	(cortexa53_tunings): Likewise.
+ 	(cortexa57_tunings): Likewise.
+ 	(cortexa72_tunings): Likewise.
+ 	(cortexa73_tunings): Likewise.
+ 
+ 2017-05-04  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (generic_tunings): Set jump alignment to 4.
+ 	Set loop alignment to 8.
+ 
+ 2017-05-04  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR translation/80280
+ 	* builtins.c (expand_builtin_object_size): Add missing quoting to
+ 	%D and like directives.
+ 	* hsa-gen.c (hsa_type_for_scalar_tree_type): Same.
+ 	(hsa_type_for_tree_type): Same.
+ 	(verify_function_arguments): Same.
+ 	* symtab.c (symbol_table::change_decl_assembler_name): Same.
+ 	* varasm.c (get_section): Same.
+ 	(mark_weak): Same.
+ 
+ 2017-05-04  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR translation/80280
+ 	* config/i386/i386.c (ix86_function_versions): Quote a %D directive.
+ 
+ 2017-05-04  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (generic_addrcost_table):
+ 	Change HI/TI mode setting.
+ 
+ 2017-05-04  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR tree-optimization/80622
+ 	* tree-sra.c (comes_initialized_p): New function.
+ 	(build_accesses_from_assign): Only set write lazily when
+ 	comes_initialized_p is false.
+ 	(analyze_access_subtree): Use comes_initialized_p.
+ 	(propagate_subaccesses_across_link): Assert !comes_initialized_p
+ 	instead of testing for PARM_DECL.
+ 
+ 2017-05-04  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* config/aarch64/aarch64.md (prefetch); Adjust predicate and
+ 	constraint on operand 0 to allow more general addressing modes.
+ 	Adjust output template.
+ 	* config/aarch64/aarch64.c (aarch64_address_valid_for_prefetch_p):
+ 	New function.
+ 	* config/aarch64/aarch64-protos.h
+ 	(aarch64_address_valid_for_prefetch_p): Declare prototype.
+ 	* config/aarch64/constraints.md (Dp): New address constraint.
+ 	* config/aarch64/predicates.md (aarch64_prefetch_operand): New
+ 	predicate.
+ 
+ 2017-05-04  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* ipa-cp.c (perform_estimation_of_a_value): Drop base_time parameter;
+ 	update use of estimate_ipcp_clone_size_and_time.
+ 	(estimate_local_effects): Update use of
+ 	estimate_ipcp_clone_size_and_time and perform_estimation_of_a_value.
+ 	* ipa-inline.h (estimate_ipcp_clone_size_and_time): Update prototype.
+ 	* ipa-inline-analysis.c (estimate_ipcp_clone_size_and_time):
+ 	Return nonspecialized time.
+ 
+ 2017-05-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-alias.c (get_continuation_for_phi): Improve looking
+ 	for the last VUSE which def dominates the PHI.  Directly call
+ 	maybe_skip_until.
+ 	(get_continuation_for_phi_1): Remove.
+ 
+ 2017-05-04  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* tree-ssa-loop-manip.c (niter_for_unrolled_loop): Add commentary
+ 	to explain the use of truncating division.  Cap the number of
+ 	iterations to the maximum given by nb_iterations_upper_bound,
+ 	if defined.
+ 
+ 2017-05-04  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	* configure.ac (--enable-mingw-wildcard): Add new configurable feature.
+ 	* configure: Regenerate.
+ 	* config.in: Regenerate.
+ 	* config/i386/driver-mingw32.c: new file.
+ 	* config/i386/x-mingw32: Add rule to build driver-mingw32.o.
+ 	* config.host: Link driver-mingw32.o on MinGW host.
+ 	* doc/install.texi: Document new --enable-mingw-wildcard configure
+ 	option.
+ 
+ 2017-05-04  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR tree-optimization/80612
+ 	* calls.c (get_size_range): Check for INTEGRAL_TYPE_P.
+ 
+ 2017-05-04  Prakhar Bahuguna  <prakhar.bahuguna@arm.com>
+ 	    Andre Simoes Dias Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	* config/arm/arm.md (movsi): Change TARGET_32BIT to TARGET_HAVE_MOVT.
+ 	(movt splitter): Likewise.
+ 	* config/arm/arm.c (arm_option_check_internal): Change arm_arch_thumb2
+ 	to TARGET_HAVE_MOVT, and merge with -mslow-flash-data check.
+ 	(const_ok_for_arm): Change else to else if (TARGET_THUMB2) and add else
+ 	block for Thumb-1 with MOVT.
+ 	(thumb2_legitimate_address_p): Move code block ...
+ 	(can_avoid_literal_pool_for_label_p): ... into this new function.
+ 	(thumb1_legitimate_address_p): Add check for TARGET_HAVE_MOVT and
+ 	literal pool.
+ 	(thumb_legitimate_constant_p): Add conditional on TARGET_HAVE_MOVT
+ 	* doc/invoke.texi (-mpure-code): Change "ARMv7-M targets" for
+ 	"M-profile targets with the MOVT instruction".
+ 
+ 2017-05-04  Prakhar Bahuguna  <prakhar.bahuguna@arm.com>
+ 
+ 	* config/arm/arm-builtins.c (arm_init_builtins): Rename
+ 	__builtin_arm_ldfscr to __builtin_arm_get_fpscr, and rename
+ 	__builtin_arm_stfscr to __builtin_arm_set_fpscr.
+ 
+ 2017-05-04  Martin Liska  <mliska@suse.cz>
+ 
+ 	* tree-vrp.c (simplify_cond_using_ranges_2): Remove unused
+ 	variable cond_code.
+ 
+ 2017-05-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree.c (array_at_struct_end_p): Handle arrays at struct
+ 	end with flexarrays more conservatively.  Refactor and treat
+ 	arrays of arrays or aggregates more strict.  Fix
+ 	VIEW_CONVERT_EXPR handling.  Remove allow_compref argument.
+ 	* tree.c (array_at_struct_end_p): Adjust prototype.
+ 	* emit-rtl.c (set_mem_attributes_minus_bitpos): Adjust.
+ 	* gimple-fold.c (get_range_strlen): Likewise.
+ 	* tree-chkp.c (chkp_may_narrow_to_field): Likewise.
+ 
+ 2017-05-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/31130
+ 	* tree-vrp.c (needs_overflow_infinity): Remove as always returning
+ 	false.
+ 	(supports_overflow_infinity): Likewise.
+ 	(is_negative_overflow_infinity): Likewise.
+ 	(is_positive_overflow_infinity): Likewise.
+ 	(is_overflow_infinity): Likewise.
+ 	(stmt_overflow_infinity): Likewise.
+ 	(overflow_infinity_range_p): Likewise.
+ 	(usable_range_p): Remove as always returning true.
+ 	(make_overflow_infinity): Remove.
+ 	(negative_overflow_infinity): Likewise.
+ 	(positive_overflow_infinity): Likewise.
+ 	(avoid_overflow_infinity): Likewise.
+ 	(set_value_range): Adjust accordingly.
+ 	(set_value_range_to_nonnegative): Likewise, remove now unused
+ 	overflow_infinity arg.
+ 	(vrp_operand_equal_p): Adjust.
+ 	(update_value_range): Likewise.
+ 	(range_int_cst_singleton_p): Likewise.
+ 	(operand_less_p): Likewise.
+ 	(compare_values_warnv): Likewise.
+ 	(extract_range_for_var_from_comparison_expr): Likewise.
+ 	(vrp_int_const_binop): Likewise.
+ 	(zero_nonzero_bits_from_vr): Likewise.
+ 	(extract_range_from_multiplicative_op_1): Likewise.
+ 	(extract_range_from_binary_expr_1): Likewise.
+ 	(extract_range_from_unary_expr): Likewise.
+ 	(extract_range_from_comparison): Likewise.
+ 	(extract_range_basic): Likewise.
+ 	(adjust_range_with_scev): Likewise.
+ 	(compare_ranges): Likewise.
+ 	(compare_range_with_value): Likewise.
+ 	(dump_value_range): Likewise.
+ 	(test_for_singularity): Likewise, remove strict_overflow_p parameter
+ 	never used.
+ 	(simplify_cond_using_ranges): Adjust.
+ 
+ 2017-05-04  Pekka Jääskeläinen  <pekka.jaaskelainen@parmance.com>
+ 
+ 	* brig-builtins.def: Added a builtin for class_f64.
+ 	* builtin-types.def: Added a builtin type needed by class_f64.
+ 
+ 2017-05-03  Jason Merrill  <jason@redhat.com>
+ 
+ 	* timevar.def: Add TV_CONSTEXPR.
+ 
+ 2017-05-03  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* common.opt (fdiagnostics-parseable-fixits): Fix typo.
+ 
+ 2017-05-03  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* ipa-prop.c (ipa_update_after_lto_read): Removed.
+ 	* ipa-prop.h (ipa_update_after_lto_read): Remove declaration.
+ 	* ipa-cp.c (ipcp_propagate_stage): Do not call
+ 	ipa_update_after_lto_read.
+ 	* ipa-inline.c (ipa_inline): Likewise.
+ 
+ 2017-05-03  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* ipa-prop.h (ipa_edge_args): Make a class.  Mark with for_user GTY
+ 	tag.  Added a default constructor and a destructor.
+ 	(ipa_edge_args_sum_t): New class;
+ 	(ipa_edge_args_sum): Declare.
+ 	(ipa_edge_args_vector): Remove declaration.
+ 	(IPA_EDGE_REF): Use ipa_edge_args_sum.
+ 	(ipa_free_edge_args_substructures): Remove declaration.
+ 	(ipa_check_create_edge_args): Use ipa_edge_args_sum.
+ 	(ipa_edge_args_info_available_for_edge_p): Likewise.
+ 	* ipa-prop.c (ipa_edge_args_vector): Removed.
+ 	(edge_removal_hook_holder): Likewise.
+ 	(edge_duplication_hook_holder): Likewise.
+ 	(ipa_edge_args_sum): New variable.
+ 	(ipa_propagate_indirect_call_infos): Test ipa_edge_args_sum instead of
+ 	ipa_edge_args_vector.
+ 	(ipa_free_edge_args_substructures): Likewise.
+ 	(ipa_free_all_edge_args): Free ipa_edge_args_sum instead of
+ 	ipa_edge_args_vector.
+ 	(ipa_edge_removal_hook): Turned into method
+ 	ipa_edge_args_sum_t::remove.
+ 	(ipa_edge_duplication_hook): Turned into method
+ 	ipa_edge_args_sum_t::duplicate.
+ 	(ipa_register_cgraph_hooks): Create ipa_edge_args_sum instead of
+ 	registering edge hooks.
+ 	(ipa_unregister_cgraph_hooks): Do not unregister edge hooks.
+ 	* ipa-inline-analysis.c (estimate_function_body_sizes): Test
+ 	ipa_edge_args_sum instead of ipa_edge_args_vector.
+ 	* ipa-profile.c (ipa_profile): Likewise.
+ 
+ 2017-05-03  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* symbol-summary.h (function_summary): New method exists.
+ 	(function_summary::symtab_removal): Deallocate through release.
+ 	(call_summary): New class.
+ 	(gt_ggc_mx): New overload.
+ 	(gt_pch_nx): Likewise.
+ 	(gt_pch_nx): Likewise.
+ 
+ 2017-05-03  Jeff Law  <law@redhat.com>
+ 
+ 	PR tree-optimization/78496
+ 	* tree-vrp.c (simplify_cond_using_ranges_1): Renamed
+ 	from simplify_cond_using_ranges.  Split off code to walk
+ 	backwards through casts into ...
+ 	(simplify_cond_using_ranges_2): New function.
+ 	(simplify_stmt_using_ranges): Call simplify_cond_using_ranges_1.
+ 	(execute_vrp): After identifying jump threads, call
+ 	simplify_cond_using_ranges_2.
+ 
+ 2017-05-03  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR bootstrap/80609
+ 	* ipa-inline.h (inline_summary): Add ctor.
+ 	(create_ggc): Do not use ggc_cleared_alloc.
+ 
+ 2017-05-03  Jeff Downs  <heydowns@somuchpressure.net>
+ 	    Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	* gcc.c (handle_braces): Support escaping in switch matching
+ 	text.
+ 	* doc/invoke.texi (Spec Files): Document it.
+ 	Remove superfluous @code markup in items.
+ 
+ 2017-05-03  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* diagnostic-show-locus.c (struct column_range): New struct.
+ 	(get_affected_columns): New function.
+ 	(get_printed_columns): New function.
+ 	(struct correction): New struct.
+ 	(correction::ensure_capacity): New function.
+ 	(correction::ensure_terminated): New function.
+ 	(struct line_corrections): New struct.
+ 	(line_corrections::~line_corrections): New dtor.
+ 	(line_corrections::add_hint): New function.
+ 	(layout::print_trailing_fixits): Reimplement in terms of the new
+ 	classes.
+ 	(selftest::test_overlapped_fixit_printing): New function.
+ 	(selftest::diagnostic_show_locus_c_tests): Call it.
+ 
+ 2017-05-03  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	Canonicalize canonical type hashing
+ 	* tree.h (type_hash_canon_hash): Declare.
+ 	* tree.c (type_hash_list, attribute_hash_list): Move into
+ 	type_hash_canon_hash.
+ 	(build_type_attribute_qual_variant): Break out hash code calc into
+ 	type_hash_canon_hash.
+ 	(type_hash_canon_hash): New.  Generic type hash computation.
+ 	(build_range_type_1, build_array_type_1, build_function_type,
+ 	build_method_type_directly, build_offset_type, build_complex_type,
+ 	make_vector_type): Call it.
+ 
+ 2017-05-03  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
+ 	When all DRs have unknown misaligned do not always peel
+ 	when there is a store but apply the same costing model as if
+ 	there were only loads.
+ 
+ 2017-05-03  Richard Biener  <rguenther@suse.de>
+ 
+ 	Revert
+ 	PR tree-optimization/80492
+ 	* tree-ssa-alias.c (decl_refs_may_alias_p): Handle
+ 	compare_base_decls returning dont-know properly.
+ 
+ 2017-05-03  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	* config/arm/iterators.md (CCSI): New mode iterator.
+ 	(arch): New mode attribute.
+ 	* config/arm/sync.md (atomic_compare_and_swap<mode>_1): Rename into ...
+ 	(atomic_compare_and_swap<CCSI:arch><NARROW:mode>_1): This and ...
+ 	(atomic_compare_and_swap<CCSI:arch><SIDI:mode>_1): This.  Use CCSI
+ 	code iterator for success result mode.
+ 	* config/arm/arm.c (arm_expand_compare_and_swap): Adapt code to use
+ 	the corresponding new insn generators.
+ 
+ 2017-05-03  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	Revert r247509
+ 	2017-05-02  Bin Cheng  <bin.cheng@arm.com>
+ 	* rtlanal.c (rtx_cost): Handle TRUNCATE between tieable modes.
+ 
+ 2017-05-03  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* tree-data-ref.h (SUB_CONFLICTS_IN_A): Wrap SUB argument in brackets.
+ 	(SUB_CONFLICTS_IN_B, SUB_LAST_CONFLICT, SUB_DISTANCE): Likewise.
+ 	(DDR_A): Wrap DDR argument in brackets.
+ 	(DDR_B, DDR_AFFINE_P, DDR_ARE_DEPENDENT, DDR_SUBSCRIPTS): Likewise.
+ 	(DDR_LOOP_NEST, DDR_INNER_LOOP, DDR_SELF_REFERENCE): Likewise.
+ 	(DDR_REVERSED_P): Likewise.
+ 
+ 2017-05-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/79472
+ 	* tree-switch-conversion.c (struct switch_conv_info): Add
+ 	contiguous_range and default_case_nonstandard fields.
+ 	(collect_switch_conv_info): Compute contiguous_range and
+ 	default_case_nonstandard fields, don't clear final_bb if
+ 	contiguous_range and only the default case doesn't have the required
+ 	structure.
+ 	(check_all_empty_except_final): Set default_case_nonstandard instead
+ 	of failing if contiguous_range and the default case doesn't have empty
+ 	block.
+ 	(check_final_bb): Add SWTCH argument, don't fail if contiguous_range
+ 	and only the default case doesn't have the required constants.  Skip
+ 	virtual phis.
+ 	(gather_default_values): Skip virtual phis.  Allow non-NULL CASE_LOW
+ 	if default_case_nonstandard.
+ 	(build_constructors): Build constant 1 just once.  Assert that default
+ 	values aren't inserted in between cases if contiguous_range.  Skip
+ 	virtual phis.
+ 	(build_arrays): Skip virtual phis.
+ 	(prune_bbs): Add DEFAULT_BB argument, don't remove that bb.
+ 	(fix_phi_nodes): Don't add e2f phi arg if default_case_nonstandard.
+ 	Handle virtual phis.
+ 	(gen_inbound_check): Handle default_case_nonstandard case.
+ 	(process_switch): Adjust check_final_bb caller.  Call
+ 	gather_default_values with the first non-default case instead of
+ 	default case if default_case_nonstandard.
+ 
+ 2017-05-02  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* ggc-page.c (move_ptes_to_front): Replace unsigned >0 with i--
+ 	check.  Fix formatting.
+ 
+ 2017-05-02  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* ipa-inline-analysis.c (estimate_node_size_and_time): Allow roundoff
+ 	errors when comparing specialized and unspecialized times.
+ 
+ 2017-05-02  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* diagnostic-show-locus.c
+ 	(layout::should_print_annotation_line_p): Make private.
+ 	(layout::print_annotation_line): Make private.
+ 	(layout::annotation_line_showed_range_p): Make private.
+ 	(layout::show_ruler): Make private.
+ 	(layout::print_source_line): Make private.  Pass in line and
+ 	line_width, rather than calling location_get_source_line.  Drop
+ 	returned value.
+ 	(layout::print_leading_fixits): New method.
+ 	(layout::print_any_fixits): Rename to...
+ 	(layout::print_trailing_fixits): ...this, and make private.
+ 	Don't print newline fixits.
+ 	(diagnostic_show_locus): Move logic for printing one row into...
+ 	(layout::print_line): ...this new function.  Move the
+ 	location_get_source_line call and error-handling from
+ 	print_source_line to here.  Call print_leading_fixits, and rename
+ 	print_any_fixits to print_trailing_fixits.
+ 	(selftest::test_fixit_insert_containing_newline): Update now that
+ 	newlines are partially supported.
+ 	(selftest::test_fixit_insert_containing_newline_2): New test.
+ 	(selftest::test_fixit_replace_containing_newline): Update comments.
+ 	(selftest::diagnostic_show_locus_c_tests): Call the new test.
+ 	* edit-context.c (class added_line): New class.
+ 	(class edited_line): Describe newline handling in comment.
+ 	(edited_line::actually_edited_p): New method.
+ 	(edited_line::print_content): Delete redundant decl.
+ 	(edited_line::m_predecessors): New field.
+ 	(edited_file::print_content): Call edited_line::print_content.
+ 	(edited_file::print_diff): Update to support newlines.
+ 	(edited_file::print_diff_hunk): Likewise.
+ 	(edited_file::print_run_of_changed_lines): New function.
+ 	(edited_file::print_diff_line): Convert to...
+ 	(print_diff_line): ...this.
+ 	(edited_file::get_effective_line_count): New function.
+ 	(edited_line::edited_line): Initialize new field m_predecessors.
+ 	(edited_line::~edited_line): Clean up m_predecessors.
+ 	(edited_line::apply_fixit): Handle newlines.
+ 	(edited_line::get_effective_line_count): New function.
+ 	(edited_line::print_content): New function.
+ 	(edited_line::print_diff_lines): New function.
+ 	(selftest::test_applying_fixits_insert_containing_newline): New
+ 	test.
+ 	(selftest::test_applying_fixits_replace_containing_newline): New
+ 	test.
+ 	(selftest::insert_line): New function.
+ 	(selftest::test_applying_fixits_multiple_lines): Add example of
+ 	inserting a line.
+ 	(selftest::edit_context_c_tests): Call the new tests.
+ 
+ 2017-05-02  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-ssa-loop-ivopts.c (get_scaled_computation_cost_at): Delete
+ 	parameter cand.  Update dump information.
+ 	(get_computation_cost): Update uses.
+ 
+ 2017-05-02  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-ssa-loop-ivopts.c (get_computation_aff_1): New.
+ 	(get_computation_aff): Reorder parameters.  Use get_computation_aff_1.
+ 	(get_computation_at, rewrite_use_address): Update use of
+ 	get_computation_aff.
+ 
+ 2017-05-02  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-ssa-loop-ivopts.c (get_computation_at): Reorder parameters.
+ 	(get_computation): Delete.
+ 	(get_computation_cost): Implement like get_computation_cost_at.
+ 	Use get_computation_at.
+ 	(get_computation_cost_at): Delete.
+ 	(rewrite_use_nonlinear_expr): Use get_computation_at.
+ 	(rewrite_use_compare, remove_unused_ivs): Ditto.
+ 
+ 2017-05-02  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-ssa-loop-ivopts.c (rewrite_use_address): Simple refactor.
+ 
+ 2017-05-02  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-ssa-loop-ivopts.c (struct iv_ca): Rename n_regs to n_invs.
+ 	(ivopts_global_cost_for_size): Rename parameter and update uses.
+ 	(iv_ca_recount_cost): Update uses.
+ 	(iv_ca_set_remove_invs, iv_ca_set_no_cp): Record invariants and
+ 	candidates seperately in n_invs and n_cands.
+ 	(iv_ca_set_add_invs, iv_ca_set_cp, iv_ca_new): Ditto.
+ 
+ 2017-05-02  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-ssa-loop-ivopts.c (struct walk_tree_data): New.
+ 	(find_inv_vars_cb): New.
+ 	(find_depends): Renamed to ...
+ 	(find_inv_vars): ... this.
+ 	(add_candidate_1, force_var_cost): Call find_inv_vars.
+ 	(split_address_cost, determine_group_iv_cost_cond): Ditto.
+ 
+ 2017-05-02  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-ssa-loop-ivopts.c (struct cost_pair): Rename depends_on to
+ 	inv_vars.  Add inv_exprs.
+ 	(struct iv_cand): Rename depends_on to inv_vars.
+ 	(struct ivopts_data): Rename max_inv_id/n_invariant_uses to
+ 	max_inv_var_id/n_inv_var_uses.  Move max_inv_expr_id around.
+ 	Refactor field used_inv_exprs from has_map to array n_inv_expr_uses.
+ 	(dump_cand): Dump inv_vars.
+ 	(tree_ssa_iv_optimize_init): Support inv_vars and inv_exprs.
+ 	(record_invariant, find_depends, add_candidate_1): Ditto.
+ 	(set_group_iv_cost, force_var_cost): Ditto.
+ 	(split_address_cost, ptr_difference_cost, difference_cost): Ditto.
+ 	(get_computation_cost_at, get_computation_cost): Ditto.
+ 	(determine_group_iv_cost_generic): Ditto.
+ 	(determine_group_iv_cost_address): Ditto.
+ 	(determine_group_iv_cost_cond, autoinc_possible_for_pair): Ditto.
+ 	(determine_group_iv_costs): Ditto.
+ 	(iv_ca_recount_cost): Update call to ivopts_global_cost_for_size.
+ 	(iv_ca_set_remove_invariants): Renamed to ...
+ 	(iv_ca_set_remove_invs): ... this.  Support inv_vars and inv_exprs.
+ 	(iv_ca_set_no_cp): Use iv_ca_set_remove_invs.
+ 	(iv_ca_set_add_invariants):  Renamed to ...
+ 	(iv_ca_set_add_invs): ... this.  Support inv_vars and inv_exprs.
+ 	(iv_ca_set_cp): Use iv_ca_set_add_invs.
+ 	(iv_ca_has_deps): Support inv_vars and inv_exprs.
+ 	(iv_ca_new, iv_ca_free, iv_ca_dump, free_loop_data): Ditto.
+ 	(create_new_ivs): Remove useless dump.
+ 
+ 2017-05-02  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-ssa-loop-ivopts.c (get_computation_cost_at): Remove pseudo
+ 	iv_cand code.
+ 	(determine_group_iv_cost_cond, determine_iv_cost): Ditto.
+ 	(iv_ca_set_no_cp, create_new_iv): Ditto.
+ 
+ 2017-05-02  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* rtlanal.c (rtx_cost): Handle TRUNCATE between tieable modes.
+ 
+ 2017-05-02  Xi Ruoyao  <ryxi@stu.xidian.edu.cn>
+ 
+ 	* tree.h (EXPR_CILK_SPAWN): Use macro TREE_CHECK2 instead of
+ 	function tree_check2.
+ 
+ 2017-05-02  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/gcov.texi: Add missing preposition.
+ 	* gcov.c (function_info::function_info): Properly fill up
+ 	all member variables.
+ 
+ 2017-05-02  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* expr.c (expand_expr_real_2): Re-cost if previous costs are the same.
+ 
+ 2017-05-02  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* simplify-rtx.c (simplify_binary_operation_1): Add LSHIFTRT case.
+ 
+ 2017-05-02  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR lto/77954.
+ 	* lto-streamer-in.c (lto_read_tree_1): Remove
+ 	LTO_STREAMER_DEBUG.
+ 	* lto-streamer.c (struct tree_hash_entry): Likewise.
+ 	(struct tree_entry_hasher): Likewise.
+ 	(tree_entry_hasher::hash): Likewise.
+ 	(tree_entry_hasher::equal): Likewise.
+ 	(lto_streamer_init): Likewise.
+ 	(lto_orig_address_map): Likewise.
+ 	(lto_orig_address_get): Likewise.
+ 	(lto_orig_address_remove): Likewise.
+ 	* lto-streamer.h: Likewise.
+ 	* tree-streamer-in.c (streamer_alloc_tree): Likewise.
+ 	* tree-streamer-out.c (streamer_write_tree_header): Likewise.
+ 
+ 2017-05-02  Sebastian Peryt  <sebastian.peryt@intel.com>
+ 
+ 	* config/i386/avx512fintrin.h (_mm_mask_add_round_sd)
+ 	(_mm_maskz_add_round_sd, _mm_mask_add_round_ss)
+ 	(mm_maskz_add_round_ss, _mm_mask_sub_round_sd)
+ 	(mm_maskz_sub_round_sd, _mm_mask_sub_round_ss)
+ 	(mm_maskz_sub_round_ss, _mm_mask_add_sd)
+ 	(mm_maskz_add_sd, _mm_mask_add_ss, _mm_maskz_add_ss)
+ 	(mm_mask_sub_sd, _mm_maskz_sub_sd, _mm_mask_sub_ss)
+ 	(mm_maskz_sub_ss): New intrinsics.
+ 	* config/i386/i386-builtin-types.def (V2DF_FTYPE_V2DF_V2DF_V2DF_UQI_INT)
+ 	(V4SF_FTYPE_V4SF_V4SF_V4SF_UQI_INT): New function type aliases.
+ 	* config/i386/i386-builtin.def (__builtin_ia32_addsd_mask_round)
+ 	(__builtin_ia32_addss_mask_round, __builtin_ia32_subsd_mask_round)
+ 	(__builtin_ia32_subss_mask_round): New builtins.
+ 	* config/i386/i386.c (V2DF_FTYPE_V2DF_V2DF_V2DF_UQI_INT)
+ 	(V4SF_FTYPE_V4SF_V4SF_V4SF_UQI_INT): Handle new types.
+ 	* config/i386/sse.md (<sse>_vm<plusminus_insn><mode>3<round_name>):
+ 	Renamed to ...
+ 	(<sse>_vm<plusminus_insn><mode>3<mask_name><round_name>): ... this.
+ 	(v<plusminus_mnemonic><ssescalarmodesuffix>\t{<round_op3>%2, %1, %0|%0, %1, %<iptr>2<round_op3>}):
+ 	Changed to ...
+ 	(v<plusminus_mnemonic><ssescalarmodesuffix>\t{<round_mask_op3>%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %<iptr>2<round_mask_op3>}):
+ 	... this.
+ 
+ 2017-05-02  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR tree-optimization/78687
+ 	* tree-sra.c (access): New field parent.
+ 	(process_subtree_disqualification): New function.
+ 	(disqualify_candidate): Call it.
+ 	(build_accesses_from_assign): Reset write flag if creating an
+ 	assighnment link.
+ 	(build_access_subtree): Fill in parent field and also prpagate
+ 	down grp_write flag.
+ 	(create_artificial_child_access): New parameter set_grp_write, set
+ 	grp_write to its value.
+ 	(propagate_subaccesses_across_link): Also propagate grp_write flag
+ 	values.
+ 	(propagate_all_subaccesses): Push the closest parent back to work
+ 	queue if add_access_to_work_queue returned true.
+ 
+ 2017-05-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	* common.opt (fstrict-overflow): Alias negative to fwrapv.
+ 	* doc/invoke.texi (fstrict-overflow): Remove all traces of
+ 	-fstrict-overflow documentation.
+ 	* tree.h (TYPE_OVERFLOW_UNDEFINED): Do not test flag_strict_overflow.
+ 	(POINTER_TYPE_OVERFLOW_UNDEFINED): Test !flag_wrapv instead of
+ 	flag_strict_overflow.
+ 	* ipa-inline.c (can_inline_edge_p): Do not test flag_strict_overflow.
+ 	* lto-opts.c (lto_write_options): Do not stream it.
+ 	* lto-wrapper.c (merge_and_complain): Do not handle it.
+ 	* opts.c (default_options_table): Do not set -fstrict-overflow.
+ 	(finish_options): Likewise do not clear it when sanitizing.
+ 	* simplify-rtx.c (simplify_const_relational_operation): Do not
+ 	test flag_strict_overflow.
+ 
+ 2017-05-02  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/alpha/alpha.md (*add<mode>3_ieee): Merge to add<mode>3
+ 	using enabled attribute.
+ 	(*sub<mode>3_ieee): Merge to sub<mode>3 using enabled attribute.
+ 	(*mul<mode>3_ieee): Merge to mul<mode>3 using enabled attribute.
+ 	(*div<mode>3_ieee): Merge to div<mode>3 using enabled attribute.
+ 	(*sqrt<mode>2_ieee): Merge to sqrt<mode>2 using enabled attribute.
+ 	(*fix_truncdfdi_ieee): Merge to *fix_truncdfdi2 using enabled attribute.
+ 	(*fix_truncsfdi_ieee): Merge to *fix_truncsfdi2 using enabled attribute.
+ 	(*floatdisf_ieee): Merge to floatdisf2 using enabled attribute.
+ 	(*floatdidf_ieee): Merge to floatdidf2 using enabled attribute.
+ 	(*truncdfsf2_ieee): Merge to truncdfsf2 using enabled attribute.
+ 	(*cmpdf_ieee): Merge to *cmpdf_internal using enabled attribute.
+ 
+ 2017-05-02  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.c (ix86_code_end): Use {FIRST,LAST}_INT_REG.
+ 
+ 2017-05-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/80591
+ 	Revert
+ 	2017-04-10  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-structalias.c (find_func_aliases): Properly handle
+ 	asm inputs.
+ 
+ 2017-05-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/80549
+ 	* tree-cfgcleanup.c (mfb_keep_latches): New helper.
+ 	(cleanup_tree_cfg_noloop): Create forwarders to known loop
+ 	headers if they do not have a preheader.
+ 
+ 2017-05-02  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR other/80589
+ 	* common.opt: Fix typo.
+ 	* doc/invoke.texi: Likewise.
+ 
+ 2017-05-01  Jan Beulich  <jbeulich@suse.com>
+ 
+ 	* config/i386/sse.md (xop_vpermil2<mode>3): Do not allow operand
+ 	swapping, add (x,x,m,x,n) alternative.
+ 
+ 2017-05-01  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* calls.c (combine_pending_stack_adjustment_and_call): Remove
+ 	unnecessary unadjusted_alignment check.
+ 
+ 2017-05-01  Xi Ruoyao  <ryxi@stu.xidian.edu.cn>
+ 
+ 	PR c++/80038
+ 	* cilk_common.c (expand_builtin_cilk_detach): Move pedigree
+ 	operations here.
+ 	* gimplify.c (gimplify_cilk_detach): New function.
+ 	(gimplify_call_expr, gimplify_modify_expr): Call it as needed.
+ 	* tree-core.h: Document EXPR_CILK_SPAWN.
+ 	* tree.h (EXPR_CILK_SPAWN): Define.
+ 
+ 2017-05-01  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* diagnostic-show-locus.c (layout::get_expanded_location): Rewrite
+ 	to use new fixit_hint representation, using the "replace" logic.
+ 	(get_line_span_for_fixit_hint): Likewise.
+ 	(layout::print_any_fixits): Likewise.
+ 	(selftest::test_one_liner_many_fixits): Rename to...
+ 	(selftest::test_one_liner_many_fixits_1): ...this, and update
+ 	comment and expected output to reflect that the multiple fix-it
+ 	hints are now consolidated into one insertion.
+ 	(selftest::test_one_liner_many_fixits_2): New test.
+ 	(selftest::test_diagnostic_show_locus_one_liner): Update for
+ 	above.
+ 	(selftest::test_fixit_consolidation): Update for fix-it API
+ 	change.
+ 	* diagnostic.c (print_parseable_fixits): Likewise.
+ 	* edit-context.c (edited_line::m_line_events): Convert from
+ 	auto_vec <line_event *> to auto_vec <line_event>.
+ 	(class line_event): Convert from abstract base class to a concrete
+ 	class, taking over the role of replace_event.
+ 	(class insert_event): Delete.
+ 	(class replace_event): Rename to class line_event.  Convert to
+ 	half-open range.
+ 	(edit_context::add_fixits): Reimplement.
+ 	(edit_context::apply_insert): Delete.
+ 	(edit_context::apply_replace): Rename to...
+ 	(edit_context::apply_fixit): ...this.  Convert to half-open range.
+ 	(edited_file::apply_insert): Delete.
+ 	(edited_file::apply_replace): Rename to...
+ 	(edited_file::apply_fixit): ...this.
+ 	(edited_line::~edited_line): Drop deletion of events.
+ 	(edited_line::apply_insert): Delete.
+ 	(edited_line::apply_replace): Rename to...
+ 	(edited_line::apply_fixit): ...this.  Convert to half-open range.
+ 	Update for change to type of m_line_events.
+ 	* edit-context.h (edit_context::apply_insert): Delete.
+ 	(edit_context::apply_replace): Rename to...
+ 	(edit_context::apply_fixit): ...this.
+ 
+ 2017-05-01  Martin Sebor  <msebor@redhat.com>
+ 
+ 	* gimple-ssa-sprintf.c (format_integer): Set knownrange when it's
+ 	known.
+ 
+ 2017-05-01  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/68491
+ 	* config/i386/cpuid.h (__get_cpuid): Always return 0 when
+ 	__get_cpuid_max returns 0.
+ 	(__get_cpuid_count): Ditto.
+ 
+ 2017-05-01  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* tree.c (substitute_in_expr) <tcc_vl_exp>: Also inline a call if the
+ 	replacement expression is another instance of one of its arguments.
+ 
+ 2017-05-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/79430
+ 	* rtlanal.c (reg_set_p): If reg is a stack_pointer_rtx, also
+ 	check for stack push/pop autoinc.
+ 	* config/i386/i386.c (ix86_agi_dependent): Return false
+ 	if the only reason why modified_in_p returned true is that
+ 	addr is SP based and set_insn is a push or pop.
+ 
+ 2017-04-29  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* ipa-inline.c (compute_inlined_call_time): Remove now unnecesary
+ 	overflow check.
+ 
+ 2017-04-29  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR ipa/79224
+ 	* ipa-inline-analysis.c (dump_predicate): Add optional parameter NL.
+ 	(account_size_time): Use two predicates - exec_pred and
+ 	nonconst_pred_ptr.
+ 	(evaluate_conditions_for_known_args): Compute both clause and
+ 	nonspec_clause.
+ 	(evaluate_properties_for_edge): Evaulate both clause and nonspec_clause.
+ 	(inline_summary_t::duplicate): Update.
+ 	(estimate_function_body_sizes): Caluculate exec and nonconst predicates
+ 	separately.
+ 	(compute_inline_parameters): Likewise.
+ 	(estimate_edge_size_and_time): Update caluclation of time.
+ 	(estimate_node_size_and_time): Compute both time and nonspecialized
+ 	time.
+ 	(estimate_ipcp_clone_size_and_time): Update.
+ 	(inline_merge_summary): Update.
+ 	(do_estimate_edge_time): Update.
+ 	(do_estimate_edge_size): Update.
+ 	(do_estimate_edge_hints): Update.
+ 	(inline_read_section, inline_write_summary): Stream both new predicates.
+ 	* ipa-inline.c (compute_uninlined_call_time): Take uninlined_call_time
+ 	as argument.
+ 	(compute_inlined_call_time): Cleanup.
+ 	(big_speedup_p): Update.
+ 	(edge_badness): Update.
+ 	* ipa-inline.h (INLINE_TIME_SCALE): Remove.
+ 	(size_time_entry): Replace predicate by exec_predicate and
+ 	nonconst_predicate.
+ 	(edge_growth_cache_entry): Cache both time nad nonspecialized time.
+ 	(estimate_edge_time): Return also nonspec_time.
+ 	(reset_edge_growth_cache): Update.
+ 
+ 2017-04-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/80491
+ 	* ifcvt.c (noce_process_if_block): When looking for x setter
+ 	with missing else_bb, don't check only the insn right before
+ 	cond_earliest, but look for the last insn that x is modified in
+ 	within the same bb.
+ 
+ 	PR rtl-optimization/80491
+ 	* alias.c (memory_modified_in_insn_p): Return true for CALL_INSNs.
+ 
+ 2017-04-29  Marc Glisse  <marc.glisse@inria.fr>
+ 
+ 	PR tree-optimization/80487
+ 	* tree-ssa-alias.c (stmt_kills_ref_p): Handle stpncpy and strncpy.
+ 
+ 2017-04-29  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
+ 
+ 	PR tree-optimization/79697
+ 	* tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Check if callee
+ 	is BUILT_IN_STRDUP, BUILT_IN_STRNDUP, BUILT_IN_REALLOC.
+ 	(propagate_necessity): Check if def_callee is BUILT_IN_STRDUP or
+ 	BUILT_IN_STRNDUP.
+ 	* gimple-fold.c (gimple_fold_builtin_realloc): New function.
+ 	(gimple_fold_builtin): Call gimple_fold_builtin_realloc.
+ 
+ 2017-04-28  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR tree-optimization/80523
+ 	* gimple-ssa-sprintf.c (target_to_host_charmap): New global variable.
+ 	(init_target_to_host_charmap, target_to_host, target_strtol10): New
+ 	functions.
+ 	(maybe_warn, format_directive, parse_directive): Use new functions.
+ 	(pass_sprintf_length::execute): Call init_target_to_host_charmap.
+ 
+ 2017-04-28  Marc Glisse  <marc.glisse@inria.fr>
+ 
+ 	* match.pd (X+Z OP Y+Z, X-Z OP Y-Z, Z-X OP Z-Y): New transformations.
+ 
+ 2017-04-28  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+ 
+ 	* configure.ac (SYSTEM_HEADER_DIR, BUILD_SYSTEM_HEADER_DIR,
+ 	target_header_dir): Set correctly.
+ 	* configure: Regenerated.
+ 	* Makefile.in (BUILD_SYSTEM_HEADER_DIR): New make variabe.
+ 	(LIMITS_H_TEST, if_multiarch, stmp-fixinc): Use BUILD_SYSTEM_HEADER_DIR
+ 	instead of SYSTEM_HEADER_DIR.
+ 
+ 2017-04-28  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* ipa-cp.c (perform_estimation_of_a_value): Turn time to sreal.
+ 	(estimate_local_effects): Likewise.
+ 	* ipa-inline.c (compute_inlined_call_time, want_inline_small_function_p,
+ 	edge_badness, inline_small_functions, dump_overall_stats): LIkewise.
+ 	* ipa-inline.h (edge_growth_cache_entry, estimate_time_after_inlining,
+ 	estimate_ipcp_clone_size_and_time, do_estimate_edge_time,
+ 	do_estimate_edge_time, estimate_edge_time): Likewise.
+ 	* ipa-inline-analysis.c (estimate_node_size_and_time,
+ 	estimate_ipcp_clone_size_and_time, do_estimate_edge_time): Likewise.
+ 	(estimate_time_after_inlining): Remove.
+ 
+ 2017-04-28  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/gcov.texi: Enhance documentation of gcov.
+ 
+ 2017-04-28  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/gcov.texi: Sort options in alphabetic order.
+ 	* doc/gcov-dump.texi: Likewise.
+ 	* doc/gcov-tool.texi: Likewise.
+ 	* gcov.c (print_usage): Likewise.
+ 	* gcov-dump.c (print_usage): Likewise.
+ 	* gcov-tool.c (print_merge_usage_message): Likewise.
+ 	(print_rewrite_usage_message): Likewise.
+ 	(print_overlap_usage_message): Likewise.
+ 
+ 2017-04-28  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR gcov-profile/53915
+ 	* gcov.c (format_gcov): Print 'NAN %' when top > bottom.
+ 
+ 2017-04-28  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR gcov-profile/79891
+ 	* gcov.c (add_line_counts): Assign BBs to lines just if the BB
+ 	is marked by compiler as living on a line.
+ 	(get_cycles_count): Remove usage of the union.
+ 	(output_intermediate_file): Likewise.
+ 	(find_source): Fix GNU coding style.
+ 	(accumulate_line_counts): Remove old non-all block mode.
+ 	(output_lines): Remove usage of the union.
+ 	* profile.c (output_location): Include all BBs, even if
+ 	belonging to a same line (and file) as a previous BB.
+ 
+ 2017-04-28  Martin Liska  <mliska@suse.cz>
+ 
+ 	* gcov.c (process_args): Handle new argument 'w'.
+ 	(read_graph_file): Assign ID to BBs.
+ 	(output_branch_count): Display BB # if verbose flag is set.
+ 	(output_lines): Likewise for arcs.
+ 	(print_usage): Add '--verbose' option help.
+ 	* doc/gcov.texi: Document --verbose (-w) option.
+ 
+ 2017-04-28  Martin Liska  <mliska@suse.cz>
+ 
+ 	* gcov.c (struct block_location_info): New struct.
+ 	(process_file): Fill up the new structure.
+ 	(read_graph_file): Replace usage of encoding by the newly added
+ 	struct.
+ 	(add_line_counts): Likewise.
+ 	(accumulate_line_counts): Remove usage of the union.
+ 	(function_info::function_info): New function.
+ 	(function_info::~function_info): Likewise.
+ 	(process_file): Call delete instead of release_function.
+ 	(release_function): Release the function.
+ 	(release_structures): Call delete instead of release_function.
+ 	(solve_flow_graph): Replace usage of num_blocks.
+ 	(find_exception_blocks): Likewise.
+ 	(output_lines): Fix GNU coding style.
+ 
+ 2017-04-28  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR driver/56469
+ 	* coverage.c (coverage_remove_note_file): New function.
+ 	* coverage.h: Declare the function.
+ 	* toplev.c (finalize): Clean if an error has been seen.
+ 
+ 2017-04-28  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR gcov-profile/80031
+ 	* gcov-dump.c (tag_blocks): Just print number of basic blocks.
+ 	* gcov-io.h (GCOV_TAG_BLOCKS_NUM): Remove unused macro.
+ 	* gcov.c (read_graph_file): Read just number of blocks.
+ 	* profile.c (branch_prob): Do not stream 0 flags per a basic
+ 	block.
+ 
+ 2017-04-28  Martin Liska  <mliska@suse.cz>
+ 
+ 	* gcov-dump.c (tag_*): Add new argument to declarations.
+ 	(dump_gcov_file): Likewise.
+ 	(tag_blocks): Add and use new argument depth.
+ 	(tag_arcs): Likewise.
+ 	(tag_lines): Likewise.
+ 	(tag_counters): Likewise.
+ 	(tag_summary): Likewise.
+ 	(dump_working_sets): Use depth to do a proper indentation.
+ 
+ 2017-04-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR bootstrap/80531
+ 	* cgraph.h (symtab_node::debug_symtab): No longer inline.
+ 	* symtab.c (symtab_node::debug_symtab): Move definition here.
+ 
+ 2017-04-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	* lto-streamer.h (LTO_major_version): Bump to 7.
+ 
+ 2017-04-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vrp.c (assert_info): New struct.
+ 	(add_assert_info): New helper.
+ 	(register_edge_assert_for_2): Refactor to add asserts to a vector
+ 	of assert_info.
+ 	(register_edge_assert_for_1): Likewise.
+ 	(register_edge_assert_for): Likewise.
+ 	(finish_register_edge_assert_for): New helper actually registering
+ 	asserts where live on edge.
+ 	(find_conditional_asserts): Adjust.
+ 	(find_switch_asserts): Likewise.
+ 	(evrp_dom_walker::try_find_new_range): Generalize.
+ 	(evrp_dom_walker::before_dom_children): Use register_edge_assert_for.
+ 
+ 2017-04-27  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR sanitizer/80349
+ 	* fold-const.c (fold_binary_loc) <case EQ_EXPR, NE_EXPR>: Convert
+ 	arg10 and arg11 to itype.
+ 
+ 2017-04-27  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* doc/extend.texi (Object Size Checking): Improve grammar.
+ 
+ 2017-04-27  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR target/80530
+ 	* config/aarch64/aarch64.c (aarch64_emit_approx_sqrt): Ensure
+ 	that the logic for permitting reciprocal estimates matches that
+ 	in use_rsqrt_p.
+ 
+ 2017-04-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/80534
+ 	* tree.c (type_cache_hasher::equal): Only compare
+ 	TYPE_TYPELESS_STORAGE flag on non-aggregate element types.
+ 	(build_array_type_1): Only hash TYPE_TYPELESS_STORAGE flag on
+ 	non-aggregate element types.
+ 	* tree.h (TYPE_TYPELESS_STORAGE): Fix comment typo, add more details
+ 	about the flag on ARRAY_TYPEs in the comment, formatting fix.
+ 
+ 2017-04-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/80533
+ 	* emit-rtl.c (set_mem_attributes_minus_bitpos): When
+ 	stripping ARRAY_REFs from MEM_EXPR make sure we're not
+ 	keeping a reference to a trailing array.
+ 
+ 2017-04-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/80539
+ 	* tree-chrec.c (chrec_fold_plus_poly_poly): Deal with not
+ 	being in loop-closed SSA form conservatively.
+ 	(chrec_fold_multiply_poly_poly): Likewise.
+ 
+ 2017-04-27  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR middle-end/79665
+ 	* expr.c (expand_expr_real_2): Move TRUNC_MOD_EXPR, FLOOR_MOD_EXPR,
+ 	CEIL_MOD_EXPR, ROUND_MOD_EXPR cases.
+ 
+ 2017-04-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/77728
+ 	* config/aarch64/aarch64.c (struct aarch64_fn_arg_alignment): Remove.
+ 	(aarch64_function_arg_alignment): Return unsigned int again, but still
+ 	ignore TYPE_FIELDS chain decls other than FIELD_DECLs.
+ 	(aarch64_layout_arg): Adjust aarch64_function_arg_alignment caller.
+ 	Don't emit -Wpsabi note.
+ 	(aarch64_function_arg_boundary): Likewise.
+ 	(aarch64_gimplify_va_arg_expr): Adjust aarch64_function_arg_alignment
+ 	caller.
+ 
+ 2017-04-26  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* tree.h (crc32_unsigned_n): Declare.
+ 	(crc32_unsigned, crc32_unsigned): Make inline.
+ 	* tree.c (crc32_unsigned_bits): Replace with ...
+ 	(crc32_unsigned_n): ... this.
+ 	(crc32_unsigned, crc32_byte): Remove.
+ 	(crc32_string): Remove unnecessary braces.
+ 
+ 2017-04-25  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* ipa-cp.c (estimate_local_effects): Convert sreal to int.
+ 	* ipa-inline-analysis.c (MAX_TIME): Remove.
+ 	(account_size_time): Use sreal for time.
+ 	(dump_inline_summary): Update.
+ 	(estimate_function_body_sizes): Update.
+ 	(estimate_edge_size_and_time): Update.
+ 	(estimate_calls_size_and_time): Update.
+ 	(estimate_node_size_and_time): Update.
+ 	(inline_merge_summary): Update.
+ 	(inline_update_overall_summary): Update.
+ 	(estimate_time_after_inlining): Update.
+ 	(inline_read_section): Update.
+ 	(inline_write_summary): Update.
+ 	* ipa-inline.c (compute_uninlined_call_time): Update.
+ 	(compute_inlined_call_time): Update.
+ 	(recursive_inlining): Update.
+ 	(inline_small_functions): Update.
+ 	(dump_overall_stats): Update.
+ 	* ipa-inline.h: Include sreal.h.
+ 	(size_time_entry): Turn time to sreal.
+ 	(inline_summary): Turn self_time nad time to sreal.
+ 
+ 2017-04-25  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* sreal.c: Include backend.h, tree.h, gimple.h, cgraph.h and
+ 	data-streamer.h
+ 	(sreal::stream_out, sreal::stream_in): New.
+ 	* sreal.h (sreal::stream_out, sreal::stream_in): Declare.
+ 
+ 2017-04-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* Makefile.in (s-options): Invoke opt-gather.awk with LC_ALL=C in the
+ 	environment.
+ 
+ 2017-04-25  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/70799
+ 	* config/i386/i386.c (dimode_scalar_to_vector_candidate_p):
+ 	Handle ASHIFTRT.
+ 	(dimode_scalar_chain::compute_convert_gain): Ditto.
+ 	(dimode_scalar_chain::make_vector_copies): Ditto.
+ 	(dimode_scalar_chain::convert_reg): Ditto.
+ 	(dimode_scalar_chain::convert_insn): Ditto.
+ 	* config/i386/sse.md (VI24_AVX512BW_1): Remove mode iterator.
+ 	(VI248_AVX512BW_1): New mode iterator.
+ 	(<mask_codefor>ashr<mode>3<mask_name>): Merge insn pattern with
+ 	<mask_codefor>ashrv2di3<mask_name> insn using VI248_AVX512BW_1
+ 	mode iterator.
+ 
+ 2017-04-25  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR tree-optimization/80497
+ 	* gimple-ssa-sprintf.c (get_int_range): Avoid assuming all integer
+ 	constants are representable in HOST_WIDE_INT.
+ 	(parse_directive): Ditto.
+ 
+ 2017-04-25  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR bootstrap/80486
+ 	* dominance.c (dom_info::m_n_basic_blocks): Change type to unsigned.
+ 	(new_zero_array): Adjust signature.
+ 	(dom_info::dom_init): Used unsigned rather that size_t.
+ 	(dom_info::dom_info): Same.
+ 
+ 2017-04-25  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
+ 	    Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/77728
+ 	* config/arm/arm.c: Include gimple.h.
+ 	(aapcs_layout_arg): Emit -Wpsabi note if arm_needs_doubleword_align
+ 	returns negative, increment ncrn only if it returned positive.
+ 	(arm_needs_doubleword_align): Return int instead of bool,
+ 	ignore DECL_ALIGN of non-FIELD_DECL TYPE_FIELDS chain
+ 	members, but if there is any such non-FIELD_DECL
+ 	> PARM_BOUNDARY aligned decl, return -1 instead of false.
+ 	(arm_function_arg): Emit -Wpsabi note if arm_needs_doubleword_align
+ 	returns negative, increment nregs only if it returned positive.
+ 	(arm_setup_incoming_varargs): Likewise.
+ 	(arm_function_arg_boundary): Emit -Wpsabi note if
+ 	arm_needs_doubleword_align returns negative, return
+ 	DOUBLEWORD_ALIGNMENT only if it returned positive.
+ 
+ 2017-04-25  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR sanitizer/80349
+ 	* fold-const.c (fold_binary_loc) <case BIT_IOR_EXPR>: Convert arg0's
+ 	first argument to type.
+ 
+ 2017-04-25  Bill Seurer  <seurer@linux.vnet.ibm.com>
+ 
+ 	PR target/80482
+ 	* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Change
+ 	type checks to test for compatibility instead of equality.
+ 
+ 2017-04-25  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
+ 	    Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/77728
+ 	* config/aarch64/aarch64.c (struct aarch64_fn_arg_alignment): New
+ 	type.
+ 	(aarch64_function_arg_alignment): Return aarch64_fn_arg_alignment
+ 	struct.  Ignore DECL_ALIGN of decls other than FIELD_DECL for
+ 	the alignment computation, but return their maximum in warn_alignment.
+ 	(aarch64_layout_arg): Adjust aarch64_function_arg_alignment caller.
+ 	Emit a -Wpsabi note if warn_alignment is 16 bytes, but alignment
+ 	is smaller.
+ 	(aarch64_function_arg_boundary): Likewise.  Simplify using MIN/MAX.
+ 	(aarch64_gimplify_va_arg_expr): Adjust aarch64_function_arg_alignment
+ 	caller.
+ 
+ 2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/simdext.md (dmpyh): Fix typo.
+ 
+ 2017-04-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/80492
+ 	* alias.c (compare_base_decls): Handle registers with asm
+ 	specification conservatively.
+ 	* tree-ssa-alias.c (decl_refs_may_alias_p): Handle
+ 	compare_base_decls returning dont-know properly.
+ 
+ 2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.c (LEGITIMATE_OFFSET_ADDRESS_P): Delete macro.
+ 	(legitimate_offset_address_p): New function.
+ 	(arc_legitimate_address_p): Use above function.
+ 
+ 2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.c (arc_output_mi_thunk): Emit PIC calls.
+ 
+ 2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.c (arc_conditional_register_usage): Use ACCL,
+ 	ACCH registers whenever they are available.
+ 
+ 2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.c (arc_conditional_register_usage): Make D0, D1
+ 	double regs fix when not used.
+ 
+ 2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.h (REGNO_OK_FOR_BASE_P): Consider also extension
+ 	core registers.
+ 	(REG_OK_FOR_INDEX_P_NONSTRICT): Likewise.
+ 	(REG_OK_FOR_BASE_P_NONSTRICT): Likewise.
+ 
+ 2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.c (arc_output_addsi): Check for h-register class
+ 	when emitting short ADD instructions.
+ 
+ 2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.md (cmpsi_cc_insn_mixed): Use 'h' register
+ 	constraint.
+ 	(cmpsi_cc_c_insn): Likewise.
+ 	(cbranchsi4_scratch): Compute proper instruction length using
+ 	compact_hreg_operand.
+ 	* config/arc/predicates.md (compact_hreg_operand): New predicate.
+ 
+ 2017-04-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/80509
+ 	* passes.c (pass_manager::pass_manager): Initialize
+ 	m_name_to_pass_map.
+ 
+ 2017-04-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/79201
+ 	* tree-ssa-sink.c (statement_sink_location): Handle calls.
+ 
+ 2017-04-25  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	PR target/80464
+ 	* config/s390/vector.md: Split MEM->GPR vector moves for
+ 	non-s_operand addresses.
+ 
+ 2017-04-25  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	PR target/79895
+ 	* config/s390/predicates.md (reload_const_wide_int_operand): New
+ 	predicate.
+ 	* config/s390/s390.md ("movti"): Remove d/P alternative.
+ 	("movti_bigconst"): New pattern definition.
+ 
+ 2017-04-25  Dominik Vogt  <vogt@linux.vnet.ibm.com>
+ 
+ 	PR target/80080
+ 	* s390-protos.h (s390_expand_cs_hqi): Removed.
+ 	(s390_expand_cs, s390_expand_atomic_exchange_tdsi): New prototypes.
+ 	* config/s390/s390.c (s390_emit_compare_and_swap): Handle all integer
+ 	modes as well as CCZ1mode and CCZmode.
+ 	(s390_expand_atomic_exchange_tdsi, s390_expand_atomic): Adapt to new
+ 	signature of s390_emit_compare_and_swap.
+ 	(s390_expand_cs_hqi): Likewise, make static.
+ 	(s390_expand_cs_tdsi): Generate an explicit compare before trying
+ 	compare-and-swap, in some cases.
+ 	(s390_expand_cs): Wrapper function.
+ 	(s390_expand_atomic_exchange_tdsi): New backend specific expander for
+ 	atomic_exchange.
+ 	(s390_match_ccmode_set): Allow CCZmode <-> CCZ1 mode.
+ 	* config/s390/s390.md ("atomic_compare_and_swap<mode>"): Merge the
+ 	patterns for small and large integers.  Forbid symref memory operands.
+ 	Move expander to s390.c.  Require cc register.
+ 	("atomic_compare_and_swap<DGPR:mode><CCZZ1:mode>_internal")
+ 	("*atomic_compare_and_swap<TDI:mode><CCZZ1:mode>_1")
+ 	("*atomic_compare_and_swapdi<CCZZ1:mode>_2")
+ 	("*atomic_compare_and_swapsi<CCZZ1:mode>_3"): Use s_operand to forbid
+ 	symref memory operands.  Remove CC mode and call s390_match_ccmode
+ 	instead.
+ 	("atomic_exchange<mode>"): Allow and implement all integer modes.
+ 
+ 2017-04-25  Dominik Vogt  <vogt@linux.vnet.ibm.com>
+ 
+ 	* config/s390/s390.md (define_peephole2): New peephole to help
+ 	combining the load-and-test pattern with volatile memory.
+ 
+ 2017-04-25  Dominik Vogt  <vogt@linux.vnet.ibm.com>
+ 
+ 	* config/s390/s390.md ("cstorecc4"): Use load-on-condition and deal
+ 	with CCZmode for TARGET_Z196.
+ 
+ 2017-04-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/80501
+ 	* combine.c (make_compound_operation_int): Set subreg_code to SET
+ 	even for AND with mask of the sign bit of mode.
+ 
+ 	PR rtl-optimization/80500
+ 	* loop-unroll.c (combine_var_copies_in_loop_exit): Call copy_rtx on
+ 	sum's initial value.
+ 
+ 2017-04-25  Julian Brown  <julian@codesourcery.com>
+ 	    Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
+ 
+ 	* config/aarch64/thunderx2t99.md (thunderx2t99_crc): New Reservation.
+ 
+ 2017-04-25  Marc Glisse  <marc.glisse@inria.fr>
+ 
+ 	* fold-const.c (tree_single_nonzero_warnv_p): Handle SSA_NAME.
+ 
+ 2017-04-25  Julian Brown  <julian@codesourcery.com>
+ 	    Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
+ 
+ 	* config/aarch64/thunderx2t99.md (thunderx2t99_aes): New Reservation.
+ 	(thunderx2t99_sha): New Reservation.
+ 
+ 2017-04-25  Julian Brown  <julian@codesourcery.com>
+ 	    Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
+ 
+ 	* config/aarch64/aarch64-simd.md (aarch64_simd_vec_set<mode>): Fix
+ 	type for 1-element load.
+ 
+ 2017-04-24  Marc Glisse  <marc.glisse@inria.fr>
+ 
+ 	* match.pd (X/[ex]C CMP Y/[ex]C): New transformation.
+ 
+ 2017-04-24  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR tree-optimization/80293
+ 	* tree-sra.c (scalarizable_type_p): New parameter const_decl, make
+ 	char arrays not totally scalarizable if it is false.
+ 	(analyze_all_variable_accesses): Pass correct value in the new
+ 	parameter.  Add a statistics counter.
+ 
+ 2017-04-24  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR middle-end/79931
+ 	* ipa-devirt.c (dump_possible_polymorphic_call_targets): Fix ICE.
+ 
+ 2017-04-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/80494
+ 	* tree-scalar-evolution.c (analyze_scalar_evolution_1): Bail
+ 	out for complex types.
+ 
+ 2017-04-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-sccvn.h (run_scc_vn): Adjust prototype.
+ 	* tree-ssa-sccvn.c (print_scc): Print SCC size.
+ 	(extract_and_process_scc_for_name): Never fail but drop SCC to varying.
+ 	(DFS): Adjust and never fail.
+ 	(sccvn_dom_walker::fail): Remove.
+ 	(sccvn_dom_walker::before_dom_children): Adjust.
+ 	(run_scc_vn): Likewise and never fail.
+ 	* tree-ssa-pre.c (pass_pre::execute): Adjust.
+ 	(pass_fre::execute): Likewise.
+ 
+ 2017-04-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/79725
+ 	* tree-ssa-sink.c (statement_sink_location): Return whether
+ 	failure reason was zero uses.  Move that check later.
+ 	(sink_code_in_bb): Deal with zero uses by removing the stmt
+ 	if possible.
+ 
+ 2017-04-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR c++/2972
+ 	* tree-ssa-uninit.c (warn_uninitialized_vars): Handle some
+ 	pointer-based references.
+ 
+ 2017-04-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR bootstrap/79814
+ 	* pass_manager.h (pass_manager::operator new): Remove.
+ 	(pass_manager::operator delete): Likewise.
+ 	* passes.c (pass_manager::operator new): Remove.
+ 	(pass_manager::operator delete): Likewise.
+ 	(pass_manager::pass_manager): Zero individual pass members.
+ 
+ 2017-04-23  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/70799
+ 	* config/i386/i386.c (dimode_scalar_to_vector_candidate_p)
+ 	<case ASHIFT, case LSHIFTRT>: Also consider variable shifts.
+ 	Check "XEXP (src, 1)" operand here.
+ 	<case PLUS, case MINUS, case IOR, case XOR, case AND>:
+ 	Check "XEXP (src, 1)" operand here.
+ 	(dimode_scalar_chain::make_vector_copies): Detect count register
+ 	of a shift instruction.  Zero extend count register from QImode
+ 	to DImode to satisfy vector shift pattern count operand predicate.
+ 	Substitute vector shift count operand with a DImode copy.
+ 	(dimode_scalar_chain::convert_reg): Ditto, zero-extend from
+ 	vector register.
+ 
+ 2017-04-21  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.md (*extzvqi_mem_rex64): Move above *extzv<mode>.
+ 	Remove UNSPEC_NOREX_MEM tag.  Update corresponding peephole2 pattern.
+ 	(*insvqi_1_mem_rex64): Move above insv<mode>_1.  Remove
+ 	UNSPEC_NOREX_MEM tag.  Update corresponding peephole2 pattern.
+ 	(UNSPEC_NOREX_MEM): Remove definition.
+ 
+ 2017-04-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/79547
+ 	* tree-ssa-structalias.c (find_func_aliases_for_builtin_call):
+ 	Handle strlen, strcmp, strncmp, strcasecmp, strncasecmp, memcmp,
+ 	bcmp, strspn, strcspn, __builtin_object_size and __builtin_constant_p
+ 	without any constraints.
+ 
+ 2017-04-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/78847
+ 	* fold-const.c (split_tree): Handle POINTER_PLUS_EXPR.
+ 
+ 2017-04-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree.h (build_qualified_type): Annotate with CXX_MEM_STAT_INFO.
+ 	(build_distinct_type_copy): Likewise.
+ 	(build_variant_type_copy): Likewise.
+ 	* tree.c (build_qualified_type): Pass down mem-stat info.
+ 	(build_distinct_type_copy): Likewise.
+ 	(build_variant_type_copy): Likewise.
+ 
+ 2017-04-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/80237
+ 	* tree-ssa-pre.c (find_leader_in_sets): Add third set argument,
+ 	defaulted to NULL.
+ 	(phi_translate_1): Also allow a leader in AVAIL_OUT of pred
+ 	for a simplified result.
+ 
+ 2016-04-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-loop-ivcanon.c (constant_after_peeling): Do not require
+ 	sth as strict as a simple_iv but a chrec without symbols and an
+ 	operand defined in the loop we are peeling (and not some subloop).
+ 	(propagate_constants_for_unrolling): Propagate all constants.
+ 
+ 2017-04-20  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/79804
+ 	* config/i386/i386.c (print_reg): Remove assert for disalowed
+ 	regno values, call output_operand_lossage instead.
+ 
+ 2017-04-20  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/78090
+ 	* config/i386/constraints.md (Yc): New register constraint.
+ 	* config/i386/i386.md (*float<SWI48:mode><MODEF:mode>2_mixed):
+ 	Use Yc constraint for alternative 2 of operand 0.  Remove
+ 	preferred_for_speed attribute.
+ 
+ 2017-04-20  Alexander Monakov  <amonakov@ispras.ru>
+ 
+ 	* omp-low.c (lower_lastprivate_clauses): Correct handling of linear and
+ 	lastprivate clauses in SIMT case.
+ 
+ 2017-04-20  Volker Reichelt  <v.reichelt@netcologne.de>
+ 
+ 	* doc/invoke.texi (-Wextra-semi): Document new warning option.
+ 
+ 2017-04-20  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/57796
+ 	* tree-vect-stmts.c (vect_model_store_cost): Cost scatters
+ 	as N scalar stores.
+ 	(vect_model_load_cost): Cost gathers as N scalar loads.
+ 
+ 2017-04-20  Richard Biener  <rguenther@suse.de>
+ 
+ 	* ggc-page.c (ggc_allocated_p): Rename to ...
+ 	(safe_lookup_page_table_entry): ... this and return the lookup
+ 	result.
+ 	(gt_ggc_m_S): Use safe_lookup_page_table_entry.
+ 
+ 2017-04-20  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/80453
+ 	* tree-ssa-sccvn.h (struct vn_phi_s): Add cclhs and ccrhs members.
+ 	* tree-ssa-sccvn.c (cond_stmts_equal_p): Use recorded lhs and rhs
+ 	from the conditions.
+ 	(vn_phi_eq): Pass them down.
+ 	(vn_phi_lookup): Record them.
+ 	(vn_phi_insert): Likewise.
+ 
+ 2017-04-20  Matthew Fortune  <matthew.fortune@imgtec.com>
+ 
+ 	* config/mips/mips.c (mips_expand_vec_perm_const): Re-fix
+ 	uninitialized variable warning to avoid buffer overrun.
+ 
+ 2017-04-20  Alexander Monakov  <amonakov@ispras.ru>
+ 
+ 	PR other/71250
+ 	* doc/invoke.texi (-Wmissing-field-initializers): Mention that warning
+ 	is suppressed for '{ 0 }' in C.
+ 
+ 2017-04-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* BASE-VER: Set to 8.0.0.
+ 
+ 2017-04-20  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	* config/arm/arm.c (arm_elf_asm_cdtor): Create non-default
+ 	priority .init_array and .fini_array section with SECTION_NOTYPE
+ 	flag.
+ 
+ 2017-04-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/80423
+ 	* tree.h (build_array_type): Add typeless_storage default argument.
+ 	* tree.c (type_cache_hasher::equal): Also compare
+ 	TYPE_TYPELESS_STORAGE flag for ARRAY_TYPEs.
+ 	(build_array_type): Add typeless_storage argument, set
+ 	TYPE_TYPELESS_STORAGE to it, if shared also hash it, and pass to
+ 	recursive call.
+ 	(build_nonshared_array_type): Adjust build_array_type_1 caller.
+ 	(build_array_type): Likewise.  Add typeless_storage argument.
+ 
+ 2017-04-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 	    Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/80426
+ 	* tree-vrp.c (extract_range_from_binary_expr_1): For an additive
+ 	operation on symbolic operands, also compute the overflow for the
+ 	invariant part when the operation degenerates into a negation.
+ 
+ 2017-04-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/80461
+ 	* dwarf2out.c (modified_type_die, gen_type_die_with_usage):
+ 	Check for t with zero TYPE_QUALS_NO_ADDR_SPACE.
+ 
+ 	PR debug/80436
+ 	* tree-ssa-loop-manip.c (find_uses_to_rename_def): Ignore debug uses.
+ 
+ 2017-04-19  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR target/80462
+ 	* config/avr/avr.c (tree.h): Include it.
+ 	(cgraph.h): Include it.
+ 	(avr_encode_section_info): Don't warn for uninitialized progmem
+ 	variable if it's just an alias.
+ 
+ 2017-04-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR ipa/65972
+ 	* auto-profile.c (afdo_vpt_for_early_inline): Update SSA
+ 	when needed by AutoPGO.
+ 
+ 2017-04-19  Paulo J. Matos  <paulo@matos-sorge.com>
+ 
+ 	PR lto/50345
+ 	* doc/lto.texi: Remove an extra 'that'.
+ 
+ 2017-04-19  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR rtl-optimization/80429
+ 	* ira.c (split_live_ranges_for_shrink_wrap): Don't split regs that
+ 	are only used in debug insns.
+ 
+ 2017-04-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 	    Vladimir Makarov  <vmakarov@redhat.com>
+ 
+ 	* config/sparc/predicates.md (input_operand): Add comment.  Return
+ 	true for any memory operand when LRA is in progress.
+ 	* config/sparc/sparc.c (sparc_expand_move): Minor formatting fix.
+ 
+ 2017-04-18  Jeff Law  <law@redhat.com>
+ 
+ 	PR target/74563
+ 	* mips.md ({return,simple_return}_internal): Do not overwrite
+ 	operands[0].
+ 
+ 2017-04-18  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/80443
+ 	* tree-vrp.c (intersect_ranges): For signed 1-bit precision type,
+ 	instead of adding 1, subtract -1 and similarly instead of subtracting
+ 	1 add -1.
+ 
+ 2017-04-18  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR rtl-optimization/80357
+ 	* haifa-sched.c (tmp_bitmap): New variable.
+ 	(model_recompute): Handle duplicate use records.
+ 	(alloc_global_sched_pressure_data): Initialize tmp_bitmap.
+ 	(free_global_sched_pressure_data): Free it.
+ 
+ 2017-04-18  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+ 
+ 	Revert:
+ 	2017-02-20  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+ 	* Makefile.in (BUILD_SYSTEM_HEADER_DIR): New make variabe.
+ 	(LIMITS_H_TEST, if_multiarch, stmp-fixinc): Use BUILD_SYSTEM_HEADER_DIR
+ 	instead of SYSTEM_HEADER_DIR.
+ 
+ 2017-04-18  Jeff Law  <law@redhat.com>
+ 
+ 	PR middle-end/80422
+ 	* cfgcleanup.c (try_crossjump_to_edge): Verify SRC1 and SRC2 have
+ 	predecessors after walking up the insn chain.
+ 
+ 2017-04-18  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/80263
+ 	* dwarf2out.c (modified_type_die): Try harder not to emit internal
+ 	sizetype type into debug info.
+ 
+ 2017-04-18  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	PR target/80099
+ 	* config/rs6000/rs6000.c (rs6000_expand_vector_extract): Eliminate
+ 	unneeded test for TARGET_UPPER_REGS_SF.
+ 	* config/rs6000/vsx.md (vsx_extract_v4sf_var): Likewise.
+ 
+ 2017-04-18  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/80444
+ 	* sancov.c (sancov_pass): Use gsi_start_nondebug_after_labels_bb
+ 	instead of gsi_after_labels.
+ 
+ 2017-04-18  Jeff Law  <law@redhat.com>
+ 
+ 	* regcprop.c (maybe_mode_change): Avoid creating copies of the
+ 	stack pointer.
+ 
+ 	Revert:
+ 	2017-04-13  Jeff Law  <law@redhat.com>
+ 	* config/mips.mips.md (zero_extendsidi2): Do not allow SP to appear
+ 	in operands[1] if it is a MEM and TARGET_MIPS16 is active.
+ 
+ 2017-04-18  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR target/79453
+ 	* config/avr/avr.c (intl.h): Include it.
+ 	(avr_pgm_check_var_decl) [reason]: Wrap	diagnostic snippets into _().
+ 
+ 2017-04-18  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR gcov-profile/78783
+ 	* gcov-tool.c (gcov_output_files): Validate that destination
+ 	file is either removed by the tool or by a user.
+ 
+ 2017-04-14  Andrew Burgess  <andrew.burgess@embecosm.com>
+ 	    Guy Benyei  <guybe@mellanox.com>
+ 
+ 	* config/arc/arc.c (arc_reorg): Move loop_end_id into a more local
+ 	block, and do not negate it, the stored id is already negative.
+ 
+ 2017-04-14  Andrew Burgess  <andrew.burgess@embecosm.com>
+ 
+ 	* config/arc/arc.md (doloop_begin_i): Use @pcl assembler syntax.
+ 
+ 2017-04-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	PR target/80098
+ 	* config/rs6000/rs6000-cpus.def (OTHER_P9_VECTOR_MASKS): Define
+ 	masks of options that should be turned off if the VSX vector
+ 	options are turned off.
+ 	(OTHER_P8_VECTOR_MASKS): Likewise.
+ 	(OTHER_VSX_VECTOR_MASKS): Likewise.
+ 	* config/rs6000/rs6000.c (rs6000_option_override_internal): Call
+ 	rs6000_disable_incompatible_switches to validate no type switches
+ 	like -mvsx.
+ 	(rs6000_incompatible_switch): New function to disallow turning on
+ 	other vector options if -mno-vsx, -mno-power8-vector, or
+ 	-mno-power9-vector are specified.
+ 
+ 2017-04-14  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.h (CRT_CALL_STATIC_FUNCTION): Use long calls.
+ 
+ 2017-04-14  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc-protos.h (arc_decl_pretend_args): Remove.
+ 	* config/arc/arc.c (arc_decl_pretend_args): Likewise.
+ 	* config/arc/arc.h (CFA_FRAME_BASE_OFFSET): Likewise.
+ 	(ARG_POINTER_CFA_OFFSET): Likewise.
+ 
+ 2017-04-14  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.c (arc_mode_dependent_address_p): Relax
+ 	conditions to take advantage of various optimizations.
+ 
+ 2017-04-13  Jeff Law  <law@redhat.com>
+ 
+ 	* config/mips.mips.md (zero_extendsidi2): Do not allow SP to appear
+ 	in operands[1] if it is a MEM and TARGET_MIPS16 is active.
+ 	(zero_extendsidi2_dext): Likewise.
+ 
+ 2017-04-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/80403
+ 	* fold-const.c (fold_ternary_loc): Revert
+ 	use op0 instead of fold_convert_loc (loc, type, arg0) part of
+ 	2017-04-12 change.
+ 
+ 2017-04-13  Vladimir Makarov  <vmakarov@redhat.com>
+ 
+ 	PR rtl-optimization/80343
+ 	* lra-remat.c (update_scratch_ops): Assign original hard reg to
+ 	new scratch pseudo.
+ 
+ 2017-04-13  Denis Khalikov <d.khalikov@partner.samsung.com>
+ 
+ 	PR sanitizer/80414
+ 	* ubsan.c (ubsan_expand_bounds_ifn): Pass original index
+ 	to ubsan_encode_value.
+ 
+ 2017-04-13  Jeff Law  <law@redhat.com>
+ 
+ 	* reload1.c (eliminate_regs_1): Call gen_rtx_raw_SUBREG for SUBREGs
+ 	appearing in DEBUG_INSNs.
+ 
+ 2017-04-13  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR gcov-profile/80413
+ 	* gcov-io.c (gcov_write_string): Copy to buffer just when
+ 	allocated size is greater than zero.
+ 
+ 2017-04-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/80321
+ 	* dwarf2out.c (decls_for_scope): Ignore declarations of
+ 	current_function_decl in BLOCK_NONLOCALIZED_VARS.
+ 
+ 2017-04-12  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR lto/69953
+ 	* ipa-visibility.c (non_local_p): Fix typos.
+ 	(localize_node): When localizing symbol in same comdat group,
+ 	dissolve the group only when we know external symbols are going
+ 	to be privatized.
+ 	(function_and_variable_visibility): Do not localize DECL_EXTERNAL.
+ 
+ 2017-04-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/79390
+ 	* optabs.c (emit_conditional_move): If the preferred op2/op3 operand
+ 	order does not result in usable sequence, retry with reversed operand
+ 	order.
+ 
+ 	PR sanitizer/80403
+ 	PR sanitizer/80404
+ 	PR sanitizer/80405
+ 	* fold-const.c (fold_ternary_loc): Use op1 instead of arg1 as argument
+ 	to fold_build2_loc.  Convert TREE_OPERAND (tem, 0) to type.  Use
+ 	op0 instead of fold_convert_loc (loc, type, arg0).
+ 
+ 2017-04-12  Jeff Law  <law@redhat.com>
+ 
+ 	* genattrtab.c (write_eligible_delay): Verify DELAY_INSN still
+ 	has a delay slot in the generated code.
+ 
+ 	* config/cris/cris.md (cris_preferred_reload_class): Return
+ 	GENNONACR_REGS rather than GENERAL_REGS.
+ 
+ 2017-04-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/80163
+ 	* expr.c <CASE_CONVERT>: For EXPAND_INITIALIZER determine SIGN_EXTEND
+ 	vs. ZERO_EXTEND based on signedness of treeop0's type rather than
+ 	signedness of the result type.
+ 
+ 2017-04-12  Richard Biener  <rguenther@suse.de>
+ 	    Jeff Law  <law@redhat.com>
+ 
+ 	PR tree-optimization/80359
+ 	* tree-ssa-dse.c (maybe_trim_partially_dead_store): Do not
+ 	trim stores to TARGET_MEM_REFs.
+ 
+ 2017-04-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/79390
+ 	* gimple-ssa-split-paths.c (is_feasible_trace): Restrict
+ 	threading case even more.
+ 
+ 2017-04-12  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR target/80382
+ 	* config/rs6000/sync.md (atomic_load<mode>, atomic_store<mode): Test
+ 	for quad_address_p for TImode, instead of just not indexed_address.
+ 
+ 2017-04-12  Richard Biener  <rguenther@suse.de>
+ 	    Bernd Edlinger  <bernd.edlinger@hotmail.de>
+ 
+ 	PR middle-end/79671
+ 	* alias.c (component_uses_parent_alias_set_from): Handle
+ 	TYPE_TYPELESS_STORAGE.
+ 	(get_alias_set): Likewise.
+ 	* tree-core.h (tree_type_common): Add typeless_storage flag.
+ 	* tree.h (TYPE_TYPELESS_STORAGE): New macro.
+ 	* stor-layout.c (place_union_field): Set TYPE_TYPELESS_STORAGE
+ 	for types containing members with TYPE_TYPELESS_STORAGE.
+ 	(place_field): Likewise.
+ 	(layout_type): Likewise for ARRAY_TYPE.
+ 	* lto-streamer-out.c (hash_tree): Hash TYPE_TYPELESS_STORAGE.
+ 	* tree-streamer-in.c (unpack_ts_type_common_value_fields): Stream
+ 	TYPE_TYPELESS_STORAGE.
+ 	* tree-streamer-out.c (pack_ts_type_common_value_fields): Likewise.
+ 
+ 2017-04-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/80349
+ 	* fold-const.c (fold_binary_loc) <case BIT_IOR_EXPR>: Convert arg0's
+ 	first argument to type.
+ 
+ 2017-04-11  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	PR target/80376
+ 	PR target/80315
+ 	* config/rs6000/rs6000.c (rs6000_expand_unop_builtin): Return
+ 	CONST0_RTX (mode) rather than const0_rtx where appropriate.
+ 	(rs6000_expand_binop_builtin): Likewise.
+ 	(rs6000_expand_ternop_builtin): Likewise; also add missing
+ 	vsx_xxpermdi_* variants; also fix typo (arg1 => arg2) for
+ 	vshasigma built-ins.
+ 	* doc/extend.texi: Document that vec_xxpermdi's third argument
+ 	must be a constant.
+ 
+ 2017-04-11  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.c (dimode_scalar_chain::compute_convert_gain):
+ 	Use shift_const cost parameter when calculating gain of STV shifts.
+ 
+ 2017-04-11  Vladimir Makarov  <vmakarov@redhat.com>
+ 
+ 	PR rtl-optimization/70478
+ 	* lra-constraints.c (process_alt_operands): Check memory for
+ 	disfavoring memory insn operand.
+ 
+ 2017-04-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/80100
+ 	* simplify-rtx.c (simplify_binary_operation_1) <case IOR>: Perform
+ 	left shift in unsigned HOST_WIDE_INT type.
+ 
+ 	PR rtl-optimization/80385
+ 	* simplify-rtx.c (simplify_unary_operation_1): Don't transform
+ 	(not (neg X)) into (plus X -1) for complex or non-integral modes.
+ 
+ 	PR libgomp/80394
+ 	* omp-low.c (scan_omp_task): Don't optimize away empty tasks
+ 	if they have any depend clauses.
+ 
+ 2017-04-11  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR ipa/80212
+ 	* cgraph.c (cgraph_node::dump): Dump calls_comdat_local.
+ 	* ipa-split.c (split_function): Create a local comdat symbol
+ 	if caller is in a comdat group.
+ 
+ 2017-04-11  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR ipa/80212
+ 	* ipa-cp.c (determine_versionability): Handle calls_comdat_local
+ 	flags.
+ 
+ 2017-04-11  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/80364
+ 	* gimple-ssa-sprintf.c (get_int_range): Remove second argument and
+ 	always use the int type.  Use INTEGRAL_TYPE_P() rather than testing
+ 	for INTEGER_TYPE.
+ 	(directive::set_width, directive::set_precision, format_character):
+ 	Adjust.
+ 	(parse_directive): Use INTEGRAL_TYPE_P() rather than testing for
+ 	INTEGER_TYPE.
+ 
+ 2017-04-11  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR target/80389
+ 	* config/arm/arm.c (arm_configure_build_target): When -mcpu and -arch
+ 	conflict, set target->arch_name instead of target->cpu_name.
+ 
+ 2017-04-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/80374
+ 	* tree-ssa-dom.c (derive_equivalences_from_bit_ior): Use
+ 	build_zero_cst, remove fold_convertible_p check again.
+ 
+ 2017-04-11  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR sanitizer/70878
+ 	* ubsan.c (instrument_object_size): Do not instrument register
+ 	variables.
+ 
+ 2017-04-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/80381
+ 	* config/i386/i386-builtin-types.def
+ 	(V16HI_FTYPE_V16HI_INT_V16HI_UHI_COUNT,
+ 	V16HI_FTYPE_V16HI_V8HI_V16HI_UHI_COUNT,
+ 	V16SI_FTYPE_V16SI_INT_V16SI_UHI_COUNT,
+ 	V16SI_FTYPE_V16SI_V4SI_V16SI_UHI_COUNT,
+ 	V2DI_FTYPE_V2DI_INT_V2DI_UQI_COUNT,
+ 	V2DI_FTYPE_V2DI_V2DI_V2DI_UQI_COUNT,
+ 	V32HI_FTYPE_V32HI_INT_V32HI_USI_COUNT,
+ 	V32HI_FTYPE_V32HI_V8HI_V32HI_USI_COUNT,
+ 	V4DI_FTYPE_V4DI_INT_V4DI_UQI_COUNT,
+ 	V4DI_FTYPE_V4DI_V2DI_V4DI_UQI_COUNT,
+ 	V4SI_FTYPE_V4SI_INT_V4SI_UQI_COUNT,
+ 	V4SI_FTYPE_V4SI_V4SI_V4SI_UQI_COUNT,
+ 	V8DI_FTYPE_V8DI_INT_V8DI_UQI_COUNT,
+ 	V8DI_FTYPE_V8DI_V2DI_V8DI_UQI_COUNT,
+ 	V8HI_FTYPE_V8HI_INT_V8HI_UQI_COUNT,
+ 	V8HI_FTYPE_V8HI_V8HI_V8HI_UQI_COUNT,
+ 	V8SI_FTYPE_V8SI_INT_V8SI_UQI_COUNT,
+ 	V8SI_FTYPE_V8SI_V4SI_V8SI_UQI_COUNT): New function type aliases.
+ 	* config/i386/i386-builtin.def (__builtin_ia32_pslld512_mask,
+ 	__builtin_ia32_pslldi512_mask, __builtin_ia32_psllq512_mask,
+ 	__builtin_ia32_psllqi512_mask, __builtin_ia32_psrad512_mask,
+ 	__builtin_ia32_psradi512_mask, __builtin_ia32_psraq512_mask,
+ 	__builtin_ia32_psraqi512_mask, __builtin_ia32_psrld512_mask,
+ 	__builtin_ia32_psrldi512_mask, __builtin_ia32_psrlq512_mask,
+ 	__builtin_ia32_psrlqi512_mask, __builtin_ia32_psllwi128_mask,
+ 	__builtin_ia32_pslldi128_mask, __builtin_ia32_psllqi128_mask,
+ 	__builtin_ia32_psllw128_mask, __builtin_ia32_pslld128_mask,
+ 	__builtin_ia32_psllq128_mask, __builtin_ia32_psllwi256_mask,
+ 	__builtin_ia32_psllw256_mask, __builtin_ia32_pslldi256_mask,
+ 	__builtin_ia32_pslld256_mask, __builtin_ia32_psllqi256_mask,
+ 	__builtin_ia32_psllq256_mask, __builtin_ia32_psradi128_mask,
+ 	__builtin_ia32_psrad128_mask, __builtin_ia32_psradi256_mask,
+ 	__builtin_ia32_psrad256_mask, __builtin_ia32_psraqi128_mask,
+ 	__builtin_ia32_psraq128_mask, __builtin_ia32_psraqi256_mask,
+ 	__builtin_ia32_psraq256_mask, __builtin_ia32_psrldi128_mask,
+ 	__builtin_ia32_psrld128_mask, __builtin_ia32_psrldi256_mask,
+ 	__builtin_ia32_psrld256_mask, __builtin_ia32_psrlqi128_mask,
+ 	__builtin_ia32_psrlq128_mask, __builtin_ia32_psrlqi256_mask,
+ 	__builtin_ia32_psrlq256_mask, __builtin_ia32_psrawi256_mask,
+ 	__builtin_ia32_psraw256_mask, __builtin_ia32_psrawi128_mask,
+ 	__builtin_ia32_psraw128_mask, __builtin_ia32_psrlwi256_mask,
+ 	__builtin_ia32_psrlw256_mask, __builtin_ia32_psrlwi128_mask,
+ 	__builtin_ia32_psrlw128_mask, __builtin_ia32_psllwi512_mask,
+ 	__builtin_ia32_psllw512_mask, __builtin_ia32_psrawi512_mask,
+ 	__builtin_ia32_psraw512_mask, __builtin_ia32_psrlwi512_mask,
+ 	__builtin_ia32_psrlw512_mask): Use _COUNT suffixed function type
+ 	aliases.
+ 	* config/i386/i386.c (ix86_expand_args_builtin): Rename last_arg_count
+ 	flag to second_arg_count, handle 4 argument function type _COUNT
+ 	aliases, handle second_arg_count on second argument rather than last.
+ 
+ 2017-04-10  Jeff Law  <law@redhat.com>
+ 
+ 	PR tree-optimization/80374
+ 	* tree-ssa-dom.c (derive_equivalences_from_bit_ior): Do not try to
+ 	record anything if we can not convert integer_zero_node to the
+ 	desired type.
+ 
+ 2017-04-10  Kelvin Nilsen  <kelvin@gcc.gnu.org>
+ 
+ 	PR target/80108
+ 	* config/rs6000/rs6000.c (rs6000_option_override_internal):
+ 	Enhance special handling given to the TARGET_P9_MINMAX option in
+ 	relation to certain other options.
+ 
+ 2017-04-10  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	PR tree-optimization/80153
+ 	* tree-ssa-loop-ivopts.c (add_iv_candidate_for_use): Check and
+ 	remove POINTER_PLUS_EXPR's base part directly, rather than through
+ 	aff_tree.
+ 
+ 2017-04-10  Richard Biener  <rguenther@suse.de>
+ 	    Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	PR tree-optimization/80153
+ 	* tree-affine.c (aff_combination_to_tree): Get base pointer from
+ 	the first element of pointer type aff_tree.  Build result expr in
+ 	aff_tree's type.
+ 	(add_elt_to_tree): Convert to type unconditionally.  Remove other
+ 	fold_convert calls.
+ 	* tree-ssa-loop-ivopts.c (alloc_iv): Pass in consistent types.
+ 	(rewrite_use_nonlinear_expr): Check invariant using iv information.
+ 
+ 2017-04-10  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-structalias.c (find_func_aliases): Properly handle
+ 	asm inputs.
+ 
+ 2017-04-10  Vladimir Makarov  <vmakarov@redhat.com>
+ 
+ 	PR rtl-optimization/70478
+ 	* lra-constraints.c (curr_small_class_check): New.
+ 	(update_and_check_small_class_inputs): New.
+ 	(process_alt_operands): Update curr_small_class_check.  Disfavor
+ 	alternative insn memory operands.  Check available regs for small
+ 	class operands.
+ 
+ 2017-03-31  Matthew Fortune  <matthew.fortune@imgtec.com>
+ 
+ 	PR target/80057
+ 	* config/mips/mips.opt (-mvirt): Update description.
+ 	* doc/invoke.texi (-mvirt): Likewise.
+ 
+ 2017-04-10  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/80362
+ 	* fold-const.c (fold_binary_loc): Look at unstripped ops when
+ 	looking for NEGATE_EXPR in -A / -B to A / B folding.
+ 
+ 2017-04-10  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR gcov-profile/80224
+ 	* gcov.c (print_usage): Fix usage string.
+ 	(get_gcov_intermediate_filename): Remove.
+ 	(output_gcov_file): Use both for normal and intermediate format.
+ 	(generate_results): Do not initialize special file for
+ 	intermediate format.
+ 
+ 2017-04-10  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/80304
+ 	* tree-ssa-loop-im.c (ref_indep_loop_p_1): Also recurse
+ 	for safelen.
+ 
+ 2017-04-10  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	PR target/79905
+ 	* config/rs6000/rs6000.c (rs6000_vector_type): New.
+ 	(rs6000_init_builtins): Use it.
+ 
+ 2016-04-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* config/arm/arm.md (<mrc>): Add mode to SET source.
+ 	(<mrrc>): Likewise.
+ 
+ 2017-04-10  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/80344
+ 	* gimplify.c (is_gimple_mem_rhs_or_call): Allow CLOBBERs.
+ 
+ 2017-04-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/80324
+ 	* config/i386/avx512fintrin.h (_mm512_reduce_add_epi32,
+ 	_mm512_reduce_mul_epi32, _mm512_reduce_and_epi32,
+ 	_mm512_reduce_or_epi32, _mm512_mask_reduce_add_epi32,
+ 	_mm512_mask_reduce_mul_epi32, _mm512_mask_reduce_and_epi32,
+ 	_mm512_mask_reduce_or_epi32, _mm512_reduce_min_epi32,
+ 	_mm512_reduce_max_epi32, _mm512_reduce_min_epu32,
+ 	_mm512_reduce_max_epu32, _mm512_mask_reduce_min_epi32,
+ 	_mm512_mask_reduce_max_epi32, _mm512_mask_reduce_min_epu32,
+ 	_mm512_mask_reduce_max_epu32, _mm512_reduce_add_ps,
+ 	_mm512_reduce_mul_ps, _mm512_mask_reduce_add_ps,
+ 	_mm512_mask_reduce_mul_ps, _mm512_reduce_min_ps, _mm512_reduce_max_ps,
+ 	_mm512_mask_reduce_min_ps, _mm512_mask_reduce_max_ps,
+ 	_mm512_reduce_add_epi64, _mm512_reduce_mul_epi64,
+ 	_mm512_reduce_and_epi64, _mm512_reduce_or_epi64,
+ 	_mm512_mask_reduce_add_epi64, _mm512_mask_reduce_mul_epi64,
+ 	_mm512_mask_reduce_and_epi64, _mm512_mask_reduce_or_epi64,
+ 	_mm512_reduce_min_epi64, _mm512_reduce_max_epi64,
+ 	_mm512_mask_reduce_min_epi64, _mm512_mask_reduce_max_epi64,
+ 	_mm512_reduce_min_epu64, _mm512_reduce_max_epu64,
+ 	_mm512_mask_reduce_min_epu64, _mm512_mask_reduce_max_epu64,
+ 	_mm512_reduce_add_pd, _mm512_reduce_mul_pd, _mm512_mask_reduce_add_pd,
+ 	_mm512_mask_reduce_mul_pd, _mm512_reduce_min_pd, _mm512_reduce_max_pd,
+ 	_mm512_mask_reduce_min_pd, _mm512_mask_reduce_max_pd): New intrinsics.
+ 
+ 2017-04-08  Vladimir Makarov  <vmakarov@redhat.com>
+ 
+ 	PR rtl-optimization/70478
+ 	* lra-constraints.c: Reverse the last patch.
+ 
+ 2017-04-08  Andreas Tobler  <andreast@gcc.gnu.org>
+ 
+ 	* config/aarch64/aarch64-freebsd.h: Define MCOUNT_NAME.
+ 	Add comment for WCHAR_T.
+ 
+ 2017-04-08  Martin Liska  <mliska@suse.cz>
+ 
+ 	Revert:
+ 	2017-04-07  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR ipa/80212
+ 	* ipa-split.c (split_function): Add function part to a same comdat
+ 	group.
+ 
+ 2017-04-08  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
+ 
+ 	PR target/80358
+ 	* config/rs6000/rs6000.c (expand_block_compare): Fix boundary check.
+ 
+ 2017-04-07  Pat Haugen  <pthaugen@us.ibm.com>
+ 
+ 	* rs6000/rs6000.c (vec_load_pendulum): Rename...
+ 	(vec_pairing): ...to this.
+ 	(power9_sched_reorder2): Rewrite code for pairing vector/vecload insns.
+ 	(rs6000_sched_init): Adjust for name change.
+ 	(struct rs6000_sched_context): Likewise.
+ 	(rs6000_init_sched_context): Likewise.
+ 	(rs6000_set_sched_context): Likewise.
+ 
+ 2017-04-07  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/80322
+ 	PR target/80323
+ 	PR target/80325
+ 	PR target/80326
+ 	* config/i386/avxintrin.h (_mm256_cvtsd_f64, _mm256_cvtss_f32): New
+ 	intrinsics.
+ 	* config/i386/avx512fintrin.h (_mm512_int2mask, _mm512_mask2int,
+ 	_mm512_abs_ps, _mm512_mask_abs_ps, _mm512_abs_pd, _mm512_mask_abs_pd,
+ 	_mm512_cvtsd_f64, _mm512_cvtss_f32): Likewise.
+ 
+ 2017-04-07  Andreas Tobler  <andreast@gcc.gnu.org>
+ 
+ 	* config/aarch64/aarch64-freebsd.h: Define WCHAR_TYPE.
+ 
+ 2017-04-07  Vladimir Makarov  <vmakarov@redhat.com>
+ 
+ 	PR rtl-optimization/70703
+ 	* ira-color.c (update_conflict_hard_regno_costs): Use
+ 	int64_t instead of HOST_WIDE_INT.
+ 
+ 2017-04-07  Vladimir Makarov  <vmakarov@redhat.com>
+ 
+ 	PR rtl-optimization/70478
+ 	* lra-constraints.c (process_alt_operands): Disfavor alternative
+ 	insn memory operands.
+ 
+ 2017-04-07  Jeff Law  <law@redhat.com>
+ 
+ 	* config/iq2000/iq2000.c (final_prescan_insn): Do not separate a
+ 	CALL and NOTE_INSN_CALL_ARG_LOCATION.
+ 
+ 2017-04-07  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR target/79889
+ 	* config/aarch64/aarch64.c (aarch64_process_target_attr):
+ 	Show error message instead of an ICE.
+ 
+ 2017-04-07  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR ipa/80212
+ 	* ipa-split.c (split_function): Add function part to a same comdat
+ 	group.
+ 
+ 2017-04-07  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/80341
+ 	* tree.c (get_unwidened): Also handle ! for_type case for
+ 	INTEGER_CSTs.
+ 	* convert.c (do_narrow): Split out from ...
+ 	(convert_to_integer_1): ... here.  Do not pass final truncation
+ 	type to get_unwidened for TRUNC_DIV_EXPR.
+ 
+ 2017-04-07  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-affine.c (wide_int_ext_for_comb): Take type rather
+ 	than aff_tree.
+ 	(aff_combination_const): Adjust.
+ 	(aff_combination_scale): Likewise.
+ 	(aff_combination_add_elt): Likewise.
+ 	(aff_combination_add_cst): Likewise.
+ 	(aff_combination_convert): Likewise.
+ 	(add_elt_to_tree): Likewise.  Remove unused argument.
+ 	(aff_combination_to_tree): Adjust calls to add_elt_to_tree.
+ 
+ 2017-04-07  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+ 
+ 	* config/arm/arm.h (ARM_DEFAULT_SHORT_ENUMS): Provide default
+ 	definition.
+ 	* config/arm/arm.c (arm_default_short_enums): Use
+ 	ARM_DEFAULT_SHORT_ENUMS.
+ 	* config/arm/rtems.h (ARM_DEFAULT_SHORT_ENUMS): Define.
+ 
+ 2017-04-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/80234
+ 	* dwarf2out.c (gen_member_die): Handle C++17 inline static data
+ 	members with redundant out-of-class redeclaration.
+ 
+ 2017-04-06  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/80286
+ 	* config/i386/sse.md (*vec_extractv4si_0_zext_sse4): New pattern.
+ 	* config/i386/i386.md (*zero_extendsidi2):
+ 	Add (?*x,*x) and (?*v,*v) alternatives.
+ 
+ 2017-04-06  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/79733
+ 	* config/i386/i386.c (ix86_expand_builtin)
+ 	<case IX86_BUILTIN_K{,OR}TEST{C,Z}{8,16,32,64}>: Determine insn operand
+ 	mode from insn data. Convert operands to insn operand mode.
+ 	Copy operands that don't satisfy insn predicate to a register.
+ 
+ 2017-04-06  Sam Thursfield  <sam.thursfield@codethink.co.uk>
+ 
+ 	* config/rs6000/x-aix: Increase memory limit for genautomata on AIX.
+ 	Update comments.
+ 
+ 2017-04-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/80334
+ 	* tree-ssa-loop-ivopts.c (rewrite_use_address): Properly
+ 	preserve alignment of accesses.
+ 
+ 2017-04-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/80262
+ 	* tree-sra.c (build_ref_for_offset): Preserve address-space
+ 	information.
+ 	* tree-ssa-sccvn.c (vn_reference_maybe_forwprop_address):
+ 	Drop useless address-space information on MEM_REF offsets.
+ 
+ 2017-04-05  Andreas Schwab  <schwab@linux-m68k.org>
+ 
+ 	* builtins.def (BUILT_IN_UPDATE_SETJMP_BUF): Fix type.
+ 
+ 2017-04-05  Vladimir Makarov  <vmakarov@redhat.com>
+ 
+ 	PR rtl-optimization/70703
+ 	* ira-color.c (update_conflict_hard_regno_costs): Use
+ 	HOST_WIDE_INT instead of long.
+ 
+ 2017-04-05  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/80298
+ 	* config/i386/mmintrin.h: Add -msse target option when __SSE__ is
+ 	not defined for x86_64 target.  Add -mmmx target option when __SSE2__
+ 	is not defined.
+ 	* config/i386/mm3dnow.h: Add -msse target when __SSE__ is not defined
+ 	for x86_64 target.  Handle -m3dnowa option.
+ 
+ 2017-04-05  Vladimir Makarov  <vmakarov@redhat.com>
+ 
+ 	PR rtl-optimization/70703
+ 	* ira-color.c (update_costs_from_allocno): Use the smallest mode.
+ 	(update_conflict_hard_regno_costs): Use long instead of unsigned
+ 	arithmetic for cost calculation.
+ 
+ 2017-04-05  Jakub Jelinek  <jakub@redhat.com>
+ 	    Bernd Edlinger  <bernd.edlinger@hotmail.de>
+ 
+ 	PR sanitizer/80308
+ 	* asan.c (asan_store_shadow_bytes): Fix location of last_chunk_value
+ 	for big endian.
+ 
+ 2017-04-05  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR target/78002
+ 	* config/aarch64/aarch64.c (aarch64_emit_probe_stack_range): Replace
+ 	ptr_mode with Pmode throughout.
+ 	* config/aarch64/aarch64.md (probe_stack_range_<PTR:mode): Rename
+ 	into probe_stack_range and use DImode.
+ 
+ 2017-04-05  Dominik Vogt  <vogt@linux.vnet.ibm.com>
+ 
+ 	PR target/79890
+ 	* config/s390/s390.c (s390_register_info_gprtofpr): Return if
+ 	call_eh_return is true.
+ 
+ 2017-04-05  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	* config/s390/s390-c.c (s390_resolve_overloaded_builtin):
+ 	Initialize last_match_fntype_index.
+ 
+ 2017-04-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/80310
+ 	* tree-nvr.c: Include internal-fn.h.
+ 	(pass_return_slot::execute): Ignore internal calls without
+ 	direct optab.
+ 
+ 2017-04-04  Jakub Jelinek  <jakub@redhat.com>
+ 	    Richard Biener  <rguenther@suse.de>
+ 
+ 	PR c++/80297
+ 	* genmatch.c (capture::gen_transform): For GENERIC unshare_expr
+ 	captures used multiple times, except for the last use.
+ 	* generic-match-head.c: Include gimplify.h.
+ 
+ 2017-04-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/79390
+ 	* target.h (struct noce_if_info): Declare.
+ 	* targhooks.h (default_noce_conversion_profitable_p): Declare.
+ 	* target.def (noce_conversion_profitable_p): New target hook.
+ 	* ifcvt.h (struct noce_if_info): New type, moved from ...
+ 	* ifcvt.c (struct noce_if_info): ... here.
+ 	(noce_conversion_profitable_p): Renamed to ...
+ 	(default_noce_conversion_profitable_p): ... this.  No longer
+ 	static nor inline.
+ 	(noce_try_store_flag_constants, noce_try_addcc,
+ 	noce_try_store_flag_mask, noce_try_cmove, noce_try_cmove_arith,
+ 	noce_convert_multiple_sets): Use targetm.noce_conversion_profitable_p
+ 	instead of noce_conversion_profitable_p.
+ 	* config/i386/i386.c: Include ifcvt.h.
+ 	(ix86_option_override_internal): Don't override
+ 	PARAM_MAX_RTL_IF_CONVERSION_INSNS default.
+ 	(ix86_noce_conversion_profitable_p): New function.
+ 	(TARGET_NOCE_CONVERSION_PROFITABLE_P): Redefine.
+ 	* config/i386/x86-tune.def (X86_TUNE_ONE_IF_CONV_INSN): Adjust comment.
+ 	* doc/tm.texi.in (TARGET_NOCE_CONVERSION_PROFITABLE_P): Add.
+ 	* doc/tm.texi: Regenerated.
+ 
+ 2017-04-04  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	* doc/extend.texi (PowerPC AltiVec Built-in Functions): Grammar
+ 	correction.
+ 
+ 2017-04-04  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	PR target/80307
+ 	* config/arm/arm.c (thumb1_rtx_costs): Give a cost of 32
+ 	instructions for small multiply cores.
+ 
+ 2017-04-04  Jeff Law  <law@redhat.com>
+ 
+ 	* config/mips/mips.c (mips_multi_add): Zero initialize the newly
+ 	added member.
+ 	(mips_expand_vec_perm_const): Initialize elements in orig_perm
+ 	that are not set by the loop over the elements.
+ 
+ 2017-04-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/80286
+ 	* config/i386/i386.c (ix86_expand_args_builtin): If op has scalar
+ 	int mode, convert_modes it to mode as unsigned, otherwise use
+ 	lowpart_subreg to mode rather than SImode.
+ 	* config/i386/sse.md (<mask_codefor>ashr<mode>3<mask_name>,
+ 	ashr<mode>3, ashr<mode>3<mask_name>, <shift_insn><mode>3<mask_name>):
+ 	Use DImode instead of SImode for the shift count operand.
+ 	* config/i386/mmx.md (mmx_ashr<mode>3, mmx_<shift_insn><mode>3):
+ 	Likewise.
+ 
+ 2017-04-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/80281
+ 	* match.pd (A + (-B) -> A - B): Make sure to preserve unsigned
+ 	arithmetic done for the negate or the plus.  Simplify.
+ 	(A - (-B) -> A + B): Likewise.
+ 	* fold-const.c (split_tree): Make sure to not negate pointers.
+ 
+ 2017-04-04  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR rtl-optimization/60818
+ 	* simplify-rtx.c (simplify_binary_operation_1): Do not replace
+ 	a compare of comparisons with the thing compared if this results
+ 	in a different machine mode.
+ 
+ 2017-04-03  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* alias.c (base_alias_check): Fix typo in comment.
+ 	* cgraph.h (class ipa_polymorphic_call_context): Likewise.
+ 	* cgraphunit.c (symbol_table::compile): Likewise.
+ 	* collect2.c (maybe_run_lto_and_relink): Likewise.
+ 	* config/arm/arm.c (arm_thumb1_mi_thunk): Likewise.
+ 	* config/avr/avr-arch.h (avr_arch_info_t): Likewise.
+ 	* config/avr/avr.c (avr_map_op_t): Likewise.
+ 	* config/cr16/cr16.h (DATA_ALIGNMENT): Likewise.
+ 	* config/epiphany/epiphany.c (TARGET_ARG_PARTIAL_BYTES): Likewise.
+ 	* config/epiphany/epiphany.md (movcc): Likewise.
+ 	* config/i386/i386.c (legitimize_pe_coff_extern_decl): Likewise.
+ 	* config/m68k/m68k.c (struct _sched_ib, m68k_sched_variable_issue):
+ 	Likewise.
+ 	* config/mips/mips.c (mips_save_restore_reg): Likewise.
+ 	* config/rx/rx.c (rx_is_restricted_memory_address): Likewise.
+ 	* config/s390/s390.c (Z10_EARLYLOAD_DISTANCE): Likewise.
+ 	* config/sh/sh.c (sh_rtx_costs): Likewise.
+ 	* fold-const.c (fold_truth_andor): Likewise.
+ 	* genautomata.c (collapse_flag): Likewise.
+ 	* gengtype.h (struct type::u::s): Likewise.
+ 	* gensupport.c (has_subst_attribute, add_mnemonic_string): Likewise.
+ 	* input.c (FORMAT_AMOUNT): Likewise.
+ 	* ipa-cp.c (class ipcp_lattice, agg_replacements_to_vector)
+ 	(known_aggs_to_agg_replacement_list): Likewise.
+ 	* ipa-inline-analysis.c: Likewise.
+ 	* ipa-inline.h (estimate_edge_time, estimate_edge_hints): Likewise.
+ 	* ipa-polymorphic-call.c
+ 	(ipa_polymorphic_call_context::restrict_to_inner_class): Likewise.
+ 	* loop-unroll.c (analyze_insn_to_expand_var): Likewise.
+ 	* lra.c (lra_optional_reload_pseudos, lra_subreg_reload_pseudos):
+ 	Likewise.
+ 	* modulo-sched.c (apply_reg_moves): Likewise.
+ 	* omp-expand.c (build_omp_regions_1): Likewise.
+ 	* trans-mem.c (struct tm_wrapper_hasher): Likewise.
+ 	* tree-ssa-loop-ivopts.c (may_eliminate_iv): Likewise.
+ 	* tree-ssa-loop-niter.c (maybe_lower_iteration_bound): Likewise.
+ 	* tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
+ 	* value-prof.c: Likewise.
+ 	* var-tracking.c (val_reset): Likewise.
+ 
+ 2017-04-03  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/80275
+ 	* fold-const.c (split_address_to_core_and_offset): Handle
+ 	POINTER_PLUS_EXPR.
+ 
+ 2017-04-03  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* tree-nested.c (get_descriptor_type): Make sure that the alignment of
+ 	descriptors is at least equal to that of functions.
+ 
+ 2017-04-02  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/sse.md (movdi_to_sse): Add missing DONE.
+ 
+ 2017-04-02  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/80250
+ 	* config/i386/sse.md (mov<IMOD4:mode>): Remove insn pattern.
+ 	(mov<IMOD4:mode>): New expander.
+ 	(*mov<IMOD4:mode>_internal): New insn and split pattern.
+ 
+ 2017-03-31  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR rtl-optimization/79405
+ 	* fwprop.c (propagations_left): New variable.
+ 	(forward_propagate_into): Decrement it.
+ 	(fwprop_init): Initialize it.
+ 	(fw_prop): If the variable has reached zero, stop propagating.
+ 	(fwprop_addr): Ditto.
+ 
+ 2017-03-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/79255
+ 	* dwarf2out.c (decls_for_scope): If BLOCK_NONLOCALIZED_VAR is
+ 	a FUNCTION_DECL, pass it as decl instead of origin to
+ 	process_scope_var.
+ 
+ 2017-03-31  Alexander Monakov  <amonakov@ispras.ru>
+ 
+ 	* config/nvptx/nvptx.c (nvptx_output_softstack_switch): Correct format
+ 	string.
+ 
+ 2017-03-31  Pat Haugen  <pthaugen@us.ibm.com>
+ 
+ 	PR target/80107
+ 	* config/rs6000/rs6000.md (extendhi<mode>2): Add test for
+ 	TARGET_VSX_SMALL_INTEGER.
+ 
+ 2017-03-31  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	* doc/extend.texi (PowerPC AltiVec Built-in Functions):	Add
+ 	reference to the OpenPOWER 64-Bit ELF V2 ABI Specification.
+ 
+ 2017-03-31  Matthew Fortune  <matthew.fortune@imgtec.com>
+ 
+ 	* config/mips/mips-msa.md (msa_vec_extract_<msafmt_f>): Update
+ 	extraction from odd-numbered MSA register.
+ 
+ 2017-03-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/80173
+ 	* expmed.c (store_bit_field_1): Don't attempt to create
+ 	a word subreg out of hard registers wider than word if they
+ 	have HARD_REGNO_NREGS of 1 for their mode.
+ 
+ 	PR middle-end/80163
+ 	* varasm.c (initializer_constant_valid_p_1): Disallow sign-extending
+ 	conversions to integer types wider than word and pointer.
+ 
+ 	PR debug/80025
+ 	* cselib.h (rtx_equal_for_cselib_1): Add depth argument.
+ 	(rtx_equal_for_cselib_p): Pass 0 to it.
+ 	* cselib.c (cselib_hasher::equal): Likewise.
+ 	(rtx_equal_for_cselib_1): Add depth argument.  If depth
+ 	is 128, don't look up VALUE locs and punt.  Increment
+ 	depth in recursive calls when walking VALUE locs.
+ 
+ 2017-03-31  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+ 
+ 	* gcov.c (md5sum_to_hex): Fix output of MD5 hex bytes.
+ 	(make_gcov_file_name): Use the canonical path name for generating
+ 	the MD5 value.
+ 	(read_line): Fix handling of files with ascii null bytes.
+ 
+ 2017-03-30  Matthew Fortune  <matthew.fortune@imgtec.com>
+ 
+ 	* config/mips/mips.c (mips_expand_vector_init): Create a const_vector
+ 	to initialise a vector register instead
+ 	of using a const_int.
+ 
+ 2017-03-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR translation/80189
+ 	* gimplify.c (omp_default_clause): Use %qs instead of %s in
+ 	diagnostic messages.
+ 
+ 2017-03-30  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	PR target/80246
+ 	* config/rs6000/dfp.md (dfp_dxex_<mode>): Update mode of operand 0.
+ 	(dfp_diex_<mode>): Update mode of operand 1.
+ 	* doc/extend.texi (dxex, dxexq): Document change to return type.
+ 	(diex, diexq): Document change to argument type.
+ 
+ 2017-03-30  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR ipa/77333
+ 	* cgraph.h (cgraph_build_function_type_skip_args): Declare.
+ 	* cgraph.c (redirect_call_stmt_to_callee): Set gimple fntype so that
+ 	it reflects the signature changes performed at the callee side.
+ 	* cgraphclones.c (build_function_type_skip_args): Make public, renamed
+ 	to cgraph_build_function_type_skip_args.
+ 	(build_function_decl_skip_args): Adjust call to the above function.
+ 
+ 2017-03-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/80206
+ 	* config/i386/sse.md
+ 	(<extract_type>_vextract<shuffletype><extract_suf>_mask): Use
+ 	register as dest whenever it is a MEM not rtx_equal_p to the
+ 	corresponding dup operand, and when forcing into reg move the
+ 	reg into the memory afterwards.
+ 	(<extract_type_2>_vextract<shuffletype><extract_suf_2>_mask):
+ 	Likewise.  Use <ssehalfvecmode> instead of <ssequartermode>
+ 	for the force_reg mode.
+ 	(avx512vl_vextractf128<mode>): Use register as dest either
+ 	always when a MEM, or when it is a MEM not rtx_equal_p to the
+ 	corresponding dup operand, or even not when it is a CONST_VECTOR
+ 	depending on the mode and lo vs. hi.
+ 	(avx512dq_vextract<shuffletype>64x2_1_maskm): Remove extraneous
+ 	parens.
+ 	(avx512f_vextract<shuffletype>32x4_1_maskm): Likewise.
+ 	(<mask_codefor>avx512dq_vextract<shuffletype>64x2_1<mask_name>):
+ 	Likewise.  Require that operands[2] is even.
+ 	(<mask_codefor>avx512f_vextract<shuffletype>32x4_1<mask_name>):
+ 	Remove extraneous parens.  Require that operands[2] is a multiple
+ 	of 4.
+ 	(vec_extract_lo_<mode><mask_name>): Don't bother testing if
+ 	operands[0] is a MEM if <mask_applied>, the predicates/constraints
+ 	disallow memory then.
+ 
+ 2017-03-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/77498
+ 	* tree-ssa-pre.c (phi_translate_1): Do not allow simplifications
+ 	to non-constants over backedges.
+ 
+ 2017-03-29  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR rtl-optimization/80233
+ 	* combine.c (combine_instructions): Only take NONDEBUG_INSN_P insns
+ 	as last_combined_insn.  Do not test for BARRIER_P separately.
+ 
+ 2017-03-29  Andreas Schwab  <schwab@suse.de>
+ 
+ 	PR ada/80146
+ 	* calls.c (prepare_call_address): Convert funexp to Pmode before
+ 	copying to temp reg.
+ 
+ 2017-03-29  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	PR tree-optimization/80158
+ 	* gimple-ssa-strength-reduction.c (replace_mult_candidate):
+ 	Handle possible future case of more than one alternate
+ 	interpretation.
+ 	(replace_rhs_if_not_dup): Likewise.
+ 	(replace_one_candidate): Likewise.
+ 
+ 2017-03-28  Vladimir Makarov  <vmakarov@redhat.com>
+ 
+ 	PR rtl-optimization/80193
+ 	* ira.c (ira): Do not check allocation for LRA.
+ 
+ 2017-03-28  Alexander Monakov  <amonakov@ispras.ru>
+ 
+ 	* config/nvptx/nvptx-protos.h (nvptx_output_simt_enter): Declare.
+ 	(nvptx_output_simt_exit): Declare.
+ 	* config/nvptx/nvptx.c (nvptx_init_unisimt_predicate): Use
+ 	cfun->machine->unisimt_location.  Handle NULL unisimt_predicate.
+ 	(init_softstack_frame): Move initialization of crtl->is_leaf to...
+ 	(nvptx_declare_function_name): ...here.  Emit declaration of local
+ 	memory space buffer for omp_simt_enter insn.
+ 	(nvptx_output_unisimt_switch): New.
+ 	(nvptx_output_softstack_switch): New.
+ 	(nvptx_output_simt_enter): New.
+ 	(nvptx_output_simt_exit): New.
+ 	* config/nvptx/nvptx.h (struct machine_function): New fields
+ 	has_simtreg, unisimt_location, simt_stack_size, simt_stack_align.
+ 	* config/nvptx/nvptx.md (UNSPECV_SIMT_ENTER): New unspec.
+ 	(UNSPECV_SIMT_EXIT): Ditto.
+ 	(omp_simt_enter_insn): New insn.
+ 	(omp_simt_enter): New expansion.
+ 	(omp_simt_exit): New insn.
+ 	* config/nvptx/nvptx.opt (msoft-stack-reserve-local): New option.
+ 
+ 	* internal-fn.c (expand_GOMP_SIMT_ENTER): New.
+ 	(expand_GOMP_SIMT_ENTER_ALLOC): New.
+ 	(expand_GOMP_SIMT_EXIT): New.
+ 	* internal-fn.def (GOMP_SIMT_ENTER): New internal function.
+ 	(GOMP_SIMT_ENTER_ALLOC): Ditto.
+ 	(GOMP_SIMT_EXIT): Ditto.
+ 	* target-insns.def (omp_simt_enter): New insn.
+ 	(omp_simt_exit): Ditto.
+ 	* omp-low.c (struct omplow_simd_context): New fields simt_eargs,
+ 	simt_dlist.
+ 	(lower_rec_simd_input_clauses): Implement SIMT privatization.
+ 	(lower_rec_input_clauses): Likewise.
+ 	(lower_lastprivate_clauses): Handle SIMT privatization.
+ 
+ 	* omp-offload.c: Include langhooks.h, tree-nested.h, stor-layout.h.
+ 	(ompdevlow_adjust_simt_enter): New.
+ 	(find_simtpriv_var_op): New.
+ 	(execute_omp_device_lower): Handle IFN_GOMP_SIMT_ENTER,
+ 	IFN_GOMP_SIMT_ENTER_ALLOC, IFN_GOMP_SIMT_EXIT.
+ 
+ 	* tree-inline.h (struct copy_body_data): New field dst_simt_vars.
+ 	* tree-inline.c (expand_call_inline): Handle SIMT privatization.
+ 	(copy_decl_for_dup_finish): Ditto.
+ 
+ 	* tree-ssa.c (execute_update_addresses_taken): Handle GOMP_SIMT_ENTER.
+ 
+ 2017-03-28  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/53383
+ 	* config/i386/i386.c (ix86_option_override_internal): Always
+ 	allow -mpreferred-stack-boundary=3 for 64-bit targets.
+ 
+ 2017-03-28  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-vect-loop.c (optimize_mask_stores): Add bb to the right loop.
+ 
+ 2017-03-28  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	* tree-vect-loop-manip.c (slpeel_add_loop_guard): New param and
+ 	mark new edge's irreducible flag accordign to it.
+ 	(vect_do_peeling): Check loop preheader edge's irreducible flag
+ 	and pass it to function slpeel_add_loop_guard.
+ 
+ 2017-03-28  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR tree-optimization/80218
+ 	* tree-call-cdce.c (shrink_wrap_one_built_in_call_with_conds):
+ 	Update block frequencies and counts.
+ 
+ 2017-03-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/78644
+ 	* tree-ssa-ccp.c (evaluate_stmt): When we may not use the value
+ 	of a simplification result we may not use it at all.
+ 
+ 2017-03-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR ipa/80205
+ 	* tree-inline.c (copy_phis_for_bb): Do not create PHI node
+ 	without arguments, generate default definition of a SSA name.
+ 
+ 2017-03-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/80222
+ 	* gimple-fold.c (gimple_fold_indirect_ref): Do not touch
+ 	TYPE_REF_CAN_ALIAS_ALL references.
+ 	* fold-const.c (fold_indirect_ref_1): Likewise.
+ 
+ 2017-03-28  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR ipa/80104
+ 	* cgraphunit.c (cgraph_node::expand_thunk): Mark argument of a
+ 	thunk call as DECL_GIMPLE_REG_P when vector or complex type.
+ 
+ 2017-03-28  Claudiu Zissulescu  <claziss@synopsys.com>
+ 	    Thomas Petazzoni  <thomas.petazzoni@free-electrons.com>
+ 
+ 	* config/arc/arc.h (CPP_SPEC): Add subtarget_cpp_spec.
+ 	(EXTRA_SPECS): Define.
+ 	(SUBTARGET_EXTRA_SPECS): Likewise.
+ 	(SUBTARGET_CPP_SPEC): Likewise.
+ 	* config/arc/elf.h (EXTRA_SPECS): Renamed to
+ 	SUBTARGET_EXTRA_SPECS.
+ 	* config/arc/linux.h (SUBTARGET_CPP_SPEC): Define.
+ 
+ 2017-03-28  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/simdext.md (vst64_insn): Update pattern.
+ 	(vld32wh_insn): Likewise.
+ 	(vld32wl_insn): Likewise.
+ 	(vld64_insn): Likewise.
+ 	(vld32_insn): Likewise.
+ 
+ 2017-03-28  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR sanitizer/80067
+ 	* fold-const.c (fold_comparison): Use protected_set_expr_location
+ 	instead of SET_EXPR_LOCATION.
+ 
+ 2017-03-28  Markus Trippelsdorf  <markus@trippelsdorf.de>
+ 
+ 	* tree.c (add_expr): Avoid name lookup warning.
+ 
+ 2017-03-27  Jeff Law  <law@redhat.com>
+ 
+ 	PR tree-optimization/80216
+ 	* tree-ssa-dom.c (derive_equivalences_from_bit_ior): Fix typo in
+ 	function name.  Limit recursion depth.
+ 	(record_temporary_equivalences): Corresponding changes.
+ 
+ 2017-03-27  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* doc/invoke.texi (-Wno-narrowing): Reorder so default behavior is
+ 	covered first.
+ 
+ 2017-03-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/80102
+ 	* reg-notes.def (REG_CFA_NOTE): Define.  Use it for CFA related
+ 	notes.
+ 	* cfgcleanup.c (reg_note_cfa_p): New array.
+ 	(insns_have_identical_cfa_notes): New function.
+ 	(old_insns_match_p): Don't cross-jump in between /f
+ 	and non-/f instructions.  If both i1 and i2 are frame related,
+ 	verify all CFA notes, their order and content.
+ 
+ 2017-03-27  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	PR target/78543
+ 	* config/rs6000/rs6000.md (bswaphi2_extenddi): Combine bswap
+ 	HImode and SImode with zero extend to DImode to one insn.
+ 	(bswap<mode>2_extenddi): Likewise.
+ 	(bswapsi2_extenddi): Likewise.
+ 	(bswaphi2_extendsi): Likewise.
+ 	(bswaphi2): Combine bswap HImode and SImode into one insn.
+ 	Separate memory insns from swapping register.
+ 	(bswapsi2): Likewise.
+ 	(bswap<mode>2): Likewise.
+ 	(bswaphi2_internal): Delete, no longer used.
+ 	(bswapsi2_internal): Likewise.
+ 	(bswap<mode>2_load): Split bswap HImode/SImode into separate load,
+ 	store, and gpr<-gpr swap insns.
+ 	(bswap<mode>2_store): Likewise.
+ 	(bswaphi2_reg): Register only splitter, combine with the splitter.
+ 	(bswaphi2 splitter): Likewise.
+ 	(bswapsi2_reg): Likewise.
+ 	(bswapsi2 splitter): Likewise.
+ 	(bswapdi2): If we have the LDBRX and STDBRX instructions, split
+ 	the insns into load, store, and register/register insns.
+ 	(bswapdi2_ldbrx): Likewise.
+ 	(bswapdi2_load): Likewise.
+ 	(bswapdi2_store): Likewise.
+ 	(bswapdi2_reg): Likewise.
+ 
+ 2017-03-27  Gunther Nikl  <gnikl@users.sourceforge.net>
+ 
+ 	* system.h (HAVE_DESIGNATED_INITIALIZERS): Fix non C++ case.
+ 	(HAVE_DESIGNATED_UNION_INITIALIZERS): Likewise.
+ 
+ 2017-03-27  Kelvin Nilsen  <kelvin@gcc.gnu.org>
+ 
+ 	PR target/80103
+ 	* config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Edit and
+ 	add comments.
+ 	* config/rs6000/rs6000.c (rs6000_option_override_internal): Add
+ 	special handling for target option conflicts between dform
+ 	options (-mpower9-dform, -mpower9-dform-vector,
+ 	-mpower9-dform-scalar) and -mno-direct-move.
+ 
+ 2017-03-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/80181
+ 	* tree-ssa-ccp.c (likely_value): UNDEFINED ^ X is UNDEFINED.
+ 
+ 2017-03-27  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/predicates.md (move_double_src_operand): Replace the
+ 	call to move_double_src_operand with a call to address_operand.
+ 
+ 2017-03-27  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/elf.h (ARGET_ARC_TP_REGNO_DEFAULT): Define.
+ 	* config/arc/linux.h (ARGET_ARC_TP_REGNO_DEFAULT): Likewise.
+ 	* config/arc/arc.opt (mtp-regno): Use ARGET_ARC_TP_REGNO_DEFAULT.
+ 
+ 2017-03-27  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/predicates.md (long_immediate_loadstore_operand):
+ 	Consider scaled addresses cases.
+ 
+ 2017-03-27  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.c (arc_epilogue_uses): BLINK should be also
+ 	restored when in interrupt.
+ 	* config/arc/arc.md (simple_return): ARCv2 rtie instruction
+ 	doesn't have delay slot.
+ 
+ 2017-03-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR ipa/79776
+ 	* tree-ssa-structalias.c (associate_varinfo_to_alias): Skip
+ 	inlined thunk clones.
+ 
+ 2017-03-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/80168
+ 	* asan.c (instrument_derefs): Copy over last operand from
+ 	original COMPONENT_REF to the new COMPONENT_REF with
+ 	DECL_BIT_FIELD_REPRESENTATIVE.
+ 	* ubsan.c (instrument_object_size): Likewise.
+ 
+ 2017-03-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/80170
+ 	* tree-vect-data-refs.c (vect_compute_data_ref_alignment): Make
+ 	sure DR/SCEV didnt fold in constants we do not see when looking
+ 	at the reference base alignment.
+ 
+ 2017-03-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/80171
+ 	* gimple-fold.c (fold_ctor_reference): Properly guard against
+ 	NULL return value from canonicalize_constructor_val.
+ 
+ 2017-03-25  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/80180
+ 	* config/i386/i386.c (ix86_expand_builtin)
+ 	<IX86_BUILTIN_RDSEED{16,32,64}_STEP>: Do not expand arg0 between
+ 	flags reg setting and flags reg using instructions.
+ 	<IX86_BUILTIN_RDRAND{16,32,64}_STEP>: Ditto.  Use non-flags reg
+ 	clobbering instructions to zero extend op2.
+ 
+ 2017-03-25  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* doc/install.texi (Configuration) <--with-aix-soname>:
+ 	Update link to AIX ld.
+ 
+ 2017-03-25  Bernd Schmidt  <bschmidt@redhat.com>
+ 
+ 	PR rtl-optimization/80160
+ 	PR rtl-optimization/80159
+ 	* lra-assigns.c (must_not_spill_p): Tighten new test to also take
+ 	reg_alternate_class into account.
+ 
+ 2017-03-24  Vladimir Makarov  <vmakarov@redhat.com>
+ 
+ 	PR target/80148
+ 	* lra-assigns.c (assign_by_spills): Add spilled non-reload pseudos
+ 	to consider in curr_insn_transform.
+ 
+ 2017-03-24  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* genrecog.c (validate_pattern): Add VEC_SELECT validation.
+ 	* genmodes.c (emit_min_insn_modes_c): Call emit_mode_nunits
+ 	and emit_mode_inner.
+ 
+ 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	* config/s390/s390-builtins.def: Add VXE builtins.  Add a flags
+ 	argument to the overloaded builtin variants.  Use the new flag to
+ 	deprecate certain builtin variants.
+ 	* config/s390/s390-builtin-types.def: Add new builtin types.
+ 	* config/s390/s390-builtins.h: Support new flags field for
+ 	overloaded builtins.
+ 	* config/s390/s390-c.c (OB_DEF_VAR): New flags field.
+ 	(s390_macro_to_expand): Enable vector float data type.
+ 	(s390_cpu_cpp_builtins_internal): Indicate support of the new
+ 	builtins by incrementing the __VEC__ version number.
+ 	(s390_expand_overloaded_builtin): Support expansion of vec_xl and
+ 	vec_xst.
+ 	(s390_resolve_overloaded_builtin): Emit error messages depending
+ 	on the builtin flags.
+ 	* config/s390/s390.c (s390_expand_builtin): Support additional
+ 	flags argument.  Change error message to match the messages
+ 	emitted in s390-c.c.
+ 	* config/s390/s390.md: New UNSPEC_* constants.
+ 	(op_type): Add new instruction types.
+ 	* config/s390/vecintrin.h: Add new builtins and test data class
+ 	constants.
+ 	* config/s390/vx-builtins.md (V_HW_32_64): Add V4SF.
+ 	(V_HW_4, VEC_HW, VECF_HW): New mode iterators.
+ 	(VEC_INEXACT, VEC_NOINEXACT): New constants.
+ 	("vec_splats<mode>", "vec_insert<mode>", "vec_promote<mode>")
+ 	("vec_insert_and_zero<mode>", "vec_mergeh<mode>")
+ 	("vec_mergel<mode>"): V_HW -> VEC_HW.
+ 
+ 	("vlrlrv16qi", "vstrlrv16qi", "vbpermv16qi", "vec_msumv2di")
+ 	("vmslg", "*vftci<mode>_cconly", "vftci<mode>_intcconly")
+ 	("*vftci<mode>", "vftci<mode>_intcc", "vec_double_s64")
+ 	("vec_double_u64", "vfmin<mode>", "vfmax<mode>"): New definition.
+ 
+ 	("and_av2df3", "and_cv2df3", "vec_andc_av2df3")
+ 	("vec_andc_cv2df3", "xor_av2df3", "xor_cv2df3", "vec_nor_av2df3")
+ 	("vec_nor_cv2df3", "ior_av2df3", "ior_cv2df3", "vec_nabs")
+ 	("*vftcidb", "*vftcidb_cconly", "vftcidb"): Remove definition.
+ 
+ 	("vec_all_<fpcmpcc:code>v2df", "vec_any_<fpcmpcc:code>v2df")
+ 	("vec_scatter_elementv4si_DI", "vec_cmp<fpcmp:code>v2df")
+ 	("vec_di_to_df_s64", "vec_di_to_df_u64", "vec_df_to_di_u64")
+ 	("vfidb", "*vldeb", "*vledb", "*vec_cmp<insn_cmp>v2df_cconly")
+ 	("vec_cmpeqv2df_cc", "vec_cmpeqv2df_cc", "vec_cmphv2df_cc")
+ 	("vec_cmphev2df_cc", "*vec_cmpeqv2df_cc")
+ 	("*vec_cmphv2df_cc", "*vec_cmphev2df_cc"): Enable new modes as ...
+ 
+ 	("vec_all_<fpcmpcc:code><mode>", "vec_any_<fpcmpcc:code><mode>")
+ 	("vec_scatter_element<V_HW_4:mode>_DI")
+ 	("vec_cmp<fpcmp:code><mode>", "vcdgb", "vcdlgb", "vclgdb")
+ 	("vec_fpint<mode>", "vflls")
+ 	("vflrd", "*vec_cmp<insn_cmp><mode>_cconly", "vec_cmpeq<mode>_cc")
+ 	("vec_cmpeq<mode>_cc", "vec_cmph<mode>_cc", "vec_cmphe<mode>_cc")
+ 	("*vec_cmpeq<mode>_cc", "*vec_cmph<mode>_cc")
+ 	("*vec_cmphe<mode>_cc"): ... these.
+ 
+ 	("vec_ctd_s64", "vec_ctsl", "vec_ctul", "vec_st2f"): Use rounding
+ 	mode constant instead of magic value.
+ 
+ 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	* config/s390/s390.c (s390_expand_vec_compare): Support other
+ 	vector floating point modes than just V2DF.
+ 	(s390_expand_vcond): Likewise.
+ 	(s390_hard_regno_mode_ok): Allow SFmode values in VRs.
+ 	(s390_cannot_change_mode_class): Prevent mode changes between TF
+ 	and V1TF in vector registers.
+ 	* config/s390/s390.md (DF, SF): New mode attributes.
+ 	("*cmp<mode>_ccs", "add<mode>3", "sub<mode>3", "mul<mode>3")
+ 	("fma<mode>4", "fms<mode>4", "div<mode>3", "*neg<mode>2"): Add
+ 	SFmode support for VRs.
+ 	* config/s390/vector.md (V_HW, V_HW2, VT_HW, ti*, nonvec): Add new
+ 	vector fp modes.
+ 	(VFT, VF_HW): New mode iterators.
+ 	(vw, sdx): New mode attributes.
+ 	("addv2df3", "subv2df3", "mulv2df3", "divv2df3", "sqrtv2df2")
+ 	("fmav2df4","fmsv2df4", "negv2df2", "absv2df2", "*negabsv2df2")
+ 	("smaxv2df3", "sminv2df3", "*vec_cmp<VFCMP_HW_OP:code>v2df_nocc")
+ 	("vec_cmpuneqv2df", "vec_cmpltgtv2df", "vec_orderedv2df")
+ 	("vec_unorderedv2df"): Adjust the v2df only patterns to support
+ 	also the new vector floating point modes.  Renaming to ...
+ 
+ 	("add<mode>3", "sub<mode>3", "mul<mode>3", "div<mode>3")
+ 	("sqrt<mode>2", "fma<mode>4", "fms<mode>4", "neg<mode>2")
+ 	("abs<mode>2", "negabs<mode>2", "smax<mode>3")
+ 	("smin<mode>3", "*vec_cmp<VFCMP_HW_OP:code><mode>_nocc")
+ 	("vec_cmpuneq<mode>", "vec_cmpltgt<mode>", "vec_ordered<mode>")
+ 	("vec_unordered<mode>"): ... these.
+ 
+ 	("neg_fma<mode>4", "neg_fms<mode>4", "*smax<mode>3_vxe")
+ 	("*smin<mode>3_vxe", "*sminv2df3_vx", "*vec_extendv4sf")
+ 	("*vec_extendv2df"): New insn definitions.
+ 
+ 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	* config/s390/s390.md ("*adddi3_sign", "*subdi3_sign", "mulditi3")
+ 	("mulditi3_2", "*muldi3_sign"): New patterns.
+ 	("muldi3", "*muldi3", "mulsi3", "*mulsi3"): Add an expander and
+ 	rename the pattern definition.
+ 
+ 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	* config/s390/s390.md ("indirect_jump"): Turn insn definition into
+ 	expander.
+ 	("*indirect_jump", "*indirect2_jump"): New pattern definitions.
+ 
+ 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	* config/s390/s390.c (s390_expand_vec_init): Use vllezl
+ 	instruction if possible.
+ 	* config/s390/vector.md (vec_halfnumelts): New mode
+ 	attribute.
+ 	("*vec_vllezlf<mode>"): New pattern.
+ 
+ 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	* config/s390/vector.md ("popcountv16qi2", "popcountv8hi2")
+ 	("popcountv4si2", "popcountv2di2"): Rename to ...
+ 	("popcount<mode>2", "popcountv8hi2_vx", "popcountv4si2_vx")
+ 	("popcountv2di2_vx"): ... these and add !TARGET_VXE to the
+ 	condition.
+ 	("popcount<mode>2_vxe"): New pattern.
+ 
+ 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	* common/config/s390/s390-common.c (processor_flags_table): Add
+ 	arch12.
+ 	* config.gcc: Add arch12.
+ 	* config/s390/driver-native.c (s390_host_detect_local_cpu):
+ 	Default to arch12 for unknown CPU model numbers.
+ 	* config/s390/s390-builtins.def: Add B_VXE builtin flag.
+ 	* config/s390/s390-c.c (s390_cpu_cpp_builtins_internal): Adjust
+ 	PROCESSOR_max sanity check.
+ 	* config/s390/s390-opts.h (enum processor_type): Add
+ 	PROCESSOR_ARCH12.
+ 	* config/s390/s390.c (processor_table): Add arch12.
+ 	(s390_expand_builtin): Add check for B_VXE flag.
+ 	(s390_issue_rate): Add PROCESSOR_ARCH12.
+ 	(s390_get_sched_attrmask): Likewise.
+ 	(s390_get_unit_mask): Likewise.
+ 	(s390_sched_score): Enable z13 scheduling for arch12.
+ 	(s390_sched_reorder): Likewise.
+ 	(s390_sched_variable_issue): Likewise.
+ 	* config/s390/s390.h (enum processor_flags): Add PF_ARCH12 and
+ 	PF_VXE.
+ 	(s390_tune_attr): Use z13 scheduling also for arch12.
+ 	(TARGET_CPU_ARCH12, TARGET_CPU_ARCH12_P, TARGET_CPU_VXE)
+ 	(TARGET_CPU_VXE_P, TARGET_ARCH12, TARGET_ARCH12_P, TARGET_VXE)
+ 	(TARGET_VXE_P): New macros.
+ 	* config/s390/s390.md: Add arch12 to cpu attribute.  Add arch12
+ 	and vxe to cpu_facility.  Add arch12 and vxe to enabled attribute.
+ 	* config/s390/s390.opt: Add arch12 as processor_type.
+ 
+ 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	* config/s390/s390.md
+ 	("fixuns_truncdddi2", "fixuns_trunctddi2")
+ 	("fixuns_trunc<BFP:mode><GPR:mode>2"): Merge into ...
+ 	("fixuns_trunc<FP:mode><GPR:mode>2"): New expander.
+ 
+ 	("fixuns_trunc<BFP:mode><GPR:mode>2", "fixuns_trunc<mode>si2"):
+ 	Rename expanders to ...
+ 
+ 	("fixuns_trunc<BFP:mode><GPR:mode>2_emu")
+ 	("fixuns_truncdddi2_emu"): ... these.
+ 
+ 	("fixuns_trunc<mode>si2_emu"): New expander.
+ 
+ 	("*fixuns_truncdfdi2_z13"): Rename to ...
+ 	("*fixuns_truncdfdi2_vx"): ... this.
+ 
+ 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	* config/s390/2964.md: Remove the single element vector compare
+ 	instructions which are no longer used.
+ 	* config/s390/s390.c (s390_select_ccmode): Remove handling of
+ 	vector CCmodes.
+ 	(s390_canonicalize_comparison): Remove handling of DFmode
+ 	compares.
+ 	(s390_expand_vec_compare_scalar): Remove function.
+ 	(s390_emit_compare): Don't call s390_expand_vec_compare_scalar.
+ 	* config/s390/s390.md ("*vec_cmp<insn_cmp>df_cconly"): Remove
+ 	pattern.
+ 	("*cmp<mode>_ccs"): Add wfcdb instruction.
+ 
+ 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	* config/s390/s390.md ("mov<mode>_64dfp" DD_DF): Use vleig for loading a
+ 	FP zero.
+ 	("*mov<mode>_64" DD_DF): Remove the vector instructions. These
+ 	will anyway by matched by mov<mode>_64dfp.
+ 
+ 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	* config/s390/s390.md ("mov<mode>" SD_SF): Change vleg/vsteg to
+ 	vlef/vstef.  Add missing operand to vleif.
+ 
+ 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	* config/s390/s390.c (s390_expand_vec_init): Enable vector load
+ 	pair for all vector types with 64 bit elements.
+ 	* config/s390/vx-builtins.md (V_HW_64): Move mode iterator to ...
+ 	* config/s390/vector.md (V_HW_64): ... here.
+ 	(V_128_NOSINGLE): New mode iterator.
+ 	("vec_init<V_HW:mode>"): Use V_128 as mode iterator.
+ 	("*vec_splat<mode>"): Use V_128_NOSINGLE mode iterator.
+ 	("*vec_tf_to_v1tf", "*vec_ti_to_v1ti"): New pattern definitions.
+ 	("*vec_load_pairv2di"): Change to ...
+ 	("*vec_load_pair<mode>"): ... this one.
+ 
+ 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	* config/s390/constraints.md: Add comments.
+ 	(jKK): Reject element sizes > 8 bytes.
+ 	* config/s390/s390.c (s390_split_ok_p): Enable splitting also for
+ 	s_operands.
+ 	* config/s390/s390.md: Add the s_operand checks formerly in
+ 	s390_split_ok_p to various splitters where they are still
+ 	required.
+ 	* config/s390/vector.md ("mov<mode>" V_128): Add GPR alternatives
+ 	for 128 bit vectors.  Plus two splitters.
+ 
+ 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	* config/s390/s390.md: Rename the cpu facilty vec to vx throughout
+ 	the file.
+ 
+ 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	PR target/79893
+ 	* config/s390/s390-c.c (s390_adjust_builtin_arglist): Issue an
+ 	error if the boundary argument is not constant.
+ 
+ 2017-03-24  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/80112
+ 	* loop-doloop.c (doloop_condition_get): Don't check condition
+ 	if cmp isn't SET with IF_THEN_ELSE src.
+ 
+ 2017-03-24  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	PR tree-optimization/80158
+ 	* gimple-ssa-strength-reduction.c (replace_mult_candidate): When
+ 	replacing a candidate statement, also replace it for the
+ 	candidate's alternate interpretation.
+ 	(replace_rhs_if_not_dup): Likewise.
+ 	(replace_one_candidate): Likewise.
+ 
+ 2017-03-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/80167
+ 	* graphite-isl-ast-to-gimple.c
+ 	(translate_isl_ast_to_gimple::is_valid_rename): Handle default-defs
+ 	properly.
+ 	(translate_isl_ast_to_gimple::get_rename): Likewise.
+ 
+ 2017-03-23  Kelvin Nilsen  <kelvin@gcc.gnu.org>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_option_override_internal): Change
+ 	handling of certain combinations of target options, including the
+ 	combinations -mpower8-vector vs. -mno-vsx, -mpower9-vector vs.
+ 	-mno-power8-vector, and -mpower9_dform vs. -mno-power9-vector.
+ 
+ 2017-03-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	PR target/71436
+ 	* config/arm/arm.md (*load_multiple): Add reload_completed to
+ 	matching condition.
+ 
+ 2017-03-23  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 	    Richard Biener  <rguenth@suse.de>
+ 
+ 	PR tree-optimization/79908
+ 	PR tree-optimization/80136
+ 	* tree-stdarg.c (expand_ifn_va_arg_1): For a VA_ARG whose LHS has
+ 	been cast away, gimplify_and_add suffices.
+ 
+ 2017-03-23  Markus Trippelsdorf  <markus@trippelsdorf.de>
+ 
+ 	* tree-vrp.c (identify_jump_threads): Delete avail_exprs.
+ 
+ 2017-03-23  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/80032
+ 	* gimplify.c (gimple_push_cleanup): Forced unconditional
+ 	cleanups still have to go to the conditional_cleanups
+ 	sequence.
+ 
+ 2017-03-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/80072
+ 	* tree-ssa-reassoc.c (struct operand_entry): Change id field type
+ 	to unsigned int.
+ 	(next_operand_entry_id): Change type to unsigned int.
+ 	(sort_by_operand_rank): Make sure to return the right return value
+ 	even if unsigned fields are bigger than INT_MAX.
+ 	(struct oecount): Change cnt and id type to unsigned int.
+ 	(oecount_hasher::equal): Formatting fix.
+ 	(oecount_cmp): Make sure to return the right return value
+ 	even if unsigned fields are bigger than INT_MAX.
+ 	(undistribute_ops_list): Change next_oecount_id type to unsigned int.
+ 
+ 	PR c++/80129
+ 	* gimplify.c (gimplify_modify_expr_rhs) <case COND_EXPR>: Clear
+ 	TREE_READONLY on result if writing it more than once.
+ 
+ 	PR sanitizer/80110
+ 	* doc/invoke.texi (-fsanitize=thread): Document that with
+ 	-fnon-call-exceptions atomics are not able to throw
+ 	exceptions.
+ 
+ 	PR sanitizer/80110
+ 	* tsan.c: Include tree-eh.h.
+ 	(instrument_builtin_call): Call maybe_clean_eh_stmt or
+ 	maybe_clean_or_replace_eh_stmt where needed.
+ 	(instrument_memory_accesses): Add cfg_changed argument.
+ 	Call gimple_purge_dead_eh_edges on each block and set *cfg_changed
+ 	if it returned true.
+ 	(tsan_pass): Adjust caller.  Return TODO_cleanup_cfg if cfg_changed.
+ 
+ 	PR rtl-optimization/63191
+ 	* config/i386/i386.c (ix86_delegitimize_address): Turn into small
+ 	wrapper function, moved the whole old content into ...
+ 	(ix86_delegitimize_address_1): ... this.  New inline function.
+ 	(ix86_find_base_term): Use ix86_delegitimize_address_1 with
+ 	true as last argument instead of ix86_delegitimize_address.
+ 
+ 2017-03-22  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (generic_branch_cost): Copy
+ 	cortexa57_branch_cost.
+ 
+ 2017-03-22  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (generic_tunings): Add AES fusion.
+ 
+ 2017-03-21  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
+ 
+ 	PR target/80123
+ 	* doc/md.texi (Constraints): Document wA constraint.
+ 	* config/rs6000/constraints.md (wA): New.
+ 	* config/rs6000/rs6000.c (rs6000_debug_reg_global): Add wA reg_class.
+ 	(rs6000_init_hard_regno_mode_ok): Init wA constraint.
+ 	* config/rs6000/rs6000.h (RS6000_CONSTRAINT_wA): New.
+ 	* config/rs6000/vsx.md (vsx_splat_<mode>): Use wA constraint.
+ 
+ 2017-03-22  Cesar Philippidis  <cesar@codesourcery.com>
+ 
+ 	PR c++/80029
+ 	* gimplify.c (is_oacc_declared): New function.
+ 	(oacc_default_clause): Use it to set default flags for acc declared
+ 	variables inside parallel regions.
+ 	(gimplify_scan_omp_clauses): Strip firstprivate pointers for acc
+ 	declared variables.
+ 	(gimplify_oacc_declare): Gimplify the declare clauses.  Add the
+ 	declare attribute to any decl as necessary.
+ 
+ 2017-03-22  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	PR target/80082
+ 	* config/arm/arm-isa.h (isa_bit_lpae): New feature bit.
+ 	(ISA_ARMv7ve): Add isa_bit_lpae to the definition.
+ 	* config/arm/arm-protos.h (arm_arch7ve): Rename into ...
+ 	(arm_arch_lpae): This.
+ 	* config/arm/arm.c (arm_arch7ve): Rename into ...
+ 	(arm_arch_lpae): This.  Define it in term of isa_bit_lpae.
+ 	* config/arm/arm.h (TARGET_HAVE_LPAE): Redefine in term of
+ 	arm_arch_lpae.
+ 
+ 2017-03-22  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR target/79906
+ 	* config/rs6000/rs6000.c (rs6000_inner_target_options): Show
+ 	error message instead of an ICE.
+ 
+ 2017-03-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	* doc/extend.texi (6.11 Additional Floating Types): Revise.
+ 
+ 2017-03-21  Kelvin Nilsen  <kelvin@gcc.gnu.org>
+ 
+ 	* config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Add
+ 	comments.
+ 	* config/rs6000/rs6000.c (rs6000_option_override_internal): Add
+ 	comments.
+ 
+ 2017-03-21  Martin Sebor  <msebor@redhat.com>
+ 
+ 	* doc/extend.texi: Use "cannot" instead of "can't."
+ 	* doc/hostconfig.texi: Same.
+ 	* doc/install.texi: Same.
+ 	* doc/invoke.texi: Same.
+ 	* doc/loop.texi: Same.
+ 	* doc/md.texi: Same.
+ 	* doc/objc.texi: Same.
+ 	* doc/rtl.texi: Same.
+ 	* doc/tm.texi: Same.
+ 	* doc/tm.texi.in: Same.
+ 	* doc/trouble.texi: Same.
+ 
+ 2017-03-21  Alexandre Oliva  <aoliva@redhat.com>
+ 
+ 	PR debug/63238
+ 	* dwarf2out.c (struct checksum_attributes): Add at_alignment.
+ 	(collect_checksum_attributes): Set it.
+ 	(die_checksum_ordered): Use it.
+ 
+ 2017-03-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	PR tree-optimization/79908
+ 	* tree-stdarg.c (expand_ifn_va_arg_1): Revert the following
+ 	change: For a VA_ARG whose LHS has been cast away, use
+ 	force_gimple_operand to construct the side effects.
+ 
+ 2017-03-21  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR translation/80001
+ 	* omp-offload.c (oacc_loop_fixed_partitions): Make diagnostics
+ 	more amenable to translation.
+ 	(oacc_loop_auto_partitions): Likewise.
+ 
+ 2017-03-21  Marek Polacek  <polacek@redhat.com>
+ 	    Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR tree-optimization/80109
+ 	* gimple-ssa-warn-alloca.c (alloca_call_type): Only call get_range_info
+ 	on INTEGRAL_TYPE_P.
+ 
+ 2017-03-21  Jakub Jelinek  <jakub@redhat.com>
+ 	    Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR target/80125
+ 	* combine.c (can_combine_p): Revert the 2017-03-20 change, only
+ 	check reg_used_between_p between insn and one of succ or succ2
+ 	depending on if succ is artificial insn not inserted into insn
+ 	stream.
+ 
+ 2017-03-21  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR gcov-profile/80081
+ 	* Makefile.in: Add gcov-dump and fix installation of gcov-tool.
+ 	* doc/gcc.texi: Include gcov-dump stuff.
+ 	* doc/gcov-dump.texi: New file.
+ 
+ 2017-03-21  Toma Tabacu  <toma.tabacu@imgtec.com>
+ 
+ 	PR rtl-optimization/79150
+ 	* config/mips/mips.c (mips_block_move_loop): Emit a NOP after the
+ 	conditional jump, if the jump is the last insn of the loop.
+ 
+ 2017-03-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 	    Richard Biener  <rguenth@suse.de>
+ 
+ 	PR tree-optimization/79908
+ 	* tree-stdarg.c (expand_ifn_va_arg_1): For a VA_ARG whose LHS has
+ 	been cast away, use force_gimple_operand to construct the side
+ 	effects.
+ 
+ 2017-03-21  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR libfortran/79956
+ 	* simplify-rtx.c (simplify_immed_subreg): Initialize a variable
+ 	to NULL.
+ 
+ 2017-03-21  Brad Spengler <spender@grsecurity.net>
+ 
+ 	PR plugins/80094
+ 	* plugin.c (htab_hash_plugin): New function.
+ 	(add_new_plugin): Use it and adjust.
+ 	(parse_plugin_arg_opt): Adjust.
+ 	(init_one_plugin): Likewise.
+ 
+ 2017-03-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/80032
+ 	* gimplify.c (gimple_push_cleanup): Add force_uncond parameter,
+ 	if set force the cleanup to happen unconditionally.
+ 	(gimplify_target_expr): Push inserted clobbers with force_uncond
+ 	to avoid them being removed by control-dependent DCE.
+ 
+ 2017-03-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/80122
+ 	* tree-inline.c (copy_bb): Do not expans va-arg packs or
+ 	va_arg_pack_len when the inlined call stmt requires pack
+ 	expansion itself.
+ 	* tree-inline.h (struct copy_body_data): Make call_stmt a gcall *.
+ 
+ 2017-03-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/78158
+ 	* tsan.c (instrument_builtin_call): If the memory model argument
+ 	is not a constant, assume it is valid.
+ 
+ 	PR c/67338
+ 	* fold-const.c (round_up_loc): Negate divisor in unsigned type to
+ 	avoid UB.
+ 
+ 2017-03-20  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR rtl-optimization/79910
+ 	* combine.c (can_combine_p): Do not allow combining an I0 or I1
+ 	if its dest is used by an insn before I2 (other than the combined
+ 	insns themselves, which are properly handled already).
+ 
+ 2017-03-20  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	Revert:
+ 	2017-03-17  Bernd Schmidt  <bschmidt@redhat.com>
+ 
+ 	* combine.c (record_used_regs): New static function.
+ 	(try_combine): Handle situations where there is an additional
+ 	instruction between I2 and I3 which needs to have a LOG_LINK
+ 	updated.
+ 
+ 	Revert:
+ 	2017-03-17  Jim Wilson  <jim.wilson@linaro.org>
+ 
+ 	* combine.c (try_combine): Delete redundant i1 test.  Call
+ 	prev_nonnote_nondebug_insn instead of prev_nonnote_insn.
+ 
+ 2017-03-20  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
+ 
+ 	PR target/80083
+ 	* config/rs6000/rs6000.md (*movsi_internal1): Fix constraints for
+ 	alternatives 13/14.
+ 
+ 2017-03-20  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	PR tree-optimization/80054
+ 	* gimple-ssa-strength-reduction.c (all_phi_incrs_profitable): Fail
+ 	the optimization if a PHI or any of its arguments is not dominated
+ 	by the candidate's basis.  Use gphi* rather than gimple* as
+ 	appropriate.
+ 	(replace_profitable_candidates): Clean up a gimple* variable that
+ 	should be a gphi* variable.
+ 
+ 2017-03-20  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR c++/52477
+ 	* doc/extend.texi (attribute constructor): Document present limitation.
+ 
+ 2017-03-20  Kelvin Nilsen  <kelvin@gcc.gnu.org>
+ 
+ 	PR target/79963
+ 	* config/rs6000/altivec.h (vec_all_ne): Under __cplusplus__ and
+ 	__POWER9_VECTOR__ #ifdef control, change template definition to
+ 	use Power9-specific built-in function.
+ 	(vec_any_eq): Likewise.
+ 	* config/rs6000/vector.md (vector_ae_v2di_p): Change the flag used
+ 	to control outcomes from this test.
+ 	(vector_ae_<mode>p): For VEC_F modes, likewise.
+ 
+ 2017-03-20  Ian Lance Taylor  <iant@google.com>
+ 
+ 	* config/i386/i386.c (ix86_function_regparm): Save an extra
+ 	register for -fsplit-stack with DECL_STATIC_CHAIN.
+ 
+ 2017-03-17  Palmer Dabbelt  <palmer@dabbelt.com>
+ 
+ 	PR target/79912
+ 	* config/riscv/riscv.c (riscv_preferred_reload_class): Remove.
+ 	(TARGET_PREFERRED_RELOAD_CLASS): Likewise.
+ 
+ 2017-03-17  Palmer Dabbelt  <palmer@dabbelt.com>
+ 
+ 	* config/riscv/riscv.c (riscv_print_operand): Use "fence
+ 	iorw,ow".
+ 	* config/riscv/sync.mc (mem_thread_fence_1): Use "fence
+ 	iorw,iorw".
+ 
+ 2017-03-20  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR sanitizer/80063
+ 	* asan.c (DEF_SANITIZER_BUILTIN): Use do { } while (0).
+ 
+ 2017-03-20  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/80113
+ 	* graphite-isl-ast-to-gimple.c (copy_loop_phi_nodes): Do not
+ 	allocate extra SSA name for PHI def.
+ 	(add_close_phis_to_outer_loops): Likewise.
+ 	(add_close_phis_to_merge_points): Likewise.
+ 	(copy_loop_close_phi_args): Likewise.
+ 	(copy_cond_phi_nodes): Likewise.
+ 
+ 2017-03-20  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR middle-end/79753
+ 	* tree-chkp.c (chkp_build_returned_bound): Do not build
+ 	returned bounds for a LHS that's not a BOUNDED_P type.
+ 
+ 2017-03-20  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR target/79769
+ 	PR target/79770
+ 	* tree-chkp.c (chkp_find_bounds_1): Handle REAL_CST,
+ 	COMPLEX_CST and VECTOR_CST.
+ 
+ 2017-03-20  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	PR target/78857
+ 	* config/s390/s390.md ("cmp<mode>_ccs_0"): Add a clobber of the
+ 	target operand.  A new splitter adds the clobber statement in case
+ 	the target operand is dead anyway.
+ 
+ 2017-03-19  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* doc/install.texi (Specific) <sparc-*-linux*>: No longer refer
+ 	to age-old versions of binutils and glibc.
+ 
+ 2017-03-18  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* doc/contrib.texi (Contributors): Remove duplicate entry for myself.
+ 
+ 2017-03-18  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* doc/contrib.texi (Contributors): Add Segher Boessenkool.
+ 
+ 2017-03-18  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* doc/install.texi (Specific) <arm-*-eabi>: Remove old
+ 	requirement for binutils 2.13.
+ 
+ 2017-03-17  Jim Wilson  <jim.wilson@linaro.org>
+ 
+ 	* combine.c (try_combine): Delete redundant i1 test.  Call
+ 	prev_nonnote_nondebug_insn instead of prev_nonnote_insn.
+ 
+ 2017-03-17  Palmer Dabbelt  <palmer@dabbelt.com
+ 
+ 	* doc/install.texi (Specific) <riscv32-*-elf>: Add riscv32-*-elf,
+ 	riscv32-*-linux, riscv64-*-elf, riscv64-*-linux to the table of
+ 	contents.
+ 	<riscv64-*-elf>: Re-arrange section
+ 	<riscv32-*-elf>: Add a note about requiring binutils 2.28.
+ 	<riscv32-*-linux>: Likewise.
+ 	<riscv64-*-elf>: Likewise
+ 	<riscv64-*-linux>: Likewise.
+ 
+ 2017-03-17  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR target/80052
+ 	* aarch64.opt(verbose-cost-dump): Fix typo.
+ 
+ 2017-03-17  Pat Haugen  <pthaugen@us.ibm.com>
+ 
+ 	PR target/79951
+ 	* config/rs6000/rs6000.md (copysign<mode>3_fcpsgn): Test
+ 	for VECTOR_UNIT_VSX_P (<MODE>mode) too.
+ 
+ 2017-03-17  Bernd Schmidt  <bschmidt@redhat.com>
+ 
+ 	* reload.c (find_reloads): When reloading a nonoffsettable address,
+ 	use RELOAD_OTHER for it and its address reloads.
+ 
+ 	PR rtl-optimization/79910
+ 	* combine.c (record_used_regs): New static function.
+ 	(try_combine): Handle situations where there is an additional
+ 	instruction between I2 and I3 which needs to have a LOG_LINK
+ 	updated.
+ 
+ 2017-03-17  Jeff Law  <law@redhat.com>
+ 
+ 	PR tree-optimization/71437
+ 	* tree-vrp.c (simplify_stmt_for_jump_threading): Lookup the
+ 	conditional in the hash table first.
+ 	(vrp_dom_walker::before_dom_children): Extract condition from
+ 	ASSERT_EXPR.  Record condition, its inverion and any implied
+ 	conditions as well.
+ 
+ 2017-03-17  Marek Polacek  <polacek@redhat.com>
+ 	    Markus Trippelsdorf  <markus@trippelsdorf.de>
+ 
+ 	PR tree-optimization/80079
+ 	* gimple-ssa-store-merging.c (class pass_store_merging): Initialize
+ 	m_stores_head.
+ 
+ 2017-03-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/80075
+ 	* tree-eh.c (stmt_could_throw_1_p): Only handle gimple assigns.
+ 	Properly verify the LHS before the RHS possibly claims to be
+ 	handled.
+ 	(stmt_could_throw_p): Hande gimple conds fully here.  Clobbers
+ 	do not throw.
+ 
+ 2017-03-17  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* doc/invoke.texi (Option Options): Include -fipa-vrp in the list.
+ 	(List of -O2 options): Likewise.
+ 	(-fipa-bit-cp): Replace "ipa" with "interprocedural."
+ 	(-fipa-vrp) New.
+ 
+ 2017-03-17  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	* gcov-dump.c (print_usage): Print bug_report_url.
+ 
+ 2017-03-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/80050
+ 	* genmatch.c (parser::next): Remove pointless check for CPP_EOF.
+ 	(parser::peek): Likewise.
+ 
+ 2017-03-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/80048
+ 	* sese.c (free_sese_info): Properly release rename_map and
+ 	copied_bb_map elements.
+ 
+ 2017-03-16  Alexandre Oliva  <aoliva@redhat.com>
+ 
+ 	* gimple-ssa-store-merging.c (struct imm_store_chain_info):
+ 	Add linked-list forward and backlinks.  Insert on
+ 	construction, remove on destruction.
+ 	(class pass_store_merging): Add m_stores_head field.
+ 	(pass_store_merging::terminate_and_process_all_chains):
+ 	Iterate over m_stores_head list.
+ 	(pass_store_merging::terminate_all_aliasing_chains):
+ 	Likewise.
+ 	(pass_store_merging::execute): Check for debug stmts first.
+ 	Push new chains onto the m_stores_head stack.
+ 
+ 2017-03-16  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	PR target/71294
+ 	* config/rs6000/vsx.md (vsx_splat_<mode>, VSX_D iterator): Allow a
+ 	SPLAT operation on ISA 2.07 64-bit systems that have direct move,
+ 	but no MTVSRDD support, by doing MTVSRD and XXPERMDI.
+ 
+ 2017-03-16  Jeff Law  <law@redhat.com>
+ 
+ 	PR tree-optimization/71437
+ 	* tree-ssa-dom.c (dom_opt_dom_walker): Remove thread_across_edge
+ 	member function.  Implementation moved into after_dom_children
+ 	member function and into the threader's thread_outgoing_edges
+ 	function.
+ 	(dom_opt_dom_walker::after_dom_children): Simplify by moving
+ 	some code into new thread_outgoing_edges.
+ 	* tree-ssa-threadedge.c (thread_across_edge): Make static and simplify
+ 	definition.  Simplify marker handling (do it here).   Assume we always
+ 	have the available expression and the const/copies tables.
+ 	(thread_outgoing_edges): New function extracted from tree-ssa-dom.c
+ 	and tree-vrp.c
+ 	* tree-ssa-threadedge.h (thread_outgoing_edges): Declare.
+ 	* tree-vrp.c (equiv_stack): No longer file scoped.
+ 	(vrp_dom_walker): New class.
+ 	(vrp_dom_walker::before_dom_children): New member function.
+ 	(vrp_dom_walker::after_dom_children): Likewise.
+ 	(identify_jump_threads):  Setup domwalker.  Use it rather than
+ 	walking edges in a random order by hand.  Simplify setup/finalization.
+ 	(finalize_jump_threads): Remove.
+ 	(vrp_finalize): Do not call identify_jump_threads here.
+ 	(execute_vrp): Do it here instead and call thread_through_all_blocks
+ 	here too.
+ 
+ 	PR tree-optimization/71437
+ 	* tree-ssa-dom.c (pfn_simplify): Add basic_block argument.  All
+ 	callers changed.
+ 	(simplify_stmt_for_jump_threading): Add basic_block argument.  All
+ 	callers changed.
+ 	(lhs_of_dominating_assert): Moved from here into tree-vrp.c.
+ 	(dom_opt_dom_walker::thread_across_edge): Remove
+ 	handle_dominating_asserts argument.  All callers changed.
+ 	(record_temporary_equivalences_from_stmts_at_dest): Corresponding
+ 	changes.  Remove calls to lhs_of_dominating_assert.  Other
+ 	uses of handle_dominating_asserts turn into unconditional code
+ 	(simplify_control_stmt_condition_1): Likewise.
+ 	(simplify_control_stmt_condition): Likewise.
+ 	(thread_through_normal_block, thread_across_edge): Likewise.
+ 	* tree-ssa-threadedge.h (thread_across_edge): Corresponding changes.
+ 	* tree-vrp.c (lhs_of_dominating_assert): Move here.  Return original
+ 	object if it is not an SSA_NAME.
+ 	(simplify_stmt_for_jump_threading): Call lhs_of_dominating_assert
+ 	before calling into the VRP specific simplifiers.
+ 	(identify_jump_threads): Remove handle_dominating_asserts
+ 	argument.
+ 
+ 2017-03-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR fortran/79886
+ 	* tree-diagnostic.c (default_tree_printer): No longer static.
+ 	* tree-diagnostic.h (default_tree_printer): New prototype.
+ 
+ 2017-03-16  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* config/aarch64/aarch64-simd.md (*aarch64_simd_mov<mode>)
+ 	Change ins into fmov.
+ 
+ 2017-03-16  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* config/aarch64/iterators.md (h_con): Return "x" for V4HF and V8HF.
+ 	* config/aarch64/aarch64-simd.md (*aarch64_fma4_elt_from_dup<mode>):
+ 	Use h_con constraint for operand 1.
+ 	(*aarch64_fnma4_elt_from_dup<mode>): Likewise.
+ 	(*aarch64_mulx_elt_from_dup<mode>): Likewise for operand 2.
+ 
+ 2017-03-15  Jeff Law  <law@redhat.com>
+ 
+ 	PR tree-optimization/71437
+ 	* tree-ssa-dom.c (derive_equivalences_from_bit_ior): New function.
+ 	(record_temporary_equivalences): Use it.
+ 
+ 	PR tree-optimization/71437
+ 	* tree-ssa-dom.c (struct cond_equivalence): Moved from here into
+ 	tree-ssa-scopedtables.
+ 	(lookup_avail_expr, build_and_record_new_cond): Likewise.
+ 	(record_conditions, record_cond, vuse_eq): Likewise.
+ 	(record_edge_info): Adjust to API tweak of record_conditions.
+ 	(simplify_stmt_for_jump_threading): Similarly for lookup_avail_expr.
+ 	(record_temporary_equivalences, optimize_stmt): Likewise.
+ 	(eliminate_redundant_computations): Likewise.
+ 	(record_equivalences_from_stmt): Likewise.
+ 	* tree-ssa-scopedtables.c: Include options.h and params.h.
+ 	(vuse_eq): New function, moved from tree-ssa-dom.c
+ 	(build_and_record_new_cond): Likewise.
+ 	(record_conditions): Likewise.  Accept vector of conditions rather
+ 	than edge_equivalence structure for first argument.
+ 	for the first argument.
+ 	(avail_exprs_stack::lookup_avail_expr): New member function, moved
+ 	from tree-ssa-dom.c.
+ 	(avail_exprs_stack::record_cond): Likewise.
+ 	* tree-ssa-scopedtables.h (struct cond_equivalence): Moved here
+ 	from tree-ssa-dom.c.
+ 	(avail_exprs_stack): Add new member functions lookup_avail_expr
+ 	and record_cond.
+ 	(record_conditions): Declare.
+ 
+ 2017-03-15  Vladimir Makarov  <vmakarov@redhat.com>
+ 
+ 	PR target/80017
+ 	* lra-constraints.c (process_alt_operands): Increase reject for
+ 	reloading an input/output operand.
+ 
+ 2017-03-15  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	PR target/79038
+ 	* config/rs6000/rs6000.md (float<QHI:mode><IEEE128:mode>2): Define
+ 	insns to convert from signed/unsigned char/short to IEEE 128-bit
+ 	floating point.
+ 	(floatuns<QHI:mode><IEEE128:mode>2): Likewise.
+ 
+ 2017-03-15  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/80019
+ 	* config/i386/i386.c (ix86_vector_duplicate_value): Create
+ 	subreg of inner mode for values already in registers.
+ 
+ 2017-03-15  Bernd Schmidt  <bschmidt@redhat.com>
+ 
+ 	* config/c6x/c6x.c (hwloop_optimize): Handle case where the old
+ 	iteration reg is used after the loop.
+ 
+ 2017-03-14  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR tree-optimization/79800
+ 	* gimple-ssa-sprintf.c (format_floating: Add argument.  Handle
+ 	precision in negative-positive range.
+ 	(format_floating): Call non-const overload with adjusted precision.
+ 
+ 2017-03-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	PR target/79947
+ 	* config/rs6000/rs6000.h (TARGET_FRSQRTES): Add check for
+ 	-mpowerpc-gfxopt.
+ 
+ 2017-03-14  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/80020
+ 	* builtin-attrs.def (ATTR_ALLOC_SIZE_2_NOTHROW_LIST): New macro.
+ 	* builtins.def (aligned_alloc): Use it.
+ 
+ 	PR c/79936
+ 	* Makefile.in (GTFILES): Add calls.c.
+ 	* calls.c: Include "gt-calls.h".
+ 
+ 2017-03-14  Bernd Schmidt  <bschmidt@redhat.com>
+ 
+ 	PR rtl-optimization/79728
+ 	* regs.h (struct target_regs): New field
+ 	x_contains_allocatable_regs_of_mode.
+ 	(contains_allocatable_regs_of_mode): New macro.
+ 	* reginfo.c (init_reg_sets_1): Initialize it, and change
+ 	contains_reg_of_mode so it includes global regs as well.
+ 	* reload.c (push_reload): Use contains_allocatable_regs_of_mode
+ 	rather than contains_regs_of_mode.
+ 
+ 2017-03-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/invoke.texi: Document options that can't be combined with
+ 	-fcheck-pointer-bounds.
+ 
+ 2017-03-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR middle-end/79831
+ 	* doc/invoke.texi (-Wchkp): Document the option.
+ 
+ 2017-03-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	* Makefile.in: Install gcov-dump.
+ 
+ 2017-03-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	* multiple_target.c (expand_target_clones): Bail out for
+ 	an invalid attribute.
+ 
+ 2017-03-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	* alias.c (struct alias_set_entry): Pack properly.
+ 	* cfgloop.h (struct loop): Likewise.
+ 	* cse.c (struct set): Likewise.
+ 	* ipa-utils.c (struct searchc_env): Likewise.
+ 	* loop-invariant.c (struct invariant): Likewise.
+ 	* lra-remat.c (struct cand): Likewise.
+ 	* recog.c (struct change_t): Likewise.
+ 	* rtl.h (struct address_info): Likewise.
+ 	* symbol-summary.h (function_summary): Likewise.
+ 	* tree-loop-distribution.c (struct partition): Likewise.
+ 	* tree-object-size.c (struct object_size_info): Likewise.
+ 	* tree-ssa-loop-ivopts.c (struct cost_pair): Likewise.
+ 	* tree-ssa-threadupdate.c (struct ssa_local_info_t): Likewise.
+ 	* tree-vect-data-refs.c (struct _vect_peel_info): Likewise.
+ 	* tree-vect-slp.c (struct _slp_oprnd_info): Likewise.
+ 	* tree-vect-stmts.c (struct simd_call_arg_info): Likewise.
+ 	* tree-vectorizer.h (struct _loop_vec_info): Likewise.
+ 	(struct _stmt_vec_info): Likewise.
+ 
+ 2017-03-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR target/79892
+ 	* multiple_target.c (create_dispatcher_calls): Check that
+ 	a target can create a function dispatcher.
+ 
+ 2017-03-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR lto/66295
+ 	* multiple_target.c (expand_target_clones): Drop local.local
+ 	flag for default implementation.
+ 
+ 2017-03-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/80030
+ 	* tree-vect-stmts.c (vectorizable_store): Plug memleak.
+ 
+ 2017-03-13  Kito Cheng  <kito.cheng@gmail.com>
+ 
+ 	* config/riscv/riscv.c (riscv_emit_float_compare>: Use
+ 	gcc_fallthrough() instead of __attribute__((fallthrough));
+ 
+ 2017-03-13  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* doc/gcc.texi: Remove "up" link to (DIR).
+ 	* doc/gccint.texi: Ditto.
+ 
+ 2017-03-13  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* doc/install.texi (Specific) <avr>: Remove reference to
+ 	binutils 2.13.
+ 
+ 2017-03-13  Jeff Law  <law@redhat.com>
+ 
+ 	* config/riscv/riscv.c (riscv_emit_float_compare): Use fallthru
+ 	attribute rather than comments.
+ 
+ 	* config/pdp11/pdp11.md (movmemhi): Adjust operand numbers to
+ 	match_scratch operand is highest.
+ 
+ 2017-03-13  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR middle-end/78339
+ 	* ipa-pure-const.c (warn_function_noreturn): If the declarations
+ 	is a CHKP clone, use original declaration.
+ 
+ 2017-03-13  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.c (arc_init): Use multiplier whenever we have it.
+ 	(arc_conditional_register_usage): Use a different allocation order
+ 	when optimizing for size.
+ 	* common/config/arc/arc-common.c (arc_option_optimization_table):
+ 	Section anchors default on when optimizing for size.
+ 
+ 2017-03-13  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.md (*tst_bitfield_tst): Fix pattern.
+ 
+ 2017-03-13  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.c (arc_output_addsi): Emit code density adds.
+ 	* config/arc/arc.md (cpu_facility): Add cd variant.
+ 	(*movqi_insn): Add code density variant.
+ 	(*movhi_insn): Likewise.
+ 	(*movqi_insn): Likewise.
+ 	(*addsi3_mixed): Likewise.
+ 	(subsi3_insn): Likewise.
+ 
+ 2017-03-13  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.md (movsi_cond_exec): Update constraint.
+ 
+ 2017-03-13  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.c (arc_legitimize_pic_address): Handle PIC
+ 	expressions with MINUS and UNARY ops.
+ 
+ 2017-03-13  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	PR target/79911
+ 	* config/arm/neon.md (vec_sel_widen_ssum_lo<VQI:mode><VW:mode>3):
+ 	Rename to...
+ 	(vec_sel_widen_ssum_lo<mode><V_half>3): ... This. Avoid mismatch
+ 	between vec_select and vector argument.
+ 	(vec_sel_widen_ssum_hi<VQI:mode><VW:mode>3): Rename to...
+ 	(vec_sel_widen_ssum_hi<mode><V_half>3): ... This. Likewise.
+ 	(vec_sel_widen_usum_lo<VQI:mode><VW:mode>3): Rename to...
+ 	(vec_sel_widen_usum_lo<mode><V_half>3): ... This.
+ 	(vec_sel_widen_usum_hi<VQI:mode><VW:mode>3): Rename to...
+ 	(vec_sel_widen_usum_hi<mode><V_half>3): ... This.
+ 
+ 2017-03-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR other/79991
+ 	* params.def (vect-max-peeling-for-alignment): Fix typo.
+ 
+ 2017-03-12  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* doc/install.texi (Specific) <mips-*-*>: Remove description of
+ 	issue that only occurred with binutils below 2.18.
+ 
+ 2017-03-12  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* doc/install.texi (Specific) <cris-axis-elf>: No longer
+ 	refer to binutils 2.11/2.12 minimum.
+ 
+ 2017-03-12  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* doc/install.texi (Specific) <powerpc-*-*>: Remove link to
+ 	ftp.kernel.org and simplify binutils requirement.
+ 
+ 2017-03-11  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* doc/invoke.texi (Warning Options): Fix spelling of link-time
+ 	optimization.
+ 	(Optimize Options): Ditto.  Also remove redundancy.
+ 
+ 2017-03-10  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR translation/79848
+ 	* ipa-devirt.c (warn_types_mismatch): Simplify uses of "%<%s%>" to
+ 	"%qs".
+ 	* ipa-pure-const.c (suggest_attribute): Likewise.  Convert _
+ 	to G_ to avoid double translation.
+ 
+ 2017-03-10  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR translation/79923
+ 	* auto-profile.c (get_combined_location): Convert leading
+ 	character of diagnostics to lower case and remove trailing period.
+ 	(read_profile): Likewise for various diagnostics.
+ 	* config/arm/arm.c (arm_option_override): Remove trailing period
+ 	from various diagnostics.
+ 	* config/msp430/msp430.c (msp430_expand_delay_cycles): Likewise.
+ 	(msp430_expand_delay_cycles): Likewise.
+ 
+ 2017-03-10  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR target/79925
+ 	* config/aarch64/aarch64.c (aarch64_validate_mcpu): Quote the
+ 	full command-line argument, rather than just "str".
+ 	(aarch64_validate_march): Likewise.
+ 	(aarch64_validate_mtune): Likewise.
+ 
+ 2017-03-10  Bernd Schmidt  <bschmidt@redhat.com>
+ 
+ 	PR rtl-optimization/78911
+ 	* lra-assigns.c (must_not_spill_p): New function.
+ 	(spill_for): Use it.
+ 
+ 2017-03-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/79981
+ 	* tree-vrp.c (extract_range_basic): Handle IMAGPART_EXPR of
+ 	ATOMIC_COMPARE_EXCHANGE ifn result.
+ 	(stmt_interesting_for_vrp, vrp_visit_stmt): Handle
+ 	IFN_ATOMIC_COMPARE_EXCHANGE.
+ 
+ 2017-03-10  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR driver/79875
+ 	* opts.c (parse_sanitizer_options): Add missing question mark to
+ 	"did you mean" message.
+ 
+ 2017-03-10  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	* config/rs6000/rs6000-builtin.def (VMULEUB_UNS): Remove orphaned
+ 	built-in.
+ 	(VMULEUH_UNS): Likewise.
+ 	(VMULOUB_UNS): Likewise.
+ 	(VMULOUH_UNS): Likewise.
+ 	* config/rs6000/rs6000.c (builtin_function_type): Remove
+ 	references to ALTIVEC_BUILTIN_VMUL[EO]U[BH]_UNS.
+ 
+ 2017-03-10  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR bootstrap/79952
+ 	* read-rtl-function.c (function_reader::read_rtx_operand): Update
+ 	x with result of extra_parsing_for_operand_code_0.
+ 	(function_reader::extra_parsing_for_operand_code_0): Convert
+ 	return type from void to rtx, returning x.  When reading
+ 	SYMBOL_REF with SYMBOL_FLAG_HAS_BLOCK_INFO, reallocate x to the
+ 	larger size containing struct block_symbol.
+ 
+ 2017-03-10  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_option_override_internal): Disallow
+ 	-mfloat128-hardware without -m64.
+ 
+ 2017-03-10  Will Schmidt <will_schmidt@vnet.ibm.com>
+ 
+ 	PR target/79941
+ 	* config/rs6000/rs6000.c (builtin_function_type): Add VMUL*U[HB]
+ 	entries to the case statement that marks unsigned arguments to
+ 	overloaded functions.
+ 
+ 2017-03-10  Kelvin Nilsen  <kelvin@gcc.gnu.org>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_option_override_internal): Fix
+ 	two typographic errors in the handling of TARGET_UPPER_REGS_DI.
+ 
+ 2017-03-10  Pat Haugen  <pthaugen@us.ibm.com>
+ 
+ 	PR target/79907
+ 	* config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Test
+ 	TARGET_UPPER_REGS_DI when setting 'wi' constraint regclass.
+ 
+ 2017-03-10  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR target/65705
+ 	PR target/69804
+ 	* toplev.c (process_options): Enable MPX with LSAN and UBSAN.
+ 	* tree-chkp.c (chkp_walk_pointer_assignments): Verify that
+ 	FIELD != NULL.
+ 
+ 2017-03-10  Olivier Hainque  <hainque@adacore.com>
+ 
+ 	* tree-switch-conversion (array_value_type): Start by resetting
+ 	candidate type to it's main variant.
+ 
+ 2017-03-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/79909
+ 	* combine.c (try_combine): Use simplify_replace_rtx on individual
+ 	CALL_INSN_FUNCTION_USAGE elements instead of replace_rtx on copy_rtx
+ 	of the whole CALL_INSN_FUNCTION_USAGE.
+ 
+ 	PR tree-optimization/79972
+ 	* gimple-ssa-warn-alloca.c (alloca_call_type): Only call
+ 	get_range_info on SSA_NAMEs.  Formatting fixes.
+ 
+ 2017-03-10  Richard Biener  <rguenther@suse.de>
+ 	    Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/77975
+ 	* tree-ssa-loop-niter.c (get_base_for): Allow phi argument from latch
+ 	edge to be constant.
+ 	(get_val_for): For constant x return it.  Formatting fix.
+ 	(loop_niter_by_eval): Avoid pointless looping if the next iteration
+ 	would use the same bases as the current one.
+ 
+ 2017-03-09  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_gen_le_vsx_permute): Use rotate
+ 	instead of vec_select for V1TImode.
+ 	* conifg/rs6000/vsx.md (VSX_LE): Remove mode iterator that is no
+ 	longer needed.
+ 	(VSX_LE_128): Add V1TI to this mode iterator.
+ 	(*vsx_le_perm_load_<mode>): Change to use VSX_D mode iterator.
+ 	(*vsx_le_perm_store_<mode>): Likewise.
+ 	(pre-reload splitter for VSX stores): Likewise.
+ 	(post-reload splitter for VSX stores): Likewise.
+ 	(*vsx_xxpermdi2_le_<mode>): Likewise.
+ 	(*vsx_lxvd2x2_le_<mode>): Likewise.
+ 	(*vsx_stxvd2x2_le_<mode>): Likewise.
+ 
+ 2017-03-09  Michael Eager  <eager@eagercon.com>
+ 
+ 	Correct failures with --enable-checking=yes,rtl.
+ 
+ 	* config/microblaze/microblaze.c (microblaze_expand_shift):
+ 	Replace GET_CODE test with CONST_INT_P and INTVAL test with
+ 	test for const0_rtx.
+ 	* config/microblaze/microblaze.md (ashlsi3_byone, ashrsi3_byone,
+ 	lshrsi3_byone): Replace INTVAL with test for const1_rtx.
+ 
+ 2017-03-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/79977
+ 	* graphite-scop-detection.c (scop_detection::merge_sese):
+ 	Handle the case of extra exits to blocks dominating the entry.
+ 
+ 2017-03-09  Toma Tabacu  <toma.tabacu@imgtec.com>
+ 
+ 	* doc/sourcebuild.texi (Effective-Target Keywords, Other attributes):
+ 	Document rdynamic.
+ 
+ 2017-03-09  Vladimir Makarov  <vmakarov@redhat.com>
+ 
+ 	PR rtl-optimization/79949
+ 	* lra-constraints.c (process_alt_operands): Check memory when
+ 	trying to predict a cycle.  Print about the overall increase.
+ 
+ 2017-03-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/79971
+ 	* gimple-expr.c (useless_type_conversion_p): Preserve
+ 	TYPE_SATURATING for fixed-point types.
+ 
+ 2017-03-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR ipa/79970
+ 	* ipa-prop.c (ipa_modify_formal_parameters): Avoid changing
+ 	alignment of BLKmode params.
+ 
+ 2017-03-09  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	PR target/79913
+ 	* config/aarch64/iterators.md (VALL_F16_NO_V2Q): New mode iterator.
+ 	(VALL_NO_V2Q): Likewise.
+ 	(VDQF_DF): Delete.
+ 	* config/aarch64/aarch64-simd.md
+ 	(aarch64_dup_lane_<vswap_width_name><mode>): Use VALL_F16_NO_V2Q
+ 	iterator.
+ 	(*aarch64_simd_vec_copy_lane_<vswap_width_name><mode>): Use
+ 	VALL_NO_V2Q mode iterator.
+ 	(*aarch64_vgetfmulx<mode>): Use VDQF iterator.
+ 
+ 2017-03-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR tree-optimization/79631
+ 	* tree-chkp-opt.c (chkp_is_constant_addr): Call
+ 	tree_int_cst_sign_bit just for INTEGER constants.
+ 
+ 2017-03-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR target/65705
+ 	PR target/69804
+ 	* toplev.c (process_options): Disable -fcheck-pointer-bounds with
+ 	sanitizers.
+ 
+ 2017-03-09  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/79672
+ 	* tree.c (inchash::add_expr): Handle TREE_VEC.
+ 
+ 2017-03-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR ipa/79764
+ 	(chkp_narrow_size_and_offset): New function.
+ 	(chkp_parse_array_and_component_ref): Support BIT_FIELD_REF.
+ 	(void chkp_parse_bit_field_ref): New function.
+ 	(chkp_make_addressed_object_bounds): Add case for BIT_FIELD_REF.
+ 	(chkp_process_stmt): Use chkp_parse_bit_field_ref.
+ 
+ 2017-03-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR ipa/79761
+ 	* tree-chkp.c (chkp_get_bound_for_parm): Get bounds for a param.
+ 	(chkp_find_bounds_1): Remove gcc_unreachable.
+ 
+ 2017-03-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/79944
+ 	* asan.c (get_mem_refs_of_builtin_call): For BUILT_IN_ATOMIC* and
+ 	BUILT_IN_SYNC*, determine the access type from the size suffix and
+ 	always build a MEM_REF with that type.  Handle forgotten
+ 	BUILT_IN_SYNC_FETCH_AND_NAND_16 and BUILT_IN_SYNC_NAND_AND_FETCH_16.
+ 
+ 	PR target/79932
+ 	* config/i386/avx512vlintrin.h (_mm256_cmpge_epi32_mask,
+ 	_mm256_cmpge_epi64_mask, _mm256_cmpge_epu32_mask,
+ 	_mm256_cmpge_epu64_mask, _mm256_cmple_epi32_mask,
+ 	_mm256_cmple_epi64_mask, _mm256_cmple_epu32_mask,
+ 	_mm256_cmple_epu64_mask, _mm256_cmplt_epi32_mask,
+ 	_mm256_cmplt_epi64_mask, _mm256_cmplt_epu32_mask,
+ 	_mm256_cmplt_epu64_mask, _mm256_cmpneq_epi32_mask,
+ 	_mm256_cmpneq_epi64_mask, _mm256_cmpneq_epu32_mask,
+ 	_mm256_cmpneq_epu64_mask, _mm256_mask_cmpge_epi32_mask,
+ 	_mm256_mask_cmpge_epi64_mask, _mm256_mask_cmpge_epu32_mask,
+ 	_mm256_mask_cmpge_epu64_mask, _mm256_mask_cmple_epi32_mask,
+ 	_mm256_mask_cmple_epi64_mask, _mm256_mask_cmple_epu32_mask,
+ 	_mm256_mask_cmple_epu64_mask, _mm256_mask_cmplt_epi32_mask,
+ 	_mm256_mask_cmplt_epi64_mask, _mm256_mask_cmplt_epu32_mask,
+ 	_mm256_mask_cmplt_epu64_mask, _mm256_mask_cmpneq_epi32_mask,
+ 	_mm256_mask_cmpneq_epi64_mask, _mm256_mask_cmpneq_epu32_mask,
+ 	_mm256_mask_cmpneq_epu64_mask, _mm_cmpge_epi32_mask,
+ 	_mm_cmpge_epi64_mask, _mm_cmpge_epu32_mask, _mm_cmpge_epu64_mask,
+ 	_mm_cmple_epi32_mask, _mm_cmple_epi64_mask, _mm_cmple_epu32_mask,
+ 	_mm_cmple_epu64_mask, _mm_cmplt_epi32_mask, _mm_cmplt_epi64_mask,
+ 	_mm_cmplt_epu32_mask, _mm_cmplt_epu64_mask, _mm_cmpneq_epi32_mask,
+ 	_mm_cmpneq_epi64_mask, _mm_cmpneq_epu32_mask, _mm_cmpneq_epu64_mask,
+ 	_mm_mask_cmpge_epi32_mask, _mm_mask_cmpge_epi64_mask,
+ 	_mm_mask_cmpge_epu32_mask, _mm_mask_cmpge_epu64_mask,
+ 	_mm_mask_cmple_epi32_mask, _mm_mask_cmple_epi64_mask,
+ 	_mm_mask_cmple_epu32_mask, _mm_mask_cmple_epu64_mask,
+ 	_mm_mask_cmplt_epi32_mask, _mm_mask_cmplt_epi64_mask,
+ 	_mm_mask_cmplt_epu32_mask, _mm_mask_cmplt_epu64_mask,
+ 	_mm_mask_cmpneq_epi32_mask, _mm_mask_cmpneq_epi64_mask,
+ 	_mm_mask_cmpneq_epu32_mask, _mm_mask_cmpneq_epu64_mask): Move
+ 	definitions outside of __OPTIMIZE__ guarded section.
+ 
+ 	PR target/79932
+ 	* config/i386/avx512bwintrin.h (_mm512_packs_epi32,
+ 	_mm512_maskz_packs_epi32, _mm512_mask_packs_epi32,
+ 	_mm512_packus_epi32, _mm512_maskz_packus_epi32,
+ 	_mm512_mask_packus_epi32): Move definitions outside of __OPTIMIZE__
+ 	guarded section.
+ 
+ 2017-03-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	* config/s390/vx-builtins.md ("vfee<mode>", "vfeez<mode>")
+ 	("vfenez<mode>"): Add missing constraints.
+ 
+ 2017-03-08  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR target/79928
+ 	* config/nds32/nds32.c (nds32_option_override):
+ 	Fix misspelled diagnostic.
+ 
+ 2017-03-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/79940
+ 	* gimplify.c (gimplify_omp_for): Replace index var in outer
+ 	taskloop statement with an artificial variable and add
+ 	OMP_CLAUSE_PRIVATE clause for it.
+ 
+ 2017-03-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/79955
+ 	* tree-ssa-uninit.c (warn_uninitialized_vars): Do not warn
+ 	for accesses that are completely outside of the variable.
+ 
+ 2017-03-08  Andrew Haley  <aph@redhat.com>
+ 
+ 	PR tree-optimization/79943
+ 	* tree-ssa-loop-split.c (compute_new_first_bound): When
+ 	calculating the new upper bound, (END-BEG) should be added, not
+ 	subtracted.
+ 
+ 2017-03-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* config/avr/avr.md (setmemhi): Make sure match_dup
+ 	operand number comes before match_scratch.
+ 
+ 2017-03-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/79920
+ 	* tree-vect-slp.c (vect_create_mask_and_perm): Remove and inline
+ 	with ncopies == 1 to ...
+ 	(vect_transform_slp_perm_load): ... here.  Properly compute
+ 	all element loads by iterating VF times over the group.  Do
+ 	not handle ncopies (computed in a broken way) in
+ 	vect_create_mask_and_perm.
+ 
+ 2017-03-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/79904
+ 	* internal-fn.c (expand_vector_ubsan_overflow): If arg0 or arg1
+ 	is a uniform vector, use uniform_vector_p return value instead of
+ 	building ARRAY_REF on folded VIEW_CONVERT_EXPR to array type.
+ 
+ 2017-03-07  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR middle-end/79809
+ 	* gimple-ssa-warn-alloca.c (pass_walloca::gate): Use HOST_WIDE_INT.
+ 	(alloca_call_type): Likewise.
+ 
+ 2017-03-07  Martin Liska  <mliska@suse.cz>
+ 
+ 	* gcov.c (process_args): Put comment to correct location.
+ 
+ 2017-03-07  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR middle-end/68270
+ 	* tree-chkp.c (chkp_may_narrow_to_field): Add new argument ref.
+ 	Use array_at_struct_end_p instead of DECL_CHAIN (field).
+ 	(chkp_narrow_bounds_for_field): Likewise.
+ 	(chkp_parse_array_and_component_ref): Pass one more argument to
+ 	call.
+ 
+ 2017-03-07  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-loop-manip.c (slpeel_add_loop_guard): Preserve
+ 	preheaders.
+ 
+ 2017-03-07  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/i386/i386.c (ix86_local_alignment): Align most aggregates
+ 	of 16 bytes and more to 16 bytes, not those of 16 bits and more.
+ 
+ 2017-03-07  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	PR c/79855
+ 	* params.def (PARAM_STORE_MERGING_ALLOW_UNALIGNED): Add full stop
+ 	to end of description.
+ 	(PARAM_MAX_STORES_TO_MERGE): Likewise.
+ 
+ 2017-03-07  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/79901
+ 	* config/i386/sse.md (*avx512bw_<code><mode>3<mask_name>): Renamed to
+ 	...
+ 	(*avx512f_<code><mode>3<mask_name>): ... this.
+ 	(<code><mode>3 with maxmin code iterator): Use VI8_AVX2_AVX512F
+ 	iterator instead of VI8_AVX2_AVX512BW.
+ 
+ 	PR rtl-optimization/79901
+ 	* expr.c (expand_expr_real_2): For vector MIN/MAX, if there is no
+ 	min/max expander, expand it using expand_vec_cond_expr.
+ 
+ 	PR sanitizer/79897
+ 	* ubsan.c (ubsan_encode_value): Call mark_addressable on the
+ 	temporary.
+ 
+ 2017-03-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/79821
+ 	* dwarf2out.h (dw_vec_const): Change array type from unsigned char *
+ 	to void * for PCH reasons.
+ 	* dwarf2out.c (output_loc_operands, output_die): Cast
+ 	v.val_vec.array to unsigned char *.
+ 
+ 2017-03-06  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	PR target/77850
+ 	* config/pa/pa-64.h (PAD_VARARGS_DOWN): Don't pad down complex and
+ 	vector types.
+ 
+ 2017-03-06  Vladimir Makarov  <vmakarov@redhat.com>
+ 
+ 	PR rtl-optimization/79571
+ 	* lra-constraints.c (process_alt_operands): Calculate static
+ 	reject and subtract it from overall when only addresses will be
+ 	reloaded.
+ 
+ 2017-03-06  Julia Koval  <julia.koval@intel.com>
+ 
+ 	PR target/79793
+ 	* config/i386/i386.c (ix86_minimum_incoming_stack_boundary): Set
+ 	incoming stack boundary to 128 for 64-bit targets.
+ 
+ 2017-03-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/79894
+ 	* tree-vectorizer.c (vectorize_loops): Set loop_vectorized_call
+ 	to NULL after folding it.
+ 
+ 2017-03-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/79824
+ 	* tree-vect-stmts.c (get_group_load_store_type): Fix alignment
+ 	check disabling peeling for gaps.
+ 
+ 2017-03-06  Toma Tabacu  <toma.tabacu@imgtec.com>
+ 
+ 	* doc/sourcebuild.texi (Effective-Target Keywords, Environment
+ 	attributes): Document gettimeofday.
+ 
+ 2017-03-06  Robin Dapp  <rdapp@linux.vnet.ibm.com>
+ 
+ 	* config/s390/s390.c (s390_option_override_internal): Set
+ 	PARAM_MIN_VECT_LOOP_BOUND
+ 
+ 2017-03-06  Robin Dapp  <rdapp@linux.vnet.ibm.com>
+ 
+ 	* config/s390/s390.c (s390_asm_output_function_label): Use nopr %r0.
+ 	* config/s390/s390.md: Likewise.
+ 
+ 2017-03-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/79812
+ 	* config/i386/sse.md (VI8F_256_512): Remove mode iterator.
+ 	(<avx2_avx512>_perm<mode>): Rename to ...
+ 	(avx2_perm<mode>): ... this.  Use VI8F_256 iterator instead
+ 	of VI8F_256_512.
+ 	(<avx512>_perm<mode>_mask): Rename to ...
+ 	(avx512vl_perm<mode>_mask): ... this.  Use VI8F_256 iterator instead
+ 	of VI8F_256_512.
+ 	(<avx2_avx512>_perm<mode>_1<mask_name>): Rename to ...
+ 	(avx2_perm<mode>_1<mask_name): ... this.  Use VI8F_256 iterator
+ 	instead of VI8F_256_512.
+ 	(avx512f_perm<mode>): New define_expand.
+ 	(avx512f_perm<mode>_mask): Likewise.
+ 	(avx512f_perm<mode>_1<mask_name>): New define_insn.
+ 	(<avx512>_vec_dup<mode>_1): Fix up vec_select mode.
+ 
+ 2017-03-06  Prachi Godbole  <prachi.godbole@imgtec.com>
+ 
+ 	* config/mips/mips-msa.md (msa_fmax_a_<msafmt>, msa_fmin_a_<msafmt>,
+ 	msa_max_a_<msafmt>, msa_min_a_<msafmt>): Introduce mode interator for
+ 	if_then_else.
+ 	(smin<mode>3, smax<mode>3): Change operand print code from 'B' to 'E'.
+ 
+ 2017-03-06  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR sanitize/79783
+ 	* asan.c (asan_expand_poison_ifn): Do not expand ASAN_POISON
+ 	when having a SSA NAME w/o VAR_DECL assigned to it.
+ 
+ 2017-03-06  Prachi Godbole  <prachi.godbole@imgtec.com>
+ 
+ 	* config/mips/mips-msa.md (msa_dotp_<su>_d, msa_dpadd_<su>_d,
+ 	msa_dpsub_<su>_d): Fix MODE for vec_select.
+ 
+ 2017-03-06  Prachi Godbole  <prachi.godbole@imgtec.com>
+ 
+ 	* config/mips/mips.c (mips_gen_const_int_vector): Change type of last
+ 	argument.
+ 	* config/mips/mips-protos.h (mips_gen_const_int_vector): Likewise.
+ 
+ 2017-03-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	* lto-streamer.c (lto_check_version): Use %qs in diagnostics.
+ 	* plugin.c (register_plugin_info): Likewise.
+ 	* tree-chkp.c (chkp_make_static_const_bounds): Likewise.
+ 
+ 2017-03-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* config/i386/sse.md (sse_storehps, sse_storelps,
+ 	avx_<castmode><avxsizesuffix>_<castmode>,
+ 	avx512f_<castmode><avxsizesuffix>_<castmode>,
+ 	avx512f_<castmode><avxsizesuffix>_256<castmode>): Require
+ 	in condition that at least one operand is not a MEM.
+ 
+ 2017-03-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/79805
+ 	* internal-fn.def (ATOMIC_BIT_TEST_AND_SET, ATOMIC_BIT_TEST_AND_RESET,
+ 	ATOMIC_BIT_TEST_AND_COMPLEMENT, ATOMIC_COMPARE_EXCHANGE): Remove
+ 	ECF_NOTHROW.
+ 	* gimple-fold.c (fold_builtin_atomic_compare_exchange): Set
+ 	gimple_call_nothrow_p flag based on whether original builtin can throw.
+ 	If it can, emit following stmts on the fallthrough edge.
+ 	* tree-ssa-ccp.c (optimize_atomic_bit_test_and): Similarly, except
+ 	don't create new bb if inserting just debug stmts on the edge, try to
+ 	insert them on the fallthru bb or just reset debug stmts.
+ 
+ 2017-03-03  Segher Boesssenkool  <segher@kernel.crashing.org>
+ 
+ 	PR target/43763
+ 	* config/rs6000/rs6000.c (rs6000_final_prescan_insn): Save and
+ 	restore recog_data (including the operand rtxes inside it) around
+ 	the call to get_insn_template.
+ 
+ 2017-03-03  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR tree-optimization/79699
+ 	* context.c (context::~context): Free MPFR caches to avoid
+ 	a memory leak on program exit.
+ 
+ 2017-03-03  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_float_const_representable_p):
+ 	Use wide_int::ulow () instead of .elt (0).
+ 
+ 2017-03-03  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.md (*pushtf): Change *roF constraint to *roC.
+ 	(*pushxf): Limit oF constraint to 32bit targets and add oC
+ 	constraint for 64bit targets.
+ 	(pushxf splitter): Use PUSH_ROUNDING to calculate stack adjustment.
+ 	(*pushdf): Change rmF constraint to rmC.
+ 
+ 2017-03-03  Martin Liska  <mliska@suse.cz>
+ 
+ 	* tree-ssa-loop-prefetch.c (pass_loop_prefetch::execute):
+ 	Remove unused variable.
+ 
+ 2017-03-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/79807
+ 	* config/i386/i386.c (ix86_expand_multi_arg_builtin): If target
+ 	is a memory operand, increase num_memory.
+ 	(ix86_expand_args_builtin): Likewise.
+ 
+ 2017-03-03  Jan Hubicka  <jh@suse.cz>
+ 
+ 	PR lto/79760
+ 	* ipa-devirt.c (maybe_record_node): Properly handle
+ 	__cxa_pure_virtual visibility.
+ 
+ 2017-03-03  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR tree-optimization/79803
+ 	* tree-ssa-loop-prefetch.c (tree_ssa_prefetch_arrays): Remove
+ 	assert.
+ 	(pass_loop_prefetch::execute): Disabled optimization if an
+ 	assumption about L1 cache size is not met.
+ 
+ 2017-03-03  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR rtl-optimization/79574
+ 	* gcse.c (struct gcse_expr): Use HOST_WIDE_INT instead of int.
+ 	(hash_scan_set): Likewise.
+ 	(dump_hash_table): Likewise.
+ 	(hoist_code): Likewise.
+ 
+ 2017-03-03  Richard Biener  <rguenther@suse.de>
+ 
+ 	* fixed-value.c (fixed_from_string): Restore use of elt (1)
+ 	in place of uhigh ().
+ 	(fixed_convert_from_real): Likewise.
+ 
+ 2017-03-03  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/79514
+ 	* config/i386/i386.md (*pushxf_rounded): Use Pmode instead of DImode.
+ 
+ 2017-03-03  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/79818
+ 	* match.pd ( X +- C1 CMP C2 -> X CMP C2 -+ C1): Add missing
+ 	TYPE_OVERFLOW_UNDEFINED check.
+ 
+ 2017-03-02  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	* config/rs6000/vector.md (vector_ne_<mode>_p): Correct operand
+ 	numbers.
+ 	(vector_ae_<mode>_p): Likewise.
+ 	(vector_nez_<mode>_p): Likewise.
+ 	(vector_ne_v2di_p): Likewise.
+ 	(vector_ae_v2di_p): Likewise.
+ 	(vector_ne_<mode>_p): Likewise.
+ 	* config/rs6000/vsx.md (vsx_tsqrt<mode>2_fg): Correct operand
+ 	numbers.
+ 	(vsx_tsqrt<mode>2_fe): Likewise.
+ 
+ 2017-03-02  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/79514
+ 	* config/i386/i386.md (*pushxf_rounded): New insn_and_split pattern.
+ 
+ 2017-03-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/79780
+ 	* cprop.c (one_cprop_pass): When second and further conditional trap
+ 	in a single basic block is turned into an unconditional trap, turn it
+ 	into a deleted note to avoid RTL verification failures.
+ 
+ 2017-03-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	* fold-const.c (const_binop): Use ulow () instead of elt (0).
+ 
+ 2017-03-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/79345
+ 	PR c++/42000
+ 	* tree-ssa-alias.c (walk_aliased_vdefs_1): Take a limit
+ 	param and abort the walk, returning -1 if it is hit.
+ 	(walk_aliased_vdefs): Take a limit param and pass it on.
+ 	* tree-ssa-alias.h (walk_aliased_vdefs): Add a limit param,
+ 	defaulting to 0 and return a signed int.
+ 	* tree-ssa-uninit.c (struct check_defs_data): New struct.
+ 	(check_defs): New helper.
+ 	(warn_uninitialized_vars): Use walk_aliased_vdefs to warn
+ 	about uninitialized memory.
+ 	* fixed-value.c (fixed_from_string): Use ulow/uhigh to avoid
+ 	bogus uninitialized warning.
+ 	(fixed_convert_from_real): Likewise.
+ 
+ 2017-03-02  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	PR tree-optimization/66768
+ 	* tree-ssa-loop-ivopts.c (find_interesting_uses_address): Skip addr
+ 	iv_use if base object can't be determined.
+ 
+ 2017-03-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/79345
+ 	* gensupport.h (struct pattern_stats): Add min_scratch_opno field.
+ 	* gensupport.c (get_pattern_stats_1) <case MATCH_SCRATCH>: Update it.
+ 	(get_pattern_stats): Initialize it.
+ 	* genemit.c (gen_expand): Verify match_scratch numbers come after
+ 	match_operand/match_dup numbers.
+ 	* config/i386/i386.md (<s>mul<mode>3_highpart): Swap match_dup and
+ 	match_scratch numbers.
+ 	* config/i386/sse.md (avx2_gathersi<mode>, avx2_gatherdi<mode>):
+ 	Likewise.
+ 	* config/s390/s390.md (trunctdsd2): Likewise.
+ 
+ 2017-03-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	* wide-int.h (wide_int_storage::operator=): Implement in terms
+ 	of wi::copy.
+ 
+ 2017-03-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/79777
+ 	* tree-ssa-pre.c (eliminate_insert): Give up if we simplify
+ 	the to insert expression to sth existing.
+ 
+ 2017-03-01  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/79692
+ 	* gimple-ssa-sprintf.c
+ 	(directive::known_width_and_precision): New function.
+ 	(format_integer): Use it.
+ 	(get_mpfr_format_length): Consider the full range of precision
+ 	when computing %g output with the # flag.  Set the likely byte
+ 	count to 3 rather than 1 when precision is indeterminate.
+ 	(format_floating): Correct the lower bound of precision.
+ 
+ 2017-03-01  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	* doc/invoke.texi: Document default code model for 64-bit Linux.
+ 
+ 2017-03-01  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
+ 
+ 	PR target/79752
+ 	* config/rs6000/rs6000.md (peephole2 for udiv/umod): Should emit
+ 	udiv rather than div since input pattern is unsigned.
+ 
+ 2017-03-01  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.c (print_reg): Warn for values of
+ 	unsupported size in integer register.
+ 
+ 2017-03-01  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	PR target/79439
+ 	* config/rs6000/predicates.md (current_file_function_operand): Do
+ 	not allow self calls to be local if the function is replaceable.
+ 
+ 2017-03-01  Kelvin Nilsen  <kelvin@gcc.gnu.org>
+ 
+ 	PR target/79395
+ 	* config/rs6000/altivec.h (vec_ctz and others): Change the
+ 	preprocessor macro that controls conditional compilation from
+ 	_ARCH_PWR9 to __POWER9_VECTOR__.
+ 	(vec_all_ne): Change parameterization of __altivec_scalar_pred
+ 	macro expansion under preprocessor #ifdef __POWER9_VECTOR__
+ 	control (instead of _ARCH_PWR9 control) so that template
+ 	definition uses power9-specific function.
+ 	(vec_any_eq): Likewise.
+ 	(vec_all_ne): Change macro definition to use a power9-specific
+ 	expansion under #ifdef __POWER9_VECTOR__ control (instead of
+ 	_ARCH_PWR9 control).
+ 	(vec_any_eq) Likewise.
+ 	* config/rs6000/rs6000-builtin.def (CMPNEF): Remove BU_P9V_AV_2
+ 	expansion for CMPNEF to remove support for xvcmpnesp instruction.
+ 	(CMPNED): Remove BU_P9V_AV2 expansion for CMPNED to remove
+ 	support for xvcmpnedp instruction.
+ 	(VCMPNEB_P): Replace BU_P9V_AV_P macro expansion with BU_P9V_AV_2
+ 	macro expansion so that Power9 implementation of vec_all_ne does
+ 	not use the AltiVec predicate framework.
+ 	(VCMPNEH_P): Likewise.
+ 	(VCMPNEW_P): Likewise.
+ 	(VCMPNED_P): Likewise.
+ 	(VCMPNEFP_P): Likewise.
+ 	(VCMPNEDP_P): Likewise.
+ 	(VCMPAEB_P): Add BU_P9V_AV_2 macro expansion to change
+ 	implementation of vec_any_eq to not use AltiVec predicate
+ 	framework.
+ 	(VCMPAEH_P): Likewise.
+ 	(VCMPAEW_P): Likewise.
+ 	(VCMPAED_P): Likewise.
+ 	(VCMPAEFP_P): Likewise.
+ 	(VCMPAEDP_P): Likewise.
+ 	(VCMPNE_P): Replace BU_P9V_OVERLOAD_P macro expansion with
+ 	BU_P9V_OVERLOAD_2 so that Power9 implementation of vec_all_ne does
+ 	not use the AltiVec predicate framework.
+ 	(VCMPAE_P): Add BU_P9V_OVERLOAD_2 macro to change implementation
+ 	of vec_any_eq to not use AltiVec predicate framework.
+ 	* config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Add
+ 	support for predefined __POWER9_VECTOR__ macro to indicate that
+ 	Power9 instruction selection is enabled.
+ 	(altivec_overloaded_builtins): Remove extraneous
+ 	ALTIVEC_BUILTIN_VEC_CMPNE entry for overloaded
+ 	function argument types RS6000_BTI_bool_V16QI and
+ 	RS6000_BTI_bool_V16QI.  Remove erroneous ALTIVEC_BUILTIN_VEC_CMPNE
+ 	entry for overloaded function argument types RS6000_BTI_bool_V4SI
+ 	andRS6000_BTI_bool_V4SI, mapping to P9V_BUILTIN_CMPNEB.  Remove
+ 	two entries mapping to P9V_BUITIN_CMPNED and one entry mapping to
+ 	P9V_BUILTIN_CMPNEF to force use of instructions not specific to
+ 	Power9 for implementations of vec_cmpne.  Change the signature for
+ 	all definitions of the overloaded P9V_BUILTIN_VEC_CMPNE_P function
+ 	(representing vec_all_ne) to remove the previously described first
+ 	argument of type RS6000_BTI_INTSI, as this was an artifact of
+ 	reliance on the AltiVec predicate framework, which is no longer
+ 	used in the implementation of these functions.  Add
+ 	P9V_BUILTIN_VEC_VCMPAE_P entries (representing the vec_anyeq
+ 	function) to match all of the P9V_BUILTIN_VEC_VCMNE_P entries
+ 	since, unlike the AltiVec predicate framework implementation, we
+ 	do not share function descriptors between vec_alle and vec_anyeq.
+ 	(altivec_resolve_overloaded_builtin): Add SFmode and DFmode to the
+ 	set of modes that receive special treatment even when
+ 	TARGET_P9_VECTOR is true.  The special treatment emits code that
+ 	does not depend on Power9 instructions.
+ 	* config/rs6000/vector.md (vector_ne_<mode>_p): Change this
+ 	define_expand to not rely on AltiVec predicate framework.
+ 	(vector_ae_<mode>p): New define_expand to represent vec_any_eq
+ 	function.
+ 	(vector_ne_v2di_p): Change this define_expand to not rely on
+ 	AltiVec predicate framework.
+ 	(vector_ae_v2di_p): New define_expand to represent vec_any_eq
+ 	function.
+ 	(vector_ne_<mode>_p): Change this define_expand to not rely on
+ 	AltiVec predicate framework.
+ 	(vector_ae_<mode>p): New define_expand to represent vec_any_eq
+ 	function.
+ 	* config/rs6000/vsx.md (*vsx_ne_<mode>_p): For modes VSX_EXTRACT_I
+ 	(V16QI, V8HI, V4SI), correct a typo in the code emitted for this
+ 	define_insn pattern.
+ 	(*vsx_ne_<mode>_p): For modes VSX_F (V4SF and V2DF), remove this
+ 	define_insn pattern because the xvcmpne<VSs>. instruction is not
+ 	supported.
+ 	(vcmpne<VSs>): Remove this define_insn because xvcmpne<VSs>
+ 	instruction is not supported.
+ 
+ 2017-03-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* config/nvptx/nvptx.c: Include intl.h.
+ 
+ 2017-03-01  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR lto/78140
+ 	* ipa-prop.h (ipa_bits): Removed field known.
+ 	(ipa_jump_func): Removed field vr_known.  Changed fields bits and m_vr
+ 	to pointers.  Adjusted their comments to warn about their sharing.
+ 	(ipcp_transformation_summary): Change bits to a vector of pointers.
+ 	(ipa_check_create_edge_args): Moved to ipa-prop.c, declare.
+ 	(ipa_get_ipa_bits_for_value): Declare.
+ 	* tree-vrp.h (value_range): Mark as GTY((for_user)).
+ 	* ipa-prop.c (ipa_bit_ggc_hash_traits): New.
+ 	(ipa_bits_hash_table): Likewise.
+ 	(ipa_vr_ggc_hash_traits): Likewise.
+ 	(ipa_vr_hash_table): Likewise.
+ 	(ipa_print_node_jump_functions_for_edge): Adjust for bits and m_vr
+ 	being pointers and vr_known being removed.
+ 	(ipa_set_jf_unknown): Likewise.
+ 	(ipa_get_ipa_bits_for_value): New function.
+ 	(ipa_set_jfunc_bits): Likewise.
+ 	(ipa_get_value_range): New overloaded functions.
+ 	(ipa_set_jfunc_vr): Likewise.
+ 	(ipa_compute_jump_functions_for_edge): Use the above functions to
+ 	construct bits and vr parts of jump functions.
+ 	(ipa_check_create_edge_args): Move here from ipa-prop.h, also allocate
+ 	ipa_bits_hash_table and ipa_vr_hash_table if they do not already
+ 	exist.
+ 	(ipcp_grow_transformations_if_necessary): Also allocate
+ 	ipa_bits_hash_table and ipa_vr_hash_table if they do not already
+ 	exist.
+ 	(ipa_node_params_t::duplicate): Do not copy bits, just pointers to
+ 	them.  Fix too long lines.
+ 	(ipa_write_jump_function): Adjust for bits and m_vr being pointers and
+ 	vr_known being removed.
+ 	(ipa_read_jump_function): Use new setter functions to construct bits
+ 	and vr parts of jump functions or set them to NULL.
+ 	(write_ipcp_transformation_info): Adjust for bits being pointers.
+ 	(read_ipcp_transformation_info): Likewise.
+ 	(ipcp_update_bits): Likewise.  Fix excessively long lines a trailing
+ 	space.
+ 	Include gt-ipa-prop.h.
+ 	* ipa-cp.c (propagate_bits_across_jump_function): Adjust for bits
+ 	being pointers.
+ 	(ipcp_store_bits_results): Likewise.
+ 	(propagate_vr_across_jump_function): Adjust for m_vr being a pointer.
+ 	Do not write to existing jump functions but use a temporary instead.
+ 
+ 2017-03-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/79681
+ 	* fold-const.c (make_bit_field_ref): If orig_inner is COMPONENT_REF,
+ 	attempt to use its first operand as BIT_FIELD_REF base.
+ 
+ 2017-03-01  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/79721
+ 	* tree-chrec.c (chrec_evaluate): Perform computation of Newtons
+ 	interpolating formula in wrapping arithmetic.
+ 	(chrec_apply): Convert chrec_evaluate return value to wanted type.
+ 
+ 2017-03-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/79734
+ 	* tree-vect-generic.c (expand_vector_condition): Optimize
+ 	AVX512 vector boolean VEC_COND_EXPRs into bitwise operations.
+ 	Handle VEC_COND_EXPR where comparison has different inner width from
+ 	type's inner width.
+ 
+ 2017-02-28  Sandra Loosemore  <sandra@codesourcery.com>
+ 
+ 	* doc/invoke.texi (ARC Options): Copy-edit to fix punctuation,
+ 	markup, and similar issues.  Remove @opindex entries for things
+ 	that aren't options.  Add missing -mmpy-option entries.
+ 
+ 2017-02-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/79737
+ 	* gimple-ssa-store-merging.c (encode_tree_to_bitpos): If bitlen is
+ 	a multiple of BITS_PER_UNIT and !BYTES_BIG_ENDIAN, clear
+ 	tmpbuf[byte_size - 1].  Call natice_encode_expr with byte_size - 1
+ 	instead of byte_size.  Formatting fix.
+ 	(shift_bytes_in_array_right): Formatting fix.
+ 
+ 2017-02-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR target/79749
+ 	* config/sparc/sparc.c (sparc_frame_pointer_required): Add missing
+ 	condition on optimize for the leaf function test.
+ 
+ 2017-02-28  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR lto/79625
+ 	* read-rtl-function.c (function_reader::handle_unknown_directive):
+ 	Bail out when one uses -flto.
+ 
+ 2017-02-28  Martin Liska  <mliska@suse.cz>
+ 
+ 	* common.opt: Replace space with tabular for options of <number>
+ 	type.
+ 	* config/i386/i386.opt: Show <number> value for
+ 	-mlarge-data-threshold.
+ 	* opts.c (print_filtered_help): Do not display number in hexadecimal
+ 	format.
+ 
+ 2017-02-28  Martin Liska  <mliska@suse.cz>
+ 
+ 	* common.opt: Fix --help=option -Q for options which are of
+ 	an enum type.
+ 
+ 2017-02-28  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.c (print_reg): Error out for values
+ 	of 8-bit size in invalid integer register.
+ 
+ 2017-02-28  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR tree-optimization/79691
+ 	* passes.def (pass_all_optimizations_g): Enable pass_sprintf_length.
+ 
+ 2017-02-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/79729
+ 	* config/i386/i386.c (ix86_print_operand) <case 'R'>: Replace
+ 	gcc_unreachable with output_operand_lossage.
+ 
+ 2017-02-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/79740
+ 	* tree-ssa-sccvn.c (vn_nary_op_insert_into): Allow redundant
+ 	inserts.
+ 	(visit_nary_op): Insert the nary into the hashtable if we
+ 	pattern-matched sth.
+ 	* tree-ssa-pre.c (eliminate_insert): Robustify.
+ 
+ 2017-02-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/79731
+ 	* fold-const.c (decode_field_reference): Reject out-of-bound
+ 	accesses.
+ 
+ 2017-02-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* config/i386/i386.c: Include intl.h.
+ 	(ix86_option_override_internal): Use cond ? G_("...") : G_("...")
+ 	instead of just cond ? "..." : "...".
+ 	* config/nvptx/nvptx.c (nvptx_goacc_validate_dims): Likewise.
+ 	* coverage.c (read_counts_file): Likewise.
+ 	* omp-offload.c: Include intl.h.
+ 	(oacc_loop_fixed_partitions): Use cond ? G_("...") : G_("...") instead
+ 	of just cond ? "..." : "...".
+ 	* gcov.c (read_count_file): Use cond ? N_("...") : N_("...") instead
+ 	of just cond ? "..." : "...".
+ 
+ 2017-02-28  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR target/79742
+ 	* config/arm/parsecpu.awk (gen_data): Set tuning target to 'tune for'
+ 	entry, if present.
+ 	* config/arm/arm-cpus.in (cortex-m0plus.small-multiply): Correct
+ 	'tune for' CPU name.
+ 	* config/arm/arm-cpu-data.h: Regenerated.
+ 
+ 2017-02-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/79732
+ 	* tree-inline.c (expand_call_inline): Do not shadow var.
+ 
+ 2017-02-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/79723
+ 	* tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): Preserve
+ 	address-space properly.
+ 
+ 2017-02-28  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	* doc/optinfo.texi (Optimization groups): Fix option used for
+ 	OPTGROUP_ALL.
+ 	* doc/invoke.texi (-fopt-info): Document "omp".
+ 	* dumpfile.h: Sort OPTGROUP_OMP before OPTGROUP_VEC.
+ 	(OPTGROUP_ALL): Add OPTGROUP_OMP.
+ 	* hsa-gen.c (pass_data_gen_hsail): Use OPTGROUP_OMP.
+ 	* ipa-hsa.c (pass_data_ipa_hsa): Likewise.
+ 	* omp-simd-clone.c (pass_data_omp_simd_clone): Likewise.
+ 
+ 	* dumpfile.h (OPTGROUP_OPENMP): Rename to OPTGROUP_OMP.  Adjust
+ 	all users.
+ 	* dumpfile.c (optgroup_options): Instead of "openmp", associate
+ 	OPTGROUP_OMP with "omp".
+ 
+ 2017-02-27  Pat Haugen  <pthaugen@us.ibm.com>
+ 
+ 	PR target/79544
+ 	* config/rs6000/rs6000-c.c (struct altivec_builtin_types): Use VSRAD
+ 	for arithmetic shift of unsigned V2DI.
+ 
+ 2017-02-27  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config.gcc (arc*-): Clean up, use arc/big.h, arc/elf.h, and
+ 	arc/linux.h headers.
+ 	* config/arc/arc.h (TARGET_OS_CPP_BUILTINS): Remove.
+ 	(LINK_SPEC): Likewise.
+ 	(ARC_TLS_EXTRA_START_SPEC): Likewise.
+ 	(EXTRA_SPECS): Likewise.
+ 	(STARTFILE_SPEC): Likewise.
+ 	(ENDFILE_SPEC): Likewise.
+ 	(LIB_SPEC): Likewise.
+ 	(TARGET_SDATA_DEFAULT): Likewise.
+ 	(TARGET_MMEDIUM_CALLS_DEFAULT): Likewise.
+ 	(MULTILIB_DEFAULTS): Likewise.
+ 	(DWARF2_UNWIND_INFO): Likewise.
+ 	* config/arc/big.h: New file.
+ 	* config/arc/elf.h: Likewise.
+ 	* config/arc/linux.h: Likewise.
+ 	* config/arc/t-uClibc: Remove.
+ 
+ 2017-02-27  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	PR tree-optimization/77536
+ 	* tree-ssa-loop-manip.c (niter_for_unrolled_loop): New function.
+ 	(tree_transform_and_unroll_loop): Use above function to compute the
+ 	estimated niter of unrolled loop and use it when scaling profile.
+ 	Also use count info rather than frequency if it's non-zero.
+ 	* tree-ssa-loop-manip.h niter_for_unrolled_loop(): New declaration.
+ 	* tree-vect-loop.c (scale_profile_for_vect_loop): New function.
+ 	(vect_transform_loop): Call above function.
+ 
+ 2017-02-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/45397
+ 	* tree-ssa-pre.c (eliminate_insert): Handle BIT_AND_EXPR.
+ 	* tree-ssa-sccvn.c (valueized_wider_op): New helper.
+ 	(visit_nary_op): Add pattern matching for CSEing sign-changed
+ 	or truncated operations with wider ones.
+ 
+ 2017-02-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/79690
+ 	* tree-vect-stmts.c (vectorizable_store): Use vector type
+ 	built from the DR with address-space.
+ 
+ 2017-02-26  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* doc/invoke.texi (Optimize Options): Refine the description
+ 	of asan-use-after-return.
+ 
+ 2017-02-25  Alan Modra  <amodra@gmail.com>
+ 
+ 	PR rtl-optimization/79584
+ 	* lra-constraints.c (base_to_reg): Reload ad->base, the entire
+ 	base, not ad->base_term, the reg within base.  Remove assertion
+ 	that ad->base == ad->base_term.  Replace gen_int_mode using
+ 	bogus mode with const0_rtx.
+ 
+ 2017-02-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/79396
+ 	* tree-eh.c (operation_could_trap_p, stmt_could_throw_1_p): Handle
+ 	FMA_EXPR like tcc_binary or tcc_unary.
+ 
+ 	* tree-ssa-loop-niter.c (number_of_iterations_exit): Simplify warning.
+ 
+ 	PR debug/77589
+ 	* dwarf2out.c (struct dw_loc_list_struct): Add noted_variable_value
+ 	bitfield.
+ 	(size_of_loc_descr): Handle DW_OP_GNU_variable_value.
+ 	(output_loc_operands): Handle DW_OP_call_ref and
+ 	DW_OP_GNU_variable_value.
+ 	(struct variable_value_struct): New type.
+ 	(struct variable_value_hasher): Likewise.
+ 	(variable_value_hash): New variable.
+ 	(string_types): Remove.
+ 	(copy_loc_descr): New function.
+ 	(add_loc_descr_to_each): Clarify comment.  Use copy_loc_descr.
+ 	(prepend_loc_descr_to_each): New function.
+ 	(add_loc_list): Fix comment typo.  Use prepend_loc_descr_to_each
+ 	instead of add_loc_descr_to_each if the first argument is single
+ 	location list and the second has multiple.
+ 	(resolve_args_picking_1): Handle DW_OP_GNU_variable_value.
+ 	(loc_list_from_tree_1): For early_dwarf, emit DW_OP_GNU_variable_value
+ 	when looking for variable value which doesn't have other location info.
+ 	(loc_list_from_tree): Formatting fix.
+ 	(gen_array_type_die): Simplify DW_AT_string_length handling.
+ 	(adjust_string_types): Remove.
+ 	(gen_subprogram_die): Don't call adjust_string_types nor test/set
+ 	string_types.  Call resolve_variable_values.
+ 	(prune_unused_types_walk_loc_descr): Handle DW_OP_GNU_variable_value.
+ 	(resolve_addr_in_expr): Likewise.  Add A argument.
+ 	(copy_deref_exprloc): Remove deref argument.  Adjust for the
+ 	original expression being DW_OP_GNU_variable_value with optionally
+ 	DW_OP_stack_value after it instead of DW_OP_call4 with DW_OP_deref
+ 	optionally after it.
+ 	(optimize_string_length): Rework for DW_OP_GNU_variable_value.
+ 	(resolve_addr): Adjust optimize_string_length and resolve_addr_in_expr
+ 	callers.  Set remove_AT_byte_size if removing DW_AT_string_length.
+ 	(variable_value_hasher::hash, variable_value_hasher::equal): New
+ 	methods.
+ 	(resolve_variable_value_in_expr, resolve_variable_value,
+ 	resolve_variable_values, note_variable_value_in_expr,
+ 	note_variable_value): New functions.
+ 	(dwarf2out_early_finish): Call note_variable_value on all toplevel
+ 	DIEs.
+ 
+ 2017-02-24  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/79677
+ 	* opts.h (handle_generated_option): Add GENERATED_P argument.
+ 	* opts-common.c (handle_option): Adjust function comment.
+ 	(handle_generated_option): Add GENERATED_P argument, pass it to
+ 	handle_option.
+ 	(control_warning_option): Pass false to handle_generated_option
+ 	GENERATED_P.
+ 	* opts.c (maybe_default_option): Pass true to handle_generated_option
+ 	GENERATED_P.
+ 	* optc-gen.awk: Likewise.
+ 
+ 2017-02-24  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/sh/sh.md (tstsi_t): If operands[0] is a SUBREG instead of
+ 	a REG, look at the REG it is a SUBREG of.
+ 	(splitter for cmpeqsi_t): Ditto.
+ 
+ 2017-02-24  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/pa/pa.c (pa_combine_instructions): Do not share RTL.  Make
+ 	the special USEs with the pattern of the insn, not the insn itself.
+ 
+ 2017-02-24  Matthew Fortune  <matthew.fortune@imgtec.com>
+ 
+ 	PR target/79473
+ 	* doc/invoke.texi: Document -mload-store-pairs.
+ 
+ 2017-02-24  Segher Boessenkool  <segher@kernel.crashing.org>
+ 	    Sandra Loosemore  <sandra@codesourcery.com>
+ 
+ 	* config/nios2/nios2.c (nios2_simple_const_p): Returns false if the
+ 	argument isn't a CONST_INT.
+ 	(nios2_alternate_compare_const): Assert op is a CONST_INT.
+ 	(nios2_valid_compare_const_p): Assert op is a CONST_INT.
+ 	(nios2_validate_compare): Bypass alternate compare logic if *op2
+ 	is not a CONST_INT.
+ 	(ldstwm_operation_p): Return false if first_base is not a REG or
+ 	if first_offset is not a CONST_INT.
+ 
+ 2017-02-24  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/cris/cris.md: Use correct operand in a define_peephole2.
+ 
+ 2017-02-24  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/c6x/c6x.c (predicate_insn): Do not incorrectly share RTL.
+ 
+ 2017-02-24  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/arc/arc.c (arc_ccfsm_advance): Only take the PATTERN of
+ 	this_insn if it is an INSN or JUMP_INSN.
+ 	(force_offsettable): Look at base, not at addr.
+ 	* config/arc/predicates.md (brcc_nolimm_operator): Don't call INTVAL
+ 	on things that aren't necessarily CONST_INTs.
+ 
+ 2017-02-24  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* doc/invoke.texi (x86 Options, -mfpmath=sse): Mention that
+ 	-mfpmath=sse is the default also for x86-32 targets with SSE2
+ 	instruction set when @option{-ffast-math} is enabled
+ 
+ 2017-02-24  Jeff Law  <law@redhat.com>
+ 
+ 	PR rtl-optimizatoin/79286
+ 	* ira.c (update_equiv_regs): Drop may_trap_p exception to
+ 	dominance test.
+ 
+ 2017-02-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/79389
+ 	* gimple-ssa-split-paths.c (is_feasible_trace): Properly skip
+ 	debug insns.
+ 
+ 2017-02-24  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* tree-ssa-loop-niter.c (number_of_iterations_exit): Update
+ 	function comment to reflect reality.
+ 	(loop_exits_before_overflow): Fix typo in function description.
+ 
+ 2017-02-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/79389
+ 	* gimple-ssa-split-paths.c (is_feasible_trace): Verify more
+ 	properly that a threading opportunity exists.  Detect conditional
+ 	copy/constant propagation opportunities.
+ 
+ 2017-02-23  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* config/visium/visium.md (type): Add trap.
+ 	(b): New mode attribute.
+ 	(*btst): Rename into...
+ 	(*btst<mode>): ...this and adjust.
+ 	(*cbranchsi4_btst_insn): Rename into...
+ 	(*cbranch<mode>4_btst_insn): ...this and adjust.
+ 	(trap): New define_insn.
+ 
+ 2017-02-23  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/79389
+ 	* ifcvt.c (struct noce_if_info): Add rev_cond field.
+ 	(noce_reversed_cond_code): New function.
+ 	(noce_emit_store_flag): Use rev_cond if non-NULL instead of
+ 	reversed_comparison_code.  Formatting fix.
+ 	(noce_try_store_flag): Test rev_cond != NULL in addition to
+ 	reversed_comparison_code.
+ 	(noce_try_store_flag_constants): Likewise.
+ 	(noce_try_store_flag_mask): Likewise.
+ 	(noce_try_addcc): Use rev_cond if non-NULL instead of
+ 	reversed_comparison_code.
+ 	(noce_try_cmove_arith): Likewise.  Formatting fixes.
+ 	(noce_try_minmax, noce_try_abs): Clear rev_cond.
+ 	(noce_find_if_block): Initialize rev_cond.
+ 	(find_cond_trap): Call noce_get_condition with then_bb == trap_bb
+ 	instead of false as last argument never attempt to reverse it
+ 	afterwards.
+ 
+ 2017-02-23  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	PR tree-optimization/79663
+ 	* tree-predcom.c (combine_chains): Process refs in reverse order
+ 	only for ZERO length chains, and add explaining comment.
+ 
+ 2017-02-23  Jeff Law  <law@redhat.com>
+ 
+ 	PR tree-optimization/79578
+ 	* tree-ssa-dse.c (clear_bytes_written_by): Use OEP_ADDRESS_OF
+ 	in call to operand_equal_p.
+ 
+ 2017-01-23  Dominique d'Humieres  <dominiq@lps.ens.fr>
+ 
+ 	PR target/71017
+ 	* config/i386/cpuid.h: Fix another undefined behavior.
+ 
+ 2017-02-23  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/79683
+ 	* tree-vect-stmts.c (vect_analyze_stmt): Do not overwrite
+ 	vector types for data-refs.
+ 
+ 2017-02-23  Martin Liska  <mliska@suse.cz>
+ 
+ 	* params.def (PARAM_MIN_NONDEBUG_INSN_UID): Change default to 0.
+ 
+ 2017-02-23  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/79665
+ 	* internal-fn.c (get_range_pos_neg): Moved to ...
+ 	* tree.c (get_range_pos_neg): ... here.  No longer static.
+ 	* tree.h (get_range_pos_neg): New prototype.
+ 	* expr.c (expand_expr_real_2) <case TRUNC_DIV_EXPR>: If both arguments
+ 	are known to be in between 0 and signed maximum inclusive, try to
+ 	expand both unsigned and signed divmod and use the cheaper one from
+ 	those.
+ 
+ 2017-02-22  Jeff Law  <law@redhat.com>
+ 
+ 	PR tree-optimization/79578
+ 	* tree-ssa-dse.c (clear_bytes_written_by): Use operand_equal_p
+ 	to compare base operands.
+ 
+ 2017-02-22  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR target/79211
+ 	* config/rs6000/rs6000.md (*fsel<SFDF:mode><SFDF2:mode>4): Use
+ 	gpc_reg_operand instead of fpr_reg_operand.
+ 
+ 2017-02-22  Sameera Deshpande  <sameera.deshpande@imgtec.com>
+ 
+ 	* config/mips/mips.c (mips_return_in_memory): Force FP
+ 	vector types to be returned in memory for o32 ABI.
+ 
+ 2017-02-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* dwarf2out.c (gen_variable_die): For -gdwarf-5, use DW_TAG_variable
+ 	instead of DW_TAG_member for static data member declarations and don't
+ 	set no_linkage_name for static inline data members.
+ 	(gen_member_die): For -gdwarf-5 don't change DW_TAG_variable
+ 	to DW_TAG_member.
+ 
+ 2017-02-22  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/invoke.texi: Replace inequality signs with square brackets
+ 	for -Wnormalized.
+ 
+ 2017-02-22  Matthew Fortune  <matthew.fortune@imgtec.com>
+ 
+ 	PR target/78660
+ 	* lra-constraints.c (simplify_operand_subreg): Handle
+ 	WORD_REGISTER_OPERATIONS targets.
+ 
+ 2017-02-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/70465
+ 	* reg-stack.c (emit_swap_insn): Treat (float_extend:?F (mem:?F))
+ 	and (const_double:?F) like (mem:?F) for the purpose of fxch %st(1)
+ 	elimination by swapping fld*.
+ 
+ 2017-02-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/79673
+ 	* tree-ssa-pre.c (compute_avail): Use wide_int_to_tree to
+ 	convert the [TARGET_]MEM_REF offset INTEGER_CST, scrapping off
+ 	irrelevant address-space qualifiers and avoiding a
+ 	ADDR_SPACE_CONVERT_EXPR from fold_convert.
+ 
+ 2017-02-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/79666
+ 	* tree-vrp.c (extract_range_from_binary_expr_1): Make sure
+ 	to not symbolically negate if that may introduce undefined
+ 	overflow.
+ 
+ 2017-02-22  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR lto/79587
+ 	* data-streamer-in.c (streamer_read_gcov_count): Remove assert.
+ 	* data-streamer-out.c (streamer_write_gcov_count_stream):
+ 	Likewise.
+ 	* value-prof.c (stream_out_histogram_value): Make assert more
+ 	precise based on type of counter.
+ 
+ 2017-02-21  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/79593
+ 	* config/i386/i386.md (standard_x87sse_constant_load splitter):
+ 	Use nonimmediate_operand instead of memory_operand for operand 1.
+ 	(float-extend standard_x87sse_constant_load splitter): Ditto.
+ 
+ 2017-02-21  Jeff Law  <law@redhat.com>
+ 
+ 	PR tree-optimization/79621
+ 	* gimple-ssa-isolate-paths.c (find_implicit_erroneous_behavior): Ignore
+ 	blocks with edges to themselves.
+ 
+ 2017-02-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/79633
+ 	* tree-chkp-opt.c (chkp_optimize_string_function_calls): Use
+ 	is_gimple_call instead of comparing gimple_code with GIMPLE_CALL.
+ 	Use gimple_call_builtin_p.
+ 
+ 	PR target/79570
+ 	* sel-sched.c (moveup_expr_cached): Don't call sel_bb_head
+ 	on temporarily removed DEBUG_INSNs.
+ 
+ 	PR tree-optimization/79649
+ 	* tree-loop-distribution.c (classify_partition): Give up on
+ 	non-generic address space loads/stores.
+ 
+ 2017-02-21  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* doc/loop.texi (Loop manipulation): Remove nonexistent
+ 	tree_ssa_loop_version from the documentation.
+ 	* cfgloopmanip.c (loop_version): Document CONDITION_BB argument.
+ 
+ 2017-02-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/79494
+ 	* config/i386/i386.c (ix86_expand_split_stack_prologue): Call
+ 	make_reg_eh_region_note_nothrow_nononlocal on call_insn.
+ 	* config/rs6000/rs6000.c: Include except.h.
+ 	(rs6000_expand_split_stack_prologue): Call
+ 	make_reg_eh_region_note_nothrow_nononlocal on the call insn.
+ 
+ 2017-02-21  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR lto/79579
+ 	* ipa-prop.c (ipa_prop_write_jump_functions): Bail out if no edges
+ 	have been analyzed.
+ 
+ 2017-02-21  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* common.opt (-fipa-cp-alignment): Mark as ignored and preserved
+ 	for backward compatibility only.
+ 	* doc/invoke.texi (Option Summary): Remove all references to
+ 	-fipa-cp-alignment.
+ 
+ 2017-02-21  Matthew Fortune  <matthew.fortune@imgtec.com>
+ 
+ 	PR target/78660
+ 	Revert:
+ 	2017-02-20  Matthew Fortune  <matthew.fortune@imgtec.com>
+ 
+ 	* lra-constraints.c (curr_insn_transform): Handle
+ 	WORD_REGISTER_OPERATIONS requirements when reloading SUBREGs.
+ 
+ 2017-02-21  Martin Liska  <mliska@suse.cz>
+ 
+ 	* config/i386/i386.opt: Replace -masm-dialect with -masm.
+ 
+ 2017-02-21  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	PR translation/79638
+ 	* config/nvptx/nvptx.c (ENTRY_TEMPLATE): Single out "%ntid.y".
+ 
+ 2017-02-21  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/67205
+ 	* config/arm/arm.c (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): Define.
+ 	(arm_function_ok_for_sibcall): Return false for an indirect call by
+ 	descriptor if all the argument registers are used.
+ 	(arm_relayout_function): Use FUNCTION_ALIGNMENT macro to adjust the
+ 	alignment of the function.
+ 
+ 2017-02-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/61441
+ 	* simplify-rtx.c (simplify_const_unary_operation): For
+ 	-fsignaling-nans and sNaN operand, return NULL_RTX rather than
+ 	the sNaN unmodified.
+ 
+ 2017-02-20  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+ 
+ 	* Makefile.in (BUILD_SYSTEM_HEADER_DIR): New make variabe.
+ 	(LIMITS_H_TEST, if_multiarch, stmp-fixinc): Use BUILD_SYSTEM_HEADER_DIR
+ 	instead of SYSTEM_HEADER_DIR.
+ 
+ 2017-02-20  Gerald Pfeifer  <gerald@pfeifer.com>
+ 	    Martin Liška  <mliska@suse.cz>
+ 
+ 	* doc/invoke.texi (use-after-scope-direct-emission-threshold):
+ 	Fix typos and grammar, use active voice, and clarify.
+ 
+ 2017-02-20  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR middle-end/79537
+ 	* gimplify.c (gimplify_expr): Handle unused *&&L;.
+ 
+ 	PR sanitizer/79558
+ 	* ubsan.c (ubsan_type_descriptor): Check if TYPE_MAX_VALUE is null.
+ 
+ 2017-02-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/79568
+ 	* config/i386/i386.c (ix86_expand_builtin): Handle
+ 	OPTION_MASK_ISA_AVX512VL and OPTION_MASK_ISA_64BIT in
+ 	ix86_builtins_isa[fcode].isa as a requirement of those
+ 	flags and any other flag in the bitmask.
+ 	(ix86_init_mmx_sse_builtins): Use 0 instead of
+ 	~OPTION_MASK_ISA_64BIT as mask.
+ 	* config/i386/i386-builtin.def (__builtin_ia32_rdtsc,
+ 	__builtin_ia32_rdtscp, __builtin_ia32_pause, __builtin_ia32_bsrsi,
+ 	__builtin_ia32_rdpmc, __builtin_ia32_rolqi, __builtin_ia32_rolhi,
+ 	__builtin_ia32_rorqi, __builtin_ia32_rorhi): Likewise.
+ 
+ 2017-02-20  Matthew Fortune  <matthew.fortune@imgtec.com>
+ 
+ 	PR target/78012
+ 	* lra-constraints.c (split_reg): Check requested split mode
+ 	is supported by the register.
+ 
+ 2017-02-20  Matthew Fortune  <matthew.fortune@imgtec.com>
+ 
+ 	* lra-constraints.c (simplify_operand_subreg): Remove early
+ 	return false.
+ 
+ 2017-02-20  Matthew Fortune  <matthew.fortune@imgtec.com>
+ 
+ 	PR target/78660
+ 	* lra-constraints.c (curr_insn_transform): Tighten condition
+ 	for converting SUBREG reloads from OP_OUT to OP_INOUT.
+ 
+ 2017-02-20  Matthew Fortune  <matthew.fortune@imgtec.com>
+ 
+ 	PR target/78660
+ 	* lra-constraints.c (curr_insn_transform): Handle
+ 	WORD_REGISTER_OPERATIONS requirements when reloading SUBREGs.
+ 
+ 2017-02-19  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	Revert:
+ 	2016-05-30  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/sync.md (mfence_nosse): Use "lock orl $0, -4(%esp)".
+ 
+ 2017-02-19  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR c++/69523
+ 	* doc/invoke.texi (C++ Dialect Options) [-Wliteral-suffix]: Update
+ 	description.
+ 
+ 2017-02-19  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
+ 
+ 	* gimple-pretty-print.c (dump_ternary_rhs): Adjust gimple dump format
+ 	for FMA_EXPR.
+ 
+ 2017-02-18  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* final.c (last_columnnum, override_columnnum): New variables.
+ 	(final_start_function): Set last_columnnum, pass it to begin_prologue
+ 	hook and pass 0 to dwarf2out_begin_prologue.
+ 	(final_scan_insn): Update override_columnnum.  Pass last_columnnum
+ 	to source_line debug hook.
+ 	(notice_source_line): Compute last_columnnum and for debug_column_info
+ 	return true on column changes.
+ 	* debug.h (struct gcc_debug_hooks): Add column argument to
+ 	source_line and begin_prologue hooks.
+ 	(debug_nothing_int_charstar_int_bool): Remove prototype.
+ 	(debug_nothing_int_int_charstar,
+ 	debug_nothing_int_int_charstar_int_bool): New prototypes.
+ 	(dwarf2out_begin_prologue): Add column argument.
+ 	* debug.c (do_nothing_debug_hooks): Adjust source_line and
+ 	begin_prologue hooks.
+ 	(debug_nothing_int_charstar_int_bool): Remove.
+ 	(debug_nothing_int_int_charstar,
+ 	debug_nothing_int_int_charstar_int_bool): New functions.
+ 	* dwarf2out.c (dwarf2out_begin_prologue): Add column argument, pass it
+ 	through to dwarf2out_source_line.
+ 	(dwarf2_lineno_debug_hooks): Adjust begin_prologue hook.
+ 	(dwarf2out_source_line): Add column argument, emit it if requested.
+ 	* sdbout.c (sdbout_source_line, sdbout_begin_prologue): Add column
+ 	arguments.
+ 	* xcoffout.h (xcoffout_begin_prologue, xcoffout_source_line): Likewise.
+ 	* xcoffout.c (xcoffout_begin_prologue, xcoffout_source_line): Likewise.
+ 	* vmsdbgout.c (vmsdbgout_begin_prologue): Add column argument, pass it
+ 	through to dwarf2out_begin_prologue.
+ 	(vmsdbgout_source_line): Add column argument, pass it through to
+ 	dwarf2out_source_line.
+ 	* dbxout.c (dbxout_begin_prologue): Add column argument, adjust
+ 	dbxout_source_line caller.
+ 	(dbxout_source_line): Add column argument.
+ 
+ 	* common.opt (gno-column-info, gcolumn-info): New options.
+ 	* dwarf2out.c (dwarf2_lineno_debug_hooks): Formatting fix.
+ 	(check_die): Also test for multiple DW_AT_decl_column attributes.
+ 	(add_src_coords_attributes, dwarf2out_imported_module_or_decl_1): Add
+ 	DW_AT_decl_column if requested.
+ 	(gen_subprogram_die): Compare and/or add also DW_AT_decl_column
+ 	if requested.
+ 	(gen_variable_die): Likewise.
+ 	(add_call_src_coords_attributes): Add DW_AT_call_column if requested.
+ 	* doc/invoke.texi (-gcolumn-info, -gno-column-info): Document.
+ 
+ 	PR target/79569
+ 	* config/i386/i386.opt (m3dnowa): Replace Undocumented with Report.
+ 	* common/config/i386/i386-common.c (OPTION_MASK_ISA_3DNOW_A_SET): Define.
+ 	(ix86_handle_option): Handle OPT_m3dnowa.
+ 	* doc/invoke.texi (-m3dnowa): Document.
+ 	* doc/extend.texi (__builtin_ia32_pmulhuw, __builtin_ia32_pf2iw): Use
+ 	-m3dnowa instead of -m3dnow -march=athlon.
+ 
+ 	PR target/79559
+ 	* config/i386/i386.c (ix86_print_operand): Use output_operand_lossage
+ 	instead of gcc_assert for K, r and R code checks.  Formatting fixes.
+ 
+ 2017-02-17  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	PR target/79261
+ 	* config/rs6000/rs6000.c (rs6000_expand_ternop_builtin): Add
+ 	support for CODE_FOR_vsx_xxpermdi_v2d[fi]_be.
+ 	* config/rs6000/rs6000.md (reload_gpr_from_vsx<mode>): Call
+ 	generator for vsx_xxpermdi_<mode>_be.
+ 	* config/rs6000/vsx.md (vsx_xxpermdi_<mode>): Remove logic to
+ 	force big-endian semantics.
+ 	(vsx_xxpermdi_<mode>_be): New define_expand with same
+ 	implementation as previous version of vsx_xxpermdi_<mode>.
+ 
+ 2017-02-17  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/79327
+ 	* gimple-ssa-sprintf.c (format_integer): Remove likely_adjust
+ 	variable, its initialization and use.
+ 
+ 2017-02-17  Julia Koval  <julia.koval@intel.com>
+ 
+ 	* common/config/i386/i386-common.c (OPTION_MASK_ISA_RDPID_SET): New.
+ 	(OPTION_MASK_ISA_PKU_UNSET): New.
+ 	(ix86_handle_option): Handle -mrdpid.
+ 	* config/i386/cpuid.h (bit_RDPID): New.
+ 	* config/i386/driver-i386.c (host_detect_local_cpu):
+ 	Detect RDPID feature.
+ 	* config/i386/i386-builtin.def (__builtin_ia32_rdpid): New.
+ 	* config/i386/i386-c.c (ix86_target_macros_internal):
+ 	Handle RDPID flag.
+ 	* config/i386/i386.c (ix86_target_string): Add -mrdpid to isa2_opts.
+ 	(ix86_valid_target_attribute_inner_p): Add "rdpid".
+ 	(ix86_expand_builtin): Handle IX86_BUILTIN_RDPID.
+ 	* config/i386/i386.h (TARGET_RDPID, TARGET_RDPID_P): New.
+ 	* config/i386/i386.md (define_insn "rdpid"): New.
+ 	* config/i386/i386.opt Add -mrdpid.
+ 	* config/i386/immintrin.h (_rdpid_u32): New.
+ 
+ 2017-02-17  Vladimir Makarov  <vmakarov@redhat.com>
+ 
+ 	PR rtl-optimization/79541
+ 	* lra-constraints.c (curr_insn_transform): Remove wrong asm insn
+ 	instead of transforming it into USE.
+ 
+ 2017-02-17  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/rs6000.md (extendsfdf2): Remove default arguments.
+ 	If HONOR_SNANS (SFmode) force the input to a register.
+ 	(*extendsfdf2_fpr): Add !HONOR_SNANS (SFmode) condition.
+ 	(*extendsfdf2_snan): New pattern, used when using SNaNs; it generates
+ 	an frsp or similar insn.
+ 
+ 2017-02-17  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR rtl-optimization/79577
+ 	* params.def (selsched-max-sched-times): Increase minimum to 1.
+ 
+ 2017-02-17  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR rtl-optimization/79574
+ 	* gcse.c (want_to_gcse_p): Prevent integer overflow.
+ 
+ 2017-02-17  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR tree-optimization/79529
+ 	* tree-ssa-loop-unswitch.c (is_maybe_undefined): Use
+ 	ssa_defined_default_def_p to handle cases which are implicitly
+ 	defined.
+ 	* tree-ssa.c (ssa_defined_default_def_p): New function.
+ 	(ssa_undefined_value_p): Use ssa_defined_default_def_p to handle cases
+ 	which are implicitly defined.
+ 	* tree-ssa.h (ssa_defined_default_def_p): Declare.
+ 
+ 2017-02-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/79576
+ 	* params.def (max-ssa-name-query-depth): Limit to 10.
+ 
+ 2017-02-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/79552
+ 	* tree-ssa-structalias.c (visit_loadstore): Properly verify
+ 	default defs.
+ 
+ 2017-02-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR bootstrap/79567
+ 	* genmatch.c (output_line_directive): Handle DIR_SEPARATOR_2.
+ 
+ 2017-02-17  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR middle-end/79536
+ 	* fold-const.c (fold_negate_expr_1): Renamed from fold_negate_expr.
+ 	(fold_negate_expr): New wrapper.
+ 
+ 2017-02-16  Sandra Loosemore  <sandra@codesourcery.com>
+ 
+ 	* doc/invoke.texi (C++ Dialect Options) [-Wno-non-template-friend]: 
+ 	Correct terminology and de-emphasize pre-standard behavior.
+ 
+ 2017-02-16  Alan Modra  <amodra@gmail.com>
+ 
+ 	PR rtl-optimization/79286
+ 	* ira.c (def_dominates_uses): New function.
+ 	(update_equiv_regs): Don't create an equivalence for insns that
+ 	may trap where the register def does not dominate the use.
+ 
+ 2017-02-16  Vladimir Makarov  <vmakarov@redhat.com>
+ 
+ 	PR rtl-optimization/78127
+ 	* lra.c (lra): Call lra_eliminate before finish the loop after
+ 	lra_constraint.
+ 
+ 2017-02-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	* graphite.h: Do not include isl/isl_val_gmp.h, instead include
+ 	isl/isl_val.h.
+ 	* graphite-isl-ast-to-gimple.c (gmp_cst_to_tree): Remove.
+ 	(gcc_expression_from_isl_expr_int): Use generic isl_val interface.
+ 	* graphite-sese-to-poly.c: Do not include isl/isl_val_gmp.h.
+ 	(isl_val_int_from_wi): New function.
+ 	(extract_affine_gmp): Rename to ...
+ 	(extract_affine_wi): ... this, take a widest_int.
+ 	(extract_affine_int): Just wrap extract_affine_wi.
+ 	(add_param_constraints): Use isl_val_int_from_wi.
+ 	(add_loop_constraints): Likewise, and extract_affine_wi.
+ 
+ 2017-02-15  Jeff Law  <law@redhat.com>
+ 
+ 	PR middle-end/79521
+ 	* ira-costs.c (scan_one_insn): Check have_regs_of_mode before calling
+ 	ira_init_register_move_cost_if_necessary.
+ 
+ 2017-02-15  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/32003
+ 	* doc/invoke.texi (-fdump-final-insns): Replace option accidentally
+ 	removed in a prior commit.
+ 
+ 2017-02-15  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	PR tree-optimization/79347
+ 	* tree-vect-loop-manip.c (vect_do_peeling): Maintain profile
+ 	counters during peeling.
+ 
+ 2017-02-15  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	* Makefile.in (site.exp): Remove "set ISLVER".
+ 
+ 2017-02-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/79487
+ 	* real.c (real_from_integer): Call real_convert even for decimal.
+ 
+ 2017-02-15  Dominik Vogt  <vogt@linux.vnet.ibm.com>
+ 
+ 	PR target/79421
+ 	* config/s390/s390.c: define TARGET_CUSTOM_FUNCTION_DESCRIPTORS.
+ 
+ 2017-02-14  Andrew Pinski  <apinski@cavium.com>
+ 
+ 	* config/aarch64/aarch64-cores.def (thunderx2t99): Move to under 'C"
+ 	cores and change the partno/implementer to be correct.
+ 	(thunderx2t99p1): New core which replaces thunderx2t99 and still has
+ 	the 'B" as the implementer.
+ 	* config/aarch64/aarch64-tune.md: Regenerate.
+ 
+ 2017-02-14  Carl Love  <cel@us.ibm.com>
+ 
+ 	* config/rs6000/rs6000.c: Add case statement entry to make the
+ 	xvcvuxdsp built-in argument unsigned.
+ 	* config/rs6000/vsx.md: Fix the source and return operand types so they
+ 	match the instruction definitions from the ISA document.  Fix typo
+ 	in the instruction generation for the (define_insn "vsx_xvcvuxdsp"
+ 	statement.
+ 
+ 2017-02-14  Vladimir Makarov  <vmakarov@redhat.com>
+ 
+ 	PR target/79282
+ 	* lra-int.h (struct lra_operand_data, struct lra_insn_reg): Add
+ 	member early_clobber_alts.
+ 	* lra-lives.c (reg_early_clobber_p): New.
+ 	(process_bb_lives): Use it.
+ 	* lra.c (new_insn_reg): New arg early_clobber_alts.  Use it.
+ 	(debug_operand_data): Initialize early_clobber_alts.
+ 	(setup_operand_alternative): Set up early_clobber_alts.
+ 	(collect_non_operand_hard_regs): Ditto.  Pass early clobber
+ 	alternatives to new_insn_reg.
+ 	(add_regs_to_insn_regno_info): Add arg early_clobber_alts.  Use
+ 	it.
+ 	(lra_update_insn_regno_info): Pass the new arg.
+ 
+ 2017-02-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/79505
+ 	* omp-offload.c (free_oacc_loop): Release loop->ifns vector.
+ 	(new_oacc_loop_raw): Don't clear already cleared fields.
+ 
+ 	PR target/79481
+ 	* config/i386/avx512pfintrin.h (_mm512_prefetch_i32gather_pd,
+ 	_mm512_prefetch_i32gather_ps, _mm512_prefetch_i64gather_pd,
+ 	_mm512_prefetch_i64gather_ps): New inline functions and macros.
+ 
+ 2017-02-14  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/79495
+ 	* config/i386/i386.md (*movxf_internal): Add (o,rC) alternative.
+ 
+ 2017-02-14  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/79498
+ 	* config/i386/i386.c (timode_scalar_chain::convert_insn): Insert
+ 	the extra instruction to the right place to store 128-bit constant
+ 	when needed.
+ 
+ 2017-02-14  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/79448
+ 	* gimple-ssa-sprintf.c (format_directive): Avoid issuing INT_MAX
+ 	  warning for strings of unknown length.
+ 
+ 2017-02-13  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config.gcc (supported_defaults) [powerpc*-*-*]: Update.
+ 
+ 2017-02-14  Jeff Law  <law@redhat.com>
+ 
+ 	PR target/79404
+ 	* ira-costs.c (scan_one_insn): Initialize register move costs
+ 	for pseudos seen in USE/CLOBBER insns.
+ 
+ 	PR tree-optimization/79095
+ 	* tree-vrp.c (extract_range_from_binary_expr_1): For EXACT_DIV_EXPR,
+ 	if the numerator has the range ~[0,0] make the resultant range ~[0,0].
+ 	(extract_range_from_binary_expr): For MINUS_EXPR with no derived range,
+ 	if the operands are known to be not equal, then the resulting range
+ 	is ~[0,0].
+ 	(intersect_ranges): If the new range is ~[0,0] and the old range is
+ 	wide, then prefer ~[0,0].
+ 	* tree-vrp.c (overflow_comparison_p_1): New function.
+ 	(overflow_comparison_p): New function.
+ 	* tree-vrp.c (register_edge_assert_for_2): Register additional asserts
+ 	if NAME is used in an overflow test.
+ 	(vrp_evaluate_conditional_warnv_with_ops): If the ops represent an
+ 	overflow check that can be expressed as an equality test, then adjust
+ 	ops to be that equality test.
+ 
+ 2017-02-14  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	* config/s390/s390-builtin-types.def: Remove flags argument.
+ 	* config/s390/s390.c (s390_init_builtins): Likewise.
+ 
+ 2017-02-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	* tree-ssa-loop-unswitch.c (hoist_guard): Release get_loop_body
+ 	vector.  Fix trailing white spaces.
+ 
+ 2017-02-14  James Greenhalgh  <james.greenhalgh@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_simd_container_mode): Handle
+ 	HFmode.
+ 
+ 2017-02-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	PR rtl-optimization/68664
+ 	* config/arm/arm.c (arm_sched_can_speculate_insn):
+ 	New function.  Declare prototype.
+ 	(TARGET_SCHED_CAN_SPECULATE_INSN): Define.
+ 
+ 2017-02-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	PR rtl-optimization/68664
+ 	* config/aarch64/aarch64.c (aarch64_sched_can_speculate_insn):
+ 	New function.
+ 	(TARGET_SCHED_CAN_SPECULATE_INSN): Define.
+ 
+ 2017-02-14  Amit Pawar  <amit.pawar@amd.com>
+ 
+ 	* config/i386/i386.c (znver1_cost): Fix the alignment for function and
+ 	max skip bytes for function, loop and jump.
+ 
+ 2017-02-14  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
+ 
+ 	* gimple-pretty-print.c (dump_unary_rhs): Adjust dump format for
+ 	ABS_EXPR for gimple dump.
+ 
+ 2017-02-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/79462
+ 	* config/sh/sh.c (expand_cbranchdi4): Don't clear operands[4].
+ 
+ 	PR tree-optimization/79408
+ 	* tree-vrp.c (simplify_div_or_mod_using_ranges): Handle also the
+ 	case when on TRUNC_MOD_EXPR op0 is INTEGER_CST.
+ 	(simplify_stmt_using_ranges): Call simplify_div_or_mod_using_ranges
+ 	also if rhs1 is INTEGER_CST.
+ 
+ 2017-02-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/79432
+ 	* tree-into-ssa.c (insert_phi_nodes): When the function can
+ 	have abnormal edges rewrite SSA names with broken use-def
+ 	dominance out of SSA and register them for PHI insertion.
+ 
+ 2017-02-13  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/79496
+ 	* gimple-ssa-sprintf.c (pass_sprintf_length::handle_gimple_call): Avoid
+ 	clearing info.nowrite flag when snprintf size argument is a range.
+ 
+ 2017-02-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* cprop.c (cprop_jump): Add missing space in string literal.
+ 	* tree-ssa-structalias.c (rewrite_constraints): Likewise.
+ 	(get_constraint_for_component_ref): Likewise.
+ 	* df-core.c (df_worklist_dataflow_doublequeue): Likewise.
+ 	* tree-outof-ssa.c (insert_partition_copy_on_edge): Likewise.
+ 	* lra-constraints.c (process_alt_operands): Likewise.
+ 	* ipa-inline.c (inline_small_functions): Likewise.
+ 	* tree-ssa-sccvn.c (visit_reference_op_store): Likewise.
+ 	* cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Likewise.
+ 	* trans-mem.c (diagnose_tm_1_op): Likewise.
+ 	* omp-grid.c (grid_find_single_omp_among_assignments): Likewise.
+ 	(grid_parallel_clauses_gridifiable): Likewise.
+ 
+ 	* config/nvptx/mkoffload.c (process): Add space in between
+ 	, and %d.
+ 
+ 	* config/i386/i386.h (REG_CLASS_NAMES): Add , in between
+ 	"MOD4_SSE_REGS" and "ALL_REGS".
+ 
+ 	* spellcheck.c (test_data): Add , in between "foo" and "food".
+ 
+ 2017-02-13  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
+ 
+ 	PR target/79449
+ 	* config/rs6000/rs6000.c (expand_block_compare): Make sure runtime
+ 	boundary crossing check and subsequent code generation agree.
+ 
+ 2017-02-13  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (has_memory_op): Delete.
+ 	(aarch64_madd_needs_nop): Use contains_mem_rtx_p instead of
+ 	has_memory_op.
+ 
+ 2017-02-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/79388
+ 	PR rtl-optimization/79450
+ 	* combine.c (distribute_notes): When removing TEM_INSN for which
+ 	corresponding dest has last value recorded, invalidate that last
+ 	value.
+ 
+ 2017-02-13  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* config/arm/arm.c (arm_print_tune_info): Use ASM_COMMENT_START instead
+ 	of explicit '@'.  Add missing assembly comment marker on branch costs
+ 	printout.
+ 
+ 2017-02-13  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* gengtype-lex.l (<in_struct>): Add '/'.
+ 
+ 2017-02-13  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR c/79471
+ 	* calls.c (expand_call): Replace XALLOCAVEC with XCNEWVEC.
+ 
+ 2017-02-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	* configure.ac (HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS):
+ 	Remove.
+ 	* configure: Re-generate.
+ 	* config.in: Likewise.
+ 	* graphite-dependences.c: Simplify as if
+ 	HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS was defined.
+ 	* graphite-isl-ast-to-gimple.c: Likewise.
+ 	* graphite-optimize-isl.c: Likewise.
+ 	* graphite-poly.c: Likewise.
+ 	* graphite-sese-to-poly.c: Likewise.
+ 	* graphite.h: Likewise.
+ 	* toplev.c: Include isl/version.h and use isl_version () for
+ 	printing the ISL version.
+ 	* doc/install.texi: Update ISL requirement.
+ 
+ 2017-02-12  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* doc/standards.texi (Standards): Update reference to
+ 	Objective-C 2.0.
+ 
+ 2017-02-12  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* doc/extend.texi (Named Address Spaces): sourceware.org now
+ 	defaults to https.
+ 	* doc/install.texi (Binaries): Ditto.
+ 	(Specific): Ditto.
+ 
+ 2017-02-11  Sandra Loosemore  <sandra@codesourcery.com>
+ 
+ 	* doc/cpp.texi: Replace "stringify"/"stringification" with C
+ 	standard terminology "stringize"/"stringizing" throughout.
+ 	* doc/cppinternals.texi: Likewise.
+ 
+ 2017-02-11  Sandra Loosemore  <sandra@codesourcery.com>
+ 
+ 	* doc/extend.texi: Fix some spelling mistakes and typos.
+ 	* doc/invoke.texi: Likewise.
+ 
+ 2017-02-11  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR ipa/79224
+ 	* params.def (inline-min-speedup) Change from 10 to 8.
+ 
+ 2017-02-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* doc/invoke.texi (fopenmp): Bump OpenMP version from 4.0 to
+ 	4.5.
+ 
+ 2017-02-11  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR ipa/79224
+ 	* ipa-inline-analysis.c (get_minimal_bb): New function.
+ 	(record_modified): Use it.
+ 	(remap_edge_change_prob): Handle also ancestor functions.
+ 
+ 2017-02-11  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* doc/contrib.texi (Contributors): Remove broken link into
+ 	the Mauve CVS repository.
+ 
+ 2017-02-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/79454
+ 	* internal-fn.c (expand_vector_ubsan_overflow): Use piece-wise
+ 	result computation whenever lhs doesn't have vector mode, not
+ 	just when it has BLKmode.
+ 
+ 2017-02-10  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* doc/makefile.texi (profiledbootstrap): Refer to the
+ 	installation instructions only in textual form.
+ 
+ 2017-02-10  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
+ 
+ 	PR target/79295
+ 	* config/rs6000/altivec.md (bcd<bcd_add_sub>): Fix constraints.
+ 
+ 2017-02-10  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* doc/install.texi (Specific): Use https for blackfin.uclinux.org.
+ 	(Specific): Update mingw-w64 reference.
+ 	(Binaries): Ditto.
+ 	(Specific): Remove broken link to Renesas RX processor.
+ 
+ 2017-02-10  Richard Biener  <rguenther@suse.de>
+ 
+ 	* toplev.c (process_options): Do not mention obsolete graphite
+ 	options when printing sorry message about missing graphite support.
+ 	Mention -floop-nest-optimize.
+ 
+ 2017-02-10  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	* config/aarch64/arm_neon.h (vtst_p8): Rewrite without asm.
+ 	(vtst_p16): Likewise.
+ 	(vtstq_p8): Likewise.
+ 	(vtstq_p16): Likewise.
+ 	(vtst_p64): New.
+ 	(vtstq_p64): Likewise.
+ 	* config/arm/arm_neon.h (vgetq_lane_p64): New.
+ 	(vset_lane_p64): New.
+ 	(vsetq_lane_p64): New.
+ 
+ 2017-02-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/79411
+ 	* tree-ssa-reassoc.c (is_reassociable_op): Return false if
+ 	stmt operands are SSA_NAMEs used in abnormal phis.
+ 	(can_reassociate_p): Return false if op is SSA_NAME used in abnormal
+ 	phis.
+ 
+ 2017-02-09  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR ipa/70795
+ 	* cgraphunit.c (cgraph_node::add_new_function): Set externally_visible
+ 	flag if needed.
+ 
+ 2017-02-09  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* tree-ssa-loop-unswitch.c (hoist_guard): Update profile.
+ 
+ 2017-02-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* omp-offload.c (oacc_loop_auto_partitions): Use || instead of |
+ 	to avoid warning.
+ 
+ 	PR c/79413
+ 	* gimplify.h (is_gimple_sizepos): Only test for INTEGER_CST constants,
+ 	not arbitrary TREE_CONSTANT.
+ 
+ 	PR c/79431
+ 	* gimplify.c (gimplify_adjust_omp_clauses): Ignore
+ 	"omp declare target link" attribute unless is_global_var.
+ 	* omp-offload.c (find_link_var_op): Likewise.
+ 
+ 2017-02-09  Nathan Sidwell  <nathan@codesourcery.com>
+ 	    Chung-Lin Tang  <cltang@codesourcery.com>
+ 
+ 	* gimplify.c (gimplify_scan_omp_clauses): No special handling for
+ 	OMP_CLAUSE_TILE.
+ 	(gimplify_adjust_omp_clauses): Don't delete TILE.
+ 	(gimplify_omp_for): Deal with TILE.
+ 	* internal-fn.c (expand_GOACC_TILE): New function.
+ 	* internal-fn.def (GOACC_DIM_POS): Comment may be overly conservative.
+ 	(GOACC_TILE): New.
+ 	* omp-expand.c (struct oacc_collapse): Add tile and outer fields.
+ 	(expand_oacc_collapse_init): Add LOC paramter.  Initialize tile
+ 	element fields.
+ 	(expand_oacc_collapse_vars): Add INNER parm, adjust for tiling,
+ 	avoid DIV for outermost collapse var.
+ 	(expand_oacc_for): Insert tile element loop as needed.  Adjust.
+ 	Remove out of date comments, fix whitespace.
+ 	* omp-general.c (omp_extract_for_data): Deal with tiling.
+ 	* omp-general.h (enum oacc_loop_flags): Add OLF_TILE flag,
+ 	adjust OLF_DIM_BASE value.
+ 	(struct omp_for_data): Add tiling field.
+ 	* omp-low.c (scan_sharing_clauses): Allow OMP_CLAUSE_TILE.
+ 	(lower_oacc_head_mark): Add OLF_TILE as appropriate.  Ensure 2 levels
+ 	for auto loops.  Remove default auto determining, moved to
+ 	oacc_loop_fixed_partitions.
+ 	* omp-offload.c (struct oacc_loop): Change 'ifns' to vector of call
+ 	stmts, add e_mask field.
+ 	(oacc_dim_call): New function, abstracted out from oacc_thread_numbers.
+ 	(oacc_thread_numbers): Use oacc_dim_call.
+ 	(oacc_xform_tile): New.
+ 	(new_oacc_loop_raw): Initialize e_mask, adjust for ifns vector.
+ 	(finish_oacc_loop): Adjust for ifns vector.
+ 	(oacc_loop_discover_walk): Append loop abstraction sites to list,
+ 	add case for GOACC_TILE fns.
+ 	(oacc_loop_xform_loop): Delete.
+ 	(oacc_loop_process): Iterate over call list directly, and add
+ 	handling for GOACC_TILE fns.
+ 	(oacc_loop_fixed_partitions): Determine default auto, deal with TILE,
+ 	dump partitioning.
+ 	(oacc_loop_auto_partitions): Add outer_assign parm. Assign all but
+ 	vector partitioning to outer loops.  Assign 2 partitions to loops
+ 	when available. Add TILE handling.
+ 	(oacc_loop_partition): Adjust oacc_loop_auto_partitions call.
+ 	(execite_oacc_device_lower): Process GOACC_TILE fns,
+ 	ignore unknown specs.
+ 	* tree-nested.c (convert_nonlocal_omp_clauses): Allow OMP_CLAUSE_TILE.
+ 	* tree.c (omp_clause_num_ops): Adjust TILE ops.
+ 	* tree.h (OMP_CLAUSE_TILE_ITERVAR, OMP_CLAUSE_TILE_COUNT): New.
+ 
+ 2017-02-09  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* configure.ac (ACX_BUGURL): Update.
+ 	* configure: Regenerate.
+ 
+ 2017-02-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/69823
+ 	* graphite-scop-detection.c (scop_detection::harmful_loop_in_region):
+ 	Properly enumerate all BBs in the region.  Use auto_vec/auto_bitmap.
+ 
+ 2017-02-09  Andrew Burgess  <andrew.burgess@embecosm.com>
+ 
+ 	* config/arc/arc-c.def: Add __NPS400__ definition.
+ 	* config/arc/arc.h (CPP_SPEC): Don't define __NPS400__ here.
+ 	(TARGET_NPS400): Define.
+ 
+ 2017-02-09  Andrew Burgess  <andrew.burgess@embecosm.com>
+ 
+ 	* config/arc/arc-arch.h (arc_arch_t): Move unchanged to earlier in
+ 	file.
+ 	(arc_cpu_t): Change base_architecture field, arch, to a arc_arc_t
+ 	pointer, arch_info.
+ 	(arc_cpu_types): Fill the arch_info field with a pointer into the
+ 	arc_arch_types table.
+ 	(arc_selected_cpu): Declare.
+ 	* config/arc/arc.c (arc_selected_cpu): Make global.
+ 	(arc_selected_arch): Delete.
+ 	(arc_base_cpu): Delete.
+ 	(arc_override_options): Remove references to deleted variables,
+ 	update access to arch information.
+ 	(ARC_OPT): Update access to arch information.
+ 	(ARC_OPTX): Likewise.
+ 	* config/arc/arc.h (arc_base_cpu): Remove declaration.
+ 	(TARGET_ARC600): Update access to arch information.
+ 	(TARGET_ARC601): Likewise.
+ 	(TARGET_ARC700): Likewise.
+ 	(TARGET_EM): Likewise.
+ 	(TARGET_HS): Likewise.
+ 	* config/arc/driver-arc.c (arc_cpu_to_as): Update access to arch
+ 	information.
+ 
+ 2017-02-08  Pat Haugen  <pthaugen@us.ibm.com>
+ 
+ 	PR target/78604
+ 	* config/rs6000/rs6000.c (rs6000_emit_vector_cond_expr): Invert
+ 	condition/operands for integer GE/LE/GEU/LEU operations.
+ 
+ 2017-02-08  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR translation/79397
+ 	* config/rs6000/rs6000.opt (maltivec=le, maltivec=be): Fix spelling
+ 	of AltiVec.
+ 
+ 2017-02-08  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR ipa/79375
+ 	* ipa-prop.c (ipa_alloc_node_params): Make static, return bool
+ 	whether allocation happened.
+ 	(ipa_initialize_node_params): Do not call ipa_alloc_node_params if
+ 	nothing was allocated.
+ 
+ 2017-02-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/79408
+ 	* tree-vrp.c (simplify_div_or_mod_using_ranges): If op1 is not
+ 	constant, but SSA_NAME with a known integer range, use the minimum
+ 	of that range instead of op1 to determine if modulo can be replaced
+ 	with its first operand.
+ 
+ 2016-02-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* config/riscv/riscv.c (riscv_build_integer_1): Avoid use of INT16_MAX.
+ 
+ 2017-02-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/71824
+ 	* graphite-scop-detection.c (scop_detection::build_scop_breadth):
+ 	Check all loops contained in the merged region.
+ 
+ 2017-02-07  Andrew Pinski  <apinski@cavium.com>
+ 
+ 	* config/aarch64/aarch64.md (popcount<mode>2): New pattern.
+ 
+ 2017-02-07  Andrew Pinski  <apinski@cavium.com>
+ 
+ 	* config/aarch64/aarch64-cores.def (thunderx): Disable LSE.
+ 	(thunderxt88): Likewise.
+ 	(thunderxt81): Disable LSE and change v8.1 to v8.
+ 	(thunderxt83): Likewise.
+ 
+ 2017-02-07  Jakub Jelinek  <jakub@redhat.com>
+ 	    Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/79399
+ 	* ira-int.h (struct target_ira_int): Change x_max_struct_costs_size
+ 	type from int to size_t.
+ 	* ira-costs.c (struct_costs_size): Change type from int to size_t.
+ 
+ 2017-02-07  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/79386
+ 	* cprop.c (bypass_conditional_jumps): Initialize
+ 	bypass_last_basic_block already before splitting bbs after
+ 	unconditional traps...
+ 	(bypass_conditional_jumps): ... rather than here.
+ 
+ 	PR target/79299
+ 	* config/i386/sse.md (xtg_mode, gatherq_mode): New mode attrs.
+ 	(*avx512f_gathersi<mode>, *avx512f_gathersi<mode>_2,
+ 	*avx512f_gatherdi<mode>, *avx512f_gatherdi<mode>_2): Use them,
+ 	fix -masm=intel patterns.
+ 
+ 2017-02-07  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/79256
+ 	PR middle-end/79278
+ 	* builtins.c (get_object_alignment_2): Use min_align_of_type
+ 	to extract alignment for MEM_REFs to honor BIGGEST_FIELD_ALIGNMENT
+ 	and ADJUST_FIELD_ALIGN.
+ 
+ 	* doc/tm.texi.in (ADJUST_FIELD_ALIGN): Adjust to take additional
+ 	type parameter.
+ 	* doc/tm.texi: Regenerate.
+ 	* stor-layout.c (layout_decl): Adjust.
+ 	(update_alignment_for_field): Likewise.
+ 	(place_field): Likewise.
+ 	(min_align_of_type): Likewise.
+ 	* config/arc/arc.h (ADJUST_FIELD_ALIGN): Adjust.
+ 	* config/epiphany/epiphany.h (ADJUST_FIELD_ALIGN): Likewise.
+ 	* config/epiphany/epiphany.c (epiphany_adjust_field_align): Likewise.
+ 	* config/frv/frv.h (ADJUST_FIELD_ALIGN): Likewise.
+ 	* config/frv/frv.c (frv_adjust_field_align): Likewise.
+ 	* config/i386/i386.h (ADJUST_FIELD_ALIGN): Likewise.
+ 	* config/i386/i386.c (x86_field_alignment): Likewise.
+ 	* config/rs6000/aix.h (ADJUST_FIELD_ALIGN): Likewise.
+ 	* config/rs6000/darwin.h (ADJUST_FIELD_ALIGN): Likewise.
+ 	* config/rs6000/freebsd64.h (ADJUST_FIELD_ALIGN): Likewise.
+ 	* config/rs6000/linux64.h (ADJUST_FIELD_ALIGN): Likewise.
+ 	* config/rs6000/sysv4.h (ADJUST_FIELD_ALIGN): Likewise.
+ 	* config/rs6000/rs6000.c (rs6000_special_adjust_field_align_p):
+ 	 Likewise.
+ 
+ 	Revert
+ 	2017-01-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/79256
+ 	* targhooks.c (default_builtin_vector_alignment_reachable): Honor
+ 	BIGGEST_FIELD_ALIGNMENT and ADJUST_FIELD_ALIGN to fix up bogus
+ 	alignment on TYPE.
+ 
+ 2017-02-07  Toma Tabacu  <toma.tabacu@imgtec.com>
+ 
+ 	* config/mips/mips.c (mips_expand_builtin_insn): Convert the QImode
+ 	argument of the pshufh, psllh, psllw, psrah, psraw, psrlh, psrlw
+ 	builtins to SImode and emit a zero-extend, if necessary.
+ 
+ 2017-02-06  Palmer Dabbelt  <palmer@dabbelt.com>
+ 
+ 	* docs/invoke.texi (RISC-V Options): Alphabetize.
+ 
+ 2017-02-06  Palmer Dabbelt  <palmer@dabbelt.com>
+ 
+ 	* doc/invoke.texi (RISC-V Options): Use two spaces to separate
+ 	options.
+ 
+ 2017-02-06  Palmer Dabbelt  <palmer@dabbelt.com>
+ 
+ 	* config/riscv/riscv.c: New file.
+ 	* common/config/riscv/riscv-common.c: Likewise.
+ 	* config.gcc: Likewise.
+ 	* config/riscv/constraints.md: Likewise.
+ 	* config/riscv/elf.h: Likewise.
+ 	* config/riscv/generic.md: Likewise.
+ 	* config/riscv/linux.h: Likewise.
+ 	* config/riscv/multilib-generator: Likewise.
+ 	* config/riscv/peephole.md: Likewise.
+ 	* config/riscv/pic.md: Likewise.
+ 	* config/riscv/predicates.md: Likewise.
+ 	* config/riscv/riscv-builtins.c: Likewise.
+ 	* config/riscv/riscv-c.c: Likewise.
+ 	* config/riscv/riscv-ftypes.def: Likewise.
+ 	* config/riscv/riscv-modes.def: Likewise.
+ 	* config/riscv/riscv-opts.h: Likewise.
+ 	* config/riscv/riscv-protos.h: Likewise.
+ 	* config/riscv/riscv.h: Likewise.
+ 	* config/riscv/riscv.md: Likewise.
+ 	* config/riscv/riscv.opt: Likewise.
+ 	* config/riscv/sync.md: Likewise.
+ 	* config/riscv/t-elf-multilib: Likewise.
+ 	* config/riscv/t-linux: Likewise.
+ 	* config/riscv/t-linux-multilib: Likewise.
+ 	* config/riscv/t-riscv: Likewise.
+ 	* configure.ac: Likewise.
+ 	* doc/contrib.texi: Add Kito Cheng, Palmer Dabbelt, and Andrew
+ 	Waterman as RISC-V maintainers.
+ 	* doc/install.texi: Add RISC-V entries.
+ 	* doc/invoke.texi: Add RISC-V options section.
+ 	* doc/md.texi: Add RISC-V constraints section.
+ 	* configure: Regenerated.
+ 
+ 2017-02-06  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	PR target/66144
+ 	* config/rs6000/vector.md (vcond<mode><mode>): Allow the true and
+ 	false values to be constant vectors with all 0 or all 1 bits set.
+ 	(vcondu<mode><mode>): Likewise.
+ 	* config/rs6000/predicates.md (vector_int_reg_or_same_bit): New
+ 	predicate.
+ 	(fpmask_comparison_operator): Update comment.
+ 	(vecint_comparison_operator): New predicate.
+ 	* config/rs6000/rs6000.c (rs6000_emit_vector_cond_expr): Optimize
+ 	vector conditionals when the true and false values are constant
+ 	vectors with all 0 bits or all 1 bits set.
+ 
+ 2017-02-06  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR  tree-optimization/79376
+ 	* gimple-fold.c (get_range_strlen): Set the minimum length to zero.
+ 
+ 2017-02-06  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/sse.md (vector modes -> vec_extract* splitter): Use
+ 	explicit subreg RTX with operand 1.  Use VECTOR_MODE_P predicate
+ 	to simplify split condition.
+ 
+ 2017-02-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* omp-expand.c (oxpand_omp_atomic_fetch_op,
+ 	expand_omp_atomic_pipeline): Return false if can_atomic_load_p is
+ 	false.
+ 
+ 2017-02-06  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR rtl-optimization/68664
+ 	* target.def (can_speculate_insn): New hook.
+ 	* doc/tm.texi.in (TARGET_SCHED_CAN_SPECULATE_INSN): New hook.
+ 	* doc/tm.texi: Regenerate.
+ 	* sched-rgn.c (can_schedule_ready_p): Use the new hook.
+ 	* config/rs6000/rs6000.c (TARGET_SCHED_CAN_SPECULATE_INSN): New macro.
+ 	(rs6000_sched_can_speculate_insn): New function.
+ 
+ 2017-02-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/79284
+ 	* tree-vectorizer.h (VECT_SCALAR_BOOLEAN_TYPE_P): Define.
+ 	* tree-vect-stmts.c (vect_get_vec_def_for_operand,
+ 	vectorizable_mask_load_store, vectorizable_operation,
+ 	vect_is_simple_cond, get_same_sized_vectype): Use it instead
+ 	of comparing TREE_CODE of a type against BOOLEAN_TYPE.
+ 	* tree-vect-patterns.c (check_bool_pattern, search_type_for_mask_1,
+ 	vect_recog_bool_pattern, vect_recog_mask_conversion_pattern): Likewise.
+ 	* tree-vect-slp.c (vect_get_constant_vectors): Likewise.
+ 	* tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
+ 	Remove redundant gimple_code (stmt) == GIMPLE_ASSIGN test after
+ 	is_gimple_assign (stmt).  Replace another such test with
+ 	is_gimple_assign (stmt).
+ 
+ 2017-02-06  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR target/78883
+ 	* config/avr/avr.c (rtl-iter.h): Include it.
+ 	(TARGET_LEGITIMATE_COMBINED_INSN): New hook define...
+ 	(avr_legitimate_combined_insn): ...and implementation.
+ 
+ 2017-02-06  Dominik Vogt  <vogt@linux.vnet.ibm.com>
+ 
+ 	* config/s390/predicates.md ("larl_operand"): Use macros from hwint.h.
+ 	* config/s390/s390.c (s390_const_operand_ok)
+ 	(s390_canonicalize_comparison, s390_extract_part)
+ 	(s390_single_part, s390_contiguous_bitmask_nowrap_p)
+ 	(s390_contiguous_bitmask_p, s390_rtx_costs)
+ 	(legitimize_pic_address): Likewise.
+ 	* config/s390/s390.md ("clzdi2", "clztidi2"): Likewise.
+ 	* config/s390/vx-builtins.md ("vec_genbytemaskv16qi")
+ 	("vec_permi<mode>", "vfae<mode>", "*vfaes<mode>", "vstrc<mode>")
+ 	("*vstrcs<mode>"): Use UINTVAL() to set unsigned HOST_WIDE_INT.
+ 	* config/s390/vector.md ("vec_vfenes<mode>"): Likewise.
+ 
+ 2017-02-06  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	* config/avr/avr.md (*addhi3_zero_extend): Add alternative where
+ 	REGNO($0) == REGNO($1).
+ 
+ 2017-02-06  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	* config/s390/linux.h(SIZE_TYPE): Add comment.
+ 
+ 2017-02-06  Julian Brown  <julian@codesourcery.com>
+ 	    Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
+ 	    Virendra Pathak  <virendra.pathak@broadcom.com>
+ 
+ 	* config/aarch64/aarch64-cores.def: Change the scheduler
+ 	to Thunderx2t99.
+ 	* config/aarch64/aarch64.md: Include thunderx2t99.md.
+ 	* config/aarch64/thunderx2t99.md: New file.
+ 
+ 2017-02-05  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* doc/standards.texi (Go Language): Update link to language
+ 	standard.
+ 
+ 2017-02-05  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* tree-eh.c (lower_resx): Sanitize profile.
+ 	(cleanup_empty_eh_move_lp): Likewise.
+ 
+ 2017-02-05  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR tree-ssa/79347
+ 	* cfgloopmanip.c (lv_adjust_loop_entry_edge, loop_version): Add
+ 	ELSE_PROB.
+ 	* cfgloopmanip.h (loop_version): Update prototype.
+ 	* modulo-sched.c (sms_schedule): Update call of loop_version.
+ 	* tree-if-conv.c(version_loop_for_if_conversion): Likewise.
+ 	* tree-parloops.c (gen_parallel_loop): Likewise.
+ 	* tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Likewise.
+ 	* tree-ssa-loop-split.c (split_loop): Likewise.
+ 	* tree-ssa-loop-unswitch.c (tree_unswitch_loop): Likewise.
+ 	* tree-vect-loop-manip.c (vect_loop_versioning): Likewise.
+ 
+ 2017-02-05  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR bootstrap/78985
+ 	* config/s390/s390.c (s390_gimplify_va_arg): Initialize local
+ 	variable to NULL.
+ 	(print_operand_address): Initialize a struct to zero.
+ 
+ 2017-02-05  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* doc/contrib.texi (Contributors): Refer to Hans Boehm's
+ 	garbage collector only in textual form.
+ 
+ 2017-02-05  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* doc/extend.texi (x86 specific memory model extensions for
+ 	transactional memory): Simplify a phrase.
+ 
+ 2017-02-05  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR target/79353
+ 	* config/sparc/sync.md (atomic_loaddi_1): Replace 'U' constraint with
+ 	'r', 'm' constraint with 'T' and !TARGET_ARCH64 with TARGET_ARCH32.
+ 	(atomic_storedi_1): Likewise.
+ 
+ 2017-02-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/79338
+ 	* tree-parloops.c (gather_scalar_reductions): Don't call
+ 	vect_analyze_loop_form for loop->inner before destroying loop's
+ 	loop_vinfo.
+ 
+ 2017-02-03  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR tree-optimization/79327
+ 	* gimple-ssa-sprintf.c (tree_digits): Avoid adding the base prefix
+ 	when precision has resulted in leading zeros.
+ 	(format_integer): Adjust the likely counter to assume an unknown
+ 	argument that may be zero is non-zero.
+ 
+ 2017-02-03  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/78689
+ 	* tree-inline.c (copy_tree_body_r) [COND_EXPR]: Revert change to
+ 	avoid copying non-taken branch.
+ 
+ 2017-02-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/79340
+ 	* tree-vect-loop.c (vectorizable_reduction): Release
+ 	vec_defs elements after safe_splicing them into other vectors.
+ 	Formatting fixes.
+ 
+ 	PR tree-optimization/79327
+ 	* gimple-ssa-sprintf.c (adjust_range_for_overflow): If returning
+ 	true, always set *argmin and *argmax to TYPE_{MIN,MAX}_VALUE of
+ 	dirtype.
+ 	(format_integer): Use wide_int_to_tree instead of build_int_cst
+ 	+ to_?hwi.  If argmin is NULL, just set argmin and argmax to
+ 	TYPE_{MIN,MAX}_VALUE of argtype.  Simplify and fix computation
+ 	of shortest and longest sequence.
+ 
+ 2017-02-03  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.c (dimode_scalar_chain::convert_reg):
+ 	Use pextrd for TARGET_SSE4_1 when creating scalar copy.
+ 
+ 2017-02-03  Walter Lee  <walt@tilera.com>
+ 
+ 	PR target/78862
+ 	* config/tilegx/tilegx.md (tilegx_expand_prologue): Add blockage
+ 	after initial stackframe link reg save.
+ 	* config/tilepro/tilepro.md (tilepro_expand_prologue): Likewise.
+ 
+ 2017-02-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/79354
+ 	* config/rs6000/rs6000.md (movsi_from_sf): Use wb constraint instead of
+ 	wu for stxssp alternative.
+ 
+ 2017-02-03  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR tree-optimization/79352
+ 	* gimple-fold.c (get_range_strlen): Add argument.
+ 	(get_range_strlen): Change return type to bool.
+ 	(get_maxval_strlen): Pass in a dummy argument.
+ 	* gimple-fold.h (get_range_strlen): Change return type to bool.
+ 	* gimple-ssa-sprintf.c (get_string_length): Set unlikely counter.
+ 	* tree.h (array_at_struct_end_p): Add argument.
+ 	* tree.c (array_at_struct_end_p): Handle it.
+ 
+ 2017-02-03  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR lto/66295
+ 	* multiple_target.c (create_dispatcher_calls): Redirect edge
+ 	from a caller of a dispatcher.
+ 	(expand_target_clones): Make the clones local.
+ 	(ipa_target_clone): Do both target clones and resolvers.
+ 	(ipa_dispatcher_calls): Remove the pass.
+ 	(pass_dispatcher_calls::gate): Likewise.
+ 	(make_pass_dispatcher_calls): Likewise.
+ 	* passes.def (pass_target_clone): Put as very first IPA early
+ 	pass.
+ 
+ 2017-02-03  Martin Liska  <mliska@suse.cz>
+ 
+ 	* symtab.c (symtab_node::binds_to_current_def_p): Bail out
+ 	in case of a function with ifunc attribute.
+ 
+ 2017-02-03  Martin Liska  <mliska@suse.cz>
+ 
+ 	* cgraph.c (cgraph_node::dump): Dump function version info.
+ 	* symtab.c (symtab_node::dump_base): Add missing new line.
+ 
+ 2017-02-02  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* tree-ssa-ifcombine.c (update_profile_after_ifcombine): New function.
+ 	(ifcombine_ifandif): Use it.
+ 
+ 2017-02-03  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/invoke.texi: Document default value for
+ 	use-after-scope-direct-emission-threshold.
+ 
+ 2017-02-03  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR tree-optimization/79339
+ 	* gimple-ssa-sprintf.c (format_floating_max): Call mpfr_clear.
+ 	(format_floating): Likewise.
+ 
+ 2017-02-03  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR ipa/79337
+ 	* ipa-prop.c (ipa_node_params_t::insert): Remove current
+ 	implementation.
+ 	(ipa_node_params_t::remove): Likewise.
+ 	* ipa-prop.h (ipa_node_params::ipa_node_params): Make default
+ 	initialization from removed ipa_node_params_t::insert.
+ 	(ipa_node_params::~ipa_node_params): Move from removed
+ 	ipa_node_params_t::release.
+ 	* symbol-summary.h (symbol_summary::m_released): New member.
+ 	Do not release a summary twice.  Do not allow to call finalizer
+ 	for types of a summary that live in GGC memory.
+ 
+ 2017-02-02  Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
+ 
+ 	* config/aarch64/aarch64.c (thunderx2t99_tunings): Enable AES and
+ 	cmp_branch fusion.
+ 
+ 2017-02-02  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/79275
+ 	* gimple-ssa-sprintf.c (get_string_length): Set lower bound to zero.
+ 	(format_string): Tighten up the range of output for non-constant
+ 	strings and correct the expected range for wide non-constant strings.
+ 
+ 2017-02-02  Martin Sebor  <msebor@redhat.com>
+ 
+ 	* doc/invoke.texi (-maccumulate-args): Fix bad grammar.
+ 
+ 	PR middle-end/32003
+ 	* doc/invoke.texi (-fdump-tree-): Remove pass-specific options from
+ 	index.
+ 	(-fdump-tree-@var): Add to index and document how to come up
+ 	with pass-specific option and dump file names.
+ 	(-fdump-passes): Clarify where to look for output.
+ 
+ 2017-02-02  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR middle-end/77445
+ 	* tree-ssa-threadbackward.c (profitable_jump_thread_path): Dump
+ 	statistics of the analyzed path; allow threading for speed when
+ 	any of BBs along the path are optimized for speed.
+ 
+ 2017-02-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR middle-end/78468
+ 	* emit-rtl.c (init_emit): Add ??? comment for problematic alignment
+ 	settings of the virtual registers.
+ 
+ 	Revert again
+ 	2016-08-23  Dominik Vogt  <vogt@linux.vnet.ibm.com>
+ 
+ 	* explow.c (get_dynamic_stack_size): Take known alignment of stack
+ 	pointer + STACK_DYNAMIC_OFFSET into account when calculating the size
+ 	needed.
+ 
+ 2017-02-02  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	* config/s390/vx-builtins.md ("vec_ceil", "vec_floor")
+ 	("vec_trunc", "vec_roundc", "vec_round"): Remove expanders.
+ 
+ 2017-02-02  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	* config/s390/s390.md: Add missing comments with the expanded
+ 	mnemonics.
+ 	* config/s390/vector.md: Likewise.
+ 	* config/s390/vx-builtins.md: Likewise.
+ 
+ 2017-02-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/79197
+ 	* config/rs6000/rs6000.md (*fixuns_trunc<mode>di2_fctiduz): Rename to ...
+ 	(fixuns_trunc<mode>di2): ... this, remove previous expander.  Put all
+ 	conditions on a single line.
+ 
+ 2017-02-02  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	* config/s390/s390-c.c (s390_cpu_cpp_builtins_internal): Rename
+ 	__S390_VX__ to __VX__.
+ 
+ 2017-02-01  Andrew Pinski  <apinski@cavium.com>
+ 
+ 	* tree-vect-loop.c (vect_compute_single_scalar_iteration_cost): Pass
+ 	stmt_info to record_stmt_cost.
+ 	(vect_get_known_peeling_cost): Pass stmt_info if known to
+ 	record_stmt_cost.
+ 	* config/aarch64/aarch64-protos.h (cpu_vector_cost): Split
+ 	cpu_vector_cost field into
+ 	scalar_int_stmt_cost and scalar_fp_stmt_cost.  Split vec_stmt_cost
+ 	field into vec_int_stmt_cost and vec_fp_stmt_cost.
+ 	* config/aarch64/aarch64.c (generic_vector_cost): Update for the
+ 	splitting of scalar_stmt_cost and vec_stmt_cost.
+ 	(thunderx_vector_cost): Likewise.
+ 	(cortexa57_vector_cost): LIkewise.
+ 	(exynosm1_vector_cost): Likewise.
+ 	(xgene1_vector_cost): Likewise.
+ 	(thunderx2t99_vector_cost): Improve after the splitting of the two
+ 	fields.
+ 	(aarch64_builtin_vectorization_cost): Update for the splitting of
+ 	scalar_stmt_cost and vec_stmt_cost.
+ 
+ 2017-02-01  Torvald Riegel  <triegel@redhat.com>
+ 	    Richard Henderson  <rth@redhat.com>
+ 
+ 	* builtins.c (fold_builtin_atomic_always_lock_free): Make "lock-free"
+ 	conditional on existance of a fast atomic load.
+ 	* optabs-query.c (can_atomic_load_p): New function.
+ 	* optabs-query.h (can_atomic_load_p): Declare it.
+ 	* optabs.c (expand_atomic_exchange): Always delegate to libatomic if
+ 	no fast atomic load is available for the particular size of access.
+ 	(expand_atomic_compare_and_swap): Likewise.
+ 	(expand_atomic_load): Likewise.
+ 	(expand_atomic_store): Likewise.
+ 	(expand_atomic_fetch_op): Likewise.
+ 	* testsuite/lib/target-supports.exp
+ 	(check_effective_target_sync_int_128): Remove x86 because it provides
+ 	no fast atomic load.
+ 	(check_effective_target_sync_int_128_runtime): Likewise.
+ 
+ 2017-02-01  Richard Biener  <rguenther@suse.de>
+ 
+ 	* graphite.c: Include tree-vectorizer.h for find_loop_location.
+ 	(graphite_transform_loops): Provide opt-info for optimized nests.
+ 	* tree-parloop.c (parallelize_loops): Provide opt-info for
+ 	parallelized loops.
+ 
+ 2017-02-01  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/79315
+ 	* tree-cfg.c (move_stmt_op): Never set TREE_BLOCK when it
+ 	was not set before.
+ 
+ 2017-02-01  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/71824
+ 	* graphite-scop-detection.c (scop_detection::build_scop_breadth):
+ 	Verify the loops are valid in the merged SESE region.
+ 	(scop_detection::can_represent_loop_1): Check analyzing the
+ 	evolution of the number of iterations in the region succeeds.
+ 
+ 2017-01-31  Ian Lance Taylor  <iant@golang.org>
+ 
+ 	* config/i386/i386.c (ix86_expand_split_stack_prologue): Add
+ 	REG_ARGS_SIZE note to 32-bit push insns and call insn.
+ 
+ 2017-01-31  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR preprocessor/79210
+ 	* input.c (get_substring_ranges_for_loc): Replace line_width
+ 	assertion with error-handling.
+ 
+ 2017-01-31  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/77318
+ 	* graphite-sese-to-poly.c (extract_affine): Fix assert.
+ 	(create_pw_aff_from_tree): Take loop parameter.
+ 	(add_condition_to_pbb): Pass loop of the condition to
+ 	create_pw_aff_from_tree.
+ 
+ 2017-01-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* config/s390/s390.c (s390_asan_shadow_offset): New function.
+ 	(TARGET_ASAN_SHADOW_OFFSET): Redefine.
+ 
+ 2017-01-31  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	PR target/78597
+ 	PR target/79038
+ 	* config/rs6000/rs6000-protos.h (convert_float128_to_int): Delete,
+ 	no longer used.
+ 	(convert_int_to_float128): Likewise.
+ 	* config/rs6000/rs6000.c (convert_float128_to_int): Likewise.
+ 	(convert_int_to_float128): Likewise.
+ 	* config/rs6000/rs6000.md (UNSPEC_IEEE128_MOVE): Likewise.
+ 	(UNSPEC_IEEE128_CONVERT): Likewise.
+ 	(floatsi<mode>2, FLOAT128 iterator): Bypass calling
+ 	rs6000_expand_float128_convert if we have IEEE 128-bit hardware.
+ 	Use local variables for IBM extended format.
+ 	(fix_trunc<mode>si2, FLOAT128 iterator): Likewise.
+ 	(fix_trunc<mode>si2_fprs): Likewise.
+ 	(fixuns_trunc<IEEE128:mode><SDI:mode>2): Likewise.
+ 	(floatuns<IEEE128:mode>2, IEEE128 iterator): Likewise.
+ 	(fix<uns>_<mode>si2_hw): Rework the IEEE 128-bt hardware support
+ 	to know that we can now have integers of all sizes in vector
+ 	registers.
+ 	(fix<uns>_<mode>di2_hw): Likewise.
+ 	(float<uns>_<mode>si2_hw): Likewise.
+ 	(fix_<mode>si2_hw): Likewise.
+ 	(fixuns_<mode>si2_hw): Likewise.
+ 	(float<uns>_<mode>di2_hw): Likewise.
+ 	(float_<mode>di2_hw): Likewise.
+ 	(float_<mode>si2_hw): Likewise.
+ 	(floatuns_<mode>di2_hw): Likewise.
+ 	(floatuns_<mode>si2_hw): Likewise.
+ 	(xscvqp<su>wz_<mode>): Delete, no longer used.
+ 	(xscvqp<su>dz_<mode>): Likewise.
+ 	(xscv<su>dqp_<mode>): Likewise.
+ 	(ieee128_mfvsrd_64bit): Likewise.
+ 	(ieee128_mfvsrd_32bit): Likewise.
+ 	(ieee128_mfvsrwz): Likewise.
+ 	(ieee128_mtvsrw): Likewise.
+ 	(ieee128_mtvsrd_64bit): Likewise.
+ 	(ieee128_mtvsrd_32bit): Likewise.
+ 
+ 2017-01-31  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR ipa/79285
+ 	* ipa-prop.c (ipa_free_all_node_params): Call release method
+ 	instead of ~sumbol_summary to not to trigger double times
+ 	dtor of hash_map.
+ 
+ 2017-01-31  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	PR tree-optimization/71691
+ 	* bitmap.h (class auto_bitmap): New.
+ 	* tree-ssa-loop-unswitch.c (tree_may_unswitch_on): Call
+ 	is_maybe_undefined instead of ssa_undefined_value_p.
+ 
+ 2017-01-31  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	* config/s390/s390-c.c (s390_cpu_cpp_builtins_internal): Rename
+ 	__S390_ARCH_LEVEL__ to __ARCH__.
+ 
+ 2017-01-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/79267
+ 	* value-prof.c (gimple_ic): Only drop lhs for noreturn calls
+ 	if should_remove_lhs_p is true.
+ 
+ 2017-01-30  Alexandre Oliva  <aoliva@redhat.com>
+ 
+ 	PR debug/63238
+ 	* dwarf2out.c (clone_as_declaration): Drop DW_AT_alignment.
+ 	(add_alignment_attribute): New.
+ 	(base_type_die): Add alignment attribute.
+ 	(subrange_type_die): Likewise.
+ 	(modified_type_die): Likewise.
+ 	(gen_array_type_die): Likewise.
+ 	(gen_descr_array_type_die: Likewise.
+ 	(gen_enumeration_type_die): Likewise.
+ 	(gen_subprogram_die): Likewise.
+ 	(gen_variable_die): Likewise.
+ 	(gen_field_die): Likewise.
+ 	(gen_ptr_to_mbr_type_die): Likewise.
+ 	(gen_struct_or_union_type_die): Likewise.
+ 	(gen_subroutine_type_die): Likewise.
+ 	(gen_typedef_die): Likewise.
+ 	(base_type_cmp): Compare alignment attribute.
+ 
+ 2017-01-30  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
+ 
+ 	PR target/79170
+ 	* config/rs6000/altivec.md (*setb_internal): Rename to setb_signed.
+ 	(setb_unsigned) New pattern for setb with CCUNS.
+ 	* config/rs6000/rs6000.c (expand_block_compare): Use a different
+ 	subfc./subfe sequence to avoid overflow problems.  Generate a
+ 	shorter sequence with cmpld/setb for power9.
+ 	* config/rs6000/rs6000.md (subf<mode>3_carry_dot2): Add a new pattern
+ 	for generating subfc. instruction.
+ 	(cmpstrsi): Add TARGET_POPCNTD predicate as the generate sequence
+ 	now uses this instruction.
+ 
+ 2017-01-30  Ian Lance Taylor  <iant@google.com>
+ 
+ 	PR debug/79289
+ 	* dwarf2out.c (gen_type_die_with_usage): When picking a variant
+ 	for FUNCTION_TYPE/METHOD_TYPE, use the first matching one.
+ 
+ 2017-01-30  Martin Sebor  <msebor@redhat.com>
+ 
+ 	* gimple-ssa-sprintf.c (fmtresult::adjust_for_width_or_precision):
+ 	Move constant to the right of a relational operator.
+ 	(get_mpfr_format_length, format_character, format_string): Ditto.
+ 	(should_warn_p, maybe_warn): Same.
+ 
+ 	* doc/invoke.texi (-Wformat-truncation=1): Fix typo.
+ 
+ 2017-01-30  Maxim Ostapenko  <m.ostapenko@samsung.com>
+ 
+ 	PR lto/79061
+ 	* asan.c (get_translation_unit_decl): Remove function.
+ 	(asan_add_global): Force has_dynamic_init to zero in LTO mode.
+ 
+ 2017-01-30  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR gcov-profile/79259
+ 	* opts.c (common_handle_option): Enable flag_ipa_bit_cp w/
+ 	-fprofile-generate.
+ 
+ 2017-01-30  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR bootstrap/78985
+ 	* config/aarch64/cortex-a57-fma-steering.c (func_fma_steering::analyze):
+ 	Initialize variables with NULL value.
+ 
+ 2017-01-30  Richard Earnshaw  <rearnsh@arm.com>
+ 
+ 	PR target/79260
+ 	* config.gcc (arm*-*-*): Add arm/arm-flags.h and arm/arm-isa.h to
+ 	tm_p_file.
+ 	* arm/arm-protos.h: Don't directly include arm-flags.h and arm-isa.h.
+ 
+ 2017-01-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/79276
+ 	* tree-vrp.c (process_assert_insertions): Properly adjust common
+ 	when removing a duplicate.
+ 
+ 2017-01-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/79256
+ 	* targhooks.c (default_builtin_vector_alignment_reachable): Honor
+ 	BIGGEST_FIELD_ALIGNMENT and ADJUST_FIELD_ALIGN to fix up bogus
+ 	alignment on TYPE.
+ 	* tree.c (build_aligned_type): Set TYPE_USER_ALIGN.
+ 
+ 2017-01-30  Dominik Vogt  <vogt@linux.vnet.ibm.com>
+ 
+ 	PR target/79240
+ 	* config/s390/s390.md ("*r<noxa>sbg_<mode>_srl_bitmask")
+ 	("*r<noxa>sbg_<mode>_sll_bitmask")
+ 	("*extzv_<mode>_srl<clobbercc_or_nocc>")
+ 	("*extzv_<mode>_sll<clobbercc_or_nocc>"):
+ 	Use contiguous_bitmask_nowrap_operand.
+ 
+ 2017-01-29  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	PR target/79268
+ 	* config/rs6000/altivec.h (vec_xl): Revise #define.
+ 	(vec_xst): Likewise.
+ 
+ 2017-01-27  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.c (print_reg): Use REGNO instead of true_regnum.
+ 
+ 2017-01-27  Bernd Schmidt  <bschmidt@redhat.com>
+ 
+ 	PR rtl-optimization/79194
+ 	* cprop.c (one_cprop_pass): Move deletion of code after unconditional
+ 	traps before call to bypass_conditional_jumps.
+ 
+ 2017-01-27  Vladimir Makarov  <vmakarov@redhat.com>
+ 
+ 	PR tree-optimization/71374
+ 	* lra-constraints.c (check_conflict_input_operands): New.
+ 	(match_reload): Use it.
+ 
+ 2017-01-27  Vladimir Makarov  <vmakarov@redhat.com>
+ 
+ 	PR target/79131
+ 	* lra-assigns.c (find_hard_regno_for_1): Take endianess for into
+ 	account to calculate conflict_set.
+ 
+ 2017-01-27  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	PR rtl-optimization/78559
+ 	* combine.c (try_combine): Discard REG_EQUAL and REG_EQUIV for
+ 	other_insn in combine.
+ 
+ 2017-01-27  Pekka Jääskeläinen  <pekka.jaaskelainen@parmance.com>
+ 
+ 	* builtin-types.def: Use unsigned_char_type_node for BT_UINT8.  Use
+ 	uint16_type_node for BT_UINT16.
+ 
+ 2017-01-27  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* doc/sourcebuild.texi (Testsuites): Add "GIMPLE Tests" and
+ 	"RTL Tests" to menu.
+ 	(GIMPLE Tests): New node.
+ 	(RTL Tests): New node.
+ 
+ 2017-01-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/79245
+ 	* tree-loop-distribution.c (distribute_loop): Apply cost
+ 	modeling also to detected patterns.
+ 
+ 2017-01-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/71433
+ 	* tree-vrp.c (register_new_assert_for): Revert earlier changes.
+ 	(compare_assert_loc): New function.
+ 	(process_assert_insertions): Sort and optimize assert locations
+ 	to remove duplicates and push down identical assertions on
+ 	edges to their destination block.
+ 
+ 2017-01-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/79244
+ 	* tree-vrp.c (remove_range_assertions): Forcefully propagate
+ 	out SSA names even if abnormal.
+ 
+ 2017-01-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* realmpfr.h: Poison MPFR_RND{N,Z,U,D}.
+ 	* gimple-ssa-sprintf.c (format_floating_max): Use GMP_RNDN
+ 	instead of MPFR_RNDN.
+ 
+ 2017-01-27  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR target/79239
+ 	* arm.c (arm_option_override): Don't call build_target_option_node
+ 	until after doing all option overrides.
+ 	(arm_valid_target_attribute_tree): Likewise.
+ 
+ 2017-01-27  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/invoke.texi (-fprofile-arcs): Document profiling support
+ 	for {cd}tors and C++ {cd}tors.
+ 
+ 2017-01-27  Dominik Vogt  <vogt@linux.vnet.ibm.com>
+ 
+ 	* config/s390/s390.md ("*setmem_long_and")
+ 	("*setmem_long_and_31z"): Use zero_extend instead of and.
+ 
+ 2017-01-26  Martin Sebor  <msebor@redhat.com>
+ 
+ 	* gimple-ssa-sprintf.c (format_floating): Simplify the computation
+ 	of precision.
+ 
+ 2017-01-26  Martin Sebor  <msebor@redhat.com>
+ 
+ 	* gimple-ssa-sprintf.c (format_floating): Test HAVE_XFmode and
+ 	HAVE_DFmode before using XFmode or DFmode.
+ 	(parse_directive): Avoid using the z length modifier to avoid
+ 	the ISO C++98 does not support the ‘z’ gnu_printf length modifier.
+ 
+ 	PR middle-end/78703
+ 	* gimple-ssa-sprintf.c (adjust_for_width_or_precision): Change
+ 	to accept adjustment as an array.
+ 	(get_int_range): New function.
+ 	(struct directive): Make width and prec arrays.
+ 	(directive::set_width, directive::set_precision): Call get_int_range.
+ 	(format_integer, format_floating): Handle width and precision ranges.
+ 	(format_string, parse_directive): Same.
+ 
+ 2017-01-26  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/79129
+ 	* dwarf2out.c (generate_skeleton_bottom_up): For children with
+ 	comdat_type_p set, just clone them, but keep the children in the
+ 	original DIE.
+ 
+ 	PR debug/78835
+ 	* dwarf2out.c (prune_unused_types): Mark all functions with DIEs
+ 	which have direct callers with -fvar-tracking-assignments enabled
+ 	in the current TU.
+ 	(resolve_addr): Avoid adding skeleton DIEs for DW_AT_call_origin
+ 	inside of type units.
+ 
+ 2017-01-26  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/78703
+ 	* gimple-ssa-sprintf.c (struct result_range): Add likely and
+ 	unlikely counters.
+ 	(struct format_result): Replace number_chars, number_chars_min,
+ 	and number_chars_max with a single member of struct result_range.
+ 	Remove bounded.
+ 	(format_result::operator+=): Adjust.
+ 	(struct fmtresult): Remove bounded.  Handle likely and unlikely
+ 	counters.
+ 	(fmtresult::adjust_for_width_or_precision): New function.
+ 	(fmtresult:type_max_digits): New function.
+ 	(bytes_remaining): Handle likely and unlikely counters.
+ 	(min_bytes_remaining): Remove.
+ 	(format_percent): Simplify.
+ 	(format_integer, format_floating): Set likely and unlikely counters.
+ 	(get_string_length, format_character, format_string): Same.
+ 	(format_plain, should_warn_p): New function.
+ 	(maybe_warn): Call should_warn_p.  Update diagnostic messages
+ 	and handle those for all directives, including plain strings.
+ 	(format_directive): Handle likely and unlikely counters.
+ 	Remove unnecessary quoting from diagnostics.  Add an informational
+ 	note.
+ 	(add_bytes): Remove.
+ 	(pass_sprintf_length::compute_format_length): Simplify.
+ 	(try_substitute_return_value): Handle likely and unlikely counters.
+ 
+ 2017-01-26  Carl Love  <cel@us.ibm.com>
+ 
+ 	* config/rs6000/rs6000-c (altivec_overloaded_builtins): Remove
+ 	bogus entries for the P8V_BUILTIN_VEC_VGBBD built-ins
+ 
+ 2017-01-26  Vladimir Makarov  <vmakarov@redhat.com>
+ 
+ 	PR target/79131
+ 	* lra-assigns.c (setup_live_pseudos_and_spill_after_risky): Take
+ 	endianess for subregs into account.
+ 	* lra-constraints.c (lra_constraints): Do risky transformations
+ 	always on the first iteration.
+ 	* lra-lives.c (check_pseudos_live_through_calls): Add arg
+ 	last_call_used_reg_set.
+ 	(process_bb_lives): Define and use last_call_used_reg_set.
+ 	* lra.c (lra): Always continue after lra_constraints on the first
+ 	iteration.
+ 
+ 2017-01-26  Kirill Yukhin  <kirill.yukhin@gmail.com>
+ 
+ 	* gcc.target/i386/avx512bw-kshiftlq-2.c: Use unsigned long long
+ 	constant.
+ 	* gcc.target/i386/avx512bw-kshiftrq-2.c: Ditto.
+ 
+ 2017-01-26  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* config/i386/avx512fintrin.h (_ktest_mask16_u8,
+ 	_ktestz_mask16_u8, _ktestc_mask16_u8, _kadd_mask16): Move to ...
+ 	* config/i386/avx512dqintrin.h (_ktest_mask16_u8,
+ 	_ktestz_mask16_u8, _ktestc_mask16_u8, _kadd_mask16): ... here.
+ 	* config/i386/i386-builtin.def (__builtin_ia32_ktestchi,
+ 	__builtin_ia32_ktestzhi, __builtin_ia32_kaddhi): Use
+ 	OPTION_MASK_ISA_AVX512DQ instead of OPTION_MASK_ISA_AVX512F.
+ 	* config/i386/sse.md (SWI1248_AVX512BWDQ2): New mode iterator.
+ 	(kadd<mode>, ktest<mode>): Use it instead of SWI1248_AVX512BWDQ.
+ 
+ 2017-01-26  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c/79199
+ 	* fold-const.c (operand_equal_p) [COND_EXPR]: Use OP_SAME_WITH_NULL
+ 	for the third operand.
+ 
+ 2017-01-26  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/79236
+ 	* omp-low.c (struct omp_context): Add simt_stmt field.
+ 	(scan_omp_for): Return omp_context *.
+ 	(scan_omp_simd): Set simt_stmt on the non-_simt_ SIMD
+ 	context to the _simt_ SIMD stmt.
+ 	(lower_omp_for): For combined SIMD with sibling _simt_
+ 	SIMD, make sure to use the same decls in _looptemp_
+ 	clauses as in the sibling.
+ 
+ 2017-01-26  David Sherwood  <david.sherwood@arm.com>
+ 
+ 	PR middle-end/79212
+ 	* gimplify.c (omp_notice_variable): Add GOVD_SEEN flag to variables in
+ 	all contexts.
+ 
+ 2017-01-26  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/70465
+ 	* reg-stack.c (emit_swap_insn): Instead of fld a; fld b; fxchg %st(1);
+ 	emit fld b; fld a; if possible.
+ 
+ 	* brig-builtins.def: Update copyright years.
+ 	* config/arm/arm_acle_builtins.def: Update copyright years.
+ 
+ 2017-01-25  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	PR target/79179
+ 	* config/rs6000/vsx.md (vsx_extract_<mode>_store): Use wY
+ 	constraint instead of o for the stxsd instruction.
+ 
+ 2017-01-25  Carl Love  <cel@us.ibm.com>
+ 
+ 	* config/rs6000/rs6000-c (altivec_overloaded_builtins): Fix order
+ 	of entries for ALTIVEC_BUILTIN_VEC_PACKS and P8V_BUILTIN_VEC_VGBBD.
+ 
+ 2017-01-25  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* doc/invoke.texi (C++ Dialect Options): Fix typo.
+ 
+ 2017-01-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/69264
+ 	* target.def (vector_alignment_reachable): Improve documentation.
+ 	* doc/tm.texi: Regenerate.
+ 	* targhooks.c (default_builtin_vector_alignment_reachable): Simplify
+ 	and add a comment.
+ 	* tree-vect-data-refs.c (vect_supportable_dr_alignment): Revert
+ 	earlier changes with respect to TYPE_USER_ALIGN.
+ 	(vector_alignment_reachable_p): Likewise.  Improve dumping.
+ 
+ 2016-01-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	PR target/79145
+ 	* config/arm/arm.md (xordi3): Force constant operand into a register
+ 	for TARGET_IWMMXT.
+ 
+ 2016-01-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* doc/invoke.texi (-fstore-merging): Correct default optimization
+ 	levels at which it is enabled.
+ 	(-O): Move -fstore-merging from list to...
+ 	(-O2): ... Here.
+ 
+ 2017-01-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR debug/78363
+ 	* omp-expand.c: Include debug.h.
+ 	(expand_omp_taskreg): Make sure to generate early debug before
+ 	outlining anything from a function.
+ 	(expand_omp_target): Likewise.
+ 	(grid_expand_target_grid_body): Likewise.
+ 
+ 2017-01-25  Maxim Ostapenko  <m.ostapenko@samsung.com>
+ 
+ 	PR lto/79061
+ 	* asan.c (get_translation_unit_decl): New function.
+ 	(asan_add_global): Extract modules file name from globals
+ 	TRANSLATION_UNIT_DECL name.
+ 
+ 2017-01-24  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR target/77439
+ 	* config/arm/arm.c (arm_function_ok_for_sibcall): Add back restriction
+ 	for long calls with APCS frame and VFP.
+ 
+ 2017-01-24  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* cfg.c (original_copy_tables_initialized_p): New function.
+ 	* cfg.h (original_copy_tables_initialized_p): New decl.
+ 	* cfgrtl.c (relink_block_chain): Guard the call to
+ 	free_original_copy_tables with a call to
+ 	original_copy_tables_initialized_p.
+ 	* cgraph.h (symtab_node::native_rtl_p): New decl.
+ 	* cgraphunit.c (symtab_node::native_rtl_p): New function.
+ 	(symtab_node::needed_p): Don't assert for early assembly output
+ 	for __RTL functions.
+ 	(cgraph_node::finalize_function): Set "force_output" for __RTL
+ 	functions.
+ 	(cgraph_node::analyze): Bail out early for __RTL functions.
+ 	(analyze_functions): Update assertion to support __RTL functions.
+ 	(cgraph_node::expand): Bail out early for __RTL functions.
+ 	* final.c (rest_of_clean_state): Don't call delete_tree_ssa for
+ 	__RTL functions.
+ 	* function.h (struct function): Update comment for field
+ 	"pass_startwith".
+ 	* gimple-expr.c: Include "tree-pass.h".
+ 	(gimple_has_body_p): Return false for __RTL functions.
+ 	* Makefile.in (OBJS): Add run-rtl-passes.o.
+ 	* pass_manager.h (gcc::pass_manager::get_rest_of_compilation): New
+ 	accessor.
+ 	(gcc::pass_manager::get_clean_slate): New accessor.
+ 	* passes.c: Include "insn-addr.h".
+ 	(should_skip_pass_p): Add logging.  Update logic for running
+ 	"expand" to be compatible with both __GIMPLE and __RTL.  Guard
+ 	property-provider override so it is only done for gimple passes.
+ 	Don't skip dfinit.
+ 	(skip_pass): New function.
+ 	(execute_one_pass): Call skip_pass when skipping passes.
+ 	* read-md.c (md_reader::read_char): Support filtering
+ 	the input to a subset of line numbers.
+ 	(md_reader::md_reader): Initialize fields
+ 	m_first_line and m_last_line.
+ 	(md_reader::read_file_fragment): New function.
+ 	* read-md.h (md_reader::read_file_fragment): New decl.
+ 	(md_reader::m_first_line): New field.
+ 	(md_reader::m_last_line): New field.
+ 	* read-rtl-function.c (function_reader::create_function): Only
+ 	create cfun if it doesn't already exist.  Set PROP_rtl on cfun's
+ 	curr_properties.  Set DECL_INITIAL to a dummy block.
+ 	(read_rtl_function_body_from_file_range): New function.
+ 	* read-rtl-function.h (read_rtl_function_body_from_file_range):
+ 	New decl.
+ 	* run-rtl-passes.c: New file.
+ 	* run-rtl-passes.h: New file.
+ 
+ 2017-01-24  Jeff Law  <law@redhat.com>
+ 
+ 	* config/microblaze/microblaze.h (ASM_FORMAT_PRIVATE_NAME): Increase
+ 	buffer size.
+ 
+ 2017-01-24  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	PR tree-optimization/79159
+ 	* tree-ssa-loop-niter.c (get_cst_init_from_scev): New function.
+ 	(record_nonwrapping_iv): Improve boundary using above function if no
+ 	value range information.
+ 
+ 2017-01-24  Pekka Jääskeläinen  <pekka@parmance.com>
+ 	    Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* brig-builtins.def: New file.
+ 	* builtins.def (DEF_HSAIL_BUILTIN): New macro.
+ 	(DEF_HSAIL_ATOMIC_BUILTIN): Likewise.
+ 	(DEF_HSAIL_SAT_BUILTIN): Likewise.
+ 	(DEF_HSAIL_INTR_BUILTIN): Likewise.
+ 	(DEF_HSAIL_CVT_ZEROI_SAT_BUILTIN): Likewise.
+ 	* builtin-types.def (BT_INT8): New.
+ 	(BT_INT16): Likewise.
+ 	(BT_UINT8): Likewise.
+ 	(BT_UINT16): Likewise.
+ 	(BT_FN_ULONG): Likewise.
+ 	(BT_FN_UINT_INT): Likewise.
+ 	(BT_FN_UINT_ULONG): Likewise.
+ 	(BT_FN_UINT_LONG): Likewise.
+ 	(BT_FN_UINT_PTR): Likewise.
+ 	(BT_FN_ULONG_PTR): Likewise.
+ 	(BT_FN_INT8_FLOAT): Likewise.
+ 	(BT_FN_INT16_FLOAT): Likewise.
+ 	(BT_FN_UINT32_FLOAT): Likewise.
+ 	(BT_FN_UINT16_FLOAT): Likewise.
+ 	(BT_FN_UINT8_FLOAT): Likewise.
+ 	(BT_FN_UINT64_FLOAT): Likewise.
+ 	(BT_FN_UINT16_UINT32): Likewise.
+ 	(BT_FN_UINT32_UINT16): Likewise.
+ 	(BT_FN_UINT16_UINT16_UINT16): Likewise.
+ 	(BT_FN_INT_PTR_INT): Likewise.
+ 	(BT_FN_UINT_PTR_UINT): Likewise.
+ 	(BT_FN_LONG_PTR_LONG): Likewise.
+ 	(BT_FN_ULONG_PTR_ULONG): Likewise.
+ 	(BT_FN_VOID_UINT64_UINT64): Likewise.
+ 	(BT_FN_UINT8_UINT8_UINT8): Likewise.
+ 	(BT_FN_INT8_INT8_INT8): Likewise.
+ 	(BT_FN_INT16_INT16_INT16): Likewise.
+ 	(BT_FN_INT_INT_INT): Likewise.
+ 	(BT_FN_UINT_FLOAT_UINT): Likewise.
+ 	(BT_FN_FLOAT_UINT_UINT): Likewise.
+ 	(BT_FN_ULONG_UINT_UINT): Likewise.
+ 	(BT_FN_ULONG_UINT_PTR): Likewise.
+ 	(BT_FN_ULONG_ULONG_ULONG): Likewise.
+ 	(BT_FN_UINT_UINT_UINT): Likewise.
+ 	(BT_FN_VOID_UINT_PTR): Likewise.
+ 	(BT_FN_UINT_UINT_PTR: Likewise.
+ 	(BT_FN_UINT32_UINT64_PTR): Likewise.
+ 	(BT_FN_INT_INT_UINT_UINT): Likewise.
+ 	(BT_FN_UINT_UINT_UINT_UINT): Likewise.
+ 	(BT_FN_UINT_UINT_UINT_PTR): Likewise.
+ 	(BT_FN_UINT_ULONG_ULONG_UINT): Likewise.
+ 	(BT_FN_ULONG_ULONG_ULONG_ULONG): Likewise.
+ 	(BT_FN_LONG_LONG_UINT_UINT): Likewise.
+ 	(BT_FN_ULONG_ULONG_UINT_UINT): Likewise.
+ 	(BT_FN_VOID_UINT32_UINT64_PTR): Likewise.
+ 	(BT_FN_VOID_UINT32_UINT32_PTR): Likewise.
+ 	(BT_FN_UINT_UINT_UINT_UINT_UINT): Likewise.
+ 	(BT_FN_UINT_FLOAT_FLOAT_FLOAT_FLOAT): Likewise.
+ 	(BT_FN_ULONG_ULONG_ULONG_UINT_UINT): Likewise.
+ 	* doc/frontends.texi: List BRIG FE.
+ 	* doc/install.texi (Testing): Add BRIG tesring requirements.
+ 	* doc/invoke.texi (Overall Options): Mention BRIG.
+ 	* doc/standards.texi (Standards): Doucment BRIG HSA version.
+ 
+ 2017-01-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR translation/79208
+ 	* ipa-devirt.c (odr_types_equivalent_p): Fix typo in diagnostic.
+ 
+ 2017-01-24  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR bootstrap/79198
+ 	* ipa-prop.c (ipa_free_all_node_params): Call summary destructor.
+ 	* ipa-prop.c (ipa_node_params_t::insert): Initialize fields known_csts
+ 	and known_contexts.
+ 
+ 2017-01-24  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	PR middle-end/79123
+ 	* gimple-ssa-warn-alloca.c (alloca_call_type): Make sure
+ 	casts from signed to unsigned really don't have a range.
+ 
+ 2017-01-24  Markus Trippelsdorf  <markus@trippelsdorf.de>
+ 
+ 	* gimple-ssa-sprintf.c (format_floating): Change MPFR_RNDx to
+ 	GMP_RNDx for compatiblity.
+ 
+ 2017-01-24  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR bootstrap/79132
+ 	* tree-ssa-reassoc.c (rewrite_expr_tree_parallel): Insert assert
+ 	that would prevent us to call alloca with -1 as argument.
+ 
+ 2017-01-24  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* dwarf2out.c (output_compilation_unit_header, output_file_names):
+ 	Avoid -Wformat-security warning.
+ 
+ 2017-01-23  Andrew Pinski  <apinski@cavium.com>
+ 
+ 	* config/aarch64/aarch64.c (thunderx2t99_addrcost_table): Improve
+ 	cost table.
+ 
+ 2017-01-23  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/78703
+ 	* gimple-ssa-sprintf.c (warn_level): New global.
+ 	(format_integer): Use it here and throughout the rest of the file.
+ 	Use the same switch to compute sign as base.
+ 	(maybe_warn): New function.
+ 	(format_directive): Factor out warnings into maybe_warn.
+ 	Add debugging output.  Use warn_level.
+ 	(add_bytes): Use warn_level.
+ 	(pass_sprintf_length::compute_format_length): Add debugging output.
+ 	(try_substitute_return_value): Same.
+ 	(pass_sprintf_length::handle_gimple_call): Set and use warn_level.
+ 
+ 	PR middle-end/78703
+ 	* gimple-ssa-sprintf.c (struct format_result): Remove constant member.
+ 	(struct fmtresult, format_integer, format_floating): Adjust.
+ 	(fmtresult::fmtresult): Set max correctly in two argument ctor.
+ 	(get_string_length, format_string,format_directive): Same.
+ 	(pass_sprintf_length::compute_format_length): Same.
+ 	(try_substitute_return_value): Simplify slightly.
+ 
+ 	PR middle-end/78703
+ 	* gimple-ssa-sprintf.c (pass_sprintf_length::gate): Adjust formatting.
+ 	(fmtresult::operator+=): Outlined.
+ 	(struct fmtresult): Add ctors.
+ 	(struct conversion_spec): Rename...
+ 	(struct directive): ...to this.  Add and remove data members.
+ 	(directive::set_width, directive::set_precision): New functions.
+ 	(format_percent): Use fmtresult ctor.
+ 	(get_width_and_precision): Remove.
+ 	(format_integer): Make naming changes.  Avoid computing width and
+ 	precision.
+ 	(format_floating): Same.  Adjust indentation.
+ 	(format_character, format_none): New functions.
+ 	(format_string): Moved character handling to format_character.
+ 	(format_directive): Remove arguments, change return type.
+ 	(parse_directive): New function.
+ 	(pass_sprintf_length::compute_format_length): Move directive
+ 	parsing to parse_directive.
+ 
+ 2017-01-23  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* tree.h (assign_assembler_name_if_neeeded): Rename to ...
+ 	(assign_assembler_name_if_needed): ... this.
+ 	* tree.c (assign_assembler_name_if_neeeded): Rename to ...
+ 	(assign_assembler_name_if_needed): ... this.
+ 	(free_lang_data_in_cgraph): Adjust callers.
+ 	* cgraphunit.c (cgraph_node::analyze): Likewise.
+ 	* omp-expand.c (expand_omp_taskreg, expand_omp_target):
+ 	Likewise.
+ 
+ 2017-01-23  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/79088
+ 	PR tree-optimization/79188
+ 	* tree-ssa-threadupdate.c (mark_threaded_blocks): Move code
+ 	resetting loop bounds after last path deletion.  Reset loop
+ 	bounds of the target loop, make code match the comments.
+ 	* tree-ssa-threadbackwards.c (pass_early_thread_jumps::execute):
+ 	Make sure loops need no fixups.
+ 
+ 2017-01-23  Kelvin Nilsen  <kelvin@gcc.gnu.org>
+ 
+ 	* config/rs6000/rs6000-builtin.def (VSIEDPF): Add scalar insert
+ 	exponent support with double type for first argument.
+ 	* config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Changed
+ 	type returned by __builtin_vec_extract_sig,
+ 	__builtin_vec_extract_sig_sp, and __builtin_vec_extract_sig_dp
+ 	functions from "vector int" to "vector unsigned int" or from
+ 	"vector long long int" to "vector unsigned long long int".
+ 	Changed type returned by __builtin_vec_extract_exp,
+ 	__builtin_vec_extract_exp_sp, and __builtin_vec_extract_exp_dp
+ 	functions from "vector int" to "vector unsigned int" or from
+ 	"vector long long int" to "vector unsigned long long int".
+ 	Changed return type of __builtin_vec_test_data_class,
+ 	__builtin_vec_test_data_class_sp, and
+ 	__builtin_vec_test_data_class_dp from "vector int" to
+ 	"vector bool int" or from "vector long long int" to "vector bool
+ 	long long int" and changed second argument type from "unsigned
+ 	int" to "int".  Added new overloaded function forms "vector float
+ 	__builtin_vec_insert_exp (vector float, vector unsigned int)" and
+ 	"vector float __builtin_vec_insert_exp_sp (vector float, vector
+ 	unsigned int)" and "vector double __builtin_vec_insert_exp (vector
+ 	double, vector unsigned long long int)" and "vector double
+ 	__builtin_vec_insert_exp_dp (vector double, vector unsigned long
+ 	long int)".  Changed return type of
+ 	__builtin_scalar_test_data_class and
+ 	__builtin_scalar_test_data_class_sp and
+ 	__builtin_scalar_test_data_class_dp from "unsigned int" to "bool
+ 	int" and changed second argument from "unsigned int" to "int".
+ 	Changed type returned by __builtin_scalar_test_neg,
+ 	__builtin_scalar_test_neg_sp, and __builtin_scalar_test_neg_dp
+ 	from "int" to "bool int".  Added new overloaded function form
+ 	"double __builtin_scalar_insert_exp (double, unsigned long long int)".
+ 	* config/rs6000/vsx.md (xsiexpdpf): New insn for scalar insert
+ 	exponent double-precision with floating point first argument.
+ 	* doc/extend.texi (PowerPC AltiVec Built-in Functions): Adjust
+ 	documentation of scalar_test_data_class, scalar_test_neg,
+ 	scalar_extract_sig, scalar_extract_exp, scalar_insert_exp,
+ 	vector_extract_exp, vec_extract_sig, vec_insert_exp, and
+ 	vec_test_data_class built-in functions to reflect refinements in
+ 	their type signatures.
+ 
+ 2017-01-23  Andreas Tobler  <andreast@gcc.gnu.org>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_elf_asm_constructor): Increase
+ 	size of buf.
+ 	(aarch64_elf_asm_destructor): Likewise.
+ 
+ 2017-01-23  Bernd Schmidt  <bschmidt@redhat.com>
+ 
+ 	PR rtl-optimization/78634
+ 	* config/i386/i386.c (ix86_max_noce_ifcvt_seq_cost): New function.
+ 	(TARGET_MAX_NOCE_IFCVT_SEQ_COST): Define.
+ 	* ifcvt.c (noce_try_cmove): Add missing cost check.
+ 
+ 	PR rtl-optimization/71724
+ 	* combine.c (if_then_else_cond): Look for situations where it is
+ 	beneficial to undo the work of one of the recursive calls.
+ 
+ 2017-01-23  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	PR tree-optimization/70754
+ 	* tree-predcom.c (stmt_combining_refs): New parameter INSERT_BEFORE.
+ 	(reassociate_to_the_same_stmt): New parameter INSERT_BEFORE.  Insert
+ 	combined stmt before it if not NULL.
+ 	(combine_chains): Process refs reversely and compute dominance point
+ 	for root ref.
+ 
+ 2017-01-23  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR tree-optimization/79196
+ 	* tree-ssa-strlen.c (fold_strstr_to_memcmp): Rename to ...
+ 	(fold_strstr_to_strncmp): ... this.  Fold the pattern to strncmp
+ 	instead of memcmp.
+ 	(strlen_optimize_stmt): Call the renamed function.
+ 
+ 2017-01-23  Michael Matz  <matz@suse.de>
+ 
+ 	PR tree-optimization/78384
+ 	* tree-ssa-loop-split.c (patch_loop_exit): Use correct edge.
+ 
+ 2017-01-23  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/79186
+ 	* tree-vrp.c (register_new_assert_for): Make sure we've seen
+ 	both incoming edges before moving an assert.
+ 
+ 2017-01-23  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* ipa-prop.c (load_from_param_1): Removed.
+ 	(load_from_unmodified_param): Bits from load_from_param_1 put back
+ 	here.
+ 	(load_from_param): Removed.
+ 	(compute_complex_assign_jump_func): Removed stmt2 and just replaced it
+ 	with stmt.  Reverted back to use of load_from_unmodified_param.
+ 
+ 2017-01-23  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR ipa/79108
+ 	* ipa-prop.h (ipa_param_descriptor): Anotate with with GTY(()).
+ 	(ipa_node_params): Annotate with GTY((for_user)).  Make descriptors
+ 	field a pointer to garbage collected vector, mark lattices and
+ 	ipcp_orig_node with GTY((skip)).
+ 	(ipa_get_param_count): Adjust to descriptors being a pointer.
+ 	(ipa_get_param): Likewise.
+ 	(ipa_get_type): Likewise.
+ 	(ipa_get_param_move_cost): Likewise.
+ 	(ipa_set_param_used): Likewise.
+ 	(ipa_get_controlled_uses): Likewise.
+ 	(ipa_set_controlled_uses): Likewise.
+ 	(ipa_is_param_used): Likewise.
+ 	(ipa_node_params_t): Move into garbage collector.  New methods insert
+ 	and remove.
+ 	(ipa_node_params_sum): Annotate wth GTY(()).
+ 	(ipa_check_create_node_params): Adjust to ipa_node_params_sum being
+ 	garbage collected.
+ 	(ipa_load_from_parm_agg): Adjust declaration.
+ 	* ipa-icf.c (param_used_p): Adjust to descriptors being a pointer.
+ 	* ipa-profile.c (ipa_profile): Likewise.
+ 	* ipa-prop.c (ipa_get_param_decl_index_1): Likewise.
+ 	(ipa_populate_param_decls): Make descriptors parameter garbage
+ 	collected.
+ 	(ipa_dump_param): Adjust to descriptors being a pointer.
+ 	(ipa_alloc_node_params): Likewise.
+ 	(ipa_initialize_node_params): Likewise.
+ 	(load_from_param_1): Make descriptors parameter garbage collected.
+ 	(load_from_unmodified_param): Likewise.
+ 	(load_from_param): Likewise.
+ 	(ipa_load_from_parm_agg): Likewise.
+ 	(ipa_node_params::~ipa_node_params): Removed.
+ 	(ipa_free_all_node_params): Remove call to delete operator.
+ 	(ipa_node_params_t::insert): New.
+ 	(ipa_node_params_t::remove): Likewise.
+ 	(ipa_node_params_t::duplicate): Adjust to descriptors being a pointer,
+ 	copy known_csts and known_contexts vectors.
+ 	(ipa_read_node_info): Adjust to descriptors being a pointer.
+ 	(ipcp_modif_dom_walker): Make m_descriptors field garbage
+ 	collected.
+ 	(ipcp_transform_function): Make descriptors variable garbage
+ 	collected.
+ 
+ 2017-01-23  Andrew Senkevich  <andrew.senkevich@intel.com>
+ 
+ 	* config/i386/avx512bwintrin.h: Add k-mask test, kortest intrinsics.
+ 	* config/i386/avx512dqintrin.h: Ditto.
+ 	* config/i386/avx512fintrin.h: Ditto.
+ 	* config/i386/i386.c: Handle new builtins.
+ 	* config/i386/i386-builtin.def: Add new builtins.
+ 	* config/i386/sse.md (ktest<mode>, kortest<mode>): New.
+ 	(UNSPEC_KORTEST, UNSPEC_KTEST): New.
+ 
+ 2017-01-23  Jakub Jelinek  <jakub@redhat.com>
+ 	    Martin Liska  <mliska@suse.cz>
+ 
+ 	* asan.h: Define ASAN_USE_AFTER_SCOPE_ATTRIBUTE.
+ 	* asan.c (asan_expand_poison_ifn): Support stores and use
+ 	appropriate ASAN report function.
+ 	* internal-fn.c (expand_ASAN_POISON_USE): New function.
+ 	* internal-fn.def (ASAN_POISON_USE): Declare.
+ 	* tree-into-ssa.c (maybe_add_asan_poison_write): New function.
+ 	(maybe_register_def): Create ASAN_POISON_USE when sanitizing.
+ 	* tree-ssa-dce.c (eliminate_unnecessary_stmts): Remove
+ 	ASAN_POISON calls w/o LHS.
+ 	* tree-ssa.c (execute_update_addresses_taken): Create clobber
+ 	for ASAN_MARK (UNPOISON, &x, ...) in order to prevent usage of a LHS
+ 	from ASAN_MARK (POISON, &x, ...) coming to a PHI node.
+ 	* gimplify.c (asan_poison_variables): Add attribute
+ 	use_after_scope_memory to variables that really needs to live
+ 	in memory.
+ 	* tree-ssa.c (is_asan_mark_p): Do not rewrite into SSA when
+ 	having the attribute.
+ 
+ 2017-01-23  Martin Liska  <mliska@suse.cz>
+ 
+ 	* asan.c (create_asan_shadow_var): New function.
+ 	(asan_expand_poison_ifn): Likewise.
+ 	* asan.h (asan_expand_poison_ifn): New declaration.
+ 	* internal-fn.c (expand_ASAN_POISON): Likewise.
+ 	* internal-fn.def (ASAN_POISON): New builtin.
+ 	* sanopt.c (pass_sanopt::execute): Expand
+ 	asan_expand_poison_ifn.
+ 	* tree-inline.c (copy_decl_for_dup_finish): Make function
+ 	external.
+ 	* tree-inline.h (copy_decl_for_dup_finish): Likewise.
+ 	* tree-ssa.c (is_asan_mark_p): New function.
+ 	(execute_update_addresses_taken): Rewrite local variables
+ 	(identified just by use-after-scope as addressable) into SSA.
+ 
+ 2017-01-22  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* doc/install.texi (Specific): opensource.apple.com uses https
+ 	now. Remove trailing slash.
+ 
+ 2017-01-22  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* README.Portability: Remove note on an Irix compatibility issue.
+ 
+ 2017-01-22  Dimitry Andric <dim@FreeBSD.org>
+ 
+ 	* gcov.c (INCLUDE_ALGORITHM): Define.
+ 	(INCLUDE_VECTOR): Define.
+ 	No longer include <vector> and <algorithm> directly.
+ 
+ 2017-01-21  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* doc/extend.texi (Thread-Local): Change www.akkadia.org reference
+ 	to https.
+ 	* doc/invoke.texi (Code Gen Options): Ditto.
+ 
+ 2017-01-21  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR lto/78407
+ 	* cfg.c (update_bb_profile_for_threading): Fix updating of probablity.
+ 
+ 2017-01-21  Bernd Schmidt  <bschmidt@redhat.com>
+ 
+ 	rtl-optimization/79125
+ 	* cprop.c (local_cprop_pass): Handle cases where we make an
+ 	unconditional trap.
+ 
+ 2017-01-20  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR target/61729
+ 	PR target/77850
+ 	* config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Adjust address to
+ 	read from, for big endian.
+ 
+ 2017-01-20  Jiong Wang  <jiong.wang@arm.com>
+ 
+ 	* config/aarch64/aarch64-builtins.c (aarch64_init_builtins): Register
+ 	register pauth builtins for LP64 only.
+ 
+ 2017-01-20  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c/79152
+ 	* gimplify.c (should_warn_for_implicit_fallthrough): Handle consecutive
+ 	non-case labels.
+ 
+ 2017-01-20  Alexander Monakov  <amonakov@ispras.ru>
+ 
+ 	* omp-expand.c (expand_omp_simd): Clear PROP_gimple_lomp_dev regardless
+ 	of safelen status.
+ 	* omp-offload.c (pass_omp_device_lower::gate): Use PROP_gimple_lomp_dev.
+ 	* passes.c (dump_properties): Handle PROP_gimple_lomp_dev.
+ 	* tree-inline.c (expand_call_inline): Propagate PROP_gimple_lomp_dev.
+ 
+ 2017-01-20  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	PR target/71270
+ 	* config/arm/arm.c (neon_valid_immediate): Reject vector constants
+ 	in big-endian mode when they are not a single duplicated value.
+ 
+ 2017-01-20  Richard Biener  <rguenther@suse.de>
+ 
+ 	* BASE-VER: Bump to 7.0.1.
+ 
+ 2017-01-20  Alexander Monakov  <amonakov@ispras.ru>
+ 
+ 	* omp-low.c (omplow_simd_context): New struct.  Use it...
+ 	(lower_rec_simd_input_clauses): ...here and...
+ 	(lower_rec_input_clauses): ...here to hold common data.  Adjust all
+ 	references to idx, lane, max_vf, is_simt.
+ 
+ 2017-01-20  Graham Markall  <graham.markall@embecosm.com>
+ 
+ 	* config/arc/arc.h (LINK_SPEC): Use arclinux_nps emulation when
+ 	mcpu=nps400.
+ 
+ 2017-01-20  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* hsa.h: Renaed to hsa-common.h.  Adjusted a comment.
+ 	* hsa.c: Renaed to hsa-common.c.  Change include of gt-hsa.h to
+ 	gt-hsa-common.h.
+ 	* Makefile.in (OBJS): Rename hsa.o to hsa-common.o.
+ 	(GTFILES): Rename hsa.c to hsa-common.c.
+ 	* hsa-brig.c: Change include of hsa.h to hsa-common.h.
+ 	* hsa-dump.c: Likewise.
+ 	* hsa-gen.c: Likewise.
+ 	* hsa-regalloc.c: Likewise.
+ 	* ipa-hsa.c: Likewise.
+ 	* omp-expand.c: Likewise.
+ 	* omp-low.c: Likewise.
+ 	* toplev.c: Likewise.
+ 
+ 2017-01-20  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c/64279
+ 	* doc/invoke.texi: Document -Wduplicated-branches.
+ 	* fold-const.c (operand_equal_p): Handle MODIFY_EXPR, INIT_EXPR,
+ 	COMPOUND_EXPR, PREDECREMENT_EXPR, PREINCREMENT_EXPR,
+ 	POSTDECREMENT_EXPR, POSTINCREMENT_EXPR, CLEANUP_POINT_EXPR, EXPR_STMT,
+ 	STATEMENT_LIST, and RETURN_EXPR.  For non-pure non-const functions
+ 	return 0 only when not OEP_LEXICOGRAPHIC.
+ 	(fold_build_cleanup_point_expr): Use the expression
+ 	location when building CLEANUP_POINT_EXPR.
+ 	* tree-core.h (enum operand_equal_flag): Add OEP_LEXICOGRAPHIC.
+ 	* tree.c (add_expr): Handle error_mark_node.
+ 
+ 2017-01-20  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR lto/69188
+ 	* tree-profile.c (init_ic_make_global_vars): Do not call
+ 	finalize_decl.
+ 	(gimple_init_gcov_profiler): Likewise.
+ 
+ 2017-01-20  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR ipa/71190
+ 	* cgraph.h (maybe_create_reference): Remove argument and
+ 	update comment.
+ 	* cgraphclones.c (cgraph_node::create_virtual_clone): Remove one
+ 	argument.
+ 	* ipa-cp.c (create_specialized_node): Likewise.
+ 	* symtab.c (symtab_node::maybe_create_reference): Handle
+ 	VAR_DECLs and ADDR_EXPRs and select ipa_ref_use type.
+ 
+ 2017-01-20  Martin Liska  <mliska@suse.cz>
+ 
+ 	* read-rtl-function.c (function_reader::create_function): Use
+ 	build_decl instread of build_decl_stat.
+ 
+ 2017-01-20  Andrew Senkevich  <andrew.senkevich@intel.com>
+ 
+ 	* config/i386/avx512bwintrin.h: Add k-mask registers shift intrinsics.
+ 	* config/i386/avx512dqintrin.h: Ditto.
+ 	* config/i386/avx512fintrin.h: Ditto.
+ 	* config/i386/i386-builtin-types.def: Add new types.
+ 	* config/i386/i386.c: Handle new types.
+ 	* config/i386/i386-builtin.def (__builtin_ia32_kshiftliqi)
+ 	(__builtin_ia32_kshiftlihi, __builtin_ia32_kshiftlisi)
+ 	(__builtin_ia32_kshiftlidi, __builtin_ia32_kshiftriqi)
+ 	(__builtin_ia32_kshiftrihi, __builtin_ia32_kshiftrisi)
+ 	(__builtin_ia32_kshiftridi): New.
+ 	* config/i386/sse.md (k<code><mode>): Rename *k<code><mode>.
+ 
+ 2017-01-19  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR target/78875
+ 	PR target/79140
+ 	* config/rs6000/rs6000.c (TARGET_STACK_PROTECT_GUARD): Unconditionally
+ 	define to rs6000_init_stack_protect_guard.
+ 	(rs6000_init_stack_protect_guard): New function.
+ 
+ 2017-01-19  Matthew Fortune  <matthew.fortune@imgtec.com>
+ 	    Yunqiang Su  <yunqiang.su@imgtec.com>
+ 
+ 	* config.gcc (supported_defaults): Add madd4.
+ 	(with_madd4): Add validation.
+ 	(all_defaults): Add madd4.
+ 	* config/mips/mips.opt (mmadd4): New option.
+ 	* config/mips/mips.h (OPTION_DEFAULT_SPECS): Add a default for
+ 	mmadd4.
+ 	(TARGET_CPU_CPP_BUILTINS): Add builtin_define for
+ 	__mips_no_madd4.
+ 	(ISA_HAS_UNFUSED_MADD4): Gate with mips_madd4.
+ 	(ISA_HAS_FUSED_MADD4): Likewise.
+ 	* doc/invoke.texi (-mmadd4): Document the new option.
+ 	* doc/install.texi (--with-madd4): Document the new option.
+ 
+ 2017-01-19  Jiong Wang  <jiong.wang@arm.com>
+ 
+ 	* config/aarch64/aarch64-builtins.c (enum aarch64_builtins): New
+ 	entries for AARCH64_PAUTH_BUILTIN_XPACLRI,
+ 	AARCH64_PAUTH_BUILTIN_PACIA1716, AARCH64_PAUTH_BUILTIN_AUTIA1716.
+ 	(aarch64_init_pauth_hint_builtins): New.
+ 	(aarch64_init_builtins): Call aarch64_init_pauth_hint_builtins.
+ 	(aarch64_expand_builtin): Expand new builtins.
+ 
+ 2017-01-19  Jiong Wang  <jiong.wang@arm.com>
+ 
+ 	* reg-notes.def (CFA_TOGGLE_RA_MANGLE): New reg-note.
+ 	* combine-stack-adj.c (no_unhandled_cfa): Handle
+ 	REG_CFA_TOGGLE_RA_MANGLE.
+ 	* dwarf2cfi.c (dwarf2out_frame_debug): Handle REG_CFA_TOGGLE_RA_MANGLE.
+ 	* config/aarch64/aarch64.c (aarch64_expand_prologue): Generates DWARF
+ 	info for return address signing.
+ 	(aarch64_expand_epilogue): Likewise.
+ 
+ 2017-01-19  Jiong Wang  <jiong.wang@arm.com>
+ 
+ 	* config/aarch64/aarch64-opts.h (aarch64_function_type): New enum.
+ 	* config/aarch64/aarch64-protos.h
+ 	(aarch64_return_address_signing_enabled): New declaration.
+ 	* config/aarch64/aarch64.c (aarch64_return_address_signing_enabled):
+ 	New function.
+ 	(aarch64_expand_prologue): Sign return address before it's pushed onto
+ 	stack.
+ 	(aarch64_expand_epilogue): Authenticate return address fetched from
+ 	stack.
+ 	(aarch64_override_options): Sanity check for ILP32 and ISA level.
+ 	(aarch64_attributes): New function attributes for "sign-return-address".
+ 	* config/aarch64/aarch64.md (UNSPEC_AUTI1716, UNSPEC_AUTISP,
+ 	UNSPEC_PACI1716, UNSPEC_PACISP, UNSPEC_XPACLRI): New unspecs.
+ 	("*do_return"): Generate combined instructions according to key index.
+ 	("<pauth_mnem_prefix>sp", "<pauth_mnem_prefix1716", "xpaclri"): New.
+ 	* config/aarch64/iterators.md (PAUTH_LR_SP, PAUTH_17_16): New integer
+ 	iterators.
+ 	(pauth_mnem_prefix, pauth_hint_num_a): New integer attributes.
+ 	* config/aarch64/aarch64.opt (msign-return-address=): New.
+ 	* doc/extend.texi (AArch64 Function Attributes): Documents
+ 	"sign-return-address=".
+ 	* doc/invoke.texi (AArch64 Options): Documents "-msign-return-address=".
+ 
+ 2017-01-19  Matthew Fortune  <matthew.fortune@imgtec.com>
+ 
+ 	* doc/invoke.texi: Add missing -mlxc1-sxc1 options to
+ 	overall option summary.
+ 
+ 2017-01-19  Jiong Wang  <jiong.wang@arm.com>
+ 
+ 	* config/aarch64/aarch64-arches.def: New entry for "armv8.3-a".
+ 	* config/aarch64/aarch64.h (AARCH64_FL_V8_3, AARCH64_FL_FOR_ARCH8_3,
+ 	AARCH64_ISA_V8_3, TARGET_ARMV8_3): New.
+ 	* doc/invoke.texi (AArch64 Options): Document "armv8.3-a".
+ 
+ 2017-01-19  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	* config/rs6000/rs6000-cpus.def (ISA_3_0_MASKS_SERVER): Enable
+ 	-mpower9-minmax by default for -mcpu=power9.
+ 	(ISA_3_MASKS_IEEE): Require -mvsx-small-integer to enable IEEE
+ 	128-bit floating point.
+ 
+ 2017-01-20  Alan Modra  <amodra@gmail.com>
+ 
+ 	* config/rs6000/rs6000.md (cmpstrnsi, cmpstrsi): Fail if
+ 	optimizing for size.
+ 
+ 2017-01-20  Alan Modra  <amodra@gmail.com>
+ 
+ 	PR target/79144
+ 	* config/rs6000/rs6000.c (expand_strn_compare): Get the asm name
+ 	for strcmp and strncmp from corresponding builtin decl.
+ 
+ 2017-01-19  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config.gcc (x86_64-*-rtems*): Use i386/rtemself.h
+ 	instead of i386/rtems-64.h.
+ 	* config/i386/rtems-64.h: Remove.
+ 
+ 2017-01-19  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/78478
+ 	Revert:
+ 	2013-11-05  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/rtemself.h (LONG_DOUBLE_TYPE_SIZE): New define.
+ 
+ 2017-01-19  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_simd_gen_const_vector_dup):
+ 	Change int to HOST_WIDE_INT.
+ 	* config/aarch64/aarch64-protos.h
+ 	(aarch64_simd_gen_const_vector_dup): Likewise.
+ 	* config/aarch64/aarch64-simd.md: Add copysign<mode>3.
+ 
+ 2017-01-19  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* langhooks-def.h (lhd_type_for_size): New decl.
+ 	(LANG_HOOKS_TYPE_FOR_SIZE): Define as lhd_type_for_size.
+ 	* langhooks.c (lhd_type_for_size): New function, taken from
+ 	lto_type_for_size.
+ 
+ 2017-01-19  Pat Haugen  <pthaugen@us.ibm.com>
+ 
+ 	* config/rs6000/power9.md (power9-alu): Remove 'cmp' type and add
+ 	define_bypass for CR latency.
+ 	(power9-cracked-alu): Update bypass latency and remove power9-branch.
+ 	(power9-alu2): Add define_bypass for CR latency.
+ 	(power9-cmp): New.
+ 	(power9-mul): Update insn latency.
+ 	(power9-mul-compare): Update insn latency, bypass latency and remove
+ 	power9-branch.
+ 
+ 2016-01-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* config/aarch64/aarch64-protos.h (aarch64_nopcrelative_literal_loads):
+ 	Delete.
+ 	* config/aarch64/aarch64.md
+ 	(aarch64_reload_movcp<GPF_TF:mode><P:mode>): Delete reference to
+ 	aarch64_nopcrelative_literal_loads.
+ 	(aarch64_reload_movcp<VALL:mode><P:mode>): Likewise.
+ 
+ 2017-01-19  Chenghua Xu  <paul.hua.gm@gmail.com>
+ 
+ 	* config/mips/mips.h (ISA_HAS_FUSED_MADD4): Enable for
+ 	TARGET_LOONGSON_3A.
+ 	(ISA_HAS_UNFUSED_MADD4): Exclude TARGET_LOONGSON_3A.
+ 
+ 2017-01-19  Doug Gilmore  <doug.gilmore@imgtec.com>
+ 
+ 	PR target/78176
+ 	* config.gcc (supported_defaults): Add lxc1-sxc1.
+ 	(with_lxc1_sxc1): Add validation.
+ 	(all_defaults): Add lxc1-sxc1.
+ 	* config/mips/mips.opt (mlxc1-sxc1): New option.
+ 	* config/mips/mips.h (OPTION_DEFAULT_SPECS): Add a default for
+ 	mlxc1-sxc1.
+ 	(TARGET_CPU_CPP_BUILTINS): Add builtin_define for
+ 	__mips_no_lxc1_sxc1.
+ 	(ISA_HAS_LXC1_SXC1): Gate with mips_lxc1_sxc1.
+ 	* doc/invoke.texi (-mlxc1-sxc1): Document the new option.
+ 	* doc/install.texi (--with-lxc1-sxc1): Document the new option.
+ 
+ 2017-01-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/72488
+ 	* tree-ssa-sccvn.c (run_scc_vn): When we abort the VN make
+ 	sure to restore SSA info.
+ 	* tree-ssa.c (verify_ssa): Verify SSA info is not shared.
+ 
+ 2017-01-19  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR rtl-optimization/79121
+ 	* expr.c (expand_expr_real_2, case LSHIFT_EXPR): Look at the signedness
+ 	of the inner type when shifting an extended value.
+ 
+ 2017-01-17  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR lto/78407
+ 	* symtab.c (symtab_node::equal_address_to): Fix comparing of
+ 	interposable aliases.
+ 
+ 2017-01-18  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	PR target/78516
+ 	* config/rs6000/spe.md (mov_si<mode>_e500_subreg0): Fix constraints.
+ 	Use the evmergelohi instruction.
+ 	(mov_si<mode>_e500_subreg4_2_le): Likewise.
+ 	(mov_sitf_e500_subreg8_2_be): Likewise.
+ 	(mov_sitf_e500_subreg12_2_le): Likewise.
+ 	(mov_si<mode>_e500_subreg0_2_le): Fix constraints.
+ 	(mov_si<mode>_e500_subreg4_2_be): Likewise.
+ 	(mov_sitf_e500_subreg8_2_le): Likewise.
+ 	(mov_sitf_e500_subreg12_2_be): Likewise.
+ 
+ 2017-01-18  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	* config/rs6000/altivec.md (altivec_vbpermq): Change "type"
+ 	attribute from vecsimple to vecperm.
+ 	(altivec_vbpermq2): Likewise.
+ 
+ 2017-01-18  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	PR target/79040
+ 	* config/rs6000/altivec.h: Fix typo of vec_cntlz to vec_cnttz.
+ 
+ 2017-01-18  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
+ 	* config/rs6000/rs6000-protos.h (expand_strn_compare): Add arg.
+ 	* config/rs6000/rs6000.c (expand_strn_compare): Add ability to expand
+ 	strcmp. Fix bug where comparison didn't stop with zero byte. Fix
+ 	case where N arg is SIZE_MAX.
+ 	* config/rs6000/rs6000.md (cmpstrnsi): Args to expand_strn_compare.
+ 	(cmpstrsi): Add pattern.
+ 
+ 2017-01-18  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	* config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
+ 	__builtin_vec_revb builtins.
+ 	* config/rs6000/rs6000-builtins.def (P9V_BUILTIN_XXBRQ_V16QI): Add
+ 	built-in functions to support generation of the ISA 3.0 XXBR<x>
+ 	vector byte reverse instructions.
+ 	(P9V_BUILTIN_XXBRQ_V1TI): Likewise.
+ 	(P9V_BUILTIN_XXBRD_V2DI): Likewise.
+ 	(P9V_BUILTIN_XXBRD_V2DF): Likewise.
+ 	(P9V_BUILTIN_XXBGW_V4SI): Likewise.
+ 	(P9V_BUILTIN_XXBGW_V4SF): Likewise.
+ 	(P9V_BUILTIN_XXBGH_V8HI): Likewise.
+ 	(P9V_BUILTIN_VEC_REVB): Likewise.
+ 	* config/rs6000/vsx.md (p9_xxbrq_v1ti): New insns/expanders to
+ 	generate the ISA 3.0 XXBR<x> vector byte reverse instructions.
+ 	(p9_xxbrq_v16qi): Likewise.
+ 	(p9_xxbrd_<mode>, VSX_D iterator): Likewise.
+ 	(p9_xxbrw_<mode>, VSX_W iterator): Likewise.
+ 	(p9_xxbrh_v8hi): Likewise.
+ 	* config/rs6000/altivec.h (vec_revb): Define if ISA 3.0.
+ 	* doc/extend.texi (RS/6000 Altivec Built-ins): Document the
+ 	vec_revb built-in functions.
+ 
+ 2017-01-18  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR rtl-optimization/78952
+ 	* config/i386/i386.md (any_extract): New code iterator.
+ 	(*insvqi_2): Use any_extract for source operand.
+ 	(*insvqi_3): Use any_shiftrt for source operand.
+ 
+ 2017-01-18  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_sched_adjust_priority)
+ 	New function.
+ 	(TARGET_SCHED_ADJUST_PRIORITY): Define target hook.
+ 
+ 2017-01-18  Matthias Klose  <doko@ubuntu.com>
+ 
+ 	* doc/install.texi: Allow default for --with-target-bdw-gc-include.
+ 
+ 2016-01-18  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	* config/rs6000/altivec.h (vec_bperm): Change #define.
+ 	* config/rs6000/altivec.md (UNSPEC_VBPERMD): New enum constant.
+ 	(altivec_vbpermq2): New define_insn.
+ 	(altivec_vbpermd): Likewise.
+ 	* config/rs6000/rs6000-builtin.def (VBPERMQ2): New monomorphic
+ 	function interface.
+ 	(VBPERMD): Likewise.
+ 	(VBPERM): New polymorphic function interface.
+ 	* config/rs6000/r6000-c.c (altivec_overloaded_builtins_table):
+ 	Add entries for P9V_BUILTIN_VEC_VBPERM.
+ 	* doc/extend.texi: Add interfaces for vec_bperm.
+ 
+ 2017-01-18  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	* config/s390/s390-c.c (s390_expand_overloaded_builtin): Downcase
+ 	first letter of error messages.
+ 	(s390_resolve_overloaded_builtin): Likewise.
+ 	* config/s390/s390.c (s390_expand_builtin): Likewise.
+ 	(s390_invalid_arg_for_unprototyped_fn): Likewise.
+ 	(s390_valid_target_attribute_inner_p): Likewise.
+ 	* config/s390/s390.md ("tabort"): Likewise.
+ 
+ 2017-01-18  Toma Tabacu  <toma.tabacu@imgtec.com>
+ 
+ 	* config/mips/mips.h (ISA_HAS_DIV3): Remove unused macro.
+ 	(ISA_AVOID_DIV_HILO): New macro.
+ 	(ISA_HAS_DIV): Use new ISA_AVOID_DIV_HILO macro.
+ 	(ISA_HAS_DDIV): Likewise.
+ 
+ 2017-01-18  Markus Trippelsdorf  <markus@trippelsdorf.de>
+ 
+ 	* doc/invoke.texi (fabi-version): Correct number of occurrences.
+ 
+ 2017-01-18  Markus Trippelsdorf  <markus@trippelsdorf.de>
+ 
+ 	* doc/invoke.texi (fabi-version): Spelling fix.
+ 
+ 2017-01-18  Markus Trippelsdorf  <markus@trippelsdorf.de>
+ 
+ 	PR c++/70182
+ 	* doc/invoke.texi (fabi-version): Mention mangling fix for
+ 	operator names.
+ 
+ 2017-01-18  Markus Trippelsdorf  <markus@trippelsdorf.de>
+ 
+ 	PR c++/77489
+ 	* doc/invoke.texi (fabi-version): Document discriminator mangling.
+ 
+ 2017-01-17  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR target/78875
+ 	* config/rs6000/rs6000-opts.h (stack_protector_guard): New enum.
+ 	* config/rs6000/rs6000.c (rs6000_option_override_internal): Handle
+ 	the new options.
+ 	* config/rs6000/rs6000.md (stack_protect_set): Handle the new more
+ 	flexible settings.
+ 	(stack_protect_test): Ditto.
+ 	* config/rs6000/rs6000.opt (mstack-protector-guard=,
+ 	mstack-protector-guard-reg=, mstack-protector-guard-offset=): New
+ 	options.
+ 	* doc/invoke.texi (Option Summary) [RS/6000 and PowerPC Options]:
+ 	Add -mstack-protector-guard=, -mstack-protector-guard-reg=, and
+ 	-mstack-protector-guard-offset=.
+ 	(RS/6000 and PowerPC Options): Ditto.
+ 
+ 2017-01-17  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.h (MASK_CLASS_P): New define.
+ 	* config/i386/i386.c (inline_secondary_memory_needed): Ensure that
+ 	there are no registers from different register sets also when
+ 	mask registers are used.  Update function comment.
+ 	* config/i386/i386.md (*movsi_internal): Split (*k/*krm) alternative
+ 	to (*k/*r) and (*k/*km) alternatives.
+ 
+ 2017-01-17  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	* config/aarch64/aarch64.md (eh_return): Remove pattern and splitter.
+ 	* config/aarch64/aarch64.h (AARCH64_EH_STACKADJ_REGNUM): Remove.
+ 	(EH_RETURN_HANDLER_RTX): New define.
+ 	* config/aarch64/aarch64.c (aarch64_frame_pointer_required):
+ 	Force frame pointer in EH return functions.
+ 	(aarch64_expand_epilogue): Add barrier for eh_return.
+ 	(aarch64_final_eh_return_addr): Remove.
+ 	(aarch64_eh_return_handler_rtx): New function.
+ 	* config/aarch64/aarch64-protos.h (aarch64_final_eh_return_addr):
+ 	Remove.
+ 	(aarch64_eh_return_handler_rtx): New prototype.
+ 
+ 2017-01-17  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	* config/rs6000/altivec.h (vec_rlmi): New #define.
+ 	(vec_vrlnm): Likewise.
+ 	(vec_rlnm): Likewise.
+ 	* config/rs6000/altivec.md (UNSPEC_VRLMI): New UNSPEC enum value.
+ 	(UNSPEC_VRLNM): Likewise.
+ 	(VIlong): New mode iterator.
+ 	(altivec_vrl<VI_char>mi): New define_insn.
+ 	(altivec_vrl<VI_char>nm): Likewise.
+ 	* config/rs6000/rs6000-builtin.def (VRLWNM): New monomorphic
+ 	function entry.
+ 	(VRLDNM): Likewise.
+ 	(RLNM): New polymorphic function entry.
+ 	(VRLWMI): New monomorphic function entry.
+ 	(VRLDMI): Likewise.
+ 	(RLMI): New polymorphic function entry.
+ 	* config/rs6000/r6000-c.c (altivec_overloaded_builtin_table): Add
+ 	new entries for P9V_BUILTIN_VEC_RLMI and P9V_BUILTIN_VEC_RLNM.
+ 	* doc/extend.texi: Add description of vec_rlmi, vec_rlnm, and
+ 	vec_vrlnm.
+ 
+ 2017-01-17  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/78839
+ 	* dwarf2out.c (field_byte_offset): Restore the
+ 	PCC_BITFIELD_TYPE_MATTERS behavior for INTEGER_CST DECL_FIELD_OFFSET
+ 	and DECL_FIELD_BIT_OFFSET.  Use fold_build2 instead of build2 + fold.
+ 	(analyze_variants_discr, gen_variant_part): Use fold_build2 instead
+ 	of build2 + fold.
+ 
+ 2017-01-17  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/67205
+ 	* config/aarch64/aarch64.c (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): Define
+ 
+ 2017-01-17  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/71669
+ 	* dwarf2out.c (add_data_member_location_attribute): For constant
+ 	offset bitfield emit for -gdwarf-5 DW_AT_data_bit_offset attribute
+ 	instead of DW_AT_data_member_location, DW_AT_bit_offset and
+ 	DW_AT_byte_size attributes.
+ 
+ 2017-01-17  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_emit_move): Also use a TOC reference
+ 	after forcing to constant memory when the code model is medium.
+ 
+ 2017-01-17  Julia Koval  <julia.koval@intel.com>
+ 
+ 	PR target/76731
+ 	* config/i386/avx512fintrin.h
+ 	(_mm512_i32gather_ps): Change __addr type to void const*.
+ 	(_mm512_mask_i32gather_ps): Ditto.
+ 	(_mm512_i32gather_pd): Ditto.
+ 	(_mm512_mask_i32gather_pd): Ditto.
+ 	(_mm512_i64gather_ps): Ditto.
+ 	(_mm512_mask_i64gather_ps): Ditto.
+ 	(_mm512_i64gather_pd): Ditto.
+ 	(_mm512_mask_i64gather_pd): Ditto.
+ 	(_mm512_i32gather_epi32): Ditto.
+ 	(_mm512_mask_i32gather_epi32): Ditto.
+ 	(_mm512_i32gather_epi64): Ditto.
+ 	(_mm512_mask_i32gather_epi64): Ditto.
+ 	(_mm512_i64gather_epi32): Ditto.
+ 	(_mm512_mask_i64gather_epi32): Ditto.
+ 	(_mm512_i64gather_epi64): Ditto.
+ 	(_mm512_mask_i64gather_epi64): Ditto.
+ 	(_mm512_i32scatter_ps): Change __addr type to void*.
+ 	(_mm512_mask_i32scatter_ps): Ditto.
+ 	(_mm512_i32scatter_pd): Ditto.
+ 	(_mm512_mask_i32scatter_pd): Ditto.
+ 	(_mm512_i64scatter_ps): Ditto.
+ 	(_mm512_mask_i64scatter_ps): Ditto.
+ 	(_mm512_i64scatter_pd): Ditto.
+ 	(_mm512_mask_i64scatter_pd): Ditto.
+ 	(_mm512_i32scatter_epi32): Ditto.
+ 	(_mm512_mask_i32scatter_epi32): Ditto.
+ 	(_mm512_i32scatter_epi64): Ditto.
+ 	(_mm512_mask_i32scatter_epi64): Ditto.
+ 	(_mm512_i64scatter_epi32): Ditto.
+ 	(_mm512_mask_i64scatter_epi32): Ditto.
+ 	(_mm512_i64scatter_epi64): Ditto.
+ 	(_mm512_mask_i64scatter_epi64): Ditto.
+ 	* config/i386/avx512pfintrin.h
+ 	(_mm512_mask_prefetch_i32gather_pd): Change __addr type to void const*.
+ 	(_mm512_mask_prefetch_i32gather_ps): Ditto.
+ 	(_mm512_mask_prefetch_i64gather_pd): Ditto.
+ 	(_mm512_mask_prefetch_i64gather_ps): Ditto.
+ 	(_mm512_prefetch_i32scatter_pd): Change __addr type to void*.
+ 	(_mm512_prefetch_i32scatter_ps): Ditto.
+ 	(_mm512_mask_prefetch_i32scatter_pd): Ditto.
+ 	(_mm512_mask_prefetch_i32scatter_ps): Ditto.
+ 	(_mm512_prefetch_i64scatter_pd): Ditto.
+ 	(_mm512_prefetch_i64scatter_ps): Ditto.
+ 	(_mm512_mask_prefetch_i64scatter_pd): Ditto.
+ 	(_mm512_mask_prefetch_i64scatter_ps): Ditto.
+ 	* config/i386/avx512vlintrin.h
+ 	(_mm256_mmask_i32gather_ps): Change __addr type to void const*.
+ 	(_mm_mmask_i32gather_ps): Ditto.
+ 	(_mm256_mmask_i32gather_pd): Ditto.
+ 	(_mm_mmask_i32gather_pd): Ditto.
+ 	(_mm256_mmask_i64gather_ps): Ditto.
+ 	(_mm_mmask_i64gather_ps): Ditto.
+ 	(_mm256_mmask_i64gather_pd): Ditto.
+ 	(_mm_mmask_i64gather_pd): Ditto.
+ 	(_mm256_mmask_i32gather_epi32): Ditto.
+ 	(_mm_mmask_i32gather_epi32): Ditto.
+ 	(_mm256_mmask_i32gather_epi64): Ditto.
+ 	(_mm_mmask_i32gather_epi64): Ditto.
+ 	(_mm256_mmask_i64gather_epi32): Ditto.
+ 	(_mm_mmask_i64gather_epi32): Ditto.
+ 	(_mm256_mmask_i64gather_epi64): Ditto.
+ 	(_mm_mmask_i64gather_epi64): Ditto.
+ 	(_mm256_i32scatter_ps): Change __addr type to void*.
+ 	(_mm256_mask_i32scatter_ps): Ditto.
+ 	(_mm_i32scatter_ps): Ditto.
+ 	(_mm_mask_i32scatter_ps): Ditto.
+ 	(_mm256_i32scatter_pd): Ditto.
+ 	(_mm256_mask_i32scatter_pd): Ditto.
+ 	(_mm_i32scatter_pd): Ditto.
+ 	(_mm_mask_i32scatter_pd): Ditto.
+ 	(_mm256_i64scatter_ps): Ditto.
+ 	(_mm256_mask_i64scatter_ps): Ditto.
+ 	(_mm_i64scatter_ps): Ditto.
+ 	(_mm_mask_i64scatter_ps): Ditto.
+ 	(_mm256_i64scatter_pd): Ditto.
+ 	(_mm256_mask_i64scatter_pd): Ditto.
+ 	(_mm_i64scatter_pd): Ditto.
+ 	(_mm_mask_i64scatter_pd): Ditto.
+ 	(_mm256_i32scatter_epi32): Ditto.
+ 	(_mm256_mask_i32scatter_epi32): Ditto.
+ 	(_mm_i32scatter_epi32): Ditto.
+ 	(_mm_mask_i32scatter_epi32): Ditto.
+ 	(_mm256_i32scatter_epi64): Ditto.
+ 	(_mm256_mask_i32scatter_epi64): Ditto.
+ 	(_mm_i32scatter_epi64): Ditto.
+ 	(_mm_mask_i32scatter_epi64): Ditto.
+ 	(_mm256_i64scatter_epi32): Ditto.
+ 	(_mm256_mask_i64scatter_epi32): Ditto.
+ 	(_mm_i64scatter_epi32): Ditto.
+ 	(_mm_mask_i64scatter_epi32): Ditto.
+ 	(_mm256_i64scatter_epi64): Ditto.
+ 	(_mm256_mask_i64scatter_epi64): Ditto.
+ 	(_mm_i64scatter_epi64): Ditto.
+ 	(_mm_mask_i64scatter_epi64): Ditto.
+ 	* config/i386/i386-builtin-types.def (V16SF_V16SF_PCFLOAT_V16SI_HI_INT)
+ 	(V8DF_V8DF_PCDOUBLE_V8SI_QI_INT, V8SF_V8SF_PCFLOAT_V8DI_QI_INT)
+ 	(V8DF_V8DF_PCDOUBLE_V8DI_QI_INT, V16SI_V16SI_PCINT_V16SI_HI_INT)
+ 	(V8DI_V8DI_PCINT64_V8SI_QI_INT, V8SI_V8SI_PCINT_V8DI_QI_INT)
+ 	(V8DI_V8DI_PCINT64_V8DI_QI_INT, V2DF_V2DF_PCDOUBLE_V4SI_QI_INT)
+ 	(V4DF_V4DF_PCDOUBLE_V4SI_QI_INT, V2DF_V2DF_PCDOUBLE_V2DI_QI_INT)
+ 	(V4DF_V4DF_PCDOUBLE_V4DI_QI_INT, V4SF_V4SF_PCFLOAT_V4SI_QI_INT)
+ 	(V8SF_V8SF_PCFLOAT_V8SI_QI_INT, V4SF_V4SF_PCFLOAT_V2DI_QI_INT)
+ 	(V4SF_V4SF_PCFLOAT_V4DI_QI_INT, V2DI_V2DI_PCINT64_V4SI_QI_INT)
+ 	(V4DI_V4DI_PCINT64_V4SI_QI_INT, V2DI_V2DI_PCINT64_V2DI_QI_INT)
+ 	(V4DI_V4DI_PCINT64_V4DI_QI_INT, V4SI_V4SI_PCINT_V4SI_QI_INT)
+ 	(V8SI_V8SI_PCINT_V8SI_QI_INT, V4SI_V4SI_PCINT_V2DI_QI_INT)
+ 	(V4SI_V4SI_PCINT_V4DI_QI_INT, VOID_PFLOAT_HI_V16SI_V16SF_INT)
+ 	(VOID_PFLOAT_QI_V8SI_V8SF_INT, VOID_PFLOAT_QI_V4SI_V4SF_INT)
+ 	(VOID_PDOUBLE_QI_V8SI_V8DF_INT, VOID_PDOUBLE_QI_V4SI_V4DF_INT)
+ 	(VOID_PDOUBLE_QI_V4SI_V2DF_INT, VOID_PFLOAT_QI_V8DI_V8SF_INT)
+ 	(VOID_PFLOAT_QI_V4DI_V4SF_INT, VOID_PFLOAT_QI_V2DI_V4SF_INT)
+ 	(VOID_PDOUBLE_QI_V8DI_V8DF_INT, VOID_PDOUBLE_QI_V4DI_V4DF_INT)
+ 	(VOID_PDOUBLE_QI_V2DI_V2DF_INT, VOID_PINT_HI_V16SI_V16SI_INT)
+ 	(VOID_PINT_QI_V8SI_V8SI_INT, VOID_PINT_QI_V4SI_V4SI_INT)
+ 	(VOID_PLONGLONG_QI_V8SI_V8DI_INT, VOID_PLONGLONG_QI_V4SI_V4DI_INT)
+ 	(VOID_PLONGLONG_QI_V4SI_V2DI_INT, VOID_PINT_QI_V8DI_V8SI_INT)
+ 	(VOID_PINT_QI_V4DI_V4SI_INT, VOID_PINT_QI_V2DI_V4SI_INT)
+ 	(VOID_PLONGLONG_QI_V8DI_V8DI_INT, VOID_QI_V8SI_PCINT64_INT_INT)
+ 	(VOID_PLONGLONG_QI_V4DI_V4DI_INT, VOID_PLONGLONG_QI_V2DI_V2DI_INT)
+ 	(VOID_HI_V16SI_PCINT_INT_INT, VOID_QI_V8DI_PCINT64_INT_INT)
+ 	(VOID_QI_V8DI_PCINT_INT_INT): Remove.
+ 	(V16SF_V16SF_PCVOID_V16SI_HI_INT,  V8DF_V8DF_PCVOID_V8SI_QI_INT)
+ 	(V8SF_V8SF_PCVOID_V8DI_QI_INT, V8DF_V8DF_PCVOID_V8DI_QI_INT)
+ 	(V16SI_V16SI_PCVOID_V16SI_HI_INT, V8DI_V8DI_PCVOID_V8SI_QI_INT)
+ 	(V8SI_V8SI_PCVOID_V8DI_QI_INT, V8DI_V8DI_PCVOID_V8DI_QI_INT)
+ 	(VOID_PVOID_HI_V16SI_V16SF_INT, VOID_PVOID_QI_V8SI_V8DF_INT)
+ 	(VOID_PVOID_QI_V8DI_V8SF_INT, VOID_PVOID_QI_V8DI_V8DF_INT)
+ 	(VOID_PVOID_HI_V16SI_V16SI_INT, VOID_PVOID_QI_V8SI_V8DI_INT)
+ 	(VOID_PVOID_QI_V8DI_V8SI_INT, VOID_PVOID_QI_V8DI_V8DI_INT)
+ 	(V2DF_V2DF_PCVOID_V4SI_QI_INT, V4DF_V4DF_PCVOID_V4SI_QI_INT)
+ 	(V2DF_V2DF_PCVOID_V2DI_QI_INT, V4DF_V4DF_PCVOID_V4DI_QI_INT
+ 	(V4SF_V4SF_PCVOID_V4SI_QI_INT, V8SF_V8SF_PCVOID_V8SI_QI_INT)
+ 	(V4SF_V4SF_PCVOID_V2DI_QI_INT, V4SF_V4SF_PCVOID_V4DI_QI_INT)
+ 	(V2DI_V2DI_PCVOID_V4SI_QI_INT, V4DI_V4DI_PCVOID_V4SI_QI_INT)
+ 	(V2DI_V2DI_PCVOID_V2DI_QI_INT, V4DI_V4DI_PCVOID_V4DI_QI_INT)
+ 	(V4SI_V4SI_PCVOID_V4SI_QI_INT, V8SI_V8SI_PCVOID_V8SI_QI_INT)
+ 	(V4SI_V4SI_PCVOID_V2DI_QI_INT, V4SI_V4SI_PCVOID_V4DI_QI_INT)
+ 	(VOID_PVOID_QI_V8SI_V8SF_INT, VOID_PVOID_QI_V4SI_V4SF_INT)
+ 	(VOID_PVOID_QI_V4SI_V4DF_INT, VOID_PVOID_QI_V4SI_V2DF_INT)
+ 	(VOID_PVOID_QI_V4DI_V4SF_INT, VOID_PVOID_QI_V2DI_V4SF_INT)
+ 	(VOID_PVOID_QI_V4DI_V4DF_INT, VOID_PVOID_QI_V2DI_V2DF_INT)
+ 	(VOID_PVOID_QI_V8SI_V8SI_INT, VOID_PVOID_QI_V4SI_V4SI_INT)
+ 	(VOID_PVOID_QI_V4SI_V4DI_INT, VOID_PVOID_QI_V4SI_V2DI_INT)
+ 	(VOID_PVOID_QI_V4DI_V4SI_INT, VOID_PVOID_QI_V2DI_V4SI_INT)
+ 	(VOID_PVOID_QI_V4DI_V4DI_INT, VOID_PVOID_QI_V2DI_V2DI_INT)
+ 	(VOID_QI_V8SI_PCVOID_INT_INT, VOID_HI_V16SI_PCVOID_INT_INT)
+ 	(VOID_QI_V8DI_PCVOID_INT_INT): Add.
+ 	* config/i386/i386.c (ix86_init_mmx_sse_builtins): Adjust builtin
+ 	definitions accordingly.
+ 
+ 2017-01-17  Kito Cheng  <kito.cheng@gmail.com>
+ 	    Kuan-Lin Chen  <kuanlinchentw@gmail.com>
+ 
+ 	PR target/79079
+ 	* internal-fn.c (expand_mul_overflow): Use convert_modes instead of
+ 	gen_lowpart.
+ 
+ 2017-01-17  Vladimir Makarov  <vmakarov@redhat.com>
+ 
+ 	PR target/79058
+ 	* ira-conflicts.c (ira_build_conflicts): Update total conflict
+ 	hard regs for inner regno.
+ 
+ 2017-01-17  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR ipa/71207
+ 	* ipa-polymorphic-call.c (contains_type_p): Fix wrong
+ 	assumption and add comment.
+ 
+ 2017-01-17  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* ipa-visibility.c (localize_node): New function, broken out of ...
+ 	(function_and_variable_visibility): ... here. Call it.
+ 
+ 2017-01-17  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR middle-end/77445
+ 	* tree-ssa-threadupdate.c (remove_ctrl_stmt_and_useless_edges):
+ 	correctly set frequency of oudgoing edge.
+ 	(duplicate_thread_path): Fix profile updating.
+ 
+ 2017-01-17  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR other/79046
+ 	* configure.ac: Add GCC_BASE_VER.
+ 	* Makefile.in (version): Use @get_gcc_base_ver@ instead of cat to get
+ 	version from BASE-VER file.
+ 	(CFLAGS-gcc.o): Add -DBASEVER=$(BASEVER_s).
+ 	(gcc.o): Depend on $(BASEVER).
+ 	* common.opt (dumpfullversion): New option.
+ 	* gcc.c (driver_handle_option): Handle OPT_dumpfullversion.
+ 	* doc/invoke.texi: Document -dumpfullversion.
+ 	* doc/install.texi: Document --with-gcc-major-version-only.
+ 	* configure: Regenerated.
+ 
+ 2017-01-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/71433
+ 	* tree-vrp.c (register_new_assert_for): Merge same asserts
+ 	on all incoming edges.
+ 	(process_assert_insertions_for): Handle insertions at the
+ 	beginning of BBs.
+ 
+ 2017-01-17  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* config/i386/cygwin.h (LIBGCJ_SONAME): Remove.
+ 	* config/i386/mingw32.h (LIBGCJ_SONAME): Remove.
+ 
+ 2017-01-17  Kaz Kojima  <kkojima@gcc.gnu.org>
+ 
+ 	PR target/78633
+ 	* config/sh/sh.md (cmpeqsi_t+1): Call copy_rtx to avoid invalid
+ 	RTL sharing.
+ 
+ 2017-01-17  Alan Modra  <amodra@gmail.com>
+ 
+ 	PR target/79066
+ 	* config/rs6000/rs6000.md (elf_high, elf_low): Disable when pic.
+ 	* config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Don't allow
+ 	symbolic stack limit when pic.
+ 
+ 2017-01-16  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR tree-optimization/78608
+ 	* gimple-ssa-sprintf.c (tree_digits): Avoid negating TYPE_MIN.
+ 
+ 2017-01-16  Jeff Law  <law@redhat.com>
+ 
+ 	Revert:
+ 	2016-12-02  Tadek Kijkowski  <tkijkowski@gmail.com>
+ 	* Makefile.in (PREPROCESSOR_DEFINES): Add a level of indirection
+ 	for several include directories that may be relative to sysroot.
+ 	* config/i386/x-mingw32 (gplus_includedir): Define.
+ 	(gplus_tool_includedir, gplus_backward_include_dir): Likewise.
+ 	(native_system_includedir): Likewise.
+ 	* config/i386/mingw32.h (STANDARD_STARTFILE_PREFIX_1): Do not
+ 	override if TARGET_SYSTEM_ROOT is defined.
+ 	(NATIVE_SYSTEM_HEADER_DIR): Likewise.
+ 
+ 	PR tree-optimization/79090
+ 	PR tree-optimization/33562
+ 	PR tree-optimization/61912
+ 	PR tree-optimization/77485
+ 	* tree-ssa-dse.c (compute_trims): Accept STMT argument.  Dump STMT
+ 	and computed trims into the dump file.
+ 
+ 2017-01-17  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.h (LIMIT_RELOAD_CLASS): Remove.
+ 
+ 2017-01-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/79089
+ 	* gimplify.c (gimplify_init_constructor): If want_value and
+ 	object == lhs, unshare lhs to avoid invalid tree sharing.  Formatting
+ 	fix.
+ 
+ 	PR target/79080
+ 	* loop-doloop.c (doloop_modify): Call unshare_all_rtl_in_chain on
+ 	sequence.  Formatting fixes.
+ 	(doloop_optimize): Formatting fixes.
+ 
+ 	PR driver/49726
+ 	* gcc.c (debug_level_greater_than_spec_func): New function.
+ 	(static_spec_functions): Add debug-level-gt spec function.
+ 	(ASM_DEBUG_SPEC, cpp_options): Use %:debug-level-gt(0) instead of
+ 	!g0.
+ 	* config/darwin.h (DSYMUTIL_SPEC, ASM_DEBUG_SPEC): Likewise.
+ 	* config/darwin9.h (DSYMUTIL_SPEC, ASM_DEBUG_SPEC): Likewise.
+ 	* common.opt (g, gcoff, gdwarf, gdwarf-, ggdb, gno-pubnames,
+ 	gpubnames, ggnu-pubnames, gno-record-gcc-switches,
+ 	grecord-gcc-switches, gno-strict-dwarf, gstrict-dwarf, gstabs,
+ 	gstabs+, gtoggle, gvms, gxcoff, gxcoff+): Add Driver flag.
+ 
+ 2017-01-16  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.h (HARD_REGNO_CALLER_SAVE_MODE): Apply HImode and
+ 	QImode fixups to general and mask registers only.
+ 
+ 2017-01-16  Carl Love  <cel@us.ibm.com>
+ 
+ 	* config/rs6000/rs6000-c (altivec_overloaded_builtins): Add support
+ 	for built-in functions
+ 	vector signed char vec_nabs (vector signed char)
+ 	vector signed short vec_nabs (vector signed short)
+ 	vector signed int vec_nabs (vector signed int)
+ 	vector signed long long vec_nabs (vector signed long long)
+ 	vector float vec_nabs (vector float)
+ 	vector double vec_nabs (vector double)
+ 	* config/rs6000/rs6000-builtin.def: Add definitions for NABS functions
+ 	and NABS overload.
+ 	* config/rs6000/altivec.md: New define_expand nabs<mode>2 types
+ 	* config/rs6000/altivec.h: New define for vec_nabs built-in function.
+ 	* doc/extend.texi: Update the documentation file for the new built-in
+ 	functions.
+ 
+ 2017-01-16  Martin Sebor  <msebor@redhat.com>
+ 
+ 	* gimple-ssa-sprintf.c (format_directive): Correct a typo in a warning
+ 	message.
+ 
+ 2017-01-16  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	* config/rs6000/rs6000.c (rtx_is_swappable_p): Change
+ 	UNSPEC_VSX__XXSPLTD to require special splat handling.
+ 
+ 2017-01-16  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR bootstrap/78616
+ 	* system.h: Poison strndup.
+ 
+ 2017-01-16  Alan Modra  <amodra@gmail.com>
+ 
+ 	PR target/79098
+ 	* config/rs6000/rs6000.c (rs6000_legitimate_combined_insn): Don't
+ 	use a switch.
+ 
+ 2017-01-16  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	* config/avr/avr.h (BRANCH_COST) [reload_completed]: Increase by 4.
+ 
+ 2017-01-15  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.c (ix86_legitimate_combined_insn): Do not
+ 	call recog here.  Assert that INSN_CODE (insn) is non-negative.
+ 
+ 2017-01-15  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR target/72749
+ 	* cfgrtl.c (rtl_split_edge): Also patch jump insns that jump to the
+ 	fallthrough.
+ 	* haifa-sched.c (dump_insn_stream): Don't crash if there is a label
+ 	in the currently scheduled RTL fragment.
+ 
+ 2017-01-15  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR rtl-optimization/78751
+ 	* ifcvt.c (find_cond_trap): If we generated a non-existing insn,
+ 	give up.
+ 
+ 2017-01-14  Jeff Law  <law@redhat.com>
+ 
+ 	PR tree-optimization/79090
+ 	* tree-ssa-dse.c (valid_ao_ref_for_dse): Reject zero length and
+ 	variable length stores.
+ 	(compute_trims): Delete dead assignment to *trim_tail.
+ 	(dse_dom_walker::dse_optimize_stmt): Optimize mem* calls with
+ 	zero length.
+ 
+ 2017-01-14  Bernd Schmidt  <bschmidt@redhat.com>
+ 
+ 	PR rtl-optimization/78626
+ 	PR rtl-optimization/78727
+ 	* cprop.c (one_cprop_pass): Collect unconditional traps in the middle
+ 	of a block, and split such blocks after everything else is finished.
+ 
+ 2017-01-14  Alan Modra  <amodra@gmail.com>
+ 
+ 	PR target/72749
+ 	* combine.c (recog_for_combine_1): Set INSN_CODE before calling
+ 	target legitimate_combined_insn.
+ 	* config/rs6000/rs6000.c (TARGET_LEGITIMATE_COMBINED_INSN): Define.
+ 	(rs6000_legitimate_combined_insn): New function.
+ 	* config/rs6000/rs6000.md (UNSPEC_DOLOOP): Delete, and remove
+ 	all uses.
+ 	(ctr<mode>_internal3): Rename from *ctr<mode>_internal5.
+ 	(ctr<mode>_internal4): Rename from *ctr<mode>_internal6.
+ 	(ctr<mode>_internal1, ctr<mode>_internal2): Remove '*' from name.
+ 
+ 2017-01-14  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* doc/frontends.texi (G++ and GCC): Remove references to Java.
+ 
+ 2017-01-13  Jeff Law  <law@redhat.com>
+ 
+ 	PR tree-optimization/33562
+ 	PR tree-optimization/61912
+ 	PR tree-optimization/77485
+ 	* tree-ssa-dse.c (delete_dead_call): Accept gsi rather than
+ 	a statement.
+ 	(delete_dead_assignment): Likewise.
+ 	(dse_dom_walker::dse_optimize_stmt): Pass in the gsi rather than
+ 	statement to delete_dead_call and delete_dead_assignment.
+ 
+ 2017-01-13  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR c/78304
+ 	* substring-locations.c (format_warning_va): Strengthen case 1 so
+ 	that both endpoints of the substring must be within the format
+ 	range for just the substring to be printed.
+ 
+ 2017-01-13  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.opt (msgx): Use ix86_isa_flags2 variable.
+ 	* config/i386/i386.c (ix86_target_string): Add missing options
+ 	to isa_opts and reorder options by implied ISAs.  Rename isa_opts2 to
+ 	isa2_opts, ix86_flag_opts to flag2_opts, ix86_target_other to
+ 	flags_other and ix86_target_other to flags2_other.  Display unknown
+ 	isa2 options.
+ 	(ix86_valid_target_attribute_inner_p): Add missing options and
+ 	reorder options by implied ISAs, as in ix86_target_string.
+ 
+ 2017-01-13  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* hash-table.h (hash_table::too_empty_p): New function.
+ 	(hash_table::expand): Use it.
+ 	(hash_table::traverse): Likewise.
+ 	(hash_table::empty_slot): Use sizeof (value_type) instead of
+ 	sizeof (PTR) to convert bytes to elements.  Shrink the table
+ 	if the current size is excessive for the current number of
+ 	elements.
+ 
+ 2017-01-13  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* ira-costs.c (record_reg_classes): Break from the inner loop
+ 	early once alt_fail is known to be true.  Update outer loop
+ 	handling accordingly.
+ 
+ 2017-01-13  Jeff Law  <law@redhat.com>
+ 
+ 	* tree-ssa-dse.c (decrement_count): New function.
+ 	(increment_start_addr, maybe_trim_memstar_call): Likewise.
+ 	(dse_dom_walker::optimize_stmt): Call maybe_trim_memstar_call directly
+ 	when we know the partially dead statement is a mem* function.
+ 
+ 	PR tree-optimization/61912
+ 	PR tree-optimization/77485
+ 	* tree-ssa-dse.c: Include expr.h.
+ 	(maybe_trim_constructor_store): New function.
+ 	(maybe_trim_partially_dead_store): Call maybe_trim_constructor_store.
+ 
+ 	PR tree-optimization/33562
+ 	PR tree-optimization/61912
+ 	PR tree-optimization/77485
+ 	* doc/invoke.texi: Document new dse-max-object-size param.
+ 	* params.def (PARM_DSE_MAX_OBJECT_SIZE): New PARAM.
+ 	* tree-ssa-dse.c: Include params.h.
+ 	(dse_store_status): New enum.
+ 	(initialize_ao_ref_for_dse): New, partially extracted from
+ 	dse_optimize_stmt.
+ 	(valid_ao_ref_for_dse, normalize_ref): New.
+ 	(setup_live_bytes_from_ref, compute_trims): Likewise.
+ 	(clear_bytes_written_by, maybe_trim_complex_store): Likewise.
+ 	(maybe_trim_partially_dead_store): Likewise.
+ 	(maybe_trim_complex_store): Likewise.
+ 	(dse_classify_store): Renamed from dse_possibly_dead_store_p.
+ 	Track what bytes live from the original store.  Return tri-state
+ 	for dead, partially dead or live.
+ 	(dse_dom_walker): Add constructor, destructor and new private members.
+ 	(delete_dead_call, delete_dead_assignment): New extracted from
+ 	dse_optimize_stmt.
+ 	(dse_optimize_stmt): Make a member of dse_dom_walker.
+ 	Use initialize_ao_ref_for_dse.
+ 
+ 	PR tree-optimization/33562
+ 	PR tree-optimization/61912
+ 	PR tree-optimization/77485
+ 	* sbitmap.h (bitmap_count_bits): Prototype.
+ 	(bitmap_clear_range, bitmap_set_range): Likewise.
+ 	* sbitmap.c (bitmap_clear_range): New function.
+ 	(bitmap_set_range, sbitmap_popcount, bitmap_count_bits): Likewise.
+ 
+ 2017-01-13  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR ipa/79043
+ 	* function.c (set_cfun): Add new argument force.
+ 	* function.h (set_cfun): Likewise.
+ 	* ipa-inline-transform.c (inline_call): Use the function when
+ 	strict alising from is dropped for function we inline to.
+ 
+ 2017-01-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-pretty-print.c (dump_generic_node): Fix inverted condition
+ 	for dumping GIMPLE INTEGER_CSTs.
+ 
+ 2017-01-13  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	* config/sol2.h (TARGET_OS_CPP_BUILTINS): Define __STDC_VERSION__
+ 	to 201112L since C++17.
+ 
+ 2017-01-13  Maxim Ostapenko  <m.ostapenko@samsung.com>
+ 
+ 	PR sanitizer/78887
+ 	* asan.c (asan_needs_odr_indicator_p): Don't emit ODR indicators
+ 	if -fsanitize=kernel-address is present.
+ 
+ 2017-01-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-pretty-print.c (dump_generic_node): Dump INTEGER_CSTs
+ 	as _Literal ( type ) number in case usual suffixes do not
+ 	preserve all information.
+ 
+ 2017-01-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/77283
+ 	* gimple-ssa-split-paths.c: Include gimple-ssa.h, tree-phinodes.h
+ 	and ssa-iterators.h.
+ 	(is_feasible_trace): Implement a cost model based on joiner
+ 	PHI node uses.
+ 
+ 2017-01-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	PR target/79004
+ 	* config/rs6000/rs6000.md (FP_ISA3): Do not optimize converting
+ 	char or short to __float128/_Float128 directly.
+ 
+ 2017-01-12  Martin Sebor  <msebor@redhat.com>
+ 
+ 	to -Wformat-overflow.
+ 	* gimple-ssa-sprintf.c (pass_sprintf_length::gate): Adjust.
+ 	(min_bytes_remaining): Same.
+ 	(get_string_length): Same.
+ 	(format_string): Same.
+ 	(format_directive): Same.
+ 	(add_bytes): Same.
+ 	(pass_sprintf_length::handle_gimple_call): Same.
+ 
+ 2017-01-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* gimple-ssa-sprintf.c (try_substitute_return_value): Remove
+ 	info.nowrite calls with no lhs that can't throw.  Return bool
+ 	whether gsi_remove has been called or not.
+ 	(pass_sprintf_length::handle_gimple_call): Return bool whether
+ 	try_substitute_return_value called gsi_remove.  Formatting fix.
+ 	(pass_sprintf_length::execute): Don't use gsi_remove if
+ 	handle_gimple_call returned true.
+ 
+ 	PR bootstrap/79069
+ 	* cfgrtl.c (rtl_tidy_fallthru_edge): For any_uncondjump_p that can't
+ 	be removed due to side-effects, don't remove following barrier nor
+ 	turn the successor edge into fallthru edge.
+ 
+ 2017-01-12  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	PR target/79044
+ 	* config/rs6000/rs6000.c (insn_is_swappable_p): Mark
+ 	element-reversing loads and stores as not swappable.
+ 
+ 2017-01-12  Nathan Sidwell  <nathan@acm.org>
+ 	    Nicolai Stange  <nicstange@gmail.com>
+ 
+ 	* combine.c (try_combine): Don't ignore result of overlap checking
+ 	loop.  Combine overlap & asm check into single loop.
+ 
+ 2017-01-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-pretty-print.c (dump_generic_node): Provide -gimple
+ 	variant for MEM_REF.  Sanitize INTEGER_CST for -gimple.
+ 
+ 2017-01-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree.c (initialize_tree_contains_struct): Make TS_OPTIMIZATION
+ 	and TS_TARGET_OPTION directly derive from TS_BASE.
+ 	* tree-core.h (tree_optimization_option): Derive from tree_base.
+ 	(tree_target_option): Likewise.
+ 
+ 2017-01-11  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.c (memory_address_length): Increase len
+ 	only when rip_relative_addr_p returns false.
+ 
+ 2017-01-11  Julia Koval  <julia.koval@intel.com>
+ 
+ 	* common/config/i386/i386-common.c (OPTION_MASK_ISA_SGX_UNSET): New.
+ 	(OPTION_MASK_ISA_SGX_SET): New.
+ 	(ix86_handle_option): Handle OPT_msgx.
+ 	* config.gcc: Added sgxintrin.h.
+ 	* config/i386/driver-i386.c (host_detect_local_cpu): Detect sgx.
+ 	* config/i386/i386-c.c (ix86_target_macros_internal): Define __SGX__.
+ 	* config/i386/i386.c (ix86_target_string): Add -msgx.
+ 	(PTA_SGX): New.
+ 	(ix86_option_override_internal): Handle new options.
+ 	(ix86_valid_target_attribute_inner_p): Add sgx.
+ 	* config/i386/i386.h (TARGET_SGX, TARGET_SGX_P): New.
+ 	* config/i386/i386.opt: Add msgx.
+ 	* config/i386/sgxintrin.h: New file.
+ 	* config/i386/x86intrin.h: Add sgxintrin.h.
+ 
+ 2017-01-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/71537
+ 	* fold-const.c (maybe_nonzero_address): Return 1 for function
+ 	local objects.
+ 	(tree_single_nonzero_warnv_p): Don't handle function local objects
+ 	here.
+ 
+ 	PR c++/72813
+ 	* gcc.c (default_compilers): Don't add -o %g.s for -S -save-temps
+ 	of c-header.
+ 
+ 2017-01-11  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR driver/78877
+ 	* opts.c: Include "spellcheck.h"
+ 	(struct string_fragment): New struct.
+ 	(struct edit_distance_traits<const string_fragment &>): New
+ 	struct.
+ 	(get_closest_sanitizer_option): New function.
+ 	(parse_sanitizer_options): Offer suggestions for unrecognized arguments.
+ 
+ 2017-01-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* dwarf2out.c (DWARF_COMPILE_UNIT_HEADER_SIZE): For DWARF5 decrease
+ 	by 12.
+ 	(DWARF_COMDAT_TYPE_UNIT_HEADER_SIZE): Always
+ 	DWARF_COMPILE_UNIT_HEADER_SIZE plus 12.
+ 	(DWARF_COMPILE_UNIT_SKELETON_HEADER_SIZE): Define.
+ 	(calc_base_type_die_sizes): Use DWARF_COMPILE_UNIT_SKELETON_HEADER_SIZE
+ 	for initial die_offset if dwarf_split_debug_info.
+ 	(output_comp_unit): Use DWARF_COMPILE_UNIT_SKELETON_HEADER_SIZE for
+ 	initial next_die_offset if dwo_id is non-NULL.  Don't emit padding
+ 	fields.
+ 	(output_skeleton_debug_sections): Formatting fix.  Use
+ 	DWARF_COMPILE_UNIT_SKELETON_HEADER_SIZE instead of
+ 	DWARF_COMPILE_UNIT_HEADER_SIZE.  Don't emit padding.
+ 
+ 2017-01-11  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	* config/arm/cortex-a53.md: Add bypasses for
+ 	cortex_a53_r2f_cvt.
+ 	(cortex_a53_r2f): Only use for transfers.
+ 	(cortex_a53_f2r): Likewise.
+ 	(cortex_a53_r2f_cvt): Add reservation for conversions.
+ 	(cortex_a53_f2r_cvt): Likewise.
+ 
+ 2017-01-11  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* config/arm/arm_neon.h: Add __artificial__ and gnu_inline
+ 	to all inlined functions, change static to extern.
+ 
+ 2017-01-11  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	PR target/78253
+ 	* config/arm/arm.c (legitimize_pic_address): Handle reference to
+ 	weak symbol.
+ 	(arm_assemble_integer): Likewise.
+ 
+ 2017-01-11  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config.gcc: Use new awk script to check CPU, FPU and architecture
+ 	parameters for --with-... options.
+ 	* config/arm/parsecpu.awk: New file
+ 	* config/arm/arm-cpus.in: New file.
+ 	* config/arm/arm-opts.h: Include arm-cpu.h instead of processing .def
+ 	files.
+ 	* config/arm/arm.c: Include arm-cpu-data.h instead of processing .def
+ 	files.
+ 	* config/arm/t-arm: Update dependency rules.
+ 	* common/config/arm/arm-common.c: Include arm-cpu-cdata.h instead
+ 	of processing .def files.
+ 	* config/arm/genopt.sh: Deleted.
+ 	* config/arm/gentune.sh: Deleted.
+ 	* config/arm/arm-cores.def: Deleted.
+ 	* config/arm/arm-arches.def: Deleted.
+ 	* config/arm/arm-fpus.def: Deleted.
+ 	* config/arm/arm-tune.md: Regenerated.
+ 	* config/arm/arm-tables.opt: Regenerated.
+ 	* config/arm/arm-cpu.h: New generated file.
+ 	* config/arm/arm-cpu-data.h: New generated file.
+ 	* config/arm/arm-cpu-cdata.h: New generated file.
+ 
+ 2017-01-11  Maxim Ostapenko  <m.ostapenko@samsung.com>
+ 
+ 	PR lto/79042
+ 	* lto-cgraph.c (lto_output_varpool_node): Pack dynamically_initialized
+ 	bit.
+ 	(input_varpool_node): Unpack dynamically_initialized bit.
+ 
+ 2017-01-11  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR rtl-optimization/79032
+ 	* lra-constraints.c (simplify_operand_subreg): In the MEM case, test
+ 	the alignment of the adjusted memory reference against that of MODE,
+ 	instead of the alignment of the original memory reference.
+ 
+ 2017-01-11  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* hsa.c (hsa_callable_function_p): Revert addition of DECL_ARTIFICIAL
+ 	test.
+ 	* ipa-hsa.c (process_hsa_functions): Only duplicate non-artificial
+ 	decorated functions.
+ 
+ 2017-01-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vrp.c (evrp_dom_walker::before_dom_children): Also
+ 	set range/nonnull info for PHI results.  Do not set it on
+ 	stmts marked for removal.
+ 
+ 2017-01-10  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* expr.c (store_field): In the bitfield case, fetch the return value
+ 	from the registers before applying a single big-endian adjustment.
+ 	Always do a final load for a BLKmode value not larger than a word.
+ 
+ 2017-01-10  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR c++/77949
+ 	* input.c (selftest::test_accessing_ordinary_linemaps): Verify
+ 	that we correctly handle column numbers greater than
+ 	LINE_MAP_MAX_COLUMN_NUMBER.
+ 
+ 2017-01-10  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/78245
+ 	* gimple-ssa-sprintf.c (get_destination_size): Call
+ 	{init,fini}object_sizes.
+ 	* tree-object-size.c (addr_object_size): Adjust.
+ 	(pass_through_call): Adjust.
+ 	(pass_object_sizes::execute): Adjust.
+ 	* tree-object-size.h (fini_object_sizes): Declare.
+ 
+ 2017-01-10  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR tree-optimization/78775
+ 	* builtins.c (get_size_range): Move...
+ 	* calls.c: ...to here.
+ 	(alloc_max_size): Accept zero argument.
+ 	(operand_signed_p): Remove.
+ 	(maybe_warn_alloc_args_overflow): Call get_size_range.
+ 	* calls.h (get_size_range): Declare.
+ 
+ 2017-01-10  Joe Seymour  <joe.s@somniumtech.com>
+ 
+ 	* config/msp430/driver-msp430.c (msp430_mcu_data): Sync with data
+ 	from TI's devices.csv file as of September 2016.
+ 	* config/msp430/msp430.c (msp430_mcu_data): Likewise.
+ 
+ 2017-01-10  Sandra Loosemore  <sandra@codesourcery.com>
+ 
+ 	* doc/extend.texi: Tweak formatting to fix overfull hbox warnings.
+ 	* doc/invoke.texi: Likewise.
+ 	* doc/md.texi: Likewise.
+ 	* doc/objc.texi: Likewise.
+ 
+ 2017-01-10  Joshua Conner  <joshconner@google.com>
+ 
+ 	* config/arm/fuchsia-elf.h: New file.
+ 	* config/fuchsia.h: New file.
+ 	* config.gcc (*-*-fuchsia*): Set native_system_header_dir.
+ 	(aarch64*-*-fuchsia*, arm*-*-fuchsia*, x86_64-*-fuchsia*): Add to
+ 	targets.
+ 	* config.host: (aarch64*-*-fuchsia*, arm*-*-fuchsia*): Add to hosts.
+ 
+ 2016-01-10  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/79034
+ 	* tree-call-cdce.c (shrink_wrap_one_built_in_call_with_conds):
+ 	Propagate out degenerate PHIs in the joiner.
+ 
+ 2017-01-10  Martin Liska  <mliska@suse.cz>
+ 
+ 	* ipa-icf.c (sort_sem_items_by_decl_uid): New function.
+ 	(sort_congruence_classes_by_decl_uid): Likewise.
+ 	(sort_congruence_class_groups_by_decl_uid): Likewise.
+ 	(sem_item_optimizer::merge_classes): Sort class, groups in these
+ 	classes and members in the groups by DECL_UID of declarations.
+ 	This would make merge operations stable.
+ 
+ 2017-01-10  Martin Liska  <mliska@suse.cz>
+ 
+ 	* ipa-icf.c (sem_item_optimizer::sem_item_optimizer): Remove
+ 	usage of m_classes_vec.
+ 	(sem_item_optimizer::~sem_item_optimizer):  Likewise.
+ 	(sem_item_optimizer::get_group_by_hash): Likewise.
+ 	(sem_item_optimizer::subdivide_classes_by_equality): Likewise.
+ 	(sem_item_optimizer::subdivide_classes_by_sensitive_refs): Likewise.
+ 	(sem_item_optimizer::verify_classes): Likewise.
+ 	(sem_item_optimizer::process_cong_reduction): Likewise.
+ 	(sem_item_optimizer::dump_cong_classes): Likewise.
+ 	(sem_item_optimizer::merge_classes): Likewise.
+ 	* ipa-icf.h (congruence_class_hash): Rename from
+ 	congruence_class_group_hash.  Remove declaration of m_classes_vec.
+ 
+ 2017-01-10  Andrew Senkevich  <andrew.senkevich@intel.com>
+ 
+ 	* common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512VPOPCNTDQ_SET,
+ 	OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET): New.
+ 	* config.gcc: Add avx512vpopcntdqintrin.h.
+ 	* config/i386/avx512vpopcntdqintrin.h: New.
+ 	* config/i386/cpuid.h (bit_AVX512VPOPCNTDQ): New.
+ 	* config/i386/i386-builtin-types.def: Add new types.
+ 	* config/i386/i386-builtin.def (__builtin_ia32_vpopcountd_v16si,
+ 	__builtin_ia32_vpopcountd_v16si_mask, __builtin_ia32_vpopcountq_v8di,
+ 	__builtin_ia32_vpopcountq_v8di_mask): New.
+ 	* config/i386/i386-c.c (ix86_target_macros_internal): Define
+ 	__AVX512VPOPCNTDQ__.
+ 	* config/i386/i386.c (ix86_target_string): Add -mavx512vpopcntdq.
+ 	(PTA_AVX512VPOPCNTDQ): Define.
+ 	* config/i386/i386.h (TARGET_AVX512VPOPCNTDQ,
+ 	TARGET_AVX512VPOPCNTDQ_P): Define.
+ 	* config/i386/i386.opt: Add mavx512vpopcntdq.
+ 	* config/i386/immintrin.h: Include avx512vpopcntdqintrin.h.
+ 	* config/i386/sse.md (define_insn "vpopcount<mode><mask_name>"): New.
+ 
+ 2017-01-01  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR middle-end/77484
+ 	* predict.def (PRED_CALL): Set to 67.
+ 
+ 2017-01-09  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* expr.c (store_field): In the bitfield case, if the value comes from
+ 	a function call and is of an aggregate type returned in registers, do
+ 	not modify the field mode; extract the value in all cases if the mode
+ 	is BLKmode and the size is not larger than a word.
+ 
+ 2017-01-09  Dominique d'Humieres  <dominiq@lps.ens.fr>
+ 
+ 	PR target/71017
+ 	* config/i386/cpuid.h: Fix undefined behavior.
+ 
+ 2017-01-04  Jeff Law  <law@redhat.com>
+ 
+ 	PR tree-optimization/79007
+ 	PR tree-optimization/67955
+ 	* tree-ssa-alias.c (same_addr_size_stores_p): Only need to be
+ 	conservative for pt.null when flag_non_call_exceptions is on.
+ 
+ 2017-01-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR translation/79019
+ 	PR translation/79020
+ 	* params.def (PARAM_INLINE_MIN_SPEEDUP,
+ 	PARAM_IPA_CP_SINGLE_CALL_PENALTY,
+ 	PARAM_USE_AFTER_SCOPE_DIRECT_EMISSION_THRESHOLD): Fix typos
+ 	in descriptions.
+ 	* config/avr/avr.opt (maccumulate-args): Likewise.
+ 	* config/msp430/msp430.opt (mwarn-mcu): Likewise.
+ 	* common.opt (freport-bug): Likewise.
+ 	* cif-code.def (CIF_FINAL_ERROR): Likewise.
+ 	* doc/invoke.texi (ipa-cp-single-call-penalty): Likewise.
+ 	* config/s390/s390.c (s390_invalid_binary_op): Fix spelling in
+ 	translatable string.
+ 	* config/i386/i386.c (function_value_32): Likewise.
+ 	* config/nios2/nios2.c (nios2_valid_target_attribute_rec): Likewise.
+ 	* config/msp430/msp430.c (msp430_option_override, msp430_attr):
+ 	Likewise.
+ 	* config/msp430/driver-msp430.c (msp430_select_hwmult_lib): Likewise.
+ 	* common/config/msp430/msp430-common.c (msp430_handle_option):
+ 	Likewise.
+ 	* symtab.c (symtab_node::verify_base): Likewise.
+ 	* opts.c (set_debug_level): Likewise.
+ 	* tree.c (verify_type_variant): Likewise.  Fix typo in comment.
+ 	* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Add
+ 	missing whitespace to translatable strings.
+ 	* config/avr/avr.md (bswapsi2): Fix typo in comment.
+ 	* config/sh/superh.h: Likewise.
+ 	* config/i386/xopintrin.h: Likewise.
+ 	* config/i386/znver1.md: Likewise.
+ 	* config/rs6000/rs6000.c (struct rs6000_opt_mask): Likewise.
+ 	* ipa-inline-analysis.c (compute_inline_parameters): Likewise.
+ 	* double-int.h (struct double_int): Likewise.
+ 	* double-int.c (div_and_round_double): Likewise.
+ 	* wide-int.cc: Likewise.
+ 	* tree-ssa.c (non_rewritable_mem_ref_base): Likewise.
+ 	* tree-ssa-sccvn.c (vn_reference_lookup_3): Likewise.
+ 	* cfgcleanup.c (crossjumps_occured): Renamed to ...
+ 	(crossjumps_occurred): ... this.
+ 	(try_crossjump_bb, try_head_merge_bb, try_optimize_cfg, cleanup_cfg):
+ 	Adjust all uses.
+ 
+ 	PR tree-optimization/78899
+ 	* tree-if-conv.c (version_loop_for_if_conversion): Instead of
+ 	returning bool return struct loop *, NULL for failure and the new
+ 	loop on success.
+ 	(versionable_outer_loop_p): Don't version outer loop if it has
+ 	dont_vectorized bit set.
+ 	(tree_if_conversion): When versioning outer loop, ensure
+ 	tree_if_conversion is performed also on the inner loop of the
+ 	non-vectorizable outer loop copy.
+ 	* tree-vectorizer.c (set_uid_loop_bbs): Formatting fix.  Fold
+ 	LOOP_VECTORIZED in inner loop of the scalar outer loop and
+ 	prevent vectorization of it.
+ 	(vectorize_loops): For outer + inner LOOP_VECTORIZED, ensure
+ 	the outer loop vectorization of the non-scalar version is attempted
+ 	before vectorization of the inner loop in scalar version.  If
+ 	outer LOOP_VECTORIZED guarded loop is not vectorized, prevent
+ 	vectorization of its inner loop.
+ 	* tree-vect-loop-manip.c (rename_variables_in_bb): If outer_loop
+ 	has 2 inner loops, rename also on edges from bb whose single pred
+ 	is outer_loop->header.  Fix typo in function comment.
+ 
+ 2017-01-09  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR bootstrap/79033
+ 	* asan.c (asan_emit_stack_protection): Increase local buffer size
+ 	to avoid snprintf truncation warning.
+ 
+ 2017-01-09  Andrew Pinski  <apinski@cavium.com>
+ 
+ 	* config/aarch64/aarch64-cores.def: Add thunderx2t99.  Change vulcan
+ 	to reference thunderx2t99 for the tuning structure
+ 	* config/aarch64/aarch64-cost-tables.h (vulcan_extra_costs):
+ 	Rename to ...
+ 	(thunderx2t99_extra_costs): This.
+ 	* config/aarch64/aarch64-tune.md: Regenerate.
+ 	* config/aarch64/aarch64.c (vulcan_addrcost_table): Rename to ...
+ 	(vulcan_addrcost_table): This.
+ 	(vulcan_regmove_cost): Rename to ...
+ 	(thunderx2t99_regmove_cost): This.
+ 	(vulcan_vector_cost): Rename to ...
+ 	(thunderx2t99_vector_cost): this.
+ 	(vulcan_branch_cost): Rename to ...
+ 	(thunderx2t99_branch_cost): This.
+ 	(vulcan_tunings): Rename to ...
+ 	(thunderx2t99_tunings): This and s/vulcan/thunderx2t99 .
+ 	* doc/invoke.texi (AARCH64/mtune): Add thunderx2t99.
+ 
+ 2017-01-09  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR ipa/78365
+ 	PR ipa/78599
+ 	* ipa-prop.h (ipa_jump_func): Swap positions of vr_known and m_vr.
+ 	* ipa-cp.c (ipa_vr_operation_and_type_effects): New function.
+ 	(propagate_vr_accross_jump_function): Use the above function for all
+ 	value range computations for pass-through jump functions and type
+ 	converasion from explicit value range values.
+ 	(ipcp_propagate_stage): Do not attempt to deduce types of formal
+ 	parameters from TYPE_ARG_TYPES.
+ 	* ipa-prop.c (ipa_write_jump_function): Remove trailing whitespace.
+ 	(ipa_write_node_info): Stream type of the actual argument.
+ 	(ipa_read_node_info): Likewise. Also remove trailing whitespace.
+ 
+ 2017-01-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR pch/78970
+ 	* gcc.c (driver_handle_option): Handle OPT_E and set have_E.
+ 	(lookup_compiler): Do not show error message with have_E.
+ 
+ 2017-01-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/78938
+ 	* tree-vect-stmts.c (vectorizable_condition): For non-masked COND_EXPR
+ 	where comp_vectype is VECTOR_BOOLEAN_TYPE_P, use
+ 	BIT_{NOT,XOR,AND,IOR}_EXPR on the comparison operands instead of
+ 	{EQ,NE,GE,GT,LE,LT}_EXPR directly inside of VEC_COND_EXPR.  Formatting
+ 	fixes.
+ 
+ 2017-01-09  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* tree-ssa-address.c (gen_addr_rtx): Don't handle index if it
+ 	is const0_rtx.
+ 
+ 2017-01-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/78997
+ 	* tree-vect-slp.c (vect_mask_constant_operand_p): Handle SSA
+ 	name condition properly.
+ 
+ 2017-01-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR debug/79000
+ 	* dwarf2out.c (is_cxx): New overload with context.
+ 	(is_naming_typedef_decl): Use it.
+ 
+ 2017-01-08  Sandra Loosemore  <sandra@codesourcery.com>
+ 
+ 	* invoke.texi (Option Summary): Correct spacing in option lists
+ 	and add line breaks to fix over-long lines.
+ 
+ 2017-01-08  Sandra Loosemore  <sandra@codesourcery.com>
+ 
+ 	PR middle-end/17660
+ 
+ 	* extend.texi (Common Variable Attributes): Add xref to GCC
+ 	Internals manual to explain mode attribute keywords.
+ 
+ 2017-01-08  Sandra Loosemore  <sandra@codesourcery.com>
+ 
+ 	PR other/16519
+ 	* doc/invoke.texi (Option Summary): Move -pthread to Linker Options
+ 	and Preprocessor Options.
+ 	(Options for Linking): Document -pthread here....
+ 	(RS/6000 and PowerPC Options): ...not here.
+ 	(Solaris 2 Options): ...or here.
+ 	* doc/cppopts.texi: Document -pthread.
+ 
+ 2017-01-08  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/77708
+ 	* doc/invoke.texi (Warning Options): Document -Wformat-truncation.
+ 	* gimple-ssa-sprintf.c (call_info::reval_used, call_info::warnopt):
+ 	New member functions.
+ 	(format_directive): Used them.
+ 	(add_bytes): Same.
+ 	(pass_sprintf_length::handle_gimple_call): Same.
+ 	* graphite-sese-to-poly.c (tree_int_to_gmp): Increase buffer size
+ 	to avoid truncation for any argument.
+ 	(extract_affine_mul): Same.
+ 	* tree.c (get_file_function_name): Same.
+ 
+ 2017-01-01  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR middle-end/77484
+ 	* predict.def (PRED_INDIR_CALL): Set to 86.
+ 
+ 2017-01-07  Sandra Loosemore  <sandra@codesourcery.com>
+ 
+ 	PR preprocessor/54124
+ 	* doc/cppopts.texi: Reformat -d subtable to list the full name
+ 	of the options.  Add cross-reference to the docs for the general
+ 	compiler -d options.
+ 	* doc/invoke.texi (Developer Options): Add cross-reference to the
+ 	preprocessor-specific -d option documentation.
+ 
+ 2017-01-07  Sandra Loosemore  <sandra@codesourcery.com>
+ 
+ 	PR preprocessor/13498
+ 	* doc/cpp.texi (Search Path): Rewrite to remove obsolete and
+ 	redudant material, and reflect new command-line options.
+ 	(System Headers): Likewise.
+ 
+ 2017-01-07  Sandra Loosemore  <sandra@codesourcery.com>
+ 
+ 	* doc/cppdiropts.texi: Merge documentation of -I, -iquote,
+ 	-isystem, and -idirafter.  Copy-edit.
+ 	* doc/cppopts.texi: Copy-edit.  Remove contradiction about
+ 	default for -ftrack-macro-expansion.  Delete obsolete and
+ 	badly-formatted implementation details about -fdebug-cpp output.
+ 	* doc/cppwarnopts.texi: Copy-edit.
+ 
+ 2017-01-07  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR c++/72803
+ 	* input.c (selftest::test_accessing_ordinary_linemaps): Verify
+ 	that the transition from a max line width >= 1<<10 to narrower
+ 	lines works correctly.
+ 
+ 2017-01-07  Alexandre Oliva  <aoliva@redhat.com>
+ 
+ 	* doc/options.texi (PerFunction): New.
+ 	* opt-functions.awk (switch_flags): Map both Optimization and
+ 	PerFunction to CL_OPTIMIZATION.
+ 	* opth-gen.awk: Test for PerFunction flag along with
+ 	Optimization.
+ 	* optc-save-gen.awk: Likewise.  Introduce var_opt_hash and set
+ 	it only when the latter is present.  Skip those that don't in
+ 	the hash function generator.
+ 	* common.opt (fvar-tracking): Mark as PerFunction instead of
+ 	Optimization.
+ 	(fvar-tracking-assignments): Likewise.
+ 	(fvar-tracking-assignments-toggle): Likewise.
+ 	(fvar-tracking-uninit): Likewise.
+ 
+ 2017-01-07  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR translation/79018
+ 	* params.def (PARAM_MAX_STORES_TO_MERGE): Add missing space between
+ 	the and store.
+ 
+ 2017-01-06  Mikael Pettersson  <mikpelinux@gmail.com>
+ 
+ 	PR target/57583
+ 	* config/m68k/m68k.opt (LONG_JUMP_TABLE_OFFSETS): New option.
+ 	* config/m68k/linux.h (ASM_RETURN_CASE_JUMP): Handle
+ 	TARGET_LONG_JUMP_TABLE_OFFSETS.
+ 	* config/m68k/m68kelf.h (ASM_RETURN_CASE_JUMP): Likewise.
+ 	* config/m68k/netbsd-elf.h (ASM_RETURN_CASE_JUMP): Likewise.
+ 	* config/m68k/m68k.h (CASE_VECTOR_MODE): Likewise.
+ 	(ASM_OUTPUT_ADDR_DIFF_ELF): Likewise.
+ 	* config/m68k/m68k.md (tablejump expander): Likewise.
+ 	(*tablejump_pcrel_hi): Renamed from unnamed insn, reject
+ 	TARGET_LONG_JUMP_TABLE_OFFSETS.
+ 	(*tablejump_pcrel_si): New insn, handle TARGET_LONG_JUMP_TABLE_OFFSETS.
+ 	* doc/invoke.texi (M68K options): Add -mlong-jump-table-offsets.
+ 
+ 2017-01-06  Edgar E. Iglesias <edgar.iglesias@xilinx.com>
+ 	    David Holsgrove <david.holsgrove@xilinx.com>
+ 
+ 	* common/config/microblaze/microblaze-common.c
+ 	(TARGET_EXCEPT_UNWIND_INFO): Remove.
+ 	* config/microblaze/microblaze-protos.h (microblaze_eh_return):
+ 	New prototype.
+ 	* config/microblaze/microblaze.c (microblaze_must_save_register)
+ 	(microblaze_expand_epilogue, microblaze_return_addr): Handle
+ 	calls_eh_return.
+ 	(microblaze_eh_return): New function.
+ 	* config/microblaze/microblaze.h (RETURN_ADDR_OFFSET)
+ 	(EH_RETURN_DATA_REGNO, MB_EH_STACKADJ_REGNUM)
+ 	(EH_RETURN_STACKADJ_RTX, ASM_PREFERRED_EH_DATA_FORMAT): New macros.
+ 	* config/microblaze/microblaze.md (eh_return): New pattern.
+ 
+ 2017-01-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* system.h (GCC_DIAGNOSTIC_PUSH_IGNORED, GCC_DIAGNOSTIC_POP,
+ 	GCC_DIAGNOSTIC_STRINGIFY): Define.
+ 
+ 	* read-rtl.c (rtx_reader::read_rtx_code): Avoid -Wsign-compare warning.
+ 
+ 2017-01-06  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	* config/arm/arm.md (<mcrr>): New.
+ 	(<mrrc>): New.
+ 	* config/arm/arm.c (arm_arch5te): New.
+ 	(arm_option_override): Set arm_arch5te.
+ 	(arm_coproc_builtin_available): Add support for mcrr, mcrr2, mrrc
+ 	and mrrc2.
+ 	* config/arm/arm-builtins.c (MCRR_QUALIFIERS): Define to...
+ 	(arm_mcrr_qualifiers): ... this. New.
+ 	(MRRC_QUALIFIERS): Define to...
+ 	(arm_mrrc_qualifiers): ... this. New.
+ 	* config/arm/arm_acle.h (__arm_mcrr, __arm_mcrr2, __arm_mrrc,
+ 	__arm_mrrc2): New.
+ 	* config/arm/arm_acle_builtins.def (mcrr, mcrr2, mrrc, mrrc2): New.
+ 	* config/arm/iterators.md (MCRRI, mcrr, MCRR): New.
+ 	(MRRCI, mrrc, MRRC): New.
+ 	* config/arm/unspecs.md (VUNSPEC_MCRR, VUNSPEC_MCRR2, VUNSPEC_MRRC,
+ 	VUNSPEC_MRRC2): New.
+ 
+ 2017-01-06  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	* config/arm/arm.md (<mcr>): New.
+ 	(<mrc>): New.
+ 	* config/arm/arm.c (arm_coproc_builtin_available): Add
+ 	support for mcr, mrc, mcr2 and mrc2.
+ 	* config/arm/arm-builtins.c (MCR_QUALIFIERS): Define to...
+ 	(arm_mcr_qualifiers): ... this. New.
+ 	(MRC_QUALIFIERS): Define to ...
+ 	(arm_mrc_qualifiers): ... this. New.
+ 	(MCR_QUALIFIERS): Define to ...
+ 	(arm_mcr_qualifiers): ... this. New.
+ 	* config/arm/arm_acle.h (__arm_mcr, __arm_mrc, __arm_mcr2,
+ 	__arm_mrc2): New.
+ 	* config/arm/arm_acle_builtins.def (mcr, mcr2, mrc, mrc2): New.
+ 	* config/arm/iterators.md (MCRI, mcr, MCR, MRCI, mrc, MRC): New.
+ 	* config/arm/unspecs.md (VUNSPEC_MCR, VUNSPEC_MCR2, VUNSPEC_MRC,
+ 	VUNSPEC_MRC2): New.
+ 
+ 2017-01-06  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	* config/arm/arm.md (*ldc): New.
+ 	(*stc): New.
+ 	(<ldc>): New.
+ 	(<stc>): New.
+ 	* config/arm/arm.c (arm_coproc_builtin_available): Add
+ 	support for ldc,ldcl,stc,stcl,ldc2,ldc2l,stc2 and stc2l.
+ 	(arm_coproc_ldc_stc_legitimate_address): New.
+ 	* config/arm/arm-builtins.c (arm_type_qualifiers): Add
+ 	'qualifier_const_pointer'.
+ 	(LDC_QUALIFIERS): Define to...
+ 	(arm_ldc_qualifiers): ... this. New.
+ 	(STC_QUALIFIERS): Define to...
+ 	(arm_stc_qualifiers): ... this. New.
+ 	* config/arm/arm-protos.h
+ 	(arm_coproc_ldc_stc_legitimate_address): New.
+ 	* config/arm/arm_acle.h (__arm_ldc, __arm_ldcl, __arm_stc,
+ 	__arm_stcl, __arm_ldc2, __arm_ldc2l, __arm_stc2, __arm_stc2l): New.
+ 	* config/arm/arm_acle_builtins.def (ldc, ldc2, ldcl, ldc2l, stc,
+ 	stc2, stcl, stc2l): New.
+ 	* config/arm/constraints.md (Uz): New.
+ 	* config/arm/iterators.md (LDCI, STCI, ldc, stc, LDC STC): New.
+ 	* config/arm/unspecs.md (VUNSPEC_LDC, VUNSPEC_LDC2, VUNSPEC_LDCL,
+ 	VUNSPEC_LDC2L, VUNSPEC_STC, VUNSPEC_STC2, VUNSPEC_STCL,
+ 	VUNSPEC_STC2L): New.
+ 
+ 2017-01-06  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	* config/arm/arm.md (<cdp>): New.
+ 	* config/arm/arm.c (neon_const_bounds): Rename this ...
+ 	(arm_const_bounds): ... this.
+ 	(arm_coproc_builtin_available): New.
+ 	* config/arm/arm-builtins.c (SIMD_MAX_BUILTIN_ARGS): Increase.
+ 	(arm_type_qualifiers): Add 'qualifier_unsigned_immediate'.
+ 	(CDP_QUALIFIERS): Define to...
+ 	(arm_cdp_qualifiers): ... this. New.
+ 	(void_UP): Define.
+ 	(arm_expand_builtin_args): Add case for 6 arguments.
+ 	* config/arm/arm-protos.h (neon_const_bounds): Rename this ...
+ 	(arm_const_bounds): ... this.
+ 	(arm_coproc_builtin_available): New.
+ 	* config/arm/arm_acle.h (__arm_cdp): New.
+ 	(__arm_cdp2): New.
+ 	* config/arm/arm_acle_builtins.def (cdp): New.
+ 	(cdp2): New.
+ 	* config/arm/iterators.md (CDPI,CDP,cdp): New.
+ 	* config/arm/neon.md: Rename all 'neon_const_bounds' to
+ 	'arm_const_bounds'.
+ 	* config/arm/types.md (coproc): New.
+ 	* config/arm/unspecs.md (VUNSPEC_CDP, VUNSPEC_CDP2): New.
+ 	* doc/extend.texi (ACLE): Add a mention of Coprocessor intrinsics.
+ 	* doc/sourcebuild.texi (arm_coproc1_ok, arm_coproc2_ok,
+ 	arm_coproc3_ok, arm_coproc4_ok): Document new effective targets.
+ 
+ 2017-01-06  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	* config/arm/arm-builtins.c (arm_unsigned_binop_qualifiers): New.
+ 	(UBINOP_QUALIFIERS): New.
+ 	(si_UP): Define.
+ 	(acle_builtin_data): New. Change comment.
+ 	(arm_builtins): Remove ARM_BUILTIN_CRC32B, ARM_BUILTIN_CRC32H,
+ 	ARM_BUILTIN_CRC32W, ARM_BUILTIN_CRC32CB, ARM_BUILTIN_CRC32CH,
+ 	ARM_BUILTIN_CRC32CW. Add ARM_BUILTIN_ACLE_BASE and include
+ 	arm_acle_builtins.def.
+ 	(ARM_BUILTIN_ACLE_PATTERN_START): Define.
+ 	(arm_init_acle_builtins): New.
+ 	(CRC32_BUILTIN): Remove.
+ 	(bdesc_2arg): Remove entries for crc32b, crc32h, crc32w,
+ 	crc32cb, crc32ch and crc32cw.
+ 	(arm_init_crc32_builtins): Remove.
+ 	(arm_init_builtins): Use arm_init_acle_builtins rather
+ 	than arm_init_crc32_builtins.
+ 	(arm_expand_acle_builtin): New.
+ 	(arm_expand_builtin): Use 'arm_expand_acle_builtin'.
+ 	* config/arm/arm_acle_builtins.def: New.
+ 
+ 2017-01-06  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	* config/arm/arm-builtins.c (neon_builtin_datum): Rename to ..
+ 	(arm_builtin_datum): ... this.
+ 	(arm_init_neon_builtin): Rename to ...
+ 	(arm_init_builtin): ... this. Add a new parameters PREFIX
+ 	and USE_SIG_IN_NAME.
+ 	(arm_init_neon_builtins): Replace 'arm_init_neon_builtin' with
+ 	'arm_init_builtin'. Replace type 'neon_builtin_datum' with
+ 	'arm_builtin_datum'.
+ 	(arm_init_vfp_builtins): Likewise.
+ 	(builtin_arg): Rename enum's replacing 'NEON_ARG' with
+ 	'ARG_BUILTIN' and add a 'ARG_BUILTIN_NEON_MEMORY.
+ 	(arm_expand_neon_args): Rename to ...
+ 	(arm_expand_builtin_args): ... this. Rename builtin_arg
+ 	enum values and differentiate between ARG_BUILTIN_MEMORY
+ 	and ARG_BUILTIN_NEON_MEMORY.
+ 	(arm_expand_neon_builtin_1): Rename to ...
+ 	(arm_expand_builtin_1): ... this. Rename builtin_arg enum
+ 	values, arm_expand_builtin_args and add bool parameter NEON.
+ 	(arm_expand_neon_builtin): Use arm_expand_builtin_1.
+ 	(arm_expand_vfp_builtin): Likewise.
+ 	(NEON_MAX_BUILTIN_ARGS): Remove, it was unused.
+ 
+ 2017-01-01  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR middle-end/77484
+ 	* predict.def (PRED_POLYMORPHIC_CALL): Set to 59.
+ 	* predict.c (tree_estimate_probability_bb): Reverse direction of
+ 	polymorphic call predictor.
+ 
+ 2017-01-06  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* passes.c (execute_one_pass): Split out pass-skipping logic into...
+ 	(determine_pass_name_match): ...this new function and...
+ 	(should_skip_pass_p): ...this new function.
+ 
+ 2017-01-06  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* ipa-visibility.c (function_and_variable_visibility): Reformat
+ 	comments and long lines.  Remove extrneous if.
+ 	* symtab.c (symtab_node::make_decl_local): Fix code format.
+ 	(symtab_node::set_section_for_node): Fix comment typo.
+ 
+ 2017-01-06  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR bootstrap/79003
+ 	* lra-constraints.c: Rename invariant to lra_invariant.
+ 	* predict.c (set_even_probabilities): Initialize e to NULL.
+ 
+ 2017-01-05  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR tree-optimization/78910
+ 	* gimple-ssa-sprintf.c (tree_digits): Add an argument.
+ 	(format_integer): Correct off-by-one error in the handling
+ 	of precision with negative numbers in signed conversions..
+ 
+ 2017-01-05  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* doc/invoke.texi (C Dialect Options): Adjust -fsso-struct entry.
+ 
+ 2017-01-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/71016
+ 	* tree-ssa-phiopt.c (tree_ssa_phiopt_worker): Pass cond_stmt to
+ 	factor_out_conditional_conversion.  Formatting fix.
+ 	(factor_out_conditional_conversion): Add cond_stmt argument.
+ 	If arg1 is INTEGER_CST, punt if new_arg0 is not any operand of
+ 	cond_stmt and if arg0_def_stmt is not the only stmt in its bb.
+ 	Formatting fix.
+ 
+ 2017-01-05  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* Makefile.in (OBJS): Add read-md.o, read-rtl.o,
+ 	read-rtl-function.o, and selftest-rtl.o.
+ 	* config/aarch64/aarch64.c: Include selftest.h and selftest-rtl.h.
+ 	(selftest::aarch64_test_loading_full_dump): New function.
+ 	(selftest::aarch64_run_selftests): New function.
+ 	(TARGET_RUN_TARGET_SELFTESTS): Wire it up to
+ 	selftest::aarch64_run_selftests.
+ 	* config/i386/i386.c
+ 	(selftest::ix86_test_loading_dump_fragment_1): New function.
+ 	(selftest::ix86_test_loading_call_insn): New function.
+ 	(selftest::ix86_test_loading_full_dump): New function.
+ 	(selftest::ix86_test_loading_unspec): New function.
+ 	(selftest::ix86_run_selftests): Call the new functions.
+ 	* emit-rtl.c (maybe_set_max_label_num): New function.
+ 	* emit-rtl.h (maybe_set_max_label_num): New decl.
+ 	* function.c (instantiate_decls): Guard call to
+ 	instantiate_decls_1 with if (DECL_INITIAL (fndecl)).
+ 	* function-tests.c (selftest::verify_three_block_rtl_cfg): Remove
+ 	"static".
+ 	* gensupport.c (gen_reader::gen_reader): Pass "false"
+ 	for new "compact" param of rtx_reader.
+ 	* print-rtl.c (rtx_writer::print_rtx_operand): Print "(nil)"
+ 	rather than an empty string for NULL strings.
+ 	* read-md.c: Potentially include config.h rather than bconfig.h.
+ 	Wrap include of errors.h with #ifdef GENERATOR_FILE.
+ 	(have_error): New global, copied from errors.c.
+ 	(md_reader::read_name): Rename to...
+ 	(md_reader::read_name_1): ...this, adding "out_loc" param,
+ 	and converting "missing name or number" to returning false, rather
+ 	than failing.
+ 	(md_reader::read_name): Reimplement in terms of read_name_1.
+ 	(md_reader::read_name_or_nil): New function.
+ 	(md_reader::read_string): Handle "(nil)" by returning NULL.
+ 	(md_reader::md_reader): Add new param "compact".
+ 	(md_reader::read_md_files): Wrap with #ifdef GENERATOR_FILE.
+ 	(md_reader::read_file): New method.
+ 	* read-md.h (md_reader::md_reader): Add new param "compact".
+ 	(md_reader::read_file): New method.
+ 	(md_reader::is_compact): New accessor.
+ 	(md_reader::read_name): Convert return type from void to file_location.
+ 	(md_reader::read_name_or_nil): New decl.
+ 	(md_reader::read_name_1): New decl.
+ 	(md_reader::m_compact): New field.
+ 	(noop_reader::noop_reader): Pass "false" for new "compact" param
+ 	of rtx_reader.
+ 	(rtx_reader::rtx_reader): Add new "compact" param.
+ 	(rtx_reader::read_rtx_operand): Make virtual and convert return
+ 	type from void to rtx.
+ 	(rtx_reader::read_until): New decl.
+ 	(rtx_reader::handle_any_trailing_information): New virtual function.
+ 	(rtx_reader::postprocess): New virtual function.
+ 	(rtx_reader::finalize_string): New virtual function.
+ 	(rtx_reader::m_in_call_function_usage): New field.
+ 	(rtx_reader::m_reuse_rtx_by_id): New field.
+ 	* read-rtl-function.c: New file.
+ 	* selftest-rtl.c (selftest::assert_rtx_ptr_eq_at): New function.
+ 	* selftest-rtl.h (ASSERT_RTX_PTR_EQ): New macro.
+ 	(selftest::verify_three_block_rtl_cfg): New decl.
+ 	* read-rtl-function.h: New file.
+ 	* read-rtl.c: Potentially include config.h rather than bconfig.h.
+ 	For host, include function.h, memmodel.h, and emit-rtl.h.
+ 	(one_time_initialization): New function.
+ 	(struct compact_insn_name): New struct.
+ 	(compact_insn_names): New array.
+ 	(find_code): Handle insn codes in compact dumps.
+ 	(apply_subst_iterator): Wrap with #ifdef GENERATOR_FILE.
+ 	(bind_subst_iter_and_attr): Likewise.
+ 	(add_condition_to_string): Likewise.
+ 	(add_condition_to_rtx): Likewise.
+ 	(apply_attribute_uses): Likewise.
+ 	(add_current_iterators): Likewise.
+ 	(apply_iterators): Likewise.
+ 	(initialize_iterators): Guard usage of apply_subst_iterator with
+ 	#ifdef GENERATOR_FILE.
+ 	(read_conditions): Wrap with #ifdef GENERATOR_FILE.
+ 	(md_reader::read_mapping): Likewise.
+ 	(add_define_attr_for_define_subst): Likewise.
+ 	(add_define_subst_attr): Likewise.
+ 	(read_subst_mapping): Likewise.
+ 	(check_code_iterator): Likewise.
+ 	(rtx_reader::read_rtx): Likewise.  Move one-time initialization
+ 	logic to...
+ 	(one_time_initialization): New function.
+ 	(rtx_reader::read_until): New method.
+ 	(read_flags): New function.
+ 	(parse_reg_note_name): New function.
+ 	(rtx_reader::read_rtx_code): Initialize "iterator" to NULL.
+ 	Handle reuse_rtx ids.
+ 	Wrap iterator lookup within #ifdef GENERATOR_FILE.
+ 	Add parsing support for RTL dumps, mirroring the special-cases in
+ 	print_rtx, by calling read_flags, reading REG_NOTE names, INSN_UID
+ 	values, and calling handle_any_trailing_information.
+ 	(rtx_reader::read_rtx_operand): Convert return type from void
+ 	to rtx, returning return_rtx.  Handle case 'e'.  Call
+ 	finalize_string on XSTR and XTMPL fields.
+ 	(rtx_reader::read_nested_rtx):  Handle dumps in which trailing
+ 	 "(nil)" values were omitted.  Call the postprocess vfunc on the
+ 	return_rtx.
+ 	(rtx_reader::rtx_reader): Add new "compact" param and pass to base
+ 	class ctor.  Initialize m_in_call_function_usage.  Call
+ 	one_time_initialization.
+ 	* rtl-tests.c (selftest::test_uncond_jump): Call
+ 	set_new_first_and_last_insn.
+ 	* rtl.h (read_rtx): Wrap decl with #ifdef GENERATOR_FILE.
+ 	* selftest-rtl.c: New file.
+ 	* selftest-rtl.h (class selftest::rtl_dump_test): New class.
+ 	(selftest::get_insn_by_uid): New decl.
+ 	* selftest-run-tests.c (selftest::run_tests): Call
+ 	read_rtl_function_c_tests.
+ 	* selftest.h  (selftest::read_rtl_function_c_tests): New decl.
+ 	* tree-dfa.c (ssa_default_def): Return NULL_TREE for rtl function
+ 	dumps.
+ 
+ 2017-01-05  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.md (*testqi_ext_3): No need to handle memory
+ 	operands in a special way.  Assert that pos+len <= mode precision.
+ 
+ 2017-01-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* common.opt (fvect-cost-model): Remove RejectNegative flag, use
+ 	3 argument Alias with unlimited for the negative form.
+ 	(fno-vect-cost-model): Removed.
+ 
+ 2017-01-05  Martin Liska  <mliska@suse.cz>
+ 
+ 	* hsa-gen.c (gen_hsa_divmod): New function.
+ 	(gen_hsa_insn_for_internal_fn_call): Use the function for IFN_DIVMOD.
+ 
+ 2017-01-05  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR pch/78970
+ 	* gcc.c (lookup_compiler): Reject '-' filename for a precompiled
+ 	header.
+ 
+ 2017-01-05  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	* config/s390/s390.c (s390_expand_setmem): Unroll the loop for
+ 	small constant length operands.
+ 
+ 2017-01-05  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	* config/s390/s390.c (s390_expand_setmem): Avoid overlapping bytes
+ 	between loop iterations.
+ 
+ 2017-01-05  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR sanitizer/78815
+ 	* gimplify.c (gimplify_decl_expr): Compare to
+ 	asan_poisoned_variables instread of checking flags.
+ 	(gimplify_target_expr): Likewise.
+ 	(gimplify_expr): Likewise.
+ 	(gimplify_function_tree): Conditionally initialize
+ 	asan_poisoned_variables.
+ 
+ 2017-01-04  Jeff Law  <law@redhat.com>
+ 
+ 	PR tree-optimizatin/78812
+ 	* rtl.h (contains_mem_rtx_p): Prototype.
+ 	* ifcvt.c (containts_mem_rtx_p): Move from here to...
+ 	* rtlanal.c (contains_mem_rtx_p): Here and remove static linkage.
+ 	* gcse.c (prune_expressions): Use contains_mem_rtx_p to discover
+ 	and prune MEMs that are not at the toplevel of a SET_SRC rtx.  Look
+ 	through ZERO_EXTEND and SIGN_EXTEND when trying to avoid pruning MEMs.
+ 
+ 2017-01-04  Alexandre Oliva  <aoliva@redhat.com>
+ 
+ 	* input.c (assert_char_at_range): Default-initialize actual_range.
+ 
+ 2017-01-04  Alexandre Oliva  <aoliva@redhat.com>
+ 
+ 	* df-scan.c (df_ref_create_structure): Make regno unsigned,
+ 	to match the caller.
+ 
+ 2017-01-04  Alexandre Oliva  <aoliva@redhat.com>
+ 
+ 	* cfgexpand.c (expand_gimple_basic_block): Disregard debug
+ 	insns after final jump in test to emit dummy move.
+ 
+ 2017-01-04  Alexandre Oliva  <aoliva@redhat.com>
+ 
+ 	* gimple-iterator.h (gsi_one_nondebug_before_end_p): New.
+ 	* tree-eh.c (cleanup_empty_eh): Skip more debug stmts.
+ 
+ 2017-01-04  Alexandre Oliva  <aoliva@redhat.com>
+ 
+ 	* multiple_target.c (create_dispatcher_calls): Init e_next.
+ 	* tree-ssa-loop-split.c (split_loop): Init border.
+ 	* tree-vect-loop.c (vect_determine_vectorization_factor): Init
+ 	scalar_type.
+ 
+ 2017-01-04  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	PR target/71977
+ 	PR target/70568
+ 	PR target/78823
+ 	* config/rs6000/predicates.md (sf_subreg_operand): New predicate.
+ 	(altivec_register_operand): Do not return true if the operand
+ 	contains a SUBREG mixing SImode and SFmode.
+ 	(vsx_register_operand): Likewise.
+ 	(vsx_reg_sfsubreg_ok): New predicate.
+ 	(vfloat_operand): Do not return true if the operand contains a
+ 	SUBREG mixing SImode and SFmode.
+ 	(vint_operand): Likewise.
+ 	(vlogical_operand): Likewise.
+ 	(gpc_reg_operand): Likewise.
+ 	(int_reg_operand): Likewise.
+ 	* config/rs6000/rs6000-protos.h (valid_sf_si_move): Add declaration.
+ 	* config/rs6000/rs6000.c (valid_sf_si_move): New function to
+ 	determine if a MOVSI or MOVSF operation contains SUBREGs that mix
+ 	SImode and SFmode.
+ 	(rs6000_emit_move_si_sf_subreg): New helper function.
+ 	(rs6000_emit_move): Call rs6000_emit_move_si_sf_subreg to possbily
+ 	fixup SUBREGs involving SImode and SFmode.
+ 	* config/rs6000/vsx.md (SFBOOL_*): New constants that are operand
+ 	numbers for the new peephole2 optimization.
+ 	(peephole2 for SFmode unions): New peephole2 to optimize cases in
+ 	the GLIBC math library that do AND/IOR/XOR operations on single
+ 	precision floating point.
+ 	* config/rs6000/rs6000.h (TARGET_NO_SF_SUBREG): New internal
+ 	target macros to say whether we need to avoid SUBREGs mixing
+ 	SImode and SFmode.
+ 	(TARGET_ALLOW_SF_SUBREG): Likewise.
+ 	* config/rs6000/rs6000.md (UNSPEC_SF_FROM_SI): New unspecs.
+ 	(UNSPEC_SI_FROM_SF): Likewise.
+ 	(iorxor): Change spacing.
+ 	(and_ior_xor): New iterator for AND, IOR, and XOR.
+ 	(movsi_from_sf): New insns for SImode/SFmode SUBREG support.
+ 	(movdi_from_sf_zero_ext): Likewise.
+ 	(mov<mode>_hardfloat, FMOVE32 iterator): Use register_operand
+ 	instead of gpc_reg_operand.  Add SImode/SFmode SUBREG support.
+ 	(movsf_from_si): New insn for SImode/SFmode SUBREG support.
+ 	(fma<mode>4): Use gpc_reg_operand instead of register_operand.
+ 	(fms<mode>4): Likewise.
+ 	(fnma<mode>4): Likewise.
+ 	(fnms<mode>4): Likewise.
+ 	(nfma<mode>4): Likewise.
+ 	(nfms<mode>4): Likewise.
+ 
+ 2017-01-04  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/64767
+ 	* doc/invoke.texi: Document -Wpointer-compare.
+ 
+ 2017-01-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* optc-gen.awk: Emit #error for -W*/-f*/-m* Enum without
+ 	RejectNegative.
+ 
+ 	* dwarf2out.c (output_loc_list): Don't throw away 64K+ location
+ 	descriptions for -gdwarf-5 and emit them as uleb128 instead of
+ 	2-byte data.
+ 
+ 2017-01-04  Kelvin Nilsen  <kelvin@gcc.gnu.org>
+ 
+ 	PR target/78056
+ 	* doc/sourcebuild.texi (PowerPC-specific attributes): Add
+ 	documentation of the powerpc_popcntb_ok attribute.
+ 	* config/rs6000/rs6000.c (rs6000_option_override_internal): Add
+ 	code to issue warning messages if a requested CPU configuration is
+ 	not supported by the binary (assembler and loader) toolchain.
+ 	(spe_init_builtins): Add two assertions to prevent ICE if attempt is
+ 	made to define a built-in function that has been disabled.
+ 	(paired_init_builtins): Add assertion to prevent ICE if attempt is
+ 	made to define a built-in function that has been disabled.
+ 	(altivec_init_builtins): Add comment explaining why definition
+ 	of the DST built-in functions is not preceded by an assertion
+ 	check.  Add assertions to prevent ICE if attempts are made to
+ 	define an altivec predicate or an abs* built-in function that has
+ 	been disabled.
+ 	(htm_init_builtins): Add comment explaining why definition of the
+ 	htm built-in functions is not preceded by an assertion check.
+ 
+ 2017-01-04  Jeff Law  <law@redhat.com>
+ 
+ 	PR tree-optimizatin/67955
+ 	* tree-ssa-alias.c (same_addr_size_stores_p): Check offsets first.
+ 	Allow any SSA_VAR_P as the base objects.  Use integer_zerop.  Verify
+ 	the points-to solution does not include pt_null.  Use DECL_PT_UID
+ 	unconditionally.
+ 
+ 2017-01-04  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.md (HI/SImode test with imm to QImode splitters):
+ 	Use gen_int_mode instead of gen_lopwart for const_int operands.
+ 
+ 2017-01-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/71563
+ 	* match.pd: Simplify X << Y into X if Y is known to be 0 or
+ 	out of range value - has low bits known to be zero.
+ 
+ 2017-01-04  Alan Modra  <amodra@gmail.com>
+ 
+ 	* Makefile.in (aclocal_deps): Update and order as per aclocal.m4.
+ 	* configure: Regenerate.
+ 	* config.in: Regenerate.
+ 
+ 2017-01-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR bootstrap/77569
+ 	* input.c (ebcdic_execution_charset::on_error): Don't use strstr for
+ 	a substring of the message, but strcmp with the whole message.  Ifdef
+ 	ENABLE_NLS, translate the message first using dgettext.
+ 
+ 2017-01-03  Jeff Law  <law@redhat.com>
+ 
+ 	PR tree-optimizatin/78856
+ 	* tree-ssa-threadupdate.c: Include tree-vectorizer.h.
+ 	(mark_threaded_blocks): Remove code to truncate thread paths that
+ 	cross multiple loop headers.  Instead invalidate the cached loop
+ 	iteration information and handle case of a thread path walking
+ 	into an irreducible region.
+ 
+ 2017-01-03  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	PR target/78900
+ 	* config/rs6000/rs6000.c (rs6000_split_signbit): Change some
+ 	assertions.  Add support for doing the signbit if the IEEE 128-bit
+ 	floating point value is in a GPR.
+ 	* config/rs6000/rs6000.md (Fsignbit): Delete.
+ 	(signbit<mode>2_dm): Delete using <Fsignbit> and just use "wa".
+ 	Update the length attribute if the value is in a GPR.
+ 	(signbit<mode>2_dm_<su>ext): Add combiner pattern to eliminate
+ 	the sign or zero extension instruction, since the value is always 0/1.
+ 	(signbit<mode>2_dm2): Delete using <Fsignbit>.
+ 
+ 	PR target/78953
+ 	* config/rs6000/vsx.md (vsx_extract_<mode>_store_p9): If we are
+ 	extracting SImode to a GPR register so that we can generate a
+ 	store, limit the vector to be in a traditional Altivec register
+ 	for the vextuwrx instruction.
+ 
+ 2017-01-03  Ian Lance Taylor  <iant@google.com>
+ 
+ 	* godump.c (go_format_type): Treat ENUMERAL_TYPE like INTEGER_TYPE.
+ 
+ 2017-01-03  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR tree-optimization/78696
+ 	* gimple-ssa-sprintf.c (format_floating): Correct handling of
+ 	precision.  Use MPFR for %f for greater fidelity.  Correct handling
+ 	of %g.
+ 	(pass_sprintf_length::compute_format_length): Set width and precision
+ 	specified by asrerisk to void_node for vararg functions.
+ 	(try_substitute_return_value): Adjust dump output.
+ 
+ 2017-01-03  David Edelsohn  <dje.gcc@gmail.com>
+ 
+ 	* doc/invoke.texi (RS6000 options): LRA is enabled by default.
+ 
+ 2017-01-03  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* doc/invoke.texi (SPARC options): Document -mlra as the default.
+ 	* config/sparc/sparc.c (sparc_option_override): Force LRA unless
+ 	-mlra/-mno-lra was passed to the compiler.
+ 
+ 2017-01-03  James Cowgill  <James.Cowgill@imgtec.com>
+ 
+ 	PR rtl-optimization/65618
+ 	* emit-rtl.c (try_split): Move initialization of "before" and
+ 	"after" to just before the call to emit_insn_after_setloc.
+ 
+ 2017-01-03  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* doc/md.texi (Standard Names): Remove reference to Java frontend.
+ 
+ 2017-01-03  Pierre-Marie de Rodat  <derodat@adacore.com>
+ 
+ 	* dwarf2out.c (gen_enumeration_type_die): When
+ 	-gno-strict-dwarf, add a DW_AT_encoding attribute.
+ 
+ 2017-01-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/78965
+ 	* gimple-ssa-sprintf.c (pass_sprintf_length::compute_format_length):
+ 	Change first argument from const call_info & to call_info &.  For %n
+ 	set info.nowrite to false.
+ 
+ 	PR middle-end/78901
+ 	* gimple-ssa-sprintf.c (try_substitute_return_value): Don't change
+ 	possibly throwing calls.
+ 
+ 	* genmatch.c (dt_node::gen_kids_1): If generic_exprs include SSA_NAME
+ 	and exprs_len || fns_len, emit the code for SSA_NAME next to the exprs
+ 	and fns handling, rather than in a separate case SSA_NAME.
+ 
+ 2017-01-02  Jeff Law  <law@redhat.com>
+ 
+ 	* config/darwin-driver.c (darwin_driver_init): Const-correctness
+ 	fixes for first_period and second_period variables.
+ 
+ 2017-01-02  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/78967
+ 	* config/i386/i386.md (UNSPEC_NOREX_MEM): New unspec.
+ 	(*insvqi_1): New insn pattern.
+ 	(*insvqi_1_mem_rex64): Ditto.
+ 	(*insvqi_2): Ditto.
+ 	(*insvqi_3): Rename from *insvqi.
+ 
+ 	(*extzvqi_mem_rex64): Add UNSPEC_NOREX_MEM tag.
+ 
+ 2017-01-02  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* doc/cfg.texi (Edges): Remove reference to Java.
+ 	(Maintaining the CFG): Ditto.
+ 
+ 2017-01-01  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR middle-end/77674
+ 	* symtab.c (symtab_node::binds_to_current_def_p): Fix handling of
+ 	transparent aliases.
+ 
+ 2017-01-01  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR middle-end/77484
+ 	* predict.def (PRED_CALL): Update hitrate.
+ 	(PRED_INDIR_CALL, PRED_POLYMORPHIC_CALL): New predictors.
+ 	* predict.c (tree_estimate_probability_bb): Split CALL predictor
+ 	into direct/indirect/polymorphic variants.
+ 
+ 2017-01-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Update copyright years.
+ 
+ 	* 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.
+ 
+ Copyright (C) 2017 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-7.3.0/gcc/DATESTAMP gcc-8.1.0/gcc/DATESTAMP
*** gcc-7.3.0/gcc/DATESTAMP	Thu Jan 25 00:16:09 2018
--- gcc-8.1.0/gcc/DATESTAMP	Wed May  2 00:16:28 2018
***************
*** 1 ****
! 20180125
--- 1 ----
! 20180502
diff -Nrcpad gcc-7.3.0/gcc/LANGUAGES gcc-8.1.0/gcc/LANGUAGES
*** gcc-7.3.0/gcc/LANGUAGES	Sun Jan  1 12:07:43 2017
--- gcc-8.1.0/gcc/LANGUAGES	Wed Jan  3 10:03:58 2018
*************** Feb 1, 1998:
*** 57,63 ****
      DEFTREECODE (CLASS_METHOD_DECL, "class_method_decl", 'd', 0)
  
  
! Copyright (C) 1998-2017 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-2018 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-7.3.0/gcc/Makefile.in gcc-8.1.0/gcc/Makefile.in
*** gcc-7.3.0/gcc/Makefile.in	Tue May  2 16:12:40 2017
--- gcc-8.1.0/gcc/Makefile.in	Fri Mar  9 15:24:44 2018
***************
*** 1,7 ****
  # Makefile for GNU Compiler Collection
  # Run 'configure' to generate Makefile from Makefile.in
  
! # Copyright (C) 1987-2017 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-2018 Free Software Foundation, Inc.
  
  #This file is part of GCC.
  
*************** MAKEOVERRIDES =
*** 57,62 ****
--- 57,63 ----
  build=@build@
  host=@host@
  host_noncanonical=@host_noncanonical@
+ host_os=@host_os@
  target=@target@
  target_noncanonical:=@target_noncanonical@
  
*************** PLUGINLIBS = @pluginlibs@
*** 393,398 ****
--- 394,404 ----
  
  enable_plugin = @enable_plugin@
  
+ # On MinGW plugin installation involves installing import libraries.
+ ifeq ($(enable_plugin),yes)
+   plugin_implib := $(if $(strip $(filter mingw%,$(host_os))),yes,no)
+ endif
+ 
  enable_host_shared = @enable_host_shared@
  
  enable_as_accelerator = @enable_as_accelerator@
*************** CROSS_SYSTEM_HEADER_DIR = @CROSS_SYSTEM_
*** 517,527 ****
  # macro is also used in a double-quoted context.
  SYSTEM_HEADER_DIR = `echo @SYSTEM_HEADER_DIR@ | sed -e :a -e 's,[^/]*/\.\.\/,,' -e ta`
  
  # Control whether to run fixincludes.
  STMP_FIXINC = @STMP_FIXINC@
  
  # Test to see whether <limits.h> exists in the system header files.
! LIMITS_H_TEST = [ -f $(SYSTEM_HEADER_DIR)/limits.h ]
  
  # Directory for prefix to system directories, for
  # each of $(system_prefix)/usr/include, $(system_prefix)/usr/lib, etc.
--- 523,536 ----
  # macro is also used in a double-quoted context.
  SYSTEM_HEADER_DIR = `echo @SYSTEM_HEADER_DIR@ | sed -e :a -e 's,[^/]*/\.\.\/,,' -e ta`
  
+ # Path to the system headers on the build machine.
+ BUILD_SYSTEM_HEADER_DIR = `echo @BUILD_SYSTEM_HEADER_DIR@ | sed -e :a -e 's,[^/]*/\.\.\/,,' -e ta`
+ 
  # Control whether to run fixincludes.
  STMP_FIXINC = @STMP_FIXINC@
  
  # Test to see whether <limits.h> exists in the system header files.
! LIMITS_H_TEST = [ -f $(BUILD_SYSTEM_HEADER_DIR)/limits.h ]
  
  # Directory for prefix to system directories, for
  # each of $(system_prefix)/usr/include, $(system_prefix)/usr/lib, etc.
*************** ifeq ($(enable_multiarch),yes)
*** 572,578 ****
  else
    ifeq ($(enable_multiarch),auto)
      # SYSTEM_HEADER_DIR is makefile syntax, cannot be evaluated in configure.ac
!     if_multiarch = $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib/*/crti.o),$(1))
    else
      if_multiarch =
    endif
--- 581,587 ----
  else
    ifeq ($(enable_multiarch),auto)
      # SYSTEM_HEADER_DIR is makefile syntax, cannot be evaluated in configure.ac
!     if_multiarch = $(if $(wildcard $(shell echo $(BUILD_SYSTEM_HEADER_DIR))/../../usr/lib/*/crti.o),$(1))
    else
      if_multiarch =
    endif
*************** COMMON_TARGET_DEF = common/common-target
*** 897,931 ****
  TARGET_H = $(TM_H) target.h $(TARGET_DEF) insn-modes.h insn-codes.h
  C_TARGET_H = c-family/c-target.h $(C_TARGET_DEF)
  COMMON_TARGET_H = common/common-target.h $(INPUT_H) $(COMMON_TARGET_DEF)
! MACHMODE_H = machmode.h mode-classes.def insn-modes.h
! HOOKS_H = hooks.h $(MACHMODE_H)
  HOSTHOOKS_DEF_H = hosthooks-def.h $(HOOKS_H)
  LANGHOOKS_DEF_H = langhooks-def.h $(HOOKS_H)
  TARGET_DEF_H = target-def.h target-hooks-def.h $(HOOKS_H) targhooks.h
  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
! RTL_BASE_H = coretypes.h rtl.h rtl.def $(MACHMODE_H) reg-notes.def \
    insn-notes.def $(INPUT_H) $(REAL_H) statistics.h $(VEC_H) \
    $(FIXED_VALUE_H) alias.h $(HASHTAB_H)
! FIXED_VALUE_H = fixed-value.h $(MACHMODE_H) double-int.h
  RTL_H = $(RTL_BASE_H) $(FLAGS_H) genrtl.h
  READ_MD_H = $(OBSTACK_H) $(HASHTAB_H) read-md.h
  PARAMS_H = params.h params-enum.h params.def
  BUILTINS_DEF = builtins.def sync-builtins.def omp-builtins.def \
! 	gtm-builtins.def sanitizer.def cilkplus.def cilk-builtins.def \
  	hsa-builtins.def
  INTERNAL_FN_DEF = internal-fn.def
  INTERNAL_FN_H = internal-fn.h $(INTERNAL_FN_DEF)
! TREE_CORE_H = tree-core.h coretypes.h all-tree.def tree.def \
! 	c-family/c-common.def $(lang_tree_files) $(MACHMODE_H) \
  	$(BUILTINS_DEF) $(INPUT_H) statistics.h \
  	$(VEC_H) treestruct.def $(HASHTAB_H) \
! 	double-int.h alias.h $(SYMTAB_H) $(FLAGS_H) \
  	$(REAL_H) $(FIXED_VALUE_H)
  TREE_H = tree.h $(TREE_CORE_H)  tree-check.h
  REGSET_H = regset.h $(BITMAP_H) hard-reg-set.h
  BASIC_BLOCK_H = basic-block.h $(PREDICT_H) $(VEC_H) $(FUNCTION_H) \
! 	cfg-flags.def cfghooks.h
  GIMPLE_H = gimple.h gimple.def gsstruct.def $(VEC_H) \
  	$(GGC_H) $(BASIC_BLOCK_H) $(TREE_H) tree-ssa-operands.h \
  	tree-ssa-alias.h $(INTERNAL_FN_H) $(HASH_TABLE_H) is-a.h
--- 906,942 ----
  TARGET_H = $(TM_H) target.h $(TARGET_DEF) insn-modes.h insn-codes.h
  C_TARGET_H = c-family/c-target.h $(C_TARGET_DEF)
  COMMON_TARGET_H = common/common-target.h $(INPUT_H) $(COMMON_TARGET_DEF)
! MACHMODE_H = machmode.h mode-classes.def
! HOOKS_H = hooks.h
  HOSTHOOKS_DEF_H = hosthooks-def.h $(HOOKS_H)
  LANGHOOKS_DEF_H = langhooks-def.h $(HOOKS_H)
  TARGET_DEF_H = target-def.h target-hooks-def.h $(HOOKS_H) targhooks.h
  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)
! FIXED_VALUE_H = fixed-value.h
  RTL_H = $(RTL_BASE_H) $(FLAGS_H) genrtl.h
  READ_MD_H = $(OBSTACK_H) $(HASHTAB_H) read-md.h
  PARAMS_H = params.h params-enum.h params.def
  BUILTINS_DEF = builtins.def sync-builtins.def omp-builtins.def \
! 	gtm-builtins.def sanitizer.def \
  	hsa-builtins.def
  INTERNAL_FN_DEF = internal-fn.def
  INTERNAL_FN_H = internal-fn.h $(INTERNAL_FN_DEF)
! TREE_CORE_H = tree-core.h $(CORETYPES_H) all-tree.def tree.def \
! 	c-family/c-common.def $(lang_tree_files) \
  	$(BUILTINS_DEF) $(INPUT_H) statistics.h \
  	$(VEC_H) treestruct.def $(HASHTAB_H) \
! 	alias.h $(SYMTAB_H) $(FLAGS_H) \
  	$(REAL_H) $(FIXED_VALUE_H)
  TREE_H = tree.h $(TREE_CORE_H)  tree-check.h
  REGSET_H = regset.h $(BITMAP_H) hard-reg-set.h
  BASIC_BLOCK_H = basic-block.h $(PREDICT_H) $(VEC_H) $(FUNCTION_H) \
! 	cfg-flags.def cfghooks.h profile-count.h
  GIMPLE_H = gimple.h gimple.def gsstruct.def $(VEC_H) \
  	$(GGC_H) $(BASIC_BLOCK_H) $(TREE_H) tree-ssa-operands.h \
  	tree-ssa-alias.h $(INTERNAL_FN_H) $(HASH_TABLE_H) is-a.h
*************** EMIT_RTL_H = emit-rtl.h
*** 935,946 ****
  FLAGS_H = flags.h flag-types.h $(OPTIONS_H)
  OPTIONS_H = options.h flag-types.h $(OPTIONS_H_EXTRA)
  FUNCTION_H = function.h $(HASHTAB_H) $(TM_H) hard-reg-set.h \
! 	$(VEC_H) $(INPUT_H) $(MACHMODE_H)
! EXPR_H = expr.h insn-config.h $(FUNCTION_H) $(RTL_H) $(FLAGS_H) $(TREE_H) $(MACHMODE_H) $(EMIT_RTL_H)
  OPTABS_H = optabs.h insn-codes.h insn-opinit.h
! REGS_H = regs.h $(MACHMODE_H) hard-reg-set.h
! CFGLOOP_H = cfgloop.h $(BASIC_BLOCK_H) double-int.h \
! 	$(BITMAP_H) sbitmap.h
  IPA_UTILS_H = ipa-utils.h $(TREE_H) $(CGRAPH_H)
  IPA_REFERENCE_H = ipa-reference.h $(BITMAP_H) $(TREE_H)
  CGRAPH_H = cgraph.h $(VEC_H) $(TREE_H) $(BASIC_BLOCK_H) $(FUNCTION_H) \
--- 946,957 ----
  FLAGS_H = flags.h flag-types.h $(OPTIONS_H)
  OPTIONS_H = options.h flag-types.h $(OPTIONS_H_EXTRA)
  FUNCTION_H = function.h $(HASHTAB_H) $(TM_H) hard-reg-set.h \
! 	$(VEC_H) $(INPUT_H)
! EXPR_H = expr.h insn-config.h $(FUNCTION_H) $(RTL_H) $(FLAGS_H) $(TREE_H) \
! 	$(EMIT_RTL_H)
  OPTABS_H = optabs.h insn-codes.h insn-opinit.h
! REGS_H = regs.h hard-reg-set.h
! CFGLOOP_H = cfgloop.h $(BASIC_BLOCK_H) $(BITMAP_H) sbitmap.h
  IPA_UTILS_H = ipa-utils.h $(TREE_H) $(CGRAPH_H)
  IPA_REFERENCE_H = ipa-reference.h $(BITMAP_H) $(TREE_H)
  CGRAPH_H = cgraph.h $(VEC_H) $(TREE_H) $(BASIC_BLOCK_H) $(FUNCTION_H) \
*************** DIAGNOSTIC_H = diagnostic.h $(DIAGNOSTIC
*** 981,987 ****
  C_PRETTY_PRINT_H = c-family/c-pretty-print.h $(PRETTY_PRINT_H) \
  	$(C_COMMON_H) $(TREE_H)
  TREE_INLINE_H = tree-inline.h
! REAL_H = real.h $(MACHMODE_H)
  LTO_STREAMER_H = lto-streamer.h $(LINKER_PLUGIN_API_H) $(TARGET_H) \
  		$(CGRAPH_H) $(VEC_H) $(HASH_TABLE_H) $(TREE_H) $(GIMPLE_H) \
  		$(GCOV_IO_H) $(DIAGNOSTIC_H) alloc-pool.h
--- 992,998 ----
  C_PRETTY_PRINT_H = c-family/c-pretty-print.h $(PRETTY_PRINT_H) \
  	$(C_COMMON_H) $(TREE_H)
  TREE_INLINE_H = tree-inline.h
! REAL_H = real.h
  LTO_STREAMER_H = lto-streamer.h $(LINKER_PLUGIN_API_H) $(TARGET_H) \
  		$(CGRAPH_H) $(VEC_H) $(HASH_TABLE_H) $(TREE_H) $(GIMPLE_H) \
  		$(GCOV_IO_H) $(DIAGNOSTIC_H) alloc-pool.h
*************** endif
*** 1105,1110 ****
--- 1116,1125 ----
  
  LANG_MAKEFRAGS = @all_lang_makefrags@
  
+ # Used by gcc/jit/Make-lang.in
+ LD_VERSION_SCRIPT_OPTION = @ld_version_script_option@
+ LD_SONAME_OPTION = @ld_soname_option@
+ 
  # Flags to pass to recursive makes.
  # CC is set by configure.
  # ??? The choices here will need some experimenting with.
*************** FLAGS_TO_PASS = \
*** 1156,1161 ****
--- 1171,1177 ----
  	"libexecsubdir=$(libexecsubdir)" \
  	"datarootdir=$(datarootdir)" \
  	"datadir=$(datadir)" \
+ 	"libsubdir=$(libsubdir)" \
  	"localedir=$(localedir)"
  #
  # Lists of files for various purposes.
*************** C_COMMON_OBJS = c-family/c-common.o c-fa
*** 1183,1191 ****
    c-family/c-lex.o c-family/c-omp.o c-family/c-opts.o c-family/c-pch.o \
    c-family/c-ppoutput.o c-family/c-pragma.o c-family/c-pretty-print.o \
    c-family/c-semantics.o c-family/c-ada-spec.o \
!   c-family/c-cilkplus.o \
!   c-family/array-notation-common.o c-family/cilk.o c-family/c-ubsan.o \
!   c-family/c-attribs.o c-family/c-warn.o
  
  # Language-independent object files.
  # We put the *-match.o and insn-*.o files first so that a parallel make
--- 1199,1206 ----
    c-family/c-lex.o c-family/c-omp.o c-family/c-opts.o c-family/c-pch.o \
    c-family/c-ppoutput.o c-family/c-pragma.o c-family/c-pretty-print.o \
    c-family/c-semantics.o c-family/c-ada-spec.o \
!   c-family/c-ubsan.o c-family/known-headers.o \
!   c-family/c-attribs.o c-family/c-warn.o c-family/c-spellcheck.o
  
  # Language-independent object files.
  # We put the *-match.o and insn-*.o files first so that a parallel make
*************** OBJS = \
*** 1234,1240 ****
  	cgraphbuild.o \
  	cgraphunit.o \
  	cgraphclones.o \
- 	cilk-common.o \
  	combine.o \
  	combine-stack-adj.o \
  	compare-elim.o \
--- 1249,1254 ----
*************** OBJS = \
*** 1267,1272 ****
--- 1281,1287 ----
  	dwarf2asm.o \
  	dwarf2cfi.o \
  	dwarf2out.o \
+ 	early-remat.o \
  	emit-rtl.o \
  	et-forest.o \
  	except.o \
*************** OBJS = \
*** 1274,1279 ****
--- 1289,1295 ----
  	expmed.o \
  	expr.o \
  	fibonacci_heap.o \
+ 	file-prefix-map.o \
  	final.o \
  	fixed-value.o \
  	fold-const.o \
*************** OBJS = \
*** 1292,1300 ****
--- 1308,1320 ----
  	gimple-iterator.o \
  	gimple-fold.o \
  	gimple-laddress.o \
+ 	gimple-loop-interchange.o \
+ 	gimple-loop-jam.o \
  	gimple-low.o \
  	gimple-pretty-print.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 \
*************** OBJS = \
*** 1302,1307 ****
--- 1322,1328 ----
  	gimple-ssa-strength-reduction.o \
  	gimple-ssa-sprintf.o \
  	gimple-ssa-warn-alloca.o \
+ 	gimple-ssa-warn-restrict.o \
  	gimple-streamer-in.o \
  	gimple-streamer-out.o \
  	gimple-walk.o \
*************** OBJS = \
*** 1337,1342 ****
--- 1358,1364 ----
  	ipa-chkp.o \
  	ipa-cp.o \
  	ipa-devirt.o \
+ 	ipa-fnsummary.o \
  	ipa-polymorphic-call.o \
  	ipa-split.o \
  	ipa-inline.o \
*************** OBJS = \
*** 1344,1351 ****
--- 1366,1375 ----
  	ipa-visibility.o \
  	ipa-inline-analysis.o \
  	ipa-inline-transform.o \
+ 	ipa-predicate.o \
  	ipa-profile.o \
  	ipa-prop.o \
+ 	ipa-param-manipulation.o \
  	ipa-pure-const.o \
  	ipa-icf.o \
  	ipa-icf-gimple.o \
*************** OBJS = \
*** 1412,1417 ****
--- 1436,1442 ----
  	print-rtl-function.o \
  	print-tree.o \
  	profile.o \
+ 	profile-count.o \
  	read-md.o \
  	read-rtl.o \
  	read-rtl-function.o \
*************** OBJS = \
*** 1434,1445 ****
  	rtlhash.o \
  	rtlanal.o \
  	rtlhooks.o \
  	run-rtl-passes.o \
- 	sbitmap.o \
  	sched-deps.o \
  	sched-ebb.o \
  	sched-rgn.o \
- 	sdbout.o \
  	sel-sched-ir.o \
  	sel-sched-dump.o \
  	sel-sched.o \
--- 1459,1469 ----
  	rtlhash.o \
  	rtlanal.o \
  	rtlhooks.o \
+ 	rtx-vector-builder.o \
  	run-rtl-passes.o \
  	sched-deps.o \
  	sched-ebb.o \
  	sched-rgn.o \
  	sel-sched-ir.o \
  	sel-sched-dump.o \
  	sel-sched.o \
*************** OBJS = \
*** 1558,1572 ****
--- 1582,1600 ----
  	tree-vect-loop-manip.o \
  	tree-vect-slp.o \
  	tree-vectorizer.o \
+ 	tree-vector-builder.o \
  	tree-vrp.o \
  	tree.o \
  	typed-splay-tree.o \
+ 	unique-ptr-tests.o \
  	valtrack.o \
  	value-prof.o \
  	var-tracking.o \
  	varasm.o \
  	varpool.o \
+ 	vec-perm-indices.o \
  	vmsdbgout.o \
+ 	vr-values.o \
  	vtable-verify.o \
  	web.o \
  	wide-int.o \
*************** OBJS = \
*** 1581,1588 ****
  OBJS-libcommon = diagnostic.o diagnostic-color.o diagnostic-show-locus.o \
  	edit-context.o \
  	pretty-print.o intl.o \
  	vec.o input.o version.o hash-table.o ggc-none.o memory-block.o \
! 	selftest.o
  
  # Objects in libcommon-target.a, used by drivers and by the core
  # compiler and containing target-dependent code.
--- 1609,1617 ----
  OBJS-libcommon = diagnostic.o diagnostic-color.o diagnostic-show-locus.o \
  	edit-context.o \
  	pretty-print.o intl.o \
+ 	sbitmap.o \
  	vec.o input.o version.o hash-table.o ggc-none.o memory-block.o \
! 	selftest.o selftest-diagnostic.o
  
  # Objects in libcommon-target.a, used by drivers and by the core
  # compiler and containing target-dependent code.
*************** MOSTLYCLEANFILES = insn-flags.h insn-con
*** 1626,1632 ****
   insn-attr.h insn-attr-common.h insn-attrtab.c insn-dfatab.c \
   insn-latencytab.c insn-opinit.c insn-opinit.h insn-preds.c insn-constants.h \
   tm-preds.h tm-constrs.h checksum-options gimple-match.c generic-match.c \
!  tree-check.h min-insn-modes.c insn-modes.c insn-modes.h \
   genrtl.h gt-*.h gtype-*.h gtype-desc.c gtyp-input.list \
   case-cfn-macros.h cfn-operators.pd \
   xgcc$(exeext) cpp$(exeext) $(FULL_DRIVER_NAME) \
--- 1655,1661 ----
   insn-attr.h insn-attr-common.h insn-attrtab.c insn-dfatab.c \
   insn-latencytab.c insn-opinit.c insn-opinit.h insn-preds.c insn-constants.h \
   tm-preds.h tm-constrs.h checksum-options gimple-match.c generic-match.c \
!  tree-check.h min-insn-modes.c insn-modes.c insn-modes.h insn-modes-inline.h \
   genrtl.h gt-*.h gtype-*.h gtype-desc.c gtyp-input.list \
   case-cfn-macros.h cfn-operators.pd \
   xgcc$(exeext) cpp$(exeext) $(FULL_DRIVER_NAME) \
*************** rest.cross: specs
*** 1895,1926 ****
  # Specify -o /dev/null so the output of -S is discarded. More importantly
  # It does not try to create a file with the name "null.s" on POSIX and
  # "nul.s" on Windows. Because on Windows "nul" is a reserved file name.
  # Specify the path to gcc/testsuite/selftests within the srcdir
  # as an argument to -fself-test.
! SELFTEST_FLAGS = -nostdinc -x c /dev/null -S -o /dev/null \
  	-fself-test=$(srcdir)/testsuite/selftests
  
! # Run the selftests during the build once we have a driver and a cc1,
  # so that self-test failures are caught as early as possible.
! # Use "s-selftest" to ensure that we only run the selftests if the
! # driver, cc1, or selftest data change.
  .PHONY: selftest
! selftest: s-selftest
! s-selftest: $(GCC_PASSES) cc1$(exeext) stmp-int-hdrs \
!   $(srcdir)/testsuite/selftests
! 	$(GCC_FOR_TARGET) $(SELFTEST_FLAGS)
  	$(STAMP) $@
  
! # Convenience method for running selftests under gdb:
! .PHONY: selftest-gdb
! selftest-gdb: $(GCC_PASSES) cc1$(exeext) stmp-int-hdrs
! 	$(GCC_FOR_TARGET) $(SELFTEST_FLAGS) \
  	  -wrapper gdb,--args
  
! # Convenience method for running selftests under valgrind:
  .PHONY: selftest-valgrind
! selftest-valgrind: $(GCC_PASSES) cc1$(exeext) stmp-int-hdrs
! 	$(GCC_FOR_TARGET) $(SELFTEST_FLAGS) \
  	  -wrapper valgrind,--leak-check=full
  
  # Recompile all the language-independent object files.
--- 1924,1992 ----
  # Specify -o /dev/null so the output of -S is discarded. More importantly
  # It does not try to create a file with the name "null.s" on POSIX and
  # "nul.s" on Windows. Because on Windows "nul" is a reserved file name.
+ # Beware that /dev/null is not available to mingw tools, so directly use
+ # "nul" instead of "/dev/null" if we're building on a mingw machine.
  # Specify the path to gcc/testsuite/selftests within the srcdir
  # as an argument to -fself-test.
! DEVNULL=$(if $(findstring mingw,$(build)),nul,/dev/null)
! SELFTEST_FLAGS = -nostdinc $(DEVNULL) -S -o $(DEVNULL) \
  	-fself-test=$(srcdir)/testsuite/selftests
  
! C_SELFTEST_FLAGS = -xc $(SELFTEST_FLAGS)
! CPP_SELFTEST_FLAGS = -xc++ $(SELFTEST_FLAGS)
! 
! SELFTEST_DEPS = $(GCC_PASSES) stmp-int-hdrs $(srcdir)/testsuite/selftests
! 
! C_SELFTEST_DEPS = cc1$(exeext) $(SELFTEST_DEPS)
! CPP_SELFTEST_DEPS = cc1plus$(exeext) $(SELFTEST_DEPS)
! 
! # Run the selftests during the build once we have a driver and the frontend,
  # so that self-test failures are caught as early as possible.
! # Use "s-selftest-FE" to ensure that we only run the selftests if the
! # driver, frontend, or selftest data change.
  .PHONY: selftest
! 
! # By default, only run the selftests within the C frontend
! selftest: s-selftest-c
! 
! # C selftests
! s-selftest-c: $(C_SELFTEST_DEPS)
! 	$(GCC_FOR_TARGET) $(C_SELFTEST_FLAGS)
  	$(STAMP) $@
  
! # Convenience methods for running C selftests under gdb:
! .PHONY: selftest-c-gdb
! selftest-c-gdb: $(C_SELFTEST_DEPS)
! 	$(GCC_FOR_TARGET) $(C_SELFTEST_FLAGS) \
  	  -wrapper gdb,--args
  
! .PHONY: selftest-gdb
! selftest-gdb: selftest-c-gdb
! 
! # Convenience methods for running C selftests under valgrind:
! .PHONY: selftest-c-valgrind
! selftest-c-valgrind: $(C_SELFTEST_DEPS)
! 	$(GCC_FOR_TARGET) $(C_SELFTEST_FLAGS) \
! 	  -wrapper valgrind,--leak-check=full
! 
  .PHONY: selftest-valgrind
! selftest-valgrind: selftest-c-valgrind
! 
! # C++ selftests
! s-selftest-c++: $(CPP_SELFTEST_DEPS)
! 	$(GCC_FOR_TARGET) $(CPP_SELFTEST_FLAGS)
! 	$(STAMP) $@
! 
! # Convenience method for running C++ selftests under gdb:
! .PHONY: selftest-c++-gdb
! selftest-c++-gdb: $(CPP_SELFTEST_DEPS)
! 	$(GCC_FOR_TARGET) $(CPP_SELFTEST_FLAGS) \
! 	  -wrapper gdb,--args
! 
! # Convenience method for running C++ selftests under valgrind:
! .PHONY: selftest-c++-valgrind
! selftest-c++-valgrind: $(CPP_SELFTEST_DEPS)
! 	$(GCC_FOR_TARGET) $(CPP_SELFTEST_FLAGS) \
  	  -wrapper valgrind,--leak-check=full
  
  # Recompile all the language-independent object files.
*************** CFLAGS-collect2.o += -DTARGET_MACHINE=\"
*** 2089,2095 ****
  
  LTO_WRAPPER_OBJS = lto-wrapper.o collect-utils.o ggc-none.o
  lto-wrapper$(exeext): $(LTO_WRAPPER_OBJS) libcommon-target.a $(LIBDEPS)
! 	+$(LINKER) $(ALL_COMPILERFLAGS) $(LDFLAGS) -o T$@ \
  	   $(LTO_WRAPPER_OBJS) libcommon-target.a $(LIBS)
  	mv -f T$@ $@
  
--- 2155,2161 ----
  
  LTO_WRAPPER_OBJS = lto-wrapper.o collect-utils.o ggc-none.o
  lto-wrapper$(exeext): $(LTO_WRAPPER_OBJS) libcommon-target.a $(LIBDEPS)
! 	+$(LINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) -o T$@ \
  	   $(LTO_WRAPPER_OBJS) libcommon-target.a $(LIBS)
  	mv -f T$@ $@
  
*************** s-genrtl-h: build/gengenrtl$(build_exeex
*** 2312,2317 ****
--- 2378,2384 ----
  
  insn-modes.c: s-modes; @true
  insn-modes.h: s-modes-h; @true
+ insn-modes-inline.h: s-modes-inline-h; @true
  min-insn-modes.c: s-modes-m; @true
  
  s-modes: build/genmodes$(build_exeext)
*************** s-modes-h: build/genmodes$(build_exeext)
*** 2324,2329 ****
--- 2391,2402 ----
  	$(SHELL) $(srcdir)/../move-if-change tmp-modes.h insn-modes.h
  	$(STAMP) s-modes-h
  
+ s-modes-inline-h: build/genmodes$(build_exeext)
+ 	$(RUN_GEN) build/genmodes$(build_exeext) -i > tmp-modes-inline.h
+ 	$(SHELL) $(srcdir)/../move-if-change tmp-modes-inline.h \
+ 	  insn-modes-inline.h
+ 	$(STAMP) s-modes-inline-h
+ 
  s-modes-m: build/genmodes$(build_exeext)
  	$(RUN_GEN) build/genmodes$(build_exeext) -m > tmp-min-modes.c
  	$(SHELL) $(srcdir)/../move-if-change tmp-min-modes.c min-insn-modes.c
*************** s-match: build/genmatch$(build_exeext) $
*** 2448,2460 ****
  GTFILES = $(CPP_ID_DATA_H) $(srcdir)/input.h $(srcdir)/coretypes.h \
    $(host_xm_file_list) \
    $(tm_file_list) $(HASHTAB_H) $(SPLAY_TREE_H) $(srcdir)/bitmap.h \
!   $(srcdir)/wide-int.h $(srcdir)/alias.h $(srcdir)/cilk.h \
!   $(srcdir)/cilk-common.c $(srcdir)/coverage.c  $(srcdir)/rtl.h \
    $(srcdir)/optabs.h $(srcdir)/tree.h $(srcdir)/tree-core.h \
    $(srcdir)/libfuncs.h $(SYMTAB_H) \
    $(srcdir)/real.h $(srcdir)/function.h $(srcdir)/insn-addr.h $(srcdir)/hwint.h \
    $(srcdir)/fixed-value.h \
!   $(srcdir)/output.h $(srcdir)/cfgloop.h $(srcdir)/cfg.h \
    $(srcdir)/cselib.h $(srcdir)/basic-block.h  $(srcdir)/ipa-ref.h $(srcdir)/cgraph.h \
    $(srcdir)/reload.h $(srcdir)/caller-save.c $(srcdir)/symtab.c \
    $(srcdir)/alias.c $(srcdir)/bitmap.c $(srcdir)/cselib.c $(srcdir)/cgraph.c \
--- 2521,2533 ----
  GTFILES = $(CPP_ID_DATA_H) $(srcdir)/input.h $(srcdir)/coretypes.h \
    $(host_xm_file_list) \
    $(tm_file_list) $(HASHTAB_H) $(SPLAY_TREE_H) $(srcdir)/bitmap.h \
!   $(srcdir)/wide-int.h $(srcdir)/alias.h \
!   $(srcdir)/coverage.c  $(srcdir)/rtl.h \
    $(srcdir)/optabs.h $(srcdir)/tree.h $(srcdir)/tree-core.h \
    $(srcdir)/libfuncs.h $(SYMTAB_H) \
    $(srcdir)/real.h $(srcdir)/function.h $(srcdir)/insn-addr.h $(srcdir)/hwint.h \
    $(srcdir)/fixed-value.h \
!   $(srcdir)/output.h $(srcdir)/cfgloop.h $(srcdir)/cfg.h $(srcdir)/profile-count.h \
    $(srcdir)/cselib.h $(srcdir)/basic-block.h  $(srcdir)/ipa-ref.h $(srcdir)/cgraph.h \
    $(srcdir)/reload.h $(srcdir)/caller-save.c $(srcdir)/symtab.c \
    $(srcdir)/alias.c $(srcdir)/bitmap.c $(srcdir)/cselib.c $(srcdir)/cgraph.c \
*************** GTFILES = $(CPP_ID_DATA_H) $(srcdir)/inp
*** 2475,2487 ****
    $(srcdir)/lists.c $(srcdir)/optabs-libfuncs.c \
    $(srcdir)/profile.c $(srcdir)/mcf.c \
    $(srcdir)/reg-stack.c $(srcdir)/cfgrtl.c \
!   $(srcdir)/sdbout.c $(srcdir)/stor-layout.c \
    $(srcdir)/stringpool.c $(srcdir)/tree.c $(srcdir)/varasm.c \
    $(srcdir)/gimple.h \
    $(srcdir)/gimple-ssa.h \
    $(srcdir)/tree-chkp.c \
    $(srcdir)/tree-ssanames.c $(srcdir)/tree-eh.c $(srcdir)/tree-ssa-address.c \
!   $(srcdir)/tree-cfg.c \
    $(srcdir)/tree-dfa.c \
    $(srcdir)/tree-iterator.c $(srcdir)/gimple-expr.c \
    $(srcdir)/tree-chrec.h \
--- 2548,2560 ----
    $(srcdir)/lists.c $(srcdir)/optabs-libfuncs.c \
    $(srcdir)/profile.c $(srcdir)/mcf.c \
    $(srcdir)/reg-stack.c $(srcdir)/cfgrtl.c \
!   $(srcdir)/stor-layout.c \
    $(srcdir)/stringpool.c $(srcdir)/tree.c $(srcdir)/varasm.c \
    $(srcdir)/gimple.h \
    $(srcdir)/gimple-ssa.h \
    $(srcdir)/tree-chkp.c \
    $(srcdir)/tree-ssanames.c $(srcdir)/tree-eh.c $(srcdir)/tree-ssa-address.c \
!   $(srcdir)/tree-cfg.c $(srcdir)/tree-ssa-loop-ivopts.c \
    $(srcdir)/tree-dfa.c \
    $(srcdir)/tree-iterator.c $(srcdir)/gimple-expr.c \
    $(srcdir)/tree-chrec.h \
*************** GTFILES = $(CPP_ID_DATA_H) $(srcdir)/inp
*** 2502,2508 ****
    $(srcdir)/trans-mem.c \
    $(srcdir)/lto-streamer.h \
    $(srcdir)/target-globals.h \
!   $(srcdir)/ipa-inline.h \
    $(srcdir)/vtable-verify.c \
    $(srcdir)/asan.c \
    $(srcdir)/ubsan.c \
--- 2575,2582 ----
    $(srcdir)/trans-mem.c \
    $(srcdir)/lto-streamer.h \
    $(srcdir)/target-globals.h \
!   $(srcdir)/ipa-predicate.h \
!   $(srcdir)/ipa-fnsummary.h \
    $(srcdir)/vtable-verify.c \
    $(srcdir)/asan.c \
    $(srcdir)/ubsan.c \
*************** s-gtype: build/gengtype$(build_exeext) $
*** 2559,2565 ****
  
  generated_files = config.h tm.h $(TM_P_H) $(TM_H) multilib.h \
         $(simple_generated_h) specs.h \
!        tree-check.h genrtl.h insn-modes.h tm-preds.h tm-constrs.h \
         $(ALL_GTFILES_H) gtype-desc.c gtype-desc.h gcov-iov.h \
         options.h target-hooks-def.h insn-opinit.h \
         common/common-target-hooks-def.h pass-instances.def \
--- 2633,2640 ----
  
  generated_files = config.h tm.h $(TM_P_H) $(TM_H) multilib.h \
         $(simple_generated_h) specs.h \
!        tree-check.h genrtl.h insn-modes.h insn-modes-inline.h \
!        tm-preds.h tm-constrs.h \
         $(ALL_GTFILES_H) gtype-desc.c gtype-desc.h gcov-iov.h \
         options.h target-hooks-def.h insn-opinit.h \
         common/common-target-hooks-def.h pass-instances.def \
*************** build/version.o:  version.c version.h \
*** 2586,2615 ****
  # Header dependencies for the programs that generate source code.
  # These are library modules...
  build/errors.o : errors.c $(BCONFIG_H) $(SYSTEM_H) errors.h
! build/gensupport.o: gensupport.c $(BCONFIG_H) $(SYSTEM_H) coretypes.h	\
!   $(GTM_H) $(RTL_BASE_H) $(OBSTACK_H) errors.h $(HASHTAB_H)		\
!   $(READ_MD_H) $(GENSUPPORT_H)
! build/ggc-none.o : ggc-none.c $(BCONFIG_H) $(SYSTEM_H) coretypes.h 	\
    $(GGC_H)
  build/min-insn-modes.o : min-insn-modes.c $(BCONFIG_H) $(SYSTEM_H)	\
!   $(MACHMODE_H)
! build/print-rtl.o: print-rtl.c $(BCONFIG_H) $(SYSTEM_H) coretypes.h	\
    $(GTM_H) $(RTL_BASE_H)
! build/read-md.o: read-md.c $(BCONFIG_H) $(SYSTEM_H) coretypes.h		\
    $(HASHTAB_H) errors.h $(READ_MD_H)
! build/read-rtl.o: read-rtl.c $(BCONFIG_H) $(SYSTEM_H) coretypes.h	\
    $(GTM_H) $(RTL_BASE_H) $(OBSTACK_H) $(HASHTAB_H) $(READ_MD_H)		\
    $(GENSUPPORT_H)
! build/rtl.o: rtl.c $(BCONFIG_H) coretypes.h $(GTM_H) $(SYSTEM_H)	\
    $(RTL_H) $(GGC_H) errors.h
! build/vec.o : vec.c $(BCONFIG_H) $(SYSTEM_H) coretypes.h $(VEC_H)	\
!    $(GGC_H) toplev.h $(DIAGNOSTIC_CORE_H)
! build/hash-table.o : hash-table.c $(BCONFIG_H) $(SYSTEM_H) coretypes.h  \
!    $(HASH_TABLE_H) $(GGC_H) toplev.h $(DIAGNOSTIC_CORE_H)
! build/inchash.o : inchash.c $(BCONFIG_H) $(SYSTEM_H) coretypes.h  \
!    $(HASHTAB_H) inchash.h
  build/gencondmd.o : build/gencondmd.c $(BCONFIG_H) $(SYSTEM_H)		\
!   coretypes.h $(GTM_H) insn-constants.h					\
    $(filter-out insn-flags.h, $(RTL_H) $(TM_P_H) $(FUNCTION_H) $(REGS_H) \
    $(RECOG_H) output.h $(FLAGS_H) $(RESOURCE_H) toplev.h $(DIAGNOSTIC_CORE_H) reload.h 	\
    $(EXCEPT_H) tm-constrs.h)
--- 2661,2690 ----
  # Header dependencies for the programs that generate source code.
  # These are library modules...
  build/errors.o : errors.c $(BCONFIG_H) $(SYSTEM_H) errors.h
! build/gensupport.o: gensupport.c $(BCONFIG_H) $(SYSTEM_H) 		\
!   $(CORETYPES_H) $(GTM_H) $(RTL_BASE_H) $(OBSTACK_H) errors.h		\
!   $(HASHTAB_H) $(READ_MD_H) $(GENSUPPORT_H)
! build/ggc-none.o : ggc-none.c $(BCONFIG_H) $(SYSTEM_H) $(CORETYPES_H) 	\
    $(GGC_H)
  build/min-insn-modes.o : min-insn-modes.c $(BCONFIG_H) $(SYSTEM_H)	\
!   $(CORETYPES_H)
! build/print-rtl.o: print-rtl.c $(BCONFIG_H) $(SYSTEM_H) $(CORETYPES_H)	\
    $(GTM_H) $(RTL_BASE_H)
! build/read-md.o: read-md.c $(BCONFIG_H) $(SYSTEM_H) $(CORETYPES_H)	\
    $(HASHTAB_H) errors.h $(READ_MD_H)
! build/read-rtl.o: read-rtl.c $(BCONFIG_H) $(SYSTEM_H) $(CORETYPES_H)	\
    $(GTM_H) $(RTL_BASE_H) $(OBSTACK_H) $(HASHTAB_H) $(READ_MD_H)		\
    $(GENSUPPORT_H)
! build/rtl.o: rtl.c $(BCONFIG_H) $(CORETYPES_H) $(GTM_H) $(SYSTEM_H)	\
    $(RTL_H) $(GGC_H) errors.h
! build/vec.o : vec.c $(BCONFIG_H) $(SYSTEM_H) $(CORETYPES_H) $(VEC_H)	\
!   $(GGC_H) toplev.h $(DIAGNOSTIC_CORE_H)
! build/hash-table.o : hash-table.c $(BCONFIG_H) $(SYSTEM_H)		\
!   $(CORETYPES_H) $(HASH_TABLE_H) $(GGC_H) toplev.h $(DIAGNOSTIC_CORE_H)
! build/inchash.o : inchash.c $(BCONFIG_H) $(SYSTEM_H) $(CORETYPES_H)	\
!   $(HASHTAB_H) inchash.h
  build/gencondmd.o : build/gencondmd.c $(BCONFIG_H) $(SYSTEM_H)		\
!   $(CORETYPES_H) $(GTM_H) insn-constants.h				\
    $(filter-out insn-flags.h, $(RTL_H) $(TM_P_H) $(FUNCTION_H) $(REGS_H) \
    $(RECOG_H) output.h $(FLAGS_H) $(RESOURCE_H) toplev.h $(DIAGNOSTIC_CORE_H) reload.h 	\
    $(EXCEPT_H) tm-constrs.h)
*************** build/gencondmd.o : \
*** 2621,2659 ****
  
  # ...these are the programs themselves.
  build/genattr.o : genattr.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H)	\
!   coretypes.h $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H)
  build/genattr-common.o : genattr-common.c $(RTL_BASE_H) $(BCONFIG_H)	\
!   $(SYSTEM_H) coretypes.h $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H)
  build/genattrtab.o : genattrtab.c $(RTL_BASE_H) $(OBSTACK_H)		\
!   $(BCONFIG_H) $(SYSTEM_H) coretypes.h $(GTM_H) errors.h $(GGC_H)	\
    $(READ_MD_H) $(GENSUPPORT_H) $(FNMATCH_H)
  build/genautomata.o : genautomata.c $(RTL_BASE_H) $(OBSTACK_H)		\
!   $(BCONFIG_H) $(SYSTEM_H) coretypes.h $(GTM_H) errors.h $(VEC_H)	\
    $(HASHTAB_H) $(GENSUPPORT_H) $(FNMATCH_H)
  build/gencheck.o : gencheck.c all-tree.def $(BCONFIG_H) $(GTM_H)	\
! 	$(SYSTEM_H) coretypes.h tree.def c-family/c-common.def		\
  	$(lang_tree_files) gimple.def
  build/genchecksum.o : genchecksum.c $(BCONFIG_H) $(SYSTEM_H) $(MD5_H)
  build/gencodes.o : gencodes.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H)	\
!   coretypes.h $(GTM_H) errors.h $(GENSUPPORT_H)
  build/genconditions.o : genconditions.c $(RTL_BASE_H) $(BCONFIG_H)	\
!   $(SYSTEM_H) coretypes.h $(GTM_H) errors.h $(HASHTAB_H) $(READ_MD_H)	\
!   $(GENSUPPORT_H)
  build/genconfig.o : genconfig.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H)	\
!   coretypes.h $(GTM_H) errors.h $(GENSUPPORT_H)
  build/genconstants.o : genconstants.c $(BCONFIG_H) $(SYSTEM_H)		\
!   coretypes.h errors.h $(READ_MD_H)
  build/genemit.o : genemit.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H)	\
!   coretypes.h $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H) internal-fn.def
  build/genenums.o : genenums.c $(BCONFIG_H) $(SYSTEM_H)			\
!   coretypes.h errors.h $(READ_MD_H)
  build/genextract.o : genextract.c $(RTL_BASE_H) $(BCONFIG_H)		\
!   $(SYSTEM_H) coretypes.h $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H)
  build/genflags.o : genflags.c $(RTL_BASE_H) $(OBSTACK_H) $(BCONFIG_H)	\
!   $(SYSTEM_H) coretypes.h $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H)
  build/gentarget-def.o : gentarget-def.c $(BCONFIG_H) $(SYSTEM_H)	\
!   coretypes.h $(GTM_H) $(RTL_BASE_H) errors.h $(READ_MD_H) $(GENSUPPORT_H)	\
!   $(HASH_TABLE_H) target-insns.def
  build/gengenrtl.o : gengenrtl.c $(BCONFIG_H) $(SYSTEM_H) rtl.def
  
  # The gengtype generator program is special: Two versions are built.
--- 2696,2734 ----
  
  # ...these are the programs themselves.
  build/genattr.o : genattr.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H)	\
!   $(CORETYPES_H) $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H)
  build/genattr-common.o : genattr-common.c $(RTL_BASE_H) $(BCONFIG_H)	\
!   $(SYSTEM_H) $(CORETYPES_H) $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H)
  build/genattrtab.o : genattrtab.c $(RTL_BASE_H) $(OBSTACK_H)		\
!   $(BCONFIG_H) $(SYSTEM_H) $(CORETYPES_H) $(GTM_H) errors.h $(GGC_H)	\
    $(READ_MD_H) $(GENSUPPORT_H) $(FNMATCH_H)
  build/genautomata.o : genautomata.c $(RTL_BASE_H) $(OBSTACK_H)		\
!   $(BCONFIG_H) $(SYSTEM_H) $(CORETYPES_H) $(GTM_H) errors.h $(VEC_H)	\
    $(HASHTAB_H) $(GENSUPPORT_H) $(FNMATCH_H)
  build/gencheck.o : gencheck.c all-tree.def $(BCONFIG_H) $(GTM_H)	\
! 	$(SYSTEM_H) $(CORETYPES_H) tree.def c-family/c-common.def	\
  	$(lang_tree_files) gimple.def
  build/genchecksum.o : genchecksum.c $(BCONFIG_H) $(SYSTEM_H) $(MD5_H)
  build/gencodes.o : gencodes.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H)	\
!   $(CORETYPES_H) $(GTM_H) errors.h $(GENSUPPORT_H)
  build/genconditions.o : genconditions.c $(RTL_BASE_H) $(BCONFIG_H)	\
!   $(SYSTEM_H) $(CORETYPES_H) $(GTM_H) errors.h $(HASHTAB_H)		\
!   $(READ_MD_H) $(GENSUPPORT_H)
  build/genconfig.o : genconfig.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H)	\
!   $(CORETYPES_H) $(GTM_H) errors.h $(GENSUPPORT_H)
  build/genconstants.o : genconstants.c $(BCONFIG_H) $(SYSTEM_H)		\
!   $(CORETYPES_H) errors.h $(READ_MD_H)
  build/genemit.o : genemit.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H)	\
!   $(CORETYPES_H) $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H) internal-fn.def
  build/genenums.o : genenums.c $(BCONFIG_H) $(SYSTEM_H)			\
!   $(CORETYPES_H) errors.h $(READ_MD_H)
  build/genextract.o : genextract.c $(RTL_BASE_H) $(BCONFIG_H)		\
!   $(SYSTEM_H) $(CORETYPES_H) $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H)
  build/genflags.o : genflags.c $(RTL_BASE_H) $(OBSTACK_H) $(BCONFIG_H)	\
!   $(SYSTEM_H) $(CORETYPES_H) $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H)
  build/gentarget-def.o : gentarget-def.c $(BCONFIG_H) $(SYSTEM_H)	\
!   $(CORETYPES_H) $(GTM_H) $(RTL_BASE_H) errors.h $(READ_MD_H)		\
!   $(GENSUPPORT_H) $(HASH_TABLE_H) target-insns.def
  build/gengenrtl.o : gengenrtl.c $(BCONFIG_H) $(SYSTEM_H) rtl.def
  
  # The gengtype generator program is special: Two versions are built.
*************** CFLAGS-gengtype-parse.o += -DHOST_GENERA
*** 2677,2718 ****
  build/gengtype-parse.o: $(BCONFIG_H)
  
  gengtype-state.o build/gengtype-state.o: gengtype-state.c $(SYSTEM_H) \
!   gengtype.h errors.h double-int.h version.h $(HASHTAB_H) $(OBSTACK_H) \
    $(XREGEX_H)
  CFLAGS-gengtype-state.o += -DHOST_GENERATOR_FILE
  build/gengtype-state.o: $(BCONFIG_H)
  gengtype.o build/gengtype.o : gengtype.c $(SYSTEM_H) gengtype.h 	\
!   rtl.def insn-notes.def errors.h double-int.h version.h     		\
    $(HASHTAB_H) $(OBSTACK_H) $(XREGEX_H)
  CFLAGS-gengtype.o += -DHOST_GENERATOR_FILE
  build/gengtype.o: $(BCONFIG_H)
  
  CFLAGS-errors.o += -DHOST_GENERATOR_FILE
  
! build/genmddeps.o: genmddeps.c $(BCONFIG_H) $(SYSTEM_H) coretypes.h	\
    errors.h $(READ_MD_H)
  build/genmodes.o : genmodes.c $(BCONFIG_H) $(SYSTEM_H) errors.h		\
    $(HASHTAB_H) machmode.def $(extra_modes_file)
  build/genopinit.o : genopinit.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H)	\
!   coretypes.h $(GTM_H) errors.h $(GENSUPPORT_H) optabs.def
  build/genoutput.o : genoutput.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H)	\
!   coretypes.h $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H)
  build/genpeep.o : genpeep.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H)	\
!   coretypes.h $(GTM_H) errors.h $(GENSUPPORT_H) toplev.h $(DIAGNOSTIC_CORE_H)
  build/genpreds.o : genpreds.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H)	\
!   coretypes.h $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H) $(OBSTACK_H)
  build/genrecog.o : genrecog.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H)	\
!   coretypes.h $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H)		\
    $(HASH_TABLE_H) inchash.h
  build/genhooks.o : genhooks.c $(TARGET_DEF) $(C_TARGET_DEF)		\
    $(COMMON_TARGET_DEF) $(BCONFIG_H) $(SYSTEM_H) errors.h
  build/genmddump.o : genmddump.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H)	\
!   coretypes.h $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H)
  build/genmatch.o : genmatch.c $(BCONFIG_H) $(SYSTEM_H) \
!   coretypes.h errors.h $(HASH_TABLE_H) hash-map.h $(GGC_H) is-a.h \
    tree.def builtins.def internal-fn.def
  build/gencfn-macros.o : gencfn-macros.c $(BCONFIG_H) $(SYSTEM_H)	\
!   coretypes.h errors.h $(HASH_TABLE_H) hash-set.h builtins.def internal-fn.def
  
  # Compile the programs that generate insn-* from the machine description.
  # They are compiled with $(COMPILER_FOR_BUILD), and associated libraries,
--- 2752,2795 ----
  build/gengtype-parse.o: $(BCONFIG_H)
  
  gengtype-state.o build/gengtype-state.o: gengtype-state.c $(SYSTEM_H) \
!   gengtype.h errors.h version.h $(HASHTAB_H) $(OBSTACK_H) \
    $(XREGEX_H)
  CFLAGS-gengtype-state.o += -DHOST_GENERATOR_FILE
  build/gengtype-state.o: $(BCONFIG_H)
  gengtype.o build/gengtype.o : gengtype.c $(SYSTEM_H) gengtype.h 	\
!   rtl.def insn-notes.def errors.h version.h     		\
    $(HASHTAB_H) $(OBSTACK_H) $(XREGEX_H)
  CFLAGS-gengtype.o += -DHOST_GENERATOR_FILE
  build/gengtype.o: $(BCONFIG_H)
  
  CFLAGS-errors.o += -DHOST_GENERATOR_FILE
  
! build/genmddeps.o: genmddeps.c $(BCONFIG_H) $(SYSTEM_H) $(CORETYPES_H)	\
    errors.h $(READ_MD_H)
  build/genmodes.o : genmodes.c $(BCONFIG_H) $(SYSTEM_H) errors.h		\
    $(HASHTAB_H) machmode.def $(extra_modes_file)
  build/genopinit.o : genopinit.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H)	\
!   $(CORETYPES_H) $(GTM_H) errors.h $(GENSUPPORT_H) optabs.def
  build/genoutput.o : genoutput.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H)	\
!   $(CORETYPES_H) $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H)
  build/genpeep.o : genpeep.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H)	\
!   $(CORETYPES_H) $(GTM_H) errors.h $(GENSUPPORT_H) toplev.h		\
!   $(DIAGNOSTIC_CORE_H)
  build/genpreds.o : genpreds.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H)	\
!   $(CORETYPES_H) $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H) $(OBSTACK_H)
  build/genrecog.o : genrecog.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H)	\
!   $(CORETYPES_H) $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H)		\
    $(HASH_TABLE_H) inchash.h
  build/genhooks.o : genhooks.c $(TARGET_DEF) $(C_TARGET_DEF)		\
    $(COMMON_TARGET_DEF) $(BCONFIG_H) $(SYSTEM_H) errors.h
  build/genmddump.o : genmddump.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H)	\
!   $(CORETYPES_H) $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H)
  build/genmatch.o : genmatch.c $(BCONFIG_H) $(SYSTEM_H) \
!   $(CORETYPES_H) errors.h $(HASH_TABLE_H) hash-map.h $(GGC_H) is-a.h \
    tree.def builtins.def internal-fn.def
  build/gencfn-macros.o : gencfn-macros.c $(BCONFIG_H) $(SYSTEM_H)	\
!   $(CORETYPES_H) errors.h $(HASH_TABLE_H) hash-set.h builtins.def	\
!   internal-fn.def
  
  # Compile the programs that generate insn-* from the machine description.
  # They are compiled with $(COMPILER_FOR_BUILD), and associated libraries,
*************** genprog = $(genprogerr) check checksum c
*** 2739,2745 ****
  build/genautomata$(build_exeext) : BUILD_LIBS += -lm
  
  build/genrecog$(build_exeext) : build/hash-table.o build/inchash.o
! build/gencfn-macros$(build_exeext) : build/hash-table.o build/ggc-none.o
  
  # For stage1 and when cross-compiling use the build libcpp which is
  # built with NLS disabled.  For stage2+ use the host library and
--- 2816,2823 ----
  build/genautomata$(build_exeext) : BUILD_LIBS += -lm
  
  build/genrecog$(build_exeext) : build/hash-table.o build/inchash.o
! build/gencfn-macros$(build_exeext) : build/hash-table.o build/vec.o \
!   build/ggc-none.o
  
  # For stage1 and when cross-compiling use the build libcpp which is
  # built with NLS disabled.  For stage2+ use the host library and
*************** $(genprog:%=build/gen%$(build_exeext)):
*** 2770,2780 ****
  	    $(filter-out $(BUILD_LIBDEPS), $^) $(BUILD_LIBS)
  
  # Generated source files for gengtype.  Prepend inclusion of
! # bconfig.h because AIX requires _LARGE_FILES to be defined before
  # any system header is included.
  gengtype-lex.c : gengtype-lex.l
  	-$(FLEX) $(FLEXFLAGS) -o$@ $< && { \
! 	  echo '#include "bconfig.h"' > $@.tmp; \
  	  cat $@ >> $@.tmp; \
  	  mv $@.tmp $@; \
  	}
--- 2848,2862 ----
  	    $(filter-out $(BUILD_LIBDEPS), $^) $(BUILD_LIBS)
  
  # Generated source files for gengtype.  Prepend inclusion of
! # config.h/bconfig.h because AIX requires _LARGE_FILES to be defined before
  # any system header is included.
  gengtype-lex.c : gengtype-lex.l
  	-$(FLEX) $(FLEXFLAGS) -o$@ $< && { \
! 	  echo '#ifdef HOST_GENERATOR_FILE' > $@.tmp; \
! 	  echo '#include "config.h"'       >> $@.tmp; \
! 	  echo '#else'                     >> $@.tmp; \
! 	  echo '#include "bconfig.h"'      >> $@.tmp; \
! 	  echo '#endif'                    >> $@.tmp; \
  	  cat $@ >> $@.tmp; \
  	  mv $@.tmp $@; \
  	}
*************** CFLAGS-cppdefault.o += $(PREPROCESSOR_DE
*** 2810,2817 ****
  # having an empty command (nothing following the semicolon).
  
  # gcov-iov.c is run on the build machine to generate gcov-iov.h from version.c
! build/gcov-iov.o: gcov-iov.c $(BCONFIG_H) coretypes.h $(GTM_H) \
!   $(SYSTEM_H) coretypes.h $(TM_H)
  
  build/gcov-iov$(build_exeext): build/gcov-iov.o
  	+$(LINKER_FOR_BUILD) $(BUILD_LINKERFLAGS) $(BUILD_LDFLAGS) \
--- 2892,2899 ----
  # having an empty command (nothing following the semicolon).
  
  # gcov-iov.c is run on the build machine to generate gcov-iov.h from version.c
! build/gcov-iov.o: gcov-iov.c $(BCONFIG_H) $(CORETYPES_H) $(GTM_H) \
!   $(SYSTEM_H) $(CORETYPES_H) $(TM_H)
  
  build/gcov-iov$(build_exeext): build/gcov-iov.o
  	+$(LINKER_FOR_BUILD) $(BUILD_LINKERFLAGS) $(BUILD_LDFLAGS) \
*************** stmp-fixinc: gsyslimits.h macro_list fix
*** 2993,3003 ****
  	    sysroot_headers_suffix=`echo $${ml} | sed -e 's/;.*$$//'`; \
  	    multi_dir=`echo $${ml} | sed -e 's/^[^;]*;//'`; \
  	    fix_dir=include-fixed$${multi_dir}; \
! 	    if ! $(inhibit_libc) && test ! -d ${SYSTEM_HEADER_DIR}; then \
  	      echo The directory that should contain system headers does not exist: >&2 ; \
! 	      echo "  ${SYSTEM_HEADER_DIR}" >&2 ; \
  	      tooldir_sysinc=`echo "${gcc_tooldir}/sys-include" | sed -e :a -e "s,[^/]*/\.\.\/,," -e ta`; \
! 	      if test "x${SYSTEM_HEADER_DIR}" = "x$${tooldir_sysinc}"; \
  	      then sleep 1; else exit 1; fi; \
  	    fi; \
  	    $(mkinstalldirs) $${fix_dir}; \
--- 3075,3085 ----
  	    sysroot_headers_suffix=`echo $${ml} | sed -e 's/;.*$$//'`; \
  	    multi_dir=`echo $${ml} | sed -e 's/^[^;]*;//'`; \
  	    fix_dir=include-fixed$${multi_dir}; \
! 	    if ! $(inhibit_libc) && test ! -d ${BUILD_SYSTEM_HEADER_DIR}; then \
  	      echo The directory that should contain system headers does not exist: >&2 ; \
! 	      echo "  ${BUILD_SYSTEM_HEADER_DIR}" >&2 ; \
  	      tooldir_sysinc=`echo "${gcc_tooldir}/sys-include" | sed -e :a -e "s,[^/]*/\.\.\/,," -e ta`; \
! 	      if test "x${BUILD_SYSTEM_HEADER_DIR}" = "x$${tooldir_sysinc}"; \
  	      then sleep 1; else exit 1; fi; \
  	    fi; \
  	    $(mkinstalldirs) $${fix_dir}; \
*************** stmp-fixinc: gsyslimits.h macro_list fix
*** 3008,3014 ****
  	      export TARGET_MACHINE srcdir SHELL MACRO_LIST && \
  	      cd $(build_objdir)/fixincludes && \
  	      $(SHELL) ./fixinc.sh "$${gcc_dir}/$${fix_dir}" \
! 	        $(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; \
--- 3090,3096 ----
  	      export TARGET_MACHINE srcdir SHELL MACRO_LIST && \
  	      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; \
*************** TEXI_GCCINT_FILES = gccint.texi gcc-comm
*** 3090,3096 ****
  	 gnu.texi gpl_v3.texi fdl.texi contrib.texi languages.texi	\
  	 sourcebuild.texi gty.texi libgcc.texi cfg.texi tree-ssa.texi	\
  	 loop.texi generic.texi gimple.texi plugins.texi optinfo.texi   \
! 	 match-and-simplify.texi
  
  TEXI_GCCINSTALL_FILES = install.texi install-old.texi fdl.texi		\
  	 gcc-common.texi gcc-vers.texi
--- 3172,3178 ----
  	 gnu.texi gpl_v3.texi fdl.texi contrib.texi languages.texi	\
  	 sourcebuild.texi gty.texi libgcc.texi cfg.texi tree-ssa.texi	\
  	 loop.texi generic.texi gimple.texi plugins.texi optinfo.texi   \
! 	 match-and-simplify.texi poly-int.texi
  
  TEXI_GCCINSTALL_FILES = install.texi install-old.texi fdl.texi		\
  	 gcc-common.texi gcc-vers.texi
*************** PLUGIN_HEADERS = $(TREE_H) $(CONFIG_H) $
*** 3413,3419 ****
    $(C_COMMON_H) c-family/c-objc.h $(C_PRETTY_PRINT_H) \
    tree-iterator.h $(PLUGIN_H) $(TREE_SSA_H) langhooks.h incpath.h debug.h \
    $(EXCEPT_H) tree-ssa-sccvn.h real.h output.h $(IPA_UTILS_H) \
!   $(C_PRAGMA_H)  $(CPPLIB_H)  $(FUNCTION_H) \
    cppdefault.h flags.h $(MD5_H) params.def params.h params-enum.h \
    prefix.h tree-inline.h $(GIMPLE_PRETTY_PRINT_H) realmpfr.h \
    $(IPA_PROP_H) $(TARGET_H) $(RTL_H) $(TM_P_H) $(CFGLOOP_H) $(EMIT_RTL_H) \
--- 3495,3501 ----
    $(C_COMMON_H) c-family/c-objc.h $(C_PRETTY_PRINT_H) \
    tree-iterator.h $(PLUGIN_H) $(TREE_SSA_H) langhooks.h incpath.h debug.h \
    $(EXCEPT_H) tree-ssa-sccvn.h real.h output.h $(IPA_UTILS_H) \
!   ipa-param-manipulation.h $(C_PRAGMA_H)  $(CPPLIB_H)  $(FUNCTION_H) \
    cppdefault.h flags.h $(MD5_H) params.def params.h params-enum.h \
    prefix.h tree-inline.h $(GIMPLE_PRETTY_PRINT_H) realmpfr.h \
    $(IPA_PROP_H) $(TARGET_H) $(RTL_H) $(TM_P_H) $(CFGLOOP_H) $(EMIT_RTL_H) \
*************** PLUGIN_HEADERS = $(TREE_H) $(CONFIG_H) $
*** 3429,3436 ****
    tree-ssa-loop-niter.h tree-ssa-ter.h tree-ssa-threadedge.h \
    tree-ssa-threadupdate.h inchash.h wide-int.h signop.h hash-map.h \
    hash-set.h dominance.h cfg.h cfgrtl.h cfganal.h cfgbuild.h cfgcleanup.h \
!   lcm.h cfgloopmanip.h builtins.def chkp-builtins.def pass-instances.def \
!   params.list
  
  # generate the 'build fragment' b-header-vars
  s-header-vars: Makefile
--- 3511,3518 ----
    tree-ssa-loop-niter.h tree-ssa-ter.h tree-ssa-threadedge.h \
    tree-ssa-threadupdate.h inchash.h wide-int.h signop.h hash-map.h \
    hash-set.h dominance.h cfg.h cfgrtl.h cfganal.h cfgbuild.h cfgcleanup.h \
!   lcm.h cfgloopmanip.h file-prefix-map.h builtins.def chkp-builtins.def \
!   pass-instances.def params.list
  
  # generate the 'build fragment' b-header-vars
  s-header-vars: Makefile
*************** install-mkheaders: stmp-int-hdrs install
*** 3723,3729 ****
  	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$${multidir}/limits.h $(DESTDIR)$(itoolsdatadir)/include$${multi_dir}/limits.h; \
  	done
  	$(INSTALL_SCRIPT) $(srcdir)/../mkinstalldirs \
  		$(DESTDIR)$(itoolsdir)/mkinstalldirs ; \
--- 3805,3811 ----
  	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 ; \
*************** site.exp: ./config.status Makefile
*** 3807,3813 ****
--- 3889,3897 ----
  	@echo "set CFLAGS \"\"" >> ./site.tmp
  	@echo "set CXXFLAGS \"\"" >> ./site.tmp
  	@echo "set HOSTCC \"$(CC)\"" >> ./site.tmp
+ 	@echo "set HOSTCXX \"$(CXX)\"" >> ./site.tmp
  	@echo "set HOSTCFLAGS \"$(CFLAGS)\"" >> ./site.tmp
+ 	@echo "set HOSTCXXFLAGS \"$(CXXFLAGS)\"" >> ./site.tmp
  # TEST_ALWAYS_FLAGS are flags that should be passed to every compilation.
  # They are passed first to allow individual tests to override them.
  	@echo "set TEST_ALWAYS_FLAGS \"$(SYSROOT_CFLAGS_FOR_TARGET)\"" >> ./site.tmp
*************** TAGS: lang.tags
*** 4076,4087 ****
  	    incs="$$incs --include $$dir/TAGS.sub";	\
  	  fi;						\
  	done;						\
! 	etags -o TAGS.sub c-family/*.h c-family/*.c *.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\).*(\([A-Za-z_0-9]+\)/\2/" rtl.def tree.def gimple.def \
! 	      --language=none --regex="/DEFTIMEVAR (\([A-Za-z_0-9]+\)/\1/" timevar.def \
  		; \
  	etags --include TAGS.sub $$incs)
  
--- 4160,4171 ----
  	    incs="$$incs --include $$dir/TAGS.sub";	\
  	  fi;						\
  	done;						\
! 	etags -o TAGS.sub c-family/*.h c-family/*.c 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 params.def \
  		; \
  	etags --include TAGS.sub $$incs)
  
diff -Nrcpad gcc-7.3.0/gcc/README.Portability gcc-8.1.0/gcc/README.Portability
*** gcc-7.3.0/gcc/README.Portability	Sun Jan 22 15:52:02 2017
--- gcc-8.1.0/gcc/README.Portability	Wed Jan  3 10:03:58 2018
***************
*** 1,4 ****
! Copyright (C) 2000-2017 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-2018 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-7.3.0/gcc/acinclude.m4 gcc-8.1.0/gcc/acinclude.m4
*** gcc-7.3.0/gcc/acinclude.m4	Sun Jan  1 12:07:43 2017
--- gcc-8.1.0/gcc/acinclude.m4	Wed Jan  3 10:03:58 2018
***************
*** 1,4 ****
! dnl Copyright (C) 2005-2017 Free Software Foundation, Inc.
  dnl
  dnl This file is part of GCC.
  dnl
--- 1,4 ----
! dnl Copyright (C) 2005-2018 Free Software Foundation, Inc.
  dnl
  dnl This file is part of GCC.
  dnl
*************** fi
*** 277,284 ****
  fi])
  
  AC_DEFUN([gcc_AC_INITFINI_ARRAY],
! [AC_REQUIRE([gcc_SUN_LD_VERSION])dnl
! AC_ARG_ENABLE(initfini-array,
  	[  --enable-initfini-array	use .init_array/.fini_array sections],
  	[], [
  AC_CACHE_CHECK(for .preinit_array/.init_array/.fini_array support,
--- 277,283 ----
  fi])
  
  AC_DEFUN([gcc_AC_INITFINI_ARRAY],
! [AC_ARG_ENABLE(initfini-array,
  	[  --enable-initfini-array	use .init_array/.fini_array sections],
  	[], [
  AC_CACHE_CHECK(for .preinit_array/.init_array/.fini_array support,
*************** if test $[$2] != yes; then
*** 556,598 ****
    $8
  fi])])
  
- dnl gcc_SUN_LD_VERSION
- dnl
- dnl Determines Sun linker version numbers, setting gcc_cv_sun_ld_vers to
- dnl the complete version number and gcc_cv_sun_ld_vers_{major, minor} to
- dnl the corresponding fields.
- dnl
- dnl ld and ld.so.1 are guaranteed to be updated in lockstep, so ld version
- dnl numbers can be used in ld.so.1 feature checks even if a different
- dnl linker is configured.
- dnl
- AC_DEFUN([gcc_SUN_LD_VERSION],
- [changequote(,)dnl
- if test "x${build}" = "x${target}" && test "x${build}" = "x${host}"; then
-   case "${target}" in
-     *-*-solaris2*)
-       #
-       # Solaris 2 ld -V output looks like this for a regular version:
-       #
-       # ld: Software Generation Utilities - Solaris Link Editors: 5.11-1.1699
-       #
-       # but test versions add stuff at the end:
-       #
-       # ld: Software Generation Utilities - Solaris Link Editors: 5.11-1.1701:onnv-ab196087-6931056-03/25/10
-       #
-       gcc_cv_sun_ld_ver=`/usr/ccs/bin/ld -V 2>&1`
-       if echo "$gcc_cv_sun_ld_ver" | grep 'Solaris Link Editors' > /dev/null; then
- 	gcc_cv_sun_ld_vers=`echo $gcc_cv_sun_ld_ver | sed -n \
- 	  -e 's,^.*: 5\.[0-9][0-9]*-\([0-9]\.[0-9][0-9]*\).*$,\1,p'`
- 	gcc_cv_sun_ld_vers_major=`expr "$gcc_cv_sun_ld_vers" : '\([0-9]*\)'`
- 	gcc_cv_sun_ld_vers_minor=`expr "$gcc_cv_sun_ld_vers" : '[0-9]*\.\([0-9]*\)'`
-       fi
-       ;;
-   esac
- fi
- changequote([,])dnl
- ])
- 
  dnl GCC_TARGET_TEMPLATE(KEY)
  dnl ------------------------
  dnl Define KEY as a valid configure key on the target machine.
--- 555,560 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/9drpc.adb gcc-8.1.0/gcc/ada/9drpc.adb
*** gcc-7.3.0/gcc/ada/9drpc.adb	Wed Aug 13 16:59:05 2014
--- gcc-8.1.0/gcc/ada/9drpc.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,1051 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                           S Y S T E M . R P C                            --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          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- --
- -- 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Version for ???
- 
- with Unchecked_Deallocation;
- with Ada.Streams;
- 
- with System.RPC.Net_Trace;
- with System.RPC.Garlic;
- with System.RPC.Streams;
- pragma Elaborate (System.RPC.Garlic);
- 
- package body System.RPC is
- 
-    --  ??? general note: the debugging calls are very heavy, especially
-    --  those that create exception handlers in every procedure. Do we
-    --  really still need all this stuff?
- 
-    use type Ada.Streams.Stream_Element_Count;
-    use type Ada.Streams.Stream_Element_Offset;
- 
-    use type Garlic.Protocol_Access;
-    use type Garlic.Lock_Method;
- 
-    Max_Of_Message_Id : constant := 127;
- 
-    subtype Message_Id_Type is
-      Integer range -Max_Of_Message_Id .. Max_Of_Message_Id;
-    --  A message id is either a request id or reply id. A message id is
-    --  provided with a message to a receiving stub which uses the opposite
-    --  as a reply id. A message id helps to retrieve to which task is
-    --  addressed a reply. When the environment task receives a message, the
-    --  message id is extracted : a positive message id stands for a call, a
-    --  negative message id stands for a reply. A null message id stands for
-    --  an asynchronous request.
- 
-    subtype Request_Id_Type is Message_Id_Type range 1 .. Max_Of_Message_Id;
-    --  When a message id is positive, it is a request
- 
-    type Message_Length_Per_Request is array (Request_Id_Type)
-       of Ada.Streams.Stream_Element_Count;
- 
-    Header_Size : Ada.Streams.Stream_Element_Count :=
-                    Streams.Get_Integer_Initial_Size +
-                      Streams.Get_SEC_Initial_Size;
-    --  Initial size needed for frequently used header streams
- 
-    Stream_Error : exception;
-    --  Occurs when a read procedure is executed on an empty stream
-    --  or when a write procedure is executed on a full stream
- 
-    Partition_RPC_Receiver : RPC_Receiver;
-    --  Cache the RPC_Receiver passed by Establish_RPC_Receiver
- 
-    type Anonymous_Task_Node;
- 
-    type Anonymous_Task_Node_Access is access Anonymous_Task_Node;
-    --  Types we need to construct a singly linked list of anonymous tasks
-    --  This pool is maintained to avoid a task creation each time a RPC
-    --  occurs - to be cont'd
- 
-    task type Anonymous_Task_Type (Self : Anonymous_Task_Node_Access) is
- 
-       entry Start
-          (Message_Id   : Message_Id_Type;
-           Partition    : Partition_ID;
-           Params_Size  : Ada.Streams.Stream_Element_Count;
-           Result_Size  : Ada.Streams.Stream_Element_Count;
-           Protocol     : Garlic.Protocol_Access);
-       --  This entry provides an anonymous task a remote call to perform.
-       --  This task calls for a Request id is provided to construct the
-       --  reply id by using -Request. Partition is used to send the reply
-       --  message. Params_Size is the size of the calling stub Params stream.
-       --  Then Protocol (used by the environment task previously) allows
-       --  extraction of the message following the header (The header is
-       --  extracted by the environment task)
-       --  Note: grammar in above is obscure??? needs cleanup
- 
-    end Anonymous_Task_Type;
- 
-    type Anonymous_Task_Access is access Anonymous_Task_Type;
- 
-    type Anonymous_Task_List is record
-       Head     : Anonymous_Task_Node_Access;
-       Tail     : Anonymous_Task_Node_Access;
-    end record;
- 
-    type Anonymous_Task_Node is record
-       Element : Anonymous_Task_Access;
-       Next    : Anonymous_Task_Node_Access;
-    end record;
-    --  Types we need to construct a singly linked list of anonymous tasks.
-    --  This pool is maintained to avoid a task creation each time a RPC occurs.
- 
-    protected Garbage_Collector is
- 
-       procedure Allocate
-          (Item : out Anonymous_Task_Node_Access);
-       --  Anonymous task pool management : if there is an anonymous task
-       --  left, use it. Otherwise, allocate a new one
- 
-       procedure Deallocate
-          (Item : in out Anonymous_Task_Node_Access);
-       --  Anonymous task pool management : queue this task in the pool
-       --  of inactive anonymous tasks.
- 
-    private
- 
-       Anonymous_List : Anonymous_Task_Node_Access;
-       --  The list root of inactive anonymous tasks
- 
-    end Garbage_Collector;
- 
-    task Dispatcher is
- 
-       entry New_Request (Request : out Request_Id_Type);
-       --  To get a new request
- 
-       entry Wait_On (Request_Id_Type)
-         (Length : out Ada.Streams.Stream_Element_Count);
-       --  To block the calling stub when it waits for a reply
-       --  When it is resumed, we provide the size of the reply
- 
-       entry Wake_Up
-         (Request : Request_Id_Type;
-          Length  : Ada.Streams.Stream_Element_Count);
-       --  To wake up the calling stub when the environment task has
-       --  received a reply for this request
- 
-    end Dispatcher;
- 
-    task Environnement is
- 
-       entry Start;
-       --  Receive no message until Partition_Receiver is set
-       --  Establish_RPC_Receiver decides when the environment task
-       --  is allowed to start
- 
-    end Environnement;
- 
-    protected Partition_Receiver is
- 
-       entry Is_Set;
-       --  Blocks if the Partition_RPC_Receiver has not been set
- 
-       procedure Set;
-       --  Done by Establish_RPC_Receiver when Partition_RPC_Receiver
-       --  is known
- 
-    private
- 
-       Was_Set : Boolean := False;
-       --  True when Partition_RPC_Receiver has been set
- 
-    end Partition_Receiver;
-    --  Anonymous tasks have to wait for the Partition_RPC_Receiver
-    --  to be established
- 
-    type Debug_Level is
-       (D_Elaborate,        --  About the elaboration of this package
-        D_Communication,    --  About calls to Send and Receive
-        D_Debug,            --  Verbose
-        D_Exception);       --  Exception handler
-    --  Debugging levels
- 
-    package Debugging is new System.RPC.Net_Trace (Debug_Level, "RPC : ");
-    --  Debugging package
- 
-    procedure D
-      (Flag : Debug_Level; Info : String) renames Debugging.Debug;
-    --  Shortcut
- 
-    ------------------------
-    -- Partition_Receiver --
-    ------------------------
- 
-    protected body Partition_Receiver is
- 
-       -------------------------------
-       -- Partition_Receiver.Is_Set --
-       -------------------------------
- 
-       entry Is_Set when Was_Set is
-       begin
-          null;
-       end Is_Set;
- 
-       ----------------------------
-       -- Partition_Receiver.Set --
-       ----------------------------
- 
-       procedure Set is
-       begin
-          Was_Set := True;
-       end Set;
- 
-    end Partition_Receiver;
- 
-    ---------------
-    -- Head_Node --
-    ---------------
- 
-    procedure Head_Node
-      (Index  : out Packet_Node_Access;
-       Stream : Params_Stream_Type)
-    is
-    begin
-       Index := Stream.Extra.Head;
- 
-    exception
-       when others =>
-          D (D_Exception, "exception in Head_Node");
-          raise;
-    end Head_Node;
- 
-    ---------------
-    -- Tail_Node --
-    ---------------
- 
-    procedure Tail_Node
-      (Index  : out Packet_Node_Access;
-       Stream : Params_Stream_Type)
-    is
-    begin
-       Index := Stream.Extra.Tail;
- 
-    exception
-       when others =>
-          D (D_Exception, "exception in Tail_Node");
-          raise;
-    end Tail_Node;
- 
-    ---------------
-    -- Null_Node --
-    ---------------
- 
-    function Null_Node (Index : Packet_Node_Access) return Boolean is
-    begin
-       return Index = null;
- 
-    exception
-       when others =>
-          D (D_Exception, "exception in Null_Node");
-          raise;
-    end Null_Node;
- 
-    ----------------------
-    -- Delete_Head_Node --
-    ----------------------
- 
-    procedure Delete_Head_Node (Stream : in out Params_Stream_Type) is
- 
-       procedure Free is
-         new Unchecked_Deallocation
-         (Packet_Node, Packet_Node_Access);
- 
-       Next_Node : Packet_Node_Access := Stream.Extra.Head.Next;
- 
-    begin
-       --  Delete head node and free memory usage
- 
-       Free (Stream.Extra.Head);
-       Stream.Extra.Head := Next_Node;
- 
-       --  If the extra storage is empty, update tail as well
- 
-       if Stream.Extra.Head = null then
-          Stream.Extra.Tail := null;
-       end if;
- 
-    exception
-       when others =>
-          D (D_Exception, "exception in Delete_Head_Node");
-          raise;
-    end Delete_Head_Node;
- 
-    ---------------
-    -- Next_Node --
-    ---------------
- 
-    procedure Next_Node (Node : in out Packet_Node_Access) is
-    begin
-       --  Node is set to the next node
-       --  If not possible, Stream_Error is raised
- 
-       if Node = null then
-          raise Stream_Error;
-       else
-          Node := Node.Next;
-       end if;
- 
-    exception
-       when others =>
-          D (D_Exception, "exception in Next_Node");
-          raise;
-    end Next_Node;
- 
-    ---------------------
-    -- Append_New_Node --
-    ---------------------
- 
-    procedure Append_New_Node (Stream : in out Params_Stream_Type) is
-       Index : Packet_Node_Access;
- 
-    begin
-       --  Set Index to the end of the linked list
- 
-       Tail_Node (Index, Stream);
- 
-       if Null_Node (Index) then
- 
-          --  The list is empty : set head as well
- 
-          Stream.Extra.Head := new Packet_Node;
-          Stream.Extra.Tail := Stream.Extra.Head;
- 
-       else
-          --  The list is not empty : link new node with tail
- 
-          Stream.Extra.Tail.Next := new Packet_Node;
-          Stream.Extra.Tail := Stream.Extra.Tail.Next;
- 
-       end if;
- 
-    exception
-       when others =>
-          D (D_Exception, "exception in Append_New_Node");
-          raise;
-    end Append_New_Node;
- 
-    ----------
-    -- Read --
-    ----------
- 
-    procedure Read
-      (Stream : in out Params_Stream_Type;
-       Item   : out Ada.Streams.Stream_Element_Array;
-       Last   : out Ada.Streams.Stream_Element_Offset)
-      renames System.RPC.Streams.Read;
- 
-    -----------
-    -- Write --
-    -----------
- 
-    procedure Write
-      (Stream : in out Params_Stream_Type;
-       Item   : Ada.Streams.Stream_Element_Array)
-      renames System.RPC.Streams.Write;
- 
-    -----------------------
-    -- Garbage_Collector --
-    -----------------------
- 
-    protected body Garbage_Collector is
- 
-       --------------------------------
-       -- Garbage_Collector.Allocate --
-       --------------------------------
- 
-       procedure Allocate (Item : out Anonymous_Task_Node_Access) is
-          New_Anonymous_Task_Node : Anonymous_Task_Node_Access;
-          Anonymous_Task          : Anonymous_Task_Access;
- 
-       begin
-          --  If the list is empty, allocate a new anonymous task
-          --  Otherwise, reuse the first queued anonymous task
- 
-          if Anonymous_List = null then
- 
-             --  Create a new anonymous task
-             --  Provide this new task with its id to allow it
-             --  to enqueue itself into the free anonymous task list
-             --  with the function Deallocate
- 
-             New_Anonymous_Task_Node := new Anonymous_Task_Node;
-             Anonymous_Task :=
-              new Anonymous_Task_Type (New_Anonymous_Task_Node);
-             New_Anonymous_Task_Node.all := (Anonymous_Task, null);
- 
-          else
-             --  Extract one task from the list
-             --  Set the Next field to null to avoid possible bugs
- 
-             New_Anonymous_Task_Node  := Anonymous_List;
-             Anonymous_List := Anonymous_List.Next;
-             New_Anonymous_Task_Node.Next := null;
- 
-          end if;
- 
-          --  Item is an out parameter
- 
-          Item := New_Anonymous_Task_Node;
- 
-       exception
-          when others =>
-             D (D_Exception, "exception in Allocate (Anonymous Task)");
-             raise;
-       end Allocate;
- 
-       ----------------------------------
-       -- Garbage_Collector.Deallocate --
-       ----------------------------------
- 
-       procedure Deallocate (Item : in out Anonymous_Task_Node_Access) is
-       begin
-          --  Enqueue the task in the free list
- 
-          Item.Next := Anonymous_List;
-          Anonymous_List := Item;
- 
-       exception
-          when others =>
-             D (D_Exception, "exception in Deallocate (Anonymous Task)");
-             raise;
-       end Deallocate;
- 
-    end Garbage_Collector;
- 
-    ------------
-    -- Do_RPC --
-    ------------
- 
-    procedure Do_RPC
-      (Partition  : Partition_ID;
-       Params     : access Params_Stream_Type;
-       Result     : access Params_Stream_Type)
-    is
-       Protocol   : Protocol_Access;
-       Request    : Request_Id_Type;
-       Header     : aliased Params_Stream_Type (Header_Size);
-       R_Length   : Ada.Streams.Stream_Element_Count;
- 
-    begin
-       --  Parameters order :
-       --       Opcode   (provided and used by garlic)
-       --   (1) Size     (provided by s-rpc and used by garlic)
-       --                (size of (2)+(3)+(4)+(5))
-       --   (2) Request  (provided by calling stub (resp receiving stub) and
-       --                 used by anonymous task (resp Do_RPC))
-       --                *** ZERO IF APC ***
-       --   (3) Res.len. (provided by calling stubs and used by anonymous task)
-       --                *** ZERO IF APC ***
-       --   (4) Receiver (provided by calling stubs and used by anonymous task)
-       --   (5) Params   (provided by calling stubs and used by anonymous task)
- 
-       --  The call is a remote call or a local call. A local call occurs
-       --  when the pragma All_Calls_Remote has been specified. Do_RPC is
-       --  called and the execution has to be performed in the PCS
- 
-       if Partition /= Garlic.Get_My_Partition_ID then
- 
-          --  Get a request id to be resumed when the reply arrives
- 
-          Dispatcher.New_Request (Request);
- 
-          --  Build header = request (2) + result.initial_size (3)
- 
-          D (D_Debug, "Do_RPC - Build header");
-          Streams.Allocate (Header);
-          Streams.Integer_Write_Attribute            --  (2)
-            (Header'Access, Request);
-          System.RPC.Streams.SEC_Write_Attribute     --  (3)
-            (Header'Access, Result.Initial_Size);
- 
-          --  Get a protocol method to communicate with the remote partition
-          --  and give the message size
- 
-          D (D_Communication,
-             "Do_RPC - Lookup for protocol to talk to partition" &
-             Partition_ID'Image (Partition));
-          Garlic.Initiate_Send
-            (Partition,
-             Streams.Get_Stream_Size (Header'Access) +
-             Streams.Get_Stream_Size (Params), --  (1)
-             Protocol,
-             Garlic.Remote_Call);
- 
-          --  Send the header by using the protocol method
- 
-          D (D_Communication, "Do_RPC - Send Header to partition" &
-             Partition_ID'Image (Partition));
-          Garlic.Send
-            (Protocol.all,
-             Partition,
-             Header'Access);                         --  (2) + (3)
- 
-          --  The header is deallocated
- 
-          Streams.Deallocate (Header);
- 
-          --  Send Params from Do_RPC
- 
-          D (D_Communication, "Do_RPC - Send Params to partition" &
-             Partition_ID'Image (Partition));
-          Garlic.Send
-            (Protocol.all,
-             Partition,
-             Params);                                --  (4) + (5)
- 
-          --  Let Garlic know we have nothing else to send
- 
-          Garlic.Complete_Send
-            (Protocol.all,
-             Partition);
-          D (D_Debug, "Do_RPC - Suspend");
- 
-          --  Wait for a reply and get the reply message length
- 
-          Dispatcher.Wait_On (Request) (R_Length);
-          D (D_Debug, "Do_RPC - Resume");
- 
-          declare
-             New_Result : aliased Params_Stream_Type (R_Length);
-          begin
-             --  Adjust the Result stream size right now to be able to load
-             --  the stream in one receive call. Create a temporary result
-             --  that will be substituted to Do_RPC one
- 
-             Streams.Allocate (New_Result);
- 
-             --  Receive the reply message from receiving stub
- 
-             D (D_Communication, "Do_RPC - Receive Result from partition" &
-             Partition_ID'Image (Partition));
-             Garlic.Receive
-               (Protocol.all,
-                Partition,
-                New_Result'Access);
- 
-             --  Let Garlic know we have nothing else to receive
- 
-             Garlic.Complete_Receive
-               (Protocol.all,
-                Partition);
- 
-             --  Update calling stub Result stream
- 
-             D (D_Debug, "Do_RPC - Reconstruct Result");
-             Streams.Deallocate (Result.all);
-             Result.Initial := New_Result.Initial;
-             Streams.Dump ("|||", Result.all);
- 
-          end;
- 
-       else
-          --  Do RPC locally and first wait for Partition_RPC_Receiver to be
-          --  set
- 
-          Partition_Receiver.Is_Set;
-          D (D_Debug, "Do_RPC - Locally");
-          Partition_RPC_Receiver.all (Params, Result);
- 
-       end if;
- 
-    exception
-       when others =>
-          D (D_Exception, "exception in Do_RPC");
-          raise;
-    end Do_RPC;
- 
-    ------------
-    -- Do_APC --
-    ------------
- 
-    procedure Do_APC
-      (Partition  : Partition_ID;
-       Params     : access Params_Stream_Type)
-    is
-       Message_Id : Message_Id_Type := 0;
-       Protocol   : Protocol_Access;
-       Header     : aliased Params_Stream_Type (Header_Size);
- 
-    begin
-       --  For more information, see above
-       --  Request = 0 as we are not waiting for a reply message
-       --  Result length = 0 as we don't expect a result at all
- 
-       if Partition /= Garlic.Get_My_Partition_ID then
- 
-          --  Build header = request (2) + result.initial_size (3)
-          --  As we have an APC, the request id is null to indicate
-          --  to the receiving stub that we do not expect a reply
-          --  This comes from 0 = -0
- 
-          D (D_Debug, "Do_APC - Build Header");
-          Streams.Allocate (Header);
-          Streams.Integer_Write_Attribute
-            (Header'Access, Integer (Message_Id));
-          Streams.SEC_Write_Attribute
-            (Header'Access, 0);
- 
-          --  Get a protocol method to communicate with the remote partition
-          --  and give the message size
- 
-          D (D_Communication,
-             "Do_APC - Lookup for protocol to talk to partition" &
-             Partition_ID'Image (Partition));
-          Garlic.Initiate_Send
-            (Partition,
-             Streams.Get_Stream_Size (Header'Access) +
-             Streams.Get_Stream_Size (Params),
-             Protocol,
-             Garlic.Remote_Call);
- 
-          --  Send the header by using the protocol method
- 
-          D (D_Communication, "Do_APC - Send Header to partition" &
-             Partition_ID'Image (Partition));
-          Garlic.Send
-            (Protocol.all,
-             Partition,
-             Header'Access);
- 
-          --  The header is deallocated
- 
-          Streams.Deallocate (Header);
- 
-          --  Send Params from Do_APC
- 
-          D (D_Communication, "Do_APC - Send Params to partition" &
-             Partition_ID'Image (Partition));
-          Garlic.Send
-            (Protocol.all,
-             Partition,
-             Params);
- 
-          --  Let Garlic know we have nothing else to send
- 
-          Garlic.Complete_Send
-            (Protocol.all,
-             Partition);
-       else
- 
-          declare
-             Result   : aliased Params_Stream_Type (0);
-          begin
-             --  Result is here a dummy parameter
-             --  No reason to deallocate as it is not allocated at all
- 
-             Partition_Receiver.Is_Set;
-             D (D_Debug, "Do_APC - Locally");
-             Partition_RPC_Receiver.all (Params, Result'Access);
- 
-          end;
- 
-       end if;
- 
-    exception
-       when others =>
-          D (D_Exception, "exception in Do_APC");
-          raise;
-    end Do_APC;
- 
-    ----------------------------
-    -- Establish_RPC_Receiver --
-    ----------------------------
- 
-    procedure Establish_RPC_Receiver
-      (Partition : Partition_ID;
-       Receiver  : RPC_Receiver)
-    is
-    begin
-       --  Set Partition_RPC_Receiver and allow RPC mechanism
- 
-       Partition_RPC_Receiver := Receiver;
-       Partition_Receiver.Set;
-       D (D_Elaborate, "Partition_Receiver is set");
- 
-    exception
-       when others =>
-          D (D_Exception, "exception in Establish_RPC_Receiver");
-          raise;
-    end Establish_RPC_Receiver;
- 
-    ----------------
-    -- Dispatcher --
-    ----------------
- 
-    task body Dispatcher is
-       Last_Request : Request_Id_Type := Request_Id_Type'First;
-       Current_Rqst : Request_Id_Type := Request_Id_Type'First;
-       Current_Size : Ada.Streams.Stream_Element_Count;
- 
-    begin
-       loop
-          --  Three services:
- 
-          --    New_Request to get an entry in Dispatcher table
- 
-          --    Wait_On for Do_RPC calls
- 
-          --    Wake_Up called by environment task when a Do_RPC receives
-          --    the result of its remote call
- 
-          select
-             accept New_Request (Request : out Request_Id_Type) do
-                Request := Last_Request;
- 
-                --  << TODO >>
-                --  ??? Availability check
- 
-                if Last_Request = Request_Id_Type'Last then
-                   Last_Request := Request_Id_Type'First;
-                else
-                   Last_Request := Last_Request + 1;
-                end if;
- 
-             end New_Request;
- 
-          or
-             accept Wake_Up
-               (Request : Request_Id_Type;
-                Length  : Ada.Streams.Stream_Element_Count)
-             do
-                --  The environment reads the header and has been notified
-                --  of the reply id and the size of the result message
- 
-                Current_Rqst := Request;
-                Current_Size := Length;
- 
-             end Wake_Up;
- 
-             --  << TODO >>
-             --  ??? Must be select with delay for aborted tasks
- 
-             select
- 
-                accept Wait_On (Current_Rqst)
-                  (Length  : out Ada.Streams.Stream_Element_Count)
-                do
-                   Length := Current_Size;
-                end Wait_On;
- 
-             or
-                --  To free the Dispatcher when a task is aborted
- 
-                delay 1.0;
- 
-             end select;
- 
-          or
-             terminate;
-          end select;
- 
-       end loop;
- 
-    exception
-       when others =>
-          D (D_Exception, "exception in Dispatcher body");
-          raise;
-    end Dispatcher;
- 
-    -------------------------
-    -- Anonymous_Task_Type --
-    -------------------------
- 
-    task body Anonymous_Task_Type is
-       Whoami       : Anonymous_Task_Node_Access := Self;
-       C_Message_Id : Message_Id_Type;                  --  Current Message Id
-       C_Partition  : Partition_ID;                     --  Current Partition
-       Params_S     : Ada.Streams.Stream_Element_Count; --  Params message size
-       Result_S     : Ada.Streams.Stream_Element_Count; --  Result message size
-       C_Protocol   : Protocol_Access;                  --  Current Protocol
- 
-    begin
-       loop
-          --  Get a new RPC to execute
- 
-          select
-             accept Start
-               (Message_Id   : Message_Id_Type;
-                Partition    : Partition_ID;
-                Params_Size  : Ada.Streams.Stream_Element_Count;
-                Result_Size  : Ada.Streams.Stream_Element_Count;
-                Protocol     : Protocol_Access)
-             do
-                C_Message_Id := Message_Id;
-                C_Partition  := Partition;
-                Params_S     := Params_Size;
-                Result_S     := Result_Size;
-                C_Protocol   := Protocol;
-             end Start;
-          or
-             terminate;
-          end select;
- 
-          declare
-             Params : aliased Params_Stream_Type (Params_S);
-             Result : aliased Params_Stream_Type (Result_S);
-             Header : aliased Params_Stream_Type (Header_Size);
- 
-          begin
-             --  We reconstruct all the client context : Params and Result
-             --  with the SAME size, then we receive Params from calling stub
- 
-             D (D_Communication,
-                "Anonymous Task - Receive Params from partition" &
-                Partition_ID'Image (C_Partition));
-             Garlic.Receive
-                (C_Protocol.all,
-                 C_Partition,
-                 Params'Access);
- 
-             --  Let Garlic know we don't receive anymore
- 
-             Garlic.Complete_Receive
-                (C_Protocol.all,
-                 C_Partition);
- 
-             --  Check that Partition_RPC_Receiver has been set
- 
-             Partition_Receiver.Is_Set;
- 
-             --  Do it locally
- 
-             D (D_Debug,
-                "Anonymous Task - Perform Partition_RPC_Receiver for request" &
-                Message_Id_Type'Image (C_Message_Id));
-             Partition_RPC_Receiver (Params'Access, Result'Access);
- 
-             --  If this was a RPC we send the result back
-             --  Otherwise, do nothing else than deallocation
- 
-             if C_Message_Id /= 0 then
- 
-                --  Build Header = -C_Message_Id + Result Size
-                --  Provide the request id to the env task of the calling
-                --  stub partition We get the real result stream size : the
-                --  calling stub (in Do_RPC) updates its size to this one
- 
-                D (D_Debug, "Anonymous Task - Build Header");
-                Streams.Allocate (Header);
-                Streams.Integer_Write_Attribute
-                  (Header'Access, Integer (-C_Message_Id));
-                Streams.SEC_Write_Attribute
-                  (Header'Access,
-                   Streams.Get_Stream_Size (Result'Access));
- 
-                --  Get a protocol method to communicate with the remote
-                --  partition and give the message size
- 
-                D (D_Communication,
-                   "Anonymous Task - Lookup for protocol talk to partition" &
-                   Partition_ID'Image (C_Partition));
-                Garlic.Initiate_Send
-                  (C_Partition,
-                   Streams.Get_Stream_Size (Header'Access) +
-                   Streams.Get_Stream_Size (Result'Access),
-                   C_Protocol,
-                   Garlic.Remote_Call);
- 
-                --  Send the header by using the protocol method
- 
-                D (D_Communication,
-                   "Anonymous Task - Send Header to partition" &
-                   Partition_ID'Image (C_Partition));
-                Garlic.Send
-                  (C_Protocol.all,
-                   C_Partition,
-                   Header'Access);
- 
-                --  Send Result toDo_RPC
- 
-                D (D_Communication,
-                   "Anonymous Task - Send Result to partition" &
-                   Partition_ID'Image (C_Partition));
-                Garlic.Send
-                  (C_Protocol.all,
-                   C_Partition,
-                   Result'Access);
- 
-                --  Let Garlic know we don't send anymore
- 
-                Garlic.Complete_Send
-                  (C_Protocol.all,
-                   C_Partition);
-                Streams.Deallocate (Header);
-             end if;
- 
-             Streams.Deallocate (Params);
-             Streams.Deallocate (Result);
-          end;
- 
-          --  Enqueue into the anonymous task free list : become inactive
- 
-          Garbage_Collector.Deallocate (Whoami);
- 
-       end loop;
- 
-    exception
-       when others =>
-          D (D_Exception, "exception in Anonymous_Task_Type body");
-          raise;
-    end Anonymous_Task_Type;
- 
-    -----------------
-    -- Environment --
-    -----------------
- 
-    task body Environnement is
-       Partition    : Partition_ID;
-       Message_Size : Ada.Streams.Stream_Element_Count;
-       Result_Size  : Ada.Streams.Stream_Element_Count;
-       Message_Id   : Message_Id_Type;
-       Header       : aliased Params_Stream_Type (Header_Size);
-       Protocol     : Protocol_Access;
-       Anonymous    : Anonymous_Task_Node_Access;
- 
-    begin
-       --  Wait the Partition_RPC_Receiver to be set
- 
-       accept Start;
-       D (D_Elaborate, "Environment task elaborated");
- 
-       loop
-          --  We receive first a fixed size message : the header
-          --  Header = Message Id + Message Size
- 
-          Streams.Allocate (Header);
- 
-          --  Garlic provides the size of the received message and the
-          --  protocol to use to communicate with the calling partition
- 
-          Garlic.Initiate_Receive
-            (Partition,
-             Message_Size,
-             Protocol,
-             Garlic.Remote_Call);
-          D (D_Communication,
-             "Environment task - Receive protocol to talk to active partition" &
-             Partition_ID'Image (Partition));
- 
-          --  Extract the header to route the message either to
-          --  an anonymous task (Message Id > 0 <=> Request Id)
-          --  or to a waiting task (Message Id < 0 <=> Reply Id)
- 
-          D (D_Communication,
-             "Environment task - Receive Header from partition" &
-             Partition_ID'Image (Partition));
-          Garlic.Receive
-            (Protocol.all,
-             Partition,
-             Header'Access);
- 
-          --  Evaluate the remaining size of the message
- 
-          Message_Size := Message_Size -
-             Streams.Get_Stream_Size (Header'Access);
- 
-          --  Extract from header : message id and message size
- 
-          Streams.Integer_Read_Attribute (Header'Access, Message_Id);
-          Streams.SEC_Read_Attribute (Header'Access, Result_Size);
- 
-          if Streams.Get_Stream_Size (Header'Access) /= 0 then
- 
-             --  If there are stream elements left in the header ???
- 
-             D (D_Exception, "Header is not empty");
-             raise Program_Error;
- 
-          end if;
- 
-          if Message_Id < 0 then
- 
-             --  The message was sent by a receiving stub : wake up the
-             --  calling task - We have a reply there
- 
-             D (D_Debug, "Environment Task - Receive Reply from partition" &
-                Partition_ID'Image (Partition));
-             Dispatcher.Wake_Up (-Message_Id, Result_Size);
- 
-          else
-             --  The message was send by a calling stub : get an anonymous
-             --  task to perform the job
- 
-             D (D_Debug, "Environment Task - Receive Request from partition" &
-                Partition_ID'Image (Partition));
-             Garbage_Collector.Allocate (Anonymous);
- 
-             --  We subtracted the size of the header from the size of the
-             --  global message in order to provide immediately Params size
- 
-             Anonymous.Element.Start
-               (Message_Id,
-                Partition,
-                Message_Size,
-                Result_Size,
-                Protocol);
- 
-          end if;
- 
-          --  Deallocate header : unnecessary - WARNING
- 
-          Streams.Deallocate (Header);
- 
-       end loop;
- 
-    exception
-       when others =>
-          D (D_Exception, "exception in Environment");
-          raise;
-    end Environnement;
- 
- begin
-    --  Set debugging information
- 
-    Debugging.Set_Environment_Variable ("RPC");
-    Debugging.Set_Debugging_Name ("D", D_Debug);
-    Debugging.Set_Debugging_Name ("E", D_Exception);
-    Debugging.Set_Debugging_Name ("C", D_Communication);
-    Debugging.Set_Debugging_Name ("Z", D_Elaborate);
-    D (D_Elaborate, "To be elaborated");
- 
-    --  When this body is elaborated we should ensure that RCI name server
-    --  has been already elaborated : this means that Establish_RPC_Receiver
-    --  has already been called and that Partition_RPC_Receiver is set
- 
-    Environnement.Start;
-    D (D_Elaborate, "ELABORATED");
- 
- end System.RPC;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/ChangeLog gcc-8.1.0/gcc/ada/ChangeLog
*** gcc-7.3.0/gcc/ada/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-8.1.0/gcc/ada/ChangeLog	Wed May  2 08:07:22 2018
***************
*** 1,3007 ****
! 2018-01-25  Release Manager
! 
! 	* GCC 7.3.0 released.
! 
! 2017-12-14  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* gcc-interface/decl.c (gnat_to_gnu_field): Do not set the alignment
! 	of the enclosing record type if it is not already set.
! 
! 2017-12-13  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* gcc-interface/trans.c (Subprogram_Body_to_gnu): Initialize locus.
! 
! 2017-12-13  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* gcc-interface/trans.c (process_freeze_entity): Be prepared for a
! 	package without body.
! 
! 2017-12-13  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* gcc-interface/decl.c (gnat_to_gnu_entity): Robustify test for types
! 	descendant of System.Address.
! 	(gnat_to_gnu_subprog_type): Likewise.
! 
! 2017-12-04  Sebastian Huber  <sebastian.huber@embedded-brains.de>
! 
! 	* gcc-interface/Makefile.in (RTEMS): Use s-osprim.adb.
! 	* s-osprim-rtems.adb: New file.
! 	* s-osinte-rtems.adb (pthread_cond_t): Fix alignment.
! 	(pthread_mutexattr_t): Likewise.
! 	(pthread_rwlockattr_t): Likewise.
! 	(pthread_rwlock_t): Likewise.
! 	(time_t): Use 64-bit integer.
! 
! 2017-12-01  Sebastian Huber  <sebastian.huber@embedded-brains.de>
! 
! 	* s-osinte-rtems.ads (pthread_cond_t): Use correct size and
! 	alignment.
! 	(pthread_mutex_t): Likewise.
! 	(pthread_rwlock_t): Likewise.
! 
! 2017-11-10  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* gcc-interface/utils.c (convert) <RECORD_TYPE>: Add comment and do
! 	not fall through to the next case.
! 	<ARRAY_TYPE>: Deal specially with a dereference from another array
! 	type with the same element type.
! 
! 2017-10-21  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* gcc-interface/Makefile.in: Remove bogus settings for VxWorks.
  
! 2017-10-05  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR ada/82393
! 	* mingw32.h (_O_U8TEXT, _O_U16TEXT, _O_WTEXT): Delete.
! 	* sysdep.c (__gnat_set_mode ): Use DJGPP version for Cygwin.
  
! 2017-09-15  Martin Liska  <mliska@suse.cz>
  
! 	Backport from mainline
! 	2017-08-29  Martin Liska  <mliska@suse.cz>
  
! 	PR other/39851
! 	* gcc-interface/trans.c (Pragma_to_gnu): Set argument to NULL.
  
! 2017-09-09  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* gcc-interface/decl.c (promote_object_alignment): New function taken
! 	from...
! 	(gnat_to_gnu_entity) <E_Variable>: ...here.  Invoke it.
! 	(gnat_to_gnu_field): If the field is Atomic or VFA, invoke it and
! 	create a padding type on success before doing the atomic check.
  
! 2017-09-09  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Apply the
! 	promotion to static memory earlier in the processing.
  
! 2017-09-09  Eric Botcazou  <ebotcazou@adacore.com>
  
- 	* sem_util.ads (Set_Rep_Info): New inline procedure.
- 	* sem_util.adb (Set_Rep_Info): Implement it.
- 	* sem_ch3.adb (Process_Subtype): If the case of a constraint present,
- 	always copy the representation aspects onto the subtype.
- 	* gcc-interface/decl.c (gnat_to_gnu_entity): Only set the TYPE_ALIGN_OK
- 	and TYPE_BY_REFERENCE_P flags on types after various promotions.
  	* gcc-interface/trans.c (node_has_volatile_full_access) <N_Identifier>:
! 	Consider all kinds of entities.
! 
! 2017-09-05  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	PR ada/62235
! 	* gcc-interface/decl.c (gnat_to_gnu_entity): Skip regular processing
! 	for Itypes that are E_Record_Subtype with a cloned subtype.
! 	<E_Record_Subtype>: Use the DECL of the cloned type directly, if any.
! 
! 2017-09-05  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* gcc-interface/utils.c (unchecked_convert): When the result type is a
! 	non-biased integral type with size 0, set the result to 0 directly.
! 
! 2017-09-05  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* gcc-interface/trans.c (Call_to_gnu): If this is a function call and
! 	there is no target, do not create a temporary for the return value for
! 	an allocator either.
! 
! 2017-09-05  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* gcc-interface/trans.c (pos_to_constructor): Skip conversions to an
! 	unconstrained array type.
! 
! 2017-08-14  Release Manager
! 
! 	* GCC 7.2.0 released.
! 
! 2017-07-15  John Paul Adrian Glaubitz  <glaubitz@physik.fu-berlin.de>
! 
! 	PR ada/81446
! 	* system-linux-m68k.ads: Add pragma No_Elaboration_Code_All.
! 	(Backend_Overflow_Checks): Set to True.
! 
! 2017-06-15  Nicolas Boulenguez  <nicolas.boulenguez@free.fr>
! 
! 	PR ada/81105
! 	* gcc-interface/Makefile.in (x86 kfreebsd): Adjust system.ads setting.
! 	(i[3456]86-pc-gnu): Likewise.
! 	(x86_64 kfreebsd): Likewise.
! 
! 2017-06-12  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	PR ada/81070
! 	* s-interr-hwint.adb: Reinstate.
! 	* gcc-interface/Makefile.in (RTEMS): Use it again.
! 
! 2017-06-12  Sebastian Huber  <sebastian.huber@embedded-brains.de>
! 
! 	Backport from mainline
! 	2017-06-07  Sebastian Huber  <sebastian.huber@embedded-brains.de>
! 
! 	* Makefile.in (rtems): Use TLS implementation for s-tpopsp.adb.
! 	* s-tpopsp-rtems.adb: Delete.
! 
! 2017-05-22  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* gcc-interface/decl.c (gnat_to_gnu_entity): Skip regular processing
! 	for Itypes that are E_Access_Subtype.
! 	<E_Access_Subtype>: Use the DECL of the base type directly.
! 
! 2017-05-17  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	PR ada/80784
! 	Backport from mainline
! 
! 	2017-05-02  Ed Schonberg  <schonberg@adacore.com>
! 
! 	* exp_ch3.adb (Freeze_Type): Do not generate an invariant
! 	procedure body for a local (sub)type declaration within a
! 	predicate function. Invariant checks do not apply to these, and
! 	the expansion of the procedure will happen in the wrong scope,
! 	leading to misplaced freeze nodes.
! 
! 2017-05-12  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* system-linux-arm.ads (Memory_Size): Use Long_Integer'Size
! 	instead of Word_Size.
! 
! 	Revert
! 	2017-03-28  Andreas Schwab  <schwab@suse.de>
! 
! 	PR ada/80117
! 	* system-linux-aarch64-ilp32.ads: New file.
! 	* gcc-interface/Makefile.in (LIBGNAT_TARGET_PAIRS_COMMON): Rename
! 	from LIBGNAT_TARGET_PAIRS.
! 	(LIBGNAT_TARGET_PAIRS_32, LIBGNAT_TARGET_PAIRS_64): Define.
! 	(LIBGNAT_TARGET_PAIRS): Use LIBGNAT_TARGET_PAIRS_COMMON, and
! 	LIBGNAT_TARGET_PAIRS_64 or LIBGNAT_TARGET_PAIRS_32 for -mabi=lp64
! 	or -mabi=ilp32, resp.
! 
! 2017-05-10  H.J. Lu  <hongjiu.lu@intel.com>
! 
! 	Back port from mainline
! 	2017-05-10  H.J. Lu  <hongjiu.lu@intel.com>
! 
! 	PR ada/80626
! 	* system-linux-x86.ads (Memory_Size): Use Long_Integer'Size
! 	instead of Word_Size.
! 
! 2017-05-02  Release Manager
! 
! 	* GCC 7.1.0 released.
! 
! 2017-04-04  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
! 
! 	* system-linux-s390.ads: Use Long_Integer'Size to define
! 	Memory_Size.
! 
! 2017-04-04  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* sem_ch3.adb (Build_Derived_Record_Type): Fix long line.
! 
! 2017-04-03  Jonathan Wakely  <jwakely@redhat.com>
! 
! 	* doc/gnat_ugn/gnat_and_program_execution.rst: Fix typo.
! 	* g-socket.adb (To_Host_Entry): Fix typo in comment.
! 	* gnat_ugn.texi: Fix typo.
! 	* raise.c (_gnat_builtin_longjmp): Fix capitalization in comment.
! 	* s-stposu.adb (Allocate_Any_Controlled): Fix typo in comment.
! 	* sem_ch3.adb (Build_Derived_Record_Type): Likewise.
! 	* sem_util.adb (Mark_Coextensions): Likewise.
! 	* sem_util.ads (Available_Full_View_Of_Component): Likewise.
! 
! 2017-03-28  Andreas Schwab  <schwab@suse.de>
! 
! 	PR ada/80117
! 	* system-linux-aarch64-ilp32.ads: New file.
! 	* gcc-interface/Makefile.in (LIBGNAT_TARGET_PAIRS_COMMON): Rename
! 	from LIBGNAT_TARGET_PAIRS.
! 	(LIBGNAT_TARGET_PAIRS_32, LIBGNAT_TARGET_PAIRS_64): Define.
! 	(LIBGNAT_TARGET_PAIRS): Use LIBGNAT_TARGET_PAIRS_COMMON, and
! 	LIBGNAT_TARGET_PAIRS_64 or LIBGNAT_TARGET_PAIRS_32 for -mabi=lp64
! 	or -mabi=ilp32, resp.
! 
! 2017-03-14  James Cowgill  <James.Cowgill@imgtec.com>
! 
! 	* s-osinte-linux.ads (struct_sigaction): Use correct type for sa_flags.
! 
! 2017-03-08  Thanassis Tsiodras  <ttsiodras@gmail.com>
! 
! 	PR ada/79903
! 	* socket.c (__gnat_gethostbyaddr): Add missing test for __rtems__.
! 
! 2017-03-08  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	PR ada/79945
! 	* system-linux-ppc.ads (Default_Bit_Order): Use Standard's setting.
! 
! 	* system-linux-arm.ads (Default_Bit_Order): Likewise.
! 	* system-linux-mips.ads (Default_Bit_Order): Likewise.
! 	* system-linux-armeb.ads: Delete.
! 	* system-linux-mipsel.ads: Likewise.
! 	* gcc-interface/Makefile.in (MIPS/Linux): Adjust.
! 	(ARM/Linux): Likewise.
! 
! 2017-02-24  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR c/79677
! 	* gcc-interface/misc.c (gnat_handle_option): Pass true to
! 	handle_generated_option GENERATED_P.
! 
! 2017-02-24  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* gcc-interface/decl.c (gnat_to_gnu_field): Do not remove the wrapper
! 	around a justified modular type if it doesn't have the same scalar
! 	storage order as the enclosing record type.
! 
! 2017-02-24  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* gcc-interface/trans.c (gnat_to_gnu): Do not apply special handling
! 	of boolean rvalues to function calls.
! 
! 2017-02-24  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* gcc-interface/utils.c (fold_bit_position): New function.
! 	(rest_of_record_type_compilation): Call it instead of bit_position to
! 	compute the field position and remove the call to remove_conversions.
! 	(compute_related_constant): Factor out the multiplication in both
! 	operands, if any, and streamline the final test.
! 
! 2017-02-24  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* gcc-interface/trans.c (return_value_ok_for_nrv_p): Add sanity check.
! 
! 2017-02-24  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* gcc-interface/decl.c: Include demangle.h.
! 	(is_cplusplus_method): Return again true for a primitive operation
! 	only if it is dispatching.  For a subprogram with an interface name,
! 	call the demangler to get the number of C++ parameters and compare it
! 	with the number of Ada parameters.
! 
! 2017-02-24  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* gcc-interface/trans.c (Handled_Sequence_Of_Statements_to_gnu): If
! 	there is no end label, put the location of the At_End procedure on
! 	the call to the procedure.
! 
! 2017-02-24  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* gcc-interface/misc.c (gnat_type_max_size): Try to return a meaningful
! 	value for array types with TYPE_INDEX_TYPE set on their domain type.
! 	* gcc-interface/utils.c (max_size): For operations and expressions, do
! 	not build a new node if the operands have not changed or are missing.
! 
! 2017-02-24  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* gcc-interface/utils.c (max_size) <tcc_expression>: Flip the second
! 	argument when recursing on TRUTH_NOT_EXPR.
! 
! 2017-02-12  John Marino  <gnugcc@marino.st>
! 
! 	* system-freebsd-x86.ads: Rename into...
! 	* system-freebsd.ads: ...this.
! 	(Default_Bit_Order): Define using Standard'Default_Bit_Order.
! 	* gcc-interface/Makefile.in: Support aarch64-freebsd.
! 	(x86-64/FreeBSD): Adjust to above renaming.
! 	(i386/FreeBSD): Likewise.
! 
! 2017-02-09  Gerald Pfeifer  <gerald@pfeifer.com>
! 
! 	* comperr.adb: Update FSF bug reporting URL.
! 
! 2017-02-01  Eric Botcazou  <ebotcazou@adacore.com>
!             Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR ada/79309
! 	* adaint.c (__gnat_killprocesstree): Fix broken string handling.
! 
! 2017-01-25  Maxim Ostapenko  <m.ostapenko@samsung.com>
! 
! 	PR lto/79061
! 	* gcc-interface/utils.c (get_global_context): Pass main_input_filename
! 	to build_translation_unit_decl.
! 
! 2017-01-23  Javier Miranda  <miranda@adacore.com>
! 
! 	* sem_util.adb (New_Copy_Tree): Code cleanup:
! 	removal of the internal map (ie. variable Actual_Map, its
! 	associated local variables, and all the code handling it).
! 	* sem_ch9.adb (Analyze_Task_Type_Declaration): in GNATprove mode
! 	force loading of the System package when processing a task type.
! 	(Analyze_Protected_Type_Declaration): in GNATprove mode force
! 	loading of the System package when processing a protected type.
! 	* sem_ch10.adb (Analyze_Compilation_Unit): in GNATprove mode
! 	force loading of the System package when processing compilation
! 	unit with a main-like subprogram.
! 	* frontend.adb (Frontend): remove forced loading of the System
! 	package.
! 
! 2017-01-23  Ed Schonberg  <schonberg@adacore.com>
! 
! 	* sem_prag.adb (Default_Initial_Condition): If the desired type
! 	declaration is a derived type declaration with discriminants,
! 	it is rewritten as a private type declaration.
! 	* sem_ch13.adb (Replace_Type_References_Generic,
! 	Visible_Component): A discriminated private type with descriminnts
! 	has components that must be rewritten as selected components
! 	if they appear as identifiers in an aspect expression such as
! 	a Default_Initial_Condition.
! 	* sem_util.adb (Defining_Entity): support N_Iterator_Specification
! 	nodes.
! 
! 2017-01-23  Hristian Kirtchev  <kirtchev@adacore.com>
! 
! 	* ghost.ads, ghost.adb (Is_Ignored_Ghost_Unit): New routine.
! 	* gnat1drv.adb Generate an empty object file for an ignored
! 	Ghost compilation unit.
! 	* inline.adb, sem_util.adb, sem_ch4.adb: Minor reformatting.
! 
! 2017-01-23  Yannick Moy  <moy@adacore.com>
! 
! 	* sem_ch4.adb (Analyze_Indexed_Component_Form):
! 	Adapt to inlined prefix with string literal subtype.
! 	* inline.adb (Expand_Inlined_Call): Keep unchecked
! 	conversion inside inlined call when formal type is constrained.
! 
! 2017-01-23  Javier Miranda  <miranda@adacore.com>
! 
! 	* sem_util.adb (New_Copy_Tree): Code cleanup:
! 	removal of global variables. All the global variables, global
! 	functions and tables of this subprogram are now declared locally.
! 
! 2017-01-23  Gary Dismukes  <dismukes@adacore.com>
! 
! 	* exp_strm.ads: Minor reformatting and typo fixes.
! 
! 2017-01-23  Hristian Kirtchev  <kirtchev@adacore.com>
! 
! 	* sem_aggr.adb, par_sco.adb, exp_util.adb, sem.adb, sem_ch4.adb,
! 	exp_aggr.adb: Minor reformatting.
! 	* g-diopit.adb: minor grammar/punctuation fix in comment.
! 	* g-byorma.ads: minor fix of unbalanced parens in comment.
! 
! 2017-01-23  Hristian Kirtchev  <kirtchev@adacore.com>
! 
! 	* par.adb: Update the documentation of component Labl.
! 	* par-ch6.adb (P_Return_Statement): Set the expected label of
! 	an extended return statement to Error.
! 
! 2017-01-23  Tristan Gingold  <gingold@adacore.com>
! 
! 	* s-boustr.ads, s-boustr.adb (Is_Full): New function.
! 
! 2017-01-23  Ed Schonberg  <schonberg@adacore.com>
! 
! 	* expander.adb: Handle N_Delta_Aggregate.
! 
! 2017-01-23  Javier Miranda  <miranda@adacore.com>
! 
! 	* exp_ch6.adb (Expand_Call): Improve the code that
! 	checks if some formal of the called subprogram is a class-wide
! 	interface, to handle subtypes of class-wide interfaces.
! 
! 2017-01-23  Javier Miranda  <miranda@adacore.com>
! 
! 	* checks.adb (Apply_Parameter_Aliasing_Checks):
! 	Remove side effects of the actuals before generating the overlap
! 	check.
! 
! 2017-01-23  Justin Squirek  <squirek@adacore.com>
! 
! 	* exp_strm.ads, exp_strm.ads
! 	(Build_Record_Or_Elementary_Input_Function): Add an extra parameter so
! 	as to avoid getting the underlying type by default.
! 	* exp_attr.adb (Expand_N_Attribute_Reference): Remove use of
! 	underlying type in the Iiput and output attribute cases when
! 	building their respective functions.
! 
! 2017-01-23  Gary Dismukes  <dismukes@adacore.com>
! 
! 	* scng.adb: Minor reformatting of error message.
! 
! 2017-01-23  Ed Schonberg  <schonberg@adacore.com>
! 
! 	* sem_ch6.adb (Analyze_Expression_Function): Do not attempt
! 	to freeze the return type of an expression funxtion that is a
! 	completion, if the type is a limited view and the non-limited
! 	view is available.
! 
! 2017-01-23  Ed Schonberg  <schonberg@adacore.com>
! 
! 	* par-ch4.adb (P_Aggregate_Or_Parent_Expr): Recognize delta
! 	aggregate construct.
! 	(P_Record_Or_Array_Component_Association): An array aggregate
! 	can start with an Iterated_Component_Association.
! 	* scng.adb: Modify error message on improper use of @ in earlier
! 	versions of the language.
! 	* sinfo.ads: New node kind N_Delta_Aggregate.
! 	* sinfo.adb: An N_Delta_Aggregate has component associations and
! 	an expression.
! 	* sem_res.adb (Resolve): Call Resolve_Delta_Aggregate.
! 	* sem_aggr.ads, sem_aggr.adb (Resolve_Iterated_Component_Association):
! 	Create a new index for each one of the choices in the association,
! 	to prevent spurious homonyms in the scope.
! 	(Resolve_Delta_Aggregate): New.
! 	* sem.adb: An N_Delta_Aggregate is analyzed like an aggregate.
! 	* exp_util.adb (Insert_Actions): Take into account
! 	N_Delta_Aggregate.
! 	* exp_aggr.ads: New procedure Expand_N_Delta_Aggregate.
! 	* exp_aggr.adb: New procedure Expand_N_Delta_Aggregate,
! 	and local procedures Expand_Delta_Array_Aggregate and
! 	expand_Delta_Record_Aggregate.
! 	* sprint.adb: Handle N_Delta_Aggregate.
! 
! 2017-01-23  Hristian Kirtchev  <kirtchev@adacore.com>
! 
! 	* exp_ch11.adb (Expand_N_Exception_Declaration): Generate an
! 	empty name when the exception declaration is subject to pragma
! 	Discard_Names.
! 	(Null_String): New routine.
! 
! 2017-01-23  Hristian Kirtchev  <kirtchev@adacore.com>
! 
! 	* par-ch9.adb (P_Protected_Definition): Parse
! 	any optional and potentially illegal pragmas which appear in
! 	a protected operation declaration list.
! 	(P_Task_Items): Parse
! 	any optional and potentially illegal pragmas which appear in a
! 	task item list.
! 
! 2017-01-23  Pascal Obry  <obry@adacore.com>
! 
! 	* s-taprop-mingw.adb (Enter_Task): Initialize the Thread handle which
! 	is needed when a foreign thread call a Win32 API using a thread handle
! 	like GetThreadTimes() for example.
! 
! 2017-01-23  Hristian Kirtchev  <kirtchev@adacore.com>
! 
! 	* sem_ch13.adb (Analyze_Attribute_Definition_Clause): Do not
! 	allow an 'Address clause to be specified on a prefix of a
! 	class-wide type.
! 
! 2017-01-23  Hristian Kirtchev  <kirtchev@adacore.com>
! 
! 	* checks.adb (Insert_Valid_Check): Ensure that the prefix of
! 	attribute 'Valid is a renaming of the original expression when
! 	the expression denotes a name. For all other kinds of expression,
! 	use a constant to capture the value.
! 	* exp_util.adb (Is_Name_Reference): Moved to Sem_Util.
! 	* sem_util.ads, sem_util.adb (Is_Name_Reference): Moved from Exp_Util.
! 
! 2017-01-23  Justin Squirek  <squirek@adacore.com>
! 
! 	* sem_eval.adb (Eval_Integer_Literal): Add special
! 	case to avoid optimizing out check if the literal appears in
! 	an if-expression.
! 
! 2017-01-23  Hristian Kirtchev  <kirtchev@adacore.com>
! 
! 	* sem_ch13.adb (Analyze_Attribute_Definition_Clause): Do not
! 	allow an 'Address clause to be specified on a prefix of a
! 	class-wide type.
! 
! 2017-01-23  Hristian Kirtchev  <kirtchev@adacore.com>
! 
! 	* checks.adb (Insert_Valid_Check): Ensure that the prefix of
! 	attribute 'Valid is a renaming of the original expression when
! 	the expression denotes a name. For all other kinds of expression,
! 	use a constant to capture the value.
! 	* exp_util.adb (Is_Name_Reference): Moved to Sem_Util.
! 	* sem_util.ads, sem_util.adb (Is_Name_Reference): Moved from Exp_Util.
! 
! 2017-01-23  Justin Squirek  <squirek@adacore.com>
! 
! 	* sem_eval.adb (Eval_Integer_Literal): Add special
! 	case to avoid optimizing out check if the literal appears in
! 	an if-expression.
! 
! 2017-01-23  Ed Schonberg  <schonberg@adacore.com>
! 
! 	* sem_ch4.adb (Try_Primitive_Operations,
! 	Is_Valid_First_Argument_Of): argument is valid if it is a derived
! 	type with unknown discriminants that matches its underlying
! 	record view.
! 	* exp_util.adb (Expand_Subtype_From_Expr): Do not expand
! 	expression if its type is derived from a limited type with
! 	unknown discriminants, because the expansion (which is a call)
! 	must be expanded in the enclosing context to add the proper build-
! 	in-place parameters to the call.
! 	* lib.ads, exp_ch9.adb: Minor fixes in comments.
! 
! 2017-01-23  Yannick Moy  <moy@adacore.com>
! 
! 	* frontend.adb (Frontend): Do not load runtime
! 	unit for GNATprove when parsing failed.
! 	* exp_ch9.adb: minor removal of extra whitespace
! 	* exp_ch6.adb: minor typo in comment
! 	* sem_util.adb: Code cleanup.
! 	* exp_ch9.ads, par-ch2.adb: minor style fixes in whitespace and comment
! 	* a-ngcefu.adb: minor style fix in whitespace
! 
! 2017-01-23  Thomas Quinot  <quinot@adacore.com>
! 
! 	* scos.ads: Document usage of 'd' as default SCO kind for
! 	declarations.
! 	* par_sco.adb (Traverse_Declarations_Or_Statements.
! 	Traverse_Degenerate_Subprogram): New supporting routine for expression
! 	functions and null procedures.
! 	(Traverse_Declarations_Or_Statements.Traverse_One): Add
! 	N_Expression_Function to the subprogram case; add required
! 	support for null procedures and expression functions.
! 
! 2017-01-23  Bob Duff  <duff@adacore.com>
! 
! 	* namet.ads (Bounded_String): Decrease the size of type
! 	Bounded_String to avoid running out of stack space.
! 	* namet.ads (Append): Don't ignore buffer overflow; raise
! 	Program_Error instead.
! 
! 2017-01-23  Hristian Kirtchev  <kirtchev@adacore.com>
! 
! 	* exp_ch5.adb, freeze.adb, par-ch4.adb, scng.adb, sem_ch13.adb,
! 	sem_ch3.adb, sem_ch5.adb, sem_ch5.ads, sem_util.adb, sinfo.ads: Minor
! 	reformatting.
! 	* exp_ch9.adb: minor style fix in comment.
! 
! 2017-01-23  Ed Schonberg  <schonberg@adacore.com>
! 
! 	* sem_ch4.adb (Analyze_Allocator): Handle properly a type derived
! 	for a limited record extension with unknown discriminants whose
! 	full view has no discriminants.
! 
! 2017-01-23  Yannick Moy  <moy@adacore.com>
! 
! 	* exp_spark.adb: Alphabetize with clauses.
! 
! 2017-01-23  Yannick Moy  <moy@adacore.com>
! 
! 	* sem_util.adb (Has_Enabled_Property): Treat
! 	protected objects and variables differently from other variables.
! 
! 2017-01-23  Thomas Quinot  <quinot@adacore.com>
! 
! 	* sem_ch13.adb (Adjust_Record_For_Reverse_Bit_Order):
! 	Split original Ada 95 part off into new subprogram
! 	below. Call that subprogram (instead of proceeding with
! 	AI95-0133 behaviour) if debug switch -gnatd.p is in use.
! 	(Adjust_Record_For_Reverse_Bit_Order_Ada_95): ... new subprogram
! 	* debug.adb Document new switch -gnatd.p
! 	* freeze.adb (Freeze_Entity.Freeze_Record_Type): Do not adjust
! 	record for reverse bit order if an error has already been posted
! 	on the record type.  This avoids generating extraneous "info:"
! 	messages for illegal code.
! 
! 2017-01-23  Justin Squirek  <squirek@adacore.com>
! 
! 	* sem_ch3.adb (Analyze_Declarations): Correct comments
! 	* freeze.adb (Find_Constant): Add detection of deferred constants
! 	so they are not incorrectly flagged as premature.
! 
! 2017-01-23  Ed Schonberg  <schonberg@adacore.com>
! 
! 	* scans.ads: New token At_Sign. Remove '@' from list of illegal
! 	characters for future version of the language. '@' is legal name.
! 	* scng.ads, scng.adb (Scan):  Handle '@' appropriately.
! 	* scn.adb (Scan_Reserved_Identifier): An occurrence of '@'
! 	denotes a Target_Name.
! 	* par-ch4.adb (P_Name, P_Primary): Handle Target_Name.
! 	* sinfo.ads, sinfo.adb (N_Target_Name): New non-terminal node.
! 	(Has_Target_Names): New flag on N_Assignment_Statement, to
! 	indicate that RHS has occurrences of N_Target_Name.
! 	* sem.adb: Call Analyze_Target_Name.
! 	* sem_ch5.ads, sem_ch5.adb (Analyze_Target_Name): New subpogram.
! 	(urrent_LHS): Global variable that denotes LHS of assignment,
! 	used in the analysis of Target_Name nodes.
! 	* sem_res.adb (Resolve_Target_Name): New procedure.
! 	* exp_ch5.adb (Expand_Assign_With_Target_Names): (AI12-0125):
! 	N is an assignment statement whose RHS contains occurences of @
! 	that designate the value of the LHS of the assignment. If the
! 	LHS is side-effect free the target names can be replaced with
! 	a copy of the LHS; otherwise the semantics of the assignment
! 	is described in terms of a procedure with an in-out parameter,
! 	and expanded as such.
! 	(Expand_N_Assignment_Statement): Call
! 	Expand_Assign_With_Target_Names when needed.
! 	* exp_util.adb (Insert_Actions): Take into account N_Target_Name.
! 	* sprint.adb: Handle N_Target_Name.
! 
! 2017-01-23  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* checks.adb: Minor fix in comment.
! 
! 2017-01-23  Philippe Gil  <gil@adacore.com>
! 
! 	* g-debpoo.adb (Do_Report) remove freed chunks from chunks
! 	count in Sort = Memory_Usage or Allocations_Count
! 
! 2017-01-23  Justin Squirek  <squirek@adacore.com>
! 
! 	* sem_ch3.adb: Code cleanup.
! 
! 2017-01-23  Hristian Kirtchev  <kirtchev@adacore.com>
! 
! 	* sem_prag.adb (Analyze_Refined_Depends_In_Decl_Part): Move all global
! 	variables to the local variable section. Update the profile
! 	of various nested routine that previously had visibility
! 	of those globals. One the matching phase has completed,
! 	remove certain classes of clauses which are considered noise.
! 	(Check_Dependency_Clause): Properly detect a match between two
! 	'Result attributes. Update the various post-match cases to use
! 	Is_Already_Matched as this routine now automatically recognizes
! 	a previously matched 'Result attribute.
! 	(Is_Already_Matched): New routine.
! 	(Remove_Extra_Clauses): New routine.
! 	(Report_Extra_Clauses): Remove the detection of ... => null
! 	clauses as this is now done in Remove_Extra_Clauses.
! 
! 2017-01-23  Ed Schonberg  <schonberg@adacore.com>
! 
! 	* sem_aggr.adb (Resolve_Array_Aggregate): In ASIS mode do not
! 	report on spurious overlaps between values involving a subtype
! 	with a static predicate, because the expansion of such a subtype
! 	into individual ranges in inhibited in ASIS mode.
! 
! 2017-01-23  Justin Squirek  <squirek@adacore.com>
! 
! 	* sem_ch3.adb (Analyze_Declarations): Add detection
! 	of an edge case and delay freezing if it is present.
! 
! 2017-01-23  Hristian Kirtchev  <kirtchev@adacore.com>
! 
! 	* sem_ch3.adb, exp_spark.adb, exp_attr.adb, sem_ch9.adb, sem_prag.adb,
! 	sem_util.adb, sem_warn.adb, exp_ch3.adb: Minor reformatting.
! 
! 2017-01-23  Hristian Kirtchev  <kirtchev@adacore.com>
! 
! 	* freeze.adb (Freeze_Subprogram): Ensure that all anonymous
! 	access-to-subprogram types inherit the convention of the
! 	associated subprogram.	(Set_Profile_Convention): New routine.
! 	* sem_ch6.adb (Check_Conformance): Do not compare the conventions
! 	of the two entities directly, use Conventions_Match to account
! 	for anonymous access-to-subprogram and subprogram types.
! 	(Conventions_Match): New routine.
! 
! 2017-01-23  Claire Dross  <dross@adacore.com>
! 
! 	* exp_spark.adb (Expand_SPARK_Attribute_Reference): For attributes
! 	which return Universal_Integer, force the overflow check flag for
! 	Length and Range_Length for types as big as Long_Long_Integer.
! 
! 2017-01-23  Claire Dross  <dross@adacore.com>
! 
! 	* exp_spark.adb (Expand_SPARK_Attribute_Reference):  For
! 	attributes which return Universal_Integer, introduce a conversion
! 	to the expected type with the appropriate check flags set.
! 	* sem_res.adb (Resolve_Range): The higher bound can be in Typ's
! 	base type if the range is null. It may still be invalid if it
! 	is higher than the lower bound. This is checked later in the
! 	context in which the range appears.
! 
! 2017-01-23  Pierre-Marie de Rodat  <derodat@adacore.com>
! 
! 	* scos.ads: Introduce a constant to represent ignored
! 	dependencies in SCO_Unit_Table_Entry.
! 
! 2017-01-23  Hristian Kirtchev  <kirtchev@adacore.com>
! 
! 	* exp_ch9.adb (Expand_N_Protected_Type_Declaration): Remove extra
! 	spaces from error messages.
! 
! 2017-01-23  Ed Schonberg  <schonberg@adacore.com>
! 
! 	* exp_ch3.adb (Check_Large_Modular_Array): New procedure,
! 	subsidiary to Expand_N_Object_ Declaration, to compute a guard on
! 	an object declaration for an array type with a modular index type
! 	with the size of Long_Long_Integer. Special processing is needed
! 	in this case to compute reliably the size of the object, and
! 	eventually  to raise Storage_Error, when wrap-around arithmetic
! 	might compute a meangingless size for the object.
! 
! 2017-01-23  Justin Squirek  <squirek@adacore.com>
! 
! 	* a-wtenau.adb, par-endh.adb, sem_prag.adb,
! 	sem_type.adb: Code cleanups.
! 
! 2017-01-23  Bob Duff  <duff@adacore.com>
! 
! 	* sem_res.adb (Resolve_Call): In the part of the code where
! 	it is deciding whether to turn the call into an indexed
! 	component, avoid doing so if the call is to an instance of
! 	Unchecked_Conversion. Otherwise, the compiler turns it into an
! 	indexed component, and resolution of that turns it back into a
! 	function call, and so on, resulting in infinite recursion.
! 	* sem_util.adb (Needs_One_Actual): If the first formal has a
! 	default, then return False.
! 
! 2017-01-21  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* sem_eval.adb (Compile_Time_Compare): Reinstate the expr+literal (etc)
! 	optimizations when the type is modular and the offsets are equal.
! 
! 2017-01-20  Thomas Quinot  <quinot@adacore.com>
! 
! 	* sem_warn.adb (Warn_On_Useless_Assignment): Adjust wording of warning
! 	message.
! 
! 2017-01-20  Nicolas Roche  <roche@adacore.com>
! 
! 	* terminals.c: Ignore failures on setpgid and tcsetpgrp commands.
! 
! 2017-01-20  Bob Duff  <duff@adacore.com>
! 
! 	* sem_eval.adb (Compile_Time_Compare): Disable the expr+literal
! 	(etc) optimizations when the type is modular.
! 
! 2017-01-20  Yannick Moy  <moy@adacore.com>
! 
! 	* sem_ch6.adb (Move_Pragmas): move some pragmas,
! 	but copy the SPARK_Mode pragma instead of moving it.
! 	(Build_Subprogram_Declaration): Ensure that the generated spec
! 	and original body share the same SPARK_Pragma aspect/pragma.
! 	* sem_util.adb, sem_util.ads (Copy_SPARK_Mode_Aspect): New
! 	procedure to copy SPARK_Mode aspect.
! 
! 2017-01-20  Bob Duff  <duff@adacore.com>
! 
! 	* sem_ch3.adb (Analyze_Declarations): Disable Resolve_Aspects
! 	even in ASIS mode.
! 	* sem_ch13.adb (Resolve_Name): Enable setting the entity to
! 	Empty even in ASIS mode.
! 
! 2017-01-20  Hristian Kirtchev  <kirtchev@adacore.com>
! 
! 	* exp_ch9.adb: minor style fixes in comments.
! 	* sem_ch9.adb (Analyze_Delay_Relative): in GNATprove mode a delay
! 	relative statement introduces an implicit dependency on
! 	Ada.Real_Time.Clock_Time.
! 	* sem_util.adb: Minor reformatting.
! 
! 2017-01-20  Ed Schonberg  <schonberg@adacore.com>
! 
! 	* sem_ch13.adb (Analyze_Aspect_Specifications): Aspect Alignment
! 	must be treated as delayed aspect even if the expression is
! 	a literal, because the aspect affects the freezing and the
! 	elaboration of the object to which it applies.
! 
! 2017-01-20  Tristan Gingold  <gingold@adacore.com>
! 
! 	* s-osinte-vxworks.ads (Interrup_Range): New subtype.
! 
! 2017-01-20  Ed Schonberg  <schonberg@adacore.com>
! 
! 	* lib-xref.adb (Generate_Reference): Do not warn about the
! 	presence of a pragma Unreferenced if the entity appears as the
! 	actual in a procedure call that does not come from source.
! 
! 2017-01-20  Pascal Obry  <obry@adacore.com>
! 
! 	* expect.c, terminals.c: Fix some warnings about unused variables.
! 	* gsocket.h, adaint.c, adaint.h: Fix some more warnings in the C part
! 	of the runtime.
! 
! 2017-01-20  Bob Duff  <duff@adacore.com>
! 
! 	* exp_attr.adb (Constrained): Apply an access check (check that
! 	the prefix is not null) when the prefix denotes an object of an
! 	access type; that is, when there is an implicit dereference.
! 
! 2017-01-20  Gary Dismukes  <dismukes@adacore.com>
! 
! 	* s-rident.ads (constant Profile_Info): Remove
! 	No_Calendar from GNAT_Extended_Ravenscar restrictions.
! 
! 2017-01-20  Tristan Gingold  <gingold@adacore.com>
! 
! 	*  s-maccod.ads: Add pragma No_Elaboration_Code_All
! 
! 2017-01-20  Hristian Kirtchev  <kirtchev@adacore.com>
! 
! 	* ghost.adb (Mark_Ghost_Clause): New routine.
! 	(Prune_Node): Do not prune compilation unit nodes.
! 	(Remove_Ignored_Ghost_Code): Prune the compilation unit node directly.
! 	This does not touch the node itself, but does prune all its fields.
! 	* ghost.ads (Mark_Ghost_Clause): New routine.
! 	* sem_ch8.adb (Analyze_Use_Package): Emit an error when a use
! 	package clause mentions Ghost and non-Ghost packages. Mark a
! 	use package clause as Ghost when it mentions a Ghost package.
! 	(Analyze_Use_Type): Emit an error when a use type clause mentions
! 	Ghost and non-Ghost types. Mark a use type clause as Ghost when
! 	it mentions a Ghost type.
! 	* sem_ch10.adb (Analyze_With_Clause): Mark a with clause as
! 	Ghost when it withs a Ghost unit.
! 
! 2017-01-20  Javier Miranda  <miranda@adacore.com>
! 
! 	* sem_res.adb (Resolve_Call): If a function call
! 	returns a limited view of a type and at the point of the call the
! 	function is not declared in the extended main unit then replace
! 	it with the non-limited view, which must be available. If the
! 	called function is in the extended main unit then no action is
! 	needed since the back-end handles this case.
! 
! 2017-01-20  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* sem_ch7.adb (Contains_Subp_Or_Const_Refs): Rename into...
! 	(Contains_Subprograms_Refs): ...this.  Adjust comment
! 	for constants.	(Is_Subp_Or_Const_Ref): Rename into...
! 	(Is_Subprogram_Ref): ...this.
! 	(Has_Referencer): Rename Has_Non_Subp_Const_Referencer variable into
! 	Has_Non_Subprograms_Referencer and adjust comment.  Remove
! 	incorrect shortcut for package declarations and bodies.
! 
! 2017-01-20  Ed Schonberg  <schonberg@adacore.com>
! 
! 	* sem_ch3.adb (Complete_Private_Subtype): If the scope of the
! 	base type differs from that of the completion and the private
! 	subtype is an itype (created for a constraint on an access
! 	type e.g.), set Delayed_Freeze on both to prevent out-of-scope
! 	anomalies in gigi.
! 
! 2017-01-20  Hristian Kirtchev  <kirtchev@adacore.com>
! 
! 	* sem_ch6.adb (Analyze_Subprogram_Body_Helper):
! 	When inheriting the SPARK_Mode of a prior expression function,
! 	look at the properly resolved entity rather than the initial
! 	candidate which may denote a homonym.
! 
! 2017-01-20  Ed Schonberg  <schonberg@adacore.com>
! 
! 	* sem_prag.adb (Rewrite_Assertion_Kind): If the name is
! 	Precondition or Postcondition, and the context is pragma
! 	Check_Policy, indicate that this Pre-Ada2012 usage is deprecated
! 	and suggest the standard names Assertion_Policy /Pre /Post
! 	instead.
! 
! 2017-01-20  Hristian Kirtchev  <kirtchev@adacore.com>
! 
! 	* sem_ch10.adb, sem_cat.adb: Minor reformatting.
! 
! 2017-01-20  Javier Miranda  <miranda@adacore.com>
! 
! 	* sem_ch3.adb (Access_Type_Declaration): Protect access to the
! 	Entity attribute.
! 	* sem_ch10.adb (Install_Siblings): Skip processing malformed trees.
! 	* sem_cat.adb (Validate_Categoriztion_Dependency): Skip processing
! 	malformed trees.
! 
! 2017-01-20  Ed Schonberg  <schonberg@adacore.com>
! 
! 	* sem_ch13.adb (Analyze_Aspect_Specification, case
! 	Dynamic_Predicate): If the entity E is a subtype that inherits
! 	a static predicate for its parent P,, the inherited and the
! 	new predicate combine in the generated predicate function,
! 	and E only has a dynamic predicate.
! 
! 2017-01-20  Tristan Gingold  <gingold@adacore.com>
! 
! 	* s-boustr.ads, s-boustr.adb: New package.
! 	* Makefile.rtl: Add s-boustr.
! 
! 2017-01-20  Hristian Kirtchev  <kirtchev@adacore.com>
! 
! 	* inline.adb (Process_Formals): Qualify the
! 	expression of a return statement when it yields a universal type.
! 
! 2017-01-20  Hristian Kirtchev  <kirtchev@adacore.com>
! 
! 	* freeze.adb (Freeze_All): Freeze the default
! 	expressions of all eligible formal parameters that appear in
! 	entries, entry families, and protected subprograms.
! 
! 2017-01-20  Ed Schonberg  <schonberg@adacore.com>
! 
! 	* sem_ch3.adb (Check_Nonoverridable_Aspects); Refine check
! 	for illegal inherited Implicit_Dereference aspects with renamed
! 	discriminants.
! 
! 2017-01-20  Javier Miranda  <miranda@adacore.com>
! 
! 	* debug.adb (switch d.6): do not avoid declaring unreferenced itypes.
! 	* nlists.ads (Lock_Lists, Unlock_Lists): New subprograms.
! 	* nlists.adb (Lock_Lists, Unlock_Lists): New subprograms.
! 	(Set_First, Set_Last, Set_List_Link, Set_Next, Set_Parent,
! 	Set_Prev, Tree_Read): Adding assertion.
! 	* atree.ads (Lock_Nodes, Unlock_Nodes): New subprograms.
! 	* atree.adb (Lock_Nodes, Unlock_Nodes): New subprograms.
! 	(Set_Analyzed, Set_Check_Actuals, Set_Comes_From_Source,
! 	Set_Ekind, Set_Error_Posted, Set_Has_Aspects,
! 	Set_Is_Ignored_Ghost_Node, Set_Original_Node, Set_Paren_Count,
! 	Set_Parent, Set_Sloc, Set_Nkind, Set_FieldNN, Set_NodeNN,
! 	Set_ListNN, Set_ElistNN, Set_NameN, Set_StrN, Set_UintNN,
! 	Set_UrealNN, Set_FlagNNN, Set_NodeN_With_Parent,
! 	Set_ListN_With_Parent): Adding assertion.
! 
! 2017-01-20  Ed Schonberg  <schonberg@adacore.com>
! 
! 	* sem_prag.adb (Process_Convention): Diagnose properly a pragma
! 	import that applies to several homograph subprograms. when one
! 	of them is declared by a subprogram body.
! 
! 2017-01-20  Justin Squirek  <squirek@adacore.com>
! 
! 	* exp_ch6.adb (Expand_Call): Remove optimization
! 	that nulls out calls to null procedures.
! 
! 2017-01-20  Yannick Moy  <moy@adacore.com>
! 
! 	* inline.adb (Expand_Inlined_Call): Keep more
! 	precise type of actual for inlining whenever possible. In
! 	particular, do not switch to the formal type in GNATprove mode in
! 	some case where the GNAT backend might require it for visibility.
! 
! 2017-01-20  Ed Schonberg  <schonberg@adacore.com>
! 
! 	* sem_ch3.adb (Check_Non_Overridable_Aspects): An inherited
! 	aspect Implicit_Dereference can be inherited by a full view if
! 	the partial view has no discriminants, because there is no way
! 	to apply the aspect to the partial view.
! 	(Build_Derived_Record_Type): If derived type renames discriminants
! 	of the parent, the new discriminant inherits the aspect from
! 	the old one.
! 	* sem_ch4.adb (Analyze_Call): Handle properly a parameterless
! 	call through an access discriminant designating a subprogram.
! 	* sem_ch5.adb (Analyze_Assignment): (Analyze_Call): Handle
! 	properly a parameterless call through an access discriminant on
! 	the left-hand side of an assignment.
! 	* sem_res.adb (resolve): If an interpreation involves a
! 	discriminant with an implicit dereference and the expression is an
! 	entity, resolution takes place later in the appropriate routine.
! 	* sem_ch13.adb (Analyze_Aspect_Implicit_Dereference): Recognize
! 	access discriminants that designate a subprogram type.
! 
! 2017-01-20  Pascal Obry  <obry@adacore.com>
! 
! 	* a-locale.adb, a-locale.ads: Update Ada.Locales for RM 2012 COR:1:2016
! 
! 2017-01-20  Yannick Moy  <moy@adacore.com>
! 
! 	* sem_ch10.adb (Check_No_Elab_Code_All): Do not issue an error
! 	on implicitly with'ed units in GNATprove mode.
! 	* sinfo.ads (Implicit_With): Document use of flag for implicitly
! 	with'ed units in GNATprove mode.
! 
! 2017-01-20  Ed Schonberg  <schonberg@adacore.com>
! 
! 	* sem_cat.adb (Validate_Static_Object_Name): In a preelaborated
! 	unit Do not report an error on a non-static entity that appears
! 	in the context of a spec expression, such as an aspect expression.
! 
! 2017-01-20  Hristian Kirtchev  <kirtchev@adacore.com>
! 
! 	* einfo.adb: Flag298 now denotes Is_Underlying_Full_View.
! 	(Is_Underlying_Full_View): New routine.
! 	(Set_Is_Underlying_Full_View): New routine.
! 	(Write_Entity_Flags): Add an entry for Is_Underlying_Full_View.
! 	* einfo.ads Add new attribute Is_Underlying_Full_View.
! 	(Is_Underlying_Full_View): New routine along with pragma Inline.
! 	(Set_Is_Underlying_Full_View): New routine along with pragma Inline.
! 	* exp_util.adb (Build_DIC_Procedure_Body): Do not consider
! 	class-wide types and underlying full views. The first subtype
! 	is used as the working type for all Itypes, not just array base types.
! 	(Build_DIC_Procedure_Declaration): Do not consider
! 	class-wide types and underlying full views. The first subtype
! 	is used as the working type for all Itypes, not just array
! 	base types.
! 	* freeze.adb (Freeze_Entity): Inherit the freeze node of a full
! 	view or an underlying full view without clobbering the attributes
! 	of a previous freeze node.
! 	(Inherit_Freeze_Node): New routine.
! 	* sem_ch3.adb (Build_Derived_Private_Type): Mark an underlying
! 	full view as such.
! 	(Build_Underlying_Full_View): Mark an underlying full view as such.
! 	* sem_ch7.adb (Install_Private_Declarations): Mark an underlying
! 	full view as such.
! 
! 2017-01-20  Yannick Moy  <moy@adacore.com>
! 
! 	* sinfo.ads: Document lack of Do_Division_Check flag
! 	on float exponentiation.
! 
! 2017-01-19  Javier Miranda  <miranda@adacore.com>
! 
! 	* ghost.adb (Propagate_Ignored_Ghost_Code): Protect access to the
! 	identifier attribute of a block-statement node. Required to avoid
! 	assertion failure when building the new containers library.
! 
! 2017-01-19  Bob Duff  <duff@adacore.com>
! 
! 	* exp_ch3.adb: Update comment.
! 
! 2017-01-19  Vincent Celier  <celier@adacore.com>
! 
! 	* gprep.adb (Gnatprep): Parse the definition file without
! 	"replace in comments" even when switch -C is used.
! 
! 2017-01-19  Justin Squirek  <squirek@adacore.com>
! 
! 	* exp_ch9.adb (Is_Pure_Barrier): Create function
! 	Is_Count_Attribute to identify an expansion of the 'Count
! 	attribute.
! 
! 2017-01-19  Ed Schonberg  <schonberg@adacore.com>
! 
! 	* sem_ch5.adb (Analyze_Loop_Statement): In GNATprove mode the
! 	statements within an element iterator loop are only analyzed
! 	agter the loop is rewritten. Within a generic the analysis must
! 	be performed in any case to complete name capture.
! 
! 2017-01-19  Bob Duff  <duff@adacore.com>
! 
! 	* sem_prag.adb (Analyze_Pragma): Check for ignored pragmas first,
! 	before checking for unrecognized pragmas.
! 	Initialize Pname on its declarations; that's always good style.
! 
! 2017-01-19  Claire Dross  <dross@adacore.com>
! 
! 	* exp_ch7.adb (Build_Invariant_Procedure_Body): Semi-insert the
! 	body into the tree for GNATprove by setting its Parent field. The
! 	components invariants of composite types are not checked by
! 	the composite type's invariant procedure in GNATprove mode.
! 	(Build_Invariant_Procedure_Declaration): Semi-insert the
! 	declaration into the tree for GNATprove by setting its Parent
! 	field.
! 	* freeze.adb (Freeze_Arry_Type):In GNATprove mode, do not add
! 	the component invariants to the array type  invariant procedure
! 	so that the procedure can be used to  check the array type
! 	invariants if any.
! 	(Freeze_Record_Type): In GNATprove mode, do
! 	not add the component invariants to the record type  invariant
! 	procedure so that the procedure can be used to	check the record
! 	type invariants if any.
! 
! 2017-01-19  Hristian Kirtchev  <kirtchev@adacore.com>
! 
! 	* lib-xref-spark_specific.adb: Minor reformatting.
! 	* exp_ch7.adb (Add_Parent_Invariants): Do not process array types.
! 
! 2017-01-19  Javier Miranda  <miranda@adacore.com>
! 
! 	* exp_aggr.adb (Pass_Aggregate_To_Back_End): Renamed as
! 	Build_Back_End_Aggregate.
! 	(Generate_Aggregate_For_Derived_Type): Code cleanup.
! 	(Prepend_Stored_Values): Code cleanup.
! 
! 2017-01-19  Ed Schonberg  <schonberg@adacore.com>
! 
! 	* sem_ch6.adb (Analyze_Expression_Function): Check for an
! 	incomplete return type after attempting to freeze it, so that
! 	other freeze actiona are generated in the proper order.
! 
! 2017-01-19  Ed Schonberg  <schonberg@adacore.com>
! 
! 	* sem_aggr.adb (Resolve_Aggregate): If the type is a string
! 	type, ie. a type whose component is a character type, and the
! 	aggregate is positional, do not convert into a string literal
! 	if the index type is not an integer type, because the original
! 	type may be required in an enclosing operation.
! 
! 2017-01-19  Bob Duff  <duff@adacore.com>
! 
! 	* binde.adb, debug.adb: Enable new elaboration order algorithm
! 	by default. -dp switch reverts to the old algorithm.
! 
! 2017-01-19  Hristian Kirtchev  <kirtchev@adacore.com>
! 
! 	* sem_ch3.adb Add with and use clauses for Exp_Ch7.
! 	(Analyze_Declarations): Create the DIC and Invariant
! 	procedure bodies s after all freezing has taken place.
! 	(Build_Assertion_Bodies): New routine.
! 	* sem_ch7.adb Remove the with and use clauses for Exp_Ch7
! 	and Exp_Util.
! 	(Analyze_Package_Specification): Remove the
! 	generation of the DIC and Invariant procedure bodies. This is
! 	now done by Analyze_Declarations.
! 	* sem_disp.adb (Check_Dispatching_Operation): DIC and Invariant
! 	procedures are never treated as primitives.
! 
! 2017-01-19  Yannick Moy  <moy@adacore.com>
! 
! 	* frontend.adb: Analyze inlined bodies and check elaboration
! 	rules in GNATprove mode too.
! 	* sem_elab.adb (Delay_Element): Add Boolean component to save
! 	indication that call is in SPARK code.	(Check_Elab_Calls):
! 	Check elaboration rules in GNATprove mode, and correctly set
! 	the current value of SPARK_Mode.
! 	* lib-xref-spark_specific.adb
! 	(Add_SPARK_Xrefs): Simplify iteration over dereferences.
! 
! 2017-01-19  Ed Schonberg  <schonberg@adacore.com>
! 
! 	* exp_ch4.adb (Expand_Concatenate): Do no enable overflow
! 	checks on the expression for the high bound of concatenation
! 	when checks are disabled, to suppress warnings about potential
! 	constraint errors in restricted runtimes.
! 
! 2017-01-19  Hristian Kirtchev  <kirtchev@adacore.com>
! 
! 	* exp_ch3.adb (Expand_Freeze_Enumeration_Type): Mark the
! 	representation-to-position function as inlined.
! 	* sem_cat.adb (Set_Categorization_From_Scope): Do not modify
! 	the purity of an internally generated entity if it has been
! 	explicitly marked as pure for optimization purposes.
! 	* exp_aggr.adb: Minor reformatting.
! 
! 2017-01-19  Javier Miranda  <miranda@adacore.com>
! 
! 	* exp_ch6.adb (Expand_Call): Remove side effects on
! 	actuals that are allocators with qualified expression since the
! 	initialization of the object is performed by means of individual
! 	statements (and hence it must be done before the call).
! 
! 2017-01-19  Ed Schonberg  <schonberg@adacore.com>
! 
! 	* sem_ch3.adb (Analyze_Declarations): Minor reformatting.
! 	(Build_Derived_Enumeration_Type): If the derived type inherits a
! 	dynamic predicate from its parent, the bounds of the type must
! 	freeze because an explicit constraint is constructed for the
! 	type and the corresponding range is elaborated now.
! 
! 2017-01-19  Arnaud Charlet  <charlet@adacore.com>
! 
! 	* sem_attr.ads: minor fix of inconsistent casing in comment
! 	* lib-writ.ads: minor align comments in columns
! 	* sem_ch3.adb: Minor reformatting.
! 	* spark_xrefs.ads: minor fix typo in SPARK-related comment
! 	* table.ads: minor style fix in comment
! 	* lib-xref-spark_specific.adb
! 	(Add_SPARK_Xrefs): simplify processing of SPARK cross-references.
! 	* sem_ch12.adb: minor whitespace fix
! 	* freeze.adb: Add comment.
! 	* sem_util.adb (Unique_Name): for instances of
! 	generic subprograms ignore the name of the wrapper package.
! 
! 2017-01-19  Javier Miranda  <miranda@adacore.com>
! 
! 	* exp_aggr.adb (Resolve_Record_Aggregate):
! 	Factorize code needed for aggregates of limited and unlimited
! 	types in a new routine.
! 	(Pass_Aggregate_To_Back_End): New subprogram.
! 
! 2017-01-19  Yannick Moy  <moy@adacore.com>
! 
! 	* sinfo.adb (Pragma_Name): Only access up to Last_Pair of Pragma_Map.
! 
! 2017-01-19  Ed Schonberg  <schonberg@adacore.com>
! 
! 	* sem_ch4.ads, sem_ch4.adb (Try_Object_Operation): Make subprogram
! 	public, for use elsewhere.
! 	* sem_ch6.adb (Analyze_Procedure_Call): In SPARK_Mode and within
! 	an Inlined_body, recognize a call that uses object notation
! 	and has not been rewritten as a regular call because regular
! 	expansion has not taken place.
  
! 2017-01-19  Bob Duff  <duff@adacore.com>
  
! 	* checks.adb (Apply_Type_Conversion_Checks): Disable small optimization
! 	in case of generic formal discrete types, because it causes crashes in
! 	the compiler when built with assertions on.
  
! 2017-01-19  Hristian Kirtchev  <kirtchev@adacore.com>
  
! 	* lib-xref-spark_specific.adb, sem_util.adb, sem_util.ads,
! 	sem_ch4.adb, sem_ch8.adb, lib-xref.ads: Minor reformatting.
  
! 2017-01-19  Bob Duff  <duff@adacore.com>
  
! 	* bcheck.adb (Check_Consistent_Dynamic_Elaboration_Checking):
! 	Increment Warnings_Detected.  It was decrementing, which is
! 	wrong since we just issued a warning message.
! 	* binderr.ads (Errors_Detected, Warnings_Detected): Declare
! 	these variables to be of subtype Nat instead of Int, because
! 	they should never be negative.
  
! 2017-01-19  Javier Miranda  <miranda@adacore.com>
  
! 	* contracts.adb (Build_Postconditions_Procedure): Replace
! 	Generate_C_Code by Modify_Tree_For_C.
! 	* exp_aggr.adb (Build_Record_Aggr_Code, Expand_Array_Aggregate):
! 	Replace Generate_C_Code by Modify_Tree_For_C.
! 	* exp_attr.adb (Float_Valid, Is_GCC_Target): Replace Generate_C_Code by
! 	Modify_Tree_For_C.
! 	* exp_ch11.adb (Expand_N_Exception_Declaration): Replace
! 	Generate_C_Code by Modify_Tree_For_C.
! 	* exp_ch4.adb (Expand_Allocator_Expression): Replace
! 	Generate_C_Code by Modify_Tree_For_C.
! 	* exp_dbug.adb (Qualify_Entity_Name): Replace Generate_C_Code
! 	by Modify_Tree_For_C.
! 	* exp_util.adb (Remove_Side_Effects, Side_Effect_Free): Replace
! 	Generate_C_Code by Modify_Tree_For_C.
! 	* sem_res.adb (Resolve_Type_Conversion): Replace Generate_C_Code
! 	by Modify_Tree_For_C.
! 	* sinfo.ads (Modify_Tree_For_C): Adding documentation.
  
! 2017-01-19  Javier Miranda  <miranda@adacore.com>
  
! 	* sem_util.ads, sem_util.adb (Expression_Of_Expression_Function): New
! 	subprogram.
! 	(Is_Inlinable_Expression_Function): New subprogram.
! 	* exp_ch6.ads, exp_ch6.adb (Expression_Of_Expression_Function): Moved
! 	to Sem_Util.
! 	(Is_Inlinable_Expression_Function): Moved to Sem_Util.
  
! 2017-01-19  Ed Schonberg  <schonberg@adacore.com>
  
! 	* sem_ch4.adb (Diagnose_Call): Improve error message when a
! 	selected component has a prefix that might be interpreted
! 	as a parameterless function call, but none of the candidate
! 	interpretations is parameterless, and there is a hidden homonym
! 	of the prefix that is a package.
! 	* sem_ch8.adb (Find_Selected_Component): If the prefix might be
! 	interpreted as a parameterless function call and its analysis
! 	fails, do not call Analyze_Selected_Component.
  
! 2017-01-19  Steve Baird  <baird@adacore.com>
  
! 	* sem_util.ads: Add new Use_Full_View Boolean parameter to
! 	Get_Index_Bounds.
! 	* sem_util.adb (Get_Index_Bounds): replace calls to Scalar_Range with
! 	calls to a newly-defined Scalar_Range_Of_Right_View function.
  
! 2017-01-19  Arnaud Charlet  <charlet@adacore.com>
  
! 	* gnat1drv.adb: minor fix of unbalanced parens in comment
! 	* lib-xref.ads (Traverse_Compilation_Unit): declaration moved
! 	to visible part of the package to allow re-use in GNATprove.
! 	* lib-xref-spark_specific.adb (Traverse_Stub): routine refactored
! 	from repeated code of Traverse_Compilation_Unit.
! 	(Traverse_Declaration_Or_Statement): fixed detection of
! 	generic subprograms and packages; also, iteration over case
! 	statement alternatives rewritten to avoid testing if the first
! 	alternative is present (since it must be present due to Ada
! 	syntax restrictions).
  
! 2017-01-19  Hristian Kirtchev  <kirtchev@adacore.com>
  
! 	* exp_ch6.adb (Expand_N_Subprogram_Body): Mark the spec as
! 	returning by reference not just for subprogram body stubs,
! 	but for all subprogram cases.
! 	* sem_util.adb: Code reformatting.
! 	(Requires_Transient_Scope): Update the call to Results_Differ.
! 	(Results_Differ): Update the parameter profile and the associated
  	comment on usage.
  
! 2017-01-19  Ed Schonberg  <schonberg@adacore.com>
! 
! 	* sem_dim.adb (Analyze_Dimension): Analyze object declaration and
! 	identifier nodes that do not come from source, to handle properly
! 	dimensionality check within an inlined body which inclddes both
! 	original operands and rewritten operands. This removes spurious
! 	dimensionality errors in the presence of front-end inlining,
! 	as well as in SPARK mode.
! 
! 2017-01-16  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR driver/49726
! 	* gcc-interface/lang.opt (gant, gnatO, gnat): Add Driver flag.
! 
! 2017-01-13  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
! 
! 	* gcc-interface/Makefile.in (SPARC/Solaris): Fix typo.
! 
! 2017-01-13  Arnaud Charlet  <charlet@adacore.com>
! 
! 	* doc/gnat_ugn/getting_started_with_gnat.rst,
! 	doc/gnat_ugn/inline_assembler.rst,
! 	doc/gnat_ugn/building_executable_programs_with_gnat.rst,
! 	doc/gnat_ugn/elaboration_order_handling_in_gnat.rst,
! 	doc/gnat_ugn/about_this_guide.rst,
! 	doc/gnat_ugn/platform_specific_information.rst,
! 	doc/gnat_ugn/example_of_binder_output.rst,
! 	doc/gnat_ugn/gnat_and_program_execution.rst,
! 	doc/gnat_ugn/gnat_utility_programs.rst,
! 	doc/gnat_ugn/the_gnat_compilation_model.rst,
! 	doc/gnat_rm/implementation_defined_attributes.rst,
! 	doc/gnat_rm/compatibility_and_porting_guide.rst,
! 	doc/gnat_rm/standard_library_routines.rst,
! 	doc/gnat_rm/standard_and_implementation_defined_restrictions.rst,
! 	doc/gnat_rm/implementation_defined_pragmas.rst,
! 	doc/gnat_rm/the_gnat_library.rst,
! 	doc/gnat_rm/obsolescent_features.rst,
! 	doc/gnat_rm/about_this_guide.rst,
! 	doc/gnat_rm/the_implementation_of_standard_i_o.rst,
! 	doc/gnat_rm/implementation_of_ada_2012_features.rst,
! 	doc/gnat_rm/interfacing_to_other_languages.rst,
! 	doc/gnat_rm/implementation_defined_aspects.rst,
! 	doc/gnat_rm.rst: Update documentation.
! 	* gnat_rm.texi, gnat_ugn.texi: Regenerated.
! 
! 2017-01-13  Ed Schonberg  <schonberg@adacore.com>
! 
! 	* einfo.ads: minor grammar fixes in comment of Normalized_Position_Max.
! 	* scil_ll.adb: Minor style fix in comment.
! 	* sem_ch8.adb (Analyze_Expanded_Name): Perform dimension analysis
! 	even if entity is already set, because the node may be renalyzed
! 	after inlining transformations.
! 
! 2017-01-13  Javier Miranda  <miranda@adacore.com>
! 
! 	* sem_res.adb (Resolve_Call): Do not establish a transient scope
! 	for a call to inlinable expression function (since the call will
! 	be replaced by its returned object).
! 	* exp_ch6.ads (Is_Inlinable_Expression_Function): New subprogram.
! 	* exp_ch6.adb (Expression_Of_Expression_Function): New subprogram.
! 	(Expand_Call): For inlinable expression function call replace the
! 	call by its returned object.
! 	(Is_Inlinable_Expression_Function): New subprogram.
! 
! 2017-01-13  Gary Dismukes  <dismukes@adacore.com>
! 
! 	* checks.adb: Minor typo fix and reformatting.
! 
! 2017-01-13  Javier Miranda  <miranda@adacore.com>
! 
! 	* contracts.adb (Contract_Only_Subprograms): Remove formal.
! 	(Copy_Original_Specification): Removed.
! 	(Skip_Contract_Only_Subprogram): Move here checks previously
! 	located in the caller of this routine (to leave the code more clean).
! 	(Build_Contract_Only_Subprogram): Code cleanup.
! 	* scil_ll.ads, scil_ll.adb (Get_Contract_Only_Body_Name): Removed.
! 	(Get_Contract_Only_Missing_Body_Name): Removed.
! 
! 2017-01-13  Javier Miranda  <miranda@adacore.com>
! 
! 	* sem_ch6.adb (Cloned_Expression): New subprogram.
! 	(Freeze_Expr_Types): Complete previous patch since the expression
! 	of an expression-function may have iterators and loops with
! 	defining identifiers which, as part of the preanalysis of the
! 	expression, may be left decorated with itypes that will not be
! 	available in the tree passed to the backend.
! 
! 2017-01-13  Ed Schonberg  <schonberg@adacore.com>
! 
! 	* checks.adb (Apply_Type_Conversion_Checks): Optimize a type
! 	conversion to Integer of an expression that is an attribute
! 	reference 'Pos on an enumeration type.
! 
! 2017-01-13  Bob Duff  <duff@adacore.com>
! 
! 	* atree.ads: Minor comment fix.
! 
! 2017-01-13  Justin Squirek  <squirek@adacore.com>
! 
! 	* sem_ch6.adb (Check_Aggregate_Accessibility): Ignore function
! 	calls in accessibility check on return statement.
! 
! 2017-01-13  Hristian Kirtchev  <kirtchev@adacore.com>
! 
! 	* sem_ch6.adb (Analyze_Subprogram_Body_Helper):
! 	Ensure that the input body is a subprogram body before trying to
! 	determine whether it denoted an expression function.  Note that
! 	subprogram body stubs cannot denote expression functions.
! 
! 2017-01-13  Gary Dismukes  <dismukes@adacore.com>
! 
! 	* bindgen.adb, sem_ch6.adb, binde.adb, exp_ch3.adb: Minor reformatting
! 	and typo fixes.
! 
! 2017-01-13  Javier Miranda  <miranda@adacore.com>
! 
! 	* einfo.ads (Component_Bit_Offset): Fix documentation.
! 	* sem_ch13.adb (Check_Record_Representation_Clause): Skip check
! 	on record holes for components with unknown compile-time offsets.
! 
! 2017-01-13  Bob Duff  <duff@adacore.com>
! 
! 	* ali.ads, ali.adb (Static_Elaboration_Model_Used): Remove unused flag.
! 	* g-locfil.ads: Minor comment fix.
! 
! 2017-01-13  Bob Duff  <duff@adacore.com>
! 
! 	* binde.adb (Elab_New): New elaboration order algorithm
! 	that is expected to cause fewer ABE issues. This is a work in
! 	progress. The new algorithm is currently disabled, and can be
! 	enable by the -dp switch, or by modifying the Do_Old and Do_New
! 	etc. flags and rebuilding. Experimental code is included to
! 	compare the results of the old and new algorithms.
! 	* binde.ads: Use GNAT.Dynamic_Tables instead of Table, so we
! 	can have multiple of these tables, so the old and new algorithms
! 	can coexist.
! 	* bindgen.ads (Gen_Output_File): Pass Elab_Order as an 'in'
! 	parameter of type array. This avoids the global variable, and
! 	allows bounds checking (which is normally defeated by the tables
! 	packages). It also ensures that the Elab_Order is read-only
! 	to Bindgen.
! 	* bindgen.adb: Pass Elab_Order as an 'in' parameter to all
! 	subprograms that need it, as above.
! 	* debug.adb: Document new -dp switch. Modify doc of old -do
! 	switch.
! 	* gnatbind.adb (Gnatbind): Make use of new interfaces to Binde
! 	and Bindgen.  Move writing of closure (-R and -Ra switches)
! 	to Binde; that's more convenient.
! 
! 2017-01-13  Ed Schonberg  <schonberg@adacore.com>
! 
! 	* sem_ch6.adb (Analyze_Expression_Function): If the expression
! 	function is a completion, all entities referenced in the
! 	expression are frozen. As a consequence, a reference to an
! 	uncompleted private type from an enclosing scope is illegal.
! 
! 2017-01-13  Javier Miranda  <miranda@adacore.com>
! 
! 	* sem_ch6.adb (Freeze_Expr_Types): New subprogram.
! 	(Analyze_Subprogram_Body_Helper): At the occurrence of an
! 	expression function declaration that is a completion, its
! 	expression causes freezing (AI12-0103).
! 
! 2017-01-13  Vadim Godunko  <godunko@adacore.com>
! 
! 	* a-coinho-shared.adb: Fix memory leaks in Constant_Reference and
! 	Reference functions of Ada.Containers.Indefinite_Holders.
! 
! 2017-01-13  Bob Duff  <duff@adacore.com>
! 
! 	* s-os_lib.ads: Minor comment fixes.
! 
! 2017-01-13  Hristian Kirtchev  <kirtchev@adacore.com>
! 
! 	* exp_ch3.adb (Default_Initialize_Object): Do not default
! 	initialize an object when it is of a task type and restriction
! 	No_Tasking is in effect because the initialization is obsolete.
! 	* exp_ch9.adb (Build_Master_Entity): Do not generate a master when
! 	restriction No_Tasking is in effect.
! 	(Build_Master_Renaming): Do not rename a master when restriction
! 	No_Tasking is in effect.
! 
! 2017-01-13  Ed Schonberg  <schonberg@adacore.com>
! 
! 	* sem_aggr.adb (Resolve_Array_Aggregate): The code that verifies
! 	the legality of An others clause applies as well to a choice in
! 	an Iterated_component_ association.
! 	(Resolve_Iterated_Component_Association): An others choice
! 	is legal.
! 	* exp_aggr.adb (Aggr_Assignment_OK_For_Backend): An
! 	Iterated_Component_Association is not static.
! 
! 2017-01-13  Hristian Kirtchev  <kirtchev@adacore.com>
! 
! 	* exp_ch3.adb (Freeze_Type): Mark the Ghost mode as set in case
! 	control is passed to the expresion handler before the new mode
! 	is set.
! 	* sem_ch12.adb (Analyze_Package_Instantiation,
! 	Analyze_Subprogram_Instantiation): Mark the Ghost mode as set
! 	in case control is passed to the expresion handler before the
! 	new mode is set.
! 
! 2017-01-13  Hristian Kirtchev  <kirtchev@adacore.com>
! 
! 	* sem_aggr.adb, sem_ch3.adb, inline.adb, sem_util.adb, exp_ch4.adb,
! 	exp_aggr.adb: Minor reformatting.
! 
! 2017-01-13  Gary Dismukes  <dismukes@adacore.com>
! 
! 	* inline.adb: Minor reformatting and typo fix.
! 
! 2017-01-13  Ed Schonberg  <schonberg@adacore.com>
! 
! 	* sem_util.ads, sem_util.adb (Choice_List): Move function here
! 	from sem_aggr.adb, for use elsewhere.
! 	* sem_ch3.adb (Analyze_Object_Declaration): Use Choice_List.
! 	* sem_aggr.adb (Resolve_Array_Aggregate): Remove
! 	Iterated_Component_Present.
! 	* exp_aggr.adb: Use Choice_List throughout, to handle
! 	Iterated_Component_Associations.
! 	(Gen_Loop): Generate proper loop for an
! 	Iterated_Component_Association: loop variable has the identifier
! 	of the original association. Generate a loop even for a single
! 	component choice, in order to make loop parameter visible in
! 	expression.
! 	(Flatten): An Iterated_Component_Association is not static.
! 
! 2017-01-13  Yannick Moy  <moy@adacore.com>
! 
! 	* exp_ch4.adb (Expand_N_Op_Expon): Ensure that the value of
! 	float exponentiation for statically known small negative values
! 	is the reciprocal of the exponentiation for the opposite value
! 	of the exponent.
! 	* s-exnllf.adb (Exn_Float, Exn_Long_Float, Exn_Long_Long_Float):
! 	Ensure that the value of float exponentiation for negative values
! 	is the reciprocal of the exponentiation for the opposite value
! 	of the exponent.
! 	* inline.adb (Expand_Inlined_Call): Fix the count
! 	for the number of generated gotos.
! 
! 2017-01-13  Yannick Moy  <moy@adacore.com>
! 
! 	* inline.adb: Code cleanup.
! 	* sem_util.adb (Is_OK_Volatile_Context): Add
! 	expression in delay statement as OK for volatile context.
! 
! 2017-01-13  Ed Schonberg  <schonberg@adacore.com>
! 
! 	* sem_aggr.adb (Resolve_Array_Aggregate): In normal compilation
! 	mode a choice that is a subtype with a static predicate is
! 	replaced by the values it covers. This transformation must not
! 	be performed in ASIS mode, to preserve the source for analysis.
! 
! 2017-01-13  Justin Squirek  <squirek@adacore.com>
! 
! 	* nlists.ads: Correct minor typo.
! 
! 2017-01-13  Gary Dismukes  <dismukes@adacore.com>
! 
! 	* sem_ch13.adb: Minor reformatting and typo fix.
! 
! 2017-01-13  Ed Schonberg  <schonberg@adacore.com>
! 
! 	* par-ch4.adb (P_Aggregate_Or_Parent_Expr): An
! 	Iterated_Component_Association is a named association in an
! 	array aggregate.
! 	* sem_aggr.adb (Resolve_Iterated_Component_Association): New
! 	procedure, subsidiary of Resolve_Array_Aggregate, to analyze
! 	and resolve the discrete choices and the expression of the
! 	new construct.
! 	* sinfo.adb, sinfo.ads: In analogy with N_Component_Association,
! 	Loop_Actions and Box_Present are attributes of
! 	N_Iterated_Component_Association nodes. Box_Present is always
! 	False in this case.
! 	* sprint.adb (Sprint_Node): An Iterated_Component_Association
! 	has a Discrete_Choices list, as specified in the RM. A
! 	Component_Association for aggregate uses instead a Choices list.
! 	We have to live with this small inconsistency because the new
! 	construct also has a defining identifier, and there is no way
! 	to merge the two node structures.
! 
! 2017-01-13  Yannick Moy  <moy@adacore.com>
! 
! 	* inline.adb (Remove_Aspects_And_Pragmas): Add Unused to the
! 	list of pragmas to remove.  Remove pragmas from the list of
! 	statements in the body to inline.
! 	* namet.adb, namet.ads (Nam_In): New version with 12 parameters.
! 
! 2017-01-13  Ed Schonberg  <schonberg@adacore.com>
! 
! 	* sem_ch3.adb (Resolve_Aspects): New procedure, subsidiary of
! 	Analyze_Declarations, to analyze and resolve the expressions of
! 	aspect specifications in the current declarative list, so that
! 	the expressions have proper entity and type info.  This is needed
! 	for ASIS when there is no subsequent expansion to generate this
! 	semantic information.
! 	* sem_ch13.adb (Check_Aspect_At_End_Of_Declarations): Use Etype of
! 	original expression, to suppress cascaded errors when expression
! 	has been constant-folded.
! 	(Resolve_Aspect_Expressions, Resolve_Name): Preserve entities in
! 	ASIS mode, because there is no subsequent expansion to decorate
! 	the tree.
! 
! 2017-01-13  Yannick Moy  <moy@adacore.com>
! 
! 	* inline.adb, inline.ads (Call_Can_Be_Inlined_In_GNATprove_Mode):
! 	New function to detect when a call may be inlined or not in
! 	GNATprove mode.
! 	(Expand_Inlined_Call): Ensure that a temporary
! 	is always created in the cases where a type conversion may be
! 	needed on an input parameter in GNATprove mode, so that GNATprove
! 	sees the check to perform.
! 	* sem_res.adb (Resolve_Call): In GNATprove mode, skip inlining
! 	when not applicable due to actual requiring type conversion
! 	with possible check but no temporary value can be copied for
! 	GNATprove to see the check.
! 
! 2017-01-13  Hristian Kirtchev  <kirtchev@adacore.com>
! 
! 	* sem_aggr.adb, par_sco.adb, s-osprim-mingw.adb, exp_ch5.adb,
! 	exp_prag.adb, sem_ch3.adb, xr_tabls.adb, lib-xref-spark_specific.adb,
! 	layout.adb, sem_dist.adb, exp_spark.adb, exp_ch7.adb, gnatcmd.adb,
! 	exp_util.adb, prj-proc.adb, sem_aux.adb, comperr.adb, g-memdum.adb,
! 	exp_attr.adb, s-intman-solaris.adb, exp_ch9.adb, make.adb, live.adb,
! 	g-sercom-linux.adb, sem_dim.adb, mlib-prj.adb, s-intman-posix.adb,
! 	sem_ch9.adb, sem_ch10.adb, prep.adb, einfo.adb, scng.adb, checks.adb,
! 	prj-strt.adb, sem_prag.adb, eval_fat.adb, sem_ch12.adb, sem.adb,
! 	a-numaux-x86.adb, a-stwifi.adb, i-cobol.adb, prj.adb,
! 	get_spark_xrefs.adb, s-tasini.adb, rtsfind.adb, freeze.adb,
! 	g-arrspl.adb, par-ch4.adb, sem_util.adb, sem_res.adb, expander.adb,
! 	sem_attr.adb, exp_dbug.adb, prj-pp.adb, a-stzfix.adb, s-interr.adb,
! 	s-wchcnv.adb, switch-m.adb, gnat1drv.adb, sinput-l.adb, stylesw.adb,
! 	contracts.adb, s-intman-android.adb, g-expect.adb, exp_ch4.adb,
! 	g-comlin.adb, errout.adb, sinput.adb, s-exctra.adb, repinfo.adb,
! 	g-spipat.adb, g-debpoo.adb, exp_ch6.adb, sem_ch4.adb, exp_ch13.adb,
! 	a-wtedit.adb, validsw.adb, pprint.adb, widechar.adb, makeutl.adb,
! 	ali.adb, set_targ.adb, sem_mech.adb, sem_ch6.adb, gnatdll.adb,
! 	get_scos.adb, g-pehage.adb, s-tratas-default.adb, gnatbind.adb,
! 	prj-dect.adb, g-socthi-mingw.adb, par-prag.adb, prj-nmsc.adb,
! 	exp_disp.adb, par-ch12.adb, binde.adb, sem_ch8.adb,
! 	s-tfsetr-default.adb, s-regexp.adb, gprep.adb, s-tpobop.adb,
! 	a-teioed.adb, sem_warn.adb, sem_eval.adb, g-awk.adb, s-io.adb,
! 	a-ztedit.adb, xoscons.adb, exp_intr.adb, sem_cat.adb, sprint.adb,
! 	g-socket.adb, exp_dist.adb, sem_ch13.adb, s-tfsetr-vxworks.adb,
! 	par-ch3.adb, treepr.adb, g-forstr.adb, g-catiio.adb, par-ch5.adb,
! 	uname.adb, osint.adb, exp_ch3.adb, prj-env.adb, a-strfix.adb,
! 	a-stzsup.adb, prj-tree.adb, s-fileio.adb: Update all eligible case
! 	statements to reflect the new style for case alternatives. Various
! 	code clean up and reformatting.
! 
! 2017-01-13  Gary Dismukes  <dismukes@adacore.com>
! 
! 	* exp_util.adb: Minor reformatting.
! 
! 2017-01-13  Yannick Moy  <moy@adacore.com>
! 
! 	* exp_spark.adb: Code cleanup.
! 	* sem_ch9.adb (Analyze_Delay_Until): Resolve
! 	expression so that calls are identified as such inside delay
! 	until.
! 
! 2017-01-13  Ed Schonberg  <schonberg@adacore.com>
! 
! 	* exp_util.adb (Insert_Actions): Handle Iterated_Component_Association.
! 	* par-ch3.adb (P_Discrete_Choice_List): An
! 	Iterated_Component_Association is an array aggregate component.
! 	* par-ch4.adb (P_Iterated_Component_Association): New procedure.
! 	(Is_Quantified_Expression): New function that performs a lookahead
! 	to distinguish quantified expressions from iterated component
! 	associations.
! 	(P_Aggregate_Or_Paren_Expr): Recognize iterated component
! 	associations.
! 	(P_Unparen_Cond_Case_Quant_Expression, P_Primary): Ditto.
! 	* sem.adb (Analyze): Handle Iterated_Component_Association.
! 	* sem_aggr.adb (Resolve_Array_Aggregate): Dummy handling of iterated
! 	component associations.
! 	* sinfo.ads, sinfo.adb: Entries for for
! 	N_Iterated_Component_Association and its fields.
! 	* sprint.adb (Sprint_Node_Actual): Handle
! 	N_Iterated_Component_Association.
! 
! 2017-01-13  Justin Squirek  <squirek@adacore.com>
! 
! 	* sem_ch12.adb (Analyze_Package_Instantiation): Move disabiling
! 	of the style check until after preanalysis of acutals.
! 
! 2017-01-13  Yannick Moy  <moy@adacore.com>
  
! 	* sem_ch13.adb: Minor reformatting.
! 	* par-ch11.adb: minor style fix in whitespace
! 	* gnatbind.adb (Gnatbind): Scope of Std_Lib_File
! 	reduced to Add_Artificial_ALI_File; style fix in declaration of
! 	Text; grammar fix in comment.
! 	* osint-c.adb (Read_Library_Info): strip trailing NUL from result.
! 	* freeze.adb: Cleanup to pass pragma instead of
! 	expression to call.
! 	* exp_spark.adb (Expand_SPARK_Attribute_Reference): New procedure to
! 	replace System'To_Address by equivalent call.
  
! 2017-01-13  Arnaud Charlet  <charlet@adacore.com>
  
! 	* bindusg.adb: Improve usage output for -f switch.
  
! 2017-01-13  Hristian Kirtchev  <kirtchev@adacore.com>
  
! 	* frontend.adb, freeze.adb, sem_res.adb, sem_attr.adb, sem_ch8.adb:
  	Minor reformatting.
  
! 2017-01-13  Ed Schonberg  <schonberg@adacore.com>
! 
! 	* sem_ch13.adb (Is_Predicate_Static): Following the intent of the RM,
! 	treat comparisons on strings as legal in a Static_Predicate.
! 	(Is_Predicate_Static, Is_Type_Ref): Predicate also returns true on
! 	a function call that is the expansion of a string comparison.The
! 	function call is built when compiling the corresponding predicate
! 	function, but the expression has been found legal as a static
! 	predicate during earlier analysis.
! 	* sem_eval.adb (Real_Or_String_Static_Predicate_Matches): Handle
! 	properly a function call that is the expansion of a string
! 	comparison operation, in order to recover the Static_Predicate
! 	expression and apply it to a static argument when needed.
! 
! 2017-01-13  Tristan Gingold  <gingold@adacore.com>
! 
! 	* s-mmap.adb, s-mmap.ads (Open_Read_No_Exception): New function.
! 	(Open_Read): Re-implement using Open_Read_No_Exception.
! 	(Open_Write): Raise exception in case of error.
! 	* s-mmosin-mingw.adb (Open_Common): Do not raise exception.
! 	* s-mmosin-unix.adb (Open_Read, Open_Write): Do not
! 	reaise exception.
! 	* s-mmosin-mingw.ads, s-mmosin-unix.ads (Open_Read): Adjust comment.
! 
! 2017-01-13  Yannick Moy  <moy@adacore.com>
! 
! 	* checks.adb: Code cleanup.
! 
! 2017-01-13  Yannick Moy  <moy@adacore.com>
! 
! 	* freeze.adb (Check_Inherited_Conditions): Use analyzed pragma
! 	expression instead of unanalyzed aspect expression for checking
! 	the validity of inheriting an operation. Also copy the expression
! 	being passing it to Build_Class_Wide_Expression, as this call
! 	modifies its argument.
! 	* sem_util.ads Fix comment to reference correct function name
! 	New_Copy_Tree.
! 
! 2017-01-13  Javier Miranda  <miranda@adacore.com>
! 
! 	* sem_res.adb (Resolve_Generalized_Indexing): Compiling in ASIS mode,
! 	when we propagate information about the indexes back to the original
! 	indexing mode and the prefix of the index is a function call, do not
! 	remove any parameter from such call.
! 
! 2017-01-13  Gary Dismukes  <dismukes@adacore.com>
! 
! 	* exp_ch6.ads (Needs_BIP_Finalization_Master): Update comment.
! 	* exp_ch6.adb (Needs_BIP_Finalization_Master): Return True for
! 	a build-in-place function whose result type is tagged.
! 
! 2017-01-13  Yannick Moy  <moy@adacore.com>
! 
! 	* sem_ch8.adb (Analyze_Subprogram_Renaming.Build_Class_Wide_Wrapper):
! 	Do not generate a wrapper when the only candidate is a class-wide
! 	subprogram.
! 	(Analyze_Subprogram_Renaming): Do not freeze the renaming or renamed
! 	inside a generic context.
! 
! 2017-01-13  Hristian Kirtchev  <kirtchev@adacore.com>
! 
! 	* exp_util.adb (Add_Inherited_Tagged_DIC):
! 	Pass the object parameters of both the parent and the derived
! 	type DIC procedure to the reference replacement circuitry.
! 	(Find_DIC_Type): Modify the circuitry to present the partial
! 	view of a private type in case the private type defines its own
! 	DIC pragma.
! 	(Replace_Object_And_Primitive_References): Add two
! 	optional formal parameters.  Update the comment on usage. Update
! 	the replacement of references to object parameters.
! 
! 2017-01-13  Gary Dismukes  <dismukes@adacore.com>
! 
! 	* einfo.adb, sem_ch6.adb, atree.adb: Minor reformatting and typo fix.
! 
! 2017-01-13  Ed Schonberg  <schonberg@adacore.com>
! 
! 	* sem_res.adb (Resolve_Actuals): Apply Scalar_Range_Check to
! 	an out parameter that is a type conversion, independently of th
! 	range check that may apply to the expression of the conversion,
! 	for use in GNATProve.
! 
! 2017-01-13  Yannick Moy  <moy@adacore.com>
! 
! 	* gnat1drv.adb (Gnat1drv): Move the implicit with for System in
! 	GNATprove_Mode here to Frontend.
! 	* frontend.adb (Frontend): Move the implicit with for System
! 	in GNATprove_Mode here as it ismore correct this way; the old
! 	place only worked by chance, since there were no overloaded names.
! 	* rtsfind.ads (RE_Id, RE_Unit_Table): Add RE_Tasking_State.
! 	* sem_attr.adb (Analyze_Attribute): In GNATprove_Mode, for the
! 	four attributes identified in SRM 9(18), add an implicit with
! 	to Ada.Task_Identification.
! 	* sem_ch8.adb (Analyze_Subprogram_Renaming.Build_Class_Wide_Wrapper):
! 	Deal specially with the wrapper introduced for AI05-0071 in GNATprove
! 	mode.
! 	* checks.adb (Apply_Discriminant_Check,
! 	Apply_Selected_Length_Checks, Apply_Selected_Range_Checks):
! 	In GNATprove mode, we do not apply the checks, but we still
! 	analyze the expression to possibly issue errors on SPARK
! 	code when a run-time error can be detected at compile time.
! 	(Selected_Length_Checks, Selected_Range_Checks): Perform analysis
! 	in GNATprove mode.
! 
! 2017-01-13  Hristian Kirtchev  <kirtchev@adacore.com>
! 
! 	* expander.adb (Expand): Add a warning about using return
! 	statements in Ghost management code.
! 	* exp_ch3.adb (Freeze_Type): Add a warning about using return
! 	statements in Ghost management code.
! 	* exp_ch7.adb (Build_Invariant_Procedure_Body,
! 	Build_Invariant_Procedure_Declaration): Add a warning about
! 	using return statements in Ghost management code.
! 	* exp_disp.adb (Make_DT): Add a warning about using return
! 	statements in Ghost management code.
! 	* exp_util.adb (Build_DIC_Procedure_Body,
! 	Build_DIC_Procedure_Declaration, Make_Predicated_Call): Add a
! 	warning about using return statements in Ghost management code.
! 	* freeze.adb (Freeze_Entity): Add a warning about using return
! 	statements in Ghost management code.
! 	* sem.adb (Analyze, Do_Analyze): Add a warning about using return
! 	statements in Ghost management code.
! 	* sem_ch3.adb (Analyze_Object_Declaration, Process_Full_View): Add
! 	a warning about using return statements in Ghost management code.
! 	* sem_ch5.adb (Analyze_Assignment): Add a warning about using
! 	return statements in Ghost management code.
! 	* sem_ch6.adb (Analyze_Procedure_Call,
! 	Analyze_Subprogram_Body_Helper): Add a warning about using return
! 	statements in Ghost management code.
! 	* sem_ch7.adb (Analyze_Package_Body_Helper): Add a warning about
! 	using return statements in Ghost management code.
! 	* sem_ch12.adb (Analyze_Package_Instantiation,
! 	Analyze_Subprogram_Instantiation, Instantiate_Package_Body,
! 	Instantiate_Subprogram_Body): Add a warning about using return
! 	statements in Ghost management code.
! 	* sem_ch13.adb (Build_Predicate_Functions,
! 	Build_Predicate_Function_Declarations): Add a warning about
! 	using return statements in Ghost management code.
! 	* sem_prag.adb (Analyze_Contract_Cases_In_Decl_Part,
! 	Analyze_Initial_Condition_In_Decl_Part, Analyze_Pragma,
! 	Analyze_Pre_Post_Condition_In_Decl_Part):  Add a warning about
! 	using return statements in Ghost management code.
! 
! 2017-01-13  Tristan Gingold  <gingold@adacore.com>
! 
! 	* s-mmosin-mingw.adb: Fix pragma import.
! 
! 2017-01-13  Arnaud Charlet  <charlet@adacore.com>
! 
! 	* gnat1drv.adb (Adjust_Global_Switches): Ignore -gnateE in
! 	codepeer mode.
! 
! 2017-01-13  Hristian Kirtchev  <kirtchev@adacore.com>
! 
! 	* atree.adb (Allocate_Initialize_Node): A newly created node is
! 	no longer marked as Ghost at this level.
! 	(Mark_New_Ghost_Node): New routine.
! 	(New_Copy): Mark the copy as Ghost.
! 	(New_Entity): Mark the entity as Ghost.
! 	(New_Node): Mark the node as Ghost.
! 	* einfo.adb (Is_Checked_Ghost_Entity): This attribute can now
! 	apply to unanalyzed entities.
! 	(Is_Ignored_Ghost_Entity): This attribute can now apply to unanalyzed
! 	entities.
! 	(Set_Is_Checked_Ghost_Entity): This attribute now
! 	applies to all entities as well as unanalyzed entities.
! 	(Set_Is_Ignored_Ghost_Entity): This attribute now applies to
! 	all entities as well as unanalyzed entities.
! 	* expander.adb Add with and use clauses for Ghost.
! 	(Expand): Install and revert the Ghost region associated with the node
! 	being expanded.
! 	* exp_ch3.adb (Expand_Freeze_Array_Type): Remove all Ghost-related code.
! 	(Expand_Freeze_Class_Wide_Type): Remoe all Ghost-related code.
! 	(Expand_Freeze_Enumeration_Type): Remove all Ghost-related code.
! 	(Expand_Freeze_Record_Type): Remove all Ghost-related code.
! 	(Freeze_Type): Install and revert the Ghost region associated
! 	with the type being frozen.
! 	* exp_ch5.adb Remove with and use clauses for Ghost.
! 	(Expand_N_Assignment_Statement): Remove all Ghost-related code.
! 	* exp_ch6.adb Remove with and use clauses for Ghost.
! 	(Expand_N_Procedure_Call_Statement): Remove all Ghost-relatd code.
! 	(Expand_N_Subprogram_Body): Remove all Ghost-related code.
! 	* exp_ch7.adb (Build_Invariant_Procedure_Body): Install and revert the
! 	Ghost region of the working type.
! 	(Build_Invariant_Procedure_Declaration): Install and revert
! 	the Ghost region of the working type.
! 	(Expand_N_Package_Body): Remove all Ghost-related code.
! 	* exp_ch8.adb Remove with and use clauses for Ghost.
! 	(Expand_N_Exception_Renaming_Declaration): Remove all Ghost-related
! 	code.
! 	(Expand_N_Object_Renaming_Declaration): Remove all Ghost-related code.
! 	(Expand_N_Package_Renaming_Declaration): Remove all Ghost-related code.
! 	(Expand_N_Subprogram_Renaming_Declaration): Remove all Ghost-related
! 	code.
! 	* exp_ch13.adb Remove with and use clauses for Ghost.
! 	(Expand_N_Freeze_Entity): Remove all Ghost-related code.
! 	* exp_disp.adb (Make_DT): Install and revert the Ghost region of
! 	the tagged type. Move the generation of various entities within
! 	the Ghost region of the type.
! 	* exp_prag.adb Remove with and use clauses for Ghost.
! 	(Expand_Pragma_Check): Remove all Ghost-related code.
! 	(Expand_Pragma_Contract_Cases): Remove all Ghost-related code.
! 	(Expand_Pragma_Initial_Condition): Remove all Ghost-related code.
! 	(Expand_Pragma_Loop_Variant): Remove all Ghost-related code.
! 	* exp_util.adb (Build_DIC_Procedure_Body): Install
! 	and revert the Ghost region of the working types.
! 	(Build_DIC_Procedure_Declaration): Install and revert the
! 	Ghost region of the working type.
! 	(Make_Invariant_Call): Install and revert the Ghost region of the
! 	associated type.
! 	(Make_Predicate_Call): Reimplemented. Install and revert the
! 	Ghost region of the associated type.
! 	* freeze.adb (Freeze_Entity): Install and revert the Ghost region
! 	of the entity being frozen.
! 	(New_Freeze_Node): Removed.
! 	* ghost.adb Remove with and use clauses for Opt.
! 	(Check_Ghost_Completion): Update the parameter profile
! 	and all references to formal parameters.
! 	(Ghost_Entity): Update the comment on usage.
! 	(Install_Ghost_Mode): New routines.
! 	(Is_Ghost_Assignment): New routine.
! 	(Is_Ghost_Declaration): New routine.
! 	(Is_Ghost_Pragma): New routine.
! 	(Is_Ghost_Procedure_Call): New routine.
! 	(Is_Ghost_Renaming): Removed.
! 	(Is_OK_Declaration): Reimplemented.
! 	(Is_OK_Pragma): Reimplemented.
! 	(Is_OK_Statement): Reimplemented.
! 	(Is_Subject_To_Ghost): Update the comment on usage.
! 	(Mark_And_Set_Ghost_Assignment): New routine.
! 	(Mark_And_Set_Ghost_Body): New routine.
! 	(Mark_And_Set_Ghost_Completion): New routine.
! 	(Mark_And_Set_Ghost_Declaration): New routine.
! 	(Mark_And_Set_Ghost_Instantiation): New routine.
! 	(Mark_And_Set_Ghost_Procedure_Call): New routine.
! 	(Mark_Full_View_As_Ghost): Removed.
! 	(Mark_Ghost_Declaration_Or_Body): New routine.
! 	(Mark_Ghost_Pragma): New routine.
! 	(Mark_Ghost_Renaming): New routine.
! 	(Mark_Pragma_As_Ghost): Removed.
! 	(Mark_Renaming_As_Ghost): Removed.
! 	(Propagate_Ignored_Ghost_Code): Update the comment on usage.
! 	(Prune_Node): Freeze nodes no longer need special pruning, they
! 	are processed by the general ignored Ghost code mechanism.
! 	(Restore_Ghost_Mode): New routine.
! 	(Set_Ghost_Mode): Reimplemented.
! 	(Set_Ghost_Mode_From_Entity): Removed.
! 	* ghost.ads Add with and use clauses for Ghost.
! 	(Check_Ghost_Completion): Update the parameter profile
! 	along with the comment on usage.
! 	(Install_Ghost_Mode): New routine.
! 	(Is_Ghost_Assignment): New routine.
! 	(Is_Ghost_Declaration): New routine.
! 	(Is_Ghost_Pragma): New routine.
! 	(Is_Ghost_Procedure_Call): New routine.
! 	(Mark_And_Set_Ghost_Assignment): New routine.
! 	(Mark_And_Set_Ghost_Body): New routine.
! 	(Mark_And_Set_Ghost_Completion): New routine.
! 	(Mark_And_Set_Ghost_Declaration): New routine.
! 	(Mark_And_Set_Ghost_Instantiation): New routine.
! 	(Mark_And_Set_Ghost_Procedure_Call): New routine.
! 	(Mark_Full_View_As_Ghost): Removed.
! 	(Mark_Ghost_Pragma): New routine.
! 	(Mark_Ghost_Renaming): New routine.
! 	(Mark_Pragma_As_Ghost): Removed.
! 	(Mark_Renaming_As_Ghost): Removed.
! 	(Restore_Ghost_Mode): New routine.
! 	(Set_Ghost_Mode): Redefined.
! 	(Set_Ghost_Mode_From_Entity): Removed.
! 	* sem.adb (Analyze): Install and revert the Ghost region of the
! 	node being analyzed.
! 	(Do_Analyze): Change the way a clean Ghost
! 	region is installed and reverted.
! 	* sem_ch3.adb (Analyze_Full_Type_Declaration): Remove
! 	all Ghost-related code.
! 	(Analyze_Incomplete_Type_Decl): Remove all Ghost-related code.
! 	(Analyze_Number_Declaration): Remove all Ghost-related code.
! 	(Analyze_Object_Declaration): Install and revert the Ghost region of
! 	a deferred object declaration's completion.
! 	(Array_Type_Declaration): Remove all Ghost-related code.
! 	(Build_Derived_Type): Update the comment on
! 	the propagation of Ghost attributes from a parent to a derived type.
! 	(Derive_Subprogram): Remove all Ghost-related code.
! 	(Make_Class_Wide_Type): Remove all Ghost-related code.
! 	(Make_Implicit_Base): Remove all Ghost-related code.
! 	(Process_Full_View): Install and revert the Ghost region of
! 	the partial view.  There is no longer need to check the Ghost
! 	completion here.
! 	* sem_ch5.adb (Analyze_Assignment): Install and revert the Ghost
! 	region of the left hand side.
! 	* sem_ch6.adb (Analyze_Abstract_Subprogram_Declaration): Remove
! 	all Ghost-related code.
! 	(Analyze_Expression_Function): Remove all Ghost-related code.
! 	(Analyze_Generic_Subprogram_Body): Remove all Ghost-related code.
! 	(Analyze_Procedure_Call): Install and revert the Ghost region of
! 	the procedure being called.
! 	(Analyze_Subprogram_Body_Helper): Install and revert the Ghost
! 	region of the spec or body.
! 	(Analyze_Subprogram_Declaration): Remove all Ghost-related code.
! 	(Build_Subprogram_Declaration): Remove all Ghost-related code.
! 	(Find_Corresponding_Spec): Remove all Ghost-related code.
! 	(Process_Formals): Remove all Ghost-related code.
! 	* sem_ch7.adb (Analyze_Package_Body_Helper): Install and revert
! 	the Ghost region of the spec.
! 	(Analyze_Package_Declaration): Remove all Ghost-related code.
! 	* sem_ch8.adb (Analyze_Exception_Renaming): Mark a renaming as
! 	Ghost when it aliases a Ghost entity.
! 	(Analyze_Generic_Renaming): Mark a renaming as Ghost when it aliases
! 	a Ghost entity.
! 	(Analyze_Object_Renaming): Mark a renaming as Ghost when
! 	it aliases a Ghost entity.
! 	(Analyze_Package_Renaming): Mark a renaming as Ghost when it aliases
! 	a Ghost entity.
! 	(Analyze_Subprogram_Renaming): Mark a renaming as Ghost when it
! 	aliases a Ghost entity.
! 	* sem_ch11.adb Remove with and use clauses for Ghost.
! 	(Analyze_Exception_Declaration): Remove all Ghost-related code.
! 	* sem_ch12.adb (Analyze_Generic_Package_Declaration): Remove all
! 	Ghost-related code.
! 	(Analyze_Generic_Subprogram_Declaration): Remove all Ghost-related
! 	code.
! 	(Analyze_Package_Instantiation): Install and revert the Ghost region
! 	of the package instantiation.
! 	(Analyze_Subprogram_Instantiation): Install
! 	and revert the Ghost region of the subprogram instantiation.
! 	(Instantiate_Package_Body): Code clean up. Install and revert the
! 	Ghost region of the package body.
! 	(Instantiate_Subprogram_Body): Code clean up. Install and revert the
! 	Ghost region of the subprogram body.
! 	* sem_ch13.adb (Build_Predicate_Functions): Install
! 	and revert the Ghost region of the related type.
! 	(Build_Predicate_Function_Declaration): Code clean up. Install
! 	and rever the Ghost region of the related type.
! 	* sem_prag.adb (Analyze_Contract_Cases_In_Decl_Part):
! 	Install and revert the Ghost region of the pragma.
! 	(Analyze_Initial_Condition_In_Decl_Part): Install and revert the
! 	Ghost region of the pragma.
! 	(Analyze_Pragma): Install and revert the Ghost region of various
! 	pragmas.  Mark a pragma as Ghost when it is related to a Ghost entity
! 	or encloses a Ghost entity.
! 	(Analyze_Pre_Post_Condition): Install and revert the Ghost
! 	region of the pragma.
! 	(Analyze_Pre_Post_Condition_In_Decl_Part): Install and revert the
! 	Ghost region of the pragma.
! 	* sem_res.adb (Resolve): Remove all Ghost-related code.
! 	* sem_util.adb (Is_Declaration): Reimplemented.
! 	(Is_Declaration_Other_Than_Renaming): New routine.
! 	* sem_util.ads (Is_Declaration_Other_Than_Renaming): New routine.
! 	* sinfo.adb (Is_Checked_Ghost_Pragma): New routine.
! 	(Is_Ghost_Pragma): Removed.
! 	(Is_Ignored_Ghost_Pragma): New routine.
! 	(Set_Is_Checked_Ghost_Pragma): New routine.
! 	(Set_Is_Ghost_Pragma): Removed.
! 	(Set_Is_Ignored_Ghost_Pragma): New routine.
! 	* sinfo.ads: Update the documentation on Ghost mode and
! 	Ghost regions.	New attributes Is_Checked_Ghost_Pragma
! 	and Is_Ignored_Ghost_Pragma along with usages in nodes.
! 	Remove attribute Is_Ghost_Pragma along with usages in nodes.
! 	(Is_Checked_Ghost_Pragma): New routine along with pragma Inline.
! 	(Is_Ghost_Pragma): Removed along with pragma Inline.
! 	(Is_Ignored_Ghost_Pragma): New routine along with pragma Inline.
! 	(Set_Is_Checked_Ghost_Pragma): New routine along with pragma Inline.
! 	(Set_Is_Ghost_Pragma): Removed along with pragma Inline.
! 	(Set_Is_Ignored_Ghost_Pragma): New routine along with pragma Inline.
! 
! 2017-01-12  Tristan Gingold  <gingold@adacore.com>
! 
! 	* s-mmap.ads, s-mmap.adb, s-mmosin-unix.ads, s-mmosin-unix.adb,
! 	s-mmauni-long.ads, s-mmosin-mingw.ads, s-mmosin-mingw.adb: New files.
! 
! 2017-01-12  Yannick Moy  <moy@adacore.com>
! 
! 	* errout.adb, errout.ads (Initialize): Factor common treatment
! 	in Reset_Warnings.
! 	(Reset_Warnings): New procedure to reset counts related to warnings.
! 	(Record_Compilation_Errors): New variable to store the presence of an
! 	error, used in gnat2why to allow changing the Warning_Mode.
! 	(Compilation_Errors): Use new variable Record_Compilation_Errors to
! 	store the presence of an error.
! 
! 2017-01-12  Javier Miranda  <miranda@adacore.com>
! 
! 	* sem_ch13.adb (Analyze_Aspect_Specifications):
! 	For Interrupt_Handler and Attach_ Handler aspects, decorate the
! 	internally built reference to the protected procedure as coming
! 	from sources and force its analysis.
! 
! 2017-01-12  Ed Schonberg  <schonberg@adacore.com>
! 
! 	* sem_ch3.adb (Build_Derived_Type): For a scalar derived type,
! 	inherit predicates if any from the first_subtype of the parent,
! 	not from the anonymous parent type.
! 	* sem_eval.adb (Is_Static_Subtype): A type that inherits a dynamic
! 	predicate is not a static subtype.
! 
! 2017-01-12  Gary Dismukes  <dismukes@adacore.com>
! 
! 	* freeze.adb (Check_Suspicious_Convention): New procedure
! 	performing a warning check on discriminated record types with
! 	convention C or C++. Factored out of procedure Freeze_Record_Type,
! 	and changed to only apply to base types (to avoid spurious
! 	warnings on subtypes). Minor improvement of warning messages
! 	to refer to discriminated rather than variant record types.
! 	(Freeze_Record_Type): Remove code for performing a suspicious
! 	convention check.
! 	(Freeze_Entity): Only call Freeze_Record_Type
! 	on types that aren't declared within any enclosing generic units
! 	(rather than just excluding the type when the innermost scope
! 	is generic). Call Check_Suspicious_Convention whether or not
! 	the type is declared within a generic unit.
! 	* sem_ch8.adb (In_Generic_Scope): Move this function to Sem_Util.
! 	* sem_util.ads, sem_util.adb (In_Generic_Scope): New function (moved
! 	from Sem_Ch8).
! 
! 2017-01-12  Tristan Gingold  <gingold@adacore.com>
! 
! 	* sysdep.c, adaint.c, rtinit.c, ming32.h:
! 	(__gnat_current_codepage): Renamed from CurrentCodePage
! 	(__gnat_current_ccs_encoding): Renamed from CurrentCCSEncoding
! 
! 2017-01-12  Ed Schonberg  <schonberg@adacore.com>
! 
! 	* sem_ch6.adb (Fully_Conformant_Expressions): Handle properly
! 	quantified expressions, following AI12-050: the loop parameters
! 	of two quantified expressions are conformant if they have the
! 	same identifier.
! 
! 2017-01-12  Arnaud Charlet  <charlet@adacore.com>
! 
! 	* gcc-interface/Makefile.in: Clean up VxWorks targets.
! 
! 2017-01-12  Ed Schonberg  <schonberg@adacore.com>
! 
! 	* sem_attr.adb (Analyze_Attribute_Reference, case Loop_Entry):
! 	Hnadle properly the attribute reference when it appears as part
! 	of an expression in another loop aspect.
! 
! 2017-01-12  Ed Schonberg  <schonberg@adacore.com>
! 
! 	* exp_ch3.adb (Check_Predicated_Discriminant): New procedure,
! 	subsidiary of Build_Initialization_Call, to complete generation
! 	of predicate checks on discriminants whose (sub)types have
! 	predicates, and to add checks on variants that do not have an
! 	others clause.
! 	* sem_util.adb (Gather_Components): A missing Others alternative is
! 	not an error when the type of the discriminant is a static predicate
! 	(and coverage has been checked when analyzing the case statement). A
! 	runtime check is generated to verify that a given discriminant
! 	satisfies the predicate (RM 3.8.1. (21.1/2)).
! 
! 2017-01-12  Yannick Moy  <moy@adacore.com>
! 
! 	* gnat1drv.adb (Adjust_Global_Switches): Only
! 	perform checking of exception mechanism when generating code.
! 
! 2017-01-12  Justin Squirek  <squirek@adacore.com>
! 
! 	* exp_ch7.adb (Add_Type_Invariants, Process_Array_Component):
! 	Remove handling of access component with invariant.
! 	(Build_Invariant_Procedure_Declaration): Remove return on class
! 	wide type.
! 	* freeze.adb (Freeze_Array_Type, Freeze_Record_Type): Remove
! 	conditional exception for component or array so Has_Own_Invariants
! 	flag is not falsly set.
! 	* sem_ch3.adb (Make_Class_Wide_Type): Initialize copy of class
! 	wide type to have no invariant flags.
! 
! 2017-01-12  Hristian Kirtchev  <kirtchev@adacore.com>
! 
! 	* exp_ch9.adb, sem_prag.adb, s-tassta.adb, sem_util.adb, s-tarest.adb,
! 	sem_ch13.adb: Minor reformatting.
! 
! 2017-01-12  Hristian Kirtchev  <kirtchev@adacore.com>
! 
! 	* exp_aggr.adb (Build_Record_Aggr_Code): Guard against a missing
! 	adjustment primitive when the ancestor type was not properly frozen.
! 	(Gen_Assign): Guard against a missing initialization
! 	primitive when the component type was not properly frozen.
! 	(Initialize_Array_Component): Guard against a missing adjustment
! 	primitive when the component type was not properly frozen.
! 	(Initialize_Record_Component): Guard against a missing adjustment
! 	primitive when the component type was not properly frozen.
! 	(Process_Transient_Component_Completion): The transient object may
! 	not be finalized when its associated type was not properly frozen.
! 	* exp_ch3.adb (Build_Assignment): Guard against a missing
! 	adjustment primitive when the component type was not properly frozen.
! 	(Build_Initialization_Call): Guard against a missing
! 	initialization primitive when the associated type was not properly
! 	frozen.
! 	(Expand_N_Object_Declaration): Guard against a missing
! 	adjustment primitive when the base type was not properly frozen.
! 	(Predefined_Primitive_Bodies): Create an empty Deep_Adjust
! 	body when there is no adjustment primitive available. Create an
! 	empty Deep_Finalize body when there is no finalization primitive
! 	available.
! 	* exp_ch4.adb (Apply_Accessibility_Check): Guard against a
! 	missing finalization primitive when the designated type was
! 	not properly frozen.
! 	(Expand_N_Allocator): Guard against a missing initialization primitive
! 	when the designated type was not properly frozen.
! 	* exp_ch5.adb (Make_Tag_Ctrl_Assignment): Add the adjustment call
! 	only when the corresponding adjustment primitive is available.
! 	* exp_ch7.adb (Build_Adjust_Or_Finalize_Statements): Generate the
! 	adjustment/finalization statements only when there is an available
! 	primitive to carry out the action.
! 	(Build_Initialize_Statements): Generate the initialization/finalization
! 	statements only when there is an available primitive to carry out the
! 	action.
! 	(Make_Adjust_Call): Do not generate a call when the underlying
! 	type is not present due to a possible missing full view.
! 	(Make_Final_Call): Do not generate a call when the underlying
! 	type is not present due to a possible missing full view.
! 	(Make_Finalize_Address_Stmts): Generate an empty body when the
! 	designated type lacks a finalization primitive.
! 	(Make_Init_Call): Do not generate a call when the underlying type is
! 	not present due to a possible missing full view.
! 	(Process_Component_For_Adjust): Add the adjustment call only when the
! 	corresponding adjustment primitive is available.
! 	(Process_Component_For_Finalize): Add the finalization call only when
! 	the corresponding finalization primitive is available.
! 	(Process_Object_Declaration): Use a null statement to emulate a
! 	missing call to the finalization primitive of the object type.
! 	* exp_ch7.ads (Make_Adjust_Call): Update the comment on usage.
! 	(Make_Final_Call): Update the comment on usage.
! 	(Make_Init_Call): Update the comment on usage.
! 	* exp_util.adb (Build_Transient_Object_Statements): Code reformatting.
! 
! 2017-01-12  Arnaud Charlet  <charlet@adacore.com>
! 
! 	* einfo.ads: Update documentation of Address_Taken.
! 	* sem_attr.adb (Analyze_Access_Attribute, Resolve_Attribute
! 	[Access_Attribute]): Only consider 'Access/'Unchecked_Access
! 	for subprograms when setting Address_Taken flag.
! 
! 2017-01-12  Patrick Bernardi  <bernardi@adacore.com>
! 
! 	* sem_ch10.adb (Analyze_With_Clause): Removed code that turned
! 	Configurable_Run_Time_Mode off when analysing with'ed predefined
! 	libraries.
! 
! 2017-01-12  Gary Dismukes  <dismukes@adacore.com>
! 
! 	* sem_prag.adb: Minor reformatting.
! 	* sem_util.adb (Unique_Entity): fix result for
! 	bodies of entry families.
! 
! 2017-01-12  Justin Squirek  <squirek@adacore.com>
! 
! 	* sem_prag.adb (Analyze_Pragma): Add appropriate calls to
! 	Resolve_Suppressible in the pragma Assertion_Policy case.
! 	(Resolve_Suppressible): Created this function to factor out
! 	common code used to resolve Suppress to either Ignore or Check
! 	* snames.ads-tmpl: Add name for Suppressible.
! 
! 2017-01-12  Gary Dismukes  <dismukes@adacore.com>
! 
! 	* exp_ch9.adb, s-secsta.adb, snames.ads-tmpl, exp_ch3.adb: Minor
! 	reformatting.
! 	* debug.adb: Minor comment fixes.
! 
! 2017-01-12  Arnaud Charlet  <charlet@adacore.com>
! 
! 	* sem_util.adb (Unique_Entity): For concurrent
! 	bodies that are defined with stubs and complete a declaration
! 	of a single concurrent object return the entity of an implicit
! 	concurrent type, not the entity of the anonymous concurrent
! 	object.
! 	* debug.adb: -gnatd.J is no longer used.
! 	* make.adb (Globalize): Removed, no longer used.
! 	* sem_ch9.adb: minor typo in comment for entry index
! 
! 2017-01-12  Patrick Bernardi  <bernardi@adacore.com>
! 
! 	* aspect.adb, aspect.ads: Added new aspect Secondary_Stack_Size.
! 	* exp_ch3.adb (Build_Init_Statements): As part of initialising
! 	the value record of a task, set its _Secondary_Stack_Size field
! 	if present.
! 	* exp_ch9.adb (Expand_N_Task_Type_Declaration): Create
! 	a _Secondary_Stack_Size field in the value record of
! 	the task if a Secondary_Stack_Size rep item is present.
! 	(Make_Task_Create_Call): Include secondary stack size
! 	parameter. If No_Secondary_Stack restriction is in place, passes
! 	stack size of 0.
! 	* par-prag.adb, sem_prag.adb, sem_prag.ads: Added new pragma
! 	Secondary_Stack_Size.
! 	* s-secsta.adb, s-secsta.ads (Minimum_Secondary_Stack_Size): New
! 	function to define the overhead of the secondary stack.
! 	* s-tarest.adb (Create_Restricted_Task,
! 	Create_Restricted_Task_Sequential): Functions now include
! 	Secondary_Stack_Size parameter to pass to Initialize_ATCB.
! 	* s-tarest.adb (Create_Restricted_Task,
! 	Create_Restricted_Task_Sequential): Calls to Initialize_ATCB now
! 	include Secondary_Stack_Size parameter.
! 	(Task_Wrapper): Secondary stack now allocated to the size specified by
! 	the Secondary_Stack_Size parameter in the task's ATCB.
! 	* s-taskin.adb, s-taskin.adb (Common_ATCB, Initialize_ATCB): New
! 	Secondary_Stack_Size component.
! 	* s-tassta.adb, s-tassta.ads (Create_Restricted_Task,
! 	Create_Restricted_Task_Sequential): Function now include
! 	Secondary_Stack_Size parameter.
! 	(Task_Wrapper): Secondary stack now allocated to the size
! 	specified by the Secondary_Stack_Size parameter in the task's
! 	ATCB.
! 	* s-tproft.adb (Register_Foreign_Thread): Amended Initialize_ATCB call
! 	to include Secondary_Stack_Size parameter.
! 	* sem_ch13.adb (Analyze_Aspect_Specification): Add support for
! 	Secondary_Stack_Size aspect, turning the aspect into its corresponding
! 	internal attribute.
! 	(Analyze_Attribute_Definition): Process Secondary_Stack_Size attribute.
! 	* snames.adb-tmpl, snames.ads-tmpl: Added names
! 	Name_Secondary_Stack_Size, Name_uSecondary_Stack_Size,
! 	Attribute_Secondary_Stack_Size and Pragma_Secondary_Stack_Size.
! 
! 2017-01-12  Yannick Moy  <moy@adacore.com>
! 
! 	* exp_spark.adb (Expand_SPARK_Potential_Renaming): Fix sloc of copied
! 	subtree.
! 
! 2017-01-12  Justin Squirek  <squirek@adacore.com>
! 
! 	* exp_attr.adb (Expand_N_Attribute_Reference):
! 	Fix Finalization_Size case by properly resolving the type after
! 	rewritting the node.
! 
! 2017-01-12  Hristian Kirtchev  <kirtchev@adacore.com>
! 
! 	* exp_util.adb (Build_DIC_Procedure_Body): Semi-insert the body into
! 	the tree.
! 	(Build_DIC_Procedure_Declaration): Semi-insert the body into the tree.
! 	* binde.adb, exp_ch5.adb, sem_type.adb, sem.ads, sem_res.adb,
! 	exp_sel.ads: Minor reformatting.
! 
! 2017-01-12  Justin Squirek  <squirek@adacore.com>
! 
! 	* exp_ch6.adb (Expand_Call): Add guard to prevent
! 	invariant checks from being created for internally generated
! 	subprograms.
! 
! 2017-01-12  Bob Duff  <duff@adacore.com>
! 
! 	* lib-writ.ads: Remove incorrect comment.
! 
! 2017-01-12  Javier Miranda  <miranda@adacore.com>
! 
! 	* debug.adb (-gnatd.K): Enable generation of contract-only
! 	procedures in CodePeer mode.
! 	* contracts.adb (Build_And_Analyze_Contract_Only_Subprograms):
! 	New subprogram.
! 	(Analyze_Contracts): Generate contract-only procedures if -gnatdK is
! 	set.
! 	* scil_ll.ads, scil_ll.adb (Get_Contract_Only_Body_Name): New
! 	subprogram.
! 	(Get_Contract_Only_Missing_Body_Name): New subprogram.
! 	(Get_Contract_Only_Body): New subprogram.
! 	(Set_Contract_Only_Body): New subprogram.
! 	(Is_Contract_Only_Body): New subprogram.
! 	(Set_Is_Contract_Only_Body): New subprogram.
! 	(SCIL_Nodes): Replace table by hash-table.
! 
! 2017-01-12  Hristian Kirtchev  <kirtchev@adacore.com>
! 
! 	* exp_ch6.adb: Minor reformatting.
! 	* spark_xrefs.ads: minor cleanup of comments for SPARK xrefs
! 
! 2017-01-12  Bob Duff  <duff@adacore.com>
! 
! 	* binde.adb (Forced): New reason for a dependence.
! 	(Force_Elab_Order): Implementation of the new switch.
! 	* binde.ads: Minor comment fixes.
! 	* bindusg.adb: Add -f switch. Apparently, there was an -f switch
! 	long ago that is no longer supported; removed comment about that.
! 	* opt.ads (Force_Elab_Order_File): Name of file specified for
! 	-f switch.
! 	* switch-b.adb: Parse -f switch.
! 
! 2017-01-12  Justin Squirek  <squirek@adacore.com>
! 
! 	* exp_ch6.adb (Check_View_Conversion): Created this function
! 	to properly chain calls to check type invariants that may be
! 	present in a subprogram call after the subprogram.
! 	(Expand_Call): Add a conditional to identify when a view conversion
! 	needs to be checked.
! 	* nlists.adb, nlists.ads (Prepend_New): New routine.
! 	(Prepend_New_To): New routine.
! 
! 2017-01-12  Hristian Kirtchev  <kirtchev@adacore.com>
! 
! 	* sinfo.ads: Minor reformatting.
! 
! 2017-01-12  Gary Dismukes  <dismukes@adacore.com>
! 
! 	* exp_util.adb, exp_util.ads, einfo.ads: Minor typo fixes and
! 	reformatting.
! 
! 2017-01-12  Hristian Kirtchev  <kirtchev@adacore.com>
! 
! 	* exp_ch6.adb (Make_Build_In_Place_Call_In_Anonymous_Context): Add new
! 	variable Definite. Create a local object and pass its 'Access to the
! 	BIP function when the result type is either definite or it does not
! 	require any finalization or secondary stack management.
! 
! 2017-01-12  Bob Duff  <duff@adacore.com>
! 
! 	* contracts.adb, einfo.adb, errout.adb, exp_attr.adb,
! 	exp_ch3.adb, exp_ch7.adb, exp_ch9.adb, exp_prag.adb, freeze.adb,
! 	frontend.adb, ghost.adb, inline.adb, lib-writ.adb, lib-xref.adb,
! 	par.adb, par-ch10.adb, par-ch2.adb, par-prag.adb, par_sco.adb,
! 	sem_attr.adb, sem_aux.adb, sem_ch10.adb, sem_ch12.adb,
! 	sem_ch13.adb, sem_ch6.adb, sem_ch8.adb, sem_ch9.adb, sem_elab.adb,
! 	sem_prag.adb, sem_res.adb, sem_util.adb, sem_util.ads,
! 	sem_warn.adb, sinfo.adb, sinfo.ads, sprint.adb (Pragma_Name):
! 	Change name to Pragma_Name_Unmapped.
! 	(Pragma_Name_Mapped): Change name to Pragma_Name.
! 	This is because the "mapped" version should be the usual case.
! 
! 2017-01-09  Hristian Kirtchev  <kirtchev@adacore.com>
! 
! 	* einfo.ads, einfo.adb: Remove uses of flags Has_Default_Init_Cond,
! 	Is_Default_Init_Cond_Procedure, and
! 	Has_Inherited_Default_Init_Cond.  Add uses of flags
! 	Has_Own_DIC, Is_DIC_Procedure, and Has_Inherited_DIC.
! 	(Default_Init_Cond_Procedure): Removed.
! 	(DIC_Procedure): New routine.
! 	(Has_Default_Init_Cond): Removed.
! 	(Has_DIC): New routine.
! 	(Has_Inheritable_Invariants): The attribute applies to the base type.
! 	(Has_Inherited_Default_Init_Cond): Removed.
! 	(Has_Inherited_DIC): New routine.
! 	(Has_Inherited_Invariants): The attribute applies to the base type.
! 	(Has_Own_DIC): New routine.
! 	(Has_Own_Invariants): The attribute applies to the base type.
! 	(Is_Default_Init_Cond_Procedure): Removed.
! 	(Is_DIC_Procedure): New routine.
! 	(Set_Default_Init_Cond_Procedure): Removed.
! 	(Set_DIC_Procedure): New routine.
! 	(Set_Has_Default_Init_Cond): Removed.
! 	(Set_Has_Inheritable_Invariants): The attribute applies
! 	to the base type.
! 	(Set_Has_Inherited_Default_Init_Cond): Removed.
! 	(Set_Has_Inherited_DIC): New routine.
! 	(Set_Has_Inherited_Invariants): The attribute applies to the base type.
! 	(Set_Has_Own_DIC): New routine.
! 	(Set_Has_Own_Invariants): The attribute applies to the base type.
! 	(Set_Is_Default_Init_Cond_Procedure): Removed.
! 	(Set_Is_DIC_Procedure): New routine.
! 	(Write_Entity_Flags): Update the output of all flags related to
! 	default initial condition.
! 	* exp_ch3.adb (Expand_N_Object_Declaration): Update the generation
! 	of the call to the DIC procedure.
! 	(Freeze_Type): Generate the body of the DIC procedure.
! 	* exp_ch7.adb (Build_Invariant_Procedure_Body): Replace
! 	all occurrences of Create_Append with Append_New_To. Do
! 	not generate an invariant procedure for a class-wide type.
! 	The generated body acts as a freeze action of the working type.
! 	(Build_Invariant_Procedure_Declaration): Do not generate an
! 	invariant procedure for a class-wide type.
! 	(Create_Append): Removed.
! 	* exp_util.adb: Add with and use clauses for Sem_Ch3, sem_ch6,
! 	sem_Ch12, Sem_Disp, and GNAT.HTable. Move the handling of
! 	class-wide pre/postcondition description and data structures from
! 	Sem_Prag.
! 	(Build_Class_Wide_Expression): Moved from Sem_Prag.
! 	(Build_DIC_Call): New routine.
! 	(Build_DIC_Procedure_Body): New routine.
! 	(Build_DIC_Procedure_Declaration): New routine.
! 	(Entity_Hash): Moved from Sem_Prag.
! 	(Find_DIC_Type): New routine.
! 	(Update_Primitives_Mapping): Reimplemented.
! 	(Update_Primitives_Mapping_Of_Types): New routine.
! 	* exp_util.ads (Build_Class_Wide_Expression): Moved from Sem_Prag.
! 	(Build_DIC_Call): New routine.
! 	(Build_DIC_Procedure_Body): New routine.
! 	(Build_DIC_Procedure_Declaration): New routine.
! 	(Update_Primitives_Mapping): Moved from Sem_Prag.
! 	(Update_Primitives_Mapping_Of_Types): New routine.
! 	* nlists.adb (Append_New): New routine.
! 	(Append_New_To): New routine.
! 	* nlists.ads (Append_New): New routine.
! 	(Append_New_To): New routine.
! 	* sem_ch3.adb (Analyze_Declarations): Do not generate the bodies
! 	of DIC procedures here. This is now done at the end of the
! 	visible declarations, private declarations, and at the freeze
! 	point of a type.
! 	(Analyze_Private_Extension_Declaration):
! 	A private extension inherits the DIC pragma of a parent type.
! 	(Analyze_Subtype_Declaration): No need to propagate invariant
! 	attributes to a subtype as those apply to the base type.
! 	(Build_Derived_Record_Type): No need to inherit invariants here
! 	as this is now done in Build_Derived_Type.
! 	(Build_Derived_Type): Inherit both the DIC pragma and invariants from
! 	a parent type.
! 	(Process_Full_View): Update the propagation of DIC attributes.
! 	(Propagate_Default_Init_Cond_Attributes): Removed.
! 	* sem_ch7.adb Add with and use clauses for Exp_Util.
! 	(Analyze_Package_Specification): Create the body of the DIC
! 	procedure at the end of the visible and private declarations.
! 	(Preserve_Full_Attributes): Propagate DIC attributes.
! 	* sem_ch9.adb (Analyze_Protected_Type_Declaration): Propagate
! 	DIC attributes.
! 	(Analyze_Task_Type_Declaration): Propagate DIC attributes.
! 	* sem_elab.adb (Check_A_Call): Update the call to
! 	Is_Nontrivial_Default_Init_Cond_Procedure.
! 	* sem_prag.adb Remove the with and use clauses for
! 	GNAT.HTable. Move the handling of class- wide pre/postcondition
! 	description and data structures to Exp_Util.
! 	(Analyze_Pragma): Create the declaration of the DIC procedure. There
! 	is no need to propagate invariant-related attributes at this point
! 	as this is done in Build_Invariant_Procedure_Declaration.
! 	(Build_Class_Wide_Expression): Moved to Exp_Util.
! 	(Entity_Hash): Moved to Exp_Util.
! 	(Update_Primitives_Mapping): Moved to Exp_Util.
! 	* sem_prag.ads (Build_Class_Wide_Expression): Moved to Exp_Util.
! 	(Update_Primitives_Mapping): Moved to Exp_Util.
! 	* sem_util.adb: Remove with and use clauses for Ghost
! 	and Sem_Ch13.
! 	(Build_Default_Init_Cond_Call): Removed.
! 	(Build_Default_Init_Cond_Procedure_Bodies): Removed.
! 	(Build_Default_Init_Cond_Procedure_Declaration): Removed.
! 	(Get_Views): Reimplemented.
! 	(Has_Full_Default_Initialization): Reimplement the section on DIC.
! 	(Inherit_Default_Init_Cond_Procedure): Removed.
! 	(Is_Nontrivial_Default_Init_Cond_Procedure): Removed.
! 	(Is_Nontrivial_DIC_Procedure): New routine.
! 	(Is_Verifiable_DIC_Pragma): New routine.
! 	(Propagate_DIC_Attributes): New routine.
! 	* sem_util.ads (Build_Default_Init_Cond_Call): Removed.
! 	(Build_Default_Init_Cond_Procedure_Bodies): Removed.
! 	(Build_Default_Init_Cond_Procedure_Declaration): Removed.
! 	(Inherit_Default_Init_Cond_Procedure): Removed.
! 	(Is_Nontrivial_Default_Init_Cond_Procedure): Removed.
! 	(Is_Nontrivial_DIC_Procedure): New routine.
! 	(Is_Verifiable_DIC_Pragma): New routine.
! 	(Propagate_DIC_Attributes): New routine.
! 	* sem_warn.adb (Is_OK_Fully_Initialized): Reimplement the section
! 	on DIC.
! 	* sinfo.ads, sinfo.adb: Add new attribute Expression_Copy along with
! 	usage in nodes.
! 	(Expression_Copy): New routine along with pragma Inline.
! 	(Set_Expression_Copy): New routine along with pragma Inline.
! 
! 2017-01-06  Bob Duff  <duff@adacore.com>
! 
! 	* bindgen.adb (Gen_Adainit, Gen_Adafinal): Change
! 	"Bind_Main_Program" to "not Bind_For_Library", because otherwise
! 	we won't generate the call to s_stalib_adafinal when the main
! 	is not written in Ada.
! 
! 2017-01-06  Bob Duff  <duff@adacore.com>
! 
! 	* sem_prag.adb: Minor: remove pragma Warnings.
! 
! 2017-01-06  Tristan Gingold  <gingold@adacore.com>
! 
! 	* Makefile.rtl: Do not compile s-stchop by default.
! 
! 2017-01-06  Patrick Bernardi  <bernardi@adacore.com>
! 
! 	* aspects.adb, aspects.ads, exp_ch3.adb, exp_ch9.adb, par-prag.adb,
! 	sem_ch13.adb, sem_prag.adb, sem_prag.ads, snames.adb-tmpl,
! 	snames.ads-tmpl, s-secsta.adb, s-secsta.ads, s-tarest.adb,
! 	s-tarest.ads, s-taskin.adb, s-taskin.ads, s-tassta.adb, s-tassta.ads:
! 	Reverted previous change for now.
! 
! 2017-01-06  Ed Schonberg  <schonberg@adacore.com>
! 
! 	* exp_ch3.adb (Build_Initialization_Call): Apply predicate
! 	check to default discriminant value if checks are enabled.
! 	(Build_Assignment): If type of component has static predicate,
! 	apply check to its default value, if any.
! 
! 2017-01-06  Patrick Bernardi  <bernardi@adacore.com>
! 
! 	* aspect.adb, aspect.ads: Added new aspect Secondary_Stack_Size.
! 	* exp_ch3.adb (Build_Init_Statements): As part of initialising
! 	the value record of a task, set its _Secondary_Stack_Size field
! 	if present.
! 	* exp_ch9.adb (Expand_N_Task_Type_Declaration): Create
! 	a _Secondary_Stack_Size field in the value record of
! 	the task if a Secondary_Stack_Size rep item is present.
! 	(Make_Task_Create_Call): Include secondary stack size
! 	parameter. If No_Secondary_Stack restriction is in place, passes
! 	stack size of 0.
! 	* par-prag.adb, sem_prag.adb, sem_prag.ads: Added new pragma
! 	Secondary_Stack_Size.
! 	* s-secsta.adb, s-secsta.ads (Minimum_Secondary_Stack_Size): New
! 	function to define the overhead of the secondary stack.
! 	* s-tarest.adb (Create_Restricted_Task,
! 	Create_Restricted_Task_Sequential): Functions now include
! 	Secondary_Stack_Size parameter to pass to Initialize_ATCB.
! 	* s-tarest.adb (Create_Restricted_Task,
! 	Create_Restricted_Task_Sequential): Calls to Initialize_ATCB
! 	now include Secondary_Stack_Size parameter.
! 	(Task_Wrapper):
! 	Secondary stack now allocated to the size specified by the
! 	Secondary_Stack_Size parameter in the task's ATCB.
! 	* s-taskin.adb, s-taskin.adb (Common_ATCB, Initialise_ATCB): New
! 	Secondary_Stack_Size component.
! 	* s-tassta.adb, s-tassta.ads (Create_Restricted_Task,
! 	Create_Restricted_Task_Sequential): Function now include
! 	Secondary_Stack_Size parameter.
! 	(Task_Wrapper): Secondary stack
! 	now allocated to the size specified by the Secondary_Stack_Size
! 	parameter in the task's ATCB.
! 	* sem_ch13.adb (Analyze_Aspect_Specification): Add support
! 	for Secondary_Stack_Size aspect, turning the aspect into its
! 	corresponding internal attribute.
! 	(Analyze_Attribute_Definition):
! 	Process Secondary_Stack_Size attribute.
! 	* snames.adb-tmpl, snames.ads-tmpl: Added names
! 	Name_Secondary_Stack_Size, Name_uSecondary_Stack_Size,
! 	Attribute_Secondary_Stack_Size and Pragma_Secondary_Stack_Size.
! 
! 2017-01-06  Pascal Obry  <obry@adacore.com>
! 
! 	* a-direio.adb, a-direio.ads, a-sequio.adb, a-sequio.ads: Add Flush to
! 	Sequential_IO and Direct_IO.
! 
! 2017-01-06  Bob Duff  <duff@adacore.com>
! 
! 	* snames.ads-tmpl (Renamed): New name for the pragma argument.
! 	* par-ch2.adb: Allow the new pragma (with analysis deferred
! 	to Sem_Prag).
! 	* sinfo.ads, sinfo.adb (Map_Pragma_Name, Pragma_Name_Mapped):
! 	Keep a mapping from new pragma names to old names.
! 	* sem_prag.adb: Check legality of pragma Rename_Pragma, and
! 	implement it by calling Map_Pragma_Name.
! 	* checks.adb, contracts.adb, einfo.adb, errout.adb,
! 	* exp_attr.adb, exp_ch3.adb, exp_ch6.adb, exp_ch7.adb, exp_ch9.adb,
! 	* exp_prag.adb, exp_util.adb, freeze.adb, frontend.adb, ghost.adb,
! 	* inline.adb, lib-writ.adb, scans.adb, scans.ads, sem_attr.adb,
! 	* sem_aux.adb, sem_ch10.adb, sem_ch13.adb, sem_ch6.adb, sem_ch9.adb,
! 	* sem_elab.adb, sem_res.adb, sem_util.adb, sem_util.ads,
! 	* sem_warn.adb: Call Pragma_Name_Mapped instead of Pragma_Name
! 	as appropriate.
! 
! 2017-01-06  Hristian Kirtchev  <kirtchev@adacore.com>
! 
! 	* exp_ch9.adb: Minor reformatting.
! 
! 2017-01-06  Tristan Gingold  <gingold@adacore.com>
! 
! 	* exp_ch9.ads, exp_ch9.adb (Build_Entry_Names): Remove (unused).
! 	* rtsfind.ads (RE_Task_Entry_Names_Array, RO_ST_Set_Entry_Names)
! 	(RE_Protected_Entry_Names_Array, RO_PE_Set_Entry_Names): Remove
! 	(unused).
! 	* s-taskin.ads, s-taskin.adb (Set_Entry_Names,
! 	Task_Entry_Names_Array, Task_Entry_Names_Access): Remove.
! 	* s-tpoben.ads, s-tpoben.adb (Set_Entry_Names,
! 	Protected_Entry_Names_Array, Protected_Entry_Names_Access): Remove.
! 
! 2017-01-06  Bob Duff  <duff@adacore.com>
! 
! 	* sinfo.ads, sinfo.adb (Map_Pragma_Name): Preparation work,
! 	dummy implementation of Map_Pragma_Name.
! 
! 2017-01-06  Tristan Gingold  <gingold@adacore.com>
! 
! 	* exp_ch9.adb (Expand_N_Protected_Type_Declaration): Make the
! 	entry_body variable constant.
! 	* s-taprob.ads (Entry_Body_Access): Move to s-tposen.
! 	* s-tpoben.ads (Protected_Entry_Body_Access): Now access
! 	to constant.
! 	* s-tposen.ads (Entry_Body_Access): Moved from s-taprob,
! 	now access to constant.
  
! 2017-01-06  Gary Dismukes  <dismukes@adacore.com>
  
! 	* einfo.ads, sem_res.adb, sem_attr.adb, sem_ch6.adb: Minor
! 	reformatting and typo fixes.
  
! 2017-01-06  Bob Duff  <duff@adacore.com>
  
! 	* snames.ads-tmpl: New names for pragma renaming.
! 	* snames.adb-tmpl (Is_Configuration_Pragma_Name): Minor cleanup.
! 	* par-prag.adb: Add new pragma name to case statement.
! 	* sem_prag.adb (Rename_Pragma): Initial cut at semantic analysis
! 	of the pragma.
! 	* sinfo.ads, sinfo.adb (Pragma_Name_Mapped): Preparation work,
! 	Dummy implementation of Pragma_Name_Mapped.
  
! 2017-01-06  Ed Schonberg  <schonberg@adacore.com>
  
! 	* exp_ch6.adb (Expand_Protected_Subprogram_Call): Add guard to
! 	better detect call within an entry_wrapper.
! 	* sem_res.adb (Resolve_Call): A protected call within an
! 	entity_wrapper is analyzed in the context of the protected
! 	object but corresponds to a pre-analysis and is not an access
! 	before elaboration.
! 	* sem_attr.adb: Minor reformatting.
  
! 2017-01-06  Justin Squirek  <squirek@adacore.com>
  
! 	* sem_attr.adb (Analyze_Attribute): Modify semantic checks for
! 	Finalization_Size to allow a prefix of any non-class-wide type.
! 	* sem_attr.ads Modify comment for Finalization_Size to include
! 	definite type use case.
  
! 2017-01-06  Ed Schonberg  <schonberg@adacore.com>
  
! 	* einfo.ads, einfo.adb (Is_Entry_Wrapper): New flag, defined
! 	on procedures that are wrappers created for entries that have
! 	preconditions.
! 	* sem_ch6.adb (Analyze_Subrogram_Body_Helper): If the subprogram
! 	body is an entry_wrapper, compile it in the context of the
! 	synchronized type, because a precondition may refer to funtions
! 	of the type.
! 	* exp_ch9.adb (Build_Contract_Wrapper): Set Is_Entry_Wrapper on
! 	body entity.
! 	* exp_ch6.adb (Expand_Protected_Subprogram_Call): if the call is
! 	within an Entry_Wrapper this is an external call whose target
! 	is the synchronized object that is the actual in the call to
! 	the wrapper.
  
! 2017-01-06  Yannick Moy  <moy@adacore.com>
  
! 	* sem_attr.adb (Analyze_Attribute/Attribute_Loop_Entry): Analyze node
! 	in tree, which means not analyzing the previous prefix if the node has
! 	been rewritten into its prefix.
  
! 2017-01-06  Gary Dismukes  <dismukes@adacore.com>
  
! 	* s-tpobop.adb: Minor reformatting.
  
! 2017-01-06  Ed Schonberg  <schonberg@adacore.com>
  
! 	* checks.adb (Ensure_Valid): Do not generate a validity check
! 	within a generated predicate function, validity checks will have
! 	been applied earlier when required.
  
! 2017-01-06  Tristan Gingold  <gingold@adacore.com>
  
! 	* s-tpoben.ads (Protection_Entries): Add comment and reorder
! 	components for performances.
! 	* s-tpobop.adb (PO_Do_Or_Queue): Implement Max_Queue_Length runtime
! 	semantic.
  
! 2017-01-06  Ed Schonberg  <schonberg@adacore.com>
  
! 	* sem_eval.adb (Check_Expression_Against_Static_Predicate):
! 	If expression is compile-time known and obeys a static predicate
! 	it must be labelled as static, to prevent spurious warnings and
! 	run-time errors, e.g. in case statements. This is relevant when
! 	the expression is the result of constant-folding a type conversion
! 	whose expression is a variable with a known static value.
  
! 2017-01-06  Hristian Kirtchev  <kirtchev@adacore.com>
  
! 	* exp_attr.adb, sem_attr.ads: Minor reformatting.
  
! 2017-01-06  Justin Squirek  <squirek@adacore.com>
  
! 	* exp_attr.adb (Expand_N_Attribute_Reference): Add entry for
! 	expansion of Finalization_Size attribute.
! 	* sem_attr.adb (Analyze_Attribute): Add entry to check the
! 	semantics of Finalization_Size.
! 	(Eval_Attribute): Add null entry for Finalization_Size.
! 	* sem_attr.ads: Add Finalization_Size to the implementation
! 	dependent attribute list.
! 	* snames.ads-tmpl: Add name entry for Finalization_Size attribute.
  
! 2017-01-06  Ed Schonberg  <schonberg@adacore.com>
  
! 	* sem_ch5.adb (Analyze_Loop_Statement): If the loop includes an
! 	iterator specification with a serious syntactic error, transform
! 	construct into an infinite loop in order to continue analysis
! 	and prevent a compiler abort.
  
! 2017-01-06  Tristan Gingold  <gingold@adacore.com>
  
! 	* exp_ch9.adb (Expand_N_Protected_Type_Declaration): Do not generate
! 	max_queue_lengths_array if unused.
  
! 2017-01-06  Bob Duff  <duff@adacore.com>
  
! 	* errout.adb (Set_Msg_Text): Protect against out-of-bounds
! 	array access, in case "\" is at the end of Text.
! 	* stylesw.adb (Set_Style_Check_Options): Don't include input
! 	characters in the error message template, because they could
! 	be control characters such as "\", which Errout will try to
! 	interpret.
  
! 2017-01-06  Ed Schonberg  <schonberg@adacore.com>
  
! 	* sem_ch4.adb (Find_Indexing_Operations, Inspect_Declarations):
! 	For a private type examine the visible declarations that follow
! 	the partial view, not just the private declarations that follow
! 	the full view.
  
! 2017-01-06  Hristian Kirtchev  <kirtchev@adacore.com>
  
! 	* exp_ch5.adb, sem_ch3.adb, checks.adb: Minor reformatting and
! 	code cleanup.
  
! 2017-01-06  Ed Schonberg  <schonberg@adacore.com>
  
! 	* exp_ch5.adb (Get_Default_Iterator): For a derived type, the
! 	alias of the inherited op is the parent iterator, no need to
! 	examine dispatch table positions which might not be established
! 	yet if type is not frozen.
! 	* sem_disp.adb (Check_Controlling_Formals): The formal of a
! 	predicate function may be a subtype of a tagged type.
! 	* sem_ch3.adb (Complete_Private_Subtype): Adjust inheritance
! 	of representation items for the completion of a type extension
! 	where a predicate applies to the partial view.
! 	* checks.ads, checks.adb (Apply_Predicate_Check): Add optional
! 	parameter that designates function whose actual receives a
! 	predicate check, to improve warning message when the check will
! 	lead to infinite recursion.
! 	* sem_res.adb (Resolve_Actuals): Pass additional parameter to
! 	Apply_Predicate_Check.
  
! 2017-01-06  Tristan Gingold  <gingold@adacore.com>
  
! 	* s-rident.ads (Profile_Info): Remove No_Entry_Queue from
! 	Gnat_Extended_Ravenscar.
! 	* exp_ch9.adb, s-tpoben.adb, s-tpoben.ads: Fix spelling.
  
! 2017-01-06  Gary Dismukes  <dismukes@adacore.com>
  
! 	* sem_util.ads: Minor typo fix and reformatting.
  
! 2017-01-06  Yannick Moy  <moy@adacore.com>
  
! 	* ghost.adb Minor fixing of references to SPARK RM.
! 	(Check_Ghost_Context): Check whether reference is to a lvalue
! 	before issuing an error about violation of SPARK RM 6.9(13)
! 	when declaration has Ghost policy Check and reference has Ghost
! 	policy Ignore.
! 	* sem_util.adb Minor indentation.
! 	* sem_ch10.adb (Analyze_Package_Body_Stub, Analyze_Protected_Body_Stub,
! 	Analyze_Task_Body_Stub): Set Ekind of the defining identifier.
! 	* sem_util.ads (Unique_Defining_Entity): Document the result
! 	for package body stubs.
  
! 2017-01-06  Tristan Gingold  <gingold@adacore.com>
  
! 	* raise-gcc.c (abort): Macro to call Abort_Propagation.
! 	* s-tpoben.ads (Protected_Entry_Queue_Max_Access): Make it access
! 	constant.
! 	* exp_ch9.adb (Expand_N_Protected_Type_Declaration):
! 	Do not generate the Entry_Max_Queue_Lengths_Array if all default
! 	values.
! 	* exp_util.adb (Corresponding_Runtime_Package): Consider
! 	Max_Queue_Length pragma.
  
! 2017-01-06  Justin Squirek  <squirek@adacore.com>
  
! 	* exp_ch9.adb (Expand_N_Protected_Type_Declaration):
! 	Remove declaration generation in the case of
! 	System_Tasking_Protected_Objects_Single_Entry being used,
! 	and add a warning message when this is detected to occur.
! 	(Make_Initialize_Protection): Remove reference pass in the case
! 	of System_Tasking_Protected_Objects_Single_Entry.
! 	* rtsfind.ads: Remove RE_Protected_Entry_Queue_Max
! 	* s-tposen.adb (Initialize_Protection_Entry): Remove
! 	Entry_Queue_Max parameter.
! 	* s-tposen.ads: Remove the types use to store the entry queue
! 	maximum.
! 	* sem_prag.adb (Analyze_Pragma): Remove entry families restriction
  
! 2017-01-06  Yannick Moy  <moy@adacore.com>
  
! 	* sem_util.adb, sem_util.ads (Get_Enum_Lit_From_Pos): Strengthen
! 	behavior of function, to also accept out of range positions
! 	and raise Constraint_Error in such case, and to copy sloc from
! 	literal if No_Location passed as location.
! 	* uintp.adb, uintp.ads (UI_To_Int, UI_To_CC): Strengthen behavior
! 	of functions to raise Constraint_Error in case of value not in
! 	appropriate range.
  
! 2017-01-06  Tristan Gingold  <gingold@adacore.com>
  
! 	* sem_util.adb, s-taprop-linux.adb (Finalize_TCB): Remove call to
! 	Invalidate_Stack_Cache.
  
! 2017-01-06  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* s-os_lib.adb: Minor fix to the signature of Readlink.
  
! 2017-01-06  Javier Miranda  <miranda@adacore.com>
  
! 	* sem_ch6.adb (Conforming_Types): Handle another
! 	confusion between views in a nested instance with an actual
! 	private type whose full view is not in scope.
  
! 2017-01-06  Arnaud Charlet  <charlet@adacore.com>
  
! 	* exp_ch5.adb (Expand_N_If_Statement): Obey existing comment and
! 	mark a rewritten if statement as explicit (Comes_From_Source).
  
! 2017-01-06  Gary Dismukes  <dismukes@adacore.com>
  
! 	* sem_prag.adb, rtsfind.adb, sem_util.adb: Minor typo fixes.
  
! 2017-01-06  Tristan Gingold  <gingold@adacore.com>
  
! 	* ada.ads, a-unccon.ads: Add pragma No_Elaboration_Code_All.
  
! 2017-01-06  Hristian Kirtchev  <kirtchev@adacore.com>
  
! 	* sem_case.adb: Minor reformatting.
  
! 2017-01-06  Thomas Quinot  <quinot@adacore.com>
  
! 	* g-socthi-mingw.adb: Remove now extraneous USE TYPE clause
  
! 2017-01-06  Justin Squirek  <squirek@adacore.com>
  
! 	* aspects.adb: Register aspect in Canonical_Aspect.
! 	* aspects.ads: Associate qualities of Aspect_Max_Queue_Length
! 	into respective tables.
! 	* einfo.ads, einfo.adb: Add a new attribute for
! 	handling the parameters for Pragma_Max_Entry_Queue
! 	(Entry_Max_Queue_Lengths_Array) in E_Protected_Type. Subprograms
! 	for accessing and setting were added as well.
! 	* par-prag.adb (Prag): Register Pramga_Max_Entry_Queue.
! 	* exp_ch9.adb (Expand_N_Protected_Type_Declaration): Emit
! 	declaration for pramga arguments and store them in the protected
! 	type node.
! 	(Make_Initialize_Protection): Pass a reference to
! 	the Entry_Max_Queue_Lengths_Array in the protected type node to
! 	the runtime.
! 	* rtsfind.adb: Minor grammar fix.
! 	* rtsfind.ads: Register new types taken from the
! 	runtime libraries RE_Protected_Entry_Queue_Max and
! 	RE_Protected_Entry_Queue_Max_Array
! 	* s-tposen.adb, s-tpoben.adb
! 	(Initialize_Protection_Entry/Initialize_Protection_Entries):
! 	Add extra parameter and add assignment to local object.
! 	* s-tposen.ads, s-tpoben.ads: Add new types to
! 	store entry queue maximums and a field to the entry object record.
! 	* sem_ch13.adb (Analyze_Aspect_Specifications): Add case statement
! 	for Aspect_Max_Queue_Length.
! 	(Check_Aspect_At_Freeze_Point):
! 	Add aspect to list of aspects that don't require delayed analysis.
! 	* sem_prag.adb (Analyze_Pragma): Add case statement for
! 	Pragma_Max_Queue_Length, check semantics, and register arugments
! 	in the respective entry nodes.
! 	* sem_util.adb, sem_util.ads Add functions Get_Max_Queue_Length
! 	and Has_Max_Queue_Length
! 	* snames.ads-tmpl: Add constant for the new aspect-name
! 	Name_Max_Queue_Length and corrasponding pragma.
  
! 2017-01-06  Hristian Kirtchev  <kirtchev@adacore.com>
  
! 	* exp_util.adb (Is_Controlled_Function_Call):
! 	Reimplemented. Consider any node which has an entity as the
! 	function call may appear in various ways.
  
! 2017-01-06  Hristian Kirtchev  <kirtchev@adacore.com>
  
! 	* exp_attr.adb (Rewrite_Stream_Proc_Call): Use
! 	an unchecked type conversion when performing a view conversion
! 	to/from a private type. In all other cases use a regular type
! 	conversion to ensure that any relevant checks are properly
! 	installed.
  
! 2017-01-06  Hristian Kirtchev  <kirtchev@adacore.com>
  
! 	* sem_prag.adb, sem_ch8.adb: Minor reformatting.
  
! 2017-01-06  Ed Schonberg  <schonberg@adacore.com>
  
! 	* sem_case.adb (Explain_Non_Static_Bound): Suppress cascaded
! 	error on case expression that is an entity, when coverage is
! 	incomplete and entity has a static value obtained by local
! 	propagation.
! 	(Handle_Static_Predicate): New procedure, subsidiary of
! 	Check_Choices, to handle case alternatives that are either
! 	subtype names or subtype indications involving subtypes that
! 	have static predicates.
  
! 2017-01-06  Thomas Quinot  <quinot@adacore.com>
  
! 	* s-oscons-tmplt.c, g-socket.adb, g-socket.ads, g-sothco.ads:
! 	(GNAT.Socket): Add support for Busy_Polling and Generic_Option
  
! 2017-01-06  Bob Duff  <duff@adacore.com>
  
! 	* sem_elab.adb (Activate_Elaborate_All_Desirable): Don't add
! 	Elaborate_All(P) to P itself. That could happen in obscure cases,
! 	and always introduced a cycle (P body must be elaborated before
! 	P body).
! 	* lib-writ.ads: Comment clarification.
! 	* ali-util.ads: Minor comment fix.
! 	* ali.adb: Minor reformatting.
  
! 2017-01-06  Tristan Gingold  <gingold@adacore.com>
  
! 	* a-exexpr-gcc.adb: Improve comment.
  
! 2017-01-03  James Cowgill  <James.Cowgill@imgtec.com>
  
! 	* s-linux-mips.ads: Use correct signal and errno constants.
! 	(sa_handler_pos, sa_mask_pos): Fix offsets for 64-bit MIPS.
  
! 2017-01-03  James Cowgill  <James.Cowgill@imgtec.com>
  
! 	* s-linux-mips.ads: Rename from s-linux-mipsel.ads.
! 	* gcc-interface/Makefile.in (MIPS/Linux): Merge mips and mipsel
! 	sections.
  
! 2017-01-01  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* gnatvsn.ads: Bump copyright year.
  
! 2017-01-01  Jakub Jelinek  <jakub@redhat.com>
  
! 	* gnat_ugn.texi: Bump @copying's copyright year.
! 	* gnat_rm.texi: Likewise.
  
! Copyright (C) 2017 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,463 ----
! 2018-05-02  Release Manager
  
! 	* GCC 8.1.0 released.
  
! 2018-04-25  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR ada/85007
! 	* gnat_ugn.texi: Regenerate.
  
! 2018-03-23  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR ada/85007
! 	* gnatlink.adb (Gnatlink): Remove handling of -b switch.
! 	* doc/gnat_ugn/building_executable_programs_with_gnat.rst (gnatlink):
! 	Remove documentation of -b switch.
  
! 2018-03-23  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR ada/85036
! 	* gnatlink.adb (Process_Args): Drop existing link switches if multiple
! 	switches are passed for --LINK.
  
! 2018-03-12  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR ada/82813
! 	* gcc-interface/misc.c (gnat_post_options): Disable string overflow
! 	warnings.
  
! 2018-03-10  Eric Botcazou  <ebotcazou@adacore.com>
  
  	* gcc-interface/trans.c (node_has_volatile_full_access) <N_Identifier>:
! 	Consider only entities for objects.
  
! 2018-03-07  Sebastian Huber  <sebastian.huber@embedded-brains.de>
  
! 	* gcc-interface/Makefile.in (OSCONS_CPP): Remove redundant
! 	$(GNATLIBCFLAGS).
! 	(OSCONS_EXTRACT): Add $(GNATLIBCFLAGS_FOR_C).
  
! 2018-03-06  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* gcc-interface/trans.c (convert_with_check): Fix typo in the condition
! 	guarding the overflow check emitted for the upper bound of a floating-
! 	point conversion.
  
! 2018-03-06  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* gcc-interface/utils.c (def_builtin_1): Bail out on error_mark_node.
  
! 2018-02-28  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* libgnat/i-cexten.ads (Float_128): New type.
  
! 2018-02-02  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* gcc-interface/decl.c (array_type_has_nonaliased_component): Return
! 	false if the component type is a pointer.
  
! 2018-01-11  Gary Dismukes  <dismukes@adacore.com>
  
! 	* exp_ch3.adb (Default_Initialize_Object): Call New_Copy_Tree on the
! 	result of Get_Simple_Init_Value and pass the source location of the
! 	object declaration's object_definition.
  
! 2018-01-11  Ed Schonberg  <schonberg@adacore.com>
  
! 	* exp_ch6.adb (Make_Build_In_Place_Call_In_Object_Declaration): Handle
! 	properly object declarations with initializations that are
! 	build-in-place function calls, when there is an address specification,
! 	either as an aspect specification or an explicit attribute
! 	specification clause, for the initialized object.
! 	* freeze.adb (Check_Address_Clause): Do not remove side-effects from
! 	initial expressions in the case of a build-in-place call.
  
! 2018-01-11  Piotr Trojanek  <trojanek@adacore.com>
  
! 	* sem_eval.adb (Is_Null_Range): Retrieve the full view when called on a
! 	private (sub)type; refactor to avoid early return statement.
! 	(Not_Null_Range): Same as above.
  
! 2018-01-11  Hristian Kirtchev  <kirtchev@adacore.com>
  
! 	* freeze.adb (Freeze_Entity): Ensure that a Ghost type is not
! 	concurrent, nor effectively volatile.
! 	* ghost.adb (Check_Ghost_Type): New routine.
! 	* ghost.ads (Check_Ghost_Type): New routine.
! 	* sem_util.adb (Is_Declaration): Reimplemented. The routine can now
! 	consider specific subsets of declarations.
! 	(Is_Declaration_Other_Than_Renaming): Removed. Its functionality is
! 	replicated by Is_Declaration.
! 	* sem_util.ads (Is_Declaration): New parameter profile. Update the
  	comment on usage.
+ 	(Is_Declaration_Other_Than_Renaming): Removed.
  
! 2018-01-11  Hristian Kirtchev  <kirtchev@adacore.com>
  
! 	* sem_ch5.adb (Analyze_Assignment): Assignments to variables that act
! 	as Part_Of consituents of single protected types are illegal when they
! 	take place inside a protected function.
! 	(Diagnose_Non_Variable_Lhs): Use Within_Function to check for an
! 	enclosing function.
! 	(Is_Protected_Part_Of_Constituent): New routine.
! 	(Within_Function): New routine.
  
! 2018-01-11  Arnaud Charlet  <charlet@adacore.com>
  
! 	Bump copyright notices to 2018.
  
! 2018-01-11  Hristian Kirtchev  <kirtchev@adacore.com>
  
! 	* binde.adb, par-ch6.adb, par-ch9.adb, sem_ch12.adb, sem_ch13.adb:
  	Minor reformatting.
  
! 2018-01-11  Justin Squirek  <squirek@adacore.com>
  
! 	* par-ch6.adb (Scan_Body_Or_Expression_Function): Add additional check
! 	to make sure a given expression function is properly parenthesized.
  
! 2018-01-11  Hristian Kirtchev  <kirtchev@adacore.com>
  
! 	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Check the
! 	categorization of a subprogram body which does not complete a previous
! 	declaration.
  
! 2018-01-11  Hristian Kirtchev  <kirtchev@adacore.com>
  
! 	* sem_ch10.adb (Check_Private_Child_Unit): Ensure that the enclosing
! 	scope of package Ada is Standard.
  
! 2018-01-11  Ed Schonberg  <schonberg@adacore.com>
  
! 	* sem_ch13.adb (Replace_Type_Ref): Handle properly reference to a
! 	subcomponent of the current entity when building the body for a dynamic
! 	predicate function for a record with composite subcomponents.
  
! 2018-01-11  Hristian Kirtchev  <kirtchev@adacore.com>
  
! 	* exp_aggr.adb (Convert_Aggr_In_Object_Decl): Update the call to
! 	Establish_Transient_Scope.
! 	(Convert_To_Assignments): Update the call to Establish_Transient_Scope.
! 	(Expand_Array_Aggregate): Update the call to Establish_Transient_Scope.
! 	* exp_ch6.adb (Expand_Call_Helper): Update the call to
! 	Establish_Transient_Scope.
! 	(Make_Build_In_Place_Call_In_Object_Declaration): Update the call to
! 	Establish_Transient_Scope.
! 	* exp_ch7.adb (Establish_Transient_Scope): Restructured. Delegate the
! 	management of the secondary stack to an enclosing scope if there is no
! 	suitable construct to wrap, and the transient scope was intended to
! 	manage the secondary stack.
! 	(Find_Node_To_Be_Wrapped): Restructured. A case_statement_alternative
! 	is a valid boundary for a transient expression which comes from the
! 	statements of the alternative, otherwise alternatives cannot be
! 	wrapped. Assignments of controlled objects which have controlled
! 	actions suppressed now stop the traversal as there is no point in
! 	looking for an enclosing construct. Add several N_xxx_Body choices to
! 	the termination conditions for completeness.
! 	* exp_ch7.ads (Establish_Transient_Scope): Update the parameter profile
! 	and the associated comment on usage.
! 	* exp_smem.adb (Add_Shared_Var_Lock_Procs): Update the call to
! 	Establish_Transient_Scope.
! 	(Add_Write_After): Update the call to Establish_Transient_Scope.
! 	* sem_res.adb (Check_Initialization_Call): Removed.
! 	(Resolve_Actuals): Account for additional cases where finalization
! 	actions are required by utilizing predicate Needs_Finalization rather
! 	than Is_Controlled.
! 	(Resolve_Call): Type initialization procedures can now utilize
! 	transient scopes to manage the secondary stack, thus preventing leaks
! 	during initialization.  Remove the previous kludgy algorithm which
! 	attempts to manage the secondary stack at the object creation site.
  
! 2018-01-11  Jerome Lambourg  <lambourg@adacore.com>
  
! 	* libgnat/g-soliop__qnx.ads: New.
! 	* adaint.c, adaint.h, cstreams.c, s-oscons-tmplt.c, sysdep.c: Update
! 	for QNX.
  
! 2018-01-11  Bob Duff  <duff@adacore.com>
  
! 	* par-ch9.adb (P_Protected_Operation_Declaration_Opt): Give an error if
! 	a null procedure occurs in a protected definition.
  
! 2018-01-11  Bob Duff  <duff@adacore.com>
  
! 	* binderr.ads, namet.ads: Minor reformatting.
  
! 2018-01-11  Bob Duff  <duff@adacore.com>
  
! 	* doc/gnat_ugn/gnat_utility_programs.rst: Improve documentation of
! 	xml2gnat.
  
! 2018-01-11  Bob Duff  <duff@adacore.com>
  
! 	* binde.adb (Force_Elab_Order): Give an error if there are duplicate
! 	unit names.
  
! 2018-01-11  Ed Schonberg  <schonberg@adacore.com>
  
! 	* sem_ch6.adb (Freeze_Expr_Types): If an access value is the
! 	controlling argument of a dispatching call. freeze the corresponding
! 	designated type.
  
! 2018-01-11  Ben Brosgol  <brosgol@adacore.com>
  
! 	* doc/Makefile: Add Sphinx option -W to treat warnings as errors.
  
! 2018-01-11  Ben Brosgol  <brosgol@adacore.com>
  
! 	* doc/gnat_rm/implementation_defined_aspects.rst: Minor type/wording
! 	corrections.
! 	* gnat_rm.texi: Regenerate.
  
! 2018-01-11  Ed Schonberg  <schonberg@adacore.com>
  
! 	* sem_ch12.adb (Check_Fixed_Point_Type): Do not apply check if the
! 	formsl type corresponding to the actual fixed point type is private,
! 	because in this case there can be no suspicious arithmetic operations
! 	in the generic unless they reference a formal subprogram.  Clarify
! 	warning.
  
! 2018-01-11  Javier Miranda  <miranda@adacore.com>
  
! 	* exp_util.adb (Remove_Side_Effects): No action done for functions
! 	returning class-wide types since it requires generating code using
! 	'reference and the CCG target has no secondary stack.
! 	* gnat1drv.adb: Disable building static dispatch tables when generating
! 	C code.
  
! 2018-01-11  Piotr Trojanek  <trojanek@adacore.com>
  
! 	* libgnat/a-direio.ads, libgnat/a-sequio.ads, libgnat/a-ststio.ads,
! 	libgnat/a-textio.ads, libgnat/a-witeio.ads, libgnat/a-ztexio.ads
! 	(File_Type): Add Default_Initial_Condition aspect.
  
! 2018-01-11  Pascal Obry  <obry@adacore.com>
  
! 	* libgnat/s-os_lib.adb (Normalize_Pathname): New implementation.
  
! 2018-01-11  Bob Duff  <duff@adacore.com>
  
! 	* doc/gnat_ugn/gnat_utility_programs.rst: Rewrite gnatpp documentation
! 	to match what the Libadalang-based version does.
! 	* doc/gnat_ugn/about_this_guide.rst: Update reference.
  
! 2018-01-11  Hristian Kirtchev  <kirtchev@adacore.com>
  
! 	* sem_res.adb (Uses_SS): A controlled type requires the secondary stack
! 	if it contains at least one component declaration employing a function
! 	call returning on the secondary stack.
  
! 2018-01-11  Yannick Moy  <moy@adacore.com>
  
! 	* doc/gnat_rm/standard_and_implementation_defined_restrictions.rst:
! 	Update description of restriction SPARK_05 with SPARK 2014.
! 	* gnat_rm.texi: Regenerate.
  
! 2018-01-11  Vasiliy Fofanov  <fofanov@adacore.com>
  
! 	* doc/gnat_ugn/gnat_utility_programs.rst: Fix layout.
  
! 2018-01-11  Hristian Kirtchev  <kirtchev@adacore.com>
  
! 	* exp_aggr.adb, exp_ch9.adb, exp_util.adb, sem_aggr.adb, sem_ch3.adb,
! 	sem_res.adb, sem_util.adb: Minor reformatting.
  
! 2018-01-11  Ed Schonberg  <schonberg@adacore.com>
  
! 	* sem_prag.adb (Analyze_Pragma, case Predicate): Indicate that the type
! 	has a delayed aspect which must be processed at the point the type is
! 	frozen. This mimics what is done when the predicate is provided by a
! 	source aspect.
  
! 2018-01-11  Doug Rupp  <rupp@adacore.com>
  
! 	* init.c (vxworks): Add macro checks for __aarch64__.
  
! 2018-01-11  Hristian Kirtchev  <kirtchev@adacore.com>
  
! 	* exp_util.adb (Add_Failure_Expression): New routine.
! 	(Make_Predicate_Check): Reimplement the handling of Predicate_Failure.
! 	* sem_util.adb (Is_Current_Instance): Code cleanup.
  
! 2018-01-11  Patrick Bernardi  <bernardi@adacore.com>
  
! 	* libgnat/s-parame*.adb, libgnat/s-parame*.ads: Remove unneeded
! 	Default_Sec_Stack_Size.
! 	* libgnat/s-secsta.adb (SS_Allocate): Handle the fixed secondary stack
! 	limit check so that the integer index does not overflow. Check the
! 	dynamic stack allocation does not cause the secondary stack pointer to
! 	overflow.
! 	(SS_Info): Align colons.
! 	(SS_Init): Cover the case when bootstraping with an old compiler that
! 	does not set Default_SS_Size.
  
! 2018-01-11  Ed Schonberg  <schonberg@adacore.com>
  
! 	* sem_ch3.adb (Add_Internal_Interface_Entities): When checking the
! 	legality of an inherited operation that may require overriding, ignore
! 	primitive_wrappers that correspond to explicit operations that override
! 	an interface primitive.
! 	* exp_util.adb (Build_Class_Wide_Expression, Replace_Entity): If the
! 	operation to which the class-wide expression applies is a protected op.
! 	with a primitive_wrapper, verify that the updated inherited expression
! 	does not contain an internal call to a protected function.  This
! 	completes the implementation of AI12-0166.
  
! 2018-01-11  Hristian Kirtchev  <kirtchev@adacore.com>
  
! 	* ali.adb: Document the remaining letters available for ALI lines.
! 	(Scan_ALI): A with clause is internal when it is encoded on a 'Z' line.
! 	* ali.ads: Update type With_Record. Field
! 	Implicit_With_From_Instantiation is no longer in use. Add field
! 	Implicit_With.
! 	* csinfo.adb (CSinfo): Remove the setup for attribute
! 	Implicit_With_From_Instantiation.
! 	* lib-writ.adb (Collect_Withs): Correct the logic which marks a unit as
! 	either implicitly or explicitly withed.
! 	(Is_Implicit_With_Clause): New routine.
! 	(Write_ALI): Rename array Implicit_With to Has_Implicit_With to avoid
! 	confusion with the with clause attribute by the same name.
! 	(Write_With_Lines): Update the emission of 'W', 'Y', and 'Z' headers.
! 	* rtsfind.adb (Maybe_Add_With): Code cleanup.
! 	* sem_ch8.adb (Present_System_Aux): Code cleanup.
! 	* sem_ch10.adb (Expand_With_Clause): Mark the with clause as generated
! 	for a parent unit.
! 	(Implicit_With_On_Parent): Mark the with clause as generated for a
! 	parent unit.
! 	* sem_ch12.adb (Inherit_Context): With clauses inherited by an
! 	instantiation are no longer marked as Implicit_With_From_Instantiation
! 	because they are already marked as implicit.
! 	* sem_elab.adb (Ensure_Prior_Elaboration_Static): Remove the kludge
! 	which marks implicit with clauses as related to an instantiation.
! 	* sinfo.adb (Implicit_With_From_Instantiation): Removed.
! 	(Parent_With): New routine.
! 	(Set_Implicit_With_From_Instantiation): Removed.
! 	(Set_Parent_With): New routine.
! 	* sinfo.ads: Update the documentation of attribute Implicit_With.
! 	Remove attribute Implicit_With_From_Instantiation along with
! 	occurrences in nodes.  Add attribute Parent_With along with occurrences
! 	in nodes.
! 	(Implicit_With_From_Instantiation): Removed along with pragma Inline.
! 	(Parent_With): New routine along with pragma Inline.
! 	(Set_Implicit_With_From_Instantiation): Removed along with pragma Inline.
! 	(Set_Parent_With): New routine along with pragma Inline.
  
! 2018-01-11  Hristian Kirtchev  <kirtchev@adacore.com>
  
! 	* sem_util.adb (Find_Enclosing_Scope): Return the unique defining
! 	entity when the enclosing construct is a body.
  
! 2018-01-11  Patrick Bernardi  <bernardi@adacore.com>
  
! 	* exp_ch9.adb (Expand_N_Task_Type_Declaration): Simplified
! 	Secondary_Stack_Size handling as a pragma is now generated for the
! 	corresponding aspect instead of an attribute.  Pragma expression is
! 	relocated instead of evaluated. Discriminant of the corresponding
! 	record type is referenced rather than the type discriminant.
! 	(Create_Secondary_Stack_For_Task, Make_Task_Create_Call): Update
! 	Secondary_Stack_Size rep item checks to only look for the pragma rep.
! 	* sem_ch13.adb (Analyze_One_Aspect): Transform
! 	Aspect_Secondary_Stack_Size into a pragma instead of an attribute
! 	because the attribute does not have visibility on a task type's
! 	discriminants when the type's definition is expanded.
! 	(Analyze_Attribute_Definition_Clause): Remove handling of
! 	Attribute_Secondary_Stack_Size.
! 	* snames.adb-tmpl, snames.ads-tmpl: Remove
! 	Attribute_Secondary_Stack_Size, no longer used.
  
! 2018-01-11  Justin Squirek  <squirek@adacore.com>
  
! 	* sem_ch8.adb: Minor comment fix.
  
! 2018-01-11  Hristian Kirtchev  <kirtchev@adacore.com>
  
! 	* exp_ch4.adb (Process_Action): Do not abandon the inspection of an
! 	individual action because the action may denote a complex expression,
! 	such as a case statement, which in turn may contain additional
! 	transient objects.
  
! 2018-01-11  Ed Schonberg  <schonberg@adacore.com>
  
! 	* sem_aggr.adb (Resolve_Iterated_Component_Association): Perform
! 	analysis on a copy of the expression with a copy of the index variable,
! 	because full expansion will rewrite construct into a loop with the
! 	original loop variable.
! 	* exp_aggr.adb (Gen_Assign): Defer analysis and resolution if the
! 	expression is an iterated component association. Full analysis takes
! 	place when construct is rewritten as a loop.
! 	(In_Place_Assign_OK, Safe_Component): An iterated_component_association
! 	is not safe for in-place assignment.
! 	* sem_util.adb (Remove_Entity): Handle properly the case of an isolated
! 	entity with no homonym and no other entity in the scope.
  
! 2018-01-11  Justin Squirek  <squirek@adacore.com>
  
! 	* sem_prag.adb (Analyze_Pragma:Pragma_Loop_Variant): Modify error
! 	message to be printed on the pragma argument identifier.
  
! 2018-01-11  Hristian Kirtchev  <kirtchev@adacore.com>
  
! 	* exp_util.adb (Build_Invariant_Procedure_Declaration): Set the last
! 	entity of the generated invariant procedure in order to construct a
! 	proper entity chain.
  
! 2018-01-11  Piotr Trojanek  <trojanek@adacore.com>
  
! 	* sem_ch13.adb (Build_Predicate_Functions): Fix minor issues in
! 	comment.
  
! 2018-01-11  Arnaud Charlet  <charlet@adacore.com>
  
! 	* einfo.ads, einfo.adb (Activation_Record_Component,
! 	Set_Activation_Record_Component, Set_Is_Uplevel_Referenced_Entity):
! 	Allow E_Discriminant.
  
! 2018-01-10  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* gcc-interface/decl.c (gnat_to_gnu_component_type): Apply the check
! 	for atomic access once the component size is taken into account and
! 	also do it if the component type is Atomic or Volatile_Full_Access.
  
! 2018-01-04  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* gnatvsn.ads: Bump copyright year.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* gcc-interface/misc.c (enumerate_modes): Treat GET_MODE_BITSIZE
! 	as polynomial.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* gcc-interface/misc.c (enumerate_modes): Treat GET_MODE_PRECISION
! 	as polynomial.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* gcc-interface/utils.c (gnat_types_compatible_p): Handle
! 	polynomial TYPE_VECTOR_SUBPARTS.
  
! 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
! 	    Alan Hayward  <alan.hayward@arm.com>
! 	    David Sherwood  <david.sherwood@arm.com>
  
! 	* gcc-interface/misc.c (enumerate_modes): Handle polynomial
! 	GET_MODE_NUNITS.
  
! 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
  
! 	Update copyright years.
  
!  	* gnat_ugn.texi: Bump @copying's copyright year.
!  	* gnat_rm.texi: Likewise.
  
! Copyright (C) 2018 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-7.3.0/gcc/ada/ChangeLog-2017 gcc-8.1.0/gcc/ada/ChangeLog-2017
*** gcc-7.3.0/gcc/ada/ChangeLog-2017	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/ChangeLog-2017	Wed Jan  3 09:17:54 2018
***************
*** 0 ****
--- 1,12773 ----
+ 2017-12-21  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/83535
+ 	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Always take
+ 	into account the Esize if it is known.
+ 
+ 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* gcc-interface/trans.c (Attribute_to_gnu): Track polynomial
+ 	offsets and sizes.
+ 	* gcc-interface/utils2.c (build_unary_op): Likewise.
+ 
+ 2017-12-20  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.c (Loop_Statement_to_gnu): Use IN_RANGE macro.
+ 	* gcc-interface/misc.c (gnat_get_array_descr_info): Likewise.
+ 	(default_pass_by_ref): Likewise.
+ 	* gcc-interface/decl.c (gnat_to_gnu_entity): Likewise.
+ 
+ 2017-12-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* gcc-interface/trans.c (Loop_Statement_to_gnu): Replace Yoda
+ 	conditions with typical order conditions.
+ 	* gcc-interface/misc.c (gnat_get_array_descr_info): Likewise.
+ 	(default_pass_by_ref): Likewise.
+ 	* gcc-interface/decl.c (gnat_to_gnu_entity): Likewise.
+ 	* adaint.c (__gnat_tmp_name): Likewise.
+ 
+ 2017-12-19  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	PR ada/66205
+ 	* bindgen.adb (Gen_AdaFinal): Revert previous change.
+ 
+ 2017-12-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* gcc-interface/utils.c (gnat_internal_attribute_table): Swap
+ 	affects_type_identity and handler fields, adjust comments.
+ 
+ 2017-12-15  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_aggr.adb (Aggr_Assignment_OK_For_Backend): Use Component_Size of
+ 	the innermost array instead of Esize of its component type to exclude
+ 	inappropriate array types, including packed array types.
+ 
+ 2017-12-15  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Input_Item): Allow concurrent types to appear
+ 	within the input list of Initializes. Remove the uses of Input_OK.
+ 
+ 2017-12-15  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_ch4.adb (Expand_N_In): Do not replace a membership test on a
+ 	scalar type with a validity test when the membership appears in a
+ 	predicate expression, to prevent a spurious error when predicate is
+ 	specified static.
+ 	* sem_ch13.adb (Build_Predicate_Functions): Add warning if a static
+ 	predicate, after constant-folding, reduces to True and is this
+ 	redundant.
+ 	* par-ch4.adb: Typo fixes and minor reformattings.
+ 
+ 2017-12-15  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_elab.adb (Ensure_Prior_Elaboration_Static): Mark the generated
+ 	with clause as being implicit for an instantiation in order to
+ 	circumvent an issue with 'W' and 'Z' line encodings in ALI files.
+ 
+ 2017-12-15  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_util.adb (Is_Potentially_Unevaluated): Detect further cases of
+ 	misuse of 'Old that appear within an expression that is potentially
+ 	unevaluated, when the prefix of the attribute does not statically
+ 	designate an object (e.g. a function call).
+ 
+ 2017-12-15  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch6.adb (Conformking_Types): Two incomplete types are conforming
+ 	when one of them is used as a generic actual, but only within an
+ 	instantiation.
+ 	* einfo.ads: Clarify use of flag Used_As_Generic_Actual.
+ 
+ 2017-12-15  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_attr.adb (Resolve_Attribute): Modify check for aliased view on
+ 	prefix to use the prefix's original node to avoid looking at expanded
+ 	conversions for certain array types.
+ 
+ 2017-12-15  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Membership_Op): Add warning on a membership
+ 	operation on a scalar type for which there is a user-defined equality
+ 	operator.
+ 
+ 2017-12-15  Yannick Moy  <moy@adacore.com>
+ 
+ 	* doc/gnat_rm/implementation_defined_pragmas.rst: Add Ghost assertion
+ 	policy.
+ 
+ 2017-12-15  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Initialization_Item): Remove the specialized
+ 	processing for a null initialization item. Such an item is always
+ 	illegal.
+ 
+ 2017-12-15  Bob Duff  <duff@adacore.com>
+ 
+ 	* types.ads, types.h, libgnat/a-except.adb, exp_ch11.adb
+ 	(PE_Build_In_Place_Mismatch): New reason code for raising when the
+ 	BIPalloc formal parameter is incorrect. This can happen if a compiler
+ 	bug causes a mismatch of build-in-place between caller and callee.
+ 	* exp_ch6.adb (Expand_N_Extended_Return_Statement): Use
+ 	PE_Build_In_Place_Mismatch.
+ 
+ 2017-12-15  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_ch4.ads, exp_ch4.adb (Expand_N_Reduction_Expression): New
+ 	procedure.
+ 	* exp_util.adb (Insert_Actions): Handle N_Reduction_Expression.
+ 	* expander.adb (Expand): Call Expand_N_Reduction_Expression
+ 	* par-ch4.adb (P_Reduction_Expression): New procedure.
+ 	(P_Iterated_Component_Assoc_Or_Reduction): New precedure, extension of
+ 	P_Iterated_Component_Association.
+ 	(OK_Reduction_Expression_Parameter): New procedure.
+ 	(P_Aggregate_Or_Paren_Expr): Improve error message for malformed delta
+ 	aggregate.
+ 	* sem.adb (Analyze): Call Analyze_Reduction_Expression and
+ 	Analyze_Reduction_Expression_Parameter
+ 	* sinfo.ads, sinfo.adb: New node kinds N_Reduction_Expression and
+ 	N_Reduction_Expression_Parameter.
+ 	* sem_ch4.ads, sem_ch4.adb (Analyze_Reduction_Expression,
+ 	Analyze_Reduction_Expression_Parameter): New procedures.
+ 	* sem_res.adb (Resolve): Handle Reduction_Expression and
+ 	Reduction_Expression_Parameter
+ 	* sem_spark.adb: Dummy entries for Reduction_Expression and
+ 	Reduction_Expression_Parameter
+ 	* sprint.adb (Sprint_Node_Actual): Print Reduction_Expression,
+ 	Reduction_Expression_Parameter
+ 
+ 2017-12-15  Bob Duff  <duff@adacore.com>
+ 
+ 	* einfo.ads: Comment fix.
+ 
+ 2017-12-15  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* s-vercon.adb: Minor style fixes.
+ 
+ 2017-12-15  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch6.adb (Freeze_Expr_Types): Do not emit a freeze node for an
+ 	itype that is the type of a discriminant-dependent component.
+ 
+ 2017-12-15  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Part_Of): The context-specific portion of the
+ 	analysis is now directed to several specialized routines.
+ 	(Check_Part_Of_Abstract_State): New routine.
+ 	(Check_Part_Of_Concurrent_Type): New routine. Reimplement the checks
+ 	involving the item, the single concurrent type, and their respective
+ 	contexts.
+ 	* sem_res.adb (Resolve_Entity_Name): Potential constituents of a single
+ 	concurrent type are now recorded regardless of the SPARK mode.
+ 	* sem_util.adb (Check_Part_Of_Reference): Split some of the tests in
+ 	individual predicates.  A Part_Of reference is legal when it appears
+ 	within the statement list of the object's immediately enclosing
+ 	package.
+ 	(Is_Enclosing_Package_Body): New routine.
+ 	(Is_Internal_Declaration_Or_Body): New routine.
+ 	(Is_Single_Declaration_Or_Body): New routine.
+ 	(Is_Single_Task_Pragma): New routine.
+ 
+ 2017-12-15  Patrick Bernardi  <bernardi@adacore.com>
+ 
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2017-12-15  Bob Duff  <duff@adacore.com>
+ 
+ 	* gnatvsn.ads: Minor comment fixes.
+ 
+ 2017-12-15  Patrick Bernardi  <bernardi@adacore.com>
+ 
+ 	* doc/gnat_ugn/gnat_and_program_execution.rst: Update section "Dynamic
+ 	Stack Usage Analysis" to include more details about GNAT_STACK_LIMIT.
+ 
+ 2017-12-15  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* exp_util.adb (Add_Own_DIC): Ensure that the expression of the pragma
+ 	is available (Is_Verifiable_DIC_Pragma): Moved from Sem_Util.
+ 	* sem_util.adb (Has_Full_Default_Initialization):
+ 	Has_Fully_Default_Initializing_DIC_Pragma is now used to determine
+ 	whether a type has full default initialization due to pragma
+ 	Default_Initial_Condition.
+ 	(Has_Fully_Default_Initializing_DIC_Pragma): New routine.
+ 	(Is_Verifiable_DIC_Pragma): Moved to Exp_Util.
+ 	* sem_util.ads (Has_Fully_Default_Initializing_DIC_Pragma): New
+ 	routine.
+ 	(Is_Verifiable_DIC_Pragma): Moved to Exp_Util.
+ 	* sem_warn.adb (Is_OK_Fully_Initialized):
+ 	Has_Fully_Default_Initializing_DIC_Pragma is now used to determine
+ 	whether a type has full default initialization due to pragma
+ 	Default_Initial_Condition.
+ 
+ 2017-12-15  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_prag.adb (Match_Constituent): Do not quietly accept constants as
+ 	suitable constituents.
+ 	* exp_util.adb: Minor reformatting.
+ 
+ 2017-12-15  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_aggr.adb (In_Place_Assign_OK): Extend the predicate to recognize
+ 	an array aggregate in an allocator, when the designated type is
+ 	unconstrained and the upper bound of the aggregate belongs to the base
+ 	type of the index.
+ 
+ 2017-12-15  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_ch6.adb (Expand_N_Extended_Return_Statement,
+ 	Expand_Simple_Function_Return): Assert that the b-i-p-ness of the
+ 	caller and callee match.  Otherwise, we would need some substantial
+ 	changes to allow b-i-p calls non-b-i-p, and vice versa.
+ 
+ 2017-12-15  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_unst.adb (Unnest_Subprograms): Nothing to do if the main unit is
+ 	a generic package body. Unnesting is only an issue when generating
+ 	code, and if the main unit is generic then nested instance bodies have
+ 	not been created and analyzed, and unnesting will crash in the absence
+ 	of those bodies,
+ 
+ 2017-12-15  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* inline.adb (Add_Inlined_Body): Do not add a function which is
+ 	completed by an expression function defined in the same context as the
+ 	initial declaration because the completing body is not in a package
+ 	body.
+ 	(Is_Non_Loading_Expression_Function): New routine.
+ 
+ 2017-12-15  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* debug.adb: Move the functionality of -gnatdL to -gnatd_i. Restore
+ 	the behavior of -gnatdL from before revision 255412.
+ 	* sem_elab.adb: Update the section of compiler switches.
+ 	(Build_Call_Marker): Do not create a marker for a call which originates
+ 	from an expanded spec or body of an instantiated gener, does not invoke
+ 	a generic formal subprogram, the target is external to the instance,
+ 	and -gnatdL is in effect.
+ 	(In_External_Context): New routine.
+ 	(Process_Conditional_ABE_Activation_Impl): Update the uses of -gnatdL
+ 	and associated flag.
+ 	(Process_Conditional_ABE_Call): Update the uses of -gnatdL and
+ 	associated flag.
+ 	* switch-c.adb (Scan_Front_End_Switches): Switch -gnatJ now sets switch
+ 	-gnatd_i.
+ 	* exp_unst.adb: Minor typo fixes and edits.
+ 
+ 2017-12-15  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch6.adb (Possible_Freeze): Do not set Delayed_Freeze on an
+ 	subprogram instantiation, now that the enclosing wrapper package
+ 	carries an explicit freeze node. THis prevents freeze nodes for the
+ 	subprogram for appearing in the wrong scope. This is relevant when the
+ 	generic subprogram has a private or incomplete formal type and the
+ 	instance appears within a package that declares the actual type for the
+ 	instantiation, and that type has itself a delayed freeze.
+ 
+ 2017-12-15  Patrick Bernardi  <bernardi@adacore.com>
+ 
+ 	* doc/gnat_ugn/gnat_and_program_execution.rst: Removed references to
+ 	the environment variable GNAT_STACK_LIMIT from the Stack Overflow
+ 	Checking section as it is no longer used by any of our supported
+ 	targets.
+ 
+ 2017-12-15  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_ch6.adb (Expand_N_Extended_Return_Statement): If the
+ 	Init_Assignment is rewritten, we need to set Assignment_OK on the new
+ 	node.  Otherwise, we will get spurious errors when initializing via
+ 	assignment statement.
+ 
+ 2017-12-15  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* exp_unst.adb (Visit_Node): Refine handling of 'Access to ignore non
+ 	relevant nodes.
+ 	(Has_Non_Null_Statements): Moved to sem_util for later reuse.
+ 
+ 2017-12-15  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_attr.adb (Is_Inline_Floating_Point_Attribute): Fix comment.
+ 	* libgnat/s-fatgen.adb (Model): Use Machine attribute.
+ 	(Truncation): Likewise.
+ 
+ 2017-12-15  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_ch7.adb (Expand_Cleanup_Actions): Make sure the block and handled
+ 	statement sequence generated for certain extended return statements
+ 	have a Sloc that is not No_Location. Otherwise, the back end doesn't
+ 	set any location and ends up reading uninitialized variables.
+ 
+ 2017-12-15  Bob Duff  <duff@adacore.com>
+ 
+ 	* types.ads, exp_ch6.adb, libgnat/s-regexp.ads, opt.ads: Partly revert
+ 	r255414, committed by mistake.
+ 
+ 2017-12-14  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/Makefile.in: Generalize support for symbolic traces.
+ 
+ 2017-12-14  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/misc.c (default_pass_by_ref): Minor tweak.
+ 
+ 2017-12-14  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.c (Call_to_gnu): Set DECL_DISREGARD_INLINE_LIMITS
+ 	to 0 on the callee if the call is recursive.
+ 
+ 2017-12-14  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.c (gnat_to_gnu_field): Do not set the alignment
+ 	of the enclosing record type if it is not already set.
+ 
+ 2017-12-14  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/gigi.h (pad_type_has_rm_size): Declare.
+ 	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Do not build
+ 	a padding type for the alignment before validating the size.
+ 	Flip conditional construct and add a comment.
+ 	* gcc-interface/trans.c (Attribute_to_gnu) <Attr_Size>: Make sure to
+ 	apply the exception for padded objects to the type of the object.
+ 	* gcc-interface/utils.c (hash_pad_type): New static function.
+ 	(lookup_and_insert_pad_type): Rename into...
+ 	(canonicalize_pad_type): ...this.  Call hash_pad_type, do only one
+ 	lookup with insertion and always return the canonical type.
+ 	(maybe_pad_type): Adjust to above changes.  Set debug type later.
+ 	(pad_type_has_rm_size): New predicate.
+ 	(set_reverse_storage_order_on_pad_type): Adjust to above changes.
+ 
+ 2017-12-13  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.c (Subprogram_Body_to_gnu): Initialize locus.
+ 
+ 2017-12-13  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.c (process_freeze_entity): Be prepared for a
+ 	package without body.
+ 
+ 2017-12-13  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.c (gnat_to_gnu_entity): Robustify test for types
+ 	descendant of System.Address.
+ 	(gnat_to_gnu_subprog_type): Likewise.
+ 
+ 2017-12-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* gcc-interface/utils.c (gnat_internal_attribute_table): Add
+ 	exclusions to the comment.
+ 
+ 2017-12-07  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR c/81544
+ 	* gcc-interface/utils.c (gnat_internal_attribute_table): Initialize
+ 	new member of struct attribute_spec.
+ 
+ 2017-12-06  Simon Wright  <simon@pushface.org>
+ 
+ 	PR ada/66205
+ 	* bindgen.adb (Gen_AdaFinal): If the restriction No_Task_Termination is
+ 	set, generate a null body.
+ 
+ 2017-12-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_util.adb (Contains_Refined_State): Remove.
+ 
+ 2017-12-05  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch13.adb (Analyze_Aspect_Specifications, case Predicate): A
+ 	predicate cannot apply to a formal type.
+ 
+ 2017-12-05  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* exp_unst.ads: Fix typos.
+ 
+ 2017-12-05  Jerome Lambourg  <lambourg@adacore.com>
+ 
+ 	* libgnarl/s-taprop__qnx.adb: Better detect priority ceiling bug in
+ 	QNX.  At startup, the first mutex created has a non-zero ceiling
+ 	priority whatever its actual policy. This makes some tests fail
+ 	(c940013 for example).
+ 
+ 2017-12-05  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_ch11.adb (Expand_N_Handled_Sequence_Of_Statements): Call
+ 	Expand_Cleanup_Actions for N_Extended_Return_Statement.
+ 	* exp_ch7.adb (Expand_Cleanup_Actions): Handle
+ 	N_Extended_Return_Statement by transforming the statements into a
+ 	block, and (indirectly) calling Expand_Cleanup_Actions on the block.
+ 	It's too hard for Expand_Cleanup_Actions to operate directly on the
+ 	N_Extended_Return_Statement, because it has a different structure than
+ 	the other node kinds that Expand_Cleanup_Actions.
+ 	* exp_util.adb (Requires_Cleanup_Actions): Add support for
+ 	N_Extended_Return_Statement.  Change "when others => return False;" to
+ 	"when others => raise ...;" so it's clear what nodes this function
+ 	handles.  Use named notation where appropriate.
+ 	* exp_util.ads: Mark incorrect comment with ???.
+ 
+ 2017-12-05  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_ch9.adb (Install_Private_Data_Declarations): Add missing
+ 	Debug_Info_Needed decoration of internally generated discriminal
+ 	renaming declaration.
+ 
+ 2017-12-05  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* exp_unst.adb (Unnest_Subprogram): Add handling of 'Access on
+ 	nested subprograms.
+ 
+ 2017-12-05  Sergey Rybin  <rybin@adacore.com>
+ 
+ 	* doc/gnat_ugn/gnat_utility_programs.rst: Add description of '--ignore'
+ 	option for gnatmetric, gnatpp, gnat2xml, and gnattest.
+ 
+ 2017-12-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_util.adb (Contains_Refined_State): Remove.
+ 
+ 2017-12-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* rtsfind.ads: Add new enumeration literals: RE_Clock_Time (for
+ 	Ada.Real_Time.Clock_Time) and RO_CA_Clock_Time (for
+ 	Ada.Calendar.Clock_Time).
+ 
+ 2017-12-05  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch4.adb (Is_Private_Overriding): If the candidate private
+ 	subprogram is overloaded, scan the list of homonyms in the same
+ 	scope, to find the inherited operation that may be overridden
+ 	by the candidate.
+ 	* exp_ch11.adb, exp_ch7.adb: Minor reformatting.
+ 
+ 2017-12-05  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_ch6.adb (Expand_N_Extended_Return_Statement): If the
+ 	Init_Assignment is rewritten, we need to set Assignment_OK on the new
+ 	node.  Otherwise, we will get spurious errors when initializing via
+ 	assignment statement.
+ 
+ 2017-12-05  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_elab.adb: Update the terminology and switch sections.
+ 	(Check_SPARK_Model_In_Effect): New routine.
+ 	(Check_SPARK_Scenario): Verify the model in effect for SPARK.
+ 	(Process_Conditional_ABE_Call_SPARK): Verify the model in effect for
+ 	SPARK.
+ 	(Process_Conditional_ABE_Instantiation_SPARK): Verify the model in
+ 	effect for SPARK.
+ 	(Process_Conditional_ABE_Variable_Assignment_SPARK): Verify the model
+ 	in effect for SPARK.
+ 
+ 2017-12-05  Nicolas Setton  <setton@adacore.com>
+ 
+ 	* terminals.c (__gnat_setup_child_communication): As documented,
+ 	__gnat_setup_child_communication should not terminate - it is intended
+ 	to be used as the child process of a call to fork().  However, execvp
+ 	might actually return in some cases, for instance when attempting to
+ 	run a 32-bit binary on a 64-bit Linux distribution when the
+ 	compatibility packages are not installed. In these cases, exit the
+ 	program to conform to the documentation.
+ 
+ 2017-12-05  Olivier Hainque  <hainque@adacore.com>
+ 
+ 	* libgnat/s-tsmona.adb: Fix for oversight in the tsmona interface
+ 	update.
+ 
+ 2017-12-05  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* doc/gnat_ugn/elaboration_order_handling_in_gnat.rst: Minor typo fix
+ 	and reformatting.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2017-12-05  Olivier Hainque  <hainque@adacore.com>
+ 
+ 	* sem_util.adb (Set_Convention): Always clear Can_Use_Internal_Rep
+ 	on access to subprogram types with foreign convention.
+ 
+ 2017-12-05  Yannick Moy  <moy@adacore.com>
+ 
+ 	* doc/gnat_ugn/building_executable_programs_with_gnat.rst: Fix User's
+ 	Guide description of default settings of warnings.
+ 
+ 2017-12-05  Olivier Hainque  <hainque@adacore.com>
+ 
+ 	* s-dwalin.adb (Read_And_Execute_Isn): Adjust test checking for the end
+ 	of section. Add comments explaining the rationale of the computation.
+ 
+ 2017-12-05  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_ch11.adb: Minor refactoring.
+ 
+ 2017-12-05  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* debug.adb: Add debug switches d_a, d_e, and d_p, along with
+ 	documentation.
+ 	(Set_Underscored_Debug_Flag): New routine.
+ 	* debug.ads: Add the flags for all underscore switches.
+ 	(Set_Underscored_Debug_Flag): New routine.
+ 	* einfo.adb: Flag303 is now Suppress_Elaboration_Warnings.
+ 	(Suppress_Elaboration_Warnings): New routine.
+ 	(Set_Suppress_Elaboration_Warnings): New routine.
+ 	(Write_Entity_Flags): Add output for Suppress_Elaboration_Warnings.
+ 	* einfo.ads: Add new flag Suppress_Elaboration_Warnings.
+ 	(Suppress_Elaboration_Warnings): New routine along with pragma Inline.
+ 	(Set_Suppress_Elaboration_Warnings): New routine along with pragma
+ 	Inline.
+ 	* exp_ch3.adb (Build_Init_Procedure): Restore the behavior of the
+ 	legacy elaboration model.
+ 	(Default_Initialize_Object): Restore the behavior of the legacy
+ 	elaboration model.
+ 	* exp_ch9.adb: Add with and use clause for Sem_Elab.
+ 	(Build_Task_Activation_Call): Restore the behavior of the legacy
+ 	elaboration model.
+ 	* frontend.adb (Frontend): Restore the behavior of the legacy
+ 	elaboration model.
+ 	* opt.ads: Add new flags Legacy_Elaboration_Checks and
+ 	Relaxed_Elaboration_Checks, along with documentation.
+ 	* sem_attr.adb (Analyze_Access_Attribute): Restore the behavior of the
+ 	legacy elaboration model.
+ 	* sem_ch5.adb (Analyze_Assignment): Restore the behavior of the legacy
+ 	elaboration model.
+ 	* sem_ch7.adb (Analyze_Package_Declaration): Restore the behavior of
+ 	the legacy elaboration model.
+ 	* sem_ch8.adb (Attribute_Renaming): Restore the behavior of the legacy
+ 	elaboration model.
+ 	* sem_ch12.adb (Analyze_Instance_And_Renamings): Restore the behavior
+ 	of the legacy elaboration model.
+ 	(Analyze_Package_Instantiation): Restore the behavior of the legacy
+ 	elaboration model.
+ 	(Analyze_Subprogram_Instantiation): Restore the behavior of the legacy
+ 	elaboration model.
+ 	* sem_elab.adb: Update the documentation of the Processing phase.
+ 	Update the documentation on elaboration-related compilation
+ 	switches.  Update the documentation on adding a new target.  Add
+ 	Processing_Attributes which represent the state of the Processing
+ 	phase.  Resurrect the previous elaboration model as "legacy elaboration
+ 	model".
+ 	(Build_Call_Marker): This routine does not function when the legacy
+ 	elaboration model is in effect. Do not consider entry calls and requeue
+ 	statements when debug flag d_e is in effect. Do not consider calls to
+ 	subprograms which verify the runtime semantics of certain assertion
+ 	pragmas when debug flag d_p is in effect.
+ 	(Build_Variable_Reference_Marker): This routine does not function when
+ 	the legacy elaboration model is in effect.
+ 	(Check_Elaboration_Scenarios): This routine does not function when the
+ 	legacy elaboration model is in effect.
+ 	(Ensure_Prior_Elaboration): The various flags have now been replaced
+ 	with a state. Do not generate implicit Elaborate[_All] pragmas when
+ 	their creation has been suppressed.
+ 	(Ensure_Prior_Elaboration_Static): The with clause is marked based on
+ 	the requested pragma, not on the nature of the scenario.
+ 	(In_External_Context): Removed.
+ 	(Is_Assertion_Pragma_Target): New routine.
+ 	(Is_Potential_Scenario): Stop the traversal of a task body when
+ 	reaching an accept or select statement, and debug switch d_a is in
+ 	effect.
+ 	(Kill_Elaboration_Scenario): This routine does not function when the
+ 	legacy elaboration model is in effect.
+ 	(Process_Activation_Generic): The various flags have now been replaced
+ 	with a state.
+ 	(Process_Conditional_ABE): The various flags have now been replaced
+ 	with a state.
+ 	(Process_Conditional_ABE_Access): The various flags have now been
+ 	replaced with a state.
+ 	(Process_Conditional_ABE_Activation_Impl): The various flags have now
+ 	been replaced with a state. Do not process an activation call which
+ 	activates a task whose type is defined in an external instance, and
+ 	debug switch dL is in effect. Suppress the generation of implicit
+ 	Elaborate[_All] pragmas once a conditional ABE check has been
+ 	installed.
+ 	(Process_Conditional_ABE_Call): The various flags have now been
+ 	replaced with a state. Do not process a call which invokes a subprogram
+ 	defined in an external instance, and debug switch dL is in effect.
+ 	(Process_Conditional_ABE_Call_Ada): The various flags have now been
+ 	replaced with a state. Suppress the generation of implicit
+ 	Elaborate[_All] pragmas once a conditional ABE check has been
+ 	installed.
+ 	(Process_Conditional_ABE_Call_SPARK): The various flags have now been
+ 	replaced with a state.
+ 	(Process_Conditional_ABE_Instantiation): The various flags have now
+ 	been replaced with a state.
+ 	(Process_Conditional_ABE_Instantiation_Ada): The various flags have now
+ 	been replaced with a state. Suppress the generation of implicit
+ 	Elaborate[_All] pragmas once a conditional ABE check has been
+ 	installed.
+ 	(Process_Conditional_ABE_Instantiation_SPARK): The various flags have
+ 	now been replaced with a state.
+ 	(Process_Guaranteed_ABE_Activation_Impl): The various flags have now
+ 	been replaced with a state.
+ 	(Process_Single_Activation): The various flags have now been replaced
+ 	with a state.
+ 	(Record_Elaboration_Scenario): This routine does not function when the
+ 	legacy elaboration model is in effect.
+ 	(Traverse_Body): The various flags have now been replaced with a state.
+ 	* sem_elab.ads: Resurrect the pre-18.x elaboration model as "legacy
+ 	elaboration model".
+ 	* sem_prag.adb (Analyze_Pragma): Restore the behavior of the legacy
+ 	elaboration model.
+ 	* sem_res.adb (Resolve_Call): Restore the behavior of the legacy
+ 	elaboration model.
+ 	(Resolve_Entity_Name): Restore the behavior of the legacy elaboration
+ 	model.
+ 	* sem_util.adb (Mark_Elaboration_Attributes): This routine does not
+ 	function when the legacy elaboration model is in effect.
+ 	* sinfo.adb (Is_Known_Guaranteed_ABE): Update the assertion check.
+ 	(No_Elaboration_Check): New routine.
+ 	(Set_Is_Known_Guaranteed_ABE): Update the assertion check.
+ 	(Set_No_Elaboration_Check): New routine.
+ 	* sinfo.ads: Update the documentation of flag Is_Known_Guaranteed_ABE
+ 	along with occurrences in nodes.  Add new flag No_Elaboration_Check
+ 	along with occurrences in nodes.
+ 	* switch-c.adb (Scan_Front_End_Switches): Add processing for debug
+ 	switches with underscores.  Add processing for switches -gnatH and
+ 	-gnatJ.
+ 	* usage.adb (Usage): Add output for switches -gnatH and -gnatJ.
+ 	* doc/gnat_ugn/elaboration_order_handling_in_gnat.rst: Update the
+ 	documentation to include the legacy and relaxed elaboration models.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2017-12-05  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* doc/gnat_ugn/platform_specific_information.rst: Minor edit.
+ 	Improve doc on required packages for linux 32bits.
+ 
+ 2017-12-05  Doug Rupp  <rupp@adacore.com>
+ 
+ 	* tracebak.c (ppc64-vx7): USE_GCC_UNWINDER for 64bit.
+ 
+ 2017-12-05  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* checks.adb (Generate_Range_Check): Force evaluation of the node in
+ 	more cases.  This patch was written to improve the code generated by
+ 	the CCG compiler but it is enabled for all targets since double
+ 	evaluation is always a potential source of inefficiency.
+ 
+ 2017-12-05  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* doc/gnat_ugn/gnat_utility_programs.rst: Remove reference to obsolete
+ 	-fdump-xref switch.
+ 
+ 2017-12-05  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch5.adb (Expand_Iterator_Loop_Over_Array): Use the SLOC of the
+ 	iteration scheme throughout, except for the new loop statement(s).
+ 
+ 2017-12-05  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_aggr.adb (Gen_Assign): Do not analyze the expressionn of the
+ 	assignment if it is part of an Iterated_Component_Association: the
+ 	analysis needs to take place once the loop structure is analyzed and
+ 	the loop parameter made visible, because references to it typically
+ 	appear in the corresponding expression.  This is necessary if the
+ 	expression is an aggregate, because previous pre-analysis of the
+ 	expression does not handle nested aggregates properly.
+ 
+ 2017-12-05  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Allocator): Avoid coextension processing for an
+ 	allocator that is the expansion of a build-in-place function call.
+ 
+ 2017-12-05  Olivier Hainque  <hainque@adacore.com>
+ 
+ libgnat/
+ 	* s-trasym__dwarf.adb (spec of Module_Name.Get): Instead of
+ 	possibly adjusting the lookup address by a load address, expect
+ 	a extra argument through which the load address can be conveyed
+ 	separately.
+ 	(Multi_Module_Symbolic_Traceback): Adjust accordingly. Pass the
+ 	retrieved load address to Init_Module.
+ 	* s-tsmona__linux.adb (Get): Honor the new interface.
+ 	* s-tsmona__mingw.adb (Get): Likewise.
+ 	* s-dwalin.ads: Adjust comments to be explicit about which
+ 	addresses are from module info and which are run-time addresses,
+ 	offsetted by the module load address.
+ 	* s-dwalin.adb (Set_Load_Address): Simply set C.Load_Slide.
+ 	Do not alter the module Low and High (relative) addresses.
+ 	(Is_Inside): Improve documentation regarding the kinds of addresses
+ 	at hand and correct the test.
+ 	(Symbolic_Traceback): Use separate variables with explicit names
+ 	for the address in traceback (run-time value) and the address to
+ 	lookup within the shared object (module-relative). Adjust the
+ 	computation of address passed to Symbolic_Address for symbolization.
+ 
+ 2017-12-05  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* opt.ads (Expand_Nonbinary_Modular_Ops): New flag.
+ 	* exp_ch4.adb (Expand_Nonbinary_Modular_Op): Use
+ 	Expand_Nonbinary_Modular_Ops instead of Modify_Tree_For_C, so that
+ 	other back-ends can also benefit from the front-end expansion. Remove
+ 	test for Modify_Tree_For_C in all callers to better share code.
+ 	* gnat1drv.adb (Adjust_Global_Switches): Set
+ 	Expand_Nonbinary_Modular_Ops when generating C code.
+ 
+ 2017-12-05  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_ch5.adb (Expand_Formal_Container_Loop): Ensure that the loop
+ 	parameter becomes invisible after analyzing the loop, which has been
+ 	rewritten as a while-loop.
+ 
+ 2017-12-05  Doug Rupp  <rupp@adacore.com>
+ 
+ 	* vxaddr2line.adb: Revise and enhance for new ports, remove dead ports,
+ 	and update for 64bit ports.
+ 
+ 2017-12-05  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_ch6.adb (Build_In_Place_Formal): Search for the formal by suffix
+ 	instead of the full name.
+ 	* sem_ch6.adb (Create_Extra_Formals): Make sure there are extra formals
+ 	in the case of an instance of a generic.
+ 
+ 2017-12-05  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	(Adjust_Global_Switches): Create an alias GNAT_Annotate to map to
+ 	pragma Annotate.
+ 
+ 2017-12-05  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+ 
+ 	* gcc-interface/Makefile.in (RTEMS): Define EH_MECHANISM.
+ 
+ 2017-12-04  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+ 
+ 	* gcc-interface/Makefile.in (RTEMS): Use s-osprim__rtems.adb.
+ 	* libgnat/s-osprim__rtems.adb: New file.
+ 	* libgnarl/s-osinte__rtems.adb (pthread_cond_t): Fix alignment.
+ 	(pthread_mutexattr_t): Likewise.
+ 	(pthread_rwlockattr_t): Likewise.
+ 	(pthread_rwlock_t): Likewise.
+ 	(time_t): Use 64-bit integer.
+ 
+ 2017-12-01  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+ 
+ 	* libgnarl/s-osinte__rtems.ads (pthread_cond_t): Use correct size and
+ 	alignment.
+ 	(pthread_mutex_t): Likewise.
+ 	(pthread_rwlock_t): Likewise.
+ 
+ 2017-11-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* gcc-interface/trans.c (Case_Statement_to_gnu): Build SWITCH_EXPR
+ 	using build2 instead of build3.
+ 
+ 2017-11-23  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/83091
+ 	* gcc-interface/decl.c (gnat_to_gnu_entity): Do not build a variant
+ 	type for the implementation type of a packed array.
+ 
+ 2017-11-23  Mike Stump  <mikestump@comcast.net>
+             Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.c (gnat_gimplify_stmt) <LOOP_STMT>: Pass 3rd
+ 	operand to ANNOTATE_EXPR and also pass unrolling hints.
+ 
+ 2017-11-20  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/83016
+ 	* gnatlink.adb (Process_Args): Accept multiple switches for --LINK.
+ 	(Usage): Adjust.
+ 	* gcc-interface/Makefile.in (GCC_LINK): Remove $(ADA_INCLUDES).
+ 	(common-tools): Pass $(CC) as --GCC= and $(GCC_LINK) as --LINK= in
+ 	the invocations of $(GNATLINK).
+ 	(../../gnatdll$(exeext)): Likewise.
+ 	(../../vxaddr2line$(exeext)): Likewise.
+ 	(gnatmake-re): Likewise.
+ 	(gnatlink-re): Likewise.
+ 
+ 2017-11-16  Doug Rupp  <rupp@adacore.com>
+ 
+ 	* gcc-interface/Makefile.in: Merge Aarch64 and ARM "ifeq" blocks.
+ 
+ 2017-11-16  Steve Baird  <baird@adacore.com>
+ 
+ 	* debug.adb: Update another comment to indicate gnat2scil's use of the
+ 	-gnatd.7 switch.
+ 
+ 2017-11-16  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_ch6.adb (Expand_Call_Helper): Avoid creating a transient scope in
+ 	the case of nested build-in-place calls.
+ 
+ 2017-11-16  Joel Brobecker  <brobecker@adacore.com>
+ 
+ 	* doc/gnat_ugn/gnat_utility_programs.rst: Document the switches
+ 	available in gnatsymbolize.
+ 
+ 2017-11-16  Steve Baird  <baird@adacore.com>
+ 
+ 	* debug.adb: Update comment to indicate gnat2scil's use of the -gnatd.7
+ 	switch.
+ 
+ 2017-11-16  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* doc/gnat_ugn/elaboration_order_handling_in_gnat.rst, sem_ch6.adb,
+ 	sem_elab.adb: Minor editorial corrections.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2017-11-16  Joel Brobecker  <brobecker@adacore.com>
+ 
+ 	* doc/gnat_ugn/gnat_utility_programs.rst (GNAT UGN): Add
+ 	gnatsymbolize documentation.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2017-11-16  Steve Baird  <baird@adacore.com>
+ 
+ 	* sem_ch3.adb (Build_Derived_Record_Type): Replace all uses of
+ 	"Scope (Parent_Type)" with "Scope (Parent_Base)".
+ 
+ 2017-11-16  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* opt.ads: Elaboration warnings are now on by default. Add a comment
+ 	explaining why this is needed.
+ 	* sem_ch9.adb (Analyze_Requeue): Preserve the status of elaboration
+ 	warnings.
+ 	* sem_ch12.adb (Analyze_Package_Instantiation): Preserve the status of
+ 	elaboration warnings.
+ 	(Analyze_Subprogram_Instantiation): Preserve the status of elaboration
+ 	warnings.
+ 	* sem_elab.adb: Update the structure of Call_Attributes and
+ 	Instantiation_Attributes.
+ 	(Build_Call_Marker): Propagate the status of elaboration warnings from
+ 	the call to the marker.
+ 	(Extract_Call_Attributes): Extract the status of elaboration warnings.
+ 	(Extract_Instantiation_Attributes): Extract the status of elaboration
+ 	warnings.
+ 	(Process_Conditional_ABE_Activation_Impl): Elaboration diagnostics are
+ 	now dependent on the status of elaboration warnings.
+ 	(Process_Conditional_ABE_Call_Ada): Elaboration diagnostics are now
+ 	dependent on the status of elaboration warnings.
+ 	(Process_Conditional_ABE_Instantiation_Ada): Elaboration diagnostics
+ 	are now dependent on the status of elaboration warnings.
+ 	(Process_Guaranteed_ABE_Activation_Impl): Remove pragma Unreferenced
+ 	for formal Call_Attrs. Elaboration diagnostics are now dependent on the
+ 	status of elaboration warnings.
+ 	(Process_Guaranteed_ABE_Call): Elaboration diagnostics are now
+ 	dependent on the status of elaboration warnings.
+ 	(Process_Guaranteed_ABE_Instantiation): Elaboration diagnostics are now
+ 	dependent on the status of elaboration warnings.
+ 	* sem_prag.adb (Analyze_Pragma): Remove the unjustified warning
+ 	concerning pragma Elaborate.
+ 	* sem_res.adb (Resolve_Call): Preserve the status of elaboration
+ 	warnings.
+ 	(Resolve_Entry_Call): Propagate flag Is_Elaboration_Warnings_OK_Node
+ 	from the procedure call to the entry call.
+ 	* sem_util.adb (Mark_Elaboration_Attributes): Add formal parameter
+ 	Warnings.
+ 	(Mark_Elaboration_Attributes_Node): Preserve the status of elaboration
+ 	warnings
+ 	* sem_util.ads (Mark_Elaboration_Attributes): Add formal parameter
+ 	Warnings. Update the comment on usage.
+ 	* sinfo.adb (Is_Dispatching_Call): Update to use Flag6.
+ 	(Is_Elaboration_Warnings_OK_Node): New routine.
+ 	(Set_Is_Dispatching_Call): Update to use Flag6.
+ 	(Set_Is_Elaboration_Warnings_OK_Node): New routine.
+ 	* sinfo.ads: Attribute Is_Dispatching_Call now uses Flag6. Add new
+ 	attribute Is_Elaboration_Warnings_OK_Node along with occurrences
+ 	in nodes.
+ 	(Is_Elaboration_Warnings_OK_Node): New routine along with pragma
+ 	Inline.
+ 	(Set_Is_Elaboration_Warnings_OK_Node): New routine along with pragma
+ 	Inline.
+ 	* doc/gnat_ugn/elaboration_order_handling_in_gnat.rst: Update various
+ 	sections to indicate how to suppress elaboration warnings.  Document
+ 	switches -gnatwl and -gnatwL.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2017-11-16  Sylvain Dailler  <dailler@adacore.com>
+ 
+ 	* sem_util.adb (Get_Enum_Lit_From_Pos): Add a condition for Pos
+ 	lower than 0.
+ 
+ 2017-11-16  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_ch13.adb (Check_Expr_Constants): Avoid error message in case of
+ 	System'To_Address.
+ 
+ 2017-11-16  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_elab.adb (Include): Fix mode of parameter Curr to out.
+ 
+ 2017-11-16  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_util.ads, sem_util.adb (Is_CCT_Instance): Allow calls where
+ 	Context_Id denotes a record type.
+ 
+ 2017-11-16  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_ch8.adb (Check_SPARK_Primitive_Operation): Enable the check in
+ 	instantiations.
+ 
+ 2017-11-16  Doug Rupp  <rupp@adacore.com>
+ 
+ 	Initial gnat port to aarch64-wrs-vxworks7
+ 	* libgnarl/s-vxwork__aarch64.ads,
+ 	libgnat/system-vxworks7-aarch64-rtp-smp.ads,
+ 	libgnat/system-vxworks7-aarch64.ads: New files
+ 	* sigtramp-vxworks-target.inc (aarch64): New section.
+ 	* tracebak.c (USE_ARM_UNWINDING): Disable for ARMARCH8A.
+ 
+ 2017-11-16  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_elab.adb (Include): Including a node which is also a compilation
+ 	unit terminates the search because there are no more lists to examine.
+ 
+ 2017-11-16  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_ch8.adb (Analyze_Subprogram_Renaming): Ensure that a renaming
+ 	declaration does not define a primitive operation of a tagged type for
+ 	SPARK.
+ 	(Check_SPARK_Primitive_Operation): New routine.
+ 
+ 2017-11-16  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* libgnat/a-elchha.adb (Last_Chance_Handler): Display Argv (0) in
+ 	message when using -E binder switch.
+ 
+ 2017-11-16  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* errout.ads: Fix minor typo in comment.
+ 
+ 2017-11-16  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch3.adb (Process_Subtype): If the subtype indication does not
+ 	syntactically denote a type, return Any_Type to prevent subsequent
+ 	compiler crashes or infinite loops.
+ 
+ 2017-11-16  Steve Baird  <baird@adacore.com>
+ 
+ 	* lib-writ.adb: Fix bug which causes Program_Error to be raised in some
+ 	cases when writing out a .ali file when a Rename_Pragma pragma is in
+ 	effect.
+ 	* lib-writ.adb (Write_Unit_Information): Replace call to
+ 	Pragma_Name_Unmapped with call to Pragma_Name.
+ 
+ 2017-11-16  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* sem_elab.adb: Minor typo fixes.
+ 
+ 2017-11-16  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Allocator): Correct warning messages and make
+ 	them more explicit.
+ 
+ 2017-11-16  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* atree.ads (Nkind_In): Add 10 and 11 parameter versions.
+ 	* checks.adb (Install_Primitive_Elaboration_Check): Mark the setting of
+ 	the elaboration flag as elaboration code.
+ 	* einfo.adb (Contract): Update the comments.
+ 	(Ignore_SPARK_Mode_Pragmas): Update the comments.
+ 	(SPARK_Aux_Pragma): Update the comments.
+ 	(SPARK_Aux_Pragma_Inherited): Update the comments.
+ 	(SPARK_Pragma): Update the comments. The attribute now applies
+ 	to all types and abstract states.
+ 	(SPARK_Pragma_Inherited): Update the comments. The attribute now
+ 	applies to all types and abstract states.
+ 	(Set_Contract): Update the comments.
+ 	(Set_Ignore_SPARK_Mode_Pragmas): Update the comments.
+ 	(Set_SPARK_Aux_Pragma): Update the comments.
+ 	(Set_SPARK_Aux_Pragma_Inherited): Update the comments.
+ 	(Set_SPARK_Pragma): Update the comments. The attribute now applies to
+ 	all types and abstract states.
+ 	(Set_SPARK_Pragma_Inherited): Update the comments. The attribute now
+ 	applies to all types and abstract states.
+ 	(Write_Field40_Name): Add output for SPARK_Pragma when it appears on a
+ 	type and abstract states.
+ 	* einfo.ads: Update the documentation of attributes SPARK_Pragma and
+ 	SPARK_Pragma_Inherited.  Both of them now apply to all types and
+ 	abstract states.
+ 	* exp_util.adb (Set_Elaboration_Flag): Mark the setting of the
+ 	elaboration flag as elaboration code.
+ 	* sem_ch3.adb: Add with and use clauses for Sem_Elab.
+ 	(Analyze_Full_Type_Declaration): Set the SPARK_Mode of the type. Record
+ 	a derived type for later processing by the ABE mechanism.
+ 	(Analyze_Incomplete_Type_Decl): Set the SPARK_Mode of the type.
+ 	(Analyze_Private_Extension_Declaration): Set the SPARK_Mode of the
+ 	type.
+ 	* sem_ch7.adb (Analyze_Private_Type_Declaration): Set the SPARK_Mode of
+ 	the type.
+ 	* sem_elab.adb: Define the term "early call region".  Update the
+ 	terminology for "scenario" and "target".  Update the architecture of
+ 	the ABE mechanism.  Update the steps which must be taken when adding a
+ 	new scenario.  Update the section on debugging ABE issues.  Add new
+ 	hash tables Early_Call_Regions and Recorded_SPARK_Scenarios.  Add new
+ 	table SPARK_Scenarios.  Hash table Elaboration_Context is now
+ 	Elaboration_Statuses.  The majority of Process_xxx routines have been
+ 	updated to better reflect their role.
+ 	(Add_Unit): Reimplemented.
+ 	(Check_Elaboration_Constituent): New routine.
+ 	(Check_Elaboration_Scenarios): Verify previously recorded scenarios for
+ 	conditional ABE issues. Verify previously recorded SPARK scenarios.
+ 	(Check_SPARK_Derived_Type): New routine.
+ 	(Check_SPARK_Instantiation): New routine.
+ 	(Check_SPARK_Scenario): New routine.
+ 	(Check_SPARK_Refined_State_Pragma): New routine.
+ 	(Early_Call_Region): New routine.
+ 	(Elaboration_Status): New routine.
+ 	(Ensure_Prior_Elaboration): Add new formal parameter Prag_Nam. The
+ 	implicit Elabotate[_All] pragma is now specified via Prag_Nam.
+ 	(Find_Early_Call_Region): New routine.
+ 	(Info_Scenario): Add output for refinement constituents.
+ 	(Is_Recorded_SPARK_Scenario): New routine.
+ 	(Is_Suitable_SPARK_Derived_Type): New routine.
+ 	(Is_Suitable_SPARK_Instantiation): New routine.
+ 	(Is_Suitable_SPARK_Refined_State_Pragma): New routine.
+ 	(Is_Visited_Body): New routine.
+ 	(Kill_Elaboration_Scenario): Reimplemented.
+ 	(Output_Active_Scenarios): Add output for pragma Refined_State.
+ 	(Output_SPARK_Refined_State_Pragma): New routine.
+ 	(Process_Conditional_ABE_Call): Remove the use of -gnatd.v. The effect
+ 	is now achieved by different means.
+ 	(Process_Conditional_ABE_Call_SPARK): Verify that a call which precedes
+ 	the subprogram body appears within the early call region of the body.
+ 	Either ensure the prior elaboration of external subprograms or verify
+ 	that the context meets the suitable elaboration requirement.
+ 	(Process_Conditional_ABE_Instantiation_SPARK): New routine.
+ 	(Record_Elaboration_Scenario): Reimplement the portion which enforces
+ 	the level restrictions of the static model. Add support for SPARK
+ 	scenarios.
+ 	(Record_SPARK_Elaboration_Scenario): New routine.
+ 	(Reset_Visited_Bodies): New routine.
+ 	(Set_Early_Call_Region): New routine.
+ 	(Set_Elaboration_Status): New routine.
+ 	(Set_Is_Recorded_SPARK_Scenario): New routine.
+ 	(Update_Elaboration_Scenario): Reimplemented.
+ 	* sem_elab.ads: Add new subtype Library_Or_Instantiation_Level.
+ 	* sem_prag.adb (Analyze_Refined_State_In_Decl_Part): Save the pragma
+ 	for examination by the ABE Processing phase.
+ 	(Create_Abstract_State): Save the SPARK_Mode from the context.
+ 	* sem_util.adb (Is_Non_Preelaborable_Construct): New routine.
+ 	* sem_util.ads (Is_Non_Preelaborable_Construct): New routine.
+ 	* sinfo.adb (Is_Elaboration_Code): New routine.
+ 	(Set_Is_Elaboration_Code): New routine.
+ 	(Nkind_In): Add 10 and 11 parameter versions.
+ 	* sinfo.ads: Add new attribute Is_Elaboration_Code along with
+ 	occurrences in nodes.
+ 	(Is_Elaboration_Code): New routine along with pragma Inline.
+ 	(Set_Is_Elaboration_Code): New routine along with pragma Inline.
+ 	(Nkind_In): Add 10 and 11 parameter versions.
+ 
+ 2017-11-16  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem.adb (Analyze): Remove requirement that the original node of N be
+ 	an operator in the case that analysis on the node yields the relevant
+ 	operator - so prefer it instead.
+ 
+ 2017-11-16  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_ch6.adb (Create_Extra_Formals): The type of the BIP_Object_Access
+ 	formal must not have a designated type that is the full view coming
+ 	from a limited-with'ed package.
+ 	* sem_util.adb,sem_util.ads (Incomplete_View_From_Limited_With): New
+ 	function called from sem_ch6.
+ 	* sem_ch5.adb (Analyze_Assignment): Treat user-defined concatenation
+ 	specially for b-i-p cases.
+ 
+ 2017-11-10  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR c/81117
+ 	* adadecode.c (__gnat_decode): Use memcpy instead of strncpy.
+ 	* argv.c (__gnat_fill_arg, __gnat_fill_env): Likewise.
+ 
+ 2017-11-10  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/utils.c (convert) <RECORD_TYPE>: Add comment and do
+ 	not fall through to the next case.
+ 	<ARRAY_TYPE>: Deal specially with a dereference from another array
+ 	type with the same element type.
+ 
+ 2017-11-09  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* exp_util.adb, freeze.adb: Minor reformatting.
+ 
+ 2017-11-09  Jerome Lambourg  <lambourg@adacore.com>
+ 
+ 	* gcc-interface/Makefile.in: Add rules to build aarch64-qnx runtimes.
+ 
+ 2017-11-09  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* gcc-interface/trans.c (gnat_to_gnu): Add processing for
+ 	N_Variable_Reference_Marker nodes.
+ 
+ 2017-11-09  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch12.adb (Analyze_Generic_Package_Declaration): Handle properly
+ 	the pragma Compile_Time_Error when it appears in a generic package
+ 	declaration and uses an expanded name to denote the current unit.
+ 
+ 2017-11-09  Jerome Lambourg  <lambourg@adacore.com>
+ 
+ 	* libgnarl/s-taprop__qnx.adb: Fix incorrect casing for pthread_self.
+ 	* tracebak.c: Add support for tracebacks in QNX.
+ 
+ 2017-11-09  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_aggr.adb (Aggr_Size_OK): Bump base limit from 50000 to 500000.
+ 
+ 2017-11-09  Yannick Moy  <moy@adacore.com>
+ 
+ 	* erroutc.adb, set_targ.adb: Remove pragma Annotate for CodePeer
+ 	justification.
+ 
+ 2017-11-09  Joel Brobecker  <brobecker@adacore.com>
+ 
+ 	* doc/gnat_ugn/platform_specific_information.rst: Document packages
+ 	needed on GNU/Linux by GNAT.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2017-11-09  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* contracts.adb (Analyze_Contracts): Remove the three parameter
+ 	version. This routine now only analyzes contracts and does not perform
+ 	any freezing actions.
+ 	(Analyze_Previous_Contracts): Removed.
+ 	(Freeze_Previous_Contracts): New routine.
+ 	* contracts.ads (Analyze_Previous_Contracts): Removed.
+ 	(Freeze_Previous_Contracts): New routine.
+ 	* sem_ch3.adb (Analyze_Declarations): Analyze the contract of an
+ 	enclosing package spec regardless of whether the list denotes the
+ 	visible or private declarations.  Fix the removal of partial state
+ 	refinements when the context is a package spec.
+ 	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Freeze previous
+ 	contracts.
+ 	* sem_ch7.adb (Analyze_Package_Body_Helper): Freeze previous contracts.
+ 	* sem_ch9.adb (Analyze_Entry_Body): Freeze previous contracts.
+ 	(Analyze_Protected_Body): Freeze previous contracts.
+ 	(Analyze_Task_Body): Freeze previous contracts.
+ 	* sem_prag.adb: Comment reformatting.
+ 
+ 2017-11-09  Bob Duff  <duff@adacore.com>
+ 
+ 	* libgnarl/g-thread.ads, libgnarl/g-thread.adb: (Make_Independent):
+ 	Export this so users can use it without importing
+ 	System.Tasking.Utilities.
+ 	* libgnarl/s-tassta.adb (Vulnerable_Complete_Task): Relax assertion
+ 	that fails when Make_Independent is called on a user task.
+ 	* libgnarl/s-taskin.ads (Master_Of_Task): Avoid unusual
+ 	capitalization style ((style) bad casing of "Master_of_Task").
+ 
+ 2017-11-09  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch12.adb (Analyze_Subprogram_Instantiation): Correct use of
+ 	uninitialized variable uncovered by Codepeer.
+ 
+ 2017-11-09  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* namet.adb: Replace pragma Assume by pragma Assert to fix bootstrap.
+ 
+ 2017-11-09  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* doc/gnat_rm/standard_and_implementation_defined_restrictions.rst:
+ 	(Static_Dispatch_Tables): Minor rewording.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2017-11-09  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_ch8.adb (Analyze_Use_Package): Remove forced installation of
+ 	use_clauses within instances.
+ 	(Use_One_Package): Add condition to check for "hidden" open scopes to
+ 	avoid skipping over packages that have not been properly installed even
+ 	though they are visible.
+ 
+ 2017-11-09  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch4.adb (Analyze_Selected_Component): Reject properly a call to a
+ 	private operation of a protected type, when the type has no visible
+ 	operations.
+ 
+ 2017-11-09  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* rtsfind.ads (RE_Id, RE_Unit_Table): Add RE_HT_Link.
+ 	* exp_disp.adb (Make_DT): Initialize the HT_Link field of the TSD only
+ 	if available.
+ 
+ 2017-11-09  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_ch4.adb, exp_ch9.adb, exp_prag.adb, par-ch3.adb, sem_aggr.adb,
+ 	sem_ch12.adb, sem_ch13.adb, sem_ch4.adb, sem_disp.adb, sem_prag.adb,
+ 	sem_res.adb, sem_util.adb: Get rid of warnings about uninitialized
+ 	variables.
+ 
+ 2017-11-09  Yannick Moy  <moy@adacore.com>
+ 
+ 	* exp_disp.adb (Make_DT): Default initialize Ifaces_List and
+ 	Ifaces_Comp_List.
+ 
+ 2017-11-09  Pascal Obry  <obry@adacore.com>
+ 
+ 	* libgnarl/s-taprop__mingw.adb: On Windows, initialize the thead handle
+ 	only for foreign threads.  We initialize the thread handle only if not
+ 	yet initialized. This happens in Enter_Task for foreign threads only.
+ 	But for native threads (Ada tasking) we do want to keep the real
+ 	handle (from Create_Task) to be able to free the corresponding
+ 	resources in Finalize_TCB (CloseHandle).
+ 
+ 2017-11-09  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_attr.adb (Analyze_Attribute): Default initialize P_Type,
+ 	P_Base_Type.
+ 	(Error_Attr_P): Fix name in pragma No_Return.
+ 	(Unexpected_Argument): Add pragma No_Return.
+ 	(Placement_Error): Add pragma No_Return.
+ 
+ 2017-11-09  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_disp.adb (Elab_Flag_Needed): Elaboration flag not needed when the
+ 	dispatch table is statically built.
+ 	(Make_DT): Declare constant the Interface_Table object associated with
+ 	an statically built dispatch table. For this purpose the Offset_To_Top
+ 	value of each interface is computed using the dummy object.
+ 	* exp_ch3.adb (Build_Init_Procedure): Do not generate code initializing
+ 	the Offset_To_Top field of secondary dispatch tables when the dispatch
+ 	table is statically built.
+ 	(Initialize_Tag): Do not generate calls to Register_Interface_Offset
+ 	when the dispatch table is statically built.
+ 	* doc/gnat_rm/standard_and_implementation_defined_restrictions.rst:
+ 	Document the new GNAT restriction Static_Dispatch_Tables.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2017-11-09  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_aggr.adb (Resolve_Delta_Record_Aggregate): Reorder declarations
+ 	to avoid a dormant bug.
+ 
+ 2017-11-09  Jerome Lambourg  <lambourg@adacore.com>
+ 
+ 	* init.c: Define missing __gnat_alternate_stack for QNX. Set it to 0,
+ 	as such capability is not available on the OS.
+ 	* link.c: Make sure linker options for QNX are correct.
+ 	* libgnarl/s-osinte__qnx.ads: Add some missing bindings to pthread.
+ 	* libgnarl/s-taprop__qnx.adb: New, derived from s-taprop__posix.adb. This brings
+ 	in particular a workaround with locks priority ceiling where a higher
+ 	priority task is allowed to lock a lower ceiling priority lock. This
+ 	also fixes the scheduling of FIFO tasks when the priority of a task is
+ 	lowered.
+ 	* libgnat/system-qnx-aarch64.ads: Fix priority ranges.
+ 
+ 2017-11-09  Yannick Moy  <moy@adacore.com>
+ 
+ 	* erroutc.adb (Output_Error_Msgs): Justify CodePeer false positive
+ 	message.
+ 	* gnatbind.adb (Scan_Bind_Arg): Simplify test to remove always true
+ 	condition.
+ 	* namet.adb (Copy_One_Character): Add assumption for static analysis,
+ 	as knowledge that Hex(2) is in the range 0..255 is too complex for
+ 	CodePeer.
+ 	(Finalize): Add assumption for static analysis, as the fact that there
+ 	are symbols in the table depends on a global invariant at this point in
+ 	the program.
+ 	* set_targ.adb (Check_Spaces): Justify CodePeer false positive message.
+ 	* stylesw.adb (Save_Style_Check_Options): Rewrite to avoid test always
+ 	true.
+ 
+ 2017-11-09  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* libgnat/s-rident.ads (Static_Dispatch_Tables): New restriction name.
+ 	* exp_disp.adb (Building_Static_DT): Check restriction.
+ 	(Building_Static_Secondary_DT): Check restriction.
+ 	(Make_DT): Initialize the HT_Link to No_Tag.
+ 	* opt.ads (Static_Dispatch_Tables): Rename flag...
+ 	(Building_Static_Dispatch_Tables): ... into this.  This will avoid
+ 	conflict with the restriction name.
+ 	* gnat1drv.adb: Update.
+ 	* exp_aggr.adb (Is_Static_Dispatch_Table_Aggregate): Update.
+ 	* exp_ch3.adb (Expand_N_Object_Declaration): Update.
+ 
+ 2017-11-09  Pascal Obry  <obry@adacore.com>
+ 
+ 	* libgnarl/s-taprop__mingw.adb: Minor code clean-up.  Better using a
+ 	named number.
+ 
+ 2017-11-09  Yannick Moy  <moy@adacore.com>
+ 
+ 	* binde.adb (Diagnose_Elaboration_Problem): Mark procedure No_Return.
+ 	* checks.adb (Apply_Scalar_Range_Check): Rescope variable OK closer to
+ 	use.  Default initialize Hi, Lo.
+ 	(Selected_Range_Checks): Retype Num_Checks more precisely.
+ 	(Determine_Range, Determine_Range_R): Default initialize Hi_Right,
+ 	Lo_Right.
+ 	* contracts.adb (Process_Contract_Cases): Mark parameter Stmts as
+ 	Unmodified.
+ 	(Process_Postconditions): Mark parameter Stmts as Unmodified.
+ 	* exp_attr.adb (Expand_Loop_Entry_Attribute): Default initialize Blk.
+ 	* exp_ch4.adb (Expand_N_Allocator): Default initialize Typ.
+ 	(Expand_Concatenate): Default initialize High_Bound.
+ 	(Optimize_Length_Comparison): Default initialize Ent, Index.
+ 	* exp_ch5.adb (Expand_Predicated_Loop): Default initialize L_Hi and
+ 	L_Lo.
+ 	* exp_ch6.adb (Expand_N_Extended_Return_Statement): Default initialize
+ 	Return_Stmt.
+ 	* exp_ch9.adb (Expand_Entry_Barrier): Default initialize Func_Body and
+ 	remove pragma Warnings(Off).
+ 	* exp_imgv.adb (Expand_Image_Attribute): Default initialize Tent.
+ 	* exp_util.adb (Find_Interface_Tag): Default initialize AI_Tag.
+ 	* freeze.adb (Check_Component_Storage_Order): Default initialize
+ 	Comp_Byte_Aligned rather than silencing messages with pragma
+ 	Warnings(Off), which does not work for CodePeer initialization
+ 	messages, and given that here the possible read of an unitialized value
+ 	depends on a proper use of parameters by the caller.
+ 	* inline.adb (Expand_Inlined_Call): Default initialize Lab_Decl, Targ.
+ 	* sem_ch12.adb (Build_Operator_Wrapper): Default initialize Expr.
+ 	* sem_ch3.adb (Build_Derived_Array_Type): Default initialize
+ 	Implicit_Base.
+ 	* sem_ch4.adb (List_Operand_Interps): Default initialize Nam and remove
+ 	pragma Warnings(Off).
+ 	(Analyze_Case_Expression): Rescope checking block within branch where
+ 	Others_Present is set by the call to Check_Choices.
+ 	* sem_ch5.adb (Analyze_Assignment): Default initialize
+ 	Save_Full_Analysis.
+ 	* sem_ch6.adb (Analyze_Function_Return): Default initialize Obj_Decl,
+ 	and restructure code to defend against previous errors, so that, in
+ 	that case, control does not flow to the elsif condition which read an
+ 	uninitialized Obj_Decl.
+ 	* sem_ch9.adb (Analyze_Requeue): Default initialize Synch_Type.
+ 	(Check_Interfaces): Default initialize Full_T_Ifaces and Priv_T_Ifaces,
+ 	which seem to be left uninitialized and possibly read in some cases.
+ 	* sem_dim.adb (Analyze_Aspect_Dimension_System): Retype Position more
+ 	precisely.  This requires to exchange the test for exiting in case of
+ 	too many positions and the increment to Position, inside the loop.
+ 	* sem_eval.adb (Eval_Concatenation): Default initialize Folded_Val,
+ 	which cannot be read uninitialized, but the reasons for that are quite
+ 	subtle.
+ 	* sem_intr.adb (Check_Intrinsic_Call): Default initialize Rtyp.
+ 	* sem_prag.adb (Collect_Subprogram_Inputs_Outputs): Default initialize
+ 	Spec_Id.
+ 	* sem_res.adb (Make_Call_Into_Operator): Default initialize Opnd_Type,
+ 	and test for presence of non-null Opnd_Type before testing its scope,
+ 	in a test which would read its value uninitialized, and is very rarely
+ 	exercized (it depends on the presence of an extension of System).
+ 	* sem_spark.ads: Update comment to fix name of main analysis procedure.
+ 	* sem_warn.adb (Warn_On_Known_Condition): Default initialize
+ 	Test_Result.
+ 	* set_targ.adb (FailN): Mark procedure with No_Return.
+ 	* stylesw.adb (Save_Style_Check_Options): Delete useless code to
+ 	initialize all array Options to white space, as there is already code
+ 	doing the same for the remaining positions in Options at the end of the
+ 	procedure.
+ 
+ 2017-11-09  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch11.adb (Possible_Local_Raise): Do not issue the warning for
+ 	generic instantiations either.
+ 
+ 2017-11-09  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Part_Of): Reword error message.
+ 	(Get_SPARK_Mode_Type): Do not raise Program_Error in case pragma
+ 	SPARK_Mode appears with an illegal mode, treat this as a non-existent
+ 	mode.
+ 
+ 2017-11-09  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch4.adb (Analyze_Call): Reject a call to a function that returns
+ 	a limited view of a type T declared in unit U1, when the function is
+ 	declared in another unit U2 and the call appears in a procedure within
+ 	another unit.
+ 
+ 2017-11-09  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_ch8.adb (Analyze_Use_Package): Force installation of use_clauses
+ 	when processing generic instances.
+ 
+ 2017-11-09  Bob Duff  <duff@adacore.com>
+ 
+ 	* namet.ads, namet.adb (Valid_Name_Id): New subtype that excludes
+ 	Error_Name and No_Name.  Use this (versus Name_Id) to indicate which
+ 	objects can have those special values. Valid_Name_Id could usefully be
+ 	used all over the compiler front end, but that's too much trouble for
+ 	now. If we did that, we might want to rename:
+ 	Name_Id --> Optional_Name_Id, Valid_Name_Id --> Name_Id.
+ 	For parameters of type Valid_Name_Id, remove some redundant tests,
+ 	including the ones found by CodePeer.  Use Is_Valid_Name instead of
+ 	membership test when appropriate.
+ 	(Error_Name_Or_No_Name): Delete this; it's no longer needed.
+ 	* sem_ch2.adb (Analyze_Identifier): Use "not Is_Valid_Name" instead of
+ 	"in Error_Name_Or_No_Name".
+ 	(Check_Parameterless_Call): Use "not Is_Valid_Name" instead of "in
+ 	Error_Name_Or_No_Name".
+ 
+ 2017-11-09  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* gnat1drv.adb (Adjust_Global_Switches): Suppress warnings in codepeer
+ 	mode here unless -gnateC is specified.
+ 	* switch-c.adb (Scan_Front_End_Switches): Do not suppress warnings with
+ 	-gnatC here.
+ 
+ 2017-11-09  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* lib-writ.adb (Write_ALI): Remove processing of the frontend xrefs as
+ 	part of the ALI writing; they are now processed directly from memory
+ 	when requested by the backend.
+ 	* lib-xref.ads (Collect_SPARK_Xrefs): Remove.
+ 	(Iterate_SPARK_Xrefs): New routine for iterating over frontend xrefs.
+ 	* lib-xref-spark_specific.adb (Traverse_Compilation_Unit): Remove.
+ 	(Add_SPARK_File): Remove.
+ 	(Add_SPARK_Xref): Refactored from removed code; filters xref entries
+ 	that are trivially uninteresting to the SPARK backend.
+ 	* spark_xrefs.ads: Remove code that is no longer needed.
+ 	* spark_xrefs.adb (dspark): Adapt to use Iterate_SPARK_Xrefs.
+ 
+ 2017-11-09  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_elab.adb: Update the documentation on adding a new elaboration
+ 	schenario. Add new hash table Recorded_Top_Level_Scenarios.
+ 	(Is_Check_Emitting_Scenario): Removed.
+ 	(Is_Recorded_Top_Level_Scenario): New routine.
+ 	(Kill_Elaboration_Scenario): Reimplemented.
+ 	(Record_Elaboration_Scenario): Mark the scenario as recorded.
+ 	(Set_Is_Recorded_Top_Level_Scenario): New routine.
+ 	(Update_Elaboration_Scenario): Reimplemented.
+ 	* sinfo.adb (Is_Recorded_Scenario): Removed.
+ 	(Set_Is_Recorded_Scenario): Removed.
+ 	* sinfo.ads: Remove attribute Is_Recorded_Scenario along with
+ 	occurrences in nodes.
+ 	(Is_Recorded_Scenario): Removed along with pragma Inline.
+ 	(Set_Is_Recorded_Scenario): Removed along with pragma Inline.
+ 
+ 2017-11-09  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Part_Of): Change "designate" to "denote" in
+ 	error message.
+ 
+ 2017-11-09  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Allocator): Add warning messages corresponding
+ 	to the allocation of an anonymous access-to-controlled object.
+ 
+ 2017-11-09  Jerome Lambourg  <lambourg@adacore.com>
+ 
+ 	* sigtramp-qnx.c: Fix obvious typo.
+ 
+ 2017-11-09  Doug Rupp  <rupp@adacore.com>
+ 
+ 	* libgnarl/s-taprop__linux.adb (Monotonic_Clock): Minor reformatting.
+ 
+ 2017-11-09  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_res.adb (Resolve): If expression is an entity whose type has
+ 	implicit dereference, generate reference to it, because no reference is
+ 	generated for an overloaded entity during analysis, given that its
+ 	identity may not be known.
+ 
+ 2017-11-09  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_disp.adb (Expand_Interface_Thunk): Replace substraction of
+ 	offset-to-top field by addition.
+ 	(Make_Secondary_DT): Initialize the offset-to-top field with a negative
+ 	offset.
+ 	* exp_ch3.adb (Build_Offset_To_Top_Function): Build functions that
+ 	return a negative offset-to-top value.
+ 	(Initialize_Tag): Invoke runtime services Set_Dynamic_Offset_To_Top and
+ 	Set_Static_Offset_To_Top passing a negative offet-to-top value;
+ 	initialize also the offset-to-top field with a negative offset.
+ 	* libgnat/a-tags.adb (Base_Address): Displace the pointer by means of
+ 	an addition since the offset-to-top field is now a negative value.
+ 	(Displace): Displace the pointer to the object means of a substraction
+ 	since it is now a negative value.
+ 	(Set_Dynamic_Offset_to_top): Displace the pointer to the object by
+ 	means of a substraction since it is now a negative value.
+ 
+ 2017-11-09  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gnat1drv.adb (Gnat1drv): Call Errout.Finalize (Last_Call => True)
+ 	before Errout.Output_Messages also in the case of compilation errors.
+ 
+ 2017-11-09  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* doc/gnat_ugn/the_gnat_compilation_model.rst (Interfacing with C++ at
+ 	the Class Level): Fix error interfacing with C strings.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2017-11-09  Jerome Lambourg  <lambourg@adacore.com>
+ 
+ 	* system-qnx-aarch64.ads: Fix the priority constants.
+ 	* s-osinte__qnx.ads: Fix constants for handling the locking protocols
+ 	and scheduling.
+ 	* s-osinte__qnx.adb: New file , prevents the use of priority 0 that
+ 	corresponds to an idle priority on QNX.
+ 
+ 2017-11-09  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_prag.adb, sem_util.adb, sem_elab.adb: Fix minor typos in
+ 	comments.
+ 
+ 2017-11-09  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* lib-xref-spark_specific.adb (Add_SPARK_Xrefs): Ignore loop parameters
+ 	in expression funtions that are expanded into variables.
+ 
+ 2017-11-09  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_util.adb: Minor whitespace cleanup.
+ 
+ 2017-11-09  Jerome Lambourg  <lambourg@adacore.com>
+ 
+ 	* libgnarl/s-taprop__qnx.adb: Refine aarch64-qnx. Use the POSIX
+ 	s-taprop version rather than a custom one.
+ 	* sigtramp-qnx.c (aarch64-qnx): Implement the signal trampoline.
+ 
+ 2017-11-08  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* lib-xref.ads, lib-xref-spark_specific.adb
+ 	(Traverse_Compilation_Unit): Move declaration to package body.
+ 
+ 2017-11-08  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* exp_spark.adb (Expand_SPARK_N_Object_Renaming_Declaration): Obtain
+ 	the type of the renaming from its defining entity, rather then the
+ 	subtype mark as there may not be a subtype mark.
+ 
+ 2017-11-08  Jerome Lambourg  <lambourg@adacore.com>
+ 
+ 	* adaint.c, s-oscons-tmplt.c, init.c, libgnat/system-qnx-aarch64.ads,
+ 	libgnarl/a-intnam__qnx.ads, libgnarl/s-intman__qnx.adb,
+ 	libgnarl/s-osinte__qnx.ads, libgnarl/s-qnx.ads,
+ 	libgnarl/s-taprop__qnx.adb, s-oscons-tmplt.c, sigtramp-qnx.c,
+ 	terminals.c: Initial port of GNAT for aarch64-qnx
+ 
+ 2017-11-08  Elisa Barboni  <barboni@adacore.com>
+ 
+ 	* exp_util.adb (Find_DIC_Type): Move...
+ 	* sem_util.ads, sem_util.adb (Find_DIC_Type): ... here.
+ 
+ 2017-11-08  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Allocator): Add info messages corresponding to
+ 	the owner and corresponding coextension.
+ 
+ 2017-11-08  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_aggr.adb (Resolve_Delta_Aggregate): Divide into the
+ 	following separate procedures.
+ 	(Resolve_Delta_Array_Aggregate): Previous code form
+ 	Resolve_Delta_Aggregate.
+ 	(Resolve_Delta_Record_Aggregate): Extend previous code to cover latest
+ 	ARG decisions on the legality rules for delta aggregates for records:
+ 	in the case of a variant record, components from different variants
+ 	cannot be specified in the delta aggregate, and this must be checked
+ 	statically.
+ 
+ 2017-11-08  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* spark_xrefs.ads (SPARK_Scope_Record): Remove File_Num component.
+ 	* lib-xref-spark_specific.adb (Add_SPARK_Scope): Skip initialization of
+ 	removed component.
+ 
+ 2017-11-08  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* sem_ch4.adb: Minor typo fix.
+ 
+ 2017-11-08  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* spark_xrefs.ads (SPARK_Scope_Record): Remove Spec_File_Num and
+ 	Spec_Scope_Num components.
+ 	* spark_xrefs.adb (dspark): Skip pretty-printing to removed components.
+ 	* lib-xref-spark_specific.adb (Add_SPARK_Scope): Skip initialization of
+ 	removed components.
+ 	(Collect_SPARK_Xrefs): Skip setting proper values of removed
+ 	components.
+ 
+ 2017-11-08  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* exp_ch4.adb (Expand_N_Type_Conversion): Add test that the selector
+ 	name is a discriminant in check for unconditional accessibility
+ 	violation within instances.
+ 
+ 2017-11-08  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* lib-xref-spark_specific.adb (Add_SPARK_Xrefs): Remove special-case
+ 	for constants (with variable input).
+ 	(Is_Constant_Object_Without_Variable_Input): Remove.
+ 
+ 2017-11-08  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* exp_ch9.adb, sem_disp.adb, sem_util.adb: Minor reformatting.
+ 
+ 2017-11-08  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* spark_xrefs.ads (Rtype): Remove special-casing of constants for SPARK
+ 	cross-references.
+ 	(dspark): Remove hardcoded table bound.
+ 
+ 2017-11-08  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch4.adb (Analyze_Aggregate): For Ada2020 delta aggregates, use
+ 	the type of the base of the construct to determine the type (or
+ 	candidate interpretations) of the delta aggregate. This allows the
+ 	construct to appear in a context that expects a private extension.
+ 	* sem_res.adb (Resolve): Handle properly a delta aggregate with an
+ 	overloaded base.
+ 
+ 2017-11-08  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* spark_xrefs.ads (SPARK_Xref_Record): Replace file and scope indices
+ 	with Entity_Id of the reference.
+ 	* spark_xrefs.adb (dspark): Adapt pretty-printing routine.
+ 	* lib-xref-spark_specific.adb (Add_SPARK_Xrefs): Store Entity_Id of the
+ 	reference, not the file and scope indices.
+ 
+ 2017-11-08  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* errout.ads (Current_Node): New.
+ 	* errout.adb (Error_Msg): Use Current_Node.
+ 	* par-ch6.adb, par-ch7.adb, par-ch9.adb, par-util.adb: Set Current_Node
+ 	when relevant.
+ 	* style.adb: Call Error_Msg_N when possible.
+ 
+ 2017-11-08  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* spark_xrefs.ads (SPARK_Scope_Record): Rename Scope_Id component to
+ 	Entity.
+ 	* lib-xref-spark_specific.adb, spark_xrefs.adb: Propagate renaming of
+ 	the Scope_Id record component.
+ 
+ 2017-11-08  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* spark_xrefs.ads (SPARK_File_Record): Remove string components.
+ 	* spark_xrefs.adb (dspark): Remove pretty-printing of removed
+ 	SPARK_File_Record components.
+ 	* lib-xref-spark_specific.adb (Add_SPARK_File): Do not store string
+ 	representation of files/units.
+ 
+ 2017-11-08  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* lib-xref.ads, lib-xref-spark_specific.adb (Traverse_Declarations):
+ 	Remove Inside_Stubs parameter.
+ 
+ 2017-11-08  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* spark_xrefs.ads (SPARK_Xref_Record): Referenced object is now
+ 	represented by Entity_Id.
+ 	(SPARK_Scope_Record): Referenced scope (e.g. subprogram) is now
+ 	represented by Entity_Id; this information is not repeated as
+ 	Scope_Entity.
+ 	(Heap): Moved from lib-xref-spark_specific.adb, to reside next to
+ 	Name_Of_Heap_Variable.
+ 	* spark_xrefs.adb (dspark): Adapt debug routine to above changes in
+ 	data types.
+ 	* lib-xref-spark_specific.adb: Adapt routines for populating SPARK
+ 	scope and xrefs tables to above changes in data types.
+ 
+ 2017-11-08  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_ch8.adb (Mark_Use_Clauses): Add condition to always mark the
+ 	primitives of generic actuals.
+ 	(Mark_Use_Type): Add recursive call to properly mark class-wide type's
+ 	base type clauses as per ARM 8.4 (8.2/3).
+ 
+ 2017-11-08  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch6.adb (Analyze_Generic_Subprobram_Body): Validate
+ 	categorization dependency of the body, as is done for non-generic
+ 	units.
+ 	(New_Overloaded_Entity, Visible_Part_Type): Remove linear search
+ 	through declarations (Simple optimization, no behavior change).
+ 
+ 2017-11-08  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* spark_xrefs.ads (SPARK_Xref_Record): Remove inessential components.
+ 	(SPARK_Scope_Record): Remove inessential components.
+ 	* spark_xrefs.adb (dspark): Remove pretty-printing of removed record
+ 	components.
+ 	* lib-xref-spark_specific.adb (Add_SPARK_Scope): Remove setting of
+ 	removed record components.
+ 	(Add_SPARK_Xrefs): Remove setting of removed record components.
+ 
+ 2017-11-08  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* lib-xref-spark_specific.adb (Add_SPARK_Xrefs): Remove dead check for
+ 	empty entities.
+ 
+ 2017-11-08  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_disp.adb (Is_Inherited_Public_Operation): Extend the
+ 	functionality of this routine to handle multiple levels of derivations.
+ 
+ 2017-11-08  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* einfo.adb: Elist36 is now used as Nested_Scenarios.
+ 	(Nested_Scenarios): New routine.
+ 	(Set_Nested_Scenarios): New routine.
+ 	(Write_Field36_Name): New routine.
+ 	* einfo.ads: Add new attribute Nested_Scenarios along with occurrences
+ 	in entities.
+ 	(Nested_Scenarios): New routine along with pragma Inline.
+ 	(Set_Nested_Scenarios): New routine along with pragma Inline.
+ 	* sem_elab.adb (Find_And_Process_Nested_Scenarios): New routine.
+ 	(Process_Nested_Scenarios): New routine.
+ 	(Traverse_Body): When a subprogram body is traversed for the first
+ 	time, find, save, and process all suitable scenarios found within.
+ 	Subsequent traversals of the same subprogram body utilize the saved
+ 	scenarios.
+ 
+ 2017-11-08  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* lib-xref-spark_specific.adb (Add_SPARK_Scope): Remove detection of
+ 	protected operations.
+ 	(Add_SPARK_Xrefs): Simplify detection of empty entities.
+ 	* get_spark_xrefs.ads, get_spark_xrefs.adb, put_spark_xrefs.ads,
+ 	put_spark_xrefs.adb, spark_xrefs_test.adb: Remove code for writing,
+ 	reading and testing SPARK cross-references stored in the ALI files.
+ 	* lib-xref.ads (Output_SPARK_Xrefs): Remove.
+ 	* lib-writ.adb (Write_ALI): Do not write SPARK cross-references to the
+ 	ALI file.
+ 	* spark_xrefs.ads, spark_xrefs.adb (pspark): Remove, together
+ 	with description of the SPARK xrefs ALI format.
+ 	* gcc-interface/Make-lang.in (GNAT_ADA_OBJS): Remove get_spark_refs.o
+ 	and put_spark_refs.o.
+ 
+ 2017-11-08  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* exp_ch4.adb (Apply_Accessibility_Check): Do not finalize the object
+ 	when the associated access type is subject to pragma
+ 	No_Heap_Finalization.
+ 	* exp_intr.adb (Expand_Unc_Deallocation): Use the available view of the
+ 	designated type in case it comes from a limited withed unit.
+ 
+ 2017-11-08  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* exp_ch3.adb (Expand_N_Object_Declaration): Save and restore relevant
+ 	SPARK-related flags.  Add ??? comment.
+ 	* exp_util.adb (Insert_Actions): Add an entry for node
+ 	N_Variable_Reference_Marker.
+ 	* sem.adb (Analyze): Add an entry for node N_Variable_Reference_Marker.
+ 	* sem_ch8.adb (Find_Direct_Name): Add constant Is_Assignment_LHS. Build
+ 	and record a variable reference marker for the current name.
+ 	(Find_Expanded_Name): Add constant Is_Assignment_LHS. Build and record
+ 	a variable reference marker for the current name.
+ 	* sem_elab.adb (Build_Variable_Reference_Marker): New routine.
+ 	(Extract_Variable_Reference_Attributes): Reimplemented.
+ 	(Info_Scenario): Add output for variable references and remove output
+ 	for variable reads.
+ 	(Info_Variable_Read): Removed.
+ 	(Info_Variable_Reference): New routine.
+ 	(Is_Suitable_Scenario): Variable references are now suitable scenarios
+ 	while variable reads are not.
+ 	(Output_Active_Scenarios): Add output for variable references and
+ 	remove output for variable reads.
+ 	(Output_Variable_Read): Removed.
+ 	(Output_Variable_Reference): New routine.
+ 	(Process_Variable_Read): Removed.
+ 	(Process_Variable_Reference): New routine.
+ 	(Process_Variable_Reference_Read): New routine.
+ 	* sem_elab.ads (Build_Variable_Reference_Marker): New routine.
+ 	* sem_res.adb (Resolve_Actuals): Build and record a variable reference
+ 	marker for the current actual.
+ 	* sem_spark.adb (Check_Node): Add an entry for node
+ 	N_Variable_Reference_Marker.
+ 	* sem_util.adb (Within_Subprogram_Call): Moved to the library level.
+ 	* sem_util.ads (Within_Subprogram_Call): Moved to the library level.
+ 	* sinfo.adb (Is_Read): New routine.
+ 	(Is_Write): New routine.
+ 	(Target): Updated to handle variable reference markers.
+ 	(Set_Is_Read): New routine.
+ 	(Set_Is_Write): New routine.
+ 	(Set_Target): Updated to handle variable reference markers.
+ 	* sinfo.ads: Add new attributes Is_Read and Is_Write along with
+ 	occurrences in nodes. Update attribute Target. Add new node
+ 	kind N_Variable_Reference_Marker.
+ 	(Is_Read): New routine along with pragma Inline.
+ 	(Is_Write): New routine along with pragma Inline.
+ 	(Set_Is_Read): New routine along with pragma Inline.
+ 	(Set_Is_Write): New routine along with pragma Inline.
+ 	* sprint.adb (Sprint_Node_Actual): Add an entry for node
+ 	N_Variable_Reference_Marker.
+ 
+ 2017-11-08  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_util.adb (Subprogram_Name): Append suffix for overloaded
+ 	subprograms.
+ 
+ 2017-11-08  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_ch8.adb (Use_One_Type, Update_Use_Clause_Chain): Do not report
+ 	about unused use-type or use-package clauses inside inlined bodies.
+ 
+ 2017-11-08  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_elab.adb (Ensure_Prior_Elaboration): Add new parameter
+ 	In_Partial_Fin along with a comment on its usage. Do not guarantee the
+ 	prior elaboration of a unit when the need came from a partial
+ 	finalization context.
+ 	(In_Initialization_Context): Relocated to Process_Call.
+ 	(Is_Partial_Finalization_Proc): New routine.
+ 	(Process_Access): Add new parameter In_Partial_Fin along with a comment
+ 	on its usage.
+ 	(Process_Activation_Call): Add new parameter In_Partial_Fin along with
+ 	a comment on its usage.
+ 	(Process_Activation_Conditional_ABE_Impl): Add new parameter
+ 	In_Partial_Fin along with a comment on its usage. Do not emit any ABE
+ 	diagnostics when the activation occurs in a partial finalization
+ 	context.
+ 	(Process_Activation_Guaranteed_ABE_Impl): Add new parameter
+ 	In_Partial_Fin along with a comment on its usage.
+ 	(Process_Call): Add new parameter In_Partial_Fin along with a comment
+ 	on its usage. A call is within a partial finalization context when it
+ 	targets a finalizer or primitive [Deep_]Finalize, and the call appears
+ 	in initialization actions. Pass this information down to the recursive
+ 	steps of the Processing phase.
+ 	(Process_Call_Ada): Add new parameter In_Partial_Fin along with a
+ 	comment on its usage. Remove the guard which suppresses the generation
+ 	of implicit Elaborate[_All] pragmas. This is now done in
+ 	Ensure_Prior_Elaboration.
+ 	(Process_Call_Conditional_ABE): Add new parameter In_Partial_Fin along
+ 	with a comment on its usage. Do not emit any ABE diagnostics when the
+ 	call occurs in a partial finalization context.
+ 	(Process_Call_SPARK): Add new parameter In_Partial_Fin along with a
+ 	comment on its usage.
+ 	(Process_Instantiation): Add new parameter In_Partial_Fin along with a
+ 	comment on its usage.
+ 	(Process_Instantiation_Ada): Add new parameter In_Partial_Fin along
+ 	with a comment on its usage.
+ 	(Process_Instantiation_Conditional_ABE): Add new parameter
+ 	In_Partial_Fin along with a comment on its usage. Do not emit any ABE
+ 	diagnostics when the instantiation occurs in a partial finalization
+ 	context.
+ 	(Process_Instantiation_SPARK): Add new parameter In_Partial_Fin along
+ 	with a comment on its usage.
+ 	(Process_Scenario): Add new parameter In_Partial_Fin along  with a
+ 	comment on its usage.
+ 	(Process_Single_Activation): Add new parameter In_Partial_Fin along
+ 	with a comment on its usage.
+ 	(Traverse_Body): Add new parameter In_Partial_Fin along with a comment
+ 	on its usage.
+ 
+ 2017-11-08  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_ch13.adb: Add optional parameter to Error_Msg.
+ 
+ 2017-11-08  Jerome Lambourg  <lambourg@adacore.com>
+ 
+ 	* fname.adb (Is_Internal_File_Name): Do not check the 8+3 naming schema
+ 	for the Interfaces.* hierarchy as longer unit names are now allowed.
+ 
+ 2017-11-08  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_util.adb (Subprogram_Name): Emit sloc for the enclosing
+ 	subprogram as well.  Support more cases of entities.
+ 	(Append_Entity_Name): Add some defensive code.
+ 
+ 2017-11-06  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/misc.c (gnat_post_options): Clear warn_return_type.
+ 
+ 2017-10-31  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/82785
+ 	* gcc-interface/Makefile.in (m68k/Linux): Fix typo.
+ 
+ 2017-10-21  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/Makefile.in: Remove bogus settings for VxWorks.
+ 
+ 2017-10-21  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/utils.c (pad_type_hash): Use hashval_t for hash value.
+ 	(convert): Do not use an unchecked conversion for converting from a
+ 	type to another type padding it.
+ 
+ 2017-10-20  Doug Rupp  <rupp@adacore.com>
+ 
+ 	* libgnarl/s-osinte__linux.ads (Relative_Timed_Wait): Add variable
+ 	needed for using monotonic clock.
+ 	* libgnarl/s-taprop__linux.adb: Revert previous monotonic clock
+ 	changes.
+ 	* libgnarl/s-taprop__linux.adb, s-taprop__posix.adb: Unify and factor
+ 	out monotonic clock related functions body.
+ 	(Timed_Sleep, Timed_Delay, Montonic_Clock, RT_Resolution,
+ 	Compute_Deadline): Move to...
+ 	* libgnarl/s-tpopmo.adb: ... here. New separate package body.
+ 
+ 2017-10-20  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_util.adb (Is_Controlling_Limited_Procedure): Handle properly the
+ 	case where the controlling formal is an anonymous access to interface
+ 	type.
+ 	* exp_ch9.adb (Extract_Dispatching_Call): If controlling actual is an
+ 	access type, handle properly the the constructed dereference that
+ 	designates the object used in the rewritten synchronized call.
+ 	(Parameter_Block_Pack): If the type of the actual is by-copy, its
+ 	generated declaration in the parameter block does not need an
+ 	initialization even if the type is a null-excluding access type,
+ 	because it will be initialized with the value of the actual later on.
+ 	(Parameter_Block_Pack): Do not add controlling actual to parameter
+ 	block when its type is by-copy.
+ 
+ 2017-10-20  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_ch8.adb (Update_Use_Clause_Chain): Add sanity check to verify
+ 	scope stack traversal into the context clause.
+ 
+ 2017-10-20  Bob Duff  <duff@adacore.com>
+ 
+ 	* sinfo.ads: Fix a comment typo.
+ 
+ 2017-10-20  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* doc/gnat_ugn/building_executable_programs_with_gnat.rst (-flto): Add
+ 	warning against usage in conjunction with -gnatn.
+ 	(-fdump-xref): Delete entry.
+ 	* doc/gnat_ugn/gnat_utility_programs.rst (--ext): Remove mention of
+ 	-fdump-xref switch.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2017-10-20  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_type.adb, exp_util.adb, sem_util.adb, sem_dim.adb, sem_elab.adb:
+ 	Minor reformatting.
+ 
+ 2017-10-20  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_dim.adb (Analyze_Dimension_Binary_Op): Accept with a warning to
+ 	compare a dimensioned expression with a literal.
+ 	(Dim_Warning_For_Numeric_Literal): Do not issue a warning for the
+ 	special value zero.
+ 	* doc/gnat_ugn/gnat_and_program_execution.rst: Update description of
+ 	dimensionality system in GNAT.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2017-10-20  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_ch6.adb (Analyze_Expression_Function.Freeze_Expr_Types): Remove
+ 	inadequate silencing of errors.
+ 	* sem_util.adb (Check_Part_Of_Reference): Do not issue an error when
+ 	checking the subprogram body generated from an expression function,
+ 	when this is done as part of the preanalysis done on expression
+ 	functions, as the subprogram body may not yet be attached in the AST.
+ 	The error if any will be issued later during the analysis of the body.
+ 	(Is_Aliased_View): Trivial rewrite with Is_Formal_Object.
+ 
+ 2017-10-20  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_ch8.adb (Update_Chain_In_Scope): Add missing [-gnatwu] marker for
+ 	warning on ineffective use clause.
+ 
+ 2017-10-20  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch11.ads (Warn_If_No_Local_Raise): Declare.
+ 	* exp_ch11.adb (Expand_Exception_Handlers): Use Warn_If_No_Local_Raise
+ 	to issue the warning on the absence of local raise.
+ 	(Possible_Local_Raise): Do not issue the warning for Call_Markers.
+ 	(Warn_If_No_Local_Raise): New procedure to issue the warning on the
+ 	absence of local raise.
+ 	* sem_elab.adb: Add with and use clauses for Exp_Ch11.
+ 	(Record_Elaboration_Scenario): Call Possible_Local_Raise in the cases
+ 	where a scenario could give rise to raising Program_Error.
+ 	* sem_elab.adb: Typo fixes.
+ 	* fe.h (Warn_If_No_Local_Raise): Declare.
+ 	* gcc-interface/gigi.h (get_exception_label): Change return type.
+ 	* gcc-interface/trans.c (gnu_constraint_error_label_stack): Change to
+ 	simple vector of Entity_Id.
+ 	(gnu_storage_error_label_stack): Likewise.
+ 	(gnu_program_error_label_stack): Likewise.
+ 	(gigi): Adjust to above changes.
+ 	(Raise_Error_to_gnu): Likewise.
+ 	(gnat_to_gnu) <N_Goto_Statement>: Set TREE_USED on the label.
+ 	(N_Push_Constraint_Error_Label): Push the label onto the stack.
+ 	(N_Push_Storage_Error_Label): Likewise.
+ 	(N_Push_Program_Error_Label): Likewise.
+ 	(N_Pop_Constraint_Error_Label): Pop the label from the stack and issue
+ 	a warning on the absence of local raise.
+ 	(N_Pop_Storage_Error_Label): Likewise.
+ 	(N_Pop_Program_Error_Label): Likewise.
+ 	(push_exception_label_stack): Delete.
+ 	(get_exception_label): Change return type to Entity_Id and adjust.
+ 	* gcc-interface/utils2.c (build_goto_raise): Change type of first
+ 	parameter to Entity_Id and adjust.  Set TREE_USED on the label.
+ 	(build_call_raise): Adjust calls to get_exception_label and also
+ 	build_goto_raise.
+ 	(build_call_raise_column): Likewise.
+ 	(build_call_raise_range): Likewise.
+ 	* doc/gnat_ugn/building_executable_programs_with_gnat.rst (-gnatw.x):
+ 	Document actual default behavior.
+ 
+ 2017-10-20  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* einfo.ads: Minor consistent punctuation in comment.  All numbered
+ 	items in the comment of Is_Internal are now terminated with a period.
+ 
+ 2017-10-20  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_util.adb (Build_Temporary): Mark created temporary entity as
+ 	internal.
+ 
+ 2017-10-20  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_type.adb (In_Generic_Actual): Simplified.
+ 
+ 2017-10-20  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_ch12.adb (Check_Formal_Package_Instance): Add sanity check to
+ 	verify a renaming exists for a generic formal before comparing it to
+ 	the actual as defaulted formals will not have a renamed_object.
+ 
+ 2017-10-20  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_ch6.adb (Replace_Returns): Fix wrong management of
+ 	N_Block_Statement nodes.
+ 
+ 2017-10-20  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_aggr.adb (Initialize_Array_Component): Avoid adjusting a
+ 	component of an array aggregate if it is initialized by a
+ 	build-in-place function call.
+ 	* exp_ch6.adb (Is_Build_In_Place_Result_Type): Use -gnatd.9 to disable
+ 	bip for nonlimited types.
+ 	* debug.adb: Document -gnatd.9.
+ 
+ 2017-10-20  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_ch12.adb: Remove redundant setting of Parent.
+ 
+ 2017-10-20  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch4.adb (Find_Concatenation_Types): Filter out operators if one
+ 	of the operands is a string literal.
+ 
+ 2017-10-20  Bob Duff  <duff@adacore.com>
+ 
+ 	* einfo.ads: Comment fix.
+ 
+ 2017-10-20  Clement Fumex  <fumex@adacore.com>
+ 
+ 	* switch-c.adb: Remove -gnatwm from the switches triggered by -gnateC.
+ 
+ 2017-10-20  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_dim.adb (Extract_Power): Accept dimension values that are not
+ 	non-negative integers when the dimensioned base type is an Integer
+ 	type.
+ 
+ 2017-10-20  Bob Duff  <duff@adacore.com>
+ 
+ 	* sinfo.ads, sinfo.adb (Alloc_For_BIP_Return): New flag to indicate
+ 	that an allocator came from a b-i-p return statement.
+ 	* exp_ch4.adb (Expand_Allocator_Expression): Avoid adjusting the return
+ 	object of a nonlimited build-in-place function call.
+ 	* exp_ch6.adb (Expand_N_Extended_Return_Statement): Set the
+ 	Alloc_For_BIP_Return flag on generated allocators.
+ 	* sem_ch5.adb (Analyze_Assignment): Move Assert to where it can't fail.
+ 	If the N_Assignment_Statement has been transformed into something else,
+ 	then Should_Transform_BIP_Assignment won't work.
+ 	* exp_ch3.adb (Expand_N_Object_Declaration): A previous revision said,
+ 	"Remove Adjust if we're building the return object of an extended
+ 	return statement in place." Back out that part of the change, because
+ 	the Alloc_For_BIP_Return flag is now used for that.
+ 
+ 2017-10-19  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_ch6.adb (Is_Build_In_Place_Result_Type): Fix silly bug -- "Typ"
+ 	should be "T".  Handle case of a subtype of a class-wide type.
+ 
+ 2017-10-19  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_util.adb: (Process_Statements_For_Controlled_Objects): Clarify
+ 	which node kinds can legitimately be ignored, and raise Program_Error
+ 	for others.
+ 
+ 2017-10-19  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_elab.adb (Compilation_Unit): Handle the case of a subprogram
+ 	instantiation that acts as a compilation unit.
+ 	(Find_Code_Unit): Reimplemented.
+ 	(Find_Top_Unit): Reimplemented.
+ 	(Find_Unit_Entity): New routine.
+ 	(Process_Instantiation_SPARK): Correct the elaboration requirement a
+ 	package instantiation imposes on a unit.
+ 
+ 2017-10-19  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_ch6.adb (Is_Build_In_Place_Result_Type): Enable build-in-place
+ 	for a narrow set of controlled types.
+ 
+ 2017-10-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sinput.ads (Line_Start): Add pragma Inline.
+ 	* widechar.ads (Is_Start_Of_Wide_Char): Likewise.
+ 
+ 2017-10-19  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_attr.adb (Expand_N_Attribute_Reference): Disable
+ 	Make_Build_In_Place_Call_... for F(...)'Old, where F(...) is a
+ 	build-in-place function call so that the temp is declared in the right
+ 	place.
+ 
+ 2017-10-18  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/misc.c (gnat_tree_size): Move around.
+ 
+ 	* gcc-interface/utils.c (max_size): Deal with SSA names.
+ 
+ 2017-10-17  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* gcc-interface/misc.c (gnat_tree_size): New function.
+ 	(LANG_HOOKS_TREE_SIZE): Redefine.
+ 
+ 2017-10-14  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_elab.adb (In_Preelaborated_Context): A generic package subject to
+ 	Remote_Call_Interface is not a suitable preelaboratd context when the
+ 	call appears in the package body.
+ 
+ 2017-10-14  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* layout.ads (Set_Elem_Alignment): Add Align parameter defaulted to 0.
+ 	* layout.adb (Set_Elem_Alignment): Likewise.  Use M name as maximum
+ 	alignment for consistency.  If Align is non-zero, use the minimum of
+ 	Align and M for the alignment.
+ 	* cstand.adb (Build_Float_Type): Use Set_Elem_Alignment instead of
+ 	setting the alignment directly.
+ 
+ 2017-10-14  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Pragma, case Check): Defer evaluation of the
+ 	optional string in an Assert pragma until the expansion of the pragma
+ 	has rewritten it as a conditional statement, so that the string
+ 	argument is only evaluaed if the assertion fails. This is mandated by
+ 	RM 11.4.2.
+ 
+ 2017-10-14  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* debug.adb: Switch -gnatd.v and associated flag are now used to
+ 	enforce the SPARK rules for elaboration in SPARK code.
+ 	* sem_elab.adb: Describe switch -gnatd.v.
+ 	(Process_Call): Verify the SPARK rules only when -gnatd.v is in effect.
+ 	(Process_Instantiation): Verify the SPARK rules only when -gnatd.v is
+ 	in effect.
+ 	(Process_Variable_Assignment): Clarify why variable assignments are
+ 	processed reglardless of whether -gnatd.v is in effect.
+ 	* doc/gnat_ugn/elaboration_order_handling_in_gnat.rst: Update the
+ 	sections on elaboration code and compilation switches.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2017-10-14  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* exp_util.adb, freeze.adb, sem_aggr.adb, sem_util.ads, sem_util.adb,
+ 	sem_warn.adb: Minor reformattings.
+ 
+ 2017-10-14  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* doc/gnat_rm/implementation_defined_aspects.rst: Add documentation
+ 	for reverse iteration over formal containers.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2017-10-14  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_elab.adb (Ensure_Dynamic_Prior_Elaboration): Renamed to
+ 	Ensure_Prior_Elaboration_Dynamic for consistency reasons.
+ 	(Ensure_Static_Prior_Elaboration): Renamed to
+ 	Ensure_Prior_Elaboration_Static for consistency reasons.
+ 	(Info_Variable_Reference): Renamed to Info_Variable_Read in order to
+ 	reflect its new purpose.
+ 	(Is_Initialized): New routine.
+ 	(Is_Suitable_Variable_Reference): Renamed to Is_Suitable_Variable_Read
+ 	in order to reflect its new purpose.
+ 	(Is_Variable_Read): New routine.
+ 	(Output_Variable_Reference): Renamed to Output_Variable_Read in order
+ 	to reflect its new purpose.
+ 	(Process_Variable_Assignment): This routine now acts as a top level
+ 	dispatcher for variable assignments.
+ 	(Process_Variable_Assignment_Ada): New routine.
+ 	(Process_Variable_Assignment_SPARK): New routine.
+ 	(Process_Variable_Reference): Renamed to Process_Variable_Read in order
+ 	to reflects its new purpose. A reference to a variable is now suitable
+ 	for ABE processing only when it is a read. The logic in the routine now
+ 	reflects the latest SPARK elaboration rules.
+ 
+ 2017-10-14  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_ch8.adb (Analyze_Subprogram_Renaming): Modify condition that
+ 	triggers marking on formal subprograms.
+ 
+ 2017-10-14  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* checks.adb (Ensure_Valid): Do not skip adding the validity check on
+ 	renamings of objects that come from the sources.
+ 
+ 2017-10-14  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* cstand.adb (Build_Float_Type): Move down Siz parameter, add Align
+ 	parameter and set the alignment of the type to Align.
+ 	(Copy_Float_Type): Adjust call to Build_Float_Type.
+ 	(Register_Float_Type): Add pragma Unreferenced for Precision.  Adjust
+ 	call to Build_Float_Type and do not set RM_Size and Alignment.
+ 
+ 2017-10-14  Patrick Bernardi  <bernardi@adacore.com>
+ 
+ 	* Makefile.rtl (GNATRTL_NONTASKING_OBJ): Add s-soliin to
+ 	GNATRTL_NONTASKING_OBJ.
+ 
+ 2017-10-14  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_ch6.adb (Is_Build_In_Place_Result_Type): Include code for
+ 	enabling b-i-p for nonlimited controlled types (but disabled).
+ 
+ 2017-10-14  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_elab.adb (Is_Suitable_Variable_Assignment): Replace call to
+ 	Has_Warnings_Off with Warnings_Off.
+ 
+ 2017-10-14  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sinfo.ads (Generic_Parent): Remove wrong (possibly obsolete) comment.
+ 
+ 2017-10-14  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_ch3.adb (Analyze_Declarations): Analyze the contract of an
+ 	enclosing package at the end of the visible declarations.
+ 	* sem_prag.adb (Analyze_Initialization_Item): Suppress the analysis of
+ 	an initialization item which is undefined due to some illegality.
+ 
+ 2017-10-14  Patrick Bernardi  <bernardi@adacore.com>
+ 
+ 	* ali.adb: Add new ALI line 'T' to read the number of tasks contain
+ 	within each unit that require a default-sized primary and secondary
+ 	stack to be generated by the binder.
+ 	(Scan_ALI): Scan new 'T' lines.
+ 	* ali.ads: Add Primary_Stack_Count and Sec_Stack_Count to Unit_Record.
+ 	* bindgen.adb (Gen_Output_File): Count the number of default-sized
+ 	stacks within the closure that are to be created by the binder.
+ 	(Gen_Adainit, Gen_Output_File_Ada): Generate default-sized secondary
+ 	stacks and record these in System.Secodnary_Stack.
+ 	(Resolve_Binder_Options): Check if System.Secondary_Stack is in the
+ 	closure of the program being bound.
+ 	* bindusg.adb (Display): Add "-Q" switch. Remove rouge "--RTS" comment.
+ 	* exp_ch3.adb (Count_Default_Sized_Task_Stacks): New routine.
+ 	(Expand_N_Object_Declaration): Count the number of default-sized stacks
+ 	used by task objects contained within the object whose declaration is
+ 	being expanded.  Only performed when either the restrictions
+ 	No_Implicit_Heap_Allocations or No_Implicit_Task_Allocations are in
+ 	effect.
+ 	* exp_ch9.adb (Create_Secondary_Stack_For_Task): New routine.
+ 	(Expand_N_Task_Type_Declaration): Create a secondary stack as part of
+ 	the expansion of a task type if the size of the stack is known at
+ 	run-time and the restrictions No_Implicit_Heap_Allocations or
+ 	No_Implicit_Task_Allocations are in effect.
+ 	(Make_Task_Create_Call): If using a restricted profile provide
+ 	secondary stack parameter: either the statically created stack or null.
+ 	* lib-load.adb (Create_Dummy_Package_Unit, Load_Unit,
+ 	Load_Main_Source): Include Primary_Stack_Count and Sec_Stack_Count in
+ 	Unit_Record initialization expressions.
+ 	* lib-writ.adb (Add_Preprocessing_Dependency,
+ 	Ensure_System_Dependency): Include Primary_Stack_Count and
+ 	Sec_Stack_Count in Unit_Record initialization expression.
+ 	(Write_ALI): Write T lines.
+ 	(Write_Unit_Information): Do not output 'T' lines if there are no
+ 	stacks for the binder to generate.
+ 	* lib-writ.ads: Updated library information documentation to include
+ 	new T line entry.
+ 	* lib.adb (Increment_Primary_Stack_Count): New routine.
+ 	(Increment_Sec_Stack_Count): New routine.
+ 	(Primary_Stack_Count): New routine.
+ 	(Sec_Stack_Count): New routine.
+ 	* lib.ads: Add Primary_Stack_Count and Sec_Stack_Count components to
+ 	Unit_Record and updated documentation.
+ 	(Increment_Primary_Stack_Count): New routine along with pragma Inline.
+ 	(Increment_Sec_Stack_Count): New routine along with pragma Inline.
+ 	(Primary_Stack_Count): New routine along with pragma Inline.
+ 	(Sec_Stack_Count): New routine along with pragma Inline.
+ 	* opt.ads: New constant No_Stack_Size.	Flag Default_Stack_Size
+ 	redefined.  New flag Default_Sec_Stack_Size and
+ 	Quantity_Of_Default_Size_Sec_Stacks.
+ 	* rtfinal.c Fixed erroneous comment.
+ 	* rtsfind.ads: Moved RE_Default_Secondary_Stack_Size from
+ 	System.Secondary_Stack to System.Parameters.  Add RE_SS_Stack.
+ 	* sem_util.adb (Number_Of_Elements_In_Array): New routine.
+ 	* sem_util.ads (Number_Of_Elements_In_Array): New routine.
+ 	* switch-b.adb (Scan_Binder_Switches): Scan "-Q" switch.
+ 	* libgnarl/s-solita.adb (Get_Sec_Stack_Addr): Removed routine.
+ 	(Set_Sec_Stack_Addr): Removed routine.
+ 	(Get_Sec_Stack): New routine.
+ 	(Set_Sec_Stack): New routine.
+ 	(Init_Tasking_Soft_Links): Update System.Soft_Links reference to
+ 	reflect new procedure and global names.
+ 	* libgnarl/s-taprop__linux.adb, libgnarl/s-taprop__mingw.adb,
+ 	libgnarl/s-taprop__posix.adb, libgnarl/s-taprop__solaris.adb,
+ 	libgnarl/s-taprop__vxworks.adb (Register_Foreign_Thread): Update
+ 	parameter profile to allow the secondary stack size to be specified.
+ 	* libgnarl/s-tarest.adb (Create_Restricted_Task): Update the parameter
+ 	profile to include Sec_Stack_Address.  Update Tasking.Initialize_ATCB
+ 	call to remove Secondary_Stack_Size reference.  Add secondary stack
+ 	address and size to SSL.Create_TSD call.
+ 	(Task_Wrapper): Remove secondary stack creation.
+ 	* libgnarl/s-tarest.ads (Create_Restricted_Task,
+ 	Create_Restricted_Task_Sequential): Update parameter profile to include
+ 	Sec_Stack_Address and clarify the Size parameter.
+ 	* libgnarl/s-taskin.adb (Initialize_ATCB): Remove Secondary_Stack_Size
+ 	from profile and body.
+ 	(Initialize): Remove Secondary_Stack_Size from Initialize_ATCB call.
+ 	* libgnarl/s-taskin.ads: Removed component Secondary_Stack_Size from
+ 	Common_ATCB.
+ 	(Initialize_ATCB): Update the parameter profile to remove
+ 	Secondary_Stack_Size.
+ 	* libgnarl/s-tassta.adb (Create_Task): Updated parameter profile and
+ 	call to Initialize_ATCB.  Add secondary stack address and size to
+ 	SSL.Create_TSD call, and catch any storage exception from the call.
+ 	(Finalize_Global_Tasks): Update System.Soft_Links references to reflect
+ 	new subprogram and component names.
+ 	(Task_Wrapper): Remove secondary stack creation.
+ 	(Vulnerable_Complete_Master): Update to reflect TSD changes.
+ 	* libgnarl/s-tassta.ads: Reformat comments.
+ 	(Create_Task): Update parameter profile.
+ 	* libgnarl/s-tporft.adb (Register_Foreign_Thread): Update parameter
+ 	profile to include secondary stack size. Remove secondary size
+ 	parameter from Initialize_ATCB call and add it to Create_TSD call.
+ 	* libgnat/s-parame.adb, libgnat/s-parame__rtems.adb,
+ 	libgnat/s-parame__vxworks.adb (Default_Sec_Stack_Size): New routine.
+ 	* libgnat/s-parame.ads, libgnat/s-parame__ae653.ads,
+ 	libgnat/s-parame__hpux.ads, libgnat/s-parame__vxworks.ads: Remove type
+ 	Percentage.  Remove constants Dynamic, Sec_Stack_Percentage and
+ 	Sec_Stack_Dynamic.  Add constant Runtime_Default_Sec_Stack_Size and
+ 	Sec_Stack_Dynamic.
+ 	(Default_Sec_Stack_Size): New routine.
+ 	* libgnat/s-secsta.adb, libgnat/s-secsta.ads: New implementation. Is
+ 	now Preelaborate.
+ 	* libgnat/s-soflin.adb: Removed unused with-clauses.  With
+ 	System.Soft_Links.Initialize to initialize non-tasking TSD.
+ 	(Create_TSD): Update parameter profile. Initialize the TSD and
+ 	unconditionally call SS_Init.
+ 	(Destroy_TSD): Update SST.SS_Free call.
+ 	(Get_Sec_Stack_Addr_NT, Get_Sec_Stack_Addr_Soft, Set_Sec_Stack_Addr_NT,
+ 	Set_Sec_Stack_Addr_Soft): Remove routines.
+ 	(Get_Sec_Stack_NT, Get_Sec_Stack_Soft, Set_Sec_Stack_NT,
+ 	Set_Sec_Stack_Soft): Add routines.
+ 	(NT_TSD): Move to private part of package specification.
+ 	* libgnat/s-soflin.ads: New types Get_Stack_Call and Set_Stack_Call
+ 	with suppressed access checks.  Renamed *_Sec_Stack_Addr_* routines and
+ 	objects to *_Sec_Stack_*.  TSD: removed warning suppression and
+ 	component intialization. Changed Sec_Stack_Addr to Sec_Stack_Ptr.
+ 	(Create_TSD): Update parameter profile.
+ 	(NT_TSD): Move to private section from body.
+ 	* libgnat/s-soliin.adb, libgnat/s-soliin.ads: New files.
+ 	* libgnat/s-thread.ads (Thread_Body_Enter): Update parameter profile.
+ 	* libgnat/s-thread__ae653.adb (Get_Sec_Stack_Addr, Set_Sec_Stack_Addr):
+ 	Remove routine.
+ 	(Get_Sec_Stack, Set_Sec_Stack): Add routine.
+ 	(Thread_Body_Enter): Update parameter profile and body to adapt to new
+ 	System.Secondary_Stack.
+ 	(Init_RTS): Update body for new System.Soft_Links names.
+ 	* gcc-interface/Make-lang.in (GNAT_ADA_OBJS, GNATBIND_OBJS): Add
+ 	s-soliin.o.
+ 
+ 2017-10-10  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* gcc-interface/decl.c (annotate_value): Use wi::to_wide when
+ 	operating on trees as wide_ints.
+ 
+ 2017-10-09  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_unit.adb (Find_Enclosing_Scope): Do not treat a block statement
+ 	as a scoping construct when it is byproduct of exception handling.
+ 
+ 2017-10-09  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sinfo.ads: Update table Is_Syntactic_Field to reflect the nature of
+ 	semantic field Target of node N_Call_Marker.
+ 
+ 2017-10-09  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Allocator): Reject properly an allocator that
+ 	attempts to copy a limited value, when the allocator is the expression
+ 	in an expression function.
+ 
+ 2017-10-09  Joel Brobecker  <brobecker@adacore.com>
+ 
+ 	* doc/share/conf.py: Tell the style checker that this is a Python
+ 	fragment, and therefore that pyflakes should not be run to validate
+ 	this file.
+ 
+ 2017-10-09  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* einfo.ads (Is_Boolean_Type): Add pragma Inline.
+ 	(Is_Entity_Name): Likewise.
+ 	(Is_String_Type): Likewise.
+ 	* sem_type.adb (Full_View_Covers): Do not test Is_Private_Type here
+ 	and remove useless comparisons on the base types.
+ 	(Covers): Use simple tests for Standard_Void_Type.  Move up cheap tests
+ 	on T2.  Always test Is_Private_Type before Full_View_Covers.
+ 
+ 2017-10-09  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_ch4.adb: Minor refactoring.
+ 
+ 2017-10-09  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_ch3.adb (Replace_Components): Browse the list of discriminants,
+ 	not components.
+ 
+ 2017-10-09  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_elab.adb (Static_Elaboration_Checks): Elaboration requirements
+ 	are verified only in the static model.
+ 
+ 2017-10-09  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch5.adb (Analyze_Iterator_Specification,
+ 	Check_Reverse_Iteration): Check that the domain of iteration supports
+ 	reverse iteration when it is a formal container.  This requires the
+ 	presence of a Previous primitive in the Iterable aspect.
+ 	* sem_ch13.adb (Resolve_Iterable_Operation): Verify legality of
+ 	primitives Last and Previous to support reverse iteration over formal
+ 	containers.
+ 	(Validate_Iterable_Aspect): Add check for reverse iteration operations.
+ 	* exp_ch5.adb (Build_Formal_Container_Iteration): Add proper expansion
+ 	for reverse iteration using primitives Last and Previous in generated
+ 	loop.
+ 
+ 2017-10-09  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_util.adb (Subprogram_Name): If this is a child unit, use the name
+ 	of the Defining_Program_Unit_Name, which is an identifier, in order to
+ 	construct the string for the fully qualified name.
+ 
+ 2017-10-09  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_ch3.adb: Rename Uses_Unseen_Priv into
+ 	Contains_Lib_Incomplete_Type.
+ 
+ 2017-10-09  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_aggr.adb, sem_spark.adb, adabkend.adb, exp_ch5.adb, frontend.adb,
+ 	sem_ch12.adb, fmap.adb, exp_ch6.adb, exp_spark.adb, lib-load.adb,
+ 	exp_ch9.adb, osint.adb, exp_disp.adb, sem_ch8.adb, sem_ch8.ads,
+ 	prepcomp.adb, gnat1drv.adb, atree.adb, sinput-l.adb, targparm.adb,
+ 	sem_ch10.adb, par-ch8.adb: Minor reformatting.
+ 
+ 2017-10-09  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_elab.adb (Is_Suitable_Access): This scenario is now only relevant
+ 	in the static model.
+ 	(Is_Suitable_Variable_Assignment): This scenario is now only relevant
+ 	in the static model.
+ 	(Is_Suitable_Variable_Reference): This scenario is now only relevant in
+ 	the static model.
+ 
+ 2017-10-09  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch3.adb (Analyze_Declarations): In ASIS mode, resolve aspect
+ 	expressions when the enclosing scope is a subprogram body and the next
+ 	declaration is a body that freezes entities previously declared in the
+ 	scope.
+ 
+ 2017-10-09  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_ch8.adb (Analyze_Use_Package): Remove checking of mixture between
+ 	ghost packages and living packages in use clauses.
+ 	(Use_One_Type, Note_Redundant_Use): Correct warning messages
+ 
+ 2017-10-09  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* osint.ads: Document new parameter FD for Read_Source_File.
+ 
+ 2017-10-09  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_util.adb (Make_Predicate_Call): If the type of the expression to
+ 	which the predicate check applies is tagged, convert the expression to
+ 	that type. This is in most cases a no-op, but is relevant if the
+ 	expression is clas-swide, because the predicate function being invoked
+ 	is not a primitive of the type and cannot take a class-wide actual.
+ 
+ 2017-10-09  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* exp_disp.adb: Minor reformatting.
+ 
+ 2017-10-09  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_warn.adb (Warn_On_Unreferenced_Entity): Fix typo.
+ 
+ 2017-10-09  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_elab.adb (Install_ABE_Check): Do not generate an ABE check for
+ 	GNATprove.
+ 	(Install_ABE_Failure): Do not generate an ABE failure for GNATprove.
+ 
+ 2017-10-09  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_ch6.adb: (Make_Build_In_Place_Call_In_Object_Declaration): Return
+ 	immediately if the call has already been processed (by a previous call
+ 	to Make_Build_In_Place_Call_In_Anonymous_Context).
+ 	* sem_elab.adb: Minor typo fixes.
+ 
+ 2017-10-09  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch13.adb (Replace_Type_Ref): In the expression for a dynamic
+ 	predicate, do not replace an identifier that matches the type if the
+ 	identifier is a selector in a selected component, because this
+ 	indicates a reference to some homograph of the type itself, and  not to
+ 	the current occurence in the predicate.
+ 
+ 2017-10-09  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* repinfo.adb (List_Record_Layout): Tweak formatting.
+ 	(Write_Val): Remove superfluous spaces in back-end layout mode.
+ 
+ 2017-10-09  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_res.adb (Property_Error): Remove.
+ 	(Resolve_Actuals): check for SPARK RM 7.1.3(10) rewritten to match the
+ 	current wording of the rule.
+ 
+ 2017-10-09  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_ch3.adb (Analyze_Declarations): Add check for ghost packages
+ 	before analyzing a given scope due to an expression function.
+ 	(Uses_Unseen_Lib_Unit_Priv): Rename to Uses_Unseen_Priv.
+ 
+ 2017-10-09  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_ch6.adb (Make_Build_In_Place_Call_In_Object_Declaration): Use
+ 	Defining_Identifier (Obj_Decl) in two places, because it might have
+ 	changed.
+ 	* exp_ch6.adb (Make_Build_In_Place_Call_In_Allocator): Deal with cases
+ 	involving 'Input on (not visibly) derived types.
+ 
+ 2017-10-09  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* atree.adb: Add new soft link Rewriting_Proc.
+ 	(Rewrite): Invoke the subprogram attached to the rewriting soft link.
+ 	(Set_Rewriting_Proc): New routine.
+ 	* attree.ads: Add new access-to-subprogram type Rewrite_Proc.
+ 	(Set_Rewriting_Proc): New routine.
+ 	* checks.adb (Install_Primitive_Elaboration_Check): Use 'E' character
+ 	for *E*laboration flag to maintain consistency with other elaboration
+ 	flag generating subprograms.
+ 	* debug.adb: Document the new usage of flag -gnatdL.
+ 	* einfo.adb: Node19 is now used as Receiving_Entry.  Node39 is now used
+ 	as Protected_Subprogram.  Flag148 is now used as
+ 	Is_Elaboration_Checks_OK_Id.  Flag302 is now used as
+ 	Is_Initial_Condition_Procedure.
+ 	(Is_Elaboration_Checks_OK_Id): New routine.
+ 	(Is_Initial_Condition_Procedure): New routine.
+ 	(Protected_Subprogram): New routine.
+ 	(Receiving_Entry): New routine.
+ 	(SPARK_Pragma): Update assertion.
+ 	(SPARK_Pragma_Inherited): Update assertion.
+ 	(Suppress_Elaboration_Warnings): Removed.
+ 	(Set_Is_Elaboration_Checks_OK_Id): New routine.
+ 	(Set_Is_Initial_Condition_Procedure): New routine.
+ 	(Set_Protected_Subprogram): New routine.
+ 	(Set_Receiving_Entry): New routine.
+ 	(Set_SPARK_Pragma): Update assertion.
+ 	(Set_SPARK_Pragma_Inherited): Update assertion.
+ 	(Write_Entity_Flags): Update the output for Flag148 and Flag302.
+ 	(Write_Field19_Name): Add output for Receiving_Entry.
+ 	(Write_Field39_Name): Add output for Protected_Subprogram.
+ 	(Write_Field40_Name): Update the output for SPARK_Pragma.
+ 	* einfo.ads: New attributes Is_Elaboration_Checks_OK_Id,
+ 	Is_Initial_Condition_Procedure, Protected_Subprogram, Receiving_Entry.
+ 	Remove attribute Suppress_Elaboration_Warnings.  Update the stricture
+ 	of various entities.
+ 	(Is_Elaboration_Checks_OK_Id): New routine along with pragma Inline.
+ 	(Is_Initial_Condition_Procedure): New routine along with pragma Inline.
+ 	(Protected_Subprogram): New routine along with pragma Inline.
+ 	(Receiving_Entry): New routine along with pragma Inline.
+ 	(Suppress_Elaboration_Warnings): Removed.
+ 	(Set_Is_Elaboration_Checks_OK_Id): New routine along with pragma
+ 	Inline.
+ 	(Set_Is_Initial_Condition_Procedure): New routine along with pragma
+ 	Inline.
+ 	(Set_Protected_Subprogram): New routine along with pragma Inline.
+ 	(Set_Receiving_Entry): New routine along with pragma Inline.
+ 	(Set_Suppress_Elaboration_Warnings): Removed.
+ 	* exp_ch3.adb (Build_Init_Procedure): Use name _Finalizer to maintain
+ 	consistency with other finalizer generating subprograms.
+ 	(Default_Initialize_Object): Mark the block which wraps the call to
+ 	finalize as being part of initialization.
+ 	* exp_ch7.adb (Expand_N_Package_Declaration): Directly expand pragma
+ 	Initial_Condition.
+ 	(Expand_N_Package_Body): Directly expand pragma Initial_Condition.
+ 	(Next_Suitable_Statement): Update the comment on usage. Skip over call
+ 	markers generated by the ABE mechanism.
+ 	* exp_ch9.adb (Activation_Call_Loc): New routine.
+ 	(Add_Accept): Link the accept procedure to the original entry.
+ 	(Build_Protected_Sub_Specification): Link the protected or unprotected
+ 	version to the original subprogram.
+ 	(Build_Task_Activation_Call): Code cleanup. Use a source location which
+ 	is very close to the "begin" or "end" keywords when generating the
+ 	activation call.
+ 	* exp_prag.adb (Expand_Pragma_Initial_Condition): Reimplemented.
+ 	* exp_spark.adb (Expand_SPARK): Use Expand_SPARK_N_Loop_Statement to
+ 	process loops.
+ 	(Expand_SPARK_N_Loop_Statement): New routine.
+ 	(Expand_SPARK_N_Object_Declaration): Code cleanup. Partially insert the
+ 	call to the Default_Initial_Condition procedure.
+ 	(Expand_SPARK_Op_Ne): Renamed to Expand_SPARK_N_Op_Ne.
+ 	* exp_util.adb (Build_DIC_Procedure_Body): Capture the SPARK_Mode in
+ 	effect.
+ 	(Build_DIC_Procedure_Declaration): Capture the SPARK_Mode in effect.
+ 	(Insert_Actions): Add processing for N_Call_Marker.
+ 	(Kill_Dead_Code): Explicitly kill an elaboration scenario.
+ 	* exp_util.ads (Make_Invariant_Call): Update the comment on usage.
+ 	* frontend.adb: Initialize Sem_Elab. Process all saved top level
+ 	elaboration scenarios for ABE issues.
+ 	* gcc-interface/trans.c (gnat_to_gnu): Add processing for N_Call_Marker
+ 	nodes.
+ 	* lib.adb (Earlier_In_Extended_Unit): New variant.
+ 	* sem.adb (Analyze): Ignore N_Call_Marker nodes.
+ 	(Preanalysis_Active): New routine.
+ 	* sem.ads (Preanalysis_Active): New routine.
+ 	* sem_attr.adb (Analyze_Access_Attribute): Save certain
+ 	elaboration-related attributes. Save the scenario for ABE processing.
+ 	* sem_ch3.adb (Analyze_Object_Declaration): Save the SPARK mode in
+ 	effect. Save certain elaboration-related attributes.
+ 	* sem_ch5.adb (Analyze_Assignment): Save certain elaboration-related
+ 	attributes. Save the scenario for ABE processing.
+ 	* sem_ch6.adb (Analyze_Abstract_Subprogram_Declaration): Save the SPARK
+ 	mode in effect. Save certain elaboration-related attributes.
+ 	(Analyze_Subprogram_Body_Helper): Skip N_Call_Marker nodes when
+ 	locating the first real statement.
+ 	(Analyze_Subprogram_Declaration): Save the SPARK mode in effect. Save
+ 	certain elaboration-related attributes.
+ 	* sem_ch7.adb (Analyze_Package_Declaration): Do not suppress
+ 	elaboration warnings.
+ 	* sem_ch8.adb (Attribute_Renaming): Mark a subprogram body which was
+ 	generated for purposes of wrapping an attribute used as a generic
+ 	actual.
+ 	(Find_Direct_Name): Save certain elaboration-related attributes. Save
+ 	the scenario for ABE processing.
+ 	(Find_Expanded_Name): Save certain elaboration-related attributes. Save
+ 	the scenario for ABE processing.
+ 	* sem_ch9.adb (Analyze_Entry_Declaration): Save certain
+ 	elaboration-related attributes.
+ 	(Analyze_Requeue): Save certain elaboration-related attributes. Save
+ 	the scenario for ABE processing.
+ 	(Analyze_Single_Task_Declaration): Save certain elaboration-related
+ 	attributes.
+ 	(Analyze_Task_Type_Declaration): Save certain elaboration-related
+ 	attributes.
+ 	* sem_ch12.adb (Analyze_Generic_Package_Declaration): Save certain
+ 	elaboration-related attributes.
+ 	(Analyze_Generic_Subprogram_Declaration): Save the SPARK mode in
+ 	effect. Save certain elaboration-related attributes.
+ 	(Analyze_Package_Instantiation): Save certain elaboration-related
+ 	attributes.  Save the scenario for ABE processing. Create completing
+ 	bodies in case the instantiation results in a guaranteed ABE.
+ 	(Analyze_Subprogram_Instantiation): Save certain elaboration-related
+ 	attributes Save the scenario for ABE processing. Create a completing
+ 	body in case the instantiation results in a guaranteed ABE.
+ 	(Provide_Completing_Bodies): New routine.
+ 	* sem_elab.ads: Brand new implementation.
+ 	* sem_prag.adb (Analyze_Pragma, cases Elaborate, Elaborate_All,
+ 	Elaborate_Body): Do not suppress elaboration warnings.
+ 	* sem_res.adb (Make_Call_Into_Operator): Set the parent field of the
+ 	operator.
+ 	(Resolve_Call): Save certain elaboration-related attributes. Save the
+ 	scenario for ABE processing.
+ 	(Resolve_Entity_Name): Do not perform any ABE processing here.
+ 	(Resolve_Entry_Call): Inherit certain attributes from the original call.
+ 	* sem_util.adb (Begin_Keyword_Location): New routine.
+ 	(Defining_Entity): Update the parameter profile. Add processing for
+ 	concurrent subunits that are rewritten as null statements.
+ 	(End_Keyword_Location): New routine.
+ 	(Find_Enclosing_Scope): New routine.
+ 	(In_Instance_Visible_Part): Code cleanup.
+ 	(In_Subtree): Update the parameter profile. Add new version.
+ 	(Is_Preelaborable_Aggregate): New routine.
+ 	(Is_Preelaborable_Construct): New routine.
+ 	(Mark_Elaboration_Attributes): New routine.
+ 	(Scope_Within): Update the parameter profile.
+ 	(Scope_Within_Or_Same): Update the parameter profile.
+ 	* sem_util.ads (Begin_Keyword_Location): New routine.
+ 	(Defining_Entity): Update the parameter profile and the comment on
+ 	usage.
+ 	(End_Keyword_Location): New routine.
+ 	(Find_Enclosing_Scope): New routine.
+ 	(In_Instance_Visible_Part): Update the parameter profile.
+ 	(In_Subtree): Update the parameter profile. Add new version.
+ 	(Is_Preelaborable_Aggregate): New routine.
+ 	(Is_Preelaborable_Construct): New routine.
+ 	(Mark_Elaboration_Attributes): New routine.
+ 	(Scope_Within): Update the parameter profile and the comment on usage.
+ 	(Scope_Within_Or_Same): Update the parameter profile and the comment on
+ 	usage.
+ 	* sem_warn.adb (Check_Infinite_Loop_Warning): Use Has_Condition_Actions
+ 	to determine whether a loop has meaningful condition actions.
+ 	(Has_Condition_Actions): New routine.
+ 	* sinfo.adb (ABE_Is_Certain): Removed.
+ 	(Is_Declaration_Level_Node): New routine.
+ 	(Is_Dispatching_Call): New routine.
+ 	(Is_Elaboration_Checks_OK_Node): New routine.
+ 	(Is_Initialization_Block): New routine.
+ 	(Is_Known_Guaranteed_ABE): New routine.
+ 	(Is_Recorded_Scenario): New routine.
+ 	(Is_Source_Call): New routine.
+ 	(Is_SPARK_Mode_On_Node): New routine.
+ 	(No_Elaboration_Check): Removed.
+ 	(Target): New routine.
+ 	(Was_Attribute_Reference): New routine.
+ 	(Set_ABE_Is_Certain): Removed.
+ 	(Set_Is_Declaration_Level_Node): New routine.
+ 	(Set_Is_Dispatching_Call): New routine.
+ 	(Set_Is_Elaboration_Checks_OK_Node): New routine.
+ 	(Set_Is_Initialization_Block): New routine.
+ 	(Set_Is_Known_Guaranteed_ABE): New routine.
+ 	(Set_Is_Recorded_Scenario): New routine.
+ 	(Set_Is_Source_Call): New routine.
+ 	(Set_Is_SPARK_Mode_On_Node): New routine.
+ 	(Set_No_Elaboration_Check): Removed.
+ 	(Set_Target): New routine.
+ 	(Set_Was_Attribute_Reference): New routine.
+ 	* sinfo.ads: Remove attribute ABE_Is_Certain.  Attribute
+ 	Do_Discriminant_Check now utilizes Flag3.  Attribute
+ 	No_Side_Effect_Removal now utilizes Flag17.  Add new node
+ 	N_Call_Marker.  Update the structure of various nodes.
+ 	(ABE_Is_Certain): Removed along with pragma Inline.
+ 	(Is_Declaration_Level_Node): New routine along with pragma Inline.
+ 	(Is_Dispatching_Call): New routine along with pragma Inline.
+ 	(Is_Elaboration_Checks_OK_Node): New routine along with pragma Inline.
+ 	(Is_Initialization_Block): New routine along with pragma Inline.
+ 	(Is_Known_Guaranteed_ABE): New routine along with pragma Inline.
+ 	(Is_Recorded_Scenario): New routine along with pragma Inline.
+ 	(Is_Source_Call): New routine along with pragma Inline.
+ 	(Is_SPARK_Mode_On_Node): New routine along with pragma Inline.
+ 	(No_Elaboration_Check): Removed along with pragma Inline.
+ 	(Target): New routine along with pragma Inline.
+ 	(Was_Attribute_Reference): New routine along with pragma Inline.
+ 	(Set_ABE_Is_Certain): Removed along with pragma Inline.
+ 	(Set_Is_Declaration_Level_Node): New routine along with pragma Inline.
+ 	(Set_Is_Dispatching_Call): New routine along with pragma Inline.
+ 	(Set_Is_Elaboration_Checks_OK_Node): New routine along with pragma
+ 	Inline.
+ 	(Set_Is_Initialization_Block): New routine along with pragma Inline.
+ 	(Set_Is_Known_Guaranteed_ABE): New routine along with pragma Inline.
+ 	(Set_Is_Recorded_Scenario): New routine along with pragma Inline.
+ 	(Set_Is_Source_Call): New routine along with pragma Inline.
+ 	(Set_Is_SPARK_Mode_On_Node): New routine along with pragma Inline.
+ 	(Set_No_Elaboration_Check): Removed along with pragma Inline.
+ 	(Set_Target): New routine along with pragma Inline.
+ 	(Set_Was_Attribute_Reference): New routine along with pragma Inline.
+ 	* sprint.adb (Sprint_Node_Actual): Add an entry for N_Call_Marker.
+ 
+ 2017-10-09  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_ch7.adb (Create_Finalizer): Suppress checks within the finalizer.
+ 
+ 2017-10-09  Bob Duff  <duff@adacore.com>
+ 
+ 	* freeze.ads: Minor comment fixed.
+ 
+ 2017-10-09  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_ch6.adb: (Make_Build_In_Place_Call_In_Object_Declaration): Take
+ 	care of unchecked conversions in addition to regular conversions. This
+ 	takes care of a case where a type is derived from a private untagged
+ 	type that is completed by a tagged controlled type.
+ 
+ 2017-10-09  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_disp.adb (Build_Class_Wide_Check, Replace_Formals): When
+ 	rewriting a class-wide condition, handle properly the case where the
+ 	controlling argument of the operation to which the condition applies is
+ 	an access to a tagged type, and the condition includes a dispatching
+ 	call with an implicit dereference.
+ 
+ 2017-10-09  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_ch6.adb: (Make_Build_In_Place_Call_In_Object_Declaration): Remove
+ 	the code at the end of this procedure that was setting the type of a
+ 	class-wide object to the specific type returned by a function call.
+ 	Treat this case as indefinite instead.
+ 
+ 2017-10-09  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch4.adb (Try_Class_Wide_Operation, Traverse_Homonyms):
+ 	Suppress spurious ambiguity error when two traversals of the homonym
+ 	chain (first directly, and then through an examination of relevant
+ 	interfaces) retrieve the same operation, when other irrelevant homonyms
+ 	of the operatioh are also present.
+ 
+ 2017-10-09  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_util.adb (Object_Access_Level): If the object is the return
+ 	statement of an expression function, return the level of the function.
+ 	This is relevant when the object involves an implicit conversion
+ 	between access types and the expression function is a completion, which
+ 	forces the analysis of the expression before rewriting it as a body, so
+ 	that freeze nodes can appear in the proper scope.
+ 
+ 2017-10-09  Bob Duff  <duff@adacore.com>
+ 
+ 	* atree.adb: Make nnd apply to everything "interesting", including
+ 	Rewrite.  Remove rrd.
+ 
+ 2017-10-09  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_ch3.adb (Expand_N_Object_Declaration): Avoid never-ending loop
+ 	processing the declaration of the dummy object internally created by
+ 	Make_DT to compute the offset to the top of components referencing
+ 	secondary dispatch tables.
+ 	(Initialize_Tag): Do not initialize the offset-to-top field if it has
+ 	been initialized initialized.
+ 	* exp_disp.ads (Building_Static_Secondary_DT): New subprogram.
+ 	* exp_disp.adb (Building_Static_Secondary_DT): New subprogram.
+ 	(Make_DT): Create a dummy constant object if we can statically build
+ 	secondary dispatch tables.
+ 	(Make_Secondary_DT): For statically allocated secondary dispatch tables
+ 	use the dummy object to compute the offset-to-top field value by means
+ 	of the attribute 'Position.
+ 
+ 2017-10-09  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_ch6.adb (Expand_N_Extended_Return_Statement): Add self-checking
+ 	code so if BIPAlloc is not passed in, it will likely raise
+ 	Program_Error instead of cause miscellaneous chaos.
+ 	(Is_Build_In_Place_Result_Type): Return False if not Expander_Active,
+ 	as for the other Is_B-I-P... functions.
+ 	* sem_aggr.adb (Resolve_Extension_Aggregate): For an extension
+ 	aggregate whose ancestor part is a build-in-place call returning a
+ 	nonlimited type, transform the assignment to the ancestor part to use a
+ 	temp.
+ 	* sem_ch3.adb (Build_Itype_Reference): Handle the case where we're
+ 	creating an Itype for a library unit entity.
+ 	(Check_Initialization): Avoid spurious error message on
+ 	internally-generated call.
+ 	* sem_ch5.adb (Analyze_Assignment): Handle the case where the
+ 	right-hand side is a build-in-place call. This didn't happen when b-i-p
+ 	was only for limited types.
+ 	* sem_ch6.adb (Create_Extra_Formals): Remove assumption that b-i-p
+ 	implies >= Ada 2005.
+ 	* sem_ch7.adb (Scan_Subprogram_Refs): Avoid traversing the same nodes
+ 	repeatedly.
+ 	* sem_util.adb (Next_Actual): Handle case of build-in-place call.
+ 
+ 2017-10-09  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* doc/gnat_ugn/gnat_and_program_execution.rst: Minor edit.
+ 
+ 2017-10-09  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* libgnarl/s-taprob.adb: Minor whitespace fix.
+ 
+ 2017-10-09  Bob Duff  <duff@adacore.com>
+ 
+ 	* namet.ads: Minor comment fix.
+ 
+ 2017-10-09  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_aux.adb (Unit_Declaration_Node): Detect protected declarations,
+ 	just like other program units listed in Ada RM 10.1(1).
+ 
+ 2017-10-09  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_ch8.adb (Update_Chain_In_Scope): Modify warning messages.
+ 
+ 2017-10-09  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch12.adb (Analyze_Associations, Check_Generic_Parent): If an
+ 	actual for a formal package is an instantiation of a child unit, create
+ 	a freeze node for the instance of the parent if it appears in the same
+ 	scope and is not frozen yet.
+ 
+ 2017-10-09  Pierre-Marie de Rodat  <derodat@adacore.com>
+ 
+ 	* exp_atag.ads, libgnat/a-tags.adb, libgnat/a-tags.ads: Enhance
+ 	in-source documentation for tagged types's Offset_To_Top.
+ 
+ 2017-10-09  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_ch3.adb (Build_Assignment): Parameter name N was somewhat
+ 	confusing.  Same for N_Loc.  Remove assumption that b-i-p implies
+ 	limited.  This is for the case of a function call that occurs as the
+ 	default for a record component.
+ 	(Expand_N_Object_Declaration): Deal with the case where expansion has
+ 	created an object declaration initialized with something like
+ 	F(...)'Reference.
+ 	* exp_ch3.adb: Minor reformatting.
+ 
+ 2017-10-09  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_attr.adb (Expand_Attribute_Reference, case 'Valid): The prefix of
+ 	the attribute is an object, but it may appear within a conversion. The
+ 	object itself must be retrieved when generating the range test that
+ 	implements the validity check on a scalar type.
+ 
+ 2017-10-05  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/82393
+ 	* mingw32.h (_O_U8TEXT, _O_U16TEXT, _O_WTEXT): Delete.
+ 	* sysdep.c (__gnat_set_mode ): Use DJGPP version for Cygwin.
+ 
+ 2017-10-02  Eric Botcazou  <ebotcazou@adacore.com>
+             Pierre-Marie de Rodat  <derodat@adacore.com>
+ 
+ 	PR ada/82384
+ 	* libgnarl/s-linux__x32.ads (suseconds_t): New subtype.
+ 	(time_t): Change from derived type to subtype.
+ 	(timeval): Use suseconds_t for tv_usec.
+ 	* libgnarl/s-osinte__x32.adb (To_Timespec): Remove use type clause.
+ 
+ 2017-10-02  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* gcc-interface/decl.c (annotate_value): Use wi::to_widest when
+ 	handling the form (plus/mult (convert @0) @1).
+ 
+ 2017-09-29  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_ch6.adb (Expand_Call_Helper): Replace with code more similar to
+ 	what we had before.
+ 	(Make_Build_In_Place_Call_In_Object_Declaration): Back out previous
+ 	change. Set the Etype in the class-wide case. This fixes a regression
+ 	in the libadalang test suite.
+ 
+ 2017-09-29  Joel Brobecker  <brobecker@adacore.com>
+ 
+ 	* doc/gnat_ugn/building_executable_programs_with_gnat.rst,
+ 	doc/gnat_ugn/the_gnat_compilation_model.rst: Avoid use of single colon
+ 	in comment markup.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2017-09-29  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* ali-util.adb, comperr.adb, cprint.adb, errout.adb, fmap.adb,
+ 	fname-sf.adb, frontend.adb, lib-xref-spark_specific.adb, gnat1drv.adb,
+ 	gnatls.adb, lib.adb, lib-load.adb, lib-writ.adb, prepcomp.adb,
+ 	sinput-d.adb, sinput-l.adb, sprint.adb, targparm.adb: Update comparison
+ 	for checking source file status and error message and/or call to
+ 	Read_Source_File.
+ 	* libgnat/s-os_lib.ads: Add new potential value constant for
+ 	uninitialized file descriptors.
+ 	* osint.adb, osint.ads (Read_Source_File): Add extra parameter to
+ 	return result of IO to encompass a read access failure in addition to a
+ 	file-not-found error.
+ 
+ 2017-09-29  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_ch6.adb (Expand_Call_Helper): Handle case of build-in-place
+ 	functions returning nonlimited types. Allow for qualified expressions
+ 	and type conversions.
+ 	(Expand_N_Extended_Return_Statement): Correct the computation of
+ 	Func_Bod to allow for child units.
+ 	(Expand_Simple_Function_Return): Remove assumption that b-i-p implies
+ 	limited (initialization of In_Place_Expansion), and implies >= Ada
+ 	2005.
+ 	(Is_Build_In_Place_Result_Type): New function to accompany
+ 	Is_Build_In_Place_Function and Is_Build_In_Place_Function_Call, because
+ 	sometimes we just have the type on our hands, not the function.  For
+ 	now, does the same thing as the old version, so build-in-place is
+ 	disabled for nonlimited types, except that you can use -gnatd.9 to
+ 	enable it.
+ 	* exp_ch6.ads (Is_Build_In_Place_Result_Type): New function to
+ 	accompany Is_Build_In_Place_Function and
+ 	Is_Build_In_Place_Function_Call, because sometimes we just have the
+ 	type on our hands, not the function.
+ 	(Make_Build_In_Place_Call_In_...): Handle nonlimited build-in-place
+ 	cases.
+ 	(Make_Build_In_Place_Call_In_Object_Declaration): Remove the
+ 	questionable code at the end that was setting the Etype.
+ 	* exp_aggr.adb (Is_Build_In_Place_Aggregate_Return): New function to
+ 	determine whether "return (...agg...);" is returning from a
+ 	build-in-place function.
+ 	(Initialize_Ctrl_Array_Component, Initialize_Ctrl_Record_Component):
+ 	Remove assumption that b-i-p implies limited (initialization of
+ 	In_Place_Expansion).
+ 	(Build_Record_Aggr_Code): AI-287: fix comment; it can't be wrapped in
+ 	an unchecked conversion.  Add assertions.
+ 	(Convert_Aggr_In_Object_Decl): Establish_Transient_Scope -- no need for
+ 	secondary stack here, just because the type needs finalization.  That
+ 	code is obsolete.
+ 	(Convert_To_Assignments): Only set Unc_Decl if Nkind (N) = N_Aggregate.
+ 	For "return (...agg...);" don't assume b-i-p implies limited.
+ 	Needs_Finalization does not imply secondary stack.
+ 	(Expand_Array_Aggregate): Named notation.  Reverse the sense of
+ 	Component_OK_For_Backend -- more readability with fewer double
+ 	negatives.
+ 	* exp_attr.adb (Expand_N_Attribute_Reference): Remove assumptions that
+ 	b-i-p implies >= Ada 2005.
+ 	* exp_ch3.adb (Expand_N_Object_Declaration): Remove assumptions that
+ 	b-i-p implies >= Ada 2005.  Remove Adjust if we're building the return
+ 	object of an extended return statement in place.
+ 	* exp_ch4.adb (Expand_Allocator_Expression, Expand_N_Indexed_Component,
+ 	Expand_N_Selected_Component, Expand_N_Slice): Remove assumptions that
+ 	b-i-p implies >= Ada 2005.
+ 	* exp_ch5.adb (Expand_N_Assignment_Statement): Remove assumption that
+ 	b-i-p implies >= Ada 2005.
+ 	* exp_ch7.adb: Comment fix.
+ 	* exp_ch8.adb (Expand_N_Object_Renaming_Declaration): Remove
+ 	assumptions that b-i-p implies >= Ada 2005.
+ 	* exp_disp.adb (Expand_Interface_Actuals): Remove assumptions that
+ 	b-i-p implies >= Ada 2005.
+ 	* exp_util.adb (Build_Allocate_Deallocate_Proc): Look at Storage_Pool
+ 	(Expr), in case Pool_Id is not set.
+ 	(Initialized_By_Aliased_BIP_Func_Call): Handle case where the call is
+ 	qualified or converted.
+ 	(Is_Secondary_Stack_BIP_Func_Call): Don't check if Nkind (Selector_Name
+ 	(Param)) = N_Identifier; that's all it could be.
+ 	* sinfo.ads: Comment fixes.
+ 	* snames.ads-tmpl: Comment fixes.
+ 	* debug.adb: Add flag gnatd.9, to enable the build-in-place machinery.
+ 
+ 2017-09-29  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_ch8.adb (Mark_Use_Clauses): Add recursive call to properly handle
+ 	all cases related to marking entity identifiers.
+ 
+ 2017-09-29  Vasiliy Fofanov  <fofanov@adacore.com>
+ 
+ 	* adaint.c (win32_wait): Properly handle error and take into account
+ 	the WIN32 limitation on the number of simultaneous wait objects.
+ 
+ 2017-09-29  Vasiliy Fofanov  <fofanov@adacore.com>
+ 
+ 	* cal.c: Minor proofreading.
+ 
+ 2017-09-29  Vasiliy Fofanov  <fofanov@adacore.com>
+ 
+ 	* doc/gnat_ugn/gnat_utility_programs.rst: Minor formatting fix.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2017-09-29  Bob Duff  <duff@adacore.com>
+ 
+ 	* lib-xref.ads: Comment fix.
+ 
+ 2017-09-29  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_aggr.adb: Remove calls to Set_No_Ctrl_Actions for discriminants.
+ 	Discriminants can't need finalization.
+ 
+ 2017-09-29  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch6.adb (Analyze_Expression_Function): Do not emit freeze nodes
+ 	for types in expression if the function is within a generic unit.
+ 	* sem_res.adb (Resolve): In a generic context do not freeze an
+ 	expression, unless it is an entity. This exception is solely for the
+ 	purpose of detecting illegal uses of deferred constants in generic
+ 	units.
+ 	* sem_res.adb: Minor reformatting.
+ 
+ 2017-09-29  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_ch8.adb (Note_Redundant_Use): Add guard to protect against false
+ 	redundant warnings.
+ 
+ 2017-09-29  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sinput-c.adb: Remove unused with-clause on Ada.Unchecked_Conversion.
+ 
+ 2017-09-29  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* doc/gnat_rm/representation_clauses_and_pragmas.rst: Minor rewording.
+ 	* doc/gnat_rm/implementation_defined_pragmas.rst (Optimize_Alignment):
+ 	Document the effect of pragma Optimize_Alignment (Space) on non-packed
+ 	record types.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2017-09-25  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* aspects.adb, bindgen.adb, clean.adb, erroutc.adb, exp_ch13.adb,
+ 	exp_dbug.adb, exp_unst.adb, exp_util.adb, frontend.adb, gnat1drv.adb,
+ 	gnatdll.adb, gnatlink.adb, gnatls.adb, gnatname.adb, gnatxref.adb,
+ 	gnatfind.adb, libgnat/a-cfhama.ads, libgnat/a-exetim__mingw.adb,
+ 	libgnat/a-strmap.adb, libgnat/a-teioed.adb, libgnat/g-alvety.ads,
+ 	libgnat/g-expect.adb, libgnat/g-regist.adb, libgnat/g-socket.adb,
+ 	libgnat/g-socthi__mingw.ads, libgnat/s-stausa.adb,
+ 	libgnat/s-tsmona__linux.adb, libgnat/s-tsmona__mingw.adb,
+ 	libgnarl/s-taenca.adb, libgnarl/s-tassta.adb, libgnarl/s-tarest.adb,
+ 	libgnarl/s-tpobop.adb, make.adb, makeusg.adb, namet.adb, output.ads,
+ 	put_scos.adb, repinfo.adb, rtsfind.adb, scn.ads, sem_attr.adb,
+ 	sem_aux.ads, sem_warn.ads, targparm.adb, xr_tabls.adb, xref_lib.adb:
+ 	Removal of ineffective use-clauses.
+ 	* exp_ch9.adb (Is_Simple_Barrier_Name): Check for false positives with
+ 	constant folded barriers.
+ 	* ghost.adb, sprint.adb, sem_ch10.adb, sem_warn.adb: Change access to
+ 	Subtype_Marks and Names list in use-clause nodes to their new singular
+ 	counterparts (e.g. Subtype_Mark, Name).
+ 	* par.adb, par-ch8.adb (Append_Use_Clause): Created to set
+ 	Prev_Ids and More_Ids in use-clause nodes.
+ 	(P_Use_Clause): Modify to take a list as a parameter.
+ 	(P_Use_Package_Clause, P_Use_Type_Clause): Divide names and
+ 	subtype_marks within an aggregate use-clauses into individual clauses.
+ 	* par-ch3.adb, par-ch10.adb, par-ch12.adb: Trivally modify call to
+ 	P_Use_Clause to match its new behavior.
+ 	* sem.adb (Analyze): Mark use clauses for non-overloaded entities.
+ 	* sem_ch4.adb (Try_One_Interp): Add sanity check to handle previous
+ 	errors.
+ 	* sem_ch6.adb (Analyze_Generic_Subprogram_Body,
+ 	Analyze_Subprogram_Body_Helper): Update use clause chain at the end of
+ 	the declarative region.
+ 	* sem_ch7.adb (Analyze_Package_Body_Helper): Update use clause chain
+ 	after analysis (Analyze_Package_Specification): Update use clause chain
+ 	when there is no body.
+ 	* sem_ch8.ads, sem_ch8.adb (Analyze_Use_Package, Analyze_Use_Type): Add
+ 	parameter to determine weither the installation of scopes should also
+ 	propagate on the use-clause "chain".
+ 	(Mark_Use_Clauses): Created to traverse use-clause chains and determine
+ 	what constitutes a valid "use" of a clause.
+ 	(Update_Use_Clause_Chain): Created to aggregate common machinary used
+ 	to clean up use-clause chains (and warn on ineffectiveness) at the end
+ 	of declaritive regions.
+ 	* sem_ch8.adb (Analyze_Package_Name): Created to perform analysis on a
+ 	package name from a use-package clause.
+ 	(Analyze_Package_Name_List): Created to perform analysis on a list of
+ 	package names (similar to Analyze_Package_Name).
+ 	(Find_Most_Prev): Created to traverse to the beginning of a given
+ 	use-clause chain.
+ 	(Most_Decendant_Use_Clause): Create to identify which clause from a
+ 	given set is highest in scope (not always the most prev).
+ 	(Use_One_Package, Use_One_Type): Major cleanup and reorganization to
+ 	handle the new chaining algorithm, also many changes related to
+ 	redundant clauses. A new parameter has also been added to force
+ 	installation to handle certain cases.
+ 	* sem_ch9.adb (Analyze_Entry_Body, Analyze_Protected_Body,
+ 	Analyze_Task_Body): Mark use clauses on relevant entities.
+ 	* sem_ch10.adb, sem_ch10.ads (Install_Context_Clauses,
+ 	Install_Parents): Add parameter to determine weither the installation
+ 	of scopes should also propagate on the use-clause "chain".
+ 	* sem_ch12.adb (Inline_Instance_Body): Add flag in call to
+ 	Install_Context to avoid redundant chaining of use-clauses.
+ 	* sem_ch13.adb: Minor reformatting.
+ 	* sem_res.adb (Resolve): Mark use clauses on operators.
+ 	(Resolve_Call, Resolve_Entity_Name): Mark use clauses on relevant
+ 	entities.
+ 	* sinfo.adb, sinfo.ads (Is_Effective_Use_Clause,
+ 	Set_Is_Effective_Use_Clause): Add new flag to N_Use_Clause nodes to
+ 	represent any given clause's usage/reference/necessity.
+ 	(Prev_Use_Clause, Set_Prev_Use_Clause): Add new field to N_Use_Clause
+ 	nodes to allow loose chaining of redundant clauses.
+ 	(Set_Used_Operations, Set_Subtype_Mark, Set_Prev_Ids, Set_Names,
+ 	Set_More_Ids, Set_Name): Modify set procedure calls to reflect
+ 	reorganization in node fields.
+ 	* types.ads (Source_File_Index): Adjust index bounds.
+ 	(No_Access_To_Source_File): New constant.
+ 
+ 2017-09-25  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch13.adb (Analyze_One_Aspect): In ASIS mode make a full copy of
+ 	the expression to be used in the generated attribute specification
+ 	(rather than relocating it) to avoid resolving a potentially malformed
+ 	tree when the expression is resolved through an ASIS-specific call to
+ 	Resolve_Aspect_Expressions.  This manifests itself as a crash on a
+ 	function with parameter associations.
+ 
+ 2017-09-25  Yannick Moy  <moy@adacore.com>
+ 
+ 	* exp_spark.adb (Expand_SPARK_Indexed_Component,
+ 	Expand_SPARK_Selected_Component): New procedures to insert explicit
+ 	dereference if required.
+ 	(Expand_SPARK): Call the new procedures.
+ 
+ 2017-09-25  Patrick Bernardi  <bernardi@adacore.com>
+ 
+ 	* libgnat/a-stwiun.adb, libgnat/s-stchop__vxworks.adb,
+ 	libgnat/g-socthi__vxworks.ads, libgnat/a-stzunb.adb,
+ 	libgnat/a-strunb.adb, libgnarl/s-osinte__lynxos178.adb,
+ 	libgnarl/s-intman__vxworks.adb, libgnarl/s-osinte__darwin.adb,
+ 	libgnarl/a-exetim__darwin.adb: Removed ineffective use-clauses.
+ 
+ 2017-09-25  Vasiliy Fofanov  <fofanov@adacore.com>
+ 
+ 	* adaint.c (win32_wait): Properly handle error and take into account
+ 	the WIN32 limitation on the number of simultaneous wait objects.
+ 
+ 2017-09-25  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_ch3.adb (Constant_Redeclaration): Do not insert a call to the
+ 	invariant procedure in GNATprove mode.
+ 	* sem_ch5.adb (Analyze_Assignment): Likewise.
+ 
+ 2017-09-25  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* adabkend.adb (Call_Back_End): Fix wording of "front-end" and
+ 	"back-end" in comments.
+ 
+ 2017-09-25  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_ch6.adb (Expand_Call_Helper): The extra accessibility check in a
+ 	call that appears in a classwide precondition and that mentions an
+ 	access formal of the subprogram, must use the accessibility level of
+ 	the actual in the call. This is one case in which a reference to a
+ 	formal parameter appears outside of the body of the subprogram.
+ 
+ 2017-09-25  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_res.adb (Replace_Actual_Discriminants): Replace a discriminant
+ 	for GNATprove.
+ 	(Resolve_Entry): Clean up predicate
+ 
+ 2017-09-25  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Constituent): Raise Unrecoverable_Error rather
+ 	than Program_Error because U_E is more in line with respect to the
+ 	intended behavior.
+ 
+ 2017-09-25  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch13.adb (Resolve_Aspect_Expressions): The expression for aspect
+ 	Storage_Size does not freeze, and thus can include references to
+ 	deferred constants.
+ 
+ 2017-09-25  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* exp_spark.adb (Expand_SPARK_Potential_Renaming): Do not process a
+ 	reference when it appears within a pragma of no significance to SPARK.
+ 	(In_Insignificant_Pragma): New routine.
+ 	* sem_prag.ads: Add new table Pragma_Significant_In_SPARK.
+ 
+ 2017-09-25  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch12.adb (Analyze_Associations, case N_Formal_Package): If the
+ 	actual is a renaming, indicate that it is the renamed package that must
+ 	be frozen before the instantiation.
+ 
+ 2017-09-25  Yannick Moy  <moy@adacore.com>
+ 
+ 	* doc/gnat_ugn/gnat_and_program_execution.rst: Fix typo in description
+ 	of dimensionality system in GNAT UG.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2017-09-25  Yannick Moy  <moy@adacore.com>
+ 
+ 	* gnat1drv.adb: Call Check_Safe_Pointers from the frontend in
+ 	GNATprove_Mode when switch -gnatdF used.
+ 
+ 2017-09-25  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* adabkend.adb (Call_Back_End): Reset Current_Error_Node when starting
+ 	the backend.
+ 
+ 2017-09-25  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_imgv.adb (Expand_Image_Attribute): Disable the optimized
+ 	expansion of user-defined enumeration types when the generation of
+ 	names for enumeration literals is suppressed.
+ 
+ 2017-09-25  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* libgnarl/s-taprop__linux.adb: Minor reformatting.
+ 
+ 2017-09-25  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch13.adb (Resolve_Aspect_Expressions): Do not resolve identifiers
+ 	that appear as selector names of parameter associations, as these are
+ 	never resolved by visibility.
+ 
+ 2017-09-25  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Entry): Generate reference for index entities.
+ 
+ 2017-09-25  Doug Rupp  <rupp@adacore.com>
+ 
+ 	* libgnarl/s-taprop__linux.adb (Compute_Base_Monotonic_Clock): Refine.
+ 
+ 2017-09-25  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_imgv.adb (Is_User_Defined_Enumeration_Type): New subprogram.
+ 	(Expand_User_Defined_Enumeration_Image): New subprogram.
+ 	(Expand_Image_Attribute): Enable speed-optimized expansion of
+ 	user-defined enumeration types when we are compiling with optimizations
+ 	enabled.
+ 
+ 2017-09-25  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_util.adb (Has_Null_Abstract_State): Remove, as an exactly same
+ 	routine is already provided by Einfo.
+ 	* einfo.adb (Has_Null_Abstract_State): Replace with the body from
+ 	Sem_Util, which had better comments and avoided double calls to
+ 	Abstract_State.
+ 
+ 2017-09-25  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_ch3.adb: Rename Comp_Type_Simple to be Comp_Simple_Init.
+ 
+ 2017-09-25  Doug Rupp  <rupp@adacore.com>
+ 
+ 	* libgnarl/s-taprop__linux.adb (Base_Monotonic_Clock): New variable.
+ 	(Compute_Base_Monotonic_Clock): New function.
+ 	(Timed_Sleep): Adjust to use Base_Monotonic_Clock.
+ 	(Timed_Delay): Likewise.
+ 	(Monotonic_Clock): Likewise.
+ 	* s-oscons-tmplt.c (CLOCK_MONOTONIC): Use on Linux.
+ 
+ 2017-09-25  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch12.adb (Save_References_In_Aggregate): Small correction to
+ 	previous change.
+ 
+ 2017-09-25  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* exp_ch5.adb, sem_ch4.adb, sem_ch13.adb, sem_attr.adb, exp_ch3.adb:
+ 	Minor reformatting.
+ 
+ 2017-09-20  Alexandre Oliva <aoliva@redhat.com>
+ 
+ 	* gcc-interface/lang.opt (gant, gnatO, gnat): Add RejectNegative.
+ 
+ 2017-09-18  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_ch4.adb (Complete_Object_Operation): Do not insert 'Access for
+ 	reference types in the access-to-access case.
+ 
+ 2017-09-18  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_attr.adb (Analyze_Access_Attribute): Move check for the presence
+ 	of the "aliased" keyword on the prefix from here to...
+ 	(Resolve_Attribute) <Attribute_Access>: ...here.  Remove useless call
+ 	to Check_No_Implicit_Aliasing.
+ 	* sinfo.ads (Non_Aliased_Prefix): Delete.
+ 	(Set_Non_Aliased_Prefix): Likewise.
+ 	* sinfo.adb (Non_Aliased_Prefix): Delete.
+ 	(Set_Non_Aliased_Prefix): Likewise.
+ 
+ 2017-09-18  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_ch5.adb (Build_Formal_Container_Iteration,
+ 	Expand_Formal_Container_Element_Loop): Convert the container to the
+ 	root type before passing it to the iteration operations, so it will be
+ 	of the right type.
+ 
+ 2017-09-18  Bob Duff  <duff@adacore.com>
+ 
+ 	* einfo.ads, validsw.ads, treepr.ads, sem_util.ads: Comment fixes.
+ 
+ 2017-09-18  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_ch3.adb (Build_Array_Init_Proc): If validity checking is enabled,
+ 	and it's a bit-packed array, pass False to the Consider_IS parameter of
+ 	Needs_Simple_Initialization.
+ 
+ 2017-09-18  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_ch6.adb (Check_Inline_Pragma): Link the newly generated spec to
+ 	the preexisting body.
+ 	* sem_prag.adb (Check_Inline_Always_Placement): New routine.
+ 	(Process_Inline): Verify the placement of pragma Inline_Always. The
+ 	pragma must now appear on the initial declaration of the related
+ 	subprogram.
+ 
+ 2017-09-18  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch3.adb (Analyze_Declarations): In ASIS mode,  At the end of the
+ 	declarative list in a subprogram body, analyze aspext specifications to
+ 	provide basic semantic information, because otherwise the aspect
+ 	specifications might only be snalyzed during expansion, when related
+ 	subprograms are generated.
+ 
+ 2017-09-18  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_ch9.adb (Is_Simple_Barrier_Name): Follow Original_Node, in case
+ 	validity checks have rewritten the tree.
+ 
+ 2017-09-18  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_util.adb: Comment fixes, and remove redundant Is_Itype check.
+ 
+ 2017-09-18  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch12.adb (Save_References_In_Aggregate): When constructing a
+ 	qualified exxpression for an aggregate in a generic unit, verify that
+ 	the scope of the type is itself visible and not hidden, so that the
+ 	qualified expression is correctly resolved in any instance.
+ 
+ 2017-09-18  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_ch4.adb (Analyze_Qualified_Expression): Give an error if the type
+ 	mark refers to the current instance. Set the type to Any_Type in that
+ 	case, to avoid later crashes.
+ 
+ 2017-09-18  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_ch3.adb (Replace_Discriminant_References): New procedure,
+ 	subsidiary of Build_Assignment, used to handle the initialization code
+ 	for a mutable record component whose default value is an aggregate that
+ 	sets the values of the discriminants of the components.
+ 
+ 2017-09-18  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch13.adb (Analyze_Attribute_Definition_Clause) <Address>: Mark
+ 	the entity as being volatile for an overlay that toggles the scalar
+ 	storage order.
+ 
+ 2017-09-18  Fedor Rybin  <frybin@adacore.com>
+ 
+ 	* doc/gnat_ugn/gnat_utility_programs.rst: Document that gnattest
+ 	options -U main and --harness-only are not compatible.
+ 
+ 2017-09-18  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* freeze.adb, sem_ch6.adb, sem_res.adb: Minor reformatting.
+ 
+ 2017-09-18  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* einfo.ads (Is_Imported): Update comment, as this
+ 	routine also applies to constants.
+ 
+ 2017-09-18  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_util.adb (Find_Placement_In_State_Space): Allow generic package
+ 	holding state.
+ 
+ 2017-09-18  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_prag.adb (Is_Non_Significant_Pragma_Reference): Change the
+ 	constant indication for Pragma_Linker_Section.
+ 
+ 2017-09-18  Bob Duff  <duff@adacore.com>
+ 
+ 	Alternate fix for PR ada/71358
+ 	* libgnat/g-comlin.adb (Getopt): Remove manual null access checks.
+ 	Instead, make a local copy of Config, and if it's null, allocate an
+ 	empty Command_Line_Configuration_Record, so we won't crash on null
+ 	pointer dereference.
+ 
+ 2017-09-16  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* libgnarl/a-intnam__rtems.ads: Update copyright date.
+ 	* libgnarl/s-interr__hwint.adb: Likewise.
+ 	* libgnarl/s-osinte__kfreebsd-gnu.ads: Likewise.
+ 	* libgnarl/s-osinte__rtems.adb: Likewise.
+ 	* libgnarl/s-osinte__rtems.ads: Likewise.
+ 
+ 2017-09-13  Nicolas Roche  <roche@adacore.com>
+ 
+ 	* Make-lang.in: In the fallback mechanim, parse the associated .ali
+ 	file and try to guess the locations of dependencies.
+ 
+ 2017-09-13  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch13.adb (Register_Address_Clause_Check): New procedure to save
+ 	the suppression status of Alignment_Check on the current scope.
+ 	(Alignment_Checks_Suppressed): New function to use the saved instead of
+ 	the current suppression status of Alignment_Check.
+ 	(Address_Clause_Check_Record): Add Alignment_Checks_Suppressed field.
+ 	(Analyze_Attribute_Definition_Clause): Instead of manually appending to
+ 	the table, call Register_Address_Clause_Check.
+ 	(Validate_Address_Clauses): Call Alignment_Checks_Suppressed on the
+ 	recorded address clause instead of its entity.
+ 
+ 2017-09-13  Jerome Guitton  <guitton@adacore.com>
+ 
+ 	* libgnarl/s-tpopsp__vxworks-tls.adb,
+ 	libgnarl/s-tpopsp__vxworks-rtp.adb, libgnarl/s-tpopsp__vxworks.adb
+ 	(Self): Register thread if task id is null.
+ 
+ 2017-09-13  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* libgnat/s-htable.adb, libgnat/s-htable.ads: Minor style tuning.
+ 
+ 2017-09-13  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* lib-xref-spark_specific.adb (Scopes): simplify hash map; now it maps
+ 	from an entity to only scope index, as a mapping from an entity to the
+ 	same entity was useless.
+ 	(Get_Scope_Num): refactor as a simple renaming; rename parameter from N
+ 	to E.
+ 	(Set_Scope_Num): refactor as a simple renaming; rename parameter from N
+ 	to E.
+ 	(Is_Constant_Object_Without_Variable_Input): remove local "Result"
+ 	variable, just use return statements.
+ 
+ 2017-09-13  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* libgnarl/s-vxwext__kernel-smp.adb,
+ 	libgnarl/s-tpopsp__vxworks-rtp.adb, libgnarl/s-vxwext__noints.adb:
+ 	New file.
+ 
+ 2017-09-13  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* einfo.adb: Flag42 is now Is_Controlled_Active.
+ 	(Is_Controlled): This attribute is now synthesized.
+ 	(Is_Controlled_Active): This attribute is now an explicit flag rather
+ 	than a synthesized attribute.	(Set_Is_Controlled): Removed.
+ 	(Set_Is_Controlled_Active): New routine.
+ 	(Write_Entity_Flags): Update the output for Flag42.
+ 	* einfo.ads: Update the documentation of the following attributes:
+ 	Disable_Controlled, Is_Controlled, Is_Controlled_Active, Is_Controlled
+ 	and Is_Controlled_Active have swapped their functionality.
+ 	(Is_Controlled): Renamed to Is_Controlled_Active.
+ 	(Is_Controlled_Active): Renamed to Is_Controlled.
+ 	(Set_Is_Controlled): Renamed to Set_Is_Controlled_Active.
+ 	* exp_ch3.adb (Expand_Freeze_Record_Type): Restore the original use of
+ 	Is_Controlled.
+ 	* exp_util.adb (Has_Some_Controlled_Component): Code clean up.
+ 	(Needs_Finalization): Code clean up. Remove the tests for
+ 	Disable_Controlled because a) they were incorrect as they would reject
+ 	a type which is sublect to the aspect, but may contain controlled
+ 	components, and b) they are no longer necessary.
+ 	* exp_util.ads (Needs_Finalization): Update comment on documentation.
+ 	* freeze.adb (Freeze_Array_Type): Restore the original use of
+ 	Is_Controlled.
+ 	(Freeze_Record_Type): Restore the original use of Is_Controlled.
+ 	* sem_ch3.adb (Analyze_Object_Declaration): Restore the original use of
+ 	Is_Controlled.
+ 	(Array_Type_Declaration): Restore the original use of Is_Controlled.
+ 	(Build_Derived_Private_Type): Restore the original use of
+ 	Is_Controlled.
+ 	(Build_Derived_Record_Type): Set the Is_Controlled_Active flag of a
+ 	type derived from Ada.Finalization.[Limited_]Controlled.
+ 	(Build_Derived_Type): Restore the original use of Is_Controlled.
+ 	(Record_Type_Definition): Restore the original use of Is_Controlled.
+ 	* sem_ch7.adb (Preserve_Full_Attributes): Restore the original use of
+ 	Is_Controlled.
+ 	* sem_ch13.adb (Analyze_Aspect_Disable_Controlled): New routine.
+ 	(Analyze_Aspect_Specifications): Use routine
+ 	Analyze_Aspect_Disable_Controlled to process aspect Disable_Controlled.
+ 
+ 2017-09-13  Vincent Celier  <celier@adacore.com>
+ 
+ 	* clean.adb (Gnatclean): Fix error when looking for target
+ 	of <target>-gnatclean
+ 
+ 2017-09-13  Javier Miranda  <miranda@adacore.com>
+             Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch8.adb (Find_Expanded_Name): Complete code that identifies an
+ 	expanded name that designates the current instance of a child unit in
+ 	its own body and appears as the prefix of a reference to an entity
+ 	local to the child unit.
+ 
+ 2017-09-12  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_warn.adb: Minor comment.
+ 
+ 2017-09-12  Bob Duff  <duff@adacore.com>
+ 
+ 	* libgnat/a-cbdlli.adb, libgnat/a-cbhama.adb,
+ 	libgnat/a-cbmutr.adb, libgnat/a-cborma.adb: Rename New_Item to
+ 	be Default_Initialized_Item, and apply pragma Unmodified to it,
+ 	to suppress the warning.
+ 
+ 2017-09-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_aggr.adb (Aggr_Assignment_OK_For_Backend): Add early return
+ 	for access types.
+ 
+ 2017-09-12  Yannick Moy  <moy@adacore.com>
+ 
+ 	* gnat1drv.adb (Adjust_Global_Switches): Consider Refined_Global
+ 	together with Global when ignoring one in CodePeer mode.
+ 
+ 2017-09-12  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_ch3.adb (Analyze_Declarations): In nested
+ 	package declarations that have a private part enable missing check
+ 	of the RM rule 13.1.1(11/3): usage names in aspect definitions are
+ 	resolved at the end of the immediately enclosing declaration list.
+ 
+ 2017-09-12  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_ch6.adb (Analyze_Expression_Function): Initialize Def_Id to
+ 	Empty.
+ 
+ 2017-09-12  Georges-Axel Jaloyan  <jaloyan@adacore.com>
+ 
+ 	* debug.adb: Reserving flag -gnatdF for safe pointer checking.
+ 	* gnat1drv.adb (gnat1drv): Adding the call to the analysis on
+ 	dF flag.
+ 	* sem_spark.adb, sem_spark.ads: Implementation of the analysis,
+ 	in preparation for the evolution of the SPARK language that
+ 	includes a pointer analysis for checking non-aliasing of access
+ 	types. The Check_Safe_Pointers function is the entry point, and
+ 	will traverse the AST and raise compile-time errors everytime
+ 	it detects non-begign aliasing.  Detailed comments are present
+ 	in the sem_spark.ads file.
+ 	* sem_util.adb, sem_util.ads (First_Global, Next_Global): New
+ 	functions to iterate over the list of globals of a subprogram.
+ 	* libgnat/system.ads: Add restriction No_Finalization.
+ 	* gcc-interface/Make-lang.in: Add new file sem_spark.adb and
+ 	dependency on g-dynhta.adb.
+ 
+ 2017-09-12  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_ch6.adb (Analyze_Expression_Function): Call
+ 	Check_Dynamically_Tagged_Expression.
+ 	* sem_util.adb (Check_Dynamically_Tagged_Expression): Remove
+ 	"and then Is_Tagged_Type (Typ)" because there is an earlier
+ 	"Assert (Is_Tagged_Type (Typ))".
+ 
+ 2017-09-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/Makefile.in (SPARC/Solaris): Remove obsolete stuff.
+ 
+ 2017-09-11  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* doc/gnat_ugn/the_gnat_compilation_model.rst: Fix sphinx warning.
+ 	* doc/gnat_ugn/platform_specific_information.rst: Remove doc
+ 	for no longer supported platforms.
+ 	* doc/gnat_ugn/gnat_and_program_execution.rst: Added detailed
+ 	description of the semantics for dimensionality analysis.
+ 	* gnat_ugn.texi: Regenerated.
+ 
+ 2017-09-11  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* freeze.adb (Has_Incomplete_Compoent): Delete.
+ 	(Freeze_Profile):
+ 	Do not inhibit the freezing of the profile of an expression
+ 	function here.
+ 	(Freeze_Subprogram): Do not re-create extra formals.
+ 	* sem_ch6.adb (Analyze_Expression_Function): Always
+ 	pre-analyze the expression if the function is not a completion.
+ 	(Analyze_Subprogram_Body_Helper): For the body generated
+ 	from an expression function that is not a completion, do
+ 	not freeze the profile and temporary mask the types declared
+ 	outside the expression that are not yet frozen.
+ 	* sem_res.adb (Rewrite_Renamed_Operator): Also bail out if invoked
+ 	during the pre-analysis of an expression function.
+ 
+ 2017-09-11  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/gigi.h (enum standard_datatypes): Minor tweak.
+ 	(gigi): Likewise.
+ 
+ 2017-09-11  Yannick Moy  <moy@adacore.com>
+ 
+ 	* lib-xref-spark_specific.adb: Minor rewrite.
+ 
+ 2017-09-11  Jerome Lambourg  <lambourg@adacore.com>
+ 
+         * libgnat: Rename ?-[a-z]*-* into ?-[a-z]*__*
+         * gcc-interface/Makefile.in, gcc-interface/Make-lang.in: Take this
+ 	renaming into account.
+ 
+ 2017-09-11  Jerome Lambourg  <lambourg@adacore.com>
+ 
+ 	* libgnarl: Rename ?-[a-z]*-* into ?-[a-z]*__*
+ 	* gcc-interface/Makefile.in: Take this renaming into account.
+ 
+ 2017-09-11  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* s-auxdec-empty.ads, s-auxdec-empty.adb, 9drpc.adb: Removed, no
+ 	longer used.
+ 
+ 2017-09-11  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_util.adb (Check_Result_And_Post_State):
+ 	Do not issue a warning about missing reference to an outcome if
+ 	the subprogram is ghost and has no outputs.
+ 	* lib-xref-spark_specific.adb, sem_aggr.adb, sem_aux.ads: Minor
+         reformatting.
+ 
+ 2017-09-11  Yannick Moy  <moy@adacore.com>
+ 
+ 	* gnat1drv.adb (Adjust_Global_Switches): Set
+ 	Check_Validity_Of_Parameters to False in GNATprove mode.
+ 	* opt.ads (Check_Validity_Of_Parameters): Document switch to
+ 	set option.
+ 
+ 2017-09-09  Pierre-Marie de Rodat  <derodat@adacore.com>
+ 
+ 	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Type>: Don't
+ 	generate debug info for inner record types if -fgnat-encodings=minimal.
+ 	(gnat_to_gnu_entity) <E_Record_Subtype>: Use the ultimate base record
+ 	type as the debug type.
+ 
+ 2017-09-09  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.c (components_to_record): Do not reorder in non-
+ 	packed record types if pragma Optimize_Alignment (Space) is enabled.
+ 
+ 2017-09-09  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.c (Subprogram_Body_to_gnu): Disregard inlining
+ 	limits for expression functions.
+ 	(gnat_to_gnu) <N_Object_Declaration>: Fix formatting.
+ 
+ 2017-09-09  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Type>: Copy the
+ 	layout of the record from the parent type only if both are or are not
+ 	unchecked unions.
+ 	(is_stored_discriminant): Return false for an unchecked union.
+ 
+ 2017-09-09  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/utils2.c (build_allocator): In type_annotate_only mode
+ 	return NULL_EXPR.
+ 
+ 2017-09-09  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.c (promote_object_alignment): New function taken
+ 	from...
+ 	(gnat_to_gnu_entity) <E_Variable>: ...here.  Invoke it.
+ 	(gnat_to_gnu_field): If the field is Atomic or VFA, invoke it and
+ 	create a padding type on success before doing the atomic check.
+ 
+ 2017-09-09  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Apply the
+ 	promotion to static memory earlier in the processing.
+ 
+ 2017-09-09  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.c (gnat_to_gnu_entity): Only set the TYPE_ALIGN_OK
+ 	and TYPE_BY_REFERENCE_P flags on types after various promotions.
+ 	* gcc-interface/trans.c (node_has_volatile_full_access) <N_Identifier>:
+ 	Consider all kinds of entities.
+ 
+ 2017-09-09  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/utils.c (convert): When converting to a padding type,
+ 	reuse an existing CONSTRUCTOR if it has got the right size.
+ 
+ 2017-09-08  Nicolas Roche  <roche@adacore.com>
+ 
+ 	* gcc-interface/Make-lang.in, gcc-interface/Makefile.in: Find runtime
+ 	source in libgnat/
+ 	* a-lfztio.ads, g-timsta.ads, g-sercom-linux.adb, s-osprim-solaris.adb,
+ 	a-inteio.ads, s-stchop-rtems.adb, s-casuti.adb, s-pack39.adb,
+ 	i-vxwork-x86.ads, a-strbou.adb, a-stzmap.adb, s-assert.adb,
+ 	a-sfecin.ads, a-cohama.adb, s-casuti.ads, a-suenco.adb, s-pack39.ads,
+ 	a-stzmap.ads, a-strbou.ads, s-stalib.adb, s-trasym.adb, g-comver.adb,
+ 	s-assert.ads, s-vector.ads, g-cgi.adb, a-cohama.ads, s-wchcnv.adb,
+ 	a-titest.adb, s-pack48.adb, a-suenco.ads, a-strunb.adb, s-stalib.ads,
+ 	s-trasym.ads, a-nudira.adb, g-comver.ads, a-nuflra.adb, g-cgi.ads,
+ 	a-chacon.adb, s-wchcnv.ads, a-excach.adb, s-pack48.ads, a-titest.ads,
+ 	a-strunb.ads, s-dwalin.adb, a-nudira.ads, a-chtgbo.adb, s-resfil.adb,
+ 	a-scteio.ads, a-nuflra.ads, g-soliop-mingw.ads, s-pack57.adb,
+ 	a-chacon.ads, s-bytswa.ads, s-pooloc.adb, g-os_lib.adb, s-dwalin.ads,
+ 	a-szuzha.adb, s-resfil.ads, a-chtgbo.ads, s-spsufi.adb, s-pack57.ads,
+ 	s-pooloc.ads, g-os_lib.ads, a-stfiha.ads, a-lcteio.ads, a-wtcoau.adb,
+ 	a-szuzha.ads, s-mmosin-unix.adb, a-stmaco.ads, s-spsufi.ads,
+ 	s-stchop-limit.ads, a-wtcoau.ads, a-exctra.adb, s-mmosin-unix.ads,
+ 	s-sequio.adb, s-conca2.adb, g-table.adb, s-imglli.adb,
+ 	a-numaux-x86.adb, a-strsea.adb, s-wchstw.adb, a-clrefi.adb,
+ 	a-wwboio.adb, a-exctra.ads, s-sequio.ads, s-conca2.ads, a-wwunio.ads,
+ 	system-linux-hppa.ads, g-table.ads, s-dimkio.ads, s-imglli.ads,
+ 	a-cofove.adb, a-numaux-x86.ads, s-wchstw.ads, a-strsea.ads,
+ 	a-clrefi.ads, a-wwboio.ads, s-stratt-xdr.adb, s-crc32.adb,
+ 	s-excmac-arm.adb, g-busora.adb, a-cofove.ads, s-osprim-unix.adb,
+ 	g-io.adb, s-pack49.adb, s-crc32.ads, s-excmac-arm.ads, a-fzteio.ads,
+ 	g-busora.ads, s-stausa.adb, system-linux-mips.ads, sequenio.ads,
+ 	g-exctra.adb, g-rewdat.adb, a-cgaaso.adb, g-io.ads, s-pack49.ads,
+ 	a-wtflau.adb, a-undesu.adb, s-stausa.ads, a-ztenau.adb, g-enutst.ads,
+ 	calendar.ads, s-pack58.adb, g-rewdat.ads, g-exctra.ads, s-ststop.adb,
+ 	a-cgaaso.ads, a-strfix.adb, a-comlin.adb, a-strunb-shared.adb,
+ 	a-wtflau.ads, a-undesu.ads, a-cbhase.adb, a-ztenau.ads, s-os_lib.adb,
+ 	a-coorse.adb, a-chlat1.ads, s-pack58.ads, s-ststop.ads, a-strfix.ads,
+ 	a-comlin.ads, a-strunb-shared.ads, a-nscefu.ads, s-valboo.adb,
+ 	directio.ads, a-chtgke.adb, a-cbhase.ads, a-wtinau.adb,
+ 	system-linux-alpha.ads, s-os_lib.ads, a-coorse.ads,
+ 	system-linux-s390.ads, s-imgwiu.adb, a-chtgop.adb, s-valboo.ads,
+ 	a-chtgke.ads, a-tienio.adb, s-conca3.adb, a-wtinau.ads,
+ 	system-darwin-ppc.ads, i-c.adb, s-expllu.adb, g-expect.adb,
+ 	g-sha256.ads, s-vallld.adb, s-imgwiu.ads, a-chtgop.ads, a-strmap.adb,
+ 	a-tienio.ads, s-conca3.ads, s-imgint.adb, i-c.ads, s-expllu.ads,
+ 	s-osprim-darwin.adb, a-cogeso.adb, g-expect.ads, a-iwteio.ads,
+ 	s-vallld.ads, a-coinho-shared.adb, g-shsh64.adb, a-strmap.ads,
+ 	g-comlin.adb, a-excpol.adb, s-imgint.ads, a-ztdeau.adb, a-cogeso.ads,
+ 	a-coinho-shared.ads, g-shsh64.ads, g-comlin.ads, a-stzsup.adb,
+ 	a-rbtgbk.adb, a-wtmoau.adb, a-ztdeau.ads, s-exnlli.adb, g-tty.adb,
+ 	g-heasor.adb, g-socthi-dummy.adb, s-llflex.ads, a-zchara.ads,
+ 	a-stzsup.ads, a-ztcstr.adb, a-rbtgbk.ads, a-sfwtio.ads, a-wtmoau.ads,
+ 	a-sulcin.adb, s-exnlli.ads, system-freebsd.ads, a-stunha.adb,
+ 	a-charac.ads, g-tty.ads, g-heasor.ads, s-exctra.adb,
+ 	g-socthi-dummy.ads, a-coboho.adb, a-ztcstr.ads, a-tideio.adb,
+ 	a-sulcin.ads, a-wrstfi.adb, g-alleve.adb, s-pack59.adb, a-ngrear.adb,
+ 	a-stboha.adb, a-stunau-shared.adb, a-stunha.ads, a-lfwtio.ads,
+ 	s-fileio.adb, s-exctra.ads, a-coboho.ads, a-ioexce.ads, a-tideio.ads,
+ 	a-ngrear.ads, a-wrstfi.ads, s-pack59.ads, g-alleve.ads, a-stboha.ads,
+ 	s-poosiz.adb, g-traceb.adb, g-rannum.adb, machcode.ads, s-purexc.ads,
+ 	s-fileio.ads, a-cfinve.adb, a-crbtgk.adb, system-solaris-x86.ads,
+ 	s-poosiz.ads, g-rannum.ads, g-traceb.ads, a-except.adb, s-conca4.adb,
+ 	a-stream.adb, a-cfinve.ads, a-crbtgk.ads, s-wchwts.adb,
+ 	system-mingw.ads, a-except.ads, s-conca4.ads, a-chzla9.ads,
+ 	s-valenu.adb, s-soflin.adb, a-stream.ads, a-cgarso.adb, s-valllu.adb,
+ 	g-crc32.adb, s-wchwts.ads, s-fatflt.ads, s-imguns.adb, s-strcom.adb,
+ 	g-decstr.adb, s-valenu.ads, s-soflin.ads, a-cgarso.ads, a-cwila1.ads,
+ 	s-valllu.ads, g-crc32.ads, s-imguns.ads, g-spipat.adb, s-valwch.adb,
+ 	s-strcom.ads, g-decstr.ads, text_io.ads, g-debuti.adb, s-stchop.adb,
+ 	g-spipat.ads, s-valwch.ads, a-string.ads, s-exnint.adb, g-awk.adb,
+ 	g-tasloc.adb, s-wwdenu.adb, s-boustr.adb, a-zchuni.adb, s-stchop.ads,
+ 	g-debuti.ads, s-stopoo.adb, system-dragonfly-x86_64.ads,
+ 	system-linux-x86.ads, s-exnint.ads, g-awk.ads, a-stzhas.adb,
+ 	g-tasloc.ads, s-wwdenu.ads, g-debpoo.adb, g-except.ads,
+ 	g-sse.ads, s-boustr.ads, a-zchuni.ads, s-bitops.adb, s-wwdwch.adb,
+ 	s-stopoo.ads, a-catizo.adb, a-stzhas.ads, a-nlcefu.ads, g-debpoo.ads,
+ 	i-vxwoio.adb, s-bitops.ads, g-io-put-vxworks.adb, s-wwdwch.ads,
+ 	g-sehamd.adb, a-ssicst.adb, a-catizo.ads, s-mmap.adb, g-string.adb,
+ 	s-traceb.adb, a-swunau.adb, s-rannum.adb, a-ticoau.adb, i-vxwoio.ads,
+ 	g-sehamd.ads, a-stwiun.adb, a-ssicst.ads, s-conca5.adb, a-ssitio.ads,
+ 	s-mmap.ads, a-zttest.adb, g-string.ads, g-sercom.adb, a-cdlili.adb,
+ 	a-swunau.ads, s-traceb.ads, s-rannum.ads, a-ticoau.ads, system-aix.ads,
+ 	a-cforma.adb, a-stwiun.ads, s-conca5.ads, s-carsi8.adb, a-zttest.ads,
+ 	g-sercom.ads, a-cdlili.ads, a-cihama.adb, g-sptain.ads, a-cforma.ads,
+ 	s-maccod.ads, s-carsi8.ads, a-strsup.adb, g-sha1.adb, a-cihama.ads,
+ 	g-stseme.adb, s-traent.adb, s-valcha.adb, g-curexc.ads, a-strsup.ads,
+ 	g-sha1.ads, a-sflcin.ads, s-traent.ads, s-pack10.adb, s-valcha.ads,
+ 	a-coteio.ads, s-tasloc.adb, g-utf_32.adb, a-suteio.adb, s-except.adb,
+ 	a-direct.adb, g-stsifd-sockets.adb, a-numaux-vxworks.ads, s-winext.ads,
+ 	s-pack10.ads, a-ztexio.adb, a-tiflau.adb, system-vxworks-arm.ads,
+ 	s-tasloc.ads, a-suteio.ads, g-utf_32.ads, s-except.ads,
+ 	a-direct.ads, a-swbwha.adb, g-hesorg.adb, s-wwdcha.adb, a-wtedit.adb,
+ 	a-ztexio.ads, a-wtcoio.adb, a-tiflau.ads, a-ssizti.ads, s-casi32.adb,
+ 	a-swbwha.ads, s-veboop.adb, g-hesorg.ads, s-parame-rtems.adb,
+ 	s-wwdcha.ads, a-wtedit.ads, a-stuten.adb, a-coinve.adb, a-wtcoio.ads,
+ 	s-casi32.ads, s-string.adb, a-tiinau.adb, a-cusyqu.adb, s-conca6.adb,
+ 	s-veboop.ads, a-cgcaso.adb, a-numaux-darwin.adb, a-envvar.adb,
+ 	a-stuten.ads, s-secsta.adb, a-coinve.ads, s-string.ads, a-cusyqu.ads,
+ 	a-tiinau.ads, s-osprim-vxworks.adb, s-conca6.ads, g-spchge.adb,
+ 	s-parint.adb, a-cuprqu.adb, a-cgcaso.ads, a-numaux-darwin.ads,
+ 	a-envvar.ads, s-secsta.ads, g-spchge.ads, s-parint.ads, a-cuprqu.ads,
+ 	a-swuwti.adb, a-flteio.ads, a-sbhcin.adb, a-coprnu.adb, g-u3spch.adb,
+ 	s-atocou.adb, g-ctrl_c.adb, a-swuwti.ads, a-calend.adb, a-sbhcin.ads,
+ 	a-coprnu.ads, g-dirope.adb, g-sha512.ads, g-u3spch.ads, s-atocou.ads,
+ 	g-ctrl_c.ads, a-timoau.adb, a-witeio.adb, s-pack11.adb, a-strhas.adb,
+ 	a-wtflio.adb, g-spitbo.adb, a-calend.ads, a-ztenio.adb, g-dirope.ads,
+ 	a-slcain.adb, g-sechas.adb, a-timoau.ads, a-witeio.ads, s-pack11.ads,
+ 	s-shasto.adb, s-traceb-mastop.adb, a-ciorse.adb, s-utf_32.adb,
+ 	a-strhas.ads, a-wtflio.ads, g-spitbo.ads, a-ztenio.ads, a-slcain.ads,
+ 	g-sechas.ads, s-gearop.adb, a-siztio.ads, s-pack20.adb, s-shasto.ads,
+ 	a-ciorse.ads, s-utf_32.ads, s-crtl.ads, a-wtinio.adb, s-elaall.adb,
+ 	s-explli.adb, s-chepoo.ads, s-gearop.ads, a-einuoc.adb, s-pack20.ads,
+ 	system-linux-ia64.ads, a-swunau-shared.adb, a-wtinio.ads, g-alvety.ads,
+ 	a-liztio.ads, g-calend.adb, s-conca7.adb, s-elaall.ads, s-explli.ads,
+ 	a-einuoc.ads, s-widboo.adb, s-imgdec.adb, a-cbhama.adb, g-calend.ads,
+ 	s-conca7.ads, a-llitio.ads, i-cexten.ads, a-coorma.adb, s-widboo.ads,
+ 	s-diflio.adb, g-souinf.ads, s-imgdec.ads, g-strhas.ads, a-cbhama.ads,
+ 	g-shshco.adb, a-ztdeio.adb, s-gloloc.adb, a-coorma.ads, g-wispch.adb,
+ 	s-pack03.adb, g-eacodu.adb, s-casi16.adb, s-diflio.ads, a-colien.adb,
+ 	g-shshco.ads, a-wtmoio.adb, a-rbtgbo.adb, a-ztdeio.ads,
+ 	system-rtems.ads, s-gloloc.ads, a-csquin.ads, a-cofuse.adb,
+ 	g-wispch.ads, s-pack03.ads, s-casi16.ads, s-io.adb, a-colien.ads,
+ 	g-alveop.adb, gnat.ads, s-diinio.adb, a-cfdlli.adb, g-pehage.adb,
+ 	a-wtmoio.ads, a-stwiha.adb, a-locale.adb, a-tirsfi.adb, a-nscoty.ads,
+ 	a-rbtgbo.ads, s-pack12.adb, a-cofuse.ads, a-sfteio.ads, s-io.ads,
+ 	g-alveop.ads, a-cfdlli.ads, s-diinio.ads, a-stwiha.ads, g-pehage.ads,
+ 	a-locale.ads, a-tirsfi.ads, s-pack12.ads, s-valuti.adb, g-cppexc.adb,
+ 	system-vxworks-ppc.ads, g-memdum.adb, a-lfteio.ads, s-pack21.adb,
+ 	s-unstyp.ads, s-valuti.ads, g-cppexc.ads, system-hpux-ia64.ads,
+ 	g-memdum.ads, g-soccon.ads, g-altive.ads, a-crbtgo.adb, s-pack21.ads,
+ 	a-llizti.ads, a-numaux-libc-x86.ads, s-expint.adb, s-conca8.adb,
+ 	a-crbtgo.ads, s-pack30.adb, s-vallli.adb, s-geveop.adb, s-expint.ads,
+ 	a-direio.adb, s-conca8.ads, a-widcha.ads, s-pack30.ads, s-vallli.ads,
+ 	s-strhas.adb, s-geveop.ads, g-md5.adb, a-direio.ads, a-numaux.ads,
+ 	s-ransee.adb, a-szbzha.adb, i-cobol.adb, g-busorg.adb, s-strhas.ads,
+ 	g-md5.ads, s-widenu.adb, s-ransee.ads, s-widllu.adb, a-szbzha.ads,
+ 	a-ststio.adb, i-cobol.ads, g-busorg.ads, g-regpat.adb, s-widenu.ads,
+ 	a-secain.adb, s-widllu.ads, s-pack13.adb, g-encstr.adb, a-ztcoau.adb,
+ 	a-ststio.ads, s-widwch.adb, g-regpat.ads, s-atacco.adb, a-cborse.adb,
+ 	a-secain.ads, s-pack13.ads, g-encstr.ads, a-ztcoau.ads, s-widwch.ads,
+ 	g-io_aux.adb, s-atacco.ads, a-ncelfu.ads, interfac.ads, a-cborse.ads,
+ 	g-regexp.adb, s-pack22.adb, a-szuzti.adb, g-io_aux.ads, s-caun32.adb,
+ 	a-nselfu.ads, g-regexp.ads, s-pack22.ads, a-ticoio.adb, a-szuzti.ads,
+ 	g-diopit.adb, s-caun32.ads, s-conca9.adb, a-tags.adb, a-swmwco.ads,
+ 	a-sbecin.adb, s-pack31.adb, s-expuns.adb, a-ticoio.ads, s-valint.adb,
+ 	s-conca9.ads, g-diopit.ads, a-tags.ads, a-nllcef.ads, a-izteio.ads,
+ 	a-sbecin.ads, s-expuns.ads, s-pack31.ads, g-dyntab.adb, s-powtab.ads,
+ 	s-flocon-none.adb, s-valint.ads, a-ssiwti.ads, s-mmosin-mingw.adb,
+ 	s-pack40.adb, s-pack05.adb, a-ztflau.adb, g-dyntab.ads,
+ 	a-szuzti-shared.adb, g-alvevi.ads, a-stwise.adb, s-mmosin-mingw.ads,
+ 	s-pack40.ads, a-diocst.adb, a-ztflau.ads, s-pack05.ads, a-nlcoty.ads,
+ 	a-contai.ads, a-stwisu.adb, g-byorma.adb, a-siwtio.ads, a-stwise.ads,
+ 	s-regpat.adb, g-mbdira.adb, s-pack14.adb, a-diocst.ads, g-flocon.ads,
+ 	g-mbflra.adb, a-ztinau.adb, s-dim.ads, s-mantis.adb, a-stwisu.ads,
+ 	g-byorma.ads, s-atopri.adb, g-wistsp.ads, a-uncdea.ads, s-widcha.adb,
+ 	a-caldel.adb, s-regpat.ads, g-mbdira.ads, a-tiflio.adb, s-pack14.ads,
+ 	s-parame.adb, a-liwtio.ads, s-memory.adb, g-mbflra.ads, a-ztinau.ads,
+ 	a-wtgeau.adb, s-direio.adb, s-mantis.ads, s-atopri.ads, s-widcha.ads,
+ 	a-caldel.ads, s-pack23.adb, a-unccon.ads, a-tiflio.ads, s-parame.ads,
+ 	a-llftio.ads, s-memory.ads, s-regexp.adb, a-wtgeau.ads, a-exexda.adb,
+ 	s-direio.ads, s-pack23.ads, g-stheme.adb, a-tiinio.adb, g-sestin.ads,
+ 	s-regexp.ads, a-wtfiio.adb, a-comutr.adb, a-exexpr.adb, a-tiinio.ads,
+ 	a-ztmoau.adb, a-cohata.ads, a-wtfiio.ads, s-imgrea.adb, ada.ads,
+ 	a-szunau-shared.adb, a-comutr.ads, s-valuns.adb, a-ztmoau.ads,
+ 	system-linux-arm.ads, s-osprim-x32.adb, s-pack41.adb, s-pack06.adb,
+ 	s-imgrea.ads, s-valuns.ads, s-finroo.adb, s-caun16.adb, s-pooglo.adb,
+ 	a-zrstfi.adb, a-suenst.adb, s-pack41.ads, g-binenv.adb, s-pack06.ads,
+ 	a-calari.adb, a-nlcoar.ads, s-finroo.ads, a-timoio.adb, s-caun16.ads,
+ 	s-flocon.adb, a-suenst.ads, a-zrstfi.ads, s-pooglo.ads, s-wchcon.adb,
+ 	s-traceb-hpux.adb, s-pack50.adb, i-fortra.adb, s-pack15.adb,
+ 	a-ngcefu.adb, g-sptavs.ads, g-binenv.ads, s-wchjis.adb, a-calari.ads,
+ 	a-timoio.ads, a-decima.adb, s-flocon.ads, s-wchcon.ads, a-llfzti.ads,
+ 	i-fortra.ads, s-pack50.ads, s-pack15.ads, a-ngcefu.ads, a-cfhase.adb,
+ 	s-wchjis.ads, g-soliop.ads, a-decima.ads, a-chlat9.ads, s-pack24.adb,
+ 	a-nlelfu.ads, a-cfhase.ads, g-locfil.adb, s-atocou-builtin.adb,
+ 	s-memcop.ads, a-szunau.adb, s-pack24.ads, s-imgllb.adb, s-auxdec.adb,
+ 	g-locfil.ads, s-pack33.adb, a-szunau.ads, s-parame-vxworks.adb,
+ 	s-imgllb.ads, a-ciorma.adb, s-auxdec.ads, a-cobove.adb, s-dsaser.ads,
+ 	a-elchha.adb, s-pack33.ads, a-cofuve.adb, s-parame-vxworks.ads,
+ 	a-ciorma.ads, system-darwin-x86.ads, s-multip.adb, a-stwiun-shared.adb,
+ 	a-wichun.adb, a-cobove.ads, s-imgbiu.adb, s-tsmona-mingw.adb,
+ 	a-coormu.adb, a-siocst.adb, s-win32.ads, a-elchha.ads, s-pack42.adb,
+ 	s-pack07.adb, a-cofuve.ads, system-hpux.ads, a-teioed.adb,
+ 	a-convec.adb, g-speche.adb, s-multip.ads, a-stwiun-shared.ads,
+ 	a-wichun.ads, s-imgbiu.ads, a-numeri.ads, a-siocst.ads, a-coormu.ads,
+ 	a-lliwti.ads, s-pack42.ads, s-pack07.ads, a-teioed.ads, a-convec.ads,
+ 	g-speche.ads, g-socthi.adb, a-nucoty.ads, a-szmzco.ads, s-pack51.adb,
+ 	s-osprim-mingw.adb, s-casi64.adb, g-strspl.ads, g-socthi.ads,
+ 	g-socket-dummy.adb, s-pack51.ads, s-dimmks.ads, s-casi64.ads,
+ 	a-wtenau.adb, s-stchop-vxworks.adb, s-pack60.adb,
+ 	system-solaris-sparc.ads, s-pack25.adb, g-socket-dummy.ads,
+ 	a-exstat.adb, a-cofuma.adb, s-tsmona-linux.adb, a-wtenau.ads,
+ 	s-pack60.ads, s-pack25.ads, i-cstrea.adb, a-cofuma.ads, g-exptty.adb,
+ 	a-chzla1.ads, s-pack34.adb, i-cstrea.ads, s-excdeb.adb, a-iteint.ads,
+ 	g-exptty.ads, i-pacdec.adb, s-pack34.ads, s-rident.ads, s-sopco3.adb,
+ 	i-vxwork.ads, s-excdeb.ads, system-linux-ppc.ads, a-swuwti-shared.adb,
+ 	s-widlli.adb, s-pack43.adb, i-pacdec.ads, a-cwila9.ads, s-sopco3.ads,
+ 	a-fwteio.ads, s-widlli.ads, s-pack43.ads, a-suhcin.adb, a-wtdeau.adb,
+ 	g-allein.ads, a-suezst.adb, a-dirval-mingw.adb, g-zspche.adb,
+ 	s-bignum.adb, a-ztedit.adb, g-regist.adb, a-nllefu.ads, a-ztcoio.adb,
+ 	s-pack52.adb, a-llctio.ads, a-nucoar.ads, s-pack17.adb, a-suhcin.ads,
+ 	a-wtdeau.ads, a-suezst.ads, a-dirval.adb, g-zspche.ads, g-regist.ads,
+ 	a-ztedit.ads, s-bignum.ads, a-wtcstr.adb, system.ads, s-pack52.ads,
+ 	a-ztcoio.ads, s-pack17.ads, s-imgboo.adb, a-rbtgso.adb, a-dirval.ads,
+ 	a-cohase.adb, s-pack61.adb, a-wtcstr.ads, s-pack26.adb, s-osprim.ads,
+ 	a-tigeau.adb, s-imgboo.ads, a-nuelfu.ads, a-swfwha.ads, s-commun.adb,
+ 	g-socthi-vxworks.adb, a-rbtgso.ads, a-cohase.ads, g-zstspl.ads,
+ 	s-pack61.ads, s-pack26.ads, a-intnam-dragonfly.ads, s-imglld.adb,
+ 	a-tigeau.ads, s-commun.ads, g-socthi-vxworks.ads, a-cborma.adb,
+ 	a-stwifi.adb, g-moreex.adb, s-pack35.adb, s-imglld.ads, s-valdec.adb,
+ 	a-tifiio.adb, a-cborma.ads, g-moreex.ads, a-stwifi.ads, s-pack35.ads,
+ 	s-sopco4.adb, g-sha224.ads, g-socket.adb, a-intnam-rtems.ads,
+ 	s-finmas.adb, s-valdec.ads, s-addima.adb, a-finali.adb, a-tifiio.ads,
+ 	s-rpc.adb, a-ztflio.adb, s-pack44.adb, s-pack09.adb, a-sblcin.adb,
+ 	s-sopco4.ads, a-textio.adb, g-socket.ads, g-sptabo.ads, s-finmas.ads,
+ 	g-shsh32.adb, s-addima.ads, a-finali.ads, s-mmauni-long.ads, s-rpc.ads,
+ 	a-ztflio.ads, system-djgpp.ads, s-stache.adb, s-pack44.ads,
+ 	s-pack09.ads, a-sblcin.ads, a-textio.ads, a-cidlli.adb, g-shsh32.ads,
+ 	a-chtgbk.adb, a-tiocst.adb, s-pack53.adb, s-pack18.adb, s-stache.ads,
+ 	a-zchhan.adb, s-fatlfl.ads, a-ztinio.adb, s-strops.adb, a-siteio.ads,
+ 	a-cidlli.ads, a-chtgbk.ads, g-ssvety.ads, a-tiocst.ads, s-pack53.ads,
+ 	s-parame-hpux.ads, s-pack18.ads, a-zchhan.ads, s-strops.ads,
+ 	a-ztinio.ads, a-wichha.adb, a-stwima.adb, a-nlrear.ads, a-liteio.ads,
+ 	s-pack62.adb, s-pack27.adb, s-fore.adb, s-vercon.adb, a-wichha.ads,
+ 	a-stwima.ads, s-pack62.ads, system-linux-sparc.ads, s-pack27.ads,
+ 	g-dynhta.adb, s-fore.ads, s-vercon.ads, a-cofuba.adb, a-cimutr.adb,
+ 	i-cpoint.adb, s-imgenu.adb, a-stwibo.adb, s-pack36.adb, i-cstrin.adb,
+ 	s-imgllu.adb, a-suteio-shared.adb, g-excact.adb, s-stoele.adb,
+ 	s-addope.adb, g-dynhta.ads, a-cofuba.ads, a-ztmoio.adb, a-llfwti.ads,
+ 	a-cimutr.ads, i-cpoint.ads, s-imgenu.ads, a-stwibo.ads, a-wttest.adb,
+ 	s-pack36.ads, a-tgdico.ads, s-sopco5.adb, s-scaval.adb, i-cstrin.ads,
+ 	s-imgllu.ads, g-excact.ads, s-stoele.ads, g-deutst.ads, s-addope.ads,
+ 	s-imgwch.adb, g-sha384.ads, a-ztmoio.ads, s-pack45.adb, a-wttest.ads,
+ 	s-sopco5.ads, s-excmac-gcc.adb, s-scaval.ads, a-storio.adb,
+ 	a-coinho.adb, a-btgbso.adb, s-imgwch.ads, s-carun8.adb, memtrack.adb,
+ 	s-pack45.ads, a-sfhcin.ads, s-excmac-gcc.ads, a-storio.ads,
+ 	a-coinho.ads, a-btgbso.ads, s-stratt.adb, s-carun8.ads, a-shcain.adb,
+ 	s-pack54.adb, s-pack19.adb, a-colire.adb, a-tigeli.adb, s-caun64.adb,
+ 	s-stratt.ads, s-fatgen.adb, a-shcain.ads, a-stzunb-shared.adb,
+ 	s-pack54.ads, s-pack19.ads, a-colire.ads, a-calcon.adb, s-caun64.ads,
+ 	s-fatgen.ads, s-pack63.adb, g-arrspl.adb, a-stzunb-shared.ads,
+ 	s-pack28.adb, a-nllrar.ads, a-zzboio.adb, a-zzunio.ads, a-stunau.adb,
+ 	a-calcon.ads, g-cgideb.adb, s-objrea.adb, s-mastop.adb, a-tienau.adb,
+ 	g-altcon.adb, g-arrspl.ads, s-pack63.ads, s-restri.adb, s-pack28.ads,
+ 	a-zzboio.ads, a-stunau.ads, g-cgideb.ads, g-htable.adb, g-sothco.adb,
+ 	s-objrea.ads, g-soliop-solaris.ads, s-mastop.ads, a-tienau.ads,
+ 	system-linux-m68k.ads, g-altcon.ads, s-dmotpr.ads, s-memory-mingw.adb,
+ 	g-cgicoo.adb, s-pack37.adb, s-restri.ads, s-fatllf.ads, s-expmod.adb,
+ 	a-swuwha.adb, a-exextr.adb, a-cfhama.adb, s-gloloc-mingw.adb,
+ 	a-tiboio.adb, g-forstr.adb, g-sothco.ads, a-stzbou.adb, a-nllcty.ads,
+ 	a-suecin.adb, g-htable.ads, s-exctab.adb, a-tiunio.ads, g-cgicoo.ads,
+ 	s-osprim-posix.adb, s-pack37.ads, a-ciormu.adb, s-atocou-x86.adb,
+ 	a-swuwha.ads, s-expmod.ads, a-cfhama.ads, s-ficobl.ads, a-ngcoty.adb,
+ 	g-forstr.ads, a-tiboio.ads, a-calfor.adb, a-stzbou.ads, a-suecin.ads,
+ 	a-conhel.adb, a-crbltr.ads, s-exctab.ads, a-dhfina.ads, s-imgcha.adb,
+ 	s-pack46.adb, a-ciormu.ads, system-linux-sh4.ads, a-chahan.adb,
+ 	a-ngcoty.ads, a-stzunb.adb, a-szfzha.ads, a-calfor.ads, a-cbdlli.adb,
+ 	a-conhel.ads, s-imgcha.ads, s-pack46.ads, a-assert.adb, a-chahan.ads,
+ 	a-stzunb.ads, a-crdlli.adb, s-pack55.adb, a-cbdlli.ads, a-tideau.adb,
+ 	a-assert.ads, ioexcept.ads, s-boarop.ads, g-hesora.adb, a-crdlli.ads,
+ 	s-pack55.ads, a-tideau.ads, g-bubsor.adb, a-wtenio.adb, a-cbsyqu.adb,
+ 	g-hesora.ads, s-pack29.adb, a-nurear.ads, g-catiio.adb, s-stposu.adb,
+ 	g-bubsor.ads, a-wtenio.ads, a-cbsyqu.ads, a-suewst.adb,
+ 	system-vxworks-x86.ads, s-pack29.ads, a-cbmutr.adb, a-cbprqu.adb,
+ 	s-imenne.adb, g-sothco-dummy.adb, g-casuti.adb, g-catiio.ads,
+ 	s-stposu.ads, a-stzsea.adb, s-pack38.adb, a-suewst.ads, s-imgllw.adb,
+ 	a-cbprqu.ads, a-cbmutr.ads, s-imenne.ads, g-sothco-dummy.ads,
+ 	g-casuti.ads, s-htable.adb, s-fatsfl.ads, g-trasym.adb, unchconv.ads,
+ 	a-stzsea.ads, s-arit64.adb, s-pack38.ads, a-nllcar.ads, s-valrea.adb,
+ 	s-imgllw.ads, s-htable.ads, a-sequio.adb, g-trasym.ads, a-ngcoar.adb,
+ 	s-exnllf.adb, s-pack47.adb, s-arit64.ads, g-sercom-mingw.adb,
+ 	s-valrea.ads, g-socthi-mingw.adb, g-bytswa.adb, g-sehash.adb,
+ 	unchdeal.ads, a-sequio.ads, a-ngcoar.ads, s-exnllf.ads, a-wtdeio.adb,
+ 	s-pack47.ads, g-socthi-mingw.ads, a-excpol-abort.adb, a-ztgeau.adb,
+ 	g-bytswa.ads, g-sehash.ads, s-pack56.adb, a-wtdeio.ads, a-ngelfu.adb,
+ 	a-ztgeau.ads, a-cforse.adb, s-filatt.ads, a-stzfix.adb, a-cihase.adb,
+ 	s-pack56.ads, a-sfztio.ads, a-ngelfu.ads, s-trasym-dwarf.adb,
+ 	a-cforse.ads, a-ztfiio.adb, g-timsta.adb, a-stzfix.ads, a-cihase.ads,
+ 	a-ztfiio.ads, system-darwin-arm.ads: Move non-tasking runtime sources
+ 	to libgnat subdirectory.
+ 
+ 2017-09-08  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_aux.adb, sem_aux.ads (Get_Called_Entity): New function to
+ 	return the entity associated with the call.
+ 	* sem_util.adb, sem_util.ads (Check_Function_Writable_Actuals):
+ 	Replace the internal Get_Function_Id with the new
+ 	Sem_Aux.Get_Called_Entity.
+ 	(Iterate_Call_Parameters): New
+ 	procedure to iterate on formals and actuals at the same time.
+ 	* sem_ch12.adb (Analyze_Subprogram_Instantiation):
+ 	Set SPARK_Mode from spec when set, for analysis
+ 	of instance. Restore after analysis of instance.
+ 	(Instantiate_Subprogram_Body): Set SPARK_Mode from body when
+ 	set, for analysis of body instance. Restored automatically at
+ 	the end of the subprogram.
+ 	* gnat1drv.adb (Adjust_Global_Switches): Set
+ 	Check_Validity_Of_Parameters to False in GNATprove mode.
+ 	* opt.ads (Check_Validity_Of_Parameters): Document switch to
+ 	set option.
+ 
+ 2017-09-08  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_util.adb (NCT_Tables_In_Use): Move to library level from...
+ 	(New_Copy_Tree): ...there.  Reset the hash tables only if they
+ 	were used in the previous invocation.
+ 	* s-htable.adb: Fix typo.
+ 
+ 2017-09-08  Bob Duff  <duff@adacore.com>
+ 
+ 	* a-ssicst.adb (Open): Set File.Last_Op to the appropriate value.
+ 
+ 2017-09-08  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_aggr.adb: minor style fix.
+ 
+ 2017-09-08  Bob Duff  <duff@adacore.com>
+ 
+ 	* sprint.adb (Write_Corresponding_Source): Ignore if there is
+ 	no current source file.
+ 	(Write_Name_With_Col_Check, Write_Name_With_Col_Check_Sloc):
+ 	Print something helpful in case N is invalid.
+ 	* sprint.ads: Minor comment fix.
+ 
+ 2017-09-08  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_aggr.adb: (Aggr_Assignment_OK_For_Backend): Add early return for
+ 	access types.
+ 
+ 2017-09-08  Bob Duff  <duff@adacore.com>
+ 
+ 	* par-prag.adb, sem_prag.adb, snames.ads-tmpl: Implement pragma
+ 	Ada_2020, along the same lines as the other Ada version pragmas.
+ 
+ 2017-09-08  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* sem_ch12.adb: Minor typo fixes and reformatting.
+ 
+ 2017-09-08  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_aggr.adb (Resolve_Record_Aggregate):
+ 	Rewrite bounds of aggregate subexpressions which may depend on
+ 	discriminants of the enclosing aggregate.
+ 
+ 2017-09-08  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_ch5.adb: Prevent assertion failure on illegal code.
+ 
+ 2017-09-08  Yannick Moy  <moy@adacore.com>
+ 
+ 	* lib-xref-spark_specific.adb (Add_SPARK_Xrefs.Is_SPARK_Scope): Avoid
+ 	calling Renamed_Entity on an entity which cannot be a renaming.
+ 
+ 2017-09-08  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_aggr.adb: Add with & use clause for Urealp.
+ 	(Aggr_Assignment_OK_For_Backend): Accept (almost all)
+ 	elementary types instead of just discrete types.
+ 	* sem_eval.adb (Expr_Value): Deal with N_Null for access types.
+ 	* gcc-interface/trans.c (gnat_to_gnu) <N_Assignment_Statement>:
+ 	Be prepared for the FP zero value in the memset case.  Add small
+ 	guard.
+ 
+ 2017-09-08  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* s-htable.adb (Static_HTable.Reset): Use aggregate instead
+ 	of loop.
+ 
+ 2017-09-08  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* exp_aggr.adb (Expand_Array_Aggregate): Use New_Copy_Tree instead
+ 	of New_Copy because the latter leaves the syntactic structure of
+ 	the tree inconsistent (a child is accessible through two parents)
+ 	and prevents proper replication of itypes by subsequent calls
+ 	to New_Copy_Tree.
+ 	* exp_ch4.adb (Expand_Concatenate): Use New_Copy_Tree instead of
+ 	New_Copy because the latter leaves the syntactic structure of the
+ 	tree inconsistent (a child is accessible through two parents)
+ 	and prevents proper replication of itypes by subsequent calls
+ 	to New_Copy_Tree.
+ 	* sem_util.adb (In_Subtree): New routine.
+ 	(New_Copy_Tree): Reimplemented.
+ 	* sem_util.ads (In_Subtree): New routine.
+ 	(New_Copy_Tree): Reimplemented.
+ 
+ 2017-09-08  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch13.adb (Resolve_Aspect_Expressions): The expression
+ 	for aspect Default_Value is a static scalar value, but it does
+ 	not freeze the type. Yhis allows for subsequent representation
+ 	clauses for the type.
+ 
+ 2017-09-08  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_ch8.adb (Find_Direct_Name.Undefined): Do
+ 	not add entries into the undefined reference table when we are
+ 	compiling with errors ignored.
+ 
+ 2017-09-08  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch12.adb (Check_Formal_Packages): Do not apply conformance
+ 	check if the instance is within an enclosing instance body. The
+ 	formal package was legal in the enclosing generic, and is
+ 	legal in the enclosing instantiation.  This optimisation may be
+ 	applicable elsewhere, and it also removes spurious errors that
+ 	may arise with on-the-fly processing  of instantiations that
+ 	contain Inline_Always subprograms.
+ 
+ 2017-09-08  Vincent Celier  <celier@adacore.com>
+ 
+ 	* gnatcmd.adb: Disregard empty argument of GNAT driver.
+ 
+ 2017-09-08  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* checks.adb (Insert_Valid_Check): Manually decorate
+ 	the generated temporary for range valdity checks.
+ 
+ 2017-09-08  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* usage.adb (Usage): Document new -gnatw.q/-gnatw.Q switches.
+ 
+ 2017-09-08  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* switch-c.adb (Scan_Front_End_Switches): Add new warning switch
+ 	case to handle underscore flags.
+ 	* warnsw.adb, warnsw.ads (Set_Underscore_Warning_Switch): Create
+ 	new procedure to handle underscores.
+ 
+ 2017-09-08  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_ch4.adb (Expand_N_Op_Divide): Reordering code that handles
+ 	divisions with fixed point results to avoid generating twice
+ 	the runtime check on divide by zero.
+ 	* checks.adb (Apply_Divide_Checks): Ensure that operands are
+ 	not evaluated twice (once for their runtime checks and once for
+ 	their regular computation).
+ 
+ 2017-09-08  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Part_Of): Add missing
+ 	return statements after issuing errors.  Add detection of
+ 	out-of-order item and single concurrent type.
+ 
+ 2017-09-08  Nicolas Roche  <roche@adacore.com>
+ 
+ 	* gcc-interface/Makefile.in, a-extiti.ads, s-taprop-linux.adb,
+ 	s-osinte-solaris.adb, a-intnam.ads, s-osinte-solaris.ads,
+ 	s-tpobop.adb, s-intman-android.adb, s-tasinf.adb, s-tpobop.ads,
+ 	s-tasinf.ads, i-vxinco.adb, a-exetim-posix.adb, i-vxinco.ads,
+ 	a-astaco.adb, a-astaco.ads, s-tporft.adb, s-tpoaal.adb, a-taside.adb,
+ 	a-taside.ads, s-tpopsp-posix.adb, s-tasdeb.adb, s-tasdeb.ads,
+ 	s-tpoben.adb, a-dinopr.ads, s-inmaop-vxworks.adb, s-tpoben.ads,
+ 	s-interr-vxworks.adb, s-interr-dummy.adb, s-tassta.adb,
+ 	a-intnam-mingw.ads, s-tassta.ads, s-taasde.adb, a-stcoed.ads,
+ 	s-taasde.ads, s-osinte-darwin.adb, s-proinf.adb, s-taprop-dummy.adb,
+ 	s-osinte-darwin.ads, s-proinf.ads, s-linux.ads, a-intnam-linux.ads,
+ 	s-tasren.adb, s-tasren.ads, s-mudido.adb, g-semaph.adb, s-mudido.ads,
+ 	s-taprop-posix.adb, g-semaph.ads, s-osinte-mingw.ads, s-vxwork-x86.ads,
+ 	s-tposen.adb, s-linux-sparc.ads, s-taprop-vxworks.adb, s-tasini.adb,
+ 	s-tposen.ads, s-tasini.ads, a-etgrbu.ads, s-interr-hwint.adb,
+ 	s-osinte-linux.ads, s-taprop.ads, s-tasque.adb, s-tasque.ads,
+ 	s-taenca.adb, s-taspri-vxworks.ads, s-taenca.ads, a-dynpri.adb,
+ 	s-tpopsp-solaris.adb, a-dynpri.ads, s-taprop-hpux-dce.adb,
+ 	a-interr.adb, a-intnam-freebsd.ads, s-tarest.adb, a-interr.ads,
+ 	s-intman-susv3.adb, a-synbar.adb, a-intnam-dummy.ads, s-tadeca.adb,
+ 	s-osinte-vxworks.adb, s-tarest.ads, s-taskin.adb, a-synbar.ads,
+ 	s-taspri-hpux-dce.ads, s-tadeca.ads, s-osinte-vxworks.ads,
+ 	s-taskin.ads, s-intman-solaris.adb, a-sytaco.adb, s-vxwext-kernel.adb,
+ 	s-mudido-affinity.adb, a-sytaco.ads, s-vxwext-kernel.ads, s-taprob.adb,
+ 	s-intman-mingw.adb, s-taprob.ads, s-osinte-kfreebsd-gnu.ads,
+ 	s-osinte-dummy.ads, s-osinte-gnu.adb, s-osinte-rtems.adb, s-interr.adb,
+ 	s-inmaop.ads, s-vxwext-rtp.adb, s-osinte-gnu.ads, s-osinte-rtems.ads,
+ 	a-synbar-posix.adb, s-interr.ads, s-taspri-posix-noaltstack.ads,
+ 	s-vxwext-rtp.ads, a-synbar-posix.ads, a-extiin.ads, s-osinte-posix.adb,
+ 	s-tpinop.adb, s-tasres.ads, s-tpinop.ads, a-disedf.ads, a-diroro.ads,
+ 	s-linux-alpha.ads, a-tasatt.adb, s-solita.adb, a-intnam-solaris.ads,
+ 	a-tasatt.ads, s-solita.ads, s-tasinf-solaris.adb, s-tasinf-solaris.ads,
+ 	s-vxwork-arm.ads, s-tpopsp-posix-foreign.adb, s-intman-dummy.adb,
+ 	s-intman.ads, s-stusta.adb, s-stusta.ads, s-intman-posix.adb,
+ 	s-tpopsp-vxworks.adb, s-inmaop-dummy.adb, s-taspri-mingw.ads,
+ 	a-intnam-darwin.ads, s-osinte-aix.adb, s-osinte-dragonfly.adb,
+ 	s-osinte-aix.ads, s-tasinf-mingw.adb, s-osinte-dragonfly.ads,
+ 	s-linux-hppa.ads, s-osinte-x32.adb, s-inmaop-posix.adb,
+ 	s-tasinf-mingw.ads, s-intman-vxworks.adb, s-linux-mips.ads,
+ 	s-intman-vxworks.ads, s-osinte-android.adb, s-tasinf-linux.adb,
+ 	s-osinte-android.ads, s-vxwork-ppc.ads, s-tasinf-linux.ads,
+ 	a-dispat.adb, a-dispat.ads, s-tadert.adb, g-thread.adb, s-tadert.ads,
+ 	g-thread.ads, a-intnam-hpux.ads, s-linux-android.ads, s-tataat.adb,
+ 	a-exetim.ads, s-tataat.ads, a-reatim.adb, a-reatim.ads, thread.c,
+ 	g-boubuf.adb, s-osinte-freebsd.adb, g-boubuf.ads, s-osinte-freebsd.ads,
+ 	s-tasuti.adb, s-taspri-dummy.ads, a-exetim-mingw.adb, s-linux-x32.ads,
+ 	s-tasuti.ads, g-signal.adb, a-exetim-mingw.ads, s-interr-sigaction.adb,
+ 	g-signal.ads, s-osinte-hpux.ads, a-intnam-vxworks.ads,
+ 	s-osinte-hpux-dce.adb, s-taspri-posix.ads, s-osinte-hpux-dce.ads,
+ 	s-tasinf-vxworks.ads, g-tastus.ads, s-tpopsp-tls.adb,
+ 	s-taprop-solaris.adb, a-retide.adb, a-exetim-darwin.adb, a-retide.ads,
+ 	s-vxwext.adb, s-vxwext.ads, a-rttiev.adb, a-rttiev.ads, g-boumai.ads,
+ 	a-exetim-default.ads, s-taprop-mingw.adb, s-taspri-solaris.ads,
+ 	a-intnam-aix.ads: Move libgnarl sources to libgnarl subdir.
+ 
+ 2017-09-08  Arnaud Charlet <charlet@adacore.com>
+ 
+ 	* doc/share/conf.py, doc/share/latex_elements.py,
+ 	doc/share/ada_pygments.py, doc/Makefile: Improve support for Ada
+ 	highlighting.
+ 
+ 2017-09-08  Arnaud Charlet <charlet@adacore.com>
+ 
+ 	* gnat_rm.texi, gnat_ugn.texi,
+ 	doc/gnat_ugn/the_gnat_compilation_model.rst,
+ 	doc/gnat_ugn/getting_started_with_gnat.rst,
+ 	doc/gnat_ugn/inline_assembler.rst,
+ 	doc/gnat_ugn/building_executable_programs_with_gnat.rst,
+ 	doc/gnat_ugn/elaboration_order_handling_in_gnat.rst,
+ 	doc/gnat_ugn/about_this_guide.rst,
+ 	doc/gnat_ugn/platform_specific_information.rst,
+ 	doc/gnat_ugn/example_of_binder_output.rst,
+ 	doc/gnat_ugn/gnat_and_program_execution.rst,
+ 	doc/gnat_ugn/gnat_utility_programs.rst,
+ 	doc/gnat_rm/implementation_of_specific_ada_features.rst,
+ 	doc/gnat_rm/interfacing_to_other_languages.rst,
+ 	doc/gnat_rm/implementation_defined_aspects.rst,
+ 	doc/gnat_rm/intrinsic_subprograms.rst,
+ 	doc/gnat_rm/implementation_defined_characteristics.rst,
+ 	doc/gnat_rm/implementation_advice.rst,
+ 	doc/gnat_rm/implementation_defined_attributes.rst,
+ 	doc/gnat_rm/compatibility_and_porting_guide.rst,
+ 	doc/gnat_rm/standard_library_routines.rst,
+ 	doc/gnat_rm/the_gnat_library.rst,
+ 	doc/gnat_rm/implementation_defined_pragmas.rst,
+ 	doc/gnat_rm/representation_clauses_and_pragmas.rst,
+ 	doc/gnat_rm/standard_and_implementation_defined_restrictions.rst,
+ 	doc/gnat_rm/obsolescent_features.rst,
+ 	doc/gnat_rm/about_this_guide.rst,
+ 	doc/gnat_rm/the_implementation_of_standard_i_o.rst,
+ 	doc/gnat_rm/implementation_of_ada_2012_features.rst,
+ 	doc/gnat_ugn.rst,
+ 	doc/gnat_rm.rst: Update documentation.
+ 
+ 2017-09-08  Arnaud Charlet <charlet@adacore.com>
+ 
+ 	* s-dwalin.ads, s-dwalin.adb, s-trasym-dwarf.adb, s-objrea.ads,
+ 	s-objrea.adb, s-tsmona-linux.adb, s-tsmona-mingw.adb: New.
+ 	* gcc-interface/Makefile.in: Enable s-trasym-dwarf.adb on x86*linux.
+ 
+ 2017-09-08  Bob Duff  <duff@adacore.com>
+ 
+ 	* s-ststop.ads, s-ststop.adb, rtsfind.ads (String_Input_Tag):
+ 	New routine to read the Tag robustly.
+ 	* exp_attr.adb (Input): Change the expansion of 'Input,
+ 	in the class-wide case, to call String_Input_Tag instead of
+ 	String_Input_Blk_IO.
+ 
+ 2017-09-08  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* s-rident.ads (Restriction_Id): reorder enum
+ 	literals, so that Pure_Barriers is no longer in range of the
+ 	Cunit_Boolean_Restrictions subtype.
+ 
+ 2017-09-08  Nicolas Roche  <roche@adacore.com>
+ 
+ 	* a-taster.ads, a-taster.adb: Move to libgnarl
+ 	* gcc-interface/Makefile.in: Remove obsolete targets. Code cleanups.
+ 	Add support for files in libgnarl.
+ 
+ 2017-09-08  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_ch4.adb (Expand_N_Type_Conversion): Do not apply
+ 	accessibility check to an interface conversion, whose purpose
+ 	is to perform a pointer adjustment in a dispatching call.
+ 	* exp_ch6.adb (Expand_Call_JHelper): Add accessibility checks
+ 	when the actual is a construct that involves a dereference of an
+ 	expression that includes a formal of the enclosing subprogram,
+ 	In such cases, the accessibility level of the actual is that of
+ 	the corresponding formal, which is passed in as an additional
+ 	actual in the outer call.
+ 
+ 2017-09-08  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_intr.adb (Add_Source_Info): Do not decode
+ 	file names; they were not encoded in the first place.
+ 
+ 2017-09-08  Bob Duff  <duff@adacore.com>
+ 
+ 	* a-tags.adb (Internal_Tag): Unsuppress checks, so we get
+ 	exceptions instead of crashes. Check for absurdly long strings
+ 	and empty strings. Empty strings cause trouble because they can
+ 	have super-null ranges (e.g. 100..10), which causes Ext_Copy to
+ 	be empty, which causes an array index out of bounds.
+ 	* s-ststop.adb (Input): Unsuppress checks, so we get exceptions
+ 	instead of crashes.
+ 
+ 2017-09-08  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_util.adb (Is_CCT_Instance): allow use in
+ 	the context of protected types.
+ 
+ 2017-09-08  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* a-tigeli.adb: minor remove extra whitespace.
+ 
+ 2017-09-08  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* par-ch4.adb: Reformatting of an error message.
+ 
+ 2017-09-08  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_ch3.adb (Resolve_Name): Under ASIS mode analyze overloaded
+ 	identifiers to ensure their correct decoration of names on
+ 	aspect expressions.
+ 
+ 2017-09-08  Yannick Moy  <moy@adacore.com>
+ 
+ 	* exp_attr.adb (Expand_Loop_Entry_Attribute): Do
+ 	not skip a loop coming from source which is rewritten into a loop.
+ 
+ 2017-09-08  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* freeze.adb (Wrap_Imported_Subprogram): Indicate that the
+ 	wrapper has convention Ada, to prevent spurious warnings on
+ 	unconstrained array parameters.
+ 
+ 2017-09-08  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_prag.adb (Check_Variant): Use First_Non_Pragma/Next_Non_Pragma.
+ 	(Analyze_Pragma) <Pragma_Unchecked_Union>: Likewise.
+ 
+ 2017-09-08  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch6.adb (Freeze_Expr_Types): Rename Spec_Id into Def_Id.
+ 
+ 2017-09-08  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* exp_intr.adb (Append_Entity_Name): Move to ...
+ 	* sem_util.ads, sem_util.adb: ... here to share it.
+ 	(Subprogram_Name): New subprogram, to compute the name of the enclosing
+ 	subprogram/entity.
+ 	* errutil.adb (Error_Msg): Fill new field Node.
+ 	* erroutc.ads (Subprogram_Name_Ptr): New.
+ 	(Error_Msg_Object): New field Node.
+ 	* erroutc.adb (dmsg, Output_Msg_Text): Take new field Node into account.
+ 	* errout.adb (Error_Msg): New variant with node id parameter.
+ 	Fill new parameter Node when emitting messages. Revert previous
+ 	changes for Include_Subprogram_In_Messages.
+ 	* sem_ch5.adb (Check_Unreachable_Code): Supply Node parameter when
+ 	generating warning message.
+ 
+ 2017-09-08  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* par-ch4.adb (P_Iterated_Component_Association): Place construct
+ 	under -gnat2020 flag, given that it is a future feature of
+ 	the language.
+ 	* sem_aggr.adb (Resolve_Iterated_Component_Association): Mark
+ 	defining identifier as referenced to prevent spurious warnings:
+ 	corresponding loop is expanded into one or more loops whose
+ 	variable has the same name, and the expression uses those names
+ 	and not the original one.
+ 
+ 2017-09-08  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_elab.adb (Check_A_Call): Do not consider
+ 	references to internal variables for SPARK semantics.
+ 
+ 2017-09-08  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* inline.adb (In_Package_Spec): refine type of
+ 	the parameter from Node_Id to Entity_Id.
+ 
+ 2017-09-08  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* exp_ch5.adb (Expand_Formal_Container_Loop):
+ 	Reset the scope of the loop parameter after it is reanalyzed.
+ 
+ 2017-09-08  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_util.ads (Set_Rep_Info): New inline procedure.
+ 	* sem_util.adb (Set_Rep_Info): Implement it.
+ 	* sem_ch3.adb (Process_Subtype): If the case of a constraint present,
+ 	always copy the representation aspects onto the subtype.
+ 
+ 2017-09-08  Georges-Alex Jaloyan  <jaloyan@adacore.com>
+ 
+ 	* g-dynhta.adb, g-dynhta.ads (Get_First_Key, Get_Next_key):
+ 	Correction of the return type from access type to option type.
+ 	(Simple_HTable): Moving the Instance_Data to ads file.
+ 
+ 2017-09-08  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_prag.adb: Use System.Case_Util.To_Lower to simplify code.
+ 
+ 2017-09-08  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* opt.ads (Include_Subprogram_In_Messages): New variable.
+ 	* errout.ads (Current_Subprogram_Ptr): New variable.
+ 	* errout.adb (Error_Msg): Prepend current subprogram info
+ 	in messages if Include_Subprogram_In_Messages is set.
+ 	* sem_util.adb (elab code): Initialize Current_Subprogram_Ptr to
+ 	Current_Subprogram.
+ 	* gnat1drv.adb (Adjust_Global_Switches): Set
+ 	Include_Subprogram_In_Messages when -gnatdJ is set.
+ 	* debug.adb: Document and reserve -gnatdJ.
+ 
+ 2017-09-08  Georges-Axel Jaloyan  <jaloyan@adacore.com>
+ 
+ 	* g-dynhta.adb, g-dynhta.ads (Get_First_Key, Get_Next_Key): New
+ 	functions to iterate over simple hastables.
+ 	(Load_Factor_HTable): Remove obsolete and inefficient implementation.
+ 
+ 2017-09-08  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_ch6.adb (Unqual_BIP_Function_Call): Adding
+ 	missing checks on the presence of Entity() before checking the
+ 	entity attributes.
+ 
+ 2017-09-08  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch6.adb (Analyze_Expression_Function): Reorder some
+ 	statements, use local variable and remove unnecessary processing.
+ 
+ 2017-09-08  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_ch6.ads (Make_Build_In_Place_Iface_Call_In_Allocator): New
+ 	subprogram.
+ 	(Make_Build_In_Place_Iface_Call_In_Anonymous_Context): New subprogram.
+ 	(Make_Build_In_Place_Iface_Call_In_Object_Declaration): New
+ 	subprogram.
+ 	(Unqual_BIP_Iface_Function_Call): New subprogram.
+ 	* exp_ch6.adb (Replace_Renaming_Declaration_Id): New
+ 	subprogram containing code that was previously inside
+ 	Make_Build_In_Place_Call_In_Object_Declaration since it is also
+ 	required for one of the new subprograms.
+ 	(Expand_Actuals):
+ 	Invoke Make_Build_In_Place_Iface_Call_In_Anonymous_Context
+ 	(Expand_N_Extended_Return_Statement): Extend the
+ 	cases covered by an assertion on expected BIP object
+ 	declarations.
+ 	(Make_Build_In_Place_Call_In_Assignment):
+ 	Removing unused code; found working on this ticket.
+ 	(Make_Build_In_Place_Call_In_Object_Declaration): Move the code
+ 	that replaces the internal name of the renaming declaration
+ 	into the new subprogram Replace_Renaming_Declaration_Id.
+ 	(Make_Build_In_Place_Iface_Call_In_Allocator): New subprogram.
+ 	(Make_Build_In_Place_Iface_Call_In_Anonymous_Context):
+ 	New subprogram.
+ 	(Make_Build_In_Place_Iface_Call_In_Object_Declaration): New
+ 	subprogram.
+ 	(Unqual_BIP_Iface_Function_Call): New subprogram.
+ 	* exp_ch3.adb (Expand_N_Object_Declaration): Invoke the new
+ 	subprogram Make_Build_In_Place_Iface_Call_In_Object_Declaration.
+ 	* exp_attr.adb (Expand_N_Attribute_Reference): Invoke the new
+ 	subprogram Make_Build_In_Place_Iface_Call_In_Anonymous_Context.
+ 	* exp_ch4.adb (Expand_Allocator_Expression): Invoke the new
+ 	subprogram Make_Build_In_Place_Iface_Call_In_Allocator.
+ 	(Expand_N_Indexed_Component): Invoke the new subprogram
+ 	Make_Build_In_Place_Iface_Call_In_Anonymous_Context.
+ 	(Expand_N_Selected_Component): Invoke the new subprogram
+ 	Make_Build_In_Place_Iface_Call_In_Anonymous_Context.
+ 	(Expand_N_Slice): Invoke the new subprogram
+ 	Make_Build_In_Place_Iface_Call_In_Anonymous_Context.
+ 	* exp_ch8.adb (Expand_N_Object_Renaming_Declaration):
+ 	Invoke the new subprogram
+ 	Make_Build_In_Place_Iface_Call_In_Anonymous_Context.
+ 
+ 2017-09-08  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_disp.adb (Expand_Interface_Conversion): Fix handling of
+ 	access to interface types.  Remove also the accessibility check.
+ 
+ 2017-09-08  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch6.adb (Freeze_Expr_Types): Really freeze
+ 	all the types that are referenced by the expression.
+ 	(Analyze_Expression_Function): Call Freeze_Expr_Types for
+ 	a completion instead of manually freezing the type of the
+ 	expression.
+ 	(Analyze_Subprogram_Body_Helper): Do not call Freeze_Expr_Types here.
+ 
+ 2017-09-08  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_prag.adb (Replace_Discriminals_Of_Protected_Op):
+ 	New procedure, auxiliary to Expand_Pragma_Check, to handle
+ 	references to the discriminants of a protected type within a
+ 	precondition of a protected operation. This is needed because
+ 	the original precondition has been analyzed in the context of
+ 	the protected declaration, but in the body of the operation
+ 	references to the discriminants have been replaved by references
+ 	to the discriminants of the target object, and these references
+ 	are only created when expanding the protected body.
+ 
+ 2017-09-08  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Pragma): Issue more precise error messages on
+ 	Loop_Variant.
+ 
+ 2017-09-08  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_attr.adb (Build_Record_VS_Func): If the record is an
+ 	unchecked union, do not emit checks for its (non-existent)
+ 	discriminants, or for variant parts that depend on them.
+ 
+ 2017-09-08  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_ch4.adb (Find_Equality_Types.Try_One_Interp,
+ 	Find_Comparison_Type.Try_One_Interp): Add check for generic
+ 	instances.
+ 
+ 2017-09-08  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_ch3.adb, layout.adb, layout.ads, exp_attr.adb, debug.adb,
+ 	exp_pakd.adb, sem_prag.adb, gnat1drv.adb, targparm.adb, targparm.ads,
+ 	repinfo.adb, exp_ch6.adb, exp_aggr.adb, sem_eval.adb, sem_ch13.adb,
+ 	exp_ch3.adb: Remove references to Frontend_Layout_On_Target and
+ 	remaining references to AAMP_On_Target.
+ 
+ 2017-09-08  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* style.adb: Fix typo.
+ 
+ 2017-09-08  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* einfo.adb (Underlying_Type): Add missing support for class-wide
+ 	types that come from the limited view.
+ 	* exp_attr.adb (Attribute_Address): Check class-wide type
+ 	interfaces using the underlying type to handle limited-withed
+ 	types.
+ 	(Attribute_Tag): Check class-wide type interfaces using
+ 	the underlying type to handle limited-withed types.
+ 
+ 2017-09-08  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_ch5.adb (Expand_Predicated_Loop): Handle properly a loop
+ 	over a subtype of a type with a static predicate, taking into
+ 	account the predicate function of the parent type and the bounds
+ 	given in the loop specification.
+ 	* sem_ch3.adb (Inherit_Predicate_Flags): For qn Itype created for
+ 	a loop specification that is a subtype indication whose type mark
+ 	is a type with a static predicate, inherit predicate function,
+ 	used to build case statement for rewritten loop.
+ 
+ 2017-09-08  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* lib-load.adb: Modify printing of error message to exclude file
+ 	line number.
+ 
+ 2017-09-08  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* inline.adb (Can_Be_Inlined_In_GNATprove_Mode):
+ 	don't inline subprograms declared in both visible and private
+ 	parts of a package.
+ 	(In_Package_Spec): previously In_Package_Visible_Spec; now
+ 	detects subprograms declared both in visible and private parts
+ 	of a package spec.
+ 
+ 2017-09-08  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_util.adb (Build_Invariant_Procedure_Declaration): If
+ 	the type is an anonymous array in an object declaration, whose
+ 	component type has an invariant, use the object declaration
+ 	as the insertion point for the invariant procedure, given that
+ 	there is no explicit type declaration for an anonymous array type.
+ 
+ 2017-09-08  Bob Duff  <duff@adacore.com>
+ 
+ 	* a-cbprqu.ads, a-cbdlli.adb: Suppress warnings.
+ 
+ 2017-09-08  Bob Duff  <duff@adacore.com>
+ 
+ 	* a-strfix.adb (Trim): Compute Low and High only if needed.
+ 
+ 2017-09-08  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* lib-load.adb (Load_Main_Source): Add error output in the case a
+ 	source file is missing.
+ 
+ 2017-09-08  Bob Duff  <duff@adacore.com>
+ 
+ PR ada/80888
+ 	* a-textio.adb, a-witeio.adb, a-ztexio.adb (Set_WCEM): Use
+ 	Default_WCEM by default (i.e. if the encoding is not specified
+ 	by the Form string).
+ 
+ 2017-09-08  Bob Duff  <duff@adacore.com>
+ 
+ 	* s-trasym.ads (Hexa_Traceback): If
+ 	Suppress_Hex is True, print "..." instead of a hexadecimal
+ 	address.
+ 	* s-trasym.adb: Ignore No_Hex in this version.
+ 	Misc cleanup.
+ 
+ 2017-09-08  Bob Duff  <duff@adacore.com>
+ 
+ 	* debug.adb: Minor reformatting.
+ 
+ 2017-09-08  Bob Duff  <duff@adacore.com>
+ 
+ 	* a-cbdlli.adb, a-cohama.adb, a-cohase.adb (Copy): Rewrite the
+ 	code so it doesn't trigger an "uninit var" warning.
+ 
+ 2017-09-08  Nicolas Roche  <roche@adacore.com>
+ 
+ 	* s-hibaen.ads: Remove obsolete file.
+ 
+ 2017-09-08  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* a-locale.ads: Add comment explaining the state of this package.
+ 
+ 2017-09-08  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_util.adb (Is_CCT_Instance): Allow calls in the context
+ 	of packages.
+ 	* sem_prag.ads, sem_prag.adb (Find_Related_Declaration_Or_Body):
+ 	allow calls in the context of package spec (for pragma
+ 	Initializes) and bodies (for pragma Refined_State).
+ 
+ 2017-09-08  Bob Duff  <duff@adacore.com>
+ 
+ 	* checks.adb (Insert_Valid_Check): Copy the Do_Range_Check flag to the
+ 	new Exp.
+ 
+ 2017-09-08  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* debug.adb (dA): Adjust comment.
+ 	* gnat1drv.adb (Gnat1drv): Likewise.
+ 	* opt.ads (List_Representation_Info_Extended): New variable.
+ 	* repinfo.adb (List_Record_Info): Split implementation into...
+ 	(Compute_Max_Length): ...this.	Recurse on records if requested.
+ 	(List_Record_Layout): Likewise.
+ 	* switch-c.adb (Scan_Front_End_Switches) <'R'>: Use case
+ 	statement, accept '0' and set List_Representation_Info_Extended
+ 	on 'e'.
+ 	* usage.adb (Usage): Document new -gnatRe variant.
+ 
+ 2017-09-08  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Pragma, case Default_Storage_Pool):
+ 	Do not save the given entity in the global variable Default_Pool
+ 	if the pragma appears within a generic unit.
+ 
+ 2017-09-08  Bob Duff  <duff@adacore.com>
+ 
+ 	* errout.adb (Delete_Warning): Do not
+ 	decrement Warnings_Treated_As_Errors. This is called before
+ 	Warnings_Treated_As_Errors has been incremented to account for
+ 	this warning. Decrementing it here can lead to negative values
+ 	of Warnings_Treated_As_Errors, raising Constraint_Error in
+ 	checks-on builds, and causing the compiler to return an error
+ 	code in checks-off builds.
+ 
+ 2017-09-08  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_util.ads, sem_util.adb (Is_CCT_Instance): Only expect
+ 	entities of named concurrent types as Ref_Id and not of anonymous
+ 	concurrent objects (because callers already know when a conversion
+ 	is necessary and can easily do it); also, do not expect protected
+ 	types or protected objects as Context_Id (because no flow-related
+ 	SPARK pragmas are attached there); reflect these changes in a
+ 	more precise comment.
+ 
+ 2017-09-08  Olivier Hainque  <hainque@adacore.com>
+ 
+ 	* g-altive.ads: Add documentation.
+ 
+ 2017-09-08  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_util.ads, debug.adb: Minor comment fix.
+ 	* erroutc.ads: Comment fix.
+ 
+ 2017-09-08  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch12.adb (Validate_Array_Type_Instance): Suppress check
+ 	for compatibility of component types of formal and actual in an
+ 	instantiation of a child unit,	when the component type of the
+ 	formal is itself a formal of an enclosing generic.
+ 
+ 2017-09-08  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_util.ads, sem_util.adb (Is_CCT_Instance): moved from
+ 	sem_prag.adb to make it available for GNATprove; for concurrent
+ 	types replace custom scope climbing with Scope_Same_Or_Within; for
+ 	single concurrent objects add scope climbing (with Scope_Within),
+ 	which was not there (that's the primary semantic change of this
+ 	commit); also, when comparing a single concurrent object with
+ 	its corresponding concurrent type rely on equality of types,
+ 	not of objects (because that's simpler to code).
+ 	* sem_prag.adb (Is_CCT_Instance): lifted to sem_util.ads.
+ 	(Analyze_Global_Item): adjust special-casing of references to the
+ 	current instance of a concurrent unit in the Global contracts
+ 	of task types and single tasks objects; similar for references
+ 	in the protected operations and entries of protected types and
+ 	single protected objects (in all these cases the current instance
+ 	behaves as an implicit parameter and must not be mentioned in
+ 	the Global contract).
+ 
+ 2017-09-08  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* exp_ch6.adb (Expand_Call_Helper): Introduce temporary for
+ 	function calls returning a record within a subprogram call,
+ 	for C generation.
+ 
+ 2017-09-08  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch8.adb (Find_Expanded_Name): Handle properly an expanded
+ 	name that designates the current instance of a child unit in its
+ 	own body and appears as the prefix of a reference to an entity
+ 	local to the child unit.
+ 	* exp_ch6.adb, freeze.adb, sem_ch3.adb, sem_prag.adb, sem_util.adb:
+ 	Minor reformatting.
+ 
+ 2017-09-08  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Equality_Op): Do not warn on comparisons that
+ 	may be intentional.
+ 
+ 2017-09-08  Tristan Gingold  <gingold@adacore.com>
+ 
+ 	* sem_warn.adb (Check_Unused_Withs): Remove test that disabled
+ 	warnings on internal units in configurable run time mode.
+ 
+ 2017-09-08  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_ch3.adb (Build_Derived_Private_Type): Inherit
+ 	representation items from interfaces that the derived type
+ 	implements, not just from the parent type.
+ 	* sem_util.ads, sem_util.adb (Abstract_Interface_List): Change
+ 	this to return an empty list when there are no interfaces.
+ 	* einfo.ads, sem_ch13.adb: Minor comment fixes.
+ 	* sem_attr.adb: Minor comment fix.
+ 
+ 2017-09-08  Doug Rupp  <rupp@adacore.com>
+ 
+ 	* sigtramp-vxworks.c [i386]: Adjust the kernel context for
+ 	x86-vx7.
+ 
+ 2017-09-08  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* exp_ch4.adb (Expand_N_Allocator): Generate a
+ 	call to Allocate_Any_Controlled when the allocation does not
+ 	require any initialization.
+ 
+ 2017-09-08  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_util.adb (Copy_Node_With_Replacement):
+ 	Update the Renamed_Object field of a replicated object renaming
+ 	declaration.
+ 
+ 2017-09-08  Patrick Bernardi  <bernardi@adacore.com>
+ 
+ 	* exp_ch9.adb (Is_Pure_Barrier): Allow type
+ 	conversions and components of objects. Simplified the detection
+ 	of the Count attribute by identifying the corresponding run-time
+ 	calls.
+ 
+ 2017-09-08  Yannick Moy  <moy@adacore.com>
+ 
+ 	* exp_ch9.adb, exp_disp.adb, repinfo.adb, sem_ch12.adb, sem_dim.adb,
+ 	sem_type.adb, sinfo.ads: Minor reformatting.
+ 
+ 2017-09-08  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* freeze.adb (Has_Incomplete_Compoent): New predicate, subsidiary
+ 	of Freeze_Profile, used to inhibit the freezing of the profile
+ 	of an expression function declared within a nested package, when
+ 	some type in the profile depends on a private type declared in
+ 	an enclosing package.
+ 
+ 2017-09-08  Bob Duff  <duff@adacore.com>
+ 
+ 	* gnat1drv.adb (Gnat1drv): Do not set the Force_ALI_Tree_File flag in
+ 	the subunit case. It's still OK to set it in the "missing subunits"
+ 	case, because that won't cause the obsolete .ali files that cause
+ 	confusion.
+ 
+ 2017-09-08  Bob Duff  <duff@adacore.com>
+ 
+ 	* sinput-l.adb: Remove unused "with Unchecked_Conversion;". It's
+ 	unclear why this didn't cause a warning.
+ 	* a-uncdea.ads, a-unccon.ads: Add "Ada." to names in the
+ 	pragmas. It's unclear why this didn't cause an error.
+ 
+ 2017-09-08  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* exp_spark.adb (Expand_SPARK_N_Object_Renaming_Declaration):
+ 	Reimplemented.
+ 	(Expand_SPARK_Potential_Renaming): Code clean up.
+ 	* sem_prag.adb (Analyze_Initialization_Item): Add a guard in case
+ 	the item does not have a proper entity.
+ 	(Analyze_Input_Item): Add a guard in case the item does not have a
+ 	proper entity.
+ 	(Collect_States_And_Objects): Include object renamings in the
+ 	items being collected.
+ 	(Resolve_State): Update the documentation of this routine.
+ 	* sem_util.adb (Entity_Of): Add circuitry to handle
+ 	renamings of function results.
+ 	(Remove_Entity): New routine.
+ 	(Remove_Overloaded_Entity): Take advantage of factorization.
+ 	* sem_util.ads (Entity_Of): Update the documentation
+ 	of this routine.
+ 	(Remove_Entity): New routine.
+ 	(Remove_Overloaded_Entity): Update the documentation of this
+ 	routine.
+ 
+ 2017-09-08  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* repinfo.adb (List_Record_Info): During first loop,
+ 	do not override the normalized position and first bit
+ 	if they have already been set.	Move fallback code
+ 	for the packed case to the case where it belongs.
+ 	* sem_ch13.adb (Adjust_Record_For_Reverse_Bit_Order):
+ 	Also adjust the normalized position of components.
+ 	(Adjust_Record_For_Reverse_Bit_Order_Ada_95): Likewise.
+ 
+ 2017-09-08  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_disp.adb (Make_DT, Set_All_DT_Position): Handle properly
+ 	the placement of a primitive operation O that renames an operation
+ 	R declared in an inner package, and which is thus not a primitive
+ 	of the dispatching type of O. In this case O is a new primitive
+ 	and does not inherit its dispatch table position from R (which
+ 	has none).
+ 
+ 2017-09-08  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_dim.adb (Analyze_Dimension_If_Expression,
+ 	Analyze_Dimension_Case_Expression): new subprograms to verify
+ 	the dimensional correctness of Ada2012 conditional expressions,
+ 	and set properly the dimensions of the construct.
+ 	* sem_res.adb (Resolve_If_Expression, Resolve_Case_Expression)):
+ 	call Analyze_Dimension.
+ 
+ 2017-09-08  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_type.adb (Expand_Interface_Conversion): Prevent an infinite
+ 	loop on an interface declared as a private extension of another
+ 	synchronized interface.
+ 
+ 2017-09-08  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch12.adb (Check_Generic_Parent): New procedure within
+ 	Analyze_Associations, to handle actual packages that depend on
+ 	previous instances.  If a package IAP that is an instantiation is
+ 	used as an actual in a subsequent instantiation SI in the same
+ 	scope, and IAP has a body, IAP must be frozen before SI. If
+ 	the generic parent of IAP is itself declared in a previous
+ 	instantiation in the same scope, that instantiation must also
+ 	be frozen before SI.
+ 	(Install_Body): Prevent double insertion of freeze node for
+ 	instance.
+ 
+ 2017-09-08  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_prag.adb (Resolve_State): Update the
+ 	comment on documentation. Generate a reference to the state once
+ 	resolution takes place.
+ 
+ 2017-09-08  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch13.adb (Analyze_Aspect_Specifications, case
+ 	Linker_Section): If the aspect applies to an object declaration
+ 	with explicit initialization, do not delay the freezing of the
+ 	object, to prevent access-before-elaboration in the generated
+ 	initialization code.
+ 
+ 2017-09-08  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* a-wtdeio.adb (Put, all versions): Use Long_Long_Integer
+ 	(Integer_Value (Item)) when the size of the fixed decimal type
+ 	is larger than Integer.
+ 
+ 2017-09-07  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/82127
+ 	* gcc-interface/decl.c (copy_and_substitute_in_layout): Put the fields
+ 	in order of increasing position in more cases.
+ 
+ 2017-09-07  Yannick Moy  <moy@adacore.com>
+ 
+ 	* a-exetim-mingw.ads: Add contract Global=>null
+ 	on all operations that are modeled as having no read or write
+ 	of global variables in SPARK.
+ 
+ 2017-09-07  Raphael Amiard  <amiard@adacore.com>
+ 
+ 	* a-chtgop.adb, a-chtgop.ads (Generic_Iteration_With_Position): Added
+ 	to Hmaps.Generic_Ops.
+ 	* a-cohama.adb (Ada.Containers.Hmaps.Iterate): Pass proper position in
+ 	cursors.
+ 	* a-cihama.adb (Ada.Containers.Indefinite_Hmaps.Iterate): Pass pos in
+ 	cursors.
+ 	* a-cohase.adb (Ada.Containers.Hashed_Sets.Iterate): Pass proper
+ 	position in cursors.
+ 
+ 2017-09-07  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_elab.adb (Check_Task_Activation): Adding switch -gnatd.y to
+ 	allow disabling the generation of implicit pragma Elaborate_All
+ 	on task bodies.
+ 
+ 2017-09-07  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_disp.adb (Make_Tags): Avoid suffix counter
+ 	in the external name of the elaboration flag. Required to fix
+ 	the regressions introduced by the initial version of this patch.
+ 
+ 2017-09-07  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_ch6.adb (Analyze_Function_Return): Do not
+ 	insert an explicit conversion to force the displacement of the
+ 	"this" pointer to reference the secondary dispatch table in the
+ 	case where the return statement is returning a raise expression,
+ 	as in "return raise ...".
+ 
+ 2017-09-07  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_disp.adb (Is_User_Defined_Equality): Removed procedure.
+ 	* sem_util.ads, sem_util.adb (Is_User_Defined_Equality): Copied
+ 	procedure from sem_disp.adb.
+ 	* sem_ch12.ads (Get_Unit_Instantiation_Node): rename Package
+ 	with Unit.
+ 	* sem_ch12.adb (Get_Unit_Instantiation_Node): function extended to
+ 	return the instantiation node for subprograms. Update references
+ 	to Get_Unit_Instantiation_Node.
+ 	* sem_ch7.adb (Install_Parent_Private_Declarations): update
+ 	reference to Get_Unit_Instantiation_Node.
+ 	* exp_dist.adb (Build_Package_Stubs): update reference to
+ 	Get_Unit_Instantiation_Node.
+ 	* sem_ch9.adb: minor typo in comment.
+ 	* lib-xref-spark_specific.adb
+ 	(Traverse_Declaration_Or_Statement): traverse into task type
+ 	definition.
+ 
+ 2017-09-07  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_dim.adb (Analyze_Dimension_Type_Conversion): New procedure
+ 	to handle properly various cases of type conversions where the
+ 	target type and/or the expression carry dimension information.
+ 	(Dimension_System_Root); If a subtype carries dimension
+ 	information, obtain the source parent type that carries the
+ 	Dimension aspect.
+ 
+ 2017-09-07  Dmitriy Anisimkov  <anisimko@adacore.com>
+ 
+ 	* g-socket.adb, g-socket.ads (GNAT.Sockets.To_Ada): New routine.
+ 
+ 2017-09-07  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_attr.adb (Expand_N_Attribute_Reference, case 'Constrained):
+ 	If the prefix is a reference to an object, rewrite it as an
+ 	explicit dereference, as required by 3.7.2 (2) and as is done
+ 	with most other attributes whose prefix is an access value.
+ 
+ 2017-09-07  Bob Duff  <duff@adacore.com>
+ 
+ 	* par-ch13.adb: Set the Inside_Depends flag if we are inside a
+ 	Refined_Depends aspect.
+ 	* par-ch2.adb: Set the Inside_Depends flag if we are inside a
+ 	Refined_Depends pragma.
+ 	* scans.ads: Fix documentation of Inside_Depends flag.
+ 	* styleg.adb, styleg.ads: Minor reformatting and comment fixes.
+ 
+ 2017-09-07  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* exp_ch7.adb (Insert_Actions_In_Scope_Around):
+ 	Account for the case where the are no lists to insert, but the
+ 	secondary stack still requires management.
+ 	* a-chtgop.adb, a-cihama.adb, a-cohama.adb, a-cohase.adb, a-tags.adb,
+ 	comperr.adb, einfo.adb, exp_aggr.adb, exp_ch3.adb, exp_disp.adb,
+ 	lib-xref.adb, lib-xref-spark_specific.adb, sem_ch12.adb, sem_ch13.adb,
+ 	sem_ch6.adb, sem_dim.adb, sem_dim.ads, sem_elab.adb, sem_prag.adb:
+ 	Minor reformatting.
+ 
+ 2017-09-07  Vincent Celier  <celier@adacore.com>
+ 
+ 	* clean.adb: Do not get the target parameters before calling
+ 	gprclean.
+ 
+ 2017-09-07  Nicolas Roche  <roche@adacore.com>
+ 
+ 	* s-osinte-solaris-posix.ads: Removed.
+ 
+ 2017-09-07  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_prag.adb (Collect_States_And_Objects): Detect also instances of
+ 	single concurrent objects.
+ 
+ 2017-09-07  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* s-regexp.ads: Fix documentation of the globbing grammar.
+ 
+ 2017-09-07  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* a-tags.ads, einfo.ads, exp_disp.ads: Minor reformatting.
+ 
+ 2017-09-07  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* gnat1drv.adb (Gnat1drv): Enable pragma Ignore_Pragma (Global)
+ 	in CodePeer mode, to support more legacy code automatically.
+ 
+ 2017-09-07  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_disp.adb (Replace_Formals): If thr formal is classwide,
+ 	and thus not a controlling argument, preserve its type after
+ 	rewriting because it may appear in an nested call with a classwide
+ 	parameter.
+ 
+ 2017-09-07  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* comperr.adb (Delete_SCIL_Files): Handle case of
+ 	N_Package_Instantiation.
+ 
+ 2017-09-07  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch10.adb (Remove_Private_With_Clause): If a private with
+ 	clause for a unit U appears in a context that includes a regular
+ 	with_clause on U, rewrite the redundant private clause into a null
+ 	statement, rather than removing it altogether from the context,
+ 	so that ASIS tools can reconstruct the original source.
+ 
+ 2017-09-07  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch13.adb (Check_Aspect_At_Freeze_Point): The expression
+ 	for aspect Small can be of any real type (not only a universal
+ 	real literal) as long as it is a static constant.
+ 
+ 2017-09-07  Thomas Quinot  <quinot@adacore.com>
+ 
+ 	* par_sco.adb: Minor reformatting.
+ 
+ 2017-09-07  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* s-parame-ae653.ads: Removed.
+ 
+ 2017-09-07  Nicolas Roche  <roche@adacore.com>
+ 
+ 	* s-traces-default.adb, s-trafor-default.adb, s-trafor-default.ads,
+ 	s-traces.adb, s-traces.ads, s-tratas-default.adb, s-tfsetr-default.adb,
+ 	s-tfsetr-vxworks.adb, s-tratas.adb, s-tratas.ads, s-tasuti.adb,
+ 	s-parame-hpux.ads, s-tassta.adb, s-taasde.adb, s-tasren.adb,
+ 	s-taprob.adb, a-caldel.adb, s-parame.ads, Makefile.rtl, s-tpobop.adb,
+ 	s-taenca.adb, s-parame-vxworks.ads: Remove support for System.Traces.
+ 
+ 2017-09-07  Yannick Moy  <moy@adacore.com>
+ 
+ 	* a-ngelfu.ads Add preconditions to all functions
+ 	listed in Ada RM A.5.1(19-33) as having constraints on inputs.
+ 
+ 2017-09-07  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* lib-xref.adb (Generate_Reference): ignore
+ 	references to entities which are Part_Of single concurrent
+ 	objects.
+ 
+ 2017-09-07  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch7.adb (Hide_Public_Entities): Add paragraph to main
+ 	comment.
+ 
+ 2017-09-07  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* a-taside.adb (Activation_Is_Complete): Raise Program_Error if
+ 	Null_Task_Id is passed.
+ 
+ 2017-09-07  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* einfo.ads, einfo.adb (Access_Disp_Table_Elab_Flag): New
+ 	attribute. Defined for record types and subtypes.
+ 	* exp_ch3.ads (Init_Secondary_Tags): Adding new formal
+ 	(Init_Tags_List) to facilitate generating separate code in the
+ 	IP routine to initialize the object components and for completing
+ 	the elaboration of dispatch tables.
+ 	* exp_ch3.adb (Build_Init_Procedure): Improve the code
+ 	generated in the IP routines by means of keeping separate
+ 	the initialization of the object components from the
+ 	initialization of its dispatch tables.	(Init_Secondary_Tags):
+ 	Adding new formal (Init_Tags_List) and adjusting calls to
+ 	Ada.Tags.Set_Dynamic_Offset_To_Top since it has a new formal;
+ 	adjusting also calls to Ada.Tags.Register_Interface_Offset
+ 	because the type of one of its formals has been changed.
+ 	* a-tags.ads, a-tags.adb (Register_Interface_Offset): Profile
+ 	modified. Instead of receiving a pointer to an object this
+ 	routine receives now a primary tag.
+ 	(Set_Dyanic_Offset_To_Top): Profile modified. This routine receives an
+ 	additional formal: the tag of the primary dispatch table.
+ 	* exp_disp.ads (Elab_Flag_Needed): New subprogram.
+ 	* exp_disp.adb (Elab_Flag_Needed): New subprogram.
+ 	(Make_Tags): Adding the declaration of the elaboration flag (if needed).
+ 	* exp_aggr.adb (Build_Record_Aggr_Code): Adding actual of new
+ 	formal in calls to Init_Secondary_Tags.
+ 
+ 2017-09-07  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* ghost.adb (Mark_And_Set_Ghost_Instantiation.Check_Ghost_Actuals): New
+ 	subprogram.
+ 	* sem_prag.adb (Pragma_Ghost): Add missing support for ghost
+ 	applied to generic subprograms.
+ 
+ 2017-09-07  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_util.adb (Check_Part_Of_Reference): rename Conc_Typ to Conc_Obj
+ 	(because it refers to the anonymous concurrent object, not its type);
+ 	fix condition for emitting error message about task/protected type,
+ 
+ 2017-09-07  Bob Duff  <duff@adacore.com>
+ 
+ 	* binde.adb (Debug_Flag_Old): If both -do and -dp
+ 	are specified, behave as if just -do was specified, rather than
+ 	using a mixture.
+ 
+ 2017-09-07  Nicolas Roche  <roche@adacore.com>
+ 
+ 	* system-vxworks-sparcv9.ads, s-vxwork-m68k.ads, s-vxwork-mips.ads,
+ 	system-vxworks-m68k.ads, system-vxworks-mips.ads: Removed.
+ 
+ 2017-09-07  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_prag.adb (Find_Role): The Global_Seen flag
+ 	is now consulted not only for abstract states and variables,
+ 	but for all kinds of items.
+ 	(Collect_Subprogram_Inputs_Outputs): Do not process formal
+ 	generic parameters, because unlike ordinary formal parameters,
+ 	generic formals only act as input/ outputs if they are explicitly
+ 	mentioned in a Global contract.
+ 
+ 2017-09-07  Yannick Moy  <moy@adacore.com>
+ 
+ 	* ghost.adb (Check_Ghost_Context): Do not err on ghost code inside
+ 	predicate procedure. Check predicate pragma/aspect with Ghost entity.
+ 	* exp_ch6.adb, par-ch6.adb, sem_ch13.adb, sem_prag.adb; Minor
+ 	reformatting.
+ 
+ 2017-09-07  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_aggr.adb: Move New_Copy_Tree_And_Dimensions to sem_dim
+ 	(code cleanup);
+ 	* sem_ch3.adb (Build_Derived_Record_Type):i Call
+ 	Copy_Dimensions_Of_Components after creating the copy of the
+ 	record declaration.
+ 	* sem_dim.ads, sem_dim.adb (Copy_Dimensions_Of_Components): For a
+ 	derived recor type, copy the dikensions if any of each component
+ 	of the parent record to the corresponding component declarations
+ 	of the derived record. These expressions are used among other
+ 	things as default values in aggregates with box associations.
+ 	* a-dirval-mingw.adb, g-cgi.adb, gnatcmd.adb, lib-xref.adb,
+ 	repinfo.adb, sem_attr.adb, sem_ch10.adb, sem_ch6.adb, sem_prag.adb:
+ 	Minor reformatting.
+ 
+ 2017-09-07  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_util.adb: Remove extra space after THEN.
+ 
+ 2017-09-07  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch7.adb (Has_Referencer): For a subprogram renaming,
+ 	also mark the renamed subprogram as referenced.
+ 
+ 2017-09-07  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* par-ch6.adb (P_Subprogram): Improve error message on null
+ 	procedure with misplaced aspect specification, which the parser
+ 	first attempts to interpret as a malformed expression function.
+ 
+ 2017-09-07  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* sem_attr.adb (Analyze_Attribute_Old_Result):
+ 	Allow attributes Result and Old in the case of an expression
+ 	function.
+ 
+ 2017-09-07  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_prag.adb (Process_Atomic_Independent_Shared_Volatile): Propagate
+ 	Volatile to subcomponents.
+ 
+ 2017-09-07  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_ch7.adb (Find_Last_Init): Check for the
+ 	case where a build-in-place function call has been replaced by a
+ 	'Reference attribute reference.
+ 
+ 2017-09-07  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch7.adb (Has_Referencer): Recurse on Actions of freeze
+ 	nodes.
+ 
+ 2017-09-07  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_ch6.adb (Make_Build_In_Place_Call_In_Object_Declaration,
+ 	Make_Build_In_Place_Call_In_Anonymous_Context): Do not use the
+ 	secondary stack for all functions that return limited tagged
+ 	types -- just do it for dispatching calls.  Misc cleanup.
+ 	* sem_util.ads, sem_util.adb (Unqual_Conv): New function to
+ 	remove qualifications and type conversions. Fix various bugs
+ 	where only a single level of qualification or conversion was
+ 	removed, so e.g. "T1'(T2'(X))" would incorrectly return "T2'(X)"
+ 	instead of "X".
+ 	* checks.adb, exp_util.ads, exp_util.adb, sem_res.adb: Misc related
+ 	cleanup.
+ 
+ 2017-09-07  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch6.adb (setr_Actual_Subtypes): Within a predicate function
+ 	do not create actual subtypes that may generate further predicate
+ 	functions.
+ 	* sem_ch13.adb (Build_Predicate_Functions): Indicate that entity
+ 	of body is a predicate function as well.
+ 	(Resolve_Aspect_Expressions, Resolve_Name): For a component
+ 	association, only the expression needs resolution, not the name.
+ 	(Resolve_Aspect_Expressions, case Predicates): Construct and
+ 	analyze the predicate function declaration in the scope of the
+ 	type, before making the type and its discriminants visible.
+ 
+ 2017-09-06  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.c (warn_on_field_placement): Issue the warning
+ 	only if the record type itself comes from source.
+ 
+ 2017-09-06  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* sem_ch5.adb: Minor reformatting and a typo fix
+ 
+ 2017-09-06  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sinput-l.ads: minor remove extra period at the end of comment
+ 
+ 2017-09-06  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_prag.adb (Add_Item_To_Name_Buffer): remove support for
+ 	E_Discriminant.
+ 	(Find_Role): remove support for E_Discriminant.
+ 
+ 2017-09-06  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_ch6.adb (Expand_Simple_Function_Return):
+ 	Add missing implicit type conversion to force displacement of the
+ 	"this" pointer.
+ 
+ 2017-09-06  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_ch3.adb, sem_aux.adb, sem_res.adb: Minor reformatting.
+ 
+ 2017-09-06  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_ch12.adb (Analyze_Instance_And_Renamings): Refactor to set
+ 	global variable Ignore_SPARK_Mode_Pragmas_In_Instance only once.
+ 
+ 2017-09-06  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_ch8.adb: Change Assert to be consistent with
+ 	other similar ones.
+ 
+ 2017-09-06  Bob Duff  <duff@adacore.com>
+ 
+ 	* binde.adb (Find_Elab_Order): Do not run Elab_Old unless
+ 	requested. Previously, the -do switch meant "run Elab_New and
+ 	Elab_Old and use the order chosen by Elab_Old, possibly with
+ 	debugging printouts comparing the two orders."	Now it means
+ 	"do not run Elab_New." This is of use if there are bugs that
+ 	cause Elab_New to crash.
+ 	(Elab_Position, Num_Chosen): Change type to Nat, to avoid various
+ 	type conversions.
+ 	* ali.ads (Elab_Position): Change type to Nat, to avoid various
+ 	type conversions.
+ 
+ 2017-09-06  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_prag.adb (Check_Mode_Restriction_In_Enclosing_Context): Fix
+ 	reference to SPARK RM.
+ 
+ 2017-09-06  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* layout.adb: Use SSU short hand consistently throughout the file.
+ 
+ 2017-09-06  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* freeze.adb (Freeze_Record_Type)
+ 	<Sized_Component_Total_Round_RM_Size>: New local variable to
+ 	accumulate the rounded RM_Size of components.  Update it for
+ 	every component whose RM_Size is statically known.  Add missing
+ 	guard to check that bit packing is really required before issuing
+ 	the error about packing.  Swap condition for clarity's sake.
+ 	* sem_prag.adb (Usage_Error): Fix reference to SPARK RM in comment.
+ 
+ 2017-09-06  Fedor Rybin  <frybin@adacore.com>
+ 
+ 	* makeutl.adb, makeutl.ads, mlib.adb, mlib.ads, mlib-fil.adb,
+ 	mlib-fil.ads, mlib-prj.adb, mlib-prj.ads, mlib-tgt.adb, mlib-tgt.ads,
+ 	mlib-tgt-specific.adb, mlib-tgt-specific.ads,
+ 	mlib-tgt-specific-aix.adb, mlib-tgt-specific-darwin.adb,
+ 	mlib-tgt-specific-hpux.adb, mlib-tgt-specific-linux.adb,
+ 	mlib-tgt-specific-mingw.adb, mlib-tgt-specific-solaris.adb,
+ 	mlib-tgt-specific-vxworks.adb, mlib-tgt-specific-xi.adb, mlib-utl.adb,
+ 	mlib-utl.ads, prj.adb, prj.ads, prj-attr.adb, prj-attr.ads,
+ 	prj-attr-pm.adb, prj-attr-pm.ads, prj-com.ads, prj-conf.adb,
+ 	prj-conf.ads, prj-dect.adb, prj-dect.ads, prj-env.adb, prj-env.ads,
+ 	prj-err.adb, prj-err.ads, prj-ext.adb, prj-ext.ads, prj-makr.adb,
+ 	prj-makr.ads, prj-nmsc.adb, prj-nmsc.ads, prj-pars.adb, prj-pars.ads,
+ 	prj-part.adb, prj-part.ads, prj-pp.adb, prj-pp.ads, prj-proc.adb,
+ 	prj-proc.ads, prj-strt.adb, prj-strt.ads, prj-tree.adb, prj-tree.ads,
+ 	prj-util.adb, prj-util.ads, sinput-p.adb, sinput-p.ads: Remove obsolete
+ 	project manager sources.
+ 
+ 2017-09-06  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch5.adb (Analyze_Assigment): If the left-hand side is an
+ 	entity of a mutable type and the right-hand side is a conditional
+ 	expression, resolve the alternatives of the conditional using
+ 	the base type of the target entity, because the alternatives
+ 	may have distinct subtypes. This is particularly relevant if
+ 	the alternatives are aggregates.
+ 
+ 2017-09-06  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* checks.adb (Apply_Predicate_Check): If the expression is an
+ 	aggregate that is the RHS of an assignment, apply the check to
+ 	the LHS after the assignment, rather than to the aggregate. This
+ 	is more efficient than creating a temporary for the aggregate,
+ 	and prevents back-end crashes when the aggregate includes a
+ 	dynamic "others' association.
+ 
+ 2017-09-06  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_ch12.adb (Analyze_Instance_And_Renamings):
+ 	Set variable to ignore SPARK_Mode in instance before the analysis
+ 	of the generated package declaration.
+ 
+ 2017-09-06  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Call): Do not issue a
+ 	message for calls inside expression function, unless body was
+ 	seen and is candidate for inlining.
+ 
+ 2017-09-06  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_aux.adb (Is_Generic_Formal): Handle properly formal packages.
+ 	* sem_ch3.adb (Analyze_Declarations): In a generic subprogram
+ 	body. do not freeze the formals of the generic unit.
+ 
+ 2017-09-06  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* errout.adb (Error_Msg): Separate the
+ 	treatment for warning vs. style messages in inlinings and
+ 	instantiations. Prevents blowups on calls to Warn_Insertion for
+ 	style messages, which should not be called in that case because
+ 	Warning_Msg_Char is not set.
+ 
+ 2017-09-06  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_prag.adb (Check_VFA_Conflicts): Created
+ 	to group all Volatile_Full_Access checks relating to other
+ 	representation pragmas (Mark_Component_Or_Object): Created
+ 	to centeralize the flagging of attributes for the record type
+ 	component case, a pragma applied individually to a component, and
+ 	the object case.
+ 	(Process_Atomic_Independent_Shared_Volatile):
+ 	Add propagation of certain pragmas to record components and move
+ 	evaluation of VFA checks
+ 
+ 2017-09-06  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_prag.adb (Check_Postcondition_Use_In_Inlined_Subprogram):
+ 	Do not warn on conditions that are not obeyed for Inline_Always
+ 	subprograms, when assertions are not enabled.
+ 
+ 2017-09-06  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_util.adb (Unique_Entity): For abstract states return their
+ 	non-limited view.
+ 
+ 2017-09-06  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_ch12.adb (Copy_Generic_Node): When we copy a node
+ 	that is a proper body corresponding to a stub, we defer the
+ 	adjustment of the sloc until after the correct adjustment has
+ 	been computed. Otherwise, Adjust_Instantiation_Sloc will ignore
+ 	the adjustment, because it will be outside the range in (the old,
+ 	incorrect) S_Adjustment.
+ 	* inline.adb: Use named notation for readability and uniformity.
+ 	* sinput-l.adb: Minor improvements to debugging output printed
+ 	for Debug_Flag_L.
+ 	* sinput-l.ads (Create_Instantiation_Source): Minor comment
+ 	correction.
+ 
+ 2017-09-06  Vincent Celier  <celier@adacore.com>
+ 
+ 	* make.adb: Do not invoke gprbuild for -bargs -P.
+ 
+ 2017-09-06  Sylvain Dailler  <dailler@adacore.com>
+ 
+ 	* sem_eval.adb (Compile_Time_Known_Value_Or_Aggr): Adding a
+ 	case when Op is of kind N_Qualified_Expression. In this case,
+ 	the function is called recursively on the subexpression like in
+ 	other cases.
+ 	* make.adb: Minor reformatting
+ 
+ 2017-09-06  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* einfo.adb (Set_Linker_Section_Pragma): Modify
+ 	Set_Linker_Section_Pragma to be consistant with the "getter"
+ 	Linker_Section_Pragma.
+ 	* exp_ch5.adb (Expand_Formal_Container_Loop): Add proper error
+ 	checking for container loops so that the index cursor is not
+ 	directly changable by the user with the use of E_Loop_Parameter.
+ 	* sem_ch5.adb (Analyze_Block_Statement): Revert previous change.
+ 	* sem_warn.adb (Check_References): Revert previous change.
+ 
+ 2017-09-06  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_util.adb (Is_Displace_Call): Make sure it works for indirect
+ 	calls and the like.
+ 
+ 2017-09-06  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Depends_Global): Reinforce test on object
+ 	declarations to only consider valid uses of Global/Depends those on
+ 	single concurrent objects.
+ 
+ 2017-09-06  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch13.adb (Check_Record_Representation_Clause): Give an
+ 	error as soon as one of the specified components overlaps the
+ 	parent field.
+ 
+ 2017-09-06  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_prag.ads: minor fix typo in comment.
+ 
+ 2017-09-06  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_ch5.adb (Analyze_Block_Statement): Verify a block comes
+ 	from source before checking source references.
+ 	* sem_warn.adb (Check_References): Add check for internal block
+ 	before recursing.
+ 
+ 2017-09-06  Vincent Celier  <celier@adacore.com>
+ 
+ 	* make.adb, makeusg.adb, switch-m.adb, switch-m.ads, make_util.adb,
+ 	make_util.ads, sinput.adb, sinput.ads, clean.adb, gnatls.adb,
+ 	gnatname.adb: Remove the Project Manager from the GNAT tools.
+ 	* gcc-interface/Makefile.in: ditto.
+ 
+ 2017-09-06  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_util.ads: Minor comment fix.
+ 
+ 2017-09-06  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch12.adb (Analyze_Associations, case of Formal_Package):
+ 	Generate a freeze node for the actual of a formal package, if
+ 	the actual is declared in the same unit and has a corresponding
+ 	body, to prevent the current instance from being frozen before
+ 	the actual is.
+ 
+ 2017-09-06  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch7.adb (Entity_Table_Size): Change to nearest prime number.
+ 
+ 2017-09-06  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_warn.adb: Minor refactoring.
+ 
+ 2017-09-06  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* einfo.ads, einfo.adb (Get_Classwwide_Pragma): New utility,
+ 	to retrieve the inherited classwide precondition/postcondition
+ 	of a subprogram.
+ 	* freeze.adb (Freeze_Entity): Use Get_Classwide_Pragma when
+ 	freezing a subprogram, to complete the generation of the
+ 	corresponding checking code.
+ 
+ 2017-09-06  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* exp_util.adb (Is_Controlled_Indexing): New routine.
+ 	(Is_Displace_Call): Use routine Strip to remove indirections.
+ 	(Is_Displacement_Of_Object_Or_Function_Result): Code clean up. Add a
+ 	missing case of controlled generalized indexing.
+ 	(Is_Source_Object): Use routine Strip to remove indirections.
+ 	(Strip): New routine.
+ 
+ 2017-09-06  Bob Duff  <duff@adacore.com>
+ 
+ 	* sysdep.c (__gnat_has_cap_sys_nice): If HAVE_CAPABILITY is defined,
+ 	we include the proper header. Otherwise, we just declare the necessary
+ 	things from the capabilities library. This is so we can build on
+ 	machines without that library, while still enabling that library.
+ 	At run time, we're using weak symbols, so __gnat_has_cap_sys_nice will
+ 	simply return 0 if the library is not present, or not included
+ 	in the link.
+ 
+ 2017-09-06  Pierre-Marie de Rodat  <derodat@adacore.com>
+ 
+ 	* exp_dbug.adb (Debug_Renaming_Declaration): Do not create an encoding
+ 	for renamings that involve function calls in prefix form.
+ 
+ 2017-09-06  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_ch3.adb (Analyze_Subtype_Declaration):
+ 	Set Has_Delayed_Freeze on a subtype of an incomplete type.
+ 
+ 2017-09-06  Pierre-Marie de Rodat  <derodat@adacore.com>
+ 
+ 	* par_sco.adb (Extend_Statement_Sequence): When the accept statement
+ 	has no parameter specification and no entry index, use the entry name
+ 	as the end of the generated SCO statement.
+ 
+ 2017-09-06  Steve Baird  <baird@adacore.com>
+ 
+ 	* exp_util.adb (Side_Effect_Free): For CodePeer (only) treat
+ 	uses of 'Image and related attributes as having side effects in
+ 	order to avoid replicating such uses.
+ 	* pprint.ads (Expression_Image) Add new generic formal flag
+ 	Hide_Temp_Derefs.  The flag defaults to False; CodePeer will
+ 	(eventually) override the default.
+ 	* pprint.adb (Expression_Image) If the new flag is set, then
+ 	suppress the ".all" suffix when displaying a dereference whose
+ 	prefix is a use of a value-capturing compiler temp of the sort
+ 	generated by Expr_Util.Remove_Side_Effects .
+ 	* exp_attr.adb, g-catiio.adb, inline.adb, sem_attr.adb, sem_ch13.adb,
+ 	sem_ch7.adb, sem_dim.adb, sem_util.adb, sem_util.ads, sem_warn.adb:
+ 	Minor reformatting.
+ 	* inline.adb: Minor wording change.
+ 
+ 2017-09-06  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch7.adb: Update comment.
+ 
+ 2017-09-06  Yannick Moy  <moy@adacore.com>
+ 
+ 	* einfo.adb, einfo.ads (Is_Subprogram_Or_Entry): New predicate.
+ 	* inline.adb (Can_Be_Inlined_In_GNATprove_Mode): Use new function.
+ 	* sem_util.adb, sem_util.ads (Within_Protected_Type): Renaming
+ 	with slight modification from Is_Subp_Or_Entry_Inside_Protected,
+ 	so that applies to any entity.
+ 
+ 2017-09-06  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_ch3.adb (Derived_Type_Declaration): Use
+ 	Incomplete_Or_Partial_View rather than local Find_Partial_View.
+ 
+ 2017-09-06  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* g-catiio.ads, g-catiio.adb (Value): Extended to parse an UTC time
+ 	following ISO-8861.
+ 
+ 2017-09-06  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_dim.adb (Analyze_Dimension): In an instance, a type
+ 	conversion takes its dimensions from the expression, not from
+ 	the context type.
+ 	(Dimensions_Of_Operand): Ditto.
+ 
+ 2017-09-06  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_ch6.adb (Expand_Call_Helper): Do not optimize calls to
+ 	null procedures when GNAT coverage is used, so that their (empty)
+ 	bodies are properly covered.
+ 
+ 2017-09-06  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_ch13.adb (Resolve_Aspect_Expressions): If
+ 	the entity is a type with discriminants, make the discriminants
+ 	directly visible in aspect clauses.
+ 
+ 2017-09-06  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Arithmentic_Op): If both operands are
+ 	Universal_Real and the context is a floating-point type, resolve
+ 	both operands to the target type.
+ 
+ 2017-09-06  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* a-comlin.adb, exp_aggr.adb, exp_ch6.adb, frontend.adb, gnatbind.adb,
+ 	sem_ch3.adb, sem_util.adb: Minor reformatting.
+ 
+ 2017-09-06  Yannick Moy  <moy@adacore.com>
+ 
+ 	* freeze.adb (Check_Inherited_Conditions): Rewriting
+ 	of inherited preconditions and postconditions should only occur
+ 	in GNATprove mode, that is, when GNATprove_Mode is True, not to
+ 	be confused with SPARK_Mode being On.
+ 
+ 2017-09-06  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_warn.adb (Check_References): Take into
+ 	account possibility of attribute reference as original node.
+ 
+ 2017-09-06  Yannick Moy  <moy@adacore.com>
+ 
+ 	* exp_attr.adb (Expand_N_Attribute_Reference): Protect against invalid
+ 	use of attribute.
+ 
+ 2017-09-06  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* inline.adb (Split_Unconstrained_Function): Also set Is_Inlined
+ 	on the procedure created to encapsulate the body.
+ 	* sem_ch7.adb: Add with clause for GNAT.HTable.
+ 	(Entity_Table_Size): New constant.
+ 	(Entity_Hash): New function.
+ 	(Subprogram_Table): New instantiation of GNAT.Htable.Simple_HTable.
+ 	(Is_Subprogram_Ref): Rename into...
+ 	(Scan_Subprogram_Ref): ...this. Record references to subprograms in
+ 	the table instead of bailing out on them. Scan the value of constants
+ 	if it is not known at compile time.
+ 	(Contains_Subprograms_Refs): Rename into...
+ 	(Scan_Subprogram_Refs): ...this.
+ 	(Has_Referencer): Scan the body of all inlined subprograms. Reset the
+ 	Is_Public flag on subprograms if they are not actually referenced.
+ 	(Hide_Public_Entities): Beef up comment on the algorithm.
+ 	Reset the table of subprograms on entry.
+ 
+ 2017-09-06  Yannick Moy  <moy@adacore.com>
+ 
+ 	* inline.adb: Add comments to Can_Be_Inlined_In_GNATprove_Mode.
+ 
+ 2017-09-06  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_aggr.adb (Component_Not_OK_For_Backend): The C backend
+ 	cannot handle a type conversion of an array as an aggregate
+ 	component.
+ 
+ 2017-09-06  Bob Duff  <duff@adacore.com>
+ 
+ 	* g-comlin.adb (Try_Help): Remove ".exe" so we
+ 	get the same results on windows and unix.
+ 
+ 2017-09-06  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* exp_imgv.adb (Expand_Image_Attribute),
+ 	(Expand_Wide_Image_Attribute), (Expand_Wide_Wide_Image_Attribute):
+ 	Added case to handle new-style 'Image expansion
+ 	(Rewrite_Object_Image): Moved from exp_attr.adb
+ 	* exp_attr.adb (Expand_N_Attribute_Reference): Modified Image
+ 	attribute cases so that the relevant subprograms in exp_imgv.adb
+ 	handle all expansion.
+ 	(Rewrite_Object_Reference_Image): Moved to exp_imgv.adb
+ 	* sem_attr.adb (Analyze_Attribute): Modified Image attribute
+ 	cases to call common function Analyze_Image_Attribute.
+ 	(Analyze_Image_Attribute): Created as a common path for all
+ 	image attributes (Check_Object_Reference_Image): Removed
+ 	* sem_util.ads, sem_util.adb (Is_Image_Applied_To_Object):
+ 	Removed and refactored into Is_Object_Image (Is_Object_Image):
+ 	Created as a replacement for Is_Image_Applied_To_Object
+ 
+ 2017-09-06  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Depends_In_Decl_Part): Add continuation
+ 	message for missing input.
+ 
+ 2017-09-06  Yannick Moy  <moy@adacore.com>
+ 
+ 	* inline.adb (Can_Be_Inlined_In_GNATprove_Mode): Prevent inlining
+ 	of protected subprograms and entries.
+ 	* sem_util.adb, sem_util.ads (Is_Subp_Or_Entry_Inside_Protected):
+ 	New function to detect when a subprogram of entry is defined
+ 	inside a protected object.
+ 
+ 2017-09-06  Bob Duff  <duff@adacore.com>
+ 
+ 	* sysdep.c (__gnat_has_cap_sys_nice): New function to determine
+ 	whether the current process has the CAP_SYS_NICE capability.
+ 	* s-taprop-linux.adb (Get_Ceiling_Support): Update this to allow
+ 	ceiling priorities if the current process has the CAP_SYS_NICE
+ 	capability.
+ 
+ 2017-09-06  Bob Duff  <duff@adacore.com>
+ 
+ 	* a-comlin.ads, a-comlin.adb (Argument): Move the constraint
+ 	check back to the body, because SPARK is not yet ready for
+ 	"or else raise Constraint_Error".
+ 
+ 2017-09-06  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_ch6.adb (Expand_Call_Helper): Replace call to null
+ 	procedure by a single null statement, after evaluating the
+ 	actuals that require it.
+ 
+ 2017-09-06  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_aggr.adb (Backend_Processing_Possible.Component_Check):
+ 	Generating C code improve the code that checks the use of nested
+ 	aggregates to initialize object declarations.
+ 
+ 2017-09-06  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_ch3.adb (Derived_Type_Declaration): Detect
+ 	violations of new rule SPARK RM 3.4(1).  Also refactor existing
+ 	check to use the new function Find_Partial_View.
+ 
+ 2017-09-06  Vincent Celier  <celier@adacore.com>
+ 
+ 	* gnatcmd.adb: gnat ls -V -P... invokes gprls -V -P...	The code
+ 	from the Prj hierarchy has been removed from the GNAT driver.
+ 
+ 2017-09-06  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_type.adb (Interface_Present_In_Ancestor): Within an
+ 	expression function, or within a spec expression (default value,
+ 	etc) a reference to an incomplete type is legal: legality of
+ 	the operation will be checked when some related entity (type,
+ 	object or subprogram) is frozen.
+ 
+ 2017-09-06  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* exp_ch5.adb, s-diinio.ads, sem_ch4.adb, s-diflio.ads: Minor spelling
+ 	adjustments and a typo fix.
+ 
+ 2017-09-06  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Call): Do not issue info
+ 	message about inlining of calls to functions in assertions,
+ 	for functions whose body has not been seen yet.
+ 
+ 2017-09-06  Bob Duff  <duff@adacore.com>
+ 
+ 	* a-comlin.ads, a-comlin.adb (Argument): Simplify the code, now that
+ 	we can use modern Ada in this package.
+ 	* s-resfil.ads, s-resfil.adb, a-clrefi.ads, a-clrefi.adb:
+ 	Move Ada.Command_Line.Response_File to System.Response_File,
+ 	and make Ada.Command_Line.Response_File into a rename of
+ 	System.Response_File. This is to avoid having gnatbind depend
+ 	Ada.Command_Line, which would damage the bootstrap process now
+ 	that Ada.Command_Line contains modern Ada (the raise expression).
+ 	* gnatbind.adb: Avoid dependence on
+ 	Ada.Command_Line. Depend on System.Response_File instead
+ 	of Ada.Command_Line.Response_File. Change one call to
+ 	Ada.Command_Line.Command_Name to use Fill_Arg.	Change one call
+ 	to Ada.Command_Line.Argument_Count to use Arg_Count.
+ 	* gcc-interface/Make-lang.in, Makefile.rtl: Take note of the new files.
+ 
+ 2017-09-06  Bob Duff  <duff@adacore.com>
+ 
+ 	* frontend.adb (Frontend): Skip -gnatec=gnat.adc
+ 	switch, because we've already read gnat.adc by default.
+ 
+ 2017-09-06  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_ch5.adb (Get_Default_Iterator): Replace
+ 	"Assert(False)" with "return Iter", because if an iterable
+ 	type is derived from a noniterable one, then we won't find an
+ 	overriding or inherited default iterator.
+ 
+ 2017-09-06  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_warn.adb (Warn_On_Suspicious_Index): Improve warning when the
+ 	literal index used to access a string is null or negative.
+ 
+ 2017-09-06  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* einfo.adb (Status_Flag_Or_Transient_Decl): The attribute is now
+ 	allowed on loop parameters.
+ 	(Set_Status_Flag_Or_Transient_Decl): The attribute is now allowed
+ 	on loop parameters.
+ 	(Write_Field15_Name): Update the output for
+ 	Status_Flag_Or_Transient_Decl.
+ 	* einfo.ads: Attribute Status_Flag_Or_Transient_Decl now applies
+ 	to loop parameters. Update the documentation of the attribute
+ 	and the E_Loop_Parameter entity.
+ 	* exp_ch7.adb (Process_Declarations): Remove the bogus guard
+ 	which assumes that cursors can never be controlled.
+ 	* exp_util.adb (Requires_Cleanup_Actions): Remove the bogus
+ 	guard which assumes that cursors can never be controlled.
+ 
+ 2017-09-06  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* exp_attr.adb, sem_util.adb, sem_attr.adb, sem_ch6.adb, sem_ch8.adb,
+ 	sem_warn.adb: Minor reformatting.
+ 
+ 2017-09-06  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_warn.adb (Warn_On_Overlapping_Actuals): Refine previous
+ 	fix and preserve older GNAT warning on overlapping actuals that
+ 	are not elementary types.
+ 
+ 2017-09-06  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_attr.adb: Comment correction.
+ 
+ 2017-09-06  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* sem_util.adb: Minor reformatting.
+ 
+ 2017-09-06  Yannick Moy  <moy@adacore.com>
+ 
+ 	* a-comlin.ads (Argument): Add precondition for analysis.
+ 
+ 2017-09-06  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_res.adb (Resolve): Update message for function call as statement.
+ 
+ 2017-09-06  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch6.adb (Check_Returns): Clean up warnings coming from
+ 	generated bodies for renamings that are completions, when renamed
+ 	procedure is No_Return.
+ 	* sem_ch8.adb (Analyze_Subprogram_Renaming): Implement legality
+ 	rule in 6.5.1 (7/2): if a renaming is a completion of a subprogram
+ 	with No_Return, the renamed entity must be No_Return as well.
+ 
+ 2017-09-06  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* exp_ch5.adb, freeze.adb, exp_ch4.adb, exp_ch6.adb, lib-xref.adb:
+ 	Minor reformatting.
+ 
+ 2017-09-06  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* exp_attr.adb (Expand_N_Attribute_Reference): Modified Image
+ 	attribute cases (Rewrite_Object_Reference_Image): Created to
+ 	aid the rewriting of new-style 'Image attributes.
+ 	* sem_attr.adb (Analyze_Attribute): Modified Image attribute cases
+ 	(Check_Object_Reference_Image): Created to handle verification of
+ 	'Image with object-references as prefixes.
+ 	* sem_util.ads, sem_util.adb (Is_Image_Applied_To_Object):
+ 	Create predicate to identify cases where an 'Image attribute's
+ 	prefix applies to an object reference.
+ 
+ 2017-09-06  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* freeze.adb (Freeze_Entity): Do not generate a freeze
+ 	node for a generic unit, even if it includes delayed aspect
+ 	specifications. Freeze nodes for generic entities must never
+ 	appear in the tree that reaches the back-end of the compiler.
+ 
+ 2017-09-06  Yannick Moy  <moy@adacore.com>
+ 
+ 	* treepr.adb (Print_Entity_Info): Do not print empty Elist.
+ 
+ 2017-09-06  Yannick Moy  <moy@adacore.com>
+ 
+ 	* inline.adb (Can_Be_Inlined_In_GNATprove_Mode): Do not consider calls
+ 	to subprograms in other units as possibly inlined.
+ 
+ 2017-09-06  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* freeze.adb (Freeze_Entity): For a derived type that has no
+ 	explicit delayed aspects but may inherit delayed aspects from its
+ 	parent type, analyze aspect at freeze point for proper capture
+ 	of an inherited aspect.
+ 
+ 2017-09-06  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* lib-xref.adb (Get_Through_Renamings): Get through subprogram
+ 	renamings; also, avoid repeated calls to Renamed_Object when getting
+ 	through object renamings.
+ 
+ 2017-09-06  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch3.adb (Array_Type_Declaration): Handle properly an
+ 	array type declaration in a private part, when an index is a
+ 	subtype indication of a discrete type with a private partial view.
+ 
+ 2017-09-06  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_ch4.adb (Expand_Modular_Op): Force generating
+ 	temporary to improve the generated code.
+ 
+ 2017-09-06  Tristan Gingold  <gingold@adacore.com>
+ 
+ 	* s-fatgen.adb: Minor typo fix in comment.
+ 
+ 2017-09-06  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_ch5.adb (Make_Field_Assign): If the type
+ 	of the right-hand side has stored constraint, use its values
+ 	(except for those that are renamings of parent discriminants)
+ 	to produce additional assignments for the discriminants of the
+ 	left-hand side, which are invisible in the righ-hand side and
+ 	not retrievable as selected components.
+ 
+ 2017-09-06  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_util.adb (Needs_One_Formal): The first formal of such a
+ 	function must be a controlling formal, so that Obj.F (X, Y)
+ 	can have the interpretation F(Obj)(X, Y).
+ 	* sem_util.ads: Clarify documentation.
+ 
+ 2017-09-06  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* table.ads, table.adb: Restore original implementation.
+ 	* namet.h (Names_Ptr): Adjust back.
+ 	(Name_Chars_Ptr): Likewise.
+ 	* uintp.h (Uints_Ptr): Likewise.
+ 	(Udigits_Ptr): Likewise.
+ 	* g-table.ads: Remove pragma Compiler_Unit_Warning.
+ 	* par_sco.adb: Do not with GNAT.Table and use Table consistently.
+ 	* scos.ads: Replace GNAT.Table with Table and adjust instantiations.
+ 	* spark_xrefs.ads: Likewise.
+ 	* scos.h: Undo latest changes.
+ 
+ 2017-09-06  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch12.adb (Analyze_Subprogram_Instantiation): Propagate
+ 	No_Return flag to instance if pragma applies to generic unit. This
+ 	must be done explicitly because the pragma does not appear
+ 	directly in the generic declaration (unlike the corresponding
+ 	aspect specification).
+ 
+ 2017-09-06  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch7.adb (Has_Referencer): Move up and expand comment
+ 	explaining the test used to detect inlining.  Use same test
+ 	in second occurrence.
+ 	(Analyze_Package_Body_Helper): Minor formatting fixes.
+ 
+ 2017-09-06  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_ch4.adb (Handle_Changed_Representation): For an untagged
+ 	derived type with a mixture of renamed and constrained parent
+ 	discriminants, the constraint for the target must obtain the
+ 	discriminant values from both the operand and from the stored
+ 	constraint for it, given that the constrained discriminants are
+ 	not visible in the object.
+ 	* exp_ch5.adb (Make_Field_Assign): The type of the right-hand
+ 	side may be derived from that of the left-hand side (as in the
+ 	case of an assignment with a change of representation) so the
+ 	discriminant to be used in the retrieval of the value of the
+ 	component must be the entity in the type of the right-hand side.
+ 
+ 2017-09-06  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_ch3.adb, sem_ch7.adb, sem_util.adb, g-debpoo.adb, sem_ch4.adb,
+ 	sem_ch6.adb, sem_ch8.adb: Minor reformatting.
+ 	* exp_util.adb (Is_Source_Object): Account for
+ 	the cases where the source object may appear as a dereference
+ 	or within a type conversion.
+ 	* exp_ch6.adb: Fix missing space in error message.
+ 
+ 2017-09-06  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_prag.adb: Update description of Eliminate.
+ 
+ 2017-09-06  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_attr.adb (Analyze_Attribute, case 'Loop_Entry): Handle
+ 	properly an attribute reference 'Loop_Entry that appears in the
+ 	list of indices of an indexed expression, to prevent an infinite
+ 	loop in the compiler.
+ 
+ 2017-09-06  Bob Duff  <duff@adacore.com>
+ 
+ 	* s-fileio.adb (Name): Do not raise Use_Error for temp files.
+ 
+ 2017-09-06  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch4.adb (Analyze_Set_Membership):  If an alternative
+ 	in a set membership is an overloaded enumeration literal, and
+ 	the type of the alternative is resolved from a previous one,
+ 	replace the entity of the alternative as well as the type,
+ 	to prevent inconsistencies between the entity and the type.
+ 
+ 2017-09-06  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* ali.ads (ALIs_Record): Add No_Component_Reordering component.
+ 	(No_Component_Reordering_Specified): New switch.
+ 	* ali.adb (Initialize_ALI): Set No_Component_Reordering_Specified.
+ 	(Scan_ALI): Set No_Component_Reordering and deal with NC marker.
+ 	* bcheck.adb (Check_Consistent_No_Component_Reordering):
+ 	New check.
+ 	(Check_Configuration_Consistency): Invoke it.
+ 	* debug.adb (d.r): Toggle the effect of the switch.
+ 	(d.v): Change to no-op.
+ 	* einfo.ads (Has_Complex_Representation):
+ 	Restrict to record types.
+ 	(No_Reordering): New alias for Flag239.
+ 	(OK_To_Reorder_Components): Delete.
+ 	(No_Reordering): Declare.
+ 	(Set_No_Reordering): Likewise.
+ 	(OK_To_Reorder_Components): Delete.
+ 	(Set_OK_To_Reorder_Components): Likewise.
+ 	* einfo.adb (Has_Complex_Representation): Expect record types.
+ 	(No_Reordering): New function.
+ 	(OK_To_Reorder_Components): Delete.
+ 	(Set_Has_Complex_Representation): Expect base record types.
+ 	(Set_No_Reordering): New procedure.
+ 	(Set_OK_To_Reorder_Components): Delete.
+ 	(Write_Entity_Flags): Adjust to above change.
+ 	* fe.h (Debug_Flag_Dot_R): New macro and declaration.
+ 	* freeze.adb (Freeze_Record_Type): Remove conditional code setting
+ 	OK_To_Reorder_Components on record types with convention Ada.
+ 	* lib-writ.adb (Write_ALI): Deal with NC marker.
+ 	* opt.ads (No_Component_Reordering): New flag.
+ 	(No_Component_Reordering_Config): Likewise.
+ 	(Config_Switches_Type): Add No_Component_Reordering component.
+ 	* opt.adb (Register_Opt_Config_Switches): Copy
+ 	No_Component_Reordering onto No_Component_Reordering_Config.
+ 	(Restore_Opt_Config_Switches): Restore No_Component_Reordering.
+ 	(Save_Opt_Config_Switches): Save No_Component_Reordering.
+ 	(Set_Opt_Config_Switches): Set No_Component_Reordering.
+ 	* par-prag.adb (Prag): Deal with Pragma_No_Component_Reordering.
+ 	* sem_ch3.adb (Analyze_Private_Extension_Declaration): Also set the
+ 	No_Reordering flag from the default.
+ 	(Build_Derived_Private_Type): Likewise.
+ 	(Build_Derived_Record_Type): Likewise.	Then inherit it
+ 	for untagged types and clean up handling of similar flags.
+ 	(Record_Type_Declaration): Likewise.
+ 	* sem_ch13.adb (Same_Representation): Deal with No_Reordering and
+ 	remove redundant test on Is_Tagged_Type.
+ 	* sem_prag.adb (Analyze_Pragma): Handle No_Component_Reordering.
+ 	(Sig_Flags): Likewise.
+ 	* snames.ads-tmpl (Name_No_Component_Reordering): New name.
+ 	(Pragma_Id): Add Pragma_No_Component_Reordering value.
+ 	* warnsw.adb (Set_GNAT_Mode_Warnings): Enable -gnatw.q as well.
+ 	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Type>:
+ 	Copy the layout of the parent type only if the No_Reordering
+ 	settings match.
+ 	(components_to_record): Reorder record types with
+ 	convention Ada by default unless No_Reordering is set or -gnatd.r
+ 	is specified and do not warn if No_Reordering is set in GNAT mode.
+ 
+ 2017-09-06  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_util.ads, sem_util.adb (Check_Previous_Null_Procedure):
+ 	new predicate to reject declarations that can be completions,
+ 	when there is a visible prior homograph that is a null procedure.
+ 	* sem_ch6.adb (Analyze_Null_Procedure): use it.
+ 	* sem_ch8.adb (Analyze_Subprogram_Renaming): ditto.
+ 
+ 2017-09-06  Thomas Quinot  <quinot@adacore.com>
+ 
+ 	* s-regpat.adb (Compile.Parse_Literal): Fix handling of literal
+ 	run of 253 characters or more.
+ 
+ 2017-09-06  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* einfo.adb (Designated_Type): Use Is_Incomplete_Type to handle
+ 	properly incomplete subtypes that may be created by explicit or
+ 	implicit declarations.
+ 	(Is_Base_Type): Take E_Incomplete_Subtype into account.
+ 	(Subtype_Kind): Ditto.
+ 	* sem_ch3.adb (Build_Discriminated_Subtype): Set properly the
+ 	Ekind of a subtype of a discriminated incomplete type.
+ 	(Fixup_Bad_Constraint): Use Subtype_Kind in all cases, including
+ 	incomplete types, to preserve error reporting.
+ 	(Process_Incomplete_Dependents): Do not create a subtype
+ 	declaration for an incomplete subtype that is created internally.
+ 	* sem_ch7.adb (Analyze_Package_Specification): Handle properly
+ 	incomplete subtypes that do not require a completion, either
+ 	because they are limited views, of they are generic actuals.
+ 
+ 2017-09-06  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* checks.adb (Insert_Valid_Check): Remove the
+ 	suspicious manipulation of the Do_Range_Check flag as ths is
+ 	no linger needed. Suppress validity check when analysing the
+ 	validation variable.
+ 
+ 2017-09-06  Philippe Gil  <gil@adacore.com>
+ 
+ 	* g-debpoo.adb: adapt GNAT.Debug_Pools to allow safe thread
+ 	GNATCOLL.Memory
+ 
+ 2017-09-06  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_elim.adb: Minor comment fix.
+ 
+ 2017-09-06  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_util.adb (Is_Object_Reference): A function call is an
+ 	object reference, and thus attribute references for attributes
+ 	that are functions (such as Pred and Succ) as well as predefined
+ 	operators are legal in contexts that require an object, such as
+ 	the prefix of attribute Img and the Ada2020 version of 'Image.
+ 
+ 2017-09-06  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* exp_util.adb, einfo.adb, sem_attr.adb, exp_ch4.adb, gnatls.adb,
+ 	exp_ch3.adb, xoscons.adb: Minor reformatting.
+ 
+ 2017-09-06  Raphael Amiard  <amiard@adacore.com>
+ 
+ 	* a-chtgop.ads, a-chtgop.adb: Add versions of First and Next with
+ 	Position parameter. If supplied, use it to provide efficient iteration.
+ 	* a-cohase.ads, a-cohase.adb, a-cihama.ads, a-cihama.adb,
+ 	a-cohama.ads, a-cohama.adb: Add/Use Position to provide efficient
+ 	iteration.
+ 
+ 2017-09-06  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_util.adb (Build_Allocate_Deallocate_Proc): If the
+ 	designated type is class-wide and the expression is an unchecked
+ 	conversion, preserve the conversion when checking the tag of the
+ 	designated object, to prevent spurious semantic errors when the
+ 	expression in the conversion has an untagged type (for example
+ 	an address attribute).
+ 
+ 2017-09-06  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Entry_Call): Check whether a protected
+ 	operation is subject to a pragma Eliminate.
+ 
+ 2017-09-06  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_elim.ads, exp_ch4.adb: Minor reformatting.
+ 
+ 2017-09-06  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* fe.h (Eliminate_Error_Msg): Remove.
+ 
+ 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* gcc-interface/utils.c (make_packable_type): Update call to
+ 	mode_for_size_tree.
+ 
+ 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	* gcc-interface/utils2.c (build_load_modify_store):
+ 	Use int_mode_for_size.
+ 
+ 2017-09-05  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/62235
+ 	* gcc-interface/decl.c (gnat_to_gnu_entity): Skip regular processing
+ 	for Itypes that are E_Record_Subtype with a cloned subtype.
+ 	<E_Record_Subtype>: Use the DECL of the cloned type directly, if any.
+ 
+ 2017-09-05  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.c (convert_with_check): Use a custom base type
+ 	if the base type of the expression has a different machine mode.
+ 	Rename a couple of parameters and local variable.
+ 
+ 2017-09-05  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.c (Attribute_to_gnu) <Attr_Address>: Do not strip
+ 	conversions around prefixes that are not references.
+ 
+ 2017-09-05  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/utils.c (unchecked_convert): When the result type is a
+ 	non-biased integral type with size 0, set the result to 0 directly.
+ 
+ 2017-09-05  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/gigi.h (renaming_from_generic_instantiation_p): Turn to
+ 	(renaming_from_instantiation_p): ...this.
+ 	* gcc-interface/decl.c (gnat_to_gnu_entity): Use inline predicate
+ 	instead of explicit tests on kind of entities.  Adjust for renaming.
+ 	(gnat_to_gnu_profile_type): Likewise.
+ 	(gnat_to_gnu_subprog_type): Likewise.
+ 	* gcc-interface/trans.c (Identifier_to_gnu): Likewise.
+ 	(Case_Statement_to_gnu): Likewise.
+ 	(gnat_to_gnu): Likewise.
+ 	(process_freeze_entity): Likewise.
+ 	(process_type): Likewise.
+ 	(add_stmt_with_node): Adjust for renaming.
+ 	* gcc-interface/utils.c (gnat_pushdecl): Adjust for renaming.
+ 	(renaming_from_generic_instantiation_p): Rename to...
+ 	(renaming_from_instantiation_p): ...this.  Use inline predicate.
+ 	(pad_type_hasher::keep_cache_entry): Fold.
+ 
+ 2017-09-05  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.c (adjust_for_implicit_deref): New function.
+ 	(gnat_to_gnu) <N_Explicit_Dereference>: Translate result type first.
+ 	(N_Indexed_Component): Invoke adjust_for_implicit_deref on the prefix.
+ 	(N_Slice): Likewise.
+ 	(N_Selected_Component): Likewise.  Do not try again to translate it.
+ 	(N_Free_Statement): Invoke adjust_for_implicit_deref on the expression.
+ 
+ 2017-09-05  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* repinfo.ads: Document new treatment of dynamic values.
+ 	(TCode): Bump upper bound to 29.
+ 	(Dynamic_Val): New constant set to 29.
+ 	* repinfo.adb (Print_Expr) <Dynamic_Val>: New case.
+ 	(Rep_Value)  <Dynamic_Val>: Likewise.
+ 	* repinfo.h (Dynamic_Val): New macro.
+ 	* gcc-interface/decl.c (annotate_value): Tidy up and cache result for
+ 	DECL_P nodes too.
+ 	<INTEGER_CST>: Set TCODE instead of recursing.
+ 	<COMPONENT_REF>: Set TCODE instead of calling Create_Node manually.
+ 	<VAR_DECL>: New case.
+ 	<MULT_EXPR, PLUS_EXPR>: Fold conversions into inner operations.
+ 	<BIT_AND_EXPR>: Adjust.
+ 	<CALL_EXPR>: Do not fall through.
+ 
+ 2017-09-05  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.c (Call_to_gnu): If this is a function call and
+ 	there is no target, do not create a temporary for the return value for
+ 	an allocator either.
+ 
+ 2017-09-05  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.c (pos_to_constructor): Skip conversions to an
+ 	unconstrained array type.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* gcc-interface/decl.c (validate_size): Use NARROWEST_INT_MODE
+ 	instead of GET_CLASS_NARROWEST_MODE (MODE_INT).
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* gcc-interface/decl.c (check_ok_for_atomic_type): Use
+ 	is_a <scalar_int_mode>.
+ 	* gcc-interface/trans.c (Pragma_to_gnu): Likewise.
+ 	* gcc-interface/utils.c (gnat_type_for_mode): Likewise.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* gcc-interface/decl.c (gnat_to_gnu_entity): Use int_mode_for_size
+ 	instead of mode_for_size.
+ 	(gnat_to_gnu_subprog_type): Likewise.
+ 	* gcc-interface/utils.c (make_type_from_size): Likewise.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* gcc-interface/misc.c (fp_prec_to_size): Use opt_scalar_float_mode.
+ 	(fp_size_to_prec): Likewise.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* gcc-interface/utils.c (gnat_type_for_mode): Use is_a
+ 	<scalar_float_mode> instead of SCALAR_FLOAT_MODE_P.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+ 	    Alan Hayward  <alan.hayward@arm.com>
+ 	    David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* gcc-interface/decl.c (validate_size): Update use of
+ 	GET_MODE_WIDER_MODE, forcing a wider mode to exist.
+ 
+ 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+             Alan Hayward  <alan.hayward@arm.com>
+             David Sherwood  <david.sherwood@arm.com>
+ 
+ 	* gcc-interface/misc.c (fp_prec_to_size): Use new mode iterators.
+ 	(fp_size_to_prec): Likewise.
+ 
+ 2017-08-29  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR other/39851
+ 	* gcc-interface/trans.c (Pragma_to_gnu): Set argument to NULL.
+ 
+ 2017-08-08  Martin Liska  <mliska@suse.cz>
+ 
+ 	* gcc-interface/trans.c: Include header files.
+ 
+ 2017-07-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* gcc-interface/utils.c (gnat_write_global_declarations): Pass false
+ 	as new argument to the imported_module_or_decl debug hook.
+ 
+ 2017-07-25  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* checks.adb (Apply_Divide_Checks): Ensure that operands are not
+ 	evaluated twice. 
+ 
+ 2017-07-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* gcc-interface/ada-tree.h (TYPE_OBJECT_RECORD_TYPE,
+ 	TYPE_GCC_MIN_VALUE): Use TYPE_MIN_VALUE_RAW instead of TYPE_MINVAL.
+ 	(TYPE_GCC_MAX_VALUE): Use TYPE_MAX_VALUE_RAW instead of TYPE_MAXVAL.
+ 
+ 2017-07-18  Mike Frysinger  <vapier@chromium.org>
+ 
+ 	* gcc-interface/Makefile.in (../../gnatmake$(exeext)): Delete $(P).
+ 	(../../gnatlink$(exeext)): Likewise.
+ 
+ 2017-07-15  John Paul Adrian Glaubitz  <glaubitz@physik.fu-berlin.de>
+ 
+ 	PR ada/81446
+ 	* system-linux-m68k.ads: Add pragma No_Elaboration_Code_All.
+ 	(Backend_Overflow_Checks): Set to True.
+ 
+ 2017-06-23  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* gcc-interface/trans.c (gnat_to_gnu): Initialize sync to false.
+ 
+ 2017-06-21  Pierre-Marie de Rodat  <derodat@adacore.com>
+ 
+ 	* gcc-interface/ada-tree.h (DECL_FUNCTION_IS_DEF): Update copyright
+ 	notice.  New macro.
+ 	* gcc-interface/trans.c (Subprogram_Body_to_gnu): Tag the subprogram
+ 	as a definition.
+ 	(Compilation_Unit_to_gnu): Tag the elaboration procedure as a
+ 	definition.
+ 	* gcc-interface/decl.c (gnat_to_gnu_entity): Tag declarations of
+ 	imported subprograms for the current compilation unit as
+ 	definitions.  Disable debug info for references to variables.
+ 	* gcc-interface/gigi.h (create_subprog_decl): Update declaration.
+ 	* gcc-interface/utils.c (gnat_pushdecl): Add external DECLs that are
+ 	not built-in functions to their binding scope.
+ 	(create_subprog_decl): Add a DEFINITION parameter.  If it is true, tag
+ 	the function as a definition.  Update all callers.
+ 	(gnat_write_global_declarations): Emit debug info for imported
+ 	functions.  Filter out external variables for which debug info
+ 	is disabled.
+ 
+ 2017-06-15  Nicolas Boulenguez  <nicolas.boulenguez@free.fr>
+ 
+ 	PR ada/81105
+ 	* gcc-interface/Makefile.in (x86 kfreebsd): Adjust system.ads setting.
+ 	(i[3456]86-pc-gnu): Likewise.
+ 	(x86_64 kfreebsd): Likewise.
+ 
+ 2017-06-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR bootstrap/80897
+ 	* exp_ch3.adb (Make_Predefined_Primitive_Specs): Use Positive index.
+ 
+ 2017-06-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/81070
+ 	* s-interr-hwint.adb: Reinstate.
+ 	* gcc-interface/Makefile.in (RTEMS): Use it again.
+ 
+ 2017-06-08  Olivier Hainque  <hainque@adacore.com>
+ 
+ 	* vx_crtbegin_auto.c: Update year in copyright notice.
+ 	* vx_crtbegin.c: Likewise.
+ 	* vx_crtbegin.inc: Likewise. 
+ 	* vx_crtend.c:  Likewise.
+ 
+ 2017-06-07  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+ 
+ 	* Makefile.in (rtems): Use TLS implementation for s-tpopsp.adb.
+ 	* s-tpopsp-rtems.adb: Delete.
+ 
+ 2017-06-02  Olivier Hainque  <hainque@adacore.com>
+ 
+ 	* vx_crtbegin_auto.c: New file.
+ 	* vx_crtbegin.c: New file.
+ 	* vx_crtbegin.inc: New file.
+ 	* vx_crtend.c: New file.
+ 
+ 2017-05-25  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* gcc-interface/utils2.c (compare_elmt_bitpos): Remove redundant
+ 	const qualifiers that cause -Wignored-qualifiers warnings.
+ 
+ 2017-05-22  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.c (gnat_to_gnu_entity): Skip regular processing
+ 	for Itypes that are E_Access_Subtype.
+ 	<E_Access_Subtype>: Use the DECL of the base type directly.
+ 
+ 2017-05-22  Ed Schonberg  <schonberg@adacore.com>
+             Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch4.adb (Analyze_Call): In Ada2012 an incomplete type from a
+ 	limited view may appear in the profile of a function, and a call to
+ 	that function in another unit in which the full view is available must
+ 	use this full view to spurious type errors at the point of call.
+ 	* inline.adb (Analyze_Inlined_Bodies): Remove restriction on loading
+ 	of parent body with a with clause for the main unit.
+ 	* gcc-interface/decl.c (defer_limited_with_list): Document new usage.
+ 	(gnat_to_gnu_entity) <E_Access_Type>: Handle completed Taft Amendment
+ 	types declared in external units like types from limited with clauses.
+ 	Adjust final processing of defer_limited_with_list accordingly.
+ 	* gcc-interface/trans.c (gnat_to_gnu) < N_Selected_Component>: Try
+ 	again to translate the prefix after the field if it is incomplete.
+ 
+ 2017-05-22  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.c (gnat_to_gnu_field): Do not enforce strict
+ 	alignment for simple volatile fields and remove associated errors.
+ 
+ 2017-05-15  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/gigi.h (get_elaboration_procedure): Delete.
+ 	* gcc-interface/trans.c (get_elaboration_procedure): Make static.
+ 
+ 2017-05-15  Pierre-Marie de Rodat  <derodat@adacore.com>
+ 
+ 	* gcc-interface/utils.c (can_materialize_object_renaming_p):
+ 	Synchronize with GNAT's Exp_Dbug.Debug_Renaming_Declaration:
+ 	process Original_Node instead of expanded names.
+ 
+ 2017-05-15  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.c (return_value_ok_for_nrv_p): Only apply the
+ 	addressability check in the constrained case.
+ 
+ 2017-05-15  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.c (Identifier_to_gnu): Also accept incomplete
+ 	types not coming from a limited context.
+ 
+ 2017-05-15  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.c (Compilation_Unit_to_gnu): Skip subprograms on
+ 	the inlined list that are not public.
+ 	* gcc-interface/utils.c (create_subprog_decl): Clear TREE_PUBLIC if
+ 	there is a pragma Inline_Always on the subprogram.
+ 
+ 2017-05-15  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.c (gnat_to_gnu) <N_Aggregate>: Fix formatting.
+ 	<N_Allocator>: Use properly typed constants.
+ 	(extract_values): Move around.
+ 	(pos_to_constructor): Minor tweaks.
+ 	(Sloc_to_locus): Fix formatting.
+ 	* gcc-interface/utils.c (process_deferred_decl_context): Minor tweaks.
+ 	* gcc-interface/gigi.h (MARK_VISITED): Remove blank line.
+ 	(Gigi_Equivalent_Type): Adjust head comment.
+ 	* gcc-interface/decl.c (Gigi_Equivalent_Type): Likewise.
+ 
+ 2017-05-15  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Type>: When there
+ 	is a representation clause on an extension, propagate the alignment of
+ 	the parent type only if the platform requires strict alignment.
+ 
+ 2017-05-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* system-linux-arm.ads (Memory_Size): Use Long_Integer'Size
+ 	instead of Word_Size.
+ 
+ 	Revert
+ 	2017-03-28  Andreas Schwab  <schwab@suse.de>
+ 
+ 	PR ada/80117
+ 	* system-linux-aarch64-ilp32.ads: New file.
+ 	* gcc-interface/Makefile.in (LIBGNAT_TARGET_PAIRS_COMMON): Rename
+ 	from LIBGNAT_TARGET_PAIRS.
+ 	(LIBGNAT_TARGET_PAIRS_32, LIBGNAT_TARGET_PAIRS_64): Define.
+ 	(LIBGNAT_TARGET_PAIRS): Use LIBGNAT_TARGET_PAIRS_COMMON, and
+ 	LIBGNAT_TARGET_PAIRS_64 or LIBGNAT_TARGET_PAIRS_32 for -mabi=lp64
+ 	or -mabi=ilp32, resp.
+ 
+ 2017-05-10  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR ada/80626
+ 	* system-linux-x86.ads (Memory_Size): Use Long_Integer'Size
+ 	instead of Word_Size.
+ 
+ 2017-05-10  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+ 
+ 	* raise-gcc.c (exception_class_eq): Make ec parameter const.
+ 
+ 2017-05-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gcc-interface/misc.c (gnat_post_options): Do not set
+ 	-fstrict-overflow.
+ 
+ 2017-05-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.c (assoc_to_constructor): Make sure
+ 	Corresponding_Discriminant is only called on discriminants.
+ 	Skip the saving of the result only for them.
+ 	(gnat_to_gnu) <N_Selected_Component>: Likewise.
+ 	<N_Unchecked_Type_Conversion>: Translate the result type first.
+ 	(gigi): Set TREE_NOTHROW on Begin_Handler.
+ 	(stmt_list_cannot_raise_p): New predicate.
+ 	(Exception_Handler_to_gnu_gcc): Emit a simple final call instead of
+ 	a cleanup if the statements of the handler cannot raise.
+ 	(process_freeze_entity): Use Is_Record_Type.
+ 	(process_type): Likewise.
+ 
+ 2017-05-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* einfo.ads (Corresponding_Record_Component): New alias
+ 	for Node21 used for E_Component and E_Discriminant.
+ 	* einfo.adb (Corresponding_Record_Component): New function.
+ 	(Set_Corresponding_Record_Component): New procedure.
+ 	(Write_Field21_Name): Handle Corresponding_Record_Component.
+ 	* sem_ch3.adb (Inherit_Component): Set
+ 	Corresponding_Record_Component for every component in
+ 	the untagged case.  Clear it afterwards for non-girder
+ 	discriminants.
+ 	* gcc-interface/decl.c (gnat_to_gnu_entity)
+ 	<E_Record_Type>: For a derived untagged type with discriminants
+ 	and constraints, apply the constraints to the layout of the
+ 	parent type to deduce the layout.
+ 	(field_is_aliased): Delete.
+ 	(components_to_record): Test DECL_ALIASED_P directly.
+ 	(annotate_rep): Check that fields are present except for
+ 	an extension.
+ 	(create_field_decl_from): Add DEBUG_INFO_P
+ 	parameter and pass it in recursive and other calls.  Add guard
+ 	for the manual CSE on the size.
+ 	(is_stored_discriminant): New predicate.
+ 	(copy_and_substitute_in_layout): Consider only
+ 	stored discriminants and check that original fields are present
+ 	in the old type.  Deal with derived types.  Adjust call to
+ 	create_variant_part_from.
+ 
+ 2017-05-02  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_ch6.adb (Expand_Call_Helper): When locating the
+ 	accessibility entity created for an access parameter, handle
+ 	properly a reference to a formal of an enclosing subprogram. if
+ 	the reference appears in an inherited class-wide condition, it
+ 	is the rewriting of the reference in the ancestor expression,
+ 	but the accessibility entity must be that of the current formal.
+ 
+ 2017-05-02  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_ch4.adb (Expand_Non_Binary_Modular_Op): New subprogram.
+ 	(Expand_N_Op_Add, Expand_N_Op_Divide, Expand_N_Op_Minus,
+ 	Expand_N_Op_Multiply, Expand_N_Op_Or, Expand_N_Op_Subtract):
+ 	Call Expand_Non_Binary_Modular_Op.
+ 
+ 2017-05-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch3.adb (Build_Derived_Private_Type): If the parent type
+ 	has discriminants, do not override the Stored_Constraint list of
+ 	the full view of the derived type with that of the derived type.
+ 
+ 2017-05-02  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_attr.adb (Attribute_Enum_Rep): Disallow T'Enum_Rep.
+ 
+ 2017-05-02  Vasiliy Fofanov  <fofanov@adacore.com>
+ 
+ 	* s-os_lib.ads: Minor typo fix.
+ 
+ 2017-05-02  Vasiliy Fofanov  <fofanov@adacore.com>
+ 
+ 	* gnatls.adb: Merge and refactor code from Prj.Env and remove
+ 	this deprecated dependency.
+ 
+ 2017-05-02  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_util.ads: minor comment addition.
+ 
+ 2017-05-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch3.adb (Build_Derived_Record_Type): Fix a few typos and
+ 	pastos in part #3 of the head comment.
+ 
+ 2017-05-02  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_ch3.adb (Freeze_Type): Do not generate an invariant
+ 	procedure body for a local (sub)type declaration within a
+ 	predicate function. Invariant checks do not apply to these, and
+ 	the expansion of the procedure will happen in the wrong scope,
+ 	leading to misplaced freeze nodes.
+ 
+ 2017-05-02  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_util.adb (Insert_Library_Level_Action): Use proper scope
+ 	to analyze generated actions.  If the main unit is a body,
+ 	the required scope is that of the corresponding unit declaration.
+ 
+ 2017-05-02  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* einfo.adb (Declaration_Node): flip branches of
+ 	an IF statement to avoid repeated negations in its condition;
+ 	no change in semantics, only to improve readability.
+ 
+ 2017-05-02  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_case.adb: Remove extra spaces in parameter declarations.
+ 
+ 2017-05-02  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* usage.adb: Replace space with hyphen ("run time" -> "run-time")
+ 	in usage line for new -gnatwE switch.
+ 
+ 2017-05-02  Claire Dross  <dross@adacore.com>
+ 
+ 	* a-cofuve.ads (Remove): Remove unnecessary
+ 	conditions in precondition.
+ 
+ 2017-05-02  Vasiliy Fofanov  <fofanov@adacore.com>
+ 
+ 	* a-stream.ads, exp_imgv.adb, sem_ch10.adb,
+ 	sem_attr.adb, s-finmas.ads, osint.adb: Minor typo fix.
+ 
+ 2017-05-02  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_ch4.adb (Analyze_Case_Expression): Add check for valid
+ 	alternative expression.
+ 	* sem_res.adb (Resolve_Case_Expression): Ditto.
+ 
+ 2017-05-02  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_disp.adb (Set_All_DT_Position, In_Predef_Prim_DT):
+ 	Refine predicate for the case where the primitive operation
+ 	is a renaming of equality.  An overriding operation that is
+ 	a user-defined renaming of predefined equality inherits its
+ 	slot from the overridden operation. Otherwise it is treated
+ 	as a predefined op and occupies the same predefined slot as
+ 	equality. A call to it is transformed into a call to its alias,
+ 	which is the predefined equality. A dispatching call thus uses
+ 	the proper slot if operation is further inherited and called
+ 	with class-wide arguments.
+ 
+ 2017-05-02  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* errout.adb (Set_Msg_Text): Add a case to switch the message
+ 	type when the character '[' is detected signifying a warning
+ 	about a run-time exception.
+ 	* opt.ads Add a new Warning_Mode value for new switch
+ 	* switch-b.adb (Scan_Binder_Switches): Add case for the binder
+ 	to handle new warning mode
+ 	* usage.adb (Usage): Add usage entry for -gnatwE
+ 	* warnsw.adb (Set_Warning_Switch): Add case for the new switch
+ 
+ 2017-05-02  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_prag.adb (Process_Conversion): Reject an intrinsic operator
+ 	declaration that operates on some fixed point type.
+ 
+ 2017-05-02  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* a-crbtgo.adb, s-taasde.adb: Remove unused use-type clauses.
+ 
+ 2017-05-02  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_ch6.adb (Analyze_Null_Procedure): Revert previous change.
+ 
+ 2017-05-02  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_ch4.adb (Analyze_Case_Expression): Add check for valid
+ 	expression (Analyze_If_Expression): Add check for valid condition
+ 	* sem_eval.adb (Eval_Case_Expression): Add check for error posted
+ 	on case-expression
+ 	* sem_res.adb (Resolve_If_Expression): Add check for valid
+ 	condition and then-expression.
+ 
+ 2017-05-02  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_ch3.adb (Build_Initialization_Call): Generate a null
+ 	statement if the initialization call is a null procedure, as
+ 	can happen with a controlled type with no explicit Initialize
+ 	procedure, or an array of such.
+ 	* exp_ch7.adb (Process_Object_Declaration): For a type with
+ 	controlled components that has a trivial Initialize procedure,
+ 	insert declaration for finalization counter after object
+ 	declaration itself.
+ 	(Make_Deep_Array_Body, Build_Initialize_statements): Do not create
+ 	finalization block and attendant declarations if component has
+ 	a trivial Initialize procedure.
+ 	(Make_Init_Call): Do not generate a call if controlled type has
+ 	a trivial Initialize procedure.
+ 
+ 2017-05-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* g-forstr.ads (Data): Move Format component last.
+ 	* g-forstr.adb ("+"): Adjust for above change.
+ 	* g-rewdat.ads (Buffer): Move Buffer, Current, Pattern and Value last.
+ 	* g-sechas.ads (Context): Move Key last.
+ 	* g-socket.ads (Service_Entry_Type): Move Aliases last.
+ 	* s-fileio.adb (Temp_File_Record): Move Name last.
+ 	* s-regexp.adb (Regexp_Value): Move Case_Sensitive last.
+ 	* xr_tabls.ads (Project_File): Move Src_Dir and Obj_Dir last.
+ 
+ 2017-05-02  Jerome Lambourg  <lambourg@adacore.com>
+ 
+ 	* bindusg.adb, bindgen.adb, gnatbind.adb, opt.ads: Remove the -nognarl
+ 	switch introduced recently. finally not needed.
+ 
+ 2017-05-02  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_ch6.adb (Analyze_Null_Procedure): Set the
+ 	Corresponding_Body link for a null procedure declaration.
+ 
+ 2017-05-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* atree.h (Flag290): Add missing terminating parenthesis.
+ 	* einfo.adb (Is_Class_Wide_Clone): Use Flag290.
+ 	(Set_Is_Class_Wide_Clone): Likewise.
+ 	* einfo.ads (Is_Class_Wide_Clone): Likewise.
+ 
+ 2017-05-02  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* checks.ads (Null_Exclusion_Static_Checks): Add Boolean
+ 	parameter Array_Comp to indicate the case of an array object
+ 	with null-excluding components.
+ 	* checks.adb (Null_Exclusion_Static_Checks):
+ 	Call Compile_Time_Constraint_Error instead of
+ 	Apply_Compile_Time_Constraint_Error in the component case. Also
+ 	call that when Array_Comp is True, with an appropriate warning for
+ 	the array component case. Only create an explicit initialization
+ 	by null in the case of an object of a null-excluding access type
+ 	(and no longer do that in the component case).
+ 	* sem_ch3.adb (Check_Component): Add a Boolean parameter
+ 	Array_Comp defaulted to False.	Pass Empty for the Comp
+ 	actual when calling Null_Exclusion_Static_Checks in the case
+ 	where Comp_Decl matches Object_Decl, because we don't have a
+ 	component in that case. In the case of an object or component
+ 	of an array type, pass True for Array_Comp on the recursive call
+ 	to Check_Component.
+ 
+ 2017-05-02  Bob Duff  <duff@adacore.com>
+ 
+ 	* s-taprop-linux.adb (Prio_To_Linux_Prio): New function to correctly
+ 	compute the linux priority from the Ada priority. Call this everywhere
+ 	required. In particular, the previous version was not doing this
+ 	computation when setting the ceiling priority in various places. It
+ 	was just converting to C.int, which results in a ceiling that is off
+ 	by 1.
+ 
+ 2017-05-02  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch3.adb: Comment predicate inheritance.
+ 
+ 2017-05-02  Tristan Gingold  <gingold@adacore.com>
+ 
+ 	* s-trasym.ads: Add comment.
+ 
+ 2017-05-02  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_elab.adb, sem_elab.ads: Minor comment fixes.
+ 	* sem_ch4.adb: Minor reformatting.
+ 	* s-taprop-linux.adb, s-taspri-posix.ads: Code refactoring.
+ 	* s-taspri-posix-noaltstack.ads: Minor refactoring.
+ 	* sinput.ads: Minor typo fix.
+ 
+ 2017-05-02  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_ch9.adb (Discriminated_Size): Moved to sem_util.
+ 	* sem_util.ads, sem_util.adb (Discriminated_Size): Predicate moved
+ 	here from exp_ch9, to recognize objects whose creation requires
+ 	dynamic allocation, so that the proper warning can be emitted
+ 	when restriction No_Implicit_Heap_Allocation is in effect.
+ 	* sem_ch3.adb (Analyze_Object_Declaration): Use Discriminated_Size
+ 	to emit proper warning when an object that requires dynamic
+ 	allocation is declared.
+ 
+ 2017-05-02  Tristan Gingold  <gingold@adacore.com>
+ 
+ 	* s-trasym.ads, s-trasym.adb (Enable_Cache): New.
+ 
+ 2017-05-02  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch4.adb (Find_Equality_Types, Try_One_Interp): The same relaxed
+ 	visibility rules for equality operators that apply within an
+ 	instantiation apply within an inlined body.
+ 	* sem_type.adb (Add_One_Interp): ditto.
+ 
+ 2017-05-02  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Pragma): Forbid pragma Contract_Cases on null
+ 	procedures.
+ 
+ 2017-05-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* snames.ads-tmpl
+ 	(Name_Assume, Name_Attribute_Definition, Name_Loop_Optimize,
+ 	Name_No_Tagged_Streams): Move to regular pragmas.  Add
+ 	placeholders for Default_Scalar_Storage_Order, Dispatching_Domain,
+ 	and Secondary_Stack_Size.
+ 	(Pragma_Id): Move Pragma_Assume,
+ 	Pragma_Attribute_Definition, Pragma_Loop_Optimize and
+ 	Pragma_No_Tagged_Streams to second part.
+ 
+ 2017-05-02  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* exp_attr.adb: Minor reformatting.
+ 
+ 2017-05-02  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch4.adb (Analyze_Selected_Component): Improve error
+ 	detection for illegal references to private components or
+ 	operations of a protected type in the body of the type.
+ 
+ 2017-05-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* opt.ads: Add missing GNAT markers in comments.
+ 	* opt.adb (Set_Opt_Config_Switches): Do not override earlier
+ 	settings of Optimize_Alignment at the end.
+ 
+ 2017-05-02  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* checks.adb (Apply_Constraint_Check): Do not apply
+ 	a discriminant check when the associated type is a constrained
+ 	subtype created for an unconstrained nominal type.
+ 	* exp_attr.adb: Minor reformatting.
+ 
+ 2017-05-02  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_ch3.adb (OK_For_Limited_Init_In_05): Handle correctly
+ 	the N_Raise_Expression case.
+ 	* sem_ch6.adb (Check_Limited_Return): Minor: clarify comment,
+ 	and add assertions.
+ 
+ 2017-05-02  Yannick Moy  <moy@adacore.com>
+ 
+ 	* exp_ch4.adb (Expand_N_Op_Ne): Do not bump parenthese level and
+ 	optimize length comparison in GNATprove mode.
+ 	* exp_spark.adb (Expand_SPARK_Op_Ne): New function to rewrite
+ 	operator /= into negation of operator = when needed.
+ 	(Expand_SPARK): Call new
+ 	function to expand operator /=.
+ 
+ 2017-05-02  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_fixd.adb (Expand_Divide_Fixed_By_Fixed_Giving_Fixed):
+ 	Simplify the expression for a fixed-fixed division to remove
+ 	divisions by constants whenever possible, as an optimization
+ 	for restricted targets.
+ 
+ 2017-05-02  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* checks.adb, sem_ch3.adb, sem_ch6.adb: Minor reformatting.
+ 
+ 2017-05-02  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_attr.adb (Callable, Identity, Terminated): Use Find_Prim_Op
+ 	to find primitive ops, instead of using an Identifier that will
+ 	later be looked up. This is necessary because these ops are not
+ 	necessarily visible at all places where we need to call them.
+ 	* exp_util.ads: Minor comment fix.
+ 
+ 2017-05-02  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch6.adb (Fully_Conformant_Expressions): Two entity
+ 	references are fully conformant if they are both expansions
+ 	of the discriminant of a protected type, within one of the
+ 	protected operations. One occurrence may be expanded into a
+ 	constant declaration while the other is an input parameter to
+ 	the corresponding generated subprogram.
+ 
+ 2017-05-02  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_ch3.adb (Check_For_Null_Excluding_Components): Created for
+ 	recursivly searching composite-types for null-excluding access
+ 	types and verifying them.
+ 	(Analyze_Object_Declaration): Add a
+ 	call to Check_Null_Excluding_Components for static verification
+ 	of non-initialized objects.
+ 	* checks.adb, checks.ads (Null_Exclusion_Static_Checks): Added
+ 	a parameter for a composite-type's component and an extra case
+ 	for printing component information.
+ 
+ 2017-05-02  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_ch10.adb (Analyze_Subunit): Take
+ 	configuration pragma into account when restoring appropriate
+ 	pragma for analysis of subunit.
+ 
+ 2017-05-02  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* s-tasren.adb, s-tasini.adb, s-taprop-linux.adb,
+ 	s-mudido-affinity.adb,, a-exetim-posix.adb, a-direio.adb,
+ 	g-socket.adb, s-taenca.adb, s-fileio.adb: Remove unused use-type
+ 	clauses from the runtime.
+ 
+ 2017-05-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* freeze.adb (Check_Component_Storage_Order): Do not treat bit-packed
+ 	array components specially.
+ 
+ 2017-05-02  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch8.adb (Premature_Usage): If the premature usage of
+ 	an entity is as the expression in its own object decaration,
+ 	rewrite the reference as Any_Id to prevent cascaded errors or
+ 	compiler loops when such an entity is used in an address clause.
+ 
+ 2017-05-01  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.c (components_to_record): Add missing guard.
+ 
+ 2017-05-01  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.c (components_to_record): Add more comments.
+ 	Put back pending fields onto the regular list if the misalignment
+ 	happens to cancel itself.
+ 
+ 2017-04-28  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch4.adb (Complete_Object_Operation): When rewriting the
+ 	controlling actual in a prefixed call, preserve the original node
+ 	information if the prefix itself has been rewritten, for ASIS use.
+ 
+ 2017-04-28  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* exp_ch6.adb (Insert_Post_Call_Actions):
+ 	Code clean up. Insert the post-call actions after an enclosing
+ 	procedure call when N denotes a function call and appears as an
+ 	actual parameter in the procedure call.
+ 
+ 2017-04-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* freeze.adb (Check_Component_Storage_Order): If there is a clause
+ 	for the component, also reject the attribute if the component
+ 	doesn't end on a byte boundary and its scalar storage order is
+ 	different from that of the enclosing record type.
+ 
+ 2017-04-28  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* atree.ads (Info_Messages): Removed.
+ 	(Warning_Info_Messages): New counter.
+ 	(Report_Info_Messages): New counter.
+ 	* err_vars.ads Update documentation.
+ 	* errout.adb (Delete_Warning_And_Continuations): Update
+ 	Info_Message occurrences.
+ 	(Error_Msg_Internal): Update Info_Message occurrences.
+ 	(Delete_Warning): Update Info_Message occurrences.
+ 	(Write_Error_Summary): Update Info_Message occurrences.
+ 	(Output_Messages): Update Info_Message occurrences.
+ 	(To_Be_Removed): Update Info_Message occurrences.
+ 	(Reset_Warnings): Update Info_Message occurrences.
+ 	* errutil.adb (Error_Msg): Update Info_Message occurrences.
+ 	(Finalize): Update Info_Message occurrences.
+ 	(Initialize): Update Info_Message occurrences.
+ 	* erroutc.adb (Delete_Msg): Update Info_Message occurrences.
+ 	(Compilation_Errors): Update Info_Message_Occurences.
+ 
+ 2017-04-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+         * exp_ch3.adb (Build_Init_Statements): Likewise on Nam.
+         * freeze.adb (Check_Component_Storage_Order): And on Comp_Byte_Aligned.
+         * sem_aggr.adb (Resolve_Record_Aggregate): Initialize Box_Node.
+         * sem_attr.adb (Loop_Entry): Initialize Encl_Loop.
+         * sem_ch12.adb (Build_Operator_Wrapper): Add pragma Warnings on Expr.
+         * sem_ch13.adb (Validate_Address_Clauses): Initialize Y_Alignment and
+         Y_Size.
+         * sem_eval.adb (Why_Not_Static): Initialize Typ.
+         * sem_prag.adb (Analyze_Pragma): Add pragma Warnings on Str.
+ 
+ 2017-04-28  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_util.ads, sem_util.adb (Might_Raise): New function
+ 	that replaces Is_Exception_Safe, but has the opposite
+ 	sense. Is_Exception_Safe was missing various cases -- calls inside
+ 	a pragma Debug, calls inside an 'if' or assignment statement,
+ 	etc. Might_Raise now walks the entire subtree looking for things
+ 	that can raise.
+ 	* exp_ch9.adb (Is_Exception_Safe): Remove.
+ 	(Build_Protected_Subprogram_Body): Replace call to
+ 	Is_Exception_Safe with "not Might_Raise". Misc cleanup (use
+ 	constants where possible).
+ 	* exp_ch7.adb: Rename Is_Protected_Body -->
+ 	Is_Protected_Subp_Body. A protected_body is something different
+ 	in the grammar.
+ 
+ 2017-04-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* inline.adb (Expand_Inlined_Call): Initialize Targ1 variable.
+ 	* par-ch3.adb (P_Component_Items): Initialize Decl_Node variable.
+ 	(P_Discrete_Choice_List): Initialize Expr_Node variable.
+ 	* par-ch9.adb (P_Task): Initialize Aspect_Sloc variable.
+ 	(P_Protected): Likewise.
+ 	* sem_case.adb (Check_Duplicates):
+ 	Add pragma Warnings on variable.
+ 	* sem_ch12.adb (Preanalyze_Actuals): Initialize Vis variable.
+ 	* sem_ch4.adb (List_Operand_Interps):  Add pragma Warnings on variable.
+ 	* sem_ch5.adb (Analyze_Assignment): Initialize Save_Full_Analysis.
+ 	(Analyze_Exit_Statement): Initialize Scope_Id variable.
+ 	(Analyze_Iterator_Specification): Initialize Bas variable.
+ 	* sem_ch9.adb (Allows_Lock_Free_Implementation): Initialize
+ 	Error_Count (Satisfies_Lock_Free_Requirements): Likewise.
+ 	(Analyze_Accept_Statement): Initialize Task_Nam.
+ 
+ 2017-04-28  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* checks.adb (Install_Primitive_Elaboration_Check):
+ 	Do not generate an elaboration check if all checks have been
+ 	suppressed.
+ 
+ 2017-04-28  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch13.adb (Analyze_Aspect_Specifications, case
+ 	Interrupt_Handler and Attach_Handler): Generate reference
+ 	to protected operation to prevent spurious warnings about
+ 	unreferenced entities. Previous scheme failed with style checks
+ 	enabled.
+ 
+ 2017-04-28  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_prag.adb (Relocate_Pragmas_To_Body): A pragma Warnings
+ 	that follows an expression function must not be relocated to
+ 	the generated body, because it applies to the code that follows.
+ 
+ 2017-04-28  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* sem_util.adb (Is_Dependent_Component_Of_Mutable_Object): Test
+ 	Relaxed_RM_Semantics to avoid having CodePeer issue errors on
+ 	code that might violate the more stringent checking for 'Access
+ 	introduced in Ada 2005.
+ 
+ 2017-04-28  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* a-cforse.adb: minor style fix in comment.
+ 
+ 2017-04-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch9.adb (Build_Lock_Free_Unprotected_Subprogram_Body): Also
+ 	initialize Block_Decls variable.
+ 	(Expand_Entry_Barrier): Add pragma Warnings on Func_Body variable.
+ 	(Build_Dispatching_Requeue): Add pragma Warnings on Op variable.
+ 	* exp_disp.adb (Expand_Interface_Actuals): Initialize
+ 	Formal_DDT and Actual_DDT variables.
+ 	(Expand_Interface_Thunk): Initialize Iface_Formal.
+ 	(Make_DT): Initialize Size_Comp.
+ 	(Make_Select_Specific_Data_Table): Initialize Decls.
+ 	* exp_dist.adb (Add_RACW_Primitive_Declarations_And_Bodies):
+ 	Also initialize more RPC_Receiver_* variables.
+ 	(Build_To_Any_Function): Initialize Cstr_Formal.
+ 	* exp_prag.adb (Expand_Pragma_Contract_Cases): Initialize Msg_Str.
+ 
+ 2017-04-28  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch6.adb (Freeze_Type_Refs): For an interface conversion
+ 	node between access types, freeze the designated type as well,
+ 	so that dispatch table pointers are created in the proper scope,
+ 	and not in the constructed body of the expression function.
+ 
+ 2017-04-28  Bob Duff  <duff@adacore.com>
+ 
+ 	* alloc.ads (Nodes_Initial): Go back to previous value. The large
+ 	value makes large compilations faster, but small compilations slower.
+ 
+ 2017-04-28  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_util.adb: minor typos in Is_Child_Or_Sibling.
+ 
+ 2017-04-28  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* erroutc.adb (Compilation_Errors): Do not consider info messages
+ 	as suitable warnings when warnings must be treated as errors.
+ 	* sem_ch7.adb (Analyze_Package_Specification): Do not consider
+ 	internally-generated packages when outputting completion
+ 	information.
+ 	* errout.adb (Output_Messages): Do not consider info messages as
+ 	suitable warnings when warnings must be treated as errors.
+ 	* errutil.adb (Finalize): Do not consider info messages as
+ 	suitable warnings when warnings must be treated as errors.
+ 
+ 2017-04-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* warnsw.ads: Minor fix for incorrect wording in comment.
+ 
+ 2017-04-28  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_res.adb (In_Instance_Code): New predicate in
+ 	Valid_Conversion, to determine whether a type conversion appears
+ 	as (or within) an actual for a formal object.  Type conversions
+ 	in instances are not rechecked in Valid_Conversion because
+ 	visibility changes between generic location andi instance may
+ 	lead to spurious errors, but conversions within an actual must be
+ 	fully checked, and they are not fully resolved when pre-analyzing
+ 	the actuals.
+ 
+ 2017-04-28  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* exp_ch6.adb (Expand_N_Extended_Return_Statement): Use
+ 	New_Copy_Tree instead of Relocate_Node as any subsequent copies
+ 	of the relocated node will have mangled Parent pointers.
+ 	* sem_util.adb (Build_NCT_Hash_Tables): Reset both hash
+ 	tables used in conjunction with entity and itype replication.
+ 	(Visit_Entity): Rewrite the restriction on which entities
+ 	require duplication.  The restriction now includes all types.
+ 
+ 2017-04-28  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* a-cofuse.ads, a-cfdlli.ads, a-cfhase.adb, a-cfhase.ads, a-cfinve.adb,
+ 	a-cfinve.ads, a-cforma.adb, a-cforma.ads, a-cofuma.adb, a-cofuma.ads,
+ 	a-cfhama.adb, a-cfhama.ads, a-cforse.adb: Minor reformatting and code
+ 	cleanups.
+ 
+ 2017-04-28  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* exp_util.adb, g-dyntab.adb, par-ch4.adb, sem_util.adb, sem_attr.adb,
+ 	gnat1drv.adb, exp_disp.adb, namet.adb, alloc.ads: Minor reformatting.
+ 
+ 2017-04-28  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* exp_util.adb: Minor reformatting.
+ 
+ 2017-04-28  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch4.adb: Fix copy/pasto.
+ 
+ 2017-04-27  Tristan Gingold  <gingold@adacore.com>
+ 
+ 	* gcc-interface/Make-lang.in: Define EH_MECHANISM while building
+ 	raise-gcc.c. Fix include search path for raise-gcc.c
+ 
+ 2017-04-27  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* fe.h (Warn_On_Questionable_Layout): Declare.
+ 	* warnsw.ads (Warn_On_Record_Holes): Move down.
+ 	(Warn_On_Questionable_Layout): New boolean variable.
+ 	(Warning_Record): Add Warn_On_Questionable_Layout field.
+ 	* warnsw.adb (All_Warnings): Set Warn_On_Questionable_Layout.
+ 	(Restore_Warnings): Likewise.
+ 	(Save_Warnings): Likewise.
+ 	(Set_Dot_Warning_Switch): Handle 'q' and 'Q' letters.
+ 	* gcc-interface/decl.c (gnat_to_gnu_entity): Adjust call to
+ 	components_to_record.
+ 	(gnu_field_to_gnat): New function.
+ 	(warn_on_field_placement): Likewise.
+ 	(components_to_record): Add GNAT_RECORD_TYPE and remove REORDER
+ 	parameters.  Rename local variables and adjust recursive call.
+ 	Rework final scan of the field list and implement warnings on the
+ 	problematic placement of specific sorts of fields.
+ 
+ 2017-04-27  Bob Duff  <duff@adacore.com>
+ 
+ 	* errout.adb, exp_aggr.adb, exp_attr.adb, exp_code.adb, fname.adb,
+ 	* fname.ads, freeze.adb, inline.adb, lib.adb, lib.ads, lib-list.adb,
+ 	* lib-load.adb, lib-writ.adb, par.adb, restrict.adb, rtsfind.adb,
+ 	* sem.adb, sem_cat.adb, sem_ch10.adb, sem_ch12.adb, sem_ch3.adb,
+ 	* sem_ch4.adb, sem_ch6.adb, sem_ch8.adb, sem_ch9.adb, sem_elab.adb,
+ 	* sem_intr.adb, sem_res.adb, sem_util.adb, sem_warn.adb, sprint.adb:
+ 	For efficiency, cache results of Is_Internal_File_Name and
+ 	Is_Predefined_File_Name in the Units table. This avoids a lot
+ 	of repeated text processing.
+ 
+ 2017-04-27  Emmanuel Briot  <briot@adacore.com>
+ 
+ 	* g-comlin.adb (Sort_Sections): remove useless test.
+ 
+ 2017-04-27  Claire Dross  <dross@adacore.com>
+ 
+ 	* a-cfhase.adb, a-cfhase.ads (=): Generic parameter removed to
+ 	allow the use of regular equality over elements in contracts.
+ 	(Formal_Model): Ghost package containing model functions that are
+ 	used in subprogram contracts.
+ 	(Current_To_Last): Removed, model functions should be used instead.
+ 	(First_To_Previous): Removed, model functions should be used instead.
+ 	(Strict_Equal): Removed, model functions should be used instead.
+ 	(No_Overlap): Removed, model functions should be used instead.
+ 	(Equivalent_Keys): Functions over cursors are removed. They were
+ 	awkward with explicit container parameters.
+ 	* a-cforse.adb, a-cforse.ads (=): Generic parameter removed to
+ 	allow the use of regular equality over elements in contracts.
+ 	(Formal_Model): Ghost package containing model functions that
+ 	are used in subprogram contracts.
+ 	(Current_To_Last): Removed, model functions should be used instead.
+ 	(First_To_Previous): Removed, model functions should be used instead.
+ 	(Strict_Equal): Removed, model functions should be used instead.
+ 	(No_Overlap): Removed, model functions should be used instead.
+ 
+ 2017-04-27  Yannick Moy  <moy@adacore.com>
+ 
+ 	* gnat1drv.adb: Code cleanup.
+ 
+ 2017-04-27  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_util.adb (Replace_Entity): The prefix of a 'Result
+ 	attribute reference in a post- condition is the subprogram to
+ 	which the condition applies. If the condition is inherited
+ 	by a type extension, the prefix becomes a reference to the
+ 	inherited operation, but there is no need to create a wrapper
+ 	for this operation, because 'Result is expanded independently
+ 	when elaborating the postconditions.
+ 
+ 2017-04-27  Bob Duff  <duff@adacore.com>
+ 
+ 	* sinput.adb: Minor code cleanup.
+ 	* namet.adb (Append): Create faster versions of
+ 	Append(String) and Append(Name_Id) by using slice assignment
+ 	instead of loops.
+ 	* sem_util.adb (In_Instance): Speed this up by removing
+ 	unnecessary tests; Is_Generic_Instance is defined for all
+ 	entities.
+ 	* sem_util.ads, sem_util.adb (In_Parameter_Specification):
+ 	Remove unused function.
+ 	* alloc.ads (Nodes_Initial): Use a much larger value, because
+ 	the compiler was spending a lot of time copying the nodes table
+ 	when it grows. This number was chosen in 1996, so is rather out
+ 	of date with current memory sizes. Anyway, it's virtual memory.
+ 	Get rid of Orig_Nodes_...; use Node_... instead.
+ 	* atree.adb (Lock): Do not release the Nodes tables; it's a
+ 	waste of time.
+ 	Orig_Nodes_ ==> Nodes_
+ 	* nlists.adb: Orig_Nodes_ ==> Nodes_
+ 	* g-table.adb: Remove unused "with" clause.
+ 	* g-table.ads, table.ads: Remove Big_Table_Type, which should
+ 	not be used by clients.
+ 	* g-dyntab.adb (Last_Allocated): New function
+ 	to encapsulate T.P.Last_Allocated, which I'm thinking of changing.
+ 
+ 2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_eval.adb (Subtypes_Statically_Compatible): Remove duplicated
+ 	check.
+ 	(Subtypes_Statically_Match): Remove duplicate check.
+ 	* sem_prag.adb (Check_Arg_Is_External_Name): Remove duplicate check.
+ 
+ 2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* exp_aggr.adb (Replace_Type): Remove the special processing
+ 	for selected components.
+ 	* exp_attr.adb (Expand_N_Attribute_Reference): Merge the
+ 	processing for attributes Fixed_Value and Integer_Value.
+ 	* exp_util.adb (Side_Effect_Free): Merge the processing for
+ 	qualified expressions, type conversions, and unchecked type
+ 	conversions.
+ 	* g-comlin.adb (Is_In_Config): Merge the processing for No_Space
+ 	and Optional.
+ 	* par-ch3.adb (P_Declarative_Items): Merge the processing for
+ 	tokens function, not, overriding, and procedure.
+ 	* sem_ch6.adb (Fully_Conformant_Expressions): Merge the processing
+ 	for qualified expressions, type conversions, and unchecked
+ 	type conversions.
+ 	* sem_util.adb (Compile_Time_Constraint_Error): Merge the
+ 	processing for Ada 83 and instances.
+ 	(Object_Access_Level): Merge the processing for indexed components
+ 	and selected components.
+ 	* uname.adb (Add_Node_Name): Merge the processing for stubs.
+ 
+ 2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* checks.adb (Install_Primitive_Elaboration_Check):
+ 	Do not generate the check when restriction No_Elaboration_Code
+ 	is in effect.
+ 
+ 2017-04-27  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_disp.adb (Build_Class_Wide_Check): New subsidiary
+ 	of Expand_Dispatching_Call. If the denoted subprogram has a
+ 	class-wide precondition, this is the only precondition that
+ 	applies to the call, rather that the class-wide preconditions
+ 	that may apply to the body that is executed. (This is specified
+ 	in AI12-0195).
+ 
+ 2017-04-27  Yannick Moy  <moy@adacore.com>
+ 
+ 	* gnat1drv.adb (Adjust_Global_Switches): Issue
+ 	a warning in GNATprove mode if the runtime library does not
+ 	support IEEE-754 floats.
+ 
+ 2017-04-27  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_prag.adb (Inherit_Class_Wide_Pre): If the parent operation
+ 	is itself inherited it does not carry any contract information,
+ 	so examine its parent operation which is its Alias.
+ 
+ 2017-04-27  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_attr.adb (Analyze_Attribute, case 'Image): In Ada2012 the
+ 	prefix can be an object reference in which case Obj'Image (X)
+ 	can only be interpreted as an indexing of the parameterless
+ 	version of the attribute.
+ 	* par-ch4.adb (P_Name): An attribute reference can be the prefix of
+ 	an indexing or a slice operation if the attribute does not require
+ 	parameters. In Ada2012 'Image also belongs in this category,
+ 	and A'Image (lo .. hi) is legal and must be parsed as a slice.
+ 
+ 2017-04-27  Yannick Moy  <moy@adacore.com>
+ 
+ 	* exp_ch4.adb: Minor reformatting.
+ 	* gnat1drv.adb (Adjust_Global_Switches): When in GNATprove mode,
+ 	disable the CodePeer and C generation modes. Similar to the
+ 	opposite actions done in CodePeer mode.
+ 
+ 2017-04-27  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_res.adb: Remove duplicate code.
+ 	* sem_attr.adb: Delete duplicate code.
+ 
+ 2017-04-27  Bob Duff  <duff@adacore.com>
+ 
+ 	* g-dyntab.adb: Reduce the amount of copying in
+ 	Release. No need to copy items past Last.
+ 
+ 2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* checks.adb Add with and use clauses for Sem_Disp.
+ 	(Install_Primitive_Elaboration_Check): New routine.
+ 	* checks.ads (Install_Primitive_Elaboration_Check): New routine.
+ 	* exp_attr.adb (Expand_N_Attribute_Reference): Clean up the
+ 	processing of 'Elaborated.
+ 	* exp_ch6.adb (Expand_N_Subprogram_Body): Install a primitive
+ 	elaboration check.
+ 
+ 2017-04-27  Bob Duff  <duff@adacore.com>
+ 
+ 	* g-dyntab.ads, g-dyntab.adb, g-table.ads: Remove incorrect assertion.
+ 	If the table grows and then shrinks back to empty, we won't necessarily
+ 	point back to the empty array. Code cleanups.
+ 	* sinput.ads: Add 'Base to Size clause to match the declared
+ 	component subtypes.
+ 
+ 2017-04-27  Claire Dross  <dross@adacore.com>
+ 
+ 	* a-cforma.adb, a-cforma.ads (=): Generic parameter removed to
+ 	allow the use of regular equality over elements in contracts.
+ 	(Formal_Model): Ghost package containing model functions that
+ 	are used in subprogram contracts.
+ 	(Current_To_Last): Removed, model functions should be used instead.
+ 	(First_To_Previous): Removed, model functions should be used instead.
+ 	(Strict_Equal): Removed, model functions should be used instead.
+ 	(No_Overlap): Removed, model functions should be used instead.
+ 	* a-cofuma.adb, a-cofuma.ads (Enable_Handling_Of_Equivalence)
+ 	Boolean generic parameter to disable contracts for equivalence
+ 	between keys.
+ 	(Witness): Create a witness of a key that is used for handling of
+ 	equivalence between keys.
+ 	(Has_Witness): Check whether a witness is contained in a map.
+ 	(W_Get): Get the element associated to a witness.
+ 	(Lift_Equivalent_Keys): Removed, equivalence between keys is handled
+ 	directly.
+ 	* a-cofuse.adb, a-cofuse.ads (Enable_Handling_Of_Equivalence)
+ 	Boolean generic parameter to disable contracts for equivalence
+ 	between keys.
+ 	* a-cfhama.adb, a-cfhama.ads (Formal_Model.P) Disable handling
+ 	of equivalence on functional maps.
+ 	* a-cfdlli.adb, a-cfdlli.ads (Formal_Model.P) Disable handling
+ 	of equivalence on functional maps.
+ 
+ 2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* exp_ch9.adb (Expand_Entry_Barrier): Code
+ 	cleanup. Do not perform the optimization which removes the
+ 	declarations of the discriminant and component renamings when
+ 	validity checks on operands and attributes are in effect.
+ 
+ 2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* exp_spark.adb, exp_util.adb, sem_ch7.adb, g-dyntab.adb, g-dyntab.ads,
+ 	freeze.adb, a-cfinve.ads, a-cofuma.adb, a-cofuma.ads, a-cfhama.adb,
+ 	a-cfhama.ads, a-cofove.ads: Minor reformatting.
+ 
+ 2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* g-debpoo.adb (Dump_Gnatmem): Protect against a possible null
+ 	pointer dereference.
+ 	* g-spipat.adb (Dump): Code clean up. Protect against a possible
+ 	null pointer dereference.
+ 
+ 2017-04-27  Bob Duff  <duff@adacore.com>
+ 
+ 	* g-dyntab.ads, g-dyntab.adb: Default for Table_Low_Bound.
+ 	Rename Empty --> Empty_Table_Ptr, and don't duplicate code for it.
+ 	Free renames Init, since they do the same thing.
+ 	* g-table.ads: Default for Table_Low_Bound.
+ 	* table.ads: Default for Table_Low_Bound, Table_Initial, and
+ 	Table_Increment.
+ 
+ 2017-04-27  Bob Duff  <duff@adacore.com>
+ 
+ 	* g-dyntab.ads, g-dyntab.adb: Add assertions to subprograms that
+ 	can reallocate.
+ 	* atree.adb, elists.adb, fname-uf.adb, ghost.adb, inline.adb,
+ 	* lib.adb, namet.adb, nlists.adb, sem.adb, sinput.adb, stringt.adb:
+ 	Reorder code so that above assertions do not fail.
+ 	* table.ads: Remove obsolete comment on Locked.
+ 
+ 2017-04-27  Claire Dross  <dross@adacore.com>
+ 
+ 	* a-cfdlli.ads: Code cleanup.
+ 
+ 2017-04-27  Yannick Moy  <moy@adacore.com>
+ 
+ 	* exp_spark.adb (Expand_SPARK_Freeze_Type): Build a DIC procedure
+ 	when needed for proof.	(Expand_SPARK): Call the new procedure.
+ 	* exp_util.ads Fix typo.
+ 
+ 2017-04-27  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* a-cofuma.ads, a-cfhama.ads: Minor reformatting, grammar, and typo
+ 	fixes.
+ 
+ 2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_elab.adb Add new type Visited_Element
+ 	and update the contents of table Elab_Visited.	Various code clean up.
+ 	(Check_Elab_Call): Determine whether a prior call to
+ 	the same subprogram was already examined within the same context.
+ 	(Check_Internal_Call_Continue): Register the subprogram being
+ 	called as examined within a particular context. Do not suppress
+ 	elaboration warnings.
+ 
+ 2017-04-27  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* xoscons.adb, osint.ads: Minor reformatting.
+ 
+ 2017-04-27  Bob Duff  <duff@adacore.com>
+ 
+ 	* g-dyntab.ads, g-dyntab.adb: Misc cleanup. Rename
+ 	Table_Count_Type --> Table_Last_Type, because the name
+ 	was confusing (a "count" usually starts at zero).  Add
+ 	functionality supported or needed by other tables packages
+ 	(Move, Release_Threshold).
+ 	* g-table.ads, g-table.adb: This is now just a thin wrapper
+ 	around g-dyntab.ads/g-dyntab.adb.  Add functionality supported
+ 	or needed by other tables packages (Save, Restore).
+ 	* table.ads, table.adb: This is now just a thin wrapper around
+ 	* g-table.ads/g-table.adb.
+ 	* namet.h, scos.h, uintp.h: These files are reaching into the
+ 	private data of some instances of g-table, whose names changed,
+ 	so the above change requires some adjustment here. It now uses
+ 	public interfaces.
+ 
+ 2017-04-27  Bob Duff  <duff@adacore.com>
+ 
+ 	* namet.adb, namet.ads: Minor: remove unused procedures.
+ 
+ 2017-04-27  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* checks.adb (Apply_Scalar_Range_Check): Initialize Ok variable too.
+ 	(Minimize_Eliminate_Overflows): Initialize Llo and Lhi.
+ 	Add pragma Warnings on Rtype variable in nested block.	*
+ 	* exp_ch3.adb (Build_Init_Statements): Initialize VAR_LOC.
+ 	* exp_ch4.adb (Expand_Concatenate): Initialize 3 variables.
+ 	(Size_In_Storage_Elements): Add pragma Warnings on Res variable.
+ 	* exp_ch7.adb (Build_Adjust_Statements): Initialize Bod_Stmts.
+ 	(Process_Component_List_For_Finalize): Initialize Counter_Id.
+ 	(Build_Finalize_Statements): Initialize Bod_Stmts.
+ 	* exp_disp.adb (Expand_Dispatching_Call): Initialize SCIL_Node.
+ 
+ 2017-04-27  Claire Dross  <dross@adacore.com>
+ 
+ 	* a-cfhama.adb, a-cfhamai.ads (=): Generic parameter removed to
+ 	allow the use of regular equality over elements in contracts.
+ 	(Formal_Model): Ghost package containing model functions that are
+ 	used in subprogram contracts.
+ 	(Current_To_Last): Removed, model
+ 	functions should be used instead.
+ 	(First_To_Previous): Removed, model functions should be used instead.
+ 	(Strict_Equal): Removed, model functions should be used instead.
+ 	(No_Overlap): Removed, model functions should be used instead.
+ 	(Equivalent_Keys): Functions over cursors are removed. They were
+ 	awkward with explicit container parameters.
+ 	* a-cofuma.adb, a-cofuma.ads (Lift_Equivalent_Keys): New lemma
+ 	(proof only) procedure to help GNATprove when equivalence over
+ 	keys is not equality.
+ 
+ 2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* exp_util.adb, a-cfdlli.adb, a-cfdlli.ads, exp_ch9.adb, g-dyntab.adb,
+ 	sem_dim.adb, a-cfinve.adb, a-cfinve.ads, a-cofove.adb, a-cofove.ads:
+ 	Minor reformatting and code cleanups.
+ 
+ 2017-04-27  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* freeze.adb (Build_Inherited_Condition_Pragmas): New procedure,
+ 	subsidiary of Check_Inherited_Conditions, to build pragmas for an
+ 	operation whose ancestor has classwide pre/postconditions. This
+ 	is used both to check the legality of the inheritance in Ada
+ 	and in SPARK, and to determine whether a wrapper is needed for
+ 	an inherited operation.
+ 	* exp_util.adb (Build_Class_Wide_Expression, Replace_Entity):
+ 	Improve placement of error message for inherited classwide
+ 	conditions that become illegal on type derivation.
+ 
+ 2017-04-27  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_ch12.adb (Analyze_Generic_Package_Declaration): Set
+ 	SPARK_Mode from context on generic package.
+ 	* sem_ch7.adb (Analyze_Package_Declaration): Simplify code to remove
+ 	useless test.
+ 
+ 2017-04-27  Claire Dross  <dross@adacore.com>
+ 
+ 	* a-cofuve.ads (Range_Shifted): Rewrite precondition to avoid
+ 	overflows in computations.
+ 	* a-cofove.ads (Capacity_Range): Rewrite last bound to avoid
+ 	overflows in computations.
+ 	(Insert): Rewrite precondition to avoid overflows in computations.
+ 	* a-cfinve.ads (Capacity_Range): Rewrite last bound to avoid
+ 	overflows in computations.
+ 	(Insert): Rewrite precondition to avoid overflows in computations.
+ 
+ 2017-04-27  Steve Baird  <baird@adacore.com>
+ 
+ 	* exp_ch9.adb (Expand_N_Asynchronous_Select): Initialize the Cancel
+ 	flag when it is declared in order to avoid confusing CodePeer about
+ 	the possibility of an uninitialized variable read.
+ 
+ 2017-04-27  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_dim.adb (Analyze_Dimension_Object_Declaration): There is
+ 	no dimensionality error if the subtype of the expression is
+ 	identical to the nominal subtype in the declaration, even though
+ 	the expression itself may have been constant-folded and lack a
+ 	dimension vector.
+ 	* sem_dim.ads: Add comments on setting of dimension vectors and
+ 	its interaction with node rewritings and side-effect removal.
+ 
+ 2017-04-27  Bob Duff  <duff@adacore.com>
+ 
+ 	* debug.adb: Minor comment correction.
+ 	* sem_dim.ads: Minor reformatting and typo fixes.
+ 
+ 2017-04-27  Bob Duff  <duff@adacore.com>
+ 
+ 	* g-table.adb, g-table.adsa, scos.h: From the C side, access First and
+ 	Last of the tables via function calls, rather than relying on layout
+ 	of data structures.
+ 
+ 2017-04-27  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_util.adb: No wrapper in GNATprove mode.
+ 
+ 2017-04-27  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Comparison_Op): Always
+ 	evaluate comparisons between values of universal types.
+ 
+ 2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_elab.adb (Check_Internal_Call_Continue): Do not generate
+ 	an elaboration counter nor a check when in GNATprove mode.
+ 	* sem_util.adb (Build_Elaboration_Entity): Do not create an
+ 	elaboration counter when in GNATprove mode.
+ 
+ 2017-04-27  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* freeze.adb: copy-paste typo.
+ 
+ 2017-04-27  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Pre_Post_In_Decl_Part):
+ 	Use correct test to detect call in GNATprove mode instead of
+ 	compilation.
+ 
+ 2017-04-27  Claire Dross  <dross@adacore.com>
+ 
+ 	* a-cfdlli.adb, a-cfdlli.ads (Formal_Model.M_Elements_In_Union):
+ 	New property function expressing that the element of a
+ 	sequence are contained in the union of two sequences.
+ 	(Formal_Model.M_Elements_Included): New property function
+ 	expressing that the element of a sequence are another sequence.
+ 	(Generic_Sorting): Use new property functions to state that
+ 	elements are preserved by Sort and Merge.
+ 	* a-cofove.adb, a-cofove.ads (=): Generic parameter removed to
+ 	allow the use of regular equality over elements in contracts.
+ 	(Formal_Model): Ghost package containing model functions
+ 	that are used in subprogram contracts.	(Capacity):
+ 	On unbounded containers, return the maximal capacity.
+ 	(Current_To_Last): Removed, model functions should be used instead.
+ 	(First_To_Previous): Removed, model functions should be used instead.
+ 	(Append): Default parameter value replaced
+ 	by new wrapper to allow more precise contracts.
+ 	(Insert): Subprogram restored, it seems it was useful to users even if
+ 	it is inefficient.
+ 	(Delete): Subprogram restored, it seems it was useful to users even if
+ 	it is inefficient.
+ 	(Prepend): Subprogram restored, it seems it was useful to users even
+ 	if it is inefficient.
+ 	(Delete_First): Subprogram restored, it seems it
+ 	was useful to users even if it is inefficient.	(Delete_Last):
+ 	Default parameter value replaced by new wrapper to allow more
+ 	precise contracts.
+ 	(Generic_Sorting.Merge): Subprogram restored.
+ 	* a-cfinve.adb, a-cfinve.ads (=): Generic parameter removed to
+ 	allow the use of regular equality over elements in contracts.
+ 	(Formal_Model): Ghost package containing model functions
+ 	that are used in subprogram contracts.	(Capacity):
+ 	On unbounded containers, return the maximal capacity.
+ 	(Current_To_Last): Removed, model functions should be used
+ 	instead.
+ 	(First_To_Previous): Removed, model functions should be used instead.
+ 	(Append): Default parameter value replaced
+ 	by new wrapper to allow more precise contracts.
+ 	(Insert): Subprogram restored, it seems it was useful to users even if
+ 	it is inefficient.
+ 	(Delete): Subprogram restored, it seems it was useful to users even if
+ 	it is inefficient.
+ 	(Prepend): Subprogram restored, it seems it was useful to users even
+ 	if it is inefficient.
+ 	(Delete_First): Subprogram restored, it seems it
+ 	was useful to users even if it is inefficient.	(Delete_Last):
+ 	Default parameter value replaced by new wrapper to allow more
+ 	precise contracts.
+ 	(Generic_Sorting.Merge): Subprogram restored.
+ 	(Vector): Do not reuse formal vectors, as it is no longer possible
+ 	to supply them with an equality function over elements.
+ 
+ 2017-04-27  Bob Duff  <duff@adacore.com>
+ 
+ 	* g-dyntab.adb (Release): When allocating the new
+ 	table, use the correct slice of the old table to initialize it.
+ 
+ 2017-04-27  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* einfo.ads: Minor fixes in comments.
+ 
+ 2017-04-27  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_prag.adb: disable clones in SPARK_Mode.
+ 
+ 2017-04-27  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* sem_util.ads, contracts.adb: Minor reformatting.
+ 
+ 2017-04-27  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_util.adb, sem_util.ads (Build_Class_Wide_Clone_Body):
+ 	Build body of subprogram that has a class-wide condition that
+ 	contains calls to other primitives.
+ 	(Build_Class_Wide_Clone_Call); Build a call to the common
+ 	class-wide clone of a subprogram with classwide conditions. The
+ 	body of the subprogram becomes a wrapper for a call to the
+ 	clone. The inherited operation becomes a similar wrapper to which
+ 	modified conditions apply, and the call to the clone includes
+ 	the proper conversion in a call the parent operation.
+ 	(Build_Class_Wide_Clone_Decl (Spec_Id : Entity_Id): For a
+ 	subprogram that has a classwide condition that contains calls to
+ 	other primitives, build an internal subprogram that is invoked
+ 	through a type-specific wrapper for all inherited subprograms
+ 	that may have a modified condition.
+ 	* sem_prag.adb (Check_References): If subprogram has a classwide
+ 	condition, create entity for corresponding clone, to be invoked
+ 	through wrapper subprograns.
+ 	(Analyze_Pre_Post_Condition_In_Decl_Part): Do not emit error
+ 	message about placement if pragma isi internally generated.
+ 	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): If subprogram has
+ 	a classwide clone, build body of clone as copy of original body,
+ 	and rewrite original body as a wrapper as a wrapper for a call to
+ 	the clone, so that it incorporates the original pre/postconditions
+ 	of the subprogram.
+ 	* freeze.adb (Check_Inherited_Conditions): For an inherited
+ 	subprogram that inherits a classwide condition, build spec and
+ 	body of corresponding wrapper so that call to inherited operation
+ 	gets the modified conditions.
+ 	* contracts.adb (Analyze_Contracts): If analysis of classwide
+ 	condition has created a clone for a primitive operation, analyze
+ 	declaration of clone.
+ 
+ 2017-04-27  Steve Baird  <baird@adacore.com>
+ 
+ 	* exp_util.adb (Build_Allocate_Deallocate_Proc):
+ 	Add "Suppress => All_Checks" to avoid generating unnecessary
+ 	checks.
+ 
+ 2017-04-27  Yannick Moy  <moy@adacore.com>
+ 
+ 	* debug.adb: Reserve debug flag 'm' for no inlining in GNATprove.
+ 	* sem_ch6.adb (Anayze_Subprogram_Body_Helper): Skip creation of
+ 	inlining body in GNATprove mode when switch -gnatdm used.
+ 	* sem_res.adb (Resolve_Call): Skip detection of lack of inlining
+ 	in GNATprove mode when switch -gnatdm used.
+ 
+ 2017-04-27  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_ch13.adb (Analyze_Attribute_Definition_Clause
+ 	[Attribute_Address]): Call Set_Address_Taken when ignoring rep
+ 	clauses, so that we keep an indication of the address clause
+ 	before removing it from the tree.
+ 
+ 2017-04-27  Yannick Moy  <moy@adacore.com>
+ 
+ 	* exp_util.ads, exp_util.adb (Evaluate_Name): Force evaluation
+ 	of expression being qualified, when not an object name, or else
+ 	evaluate the underlying name.
+ 
+ 2017-04-27  Jerome Lambourg  <lambourg@adacore.com>
+ 
+ 	* bindusg.adb, bindgen.adb, gnatbind.adb, opt.ads: add -nognarl switch.
+ 
+ 2017-04-27  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* exp_ch7.adb (Build_Finalize_Statements): Move Num_Comps to
+ 	Process_Component_List_For_Finalization as a local variable.
+ 	(Process_Component_For_Finalize): Add an extra parameter to avoid
+ 	global references.
+ 	(Process_Component_List_For_Finalization): Correct calls to
+ 	Process_Component_For_Finalize to take Num_Comps as a parameter.
+ 
+ 2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_ch8.adb (Find_Direct_Name): Account for the case where
+ 	a use-visible entity is defined within a nested scope of an
+ 	instance when giving priority to entities which were visible in
+ 	the original generic.
+ 	* sem_util.ads, sem_util.adb (Nearest_Enclosing_Instance): New routine.
+ 
+ 2017-04-27  Tristan Gingold  <gingold@adacore.com>
+ 
+ 	* raise-gcc.c: Don't use unwind.h while compiling
+ 	for the frontend, but mimic host behavior.
+ 
+ 2017-04-27  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_ch3.adb (Build_Discriminated_Subtype):
+ 	Propagate Has_Pragma_Unreferenced_Objects to the built subtype.
+ 
+ 2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Global_Item):
+ 	Do not consider discriminants because they are not "entire
+ 	objects". Remove the discriminant-related checks because they are
+ 	obsolete.
+ 	(Analyze_Input_Output): Do not consider discriminants
+ 	because they are not "entire objects".
+ 
+ 2017-04-27  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch13.adb (Check_Aspect_At_End_Of_Declarations): Do not
+ 	perform check if the current scope does not come from source,
+ 	as is the case for a rewritten task body, because check has
+ 	been performed already, and may not be doable because of changed
+ 	visibility.
+ 
+ 2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* a-cofuse.adb, a-cfdlli.adb, a-cofuse.ads, a-cfdlli.ads, a-cofuve.adb,
+ 	a-cofuve.ads, a-cofuma.adb, a-cofuma.ads, sem_eval.adb, a-cofuba.adb:
+ 	Minor reformatting.
+ 
+ 2017-04-27  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch4.adb (Analyze_Call): If the return type of a function
+ 	is incomplete in an context in which the full view is available,
+ 	replace the type of the call by the full view, to prevent spurious
+ 	type errors.
+ 	* exp_disp.adb (Check_Premature_Freezing): Disable check on an
+ 	abstract subprogram so that compiler does not reject a parameter
+ 	of a primitive operation of a tagged type being frozen, when
+ 	the untagged type of that parameter cannot be frozen.
+ 
+ 2017-04-27  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_attr.adb (Compute_Type_Key): Don't walk
+ 	representation items for irrelevant types, which could be in a
+ 	different source file.
+ 
+ 2017-04-27  Steve Baird  <baird@adacore.com>
+ 
+ 	* exp_attr.adb (Expand_N_Attribute_Reference):
+ 	Don't expand Image, Wide_Image, Wide_Wide_Image attributes
+ 	for CodePeer.
+ 
+ 2017-04-27  Yannick Moy  <moy@adacore.com>
+ 
+ 	* exp_unst.ads: Fix typos in comments.
+ 
+ 2017-04-27  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_eval.adb (Choice_Matches): Handle properly a real literal
+ 	whose type has a defined static predicate.
+ 
+ 2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* exp_ch4.adb (Insert_Dereference_Action):
+ 	Do not adjust the address of a controlled object when the
+ 	associated access type is subject to pragma No_Heap_Finalization.
+ 	Code reformatting.
+ 
+ 2017-04-27  Pierre-Marie de Rodat  <derodat@adacore.com>
+ 
+ 	* gcc-interface/utils.c (gnat_type_for_size): Set
+         TYPE_ARTIFICIAL on created types.
+ 
+ 2017-04-27  Claire Dross  <dross@adacore.com>
+ 
+ 	* a-cfdlli.adb, a-cfdlli.ads (Formal_Model): Adapt to
+ 	modifications in functional containers.
+ 	* a-cofuba.ads, a-cofuma.ads, a-cofuse.ads, a-cofuve.ads Reformat
+ 	to improve readablity. Subprograms are separated between basic
+ 	operations, constructors and properties. Universally quantified
+ 	formulas in contracts are factorized in independant functions
+ 	with a name and a comment.  Names of parameters are improved.
+ 
+ 2017-04-27  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* exp_spark.adb, sem_elab.adb: Minor reformatting and typo fix.
+ 
+ 2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Type_Conversion): Do not
+ 	install a predicate check here since this is already done during
+ 	the expansion phase. Verify whether the operand satisfies the
+ 	static predicate (if any) of the target type.
+ 	* sem_ch3.adb (Analyze_Object_Declaration): Do
+ 	not install a predicate check if the object is initialized by
+ 	means of a type conversion because the conversion is subjected
+ 	to the same check.
+ 
+ 2017-04-27  Tristan Gingold  <gingold@adacore.com>
+ 
+ 	* raise.c (__gnat_builtin_longjmp): Remove.
+ 	(__gnat_bracktrace):
+ 	Add a dummy definition for the compiler (__gnat_eh_personality,
+ 	__gnat_rcheck_04, __gnat_rcheck_10) (__gnat_rcheck_19,
+ 	__gnat_rcheck_20, __gnat_rcheck_21) (__gnat_rcheck_30,
+ 	__gnat_rcheck_31, __gnat_rcheck_32): Likewise.
+ 	* a-exexpr.adb: Renamed from a-exexpr-gcc.adb
+ 	* a-except.ads, a-except.adb: Renamed from a-except-2005.ads
+ 	and a-except-2005.adb.
+ 	* raise-gcc.c: Allow build in compiler, compiled as a C++
+ 	file.
+ 	(__gnat_Unwind_ForcedUnwind): Adjust prototype.
+ 	(db): Constify msg_format.
+ 	(get_call_site_action_for): Don't use void arithmetic.
+ 	* system.ads (Frontend_Exceptions): Set to False.
+ 	(ZCX_By_Default): Set to True.
+ 	(GCC_ZC_Support): Set to True.
+ 	* gcc-interface/Makefile.in: No more variants for a-exexpr.adb and
+ 	a-except.ad[sb].
+ 	* gcc-interface/Make-lang.in: Add support for backend zcx exceptions
+ 	in gnat1 and gnatbind.
+ 	* gnat1, gnatbind: link with raise-gcc.o, a-exctra.o, s-addima.o,
+ 	s-excmac.o, s-imgint.o, s-traceb.o, s-trasym.o, s-wchstw.o
+ 	* s-excmac.ads, s-excmac.adb: Copy of variants.
+ 	* a-except.o: Adjust preequisites.
+ 	Add handling of s-excmac-arm.adb and s-excmac-gcc.adb.
+ 
+ 2017-04-27  Claire Dross  <dross@adacore.com>
+ 
+ 	* a-cfdlli.adb, a-cfdlli.ads (Formal_Model): Adapt to
+ 	modifications in functional containers.
+ 	* a-cofuba.ads, a-cofuma.ads, a-cofuse.ads, a-cofuve.ads Reformat
+ 	to improve readablity. Subprograms are separated between basic
+ 	operations, constructors and properties. Universally quantified
+ 	formulas in contracts are factorized in independant functions
+ 	with a name and a comment.  Names of parameters are improved.
+ 
+ 2017-04-27  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* exp_spark.adb, sem_elab.adb: Minor reformatting and typo fix.
+ 
+ 2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Type_Conversion): Do not
+ 	install a predicate check here since this is already done during
+ 	the expansion phase. Verify whether the operand satisfies the
+ 	static predicate (if any) of the target type.
+ 	* sem_ch3.adb (Analyze_Object_Declaration): Do
+ 	not install a predicate check if the object is initialized by
+ 	means of a type conversion because the conversion is subjected
+ 	to the same check.
+ 
+ 2017-04-27  Tristan Gingold  <gingold@adacore.com>
+ 
+ 	* a-except.ads, a-except.adb, a-exexpr.adb: Removed (will be
+ 	replaced by their variants).
+ 
+ 2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* exp_prag.adb, a-cofuse.adb, a-cofuse.ads, einfo.adb, sem_prag.adb,
+ 	cstand.adb, par-prag.adb, a-cofuve.adb, a-cofuve.ads, a-cofuma.adb,
+ 	a-cofuma.ads, a-cofuba.adb, a-cofuba.ads: Minor reformatting.
+ 
+ 2017-04-27  Tristan Gingold  <gingold@adacore.com>
+ 
+ 	* s-excmac-gcc.ads, s-excmac-gcc.adb,
+ 	s-excmac-arm.ads, s-excmac-arm.adb (New_Occurrence): Rewrite it in
+ 	Ada95.
+ 
+ 2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* exp_ch7.adb (Establish_Transient_Scope): Rewrite
+ 	the loop which detects potential enclosing transient scopes. The
+ 	loop now terminates much earlier as transient scopes are bounded
+ 	by packages and subprograms.
+ 
+ 2017-04-27  Claire Dross  <dross@adacore.com>
+ 
+ 	* a-cfdlli.adb, a-cfdlli.ads (=): Generic parameter removed to
+ 	allow the use of regular equality over elements in contracts.
+ 	(Cursor): Type is now public so that it can be used in
+ 	model functions.
+ 	(Formal_Model): Ghost package containing
+ 	model functions that are used in subprogram contracts.
+ 	(Current_To_Last): Removed, model functions should be used
+ 	instead.
+ 	(First_To_Previous): Removed, model functions should
+ 	be used instead.
+ 	(Strict_Equal): Removed, model functions
+ 	should be used instead.
+ 	(Append): Default parameter value
+ 	replaced by new wrapper to allow more precise contracts.
+ 	(Insert): Default parameter value replaced by new wrapper to
+ 	allow more precise contracts.
+ 	(Delete): Default parameter
+ 	value replaced by new wrapper to allow more precise contracts.
+ 	(Prepend): Default parameter value replaced by new wrapper to
+ 	allow more precise contracts.
+ 	(Delete_First): Default parameter
+ 	value replaced by new wrapper to allow more precise contracts.
+ 	(Delete_Last): Default parameter value replaced by new wrapper
+ 	to allow more precise contracts.
+ 
+ 2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* exp_spark.adb (Expand_SPARK): Perform specialized expansion
+ 	for object declarations.
+ 	(Expand_SPARK_N_Object_Declaration): New routine.
+ 	* sem_elab.adb (Check_A_Call): Include calls to the
+ 	Default_Initial_Condition procedure of a type under the SPARK
+ 	elaboration checks umbrella.
+ 
+ 2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem.adb (Analyze): Diagnose an illegal iterated component
+ 	association.
+ 	* sem_util.ads, sem_util.adb
+ 	(Diagnose_Iterated_Component_Association): New routine.
+ 
+ 2017-04-27  Bob Duff  <duff@adacore.com>
+ 
+ 	* adaint.c (__gnat_get_current_dir): Return 0 in length if
+ 	getcwd fails.
+ 	* a-direct.adb, g-dirope.adb, osint.adb, s-os_lib.adb: Raise
+ 	exception if getcwd failed.
+ 
+ 2017-04-27  Yannick Moy  <moy@adacore.com>
+ 
+ 	* exp_dbug.adb, exp_dbug.ads (Get_External_Name): Prefix ghost
+ 	entities with special prefix.
+ 
+ 2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* debug.adb Change the documentation of switch -gnatd.s.
+ 	* exp_ch7.adb (Make_Transient_Block): Transient blocks do not need
+ 	to manage the secondary stack when an enclosing scope already
+ 	performs this functionality (aka relaxed management). Switch
+ 	-gnatd.s may be used to force strict management in which case
+ 	the block will manage the secondary stack unconditionally. Add
+ 	a guard to stop the traversal when encountering a package or a
+ 	subprogram scope.
+ 
+ 2017-04-27  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Call): Refine further the handling of
+ 	limited views of return types in function calls. If the function
+ 	that returns a limited view appears in the current unit,
+ 	we do not replace its type by the non-limited view because
+ 	this transformation is performed int the back-end. However,
+ 	the type of the call itself must be the non-limited view, to
+ 	prevent spurious resolution errors.
+ 
+ 2017-04-27  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* einfo,ads, einfo.adb (Class_Wide_Preconds, Class_Wide_Postconds):
+ 	Removed, proposed implementation using generics for class-wide
+ 	preconditions proved impractical.
+ 	(Class_Wide_Clone): New attribute of subprogram. Designates
+ 	subprogram created for primitive operations with class-wide
+ 	pre/postconditions that contain calls to other primitives. The
+ 	clone holds the body of the original primitive, but the
+ 	pre/postonditions do not apply to it. The original body is
+ 	rewritten as a wrapper for a call to the clone.
+ 	(Is_Class_Wide_Clone): New flag to identify a Class_Wide_Clone. If
+ 	the flag is set, no code for the corresponding pre/postconditions
+ 	is inserted into its body.
+ 
+ 2017-04-27  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_prag.adb, par-prag.adb, sem_ch13.adb: Ignore
+ 	Scalar_Storage_Order if -gnatI is given.
+ 	* sem_prag.adb (Analyze_Pragma): Ignore
+ 	Default_Scalar_Storage_Order if -gnatI is given.
+ 
+ 2017-04-27  Claire Dross  <dross@adacore.com>
+ 
+ 	* a-cofuba.ads (Add): Take as an additional input parameter
+ 	the position where the element should be inserted.
+ 	(Remove): New function that removes an element from the container.
+ 	* a-cofuma.ads (Add): Adapt to the new API of Base.Add.
+ 	* a-cofuse.ads (Add): Adapt to the new API of Base.Add.
+ 	(Remove): New function that removes an element from a set.
+ 	* a-cofuve.ads (Add): Adapt to the new API of Base.Add.
+ 	(Remove): New function that removes an element from a sequence.
+ 	(Insert): New function that adds anywhere in a sequence.
+ 
+ 2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* checks.adb (Generate_Range_Check): Revert previous change.
+ 
+ 2017-04-27  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* sem_util.adb: Minor reformatting/rewording.
+ 
+ 2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* lib-xref.adb (Generate_Reference): The use
+ 	of attribute 'Result is not considered a violation of pragma
+ 	Unreferenced.
+ 
+ 2017-04-27  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* cstand.adb (Create_Standard): Correctly set
+ 	Directly_Designated_Type for Any_Access.
+ 	* sem_type.adb (Covers): Minor grammar fixes.
+ 
+ 2017-04-27  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_attr.adb: Minor cleanup.
+ 
+ 2017-04-27  Claire Dross  <dross@adacore.com>
+ 
+ 	* a-cofuba.ads, a-cofuba.adb (Ada.Containers.Functional_Base): New
+ 	private child of Ada.Containers used to implement all functional
+ 	containers.
+ 	* a-cofuma.ads, a-cofuma.adb (Ada.Containers.Functional_Maps): New
+ 	child of Ada.Containers. It provides functional indefinite unbounded
+ 	maps which can be used as high level models for specification
+ 	of data structures.
+ 	* a-cofuse.ads, a-cofuse.adb (Ada.Containers.Functional_Sets): New
+ 	child of Ada.Containers. It provides functional indefinite unbounded
+ 	sets which can be used as high level models for specification
+ 	of data structures.
+ 	* a-cofuve.ads, a-cofuve.adb (Ada.Containers.Functional_Vectors): New
+ 	child of Ada.Containers.  It provides functional indefinite unbounded
+ 	vectors which can be used as high level models for specification
+ 	of data structures.
+ 	* Makefile.rtl: Add new packages.
+ 	* impunit.adb: Add new packages.
+ 
+ 2017-04-27  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* sem_ch4.adb: Minor reformatting.
+ 
+ 2017-04-27  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch12.adb (Analyze_Associations): minor reformatting.
+ 	(Check_Fixed_Point_Actual): Do not emit a warning on a fixed
+ 	point type actual that has user-defined arithmetic primitives,
+ 	when there is a previous actual for a formal package that defines
+ 	a fixed-point type with the parent user-defined operator.
+ 
+ 2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* checks.adb (Generate_Range_Check): Reinstate part of previous change.
+ 	* sem_attr.adb (Resolve_Attribute): Generate a range check when
+ 	the component type allows range checks.
+ 
+ 2017-04-27  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_aux.adb (Is_Generic_Formal): Use original node to locate
+ 	corresponding declaration, because formal derived types are
+ 	rewritten as private extensions.
+ 
+ 2017-04-27  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_dim.adb (Analyze_Dimension_Binary_Op): Do not check
+ 	dimensions of operands if node has been analyzed already, because
+ 	previous analysis and dimension checking will have removed the
+ 	dimension information from the operands.
+ 
+ 2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* debug.adb: Document the use of switch -gnatd.s.
+ 	* einfo.ads Update the documentation on attribute
+ 	Sec_Stack_Needed_For_Return and attribute Uses_Sec_Stack. Remove
+ 	the uses of these attributes from certain entities.
+ 	* exp_ch7.adb (Make_Transient_Block): Reimplement the circuitry
+ 	which determines whether the block should continue to manage
+ 	the secondary stack.
+ 	(Manages_Sec_Stack): New routine.
+ 
+ 2017-04-27  Bob Duff  <duff@adacore.com>
+ 
+ 	* atree.ads: Minor edit.
+ 
+ 2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sinfo.ads: Update the section on Ghost mode. Add
+ 	a section on SPARK mode. Update the placement of section on
+ 	expression functions.
+ 
+ 2017-04-27  Bob Duff  <duff@adacore.com>
+ 
+ 	* sinput.adb (Get_Source_File_Index): Don't
+ 	assert that S is in the right range in the case where this is
+ 	a .dg file under construction.
+ 
+ 2017-04-27  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_util.adb (Check_Result_And_Post_State):
+ 	Handle more precisely each conjunct in expressions formed by
+ 	and'ing sub-expressions.
+ 
+ 2017-04-27  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* exp_ch4.adb, sem_ch4.adb: Minor typo fix and reformatting.
+ 
+ 2017-04-25  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* gnat_rm.texi, gnat_ugn.texi,
+ 	doc/gnat_ugn/building_executable_programs_with_gnat.rst,
+ 	doc/gnat_ugn/platform_specific_information.rst,
+ 	doc/gnat_ugn/gnat_and_program_execution.rst,
+ 	doc/gnat_ugn/gnat_utility_programs.rst,
+ 	doc/gnat_ugn/the_gnat_compilation_model.rst,
+ 	doc/gnat_rm/implementation_defined_attributes.rst,
+ 	doc/gnat_rm/the_gnat_library.rst,
+ 	doc/gnat_rm/implementation_defined_pragmas.rst,
+ 	doc/gnat_rm/representation_clauses_and_pragmas.rst,
+ 	doc/gnat_rm/implementation_of_specific_ada_features.rst,
+ 	doc/gnat_rm/implementation_defined_aspects.rst,
+ 	doc/gnat_rm/implementation_defined_characteristics.rst: Update
+ 	documentation.
+ 
+ 2017-04-25  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* exp_ch4.adb (Expand_N_Case_Expression): Emit error message when
+ 	generating C code on complex case expressions.
+ 
+ 2017-04-25  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Pragma): Generate a warning instead
+ 	of silently ignoring pragma Ada_xxx in Latest_Ada_Only mode.
+ 	* directio.ads, ioexcept.ads, sequenio.ads, text_io.ads: Use
+ 	Ada_2012 instead of Ada_2005 to be compatible with the above
+ 	change.
+ 	* bindgen.adb: Silence new warning on pragma Ada_95.
+ 
+ 2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* checks.adb (Generate_Range_Check): Revert part of previous change.
+ 
+ 2017-04-25  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch4.adb (Try_Container_Indexing): Handle properly a
+ 	container indexing operation that appears as a an actual in a
+ 	parameter association in a procedure call.
+ 
+ 2017-04-25  Olivier Ramonat  <ramonat@adacore.com>
+ 
+ 	* prj-proc.adb, sem_util.adb, s-stposu.adb, sem_attr.adb, prj-conf.ads:
+ 	Fix spelling mistakes.
+ 
+ 2017-04-25  Bob Duff  <duff@adacore.com>
+ 
+ 	* types.ads, osint.adb, sinput-c.adb, sinput-d.adb, sinput-l.adb,
+ 	* sinput-p.adb: Use regular fat pointers, with bounds checking,
+ 	for source buffers.  Fix misc obscure bugs.
+ 	* sinput.ads, sinput.adb: Use regular fat pointers, with bounds
+ 	checking, for source buffers.  Modify representation clause for
+ 	Source_File_Record as appropriate.  Move Source_File_Index_Table
+ 	from spec to body, because it is not used outside the body.
+ 	Move Set_Source_File_Index_Table into the private part, because
+ 	it is used only in the body and in children.  Use trickery to
+ 	modify the dope in the generic instantiation case.  It's ugly,
+ 	but not as ugly as the previous method.  Fix documentation.
+ 	Remove obsolete code.
+ 	* fname-sf.adb, targparm.adb: Fix misc out-of-bounds
+ 	indexing in source buffers.
+ 	* fmap.adb: Avoid conversions from one string type to another.
+ 	Remove a use of global name buffer.
+ 	* osint.ads, sfn_scan.ads, sfn_scan.adb, sinput-c.ads: Comment
+ 	fixes.
+ 
+ 2017-04-25  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* exp_util.adb, exp_ch4.adb: Minor reformatting.
+ 
+ 2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* checks.adb: Code clean up in various routines.
+ 	(Generate_Range_Check): Do not generate a range check when the
+ 	expander is not active or when index/range checks are suppressed
+ 	on the target type.
+ 	(Insert_List_After_And_Analyze, Insert_List_Before_And_Analyze):
+ 	Remove variants that include a Supress parameter. These routines
+ 	are never used, and were introduced before the current scope-based
+ 	check suppression method.
+ 
+ 2017-04-25  Vasiliy Fofanov  <fofanov@adacore.com>
+ 
+ 	* prj-part.adb, cstreams.c, osint.adb, osint.ads: Remove VMS specific
+ 	code and some subprogram calls that are now noop.
+ 
+ 2017-04-25  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* exp_ch4.adb (Expand_N_Case_Expression): Take
+ 	Minimize_Expression_With_Actions into account when possible.
+ 
+ 2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* exp_util.adb (Known_Non_Null): Moved to Sem_Util.
+ 	(Known_Null): Moved to Sem_Util.
+ 	* exp_util.ads (Known_Non_Null): Moved to Sem_Util.
+ 	(Known_Null): Moved to Sem_Util.
+ 	* sem_util.adb Add new enumeration type Null_Status_Kind.
+ 	(Known_Non_Null): Moved from Exp_Util. Most of the logic in
+ 	this routine is now carried out by Null_Status.
+ 	(Known_Null): Moved from Exp_Util. Most of the logic in this routine
+ 	is now carried out by Null_Status.
+ 	(Null_Status): New routine.
+ 	* sem_util.ads (Known_Non_Null): Moved from Exp_Util.
+ 	(Known_Null): Moved from Exp_Util.
+ 
+ 2017-04-25  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch6.adb (Analyze_Expression_Function): Do not report an
+ 	error on the return type of an expression function that is a
+ 	completion, if the type is derived from a generic formal type.
+ 
+ 2017-04-25  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_dim.adb (Dimensions_Of_Operand): The dimensions of a type
+ 	conversion are those of the target type.
+ 
+ 2017-04-25  Bob Duff  <duff@adacore.com>
+ 
+ 	* a-clrefi.adb: Minor cleanup.
+ 
+ 2017-04-25  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* exp_util.adb, exp_util.ads, types.ads: Minor reformatting.
+ 
+ 2017-04-25  Bob Duff  <duff@adacore.com>
+ 
+ 	* err_vars.ads, fmap.adb, fmap.ads, comperr.adb, fname-sf.adb,
+ 	types.adb, types.ads, types.h, sinput-l.adb, targparm.adb,
+ 	errout.adb, sinput.adb, sinput.ads, cstand.adb, scn.adb,
+ 	scn.ads, gnatls.adb: Eliminate the vestigial Internal_Source_File and
+ 	the Internal_Source buffer. This removes the incorrect call to "="
+ 	the customer noticed.
+ 	Wrap remaining calls to "=" in Null_Source_Buffer_Ptr. We
+ 	eventually need to eliminate them altogether. Or else get rid
+ 	of zero-origin addressing.
+ 
+ 2017-04-25  Claire Dross  <dross@adacore.com>
+ 
+ 	* exp_util.ads (Expression_Contains_Primitives_Calls_Of): New
+ 	function used in GNATprove to know if an expression contains
+ 	non-dispatching calls on primitives of a tagged type.
+ 
+ 2017-04-25  Bob Duff  <duff@adacore.com>
+ 
+ 	* rtsfind.adb (Initialize): Initialize
+ 	First_Implicit_With. Building the compiler with Normalize_Scalars
+ 	and validity checking finds this being used as an uninitialized
+ 	variable.
+ 
+ 2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* contracts.adb (Analyze_Entry_Or_Subprogram_Body_Contract):
+ 	Add a warning about SPARK mode management. The routine now
+ 	saves and restores both the mode and associated pragma.
+ 	(Analyze_Entry_Or_Subprogram_Contract): Add a warning about
+ 	SPARK mode management. The routine now saves and restores both
+ 	the mode and associated pragma.
+ 	(Analyze_Object_Contract):
+ 	Add a warning about SPARK mode management. The routine
+ 	now saves and restores both the mode and associated pragma.
+ 	(Analyze_Package_Body_Contract): Add a warning about SPARK mode
+ 	management.  The routine now saves and restores both the mode
+ 	and associated pragma.	(Analyze_Package_Contract): Add a warning
+ 	about SPARK mode management. The routine now saves and restores
+ 	both the mode and associated pragma.
+ 	(Analyze_Task_Contract):
+ 	Add a warning about SPARK mode management. The routine now saves
+ 	and restores both the mode and associated pragma.
+ 	* expander.adb (Expand): Change the way the Ghost mode is saved
+ 	and restored.
+ 	* exp_ch3.adb (Freeze_Type): Change the way the Ghost mode is
+ 	saved and restored.
+ 	* exp_disp.adb (Make_DT): Change the way the Ghost mode is saved
+ 	and restored.
+ 	* exp_util.adb (Build_DIC_Procedure_Body):
+ 	Change the way the Ghost mode is saved and restored.
+ 	(Build_DIC_Procedure_Declaration): Change the way the Ghost
+ 	mode is saved and restored.
+ 	(Build_Invariant_Procedure_Body):
+ 	Change the way the Ghost mode is saved and restored.
+ 	(Build_Invariant_Procedure_Declaration): Change the way the Ghost
+ 	mode is saved and restored.
+ 	(Make_Predicate_Call): Change the
+ 	way the Ghost mode is saved and restored.
+ 	* freeze.adb (Freeze_Entity): Change the way the Ghost mode is
+ 	saved and restored.
+ 	* ghost.adb (Mark_And_Set_Ghost_Assignment): Remove parameter Mode
+ 	and its assignment.
+ 	(Mark_And_Set_Ghost_Body): Remove parameter
+ 	Mode and its assignment.
+ 	(Mark_And_Set_Ghost_Completion):
+ 	Remove parameter Mode and its assignment.
+ 	(Mark_And_Set_Ghost_Declaration): Remove parameter Mode and its
+ 	assignment.
+ 	(Mark_And_Set_Ghost_Instantiation): Remove parameter
+ 	Mode and its assignment.
+ 	(Mark_And_Set_Ghost_Procedure_Call):
+ 	Remove parameter Mode and its assignment.
+ 	(Set_Ghost_Mode):
+ 	Remove parameter Mode and its assignment.
+ 	* ghost.ads (Mark_And_Set_Ghost_Assignment): Remove parameter Mode
+ 	and update the comment on usage.
+ 	(Mark_And_Set_Ghost_Body):
+ 	Remove parameter Mode and update the comment on usage.
+ 	(Mark_And_Set_Ghost_Completion): Remove parameter Mode and
+ 	update the comment on usage.
+ 	(Mark_And_Set_Ghost_Declaration):
+ 	Remove parameter Mode and update the comment on usage.
+ 	(Mark_And_Set_Ghost_Instantiation): Remove parameter Mode and
+ 	update the comment on usage.
+ 	(Mark_And_Set_Ghost_Procedure_Call):
+ 	Remove parameter Mode and update the comment on usage.
+ 	(Set_Ghost_Mode): Remove parameter Mode and update the comment
+ 	on usage.
+ 	* lib.ads Remove obsolete fields SPARK_Mode_Pragma from various
+ 	types.
+ 	* lib-load.adb (Create_Dummy_Package_Unit): Remove the assignment
+ 	of obsolete field SPARK_Mode_Pragma.
+ 	(Load_Main_Source): Remove
+ 	the assignment of obsolete field SPARK_Mode_Pragma.
+ 	(Load_Unit): Remove the assignment of obsolete field SPARK_Mode_Pragma.
+ 	* lib-writ.adb (Add_Preprocessing_Dependency): Remove
+ 	the assignment of obsolete field SPARK_Mode_Pragma.
+ 	(Ensure_System_Dependency): Remove the assignment of obsolete
+ 	field SPARK_Mode_Pragma.
+ 	* rtsfind.adb (Load_RTU): Add a warning about Ghost and SPARK
+ 	mode management. Change the way Ghost and SPARK modes are saved
+ 	and restored.
+ 	* sem.adb (Analyze): Change the way the Ghost mode is saved
+ 	and restored.
+ 	* sem_ch3.adb (Analyze_Object_Declaration): Change the way the
+ 	Ghost mode is saved and restored.
+ 	(Process_Full_View): Change
+ 	the way the Ghost mode is saved and restored.
+ 	* sem_ch5.adb (Analyze_Assignment): Change the way the Ghost
+ 	mode is saved and restored.
+ 	* sem_ch6.adb (Analyze_Procedure_Call): Change the way the Ghost
+ 	mode is saved and restored.
+ 	(Analyze_Subprogram_Body_Helper):
+ 	Change the way the Ghost mode is saved and restored.
+ 	* sem_ch7.adb (Analyze_Package_Body_Helper): Change the way the
+ 	Ghost mode is saved and restored.
+ 	* sem_ch10.adb (Analyze_Subunit): Add a warning about SPARK mode
+ 	management. Save the SPARK mode-related data prior to any changes
+ 	to the scope stack and contexts. The mode is then reinstalled
+ 	before the subunit is analyzed in order to restore the original
+ 	view of the subunit.
+ 	* sem_ch12.adb (Analyze_Package_Instantiation): Update the
+ 	warning on region management.  Change the way the Ghost and
+ 	SPARK modes are saved and restored.
+ 	(Inline_Instance_Body):
+ 	Add a warning about SPARK mode management. Code clean up.
+ 	(Analyze_Subprogram_Instantiation): Update the warning on region
+ 	management.  Change the way the Ghost and SPARK modes are saved
+ 	and restored.
+ 	(Instantiate_Package_Body): Update the warning
+ 	on region management. Change the way the Ghost and SPARK modes
+ 	are saved and restored.
+ 	(Instantiate_Subprogram_Body): Update
+ 	the warning on region management. Change the way the Ghost and
+ 	SPARK modes are saved and restored.
+ 	(Set_Instance_Env): Add a
+ 	warning about SPARK mode management. Change the way SPARK mode
+ 	is saved and restored.
+ 	* sem_ch13.adb (Build_Predicate_Functions):
+ 	Change the way the Ghost mode is saved and restored.
+ 	(Build_Predicate_Function_Declaration): Change the way the Ghost
+ 	mode is saved and restored.
+ 	* sem_elab.adb (Check_Elab_Calls): Add a warning about SPARK
+ 	mode management. Change the way SPARK mode is saved and restored.
+ 	* sem_prag.adb (Analyze_Contract_Cases_In_Decl_Part):
+ 	Change the way the Ghost mode is saved and restored.
+ 	(Analyze_Initial_Condition_In_Decl_Part): Change the way
+ 	the Ghost mode is saved and restored.
+ 	(Analyze_Pragma):
+ 	Change the way the Ghost mode is saved and restored.
+ 	(Analyze_Pre_Post_Condition_In_Decl_Part): Change the way the
+ 	Ghost mode is saved and restored.
+ 	* sem_util.adb (Install_SPARK_Mode): New routine.
+ 	(Restore_SPARK_Mode): New routine.
+ 	(Save_SPARK_Mode_And_Set): Removed.
+ 	(Set_SPARK_Mode): New routine.
+ 	* sem_util.ads (Install_SPARK_Mode): New routine.
+ 	(Restore_SPARK_Mode): New routine.
+ 	(Save_SPARK_Mode_And_Set): Removed.
+ 	(Set_SPARK_Mode): New routine.
+ 
+ 2017-04-25  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_util.adb, sem_util.ads (From_Nested_Package): New predicate
+ 	to determine whether a type is declared in a local package that
+ 	has not yet been frozen.
+ 	* freeze.adb (Freeze_Before): Use new predicate to determine
+ 	whether a local package must be installed on the scope stack
+ 	in order to evaluate in the proper scope actions generated by
+ 	aspect specifications, such as Predicate
+ 	* sem_ch13.adb: Simplify code in Analyze_Aspects_At_Freeze_Point
+ 	using new predicate.
+ 
+ 2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_warn.adb (Warn_On_Constant_Valid_Condition): Do not consider
+ 	comparisons between non- scalar expressions expressions because
+ 	their values cannot be invalidated.
+ 	* sem_warn.ads (Warn_On_Constant_Valid_Condition): Update the
+ 	comment on usage.
+ 
+ 2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* par_sco.adb: Minor reformatting.
+ 
+ 2017-04-25  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch13.adb (Analyze_Aspects_At_Freeze_Point): If entity
+ 	is a type from an unfrozen local package, install package to
+ 	complete the analysis of delayed aspects of the type.
+ 
+ 2017-04-25  Tristan Gingold  <gingold@adacore.com>
+ 
+ 	* bingen.adb (System_Version_Control_Used): New variable.
+ 	(Resolve_Binder_Options): Set the above variable.
+ 	(Gen_Output_File_Ada): Conditionally call Gen_Versions.
+ 	(Gen_Elab_Order): Emit blank line before.
+ 
+ 2017-04-25  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_cat.adb (Validate_RT_RAT_Component): Added
+ 	an extra check to ignore incomplete types.
+ 
+ 2017-04-25  Thomas Quinot  <quinot@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Pragma, case Pragma_Check): Remove
+ 	bogus circuitry for the case where Name is Predicate.
+ 
+ 2017-04-25  Thomas Quinot  <quinot@adacore.com>
+ 
+ 	* par_sco.adb(Traverse_Declarations_Or_Statements.Traverse_Aspects):
+ 	Create SCOs for Predicate aspects in disabled
+ 	state initially, to be enabled later on by...
+ 	* sem_ch13.adb (Build_Predicate_Functions.Add_Predicates): Mark
+ 	SCO for predicate as enabled.
+ 
+ 2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* comperr.adb (Compiler_Abort): Remove now obsolete pair of
+ 	pragmas Warnings Off / On.
+ 	* namet.adb (Finalize): Remove now obsolete pair of pragmas
+ 	Warnings Off / On.
+ 	* output.adb: Remove now obsolete pair of pragmas Warnings Off / On.
+ 	* sem_warn.adb (Warn_On_Constant_Valid_Condition): Do not
+ 	consider comparisons between static expressions because their
+ 	values cannot be invalidated.
+ 	* urealp.adb (Tree_Read): Remove now obsolete pair of pragmas
+ 	Warnings Off / On.
+ 	(Tree_Write): Remove now obsolete pair of pragmas Warnings Off / On.
+ 	* usage.adb Remove now obsolete pair of pragmas Warnings Off / On.
+ 
+ 2017-04-25  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_elab.adb (In_Task_Activation): Trace internal calls in
+ 	task bodies.
+ 
+ 2017-04-25  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* sem_prag.adb, sem_warn.adb, sem_eval.adb: Minor reformatting and
+ 	typo fixes.
+ 
+ 2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* comperr.adb (Compiler_Abort): Add a pair of pragma Warnings
+ 	On/Off to defend against a spurious warning in conditional
+ 	compilation.
+ 	* exp_ch4.adb (Rewrite_Comparison): Reimplemented.
+ 	* namet.adb (Finalize): Add a pair of pragma Warnings On/Off to
+ 	defend against a spurious warning in conditional compilation.
+ 	* output.adb Add a pair of pragma Warnings On/Off to defend
+ 	against a spurious warning in conditional compilation.
+ 	* sem_eval.adb (Eval_Relational_Op): Major code clean up.
+ 	(Fold_General_Op): New routine.
+ 	(Fold_Static_Real_Op): New routine.
+ 	(Test_Comparison): New routine.
+ 	* sem_eval.ads (Test_Comparison): New routine.
+ 	* sem_warn.adb (Is_Attribute_Constant_Comparison): New routine.
+ 	(Warn_On_Constant_Valid_Condition): New routine.
+ 	(Warn_On_Known_Condition): Use Is_Attribute_Constant_Comparison
+ 	to detect a specific case.
+ 	* sem_warn.adb (Warn_On_Constant_Valid_Condition): New routine.
+ 	* urealp.adb (Tree_Read): Add a pair of pragma Warnings On/Off
+ 	to defend against a spurious warning in conditional compilation.
+ 	(Tree_Write): Add a pair of pragma Warnings On/Off to defend
+ 	against a spurious warning in conditional compilation.
+ 	* usage.adb Add a pair of pragma Warnings On/Off to defend
+ 	against a spurious warning in conditional compilation.
+ 
+ 2017-04-25  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sinfo.ads, sem_ch13.adb: Update comment.
+ 
+ 2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_util.adb (Is_Post_State): A reference to a
+ 	generic in out parameter is considered a change in the post-state
+ 	of a subprogram.
+ 
+ 2017-04-25  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch12.adb (Load_Parent_Of_Generic); When retrieving the
+ 	declaration of a subprogram instance within its wrapper package,
+ 	skip over null statements that may result from the rewriting of
+ 	ignored pragmas.
+ 
+ 2017-04-25  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_attr.adb (Expand_Attribute_Reference, case 'Read):
+ 	If the type is an unchecked_union, replace the attribute with
+ 	a Raise_Program_Error (rather than inserting such before the
+ 	attribute reference) to handle properly the case where we are
+ 	processing a component of a larger record, and we need to prevent
+ 	further expansion for the unchecked union.
+ 	(Expand_Attribute_Reference, case 'Write): If the type is
+ 	an unchecked_union, check whether enclosing scope is a Write
+ 	subprogram. Replace attribute with a Raise_Program_Error if the
+ 	discriminants of the unchecked_union type have not default values
+ 	because such a use is erroneous..
+ 
+ 2017-04-25  Tristan Gingold  <gingold@adacore.com>
+ 
+ 	* exp_ch9.adb (Expand_N_Task_Type_Declaration):
+ 	Add relative_deadline to task record on edf profile.
+ 	(Make_Initialize_Protection): Pass deadline_floor value on edf profile.
+ 	(Make_Task_Create_Call): Pass relative_deadline value.
+ 	* par-prag.adb (Prag): Handle Pragma_Deadline_Floor.
+ 	* s-rident.ads (Profile_Name): Add GNAT_Ravenscar_EDF.
+ 	(Profile_Info): Add info for GNAT_Ravenscar_EDF.
+ 	* sem_prag.adb (Set_Ravenscar_Profile): Handle
+ 	GNAT_Ravenscar_EDF (set scheduling policy).
+ 	(Analyze_Pragma): Handle GNAT_Ravenscar_EDF profile and Deadline_Floor
+ 	pragma.
+ 	(Sig_Flags): Add choice for Pragma_Deadline_Floor.
+ 	* snames.ads-tmpl (Name_Deadline_Floor, Name_Gnat_Ravenscar_EDF):
+ 	New names.
+ 	(Pragma_Deadline_Floor): New pragma.
+ 	* targparm.adb (Get_Target_Parameters): Recognize
+ 	GNAT_Ravenscar_EDF profile.
+ 
+ 2017-04-25  Arnaud Charlet  <charlet@adacore.com trojanek>
+ 
+ 	* gnatvsn.ads (Library_Version): Bump to 8. Update comment.
+ 
+ 2017-04-25  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_aux.adb (Nearest_Ancestor): Use original node of type
+ 	declaration to locate nearest ancestor, because derived
+ 	type declarations for record types are rewritten as record
+ 	declarations.
+ 	* sem_ch13.adb (Add_Call): Use an unchecked conversion to handle
+ 	properly derivations that are completions of private types.
+ 	(Add_Predicates): If type is private, examine rep. items of full
+ 	view, which may include inherited predicates.
+ 	(Build_Predicate_Functions): Ditto.
+ 
+ 2017-04-25  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_util.adb (New_Copy_Tree.Visit_Entity): Extend previous change
+ 	to generate new entities for subtype declarations located in
+ 	Expression_With_Action nodes.
+ 
+ 2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_elab.adb (Check_A_Call): Remove
+ 	local variables Is_DIC_Proc and Issue_In_SPARK. Verify the
+ 	need for Elaborate_All when SPARK elaboration checks are
+ 	required. Update the checks for instances, variables, and calls
+ 	to Default_Initial_Condition procedures.
+ 
+ 2017-04-25  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* aspects.ads, aspects.adb: Make the GNAT-specific pragma No_Inline
+ 	into a boolean aspect, in analogy with the Ada aspect No_Return.
+ 
+ 2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* exp_ch6.adb, sem_ch13.adb, sem_ch6.adb: Minor reformatting.
+ 
+ 2017-04-25  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Actuals): Under -gnatd.q, reset
+ 	Is_True_Constant for an array variable that is passed to a
+ 	foreign function as an 'in' parameter.
+ 	* debug.adb: Document -gnatd.q.
+ 
+ 2017-04-25  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch6.adb (Analyze_Expression_Function): If expression function
+ 	is completion and return type is an access type do not freeze
+ 	designated type: this will be done in the process of freezing
+ 	the expression if needed.
+ 	(Freeze_Expr_Types): Check whether type is complete before
+ 	creating freeze node, to provide a better error message if
+ 	reference is premature.
+ 	* sem_ch13.adb (Check_Indexing_Functions): Ignore inherited
+ 	functions created by type derivations.
+ 
+ 2017-04-25  Pascal Obry  <obry@adacore.com>
+ 
+ 	* g-sercom.ads: Add simple usage of GNAT.Serial_Communication.
+ 
+ 2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Type_Conversion):
+ 	When resolving against any fixed type, set the type of the
+ 	operand as universal real when the operand is a multiplication
+ 	or a division where both operands are of any fixed type.
+ 	(Unique_Fixed_Point_Type): Add local variable ErrN. Improve the
+ 	placement of an error message by pointing to the operand of a
+ 	type conversion rather than the conversion itself.
+ 
+ 2017-04-25  Thomas Quinot  <quinot@adacore.com>
+ 
+ 	* sem_ch13.adb (Build_Predicate_Function_Declaration): Set
+ 	Needs_Debug_Info when producing SCOs.
+ 
+ 2017-04-25  Thomas Quinot  <quinot@adacore.com>
+ 
+ 	* exp_ch6.adb (Add_Finalization_Master_Actual_To_Build_In_Place_Call):
+ 	Always pass a null finalization master for a library level named access
+ 	type to which a pragme No_Heap_Finalization applies.
+ 
+ 2017-04-25  Arnaud Charlet  <charlet@adacore.com trojanek>
+ 
+ 	PR ada/78845
+ 
+ 	* a-ngcoar.adb, a-ngrear.adb (Inverse): call Unit_Matrix with First_1
+ 	set to A'First(2) and vice versa.
+ 
+ 2017-04-25  Yannick Moy  <moy@adacore.com>
+ 
+ 	* freeze.adb (Freeze_Record_Type): Remove obsolete
+ 	rule on volatile tagged record restriction on SPARK code.
+ 
+ 2017-04-25  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_prag.adb (minor) Fix SPARK RM reference.
+ 
+ 2017-04-25  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_util.adb, sem_util.ads (Unique_Defining_Entity): Update
+ 	comment to reflect which entity is chosen as unique entity.
+ 	(Unique_Entity): Return full view instead of private spec for
+ 	protected type or task type. Fix possible incorrect access when
+ 	called on entry.
+ 
+ 2017-04-25  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_res.adb (Set_Slice_Subtype): Treat specially bit-packed
+ 	array types only instead of all packed array types.
+ 
+ 2017-04-25  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch6.adb (Conforming_Types): If type of formal as a specified
+ 	dimension system, verify that dimensions of both match.
+ 	(Check_Conformance): Add error message in case of dimension
+ 	mismatch.
+ 	* sem_dim.ads, sem_dim.adb (Dimensions_Match): New utility
+ 	predicate.
+ 
+ 2017-04-25  Arnaud Charlet  <charlet@adacore.com trojanek>
+ 
+ 	* gnatxref.adb, gnatfind.adb: Avoid using the term project file,
+ 	confusing.
+ 
+ 2017-04-25  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_util.adb: Minor refactoring.
+ 	* freeze.adb (Freeze_Record_Type): Fix checking of SPARK RM 7.1.3(5).
+ 
+ 2017-04-25  Claire Dross  <dross@adacore.com>
+ 
+ 	* sem_prag.adb (Collect_Inherited_Class_Wide_Conditions): Go to
+ 	ultimate alias when accessing overridden operation. Indeed, if the
+ 	overridden operation is itself inherited, it won't have any explicit
+ 	contract.
+ 
+ 2017-04-25  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_warn.adb (Warn_On_Overlapping_Actuals): There can be no
+ 	overlap if the two formals have different types, because formally
+ 	the corresponding actuals cannot designate the same objects.
+ 
+ 2017-04-25  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_dim.adb (Dimensions_Of_Operand): minot cleanups: a) If
+ 	dimensions are present from context, use them.	b) If operand is
+ 	a static constant rewritten as a literal, obtain the dimensions
+ 	from the original declaration, otherwise use dimensions of type
+ 	established from context.
+ 
+ 2017-04-25  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_util.adb (Is_Effectively_Volatile): Protect against base type
+ 	of array that is private.
+ 
+ 2017-04-25  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* sem_ch3.adb, exp_util.adb, sem_prag.adb, exp_ch4.adb: Minor
+ 	reformatting.
+ 
+ 2017-04-25  Yannick Moy  <moy@adacore.com>
+ 
+ 	* a-ngelfu.adb, a-ngelfu.ads: Add SPARK_Mode On on spec, Off
+ 	on body.
+ 
+ 2017-04-25  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_disp.adb (Check_Dispatching_Context): Add guard to refine
+ 	the check that recognizes a call to a private overridding and
+ 	replaces the called subprogram with its alias.
+ 
+ 2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* exp_util.adb: Minor reformatting.
+ 
+ 2017-04-25  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* exp_ch3.adb (Freeze_Type): Add condition to always treat
+ 	interface types as a partial view of a private type for the
+ 	generation of invariant procedure bodies.
+ 	* exp_util.adb, exp_util.ads (Add_Inherited_Invariants):
+ 	Add a condition to get the Corresponding_Record_Type for
+ 	concurrent types, add condition to return in the absence of a
+ 	class in the pragma, remove call to Replace_Type_References,
+ 	and add call to Replace_References.
+ 	(Add_Interface_Invariatns),
+ 	(Add_Parent_Invariants): Modify call to Add_Inherited_Invariants
+ 	to including the working type T.
+ 	(Add_Own_Invariants): Remove
+ 	legacy condition for separate units, remove dispatching for ASIS
+ 	and save a copy of the expression in the pragma expression.
+ 	(Build_Invariant_Procedure_Body): Default initalize vars,
+ 	remove return condition on interfaces, always use the
+ 	private type for interfaces, and move the processing of types
+ 	until after the processing of invariants for the full view.
+ 	(Build_Invariant_Procedure_Declaration): Remove condition
+ 	to return if an interface type is encountered and add
+ 	condition to convert the formal parameter to its class-wide
+ 	counterpart if Work_Typ is abstract.
+ 	(Replace_Type): Add call to Remove_Controlling_Arguments.
+ 	(Replace_Type_Ref): Remove class-wide dispatching for the current
+ 	instance of the type.
+ 	(Replace_Type_References): Remove parameter "Derived"
+ 	(Remove_Controlling_Arguments): Created in order to removing
+ 	the controlliong argument from calls to primitives in the case
+ 	of the formal parameter being an class-wide abstract type.
+ 	* sem_ch3.adb (Build_Assertion_Bodies_For_Type): Almost identical
+ 	to the change made to Freeze_Type in exp_ch3. Add a condition
+ 	to treat interface types as a partial view.
+ 	* sem_prag.adb (Analyze_Pragma): Modify parameters in the call
+ 	to Build_Invariant_Procedure_Declaration to properly generate a
+ 	"partial" invariant procedure when Typ is an interface.
+ 
+ 2017-04-25  Bob Duff  <duff@adacore.com>
+ 
+ 	* a-numeri.ads: Go back to using brackets encoding for the Greek
+ 	letter pi.
+ 
+ 2017-04-25  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch3.adb (Derive_Subprogram): Implement rule in RM 6.1.1
+ 	(10-15): if derived type T with progenitors is abstract,
+ 	and primitive P of this type inherits non-trivial classwide
+ 	preconditions from both a parent operation and from an interface
+ 	operation, then the inherited operation is abstract if the parent
+ 	operation is not null.
+ 	* sem_disp.ads, sem_disp.adb: replace function Covers_Some_Interface
+ 	with Covered_Interface_Op to yield the actual interface operation
+ 	that is implemented by a given inherited operation.
+ 
+ 2017-04-25  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_ch4.adb (Expand_N_Op_Expon): Relocate left
+ 	and right operands after performing the validity checks. Required
+ 	because validity checks may remove side effects from the operands.
+ 
+ 2017-04-25  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_attr.adb (Attribute_Unrestricted_Access):
+ 	Do not disable implicit type conversion.  Required to generate
+ 	code that displaces the pointer to reference the secondary
+ 	dispatch table.
+ 
+ 2017-04-25  Pascal Obry  <obry@adacore.com>
+ 
+ 	* prj-attr.adb, snames.ads-tmpl: Add package Install's
+ 	Required_Artifacts attribute.
+ 
+ 2017-04-25  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_util.adb (Same_Value): String literals are compile-time
+ 	values, and comparing them must use Expr_Value_S.
+ 
+ 2017-04-25  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch4.adb (Complete_Object_Interpretation): If an explicit
+ 	dereference is introduced for the object, and the object is
+ 	overloaded, do not check whether it is aliased, because it may
+ 	include an implicit dereference.
+ 	* sem_type.adb (Disambiguate): If two interpretations are access
+ 	attribute types with the same designated type keep either of
+ 	them and do not report an ambiguity.  A true ambiguity will be
+ 	reported elsewhere.
+ 
+ 2017-04-25  Bob Duff  <duff@adacore.com>
+ 
+ 	* a-numeri.ads: Change the encoding of Greek letter Pi from
+ 	brackets encoding to UTF-8.  Use pragma Wide_Character_Encoding
+ 	to indicate the encoding. We considered using a byte order mark
+ 	(BOM), but that causes various trouble (misc software eats the
+ 	BOM, if you have a patch with a BOM, then it's not at the start
+ 	of the patch, so it's not a BOM, the BOM affects with-ing files,
+ 	etc.).
+ 	* scng.adb, s-wchcnv.adb: Minor.
+ 
+ 2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_ch3.adb, sem_ch8.adb, sem_disp.adb: Minor reformatting.
+ 2017-04-25  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch3.adb (Add_Internal_Interface_Entities): Move
+ 	Has_Non_Trivial_Precondition to sem_util. for use elsewhere.
+ 	Improve error message on operations that inherit non-conforming
+ 	classwide preconditions from ancestor and progenitor.
+ 	* sem_util.ads, sem_util.adb (Has_Non_Trivial_Precondition):
+ 	moved here from sem_ch3.
+ 	* sem_ch8.adb (Analyze_Subprogram_Renaming): Implement legality
+ 	check given in RM 6.1.1 (17) concerning renamings of overriding
+ 	operations that inherits class-wide preconditions from ancestor
+ 	or progenitor.
+ 
+ 2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* exp_ch7.adb (Build_Adjust_Or_Finalize_Statements): Code cleanup.
+ 	(Build_Adjust_Statements): Code cleanup.
+ 	(Build_Finalizer): Update the initialization of
+ 	Exceptions_OK.
+ 	(Build_Finalize_Statements): Code cleanup.
+ 	(Build_Initialize_Statements): Code cleanup.
+ 	(Make_Deep_Array_Body): Update the initialization of
+ 	Exceptions_OK.
+ 	(Make_Deep_Record_Body): Update the initialization of Exceptions_OK.
+ 	(Process_Object_Declaration): Generate a null exception handler only
+ 	when exceptions are allowed.
+ 	(Process_Transients_In_Scope): Update the initialization of
+ 	Exceptions_OK.
+ 	* exp_util.ads, exp_util.adb (Exceptions_In_Finalization_OK): New
+ 	routine.
+ 	* sem_ch11.adb (Analyze_Exception_Handlers): Do not check any
+ 	restrictions when the handler is internally generated and the
+ 	mode is warnings.
+ 
+ 2017-04-25  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch3.adb (Has_Non_Trivial_Precondition): New predicate to
+ 	enforce legality rule on classwide preconditions inherited from
+ 	both an ancestor and a progenitor (RM 6.1.1 (10-13).
+ 	* sem_disp.adb (Check_Dispatching_Context): A call to an abstract
+ 	subprogram need not be dispatching if it appears in a precondition
+ 	for an abstract or null subprogram.
+ 
+ 2017-04-25  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* sem_ch10.adb: Minor typo fix.
+ 
+ 2017-04-25  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* gcc-interface/Makefile.in: Cleanup VxWorks targets.
+ 
+ 2017-04-25  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* fname.adb (Is_Internal_File_Name): Arrange for the slices to
+ 	have a length which is a power of 2.
+ 	(Is_Predefined_File_Name): Likewise. Adjust comment.
+ 
+ 2017-04-25  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_aggr.adb (Component_Count): Protect the
+ 	arithmetic from attempting to convert a value >= 2**31 to Int,
+ 	which would otherwise raise Constraint_Error.
+ 
+ 2017-04-25  Bob Duff  <duff@adacore.com>
+ 
+ 	* opt.ads (Locking_Policy): Fix incorrect documentation. The
+ 	first character of the policy name is not unique.
+ 
+ 2017-04-25  Bob Duff  <duff@adacore.com>
+ 
+ 	* s-fileio.adb (Name): Raise Use_Error if the file is a temp file.
+ 	* s-ficobl.ads (Is_Temporary_File): Remove incorrect comment
+ 	about this flag not being used. It was already used, and it is
+ 	now used more.
+ 
+ 2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* einfo.adb Flag301 is now known as Ignore_SPARK_Mode_Pragmas.
+ 	(Ignore_SPARK_Mode_Pragmas): New routine.
+ 	(Set_Ignore_SPARK_Mode_Pragmas): New routine.
+ 	(Write_Entity_Flags): Add an entry for Ignore_SPARK_Mode_Pragmas.
+ 	* einfo.ads Add new attribute Ignore_SPARK_Mode_Pragmas and update
+ 	related entities.
+ 	(Ignore_SPARK_Mode_Pragmas): New routine
+ 	along with pragma Inline.
+ 	(Set_Ignore_SPARK_Mode_Pragmas): New routine along with pragma Inline.
+ 	* opt.ads Rename flag Ignore_Pragma_SPARK_Mode to
+ 	Ignore_SPARK_Mode_Pragmas_In_Instance.
+ 	* sem_ch6.adb (Analyze_Subprogram_Body_Helper):
+ 	Save and restore the value of global flag
+ 	Ignore_SPARK_Mode_Pragmas_In_Instance. Set or reinstate the value
+ 	of global flag Ignore_SPARK_Mode_Pragmas_In_Instance when either
+ 	the corresponding spec or the body must ignore all SPARK_Mode
+ 	pragmas found within.
+ 	(Analyze_Subprogram_Declaration): Mark
+ 	the spec when it needs to ignore all SPARK_Mode pragmas found
+ 	within to allow the body to infer this property in case it is
+ 	instantiated or inlined later.
+ 	* sem_ch7.adb (Analyze_Package_Body_Helper): Save and restore the
+ 	value of global flag Ignore_SPARK_Mode_Pragmas_In_Instance. Set
+ 	the value of global flag Ignore_SPARK_Mode_Pragmas_In_Instance
+ 	when the corresponding spec also ignored all SPARK_Mode pragmas
+ 	found within.
+ 	(Analyze_Package_Declaration): Mark the spec when
+ 	it needs to ignore all SPARK_Mode pragmas found within to allow
+ 	the body to infer this property in case it is instantiated or
+ 	inlined later.
+ 	* sem_ch12.adb (Analyze_Formal_Package_Declaration):
+ 	Save and restore the value of flag
+ 	Ignore_SPARK_Mode_Pragmas_In_Instance. Mark the
+ 	formal spec when it needs to ignore all SPARK_Mode
+ 	pragmas found within to allow the body to infer this
+ 	property in case it is instantiated or inlined later.
+ 	(Analyze_Package_Instantiation): Save and restore the value
+ 	of global flag Ignore_SPARK_Mode_Pragmas_In_Instance. Mark
+ 	the instance spec when it needs to ignore all SPARK_Mode
+ 	pragmas found within to allow the body to infer this
+ 	property in case it is instantiated or inlined later.
+ 	(Analyze_Subprogram_Instantiation): Save and restore the value
+ 	of global flag Ignore_SPARK_Mode_Pragmas_In_Instance. Mark the
+ 	instance spec and anonymous package when they need to ignore
+ 	all SPARK_Mode pragmas found within to allow the body to infer
+ 	this property in case it is instantiated or inlined later.
+ 	(Instantiate_Package_Body): Save and restore the value of global
+ 	flag Ignore_SPARK_Mode_Pragmas_In_Instance. Set the value of
+ 	global flag Ignore_SPARK_Mode_Pragmas_In_Instance when the
+ 	corresponding instance spec also ignored all SPARK_Mode pragmas
+ 	found within.
+ 	(Instantiate_Subprogram_Body): Save and restore the
+ 	value of global flag Ignore_SPARK_Mode_Pragmas_In_Instance. Set
+ 	the value of global flag Ignore_SPARK_Mode_Pragmas_In_Instance
+ 	when the corresponding instance spec also ignored all SPARK_Mode
+ 	pragmas found within.
+ 	* sem_prag.adb (Analyze_Pragma): Update the reference to
+ 	Ignore_Pragma_SPARK_Mode.
+ 	* sem_util.adb (SPARK_Mode_Is_Off): A construct which ignored
+ 	all SPARK_Mode pragmas defined within yields mode "off".
+ 
+ 2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* bindgen.adb, exp_dbug.adb, errout.adb, fname.adb: Minor reformatting.
+ 
+ 2017-04-25  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_atag.adb (Build_CW_Membership): Add "Suppress =>
+ 	All_Checks" to avoid generating unnecessary checks.
+ 	* exp_ch4.adb (Expand_N_In, Make_Tag_Check): Add "Suppress =>
+ 	All_Checks".
+ 	* sem.ads: Fix comment.
+ 	* expander.ads: Fix comment.
+ 	* exp_atag.ads: Fix comment: "Index = 0" should be
+ 	"Index >= 0".
+ 
+ 2017-04-25  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* s-taprop-linux.adb: Minor editorial fixes.
+ 
+ 2017-04-25  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_util.adb (New_Copy_Tree): Put back the declarations of the
+ 	hash tables at library level.  Reinstate the NCT_Hash_Tables_Used
+ 	variable and set it to True whenever the main hash table is
+ 	populated.  Short- circuit the Assoc function if it is false
+ 	and add associated guards.
+ 
+ 2017-04-25  Olivier Hainque  <hainque@adacore.com>
+ 
+ 	* bindgen.adb (Gen_Elab_Calls): Also update counter of lone
+ 	specs without elaboration code that have an elaboration counter
+ 	nevertheless, e.g.  when compiled with -fpreserve-control-flow.
+ 	* sem_ch10.adb (Analyze_Compilation_Unit):
+ 	Set_Elaboration_Entity_Required when requested to preserve
+ 	control flow, to ensure the unit elaboration is materialized at
+ 	bind time, resulting in the inclusion of the unit object file
+ 	in the executable closure at link time.
+ 
+ 2017-04-25  Pierre-Marie de Rodat  <derodat@adacore.com>
+ 
+ 	* exp_dbug.adb: In Debug_Renaming_Declaration,
+ 	when dealing with indexed component, accept to produce a renaming
+ 	symbol when the index is an IN parameter or when it is a name
+ 	defined in an outer scope.
+ 
+ 2017-04-25  Yannick Moy  <moy@adacore.com>
+ 
+ 	* errout.adb (Error_Msg): Adapt continuation
+ 	message in instantiations and inlined bodies for info messages.
+ 
+ 2017-04-25  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* fname.adb (Has_Internal_Extension): Add pragma Inline.
+ 	Use direct 4-character slice comparisons.
+ 	(Has_Prefix): Add
+ 	pragma Inline.	(Has_Suffix): Delete.
+ 	(Is_Internal_File_Name):
+ 	Test Is_Predefined_File_Name first.
+ 	(Is_Predefined_File_Name):
+ 	Use direct slice comparisons as much as possible and limit all
+ 	comparisons to at most 8 characters.
+ 
+ 2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* checks.adb (Insert_Valid_Check): Code cleanup.
+ 	* exp_ch6.adb (Add_Validation_Call_By_Copy_Code): New routine.
+ 	(Expand_Actuals): Generate proper copy-back for a validation
+ 	variable when it acts as the argument of a type conversion.
+ 	* sem_util.adb (Is_Validation_Variable_Reference): Augment the
+ 	predicate to operate on type qualifications.
+ 
+ 2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_prag.adb, exp_ch6.adb, binde.adb, sem_disp.adb, s-fileio.adb:
+ 	Minor reformatting.
+ 
+ 2017-04-25  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_prag.adb (No_Return): Give an error if the pragma applies
+ 	to a body. Specialize the error for the specless body case,
+ 	as is done for (e.g.) pragma Convention.
+ 	* debug.adb: Add switch -gnatd.J to disable the above legality
+ 	checks. This is mainly for use in our test suite, to avoid
+ 	rewriting a lot of illegal (but working) code.	It might also
+ 	be useful to customers. Under this switch, if a pragma No_Return
+ 	applies to a body, and the procedure raises an exception (as it
+ 	should), the pragma has no effect. If the procedure does return,
+ 	execution is erroneous.
+ 
+ 2017-04-25  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_ch6.adb (Expand_Actuals): This is the
+ 	root of the problem. It took N as an 'in out' parameter, and in
+ 	some cases, rewrote N, but then set N to Original_Node(N). So
+ 	the node returned in N had no Parent. The caller continued
+ 	processing of this orphaned node. In some cases that caused a
+ 	crash (e.g. Remove_Side_Effects climbs up Parents in a loop,
+ 	and trips over the Empty Parent). The solution is to make N an
+ 	'in' parameter.  Instead of rewriting it, return the list of
+ 	post-call actions, so the caller can do the rewriting later,
+ 	after N has been fully processed.
+ 	(Expand_Call_Helper): Move most of Expand_Call here. It has
+ 	too many premature 'return' statements, and we want to do the
+ 	rewriting on return.
+ 	(Insert_Post_Call_Actions): New procedure to insert the post-call
+ 	actions in the appropriate place. In the problematic case,
+ 	that involves rewriting N as an Expression_With_Actions.
+ 	(Expand_Call): Call the new procedures Expand_Call_Helper and
+ 	Insert_Post_Call_Actions.
+ 
+ 2017-04-25  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_prag.adb (Inherits_Class_Wide_Pre): Cleanup code, handle
+ 	properly type derived from generic formal types, to handle
+ 	properly modified version of ACATS 4.1B B611017.
+ 
+ 2017-04-25  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_unst.adb (Subp_Index): Adding missing
+ 	support for renamings and functions that return a constrained
+ 	array type (i.e. functions for which the frontend built a
+ 	procedure with an extra out parameter).
+ 
+ 2017-04-25  Pascal Obry  <obry@adacore.com>
+ 
+ 	* s-string.adb: Minor code clean-up.
+ 
+ 2017-04-25  Bob Duff  <duff@adacore.com>
+ 
+ 	* s-os_lib.ads, s-os_lib.adb (Non_Blocking_Wait_Process): New
+ 	procedure.
+ 	* adaint.h, adaint.c (__gnat_portable_no_block_wait): C support
+ 	function for Non_Blocking_Wait_Process.
+ 
+ 2017-04-25  Bob Duff  <duff@adacore.com>
+ 
+ 	* prep.adb (Preprocess): Remove incorrect
+ 	Assert. Current character can be ASCII.CR.
+ 
+ 2017-04-25  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_prag.adb (Set_Convention_From_Pragma): Cleanup code for
+ 	convention Stdcall, which has a number of exceptions. Convention
+ 	is legal on a component declaration whose type is an anonymous
+ 	access to subprogram.
+ 
+ 2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_ch4.adb: sem_ch4.adb Various reformattings.
+ 	(Try_One_Prefix_Interpretation): Use the base type when dealing
+ 	with a subtype created for purposes of constraining a private
+ 	type with discriminants.
+ 
+ 2017-04-25  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* einfo.ads, einfo.adb (Has_Private_Extension): new attribute.
+ 	* warnsw.ads, warnsw.adb (All_Warnings): Set warning on late
+ 	dispatching primitives (Restore_Warnings): Restore warning on
+ 	late dispatching primitives (Save_Warnings): Save warning on late
+ 	dispatching primitives (Do_Warning_Switch): Use -gnatw.j/-gnatw.J
+ 	to enable/disable this warning.
+ 	(WA_Warnings): Set warning on late dispatching primitives.
+ 	* sem_ch3.adb (Analyze_Private_Extension_Declaration): Remember
+ 	that its parent type has a private extension.
+ 	* sem_disp.adb (Warn_On_Late_Primitive_After_Private_Extension):
+ 	New subprogram.
+ 	* usage.adb: Document -gnatw.j and -gnatw.J.
+ 
+ 2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* exp_ch7.adb, checks.adb, sem_prag.adb, eval_fat.adb: Minor
+ 	reformatting.
+ 
+ 2017-04-25  Bob Duff  <duff@adacore.com>
+ 
+ 	* binde.adb (Validate): Do not pass dynamic strings
+ 	to pragma Assert, because older compilers do not support that.
+ 
+ 2017-04-25  Bob Duff  <duff@adacore.com>
+ 
+ 	* s-fileio.adb (Close): When a temp file is
+ 	closed, delete it and clean up its Temp_File_Record immediately,
+ 	rather than waiting until later.
+ 	(Temp_File_Record): Add File
+ 	component, so Close can know which Temp_File_Record corresponds
+ 	to the file being closed.
+ 	(Delete): Don't delete temp files,
+ 	because they are deleted by Close.
+ 	(Open): Set the File component
+ 	of Temp_File_Record. This requires moving the creation of the
+ 	Temp_File_Record to the end, after the AFCB has been created.
+ 
+ 2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* checks.adb (Insert_Valid_Check): Do not generate
+ 	a validity check when inside a generic.
+ 
+ 2017-04-25  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Type_Conversion): Fix bad logic.
+ 
+ 2017-04-25  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* snames.ads-tmpl (Snames): More names for detecting predefined
+ 	potentially blocking subprograms.
+ 
+ 2017-04-25  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Pre_Post_Condition): The rules
+ 	concerning inheritance of class-wide preconditions do not apply
+ 	to postconditions.
+ 
+ 2017-04-25  Bob Duff  <duff@adacore.com>
+ 
+ 	* s-ficobl.ads: Minor comment fix.
+ 
+ 2017-04-25  Yannick Moy  <moy@adacore.com>
+ 
+ 	* checks.adb (Apply_Scalar_Range_Check): Analyze precisely
+ 	conversions from float to integer in GNATprove mode.
+ 	(Apply_Type_Conversion_Checks): Make sure in GNATprove mode
+ 	to call Apply_Type_Conversion_Checks, so that range checks
+ 	are properly positioned when needed on conversions, including
+ 	when converting from float to integer.	(Determine_Range): In
+ 	GNATprove mode, take into account the possibility of conversion
+ 	from float to integer.
+ 	* sem_res.adb (Resolve_Type_Conversion): Only enforce range
+ 	check on conversions from fixed-point to integer, not anymore
+ 	on conversions from floating-point to integer, when in GNATprove
+ 	mode.
+ 
+ 2017-04-25  Yannick Moy  <moy@adacore.com>
+ 
+ 	* checks.adb (Determine_Range_R): Special case type conversions
+ 	from integer to float in order to get bounds in that case too.
+ 	* eval_fat.adb (Machine): Avoid issuing warnings in GNATprove
+ 	mode, for computations involved in interval checking.
+ 
+ 2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* checks.adb (Insert_Valid_Check): Partially reimplement validity
+ 	checks.
+ 	* einfo.adb Node36 is now used as Validated_Object.
+ 	(Validated_Object): New routine.
+ 	(Set_Validated_Object): New routine.
+ 	(Write_Field36_Name): Add an entry for Validated_Object.
+ 	* einfo.ads Add new attribute Validated_Object along with
+ 	usage in entities.
+ 	(Validated_Object): New routine along with pragma Inline.
+ 	(Set_Validated_Object): New routine along with pragma Inline.
+ 	* exp_attr.adb (Make_Range_Test): Add processing for validation
+ 	variables to avoid extra reads and copies of the prefix.
+ 	* exp_ch6.adb (Expand_Actuals): Add copy-back for validation
+ 	variables in order to reflect any changes done in the variable
+ 	back into the original object.
+ 	* sem_util.adb (Is_Validation_Variable_Reference): New routine.
+ 	* sem_util.ads (Is_Validation_Variable_Reference): New routine.
+ 
+ 2017-04-25  Steve Baird  <baird@adacore.com>
+ 
+ 	* exp_ch7.adb (Build_Array_Deep_Procs,
+ 	Build_Record_Deep_Procs, Make_Finalize_Address_Body): Don't
+ 	generate Finalize_Address routines for CodePeer.
+ 
+ 2017-04-25  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_prag.adb (Inherits_Class_Wide_Pre): subsidiary of
+ 	Analyze_Pre_Post_Condition, to implement the legality checks
+ 	mandated by AI12-0131: Pre'Class shall not be specified for an
+ 	overriding primitive subprogram of a tagged type T unless the
+ 	Pre'Class aspect is specified for the corresponding primitive
+ 	subprogram of some ancestor of T.
+ 
+ 2017-04-25  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_ch8.adb (Use_One_Type): If a use_type_clause
+ 	is redundant, set its Used_Operations to empty. This is only
+ 	necessary for use clauses that appear in the parent of a generic
+ 	child unit, because those use clauses get reanalyzed when we
+ 	instantiate the generic, and we don't want the Used_Operations
+ 	carried over from the original context (where it was probably
+ 	not redundant).
+ 
+ 2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* exp_ch6.adb: Minor reformatting.
+ 
+ 2017-04-25  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_prag.adb (Process_Restrictions_Or_Restriction_Warnings):
+ 	Use Source_Index (Current_Sem_Unit) to find the correct casing.
+ 	* exp_prag.adb (Expand_Pragma_Check): Use Source_Index
+ 	(Current_Sem_Unit) to find the correct casing.
+ 	* par.adb (Par): Null out Current_Source_File, to ensure that
+ 	the above bugs won't rear their ugly heads again.
+ 
+ 2017-04-25  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch8.adb (Find_Type): For an attribute reference
+ 	'Class, if prefix type is synchronized and previous errors
+ 	have suppressed the creation of the corresponding record type,
+ 	create a spurious class-wide for the synchonized type itself,
+ 	to catch other misuses of the attribute
+ 
+ 2017-04-25  Steve Baird  <baird@adacore.com>
+ 
+ 	* exp_ch6.adb (Expand_Simple_Function_Return): if CodePeer_Mode
+ 	is True, then don't generate the accessibility check for the
+ 	tag of a tagged result.
+ 	* exp_intr.adb (Expand_Dispatching_Constructor_Call):
+ 	if CodePeer_Mode is True, then don't generate the
+ 	tag checks for the result of call to an instance of
+ 	Ada.Tags.Generic_Dispatching_Constructor (i.e., both the "is a
+ 	descendant of" check and the accessibility check).
+ 
+ 2017-04-25  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch13.adb: Code cleanups.
+ 	* a-strbou.ads: minor whitespace fix in Trim for bounded strings.
+ 	* sem_ch8.ads: Minor comment fix.
+ 
+ 2017-04-25  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch4.adb (Library_Level_Target): New function.
+ 	(Expand_Concatenate): When optimization is enabled, also expand
+ 	the operation out-of-line if the concatenation is present within
+ 	the expression of the declaration of a library-level object and
+ 	not only if it is the expression of the declaration.
+ 
+ 2017-04-25  Bob Duff  <duff@adacore.com>
+ 
+ 	* freeze.adb (Freeze_Object_Declaration): Do
+ 	not Remove_Side_Effects if there is a pragma Linker_Section,
+ 	because in that case we want static initialization in the
+ 	appropriate section.
+ 
+ 2017-04-25  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* exp_dbug.adb: Minor rewording and reformatting.
+ 
+ 2017-04-25  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_attr.adb (Statically_Denotes_Object): New predicate, to
+ 	handle the proposed changes to rules concerning potentially
+ 	unevaluated expressions, to include selected components that
+ 	do not depend on discriminants, and indexed components with
+ 	static indices.
+ 	* sem_util.adb (Is_Potentially_Unevaluated): Add check for
+ 	predicate in quantified expression, and fix bugs in the handling
+ 	of case expressions and membership test.
+ 	(Analyze_Attribute_Old_Result): use new predicate.
+ 	(Analyze_Attribute, case Loop_Entry): ditto.
+ 
+ 2017-04-25  Bob Duff  <duff@adacore.com>
+ 
+ 	* s-secsta.adb (SS_Info): Add a comment
+ 	explaining why we don't need to walk all the chunks in order to
+ 	compute the total size.
+ 
+ 2017-04-25  Bob Duff  <duff@adacore.com>
+ 
+ 	* namet.ads, namet.adb (Global_Name_Buffer): Increase the length
+ 	of the global name buffer to 4*Max_Line_Length.
+ 
+ 2017-04-25  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_ch8.adb (Expand_N_Object_Renaming_Declaration): When creating a
+ 	renaming entity for debug information, mark the entity as needing debug
+ 	info if it comes from sources.
+ 
+ 2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_ch13.adb (Analyze_Attribute_Definition_Clause): Remove the
+ 	restriction converning the use of 'Address where the prefix is
+ 	of a controlled type.
+ 
+ 2017-04-25  Pierre-Marie de Rodat  <derodat@adacore.com>
+ 
+ 	* exp_dbug.adb: In Debug_Renaming_Declaration,
+ 	skip slices that are made redundant by an indexed component
+ 	access.
+ 	* atree.h: New definition for Original_Node.
+ 
+ 2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_prag.adb, sem_prag.ads: Minor reformatting.
+ 
+ 2017-04-25  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch3.adb (Check_Entry_Contract): Call
+ 	Preanalyze_Spec_Expression so that resolution takes place as well.
+ 	* sem_util.adb (Check_Internal_Protected_Use): Reject properly
+ 	internal calls that appear in preconditions of protected
+ 	operations, in default values for same, and in contract guards
+ 	for contract cases in SPARK.
+ 
+ 2017-04-25  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* a-numaux.ads: Fix description of a-numaux-darwin
+ 	and a-numaux-x86.
+ 	(Double): Define to Long_Float.
+ 	* a-numaux-vxworks.ads (Double): Likewise.
+ 	* a-numaux-darwin.ads
+ 	(Double): Likewise.
+ 	* a-numaux-libc-x86.ads (Double): Define to Long_Long_Float.
+ 	* a-numaux-x86.ads: Fix package description.
+ 	* a-numaux-x86.adb (Is_Nan): Minor tweak.
+ 	(Reduce): Adjust and complete description. Call Is_Nan instead of
+ 	testing manually. Use an integer temporary to hold rounded value.
+ 	* a-numaux-darwin.adb (Reduce): Likewise.
+ 	(Is_Nan): New function.
+ 
+ 2017-04-25  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch4.adb (Analyze_Selected_Component): Additional refinement
+ 	on analysis of prefix whose type is a current instance of a
+ 	synchronized type, but where the prefix itself is an entity that
+ 	is an object.
+ 
+ 2017-04-25  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_ch5.adb (Replace_Target): When rewriting the RHS, preserve
+ 	the identity of callable entities therein, because they have been
+ 	properly resolved, and prefixed calls may have been rewritten
+ 	as normal calls.
+ 
+ 2017-04-25  Patrick Bernardi  <bernardi@adacore.com>
+ 
+ 	* exp_ch3.adb (Build_Init_Statements): Convert
+ 	the expression of the pragma/aspect Secondary_Stack_Size to
+ 	internal type System.Parameters.Size_Type before assigning
+ 	it to the Secondary_Stack_Size component of the task type's
+ 	corresponding record.
+ 
+ 2017-04-25  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_eval.adb (Compile_Time_Compare): Reinstate the expr+literal
+ 	(etc) optimizations when the type is modular and the offsets
+ 	are equal.
+ 
+ 2017-04-25  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* s-osinte-freebsd.ads: Minor comment tweaks
+ 
+ 2017-04-25  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* urealp.adb (UR_Write): Reverse previous patch
+ 	adding documentation on why we generate multiplications instead
+ 	of divisions (needed to avoid expressions whose computation with
+ 	large numbers may cause division by 0).
+ 
+ 2017-04-25  Bob Duff  <duff@adacore.com>
+ 
+ 	* erroutc.adb (Set_Specific_Warning_Off,
+ 	Set_Warnings_Mode_Off): Use the correct source file for
+ 	Stop. Was using Current_Source_File, which is only valid during
+ 	parsing. Current_Source_File will have a leftover value from
+ 	whatever file happened to be parsed last, because of a with_clause
+ 	or something.
+ 
+ 2017-04-25  Bob Duff  <duff@adacore.com>
+ 
+ 	* lib.ads, lib.adb (In_Internal_Unit): New functions similar
+ 	to In_Predefined_Unit, but including GNAT units.
+ 	* sem_util.ads, sem_util.adb (Should_Ignore_Pragma): Replace
+ 	with Should_Ignore_Pragma_Par and Should_Ignore_Pragma_Sem,
+ 	because Should_Ignore_Pragma was not working reliably outside
+ 	the parser, because Current_Source_File is not valid.
+ 	* sem_prag.adb, exp_prag.adb: Call Should_Ignore_Pragma_Sem.
+ 	* par-prag.adb: Call Should_Ignore_Pragma_Par.
+ 
+ 2017-04-25  Arnaud Charlet  <charlet@adacore.com trojanek>
+ 
+ 	* gnat1drv.adb (Gnat1Drv): Disable Generate_Processed_File in
+ 	codepeer mode.
+ 
+ 2017-04-25  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* urealp.adb (UR_Write): Fix output of constants with a base other
+ 	that 10.
+ 
+ 2017-04-25  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_ch13.adb (Get_Interfacing_Aspects): Moved to sem_util.adb.
+ 	* sem_prag.adb (Analyze_Pragma, Process_Import_Or_Interface):
+ 	Add extra parameter for Process_Interface_Name.
+ 	(Process_Interface_Name): Add parameter for pragma to analyze
+ 	corresponding aspect.
+ 	* sem_util.ads, sem_util.adb (Get_Interfacing_Aspects): Added
+ 	from sem_ch13.adb
+ 
+ 2017-04-25  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* exp_ch7.adb, einfo.ads, sem_prag.adb: Minor reformatting and typo
+ 	correction.
+ 
+ 2017-04-25  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Comparison_Op): Do not
+ 	attempt evaluation of relational operations inside assertions.
+ 
+ 2017-04-25  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* exp_util.adb (Add_Interface_Invariants):
+ 	Restored, code moved back from Build_Invariant_Procedure_Body.
+ 	(Add_Parent_Invariants): Restored, code moved back from
+ 	Build_Invariant_Procedure_Body.
+ 	(Build_Invariant_Procedure_Body):
+ 	Remove refactored calls and integrated code from
+ 	Add_Parent_Invariants and Add_Interface_Invariants.
+ 
+ 2017-04-25  Johannes Kanig  <kanig@adacore.com>
+ 
+ 	* errout.adb (Output_Messages): Adjust computation of total
+ 	errors
+ 	* erroutc.adb (Error_Msg): In statistics counts, deal
+ 	correctly with informational messages that are not warnings.
+ 	* errutil.adb (Finalize): adjust computation of total errors.
+ 
+ 2017-04-25  Arnaud Charlet  <charlet@adacore.com trojanek>
+ 
+ 	* terminals.c (__gnat_terminate_pid): New.
+ 	* g-exptty.ads (Terminate_Process): New. Update comments.
+ 
+ 2017-04-25  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* a-cfinve.ads, a-cofove.ads (Empty_Vector): add Global contract.
+ 
+ 2017-04-25  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_ch3.adb (Analyze_Declarations): Minor
+ 	correction to comments, move out large conditional and scope
+ 	traversal into a predicate.
+ 	(Uses_Unseen_Lib_Unit_Priv): Predicate function made from extracted
+ 	logic.
+ 
+ 2017-04-25  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch4.adb (Analyze_Selected_Component): Refine analysis
+ 	of prefix whose type is a current instance of a synchronized
+ 	type. If the prefix is an object this is an external call (or
+ 	requeue) that can only access public operations of the object. The
+ 	previous predicate was too restrictive, and did not allow public
+ 	protected operations, only task entries.
+ 
+ 2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_ch5.adb, fname.adb: Minor reformatting.
+ 
+ 2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* einfo.adb (Is_Anonymous_Access_Type): New routine.
+ 	* einfo.ads Update the placement of
+ 	E_Anonymous_Access_Subprogram_Type along with all subtypes that
+ 	mention the ekind.
+ 	(Is_Anonymous_Access_Type): New routine.
+ 	* exp_ch7.adb (Allows_Finalization_Master): Do not generate a
+ 	master for an access type subject to pragma No_Heap_Finalization.
+ 	* exp_util.adb (Build_Allocate_Deallocate_Proc): An object being
+ 	allocated or deallocated does not finalization actions if the
+ 	associated access type is subject to pragma No_Heap_Finalization.
+ 	* opt.ads Add new global variable No_Heap_Finalization_Pragma.
+ 	* par-prag.adb Pragma No_Heap_Finalization does not need special
+ 	processing from the parser.
+ 	* sem_ch6.adb (Check_Return_Subtype_Indication): Remove ancient
+ 	??? comments. Use the new predicate Is_Anonymous_Access_Type.
+ 	* sem_prag.adb Add an entry in table Sig_Flags for pragma
+ 	No_Heap_Finalization.
+ 	(Analyze_Pragma): Add processing for
+ 	pragma No_Heap_Finalization. Update various error messages to
+ 	use Duplication_Error.
+ 	* sem_util.ads, sem_util.adb (No_Heap_Finalization): New routine.
+ 	* snames.ads-tmpl: Add new predefined name No_Heap_Finalization
+ 	and corresponding pragma id.
+ 
+ 2017-04-25  Bob Duff  <duff@adacore.com>
+ 
+ 	* freeze.adb (Freeze_Record_Type): Use the
+ 	underlying type of the component type to determine whether it's
+ 	elementary. For representation clause purposes, a private type
+ 	should behave the same as its full type.
+ 	* fname.ads, fname.adb (Is_Predefined_File_Name):
+ 	Make sure things like "system.ali" are recognized as predefined.
+ 
+ 2017-04-25  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* debug.adb: Update documentation of -gnatd.6.
+ 
+ 2017-04-25  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch5.adb (Preanalyze_Range): Handle properly an Ada2012
+ 	element iterator when the name is an overloaded function call,
+ 	one of whose interpretations yields an array.
+ 
+ 2017-04-25  Bob Duff  <duff@adacore.com>
+ 
+ 	* uname.ads, uname.adb (Is_Predefined_Unit_Name,
+ 	Is_Internal_Unit_Name): New functions for operating on unit
+ 	names, as opposed to file names. There's some duplicated code
+ 	with fname.adb, which is unfortunate, but it seems like we don't
+ 	want to add dependencies here.
+ 	* fname-uf.adb (Get_File_Name): Change Is_Predefined_File_Name
+ 	to Is_Predefined_Unit_Name; the former was wrong, because Uname
+ 	is not a file name at all.
+ 	* fname.ads, fname.adb: Document the fact that
+ 	Is_Predefined_File_Name and Is_Internal_File_Name can be called
+ 	for ALI files, and fix the code so it works properly for ALI
+ 	files. E.g. these should return True for "system.ali".
+ 
+ 2017-04-25  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* exp_util.adb (Add_Invariant): Removed,
+ 	code moved to Add_Invariant_Check, Add_Inherited_Invariant,
+ 	and Add_Own_Invariant.	(Add_Invariant_Check): Used
+ 	for adding runtime checks from any kind of invariant.
+ 	(Add_Inherited_Invariant): Generates invariant checks for
+ 	class-wide invariants (Add_Interface_Invariants): Removed, code
+ 	moved to Build_Invariant_Procedure_Body (Add_Own_Invariant):
+ 	Create a types own invariant procedure (Add_Parent_Invariants):
+ 	Removed, code moved to Build_Invariant_Procedure_Body
+ 	(Build_Invariant_Procedure_Body): Add refactored calls
+ 	and integrated code from Add_Parent_Invariants and
+ 	Add_Interface_Invariants.
+ 	(Process_Type): Removed, the
+ 	relavant code was inlined into both Add_Own_Invariant and
+ 	Add_Inherited_Invariant.
+ 
+ 2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* make.adb, par-ch2.adb, sem_util.adb, scans.ads, sem_ch8.adb,
+ 	scn.adb, osint.adb, fname.adb: Minor reformatting.
+ 
+ 2017-04-25  Pascal Obry  <obry@adacore.com>
+ 
+ 	* s-taprop-mingw.adb: Do not check for CloseHandle in
+ 	Finalize_TCB.
+ 
+ 2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_util.adb (Check_Part_Of_Reference):
+ 	Continue to examine the context if the reference appears within
+ 	an expression function.
+ 
+ 2017-04-25  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* exp_ch7.adb, exp_ch7.ads Remove Build_Invariant_Procedure_Body
+ 	and Build_Invariant_Procedure_Declaration.
+ 	* exp_util.ads, exp_util.adb Add Build_Invariant_Procedure_Body
+ 	and Build_Invariant_Procedure_Declaration from exp_ch7
+ 	and break-out Is_Untagged_Private_Derivation from
+ 	Build_Invariant_Procedure_Body.
+ 	(Replace_Type_References):
+ 	Append an extra parameter to allow for dispatching replacements
+ 	and add the corrasponding logic.
+ 	(Type_Invariant): Remove
+ 	Replace_Typ_Refs and replace its references with calls to
+ 	Replace_Type_References.
+ 	* sem_ch3.adb, sem_prag.adb: Remove with and use of exp_ch7.
+ 
+ 2017-04-25  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_util.ads, sem_util.adb (Should_Ignore_Pragma): New function
+ 	that returns True when appropriate.
+ 	* par-prag.adb, exp_prag.adb, sem_prag.adb: Do not ignore pragmas
+ 	when compiling predefined files.
+ 	* fname.ads, fname.adb (Is_Predefined_File_Name): Fix bug:
+ 	"gnat.adc" should not be considered a predefined file name.
+ 	That required (or at least encouraged) a lot of cleanup of global
+ 	variable usage. We shouldn't be communicating information via
+ 	the global name buffer.
+ 	* bindgen.adb, errout.adb, fname-uf.adb, lib-load.adb, make.adb,
+ 	* restrict.adb, sem_ch10.adb, sem_ch6.adb, sem_ch8.adb: Changes
+ 	required by the above-mentioned cleanup.
+ 
+ 2017-04-25  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* osint.adb (Find_File): Handle properly a request for a
+ 	configuration file whose name is a directory.
+ 
+ 2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_attr.adb, sem_ch5.adb: Minor reformatting.
+ 
+ 2017-04-25  Bob Duff  <duff@adacore.com>
+ 
+ 	* types.ads: Minor: Fix '???' comment.
+ 	* sem_ch8.adb: Minor comment fix.
+ 
+ 2017-04-25  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_prag.adb: Remove suspicious uses of Name_Buf.
+ 	* stringt.ads, stringt.adb, exp_dbug.adb, sem_dim.adb: Remove
+ 	Add_String_To_Name_Buffer, to avoid using the global Name_Buf.
+ 	Add String_To_Name with no side effects.
+ 
+ 2017-04-25  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_ch3.adb (Analyze_Declarations): Add
+ 	additional condition for edge case.
+ 
+ 2017-04-25  Bob Duff  <duff@adacore.com>
+ 
+ 	* par-ch2.adb, scans.ads, scn.adb: Do not give an error for
+ 	reserved words inside pragmas. This is necessary to allow the
+ 	pragma name Interface to be used in pragma Ignore_Pragma.
+ 	* par.adb: Minor comment fix.
+ 
+ 2017-04-25  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* a-tags.ads, a-tags.adb (Type_Is_Abstract): Renamed as Is_Abstract.
+ 	* rtsfind.ads (RE_Type_Is_Abstract): Renamed as Is_Abstract.
+ 	* exp_disp.adb (Make_DT): Update occurrences of RE_Type_Is_Abstract.
+ 	* exp_intr.adb (Expand_Dispatching_Constructor_Call): Update
+ 	occurrences of RE_Type_Is_Abstract
+ 
+ 2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* exp_util.adb (Build_Chain): Account for ancestor
+ 	subtypes while traversing the derivation chain.
+ 
+ 2017-04-25  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_attr.adb: minor reformatting.
+ 
+ 2017-04-25  Doug Rupp  <rupp@adacore.com>
+ 
+ 	* sigtramp-vxworks-target.inc [PPC64]: Add a .localentry pseudo-op.
+ 
+ 2017-04-25  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch5.adb (Analyze_Assignment): Reset Full_Analysis flag on
+ 	the first pass over an assignment statement with target names,
+ 	to prevent the generation of subtypes (such as discriminated
+ 	record components)that may carry the target name outside of the
+ 	tree for the assignment. The subtypes will be generated when
+ 	the assignment is reanalyzed in full.
+ 	(Analyze_Target_Name): Handle properly class-wide types.
+ 
+ 2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* elists.ads, elists.adb (Prepend_Unique_Elmt): New routine.
+ 	* exp_ch3.adb (Freeze_Type): Signal the DIC body is created for
+ 	the purposes of freezing.
+ 	* exp_util.adb Update the documentation and structure of the
+ 	type map used in class-wide semantics of assertion expressions.
+ 	(Add_Inherited_Tagged_DIC): There is really no need to preanalyze
+ 	and resolve the triaged expression because all substitutions
+ 	refer to the proper entities.  Update the replacement of
+ 	references.
+ 	(Build_DIC_Procedure_Body): Add formal parameter
+ 	For_Freeze. Add local variable Build_Body. Inherited DIC pragmas
+ 	are now only processed when freezing occurs.  Build a body only
+ 	when one is needed.
+ 	(Entity_Hash): Removed.
+ 	(Map_Types): New routine.
+ 	(Replace_Object_And_Primitive_References): Removed.
+ 	(Replace_References): New routine.
+ 	(Replace_Type_References): Moved to the library level of Exp_Util.
+ 	(Type_Map_Hash): New routine.
+ 	(Update_Primitives_Mapping): Update the mapping call.
+ 	(Update_Primitives_Mapping_Of_Types): Removed.
+ 	* exp_util.ads (Build_DIC_Procedure_Body): Add formal
+ 	parameter For_Freeze and update the comment on usage.
+ 	(Map_Types): New routine.
+ 	(Replace_References): New routine.
+ 	(Replace_Type_References): Moved to the library level of Exp_Util.
+ 	(Update_Primitives_Mapping_Of_Types): Removed.
+ 	* sem_ch7.adb (Preserve_Full_Attributes): Propagate the DIC
+ 	properties of the private type to the full view in case the full
+ 	view derives from a parent type and inherits a DIC pragma.
+ 	* sem_prag.adb (Analyze_Pragma): Guard against a case where a
+ 	DIC pragma is placed at the top of a declarative region.
+ 
+ 2017-04-25  Arnaud Charlet  <charlet@adacore.com trojanek>
+ 
+ 	* a-tasatt.adb: Complete previous change and use an unsigned
+ 	int to avoid overflow checks.
+ 
+ 2017-04-25  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_attr.adb (Analyze_Attribute, case 'Access): Specialize
+ 	the error message when the attribute reference is an actual in
+ 	a call to a subprogram inherited from a generic formal type with
+ 	unknown discriminants, which makes the subprogram and its formal
+ 	parameters intrinsic (see RM 6.3.1 (8) and (13)).
+ 
+ 2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_aggr.adb, inline.adb, einfo.adb, einfo.ads, scng.adb,
+ 	sem_prag.adb: Minor reformatting.
+ 
+ 2017-04-25  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_attr.adb (Type_Key): Add code in the
+ 	recursive Compute_Type_Key to protect against fetching the source
+ 	code for Standard, in case a component of the type is declared
+ 	in Standard. There was already code to do this for the original
+ 	type, but not for its components.
+ 
+ 2017-04-25  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_ch3.adb (Build_Initialization_Call): Handle
+ 	subtypes of private types when searching for the underlying full
+ 	view of a private type.
+ 
+ 2017-04-25  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_res.adb (Set_Mixed_Mode_Operand): A universal
+ 	real conditional expression can appear in a fixed-type context
+ 	and must be resolved with that context to facilitate the code
+ 	generation to the backend.
+ 
+ 2017-04-25  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* einfo.adb, einfo.ads (Body_Needed_For_Inlining): New flag,
+ 	to indicate whether during inline processing, when some unit U1
+ 	appears in the context of a unit U2 compiled for instantiation
+ 	or inlining purposes, the body of U1 needs to be compiled as well.
+ 	* sem_prag.adb (Process_Inline): Set Body_Needed_For_Inlining if
+ 	context is a package declaration.
+ 	* sem_ch12.adb (Analyze_Generic_Subprogram_Declaration,
+ 	Analyze_Generic_Package_Declaration): ditto.
+ 	* inline.adb (Analyze_Inlined_Bodies): Check
+ 	Body_Needed_For_Inlining.
+ 
+ 2017-04-25  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* par.adb (Current_Assign_Node): Global variable use to record
+ 	the presence of a target_name in the right hand side of the
+ 	assignment being parsed.
+ 	* par-ch4.adb (P_Name): If the name is a target_name, mark the
+ 	enclosing assignment node accordingly.
+ 	* par-ch5.adb (P_Assignment_Statement): Set Current_Assign_Node
+ 	appropriately.
+ 	* sem_ch5.adb (Analyze_Assignment): Disable expansion before
+ 	analyzing RHS if the statement has target_names.
+ 	* sem_aggr.adb (Resolve_Iterated_Component_Association): Handle
+ 	properly choices that are subtype marks.
+ 	* exp_ch5.adb: Code cleanup.
+ 
+ 2017-04-25  Bob Duff  <duff@adacore.com>
+ 
+ 	* s-memory.adb: Add a comment regarding efficiency.
+ 	* atree.adb: Fix the assertion, and combine 2 assertions into one,
+ 	"the source has an extension if and only if the destination does."
+ 	* sem_ch3.adb, sem_ch13.adb: Address ??? comments.
+ 
+ 2017-04-25  Arnaud Charlet  <charlet@adacore.com trojanek>
+ 
+ 	* a-tasatt.adb (Set_Value): Fix handling of 32bits -> 64bits
+ 	conversion.
+ 
+ 2017-04-25  Doug Rupp  <rupp@adacore.com>
+ 
+ 	* init.c (__gnat_error_handler) [vxworks]: Turn on sigtramp
+ 	handling for ppc64-vx7.
+ 	* sigtramp-vxworks-target.inc
+ 	[SIGTRAMP_BODY]: Add section for ppc64-vx7.
+ 
+ 2017-04-25  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* ada_get_targ.adb: New file.
+ 
+ 2017-04-25  Bob Duff  <duff@adacore.com>
+ 
+ 	* uintp.adb (Most_Sig_2_Digits): In case Direct (Right), fetch
+ 	Direct_Val (Right), instead of the incorrect Direct_Val (Left).
+ 	(UI_GCD): Remove ??? comment involving possible efficiency
+ 	improvements. This just isn't important after all these years.
+ 	Also minor cleanup.
+ 	* uintp.ads: Minor cleanup.
+ 
+ 2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* exp_util.adb, exp_util.ads, sem_ch7.adb, sem_prag.adb, exp_ch3.adb:
+ 	Revert previous changes.
+ 	* scng.adb: Minor reformatting.
+ 	* s-stratt.ads: Fix unbalanced parens in comment.
+ 
+ 2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_ch3.adb, exp_util.adb, sem_prag.adb, freeze.adb, sem_util.adb:
+ 	Minor reformatting.
+ 
+ 2017-04-25  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* scng.adb (Scan): Handle '@' appropriately.
+ 	* sem_ch5.adb: Code cleanup.
+ 
+ 2017-04-25  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* freeze.adb (Check_Expression_Function): Do not check for the
+ 	use of deferred constants if the freezing of the expression
+ 	function is triggered by its generated body, rather than a
+ 	premature use.
+ 
+ 2017-04-25  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_attr.adb (Rewrite_Stream_Proc_Call): Handle
+ 	subtypes of private types when performing the view conversion.
+ 
+ 2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* exp_ch3.adb (Freeze_Type): Signal the DIC body is created for
+ 	the purposes of freezing.
+ 	* exp_util.adb Update the documentation and structure of the
+ 	type map used in class-wide semantics of assertion expressions.
+ 	(Add_Inherited_Tagged_DIC): There is really no need to preanalyze
+ 	and resolve the triaged expression because all substitutions
+ 	refer to the proper entities.  Update the replacement of
+ 	references.
+ 	(Build_DIC_Procedure_Body): Add formal parameter
+ 	For_Freeze. Add local variable Build_Body. Inherited DIC pragmas
+ 	are now only processed when freezing occurs.  Build a body only
+ 	when one is needed.
+ 	(Entity_Hash): Removed.
+ 	(Map_Types): New routine.
+ 	(Replace_Object_And_Primitive_References): Removed.
+ 	(Replace_References): New routine.
+ 	(Replace_Type_References): Moved to the library level of Exp_Util.
+ 	(Type_Map_Hash): New routine.
+ 	(Update_Primitives_Mapping): Update the mapping call.
+ 	(Update_Primitives_Mapping_Of_Types): Removed.
+ 	* exp_util.ads (Build_DIC_Procedure_Body): Add formal
+ 	parameter For_Freeze and update the comment on usage.
+ 	(Map_Types): New routine.
+ 	(Replace_References): New routine.
+ 	(Replace_Type_References): Moved to the library level of Exp_Util.
+ 	(Update_Primitives_Mapping_Of_Types): Removed.
+ 	* sem_ch7.adb (Preserve_Full_Attributes): Propagate the DIC
+ 	properties of the private type to the full view in case the full
+ 	view derives from a parent type and inherits a DIC pragma.
+ 	* sem_prag.adb (Analyze_Pragma): Guard against a case where a
+ 	DIC pragma is placed at the top of a declarative region.
+ 
+ 2017-04-25  Tristan Gingold  <gingold@adacore.com>
+ 
+ 	* s-mmap.ads (Data): Add pragma Inline.
+ 
+ 2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* checks.adb (Insert_Valid_Check): Do not use
+ 	a renaming to alias a volatile name because this will lead to
+ 	multiple evaluations of the volatile name. Use a constant to
+ 	capture the value instead.
+ 
+ 2017-04-25  Doug Rupp  <rupp@adacore.com>
+ 
+ 	* init.c [VxWorks Section]: Disable sigtramp for ppc64-vx7.
+ 
+ 2017-04-25  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_util.adb, exp_util.ads (Build_Class_Wide_Expression):
+ 	Add out parameter to indicate to caller that a wrapper must
+ 	be constructed for an inherited primitive whose inherited
+ 	pre/postcondition has called to overridden primitives.
+ 	* freeze.adb (Check_Inherited_Conditions): Build wrapper body
+ 	for inherited primitive that requires it.
+ 	* sem_disp.adb (Check_Dispatching_Operation): Such wrappers are
+ 	legal primitive operations and belong to the list of bodies
+ 	generated after the freeze point of a type.
+ 	* sem_prag.adb (Build_Pragma_Check_Equivalent): Use new signature
+ 	of Build_Class_Wide_Expression.
+ 	* sem_util.adb, sem_util.ads (Build_Overriding_Spec): New procedure
+ 	to construct the specification of the wrapper subprogram created
+ 	for an inherited operation.
+ 
+ 2017-04-25  Bob Duff  <duff@adacore.com>
+ 
+ 	* s-osinte-linux.ads (pthread_mutexattr_setprotocol,
+ 	pthread_mutexattr_setprioceiling): Add new interfaces for these
+ 	pthread operations.
+ 	* s-taprop-linux.adb (Initialize_Lock, Initialize_TCB): Set
+ 	protocols as appropriate for Locking_Policy 'C' and 'I'.
+ 	* s-taprop-posix.adb: Minor reformatting to make it more similar
+ 	to s-taprop-linux.adb.
+ 
+ 2017-04-25  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch3.adb (Get_Discriminant_Value, Search_Derivation_Levels):
+ 	Handle properly a multi- level derivation involving both renamed
+ 	and constrained parent discriminants, when the type to be
+ 	constrained has fewer discriminants that the ultimate ancestor.
+ 
+ 2017-04-25  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_util.adb (Is_Object_Reference): In the
+ 	case of N_Explicit_Dereference, return False if it came from a
+ 	conditional expression.
+ 
+ 2017-04-25  Bob Duff  <duff@adacore.com>
+ 
+ 	* par-ch4.adb (P_Case_Expression): If a semicolon
+ 	is followed by "when", assume that ";" was meant to be ",".
+ 
+ 2017-04-25  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* sem_ch9.adb, sem_ch10.adb, sem_util.adb: Minor reformatting and typo
+ 	fixes.
+ 
+ 2017-04-25  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* rtsfind.ads (SPARK_Implicit_Load): New procedure for forced
+ 	loading of an entity.
+ 	* rtsfind.adb (SPARK_Implicit_Load): Body with a pattern
+ 	previously repeated in the analysis.
+ 	* sem_ch9.adb (Analyze_Protected_Type_Declaration): use new
+ 	procedure SPARK_Implicit_Load.	(Analyze_Task_Type_Declaration):
+ 	use new procedure SPARK_Implicit_Load.
+ 	* sem_ch10.adb (Analyze_Compilation_Unit): Use new procedure
+ 	SPARK_Implicit_Load.
+ 
+ 2017-04-25  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_util.adb (New_Copy_Tree): By default
+ 	copying of defining identifiers is prohibited because
+ 	this would introduce an entirely new entity into the
+ 	tree. This patch introduces an exception to this general
+ 	rule: the declaration of constants and variables located in
+ 	Expression_With_Action nodes.
+ 	(Copy_Itype_With_Replacement): Renamed as Copy_Entity_With_Replacement.
+ 	(In_Map): New subprogram.
+ 	(Visit_Entity): New subprogram.
+ 	(Visit_Node): Handle EWA_Level,
+ 	EWA_Inner_Scope_Level, and take care of defining entities defined
+ 	in Expression_With_Action nodes.
+ 
+ 2017-04-25  Thomas Quinot  <quinot@adacore.com>
+ 
+ 	* exp_ch6.adb: minor comment edit.
+ 	* sinfo.ads, sinfo.adb: New Null_Statement attribute for null
+ 	procedure specifications that come from source.
+ 	* par-ch6.adb (P_Subprogram, case of a null procedure): Set new
+ 	Null_Statement attribute.
+ 	* par_sco.adb (Traverse_Declarations_Or_Statements): For a null
+ 	procedure, generate statement SCO for the generated NULL statement.
+ 	* sem_ch6.adb (Analyze_Null_Procedure): Use null statement from
+ 	parser, if available.
+ 
+ 2017-04-04  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	* system-linux-s390.ads: Use Long_Integer'Size to define
+ 	Memory_Size.
+ 
+ 2017-04-04  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch3.adb (Build_Derived_Record_Type): Fix long line.
+ 
+ 2017-04-03  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* doc/gnat_ugn/gnat_and_program_execution.rst: Fix typo.
+ 	* g-socket.adb (To_Host_Entry): Fix typo in comment.
+ 	* gnat_ugn.texi: Fix typo.
+ 	* raise.c (_gnat_builtin_longjmp): Fix capitalization in comment.
+ 	* s-stposu.adb (Allocate_Any_Controlled): Fix typo in comment.
+ 	* sem_ch3.adb (Build_Derived_Record_Type): Likewise.
+ 	* sem_util.adb (Mark_Coextensions): Likewise.
+ 	* sem_util.ads (Available_Full_View_Of_Component): Likewise.
+ 
+ 2017-03-28  Andreas Schwab  <schwab@suse.de>
+ 
+ 	PR ada/80117
+ 	* system-linux-aarch64-ilp32.ads: New file.
+ 	* gcc-interface/Makefile.in (LIBGNAT_TARGET_PAIRS_COMMON): Rename
+ 	from LIBGNAT_TARGET_PAIRS.
+ 	(LIBGNAT_TARGET_PAIRS_32, LIBGNAT_TARGET_PAIRS_64): Define.
+ 	(LIBGNAT_TARGET_PAIRS): Use LIBGNAT_TARGET_PAIRS_COMMON, and
+ 	LIBGNAT_TARGET_PAIRS_64 or LIBGNAT_TARGET_PAIRS_32 for -mabi=lp64
+ 	or -mabi=ilp32, resp.
+ 
+ 2017-03-14  James Cowgill  <James.Cowgill@imgtec.com>
+ 
+ 	* s-osinte-linux.ads (struct_sigaction): Use correct type for sa_flags.
+ 
+ 2017-03-08  Thanassis Tsiodras  <ttsiodras@gmail.com>
+ 
+ 	PR ada/79903
+ 	* socket.c (__gnat_gethostbyaddr): Add missing test for __rtems__.
+ 
+ 2017-03-08  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/79945
+ 	* system-linux-ppc.ads (Default_Bit_Order): Use Standard's setting.
+ 
+ 	* system-linux-arm.ads (Default_Bit_Order): Likewise.
+ 	* system-linux-mips.ads (Default_Bit_Order): Likewise.
+ 	* system-linux-armeb.ads: Delete.
+ 	* system-linux-mipsel.ads: Likewise.
+ 	* gcc-interface/Makefile.in (MIPS/Linux): Adjust.
+ 	(ARM/Linux): Likewise.
+ 
+ 2017-02-24  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/79677
+ 	* gcc-interface/misc.c (gnat_handle_option): Pass true to
+ 	handle_generated_option GENERATED_P.
+ 
+ 2017-02-24  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.c (gnat_to_gnu_field): Do not remove the wrapper
+ 	around a justified modular type if it doesn't have the same scalar
+ 	storage order as the enclosing record type.
+ 
+ 2017-02-24  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.c (gnat_to_gnu): Do not apply special handling
+ 	of boolean rvalues to function calls.
+ 
+ 2017-02-24  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/utils.c (fold_bit_position): New function.
+ 	(rest_of_record_type_compilation): Call it instead of bit_position to
+ 	compute the field position and remove the call to remove_conversions.
+ 	(compute_related_constant): Factor out the multiplication in both
+ 	operands, if any, and streamline the final test.
+ 
+ 2017-02-24  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.c (return_value_ok_for_nrv_p): Add sanity check.
+ 
+ 2017-02-24  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.c: Include demangle.h.
+ 	(is_cplusplus_method): Return again true for a primitive operation
+ 	only if it is dispatching.  For a subprogram with an interface name,
+ 	call the demangler to get the number of C++ parameters and compare it
+ 	with the number of Ada parameters.
+ 
+ 2017-02-24  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.c (Handled_Sequence_Of_Statements_to_gnu): If
+ 	there is no end label, put the location of the At_End procedure on
+ 	the call to the procedure.
+ 
+ 2017-02-24  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/misc.c (gnat_type_max_size): Try to return a meaningful
+ 	value for array types with TYPE_INDEX_TYPE set on their domain type.
+ 	* gcc-interface/utils.c (max_size): For operations and expressions, do
+ 	not build a new node if the operands have not changed or are missing.
+ 
+ 2017-02-24  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/utils.c (max_size) <tcc_expression>: Flip the second
+ 	argument when recursing on TRUTH_NOT_EXPR.
+ 
+ 2017-02-12  John Marino  <gnugcc@marino.st>
+ 
+ 	* system-freebsd-x86.ads: Rename into...
+ 	* system-freebsd.ads: ...this.
+ 	(Default_Bit_Order): Define using Standard'Default_Bit_Order.
+ 	* gcc-interface/Makefile.in: Support aarch64-freebsd.
+ 	(x86-64/FreeBSD): Adjust to above renaming.
+ 	(i386/FreeBSD): Likewise.
+ 
+ 2017-02-09  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* comperr.adb: Update FSF bug reporting URL.
+ 
+ 2017-02-01  Eric Botcazou  <ebotcazou@adacore.com>
+             Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR ada/79309
+ 	* adaint.c (__gnat_killprocesstree): Fix broken string handling.
+ 
+ 2017-01-25  Maxim Ostapenko  <m.ostapenko@samsung.com>
+ 
+ 	PR lto/79061
+ 	* gcc-interface/utils.c (get_global_context): Pass main_input_filename
+ 	to build_translation_unit_decl.
+ 
+ 2017-01-23  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_util.adb (New_Copy_Tree): Code cleanup:
+ 	removal of the internal map (ie. variable Actual_Map, its
+ 	associated local variables, and all the code handling it).
+ 	* sem_ch9.adb (Analyze_Task_Type_Declaration): in GNATprove mode
+ 	force loading of the System package when processing a task type.
+ 	(Analyze_Protected_Type_Declaration): in GNATprove mode force
+ 	loading of the System package when processing a protected type.
+ 	* sem_ch10.adb (Analyze_Compilation_Unit): in GNATprove mode
+ 	force loading of the System package when processing compilation
+ 	unit with a main-like subprogram.
+ 	* frontend.adb (Frontend): remove forced loading of the System
+ 	package.
+ 
+ 2017-01-23  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_prag.adb (Default_Initial_Condition): If the desired type
+ 	declaration is a derived type declaration with discriminants,
+ 	it is rewritten as a private type declaration.
+ 	* sem_ch13.adb (Replace_Type_References_Generic,
+ 	Visible_Component): A discriminated private type with descriminnts
+ 	has components that must be rewritten as selected components
+ 	if they appear as identifiers in an aspect expression such as
+ 	a Default_Initial_Condition.
+ 	* sem_util.adb (Defining_Entity): support N_Iterator_Specification
+ 	nodes.
+ 
+ 2017-01-23  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* ghost.ads, ghost.adb (Is_Ignored_Ghost_Unit): New routine.
+ 	* gnat1drv.adb Generate an empty object file for an ignored
+ 	Ghost compilation unit.
+ 	* inline.adb, sem_util.adb, sem_ch4.adb: Minor reformatting.
+ 
+ 2017-01-23  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_ch4.adb (Analyze_Indexed_Component_Form):
+ 	Adapt to inlined prefix with string literal subtype.
+ 	* inline.adb (Expand_Inlined_Call): Keep unchecked
+ 	conversion inside inlined call when formal type is constrained.
+ 
+ 2017-01-23  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_util.adb (New_Copy_Tree): Code cleanup:
+ 	removal of global variables. All the global variables, global
+ 	functions and tables of this subprogram are now declared locally.
+ 
+ 2017-01-23  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* exp_strm.ads: Minor reformatting and typo fixes.
+ 
+ 2017-01-23  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_aggr.adb, par_sco.adb, exp_util.adb, sem.adb, sem_ch4.adb,
+ 	exp_aggr.adb: Minor reformatting.
+ 	* g-diopit.adb: minor grammar/punctuation fix in comment.
+ 	* g-byorma.ads: minor fix of unbalanced parens in comment.
+ 
+ 2017-01-23  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* par.adb: Update the documentation of component Labl.
+ 	* par-ch6.adb (P_Return_Statement): Set the expected label of
+ 	an extended return statement to Error.
+ 
+ 2017-01-23  Tristan Gingold  <gingold@adacore.com>
+ 
+ 	* s-boustr.ads, s-boustr.adb (Is_Full): New function.
+ 
+ 2017-01-23  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* expander.adb: Handle N_Delta_Aggregate.
+ 
+ 2017-01-23  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_ch6.adb (Expand_Call): Improve the code that
+ 	checks if some formal of the called subprogram is a class-wide
+ 	interface, to handle subtypes of class-wide interfaces.
+ 
+ 2017-01-23  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* checks.adb (Apply_Parameter_Aliasing_Checks):
+ 	Remove side effects of the actuals before generating the overlap
+ 	check.
+ 
+ 2017-01-23  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* exp_strm.ads, exp_strm.ads
+ 	(Build_Record_Or_Elementary_Input_Function): Add an extra parameter so
+ 	as to avoid getting the underlying type by default.
+ 	* exp_attr.adb (Expand_N_Attribute_Reference): Remove use of
+ 	underlying type in the Iiput and output attribute cases when
+ 	building their respective functions.
+ 
+ 2017-01-23  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* scng.adb: Minor reformatting of error message.
+ 
+ 2017-01-23  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch6.adb (Analyze_Expression_Function): Do not attempt
+ 	to freeze the return type of an expression funxtion that is a
+ 	completion, if the type is a limited view and the non-limited
+ 	view is available.
+ 
+ 2017-01-23  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* par-ch4.adb (P_Aggregate_Or_Parent_Expr): Recognize delta
+ 	aggregate construct.
+ 	(P_Record_Or_Array_Component_Association): An array aggregate
+ 	can start with an Iterated_Component_Association.
+ 	* scng.adb: Modify error message on improper use of @ in earlier
+ 	versions of the language.
+ 	* sinfo.ads: New node kind N_Delta_Aggregate.
+ 	* sinfo.adb: An N_Delta_Aggregate has component associations and
+ 	an expression.
+ 	* sem_res.adb (Resolve): Call Resolve_Delta_Aggregate.
+ 	* sem_aggr.ads, sem_aggr.adb (Resolve_Iterated_Component_Association):
+ 	Create a new index for each one of the choices in the association,
+ 	to prevent spurious homonyms in the scope.
+ 	(Resolve_Delta_Aggregate): New.
+ 	* sem.adb: An N_Delta_Aggregate is analyzed like an aggregate.
+ 	* exp_util.adb (Insert_Actions): Take into account
+ 	N_Delta_Aggregate.
+ 	* exp_aggr.ads: New procedure Expand_N_Delta_Aggregate.
+ 	* exp_aggr.adb: New procedure Expand_N_Delta_Aggregate,
+ 	and local procedures Expand_Delta_Array_Aggregate and
+ 	expand_Delta_Record_Aggregate.
+ 	* sprint.adb: Handle N_Delta_Aggregate.
+ 
+ 2017-01-23  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* exp_ch11.adb (Expand_N_Exception_Declaration): Generate an
+ 	empty name when the exception declaration is subject to pragma
+ 	Discard_Names.
+ 	(Null_String): New routine.
+ 
+ 2017-01-23  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* par-ch9.adb (P_Protected_Definition): Parse
+ 	any optional and potentially illegal pragmas which appear in
+ 	a protected operation declaration list.
+ 	(P_Task_Items): Parse
+ 	any optional and potentially illegal pragmas which appear in a
+ 	task item list.
+ 
+ 2017-01-23  Pascal Obry  <obry@adacore.com>
+ 
+ 	* s-taprop-mingw.adb (Enter_Task): Initialize the Thread handle which
+ 	is needed when a foreign thread call a Win32 API using a thread handle
+ 	like GetThreadTimes() for example.
+ 
+ 2017-01-23  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_ch13.adb (Analyze_Attribute_Definition_Clause): Do not
+ 	allow an 'Address clause to be specified on a prefix of a
+ 	class-wide type.
+ 
+ 2017-01-23  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* checks.adb (Insert_Valid_Check): Ensure that the prefix of
+ 	attribute 'Valid is a renaming of the original expression when
+ 	the expression denotes a name. For all other kinds of expression,
+ 	use a constant to capture the value.
+ 	* exp_util.adb (Is_Name_Reference): Moved to Sem_Util.
+ 	* sem_util.ads, sem_util.adb (Is_Name_Reference): Moved from Exp_Util.
+ 
+ 2017-01-23  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_eval.adb (Eval_Integer_Literal): Add special
+ 	case to avoid optimizing out check if the literal appears in
+ 	an if-expression.
+ 
+ 2017-01-23  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_ch13.adb (Analyze_Attribute_Definition_Clause): Do not
+ 	allow an 'Address clause to be specified on a prefix of a
+ 	class-wide type.
+ 
+ 2017-01-23  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* checks.adb (Insert_Valid_Check): Ensure that the prefix of
+ 	attribute 'Valid is a renaming of the original expression when
+ 	the expression denotes a name. For all other kinds of expression,
+ 	use a constant to capture the value.
+ 	* exp_util.adb (Is_Name_Reference): Moved to Sem_Util.
+ 	* sem_util.ads, sem_util.adb (Is_Name_Reference): Moved from Exp_Util.
+ 
+ 2017-01-23  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_eval.adb (Eval_Integer_Literal): Add special
+ 	case to avoid optimizing out check if the literal appears in
+ 	an if-expression.
+ 
+ 2017-01-23  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch4.adb (Try_Primitive_Operations,
+ 	Is_Valid_First_Argument_Of): argument is valid if it is a derived
+ 	type with unknown discriminants that matches its underlying
+ 	record view.
+ 	* exp_util.adb (Expand_Subtype_From_Expr): Do not expand
+ 	expression if its type is derived from a limited type with
+ 	unknown discriminants, because the expansion (which is a call)
+ 	must be expanded in the enclosing context to add the proper build-
+ 	in-place parameters to the call.
+ 	* lib.ads, exp_ch9.adb: Minor fixes in comments.
+ 
+ 2017-01-23  Yannick Moy  <moy@adacore.com>
+ 
+ 	* frontend.adb (Frontend): Do not load runtime
+ 	unit for GNATprove when parsing failed.
+ 	* exp_ch9.adb: minor removal of extra whitespace
+ 	* exp_ch6.adb: minor typo in comment
+ 	* sem_util.adb: Code cleanup.
+ 	* exp_ch9.ads, par-ch2.adb: minor style fixes in whitespace and comment
+ 	* a-ngcefu.adb: minor style fix in whitespace
+ 
+ 2017-01-23  Thomas Quinot  <quinot@adacore.com>
+ 
+ 	* scos.ads: Document usage of 'd' as default SCO kind for
+ 	declarations.
+ 	* par_sco.adb (Traverse_Declarations_Or_Statements.
+ 	Traverse_Degenerate_Subprogram): New supporting routine for expression
+ 	functions and null procedures.
+ 	(Traverse_Declarations_Or_Statements.Traverse_One): Add
+ 	N_Expression_Function to the subprogram case; add required
+ 	support for null procedures and expression functions.
+ 
+ 2017-01-23  Bob Duff  <duff@adacore.com>
+ 
+ 	* namet.ads (Bounded_String): Decrease the size of type
+ 	Bounded_String to avoid running out of stack space.
+ 	* namet.ads (Append): Don't ignore buffer overflow; raise
+ 	Program_Error instead.
+ 
+ 2017-01-23  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* exp_ch5.adb, freeze.adb, par-ch4.adb, scng.adb, sem_ch13.adb,
+ 	sem_ch3.adb, sem_ch5.adb, sem_ch5.ads, sem_util.adb, sinfo.ads: Minor
+ 	reformatting.
+ 	* exp_ch9.adb: minor style fix in comment.
+ 
+ 2017-01-23  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch4.adb (Analyze_Allocator): Handle properly a type derived
+ 	for a limited record extension with unknown discriminants whose
+ 	full view has no discriminants.
+ 
+ 2017-01-23  Yannick Moy  <moy@adacore.com>
+ 
+ 	* exp_spark.adb: Alphabetize with clauses.
+ 
+ 2017-01-23  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_util.adb (Has_Enabled_Property): Treat
+ 	protected objects and variables differently from other variables.
+ 
+ 2017-01-23  Thomas Quinot  <quinot@adacore.com>
+ 
+ 	* sem_ch13.adb (Adjust_Record_For_Reverse_Bit_Order):
+ 	Split original Ada 95 part off into new subprogram
+ 	below. Call that subprogram (instead of proceeding with
+ 	AI95-0133 behaviour) if debug switch -gnatd.p is in use.
+ 	(Adjust_Record_For_Reverse_Bit_Order_Ada_95): ... new subprogram
+ 	* debug.adb Document new switch -gnatd.p
+ 	* freeze.adb (Freeze_Entity.Freeze_Record_Type): Do not adjust
+ 	record for reverse bit order if an error has already been posted
+ 	on the record type.  This avoids generating extraneous "info:"
+ 	messages for illegal code.
+ 
+ 2017-01-23  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_ch3.adb (Analyze_Declarations): Correct comments
+ 	* freeze.adb (Find_Constant): Add detection of deferred constants
+ 	so they are not incorrectly flagged as premature.
+ 
+ 2017-01-23  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* scans.ads: New token At_Sign. Remove '@' from list of illegal
+ 	characters for future version of the language. '@' is legal name.
+ 	* scng.ads, scng.adb (Scan):  Handle '@' appropriately.
+ 	* scn.adb (Scan_Reserved_Identifier): An occurrence of '@'
+ 	denotes a Target_Name.
+ 	* par-ch4.adb (P_Name, P_Primary): Handle Target_Name.
+ 	* sinfo.ads, sinfo.adb (N_Target_Name): New non-terminal node.
+ 	(Has_Target_Names): New flag on N_Assignment_Statement, to
+ 	indicate that RHS has occurrences of N_Target_Name.
+ 	* sem.adb: Call Analyze_Target_Name.
+ 	* sem_ch5.ads, sem_ch5.adb (Analyze_Target_Name): New subpogram.
+ 	(urrent_LHS): Global variable that denotes LHS of assignment,
+ 	used in the analysis of Target_Name nodes.
+ 	* sem_res.adb (Resolve_Target_Name): New procedure.
+ 	* exp_ch5.adb (Expand_Assign_With_Target_Names): (AI12-0125):
+ 	N is an assignment statement whose RHS contains occurences of @
+ 	that designate the value of the LHS of the assignment. If the
+ 	LHS is side-effect free the target names can be replaced with
+ 	a copy of the LHS; otherwise the semantics of the assignment
+ 	is described in terms of a procedure with an in-out parameter,
+ 	and expanded as such.
+ 	(Expand_N_Assignment_Statement): Call
+ 	Expand_Assign_With_Target_Names when needed.
+ 	* exp_util.adb (Insert_Actions): Take into account N_Target_Name.
+ 	* sprint.adb: Handle N_Target_Name.
+ 
+ 2017-01-23  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* checks.adb: Minor fix in comment.
+ 
+ 2017-01-23  Philippe Gil  <gil@adacore.com>
+ 
+ 	* g-debpoo.adb (Do_Report) remove freed chunks from chunks
+ 	count in Sort = Memory_Usage or Allocations_Count
+ 
+ 2017-01-23  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_ch3.adb: Code cleanup.
+ 
+ 2017-01-23  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Refined_Depends_In_Decl_Part): Move all global
+ 	variables to the local variable section. Update the profile
+ 	of various nested routine that previously had visibility
+ 	of those globals. One the matching phase has completed,
+ 	remove certain classes of clauses which are considered noise.
+ 	(Check_Dependency_Clause): Properly detect a match between two
+ 	'Result attributes. Update the various post-match cases to use
+ 	Is_Already_Matched as this routine now automatically recognizes
+ 	a previously matched 'Result attribute.
+ 	(Is_Already_Matched): New routine.
+ 	(Remove_Extra_Clauses): New routine.
+ 	(Report_Extra_Clauses): Remove the detection of ... => null
+ 	clauses as this is now done in Remove_Extra_Clauses.
+ 
+ 2017-01-23  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_aggr.adb (Resolve_Array_Aggregate): In ASIS mode do not
+ 	report on spurious overlaps between values involving a subtype
+ 	with a static predicate, because the expansion of such a subtype
+ 	into individual ranges in inhibited in ASIS mode.
+ 
+ 2017-01-23  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_ch3.adb (Analyze_Declarations): Add detection
+ 	of an edge case and delay freezing if it is present.
+ 
+ 2017-01-23  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_ch3.adb, exp_spark.adb, exp_attr.adb, sem_ch9.adb, sem_prag.adb,
+ 	sem_util.adb, sem_warn.adb, exp_ch3.adb: Minor reformatting.
+ 
+ 2017-01-23  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* freeze.adb (Freeze_Subprogram): Ensure that all anonymous
+ 	access-to-subprogram types inherit the convention of the
+ 	associated subprogram.	(Set_Profile_Convention): New routine.
+ 	* sem_ch6.adb (Check_Conformance): Do not compare the conventions
+ 	of the two entities directly, use Conventions_Match to account
+ 	for anonymous access-to-subprogram and subprogram types.
+ 	(Conventions_Match): New routine.
+ 
+ 2017-01-23  Claire Dross  <dross@adacore.com>
+ 
+ 	* exp_spark.adb (Expand_SPARK_Attribute_Reference): For attributes
+ 	which return Universal_Integer, force the overflow check flag for
+ 	Length and Range_Length for types as big as Long_Long_Integer.
+ 
+ 2017-01-23  Claire Dross  <dross@adacore.com>
+ 
+ 	* exp_spark.adb (Expand_SPARK_Attribute_Reference):  For
+ 	attributes which return Universal_Integer, introduce a conversion
+ 	to the expected type with the appropriate check flags set.
+ 	* sem_res.adb (Resolve_Range): The higher bound can be in Typ's
+ 	base type if the range is null. It may still be invalid if it
+ 	is higher than the lower bound. This is checked later in the
+ 	context in which the range appears.
+ 
+ 2017-01-23  Pierre-Marie de Rodat  <derodat@adacore.com>
+ 
+ 	* scos.ads: Introduce a constant to represent ignored
+ 	dependencies in SCO_Unit_Table_Entry.
+ 
+ 2017-01-23  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* exp_ch9.adb (Expand_N_Protected_Type_Declaration): Remove extra
+ 	spaces from error messages.
+ 
+ 2017-01-23  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_ch3.adb (Check_Large_Modular_Array): New procedure,
+ 	subsidiary to Expand_N_Object_ Declaration, to compute a guard on
+ 	an object declaration for an array type with a modular index type
+ 	with the size of Long_Long_Integer. Special processing is needed
+ 	in this case to compute reliably the size of the object, and
+ 	eventually  to raise Storage_Error, when wrap-around arithmetic
+ 	might compute a meangingless size for the object.
+ 
+ 2017-01-23  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* a-wtenau.adb, par-endh.adb, sem_prag.adb,
+ 	sem_type.adb: Code cleanups.
+ 
+ 2017-01-23  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Call): In the part of the code where
+ 	it is deciding whether to turn the call into an indexed
+ 	component, avoid doing so if the call is to an instance of
+ 	Unchecked_Conversion. Otherwise, the compiler turns it into an
+ 	indexed component, and resolution of that turns it back into a
+ 	function call, and so on, resulting in infinite recursion.
+ 	* sem_util.adb (Needs_One_Actual): If the first formal has a
+ 	default, then return False.
+ 
+ 2017-01-21  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_eval.adb (Compile_Time_Compare): Reinstate the expr+literal (etc)
+ 	optimizations when the type is modular and the offsets are equal.
+ 
+ 2017-01-20  Thomas Quinot  <quinot@adacore.com>
+ 
+ 	* sem_warn.adb (Warn_On_Useless_Assignment): Adjust wording of warning
+ 	message.
+ 
+ 2017-01-20  Nicolas Roche  <roche@adacore.com>
+ 
+ 	* terminals.c: Ignore failures on setpgid and tcsetpgrp commands.
+ 
+ 2017-01-20  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_eval.adb (Compile_Time_Compare): Disable the expr+literal
+ 	(etc) optimizations when the type is modular.
+ 
+ 2017-01-20  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_ch6.adb (Move_Pragmas): move some pragmas,
+ 	but copy the SPARK_Mode pragma instead of moving it.
+ 	(Build_Subprogram_Declaration): Ensure that the generated spec
+ 	and original body share the same SPARK_Pragma aspect/pragma.
+ 	* sem_util.adb, sem_util.ads (Copy_SPARK_Mode_Aspect): New
+ 	procedure to copy SPARK_Mode aspect.
+ 
+ 2017-01-20  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_ch3.adb (Analyze_Declarations): Disable Resolve_Aspects
+ 	even in ASIS mode.
+ 	* sem_ch13.adb (Resolve_Name): Enable setting the entity to
+ 	Empty even in ASIS mode.
+ 
+ 2017-01-20  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* exp_ch9.adb: minor style fixes in comments.
+ 	* sem_ch9.adb (Analyze_Delay_Relative): in GNATprove mode a delay
+ 	relative statement introduces an implicit dependency on
+ 	Ada.Real_Time.Clock_Time.
+ 	* sem_util.adb: Minor reformatting.
+ 
+ 2017-01-20  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch13.adb (Analyze_Aspect_Specifications): Aspect Alignment
+ 	must be treated as delayed aspect even if the expression is
+ 	a literal, because the aspect affects the freezing and the
+ 	elaboration of the object to which it applies.
+ 
+ 2017-01-20  Tristan Gingold  <gingold@adacore.com>
+ 
+ 	* s-osinte-vxworks.ads (Interrup_Range): New subtype.
+ 
+ 2017-01-20  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* lib-xref.adb (Generate_Reference): Do not warn about the
+ 	presence of a pragma Unreferenced if the entity appears as the
+ 	actual in a procedure call that does not come from source.
+ 
+ 2017-01-20  Pascal Obry  <obry@adacore.com>
+ 
+ 	* expect.c, terminals.c: Fix some warnings about unused variables.
+ 	* gsocket.h, adaint.c, adaint.h: Fix some more warnings in the C part
+ 	of the runtime.
+ 
+ 2017-01-20  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_attr.adb (Constrained): Apply an access check (check that
+ 	the prefix is not null) when the prefix denotes an object of an
+ 	access type; that is, when there is an implicit dereference.
+ 
+ 2017-01-20  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* s-rident.ads (constant Profile_Info): Remove
+ 	No_Calendar from GNAT_Extended_Ravenscar restrictions.
+ 
+ 2017-01-20  Tristan Gingold  <gingold@adacore.com>
+ 
+ 	*  s-maccod.ads: Add pragma No_Elaboration_Code_All
+ 
+ 2017-01-20  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* ghost.adb (Mark_Ghost_Clause): New routine.
+ 	(Prune_Node): Do not prune compilation unit nodes.
+ 	(Remove_Ignored_Ghost_Code): Prune the compilation unit node directly.
+ 	This does not touch the node itself, but does prune all its fields.
+ 	* ghost.ads (Mark_Ghost_Clause): New routine.
+ 	* sem_ch8.adb (Analyze_Use_Package): Emit an error when a use
+ 	package clause mentions Ghost and non-Ghost packages. Mark a
+ 	use package clause as Ghost when it mentions a Ghost package.
+ 	(Analyze_Use_Type): Emit an error when a use type clause mentions
+ 	Ghost and non-Ghost types. Mark a use type clause as Ghost when
+ 	it mentions a Ghost type.
+ 	* sem_ch10.adb (Analyze_With_Clause): Mark a with clause as
+ 	Ghost when it withs a Ghost unit.
+ 
+ 2017-01-20  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Call): If a function call
+ 	returns a limited view of a type and at the point of the call the
+ 	function is not declared in the extended main unit then replace
+ 	it with the non-limited view, which must be available. If the
+ 	called function is in the extended main unit then no action is
+ 	needed since the back-end handles this case.
+ 
+ 2017-01-20  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch7.adb (Contains_Subp_Or_Const_Refs): Rename into...
+ 	(Contains_Subprograms_Refs): ...this.  Adjust comment
+ 	for constants.	(Is_Subp_Or_Const_Ref): Rename into...
+ 	(Is_Subprogram_Ref): ...this.
+ 	(Has_Referencer): Rename Has_Non_Subp_Const_Referencer variable into
+ 	Has_Non_Subprograms_Referencer and adjust comment.  Remove
+ 	incorrect shortcut for package declarations and bodies.
+ 
+ 2017-01-20  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch3.adb (Complete_Private_Subtype): If the scope of the
+ 	base type differs from that of the completion and the private
+ 	subtype is an itype (created for a constraint on an access
+ 	type e.g.), set Delayed_Freeze on both to prevent out-of-scope
+ 	anomalies in gigi.
+ 
+ 2017-01-20  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_ch6.adb (Analyze_Subprogram_Body_Helper):
+ 	When inheriting the SPARK_Mode of a prior expression function,
+ 	look at the properly resolved entity rather than the initial
+ 	candidate which may denote a homonym.
+ 
+ 2017-01-20  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_prag.adb (Rewrite_Assertion_Kind): If the name is
+ 	Precondition or Postcondition, and the context is pragma
+ 	Check_Policy, indicate that this Pre-Ada2012 usage is deprecated
+ 	and suggest the standard names Assertion_Policy /Pre /Post
+ 	instead.
+ 
+ 2017-01-20  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_ch10.adb, sem_cat.adb: Minor reformatting.
+ 
+ 2017-01-20  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_ch3.adb (Access_Type_Declaration): Protect access to the
+ 	Entity attribute.
+ 	* sem_ch10.adb (Install_Siblings): Skip processing malformed trees.
+ 	* sem_cat.adb (Validate_Categoriztion_Dependency): Skip processing
+ 	malformed trees.
+ 
+ 2017-01-20  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch13.adb (Analyze_Aspect_Specification, case
+ 	Dynamic_Predicate): If the entity E is a subtype that inherits
+ 	a static predicate for its parent P,, the inherited and the
+ 	new predicate combine in the generated predicate function,
+ 	and E only has a dynamic predicate.
+ 
+ 2017-01-20  Tristan Gingold  <gingold@adacore.com>
+ 
+ 	* s-boustr.ads, s-boustr.adb: New package.
+ 	* Makefile.rtl: Add s-boustr.
+ 
+ 2017-01-20  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* inline.adb (Process_Formals): Qualify the
+ 	expression of a return statement when it yields a universal type.
+ 
+ 2017-01-20  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* freeze.adb (Freeze_All): Freeze the default
+ 	expressions of all eligible formal parameters that appear in
+ 	entries, entry families, and protected subprograms.
+ 
+ 2017-01-20  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch3.adb (Check_Nonoverridable_Aspects); Refine check
+ 	for illegal inherited Implicit_Dereference aspects with renamed
+ 	discriminants.
+ 
+ 2017-01-20  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* debug.adb (switch d.6): do not avoid declaring unreferenced itypes.
+ 	* nlists.ads (Lock_Lists, Unlock_Lists): New subprograms.
+ 	* nlists.adb (Lock_Lists, Unlock_Lists): New subprograms.
+ 	(Set_First, Set_Last, Set_List_Link, Set_Next, Set_Parent,
+ 	Set_Prev, Tree_Read): Adding assertion.
+ 	* atree.ads (Lock_Nodes, Unlock_Nodes): New subprograms.
+ 	* atree.adb (Lock_Nodes, Unlock_Nodes): New subprograms.
+ 	(Set_Analyzed, Set_Check_Actuals, Set_Comes_From_Source,
+ 	Set_Ekind, Set_Error_Posted, Set_Has_Aspects,
+ 	Set_Is_Ignored_Ghost_Node, Set_Original_Node, Set_Paren_Count,
+ 	Set_Parent, Set_Sloc, Set_Nkind, Set_FieldNN, Set_NodeNN,
+ 	Set_ListNN, Set_ElistNN, Set_NameN, Set_StrN, Set_UintNN,
+ 	Set_UrealNN, Set_FlagNNN, Set_NodeN_With_Parent,
+ 	Set_ListN_With_Parent): Adding assertion.
+ 
+ 2017-01-20  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_prag.adb (Process_Convention): Diagnose properly a pragma
+ 	import that applies to several homograph subprograms. when one
+ 	of them is declared by a subprogram body.
+ 
+ 2017-01-20  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* exp_ch6.adb (Expand_Call): Remove optimization
+ 	that nulls out calls to null procedures.
+ 
+ 2017-01-20  Yannick Moy  <moy@adacore.com>
+ 
+ 	* inline.adb (Expand_Inlined_Call): Keep more
+ 	precise type of actual for inlining whenever possible. In
+ 	particular, do not switch to the formal type in GNATprove mode in
+ 	some case where the GNAT backend might require it for visibility.
+ 
+ 2017-01-20  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch3.adb (Check_Non_Overridable_Aspects): An inherited
+ 	aspect Implicit_Dereference can be inherited by a full view if
+ 	the partial view has no discriminants, because there is no way
+ 	to apply the aspect to the partial view.
+ 	(Build_Derived_Record_Type): If derived type renames discriminants
+ 	of the parent, the new discriminant inherits the aspect from
+ 	the old one.
+ 	* sem_ch4.adb (Analyze_Call): Handle properly a parameterless
+ 	call through an access discriminant designating a subprogram.
+ 	* sem_ch5.adb (Analyze_Assignment): (Analyze_Call): Handle
+ 	properly a parameterless call through an access discriminant on
+ 	the left-hand side of an assignment.
+ 	* sem_res.adb (resolve): If an interpreation involves a
+ 	discriminant with an implicit dereference and the expression is an
+ 	entity, resolution takes place later in the appropriate routine.
+ 	* sem_ch13.adb (Analyze_Aspect_Implicit_Dereference): Recognize
+ 	access discriminants that designate a subprogram type.
+ 
+ 2017-01-20  Pascal Obry  <obry@adacore.com>
+ 
+ 	* a-locale.adb, a-locale.ads: Update Ada.Locales for RM 2012 COR:1:2016
+ 
+ 2017-01-20  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_ch10.adb (Check_No_Elab_Code_All): Do not issue an error
+ 	on implicitly with'ed units in GNATprove mode.
+ 	* sinfo.ads (Implicit_With): Document use of flag for implicitly
+ 	with'ed units in GNATprove mode.
+ 
+ 2017-01-20  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_cat.adb (Validate_Static_Object_Name): In a preelaborated
+ 	unit Do not report an error on a non-static entity that appears
+ 	in the context of a spec expression, such as an aspect expression.
+ 
+ 2017-01-20  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* einfo.adb: Flag298 now denotes Is_Underlying_Full_View.
+ 	(Is_Underlying_Full_View): New routine.
+ 	(Set_Is_Underlying_Full_View): New routine.
+ 	(Write_Entity_Flags): Add an entry for Is_Underlying_Full_View.
+ 	* einfo.ads Add new attribute Is_Underlying_Full_View.
+ 	(Is_Underlying_Full_View): New routine along with pragma Inline.
+ 	(Set_Is_Underlying_Full_View): New routine along with pragma Inline.
+ 	* exp_util.adb (Build_DIC_Procedure_Body): Do not consider
+ 	class-wide types and underlying full views. The first subtype
+ 	is used as the working type for all Itypes, not just array base types.
+ 	(Build_DIC_Procedure_Declaration): Do not consider
+ 	class-wide types and underlying full views. The first subtype
+ 	is used as the working type for all Itypes, not just array
+ 	base types.
+ 	* freeze.adb (Freeze_Entity): Inherit the freeze node of a full
+ 	view or an underlying full view without clobbering the attributes
+ 	of a previous freeze node.
+ 	(Inherit_Freeze_Node): New routine.
+ 	* sem_ch3.adb (Build_Derived_Private_Type): Mark an underlying
+ 	full view as such.
+ 	(Build_Underlying_Full_View): Mark an underlying full view as such.
+ 	* sem_ch7.adb (Install_Private_Declarations): Mark an underlying
+ 	full view as such.
+ 
+ 2017-01-20  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sinfo.ads: Document lack of Do_Division_Check flag
+ 	on float exponentiation.
+ 
+ 2017-01-19  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* ghost.adb (Propagate_Ignored_Ghost_Code): Protect access to the
+ 	identifier attribute of a block-statement node. Required to avoid
+ 	assertion failure when building the new containers library.
+ 
+ 2017-01-19  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_ch3.adb: Update comment.
+ 
+ 2017-01-19  Vincent Celier  <celier@adacore.com>
+ 
+ 	* gprep.adb (Gnatprep): Parse the definition file without
+ 	"replace in comments" even when switch -C is used.
+ 
+ 2017-01-19  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* exp_ch9.adb (Is_Pure_Barrier): Create function
+ 	Is_Count_Attribute to identify an expansion of the 'Count
+ 	attribute.
+ 
+ 2017-01-19  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch5.adb (Analyze_Loop_Statement): In GNATprove mode the
+ 	statements within an element iterator loop are only analyzed
+ 	agter the loop is rewritten. Within a generic the analysis must
+ 	be performed in any case to complete name capture.
+ 
+ 2017-01-19  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Pragma): Check for ignored pragmas first,
+ 	before checking for unrecognized pragmas.
+ 	Initialize Pname on its declarations; that's always good style.
+ 
+ 2017-01-19  Claire Dross  <dross@adacore.com>
+ 
+ 	* exp_ch7.adb (Build_Invariant_Procedure_Body): Semi-insert the
+ 	body into the tree for GNATprove by setting its Parent field. The
+ 	components invariants of composite types are not checked by
+ 	the composite type's invariant procedure in GNATprove mode.
+ 	(Build_Invariant_Procedure_Declaration): Semi-insert the
+ 	declaration into the tree for GNATprove by setting its Parent
+ 	field.
+ 	* freeze.adb (Freeze_Arry_Type):In GNATprove mode, do not add
+ 	the component invariants to the array type  invariant procedure
+ 	so that the procedure can be used to  check the array type
+ 	invariants if any.
+ 	(Freeze_Record_Type): In GNATprove mode, do
+ 	not add the component invariants to the record type  invariant
+ 	procedure so that the procedure can be used to	check the record
+ 	type invariants if any.
+ 
+ 2017-01-19  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* lib-xref-spark_specific.adb: Minor reformatting.
+ 	* exp_ch7.adb (Add_Parent_Invariants): Do not process array types.
+ 
+ 2017-01-19  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_aggr.adb (Pass_Aggregate_To_Back_End): Renamed as
+ 	Build_Back_End_Aggregate.
+ 	(Generate_Aggregate_For_Derived_Type): Code cleanup.
+ 	(Prepend_Stored_Values): Code cleanup.
+ 
+ 2017-01-19  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch6.adb (Analyze_Expression_Function): Check for an
+ 	incomplete return type after attempting to freeze it, so that
+ 	other freeze actiona are generated in the proper order.
+ 
+ 2017-01-19  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_aggr.adb (Resolve_Aggregate): If the type is a string
+ 	type, ie. a type whose component is a character type, and the
+ 	aggregate is positional, do not convert into a string literal
+ 	if the index type is not an integer type, because the original
+ 	type may be required in an enclosing operation.
+ 
+ 2017-01-19  Bob Duff  <duff@adacore.com>
+ 
+ 	* binde.adb, debug.adb: Enable new elaboration order algorithm
+ 	by default. -dp switch reverts to the old algorithm.
+ 
+ 2017-01-19  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_ch3.adb Add with and use clauses for Exp_Ch7.
+ 	(Analyze_Declarations): Create the DIC and Invariant
+ 	procedure bodies s after all freezing has taken place.
+ 	(Build_Assertion_Bodies): New routine.
+ 	* sem_ch7.adb Remove the with and use clauses for Exp_Ch7
+ 	and Exp_Util.
+ 	(Analyze_Package_Specification): Remove the
+ 	generation of the DIC and Invariant procedure bodies. This is
+ 	now done by Analyze_Declarations.
+ 	* sem_disp.adb (Check_Dispatching_Operation): DIC and Invariant
+ 	procedures are never treated as primitives.
+ 
+ 2017-01-19  Yannick Moy  <moy@adacore.com>
+ 
+ 	* frontend.adb: Analyze inlined bodies and check elaboration
+ 	rules in GNATprove mode too.
+ 	* sem_elab.adb (Delay_Element): Add Boolean component to save
+ 	indication that call is in SPARK code.	(Check_Elab_Calls):
+ 	Check elaboration rules in GNATprove mode, and correctly set
+ 	the current value of SPARK_Mode.
+ 	* lib-xref-spark_specific.adb
+ 	(Add_SPARK_Xrefs): Simplify iteration over dereferences.
+ 
+ 2017-01-19  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_ch4.adb (Expand_Concatenate): Do no enable overflow
+ 	checks on the expression for the high bound of concatenation
+ 	when checks are disabled, to suppress warnings about potential
+ 	constraint errors in restricted runtimes.
+ 
+ 2017-01-19  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* exp_ch3.adb (Expand_Freeze_Enumeration_Type): Mark the
+ 	representation-to-position function as inlined.
+ 	* sem_cat.adb (Set_Categorization_From_Scope): Do not modify
+ 	the purity of an internally generated entity if it has been
+ 	explicitly marked as pure for optimization purposes.
+ 	* exp_aggr.adb: Minor reformatting.
+ 
+ 2017-01-19  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_ch6.adb (Expand_Call): Remove side effects on
+ 	actuals that are allocators with qualified expression since the
+ 	initialization of the object is performed by means of individual
+ 	statements (and hence it must be done before the call).
+ 
+ 2017-01-19  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch3.adb (Analyze_Declarations): Minor reformatting.
+ 	(Build_Derived_Enumeration_Type): If the derived type inherits a
+ 	dynamic predicate from its parent, the bounds of the type must
+ 	freeze because an explicit constraint is constructed for the
+ 	type and the corresponding range is elaborated now.
+ 
+ 2017-01-19  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_attr.ads: minor fix of inconsistent casing in comment
+ 	* lib-writ.ads: minor align comments in columns
+ 	* sem_ch3.adb: Minor reformatting.
+ 	* spark_xrefs.ads: minor fix typo in SPARK-related comment
+ 	* table.ads: minor style fix in comment
+ 	* lib-xref-spark_specific.adb
+ 	(Add_SPARK_Xrefs): simplify processing of SPARK cross-references.
+ 	* sem_ch12.adb: minor whitespace fix
+ 	* freeze.adb: Add comment.
+ 	* sem_util.adb (Unique_Name): for instances of
+ 	generic subprograms ignore the name of the wrapper package.
+ 
+ 2017-01-19  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_aggr.adb (Resolve_Record_Aggregate):
+ 	Factorize code needed for aggregates of limited and unlimited
+ 	types in a new routine.
+ 	(Pass_Aggregate_To_Back_End): New subprogram.
+ 
+ 2017-01-19  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sinfo.adb (Pragma_Name): Only access up to Last_Pair of Pragma_Map.
+ 
+ 2017-01-19  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch4.ads, sem_ch4.adb (Try_Object_Operation): Make subprogram
+ 	public, for use elsewhere.
+ 	* sem_ch6.adb (Analyze_Procedure_Call): In SPARK_Mode and within
+ 	an Inlined_body, recognize a call that uses object notation
+ 	and has not been rewritten as a regular call because regular
+ 	expansion has not taken place.
+ 
+ 2017-01-19  Bob Duff  <duff@adacore.com>
+ 
+ 	* checks.adb (Apply_Type_Conversion_Checks): Disable small optimization
+ 	in case of generic formal discrete types, because it causes crashes in
+ 	the compiler when built with assertions on.
+ 
+ 2017-01-19  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* lib-xref-spark_specific.adb, sem_util.adb, sem_util.ads,
+ 	sem_ch4.adb, sem_ch8.adb, lib-xref.ads: Minor reformatting.
+ 
+ 2017-01-19  Bob Duff  <duff@adacore.com>
+ 
+ 	* bcheck.adb (Check_Consistent_Dynamic_Elaboration_Checking):
+ 	Increment Warnings_Detected.  It was decrementing, which is
+ 	wrong since we just issued a warning message.
+ 	* binderr.ads (Errors_Detected, Warnings_Detected): Declare
+ 	these variables to be of subtype Nat instead of Int, because
+ 	they should never be negative.
+ 
+ 2017-01-19  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* contracts.adb (Build_Postconditions_Procedure): Replace
+ 	Generate_C_Code by Modify_Tree_For_C.
+ 	* exp_aggr.adb (Build_Record_Aggr_Code, Expand_Array_Aggregate):
+ 	Replace Generate_C_Code by Modify_Tree_For_C.
+ 	* exp_attr.adb (Float_Valid, Is_GCC_Target): Replace Generate_C_Code by
+ 	Modify_Tree_For_C.
+ 	* exp_ch11.adb (Expand_N_Exception_Declaration): Replace
+ 	Generate_C_Code by Modify_Tree_For_C.
+ 	* exp_ch4.adb (Expand_Allocator_Expression): Replace
+ 	Generate_C_Code by Modify_Tree_For_C.
+ 	* exp_dbug.adb (Qualify_Entity_Name): Replace Generate_C_Code
+ 	by Modify_Tree_For_C.
+ 	* exp_util.adb (Remove_Side_Effects, Side_Effect_Free): Replace
+ 	Generate_C_Code by Modify_Tree_For_C.
+ 	* sem_res.adb (Resolve_Type_Conversion): Replace Generate_C_Code
+ 	by Modify_Tree_For_C.
+ 	* sinfo.ads (Modify_Tree_For_C): Adding documentation.
+ 
+ 2017-01-19  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_util.ads, sem_util.adb (Expression_Of_Expression_Function): New
+ 	subprogram.
+ 	(Is_Inlinable_Expression_Function): New subprogram.
+ 	* exp_ch6.ads, exp_ch6.adb (Expression_Of_Expression_Function): Moved
+ 	to Sem_Util.
+ 	(Is_Inlinable_Expression_Function): Moved to Sem_Util.
+ 
+ 2017-01-19  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch4.adb (Diagnose_Call): Improve error message when a
+ 	selected component has a prefix that might be interpreted
+ 	as a parameterless function call, but none of the candidate
+ 	interpretations is parameterless, and there is a hidden homonym
+ 	of the prefix that is a package.
+ 	* sem_ch8.adb (Find_Selected_Component): If the prefix might be
+ 	interpreted as a parameterless function call and its analysis
+ 	fails, do not call Analyze_Selected_Component.
+ 
+ 2017-01-19  Steve Baird  <baird@adacore.com>
+ 
+ 	* sem_util.ads: Add new Use_Full_View Boolean parameter to
+ 	Get_Index_Bounds.
+ 	* sem_util.adb (Get_Index_Bounds): replace calls to Scalar_Range with
+ 	calls to a newly-defined Scalar_Range_Of_Right_View function.
+ 
+ 2017-01-19  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* gnat1drv.adb: minor fix of unbalanced parens in comment
+ 	* lib-xref.ads (Traverse_Compilation_Unit): declaration moved
+ 	to visible part of the package to allow re-use in GNATprove.
+ 	* lib-xref-spark_specific.adb (Traverse_Stub): routine refactored
+ 	from repeated code of Traverse_Compilation_Unit.
+ 	(Traverse_Declaration_Or_Statement): fixed detection of
+ 	generic subprograms and packages; also, iteration over case
+ 	statement alternatives rewritten to avoid testing if the first
+ 	alternative is present (since it must be present due to Ada
+ 	syntax restrictions).
+ 
+ 2017-01-19  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* exp_ch6.adb (Expand_N_Subprogram_Body): Mark the spec as
+ 	returning by reference not just for subprogram body stubs,
+ 	but for all subprogram cases.
+ 	* sem_util.adb: Code reformatting.
+ 	(Requires_Transient_Scope): Update the call to Results_Differ.
+ 	(Results_Differ): Update the parameter profile and the associated
+ 	comment on usage.
+ 
+ 2017-01-19  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_dim.adb (Analyze_Dimension): Analyze object declaration and
+ 	identifier nodes that do not come from source, to handle properly
+ 	dimensionality check within an inlined body which inclddes both
+ 	original operands and rewritten operands. This removes spurious
+ 	dimensionality errors in the presence of front-end inlining,
+ 	as well as in SPARK mode.
+ 
+ 2017-01-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR driver/49726
+ 	* gcc-interface/lang.opt (gant, gnatO, gnat): Add Driver flag.
+ 
+ 2017-01-13  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	* gcc-interface/Makefile.in (SPARC/Solaris): Fix typo.
+ 
+ 2017-01-13  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* doc/gnat_ugn/getting_started_with_gnat.rst,
+ 	doc/gnat_ugn/inline_assembler.rst,
+ 	doc/gnat_ugn/building_executable_programs_with_gnat.rst,
+ 	doc/gnat_ugn/elaboration_order_handling_in_gnat.rst,
+ 	doc/gnat_ugn/about_this_guide.rst,
+ 	doc/gnat_ugn/platform_specific_information.rst,
+ 	doc/gnat_ugn/example_of_binder_output.rst,
+ 	doc/gnat_ugn/gnat_and_program_execution.rst,
+ 	doc/gnat_ugn/gnat_utility_programs.rst,
+ 	doc/gnat_ugn/the_gnat_compilation_model.rst,
+ 	doc/gnat_rm/implementation_defined_attributes.rst,
+ 	doc/gnat_rm/compatibility_and_porting_guide.rst,
+ 	doc/gnat_rm/standard_library_routines.rst,
+ 	doc/gnat_rm/standard_and_implementation_defined_restrictions.rst,
+ 	doc/gnat_rm/implementation_defined_pragmas.rst,
+ 	doc/gnat_rm/the_gnat_library.rst,
+ 	doc/gnat_rm/obsolescent_features.rst,
+ 	doc/gnat_rm/about_this_guide.rst,
+ 	doc/gnat_rm/the_implementation_of_standard_i_o.rst,
+ 	doc/gnat_rm/implementation_of_ada_2012_features.rst,
+ 	doc/gnat_rm/interfacing_to_other_languages.rst,
+ 	doc/gnat_rm/implementation_defined_aspects.rst,
+ 	doc/gnat_rm.rst: Update documentation.
+ 	* gnat_rm.texi, gnat_ugn.texi: Regenerated.
+ 
+ 2017-01-13  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* einfo.ads: minor grammar fixes in comment of Normalized_Position_Max.
+ 	* scil_ll.adb: Minor style fix in comment.
+ 	* sem_ch8.adb (Analyze_Expanded_Name): Perform dimension analysis
+ 	even if entity is already set, because the node may be renalyzed
+ 	after inlining transformations.
+ 
+ 2017-01-13  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Call): Do not establish a transient scope
+ 	for a call to inlinable expression function (since the call will
+ 	be replaced by its returned object).
+ 	* exp_ch6.ads (Is_Inlinable_Expression_Function): New subprogram.
+ 	* exp_ch6.adb (Expression_Of_Expression_Function): New subprogram.
+ 	(Expand_Call): For inlinable expression function call replace the
+ 	call by its returned object.
+ 	(Is_Inlinable_Expression_Function): New subprogram.
+ 
+ 2017-01-13  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* checks.adb: Minor typo fix and reformatting.
+ 
+ 2017-01-13  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* contracts.adb (Contract_Only_Subprograms): Remove formal.
+ 	(Copy_Original_Specification): Removed.
+ 	(Skip_Contract_Only_Subprogram): Move here checks previously
+ 	located in the caller of this routine (to leave the code more clean).
+ 	(Build_Contract_Only_Subprogram): Code cleanup.
+ 	* scil_ll.ads, scil_ll.adb (Get_Contract_Only_Body_Name): Removed.
+ 	(Get_Contract_Only_Missing_Body_Name): Removed.
+ 
+ 2017-01-13  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_ch6.adb (Cloned_Expression): New subprogram.
+ 	(Freeze_Expr_Types): Complete previous patch since the expression
+ 	of an expression-function may have iterators and loops with
+ 	defining identifiers which, as part of the preanalysis of the
+ 	expression, may be left decorated with itypes that will not be
+ 	available in the tree passed to the backend.
+ 
+ 2017-01-13  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* checks.adb (Apply_Type_Conversion_Checks): Optimize a type
+ 	conversion to Integer of an expression that is an attribute
+ 	reference 'Pos on an enumeration type.
+ 
+ 2017-01-13  Bob Duff  <duff@adacore.com>
+ 
+ 	* atree.ads: Minor comment fix.
+ 
+ 2017-01-13  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_ch6.adb (Check_Aggregate_Accessibility): Ignore function
+ 	calls in accessibility check on return statement.
+ 
+ 2017-01-13  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_ch6.adb (Analyze_Subprogram_Body_Helper):
+ 	Ensure that the input body is a subprogram body before trying to
+ 	determine whether it denoted an expression function.  Note that
+ 	subprogram body stubs cannot denote expression functions.
+ 
+ 2017-01-13  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* bindgen.adb, sem_ch6.adb, binde.adb, exp_ch3.adb: Minor reformatting
+ 	and typo fixes.
+ 
+ 2017-01-13  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* einfo.ads (Component_Bit_Offset): Fix documentation.
+ 	* sem_ch13.adb (Check_Record_Representation_Clause): Skip check
+ 	on record holes for components with unknown compile-time offsets.
+ 
+ 2017-01-13  Bob Duff  <duff@adacore.com>
+ 
+ 	* ali.ads, ali.adb (Static_Elaboration_Model_Used): Remove unused flag.
+ 	* g-locfil.ads: Minor comment fix.
+ 
+ 2017-01-13  Bob Duff  <duff@adacore.com>
+ 
+ 	* binde.adb (Elab_New): New elaboration order algorithm
+ 	that is expected to cause fewer ABE issues. This is a work in
+ 	progress. The new algorithm is currently disabled, and can be
+ 	enable by the -dp switch, or by modifying the Do_Old and Do_New
+ 	etc. flags and rebuilding. Experimental code is included to
+ 	compare the results of the old and new algorithms.
+ 	* binde.ads: Use GNAT.Dynamic_Tables instead of Table, so we
+ 	can have multiple of these tables, so the old and new algorithms
+ 	can coexist.
+ 	* bindgen.ads (Gen_Output_File): Pass Elab_Order as an 'in'
+ 	parameter of type array. This avoids the global variable, and
+ 	allows bounds checking (which is normally defeated by the tables
+ 	packages). It also ensures that the Elab_Order is read-only
+ 	to Bindgen.
+ 	* bindgen.adb: Pass Elab_Order as an 'in' parameter to all
+ 	subprograms that need it, as above.
+ 	* debug.adb: Document new -dp switch. Modify doc of old -do
+ 	switch.
+ 	* gnatbind.adb (Gnatbind): Make use of new interfaces to Binde
+ 	and Bindgen.  Move writing of closure (-R and -Ra switches)
+ 	to Binde; that's more convenient.
+ 
+ 2017-01-13  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch6.adb (Analyze_Expression_Function): If the expression
+ 	function is a completion, all entities referenced in the
+ 	expression are frozen. As a consequence, a reference to an
+ 	uncompleted private type from an enclosing scope is illegal.
+ 
+ 2017-01-13  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_ch6.adb (Freeze_Expr_Types): New subprogram.
+ 	(Analyze_Subprogram_Body_Helper): At the occurrence of an
+ 	expression function declaration that is a completion, its
+ 	expression causes freezing (AI12-0103).
+ 
+ 2017-01-13  Vadim Godunko  <godunko@adacore.com>
+ 
+ 	* a-coinho-shared.adb: Fix memory leaks in Constant_Reference and
+ 	Reference functions of Ada.Containers.Indefinite_Holders.
+ 
+ 2017-01-13  Bob Duff  <duff@adacore.com>
+ 
+ 	* s-os_lib.ads: Minor comment fixes.
+ 
+ 2017-01-13  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* exp_ch3.adb (Default_Initialize_Object): Do not default
+ 	initialize an object when it is of a task type and restriction
+ 	No_Tasking is in effect because the initialization is obsolete.
+ 	* exp_ch9.adb (Build_Master_Entity): Do not generate a master when
+ 	restriction No_Tasking is in effect.
+ 	(Build_Master_Renaming): Do not rename a master when restriction
+ 	No_Tasking is in effect.
+ 
+ 2017-01-13  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_aggr.adb (Resolve_Array_Aggregate): The code that verifies
+ 	the legality of An others clause applies as well to a choice in
+ 	an Iterated_component_ association.
+ 	(Resolve_Iterated_Component_Association): An others choice
+ 	is legal.
+ 	* exp_aggr.adb (Aggr_Assignment_OK_For_Backend): An
+ 	Iterated_Component_Association is not static.
+ 
+ 2017-01-13  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* exp_ch3.adb (Freeze_Type): Mark the Ghost mode as set in case
+ 	control is passed to the expresion handler before the new mode
+ 	is set.
+ 	* sem_ch12.adb (Analyze_Package_Instantiation,
+ 	Analyze_Subprogram_Instantiation): Mark the Ghost mode as set
+ 	in case control is passed to the expresion handler before the
+ 	new mode is set.
+ 
+ 2017-01-13  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_aggr.adb, sem_ch3.adb, inline.adb, sem_util.adb, exp_ch4.adb,
+ 	exp_aggr.adb: Minor reformatting.
+ 
+ 2017-01-13  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* inline.adb: Minor reformatting and typo fix.
+ 
+ 2017-01-13  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_util.ads, sem_util.adb (Choice_List): Move function here
+ 	from sem_aggr.adb, for use elsewhere.
+ 	* sem_ch3.adb (Analyze_Object_Declaration): Use Choice_List.
+ 	* sem_aggr.adb (Resolve_Array_Aggregate): Remove
+ 	Iterated_Component_Present.
+ 	* exp_aggr.adb: Use Choice_List throughout, to handle
+ 	Iterated_Component_Associations.
+ 	(Gen_Loop): Generate proper loop for an
+ 	Iterated_Component_Association: loop variable has the identifier
+ 	of the original association. Generate a loop even for a single
+ 	component choice, in order to make loop parameter visible in
+ 	expression.
+ 	(Flatten): An Iterated_Component_Association is not static.
+ 
+ 2017-01-13  Yannick Moy  <moy@adacore.com>
+ 
+ 	* exp_ch4.adb (Expand_N_Op_Expon): Ensure that the value of
+ 	float exponentiation for statically known small negative values
+ 	is the reciprocal of the exponentiation for the opposite value
+ 	of the exponent.
+ 	* s-exnllf.adb (Exn_Float, Exn_Long_Float, Exn_Long_Long_Float):
+ 	Ensure that the value of float exponentiation for negative values
+ 	is the reciprocal of the exponentiation for the opposite value
+ 	of the exponent.
+ 	* inline.adb (Expand_Inlined_Call): Fix the count
+ 	for the number of generated gotos.
+ 
+ 2017-01-13  Yannick Moy  <moy@adacore.com>
+ 
+ 	* inline.adb: Code cleanup.
+ 	* sem_util.adb (Is_OK_Volatile_Context): Add
+ 	expression in delay statement as OK for volatile context.
+ 
+ 2017-01-13  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_aggr.adb (Resolve_Array_Aggregate): In normal compilation
+ 	mode a choice that is a subtype with a static predicate is
+ 	replaced by the values it covers. This transformation must not
+ 	be performed in ASIS mode, to preserve the source for analysis.
+ 
+ 2017-01-13  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* nlists.ads: Correct minor typo.
+ 
+ 2017-01-13  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* sem_ch13.adb: Minor reformatting and typo fix.
+ 
+ 2017-01-13  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* par-ch4.adb (P_Aggregate_Or_Parent_Expr): An
+ 	Iterated_Component_Association is a named association in an
+ 	array aggregate.
+ 	* sem_aggr.adb (Resolve_Iterated_Component_Association): New
+ 	procedure, subsidiary of Resolve_Array_Aggregate, to analyze
+ 	and resolve the discrete choices and the expression of the
+ 	new construct.
+ 	* sinfo.adb, sinfo.ads: In analogy with N_Component_Association,
+ 	Loop_Actions and Box_Present are attributes of
+ 	N_Iterated_Component_Association nodes. Box_Present is always
+ 	False in this case.
+ 	* sprint.adb (Sprint_Node): An Iterated_Component_Association
+ 	has a Discrete_Choices list, as specified in the RM. A
+ 	Component_Association for aggregate uses instead a Choices list.
+ 	We have to live with this small inconsistency because the new
+ 	construct also has a defining identifier, and there is no way
+ 	to merge the two node structures.
+ 
+ 2017-01-13  Yannick Moy  <moy@adacore.com>
+ 
+ 	* inline.adb (Remove_Aspects_And_Pragmas): Add Unused to the
+ 	list of pragmas to remove.  Remove pragmas from the list of
+ 	statements in the body to inline.
+ 	* namet.adb, namet.ads (Nam_In): New version with 12 parameters.
+ 
+ 2017-01-13  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch3.adb (Resolve_Aspects): New procedure, subsidiary of
+ 	Analyze_Declarations, to analyze and resolve the expressions of
+ 	aspect specifications in the current declarative list, so that
+ 	the expressions have proper entity and type info.  This is needed
+ 	for ASIS when there is no subsequent expansion to generate this
+ 	semantic information.
+ 	* sem_ch13.adb (Check_Aspect_At_End_Of_Declarations): Use Etype of
+ 	original expression, to suppress cascaded errors when expression
+ 	has been constant-folded.
+ 	(Resolve_Aspect_Expressions, Resolve_Name): Preserve entities in
+ 	ASIS mode, because there is no subsequent expansion to decorate
+ 	the tree.
+ 
+ 2017-01-13  Yannick Moy  <moy@adacore.com>
+ 
+ 	* inline.adb, inline.ads (Call_Can_Be_Inlined_In_GNATprove_Mode):
+ 	New function to detect when a call may be inlined or not in
+ 	GNATprove mode.
+ 	(Expand_Inlined_Call): Ensure that a temporary
+ 	is always created in the cases where a type conversion may be
+ 	needed on an input parameter in GNATprove mode, so that GNATprove
+ 	sees the check to perform.
+ 	* sem_res.adb (Resolve_Call): In GNATprove mode, skip inlining
+ 	when not applicable due to actual requiring type conversion
+ 	with possible check but no temporary value can be copied for
+ 	GNATprove to see the check.
+ 
+ 2017-01-13  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_aggr.adb, par_sco.adb, s-osprim-mingw.adb, exp_ch5.adb,
+ 	exp_prag.adb, sem_ch3.adb, xr_tabls.adb, lib-xref-spark_specific.adb,
+ 	layout.adb, sem_dist.adb, exp_spark.adb, exp_ch7.adb, gnatcmd.adb,
+ 	exp_util.adb, prj-proc.adb, sem_aux.adb, comperr.adb, g-memdum.adb,
+ 	exp_attr.adb, s-intman-solaris.adb, exp_ch9.adb, make.adb, live.adb,
+ 	g-sercom-linux.adb, sem_dim.adb, mlib-prj.adb, s-intman-posix.adb,
+ 	sem_ch9.adb, sem_ch10.adb, prep.adb, einfo.adb, scng.adb, checks.adb,
+ 	prj-strt.adb, sem_prag.adb, eval_fat.adb, sem_ch12.adb, sem.adb,
+ 	a-numaux-x86.adb, a-stwifi.adb, i-cobol.adb, prj.adb,
+ 	get_spark_xrefs.adb, s-tasini.adb, rtsfind.adb, freeze.adb,
+ 	g-arrspl.adb, par-ch4.adb, sem_util.adb, sem_res.adb, expander.adb,
+ 	sem_attr.adb, exp_dbug.adb, prj-pp.adb, a-stzfix.adb, s-interr.adb,
+ 	s-wchcnv.adb, switch-m.adb, gnat1drv.adb, sinput-l.adb, stylesw.adb,
+ 	contracts.adb, s-intman-android.adb, g-expect.adb, exp_ch4.adb,
+ 	g-comlin.adb, errout.adb, sinput.adb, s-exctra.adb, repinfo.adb,
+ 	g-spipat.adb, g-debpoo.adb, exp_ch6.adb, sem_ch4.adb, exp_ch13.adb,
+ 	a-wtedit.adb, validsw.adb, pprint.adb, widechar.adb, makeutl.adb,
+ 	ali.adb, set_targ.adb, sem_mech.adb, sem_ch6.adb, gnatdll.adb,
+ 	get_scos.adb, g-pehage.adb, s-tratas-default.adb, gnatbind.adb,
+ 	prj-dect.adb, g-socthi-mingw.adb, par-prag.adb, prj-nmsc.adb,
+ 	exp_disp.adb, par-ch12.adb, binde.adb, sem_ch8.adb,
+ 	s-tfsetr-default.adb, s-regexp.adb, gprep.adb, s-tpobop.adb,
+ 	a-teioed.adb, sem_warn.adb, sem_eval.adb, g-awk.adb, s-io.adb,
+ 	a-ztedit.adb, xoscons.adb, exp_intr.adb, sem_cat.adb, sprint.adb,
+ 	g-socket.adb, exp_dist.adb, sem_ch13.adb, s-tfsetr-vxworks.adb,
+ 	par-ch3.adb, treepr.adb, g-forstr.adb, g-catiio.adb, par-ch5.adb,
+ 	uname.adb, osint.adb, exp_ch3.adb, prj-env.adb, a-strfix.adb,
+ 	a-stzsup.adb, prj-tree.adb, s-fileio.adb: Update all eligible case
+ 	statements to reflect the new style for case alternatives. Various
+ 	code clean up and reformatting.
+ 
+ 2017-01-13  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* exp_util.adb: Minor reformatting.
+ 
+ 2017-01-13  Yannick Moy  <moy@adacore.com>
+ 
+ 	* exp_spark.adb: Code cleanup.
+ 	* sem_ch9.adb (Analyze_Delay_Until): Resolve
+ 	expression so that calls are identified as such inside delay
+ 	until.
+ 
+ 2017-01-13  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_util.adb (Insert_Actions): Handle Iterated_Component_Association.
+ 	* par-ch3.adb (P_Discrete_Choice_List): An
+ 	Iterated_Component_Association is an array aggregate component.
+ 	* par-ch4.adb (P_Iterated_Component_Association): New procedure.
+ 	(Is_Quantified_Expression): New function that performs a lookahead
+ 	to distinguish quantified expressions from iterated component
+ 	associations.
+ 	(P_Aggregate_Or_Paren_Expr): Recognize iterated component
+ 	associations.
+ 	(P_Unparen_Cond_Case_Quant_Expression, P_Primary): Ditto.
+ 	* sem.adb (Analyze): Handle Iterated_Component_Association.
+ 	* sem_aggr.adb (Resolve_Array_Aggregate): Dummy handling of iterated
+ 	component associations.
+ 	* sinfo.ads, sinfo.adb: Entries for for
+ 	N_Iterated_Component_Association and its fields.
+ 	* sprint.adb (Sprint_Node_Actual): Handle
+ 	N_Iterated_Component_Association.
+ 
+ 2017-01-13  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_ch12.adb (Analyze_Package_Instantiation): Move disabiling
+ 	of the style check until after preanalysis of acutals.
+ 
+ 2017-01-13  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_ch13.adb: Minor reformatting.
+ 	* par-ch11.adb: minor style fix in whitespace
+ 	* gnatbind.adb (Gnatbind): Scope of Std_Lib_File
+ 	reduced to Add_Artificial_ALI_File; style fix in declaration of
+ 	Text; grammar fix in comment.
+ 	* osint-c.adb (Read_Library_Info): strip trailing NUL from result.
+ 	* freeze.adb: Cleanup to pass pragma instead of
+ 	expression to call.
+ 	* exp_spark.adb (Expand_SPARK_Attribute_Reference): New procedure to
+ 	replace System'To_Address by equivalent call.
+ 
+ 2017-01-13  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* bindusg.adb: Improve usage output for -f switch.
+ 
+ 2017-01-13  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* frontend.adb, freeze.adb, sem_res.adb, sem_attr.adb, sem_ch8.adb:
+ 	Minor reformatting.
+ 
+ 2017-01-13  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch13.adb (Is_Predicate_Static): Following the intent of the RM,
+ 	treat comparisons on strings as legal in a Static_Predicate.
+ 	(Is_Predicate_Static, Is_Type_Ref): Predicate also returns true on
+ 	a function call that is the expansion of a string comparison.The
+ 	function call is built when compiling the corresponding predicate
+ 	function, but the expression has been found legal as a static
+ 	predicate during earlier analysis.
+ 	* sem_eval.adb (Real_Or_String_Static_Predicate_Matches): Handle
+ 	properly a function call that is the expansion of a string
+ 	comparison operation, in order to recover the Static_Predicate
+ 	expression and apply it to a static argument when needed.
+ 
+ 2017-01-13  Tristan Gingold  <gingold@adacore.com>
+ 
+ 	* s-mmap.adb, s-mmap.ads (Open_Read_No_Exception): New function.
+ 	(Open_Read): Re-implement using Open_Read_No_Exception.
+ 	(Open_Write): Raise exception in case of error.
+ 	* s-mmosin-mingw.adb (Open_Common): Do not raise exception.
+ 	* s-mmosin-unix.adb (Open_Read, Open_Write): Do not
+ 	reaise exception.
+ 	* s-mmosin-mingw.ads, s-mmosin-unix.ads (Open_Read): Adjust comment.
+ 
+ 2017-01-13  Yannick Moy  <moy@adacore.com>
+ 
+ 	* checks.adb: Code cleanup.
+ 
+ 2017-01-13  Yannick Moy  <moy@adacore.com>
+ 
+ 	* freeze.adb (Check_Inherited_Conditions): Use analyzed pragma
+ 	expression instead of unanalyzed aspect expression for checking
+ 	the validity of inheriting an operation. Also copy the expression
+ 	being passing it to Build_Class_Wide_Expression, as this call
+ 	modifies its argument.
+ 	* sem_util.ads Fix comment to reference correct function name
+ 	New_Copy_Tree.
+ 
+ 2017-01-13  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Generalized_Indexing): Compiling in ASIS mode,
+ 	when we propagate information about the indexes back to the original
+ 	indexing mode and the prefix of the index is a function call, do not
+ 	remove any parameter from such call.
+ 
+ 2017-01-13  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* exp_ch6.ads (Needs_BIP_Finalization_Master): Update comment.
+ 	* exp_ch6.adb (Needs_BIP_Finalization_Master): Return True for
+ 	a build-in-place function whose result type is tagged.
+ 
+ 2017-01-13  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_ch8.adb (Analyze_Subprogram_Renaming.Build_Class_Wide_Wrapper):
+ 	Do not generate a wrapper when the only candidate is a class-wide
+ 	subprogram.
+ 	(Analyze_Subprogram_Renaming): Do not freeze the renaming or renamed
+ 	inside a generic context.
+ 
+ 2017-01-13  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* exp_util.adb (Add_Inherited_Tagged_DIC):
+ 	Pass the object parameters of both the parent and the derived
+ 	type DIC procedure to the reference replacement circuitry.
+ 	(Find_DIC_Type): Modify the circuitry to present the partial
+ 	view of a private type in case the private type defines its own
+ 	DIC pragma.
+ 	(Replace_Object_And_Primitive_References): Add two
+ 	optional formal parameters.  Update the comment on usage. Update
+ 	the replacement of references to object parameters.
+ 
+ 2017-01-13  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* einfo.adb, sem_ch6.adb, atree.adb: Minor reformatting and typo fix.
+ 
+ 2017-01-13  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Actuals): Apply Scalar_Range_Check to
+ 	an out parameter that is a type conversion, independently of th
+ 	range check that may apply to the expression of the conversion,
+ 	for use in GNATProve.
+ 
+ 2017-01-13  Yannick Moy  <moy@adacore.com>
+ 
+ 	* gnat1drv.adb (Gnat1drv): Move the implicit with for System in
+ 	GNATprove_Mode here to Frontend.
+ 	* frontend.adb (Frontend): Move the implicit with for System
+ 	in GNATprove_Mode here as it ismore correct this way; the old
+ 	place only worked by chance, since there were no overloaded names.
+ 	* rtsfind.ads (RE_Id, RE_Unit_Table): Add RE_Tasking_State.
+ 	* sem_attr.adb (Analyze_Attribute): In GNATprove_Mode, for the
+ 	four attributes identified in SRM 9(18), add an implicit with
+ 	to Ada.Task_Identification.
+ 	* sem_ch8.adb (Analyze_Subprogram_Renaming.Build_Class_Wide_Wrapper):
+ 	Deal specially with the wrapper introduced for AI05-0071 in GNATprove
+ 	mode.
+ 	* checks.adb (Apply_Discriminant_Check,
+ 	Apply_Selected_Length_Checks, Apply_Selected_Range_Checks):
+ 	In GNATprove mode, we do not apply the checks, but we still
+ 	analyze the expression to possibly issue errors on SPARK
+ 	code when a run-time error can be detected at compile time.
+ 	(Selected_Length_Checks, Selected_Range_Checks): Perform analysis
+ 	in GNATprove mode.
+ 
+ 2017-01-13  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* expander.adb (Expand): Add a warning about using return
+ 	statements in Ghost management code.
+ 	* exp_ch3.adb (Freeze_Type): Add a warning about using return
+ 	statements in Ghost management code.
+ 	* exp_ch7.adb (Build_Invariant_Procedure_Body,
+ 	Build_Invariant_Procedure_Declaration): Add a warning about
+ 	using return statements in Ghost management code.
+ 	* exp_disp.adb (Make_DT): Add a warning about using return
+ 	statements in Ghost management code.
+ 	* exp_util.adb (Build_DIC_Procedure_Body,
+ 	Build_DIC_Procedure_Declaration, Make_Predicated_Call): Add a
+ 	warning about using return statements in Ghost management code.
+ 	* freeze.adb (Freeze_Entity): Add a warning about using return
+ 	statements in Ghost management code.
+ 	* sem.adb (Analyze, Do_Analyze): Add a warning about using return
+ 	statements in Ghost management code.
+ 	* sem_ch3.adb (Analyze_Object_Declaration, Process_Full_View): Add
+ 	a warning about using return statements in Ghost management code.
+ 	* sem_ch5.adb (Analyze_Assignment): Add a warning about using
+ 	return statements in Ghost management code.
+ 	* sem_ch6.adb (Analyze_Procedure_Call,
+ 	Analyze_Subprogram_Body_Helper): Add a warning about using return
+ 	statements in Ghost management code.
+ 	* sem_ch7.adb (Analyze_Package_Body_Helper): Add a warning about
+ 	using return statements in Ghost management code.
+ 	* sem_ch12.adb (Analyze_Package_Instantiation,
+ 	Analyze_Subprogram_Instantiation, Instantiate_Package_Body,
+ 	Instantiate_Subprogram_Body): Add a warning about using return
+ 	statements in Ghost management code.
+ 	* sem_ch13.adb (Build_Predicate_Functions,
+ 	Build_Predicate_Function_Declarations): Add a warning about
+ 	using return statements in Ghost management code.
+ 	* sem_prag.adb (Analyze_Contract_Cases_In_Decl_Part,
+ 	Analyze_Initial_Condition_In_Decl_Part, Analyze_Pragma,
+ 	Analyze_Pre_Post_Condition_In_Decl_Part):  Add a warning about
+ 	using return statements in Ghost management code.
+ 
+ 2017-01-13  Tristan Gingold  <gingold@adacore.com>
+ 
+ 	* s-mmosin-mingw.adb: Fix pragma import.
+ 
+ 2017-01-13  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* gnat1drv.adb (Adjust_Global_Switches): Ignore -gnateE in
+ 	codepeer mode.
+ 
+ 2017-01-13  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* atree.adb (Allocate_Initialize_Node): A newly created node is
+ 	no longer marked as Ghost at this level.
+ 	(Mark_New_Ghost_Node): New routine.
+ 	(New_Copy): Mark the copy as Ghost.
+ 	(New_Entity): Mark the entity as Ghost.
+ 	(New_Node): Mark the node as Ghost.
+ 	* einfo.adb (Is_Checked_Ghost_Entity): This attribute can now
+ 	apply to unanalyzed entities.
+ 	(Is_Ignored_Ghost_Entity): This attribute can now apply to unanalyzed
+ 	entities.
+ 	(Set_Is_Checked_Ghost_Entity): This attribute now
+ 	applies to all entities as well as unanalyzed entities.
+ 	(Set_Is_Ignored_Ghost_Entity): This attribute now applies to
+ 	all entities as well as unanalyzed entities.
+ 	* expander.adb Add with and use clauses for Ghost.
+ 	(Expand): Install and revert the Ghost region associated with the node
+ 	being expanded.
+ 	* exp_ch3.adb (Expand_Freeze_Array_Type): Remove all Ghost-related code.
+ 	(Expand_Freeze_Class_Wide_Type): Remoe all Ghost-related code.
+ 	(Expand_Freeze_Enumeration_Type): Remove all Ghost-related code.
+ 	(Expand_Freeze_Record_Type): Remove all Ghost-related code.
+ 	(Freeze_Type): Install and revert the Ghost region associated
+ 	with the type being frozen.
+ 	* exp_ch5.adb Remove with and use clauses for Ghost.
+ 	(Expand_N_Assignment_Statement): Remove all Ghost-related code.
+ 	* exp_ch6.adb Remove with and use clauses for Ghost.
+ 	(Expand_N_Procedure_Call_Statement): Remove all Ghost-relatd code.
+ 	(Expand_N_Subprogram_Body): Remove all Ghost-related code.
+ 	* exp_ch7.adb (Build_Invariant_Procedure_Body): Install and revert the
+ 	Ghost region of the working type.
+ 	(Build_Invariant_Procedure_Declaration): Install and revert
+ 	the Ghost region of the working type.
+ 	(Expand_N_Package_Body): Remove all Ghost-related code.
+ 	* exp_ch8.adb Remove with and use clauses for Ghost.
+ 	(Expand_N_Exception_Renaming_Declaration): Remove all Ghost-related
+ 	code.
+ 	(Expand_N_Object_Renaming_Declaration): Remove all Ghost-related code.
+ 	(Expand_N_Package_Renaming_Declaration): Remove all Ghost-related code.
+ 	(Expand_N_Subprogram_Renaming_Declaration): Remove all Ghost-related
+ 	code.
+ 	* exp_ch13.adb Remove with and use clauses for Ghost.
+ 	(Expand_N_Freeze_Entity): Remove all Ghost-related code.
+ 	* exp_disp.adb (Make_DT): Install and revert the Ghost region of
+ 	the tagged type. Move the generation of various entities within
+ 	the Ghost region of the type.
+ 	* exp_prag.adb Remove with and use clauses for Ghost.
+ 	(Expand_Pragma_Check): Remove all Ghost-related code.
+ 	(Expand_Pragma_Contract_Cases): Remove all Ghost-related code.
+ 	(Expand_Pragma_Initial_Condition): Remove all Ghost-related code.
+ 	(Expand_Pragma_Loop_Variant): Remove all Ghost-related code.
+ 	* exp_util.adb (Build_DIC_Procedure_Body): Install
+ 	and revert the Ghost region of the working types.
+ 	(Build_DIC_Procedure_Declaration): Install and revert the
+ 	Ghost region of the working type.
+ 	(Make_Invariant_Call): Install and revert the Ghost region of the
+ 	associated type.
+ 	(Make_Predicate_Call): Reimplemented. Install and revert the
+ 	Ghost region of the associated type.
+ 	* freeze.adb (Freeze_Entity): Install and revert the Ghost region
+ 	of the entity being frozen.
+ 	(New_Freeze_Node): Removed.
+ 	* ghost.adb Remove with and use clauses for Opt.
+ 	(Check_Ghost_Completion): Update the parameter profile
+ 	and all references to formal parameters.
+ 	(Ghost_Entity): Update the comment on usage.
+ 	(Install_Ghost_Mode): New routines.
+ 	(Is_Ghost_Assignment): New routine.
+ 	(Is_Ghost_Declaration): New routine.
+ 	(Is_Ghost_Pragma): New routine.
+ 	(Is_Ghost_Procedure_Call): New routine.
+ 	(Is_Ghost_Renaming): Removed.
+ 	(Is_OK_Declaration): Reimplemented.
+ 	(Is_OK_Pragma): Reimplemented.
+ 	(Is_OK_Statement): Reimplemented.
+ 	(Is_Subject_To_Ghost): Update the comment on usage.
+ 	(Mark_And_Set_Ghost_Assignment): New routine.
+ 	(Mark_And_Set_Ghost_Body): New routine.
+ 	(Mark_And_Set_Ghost_Completion): New routine.
+ 	(Mark_And_Set_Ghost_Declaration): New routine.
+ 	(Mark_And_Set_Ghost_Instantiation): New routine.
+ 	(Mark_And_Set_Ghost_Procedure_Call): New routine.
+ 	(Mark_Full_View_As_Ghost): Removed.
+ 	(Mark_Ghost_Declaration_Or_Body): New routine.
+ 	(Mark_Ghost_Pragma): New routine.
+ 	(Mark_Ghost_Renaming): New routine.
+ 	(Mark_Pragma_As_Ghost): Removed.
+ 	(Mark_Renaming_As_Ghost): Removed.
+ 	(Propagate_Ignored_Ghost_Code): Update the comment on usage.
+ 	(Prune_Node): Freeze nodes no longer need special pruning, they
+ 	are processed by the general ignored Ghost code mechanism.
+ 	(Restore_Ghost_Mode): New routine.
+ 	(Set_Ghost_Mode): Reimplemented.
+ 	(Set_Ghost_Mode_From_Entity): Removed.
+ 	* ghost.ads Add with and use clauses for Ghost.
+ 	(Check_Ghost_Completion): Update the parameter profile
+ 	along with the comment on usage.
+ 	(Install_Ghost_Mode): New routine.
+ 	(Is_Ghost_Assignment): New routine.
+ 	(Is_Ghost_Declaration): New routine.
+ 	(Is_Ghost_Pragma): New routine.
+ 	(Is_Ghost_Procedure_Call): New routine.
+ 	(Mark_And_Set_Ghost_Assignment): New routine.
+ 	(Mark_And_Set_Ghost_Body): New routine.
+ 	(Mark_And_Set_Ghost_Completion): New routine.
+ 	(Mark_And_Set_Ghost_Declaration): New routine.
+ 	(Mark_And_Set_Ghost_Instantiation): New routine.
+ 	(Mark_And_Set_Ghost_Procedure_Call): New routine.
+ 	(Mark_Full_View_As_Ghost): Removed.
+ 	(Mark_Ghost_Pragma): New routine.
+ 	(Mark_Ghost_Renaming): New routine.
+ 	(Mark_Pragma_As_Ghost): Removed.
+ 	(Mark_Renaming_As_Ghost): Removed.
+ 	(Restore_Ghost_Mode): New routine.
+ 	(Set_Ghost_Mode): Redefined.
+ 	(Set_Ghost_Mode_From_Entity): Removed.
+ 	* sem.adb (Analyze): Install and revert the Ghost region of the
+ 	node being analyzed.
+ 	(Do_Analyze): Change the way a clean Ghost
+ 	region is installed and reverted.
+ 	* sem_ch3.adb (Analyze_Full_Type_Declaration): Remove
+ 	all Ghost-related code.
+ 	(Analyze_Incomplete_Type_Decl): Remove all Ghost-related code.
+ 	(Analyze_Number_Declaration): Remove all Ghost-related code.
+ 	(Analyze_Object_Declaration): Install and revert the Ghost region of
+ 	a deferred object declaration's completion.
+ 	(Array_Type_Declaration): Remove all Ghost-related code.
+ 	(Build_Derived_Type): Update the comment on
+ 	the propagation of Ghost attributes from a parent to a derived type.
+ 	(Derive_Subprogram): Remove all Ghost-related code.
+ 	(Make_Class_Wide_Type): Remove all Ghost-related code.
+ 	(Make_Implicit_Base): Remove all Ghost-related code.
+ 	(Process_Full_View): Install and revert the Ghost region of
+ 	the partial view.  There is no longer need to check the Ghost
+ 	completion here.
+ 	* sem_ch5.adb (Analyze_Assignment): Install and revert the Ghost
+ 	region of the left hand side.
+ 	* sem_ch6.adb (Analyze_Abstract_Subprogram_Declaration): Remove
+ 	all Ghost-related code.
+ 	(Analyze_Expression_Function): Remove all Ghost-related code.
+ 	(Analyze_Generic_Subprogram_Body): Remove all Ghost-related code.
+ 	(Analyze_Procedure_Call): Install and revert the Ghost region of
+ 	the procedure being called.
+ 	(Analyze_Subprogram_Body_Helper): Install and revert the Ghost
+ 	region of the spec or body.
+ 	(Analyze_Subprogram_Declaration): Remove all Ghost-related code.
+ 	(Build_Subprogram_Declaration): Remove all Ghost-related code.
+ 	(Find_Corresponding_Spec): Remove all Ghost-related code.
+ 	(Process_Formals): Remove all Ghost-related code.
+ 	* sem_ch7.adb (Analyze_Package_Body_Helper): Install and revert
+ 	the Ghost region of the spec.
+ 	(Analyze_Package_Declaration): Remove all Ghost-related code.
+ 	* sem_ch8.adb (Analyze_Exception_Renaming): Mark a renaming as
+ 	Ghost when it aliases a Ghost entity.
+ 	(Analyze_Generic_Renaming): Mark a renaming as Ghost when it aliases
+ 	a Ghost entity.
+ 	(Analyze_Object_Renaming): Mark a renaming as Ghost when
+ 	it aliases a Ghost entity.
+ 	(Analyze_Package_Renaming): Mark a renaming as Ghost when it aliases
+ 	a Ghost entity.
+ 	(Analyze_Subprogram_Renaming): Mark a renaming as Ghost when it
+ 	aliases a Ghost entity.
+ 	* sem_ch11.adb Remove with and use clauses for Ghost.
+ 	(Analyze_Exception_Declaration): Remove all Ghost-related code.
+ 	* sem_ch12.adb (Analyze_Generic_Package_Declaration): Remove all
+ 	Ghost-related code.
+ 	(Analyze_Generic_Subprogram_Declaration): Remove all Ghost-related
+ 	code.
+ 	(Analyze_Package_Instantiation): Install and revert the Ghost region
+ 	of the package instantiation.
+ 	(Analyze_Subprogram_Instantiation): Install
+ 	and revert the Ghost region of the subprogram instantiation.
+ 	(Instantiate_Package_Body): Code clean up. Install and revert the
+ 	Ghost region of the package body.
+ 	(Instantiate_Subprogram_Body): Code clean up. Install and revert the
+ 	Ghost region of the subprogram body.
+ 	* sem_ch13.adb (Build_Predicate_Functions): Install
+ 	and revert the Ghost region of the related type.
+ 	(Build_Predicate_Function_Declaration): Code clean up. Install
+ 	and rever the Ghost region of the related type.
+ 	* sem_prag.adb (Analyze_Contract_Cases_In_Decl_Part):
+ 	Install and revert the Ghost region of the pragma.
+ 	(Analyze_Initial_Condition_In_Decl_Part): Install and revert the
+ 	Ghost region of the pragma.
+ 	(Analyze_Pragma): Install and revert the Ghost region of various
+ 	pragmas.  Mark a pragma as Ghost when it is related to a Ghost entity
+ 	or encloses a Ghost entity.
+ 	(Analyze_Pre_Post_Condition): Install and revert the Ghost
+ 	region of the pragma.
+ 	(Analyze_Pre_Post_Condition_In_Decl_Part): Install and revert the
+ 	Ghost region of the pragma.
+ 	* sem_res.adb (Resolve): Remove all Ghost-related code.
+ 	* sem_util.adb (Is_Declaration): Reimplemented.
+ 	(Is_Declaration_Other_Than_Renaming): New routine.
+ 	* sem_util.ads (Is_Declaration_Other_Than_Renaming): New routine.
+ 	* sinfo.adb (Is_Checked_Ghost_Pragma): New routine.
+ 	(Is_Ghost_Pragma): Removed.
+ 	(Is_Ignored_Ghost_Pragma): New routine.
+ 	(Set_Is_Checked_Ghost_Pragma): New routine.
+ 	(Set_Is_Ghost_Pragma): Removed.
+ 	(Set_Is_Ignored_Ghost_Pragma): New routine.
+ 	* sinfo.ads: Update the documentation on Ghost mode and
+ 	Ghost regions.	New attributes Is_Checked_Ghost_Pragma
+ 	and Is_Ignored_Ghost_Pragma along with usages in nodes.
+ 	Remove attribute Is_Ghost_Pragma along with usages in nodes.
+ 	(Is_Checked_Ghost_Pragma): New routine along with pragma Inline.
+ 	(Is_Ghost_Pragma): Removed along with pragma Inline.
+ 	(Is_Ignored_Ghost_Pragma): New routine along with pragma Inline.
+ 	(Set_Is_Checked_Ghost_Pragma): New routine along with pragma Inline.
+ 	(Set_Is_Ghost_Pragma): Removed along with pragma Inline.
+ 	(Set_Is_Ignored_Ghost_Pragma): New routine along with pragma Inline.
+ 
+ 2017-01-12  Tristan Gingold  <gingold@adacore.com>
+ 
+ 	* s-mmap.ads, s-mmap.adb, s-mmosin-unix.ads, s-mmosin-unix.adb,
+ 	s-mmauni-long.ads, s-mmosin-mingw.ads, s-mmosin-mingw.adb: New files.
+ 
+ 2017-01-12  Yannick Moy  <moy@adacore.com>
+ 
+ 	* errout.adb, errout.ads (Initialize): Factor common treatment
+ 	in Reset_Warnings.
+ 	(Reset_Warnings): New procedure to reset counts related to warnings.
+ 	(Record_Compilation_Errors): New variable to store the presence of an
+ 	error, used in gnat2why to allow changing the Warning_Mode.
+ 	(Compilation_Errors): Use new variable Record_Compilation_Errors to
+ 	store the presence of an error.
+ 
+ 2017-01-12  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_ch13.adb (Analyze_Aspect_Specifications):
+ 	For Interrupt_Handler and Attach_ Handler aspects, decorate the
+ 	internally built reference to the protected procedure as coming
+ 	from sources and force its analysis.
+ 
+ 2017-01-12  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch3.adb (Build_Derived_Type): For a scalar derived type,
+ 	inherit predicates if any from the first_subtype of the parent,
+ 	not from the anonymous parent type.
+ 	* sem_eval.adb (Is_Static_Subtype): A type that inherits a dynamic
+ 	predicate is not a static subtype.
+ 
+ 2017-01-12  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* freeze.adb (Check_Suspicious_Convention): New procedure
+ 	performing a warning check on discriminated record types with
+ 	convention C or C++. Factored out of procedure Freeze_Record_Type,
+ 	and changed to only apply to base types (to avoid spurious
+ 	warnings on subtypes). Minor improvement of warning messages
+ 	to refer to discriminated rather than variant record types.
+ 	(Freeze_Record_Type): Remove code for performing a suspicious
+ 	convention check.
+ 	(Freeze_Entity): Only call Freeze_Record_Type
+ 	on types that aren't declared within any enclosing generic units
+ 	(rather than just excluding the type when the innermost scope
+ 	is generic). Call Check_Suspicious_Convention whether or not
+ 	the type is declared within a generic unit.
+ 	* sem_ch8.adb (In_Generic_Scope): Move this function to Sem_Util.
+ 	* sem_util.ads, sem_util.adb (In_Generic_Scope): New function (moved
+ 	from Sem_Ch8).
+ 
+ 2017-01-12  Tristan Gingold  <gingold@adacore.com>
+ 
+ 	* sysdep.c, adaint.c, rtinit.c, ming32.h:
+ 	(__gnat_current_codepage): Renamed from CurrentCodePage
+ 	(__gnat_current_ccs_encoding): Renamed from CurrentCCSEncoding
+ 
+ 2017-01-12  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch6.adb (Fully_Conformant_Expressions): Handle properly
+ 	quantified expressions, following AI12-050: the loop parameters
+ 	of two quantified expressions are conformant if they have the
+ 	same identifier.
+ 
+ 2017-01-12  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* gcc-interface/Makefile.in: Clean up VxWorks targets.
+ 
+ 2017-01-12  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_attr.adb (Analyze_Attribute_Reference, case Loop_Entry):
+ 	Hnadle properly the attribute reference when it appears as part
+ 	of an expression in another loop aspect.
+ 
+ 2017-01-12  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_ch3.adb (Check_Predicated_Discriminant): New procedure,
+ 	subsidiary of Build_Initialization_Call, to complete generation
+ 	of predicate checks on discriminants whose (sub)types have
+ 	predicates, and to add checks on variants that do not have an
+ 	others clause.
+ 	* sem_util.adb (Gather_Components): A missing Others alternative is
+ 	not an error when the type of the discriminant is a static predicate
+ 	(and coverage has been checked when analyzing the case statement). A
+ 	runtime check is generated to verify that a given discriminant
+ 	satisfies the predicate (RM 3.8.1. (21.1/2)).
+ 
+ 2017-01-12  Yannick Moy  <moy@adacore.com>
+ 
+ 	* gnat1drv.adb (Adjust_Global_Switches): Only
+ 	perform checking of exception mechanism when generating code.
+ 
+ 2017-01-12  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* exp_ch7.adb (Add_Type_Invariants, Process_Array_Component):
+ 	Remove handling of access component with invariant.
+ 	(Build_Invariant_Procedure_Declaration): Remove return on class
+ 	wide type.
+ 	* freeze.adb (Freeze_Array_Type, Freeze_Record_Type): Remove
+ 	conditional exception for component or array so Has_Own_Invariants
+ 	flag is not falsly set.
+ 	* sem_ch3.adb (Make_Class_Wide_Type): Initialize copy of class
+ 	wide type to have no invariant flags.
+ 
+ 2017-01-12  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* exp_ch9.adb, sem_prag.adb, s-tassta.adb, sem_util.adb, s-tarest.adb,
+ 	sem_ch13.adb: Minor reformatting.
+ 
+ 2017-01-12  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* exp_aggr.adb (Build_Record_Aggr_Code): Guard against a missing
+ 	adjustment primitive when the ancestor type was not properly frozen.
+ 	(Gen_Assign): Guard against a missing initialization
+ 	primitive when the component type was not properly frozen.
+ 	(Initialize_Array_Component): Guard against a missing adjustment
+ 	primitive when the component type was not properly frozen.
+ 	(Initialize_Record_Component): Guard against a missing adjustment
+ 	primitive when the component type was not properly frozen.
+ 	(Process_Transient_Component_Completion): The transient object may
+ 	not be finalized when its associated type was not properly frozen.
+ 	* exp_ch3.adb (Build_Assignment): Guard against a missing
+ 	adjustment primitive when the component type was not properly frozen.
+ 	(Build_Initialization_Call): Guard against a missing
+ 	initialization primitive when the associated type was not properly
+ 	frozen.
+ 	(Expand_N_Object_Declaration): Guard against a missing
+ 	adjustment primitive when the base type was not properly frozen.
+ 	(Predefined_Primitive_Bodies): Create an empty Deep_Adjust
+ 	body when there is no adjustment primitive available. Create an
+ 	empty Deep_Finalize body when there is no finalization primitive
+ 	available.
+ 	* exp_ch4.adb (Apply_Accessibility_Check): Guard against a
+ 	missing finalization primitive when the designated type was
+ 	not properly frozen.
+ 	(Expand_N_Allocator): Guard against a missing initialization primitive
+ 	when the designated type was not properly frozen.
+ 	* exp_ch5.adb (Make_Tag_Ctrl_Assignment): Add the adjustment call
+ 	only when the corresponding adjustment primitive is available.
+ 	* exp_ch7.adb (Build_Adjust_Or_Finalize_Statements): Generate the
+ 	adjustment/finalization statements only when there is an available
+ 	primitive to carry out the action.
+ 	(Build_Initialize_Statements): Generate the initialization/finalization
+ 	statements only when there is an available primitive to carry out the
+ 	action.
+ 	(Make_Adjust_Call): Do not generate a call when the underlying
+ 	type is not present due to a possible missing full view.
+ 	(Make_Final_Call): Do not generate a call when the underlying
+ 	type is not present due to a possible missing full view.
+ 	(Make_Finalize_Address_Stmts): Generate an empty body when the
+ 	designated type lacks a finalization primitive.
+ 	(Make_Init_Call): Do not generate a call when the underlying type is
+ 	not present due to a possible missing full view.
+ 	(Process_Component_For_Adjust): Add the adjustment call only when the
+ 	corresponding adjustment primitive is available.
+ 	(Process_Component_For_Finalize): Add the finalization call only when
+ 	the corresponding finalization primitive is available.
+ 	(Process_Object_Declaration): Use a null statement to emulate a
+ 	missing call to the finalization primitive of the object type.
+ 	* exp_ch7.ads (Make_Adjust_Call): Update the comment on usage.
+ 	(Make_Final_Call): Update the comment on usage.
+ 	(Make_Init_Call): Update the comment on usage.
+ 	* exp_util.adb (Build_Transient_Object_Statements): Code reformatting.
+ 
+ 2017-01-12  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* einfo.ads: Update documentation of Address_Taken.
+ 	* sem_attr.adb (Analyze_Access_Attribute, Resolve_Attribute
+ 	[Access_Attribute]): Only consider 'Access/'Unchecked_Access
+ 	for subprograms when setting Address_Taken flag.
+ 
+ 2017-01-12  Patrick Bernardi  <bernardi@adacore.com>
+ 
+ 	* sem_ch10.adb (Analyze_With_Clause): Removed code that turned
+ 	Configurable_Run_Time_Mode off when analysing with'ed predefined
+ 	libraries.
+ 
+ 2017-01-12  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* sem_prag.adb: Minor reformatting.
+ 	* sem_util.adb (Unique_Entity): fix result for
+ 	bodies of entry families.
+ 
+ 2017-01-12  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Pragma): Add appropriate calls to
+ 	Resolve_Suppressible in the pragma Assertion_Policy case.
+ 	(Resolve_Suppressible): Created this function to factor out
+ 	common code used to resolve Suppress to either Ignore or Check
+ 	* snames.ads-tmpl: Add name for Suppressible.
+ 
+ 2017-01-12  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* exp_ch9.adb, s-secsta.adb, snames.ads-tmpl, exp_ch3.adb: Minor
+ 	reformatting.
+ 	* debug.adb: Minor comment fixes.
+ 
+ 2017-01-12  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_util.adb (Unique_Entity): For concurrent
+ 	bodies that are defined with stubs and complete a declaration
+ 	of a single concurrent object return the entity of an implicit
+ 	concurrent type, not the entity of the anonymous concurrent
+ 	object.
+ 	* debug.adb: -gnatd.J is no longer used.
+ 	* make.adb (Globalize): Removed, no longer used.
+ 	* sem_ch9.adb: minor typo in comment for entry index
+ 
+ 2017-01-12  Patrick Bernardi  <bernardi@adacore.com>
+ 
+ 	* aspect.adb, aspect.ads: Added new aspect Secondary_Stack_Size.
+ 	* exp_ch3.adb (Build_Init_Statements): As part of initialising
+ 	the value record of a task, set its _Secondary_Stack_Size field
+ 	if present.
+ 	* exp_ch9.adb (Expand_N_Task_Type_Declaration): Create
+ 	a _Secondary_Stack_Size field in the value record of
+ 	the task if a Secondary_Stack_Size rep item is present.
+ 	(Make_Task_Create_Call): Include secondary stack size
+ 	parameter. If No_Secondary_Stack restriction is in place, passes
+ 	stack size of 0.
+ 	* par-prag.adb, sem_prag.adb, sem_prag.ads: Added new pragma
+ 	Secondary_Stack_Size.
+ 	* s-secsta.adb, s-secsta.ads (Minimum_Secondary_Stack_Size): New
+ 	function to define the overhead of the secondary stack.
+ 	* s-tarest.adb (Create_Restricted_Task,
+ 	Create_Restricted_Task_Sequential): Functions now include
+ 	Secondary_Stack_Size parameter to pass to Initialize_ATCB.
+ 	* s-tarest.adb (Create_Restricted_Task,
+ 	Create_Restricted_Task_Sequential): Calls to Initialize_ATCB now
+ 	include Secondary_Stack_Size parameter.
+ 	(Task_Wrapper): Secondary stack now allocated to the size specified by
+ 	the Secondary_Stack_Size parameter in the task's ATCB.
+ 	* s-taskin.adb, s-taskin.adb (Common_ATCB, Initialize_ATCB): New
+ 	Secondary_Stack_Size component.
+ 	* s-tassta.adb, s-tassta.ads (Create_Restricted_Task,
+ 	Create_Restricted_Task_Sequential): Function now include
+ 	Secondary_Stack_Size parameter.
+ 	(Task_Wrapper): Secondary stack now allocated to the size
+ 	specified by the Secondary_Stack_Size parameter in the task's
+ 	ATCB.
+ 	* s-tproft.adb (Register_Foreign_Thread): Amended Initialize_ATCB call
+ 	to include Secondary_Stack_Size parameter.
+ 	* sem_ch13.adb (Analyze_Aspect_Specification): Add support for
+ 	Secondary_Stack_Size aspect, turning the aspect into its corresponding
+ 	internal attribute.
+ 	(Analyze_Attribute_Definition): Process Secondary_Stack_Size attribute.
+ 	* snames.adb-tmpl, snames.ads-tmpl: Added names
+ 	Name_Secondary_Stack_Size, Name_uSecondary_Stack_Size,
+ 	Attribute_Secondary_Stack_Size and Pragma_Secondary_Stack_Size.
+ 
+ 2017-01-12  Yannick Moy  <moy@adacore.com>
+ 
+ 	* exp_spark.adb (Expand_SPARK_Potential_Renaming): Fix sloc of copied
+ 	subtree.
+ 
+ 2017-01-12  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* exp_attr.adb (Expand_N_Attribute_Reference):
+ 	Fix Finalization_Size case by properly resolving the type after
+ 	rewritting the node.
+ 
+ 2017-01-12  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* exp_util.adb (Build_DIC_Procedure_Body): Semi-insert the body into
+ 	the tree.
+ 	(Build_DIC_Procedure_Declaration): Semi-insert the body into the tree.
+ 	* binde.adb, exp_ch5.adb, sem_type.adb, sem.ads, sem_res.adb,
+ 	exp_sel.ads: Minor reformatting.
+ 
+ 2017-01-12  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* exp_ch6.adb (Expand_Call): Add guard to prevent
+ 	invariant checks from being created for internally generated
+ 	subprograms.
+ 
+ 2017-01-12  Bob Duff  <duff@adacore.com>
+ 
+ 	* lib-writ.ads: Remove incorrect comment.
+ 
+ 2017-01-12  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* debug.adb (-gnatd.K): Enable generation of contract-only
+ 	procedures in CodePeer mode.
+ 	* contracts.adb (Build_And_Analyze_Contract_Only_Subprograms):
+ 	New subprogram.
+ 	(Analyze_Contracts): Generate contract-only procedures if -gnatdK is
+ 	set.
+ 	* scil_ll.ads, scil_ll.adb (Get_Contract_Only_Body_Name): New
+ 	subprogram.
+ 	(Get_Contract_Only_Missing_Body_Name): New subprogram.
+ 	(Get_Contract_Only_Body): New subprogram.
+ 	(Set_Contract_Only_Body): New subprogram.
+ 	(Is_Contract_Only_Body): New subprogram.
+ 	(Set_Is_Contract_Only_Body): New subprogram.
+ 	(SCIL_Nodes): Replace table by hash-table.
+ 
+ 2017-01-12  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* exp_ch6.adb: Minor reformatting.
+ 	* spark_xrefs.ads: minor cleanup of comments for SPARK xrefs
+ 
+ 2017-01-12  Bob Duff  <duff@adacore.com>
+ 
+ 	* binde.adb (Forced): New reason for a dependence.
+ 	(Force_Elab_Order): Implementation of the new switch.
+ 	* binde.ads: Minor comment fixes.
+ 	* bindusg.adb: Add -f switch. Apparently, there was an -f switch
+ 	long ago that is no longer supported; removed comment about that.
+ 	* opt.ads (Force_Elab_Order_File): Name of file specified for
+ 	-f switch.
+ 	* switch-b.adb: Parse -f switch.
+ 
+ 2017-01-12  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* exp_ch6.adb (Check_View_Conversion): Created this function
+ 	to properly chain calls to check type invariants that may be
+ 	present in a subprogram call after the subprogram.
+ 	(Expand_Call): Add a conditional to identify when a view conversion
+ 	needs to be checked.
+ 	* nlists.adb, nlists.ads (Prepend_New): New routine.
+ 	(Prepend_New_To): New routine.
+ 
+ 2017-01-12  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sinfo.ads: Minor reformatting.
+ 
+ 2017-01-12  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* exp_util.adb, exp_util.ads, einfo.ads: Minor typo fixes and
+ 	reformatting.
+ 
+ 2017-01-12  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* exp_ch6.adb (Make_Build_In_Place_Call_In_Anonymous_Context): Add new
+ 	variable Definite. Create a local object and pass its 'Access to the
+ 	BIP function when the result type is either definite or it does not
+ 	require any finalization or secondary stack management.
+ 
+ 2017-01-12  Bob Duff  <duff@adacore.com>
+ 
+ 	* contracts.adb, einfo.adb, errout.adb, exp_attr.adb,
+ 	exp_ch3.adb, exp_ch7.adb, exp_ch9.adb, exp_prag.adb, freeze.adb,
+ 	frontend.adb, ghost.adb, inline.adb, lib-writ.adb, lib-xref.adb,
+ 	par.adb, par-ch10.adb, par-ch2.adb, par-prag.adb, par_sco.adb,
+ 	sem_attr.adb, sem_aux.adb, sem_ch10.adb, sem_ch12.adb,
+ 	sem_ch13.adb, sem_ch6.adb, sem_ch8.adb, sem_ch9.adb, sem_elab.adb,
+ 	sem_prag.adb, sem_res.adb, sem_util.adb, sem_util.ads,
+ 	sem_warn.adb, sinfo.adb, sinfo.ads, sprint.adb (Pragma_Name):
+ 	Change name to Pragma_Name_Unmapped.
+ 	(Pragma_Name_Mapped): Change name to Pragma_Name.
+ 	This is because the "mapped" version should be the usual case.
+ 
+ 2017-01-09  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* einfo.ads, einfo.adb: Remove uses of flags Has_Default_Init_Cond,
+ 	Is_Default_Init_Cond_Procedure, and
+ 	Has_Inherited_Default_Init_Cond.  Add uses of flags
+ 	Has_Own_DIC, Is_DIC_Procedure, and Has_Inherited_DIC.
+ 	(Default_Init_Cond_Procedure): Removed.
+ 	(DIC_Procedure): New routine.
+ 	(Has_Default_Init_Cond): Removed.
+ 	(Has_DIC): New routine.
+ 	(Has_Inheritable_Invariants): The attribute applies to the base type.
+ 	(Has_Inherited_Default_Init_Cond): Removed.
+ 	(Has_Inherited_DIC): New routine.
+ 	(Has_Inherited_Invariants): The attribute applies to the base type.
+ 	(Has_Own_DIC): New routine.
+ 	(Has_Own_Invariants): The attribute applies to the base type.
+ 	(Is_Default_Init_Cond_Procedure): Removed.
+ 	(Is_DIC_Procedure): New routine.
+ 	(Set_Default_Init_Cond_Procedure): Removed.
+ 	(Set_DIC_Procedure): New routine.
+ 	(Set_Has_Default_Init_Cond): Removed.
+ 	(Set_Has_Inheritable_Invariants): The attribute applies
+ 	to the base type.
+ 	(Set_Has_Inherited_Default_Init_Cond): Removed.
+ 	(Set_Has_Inherited_DIC): New routine.
+ 	(Set_Has_Inherited_Invariants): The attribute applies to the base type.
+ 	(Set_Has_Own_DIC): New routine.
+ 	(Set_Has_Own_Invariants): The attribute applies to the base type.
+ 	(Set_Is_Default_Init_Cond_Procedure): Removed.
+ 	(Set_Is_DIC_Procedure): New routine.
+ 	(Write_Entity_Flags): Update the output of all flags related to
+ 	default initial condition.
+ 	* exp_ch3.adb (Expand_N_Object_Declaration): Update the generation
+ 	of the call to the DIC procedure.
+ 	(Freeze_Type): Generate the body of the DIC procedure.
+ 	* exp_ch7.adb (Build_Invariant_Procedure_Body): Replace
+ 	all occurrences of Create_Append with Append_New_To. Do
+ 	not generate an invariant procedure for a class-wide type.
+ 	The generated body acts as a freeze action of the working type.
+ 	(Build_Invariant_Procedure_Declaration): Do not generate an
+ 	invariant procedure for a class-wide type.
+ 	(Create_Append): Removed.
+ 	* exp_util.adb: Add with and use clauses for Sem_Ch3, sem_ch6,
+ 	sem_Ch12, Sem_Disp, and GNAT.HTable. Move the handling of
+ 	class-wide pre/postcondition description and data structures from
+ 	Sem_Prag.
+ 	(Build_Class_Wide_Expression): Moved from Sem_Prag.
+ 	(Build_DIC_Call): New routine.
+ 	(Build_DIC_Procedure_Body): New routine.
+ 	(Build_DIC_Procedure_Declaration): New routine.
+ 	(Entity_Hash): Moved from Sem_Prag.
+ 	(Find_DIC_Type): New routine.
+ 	(Update_Primitives_Mapping): Reimplemented.
+ 	(Update_Primitives_Mapping_Of_Types): New routine.
+ 	* exp_util.ads (Build_Class_Wide_Expression): Moved from Sem_Prag.
+ 	(Build_DIC_Call): New routine.
+ 	(Build_DIC_Procedure_Body): New routine.
+ 	(Build_DIC_Procedure_Declaration): New routine.
+ 	(Update_Primitives_Mapping): Moved from Sem_Prag.
+ 	(Update_Primitives_Mapping_Of_Types): New routine.
+ 	* nlists.adb (Append_New): New routine.
+ 	(Append_New_To): New routine.
+ 	* nlists.ads (Append_New): New routine.
+ 	(Append_New_To): New routine.
+ 	* sem_ch3.adb (Analyze_Declarations): Do not generate the bodies
+ 	of DIC procedures here. This is now done at the end of the
+ 	visible declarations, private declarations, and at the freeze
+ 	point of a type.
+ 	(Analyze_Private_Extension_Declaration):
+ 	A private extension inherits the DIC pragma of a parent type.
+ 	(Analyze_Subtype_Declaration): No need to propagate invariant
+ 	attributes to a subtype as those apply to the base type.
+ 	(Build_Derived_Record_Type): No need to inherit invariants here
+ 	as this is now done in Build_Derived_Type.
+ 	(Build_Derived_Type): Inherit both the DIC pragma and invariants from
+ 	a parent type.
+ 	(Process_Full_View): Update the propagation of DIC attributes.
+ 	(Propagate_Default_Init_Cond_Attributes): Removed.
+ 	* sem_ch7.adb Add with and use clauses for Exp_Util.
+ 	(Analyze_Package_Specification): Create the body of the DIC
+ 	procedure at the end of the visible and private declarations.
+ 	(Preserve_Full_Attributes): Propagate DIC attributes.
+ 	* sem_ch9.adb (Analyze_Protected_Type_Declaration): Propagate
+ 	DIC attributes.
+ 	(Analyze_Task_Type_Declaration): Propagate DIC attributes.
+ 	* sem_elab.adb (Check_A_Call): Update the call to
+ 	Is_Nontrivial_Default_Init_Cond_Procedure.
+ 	* sem_prag.adb Remove the with and use clauses for
+ 	GNAT.HTable. Move the handling of class- wide pre/postcondition
+ 	description and data structures to Exp_Util.
+ 	(Analyze_Pragma): Create the declaration of the DIC procedure. There
+ 	is no need to propagate invariant-related attributes at this point
+ 	as this is done in Build_Invariant_Procedure_Declaration.
+ 	(Build_Class_Wide_Expression): Moved to Exp_Util.
+ 	(Entity_Hash): Moved to Exp_Util.
+ 	(Update_Primitives_Mapping): Moved to Exp_Util.
+ 	* sem_prag.ads (Build_Class_Wide_Expression): Moved to Exp_Util.
+ 	(Update_Primitives_Mapping): Moved to Exp_Util.
+ 	* sem_util.adb: Remove with and use clauses for Ghost
+ 	and Sem_Ch13.
+ 	(Build_Default_Init_Cond_Call): Removed.
+ 	(Build_Default_Init_Cond_Procedure_Bodies): Removed.
+ 	(Build_Default_Init_Cond_Procedure_Declaration): Removed.
+ 	(Get_Views): Reimplemented.
+ 	(Has_Full_Default_Initialization): Reimplement the section on DIC.
+ 	(Inherit_Default_Init_Cond_Procedure): Removed.
+ 	(Is_Nontrivial_Default_Init_Cond_Procedure): Removed.
+ 	(Is_Nontrivial_DIC_Procedure): New routine.
+ 	(Is_Verifiable_DIC_Pragma): New routine.
+ 	(Propagate_DIC_Attributes): New routine.
+ 	* sem_util.ads (Build_Default_Init_Cond_Call): Removed.
+ 	(Build_Default_Init_Cond_Procedure_Bodies): Removed.
+ 	(Build_Default_Init_Cond_Procedure_Declaration): Removed.
+ 	(Inherit_Default_Init_Cond_Procedure): Removed.
+ 	(Is_Nontrivial_Default_Init_Cond_Procedure): Removed.
+ 	(Is_Nontrivial_DIC_Procedure): New routine.
+ 	(Is_Verifiable_DIC_Pragma): New routine.
+ 	(Propagate_DIC_Attributes): New routine.
+ 	* sem_warn.adb (Is_OK_Fully_Initialized): Reimplement the section
+ 	on DIC.
+ 	* sinfo.ads, sinfo.adb: Add new attribute Expression_Copy along with
+ 	usage in nodes.
+ 	(Expression_Copy): New routine along with pragma Inline.
+ 	(Set_Expression_Copy): New routine along with pragma Inline.
+ 
+ 2017-01-06  Bob Duff  <duff@adacore.com>
+ 
+ 	* bindgen.adb (Gen_Adainit, Gen_Adafinal): Change
+ 	"Bind_Main_Program" to "not Bind_For_Library", because otherwise
+ 	we won't generate the call to s_stalib_adafinal when the main
+ 	is not written in Ada.
+ 
+ 2017-01-06  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_prag.adb: Minor: remove pragma Warnings.
+ 
+ 2017-01-06  Tristan Gingold  <gingold@adacore.com>
+ 
+ 	* Makefile.rtl: Do not compile s-stchop by default.
+ 
+ 2017-01-06  Patrick Bernardi  <bernardi@adacore.com>
+ 
+ 	* aspects.adb, aspects.ads, exp_ch3.adb, exp_ch9.adb, par-prag.adb,
+ 	sem_ch13.adb, sem_prag.adb, sem_prag.ads, snames.adb-tmpl,
+ 	snames.ads-tmpl, s-secsta.adb, s-secsta.ads, s-tarest.adb,
+ 	s-tarest.ads, s-taskin.adb, s-taskin.ads, s-tassta.adb, s-tassta.ads:
+ 	Reverted previous change for now.
+ 
+ 2017-01-06  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_ch3.adb (Build_Initialization_Call): Apply predicate
+ 	check to default discriminant value if checks are enabled.
+ 	(Build_Assignment): If type of component has static predicate,
+ 	apply check to its default value, if any.
+ 
+ 2017-01-06  Patrick Bernardi  <bernardi@adacore.com>
+ 
+ 	* aspect.adb, aspect.ads: Added new aspect Secondary_Stack_Size.
+ 	* exp_ch3.adb (Build_Init_Statements): As part of initialising
+ 	the value record of a task, set its _Secondary_Stack_Size field
+ 	if present.
+ 	* exp_ch9.adb (Expand_N_Task_Type_Declaration): Create
+ 	a _Secondary_Stack_Size field in the value record of
+ 	the task if a Secondary_Stack_Size rep item is present.
+ 	(Make_Task_Create_Call): Include secondary stack size
+ 	parameter. If No_Secondary_Stack restriction is in place, passes
+ 	stack size of 0.
+ 	* par-prag.adb, sem_prag.adb, sem_prag.ads: Added new pragma
+ 	Secondary_Stack_Size.
+ 	* s-secsta.adb, s-secsta.ads (Minimum_Secondary_Stack_Size): New
+ 	function to define the overhead of the secondary stack.
+ 	* s-tarest.adb (Create_Restricted_Task,
+ 	Create_Restricted_Task_Sequential): Functions now include
+ 	Secondary_Stack_Size parameter to pass to Initialize_ATCB.
+ 	* s-tarest.adb (Create_Restricted_Task,
+ 	Create_Restricted_Task_Sequential): Calls to Initialize_ATCB
+ 	now include Secondary_Stack_Size parameter.
+ 	(Task_Wrapper):
+ 	Secondary stack now allocated to the size specified by the
+ 	Secondary_Stack_Size parameter in the task's ATCB.
+ 	* s-taskin.adb, s-taskin.adb (Common_ATCB, Initialise_ATCB): New
+ 	Secondary_Stack_Size component.
+ 	* s-tassta.adb, s-tassta.ads (Create_Restricted_Task,
+ 	Create_Restricted_Task_Sequential): Function now include
+ 	Secondary_Stack_Size parameter.
+ 	(Task_Wrapper): Secondary stack
+ 	now allocated to the size specified by the Secondary_Stack_Size
+ 	parameter in the task's ATCB.
+ 	* sem_ch13.adb (Analyze_Aspect_Specification): Add support
+ 	for Secondary_Stack_Size aspect, turning the aspect into its
+ 	corresponding internal attribute.
+ 	(Analyze_Attribute_Definition):
+ 	Process Secondary_Stack_Size attribute.
+ 	* snames.adb-tmpl, snames.ads-tmpl: Added names
+ 	Name_Secondary_Stack_Size, Name_uSecondary_Stack_Size,
+ 	Attribute_Secondary_Stack_Size and Pragma_Secondary_Stack_Size.
+ 
+ 2017-01-06  Pascal Obry  <obry@adacore.com>
+ 
+ 	* a-direio.adb, a-direio.ads, a-sequio.adb, a-sequio.ads: Add Flush to
+ 	Sequential_IO and Direct_IO.
+ 
+ 2017-01-06  Bob Duff  <duff@adacore.com>
+ 
+ 	* snames.ads-tmpl (Renamed): New name for the pragma argument.
+ 	* par-ch2.adb: Allow the new pragma (with analysis deferred
+ 	to Sem_Prag).
+ 	* sinfo.ads, sinfo.adb (Map_Pragma_Name, Pragma_Name_Mapped):
+ 	Keep a mapping from new pragma names to old names.
+ 	* sem_prag.adb: Check legality of pragma Rename_Pragma, and
+ 	implement it by calling Map_Pragma_Name.
+ 	* checks.adb, contracts.adb, einfo.adb, errout.adb,
+ 	* exp_attr.adb, exp_ch3.adb, exp_ch6.adb, exp_ch7.adb, exp_ch9.adb,
+ 	* exp_prag.adb, exp_util.adb, freeze.adb, frontend.adb, ghost.adb,
+ 	* inline.adb, lib-writ.adb, scans.adb, scans.ads, sem_attr.adb,
+ 	* sem_aux.adb, sem_ch10.adb, sem_ch13.adb, sem_ch6.adb, sem_ch9.adb,
+ 	* sem_elab.adb, sem_res.adb, sem_util.adb, sem_util.ads,
+ 	* sem_warn.adb: Call Pragma_Name_Mapped instead of Pragma_Name
+ 	as appropriate.
+ 
+ 2017-01-06  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* exp_ch9.adb: Minor reformatting.
+ 
+ 2017-01-06  Tristan Gingold  <gingold@adacore.com>
+ 
+ 	* exp_ch9.ads, exp_ch9.adb (Build_Entry_Names): Remove (unused).
+ 	* rtsfind.ads (RE_Task_Entry_Names_Array, RO_ST_Set_Entry_Names)
+ 	(RE_Protected_Entry_Names_Array, RO_PE_Set_Entry_Names): Remove
+ 	(unused).
+ 	* s-taskin.ads, s-taskin.adb (Set_Entry_Names,
+ 	Task_Entry_Names_Array, Task_Entry_Names_Access): Remove.
+ 	* s-tpoben.ads, s-tpoben.adb (Set_Entry_Names,
+ 	Protected_Entry_Names_Array, Protected_Entry_Names_Access): Remove.
+ 
+ 2017-01-06  Bob Duff  <duff@adacore.com>
+ 
+ 	* sinfo.ads, sinfo.adb (Map_Pragma_Name): Preparation work,
+ 	dummy implementation of Map_Pragma_Name.
+ 
+ 2017-01-06  Tristan Gingold  <gingold@adacore.com>
+ 
+ 	* exp_ch9.adb (Expand_N_Protected_Type_Declaration): Make the
+ 	entry_body variable constant.
+ 	* s-taprob.ads (Entry_Body_Access): Move to s-tposen.
+ 	* s-tpoben.ads (Protected_Entry_Body_Access): Now access
+ 	to constant.
+ 	* s-tposen.ads (Entry_Body_Access): Moved from s-taprob,
+ 	now access to constant.
+ 
+ 2017-01-06  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* einfo.ads, sem_res.adb, sem_attr.adb, sem_ch6.adb: Minor
+ 	reformatting and typo fixes.
+ 
+ 2017-01-06  Bob Duff  <duff@adacore.com>
+ 
+ 	* snames.ads-tmpl: New names for pragma renaming.
+ 	* snames.adb-tmpl (Is_Configuration_Pragma_Name): Minor cleanup.
+ 	* par-prag.adb: Add new pragma name to case statement.
+ 	* sem_prag.adb (Rename_Pragma): Initial cut at semantic analysis
+ 	of the pragma.
+ 	* sinfo.ads, sinfo.adb (Pragma_Name_Mapped): Preparation work,
+ 	Dummy implementation of Pragma_Name_Mapped.
+ 
+ 2017-01-06  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_ch6.adb (Expand_Protected_Subprogram_Call): Add guard to
+ 	better detect call within an entry_wrapper.
+ 	* sem_res.adb (Resolve_Call): A protected call within an
+ 	entity_wrapper is analyzed in the context of the protected
+ 	object but corresponds to a pre-analysis and is not an access
+ 	before elaboration.
+ 	* sem_attr.adb: Minor reformatting.
+ 
+ 2017-01-06  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_attr.adb (Analyze_Attribute): Modify semantic checks for
+ 	Finalization_Size to allow a prefix of any non-class-wide type.
+ 	* sem_attr.ads Modify comment for Finalization_Size to include
+ 	definite type use case.
+ 
+ 2017-01-06  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* einfo.ads, einfo.adb (Is_Entry_Wrapper): New flag, defined
+ 	on procedures that are wrappers created for entries that have
+ 	preconditions.
+ 	* sem_ch6.adb (Analyze_Subrogram_Body_Helper): If the subprogram
+ 	body is an entry_wrapper, compile it in the context of the
+ 	synchronized type, because a precondition may refer to funtions
+ 	of the type.
+ 	* exp_ch9.adb (Build_Contract_Wrapper): Set Is_Entry_Wrapper on
+ 	body entity.
+ 	* exp_ch6.adb (Expand_Protected_Subprogram_Call): if the call is
+ 	within an Entry_Wrapper this is an external call whose target
+ 	is the synchronized object that is the actual in the call to
+ 	the wrapper.
+ 
+ 2017-01-06  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_attr.adb (Analyze_Attribute/Attribute_Loop_Entry): Analyze node
+ 	in tree, which means not analyzing the previous prefix if the node has
+ 	been rewritten into its prefix.
+ 
+ 2017-01-06  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* s-tpobop.adb: Minor reformatting.
+ 
+ 2017-01-06  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* checks.adb (Ensure_Valid): Do not generate a validity check
+ 	within a generated predicate function, validity checks will have
+ 	been applied earlier when required.
+ 
+ 2017-01-06  Tristan Gingold  <gingold@adacore.com>
+ 
+ 	* s-tpoben.ads (Protection_Entries): Add comment and reorder
+ 	components for performances.
+ 	* s-tpobop.adb (PO_Do_Or_Queue): Implement Max_Queue_Length runtime
+ 	semantic.
+ 
+ 2017-01-06  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_eval.adb (Check_Expression_Against_Static_Predicate):
+ 	If expression is compile-time known and obeys a static predicate
+ 	it must be labelled as static, to prevent spurious warnings and
+ 	run-time errors, e.g. in case statements. This is relevant when
+ 	the expression is the result of constant-folding a type conversion
+ 	whose expression is a variable with a known static value.
+ 
+ 2017-01-06  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* exp_attr.adb, sem_attr.ads: Minor reformatting.
+ 
+ 2017-01-06  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* exp_attr.adb (Expand_N_Attribute_Reference): Add entry for
+ 	expansion of Finalization_Size attribute.
+ 	* sem_attr.adb (Analyze_Attribute): Add entry to check the
+ 	semantics of Finalization_Size.
+ 	(Eval_Attribute): Add null entry for Finalization_Size.
+ 	* sem_attr.ads: Add Finalization_Size to the implementation
+ 	dependent attribute list.
+ 	* snames.ads-tmpl: Add name entry for Finalization_Size attribute.
+ 
+ 2017-01-06  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch5.adb (Analyze_Loop_Statement): If the loop includes an
+ 	iterator specification with a serious syntactic error, transform
+ 	construct into an infinite loop in order to continue analysis
+ 	and prevent a compiler abort.
+ 
+ 2017-01-06  Tristan Gingold  <gingold@adacore.com>
+ 
+ 	* exp_ch9.adb (Expand_N_Protected_Type_Declaration): Do not generate
+ 	max_queue_lengths_array if unused.
+ 
+ 2017-01-06  Bob Duff  <duff@adacore.com>
+ 
+ 	* errout.adb (Set_Msg_Text): Protect against out-of-bounds
+ 	array access, in case "\" is at the end of Text.
+ 	* stylesw.adb (Set_Style_Check_Options): Don't include input
+ 	characters in the error message template, because they could
+ 	be control characters such as "\", which Errout will try to
+ 	interpret.
+ 
+ 2017-01-06  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch4.adb (Find_Indexing_Operations, Inspect_Declarations):
+ 	For a private type examine the visible declarations that follow
+ 	the partial view, not just the private declarations that follow
+ 	the full view.
+ 
+ 2017-01-06  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* exp_ch5.adb, sem_ch3.adb, checks.adb: Minor reformatting and
+ 	code cleanup.
+ 
+ 2017-01-06  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_ch5.adb (Get_Default_Iterator): For a derived type, the
+ 	alias of the inherited op is the parent iterator, no need to
+ 	examine dispatch table positions which might not be established
+ 	yet if type is not frozen.
+ 	* sem_disp.adb (Check_Controlling_Formals): The formal of a
+ 	predicate function may be a subtype of a tagged type.
+ 	* sem_ch3.adb (Complete_Private_Subtype): Adjust inheritance
+ 	of representation items for the completion of a type extension
+ 	where a predicate applies to the partial view.
+ 	* checks.ads, checks.adb (Apply_Predicate_Check): Add optional
+ 	parameter that designates function whose actual receives a
+ 	predicate check, to improve warning message when the check will
+ 	lead to infinite recursion.
+ 	* sem_res.adb (Resolve_Actuals): Pass additional parameter to
+ 	Apply_Predicate_Check.
+ 
+ 2017-01-06  Tristan Gingold  <gingold@adacore.com>
+ 
+ 	* s-rident.ads (Profile_Info): Remove No_Entry_Queue from
+ 	Gnat_Extended_Ravenscar.
+ 	* exp_ch9.adb, s-tpoben.adb, s-tpoben.ads: Fix spelling.
+ 
+ 2017-01-06  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* sem_util.ads: Minor typo fix and reformatting.
+ 
+ 2017-01-06  Yannick Moy  <moy@adacore.com>
+ 
+ 	* ghost.adb Minor fixing of references to SPARK RM.
+ 	(Check_Ghost_Context): Check whether reference is to a lvalue
+ 	before issuing an error about violation of SPARK RM 6.9(13)
+ 	when declaration has Ghost policy Check and reference has Ghost
+ 	policy Ignore.
+ 	* sem_util.adb Minor indentation.
+ 	* sem_ch10.adb (Analyze_Package_Body_Stub, Analyze_Protected_Body_Stub,
+ 	Analyze_Task_Body_Stub): Set Ekind of the defining identifier.
+ 	* sem_util.ads (Unique_Defining_Entity): Document the result
+ 	for package body stubs.
+ 
+ 2017-01-06  Tristan Gingold  <gingold@adacore.com>
+ 
+ 	* raise-gcc.c (abort): Macro to call Abort_Propagation.
+ 	* s-tpoben.ads (Protected_Entry_Queue_Max_Access): Make it access
+ 	constant.
+ 	* exp_ch9.adb (Expand_N_Protected_Type_Declaration):
+ 	Do not generate the Entry_Max_Queue_Lengths_Array if all default
+ 	values.
+ 	* exp_util.adb (Corresponding_Runtime_Package): Consider
+ 	Max_Queue_Length pragma.
+ 
+ 2017-01-06  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* exp_ch9.adb (Expand_N_Protected_Type_Declaration):
+ 	Remove declaration generation in the case of
+ 	System_Tasking_Protected_Objects_Single_Entry being used,
+ 	and add a warning message when this is detected to occur.
+ 	(Make_Initialize_Protection): Remove reference pass in the case
+ 	of System_Tasking_Protected_Objects_Single_Entry.
+ 	* rtsfind.ads: Remove RE_Protected_Entry_Queue_Max
+ 	* s-tposen.adb (Initialize_Protection_Entry): Remove
+ 	Entry_Queue_Max parameter.
+ 	* s-tposen.ads: Remove the types use to store the entry queue
+ 	maximum.
+ 	* sem_prag.adb (Analyze_Pragma): Remove entry families restriction
+ 
+ 2017-01-06  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_util.adb, sem_util.ads (Get_Enum_Lit_From_Pos): Strengthen
+ 	behavior of function, to also accept out of range positions
+ 	and raise Constraint_Error in such case, and to copy sloc from
+ 	literal if No_Location passed as location.
+ 	* uintp.adb, uintp.ads (UI_To_Int, UI_To_CC): Strengthen behavior
+ 	of functions to raise Constraint_Error in case of value not in
+ 	appropriate range.
+ 
+ 2017-01-06  Tristan Gingold  <gingold@adacore.com>
+ 
+ 	* sem_util.adb, s-taprop-linux.adb (Finalize_TCB): Remove call to
+ 	Invalidate_Stack_Cache.
+ 
+ 2017-01-06  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* s-os_lib.adb: Minor fix to the signature of Readlink.
+ 
+ 2017-01-06  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_ch6.adb (Conforming_Types): Handle another
+ 	confusion between views in a nested instance with an actual
+ 	private type whose full view is not in scope.
+ 
+ 2017-01-06  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* exp_ch5.adb (Expand_N_If_Statement): Obey existing comment and
+ 	mark a rewritten if statement as explicit (Comes_From_Source).
+ 
+ 2017-01-06  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* sem_prag.adb, rtsfind.adb, sem_util.adb: Minor typo fixes.
+ 
+ 2017-01-06  Tristan Gingold  <gingold@adacore.com>
+ 
+ 	* ada.ads, a-unccon.ads: Add pragma No_Elaboration_Code_All.
+ 
+ 2017-01-06  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_case.adb: Minor reformatting.
+ 
+ 2017-01-06  Thomas Quinot  <quinot@adacore.com>
+ 
+ 	* g-socthi-mingw.adb: Remove now extraneous USE TYPE clause
+ 
+ 2017-01-06  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* aspects.adb: Register aspect in Canonical_Aspect.
+ 	* aspects.ads: Associate qualities of Aspect_Max_Queue_Length
+ 	into respective tables.
+ 	* einfo.ads, einfo.adb: Add a new attribute for
+ 	handling the parameters for Pragma_Max_Entry_Queue
+ 	(Entry_Max_Queue_Lengths_Array) in E_Protected_Type. Subprograms
+ 	for accessing and setting were added as well.
+ 	* par-prag.adb (Prag): Register Pramga_Max_Entry_Queue.
+ 	* exp_ch9.adb (Expand_N_Protected_Type_Declaration): Emit
+ 	declaration for pramga arguments and store them in the protected
+ 	type node.
+ 	(Make_Initialize_Protection): Pass a reference to
+ 	the Entry_Max_Queue_Lengths_Array in the protected type node to
+ 	the runtime.
+ 	* rtsfind.adb: Minor grammar fix.
+ 	* rtsfind.ads: Register new types taken from the
+ 	runtime libraries RE_Protected_Entry_Queue_Max and
+ 	RE_Protected_Entry_Queue_Max_Array
+ 	* s-tposen.adb, s-tpoben.adb
+ 	(Initialize_Protection_Entry/Initialize_Protection_Entries):
+ 	Add extra parameter and add assignment to local object.
+ 	* s-tposen.ads, s-tpoben.ads: Add new types to
+ 	store entry queue maximums and a field to the entry object record.
+ 	* sem_ch13.adb (Analyze_Aspect_Specifications): Add case statement
+ 	for Aspect_Max_Queue_Length.
+ 	(Check_Aspect_At_Freeze_Point):
+ 	Add aspect to list of aspects that don't require delayed analysis.
+ 	* sem_prag.adb (Analyze_Pragma): Add case statement for
+ 	Pragma_Max_Queue_Length, check semantics, and register arugments
+ 	in the respective entry nodes.
+ 	* sem_util.adb, sem_util.ads Add functions Get_Max_Queue_Length
+ 	and Has_Max_Queue_Length
+ 	* snames.ads-tmpl: Add constant for the new aspect-name
+ 	Name_Max_Queue_Length and corrasponding pragma.
+ 
+ 2017-01-06  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* exp_util.adb (Is_Controlled_Function_Call):
+ 	Reimplemented. Consider any node which has an entity as the
+ 	function call may appear in various ways.
+ 
+ 2017-01-06  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* exp_attr.adb (Rewrite_Stream_Proc_Call): Use
+ 	an unchecked type conversion when performing a view conversion
+ 	to/from a private type. In all other cases use a regular type
+ 	conversion to ensure that any relevant checks are properly
+ 	installed.
+ 
+ 2017-01-06  Hristian Kirtchev  <kirtchev@adacore.com>
+ 
+ 	* sem_prag.adb, sem_ch8.adb: Minor reformatting.
+ 
+ 2017-01-06  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_case.adb (Explain_Non_Static_Bound): Suppress cascaded
+ 	error on case expression that is an entity, when coverage is
+ 	incomplete and entity has a static value obtained by local
+ 	propagation.
+ 	(Handle_Static_Predicate): New procedure, subsidiary of
+ 	Check_Choices, to handle case alternatives that are either
+ 	subtype names or subtype indications involving subtypes that
+ 	have static predicates.
+ 
+ 2017-01-06  Thomas Quinot  <quinot@adacore.com>
+ 
+ 	* s-oscons-tmplt.c, g-socket.adb, g-socket.ads, g-sothco.ads:
+ 	(GNAT.Socket): Add support for Busy_Polling and Generic_Option
+ 
+ 2017-01-06  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_elab.adb (Activate_Elaborate_All_Desirable): Don't add
+ 	Elaborate_All(P) to P itself. That could happen in obscure cases,
+ 	and always introduced a cycle (P body must be elaborated before
+ 	P body).
+ 	* lib-writ.ads: Comment clarification.
+ 	* ali-util.ads: Minor comment fix.
+ 	* ali.adb: Minor reformatting.
+ 
+ 2017-01-06  Tristan Gingold  <gingold@adacore.com>
+ 
+ 	* a-exexpr-gcc.adb: Improve comment.
+ 
+ 2017-01-03  James Cowgill  <James.Cowgill@imgtec.com>
+ 
+ 	* s-linux-mips.ads: Use correct signal and errno constants.
+ 	(sa_handler_pos, sa_mask_pos): Fix offsets for 64-bit MIPS.
+ 
+ 2017-01-03  James Cowgill  <James.Cowgill@imgtec.com>
+ 
+ 	* s-linux-mips.ads: Rename from s-linux-mipsel.ads.
+ 	* gcc-interface/Makefile.in (MIPS/Linux): Merge mips and mipsel
+ 	sections.
+ 
+ 2017-01-01  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gnatvsn.ads: Bump copyright year.
+ 
+ 2017-01-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* gnat_ugn.texi: Bump @copying's copyright year.
+ 	* gnat_rm.texi: Likewise.
+ 
+ Copyright (C) 2017 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-7.3.0/gcc/ada/Makefile.rtl gcc-8.1.0/gcc/ada/Makefile.rtl
*** gcc-7.3.0/gcc/ada/Makefile.rtl	Fri Jan 20 10:42:43 2017
--- gcc-8.1.0/gcc/ada/Makefile.rtl	Sat Oct 14 16:33:30 2017
***************
*** 1,5 ****
  # Makefile.rtl for GNU Ada Compiler (GNAT).
! #   Copyright (C) 2003-2012, Free Software Foundation, Inc.
  
  #This file is part of GCC.
  
--- 1,5 ----
  # Makefile.rtl for GNU Ada Compiler (GNAT).
! #   Copyright (C) 2003-2017, Free Software Foundation, Inc.
  
  #This file is part of GCC.
  
*************** GNATRTL_TASKING_OBJS= \
*** 73,79 ****
    s-tpoben$(objext) \
    s-tpobop$(objext) \
    s-tposen$(objext) \
-   s-tratas$(objext) \
    thread$(objext) \
    $(EXTRA_GNATRTL_TASKING_OBJS)
  
--- 73,78 ----
*************** GNATRTL_NONTASKING_OBJS= \
*** 137,142 ****
--- 136,145 ----
    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) \
*************** GNATRTL_NONTASKING_OBJS= \
*** 647,652 ****
--- 650,656 ----
    s-ransee$(objext) \
    s-regexp$(objext) \
    s-regpat$(objext) \
+   s-resfil$(objext) \
    s-restri$(objext) \
    s-rident$(objext) \
    s-rpc$(objext)    \
*************** GNATRTL_NONTASKING_OBJS= \
*** 655,660 ****
--- 659,665 ----
    s-sequio$(objext) \
    s-shasto$(objext) \
    s-soflin$(objext) \
+   s-soliin$(objext) \
    s-spsufi$(objext) \
    s-stache$(objext) \
    s-stalib$(objext) \
*************** GNATRTL_NONTASKING_OBJS= \
*** 668,674 ****
    s-ststop$(objext) \
    s-tasloc$(objext) \
    s-traceb$(objext) \
-   s-traces$(objext) \
    s-traent$(objext) \
    s-unstyp$(objext) \
    s-utf_32$(objext) \
--- 673,678 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-assert.adb gcc-8.1.0/gcc/ada/a-assert.adb
*** gcc-7.3.0/gcc/ada/a-assert.adb	Fri Jan 30 15:31:01 2015
--- gcc-8.1.0/gcc/ada/a-assert.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,53 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                           A D A . A S S E R T                            --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --         Copyright (C) 2007-2015, Free Software Foundation, Inc.          --
- --                                                                          --
- -- GNAT is 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 Ada.Assertions with
-   SPARK_Mode
- is
-    ------------
-    -- Assert --
-    ------------
- 
-    procedure Assert (Check : Boolean) is
-    begin
-       if Check = False then
-          raise Ada.Assertions.Assertion_Error;
-       end if;
-    end Assert;
- 
-    procedure Assert (Check : Boolean; Message : String) is
-    begin
-       if Check = False then
-          raise Ada.Assertions.Assertion_Error with Message;
-       end if;
-    end Assert;
- 
- end Ada.Assertions;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-assert.ads gcc-8.1.0/gcc/ada/a-assert.ads
*** gcc-7.3.0/gcc/ada/a-assert.ads	Fri Jan 30 15:25:38 2015
--- gcc-8.1.0/gcc/ada/a-assert.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,66 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                       A D A . A S S E R T I O N S                        --
- --                                                                          --
- --            Copyright (C) 2015, Free Software Foundation, Inc.            --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- 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 contracts that have been added.                      --
- --                                                                          --
- -- GNAT is 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. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Preconditions in this unit are meant for analysis only, not for run-time
- --  checking, so that the expected exceptions are raised when calling Assert.
- --  This is enforced by setting the corresponding assertion policy to Ignore.
- 
- pragma Assertion_Policy (Pre => Ignore);
- 
- --  We do a with of System.Assertions to get hold of the exception (following
- --  the specific RM permission that lets' Assertion_Error being a renaming).
- --  The suppression of Warnings stops the warning about bad categorization.
- 
- pragma Warnings (Off);
- with System.Assertions;
- pragma Warnings (On);
- 
- package Ada.Assertions with
-   SPARK_Mode
- is
-    pragma Pure (Assertions);
- 
-    Assertion_Error : exception renames System.Assertions.Assert_Failure;
-    --  This is the renaming that is allowed by 11.4.2(24). Note that the
-    --  Exception_Name will refer to the one in System.Assertions (see
-    --  AARM-11.4.1(12.b)).
- 
-    procedure Assert (Check : Boolean) with
-      Pre => Check;
- 
-    procedure Assert (Check : Boolean; Message : String) with
-      Pre => Check;
- 
- end Ada.Assertions;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-astaco.adb gcc-8.1.0/gcc/ada/a-astaco.adb
*** gcc-7.3.0/gcc/ada/a-astaco.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-astaco.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,65 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --        A D A . A S Y N C H R O N O U S _ T A S K _ C O N T R O L         --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          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- --
- -- 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 a dummy body, which will not normally be compiled when used with
- --  standard versions of GNAT, which do not support this package. See comments
- --  in spec for further details.
- 
- package body Ada.Asynchronous_Task_Control is
- 
-    --------------
-    -- Continue --
-    --------------
- 
-    procedure Continue (T : Ada.Task_Identification.Task_Id) is
-    begin
-       null;
-    end Continue;
- 
-    ----------
-    -- Hold --
-    ----------
- 
-    procedure Hold (T : Ada.Task_Identification.Task_Id) is
-    begin
-       raise Program_Error;
-    end Hold;
- 
-    -------------
-    -- Is_Held --
-    -------------
- 
-    function Is_Held (T : Ada.Task_Identification.Task_Id) return Boolean is
-    begin
-       return False;
-    end Is_Held;
- 
- end Ada.Asynchronous_Task_Control;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-astaco.ads gcc-8.1.0/gcc/ada/a-astaco.ads
*** gcc-7.3.0/gcc/ada/a-astaco.ads	Wed Jun 11 12:31:56 2014
--- gcc-8.1.0/gcc/ada/a-astaco.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,41 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --        A D A . A S Y N C H R O N O U S _ T A S K _ C O N T R O L         --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This unit is not implemented in typical GNAT implementations that lie on
- --  top of operating systems, because it is infeasible to implement in such
- --  environments. The RM anticipates this situation (RM D.11(10)), and permits
- --  an implementation to leave this unimplemented even if the Real-Time Systems
- --  annex is fully supported.
- 
- --  If a target environment provides appropriate support for this package, then
- --  the Unimplemented_Unit pragma should be removed from this spec, and an
- --  appropriate body provided. The framework for such a body is included in the
- --  distributed sources.
- 
- with Ada.Task_Identification;
- 
- package Ada.Asynchronous_Task_Control is
-    pragma Preelaborate;
-    --  In accordance with Ada 2005 AI-362
- 
-    pragma Unimplemented_Unit;
- 
-    procedure Hold (T : Ada.Task_Identification.Task_Id);
- 
-    procedure Continue (T : Ada.Task_Identification.Task_Id);
- 
-    function Is_Held (T : Ada.Task_Identification.Task_Id) return Boolean;
- 
- end Ada.Asynchronous_Task_Control;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-btgbso.adb gcc-8.1.0/gcc/ada/a-btgbso.adb
*** gcc-7.3.0/gcc/ada/a-btgbso.adb	Tue Oct 20 10:23:46 2015
--- gcc-8.1.0/gcc/ada/a-btgbso.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,703 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --       ADA.CONTAINERS.RED_BLACK_TREES.GENERIC_BOUNDED_SET_OPERATIONS      --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Red_Black_Trees.Generic_Bounded_Set_Operations is
- 
-    pragma Warnings (Off, "variable ""Busy*"" is not referenced");
-    pragma Warnings (Off, "variable ""Lock*"" is not referenced");
-    --  See comment in Ada.Containers.Helpers
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    function Copy (Source : Set_Type) return Set_Type;
- 
-    ----------
-    -- Copy --
-    ----------
- 
-    function Copy (Source : Set_Type) return Set_Type is
-    begin
-       return Target : Set_Type (Source.Length) do
-          Assign (Target => Target, Source => Source);
-       end return;
-    end Copy;
- 
-    ----------------
-    -- Difference --
-    ----------------
- 
-    procedure Set_Difference (Target : in out Set_Type; Source : Set_Type) is
-       Tgt, Src : Count_Type;
- 
-       TN : Nodes_Type renames Target.Nodes;
-       SN : Nodes_Type renames Source.Nodes;
- 
-       Compare : Integer;
- 
-    begin
-       if Target'Address = Source'Address then
-          TC_Check (Target.TC);
- 
-          Tree_Operations.Clear_Tree (Target);
-          return;
-       end if;
- 
-       if Source.Length = 0 then
-          return;
-       end if;
- 
-       TC_Check (Target.TC);
- 
-       Tgt := Target.First;
-       Src := Source.First;
-       loop
-          if Tgt = 0 then
-             exit;
-          end if;
- 
-          if Src = 0 then
-             exit;
-          end if;
- 
-          --  Per AI05-0022, the container implementation is required to detect
-          --  element tampering by a generic actual subprogram.
- 
-          declare
-             Lock_Target : With_Lock (Target.TC'Unrestricted_Access);
-             Lock_Source : With_Lock (Source.TC'Unrestricted_Access);
-          begin
-             if Is_Less (TN (Tgt), SN (Src)) then
-                Compare := -1;
-             elsif Is_Less (SN (Src), TN (Tgt)) then
-                Compare := 1;
-             else
-                Compare := 0;
-             end if;
-          end;
- 
-          if Compare < 0 then
-             Tgt := Tree_Operations.Next (Target, Tgt);
- 
-          elsif Compare > 0 then
-             Src := Tree_Operations.Next (Source, Src);
- 
-          else
-             declare
-                X : constant Count_Type := Tgt;
-             begin
-                Tgt := Tree_Operations.Next (Target, Tgt);
- 
-                Tree_Operations.Delete_Node_Sans_Free (Target, X);
-                Tree_Operations.Free (Target, X);
-             end;
- 
-             Src := Tree_Operations.Next (Source, Src);
-          end if;
-       end loop;
-    end Set_Difference;
- 
-    function Set_Difference (Left, Right : Set_Type) return Set_Type is
-    begin
-       if Left'Address = Right'Address then
-          return S : Set_Type (0);  -- Empty set
-       end if;
- 
-       if Left.Length = 0 then
-          return S : Set_Type (0);  -- Empty set
-       end if;
- 
-       if Right.Length = 0 then
-          return Copy (Left);
-       end if;
- 
-       return Result : Set_Type (Left.Length) do
-          --  Per AI05-0022, the container implementation is required to detect
-          --  element tampering by a generic actual subprogram.
- 
-          declare
-             Lock_Left : With_Lock (Left.TC'Unrestricted_Access);
-             Lock_Right : With_Lock (Right.TC'Unrestricted_Access);
- 
-             L_Node : Count_Type;
-             R_Node : Count_Type;
- 
-             Dst_Node : Count_Type;
-             pragma Warnings (Off, Dst_Node);
- 
-          begin
-             L_Node := Left.First;
-             R_Node := Right.First;
-             loop
-                if L_Node = 0 then
-                   exit;
-                end if;
- 
-                if R_Node = 0 then
-                   while L_Node /= 0 loop
-                      Insert_With_Hint
-                        (Dst_Set  => Result,
-                         Dst_Hint => 0,
-                         Src_Node => Left.Nodes (L_Node),
-                         Dst_Node => Dst_Node);
- 
-                      L_Node := Tree_Operations.Next (Left, L_Node);
-                   end loop;
- 
-                   exit;
-                end if;
- 
-                if Is_Less (Left.Nodes (L_Node), Right.Nodes (R_Node)) then
-                   Insert_With_Hint
-                     (Dst_Set  => Result,
-                      Dst_Hint => 0,
-                      Src_Node => Left.Nodes (L_Node),
-                      Dst_Node => Dst_Node);
- 
-                   L_Node := Tree_Operations.Next (Left, L_Node);
- 
-                elsif Is_Less (Right.Nodes (R_Node), Left.Nodes (L_Node)) then
-                   R_Node := Tree_Operations.Next (Right, R_Node);
- 
-                else
-                   L_Node := Tree_Operations.Next (Left, L_Node);
-                   R_Node := Tree_Operations.Next (Right, R_Node);
-                end if;
-             end loop;
-          end;
-       end return;
-    end Set_Difference;
- 
-    ------------------
-    -- Intersection --
-    ------------------
- 
-    procedure Set_Intersection
-      (Target : in out Set_Type;
-       Source : Set_Type)
-    is
-       Tgt : Count_Type;
-       Src : Count_Type;
- 
-       Compare : Integer;
- 
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       TC_Check (Target.TC);
- 
-       if Source.Length = 0 then
-          Tree_Operations.Clear_Tree (Target);
-          return;
-       end if;
- 
-       Tgt := Target.First;
-       Src := Source.First;
-       while Tgt /= 0
-         and then Src /= 0
-       loop
-          --  Per AI05-0022, the container implementation is required to detect
-          --  element tampering by a generic actual subprogram.
- 
-          declare
-             Lock_Target : With_Lock (Target.TC'Unrestricted_Access);
-             Lock_Source : With_Lock (Source.TC'Unrestricted_Access);
-          begin
-             if Is_Less (Target.Nodes (Tgt), Source.Nodes (Src)) then
-                Compare := -1;
-             elsif Is_Less (Source.Nodes (Src), Target.Nodes (Tgt)) then
-                Compare := 1;
-             else
-                Compare := 0;
-             end if;
-          end;
- 
-          if Compare < 0 then
-             declare
-                X : constant Count_Type := Tgt;
-             begin
-                Tgt := Tree_Operations.Next (Target, Tgt);
- 
-                Tree_Operations.Delete_Node_Sans_Free (Target, X);
-                Tree_Operations.Free (Target, X);
-             end;
- 
-          elsif Compare > 0 then
-             Src := Tree_Operations.Next (Source, Src);
- 
-          else
-             Tgt := Tree_Operations.Next (Target, Tgt);
-             Src := Tree_Operations.Next (Source, Src);
-          end if;
-       end loop;
- 
-       while Tgt /= 0 loop
-          declare
-             X : constant Count_Type := Tgt;
-          begin
-             Tgt := Tree_Operations.Next (Target, Tgt);
- 
-             Tree_Operations.Delete_Node_Sans_Free (Target, X);
-             Tree_Operations.Free (Target, X);
-          end;
-       end loop;
-    end Set_Intersection;
- 
-    function Set_Intersection (Left, Right : Set_Type) return Set_Type is
-    begin
-       if Left'Address = Right'Address then
-          return Copy (Left);
-       end if;
- 
-       return Result : Set_Type (Count_Type'Min (Left.Length, Right.Length)) do
- 
-          --  Per AI05-0022, the container implementation is required to detect
-          --  element tampering by a generic actual subprogram.
- 
-          declare
-             Lock_Left : With_Lock (Left.TC'Unrestricted_Access);
-             Lock_Right : With_Lock (Right.TC'Unrestricted_Access);
- 
-             L_Node : Count_Type;
-             R_Node : Count_Type;
- 
-             Dst_Node : Count_Type;
-             pragma Warnings (Off, Dst_Node);
- 
-          begin
-             L_Node := Left.First;
-             R_Node := Right.First;
-             loop
-                if L_Node = 0 then
-                   exit;
-                end if;
- 
-                if R_Node = 0 then
-                   exit;
-                end if;
- 
-                if Is_Less (Left.Nodes (L_Node), Right.Nodes (R_Node)) then
-                   L_Node := Tree_Operations.Next (Left, L_Node);
- 
-                elsif Is_Less (Right.Nodes (R_Node), Left.Nodes (L_Node)) then
-                   R_Node := Tree_Operations.Next (Right, R_Node);
- 
-                else
-                   Insert_With_Hint
-                     (Dst_Set  => Result,
-                      Dst_Hint => 0,
-                      Src_Node => Left.Nodes (L_Node),
-                      Dst_Node => Dst_Node);
- 
-                   L_Node := Tree_Operations.Next (Left, L_Node);
-                   R_Node := Tree_Operations.Next (Right, R_Node);
-                end if;
-             end loop;
-          end;
-       end return;
-    end Set_Intersection;
- 
-    ---------------
-    -- Is_Subset --
-    ---------------
- 
-    function Set_Subset
-      (Subset : Set_Type;
-       Of_Set : Set_Type) return Boolean
-    is
-    begin
-       if Subset'Address = Of_Set'Address then
-          return True;
-       end if;
- 
-       if Subset.Length > Of_Set.Length then
-          return False;
-       end if;
- 
-       --  Per AI05-0022, the container implementation is required to detect
-       --  element tampering by a generic actual subprogram.
- 
-       declare
-          Lock_Subset : With_Lock (Subset.TC'Unrestricted_Access);
-          Lock_Of_Set : With_Lock (Of_Set.TC'Unrestricted_Access);
- 
-          Subset_Node : Count_Type;
-          Set_Node    : Count_Type;
-       begin
-          Subset_Node := Subset.First;
-          Set_Node    := Of_Set.First;
-          loop
-             if Set_Node = 0 then
-                return Subset_Node = 0;
-             end if;
- 
-             if Subset_Node = 0 then
-                return True;
-             end if;
- 
-             if Is_Less (Subset.Nodes (Subset_Node),
-                         Of_Set.Nodes (Set_Node))
-             then
-                return False;
-             end if;
- 
-             if Is_Less (Of_Set.Nodes (Set_Node),
-                         Subset.Nodes (Subset_Node))
-             then
-                Set_Node := Tree_Operations.Next (Of_Set, Set_Node);
-             else
-                Set_Node := Tree_Operations.Next (Of_Set, Set_Node);
-                Subset_Node := Tree_Operations.Next (Subset, Subset_Node);
-             end if;
-          end loop;
-       end;
-    end Set_Subset;
- 
-    -------------
-    -- Overlap --
-    -------------
- 
-    function Set_Overlap (Left, Right : Set_Type) return Boolean is
-    begin
-       if Left'Address = Right'Address then
-          return Left.Length /= 0;
-       end if;
- 
-       --  Per AI05-0022, the container implementation is required to detect
-       --  element tampering by a generic actual subprogram.
- 
-       declare
-          Lock_Left : With_Lock (Left.TC'Unrestricted_Access);
-          Lock_Right : With_Lock (Right.TC'Unrestricted_Access);
- 
-          L_Node : Count_Type;
-          R_Node : Count_Type;
-       begin
-          L_Node := Left.First;
-          R_Node := Right.First;
-          loop
-             if L_Node = 0
-               or else R_Node = 0
-             then
-                return False;
-             end if;
- 
-             if Is_Less (Left.Nodes (L_Node), Right.Nodes (R_Node)) then
-                L_Node := Tree_Operations.Next (Left, L_Node);
-             elsif Is_Less (Right.Nodes (R_Node), Left.Nodes (L_Node)) then
-                R_Node := Tree_Operations.Next (Right, R_Node);
-             else
-                return True;
-             end if;
-          end loop;
-       end;
-    end Set_Overlap;
- 
-    --------------------------
-    -- Symmetric_Difference --
-    --------------------------
- 
-    procedure Set_Symmetric_Difference
-      (Target : in out Set_Type;
-       Source : Set_Type)
-    is
-       Tgt : Count_Type;
-       Src : Count_Type;
- 
-       New_Tgt_Node : Count_Type;
-       pragma Warnings (Off, New_Tgt_Node);
- 
-       Compare : Integer;
- 
-    begin
-       if Target'Address = Source'Address then
-          Tree_Operations.Clear_Tree (Target);
-          return;
-       end if;
- 
-       Tgt := Target.First;
-       Src := Source.First;
-       loop
-          if Tgt = 0 then
-             while Src /= 0 loop
-                Insert_With_Hint
-                  (Dst_Set  => Target,
-                   Dst_Hint => 0,
-                   Src_Node => Source.Nodes (Src),
-                   Dst_Node => New_Tgt_Node);
- 
-                Src := Tree_Operations.Next (Source, Src);
-             end loop;
- 
-             return;
-          end if;
- 
-          if Src = 0 then
-             return;
-          end if;
- 
-          --  Per AI05-0022, the container implementation is required to detect
-          --  element tampering by a generic actual subprogram.
- 
-          declare
-             Lock_Target : With_Lock (Target.TC'Unrestricted_Access);
-             Lock_Source : With_Lock (Source.TC'Unrestricted_Access);
-          begin
-             if Is_Less (Target.Nodes (Tgt), Source.Nodes (Src)) then
-                Compare := -1;
-             elsif Is_Less (Source.Nodes (Src), Target.Nodes (Tgt)) then
-                Compare := 1;
-             else
-                Compare := 0;
-             end if;
-          end;
- 
-          if Compare < 0 then
-             Tgt := Tree_Operations.Next (Target, Tgt);
- 
-          elsif Compare > 0 then
-             Insert_With_Hint
-               (Dst_Set  => Target,
-                Dst_Hint => Tgt,
-                Src_Node => Source.Nodes (Src),
-                Dst_Node => New_Tgt_Node);
- 
-             Src := Tree_Operations.Next (Source, Src);
- 
-          else
-             declare
-                X : constant Count_Type := Tgt;
-             begin
-                Tgt := Tree_Operations.Next (Target, Tgt);
- 
-                Tree_Operations.Delete_Node_Sans_Free (Target, X);
-                Tree_Operations.Free (Target, X);
-             end;
- 
-             Src := Tree_Operations.Next (Source, Src);
-          end if;
-       end loop;
-    end Set_Symmetric_Difference;
- 
-    function Set_Symmetric_Difference
-      (Left, Right : Set_Type) return Set_Type
-    is
-    begin
-       if Left'Address = Right'Address then
-          return S : Set_Type (0);  -- Empty set
-       end if;
- 
-       if Right.Length = 0 then
-          return Copy (Left);
-       end if;
- 
-       if Left.Length = 0 then
-          return Copy (Right);
-       end if;
- 
-       return Result : Set_Type (Left.Length + Right.Length) do
- 
-          --  Per AI05-0022, the container implementation is required to detect
-          --  element tampering by a generic actual subprogram.
- 
-          declare
-             Lock_Left : With_Lock (Left.TC'Unrestricted_Access);
-             Lock_Right : With_Lock (Right.TC'Unrestricted_Access);
- 
-             L_Node : Count_Type;
-             R_Node : Count_Type;
- 
-             Dst_Node : Count_Type;
-             pragma Warnings (Off, Dst_Node);
- 
-          begin
-             L_Node := Left.First;
-             R_Node := Right.First;
-             loop
-                if L_Node = 0 then
-                   while R_Node /= 0 loop
-                      Insert_With_Hint
-                        (Dst_Set  => Result,
-                         Dst_Hint => 0,
-                         Src_Node => Right.Nodes (R_Node),
-                         Dst_Node => Dst_Node);
- 
-                      R_Node := Tree_Operations.Next (Right, R_Node);
-                   end loop;
- 
-                   exit;
-                end if;
- 
-                if R_Node = 0 then
-                   while L_Node /= 0 loop
-                      Insert_With_Hint
-                        (Dst_Set  => Result,
-                         Dst_Hint => 0,
-                         Src_Node => Left.Nodes (L_Node),
-                         Dst_Node => Dst_Node);
- 
-                      L_Node := Tree_Operations.Next (Left, L_Node);
-                   end loop;
- 
-                   exit;
-                end if;
- 
-                if Is_Less (Left.Nodes (L_Node), Right.Nodes (R_Node)) then
-                   Insert_With_Hint
-                     (Dst_Set  => Result,
-                      Dst_Hint => 0,
-                      Src_Node => Left.Nodes (L_Node),
-                      Dst_Node => Dst_Node);
- 
-                   L_Node := Tree_Operations.Next (Left, L_Node);
- 
-                elsif Is_Less (Right.Nodes (R_Node), Left.Nodes (L_Node)) then
-                   Insert_With_Hint
-                     (Dst_Set  => Result,
-                      Dst_Hint => 0,
-                      Src_Node => Right.Nodes (R_Node),
-                      Dst_Node => Dst_Node);
- 
-                   R_Node := Tree_Operations.Next (Right, R_Node);
- 
-                else
-                   L_Node := Tree_Operations.Next (Left, L_Node);
-                   R_Node := Tree_Operations.Next (Right, R_Node);
-                end if;
-             end loop;
-          end;
-       end return;
-    end Set_Symmetric_Difference;
- 
-    -----------
-    -- Union --
-    -----------
- 
-    procedure Set_Union (Target : in out Set_Type; Source : Set_Type) is
-       Hint : Count_Type := 0;
- 
-       procedure Process (Node : Count_Type);
-       pragma Inline (Process);
- 
-       procedure Iterate is new Tree_Operations.Generic_Iteration (Process);
- 
-       -------------
-       -- Process --
-       -------------
- 
-       procedure Process (Node : Count_Type) is
-       begin
-          Insert_With_Hint
-            (Dst_Set  => Target,
-             Dst_Hint => Hint,
-             Src_Node => Source.Nodes (Node),
-             Dst_Node => Hint);
-       end Process;
- 
-    --  Start of processing for Union
- 
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       --  Per AI05-0022, the container implementation is required to detect
-       --  element tampering by a generic actual subprogram.
- 
-       declare
-          Lock_Source : With_Lock (Source.TC'Unrestricted_Access);
-       begin
-          --  Note that there's no way to decide a priori whether the target has
-          --  enough capacity for the union with source. We cannot simply
-          --  compare the sum of the existing lengths to the capacity of the
-          --  target, because equivalent items from source are not included in
-          --  the union.
- 
-          Iterate (Source);
-       end;
-    end Set_Union;
- 
-    function Set_Union (Left, Right : Set_Type) return Set_Type is
-    begin
-       if Left'Address = Right'Address then
-          return Copy (Left);
-       end if;
- 
-       if Left.Length = 0 then
-          return Copy (Right);
-       end if;
- 
-       if Right.Length = 0 then
-          return Copy (Left);
-       end if;
- 
-       return Result : Set_Type (Left.Length + Right.Length) do
-          declare
-             Lock_Left : With_Lock (Left.TC'Unrestricted_Access);
-             Lock_Right : With_Lock (Right.TC'Unrestricted_Access);
-          begin
-             Assign (Target => Result, Source => Left);
- 
-             Insert_Right : declare
-                Hint : Count_Type := 0;
- 
-                procedure Process (Node : Count_Type);
-                pragma Inline (Process);
- 
-                procedure Iterate is
-                  new Tree_Operations.Generic_Iteration (Process);
- 
-                -------------
-                -- Process --
-                -------------
- 
-                procedure Process (Node : Count_Type) is
-                begin
-                   Insert_With_Hint
-                     (Dst_Set  => Result,
-                      Dst_Hint => Hint,
-                      Src_Node => Right.Nodes (Node),
-                      Dst_Node => Hint);
-                end Process;
- 
-             --  Start of processing for Insert_Right
- 
-             begin
-                Iterate (Right);
-             end Insert_Right;
-          end;
-       end return;
-    end Set_Union;
- 
- end Ada.Containers.Red_Black_Trees.Generic_Bounded_Set_Operations;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-btgbso.ads gcc-8.1.0/gcc/ada/a-btgbso.ads
*** gcc-7.3.0/gcc/ada/a-btgbso.ads	Tue Oct 20 10:23:46 2015
--- gcc-8.1.0/gcc/ada/a-btgbso.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,103 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --       ADA.CONTAINERS.RED_BLACK_TREES.GENERIC_BOUNDED_SET_OPERATIONS      --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.                  --
- ------------------------------------------------------------------------------
- 
- --  Tree_Type is used to implement ordered containers. This package declares
- --  set-based tree operations.
- 
- with Ada.Containers.Red_Black_Trees.Generic_Bounded_Operations;
- 
- generic
-    with package Tree_Operations is new Generic_Bounded_Operations (<>);
- 
-    type Set_Type is new Tree_Operations.Tree_Types.Tree_Type with private;
- 
-    use Tree_Operations.Tree_Types, Tree_Operations.Tree_Types.Implementation;
- 
-    with procedure Assign (Target : in out Set_Type; Source : Set_Type);
- 
-    with procedure Insert_With_Hint
-      (Dst_Set  : in out Set_Type;
-       Dst_Hint : Count_Type;
-       Src_Node : Node_Type;
-       Dst_Node : out Count_Type);
- 
-    with function Is_Less (Left, Right : Node_Type) return Boolean;
- 
- package Ada.Containers.Red_Black_Trees.Generic_Bounded_Set_Operations is
-    pragma Pure;
- 
-    procedure Set_Union (Target : in out Set_Type; Source : Set_Type);
-    --  Attempts to insert each element of Source in Target. If Target is
-    --  busy then Program_Error is raised. We say "attempts" here because
-    --  if these are unique-element sets, then the insertion should fail
-    --  (not insert a new item) when the insertion item from Source is
-    --  equivalent to an item already in Target. If these are multisets
-    --  then of course the attempt should always succeed.
- 
-    function Set_Union (Left, Right : Set_Type) return Set_Type;
-    --  Makes a copy of Left, and attempts to insert each element of
-    --  Right into the copy, then returns the copy.
- 
-    procedure Set_Intersection (Target : in out Set_Type; Source : Set_Type);
-    --  Removes elements from Target that are not equivalent to items in
-    --  Source. If Target is busy then Program_Error is raised.
- 
-    function Set_Intersection (Left, Right : Set_Type) return Set_Type;
-    --  Returns a set comprising all the items in Left equivalent to items in
-    --  Right.
- 
-    procedure Set_Difference (Target : in out Set_Type; Source : Set_Type);
-    --  Removes elements from Target that are equivalent to items in Source. If
-    --  Target is busy then Program_Error is raised.
- 
-    function Set_Difference (Left, Right : Set_Type) return Set_Type;
-    --  Returns a set comprising all the items in Left not equivalent to items
-    --  in Right.
- 
-    procedure Set_Symmetric_Difference
-      (Target : in out Set_Type;
-       Source : Set_Type);
-    --  Removes from Target elements that are equivalent to items in Source,
-    --  and inserts into Target items from Source not equivalent elements in
-    --  Target. If Target is busy then Program_Error is raised.
- 
-    function Set_Symmetric_Difference (Left, Right : Set_Type) return Set_Type;
-    --  Returns a set comprising the union of the elements in Left not
-    --  equivalent to items in Right, and the elements in Right not equivalent
-    --  to items in Left.
- 
-    function Set_Subset (Subset : Set_Type; Of_Set : Set_Type) return Boolean;
-    --  Returns False if Subset contains at least one element not equivalent to
-    --  any item in Of_Set; returns True otherwise.
- 
-    function Set_Overlap (Left, Right : Set_Type) return Boolean;
-    --  Returns True if at least one element of Left is equivalent to an item in
-    --  Right; returns False otherwise.
- 
- end Ada.Containers.Red_Black_Trees.Generic_Bounded_Set_Operations;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-calari.adb gcc-8.1.0/gcc/ada/a-calari.adb
*** gcc-7.3.0/gcc/ada/a-calari.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-calari.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,100 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --              A D A . C A L E N D A R . A R I T H M E T I C               --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2006-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- --
- -- 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 Ada.Calendar.Arithmetic is
- 
-    --------------------------
-    -- Implementation Notes --
-    --------------------------
- 
-    --  All operations in this package are target and time representation
-    --  independent, thus only one source file is needed for multiple targets.
- 
-    ---------
-    -- "+" --
-    ---------
- 
-    function "+" (Left : Time; Right : Day_Count) return Time is
-       R : constant Long_Integer := Long_Integer (Right);
-    begin
-       return Arithmetic_Operations.Add (Left, R);
-    end "+";
- 
-    function "+" (Left : Day_Count; Right : Time) return Time is
-       L : constant Long_Integer := Long_Integer (Left);
-    begin
-       return Arithmetic_Operations.Add (Right, L);
-    end "+";
- 
-    ---------
-    -- "-" --
-    ---------
- 
-    function "-" (Left : Time; Right : Day_Count) return Time is
-       R : constant Long_Integer := Long_Integer (Right);
-    begin
-       return Arithmetic_Operations.Subtract (Left, R);
-    end "-";
- 
-    function "-" (Left, Right : Time) return Day_Count is
-       Days         : Long_Integer;
-       Seconds      : Duration;
-       Leap_Seconds : Integer;
-       pragma Warnings (Off, Seconds);        -- temporary ???
-       pragma Warnings (Off, Leap_Seconds);   -- temporary ???
-       pragma Unreferenced (Seconds, Leap_Seconds);
-    begin
-       Arithmetic_Operations.Difference
-         (Left, Right, Days, Seconds, Leap_Seconds);
-       return Day_Count (Days);
-    end "-";
- 
-    ----------------
-    -- Difference --
-    ----------------
- 
-    procedure Difference
-      (Left         : Time;
-       Right        : Time;
-       Days         : out Day_Count;
-       Seconds      : out Duration;
-       Leap_Seconds : out Leap_Seconds_Count)
-    is
-       Op_Days  : Long_Integer;
-       Op_Leaps : Integer;
-    begin
-       Arithmetic_Operations.Difference
-         (Left, Right, Op_Days, Seconds, Op_Leaps);
-       Days := Day_Count (Op_Days);
-       Leap_Seconds := Leap_Seconds_Count (Op_Leaps);
-    end Difference;
- 
- end Ada.Calendar.Arithmetic;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-calari.ads gcc-8.1.0/gcc/ada/a-calari.ads
*** gcc-7.3.0/gcc/ada/a-calari.ads	Fri Feb 20 15:20:38 2009
--- gcc-8.1.0/gcc/ada/a-calari.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,65 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --              A D A . C A L E N D A R . A R I T H M E T I C               --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --         Copyright (C) 2005-2008, 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 --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This package provides arithmetic operations of time values using days
- --  and leap seconds. Ada.Calendar.Arithmetic is defined in the Ada 2005
- --  RM (9.6.1).
- 
- package Ada.Calendar.Arithmetic is
- 
-    --  Arithmetic on days:
- 
-    --  Rough estimate on the number of days over the range of Ada time
- 
-    type Day_Count is range
-      -(366 * (1 + Year_Number'Last - Year_Number'First))
-         ..
-      +(366 * (1 + Year_Number'Last - Year_Number'First));
- 
-    subtype Leap_Seconds_Count is Integer range -2047 .. 2047;
-    --  Count of leap seconds. Negative leap seconds occur whenever the
-    --  astronomical time is faster than the atomic time or as a result of
-    --  Difference when Left < Right.
- 
-    procedure Difference
-      (Left         : Time;
-       Right        : Time;
-       Days         : out Day_Count;
-       Seconds      : out Duration;
-       Leap_Seconds : out Leap_Seconds_Count);
-    --  Returns the difference between Left and Right. Days is the number of
-    --  days of difference, Seconds is the remainder seconds of difference
-    --  excluding leap seconds, and Leap_Seconds is the number of leap seconds.
-    --  If Left < Right, then Seconds <= 0.0, Days <= 0, and Leap_Seconds <= 0,
-    --  otherwise all values are nonnegative. The absolute value of Seconds is
-    --  always less than 86_400.0. For the returned values, if Days = 0, then
-    --  Seconds + Duration (Leap_Seconds) = Calendar."-" (Left, Right)
- 
-    function "+" (Left : Time;      Right : Day_Count) return Time;
-    function "+" (Left : Day_Count; Right : Time)      return Time;
-    --  Adds a number of days to a time value. Time_Error is raised if the
-    --  result is not representable as a value of type Time.
- 
-    function "-" (Left : Time;      Right : Day_Count) return Time;
-    --  Subtracts a number of days from a time value. Time_Error is raised if
-    --  the result is not representable as a value of type Time.
- 
-    function "-" (Left : Time;      Right : Time)      return Day_Count;
-    --  Subtracts two time values, and returns the number of days between them.
-    --  This is the same value that Difference would return in Days.
- 
- end Ada.Calendar.Arithmetic;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-calcon.adb gcc-8.1.0/gcc/ada/a-calcon.adb
*** gcc-7.3.0/gcc/ada/a-calcon.adb	Mon Oct  1 09:41:22 2012
--- gcc-8.1.0/gcc/ada/a-calcon.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,148 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --              A D A . C A L E N D A R . C O N V E R S I O N S             --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --        Copyright (C) 2008-2012, Free Software Foundation, Inc.           --
- --                                                                          --
- -- GNAT is 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 Interfaces.C; use Interfaces.C;
- 
- package body Ada.Calendar.Conversions is
- 
-    -----------------
-    -- To_Ada_Time --
-    -----------------
- 
-    function To_Ada_Time (Unix_Time : long) return Time is
-       Val : constant Long_Integer := Long_Integer (Unix_Time);
-    begin
-       return Conversion_Operations.To_Ada_Time (Val);
-    end To_Ada_Time;
- 
-    -----------------
-    -- To_Ada_Time --
-    -----------------
- 
-    function To_Ada_Time
-      (tm_year  : int;
-       tm_mon   : int;
-       tm_day   : int;
-       tm_hour  : int;
-       tm_min   : int;
-       tm_sec   : int;
-       tm_isdst : int) return Time
-    is
-       Year   : constant Integer := Integer (tm_year);
-       Month  : constant Integer := Integer (tm_mon);
-       Day    : constant Integer := Integer (tm_day);
-       Hour   : constant Integer := Integer (tm_hour);
-       Minute : constant Integer := Integer (tm_min);
-       Second : constant Integer := Integer (tm_sec);
-       DST    : constant Integer := Integer (tm_isdst);
-    begin
-       return
-         Conversion_Operations.To_Ada_Time
-           (Year, Month, Day, Hour, Minute, Second, DST);
-    end To_Ada_Time;
- 
-    -----------------
-    -- To_Duration --
-    -----------------
- 
-    function To_Duration
-      (tv_sec  : long;
-       tv_nsec : long) return Duration
-    is
-       Secs      : constant Long_Integer := Long_Integer (tv_sec);
-       Nano_Secs : constant Long_Integer := Long_Integer (tv_nsec);
-    begin
-       return Conversion_Operations.To_Duration (Secs, Nano_Secs);
-    end To_Duration;
- 
-    ------------------------
-    -- To_Struct_Timespec --
-    ------------------------
- 
-    procedure To_Struct_Timespec
-      (D       : Duration;
-       tv_sec  : out long;
-       tv_nsec : out long)
-    is
-       Secs      : Long_Integer;
-       Nano_Secs : Long_Integer;
- 
-    begin
-       Conversion_Operations.To_Struct_Timespec (D, Secs, Nano_Secs);
- 
-       tv_sec  := long (Secs);
-       tv_nsec := long (Nano_Secs);
-    end To_Struct_Timespec;
- 
-    ------------------
-    -- To_Struct_Tm --
-    ------------------
- 
-    procedure To_Struct_Tm
-      (T       : Time;
-       tm_year : out int;
-       tm_mon  : out int;
-       tm_day  : out int;
-       tm_hour : out int;
-       tm_min  : out int;
-       tm_sec  : out int)
-    is
-       Year   : Integer;
-       Month  : Integer;
-       Day    : Integer;
-       Hour   : Integer;
-       Minute : Integer;
-       Second : Integer;
- 
-    begin
-       Conversion_Operations.To_Struct_Tm
-         (T, Year, Month, Day, Hour, Minute, Second);
- 
-       tm_year := int (Year);
-       tm_mon  := int (Month);
-       tm_day  := int (Day);
-       tm_hour := int (Hour);
-       tm_min  := int (Minute);
-       tm_sec  := int (Second);
-    end To_Struct_Tm;
- 
-    ------------------
-    -- To_Unix_Time --
-    ------------------
- 
-    function To_Unix_Time (Ada_Time : Time) return long is
-       Val : constant Long_Integer :=
-         Conversion_Operations.To_Unix_Time (Ada_Time);
-    begin
-       return long (Val);
-    end To_Unix_Time;
- 
- end Ada.Calendar.Conversions;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-calcon.ads gcc-8.1.0/gcc/ada/a-calcon.ads
*** gcc-7.3.0/gcc/ada/a-calcon.ads	Fri Aug  1 09:38:48 2014
--- gcc-8.1.0/gcc/ada/a-calcon.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,113 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --              A D A . C A L E N D A R . C O N V E R S I O N S             --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2008-2014, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 various routines for conversion between Ada and Unix
- --  time models - Time, Duration, struct tm and struct timespec.
- 
- with Interfaces.C;
- 
- package Ada.Calendar.Conversions is
- 
-    function To_Ada_Time (Unix_Time : Interfaces.C.long) return Time;
-    --  Convert a time value represented as number of seconds since the
-    --  Unix Epoch to a time value relative to an Ada implementation-defined
-    --  Epoch. The units of the result are nanoseconds on all targets. Raises
-    --  Time_Error if the result cannot fit into a Time value.
- 
-    function To_Ada_Time
-      (tm_year  : Interfaces.C.int;
-       tm_mon   : Interfaces.C.int;
-       tm_day   : Interfaces.C.int;
-       tm_hour  : Interfaces.C.int;
-       tm_min   : Interfaces.C.int;
-       tm_sec   : Interfaces.C.int;
-       tm_isdst : Interfaces.C.int) return Time;
-    --  Convert a time value expressed in Unix-like fields of struct tm into
-    --  a Time value relative to the Ada Epoch. The ranges of the formals are
-    --  as follows:
- 
-    --     tm_year   --  years since 1900
-    --     tm_mon    --  months since January [0 .. 11]
-    --     tm_day    --  day of the month [1 .. 31]
-    --     tm_hour   --  hours since midnight [0 .. 24]
-    --     tm_min    --  minutes after the hour [0 .. 59]
-    --     tm_sec    --  seconds after the minute [0 .. 60]
-    --     tm_isdst  --  Daylight Savings Time flag [-1 .. 1]
- 
-    --  The returned value is in UTC and may or may not contain leap seconds
-    --  depending on whether binder flag "-y" was used. Raises Time_Error if
-    --  the input values are out of the defined ranges or if tm_sec equals 60
-    --  and the instance in time is not a leap second occurrence.
- 
-    function To_Duration
-      (tv_sec  : Interfaces.C.long;
-       tv_nsec : Interfaces.C.long) return Duration;
-    --  Convert an elapsed time value expressed in Unix-like fields of struct
-    --  timespec into a Duration value. The expected ranges are:
- 
-    --     tv_sec   -  seconds
-    --     tv_nsec  -  nanoseconds
- 
-    procedure To_Struct_Timespec
-      (D       : Duration;
-       tv_sec  : out Interfaces.C.long;
-       tv_nsec : out Interfaces.C.long);
-    --  Convert a Duration value into the constituents of struct timespec.
-    --  Formal tv_sec denotes seconds and tv_nsecs denotes nanoseconds.
- 
-    procedure To_Struct_Tm
-      (T       : Time;
-       tm_year : out Interfaces.C.int;
-       tm_mon  : out Interfaces.C.int;
-       tm_day  : out Interfaces.C.int;
-       tm_hour : out Interfaces.C.int;
-       tm_min  : out Interfaces.C.int;
-       tm_sec  : out Interfaces.C.int);
-    --  Convert a Time value set in the Ada Epoch into the constituents of
-    --  struct tm. The ranges of the out formals are as follows:
- 
-    --     tm_year   --  years since 1900
-    --     tm_mon    --  months since January [0 .. 11]
-    --     tm_day    --  day of the month [1 .. 31]
-    --     tm_hour   --  hours since midnight [0 .. 24]
-    --     tm_min    --  minutes after the hour [0 .. 59]
-    --     tm_sec    --  seconds after the minute [0 .. 60]
-    --     tm_isdst  --  Daylight Savings Time flag [-1 .. 1]
- 
-    --  The input date is considered to be in UTC
- 
-    function To_Unix_Time (Ada_Time : Time) return Interfaces.C.long;
-    --  Convert a time value represented as number of time units since the Ada
-    --  implementation-defined Epoch to a value relative to the Unix Epoch. The
-    --  units of the result are seconds. Raises Time_Error if the result cannot
-    --  fit into a Time value.
- 
- end Ada.Calendar.Conversions;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-caldel.adb gcc-8.1.0/gcc/ada/a-caldel.adb
*** gcc-7.3.0/gcc/ada/a-caldel.adb	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/a-caldel.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,130 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
- --                                                                          --
- --                   A D A . C A L E N D A R . D E L A Y S                  --
- --                                                                          --
- --                                  B o d y                                 --
- --                                                                          --
- --             Copyright (C) 1991-1994, Florida State University            --
- --                     Copyright (C) 1995-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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/>.                                          --
- --                                                                          --
- -- GNARL was developed by the GNARL team at Florida State University.       --
- -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with System.OS_Primitives;
- with System.Soft_Links;
- with System.Traces;
- with System.Parameters;
- 
- package body Ada.Calendar.Delays is
- 
-    package OSP renames System.OS_Primitives;
-    package SSL renames System.Soft_Links;
- 
-    use type SSL.Timed_Delay_Call;
- 
-    use System.Traces;
- 
-    --  Earlier, System.Time_Operations was used to implement the following
-    --  operations. The idea was to avoid sucking in the tasking packages. This
-    --  did not work. Logically, we can't have it both ways. There is no way to
-    --  implement time delays that will have correct task semantics without
-    --  reference to the tasking run-time system. To achieve this goal, we now
-    --  use soft links.
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    procedure Timed_Delay_NT (Time : Duration; Mode : Integer);
-    --  Timed delay procedure used when no tasking is active
- 
-    ---------------
-    -- Delay_For --
-    ---------------
- 
-    procedure Delay_For (D : Duration) is
-    begin
-       if System.Parameters.Runtime_Traces then
-          Send_Trace_Info (W_Delay, D);
-       end if;
- 
-       SSL.Timed_Delay.all (Duration'Min (D, OSP.Max_Sensible_Delay),
-                            OSP.Relative);
- 
-       if System.Parameters.Runtime_Traces then
-          Send_Trace_Info (M_Delay, D);
-       end if;
-    end Delay_For;
- 
-    -----------------
-    -- Delay_Until --
-    -----------------
- 
-    procedure Delay_Until (T : Time) is
-       D : constant Duration := To_Duration (T);
- 
-    begin
-       if System.Parameters.Runtime_Traces then
-          Send_Trace_Info (WU_Delay, D);
-       end if;
- 
-       SSL.Timed_Delay.all (D, OSP.Absolute_Calendar);
- 
-       if System.Parameters.Runtime_Traces then
-          Send_Trace_Info (M_Delay, D);
-       end if;
-    end Delay_Until;
- 
-    --------------------
-    -- Timed_Delay_NT --
-    --------------------
- 
-    procedure Timed_Delay_NT (Time : Duration; Mode : Integer) is
-    begin
-       OSP.Timed_Delay (Time, Mode);
-    end Timed_Delay_NT;
- 
-    -----------------
-    -- To_Duration --
-    -----------------
- 
-    function To_Duration (T : Time) return Duration is
-    begin
-       --  Since time has multiple representations on different platforms, a
-       --  target independent operation in Ada.Calendar is used to perform
-       --  this conversion.
- 
-       return Delay_Operations.To_Duration (T);
-    end To_Duration;
- 
- begin
-    --  Set up the Timed_Delay soft link to the non tasking version if it has
-    --  not been already set. If tasking is present, Timed_Delay has already set
-    --  this soft link, or this will be overridden during the elaboration of
-    --  System.Tasking.Initialization
- 
-    if SSL.Timed_Delay = null then
-       SSL.Timed_Delay := Timed_Delay_NT'Access;
-    end if;
- 
- end Ada.Calendar.Delays;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-caldel.ads gcc-8.1.0/gcc/ada/a-caldel.ads
*** gcc-7.3.0/gcc/ada/a-caldel.ads	Mon Jan 20 15:23:37 2014
--- gcc-8.1.0/gcc/ada/a-caldel.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,53 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
- --                                                                          --
- --                   A D A . C A L E N D A R . D E L A Y S                  --
- --                                                                          --
- --                                  S p e c                                 --
- --                                                                          --
- --          Copyright (C) 1992-2013, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNARL is 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/>.                                          --
- --                                                                          --
- -- GNARL was developed by the GNARL team at Florida State University.       --
- -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This package implements Calendar.Time delays using protected objects
- 
- --  Note: the compiler generates direct calls to this interface, in the
- --  processing of time types.
- 
- package Ada.Calendar.Delays is
- 
-    procedure Delay_For (D : Duration);
-    --  Delay until an interval of length (at least) D seconds has passed, or
-    --  the task is aborted to at least the current ATC nesting level. This is
-    --  an abort completion point. The body of this procedure must perform all
-    --  the processing required for an abort point.
- 
-    procedure Delay_Until (T : Time);
-    --  Delay until Clock has reached (at least) time T, or the task is aborted
-    --  to at least the current ATC nesting level. The body of this procedure
-    --  must perform all the processing required for an abort point.
- 
-    function To_Duration (T : Time) return Duration;
-    --  Convert Time to Duration elapsed since UNIX epoch
- 
- end Ada.Calendar.Delays;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-calend.adb gcc-8.1.0/gcc/ada/a-calend.adb
*** gcc-7.3.0/gcc/ada/a-calend.adb	Mon Jan 23 11:51:26 2017
--- gcc-8.1.0/gcc/ada/a-calend.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,1580 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                         A D A . C A L E N D A R                          --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Unchecked_Conversion;
- 
- with Interfaces.C;
- 
- with System.OS_Primitives;
- 
- package body Ada.Calendar with
-   SPARK_Mode => Off
- is
- 
-    --------------------------
-    -- Implementation Notes --
-    --------------------------
- 
-    --  In complex algorithms, some variables of type Ada.Calendar.Time carry
-    --  suffix _S or _N to denote units of seconds or nanoseconds.
-    --
-    --  Because time is measured in different units and from different origins
-    --  on various targets, a system independent model is incorporated into
-    --  Ada.Calendar. The idea behind the design is to encapsulate all target
-    --  dependent machinery in a single package, thus providing a uniform
-    --  interface to all existing and any potential children.
- 
-    --     package Ada.Calendar
-    --        procedure Split (5 parameters) -------+
-    --                                              | Call from local routine
-    --     private                                  |
-    --        package Formatting_Operations         |
-    --           procedure Split (11 parameters) <--+
-    --        end Formatting_Operations             |
-    --     end Ada.Calendar                         |
-    --                                              |
-    --     package Ada.Calendar.Formatting          | Call from child routine
-    --        procedure Split (9 or 10 parameters) -+
-    --     end Ada.Calendar.Formatting
- 
-    --  The behavior of the interfacing routines is controlled via various
-    --  flags. All new Ada 2005 types from children of Ada.Calendar are
-    --  emulated by a similar type. For instance, type Day_Number is replaced
-    --  by Integer in various routines. One ramification of this model is that
-    --  the caller site must perform validity checks on returned results.
-    --  The end result of this model is the lack of target specific files per
-    --  child of Ada.Calendar (e.g. a-calfor).
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    procedure Check_Within_Time_Bounds (T : Time_Rep);
-    --  Ensure that a time representation value falls withing the bounds of Ada
-    --  time. Leap seconds support is taken into account.
- 
-    procedure Cumulative_Leap_Seconds
-      (Start_Date    : Time_Rep;
-       End_Date      : Time_Rep;
-       Elapsed_Leaps : out Natural;
-       Next_Leap     : out Time_Rep);
-    --  Elapsed_Leaps is the sum of the leap seconds that have occurred on or
-    --  after Start_Date and before (strictly before) End_Date. Next_Leap_Sec
-    --  represents the next leap second occurrence on or after End_Date. If
-    --  there are no leaps seconds after End_Date, End_Of_Time is returned.
-    --  End_Of_Time can be used as End_Date to count all the leap seconds that
-    --  have occurred on or after Start_Date.
-    --
-    --  Note: Any sub seconds of Start_Date and End_Date are discarded before
-    --  the calculations are done. For instance: if 113 seconds is a leap
-    --  second (it isn't) and 113.5 is input as an End_Date, the leap second
-    --  at 113 will not be counted in Leaps_Between, but it will be returned
-    --  as Next_Leap_Sec. Thus, if the caller wants to know if the End_Date is
-    --  a leap second, the comparison should be:
-    --
-    --     End_Date >= Next_Leap_Sec;
-    --
-    --  After_Last_Leap is designed so that this comparison works without
-    --  having to first check if Next_Leap_Sec is a valid leap second.
- 
-    function Duration_To_Time_Rep is
-      new Ada.Unchecked_Conversion (Duration, Time_Rep);
-    --  Convert a duration value into a time representation value
- 
-    function Time_Rep_To_Duration is
-      new Ada.Unchecked_Conversion (Time_Rep, Duration);
-    --  Convert a time representation value into a duration value
- 
-    function UTC_Time_Offset
-      (Date        : Time;
-       Is_Historic : Boolean) return Long_Integer;
-    --  This routine acts as an Ada wrapper around __gnat_localtime_tzoff which
-    --  in turn utilizes various OS-dependent mechanisms to calculate the time
-    --  zone offset of a date. Formal parameter Date represents an arbitrary
-    --  time stamp, either in the past, now, or in the future. If the flag
-    --  Is_Historic is set, this routine would try to calculate to the best of
-    --  the OS's abilities the time zone offset that was or will be in effect
-    --  on Date. If the flag is set to False, the routine returns the current
-    --  time zone with Date effectively set to Clock.
-    --
-    --  NOTE: Targets which support localtime_r will aways return a historic
-    --  time zone even if flag Is_Historic is set to False because this is how
-    --  localtime_r operates.
- 
-    -----------------
-    -- Local Types --
-    -----------------
- 
-    --  An integer time duration. The type is used whenever a positive elapsed
-    --  duration is needed, for instance when splitting a time value. Here is
-    --  how Time_Rep and Time_Dur are related:
- 
-    --            'First  Ada_Low                  Ada_High  'Last
-    --  Time_Rep: +-------+------------------------+---------+
-    --  Time_Dur:         +------------------------+---------+
-    --                    0                                  'Last
- 
-    type Time_Dur is range 0 .. 2 ** 63 - 1;
- 
-    --------------------------
-    -- Leap seconds control --
-    --------------------------
- 
-    Flag : Integer;
-    pragma Import (C, Flag, "__gl_leap_seconds_support");
-    --  This imported value is used to determine whether the compilation had
-    --  binder flag "-y" present which enables leap seconds. A value of zero
-    --  signifies no leap seconds support while a value of one enables support.
- 
-    Leap_Support : constant Boolean := (Flag = 1);
-    --  Flag to controls the usage of leap seconds in all Ada.Calendar routines
- 
-    Leap_Seconds_Count : constant Natural := 25;
- 
-    ---------------------
-    -- Local Constants --
-    ---------------------
- 
-    Ada_Min_Year          : constant Year_Number := Year_Number'First;
-    Secs_In_Four_Years    : constant := (3 * 365 + 366) * Secs_In_Day;
-    Secs_In_Non_Leap_Year : constant := 365 * Secs_In_Day;
-    Nanos_In_Four_Years   : constant := Secs_In_Four_Years * Nano;
- 
-    --  Lower and upper bound of Ada time. The zero (0) value of type Time is
-    --  positioned at year 2150. Note that the lower and upper bound account
-    --  for the non-leap centennial years.
- 
-    Ada_Low  : constant Time_Rep := -(61 * 366 + 188 * 365) * Nanos_In_Day;
-    Ada_High : constant Time_Rep :=  (60 * 366 + 190 * 365) * Nanos_In_Day;
- 
-    --  Even though the upper bound of time is 2399-12-31 23:59:59.999999999
-    --  UTC, it must be increased to include all leap seconds.
- 
-    Ada_High_And_Leaps : constant Time_Rep :=
-      Ada_High + Time_Rep (Leap_Seconds_Count) * Nano;
- 
-    --  Two constants used in the calculations of elapsed leap seconds.
-    --  End_Of_Time is later than Ada_High in time zone -28. Start_Of_Time
-    --  is earlier than Ada_Low in time zone +28.
- 
-    End_Of_Time   : constant Time_Rep :=
-      Ada_High + Time_Rep (3) * Nanos_In_Day;
-    Start_Of_Time : constant Time_Rep :=
-      Ada_Low - Time_Rep (3) * Nanos_In_Day;
- 
-    --  The Unix lower time bound expressed as nanoseconds since the start of
-    --  Ada time in UTC.
- 
-    Unix_Min : constant Time_Rep :=
-      Ada_Low + Time_Rep (17 * 366 + 52 * 365) * Nanos_In_Day;
- 
-    --  The Unix upper time bound expressed as nanoseconds since the start of
-    --  Ada time in UTC.
- 
-    Unix_Max : constant Time_Rep :=
-      Ada_Low + Time_Rep (34 * 366 + 102 * 365) * Nanos_In_Day +
-      Time_Rep (Leap_Seconds_Count) * Nano;
- 
-    Epoch_Offset : constant Time_Rep := (136 * 365 + 44 * 366) * Nanos_In_Day;
-    --  The difference between 2150-1-1 UTC and 1970-1-1 UTC expressed in
-    --  nanoseconds. Note that year 2100 is non-leap.
- 
-    Cumulative_Days_Before_Month :
-      constant array (Month_Number) of Natural :=
-        (0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334);
- 
-    --  The following table contains the hard time values of all existing leap
-    --  seconds. The values are produced by the utility program xleaps.adb. This
-    --  must be updated when additional leap second times are defined.
- 
-    Leap_Second_Times : constant array (1 .. Leap_Seconds_Count) of Time_Rep :=
-      (-5601484800000000000,
-       -5585587199000000000,
-       -5554051198000000000,
-       -5522515197000000000,
-       -5490979196000000000,
-       -5459356795000000000,
-       -5427820794000000000,
-       -5396284793000000000,
-       -5364748792000000000,
-       -5317487991000000000,
-       -5285951990000000000,
-       -5254415989000000000,
-       -5191257588000000000,
-       -5112287987000000000,
-       -5049129586000000000,
-       -5017593585000000000,
-       -4970332784000000000,
-       -4938796783000000000,
-       -4907260782000000000,
-       -4859827181000000000,
-       -4812566380000000000,
-       -4765132779000000000,
-       -4544207978000000000,
-       -4449513577000000000,
-       -4339180776000000000);
- 
-    ---------
-    -- "+" --
-    ---------
- 
-    function "+" (Left : Time; Right : Duration) return Time is
-       pragma Unsuppress (Overflow_Check);
-       Left_N : constant Time_Rep := Time_Rep (Left);
-    begin
-       return Time (Left_N + Duration_To_Time_Rep (Right));
-    exception
-       when Constraint_Error =>
-          raise Time_Error;
-    end "+";
- 
-    function "+" (Left : Duration; Right : Time) return Time is
-    begin
-       return Right + Left;
-    end "+";
- 
-    ---------
-    -- "-" --
-    ---------
- 
-    function "-" (Left : Time; Right : Duration) return Time is
-       pragma Unsuppress (Overflow_Check);
-       Left_N : constant Time_Rep := Time_Rep (Left);
-    begin
-       return Time (Left_N - Duration_To_Time_Rep (Right));
-    exception
-       when Constraint_Error =>
-          raise Time_Error;
-    end "-";
- 
-    function "-" (Left : Time; Right : Time) return Duration is
-       pragma Unsuppress (Overflow_Check);
- 
-       Dur_Low  : constant Time_Rep := Duration_To_Time_Rep (Duration'First);
-       Dur_High : constant Time_Rep := Duration_To_Time_Rep (Duration'Last);
-       --  The bounds of type Duration expressed as time representations
- 
-       Res_N : Time_Rep;
- 
-    begin
-       Res_N := Time_Rep (Left) - Time_Rep (Right);
- 
-       --  Due to the extended range of Ada time, "-" is capable of producing
-       --  results which may exceed the range of Duration. In order to prevent
-       --  the generation of bogus values by the Unchecked_Conversion, we apply
-       --  the following check.
- 
-       if Res_N < Dur_Low or else Res_N > Dur_High then
-          raise Time_Error;
-       end if;
- 
-       return Time_Rep_To_Duration (Res_N);
- 
-    exception
-       when Constraint_Error =>
-          raise Time_Error;
-    end "-";
- 
-    ---------
-    -- "<" --
-    ---------
- 
-    function "<" (Left, Right : Time) return Boolean is
-    begin
-       return Time_Rep (Left) < Time_Rep (Right);
-    end "<";
- 
-    ----------
-    -- "<=" --
-    ----------
- 
-    function "<=" (Left, Right : Time) return Boolean is
-    begin
-       return Time_Rep (Left) <= Time_Rep (Right);
-    end "<=";
- 
-    ---------
-    -- ">" --
-    ---------
- 
-    function ">" (Left, Right : Time) return Boolean is
-    begin
-       return Time_Rep (Left) > Time_Rep (Right);
-    end ">";
- 
-    ----------
-    -- ">=" --
-    ----------
- 
-    function ">=" (Left, Right : Time) return Boolean is
-    begin
-       return Time_Rep (Left) >= Time_Rep (Right);
-    end ">=";
- 
-    ------------------------------
-    -- Check_Within_Time_Bounds --
-    ------------------------------
- 
-    procedure Check_Within_Time_Bounds (T : Time_Rep) is
-    begin
-       if Leap_Support then
-          if T < Ada_Low or else T > Ada_High_And_Leaps then
-             raise Time_Error;
-          end if;
-       else
-          if T < Ada_Low or else T > Ada_High then
-             raise Time_Error;
-          end if;
-       end if;
-    end Check_Within_Time_Bounds;
- 
-    -----------
-    -- Clock --
-    -----------
- 
-    function Clock return Time is
-       Elapsed_Leaps : Natural;
-       Next_Leap_N   : Time_Rep;
- 
-       --  The system clock returns the time in UTC since the Unix Epoch of
-       --  1970-01-01 00:00:00.0. We perform an origin shift to the Ada Epoch
-       --  by adding the number of nanoseconds between the two origins.
- 
-       Res_N : Time_Rep :=
-         Duration_To_Time_Rep (System.OS_Primitives.Clock) + Unix_Min;
- 
-    begin
-       --  If the target supports leap seconds, determine the number of leap
-       --  seconds elapsed until this moment.
- 
-       if Leap_Support then
-          Cumulative_Leap_Seconds
-            (Start_Of_Time, Res_N, Elapsed_Leaps, Next_Leap_N);
- 
-          --  The system clock may fall exactly on a leap second
- 
-          if Res_N >= Next_Leap_N then
-             Elapsed_Leaps := Elapsed_Leaps + 1;
-          end if;
- 
-       --  The target does not support leap seconds
- 
-       else
-          Elapsed_Leaps := 0;
-       end if;
- 
-       Res_N := Res_N + Time_Rep (Elapsed_Leaps) * Nano;
- 
-       return Time (Res_N);
-    end Clock;
- 
-    -----------------------------
-    -- Cumulative_Leap_Seconds --
-    -----------------------------
- 
-    procedure Cumulative_Leap_Seconds
-      (Start_Date    : Time_Rep;
-       End_Date      : Time_Rep;
-       Elapsed_Leaps : out Natural;
-       Next_Leap     : out Time_Rep)
-    is
-       End_Index   : Positive;
-       End_T       : Time_Rep := End_Date;
-       Start_Index : Positive;
-       Start_T     : Time_Rep := Start_Date;
- 
-    begin
-       --  Both input dates must be normalized to UTC
- 
-       pragma Assert (Leap_Support and then End_Date >= Start_Date);
- 
-       Next_Leap := End_Of_Time;
- 
-       --  Make sure that the end date does not exceed the upper bound
-       --  of Ada time.
- 
-       if End_Date > Ada_High then
-          End_T := Ada_High;
-       end if;
- 
-       --  Remove the sub seconds from both dates
- 
-       Start_T := Start_T - (Start_T mod Nano);
-       End_T   := End_T   - (End_T   mod Nano);
- 
-       --  Some trivial cases:
-       --                     Leap 1 . . . Leap N
-       --  ---+========+------+############+-------+========+-----
-       --     Start_T  End_T                       Start_T  End_T
- 
-       if End_T < Leap_Second_Times (1) then
-          Elapsed_Leaps := 0;
-          Next_Leap     := Leap_Second_Times (1);
-          return;
- 
-       elsif Start_T > Leap_Second_Times (Leap_Seconds_Count) then
-          Elapsed_Leaps := 0;
-          Next_Leap     := End_Of_Time;
-          return;
-       end if;
- 
-       --  Perform the calculations only if the start date is within the leap
-       --  second occurrences table.
- 
-       if Start_T <= Leap_Second_Times (Leap_Seconds_Count) then
- 
-          --    1    2                  N - 1   N
-          --  +----+----+--  . . .  --+-------+---+
-          --  | T1 | T2 |             | N - 1 | N |
-          --  +----+----+--  . . .  --+-------+---+
-          --         ^                   ^
-          --         | Start_Index       | End_Index
-          --         +-------------------+
-          --             Leaps_Between
- 
-          --  The idea behind the algorithm is to iterate and find two
-          --  closest dates which are after Start_T and End_T. Their
-          --  corresponding index difference denotes the number of leap
-          --  seconds elapsed.
- 
-          Start_Index := 1;
-          loop
-             exit when Leap_Second_Times (Start_Index) >= Start_T;
-             Start_Index := Start_Index + 1;
-          end loop;
- 
-          End_Index := Start_Index;
-          loop
-             exit when End_Index > Leap_Seconds_Count
-               or else Leap_Second_Times (End_Index) >= End_T;
-             End_Index := End_Index + 1;
-          end loop;
- 
-          if End_Index <= Leap_Seconds_Count then
-             Next_Leap := Leap_Second_Times (End_Index);
-          end if;
- 
-          Elapsed_Leaps := End_Index - Start_Index;
- 
-       else
-          Elapsed_Leaps := 0;
-       end if;
-    end Cumulative_Leap_Seconds;
- 
-    ---------
-    -- Day --
-    ---------
- 
-    function Day (Date : Time) return Day_Number is
-       D : Day_Number;
-       Y : Year_Number;
-       M : Month_Number;
-       S : Day_Duration;
-       pragma Unreferenced (Y, M, S);
-    begin
-       Split (Date, Y, M, D, S);
-       return D;
-    end Day;
- 
-    -------------
-    -- Is_Leap --
-    -------------
- 
-    function Is_Leap (Year : Year_Number) return Boolean is
-    begin
-       --  Leap centennial years
- 
-       if Year mod 400 = 0 then
-          return True;
- 
-       --  Non-leap centennial years
- 
-       elsif Year mod 100 = 0 then
-          return False;
- 
-       --  Regular years
- 
-       else
-          return Year mod 4 = 0;
-       end if;
-    end Is_Leap;
- 
-    -----------
-    -- Month --
-    -----------
- 
-    function Month (Date : Time) return Month_Number is
-       Y : Year_Number;
-       M : Month_Number;
-       D : Day_Number;
-       S : Day_Duration;
-       pragma Unreferenced (Y, D, S);
-    begin
-       Split (Date, Y, M, D, S);
-       return M;
-    end Month;
- 
-    -------------
-    -- Seconds --
-    -------------
- 
-    function Seconds (Date : Time) return Day_Duration is
-       Y : Year_Number;
-       M : Month_Number;
-       D : Day_Number;
-       S : Day_Duration;
-       pragma Unreferenced (Y, M, D);
-    begin
-       Split (Date, Y, M, D, S);
-       return S;
-    end Seconds;
- 
-    -----------
-    -- Split --
-    -----------
- 
-    procedure Split
-      (Date    : Time;
-       Year    : out Year_Number;
-       Month   : out Month_Number;
-       Day     : out Day_Number;
-       Seconds : out Day_Duration)
-    is
-       H  : Integer;
-       M  : Integer;
-       Se : Integer;
-       Ss : Duration;
-       Le : Boolean;
- 
-       pragma Unreferenced (H, M, Se, Ss, Le);
- 
-    begin
-       --  Even though the input time zone is UTC (0), the flag Use_TZ will
-       --  ensure that Split picks up the local time zone.
- 
-       Formatting_Operations.Split
-         (Date        => Date,
-          Year        => Year,
-          Month       => Month,
-          Day         => Day,
-          Day_Secs    => Seconds,
-          Hour        => H,
-          Minute      => M,
-          Second      => Se,
-          Sub_Sec     => Ss,
-          Leap_Sec    => Le,
-          Use_TZ      => False,
-          Is_Historic => True,
-          Time_Zone   => 0);
- 
-       --  Validity checks
- 
-       if not Year'Valid    or else
-          not Month'Valid   or else
-          not Day'Valid     or else
-          not Seconds'Valid
-       then
-          raise Time_Error;
-       end if;
-    end Split;
- 
-    -------------
-    -- Time_Of --
-    -------------
- 
-    function Time_Of
-      (Year    : Year_Number;
-       Month   : Month_Number;
-       Day     : Day_Number;
-       Seconds : Day_Duration := 0.0) return Time
-    is
-       --  The values in the following constants are irrelevant, they are just
-       --  placeholders; the choice of constructing a Day_Duration value is
-       --  controlled by the Use_Day_Secs flag.
- 
-       H  : constant Integer := 1;
-       M  : constant Integer := 1;
-       Se : constant Integer := 1;
-       Ss : constant Duration := 0.1;
- 
-    begin
-       --  Validity checks
- 
-       if not Year'Valid    or else
-          not Month'Valid   or else
-          not Day'Valid     or else
-          not Seconds'Valid
-       then
-          raise Time_Error;
-       end if;
- 
-       --  Even though the input time zone is UTC (0), the flag Use_TZ will
-       --  ensure that Split picks up the local time zone.
- 
-       return
-         Formatting_Operations.Time_Of
-           (Year         => Year,
-            Month        => Month,
-            Day          => Day,
-            Day_Secs     => Seconds,
-            Hour         => H,
-            Minute       => M,
-            Second       => Se,
-            Sub_Sec      => Ss,
-            Leap_Sec     => False,
-            Use_Day_Secs => True,
-            Use_TZ       => False,
-            Is_Historic  => True,
-            Time_Zone    => 0);
-    end Time_Of;
- 
-    ---------------------
-    -- UTC_Time_Offset --
-    ---------------------
- 
-    function UTC_Time_Offset
-      (Date        : Time;
-       Is_Historic : Boolean) return Long_Integer
-    is
-       --  The following constants denote February 28 during non-leap centennial
-       --  years, the units are nanoseconds.
- 
-       T_2100_2_28 : constant Time_Rep := Ada_Low +
-                       (Time_Rep (49 * 366 + 150 * 365 + 59) * Secs_In_Day +
-                        Time_Rep (Leap_Seconds_Count)) * Nano;
- 
-       T_2200_2_28 : constant Time_Rep := Ada_Low +
-                       (Time_Rep (73 * 366 + 226 * 365 + 59) * Secs_In_Day +
-                        Time_Rep (Leap_Seconds_Count)) * Nano;
- 
-       T_2300_2_28 : constant Time_Rep := Ada_Low +
-                       (Time_Rep (97 * 366 + 302 * 365 + 59) * Secs_In_Day +
-                        Time_Rep (Leap_Seconds_Count)) * Nano;
- 
-       --  56 years (14 leap years + 42 non-leap years) in nanoseconds:
- 
-       Nanos_In_56_Years : constant := (14 * 366 + 42 * 365) * Nanos_In_Day;
- 
-       type int_Pointer  is access all Interfaces.C.int;
-       type long_Pointer is access all Interfaces.C.long;
- 
-       type time_t is
-         range -(2 ** (Standard'Address_Size - Integer'(1))) ..
-               +(2 ** (Standard'Address_Size - Integer'(1)) - 1);
-       type time_t_Pointer is access all time_t;
- 
-       procedure localtime_tzoff
-         (timer       : time_t_Pointer;
-          is_historic : int_Pointer;
-          off         : long_Pointer);
-       pragma Import (C, localtime_tzoff, "__gnat_localtime_tzoff");
-       --  This routine is a interfacing wrapper around the library function
-       --  __gnat_localtime_tzoff. Parameter 'timer' represents a Unix-based
-       --  time equivalent of the input date. If flag 'is_historic' is set, this
-       --  routine would try to calculate to the best of the OS's abilities the
-       --  time zone offset that was or will be in effect on 'timer'. If the
-       --  flag is set to False, the routine returns the current time zone
-       --  regardless of what 'timer' designates. Parameter 'off' captures the
-       --  UTC offset of 'timer'.
- 
-       Adj_Cent : Integer;
-       Date_N   : Time_Rep;
-       Flag     : aliased Interfaces.C.int;
-       Offset   : aliased Interfaces.C.long;
-       Secs_T   : aliased time_t;
- 
-    --  Start of processing for UTC_Time_Offset
- 
-    begin
-       Date_N := Time_Rep (Date);
- 
-       --  Dates which are 56 years apart fall on the same day, day light saving
-       --  and so on. Non-leap centennial years violate this rule by one day and
-       --  as a consequence, special adjustment is needed.
- 
-       Adj_Cent :=
-         (if    Date_N <= T_2100_2_28 then 0
-          elsif Date_N <= T_2200_2_28 then 1
-          elsif Date_N <= T_2300_2_28 then 2
-          else                             3);
- 
-       if Adj_Cent > 0 then
-          Date_N := Date_N - Time_Rep (Adj_Cent) * Nanos_In_Day;
-       end if;
- 
-       --  Shift the date within bounds of Unix time
- 
-       while Date_N < Unix_Min loop
-          Date_N := Date_N + Nanos_In_56_Years;
-       end loop;
- 
-       while Date_N >= Unix_Max loop
-          Date_N := Date_N - Nanos_In_56_Years;
-       end loop;
- 
-       --  Perform a shift in origins from Ada to Unix
- 
-       Date_N := Date_N - Unix_Min;
- 
-       --  Convert the date into seconds
- 
-       Secs_T := time_t (Date_N / Nano);
- 
-       --  Determine whether to treat the input date as historical or not. A
-       --  value of "0" signifies that the date is NOT historic.
- 
-       Flag := (if Is_Historic then 1 else 0);
- 
-       localtime_tzoff
-         (Secs_T'Unchecked_Access,
-          Flag'Unchecked_Access,
-          Offset'Unchecked_Access);
- 
-       return Long_Integer (Offset);
-    end UTC_Time_Offset;
- 
-    ----------
-    -- Year --
-    ----------
- 
-    function Year (Date : Time) return Year_Number is
-       Y : Year_Number;
-       M : Month_Number;
-       D : Day_Number;
-       S : Day_Duration;
-       pragma Unreferenced (M, D, S);
-    begin
-       Split (Date, Y, M, D, S);
-       return Y;
-    end Year;
- 
-    --  The following packages assume that Time is a signed 64 bit integer
-    --  type, the units are nanoseconds and the origin is the start of Ada
-    --  time (1901-01-01 00:00:00.0 UTC).
- 
-    ---------------------------
-    -- Arithmetic_Operations --
-    ---------------------------
- 
-    package body Arithmetic_Operations is
- 
-       ---------
-       -- Add --
-       ---------
- 
-       function Add (Date : Time; Days : Long_Integer) return Time is
-          pragma Unsuppress (Overflow_Check);
-          Date_N : constant Time_Rep := Time_Rep (Date);
-       begin
-          return Time (Date_N + Time_Rep (Days) * Nanos_In_Day);
-       exception
-          when Constraint_Error =>
-             raise Time_Error;
-       end Add;
- 
-       ----------------
-       -- Difference --
-       ----------------
- 
-       procedure Difference
-         (Left         : Time;
-          Right        : Time;
-          Days         : out Long_Integer;
-          Seconds      : out Duration;
-          Leap_Seconds : out Integer)
-       is
-          Res_Dur       : Time_Dur;
-          Earlier       : Time_Rep;
-          Elapsed_Leaps : Natural;
-          Later         : Time_Rep;
-          Negate        : Boolean := False;
-          Next_Leap_N   : Time_Rep;
-          Sub_Secs      : Duration;
-          Sub_Secs_Diff : Time_Rep;
- 
-       begin
-          --  Both input time values are assumed to be in UTC
- 
-          if Left >= Right then
-             Later   := Time_Rep (Left);
-             Earlier := Time_Rep (Right);
-          else
-             Later   := Time_Rep (Right);
-             Earlier := Time_Rep (Left);
-             Negate  := True;
-          end if;
- 
-          --  If the target supports leap seconds, process them
- 
-          if Leap_Support then
-             Cumulative_Leap_Seconds
-               (Earlier, Later, Elapsed_Leaps, Next_Leap_N);
- 
-             if Later >= Next_Leap_N then
-                Elapsed_Leaps := Elapsed_Leaps + 1;
-             end if;
- 
-          --  The target does not support leap seconds
- 
-          else
-             Elapsed_Leaps := 0;
-          end if;
- 
-          --  Sub seconds processing. We add the resulting difference to one
-          --  of the input dates in order to account for any potential rounding
-          --  of the difference in the next step.
- 
-          Sub_Secs_Diff := Later mod Nano - Earlier mod Nano;
-          Earlier       := Earlier + Sub_Secs_Diff;
-          Sub_Secs      := Duration (Sub_Secs_Diff) / Nano_F;
- 
-          --  Difference processing. This operation should be able to calculate
-          --  the difference between opposite values which are close to the end
-          --  and start of Ada time. To accommodate the large range, we convert
-          --  to seconds. This action may potentially round the two values and
-          --  either add or drop a second. We compensate for this issue in the
-          --  previous step.
- 
-          Res_Dur :=
-            Time_Dur (Later / Nano - Earlier / Nano) - Time_Dur (Elapsed_Leaps);
- 
-          Days         := Long_Integer (Res_Dur / Secs_In_Day);
-          Seconds      := Duration (Res_Dur mod Secs_In_Day) + Sub_Secs;
-          Leap_Seconds := Integer (Elapsed_Leaps);
- 
-          if Negate then
-             Days    := -Days;
-             Seconds := -Seconds;
- 
-             if Leap_Seconds /= 0 then
-                Leap_Seconds := -Leap_Seconds;
-             end if;
-          end if;
-       end Difference;
- 
-       --------------
-       -- Subtract --
-       --------------
- 
-       function Subtract (Date : Time; Days : Long_Integer) return Time is
-          pragma Unsuppress (Overflow_Check);
-          Date_N : constant Time_Rep := Time_Rep (Date);
-       begin
-          return Time (Date_N - Time_Rep (Days) * Nanos_In_Day);
-       exception
-          when Constraint_Error =>
-             raise Time_Error;
-       end Subtract;
- 
-    end Arithmetic_Operations;
- 
-    ---------------------------
-    -- Conversion_Operations --
-    ---------------------------
- 
-    package body Conversion_Operations is
- 
-       -----------------
-       -- To_Ada_Time --
-       -----------------
- 
-       function To_Ada_Time (Unix_Time : Long_Integer) return Time is
-          pragma Unsuppress (Overflow_Check);
-          Unix_Rep : constant Time_Rep := Time_Rep (Unix_Time) * Nano;
-       begin
-          return Time (Unix_Rep - Epoch_Offset);
-       exception
-          when Constraint_Error =>
-             raise Time_Error;
-       end To_Ada_Time;
- 
-       -----------------
-       -- To_Ada_Time --
-       -----------------
- 
-       function To_Ada_Time
-         (tm_year  : Integer;
-          tm_mon   : Integer;
-          tm_day   : Integer;
-          tm_hour  : Integer;
-          tm_min   : Integer;
-          tm_sec   : Integer;
-          tm_isdst : Integer) return Time
-       is
-          pragma Unsuppress (Overflow_Check);
-          Year   : Year_Number;
-          Month  : Month_Number;
-          Day    : Day_Number;
-          Second : Integer;
-          Leap   : Boolean;
-          Result : Time_Rep;
- 
-       begin
-          --  Input processing
- 
-          Year  := Year_Number (1900 + tm_year);
-          Month := Month_Number (1 + tm_mon);
-          Day   := Day_Number (tm_day);
- 
-          --  Step 1: Validity checks of input values
- 
-          if not Year'Valid or else not Month'Valid or else not Day'Valid
-            or else tm_hour  not in 0 .. 24
-            or else tm_min   not in 0 .. 59
-            or else tm_sec   not in 0 .. 60
-            or else tm_isdst not in -1 .. 1
-          then
-             raise Time_Error;
-          end if;
- 
-          --  Step 2: Potential leap second
- 
-          if tm_sec = 60 then
-             Leap   := True;
-             Second := 59;
-          else
-             Leap   := False;
-             Second := tm_sec;
-          end if;
- 
-          --  Step 3: Calculate the time value
- 
-          Result :=
-            Time_Rep
-              (Formatting_Operations.Time_Of
-                (Year         => Year,
-                 Month        => Month,
-                 Day          => Day,
-                 Day_Secs     => 0.0,      --  Time is given in h:m:s
-                 Hour         => tm_hour,
-                 Minute       => tm_min,
-                 Second       => Second,
-                 Sub_Sec      => 0.0,      --  No precise sub second given
-                 Leap_Sec     => Leap,
-                 Use_Day_Secs => False,    --  Time is given in h:m:s
-                 Use_TZ       => True,     --  Force usage of explicit time zone
-                 Is_Historic  => True,
-                 Time_Zone    => 0));      --  Place the value in UTC
- 
-          --  Step 4: Daylight Savings Time
- 
-          if tm_isdst = 1 then
-             Result := Result + Time_Rep (3_600) * Nano;
-          end if;
- 
-          return Time (Result);
- 
-       exception
-          when Constraint_Error =>
-             raise Time_Error;
-       end To_Ada_Time;
- 
-       -----------------
-       -- To_Duration --
-       -----------------
- 
-       function To_Duration
-         (tv_sec  : Long_Integer;
-          tv_nsec : Long_Integer) return Duration
-       is
-          pragma Unsuppress (Overflow_Check);
-       begin
-          return Duration (tv_sec) + Duration (tv_nsec) / Nano_F;
-       end To_Duration;
- 
-       ------------------------
-       -- To_Struct_Timespec --
-       ------------------------
- 
-       procedure To_Struct_Timespec
-         (D       : Duration;
-          tv_sec  : out Long_Integer;
-          tv_nsec : out Long_Integer)
-       is
-          pragma Unsuppress (Overflow_Check);
-          Secs      : Duration;
-          Nano_Secs : Duration;
- 
-       begin
-          --  Seconds extraction, avoid potential rounding errors
- 
-          Secs   := D - 0.5;
-          tv_sec := Long_Integer (Secs);
- 
-          --  Nanoseconds extraction
- 
-          Nano_Secs := D - Duration (tv_sec);
-          tv_nsec := Long_Integer (Nano_Secs * Nano);
-       end To_Struct_Timespec;
- 
-       ------------------
-       -- To_Struct_Tm --
-       ------------------
- 
-       procedure To_Struct_Tm
-         (T       : Time;
-          tm_year : out Integer;
-          tm_mon  : out Integer;
-          tm_day  : out Integer;
-          tm_hour : out Integer;
-          tm_min  : out Integer;
-          tm_sec  : out Integer)
-       is
-          pragma Unsuppress (Overflow_Check);
-          Year      : Year_Number;
-          Month     : Month_Number;
-          Second    : Integer;
-          Day_Secs  : Day_Duration;
-          Sub_Sec   : Duration;
-          Leap_Sec  : Boolean;
- 
-       begin
-          --  Step 1: Split the input time
- 
-          Formatting_Operations.Split
-            (Date        => T,
-             Year        => Year,
-             Month       => Month,
-             Day         => tm_day,
-             Day_Secs    => Day_Secs,
-             Hour        => tm_hour,
-             Minute      => tm_min,
-             Second      => Second,
-             Sub_Sec     => Sub_Sec,
-             Leap_Sec    => Leap_Sec,
-             Use_TZ      => True,
-             Is_Historic => False,
-             Time_Zone   => 0);
- 
-          --  Step 2: Correct the year and month
- 
-          tm_year := Year - 1900;
-          tm_mon  := Month - 1;
- 
-          --  Step 3: Handle leap second occurrences
- 
-          tm_sec := (if Leap_Sec then 60 else Second);
-       end To_Struct_Tm;
- 
-       ------------------
-       -- To_Unix_Time --
-       ------------------
- 
-       function To_Unix_Time (Ada_Time : Time) return Long_Integer is
-          pragma Unsuppress (Overflow_Check);
-          Ada_Rep : constant Time_Rep := Time_Rep (Ada_Time);
-       begin
-          return Long_Integer ((Ada_Rep + Epoch_Offset) / Nano);
-       exception
-          when Constraint_Error =>
-             raise Time_Error;
-       end To_Unix_Time;
-    end Conversion_Operations;
- 
-    ----------------------
-    -- Delay_Operations --
-    ----------------------
- 
-    package body Delay_Operations is
- 
-       -----------------
-       -- To_Duration --
-       -----------------
- 
-       function To_Duration (Date : Time) return Duration is
-          pragma Unsuppress (Overflow_Check);
- 
-          Safe_Ada_High : constant Time_Rep := Ada_High - Epoch_Offset;
-          --  This value represents a "safe" end of time. In order to perform a
-          --  proper conversion to Unix duration, we will have to shift origins
-          --  at one point. For very distant dates, this means an overflow check
-          --  failure. To prevent this, the function returns the "safe" end of
-          --  time (roughly 2219) which is still distant enough.
- 
-          Elapsed_Leaps : Natural;
-          Next_Leap_N   : Time_Rep;
-          Res_N         : Time_Rep;
- 
-       begin
-          Res_N := Time_Rep (Date);
- 
-          --  Step 1: If the target supports leap seconds, remove any leap
-          --  seconds elapsed up to the input date.
- 
-          if Leap_Support then
-             Cumulative_Leap_Seconds
-               (Start_Of_Time, Res_N, Elapsed_Leaps, Next_Leap_N);
- 
-             --  The input time value may fall on a leap second occurrence
- 
-             if Res_N >= Next_Leap_N then
-                Elapsed_Leaps := Elapsed_Leaps + 1;
-             end if;
- 
-          --  The target does not support leap seconds
- 
-          else
-             Elapsed_Leaps := 0;
-          end if;
- 
-          Res_N := Res_N - Time_Rep (Elapsed_Leaps) * Nano;
- 
-          --  Step 2: Perform a shift in origins to obtain a Unix equivalent of
-          --  the input. Guard against very large delay values such as the end
-          --  of time since the computation will overflow.
- 
-          Res_N := (if Res_N > Safe_Ada_High then Safe_Ada_High
-                                             else Res_N + Epoch_Offset);
- 
-          return Time_Rep_To_Duration (Res_N);
-       end To_Duration;
- 
-    end Delay_Operations;
- 
-    ---------------------------
-    -- Formatting_Operations --
-    ---------------------------
- 
-    package body Formatting_Operations is
- 
-       -----------------
-       -- Day_Of_Week --
-       -----------------
- 
-       function Day_Of_Week (Date : Time) return Integer is
-          Date_N    : constant Time_Rep := Time_Rep (Date);
-          Time_Zone : constant Long_Integer := UTC_Time_Offset (Date, True);
-          Ada_Low_N : Time_Rep;
-          Day_Count : Long_Integer;
-          Day_Dur   : Time_Dur;
-          High_N    : Time_Rep;
-          Low_N     : Time_Rep;
- 
-       begin
-          --  As declared, the Ada Epoch is set in UTC. For this calculation to
-          --  work properly, both the Epoch and the input date must be in the
-          --  same time zone. The following places the Epoch in the input date's
-          --  time zone.
- 
-          Ada_Low_N := Ada_Low - Time_Rep (Time_Zone) * Nano;
- 
-          if Date_N > Ada_Low_N then
-             High_N := Date_N;
-             Low_N  := Ada_Low_N;
-          else
-             High_N := Ada_Low_N;
-             Low_N  := Date_N;
-          end if;
- 
-          --  Determine the elapsed seconds since the start of Ada time
- 
-          Day_Dur := Time_Dur (High_N / Nano - Low_N / Nano);
- 
-          --  Count the number of days since the start of Ada time. 1901-01-01
-          --  GMT was a Tuesday.
- 
-          Day_Count := Long_Integer (Day_Dur / Secs_In_Day) + 1;
- 
-          return Integer (Day_Count mod 7);
-       end Day_Of_Week;
- 
-       -----------
-       -- Split --
-       -----------
- 
-       procedure Split
-         (Date        : Time;
-          Year        : out Year_Number;
-          Month       : out Month_Number;
-          Day         : out Day_Number;
-          Day_Secs    : out Day_Duration;
-          Hour        : out Integer;
-          Minute      : out Integer;
-          Second      : out Integer;
-          Sub_Sec     : out Duration;
-          Leap_Sec    : out Boolean;
-          Use_TZ      : Boolean;
-          Is_Historic : Boolean;
-          Time_Zone   : Long_Integer)
-       is
-          --  The following constants represent the number of nanoseconds
-          --  elapsed since the start of Ada time to and including the non
-          --  leap centennial years.
- 
-          Year_2101 : constant Time_Rep := Ada_Low +
-                        Time_Rep (49 * 366 + 151 * 365) * Nanos_In_Day;
-          Year_2201 : constant Time_Rep := Ada_Low +
-                        Time_Rep (73 * 366 + 227 * 365) * Nanos_In_Day;
-          Year_2301 : constant Time_Rep := Ada_Low +
-                        Time_Rep (97 * 366 + 303 * 365) * Nanos_In_Day;
- 
-          Date_Dur       : Time_Dur;
-          Date_N         : Time_Rep;
-          Day_Seconds    : Natural;
-          Elapsed_Leaps  : Natural;
-          Four_Year_Segs : Natural;
-          Hour_Seconds   : Natural;
-          Is_Leap_Year   : Boolean;
-          Next_Leap_N    : Time_Rep;
-          Rem_Years      : Natural;
-          Sub_Sec_N      : Time_Rep;
-          Year_Day       : Natural;
- 
-       begin
-          Date_N := Time_Rep (Date);
- 
-          --  Step 1: Leap seconds processing in UTC
- 
-          if Leap_Support then
-             Cumulative_Leap_Seconds
-               (Start_Of_Time, Date_N, Elapsed_Leaps, Next_Leap_N);
- 
-             Leap_Sec := Date_N >= Next_Leap_N;
- 
-             if Leap_Sec then
-                Elapsed_Leaps := Elapsed_Leaps + 1;
-             end if;
- 
-          --  The target does not support leap seconds
- 
-          else
-             Elapsed_Leaps := 0;
-             Leap_Sec      := False;
-          end if;
- 
-          Date_N := Date_N - Time_Rep (Elapsed_Leaps) * Nano;
- 
-          --  Step 2: Time zone processing. This action converts the input date
-          --  from GMT to the requested time zone. Applies from Ada 2005 on.
- 
-          if Use_TZ then
-             if Time_Zone /= 0 then
-                Date_N := Date_N + Time_Rep (Time_Zone) * 60 * Nano;
-             end if;
- 
-          --  Ada 83 and 95
- 
-          else
-             declare
-                Off : constant Long_Integer :=
-                  UTC_Time_Offset (Time (Date_N), Is_Historic);
- 
-             begin
-                Date_N := Date_N + Time_Rep (Off) * Nano;
-             end;
-          end if;
- 
-          --  Step 3: Non-leap centennial year adjustment in local time zone
- 
-          --  In order for all divisions to work properly and to avoid more
-          --  complicated arithmetic, we add fake February 29s to dates which
-          --  occur after a non-leap centennial year.
- 
-          if Date_N >= Year_2301 then
-             Date_N := Date_N + Time_Rep (3) * Nanos_In_Day;
- 
-          elsif Date_N >= Year_2201 then
-             Date_N := Date_N + Time_Rep (2) * Nanos_In_Day;
- 
-          elsif Date_N >= Year_2101 then
-             Date_N := Date_N + Time_Rep (1) * Nanos_In_Day;
-          end if;
- 
-          --  Step 4: Sub second processing in local time zone
- 
-          Sub_Sec_N := Date_N mod Nano;
-          Sub_Sec   := Duration (Sub_Sec_N) / Nano_F;
-          Date_N    := Date_N - Sub_Sec_N;
- 
-          --  Convert Date_N into a time duration value, changing the units
-          --  to seconds.
- 
-          Date_Dur := Time_Dur (Date_N / Nano - Ada_Low / Nano);
- 
-          --  Step 5: Year processing in local time zone. Determine the number
-          --  of four year segments since the start of Ada time and the input
-          --  date.
- 
-          Four_Year_Segs := Natural (Date_Dur / Secs_In_Four_Years);
- 
-          if Four_Year_Segs > 0 then
-             Date_Dur := Date_Dur - Time_Dur (Four_Year_Segs) *
-                                    Secs_In_Four_Years;
-          end if;
- 
-          --  Calculate the remaining non-leap years
- 
-          Rem_Years := Natural (Date_Dur / Secs_In_Non_Leap_Year);
- 
-          if Rem_Years > 3 then
-             Rem_Years := 3;
-          end if;
- 
-          Date_Dur := Date_Dur - Time_Dur (Rem_Years) * Secs_In_Non_Leap_Year;
- 
-          Year := Ada_Min_Year + Natural (4 * Four_Year_Segs + Rem_Years);
-          Is_Leap_Year := Is_Leap (Year);
- 
-          --  Step 6: Month and day processing in local time zone
- 
-          Year_Day := Natural (Date_Dur / Secs_In_Day) + 1;
- 
-          Month := 1;
- 
-          --  Processing for months after January
- 
-          if Year_Day > 31 then
-             Month    := 2;
-             Year_Day := Year_Day - 31;
- 
-             --  Processing for a new month or a leap February
- 
-             if Year_Day > 28
-               and then (not Is_Leap_Year or else Year_Day > 29)
-             then
-                Month    := 3;
-                Year_Day := Year_Day - 28;
- 
-                if Is_Leap_Year then
-                   Year_Day := Year_Day - 1;
-                end if;
- 
-                --  Remaining months
- 
-                while Year_Day > Days_In_Month (Month) loop
-                   Year_Day := Year_Day - Days_In_Month (Month);
-                   Month    := Month + 1;
-                end loop;
-             end if;
-          end if;
- 
-          --  Step 7: Hour, minute, second and sub second processing in local
-          --  time zone.
- 
-          Day          := Day_Number (Year_Day);
-          Day_Seconds  := Integer (Date_Dur mod Secs_In_Day);
-          Day_Secs     := Duration (Day_Seconds) + Sub_Sec;
-          Hour         := Day_Seconds / 3_600;
-          Hour_Seconds := Day_Seconds mod 3_600;
-          Minute       := Hour_Seconds / 60;
-          Second       := Hour_Seconds mod 60;
- 
-       exception
-          when Constraint_Error =>
-             raise Time_Error;
-       end Split;
- 
-       -------------
-       -- Time_Of --
-       -------------
- 
-       function Time_Of
-         (Year         : Year_Number;
-          Month        : Month_Number;
-          Day          : Day_Number;
-          Day_Secs     : Day_Duration;
-          Hour         : Integer;
-          Minute       : Integer;
-          Second       : Integer;
-          Sub_Sec      : Duration;
-          Leap_Sec     : Boolean;
-          Use_Day_Secs : Boolean;
-          Use_TZ       : Boolean;
-          Is_Historic  : Boolean;
-          Time_Zone    : Long_Integer) return Time
-       is
-          Count         : Integer;
-          Elapsed_Leaps : Natural;
-          Next_Leap_N   : Time_Rep;
-          Res_N         : Time_Rep;
-          Rounded_Res_N : Time_Rep;
- 
-       begin
-          --  Step 1: Check whether the day, month and year form a valid date
- 
-          if Day > Days_In_Month (Month)
-            and then (Day /= 29 or else Month /= 2 or else not Is_Leap (Year))
-          then
-             raise Time_Error;
-          end if;
- 
-          --  Start accumulating nanoseconds from the low bound of Ada time
- 
-          Res_N := Ada_Low;
- 
-          --  Step 2: Year processing and centennial year adjustment. Determine
-          --  the number of four year segments since the start of Ada time and
-          --  the input date.
- 
-          Count := (Year - Year_Number'First) / 4;
- 
-          for Four_Year_Segments in 1 .. Count loop
-             Res_N := Res_N + Nanos_In_Four_Years;
-          end loop;
- 
-          --  Note that non-leap centennial years are automatically considered
-          --  leap in the operation above. An adjustment of several days is
-          --  required to compensate for this.
- 
-          if Year > 2300 then
-             Res_N := Res_N - Time_Rep (3) * Nanos_In_Day;
- 
-          elsif Year > 2200 then
-             Res_N := Res_N - Time_Rep (2) * Nanos_In_Day;
- 
-          elsif Year > 2100 then
-             Res_N := Res_N - Time_Rep (1) * Nanos_In_Day;
-          end if;
- 
-          --  Add the remaining non-leap years
- 
-          Count := (Year - Year_Number'First) mod 4;
-          Res_N := Res_N + Time_Rep (Count) * Secs_In_Non_Leap_Year * Nano;
- 
-          --  Step 3: Day of month processing. Determine the number of days
-          --  since the start of the current year. Do not add the current
-          --  day since it has not elapsed yet.
- 
-          Count := Cumulative_Days_Before_Month (Month) + Day - 1;
- 
-          --  The input year is leap and we have passed February
- 
-          if Is_Leap (Year)
-            and then Month > 2
-          then
-             Count := Count + 1;
-          end if;
- 
-          Res_N := Res_N + Time_Rep (Count) * Nanos_In_Day;
- 
-          --  Step 4: Hour, minute, second and sub second processing
- 
-          if Use_Day_Secs then
-             Res_N := Res_N + Duration_To_Time_Rep (Day_Secs);
- 
-          else
-             Res_N :=
-               Res_N + Time_Rep (Hour * 3_600 + Minute * 60 + Second) * Nano;
- 
-             if Sub_Sec = 1.0 then
-                Res_N := Res_N + Time_Rep (1) * Nano;
-             else
-                Res_N := Res_N + Duration_To_Time_Rep (Sub_Sec);
-             end if;
-          end if;
- 
-          --  At this point, the generated time value should be withing the
-          --  bounds of Ada time.
- 
-          Check_Within_Time_Bounds (Res_N);
- 
-          --  Step 4: Time zone processing. At this point we have built an
-          --  arbitrary time value which is not related to any time zone.
-          --  For simplicity, the time value is normalized to GMT, producing
-          --  a uniform representation which can be treated by arithmetic
-          --  operations for instance without any additional corrections.
- 
-          if Use_TZ then
-             if Time_Zone /= 0 then
-                Res_N := Res_N - Time_Rep (Time_Zone) * 60 * Nano;
-             end if;
- 
-          --  Ada 83 and 95
- 
-          else
-             declare
-                Cur_Off   : constant Long_Integer :=
-                  UTC_Time_Offset (Time (Res_N), Is_Historic);
-                Cur_Res_N : constant Time_Rep :=
-                  Res_N - Time_Rep (Cur_Off) * Nano;
-                Off       : constant Long_Integer :=
-                  UTC_Time_Offset (Time (Cur_Res_N), Is_Historic);
- 
-             begin
-                Res_N := Res_N - Time_Rep (Off) * Nano;
-             end;
-          end if;
- 
-          --  Step 5: Leap seconds processing in GMT
- 
-          if Leap_Support then
-             Cumulative_Leap_Seconds
-               (Start_Of_Time, Res_N, Elapsed_Leaps, Next_Leap_N);
- 
-             Res_N := Res_N + Time_Rep (Elapsed_Leaps) * Nano;
- 
-             --  An Ada 2005 caller requesting an explicit leap second or an
-             --  Ada 95 caller accounting for an invisible leap second.
- 
-             if Leap_Sec or else Res_N >= Next_Leap_N then
-                Res_N := Res_N + Time_Rep (1) * Nano;
-             end if;
- 
-             --  Leap second validity check
- 
-             Rounded_Res_N := Res_N - (Res_N mod Nano);
- 
-             if Use_TZ
-               and then Leap_Sec
-               and then Rounded_Res_N /= Next_Leap_N
-             then
-                raise Time_Error;
-             end if;
-          end if;
- 
-          return Time (Res_N);
-       end Time_Of;
- 
-    end Formatting_Operations;
- 
-    ---------------------------
-    -- Time_Zones_Operations --
-    ---------------------------
- 
-    package body Time_Zones_Operations is
- 
-       ---------------------
-       -- UTC_Time_Offset --
-       ---------------------
- 
-       function UTC_Time_Offset (Date : Time) return Long_Integer is
-       begin
-          return UTC_Time_Offset (Date, True);
-       end UTC_Time_Offset;
- 
-    end Time_Zones_Operations;
- 
- --  Start of elaboration code for Ada.Calendar
- 
- begin
-    System.OS_Primitives.Initialize;
- 
- end Ada.Calendar;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-calend.ads gcc-8.1.0/gcc/ada/a-calend.ads
*** gcc-7.3.0/gcc/ada/a-calend.ads	Wed Apr 20 09:04:48 2016
--- gcc-8.1.0/gcc/ada/a-calend.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,395 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                         A D A . C A L E N D A R                          --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2015, Free Software Foundation, 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 Ada.Calendar with
-   SPARK_Mode,
-   Abstract_State => (Clock_Time with Synchronous,
-                                      External => (Async_Readers,
-                                                   Async_Writers)),
-   Initializes    => Clock_Time
- is
- 
-    type Time is private;
- 
-    --  Declarations representing limits of allowed local time values. Note that
-    --  these do NOT constrain the possible stored values of time which may well
-    --  permit a larger range of times (this is explicitly allowed in Ada 95).
- 
-    subtype Year_Number  is Integer range 1901 .. 2399;
-    subtype Month_Number is Integer range 1 .. 12;
-    subtype Day_Number   is Integer range 1 .. 31;
- 
-    --  A Day_Duration value of 86_400.0 designates a new day
- 
-    subtype Day_Duration is Duration range 0.0 .. 86_400.0;
- 
-    function Clock return Time with
-      Volatile_Function,
-      Global => Clock_Time;
-    --  The returned time value is the number of nanoseconds since the start
-    --  of Ada time (1901-01-01 00:00:00.0 UTC). If leap seconds are enabled,
-    --  the result will contain all elapsed leap seconds since the start of
-    --  Ada time until now.
- 
-    function Year    (Date : Time) return Year_Number;
-    function Month   (Date : Time) return Month_Number;
-    function Day     (Date : Time) return Day_Number;
-    function Seconds (Date : Time) return Day_Duration;
- 
-    procedure Split
-      (Date    : Time;
-       Year    : out Year_Number;
-       Month   : out Month_Number;
-       Day     : out Day_Number;
-       Seconds : out Day_Duration);
-    --  Break down a time value into its date components set in the current
-    --  time zone. If Split is called on a time value created using Ada 2005
-    --  Time_Of in some arbitrary time zone, the input value will always be
-    --  interpreted as relative to the local time zone.
- 
-    function Time_Of
-      (Year    : Year_Number;
-       Month   : Month_Number;
-       Day     : Day_Number;
-       Seconds : Day_Duration := 0.0) return Time;
-    --  GNAT Note: Normally when procedure Split is called on a Time value
-    --  result of a call to function Time_Of, the out parameters of procedure
-    --  Split are identical to the in parameters of function Time_Of. However,
-    --  when a non-existent time of day is specified, the values for Seconds
-    --  may or may not be different. This may happen when Daylight Saving Time
-    --  (DST) is in effect, on the day when switching to DST, if Seconds
-    --  specifies a time of day in the hour that does not exist. For example,
-    --  in New York:
-    --
-    --    Time_Of (Year => 1998, Month => 4, Day => 5, Seconds => 10740.0)
-    --
-    --  will return a Time value T. If Split is called on T, the resulting
-    --  Seconds may be 14340.0 (3:59:00) instead of 10740.0 (2:59:00 being
-    --  a time that not exist).
- 
-    function "+" (Left : Time;     Right : Duration) return Time;
-    function "+" (Left : Duration; Right : Time)     return Time;
-    function "-" (Left : Time;     Right : Duration) return Time;
-    function "-" (Left : Time;     Right : Time)     return Duration;
-    --  The first three functions will raise Time_Error if the resulting time
-    --  value is less than the start of Ada time in UTC or greater than the
-    --  end of Ada time in UTC. The last function will raise Time_Error if the
-    --  resulting difference cannot fit into a duration value.
- 
-    function "<"  (Left, Right : Time) return Boolean;
-    function "<=" (Left, Right : Time) return Boolean;
-    function ">"  (Left, Right : Time) return Boolean;
-    function ">=" (Left, Right : Time) return Boolean;
- 
-    Time_Error : exception;
- 
- private
-    --  Mark the private part as SPARK_Mode Off to avoid accounting for variable
-    --  Invalid_Time_Zone_Offset in abstract state.
- 
-    pragma SPARK_Mode (Off);
- 
-    pragma Inline (Clock);
- 
-    pragma Inline (Year);
-    pragma Inline (Month);
-    pragma Inline (Day);
- 
-    pragma Inline ("+");
-    pragma Inline ("-");
- 
-    pragma Inline ("<");
-    pragma Inline ("<=");
-    pragma Inline (">");
-    pragma Inline (">=");
- 
-    --  The units used in this version of Ada.Calendar are nanoseconds. The
-    --  following constants provide values used in conversions of seconds or
-    --  days to the underlying units.
- 
-    Nano         : constant := 1_000_000_000;
-    Nano_F       : constant := 1_000_000_000.0;
-    Nanos_In_Day : constant := 86_400_000_000_000;
-    Secs_In_Day  : constant := 86_400;
- 
-    ----------------------------
-    -- Implementation of Time --
-    ----------------------------
- 
-    --  Time is represented as a signed 64 bit integer count of nanoseconds
-    --  since the start of Ada time (1901-01-01 00:00:00.0 UTC). Time values
-    --  produced by Time_Of are internally normalized to UTC regardless of their
-    --  local time zone. This representation ensures correct handling of leap
-    --  seconds as well as performing arithmetic. In Ada 95, Split and Time_Of
-    --  will treat a time value as being in the local time zone, in Ada 2005,
-    --  Split and Time_Of will treat a time value as being in the designated
-    --  time zone by the formal parameter or in UTC by default. The size of the
-    --  type is large enough to cover the Ada 2005 range of time (1901-01-01
-    --  00:00:00.0 UTC - 2399-12-31-23:59:59.999999999 UTC).
- 
-    ------------------
-    -- Leap Seconds --
-    ------------------
- 
-    --  Due to Earth's slowdown, the astronomical time is not as precise as the
-    --  International Atomic Time. To compensate for this inaccuracy, a single
-    --  leap second is added after the last day of June or December. The count
-    --  of seconds during those occurrences becomes:
- 
-    --    ... 58, 59, leap second 60, 0, 1, 2 ...
- 
-    --  Unlike leap days, leap seconds occur simultaneously around the world.
-    --  In other words, if a leap second occurs at 23:59:60 UTC, it also occurs
-    --  on 18:59:60 -5 the same day or 2:59:60 +2 on the next day.
- 
-    --  Leap seconds do not follow a formula. The International Earth Rotation
-    --  and Reference System Service decides when to add one. Leap seconds are
-    --  included in the representation of time in Ada 95 mode. As a result,
-    --  the following two time values will differ by two seconds:
- 
-    --    1972-06-30 23:59:59.0
-    --    1972-07-01 00:00:00.0
- 
-    --  When a new leap second is introduced, the following steps must be
-    --  carried out:
- 
-    --     1) Increment Leap_Seconds_Count in a-calend.adb by one
-    --     2) Increment LS_Count in xleaps.adb by one
-    --     3) Add the new date to the aggregate of array LS_Dates in
-    --        xleaps.adb
-    --     4) Compile and execute xleaps
-    --     5) Replace the values of Leap_Second_Times in a-calend.adb with the
-    --        aggregate generated by xleaps
- 
-    --  The algorithms that build the actual leap second values and discover
-    --  how many leap seconds have occurred between two dates do not need any
-    --  modification.
- 
-    ------------------------------
-    -- Non-leap Centennial Years --
-    ------------------------------
- 
-    --  Over the range of Ada time, centennial years 2100, 2200 and 2300 are
-    --  non-leap. As a consequence, seven non-leap years occur over the period
-    --  of year - 4 to year + 4. Internally, routines Split and Time_Of add or
-    --  subtract a "fake" February 29 to facilitate the arithmetic involved.
- 
-    ------------------------
-    -- Local Declarations --
-    ------------------------
- 
-    type Time_Rep is new Long_Long_Integer;
-    type Time is new Time_Rep;
-    --  The underlying type of Time has been chosen to be a 64 bit signed
-    --  integer number since it allows for easier processing of sub-seconds
-    --  and arithmetic. We use Long_Long_Integer to allow this unit to compile
-    --  when using custom target configuration files where the max integer is
-    --  32 bits. This is useful for static analysis tools such as SPARK or
-    --  CodePeer.
-    --
-    --  Note: the reason we have two separate types here is to avoid problems
-    --  with overloading ambiguities in the body if we tried to use Time as an
-    --  internal computational type.
- 
-    Days_In_Month : constant array (Month_Number) of Day_Number :=
-                      (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
-    --  Days in month for non-leap year, leap year case is adjusted in code
- 
-    Invalid_Time_Zone_Offset : Long_Integer;
-    pragma Import (C, Invalid_Time_Zone_Offset, "__gnat_invalid_tzoff");
- 
-    function Is_Leap (Year : Year_Number) return Boolean;
-    --  Determine whether a given year is leap
- 
-    ----------------------------------------------------------
-    -- Target-Independent Interface to Children of Calendar --
-    ----------------------------------------------------------
- 
-    --  The following packages provide a target-independent interface to the
-    --  children of Calendar - Arithmetic, Conversions, Delays, Formatting and
-    --  Time_Zones.
- 
-    ---------------------------
-    -- Arithmetic_Operations --
-    ---------------------------
- 
-    package Arithmetic_Operations is
- 
-       function Add (Date : Time; Days : Long_Integer) return Time;
-       --  Add a certain number of days to a time value
- 
-       procedure Difference
-         (Left         : Time;
-          Right        : Time;
-          Days         : out Long_Integer;
-          Seconds      : out Duration;
-          Leap_Seconds : out Integer);
-       --  Calculate the difference between two time values in terms of days,
-       --  seconds and leap seconds elapsed. The leap seconds are not included
-       --  in the seconds returned. If Left is greater than Right, the returned
-       --  values are positive, negative otherwise.
- 
-       function Subtract (Date : Time; Days : Long_Integer) return Time;
-       --  Subtract a certain number of days from a time value
- 
-    end Arithmetic_Operations;
- 
-    ---------------------------
-    -- Conversion_Operations --
-    ---------------------------
- 
-    package Conversion_Operations is
- 
-       function To_Ada_Time (Unix_Time : Long_Integer) return Time;
-       --  Unix to Ada Epoch conversion
- 
-       function To_Ada_Time
-         (tm_year  : Integer;
-          tm_mon   : Integer;
-          tm_day   : Integer;
-          tm_hour  : Integer;
-          tm_min   : Integer;
-          tm_sec   : Integer;
-          tm_isdst : Integer) return Time;
-       --  Struct tm to Ada Epoch conversion
- 
-       function To_Duration
-         (tv_sec  : Long_Integer;
-          tv_nsec : Long_Integer) return Duration;
-       --  Struct timespec to Duration conversion
- 
-       procedure To_Struct_Timespec
-         (D       : Duration;
-          tv_sec  : out Long_Integer;
-          tv_nsec : out Long_Integer);
-       --  Duration to struct timespec conversion
- 
-       procedure To_Struct_Tm
-         (T       : Time;
-          tm_year : out Integer;
-          tm_mon  : out Integer;
-          tm_day  : out Integer;
-          tm_hour : out Integer;
-          tm_min  : out Integer;
-          tm_sec  : out Integer);
-       --  Time to struct tm conversion
- 
-       function To_Unix_Time (Ada_Time : Time) return Long_Integer;
-       --  Ada to Unix Epoch conversion
- 
-    end Conversion_Operations;
- 
-    ----------------------
-    -- Delay_Operations --
-    ----------------------
- 
-    package Delay_Operations is
- 
-       function To_Duration (Date : Time) return Duration;
-       --  Given a time value in nanoseconds since 1901, convert it into a
-       --  duration value giving the number of nanoseconds since the Unix Epoch.
- 
-    end Delay_Operations;
- 
-    ---------------------------
-    -- Formatting_Operations --
-    ---------------------------
- 
-    package Formatting_Operations is
- 
-       function Day_Of_Week (Date : Time) return Integer;
-       --  Determine which day of week Date falls on. The returned values are
-       --  within the range of 0 .. 6 (Monday .. Sunday).
- 
-       procedure Split
-         (Date        : Time;
-          Year        : out Year_Number;
-          Month       : out Month_Number;
-          Day         : out Day_Number;
-          Day_Secs    : out Day_Duration;
-          Hour        : out Integer;
-          Minute      : out Integer;
-          Second      : out Integer;
-          Sub_Sec     : out Duration;
-          Leap_Sec    : out Boolean;
-          Use_TZ      : Boolean;
-          Is_Historic : Boolean;
-          Time_Zone   : Long_Integer);
-       pragma Export (Ada, Split, "__gnat_split");
-       --  Split a time value into its components. If flag Is_Historic is set,
-       --  this routine would try to use to the best of the OS's abilities the
-       --  time zone offset that was or will be in effect on Date. Set Use_TZ
-       --  to use the local time zone (the value in Time_Zone is ignored) when
-       --  splitting a time value.
- 
-       function Time_Of
-         (Year         : Year_Number;
-          Month        : Month_Number;
-          Day          : Day_Number;
-          Day_Secs     : Day_Duration;
-          Hour         : Integer;
-          Minute       : Integer;
-          Second       : Integer;
-          Sub_Sec      : Duration;
-          Leap_Sec     : Boolean;
-          Use_Day_Secs : Boolean;
-          Use_TZ       : Boolean;
-          Is_Historic  : Boolean;
-          Time_Zone    : Long_Integer) return Time;
-       pragma Export (Ada, Time_Of, "__gnat_time_of");
-       --  Given all the components of a date, return the corresponding time
-       --  value. Set Use_Day_Secs to use the value in Day_Secs, otherwise the
-       --  day duration will be calculated from Hour, Minute, Second and Sub_
-       --  Sec. If flag Is_Historic is set, this routine would try to use to the
-       --  best of the OS's abilities the time zone offset that was or will be
-       --  in effect on the input date. Set Use_TZ to use the local time zone
-       --  (the value in formal Time_Zone is ignored) when building a time value
-       --  and to verify the validity of a requested leap second.
- 
-    end Formatting_Operations;
- 
-    ---------------------------
-    -- Time_Zones_Operations --
-    ---------------------------
- 
-    package Time_Zones_Operations is
- 
-       function UTC_Time_Offset (Date : Time) return Long_Integer;
-       --  Return (in seconds) the difference between the local time zone and
-       --  UTC time at a specific historic date.
- 
-    end Time_Zones_Operations;
- 
- end Ada.Calendar;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-calfor.adb gcc-8.1.0/gcc/ada/a-calfor.adb
*** gcc-7.3.0/gcc/ada/a-calfor.adb	Mon Oct  1 09:41:22 2012
--- gcc-8.1.0/gcc/ada/a-calfor.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,882 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --              A D A . C A L E N D A R . F O R M A T T I N G               --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2006-2012, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Calendar;            use Ada.Calendar;
- with Ada.Calendar.Time_Zones; use Ada.Calendar.Time_Zones;
- 
- package body Ada.Calendar.Formatting is
- 
-    --------------------------
-    -- Implementation Notes --
-    --------------------------
- 
-    --  All operations in this package are target and time representation
-    --  independent, thus only one source file is needed for multiple targets.
- 
-    procedure Check_Char (S : String; C : Character; Index : Integer);
-    --  Subsidiary to the two versions of Value. Determine whether the input
-    --  string S has character C at position Index. Raise Constraint_Error if
-    --  there is a mismatch.
- 
-    procedure Check_Digit (S : String; Index : Integer);
-    --  Subsidiary to the two versions of Value. Determine whether the character
-    --  of string S at position Index is a digit. This catches invalid input
-    --  such as 1983-*1-j3 u5:n7:k9 which should be 1983-01-03 05:07:09. Raise
-    --  Constraint_Error if there is a mismatch.
- 
-    ----------------
-    -- Check_Char --
-    ----------------
- 
-    procedure Check_Char (S : String; C : Character; Index : Integer) is
-    begin
-       if S (Index) /= C then
-          raise Constraint_Error;
-       end if;
-    end Check_Char;
- 
-    -----------------
-    -- Check_Digit --
-    -----------------
- 
-    procedure Check_Digit (S : String; Index : Integer) is
-    begin
-       if S (Index) not in '0' .. '9' then
-          raise Constraint_Error;
-       end if;
-    end Check_Digit;
- 
-    ---------
-    -- Day --
-    ---------
- 
-    function Day
-      (Date      : Time;
-       Time_Zone : Time_Zones.Time_Offset := 0) return Day_Number
-    is
-       Y  : Year_Number;
-       Mo : Month_Number;
-       D  : Day_Number;
-       H  : Hour_Number;
-       Mi : Minute_Number;
-       Se : Second_Number;
-       Ss : Second_Duration;
-       Le : Boolean;
- 
-       pragma Unreferenced (Y, Mo, H, Mi);
- 
-    begin
-       Split (Date, Y, Mo, D, H, Mi, Se, Ss, Le, Time_Zone);
-       return D;
-    end Day;
- 
-    -----------------
-    -- Day_Of_Week --
-    -----------------
- 
-    function Day_Of_Week (Date : Time) return Day_Name is
-    begin
-       return Day_Name'Val (Formatting_Operations.Day_Of_Week (Date));
-    end Day_Of_Week;
- 
-    ----------
-    -- Hour --
-    ----------
- 
-    function Hour
-      (Date      : Time;
-       Time_Zone : Time_Zones.Time_Offset := 0) return Hour_Number
-    is
-       Y  : Year_Number;
-       Mo : Month_Number;
-       D  : Day_Number;
-       H  : Hour_Number;
-       Mi : Minute_Number;
-       Se : Second_Number;
-       Ss : Second_Duration;
-       Le : Boolean;
- 
-       pragma Unreferenced (Y, Mo, D, Mi);
- 
-    begin
-       Split (Date, Y, Mo, D, H, Mi, Se, Ss, Le, Time_Zone);
-       return H;
-    end Hour;
- 
-    -----------
-    -- Image --
-    -----------
- 
-    function Image
-      (Elapsed_Time          : Duration;
-       Include_Time_Fraction : Boolean := False) return String
-    is
-       To_Char    : constant array (0 .. 9) of Character := "0123456789";
-       Hour       : Hour_Number;
-       Minute     : Minute_Number;
-       Second     : Second_Number;
-       Sub_Second : Duration;
-       SS_Nat     : Natural;
- 
-       --  Determine the two slice bounds for the result string depending on
-       --  whether the input is negative and whether fractions are requested.
- 
-       First  : constant Integer := (if Elapsed_Time < 0.0 then 1 else 2);
-       Last   : constant Integer := (if Include_Time_Fraction then 12 else 9);
- 
-       Result : String := "-00:00:00.00";
- 
-    begin
-       Split (abs (Elapsed_Time), Hour, Minute, Second, Sub_Second);
- 
-       --  Hour processing, positions 2 and 3
- 
-       Result (2) := To_Char (Hour / 10);
-       Result (3) := To_Char (Hour mod 10);
- 
-       --  Minute processing, positions 5 and 6
- 
-       Result (5) := To_Char (Minute / 10);
-       Result (6) := To_Char (Minute mod 10);
- 
-       --  Second processing, positions 8 and 9
- 
-       Result (8) := To_Char (Second / 10);
-       Result (9) := To_Char (Second mod 10);
- 
-       --  Optional sub second processing, positions 11 and 12
- 
-       if Include_Time_Fraction and then Sub_Second > 0.0 then
- 
-          --  Prevent rounding up when converting to natural, avoiding the zero
-          --  case to prevent rounding down to a negative number.
- 
-          SS_Nat := Natural (Duration'(Sub_Second * 100.0) - 0.5);
- 
-          Result (11) := To_Char (SS_Nat / 10);
-          Result (12) := To_Char (SS_Nat mod 10);
-       end if;
- 
-       return Result (First .. Last);
-    end Image;
- 
-    -----------
-    -- Image --
-    -----------
- 
-    function Image
-      (Date                  : Time;
-       Include_Time_Fraction : Boolean := False;
-       Time_Zone             : Time_Zones.Time_Offset := 0) return String
-    is
-       To_Char : constant array (0 .. 9) of Character := "0123456789";
- 
-       Year        : Year_Number;
-       Month       : Month_Number;
-       Day         : Day_Number;
-       Hour        : Hour_Number;
-       Minute      : Minute_Number;
-       Second      : Second_Number;
-       Sub_Second  : Duration;
-       SS_Nat      : Natural;
-       Leap_Second : Boolean;
- 
-       --  The result length depends on whether fractions are requested.
- 
-       Result : String := "0000-00-00 00:00:00.00";
-       Last   : constant Positive :=
-         Result'Last - (if Include_Time_Fraction then 0 else 3);
- 
-    begin
-       Split (Date, Year, Month, Day,
-              Hour, Minute, Second, Sub_Second, Leap_Second, Time_Zone);
- 
-       --  Year processing, positions 1, 2, 3 and 4
- 
-       Result (1) := To_Char (Year / 1000);
-       Result (2) := To_Char (Year / 100 mod 10);
-       Result (3) := To_Char (Year / 10 mod 10);
-       Result (4) := To_Char (Year mod 10);
- 
-       --  Month processing, positions 6 and 7
- 
-       Result (6) := To_Char (Month / 10);
-       Result (7) := To_Char (Month mod 10);
- 
-       --  Day processing, positions 9 and 10
- 
-       Result (9)  := To_Char (Day / 10);
-       Result (10) := To_Char (Day mod 10);
- 
-       Result (12) := To_Char (Hour / 10);
-       Result (13) := To_Char (Hour mod 10);
- 
-       --  Minute processing, positions 15 and 16
- 
-       Result (15) := To_Char (Minute / 10);
-       Result (16) := To_Char (Minute mod 10);
- 
-       --  Second processing, positions 18 and 19
- 
-       Result (18) := To_Char (Second / 10);
-       Result (19) := To_Char (Second mod 10);
- 
-       --  Optional sub second processing, positions 21 and 22
- 
-       if Include_Time_Fraction and then Sub_Second > 0.0 then
- 
-          --  Prevent rounding up when converting to natural, avoiding the zero
-          --  case to prevent rounding down to a negative number.
- 
-          SS_Nat := Natural (Duration'(Sub_Second * 100.0) - 0.5);
- 
-          Result (21) := To_Char (SS_Nat / 10);
-          Result (22) := To_Char (SS_Nat mod 10);
-       end if;
- 
-       return Result (Result'First .. Last);
-    end Image;
- 
-    ------------
-    -- Minute --
-    ------------
- 
-    function Minute
-      (Date      : Time;
-       Time_Zone : Time_Zones.Time_Offset := 0) return Minute_Number
-    is
-       Y  : Year_Number;
-       Mo : Month_Number;
-       D  : Day_Number;
-       H  : Hour_Number;
-       Mi : Minute_Number;
-       Se : Second_Number;
-       Ss : Second_Duration;
-       Le : Boolean;
- 
-       pragma Unreferenced (Y, Mo, D, H);
- 
-    begin
-       Split (Date, Y, Mo, D, H, Mi, Se, Ss, Le, Time_Zone);
-       return Mi;
-    end Minute;
- 
-    -----------
-    -- Month --
-    -----------
- 
-    function Month
-      (Date      : Time;
-       Time_Zone : Time_Zones.Time_Offset := 0) return Month_Number
-    is
-       Y  : Year_Number;
-       Mo : Month_Number;
-       D  : Day_Number;
-       H  : Hour_Number;
-       Mi : Minute_Number;
-       Se : Second_Number;
-       Ss : Second_Duration;
-       Le : Boolean;
- 
-       pragma Unreferenced (Y, D, H, Mi);
- 
-    begin
-       Split (Date, Y, Mo, D, H, Mi, Se, Ss, Le, Time_Zone);
-       return Mo;
-    end Month;
- 
-    ------------
-    -- Second --
-    ------------
- 
-    function Second (Date : Time) return Second_Number is
-       Y  : Year_Number;
-       Mo : Month_Number;
-       D  : Day_Number;
-       H  : Hour_Number;
-       Mi : Minute_Number;
-       Se : Second_Number;
-       Ss : Second_Duration;
-       Le : Boolean;
- 
-       pragma Unreferenced (Y, Mo, D, H, Mi);
- 
-    begin
-       Split (Date, Y, Mo, D, H, Mi, Se, Ss, Le);
-       return Se;
-    end Second;
- 
-    ----------------
-    -- Seconds_Of --
-    ----------------
- 
-    function Seconds_Of
-      (Hour       : Hour_Number;
-       Minute     : Minute_Number;
-       Second     : Second_Number := 0;
-       Sub_Second : Second_Duration := 0.0) return Day_Duration is
- 
-    begin
-       --  Validity checks
- 
-       if        not Hour'Valid
-         or else not Minute'Valid
-         or else not Second'Valid
-         or else not Sub_Second'Valid
-       then
-          raise Constraint_Error;
-       end if;
- 
-       return Day_Duration (Hour   * 3_600) +
-              Day_Duration (Minute *    60) +
-              Day_Duration (Second)         +
-              Sub_Second;
-    end Seconds_Of;
- 
-    -----------
-    -- Split --
-    -----------
- 
-    procedure Split
-      (Seconds    : Day_Duration;
-       Hour       : out Hour_Number;
-       Minute     : out Minute_Number;
-       Second     : out Second_Number;
-       Sub_Second : out Second_Duration)
-    is
-       Secs : Natural;
- 
-    begin
-       --  Validity checks
- 
-       if not Seconds'Valid then
-          raise Constraint_Error;
-       end if;
- 
-       Secs := (if Seconds = 0.0 then 0 else Natural (Seconds - 0.5));
- 
-       Sub_Second := Second_Duration (Seconds - Day_Duration (Secs));
-       Hour       := Hour_Number (Secs / 3_600);
-       Secs       := Secs mod 3_600;
-       Minute     := Minute_Number (Secs / 60);
-       Second     := Second_Number (Secs mod 60);
- 
-       --  Validity checks
- 
-       if not Hour'Valid
-         or else not Minute'Valid
-         or else not Second'Valid
-         or else not Sub_Second'Valid
-       then
-          raise Time_Error;
-       end if;
-    end Split;
- 
-    -----------
-    -- Split --
-    -----------
- 
-    procedure Split
-      (Date        : Time;
-       Year        : out Year_Number;
-       Month       : out Month_Number;
-       Day         : out Day_Number;
-       Seconds     : out Day_Duration;
-       Leap_Second : out Boolean;
-       Time_Zone   : Time_Zones.Time_Offset := 0)
-    is
-       H  : Integer;
-       M  : Integer;
-       Se : Integer;
-       Su : Duration;
-       Tz : constant Long_Integer := Long_Integer (Time_Zone);
- 
-    begin
-       Formatting_Operations.Split
-         (Date        => Date,
-          Year        => Year,
-          Month       => Month,
-          Day         => Day,
-          Day_Secs    => Seconds,
-          Hour        => H,
-          Minute      => M,
-          Second      => Se,
-          Sub_Sec     => Su,
-          Leap_Sec    => Leap_Second,
-          Use_TZ      => True,
-          Is_Historic => True,
-          Time_Zone   => Tz);
- 
-       --  Validity checks
- 
-       if not Year'Valid
-         or else not Month'Valid
-         or else not Day'Valid
-         or else not Seconds'Valid
-       then
-          raise Time_Error;
-       end if;
-    end Split;
- 
-    -----------
-    -- Split --
-    -----------
- 
-    procedure Split
-      (Date       : Time;
-       Year       : out Year_Number;
-       Month      : out Month_Number;
-       Day        : out Day_Number;
-       Hour       : out Hour_Number;
-       Minute     : out Minute_Number;
-       Second     : out Second_Number;
-       Sub_Second : out Second_Duration;
-       Time_Zone  : Time_Zones.Time_Offset := 0)
-    is
-       Dd : Day_Duration;
-       Le : Boolean;
-       Tz : constant Long_Integer := Long_Integer (Time_Zone);
- 
-    begin
-       Formatting_Operations.Split
-         (Date        => Date,
-          Year        => Year,
-          Month       => Month,
-          Day         => Day,
-          Day_Secs    => Dd,
-          Hour        => Hour,
-          Minute      => Minute,
-          Second      => Second,
-          Sub_Sec     => Sub_Second,
-          Leap_Sec    => Le,
-          Use_TZ      => True,
-          Is_Historic => True,
-          Time_Zone   => Tz);
- 
-       --  Validity checks
- 
-       if not Year'Valid
-         or else not Month'Valid
-         or else not Day'Valid
-         or else not Hour'Valid
-         or else not Minute'Valid
-         or else not Second'Valid
-         or else not Sub_Second'Valid
-       then
-          raise Time_Error;
-       end if;
-    end Split;
- 
-    -----------
-    -- Split --
-    -----------
- 
-    procedure Split
-      (Date        : Time;
-       Year        : out Year_Number;
-       Month       : out Month_Number;
-       Day         : out Day_Number;
-       Hour        : out Hour_Number;
-       Minute      : out Minute_Number;
-       Second      : out Second_Number;
-       Sub_Second  : out Second_Duration;
-       Leap_Second : out Boolean;
-       Time_Zone   : Time_Zones.Time_Offset := 0)
-    is
-       Dd : Day_Duration;
-       Tz : constant Long_Integer := Long_Integer (Time_Zone);
- 
-    begin
-       Formatting_Operations.Split
-        (Date        => Date,
-         Year        => Year,
-         Month       => Month,
-         Day         => Day,
-         Day_Secs    => Dd,
-         Hour        => Hour,
-         Minute      => Minute,
-         Second      => Second,
-         Sub_Sec     => Sub_Second,
-         Leap_Sec    => Leap_Second,
-         Use_TZ      => True,
-         Is_Historic => True,
-         Time_Zone   => Tz);
- 
-       --  Validity checks
- 
-       if not Year'Valid
-         or else not Month'Valid
-         or else not Day'Valid
-         or else not Hour'Valid
-         or else not Minute'Valid
-         or else not Second'Valid
-         or else not Sub_Second'Valid
-       then
-          raise Time_Error;
-       end if;
-    end Split;
- 
-    ----------------
-    -- Sub_Second --
-    ----------------
- 
-    function Sub_Second (Date : Time) return Second_Duration is
-       Y  : Year_Number;
-       Mo : Month_Number;
-       D  : Day_Number;
-       H  : Hour_Number;
-       Mi : Minute_Number;
-       Se : Second_Number;
-       Ss : Second_Duration;
-       Le : Boolean;
- 
-       pragma Unreferenced (Y, Mo, D, H, Mi);
- 
-    begin
-       Split (Date, Y, Mo, D, H, Mi, Se, Ss, Le);
-       return Ss;
-    end Sub_Second;
- 
-    -------------
-    -- Time_Of --
-    -------------
- 
-    function Time_Of
-      (Year        : Year_Number;
-       Month       : Month_Number;
-       Day         : Day_Number;
-       Seconds     : Day_Duration := 0.0;
-       Leap_Second : Boolean := False;
-       Time_Zone   : Time_Zones.Time_Offset := 0) return Time
-    is
-       Adj_Year  : Year_Number  := Year;
-       Adj_Month : Month_Number := Month;
-       Adj_Day   : Day_Number   := Day;
- 
-       H  : constant Integer := 1;
-       M  : constant Integer := 1;
-       Se : constant Integer := 1;
-       Ss : constant Duration := 0.1;
-       Tz : constant Long_Integer := Long_Integer (Time_Zone);
- 
-    begin
-       --  Validity checks
- 
-       if not Year'Valid
-         or else not Month'Valid
-         or else not Day'Valid
-         or else not Seconds'Valid
-         or else not Time_Zone'Valid
-       then
-          raise Constraint_Error;
-       end if;
- 
-       --  A Seconds value of 86_400 denotes a new day. This case requires an
-       --  adjustment to the input values.
- 
-       if Seconds = 86_400.0 then
-          if Day < Days_In_Month (Month)
-            or else (Is_Leap (Year)
-                       and then Month = 2)
-          then
-             Adj_Day := Day + 1;
-          else
-             Adj_Day := 1;
- 
-             if Month < 12 then
-                Adj_Month := Month + 1;
-             else
-                Adj_Month := 1;
-                Adj_Year  := Year + 1;
-             end if;
-          end if;
-       end if;
- 
-       return
-         Formatting_Operations.Time_Of
-           (Year         => Adj_Year,
-            Month        => Adj_Month,
-            Day          => Adj_Day,
-            Day_Secs     => Seconds,
-            Hour         => H,
-            Minute       => M,
-            Second       => Se,
-            Sub_Sec      => Ss,
-            Leap_Sec     => Leap_Second,
-            Use_Day_Secs => True,
-            Use_TZ       => True,
-            Is_Historic  => True,
-            Time_Zone    => Tz);
-    end Time_Of;
- 
-    -------------
-    -- Time_Of --
-    -------------
- 
-    function Time_Of
-      (Year        : Year_Number;
-       Month       : Month_Number;
-       Day         : Day_Number;
-       Hour        : Hour_Number;
-       Minute      : Minute_Number;
-       Second      : Second_Number;
-       Sub_Second  : Second_Duration := 0.0;
-       Leap_Second : Boolean := False;
-       Time_Zone   : Time_Zones.Time_Offset := 0) return Time
-    is
-       Dd : constant Day_Duration := Day_Duration'First;
-       Tz : constant Long_Integer := Long_Integer (Time_Zone);
- 
-    begin
-       --  Validity checks
- 
-       if not Year'Valid
-         or else not Month'Valid
-         or else not Day'Valid
-         or else not Hour'Valid
-         or else not Minute'Valid
-         or else not Second'Valid
-         or else not Sub_Second'Valid
-         or else not Time_Zone'Valid
-       then
-          raise Constraint_Error;
-       end if;
- 
-       return
-         Formatting_Operations.Time_Of
-           (Year         => Year,
-            Month        => Month,
-            Day          => Day,
-            Day_Secs     => Dd,
-            Hour         => Hour,
-            Minute       => Minute,
-            Second       => Second,
-            Sub_Sec      => Sub_Second,
-            Leap_Sec     => Leap_Second,
-            Use_Day_Secs => False,
-            Use_TZ       => True,
-            Is_Historic  => True,
-            Time_Zone    => Tz);
-    end Time_Of;
- 
-    -----------
-    -- Value --
-    -----------
- 
-    function Value
-      (Date      : String;
-       Time_Zone : Time_Zones.Time_Offset := 0) return Time
-    is
-       D          : String (1 .. 22);
-       Year       : Year_Number;
-       Month      : Month_Number;
-       Day        : Day_Number;
-       Hour       : Hour_Number;
-       Minute     : Minute_Number;
-       Second     : Second_Number;
-       Sub_Second : Second_Duration := 0.0;
- 
-    begin
-       --  Validity checks
- 
-       if not Time_Zone'Valid then
-          raise Constraint_Error;
-       end if;
- 
-       --  Length checks
- 
-       if Date'Length /= 19
-         and then Date'Length /= 22
-       then
-          raise Constraint_Error;
-       end if;
- 
-       --  After the correct length has been determined, it is safe to copy the
-       --  Date in order to avoid Date'First + N indexing.
- 
-       D (1 .. Date'Length) := Date;
- 
-       --  Format checks
- 
-       Check_Char (D, '-', 5);
-       Check_Char (D, '-', 8);
-       Check_Char (D, ' ', 11);
-       Check_Char (D, ':', 14);
-       Check_Char (D, ':', 17);
- 
-       if Date'Length = 22 then
-          Check_Char (D, '.', 20);
-       end if;
- 
-       --  Leading zero checks
- 
-       Check_Digit (D, 6);
-       Check_Digit (D, 9);
-       Check_Digit (D, 12);
-       Check_Digit (D, 15);
-       Check_Digit (D, 18);
- 
-       if Date'Length = 22 then
-          Check_Digit (D, 21);
-       end if;
- 
-       --  Value extraction
- 
-       Year   := Year_Number   (Year_Number'Value   (D (1 .. 4)));
-       Month  := Month_Number  (Month_Number'Value  (D (6 .. 7)));
-       Day    := Day_Number    (Day_Number'Value    (D (9 .. 10)));
-       Hour   := Hour_Number   (Hour_Number'Value   (D (12 .. 13)));
-       Minute := Minute_Number (Minute_Number'Value (D (15 .. 16)));
-       Second := Second_Number (Second_Number'Value (D (18 .. 19)));
- 
-       --  Optional part
- 
-       if Date'Length = 22 then
-          Sub_Second := Second_Duration (Second_Duration'Value (D (20 .. 22)));
-       end if;
- 
-       --  Sanity checks
- 
-       if not Year'Valid
-         or else not Month'Valid
-         or else not Day'Valid
-         or else not Hour'Valid
-         or else not Minute'Valid
-         or else not Second'Valid
-         or else not Sub_Second'Valid
-       then
-          raise Constraint_Error;
-       end if;
- 
-       return Time_Of (Year, Month, Day,
-                       Hour, Minute, Second, Sub_Second, False, Time_Zone);
- 
-    exception
-       when others => raise Constraint_Error;
-    end Value;
- 
-    -----------
-    -- Value --
-    -----------
- 
-    function Value (Elapsed_Time : String) return Duration is
-       D          : String (1 .. 11);
-       Hour       : Hour_Number;
-       Minute     : Minute_Number;
-       Second     : Second_Number;
-       Sub_Second : Second_Duration := 0.0;
- 
-    begin
-       --  Length checks
- 
-       if Elapsed_Time'Length /= 8
-         and then Elapsed_Time'Length /= 11
-       then
-          raise Constraint_Error;
-       end if;
- 
-       --  After the correct length has been determined, it is safe to copy the
-       --  Elapsed_Time in order to avoid Date'First + N indexing.
- 
-       D (1 .. Elapsed_Time'Length) := Elapsed_Time;
- 
-       --  Format checks
- 
-       Check_Char (D, ':', 3);
-       Check_Char (D, ':', 6);
- 
-       if Elapsed_Time'Length = 11 then
-          Check_Char (D, '.', 9);
-       end if;
- 
-       --  Leading zero checks
- 
-       Check_Digit (D, 1);
-       Check_Digit (D, 4);
-       Check_Digit (D, 7);
- 
-       if Elapsed_Time'Length = 11 then
-          Check_Digit (D, 10);
-       end if;
- 
-       --  Value extraction
- 
-       Hour   := Hour_Number   (Hour_Number'Value   (D (1 .. 2)));
-       Minute := Minute_Number (Minute_Number'Value (D (4 .. 5)));
-       Second := Second_Number (Second_Number'Value (D (7 .. 8)));
- 
-       --  Optional part
- 
-       if Elapsed_Time'Length = 11 then
-          Sub_Second := Second_Duration (Second_Duration'Value (D (9 .. 11)));
-       end if;
- 
-       --  Sanity checks
- 
-       if not Hour'Valid
-         or else not Minute'Valid
-         or else not Second'Valid
-         or else not Sub_Second'Valid
-       then
-          raise Constraint_Error;
-       end if;
- 
-       return Seconds_Of (Hour, Minute, Second, Sub_Second);
- 
-    exception
-       when others => raise Constraint_Error;
-    end Value;
- 
-    ----------
-    -- Year --
-    ----------
- 
-    function Year
-      (Date      : Time;
-       Time_Zone : Time_Zones.Time_Offset := 0) return Year_Number
-    is
-       Y  : Year_Number;
-       Mo : Month_Number;
-       D  : Day_Number;
-       H  : Hour_Number;
-       Mi : Minute_Number;
-       Se : Second_Number;
-       Ss : Second_Duration;
-       Le : Boolean;
- 
-       pragma Unreferenced (Mo, D, H, Mi);
- 
-    begin
-       Split (Date, Y, Mo, D, H, Mi, Se, Ss, Le, Time_Zone);
-       return Y;
-    end Year;
- 
- end Ada.Calendar.Formatting;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-calfor.ads gcc-8.1.0/gcc/ada/a-calfor.ads
*** gcc-7.3.0/gcc/ada/a-calfor.ads	Mon Jan 27 16:43:29 2014
--- gcc-8.1.0/gcc/ada/a-calfor.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,215 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --              A D A . C A L E N D A R . F O R M A T T I N G               --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --         Copyright (C) 2005-2013, 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 --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This package provides additional components to Time, as well as new
- --  Time_Of and Split routines which handle time zones and leap seconds.
- --  This package is defined in the Ada 2005 RM (9.6.1).
- 
- with Ada.Calendar.Time_Zones;
- 
- package Ada.Calendar.Formatting is
- 
-    --  Day of the week
- 
-    type Day_Name is
-      (Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday);
- 
-    function Day_Of_Week (Date : Time) return Day_Name;
- 
-    --  Hours:Minutes:Seconds access
- 
-    subtype Hour_Number     is Natural range 0 .. 23;
-    subtype Minute_Number   is Natural range 0 .. 59;
-    subtype Second_Number   is Natural range 0 .. 59;
-    subtype Second_Duration is Day_Duration range 0.0 .. 1.0;
- 
-    function Year
-      (Date      : Time;
-       Time_Zone : Time_Zones.Time_Offset := 0) return Year_Number;
- 
-    function Month
-      (Date      : Time;
-       Time_Zone : Time_Zones.Time_Offset := 0) return Month_Number;
- 
-    function Day
-      (Date      : Time;
-       Time_Zone : Time_Zones.Time_Offset := 0) return Day_Number;
- 
-    function Hour
-      (Date      : Time;
-       Time_Zone : Time_Zones.Time_Offset := 0) return Hour_Number;
- 
-    function Minute
-      (Date      : Time;
-       Time_Zone : Time_Zones.Time_Offset := 0) return Minute_Number;
- 
-    function Second
-      (Date : Time)                             return Second_Number;
- 
-    function Sub_Second
-      (Date : Time)                             return Second_Duration;
- 
-    function Seconds_Of
-      (Hour       : Hour_Number;
-       Minute     : Minute_Number;
-       Second     : Second_Number := 0;
-       Sub_Second : Second_Duration := 0.0) return Day_Duration;
-    --  Returns a Day_Duration value for the combination of the given Hour,
-    --  Minute, Second, and Sub_Second. This value can be used in Ada.Calendar.
-    --  Time_Of as well as the argument to Calendar."+" and Calendar."-". If
-    --  Seconds_Of is called with a Sub_Second value of 1.0, the value returned
-    --  is equal to the value of Seconds_Of for the next second with a Sub_
-    --  Second value of 0.0.
- 
-    procedure Split
-      (Seconds    : Day_Duration;
-       Hour       : out Hour_Number;
-       Minute     : out Minute_Number;
-       Second     : out Second_Number;
-       Sub_Second : out Second_Duration);
-    --  Splits Seconds into Hour, Minute, Second and Sub_Second in such a way
-    --  that the resulting values all belong to their respective subtypes. The
-    --  value returned in the Sub_Second parameter is always less than 1.0.
- 
-    procedure Split
-      (Date       : Time;
-       Year       : out Year_Number;
-       Month      : out Month_Number;
-       Day        : out Day_Number;
-       Hour       : out Hour_Number;
-       Minute     : out Minute_Number;
-       Second     : out Second_Number;
-       Sub_Second : out Second_Duration;
-       Time_Zone  : Time_Zones.Time_Offset := 0);
-    --  Splits Date into its constituent parts (Year, Month, Day, Hour, Minute,
-    --  Second, Sub_Second), relative to the specified time zone offset. The
-    --  value returned in the Sub_Second parameter is always less than 1.0.
- 
-    function Time_Of
-      (Year        : Year_Number;
-       Month       : Month_Number;
-       Day         : Day_Number;
-       Hour        : Hour_Number;
-       Minute      : Minute_Number;
-       Second      : Second_Number;
-       Sub_Second  : Second_Duration := 0.0;
-       Leap_Second : Boolean := False;
-       Time_Zone   : Time_Zones.Time_Offset := 0) return Time;
-    --  If Leap_Second is False, returns a Time built from the date and time
-    --  values, relative to the specified time zone offset. If Leap_Second is
-    --  True, returns the Time that represents the time within the leap second
-    --  that is one second later than the time specified by the parameters.
-    --  Time_Error is raised if the parameters do not form a proper date or
-    --  time. If Time_Of is called with a Sub_Second value of 1.0, the value
-    --  returned is equal to the value of Time_Of for the next second with a
-    --  Sub_Second value of 0.0.
- 
-    function Time_Of
-      (Year        : Year_Number;
-       Month       : Month_Number;
-       Day         : Day_Number;
-       Seconds     : Day_Duration := 0.0;
-       Leap_Second : Boolean := False;
-       Time_Zone   : Time_Zones.Time_Offset := 0) return Time;
-    --  If Leap_Second is False, returns a Time built from the date and time
-    --  values, relative to the specified time zone offset. If Leap_Second is
-    --  True, returns the Time that represents the time within the leap second
-    --  that is one second later than the time specified by the parameters.
-    --  Time_Error is raised if the parameters do not form a proper date or
-    --  time. If Time_Of is called with a Seconds value of 86_400.0, the value
-    --  returned is equal to the value of Time_Of for the next day with a
-    --  Seconds value of 0.0.
- 
-    procedure Split
-      (Date        : Time;
-       Year        : out Year_Number;
-       Month       : out Month_Number;
-       Day         : out Day_Number;
-       Hour        : out Hour_Number;
-       Minute      : out Minute_Number;
-       Second      : out Second_Number;
-       Sub_Second  : out Second_Duration;
-       Leap_Second : out Boolean;
-       Time_Zone   : Time_Zones.Time_Offset := 0);
-    --  If Date does not represent a time within a leap second, splits Date
-    --  into its constituent parts (Year, Month, Day, Hour, Minute, Second,
-    --  Sub_Second), relative to the specified time zone offset, and sets
-    --  Leap_Second to False. If Date represents a time within a leap second,
-    --  set the constituent parts to values corresponding to a time one second
-    --  earlier than that given by Date, relative to the specified time zone
-    --  offset, and sets Leap_Seconds to True. The value returned in the
-    --  Sub_Second parameter is always less than 1.0.
- 
-    procedure Split
-      (Date        : Time;
-       Year        : out Year_Number;
-       Month       : out Month_Number;
-       Day         : out Day_Number;
-       Seconds     : out Day_Duration;
-       Leap_Second : out Boolean;
-       Time_Zone   : Time_Zones.Time_Offset := 0);
-    --  If Date does not represent a time within a leap second, splits Date
-    --  into its constituent parts (Year, Month, Day, Seconds), relative to the
-    --  specified time zone offset, and sets Leap_Second to False. If Date
-    --  represents a time within a leap second, set the constituent parts to
-    --  values corresponding to a time one second earlier than that given by
-    --  Date, relative to the specified time zone offset, and sets Leap_Seconds
-    --  to True. The value returned in the Seconds parameter is always less
-    --  than 86_400.0.
- 
-    --  Simple image and value
- 
-    function Image
-      (Date                  : Time;
-       Include_Time_Fraction : Boolean := False;
-       Time_Zone             : Time_Zones.Time_Offset := 0) return String;
-    --  Returns a string form of the Date relative to the given Time_Zone. The
-    --  format is "Year-Month-Day Hour:Minute:Second", where the Year is a
-    --  4-digit value, and all others are 2-digit values, of the functions
-    --  defined in Ada.Calendar and Ada.Calendar.Formatting, including a
-    --  leading zero, if needed. The separators between the values are a minus,
-    --  another minus, a colon, and a single space between the Day and Hour. If
-    --  Include_Time_Fraction is True, the integer part of Sub_Seconds*100 is
-    --  suffixed to the string as a point followed by a 2-digit value.
- 
-    function Value
-      (Date       : String;
-       Time_Zone  : Time_Zones.Time_Offset := 0) return Time;
-    --  Returns a Time value for the image given as Date, relative to the given
-    --  time zone. Constraint_Error is raised if the string is not formatted as
-    --  described for Image, or the function cannot interpret the given string
-    --  as a Time value.
- 
-    function Image
-      (Elapsed_Time          : Duration;
-       Include_Time_Fraction : Boolean := False) return String;
-    --  Returns a string form of the Elapsed_Time. The format is "Hour:Minute:
-    --  Second", where all values are 2-digit values, including a leading zero,
-    --  if needed. The separators between the values are colons. If Include_
-    --  Time_Fraction is True, the integer part of Sub_Seconds*100 is suffixed
-    --  to the string as a point followed by a 2-digit value. If Elapsed_Time <
-    --  0.0, the result is Image (abs Elapsed_Time, Include_Time_Fraction)
-    --  prefixed with a minus sign. If abs Elapsed_Time represents 100 hours or
-    --  more, the result is implementation-defined.
- 
-    function Value (Elapsed_Time : String) return Duration;
-    --  Returns a Duration value for the image given as Elapsed_Time.
-    --  Constraint_Error is raised if the string is not formatted as described
-    --  for Image, or the function cannot interpret the given string as a
-    --  Duration value.
- 
- end Ada.Calendar.Formatting;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-catizo.adb gcc-8.1.0/gcc/ada/a-catizo.adb
*** gcc-7.3.0/gcc/ada/a-catizo.adb	Mon Oct  1 09:41:22 2012
--- gcc-8.1.0/gcc/ada/a-catizo.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,69 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --              A D A . C A L E N D A R . T I M E _ Z O N E S               --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --         Copyright (C) 2009-2012, Free Software Foundation, Inc.          --
- --                                                                          --
- -- GNAT is 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 Ada.Calendar.Time_Zones is
- 
-    --------------------------
-    -- Implementation Notes --
-    --------------------------
- 
-    --  All operations in this package are target and time representation
-    --  independent, thus only one source file is needed for multiple targets.
- 
-    ---------------------
-    -- UTC_Time_Offset --
-    ---------------------
- 
-    function UTC_Time_Offset (Date : Time := Clock) return Time_Offset is
-       Offset_L : constant Long_Integer :=
-         Time_Zones_Operations.UTC_Time_Offset (Date);
-       Offset   : Time_Offset;
- 
-    begin
-       if Offset_L = Invalid_Time_Zone_Offset then
-          raise Unknown_Zone_Error;
-       end if;
- 
-       --  The offset returned by Time_Zones_Operations.UTC_Time_Offset is in
-       --  seconds, the returned value needs to be in minutes.
- 
-       Offset := Time_Offset (Offset_L / 60);
- 
-       --  Validity checks
- 
-       if not Offset'Valid then
-          raise Unknown_Zone_Error;
-       end if;
- 
-       return Offset;
-    end UTC_Time_Offset;
- 
- end Ada.Calendar.Time_Zones;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-catizo.ads gcc-8.1.0/gcc/ada/a-catizo.ads
*** gcc-7.3.0/gcc/ada/a-catizo.ads	Mon Jan 23 09:33:31 2012
--- gcc-8.1.0/gcc/ada/a-catizo.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,32 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --              A D A . C A L E N D A R . T I M E _ Z O N E S               --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This package provides routines to determine the offset of dates to GMT.
- --  It is defined in the Ada 2005 RM (9.6.1).
- 
- package Ada.Calendar.Time_Zones is
- 
-    --  Time zone manipulation
- 
-    type Time_Offset is range -(28 * 60) .. 28 * 60;
- 
-    Unknown_Zone_Error : exception;
- 
-    function UTC_Time_Offset (Date : Time := Clock) return Time_Offset;
-    --  Returns (in minutes), the difference between the implementation-defined
-    --  time zone of Calendar, and UTC time, at the time Date. If the time zone
-    --  of the Calendar implementation is unknown, raises Unknown_Zone_Error.
- 
- end Ada.Calendar.Time_Zones;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cbdlli.adb gcc-8.1.0/gcc/ada/a-cbdlli.adb
*** gcc-7.3.0/gcc/ada/a-cbdlli.adb	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-cbdlli.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,2394 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --               ADA.CONTAINERS.BOUNDED_DOUBLY_LINKED_LISTS                 --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Bounded_Doubly_Linked_Lists is
- 
-    pragma Warnings (Off, "variable ""Busy*"" is not referenced");
-    pragma Warnings (Off, "variable ""Lock*"" is not referenced");
-    --  See comment in Ada.Containers.Helpers
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    procedure Allocate
-      (Container : in out List;
-       New_Item  : Element_Type;
-       New_Node  : out Count_Type);
- 
-    procedure Allocate
-      (Container : in out List;
-       Stream    : not null access Root_Stream_Type'Class;
-       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);
- 
-    procedure Splice_Internal
-      (Target : in out List;
-       Before : Count_Type;
-       Source : in out List);
- 
-    procedure Splice_Internal
-      (Target  : in out List;
-       Before  : Count_Type;
-       Source  : in out List;
-       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
-    --  pass. Invocations of Vet are used here as the argument of pragma Assert,
-    --  so the checks are performed only when assertions are enabled.
- 
-    ---------
-    -- "=" --
-    ---------
- 
-    function "=" (Left, Right : List) return Boolean is
-    begin
-       if Left.Length /= Right.Length then
-          return False;
-       end if;
- 
-       if Left.Length = 0 then
-          return True;
-       end if;
- 
-       declare
-          --  Per AI05-0022, the container implementation is required to detect
-          --  element tampering by a generic actual subprogram.
- 
-          Lock_Left : With_Lock (Left.TC'Unrestricted_Access);
-          Lock_Right : With_Lock (Right.TC'Unrestricted_Access);
- 
-          LN : Node_Array renames Left.Nodes;
-          RN : Node_Array renames Right.Nodes;
- 
-          LI : Count_Type := Left.First;
-          RI : Count_Type := Right.First;
-       begin
-          for J in 1 .. Left.Length loop
-             if LN (LI).Element /= RN (RI).Element then
-                return False;
-             end if;
- 
-             LI := LN (LI).Next;
-             RI := RN (RI).Next;
-          end loop;
-       end;
- 
-       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;
- 
-          --  We always perform the assignment first, before we change container
-          --  state, in order to defend against exceptions duration assignment.
- 
-          N (New_Node).Element := New_Item;
-          Container.Free := N (New_Node).Next;
- 
-       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).
- 
-          New_Node := abs Container.Free;
- 
-          --  As above, we perform this assignment first, before modifying any
-          --  container state.
- 
-          N (New_Node).Element := New_Item;
-          Container.Free := Container.Free - 1;
-       end if;
-    end Allocate;
- 
-    procedure Allocate
-      (Container : in out List;
-       Stream    : not null access Root_Stream_Type'Class;
-       New_Node  : out Count_Type)
-    is
-       N : Node_Array renames Container.Nodes;
- 
-    begin
-       if Container.Free >= 0 then
-          New_Node := Container.Free;
- 
-          --  We always perform the assignment first, before we change container
-          --  state, in order to defend against exceptions duration assignment.
- 
-          Element_Type'Read (Stream, N (New_Node).Element);
-          Container.Free := N (New_Node).Next;
- 
-       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).
- 
-          New_Node := abs Container.Free;
- 
-          --  As above, we perform this assignment first, before modifying any
-          --  container state.
- 
-          Element_Type'Read (Stream, N (New_Node).Element);
-          Container.Free := Container.Free - 1;
-       end if;
-    end Allocate;
- 
-    ------------
-    -- Append --
-    ------------
- 
-    procedure Append
-      (Container : in out List;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1)
-    is
-    begin
-       Insert (Container, No_Element, New_Item, Count);
-    end Append;
- 
-    ------------
-    -- Assign --
-    ------------
- 
-    procedure Assign (Target : in out List; Source : List) is
-       SN : Node_Array renames Source.Nodes;
-       J  : Count_Type;
- 
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       if Checks and then Target.Capacity < Source.Length then
-          raise Capacity_Error  -- ???
-            with "Target capacity is less than Source length";
-       end if;
- 
-       Target.Clear;
- 
-       J := Source.First;
-       while J /= 0 loop
-          Target.Append (SN (J).Element);
-          J := SN (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);
-          pragma Assert (Container.TC = (Busy => 0, Lock => 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);
- 
-       TC_Check (Container.TC);
- 
-       while Container.Length > 1 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;
- 
-       X := Container.First;
-       pragma Assert (X = Container.Last);
- 
-       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 Constant_Reference_Type
-    is
-    begin
-       if Checks and then Position.Container = null then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor designates wrong container";
-       end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in Constant_Reference");
- 
-       declare
-          N : Node_Type renames Container.Nodes (Position.Node);
-          TC : constant Tamper_Counts_Access :=
-            Container.TC'Unrestricted_Access;
-       begin
-          return R : constant Constant_Reference_Type :=
-            (Element => N.Element'Access,
-             Control => (Controlled with TC))
-          do
-             Lock (TC.all);
-          end return;
-       end;
-    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 : Count_Type;
- 
-    begin
-       if Capacity = 0 then
-          C := Source.Length;
-       elsif Capacity >= Source.Length then
-          C := Capacity;
-       elsif Checks then
-          raise Capacity_Error with "Capacity value too small";
-       end if;
- 
-       return Target : List (Capacity => C) do
-          Assign (Target => Target, Source => Source);
-       end return;
-    end Copy;
- 
-    ------------
-    -- Delete --
-    ------------
- 
-    procedure Delete
-      (Container : in out List;
-       Position  : in out Cursor;
-       Count     : Count_Type := 1)
-    is
-       N : Node_Array renames Container.Nodes;
-       X : Count_Type;
- 
-    begin
-       if Checks and then Position.Node = 0 then
-          raise Constraint_Error with
-            "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor designates wrong container";
-       end if;
- 
-       pragma Assert (Vet (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;
- 
-       TC_Check (Container.TC);
- 
-       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;
- 
-          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;
-       Count     : Count_Type := 1)
-    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;
- 
-       TC_Check (Container.TC);
- 
-       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;
-       Count     : Count_Type := 1)
-    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;
- 
-       TC_Check (Container.TC);
- 
-       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 (Position : Cursor) return Element_Type is
-    begin
-       if Checks and then Position.Node = 0 then
-          raise Constraint_Error with
-            "Position cursor has no element";
-       end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in Element");
- 
-       return Position.Container.Nodes (Position.Node).Element;
-    end Element;
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    procedure Finalize (Object : in out Iterator) is
-    begin
-       if Object.Container /= null then
-          Unbusy (Object.Container.TC);
-       end if;
-    end Finalize;
- 
-    ----------
-    -- Find --
-    ----------
- 
-    function Find
-      (Container : List;
-       Item      : Element_Type;
-       Position  : Cursor := No_Element) return Cursor
-    is
-       Nodes : Node_Array renames Container.Nodes;
-       Node  : Count_Type := Position.Node;
- 
-    begin
-       if Node = 0 then
-          Node := Container.First;
- 
-       else
-          if Checks and then Position.Container /= Container'Unrestricted_Access
-          then
-             raise Program_Error with
-               "Position cursor designates wrong container";
-          end if;
- 
-          pragma Assert (Vet (Position), "bad cursor in Find");
-       end if;
- 
-       --  Per AI05-0022, the container implementation is required to detect
-       --  element tampering by a generic actual subprogram.
- 
-       declare
-          Lock : With_Lock (Container.TC'Unrestricted_Access);
-       begin
-          while Node /= 0 loop
-             if Nodes (Node).Element = Item then
-                return Cursor'(Container'Unrestricted_Access, Node);
-             end if;
- 
-             Node := Nodes (Node).Next;
-          end loop;
- 
-          return No_Element;
-       end;
-    end Find;
- 
-    -----------
-    -- First --
-    -----------
- 
-    function First (Container : List) return Cursor is
-    begin
-       if Container.First = 0 then
-          return No_Element;
-       else
-          return Cursor'(Container'Unrestricted_Access, Container.First);
-       end if;
-    end First;
- 
-    function First (Object : Iterator) return Cursor is
-    begin
-       --  The value of the iterator object's Node component influences the
-       --  behavior of the First (and Last) selector function.
- 
-       --  When the Node component is 0, this means the iterator object was
-       --  constructed without a start expression, in which case the (forward)
-       --  iteration starts from the (logical) beginning of the entire sequence
-       --  of items (corresponding to Container.First, for a forward iterator).
- 
-       --  Otherwise, this is iteration over a partial sequence of items. When
-       --  the Node component is positive, the iterator object was constructed
-       --  with a start expression, that specifies the position from which the
-       --  (forward) partial iteration begins.
- 
-       if Object.Node = 0 then
-          return Bounded_Doubly_Linked_Lists.First (Object.Container.all);
-       else
-          return Cursor'(Object.Container, Object.Node);
-       end if;
-    end First;
- 
-    -------------------
-    -- First_Element --
-    -------------------
- 
-    function First_Element (Container : List) return Element_Type is
-    begin
-       if Checks and then Container.First = 0 then
-          raise Constraint_Error with "list is empty";
-       end if;
- 
-       return Container.Nodes (Container.First).Element;
-    end First_Element;
- 
-    ----------
-    -- 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;
-       pragma Assert (N (X).Prev >= 0);  -- node is active
- 
-    begin
-       --  The list container actually contains two lists: one for the "active"
-       --  nodes that contain elements that have been inserted onto the list,
-       --  and another for the "inactive" nodes for 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).
- 
-       --  If the list container is manipulated on one end only (for example if
-       --  the container were being used as a stack), then there is no need to
-       --  initialize the free store, since the inactive nodes are physically
-       --  contiguous (in fact, they lie immediately beyond the logical end
-       --  being manipulated). The only time we need to actually initialize the
-       --  nodes in the free store is if the node that becomes inactive is not
-       --  at the end of the list. The free store would then be discontiguous
-       --  and so its nodes would need to be linked in the traditional way.
- 
-       --  ???
-       --  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 Prev component to a negative value, to
-       --  indicate that it is now inactive. This provides a useful way to
-       --  detect a dangling cursor reference (and which is used in Vet).
- 
-       N (X).Prev := -1;  -- Node is deallocated (not on active list)
- 
-       if Container.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.
- 
-          N (X).Next := Container.Free;
-          Container.Free := X;
- 
-       elsif X + 1 = abs Container.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.
- 
-          --  Note: initializing Next to zero is not strictly necessary but
-          --  seems cleaner and marginally safer.
- 
-          N (X).Next := 0;
-          Container.Free := Container.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.
- 
-          Container.Free := abs Container.Free;
- 
-          if Container.Free > Container.Capacity then
-             Container.Free := 0;
- 
-          else
-             for I in Container.Free .. Container.Capacity - 1 loop
-                N (I).Next := I + 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 is
- 
-       ---------------
-       -- Is_Sorted --
-       ---------------
- 
-       function Is_Sorted (Container : List) return Boolean is
-          --  Per AI05-0022, the container implementation is required to detect
-          --  element tampering by a generic actual subprogram.
- 
-          Lock : With_Lock (Container.TC'Unrestricted_Access);
- 
-          Nodes : Node_Array renames Container.Nodes;
-          Node  : Count_Type;
-       begin
-          Node := Container.First;
-          for J in 2 .. Container.Length loop
-             if Nodes (Nodes (Node).Next).Element < Nodes (Node).Element then
-                return False;
-             end if;
- 
-             Node := Nodes (Node).Next;
-          end loop;
- 
-          return True;
-       end Is_Sorted;
- 
-       -----------
-       -- Merge --
-       -----------
- 
-       procedure Merge
-         (Target : in out List;
-          Source : in out List)
-       is
-       begin
-          --  The semantics of Merge changed slightly per AI05-0021. It was
-          --  originally the case that if Target and Source denoted the same
-          --  container object, then the GNAT implementation of Merge did
-          --  nothing. However, it was argued that RM05 did not precisely
-          --  specify the semantics for this corner case. The decision of the
-          --  ARG was that if Target and Source denote the same non-empty
-          --  container object, then Program_Error is raised.
- 
-          if Source.Is_Empty then
-             return;
-          end if;
- 
-          if Checks and then Target'Address = Source'Address then
-             raise Program_Error with
-               "Target and Source denote same non-empty container";
-          end if;
- 
-          if Checks and then Target.Length > Count_Type'Last - Source.Length
-          then
-             raise Constraint_Error with "new length exceeds maximum";
-          end if;
- 
-          if Checks and then Target.Length + Source.Length > Target.Capacity
-          then
-             raise Capacity_Error with "new length exceeds target capacity";
-          end if;
- 
-          TC_Check (Target.TC);
-          TC_Check (Source.TC);
- 
-          --  Per AI05-0022, the container implementation is required to detect
-          --  element tampering by a generic actual subprogram.
- 
-          declare
-             Lock_Target : With_Lock (Target.TC'Unchecked_Access);
-             Lock_Source : With_Lock (Source.TC'Unchecked_Access);
- 
-             LN : Node_Array renames Target.Nodes;
-             RN : Node_Array renames Source.Nodes;
- 
-             LI, LJ, RI, RJ : Count_Type;
- 
-          begin
-             LI := Target.First;
-             RI := Source.First;
-             while RI /= 0 loop
-                pragma Assert (RN (RI).Next = 0
-                                 or else not (RN (RN (RI).Next).Element <
-                                                RN (RI).Element));
- 
-                if LI = 0 then
-                   Splice_Internal (Target, 0, Source);
-                   exit;
-                end if;
- 
-                pragma Assert (LN (LI).Next = 0
-                                 or else not (LN (LN (LI).Next).Element <
-                                                LN (LI).Element));
- 
-                if RN (RI).Element < LN (LI).Element then
-                   RJ := RI;
-                   RI := RN (RI).Next;
-                   Splice_Internal (Target, LI, Source, RJ, LJ);
- 
-                else
-                   LI := LN (LI).Next;
-                end if;
-             end loop;
-          end;
-       end Merge;
- 
-       ----------
-       -- Sort --
-       ----------
- 
-       procedure Sort (Container : in out List) is
-          N : Node_Array renames Container.Nodes;
- 
-          procedure Partition (Pivot, Back : Count_Type);
-          --  What does this do ???
- 
-          procedure Sort (Front, Back : Count_Type);
-          --  Internal procedure, what does it do??? rename it???
- 
-          ---------------
-          -- Partition --
-          ---------------
- 
-          procedure Partition (Pivot, Back : Count_Type) is
-             Node : Count_Type;
- 
-          begin
-             Node := N (Pivot).Next;
-             while Node /= Back loop
-                if N (Node).Element < N (Pivot).Element then
-                   declare
-                      Prev : constant Count_Type := N (Node).Prev;
-                      Next : constant Count_Type := N (Node).Next;
- 
-                   begin
-                      N (Prev).Next := Next;
- 
-                      if Next = 0 then
-                         Container.Last := Prev;
-                      else
-                         N (Next).Prev := Prev;
-                      end if;
- 
-                      N (Node).Next := Pivot;
-                      N (Node).Prev := N (Pivot).Prev;
- 
-                      N (Pivot).Prev := Node;
- 
-                      if N (Node).Prev = 0 then
-                         Container.First := Node;
-                      else
-                         N (N (Node).Prev).Next := Node;
-                      end if;
- 
-                      Node := Next;
-                   end;
- 
-                else
-                   Node := N (Node).Next;
-                end if;
-             end loop;
-          end Partition;
- 
-          ----------
-          -- Sort --
-          ----------
- 
-          procedure Sort (Front, Back : Count_Type) is
-             Pivot : constant Count_Type :=
-               (if Front = 0 then Container.First else N (Front).Next);
-          begin
-             if Pivot /= Back then
-                Partition (Pivot, Back);
-                Sort (Front, Pivot);
-                Sort (Pivot, Back);
-             end if;
-          end Sort;
- 
-       --  Start of processing for Sort
- 
-       begin
-          if Container.Length <= 1 then
-             return;
-          end if;
- 
-          pragma Assert (N (Container.First).Prev = 0);
-          pragma Assert (N (Container.Last).Next = 0);
- 
-          TC_Check (Container.TC);
- 
-          --  Per AI05-0022, the container implementation is required to detect
-          --  element tampering by a generic actual subprogram.
- 
-          declare
-             Lock : With_Lock (Container.TC'Unchecked_Access);
-          begin
-             Sort (Front => 0, Back => 0);
-          end;
- 
-          pragma Assert (N (Container.First).Prev = 0);
-          pragma Assert (N (Container.Last).Next = 0);
-       end Sort;
- 
-    end Generic_Sorting;
- 
-    ------------------------
-    -- Get_Element_Access --
-    ------------------------
- 
-    function Get_Element_Access
-      (Position : Cursor) return not null Element_Access is
-    begin
-       return Position.Container.Nodes (Position.Node).Element'Access;
-    end Get_Element_Access;
- 
-    -----------------
-    -- Has_Element --
-    -----------------
- 
-    function Has_Element (Position : Cursor) return Boolean is
-    begin
-       pragma Assert (Vet (Position), "bad cursor in Has_Element");
-       return Position.Node /= 0;
-    end Has_Element;
- 
-    ------------
-    -- Insert --
-    ------------
- 
-    procedure Insert
-      (Container : in out List;
-       Before    : Cursor;
-       New_Item  : Element_Type;
-       Position  : out Cursor;
-       Count     : Count_Type := 1)
-    is
-       First_Node : Count_Type;
-       New_Node   : Count_Type;
- 
-    begin
-       if Before.Container /= null then
-          if Checks and then Before.Container /= Container'Unrestricted_Access
-          then
-             raise Program_Error with
-               "Before cursor designates wrong list";
-          end if;
- 
-          pragma Assert (Vet (Before), "bad cursor in Insert");
-       end if;
- 
-       if Count = 0 then
-          Position := Before;
-          return;
-       end if;
- 
-       if Checks and then Container.Length > Container.Capacity - Count then
-          raise Capacity_Error with "capacity exceeded";
-       end if;
- 
-       TC_Check (Container.TC);
- 
-       Allocate (Container, New_Item, New_Node);
-       First_Node := New_Node;
-       Insert_Internal (Container, Before.Node, New_Node);
- 
-       for Index in Count_Type'(2) .. Count loop
-          Allocate (Container, New_Item, New_Node);
-          Insert_Internal (Container, Before.Node, New_Node);
-       end loop;
- 
-       Position := Cursor'(Container'Unchecked_Access, First_Node);
-    end Insert;
- 
-    procedure Insert
-      (Container : in out List;
-       Before    : Cursor;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1)
-    is
-       Position : Cursor;
-       pragma Unreferenced (Position);
-    begin
-       Insert (Container, Before, New_Item, Position, Count);
-    end Insert;
- 
-    procedure Insert
-      (Container : in out List;
-       Before    : Cursor;
-       Position  : out Cursor;
-       Count     : Count_Type := 1)
-    is
-       New_Item : Element_Type;
-       pragma Unmodified (New_Item);
-       --  OK to reference, see below
- 
-    begin
-       --  There is no explicit element provided, but in an instance the element
-       --  type may be a scalar with a Default_Value aspect, or a composite
-       --  type with such a scalar component, or components with default
-       --  initialization, so insert the specified number of possibly
-       --  initialized elements at the given position.
- 
-       Insert (Container, Before, New_Item, Position, Count);
-    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;
-          N (Container.First).Prev := 0;
- 
-          Container.Last := New_Node;
-          N (Container.Last).Next := 0;
- 
-       --  Before = zero means append
- 
-       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;
- 
-       --  Before = Container.First means prepend
- 
-       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 Container.Length = 0;
-    end Is_Empty;
- 
-    -------------
-    -- Iterate --
-    -------------
- 
-    procedure Iterate
-      (Container : List;
-       Process   : not null access procedure (Position : Cursor))
-    is
-       Busy : With_Busy (Container.TC'Unrestricted_Access);
-       Node : Count_Type := Container.First;
- 
-    begin
-       while Node /= 0 loop
-          Process (Cursor'(Container'Unrestricted_Access, Node));
-          Node := Container.Nodes (Node).Next;
-       end loop;
-    end Iterate;
- 
-    function Iterate
-      (Container : List)
-       return List_Iterator_Interfaces.Reversible_Iterator'Class
-    is
-    begin
-       --  The value of the Node component influences the behavior of the First
-       --  and Last selector functions of the iterator object. When the Node
-       --  component is 0 (as is the case here), this means the iterator
-       --  object was constructed without a start expression. This is a
-       --  complete iterator, meaning that the iteration starts from the
-       --  (logical) beginning of the sequence of items.
- 
-       --  Note: For a forward iterator, Container.First is the beginning, and
-       --  for a reverse iterator, Container.Last is the beginning.
- 
-       return It : constant Iterator :=
-                     Iterator'(Limited_Controlled with
-                                 Container => Container'Unrestricted_Access,
-                                 Node      => 0)
-       do
-          Busy (Container.TC'Unrestricted_Access.all);
-       end return;
-    end Iterate;
- 
-    function Iterate
-      (Container : List;
-       Start     : Cursor)
-       return List_Iterator_Interfaces.Reversible_Iterator'class
-    is
-    begin
-       --  It was formerly the case that when Start = No_Element, the partial
-       --  iterator was defined to behave the same as for a complete iterator,
-       --  and iterate over the entire sequence of items. However, those
-       --  semantics were unintuitive and arguably error-prone (it is too easy
-       --  to accidentally create an endless loop), and so they were changed,
-       --  per the ARG meeting in Denver on 2011/11. However, there was no
-       --  consensus about what positive meaning this corner case should have,
-       --  and so it was decided to simply raise an exception. This does imply,
-       --  however, that it is not possible to use a partial iterator to specify
-       --  an empty sequence of items.
- 
-       if Checks and then Start = No_Element then
-          raise Constraint_Error with
-            "Start position for iterator equals No_Element";
-       end if;
- 
-       if Checks and then Start.Container /= Container'Unrestricted_Access then
-          raise Program_Error with
-            "Start cursor of Iterate designates wrong list";
-       end if;
- 
-       pragma Assert (Vet (Start), "Start cursor of Iterate is bad");
- 
-       --  The value of the Node component influences the behavior of the First
-       --  and Last selector functions of the iterator object. When the Node
-       --  component is positive (as is the case here), it means that this
-       --  is a partial iteration, over a subset of the complete sequence of
-       --  items. The iterator object was constructed with a start expression,
-       --  indicating the position from which the iteration begins. Note that
-       --  the start position has the same value irrespective of whether this
-       --  is a forward or reverse iteration.
- 
-       return It : constant Iterator :=
-         Iterator'(Limited_Controlled with
-                     Container => Container'Unrestricted_Access,
-                     Node      => Start.Node)
-       do
-          Busy (Container.TC'Unrestricted_Access.all);
-       end return;
-    end Iterate;
- 
-    ----------
-    -- Last --
-    ----------
- 
-    function Last (Container : List) return Cursor is
-    begin
-       if Container.Last = 0 then
-          return No_Element;
-       else
-          return Cursor'(Container'Unrestricted_Access, Container.Last);
-       end if;
-    end Last;
- 
-    function Last (Object : Iterator) return Cursor is
-    begin
-       --  The value of the iterator object's Node component influences the
-       --  behavior of the Last (and First) selector function.
- 
-       --  When the Node component is 0, this means the iterator object was
-       --  constructed without a start expression, in which case the (reverse)
-       --  iteration starts from the (logical) beginning of the entire sequence
-       --  (corresponding to Container.Last, for a reverse iterator).
- 
-       --  Otherwise, this is iteration over a partial sequence of items. When
-       --  the Node component is positive, the iterator object was constructed
-       --  with a start expression, that specifies the position from which the
-       --  (reverse) partial iteration begins.
- 
-       if Object.Node = 0 then
-          return Bounded_Doubly_Linked_Lists.Last (Object.Container.all);
-       else
-          return Cursor'(Object.Container, Object.Node);
-       end if;
-    end Last;
- 
-    ------------------
-    -- Last_Element --
-    ------------------
- 
-    function Last_Element (Container : List) return Element_Type is
-    begin
-       if Checks and then Container.Last = 0 then
-          raise Constraint_Error with "list is empty";
-       end if;
- 
-       return Container.Nodes (Container.Last).Element;
-    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 Checks and then Target.Capacity < Source.Length then
-          raise Capacity_Error with "Source length exceeds Target capacity";
-       end if;
- 
-       TC_Check (Source.TC);
- 
-       --  Clear target, note that this checks busy bits of Target
- 
-       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);
- 
-          --  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 (Position : in out Cursor) is
-    begin
-       Position := Next (Position);
-    end Next;
- 
-    function Next (Position : Cursor) return Cursor is
-    begin
-       if Position.Node = 0 then
-          return No_Element;
-       end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in Next");
- 
-       declare
-          Nodes : Node_Array renames Position.Container.Nodes;
-          Node  : constant Count_Type := Nodes (Position.Node).Next;
-       begin
-          if Node = 0 then
-             return No_Element;
-          else
-             return Cursor'(Position.Container, Node);
-          end if;
-       end;
-    end Next;
- 
-    function Next
-      (Object   : Iterator;
-       Position : Cursor) return Cursor
-    is
-    begin
-       if Position.Container = null then
-          return No_Element;
-       end if;
- 
-       if Checks and then Position.Container /= Object.Container then
-          raise Program_Error with
-            "Position cursor of Next designates wrong list";
-       end if;
- 
-       return Next (Position);
-    end Next;
- 
-    -------------
-    -- Prepend --
-    -------------
- 
-    procedure Prepend
-      (Container : in out List;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1)
-    is
-    begin
-       Insert (Container, First (Container), New_Item, Count);
-    end Prepend;
- 
-    --------------
-    -- Previous --
-    --------------
- 
-    procedure Previous (Position : in out Cursor) is
-    begin
-       Position := Previous (Position);
-    end Previous;
- 
-    function Previous (Position : Cursor) return Cursor is
-    begin
-       if Position.Node = 0 then
-          return No_Element;
-       end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in Previous");
- 
-       declare
-          Nodes : Node_Array renames Position.Container.Nodes;
-          Node  : constant Count_Type := Nodes (Position.Node).Prev;
-       begin
-          if Node = 0 then
-             return No_Element;
-          else
-             return Cursor'(Position.Container, Node);
-          end if;
-       end;
-    end Previous;
- 
-    function Previous
-      (Object   : Iterator;
-       Position : Cursor) return Cursor
-    is
-    begin
-       if Position.Container = null then
-          return No_Element;
-       end if;
- 
-       if Checks and then Position.Container /= Object.Container then
-          raise Program_Error with
-            "Position cursor of Previous designates wrong list";
-       end if;
- 
-       return Previous (Position);
-    end Previous;
- 
-    ----------------------
-    -- Pseudo_Reference --
-    ----------------------
- 
-    function Pseudo_Reference
-      (Container : aliased List'Class) return Reference_Control_Type
-    is
-       TC : constant Tamper_Counts_Access := Container.TC'Unrestricted_Access;
-    begin
-       return R : constant Reference_Control_Type := (Controlled with TC) do
-          Lock (TC.all);
-       end return;
-    end Pseudo_Reference;
- 
-    -------------------
-    -- Query_Element --
-    -------------------
- 
-    procedure Query_Element
-      (Position : Cursor;
-       Process  : not null access procedure (Element : Element_Type))
-    is
-    begin
-       if Checks and then Position.Node = 0 then
-          raise Constraint_Error with
-            "Position cursor has no element";
-       end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in Query_Element");
- 
-       declare
-          Lock : With_Lock (Position.Container.TC'Unrestricted_Access);
-          C : List renames Position.Container.all'Unrestricted_Access.all;
-          N : Node_Type renames C.Nodes (Position.Node);
-       begin
-          Process (N.Element);
-       end;
-    end Query_Element;
- 
-    ----------
-    -- Read --
-    ----------
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out List)
-    is
-       N : Count_Type'Base;
-       X : Count_Type;
- 
-    begin
-       Clear (Item);
-       Count_Type'Base'Read (Stream, N);
- 
-       if Checks and then N < 0 then
-          raise Program_Error with "bad list length (corrupt stream)";
-       end if;
- 
-       if N = 0 then
-          return;
-       end if;
- 
-       if Checks and then N > Item.Capacity then
-          raise Constraint_Error with "length exceeds capacity";
-       end if;
- 
-       for Idx in 1 .. N loop
-          Allocate (Item, Stream, New_Node => X);
-          Insert_Internal (Item, Before => 0, New_Node => X);
-       end loop;
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Cursor)
-    is
-    begin
-       raise Program_Error with "attempt to stream list cursor";
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Constant_Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Read;
- 
-    ---------------
-    -- Reference --
-    ---------------
- 
-    function Reference
-      (Container : aliased in out List;
-       Position  : Cursor) return Reference_Type
-    is
-    begin
-       if Checks and then Position.Container = null then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor designates wrong container";
-       end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in function Reference");
- 
-       declare
-          N : Node_Type renames Container.Nodes (Position.Node);
-          TC : constant Tamper_Counts_Access :=
-            Container.TC'Unrestricted_Access;
-       begin
-          return R : constant Reference_Type :=
-            (Element => N.Element'Access,
-             Control => (Controlled with TC))
-          do
-             Lock (TC.all);
-          end return;
-       end;
-    end Reference;
- 
-    ---------------------
-    -- Replace_Element --
-    ---------------------
- 
-    procedure Replace_Element
-      (Container : in out List;
-       Position  : Cursor;
-       New_Item  : Element_Type)
-    is
-    begin
-       if Checks and then Position.Container = null then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unchecked_Access then
-          raise Program_Error with
-            "Position cursor designates wrong container";
-       end if;
- 
-       TE_Check (Container.TC);
- 
-       pragma Assert (Vet (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, R : Count_Type);
- 
-       ----------
-       -- Swap --
-       ----------
- 
-       procedure Swap (L, 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);
- 
-       TC_Check (Container.TC);
- 
-       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
-       Node : Count_Type := Position.Node;
- 
-    begin
-       if Node = 0 then
-          Node := Container.Last;
- 
-       else
-          if Checks and then Position.Container /= Container'Unrestricted_Access
-          then
-             raise Program_Error with
-               "Position cursor designates wrong container";
-          end if;
- 
-          pragma Assert (Vet (Position), "bad cursor in Reverse_Find");
-       end if;
- 
-       --  Per AI05-0022, the container implementation is required to detect
-       --  element tampering by a generic actual subprogram.
- 
-       declare
-          Lock : With_Lock (Container.TC'Unrestricted_Access);
-       begin
-          while Node /= 0 loop
-             if Container.Nodes (Node).Element = Item then
-                return Cursor'(Container'Unrestricted_Access, Node);
-             end if;
- 
-             Node := Container.Nodes (Node).Prev;
-          end loop;
- 
-          return No_Element;
-       end;
-    end Reverse_Find;
- 
-    ---------------------
-    -- Reverse_Iterate --
-    ---------------------
- 
-    procedure Reverse_Iterate
-      (Container : List;
-       Process   : not null access procedure (Position : Cursor))
-    is
-       Busy : With_Busy (Container.TC'Unrestricted_Access);
-       Node : Count_Type := Container.Last;
- 
-    begin
-       while Node /= 0 loop
-          Process (Cursor'(Container'Unrestricted_Access, Node));
-          Node := Container.Nodes (Node).Prev;
-       end loop;
-    end Reverse_Iterate;
- 
-    ------------
-    -- Splice --
-    ------------
- 
-    procedure Splice
-      (Target : in out List;
-       Before : Cursor;
-       Source : in out List)
-    is
-    begin
-       if Before.Container /= null then
-          if Checks and then Before.Container /= Target'Unrestricted_Access then
-             raise Program_Error with
-               "Before cursor designates wrong container";
-          end if;
- 
-          pragma Assert (Vet (Before), "bad cursor in Splice");
-       end if;
- 
-       if Target'Address = Source'Address or else Source.Length = 0 then
-          return;
-       end if;
- 
-       if Checks and then Target.Length > Count_Type'Last - Source.Length then
-          raise Constraint_Error with "new length exceeds maximum";
-       end if;
- 
-       if Checks and then Target.Length + Source.Length > Target.Capacity then
-          raise Capacity_Error with "new length exceeds target capacity";
-       end if;
- 
-       TC_Check (Target.TC);
-       TC_Check (Source.TC);
- 
-       Splice_Internal (Target, Before.Node, Source);
-    end Splice;
- 
-    procedure Splice
-      (Container : in out List;
-       Before    : Cursor;
-       Position  : Cursor)
-    is
-       N : Node_Array renames Container.Nodes;
- 
-    begin
-       if Before.Container /= null then
-          if Checks and then Before.Container /= Container'Unchecked_Access then
-             raise Program_Error with
-               "Before cursor designates wrong container";
-          end if;
- 
-          pragma Assert (Vet (Before), "bad Before cursor in Splice");
-       end if;
- 
-       if Checks and then Position.Node = 0 then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor designates wrong container";
-       end if;
- 
-       pragma Assert (Vet (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);
- 
-       TC_Check (Container.TC);
- 
-       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;
- 
-    procedure Splice
-      (Target   : in out List;
-       Before   : Cursor;
-       Source   : in out List;
-       Position : in out Cursor)
-    is
-       Target_Position : Count_Type;
- 
-    begin
-       if Target'Address = Source'Address then
-          Splice (Target, Before, Position);
-          return;
-       end if;
- 
-       if Before.Container /= null then
-          if Checks and then Before.Container /= Target'Unrestricted_Access then
-             raise Program_Error with
-               "Before cursor designates wrong container";
-          end if;
- 
-          pragma Assert (Vet (Before), "bad Before cursor in Splice");
-       end if;
- 
-       if Checks and then Position.Node = 0 then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Source'Unrestricted_Access then
-          raise Program_Error with
-            "Position cursor designates wrong container";
-       end if;
- 
-       pragma Assert (Vet (Position), "bad Position cursor in Splice");
- 
-       if Checks and then Target.Length >= Target.Capacity then
-          raise Capacity_Error with "Target is full";
-       end if;
- 
-       TC_Check (Target.TC);
-       TC_Check (Source.TC);
- 
-       Splice_Internal
-         (Target  => Target,
-          Before  => Before.Node,
-          Source  => Source,
-          Src_Pos => Position.Node,
-          Tgt_Pos => Target_Position);
- 
-       Position := Cursor'(Target'Unrestricted_Access, Target_Position);
-    end Splice;
- 
-    ---------------------
-    -- Splice_Internal --
-    ---------------------
- 
-    procedure Splice_Internal
-      (Target : in out List;
-       Before : Count_Type;
-       Source : in out List)
-    is
-       N : Node_Array renames Source.Nodes;
-       X : Count_Type;
- 
-    begin
-       --  This implements the corresponding Splice operation, after the
-       --  parameters have been vetted, and corner-cases disposed of.
- 
-       pragma Assert (Target'Address /= Source'Address);
-       pragma Assert (Source.Length > 0);
-       pragma Assert (Source.First /= 0);
-       pragma Assert (N (Source.First).Prev = 0);
-       pragma Assert (Source.Last /= 0);
-       pragma Assert (N (Source.Last).Next = 0);
-       pragma Assert (Target.Length <= Count_Type'Last - Source.Length);
-       pragma Assert (Target.Length + Source.Length <= Target.Capacity);
- 
-       while Source.Length > 1 loop
-          --  Copy first element of Source onto Target
- 
-          Allocate (Target, N (Source.First).Element, New_Node => X);
-          Insert_Internal (Target, Before => Before, New_Node => X);
- 
-          --  Unlink the first node from Source
- 
-          X := Source.First;
-          pragma Assert (N (N (X).Next).Prev = X);
- 
-          Source.First := N (X).Next;
-          N (Source.First).Prev := 0;
- 
-          Source.Length := Source.Length - 1;
- 
-          --  Return the Source node to its free store
- 
-          Free (Source, X);
-       end loop;
- 
-       --  Copy first (and only remaining) element of Source onto Target
- 
-       Allocate (Target, N (Source.First).Element, New_Node => X);
-       Insert_Internal (Target, Before => Before, New_Node => X);
- 
-       --  Unlink the node from Source
- 
-       X := Source.First;
-       pragma Assert (X = Source.Last);
- 
-       Source.First := 0;
-       Source.Last := 0;
- 
-       Source.Length := 0;
- 
-       --  Return the Source node to its free store
- 
-       Free (Source, X);
-    end Splice_Internal;
- 
-    procedure Splice_Internal
-      (Target  : in out List;
-       Before  : Count_Type;  -- node of Target
-       Source  : in out List;
-       Src_Pos : Count_Type;  -- node of Source
-       Tgt_Pos : out Count_Type)
-    is
-       N : Node_Array renames Source.Nodes;
- 
-    begin
-       --  This implements the corresponding Splice operation, after the
-       --  parameters have been vetted, and corner-cases handled.
- 
-       pragma Assert (Target'Address /= Source'Address);
-       pragma Assert (Target.Length < Target.Capacity);
-       pragma Assert (Source.Length > 0);
-       pragma Assert (Source.First /= 0);
-       pragma Assert (N (Source.First).Prev = 0);
-       pragma Assert (Source.Last /= 0);
-       pragma Assert (N (Source.Last).Next = 0);
-       pragma Assert (Src_Pos /= 0);
- 
-       Allocate (Target, N (Src_Pos).Element, New_Node => Tgt_Pos);
-       Insert_Internal (Target, Before => Before, New_Node => Tgt_Pos);
- 
-       if Source.Length = 1 then
-          pragma Assert (Source.First = Source.Last);
-          pragma Assert (Src_Pos = Source.First);
- 
-          Source.First := 0;
-          Source.Last := 0;
- 
-       elsif Src_Pos = Source.First then
-          pragma Assert (N (N (Src_Pos).Next).Prev = Src_Pos);
- 
-          Source.First := N (Src_Pos).Next;
-          N (Source.First).Prev := 0;
- 
-       elsif Src_Pos = Source.Last then
-          pragma Assert (N (N (Src_Pos).Prev).Next = Src_Pos);
- 
-          Source.Last := N (Src_Pos).Prev;
-          N (Source.Last).Next := 0;
- 
-       else
-          pragma Assert (Source.Length >= 3);
-          pragma Assert (N (N (Src_Pos).Next).Prev = Src_Pos);
-          pragma Assert (N (N (Src_Pos).Prev).Next = Src_Pos);
- 
-          N (N (Src_Pos).Next).Prev := N (Src_Pos).Prev;
-          N (N (Src_Pos).Prev).Next := N (Src_Pos).Next;
-       end if;
- 
-       Source.Length := Source.Length - 1;
-       Free (Source, Src_Pos);
-    end Splice_Internal;
- 
-    ----------
-    -- Swap --
-    ----------
- 
-    procedure Swap
-      (Container : in out List;
-       I, J      : Cursor)
-    is
-    begin
-       if Checks and then I.Node = 0 then
-          raise Constraint_Error with "I cursor has no element";
-       end if;
- 
-       if Checks and then J.Node = 0 then
-          raise Constraint_Error with "J cursor has no element";
-       end if;
- 
-       if Checks and then I.Container /= Container'Unchecked_Access then
-          raise Program_Error with "I cursor designates wrong container";
-       end if;
- 
-       if Checks and then J.Container /= Container'Unchecked_Access then
-          raise Program_Error with "J cursor designates wrong container";
-       end if;
- 
-       if I.Node = J.Node then
-          return;
-       end if;
- 
-       TE_Check (Container.TC);
- 
-       pragma Assert (Vet (I), "bad I cursor in Swap");
-       pragma Assert (Vet (J), "bad J cursor in Swap");
- 
-       declare
-          EI : Element_Type renames Container.Nodes (I.Node).Element;
-          EJ : Element_Type renames Container.Nodes (J.Node).Element;
- 
-          EI_Copy : constant Element_Type := EI;
- 
-       begin
-          EI := EJ;
-          EJ := EI_Copy;
-       end;
-    end Swap;
- 
-    ----------------
-    -- Swap_Links --
-    ----------------
- 
-    procedure Swap_Links
-      (Container : in out List;
-       I, J      : Cursor)
-    is
-    begin
-       if Checks and then I.Node = 0 then
-          raise Constraint_Error with "I cursor has no element";
-       end if;
- 
-       if Checks and then J.Node = 0 then
-          raise Constraint_Error with "J cursor has no element";
-       end if;
- 
-       if Checks and then I.Container /= Container'Unrestricted_Access then
-          raise Program_Error with "I cursor designates wrong container";
-       end if;
- 
-       if Checks and then J.Container /= Container'Unrestricted_Access then
-          raise Program_Error with "J cursor designates wrong container";
-       end if;
- 
-       if I.Node = J.Node then
-          return;
-       end if;
- 
-       TC_Check (Container.TC);
- 
-       pragma Assert (Vet (I), "bad I cursor in Swap_Links");
-       pragma Assert (Vet (J), "bad J cursor in Swap_Links");
- 
-       declare
-          I_Next : constant Cursor := Next (I);
- 
-       begin
-          if I_Next = J then
-             Splice (Container, Before => I, Position => J);
- 
-          else
-             declare
-                J_Next : constant Cursor := Next (J);
- 
-             begin
-                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;
-          end if;
-       end;
-    end Swap_Links;
- 
-    --------------------
-    -- Update_Element --
-    --------------------
- 
-    procedure Update_Element
-      (Container : in out List;
-       Position  : Cursor;
-       Process   : not null access procedure (Element : in out Element_Type))
-    is
-    begin
-       if Checks and then Position.Node = 0 then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unchecked_Access then
-          raise Program_Error with
-            "Position cursor designates wrong container";
-       end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in Update_Element");
- 
-       declare
-          Lock : With_Lock (Container.TC'Unchecked_Access);
-          N : Node_Type renames Container.Nodes (Position.Node);
-       begin
-          Process (N.Element);
-       end;
-    end Update_Element;
- 
-    ---------
-    -- Vet --
-    ---------
- 
-    function Vet (Position : Cursor) return Boolean is
-    begin
-       if Position.Node = 0 then
-          return Position.Container = null;
-       end if;
- 
-       if Position.Container = null then
-          return False;
-       end if;
- 
-       declare
-          L : List renames Position.Container.all;
-          N : Node_Array renames L.Nodes;
- 
-       begin
-          if L.Length = 0 then
-             return False;
-          end if;
- 
-          if L.First = 0 or L.First > L.Capacity then
-             return False;
-          end if;
- 
-          if L.Last = 0 or L.Last > 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 Position.Node > L.Capacity then
-             return False;
-          end if;
- 
-          --  An invariant of an active node is that its Previous and Next
-          --  components are non-negative. Operation Free sets the Previous
-          --  component of the node to the value -1 before actually deallocating
-          --  the node, to mark the node as inactive. (By "dellocating" we mean
-          --  only that the node is linked onto a list of inactive nodes used
-          --  for storage.) This marker gives us a simple way to detect a
-          --  dangling reference to a node.
- 
-          if N (Position.Node).Prev < 0 then  -- see Free
-             return False;
-          end if;
- 
-          if N (Position.Node).Prev > L.Capacity then
-             return False;
-          end if;
- 
-          if N (Position.Node).Next = Position.Node then
-             return False;
-          end if;
- 
-          if N (Position.Node).Prev = Position.Node then
-             return False;
-          end if;
- 
-          if N (Position.Node).Prev = 0
-            and then Position.Node /= L.First
-          then
-             return False;
-          end if;
- 
-          pragma Assert (N (Position.Node).Prev /= 0
-                           or else Position.Node = L.First);
- 
-          if N (Position.Node).Next = 0
-            and then Position.Node /= L.Last
-          then
-             return False;
-          end if;
- 
-          pragma Assert (N (Position.Node).Next /= 0
-                           or else Position.Node = L.Last);
- 
-          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;
- 
-          --  Eliminate earlier possibility
- 
-          if Position.Node = L.First then
-             return True;
-          end if;
- 
-          pragma Assert (N (Position.Node).Prev /= 0);
- 
-          --  Eliminate another possibility
- 
-          if Position.Node = L.Last then
-             return True;
-          end if;
- 
-          pragma Assert (N (Position.Node).Next /= 0);
- 
-          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;
-    end Vet;
- 
-    -----------
-    -- Write --
-    -----------
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : List)
-    is
-       Node : Count_Type;
- 
-    begin
-       Count_Type'Base'Write (Stream, Item.Length);
- 
-       Node := Item.First;
-       while Node /= 0 loop
-          Element_Type'Write (Stream, Item.Nodes (Node).Element);
-          Node := Item.Nodes (Node).Next;
-       end loop;
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Cursor)
-    is
-    begin
-       raise Program_Error with "attempt to stream list cursor";
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Constant_Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Write;
- 
- end Ada.Containers.Bounded_Doubly_Linked_Lists;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cbdlli.ads gcc-8.1.0/gcc/ada/a-cbdlli.ads
*** gcc-7.3.0/gcc/ada/a-cbdlli.ads	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-cbdlli.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,398 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --               ADA.CONTAINERS.BOUNDED_DOUBLY_LINKED_LISTS                 --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, 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/>.                                          --
- --                                                                          --
- -- This unit was originally developed by Matthew J Heaney.                  --
- ------------------------------------------------------------------------------
- 
- with Ada.Iterator_Interfaces;
- 
- with Ada.Containers.Helpers;
- private with Ada.Streams;
- private with Ada.Finalization;
- 
- generic
-    type Element_Type is private;
- 
-    with function "=" (Left, Right : Element_Type)
-       return Boolean is <>;
- 
- package Ada.Containers.Bounded_Doubly_Linked_Lists is
-    pragma Annotate (CodePeer, Skip_Analysis);
-    pragma Pure;
-    pragma Remote_Types;
- 
-    type List (Capacity : Count_Type) is tagged private with
-       Constant_Indexing => Constant_Reference,
-       Variable_Indexing => Reference,
-       Default_Iterator  => Iterate,
-       Iterator_Element  => Element_Type;
- 
-    pragma Preelaborable_Initialization (List);
- 
-    type Cursor is private;
-    pragma Preelaborable_Initialization (Cursor);
- 
-    Empty_List : constant List;
- 
-    No_Element : constant Cursor;
- 
-    function Has_Element (Position : Cursor) return Boolean;
- 
-    package List_Iterator_Interfaces is new
-      Ada.Iterator_Interfaces (Cursor, Has_Element);
- 
-    function "=" (Left, Right : List) return Boolean;
- 
-    function Length (Container : List) return Count_Type;
- 
-    function Is_Empty (Container : List) return Boolean;
- 
-    procedure Clear (Container : in out List);
- 
-    function Element (Position : Cursor) return Element_Type;
- 
-    procedure Replace_Element
-      (Container : in out List;
-       Position  : Cursor;
-       New_Item  : Element_Type);
- 
-    procedure Query_Element
-      (Position : Cursor;
-       Process  : not null access procedure (Element : Element_Type));
- 
-    procedure Update_Element
-      (Container : in out List;
-       Position  : Cursor;
-       Process   : not null access procedure (Element : in out Element_Type));
- 
-    type Constant_Reference_Type
-       (Element : not null access constant Element_Type) is private
-    with
-       Implicit_Dereference => Element;
- 
-    type Reference_Type
-      (Element : not null access Element_Type) is private
-    with
-       Implicit_Dereference => Element;
- 
-    function Constant_Reference
-      (Container : aliased List;
-       Position  : Cursor) return Constant_Reference_Type;
- 
-    function Reference
-      (Container : aliased in out List;
-       Position  : Cursor) return Reference_Type;
- 
-    procedure Assign (Target : in out List; Source : List);
- 
-    function Copy (Source : List; Capacity : Count_Type := 0) return List;
- 
-    procedure Move
-      (Target : in out List;
-       Source : in out List);
- 
-    procedure Insert
-      (Container : in out List;
-       Before    : Cursor;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1);
- 
-    procedure Insert
-      (Container : in out List;
-       Before    : Cursor;
-       New_Item  : Element_Type;
-       Position  : out Cursor;
-       Count     : Count_Type := 1);
- 
-    procedure Insert
-      (Container : in out List;
-       Before    : Cursor;
-       Position  : out Cursor;
-       Count     : Count_Type := 1);
- 
-    procedure Prepend
-      (Container : in out List;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1);
- 
-    procedure Append
-      (Container : in out List;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1);
- 
-    procedure Delete
-      (Container : in out List;
-       Position  : in out Cursor;
-       Count     : Count_Type := 1);
- 
-    procedure Delete_First
-      (Container : in out List;
-       Count     : Count_Type := 1);
- 
-    procedure Delete_Last
-      (Container : in out List;
-       Count     : Count_Type := 1);
- 
-    procedure Reverse_Elements (Container : in out List);
- 
-    function Iterate
-      (Container : List)
-       return List_Iterator_Interfaces.Reversible_Iterator'class;
- 
-    function Iterate
-      (Container : List;
-       Start     : Cursor)
-       return List_Iterator_Interfaces.Reversible_Iterator'class;
- 
-    procedure Swap
-      (Container : in out List;
-       I, J      : Cursor);
- 
-    procedure Swap_Links
-      (Container : in out List;
-       I, J      : Cursor);
- 
-    procedure Splice
-      (Target : in out List;
-       Before : Cursor;
-       Source : in out List);
- 
-    procedure Splice
-      (Target   : in out List;
-       Before   : Cursor;
-       Source   : in out List;
-       Position : in out Cursor);
- 
-    procedure Splice
-      (Container : in out List;
-       Before    : Cursor;
-       Position  : Cursor);
- 
-    function First (Container : List) return Cursor;
- 
-    function First_Element (Container : List) return Element_Type;
- 
-    function Last (Container : List) return Cursor;
- 
-    function Last_Element (Container : List) return Element_Type;
- 
-    function Next (Position : Cursor) return Cursor;
- 
-    procedure Next (Position : in out Cursor);
- 
-    function Previous (Position : Cursor) return Cursor;
- 
-    procedure Previous (Position : in out Cursor);
- 
-    function Find
-      (Container : List;
-       Item      : Element_Type;
-       Position  : Cursor := No_Element) return Cursor;
- 
-    function Reverse_Find
-      (Container : List;
-       Item      : Element_Type;
-       Position  : Cursor := No_Element) return Cursor;
- 
-    function Contains
-      (Container : List;
-       Item      : Element_Type) return Boolean;
- 
-    procedure Iterate
-      (Container : List;
-       Process   : not null access procedure (Position : Cursor));
- 
-    procedure Reverse_Iterate
-      (Container : List;
-       Process   : not null access procedure (Position : Cursor));
- 
-    generic
-       with function "<" (Left, Right : Element_Type) return Boolean is <>;
-    package Generic_Sorting is
- 
-       function Is_Sorted (Container : List) return Boolean;
- 
-       procedure Sort (Container : in out List);
- 
-       procedure Merge (Target, Source : in out List);
- 
-    end Generic_Sorting;
- 
- private
- 
-    pragma Inline (Next);
-    pragma Inline (Previous);
- 
-    use Ada.Containers.Helpers;
-    package Implementation is new Generic_Implementation;
-    use Implementation;
- 
-    use Ada.Streams;
-    use Ada.Finalization;
- 
-    type Node_Type is record
-       Prev    : Count_Type'Base;
-       Next    : Count_Type;
-       Element : aliased Element_Type;
-    end record;
- 
-    type Node_Array is array (Count_Type range <>) of Node_Type;
- 
-    type List (Capacity : Count_Type) is tagged record
-       Nodes  : Node_Array (1 .. Capacity) := (others => <>);
-       Free   : Count_Type'Base := -1;
-       First  : Count_Type := 0;
-       Last   : Count_Type := 0;
-       Length : Count_Type := 0;
-       TC     : aliased Tamper_Counts;
-    end record;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out List);
- 
-    for List'Read use Read;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : List);
- 
-    for List'Write use Write;
- 
-    type List_Access is access all List;
-    for List_Access'Storage_Size use 0;
- 
-    type Cursor is record
-       Container : List_Access;
-       Node      : Count_Type := 0;
-    end record;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Cursor);
- 
-    for Cursor'Read use Read;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Cursor);
- 
-    for Cursor'Write use Write;
- 
-    subtype Reference_Control_Type is Implementation.Reference_Control_Type;
-    --  It is necessary to rename this here, so that the compiler can find it
- 
-    type Constant_Reference_Type
-      (Element : not null access constant Element_Type) is
-       record
-          Control : Reference_Control_Type :=
-            raise Program_Error with "uninitialized reference";
-          --  The RM says, "The default initialization of an object of
-          --  type Constant_Reference_Type or Reference_Type propagates
-          --  Program_Error."
-       end record;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Constant_Reference_Type);
- 
-    for Constant_Reference_Type'Read use Read;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Constant_Reference_Type);
- 
-    for Constant_Reference_Type'Write use Write;
- 
-    type Reference_Type (Element : not null access Element_Type) is record
-       Control : Reference_Control_Type :=
-         raise Program_Error with "uninitialized reference";
-       --  The RM says, "The default initialization of an object of
-       --  type Constant_Reference_Type or Reference_Type propagates
-       --  Program_Error."
-    end record;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Reference_Type);
- 
-    for Reference_Type'Write use Write;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       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 List'Class) return Reference_Control_Type;
-    pragma Inline (Pseudo_Reference);
-    --  Creates an object of type Reference_Control_Type pointing to the
-    --  container, and increments the Lock. Finalization of this object will
-    --  decrement the Lock.
- 
-    type Element_Access is access all Element_Type with
-      Storage_Size => 0;
- 
-    function Get_Element_Access
-      (Position : Cursor) return not null Element_Access;
-    --  Returns a pointer to the element designated by Position.
- 
-    Empty_List : constant List := (Capacity => 0, others => <>);
- 
-    No_Element : constant Cursor := Cursor'(null, 0);
- 
-    type Iterator is new Limited_Controlled and
-      List_Iterator_Interfaces.Reversible_Iterator with
-    record
-       Container : List_Access;
-       Node      : Count_Type;
-    end record
-      with Disable_Controlled => not T_Check;
- 
-    overriding procedure Finalize (Object : in out Iterator);
- 
-    overriding function First (Object : Iterator) return Cursor;
-    overriding function Last  (Object : Iterator) return Cursor;
- 
-    overriding function Next
-      (Object   : Iterator;
-       Position : Cursor) return Cursor;
- 
-    overriding function Previous
-      (Object   : Iterator;
-       Position : Cursor) return Cursor;
- 
- end Ada.Containers.Bounded_Doubly_Linked_Lists;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cbhama.adb gcc-8.1.0/gcc/ada/a-cbhama.adb
*** gcc-7.3.0/gcc/ada/a-cbhama.adb	Wed Apr 27 13:15:25 2016
--- gcc-8.1.0/gcc/ada/a-cbhama.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,1252 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --   A D A . C O N T A I N E R S . B O U N D E D _ H A S H E D _ M A P S    --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2004-2016, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 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.Helpers; use Ada.Containers.Helpers;
- 
- with Ada.Containers.Prime_Numbers; use Ada.Containers.Prime_Numbers;
- 
- with System; use type System.Address;
- 
- package body Ada.Containers.Bounded_Hashed_Maps is
- 
-    pragma Warnings (Off, "variable ""Busy*"" is not referenced");
-    pragma Warnings (Off, "variable ""Lock*"" is not referenced");
-    --  See comment in Ada.Containers.Helpers
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    function Equivalent_Key_Node
-      (Key  : Key_Type;
-       Node : Node_Type) return Boolean;
-    pragma Inline (Equivalent_Key_Node);
- 
-    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 (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_Key_Node);
- 
-    ---------
-    -- "=" --
-    ---------
- 
-    function "=" (Left, Right : Map) return Boolean is
-       function Find_Equal_Key
-         (R_HT   : Hash_Table_Type'Class;
-          L_Node : Node_Type) return Boolean;
- 
-       function Is_Equal is new HT_Ops.Generic_Equal (Find_Equal_Key);
- 
-       --------------------
-       -- Find_Equal_Key --
-       --------------------
- 
-       function Find_Equal_Key
-         (R_HT   : Hash_Table_Type'Class;
-          L_Node : Node_Type) return Boolean
-       is
-          R_Index : constant Hash_Type := Key_Ops.Index (R_HT, L_Node.Key);
-          R_Node  : Count_Type := R_HT.Buckets (R_Index);
- 
-       begin
-          while R_Node /= 0 loop
-             if Equivalent_Keys (L_Node.Key, R_HT.Nodes (R_Node).Key) then
-                return L_Node.Element = R_HT.Nodes (R_Node).Element;
-             end if;
- 
-             R_Node := R_HT.Nodes (R_Node).Next;
-          end loop;
- 
-          return False;
-       end Find_Equal_Key;
- 
-    --  Start of processing for "="
- 
-    begin
-       return Is_Equal (Left, Right);
-    end "=";
- 
-    ------------
-    -- Assign --
-    ------------
- 
-    procedure Assign (Target : in out Map; Source : Map) 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.Nodes (Source_Node);
-          C : Cursor;
-          B : Boolean;
- 
-       begin
-          Insert (Target, N.Key, N.Element, C, B);
-          pragma Assert (B);
-       end Insert_Element;
- 
-    --  Start of processing for Assign
- 
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       if Checks and then Target.Capacity < Source.Length then
-          raise Capacity_Error
-            with "Target capacity is less than Source length";
-       end if;
- 
-       HT_Ops.Clear (Target);
-       Insert_Elements (Source);
-    end Assign;
- 
-    --------------
-    -- Capacity --
-    --------------
- 
-    function Capacity (Container : Map) return Count_Type is
-    begin
-       return Container.Capacity;
-    end Capacity;
- 
-    -----------
-    -- Clear --
-    -----------
- 
-    procedure Clear (Container : in out Map) is
-    begin
-       HT_Ops.Clear (Container);
-    end Clear;
- 
-    ------------------------
-    -- Constant_Reference --
-    ------------------------
- 
-    function Constant_Reference
-      (Container : aliased Map;
-       Position  : Cursor) return Constant_Reference_Type
-    is
-    begin
-       if Checks and then Position.Container = null then
-          raise Constraint_Error with
-            "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor designates wrong map";
-       end if;
- 
-       pragma Assert (Vet (Position),
-                      "Position cursor in Constant_Reference is bad");
- 
-       declare
-          N : Node_Type renames Container.Nodes (Position.Node);
-          TC : constant Tamper_Counts_Access :=
-            Container.TC'Unrestricted_Access;
-       begin
-          return R : constant Constant_Reference_Type :=
-            (Element => N.Element'Access,
-             Control => (Controlled with TC))
-          do
-             Lock (TC.all);
-          end return;
-       end;
-    end Constant_Reference;
- 
-    function Constant_Reference
-      (Container : aliased Map;
-       Key       : Key_Type) return Constant_Reference_Type
-    is
-       Node : constant Count_Type :=
-                Key_Ops.Find (Container'Unrestricted_Access.all, Key);
- 
-    begin
-       if Checks and then Node = 0 then
-          raise Constraint_Error with "key not in map";
-       end if;
- 
-       declare
-          N : Node_Type renames Container.Nodes (Node);
-          TC : constant Tamper_Counts_Access :=
-            Container.TC'Unrestricted_Access;
-       begin
-          return R : constant Constant_Reference_Type :=
-            (Element => N.Element'Access,
-             Control => (Controlled with TC))
-          do
-             Lock (TC.all);
-          end return;
-       end;
-    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;
-       Modulus  : Hash_Type := 0) return Map
-    is
-       C : Count_Type;
-       M : Hash_Type;
- 
-    begin
-       if Capacity = 0 then
-          C := Source.Length;
- 
-       elsif Capacity >= Source.Length then
-          C := Capacity;
- 
-       elsif Checks then
-          raise Capacity_Error with "Capacity value too small";
-       end if;
- 
-       if Modulus = 0 then
-          M := Default_Modulus (C);
-       else
-          M := Modulus;
-       end if;
- 
-       return Target : Map (Capacity => C, Modulus => M) do
-          Assign (Target => Target, Source => Source);
-       end return;
-    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, Key, X);
- 
-       if Checks and then X = 0 then
-          raise Constraint_Error with "attempt to delete key not in map";
-       end if;
- 
-       HT_Ops.Free (Container, X);
-    end Delete;
- 
-    procedure Delete (Container : in out Map; Position : in out Cursor) is
-    begin
-       if Checks and then Position.Node = 0 then
-          raise Constraint_Error with
-            "Position cursor of Delete equals No_Element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor of Delete designates wrong map";
-       end if;
- 
-       TC_Check (Container.TC);
- 
-       pragma Assert (Vet (Position), "bad cursor in Delete");
- 
-       HT_Ops.Delete_Node_Sans_Free (Container, Position.Node);
-       HT_Ops.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 :=
-                Key_Ops.Find (Container'Unrestricted_Access.all, Key);
- 
-    begin
-       if Checks and then Node = 0 then
-          raise Constraint_Error with
-            "no element available because key not in map";
-       end if;
- 
-       return Container.Nodes (Node).Element;
-    end Element;
- 
-    function Element (Position : Cursor) return Element_Type is
-    begin
-       if Checks and then Position.Node = 0 then
-          raise Constraint_Error with
-            "Position cursor of function Element equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in function Element");
- 
-       return Position.Container.Nodes (Position.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, Node.Key);
-    end Equivalent_Key_Node;
- 
-    ---------------------
-    -- Equivalent_Keys --
-    ---------------------
- 
-    function Equivalent_Keys (Left, Right : Cursor)
-      return Boolean is
-    begin
-       if Checks and then Left.Node = 0 then
-          raise Constraint_Error with
-            "Left cursor of Equivalent_Keys equals No_Element";
-       end if;
- 
-       if Checks and then Right.Node = 0 then
-          raise Constraint_Error with
-            "Right cursor of Equivalent_Keys equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Left), "Left cursor of Equivalent_Keys is bad");
-       pragma Assert (Vet (Right), "Right cursor of Equivalent_Keys is bad");
- 
-       declare
-          LN : Node_Type renames Left.Container.Nodes (Left.Node);
-          RN : Node_Type renames Right.Container.Nodes (Right.Node);
- 
-       begin
-          return Equivalent_Keys (LN.Key, RN.Key);
-       end;
-    end Equivalent_Keys;
- 
-    function Equivalent_Keys (Left : Cursor; Right : Key_Type) return Boolean is
-    begin
-       if Checks and then Left.Node = 0 then
-          raise Constraint_Error with
-            "Left cursor of Equivalent_Keys equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Left), "Left cursor in Equivalent_Keys is bad");
- 
-       declare
-          LN : Node_Type renames Left.Container.Nodes (Left.Node);
- 
-       begin
-          return Equivalent_Keys (LN.Key, Right);
-       end;
-    end Equivalent_Keys;
- 
-    function Equivalent_Keys (Left : Key_Type; Right : Cursor) return Boolean is
-    begin
-       if Checks and then Right.Node = 0 then
-          raise Constraint_Error with
-            "Right cursor of Equivalent_Keys equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Right), "Right cursor of Equivalent_Keys is bad");
- 
-       declare
-          RN : Node_Type renames Right.Container.Nodes (Right.Node);
- 
-       begin
-          return Equivalent_Keys (Left, RN.Key);
-       end;
-    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, Key, X);
-       HT_Ops.Free (Container, X);
-    end Exclude;
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    procedure Finalize (Object : in out Iterator) is
-    begin
-       if Object.Container /= null then
-          Unbusy (Object.Container.TC);
-       end if;
-    end Finalize;
- 
-    ----------
-    -- Find --
-    ----------
- 
-    function Find (Container : Map; Key : Key_Type) return Cursor is
-       Node : constant Count_Type :=
-                Key_Ops.Find (Container'Unrestricted_Access.all, Key);
-    begin
-       if Node = 0 then
-          return No_Element;
-       else
-          return Cursor'(Container'Unrestricted_Access, Node);
-       end if;
-    end Find;
- 
-    -----------
-    -- First --
-    -----------
- 
-    function First (Container : Map) return Cursor is
-       Node : constant Count_Type := HT_Ops.First (Container);
-    begin
-       if Node = 0 then
-          return No_Element;
-       else
-          return Cursor'(Container'Unrestricted_Access, Node);
-       end if;
-    end First;
- 
-    function First (Object : Iterator) return Cursor is
-    begin
-       return Object.Container.First;
-    end First;
- 
-    ------------------------
-    -- Get_Element_Access --
-    ------------------------
- 
-    function Get_Element_Access
-      (Position : Cursor) return not null Element_Access is
-    begin
-       return Position.Container.Nodes (Position.Node).Element'Access;
-    end Get_Element_Access;
- 
-    -----------------
-    -- Has_Element --
-    -----------------
- 
-    function Has_Element (Position : Cursor) return Boolean is
-    begin
-       pragma Assert (Vet (Position), "bad cursor in Has_Element");
-       return Position.Node /= 0;
-    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
-          TE_Check (Container.TC);
- 
-          declare
-             N : Node_Type renames Container.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;
-       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 HT_Ops.Generic_Allocate (Assign_Key);
- 
-       -----------------
-       --  Assign_Key --
-       -----------------
- 
-       procedure Assign_Key (Node : in out Node_Type) is
-          New_Item : Element_Type;
-          pragma Unmodified (New_Item);
-          --  Default-initialized element (ok to reference, see below)
- 
-       begin
-          Node.Key := Key;
- 
-          --  There is no explicit element provided, but in an instance the
-          --  element type may be a scalar with a Default_Value aspect, or a
-          --  composite type with such a scalar component, or components with
-          --  default initialization, so insert a possibly initialized element
-          --  under the given 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
-       --  The buckets array length is specified by the user as a discriminant
-       --  of the container type, so it is possible for the buckets array to
-       --  have a length of zero. We must check for this case specifically, in
-       --  order to prevent divide-by-zero errors later, when we compute the
-       --  buckets array index value for a key, given its hash value.
- 
-       if Checks and then Container.Buckets'Length = 0 then
-          raise Capacity_Error with "No capacity for insertion";
-       end if;
- 
-       Local_Insert (Container, Key, Position.Node, Inserted);
-       Position.Container := Container'Unchecked_Access;
-    end 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 HT_Ops.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
-       --  The buckets array length is specified by the user as a discriminant
-       --  of the container type, so it is possible for the buckets array to
-       --  have a length of zero. We must check for this case specifically, in
-       --  order to prevent divide-by-zero errors later, when we compute the
-       --  buckets array index value for a key, given its hash value.
- 
-       if Checks and then Container.Buckets'Length = 0 then
-          raise Capacity_Error with "No capacity for insertion";
-       end if;
- 
-       Local_Insert (Container, Key, Position.Node, Inserted);
-       Position.Container := Container'Unchecked_Access;
-    end Insert;
- 
-    procedure Insert
-      (Container : in out Map;
-       Key       : Key_Type;
-       New_Item  : Element_Type)
-    is
-       Position : Cursor;
-       pragma Unreferenced (Position);
- 
-       Inserted : Boolean;
- 
-    begin
-       Insert (Container, Key, New_Item, Position, Inserted);
- 
-       if Checks and then 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 Container.Length = 0;
-    end Is_Empty;
- 
-    -------------
-    -- Iterate --
-    -------------
- 
-    procedure Iterate
-      (Container : Map;
-       Process   : not null access procedure (Position : Cursor))
-    is
-       procedure Process_Node (Node : Count_Type);
-       pragma Inline (Process_Node);
- 
-       procedure Local_Iterate is new HT_Ops.Generic_Iteration (Process_Node);
- 
-       ------------------
-       -- Process_Node --
-       ------------------
- 
-       procedure Process_Node (Node : Count_Type) is
-       begin
-          Process (Cursor'(Container'Unrestricted_Access, Node));
-       end Process_Node;
- 
-       Busy : With_Busy (Container.TC'Unrestricted_Access);
- 
-    --  Start of processing for Iterate
- 
-    begin
-       Local_Iterate (Container);
-    end Iterate;
- 
-    function Iterate
-      (Container : Map) return Map_Iterator_Interfaces.Forward_Iterator'Class
-    is
-    begin
-       return It : constant Iterator :=
-         (Limited_Controlled with
-            Container => Container'Unrestricted_Access)
-       do
-          Busy (Container.TC'Unrestricted_Access.all);
-       end return;
-    end Iterate;
- 
-    ---------
-    -- Key --
-    ---------
- 
-    function Key (Position : Cursor) return Key_Type is
-    begin
-       if Checks and then Position.Node = 0 then
-          raise Constraint_Error with
-            "Position cursor of function Key equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in function Key");
- 
-       return Position.Container.Nodes (Position.Node).Key;
-    end Key;
- 
-    ------------
-    -- Length --
-    ------------
- 
-    function Length (Container : Map) return Count_Type is
-    begin
-       return Container.Length;
-    end Length;
- 
-    ----------
-    -- Move --
-    ----------
- 
-    procedure Move
-      (Target : in out Map;
-       Source : in out Map)
-    is
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       TC_Check (Source.TC);
- 
-       Target.Assign (Source);
-       Source.Clear;
-    end Move;
- 
-    ----------
-    -- Next --
-    ----------
- 
-    function Next (Node : Node_Type) return Count_Type is
-    begin
-       return Node.Next;
-    end Next;
- 
-    function Next (Position : Cursor) return Cursor is
-    begin
-       if Position.Node = 0 then
-          return No_Element;
-       end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in function Next");
- 
-       declare
-          M    : Map renames Position.Container.all;
-          Node : constant Count_Type := HT_Ops.Next (M, Position.Node);
-       begin
-          if Node = 0 then
-             return No_Element;
-          else
-             return Cursor'(Position.Container, Node);
-          end if;
-       end;
-    end Next;
- 
-    procedure Next (Position : in out Cursor) is
-    begin
-       Position := Next (Position);
-    end Next;
- 
-    function Next
-      (Object   : Iterator;
-       Position : Cursor) return Cursor
-    is
-    begin
-       if Position.Container = null then
-          return No_Element;
-       end if;
- 
-       if Checks and then Position.Container /= Object.Container then
-          raise Program_Error with
-            "Position cursor of Next designates wrong map";
-       end if;
- 
-       return Next (Position);
-    end Next;
- 
-    ----------------------
-    -- Pseudo_Reference --
-    ----------------------
- 
-    function Pseudo_Reference
-      (Container : aliased Map'Class) return Reference_Control_Type
-    is
-       TC : constant Tamper_Counts_Access :=
-         Container.TC'Unrestricted_Access;
-    begin
-       return R : constant Reference_Control_Type := (Controlled with TC) do
-          Lock (TC.all);
-       end return;
-    end Pseudo_Reference;
- 
-    -------------------
-    -- Query_Element --
-    -------------------
- 
-    procedure Query_Element
-      (Position : Cursor;
-       Process  : not null access
-                    procedure (Key : Key_Type; Element : Element_Type))
-    is
-    begin
-       if Checks and then Position.Node = 0 then
-          raise Constraint_Error with
-            "Position cursor of Query_Element equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in Query_Element");
- 
-       declare
-          M : Map renames Position.Container.all;
-          N : Node_Type renames M.Nodes (Position.Node);
-          Lock : With_Lock (M.TC'Unrestricted_Access);
-       begin
-          Process (N.Key, N.Element);
-       end;
-    end Query_Element;
- 
-    ----------
-    -- Read --
-    ----------
- 
-    procedure Read
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : out Map)
-    is
-       function Read_Node
-         (Stream : not null access Root_Stream_Type'Class) return Count_Type;
-       --  pragma Inline (Read_Node);  ???
- 
-       procedure Read_Nodes is new HT_Ops.Generic_Read (Read_Node);
- 
-       ---------------
-       -- Read_Node --
-       ---------------
- 
-       function Read_Node
-         (Stream : not null access Root_Stream_Type'Class) return Count_Type
-       is
-          procedure Read_Element (Node : in out Node_Type);
-          --  pragma Inline (Read_Element);  ???
- 
-          procedure Allocate is
-             new HT_Ops.Generic_Allocate (Read_Element);
- 
-          procedure Read_Element (Node : in out Node_Type) is
-          begin
-             Key_Type'Read (Stream, Node.Key);
-             Element_Type'Read (Stream, Node.Element);
-          end Read_Element;
- 
-          Node : Count_Type;
- 
-       --  Start of processing for Read_Node
- 
-       begin
-          Allocate (Container, Node);
-          return Node;
-       end Read_Node;
- 
-    --  Start of processing for Read
- 
-    begin
-       Read_Nodes (Stream, Container);
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Cursor)
-    is
-    begin
-       raise Program_Error with "attempt to stream map cursor";
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Constant_Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Read;
- 
-    ---------------
-    -- Reference --
-    ---------------
- 
-    function Reference
-      (Container : aliased in out Map;
-       Position  : Cursor) return Reference_Type
-    is
-    begin
-       if Checks and then Position.Container = null then
-          raise Constraint_Error with
-            "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor designates wrong map";
-       end if;
- 
-       pragma Assert (Vet (Position),
-                      "Position cursor in function Reference is bad");
- 
-       declare
-          N : Node_Type renames Container.Nodes (Position.Node);
-          TC : constant Tamper_Counts_Access :=
-            Container.TC'Unrestricted_Access;
-       begin
-          return R : constant Reference_Type :=
-            (Element => N.Element'Access,
-             Control => (Controlled with TC))
-          do
-             Lock (TC.all);
-          end return;
-       end;
-    end Reference;
- 
-    function Reference
-      (Container : aliased in out Map;
-       Key       : Key_Type) return Reference_Type
-    is
-       Node : constant Count_Type := Key_Ops.Find (Container, Key);
- 
-    begin
-       if Checks and then Node = 0 then
-          raise Constraint_Error with "key not in map";
-       end if;
- 
-       declare
-          N : Node_Type renames Container.Nodes (Node);
-          TC : constant Tamper_Counts_Access :=
-            Container.TC'Unrestricted_Access;
-       begin
-          return R : constant Reference_Type :=
-            (Element => N.Element'Access,
-             Control => (Controlled with TC))
-          do
-             Lock (TC.all);
-          end return;
-       end;
-    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, Key);
- 
-    begin
-       if Checks and then Node = 0 then
-          raise Constraint_Error with
-            "attempt to replace key not in map";
-       end if;
- 
-       TE_Check (Container.TC);
- 
-       declare
-          N : Node_Type renames Container.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 Checks and then Position.Node = 0 then
-          raise Constraint_Error with
-            "Position cursor of Replace_Element equals No_Element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor of Replace_Element designates wrong map";
-       end if;
- 
-       TE_Check (Position.Container.TC);
- 
-       pragma Assert (Vet (Position), "bad cursor in Replace_Element");
- 
-       Container.Nodes (Position.Node).Element := New_Item;
-    end Replace_Element;
- 
-    ----------------------
-    -- Reserve_Capacity --
-    ----------------------
- 
-    procedure Reserve_Capacity
-      (Container : in out Map;
-       Capacity  : Count_Type)
-    is
-    begin
-       if Checks and then 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;
- 
-    --------------------
-    -- Update_Element --
-    --------------------
- 
-    procedure Update_Element
-      (Container : in out Map;
-       Position  : Cursor;
-       Process   : not null access procedure (Key     : Key_Type;
-                                              Element : in out Element_Type))
-    is
-    begin
-       if Checks and then Position.Node = 0 then
-          raise Constraint_Error with
-            "Position cursor of Update_Element equals No_Element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor of Update_Element designates wrong map";
-       end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in Update_Element");
- 
-       declare
-          N : Node_Type renames Container.Nodes (Position.Node);
-          Lock : With_Lock (Container.TC'Unrestricted_Access);
-       begin
-          Process (N.Key, N.Element);
-       end;
-    end Update_Element;
- 
-    ---------
-    -- Vet --
-    ---------
- 
-    function Vet (Position : Cursor) return Boolean is
-    begin
-       if Position.Node = 0 then
-          return Position.Container = null;
-       end if;
- 
-       if Position.Container = null then
-          return False;
-       end if;
- 
-       declare
-          M : Map renames Position.Container.all;
-          X : Count_Type;
- 
-       begin
-          if M.Length = 0 then
-             return False;
-          end if;
- 
-          if M.Capacity = 0 then
-             return False;
-          end if;
- 
-          if M.Buckets'Length = 0 then
-             return False;
-          end if;
- 
-          if Position.Node > M.Capacity then
-             return False;
-          end if;
- 
-          if M.Nodes (Position.Node).Next = Position.Node then
-             return False;
-          end if;
- 
-          X := M.Buckets (Key_Ops.Checked_Index
-                           (M, M.Nodes (Position.Node).Key));
- 
-          for J in 1 .. M.Length loop
-             if X = Position.Node then
-                return True;
-             end if;
- 
-             if X = 0 then
-                return False;
-             end if;
- 
-             if X = M.Nodes (X).Next then  --  to prevent unnecessary looping
-                return False;
-             end if;
- 
-             X := M.Nodes (X).Next;
-          end loop;
- 
-          return False;
-       end;
-    end Vet;
- 
-    -----------
-    -- Write --
-    -----------
- 
-    procedure Write
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : Map)
-    is
-       procedure Write_Node
-         (Stream : not null access Root_Stream_Type'Class;
-          Node   : Node_Type);
-       pragma Inline (Write_Node);
- 
-       procedure Write_Nodes is new HT_Ops.Generic_Write (Write_Node);
- 
-       ----------------
-       -- Write_Node --
-       ----------------
- 
-       procedure Write_Node
-         (Stream : not null access Root_Stream_Type'Class;
-          Node   : Node_Type)
-       is
-       begin
-          Key_Type'Write (Stream, Node.Key);
-          Element_Type'Write (Stream, Node.Element);
-       end Write_Node;
- 
-    --  Start of processing for Write
- 
-    begin
-       Write_Nodes (Stream, Container);
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Cursor)
-    is
-    begin
-       raise Program_Error with "attempt to stream map cursor";
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Constant_Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Write;
- 
- end Ada.Containers.Bounded_Hashed_Maps;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cbhama.ads gcc-8.1.0/gcc/ada/a-cbhama.ads
*** gcc-7.3.0/gcc/ada/a-cbhama.ads	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-cbhama.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,468 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --   A D A . C O N T A I N E R S . B O U N D E D _ H A S H E D _ M A P S    --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, 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/>.                                          --
- --                                                                          --
- -- This unit was originally developed by Matthew J Heaney.                  --
- ------------------------------------------------------------------------------
- 
- with Ada.Iterator_Interfaces;
- 
- private with Ada.Containers.Hash_Tables;
- private with Ada.Streams;
- private with Ada.Finalization;
- 
- 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, Right : Key_Type) return Boolean;
-    with function "=" (Left, Right : Element_Type) return Boolean is <>;
- 
- package Ada.Containers.Bounded_Hashed_Maps is
-    pragma Annotate (CodePeer, Skip_Analysis);
-    pragma Pure;
-    pragma Remote_Types;
- 
-    type Map (Capacity : Count_Type; Modulus : Hash_Type) is tagged private with
-       Constant_Indexing => Constant_Reference,
-       Variable_Indexing => Reference,
-       Default_Iterator  => Iterate,
-       Iterator_Element  => Element_Type;
- 
-    pragma Preelaborable_Initialization (Map);
- 
-    type Cursor is private;
-    pragma Preelaborable_Initialization (Cursor);
- 
-    Empty_Map : constant Map;
-    --  Map objects declared without an initialization expression are
-    --  initialized to the value Empty_Map.
- 
-    No_Element : constant Cursor;
-    --  Cursor objects declared without an initialization expression are
-    --  initialized to the value No_Element.
- 
-    function Has_Element (Position : Cursor) return Boolean;
-    --  Equivalent to Position /= No_Element
- 
-    package Map_Iterator_Interfaces is new
-      Ada.Iterator_Interfaces (Cursor, Has_Element);
- 
-    function "=" (Left, Right : Map) return Boolean;
-    --  For each key/element pair in Left, equality attempts to find the key in
-    --  Right; if a search fails the equality returns False. The search works by
-    --  calling Hash to find the bucket in the Right map that corresponds to the
-    --  Left key. If bucket is non-empty, then equality calls Equivalent_Keys
-    --  to compare the key (in Left) to the key of each node in the bucket (in
-    --  Right); if the keys are equivalent, then the equality test for this
-    --  key/element pair (in Left) completes by calling the element equality
-    --  operator to compare the element (in Left) to the element of the node
-    --  (in Right) whose key matched.
- 
-    function Capacity (Container : Map) return Count_Type;
-    --  Returns the current capacity of the map. Capacity is the maximum length
-    --  before which rehashing in guaranteed not to occur.
- 
-    procedure Reserve_Capacity (Container : in out Map; Capacity : Count_Type);
-    --  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 Default_Modulus (Capacity : Count_Type) return Hash_Type;
-    --  Returns a modulus value (hash table size) which is optimal for the
-    --  specified capacity (which corresponds to the maximum number of items).
- 
-    function Length (Container : Map) return Count_Type;
-    --  Returns the number of items in the map
- 
-    function Is_Empty (Container : Map) return Boolean;
-    --  Equivalent to Length (Container) = 0
- 
-    procedure Clear (Container : in out Map);
-    --  Removes all of the items from the map
- 
-    function Key (Position : Cursor) return Key_Type;
-    --  Returns the key of the node designated by the cursor
- 
-    function Element (Position : Cursor) return Element_Type;
-    --  Returns the element of the node designated by the cursor
- 
-    procedure Replace_Element
-      (Container : in out Map;
-       Position  : Cursor;
-       New_Item  : Element_Type);
-    --  Assigns the value New_Item to the element designated by the cursor
- 
-    procedure Query_Element
-      (Position : Cursor;
-       Process  : not null access
-                    procedure (Key : Key_Type; Element : Element_Type));
-    --  Calls Process with the key and element (both having only a constant
-    --  view) of the node designed by the cursor.
- 
-    procedure Update_Element
-      (Container : in out Map;
-       Position  : Cursor;
-       Process   : not null access
-                     procedure (Key : Key_Type; Element : in out Element_Type));
-    --  Calls Process with the key (with only a constant view) and element (with
-    --  a variable view) of the node designed by the cursor.
- 
-    type Constant_Reference_Type
-       (Element : not null access constant Element_Type) is
-    private
-    with
-       Implicit_Dereference => Element;
- 
-    type Reference_Type (Element : not null access Element_Type) is private
-    with
-       Implicit_Dereference => Element;
- 
-    function Constant_Reference
-      (Container : aliased Map;
-       Position  : Cursor) return Constant_Reference_Type;
- 
-    function Reference
-      (Container : aliased in out Map;
-       Position  : Cursor) return Reference_Type;
- 
-    function Constant_Reference
-      (Container : aliased Map;
-       Key       : Key_Type) return Constant_Reference_Type;
- 
-    function Reference
-      (Container : aliased in out Map;
-       Key       : Key_Type) return Reference_Type;
- 
-    procedure Assign (Target : in out Map; Source : Map);
-    --  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   : Map;
-       Capacity : Count_Type := 0;
-       Modulus  : Hash_Type := 0) return Map;
-    --  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.
- 
-    procedure Move (Target : in out Map; Source : in out Map);
-    --  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 Map;
-       Key       : Key_Type;
-       New_Item  : Element_Type;
-       Position  : out Cursor;
-       Inserted  : out Boolean);
-    --  Conditionally inserts New_Item into the map. If Key is already in the
-    --  map, then Inserted returns False and Position designates the node
-    --  containing the existing key/element pair (neither of which is modified).
-    --  If Key is not already in the map, the Inserted returns True and Position
-    --  designates the newly-inserted node container Key and New_Item. The
-    --  search for the key works as follows. Hash is called to determine Key's
-    --  bucket; if the bucket is non-empty, then Equivalent_Keys is called to
-    --  compare Key to each node in that bucket. If the bucket is empty, or
-    --  there were no matching keys in the bucket, the search "fails" and the
-    --  key/item pair is inserted in the map (and Inserted returns True);
-    --  otherwise, the search "succeeds" (and Inserted returns False).
- 
-    procedure Insert
-      (Container : in out Map;
-       Key       : Key_Type;
-       Position  : out Cursor;
-       Inserted  : out Boolean);
-    --  The same as the (conditional) Insert that accepts an element parameter,
-    --  with the difference that if Inserted returns True, then the element of
-    --  the newly-inserted node is initialized to its default value.
- 
-    procedure Insert
-      (Container : in out Map;
-       Key       : Key_Type;
-       New_Item  : Element_Type);
-    --  Attempts to insert Key into the map, performing the usual search (which
-    --  involves calling both Hash and Equivalent_Keys); if the search succeeds
-    --  (because Key is already in the map), then it 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
-    --  Key is not already in the map.)
- 
-    procedure Include
-      (Container : in out Map;
-       Key       : Key_Type;
-       New_Item  : Element_Type);
-    --  Attempts to insert Key into the map. If Key is already in the map, then
-    --  both the existing key and element are assigned the values of Key and
-    --  New_Item, respectively. (This version of Insert only raises an exception
-    --  if cursor tampering occurs. It is intended for use when you want to
-    --  insert the key/element pair in the map, and you don't care whether Key
-    --  is already present.)
- 
-    procedure Replace
-      (Container : in out Map;
-       Key       : Key_Type;
-       New_Item  : Element_Type);
-    --  Searches for Key in the map; if the search fails (because Key was not in
-    --  the map), then it raises Constraint_Error. Otherwise, both the existing
-    --  key and element are assigned the values of Key and New_Item rsp. (This
-    --  is similar to Insert, but with the opposite exception behavior. It is to
-    --  be used when you want to assert that Key is already in the map.)
- 
-    procedure Exclude (Container : in out Map; Key : Key_Type);
-    --  Searches for Key in the map, and if found, removes its node from the map
-    --  and then deallocates it. The search works as follows. The operation
-    --  calls Hash to determine the key's bucket; if the bucket is not empty, it
-    --  calls Equivalent_Keys to compare Key to each key in the bucket. (This is
-    --  the deletion analog of Include. It is intended for use when you want to
-    --  remove the item from the map, but don't care whether the key is already
-    --  in the map.)
- 
-    procedure Delete (Container : in out Map; Key : Key_Type);
-    --  Searches for Key in the map (which involves calling both Hash and
-    --  Equivalent_Keys). If the search fails, then the operation raises
-    --  Constraint_Error. Otherwise it removes the node from the map 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 map.)
- 
-    procedure Delete (Container : in out Map; Position : in out Cursor);
-    --  Removes the node designated by Position from the map, 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_Keys).
- 
-    function First (Container : Map) return Cursor;
-    --  Returns a cursor that designates the first non-empty bucket, by
-    --  searching from the beginning of the buckets array.
- 
-    function Next (Position : Cursor) return Cursor;
-    --  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 (Position : in out Cursor);
-    --  Equivalent to Position := Next (Position)
- 
-    function Find (Container : Map; Key : Key_Type) return Cursor;
-    --  Searches for Key in the map. Find calls Hash to determine the key's
-    --  bucket; if the bucket is not empty, it calls Equivalent_Keys to compare
-    --  Key to each key in the bucket. If the search succeeds, Find returns a
-    --  cursor designating the matching node; otherwise, it returns No_Element.
- 
-    function Contains (Container : Map; Key : Key_Type) return Boolean;
-    --  Equivalent to Find (Container, Key) /= No_Element
- 
-    function Element (Container : Map; Key : Key_Type) return Element_Type;
-    --  Equivalent to Element (Find (Container, Key))
- 
-    function Equivalent_Keys (Left, Right : Cursor) return Boolean;
-    --  Returns the result of calling Equivalent_Keys with the keys of the nodes
-    --  designated by cursors Left and Right.
- 
-    function Equivalent_Keys (Left : Cursor; Right : Key_Type) return Boolean;
-    --  Returns the result of calling Equivalent_Keys with key of the node
-    --  designated by Left and key Right.
- 
-    function Equivalent_Keys (Left : Key_Type; Right : Cursor) return Boolean;
-    --  Returns the result of calling Equivalent_Keys with key Left and the node
-    --  designated by Right.
- 
-    procedure Iterate
-      (Container : Map;
-       Process   : not null access procedure (Position : Cursor));
-    --  Calls Process for each node in the map
- 
-    function Iterate (Container : Map)
-       return Map_Iterator_Interfaces.Forward_Iterator'class;
- 
- private
-    pragma Inline (Length);
-    pragma Inline (Is_Empty);
-    pragma Inline (Clear);
-    pragma Inline (Key);
-    pragma Inline (Element);
-    pragma Inline (Move);
-    pragma Inline (Contains);
-    pragma Inline (Capacity);
-    pragma Inline (Reserve_Capacity);
-    pragma Inline (Has_Element);
-    pragma Inline (Next);
- 
-    type Node_Type is record
-       Key     : Key_Type;
-       Element : aliased Element_Type;
-       Next    : Count_Type;
-    end record;
- 
-    package HT_Types is
-      new Hash_Tables.Generic_Bounded_Hash_Table_Types (Node_Type);
- 
-    type Map (Capacity : Count_Type; Modulus : Hash_Type) is
-       new HT_Types.Hash_Table_Type (Capacity, Modulus) with null record;
- 
-    use HT_Types, HT_Types.Implementation;
-    use Ada.Streams;
-    use Ada.Finalization;
- 
-    procedure Write
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : Map);
- 
-    for Map'Write use Write;
- 
-    procedure Read
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : out Map);
- 
-    for Map'Read use Read;
- 
-    type Map_Access is access all Map;
-    for Map_Access'Storage_Size use 0;
- 
-    --  Note: If a Cursor object has no explicit initialization expression,
-    --  it must default initialize to the same value as constant No_Element.
-    --  The Node component of type Cursor has scalar type Count_Type, so it
-    --  requires an explicit initialization expression of its own declaration,
-    --  in order for objects of record type Cursor to properly initialize.
- 
-    type Cursor is record
-       Container : Map_Access;
-       Node      : Count_Type := 0;
-    end record;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Cursor);
- 
-    for Cursor'Read use Read;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Cursor);
- 
-    for Cursor'Write use Write;
- 
-    subtype Reference_Control_Type is Implementation.Reference_Control_Type;
-    --  It is necessary to rename this here, so that the compiler can find it
- 
-    type Constant_Reference_Type
-      (Element : not null access constant Element_Type) is
-       record
-          Control : Reference_Control_Type :=
-            raise Program_Error with "uninitialized reference";
-          --  The RM says, "The default initialization of an object of
-          --  type Constant_Reference_Type or Reference_Type propagates
-          --  Program_Error."
-       end record;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Constant_Reference_Type);
- 
-    for Constant_Reference_Type'Write use Write;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Constant_Reference_Type);
- 
-    for Constant_Reference_Type'Read use Read;
- 
-    type Reference_Type (Element : not null access Element_Type) is record
-       Control : Reference_Control_Type :=
-         raise Program_Error with "uninitialized reference";
-       --  The RM says, "The default initialization of an object of
-       --  type Constant_Reference_Type or Reference_Type propagates
-       --  Program_Error."
-    end record;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Reference_Type);
- 
-    for Reference_Type'Write use Write;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       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 Sem_Ch5 for
-    --  details.
- 
-    function Pseudo_Reference
-      (Container : aliased Map'Class) return Reference_Control_Type;
-    pragma Inline (Pseudo_Reference);
-    --  Creates an object of type Reference_Control_Type pointing to the
-    --  container, and increments the Lock. Finalization of this object will
-    --  decrement the Lock.
- 
-    type Element_Access is access all Element_Type with
-      Storage_Size => 0;
- 
-    function Get_Element_Access
-      (Position : Cursor) return not null Element_Access;
-    --  Returns a pointer to the element designated by Position.
- 
-    Empty_Map : constant Map :=
-                  (Hash_Table_Type with Capacity => 0, Modulus => 0);
- 
-    No_Element : constant Cursor := (Container => null, Node => 0);
- 
-    type Iterator is new Limited_Controlled and
-      Map_Iterator_Interfaces.Forward_Iterator with
-    record
-       Container : Map_Access;
-    end record
-      with Disable_Controlled => not T_Check;
- 
-    overriding procedure Finalize (Object : in out Iterator);
- 
-    overriding function First (Object : Iterator) return Cursor;
- 
-    overriding function Next
-      (Object   : Iterator;
-       Position : Cursor) return Cursor;
- 
- end Ada.Containers.Bounded_Hashed_Maps;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cbhase.adb gcc-8.1.0/gcc/ada/a-cbhase.adb
*** gcc-7.3.0/gcc/ada/a-cbhase.adb	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-cbhase.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,1946 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --    A D A . C O N T A I N E R S . B O U N D E D _ H A S H E D _ S E T S   --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 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.Helpers; use Ada.Containers.Helpers;
- 
- with Ada.Containers.Prime_Numbers; use Ada.Containers.Prime_Numbers;
- 
- with System; use type System.Address;
- 
- package body Ada.Containers.Bounded_Hashed_Sets is
- 
-    pragma Warnings (Off, "variable ""Busy*"" is not referenced");
-    pragma Warnings (Off, "variable ""Lock*"" is not referenced");
-    --  See comment in Ada.Containers.Helpers
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    function Equivalent_Keys
-      (Key  : Element_Type;
-       Node : Node_Type) return Boolean;
-    pragma Inline (Equivalent_Keys);
- 
-    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);
- 
-    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 (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
-       function Find_Equal_Key
-         (R_HT   : Hash_Table_Type'Class;
-          L_Node : Node_Type) return Boolean;
-       pragma Inline (Find_Equal_Key);
- 
-       function Is_Equal is
-         new HT_Ops.Generic_Equal (Find_Equal_Key);
- 
-       --------------------
-       -- Find_Equal_Key --
-       --------------------
- 
-       function Find_Equal_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);
- 
-       begin
-          loop
-             if R_Node = 0 then
-                return False;
-             end if;
- 
-             if L_Node.Element = R_HT.Nodes (R_Node).Element then
-                return True;
-             end if;
- 
-             R_Node := Next (R_HT.Nodes (R_Node));
-          end loop;
-       end Find_Equal_Key;
- 
-    --  Start of processing for "="
- 
-    begin
-       return Is_Equal (Left, Right);
-    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.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 Checks and then Target.Capacity < Source.Length then
-          raise Capacity_Error
-            with "Target capacity is less than Source length";
-       end if;
- 
-       HT_Ops.Clear (Target);
-       Insert_Elements (Source);
-    end Assign;
- 
-    --------------
-    -- Capacity --
-    --------------
- 
-    function Capacity (Container : Set) return Count_Type is
-    begin
-       return Container.Capacity;
-    end Capacity;
- 
-    -----------
-    -- Clear --
-    -----------
- 
-    procedure Clear (Container : in out Set) is
-    begin
-       HT_Ops.Clear (Container);
-    end Clear;
- 
-    ------------------------
-    -- Constant_Reference --
-    ------------------------
- 
-    function Constant_Reference
-      (Container : aliased Set;
-       Position  : Cursor) return Constant_Reference_Type
-    is
-    begin
-       if Checks and then Position.Container = null then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor designates wrong container";
-       end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in Constant_Reference");
- 
-       declare
-          N : Node_Type renames Container.Nodes (Position.Node);
-          TC : constant Tamper_Counts_Access :=
-            Container.TC'Unrestricted_Access;
-       begin
-          return R : constant Constant_Reference_Type :=
-            (Element => N.Element'Access,
-             Control => (Controlled with TC))
-          do
-             Lock (TC.all);
-          end return;
-       end;
-    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;
-       Modulus  : Hash_Type := 0) return Set
-    is
-       C : Count_Type;
-       M : Hash_Type;
- 
-    begin
-       if Capacity = 0 then
-          C := Source.Length;
-       elsif Capacity >= Source.Length then
-          C := Capacity;
-       elsif Checks then
-          raise Capacity_Error with "Capacity value too small";
-       end if;
- 
-       if Modulus = 0 then
-          M := Default_Modulus (C);
-       else
-          M := Modulus;
-       end if;
- 
-       return Target : Set (Capacity => C, Modulus => M) do
-          Assign (Target => Target, Source => Source);
-       end return;
-    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, Item, X);
- 
-       if Checks and then X = 0 then
-          raise Constraint_Error with "attempt to delete element not in set";
-       end if;
- 
-       HT_Ops.Free (Container, X);
-    end Delete;
- 
-    procedure Delete
-      (Container : in out Set;
-       Position  : in out Cursor)
-    is
-    begin
-       if Checks and then Position.Node = 0 then
-          raise Constraint_Error with "Position cursor equals No_Element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with "Position cursor designates wrong set";
-       end if;
- 
-       TC_Check (Container.TC);
- 
-       pragma Assert (Vet (Position), "bad cursor in Delete");
- 
-       HT_Ops.Delete_Node_Sans_Free (Container, Position.Node);
-       HT_Ops.Free (Container, Position.Node);
- 
-       Position := No_Element;
-    end Delete;
- 
-    ----------------
-    -- Difference --
-    ----------------
- 
-    procedure Difference
-      (Target : in out Set;
-       Source : Set)
-    is
-       Tgt_Node, Src_Node : Count_Type;
- 
-       Src : Set renames Source'Unrestricted_Access.all;
- 
-       TN : Nodes_Type renames Target.Nodes;
-       SN : Nodes_Type renames Source.Nodes;
- 
-    begin
-       if Target'Address = Source'Address then
-          HT_Ops.Clear (Target);
-          return;
-       end if;
- 
-       if Source.Length = 0 then
-          return;
-       end if;
- 
-       TC_Check (Target.TC);
- 
-       if Source.Length < Target.Length then
-          Src_Node := HT_Ops.First (Source);
-          while Src_Node /= 0 loop
-             Tgt_Node := Element_Keys.Find (Target, SN (Src_Node).Element);
- 
-             if Tgt_Node /= 0 then
-                HT_Ops.Delete_Node_Sans_Free (Target, Tgt_Node);
-                HT_Ops.Free (Target, Tgt_Node);
-             end if;
- 
-             Src_Node := HT_Ops.Next (Src, Src_Node);
-          end loop;
- 
-       else
-          Tgt_Node := HT_Ops.First (Target);
-          while Tgt_Node /= 0 loop
-             if Is_In (Source, TN (Tgt_Node)) then
-                declare
-                   X : constant Count_Type := Tgt_Node;
-                begin
-                   Tgt_Node := HT_Ops.Next (Target, Tgt_Node);
-                   HT_Ops.Delete_Node_Sans_Free (Target, X);
-                   HT_Ops.Free (Target, X);
-                end;
- 
-             else
-                Tgt_Node := HT_Ops.Next (Target, Tgt_Node);
-             end if;
-          end loop;
-       end if;
-    end Difference;
- 
-    function Difference (Left, Right : Set) return Set is
-    begin
-       if Left'Address = Right'Address then
-          return Empty_Set;
-       end if;
- 
-       if Left.Length = 0 then
-          return Empty_Set;
-       end if;
- 
-       if Right.Length = 0 then
-          return Left;
-       end if;
- 
-       return Result : Set (Left.Length, To_Prime (Left.Length)) do
-          Iterate_Left : declare
-             procedure Process (L_Node : Count_Type);
- 
-             procedure Iterate is
-                new HT_Ops.Generic_Iteration (Process);
- 
-             -------------
-             -- Process --
-             -------------
- 
-             procedure Process (L_Node : Count_Type) is
-                N : Node_Type renames Left.Nodes (L_Node);
-                X : Count_Type;
-                B : Boolean;
-             begin
-                if not Is_In (Right, N) then
-                   Insert (Result, N.Element, X, B);  --  optimize this ???
-                   pragma Assert (B);
-                   pragma Assert (X > 0);
-                end if;
-             end Process;
- 
-          --  Start of processing for Iterate_Left
- 
-          begin
-             Iterate (Left);
-          end Iterate_Left;
-       end return;
-    end Difference;
- 
-    -------------
-    -- Element --
-    -------------
- 
-    function Element (Position : Cursor) return Element_Type is
-    begin
-       if Checks and then Position.Node = 0 then
-          raise Constraint_Error with "Position cursor equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in function Element");
- 
-       declare
-          S : Set renames Position.Container.all;
-          N : Node_Type renames S.Nodes (Position.Node);
-       begin
-          return N.Element;
-       end;
-    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 := Next (R_HT.Nodes (R_Node));
-          end loop;
-       end Find_Equivalent_Key;
- 
-    --  Start of processing for Equivalent_Sets
- 
-    begin
-       return Is_Equivalent (Left, Right);
-    end Equivalent_Sets;
- 
-    -------------------------
-    -- Equivalent_Elements --
-    -------------------------
- 
-    function Equivalent_Elements (Left, Right : Cursor)
-      return Boolean is
- 
-    begin
-       if Checks and then Left.Node = 0 then
-          raise Constraint_Error with
-            "Left cursor of Equivalent_Elements equals No_Element";
-       end if;
- 
-       if Checks and then Right.Node = 0 then
-          raise Constraint_Error with
-            "Right cursor of Equivalent_Elements equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Left), "bad Left cursor in Equivalent_Elements");
-       pragma Assert (Vet (Right), "bad Right cursor in Equivalent_Elements");
- 
-       --  AI05-0022 requires that a container implementation detect element
-       --  tampering by a generic actual subprogram. However, the following case
-       --  falls outside the scope of that AI. Randy Brukardt explained on the
-       --  ARG list on 2013/02/07 that:
- 
-       --  (Begin Quote):
-       --  But for an operation like "<" [the ordered set analog of
-       --  Equivalent_Elements], there is no need to "dereference" a cursor
-       --  after the call to the generic formal parameter function, so nothing
-       --  bad could happen if tampering is undetected. And the operation can
-       --  safely return a result without a problem even if an element is
-       --  deleted from the container.
-       --  (End Quote).
- 
-       declare
-          LN : Node_Type renames Left.Container.Nodes (Left.Node);
-          RN : Node_Type renames Right.Container.Nodes (Right.Node);
-       begin
-          return Equivalent_Elements (LN.Element, RN.Element);
-       end;
-    end Equivalent_Elements;
- 
-    function Equivalent_Elements
-      (Left  : Cursor;
-       Right : Element_Type) return Boolean
-    is
-    begin
-       if Checks and then Left.Node = 0 then
-          raise Constraint_Error with
-            "Left cursor of Equivalent_Elements equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Left), "Left cursor in Equivalent_Elements is bad");
- 
-       declare
-          LN : Node_Type renames Left.Container.Nodes (Left.Node);
-       begin
-          return Equivalent_Elements (LN.Element, Right);
-       end;
-    end Equivalent_Elements;
- 
-    function Equivalent_Elements
-      (Left  : Element_Type;
-       Right : Cursor) return Boolean
-    is
-    begin
-       if Checks and then Right.Node = 0 then
-          raise Constraint_Error with
-            "Right cursor of Equivalent_Elements equals No_Element";
-       end if;
- 
-       pragma Assert
-         (Vet (Right),
-          "Right cursor of Equivalent_Elements is bad");
- 
-       declare
-          RN : Node_Type renames Right.Container.Nodes (Right.Node);
-       begin
-          return Equivalent_Elements (Left, RN.Element);
-       end;
-    end Equivalent_Elements;
- 
-    ---------------------
-    -- 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, Item, X);
-       HT_Ops.Free (Container, X);
-    end Exclude;
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    procedure Finalize (Object : in out Iterator) is
-    begin
-       if Object.Container /= null then
-          Unbusy (Object.Container.TC);
-       end if;
-    end Finalize;
- 
-    ----------
-    -- Find --
-    ----------
- 
-    function Find
-      (Container : Set;
-       Item      : Element_Type) return Cursor
-    is
-       Node : constant Count_Type :=
-                Element_Keys.Find (Container'Unrestricted_Access.all, Item);
-    begin
-       return (if Node = 0 then No_Element
-               else Cursor'(Container'Unrestricted_Access, Node));
-    end Find;
- 
-    -----------
-    -- First --
-    -----------
- 
-    function First (Container : Set) return Cursor is
-       Node : constant Count_Type := HT_Ops.First (Container);
-    begin
-       return (if Node = 0 then No_Element
-               else Cursor'(Container'Unrestricted_Access, Node));
-    end First;
- 
-    overriding function First (Object : Iterator) return Cursor is
-    begin
-       return Object.Container.First;
-    end First;
- 
-    ------------------------
-    -- Get_Element_Access --
-    ------------------------
- 
-    function Get_Element_Access
-      (Position : Cursor) return not null Element_Access is
-    begin
-       return Position.Container.Nodes (Position.Node).Element'Access;
-    end Get_Element_Access;
- 
-    -----------------
-    -- Has_Element --
-    -----------------
- 
-    function Has_Element (Position : Cursor) return Boolean is
-    begin
-       pragma Assert (Vet (Position), "bad cursor in Has_Element");
-       return Position.Node /= 0;
-    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
-       Position : Cursor;
-       Inserted : Boolean;
- 
-    begin
-       Insert (Container, New_Item, Position, Inserted);
- 
-       if not Inserted then
-          TE_Check (Container.TC);
- 
-          Container.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);
-       Position.Container := Container'Unchecked_Access;
-    end Insert;
- 
-    procedure Insert
-      (Container : in out Set;
-       New_Item  : Element_Type)
-    is
-       Position : Cursor;
-       pragma Unreferenced (Position);
- 
-       Inserted : Boolean;
- 
-    begin
-       Insert (Container, New_Item, Position, Inserted);
- 
-       if Checks and then 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 HT_Ops.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
-       --  The buckets array length is specified by the user as a discriminant
-       --  of the container type, so it is possible for the buckets array to
-       --  have a length of zero. We must check for this case specifically, in
-       --  order to prevent divide-by-zero errors later, when we compute the
-       --  buckets array index value for an element, given its hash value.
- 
-       if Checks and then Container.Buckets'Length = 0 then
-          raise Capacity_Error with "No capacity for insertion";
-       end if;
- 
-       Local_Insert (Container, 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.Nodes;
- 
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       if Source.Length = 0 then
-          HT_Ops.Clear (Target);
-          return;
-       end if;
- 
-       TC_Check (Target.TC);
- 
-       Tgt_Node := HT_Ops.First (Target);
-       while Tgt_Node /= 0 loop
-          if Is_In (Source, TN (Tgt_Node)) then
-             Tgt_Node := HT_Ops.Next (Target, Tgt_Node);
- 
-          else
-             declare
-                X : constant Count_Type := Tgt_Node;
-             begin
-                Tgt_Node := HT_Ops.Next (Target, Tgt_Node);
-                HT_Ops.Delete_Node_Sans_Free (Target, X);
-                HT_Ops.Free (Target, X);
-             end;
-          end if;
-       end loop;
-    end Intersection;
- 
-    function Intersection (Left, Right : Set) return Set is
-       C : Count_Type;
- 
-    begin
-       if Left'Address = Right'Address then
-          return Left;
-       end if;
- 
-       C := Count_Type'Min (Left.Length, Right.Length);
- 
-       if C = 0 then
-          return Empty_Set;
-       end if;
- 
-       return Result : Set (C, To_Prime (C)) do
-          Iterate_Left : declare
-             procedure Process (L_Node : Count_Type);
- 
-             procedure Iterate is
-                new HT_Ops.Generic_Iteration (Process);
- 
-             -------------
-             -- Process --
-             -------------
- 
-             procedure Process (L_Node : Count_Type) is
-                N : Node_Type renames Left.Nodes (L_Node);
-                X : Count_Type;
-                B : Boolean;
- 
-             begin
-                if Is_In (Right, N) then
-                   Insert (Result, N.Element, X, B);  -- optimize ???
-                   pragma Assert (B);
-                   pragma Assert (X > 0);
-                end if;
-             end Process;
- 
-          --  Start of processing for Iterate_Left
- 
-          begin
-             Iterate (Left);
-          end Iterate_Left;
-       end return;
-    end Intersection;
- 
-    --------------
-    -- Is_Empty --
-    --------------
- 
-    function Is_Empty (Container : Set) return Boolean is
-    begin
-       return Container.Length = 0;
-    end Is_Empty;
- 
-    -----------
-    -- Is_In --
-    -----------
- 
-    function Is_In (HT : Set; Key : Node_Type) return Boolean is
-    begin
-       return Element_Keys.Find (HT'Unrestricted_Access.all, Key.Element) /= 0;
-    end Is_In;
- 
-    ---------------
-    -- Is_Subset --
-    ---------------
- 
-    function Is_Subset (Subset : Set; Of_Set : Set) return Boolean is
-       Subset_Node : Count_Type;
-       SN          : Nodes_Type renames Subset.Nodes;
- 
-    begin
-       if Subset'Address = Of_Set'Address then
-          return True;
-       end if;
- 
-       if Subset.Length > Of_Set.Length then
-          return False;
-       end if;
- 
-       Subset_Node := HT_Ops.First (Subset);
-       while Subset_Node /= 0 loop
-          if not Is_In (Of_Set, SN (Subset_Node)) then
-             return False;
-          end if;
-          Subset_Node := HT_Ops.Next
-                           (Subset'Unrestricted_Access.all, Subset_Node);
-       end loop;
- 
-       return True;
-    end Is_Subset;
- 
-    -------------
-    -- Iterate --
-    -------------
- 
-    procedure Iterate
-      (Container : Set;
-       Process   : not null access procedure (Position : Cursor))
-    is
-       procedure Process_Node (Node : Count_Type);
-       pragma Inline (Process_Node);
- 
-       procedure Iterate is
-          new HT_Ops.Generic_Iteration (Process_Node);
- 
-       ------------------
-       -- Process_Node --
-       ------------------
- 
-       procedure Process_Node (Node : Count_Type) is
-       begin
-          Process (Cursor'(Container'Unrestricted_Access, Node));
-       end Process_Node;
- 
-       Busy : With_Busy (Container.TC'Unrestricted_Access);
- 
-    --  Start of processing for Iterate
- 
-    begin
-       Iterate (Container);
-    end Iterate;
- 
-    function Iterate (Container : Set)
-      return Set_Iterator_Interfaces.Forward_Iterator'Class
-    is
-    begin
-       Busy (Container.TC'Unrestricted_Access.all);
-       return It : constant Iterator :=
-         Iterator'(Limited_Controlled with
-                     Container => Container'Unrestricted_Access);
-    end Iterate;
- 
-    ------------
-    -- Length --
-    ------------
- 
-    function Length (Container : Set) return Count_Type is
-    begin
-       return Container.Length;
-    end Length;
- 
-    ----------
-    -- Move --
-    ----------
- 
-    procedure Move (Target : in out Set; Source : in out Set) is
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       TC_Check (Source.TC);
- 
-       Target.Assign (Source);
-       Source.Clear;
-    end Move;
- 
-    ----------
-    -- Next --
-    ----------
- 
-    function Next (Node : Node_Type) return Count_Type is
-    begin
-       return Node.Next;
-    end Next;
- 
-    function Next (Position : Cursor) return Cursor is
-    begin
-       if Position.Node = 0 then
-          return No_Element;
-       end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in Next");
- 
-       declare
-          HT   : Set renames Position.Container.all;
-          Node : constant Count_Type := HT_Ops.Next (HT, Position.Node);
- 
-       begin
-          if Node = 0 then
-             return No_Element;
-          end if;
- 
-          return Cursor'(Position.Container, Node);
-       end;
-    end Next;
- 
-    procedure Next (Position : in out Cursor) is
-    begin
-       Position := Next (Position);
-    end Next;
- 
-    function Next
-      (Object : Iterator;
-       Position : Cursor) return Cursor
-    is
-    begin
-       if Position.Container = null then
-          return No_Element;
-       end if;
- 
-       if Checks and then Position.Container /= Object.Container then
-          raise Program_Error with
-            "Position cursor of Next designates wrong set";
-       end if;
- 
-       return Next (Position);
-    end Next;
- 
-    -------------
-    -- Overlap --
-    -------------
- 
-    function Overlap (Left, Right : Set) return Boolean is
-       Left_Node : Count_Type;
- 
-    begin
-       if Right.Length = 0 then
-          return False;
-       end if;
- 
-       if Left'Address = Right'Address then
-          return True;
-       end if;
- 
-       Left_Node := HT_Ops.First (Left);
-       while Left_Node /= 0 loop
-          if Is_In (Right, Left.Nodes (Left_Node)) then
-             return True;
-          end if;
-          Left_Node := HT_Ops.Next (Left'Unrestricted_Access.all, Left_Node);
-       end loop;
- 
-       return False;
-    end Overlap;
- 
-    ----------------------
-    -- Pseudo_Reference --
-    ----------------------
- 
-    function Pseudo_Reference
-      (Container : aliased Set'Class) return Reference_Control_Type
-    is
-       TC : constant Tamper_Counts_Access :=
-         Container.TC'Unrestricted_Access;
-    begin
-       return R : constant Reference_Control_Type := (Controlled with TC) do
-          Lock (TC.all);
-       end return;
-    end Pseudo_Reference;
- 
-    -------------------
-    -- Query_Element --
-    -------------------
- 
-    procedure Query_Element
-      (Position : Cursor;
-       Process  : not null access procedure (Element : Element_Type))
-    is
-    begin
-       if Checks and then Position.Node = 0 then
-          raise Constraint_Error with
-            "Position cursor of Query_Element equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in Query_Element");
- 
-       declare
-          S : Set renames Position.Container.all;
-          Lock : With_Lock (S.TC'Unrestricted_Access);
-       begin
-          Process (S.Nodes (Position.Node).Element);
-       end;
-    end Query_Element;
- 
-    ----------
-    -- Read --
-    ----------
- 
-    procedure Read
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : out Set)
-    is
-       function Read_Node (Stream : not null access Root_Stream_Type'Class)
-         return Count_Type;
- 
-       procedure Read_Nodes is
-          new HT_Ops.Generic_Read (Read_Node);
- 
-       ---------------
-       -- Read_Node --
-       ---------------
- 
-       function Read_Node (Stream : not null access Root_Stream_Type'Class)
-         return Count_Type
-       is
-          procedure Read_Element (Node : in out Node_Type);
-          pragma Inline (Read_Element);
- 
-          procedure Allocate is
-             new HT_Ops.Generic_Allocate (Read_Element);
- 
-          procedure Read_Element (Node : in out Node_Type) is
-          begin
-             Element_Type'Read (Stream, Node.Element);
-          end Read_Element;
- 
-          Node : Count_Type;
- 
-       --  Start of processing for Read_Node
- 
-       begin
-          Allocate (Container, Node);
-          return Node;
-       end Read_Node;
- 
-    --  Start of processing for Read
- 
-    begin
-       Read_Nodes (Stream, Container);
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Cursor)
-    is
-    begin
-       raise Program_Error with "attempt to stream set cursor";
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Constant_Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Read;
- 
-    -------------
-    -- Replace --
-    -------------
- 
-    procedure Replace
-      (Container : in out Set;
-       New_Item  : Element_Type)
-    is
-       Node : constant Count_Type := Element_Keys.Find (Container, New_Item);
- 
-    begin
-       if Checks and then Node = 0 then
-          raise Constraint_Error with
-            "attempt to replace element not in set";
-       end if;
- 
-       TE_Check (Container.TC);
- 
-       Container.Nodes (Node).Element := New_Item;
-    end Replace;
- 
-    procedure Replace_Element
-      (Container : in out Set;
-       Position  : Cursor;
-       New_Item  : Element_Type)
-    is
-    begin
-       if Checks and then Position.Node = 0 then
-          raise Constraint_Error with
-            "Position cursor equals No_Element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor designates wrong set";
-       end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in Replace_Element");
- 
-       Replace_Element (Container, Position.Node, New_Item);
-    end Replace_Element;
- 
-    ----------------------
-    -- Reserve_Capacity --
-    ----------------------
- 
-    procedure Reserve_Capacity
-      (Container : in out Set;
-       Capacity  : Count_Type)
-    is
-    begin
-       if Checks and then Capacity > Container.Capacity then
-          raise Capacity_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
-          N : Node_Type renames Source.Nodes (Source_Node);
-          X : Count_Type;
-          B : Boolean;
- 
-       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
-          HT_Ops.Clear (Target);
-          return;
-       end if;
- 
-       if Target.Length = 0 then
-          Assign (Target => Target, Source => Source);
-          return;
-       end if;
- 
-       TC_Check (Target.TC);
- 
-       Iterate (Source);
-    end Symmetric_Difference;
- 
-    function Symmetric_Difference (Left, Right : Set) return Set is
-       C : Count_Type;
- 
-    begin
-       if Left'Address = Right'Address then
-          return Empty_Set;
-       end if;
- 
-       if Right.Length = 0 then
-          return Left;
-       end if;
- 
-       if Left.Length = 0 then
-          return Right;
-       end if;
- 
-       C := Left.Length + Right.Length;
- 
-       return Result : Set (C, To_Prime (C)) do
-          Iterate_Left : declare
-             procedure Process (L_Node : Count_Type);
- 
-             procedure Iterate is
-                new HT_Ops.Generic_Iteration (Process);
- 
-             -------------
-             -- Process --
-             -------------
- 
-             procedure Process (L_Node : Count_Type) is
-                N : Node_Type renames Left.Nodes (L_Node);
-                X : Count_Type;
-                B : Boolean;
-             begin
-                if not Is_In (Right, N) then
-                   Insert (Result, N.Element, X, B);
-                   pragma Assert (B);
-                end if;
-             end Process;
- 
-          --  Start of processing for Iterate_Left
- 
-          begin
-             Iterate (Left);
-          end Iterate_Left;
- 
-          Iterate_Right : declare
-             procedure Process (R_Node : Count_Type);
- 
-             procedure Iterate is
-                new HT_Ops.Generic_Iteration (Process);
- 
-             -------------
-             -- Process --
-             -------------
- 
-             procedure Process (R_Node : Count_Type) is
-                N : Node_Type renames Right.Nodes (R_Node);
-                X : Count_Type;
-                B : Boolean;
-             begin
-                if not Is_In (Left, N) then
-                   Insert (Result, N.Element, X, B);
-                   pragma Assert (B);
-                end if;
-             end Process;
- 
-          --  Start of processing for Iterate_Right
- 
-          begin
-             Iterate (Right);
-          end Iterate_Right;
-       end return;
-    end Symmetric_Difference;
- 
-    ------------
-    -- To_Set --
-    ------------
- 
-    function To_Set (New_Item : Element_Type) return Set is
-       X : Count_Type;
-       B : Boolean;
-    begin
-       return Result : Set (1, 1) do
-          Insert (Result, 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.Nodes (Src_Node);
-          X : Count_Type;
-          B : Boolean;
-       begin
-          Insert (Target, N.Element, X, B);
-       end Process;
- 
-    --  Start of processing for Union
- 
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       TC_Check (Target.TC);
- 
-       --  ??? why is this code commented out ???
-       --  declare
-       --     N : constant Count_Type := Target.Length + Source.Length;
-       --  begin
-       --     if N > HT_Ops.Capacity (Target.HT) then
-       --        HT_Ops.Reserve_Capacity (Target.HT, N);
-       --     end if;
-       --  end;
- 
-       Iterate (Source);
-    end Union;
- 
-    function Union (Left, Right : Set) return Set is
-       C : Count_Type;
- 
-    begin
-       if Left'Address = Right'Address then
-          return Left;
-       end if;
- 
-       if Right.Length = 0 then
-          return Left;
-       end if;
- 
-       if Left.Length = 0 then
-          return Right;
-       end if;
- 
-       C := Left.Length + Right.Length;
- 
-       return Result : Set (C, To_Prime (C)) do
-          Assign (Target => Result, Source => Left);
-          Union (Target => Result, Source => Right);
-       end return;
-    end Union;
- 
-    ---------
-    -- Vet --
-    ---------
- 
-    function Vet (Position : Cursor) return Boolean is
-    begin
-       if Position.Node = 0 then
-          return Position.Container = null;
-       end if;
- 
-       if Position.Container = null then
-          return False;
-       end if;
- 
-       declare
-          S : Set renames Position.Container.all;
-          N : Nodes_Type renames S.Nodes;
-          X : Count_Type;
- 
-       begin
-          if S.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.Buckets (Element_Keys.Checked_Index
-                            (S, N (Position.Node).Element));
- 
-          for J in 1 .. S.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;
- 
-    -----------
-    -- Write --
-    -----------
- 
-    procedure Write
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : Set)
-    is
-       procedure Write_Node
-         (Stream : not null access Root_Stream_Type'Class;
-          Node   : Node_Type);
-       pragma Inline (Write_Node);
- 
-       procedure Write_Nodes is
-          new HT_Ops.Generic_Write (Write_Node);
- 
-       ----------------
-       -- Write_Node --
-       ----------------
- 
-       procedure Write_Node
-         (Stream : not null access Root_Stream_Type'Class;
-          Node   : Node_Type)
-       is
-       begin
-          Element_Type'Write (Stream, Node.Element);
-       end Write_Node;
- 
-    --  Start of processing for Write
- 
-    begin
-       Write_Nodes (Stream, Container);
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Cursor)
-    is
-    begin
-       raise Program_Error with "attempt to stream set cursor";
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Constant_Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Write;
- 
-    package body Generic_Keys 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);
- 
-       ------------------------
-       -- Constant_Reference --
-       ------------------------
- 
-       function Constant_Reference
-         (Container : aliased Set;
-          Key       : Key_Type) return Constant_Reference_Type
-       is
-          Node : constant Count_Type :=
-                   Key_Keys.Find (Container'Unrestricted_Access.all, Key);
- 
-       begin
-          if Checks and then Node = 0 then
-             raise Constraint_Error with "key not in set";
-          end if;
- 
-          declare
-             N : Node_Type renames Container.Nodes (Node);
-             TC : constant Tamper_Counts_Access :=
-               Container.TC'Unrestricted_Access;
-          begin
-             return R : constant Constant_Reference_Type :=
-               (Element => N.Element'Access,
-                Control => (Controlled with TC))
-             do
-                Lock (TC.all);
-             end return;
-          end;
-       end Constant_Reference;
- 
-       --------------
-       -- 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, Key, X);
- 
-          if Checks and then X = 0 then
-             raise Constraint_Error with "attempt to delete key not in set";
-          end if;
- 
-          HT_Ops.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'Unrestricted_Access.all, Key);
- 
-       begin
-          if Checks and then Node = 0 then
-             raise Constraint_Error with "key not in set";
-          end if;
- 
-          return Container.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, Key, X);
-          HT_Ops.Free (Container, X);
-       end Exclude;
- 
-       --------------
-       -- Finalize --
-       --------------
- 
-       procedure Finalize (Control : in out Reference_Control_Type) is
-       begin
-          if Control.Container /= null then
-             Impl.Reference_Control_Type (Control).Finalize;
- 
-             if Checks and then
-               Hash (Key (Element (Control.Old_Pos))) /= Control.Old_Hash
-             then
-                HT_Ops.Delete_Node_At_Index
-                  (Control.Container.all, Control.Index, Control.Old_Pos.Node);
-                raise Program_Error with "key not preserved in reference";
-             end if;
- 
-             Control.Container := null;
-          end if;
-       end Finalize;
- 
-       ----------
-       -- Find --
-       ----------
- 
-       function Find
-         (Container : Set;
-          Key       : Key_Type) return Cursor
-       is
-          Node : constant Count_Type :=
-                   Key_Keys.Find (Container'Unrestricted_Access.all, Key);
-       begin
-          return (if Node = 0 then No_Element
-                  else Cursor'(Container'Unrestricted_Access, Node));
-       end Find;
- 
-       ---------
-       -- Key --
-       ---------
- 
-       function Key (Position : Cursor) return Key_Type is
-       begin
-          if Checks and then Position.Node = 0 then
-             raise Constraint_Error with
-               "Position cursor equals No_Element";
-          end if;
- 
-          pragma Assert (Vet (Position), "bad cursor in function Key");
-          return Key (Position.Container.Nodes (Position.Node).Element);
-       end Key;
- 
-       ----------
-       -- Read --
-       ----------
- 
-       procedure  Read
-         (Stream : not null access Root_Stream_Type'Class;
-          Item   : out Reference_Type)
-       is
-       begin
-          raise Program_Error with "attempt to stream reference";
-       end Read;
- 
-       ------------------------------
-       -- Reference_Preserving_Key --
-       ------------------------------
- 
-       function Reference_Preserving_Key
-         (Container : aliased in out Set;
-          Position  : Cursor) return Reference_Type
-       is
-       begin
-          if Checks and then Position.Container = null then
-             raise Constraint_Error with "Position cursor has no element";
-          end if;
- 
-          if Checks and then Position.Container /= Container'Unrestricted_Access
-          then
-             raise Program_Error with
-               "Position cursor designates wrong container";
-          end if;
- 
-          pragma Assert
-            (Vet (Position),
-             "bad cursor in function Reference_Preserving_Key");
- 
-          declare
-             N : Node_Type renames Container.Nodes (Position.Node);
-          begin
-             return R : constant Reference_Type :=
-               (Element  => N.Element'Unrestricted_Access,
-                 Control =>
-                   (Controlled with
-                      Container.TC'Unrestricted_Access,
-                      Container'Unrestricted_Access,
-                      Index    => Key_Keys.Index (Container, Key (Position)),
-                      Old_Pos  => Position,
-                      Old_Hash => Hash (Key (Position))))
-             do
-                Lock (Container.TC);
-             end return;
-          end;
-       end Reference_Preserving_Key;
- 
-       function Reference_Preserving_Key
-         (Container : aliased in out Set;
-          Key       : Key_Type) return Reference_Type
-       is
-          Node : constant Count_Type := Key_Keys.Find (Container, Key);
- 
-       begin
-          if Checks and then Node = 0 then
-             raise Constraint_Error with "key not in set";
-          end if;
- 
-          declare
-             P : constant Cursor := Find (Container, Key);
-          begin
-             return R : constant Reference_Type :=
-               (Element => Container.Nodes (Node).Element'Unrestricted_Access,
-                Control =>
-                  (Controlled with
-                     Container.TC'Unrestricted_Access,
-                     Container'Unrestricted_Access,
-                     Index  => Key_Keys.Index (Container, Key),
-                     Old_Pos => P,
-                     Old_Hash => Hash (Key)))
-             do
-                Lock (Container.TC);
-             end return;
-          end;
-       end Reference_Preserving_Key;
- 
-       -------------
-       -- Replace --
-       -------------
- 
-       procedure Replace
-         (Container : in out Set;
-          Key       : Key_Type;
-          New_Item  : Element_Type)
-       is
-          Node : constant Count_Type := Key_Keys.Find (Container, Key);
- 
-       begin
-          if Checks and then Node = 0 then
-             raise Constraint_Error with
-               "attempt to replace key not in set";
-          end if;
- 
-          Replace_Element (Container, Node, New_Item);
-       end Replace;
- 
-       -----------------------------------
-       -- Update_Element_Preserving_Key --
-       -----------------------------------
- 
-       procedure Update_Element_Preserving_Key
-         (Container : in out Set;
-          Position  : Cursor;
-          Process   : not null access
-                        procedure (Element : in out Element_Type))
-       is
-          Indx : Hash_Type;
-          N    : Nodes_Type renames Container.Nodes;
- 
-       begin
-          if Checks and then Position.Node = 0 then
-             raise Constraint_Error with
-               "Position cursor equals No_Element";
-          end if;
- 
-          if Checks and then Position.Container /= Container'Unrestricted_Access
-          then
-             raise Program_Error with
-               "Position cursor designates wrong set";
-          end if;
- 
-          --  ??? why is this code commented out ???
-          --  if HT.Buckets = null
-          --    or else HT.Buckets'Length = 0
-          --    or else HT.Length = 0
-          --    or else Position.Node.Next = Position.Node
-          --  then
-          --     raise Program_Error with
-          --        "Position cursor is bad (set is empty)";
-          --  end if;
- 
-          pragma Assert
-            (Vet (Position),
-             "bad cursor in Update_Element_Preserving_Key");
- 
-          --  Per AI05-0022, the container implementation is required to detect
-          --  element tampering by a generic actual subprogram.
- 
-          declare
-             E : Element_Type renames N (Position.Node).Element;
-             K : constant Key_Type := Key (E);
-             Lock : With_Lock (Container.TC'Unrestricted_Access);
-          begin
-             --  Record bucket now, in case key is changed
-             Indx := HT_Ops.Index (Container.Buckets, N (Position.Node));
- 
-             Process (E);
- 
-             if Equivalent_Keys (K, Key (E)) then
-                return;
-             end if;
-          end;
- 
-          --  Key was modified, so remove this node from set.
- 
-          if Container.Buckets (Indx) = Position.Node then
-             Container.Buckets (Indx) := N (Position.Node).Next;
- 
-          else
-             declare
-                Prev : Count_Type := Container.Buckets (Indx);
- 
-             begin
-                while N (Prev).Next /= Position.Node loop
-                   Prev := N (Prev).Next;
- 
-                   if Checks and then Prev = 0 then
-                      raise Program_Error with
-                        "Position cursor is bad (node not found)";
-                   end if;
-                end loop;
- 
-                N (Prev).Next := N (Position.Node).Next;
-             end;
-          end if;
- 
-          Container.Length := Container.Length - 1;
-          HT_Ops.Free (Container, Position.Node);
- 
-          raise Program_Error with "key was modified";
-       end Update_Element_Preserving_Key;
- 
-       -----------
-       -- Write --
-       -----------
- 
-       procedure Write
-         (Stream : not null access Root_Stream_Type'Class;
-          Item   : Reference_Type)
-       is
-       begin
-          raise Program_Error with "attempt to stream reference";
-       end Write;
- 
-    end Generic_Keys;
- 
- end Ada.Containers.Bounded_Hashed_Sets;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cbhase.ads gcc-8.1.0/gcc/ada/a-cbhase.ads
*** gcc-7.3.0/gcc/ada/a-cbhase.ads	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-cbhase.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,605 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --    A D A . C O N T A I N E R S . B O U N D E D _ H A S H E D _ S E T S   --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, 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/>.                                          --
- --                                                                          --
- -- This unit was originally developed by Matthew J Heaney.                  --
- ------------------------------------------------------------------------------
- 
- with Ada.Iterator_Interfaces;
- 
- private with Ada.Containers.Hash_Tables;
- with Ada.Containers.Helpers;
- private with Ada.Streams;
- private with Ada.Finalization; use Ada.Finalization;
- 
- generic
-    type Element_Type is private;
- 
-    with function Hash (Element : Element_Type) return Hash_Type;
- 
-    with function Equivalent_Elements
-           (Left, Right : Element_Type) return Boolean;
- 
-    with function "=" (Left, Right : Element_Type) return Boolean is <>;
- 
- package Ada.Containers.Bounded_Hashed_Sets is
-    pragma Annotate (CodePeer, Skip_Analysis);
-    pragma Pure;
-    pragma Remote_Types;
- 
-    type Set (Capacity : Count_Type; Modulus : Hash_Type) is tagged private
-      with Constant_Indexing => Constant_Reference,
-           Default_Iterator  => Iterate,
-           Iterator_Element  => Element_Type;
- 
-    pragma Preelaborable_Initialization (Set);
- 
-    type Cursor is private;
-    pragma Preelaborable_Initialization (Cursor);
- 
-    Empty_Set : constant Set;
-    --  Set objects declared without an initialization expression are
-    --  initialized to the value Empty_Set.
- 
-    No_Element : constant Cursor;
-    --  Cursor objects declared without an initialization expression are
-    --  initialized to the value No_Element.
- 
-    function Has_Element (Position : Cursor) return Boolean;
-    --  Equivalent to Position /= No_Element
- 
-    package Set_Iterator_Interfaces is new
-      Ada.Iterator_Interfaces (Cursor, Has_Element);
- 
-    function "=" (Left, Right : Set) return Boolean;
-    --  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;
-    --  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;
-    --  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;
-    --  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);
-    --  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 Default_Modulus (Capacity : Count_Type) return Hash_Type;
-    --  Returns a modulus value (hash table size) which is optimal for the
-    --  specified capacity (which corresponds to the maximum number of items).
- 
-    function Length (Container : Set) return Count_Type;
-    --  Returns the number of items in the set
- 
-    function Is_Empty (Container : Set) return Boolean;
-    --  Equivalent to Length (Container) = 0
- 
-    procedure Clear (Container : in out Set);
-    --  Removes all of the items from the set
- 
-    function Element (Position : Cursor) return Element_Type;
-    --  Returns the element of the node designated by the cursor
- 
-    procedure Replace_Element
-      (Container : in out Set;
-       Position  : Cursor;
-       New_Item  : Element_Type);
-    --  If New_Item is equivalent (as determined by calling Equivalent_Elements)
-    --  to the element of the node designated by Position, then New_Element is
-    --  assigned to that element. Otherwise, it calls Hash to determine the
-    --  bucket for New_Item. If the bucket is not empty, then it calls
-    --  Equivalent_Elements for each node in that bucket to determine whether
-    --  New_Item is equivalent to an element in that bucket. If
-    --  Equivalent_Elements returns True then Program_Error is raised (because
-    --  an element may appear only once in the set); otherwise, New_Item is
-    --  assigned to the node designated by Position, and the node is moved to
-    --  its new bucket.
- 
-    procedure Query_Element
-      (Position : Cursor;
-       Process  : not null access procedure (Element : Element_Type));
-    --  Calls Process with the element (having only a constant view) of the node
-    --  designated by the cursor.
- 
-    type Constant_Reference_Type
-      (Element : not null access constant Element_Type) is private
-         with Implicit_Dereference => Element;
- 
-    function Constant_Reference
-      (Container : aliased Set;
-       Position  : Cursor) return Constant_Reference_Type;
- 
-    procedure Assign (Target : in out Set; Source : Set);
-    --  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;
-       Modulus  : Hash_Type := 0) return Set;
-    --  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.
- 
-    procedure Move (Target : in out Set; Source : in out Set);
-    --  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);
-    --  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);
-    --  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);
-    --  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);
-    --  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);
-    --  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);
-    --  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);
-    --  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);
-    --  Iterates over the Source set, and conditionally inserts each element
-    --  into Target.
- 
-    function Union (Left, Right : Set) return Set;
-    --  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);
-    --  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;
-    --  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);
-    --  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;
-    --  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);
-    --  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;
-    --  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;
-    --  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;
-    --  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;
-    --  Returns a cursor that designates the first non-empty bucket, by
-    --  searching from the beginning of the buckets array.
- 
-    function Next (Position : Cursor) return Cursor;
-    --  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 (Position : in out Cursor);
-    --  Equivalent to Position := Next (Position)
- 
-    function Find
-      (Container : Set;
-       Item      : Element_Type) return Cursor;
-    --  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;
-    --  Equivalent to Find (Container, Item) /= No_Element
- 
-    function Equivalent_Elements (Left, Right : Cursor) return Boolean;
-    --  Returns the result of calling Equivalent_Elements with the elements of
-    --  the nodes designated by cursors Left and Right.
- 
-    function Equivalent_Elements
-      (Left  : Cursor;
-       Right : Element_Type) return Boolean;
-    --  Returns the result of calling Equivalent_Elements with element of the
-    --  node designated by Left and element Right.
- 
-    function Equivalent_Elements
-      (Left  : Element_Type;
-       Right : Cursor) return Boolean;
-    --  Returns the result of calling Equivalent_Elements with element Left and
-    --  the element of the node designated by Right.
- 
-    procedure Iterate
-      (Container : Set;
-       Process   : not null access procedure (Position : Cursor));
-    --  Calls Process for each node in the set
- 
-    function Iterate
-      (Container : Set)
-       return Set_Iterator_Interfaces.Forward_Iterator'Class;
- 
-    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 is
- 
-       function Key (Position : Cursor) return Key_Type;
-       --  Applies generic formal operation Key to the element of the node
-       --  designated by 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.
- 
-       procedure Replace
-         (Container : in out Set;
-          Key       : Key_Type;
-          New_Item  : Element_Type);
-       --  Searches (as per the key-based Find) for the node containing Key, and
-       --  then replaces the element of that node (as per the element-based
-       --  Replace_Element).
- 
-       procedure Exclude (Container : in out Set; Key : Key_Type);
-       --  Searches for Key in the set, and if found, removes its node from the
-       --  set and then deallocates it. The search works by first calling Hash
-       --  (on Key) to determine the bucket; if the bucket is not empty, it
-       --  calls Equivalent_Keys to compare parameter Key to the value of
-       --  generic formal operation Key applied to element of each node in the
-       --  bucket.
- 
-       procedure Delete (Container : in out Set; Key : Key_Type);
-       --  Deletes the node containing Key as per Exclude, with the difference
-       --  that Constraint_Error is raised if Key is not found.
- 
-       function Find (Container : Set; Key : Key_Type) return Cursor;
-       --  Searches for the node containing Key, and returns a cursor
-       --  designating the node. The search works by first calling Hash (on Key)
-       --  to determine the bucket. If the bucket is not empty, the search
-       --  compares Key to the element of each node in the bucket, and returns
-       --  the matching node. The comparison itself works by applying the
-       --  generic formal Key operation to the element of the node, and then
-       --  calling generic formal operation Equivalent_Keys.
- 
-       function Contains (Container : Set; Key : Key_Type) return Boolean;
-       --  Equivalent to Find (Container, Key) /= No_Element
- 
-       procedure Update_Element_Preserving_Key
-         (Container : in out Set;
-          Position  : Cursor;
-          Process   : not null access
-                        procedure (Element : in out Element_Type));
-       --  Calls Process with the element of the node designated by Position,
-       --  but with the restriction that the key-value of the element is not
-       --  modified. The operation first makes a copy of the value returned by
-       --  applying generic formal operation Key on the element of the node, and
-       --  then calls Process with the element. The operation verifies that the
-       --  key-part has not been modified by calling generic formal operation
-       --  Equivalent_Keys to compare the saved key-value to the value returned
-       --  by applying generic formal operation Key to the post-Process value of
-       --  element. If the key values compare equal then the operation
-       --  completes. Otherwise, the node is removed from the map and
-       --  Program_Error is raised.
- 
-       type Reference_Type (Element : not null access Element_Type) is private
-         with Implicit_Dereference => Element;
- 
-       function Reference_Preserving_Key
-         (Container : aliased in out Set;
-          Position  : Cursor) return Reference_Type;
- 
-       function Constant_Reference
-         (Container : aliased Set;
-          Key       : Key_Type) return Constant_Reference_Type;
- 
-       function Reference_Preserving_Key
-         (Container : aliased in out Set;
-          Key       : Key_Type) return Reference_Type;
- 
-    private
-       type Set_Access is access all Set;
-       for Set_Access'Storage_Size use 0;
- 
-       package Impl is new Helpers.Generic_Implementation;
- 
-       type Reference_Control_Type is
-          new Impl.Reference_Control_Type with
-       record
-          Container : Set_Access;
-          Index     : Hash_Type;
-          Old_Pos   : Cursor;
-          Old_Hash  : Hash_Type;
-       end record;
- 
-       overriding procedure Finalize (Control : in out Reference_Control_Type);
-       pragma Inline (Finalize);
- 
-       type Reference_Type (Element : not null access Element_Type) is record
-          Control  : Reference_Control_Type;
-       end record;
- 
-       use Ada.Streams;
- 
-       procedure Read
-         (Stream : not null access Root_Stream_Type'Class;
-          Item   : out Reference_Type);
- 
-       for Reference_Type'Read use Read;
- 
-       procedure Write
-         (Stream : not null access Root_Stream_Type'Class;
-          Item   : Reference_Type);
- 
-       for Reference_Type'Write use Write;
- 
-    end Generic_Keys;
- 
- private
-    pragma Inline (Next);
- 
-    type Node_Type is record
-       Element : aliased Element_Type;
-       Next    : Count_Type;
-    end record;
- 
-    package HT_Types is
-      new Hash_Tables.Generic_Bounded_Hash_Table_Types (Node_Type);
- 
-    type Set (Capacity : Count_Type; Modulus : Hash_Type) is
-      new HT_Types.Hash_Table_Type (Capacity, Modulus) with null record;
- 
-    use HT_Types, HT_Types.Implementation;
-    use Ada.Streams;
- 
-    procedure Write
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : Set);
- 
-    for Set'Write use Write;
- 
-    procedure Read
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : out Set);
- 
-    for Set'Read use Read;
- 
-    type Set_Access is access all Set;
-    for Set_Access'Storage_Size use 0;
- 
-    --  Note: If a Cursor object has no explicit initialization expression,
-    --  it must default initialize to the same value as constant No_Element.
-    --  The Node component of type Cursor has scalar type Count_Type, so it
-    --  requires an explicit initialization expression of its own declaration,
-    --  in order for objects of record type Cursor to properly initialize.
- 
-    type Cursor is record
-       Container : Set_Access;
-       Node      : Count_Type := 0;
-    end record;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Cursor);
- 
-    for Cursor'Write use Write;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Cursor);
- 
-    for Cursor'Read use Read;
- 
-    subtype Reference_Control_Type is Implementation.Reference_Control_Type;
-    --  It is necessary to rename this here, so that the compiler can find it
- 
-    type Constant_Reference_Type
-      (Element : not null access constant Element_Type) is
-       record
-          Control : Reference_Control_Type :=
-            raise Program_Error with "uninitialized reference";
-          --  The RM says, "The default initialization of an object of
-          --  type Constant_Reference_Type or Reference_Type propagates
-          --  Program_Error."
-       end record;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Constant_Reference_Type);
- 
-    for Constant_Reference_Type'Read use Read;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Constant_Reference_Type);
- 
-    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;
-    pragma Inline (Pseudo_Reference);
-    --  Creates an object of type Reference_Control_Type pointing to the
-    --  container, and increments the Lock. Finalization of this object will
-    --  decrement the Lock.
- 
-    type Element_Access is access all Element_Type with
-      Storage_Size => 0;
- 
-    function Get_Element_Access
-      (Position : Cursor) return not null Element_Access;
-    --  Returns a pointer to the element designated by Position.
- 
-    Empty_Set : constant Set :=
-                  (Hash_Table_Type with Capacity => 0, Modulus => 0);
- 
-    No_Element : constant Cursor := (Container => null, Node => 0);
- 
-    type Iterator is new Limited_Controlled and
-      Set_Iterator_Interfaces.Forward_Iterator with
-    record
-       Container : Set_Access;
-    end record
-      with Disable_Controlled => not T_Check;
- 
-    overriding procedure Finalize (Object : in out Iterator);
- 
-    overriding function First (Object : Iterator) return Cursor;
- 
-    overriding function Next
-      (Object   : Iterator;
-       Position : Cursor) return Cursor;
- 
- end Ada.Containers.Bounded_Hashed_Sets;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cbmutr.adb gcc-8.1.0/gcc/ada/a-cbmutr.adb
*** gcc-7.3.0/gcc/ada/a-cbmutr.adb	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-cbmutr.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,3327 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                   ADA.CONTAINERS.BOUNDED_MULTIWAY_TREES                  --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --             Copyright (C) 2011-2015, Free Software Foundation, Inc.      --
- --                                                                          --
- -- GNAT is 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 Ada.Finalization;
- with System; use type System.Address;
- 
- package body Ada.Containers.Bounded_Multiway_Trees is
- 
-    pragma Warnings (Off, "variable ""Busy*"" is not referenced");
-    pragma Warnings (Off, "variable ""Lock*"" is not referenced");
-    --  See comment in Ada.Containers.Helpers
- 
-    use Finalization;
- 
-    --------------------
-    --  Root_Iterator --
-    --------------------
- 
-    type Root_Iterator is abstract new Limited_Controlled and
-      Tree_Iterator_Interfaces.Forward_Iterator with
-    record
-       Container : Tree_Access;
-       Subtree   : Count_Type;
-    end record;
- 
-    overriding procedure Finalize (Object : in out Root_Iterator);
- 
-    -----------------------
-    --  Subtree_Iterator --
-    -----------------------
- 
-    type Subtree_Iterator is new Root_Iterator with null record;
- 
-    overriding function First (Object : Subtree_Iterator) return Cursor;
- 
-    overriding function Next
-      (Object   : Subtree_Iterator;
-       Position : Cursor) return Cursor;
- 
-    ---------------------
-    --  Child_Iterator --
-    ---------------------
- 
-    type Child_Iterator is new Root_Iterator and
-      Tree_Iterator_Interfaces.Reversible_Iterator with null record;
- 
-    overriding function First (Object : Child_Iterator) return Cursor;
- 
-    overriding function Next
-      (Object   : Child_Iterator;
-       Position : Cursor) return Cursor;
- 
-    overriding function Last (Object : Child_Iterator) return Cursor;
- 
-    overriding function Previous
-      (Object   : Child_Iterator;
-       Position : Cursor) return Cursor;
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    procedure Initialize_Node (Container : in out Tree; Index : Count_Type);
-    procedure Initialize_Root (Container : in out Tree);
- 
-    procedure Allocate_Node
-      (Container          : in out Tree;
-       Initialize_Element : not null access procedure (Index : Count_Type);
-       New_Node           : out Count_Type);
- 
-    procedure Allocate_Node
-      (Container : in out Tree;
-       New_Item  : Element_Type;
-       New_Node  : out Count_Type);
- 
-    procedure Allocate_Node
-      (Container : in out Tree;
-       Stream    : not null access Root_Stream_Type'Class;
-       New_Node  : out Count_Type);
- 
-    procedure Deallocate_Node
-      (Container : in out Tree;
-       X         : Count_Type);
- 
-    procedure Deallocate_Children
-      (Container : in out Tree;
-       Subtree   : Count_Type;
-       Count     : in out Count_Type);
- 
-    procedure Deallocate_Subtree
-      (Container : in out Tree;
-       Subtree   : Count_Type;
-       Count     : in out Count_Type);
- 
-    function Equal_Children
-      (Left_Tree     : Tree;
-       Left_Subtree  : Count_Type;
-       Right_Tree    : Tree;
-       Right_Subtree : Count_Type) return Boolean;
- 
-    function Equal_Subtree
-      (Left_Tree     : Tree;
-       Left_Subtree  : Count_Type;
-       Right_Tree    : Tree;
-       Right_Subtree : Count_Type) return Boolean;
- 
-    procedure Iterate_Children
-      (Container : Tree;
-       Subtree   : Count_Type;
-       Process   : not null access procedure (Position : Cursor));
- 
-    procedure Iterate_Subtree
-      (Container : Tree;
-       Subtree   : Count_Type;
-       Process   : not null access procedure (Position : Cursor));
- 
-    procedure Copy_Children
-      (Source        : Tree;
-       Source_Parent : Count_Type;
-       Target        : in out Tree;
-       Target_Parent : Count_Type;
-       Count         : in out Count_Type);
- 
-    procedure Copy_Subtree
-      (Source         : Tree;
-       Source_Subtree : Count_Type;
-       Target         : in out Tree;
-       Target_Parent  : Count_Type;
-       Target_Subtree : out Count_Type;
-       Count          : in out Count_Type);
- 
-    function Find_In_Children
-      (Container : Tree;
-       Subtree   : Count_Type;
-       Item      : Element_Type) return Count_Type;
- 
-    function Find_In_Subtree
-      (Container : Tree;
-       Subtree   : Count_Type;
-       Item      : Element_Type) return Count_Type;
- 
-    function Child_Count
-      (Container : Tree;
-       Parent    : Count_Type) return Count_Type;
- 
-    function Subtree_Node_Count
-      (Container : Tree;
-       Subtree   : Count_Type) return Count_Type;
- 
-    function Is_Reachable
-      (Container : Tree;
-       From, To  : Count_Type) return Boolean;
- 
-    function Root_Node (Container : Tree) return Count_Type;
- 
-    procedure Remove_Subtree
-      (Container : in out Tree;
-       Subtree   : Count_Type);
- 
-    procedure Insert_Subtree_Node
-      (Container : in out Tree;
-       Subtree   : Count_Type'Base;
-       Parent    : Count_Type;
-       Before    : Count_Type'Base);
- 
-    procedure Insert_Subtree_List
-      (Container : in out Tree;
-       First     : Count_Type'Base;
-       Last      : Count_Type'Base;
-       Parent    : Count_Type;
-       Before    : Count_Type'Base);
- 
-    procedure Splice_Children
-      (Container     : in out Tree;
-       Target_Parent : Count_Type;
-       Before        : Count_Type'Base;
-       Source_Parent : Count_Type);
- 
-    procedure Splice_Children
-      (Target        : in out Tree;
-       Target_Parent : Count_Type;
-       Before        : Count_Type'Base;
-       Source        : in out Tree;
-       Source_Parent : Count_Type);
- 
-    procedure Splice_Subtree
-      (Target   : in out Tree;
-       Parent   : Count_Type;
-       Before   : Count_Type'Base;
-       Source   : in out Tree;
-       Position : in out Count_Type);  -- source on input, target on output
- 
-    ---------
-    -- "=" --
-    ---------
- 
-    function "=" (Left, Right : Tree) return Boolean is
-    begin
-       if Left.Count /= Right.Count then
-          return False;
-       end if;
- 
-       if Left.Count = 0 then
-          return True;
-       end if;
- 
-       return Equal_Children
-                (Left_Tree     => Left,
-                 Left_Subtree  => Root_Node (Left),
-                 Right_Tree    => Right,
-                 Right_Subtree => Root_Node (Right));
-    end "=";
- 
-    -------------------
-    -- Allocate_Node --
-    -------------------
- 
-    procedure Allocate_Node
-      (Container          : in out Tree;
-       Initialize_Element : not null access procedure (Index : Count_Type);
-       New_Node           : out Count_Type)
-    is
-    begin
-       if Container.Free >= 0 then
-          New_Node := Container.Free;
-          pragma Assert (New_Node in Container.Elements'Range);
- 
-          --  We always perform the assignment first, before we change container
-          --  state, in order to defend against exceptions duration assignment.
- 
-          Initialize_Element (New_Node);
- 
-          Container.Free := Container.Nodes (New_Node).Next;
- 
-       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).
- 
-          New_Node := abs Container.Free;
-          pragma Assert (New_Node in Container.Elements'Range);
- 
-          --  As above, we perform this assignment first, before modifying any
-          --  container state.
- 
-          Initialize_Element (New_Node);
- 
-          Container.Free := Container.Free - 1;
- 
-          if abs Container.Free > Container.Capacity then
-             Container.Free := 0;
-          end if;
-       end if;
- 
-       Initialize_Node (Container, New_Node);
-    end Allocate_Node;
- 
-    procedure Allocate_Node
-      (Container : in out Tree;
-       New_Item  : Element_Type;
-       New_Node  : out Count_Type)
-    is
-       procedure Initialize_Element (Index : Count_Type);
- 
-       procedure Initialize_Element (Index : Count_Type) is
-       begin
-          Container.Elements (Index) := New_Item;
-       end Initialize_Element;
- 
-    begin
-       Allocate_Node (Container, Initialize_Element'Access, New_Node);
-    end Allocate_Node;
- 
-    procedure Allocate_Node
-      (Container : in out Tree;
-       Stream    : not null access Root_Stream_Type'Class;
-       New_Node  : out Count_Type)
-    is
-       procedure Initialize_Element (Index : Count_Type);
- 
-       procedure Initialize_Element (Index : Count_Type) is
-       begin
-          Element_Type'Read (Stream, Container.Elements (Index));
-       end Initialize_Element;
- 
-    begin
-       Allocate_Node (Container, Initialize_Element'Access, New_Node);
-    end Allocate_Node;
- 
-    -------------------
-    -- Ancestor_Find --
-    -------------------
- 
-    function Ancestor_Find
-      (Position : Cursor;
-       Item     : Element_Type) return Cursor
-    is
-       R, N : Count_Type;
- 
-    begin
-       if Checks and then Position = No_Element then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       --  AI-0136 says to raise PE if Position equals the root node. This does
-       --  not seem correct, as this value is just the limiting condition of the
-       --  search. For now we omit this check, pending a ruling from the ARG.
-       --  ???
-       --
-       --  if Checks and then Is_Root (Position) then
-       --     raise Program_Error with "Position cursor designates root";
-       --  end if;
- 
-       R := Root_Node (Position.Container.all);
-       N := Position.Node;
-       while N /= R loop
-          if Position.Container.Elements (N) = Item then
-             return Cursor'(Position.Container, N);
-          end if;
- 
-          N := Position.Container.Nodes (N).Parent;
-       end loop;
- 
-       return No_Element;
-    end Ancestor_Find;
- 
-    ------------------
-    -- Append_Child --
-    ------------------
- 
-    procedure Append_Child
-      (Container : in out Tree;
-       Parent    : Cursor;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1)
-    is
-       Nodes       : Tree_Node_Array renames Container.Nodes;
-       First, Last : Count_Type;
- 
-    begin
-       if Checks and then Parent = No_Element then
-          raise Constraint_Error with "Parent cursor has no element";
-       end if;
- 
-       if Checks and then Parent.Container /= Container'Unrestricted_Access then
-          raise Program_Error with "Parent cursor not in container";
-       end if;
- 
-       if Count = 0 then
-          return;
-       end if;
- 
-       if Checks and then Container.Count > Container.Capacity - Count then
-          raise Capacity_Error
-            with "requested count exceeds available storage";
-       end if;
- 
-       TC_Check (Container.TC);
- 
-       if Container.Count = 0 then
-          Initialize_Root (Container);
-       end if;
- 
-       Allocate_Node (Container, New_Item, First);
-       Nodes (First).Parent := Parent.Node;
- 
-       Last := First;
-       for J in Count_Type'(2) .. Count loop
-          Allocate_Node (Container, New_Item, Nodes (Last).Next);
-          Nodes (Nodes (Last).Next).Parent := Parent.Node;
-          Nodes (Nodes (Last).Next).Prev := Last;
- 
-          Last := Nodes (Last).Next;
-       end loop;
- 
-       Insert_Subtree_List
-         (Container => Container,
-          First     => First,
-          Last      => Last,
-          Parent    => Parent.Node,
-          Before    => No_Node);  -- means "insert at end of list"
- 
-       Container.Count := Container.Count + Count;
-    end Append_Child;
- 
-    ------------
-    -- Assign --
-    ------------
- 
-    procedure Assign (Target : in out Tree; Source : Tree) is
-       Target_Count : Count_Type;
- 
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       if Checks and then Target.Capacity < Source.Count then
-          raise Capacity_Error  -- ???
-            with "Target capacity is less than Source count";
-       end if;
- 
-       Target.Clear;  -- Checks busy bit
- 
-       if Source.Count = 0 then
-          return;
-       end if;
- 
-       Initialize_Root (Target);
- 
-       --  Copy_Children returns the number of nodes that it allocates, but it
-       --  does this by incrementing the count value passed in, so we must
-       --  initialize the count before calling Copy_Children.
- 
-       Target_Count := 0;
- 
-       Copy_Children
-         (Source        => Source,
-          Source_Parent => Root_Node (Source),
-          Target        => Target,
-          Target_Parent => Root_Node (Target),
-          Count         => Target_Count);
- 
-       pragma Assert (Target_Count = Source.Count);
-       Target.Count := Source.Count;
-    end Assign;
- 
-    -----------------
-    -- Child_Count --
-    -----------------
- 
-    function Child_Count (Parent : Cursor) return Count_Type is
-    begin
-       if Parent = No_Element then
-          return 0;
- 
-       elsif Parent.Container.Count = 0 then
-          pragma Assert (Is_Root (Parent));
-          return 0;
- 
-       else
-          return Child_Count (Parent.Container.all, Parent.Node);
-       end if;
-    end Child_Count;
- 
-    function Child_Count
-      (Container : Tree;
-       Parent    : Count_Type) return Count_Type
-    is
-       NN : Tree_Node_Array renames Container.Nodes;
-       CC : Children_Type renames NN (Parent).Children;
- 
-       Result : Count_Type;
-       Node   : Count_Type'Base;
- 
-    begin
-       Result := 0;
-       Node := CC.First;
-       while Node > 0 loop
-          Result := Result + 1;
-          Node := NN (Node).Next;
-       end loop;
- 
-       return Result;
-    end Child_Count;
- 
-    -----------------
-    -- Child_Depth --
-    -----------------
- 
-    function Child_Depth (Parent, Child : Cursor) return Count_Type is
-       Result : Count_Type;
-       N      : Count_Type'Base;
- 
-    begin
-       if Checks and then Parent = No_Element then
-          raise Constraint_Error with "Parent cursor has no element";
-       end if;
- 
-       if Checks and then Child = No_Element then
-          raise Constraint_Error with "Child cursor has no element";
-       end if;
- 
-       if Checks and then Parent.Container /= Child.Container then
-          raise Program_Error with "Parent and Child in different containers";
-       end if;
- 
-       if Parent.Container.Count = 0 then
-          pragma Assert (Is_Root (Parent));
-          pragma Assert (Child = Parent);
-          return 0;
-       end if;
- 
-       Result := 0;
-       N := Child.Node;
-       while N /= Parent.Node loop
-          Result := Result + 1;
-          N := Parent.Container.Nodes (N).Parent;
- 
-          if Checks and then N < 0 then
-             raise Program_Error with "Parent is not ancestor of Child";
-          end if;
-       end loop;
- 
-       return Result;
-    end Child_Depth;
- 
-    -----------
-    -- Clear --
-    -----------
- 
-    procedure Clear (Container : in out Tree) is
-       Container_Count : constant Count_Type := Container.Count;
-       Count           : Count_Type;
- 
-    begin
-       TC_Check (Container.TC);
- 
-       if Container_Count = 0 then
-          return;
-       end if;
- 
-       Container.Count := 0;
- 
-       --  Deallocate_Children returns the number of nodes that it deallocates,
-       --  but it does this by incrementing the count value that is passed in,
-       --  so we must first initialize the count return value before calling it.
- 
-       Count := 0;
- 
-       Deallocate_Children
-         (Container => Container,
-          Subtree   => Root_Node (Container),
-          Count     => Count);
- 
-       pragma Assert (Count = Container_Count);
-    end Clear;
- 
-    ------------------------
-    -- Constant_Reference --
-    ------------------------
- 
-    function Constant_Reference
-      (Container : aliased Tree;
-       Position  : Cursor) return Constant_Reference_Type
-    is
-    begin
-       if Checks and then Position.Container = null then
-          raise Constraint_Error with
-            "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor designates wrong container";
-       end if;
- 
-       if Checks and then Position.Node = Root_Node (Container) then
-          raise Program_Error with "Position cursor designates root";
-       end if;
- 
-       --  Implement Vet for multiway tree???
-       --  pragma Assert (Vet (Position),
-       --                 "Position cursor in Constant_Reference is bad");
- 
-       declare
-          TC : constant Tamper_Counts_Access :=
-            Container.TC'Unrestricted_Access;
-       begin
-          return R : constant Constant_Reference_Type :=
-            (Element => Container.Elements (Position.Node)'Access,
-             Control => (Controlled with TC))
-          do
-             Lock (TC.all);
-          end return;
-       end;
-    end Constant_Reference;
- 
-    --------------
-    -- Contains --
-    --------------
- 
-    function Contains
-      (Container : Tree;
-       Item      : Element_Type) return Boolean
-    is
-    begin
-       return Find (Container, Item) /= No_Element;
-    end Contains;
- 
-    ----------
-    -- Copy --
-    ----------
- 
-    function Copy
-      (Source   : Tree;
-       Capacity : Count_Type := 0) return Tree
-    is
-       C : Count_Type;
- 
-    begin
-       if Capacity = 0 then
-          C := Source.Count;
-       elsif Capacity >= Source.Count then
-          C := Capacity;
-       elsif Checks then
-          raise Capacity_Error with "Capacity value too small";
-       end if;
- 
-       return Target : Tree (Capacity => C) do
-          Initialize_Root (Target);
- 
-          if Source.Count = 0 then
-             return;
-          end if;
- 
-          Copy_Children
-            (Source        => Source,
-             Source_Parent => Root_Node (Source),
-             Target        => Target,
-             Target_Parent => Root_Node (Target),
-             Count         => Target.Count);
- 
-          pragma Assert (Target.Count = Source.Count);
-       end return;
-    end Copy;
- 
-    -------------------
-    -- Copy_Children --
-    -------------------
- 
-    procedure Copy_Children
-      (Source        : Tree;
-       Source_Parent : Count_Type;
-       Target        : in out Tree;
-       Target_Parent : Count_Type;
-       Count         : in out Count_Type)
-    is
-       S_Nodes : Tree_Node_Array renames Source.Nodes;
-       S_Node  : Tree_Node_Type renames S_Nodes (Source_Parent);
- 
-       T_Nodes : Tree_Node_Array renames Target.Nodes;
-       T_Node  : Tree_Node_Type renames T_Nodes (Target_Parent);
- 
-       pragma Assert (T_Node.Children.First <= 0);
-       pragma Assert (T_Node.Children.Last <= 0);
- 
-       T_CC : Children_Type;
-       C    : Count_Type'Base;
- 
-    begin
-       --  We special-case the first allocation, in order to establish the
-       --  representation invariants for type Children_Type.
- 
-       C := S_Node.Children.First;
- 
-       if C <= 0 then  -- source parent has no children
-          return;
-       end if;
- 
-       Copy_Subtree
-         (Source         => Source,
-          Source_Subtree => C,
-          Target         => Target,
-          Target_Parent  => Target_Parent,
-          Target_Subtree => T_CC.First,
-          Count          => Count);
- 
-       T_CC.Last := T_CC.First;
- 
-       --  The representation invariants for the Children_Type list have been
-       --  established, so we can now copy the remaining children of Source.
- 
-       C := S_Nodes (C).Next;
-       while C > 0 loop
-          Copy_Subtree
-            (Source         => Source,
-             Source_Subtree => C,
-             Target         => Target,
-             Target_Parent  => Target_Parent,
-             Target_Subtree => T_Nodes (T_CC.Last).Next,
-             Count          => Count);
- 
-          T_Nodes (T_Nodes (T_CC.Last).Next).Prev := T_CC.Last;
-          T_CC.Last := T_Nodes (T_CC.Last).Next;
- 
-          C := S_Nodes (C).Next;
-       end loop;
- 
-       --  We add the newly-allocated children to their parent list only after
-       --  the allocation has succeeded, in order to preserve invariants of the
-       --  parent.
- 
-       T_Node.Children := T_CC;
-    end Copy_Children;
- 
-    ------------------
-    -- Copy_Subtree --
-    ------------------
- 
-    procedure Copy_Subtree
-      (Target   : in out Tree;
-       Parent   : Cursor;
-       Before   : Cursor;
-       Source   : Cursor)
-    is
-       Target_Subtree : Count_Type;
-       Target_Count   : Count_Type;
- 
-    begin
-       if Checks and then Parent = No_Element then
-          raise Constraint_Error with "Parent cursor has no element";
-       end if;
- 
-       if Checks and then Parent.Container /= Target'Unrestricted_Access then
-          raise Program_Error with "Parent cursor not in container";
-       end if;
- 
-       if Before /= No_Element then
-          if Checks and then Before.Container /= Target'Unrestricted_Access then
-             raise Program_Error with "Before cursor not in container";
-          end if;
- 
-          if Checks and then
-            Before.Container.Nodes (Before.Node).Parent /= Parent.Node
-          then
-             raise Constraint_Error with "Before cursor not child of Parent";
-          end if;
-       end if;
- 
-       if Source = No_Element then
-          return;
-       end if;
- 
-       if Checks and then Is_Root (Source) then
-          raise Constraint_Error with "Source cursor designates root";
-       end if;
- 
-       if Target.Count = 0 then
-          Initialize_Root (Target);
-       end if;
- 
-       --  Copy_Subtree returns a count of the number of nodes that it
-       --  allocates, but it works by incrementing the value that is passed
-       --  in. We must therefore initialize the count value before calling
-       --  Copy_Subtree.
- 
-       Target_Count := 0;
- 
-       Copy_Subtree
-         (Source         => Source.Container.all,
-          Source_Subtree => Source.Node,
-          Target         => Target,
-          Target_Parent  => Parent.Node,
-          Target_Subtree => Target_Subtree,
-          Count          => Target_Count);
- 
-       Insert_Subtree_Node
-         (Container => Target,
-          Subtree   => Target_Subtree,
-          Parent    => Parent.Node,
-          Before    => Before.Node);
- 
-       Target.Count := Target.Count + Target_Count;
-    end Copy_Subtree;
- 
-    procedure Copy_Subtree
-      (Source         : Tree;
-       Source_Subtree : Count_Type;
-       Target         : in out Tree;
-       Target_Parent  : Count_Type;
-       Target_Subtree : out Count_Type;
-       Count          : in out Count_Type)
-    is
-       T_Nodes : Tree_Node_Array renames Target.Nodes;
- 
-    begin
-       --  First we allocate the root of the target subtree.
- 
-       Allocate_Node
-         (Container => Target,
-          New_Item  => Source.Elements (Source_Subtree),
-          New_Node  => Target_Subtree);
- 
-       T_Nodes (Target_Subtree).Parent := Target_Parent;
-       Count := Count + 1;
- 
-       --  We now have a new subtree (for the Target tree), containing only a
-       --  copy of the corresponding element in the Source subtree. Next we copy
-       --  the children of the Source subtree as children of the new Target
-       --  subtree.
- 
-       Copy_Children
-         (Source        => Source,
-          Source_Parent => Source_Subtree,
-          Target        => Target,
-          Target_Parent => Target_Subtree,
-          Count         => Count);
-    end Copy_Subtree;
- 
-    -------------------------
-    -- Deallocate_Children --
-    -------------------------
- 
-    procedure Deallocate_Children
-      (Container : in out Tree;
-       Subtree   : Count_Type;
-       Count     : in out Count_Type)
-    is
-       Nodes : Tree_Node_Array renames Container.Nodes;
-       Node  : Tree_Node_Type renames Nodes (Subtree);  -- parent
-       CC    : Children_Type renames Node.Children;
-       C     : Count_Type'Base;
- 
-    begin
-       while CC.First > 0 loop
-          C := CC.First;
-          CC.First := Nodes (C).Next;
- 
-          Deallocate_Subtree (Container, C, Count);
-       end loop;
- 
-       CC.Last := 0;
-    end Deallocate_Children;
- 
-    ---------------------
-    -- Deallocate_Node --
-    ---------------------
- 
-    procedure Deallocate_Node
-      (Container : in out Tree;
-       X         : Count_Type)
-    is
-       NN : Tree_Node_Array renames Container.Nodes;
-       pragma Assert (X > 0);
-       pragma Assert (X <= NN'Last);
- 
-       N : Tree_Node_Type renames NN (X);
-       pragma Assert (N.Parent /= X);  -- node is active
- 
-    begin
-       --  The tree container actually contains two lists: one for the "active"
-       --  nodes that contain elements that have been inserted onto the tree,
-       --  and another for the "inactive" nodes of the free store, from which
-       --  nodes are allocated when a new child is inserted in the tree.
- 
-       --  We desire that merely declaring a tree 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 of the
-       --  tree object 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 node of the free list.
- 
-       --  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).
- 
-       --  We prefer to lazy-init the free store (in fact, we would prefer to
-       --  not initialize it at all, because such initialization is an O(n)
-       --  operation). The time when we need to actually initialize the nodes in
-       --  the free store is when the node that becomes inactive is not at the
-       --  end of the active list. The free store would then be discontigous and
-       --  so its nodes would need to be linked in the traditional way.
- 
-       --  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 Parent and Prev components to an
-       --  impossible value (the index of the node itself), to indicate that it
-       --  is now inactive. This provides a useful way to detect a dangling
-       --  cursor reference.
- 
-       N.Parent := X;  -- Node is deallocated (not on active list)
-       N.Prev := X;
- 
-       if Container.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.
- 
-          N.Next := Container.Free;
-          Container.Free := X;
- 
-       elsif X + 1 = abs Container.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.
- 
-          N.Next := X;  -- Not strictly necessary, but marginally safer
-          Container.Free := Container.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 at the absolute value of that index value.
-          --  ???
- 
-          Container.Free := abs Container.Free;
- 
-          if Container.Free > Container.Capacity then
-             Container.Free := 0;
- 
-          else
-             for J in Container.Free .. Container.Capacity - 1 loop
-                NN (J).Next := J + 1;
-             end loop;
- 
-             NN (Container.Capacity).Next := 0;
-          end if;
- 
-          NN (X).Next := Container.Free;
-          Container.Free := X;
-       end if;
-    end Deallocate_Node;
- 
-    ------------------------
-    -- Deallocate_Subtree --
-    ------------------------
- 
-    procedure Deallocate_Subtree
-      (Container : in out Tree;
-       Subtree   : Count_Type;
-       Count     : in out Count_Type)
-    is
-    begin
-       Deallocate_Children (Container, Subtree, Count);
-       Deallocate_Node (Container, Subtree);
-       Count := Count + 1;
-    end Deallocate_Subtree;
- 
-    ---------------------
-    -- Delete_Children --
-    ---------------------
- 
-    procedure Delete_Children
-      (Container : in out Tree;
-       Parent    : Cursor)
-    is
-       Count : Count_Type;
- 
-    begin
-       if Checks and then Parent = No_Element then
-          raise Constraint_Error with "Parent cursor has no element";
-       end if;
- 
-       if Checks and then Parent.Container /= Container'Unrestricted_Access then
-          raise Program_Error with "Parent cursor not in container";
-       end if;
- 
-       TC_Check (Container.TC);
- 
-       if Container.Count = 0 then
-          pragma Assert (Is_Root (Parent));
-          return;
-       end if;
- 
-       --  Deallocate_Children returns a count of the number of nodes that it
-       --  deallocates, but it works by incrementing the value that is passed
-       --  in. We must therefore initialize the count value before calling
-       --  Deallocate_Children.
- 
-       Count := 0;
- 
-       Deallocate_Children (Container, Parent.Node, Count);
-       pragma Assert (Count <= Container.Count);
- 
-       Container.Count := Container.Count - Count;
-    end Delete_Children;
- 
-    -----------------
-    -- Delete_Leaf --
-    -----------------
- 
-    procedure Delete_Leaf
-      (Container : in out Tree;
-       Position  : in out Cursor)
-    is
-       X : Count_Type;
- 
-    begin
-       if Checks and then Position = No_Element then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with "Position cursor not in container";
-       end if;
- 
-       if Checks and then Is_Root (Position) then
-          raise Program_Error with "Position cursor designates root";
-       end if;
- 
-       if Checks and then not Is_Leaf (Position) then
-          raise Constraint_Error with "Position cursor does not designate leaf";
-       end if;
- 
-       TC_Check (Container.TC);
- 
-       X := Position.Node;
-       Position := No_Element;
- 
-       Remove_Subtree (Container, X);
-       Container.Count := Container.Count - 1;
- 
-       Deallocate_Node (Container, X);
-    end Delete_Leaf;
- 
-    --------------------
-    -- Delete_Subtree --
-    --------------------
- 
-    procedure Delete_Subtree
-      (Container : in out Tree;
-       Position  : in out Cursor)
-    is
-       X     : Count_Type;
-       Count : Count_Type;
- 
-    begin
-       if Checks and then Position = No_Element then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with "Position cursor not in container";
-       end if;
- 
-       if Checks and then Is_Root (Position) then
-          raise Program_Error with "Position cursor designates root";
-       end if;
- 
-       TC_Check (Container.TC);
- 
-       X := Position.Node;
-       Position := No_Element;
- 
-       Remove_Subtree (Container, X);
- 
-       --  Deallocate_Subtree returns a count of the number of nodes that it
-       --  deallocates, but it works by incrementing the value that is passed
-       --  in. We must therefore initialize the count value before calling
-       --  Deallocate_Subtree.
- 
-       Count := 0;
- 
-       Deallocate_Subtree (Container, X, Count);
-       pragma Assert (Count <= Container.Count);
- 
-       Container.Count := Container.Count - Count;
-    end Delete_Subtree;
- 
-    -----------
-    -- Depth --
-    -----------
- 
-    function Depth (Position : Cursor) return Count_Type is
-       Result : Count_Type;
-       N      : Count_Type'Base;
- 
-    begin
-       if Position = No_Element then
-          return 0;
-       end if;
- 
-       if Is_Root (Position) then
-          return 1;
-       end if;
- 
-       Result := 0;
-       N := Position.Node;
-       while N >= 0 loop
-          N := Position.Container.Nodes (N).Parent;
-          Result := Result + 1;
-       end loop;
- 
-       return Result;
-    end Depth;
- 
-    -------------
-    -- Element --
-    -------------
- 
-    function Element (Position : Cursor) return Element_Type is
-    begin
-       if Checks and then Position.Container = null then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Node = Root_Node (Position.Container.all)
-       then
-          raise Program_Error with "Position cursor designates root";
-       end if;
- 
-       return Position.Container.Elements (Position.Node);
-    end Element;
- 
-    --------------------
-    -- Equal_Children --
-    --------------------
- 
-    function Equal_Children
-      (Left_Tree     : Tree;
-       Left_Subtree  : Count_Type;
-       Right_Tree    : Tree;
-       Right_Subtree : Count_Type) return Boolean
-    is
-       L_NN : Tree_Node_Array renames Left_Tree.Nodes;
-       R_NN : Tree_Node_Array renames Right_Tree.Nodes;
- 
-       Left_Children  : Children_Type renames L_NN (Left_Subtree).Children;
-       Right_Children : Children_Type renames R_NN (Right_Subtree).Children;
- 
-       L, R : Count_Type'Base;
- 
-    begin
-       if Child_Count (Left_Tree, Left_Subtree)
-         /= Child_Count (Right_Tree, Right_Subtree)
-       then
-          return False;
-       end if;
- 
-       L := Left_Children.First;
-       R := Right_Children.First;
-       while L > 0 loop
-          if not Equal_Subtree (Left_Tree, L, Right_Tree, R) then
-             return False;
-          end if;
- 
-          L := L_NN (L).Next;
-          R := R_NN (R).Next;
-       end loop;
- 
-       return True;
-    end Equal_Children;
- 
-    -------------------
-    -- Equal_Subtree --
-    -------------------
- 
-    function Equal_Subtree
-      (Left_Position  : Cursor;
-       Right_Position : Cursor) return Boolean
-    is
-    begin
-       if Checks and then Left_Position = No_Element then
-          raise Constraint_Error with "Left cursor has no element";
-       end if;
- 
-       if Checks and then Right_Position = No_Element then
-          raise Constraint_Error with "Right cursor has no element";
-       end if;
- 
-       if Left_Position = Right_Position then
-          return True;
-       end if;
- 
-       if Is_Root (Left_Position) then
-          if not Is_Root (Right_Position) then
-             return False;
-          end if;
- 
-          if Left_Position.Container.Count = 0 then
-             return Right_Position.Container.Count = 0;
-          end if;
- 
-          if Right_Position.Container.Count = 0 then
-             return False;
-          end if;
- 
-          return Equal_Children
-                   (Left_Tree     => Left_Position.Container.all,
-                    Left_Subtree  => Left_Position.Node,
-                    Right_Tree    => Right_Position.Container.all,
-                    Right_Subtree => Right_Position.Node);
-       end if;
- 
-       if Is_Root (Right_Position) then
-          return False;
-       end if;
- 
-       return Equal_Subtree
-                (Left_Tree     => Left_Position.Container.all,
-                 Left_Subtree  => Left_Position.Node,
-                 Right_Tree    => Right_Position.Container.all,
-                 Right_Subtree => Right_Position.Node);
-    end Equal_Subtree;
- 
-    function Equal_Subtree
-      (Left_Tree     : Tree;
-       Left_Subtree  : Count_Type;
-       Right_Tree    : Tree;
-       Right_Subtree : Count_Type) return Boolean
-    is
-    begin
-       if Left_Tree.Elements  (Left_Subtree) /=
-          Right_Tree.Elements (Right_Subtree)
-       then
-          return False;
-       end if;
- 
-       return Equal_Children
-                (Left_Tree     => Left_Tree,
-                 Left_Subtree  => Left_Subtree,
-                 Right_Tree    => Right_Tree,
-                 Right_Subtree => Right_Subtree);
-    end Equal_Subtree;
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    procedure Finalize (Object : in out Root_Iterator) is
-    begin
-       Unbusy (Object.Container.TC);
-    end Finalize;
- 
-    ----------
-    -- Find --
-    ----------
- 
-    function Find
-      (Container : Tree;
-       Item      : Element_Type) return Cursor
-    is
-       Node : Count_Type;
- 
-    begin
-       if Container.Count = 0 then
-          return No_Element;
-       end if;
- 
-       Node := Find_In_Children (Container, Root_Node (Container), Item);
- 
-       if Node = 0 then
-          return No_Element;
-       end if;
- 
-       return Cursor'(Container'Unrestricted_Access, Node);
-    end Find;
- 
-    -----------
-    -- First --
-    -----------
- 
-    overriding function First (Object : Subtree_Iterator) return Cursor is
-    begin
-       if Object.Subtree = Root_Node (Object.Container.all) then
-          return First_Child (Root (Object.Container.all));
-       else
-          return Cursor'(Object.Container, Object.Subtree);
-       end if;
-    end First;
- 
-    overriding function First (Object : Child_Iterator) return Cursor is
-    begin
-       return First_Child (Cursor'(Object.Container, Object.Subtree));
-    end First;
- 
-    -----------------
-    -- First_Child --
-    -----------------
- 
-    function First_Child (Parent : Cursor) return Cursor is
-       Node : Count_Type'Base;
- 
-    begin
-       if Checks and then Parent = No_Element then
-          raise Constraint_Error with "Parent cursor has no element";
-       end if;
- 
-       if Parent.Container.Count = 0 then
-          pragma Assert (Is_Root (Parent));
-          return No_Element;
-       end if;
- 
-       Node := Parent.Container.Nodes (Parent.Node).Children.First;
- 
-       if Node <= 0 then
-          return No_Element;
-       end if;
- 
-       return Cursor'(Parent.Container, Node);
-    end First_Child;
- 
-    -------------------------
-    -- First_Child_Element --
-    -------------------------
- 
-    function First_Child_Element (Parent : Cursor) return Element_Type is
-    begin
-       return Element (First_Child (Parent));
-    end First_Child_Element;
- 
-    ----------------------
-    -- Find_In_Children --
-    ----------------------
- 
-    function Find_In_Children
-      (Container : Tree;
-       Subtree   : Count_Type;
-       Item      : Element_Type) return Count_Type
-    is
-       N      : Count_Type'Base;
-       Result : Count_Type;
- 
-    begin
-       N := Container.Nodes (Subtree).Children.First;
-       while N > 0 loop
-          Result := Find_In_Subtree (Container, N, Item);
- 
-          if Result > 0 then
-             return Result;
-          end if;
- 
-          N := Container.Nodes (N).Next;
-       end loop;
- 
-       return 0;
-    end Find_In_Children;
- 
-    ---------------------
-    -- Find_In_Subtree --
-    ---------------------
- 
-    function Find_In_Subtree
-      (Position : Cursor;
-       Item     : Element_Type) return Cursor
-    is
-       Result : Count_Type;
- 
-    begin
-       if Checks and then Position = No_Element then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       --  Commented-out pending ruling by ARG.  ???
- 
-       --  if Checks and then
-       --    Position.Container /= Container'Unrestricted_Access
-       --  then
-       --     raise Program_Error with "Position cursor not in container";
-       --  end if;
- 
-       if Position.Container.Count = 0 then
-          pragma Assert (Is_Root (Position));
-          return No_Element;
-       end if;
- 
-       if Is_Root (Position) then
-          Result := Find_In_Children
-                      (Container => Position.Container.all,
-                       Subtree   => Position.Node,
-                       Item      => Item);
- 
-       else
-          Result := Find_In_Subtree
-                      (Container => Position.Container.all,
-                       Subtree   => Position.Node,
-                       Item      => Item);
-       end if;
- 
-       if Result = 0 then
-          return No_Element;
-       end if;
- 
-       return Cursor'(Position.Container, Result);
-    end Find_In_Subtree;
- 
-    function Find_In_Subtree
-      (Container : Tree;
-       Subtree   : Count_Type;
-       Item      : Element_Type) return Count_Type
-    is
-    begin
-       if Container.Elements (Subtree) = Item then
-          return Subtree;
-       end if;
- 
-       return Find_In_Children (Container, Subtree, Item);
-    end Find_In_Subtree;
- 
-    ------------------------
-    -- Get_Element_Access --
-    ------------------------
- 
-    function Get_Element_Access
-      (Position : Cursor) return not null Element_Access is
-    begin
-       return Position.Container.Elements (Position.Node)'Access;
-    end Get_Element_Access;
- 
-    -----------------
-    -- Has_Element --
-    -----------------
- 
-    function Has_Element (Position : Cursor) return Boolean is
-    begin
-       if Position = No_Element then
-          return False;
-       end if;
- 
-       return Position.Node /= Root_Node (Position.Container.all);
-    end Has_Element;
- 
-    ---------------------
-    -- Initialize_Node --
-    ---------------------
- 
-    procedure Initialize_Node
-      (Container : in out Tree;
-       Index     : Count_Type)
-    is
-    begin
-       Container.Nodes (Index) :=
-         (Parent   => No_Node,
-          Prev     => 0,
-          Next     => 0,
-          Children => (others => 0));
-    end Initialize_Node;
- 
-    ---------------------
-    -- Initialize_Root --
-    ---------------------
- 
-    procedure Initialize_Root (Container : in out Tree) is
-    begin
-       Initialize_Node (Container, Root_Node (Container));
-    end Initialize_Root;
- 
-    ------------------
-    -- Insert_Child --
-    ------------------
- 
-    procedure Insert_Child
-      (Container : in out Tree;
-       Parent    : Cursor;
-       Before    : Cursor;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1)
-    is
-       Position : Cursor;
-       pragma Unreferenced (Position);
- 
-    begin
-       Insert_Child (Container, Parent, Before, New_Item, Position, Count);
-    end Insert_Child;
- 
-    procedure Insert_Child
-      (Container : in out Tree;
-       Parent    : Cursor;
-       Before    : Cursor;
-       New_Item  : Element_Type;
-       Position  : out Cursor;
-       Count     : Count_Type := 1)
-    is
-       Nodes : Tree_Node_Array renames Container.Nodes;
-       First : Count_Type;
-       Last  : Count_Type;
- 
-    begin
-       if Checks and then Parent = No_Element then
-          raise Constraint_Error with "Parent cursor has no element";
-       end if;
- 
-       if Checks and then Parent.Container /= Container'Unrestricted_Access then
-          raise Program_Error with "Parent cursor not in container";
-       end if;
- 
-       if Before /= No_Element then
-          if Checks and then Before.Container /= Container'Unrestricted_Access
-          then
-             raise Program_Error with "Before cursor not in container";
-          end if;
- 
-          if Checks and then
-            Before.Container.Nodes (Before.Node).Parent /= Parent.Node
-          then
-             raise Constraint_Error with "Parent cursor not parent of Before";
-          end if;
-       end if;
- 
-       if Count = 0 then
-          Position := No_Element;  -- Need ruling from ARG ???
-          return;
-       end if;
- 
-       if Checks and then Container.Count > Container.Capacity - Count then
-          raise Capacity_Error
-            with "requested count exceeds available storage";
-       end if;
- 
-       TC_Check (Container.TC);
- 
-       if Container.Count = 0 then
-          Initialize_Root (Container);
-       end if;
- 
-       Allocate_Node (Container, New_Item, First);
-       Nodes (First).Parent := Parent.Node;
- 
-       Last := First;
-       for J in Count_Type'(2) .. Count loop
-          Allocate_Node (Container, New_Item, Nodes (Last).Next);
-          Nodes (Nodes (Last).Next).Parent := Parent.Node;
-          Nodes (Nodes (Last).Next).Prev := Last;
- 
-          Last := Nodes (Last).Next;
-       end loop;
- 
-       Insert_Subtree_List
-         (Container => Container,
-          First     => First,
-          Last      => Last,
-          Parent    => Parent.Node,
-          Before    => Before.Node);
- 
-       Container.Count := Container.Count + Count;
- 
-       Position := Cursor'(Parent.Container, First);
-    end Insert_Child;
- 
-    procedure Insert_Child
-      (Container : in out Tree;
-       Parent    : Cursor;
-       Before    : Cursor;
-       Position  : out Cursor;
-       Count     : Count_Type := 1)
-    is
-       Nodes : Tree_Node_Array renames Container.Nodes;
-       First : Count_Type;
-       Last  : Count_Type;
- 
-       New_Item : Element_Type;
-       pragma Unmodified (New_Item);
-       --  OK to reference, see below
- 
-    begin
-       if Checks and then Parent = No_Element then
-          raise Constraint_Error with "Parent cursor has no element";
-       end if;
- 
-       if Checks and then Parent.Container /= Container'Unrestricted_Access then
-          raise Program_Error with "Parent cursor not in container";
-       end if;
- 
-       if Before /= No_Element then
-          if Checks and then Before.Container /= Container'Unrestricted_Access
-          then
-             raise Program_Error with "Before cursor not in container";
-          end if;
- 
-          if Checks and then
-            Before.Container.Nodes (Before.Node).Parent /= Parent.Node
-          then
-             raise Constraint_Error with "Parent cursor not parent of Before";
-          end if;
-       end if;
- 
-       if Count = 0 then
-          Position := No_Element;  -- Need ruling from ARG  ???
-          return;
-       end if;
- 
-       if Checks and then Container.Count > Container.Capacity - Count then
-          raise Capacity_Error
-            with "requested count exceeds available storage";
-       end if;
- 
-       TC_Check (Container.TC);
- 
-       if Container.Count = 0 then
-          Initialize_Root (Container);
-       end if;
- 
-       --  There is no explicit element provided, but in an instance the element
-       --  type may be a scalar with a Default_Value aspect, or a composite
-       --  type with such a scalar component, or components with default
-       --  initialization, so insert the specified number of possibly
-       --  initialized elements at the given position.
- 
-       Allocate_Node (Container, New_Item, First);
-       Nodes (First).Parent := Parent.Node;
- 
-       Last := First;
-       for J in Count_Type'(2) .. Count loop
-          Allocate_Node (Container, New_Item, Nodes (Last).Next);
-          Nodes (Nodes (Last).Next).Parent := Parent.Node;
-          Nodes (Nodes (Last).Next).Prev := Last;
- 
-          Last := Nodes (Last).Next;
-       end loop;
- 
-       Insert_Subtree_List
-         (Container => Container,
-          First     => First,
-          Last      => Last,
-          Parent    => Parent.Node,
-          Before    => Before.Node);
- 
-       Container.Count := Container.Count + Count;
- 
-       Position := Cursor'(Parent.Container, First);
-    end Insert_Child;
- 
-    -------------------------
-    -- Insert_Subtree_List --
-    -------------------------
- 
-    procedure Insert_Subtree_List
-      (Container : in out Tree;
-       First     : Count_Type'Base;
-       Last      : Count_Type'Base;
-       Parent    : Count_Type;
-       Before    : Count_Type'Base)
-    is
-       NN : Tree_Node_Array renames Container.Nodes;
-       N  : Tree_Node_Type renames NN (Parent);
-       CC : Children_Type renames N.Children;
- 
-    begin
-       --  This is a simple utility operation to insert a list of nodes
-       --  (First..Last) as children of Parent. The Before node specifies where
-       --  the new children should be inserted relative to existing children.
- 
-       if First <= 0 then
-          pragma Assert (Last <= 0);
-          return;
-       end if;
- 
-       pragma Assert (Last > 0);
-       pragma Assert (Before <= 0 or else NN (Before).Parent = Parent);
- 
-       if CC.First <= 0 then  -- no existing children
-          CC.First := First;
-          NN (CC.First).Prev := 0;
-          CC.Last := Last;
-          NN (CC.Last).Next := 0;
- 
-       elsif Before <= 0 then  -- means "insert after existing nodes"
-          NN (CC.Last).Next := First;
-          NN (First).Prev := CC.Last;
-          CC.Last := Last;
-          NN (CC.Last).Next := 0;
- 
-       elsif Before = CC.First then
-          NN (Last).Next := CC.First;
-          NN (CC.First).Prev := Last;
-          CC.First := First;
-          NN (CC.First).Prev := 0;
- 
-       else
-          NN (NN (Before).Prev).Next := First;
-          NN (First).Prev := NN (Before).Prev;
-          NN (Last).Next := Before;
-          NN (Before).Prev := Last;
-       end if;
-    end Insert_Subtree_List;
- 
-    -------------------------
-    -- Insert_Subtree_Node --
-    -------------------------
- 
-    procedure Insert_Subtree_Node
-      (Container : in out Tree;
-       Subtree   : Count_Type'Base;
-       Parent    : Count_Type;
-       Before    : Count_Type'Base)
-    is
-    begin
-       --  This is a simple wrapper operation to insert a single child into the
-       --  Parent's children list.
- 
-       Insert_Subtree_List
-         (Container => Container,
-          First     => Subtree,
-          Last      => Subtree,
-          Parent    => Parent,
-          Before    => Before);
-    end Insert_Subtree_Node;
- 
-    --------------
-    -- Is_Empty --
-    --------------
- 
-    function Is_Empty (Container : Tree) return Boolean is
-    begin
-       return Container.Count = 0;
-    end Is_Empty;
- 
-    -------------
-    -- Is_Leaf --
-    -------------
- 
-    function Is_Leaf (Position : Cursor) return Boolean is
-    begin
-       if Position = No_Element then
-          return False;
-       end if;
- 
-       if Position.Container.Count = 0 then
-          pragma Assert (Is_Root (Position));
-          return True;
-       end if;
- 
-       return Position.Container.Nodes (Position.Node).Children.First <= 0;
-    end Is_Leaf;
- 
-    ------------------
-    -- Is_Reachable --
-    ------------------
- 
-    function Is_Reachable
-      (Container : Tree;
-       From, To  : Count_Type) return Boolean
-    is
-       Idx : Count_Type;
- 
-    begin
-       Idx := From;
-       while Idx >= 0 loop
-          if Idx = To then
-             return True;
-          end if;
- 
-          Idx := Container.Nodes (Idx).Parent;
-       end loop;
- 
-       return False;
-    end Is_Reachable;
- 
-    -------------
-    -- Is_Root --
-    -------------
- 
-    function Is_Root (Position : Cursor) return Boolean is
-    begin
-       return
-         (if Position.Container = null then False
-          else Position.Node = Root_Node (Position.Container.all));
-    end Is_Root;
- 
-    -------------
-    -- Iterate --
-    -------------
- 
-    procedure Iterate
-      (Container : Tree;
-       Process   : not null access procedure (Position : Cursor))
-    is
-       Busy : With_Busy (Container.TC'Unrestricted_Access);
-    begin
-       if Container.Count = 0 then
-          return;
-       end if;
- 
-       Iterate_Children
-         (Container => Container,
-          Subtree   => Root_Node (Container),
-          Process   => Process);
-    end Iterate;
- 
-    function Iterate (Container : Tree)
-      return Tree_Iterator_Interfaces.Forward_Iterator'Class
-    is
-    begin
-       return Iterate_Subtree (Root (Container));
-    end Iterate;
- 
-    ----------------------
-    -- Iterate_Children --
-    ----------------------
- 
-    procedure Iterate_Children
-      (Parent  : Cursor;
-       Process : not null access procedure (Position : Cursor))
-    is
-    begin
-       if Checks and then Parent = No_Element then
-          raise Constraint_Error with "Parent cursor has no element";
-       end if;
- 
-       if Parent.Container.Count = 0 then
-          pragma Assert (Is_Root (Parent));
-          return;
-       end if;
- 
-       declare
-          C  : Count_Type;
-          NN : Tree_Node_Array renames Parent.Container.Nodes;
-          Busy : With_Busy (Parent.Container.TC'Unrestricted_Access);
- 
-       begin
-          C := NN (Parent.Node).Children.First;
-          while C > 0 loop
-             Process (Cursor'(Parent.Container, Node => C));
-             C := NN (C).Next;
-          end loop;
-       end;
-    end Iterate_Children;
- 
-    procedure Iterate_Children
-      (Container : Tree;
-       Subtree   : Count_Type;
-       Process   : not null access procedure (Position : Cursor))
-    is
-       NN : Tree_Node_Array renames Container.Nodes;
-       N  : Tree_Node_Type renames NN (Subtree);
-       C  : Count_Type;
- 
-    begin
-       --  This is a helper function to recursively iterate over all the nodes
-       --  in a subtree, in depth-first fashion. This particular helper just
-       --  visits the children of this subtree, not the root of the subtree
-       --  itself. This is useful when starting from the ultimate root of the
-       --  entire tree (see Iterate), as that root does not have an element.
- 
-       C := N.Children.First;
-       while C > 0 loop
-          Iterate_Subtree (Container, C, Process);
-          C := NN (C).Next;
-       end loop;
-    end Iterate_Children;
- 
-    function Iterate_Children
-      (Container : Tree;
-       Parent    : Cursor)
-       return Tree_Iterator_Interfaces.Reversible_Iterator'Class
-    is
-       C : constant Tree_Access := Container'Unrestricted_Access;
-    begin
-       if Checks and then Parent = No_Element then
-          raise Constraint_Error with "Parent cursor has no element";
-       end if;
- 
-       if Checks and then Parent.Container /= C then
-          raise Program_Error with "Parent cursor not in container";
-       end if;
- 
-       return It : constant Child_Iterator :=
-         Child_Iterator'(Limited_Controlled with
-                           Container => C,
-                           Subtree   => Parent.Node)
-       do
-          Busy (C.TC);
-       end return;
-    end Iterate_Children;
- 
-    ---------------------
-    -- Iterate_Subtree --
-    ---------------------
- 
-    function Iterate_Subtree
-      (Position : Cursor)
-       return Tree_Iterator_Interfaces.Forward_Iterator'Class
-    is
-       C : constant Tree_Access := Position.Container;
-    begin
-       if Checks and then Position = No_Element then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       --  Implement Vet for multiway trees???
-       --  pragma Assert (Vet (Position), "bad subtree cursor");
- 
-       return It : constant Subtree_Iterator :=
-         (Limited_Controlled with
-            Container => C,
-            Subtree   => Position.Node)
-       do
-          Busy (C.TC);
-       end return;
-    end Iterate_Subtree;
- 
-    procedure Iterate_Subtree
-      (Position  : Cursor;
-       Process   : not null access procedure (Position : Cursor))
-    is
-    begin
-       if Checks and then Position = No_Element then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Position.Container.Count = 0 then
-          pragma Assert (Is_Root (Position));
-          return;
-       end if;
- 
-       declare
-          T : Tree renames Position.Container.all;
-          Busy : With_Busy (T.TC'Unrestricted_Access);
-       begin
-          if Is_Root (Position) then
-             Iterate_Children (T, Position.Node, Process);
-          else
-             Iterate_Subtree (T, Position.Node, Process);
-          end if;
-       end;
-    end Iterate_Subtree;
- 
-    procedure Iterate_Subtree
-      (Container : Tree;
-       Subtree   : Count_Type;
-       Process   : not null access procedure (Position : Cursor))
-    is
-    begin
-       --  This is a helper function to recursively iterate over all the nodes
-       --  in a subtree, in depth-first fashion. It first visits the root of the
-       --  subtree, then visits its children.
- 
-       Process (Cursor'(Container'Unrestricted_Access, Subtree));
-       Iterate_Children (Container, Subtree, Process);
-    end Iterate_Subtree;
- 
-    ----------
-    -- Last --
-    ----------
- 
-    overriding function Last (Object : Child_Iterator) return Cursor is
-    begin
-       return Last_Child (Cursor'(Object.Container, Object.Subtree));
-    end Last;
- 
-    ----------------
-    -- Last_Child --
-    ----------------
- 
-    function Last_Child (Parent : Cursor) return Cursor is
-       Node : Count_Type'Base;
- 
-    begin
-       if Checks and then Parent = No_Element then
-          raise Constraint_Error with "Parent cursor has no element";
-       end if;
- 
-       if Parent.Container.Count = 0 then
-          pragma Assert (Is_Root (Parent));
-          return No_Element;
-       end if;
- 
-       Node := Parent.Container.Nodes (Parent.Node).Children.Last;
- 
-       if Node <= 0 then
-          return No_Element;
-       end if;
- 
-       return Cursor'(Parent.Container, Node);
-    end Last_Child;
- 
-    ------------------------
-    -- Last_Child_Element --
-    ------------------------
- 
-    function Last_Child_Element (Parent : Cursor) return Element_Type is
-    begin
-       return Element (Last_Child (Parent));
-    end Last_Child_Element;
- 
-    ----------
-    -- Move --
-    ----------
- 
-    procedure Move (Target : in out Tree; Source : in out Tree) is
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       TC_Check (Source.TC);
- 
-       Target.Assign (Source);
-       Source.Clear;
-    end Move;
- 
-    ----------
-    -- Next --
-    ----------
- 
-    overriding function Next
-      (Object   : Subtree_Iterator;
-       Position : Cursor) return Cursor
-    is
-    begin
-       if Position.Container = null then
-          return No_Element;
-       end if;
- 
-       if Checks and then Position.Container /= Object.Container then
-          raise Program_Error with
-            "Position cursor of Next designates wrong tree";
-       end if;
- 
-       pragma Assert (Object.Container.Count > 0);
-       pragma Assert (Position.Node /= Root_Node (Object.Container.all));
- 
-       declare
-          Nodes : Tree_Node_Array renames Object.Container.Nodes;
-          Node  : Count_Type;
- 
-       begin
-          Node := Position.Node;
- 
-          if Nodes (Node).Children.First > 0 then
-             return Cursor'(Object.Container, Nodes (Node).Children.First);
-          end if;
- 
-          while Node /= Object.Subtree loop
-             if Nodes (Node).Next > 0 then
-                return Cursor'(Object.Container, Nodes (Node).Next);
-             end if;
- 
-             Node := Nodes (Node).Parent;
-          end loop;
- 
-          return No_Element;
-       end;
-    end Next;
- 
-    overriding function Next
-      (Object   : Child_Iterator;
-       Position : Cursor) return Cursor
-    is
-    begin
-       if Position.Container = null then
-          return No_Element;
-       end if;
- 
-       if Checks and then Position.Container /= Object.Container then
-          raise Program_Error with
-            "Position cursor of Next designates wrong tree";
-       end if;
- 
-       pragma Assert (Object.Container.Count > 0);
-       pragma Assert (Position.Node /= Root_Node (Object.Container.all));
- 
-       return Next_Sibling (Position);
-    end Next;
- 
-    ------------------
-    -- Next_Sibling --
-    ------------------
- 
-    function Next_Sibling (Position : Cursor) return Cursor is
-    begin
-       if Position = No_Element then
-          return No_Element;
-       end if;
- 
-       if Position.Container.Count = 0 then
-          pragma Assert (Is_Root (Position));
-          return No_Element;
-       end if;
- 
-       declare
-          T  : Tree renames Position.Container.all;
-          NN : Tree_Node_Array renames T.Nodes;
-          N  : Tree_Node_Type renames NN (Position.Node);
- 
-       begin
-          if N.Next <= 0 then
-             return No_Element;
-          end if;
- 
-          return Cursor'(Position.Container, N.Next);
-       end;
-    end Next_Sibling;
- 
-    procedure Next_Sibling (Position : in out Cursor) is
-    begin
-       Position := Next_Sibling (Position);
-    end Next_Sibling;
- 
-    ----------------
-    -- Node_Count --
-    ----------------
- 
-    function Node_Count (Container : Tree) return Count_Type is
-    begin
-       --  Container.Count is the number of nodes we have actually allocated. We
-       --  cache the value specifically so this Node_Count operation can execute
-       --  in O(1) time, which makes it behave similarly to how the Length
-       --  selector function behaves for other containers.
-       --
-       --  The cached node count value only describes the nodes we have
-       --  allocated; the root node itself is not included in that count. The
-       --  Node_Count operation returns a value that includes the root node
-       --  (because the RM says so), so we must add 1 to our cached value.
- 
-       return 1 + Container.Count;
-    end Node_Count;
- 
-    ------------
-    -- Parent --
-    ------------
- 
-    function Parent (Position : Cursor) return Cursor is
-    begin
-       if Position = No_Element then
-          return No_Element;
-       end if;
- 
-       if Position.Container.Count = 0 then
-          pragma Assert (Is_Root (Position));
-          return No_Element;
-       end if;
- 
-       declare
-          T  : Tree renames Position.Container.all;
-          NN : Tree_Node_Array renames T.Nodes;
-          N  : Tree_Node_Type renames NN (Position.Node);
- 
-       begin
-          if N.Parent < 0 then
-             pragma Assert (Position.Node = Root_Node (T));
-             return No_Element;
-          end if;
- 
-          return Cursor'(Position.Container, N.Parent);
-       end;
-    end Parent;
- 
-    -------------------
-    -- Prepend_Child --
-    -------------------
- 
-    procedure Prepend_Child
-      (Container : in out Tree;
-       Parent    : Cursor;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1)
-    is
-       Nodes       : Tree_Node_Array renames Container.Nodes;
-       First, Last : Count_Type;
- 
-    begin
-       if Checks and then Parent = No_Element then
-          raise Constraint_Error with "Parent cursor has no element";
-       end if;
- 
-       if Checks and then Parent.Container /= Container'Unrestricted_Access then
-          raise Program_Error with "Parent cursor not in container";
-       end if;
- 
-       if Count = 0 then
-          return;
-       end if;
- 
-       if Checks and then Container.Count > Container.Capacity - Count then
-          raise Capacity_Error
-            with "requested count exceeds available storage";
-       end if;
- 
-       TC_Check (Container.TC);
- 
-       if Container.Count = 0 then
-          Initialize_Root (Container);
-       end if;
- 
-       Allocate_Node (Container, New_Item, First);
-       Nodes (First).Parent := Parent.Node;
- 
-       Last := First;
-       for J in Count_Type'(2) .. Count loop
-          Allocate_Node (Container, New_Item, Nodes (Last).Next);
-          Nodes (Nodes (Last).Next).Parent := Parent.Node;
-          Nodes (Nodes (Last).Next).Prev := Last;
- 
-          Last := Nodes (Last).Next;
-       end loop;
- 
-       Insert_Subtree_List
-         (Container => Container,
-          First     => First,
-          Last      => Last,
-          Parent    => Parent.Node,
-          Before    => Nodes (Parent.Node).Children.First);
- 
-       Container.Count := Container.Count + Count;
-    end Prepend_Child;
- 
-    --------------
-    -- Previous --
-    --------------
- 
-    overriding function Previous
-      (Object   : Child_Iterator;
-       Position : Cursor) return Cursor
-    is
-    begin
-       if Position.Container = null then
-          return No_Element;
-       end if;
- 
-       if Checks and then Position.Container /= Object.Container then
-          raise Program_Error with
-            "Position cursor of Previous designates wrong tree";
-       end if;
- 
-       return Previous_Sibling (Position);
-    end Previous;
- 
-    ----------------------
-    -- Previous_Sibling --
-    ----------------------
- 
-    function Previous_Sibling (Position : Cursor) return Cursor is
-    begin
-       if Position = No_Element then
-          return No_Element;
-       end if;
- 
-       if Position.Container.Count = 0 then
-          pragma Assert (Is_Root (Position));
-          return No_Element;
-       end if;
- 
-       declare
-          T  : Tree renames Position.Container.all;
-          NN : Tree_Node_Array renames T.Nodes;
-          N  : Tree_Node_Type renames NN (Position.Node);
- 
-       begin
-          if N.Prev <= 0 then
-             return No_Element;
-          end if;
- 
-          return Cursor'(Position.Container, N.Prev);
-       end;
-    end Previous_Sibling;
- 
-    procedure Previous_Sibling (Position : in out Cursor) is
-    begin
-       Position := Previous_Sibling (Position);
-    end Previous_Sibling;
- 
-    ----------------------
-    -- Pseudo_Reference --
-    ----------------------
- 
-    function Pseudo_Reference
-      (Container : aliased Tree'Class) return Reference_Control_Type
-    is
-       TC : constant Tamper_Counts_Access := Container.TC'Unrestricted_Access;
-    begin
-       return R : constant Reference_Control_Type := (Controlled with TC) do
-          Lock (TC.all);
-       end return;
-    end Pseudo_Reference;
- 
-    -------------------
-    -- Query_Element --
-    -------------------
- 
-    procedure Query_Element
-      (Position : Cursor;
-       Process  : not null access procedure (Element : Element_Type))
-    is
-    begin
-       if Checks and then Position = No_Element then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Checks and then Is_Root (Position) then
-          raise Program_Error with "Position cursor designates root";
-       end if;
- 
-       declare
-          T : Tree renames Position.Container.all'Unrestricted_Access.all;
-          Lock : With_Lock (T.TC'Unrestricted_Access);
-       begin
-          Process (Element => T.Elements (Position.Node));
-       end;
-    end Query_Element;
- 
-    ----------
-    -- Read --
-    ----------
- 
-    procedure Read
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : out Tree)
-    is
-       procedure Read_Children (Subtree : Count_Type);
- 
-       function Read_Subtree
-         (Parent : Count_Type) return Count_Type;
- 
-       NN : Tree_Node_Array renames Container.Nodes;
- 
-       Total_Count : Count_Type'Base;
-       --  Value read from the stream that says how many elements follow
- 
-       Read_Count : Count_Type'Base;
-       --  Actual number of elements read from the stream
- 
-       -------------------
-       -- Read_Children --
-       -------------------
- 
-       procedure Read_Children (Subtree : Count_Type) is
-          Count : Count_Type'Base;
-          --  number of child subtrees
- 
-          CC : Children_Type;
- 
-       begin
-          Count_Type'Read (Stream, Count);
- 
-          if Checks and then Count < 0 then
-             raise Program_Error with "attempt to read from corrupt stream";
-          end if;
- 
-          if Count = 0 then
-             return;
-          end if;
- 
-          CC.First := Read_Subtree (Parent => Subtree);
-          CC.Last := CC.First;
- 
-          for J in Count_Type'(2) .. Count loop
-             NN (CC.Last).Next := Read_Subtree (Parent => Subtree);
-             NN (NN (CC.Last).Next).Prev := CC.Last;
-             CC.Last := NN (CC.Last).Next;
-          end loop;
- 
-          --  Now that the allocation and reads have completed successfully, it
-          --  is safe to link the children to their parent.
- 
-          NN (Subtree).Children := CC;
-       end Read_Children;
- 
-       ------------------
-       -- Read_Subtree --
-       ------------------
- 
-       function Read_Subtree
-         (Parent : Count_Type) return Count_Type
-       is
-          Subtree : Count_Type;
- 
-       begin
-          Allocate_Node (Container, Stream, Subtree);
-          Container.Nodes (Subtree).Parent := Parent;
- 
-          Read_Count := Read_Count + 1;
- 
-          Read_Children (Subtree);
- 
-          return Subtree;
-       end Read_Subtree;
- 
-    --  Start of processing for Read
- 
-    begin
-       Container.Clear;  -- checks busy bit
- 
-       Count_Type'Read (Stream, Total_Count);
- 
-       if Checks and then Total_Count < 0 then
-          raise Program_Error with "attempt to read from corrupt stream";
-       end if;
- 
-       if Total_Count = 0 then
-          return;
-       end if;
- 
-       if Checks and then Total_Count > Container.Capacity then
-          raise Capacity_Error  -- ???
-            with "node count in stream exceeds container capacity";
-       end if;
- 
-       Initialize_Root (Container);
- 
-       Read_Count := 0;
- 
-       Read_Children (Root_Node (Container));
- 
-       if Checks and then Read_Count /= Total_Count then
-          raise Program_Error with "attempt to read from corrupt stream";
-       end if;
- 
-       Container.Count := Total_Count;
-    end Read;
- 
-    procedure Read
-      (Stream   : not null access Root_Stream_Type'Class;
-       Position : out Cursor)
-    is
-    begin
-       raise Program_Error with "attempt to read tree cursor from stream";
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Constant_Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Read;
- 
-    ---------------
-    -- Reference --
-    ---------------
- 
-    function Reference
-      (Container : aliased in out Tree;
-       Position  : Cursor) return Reference_Type
-    is
-    begin
-       if Checks and then Position.Container = null then
-          raise Constraint_Error with
-            "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor designates wrong container";
-       end if;
- 
-       if Checks and then Position.Node = Root_Node (Container) then
-          raise Program_Error with "Position cursor designates root";
-       end if;
- 
-       --  Implement Vet for multiway tree???
-       --  pragma Assert (Vet (Position),
-       --                 "Position cursor in Constant_Reference is bad");
- 
-       declare
-          TC : constant Tamper_Counts_Access :=
-            Container.TC'Unrestricted_Access;
-       begin
-          return R : constant Reference_Type :=
-            (Element => Container.Elements (Position.Node)'Access,
-             Control => (Controlled with TC))
-          do
-             Lock (TC.all);
-          end return;
-       end;
-    end Reference;
- 
-    --------------------
-    -- Remove_Subtree --
-    --------------------
- 
-    procedure Remove_Subtree
-      (Container : in out Tree;
-       Subtree   : Count_Type)
-    is
-       NN : Tree_Node_Array renames Container.Nodes;
-       N  : Tree_Node_Type renames NN (Subtree);
-       CC : Children_Type renames NN (N.Parent).Children;
- 
-    begin
-       --  This is a utility operation to remove a subtree node from its
-       --  parent's list of children.
- 
-       if CC.First = Subtree then
-          pragma Assert (N.Prev <= 0);
- 
-          if CC.Last = Subtree then
-             pragma Assert (N.Next <= 0);
-             CC.First := 0;
-             CC.Last := 0;
- 
-          else
-             CC.First := N.Next;
-             NN (CC.First).Prev := 0;
-          end if;
- 
-       elsif CC.Last = Subtree then
-          pragma Assert (N.Next <= 0);
-          CC.Last := N.Prev;
-          NN (CC.Last).Next := 0;
- 
-       else
-          NN (N.Prev).Next := N.Next;
-          NN (N.Next).Prev := N.Prev;
-       end if;
-    end Remove_Subtree;
- 
-    ----------------------
-    -- Replace_Element --
-    ----------------------
- 
-    procedure Replace_Element
-      (Container : in out Tree;
-       Position  : Cursor;
-       New_Item  : Element_Type)
-    is
-    begin
-       if Checks and then Position = No_Element then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with "Position cursor not in container";
-       end if;
- 
-       if Checks and then Is_Root (Position) then
-          raise Program_Error with "Position cursor designates root";
-       end if;
- 
-       TE_Check (Container.TC);
- 
-       Container.Elements (Position.Node) := New_Item;
-    end Replace_Element;
- 
-    ------------------------------
-    -- Reverse_Iterate_Children --
-    ------------------------------
- 
-    procedure Reverse_Iterate_Children
-      (Parent  : Cursor;
-       Process : not null access procedure (Position : Cursor))
-    is
-    begin
-       if Checks and then Parent = No_Element then
-          raise Constraint_Error with "Parent cursor has no element";
-       end if;
- 
-       if Parent.Container.Count = 0 then
-          pragma Assert (Is_Root (Parent));
-          return;
-       end if;
- 
-       declare
-          NN : Tree_Node_Array renames Parent.Container.Nodes;
-          Busy : With_Busy (Parent.Container.TC'Unrestricted_Access);
-          C  : Count_Type;
- 
-       begin
-          C := NN (Parent.Node).Children.Last;
-          while C > 0 loop
-             Process (Cursor'(Parent.Container, Node => C));
-             C := NN (C).Prev;
-          end loop;
-       end;
-    end Reverse_Iterate_Children;
- 
-    ----------
-    -- Root --
-    ----------
- 
-    function Root (Container : Tree) return Cursor is
-    begin
-       return (Container'Unrestricted_Access, Root_Node (Container));
-    end Root;
- 
-    ---------------
-    -- Root_Node --
-    ---------------
- 
-    function Root_Node (Container : Tree) return Count_Type is
-       pragma Unreferenced (Container);
- 
-    begin
-       return 0;
-    end Root_Node;
- 
-    ---------------------
-    -- Splice_Children --
-    ---------------------
- 
-    procedure Splice_Children
-      (Target        : in out Tree;
-       Target_Parent : Cursor;
-       Before        : Cursor;
-       Source        : in out Tree;
-       Source_Parent : Cursor)
-    is
-    begin
-       if Checks and then Target_Parent = No_Element then
-          raise Constraint_Error with "Target_Parent cursor has no element";
-       end if;
- 
-       if Checks and then Target_Parent.Container /= Target'Unrestricted_Access
-       then
-          raise Program_Error
-            with "Target_Parent cursor not in Target container";
-       end if;
- 
-       if Before /= No_Element then
-          if Checks and then Before.Container /= Target'Unrestricted_Access then
-             raise Program_Error
-               with "Before cursor not in Target container";
-          end if;
- 
-          if Checks and then
-            Target.Nodes (Before.Node).Parent /= Target_Parent.Node
-          then
-             raise Constraint_Error
-               with "Before cursor not child of Target_Parent";
-          end if;
-       end if;
- 
-       if Checks and then Source_Parent = No_Element then
-          raise Constraint_Error with "Source_Parent cursor has no element";
-       end if;
- 
-       if Checks and then Source_Parent.Container /= Source'Unrestricted_Access
-       then
-          raise Program_Error
-            with "Source_Parent cursor not in Source container";
-       end if;
- 
-       if Source.Count = 0 then
-          pragma Assert (Is_Root (Source_Parent));
-          return;
-       end if;
- 
-       if Target'Address = Source'Address then
-          if Target_Parent = Source_Parent then
-             return;
-          end if;
- 
-          TC_Check (Target.TC);
- 
-          if Checks and then Is_Reachable (Container => Target,
-                           From      => Target_Parent.Node,
-                           To        => Source_Parent.Node)
-          then
-             raise Constraint_Error
-               with "Source_Parent is ancestor of Target_Parent";
-          end if;
- 
-          Splice_Children
-            (Container     => Target,
-             Target_Parent => Target_Parent.Node,
-             Before        => Before.Node,
-             Source_Parent => Source_Parent.Node);
- 
-          return;
-       end if;
- 
-       TC_Check (Target.TC);
-       TC_Check (Source.TC);
- 
-       if Target.Count = 0 then
-          Initialize_Root (Target);
-       end if;
- 
-       Splice_Children
-         (Target        => Target,
-          Target_Parent => Target_Parent.Node,
-          Before        => Before.Node,
-          Source        => Source,
-          Source_Parent => Source_Parent.Node);
-    end Splice_Children;
- 
-    procedure Splice_Children
-      (Container       : in out Tree;
-       Target_Parent   : Cursor;
-       Before          : Cursor;
-       Source_Parent   : Cursor)
-    is
-    begin
-       if Checks and then Target_Parent = No_Element then
-          raise Constraint_Error with "Target_Parent cursor has no element";
-       end if;
- 
-       if Checks and then
-         Target_Parent.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error
-            with "Target_Parent cursor not in container";
-       end if;
- 
-       if Before /= No_Element then
-          if Checks and then Before.Container /= Container'Unrestricted_Access
-          then
-             raise Program_Error
-               with "Before cursor not in container";
-          end if;
- 
-          if Checks and then
-            Container.Nodes (Before.Node).Parent /= Target_Parent.Node
-          then
-             raise Constraint_Error
-               with "Before cursor not child of Target_Parent";
-          end if;
-       end if;
- 
-       if Checks and then Source_Parent = No_Element then
-          raise Constraint_Error with "Source_Parent cursor has no element";
-       end if;
- 
-       if Checks and then
-         Source_Parent.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error
-            with "Source_Parent cursor not in container";
-       end if;
- 
-       if Target_Parent = Source_Parent then
-          return;
-       end if;
- 
-       pragma Assert (Container.Count > 0);
- 
-       TC_Check (Container.TC);
- 
-       if Checks and then Is_Reachable (Container => Container,
-                        From      => Target_Parent.Node,
-                        To        => Source_Parent.Node)
-       then
-          raise Constraint_Error
-            with "Source_Parent is ancestor of Target_Parent";
-       end if;
- 
-       Splice_Children
-         (Container     => Container,
-          Target_Parent => Target_Parent.Node,
-          Before        => Before.Node,
-          Source_Parent => Source_Parent.Node);
-    end Splice_Children;
- 
-    procedure Splice_Children
-      (Container     : in out Tree;
-       Target_Parent : Count_Type;
-       Before        : Count_Type'Base;
-       Source_Parent : Count_Type)
-    is
-       NN : Tree_Node_Array renames Container.Nodes;
-       CC : constant Children_Type := NN (Source_Parent).Children;
-       C  : Count_Type'Base;
- 
-    begin
-       --  This is a utility operation to remove the children from Source parent
-       --  and insert them into Target parent.
- 
-       NN (Source_Parent).Children := Children_Type'(others => 0);
- 
-       --  Fix up the Parent pointers of each child to designate its new Target
-       --  parent.
- 
-       C := CC.First;
-       while C > 0 loop
-          NN (C).Parent := Target_Parent;
-          C := NN (C).Next;
-       end loop;
- 
-       Insert_Subtree_List
-         (Container => Container,
-          First     => CC.First,
-          Last      => CC.Last,
-          Parent    => Target_Parent,
-          Before    => Before);
-    end Splice_Children;
- 
-    procedure Splice_Children
-      (Target        : in out Tree;
-       Target_Parent : Count_Type;
-       Before        : Count_Type'Base;
-       Source        : in out Tree;
-       Source_Parent : Count_Type)
-    is
-       S_NN : Tree_Node_Array renames Source.Nodes;
-       S_CC : Children_Type renames S_NN (Source_Parent).Children;
- 
-       Target_Count, Source_Count : Count_Type;
-       T, S                       : Count_Type'Base;
- 
-    begin
-       --  This is a utility operation to copy the children from the Source
-       --  parent and insert them as children of the Target parent, and then
-       --  delete them from the Source. (This is not a true splice operation,
-       --  but it is the best we can do in a bounded form.) The Before position
-       --  specifies where among the Target parent's exising children the new
-       --  children are inserted.
- 
-       --  Before we attempt the insertion, we must count the sources nodes in
-       --  order to determine whether the target have enough storage
-       --  available. Note that calculating this value is an O(n) operation.
- 
-       --  Here is an optimization opportunity: iterate of each children the
-       --  source explicitly, and keep a running count of the total number of
-       --  nodes. Compare the running total to the capacity of the target each
-       --  pass through the loop. This is more efficient than summing the counts
-       --  of child subtree (which is what Subtree_Node_Count does) and then
-       --  comparing that total sum to the target's capacity.  ???
- 
-       --  Here is another possibility. We currently treat the splice as an
-       --  all-or-nothing proposition: either we can insert all of children of
-       --  the source, or we raise exception with modifying the target. The
-       --  price for not causing side-effect is an O(n) determination of the
-       --  source count. If we are willing to tolerate side-effect, then we
-       --  could loop over the children of the source, counting that subtree and
-       --  then immediately inserting it in the target. The issue here is that
-       --  the test for available storage could fail during some later pass,
-       --  after children have already been inserted into target. ???
- 
-       Source_Count := Subtree_Node_Count (Source, Source_Parent) - 1;
- 
-       if Source_Count = 0 then
-          return;
-       end if;
- 
-       if Checks and then Target.Count > Target.Capacity - Source_Count then
-          raise Capacity_Error  -- ???
-            with "Source count exceeds available storage on Target";
-       end if;
- 
-       --  Copy_Subtree returns a count of the number of nodes it inserts, but
-       --  it does this by incrementing the value passed in. Therefore we must
-       --  initialize the count before calling Copy_Subtree.
- 
-       Target_Count := 0;
- 
-       S := S_CC.First;
-       while S > 0 loop
-          Copy_Subtree
-            (Source         => Source,
-             Source_Subtree => S,
-             Target         => Target,
-             Target_Parent  => Target_Parent,
-             Target_Subtree => T,
-             Count          => Target_Count);
- 
-          Insert_Subtree_Node
-            (Container => Target,
-             Subtree   => T,
-             Parent    => Target_Parent,
-             Before    => Before);
- 
-          S := S_NN (S).Next;
-       end loop;
- 
-       pragma Assert (Target_Count = Source_Count);
-       Target.Count := Target.Count + Target_Count;
- 
-       --  As with Copy_Subtree, operation Deallocate_Children returns a count
-       --  of the number of nodes it deallocates, but it works by incrementing
-       --  the value passed in. We must therefore initialize the count before
-       --  calling it.
- 
-       Source_Count := 0;
- 
-       Deallocate_Children (Source, Source_Parent, Source_Count);
-       pragma Assert (Source_Count = Target_Count);
- 
-       Source.Count := Source.Count - Source_Count;
-    end Splice_Children;
- 
-    --------------------
-    -- Splice_Subtree --
-    --------------------
- 
-    procedure Splice_Subtree
-      (Target   : in out Tree;
-       Parent   : Cursor;
-       Before   : Cursor;
-       Source   : in out Tree;
-       Position : in out Cursor)
-    is
-    begin
-       if Checks and then Parent = No_Element then
-          raise Constraint_Error with "Parent cursor has no element";
-       end if;
- 
-       if Checks and then Parent.Container /= Target'Unrestricted_Access then
-          raise Program_Error with "Parent cursor not in Target container";
-       end if;
- 
-       if Before /= No_Element then
-          if Checks and then Before.Container /= Target'Unrestricted_Access then
-             raise Program_Error with "Before cursor not in Target container";
-          end if;
- 
-          if Checks and then Target.Nodes (Before.Node).Parent /= Parent.Node
-          then
-             raise Constraint_Error with "Before cursor not child of Parent";
-          end if;
-       end if;
- 
-       if Checks and then Position = No_Element then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Source'Unrestricted_Access then
-          raise Program_Error with "Position cursor not in Source container";
-       end if;
- 
-       if Checks and then Is_Root (Position) then
-          raise Program_Error with "Position cursor designates root";
-       end if;
- 
-       if Target'Address = Source'Address then
-          if Target.Nodes (Position.Node).Parent = Parent.Node then
-             if Before = No_Element then
-                if Target.Nodes (Position.Node).Next <= 0 then  -- last child
-                   return;
-                end if;
- 
-             elsif Position.Node = Before.Node then
-                return;
- 
-             elsif Target.Nodes (Position.Node).Next = Before.Node then
-                return;
-             end if;
-          end if;
- 
-          TC_Check (Target.TC);
- 
-          if Checks and then Is_Reachable (Container => Target,
-                           From      => Parent.Node,
-                           To        => Position.Node)
-          then
-             raise Constraint_Error with "Position is ancestor of Parent";
-          end if;
- 
-          Remove_Subtree (Target, Position.Node);
- 
-          Target.Nodes (Position.Node).Parent := Parent.Node;
-          Insert_Subtree_Node (Target, Position.Node, Parent.Node, Before.Node);
- 
-          return;
-       end if;
- 
-       TC_Check (Target.TC);
-       TC_Check (Source.TC);
- 
-       if Target.Count = 0 then
-          Initialize_Root (Target);
-       end if;
- 
-       Splice_Subtree
-         (Target   => Target,
-          Parent   => Parent.Node,
-          Before   => Before.Node,
-          Source   => Source,
-          Position => Position.Node);  -- modified during call
- 
-       Position.Container := Target'Unrestricted_Access;
-    end Splice_Subtree;
- 
-    procedure Splice_Subtree
-      (Container : in out Tree;
-       Parent    : Cursor;
-       Before    : Cursor;
-       Position  : Cursor)
-    is
-    begin
-       if Checks and then Parent = No_Element then
-          raise Constraint_Error with "Parent cursor has no element";
-       end if;
- 
-       if Checks and then Parent.Container /= Container'Unrestricted_Access then
-          raise Program_Error with "Parent cursor not in container";
-       end if;
- 
-       if Before /= No_Element then
-          if Checks and then Before.Container /= Container'Unrestricted_Access
-          then
-             raise Program_Error with "Before cursor not in container";
-          end if;
- 
-          if Checks and then Container.Nodes (Before.Node).Parent /= Parent.Node
-          then
-             raise Constraint_Error with "Before cursor not child of Parent";
-          end if;
-       end if;
- 
-       if Checks and then Position = No_Element then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with "Position cursor not in container";
-       end if;
- 
-       if Checks and then Is_Root (Position) then
- 
-          --  Should this be PE instead?  Need ARG confirmation.  ???
- 
-          raise Constraint_Error with "Position cursor designates root";
-       end if;
- 
-       if Container.Nodes (Position.Node).Parent = Parent.Node then
-          if Before = No_Element then
-             if Container.Nodes (Position.Node).Next <= 0 then  -- last child
-                return;
-             end if;
- 
-          elsif Position.Node = Before.Node then
-             return;
- 
-          elsif Container.Nodes (Position.Node).Next = Before.Node then
-             return;
-          end if;
-       end if;
- 
-       TC_Check (Container.TC);
- 
-       if Checks and then Is_Reachable (Container => Container,
-                        From      => Parent.Node,
-                        To        => Position.Node)
-       then
-          raise Constraint_Error with "Position is ancestor of Parent";
-       end if;
- 
-       Remove_Subtree (Container, Position.Node);
-       Container.Nodes (Position.Node).Parent := Parent.Node;
-       Insert_Subtree_Node (Container, Position.Node, Parent.Node, Before.Node);
-    end Splice_Subtree;
- 
-    procedure Splice_Subtree
-      (Target   : in out Tree;
-       Parent   : Count_Type;
-       Before   : Count_Type'Base;
-       Source   : in out Tree;
-       Position : in out Count_Type)  -- Source on input, Target on output
-    is
-       Source_Count : Count_Type := Subtree_Node_Count (Source, Position);
-       pragma Assert (Source_Count >= 1);
- 
-       Target_Subtree : Count_Type;
-       Target_Count   : Count_Type;
- 
-    begin
-       --  This is a utility operation to do the heavy lifting associated with
-       --  splicing a subtree from one tree to another. Note that "splicing"
-       --  is a bit of a misnomer here in the case of a bounded tree, because
-       --  the elements must be copied from the source to the target.
- 
-       if Checks and then Target.Count > Target.Capacity - Source_Count then
-          raise Capacity_Error  -- ???
-            with "Source count exceeds available storage on Target";
-       end if;
- 
-       --  Copy_Subtree returns a count of the number of nodes it inserts, but
-       --  it does this by incrementing the value passed in. Therefore we must
-       --  initialize the count before calling Copy_Subtree.
- 
-       Target_Count := 0;
- 
-       Copy_Subtree
-         (Source         => Source,
-          Source_Subtree => Position,
-          Target         => Target,
-          Target_Parent  => Parent,
-          Target_Subtree => Target_Subtree,
-          Count          => Target_Count);
- 
-       pragma Assert (Target_Count = Source_Count);
- 
-       --  Now link the newly-allocated subtree into the target.
- 
-       Insert_Subtree_Node
-         (Container => Target,
-          Subtree   => Target_Subtree,
-          Parent    => Parent,
-          Before    => Before);
- 
-       Target.Count := Target.Count + Target_Count;
- 
-       --  The manipulation of the Target container is complete. Now we remove
-       --  the subtree from the Source container.
- 
-       Remove_Subtree (Source, Position);  -- unlink the subtree
- 
-       --  As with Copy_Subtree, operation Deallocate_Subtree returns a count of
-       --  the number of nodes it deallocates, but it works by incrementing the
-       --  value passed in. We must therefore initialize the count before
-       --  calling it.
- 
-       Source_Count := 0;
- 
-       Deallocate_Subtree (Source, Position, Source_Count);
-       pragma Assert (Source_Count = Target_Count);
- 
-       Source.Count := Source.Count - Source_Count;
- 
-       Position := Target_Subtree;
-    end Splice_Subtree;
- 
-    ------------------------
-    -- Subtree_Node_Count --
-    ------------------------
- 
-    function Subtree_Node_Count (Position : Cursor) return Count_Type is
-    begin
-       if Position = No_Element then
-          return 0;
-       end if;
- 
-       if Position.Container.Count = 0 then
-          pragma Assert (Is_Root (Position));
-          return 1;
-       end if;
- 
-       return Subtree_Node_Count (Position.Container.all, Position.Node);
-    end Subtree_Node_Count;
- 
-    function Subtree_Node_Count
-      (Container : Tree;
-       Subtree   : Count_Type) return Count_Type
-    is
-       Result : Count_Type;
-       Node   : Count_Type'Base;
- 
-    begin
-       Result := 1;
-       Node := Container.Nodes (Subtree).Children.First;
-       while Node > 0 loop
-          Result := Result + Subtree_Node_Count (Container, Node);
-          Node := Container.Nodes (Node).Next;
-       end loop;
-       return Result;
-    end Subtree_Node_Count;
- 
-    ----------
-    -- Swap --
-    ----------
- 
-    procedure Swap
-      (Container : in out Tree;
-       I, J      : Cursor)
-    is
-    begin
-       if Checks and then I = No_Element then
-          raise Constraint_Error with "I cursor has no element";
-       end if;
- 
-       if Checks and then I.Container /= Container'Unrestricted_Access then
-          raise Program_Error with "I cursor not in container";
-       end if;
- 
-       if Checks and then Is_Root (I) then
-          raise Program_Error with "I cursor designates root";
-       end if;
- 
-       if I = J then -- make this test sooner???
-          return;
-       end if;
- 
-       if Checks and then J = No_Element then
-          raise Constraint_Error with "J cursor has no element";
-       end if;
- 
-       if Checks and then J.Container /= Container'Unrestricted_Access then
-          raise Program_Error with "J cursor not in container";
-       end if;
- 
-       if Checks and then Is_Root (J) then
-          raise Program_Error with "J cursor designates root";
-       end if;
- 
-       TE_Check (Container.TC);
- 
-       declare
-          EE : Element_Array renames Container.Elements;
-          EI : constant Element_Type := EE (I.Node);
- 
-       begin
-          EE (I.Node) := EE (J.Node);
-          EE (J.Node) := EI;
-       end;
-    end Swap;
- 
-    --------------------
-    -- Update_Element --
-    --------------------
- 
-    procedure Update_Element
-      (Container : in out Tree;
-       Position  : Cursor;
-       Process   : not null access procedure (Element : in out Element_Type))
-    is
-    begin
-       if Checks and then Position = No_Element then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with "Position cursor not in container";
-       end if;
- 
-       if Checks and then Is_Root (Position) then
-          raise Program_Error with "Position cursor designates root";
-       end if;
- 
-       declare
-          T : Tree renames Position.Container.all'Unrestricted_Access.all;
-          Lock : With_Lock (T.TC'Unrestricted_Access);
-       begin
-          Process (Element => T.Elements (Position.Node));
-       end;
-    end Update_Element;
- 
-    -----------
-    -- Write --
-    -----------
- 
-    procedure Write
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : Tree)
-    is
-       procedure Write_Children (Subtree : Count_Type);
-       procedure Write_Subtree (Subtree : Count_Type);
- 
-       --------------------
-       -- Write_Children --
-       --------------------
- 
-       procedure Write_Children (Subtree : Count_Type) is
-          CC : Children_Type renames Container.Nodes (Subtree).Children;
-          C  : Count_Type'Base;
- 
-       begin
-          Count_Type'Write (Stream, Child_Count (Container, Subtree));
- 
-          C := CC.First;
-          while C > 0 loop
-             Write_Subtree (C);
-             C := Container.Nodes (C).Next;
-          end loop;
-       end Write_Children;
- 
-       -------------------
-       -- Write_Subtree --
-       -------------------
- 
-       procedure Write_Subtree (Subtree : Count_Type) is
-       begin
-          Element_Type'Write (Stream, Container.Elements (Subtree));
-          Write_Children (Subtree);
-       end Write_Subtree;
- 
-    --  Start of processing for Write
- 
-    begin
-       Count_Type'Write (Stream, Container.Count);
- 
-       if Container.Count = 0 then
-          return;
-       end if;
- 
-       Write_Children (Root_Node (Container));
-    end Write;
- 
-    procedure Write
-      (Stream   : not null access Root_Stream_Type'Class;
-       Position : Cursor)
-    is
-    begin
-       raise Program_Error with "attempt to write tree cursor to stream";
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Constant_Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Write;
- 
- end Ada.Containers.Bounded_Multiway_Trees;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cbmutr.ads gcc-8.1.0/gcc/ada/a-cbmutr.ads
*** gcc-7.3.0/gcc/ada/a-cbmutr.ads	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-cbmutr.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,406 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                   ADA.CONTAINERS.BOUNDED_MULTIWAY_TREES                  --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --           Copyright (C) 2014-2015, Free Software Foundation, 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/>.                                          --
- --                                                                          --
- -- This unit was originally developed by Matthew J Heaney.                  --
- ------------------------------------------------------------------------------
- 
- with Ada.Iterator_Interfaces;
- 
- with Ada.Containers.Helpers;
- private with Ada.Streams;
- 
- generic
-    type Element_Type is private;
- 
-    with function "=" (Left, Right : Element_Type) return Boolean is <>;
- 
- package Ada.Containers.Bounded_Multiway_Trees is
-    pragma Annotate (CodePeer, Skip_Analysis);
-    pragma Pure;
-    pragma Remote_Types;
- 
-    type Tree (Capacity : Count_Type) is tagged private
-      with Constant_Indexing => Constant_Reference,
-           Variable_Indexing => Reference,
-           Default_Iterator  => Iterate,
-           Iterator_Element  => Element_Type;
-    pragma Preelaborable_Initialization (Tree);
- 
-    type Cursor is private;
-    pragma Preelaborable_Initialization (Cursor);
- 
-    Empty_Tree : constant Tree;
- 
-    No_Element : constant Cursor;
-    function Has_Element (Position : Cursor) return Boolean;
- 
-    package Tree_Iterator_Interfaces is new
-      Ada.Iterator_Interfaces (Cursor, Has_Element);
- 
-    function Equal_Subtree
-      (Left_Position  : Cursor;
-       Right_Position : Cursor) return Boolean;
- 
-    function "=" (Left, Right : Tree) return Boolean;
- 
-    function Is_Empty (Container : Tree) return Boolean;
- 
-    function Node_Count (Container : Tree) return Count_Type;
- 
-    function Subtree_Node_Count (Position : Cursor) return Count_Type;
- 
-    function Depth (Position : Cursor) return Count_Type;
- 
-    function Is_Root (Position : Cursor) return Boolean;
- 
-    function Is_Leaf (Position : Cursor) return Boolean;
- 
-    function Root (Container : Tree) return Cursor;
- 
-    procedure Clear (Container : in out Tree);
- 
-    function Element (Position : Cursor) return Element_Type;
- 
-    procedure Replace_Element
-      (Container : in out Tree;
-       Position  : Cursor;
-       New_Item  : Element_Type);
- 
-    procedure Query_Element
-      (Position : Cursor;
-       Process  : not null access procedure (Element : Element_Type));
- 
-    procedure Update_Element
-      (Container : in out Tree;
-       Position  : Cursor;
-       Process   : not null access procedure (Element : in out Element_Type));
- 
-    type Constant_Reference_Type
-      (Element : not null access constant Element_Type) is private
-         with Implicit_Dereference => Element;
- 
-    type Reference_Type
-      (Element : not null access Element_Type) is private
-         with Implicit_Dereference => Element;
- 
-    function Constant_Reference
-      (Container : aliased Tree;
-       Position  : Cursor) return Constant_Reference_Type;
- 
-    function Reference
-      (Container : aliased in out Tree;
-       Position  : Cursor) return Reference_Type;
- 
-    procedure Assign (Target : in out Tree; Source : Tree);
- 
-    function Copy (Source : Tree; Capacity : Count_Type := 0) return Tree;
- 
-    procedure Move (Target : in out Tree; Source : in out Tree);
- 
-    procedure Delete_Leaf
-      (Container : in out Tree;
-       Position  : in out Cursor);
- 
-    procedure Delete_Subtree
-      (Container : in out Tree;
-       Position  : in out Cursor);
- 
-    procedure Swap
-      (Container : in out Tree;
-       I, J      : Cursor);
- 
-    function Find
-      (Container : Tree;
-       Item      : Element_Type) return Cursor;
- 
-    function Find_In_Subtree
-      (Position : Cursor;
-       Item     : Element_Type) return Cursor;
- 
-    function Ancestor_Find
-      (Position : Cursor;
-       Item     : Element_Type) return Cursor;
- 
-    function Contains
-      (Container : Tree;
-       Item      : Element_Type) return Boolean;
- 
-    procedure Iterate
-      (Container : Tree;
-       Process   : not null access procedure (Position : Cursor));
- 
-    procedure Iterate_Subtree
-      (Position  : Cursor;
-       Process   : not null access procedure (Position : Cursor));
- 
-    function Iterate (Container : Tree)
-      return Tree_Iterator_Interfaces.Forward_Iterator'Class;
- 
-    function Iterate_Subtree (Position : Cursor)
-      return Tree_Iterator_Interfaces.Forward_Iterator'Class;
- 
-    function Iterate_Children
-      (Container : Tree;
-       Parent    : Cursor)
-       return Tree_Iterator_Interfaces.Reversible_Iterator'Class;
- 
-    function Child_Count (Parent : Cursor) return Count_Type;
- 
-    function Child_Depth (Parent, Child : Cursor) return Count_Type;
- 
-    procedure Insert_Child
-      (Container : in out Tree;
-       Parent    : Cursor;
-       Before    : Cursor;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1);
- 
-    procedure Insert_Child
-      (Container : in out Tree;
-       Parent    : Cursor;
-       Before    : Cursor;
-       New_Item  : Element_Type;
-       Position  : out Cursor;
-       Count     : Count_Type := 1);
- 
-    procedure Insert_Child
-      (Container : in out Tree;
-       Parent    : Cursor;
-       Before    : Cursor;
-       Position  : out Cursor;
-       Count     : Count_Type := 1);
- 
-    procedure Prepend_Child
-      (Container : in out Tree;
-       Parent    : Cursor;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1);
- 
-    procedure Append_Child
-      (Container : in out Tree;
-       Parent    : Cursor;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1);
- 
-    procedure Delete_Children
-      (Container : in out Tree;
-       Parent    : Cursor);
- 
-    procedure Copy_Subtree
-      (Target   : in out Tree;
-       Parent   : Cursor;
-       Before   : Cursor;
-       Source   : Cursor);
- 
-    procedure Splice_Subtree
-      (Target   : in out Tree;
-       Parent   : Cursor;
-       Before   : Cursor;
-       Source   : in out Tree;
-       Position : in out Cursor);
- 
-    procedure Splice_Subtree
-      (Container : in out Tree;
-       Parent    : Cursor;
-       Before    : Cursor;
-       Position  : Cursor);
- 
-    procedure Splice_Children
-      (Target        : in out Tree;
-       Target_Parent : Cursor;
-       Before        : Cursor;
-       Source        : in out Tree;
-       Source_Parent : Cursor);
- 
-    procedure Splice_Children
-      (Container       : in out Tree;
-       Target_Parent   : Cursor;
-       Before          : Cursor;
-       Source_Parent   : Cursor);
- 
-    function Parent (Position : Cursor) return Cursor;
- 
-    function First_Child (Parent : Cursor) return Cursor;
- 
-    function First_Child_Element (Parent : Cursor) return Element_Type;
- 
-    function Last_Child (Parent : Cursor) return Cursor;
- 
-    function Last_Child_Element (Parent : Cursor) return Element_Type;
- 
-    function Next_Sibling (Position : Cursor) return Cursor;
- 
-    function Previous_Sibling (Position : Cursor) return Cursor;
- 
-    procedure Next_Sibling (Position : in out Cursor);
- 
-    procedure Previous_Sibling (Position : in out Cursor);
- 
-    procedure Iterate_Children
-      (Parent  : Cursor;
-       Process : not null access procedure (Position : Cursor));
- 
-    procedure Reverse_Iterate_Children
-      (Parent  : Cursor;
-       Process : not null access procedure (Position : Cursor));
- 
- private
- 
-    use Ada.Containers.Helpers;
-    package Implementation is new Generic_Implementation;
-    use Implementation;
- 
-    use Ada.Streams;
- 
-    No_Node : constant Count_Type'Base := -1;
-    --  Need to document all global declarations such as this ???
- 
-    --  Following decls also need much more documentation ???
- 
-    type Children_Type is record
-       First : Count_Type'Base;
-       Last  : Count_Type'Base;
-    end record;
- 
-    type Tree_Node_Type is record
-       Parent   : Count_Type'Base;
-       Prev     : Count_Type'Base;
-       Next     : Count_Type'Base;
-       Children : Children_Type;
-    end record;
- 
-    type Tree_Node_Array is array (Count_Type range <>) of Tree_Node_Type;
-    type Element_Array is array (Count_Type range <>) of aliased Element_Type;
- 
-    type Tree (Capacity : Count_Type) is tagged record
-       Nodes    : Tree_Node_Array (0 .. Capacity) := (others => <>);
-       Elements : Element_Array (1 .. Capacity) := (others => <>);
-       Free     : Count_Type'Base := No_Node;
-       TC       : aliased Tamper_Counts;
-       Count    : Count_Type := 0;
-    end record;
- 
-    procedure Write
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : Tree);
- 
-    for Tree'Write use Write;
- 
-    procedure Read
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : out Tree);
- 
-    for Tree'Read use Read;
- 
-    type Tree_Access is access all Tree;
-    for Tree_Access'Storage_Size use 0;
- 
-    type Cursor is record
-       Container : Tree_Access;
-       Node      : Count_Type'Base := No_Node;
-    end record;
- 
-    procedure  Read
-      (Stream   : not null access Root_Stream_Type'Class;
-       Position : out Cursor);
-    for Cursor'Read use Read;
- 
-    procedure Write
-      (Stream   : not null access Root_Stream_Type'Class;
-       Position : Cursor);
-    for Cursor'Write use Write;
- 
-    subtype Reference_Control_Type is Implementation.Reference_Control_Type;
-    --  It is necessary to rename this here, so that the compiler can find it
- 
-    type Constant_Reference_Type
-      (Element : not null access constant Element_Type) is
-       record
-          Control : Reference_Control_Type :=
-            raise Program_Error with "uninitialized reference";
-          --  The RM says, "The default initialization of an object of
-          --  type Constant_Reference_Type or Reference_Type propagates
-          --  Program_Error."
-       end record;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Constant_Reference_Type);
-    for Constant_Reference_Type'Write use Write;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Constant_Reference_Type);
-    for Constant_Reference_Type'Read use Read;
- 
-    type Reference_Type
-      (Element : not null access Element_Type) is
-       record
-          Control : Reference_Control_Type :=
-            raise Program_Error with "uninitialized reference";
-          --  The RM says, "The default initialization of an object of
-          --  type Constant_Reference_Type or Reference_Type propagates
-          --  Program_Error."
-       end record;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Reference_Type);
-    for Reference_Type'Write use Write;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       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;
-    pragma Inline (Pseudo_Reference);
-    --  Creates an object of type Reference_Control_Type pointing to the
-    --  container, and increments the Lock. Finalization of this object will
-    --  decrement the Lock.
- 
-    type Element_Access is access all Element_Type with
-      Storage_Size => 0;
- 
-    function Get_Element_Access
-      (Position : Cursor) return not null Element_Access;
-    --  Returns a pointer to the element designated by Position.
- 
-    Empty_Tree : constant Tree := (Capacity => 0, others => <>);
- 
-    No_Element : constant Cursor := Cursor'(others => <>);
- 
- end Ada.Containers.Bounded_Multiway_Trees;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cborma.adb gcc-8.1.0/gcc/ada/a-cborma.adb
*** gcc-7.3.0/gcc/ada/a-cborma.adb	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-cborma.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,1637 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --   A D A . C O N T A I N E R S . B O U N D E D _ O R D E R E D _ M A P S  --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 Ada.Containers.Helpers; use Ada.Containers.Helpers;
- 
- 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.Bounded_Ordered_Maps is
- 
-    pragma Warnings (Off, "variable ""Busy*"" is not referenced");
-    pragma Warnings (Off, "variable ""Lock*"" is not referenced");
-    --  See comment in Ada.Containers.Helpers
- 
-    -----------------------------
-    -- 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 Color_Type;
-    pragma Inline (Color);
- 
-    function Left (Node : Node_Type) return Count_Type;
-    pragma Inline (Left);
- 
-    function Parent (Node : Node_Type) return Count_Type;
-    pragma Inline (Parent);
- 
-    function Right (Node : Node_Type) return Count_Type;
-    pragma Inline (Right);
- 
-    procedure Set_Parent (Node : in out Node_Type; Parent : Count_Type);
-    pragma Inline (Set_Parent);
- 
-    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_Color (Node : in out Node_Type; Color : Color_Type);
-    pragma Inline (Set_Color);
- 
-    -----------------------
-    -- 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 Tree_Operations is
-       new Red_Black_Trees.Generic_Bounded_Operations (Tree_Types);
- 
-    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 : Cursor) return Boolean is
-    begin
-       if Checks and then Left.Node = 0 then
-          raise Constraint_Error with "Left cursor of ""<"" equals No_Element";
-       end if;
- 
-       if Checks and then Right.Node = 0 then
-          raise Constraint_Error with "Right cursor of ""<"" equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Left.Container.all, Left.Node),
-                      "Left cursor of ""<"" is bad");
- 
-       pragma Assert (Vet (Right.Container.all, Right.Node),
-                      "Right cursor of ""<"" is bad");
- 
-       declare
-          LN : Node_Type renames Left.Container.Nodes (Left.Node);
-          RN : Node_Type renames Right.Container.Nodes (Right.Node);
- 
-       begin
-          return LN.Key < RN.Key;
-       end;
-    end "<";
- 
-    function "<" (Left : Cursor; Right : Key_Type) return Boolean is
-    begin
-       if Checks and then Left.Node = 0 then
-          raise Constraint_Error with "Left cursor of ""<"" equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Left.Container.all, Left.Node),
-                      "Left cursor of ""<"" is bad");
- 
-       declare
-          LN : Node_Type renames Left.Container.Nodes (Left.Node);
- 
-       begin
-          return LN.Key < Right;
-       end;
-    end "<";
- 
-    function "<" (Left : Key_Type; Right : Cursor) return Boolean is
-    begin
-       if Checks and then Right.Node = 0 then
-          raise Constraint_Error with "Right cursor of ""<"" equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Right.Container.all, Right.Node),
-                      "Right cursor of ""<"" is bad");
- 
-       declare
-          RN : Node_Type renames Right.Container.Nodes (Right.Node);
- 
-       begin
-          return Left < RN.Key;
-       end;
-    end "<";
- 
-    ---------
-    -- "=" --
-    ---------
- 
-    function "=" (Left, Right : Map) return Boolean is
-       function Is_Equal_Node_Node (L, R : Node_Type) return Boolean;
-       pragma Inline (Is_Equal_Node_Node);
- 
-       function Is_Equal is
-         new Tree_Operations.Generic_Equal (Is_Equal_Node_Node);
- 
-       ------------------------
-       -- Is_Equal_Node_Node --
-       ------------------------
- 
-       function Is_Equal_Node_Node
-         (L, R : Node_Type) return Boolean is
-       begin
-          if L.Key < R.Key then
-             return False;
- 
-          elsif R.Key < L.Key then
-             return False;
- 
-          else
-             return L.Element = R.Element;
-          end if;
-       end Is_Equal_Node_Node;
- 
-    --  Start of processing for "="
- 
-    begin
-       return Is_Equal (Left, Right);
-    end "=";
- 
-    ---------
-    -- ">" --
-    ---------
- 
-    function ">" (Left, Right : Cursor) return Boolean is
-    begin
-       if Checks and then Left.Node = 0 then
-          raise Constraint_Error with "Left cursor of "">"" equals No_Element";
-       end if;
- 
-       if Checks and then Right.Node = 0 then
-          raise Constraint_Error with "Right cursor of "">"" equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Left.Container.all, Left.Node),
-                      "Left cursor of "">"" is bad");
- 
-       pragma Assert (Vet (Right.Container.all, Right.Node),
-                      "Right cursor of "">"" is bad");
- 
-       declare
-          LN : Node_Type renames Left.Container.Nodes (Left.Node);
-          RN : Node_Type renames Right.Container.Nodes (Right.Node);
- 
-       begin
-          return RN.Key < LN.Key;
-       end;
-    end ">";
- 
-    function ">" (Left : Cursor; Right : Key_Type) return Boolean is
-    begin
-       if Checks and then Left.Node = 0 then
-          raise Constraint_Error with "Left cursor of "">"" equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Left.Container.all, Left.Node),
-                      "Left cursor of "">"" is bad");
- 
-       declare
-          LN : Node_Type renames Left.Container.Nodes (Left.Node);
-       begin
-          return Right < LN.Key;
-       end;
-    end ">";
- 
-    function ">" (Left : Key_Type; Right : Cursor) return Boolean is
-    begin
-       if Checks and then Right.Node = 0 then
-          raise Constraint_Error with "Right cursor of "">"" equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Right.Container.all, Right.Node),
-                      "Right cursor of "">"" is bad");
- 
-       declare
-          RN : Node_Type renames Right.Container.Nodes (Right.Node);
- 
-       begin
-          return RN.Key < Left;
-       end;
-    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.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 Tree_Operations.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.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,
-             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 Checks and then Target.Capacity < Source.Length then
-          raise Capacity_Error
-            with "Target capacity is less than Source length";
-       end if;
- 
-       Tree_Operations.Clear_Tree (Target);
-       Append_Elements (Source);
-    end Assign;
- 
-    -------------
-    -- Ceiling --
-    -------------
- 
-    function Ceiling (Container : Map; Key : Key_Type) return Cursor is
-       Node : constant Count_Type := Key_Ops.Ceiling (Container, Key);
- 
-    begin
-       if Node = 0 then
-          return No_Element;
-       end if;
- 
-       return Cursor'(Container'Unrestricted_Access, Node);
-    end Ceiling;
- 
-    -----------
-    -- Clear --
-    -----------
- 
-    procedure Clear (Container : in out Map) is
-    begin
-       Tree_Operations.Clear_Tree (Container);
-    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 Constant_Reference_Type
-    is
-    begin
-       if Checks and then Position.Container = null then
-          raise Constraint_Error with
-            "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor designates wrong map";
-       end if;
- 
-       pragma Assert (Vet (Container, Position.Node),
-                      "Position cursor in Constant_Reference is bad");
- 
-       declare
-          N : Node_Type renames Container.Nodes (Position.Node);
-          TC : constant Tamper_Counts_Access :=
-            Container.TC'Unrestricted_Access;
-       begin
-          return R : constant Constant_Reference_Type :=
-            (Element => N.Element'Access,
-             Control => (Controlled with TC))
-          do
-             Lock (TC.all);
-          end return;
-       end;
-    end Constant_Reference;
- 
-    function Constant_Reference
-      (Container : aliased Map;
-       Key       : Key_Type) return Constant_Reference_Type
-    is
-       Node : constant Count_Type := Key_Ops.Find (Container, Key);
- 
-    begin
-       if Checks and then Node = 0 then
-          raise Constraint_Error with "key not in map";
-       end if;
- 
-       declare
-          N : Node_Type renames Container.Nodes (Node);
-          TC : constant Tamper_Counts_Access :=
-            Container.TC'Unrestricted_Access;
-       begin
-          return R : constant Constant_Reference_Type :=
-            (Element => N.Element'Access,
-             Control => (Controlled with TC))
-          do
-             Lock (TC.all);
-          end return;
-       end;
-    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 : Count_Type;
- 
-    begin
-       if Capacity = 0 then
-          C := Source.Length;
- 
-       elsif Capacity >= Source.Length then
-          C := Capacity;
- 
-       elsif Checks then
-          raise Capacity_Error with "Capacity value too small";
-       end if;
- 
-       return Target : Map (Capacity => C) do
-          Assign (Target => Target, Source => Source);
-       end return;
-    end Copy;
- 
-    ------------
-    -- Delete --
-    ------------
- 
-    procedure Delete (Container : in out Map; Position : in out Cursor) is
-    begin
-       if Checks and then Position.Node = 0 then
-          raise Constraint_Error with
-            "Position cursor of Delete equals No_Element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor of Delete designates wrong map";
-       end if;
- 
-       pragma Assert (Vet (Container, Position.Node),
-                      "Position cursor of Delete is bad");
- 
-       Tree_Operations.Delete_Node_Sans_Free (Container, Position.Node);
-       Tree_Operations.Free (Container, Position.Node);
- 
-       Position := No_Element;
-    end Delete;
- 
-    procedure Delete (Container : in out Map; Key : Key_Type) is
-       X : constant Count_Type := Key_Ops.Find (Container, Key);
- 
-    begin
-       if Checks and then X = 0 then
-          raise Constraint_Error with "key not in map";
-       end if;
- 
-       Tree_Operations.Delete_Node_Sans_Free (Container, X);
-       Tree_Operations.Free (Container, X);
-    end Delete;
- 
-    ------------------
-    -- Delete_First --
-    ------------------
- 
-    procedure Delete_First (Container : in out Map) is
-       X : constant Count_Type := Container.First;
- 
-    begin
-       if X /= 0 then
-          Tree_Operations.Delete_Node_Sans_Free (Container, X);
-          Tree_Operations.Free (Container, X);
-       end if;
-    end Delete_First;
- 
-    -----------------
-    -- Delete_Last --
-    -----------------
- 
-    procedure Delete_Last (Container : in out Map) is
-       X : constant Count_Type := Container.Last;
- 
-    begin
-       if X /= 0 then
-          Tree_Operations.Delete_Node_Sans_Free (Container, X);
-          Tree_Operations.Free (Container, X);
-       end if;
-    end Delete_Last;
- 
-    -------------
-    -- Element --
-    -------------
- 
-    function Element (Position : Cursor) return Element_Type is
-    begin
-       if Checks and then Position.Node = 0 then
-          raise Constraint_Error with
-            "Position cursor of function Element equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Position.Container.all, Position.Node),
-                      "Position cursor of function Element is bad");
- 
-       return Position.Container.Nodes (Position.Node).Element;
-    end Element;
- 
-    function Element (Container : Map; Key : Key_Type) return Element_Type is
-       Node : constant Count_Type := Key_Ops.Find (Container, Key);
-    begin
-       if Checks and then Node = 0 then
-          raise Constraint_Error with "key not in map";
-       end if;
- 
-       return Container.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 Count_Type := Key_Ops.Find (Container, Key);
- 
-    begin
-       if X /= 0 then
-          Tree_Operations.Delete_Node_Sans_Free (Container, X);
-          Tree_Operations.Free (Container, X);
-       end if;
-    end Exclude;
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    procedure Finalize (Object : in out Iterator) is
-    begin
-       if Object.Container /= null then
-          Unbusy (Object.Container.TC);
-       end if;
-    end Finalize;
- 
-    ----------
-    -- Find --
-    ----------
- 
-    function Find (Container : Map; Key : Key_Type) return Cursor is
-       Node : constant Count_Type := Key_Ops.Find (Container, Key);
-    begin
-       if Node = 0 then
-          return No_Element;
-       else
-          return Cursor'(Container'Unrestricted_Access, Node);
-       end if;
-    end Find;
- 
-    -----------
-    -- First --
-    -----------
- 
-    function First (Container : Map) return Cursor is
-    begin
-       if Container.First = 0 then
-          return No_Element;
-       else
-          return Cursor'(Container'Unrestricted_Access, Container.First);
-       end if;
-    end First;
- 
-    function First (Object : Iterator) return Cursor is
-    begin
-       --  The value of the iterator object's Node component influences the
-       --  behavior of the First (and Last) selector function.
- 
-       --  When the Node component is 0, this means the iterator object was
-       --  constructed without a start expression, in which case the (forward)
-       --  iteration starts from the (logical) beginning of the entire sequence
-       --  of items (corresponding to Container.First, for a forward iterator).
- 
-       --  Otherwise, this is iteration over a partial sequence of items. When
-       --  the Node component is positive, the iterator object was constructed
-       --  with a start expression, that specifies the position from which the
-       --  (forward) partial iteration begins.
- 
-       if Object.Node = 0 then
-          return Bounded_Ordered_Maps.First (Object.Container.all);
-       else
-          return Cursor'(Object.Container, Object.Node);
-       end if;
-    end First;
- 
-    -------------------
-    -- First_Element --
-    -------------------
- 
-    function First_Element (Container : Map) return Element_Type is
-    begin
-       if Checks and then Container.First = 0 then
-          raise Constraint_Error with "map is empty";
-       end if;
- 
-       return Container.Nodes (Container.First).Element;
-    end First_Element;
- 
-    ---------------
-    -- First_Key --
-    ---------------
- 
-    function First_Key (Container : Map) return Key_Type is
-    begin
-       if Checks and then Container.First = 0 then
-          raise Constraint_Error with "map is empty";
-       end if;
- 
-       return Container.Nodes (Container.First).Key;
-    end First_Key;
- 
-    -----------
-    -- Floor --
-    -----------
- 
-    function Floor (Container : Map; Key : Key_Type) return Cursor is
-       Node : constant Count_Type := Key_Ops.Floor (Container, Key);
-    begin
-       if Node = 0 then
-          return No_Element;
-       else
-          return Cursor'(Container'Unrestricted_Access, Node);
-       end if;
-    end Floor;
- 
-    ------------------------
-    -- Get_Element_Access --
-    ------------------------
- 
-    function Get_Element_Access
-      (Position : Cursor) return not null Element_Access is
-    begin
-       return Position.Container.Nodes (Position.Node).Element'Access;
-    end Get_Element_Access;
- 
-    -----------------
-    -- Has_Element --
-    -----------------
- 
-    function Has_Element (Position : Cursor) return Boolean is
-    begin
-       return Position /= No_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
-          TE_Check (Container.TC);
- 
-          declare
-             N : Node_Type renames Container.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 (Node : in out Node_Type);
-       pragma Inline (Assign);
- 
-       function New_Node return Count_Type;
-       pragma Inline (New_Node);
- 
-       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);
- 
-       procedure Allocate is
-          new Tree_Operations.Generic_Allocate (Assign);
- 
-       ------------
-       -- Assign --
-       ------------
- 
-       procedure Assign (Node : in out Node_Type) is
-       begin
-          Node.Key := Key;
-          Node.Element := New_Item;
-       end Assign;
- 
-       --------------
-       -- 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
-       Insert_Sans_Hint
-         (Container,
-          Key,
-          Position.Node,
-          Inserted);
- 
-       Position.Container := Container'Unrestricted_Access;
-    end Insert;
- 
-    procedure Insert
-      (Container : in out Map;
-       Key       : Key_Type;
-       New_Item  : Element_Type)
-    is
-       Position : Cursor;
-       pragma Unreferenced (Position);
- 
-       Inserted : Boolean;
- 
-    begin
-       Insert (Container, Key, New_Item, Position, Inserted);
- 
-       if Checks and then not Inserted then
-          raise Constraint_Error with "key already in map";
-       end if;
-    end Insert;
- 
-    procedure Insert
-      (Container : in out Map;
-       Key       : Key_Type;
-       Position  : out Cursor;
-       Inserted  : out Boolean)
-    is
-       procedure Assign (Node : in out Node_Type);
-       pragma Inline (Assign);
- 
-       function New_Node return Count_Type;
-       pragma Inline (New_Node);
- 
-       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);
- 
-       procedure Allocate is
-          new Tree_Operations.Generic_Allocate (Assign);
- 
-       ------------
-       -- Assign --
-       ------------
- 
-       procedure Assign (Node : in out Node_Type) is
-          New_Item : Element_Type;
-          pragma Unmodified (New_Item);
-          --  Default-initialized element (ok to reference, see below)
- 
-       begin
-          Node.Key := Key;
- 
-       --  There is no explicit element provided, but in an instance the element
-       --  type may be a scalar with a Default_Value aspect, or a composite type
-       --  with such a scalar component or with defaulted components, so insert
-       --  possibly initialized elements at the given position.
- 
-          Node.Element := New_Item;
-       end Assign;
- 
-       --------------
-       -- 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
-       Insert_Sans_Hint
-         (Container,
-          Key,
-          Position.Node,
-          Inserted);
- 
-       Position.Container := Container'Unrestricted_Access;
-    end Insert;
- 
-    --------------
-    -- Is_Empty --
-    --------------
- 
-    function Is_Empty (Container : Map) return Boolean is
-    begin
-       return Container.Length = 0;
-    end Is_Empty;
- 
-    -------------------------
-    -- Is_Greater_Key_Node --
-    -------------------------
- 
-    function Is_Greater_Key_Node
-      (Left  : Key_Type;
-       Right : Node_Type) return Boolean
-    is
-    begin
-       --  Left > Right same as Right < Left
- 
-       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;
- 
-    -------------
-    -- Iterate --
-    -------------
- 
-    procedure Iterate
-      (Container : Map;
-       Process   : not null access procedure (Position : Cursor))
-    is
-       procedure Process_Node (Node : Count_Type);
-       pragma Inline (Process_Node);
- 
-       procedure Local_Iterate is
-          new Tree_Operations.Generic_Iteration (Process_Node);
- 
-       ------------------
-       -- Process_Node --
-       ------------------
- 
-       procedure Process_Node (Node : Count_Type) is
-       begin
-          Process (Cursor'(Container'Unrestricted_Access, Node));
-       end Process_Node;
- 
-       Busy : With_Busy (Container.TC'Unrestricted_Access);
- 
-    --  Start of processing for Iterate
- 
-    begin
-       Local_Iterate (Container);
-    end Iterate;
- 
-    function Iterate
-      (Container : Map) return Map_Iterator_Interfaces.Reversible_Iterator'Class
-    is
-    begin
-       --  The value of the Node component influences the behavior of the First
-       --  and Last selector functions of the iterator object. When the Node
-       --  component is 0 (as is the case here), this means the iterator object
-       --  was constructed without a start expression. This is a complete
-       --  iterator, meaning that the iteration starts from the (logical)
-       --  beginning of the sequence of items.
- 
-       --  Note: For a forward iterator, Container.First is the beginning, and
-       --  for a reverse iterator, Container.Last is the beginning.
- 
-       return It : constant Iterator :=
-         (Limited_Controlled with
-            Container => Container'Unrestricted_Access,
-            Node      => 0)
-       do
-          Busy (Container.TC'Unrestricted_Access.all);
-       end return;
-    end Iterate;
- 
-    function Iterate
-      (Container : Map;
-       Start     : Cursor)
-       return Map_Iterator_Interfaces.Reversible_Iterator'Class
-    is
-    begin
-       --  Iterator was defined to behave the same as for a complete iterator,
-       --  and iterate over the entire sequence of items. However, those
-       --  semantics were unintuitive and arguably error-prone (it is too easy
-       --  to accidentally create an endless loop), and so they were changed,
-       --  per the ARG meeting in Denver on 2011/11. However, there was no
-       --  consensus about what positive meaning this corner case should have,
-       --  and so it was decided to simply raise an exception. This does imply,
-       --  however, that it is not possible to use a partial iterator to specify
-       --  an empty sequence of items.
- 
-       if Checks and then Start = No_Element then
-          raise Constraint_Error with
-            "Start position for iterator equals No_Element";
-       end if;
- 
-       if Checks and then Start.Container /= Container'Unrestricted_Access then
-          raise Program_Error with
-            "Start cursor of Iterate designates wrong map";
-       end if;
- 
-       pragma Assert (Vet (Container, Start.Node),
-                      "Start cursor of Iterate is bad");
- 
-       --  The value of the Node component influences the behavior of the First
-       --  and Last selector functions of the iterator object. When the Node
-       --  component is positive (as is the case here), it means that this
-       --  is a partial iteration, over a subset of the complete sequence of
-       --  items. The iterator object was constructed with a start expression,
-       --  indicating the position from which the iteration begins. (Note that
-       --  the start position has the same value irrespective of whether this
-       --  is a forward or reverse iteration.)
- 
-       return It : constant Iterator :=
-         (Limited_Controlled with
-            Container => Container'Unrestricted_Access,
-            Node      => Start.Node)
-       do
-          Busy (Container.TC'Unrestricted_Access.all);
-       end return;
-    end Iterate;
- 
-    ---------
-    -- Key --
-    ---------
- 
-    function Key (Position : Cursor) return Key_Type is
-    begin
-       if Checks and then Position.Node = 0 then
-          raise Constraint_Error with
-            "Position cursor of function Key equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Position.Container.all, Position.Node),
-                      "Position cursor of function Key is bad");
- 
-       return Position.Container.Nodes (Position.Node).Key;
-    end Key;
- 
-    ----------
-    -- Last --
-    ----------
- 
-    function Last (Container : Map) return Cursor is
-    begin
-       if Container.Last = 0 then
-          return No_Element;
-       else
-          return Cursor'(Container'Unrestricted_Access, Container.Last);
-       end if;
-    end Last;
- 
-    function Last (Object : Iterator) return Cursor is
-    begin
-       --  The value of the iterator object's Node component influences the
-       --  behavior of the Last (and First) selector function.
- 
-       --  When the Node component is 0, this means the iterator object was
-       --  constructed without a start expression, in which case the (reverse)
-       --  iteration starts from the (logical) beginning of the entire sequence
-       --  (corresponding to Container.Last, for a reverse iterator).
- 
-       --  Otherwise, this is iteration over a partial sequence of items. When
-       --  the Node component is positive, the iterator object was constructed
-       --  with a start expression, that specifies the position from which the
-       --  (reverse) partial iteration begins.
- 
-       if Object.Node = 0 then
-          return Bounded_Ordered_Maps.Last (Object.Container.all);
-       else
-          return Cursor'(Object.Container, Object.Node);
-       end if;
-    end Last;
- 
-    ------------------
-    -- Last_Element --
-    ------------------
- 
-    function Last_Element (Container : Map) return Element_Type is
-    begin
-       if Checks and then Container.Last = 0 then
-          raise Constraint_Error with "map is empty";
-       end if;
- 
-       return Container.Nodes (Container.Last).Element;
-    end Last_Element;
- 
-    --------------
-    -- Last_Key --
-    --------------
- 
-    function Last_Key (Container : Map) return Key_Type is
-    begin
-       if Checks and then Container.Last = 0 then
-          raise Constraint_Error with "map is empty";
-       end if;
- 
-       return Container.Nodes (Container.Last).Key;
-    end Last_Key;
- 
-    ----------
-    -- Left --
-    ----------
- 
-    function Left (Node : Node_Type) return Count_Type is
-    begin
-       return Node.Left;
-    end Left;
- 
-    ------------
-    -- Length --
-    ------------
- 
-    function Length (Container : Map) return Count_Type is
-    begin
-       return Container.Length;
-    end Length;
- 
-    ----------
-    -- Move --
-    ----------
- 
-    procedure Move (Target : in out Map; Source : in out Map) is
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       TC_Check (Source.TC);
- 
-       Target.Assign (Source);
-       Source.Clear;
-    end Move;
- 
-    ----------
-    -- Next --
-    ----------
- 
-    procedure Next (Position : in out Cursor) is
-    begin
-       Position := Next (Position);
-    end Next;
- 
-    function Next (Position : Cursor) return Cursor is
-    begin
-       if Position = No_Element then
-          return No_Element;
-       end if;
- 
-       pragma Assert (Vet (Position.Container.all, Position.Node),
-                      "Position cursor of Next is bad");
- 
-       declare
-          M : Map renames Position.Container.all;
- 
-          Node : constant Count_Type :=
-            Tree_Operations.Next (M, Position.Node);
- 
-       begin
-          if Node = 0 then
-             return No_Element;
-          end if;
- 
-          return Cursor'(Position.Container, Node);
-       end;
-    end Next;
- 
-    function Next
-      (Object   : Iterator;
-       Position : Cursor) return Cursor
-    is
-    begin
-       if Position.Container = null then
-          return No_Element;
-       end if;
- 
-       if Checks and then Position.Container /= Object.Container then
-          raise Program_Error with
-            "Position cursor of Next designates wrong map";
-       end if;
- 
-       return Next (Position);
-    end Next;
- 
-    ------------
-    -- Parent --
-    ------------
- 
-    function Parent (Node : Node_Type) return Count_Type is
-    begin
-       return Node.Parent;
-    end Parent;
- 
-    --------------
-    -- Previous --
-    --------------
- 
-    procedure Previous (Position : in out Cursor) is
-    begin
-       Position := Previous (Position);
-    end Previous;
- 
-    function Previous (Position : Cursor) return Cursor is
-    begin
-       if Position = No_Element then
-          return No_Element;
-       end if;
- 
-       pragma Assert (Vet (Position.Container.all, Position.Node),
-                      "Position cursor of Previous is bad");
- 
-       declare
-          M : Map renames Position.Container.all;
- 
-          Node : constant Count_Type :=
-            Tree_Operations.Previous (M, Position.Node);
- 
-       begin
-          if Node = 0 then
-             return No_Element;
-          end if;
- 
-          return Cursor'(Position.Container, Node);
-       end;
-    end Previous;
- 
-    function Previous
-      (Object   : Iterator;
-       Position : Cursor) return Cursor
-    is
-    begin
-       if Position.Container = null then
-          return No_Element;
-       end if;
- 
-       if Checks and then Position.Container /= Object.Container then
-          raise Program_Error with
-            "Position cursor of Previous designates wrong map";
-       end if;
- 
-       return Previous (Position);
-    end Previous;
- 
-    ----------------------
-    -- Pseudo_Reference --
-    ----------------------
- 
-    function Pseudo_Reference
-      (Container : aliased Map'Class) return Reference_Control_Type
-    is
-       TC : constant Tamper_Counts_Access :=
-         Container.TC'Unrestricted_Access;
-    begin
-       return R : constant Reference_Control_Type := (Controlled with TC) do
-          Lock (TC.all);
-       end return;
-    end Pseudo_Reference;
- 
-    -------------------
-    -- Query_Element --
-    -------------------
- 
-    procedure Query_Element
-      (Position : Cursor;
-       Process  : not null access procedure (Key     : Key_Type;
-                                             Element : Element_Type))
-    is
-    begin
-       if Checks and then Position.Node = 0 then
-          raise Constraint_Error with
-            "Position cursor of Query_Element equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Position.Container.all, Position.Node),
-                      "Position cursor of Query_Element is bad");
- 
-       declare
-          M : Map renames Position.Container.all;
-          N : Node_Type renames M.Nodes (Position.Node);
-          Lock : With_Lock (M.TC'Unrestricted_Access);
-       begin
-          Process (N.Key, N.Element);
-       end;
-    end Query_Element;
- 
-    ----------
-    -- Read --
-    ----------
- 
-    procedure Read
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : out Map)
-    is
-       procedure Read_Element (Node : in out Node_Type);
-       pragma Inline (Read_Element);
- 
-       procedure Allocate is
-          new Tree_Operations.Generic_Allocate (Read_Element);
- 
-       procedure Read_Elements is
-          new Tree_Operations.Generic_Read (Allocate);
- 
-       ------------------
-       -- Read_Element --
-       ------------------
- 
-       procedure Read_Element (Node : in out Node_Type) is
-       begin
-          Key_Type'Read (Stream, Node.Key);
-          Element_Type'Read (Stream, Node.Element);
-       end Read_Element;
- 
-    --  Start of processing for Read
- 
-    begin
-       Read_Elements (Stream, Container);
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Cursor)
-    is
-    begin
-       raise Program_Error with "attempt to stream map cursor";
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Constant_Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Read;
- 
-    ---------------
-    -- Reference --
-    ---------------
- 
-    function Reference
-      (Container : aliased in out Map;
-       Position  : Cursor) return Reference_Type
-    is
-    begin
-       if Checks and then Position.Container = null then
-          raise Constraint_Error with
-            "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor designates wrong map";
-       end if;
- 
-       pragma Assert (Vet (Container, Position.Node),
-                      "Position cursor in function Reference is bad");
- 
-       declare
-          N : Node_Type renames Container.Nodes (Position.Node);
-          TC : constant Tamper_Counts_Access :=
-            Container.TC'Unrestricted_Access;
-       begin
-          return R : constant Reference_Type :=
-            (Element => N.Element'Access,
-             Control => (Controlled with TC))
-          do
-             Lock (TC.all);
-          end return;
-       end;
-    end Reference;
- 
-    function Reference
-      (Container : aliased in out Map;
-       Key       : Key_Type) return Reference_Type
-    is
-       Node : constant Count_Type := Key_Ops.Find (Container, Key);
- 
-    begin
-       if Checks and then Node = 0 then
-          raise Constraint_Error with "key not in map";
-       end if;
- 
-       declare
-          N : Node_Type renames Container.Nodes (Node);
-          TC : constant Tamper_Counts_Access :=
-            Container.TC'Unrestricted_Access;
-       begin
-          return R : constant Reference_Type :=
-            (Element => N.Element'Access,
-             Control => (Controlled with TC))
-          do
-             Lock (TC.all);
-          end return;
-       end;
-    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, Key);
- 
-    begin
-       if Checks and then Node = 0 then
-          raise Constraint_Error with "key not in map";
-       end if;
- 
-       TE_Check (Container.TC);
- 
-       declare
-          N : Node_Type renames Container.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 Checks and then Position.Node = 0 then
-          raise Constraint_Error with
-            "Position cursor of Replace_Element equals No_Element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor of Replace_Element designates wrong map";
-       end if;
- 
-       TE_Check (Container.TC);
- 
-       pragma Assert (Vet (Container, Position.Node),
-                      "Position cursor of Replace_Element is bad");
- 
-       Container.Nodes (Position.Node).Element := New_Item;
-    end Replace_Element;
- 
-    ---------------------
-    -- Reverse_Iterate --
-    ---------------------
- 
-    procedure Reverse_Iterate
-      (Container : Map;
-       Process   : not null access procedure (Position : Cursor))
-    is
-       procedure Process_Node (Node : Count_Type);
-       pragma Inline (Process_Node);
- 
-       procedure Local_Reverse_Iterate is
-          new Tree_Operations.Generic_Reverse_Iteration (Process_Node);
- 
-       ------------------
-       -- Process_Node --
-       ------------------
- 
-       procedure Process_Node (Node : Count_Type) is
-       begin
-          Process (Cursor'(Container'Unrestricted_Access, Node));
-       end Process_Node;
- 
-       Busy : With_Busy (Container.TC'Unrestricted_Access);
- 
-    --  Start of processing for Reverse_Iterate
- 
-    begin
-       Local_Reverse_Iterate (Container);
-    end Reverse_Iterate;
- 
-    -----------
-    -- Right --
-    -----------
- 
-    function Right (Node : Node_Type) return Count_Type is
-    begin
-       return Node.Right;
-    end Right;
- 
-    ---------------
-    -- 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;
- 
-    --------------------
-    -- Update_Element --
-    --------------------
- 
-    procedure Update_Element
-      (Container : in out Map;
-       Position  : Cursor;
-       Process   : not null access procedure (Key     : Key_Type;
-                                              Element : in out Element_Type))
-    is
-    begin
-       if Checks and then Position.Node = 0 then
-          raise Constraint_Error with
-            "Position cursor of Update_Element equals No_Element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor of Update_Element designates wrong map";
-       end if;
- 
-       pragma Assert (Vet (Container, Position.Node),
-                      "Position cursor of Update_Element is bad");
- 
-       declare
-          N : Node_Type renames Container.Nodes (Position.Node);
-          Lock : With_Lock (Container.TC'Unrestricted_Access);
-       begin
-          Process (N.Key, N.Element);
-       end;
-    end Update_Element;
- 
-    -----------
-    -- Write --
-    -----------
- 
-    procedure Write
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : Map)
-    is
-       procedure Write_Node
-         (Stream : not null access Root_Stream_Type'Class;
-          Node   : Node_Type);
-       pragma Inline (Write_Node);
- 
-       procedure Write_Nodes is
-          new Tree_Operations.Generic_Write (Write_Node);
- 
-       ----------------
-       -- Write_Node --
-       ----------------
- 
-       procedure Write_Node
-         (Stream : not null access Root_Stream_Type'Class;
-          Node   : Node_Type)
-       is
-       begin
-          Key_Type'Write (Stream, Node.Key);
-          Element_Type'Write (Stream, Node.Element);
-       end Write_Node;
- 
-    --  Start of processing for Write
- 
-    begin
-       Write_Nodes (Stream, Container);
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Cursor)
-    is
-    begin
-       raise Program_Error with "attempt to stream map cursor";
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Constant_Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Write;
- 
- end Ada.Containers.Bounded_Ordered_Maps;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cborma.ads gcc-8.1.0/gcc/ada/a-cborma.ads
*** gcc-7.3.0/gcc/ada/a-cborma.ads	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-cborma.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,376 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --   A D A . C O N T A I N E R S . B O U N D E D _ O R D E R E D _ M A P S  --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, 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/>.                                          --
- --                                                                          --
- -- This unit was originally developed by Matthew J Heaney.                  --
- ------------------------------------------------------------------------------
- 
- with Ada.Iterator_Interfaces;
- 
- private with Ada.Containers.Red_Black_Trees;
- private with Ada.Streams;
- private with Ada.Finalization;
- 
- 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.Bounded_Ordered_Maps is
-    pragma Annotate (CodePeer, Skip_Analysis);
-    pragma Pure;
-    pragma Remote_Types;
- 
-    function Equivalent_Keys (Left, Right : Key_Type) return Boolean;
- 
-    type Map (Capacity : Count_Type) is tagged private with
-       Constant_Indexing => Constant_Reference,
-       Variable_Indexing => Reference,
-       Default_Iterator  => Iterate,
-       Iterator_Element  => Element_Type;
- 
-    pragma Preelaborable_Initialization (Map);
- 
-    type Cursor is private;
-    pragma Preelaborable_Initialization (Cursor);
- 
-    Empty_Map : constant Map;
- 
-    No_Element : constant Cursor;
- 
-    function Has_Element (Position : Cursor) return Boolean;
- 
-    package Map_Iterator_Interfaces is new
-      Ada.Iterator_Interfaces (Cursor, Has_Element);
- 
-    function "=" (Left, Right : Map) return Boolean;
- 
-    function Length (Container : Map) return Count_Type;
- 
-    function Is_Empty (Container : Map) return Boolean;
- 
-    procedure Clear (Container : in out Map);
- 
-    function Key (Position : Cursor) return Key_Type;
- 
-    function Element (Position : Cursor) return Element_Type;
- 
-    procedure Replace_Element
-      (Container : in out Map;
-       Position  : Cursor;
-       New_Item  : Element_Type);
- 
-    procedure Query_Element
-      (Position : Cursor;
-       Process  : not null access
-                    procedure (Key : Key_Type; Element : Element_Type));
- 
-    procedure Update_Element
-      (Container : in out Map;
-       Position  : Cursor;
-       Process   : not null access
-                     procedure (Key : Key_Type; Element : in out Element_Type));
- 
-    type Constant_Reference_Type
-       (Element : not null access constant Element_Type) is private
-    with
-       Implicit_Dereference => Element;
- 
-    type Reference_Type (Element : not null access Element_Type) is private
-    with
-       Implicit_Dereference => Element;
- 
-    function Constant_Reference
-      (Container : aliased Map;
-       Position  : Cursor) return Constant_Reference_Type;
- 
-    function Reference
-      (Container : aliased in out Map;
-       Position  : Cursor) return Reference_Type;
- 
-    function Constant_Reference
-      (Container : aliased Map;
-       Key       : Key_Type) return Constant_Reference_Type;
- 
-    function Reference
-      (Container : aliased in out Map;
-       Key       : Key_Type) return Reference_Type;
- 
-    procedure Assign (Target : in out Map; Source : Map);
- 
-    function Copy (Source : Map; Capacity : Count_Type := 0) return Map;
- 
-    procedure Move (Target : in out Map; Source : in out Map);
- 
-    procedure Insert
-      (Container : in out Map;
-       Key       : Key_Type;
-       New_Item  : Element_Type;
-       Position  : out Cursor;
-       Inserted  : out Boolean);
- 
-    procedure Insert
-      (Container : in out Map;
-       Key       : Key_Type;
-       Position  : out Cursor;
-       Inserted  : out Boolean);
- 
-    procedure Insert
-      (Container : in out Map;
-       Key       : Key_Type;
-       New_Item  : Element_Type);
- 
-    procedure Include
-      (Container : in out Map;
-       Key       : Key_Type;
-       New_Item  : Element_Type);
- 
-    procedure Replace
-      (Container : in out Map;
-       Key       : Key_Type;
-       New_Item  : Element_Type);
- 
-    procedure Exclude (Container : in out Map; Key : Key_Type);
- 
-    procedure Delete (Container : in out Map; Key : Key_Type);
- 
-    procedure Delete (Container : in out Map; Position : in out Cursor);
- 
-    procedure Delete_First (Container : in out Map);
- 
-    procedure Delete_Last (Container : in out Map);
- 
-    function First (Container : Map) return Cursor;
- 
-    function First_Element (Container : Map) return Element_Type;
- 
-    function First_Key (Container : Map) return Key_Type;
- 
-    function Last (Container : Map) return Cursor;
- 
-    function Last_Element (Container : Map) return Element_Type;
- 
-    function Last_Key (Container : Map) return Key_Type;
- 
-    function Next (Position : Cursor) return Cursor;
- 
-    procedure Next (Position : in out Cursor);
- 
-    function Previous (Position : Cursor) return Cursor;
- 
-    procedure Previous (Position : in out Cursor);
- 
-    function Find (Container : Map; Key : Key_Type) return Cursor;
- 
-    function Element (Container : Map; Key : Key_Type) return Element_Type;
- 
-    function Floor (Container : Map; Key : Key_Type) return Cursor;
- 
-    function Ceiling (Container : Map; Key : Key_Type) return Cursor;
- 
-    function Contains (Container : Map; Key : Key_Type) return Boolean;
- 
-    function "<" (Left, Right : Cursor) return Boolean;
- 
-    function ">" (Left, Right : Cursor) return Boolean;
- 
-    function "<" (Left : Cursor; Right : Key_Type) return Boolean;
- 
-    function ">" (Left : Cursor; Right : Key_Type) return Boolean;
- 
-    function "<" (Left : Key_Type; Right : Cursor) return Boolean;
- 
-    function ">" (Left : Key_Type; Right : Cursor) return Boolean;
- 
-    procedure Iterate
-      (Container : Map;
-       Process   : not null access procedure (Position : Cursor));
- 
-    procedure Reverse_Iterate
-      (Container : Map;
-       Process   : not null access procedure (Position : Cursor));
- 
-    function Iterate
-      (Container : Map)
-       return Map_Iterator_Interfaces.Reversible_Iterator'Class;
- 
-    function Iterate
-      (Container : Map;
-       Start     : Cursor)
-       return Map_Iterator_Interfaces.Reversible_Iterator'Class;
- 
- private
- 
-    use Ada.Finalization;
-    pragma Inline (Next);
-    pragma Inline (Previous);
- 
-    type Node_Type is record
-       Parent  : Count_Type;
-       Left    : Count_Type;
-       Right   : Count_Type;
-       Color   : Red_Black_Trees.Color_Type := Red_Black_Trees.Red;
-       Key     : Key_Type;
-       Element : aliased Element_Type;
-    end record;
- 
-    package Tree_Types is
-      new Red_Black_Trees.Generic_Bounded_Tree_Types (Node_Type);
- 
-    type Map (Capacity : Count_Type) is
-      new Tree_Types.Tree_Type (Capacity) with null record;
- 
-    use Red_Black_Trees;
-    use Tree_Types, Tree_Types.Implementation;
-    use Ada.Streams;
- 
-    procedure Write
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : Map);
- 
-    for Map'Write use Write;
- 
-    procedure Read
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : out Map);
- 
-    for Map'Read use Read;
- 
-    type Map_Access is access all Map;
-    for Map_Access'Storage_Size use 0;
- 
-    type Cursor is record
-       Container : Map_Access;
-       Node      : Count_Type := 0;
-    end record;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Cursor);
- 
-    for Cursor'Write use Write;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Cursor);
- 
-    for Cursor'Read use Read;
- 
-    subtype Reference_Control_Type is Implementation.Reference_Control_Type;
-    --  It is necessary to rename this here, so that the compiler can find it
- 
-    type Constant_Reference_Type
-      (Element : not null access constant Element_Type) is
-       record
-          Control : Reference_Control_Type :=
-            raise Program_Error with "uninitialized reference";
-          --  The RM says, "The default initialization of an object of
-          --  type Constant_Reference_Type or Reference_Type propagates
-          --  Program_Error."
-       end record;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Constant_Reference_Type);
- 
-    for Constant_Reference_Type'Read use Read;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Constant_Reference_Type);
- 
-    for Constant_Reference_Type'Write use Write;
- 
-    type Reference_Type (Element : not null access Element_Type) is record
-       Control : Reference_Control_Type :=
-         raise Program_Error with "uninitialized reference";
-       --  The RM says, "The default initialization of an object of
-       --  type Constant_Reference_Type or Reference_Type propagates
-       --  Program_Error."
-    end record;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Reference_Type);
- 
-    for Reference_Type'Read use Read;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Reference_Type);
- 
-    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;
-    pragma Inline (Pseudo_Reference);
-    --  Creates an object of type Reference_Control_Type pointing to the
-    --  container, and increments the Lock. Finalization of this object will
-    --  decrement the Lock.
- 
-    type Element_Access is access all Element_Type with
-      Storage_Size => 0;
- 
-    function Get_Element_Access
-      (Position : Cursor) return not null Element_Access;
-    --  Returns a pointer to the element designated by Position.
- 
-    Empty_Map : constant Map := Map'(Tree_Type with Capacity => 0);
- 
-    No_Element : constant Cursor := Cursor'(null, 0);
- 
-    type Iterator is new Limited_Controlled and
-      Map_Iterator_Interfaces.Reversible_Iterator with
-    record
-       Container : Map_Access;
-       Node      : Count_Type;
-    end record
-      with Disable_Controlled => not T_Check;
- 
-    overriding procedure Finalize (Object : in out Iterator);
- 
-    overriding function First (Object : Iterator) return Cursor;
-    overriding function Last  (Object : Iterator) return Cursor;
- 
-    overriding function Next
-      (Object   : Iterator;
-       Position : Cursor) return Cursor;
- 
-    overriding function Previous
-      (Object   : Iterator;
-       Position : Cursor) return Cursor;
- 
- end Ada.Containers.Bounded_Ordered_Maps;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cborse.adb gcc-8.1.0/gcc/ada/a-cborse.adb
*** gcc-7.3.0/gcc/ada/a-cborse.adb	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-cborse.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,2044 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --   A D A . C O N T A I N E R S . B O U N D E D _ O R D E R E D _ S E T S  --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 Ada.Containers.Helpers; use Ada.Containers.Helpers;
- 
- 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.Bounded_Ordered_Sets is
- 
-    pragma Warnings (Off, "variable ""Busy*"" is not referenced");
-    pragma Warnings (Off, "variable ""Lock*"" is not referenced");
-    --  See comment in Ada.Containers.Helpers
- 
-    ------------------------------
-    -- Access to Fields of Node --
-    ------------------------------
- 
-    --  These subprograms provide functional notation for access to fields
-    --  of a node, and procedural notation for modifying these fields.
- 
-    function Color (Node : Node_Type) return Red_Black_Trees.Color_Type;
-    pragma Inline (Color);
- 
-    function Left (Node : Node_Type) return Count_Type;
-    pragma Inline (Left);
- 
-    function Parent (Node : Node_Type) return Count_Type;
-    pragma Inline (Parent);
- 
-    function Right (Node : Node_Type) return Count_Type;
-    pragma Inline (Right);
- 
-    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 --
-    -----------------------
- 
-    procedure Insert_Sans_Hint
-      (Container : in out Set;
-       New_Item  : Element_Type;
-       Node      : out Count_Type;
-       Inserted  : out Boolean);
- 
-    procedure Insert_With_Hint
-      (Dst_Set  : in out Set;
-       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
-      (Container : in out Set;
-       Index     : Count_Type;
-       Item      : Element_Type);
- 
-    --------------------------
-    -- Local Instantiations --
-    --------------------------
- 
-    package Tree_Operations is
-       new Red_Black_Trees.Generic_Bounded_Operations (Tree_Types);
- 
-    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         => Set,
-          Assign           => Assign,
-          Insert_With_Hint => Insert_With_Hint,
-          Is_Less          => Is_Less_Node_Node);
- 
-    ---------
-    -- "<" --
-    ---------
- 
-    function "<" (Left, Right : Cursor) return Boolean is
-    begin
-       if Checks and then Left.Node = 0 then
-          raise Constraint_Error with "Left cursor equals No_Element";
-       end if;
- 
-       if Checks and then Right.Node = 0 then
-          raise Constraint_Error with "Right cursor equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Left.Container.all, Left.Node),
-                      "bad Left cursor in ""<""");
- 
-       pragma Assert (Vet (Right.Container.all, Right.Node),
-                      "bad Right cursor in ""<""");
- 
-       declare
-          LN : Nodes_Type renames Left.Container.Nodes;
-          RN : Nodes_Type renames Right.Container.Nodes;
-       begin
-          return LN (Left.Node).Element < RN (Right.Node).Element;
-       end;
-    end "<";
- 
-    function "<" (Left : Cursor; Right : Element_Type) return Boolean is
-    begin
-       if Checks and then Left.Node = 0 then
-          raise Constraint_Error with "Left cursor equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Left.Container.all, Left.Node),
-                      "bad Left cursor in ""<""");
- 
-       return Left.Container.Nodes (Left.Node).Element < Right;
-    end "<";
- 
-    function "<" (Left : Element_Type; Right : Cursor) return Boolean is
-    begin
-       if Checks and then Right.Node = 0 then
-          raise Constraint_Error with "Right cursor equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Right.Container.all, Right.Node),
-                      "bad Right cursor in ""<""");
- 
-       return Left < Right.Container.Nodes (Right.Node).Element;
-    end "<";
- 
-    ---------
-    -- "=" --
-    ---------
- 
-    function "=" (Left, Right : Set) return Boolean is
-       function Is_Equal_Node_Node (L, R : Node_Type) return Boolean;
-       pragma Inline (Is_Equal_Node_Node);
- 
-       function Is_Equal is
-          new Tree_Operations.Generic_Equal (Is_Equal_Node_Node);
- 
-       ------------------------
-       -- Is_Equal_Node_Node --
-       ------------------------
- 
-       function Is_Equal_Node_Node (L, R : Node_Type) return Boolean is
-       begin
-          return L.Element = R.Element;
-       end Is_Equal_Node_Node;
- 
-    --  Start of processing for Is_Equal
- 
-    begin
-       return Is_Equal (Left, Right);
-    end "=";
- 
-    ---------
-    -- ">" --
-    ---------
- 
-    function ">" (Left, Right : Cursor) return Boolean is
-    begin
-       if Checks and then Left.Node = 0 then
-          raise Constraint_Error with "Left cursor equals No_Element";
-       end if;
- 
-       if Checks and then Right.Node = 0 then
-          raise Constraint_Error with "Right cursor equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Left.Container.all, Left.Node),
-                      "bad Left cursor in "">""");
- 
-       pragma Assert (Vet (Right.Container.all, Right.Node),
-                      "bad Right cursor in "">""");
- 
-       --  L > R same as R < L
- 
-       declare
-          LN : Nodes_Type renames Left.Container.Nodes;
-          RN : Nodes_Type renames Right.Container.Nodes;
-       begin
-          return RN (Right.Node).Element < LN (Left.Node).Element;
-       end;
-    end ">";
- 
-    function ">" (Left : Element_Type; Right : Cursor) return Boolean is
-    begin
-       if Checks and then Right.Node = 0 then
-          raise Constraint_Error with "Right cursor equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Right.Container.all, Right.Node),
-                      "bad Right cursor in "">""");
- 
-       return Right.Container.Nodes (Right.Node).Element < Left;
-    end ">";
- 
-    function ">" (Left : Cursor; Right : Element_Type) return Boolean is
-    begin
-       if Checks and then Left.Node = 0 then
-          raise Constraint_Error with "Left cursor equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Left.Container.all, Left.Node),
-                      "bad Left cursor in "">""");
- 
-       return Right < Left.Container.Nodes (Left.Node).Element;
-    end ">";
- 
-    ------------
-    -- Assign --
-    ------------
- 
-    procedure Assign (Target : in out Set; Source : Set) 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 Tree_Operations.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;
- 
-          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 Checks and then Target.Capacity < Source.Length then
-          raise Capacity_Error
-            with "Target capacity is less than Source length";
-       end if;
- 
-       Target.Clear;
-       Append_Elements (Source);
-    end Assign;
- 
-    -------------
-    -- Ceiling --
-    -------------
- 
-    function Ceiling (Container : Set; Item : Element_Type) return Cursor is
-       Node : constant Count_Type :=
-         Element_Keys.Ceiling (Container, Item);
-    begin
-       return (if Node = 0 then No_Element
-               else Cursor'(Container'Unrestricted_Access, Node));
-    end Ceiling;
- 
-    -----------
-    -- Clear --
-    -----------
- 
-    procedure Clear (Container : in out Set) is
-    begin
-       Tree_Operations.Clear_Tree (Container);
-    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 Constant_Reference_Type
-    is
-    begin
-       if Checks and then Position.Container = null then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor designates wrong container";
-       end if;
- 
-       pragma Assert
-         (Vet (Container, Position.Node),
-          "bad cursor in Constant_Reference");
- 
-       declare
-          N : Node_Type renames Container.Nodes (Position.Node);
-          TC : constant Tamper_Counts_Access :=
-            Container.TC'Unrestricted_Access;
-       begin
-          return R : constant Constant_Reference_Type :=
-            (Element => N.Element'Access,
-             Control => (Controlled with TC))
-          do
-             Lock (TC.all);
-          end return;
-       end;
-    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 : Count_Type;
- 
-    begin
-       if Capacity = 0 then
-          C := Source.Length;
-       elsif Capacity >= Source.Length then
-          C := Capacity;
-       elsif Checks then
-          raise Capacity_Error with "Capacity value too small";
-       end if;
- 
-       return Target : Set (Capacity => C) do
-          Assign (Target => Target, Source => Source);
-       end return;
-    end Copy;
- 
-    ------------
-    -- Delete --
-    ------------
- 
-    procedure Delete (Container : in out Set; Position : in out Cursor) is
-    begin
-       if Checks and then Position.Node = 0 then
-          raise Constraint_Error with "Position cursor equals No_Element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with "Position cursor designates wrong set";
-       end if;
- 
-       TC_Check (Container.TC);
- 
-       pragma Assert (Vet (Container, Position.Node),
-                      "bad cursor in Delete");
- 
-       Tree_Operations.Delete_Node_Sans_Free (Container, Position.Node);
-       Tree_Operations.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, Item);
- 
-    begin
-       Tree_Operations.Delete_Node_Sans_Free (Container, X);
- 
-       if Checks and then X = 0 then
-          raise Constraint_Error with "attempt to delete element not in set";
-       end if;
- 
-       Tree_Operations.Free (Container, X);
-    end Delete;
- 
-    ------------------
-    -- Delete_First --
-    ------------------
- 
-    procedure Delete_First (Container : in out Set) is
-       X : constant Count_Type := Container.First;
-    begin
-       if X /= 0 then
-          Tree_Operations.Delete_Node_Sans_Free (Container, X);
-          Tree_Operations.Free (Container, X);
-       end if;
-    end Delete_First;
- 
-    -----------------
-    -- Delete_Last --
-    -----------------
- 
-    procedure Delete_Last (Container : in out Set) is
-       X : constant Count_Type := Container.Last;
-    begin
-       if X /= 0 then
-          Tree_Operations.Delete_Node_Sans_Free (Container, X);
-          Tree_Operations.Free (Container, X);
-       end if;
-    end Delete_Last;
- 
-    ----------------
-    -- Difference --
-    ----------------
- 
-    procedure Difference (Target : in out Set; Source : Set)
-       renames Set_Ops.Set_Difference;
- 
-    function Difference (Left, Right : Set) return Set
-       renames Set_Ops.Set_Difference;
- 
-    -------------
-    -- Element --
-    -------------
- 
-    function Element (Position : Cursor) return Element_Type is
-    begin
-       if Checks and then Position.Node = 0 then
-          raise Constraint_Error with "Position cursor equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Position.Container.all, Position.Node),
-                      "bad cursor in Element");
- 
-       return Position.Container.Nodes (Position.Node).Element;
-    end Element;
- 
-    -------------------------
-    -- Equivalent_Elements --
-    -------------------------
- 
-    function Equivalent_Elements (Left, Right : Element_Type) return Boolean is
-    begin
-       return (if Left < Right or else Right < Left then False else True);
-    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
-          return (if L.Element < R.Element then False
-                  elsif R.Element < L.Element then False
-                  else True);
-       end Is_Equivalent_Node_Node;
- 
-    --  Start of processing for Equivalent_Sets
- 
-    begin
-       return Is_Equivalent (Left, Right);
-    end Equivalent_Sets;
- 
-    -------------
-    -- Exclude --
-    -------------
- 
-    procedure Exclude (Container : in out Set; Item : Element_Type) is
-       X : constant Count_Type := Element_Keys.Find (Container, Item);
-    begin
-       if X /= 0 then
-          Tree_Operations.Delete_Node_Sans_Free (Container, X);
-          Tree_Operations.Free (Container, X);
-       end if;
-    end Exclude;
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    procedure Finalize (Object : in out Iterator) is
-    begin
-       if Object.Container /= null then
-          Unbusy (Object.Container.TC);
-       end if;
-    end Finalize;
- 
-    ----------
-    -- Find --
-    ----------
- 
-    function Find (Container : Set; Item : Element_Type) return Cursor is
-       Node : constant Count_Type := Element_Keys.Find (Container, Item);
-    begin
-       return (if Node = 0 then No_Element
-               else Cursor'(Container'Unrestricted_Access, Node));
-    end Find;
- 
-    -----------
-    -- First --
-    -----------
- 
-    function First (Container : Set) return Cursor is
-    begin
-       return (if Container.First = 0 then No_Element
-               else Cursor'(Container'Unrestricted_Access, Container.First));
-    end First;
- 
-    function First (Object : Iterator) return Cursor is
-    begin
-       --  The value of the iterator object's Node component influences the
-       --  behavior of the First (and Last) selector function.
- 
-       --  When the Node component is 0, this means the iterator object was
-       --  constructed without a start expression, in which case the (forward)
-       --  iteration starts from the (logical) beginning of the entire sequence
-       --  of items (corresponding to Container.First, for a forward iterator).
- 
-       --  Otherwise, this is iteration over a partial sequence of items. When
-       --  the Node component is positive, the iterator object was constructed
-       --  with a start expression, that specifies the position from which the
-       --  (forward) partial iteration begins.
- 
-       if Object.Node = 0 then
-          return Bounded_Ordered_Sets.First (Object.Container.all);
-       else
-          return Cursor'(Object.Container, Object.Node);
-       end if;
-    end First;
- 
-    -------------------
-    -- First_Element --
-    -------------------
- 
-    function First_Element (Container : Set) return Element_Type is
-    begin
-       if Checks and then Container.First = 0 then
-          raise Constraint_Error with "set is empty";
-       end if;
- 
-       return Container.Nodes (Container.First).Element;
-    end First_Element;
- 
-    -----------
-    -- Floor --
-    -----------
- 
-    function Floor (Container : Set; Item : Element_Type) return Cursor is
-       Node : constant Count_Type := Element_Keys.Floor (Container, Item);
-    begin
-       return (if Node = 0 then No_Element
-               else Cursor'(Container'Unrestricted_Access, Node));
-    end Floor;
- 
-    ------------------
-    -- Generic_Keys --
-    ------------------
- 
-    package body Generic_Keys 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, Key);
-       begin
-          return (if Node = 0 then No_Element
-                  else Cursor'(Container'Unrestricted_Access, Node));
-       end Ceiling;
- 
-       ------------------------
-       -- Constant_Reference --
-       ------------------------
- 
-       function Constant_Reference
-         (Container : aliased Set;
-          Key       : Key_Type) return Constant_Reference_Type
-       is
-          Node : constant Count_Type := Key_Keys.Find (Container, Key);
- 
-       begin
-          if Checks and then Node = 0 then
-             raise Constraint_Error with "key not in set";
-          end if;
- 
-          declare
-             N : Node_Type renames Container.Nodes (Node);
-             TC : constant Tamper_Counts_Access :=
-               Container.TC'Unrestricted_Access;
-          begin
-             return R : constant Constant_Reference_Type :=
-               (Element => N.Element'Access,
-                Control => (Controlled with TC))
-             do
-                Lock (TC.all);
-             end return;
-          end;
-       end Constant_Reference;
- 
-       --------------
-       -- 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, Key);
- 
-       begin
-          if Checks and then X = 0 then
-             raise Constraint_Error with "attempt to delete key not in set";
-          end if;
- 
-          Tree_Operations.Delete_Node_Sans_Free (Container, X);
-          Tree_Operations.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, Key);
- 
-       begin
-          if Checks and then Node = 0 then
-             raise Constraint_Error with "key not in set";
-          end if;
- 
-          return Container.Nodes (Node).Element;
-       end Element;
- 
-       ---------------------
-       -- Equivalent_Keys --
-       ---------------------
- 
-       function Equivalent_Keys (Left, Right : Key_Type) return Boolean is
-       begin
-          return (if Left < Right or else Right < Left then False else True);
-       end Equivalent_Keys;
- 
-       -------------
-       -- Exclude --
-       -------------
- 
-       procedure Exclude (Container : in out Set; Key : Key_Type) is
-          X : constant Count_Type := Key_Keys.Find (Container, Key);
-       begin
-          if X /= 0 then
-             Tree_Operations.Delete_Node_Sans_Free (Container, X);
-             Tree_Operations.Free (Container, X);
-          end if;
-       end Exclude;
- 
-       --------------
-       -- Finalize --
-       --------------
- 
-       procedure Finalize (Control : in out Reference_Control_Type) is
-       begin
-          if Control.Container /= null then
-             Impl.Reference_Control_Type (Control).Finalize;
- 
-             if Checks and then not (Key (Control.Pos) = Control.Old_Key.all)
-             then
-                Delete (Control.Container.all, Key (Control.Pos));
-                raise Program_Error;
-             end if;
- 
-             Control.Container := null;
-          end if;
-       end Finalize;
- 
-       ----------
-       -- Find --
-       ----------
- 
-       function Find (Container : Set; Key : Key_Type) return Cursor is
-          Node : constant Count_Type := Key_Keys.Find (Container, Key);
-       begin
-          return (if Node = 0 then No_Element
-                  else Cursor'(Container'Unrestricted_Access, Node));
-       end Find;
- 
-       -----------
-       -- Floor --
-       -----------
- 
-       function Floor (Container : Set; Key : Key_Type) return Cursor is
-          Node : constant Count_Type := Key_Keys.Floor (Container, Key);
-       begin
-          return (if Node = 0 then No_Element
-                  else Cursor'(Container'Unrestricted_Access, Node));
-       end Floor;
- 
-       -------------------------
-       -- 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 (Position : Cursor) return Key_Type is
-       begin
-          if Checks and then Position.Node = 0 then
-             raise Constraint_Error with
-               "Position cursor equals No_Element";
-          end if;
- 
-          pragma Assert (Vet (Position.Container.all, Position.Node),
-                         "bad cursor in Key");
- 
-          return Key (Position.Container.Nodes (Position.Node).Element);
-       end Key;
- 
-       ----------
-       -- Read --
-       ----------
- 
-       procedure  Read
-         (Stream : not null access Root_Stream_Type'Class;
-          Item   : out Reference_Type)
-       is
-       begin
-          raise Program_Error with "attempt to stream reference";
-       end Read;
- 
-       ------------------------------
-       -- Reference_Preserving_Key --
-       ------------------------------
- 
-       function Reference_Preserving_Key
-         (Container : aliased in out Set;
-          Position  : Cursor) return Reference_Type
-       is
-       begin
-          if Checks and then Position.Container = null then
-             raise Constraint_Error with "Position cursor has no element";
-          end if;
- 
-          if Checks and then Position.Container /= Container'Unrestricted_Access
-          then
-             raise Program_Error with
-               "Position cursor designates wrong container";
-          end if;
- 
-          pragma Assert
-            (Vet (Container, Position.Node),
-             "bad cursor in function Reference_Preserving_Key");
- 
-          declare
-             N : Node_Type renames Container.Nodes (Position.Node);
-          begin
-             return R : constant Reference_Type :=
-                          (Element => N.Element'Access,
-                           Control =>
-                             (Controlled with
-                               Container.TC'Unrestricted_Access,
-                               Container => Container'Access,
-                               Pos       => Position,
-                               Old_Key   => new Key_Type'(Key (Position))))
-             do
-                Lock (Container.TC);
-             end return;
-          end;
-       end Reference_Preserving_Key;
- 
-       function Reference_Preserving_Key
-         (Container : aliased in out Set;
-          Key       : Key_Type) return Reference_Type
-       is
-          Node : constant Count_Type := Key_Keys.Find (Container, Key);
- 
-       begin
-          if Checks and then Node = 0 then
-             raise Constraint_Error with "key not in set";
-          end if;
- 
-          declare
-             N : Node_Type renames Container.Nodes (Node);
-          begin
-             return R : constant Reference_Type :=
-                          (Element => N.Element'Access,
-                           Control =>
-                             (Controlled with
-                               Container.TC'Unrestricted_Access,
-                               Container => Container'Access,
-                                Pos      => Find (Container, Key),
-                                Old_Key  => new Key_Type'(Key)))
-             do
-                Lock (Container.TC);
-             end return;
-          end;
-       end Reference_Preserving_Key;
- 
-       -------------
-       -- Replace --
-       -------------
- 
-       procedure Replace
-         (Container : in out Set;
-          Key       : Key_Type;
-          New_Item  : Element_Type)
-       is
-          Node : constant Count_Type := Key_Keys.Find (Container, Key);
- 
-       begin
-          if Checks and then Node = 0 then
-             raise Constraint_Error with
-               "attempt to replace key not in set";
-          end if;
- 
-          Replace_Element (Container, Node, New_Item);
-       end Replace;
- 
-       -----------------------------------
-       -- Update_Element_Preserving_Key --
-       -----------------------------------
- 
-       procedure Update_Element_Preserving_Key
-         (Container : in out Set;
-          Position  : Cursor;
-          Process   : not null access procedure (Element : in out Element_Type))
-       is
-       begin
-          if Checks and then Position.Node = 0 then
-             raise Constraint_Error with
-               "Position cursor equals No_Element";
-          end if;
- 
-          if Checks and then Position.Container /= Container'Unrestricted_Access
-          then
-             raise Program_Error with
-               "Position cursor designates wrong set";
-          end if;
- 
-          pragma Assert (Vet (Container, Position.Node),
-                         "bad cursor in Update_Element_Preserving_Key");
- 
-          --  Per AI05-0022, the container implementation is required to detect
-          --  element tampering by a generic actual subprogram.
- 
-          declare
-             N : Node_Type renames Container.Nodes (Position.Node);
-             E : Element_Type renames N.Element;
-             K : constant Key_Type := Key (E);
-             Lock : With_Lock (Container.TC'Unrestricted_Access);
-          begin
-             Process (E);
-             if Equivalent_Keys (K, Key (E)) then
-                return;
-             end if;
-          end;
- 
-          Tree_Operations.Delete_Node_Sans_Free (Container, Position.Node);
-          Tree_Operations.Free (Container, Position.Node);
- 
-          raise Program_Error with "key was modified";
-       end Update_Element_Preserving_Key;
- 
-       -----------
-       -- Write --
-       -----------
- 
-       procedure Write
-         (Stream : not null access Root_Stream_Type'Class;
-          Item   : Reference_Type)
-       is
-       begin
-          raise Program_Error with "attempt to stream reference";
-       end Write;
-    end Generic_Keys;
- 
-    ------------------------
-    -- Get_Element_Access --
-    ------------------------
- 
-    function Get_Element_Access
-      (Position : Cursor) return not null Element_Access is
-    begin
-       return Position.Container.Nodes (Position.Node).Element'Access;
-    end Get_Element_Access;
- 
-    -----------------
-    -- Has_Element --
-    -----------------
- 
-    function Has_Element (Position : Cursor) return Boolean is
-    begin
-       return Position /= No_Element;
-    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
-          TE_Check (Container.TC);
- 
-          Container.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_Sans_Hint
-         (Container,
-          New_Item,
-          Position.Node,
-          Inserted);
- 
-       Position.Container := Container'Unrestricted_Access;
-    end Insert;
- 
-    procedure Insert
-      (Container : in out Set;
-       New_Item  : Element_Type)
-    is
-       Position : Cursor;
-       pragma Unreferenced (Position);
- 
-       Inserted : Boolean;
- 
-    begin
-       Insert (Container, New_Item, Position, Inserted);
- 
-       if Checks and then 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 Set;
-       New_Item  : Element_Type;
-       Node      : out Count_Type;
-       Inserted  : out Boolean)
-    is
-       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 Conditional_Insert_Sans_Hint is
-         new Element_Keys.Generic_Conditional_Insert (Insert_Post);
- 
-       procedure Allocate is
-          new Tree_Operations.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
-       TC_Check (Container.TC);
- 
-       Conditional_Insert_Sans_Hint
-         (Container,
-          New_Item,
-          Node,
-          Inserted);
-    end Insert_Sans_Hint;
- 
-    ----------------------
-    -- Insert_With_Hint --
-    ----------------------
- 
-    procedure Insert_With_Hint
-      (Dst_Set  : in out Set;
-       Dst_Hint : Count_Type;
-       Src_Node : Node_Type;
-       Dst_Node : out Count_Type)
-    is
-       Success : Boolean;
-       pragma Unreferenced (Success);
- 
-       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 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 Tree_Operations.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)
-       renames Set_Ops.Set_Intersection;
- 
-    function Intersection (Left, Right : Set) return Set
-       renames Set_Ops.Set_Intersection;
- 
-    --------------
-    -- Is_Empty --
-    --------------
- 
-    function Is_Empty (Container : Set) return Boolean is
-    begin
-       return Container.Length = 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
-       renames Set_Ops.Set_Subset;
- 
-    -------------
-    -- Iterate --
-    -------------
- 
-    procedure Iterate
-      (Container : Set;
-       Process   : not null access procedure (Position : Cursor))
-    is
-       procedure Process_Node (Node : Count_Type);
-       pragma Inline (Process_Node);
- 
-       procedure Local_Iterate is
-         new Tree_Operations.Generic_Iteration (Process_Node);
- 
-       ------------------
-       -- Process_Node --
-       ------------------
- 
-       procedure Process_Node (Node : Count_Type) is
-       begin
-          Process (Cursor'(Container'Unrestricted_Access, Node));
-       end Process_Node;
- 
-       S : Set renames Container'Unrestricted_Access.all;
-       Busy : With_Busy (S.TC'Unrestricted_Access);
- 
-    --  Start of processing for Iterate
- 
-    begin
-       Local_Iterate (S);
-    end Iterate;
- 
-    function Iterate (Container : Set)
-      return Set_Iterator_Interfaces.Reversible_Iterator'class
-    is
-    begin
-       --  The value of the Node component influences the behavior of the First
-       --  and Last selector functions of the iterator object. When the Node
-       --  component is 0 (as is the case here), this means the iterator object
-       --  was constructed without a start expression. This is a complete
-       --  iterator, meaning that the iteration starts from the (logical)
-       --  beginning of the sequence of items.
- 
-       --  Note: For a forward iterator, Container.First is the beginning, and
-       --  for a reverse iterator, Container.Last is the beginning.
- 
-       return It : constant Iterator :=
-         Iterator'(Limited_Controlled with
-                     Container => Container'Unrestricted_Access,
-                     Node      => 0)
-       do
-          Busy (Container.TC'Unrestricted_Access.all);
-       end return;
-    end Iterate;
- 
-    function Iterate (Container : Set; Start : Cursor)
-      return Set_Iterator_Interfaces.Reversible_Iterator'class
-    is
-    begin
-       --  It was formerly the case that when Start = No_Element, the partial
-       --  iterator was defined to behave the same as for a complete iterator,
-       --  and iterate over the entire sequence of items. However, those
-       --  semantics were unintuitive and arguably error-prone (it is too easy
-       --  to accidentally create an endless loop), and so they were changed,
-       --  per the ARG meeting in Denver on 2011/11. However, there was no
-       --  consensus about what positive meaning this corner case should have,
-       --  and so it was decided to simply raise an exception. This does imply,
-       --  however, that it is not possible to use a partial iterator to specify
-       --  an empty sequence of items.
- 
-       if Checks and then Start = No_Element then
-          raise Constraint_Error with
-            "Start position for iterator equals No_Element";
-       end if;
- 
-       if Checks and then Start.Container /= Container'Unrestricted_Access then
-          raise Program_Error with
-            "Start cursor of Iterate designates wrong set";
-       end if;
- 
-       pragma Assert (Vet (Container, Start.Node),
-                      "Start cursor of Iterate is bad");
- 
-       --  The value of the Node component influences the behavior of the First
-       --  and Last selector functions of the iterator object. When the Node
-       --  component is positive (as is the case here), it means that this
-       --  is a partial iteration, over a subset of the complete sequence of
-       --  items. The iterator object was constructed with a start expression,
-       --  indicating the position from which the iteration begins. (Note that
-       --  the start position has the same value irrespective of whether this
-       --  is a forward or reverse iteration.)
- 
-       return It : constant Iterator :=
-         Iterator'(Limited_Controlled with
-                     Container => Container'Unrestricted_Access,
-                     Node      => Start.Node)
-       do
-          Busy (Container.TC'Unrestricted_Access.all);
-       end return;
-    end Iterate;
- 
-    ----------
-    -- Last --
-    ----------
- 
-    function Last (Container : Set) return Cursor is
-    begin
-       return (if Container.Last = 0 then No_Element
-               else Cursor'(Container'Unrestricted_Access, Container.Last));
-    end Last;
- 
-    function Last (Object : Iterator) return Cursor is
-    begin
-       --  The value of the iterator object's Node component influences the
-       --  behavior of the Last (and First) selector function.
- 
-       --  When the Node component is 0, this means the iterator object was
-       --  constructed without a start expression, in which case the (reverse)
-       --  iteration starts from the (logical) beginning of the entire sequence
-       --  (corresponding to Container.Last, for a reverse iterator).
- 
-       --  Otherwise, this is iteration over a partial sequence of items. When
-       --  the Node component is positive, the iterator object was constructed
-       --  with a start expression, that specifies the position from which the
-       --  (reverse) partial iteration begins.
- 
-       if Object.Node = 0 then
-          return Bounded_Ordered_Sets.Last (Object.Container.all);
-       else
-          return Cursor'(Object.Container, Object.Node);
-       end if;
-    end Last;
- 
-    ------------------
-    -- Last_Element --
-    ------------------
- 
-    function Last_Element (Container : Set) return Element_Type is
-    begin
-       if Checks and then Container.Last = 0 then
-          raise Constraint_Error with "set is empty";
-       end if;
- 
-       return Container.Nodes (Container.Last).Element;
-    end Last_Element;
- 
-    ----------
-    -- Left --
-    ----------
- 
-    function Left (Node : Node_Type) return Count_Type is
-    begin
-       return Node.Left;
-    end Left;
- 
-    ------------
-    -- Length --
-    ------------
- 
-    function Length (Container : Set) return Count_Type is
-    begin
-       return Container.Length;
-    end Length;
- 
-    ----------
-    -- Move --
-    ----------
- 
-    procedure Move (Target : in out Set; Source : in out Set) is
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       TC_Check (Source.TC);
- 
-       Target.Assign (Source);
-       Source.Clear;
-    end Move;
- 
-    ----------
-    -- Next --
-    ----------
- 
-    function Next (Position : Cursor) return Cursor is
-    begin
-       if Position = No_Element then
-          return No_Element;
-       end if;
- 
-       pragma Assert (Vet (Position.Container.all, Position.Node),
-                      "bad cursor in Next");
- 
-       declare
-          Node : constant Count_Type :=
-            Tree_Operations.Next (Position.Container.all, Position.Node);
- 
-       begin
-          if Node = 0 then
-             return No_Element;
-          end if;
- 
-          return Cursor'(Position.Container, Node);
-       end;
-    end Next;
- 
-    procedure Next (Position : in out Cursor) is
-    begin
-       Position := Next (Position);
-    end Next;
- 
-    function Next (Object : Iterator; Position : Cursor) return Cursor is
-    begin
-       if Position.Container = null then
-          return No_Element;
-       end if;
- 
-       if Checks and then Position.Container /= Object.Container then
-          raise Program_Error with
-            "Position cursor of Next designates wrong set";
-       end if;
- 
-       return Next (Position);
-    end Next;
- 
-    -------------
-    -- Overlap --
-    -------------
- 
-    function Overlap (Left, Right : Set) return Boolean
-       renames Set_Ops.Set_Overlap;
- 
-    ------------
-    -- Parent --
-    ------------
- 
-    function Parent (Node : Node_Type) return Count_Type is
-    begin
-       return Node.Parent;
-    end Parent;
- 
-    --------------
-    -- Previous --
-    --------------
- 
-    function Previous (Position : Cursor) return Cursor is
-    begin
-       if Position = No_Element then
-          return No_Element;
-       end if;
- 
-       pragma Assert (Vet (Position.Container.all, Position.Node),
-                      "bad cursor in Previous");
- 
-       declare
-          Node : constant Count_Type :=
-            Tree_Operations.Previous (Position.Container.all, Position.Node);
-       begin
-          return (if Node = 0 then No_Element
-                  else Cursor'(Position.Container, Node));
-       end;
-    end Previous;
- 
-    procedure Previous (Position : in out Cursor) is
-    begin
-       Position := Previous (Position);
-    end Previous;
- 
-    function Previous (Object : Iterator; Position : Cursor) return Cursor is
-    begin
-       if Position.Container = null then
-          return No_Element;
-       end if;
- 
-       if Checks and then Position.Container /= Object.Container then
-          raise Program_Error with
-            "Position cursor of Previous designates wrong set";
-       end if;
- 
-       return Previous (Position);
-    end Previous;
- 
-    ----------------------
-    -- Pseudo_Reference --
-    ----------------------
- 
-    function Pseudo_Reference
-      (Container : aliased Set'Class) return Reference_Control_Type
-    is
-       TC : constant Tamper_Counts_Access :=
-         Container.TC'Unrestricted_Access;
-    begin
-       return R : constant Reference_Control_Type := (Controlled with TC) do
-          Lock (TC.all);
-       end return;
-    end Pseudo_Reference;
- 
-    -------------------
-    -- Query_Element --
-    -------------------
- 
-    procedure Query_Element
-      (Position : Cursor;
-       Process  : not null access procedure (Element : Element_Type))
-    is
-    begin
-       if Checks and then Position.Node = 0 then
-          raise Constraint_Error with "Position cursor equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Position.Container.all, Position.Node),
-                      "bad cursor in Query_Element");
- 
-       declare
-          S : Set renames Position.Container.all;
-          Lock : With_Lock (S.TC'Unrestricted_Access);
-       begin
-          Process (S.Nodes (Position.Node).Element);
-       end;
-    end Query_Element;
- 
-    ----------
-    -- Read --
-    ----------
- 
-    procedure Read
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : out Set)
-    is
-       procedure Read_Element (Node : in out Node_Type);
-       pragma Inline (Read_Element);
- 
-       procedure Allocate is
-          new Tree_Operations.Generic_Allocate (Read_Element);
- 
-       procedure Read_Elements is
-          new Tree_Operations.Generic_Read (Allocate);
- 
-       ------------------
-       -- Read_Element --
-       ------------------
- 
-       procedure Read_Element (Node : in out Node_Type) is
-       begin
-          Element_Type'Read (Stream, Node.Element);
-       end Read_Element;
- 
-    --  Start of processing for Read
- 
-    begin
-       Read_Elements (Stream, Container);
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Cursor)
-    is
-    begin
-       raise Program_Error with "attempt to stream set cursor";
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Constant_Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Read;
- 
-    -------------
-    -- Replace --
-    -------------
- 
-    procedure Replace (Container : in out Set; New_Item : Element_Type) is
-       Node : constant Count_Type := Element_Keys.Find (Container, New_Item);
- 
-    begin
-       if Checks and then Node = 0 then
-          raise Constraint_Error with
-            "attempt to replace element not in set";
-       end if;
- 
-       TE_Check (Container.TC);
- 
-       Container.Nodes (Node).Element := New_Item;
-    end Replace;
- 
-    ---------------------
-    -- Replace_Element --
-    ---------------------
- 
-    procedure Replace_Element
-      (Container : in out Set;
-       Index     : Count_Type;
-       Item      : Element_Type)
-    is
-       pragma Assert (Index /= 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);
- 
-       Nodes : Nodes_Type renames Container.Nodes;
-       Node  : Node_Type renames Nodes (Index);
- 
-       --------------
-       -- New_Node --
-       --------------
- 
-       function New_Node return Count_Type is
-       begin
-          Node.Element := Item;
-          Node.Color   := Red_Black_Trees.Red;
-          Node.Parent  := 0;
-          Node.Right   := 0;
-          Node.Left    := 0;
-          return Index;
-       end New_Node;
- 
-       Hint      : Count_Type;
-       Result    : Count_Type;
-       Inserted  : Boolean;
-       Compare   : Boolean;
- 
-    --  Start of processing for Replace_Element
- 
-    begin
-       --  Replace_Element assigns value Item to the element designated by Node,
-       --  per certain semantic constraints, described as follows.
- 
-       --  If Item is equivalent to the element, then element is replaced and
-       --  there's nothing else to do. This is the easy case.
- 
-       --  If Item is not equivalent, then the node will (possibly) have to move
-       --  to some other place in the tree. This is slighly more complicated,
-       --  because we must ensure that Item is not equivalent to some other
-       --  element in the tree (in which case, the replacement is not allowed).
- 
-       --  Determine whether Item is equivalent to element on the specified
-       --  node.
- 
-       declare
-          Lock : With_Lock (Container.TC'Unrestricted_Access);
-       begin
-          Compare := (if Item < Node.Element then False
-                      elsif Node.Element < Item then False
-                      else True);
-       end;
- 
-       if Compare then
- 
-          --  Item is equivalent to the node's element, so we will not have to
-          --  move the node.
- 
-          TE_Check (Container.TC);
- 
-          Node.Element := Item;
-          return;
-       end if;
- 
-       --  The replacement Item is not equivalent to the element on the
-       --  specified node, which means that it will need to be re-inserted in a
-       --  different position in the tree. We must now determine whether Item is
-       --  equivalent to some other element in the tree (which would prohibit
-       --  the assignment and hence the move).
- 
-       --  Ceiling returns the smallest element equivalent or greater than the
-       --  specified Item; if there is no such element, then it returns 0.
- 
-       Hint := Element_Keys.Ceiling (Container, Item);
- 
-       if Hint /= 0 then  -- Item <= Nodes (Hint).Element
-          declare
-             Lock : With_Lock (Container.TC'Unrestricted_Access);
-          begin
-             Compare := Item < Nodes (Hint).Element;
-          end;
- 
-          --  Item is equivalent to Nodes (Hint).Element
- 
-          if Checks and then not Compare then
- 
-             --  Ceiling returns an element that is equivalent or greater than
-             --  Item. If Item is "not less than" the element, then by
-             --  elimination we know that Item is equivalent to the element.
- 
-             --  But this means that it is not possible to assign the value of
-             --  Item to the specified element (on Node), because a different
-             --  element (on Hint) equivalent to Item already exsits. (Were we
-             --  to change Node's element value, we would have to move Node, but
-             --  we would be unable to move the Node, because its new position
-             --  in the tree is already occupied by an equivalent element.)
- 
-             raise Program_Error with "attempt to replace existing element";
-          end if;
- 
-          --  Item is not equivalent to any other element in the tree
-          --  (specifically, it is less than Nodes (Hint).Element), so it is
-          --  safe to assign the value of Item to Node.Element. This means that
-          --  the node will have to move to a different position in the tree
-          --  (because its element will have a different value).
- 
-          --  The nearest (greater) neighbor of Item is Hint. This will be the
-          --  insertion position of Node (because its element will have Item as
-          --  its new value).
- 
-          --  If Node equals Hint, the relative position of Node does not
-          --  change. This allows us to perform an optimization: we need not
-          --  remove Node from the tree and then reinsert it with its new value,
-          --  because it would only be placed in the exact same position.
- 
-          if Hint = Index then
-             TE_Check (Container.TC);
- 
-             Node.Element := Item;
-             return;
-          end if;
-       end if;
- 
-       --  If we get here, it is because Item was greater than all elements in
-       --  the tree (Hint = 0), or because Item was less than some element at a
-       --  different place in the tree (Item < Nodes (Hint).Element and Hint /=
-       --  Index). In either case, we remove Node from the tree and then insert
-       --  Item into the tree, onto the same Node.
- 
-       Tree_Operations.Delete_Node_Sans_Free (Container, Index);
- 
-       Local_Insert_With_Hint
-         (Tree     => Container,
-          Position => Hint,
-          Key      => Item,
-          Node     => Result,
-          Inserted => Inserted);
- 
-       pragma Assert (Inserted);
-       pragma Assert (Result = Index);
-    end Replace_Element;
- 
-    procedure Replace_Element
-      (Container : in out Set;
-       Position  : Cursor;
-       New_Item  : Element_Type)
-    is
-    begin
-       if Checks and then Position.Node = 0 then
-          raise Constraint_Error with
-            "Position cursor equals No_Element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor designates wrong set";
-       end if;
- 
-       pragma Assert (Vet (Container, Position.Node),
-                      "bad cursor in Replace_Element");
- 
-       Replace_Element (Container, Position.Node, New_Item);
-    end Replace_Element;
- 
-    ---------------------
-    -- Reverse_Iterate --
-    ---------------------
- 
-    procedure Reverse_Iterate
-      (Container : Set;
-       Process   : not null access procedure (Position : Cursor))
-    is
-       procedure Process_Node (Node : Count_Type);
-       pragma Inline (Process_Node);
- 
-       procedure Local_Reverse_Iterate is
-          new Tree_Operations.Generic_Reverse_Iteration (Process_Node);
- 
-       ------------------
-       -- Process_Node --
-       ------------------
- 
-       procedure Process_Node (Node : Count_Type) is
-       begin
-          Process (Cursor'(Container'Unrestricted_Access, Node));
-       end Process_Node;
- 
-       S : Set renames Container'Unrestricted_Access.all;
-       Busy : With_Busy (S.TC'Unrestricted_Access);
- 
-    --  Start of processing for Reverse_Iterate
- 
-    begin
-       Local_Reverse_Iterate (S);
-    end Reverse_Iterate;
- 
-    -----------
-    -- Right --
-    -----------
- 
-    function Right (Node : Node_Type) return Count_Type is
-    begin
-       return Node.Right;
-    end Right;
- 
-    ---------------
-    -- 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)
-       renames Set_Ops.Set_Symmetric_Difference;
- 
-    function Symmetric_Difference (Left, Right : Set) return Set
-       renames Set_Ops.Set_Symmetric_Difference;
- 
-    ------------
-    -- To_Set --
-    ------------
- 
-    function To_Set (New_Item : Element_Type) return Set is
-       Node     : Count_Type;
-       Inserted : Boolean;
-    begin
-       return S : Set (1) do
-          Insert_Sans_Hint (S, New_Item, Node, Inserted);
-          pragma Assert (Inserted);
-       end return;
-    end To_Set;
- 
-    -----------
-    -- Union --
-    -----------
- 
-    procedure Union (Target : in out Set; Source : Set)
-       renames Set_Ops.Set_Union;
- 
-    function Union (Left, Right : Set) return Set
-       renames Set_Ops.Set_Union;
- 
-    -----------
-    -- Write --
-    -----------
- 
-    procedure Write
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : Set)
-    is
-       procedure Write_Element
-         (Stream : not null access Root_Stream_Type'Class;
-          Node   : Node_Type);
-       pragma Inline (Write_Element);
- 
-       procedure Write_Elements is
-          new Tree_Operations.Generic_Write (Write_Element);
- 
-       -------------------
-       -- Write_Element --
-       -------------------
- 
-       procedure Write_Element
-         (Stream : not null access Root_Stream_Type'Class;
-          Node   : Node_Type)
-       is
-       begin
-          Element_Type'Write (Stream, Node.Element);
-       end Write_Element;
- 
-    --  Start of processing for Write
- 
-    begin
-       Write_Elements (Stream, Container);
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Cursor)
-    is
-    begin
-       raise Program_Error with "attempt to stream set cursor";
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Constant_Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Write;
- 
- end Ada.Containers.Bounded_Ordered_Sets;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cborse.ads gcc-8.1.0/gcc/ada/a-cborse.ads
*** gcc-7.3.0/gcc/ada/a-cborse.ads	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-cborse.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,450 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --   A D A . C O N T A I N E R S . B O U N D E D _ O R D E R E D _ S E T S  --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, 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/>.                                          --
- --                                                                          --
- -- This unit was originally developed by Matthew J Heaney.                  --
- ------------------------------------------------------------------------------
- 
- with Ada.Iterator_Interfaces;
- 
- with Ada.Containers.Helpers;
- private with Ada.Containers.Red_Black_Trees;
- private with Ada.Streams;
- private with Ada.Finalization;
- 
- generic
-    type Element_Type is private;
- 
-    with function "<" (Left, Right : Element_Type) return Boolean is <>;
-    with function "=" (Left, Right : Element_Type) return Boolean is <>;
- 
- package Ada.Containers.Bounded_Ordered_Sets is
-    pragma Annotate (CodePeer, Skip_Analysis);
-    pragma Pure;
-    pragma Remote_Types;
- 
-    function Equivalent_Elements (Left, Right : Element_Type) return Boolean;
- 
-    type Set (Capacity : Count_Type) is tagged private
-    with Constant_Indexing => Constant_Reference,
-         Default_Iterator  => Iterate,
-         Iterator_Element  => Element_Type;
- 
-    pragma Preelaborable_Initialization (Set);
- 
-    type Cursor is private;
-    pragma Preelaborable_Initialization (Cursor);
- 
-    Empty_Set : constant Set;
- 
-    No_Element : constant Cursor;
- 
-    function Has_Element (Position : Cursor) return Boolean;
- 
-    package Set_Iterator_Interfaces is new
-      Ada.Iterator_Interfaces (Cursor, Has_Element);
- 
-    function "=" (Left, Right : Set) return Boolean;
- 
-    function Equivalent_Sets (Left, Right : Set) return Boolean;
- 
-    function To_Set (New_Item : Element_Type) return Set;
- 
-    function Length (Container : Set) return Count_Type;
- 
-    function Is_Empty (Container : Set) return Boolean;
- 
-    procedure Clear (Container : in out Set);
- 
-    function Element (Position : Cursor) return Element_Type;
- 
-    procedure Replace_Element
-      (Container : in out Set;
-       Position  : Cursor;
-       New_Item  : Element_Type);
- 
-    procedure Query_Element
-      (Position : Cursor;
-       Process  : not null access procedure (Element : Element_Type));
- 
-    type Constant_Reference_Type
-       (Element : not null access constant Element_Type) is
-    private
-    with
-       Implicit_Dereference => Element;
- 
-    function Constant_Reference
-      (Container : aliased Set;
-       Position  : Cursor) return Constant_Reference_Type;
- 
-    procedure Assign (Target : in out Set; Source : Set);
- 
-    function Copy (Source : Set; Capacity : Count_Type := 0) return Set;
- 
-    procedure Move (Target : in out Set; Source : in out Set);
- 
-    procedure Insert
-      (Container : in out Set;
-       New_Item  : Element_Type;
-       Position  : out Cursor;
-       Inserted  : out Boolean);
- 
-    procedure Insert
-      (Container : in out Set;
-       New_Item  : Element_Type);
- 
-    procedure Include
-      (Container : in out Set;
-       New_Item  : Element_Type);
- 
-    procedure Replace
-      (Container : in out Set;
-       New_Item  : Element_Type);
- 
-    procedure Exclude
-      (Container : in out Set;
-       Item      : Element_Type);
- 
-    procedure Delete
-      (Container : in out Set;
-       Item      : Element_Type);
- 
-    procedure Delete
-      (Container : in out Set;
-       Position  : in out Cursor);
- 
-    procedure Delete_First (Container : in out Set);
- 
-    procedure Delete_Last (Container : in out Set);
- 
-    procedure Union (Target : in out Set; Source : Set);
- 
-    function Union (Left, Right : Set) return Set;
- 
-    function "or" (Left, Right : Set) return Set renames Union;
- 
-    procedure Intersection (Target : in out Set; Source : Set);
- 
-    function Intersection (Left, Right : Set) return Set;
- 
-    function "and" (Left, Right : Set) return Set renames Intersection;
- 
-    procedure Difference (Target : in out Set; Source : Set);
- 
-    function Difference (Left, Right : Set) return Set;
- 
-    function "-" (Left, Right : Set) return Set renames Difference;
- 
-    procedure Symmetric_Difference (Target : in out Set; Source : Set);
- 
-    function Symmetric_Difference (Left, Right : Set) return Set;
- 
-    function "xor" (Left, Right : Set) return Set renames Symmetric_Difference;
- 
-    function Overlap (Left, Right : Set) return Boolean;
- 
-    function Is_Subset (Subset : Set; Of_Set : Set) return Boolean;
- 
-    function First (Container : Set) return Cursor;
- 
-    function First_Element (Container : Set) return Element_Type;
- 
-    function Last (Container : Set) return Cursor;
- 
-    function Last_Element (Container : Set) return Element_Type;
- 
-    function Next (Position : Cursor) return Cursor;
- 
-    procedure Next (Position : in out Cursor);
- 
-    function Previous (Position : Cursor) return Cursor;
- 
-    procedure Previous (Position : in out Cursor);
- 
-    function Find (Container : Set; Item : Element_Type) return Cursor;
- 
-    function Floor (Container : Set; Item : Element_Type) return Cursor;
- 
-    function Ceiling (Container : Set; Item : Element_Type) return Cursor;
- 
-    function Contains (Container : Set; Item : Element_Type) return Boolean;
- 
-    function "<" (Left, Right : Cursor) return Boolean;
- 
-    function ">" (Left, Right : Cursor) return Boolean;
- 
-    function "<" (Left : Cursor; Right : Element_Type) return Boolean;
- 
-    function ">" (Left : Cursor; Right : Element_Type) return Boolean;
- 
-    function "<" (Left : Element_Type; Right : Cursor) return Boolean;
- 
-    function ">" (Left : Element_Type; Right : Cursor) return Boolean;
- 
-    procedure Iterate
-      (Container : Set;
-       Process   : not null access procedure (Position : Cursor));
- 
-    procedure Reverse_Iterate
-      (Container : Set;
-       Process   : not null access procedure (Position : Cursor));
- 
-    function Iterate
-      (Container : Set)
-       return Set_Iterator_Interfaces.Reversible_Iterator'class;
- 
-    function Iterate
-      (Container : Set;
-       Start     : Cursor)
-       return Set_Iterator_Interfaces.Reversible_Iterator'class;
- 
-    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 is
- 
-       function Equivalent_Keys (Left, Right : Key_Type) return Boolean;
- 
-       function Key (Position : Cursor) return Key_Type;
- 
-       function Element (Container : Set; Key : Key_Type) return Element_Type;
- 
-       procedure Replace
-         (Container : in out Set;
-          Key       : Key_Type;
-          New_Item  : Element_Type);
- 
-       procedure Exclude (Container : in out Set; Key : Key_Type);
- 
-       procedure Delete (Container : in out Set; Key : Key_Type);
- 
-       function Find (Container : Set; Key : Key_Type) return Cursor;
- 
-       function Floor (Container : Set; Key : Key_Type) return Cursor;
- 
-       function Ceiling (Container : Set; Key : Key_Type) return Cursor;
- 
-       function Contains (Container : Set; Key : Key_Type) return Boolean;
- 
-       procedure Update_Element_Preserving_Key
-         (Container : in out Set;
-          Position  : Cursor;
-          Process   : not null access
-                        procedure (Element : in out Element_Type));
- 
-       type Reference_Type (Element : not null access Element_Type) is private
-       with
-          Implicit_Dereference => Element;
- 
-       function Reference_Preserving_Key
-         (Container : aliased in out Set;
-          Position  : Cursor) return Reference_Type;
- 
-       function Constant_Reference
-         (Container : aliased Set;
-          Key       : Key_Type) return Constant_Reference_Type;
- 
-       function Reference_Preserving_Key
-         (Container : aliased in out Set;
-          Key       : Key_Type) return Reference_Type;
- 
-    private
-       type Set_Access is access all Set;
-       for Set_Access'Storage_Size use 0;
- 
-       type Key_Access is access all Key_Type;
- 
-       use Ada.Streams;
- 
-       package Impl is new Helpers.Generic_Implementation;
- 
-       type Reference_Control_Type is
-         new Impl.Reference_Control_Type with
-       record
-          Container : Set_Access;
-          Pos       : Cursor;
-          Old_Key   : Key_Access;
-       end record;
- 
-       overriding procedure Finalize (Control : in out Reference_Control_Type);
-       pragma Inline (Finalize);
- 
-       type Reference_Type (Element : not null access Element_Type) is record
-          Control  : Reference_Control_Type;
-       end record;
- 
-       procedure Read
-         (Stream : not null access Root_Stream_Type'Class;
-          Item   : out Reference_Type);
- 
-       for Reference_Type'Read use Read;
- 
-       procedure Write
-         (Stream : not null access Root_Stream_Type'Class;
-          Item   : Reference_Type);
- 
-       for Reference_Type'Write use Write;
- 
-    end Generic_Keys;
- 
- private
- 
-    pragma Inline (Next);
-    pragma Inline (Previous);
- 
-    type Node_Type is record
-       Parent  : Count_Type;
-       Left    : Count_Type;
-       Right   : Count_Type;
-       Color   : Red_Black_Trees.Color_Type := Red_Black_Trees.Red;
-       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
-      new Tree_Types.Tree_Type (Capacity) with null record;
- 
-    use Tree_Types, Tree_Types.Implementation;
-    use Ada.Finalization;
-    use Ada.Streams;
- 
-    procedure Write
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : Set);
- 
-    for Set'Write use Write;
- 
-    procedure Read
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : out Set);
- 
-    for Set'Read use Read;
- 
-    type Set_Access is access all Set;
-    for Set_Access'Storage_Size use 0;
- 
-    --  Note: If a Cursor object has no explicit initialization expression,
-    --  it must default initialize to the same value as constant No_Element.
-    --  The Node component of type Cursor has scalar type Count_Type, so it
-    --  requires an explicit initialization expression of its own declaration,
-    --  in order for objects of record type Cursor to properly initialize.
- 
-    type Cursor is record
-       Container : Set_Access;
-       Node      : Count_Type := 0;
-    end record;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Cursor);
- 
-    for Cursor'Write use Write;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Cursor);
- 
-    for Cursor'Read use Read;
- 
-    subtype Reference_Control_Type is Implementation.Reference_Control_Type;
-    --  It is necessary to rename this here, so that the compiler can find it
- 
-    type Constant_Reference_Type
-      (Element : not null access constant Element_Type) is
-       record
-          Control : Reference_Control_Type :=
-            raise Program_Error with "uninitialized reference";
-          --  The RM says, "The default initialization of an object of
-          --  type Constant_Reference_Type or Reference_Type propagates
-          --  Program_Error."
-       end record;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Constant_Reference_Type);
- 
-    for Constant_Reference_Type'Read use Read;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Constant_Reference_Type);
- 
-    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;
-    pragma Inline (Pseudo_Reference);
-    --  Creates an object of type Reference_Control_Type pointing to the
-    --  container, and increments the Lock. Finalization of this object will
-    --  decrement the Lock.
- 
-    type Element_Access is access all Element_Type with
-      Storage_Size => 0;
- 
-    function Get_Element_Access
-      (Position : Cursor) return not null Element_Access;
-    --  Returns a pointer to the element designated by Position.
- 
-    Empty_Set : constant Set := Set'(Tree_Type with Capacity => 0);
- 
-    No_Element : constant Cursor := Cursor'(null, 0);
- 
-    type Iterator is new Limited_Controlled and
-      Set_Iterator_Interfaces.Reversible_Iterator with
-    record
-       Container : Set_Access;
-       Node      : Count_Type;
-    end record
-      with Disable_Controlled => not T_Check;
- 
-    overriding procedure Finalize (Object : in out Iterator);
- 
-    overriding function First (Object : Iterator) return Cursor;
-    overriding function Last  (Object : Iterator) return Cursor;
- 
-    overriding function Next
-      (Object   : Iterator;
-       Position : Cursor) return Cursor;
- 
-    overriding function Previous
-      (Object   : Iterator;
-       Position : Cursor) return Cursor;
- 
- end Ada.Containers.Bounded_Ordered_Sets;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cbprqu.adb gcc-8.1.0/gcc/ada/a-cbprqu.adb
*** gcc-7.3.0/gcc/ada/a-cbprqu.adb	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-cbprqu.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,220 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                  ADA.CONTAINERS.BOUNDED_PRIORITY_QUEUES                  --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --            Copyright (C) 2011-2015, Free Software Foundation, Inc.       --
- --                                                                          --
- -- GNAT is 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.Bounded_Priority_Queues is
- 
-    package body Implementation is
- 
-       -------------
-       -- Dequeue --
-       -------------
- 
-       procedure Dequeue
-         (List    : in out List_Type;
-          Element : out Queue_Interfaces.Element_Type)
-       is
-       begin
-          Element := List.Container.First_Element;
-          List.Container.Delete_First;
-       end Dequeue;
- 
-       procedure Dequeue
-         (List     : in out List_Type;
-          At_Least : Queue_Priority;
-          Element  : in out Queue_Interfaces.Element_Type;
-          Success  : out Boolean)
-       is
-       begin
-          --  This operation dequeues a high priority item if it exists in the
-          --  queue. By "high priority" we mean an item whose priority is equal
-          --  or greater than the value At_Least. The generic formal operation
-          --  Before has the meaning "has higher priority than". To dequeue an
-          --  item (meaning that we return True as our Success value), we need
-          --  as our predicate the equivalent of "has equal or higher priority
-          --  than", but we cannot say that directly, so we require some logical
-          --  gymnastics to make it so.
- 
-          --  If E is the element at the head of the queue, and symbol ">"
-          --  refers to the "is higher priority than" function Before, then we
-          --  derive our predicate as follows:
- 
-          --    original: P(E) >= At_Least
-          --    same as:  not (P(E) < At_Least)
-          --    same as:  not (At_Least > P(E))
-          --    same as:  not Before (At_Least, P(E))
- 
-          --  But that predicate needs to be true in order to successfully
-          --  dequeue an item. If it's false, it means no item is dequeued, and
-          --  we return False as the Success value.
- 
-          if List.Length = 0
-            or else Before (At_Least,
-                            Get_Priority (List.Container.First_Element))
-          then
-             Success := False;
-             return;
-          end if;
- 
-          List.Dequeue (Element);
-          Success := True;
-       end Dequeue;
- 
-       -------------
-       -- Enqueue --
-       -------------
- 
-       procedure Enqueue
-         (List     : in out List_Type;
-          New_Item : Queue_Interfaces.Element_Type)
-       is
-          P : constant Queue_Priority := Get_Priority (New_Item);
- 
-          C : List_Types.Cursor;
-          use List_Types;
- 
-          Count : Count_Type;
- 
-       begin
-          C := List.Container.First;
-          while Has_Element (C) loop
- 
-             --  ??? why is following commented out ???
-             --  if Before (P, Get_Priority (List.Constant_Reference (C))) then
- 
-             if Before (P, Get_Priority (Element (C))) then
-                List.Container.Insert (C, New_Item);
-                exit;
-             end if;
- 
-             Next (C);
-          end loop;
- 
-          if not Has_Element (C) then
-             List.Container.Append (New_Item);
-          end if;
- 
-          Count := List.Container.Length;
- 
-          if Count > List.Max_Length then
-             List.Max_Length := Count;
-          end if;
-       end Enqueue;
- 
-       -------------------
-       -- First_Element --
-       -------------------
- 
-       function First_Element
-         (List : List_Type) return Queue_Interfaces.Element_Type
-       is
-       begin
- 
-          --  Use Constant_Reference for this.  ???
- 
-          return List.Container.First_Element;
-       end First_Element;
- 
-       ------------
-       -- Length --
-       ------------
- 
-       function Length (List : List_Type) return Count_Type is
-       begin
-          return List.Container.Length;
-       end Length;
- 
-       ----------------
-       -- Max_Length --
-       ----------------
- 
-       function Max_Length (List : List_Type) return Count_Type is
-       begin
-          return List.Max_Length;
-       end Max_Length;
- 
-    end Implementation;
- 
-    protected body Queue is
- 
-       ------------------
-       --  Current_Use --
-       ------------------
- 
-       function Current_Use return Count_Type is
-       begin
-          return List.Length;
-       end Current_Use;
- 
-       --------------
-       --  Dequeue --
-       --------------
- 
-       entry Dequeue (Element : out Queue_Interfaces.Element_Type)
-         when List.Length > 0
-       is
-       begin
-          List.Dequeue (Element);
-       end Dequeue;
- 
-       --------------------------------
-       -- Dequeue_Only_High_Priority --
-       --------------------------------
- 
-       procedure Dequeue_Only_High_Priority
-         (At_Least : Queue_Priority;
-          Element  : in out Queue_Interfaces.Element_Type;
-          Success  : out Boolean)
-       is
-       begin
-          List.Dequeue (At_Least, Element, Success);
-       end Dequeue_Only_High_Priority;
- 
-       --------------
-       --  Enqueue --
-       --------------
- 
-       entry Enqueue (New_Item : Queue_Interfaces.Element_Type)
-         when List.Length < Capacity
-       is
-       begin
-          List.Enqueue (New_Item);
-       end Enqueue;
- 
-       ---------------
-       --  Peak_Use --
-       ---------------
- 
-       function Peak_Use return Count_Type is
-       begin
-          return List.Max_Length;
-       end Peak_Use;
- 
-    end Queue;
- 
- end Ada.Containers.Bounded_Priority_Queues;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cbprqu.ads gcc-8.1.0/gcc/ada/a-cbprqu.ads
*** gcc-7.3.0/gcc/ada/a-cbprqu.ads	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-cbprqu.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,133 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                  ADA.CONTAINERS.BOUNDED_PRIORITY_QUEUES                  --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2011-2015, Free Software Foundation, 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/>.                                          --
- --                                                                          --
- -- This unit was originally developed by Matthew J Heaney.                  --
- ------------------------------------------------------------------------------
- 
- with System;
- 
- with Ada.Containers.Synchronized_Queue_Interfaces;
- with Ada.Containers.Bounded_Doubly_Linked_Lists;
- 
- generic
-    with package Queue_Interfaces is
-      new Ada.Containers.Synchronized_Queue_Interfaces (<>);
- 
-    type Queue_Priority is private;
- 
-    with function Get_Priority
-      (Element : Queue_Interfaces.Element_Type) return Queue_Priority is <>;
- 
-    with function Before
-      (Left, Right : Queue_Priority) return Boolean is <>;
- 
-    Default_Capacity : Count_Type;
-    Default_Ceiling  : System.Any_Priority := System.Priority'Last;
- 
- package Ada.Containers.Bounded_Priority_Queues is
-    pragma Annotate (CodePeer, Skip_Analysis);
-    pragma Preelaborate;
- 
-    package Implementation is
- 
-       --  All identifiers in this unit are implementation defined
- 
-       pragma Implementation_Defined;
- 
-       type List_Type (Capacity : Count_Type) is tagged limited private;
- 
-       procedure Enqueue
-         (List     : in out List_Type;
-          New_Item : Queue_Interfaces.Element_Type);
- 
-       procedure Dequeue
-         (List    : in out List_Type;
-          Element : out Queue_Interfaces.Element_Type);
- 
-       procedure Dequeue
-         (List     : in out List_Type;
-          At_Least : Queue_Priority;
-          Element  : in out Queue_Interfaces.Element_Type;
-          Success  : out Boolean);
- 
-       function First_Element
-         (List : List_Type) return Queue_Interfaces.Element_Type;
- 
-       function Length (List : List_Type) return Count_Type;
- 
-       function Max_Length (List : List_Type) return Count_Type;
- 
-    private
- 
-       --  We need a better data structure here, such as a proper heap.  ???
- 
-       package List_Types is new Bounded_Doubly_Linked_Lists
-         (Element_Type => Queue_Interfaces.Element_Type,
-          "="          => Queue_Interfaces."=");
- 
-       type List_Type (Capacity : Count_Type) is tagged limited record
-          Container  : List_Types.List (Capacity);
-          Max_Length : Count_Type := 0;
-       end record;
- 
-    end Implementation;
- 
-    protected type Queue
-      (Capacity : Count_Type := Default_Capacity;
-       Ceiling  : System.Any_Priority := Default_Ceiling)
-    with
-      Priority => Ceiling
-    is new Queue_Interfaces.Queue with
- 
-       overriding entry Enqueue (New_Item : Queue_Interfaces.Element_Type);
- 
-       overriding entry Dequeue (Element : out Queue_Interfaces.Element_Type);
- 
-       --  The priority queue operation Dequeue_Only_High_Priority had been a
-       --  protected entry in early drafts of AI05-0159, but it was discovered
-       --  that that operation as specified was not in fact implementable. The
-       --  operation was changed from an entry to a protected procedure per the
-       --  ARG meeting in Edinburgh (June 2011), with a different signature and
-       --  semantics.
- 
-       procedure Dequeue_Only_High_Priority
-         (At_Least : Queue_Priority;
-          Element  : in out Queue_Interfaces.Element_Type;
-          Success  : out Boolean);
- 
-       overriding function Current_Use return Count_Type;
- 
-       overriding function Peak_Use return Count_Type;
- 
-    private
-       List : Implementation.List_Type (Capacity);
-    end Queue;
- 
- end Ada.Containers.Bounded_Priority_Queues;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cbsyqu.adb gcc-8.1.0/gcc/ada/a-cbsyqu.adb
*** gcc-7.3.0/gcc/ada/a-cbsyqu.adb	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-cbsyqu.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,168 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                ADA.CONTAINERS.BOUNDED_SYNCHRONIZED_QUEUES                --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --            Copyright (C) 2011-2015, Free Software Foundation, Inc.       --
- --                                                                          --
- -- GNAT is 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.Bounded_Synchronized_Queues is
- 
-    package body Implementation is
- 
-       -------------
-       -- Dequeue --
-       -------------
- 
-       procedure Dequeue
-         (List    : in out List_Type;
-          Element : out Queue_Interfaces.Element_Type)
-       is
-          EE : Element_Array renames List.Elements;
- 
-       begin
-          Element := EE (List.First);
-          List.Length := List.Length - 1;
- 
-          if List.Length = 0 then
-             List.First := 0;
-             List.Last := 0;
- 
-          elsif List.First <= List.Last then
-             List.First := List.First + 1;
- 
-          else
-             List.First := List.First + 1;
- 
-             if List.First > List.Capacity then
-                List.First := 1;
-             end if;
-          end if;
-       end Dequeue;
- 
-       -------------
-       -- Enqueue --
-       -------------
- 
-       procedure Enqueue
-         (List     : in out List_Type;
-          New_Item : Queue_Interfaces.Element_Type)
-       is
-       begin
-          if List.Length >= List.Capacity then
-             raise Capacity_Error with "No capacity for insertion";
-          end if;
- 
-          if List.Length = 0 then
-             List.Elements (1) := New_Item;
-             List.First := 1;
-             List.Last := 1;
- 
-          elsif List.First <= List.Last then
-             if List.Last < List.Capacity then
-                List.Elements (List.Last + 1) := New_Item;
-                List.Last := List.Last + 1;
- 
-             else
-                List.Elements (1) := New_Item;
-                List.Last := 1;
-             end if;
- 
-          else
-             List.Elements (List.Last + 1) := New_Item;
-             List.Last := List.Last + 1;
-          end if;
- 
-          List.Length := List.Length + 1;
- 
-          if List.Length > List.Max_Length then
-             List.Max_Length := List.Length;
-          end if;
-       end Enqueue;
- 
-       ------------
-       -- Length --
-       ------------
- 
-       function Length (List : List_Type) return Count_Type is
-       begin
-          return List.Length;
-       end Length;
- 
-       ----------------
-       -- Max_Length --
-       ----------------
- 
-       function Max_Length (List : List_Type) return Count_Type is
-       begin
-          return List.Max_Length;
-       end Max_Length;
- 
-    end Implementation;
- 
-    protected body Queue is
- 
-       -----------------
-       -- Current_Use --
-       -----------------
- 
-       function Current_Use return Count_Type is
-       begin
-          return List.Length;
-       end Current_Use;
- 
-       -------------
-       -- Dequeue --
-       -------------
- 
-       entry Dequeue (Element : out Queue_Interfaces.Element_Type)
-         when List.Length > 0
-       is
-       begin
-          List.Dequeue (Element);
-       end Dequeue;
- 
-       -------------
-       -- Enqueue --
-       -------------
- 
-       entry Enqueue (New_Item : Queue_Interfaces.Element_Type)
-         when List.Length < Capacity
-       is
-       begin
-          List.Enqueue (New_Item);
-       end Enqueue;
- 
-       --------------
-       -- Peak_Use --
-       --------------
- 
-       function Peak_Use return Count_Type is
-       begin
-          return List.Max_Length;
-       end Peak_Use;
- 
-    end Queue;
- 
- end Ada.Containers.Bounded_Synchronized_Queues;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cbsyqu.ads gcc-8.1.0/gcc/ada/a-cbsyqu.ads
*** gcc-7.3.0/gcc/ada/a-cbsyqu.ads	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-cbsyqu.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,103 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                ADA.CONTAINERS.BOUNDED_SYNCHRONIZED_QUEUES                --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2011-2015, Free Software Foundation, 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/>.                                          --
- --                                                                          --
- -- This unit was originally developed by Matthew J Heaney.                  --
- ------------------------------------------------------------------------------
- 
- with System;
- with Ada.Containers.Synchronized_Queue_Interfaces;
- 
- generic
-    with package Queue_Interfaces is
-      new Ada.Containers.Synchronized_Queue_Interfaces (<>);
- 
-    Default_Capacity : Count_Type;
-    Default_Ceiling  : System.Any_Priority := System.Priority'Last;
- 
- package Ada.Containers.Bounded_Synchronized_Queues is
-    pragma Annotate (CodePeer, Skip_Analysis);
-    pragma Preelaborate;
- 
-    package Implementation is
- 
-       --  All identifiers in this unit are implementation defined
- 
-       pragma Implementation_Defined;
- 
-       type List_Type (Capacity : Count_Type) is tagged limited private;
- 
-       procedure Enqueue
-         (List     : in out List_Type;
-          New_Item : Queue_Interfaces.Element_Type);
- 
-       procedure Dequeue
-         (List    : in out List_Type;
-          Element : out Queue_Interfaces.Element_Type);
- 
-       function Length (List : List_Type) return Count_Type;
- 
-       function Max_Length (List : List_Type) return Count_Type;
- 
-    private
- 
-       --  Need proper heap data structure here ???
- 
-       type Element_Array is
-         array (Count_Type range <>) of Queue_Interfaces.Element_Type;
- 
-       type List_Type (Capacity : Count_Type) is tagged limited record
-          First, Last : Count_Type := 0;
-          Length      : Count_Type := 0;
-          Max_Length  : Count_Type := 0;
-          Elements    : Element_Array (1 .. Capacity) := (others => <>);
-       end record;
- 
-    end Implementation;
- 
-    protected type Queue
-      (Capacity : Count_Type := Default_Capacity;
-       Ceiling  : System.Any_Priority := Default_Ceiling)
-    with
-      Priority => Ceiling
-    is new Queue_Interfaces.Queue with
- 
-       overriding entry Enqueue (New_Item : Queue_Interfaces.Element_Type);
- 
-       overriding entry Dequeue (Element : out Queue_Interfaces.Element_Type);
- 
-       overriding function Current_Use return Count_Type;
- 
-       overriding function Peak_Use return Count_Type;
- 
-    private
-       List : Implementation.List_Type (Capacity);
-    end Queue;
- 
- end Ada.Containers.Bounded_Synchronized_Queues;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cdlili.adb gcc-8.1.0/gcc/ada/a-cdlili.adb
*** gcc-7.3.0/gcc/ada/a-cdlili.adb	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-cdlili.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,2186 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --   A D A . C O N T A I N E R S . D O U B L Y _ L I N K E D _ L I S T S    --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 Ada.Unchecked_Deallocation;
- 
- with System; use type System.Address;
- 
- package body Ada.Containers.Doubly_Linked_Lists is
- 
-    pragma Warnings (Off, "variable ""Busy*"" is not referenced");
-    pragma Warnings (Off, "variable ""Lock*"" is not referenced");
-    --  See comment in Ada.Containers.Helpers
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    procedure Free (X : in out Node_Access);
- 
-    procedure Insert_Internal
-      (Container : in out List;
-       Before    : Node_Access;
-       New_Node  : Node_Access);
- 
-    procedure Splice_Internal
-      (Target : in out List;
-       Before : Node_Access;
-       Source : in out List);
- 
-    procedure Splice_Internal
-      (Target   : in out List;
-       Before   : Node_Access;
-       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
-    --  pass. Invocations of Vet are used here as the argument of pragma Assert,
-    --  so the checks are performed only when assertions are enabled.
- 
-    ---------
-    -- "=" --
-    ---------
- 
-    function "=" (Left, Right : List) return Boolean is
-    begin
-       if Left.Length /= Right.Length then
-          return False;
-       end if;
- 
-       if Left.Length = 0 then
-          return True;
-       end if;
- 
-       declare
-          --  Per AI05-0022, the container implementation is required to detect
-          --  element tampering by a generic actual subprogram.
- 
-          Lock_Left : With_Lock (Left.TC'Unrestricted_Access);
-          Lock_Right : With_Lock (Right.TC'Unrestricted_Access);
- 
-          L : Node_Access := Left.First;
-          R : Node_Access := Right.First;
-       begin
-          for J in 1 .. Left.Length loop
-             if L.Element /= R.Element then
-                return False;
-             end if;
- 
-             L := L.Next;
-             R := R.Next;
-          end loop;
-       end;
- 
-       return True;
-    end "=";
- 
-    ------------
-    -- Adjust --
-    ------------
- 
-    procedure Adjust (Container : in out List) is
-       Src : Node_Access := Container.First;
- 
-    begin
-       --  If the counts are nonzero, execution is technically erroneous, but
-       --  it seems friendly to allow things like concurrent "=" on shared
-       --  constants.
- 
-       Zero_Counts (Container.TC);
- 
-       if Src = null then
-          pragma Assert (Container.Last = null);
-          pragma Assert (Container.Length = 0);
-          return;
-       end if;
- 
-       pragma Assert (Container.First.Prev = null);
-       pragma Assert (Container.Last.Next = null);
-       pragma Assert (Container.Length > 0);
- 
-       Container.First := null;
-       Container.Last := null;
-       Container.Length := 0;
-       Zero_Counts (Container.TC);
- 
-       Container.First := new Node_Type'(Src.Element, null, null);
-       Container.Last := Container.First;
-       Container.Length := 1;
- 
-       Src := Src.Next;
-       while Src /= null loop
-          Container.Last.Next := new Node_Type'(Element => Src.Element,
-                                                Prev    => Container.Last,
-                                                Next    => null);
-          Container.Last := Container.Last.Next;
-          Container.Length := Container.Length + 1;
- 
-          Src := Src.Next;
-       end loop;
-    end Adjust;
- 
-    ------------
-    -- Append --
-    ------------
- 
-    procedure Append
-      (Container : in out List;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1)
-    is
-    begin
-       Insert (Container, No_Element, New_Item, Count);
-    end Append;
- 
-    ------------
-    -- Assign --
-    ------------
- 
-    procedure Assign (Target : in out List; Source : List) is
-       Node : Node_Access;
- 
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       Target.Clear;
- 
-       Node := Source.First;
-       while Node /= null loop
-          Target.Append (Node.Element);
-          Node := Node.Next;
-       end loop;
-    end Assign;
- 
-    -----------
-    -- Clear --
-    -----------
- 
-    procedure Clear (Container : in out List) is
-       X : Node_Access;
- 
-    begin
-       if Container.Length = 0 then
-          pragma Assert (Container.First = null);
-          pragma Assert (Container.Last = null);
-          pragma Assert (Container.TC = (Busy => 0, Lock => 0));
-          return;
-       end if;
- 
-       pragma Assert (Container.First.Prev = null);
-       pragma Assert (Container.Last.Next = null);
- 
-       TC_Check (Container.TC);
- 
-       while Container.Length > 1 loop
-          X := Container.First;
-          pragma Assert (X.Next.Prev = Container.First);
- 
-          Container.First := X.Next;
-          Container.First.Prev := null;
- 
-          Container.Length := Container.Length - 1;
- 
-          Free (X);
-       end loop;
- 
-       X := Container.First;
-       pragma Assert (X = Container.Last);
- 
-       Container.First := null;
-       Container.Last := null;
-       Container.Length := 0;
- 
-       pragma Warnings (Off);
-       Free (X);
-       pragma Warnings (On);
-    end Clear;
- 
-    ------------------------
-    -- Constant_Reference --
-    ------------------------
- 
-    function Constant_Reference
-      (Container : aliased List;
-       Position  : Cursor) return Constant_Reference_Type
-    is
-    begin
-       if Checks and then Position.Container = null then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor designates wrong container";
-       end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in Constant_Reference");
- 
-       declare
-          TC : constant Tamper_Counts_Access :=
-            Container.TC'Unrestricted_Access;
-       begin
-          return R : constant Constant_Reference_Type :=
-            (Element => Position.Node.Element'Access,
-             Control => (Controlled with TC))
-          do
-             Lock (TC.all);
-          end return;
-       end;
-    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) return List is
-    begin
-       return Target : List do
-          Target.Assign (Source);
-       end return;
-    end Copy;
- 
-    ------------
-    -- Delete --
-    ------------
- 
-    procedure Delete
-      (Container : in out List;
-       Position  : in out Cursor;
-       Count     : Count_Type := 1)
-    is
-       X : Node_Access;
- 
-    begin
-       if Checks and then Position.Node = null then
-          raise Constraint_Error with
-            "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor designates wrong container";
-       end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in Delete");
- 
-       if Position.Node = Container.First then
-          Delete_First (Container, Count);
-          Position := No_Element; --  Post-York behavior
-          return;
-       end if;
- 
-       if Count = 0 then
-          Position := No_Element;  --  Post-York behavior
-          return;
-       end if;
- 
-       TC_Check (Container.TC);
- 
-       for Index in 1 .. Count loop
-          X := Position.Node;
-          Container.Length := Container.Length - 1;
- 
-          if X = Container.Last then
-             Position := No_Element;
- 
-             Container.Last := X.Prev;
-             Container.Last.Next := null;
- 
-             Free (X);
-             return;
-          end if;
- 
-          Position.Node := X.Next;
- 
-          X.Next.Prev := X.Prev;
-          X.Prev.Next := X.Next;
- 
-          Free (X);
-       end loop;
- 
-       --  The following comment is unacceptable, more detail needed ???
- 
-       Position := No_Element;  --  Post-York behavior
-    end Delete;
- 
-    ------------------
-    -- Delete_First --
-    ------------------
- 
-    procedure Delete_First
-      (Container : in out List;
-       Count     : Count_Type := 1)
-    is
-       X : Node_Access;
- 
-    begin
-       if Count >= Container.Length then
-          Clear (Container);
-          return;
-       end if;
- 
-       if Count = 0 then
-          return;
-       end if;
- 
-       TC_Check (Container.TC);
- 
-       for J in 1 .. Count loop
-          X := Container.First;
-          pragma Assert (X.Next.Prev = Container.First);
- 
-          Container.First := X.Next;
-          Container.First.Prev := null;
- 
-          Container.Length := Container.Length - 1;
- 
-          Free (X);
-       end loop;
-    end Delete_First;
- 
-    -----------------
-    -- Delete_Last --
-    -----------------
- 
-    procedure Delete_Last
-      (Container : in out List;
-       Count     : Count_Type := 1)
-    is
-       X : Node_Access;
- 
-    begin
-       if Count >= Container.Length then
-          Clear (Container);
-          return;
-       end if;
- 
-       if Count = 0 then
-          return;
-       end if;
- 
-       TC_Check (Container.TC);
- 
-       for J in 1 .. Count loop
-          X := Container.Last;
-          pragma Assert (X.Prev.Next = Container.Last);
- 
-          Container.Last := X.Prev;
-          Container.Last.Next := null;
- 
-          Container.Length := Container.Length - 1;
- 
-          Free (X);
-       end loop;
-    end Delete_Last;
- 
-    -------------
-    -- Element --
-    -------------
- 
-    function Element (Position : Cursor) return Element_Type is
-    begin
-       if Checks and then Position.Node = null then
-          raise Constraint_Error with
-            "Position cursor has no element";
-       end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in Element");
- 
-       return Position.Node.Element;
-    end Element;
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    procedure Finalize (Object : in out Iterator) is
-    begin
-       if Object.Container /= null then
-          Unbusy (Object.Container.TC);
-       end if;
-    end Finalize;
- 
-    ----------
-    -- Find --
-    ----------
- 
-    function Find
-      (Container : List;
-       Item      : Element_Type;
-       Position  : Cursor := No_Element) return Cursor
-    is
-       Node : Node_Access := Position.Node;
- 
-    begin
-       if Node = null then
-          Node := Container.First;
- 
-       else
-          if Checks and then Position.Container /= Container'Unrestricted_Access
-          then
-             raise Program_Error with
-               "Position cursor designates wrong container";
-          end if;
- 
-          pragma Assert (Vet (Position), "bad cursor in Find");
-       end if;
- 
-       --  Per AI05-0022, the container implementation is required to detect
-       --  element tampering by a generic actual subprogram.
- 
-       declare
-          Lock : With_Lock (Container.TC'Unrestricted_Access);
-       begin
-          while Node /= null loop
-             if Node.Element = Item then
-                return Cursor'(Container'Unrestricted_Access, Node);
-             end if;
- 
-             Node := Node.Next;
-          end loop;
- 
-          return No_Element;
-       end;
-    end Find;
- 
-    -----------
-    -- First --
-    -----------
- 
-    function First (Container : List) return Cursor is
-    begin
-       if Container.First = null then
-          return No_Element;
-       else
-          return Cursor'(Container'Unrestricted_Access, Container.First);
-       end if;
-    end First;
- 
-    function First (Object : Iterator) return Cursor is
-    begin
-       --  The value of the iterator object's Node component influences the
-       --  behavior of the First (and Last) selector function.
- 
-       --  When the Node component is null, this means the iterator object was
-       --  constructed without a start expression, in which case the (forward)
-       --  iteration starts from the (logical) beginning of the entire sequence
-       --  of items (corresponding to Container.First, for a forward iterator).
- 
-       --  Otherwise, this is iteration over a partial sequence of items. When
-       --  the Node component is non-null, the iterator object was constructed
-       --  with a start expression, that specifies the position from which the
-       --  (forward) partial iteration begins.
- 
-       if Object.Node = null then
-          return Doubly_Linked_Lists.First (Object.Container.all);
-       else
-          return Cursor'(Object.Container, Object.Node);
-       end if;
-    end First;
- 
-    -------------------
-    -- First_Element --
-    -------------------
- 
-    function First_Element (Container : List) return Element_Type is
-    begin
-       if Checks and then Container.First = null then
-          raise Constraint_Error with "list is empty";
-       end if;
- 
-       return Container.First.Element;
-    end First_Element;
- 
-    ----------
-    -- Free --
-    ----------
- 
-    procedure Free (X : in out Node_Access) is
-       procedure Deallocate is
-         new Ada.Unchecked_Deallocation (Node_Type, Node_Access);
- 
-    begin
-       --  While a node is in use, as an active link in a list, its Previous and
-       --  Next components must be null, or designate a different node; this is
-       --  a node invariant. Before actually deallocating the node, we set both
-       --  access value components of the node to point to the node itself, thus
-       --  falsifying the node invariant. Subprogram Vet inspects the value of
-       --  the node components when interrogating the node, in order to detect
-       --  whether the cursor's node access value is dangling.
- 
-       --  Note that we have no guarantee that the storage for the node isn't
-       --  modified when it is deallocated, but there are other tests that Vet
-       --  does if node invariants appear to be satisifed. However, in practice
-       --  this simple test works well enough, detecting dangling references
-       --  immediately, without needing further interrogation.
- 
-       X.Prev := X;
-       X.Next := X;
- 
-       Deallocate (X);
-    end Free;
- 
-    ---------------------
-    -- Generic_Sorting --
-    ---------------------
- 
-    package body Generic_Sorting is
- 
-       ---------------
-       -- Is_Sorted --
-       ---------------
- 
-       function Is_Sorted (Container : List) return Boolean is
-          --  Per AI05-0022, the container implementation is required to detect
-          --  element tampering by a generic actual subprogram.
- 
-          Lock : With_Lock (Container.TC'Unrestricted_Access);
- 
-          Node   : Node_Access;
-       begin
-          Node := Container.First;
-          for Idx in 2 .. Container.Length loop
-             if Node.Next.Element < Node.Element then
-                return False;
-             end if;
- 
-             Node := Node.Next;
-          end loop;
- 
-          return True;
-       end Is_Sorted;
- 
-       -----------
-       -- Merge --
-       -----------
- 
-       procedure Merge
-         (Target : in out List;
-          Source : in out List)
-       is
-       begin
-          --  The semantics of Merge changed slightly per AI05-0021. It was
-          --  originally the case that if Target and Source denoted the same
-          --  container object, then the GNAT implementation of Merge did
-          --  nothing. However, it was argued that RM05 did not precisely
-          --  specify the semantics for this corner case. The decision of the
-          --  ARG was that if Target and Source denote the same non-empty
-          --  container object, then Program_Error is raised.
- 
-          if Source.Is_Empty then
-             return;
-          end if;
- 
-          if Checks and then Target'Address = Source'Address then
-             raise Program_Error with
-               "Target and Source denote same non-empty container";
-          end if;
- 
-          if Checks and then Target.Length > Count_Type'Last - Source.Length
-          then
-             raise Constraint_Error with "new length exceeds maximum";
-          end if;
- 
-          TC_Check (Target.TC);
-          TC_Check (Source.TC);
- 
-          --  Per AI05-0022, the container implementation is required to detect
-          --  element tampering by a generic actual subprogram.
- 
-          declare
-             Lock_Target : With_Lock (Target.TC'Unchecked_Access);
-             Lock_Source : With_Lock (Source.TC'Unchecked_Access);
- 
-             LI, RI, RJ : Node_Access;
- 
-          begin
-             LI := Target.First;
-             RI := Source.First;
-             while RI /= null loop
-                pragma Assert (RI.Next = null
-                                 or else not (RI.Next.Element < RI.Element));
- 
-                if LI = null then
-                   Splice_Internal (Target, null, Source);
-                   exit;
-                end if;
- 
-                pragma Assert (LI.Next = null
-                                 or else not (LI.Next.Element < LI.Element));
- 
-                if RI.Element < LI.Element then
-                   RJ := RI;
-                   RI := RI.Next;
-                   Splice_Internal (Target, LI, Source, RJ);
- 
-                else
-                   LI := LI.Next;
-                end if;
-             end loop;
-          end;
-       end Merge;
- 
-       ----------
-       -- Sort --
-       ----------
- 
-       procedure Sort (Container : in out List) is
- 
-          procedure Partition (Pivot : Node_Access; Back : Node_Access);
- 
-          procedure Sort (Front, Back : Node_Access);
- 
-          ---------------
-          -- Partition --
-          ---------------
- 
-          procedure Partition (Pivot : Node_Access; Back : Node_Access) is
-             Node : Node_Access;
- 
-          begin
-             Node := Pivot.Next;
-             while Node /= Back loop
-                if Node.Element < Pivot.Element then
-                   declare
-                      Prev : constant Node_Access := Node.Prev;
-                      Next : constant Node_Access := Node.Next;
- 
-                   begin
-                      Prev.Next := Next;
- 
-                      if Next = null then
-                         Container.Last := Prev;
-                      else
-                         Next.Prev := Prev;
-                      end if;
- 
-                      Node.Next := Pivot;
-                      Node.Prev := Pivot.Prev;
- 
-                      Pivot.Prev := Node;
- 
-                      if Node.Prev = null then
-                         Container.First := Node;
-                      else
-                         Node.Prev.Next := Node;
-                      end if;
- 
-                      Node := Next;
-                   end;
- 
-                else
-                   Node := Node.Next;
-                end if;
-             end loop;
-          end Partition;
- 
-          ----------
-          -- Sort --
-          ----------
- 
-          procedure Sort (Front, Back : Node_Access) is
-             Pivot : constant Node_Access :=
-               (if Front = null then Container.First else Front.Next);
-          begin
-             if Pivot /= Back then
-                Partition (Pivot, Back);
-                Sort (Front, Pivot);
-                Sort (Pivot, Back);
-             end if;
-          end Sort;
- 
-       --  Start of processing for Sort
- 
-       begin
-          if Container.Length <= 1 then
-             return;
-          end if;
- 
-          pragma Assert (Container.First.Prev = null);
-          pragma Assert (Container.Last.Next = null);
- 
-          TC_Check (Container.TC);
- 
-          --  Per AI05-0022, the container implementation is required to detect
-          --  element tampering by a generic actual subprogram.
- 
-          declare
-             Lock : With_Lock (Container.TC'Unchecked_Access);
-          begin
-             Sort (Front => null, Back => null);
-          end;
- 
-          pragma Assert (Container.First.Prev = null);
-          pragma Assert (Container.Last.Next = null);
-       end Sort;
- 
-    end Generic_Sorting;
- 
-    ------------------------
-    -- Get_Element_Access --
-    ------------------------
- 
-    function Get_Element_Access
-      (Position : Cursor) return not null Element_Access is
-    begin
-       return Position.Node.Element'Access;
-    end Get_Element_Access;
- 
-    -----------------
-    -- Has_Element --
-    -----------------
- 
-    function Has_Element (Position : Cursor) return Boolean is
-    begin
-       pragma Assert (Vet (Position), "bad cursor in Has_Element");
-       return Position.Node /= null;
-    end Has_Element;
- 
-    ------------
-    -- Insert --
-    ------------
- 
-    procedure Insert
-      (Container : in out List;
-       Before    : Cursor;
-       New_Item  : Element_Type;
-       Position  : out Cursor;
-       Count     : Count_Type := 1)
-    is
-       First_Node : Node_Access;
-       New_Node   : Node_Access;
- 
-    begin
-       if Before.Container /= null then
-          if Checks and then Before.Container /= Container'Unrestricted_Access
-          then
-             raise Program_Error with
-               "Before cursor designates wrong list";
-          end if;
- 
-          pragma Assert (Vet (Before), "bad cursor in Insert");
-       end if;
- 
-       if Count = 0 then
-          Position := Before;
-          return;
-       end if;
- 
-       if Checks and then Container.Length > Count_Type'Last - Count then
-          raise Constraint_Error with "new length exceeds maximum";
-       end if;
- 
-       TC_Check (Container.TC);
- 
-       New_Node   := new Node_Type'(New_Item, null, null);
-       First_Node := New_Node;
-       Insert_Internal (Container, Before.Node, New_Node);
- 
-       for J in 2 .. Count loop
-          New_Node := new Node_Type'(New_Item, null, null);
-          Insert_Internal (Container, Before.Node, New_Node);
-       end loop;
- 
-       Position := Cursor'(Container'Unchecked_Access, First_Node);
-    end Insert;
- 
-    procedure Insert
-      (Container : in out List;
-       Before    : Cursor;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1)
-    is
-       Position : Cursor;
-       pragma Unreferenced (Position);
-    begin
-       Insert (Container, Before, New_Item, Position, Count);
-    end Insert;
- 
-    procedure Insert
-      (Container : in out List;
-       Before    : Cursor;
-       Position  : out Cursor;
-       Count     : Count_Type := 1)
-    is
-       First_Node : Node_Access;
-       New_Node   : Node_Access;
- 
-    begin
-       if Before.Container /= null then
-          if Checks and then Before.Container /= Container'Unrestricted_Access
-          then
-             raise Program_Error with
-               "Before cursor designates wrong list";
-          end if;
- 
-          pragma Assert (Vet (Before), "bad cursor in Insert");
-       end if;
- 
-       if Count = 0 then
-          Position := Before;
-          return;
-       end if;
- 
-       if Checks and then Container.Length > Count_Type'Last - Count then
-          raise Constraint_Error with "new length exceeds maximum";
-       end if;
- 
-       TC_Check (Container.TC);
- 
-       New_Node   := new Node_Type;
-       First_Node := New_Node;
-       Insert_Internal (Container, Before.Node, New_Node);
- 
-       for J in 2 .. Count loop
-          New_Node := new Node_Type;
-          Insert_Internal (Container, Before.Node, New_Node);
-       end loop;
- 
-       Position := Cursor'(Container'Unchecked_Access, First_Node);
-    end Insert;
- 
-    ---------------------
-    -- Insert_Internal --
-    ---------------------
- 
-    procedure Insert_Internal
-      (Container : in out List;
-       Before    : Node_Access;
-       New_Node  : Node_Access)
-    is
-    begin
-       if Container.Length = 0 then
-          pragma Assert (Before = null);
-          pragma Assert (Container.First = null);
-          pragma Assert (Container.Last = null);
- 
-          Container.First := New_Node;
-          Container.Last := New_Node;
- 
-       elsif Before = null then
-          pragma Assert (Container.Last.Next = null);
- 
-          Container.Last.Next := New_Node;
-          New_Node.Prev := Container.Last;
- 
-          Container.Last := New_Node;
- 
-       elsif Before = Container.First then
-          pragma Assert (Container.First.Prev = null);
- 
-          Container.First.Prev := New_Node;
-          New_Node.Next := Container.First;
- 
-          Container.First := New_Node;
- 
-       else
-          pragma Assert (Container.First.Prev = null);
-          pragma Assert (Container.Last.Next = null);
- 
-          New_Node.Next := Before;
-          New_Node.Prev := Before.Prev;
- 
-          Before.Prev.Next := New_Node;
-          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 Container.Length = 0;
-    end Is_Empty;
- 
-    -------------
-    -- Iterate --
-    -------------
- 
-    procedure Iterate
-      (Container : List;
-       Process   : not null access procedure (Position : Cursor))
-    is
-       Busy : With_Busy (Container.TC'Unrestricted_Access);
-       Node : Node_Access := Container.First;
- 
-    begin
-       while Node /= null loop
-          Process (Cursor'(Container'Unrestricted_Access, Node));
-          Node := Node.Next;
-       end loop;
-    end Iterate;
- 
-    function Iterate (Container : List)
-      return List_Iterator_Interfaces.Reversible_Iterator'Class
-    is
-    begin
-       --  The value of the Node component influences the behavior of the First
-       --  and Last selector functions of the iterator object. When the Node
-       --  component is null (as is the case here), this means the iterator
-       --  object was constructed without a start expression. This is a
-       --  complete iterator, meaning that the iteration starts from the
-       --  (logical) beginning of the sequence of items.
- 
-       --  Note: For a forward iterator, Container.First is the beginning, and
-       --  for a reverse iterator, Container.Last is the beginning.
- 
-       return It : constant Iterator :=
-                     Iterator'(Limited_Controlled with
-                                 Container => Container'Unrestricted_Access,
-                                 Node      => null)
-       do
-          Busy (Container.TC'Unrestricted_Access.all);
-       end return;
-    end Iterate;
- 
-    function Iterate (Container : List; Start : Cursor)
-      return List_Iterator_Interfaces.Reversible_Iterator'Class
-    is
-    begin
-       --  It was formerly the case that when Start = No_Element, the partial
-       --  iterator was defined to behave the same as for a complete iterator,
-       --  and iterate over the entire sequence of items. However, those
-       --  semantics were unintuitive and arguably error-prone (it is too easy
-       --  to accidentally create an endless loop), and so they were changed,
-       --  per the ARG meeting in Denver on 2011/11. However, there was no
-       --  consensus about what positive meaning this corner case should have,
-       --  and so it was decided to simply raise an exception. This does imply,
-       --  however, that it is not possible to use a partial iterator to specify
-       --  an empty sequence of items.
- 
-       if Checks and then Start = No_Element then
-          raise Constraint_Error with
-            "Start position for iterator equals No_Element";
-       end if;
- 
-       if Checks and then Start.Container /= Container'Unrestricted_Access then
-          raise Program_Error with
-            "Start cursor of Iterate designates wrong list";
-       end if;
- 
-       pragma Assert (Vet (Start), "Start cursor of Iterate is bad");
- 
-       --  The value of the Node component influences the behavior of the First
-       --  and Last selector functions of the iterator object. When the Node
-       --  component is non-null (as is the case here), it means that this is a
-       --  partial iteration, over a subset of the complete sequence of items.
-       --  The iterator object was constructed with a start expression,
-       --  indicating the position from which the iteration begins. Note that
-       --  the start position has the same value irrespective of whether this is
-       --  a forward or reverse iteration.
- 
-       return It : constant Iterator :=
-                     Iterator'(Limited_Controlled with
-                                 Container => Container'Unrestricted_Access,
-                               Node      => Start.Node)
-       do
-          Busy (Container.TC'Unrestricted_Access.all);
-       end return;
-    end Iterate;
- 
-    ----------
-    -- Last --
-    ----------
- 
-    function Last (Container : List) return Cursor is
-    begin
-       if Container.Last = null then
-          return No_Element;
-       else
-          return Cursor'(Container'Unrestricted_Access, Container.Last);
-       end if;
-    end Last;
- 
-    function Last (Object : Iterator) return Cursor is
-    begin
-       --  The value of the iterator object's Node component influences the
-       --  behavior of the Last (and First) selector function.
- 
-       --  When the Node component is null, this means the iterator object was
-       --  constructed without a start expression, in which case the (reverse)
-       --  iteration starts from the (logical) beginning of the entire sequence
-       --  (corresponding to Container.Last, for a reverse iterator).
- 
-       --  Otherwise, this is iteration over a partial sequence of items. When
-       --  the Node component is non-null, the iterator object was constructed
-       --  with a start expression, that specifies the position from which the
-       --  (reverse) partial iteration begins.
- 
-       if Object.Node = null then
-          return Doubly_Linked_Lists.Last (Object.Container.all);
-       else
-          return Cursor'(Object.Container, Object.Node);
-       end if;
-    end Last;
- 
-    ------------------
-    -- Last_Element --
-    ------------------
- 
-    function Last_Element (Container : List) return Element_Type is
-    begin
-       if Checks and then Container.Last = null then
-          raise Constraint_Error with "list is empty";
-       end if;
- 
-       return Container.Last.Element;
-    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
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       TC_Check (Source.TC);
- 
-       Clear (Target);
- 
-       Target.First := Source.First;
-       Source.First := null;
- 
-       Target.Last := Source.Last;
-       Source.Last := null;
- 
-       Target.Length := Source.Length;
-       Source.Length := 0;
-    end Move;
- 
-    ----------
-    -- Next --
-    ----------
- 
-    procedure Next (Position : in out Cursor) is
-    begin
-       Position := Next (Position);
-    end Next;
- 
-    function Next (Position : Cursor) return Cursor is
-    begin
-       if Position.Node = null then
-          return No_Element;
- 
-       else
-          pragma Assert (Vet (Position), "bad cursor in Next");
- 
-          declare
-             Next_Node : constant Node_Access := Position.Node.Next;
-          begin
-             if Next_Node = null then
-                return No_Element;
-             else
-                return Cursor'(Position.Container, Next_Node);
-             end if;
-          end;
-       end if;
-    end Next;
- 
-    function Next
-      (Object   : Iterator;
-       Position : Cursor) return Cursor
-    is
-    begin
-       if Position.Container = null then
-          return No_Element;
-       end if;
- 
-       if Checks and then Position.Container /= Object.Container then
-          raise Program_Error with
-            "Position cursor of Next designates wrong list";
-       end if;
- 
-       return Next (Position);
-    end Next;
- 
-    -------------
-    -- Prepend --
-    -------------
- 
-    procedure Prepend
-      (Container : in out List;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1)
-    is
-    begin
-       Insert (Container, First (Container), New_Item, Count);
-    end Prepend;
- 
-    --------------
-    -- Previous --
-    --------------
- 
-    procedure Previous (Position : in out Cursor) is
-    begin
-       Position := Previous (Position);
-    end Previous;
- 
-    function Previous (Position : Cursor) return Cursor is
-    begin
-       if Position.Node = null then
-          return No_Element;
- 
-       else
-          pragma Assert (Vet (Position), "bad cursor in Previous");
- 
-          declare
-             Prev_Node : constant Node_Access := Position.Node.Prev;
-          begin
-             if Prev_Node = null then
-                return No_Element;
-             else
-                return Cursor'(Position.Container, Prev_Node);
-             end if;
-          end;
-       end if;
-    end Previous;
- 
-    function Previous
-      (Object   : Iterator;
-       Position : Cursor) return Cursor
-    is
-    begin
-       if Position.Container = null then
-          return No_Element;
-       end if;
- 
-       if Checks and then Position.Container /= Object.Container then
-          raise Program_Error with
-            "Position cursor of Previous designates wrong list";
-       end if;
- 
-       return Previous (Position);
-    end Previous;
- 
-    ----------------------
-    -- Pseudo_Reference --
-    ----------------------
- 
-    function Pseudo_Reference
-      (Container : aliased List'Class) return Reference_Control_Type
-    is
-       TC : constant Tamper_Counts_Access := Container.TC'Unrestricted_Access;
-    begin
-       return R : constant Reference_Control_Type := (Controlled with TC) do
-          Lock (TC.all);
-       end return;
-    end Pseudo_Reference;
- 
-    -------------------
-    -- Query_Element --
-    -------------------
- 
-    procedure Query_Element
-      (Position : Cursor;
-       Process  : not null access procedure (Element : Element_Type))
-    is
-    begin
-       if Checks and then Position.Node = null then
-          raise Constraint_Error with
-            "Position cursor has no element";
-       end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in Query_Element");
- 
-       declare
-          Lock : With_Lock (Position.Container.TC'Unrestricted_Access);
-       begin
-          Process (Position.Node.Element);
-       end;
-    end Query_Element;
- 
-    ----------
-    -- Read --
-    ----------
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out List)
-    is
-       N : Count_Type'Base;
-       X : Node_Access;
- 
-    begin
-       Clear (Item);
-       Count_Type'Base'Read (Stream, N);
- 
-       if N = 0 then
-          return;
-       end if;
- 
-       X := new Node_Type;
- 
-       begin
-          Element_Type'Read (Stream, X.Element);
-       exception
-          when others =>
-             Free (X);
-             raise;
-       end;
- 
-       Item.First := X;
-       Item.Last := X;
- 
-       loop
-          Item.Length := Item.Length + 1;
-          exit when Item.Length = N;
- 
-          X := new Node_Type;
- 
-          begin
-             Element_Type'Read (Stream, X.Element);
-          exception
-             when others =>
-                Free (X);
-                raise;
-          end;
- 
-          X.Prev := Item.Last;
-          Item.Last.Next := X;
-          Item.Last := X;
-       end loop;
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Cursor)
-    is
-    begin
-       raise Program_Error with "attempt to stream list cursor";
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Constant_Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Read;
- 
-    ---------------
-    -- Reference --
-    ---------------
- 
-    function Reference
-      (Container : aliased in out List;
-       Position  : Cursor) return Reference_Type
-    is
-    begin
-       if Checks and then Position.Container = null then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unchecked_Access then
-          raise Program_Error with
-            "Position cursor designates wrong container";
-       end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in function Reference");
- 
-       declare
-          TC : constant Tamper_Counts_Access :=
-            Container.TC'Unrestricted_Access;
-       begin
-          return R : constant Reference_Type :=
-            (Element => Position.Node.Element'Access,
-             Control => (Controlled with TC))
-          do
-             Lock (TC.all);
-          end return;
-       end;
-    end Reference;
- 
-    ---------------------
-    -- Replace_Element --
-    ---------------------
- 
-    procedure Replace_Element
-      (Container : in out List;
-       Position  : Cursor;
-       New_Item  : Element_Type)
-    is
-    begin
-       if Checks and then Position.Container = null then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unchecked_Access then
-          raise Program_Error with
-            "Position cursor designates wrong container";
-       end if;
- 
-       TE_Check (Container.TC);
- 
-       pragma Assert (Vet (Position), "bad cursor in Replace_Element");
- 
-       Position.Node.Element := New_Item;
-    end Replace_Element;
- 
-    ----------------------
-    -- Reverse_Elements --
-    ----------------------
- 
-    procedure Reverse_Elements (Container : in out List) is
-       I : Node_Access := Container.First;
-       J : Node_Access := Container.Last;
- 
-       procedure Swap (L, R : Node_Access);
- 
-       ----------
-       -- Swap --
-       ----------
- 
-       procedure Swap (L, R : Node_Access) is
-          LN : constant Node_Access := L.Next;
-          LP : constant Node_Access := L.Prev;
- 
-          RN : constant Node_Access := R.Next;
-          RP : constant Node_Access := R.Prev;
- 
-       begin
-          if LP /= null then
-             LP.Next := R;
-          end if;
- 
-          if RN /= null then
-             RN.Prev := L;
-          end if;
- 
-          L.Next := RN;
-          R.Prev := LP;
- 
-          if LN = R then
-             pragma Assert (RP = L);
- 
-             L.Prev := R;
-             R.Next := L;
- 
-          else
-             L.Prev := RP;
-             RP.Next := L;
- 
-             R.Next := LN;
-             LN.Prev := R;
-          end if;
-       end Swap;
- 
-    --  Start of processing for Reverse_Elements
- 
-    begin
-       if Container.Length <= 1 then
-          return;
-       end if;
- 
-       pragma Assert (Container.First.Prev = null);
-       pragma Assert (Container.Last.Next = null);
- 
-       TC_Check (Container.TC);
- 
-       Container.First := J;
-       Container.Last := I;
-       loop
-          Swap (L => I, R => J);
- 
-          J := J.Next;
-          exit when I = J;
- 
-          I := I.Prev;
-          exit when I = J;
- 
-          Swap (L => J, R => I);
- 
-          I := I.Next;
-          exit when I = J;
- 
-          J := J.Prev;
-          exit when I = J;
-       end loop;
- 
-       pragma Assert (Container.First.Prev = null);
-       pragma Assert (Container.Last.Next = null);
-    end Reverse_Elements;
- 
-    ------------------
-    -- Reverse_Find --
-    ------------------
- 
-    function Reverse_Find
-      (Container : List;
-       Item      : Element_Type;
-       Position  : Cursor := No_Element) return Cursor
-    is
-       Node : Node_Access := Position.Node;
- 
-    begin
-       if Node = null then
-          Node := Container.Last;
- 
-       else
-          if Checks and then Position.Container /= Container'Unrestricted_Access
-          then
-             raise Program_Error with
-               "Position cursor designates wrong container";
-          end if;
- 
-          pragma Assert (Vet (Position), "bad cursor in Reverse_Find");
-       end if;
- 
-       --  Per AI05-0022, the container implementation is required to detect
-       --  element tampering by a generic actual subprogram.
- 
-       declare
-          Lock : With_Lock (Container.TC'Unrestricted_Access);
-       begin
-          while Node /= null loop
-             if Node.Element = Item then
-                return Cursor'(Container'Unrestricted_Access, Node);
-             end if;
- 
-             Node := Node.Prev;
-          end loop;
- 
-          return No_Element;
-       end;
-    end Reverse_Find;
- 
-    ---------------------
-    -- Reverse_Iterate --
-    ---------------------
- 
-    procedure Reverse_Iterate
-      (Container : List;
-       Process   : not null access procedure (Position : Cursor))
-    is
-       Busy : With_Busy (Container.TC'Unrestricted_Access);
-       Node : Node_Access := Container.Last;
- 
-    begin
-       while Node /= null loop
-          Process (Cursor'(Container'Unrestricted_Access, Node));
-          Node := Node.Prev;
-       end loop;
-    end Reverse_Iterate;
- 
-    ------------
-    -- Splice --
-    ------------
- 
-    procedure Splice
-      (Target : in out List;
-       Before : Cursor;
-       Source : in out List)
-    is
-    begin
-       if Before.Container /= null then
-          if Checks and then Before.Container /= Target'Unrestricted_Access then
-             raise Program_Error with
-               "Before cursor designates wrong container";
-          end if;
- 
-          pragma Assert (Vet (Before), "bad cursor in Splice");
-       end if;
- 
-       if Target'Address = Source'Address or else Source.Length = 0 then
-          return;
-       end if;
- 
-       if Checks and then Target.Length > Count_Type'Last - Source.Length then
-          raise Constraint_Error with "new length exceeds maximum";
-       end if;
- 
-       TC_Check (Target.TC);
-       TC_Check (Source.TC);
- 
-       Splice_Internal (Target, Before.Node, Source);
-    end Splice;
- 
-    procedure Splice
-      (Container : in out List;
-       Before    : Cursor;
-       Position  : Cursor)
-    is
-    begin
-       if Before.Container /= null then
-          if Checks and then Before.Container /= Container'Unchecked_Access then
-             raise Program_Error with
-               "Before cursor designates wrong container";
-          end if;
- 
-          pragma Assert (Vet (Before), "bad Before cursor in Splice");
-       end if;
- 
-       if Checks and then Position.Node = null then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor designates wrong container";
-       end if;
- 
-       pragma Assert (Vet (Position), "bad Position cursor in Splice");
- 
-       if Position.Node = Before.Node
-         or else Position.Node.Next = Before.Node
-       then
-          return;
-       end if;
- 
-       pragma Assert (Container.Length >= 2);
- 
-       TC_Check (Container.TC);
- 
-       if Before.Node = null then
-          pragma Assert (Position.Node /= Container.Last);
- 
-          if Position.Node = Container.First then
-             Container.First := Position.Node.Next;
-             Container.First.Prev := null;
-          else
-             Position.Node.Prev.Next := Position.Node.Next;
-             Position.Node.Next.Prev := Position.Node.Prev;
-          end if;
- 
-          Container.Last.Next := Position.Node;
-          Position.Node.Prev := Container.Last;
- 
-          Container.Last := Position.Node;
-          Container.Last.Next := null;
- 
-          return;
-       end if;
- 
-       if Before.Node = Container.First then
-          pragma Assert (Position.Node /= Container.First);
- 
-          if Position.Node = Container.Last then
-             Container.Last := Position.Node.Prev;
-             Container.Last.Next := null;
-          else
-             Position.Node.Prev.Next := Position.Node.Next;
-             Position.Node.Next.Prev := Position.Node.Prev;
-          end if;
- 
-          Container.First.Prev := Position.Node;
-          Position.Node.Next := Container.First;
- 
-          Container.First := Position.Node;
-          Container.First.Prev := null;
- 
-          return;
-       end if;
- 
-       if Position.Node = Container.First then
-          Container.First := Position.Node.Next;
-          Container.First.Prev := null;
- 
-       elsif Position.Node = Container.Last then
-          Container.Last := Position.Node.Prev;
-          Container.Last.Next := null;
- 
-       else
-          Position.Node.Prev.Next := Position.Node.Next;
-          Position.Node.Next.Prev := Position.Node.Prev;
-       end if;
- 
-       Before.Node.Prev.Next := Position.Node;
-       Position.Node.Prev := Before.Node.Prev;
- 
-       Before.Node.Prev := Position.Node;
-       Position.Node.Next := Before.Node;
- 
-       pragma Assert (Container.First.Prev = null);
-       pragma Assert (Container.Last.Next = null);
-    end Splice;
- 
-    procedure Splice
-      (Target   : in out List;
-       Before   : Cursor;
-       Source   : in out List;
-       Position : in out Cursor)
-    is
-    begin
-       if Target'Address = Source'Address then
-          Splice (Target, Before, Position);
-          return;
-       end if;
- 
-       if Before.Container /= null then
-          if Checks and then Before.Container /= Target'Unrestricted_Access then
-             raise Program_Error with
-               "Before cursor designates wrong container";
-          end if;
- 
-          pragma Assert (Vet (Before), "bad Before cursor in Splice");
-       end if;
- 
-       if Checks and then Position.Node = null then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Source'Unrestricted_Access then
-          raise Program_Error with
-            "Position cursor designates wrong container";
-       end if;
- 
-       pragma Assert (Vet (Position), "bad Position cursor in Splice");
- 
-       if Checks and then Target.Length = Count_Type'Last then
-          raise Constraint_Error with "Target is full";
-       end if;
- 
-       TC_Check (Target.TC);
-       TC_Check (Source.TC);
- 
-       Splice_Internal (Target, Before.Node, Source, Position.Node);
-       Position.Container := Target'Unchecked_Access;
-    end Splice;
- 
-    ---------------------
-    -- Splice_Internal --
-    ---------------------
- 
-    procedure Splice_Internal
-      (Target : in out List;
-       Before : Node_Access;
-       Source : in out List)
-    is
-    begin
-       --  This implements the corresponding Splice operation, after the
-       --  parameters have been vetted, and corner-cases disposed of.
- 
-       pragma Assert (Target'Address /= Source'Address);
-       pragma Assert (Source.Length > 0);
-       pragma Assert (Source.First /= null);
-       pragma Assert (Source.First.Prev = null);
-       pragma Assert (Source.Last /= null);
-       pragma Assert (Source.Last.Next = null);
-       pragma Assert (Target.Length <= Count_Type'Last - Source.Length);
- 
-       if Target.Length = 0 then
-          pragma Assert (Target.First = null);
-          pragma Assert (Target.Last = null);
-          pragma Assert (Before = null);
- 
-          Target.First := Source.First;
-          Target.Last := Source.Last;
- 
-       elsif Before = null then
-          pragma Assert (Target.Last.Next = null);
- 
-          Target.Last.Next := Source.First;
-          Source.First.Prev := Target.Last;
- 
-          Target.Last := Source.Last;
- 
-       elsif Before = Target.First then
-          pragma Assert (Target.First.Prev = null);
- 
-          Source.Last.Next := Target.First;
-          Target.First.Prev := Source.Last;
- 
-          Target.First := Source.First;
- 
-       else
-          pragma Assert (Target.Length >= 2);
- 
-          Before.Prev.Next := Source.First;
-          Source.First.Prev := Before.Prev;
- 
-          Before.Prev := Source.Last;
-          Source.Last.Next := Before;
-       end if;
- 
-       Source.First := null;
-       Source.Last := null;
- 
-       Target.Length := Target.Length + Source.Length;
-       Source.Length := 0;
-    end Splice_Internal;
- 
-    procedure Splice_Internal
-      (Target   : in out List;
-       Before   : Node_Access;  -- node of Target
-       Source   : in out List;
-       Position : Node_Access)  -- node of Source
-    is
-    begin
-       --  This implements the corresponding Splice operation, after the
-       --  parameters have been vetted.
- 
-       pragma Assert (Target'Address /= Source'Address);
-       pragma Assert (Target.Length < Count_Type'Last);
-       pragma Assert (Source.Length > 0);
-       pragma Assert (Source.First /= null);
-       pragma Assert (Source.First.Prev = null);
-       pragma Assert (Source.Last /= null);
-       pragma Assert (Source.Last.Next = null);
-       pragma Assert (Position /= null);
- 
-       if Position = Source.First then
-          Source.First := Position.Next;
- 
-          if Position = Source.Last then
-             pragma Assert (Source.First = null);
-             pragma Assert (Source.Length = 1);
-             Source.Last := null;
- 
-          else
-             Source.First.Prev := null;
-          end if;
- 
-       elsif Position = Source.Last then
-          pragma Assert (Source.Length >= 2);
-          Source.Last := Position.Prev;
-          Source.Last.Next := null;
- 
-       else
-          pragma Assert (Source.Length >= 3);
-          Position.Prev.Next := Position.Next;
-          Position.Next.Prev := Position.Prev;
-       end if;
- 
-       if Target.Length = 0 then
-          pragma Assert (Target.First = null);
-          pragma Assert (Target.Last = null);
-          pragma Assert (Before = null);
- 
-          Target.First := Position;
-          Target.Last := Position;
- 
-          Target.First.Prev := null;
-          Target.Last.Next := null;
- 
-       elsif Before = null then
-          pragma Assert (Target.Last.Next = null);
-          Target.Last.Next := Position;
-          Position.Prev := Target.Last;
- 
-          Target.Last := Position;
-          Target.Last.Next := null;
- 
-       elsif Before = Target.First then
-          pragma Assert (Target.First.Prev = null);
-          Target.First.Prev := Position;
-          Position.Next := Target.First;
- 
-          Target.First := Position;
-          Target.First.Prev := null;
- 
-       else
-          pragma Assert (Target.Length >= 2);
-          Before.Prev.Next := Position;
-          Position.Prev := Before.Prev;
- 
-          Before.Prev := Position;
-          Position.Next := Before;
-       end if;
- 
-       Target.Length := Target.Length + 1;
-       Source.Length := Source.Length - 1;
-    end Splice_Internal;
- 
-    ----------
-    -- Swap --
-    ----------
- 
-    procedure Swap
-      (Container : in out List;
-       I, J      : Cursor)
-    is
-    begin
-       if Checks and then I.Node = null then
-          raise Constraint_Error with "I cursor has no element";
-       end if;
- 
-       if Checks and then J.Node = null then
-          raise Constraint_Error with "J cursor has no element";
-       end if;
- 
-       if Checks and then I.Container /= Container'Unchecked_Access then
-          raise Program_Error with "I cursor designates wrong container";
-       end if;
- 
-       if Checks and then J.Container /= Container'Unchecked_Access then
-          raise Program_Error with "J cursor designates wrong container";
-       end if;
- 
-       if I.Node = J.Node then
-          return;
-       end if;
- 
-       TE_Check (Container.TC);
- 
-       pragma Assert (Vet (I), "bad I cursor in Swap");
-       pragma Assert (Vet (J), "bad J cursor in Swap");
- 
-       declare
-          EI : Element_Type renames I.Node.Element;
-          EJ : Element_Type renames J.Node.Element;
- 
-          EI_Copy : constant Element_Type := EI;
- 
-       begin
-          EI := EJ;
-          EJ := EI_Copy;
-       end;
-    end Swap;
- 
-    ----------------
-    -- Swap_Links --
-    ----------------
- 
-    procedure Swap_Links
-      (Container : in out List;
-       I, J      : Cursor)
-    is
-    begin
-       if Checks and then I.Node = null then
-          raise Constraint_Error with "I cursor has no element";
-       end if;
- 
-       if Checks and then J.Node = null then
-          raise Constraint_Error with "J cursor has no element";
-       end if;
- 
-       if Checks and then I.Container /= Container'Unrestricted_Access then
-          raise Program_Error with "I cursor designates wrong container";
-       end if;
- 
-       if Checks and then J.Container /= Container'Unrestricted_Access then
-          raise Program_Error with "J cursor designates wrong container";
-       end if;
- 
-       if I.Node = J.Node then
-          return;
-       end if;
- 
-       TC_Check (Container.TC);
- 
-       pragma Assert (Vet (I), "bad I cursor in Swap_Links");
-       pragma Assert (Vet (J), "bad J cursor in Swap_Links");
- 
-       declare
-          I_Next : constant Cursor := Next (I);
- 
-       begin
-          if I_Next = J then
-             Splice (Container, Before => I, Position => J);
- 
-          else
-             declare
-                J_Next : constant Cursor := Next (J);
- 
-             begin
-                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;
-          end if;
-       end;
-    end Swap_Links;
- 
-    --------------------
-    -- Update_Element --
-    --------------------
- 
-    procedure Update_Element
-      (Container : in out List;
-       Position  : Cursor;
-       Process   : not null access procedure (Element : in out Element_Type))
-    is
-    begin
-       if Checks and then Position.Node = null then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unchecked_Access then
-          raise Program_Error with
-            "Position cursor designates wrong container";
-       end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in Update_Element");
- 
-       declare
-          Lock : With_Lock (Container.TC'Unchecked_Access);
-       begin
-          Process (Position.Node.Element);
-       end;
-    end Update_Element;
- 
-    ---------
-    -- Vet --
-    ---------
- 
-    function Vet (Position : Cursor) return Boolean is
-    begin
-       if Position.Node = null then
-          return Position.Container = null;
-       end if;
- 
-       if Position.Container = null then
-          return False;
-       end if;
- 
-       --  An invariant of a node is that its Previous and Next components can
-       --  be null, or designate a different node. Operation Free sets the
-       --  access value components of the node to designate the node itself
-       --  before actually deallocating the node, thus deliberately violating
-       --  the node invariant. This gives us a simple way to detect a dangling
-       --  reference to a node.
- 
-       if Position.Node.Next = Position.Node then
-          return False;
-       end if;
- 
-       if Position.Node.Prev = Position.Node then
-          return False;
-       end if;
- 
-       --  In practice the tests above will detect most instances of a dangling
-       --  reference. If we get here, it means that the invariants of the
-       --  designated node are satisfied (they at least appear to be satisfied),
-       --  so we perform some more tests, to determine whether invariants of the
-       --  designated list are satisfied too.
- 
-       declare
-          L : List renames Position.Container.all;
- 
-       begin
-          if L.Length = 0 then
-             return False;
-          end if;
- 
-          if L.First = null then
-             return False;
-          end if;
- 
-          if L.Last = null then
-             return False;
-          end if;
- 
-          if L.First.Prev /= null then
-             return False;
-          end if;
- 
-          if L.Last.Next /= null then
-             return False;
-          end if;
- 
-          if Position.Node.Prev = null and then Position.Node /= L.First then
-             return False;
-          end if;
- 
-          pragma Assert
-            (Position.Node.Prev /= null or else Position.Node = L.First);
- 
-          if Position.Node.Next = null and then Position.Node /= L.Last then
-             return False;
-          end if;
- 
-          pragma Assert
-            (Position.Node.Next /= null
-              or else Position.Node = L.Last);
- 
-          if L.Length = 1 then
-             return L.First = L.Last;
-          end if;
- 
-          if L.First = L.Last then
-             return False;
-          end if;
- 
-          if L.First.Next = null then
-             return False;
-          end if;
- 
-          if L.Last.Prev = null then
-             return False;
-          end if;
- 
-          if L.First.Next.Prev /= L.First then
-             return False;
-          end if;
- 
-          if L.Last.Prev.Next /= L.Last then
-             return False;
-          end if;
- 
-          if L.Length = 2 then
-             if L.First.Next /= L.Last then
-                return False;
-             elsif L.Last.Prev /= L.First then
-                return False;
-             else
-                return True;
-             end if;
-          end if;
- 
-          if L.First.Next = L.Last then
-             return False;
-          end if;
- 
-          if L.Last.Prev = L.First then
-             return False;
-          end if;
- 
-          --  Eliminate earlier possibility
- 
-          if Position.Node = L.First then
-             return True;
-          end if;
- 
-          pragma Assert (Position.Node.Prev /= null);
- 
-          --  Eliminate earlier possibility
- 
-          if Position.Node = L.Last then
-             return True;
-          end if;
- 
-          pragma Assert (Position.Node.Next /= null);
- 
-          if Position.Node.Next.Prev /= Position.Node then
-             return False;
-          end if;
- 
-          if Position.Node.Prev.Next /= Position.Node then
-             return False;
-          end if;
- 
-          if L.Length = 3 then
-             if L.First.Next /= Position.Node then
-                return False;
-             elsif L.Last.Prev /= Position.Node then
-                return False;
-             end if;
-          end if;
- 
-          return True;
-       end;
-    end Vet;
- 
-    -----------
-    -- Write --
-    -----------
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : List)
-    is
-       Node : Node_Access;
- 
-    begin
-       Count_Type'Base'Write (Stream, Item.Length);
- 
-       Node := Item.First;
-       while Node /= null loop
-          Element_Type'Write (Stream, Node.Element);
-          Node := Node.Next;
-       end loop;
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Cursor)
-    is
-    begin
-       raise Program_Error with "attempt to stream list cursor";
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Constant_Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Write;
- 
- end Ada.Containers.Doubly_Linked_Lists;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cdlili.ads gcc-8.1.0/gcc/ada/a-cdlili.ads
*** gcc-7.3.0/gcc/ada/a-cdlili.ads	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-cdlili.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,406 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --   A D A . C O N T A I N E R S . D O U B L Y _ L I N K E D _ L I S T S    --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, 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/>.                                          --
- --                                                                          --
- -- This unit was originally developed by Matthew J Heaney.                  --
- ------------------------------------------------------------------------------
- 
- with Ada.Iterator_Interfaces;
- 
- with Ada.Containers.Helpers;
- private with Ada.Finalization;
- private with Ada.Streams;
- 
- generic
-    type Element_Type is private;
- 
-    with function "=" (Left, Right : Element_Type)
-       return Boolean is <>;
- 
- package Ada.Containers.Doubly_Linked_Lists is
-    pragma Annotate (CodePeer, Skip_Analysis);
-    pragma Preelaborate;
-    pragma Remote_Types;
- 
-    type List is tagged private
-    with
-       Constant_Indexing => Constant_Reference,
-       Variable_Indexing => Reference,
-       Default_Iterator  => Iterate,
-       Iterator_Element  => Element_Type;
- 
-    pragma Preelaborable_Initialization (List);
- 
-    type Cursor is private;
-    pragma Preelaborable_Initialization (Cursor);
- 
-    Empty_List : constant List;
- 
-    No_Element : constant Cursor;
- 
-    function Has_Element (Position : Cursor) return Boolean;
- 
-    package List_Iterator_Interfaces is new
-      Ada.Iterator_Interfaces (Cursor, Has_Element);
- 
-    function "=" (Left, Right : List) return Boolean;
- 
-    function Length (Container : List) return Count_Type;
- 
-    function Is_Empty (Container : List) return Boolean;
- 
-    procedure Clear (Container : in out List);
- 
-    function Element (Position : Cursor) return Element_Type;
- 
-    procedure Replace_Element
-      (Container : in out List;
-       Position  : Cursor;
-       New_Item  : Element_Type);
- 
-    procedure Query_Element
-      (Position : Cursor;
-       Process  : not null access procedure (Element : Element_Type));
- 
-    procedure Update_Element
-      (Container : in out List;
-       Position  : Cursor;
-       Process   : not null access procedure (Element : in out Element_Type));
- 
-    type Constant_Reference_Type
-       (Element : not null access constant Element_Type) is private
-    with
-       Implicit_Dereference => Element;
- 
-    type Reference_Type
-      (Element : not null access Element_Type) is private
-    with
-       Implicit_Dereference => Element;
- 
-    function Constant_Reference
-      (Container : aliased List;
-       Position  : Cursor) return Constant_Reference_Type;
-    pragma Inline (Constant_Reference);
- 
-    function Reference
-      (Container : aliased in out List;
-       Position  : Cursor) return Reference_Type;
-    pragma Inline (Reference);
- 
-    procedure Assign (Target : in out List; Source : List);
- 
-    function Copy (Source : List) return List;
- 
-    procedure Move
-      (Target : in out List;
-       Source : in out List);
- 
-    procedure Insert
-      (Container : in out List;
-       Before    : Cursor;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1);
- 
-    procedure Insert
-      (Container : in out List;
-       Before    : Cursor;
-       New_Item  : Element_Type;
-       Position  : out Cursor;
-       Count     : Count_Type := 1);
- 
-    procedure Insert
-      (Container : in out List;
-       Before    : Cursor;
-       Position  : out Cursor;
-       Count     : Count_Type := 1);
- 
-    procedure Prepend
-      (Container : in out List;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1);
- 
-    procedure Append
-      (Container : in out List;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1);
- 
-    procedure Delete
-      (Container : in out List;
-       Position  : in out Cursor;
-       Count     : Count_Type := 1);
- 
-    procedure Delete_First
-      (Container : in out List;
-       Count     : Count_Type := 1);
- 
-    procedure Delete_Last
-      (Container : in out List;
-       Count     : Count_Type := 1);
- 
-    procedure Reverse_Elements (Container : in out List);
- 
-    function Iterate (Container : List)
-       return List_Iterator_Interfaces.Reversible_Iterator'Class;
- 
-    function Iterate (Container : List; Start : Cursor)
-       return List_Iterator_Interfaces.Reversible_Iterator'Class;
- 
-    procedure Swap
-      (Container : in out List;
-       I, J      : Cursor);
- 
-    procedure Swap_Links
-      (Container : in out List;
-       I, J      : Cursor);
- 
-    procedure Splice
-      (Target : in out List;
-       Before : Cursor;
-       Source : in out List);
- 
-    procedure Splice
-      (Target   : in out List;
-       Before   : Cursor;
-       Source   : in out List;
-       Position : in out Cursor);
- 
-    procedure Splice
-      (Container : in out List;
-       Before    : Cursor;
-       Position  : Cursor);
- 
-    function First (Container : List) return Cursor;
- 
-    function First_Element (Container : List) return Element_Type;
- 
-    function Last (Container : List) return Cursor;
- 
-    function Last_Element (Container : List) return Element_Type;
- 
-    function Next (Position : Cursor) return Cursor;
- 
-    procedure Next (Position : in out Cursor);
- 
-    function Previous (Position : Cursor) return Cursor;
- 
-    procedure Previous (Position : in out Cursor);
- 
-    function Find
-      (Container : List;
-       Item      : Element_Type;
-       Position  : Cursor := No_Element) return Cursor;
- 
-    function Reverse_Find
-      (Container : List;
-       Item      : Element_Type;
-       Position  : Cursor := No_Element) return Cursor;
- 
-    function Contains
-      (Container : List;
-       Item      : Element_Type) return Boolean;
- 
-    procedure Iterate
-      (Container : List;
-       Process   : not null access procedure (Position : Cursor));
- 
-    procedure Reverse_Iterate
-      (Container : List;
-       Process   : not null access procedure (Position : Cursor));
- 
-    generic
-       with function "<" (Left, Right : Element_Type) return Boolean is <>;
-    package Generic_Sorting is
- 
-       function Is_Sorted (Container : List) return Boolean;
- 
-       procedure Sort (Container : in out List);
- 
-       procedure Merge (Target, Source : in out List);
- 
-    end Generic_Sorting;
- 
- private
- 
-    pragma Inline (Next);
-    pragma Inline (Previous);
- 
-    use Ada.Containers.Helpers;
-    package Implementation is new Generic_Implementation;
-    use Implementation;
- 
-    type Node_Type;
-    type Node_Access is access Node_Type;
- 
-    type Node_Type is
-       limited record
-          Element : aliased Element_Type;
-          Next    : Node_Access;
-          Prev    : Node_Access;
-       end record;
- 
-    use Ada.Finalization;
-    use Ada.Streams;
- 
-    type List is
-      new Controlled with record
-         First  : Node_Access := null;
-         Last   : Node_Access := null;
-         Length : Count_Type := 0;
-         TC     : aliased Tamper_Counts;
-      end record;
- 
-    overriding procedure Adjust (Container : in out List);
- 
-    overriding procedure Finalize (Container : in out List) renames Clear;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out List);
- 
-    for List'Read use Read;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : List);
- 
-    for List'Write use Write;
- 
-    type List_Access is access all List;
-    for List_Access'Storage_Size use 0;
- 
-    type Cursor is
-       record
-          Container : List_Access;
-          Node      : Node_Access;
-       end record;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Cursor);
- 
-    for Cursor'Read use Read;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Cursor);
- 
-    for Cursor'Write use Write;
- 
-    subtype Reference_Control_Type is Implementation.Reference_Control_Type;
-    --  It is necessary to rename this here, so that the compiler can find it
- 
-    type Constant_Reference_Type
-      (Element : not null access constant Element_Type) is
-       record
-          Control : Reference_Control_Type :=
-            raise Program_Error with "uninitialized reference";
-          --  The RM says, "The default initialization of an object of
-          --  type Constant_Reference_Type or Reference_Type propagates
-          --  Program_Error."
-       end record;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Constant_Reference_Type);
- 
-    for Constant_Reference_Type'Write use Write;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Constant_Reference_Type);
- 
-    for Constant_Reference_Type'Read use Read;
- 
-    type Reference_Type
-      (Element : not null access Element_Type) is
-       record
-          Control : Reference_Control_Type :=
-            raise Program_Error with "uninitialized reference";
-          --  The RM says, "The default initialization of an object of
-          --  type Constant_Reference_Type or Reference_Type propagates
-          --  Program_Error."
-       end record;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Reference_Type);
- 
-    for Reference_Type'Write use Write;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       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 Sem_Ch5 for
-    --  details.
- 
-    function Pseudo_Reference
-      (Container : aliased List'Class) return Reference_Control_Type;
-    pragma Inline (Pseudo_Reference);
-    --  Creates an object of type Reference_Control_Type pointing to the
-    --  container, and increments the Lock. Finalization of this object will
-    --  decrement the Lock.
- 
-    type Element_Access is access all Element_Type with
-      Storage_Size => 0;
- 
-    function Get_Element_Access
-      (Position : Cursor) return not null Element_Access;
-    --  Returns a pointer to the element designated by Position.
- 
-    Empty_List : constant List := (Controlled with others => <>);
- 
-    No_Element : constant Cursor := Cursor'(null, null);
- 
-    type Iterator is new Limited_Controlled and
-      List_Iterator_Interfaces.Reversible_Iterator with
-    record
-       Container : List_Access;
-       Node      : Node_Access;
-    end record
-      with Disable_Controlled => not T_Check;
- 
-    overriding procedure Finalize (Object : in out Iterator);
- 
-    overriding function First (Object : Iterator) return Cursor;
-    overriding function Last  (Object : Iterator) return Cursor;
- 
-    overriding function Next
-      (Object   : Iterator;
-       Position : Cursor) return Cursor;
- 
-    overriding function Previous
-      (Object   : Iterator;
-       Position : Cursor) return Cursor;
- 
- end Ada.Containers.Doubly_Linked_Lists;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cfdlli.adb gcc-8.1.0/gcc/ada/a-cfdlli.adb
*** gcc-7.3.0/gcc/ada/a-cfdlli.adb	Wed Apr 27 13:15:25 2016
--- gcc-8.1.0/gcc/ada/a-cfdlli.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,1620 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                 ADA.CONTAINERS.FORMAL_DOUBLY_LINKED_LISTS                --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2010-2016, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 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 Allocate
-      (Container : in out List;
-       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, Right : List) return Boolean is
-       LI, 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;
- 
-    procedure Allocate
-      (Container : in out List;
-       New_Node  : out Count_Type)
-    is
-       N : Node_Array renames Container.Nodes;
- 
-    begin
-       if Container.Free >= 0 then
-          New_Node := Container.Free;
-          Container.Free := N (New_Node).Next;
- 
-       else
-          New_Node := abs Container.Free;
-          Container.Free := Container.Free - 1;
-       end if;
-    end Allocate;
- 
-    ------------
-    -- Append --
-    ------------
- 
-    procedure Append
-      (Container : in out List;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1)
-    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);
-          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;
- 
-    --------------
-    -- 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;
- 
-    ---------------------
-    -- Current_To_Last --
-    ---------------------
- 
-    function Current_To_Last
-      (Container : List;
-       Current : Cursor) return List is
-       Curs : Cursor := First (Container);
-       C    : List (Container.Capacity) := Copy (Container, Container.Capacity);
-       Node : Count_Type;
- 
-    begin
-       if Curs = No_Element then
-          Clear (C);
-          return C;
-       end if;
- 
-       if Current /= No_Element and not Has_Element (Container, Current) then
-          raise Constraint_Error;
-       end if;
- 
-       while Curs.Node /= Current.Node loop
-          Node := Curs.Node;
-          Delete (C, Curs);
-          Curs := Next (Container, (Node => Node));
-       end loop;
- 
-       return C;
-    end Current_To_Last;
- 
-    ------------
-    -- Delete --
-    ------------
- 
-    procedure Delete
-      (Container : in out List;
-       Position  : in out Cursor;
-       Count     : Count_Type := 1)
-    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;
-       Count     : Count_Type := 1)
-    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;
-       Count     : Count_Type := 1)
-    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;
- 
-    -----------------------
-    -- First_To_Previous --
-    -----------------------
- 
-    function First_To_Previous
-      (Container : List;
-       Current   : Cursor) return List
-    is
-       Curs : Cursor := Current;
-       C    : List (Container.Capacity) := Copy (Container, Container.Capacity);
-       Node : Count_Type;
- 
-    begin
-       if Curs = No_Element then
-          return C;
- 
-       elsif not Has_Element (Container, Curs) then
-          raise Constraint_Error;
- 
-       else
-          while Curs.Node /= 0 loop
-             Node := Curs.Node;
-             Delete (C, Curs);
-             Curs := Next (Container, (Node => Node));
-          end loop;
- 
-          return C;
-       end if;
-    end First_To_Previous;
- 
-    ----------
-    -- 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
- 
-       ---------------
-       -- 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
-             return;
-          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;
- 
-          procedure Partition (Pivot, Back : Count_Type);
-          procedure Sort (Front, Back : Count_Type);
- 
-          ---------------
-          -- Partition --
-          ---------------
- 
-          procedure Partition (Pivot, Back : Count_Type) is
-             Node : Count_Type;
- 
-          begin
-             Node := N (Pivot).Next;
-             while Node /= Back loop
-                if N (Node).Element < N (Pivot).Element then
-                   declare
-                      Prev : constant Count_Type := N (Node).Prev;
-                      Next : constant Count_Type := N (Node).Next;
- 
-                   begin
-                      N (Prev).Next := Next;
- 
-                      if Next = 0 then
-                         Container.Last := Prev;
-                      else
-                         N (Next).Prev := Prev;
-                      end if;
- 
-                      N (Node).Next := Pivot;
-                      N (Node).Prev := N (Pivot).Prev;
- 
-                      N (Pivot).Prev := Node;
- 
-                      if N (Node).Prev = 0 then
-                         Container.First := Node;
-                      else
-                         N (N (Node).Prev).Next := Node;
-                      end if;
- 
-                      Node := Next;
-                   end;
- 
-                else
-                   Node := N (Node).Next;
-                end if;
-             end loop;
-          end Partition;
- 
-          ----------
-          -- Sort --
-          ----------
- 
-          procedure Sort (Front, Back : Count_Type) is
-             Pivot : Count_Type;
- 
-          begin
-             if Front = 0 then
-                Pivot := Container.First;
-             else
-                Pivot := N (Front).Next;
-             end if;
- 
-             if Pivot /= Back then
-                Partition (Pivot, Back);
-                Sort (Front, Pivot);
-                Sort (Pivot, Back);
-             end if;
-          end Sort;
- 
-       --  Start of processing for Sort
- 
-       begin
-          if Container.Length <= 1 then
-             return;
-          end if;
- 
-          pragma Assert (N (Container.First).Prev = 0);
-          pragma Assert (N (Container.Last).Next = 0);
- 
-          Sort (Front => 0, Back => 0);
- 
-          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 := 1)
-    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;
-       Count     : Count_Type := 1)
-    is
-       Position : Cursor;
-    begin
-       Insert (Container, Before, New_Item, Position, Count);
-    end Insert;
- 
-    procedure Insert
-      (Container : in out List;
-       Before    : Cursor;
-       Position  : out Cursor;
-       Count     : Count_Type := 1)
-    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_Node => J);
-       Insert_Internal (Container, Before.Node, New_Node => J);
-       Position := (Node => J);
- 
-       for Index in 2 .. Count loop
-          Allocate (Container, New_Node => J);
-          Insert_Internal (Container, Before.Node, New_Node => J);
-       end loop;
-    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;
-       Count     : Count_Type := 1)
-    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;
- 
-    ---------------------
-    -- 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, R : Count_Type);
- 
-       ----------
-       -- Swap --
-       ----------
- 
-       procedure Swap (L, 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.First;
-       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 Before.Node /= 0 then
-          pragma Assert (Vet (Target, Before), "bad cursor in Splice");
-       end if;
- 
-       if Target'Address = Source'Address
-         or else Source.Length = 0
-       then
-          return;
-       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
-          Splice (Target, Before, Position);
-          return;
-       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;
- 
-    ------------------
-    -- Strict_Equal --
-    ------------------
- 
-    function Strict_Equal (Left, Right : List) return Boolean is
-       CL : Count_Type := Left.First;
-       CR : Count_Type := Right.First;
- 
-    begin
-       while CL /= 0 or CR /= 0 loop
-          if CL /= CR or else
-            Left.Nodes (CL).Element /= Right.Nodes (CL).Element
-          then
-             return False;
-          end if;
- 
-          CL := Left.Nodes (CL).Next;
-          CR := Right.Nodes (CR).Next;
-       end loop;
- 
-       return True;
-    end Strict_Equal;
- 
-    ----------
-    -- Swap --
-    ----------
- 
-    procedure Swap
-      (Container : in out List;
-       I, 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, J      : Cursor)
-    is
-       I_Next, 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-7.3.0/gcc/ada/a-cfdlli.ads gcc-8.1.0/gcc/ada/a-cfdlli.ads
*** gcc-7.3.0/gcc/ada/a-cfdlli.ads	Wed Apr 20 10:43:03 2016
--- gcc-8.1.0/gcc/ada/a-cfdlli.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,372 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                 ADA.CONTAINERS.FORMAL_DOUBLY_LINKED_LISTS                --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, 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/>.                                          --
- ------------------------------------------------------------------------------
- 
- --  This spec is derived from Ada.Containers.Bounded_Doubly_Linked_Lists 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: Next, Previous, Query_Element, Has_Element,
- --    Iterate, Reverse_Iterate, Element. 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.
- 
- --    There are three new functions:
- 
- --      function Strict_Equal (Left, Right : List) return Boolean;
- --      function First_To_Previous  (Container : List; Current : Cursor)
- --         return List;
- --      function Current_To_Last (Container : List; Current : Cursor)
- --         return List;
- 
- --    See subprogram specifications that follow for details
- 
- generic
-    type Element_Type is private;
- 
-    with function "=" (Left, Right : Element_Type)
-                       return Boolean is <>;
- 
- package Ada.Containers.Formal_Doubly_Linked_Lists with
-   Pure,
-   SPARK_Mode
- is
-    pragma Annotate (GNATprove, External_Axiomatization);
-    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 private;
-    pragma Preelaborable_Initialization (Cursor);
- 
-    Empty_List : constant List;
- 
-    No_Element : constant Cursor;
- 
-    function "=" (Left, Right : List) return Boolean with
-      Global => null;
- 
-    function Length (Container : List) return Count_Type with
-      Global => null;
- 
-    function Is_Empty (Container : List) return Boolean with
-      Global => null;
- 
-    procedure Clear (Container : in out List) with
-      Global => null;
- 
-    procedure Assign (Target : in out List; Source : List) with
-      Global => null,
-      Pre    => Target.Capacity >= Length (Source);
- 
-    function Copy (Source : List; Capacity : Count_Type := 0) return List with
-      Global => null,
-      Pre    => Capacity = 0 or else Capacity >= Source.Capacity;
- 
-    function Element
-      (Container : List;
-       Position : Cursor) return Element_Type
-    with
-      Global => null,
-      Pre    => Has_Element (Container, Position);
- 
-    procedure Replace_Element
-      (Container : in out List;
-       Position  : Cursor;
-       New_Item  : Element_Type)
-    with
-      Global => null,
-      Pre    => Has_Element (Container, Position);
- 
-    procedure Move (Target : in out List; Source : in out List) with
-      Global => null,
-      Pre    => Target.Capacity >= Length (Source);
- 
-    procedure Insert
-      (Container : in out List;
-       Before    : Cursor;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1)
-    with
-      Global => null,
-      Pre    => Length (Container) + Count <= Container.Capacity
-                  and then (Has_Element (Container, Before)
-                             or else Before = No_Element);
- 
-    procedure Insert
-      (Container : in out List;
-       Before    : Cursor;
-       New_Item  : Element_Type;
-       Position  : out Cursor;
-       Count     : Count_Type := 1)
-    with
-      Global => null,
-      Pre    => Length (Container) + Count <= Container.Capacity
-                  and then (Has_Element (Container, Before)
-                             or else Before = No_Element);
- 
-    procedure Insert
-      (Container : in out List;
-       Before    : Cursor;
-       Position  : out Cursor;
-       Count     : Count_Type := 1)
-    with
-      Global => null,
-      Pre    => Length (Container) + Count <= Container.Capacity
-                  and then (Has_Element (Container, Before)
-                             or else Before = No_Element);
- 
-    procedure Prepend
-      (Container : in out List;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1)
-    with
-      Global => null,
-      Pre    => Length (Container) + Count <= Container.Capacity;
- 
-    procedure Append
-      (Container : in out List;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1)
-    with
-      Global => null,
-      Pre    => Length (Container) + Count <= Container.Capacity;
- 
-    procedure Delete
-      (Container : in out List;
-       Position  : in out Cursor;
-       Count     : Count_Type := 1)
-    with
-      Global => null,
-      Pre    => Has_Element (Container, Position);
- 
-    procedure Delete_First
-      (Container : in out List;
-       Count     : Count_Type := 1)
-    with
-      Global => null;
- 
-    procedure Delete_Last
-      (Container : in out List;
-       Count     : Count_Type := 1)
-    with
-      Global => null;
- 
-    procedure Reverse_Elements (Container : in out List) with
-      Global => null;
- 
-    procedure Swap
-      (Container : in out List;
-       I, J      : Cursor)
-    with
-      Global => null,
-      Pre    => Has_Element (Container, I) and then Has_Element (Container, J);
- 
-    procedure Swap_Links
-      (Container : in out List;
-       I, J      : Cursor)
-    with
-      Global => null,
-      Pre    => Has_Element (Container, I) and then Has_Element (Container, J);
- 
-    procedure Splice
-      (Target : in out List;
-       Before : Cursor;
-       Source : in out List)
-    with
-      Global => null,
-      Pre    => Length (Source) + Length (Target) <= Target.Capacity
-                  and then (Has_Element (Target, Before)
-                             or else Before = No_Element);
- 
-    procedure Splice
-      (Target   : in out List;
-       Before   : Cursor;
-       Source   : in out List;
-       Position : in out Cursor)
-    with
-      Global => null,
-      Pre    => Length (Source) + Length (Target) <= Target.Capacity
-                  and then (Has_Element (Target, Before)
-                             or else Before = No_Element)
-                  and then Has_Element (Source, Position);
- 
-    procedure Splice
-      (Container : in out List;
-       Before    : Cursor;
-       Position  : Cursor)
-    with
-      Global => null,
-      Pre    => 2 * Length (Container) <= Container.Capacity
-                  and then (Has_Element (Container, Before)
-                             or else Before = No_Element)
-                  and then Has_Element (Container, Position);
- 
-    function First (Container : List) return Cursor with
-      Global => null;
- 
-    function First_Element (Container : List) return Element_Type with
-      Global => null,
-      Pre    => not Is_Empty (Container);
- 
-    function Last (Container : List) return Cursor with
-      Global => null;
- 
-    function Last_Element (Container : List) return Element_Type with
-      Global => null,
-      Pre    => not Is_Empty (Container);
- 
-    function Next (Container : List; Position : Cursor) return Cursor with
-      Global => null,
-      Pre    => Has_Element (Container, Position) or else Position = No_Element;
- 
-    procedure Next (Container : List; Position : in out Cursor) with
-      Global => null,
-      Pre    => Has_Element (Container, Position) or else Position = No_Element;
- 
-    function Previous (Container : List; Position : Cursor) return Cursor with
-      Global => null,
-      Pre    => Has_Element (Container, Position) or else Position = No_Element;
- 
-    procedure Previous (Container : List; Position : in out Cursor) with
-      Global => null,
-      Pre    => Has_Element (Container, Position) or else Position = No_Element;
- 
-    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;
- 
-    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;
- 
-    function Contains
-      (Container : List;
-       Item      : Element_Type) return Boolean
-    with
-      Global => null;
- 
-    function Has_Element (Container : List; Position : Cursor) return Boolean
-    with
-      Global => null;
- 
-    generic
-       with function "<" (Left, Right : Element_Type) return Boolean is <>;
-    package Generic_Sorting with SPARK_Mode is
- 
-       function Is_Sorted (Container : List) return Boolean with
-         Global => null;
- 
-       procedure Sort (Container : in out List) with
-         Global => null;
- 
-       procedure Merge (Target, Source : in out List) with
-         Global => null;
- 
-    end Generic_Sorting;
- 
-    function Strict_Equal (Left, Right : List) return Boolean with
-      Ghost,
-      Global => null;
-    --  Strict_Equal returns True if the containers are physically equal, i.e.
-    --  they are structurally equal (function "=" returns True) and that they
-    --  have the same set of cursors.
- 
-    function First_To_Previous (Container : List; Current : Cursor) return List
-    with
-      Ghost,
-      Global => null,
-      Pre    => Has_Element (Container, Current) or else Current = No_Element;
- 
-    function Current_To_Last (Container : List; Current : Cursor) return List
-    with
-      Ghost,
-      Global => null,
-      Pre    => Has_Element (Container, Current) or else Current = No_Element;
-    --  First_To_Previous returns a container containing all elements preceding
-    --  Current (excluded) in Container. Current_To_Last returns a container
-    --  containing all elements following Current (included) in Container.
-    --  These two new functions can be used to express invariant properties in
-    --  loops which iterate over containers. First_To_Previous returns the part
-    --  of the container already scanned and Current_To_Last the part not
-    --  scanned yet.
- 
- private
-    pragma SPARK_Mode (Off);
- 
-    type Node_Type is record
-       Prev    : Count_Type'Base := -1;
-       Next    : Count_Type;
-       Element : 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) := (others => <>);
-    end record;
- 
-    type Cursor is record
-       Node : Count_Type := 0;
-    end record;
- 
-    Empty_List : constant List := (0, others => <>);
- 
-    No_Element : constant Cursor := (Node => 0);
- 
- end Ada.Containers.Formal_Doubly_Linked_Lists;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cfhama.adb gcc-8.1.0/gcc/ada/a-cfhama.adb
*** gcc-7.3.0/gcc/ada/a-cfhama.adb	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-cfhama.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,942 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         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-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 := Left.First.Node;
-          while Node /= 0 loop
-             ENode := Find (Container => Right,
-                            Key       => Left.Nodes (Node).Key).Node;
- 
-             if ENode = 0 or else
-               Right.Nodes (ENode).Element /= Left.Nodes (Node).Element
-             then
-                return False;
-             end if;
- 
-             Node := HT_Ops.Next (Left, 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.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);
-    end Assign;
- 
-    --------------
-    -- Capacity --
-    --------------
- 
-    function Capacity (Container : Map) return Count_Type is
-    begin
-       return Container.Nodes'Length;
-    end Capacity;
- 
-    -----------
-    -- Clear --
-    -----------
- 
-    procedure Clear (Container : in out Map) is
-    begin
-       HT_Ops.Clear (Container);
-    end Clear;
- 
-    --------------
-    -- 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);
-       H      : Hash_Type;
-       N      : Count_Type;
-       Target : Map (C, Source.Modulus);
-       Cu     : Cursor;
- 
-    begin
-       if 0 < Capacity and then Capacity < Source.Capacity then
-          raise Capacity_Error;
-       end if;
- 
-       Target.Length := Source.Length;
-       Target.Free := Source.Free;
- 
-       H := 1;
-       while H <= Source.Modulus loop
-          Target.Buckets (H) := Source.Buckets (H);
-          H := H + 1;
-       end loop;
- 
-       N := 1;
-       while N <= Source.Capacity loop
-          Target.Nodes (N) := Source.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;
- 
-    ---------------------
-    -- Current_To_Last --
-    ---------------------
- 
-    function Current_To_Last (Container : Map; Current : Cursor) return Map is
-       Curs : Cursor := First (Container);
-       C    : Map (Container.Capacity, Container.Modulus) :=
-                Copy (Container, Container.Capacity);
-       Node : Count_Type;
- 
-    begin
-       if Curs = No_Element then
-          Clear (C);
-          return C;
- 
-       elsif Current /= No_Element and not Has_Element (Container, Current) then
-          raise Constraint_Error;
- 
-       else
-          while Curs.Node /= Current.Node loop
-             Node := Curs.Node;
-             Delete (C, Curs);
-             Curs := Next (Container, (Node => Node));
-          end loop;
- 
-          return C;
-       end if;
-    end Current_To_Last;
- 
-    ---------------------
-    -- 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, 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, Position.Node);
- 
-       Free (Container, Position.Node);
-    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.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.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;
- 
-    function Equivalent_Keys
-      (Left   : Map;
-       CLeft  : Cursor;
-       Right  : Map;
-       CRight : Cursor) return Boolean
-    is
-    begin
-       if not Has_Element (Left, CLeft) then
-          raise Constraint_Error with
-            "Left cursor of Equivalent_Keys has no element";
-       end if;
- 
-       if not Has_Element (Right, CRight) then
-          raise Constraint_Error with
-            "Right cursor of Equivalent_Keys has no element";
-       end if;
- 
-       pragma Assert (Vet (Left, CLeft),
-                      "Left cursor of Equivalent_Keys is bad");
-       pragma Assert (Vet (Right, CRight),
-                      "Right cursor of Equivalent_Keys is bad");
- 
-       declare
-          LN : Node_Type renames Left.Nodes (CLeft.Node);
-          RN : Node_Type renames Right.Nodes (CRight.Node);
-       begin
-          return Equivalent_Keys (LN.Key, RN.Key);
-       end;
-    end Equivalent_Keys;
- 
-    function Equivalent_Keys
-      (Left  : Map;
-       CLeft : Cursor;
-       Right : Key_Type) return Boolean
-    is
-    begin
-       if not Has_Element (Left, CLeft) then
-          raise Constraint_Error with
-            "Left cursor of Equivalent_Keys has no element";
-       end if;
- 
-       pragma Assert (Vet (Left, CLeft),
-                      "Left cursor in Equivalent_Keys is bad");
- 
-       declare
-          LN : Node_Type renames Left.Nodes (CLeft.Node);
-       begin
-          return Equivalent_Keys (LN.Key, Right);
-       end;
-    end Equivalent_Keys;
- 
-    function Equivalent_Keys
-      (Left   : Key_Type;
-       Right  : Map;
-       CRight : Cursor) return Boolean
-    is
-    begin
-       if Has_Element (Right, CRight) then
-          raise Constraint_Error with
-            "Right cursor of Equivalent_Keys has no element";
-       end if;
- 
-       pragma Assert (Vet (Right, CRight),
-                      "Right cursor of Equivalent_Keys is bad");
- 
-       declare
-          RN : Node_Type renames Right.Nodes (CRight.Node);
- 
-       begin
-          return Equivalent_Keys (Left, RN.Key);
-       end;
-    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, 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, 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);
- 
-    begin
-       if Node = 0 then
-          return No_Element;
-       end if;
- 
-       return (Node => Node);
-    end First;
- 
-    -----------------------
-    -- First_To_Previous --
-    -----------------------
- 
-    function First_To_Previous
-      (Container : Map;
-       Current : Cursor) return Map is
-       Curs : Cursor;
-       C    : Map (Container.Capacity, Container.Modulus) :=
-                Copy (Container, Container.Capacity);
-       Node : Count_Type;
- 
-    begin
-       Curs := Current;
- 
-       if Curs = No_Element then
-          return C;
- 
-       elsif not Has_Element (Container, Curs) then
-          raise Constraint_Error;
- 
-       else
-          while Curs.Node /= 0 loop
-             Node := Curs.Node;
-             Delete (C, Curs);
-             Curs := Next (Container, (Node => Node));
-          end loop;
- 
-          return C;
-       end if;
-    end First_To_Previous;
- 
-    ----------
-    -- Free --
-    ----------
- 
-    procedure Free (HT : in out Map; X : Count_Type) is
-    begin
-       HT.Nodes (X).Has_Element := False;
-       HT_Ops.Free (HT, X);
-    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, Node);
-       HT.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.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.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, Key, Position.Node, Inserted);
-    end Insert;
- 
-    procedure Insert
-      (Container : in out Map;
-       Key       : Key_Type;
-       New_Item  : Element_Type)
-    is
-       Position : Cursor;
-       pragma Unreferenced (Position);
- 
-       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.Nodes (Position.Node).Key;
-    end Key;
- 
-    ------------
-    -- Length --
-    ------------
- 
-    function Length (Container : Map) return Count_Type is
-    begin
-       return Container.Length;
-    end Length;
- 
-    ----------
-    -- Move --
-    ----------
- 
-    procedure Move
-      (Target : in out Map;
-       Source : in out Map)
-    is
-       NN   : HT_Types.Nodes_Type renames Source.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.Length = 0 then
-          return;
-       end if;
- 
-       X := HT_Ops.First (Source);
-       while X /= 0 loop
-          Insert (Target, NN (X).Key, NN (X).Element);  -- optimize???
- 
-          Y := HT_Ops.Next (Source, X);
- 
-          HT_Ops.Delete_Node_Sans_Free (Source, 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, 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;
- 
-    -------------
-    -- Overlap --
-    -------------
- 
-    function Overlap (Left, Right : Map) return Boolean is
-       Left_Node  : Count_Type;
-       Left_Nodes : Nodes_Type renames Left.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 : Key_Type renames N.Key;
-          begin
-             if Find (Right, E).Node /= 0 then
-                return True;
-             end if;
-          end;
- 
-          Left_Node := HT_Ops.Next (Left, Left_Node);
-       end loop;
- 
-       return False;
-    end Overlap;
- 
-    -------------
-    -- Replace --
-    -------------
- 
-    procedure Replace
-      (Container : in out Map;
-       Key       : Key_Type;
-       New_Item  : Element_Type)
-    is
-       Node : constant Count_Type := Key_Ops.Find (Container, 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.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.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;
- 
-    ------------------
-    -- Strict_Equal --
-    ------------------
- 
-    function Strict_Equal (Left, Right : Map) return Boolean is
-       CuL : Cursor := First (Left);
-       CuR : Cursor := First (Right);
- 
-    begin
-       if Length (Left) /= Length (Right) then
-          return False;
-       end if;
- 
-       while CuL.Node /= 0 or else CuR.Node /= 0 loop
-          if CuL.Node /= CuR.Node
-            or else
-              Left.Nodes (CuL.Node).Element /= Right.Nodes (CuR.Node).Element
-            or else Left.Nodes (CuL.Node).Key /= Right.Nodes (CuR.Node).Key
-          then
-             return False;
-          end if;
- 
-          CuL := Next (Left, CuL);
-          CuR := Next (Right, CuR);
-       end loop;
- 
-       return True;
-    end Strict_Equal;
- 
-    ---------
-    -- 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.Length = 0 then
-             return False;
-          end if;
- 
-          if Container.Capacity = 0 then
-             return False;
-          end if;
- 
-          if Container.Buckets'Length = 0 then
-             return False;
-          end if;
- 
-          if Position.Node > Container.Capacity then
-             return False;
-          end if;
- 
-          if Container.Nodes (Position.Node).Next = Position.Node then
-             return False;
-          end if;
- 
-          X := Container.Buckets
-            (Key_Ops.Index (Container, Container.Nodes (Position.Node).Key));
- 
-          for J in 1 .. Container.Length loop
-             if X = Position.Node then
-                return True;
-             end if;
- 
-             if X = 0 then
-                return False;
-             end if;
- 
-             if X = Container.Nodes (X).Next then
- 
-                --  Prevent unnecessary looping
- 
-                return False;
-             end if;
- 
-             X := Container.Nodes (X).Next;
-          end loop;
- 
-          return False;
-       end;
-    end Vet;
- 
- end Ada.Containers.Formal_Hashed_Maps;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cfhama.ads gcc-8.1.0/gcc/ada/a-cfhama.ads
*** gcc-7.3.0/gcc/ada/a-cfhama.ads	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-cfhama.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,313 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         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     --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, 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/>.                                          --
- ------------------------------------------------------------------------------
- 
- --  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.
- 
- --    There are four new functions:
- 
- --      function Strict_Equal (Left, Right : Map) return Boolean;
- --      function Overlap (Left, Right : Map) return Boolean;
- --      function First_To_Previous (Container : Map; Current : Cursor)
- --         return Map;
- --      function Current_To_Last (Container : Map; Current : Cursor)
- --         return Map;
- 
- --    See detailed specifications for these subprograms
- 
- 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, Right : Key_Type) return Boolean;
-    with function "=" (Left, Right : Element_Type) return Boolean is <>;
- 
- package Ada.Containers.Formal_Hashed_Maps with
-   Pure,
-   SPARK_Mode
- is
-    pragma Annotate (GNATprove, External_Axiomatization);
-    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     => Element),
-      Default_Initial_Condition => Is_Empty (Map);
-    pragma Preelaborable_Initialization (Map);
- 
-    type Cursor is private;
-    pragma Preelaborable_Initialization (Cursor);
- 
-    Empty_Map : constant Map;
- 
-    No_Element : constant Cursor;
- 
-    function "=" (Left, Right : Map) return Boolean with
-      Global => null;
- 
-    function Capacity (Container : Map) return Count_Type with
-      Global => null;
- 
-    procedure Reserve_Capacity
-      (Container : in out Map;
-       Capacity  : Count_Type)
-    with
-      Global => null,
-      Pre    => Capacity <= Container.Capacity;
- 
-    function Length (Container : Map) return Count_Type with
-      Global => null;
- 
-    function Is_Empty (Container : Map) return Boolean with
-      Global => null;
- 
-    procedure Clear (Container : in out Map) with
-      Global => null;
- 
-    procedure Assign (Target : in out Map; Source : Map) with
-      Global => null,
-      Pre    => Target.Capacity >= Length (Source);
- 
-    function Copy
-      (Source   : Map;
-       Capacity : Count_Type := 0) return Map
-    with
-      Global => null,
-      Pre    => Capacity = 0 or else Capacity >= Source.Capacity;
-    --  Copy returns a container stricty equal to Source. It must have
-    --  the same cursors associated with each element. Therefore:
-    --  - capacity=0 means use container.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);
- 
-    function Element
-      (Container : Map;
-       Position  : Cursor) return Element_Type
-    with
-      Global => null,
-      Pre    => Has_Element (Container, Position);
- 
-    procedure Replace_Element
-      (Container : in out Map;
-       Position  : Cursor;
-       New_Item  : Element_Type)
-    with
-      Global => null,
-      Pre    => Has_Element (Container, Position);
- 
-    procedure Move (Target : in out Map; Source : in out Map) with
-      Global => null,
-      Pre    => Target.Capacity >= Length (Source);
- 
-    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;
- 
-    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));
- 
-    procedure Include
-      (Container : in out Map;
-       Key       : Key_Type;
-       New_Item  : Element_Type)
-    with
-      Global => null,
-      Pre    => Length (Container) < Container.Capacity;
- 
-    procedure Replace
-      (Container : in out Map;
-       Key       : Key_Type;
-       New_Item  : Element_Type)
-    with
-      Global => null,
-      Pre    => Contains (Container, Key);
- 
-    procedure Exclude (Container : in out Map; Key : Key_Type) with
-      Global => null;
- 
-    procedure Delete (Container : in out Map; Key : Key_Type) with
-      Global => null,
-      Pre    => Contains (Container, Key);
- 
-    procedure Delete (Container : in out Map; Position : in out Cursor) with
-      Global => null,
-      Pre    => Has_Element (Container, Position);
- 
-    function First (Container : Map) return Cursor with
-      Global => null;
- 
-    function Next (Container : Map; Position : Cursor) return Cursor with
-      Global => null,
-      Pre    => Has_Element (Container, Position) or else Position = No_Element;
- 
-    procedure Next (Container : Map; Position : in out Cursor) with
-      Global => null,
-      Pre    => Has_Element (Container, Position) or else Position = No_Element;
- 
-    function Find (Container : Map; Key : Key_Type) return Cursor with
-      Global => null;
- 
-    function Contains (Container : Map; Key : Key_Type) return Boolean with
-      Global => null;
- 
-    function Element (Container : Map; Key : Key_Type) return Element_Type with
-      Global => null,
-      Pre    => Contains (Container, Key);
- 
-    function Has_Element (Container : Map; Position : Cursor) return Boolean
-    with
-      Global => null;
- 
-    function Equivalent_Keys
-      (Left   : Map;
-       CLeft  : Cursor;
-       Right  : Map;
-       CRight : Cursor) return Boolean
-    with
-      Global => null;
- 
-    function Equivalent_Keys
-      (Left  : Map;
-       CLeft : Cursor;
-       Right : Key_Type) return Boolean
-    with
-      Global => null;
- 
-    function Equivalent_Keys
-      (Left   : Key_Type;
-       Right  : Map;
-       CRight : Cursor) return Boolean
-    with
-      Global => null;
- 
-    function Default_Modulus (Capacity : Count_Type) return Hash_Type with
-      Global => null;
- 
-    function Strict_Equal (Left, Right : Map) return Boolean with
-      Ghost,
-      Global => null;
-    --  Strict_Equal returns True if the containers are physically equal, i.e.
-    --  they are structurally equal (function "=" returns True) and that they
-    --  have the same set of cursors.
- 
-    function First_To_Previous (Container : Map; Current : Cursor) return Map
-    with
-      Ghost,
-      Global => null,
-      Pre    => Has_Element (Container, Current) or else Current = No_Element;
- 
-    function Current_To_Last (Container : Map; Current : Cursor) return Map
-    with
-      Ghost,
-      Global => null,
-      Pre    => Has_Element (Container, Current) or else Current = No_Element;
-    --  First_To_Previous returns a container containing all elements preceding
-    --  Current (excluded) in Container. Current_To_Last returns a container
-    --  containing all elements following Current (included) in Container.
-    --  These two new functions can be used to express invariant properties in
-    --  loops which iterate over containers. First_To_Previous returns the part
-    --  of the container already scanned and Current_To_Last the part not
-    --  scanned yet.
- 
-    function Overlap (Left, Right : Map) return Boolean with
-      Global => null;
-    --  Overlap returns True if the containers have common keys
- 
- 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     : 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
-      new HT_Types.Hash_Table_Type (Capacity, Modulus) with null record;
- 
-    use HT_Types;
- 
-    type Cursor is record
-       Node : Count_Type;
-    end record;
- 
-    Empty_Map : constant Map := (Capacity => 0, Modulus => 0, others => <>);
- 
-    No_Element : constant Cursor := (Node => 0);
- 
- end Ada.Containers.Formal_Hashed_Maps;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cfhase.adb gcc-8.1.0/gcc/ada/a-cfhase.adb
*** gcc-7.3.0/gcc/ada/a-cfhase.adb	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-cfhase.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,1545 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         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-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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, 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.Nodes (Node).Element).Node;
-             if ENode = 0 or else
-               Right.Nodes (ENode).Element /= Left.Nodes (Node).Element
-             then
-                return False;
-             end if;
- 
-             Node := HT_Ops.Next (Left, 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.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);
-       Insert_Elements (Source);
-    end Assign;
- 
-    --------------
-    -- Capacity --
-    --------------
- 
-    function Capacity (Container : Set) return Count_Type is
-    begin
-       return Container.Nodes'Length;
-    end Capacity;
- 
-    -----------
-    -- Clear --
-    -----------
- 
-    procedure Clear (Container : in out Set) is
-    begin
-       HT_Ops.Clear (Container);
-    end Clear;
- 
-    --------------
-    -- 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);
-       H      : Hash_Type;
-       N      : Count_Type;
-       Target : Set (C, Source.Modulus);
-       Cu     : Cursor;
- 
-    begin
-       if 0 < Capacity and then Capacity < Source.Capacity then
-          raise Capacity_Error;
-       end if;
- 
-       Target.Length := Source.Length;
-       Target.Free := Source.Free;
- 
-       H := 1;
-       while H <= Source.Modulus loop
-          Target.Buckets (H) := Source.Buckets (H);
-          H := H + 1;
-       end loop;
- 
-       N := 1;
-       while N <= Source.Capacity loop
-          Target.Nodes (N) := Source.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;
- 
-    ---------------------
-    -- Current_To_Last --
-    ---------------------
- 
-    function Current_To_Last (Container : Set; Current : Cursor) return Set is
-       Curs : Cursor := First (Container);
-       C    : Set (Container.Capacity, Container.Modulus) :=
-                Copy (Container, Container.Capacity);
-       Node : Count_Type;
- 
-    begin
-       if Curs = No_Element then
-          Clear (C);
-          return C;
- 
-       elsif Current /= No_Element and not Has_Element (Container, Current) then
-          raise Constraint_Error;
- 
-       else
-          while Curs.Node /= Current.Node loop
-             Node := Curs.Node;
-             Delete (C, Curs);
-             Curs := Next (Container, (Node => Node));
-          end loop;
- 
-          return C;
-       end if;
-    end Current_To_Last;
- 
-    ---------------------
-    -- 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, 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, Position.Node);
-       Free (Container, Position.Node);
- 
-       Position := No_Element;
-    end Delete;
- 
-    ----------------
-    -- Difference --
-    ----------------
- 
-    procedure Difference
-      (Target : in out Set;
-       Source : Set)
-    is
-       Tgt_Node, Src_Node, Src_Last, Src_Length : Count_Type;
- 
-       TN : Nodes_Type renames Target.Nodes;
-       SN : Nodes_Type renames Source.Nodes;
- 
-    begin
-       if Target'Address = Source'Address then
-          Clear (Target);
-          return;
-       end if;
- 
-       Src_Length := Source.Length;
- 
-       if Src_Length = 0 then
-          return;
-       end if;
- 
-       if Src_Length >= Target.Length then
-          Tgt_Node := HT_Ops.First (Target);
-          while Tgt_Node /= 0 loop
-             if Element_Keys.Find (Source, TN (Tgt_Node).Element) /= 0 then
-                declare
-                   X : constant Count_Type := Tgt_Node;
-                begin
-                   Tgt_Node := HT_Ops.Next (Target, Tgt_Node);
-                   HT_Ops.Delete_Node_Sans_Free (Target, X);
-                   Free (Target, X);
-                end;
- 
-             else
-                Tgt_Node := HT_Ops.Next (Target, Tgt_Node);
-             end if;
-          end loop;
- 
-          return;
-       else
-          Src_Node := HT_Ops.First (Source);
-          Src_Last := 0;
-       end if;
- 
-       while Src_Node /= Src_Last loop
-          Tgt_Node := Element_Keys.Find (Target, SN (Src_Node).Element);
- 
-          if Tgt_Node /= 0 then
-             HT_Ops.Delete_Node_Sans_Free (Target, Tgt_Node);
-             Free (Target, Tgt_Node);
-          end if;
- 
-          Src_Node := HT_Ops.Next (Source, Src_Node);
-       end loop;
-    end Difference;
- 
-    procedure Difference
-      (Left, 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.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 Difference
- 
-    begin
-       Iterate (Left);
-    end Difference;
- 
-    function Difference (Left, 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 Left.Copy;
-       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.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, Right);
-    end Equivalent_Sets;
- 
-    -------------------------
-    -- Equivalent_Elements --
-    -------------------------
- 
-    function Equivalent_Elements
-      (Left  : Set;
-       CLeft : Cursor;
-       Right  : Set;
-       CRight : Cursor) return Boolean
-    is
-    begin
-       if not Has_Element (Left, CLeft) then
-          raise Constraint_Error with
-            "Left cursor of Equivalent_Elements has no element";
-       end if;
- 
-       if not Has_Element (Right, CRight) then
-          raise Constraint_Error with
-            "Right cursor of Equivalent_Elements has no element";
-       end if;
- 
-       pragma Assert (Vet (Left, CLeft),
-                      "bad Left cursor in Equivalent_Elements");
-       pragma Assert (Vet (Right, CRight),
-                      "bad Right cursor in Equivalent_Elements");
- 
-       declare
-          LN : Node_Type renames Left.Nodes (CLeft.Node);
-          RN : Node_Type renames Right.Nodes (CRight.Node);
-       begin
-          return Equivalent_Elements (LN.Element, RN.Element);
-       end;
-    end Equivalent_Elements;
- 
-    function Equivalent_Elements
-      (Left  : Set;
-       CLeft : Cursor;
-       Right : Element_Type) return Boolean
-    is
-    begin
-       if not Has_Element (Left, CLeft) then
-          raise Constraint_Error with
-            "Left cursor of Equivalent_Elements has no element";
-       end if;
- 
-       pragma Assert (Vet (Left, CLeft),
-                      "Left cursor in Equivalent_Elements is bad");
- 
-       declare
-          LN : Node_Type renames Left.Nodes (CLeft.Node);
-       begin
-          return Equivalent_Elements (LN.Element, Right);
-       end;
-    end Equivalent_Elements;
- 
-    function Equivalent_Elements
-      (Left   : Element_Type;
-       Right  : Set;
-       CRight : Cursor) return Boolean
-    is
-    begin
-       if not Has_Element (Right, CRight) then
-          raise Constraint_Error with
-            "Right cursor of Equivalent_Elements has no element";
-       end if;
- 
-       pragma Assert
-         (Vet (Right, CRight),
-          "Right cursor of Equivalent_Elements is bad");
- 
-       declare
-          RN : Node_Type renames Right.Nodes (CRight.Node);
-       begin
-          return Equivalent_Elements (Left, RN.Element);
-       end;
-    end Equivalent_Elements;
- 
-    ---------------------
-    -- 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, 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, 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);
- 
-    begin
-       if Node = 0 then
-          return No_Element;
-       end if;
- 
-       return (Node => Node);
-    end First;
- 
-    -----------------------
-    -- First_To_Previous --
-    -----------------------
- 
-    function First_To_Previous
-      (Container : Set;
-       Current   : Cursor) return Set
-    is
-       Curs : Cursor := Current;
-       C    : Set (Container.Capacity, Container.Modulus) :=
-                Copy (Container, Container.Capacity);
-       Node : Count_Type;
- 
-    begin
-       if Curs = No_Element then
-          return C;
- 
-       elsif not Has_Element (Container, Curs) then
-          raise Constraint_Error;
- 
-       else
-          while Curs.Node /= 0 loop
-             Node := Curs.Node;
-             Delete (C, Curs);
-             Curs := Next (Container, (Node => Node));
-          end loop;
- 
-          return C;
-       end if;
-    end First_To_Previous;
- 
-    ----------
-    -- Free --
-    ----------
- 
-    procedure Free
-      (HT : in out Set;
-       X  : Count_Type)
-    is
-    begin
-       HT.Nodes (X).Has_Element := False;
-       HT_Ops.Free (HT, X);
-    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, Node);
-       HT.Nodes (Node).Has_Element := True;
-    end Generic_Allocate;
- 
-    -----------------
-    -- Has_Element --
-    -----------------
- 
-    function Has_Element (Container : Set; Position : Cursor) return Boolean is
-    begin
-       if Position.Node = 0
-         or else not Container.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
-       Position : Cursor;
-       Inserted : Boolean;
- 
-    begin
-       Insert (Container, New_Item, Position, Inserted);
- 
-       if not Inserted then
-          Container.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
-       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;
- 
-    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, 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.Nodes;
- 
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       if Source.Length = 0 then
-          Clear (Target);
-          return;
-       end if;
- 
-       Tgt_Node := HT_Ops.First (Target);
-       while Tgt_Node /= 0 loop
-          if Find (Source, TN (Tgt_Node).Element).Node /= 0 then
-             Tgt_Node := HT_Ops.Next (Target, Tgt_Node);
- 
-          else
-             declare
-                X : constant Count_Type := Tgt_Node;
-             begin
-                Tgt_Node := HT_Ops.Next (Target, Tgt_Node);
-                HT_Ops.Delete_Node_Sans_Free (Target, 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.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);
-    end Intersection;
- 
-    function Intersection (Left, Right : Set) return Set is
-       C : Count_Type;
-       H : Hash_Type;
- 
-    begin
-       if Left'Address = Right'Address then
-          return Left.Copy;
-       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, 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.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, Subset_Node);
-       end loop;
- 
-       return True;
-    end Is_Subset;
- 
-    ------------
-    -- Length --
-    ------------
- 
-    function Length (Container : Set) return Count_Type is
-    begin
-       return Container.Length;
-    end Length;
- 
-    ----------
-    -- Move --
-    ----------
- 
-    --  Comments???
- 
-    procedure Move (Target : in out Set; Source : in out Set) is
-       NN   : HT_Types.Nodes_Type renames Source.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.Length = 0 then
-          return;
-       end if;
- 
-       X := HT_Ops.First (Source);
-       while X /= 0 loop
-          Insert (Target, NN (X).Element);  -- optimize???
- 
-          Y := HT_Ops.Next (Source, X);
- 
-          HT_Ops.Delete_Node_Sans_Free (Source, 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, 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.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, 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, New_Item);
- 
-    begin
-       if Node = 0 then
-          raise Constraint_Error with
-            "attempt to replace element not in set";
-       end if;
- 
-       Container.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, 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;
- 
-    ------------------
-    -- Strict_Equal --
-    ------------------
- 
-    function Strict_Equal (Left, Right : Set) return Boolean is
-       CuL : Cursor := First (Left);
-       CuR : Cursor := First (Right);
- 
-    begin
-       if Length (Left) /= Length (Right) then
-          return False;
-       end if;
- 
-       while CuL.Node /= 0 or CuR.Node /= 0 loop
-          if CuL.Node /= CuR.Node
-            or else Left.Nodes (CuL.Node).Element /=
-                    Right.Nodes (CuR.Node).Element
-          then
-             return False;
-          end if;
- 
-          CuL := Next (Left, CuL);
-          CuR := Next (Right, CuR);
-       end loop;
- 
-       return True;
-    end Strict_Equal;
- 
-    --------------------------
-    -- 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
-          N : Node_Type renames Source.Nodes (Source_Node);
-          X : Count_Type;
-          B : Boolean;
-       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);
-    end Symmetric_Difference;
- 
-    function Symmetric_Difference (Left, 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 Left.Copy;
-       end if;
- 
-       if Length (Left) = 0 then
-          return Right.Copy;
-       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.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);
-    end Union;
- 
-    function Union (Left, Right : Set) return Set is
-       C : Count_Type;
-       H : Hash_Type;
- 
-    begin
-       if Left'Address = Right'Address then
-          return Left.Copy;
-       end if;
- 
-       if Length (Right) = 0 then
-          return Left.Copy;
-       end if;
- 
-       if Length (Left) = 0 then
-          return Right.Copy;
-       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.Nodes;
-          X : Count_Type;
- 
-       begin
-          if S.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.Buckets (Element_Keys.Index (S, N (Position.Node).Element));
- 
-          for J in 1 .. S.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;
- 
-    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, 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.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, 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, Key);
-       begin
-          return (if Node = 0 then No_Element else (Node => Node));
-       end Find;
- 
-       ---------
-       -- 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.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, Key);
- 
-       begin
-          if Node = 0 then
-             raise Constraint_Error with
-               "attempt to replace key not in set";
-          end if;
- 
-          Replace_Element (Container, Node, New_Item);
-       end Replace;
- 
-    end Generic_Keys;
- 
- end Ada.Containers.Formal_Hashed_Sets;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cfhase.ads gcc-8.1.0/gcc/ada/a-cfhase.ads
*** gcc-7.3.0/gcc/ada/a-cfhase.ads	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-cfhase.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,367 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         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     --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, 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/>.                                          --
- ------------------------------------------------------------------------------
- 
- --  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.
- 
- --    There are three new functions:
- 
- --      function Strict_Equal (Left, Right : Set) return Boolean;
- --      function First_To_Previous  (Container : Set; Current : Cursor)
- --         return Set;
- --      function Current_To_Last (Container : Set; Current : Cursor)
- --         return Set;
- 
- --    See detailed specifications for these subprograms
- 
- 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, Right : Element_Type)
-                                       return Boolean;
- 
-    with function "=" (Left, Right : Element_Type) return Boolean is <>;
- 
- package Ada.Containers.Formal_Hashed_Sets with
-   Pure,
-   SPARK_Mode
- is
-    pragma Annotate (GNATprove, External_Axiomatization);
-    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 private;
-    pragma Preelaborable_Initialization (Cursor);
- 
-    Empty_Set : constant Set;
- 
-    No_Element : constant Cursor;
- 
-    function "=" (Left, Right : Set) return Boolean with
-      Global => null;
- 
-    function Equivalent_Sets (Left, Right : Set) return Boolean with
-      Global => null;
- 
-    function To_Set (New_Item : Element_Type) return Set with
-      Global => null;
- 
-    function Capacity (Container : Set) return Count_Type with
-      Global => null;
- 
-    procedure Reserve_Capacity
-      (Container : in out Set;
-       Capacity  : Count_Type)
-    with
-      Global => null,
-      Pre    => Capacity <= Container.Capacity;
- 
-    function Length (Container : Set) return Count_Type with
-      Global => null;
- 
-    function Is_Empty (Container : Set) return Boolean with
-      Global => null;
- 
-    procedure Clear (Container : in out Set) with
-      Global => null;
- 
-    procedure Assign (Target : in out Set; Source : Set) with
-      Global => null,
-      Pre    => Target.Capacity >= Length (Source);
- 
-    function Copy
-      (Source   : Set;
-       Capacity : Count_Type := 0) return Set
-    with
-      Global => null,
-      Pre    => Capacity = 0 or else Capacity >= Source.Capacity;
- 
-    function Element
-      (Container : Set;
-       Position  : Cursor) return Element_Type
-    with
-      Global => null,
-      Pre    => Has_Element (Container, Position);
- 
-    procedure Replace_Element
-      (Container : in out Set;
-       Position  : Cursor;
-       New_Item  : Element_Type)
-    with
-      Global => null,
-      Pre    => Has_Element (Container, Position);
- 
-    procedure Move (Target : in out Set; Source : in out Set) with
-      Global => null,
-      Pre    => Target.Capacity >= Length (Source);
- 
-    procedure Insert
-      (Container : in out Set;
-       New_Item  : Element_Type;
-       Position  : out Cursor;
-       Inserted  : out Boolean)
-    with
-      Global => null,
-      Pre    => Length (Container) < Container.Capacity;
- 
-    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));
- 
-    procedure Include (Container : in out Set; New_Item : Element_Type) with
-      Global => null,
-      Pre    => Length (Container) < Container.Capacity;
- 
-    procedure Replace (Container : in out Set; New_Item : Element_Type) with
-      Global => null,
-      Pre    => Contains (Container, New_Item);
- 
-    procedure Exclude (Container : in out Set; Item     : Element_Type) with
-      Global => null;
- 
-    procedure Delete  (Container : in out Set; Item     : Element_Type) with
-      Global => null,
-      Pre    => Contains (Container, Item);
- 
-    procedure Delete (Container : in out Set; Position  : in out Cursor) with
-      Global => null,
-      Pre    => Has_Element (Container, Position);
- 
-    procedure Union (Target : in out Set; Source : Set) with
-      Global => null,
-      Pre    => Length (Target) + Length (Source) -
-                  Length (Intersection (Target, Source)) <= Target.Capacity;
- 
-    function Union (Left, Right : Set) return Set with
-      Global => null,
-      Pre    => Length (Left) + Length (Right) -
-                  Length (Intersection (Left, Right)) <= Count_Type'Last;
- 
-    function "or" (Left, Right : Set) return Set renames Union;
- 
-    procedure Intersection (Target : in out Set; Source : Set) with
-      Global => null;
- 
-    function Intersection (Left, Right : Set) return Set with
-      Global => null;
- 
-    function "and" (Left, Right : Set) return Set renames Intersection;
- 
-    procedure Difference (Target : in out Set; Source : Set) with
-      Global => null;
- 
-    function Difference (Left, Right : Set) return Set with
-      Global => null;
- 
-    function "-" (Left, Right : Set) return Set renames Difference;
- 
-    procedure Symmetric_Difference (Target : in out Set; Source : Set) with
-      Global => null,
-      Pre    => Length (Target) + Length (Source) -
-                  2 * Length (Intersection (Target, Source)) <= Target.Capacity;
- 
-    function Symmetric_Difference (Left, Right : Set) return Set with
-      Global => null,
-      Pre    => Length (Left) + Length (Right) -
-                  2 * Length (Intersection (Left, Right)) <= Count_Type'Last;
- 
-    function "xor" (Left, Right : Set) return Set
-      renames Symmetric_Difference;
- 
-    function Overlap (Left, Right : Set) return Boolean with
-      Global => null;
- 
-    function Is_Subset (Subset : Set; Of_Set : Set) return Boolean with
-      Global => null;
- 
-    function First (Container : Set) return Cursor with
-      Global => null;
- 
-    function Next (Container : Set; Position : Cursor) return Cursor with
-      Global => null,
-      Pre    => Has_Element (Container, Position) or else Position = No_Element;
- 
-    procedure Next (Container : Set; Position : in out Cursor) with
-      Global => null,
-      Pre    => Has_Element (Container, Position) or else Position = No_Element;
- 
-    function Find
-      (Container : Set;
-       Item      : Element_Type) return Cursor
-    with
-      Global => null;
- 
-    function Contains (Container : Set; Item : Element_Type) return Boolean with
-      Global => null;
- 
-    function Has_Element (Container : Set; Position : Cursor) return Boolean
-    with
-      Global => null;
- 
-    function Equivalent_Elements (Left  : Set; CLeft : Cursor;
-                                  Right : Set; CRight : Cursor) return Boolean
-    with
-      Global => null;
- 
-    function Equivalent_Elements
-      (Left  : Set; CLeft : Cursor;
-       Right : Element_Type) return Boolean
-    with
-      Global => null;
- 
-    function Equivalent_Elements
-      (Left  : Element_Type;
-       Right : Set; CRight : Cursor) return Boolean
-    with
-      Global => null;
- 
-    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
- 
-       function Key (Container : Set; Position : Cursor) return Key_Type with
-         Global => null;
- 
-       function Element (Container : Set; Key : Key_Type) return Element_Type
-       with
-           Global => null;
- 
-       procedure Replace
-         (Container : in out Set;
-          Key       : Key_Type;
-          New_Item  : Element_Type)
-       with
-           Global => null;
- 
-       procedure Exclude (Container : in out Set; Key : Key_Type) with
-         Global => null;
- 
-       procedure Delete (Container : in out Set; Key : Key_Type) with
-         Global => null;
- 
-       function Find (Container : Set; Key : Key_Type) return Cursor with
-         Global => null;
- 
-       function Contains (Container : Set; Key : Key_Type) return Boolean with
-         Global => null;
- 
-    end Generic_Keys;
- 
-    function Strict_Equal (Left, Right : Set) return Boolean with
-      Ghost,
-      Global => null;
-    --  Strict_Equal returns True if the containers are physically equal, i.e.
-    --  they are structurally equal (function "=" returns True) and that they
-    --  have the same set of cursors.
- 
-    function First_To_Previous  (Container : Set; Current : Cursor) return Set
-    with
-      Ghost,
-      Global => null,
-      Pre    => Has_Element (Container, Current) or else Current = No_Element;
- 
-    function Current_To_Last (Container : Set; Current : Cursor) return Set
-    with
-      Ghost,
-      Global => null,
-      Pre    => Has_Element (Container, Current) or else Current = No_Element;
-    --  First_To_Previous returns a container containing all elements preceding
-    --  Current (excluded) in Container. Current_To_Last returns a container
-    --  containing all elements following Current (included) in Container.
-    --  These two new functions can be used to express invariant properties in
-    --  loops which iterate over containers. First_To_Previous returns the part
-    --  of the container already scanned and Current_To_Last the part not
-    --  scanned yet.
- 
- private
-    pragma SPARK_Mode (Off);
- 
-    pragma Inline (Next);
- 
-    type Node_Type is
-       record
-          Element     : 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
-      new HT_Types.Hash_Table_Type (Capacity, Modulus) with null record;
- 
-    use HT_Types;
- 
-    type Cursor is record
-       Node : Count_Type;
-    end record;
- 
-    No_Element : constant Cursor := (Node => 0);
- 
-    Empty_Set : constant Set := (Capacity => 0, Modulus => 0, others => <>);
- 
- end Ada.Containers.Formal_Hashed_Sets;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cfinve.adb gcc-8.1.0/gcc/ada/a-cfinve.adb
*** gcc-7.3.0/gcc/ada/a-cfinve.adb	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-cfinve.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,304 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                 ADA.CONTAINERS.FORMAL_INDEFINITE_VECTORS                 --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2014-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 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;
- 
-    ---------
-    -- "=" --
-    ---------
- 
-    function "=" (Left, Right : Vector) return Boolean is
-       (Left.V = Right.V);
- 
-    ------------
-    -- Append --
-    ------------
- 
-    procedure Append (Container : in out Vector; New_Item : Vector) is
-    begin
-       Append (Container.V, New_Item.V);
-    end Append;
- 
-    procedure Append
-      (Container : in out Vector;
-       New_Item  : Element_Type)
-    is
-    begin
-       Append (Container.V, H (New_Item));
-    end Append;
- 
-    ------------
-    -- Assign --
-    ------------
- 
-    procedure Assign (Target : in out Vector; Source : Vector) is
-    begin
-       Assign (Target.V, Source.V);
-    end Assign;
- 
-    --------------
-    -- Capacity --
-    --------------
- 
-    function Capacity (Container : Vector) return Capacity_Range is
-       (Capacity (Container.V));
- 
-    -----------
-    -- Clear --
-    -----------
- 
-    procedure Clear (Container : in out Vector) is
-    begin
-       Clear (Container.V);
-    end Clear;
- 
-    --------------
-    -- Contains --
-    --------------
- 
-    function Contains
-      (Container : Vector;
-       Item      : Element_Type) return Boolean
-    is
-      (Contains (Container.V, H (Item)));
- 
-    ----------
-    -- Copy --
-    ----------
- 
-    function Copy
-      (Source   : Vector;
-       Capacity : Capacity_Range := 0) return Vector
-    is
-      ((if Capacity = 0 then Length (Source) else Capacity),
-        V => Copy (Source.V, Capacity));
- 
-    ---------------------
-    -- Current_To_Last --
-    ---------------------
- 
-    function Current_To_Last
-      (Container : Vector;
-       Current   : Index_Type) return Vector is
-    begin
-       return (Length (Container), Current_To_Last (Container.V, Current));
-    end Current_To_Last;
- 
-    -----------------
-    -- Delete_Last --
-    -----------------
- 
-    procedure Delete_Last
-      (Container : in out Vector)
-    is
-    begin
-       Delete_Last (Container.V);
-    end Delete_Last;
- 
-    -------------
-    -- Element --
-    -------------
- 
-    function Element
-      (Container : Vector;
-       Index     : Index_Type) return Element_Type is
-      (E (Element (Container.V, Index)));
- 
-    ----------------
-    -- Find_Index --
-    ----------------
- 
-    function Find_Index
-      (Container : Vector;
-       Item      : Element_Type;
-       Index     : Index_Type := Index_Type'First) return Extended_Index
-    is
-      (Find_Index (Container.V, H (Item), Index));
- 
-    -------------------
-    -- First_Element --
-    -------------------
- 
-    function First_Element (Container : Vector) return Element_Type is
-       (E (First_Element (Container.V)));
- 
-    -----------------
-    -- First_Index --
-    -----------------
- 
-    function First_Index (Container : Vector) return Index_Type is
-       (First_Index (Container.V));
- 
-    -----------------------
-    -- First_To_Previous --
-    -----------------------
- 
-    function First_To_Previous
-      (Container : Vector;
-       Current   : Index_Type) return Vector is
-    begin
-       return (Length (Container), First_To_Previous (Container.V, Current));
-    end First_To_Previous;
- 
-    ---------------------
-    -- Generic_Sorting --
-    ---------------------
- 
-    package body Generic_Sorting with SPARK_Mode => Off is
- 
-       function "<" (X, Y : Holder) return Boolean is (E (X) < E (Y));
-       package Def_Sorting is new Def.Generic_Sorting ("<");
-       use Def_Sorting;
- 
-       ---------------
-       -- Is_Sorted --
-       ---------------
- 
-       function Is_Sorted (Container : Vector) return Boolean is
-          (Is_Sorted (Container.V));
- 
-       ----------
-       -- Sort --
-       ----------
- 
-       procedure Sort (Container : in out Vector) is
-       begin
-          Sort (Container.V);
-       end Sort;
- 
-    end Generic_Sorting;
- 
-    -----------------
-    -- Has_Element --
-    -----------------
- 
-    function Has_Element
-      (Container : Vector;
-       Position  : Extended_Index) return Boolean
-    is
-      (Has_Element (Container.V, Position));
- 
-    --------------
-    -- Is_Empty --
-    --------------
- 
-    function Is_Empty (Container : Vector) return Boolean is
-       (Is_Empty (Container.V));
- 
-    ------------------
-    -- Last_Element --
-    ------------------
- 
-    function Last_Element (Container : Vector) return Element_Type is
-       (E (Last_Element (Container.V)));
- 
-    ----------------
-    -- Last_Index --
-    ----------------
- 
-    function Last_Index (Container : Vector) return Extended_Index is
-       (Last_Index (Container.V));
- 
-    ------------
-    -- Length --
-    ------------
- 
-    function Length (Container : Vector) return Capacity_Range is
-       (Length (Container.V));
- 
-    ---------------------
-    -- Replace_Element --
-    ---------------------
- 
-    procedure Replace_Element
-      (Container : in out Vector;
-       Index     : Index_Type;
-       New_Item  : Element_Type)
-    is
-    begin
-       Replace_Element (Container.V, Index, H (New_Item));
-    end Replace_Element;
- 
-    ----------------------
-    -- Reserve_Capacity --
-    ----------------------
- 
-    procedure Reserve_Capacity
-      (Container : in out Vector;
-       Capacity  : Capacity_Range)
-    is
-    begin
-       Reserve_Capacity (Container.V, Capacity);
-    end Reserve_Capacity;
- 
-    ----------------------
-    -- Reverse_Elements --
-    ----------------------
- 
-    procedure Reverse_Elements (Container : in out Vector) is
-    begin
-       Reverse_Elements (Container.V);
-    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
-      (Reverse_Find_Index (Container.V, H (Item), Index));
- 
-    ----------
-    -- Swap --
-    ----------
- 
-    procedure Swap (Container : in out Vector; I, J : Index_Type) is
-    begin
-       Swap (Container.V, I, J);
-    end Swap;
- 
-    ---------------
-    -- To_Vector --
-    ---------------
- 
-    function To_Vector
-      (New_Item : Element_Type;
-       Length   : Capacity_Range) return Vector
-    is
-    begin
-       return (Length, To_Vector (H (New_Item), Length));
-    end To_Vector;
- 
- end Ada.Containers.Formal_Indefinite_Vectors;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cfinve.ads gcc-8.1.0/gcc/ada/a-cfinve.ads
*** gcc-7.3.0/gcc/ada/a-cfinve.ads	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-cfinve.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,261 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                 ADA.CONTAINERS.FORMAL_INDEFINITE_VECTORS                 --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2014-2015, Free Software Foundation, 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/>.                                          --
- ------------------------------------------------------------------------------
- 
- --  Similar to Ada.Containers.Formal_Vectors. The main difference is that
- --  Element_Type may be indefinite (but not an unconstrained array). In
- --  addition, this is simplified by removing less-used functionality.
- 
- with Ada.Containers.Bounded_Holders;
- with Ada.Containers.Formal_Vectors;
- 
- generic
-    type Index_Type is range <>;
-    type Element_Type (<>) is private;
-    Max_Size_In_Storage_Elements : Natural :=
-                                     Element_Type'Max_Size_In_Storage_Elements;
-    --  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.
- 
-    with function "=" (Left, Right : Element_Type) return Boolean is <>;
- 
-    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
-    pragma Annotate (GNATprove, External_Axiomatization);
-    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;
- 
-    subtype Capacity_Range is
-      Count_Type range 0 .. Count_Type (Index_Type'Last - Index_Type'First + 1);
- 
-    type Vector (Capacity : Capacity_Range) is limited private with
-      Default_Initial_Condition;
- 
-    function Empty_Vector return Vector;
- 
-    function "=" (Left, Right : Vector) return Boolean with
-      Global => null;
- 
-    function To_Vector
-      (New_Item : Element_Type;
-       Length   : Capacity_Range) return Vector
-    with
-      Global => null;
- 
-    function Capacity (Container : Vector) return Capacity_Range with
-      Global => null,
-      Post   => Capacity'Result >= Container.Capacity;
- 
-    procedure Reserve_Capacity
-      (Container : in out Vector;
-       Capacity  : Capacity_Range)
-    with
-      Global => null,
-      Pre    => (if Bounded then Capacity <= Container.Capacity);
- 
-    function Length (Container : Vector) return Capacity_Range with
-      Global => null;
- 
-    function Is_Empty (Container : Vector) return Boolean with
-      Global => null;
- 
-    procedure Clear (Container : in out Vector) with
-      Global => null;
-    --  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.
- 
-    procedure Assign (Target : in out Vector; Source : Vector) with
-      Global => null,
-      Pre    => (if Bounded then Length (Source) <= Target.Capacity);
- 
-    function Copy
-      (Source   : Vector;
-       Capacity : Capacity_Range := 0) return Vector
-    with
-      Global => null,
-      Pre    => (if Bounded then (Capacity = 0 or Length (Source) <= Capacity));
- 
-    function Element
-      (Container : Vector;
-       Index     : Index_Type) return Element_Type
-    with
-      Global => null,
-      Pre    => Index in First_Index (Container) .. Last_Index (Container);
- 
-    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);
- 
-    procedure Append
-      (Container : in out Vector;
-       New_Item  : Vector)
-    with
-      Global => null,
-      Pre    => (if Bounded
-                 then Length (Container) + Length (New_Item) <=
-                                                        Container.Capacity);
- 
-    procedure Append
-      (Container : in out Vector;
-       New_Item  : Element_Type)
-    with
-      Global => null,
-      Pre    => (if Bounded
-                 then Length (Container) < Container.Capacity);
- 
-    procedure Delete_Last
-      (Container : in out Vector)
-    with
-      Global => null;
- 
-    procedure Reverse_Elements (Container : in out Vector) with
-      Global => null;
- 
-    procedure Swap (Container : in out Vector; I, 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);
- 
-    function First_Index (Container : Vector) return Index_Type with
-      Global => null;
- 
-    function First_Element (Container : Vector) return Element_Type with
-      Global => null,
-      Pre    => not Is_Empty (Container);
- 
-    function Last_Index (Container : Vector) return Extended_Index with
-      Global => null;
- 
-    function Last_Element (Container : Vector) return Element_Type with
-      Global => null,
-      Pre    => not Is_Empty (Container);
- 
-    function Find_Index
-      (Container : Vector;
-       Item      : Element_Type;
-       Index     : Index_Type := Index_Type'First) return Extended_Index
-    with
-      Global => null;
- 
-    function Reverse_Find_Index
-      (Container : Vector;
-       Item      : Element_Type;
-       Index     : Index_Type := Index_Type'Last) return Extended_Index
-    with
-      Global => null;
- 
-    function Contains
-      (Container : Vector;
-       Item      : Element_Type) return Boolean
-    with
-      Global => null;
- 
-    function Has_Element
-      (Container : Vector; Position : Extended_Index) return Boolean with
-      Global => null;
- 
-    generic
-       with function "<" (Left, Right : Element_Type) return Boolean is <>;
-    package Generic_Sorting with SPARK_Mode is
- 
-       function Is_Sorted (Container : Vector) return Boolean with
-         Global => null;
- 
-       procedure Sort (Container : in out Vector) with
-         Global => null;
- 
-    end Generic_Sorting;
- 
-    function First_To_Previous
-      (Container : Vector;
-       Current : Index_Type) return Vector
-    with
-      Ghost,
-      Global => null;
- 
-    function Current_To_Last
-      (Container : Vector;
-       Current : Index_Type) return Vector
-    with
-      Ghost,
-      Global => null;
- 
- 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, and then use that Holder type to
-    --  instantiate Formal_Vectors. All the operations are just wrappers.
- 
-    package Holders is new Bounded_Holders
-      (Element_Type, Max_Size_In_Storage_Elements, "=");
-    use Holders;
- 
-    package Def is new Formal_Vectors (Index_Type, Holder, "=", Bounded);
-    use Def;
- 
-    --  ????Assert that Def subtypes have the same range
- 
-    type Vector (Capacity : Capacity_Range) is limited record
-       V : Def.Vector (Capacity);
-    end record;
- 
-    function Empty_Vector return Vector is
-      ((Capacity => 0, V => Def.Empty_Vector));
- 
- end Ada.Containers.Formal_Indefinite_Vectors;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cforma.adb gcc-8.1.0/gcc/ada/a-cforma.adb
*** gcc-7.3.0/gcc/ada/a-cforma.adb	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-cforma.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,1076 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         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-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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, Last (Left).Node);
- 
-       Node := First (Left).Node;
-       while Node /= Lst loop
-          ENode := Find (Right, Left.Nodes (Node).Key).Node;
- 
-          if ENode = 0 or else
-            Left.Nodes (Node).Element /= Right.Nodes (ENode).Element
-          then
-             return False;
-          end if;
- 
-          Node := Next (Left, 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.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, 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,
-             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);
-       Append_Elements (Source);
-    end Assign;
- 
-    -------------
-    -- Ceiling --
-    -------------
- 
-    function Ceiling (Container : Map; Key : Key_Type) return Cursor is
-       Node : constant Count_Type := Key_Ops.Ceiling (Container, 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);
-    end Clear;
- 
-    -----------
-    -- Color --
-    -----------
- 
-    function Color (Node : Node_Type) return Color_Type is
-    begin
-       return Node.Color;
-    end Color;
- 
-    --------------
-    -- 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.Length := Source.Length;
-             Target.Root := Source.Root;
-             Target.First := Source.First;
-             Target.Last := Source.Last;
-             Target.Free := Source.Free;
- 
-             while Node <= Source.Capacity loop
-                Target.Nodes (Node).Element :=
-                  Source.Nodes (Node).Element;
-                Target.Nodes (Node).Key :=
-                  Source.Nodes (Node).Key;
-                Target.Nodes (Node).Parent :=
-                  Source.Nodes (Node).Parent;
-                Target.Nodes (Node).Left :=
-                  Source.Nodes (Node).Left;
-                Target.Nodes (Node).Right :=
-                  Source.Nodes (Node).Right;
-                Target.Nodes (Node).Color :=
-                  Source.Nodes (Node).Color;
-                Target.Nodes (Node).Has_Element :=
-                  Source.Nodes (Node).Has_Element;
-                Node := Node + 1;
-             end loop;
- 
-             while Node <= Target.Capacity loop
-                N := Node;
-                Formal_Ordered_Maps.Free (Tree => Target, X => N);
-                Node := Node + 1;
-             end loop;
-          end if;
-       end return;
-    end Copy;
- 
-    ---------------------
-    -- Current_To_Last --
-    ---------------------
- 
-    function Current_To_Last (Container : Map; Current : Cursor) return Map is
-       Curs : Cursor := First (Container);
-       C    : Map (Container.Capacity) := Copy (Container, Container.Capacity);
-       Node : Count_Type;
- 
-    begin
-       if Curs = No_Element then
-          Clear (C);
-          return C;
- 
-       elsif Current /= No_Element and not Has_Element (Container, Current) then
-          raise Constraint_Error;
- 
-       else
-          while Curs.Node /= Current.Node loop
-             Node := Curs.Node;
-             Delete (C, Curs);
-             Curs := Next (Container, (Node => Node));
-          end loop;
- 
-          return C;
-       end if;
-    end Current_To_Last;
- 
-    ------------
-    -- 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.Node),
-                      "Position cursor of Delete is bad");
- 
-       Tree_Operations.Delete_Node_Sans_Free (Container,
-                                              Position.Node);
-       Formal_Ordered_Maps.Free (Container, Position.Node);
-    end Delete;
- 
-    procedure Delete (Container : in out Map; Key : Key_Type) is
-       X : constant Node_Access := Key_Ops.Find (Container, Key);
- 
-    begin
-       if X = 0 then
-          raise Constraint_Error with "key not in map";
-       end if;
- 
-       Tree_Operations.Delete_Node_Sans_Free (Container, X);
-       Formal_Ordered_Maps.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, X);
-          Formal_Ordered_Maps.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, X);
-          Formal_Ordered_Maps.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, Position.Node),
-                      "Position cursor of function Element is bad");
- 
-       return Container.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.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, Key);
-    begin
-       if X /= 0 then
-          Tree_Operations.Delete_Node_Sans_Free (Container, X);
-          Formal_Ordered_Maps.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, 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.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.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.Nodes (First (Container).Node).Key;
-    end First_Key;
- 
-    -----------------------
-    -- First_To_Previous --
-    -----------------------
- 
-    function First_To_Previous
-      (Container : Map;
-       Current   : Cursor) return Map
-    is
-       Curs : Cursor := Current;
-       C    : Map (Container.Capacity) := Copy (Container, Container.Capacity);
-       Node : Count_Type;
- 
-    begin
-       if Curs = No_Element then
-          return C;
- 
-       elsif not Has_Element (Container, Curs) then
-          raise Constraint_Error;
- 
-       else
-          while Curs.Node /= 0 loop
-             Node := Curs.Node;
-             Delete (C, Curs);
-             Curs := Next (Container, (Node => Node));
-          end loop;
- 
-          return C;
-       end if;
-    end First_To_Previous;
- 
-    -----------
-    -- Floor --
-    -----------
- 
-    function Floor (Container : Map; Key : Key_Type) return Cursor is
-       Node : constant Count_Type := Key_Ops.Floor (Container, Key);
- 
-    begin
-       if Node = 0 then
-          return No_Element;
-       end if;
- 
-       return (Node => Node);
-    end Floor;
- 
-    ----------
-    -- Free --
-    ----------
- 
-    procedure Free
-      (Tree : in out Map;
-       X  : Count_Type)
-    is
-    begin
-       Tree.Nodes (X).Has_Element := False;
-       Tree_Operations.Free (Tree, 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.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.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, X);
-          return X;
-       end New_Node;
- 
-    --  Start of processing for Insert
- 
-    begin
-       Insert_Sans_Hint
-         (Container,
-          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, Position.Node),
-                      "Position cursor of function Key is bad");
- 
-       return Container.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.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.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.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.Length;
-    end Length;
- 
-    ----------
-    -- Move --
-    ----------
- 
-    procedure Move (Target : in out Map; Source : in out Map) is
-       NN : Tree_Types.Nodes_Type renames Source.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, 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, Position.Node),
-                      "bad cursor in Next");
- 
-       return (Node => Tree_Operations.Next (Container, Position.Node));
-    end Next;
- 
-    -------------
-    -- Overlap --
-    -------------
- 
-    function Overlap (Left, Right : Map) return Boolean is
-    begin
-       if Length (Left) = 0 or Length (Right) = 0 then
-          return False;
-       end if;
- 
-       declare
-          L_Node : Count_Type          := First (Left).Node;
-          R_Node : Count_Type          := First (Right).Node;
-          L_Last : constant Count_Type := Next (Left, Last (Left).Node);
-          R_Last : constant Count_Type := Next (Right, Last (Right).Node);
- 
-       begin
-          if Left'Address = Right'Address then
-             return True;
-          end if;
- 
-          loop
-             if L_Node = L_Last
-               or else R_Node = R_Last
-             then
-                return False;
-             end if;
- 
-             if Left.Nodes (L_Node).Key < Right.Nodes (R_Node).Key then
-                L_Node := Next (Left, L_Node);
- 
-             elsif Right.Nodes (R_Node).Key < Left.Nodes (L_Node).Key then
-                R_Node := Next (Right, R_Node);
- 
-             else
-                return True;
-             end if;
-          end loop;
-       end;
-    end Overlap;
- 
-    ------------
-    -- 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, Position.Node),
-                      "bad cursor in Previous");
- 
-       declare
-          Node : constant Count_Type :=
-            Tree_Operations.Previous (Container, Position.Node);
- 
-       begin
-          if Node = 0 then
-             return No_Element;
-          end if;
- 
-          return (Node => Node);
-       end;
-    end Previous;
- 
-    -------------
-    -- 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, Key);
- 
-       begin
-          if Node = 0 then
-             raise Constraint_Error with "key not in map";
-          end if;
- 
-          declare
-             N : Node_Type renames Container.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, Position.Node),
-                      "Position cursor of Replace_Element is bad");
- 
-       Container.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;
- 
-    ------------------
-    -- Strict_Equal --
-    ------------------
- 
-    function Strict_Equal (Left, Right : Map) return Boolean is
-       LNode : Count_Type := First (Left).Node;
-       RNode : Count_Type := First (Right).Node;
- 
-    begin
-       if Length (Left) /= Length (Right) then
-          return False;
-       end if;
- 
-       while LNode = RNode loop
-          if LNode = 0 then
-             return True;
-          end if;
- 
-          if Left.Nodes (LNode).Element /= Right.Nodes (RNode).Element
-            or else Left.Nodes (LNode).Key /= Right.Nodes (RNode).Key
-          then
-             exit;
-          end if;
- 
-          LNode := Next (Left, LNode);
-          RNode := Next (Right, RNode);
-       end loop;
- 
-       return False;
-    end Strict_Equal;
- 
- end Ada.Containers.Formal_Ordered_Maps;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cforma.ads gcc-8.1.0/gcc/ada/a-cforma.ads
*** gcc-7.3.0/gcc/ada/a-cforma.ads	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-cforma.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,311 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         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    --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, 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/>.                                          --
- ------------------------------------------------------------------------------
- 
- --  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.
- 
- --    There are four new functions:
- 
- --      function Strict_Equal (Left, Right : Map) return Boolean;
- --      function Overlap (Left, Right : Map) return Boolean;
- --      function First_To_Previous  (Container : Map; Current : Cursor)
- --         return Map;
- --      function Current_To_Last (Container : Map; Current : Cursor)
- --         return Map;
- 
- --    See detailed specifications for these subprograms
- 
- 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
-   Pure,
-   SPARK_Mode
- is
-    pragma Annotate (GNATprove, External_Axiomatization);
-    pragma Annotate (CodePeer, Skip_Analysis);
- 
-    function Equivalent_Keys (Left, Right : Key_Type) return Boolean with
-      Global => null;
- 
-    type Map (Capacity : Count_Type) is private with
-      Iterable => (First       => First,
-                   Next        => Next,
-                   Has_Element => Has_Element,
-                   Element     => Element),
-      Default_Initial_Condition => Is_Empty (Map);
-    pragma Preelaborable_Initialization (Map);
- 
-    type Cursor is private;
-    pragma Preelaborable_Initialization (Cursor);
- 
-    Empty_Map : constant Map;
- 
-    No_Element : constant Cursor;
- 
-    function "=" (Left, Right : Map) return Boolean with
-      Global => null;
- 
-    function Length (Container : Map) return Count_Type with
-      Global => null;
- 
-    function Is_Empty (Container : Map) return Boolean with
-      Global => null;
- 
-    procedure Clear (Container : in out Map) with
-      Global => null;
- 
-    procedure Assign (Target : in out Map; Source : Map) with
-      Global => null,
-      Pre    => Target.Capacity >= Length (Source);
- 
-    function Copy (Source : Map; Capacity : Count_Type := 0) return Map with
-      Global => null,
-      Pre    => Capacity = 0 or else Capacity >= Source.Capacity;
- 
-    function Key (Container : Map; Position : Cursor) return Key_Type with
-      Global => null,
-      Pre    => Has_Element (Container, Position);
- 
-    function Element
-      (Container : Map;
-       Position  : Cursor) return Element_Type
-    with
-      Global => null,
-      Pre    => Has_Element (Container, Position);
- 
-    procedure Replace_Element
-      (Container : in out Map;
-       Position  : Cursor;
-       New_Item  : Element_Type)
-    with
-      Global => null,
-      Pre    => Has_Element (Container, Position);
- 
-    procedure Move (Target : in out Map; Source : in out Map) with
-      Global => null,
-      Pre    => Target.Capacity >= Length (Source);
- 
-    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;
- 
-    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));
- 
-    procedure Include
-      (Container : in out Map;
-       Key       : Key_Type;
-       New_Item  : Element_Type)
-    with
-      Global => null,
-      Pre    => Length (Container) < Container.Capacity;
- 
-    procedure Replace
-      (Container : in out Map;
-       Key       : Key_Type;
-       New_Item  : Element_Type)
-    with
-      Global => null,
-      Pre    => Contains (Container, Key);
- 
-    procedure Exclude (Container : in out Map; Key : Key_Type) with
-      Global => null;
- 
-    procedure Delete (Container : in out Map; Key : Key_Type) with
-      Global => null,
-      Pre    => Contains (Container, Key);
- 
-    procedure Delete (Container : in out Map; Position : in out Cursor) with
-      Global => null,
-      Pre    => Has_Element (Container, Position);
- 
-    procedure Delete_First (Container : in out Map) with
-      Global => null;
- 
-    procedure Delete_Last (Container : in out Map) with
-      Global => null;
- 
-    function First (Container : Map) return Cursor with
-      Global => null;
- 
-    function First_Element (Container : Map) return Element_Type with
-      Global => null,
-      Pre    => not Is_Empty (Container);
- 
-    function First_Key (Container : Map) return Key_Type with
-      Global => null,
-      Pre    => not Is_Empty (Container);
- 
-    function Last (Container : Map) return Cursor with
-      Global => null;
- 
-    function Last_Element (Container : Map) return Element_Type with
-      Global => null,
-      Pre    => not Is_Empty (Container);
- 
-    function Last_Key (Container : Map) return Key_Type with
-      Global => null,
-      Pre    => not Is_Empty (Container);
- 
-    function Next (Container : Map; Position : Cursor) return Cursor with
-      Global => null,
-      Pre    => Has_Element (Container, Position) or else Position = No_Element;
- 
-    procedure Next (Container : Map; Position : in out Cursor) with
-      Global => null,
-      Pre    => Has_Element (Container, Position) or else Position = No_Element;
- 
-    function Previous (Container : Map; Position : Cursor) return Cursor with
-      Global => null,
-      Pre    => Has_Element (Container, Position) or else Position = No_Element;
- 
-    procedure Previous (Container : Map; Position : in out Cursor) with
-      Global => null,
-      Pre    => Has_Element (Container, Position) or else Position = No_Element;
- 
-    function Find (Container : Map; Key : Key_Type) return Cursor with
-      Global => null;
- 
-    function Element (Container : Map; Key : Key_Type) return Element_Type with
-      Global => null,
-      Pre    => Contains (Container, Key);
- 
-    function Floor (Container : Map; Key : Key_Type) return Cursor with
-      Global => null;
- 
-    function Ceiling (Container : Map; Key : Key_Type) return Cursor with
-      Global => null;
- 
-    function Contains (Container : Map; Key : Key_Type) return Boolean with
-      Global => null;
- 
-    function Has_Element (Container : Map; Position : Cursor) return Boolean
-    with
-      Global => null;
- 
-    function Strict_Equal (Left, Right : Map) return Boolean with
-      Ghost,
-      Global => null;
-    --  Strict_Equal returns True if the containers are physically equal, i.e.
-    --  they are structurally equal (function "=" returns True) and that they
-    --  have the same set of cursors.
- 
-    function First_To_Previous (Container : Map; Current : Cursor) return Map
-    with
-      Ghost,
-      Global => null,
-      Pre    => Has_Element (Container, Current) or else Current = No_Element;
- 
-    function Current_To_Last (Container : Map; Current : Cursor) return Map
-    with
-      Ghost,
-      Global => null,
-      Pre    => Has_Element (Container, Current) or else Current = No_Element;
-    --  First_To_Previous returns a container containing all elements preceding
-    --  Current (excluded) in Container. Current_To_Last returns a container
-    --  containing all elements following Current (included) in Container.
-    --  These two new functions can be used to express invariant properties in
-    --  loops which iterate over containers. First_To_Previous returns the part
-    --  of the container already scanned and Current_To_Last the part not
-    --  scanned yet.
- 
-    function Overlap (Left, Right : Map) return Boolean with
-      Global => null;
-    --  Overlap returns True if the containers have common keys
- 
- 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 : 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
-      new Tree_Types.Tree_Type (Capacity) with null record;
- 
-    type Cursor is record
-       Node : Node_Access;
-    end record;
- 
-    Empty_Map : constant Map := (Capacity => 0, others => <>);
- 
-    No_Element : constant Cursor := (Node => 0);
- 
- end Ada.Containers.Formal_Ordered_Maps;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cforse.adb gcc-8.1.0/gcc/ada/a-cforse.adb
*** gcc-7.3.0/gcc/ada/a-cforse.adb	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-cforse.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,1544 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         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-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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???
- 
-    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 Set;
-       New_Item  : Element_Type;
-       Node      : out Count_Type;
-       Inserted  : out Boolean);
- 
-    procedure Insert_With_Hint
-      (Dst_Set  : in out Set;
-       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         => Set,
-         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, Last (Left).Node);
- 
-       Node := First (Left).Node;
-       while Node /= Lst loop
-          ENode := Find (Right, Left.Nodes (Node).Element).Node;
-          if ENode = 0
-            or else Left.Nodes (Node).Element /= Right.Nodes (ENode).Element
-          then
-             return False;
-          end if;
- 
-          Node := Next (Left, Node);
-       end loop;
- 
-       return True;
-    end "=";
- 
-    ------------
-    -- Assign --
-    ------------
- 
-    procedure Assign (Target : in out Set; Source : Set) 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;
- 
-    -------------
-    -- Ceiling --
-    -------------
- 
-    function Ceiling (Container : Set; Item : Element_Type) return Cursor is
-       Node : constant Count_Type := Element_Keys.Ceiling (Container, 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);
-    end Clear;
- 
-    -----------
-    -- Color --
-    -----------
- 
-    function Color (Node : Node_Type) return Red_Black_Trees.Color_Type is
-    begin
-       return Node.Color;
-    end Color;
- 
-    --------------
-    -- 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.Length := Source.Length;
-          Target.Root   := Source.Root;
-          Target.First  := Source.First;
-          Target.Last   := Source.Last;
-          Target.Free   := Source.Free;
- 
-          Node := 1;
-          while Node <= Source.Capacity loop
-             Target.Nodes (Node).Element :=
-               Source.Nodes (Node).Element;
-             Target.Nodes (Node).Parent :=
-               Source.Nodes (Node).Parent;
-             Target.Nodes (Node).Left :=
-               Source.Nodes (Node).Left;
-             Target.Nodes (Node).Right :=
-               Source.Nodes (Node).Right;
-             Target.Nodes (Node).Color :=
-               Source.Nodes (Node).Color;
-             Target.Nodes (Node).Has_Element :=
-               Source.Nodes (Node).Has_Element;
-             Node := Node + 1;
-          end loop;
- 
-          while Node <= Target.Capacity loop
-             N := Node;
-             Formal_Ordered_Sets.Free (Tree => Target, X => N);
-             Node := Node + 1;
-          end loop;
-       end if;
- 
-       return Target;
-    end Copy;
- 
-    ---------------------
-    -- Current_To_Last --
-    ---------------------
- 
-    function Current_To_Last (Container : Set; Current : Cursor) return Set is
-       Curs : Cursor := First (Container);
-       C    : Set (Container.Capacity) := Copy (Container, Container.Capacity);
-       Node : Count_Type;
- 
-    begin
-       if Curs = No_Element then
-          Clear (C);
-          return C;
-       end if;
- 
-       if Current /= No_Element and not Has_Element (Container, Current) then
-          raise Constraint_Error;
-       end if;
- 
-       while Curs.Node /= Current.Node loop
-          Node := Curs.Node;
-          Delete (C, Curs);
-          Curs := Next (Container, (Node => Node));
-       end loop;
- 
-       return C;
-    end Current_To_Last;
- 
-    ------------
-    -- 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.Node),
-                      "bad cursor in Delete");
- 
-       Tree_Operations.Delete_Node_Sans_Free (Container,
-                                              Position.Node);
-       Formal_Ordered_Sets.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, 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, X);
-       Formal_Ordered_Sets.Free (Container, X);
-    end Delete;
- 
-    ------------------
-    -- Delete_First --
-    ------------------
- 
-    procedure Delete_First (Container : in out Set) is
-       X    : constant Count_Type := Container.First;
-    begin
-       if X /= 0 then
-          Tree_Operations.Delete_Node_Sans_Free (Container, X);
-          Formal_Ordered_Sets.Free (Container, X);
-       end if;
-    end Delete_First;
- 
-    -----------------
-    -- Delete_Last --
-    -----------------
- 
-    procedure Delete_Last (Container : in out Set) is
-       X    : constant Count_Type := Container.Last;
-    begin
-       if X /= 0 then
-          Tree_Operations.Delete_Node_Sans_Free (Container, X);
-          Formal_Ordered_Sets.Free (Container, X);
-       end if;
-    end Delete_Last;
- 
-    ----------------
-    -- Difference --
-    ----------------
- 
-    procedure Difference (Target : in out Set; Source : Set) is
-    begin
-       Set_Ops.Set_Difference (Target, Source);
-    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 Left.Copy;
-       end if;
- 
-       return S : Set (Length (Left)) do
-             Assign (S, Set_Ops.Set_Difference (Left, Right));
-       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, Position.Node),
-                      "bad cursor in Element");
- 
-       return Container.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, Right);
-    end Equivalent_Sets;
- 
-    -------------
-    -- Exclude --
-    -------------
- 
-    procedure Exclude (Container : in out Set; Item : Element_Type) is
-       X : constant Count_Type := Element_Keys.Find (Container, Item);
-    begin
-       if X /= 0 then
-          Tree_Operations.Delete_Node_Sans_Free (Container, X);
-          Formal_Ordered_Sets.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, 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.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.Nodes;
-       begin
-          return N (Fst).Element;
-       end;
-    end First_Element;
- 
-    -----------------------
-    -- First_To_Previous --
-    -----------------------
- 
-    function First_To_Previous
-      (Container : Set;
-       Current   : Cursor) return Set
-    is
-       Curs : Cursor := Current;
-       C    : Set (Container.Capacity) := Copy (Container, Container.Capacity);
-       Node : Count_Type;
- 
-    begin
-       if Curs = No_Element then
-          return C;
- 
-       elsif not Has_Element (Container, Curs) then
-          raise Constraint_Error;
- 
-       else
-          while Curs.Node /= 0 loop
-             Node := Curs.Node;
-             Delete (C, Curs);
-             Curs := Next (Container, (Node => Node));
-          end loop;
- 
-          return C;
-       end if;
-    end First_To_Previous;
- 
-    -----------
-    -- Floor --
-    -----------
- 
-    function Floor (Container : Set; Item : Element_Type) return Cursor is
-    begin
-       declare
-          Node : constant Count_Type := Element_Keys.Floor (Container, Item);
- 
-       begin
-          if Node = 0 then
-             return No_Element;
-          end if;
- 
-          return (Node => Node);
-       end;
-    end Floor;
- 
-    ----------
-    -- Free --
-    ----------
- 
-    procedure Free (Tree : in out Set; X : Count_Type) is
-    begin
-       Tree.Nodes (X).Has_Element := False;
-       Tree_Operations.Free (Tree, 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, 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, Key);
- 
-       begin
-          if X = 0 then
-             raise Constraint_Error with "attempt to delete key not in set";
-          end if;
- 
-          Delete_Node_Sans_Free (Container, X);
-          Formal_Ordered_Sets.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, Key);
- 
-       begin
-          if Node = 0 then
-             raise Constraint_Error with "key not in set";
-          end if;
- 
-          declare
-             N : Tree_Types.Nodes_Type renames Container.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, Key);
-       begin
-          if X /= 0 then
-             Delete_Node_Sans_Free (Container, X);
-             Formal_Ordered_Sets.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, 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, Key);
-       begin
-          return (if Node = 0 then No_Element else (Node => Node));
-       end Floor;
- 
-       -------------------------
-       -- 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, Position.Node),
-                         "bad cursor in Key");
- 
-          declare
-             N : Tree_Types.Nodes_Type renames Container.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, 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.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.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, 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 Set;
-       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 Set;
-       Dst_Hint : Count_Type;
-       Src_Node : Node_Type;
-       Dst_Node : out Count_Type)
-    is
-       Success : Boolean;
-       pragma Unreferenced (Success);
- 
-       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, Source);
-    end Intersection;
- 
-    function Intersection (Left, Right : Set) return Set is
-    begin
-       if Left'Address = Right'Address then
-          return Left.Copy;
-       end if;
- 
-       return S : Set (Count_Type'Min (Length (Left), Length (Right))) do
-             Assign (S, Set_Ops.Set_Intersection (Left, Right));
-       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, Of_Set => Of_Set);
-    end Is_Subset;
- 
-    ----------
-    -- Last --
-    ----------
- 
-    function Last (Container : Set) return Cursor is
-    begin
-       return (if Length (Container) = 0
-               then No_Element
-               else (Node => Container.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.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.Length;
-    end Length;
- 
-    ----------
-    -- Move --
-    ----------
- 
-    procedure Move (Target : in out Set; Source : in out Set) is
-       N : Tree_Types.Nodes_Type renames Source.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.First;
-          exit when X = 0;
- 
-          Insert (Target, N (X).Element);  -- optimize???
- 
-          Tree_Operations.Delete_Node_Sans_Free (Source, X);
-          Formal_Ordered_Sets.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, Position.Node),
-                      "bad cursor in Next");
-       return (Node => Tree_Operations.Next (Container, 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, Right);
-    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, Position.Node),
-                      "bad cursor in Previous");
- 
-       declare
-          Node : constant Count_Type :=
-            Tree_Operations.Previous (Container, 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, New_Item);
- 
-    begin
-       if Node = 0 then
-          raise Constraint_Error with
-            "attempt to replace element not in set";
-       end if;
- 
-       Container.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.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, 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, Node);
- 
-       Local_Insert_With_Hint
-         (Tree     => Tree,
-          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, 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;
- 
-    ------------------
-    -- Strict_Equal --
-    ------------------
- 
-    function Strict_Equal (Left, Right : Set) return Boolean is
-       LNode : Count_Type := First (Left).Node;
-       RNode : Count_Type := First (Right).Node;
- 
-    begin
-       if Length (Left) /= Length (Right) then
-          return False;
-       end if;
- 
-       while LNode = RNode loop
-          if LNode = 0 then
-             return True;
-          end if;
- 
-          if Left.Nodes (LNode).Element /= Right.Nodes (RNode).Element then
-             exit;
-          end if;
- 
-          LNode := Next (Left, LNode);
-          RNode := Next (Right, RNode);
-       end loop;
- 
-       return False;
-    end Strict_Equal;
- 
-    --------------------------
-    -- Symmetric_Difference --
-    --------------------------
- 
-    procedure Symmetric_Difference (Target : in out Set; Source : Set) is
-    begin
-       Set_Ops.Set_Symmetric_Difference (Target, Source);
-    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 Left.Copy;
-       end if;
- 
-       if Length (Left) = 0 then
-          return Right.Copy;
-       end if;
- 
-       return S : Set (Length (Left) + Length (Right)) do
-          Assign (S, Set_Ops.Set_Symmetric_Difference (Left, Right));
-       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, 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, Source);
-    end Union;
- 
-    function Union (Left, Right : Set) return Set is
-    begin
-       if Left'Address = Right'Address then
-          return Left.Copy;
-       end if;
- 
-       if Length (Left) = 0 then
-          return Right.Copy;
-       end if;
- 
-       if Length (Right) = 0 then
-          return Left.Copy;
-       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-7.3.0/gcc/ada/a-cforse.ads gcc-8.1.0/gcc/ada/a-cforse.ads
*** gcc-7.3.0/gcc/ada/a-cforse.ads	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-cforse.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,388 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         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    --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, 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/>.                                          --
- ------------------------------------------------------------------------------
- 
- --  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.
- 
- --    There are three new functions:
- 
- --      function Strict_Equal (Left, Right : Set) return Boolean;
- --      function First_To_Previous (Container : Set; Current : Cursor)
- --         return Set;
- --      function Current_To_Last (Container : Set; Current : Cursor)
- --         return Set;
- 
- --    See detailed specifications for these subprograms
- 
- private with Ada.Containers.Red_Black_Trees;
- 
- generic
-    type Element_Type is private;
- 
-    with function "<" (Left, Right : Element_Type) return Boolean is <>;
-    with function "=" (Left, Right : Element_Type) return Boolean is <>;
- 
- package Ada.Containers.Formal_Ordered_Sets with
-   Pure,
-   SPARK_Mode
- is
-    pragma Annotate (GNATprove, External_Axiomatization);
-    pragma Annotate (CodePeer, Skip_Analysis);
- 
-    function Equivalent_Elements (Left, Right : Element_Type) return Boolean
-    with
-      Global => null;
- 
-    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 private;
-    pragma Preelaborable_Initialization (Cursor);
- 
-    Empty_Set : constant Set;
- 
-    No_Element : constant Cursor;
- 
-    function "=" (Left, Right : Set) return Boolean with
-      Global => null;
- 
-    function Equivalent_Sets (Left, Right : Set) return Boolean with
-      Global => null;
- 
-    function To_Set (New_Item : Element_Type) return Set with
-      Global => null;
- 
-    function Length (Container : Set) return Count_Type with
-      Global => null;
- 
-    function Is_Empty (Container : Set) return Boolean with
-      Global => null;
- 
-    procedure Clear (Container : in out Set) with
-      Global => null;
- 
-    procedure Assign (Target : in out Set; Source : Set) with
-      Pre => Target.Capacity >= Length (Source);
- 
-    function Copy (Source : Set; Capacity : Count_Type := 0) return Set with
-      Global => null,
-      Pre    => Capacity = 0 or else Capacity >= Source.Capacity;
- 
-    function Element
-      (Container : Set;
-       Position  : Cursor) return Element_Type
-    with
-      Global => null,
-      Pre    => Has_Element (Container, Position);
- 
-    procedure Replace_Element
-      (Container : in out Set;
-       Position  : Cursor;
-       New_Item  : Element_Type)
-    with
-      Global => null,
-      Pre    => Has_Element (Container, Position);
- 
-    procedure Move (Target : in out Set; Source : in out Set) with
-      Global => null,
-      Pre    => Target.Capacity >= Length (Source);
- 
-    procedure Insert
-      (Container : in out Set;
-       New_Item  : Element_Type;
-       Position  : out Cursor;
-       Inserted  : out Boolean)
-    with
-      Global => null,
-      Pre    => Length (Container) < Container.Capacity;
- 
-    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));
- 
-    procedure Include
-      (Container : in out Set;
-       New_Item  : Element_Type)
-    with
-      Global => null,
-      Pre    => Length (Container) < Container.Capacity;
- 
-    procedure Replace
-      (Container : in out Set;
-       New_Item  : Element_Type)
-    with
-      Global => null,
-      Pre    => Contains (Container, New_Item);
- 
-    procedure Exclude
-      (Container : in out Set;
-       Item      : Element_Type)
-    with
-      Global => null;
- 
-    procedure Delete
-      (Container : in out Set;
-       Item      : Element_Type)
-    with
-      Global => null,
-      Pre    => Contains (Container, Item);
- 
-    procedure Delete
-      (Container : in out Set;
-       Position  : in out Cursor)
-    with
-      Global => null,
-      Pre    => Has_Element (Container, Position);
- 
-    procedure Delete_First (Container : in out Set) with
-      Global => null;
- 
-    procedure Delete_Last (Container : in out Set) with
-      Global => null;
- 
-    procedure Union (Target : in out Set; Source : Set) with
-      Global => null,
-      Pre    => Length (Target) + Length (Source) -
-                  Length (Intersection (Target, Source)) <= Target.Capacity;
- 
-    function Union (Left, Right : Set) return Set with
-      Global => null,
-      Pre    => Length (Left) + Length (Right) -
-                  Length (Intersection (Left, Right)) <= Count_Type'Last;
- 
-    function "or" (Left, Right : Set) return Set renames Union;
- 
-    procedure Intersection (Target : in out Set; Source : Set) with
-      Global => null;
- 
-    function Intersection (Left, Right : Set) return Set with
-      Global => null;
- 
-    function "and" (Left, Right : Set) return Set renames Intersection;
- 
-    procedure Difference (Target : in out Set; Source : Set) with
-      Global => null;
- 
-    function Difference (Left, Right : Set) return Set with
-      Global => null;
- 
-    function "-" (Left, Right : Set) return Set renames Difference;
- 
-    procedure Symmetric_Difference (Target : in out Set; Source : Set) with
-      Global => null,
-      Pre    => Length (Target) + Length (Source) -
-                  2 * Length (Intersection (Target, Source)) <= Target.Capacity;
- 
-    function Symmetric_Difference (Left, Right : Set) return Set with
-      Global => null,
-      Pre    => Length (Left) + Length (Right) -
-                  2 * Length (Intersection (Left, Right)) <= Count_Type'Last;
- 
-    function "xor" (Left, Right : Set) return Set renames Symmetric_Difference;
- 
-    function Overlap (Left, Right : Set) return Boolean with
-      Global => null;
- 
-    function Is_Subset (Subset : Set; Of_Set : Set) return Boolean with
-      Global => null;
- 
-    function First (Container : Set) return Cursor with
-      Global => null;
- 
-    function First_Element (Container : Set) return Element_Type with
-      Global => null,
-      Pre    => not Is_Empty (Container);
- 
-    function Last (Container : Set) return Cursor;
- 
-    function Last_Element (Container : Set) return Element_Type with
-      Global => null,
-      Pre    => not Is_Empty (Container);
- 
-    function Next (Container : Set; Position : Cursor) return Cursor with
-      Global => null,
-      Pre    => Has_Element (Container, Position) or else Position = No_Element;
- 
-    procedure Next (Container : Set; Position : in out Cursor) with
-      Global => null,
-      Pre    => Has_Element (Container, Position) or else Position = No_Element;
- 
-    function Previous (Container : Set; Position : Cursor) return Cursor with
-      Global => null,
-      Pre    => Has_Element (Container, Position) or else Position = No_Element;
- 
-    procedure Previous (Container : Set; Position : in out Cursor) with
-      Global => null,
-      Pre    => Has_Element (Container, Position) or else Position = No_Element;
- 
-    function Find (Container : Set; Item : Element_Type) return Cursor with
-      Global => null;
- 
-    function Floor (Container : Set; Item : Element_Type) return Cursor with
-      Global => null;
- 
-    function Ceiling (Container : Set; Item : Element_Type) return Cursor with
-      Global => null;
- 
-    function Contains (Container : Set; Item : Element_Type) return Boolean with
-      Global => null;
- 
-    function Has_Element (Container : Set; Position : Cursor) return Boolean
-    with
-      Global => null;
- 
-    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;
- 
-       function Key (Container : Set; Position : Cursor) return Key_Type with
-         Global => null;
- 
-       function Element (Container : Set; Key : Key_Type) return Element_Type
-       with
-         Global => null;
- 
-       procedure Replace
-         (Container : in out Set;
-          Key       : Key_Type;
-          New_Item  : Element_Type)
-       with
-         Global => null;
- 
-       procedure Exclude (Container : in out Set; Key : Key_Type) with
-         Global => null;
- 
-       procedure Delete (Container : in out Set; Key : Key_Type) with
-         Global => null;
- 
-       function Find (Container : Set; Key : Key_Type) return Cursor with
-         Global => null;
- 
-       function Floor (Container : Set; Key : Key_Type) return Cursor with
-         Global => null;
- 
-       function Ceiling (Container : Set; Key : Key_Type) return Cursor with
-         Global => null;
- 
-       function Contains (Container : Set; Key : Key_Type) return Boolean with
-         Global => null;
- 
-    end Generic_Keys;
- 
-    function Strict_Equal (Left, Right : Set) return Boolean with
-      Ghost,
-      Global => null;
-    --  Strict_Equal returns True if the containers are physically equal, i.e.
-    --  they are structurally equal (function "=" returns True) and that they
-    --  have the same set of cursors.
- 
-    function First_To_Previous (Container : Set; Current : Cursor) return Set
-    with
-      Ghost,
-      Global => null,
-      Pre    => Has_Element (Container, Current) or else Current = No_Element;
- 
-    function Current_To_Last (Container : Set; Current : Cursor) return Set
-    with
-      Ghost,
-      Global => null,
-      Pre    => Has_Element (Container, Current) or else Current = No_Element;
-    --  First_To_Previous returns a container containing all elements preceding
-    --  Current (excluded) in Container. Current_To_Last returns a container
-    --  containing all elements following Current (included) in Container.
-    --  These two new functions can be used to express invariant properties in
-    --  loops which iterate over containers. First_To_Previous returns the part
-    --  of the container already scanned and Current_To_Last the part not
-    --  scanned yet.
- 
- 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 : Element_Type;
-    end record;
- 
-    package Tree_Types is
-      new Red_Black_Trees.Generic_Bounded_Tree_Types (Node_Type);
- 
-    type Set (Capacity : Count_Type) is
-      new Tree_Types.Tree_Type (Capacity) with null record;
- 
-    use Red_Black_Trees;
- 
-    type Cursor is record
-       Node : Count_Type;
-    end record;
- 
-    No_Element : constant Cursor := (Node => 0);
- 
-    Empty_Set : constant Set := (Capacity => 0, others => <>);
- 
- end Ada.Containers.Formal_Ordered_Sets;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cgaaso.adb gcc-8.1.0/gcc/ada/a-cgaaso.adb
*** gcc-7.3.0/gcc/ada/a-cgaaso.adb	Fri Nov  4 13:45:01 2011
--- gcc-8.1.0/gcc/ada/a-cgaaso.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,47 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --              ADA.CONTAINERS.GENERIC_ANONYMOUS_ARRAY_SORT                 --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2004-2011, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.                  --
- ------------------------------------------------------------------------------
- 
- --  This unit was originally a GNAT-specific addition to Ada 2005. A unit
- --  providing the same feature, Ada.Containers.Generic_Sort, was defined for
- --  Ada 2012.  We retain Generic_Anonymous_Array_Sort for compatibility, but
- --  implement it in terms of the official unit, Generic_Sort.
- 
- with Ada.Containers.Generic_Sort;
- 
- procedure Ada.Containers.Generic_Anonymous_Array_Sort
-   (First, Last : Index_Type'Base)
- is
-    procedure Sort is new Ada.Containers.Generic_Sort
-      (Index_Type => Index_Type,
-       Before     => Less,
-       Swap       => Swap);
- 
- begin
-    Sort (First, Last);
- end Ada.Containers.Generic_Anonymous_Array_Sort;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cgaaso.ads gcc-8.1.0/gcc/ada/a-cgaaso.ads
*** gcc-7.3.0/gcc/ada/a-cgaaso.ads	Thu Oct 21 10:14:06 2010
--- gcc-8.1.0/gcc/ada/a-cgaaso.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,41 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --              ADA.CONTAINERS.GENERIC_ANONYMOUS_ARRAY_SORT                 --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2004-2010, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.                  --
- ------------------------------------------------------------------------------
- 
- --  Allows an anonymous array (or array-like container) to be sorted. Generic
- --  formal Less returns the result of comparing the elements designated by the
- --  indexes, and generic formal Swap exchanges the designated elements.
- 
- generic
-    type Index_Type is (<>);
-    with function Less (Left, Right : Index_Type) return Boolean is <>;
-    with procedure Swap (Left, Right : Index_Type) is <>;
- 
- procedure Ada.Containers.Generic_Anonymous_Array_Sort
-   (First, Last : Index_Type'Base);
- pragma Pure (Ada.Containers.Generic_Anonymous_Array_Sort);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cgarso.adb gcc-8.1.0/gcc/ada/a-cgarso.adb
*** gcc-7.3.0/gcc/ada/a-cgarso.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-cgarso.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,50 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --    A D A . C O N T A I N E R S . G E N E R I C _ A R R A Y _ S O R T     --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2004-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- --
- -- 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 Ada.Containers.Generic_Constrained_Array_Sort;
- 
- procedure Ada.Containers.Generic_Array_Sort
-   (Container : in out Array_Type)
- is
-    subtype Index_Subtype is
-      Index_Type range Container'First .. Container'Last;
- 
-    subtype Array_Subtype is
-      Array_Type (Index_Subtype);
- 
-    procedure Sort is
-       new Generic_Constrained_Array_Sort
-        (Index_Type   => Index_Subtype,
-         Element_Type => Element_Type,
-         Array_Type   => Array_Subtype,
-         "<"          => "<");
- 
- begin
-    Sort (Container);
- end Ada.Containers.Generic_Array_Sort;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cgarso.ads gcc-8.1.0/gcc/ada/a-cgarso.ads
*** gcc-7.3.0/gcc/ada/a-cgarso.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-cgarso.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,26 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --    A D A . C O N T A I N E R S . G E N E R I C _ A R R A Y _ S O R T     --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- generic
-    type Index_Type is (<>);
-    type Element_Type is private;
-    type Array_Type is array (Index_Type range <>) of Element_Type;
- 
-    with function "<" (Left, Right : Element_Type)
-       return Boolean is <>;
- 
- procedure Ada.Containers.Generic_Array_Sort (Container : in out Array_Type);
- 
- pragma Pure (Ada.Containers.Generic_Array_Sort);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cgcaso.adb gcc-8.1.0/gcc/ada/a-cgcaso.adb
*** gcc-7.3.0/gcc/ada/a-cgcaso.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-cgcaso.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,121 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --              ADA.CONTAINERS.GENERIC_CONSTRAINED_ARRAY_SORT               --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2004-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- --
- -- 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.                  --
- ------------------------------------------------------------------------------
- 
- --  This algorithm was adapted from GNAT.Heap_Sort_G (see g-hesorg.ad[sb])
- 
- with System;
- 
- procedure Ada.Containers.Generic_Constrained_Array_Sort
-   (Container : in out Array_Type)
- is
-    type T is range System.Min_Int .. System.Max_Int;
- 
-    function To_Index (J : T) return Index_Type;
-    pragma Inline (To_Index);
- 
-    procedure Sift (S : T);
- 
-    A : Array_Type renames Container;
- 
-    --------------
-    -- To_Index --
-    --------------
- 
-    function To_Index (J : T) return Index_Type is
-       K : constant T'Base := Index_Type'Pos (A'First) + J - T'(1);
-    begin
-       return Index_Type'Val (K);
-    end To_Index;
- 
-    Max  : T := A'Length;
-    Temp : Element_Type;
- 
-    ----------
-    -- Sift --
-    ----------
- 
-    procedure Sift (S : T) is
-       C   : T := S;
-       Son : T;
- 
-    begin
-       loop
-          Son := 2 * C;
- 
-          exit when Son > Max;
- 
-          declare
-             Son_Index : Index_Type := To_Index (Son);
- 
-          begin
-             if Son < Max then
-                if A (Son_Index) < A (Index_Type'Succ (Son_Index)) then
-                   Son := Son + 1;
-                   Son_Index := Index_Type'Succ (Son_Index);
-                end if;
-             end if;
- 
-             A (To_Index (C)) := A (Son_Index);  -- Move (Son, C);
-          end;
- 
-          C := Son;
-       end loop;
- 
-       while C /= S loop
-          declare
-             Father : constant T := C / 2;
-          begin
-             if A (To_Index (Father)) < Temp then           -- Lt (Father, 0)
-                A (To_Index (C)) := A (To_Index (Father));  -- Move (Father, C)
-                C := Father;
-             else
-                exit;
-             end if;
-          end;
-       end loop;
- 
-       A (To_Index (C)) := Temp; -- Move (0, C);
-    end Sift;
- 
- --  Start of processing for Generic_Constrained_Array_Sort
- 
- begin
-    for J in reverse 1 .. Max / 2 loop
-       Temp := Container (To_Index (J)); --  Move (J, 0);
-       Sift (J);
-    end loop;
- 
-    while Max > 1 loop
-       Temp := A (To_Index (Max));         --  Move (Max, 0);
-       A (To_Index (Max)) := A (A'First);  --  Move (1, Max);
- 
-       Max := Max - 1;
-       Sift (1);
-    end loop;
- end Ada.Containers.Generic_Constrained_Array_Sort;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cgcaso.ads gcc-8.1.0/gcc/ada/a-cgcaso.ads
*** gcc-7.3.0/gcc/ada/a-cgcaso.ads	Mon Mar 24 10:57:32 2008
--- gcc-8.1.0/gcc/ada/a-cgcaso.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,27 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --              ADA.CONTAINERS.GENERIC_CONSTRAINED_ARRAY_SORT               --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- generic
-    type Index_Type is (<>);
-    type Element_Type is private;
-    type Array_Type is array (Index_Type) of Element_Type;
- 
-    with function "<" (Left, Right : Element_Type)
-      return Boolean is <>;
- 
- procedure Ada.Containers.Generic_Constrained_Array_Sort
-   (Container : in out Array_Type);
- 
- pragma Pure (Ada.Containers.Generic_Constrained_Array_Sort);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-chacon.adb gcc-8.1.0/gcc/ada/a-chacon.adb
*** gcc-7.3.0/gcc/ada/a-chacon.adb	Fri Jan  4 12:49:55 2013
--- gcc-8.1.0/gcc/ada/a-chacon.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,261 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --           A D A . C H A R A C T E R S . C O N V E R S I O N S            --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2005-2012, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 Ada.Characters.Conversions is
- 
-    ------------------
-    -- Is_Character --
-    ------------------
- 
-    function Is_Character (Item : Wide_Character) return Boolean is
-    begin
-       return Wide_Character'Pos (Item) < 256;
-    end Is_Character;
- 
-    function Is_Character (Item : Wide_Wide_Character) return Boolean is
-    begin
-       return Wide_Wide_Character'Pos (Item) < 256;
-    end Is_Character;
- 
-    ---------------
-    -- Is_String --
-    ---------------
- 
-    function Is_String (Item : Wide_String) return Boolean is
-    begin
-       for J in Item'Range loop
-          if Wide_Character'Pos (Item (J)) >= 256 then
-             return False;
-          end if;
-       end loop;
- 
-       return True;
-    end Is_String;
- 
-    function Is_String (Item : Wide_Wide_String) return Boolean is
-    begin
-       for J in Item'Range loop
-          if Wide_Wide_Character'Pos (Item (J)) >= 256 then
-             return False;
-          end if;
-       end loop;
- 
-       return True;
-    end Is_String;
- 
-    -----------------------
-    -- Is_Wide_Character --
-    -----------------------
- 
-    function Is_Wide_Character (Item : Wide_Wide_Character) return Boolean is
-    begin
-       return Wide_Wide_Character'Pos (Item) < 2**16;
-    end Is_Wide_Character;
- 
-    --------------------
-    -- Is_Wide_String --
-    --------------------
- 
-    function Is_Wide_String (Item : Wide_Wide_String) return Boolean is
-    begin
-       for J in Item'Range loop
-          if Wide_Wide_Character'Pos (Item (J)) >= 2**16 then
-             return False;
-          end if;
-       end loop;
- 
-       return True;
-    end Is_Wide_String;
- 
-    ------------------
-    -- To_Character --
-    ------------------
- 
-    function To_Character
-      (Item       : Wide_Character;
-       Substitute : Character := ' ') return Character
-    is
-    begin
-       if Is_Character (Item) then
-          return Character'Val (Wide_Character'Pos (Item));
-       else
-          return Substitute;
-       end if;
-    end To_Character;
- 
-    function To_Character
-      (Item       : Wide_Wide_Character;
-       Substitute : Character := ' ') return Character
-    is
-    begin
-       if Is_Character (Item) then
-          return Character'Val (Wide_Wide_Character'Pos (Item));
-       else
-          return Substitute;
-       end if;
-    end To_Character;
- 
-    ---------------
-    -- To_String --
-    ---------------
- 
-    function To_String
-      (Item       : Wide_String;
-       Substitute : Character := ' ') return String
-    is
-       Result : String (1 .. Item'Length);
- 
-    begin
-       for J in Item'Range loop
-          Result (J - (Item'First - 1)) := To_Character (Item (J), Substitute);
-       end loop;
- 
-       return Result;
-    end To_String;
- 
-    function To_String
-      (Item       : Wide_Wide_String;
-       Substitute : Character := ' ') return String
-    is
-       Result : String (1 .. Item'Length);
- 
-    begin
-       for J in Item'Range loop
-          Result (J - (Item'First - 1)) := To_Character (Item (J), Substitute);
-       end loop;
- 
-       return Result;
-    end To_String;
- 
-    -----------------------
-    -- To_Wide_Character --
-    -----------------------
- 
-    function To_Wide_Character
-      (Item : Character) return Wide_Character
-    is
-    begin
-       return Wide_Character'Val (Character'Pos (Item));
-    end To_Wide_Character;
- 
-    function To_Wide_Character
-      (Item       : Wide_Wide_Character;
-       Substitute : Wide_Character := ' ') return Wide_Character
-    is
-    begin
-       if Wide_Wide_Character'Pos (Item) < 2**16 then
-          return Wide_Character'Val (Wide_Wide_Character'Pos (Item));
-       else
-          return Substitute;
-       end if;
-    end To_Wide_Character;
- 
-    --------------------
-    -- To_Wide_String --
-    --------------------
- 
-    function To_Wide_String
-      (Item : String) return Wide_String
-    is
-       Result : Wide_String (1 .. Item'Length);
- 
-    begin
-       for J in Item'Range loop
-          Result (J - (Item'First - 1)) := To_Wide_Character (Item (J));
-       end loop;
- 
-       return Result;
-    end To_Wide_String;
- 
-    function To_Wide_String
-      (Item       : Wide_Wide_String;
-       Substitute : Wide_Character := ' ') return Wide_String
-    is
-       Result : Wide_String (1 .. Item'Length);
- 
-    begin
-       for J in Item'Range loop
-          Result (J - (Item'First - 1)) :=
-            To_Wide_Character (Item (J), Substitute);
-       end loop;
- 
-       return Result;
-    end To_Wide_String;
- 
-    ----------------------------
-    -- To_Wide_Wide_Character --
-    ----------------------------
- 
-    function To_Wide_Wide_Character
-      (Item : Character) return Wide_Wide_Character
-    is
-    begin
-       return Wide_Wide_Character'Val (Character'Pos (Item));
-    end To_Wide_Wide_Character;
- 
-    function To_Wide_Wide_Character
-      (Item : Wide_Character) return Wide_Wide_Character
-    is
-    begin
-       return Wide_Wide_Character'Val (Wide_Character'Pos (Item));
-    end To_Wide_Wide_Character;
- 
-    -------------------------
-    -- To_Wide_Wide_String --
-    -------------------------
- 
-    function To_Wide_Wide_String
-      (Item : String) return Wide_Wide_String
-    is
-       Result : Wide_Wide_String (1 .. Item'Length);
- 
-    begin
-       for J in Item'Range loop
-          Result (J - (Item'First - 1)) := To_Wide_Wide_Character (Item (J));
-       end loop;
- 
-       return Result;
-    end To_Wide_Wide_String;
- 
-    function To_Wide_Wide_String
-      (Item : Wide_String) return Wide_Wide_String
-    is
-       Result : Wide_Wide_String (1 .. Item'Length);
- 
-    begin
-       for J in Item'Range loop
-          Result (J - (Item'First - 1)) := To_Wide_Wide_Character (Item (J));
-       end loop;
- 
-       return Result;
-    end To_Wide_Wide_String;
- 
- end Ada.Characters.Conversions;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-chacon.ads gcc-8.1.0/gcc/ada/a-chacon.ads
*** gcc-7.3.0/gcc/ada/a-chacon.ads	Fri Jan  4 12:49:55 2013
--- gcc-8.1.0/gcc/ada/a-chacon.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,86 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --           A D A . C H A R A C T E R S . C O N V E R S I O N S            --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2005-2012, Free Software Foundation, 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 Ada.Characters.Conversions is
-    pragma Pure;
- 
-    function Is_Character (Item : Wide_Character)      return Boolean;
-    function Is_String    (Item : Wide_String)         return Boolean;
-    function Is_Character (Item : Wide_Wide_Character) return Boolean;
-    function Is_String    (Item : Wide_Wide_String)    return Boolean;
- 
-    function Is_Wide_Character (Item : Wide_Wide_Character) return Boolean;
-    function Is_Wide_String    (Item : Wide_Wide_String)    return Boolean;
- 
-    function To_Wide_Character (Item : Character) return Wide_Character;
-    function To_Wide_String    (Item : String)    return Wide_String;
- 
-    function To_Wide_Wide_Character
-      (Item : Character) return Wide_Wide_Character;
- 
-    function To_Wide_Wide_String
-      (Item : String) return Wide_Wide_String;
- 
-    function To_Wide_Wide_Character
-      (Item : Wide_Character) return Wide_Wide_Character;
- 
-    function To_Wide_Wide_String
-      (Item : Wide_String) return Wide_Wide_String;
- 
-    function To_Character
-      (Item       : Wide_Character;
-       Substitute : Character := ' ') return Character;
- 
-    function To_String
-      (Item       : Wide_String;
-       Substitute : Character := ' ') return String;
- 
-    function To_Character
-      (Item       : Wide_Wide_Character;
-       Substitute : Character := ' ') return Character;
- 
-    function To_String
-      (Item       : Wide_Wide_String;
-       Substitute : Character := ' ') return String;
- 
-    function To_Wide_Character
-      (Item       : Wide_Wide_Character;
-       Substitute : Wide_Character := ' ') return Wide_Character;
- 
-    function To_Wide_String
-      (Item       : Wide_Wide_String;
-       Substitute : Wide_Character := ' ') return Wide_String;
- 
- end Ada.Characters.Conversions;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-chahan.adb gcc-8.1.0/gcc/ada/a-chahan.adb
*** gcc-7.3.0/gcc/ada/a-chahan.adb	Thu Oct 10 12:52:31 2013
--- gcc-8.1.0/gcc/ada/a-chahan.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,609 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --              A D A . C H A R A C T E R S . H A N D L I N G               --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2013, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Characters.Latin_1;     use Ada.Characters.Latin_1;
- with Ada.Strings.Maps;           use Ada.Strings.Maps;
- with Ada.Strings.Maps.Constants; use Ada.Strings.Maps.Constants;
- 
- package body Ada.Characters.Handling is
- 
-    ------------------------------------
-    -- Character Classification Table --
-    ------------------------------------
- 
-    type Character_Flags is mod 256;
-    for Character_Flags'Size use 8;
- 
-    Control    : constant Character_Flags := 1;
-    Lower      : constant Character_Flags := 2;
-    Upper      : constant Character_Flags := 4;
-    Basic      : constant Character_Flags := 8;
-    Hex_Digit  : constant Character_Flags := 16;
-    Digit      : constant Character_Flags := 32;
-    Special    : constant Character_Flags := 64;
-    Line_Term  : constant Character_Flags := 128;
- 
-    Letter     : constant Character_Flags := Lower or Upper;
-    Alphanum   : constant Character_Flags := Letter or Digit;
-    Graphic    : constant Character_Flags := Alphanum or Special;
- 
-    Char_Map : constant array (Character) of Character_Flags :=
-    (
-      NUL                         => Control,
-      SOH                         => Control,
-      STX                         => Control,
-      ETX                         => Control,
-      EOT                         => Control,
-      ENQ                         => Control,
-      ACK                         => Control,
-      BEL                         => Control,
-      BS                          => Control,
-      HT                          => Control,
-      LF                          => Control + Line_Term,
-      VT                          => Control + Line_Term,
-      FF                          => Control + Line_Term,
-      CR                          => Control + Line_Term,
-      SO                          => Control,
-      SI                          => Control,
- 
-      DLE                         => Control,
-      DC1                         => Control,
-      DC2                         => Control,
-      DC3                         => Control,
-      DC4                         => Control,
-      NAK                         => Control,
-      SYN                         => Control,
-      ETB                         => Control,
-      CAN                         => Control,
-      EM                          => Control,
-      SUB                         => Control,
-      ESC                         => Control,
-      FS                          => Control,
-      GS                          => Control,
-      RS                          => Control,
-      US                          => Control,
- 
-      Space                       => Special,
-      Exclamation                 => Special,
-      Quotation                   => Special,
-      Number_Sign                 => Special,
-      Dollar_Sign                 => Special,
-      Percent_Sign                => Special,
-      Ampersand                   => Special,
-      Apostrophe                  => Special,
-      Left_Parenthesis            => Special,
-      Right_Parenthesis           => Special,
-      Asterisk                    => Special,
-      Plus_Sign                   => Special,
-      Comma                       => Special,
-      Hyphen                      => Special,
-      Full_Stop                   => Special,
-      Solidus                     => Special,
- 
-      '0' .. '9'                  => Digit + Hex_Digit,
- 
-      Colon                       => Special,
-      Semicolon                   => Special,
-      Less_Than_Sign              => Special,
-      Equals_Sign                 => Special,
-      Greater_Than_Sign           => Special,
-      Question                    => Special,
-      Commercial_At               => Special,
- 
-      'A' .. 'F'                  => Upper + Basic + Hex_Digit,
-      'G' .. 'Z'                  => Upper + Basic,
- 
-      Left_Square_Bracket         => Special,
-      Reverse_Solidus             => Special,
-      Right_Square_Bracket        => Special,
-      Circumflex                  => Special,
-      Low_Line                    => Special,
-      Grave                       => Special,
- 
-      'a' .. 'f'                  => Lower + Basic + Hex_Digit,
-      'g' .. 'z'                  => Lower + Basic,
- 
-      Left_Curly_Bracket          => Special,
-      Vertical_Line               => Special,
-      Right_Curly_Bracket         => Special,
-      Tilde                       => Special,
- 
-      DEL                         => Control,
-      Reserved_128                => Control,
-      Reserved_129                => Control,
-      BPH                         => Control,
-      NBH                         => Control,
-      Reserved_132                => Control,
-      NEL                         => Control + Line_Term,
-      SSA                         => Control,
-      ESA                         => Control,
-      HTS                         => Control,
-      HTJ                         => Control,
-      VTS                         => Control,
-      PLD                         => Control,
-      PLU                         => Control,
-      RI                          => Control,
-      SS2                         => Control,
-      SS3                         => Control,
- 
-      DCS                         => Control,
-      PU1                         => Control,
-      PU2                         => Control,
-      STS                         => Control,
-      CCH                         => Control,
-      MW                          => Control,
-      SPA                         => Control,
-      EPA                         => Control,
- 
-      SOS                         => Control,
-      Reserved_153                => Control,
-      SCI                         => Control,
-      CSI                         => Control,
-      ST                          => Control,
-      OSC                         => Control,
-      PM                          => Control,
-      APC                         => Control,
- 
-      No_Break_Space              => Special,
-      Inverted_Exclamation        => Special,
-      Cent_Sign                   => Special,
-      Pound_Sign                  => Special,
-      Currency_Sign               => Special,
-      Yen_Sign                    => Special,
-      Broken_Bar                  => Special,
-      Section_Sign                => Special,
-      Diaeresis                   => Special,
-      Copyright_Sign              => Special,
-      Feminine_Ordinal_Indicator  => Special,
-      Left_Angle_Quotation        => Special,
-      Not_Sign                    => Special,
-      Soft_Hyphen                 => Special,
-      Registered_Trade_Mark_Sign  => Special,
-      Macron                      => Special,
-      Degree_Sign                 => Special,
-      Plus_Minus_Sign             => Special,
-      Superscript_Two             => Special,
-      Superscript_Three           => Special,
-      Acute                       => Special,
-      Micro_Sign                  => Special,
-      Pilcrow_Sign                => Special,
-      Middle_Dot                  => Special,
-      Cedilla                     => Special,
-      Superscript_One             => Special,
-      Masculine_Ordinal_Indicator => Special,
-      Right_Angle_Quotation       => Special,
-      Fraction_One_Quarter        => Special,
-      Fraction_One_Half           => Special,
-      Fraction_Three_Quarters     => Special,
-      Inverted_Question           => Special,
- 
-      UC_A_Grave                  => Upper,
-      UC_A_Acute                  => Upper,
-      UC_A_Circumflex             => Upper,
-      UC_A_Tilde                  => Upper,
-      UC_A_Diaeresis              => Upper,
-      UC_A_Ring                   => Upper,
-      UC_AE_Diphthong             => Upper + Basic,
-      UC_C_Cedilla                => Upper,
-      UC_E_Grave                  => Upper,
-      UC_E_Acute                  => Upper,
-      UC_E_Circumflex             => Upper,
-      UC_E_Diaeresis              => Upper,
-      UC_I_Grave                  => Upper,
-      UC_I_Acute                  => Upper,
-      UC_I_Circumflex             => Upper,
-      UC_I_Diaeresis              => Upper,
-      UC_Icelandic_Eth            => Upper + Basic,
-      UC_N_Tilde                  => Upper,
-      UC_O_Grave                  => Upper,
-      UC_O_Acute                  => Upper,
-      UC_O_Circumflex             => Upper,
-      UC_O_Tilde                  => Upper,
-      UC_O_Diaeresis              => Upper,
- 
-      Multiplication_Sign         => Special,
- 
-      UC_O_Oblique_Stroke         => Upper,
-      UC_U_Grave                  => Upper,
-      UC_U_Acute                  => Upper,
-      UC_U_Circumflex             => Upper,
-      UC_U_Diaeresis              => Upper,
-      UC_Y_Acute                  => Upper,
-      UC_Icelandic_Thorn          => Upper + Basic,
- 
-      LC_German_Sharp_S           => Lower + Basic,
-      LC_A_Grave                  => Lower,
-      LC_A_Acute                  => Lower,
-      LC_A_Circumflex             => Lower,
-      LC_A_Tilde                  => Lower,
-      LC_A_Diaeresis              => Lower,
-      LC_A_Ring                   => Lower,
-      LC_AE_Diphthong             => Lower + Basic,
-      LC_C_Cedilla                => Lower,
-      LC_E_Grave                  => Lower,
-      LC_E_Acute                  => Lower,
-      LC_E_Circumflex             => Lower,
-      LC_E_Diaeresis              => Lower,
-      LC_I_Grave                  => Lower,
-      LC_I_Acute                  => Lower,
-      LC_I_Circumflex             => Lower,
-      LC_I_Diaeresis              => Lower,
-      LC_Icelandic_Eth            => Lower + Basic,
-      LC_N_Tilde                  => Lower,
-      LC_O_Grave                  => Lower,
-      LC_O_Acute                  => Lower,
-      LC_O_Circumflex             => Lower,
-      LC_O_Tilde                  => Lower,
-      LC_O_Diaeresis              => Lower,
- 
-      Division_Sign               => Special,
- 
-      LC_O_Oblique_Stroke         => Lower,
-      LC_U_Grave                  => Lower,
-      LC_U_Acute                  => Lower,
-      LC_U_Circumflex             => Lower,
-      LC_U_Diaeresis              => Lower,
-      LC_Y_Acute                  => Lower,
-      LC_Icelandic_Thorn          => Lower + Basic,
-      LC_Y_Diaeresis              => Lower
-    );
- 
-    ---------------------
-    -- Is_Alphanumeric --
-    ---------------------
- 
-    function Is_Alphanumeric (Item : Character) return Boolean is
-    begin
-       return (Char_Map (Item) and Alphanum) /= 0;
-    end Is_Alphanumeric;
- 
-    --------------
-    -- Is_Basic --
-    --------------
- 
-    function Is_Basic (Item : Character) return Boolean is
-    begin
-       return (Char_Map (Item) and Basic) /= 0;
-    end Is_Basic;
- 
-    ------------------
-    -- Is_Character --
-    ------------------
- 
-    function Is_Character (Item : Wide_Character) return Boolean is
-    begin
-       return Wide_Character'Pos (Item) < 256;
-    end Is_Character;
- 
-    ----------------
-    -- Is_Control --
-    ----------------
- 
-    function Is_Control (Item : Character) return Boolean is
-    begin
-       return (Char_Map (Item) and Control) /= 0;
-    end Is_Control;
- 
-    --------------
-    -- Is_Digit --
-    --------------
- 
-    function Is_Digit (Item : Character) return Boolean is
-    begin
-       return Item in '0' .. '9';
-    end Is_Digit;
- 
-    ----------------
-    -- Is_Graphic --
-    ----------------
- 
-    function Is_Graphic (Item : Character) return Boolean is
-    begin
-       return (Char_Map (Item) and Graphic) /= 0;
-    end Is_Graphic;
- 
-    --------------------------
-    -- Is_Hexadecimal_Digit --
-    --------------------------
- 
-    function Is_Hexadecimal_Digit (Item : Character) return Boolean is
-    begin
-       return (Char_Map (Item) and Hex_Digit) /= 0;
-    end Is_Hexadecimal_Digit;
- 
-    ----------------
-    -- Is_ISO_646 --
-    ----------------
- 
-    function Is_ISO_646 (Item : Character) return Boolean is
-    begin
-       return Item in ISO_646;
-    end Is_ISO_646;
- 
-    --  Note: much more efficient coding of the following function is possible
-    --  by testing several 16#80# bits in a complete word in a single operation
- 
-    function Is_ISO_646 (Item : String) return Boolean is
-    begin
-       for J in Item'Range loop
-          if Item (J) not in ISO_646 then
-             return False;
-          end if;
-       end loop;
- 
-       return True;
-    end Is_ISO_646;
- 
-    ---------------
-    -- Is_Letter --
-    ---------------
- 
-    function Is_Letter (Item : Character) return Boolean is
-    begin
-       return (Char_Map (Item) and Letter) /= 0;
-    end Is_Letter;
- 
-    ------------------------
-    -- Is_Line_Terminator --
-    ------------------------
- 
-    function Is_Line_Terminator (Item : Character) return Boolean is
-    begin
-       return (Char_Map (Item) and Line_Term) /= 0;
-    end Is_Line_Terminator;
- 
-    --------------
-    -- Is_Lower --
-    --------------
- 
-    function Is_Lower (Item : Character) return Boolean is
-    begin
-       return (Char_Map (Item) and Lower) /= 0;
-    end Is_Lower;
- 
-    -------------
-    -- Is_Mark --
-    -------------
- 
-    function Is_Mark (Item : Character) return Boolean is
-       pragma Unreferenced (Item);
-    begin
-       return False;
-    end Is_Mark;
- 
-    ---------------------
-    -- Is_Other_Format --
-    ---------------------
- 
-    function Is_Other_Format (Item : Character) return Boolean is
-    begin
-       return Item = Soft_Hyphen;
-    end Is_Other_Format;
- 
-    ------------------------------
-    -- Is_Punctuation_Connector --
-    ------------------------------
- 
-    function Is_Punctuation_Connector (Item : Character) return Boolean is
-    begin
-       return Item = '_';
-    end Is_Punctuation_Connector;
- 
-    --------------
-    -- Is_Space --
-    --------------
- 
-    function Is_Space (Item : Character) return Boolean is
-    begin
-       return Item = ' ' or else Item = No_Break_Space;
-    end Is_Space;
- 
-    ----------------
-    -- Is_Special --
-    ----------------
- 
-    function Is_Special (Item : Character) return Boolean is
-    begin
-       return (Char_Map (Item) and Special) /= 0;
-    end Is_Special;
- 
-    ---------------
-    -- Is_String --
-    ---------------
- 
-    function Is_String (Item : Wide_String) return Boolean is
-    begin
-       for J in Item'Range loop
-          if Wide_Character'Pos (Item (J)) >= 256 then
-             return False;
-          end if;
-       end loop;
- 
-       return True;
-    end Is_String;
- 
-    --------------
-    -- Is_Upper --
-    --------------
- 
-    function Is_Upper (Item : Character) return Boolean is
-    begin
-       return (Char_Map (Item) and Upper) /= 0;
-    end Is_Upper;
- 
-    --------------
-    -- To_Basic --
-    --------------
- 
-    function To_Basic (Item : Character) return Character is
-    begin
-       return Value (Basic_Map, Item);
-    end To_Basic;
- 
-    function To_Basic (Item : String) return String is
-    begin
-       return Result : String (1 .. Item'Length) do
-          for J in Item'Range loop
-             Result (J - (Item'First - 1)) := Value (Basic_Map, Item (J));
-          end loop;
-       end return;
-    end To_Basic;
- 
-    ------------------
-    -- To_Character --
-    ------------------
- 
-    function To_Character
-      (Item       : Wide_Character;
-       Substitute : Character := ' ') return Character
-    is
-    begin
-       if Is_Character (Item) then
-          return Character'Val (Wide_Character'Pos (Item));
-       else
-          return Substitute;
-       end if;
-    end To_Character;
- 
-    ----------------
-    -- To_ISO_646 --
-    ----------------
- 
-    function To_ISO_646
-      (Item       : Character;
-       Substitute : ISO_646 := ' ') return ISO_646
-    is
-    begin
-       return (if Item in ISO_646 then Item else Substitute);
-    end To_ISO_646;
- 
-    function To_ISO_646
-      (Item       : String;
-       Substitute : ISO_646 := ' ') return String
-    is
-       Result : String (1 .. Item'Length);
- 
-    begin
-       for J in Item'Range loop
-          Result (J - (Item'First - 1)) :=
-            (if Item (J) in ISO_646 then Item (J) else Substitute);
-       end loop;
- 
-       return Result;
-    end To_ISO_646;
- 
-    --------------
-    -- To_Lower --
-    --------------
- 
-    function To_Lower (Item : Character) return Character is
-    begin
-       return Value (Lower_Case_Map, Item);
-    end To_Lower;
- 
-    function To_Lower (Item : String) return String is
-    begin
-       return Result : String (1 .. Item'Length) do
-          for J in Item'Range loop
-             Result (J - (Item'First - 1)) := Value (Lower_Case_Map, Item (J));
-          end loop;
-       end return;
-    end To_Lower;
- 
-    ---------------
-    -- To_String --
-    ---------------
- 
-    function To_String
-      (Item       : Wide_String;
-       Substitute : Character := ' ') return String
-    is
-       Result : String (1 .. Item'Length);
- 
-    begin
-       for J in Item'Range loop
-          Result (J - (Item'First - 1)) := To_Character (Item (J), Substitute);
-       end loop;
- 
-       return Result;
-    end To_String;
- 
-    --------------
-    -- To_Upper --
-    --------------
- 
-    function To_Upper
-      (Item : Character) return Character
-    is
-    begin
-       return Value (Upper_Case_Map, Item);
-    end To_Upper;
- 
-    function To_Upper
-      (Item : String) return String
-    is
-    begin
-       return Result : String (1 .. Item'Length) do
-          for J in Item'Range loop
-             Result (J - (Item'First - 1)) := Value (Upper_Case_Map, Item (J));
-          end loop;
-       end return;
-    end To_Upper;
- 
-    -----------------------
-    -- To_Wide_Character --
-    -----------------------
- 
-    function To_Wide_Character
-      (Item : Character) return Wide_Character
-    is
-    begin
-       return Wide_Character'Val (Character'Pos (Item));
-    end To_Wide_Character;
- 
-    --------------------
-    -- To_Wide_String --
-    --------------------
- 
-    function To_Wide_String
-      (Item : String) return Wide_String
-    is
-       Result : Wide_String (1 .. Item'Length);
- 
-    begin
-       for J in Item'Range loop
-          Result (J - (Item'First - 1)) := To_Wide_Character (Item (J));
-       end loop;
- 
-       return Result;
-    end To_Wide_String;
- 
- end Ada.Characters.Handling;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-chahan.ads gcc-8.1.0/gcc/ada/a-chahan.ads
*** gcc-7.3.0/gcc/ada/a-chahan.ads	Wed Jun 11 12:31:56 2014
--- gcc-8.1.0/gcc/ada/a-chahan.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,159 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --              A D A . C H A R A C T E R S . H A N D L I N G               --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2014, Free Software Foundation, 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 Ada.Characters.Handling is
-    pragma Pure;
-    --  In accordance with Ada 2005 AI-362
- 
-    ----------------------------------------
-    -- Character Classification Functions --
-    ----------------------------------------
- 
-    function Is_Control               (Item : Character) return Boolean;
-    function Is_Graphic               (Item : Character) return Boolean;
-    function Is_Letter                (Item : Character) return Boolean;
-    function Is_Lower                 (Item : Character) return Boolean;
-    function Is_Upper                 (Item : Character) return Boolean;
-    function Is_Basic                 (Item : Character) return Boolean;
-    function Is_Digit                 (Item : Character) return Boolean;
-    function Is_Decimal_Digit         (Item : Character) return Boolean
-      renames Is_Digit;
-    function Is_Hexadecimal_Digit     (Item : Character) return Boolean;
-    function Is_Alphanumeric          (Item : Character) return Boolean;
-    function Is_Special               (Item : Character) return Boolean;
-    function Is_Line_Terminator       (Item : Character) return Boolean;
-    function Is_Mark                  (Item : Character) return Boolean;
-    function Is_Other_Format          (Item : Character) return Boolean;
-    function Is_Punctuation_Connector (Item : Character) return Boolean;
-    function Is_Space                 (Item : Character) return Boolean;
- 
-    ---------------------------------------------------
-    -- Conversion Functions for Character and String --
-    ---------------------------------------------------
- 
-    function To_Lower (Item : Character) return Character;
-    function To_Upper (Item : Character) return Character;
-    function To_Basic (Item : Character) return Character;
- 
-    function To_Lower (Item : String) return String;
-    function To_Upper (Item : String) return String;
-    function To_Basic (Item : String) return String;
- 
-    ----------------------------------------------------------------------
-    -- Classifications of and Conversions Between Character and ISO 646 --
-    ----------------------------------------------------------------------
- 
-    subtype ISO_646 is
-      Character range Character'Val (0) .. Character'Val (127);
- 
-    function Is_ISO_646 (Item : Character) return Boolean;
-    function Is_ISO_646 (Item : String)    return Boolean;
- 
-    function To_ISO_646
-      (Item       : Character;
-       Substitute : ISO_646 := ' ') return ISO_646;
- 
-    function To_ISO_646
-      (Item       : String;
-       Substitute : ISO_646 := ' ') return String;
- 
-    ------------------------------------------------------
-    -- Classifications of Wide_Character and Characters --
-    ------------------------------------------------------
- 
-    --  Ada 2005 AI 395: these functions are moved to Ada.Characters.Conversions
-    --  and are considered obsolete in Ada.Characters.Handling. However we do
-    --  not complain about this obsolescence, since in practice it is necessary
-    --  to use these routines when creating code that is intended to run in
-    --  either Ada 95 or Ada 2005 mode.
- 
-    --  We do however have to flag these if the pragma No_Obsolescent_Features
-    --  restriction is active (see Restrict.Check_Obsolescent_2005_Entity).
- 
-    function Is_Character (Item : Wide_Character) return Boolean;
-    function Is_String    (Item : Wide_String)    return Boolean;
- 
-    ------------------------------------------------------
-    -- Conversions between Wide_Character and Character --
-    ------------------------------------------------------
- 
-    --  Ada 2005 AI 395: these functions are moved to Ada.Characters.Conversions
-    --  and are considered obsolete in Ada.Characters.Handling. However we do
-    --  not complain about this obsolescence, since in practice it is necessary
-    --  to use these routines when creating code that is intended to run in
-    --  either Ada 95 or Ada 2005 mode.
- 
-    --  We do however have to flag these if the pragma No_Obsolescent_Features
-    --  restriction is active (see Restrict.Check_Obsolescent_2005_Entity).
- 
-    function To_Character
-      (Item       : Wide_Character;
-       Substitute : Character := ' ') return Character;
- 
-    function To_String
-      (Item       : Wide_String;
-       Substitute : Character := ' ') return String;
- 
-    function To_Wide_Character
-      (Item : Character) return Wide_Character;
- 
-    function To_Wide_String
-      (Item : String) return Wide_String;
- 
- private
-    pragma Inline (Is_Alphanumeric);
-    pragma Inline (Is_Basic);
-    pragma Inline (Is_Character);
-    pragma Inline (Is_Control);
-    pragma Inline (Is_Digit);
-    pragma Inline (Is_Graphic);
-    pragma Inline (Is_Hexadecimal_Digit);
-    pragma Inline (Is_ISO_646);
-    pragma Inline (Is_Letter);
-    pragma Inline (Is_Line_Terminator);
-    pragma Inline (Is_Lower);
-    pragma Inline (Is_Mark);
-    pragma Inline (Is_Other_Format);
-    pragma Inline (Is_Punctuation_Connector);
-    pragma Inline (Is_Space);
-    pragma Inline (Is_Special);
-    pragma Inline (Is_Upper);
-    pragma Inline (To_Basic);
-    pragma Inline (To_Character);
-    pragma Inline (To_Lower);
-    pragma Inline (To_Upper);
-    pragma Inline (To_Wide_Character);
- 
- end Ada.Characters.Handling;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-charac.ads gcc-8.1.0/gcc/ada/a-charac.ads
*** gcc-7.3.0/gcc/ada/a-charac.ads	Wed Sep 12 11:58:21 2007
--- gcc-8.1.0/gcc/ada/a-charac.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,18 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                       A D A . C H A R A C T E R S                        --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- package Ada.Characters is
-    pragma Pure;
- end Ada.Characters;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-chlat1.ads gcc-8.1.0/gcc/ada/a-chlat1.ads
*** gcc-7.3.0/gcc/ada/a-chlat1.ads	Tue Feb 25 15:15:44 2014
--- gcc-8.1.0/gcc/ada/a-chlat1.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,296 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --               A D A . C H A R A C T E R S . L A T I N _ 1                --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- pragma Compiler_Unit_Warning;
- 
- package Ada.Characters.Latin_1 is
-    pragma Pure;
- 
-    ------------------------
-    -- Control Characters --
-    ------------------------
- 
-    NUL                  : constant Character := Character'Val (0);
-    SOH                  : constant Character := Character'Val (1);
-    STX                  : constant Character := Character'Val (2);
-    ETX                  : constant Character := Character'Val (3);
-    EOT                  : constant Character := Character'Val (4);
-    ENQ                  : constant Character := Character'Val (5);
-    ACK                  : constant Character := Character'Val (6);
-    BEL                  : constant Character := Character'Val (7);
-    BS                   : constant Character := Character'Val (8);
-    HT                   : constant Character := Character'Val (9);
-    LF                   : constant Character := Character'Val (10);
-    VT                   : constant Character := Character'Val (11);
-    FF                   : constant Character := Character'Val (12);
-    CR                   : constant Character := Character'Val (13);
-    SO                   : constant Character := Character'Val (14);
-    SI                   : constant Character := Character'Val (15);
- 
-    DLE                  : constant Character := Character'Val (16);
-    DC1                  : constant Character := Character'Val (17);
-    DC2                  : constant Character := Character'Val (18);
-    DC3                  : constant Character := Character'Val (19);
-    DC4                  : constant Character := Character'Val (20);
-    NAK                  : constant Character := Character'Val (21);
-    SYN                  : constant Character := Character'Val (22);
-    ETB                  : constant Character := Character'Val (23);
-    CAN                  : constant Character := Character'Val (24);
-    EM                   : constant Character := Character'Val (25);
-    SUB                  : constant Character := Character'Val (26);
-    ESC                  : constant Character := Character'Val (27);
-    FS                   : constant Character := Character'Val (28);
-    GS                   : constant Character := Character'Val (29);
-    RS                   : constant Character := Character'Val (30);
-    US                   : constant Character := Character'Val (31);
- 
-    --------------------------------
-    -- ISO 646 Graphic Characters --
-    --------------------------------
- 
-    Space                : constant Character := ' ';  -- Character'Val(32)
-    Exclamation          : constant Character := '!';  -- Character'Val(33)
-    Quotation            : constant Character := '"';  -- Character'Val(34)
-    Number_Sign          : constant Character := '#';  -- Character'Val(35)
-    Dollar_Sign          : constant Character := '$';  -- Character'Val(36)
-    Percent_Sign         : constant Character := '%';  -- Character'Val(37)
-    Ampersand            : constant Character := '&';  -- Character'Val(38)
-    Apostrophe           : constant Character := ''';  -- Character'Val(39)
-    Left_Parenthesis     : constant Character := '(';  -- Character'Val(40)
-    Right_Parenthesis    : constant Character := ')';  -- Character'Val(41)
-    Asterisk             : constant Character := '*';  -- Character'Val(42)
-    Plus_Sign            : constant Character := '+';  -- Character'Val(43)
-    Comma                : constant Character := ',';  -- Character'Val(44)
-    Hyphen               : constant Character := '-';  -- Character'Val(45)
-    Minus_Sign           : Character renames Hyphen;
-    Full_Stop            : constant Character := '.';  -- Character'Val(46)
-    Solidus              : constant Character := '/';  -- Character'Val(47)
- 
-    --  Decimal digits '0' though '9' are at positions 48 through 57
- 
-    Colon                : constant Character := ':';  -- Character'Val(58)
-    Semicolon            : constant Character := ';';  -- Character'Val(59)
-    Less_Than_Sign       : constant Character := '<';  -- Character'Val(60)
-    Equals_Sign          : constant Character := '=';  -- Character'Val(61)
-    Greater_Than_Sign    : constant Character := '>';  -- Character'Val(62)
-    Question             : constant Character := '?';  -- Character'Val(63)
-    Commercial_At        : constant Character := '@';  -- Character'Val(64)
- 
-    --  Letters 'A' through 'Z' are at positions 65 through 90
- 
-    Left_Square_Bracket  : constant Character := '[';  -- Character'Val (91)
-    Reverse_Solidus      : constant Character := '\';  -- Character'Val (92)
-    Right_Square_Bracket : constant Character := ']';  -- Character'Val (93)
-    Circumflex           : constant Character := '^';  -- Character'Val (94)
-    Low_Line             : constant Character := '_';  -- Character'Val (95)
- 
-    Grave                : constant Character := '`';  -- Character'Val (96)
-    LC_A                 : constant Character := 'a';  -- Character'Val (97)
-    LC_B                 : constant Character := 'b';  -- Character'Val (98)
-    LC_C                 : constant Character := 'c';  -- Character'Val (99)
-    LC_D                 : constant Character := 'd';  -- Character'Val (100)
-    LC_E                 : constant Character := 'e';  -- Character'Val (101)
-    LC_F                 : constant Character := 'f';  -- Character'Val (102)
-    LC_G                 : constant Character := 'g';  -- Character'Val (103)
-    LC_H                 : constant Character := 'h';  -- Character'Val (104)
-    LC_I                 : constant Character := 'i';  -- Character'Val (105)
-    LC_J                 : constant Character := 'j';  -- Character'Val (106)
-    LC_K                 : constant Character := 'k';  -- Character'Val (107)
-    LC_L                 : constant Character := 'l';  -- Character'Val (108)
-    LC_M                 : constant Character := 'm';  -- Character'Val (109)
-    LC_N                 : constant Character := 'n';  -- Character'Val (110)
-    LC_O                 : constant Character := 'o';  -- Character'Val (111)
-    LC_P                 : constant Character := 'p';  -- Character'Val (112)
-    LC_Q                 : constant Character := 'q';  -- Character'Val (113)
-    LC_R                 : constant Character := 'r';  -- Character'Val (114)
-    LC_S                 : constant Character := 's';  -- Character'Val (115)
-    LC_T                 : constant Character := 't';  -- Character'Val (116)
-    LC_U                 : constant Character := 'u';  -- Character'Val (117)
-    LC_V                 : constant Character := 'v';  -- Character'Val (118)
-    LC_W                 : constant Character := 'w';  -- Character'Val (119)
-    LC_X                 : constant Character := 'x';  -- Character'Val (120)
-    LC_Y                 : constant Character := 'y';  -- Character'Val (121)
-    LC_Z                 : constant Character := 'z';  -- Character'Val (122)
-    Left_Curly_Bracket   : constant Character := '{';  -- Character'Val (123)
-    Vertical_Line        : constant Character := '|';  -- Character'Val (124)
-    Right_Curly_Bracket  : constant Character := '}';  -- Character'Val (125)
-    Tilde                : constant Character := '~';  -- Character'Val (126)
-    DEL                  : constant Character := Character'Val (127);
- 
-    ---------------------------------
-    -- ISO 6429 Control Characters --
-    ---------------------------------
- 
-    IS4 : Character renames FS;
-    IS3 : Character renames GS;
-    IS2 : Character renames RS;
-    IS1 : Character renames US;
- 
-    Reserved_128         : constant Character := Character'Val (128);
-    Reserved_129         : constant Character := Character'Val (129);
-    BPH                  : constant Character := Character'Val (130);
-    NBH                  : constant Character := Character'Val (131);
-    Reserved_132         : constant Character := Character'Val (132);
-    NEL                  : constant Character := Character'Val (133);
-    SSA                  : constant Character := Character'Val (134);
-    ESA                  : constant Character := Character'Val (135);
-    HTS                  : constant Character := Character'Val (136);
-    HTJ                  : constant Character := Character'Val (137);
-    VTS                  : constant Character := Character'Val (138);
-    PLD                  : constant Character := Character'Val (139);
-    PLU                  : constant Character := Character'Val (140);
-    RI                   : constant Character := Character'Val (141);
-    SS2                  : constant Character := Character'Val (142);
-    SS3                  : constant Character := Character'Val (143);
- 
-    DCS                  : constant Character := Character'Val (144);
-    PU1                  : constant Character := Character'Val (145);
-    PU2                  : constant Character := Character'Val (146);
-    STS                  : constant Character := Character'Val (147);
-    CCH                  : constant Character := Character'Val (148);
-    MW                   : constant Character := Character'Val (149);
-    SPA                  : constant Character := Character'Val (150);
-    EPA                  : constant Character := Character'Val (151);
- 
-    SOS                  : constant Character := Character'Val (152);
-    Reserved_153         : constant Character := Character'Val (153);
-    SCI                  : constant Character := Character'Val (154);
-    CSI                  : constant Character := Character'Val (155);
-    ST                   : constant Character := Character'Val (156);
-    OSC                  : constant Character := Character'Val (157);
-    PM                   : constant Character := Character'Val (158);
-    APC                  : constant Character := Character'Val (159);
- 
-    ------------------------------
-    -- Other Graphic Characters --
-    ------------------------------
- 
-    --  Character positions 160 (16#A0#) .. 175 (16#AF#)
- 
-    No_Break_Space              : constant Character := Character'Val (160);
-    NBSP                        : Character renames No_Break_Space;
-    Inverted_Exclamation        : constant Character := Character'Val (161);
-    Cent_Sign                   : constant Character := Character'Val (162);
-    Pound_Sign                  : constant Character := Character'Val (163);
-    Currency_Sign               : constant Character := Character'Val (164);
-    Yen_Sign                    : constant Character := Character'Val (165);
-    Broken_Bar                  : constant Character := Character'Val (166);
-    Section_Sign                : constant Character := Character'Val (167);
-    Diaeresis                   : constant Character := Character'Val (168);
-    Copyright_Sign              : constant Character := Character'Val (169);
-    Feminine_Ordinal_Indicator  : constant Character := Character'Val (170);
-    Left_Angle_Quotation        : constant Character := Character'Val (171);
-    Not_Sign                    : constant Character := Character'Val (172);
-    Soft_Hyphen                 : constant Character := Character'Val (173);
-    Registered_Trade_Mark_Sign  : constant Character := Character'Val (174);
-    Macron                      : constant Character := Character'Val (175);
- 
-    --  Character positions 176 (16#B0#) .. 191 (16#BF#)
- 
-    Degree_Sign                 : constant Character := Character'Val (176);
-    Ring_Above                  : Character renames Degree_Sign;
-    Plus_Minus_Sign             : constant Character := Character'Val (177);
-    Superscript_Two             : constant Character := Character'Val (178);
-    Superscript_Three           : constant Character := Character'Val (179);
-    Acute                       : constant Character := Character'Val (180);
-    Micro_Sign                  : constant Character := Character'Val (181);
-    Pilcrow_Sign                : constant Character := Character'Val (182);
-    Paragraph_Sign              : Character renames Pilcrow_Sign;
-    Middle_Dot                  : constant Character := Character'Val (183);
-    Cedilla                     : constant Character := Character'Val (184);
-    Superscript_One             : constant Character := Character'Val (185);
-    Masculine_Ordinal_Indicator : constant Character := Character'Val (186);
-    Right_Angle_Quotation       : constant Character := Character'Val (187);
-    Fraction_One_Quarter        : constant Character := Character'Val (188);
-    Fraction_One_Half           : constant Character := Character'Val (189);
-    Fraction_Three_Quarters     : constant Character := Character'Val (190);
-    Inverted_Question           : constant Character := Character'Val (191);
- 
-    --  Character positions 192 (16#C0#) .. 207 (16#CF#)
- 
-    UC_A_Grave                  : constant Character := Character'Val (192);
-    UC_A_Acute                  : constant Character := Character'Val (193);
-    UC_A_Circumflex             : constant Character := Character'Val (194);
-    UC_A_Tilde                  : constant Character := Character'Val (195);
-    UC_A_Diaeresis              : constant Character := Character'Val (196);
-    UC_A_Ring                   : constant Character := Character'Val (197);
-    UC_AE_Diphthong             : constant Character := Character'Val (198);
-    UC_C_Cedilla                : constant Character := Character'Val (199);
-    UC_E_Grave                  : constant Character := Character'Val (200);
-    UC_E_Acute                  : constant Character := Character'Val (201);
-    UC_E_Circumflex             : constant Character := Character'Val (202);
-    UC_E_Diaeresis              : constant Character := Character'Val (203);
-    UC_I_Grave                  : constant Character := Character'Val (204);
-    UC_I_Acute                  : constant Character := Character'Val (205);
-    UC_I_Circumflex             : constant Character := Character'Val (206);
-    UC_I_Diaeresis              : constant Character := Character'Val (207);
- 
-    --  Character positions 208 (16#D0#) .. 223 (16#DF#)
- 
-    UC_Icelandic_Eth            : constant Character := Character'Val (208);
-    UC_N_Tilde                  : constant Character := Character'Val (209);
-    UC_O_Grave                  : constant Character := Character'Val (210);
-    UC_O_Acute                  : constant Character := Character'Val (211);
-    UC_O_Circumflex             : constant Character := Character'Val (212);
-    UC_O_Tilde                  : constant Character := Character'Val (213);
-    UC_O_Diaeresis              : constant Character := Character'Val (214);
-    Multiplication_Sign         : constant Character := Character'Val (215);
-    UC_O_Oblique_Stroke         : constant Character := Character'Val (216);
-    UC_U_Grave                  : constant Character := Character'Val (217);
-    UC_U_Acute                  : constant Character := Character'Val (218);
-    UC_U_Circumflex             : constant Character := Character'Val (219);
-    UC_U_Diaeresis              : constant Character := Character'Val (220);
-    UC_Y_Acute                  : constant Character := Character'Val (221);
-    UC_Icelandic_Thorn          : constant Character := Character'Val (222);
-    LC_German_Sharp_S           : constant Character := Character'Val (223);
- 
-    --  Character positions 224 (16#E0#) .. 239 (16#EF#)
- 
-    LC_A_Grave                  : constant Character := Character'Val (224);
-    LC_A_Acute                  : constant Character := Character'Val (225);
-    LC_A_Circumflex             : constant Character := Character'Val (226);
-    LC_A_Tilde                  : constant Character := Character'Val (227);
-    LC_A_Diaeresis              : constant Character := Character'Val (228);
-    LC_A_Ring                   : constant Character := Character'Val (229);
-    LC_AE_Diphthong             : constant Character := Character'Val (230);
-    LC_C_Cedilla                : constant Character := Character'Val (231);
-    LC_E_Grave                  : constant Character := Character'Val (232);
-    LC_E_Acute                  : constant Character := Character'Val (233);
-    LC_E_Circumflex             : constant Character := Character'Val (234);
-    LC_E_Diaeresis              : constant Character := Character'Val (235);
-    LC_I_Grave                  : constant Character := Character'Val (236);
-    LC_I_Acute                  : constant Character := Character'Val (237);
-    LC_I_Circumflex             : constant Character := Character'Val (238);
-    LC_I_Diaeresis              : constant Character := Character'Val (239);
- 
-    --  Character positions 240 (16#F0#) .. 255 (16#FF)
-    LC_Icelandic_Eth            : constant Character := Character'Val (240);
-    LC_N_Tilde                  : constant Character := Character'Val (241);
-    LC_O_Grave                  : constant Character := Character'Val (242);
-    LC_O_Acute                  : constant Character := Character'Val (243);
-    LC_O_Circumflex             : constant Character := Character'Val (244);
-    LC_O_Tilde                  : constant Character := Character'Val (245);
-    LC_O_Diaeresis              : constant Character := Character'Val (246);
-    Division_Sign               : constant Character := Character'Val (247);
-    LC_O_Oblique_Stroke         : constant Character := Character'Val (248);
-    LC_U_Grave                  : constant Character := Character'Val (249);
-    LC_U_Acute                  : constant Character := Character'Val (250);
-    LC_U_Circumflex             : constant Character := Character'Val (251);
-    LC_U_Diaeresis              : constant Character := Character'Val (252);
-    LC_Y_Acute                  : constant Character := Character'Val (253);
-    LC_Icelandic_Thorn          : constant Character := Character'Val (254);
-    LC_Y_Diaeresis              : constant Character := Character'Val (255);
- 
- end Ada.Characters.Latin_1;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-chlat9.ads gcc-8.1.0/gcc/ada/a-chlat9.ads
*** gcc-7.3.0/gcc/ada/a-chlat9.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-chlat9.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,332 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --               A D A . C H A R A C T E R S . L A T I N _ 9                --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2002-2009, Free Software Foundation, 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 modifications made to Ada.Characters.Latin_1,  noted --
- -- in the text, to derive the equivalent Latin-9 package.                   --
- --                                                                          --
- -- GNAT is 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 definitions for Latin-9 (ISO-8859-15) analogous to
- --  those defined in the standard package Ada.Characters.Latin_1 for Latin-1.
- 
- package Ada.Characters.Latin_9 is
-    pragma Pure;
- 
-    ------------------------
-    -- Control Characters --
-    ------------------------
- 
-    NUL                  : constant Character := Character'Val (0);
-    SOH                  : constant Character := Character'Val (1);
-    STX                  : constant Character := Character'Val (2);
-    ETX                  : constant Character := Character'Val (3);
-    EOT                  : constant Character := Character'Val (4);
-    ENQ                  : constant Character := Character'Val (5);
-    ACK                  : constant Character := Character'Val (6);
-    BEL                  : constant Character := Character'Val (7);
-    BS                   : constant Character := Character'Val (8);
-    HT                   : constant Character := Character'Val (9);
-    LF                   : constant Character := Character'Val (10);
-    VT                   : constant Character := Character'Val (11);
-    FF                   : constant Character := Character'Val (12);
-    CR                   : constant Character := Character'Val (13);
-    SO                   : constant Character := Character'Val (14);
-    SI                   : constant Character := Character'Val (15);
- 
-    DLE                  : constant Character := Character'Val (16);
-    DC1                  : constant Character := Character'Val (17);
-    DC2                  : constant Character := Character'Val (18);
-    DC3                  : constant Character := Character'Val (19);
-    DC4                  : constant Character := Character'Val (20);
-    NAK                  : constant Character := Character'Val (21);
-    SYN                  : constant Character := Character'Val (22);
-    ETB                  : constant Character := Character'Val (23);
-    CAN                  : constant Character := Character'Val (24);
-    EM                   : constant Character := Character'Val (25);
-    SUB                  : constant Character := Character'Val (26);
-    ESC                  : constant Character := Character'Val (27);
-    FS                   : constant Character := Character'Val (28);
-    GS                   : constant Character := Character'Val (29);
-    RS                   : constant Character := Character'Val (30);
-    US                   : constant Character := Character'Val (31);
- 
-    --------------------------------
-    -- ISO 646 Graphic Characters --
-    --------------------------------
- 
-    Space                : constant Character := ' ';  -- Character'Val(32)
-    Exclamation          : constant Character := '!';  -- Character'Val(33)
-    Quotation            : constant Character := '"';  -- Character'Val(34)
-    Number_Sign          : constant Character := '#';  -- Character'Val(35)
-    Dollar_Sign          : constant Character := '$';  -- Character'Val(36)
-    Percent_Sign         : constant Character := '%';  -- Character'Val(37)
-    Ampersand            : constant Character := '&';  -- Character'Val(38)
-    Apostrophe           : constant Character := ''';  -- Character'Val(39)
-    Left_Parenthesis     : constant Character := '(';  -- Character'Val(40)
-    Right_Parenthesis    : constant Character := ')';  -- Character'Val(41)
-    Asterisk             : constant Character := '*';  -- Character'Val(42)
-    Plus_Sign            : constant Character := '+';  -- Character'Val(43)
-    Comma                : constant Character := ',';  -- Character'Val(44)
-    Hyphen               : constant Character := '-';  -- Character'Val(45)
-    Minus_Sign           : Character renames Hyphen;
-    Full_Stop            : constant Character := '.';  -- Character'Val(46)
-    Solidus              : constant Character := '/';  -- Character'Val(47)
- 
-    --  Decimal digits '0' though '9' are at positions 48 through 57
- 
-    Colon                : constant Character := ':';  -- Character'Val(58)
-    Semicolon            : constant Character := ';';  -- Character'Val(59)
-    Less_Than_Sign       : constant Character := '<';  -- Character'Val(60)
-    Equals_Sign          : constant Character := '=';  -- Character'Val(61)
-    Greater_Than_Sign    : constant Character := '>';  -- Character'Val(62)
-    Question             : constant Character := '?';  -- Character'Val(63)
- 
-    Commercial_At        : constant Character := '@';  -- Character'Val(64)
- 
-    --  Letters 'A' through 'Z' are at positions 65 through 90
- 
-    Left_Square_Bracket  : constant Character := '[';  -- Character'Val (91)
-    Reverse_Solidus      : constant Character := '\';  -- Character'Val (92)
-    Right_Square_Bracket : constant Character := ']';  -- Character'Val (93)
-    Circumflex           : constant Character := '^';  -- Character'Val (94)
-    Low_Line             : constant Character := '_';  -- Character'Val (95)
- 
-    Grave                : constant Character := '`';  -- Character'Val (96)
-    LC_A                 : constant Character := 'a';  -- Character'Val (97)
-    LC_B                 : constant Character := 'b';  -- Character'Val (98)
-    LC_C                 : constant Character := 'c';  -- Character'Val (99)
-    LC_D                 : constant Character := 'd';  -- Character'Val (100)
-    LC_E                 : constant Character := 'e';  -- Character'Val (101)
-    LC_F                 : constant Character := 'f';  -- Character'Val (102)
-    LC_G                 : constant Character := 'g';  -- Character'Val (103)
-    LC_H                 : constant Character := 'h';  -- Character'Val (104)
-    LC_I                 : constant Character := 'i';  -- Character'Val (105)
-    LC_J                 : constant Character := 'j';  -- Character'Val (106)
-    LC_K                 : constant Character := 'k';  -- Character'Val (107)
-    LC_L                 : constant Character := 'l';  -- Character'Val (108)
-    LC_M                 : constant Character := 'm';  -- Character'Val (109)
-    LC_N                 : constant Character := 'n';  -- Character'Val (110)
-    LC_O                 : constant Character := 'o';  -- Character'Val (111)
-    LC_P                 : constant Character := 'p';  -- Character'Val (112)
-    LC_Q                 : constant Character := 'q';  -- Character'Val (113)
-    LC_R                 : constant Character := 'r';  -- Character'Val (114)
-    LC_S                 : constant Character := 's';  -- Character'Val (115)
-    LC_T                 : constant Character := 't';  -- Character'Val (116)
-    LC_U                 : constant Character := 'u';  -- Character'Val (117)
-    LC_V                 : constant Character := 'v';  -- Character'Val (118)
-    LC_W                 : constant Character := 'w';  -- Character'Val (119)
-    LC_X                 : constant Character := 'x';  -- Character'Val (120)
-    LC_Y                 : constant Character := 'y';  -- Character'Val (121)
-    LC_Z                 : constant Character := 'z';  -- Character'Val (122)
-    Left_Curly_Bracket   : constant Character := '{';  -- Character'Val (123)
-    Vertical_Line        : constant Character := '|';  -- Character'Val (124)
-    Right_Curly_Bracket  : constant Character := '}';  -- Character'Val (125)
-    Tilde                : constant Character := '~';  -- Character'Val (126)
-    DEL                  : constant Character := Character'Val (127);
- 
-    ---------------------------------
-    -- ISO 6429 Control Characters --
-    ---------------------------------
- 
-    IS4 : Character renames FS;
-    IS3 : Character renames GS;
-    IS2 : Character renames RS;
-    IS1 : Character renames US;
- 
-    Reserved_128         : constant Character := Character'Val (128);
-    Reserved_129         : constant Character := Character'Val (129);
-    BPH                  : constant Character := Character'Val (130);
-    NBH                  : constant Character := Character'Val (131);
-    Reserved_132         : constant Character := Character'Val (132);
-    NEL                  : constant Character := Character'Val (133);
-    SSA                  : constant Character := Character'Val (134);
-    ESA                  : constant Character := Character'Val (135);
-    HTS                  : constant Character := Character'Val (136);
-    HTJ                  : constant Character := Character'Val (137);
-    VTS                  : constant Character := Character'Val (138);
-    PLD                  : constant Character := Character'Val (139);
-    PLU                  : constant Character := Character'Val (140);
-    RI                   : constant Character := Character'Val (141);
-    SS2                  : constant Character := Character'Val (142);
-    SS3                  : constant Character := Character'Val (143);
- 
-    DCS                  : constant Character := Character'Val (144);
-    PU1                  : constant Character := Character'Val (145);
-    PU2                  : constant Character := Character'Val (146);
-    STS                  : constant Character := Character'Val (147);
-    CCH                  : constant Character := Character'Val (148);
-    MW                   : constant Character := Character'Val (149);
-    SPA                  : constant Character := Character'Val (150);
-    EPA                  : constant Character := Character'Val (151);
- 
-    SOS                  : constant Character := Character'Val (152);
-    Reserved_153         : constant Character := Character'Val (153);
-    SCI                  : constant Character := Character'Val (154);
-    CSI                  : constant Character := Character'Val (155);
-    ST                   : constant Character := Character'Val (156);
-    OSC                  : constant Character := Character'Val (157);
-    PM                   : constant Character := Character'Val (158);
-    APC                  : constant Character := Character'Val (159);
- 
-    ------------------------------
-    -- Other Graphic Characters --
-    ------------------------------
- 
-    --  Character positions 160 (16#A0#) .. 175 (16#AF#)
- 
-    No_Break_Space              : constant Character := Character'Val (160);
-    NBSP                        : Character renames No_Break_Space;
-    Inverted_Exclamation        : constant Character := Character'Val (161);
-    Cent_Sign                   : constant Character := Character'Val (162);
-    Pound_Sign                  : constant Character := Character'Val (163);
-    Euro_Sign                   : constant Character := Character'Val (164);
-    Yen_Sign                    : constant Character := Character'Val (165);
-    UC_S_Caron                  : constant Character := Character'Val (166);
-    Section_Sign                : constant Character := Character'Val (167);
-    LC_S_Caron                  : constant Character := Character'Val (168);
-    Copyright_Sign              : constant Character := Character'Val (169);
-    Feminine_Ordinal_Indicator  : constant Character := Character'Val (170);
-    Left_Angle_Quotation        : constant Character := Character'Val (171);
-    Not_Sign                    : constant Character := Character'Val (172);
-    Soft_Hyphen                 : constant Character := Character'Val (173);
-    Registered_Trade_Mark_Sign  : constant Character := Character'Val (174);
-    Macron                      : constant Character := Character'Val (175);
- 
-    --  Character positions 176 (16#B0#) .. 191 (16#BF#)
- 
-    Degree_Sign                 : constant Character := Character'Val (176);
-    Ring_Above                  : Character renames Degree_Sign;
-    Plus_Minus_Sign             : constant Character := Character'Val (177);
-    Superscript_Two             : constant Character := Character'Val (178);
-    Superscript_Three           : constant Character := Character'Val (179);
-    UC_Z_Caron                  : constant Character := Character'Val (180);
-    Micro_Sign                  : constant Character := Character'Val (181);
-    Pilcrow_Sign                : constant Character := Character'Val (182);
-    Paragraph_Sign              : Character renames Pilcrow_Sign;
-    Middle_Dot                  : constant Character := Character'Val (183);
-    LC_Z_Caron                  : constant Character := Character'Val (184);
-    Superscript_One             : constant Character := Character'Val (185);
-    Masculine_Ordinal_Indicator : constant Character := Character'Val (186);
-    Right_Angle_Quotation       : constant Character := Character'Val (187);
-    UC_Ligature_OE              : constant Character := Character'Val (188);
-    LC_Ligature_OE              : constant Character := Character'Val (189);
-    UC_Y_Diaeresis              : constant Character := Character'Val (190);
-    Inverted_Question           : constant Character := Character'Val (191);
- 
-    --  Character positions 192 (16#C0#) .. 207 (16#CF#)
- 
-    UC_A_Grave                  : constant Character := Character'Val (192);
-    UC_A_Acute                  : constant Character := Character'Val (193);
-    UC_A_Circumflex             : constant Character := Character'Val (194);
-    UC_A_Tilde                  : constant Character := Character'Val (195);
-    UC_A_Diaeresis              : constant Character := Character'Val (196);
-    UC_A_Ring                   : constant Character := Character'Val (197);
-    UC_AE_Diphthong             : constant Character := Character'Val (198);
-    UC_C_Cedilla                : constant Character := Character'Val (199);
-    UC_E_Grave                  : constant Character := Character'Val (200);
-    UC_E_Acute                  : constant Character := Character'Val (201);
-    UC_E_Circumflex             : constant Character := Character'Val (202);
-    UC_E_Diaeresis              : constant Character := Character'Val (203);
-    UC_I_Grave                  : constant Character := Character'Val (204);
-    UC_I_Acute                  : constant Character := Character'Val (205);
-    UC_I_Circumflex             : constant Character := Character'Val (206);
-    UC_I_Diaeresis              : constant Character := Character'Val (207);
- 
-    --  Character positions 208 (16#D0#) .. 223 (16#DF#)
- 
-    UC_Icelandic_Eth            : constant Character := Character'Val (208);
-    UC_N_Tilde                  : constant Character := Character'Val (209);
-    UC_O_Grave                  : constant Character := Character'Val (210);
-    UC_O_Acute                  : constant Character := Character'Val (211);
-    UC_O_Circumflex             : constant Character := Character'Val (212);
-    UC_O_Tilde                  : constant Character := Character'Val (213);
-    UC_O_Diaeresis              : constant Character := Character'Val (214);
-    Multiplication_Sign         : constant Character := Character'Val (215);
-    UC_O_Oblique_Stroke         : constant Character := Character'Val (216);
-    UC_U_Grave                  : constant Character := Character'Val (217);
-    UC_U_Acute                  : constant Character := Character'Val (218);
-    UC_U_Circumflex             : constant Character := Character'Val (219);
-    UC_U_Diaeresis              : constant Character := Character'Val (220);
-    UC_Y_Acute                  : constant Character := Character'Val (221);
-    UC_Icelandic_Thorn          : constant Character := Character'Val (222);
-    LC_German_Sharp_S           : constant Character := Character'Val (223);
- 
-    --  Character positions 224 (16#E0#) .. 239 (16#EF#)
- 
-    LC_A_Grave                  : constant Character := Character'Val (224);
-    LC_A_Acute                  : constant Character := Character'Val (225);
-    LC_A_Circumflex             : constant Character := Character'Val (226);
-    LC_A_Tilde                  : constant Character := Character'Val (227);
-    LC_A_Diaeresis              : constant Character := Character'Val (228);
-    LC_A_Ring                   : constant Character := Character'Val (229);
-    LC_AE_Diphthong             : constant Character := Character'Val (230);
-    LC_C_Cedilla                : constant Character := Character'Val (231);
-    LC_E_Grave                  : constant Character := Character'Val (232);
-    LC_E_Acute                  : constant Character := Character'Val (233);
-    LC_E_Circumflex             : constant Character := Character'Val (234);
-    LC_E_Diaeresis              : constant Character := Character'Val (235);
-    LC_I_Grave                  : constant Character := Character'Val (236);
-    LC_I_Acute                  : constant Character := Character'Val (237);
-    LC_I_Circumflex             : constant Character := Character'Val (238);
-    LC_I_Diaeresis              : constant Character := Character'Val (239);
- 
-    --  Character positions 240 (16#F0#) .. 255 (16#FF)
-    LC_Icelandic_Eth            : constant Character := Character'Val (240);
-    LC_N_Tilde                  : constant Character := Character'Val (241);
-    LC_O_Grave                  : constant Character := Character'Val (242);
-    LC_O_Acute                  : constant Character := Character'Val (243);
-    LC_O_Circumflex             : constant Character := Character'Val (244);
-    LC_O_Tilde                  : constant Character := Character'Val (245);
-    LC_O_Diaeresis              : constant Character := Character'Val (246);
-    Division_Sign               : constant Character := Character'Val (247);
-    LC_O_Oblique_Stroke         : constant Character := Character'Val (248);
-    LC_U_Grave                  : constant Character := Character'Val (249);
-    LC_U_Acute                  : constant Character := Character'Val (250);
-    LC_U_Circumflex             : constant Character := Character'Val (251);
-    LC_U_Diaeresis              : constant Character := Character'Val (252);
-    LC_Y_Acute                  : constant Character := Character'Val (253);
-    LC_Icelandic_Thorn          : constant Character := Character'Val (254);
-    LC_Y_Diaeresis              : constant Character := Character'Val (255);
- 
-    ------------------------------------------------
-    -- Summary of Changes from Latin-1 => Latin-9 --
-    ------------------------------------------------
- 
-    --   164     Currency                => Euro_Sign
-    --   166     Broken_Bar              => UC_S_Caron
-    --   168     Diaeresis               => LC_S_Caron
-    --   180     Acute                   => UC_Z_Caron
-    --   184     Cedilla                 => LC_Z_Caron
-    --   188     Fraction_One_Quarter    => UC_Ligature_OE
-    --   189     Fraction_One_Half       => LC_Ligature_OE
-    --   190     Fraction_Three_Quarters => UC_Y_Diaeresis
- 
- end Ada.Characters.Latin_9;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-chtgbk.adb gcc-8.1.0/gcc/ada/a-chtgbk.adb
*** gcc-7.3.0/gcc/ada/a-chtgbk.adb	Tue Oct 20 10:23:46 2015
--- gcc-8.1.0/gcc/ada/a-chtgbk.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,346 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --              ADA.CONTAINERS.HASH_TABLES.GENERIC_BOUNDED_KEYS             --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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_Bounded_Keys is
- 
-    pragma Warnings (Off, "variable ""Busy*"" is not referenced");
-    pragma Warnings (Off, "variable ""Lock*"" is not referenced");
-    --  See comment in Ada.Containers.Helpers
- 
-    -----------------------------
-    -- Checked_Equivalent_Keys --
-    -----------------------------
- 
-    function Checked_Equivalent_Keys
-      (HT   : aliased in out Hash_Table_Type'Class;
-       Key  : Key_Type;
-       Node : Count_Type) return Boolean
-    is
-       Lock : With_Lock (HT.TC'Unrestricted_Access);
-    begin
-       return Equivalent_Keys (Key, HT.Nodes (Node));
-    end Checked_Equivalent_Keys;
- 
-    -------------------
-    -- Checked_Index --
-    -------------------
- 
-    function Checked_Index
-      (HT  : aliased in out Hash_Table_Type'Class;
-       Key : Key_Type) return Hash_Type
-    is
-       Lock : With_Lock (HT.TC'Unrestricted_Access);
-    begin
-       return HT.Buckets'First + Hash (Key) mod HT.Buckets'Length;
-    end Checked_Index;
- 
-    --------------------------
-    -- Delete_Key_Sans_Free --
-    --------------------------
- 
-    procedure Delete_Key_Sans_Free
-      (HT  : in out Hash_Table_Type'Class;
-       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;
- 
-       --  Per AI05-0022, the container implementation is required to detect
-       --  element tampering by a generic actual subprogram.
- 
-       TC_Check (HT.TC);
- 
-       Indx := Checked_Index (HT, Key);
-       X := HT.Buckets (Indx);
- 
-       if X = 0 then
-          return;
-       end if;
- 
-       if Checked_Equivalent_Keys (HT, Key, X) then
-          TC_Check (HT.TC);
-          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 Checked_Equivalent_Keys (HT, Key, X) then
-             TC_Check (HT.TC);
-             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'Class;
-       Key : Key_Type) return Count_Type
-    is
-       Indx : Hash_Type;
-       Node : Count_Type;
- 
-    begin
-       if HT.Length = 0 then
-          return 0;
-       end if;
- 
-       Indx := Checked_Index (HT'Unrestricted_Access.all, Key);
- 
-       Node := HT.Buckets (Indx);
-       while Node /= 0 loop
-          if Checked_Equivalent_Keys
-            (HT'Unrestricted_Access.all, Key, 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'Class;
-       Key      : Key_Type;
-       Node     : out Count_Type;
-       Inserted : out Boolean)
-    is
-       Indx : Hash_Type;
- 
-    begin
-       --  Per AI05-0022, the container implementation is required to detect
-       --  element tampering by a generic actual subprogram.
- 
-       TC_Check (HT.TC);
- 
-       Indx := Checked_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;
- 
-          Node := New_Node;
-          Set_Next (HT.Nodes (Node), Next => 0);
- 
-          Inserted := True;
- 
-          HT.Buckets (Indx) := Node;
-          HT.Length := HT.Length + 1;
- 
-          return;
-       end if;
- 
-       loop
-          if Checked_Equivalent_Keys (HT, Key, 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;
- 
-       Node := New_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'Class;
-       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 := Checked_Index (HT, Key);
- 
-       New_Bucket : Count_Type renames BB (New_Indx);
-       N, M       : Count_Type;
- 
-    begin
-       --  Per AI05-0022, the container implementation is required to detect
-       --  element tampering by a generic actual subprogram.
- 
-       --  The following block appears to be vestigial -- this should be done
-       --  using Checked_Index instead. Also, we might have to move the actual
-       --  tampering checks to the top of the subprogram, in order to prevent
-       --  infinite recursion when calling Hash. (This is similar to how Insert
-       --  and Delete are implemented.) This implies that we will have to defer
-       --  the computation of New_Index until after the tampering check. ???
- 
-       declare
-          Lock : With_Lock (HT.TC'Unrestricted_Access);
-       begin
-          Old_Indx := HT.Buckets'First + Hash (NN (Node)) mod HT.Buckets'Length;
-       end;
- 
-       --  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 Checked_Equivalent_Keys (HT, Key, Node) then
-          TE_Check (HT.TC);
- 
-          --  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 Checked_Equivalent_Keys (HT, Key, 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 tentatively allowed. We now perform the standard
-       --  checks to determine whether the hash table is locked (because you
-       --  cannot change an element while it's in use by Query_Element or
-       --  Update_Element), or if the container is busy (because moving a
-       --  node to a different bucket would interfere with iteration).
- 
-       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.
- 
-          TE_Check (HT.TC);
- 
-          Assign (NN (Node), Key);
-          return;
-       end if;
- 
-       --  The node is a bucket different from the bucket implied by Key
- 
-       TC_Check (HT.TC);
- 
-       --  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'Class;
-       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_Bounded_Keys;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-chtgbk.ads gcc-8.1.0/gcc/ada/a-chtgbk.ads
*** gcc-7.3.0/gcc/ada/a-chtgbk.ads	Tue Oct 20 10:23:46 2015
--- gcc-8.1.0/gcc/ada/a-chtgbk.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,120 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --              ADA.CONTAINERS.HASH_TABLES.GENERIC_BOUNDED_KEYS             --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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_Bounded_Hash_Table_Types (<>);
- 
-    use HT_Types, HT_Types.Implementation;
- 
-    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_Bounded_Keys is
-    pragma Pure;
- 
-    function Index
-      (HT  : Hash_Table_Type'Class;
-       Key : Key_Type) return Hash_Type;
-    pragma Inline (Index);
-    --  Returns the bucket number (array index value) for the given key
- 
-    function Checked_Index
-      (HT  : aliased in out Hash_Table_Type'Class;
-       Key : Key_Type) return Hash_Type;
-    pragma Inline (Checked_Index);
-    --  Calls Index, but also locks and unlocks the container, per AI05-0022, in
-    --  order to detect element tampering by the generic actual Hash function.
- 
-    function Checked_Equivalent_Keys
-      (HT   : aliased in out Hash_Table_Type'Class;
-       Key  : Key_Type;
-       Node : Count_Type) return Boolean;
-    --  Calls Equivalent_Keys, but locks and unlocks the container, per
-    --  AI05-0022, in order to detect element tampering by that generic actual.
- 
-    procedure Delete_Key_Sans_Free
-      (HT  : in out Hash_Table_Type'Class;
-       Key : Key_Type;
-       X   : out Count_Type);
-    --  Removes the node (if any) with the given key from the hash table,
-    --  without deallocating it. Program_Error is raised if the hash
-    --  table is busy.
- 
-    function Find
-      (HT  : Hash_Table_Type'Class;
-       Key : Key_Type) return Count_Type;
-    --  Returns the node (if any) corresponding to the given key
- 
-    generic
-       with function New_Node return Count_Type;
-    procedure Generic_Conditional_Insert
-      (HT       : in out Hash_Table_Type'Class;
-       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. Program_Error is
-    --  raised if the hash table is busy.
- 
-    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'Class;
-       Node : Count_Type;
-       Key  : Key_Type);
-    --  Assigns Key to Node, possibly changing its equivalence class. If Node
-    --  is in the same equivalence class as Key (that is, it's already in the
-    --  bucket implied by Key), then if the hash table is locked then
-    --  Program_Error is raised; otherwise Assign is called to assign Key to
-    --  Node. If Node is in a different bucket from Key, then Program_Error is
-    --  raised if the hash table is busy. Otherwise it Assigns Key to Node and
-    --  moves the Node 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 map, and so if Key is equivalent to some other node then
-    --  Program_Error is raised.
- 
- end Ada.Containers.Hash_Tables.Generic_Bounded_Keys;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-chtgbo.adb gcc-8.1.0/gcc/ada/a-chtgbo.adb
*** gcc-7.3.0/gcc/ada/a-chtgbo.adb	Wed Apr 27 13:15:25 2016
--- gcc-8.1.0/gcc/ada/a-chtgbo.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,553 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --           ADA.CONTAINERS.HASH_TABLES.GENERIC_BOUNDED_OPERATIONS          --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2004-2016, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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_Bounded_Operations is
- 
-    pragma Warnings (Off, "variable ""Busy*"" is not referenced");
-    pragma Warnings (Off, "variable ""Lock*"" is not referenced");
-    --  See comment in Ada.Containers.Helpers
- 
-    -------------------
-    -- Checked_Index --
-    -------------------
- 
-    function Checked_Index
-      (Hash_Table : aliased in out Hash_Table_Type'Class;
-       Node       : Count_Type) return Hash_Type
-    is
-       Lock : With_Lock (Hash_Table.TC'Unrestricted_Access);
-    begin
-       return Index (Hash_Table, Hash_Table.Nodes (Node));
-    end Checked_Index;
- 
-    -----------
-    -- Clear --
-    -----------
- 
-    procedure Clear (HT : in out Hash_Table_Type'Class) is
-    begin
-       TC_Check (HT.TC);
- 
-       HT.Length := 0;
-       --  HT.Busy := 0;
-       --  HT.Lock := 0;
-       HT.Free := -1;
-       HT.Buckets := (others => 0);  -- optimize this somehow ???
-    end Clear;
- 
-    --------------------------
-    -- Delete_Node_At_Index --
-    --------------------------
- 
-    procedure Delete_Node_At_Index
-      (HT   : in out Hash_Table_Type'Class;
-       Indx : Hash_Type;
-       X    : Count_Type)
-    is
-       Prev : Count_Type;
-       Curr : Count_Type;
- 
-    begin
-       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;
- 
-          Prev := Curr;
-       end loop;
-    end Delete_Node_At_Index;
- 
-    ---------------------------
-    -- Delete_Node_Sans_Free --
-    ---------------------------
- 
-    procedure Delete_Node_Sans_Free
-      (HT : in out Hash_Table_Type'Class;
-       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 := Checked_Index (HT, 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'Class) 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'Class;
-       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 Parent 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'Class;
-       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'Class) return Boolean
-    is
-       --  Per AI05-0022, the container implementation is required to detect
-       --  element tampering by a generic actual subprogram.
- 
-       Lock_L : With_Lock (L.TC'Unrestricted_Access);
-       Lock_R : With_Lock (R.TC'Unrestricted_Access);
- 
-       L_Index : Hash_Type;
-       L_Node  : Count_Type;
- 
-       N : Count_Type;
- 
-    begin
-       if L'Address = R'Address then
-          return True;
-       end if;
- 
-       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'Class) 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'Class)
-    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 := Checked_Index (HT, 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'Class)
-    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'Class;
-       Node : Node_Type) return Hash_Type is
-    begin
-       return Index (HT.Buckets, Node);
-    end Index;
- 
-    ----------
-    -- Next --
-    ----------
- 
-    function Next
-      (HT   : Hash_Table_Type'Class;
-       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 := Checked_Index (HT'Unrestricted_Access.all, 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_Bounded_Operations;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-chtgbo.ads gcc-8.1.0/gcc/ada/a-chtgbo.ads
*** gcc-7.3.0/gcc/ada/a-chtgbo.ads	Mon Apr 18 12:58:22 2016
--- gcc-8.1.0/gcc/ada/a-chtgbo.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,156 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --           ADA.CONTAINERS.HASH_TABLES.GENERIC_BOUNDED_OPERATIONS          --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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_Bounded_Hash_Table_Types (<>);
- 
-    use HT_Types, HT_Types.Implementation;
- 
-    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_Bounded_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'Class;
-       Node : Node_Type) return Hash_Type;
-    pragma Inline (Index);
-    --  Uses the hash value of Node to compute its Hash_Table buckets array
-    --  index.
- 
-    function Checked_Index
-      (Hash_Table : aliased in out Hash_Table_Type'Class;
-       Node       : Count_Type) return Hash_Type;
-    --  Calls Index, but also locks and unlocks the container, per AI05-0022, in
-    --  order to detect element tampering by the generic actual Hash function.
- 
-    generic
-       with function Find
-         (HT  : Hash_Table_Type'Class;
-          Key : Node_Type) return Boolean;
-    function Generic_Equal (L, R : Hash_Table_Type'Class) 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'Class);
-    --  Deallocates each node in hash table HT. (Note that it only deallocates
-    --  the nodes, not the buckets array.) Program_Error is raised if the hash
-    --  table is busy.
- 
-    procedure Delete_Node_At_Index
-      (HT   : in out Hash_Table_Type'Class;
-       Indx : Hash_Type;
-       X    : Count_Type);
-    --  Delete a node whose bucket position is known. extracted from following
-    --  subprogram, but also used directly to remove a node whose element has
-    --  been modified through a key_preserving reference: in that case we cannot
-    --  use the value of the element precisely because the current value does
-    --  not correspond to the hash code that determines its bucket.
- 
-    procedure Delete_Node_Sans_Free
-      (HT : in out Hash_Table_Type'Class;
-       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'Class;
-       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'Class;
-       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'Class) return Count_Type;
-    --  Returns the head of the list in the first (lowest-index) non-empty
-    --  bucket.
- 
-    function Next
-      (HT   : Hash_Table_Type'Class;
-       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'Class);
-    --  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'Class);
-    --  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'Class);
-    --  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_Bounded_Operations;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-chtgke.adb gcc-8.1.0/gcc/ada/a-chtgke.adb
*** gcc-7.3.0/gcc/ada/a-chtgke.adb	Tue Oct 20 10:23:46 2015
--- gcc-8.1.0/gcc/ada/a-chtgke.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,329 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                 ADA.CONTAINERS.HASH_TABLES.GENERIC_KEYS                  --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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_Keys is
- 
-    pragma Warnings (Off, "variable ""Busy*"" is not referenced");
-    pragma Warnings (Off, "variable ""Lock*"" is not referenced");
-    --  See comment in Ada.Containers.Helpers
- 
-    -----------------------------
-    -- Checked_Equivalent_Keys --
-    -----------------------------
- 
-    function Checked_Equivalent_Keys
-      (HT   : aliased in out Hash_Table_Type;
-       Key  : Key_Type;
-       Node : Node_Access) return Boolean
-    is
-       Lock : With_Lock (HT.TC'Unrestricted_Access);
-    begin
-       return Equivalent_Keys (Key, Node);
-    end Checked_Equivalent_Keys;
- 
-    -------------------
-    -- Checked_Index --
-    -------------------
- 
-    function Checked_Index
-      (HT  : aliased in out Hash_Table_Type;
-       Key : Key_Type) return Hash_Type
-    is
-       Lock : With_Lock (HT.TC'Unrestricted_Access);
-    begin
-       return Hash (Key) mod HT.Buckets'Length;
-    end Checked_Index;
- 
-    --------------------------
-    -- Delete_Key_Sans_Free --
-    --------------------------
- 
-    procedure Delete_Key_Sans_Free
-      (HT  : in out Hash_Table_Type;
-       Key : Key_Type;
-       X   : out Node_Access)
-    is
-       Indx : Hash_Type;
-       Prev : Node_Access;
- 
-    begin
-       if HT.Length = 0 then
-          X := null;
-          return;
-       end if;
- 
-       --  Per AI05-0022, the container implementation is required to detect
-       --  element tampering by a generic actual subprogram.
- 
-       TC_Check (HT.TC);
- 
-       Indx := Checked_Index (HT, Key);
-       X := HT.Buckets (Indx);
- 
-       if X = null then
-          return;
-       end if;
- 
-       if Checked_Equivalent_Keys (HT, Key, X) then
-          TC_Check (HT.TC);
-          HT.Buckets (Indx) := Next (X);
-          HT.Length := HT.Length - 1;
-          return;
-       end if;
- 
-       loop
-          Prev := X;
-          X := Next (Prev);
- 
-          if X = null then
-             return;
-          end if;
- 
-          if Checked_Equivalent_Keys (HT, Key, X) then
-             TC_Check (HT.TC);
-             Set_Next (Node => Prev, Next => Next (X));
-             HT.Length := HT.Length - 1;
-             return;
-          end if;
-       end loop;
-    end Delete_Key_Sans_Free;
- 
-    ----------
-    -- Find --
-    ----------
- 
-    function Find
-      (HT  : aliased in out Hash_Table_Type;
-       Key : Key_Type) return Node_Access
-    is
-       Indx : Hash_Type;
-       Node : Node_Access;
- 
-    begin
-       if HT.Length = 0 then
-          return null;
-       end if;
- 
-       Indx := Checked_Index (HT, Key);
- 
-       Node := HT.Buckets (Indx);
-       while Node /= null loop
-          if Checked_Equivalent_Keys (HT, Key, Node) then
-             return Node;
-          end if;
-          Node := Next (Node);
-       end loop;
- 
-       return null;
-    end Find;
- 
-    --------------------------------
-    -- Generic_Conditional_Insert --
-    --------------------------------
- 
-    procedure Generic_Conditional_Insert
-      (HT       : in out Hash_Table_Type;
-       Key      : Key_Type;
-       Node     : out Node_Access;
-       Inserted : out Boolean)
-    is
-       Indx : Hash_Type;
- 
-    begin
-       --  Per AI05-0022, the container implementation is required to detect
-       --  element tampering by a generic actual subprogram.
- 
-       TC_Check (HT.TC);
- 
-       Indx := Checked_Index (HT, Key);
-       Node := HT.Buckets (Indx);
- 
-       if Node = null then
-          if Checks and then HT.Length = Count_Type'Last then
-             raise Constraint_Error;
-          end if;
- 
-          Node := New_Node (Next => null);
-          Inserted := True;
- 
-          HT.Buckets (Indx) := Node;
-          HT.Length := HT.Length + 1;
- 
-          return;
-       end if;
- 
-       loop
-          if Checked_Equivalent_Keys (HT, Key, Node) then
-             Inserted := False;
-             return;
-          end if;
- 
-          Node := Next (Node);
- 
-          exit when Node = null;
-       end loop;
- 
-       if Checks and then HT.Length = Count_Type'Last then
-          raise Constraint_Error;
-       end if;
- 
-       Node := New_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 : Node_Access;
-       Key  : Key_Type)
-    is
-       pragma Assert (HT.Length > 0);
-       pragma Assert (Node /= null);
- 
-       Old_Indx : Hash_Type;
-       New_Indx : constant Hash_Type := Checked_Index (HT, Key);
- 
-       New_Bucket : Node_Access renames HT.Buckets (New_Indx);
-       N, M       : Node_Access;
- 
-    begin
-       --  Per AI05-0022, the container implementation is required to detect
-       --  element tampering by a generic actual subprogram.
- 
-       declare
-          Lock : With_Lock (HT.TC'Unrestricted_Access);
-       begin
-          Old_Indx := Hash (Node) mod HT.Buckets'Length;
-       end;
- 
-       if Checked_Equivalent_Keys (HT, Key, Node) then
-          TE_Check (HT.TC);
- 
-          --  We can change a node's key to Key (that's what Assign is for), 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 only.)
-          --  The exception is when Key is mapped to Node, in which case the
-          --  change is allowed.
- 
-          Assign (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 /= null loop
-          if Checks and then Checked_Equivalent_Keys (HT, Key, N) then
-             pragma Assert (N /= Node);
-             raise Program_Error with
-               "attempt to replace existing element";
-          end if;
- 
-          N := Next (N);
-       end loop;
- 
-       --  We have determined that Key is not already in the hash table, so
-       --  the change is tentatively allowed. We now perform the standard
-       --  checks to determine whether the hash table is locked (because you
-       --  cannot change an element while it's in use by Query_Element or
-       --  Update_Element), or if the container is busy (because moving a
-       --  node to a different bucket would interfere with iteration).
- 
-       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.
- 
-          TE_Check (HT.TC);
- 
-          Assign (Node, Key);
-          return;
-       end if;
- 
-       --  The node is a bucket different from the bucket implied by Key
- 
-       TC_Check (HT.TC);
- 
-       --  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 (Node, Key);
- 
-       --  Now we can safely remove the node from its current bucket
- 
-       N := HT.Buckets (Old_Indx);
-       pragma Assert (N /= null);
- 
-       if N = Node then
-          HT.Buckets (Old_Indx) := Next (Node);
- 
-       else
-          pragma Assert (HT.Length > 1);
- 
-          loop
-             M := Next (N);
-             pragma Assert (M /= null);
- 
-             if M = Node then
-                Set_Next (Node => N, Next => Next (Node));
-                exit;
-             end if;
- 
-             N := M;
-          end loop;
-       end if;
- 
-       --  Now we link the node into its new bucket (corresponding to Key)
- 
-       Set_Next (Node => 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 Hash (Key) mod HT.Buckets'Length;
-    end Index;
- 
- end Ada.Containers.Hash_Tables.Generic_Keys;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-chtgke.ads gcc-8.1.0/gcc/ada/a-chtgke.ads
*** gcc-7.3.0/gcc/ada/a-chtgke.ads	Tue Oct 20 10:23:46 2015
--- gcc-8.1.0/gcc/ada/a-chtgke.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,120 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                 ADA.CONTAINERS.HASH_TABLES.GENERIC_KEYS                  --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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_Hash_Table_Types (<>);
- 
-    use HT_Types, HT_Types.Implementation;
- 
-    with function Next (Node : Node_Access) return Node_Access;
- 
-    with procedure Set_Next
-      (Node : Node_Access;
-       Next : Node_Access);
- 
-    type Key_Type (<>) is limited private;
- 
-    with function Hash (Key : Key_Type) return Hash_Type;
- 
-    with function Equivalent_Keys
-      (Key  : Key_Type;
-       Node : Node_Access) return Boolean;
- 
- package Ada.Containers.Hash_Tables.Generic_Keys is
-    pragma Preelaborate;
- 
-    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
- 
-    function Checked_Index
-      (HT  : aliased in out Hash_Table_Type;
-       Key : Key_Type) return Hash_Type;
-    pragma Inline (Checked_Index);
-    --  Calls Index, but also locks and unlocks the container, per AI05-0022, in
-    --  order to detect element tampering by the generic actual Hash function.
- 
-    function Checked_Equivalent_Keys
-      (HT   : aliased in out Hash_Table_Type;
-       Key  : Key_Type;
-       Node : Node_Access) return Boolean;
-    --  Calls Equivalent_Keys, but locks and unlocks the container, per
-    --  AI05-0022, in order to detect element tampering by that generic actual.
- 
-    procedure Delete_Key_Sans_Free
-      (HT  : in out Hash_Table_Type;
-       Key : Key_Type;
-       X   : out Node_Access);
-    --  Removes the node (if any) with the given key from the hash table,
-    --  without deallocating it. Program_Error is raised if the hash
-    --  table is busy.
- 
-    function Find
-      (HT  : aliased in out Hash_Table_Type;
-       Key : Key_Type) return Node_Access;
-    --  Returns the node (if any) corresponding to the given key
- 
-    generic
-       with function New_Node (Next : Node_Access) return Node_Access;
-    procedure Generic_Conditional_Insert
-      (HT       : in out Hash_Table_Type;
-       Key      : Key_Type;
-       Node     : out Node_Access;
-       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. Program_Error is
-    --  raised if the hash table is busy.
- 
-    generic
-       with function Hash (Node : Node_Access) return Hash_Type;
-       with procedure Assign (Node : Node_Access; Key : Key_Type);
-    procedure Generic_Replace_Element
-      (HT   : in out Hash_Table_Type;
-       Node : Node_Access;
-       Key  : Key_Type);
-    --  Assigns Key to Node, possibly changing its equivalence class. If Node
-    --  is in the same equivalence class as Key (that is, it's already in the
-    --  bucket implied by Key), then if the hash table is locked then
-    --  Program_Error is raised; otherwise Assign is called to assign Key to
-    --  Node. If Node is in a different bucket from Key, then Program_Error is
-    --  raised if the hash table is busy. Otherwise it Assigns Key to Node and
-    --  moves the Node 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 map, and so if Key is equivalent to some other node then
-    --  Program_Error is raised.
- 
- end Ada.Containers.Hash_Tables.Generic_Keys;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-chtgop.adb gcc-8.1.0/gcc/ada/a-chtgop.adb
*** gcc-7.3.0/gcc/ada/a-chtgop.adb	Wed Apr 27 13:15:25 2016
--- gcc-8.1.0/gcc/ada/a-chtgop.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,782 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --              ADA.CONTAINERS.HASH_TABLES.GENERIC_OPERATIONS               --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2004-2016, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 Ada.Containers.Prime_Numbers;
- with Ada.Unchecked_Deallocation;
- 
- with System; use type System.Address;
- 
- package body Ada.Containers.Hash_Tables.Generic_Operations is
- 
-    pragma Warnings (Off, "variable ""Busy*"" is not referenced");
-    pragma Warnings (Off, "variable ""Lock*"" is not referenced");
-    --  See comment in Ada.Containers.Helpers
- 
-    type Buckets_Allocation is access all Buckets_Type;
-    --  Used for allocation and deallocation (see New_Buckets and Free_Buckets).
-    --  This is necessary because Buckets_Access has an empty storage pool.
- 
-    ------------
-    -- Adjust --
-    ------------
- 
-    procedure Adjust (HT : in out Hash_Table_Type) is
-       Src_Buckets : constant Buckets_Access := HT.Buckets;
-       N           : constant Count_Type := HT.Length;
-       Src_Node    : Node_Access;
-       Dst_Prev    : Node_Access;
- 
-    begin
-       --  If the counts are nonzero, execution is technically erroneous, but
-       --  it seems friendly to allow things like concurrent "=" on shared
-       --  constants.
- 
-       Zero_Counts (HT.TC);
- 
-       HT.Buckets := null;
-       HT.Length := 0;
- 
-       if N = 0 then
-          return;
-       end if;
- 
-       --  Technically it isn't necessary to allocate the exact same length
-       --  buckets array, because our only requirement is that following
-       --  assignment the source and target containers compare equal (that is,
-       --  operator "=" returns True). We can satisfy this requirement with any
-       --  hash table length, but we decide here to match the length of the
-       --  source table. This has the benefit that when iterating, elements of
-       --  the target are delivered in the exact same order as for the source.
- 
-       HT.Buckets := New_Buckets (Length => Src_Buckets'Length);
- 
-       for Src_Index in Src_Buckets'Range loop
-          Src_Node := Src_Buckets (Src_Index);
- 
-          if Src_Node /= null then
-             declare
-                Dst_Node : constant Node_Access := Copy_Node (Src_Node);
- 
-                --  See note above
- 
-                pragma Assert (Checked_Index (HT, Dst_Node) = Src_Index);
- 
-             begin
-                HT.Buckets (Src_Index) := Dst_Node;
-                HT.Length := HT.Length + 1;
- 
-                Dst_Prev := Dst_Node;
-             end;
- 
-             Src_Node := Next (Src_Node);
-             while Src_Node /= null loop
-                declare
-                   Dst_Node : constant Node_Access := Copy_Node (Src_Node);
- 
-                   --  See note above
- 
-                   pragma Assert (Checked_Index (HT, Dst_Node) = Src_Index);
- 
-                begin
-                   Set_Next (Node => Dst_Prev, Next => Dst_Node);
-                   HT.Length := HT.Length + 1;
- 
-                   Dst_Prev := Dst_Node;
-                end;
- 
-                Src_Node := Next (Src_Node);
-             end loop;
-          end if;
-       end loop;
- 
-       pragma Assert (HT.Length = N);
-    end Adjust;
- 
-    --------------
-    -- Capacity --
-    --------------
- 
-    function Capacity (HT : Hash_Table_Type) return Count_Type is
-    begin
-       if HT.Buckets = null then
-          return 0;
-       end if;
- 
-       return HT.Buckets'Length;
-    end Capacity;
- 
-    -------------------
-    -- Checked_Index --
-    -------------------
- 
-    function Checked_Index
-      (Hash_Table : aliased in out Hash_Table_Type;
-       Buckets    : Buckets_Type;
-       Node       : Node_Access) return Hash_Type
-    is
-       Lock : With_Lock (Hash_Table.TC'Unrestricted_Access);
-    begin
-       return Index (Buckets, Node);
-    end Checked_Index;
- 
-    function Checked_Index
-      (Hash_Table : aliased in out Hash_Table_Type;
-       Node       : Node_Access) return Hash_Type
-    is
-    begin
-       return Checked_Index (Hash_Table, Hash_Table.Buckets.all, Node);
-    end Checked_Index;
- 
-    -----------
-    -- Clear --
-    -----------
- 
-    procedure Clear (HT : in out Hash_Table_Type) is
-       Index : Hash_Type := 0;
-       Node  : Node_Access;
- 
-    begin
-       TC_Check (HT.TC);
- 
-       while HT.Length > 0 loop
-          while HT.Buckets (Index) = null loop
-             Index := Index + 1;
-          end loop;
- 
-          declare
-             Bucket : Node_Access renames HT.Buckets (Index);
-          begin
-             loop
-                Node := Bucket;
-                Bucket := Next (Bucket);
-                HT.Length := HT.Length - 1;
-                Free (Node);
-                exit when Bucket = null;
-             end loop;
-          end;
-       end loop;
-    end Clear;
- 
-    --------------------------
-    -- Delete_Node_At_Index --
-    --------------------------
- 
-    procedure Delete_Node_At_Index
-      (HT   : in out Hash_Table_Type;
-       Indx : Hash_Type;
-       X    : in out Node_Access)
-    is
-       Prev : Node_Access;
-       Curr : Node_Access;
- 
-    begin
-       Prev := HT.Buckets (Indx);
- 
-       if Prev = X then
-          HT.Buckets (Indx) := Next (Prev);
-          HT.Length := HT.Length - 1;
-          Free (X);
-          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 (Prev);
- 
-          if Checks and then Curr = null then
-             raise Program_Error with
-               "attempt to delete node not in its proper hash bucket";
-          end if;
- 
-          if Curr = X then
-             Set_Next (Node => Prev, Next => Next (Curr));
-             HT.Length := HT.Length - 1;
-             Free (X);
-             return;
-          end if;
- 
-          Prev := Curr;
-       end loop;
-    end Delete_Node_At_Index;
- 
-    ---------------------------
-    -- Delete_Node_Sans_Free --
-    ---------------------------
- 
-    procedure Delete_Node_Sans_Free
-      (HT : in out Hash_Table_Type;
-       X  : Node_Access)
-    is
-       pragma Assert (X /= null);
- 
-       Indx : Hash_Type;
-       Prev : Node_Access;
-       Curr : Node_Access;
- 
-    begin
-       if Checks and then HT.Length = 0 then
-          raise Program_Error with
-            "attempt to delete node from empty hashed container";
-       end if;
- 
-       Indx := Checked_Index (HT, X);
-       Prev := HT.Buckets (Indx);
- 
-       if Checks and then Prev = null then
-          raise Program_Error with
-            "attempt to delete node from empty hash bucket";
-       end if;
- 
-       if Prev = X then
-          HT.Buckets (Indx) := Next (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 (Prev);
- 
-          if Checks and then Curr = null then
-             raise Program_Error with
-               "attempt to delete node not in its proper hash bucket";
-          end if;
- 
-          if Curr = X then
-             Set_Next (Node => Prev, Next => Next (Curr));
-             HT.Length := HT.Length - 1;
-             return;
-          end if;
- 
-          Prev := Curr;
-       end loop;
-    end Delete_Node_Sans_Free;
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    procedure Finalize (HT : in out Hash_Table_Type) is
-    begin
-       Clear (HT);
-       Free_Buckets (HT.Buckets);
-    end Finalize;
- 
-    -----------
-    -- First --
-    -----------
- 
-    function First (HT : Hash_Table_Type) return Node_Access is
-       Indx : Hash_Type;
- 
-    begin
-       if HT.Length = 0 then
-          return null;
-       end if;
- 
-       Indx := HT.Buckets'First;
-       loop
-          if HT.Buckets (Indx) /= null then
-             return HT.Buckets (Indx);
-          end if;
- 
-          Indx := Indx + 1;
-       end loop;
-    end First;
- 
-    ------------------
-    -- Free_Buckets --
-    ------------------
- 
-    procedure Free_Buckets (Buckets : in out Buckets_Access) is
-       procedure Free is
-         new Ada.Unchecked_Deallocation (Buckets_Type, Buckets_Allocation);
- 
-    begin
-       --  Buckets must have been created by New_Buckets. Here, we convert back
-       --  to the Buckets_Allocation type, and do the free on that.
- 
-       Free (Buckets_Allocation (Buckets));
-    end Free_Buckets;
- 
-    ---------------------
-    -- Free_Hash_Table --
-    ---------------------
- 
-    procedure Free_Hash_Table (Buckets : in out Buckets_Access) is
-       Node : Node_Access;
- 
-    begin
-       if Buckets = null then
-          return;
-       end if;
- 
-       for J in Buckets'Range loop
-          while Buckets (J) /= null loop
-             Node := Buckets (J);
-             Buckets (J) := Next (Node);
-             Free (Node);
-          end loop;
-       end loop;
- 
-       Free_Buckets (Buckets);
-    end Free_Hash_Table;
- 
-    -------------------
-    -- Generic_Equal --
-    -------------------
- 
-    function Generic_Equal
-      (L, R : Hash_Table_Type) return Boolean
-    is
-    begin
-       if L.Length /= R.Length then
-          return False;
-       end if;
- 
-       if L.Length = 0 then
-          return True;
-       end if;
- 
-       declare
-          --  Per AI05-0022, the container implementation is required to detect
-          --  element tampering by a generic actual subprogram.
- 
-          Lock_L : With_Lock (L.TC'Unrestricted_Access);
-          Lock_R : With_Lock (R.TC'Unrestricted_Access);
- 
-          L_Index : Hash_Type;
-          L_Node  : Node_Access;
- 
-          N : Count_Type;
-       begin
-          --  Find the first node of hash table L
- 
-          L_Index := 0;
-          loop
-             L_Node := L.Buckets (L_Index);
-             exit when L_Node /= null;
-             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_Node) then
-                return False;
-             end if;
- 
-             N := N - 1;
- 
-             L_Node := Next (L_Node);
- 
-             if L_Node = null 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 /= null;
-                end loop;
-             end if;
-          end loop;
-       end;
-    end Generic_Equal;
- 
-    -----------------------
-    -- Generic_Iteration --
-    -----------------------
- 
-    procedure Generic_Iteration (HT : Hash_Table_Type) is
-       Node : Node_Access;
- 
-    begin
-       if HT.Length = 0 then
-          return;
-       end if;
- 
-       for Indx in HT.Buckets'Range loop
-          Node := HT.Buckets (Indx);
-          while Node /= null loop
-             Process (Node);
-             Node := Next (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;
-       NN : Hash_Type;
- 
-    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;
- 
-       --  The RM does not specify whether or how the capacity changes when a
-       --  hash table is streamed in. Therefore we decide here to allocate a new
-       --  buckets array only when it's necessary to preserve representation
-       --  invariants.
- 
-       if HT.Buckets = null
-         or else HT.Buckets'Length < N
-       then
-          Free_Buckets (HT.Buckets);
-          NN := Prime_Numbers.To_Prime (N);
-          HT.Buckets := New_Buckets (Length => NN);
-       end if;
- 
-       for J in 1 .. N loop
-          declare
-             Node : constant Node_Access := New_Node (Stream);
-             Indx : constant Hash_Type := Checked_Index (HT, Node);
-             B    : Node_Access renames HT.Buckets (Indx);
-          begin
-             Set_Next (Node => 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 : Node_Access);
-       pragma Inline (Write);
- 
-       procedure Write is new Generic_Iteration (Write);
- 
-       -----------
-       -- Write --
-       -----------
- 
-       procedure Write (Node : Node_Access) is
-       begin
-          Write (Stream, Node);
-       end Write;
- 
-    begin
-       --  See Generic_Read for an explanation of why we do not stream out the
-       --  buckets array length too.
- 
-       Count_Type'Base'Write (Stream, HT.Length);
-       Write (HT);
-    end Generic_Write;
- 
-    -----------
-    -- Index --
-    -----------
- 
-    function Index
-      (Buckets : Buckets_Type;
-       Node    : Node_Access) return Hash_Type is
-    begin
-       return Hash_Node (Node) mod Buckets'Length;
-    end Index;
- 
-    function Index
-      (Hash_Table : Hash_Table_Type;
-       Node       : Node_Access) return Hash_Type is
-    begin
-       return Index (Hash_Table.Buckets.all, Node);
-    end Index;
- 
-    ----------
-    -- Move --
-    ----------
- 
-    procedure Move (Target, Source : in out Hash_Table_Type) is
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       TC_Check (Source.TC);
- 
-       Clear (Target);
- 
-       declare
-          Buckets : constant Buckets_Access := Target.Buckets;
-       begin
-          Target.Buckets := Source.Buckets;
-          Source.Buckets := Buckets;
-       end;
- 
-       Target.Length := Source.Length;
-       Source.Length := 0;
-    end Move;
- 
-    -----------------
-    -- New_Buckets --
-    -----------------
- 
-    function New_Buckets (Length : Hash_Type) return Buckets_Access is
-       subtype Rng is Hash_Type range 0 .. Length - 1;
- 
-    begin
-       --  Allocate in Buckets_Allocation'Storage_Pool, then convert to
-       --  Buckets_Access.
- 
-       return Buckets_Access (Buckets_Allocation'(new Buckets_Type (Rng)));
-    end New_Buckets;
- 
-    ----------
-    -- Next --
-    ----------
- 
-    function Next
-      (HT   : aliased in out Hash_Table_Type;
-       Node : Node_Access) return Node_Access
-    is
-       Result : Node_Access;
-       First  : Hash_Type;
- 
-    begin
-       Result := Next (Node);
- 
-       if Result /= null then
-          return Result;
-       end if;
- 
-       First := Checked_Index (HT, Node) + 1;
-       for Indx in First .. HT.Buckets'Last loop
-          Result := HT.Buckets (Indx);
- 
-          if Result /= null then
-             return Result;
-          end if;
-       end loop;
- 
-       return null;
-    end Next;
- 
-    ----------------------
-    -- Reserve_Capacity --
-    ----------------------
- 
-    procedure Reserve_Capacity
-      (HT : in out Hash_Table_Type;
-       N  : Count_Type)
-    is
-       NN : Hash_Type;
- 
-    begin
-       if HT.Buckets = null then
-          if N > 0 then
-             NN := Prime_Numbers.To_Prime (N);
-             HT.Buckets := New_Buckets (Length => NN);
-          end if;
- 
-          return;
-       end if;
- 
-       if HT.Length = 0 then
- 
-          --  This is the easy case. There are no nodes, so no rehashing is
-          --  necessary. All we need to do is allocate a new buckets array
-          --  having a length implied by the specified capacity. (We say
-          --  "implied by" because bucket arrays are always allocated with a
-          --  length that corresponds to a prime number.)
- 
-          if N = 0 then
-             Free_Buckets (HT.Buckets);
-             return;
-          end if;
- 
-          if N = HT.Buckets'Length then
-             return;
-          end if;
- 
-          NN := Prime_Numbers.To_Prime (N);
- 
-          if NN = HT.Buckets'Length then
-             return;
-          end if;
- 
-          declare
-             X : Buckets_Access := HT.Buckets;
-             pragma Warnings (Off, X);
-          begin
-             HT.Buckets := New_Buckets (Length => NN);
-             Free_Buckets (X);
-          end;
- 
-          return;
-       end if;
- 
-       if N = HT.Buckets'Length then
-          return;
-       end if;
- 
-       if N < HT.Buckets'Length then
- 
-          --  This is a request to contract the buckets array. The amount of
-          --  contraction is bounded in order to preserve the invariant that the
-          --  buckets array length is never smaller than the number of elements
-          --  (the load factor is 1).
- 
-          if HT.Length >= HT.Buckets'Length then
-             return;
-          end if;
- 
-          NN := Prime_Numbers.To_Prime (HT.Length);
- 
-          if NN >= HT.Buckets'Length then
-             return;
-          end if;
- 
-       else
-          NN := Prime_Numbers.To_Prime (Count_Type'Max (N, HT.Length));
- 
-          if NN = HT.Buckets'Length then -- can't expand any more
-             return;
-          end if;
-       end if;
- 
-       TC_Check (HT.TC);
- 
-       Rehash : declare
-          Dst_Buckets : Buckets_Access := New_Buckets (Length => NN);
-          Src_Buckets : Buckets_Access := HT.Buckets;
-          pragma Warnings (Off, Src_Buckets);
- 
-          L : Count_Type renames HT.Length;
-          LL : constant Count_Type := L;
- 
-          Src_Index : Hash_Type := Src_Buckets'First;
- 
-       begin
-          while L > 0 loop
-             declare
-                Src_Bucket : Node_Access renames Src_Buckets (Src_Index);
- 
-             begin
-                while Src_Bucket /= null loop
-                   declare
-                      Src_Node : constant Node_Access := Src_Bucket;
- 
-                      Dst_Index : constant Hash_Type :=
-                        Checked_Index (HT, Dst_Buckets.all, Src_Node);
- 
-                      Dst_Bucket : Node_Access renames Dst_Buckets (Dst_Index);
- 
-                   begin
-                      Src_Bucket := Next (Src_Node);
- 
-                      Set_Next (Src_Node, Dst_Bucket);
- 
-                      Dst_Bucket := Src_Node;
-                   end;
- 
-                   pragma Assert (L > 0);
-                   L := L - 1;
-                end loop;
- 
-             exception
-                when others =>
- 
-                   --  If there's an error computing a hash value during a
-                   --  rehash, then AI-302 says the nodes "become lost." The
-                   --  issue is whether to actually deallocate these lost nodes,
-                   --  since they might be designated by extant cursors. Here
-                   --  we decide to deallocate the nodes, since it's better to
-                   --  solve real problems (storage consumption) rather than
-                   --  imaginary ones (the user might, or might not, dereference
-                   --  a cursor designating a node that has been deallocated),
-                   --  and because we have a way to vet a dangling cursor
-                   --  reference anyway, and hence can actually detect the
-                   --  problem.
- 
-                   for Dst_Index in Dst_Buckets'Range loop
-                      declare
-                         B : Node_Access renames Dst_Buckets (Dst_Index);
-                         X : Node_Access;
-                      begin
-                         while B /= null loop
-                            X := B;
-                            B := Next (X);
-                            Free (X);
-                         end loop;
-                      end;
-                   end loop;
- 
-                   Free_Buckets (Dst_Buckets);
-                   raise Program_Error with
-                     "hash function raised exception during rehash";
-             end;
- 
-             Src_Index := Src_Index + 1;
-          end loop;
- 
-          HT.Buckets := Dst_Buckets;
-          HT.Length := LL;
- 
-          Free_Buckets (Src_Buckets);
-       end Rehash;
-    end Reserve_Capacity;
- 
- end Ada.Containers.Hash_Tables.Generic_Operations;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-chtgop.ads gcc-8.1.0/gcc/ada/a-chtgop.ads
*** gcc-7.3.0/gcc/ada/a-chtgop.ads	Mon Apr 18 12:58:22 2016
--- gcc-8.1.0/gcc/ada/a-chtgop.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,196 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --              ADA.CONTAINERS.HASH_TABLES.GENERIC_OPERATIONS               --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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_Hash_Table_Types (<>);
- 
-    use HT_Types, HT_Types.Implementation;
- 
-    with function Hash_Node (Node : Node_Access) return Hash_Type;
- 
-    with function Next (Node : Node_Access) return Node_Access;
- 
-    with procedure Set_Next
-      (Node : Node_Access;
-       Next : Node_Access);
- 
-     with function Copy_Node (Source : Node_Access) return Node_Access;
- 
-    with procedure Free (X : in out Node_Access);
- 
- package Ada.Containers.Hash_Tables.Generic_Operations is
-    pragma Preelaborate;
- 
-    procedure Free_Hash_Table (Buckets : in out Buckets_Access);
-    --  First frees the nodes in all non-null buckets of Buckets, and then frees
-    --  the Buckets array itself.
- 
-    function Index
-      (Buckets : Buckets_Type;
-       Node    : Node_Access) return Hash_Type;
-    pragma Inline (Index);
-    --  Uses the hash value of Node to compute its Buckets array index
- 
-    function Index
-      (Hash_Table : Hash_Table_Type;
-       Node       : Node_Access) return Hash_Type;
-    pragma Inline (Index);
-    --  Uses the hash value of Node to compute its Hash_Table buckets array
-    --  index.
- 
-    function Checked_Index
-      (Hash_Table : aliased in out Hash_Table_Type;
-       Buckets    : Buckets_Type;
-       Node       : Node_Access) return Hash_Type;
-    --  Calls Index, but also locks and unlocks the container, per AI05-0022, in
-    --  order to detect element tampering by the generic actual Hash function.
- 
-    function Checked_Index
-      (Hash_Table : aliased in out Hash_Table_Type;
-       Node       : Node_Access) return Hash_Type;
-    --  Calls Checked_Index using Hash_Table's buckets array.
- 
-    procedure Adjust (HT : in out Hash_Table_Type);
-    --  Used to implement controlled Adjust. It is assumed that HT has the value
-    --  of the bit-wise copy that immediately follows controlled Finalize.
-    --  Adjust first allocates a new buckets array for HT (having the same
-    --  length as the source), and then allocates a copy of each node of source.
- 
-    procedure Finalize (HT : in out Hash_Table_Type);
-    --  Used to implement controlled Finalize. It first calls Clear to
-    --  deallocate any remaining nodes, and then deallocates the buckets array.
- 
-    generic
-       with function Find
-         (HT  : Hash_Table_Type;
-          Key : Node_Access) 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);
-    --  Deallocates each node in hash table HT. (Note that it only deallocates
-    --  the nodes, not the buckets array.) Program_Error is raised if the hash
-    --  table is busy.
- 
-    procedure Move (Target, Source : in out Hash_Table_Type);
-    --  Moves (not copies) the buckets array and nodes from Source to
-    --  Target. Program_Error is raised if Source is busy. The Target is first
-    --  cleared to deallocate its nodes (implying that Program_Error is also
-    --  raised if Target is busy). Source is empty following the move.
- 
-    function Capacity (HT : Hash_Table_Type) return Count_Type;
-    --  Returns the length of the buckets array
- 
-    procedure Reserve_Capacity
-      (HT : in out Hash_Table_Type;
-       N  : Count_Type);
-    --  If N is greater than the current capacity, then it expands the buckets
-    --  array to at least the value N. If N is less than the current capacity,
-    --  then it contracts the buckets array. In either case existing nodes are
-    --  rehashed onto the new buckets array, and the old buckets array is
-    --  deallocated. Program_Error is raised if the hash table is busy.
- 
-    procedure Delete_Node_At_Index
-      (HT   : in out Hash_Table_Type;
-       Indx : Hash_Type;
-       X    : in out Node_Access);
-    --  Delete a node whose bucket position is known. Used to remove a node
-    --  whose element has been modified through a key_preserving reference.
-    --  We cannot use the value of the element precisely because the current
-    --  value does not correspond to the hash code that determines the bucket.
- 
-    procedure Delete_Node_Sans_Free
-      (HT : in out Hash_Table_Type;
-       X  : Node_Access);
-    --  Removes node X from the hash table without deallocating the node
- 
-    function First (HT : Hash_Table_Type) return Node_Access;
-    --  Returns the head of the list in the first (lowest-index) non-empty
-    --  bucket.
- 
-    function Next
-      (HT   : aliased in out Hash_Table_Type;
-       Node : Node_Access) return Node_Access;
-    --  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 : Node_Access);
-    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_Access);
-    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 Node_Access;
-    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.
- 
-    function New_Buckets (Length : Hash_Type) return Buckets_Access;
-    pragma Inline (New_Buckets);
-    --  Allocate a new Buckets_Type array with bounds 0 .. Length - 1
- 
-    procedure Free_Buckets (Buckets : in out Buckets_Access);
-    pragma Inline (Free_Buckets);
-    --  Unchecked_Deallocate Buckets
- 
-    --  Note: New_Buckets and Free_Buckets are needed because Buckets_Access has
-    --  an empty pool.
- 
- end Ada.Containers.Hash_Tables.Generic_Operations;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-chzla1.ads gcc-8.1.0/gcc/ada/a-chzla1.ads
*** gcc-7.3.0/gcc/ada/a-chzla1.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-chzla1.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,376 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --     A D A . C H A R A C T E R S . W I D E _ W I D E _ L A T I N _ 1      --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          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- --
- -- 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 definitions analogous to those in the RM defined
- --  package Ada.Characters.Latin_1 except that the type of the constants
- --  is Wide_Wide_Character instead of Character. The provision of this package
- --  is in accordance with the implementation permission in RM (A.3.3(27)).
- 
- package Ada.Characters.Wide_Wide_Latin_1 is
-    pragma Pure;
- 
-    ------------------------
-    -- Control Characters --
-    ------------------------
- 
-    NUL  : constant Wide_Wide_Character := Wide_Wide_Character'Val (0);
-    SOH  : constant Wide_Wide_Character := Wide_Wide_Character'Val (1);
-    STX  : constant Wide_Wide_Character := Wide_Wide_Character'Val (2);
-    ETX  : constant Wide_Wide_Character := Wide_Wide_Character'Val (3);
-    EOT  : constant Wide_Wide_Character := Wide_Wide_Character'Val (4);
-    ENQ  : constant Wide_Wide_Character := Wide_Wide_Character'Val (5);
-    ACK  : constant Wide_Wide_Character := Wide_Wide_Character'Val (6);
-    BEL  : constant Wide_Wide_Character := Wide_Wide_Character'Val (7);
-    BS   : constant Wide_Wide_Character := Wide_Wide_Character'Val (8);
-    HT   : constant Wide_Wide_Character := Wide_Wide_Character'Val (9);
-    LF   : constant Wide_Wide_Character := Wide_Wide_Character'Val (10);
-    VT   : constant Wide_Wide_Character := Wide_Wide_Character'Val (11);
-    FF   : constant Wide_Wide_Character := Wide_Wide_Character'Val (12);
-    CR   : constant Wide_Wide_Character := Wide_Wide_Character'Val (13);
-    SO   : constant Wide_Wide_Character := Wide_Wide_Character'Val (14);
-    SI   : constant Wide_Wide_Character := Wide_Wide_Character'Val (15);
- 
-    DLE  : constant Wide_Wide_Character := Wide_Wide_Character'Val (16);
-    DC1  : constant Wide_Wide_Character := Wide_Wide_Character'Val (17);
-    DC2  : constant Wide_Wide_Character := Wide_Wide_Character'Val (18);
-    DC3  : constant Wide_Wide_Character := Wide_Wide_Character'Val (19);
-    DC4  : constant Wide_Wide_Character := Wide_Wide_Character'Val (20);
-    NAK  : constant Wide_Wide_Character := Wide_Wide_Character'Val (21);
-    SYN  : constant Wide_Wide_Character := Wide_Wide_Character'Val (22);
-    ETB  : constant Wide_Wide_Character := Wide_Wide_Character'Val (23);
-    CAN  : constant Wide_Wide_Character := Wide_Wide_Character'Val (24);
-    EM   : constant Wide_Wide_Character := Wide_Wide_Character'Val (25);
-    SUB  : constant Wide_Wide_Character := Wide_Wide_Character'Val (26);
-    ESC  : constant Wide_Wide_Character := Wide_Wide_Character'Val (27);
-    FS   : constant Wide_Wide_Character := Wide_Wide_Character'Val (28);
-    GS   : constant Wide_Wide_Character := Wide_Wide_Character'Val (29);
-    RS   : constant Wide_Wide_Character := Wide_Wide_Character'Val (30);
-    US   : constant Wide_Wide_Character := Wide_Wide_Character'Val (31);
- 
-    -------------------------------------
-    -- ISO 646 Graphic Wide_Wide_Characters --
-    -------------------------------------
- 
-    Space                : constant Wide_Wide_Character := ' ';  -- WC'Val(32)
-    Exclamation          : constant Wide_Wide_Character := '!';  -- WC'Val(33)
-    Quotation            : constant Wide_Wide_Character := '"';  -- WC'Val(34)
-    Number_Sign          : constant Wide_Wide_Character := '#';  -- WC'Val(35)
-    Dollar_Sign          : constant Wide_Wide_Character := '$';  -- WC'Val(36)
-    Percent_Sign         : constant Wide_Wide_Character := '%';  -- WC'Val(37)
-    Ampersand            : constant Wide_Wide_Character := '&';  -- WC'Val(38)
-    Apostrophe           : constant Wide_Wide_Character := ''';  -- WC'Val(39)
-    Left_Parenthesis     : constant Wide_Wide_Character := '(';  -- WC'Val(40)
-    Right_Parenthesis    : constant Wide_Wide_Character := ')';  -- WC'Val(41)
-    Asterisk             : constant Wide_Wide_Character := '*';  -- WC'Val(42)
-    Plus_Sign            : constant Wide_Wide_Character := '+';  -- WC'Val(43)
-    Comma                : constant Wide_Wide_Character := ',';  -- WC'Val(44)
-    Hyphen               : constant Wide_Wide_Character := '-';  -- WC'Val(45)
-    Minus_Sign           : Wide_Wide_Character renames Hyphen;
-    Full_Stop            : constant Wide_Wide_Character := '.';  -- WC'Val(46)
-    Solidus              : constant Wide_Wide_Character := '/';  -- WC'Val(47)
- 
-    --  Decimal digits '0' though '9' are at positions 48 through 57
- 
-    Colon                : constant Wide_Wide_Character := ':';  -- WC'Val(58)
-    Semicolon            : constant Wide_Wide_Character := ';';  -- WC'Val(59)
-    Less_Than_Sign       : constant Wide_Wide_Character := '<';  -- WC'Val(60)
-    Equals_Sign          : constant Wide_Wide_Character := '=';  -- WC'Val(61)
-    Greater_Than_Sign    : constant Wide_Wide_Character := '>';  -- WC'Val(62)
-    Question             : constant Wide_Wide_Character := '?';  -- WC'Val(63)
- 
-    Commercial_At        : constant Wide_Wide_Character := '@';  -- WC'Val(64)
- 
-    --  Letters 'A' through 'Z' are at positions 65 through 90
- 
-    Left_Square_Bracket  : constant Wide_Wide_Character := '[';  -- WC'Val (91)
-    Reverse_Solidus      : constant Wide_Wide_Character := '\';  -- WC'Val (92)
-    Right_Square_Bracket : constant Wide_Wide_Character := ']';  -- WC'Val (93)
-    Circumflex           : constant Wide_Wide_Character := '^';  -- WC'Val (94)
-    Low_Line             : constant Wide_Wide_Character := '_';  -- WC'Val (95)
- 
-    Grave                : constant Wide_Wide_Character := '`';  -- WC'Val (96)
-    LC_A                 : constant Wide_Wide_Character := 'a';  -- WC'Val (97)
-    LC_B                 : constant Wide_Wide_Character := 'b';  -- WC'Val (98)
-    LC_C                 : constant Wide_Wide_Character := 'c';  -- WC'Val (99)
-    LC_D                 : constant Wide_Wide_Character := 'd';  -- WC'Val (100)
-    LC_E                 : constant Wide_Wide_Character := 'e';  -- WC'Val (101)
-    LC_F                 : constant Wide_Wide_Character := 'f';  -- WC'Val (102)
-    LC_G                 : constant Wide_Wide_Character := 'g';  -- WC'Val (103)
-    LC_H                 : constant Wide_Wide_Character := 'h';  -- WC'Val (104)
-    LC_I                 : constant Wide_Wide_Character := 'i';  -- WC'Val (105)
-    LC_J                 : constant Wide_Wide_Character := 'j';  -- WC'Val (106)
-    LC_K                 : constant Wide_Wide_Character := 'k';  -- WC'Val (107)
-    LC_L                 : constant Wide_Wide_Character := 'l';  -- WC'Val (108)
-    LC_M                 : constant Wide_Wide_Character := 'm';  -- WC'Val (109)
-    LC_N                 : constant Wide_Wide_Character := 'n';  -- WC'Val (110)
-    LC_O                 : constant Wide_Wide_Character := 'o';  -- WC'Val (111)
-    LC_P                 : constant Wide_Wide_Character := 'p';  -- WC'Val (112)
-    LC_Q                 : constant Wide_Wide_Character := 'q';  -- WC'Val (113)
-    LC_R                 : constant Wide_Wide_Character := 'r';  -- WC'Val (114)
-    LC_S                 : constant Wide_Wide_Character := 's';  -- WC'Val (115)
-    LC_T                 : constant Wide_Wide_Character := 't';  -- WC'Val (116)
-    LC_U                 : constant Wide_Wide_Character := 'u';  -- WC'Val (117)
-    LC_V                 : constant Wide_Wide_Character := 'v';  -- WC'Val (118)
-    LC_W                 : constant Wide_Wide_Character := 'w';  -- WC'Val (119)
-    LC_X                 : constant Wide_Wide_Character := 'x';  -- WC'Val (120)
-    LC_Y                 : constant Wide_Wide_Character := 'y';  -- WC'Val (121)
-    LC_Z                 : constant Wide_Wide_Character := 'z';  -- WC'Val (122)
-    Left_Curly_Bracket   : constant Wide_Wide_Character := '{';  -- WC'Val (123)
-    Vertical_Line        : constant Wide_Wide_Character := '|';  -- WC'Val (124)
-    Right_Curly_Bracket  : constant Wide_Wide_Character := '}';  -- WC'Val (125)
-    Tilde                : constant Wide_Wide_Character := '~';  -- WC'Val (126)
-    DEL                  : constant Wide_Wide_Character :=
-                             Wide_Wide_Character'Val (127);
- 
-    --------------------------------------
-    -- ISO 6429 Control Wide_Wide_Characters --
-    --------------------------------------
- 
-    IS4 : Wide_Wide_Character renames FS;
-    IS3 : Wide_Wide_Character renames GS;
-    IS2 : Wide_Wide_Character renames RS;
-    IS1 : Wide_Wide_Character renames US;
- 
-    Reserved_128
-         : constant Wide_Wide_Character := Wide_Wide_Character'Val (128);
-    Reserved_129
-         : constant Wide_Wide_Character := Wide_Wide_Character'Val (129);
-    BPH  : constant Wide_Wide_Character := Wide_Wide_Character'Val (130);
-    NBH  : constant Wide_Wide_Character := Wide_Wide_Character'Val (131);
-    Reserved_132
-         : constant Wide_Wide_Character := Wide_Wide_Character'Val (132);
-    NEL  : constant Wide_Wide_Character := Wide_Wide_Character'Val (133);
-    SSA  : constant Wide_Wide_Character := Wide_Wide_Character'Val (134);
-    ESA  : constant Wide_Wide_Character := Wide_Wide_Character'Val (135);
-    HTS  : constant Wide_Wide_Character := Wide_Wide_Character'Val (136);
-    HTJ  : constant Wide_Wide_Character := Wide_Wide_Character'Val (137);
-    VTS  : constant Wide_Wide_Character := Wide_Wide_Character'Val (138);
-    PLD  : constant Wide_Wide_Character := Wide_Wide_Character'Val (139);
-    PLU  : constant Wide_Wide_Character := Wide_Wide_Character'Val (140);
-    RI   : constant Wide_Wide_Character := Wide_Wide_Character'Val (141);
-    SS2  : constant Wide_Wide_Character := Wide_Wide_Character'Val (142);
-    SS3  : constant Wide_Wide_Character := Wide_Wide_Character'Val (143);
- 
-    DCS  : constant Wide_Wide_Character := Wide_Wide_Character'Val (144);
-    PU1  : constant Wide_Wide_Character := Wide_Wide_Character'Val (145);
-    PU2  : constant Wide_Wide_Character := Wide_Wide_Character'Val (146);
-    STS  : constant Wide_Wide_Character := Wide_Wide_Character'Val (147);
-    CCH  : constant Wide_Wide_Character := Wide_Wide_Character'Val (148);
-    MW   : constant Wide_Wide_Character := Wide_Wide_Character'Val (149);
-    SPA  : constant Wide_Wide_Character := Wide_Wide_Character'Val (150);
-    EPA  : constant Wide_Wide_Character := Wide_Wide_Character'Val (151);
- 
-    SOS  : constant Wide_Wide_Character := Wide_Wide_Character'Val (152);
-    Reserved_153
-         : constant Wide_Wide_Character := Wide_Wide_Character'Val (153);
-    SCI  : constant Wide_Wide_Character := Wide_Wide_Character'Val (154);
-    CSI  : constant Wide_Wide_Character := Wide_Wide_Character'Val (155);
-    ST   : constant Wide_Wide_Character := Wide_Wide_Character'Val (156);
-    OSC  : constant Wide_Wide_Character := Wide_Wide_Character'Val (157);
-    PM   : constant Wide_Wide_Character := Wide_Wide_Character'Val (158);
-    APC  : constant Wide_Wide_Character := Wide_Wide_Character'Val (159);
- 
-    -----------------------------------
-    -- Other Graphic Wide_Wide_Characters --
-    -----------------------------------
- 
-    --  Wide_Wide_Character positions 160 (16#A0#) .. 175 (16#AF#)
- 
-    No_Break_Space
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (160);
-    NBSP        : Wide_Wide_Character renames No_Break_Space;
-    Inverted_Exclamation
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (161);
-    Cent_Sign   : constant Wide_Wide_Character := Wide_Wide_Character'Val (162);
-    Pound_Sign  : constant Wide_Wide_Character := Wide_Wide_Character'Val (163);
-    Currency_Sign
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (164);
-    Yen_Sign    : constant Wide_Wide_Character := Wide_Wide_Character'Val (165);
-    Broken_Bar  : constant Wide_Wide_Character := Wide_Wide_Character'Val (166);
-    Section_Sign
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (167);
-    Diaeresis   : constant Wide_Wide_Character := Wide_Wide_Character'Val (168);
-    Copyright_Sign
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (169);
-    Feminine_Ordinal_Indicator
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (170);
-    Left_Angle_Quotation
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (171);
-    Not_Sign    : constant Wide_Wide_Character := Wide_Wide_Character'Val (172);
-    Soft_Hyphen : constant Wide_Wide_Character := Wide_Wide_Character'Val (173);
-    Registered_Trade_Mark_Sign
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (174);
-    Macron      : constant Wide_Wide_Character := Wide_Wide_Character'Val (175);
- 
-    --  Wide_Wide_Character positions 176 (16#B0#) .. 191 (16#BF#)
- 
-    Degree_Sign : constant Wide_Wide_Character := Wide_Wide_Character'Val (176);
-    Ring_Above  : Wide_Wide_Character renames Degree_Sign;
-    Plus_Minus_Sign
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (177);
-    Superscript_Two
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (178);
-    Superscript_Three
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (179);
-    Acute       : constant Wide_Wide_Character := Wide_Wide_Character'Val (180);
-    Micro_Sign  : constant Wide_Wide_Character := Wide_Wide_Character'Val (181);
-    Pilcrow_Sign
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (182);
-    Paragraph_Sign
-                : Wide_Wide_Character renames Pilcrow_Sign;
-    Middle_Dot  : constant Wide_Wide_Character := Wide_Wide_Character'Val (183);
-    Cedilla     : constant Wide_Wide_Character := Wide_Wide_Character'Val (184);
-    Superscript_One
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (185);
-    Masculine_Ordinal_Indicator
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (186);
-    Right_Angle_Quotation
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (187);
-    Fraction_One_Quarter
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (188);
-    Fraction_One_Half
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (189);
-    Fraction_Three_Quarters
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (190);
-    Inverted_Question
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (191);
- 
-    --  Wide_Wide_Character positions 192 (16#C0#) .. 207 (16#CF#)
- 
-    UC_A_Grave  : constant Wide_Wide_Character := Wide_Wide_Character'Val (192);
-    UC_A_Acute  : constant Wide_Wide_Character := Wide_Wide_Character'Val (193);
-    UC_A_Circumflex
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (194);
-    UC_A_Tilde  : constant Wide_Wide_Character := Wide_Wide_Character'Val (195);
-    UC_A_Diaeresis
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (196);
-    UC_A_Ring   : constant Wide_Wide_Character := Wide_Wide_Character'Val (197);
-    UC_AE_Diphthong
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (198);
-    UC_C_Cedilla
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (199);
-    UC_E_Grave  : constant Wide_Wide_Character := Wide_Wide_Character'Val (200);
-    UC_E_Acute  : constant Wide_Wide_Character := Wide_Wide_Character'Val (201);
-    UC_E_Circumflex
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (202);
-    UC_E_Diaeresis
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (203);
-    UC_I_Grave  : constant Wide_Wide_Character := Wide_Wide_Character'Val (204);
-    UC_I_Acute  : constant Wide_Wide_Character := Wide_Wide_Character'Val (205);
-    UC_I_Circumflex
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (206);
-    UC_I_Diaeresis
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (207);
- 
-    --  Wide_Wide_Character positions 208 (16#D0#) .. 223 (16#DF#)
- 
-    UC_Icelandic_Eth
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (208);
-    UC_N_Tilde  : constant Wide_Wide_Character := Wide_Wide_Character'Val (209);
-    UC_O_Grave  : constant Wide_Wide_Character := Wide_Wide_Character'Val (210);
-    UC_O_Acute  : constant Wide_Wide_Character := Wide_Wide_Character'Val (211);
-    UC_O_Circumflex
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (212);
-    UC_O_Tilde  : constant Wide_Wide_Character := Wide_Wide_Character'Val (213);
-    UC_O_Diaeresis
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (214);
-    Multiplication_Sign
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (215);
-    UC_O_Oblique_Stroke
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (216);
-    UC_U_Grave  : constant Wide_Wide_Character := Wide_Wide_Character'Val (217);
-    UC_U_Acute  : constant Wide_Wide_Character := Wide_Wide_Character'Val (218);
-    UC_U_Circumflex
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (219);
-    UC_U_Diaeresis
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (220);
-    UC_Y_Acute  : constant Wide_Wide_Character := Wide_Wide_Character'Val (221);
-    UC_Icelandic_Thorn
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (222);
-    LC_German_Sharp_S
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (223);
- 
-    --  Wide_Wide_Character positions 224 (16#E0#) .. 239 (16#EF#)
- 
-    LC_A_Grave  : constant Wide_Wide_Character := Wide_Wide_Character'Val (224);
-    LC_A_Acute  : constant Wide_Wide_Character := Wide_Wide_Character'Val (225);
-    LC_A_Circumflex
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (226);
-    LC_A_Tilde  : constant Wide_Wide_Character := Wide_Wide_Character'Val (227);
-    LC_A_Diaeresis
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (228);
-    LC_A_Ring   : constant Wide_Wide_Character := Wide_Wide_Character'Val (229);
-    LC_AE_Diphthong
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (230);
-    LC_C_Cedilla
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (231);
-    LC_E_Grave  : constant Wide_Wide_Character := Wide_Wide_Character'Val (232);
-    LC_E_Acute  : constant Wide_Wide_Character := Wide_Wide_Character'Val (233);
-    LC_E_Circumflex
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (234);
-    LC_E_Diaeresis
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (235);
-    LC_I_Grave  : constant Wide_Wide_Character := Wide_Wide_Character'Val (236);
-    LC_I_Acute  : constant Wide_Wide_Character := Wide_Wide_Character'Val (237);
-    LC_I_Circumflex
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (238);
-    LC_I_Diaeresis
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (239);
- 
-    --  Wide_Wide_Character positions 240 (16#F0#) .. 255 (16#FF)
- 
-    LC_Icelandic_Eth
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (240);
-    LC_N_Tilde  : constant Wide_Wide_Character := Wide_Wide_Character'Val (241);
-    LC_O_Grave  : constant Wide_Wide_Character := Wide_Wide_Character'Val (242);
-    LC_O_Acute  : constant Wide_Wide_Character := Wide_Wide_Character'Val (243);
-    LC_O_Circumflex
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (244);
-    LC_O_Tilde  : constant Wide_Wide_Character := Wide_Wide_Character'Val (245);
-    LC_O_Diaeresis
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (246);
-    Division_Sign
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (247);
-    LC_O_Oblique_Stroke
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (248);
-    LC_U_Grave  : constant Wide_Wide_Character := Wide_Wide_Character'Val (249);
-    LC_U_Acute  : constant Wide_Wide_Character := Wide_Wide_Character'Val (250);
-    LC_U_Circumflex
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (251);
-    LC_U_Diaeresis
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (252);
-    LC_Y_Acute  : constant Wide_Wide_Character := Wide_Wide_Character'Val (253);
-    LC_Icelandic_Thorn
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (254);
-    LC_Y_Diaeresis
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (255);
- 
- end Ada.Characters.Wide_Wide_Latin_1;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-chzla9.ads gcc-8.1.0/gcc/ada/a-chzla9.ads
*** gcc-7.3.0/gcc/ada/a-chzla9.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-chzla9.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,388 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --     A D A . C H A R A C T E R S . W I D E _ W I D E _ L A T I N _ 9      --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          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- --
- -- 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 definitions analogous to those in the GNAT package
- --  Ada.Characters.Latin_9 except that the type of the various constants is
- --  Wide_Wide_Character instead of Character. The provision of this package
- --  is in accordance with the implementation permission in RM (A.3.3(27)).
- 
- package Ada.Characters.Wide_Wide_Latin_9 is
-    pragma Pure;
- 
-    ------------------------
-    -- Control Characters --
-    ------------------------
- 
-    NUL  : constant Wide_Wide_Character := Wide_Wide_Character'Val (0);
-    SOH  : constant Wide_Wide_Character := Wide_Wide_Character'Val (1);
-    STX  : constant Wide_Wide_Character := Wide_Wide_Character'Val (2);
-    ETX  : constant Wide_Wide_Character := Wide_Wide_Character'Val (3);
-    EOT  : constant Wide_Wide_Character := Wide_Wide_Character'Val (4);
-    ENQ  : constant Wide_Wide_Character := Wide_Wide_Character'Val (5);
-    ACK  : constant Wide_Wide_Character := Wide_Wide_Character'Val (6);
-    BEL  : constant Wide_Wide_Character := Wide_Wide_Character'Val (7);
-    BS   : constant Wide_Wide_Character := Wide_Wide_Character'Val (8);
-    HT   : constant Wide_Wide_Character := Wide_Wide_Character'Val (9);
-    LF   : constant Wide_Wide_Character := Wide_Wide_Character'Val (10);
-    VT   : constant Wide_Wide_Character := Wide_Wide_Character'Val (11);
-    FF   : constant Wide_Wide_Character := Wide_Wide_Character'Val (12);
-    CR   : constant Wide_Wide_Character := Wide_Wide_Character'Val (13);
-    SO   : constant Wide_Wide_Character := Wide_Wide_Character'Val (14);
-    SI   : constant Wide_Wide_Character := Wide_Wide_Character'Val (15);
- 
-    DLE  : constant Wide_Wide_Character := Wide_Wide_Character'Val (16);
-    DC1  : constant Wide_Wide_Character := Wide_Wide_Character'Val (17);
-    DC2  : constant Wide_Wide_Character := Wide_Wide_Character'Val (18);
-    DC3  : constant Wide_Wide_Character := Wide_Wide_Character'Val (19);
-    DC4  : constant Wide_Wide_Character := Wide_Wide_Character'Val (20);
-    NAK  : constant Wide_Wide_Character := Wide_Wide_Character'Val (21);
-    SYN  : constant Wide_Wide_Character := Wide_Wide_Character'Val (22);
-    ETB  : constant Wide_Wide_Character := Wide_Wide_Character'Val (23);
-    CAN  : constant Wide_Wide_Character := Wide_Wide_Character'Val (24);
-    EM   : constant Wide_Wide_Character := Wide_Wide_Character'Val (25);
-    SUB  : constant Wide_Wide_Character := Wide_Wide_Character'Val (26);
-    ESC  : constant Wide_Wide_Character := Wide_Wide_Character'Val (27);
-    FS   : constant Wide_Wide_Character := Wide_Wide_Character'Val (28);
-    GS   : constant Wide_Wide_Character := Wide_Wide_Character'Val (29);
-    RS   : constant Wide_Wide_Character := Wide_Wide_Character'Val (30);
-    US   : constant Wide_Wide_Character := Wide_Wide_Character'Val (31);
- 
-    -------------------------------------
-    -- ISO 646 Graphic Wide_Wide_Characters --
-    -------------------------------------
- 
-    Space                : constant Wide_Wide_Character := ' ';  -- WC'Val(32)
-    Exclamation          : constant Wide_Wide_Character := '!';  -- WC'Val(33)
-    Quotation            : constant Wide_Wide_Character := '"';  -- WC'Val(34)
-    Number_Sign          : constant Wide_Wide_Character := '#';  -- WC'Val(35)
-    Dollar_Sign          : constant Wide_Wide_Character := '$';  -- WC'Val(36)
-    Percent_Sign         : constant Wide_Wide_Character := '%';  -- WC'Val(37)
-    Ampersand            : constant Wide_Wide_Character := '&';  -- WC'Val(38)
-    Apostrophe           : constant Wide_Wide_Character := ''';  -- WC'Val(39)
-    Left_Parenthesis     : constant Wide_Wide_Character := '(';  -- WC'Val(40)
-    Right_Parenthesis    : constant Wide_Wide_Character := ')';  -- WC'Val(41)
-    Asterisk             : constant Wide_Wide_Character := '*';  -- WC'Val(42)
-    Plus_Sign            : constant Wide_Wide_Character := '+';  -- WC'Val(43)
-    Comma                : constant Wide_Wide_Character := ',';  -- WC'Val(44)
-    Hyphen               : constant Wide_Wide_Character := '-';  -- WC'Val(45)
-    Minus_Sign           : Wide_Wide_Character renames Hyphen;
-    Full_Stop            : constant Wide_Wide_Character := '.';  -- WC'Val(46)
-    Solidus              : constant Wide_Wide_Character := '/';  -- WC'Val(47)
- 
-    --  Decimal digits '0' though '9' are at positions 48 through 57
- 
-    Colon                : constant Wide_Wide_Character := ':';  -- WC'Val(58)
-    Semicolon            : constant Wide_Wide_Character := ';';  -- WC'Val(59)
-    Less_Than_Sign       : constant Wide_Wide_Character := '<';  -- WC'Val(60)
-    Equals_Sign          : constant Wide_Wide_Character := '=';  -- WC'Val(61)
-    Greater_Than_Sign    : constant Wide_Wide_Character := '>';  -- WC'Val(62)
-    Question             : constant Wide_Wide_Character := '?';  -- WC'Val(63)
- 
-    Commercial_At        : constant Wide_Wide_Character := '@';  -- WC'Val(64)
- 
-    --  Letters 'A' through 'Z' are at positions 65 through 90
- 
-    Left_Square_Bracket  : constant Wide_Wide_Character := '[';  -- WC'Val (91)
-    Reverse_Solidus      : constant Wide_Wide_Character := '\';  -- WC'Val (92)
-    Right_Square_Bracket : constant Wide_Wide_Character := ']';  -- WC'Val (93)
-    Circumflex           : constant Wide_Wide_Character := '^';  -- WC'Val (94)
-    Low_Line             : constant Wide_Wide_Character := '_';  -- WC'Val (95)
- 
-    Grave                : constant Wide_Wide_Character := '`';  -- WC'Val (96)
-    LC_A                 : constant Wide_Wide_Character := 'a';  -- WC'Val (97)
-    LC_B                 : constant Wide_Wide_Character := 'b';  -- WC'Val (98)
-    LC_C                 : constant Wide_Wide_Character := 'c';  -- WC'Val (99)
-    LC_D                 : constant Wide_Wide_Character := 'd';  -- WC'Val (100)
-    LC_E                 : constant Wide_Wide_Character := 'e';  -- WC'Val (101)
-    LC_F                 : constant Wide_Wide_Character := 'f';  -- WC'Val (102)
-    LC_G                 : constant Wide_Wide_Character := 'g';  -- WC'Val (103)
-    LC_H                 : constant Wide_Wide_Character := 'h';  -- WC'Val (104)
-    LC_I                 : constant Wide_Wide_Character := 'i';  -- WC'Val (105)
-    LC_J                 : constant Wide_Wide_Character := 'j';  -- WC'Val (106)
-    LC_K                 : constant Wide_Wide_Character := 'k';  -- WC'Val (107)
-    LC_L                 : constant Wide_Wide_Character := 'l';  -- WC'Val (108)
-    LC_M                 : constant Wide_Wide_Character := 'm';  -- WC'Val (109)
-    LC_N                 : constant Wide_Wide_Character := 'n';  -- WC'Val (110)
-    LC_O                 : constant Wide_Wide_Character := 'o';  -- WC'Val (111)
-    LC_P                 : constant Wide_Wide_Character := 'p';  -- WC'Val (112)
-    LC_Q                 : constant Wide_Wide_Character := 'q';  -- WC'Val (113)
-    LC_R                 : constant Wide_Wide_Character := 'r';  -- WC'Val (114)
-    LC_S                 : constant Wide_Wide_Character := 's';  -- WC'Val (115)
-    LC_T                 : constant Wide_Wide_Character := 't';  -- WC'Val (116)
-    LC_U                 : constant Wide_Wide_Character := 'u';  -- WC'Val (117)
-    LC_V                 : constant Wide_Wide_Character := 'v';  -- WC'Val (118)
-    LC_W                 : constant Wide_Wide_Character := 'w';  -- WC'Val (119)
-    LC_X                 : constant Wide_Wide_Character := 'x';  -- WC'Val (120)
-    LC_Y                 : constant Wide_Wide_Character := 'y';  -- WC'Val (121)
-    LC_Z                 : constant Wide_Wide_Character := 'z';  -- WC'Val (122)
-    Left_Curly_Bracket   : constant Wide_Wide_Character := '{';  -- WC'Val (123)
-    Vertical_Line        : constant Wide_Wide_Character := '|';  -- WC'Val (124)
-    Right_Curly_Bracket  : constant Wide_Wide_Character := '}';  -- WC'Val (125)
-    Tilde                : constant Wide_Wide_Character := '~';  -- WC'Val (126)
-    DEL                  : constant Wide_Wide_Character :=
-                             Wide_Wide_Character'Val (127);
- 
-    --------------------------------------
-    -- ISO 6429 Control Wide_Wide_Characters --
-    --------------------------------------
- 
-    IS4 : Wide_Wide_Character renames FS;
-    IS3 : Wide_Wide_Character renames GS;
-    IS2 : Wide_Wide_Character renames RS;
-    IS1 : Wide_Wide_Character renames US;
- 
-    Reserved_128
-         : constant Wide_Wide_Character := Wide_Wide_Character'Val (128);
-    Reserved_129
-         : constant Wide_Wide_Character := Wide_Wide_Character'Val (129);
-    BPH  : constant Wide_Wide_Character := Wide_Wide_Character'Val (130);
-    NBH  : constant Wide_Wide_Character := Wide_Wide_Character'Val (131);
-    Reserved_132
-         : constant Wide_Wide_Character := Wide_Wide_Character'Val (132);
-    NEL  : constant Wide_Wide_Character := Wide_Wide_Character'Val (133);
-    SSA  : constant Wide_Wide_Character := Wide_Wide_Character'Val (134);
-    ESA  : constant Wide_Wide_Character := Wide_Wide_Character'Val (135);
-    HTS  : constant Wide_Wide_Character := Wide_Wide_Character'Val (136);
-    HTJ  : constant Wide_Wide_Character := Wide_Wide_Character'Val (137);
-    VTS  : constant Wide_Wide_Character := Wide_Wide_Character'Val (138);
-    PLD  : constant Wide_Wide_Character := Wide_Wide_Character'Val (139);
-    PLU  : constant Wide_Wide_Character := Wide_Wide_Character'Val (140);
-    RI   : constant Wide_Wide_Character := Wide_Wide_Character'Val (141);
-    SS2  : constant Wide_Wide_Character := Wide_Wide_Character'Val (142);
-    SS3  : constant Wide_Wide_Character := Wide_Wide_Character'Val (143);
- 
-    DCS  : constant Wide_Wide_Character := Wide_Wide_Character'Val (144);
-    PU1  : constant Wide_Wide_Character := Wide_Wide_Character'Val (145);
-    PU2  : constant Wide_Wide_Character := Wide_Wide_Character'Val (146);
-    STS  : constant Wide_Wide_Character := Wide_Wide_Character'Val (147);
-    CCH  : constant Wide_Wide_Character := Wide_Wide_Character'Val (148);
-    MW   : constant Wide_Wide_Character := Wide_Wide_Character'Val (149);
-    SPA  : constant Wide_Wide_Character := Wide_Wide_Character'Val (150);
-    EPA  : constant Wide_Wide_Character := Wide_Wide_Character'Val (151);
- 
-    SOS  : constant Wide_Wide_Character := Wide_Wide_Character'Val (152);
-    Reserved_153
-         : constant Wide_Wide_Character := Wide_Wide_Character'Val (153);
-    SCI  : constant Wide_Wide_Character := Wide_Wide_Character'Val (154);
-    CSI  : constant Wide_Wide_Character := Wide_Wide_Character'Val (155);
-    ST   : constant Wide_Wide_Character := Wide_Wide_Character'Val (156);
-    OSC  : constant Wide_Wide_Character := Wide_Wide_Character'Val (157);
-    PM   : constant Wide_Wide_Character := Wide_Wide_Character'Val (158);
-    APC  : constant Wide_Wide_Character := Wide_Wide_Character'Val (159);
- 
-    -----------------------------------
-    -- Other Graphic Wide_Wide_Characters --
-    -----------------------------------
- 
-    --  Wide_Wide_Character positions 160 (16#A0#) .. 175 (16#AF#)
- 
-    No_Break_Space
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (160);
-    NBSP        : Wide_Wide_Character renames No_Break_Space;
-    Inverted_Exclamation
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (161);
-    Cent_Sign   : constant Wide_Wide_Character := Wide_Wide_Character'Val (162);
-    Pound_Sign  : constant Wide_Wide_Character := Wide_Wide_Character'Val (163);
-    Euro_Sign   : constant Wide_Wide_Character := Wide_Wide_Character'Val (164);
-    Yen_Sign    : constant Wide_Wide_Character := Wide_Wide_Character'Val (165);
-    UC_S_Caron  : constant Wide_Wide_Character := Wide_Wide_Character'Val (166);
-    Section_Sign
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (167);
-    LC_S_Caron  : constant Wide_Wide_Character := Wide_Wide_Character'Val (168);
-    Copyright_Sign
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (169);
-    Feminine_Ordinal_Indicator
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (170);
-    Left_Angle_Quotation
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (171);
-    Not_Sign    : constant Wide_Wide_Character := Wide_Wide_Character'Val (172);
-    Soft_Hyphen : constant Wide_Wide_Character := Wide_Wide_Character'Val (173);
-    Registered_Trade_Mark_Sign
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (174);
-    Macron      : constant Wide_Wide_Character := Wide_Wide_Character'Val (175);
- 
-    --  Wide_Wide_Character positions 176 (16#B0#) .. 191 (16#BF#)
- 
-    Degree_Sign : constant Wide_Wide_Character := Wide_Wide_Character'Val (176);
-    Ring_Above  : Wide_Wide_Character renames Degree_Sign;
-    Plus_Minus_Sign
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (177);
-    Superscript_Two
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (178);
-    Superscript_Three
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (179);
-    UC_Z_Caron  : constant Wide_Wide_Character := Wide_Wide_Character'Val (180);
-    Micro_Sign  : constant Wide_Wide_Character := Wide_Wide_Character'Val (181);
-    Pilcrow_Sign
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (182);
-    Paragraph_Sign
-                : Wide_Wide_Character renames Pilcrow_Sign;
-    Middle_Dot  : constant Wide_Wide_Character := Wide_Wide_Character'Val (183);
-    LC_Z_Caron  : constant Wide_Wide_Character := Wide_Wide_Character'Val (184);
-    Superscript_One
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (185);
-    Masculine_Ordinal_Indicator
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (186);
-    Right_Angle_Quotation
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (187);
-    UC_Ligature_OE
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (188);
-    LC_Ligature_OE
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (189);
-    UC_Y_Diaeresis
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (190);
-    Inverted_Question
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (191);
- 
-    --  Wide_Wide_Character positions 192 (16#C0#) .. 207 (16#CF#)
- 
-    UC_A_Grave  : constant Wide_Wide_Character := Wide_Wide_Character'Val (192);
-    UC_A_Acute  : constant Wide_Wide_Character := Wide_Wide_Character'Val (193);
-    UC_A_Circumflex
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (194);
-    UC_A_Tilde  : constant Wide_Wide_Character := Wide_Wide_Character'Val (195);
-    UC_A_Diaeresis
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (196);
-    UC_A_Ring   : constant Wide_Wide_Character := Wide_Wide_Character'Val (197);
-    UC_AE_Diphthong
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (198);
-    UC_C_Cedilla
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (199);
-    UC_E_Grave  : constant Wide_Wide_Character := Wide_Wide_Character'Val (200);
-    UC_E_Acute  : constant Wide_Wide_Character := Wide_Wide_Character'Val (201);
-    UC_E_Circumflex
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (202);
-    UC_E_Diaeresis
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (203);
-    UC_I_Grave  : constant Wide_Wide_Character := Wide_Wide_Character'Val (204);
-    UC_I_Acute  : constant Wide_Wide_Character := Wide_Wide_Character'Val (205);
-    UC_I_Circumflex
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (206);
-    UC_I_Diaeresis
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (207);
- 
-    --  Wide_Wide_Character positions 208 (16#D0#) .. 223 (16#DF#)
- 
-    UC_Icelandic_Eth
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (208);
-    UC_N_Tilde  : constant Wide_Wide_Character := Wide_Wide_Character'Val (209);
-    UC_O_Grave  : constant Wide_Wide_Character := Wide_Wide_Character'Val (210);
-    UC_O_Acute  : constant Wide_Wide_Character := Wide_Wide_Character'Val (211);
-    UC_O_Circumflex
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (212);
-    UC_O_Tilde  : constant Wide_Wide_Character := Wide_Wide_Character'Val (213);
-    UC_O_Diaeresis
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (214);
-    Multiplication_Sign
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (215);
-    UC_O_Oblique_Stroke
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (216);
-    UC_U_Grave  : constant Wide_Wide_Character := Wide_Wide_Character'Val (217);
-    UC_U_Acute  : constant Wide_Wide_Character := Wide_Wide_Character'Val (218);
-    UC_U_Circumflex
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (219);
-    UC_U_Diaeresis
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (220);
-    UC_Y_Acute  : constant Wide_Wide_Character := Wide_Wide_Character'Val (221);
-    UC_Icelandic_Thorn
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (222);
-    LC_German_Sharp_S
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (223);
- 
-    --  Wide_Wide_Character positions 224 (16#E0#) .. 239 (16#EF#)
- 
-    LC_A_Grave  : constant Wide_Wide_Character := Wide_Wide_Character'Val (224);
-    LC_A_Acute  : constant Wide_Wide_Character := Wide_Wide_Character'Val (225);
-    LC_A_Circumflex
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (226);
-    LC_A_Tilde  : constant Wide_Wide_Character := Wide_Wide_Character'Val (227);
-    LC_A_Diaeresis
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (228);
-    LC_A_Ring   : constant Wide_Wide_Character := Wide_Wide_Character'Val (229);
-    LC_AE_Diphthong
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (230);
-    LC_C_Cedilla
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (231);
-    LC_E_Grave  : constant Wide_Wide_Character := Wide_Wide_Character'Val (232);
-    LC_E_Acute  : constant Wide_Wide_Character := Wide_Wide_Character'Val (233);
-    LC_E_Circumflex
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (234);
-    LC_E_Diaeresis
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (235);
-    LC_I_Grave  : constant Wide_Wide_Character := Wide_Wide_Character'Val (236);
-    LC_I_Acute  : constant Wide_Wide_Character := Wide_Wide_Character'Val (237);
-    LC_I_Circumflex
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (238);
-    LC_I_Diaeresis
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (239);
- 
-    --  Wide_Wide_Character positions 240 (16#F0#) .. 255 (16#FF)
- 
-    LC_Icelandic_Eth
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (240);
-    LC_N_Tilde  : constant Wide_Wide_Character := Wide_Wide_Character'Val (241);
-    LC_O_Grave  : constant Wide_Wide_Character := Wide_Wide_Character'Val (242);
-    LC_O_Acute  : constant Wide_Wide_Character := Wide_Wide_Character'Val (243);
-    LC_O_Circumflex
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (244);
-    LC_O_Tilde  : constant Wide_Wide_Character := Wide_Wide_Character'Val (245);
-    LC_O_Diaeresis
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (246);
-    Division_Sign
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (247);
-    LC_O_Oblique_Stroke
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (248);
-    LC_U_Grave  : constant Wide_Wide_Character := Wide_Wide_Character'Val (249);
-    LC_U_Acute  : constant Wide_Wide_Character := Wide_Wide_Character'Val (250);
-    LC_U_Circumflex
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (251);
-    LC_U_Diaeresis
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (252);
-    LC_Y_Acute  : constant Wide_Wide_Character := Wide_Wide_Character'Val (253);
-    LC_Icelandic_Thorn
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (254);
-    LC_Y_Diaeresis
-                : constant Wide_Wide_Character := Wide_Wide_Character'Val (255);
- 
-    ------------------------------------------------
-    -- Summary of Changes from Latin-1 => Latin-9 --
-    ------------------------------------------------
- 
-    --   164     Currency                => Euro_Sign
-    --   166     Broken_Bar              => UC_S_Caron
-    --   168     Diaeresis               => LC_S_Caron
-    --   180     Acute                   => UC_Z_Caron
-    --   184     Cedilla                 => LC_Z_Caron
-    --   188     Fraction_One_Quarter    => UC_Ligature_OE
-    --   189     Fraction_One_Half       => LC_Ligature_OE
-    --   190     Fraction_Three_Quarters => UC_Y_Diaeresis
- 
- end Ada.Characters.Wide_Wide_Latin_9;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cidlli.adb gcc-8.1.0/gcc/ada/a-cidlli.adb
*** gcc-7.3.0/gcc/ada/a-cidlli.adb	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-cidlli.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,2290 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --               ADA.CONTAINERS.INDEFINITE_DOUBLY_LINKED_LISTS              --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 Ada.Unchecked_Deallocation;
- 
- with System; use type System.Address;
- 
- package body Ada.Containers.Indefinite_Doubly_Linked_Lists is
- 
-    pragma Warnings (Off, "variable ""Busy*"" is not referenced");
-    pragma Warnings (Off, "variable ""Lock*"" is not referenced");
-    --  See comment in Ada.Containers.Helpers
- 
-    procedure Free is
-      new Ada.Unchecked_Deallocation (Element_Type, Element_Access);
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    procedure Free (X : in out Node_Access);
- 
-    procedure Insert_Internal
-      (Container : in out List;
-       Before    : Node_Access;
-       New_Node  : Node_Access);
- 
-    procedure Splice_Internal
-      (Target : in out List;
-       Before : Node_Access;
-       Source : in out List);
- 
-    procedure Splice_Internal
-      (Target   : in out List;
-       Before   : Node_Access;
-       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
-    --  pass. Invocations of Vet are used here as the argument of pragma Assert,
-    --  so the checks are performed only when assertions are enabled.
- 
-    ---------
-    -- "=" --
-    ---------
- 
-    function "=" (Left, Right : List) return Boolean is
-    begin
-       if Left.Length /= Right.Length then
-          return False;
-       end if;
- 
-       if Left.Length = 0 then
-          return True;
-       end if;
- 
-       declare
-          --  Per AI05-0022, the container implementation is required to detect
-          --  element tampering by a generic actual subprogram.
- 
-          Lock_Left : With_Lock (Left.TC'Unrestricted_Access);
-          Lock_Right : With_Lock (Right.TC'Unrestricted_Access);
- 
-          L : Node_Access := Left.First;
-          R : Node_Access := Right.First;
-       begin
-          for J in 1 .. Left.Length loop
-             if L.Element.all /= R.Element.all then
-                return False;
-             end if;
- 
-             L := L.Next;
-             R := R.Next;
-          end loop;
-       end;
- 
-       return True;
-    end "=";
- 
-    ------------
-    -- Adjust --
-    ------------
- 
-    procedure Adjust (Container : in out List) is
-       Src : Node_Access := Container.First;
-       Dst : Node_Access;
- 
-    begin
-       --  If the counts are nonzero, execution is technically erroneous, but
-       --  it seems friendly to allow things like concurrent "=" on shared
-       --  constants.
- 
-       Zero_Counts (Container.TC);
- 
-       if Src = null then
-          pragma Assert (Container.Last = null);
-          pragma Assert (Container.Length = 0);
-          return;
-       end if;
- 
-       pragma Assert (Container.First.Prev = null);
-       pragma Assert (Container.Last.Next = null);
-       pragma Assert (Container.Length > 0);
- 
-       Container.First := null;
-       Container.Last := null;
-       Container.Length := 0;
- 
-       declare
-          Element : Element_Access := new Element_Type'(Src.Element.all);
-       begin
-          Dst := new Node_Type'(Element, null, null);
-       exception
-          when others =>
-             Free (Element);
-             raise;
-       end;
- 
-       Container.First := Dst;
-       Container.Last := Dst;
-       Container.Length := 1;
- 
-       Src := Src.Next;
-       while Src /= null loop
-          declare
-             Element : Element_Access := new Element_Type'(Src.Element.all);
-          begin
-             Dst := new Node_Type'(Element, null, Prev => Container.Last);
-          exception
-             when others =>
-                Free (Element);
-                raise;
-          end;
- 
-          Container.Last.Next := Dst;
-          Container.Last := Dst;
-          Container.Length := Container.Length + 1;
- 
-          Src := Src.Next;
-       end loop;
-    end Adjust;
- 
-    ------------
-    -- Append --
-    ------------
- 
-    procedure Append
-      (Container : in out List;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1)
-    is
-    begin
-       Insert (Container, No_Element, New_Item, Count);
-    end Append;
- 
-    ------------
-    -- Assign --
-    ------------
- 
-    procedure Assign (Target : in out List; Source : List) is
-       Node : Node_Access;
- 
-    begin
-       if Target'Address = Source'Address then
-          return;
- 
-       else
-          Target.Clear;
- 
-          Node := Source.First;
-          while Node /= null loop
-             Target.Append (Node.Element.all);
-             Node := Node.Next;
-          end loop;
-       end if;
-    end Assign;
- 
-    -----------
-    -- Clear --
-    -----------
- 
-    procedure Clear (Container : in out List) is
-       X : Node_Access;
-       pragma Warnings (Off, X);
- 
-    begin
-       if Container.Length = 0 then
-          pragma Assert (Container.First = null);
-          pragma Assert (Container.Last = null);
-          pragma Assert (Container.TC = (Busy => 0, Lock => 0));
-          return;
-       end if;
- 
-       pragma Assert (Container.First.Prev = null);
-       pragma Assert (Container.Last.Next = null);
- 
-       TC_Check (Container.TC);
- 
-       while Container.Length > 1 loop
-          X := Container.First;
-          pragma Assert (X.Next.Prev = Container.First);
- 
-          Container.First := X.Next;
-          Container.First.Prev := null;
- 
-          Container.Length := Container.Length - 1;
- 
-          Free (X);
-       end loop;
- 
-       X := Container.First;
-       pragma Assert (X = Container.Last);
- 
-       Container.First := null;
-       Container.Last := null;
-       Container.Length := 0;
- 
-       Free (X);
-    end Clear;
- 
-    ------------------------
-    -- Constant_Reference --
-    ------------------------
- 
-    function Constant_Reference
-      (Container : aliased List;
-       Position  : Cursor) return Constant_Reference_Type
-    is
-    begin
-       if Checks and then Position.Container = null then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor designates wrong container";
-       end if;
- 
-       if Checks and then Position.Node.Element = null then
-          raise Program_Error with "Node has no element";
-       end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in Constant_Reference");
- 
-       declare
-          TC : constant Tamper_Counts_Access :=
-            Container.TC'Unrestricted_Access;
-       begin
-          return R : constant Constant_Reference_Type :=
-            (Element => Position.Node.Element,
-             Control => (Controlled with TC))
-          do
-             Lock (TC.all);
-          end return;
-       end;
-    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) return List is
-    begin
-       return Target : List do
-          Target.Assign (Source);
-       end return;
-    end Copy;
- 
-    ------------
-    -- Delete --
-    ------------
- 
-    procedure Delete
-      (Container : in out List;
-       Position  : in out Cursor;
-       Count     : Count_Type := 1)
-    is
-       X : Node_Access;
- 
-    begin
-       if Checks and then Position.Node = null then
-          raise Constraint_Error with
-            "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Node.Element = null then
-          raise Program_Error with
-            "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor designates wrong container";
-       end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in Delete");
- 
-       if Position.Node = Container.First then
-          Delete_First (Container, Count);
-          Position := No_Element;  --  Post-York behavior
-          return;
-       end if;
- 
-       if Count = 0 then
-          Position := No_Element;  --  Post-York behavior
-          return;
-       end if;
- 
-       TC_Check (Container.TC);
- 
-       for Index in 1 .. Count loop
-          X := Position.Node;
-          Container.Length := Container.Length - 1;
- 
-          if X = Container.Last then
-             Position := No_Element;
- 
-             Container.Last := X.Prev;
-             Container.Last.Next := null;
- 
-             Free (X);
-             return;
-          end if;
- 
-          Position.Node := X.Next;
- 
-          X.Next.Prev := X.Prev;
-          X.Prev.Next := X.Next;
- 
-          Free (X);
-       end loop;
- 
-       --  Fix this junk comment ???
- 
-       Position := No_Element;  --  Post-York behavior
-    end Delete;
- 
-    ------------------
-    -- Delete_First --
-    ------------------
- 
-    procedure Delete_First
-      (Container : in out List;
-       Count     : Count_Type := 1)
-    is
-       X : Node_Access;
- 
-    begin
-       if Count >= Container.Length then
-          Clear (Container);
-          return;
-       end if;
- 
-       if Count = 0 then
-          return;
-       end if;
- 
-       TC_Check (Container.TC);
- 
-       for J in 1 .. Count loop
-          X := Container.First;
-          pragma Assert (X.Next.Prev = Container.First);
- 
-          Container.First := X.Next;
-          Container.First.Prev := null;
- 
-          Container.Length := Container.Length - 1;
- 
-          Free (X);
-       end loop;
-    end Delete_First;
- 
-    -----------------
-    -- Delete_Last --
-    -----------------
- 
-    procedure Delete_Last
-      (Container : in out List;
-       Count     : Count_Type := 1)
-    is
-       X : Node_Access;
- 
-    begin
-       if Count >= Container.Length then
-          Clear (Container);
-          return;
-       end if;
- 
-       if Count = 0 then
-          return;
-       end if;
- 
-       TC_Check (Container.TC);
- 
-       for J in 1 .. Count loop
-          X := Container.Last;
-          pragma Assert (X.Prev.Next = Container.Last);
- 
-          Container.Last := X.Prev;
-          Container.Last.Next := null;
- 
-          Container.Length := Container.Length - 1;
- 
-          Free (X);
-       end loop;
-    end Delete_Last;
- 
-    -------------
-    -- Element --
-    -------------
- 
-    function Element (Position : Cursor) return Element_Type is
-    begin
-       if Checks and then Position.Node = null then
-          raise Constraint_Error with
-            "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Node.Element = null then
-          raise Program_Error with
-            "Position cursor has no element";
-       end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in Element");
- 
-       return Position.Node.Element.all;
-    end Element;
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    procedure Finalize (Object : in out Iterator) is
-    begin
-       if Object.Container /= null then
-          Unbusy (Object.Container.TC);
-       end if;
-    end Finalize;
- 
-    ----------
-    -- Find --
-    ----------
- 
-    function Find
-      (Container : List;
-       Item      : Element_Type;
-       Position  : Cursor := No_Element) return Cursor
-    is
-       Node : Node_Access := Position.Node;
- 
-    begin
-       if Node = null then
-          Node := Container.First;
- 
-       else
-          if Checks and then Node.Element = null then
-             raise Program_Error;
-          end if;
- 
-          if Checks and then Position.Container /= Container'Unrestricted_Access
-          then
-             raise Program_Error with
-               "Position cursor designates wrong container";
-          end if;
- 
-          pragma Assert (Vet (Position), "bad cursor in Find");
-       end if;
- 
-       --  Per AI05-0022, the container implementation is required to detect
-       --  element tampering by a generic actual subprogram.
- 
-       declare
-          Lock : With_Lock (Container.TC'Unrestricted_Access);
-       begin
-          while Node /= null loop
-             if Node.Element.all = Item then
-                return Cursor'(Container'Unrestricted_Access, Node);
-             end if;
- 
-             Node := Node.Next;
-          end loop;
- 
-          return No_Element;
-       end;
-    end Find;
- 
-    -----------
-    -- First --
-    -----------
- 
-    function First (Container : List) return Cursor is
-    begin
-       if Container.First = null then
-          return No_Element;
-       else
-          return Cursor'(Container'Unrestricted_Access, Container.First);
-       end if;
-    end First;
- 
-    function First (Object : Iterator) return Cursor is
-    begin
-       --  The value of the iterator object's Node component influences the
-       --  behavior of the First (and Last) selector function.
- 
-       --  When the Node component is null, this means the iterator object was
-       --  constructed without a start expression, in which case the (forward)
-       --  iteration starts from the (logical) beginning of the entire sequence
-       --  of items (corresponding to Container.First, for a forward iterator).
- 
-       --  Otherwise, this is iteration over a partial sequence of items. When
-       --  the Node component is non-null, the iterator object was constructed
-       --  with a start expression, that specifies the position from which the
-       --  (forward) partial iteration begins.
- 
-       if Object.Node = null then
-          return Indefinite_Doubly_Linked_Lists.First (Object.Container.all);
-       else
-          return Cursor'(Object.Container, Object.Node);
-       end if;
-    end First;
- 
-    -------------------
-    -- First_Element --
-    -------------------
- 
-    function First_Element (Container : List) return Element_Type is
-    begin
-       if Checks and then Container.First = null then
-          raise Constraint_Error with "list is empty";
-       end if;
- 
-       return Container.First.Element.all;
-    end First_Element;
- 
-    ----------
-    -- Free --
-    ----------
- 
-    procedure Free (X : in out Node_Access) is
-       procedure Deallocate is
-          new Ada.Unchecked_Deallocation (Node_Type, Node_Access);
- 
-    begin
-       --  While a node is in use, as an active link in a list, its Previous and
-       --  Next components must be null, or designate a different node; this is
-       --  a node invariant. For this indefinite list, there is an additional
-       --  invariant: that the element access value be non-null. Before actually
-       --  deallocating the node, we set the node access value components of the
-       --  node to point to the node itself, and set the element access value to
-       --  null (by deallocating the node's element), thus falsifying the node
-       --  invariant. Subprogram Vet inspects the value of the node components
-       --  when interrogating the node, in order to detect whether the cursor's
-       --  node access value is dangling.
- 
-       --  Note that we have no guarantee that the storage for the node isn't
-       --  modified when it is deallocated, but there are other tests that Vet
-       --  does if node invariants appear to be satisifed. However, in practice
-       --  this simple test works well enough, detecting dangling references
-       --  immediately, without needing further interrogation.
- 
-       X.Next := X;
-       X.Prev := X;
- 
-       begin
-          Free (X.Element);
-       exception
-          when others =>
-             X.Element := null;
-             Deallocate (X);
-             raise;
-       end;
- 
-       Deallocate (X);
-    end Free;
- 
-    ---------------------
-    -- Generic_Sorting --
-    ---------------------
- 
-    package body Generic_Sorting is
- 
-       ---------------
-       -- Is_Sorted --
-       ---------------
- 
-       function Is_Sorted (Container : List) return Boolean is
-          --  Per AI05-0022, the container implementation is required to detect
-          --  element tampering by a generic actual subprogram.
- 
-          Lock : With_Lock (Container.TC'Unrestricted_Access);
- 
-          Node   : Node_Access;
-       begin
-          Node := Container.First;
-          for J in 2 .. Container.Length loop
-             if Node.Next.Element.all < Node.Element.all then
-                return False;
-             end if;
- 
-             Node := Node.Next;
-          end loop;
- 
-          return True;
-       end Is_Sorted;
- 
-       -----------
-       -- Merge --
-       -----------
- 
-       procedure Merge
-         (Target : in out List;
-          Source : in out List)
-       is
-       begin
-          --  The semantics of Merge changed slightly per AI05-0021. It was
-          --  originally the case that if Target and Source denoted the same
-          --  container object, then the GNAT implementation of Merge did
-          --  nothing. However, it was argued that RM05 did not precisely
-          --  specify the semantics for this corner case. The decision of the
-          --  ARG was that if Target and Source denote the same non-empty
-          --  container object, then Program_Error is raised.
- 
-          if Source.Is_Empty then
-             return;
-          end if;
- 
-          if Checks and then Target'Address = Source'Address then
-             raise Program_Error with
-               "Target and Source denote same non-empty container";
-          end if;
- 
-          if Checks and then Target.Length > Count_Type'Last - Source.Length
-          then
-             raise Constraint_Error with "new length exceeds maximum";
-          end if;
- 
-          TC_Check (Target.TC);
-          TC_Check (Source.TC);
- 
-          declare
-             Lock_Target : With_Lock (Target.TC'Unchecked_Access);
-             Lock_Source : With_Lock (Source.TC'Unchecked_Access);
- 
-             LI, RI, RJ : Node_Access;
- 
-          begin
-             LI := Target.First;
-             RI := Source.First;
-             while RI /= null loop
-                pragma Assert (RI.Next = null
-                                or else not (RI.Next.Element.all <
-                                               RI.Element.all));
- 
-                if LI = null then
-                   Splice_Internal (Target, null, Source);
-                   exit;
-                end if;
- 
-                pragma Assert (LI.Next = null
-                                or else not (LI.Next.Element.all <
-                                               LI.Element.all));
- 
-                if RI.Element.all < LI.Element.all then
-                   RJ := RI;
-                   RI := RI.Next;
-                   Splice_Internal (Target, LI, Source, RJ);
- 
-                else
-                   LI := LI.Next;
-                end if;
-             end loop;
-          end;
-       end Merge;
- 
-       ----------
-       -- Sort --
-       ----------
- 
-       procedure Sort (Container : in out List) is
-          procedure Partition (Pivot : Node_Access; Back  : Node_Access);
-          --  Comment ???
- 
-          procedure Sort (Front, Back : Node_Access);
-          --  Comment??? Confusing name??? change name???
- 
-          ---------------
-          -- Partition --
-          ---------------
- 
-          procedure Partition (Pivot : Node_Access; Back : Node_Access) is
-             Node : Node_Access;
- 
-          begin
-             Node := Pivot.Next;
-             while Node /= Back loop
-                if Node.Element.all < Pivot.Element.all then
-                   declare
-                      Prev : constant Node_Access := Node.Prev;
-                      Next : constant Node_Access := Node.Next;
- 
-                   begin
-                      Prev.Next := Next;
- 
-                      if Next = null then
-                         Container.Last := Prev;
-                      else
-                         Next.Prev := Prev;
-                      end if;
- 
-                      Node.Next := Pivot;
-                      Node.Prev := Pivot.Prev;
- 
-                      Pivot.Prev := Node;
- 
-                      if Node.Prev = null then
-                         Container.First := Node;
-                      else
-                         Node.Prev.Next := Node;
-                      end if;
- 
-                      Node := Next;
-                   end;
- 
-                else
-                   Node := Node.Next;
-                end if;
-             end loop;
-          end Partition;
- 
-          ----------
-          -- Sort --
-          ----------
- 
-          procedure Sort (Front, Back : Node_Access) is
-             Pivot : constant Node_Access :=
-               (if Front = null then Container.First else Front.Next);
-          begin
-             if Pivot /= Back then
-                Partition (Pivot, Back);
-                Sort (Front, Pivot);
-                Sort (Pivot, Back);
-             end if;
-          end Sort;
- 
-       --  Start of processing for Sort
- 
-       begin
-          if Container.Length <= 1 then
-             return;
-          end if;
- 
-          pragma Assert (Container.First.Prev = null);
-          pragma Assert (Container.Last.Next = null);
- 
-          TC_Check (Container.TC);
- 
-          --  Per AI05-0022, the container implementation is required to detect
-          --  element tampering by a generic actual subprogram.
- 
-          declare
-             Lock : With_Lock (Container.TC'Unchecked_Access);
-          begin
-             Sort (Front => null, Back => null);
-          end;
- 
-          pragma Assert (Container.First.Prev = null);
-          pragma Assert (Container.Last.Next = null);
-       end Sort;
- 
-    end Generic_Sorting;
- 
-    ------------------------
-    -- Get_Element_Access --
-    ------------------------
- 
-    function Get_Element_Access
-      (Position : Cursor) return not null Element_Access is
-    begin
-       return Position.Node.Element;
-    end Get_Element_Access;
- 
-    -----------------
-    -- Has_Element --
-    -----------------
- 
-    function Has_Element (Position : Cursor) return Boolean is
-    begin
-       pragma Assert (Vet (Position), "bad cursor in Has_Element");
-       return Position.Node /= null;
-    end Has_Element;
- 
-    ------------
-    -- Insert --
-    ------------
- 
-    procedure Insert
-      (Container : in out List;
-       Before    : Cursor;
-       New_Item  : Element_Type;
-       Position  : out Cursor;
-       Count     : Count_Type := 1)
-    is
-       First_Node : Node_Access;
-       New_Node   : Node_Access;
- 
-    begin
-       if Before.Container /= null then
-          if Checks and then Before.Container /= Container'Unrestricted_Access
-          then
-             raise Program_Error with
-               "Before cursor designates wrong list";
-          end if;
- 
-          if Checks and then
-            (Before.Node = null or else Before.Node.Element = null)
-          then
-             raise Program_Error with
-               "Before cursor has no element";
-          end if;
- 
-          pragma Assert (Vet (Before), "bad cursor in Insert");
-       end if;
- 
-       if Count = 0 then
-          Position := Before;
-          return;
-       end if;
- 
-       if Checks and then Container.Length > Count_Type'Last - Count then
-          raise Constraint_Error with "new length exceeds maximum";
-       end if;
- 
-       TC_Check (Container.TC);
- 
-       declare
-          --  The element allocator may need an accessibility check in the case
-          --  the actual type is class-wide or has access discriminants (see
-          --  RM 4.8(10.1) and AI12-0035). We don't unsuppress the check on the
-          --  allocator in the loop below, because the one in this block would
-          --  have failed already.
- 
-          pragma Unsuppress (Accessibility_Check);
- 
-          Element : Element_Access := new Element_Type'(New_Item);
- 
-       begin
-          New_Node   := new Node_Type'(Element, null, null);
-          First_Node := New_Node;
- 
-       exception
-          when others =>
-             Free (Element);
-             raise;
-       end;
- 
-       Insert_Internal (Container, Before.Node, New_Node);
- 
-       for J in 2 .. Count loop
-          declare
-             Element : Element_Access := new Element_Type'(New_Item);
-          begin
-             New_Node := new Node_Type'(Element, null, null);
-          exception
-             when others =>
-                Free (Element);
-                raise;
-          end;
- 
-          Insert_Internal (Container, Before.Node, New_Node);
-       end loop;
- 
-       Position := Cursor'(Container'Unchecked_Access, First_Node);
-    end Insert;
- 
-    procedure Insert
-      (Container : in out List;
-       Before    : Cursor;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1)
-    is
-       Position : Cursor;
-       pragma Unreferenced (Position);
-    begin
-       Insert (Container, Before, New_Item, Position, Count);
-    end Insert;
- 
-    ---------------------
-    -- Insert_Internal --
-    ---------------------
- 
-    procedure Insert_Internal
-      (Container : in out List;
-       Before    : Node_Access;
-       New_Node  : Node_Access)
-    is
-    begin
-       if Container.Length = 0 then
-          pragma Assert (Before = null);
-          pragma Assert (Container.First = null);
-          pragma Assert (Container.Last = null);
- 
-          Container.First := New_Node;
-          Container.Last := New_Node;
- 
-       elsif Before = null then
-          pragma Assert (Container.Last.Next = null);
- 
-          Container.Last.Next := New_Node;
-          New_Node.Prev := Container.Last;
- 
-          Container.Last := New_Node;
- 
-       elsif Before = Container.First then
-          pragma Assert (Container.First.Prev = null);
- 
-          Container.First.Prev := New_Node;
-          New_Node.Next := Container.First;
- 
-          Container.First := New_Node;
- 
-       else
-          pragma Assert (Container.First.Prev = null);
-          pragma Assert (Container.Last.Next = null);
- 
-          New_Node.Next := Before;
-          New_Node.Prev := Before.Prev;
- 
-          Before.Prev.Next := New_Node;
-          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 Container.Length = 0;
-    end Is_Empty;
- 
-    -------------
-    -- Iterate --
-    -------------
- 
-    procedure Iterate
-      (Container : List;
-       Process   : not null access procedure (Position : Cursor))
-    is
-       Busy : With_Busy (Container.TC'Unrestricted_Access);
-       Node : Node_Access := Container.First;
- 
-    begin
-       while Node /= null loop
-          Process (Cursor'(Container'Unrestricted_Access, Node));
-          Node := Node.Next;
-       end loop;
-    end Iterate;
- 
-    function Iterate
-      (Container : List)
-       return List_Iterator_Interfaces.Reversible_Iterator'class
-    is
-    begin
-       --  The value of the Node component influences the behavior of the First
-       --  and Last selector functions of the iterator object. When the Node
-       --  component is null (as is the case here), this means the iterator
-       --  object was constructed without a start expression. This is a
-       --  complete iterator, meaning that the iteration starts from the
-       --  (logical) beginning of the sequence of items.
- 
-       --  Note: For a forward iterator, Container.First is the beginning, and
-       --  for a reverse iterator, Container.Last is the beginning.
- 
-       return It : constant Iterator :=
-                     Iterator'(Limited_Controlled with
-                                 Container => Container'Unrestricted_Access,
-                                 Node      => null)
-       do
-          Busy (Container.TC'Unrestricted_Access.all);
-       end return;
-    end Iterate;
- 
-    function Iterate
-      (Container : List;
-       Start     : Cursor)
-       return List_Iterator_Interfaces.Reversible_Iterator'Class
-    is
-    begin
-       --  It was formerly the case that when Start = No_Element, the partial
-       --  iterator was defined to behave the same as for a complete iterator,
-       --  and iterate over the entire sequence of items. However, those
-       --  semantics were unintuitive and arguably error-prone (it is too easy
-       --  to accidentally create an endless loop), and so they were changed,
-       --  per the ARG meeting in Denver on 2011/11. However, there was no
-       --  consensus about what positive meaning this corner case should have,
-       --  and so it was decided to simply raise an exception. This does imply,
-       --  however, that it is not possible to use a partial iterator to specify
-       --  an empty sequence of items.
- 
-       if Checks and then Start = No_Element then
-          raise Constraint_Error with
-            "Start position for iterator equals No_Element";
-       end if;
- 
-       if Checks and then Start.Container /= Container'Unrestricted_Access then
-          raise Program_Error with
-            "Start cursor of Iterate designates wrong list";
-       end if;
- 
-       pragma Assert (Vet (Start), "Start cursor of Iterate is bad");
- 
-       --  The value of the Node component influences the behavior of the
-       --  First and Last selector functions of the iterator object. When
-       --  the Node component is non-null (as is the case here), it means
-       --  that this is a partial iteration, over a subset of the complete
-       --  sequence of items. The iterator object was constructed with
-       --  a start expression, indicating the position from which the
-       --  iteration begins. Note that the start position has the same value
-       --  irrespective of whether this is a forward or reverse iteration.
- 
-       return It : constant Iterator :=
-                     Iterator'(Limited_Controlled with
-                                 Container => Container'Unrestricted_Access,
-                               Node      => Start.Node)
-       do
-          Busy (Container.TC'Unrestricted_Access.all);
-       end return;
-    end Iterate;
- 
-    ----------
-    -- Last --
-    ----------
- 
-    function Last (Container : List) return Cursor is
-    begin
-       if Container.Last = null then
-          return No_Element;
-       else
-          return Cursor'(Container'Unrestricted_Access, Container.Last);
-       end if;
-    end Last;
- 
-    function Last (Object : Iterator) return Cursor is
-    begin
-       --  The value of the iterator object's Node component influences the
-       --  behavior of the Last (and First) selector function.
- 
-       --  When the Node component is null, this means the iterator object was
-       --  constructed without a start expression, in which case the (reverse)
-       --  iteration starts from the (logical) beginning of the entire sequence
-       --  (corresponding to Container.Last, for a reverse iterator).
- 
-       --  Otherwise, this is iteration over a partial sequence of items. When
-       --  the Node component is non-null, the iterator object was constructed
-       --  with a start expression, that specifies the position from which the
-       --  (reverse) partial iteration begins.
- 
-       if Object.Node = null then
-          return Indefinite_Doubly_Linked_Lists.Last (Object.Container.all);
-       else
-          return Cursor'(Object.Container, Object.Node);
-       end if;
-    end Last;
- 
-    ------------------
-    -- Last_Element --
-    ------------------
- 
-    function Last_Element (Container : List) return Element_Type is
-    begin
-       if Checks and then Container.Last = null then
-          raise Constraint_Error with "list is empty";
-       end if;
- 
-       return Container.Last.Element.all;
-    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
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       TC_Check (Source.TC);
- 
-       Clear (Target);
- 
-       Target.First := Source.First;
-       Source.First := null;
- 
-       Target.Last := Source.Last;
-       Source.Last := null;
- 
-       Target.Length := Source.Length;
-       Source.Length := 0;
-    end Move;
- 
-    ----------
-    -- Next --
-    ----------
- 
-    procedure Next (Position : in out Cursor) is
-    begin
-       Position := Next (Position);
-    end Next;
- 
-    function Next (Position : Cursor) return Cursor is
-    begin
-       if Position.Node = null then
-          return No_Element;
- 
-       else
-          pragma Assert (Vet (Position), "bad cursor in Next");
- 
-          declare
-             Next_Node : constant Node_Access := Position.Node.Next;
-          begin
-             if Next_Node = null then
-                return No_Element;
-             else
-                return Cursor'(Position.Container, Next_Node);
-             end if;
-          end;
-       end if;
-    end Next;
- 
-    function Next (Object : Iterator; Position : Cursor) return Cursor is
-    begin
-       if Position.Container = null then
-          return No_Element;
-       end if;
- 
-       if Checks and then Position.Container /= Object.Container then
-          raise Program_Error with
-            "Position cursor of Next designates wrong list";
-       end if;
- 
-       return Next (Position);
-    end Next;
- 
-    -------------
-    -- Prepend --
-    -------------
- 
-    procedure Prepend
-      (Container : in out List;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1)
-    is
-    begin
-       Insert (Container, First (Container), New_Item, Count);
-    end Prepend;
- 
-    --------------
-    -- Previous --
-    --------------
- 
-    procedure Previous (Position : in out Cursor) is
-    begin
-       Position := Previous (Position);
-    end Previous;
- 
-    function Previous (Position : Cursor) return Cursor is
-    begin
-       if Position.Node = null then
-          return No_Element;
- 
-       else
-          pragma Assert (Vet (Position), "bad cursor in Previous");
- 
-          declare
-             Prev_Node : constant Node_Access := Position.Node.Prev;
-          begin
-             if Prev_Node = null then
-                return No_Element;
-             else
-                return Cursor'(Position.Container, Prev_Node);
-             end if;
-          end;
-       end if;
-    end Previous;
- 
-    function Previous (Object : Iterator; Position : Cursor) return Cursor is
-    begin
-       if Position.Container = null then
-          return No_Element;
-       end if;
- 
-       if Checks and then Position.Container /= Object.Container then
-          raise Program_Error with
-            "Position cursor of Previous designates wrong list";
-       end if;
- 
-       return Previous (Position);
-    end Previous;
- 
-    ----------------------
-    -- Pseudo_Reference --
-    ----------------------
- 
-    function Pseudo_Reference
-      (Container : aliased List'Class) return Reference_Control_Type
-    is
-       TC : constant Tamper_Counts_Access := Container.TC'Unrestricted_Access;
-    begin
-       return R : constant Reference_Control_Type := (Controlled with TC) do
-          Lock (TC.all);
-       end return;
-    end Pseudo_Reference;
- 
-    -------------------
-    -- Query_Element --
-    -------------------
- 
-    procedure Query_Element
-      (Position : Cursor;
-       Process  : not null access procedure (Element : Element_Type))
-    is
-    begin
-       if Checks and then Position.Node = null then
-          raise Constraint_Error with
-            "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Node.Element = null then
-          raise Program_Error with
-            "Position cursor has no element";
-       end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in Query_Element");
- 
-       declare
-          Lock : With_Lock (Position.Container.TC'Unrestricted_Access);
-       begin
-          Process (Position.Node.Element.all);
-       end;
-    end Query_Element;
- 
-    ----------
-    -- Read --
-    ----------
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out List)
-    is
-       N   : Count_Type'Base;
-       Dst : Node_Access;
- 
-    begin
-       Clear (Item);
- 
-       Count_Type'Base'Read (Stream, N);
- 
-       if N = 0 then
-          return;
-       end if;
- 
-       declare
-          Element : Element_Access :=
-                      new Element_Type'(Element_Type'Input (Stream));
-       begin
-          Dst := new Node_Type'(Element, null, null);
-       exception
-          when others =>
-             Free (Element);
-             raise;
-       end;
- 
-       Item.First := Dst;
-       Item.Last := Dst;
-       Item.Length := 1;
- 
-       while Item.Length < N loop
-          declare
-             Element : Element_Access :=
-                         new Element_Type'(Element_Type'Input (Stream));
-          begin
-             Dst := new Node_Type'(Element, Next => null, Prev => Item.Last);
-          exception
-             when others =>
-                Free (Element);
-                raise;
-          end;
- 
-          Item.Last.Next := Dst;
-          Item.Last := Dst;
-          Item.Length := Item.Length + 1;
-       end loop;
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Cursor)
-    is
-    begin
-       raise Program_Error with "attempt to stream list cursor";
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Constant_Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Read;
- 
-    ---------------
-    -- Reference --
-    ---------------
- 
-    function Reference
-      (Container : aliased in out List;
-       Position  : Cursor) return Reference_Type
-    is
-    begin
-       if Checks and then Position.Container = null then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor designates wrong container";
-       end if;
- 
-       if Checks and then Position.Node.Element = null then
-          raise Program_Error with "Node has no element";
-       end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in function Reference");
- 
-       declare
-          TC : constant Tamper_Counts_Access :=
-            Container.TC'Unrestricted_Access;
-       begin
-          return R : constant Reference_Type :=
-            (Element => Position.Node.Element,
-             Control => (Controlled with TC))
-          do
-             Lock (TC.all);
-          end return;
-       end;
-    end Reference;
- 
-    ---------------------
-    -- Replace_Element --
-    ---------------------
- 
-    procedure Replace_Element
-      (Container : in out List;
-       Position  : Cursor;
-       New_Item  : Element_Type)
-    is
-    begin
-       if Checks and then Position.Container = null then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unchecked_Access then
-          raise Program_Error with
-            "Position cursor designates wrong container";
-       end if;
- 
-       TE_Check (Container.TC);
- 
-       if Checks and then Position.Node.Element = null then
-          raise Program_Error with
-            "Position cursor has no element";
-       end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in Replace_Element");
- 
-       declare
-          --  The element allocator may need an accessibility check in the
-          --  case the actual type is class-wide or has access discriminants
-          --  (see RM 4.8(10.1) and AI12-0035).
- 
-          pragma Unsuppress (Accessibility_Check);
- 
-          X : Element_Access := Position.Node.Element;
- 
-       begin
-          Position.Node.Element := new Element_Type'(New_Item);
-          Free (X);
-       end;
-    end Replace_Element;
- 
-    ----------------------
-    -- Reverse_Elements --
-    ----------------------
- 
-    procedure Reverse_Elements (Container : in out List) is
-       I : Node_Access := Container.First;
-       J : Node_Access := Container.Last;
- 
-       procedure Swap (L, R : Node_Access);
- 
-       ----------
-       -- Swap --
-       ----------
- 
-       procedure Swap (L, R : Node_Access) is
-          LN : constant Node_Access := L.Next;
-          LP : constant Node_Access := L.Prev;
- 
-          RN : constant Node_Access := R.Next;
-          RP : constant Node_Access := R.Prev;
- 
-       begin
-          if LP /= null then
-             LP.Next := R;
-          end if;
- 
-          if RN /= null then
-             RN.Prev := L;
-          end if;
- 
-          L.Next := RN;
-          R.Prev := LP;
- 
-          if LN = R then
-             pragma Assert (RP = L);
- 
-             L.Prev := R;
-             R.Next := L;
- 
-          else
-             L.Prev := RP;
-             RP.Next := L;
- 
-             R.Next := LN;
-             LN.Prev := R;
-          end if;
-       end Swap;
- 
-    --  Start of processing for Reverse_Elements
- 
-    begin
-       if Container.Length <= 1 then
-          return;
-       end if;
- 
-       pragma Assert (Container.First.Prev = null);
-       pragma Assert (Container.Last.Next = null);
- 
-       TC_Check (Container.TC);
- 
-       Container.First := J;
-       Container.Last := I;
-       loop
-          Swap (L => I, R => J);
- 
-          J := J.Next;
-          exit when I = J;
- 
-          I := I.Prev;
-          exit when I = J;
- 
-          Swap (L => J, R => I);
- 
-          I := I.Next;
-          exit when I = J;
- 
-          J := J.Prev;
-          exit when I = J;
-       end loop;
- 
-       pragma Assert (Container.First.Prev = null);
-       pragma Assert (Container.Last.Next = null);
-    end Reverse_Elements;
- 
-    ------------------
-    -- Reverse_Find --
-    ------------------
- 
-    function Reverse_Find
-      (Container : List;
-       Item      : Element_Type;
-       Position  : Cursor := No_Element) return Cursor
-    is
-       Node : Node_Access := Position.Node;
- 
-    begin
-       if Node = null then
-          Node := Container.Last;
- 
-       else
-          if Checks and then Node.Element = null then
-             raise Program_Error with "Position cursor has no element";
-          end if;
- 
-          if Checks and then Position.Container /= Container'Unrestricted_Access
-          then
-             raise Program_Error with
-               "Position cursor designates wrong container";
-          end if;
- 
-          pragma Assert (Vet (Position), "bad cursor in Reverse_Find");
-       end if;
- 
-       --  Per AI05-0022, the container implementation is required to detect
-       --  element tampering by a generic actual subprogram.
- 
-       declare
-          Lock : With_Lock (Container.TC'Unrestricted_Access);
-       begin
-          while Node /= null loop
-             if Node.Element.all = Item then
-                return Cursor'(Container'Unrestricted_Access, Node);
-             end if;
- 
-             Node := Node.Prev;
-          end loop;
- 
-          return No_Element;
-       end;
-    end Reverse_Find;
- 
-    ---------------------
-    -- Reverse_Iterate --
-    ---------------------
- 
-    procedure Reverse_Iterate
-      (Container : List;
-       Process   : not null access procedure (Position : Cursor))
-    is
-       Busy : With_Busy (Container.TC'Unrestricted_Access);
-       Node : Node_Access := Container.Last;
- 
-    begin
-       while Node /= null loop
-          Process (Cursor'(Container'Unrestricted_Access, Node));
-          Node := Node.Prev;
-       end loop;
-    end Reverse_Iterate;
- 
-    ------------
-    -- Splice --
-    ------------
- 
-    procedure Splice
-      (Target : in out List;
-       Before : Cursor;
-       Source : in out List)
-    is
-    begin
-       if Before.Container /= null then
-          if Checks and then Before.Container /= Target'Unrestricted_Access then
-             raise Program_Error with
-               "Before cursor designates wrong container";
-          end if;
- 
-          if Checks and then
-            (Before.Node = null or else Before.Node.Element = null)
-          then
-             raise Program_Error with
-               "Before cursor has no element";
-          end if;
- 
-          pragma Assert (Vet (Before), "bad cursor in Splice");
-       end if;
- 
-       if Target'Address = Source'Address or else Source.Length = 0 then
-          return;
-       end if;
- 
-       if Checks and then Target.Length > Count_Type'Last - Source.Length then
-          raise Constraint_Error with "new length exceeds maximum";
-       end if;
- 
-       TC_Check (Target.TC);
-       TC_Check (Source.TC);
- 
-       Splice_Internal (Target, Before.Node, Source);
-    end Splice;
- 
-    procedure Splice
-      (Container : in out List;
-       Before    : Cursor;
-       Position  : Cursor)
-    is
-    begin
-       if Before.Container /= null then
-          if Checks and then Before.Container /= Container'Unchecked_Access then
-             raise Program_Error with
-               "Before cursor designates wrong container";
-          end if;
- 
-          if Checks and then
-            (Before.Node = null or else Before.Node.Element = null)
-          then
-             raise Program_Error with
-               "Before cursor has no element";
-          end if;
- 
-          pragma Assert (Vet (Before), "bad Before cursor in Splice");
-       end if;
- 
-       if Checks and then Position.Node = null then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Node.Element = null then
-          raise Program_Error with "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor designates wrong container";
-       end if;
- 
-       pragma Assert (Vet (Position), "bad Position cursor in Splice");
- 
-       if Position.Node = Before.Node
-         or else Position.Node.Next = Before.Node
-       then
-          return;
-       end if;
- 
-       pragma Assert (Container.Length >= 2);
- 
-       TC_Check (Container.TC);
- 
-       if Before.Node = null then
-          pragma Assert (Position.Node /= Container.Last);
- 
-          if Position.Node = Container.First then
-             Container.First := Position.Node.Next;
-             Container.First.Prev := null;
-          else
-             Position.Node.Prev.Next := Position.Node.Next;
-             Position.Node.Next.Prev := Position.Node.Prev;
-          end if;
- 
-          Container.Last.Next := Position.Node;
-          Position.Node.Prev := Container.Last;
- 
-          Container.Last := Position.Node;
-          Container.Last.Next := null;
- 
-          return;
-       end if;
- 
-       if Before.Node = Container.First then
-          pragma Assert (Position.Node /= Container.First);
- 
-          if Position.Node = Container.Last then
-             Container.Last := Position.Node.Prev;
-             Container.Last.Next := null;
-          else
-             Position.Node.Prev.Next := Position.Node.Next;
-             Position.Node.Next.Prev := Position.Node.Prev;
-          end if;
- 
-          Container.First.Prev := Position.Node;
-          Position.Node.Next := Container.First;
- 
-          Container.First := Position.Node;
-          Container.First.Prev := null;
- 
-          return;
-       end if;
- 
-       if Position.Node = Container.First then
-          Container.First := Position.Node.Next;
-          Container.First.Prev := null;
- 
-       elsif Position.Node = Container.Last then
-          Container.Last := Position.Node.Prev;
-          Container.Last.Next := null;
- 
-       else
-          Position.Node.Prev.Next := Position.Node.Next;
-          Position.Node.Next.Prev := Position.Node.Prev;
-       end if;
- 
-       Before.Node.Prev.Next := Position.Node;
-       Position.Node.Prev := Before.Node.Prev;
- 
-       Before.Node.Prev := Position.Node;
-       Position.Node.Next := Before.Node;
- 
-       pragma Assert (Container.First.Prev = null);
-       pragma Assert (Container.Last.Next = null);
-    end Splice;
- 
-    procedure Splice
-      (Target   : in out List;
-       Before   : Cursor;
-       Source   : in out List;
-       Position : in out Cursor)
-    is
-    begin
-       if Target'Address = Source'Address then
-          Splice (Target, Before, Position);
-          return;
-       end if;
- 
-       if Before.Container /= null then
-          if Checks and then Before.Container /= Target'Unrestricted_Access then
-             raise Program_Error with
-               "Before cursor designates wrong container";
-          end if;
- 
-          if Checks and then
-            (Before.Node = null or else Before.Node.Element = null)
-          then
-             raise Program_Error with
-               "Before cursor has no element";
-          end if;
- 
-          pragma Assert (Vet (Before), "bad Before cursor in Splice");
-       end if;
- 
-       if Checks and then Position.Node = null then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Node.Element = null then
-          raise Program_Error with
-            "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Source'Unrestricted_Access then
-          raise Program_Error with
-            "Position cursor designates wrong container";
-       end if;
- 
-       pragma Assert (Vet (Position), "bad Position cursor in Splice");
- 
-       if Checks and then Target.Length = Count_Type'Last then
-          raise Constraint_Error with "Target is full";
-       end if;
- 
-       TC_Check (Target.TC);
-       TC_Check (Source.TC);
- 
-       Splice_Internal (Target, Before.Node, Source, Position.Node);
-       Position.Container := Target'Unchecked_Access;
-    end Splice;
- 
-    ---------------------
-    -- Splice_Internal --
-    ---------------------
- 
-    procedure Splice_Internal
-      (Target : in out List;
-       Before : Node_Access;
-       Source : in out List)
-    is
-    begin
-       --  This implements the corresponding Splice operation, after the
-       --  parameters have been vetted, and corner-cases disposed of.
- 
-       pragma Assert (Target'Address /= Source'Address);
-       pragma Assert (Source.Length > 0);
-       pragma Assert (Source.First /= null);
-       pragma Assert (Source.First.Prev = null);
-       pragma Assert (Source.Last /= null);
-       pragma Assert (Source.Last.Next = null);
-       pragma Assert (Target.Length <= Count_Type'Last - Source.Length);
- 
-       if Target.Length = 0 then
-          pragma Assert (Before = null);
-          pragma Assert (Target.First = null);
-          pragma Assert (Target.Last = null);
- 
-          Target.First := Source.First;
-          Target.Last := Source.Last;
- 
-       elsif Before = null then
-          pragma Assert (Target.Last.Next = null);
- 
-          Target.Last.Next := Source.First;
-          Source.First.Prev := Target.Last;
- 
-          Target.Last := Source.Last;
- 
-       elsif Before = Target.First then
-          pragma Assert (Target.First.Prev = null);
- 
-          Source.Last.Next := Target.First;
-          Target.First.Prev := Source.Last;
- 
-          Target.First := Source.First;
- 
-       else
-          pragma Assert (Target.Length >= 2);
-          Before.Prev.Next := Source.First;
-          Source.First.Prev := Before.Prev;
- 
-          Before.Prev := Source.Last;
-          Source.Last.Next := Before;
-       end if;
- 
-       Source.First := null;
-       Source.Last := null;
- 
-       Target.Length := Target.Length + Source.Length;
-       Source.Length := 0;
-    end Splice_Internal;
- 
-    procedure Splice_Internal
-      (Target   : in out List;
-       Before   : Node_Access;  -- node of Target
-       Source   : in out List;
-       Position : Node_Access)  -- node of Source
-    is
-    begin
-       --  This implements the corresponding Splice operation, after the
-       --  parameters have been vetted.
- 
-       pragma Assert (Target'Address /= Source'Address);
-       pragma Assert (Target.Length < Count_Type'Last);
-       pragma Assert (Source.Length > 0);
-       pragma Assert (Source.First /= null);
-       pragma Assert (Source.First.Prev = null);
-       pragma Assert (Source.Last /= null);
-       pragma Assert (Source.Last.Next = null);
-       pragma Assert (Position /= null);
- 
-       if Position = Source.First then
-          Source.First := Position.Next;
- 
-          if Position = Source.Last then
-             pragma Assert (Source.First = null);
-             pragma Assert (Source.Length = 1);
-             Source.Last := null;
- 
-          else
-             Source.First.Prev := null;
-          end if;
- 
-       elsif Position = Source.Last then
-          pragma Assert (Source.Length >= 2);
-          Source.Last := Position.Prev;
-          Source.Last.Next := null;
- 
-       else
-          pragma Assert (Source.Length >= 3);
-          Position.Prev.Next := Position.Next;
-          Position.Next.Prev := Position.Prev;
-       end if;
- 
-       if Target.Length = 0 then
-          pragma Assert (Before = null);
-          pragma Assert (Target.First = null);
-          pragma Assert (Target.Last = null);
- 
-          Target.First := Position;
-          Target.Last := Position;
- 
-          Target.First.Prev := null;
-          Target.Last.Next := null;
- 
-       elsif Before = null then
-          pragma Assert (Target.Last.Next = null);
-          Target.Last.Next := Position;
-          Position.Prev := Target.Last;
- 
-          Target.Last := Position;
-          Target.Last.Next := null;
- 
-       elsif Before = Target.First then
-          pragma Assert (Target.First.Prev = null);
-          Target.First.Prev := Position;
-          Position.Next := Target.First;
- 
-          Target.First := Position;
-          Target.First.Prev := null;
- 
-       else
-          pragma Assert (Target.Length >= 2);
-          Before.Prev.Next := Position;
-          Position.Prev := Before.Prev;
- 
-          Before.Prev := Position;
-          Position.Next := Before;
-       end if;
- 
-       Target.Length := Target.Length + 1;
-       Source.Length := Source.Length - 1;
-    end Splice_Internal;
- 
-    ----------
-    -- Swap --
-    ----------
- 
-    procedure Swap
-      (Container : in out List;
-       I, J      : Cursor)
-    is
-    begin
-       if Checks and then I.Node = null then
-          raise Constraint_Error with "I cursor has no element";
-       end if;
- 
-       if Checks and then J.Node = null then
-          raise Constraint_Error with "J cursor has no element";
-       end if;
- 
-       if Checks and then I.Container /= Container'Unchecked_Access then
-          raise Program_Error with "I cursor designates wrong container";
-       end if;
- 
-       if Checks and then J.Container /= Container'Unchecked_Access then
-          raise Program_Error with "J cursor designates wrong container";
-       end if;
- 
-       if I.Node = J.Node then
-          return;
-       end if;
- 
-       TE_Check (Container.TC);
- 
-       pragma Assert (Vet (I), "bad I cursor in Swap");
-       pragma Assert (Vet (J), "bad J cursor in Swap");
- 
-       declare
-          EI_Copy : constant Element_Access := I.Node.Element;
- 
-       begin
-          I.Node.Element := J.Node.Element;
-          J.Node.Element := EI_Copy;
-       end;
-    end Swap;
- 
-    ----------------
-    -- Swap_Links --
-    ----------------
- 
-    procedure Swap_Links
-      (Container : in out List;
-       I, J      : Cursor)
-    is
-    begin
-       if Checks and then I.Node = null then
-          raise Constraint_Error with "I cursor has no element";
-       end if;
- 
-       if Checks and then J.Node = null then
-          raise Constraint_Error with "J cursor has no element";
-       end if;
- 
-       if Checks and then I.Container /= Container'Unrestricted_Access then
-          raise Program_Error with "I cursor designates wrong container";
-       end if;
- 
-       if Checks and then J.Container /= Container'Unrestricted_Access then
-          raise Program_Error with "J cursor designates wrong container";
-       end if;
- 
-       if I.Node = J.Node then
-          return;
-       end if;
- 
-       TC_Check (Container.TC);
- 
-       pragma Assert (Vet (I), "bad I cursor in Swap_Links");
-       pragma Assert (Vet (J), "bad J cursor in Swap_Links");
- 
-       declare
-          I_Next : constant Cursor := Next (I);
- 
-       begin
-          if I_Next = J then
-             Splice (Container, Before => I, Position => J);
- 
-          else
-             declare
-                J_Next : constant Cursor := Next (J);
- 
-             begin
-                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;
-          end if;
-       end;
- 
-       pragma Assert (Container.First.Prev = null);
-       pragma Assert (Container.Last.Next = null);
-    end Swap_Links;
- 
-    --------------------
-    -- Update_Element --
-    --------------------
- 
-    procedure Update_Element
-      (Container : in out List;
-       Position  : Cursor;
-       Process   : not null access procedure (Element : in out Element_Type))
-    is
-    begin
-       if Checks and then Position.Node = null then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Node.Element = null then
-          raise Program_Error with
-            "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unchecked_Access then
-          raise Program_Error with
-            "Position cursor designates wrong container";
-       end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in Update_Element");
- 
-       declare
-          Lock : With_Lock (Container.TC'Unchecked_Access);
-       begin
-          Process (Position.Node.Element.all);
-       end;
-    end Update_Element;
- 
-    ---------
-    -- Vet --
-    ---------
- 
-    function Vet (Position : Cursor) return Boolean is
-    begin
-       if Position.Node = null then
-          return Position.Container = null;
-       end if;
- 
-       if Position.Container = null then
-          return False;
-       end if;
- 
-       --  An invariant of a node is that its Previous and Next components can
-       --  be null, or designate a different node. Also, its element access
-       --  value must be non-null. Operation Free sets the node access value
-       --  components of the node to designate the node itself, and the element
-       --  access value to null, before actually deallocating the node, thus
-       --  deliberately violating the node invariant. This gives us a simple way
-       --  to detect a dangling reference to a node.
- 
-       if Position.Node.Next = Position.Node then
-          return False;
-       end if;
- 
-       if Position.Node.Prev = Position.Node then
-          return False;
-       end if;
- 
-       if Position.Node.Element = null then
-          return False;
-       end if;
- 
-       --  In practice the tests above will detect most instances of a dangling
-       --  reference. If we get here, it means that the invariants of the
-       --  designated node are satisfied (they at least appear to be satisfied),
-       --  so we perform some more tests, to determine whether invariants of the
-       --  designated list are satisfied too.
- 
-       declare
-          L : List renames Position.Container.all;
- 
-       begin
-          if L.Length = 0 then
-             return False;
-          end if;
- 
-          if L.First = null then
-             return False;
-          end if;
- 
-          if L.Last = null then
-             return False;
-          end if;
- 
-          if L.First.Prev /= null then
-             return False;
-          end if;
- 
-          if L.Last.Next /= null then
-             return False;
-          end if;
- 
-          if Position.Node.Prev = null and then Position.Node /= L.First then
-             return False;
-          end if;
- 
-          if Position.Node.Next = null 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 L.First.Next = null then
-             return False;
-          end if;
- 
-          if L.Last.Prev = null then
-             return False;
-          end if;
- 
-          if L.First.Next.Prev /= L.First then
-             return False;
-          end if;
- 
-          if L.Last.Prev.Next /= L.Last then
-             return False;
-          end if;
- 
-          if L.Length = 2 then
-             if L.First.Next /= L.Last then
-                return False;
-             end if;
- 
-             if L.Last.Prev /= L.First then
-                return False;
-             end if;
- 
-             return True;
-          end if;
- 
-          if L.First.Next = L.Last then
-             return False;
-          end if;
- 
-          if 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 Position.Node.Next = null then
-             return False;
-          end if;
- 
-          if Position.Node.Prev = null then
-             return False;
-          end if;
- 
-          if Position.Node.Next.Prev /= Position.Node then
-             return False;
-          end if;
- 
-          if Position.Node.Prev.Next /= Position.Node then
-             return False;
-          end if;
- 
-          if L.Length = 3 then
-             if L.First.Next /= Position.Node then
-                return False;
-             end if;
- 
-             if L.Last.Prev /= Position.Node then
-                return False;
-             end if;
-          end if;
- 
-          return True;
-       end;
-    end Vet;
- 
-    -----------
-    -- Write --
-    -----------
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : List)
-    is
-       Node : Node_Access := Item.First;
- 
-    begin
-       Count_Type'Base'Write (Stream, Item.Length);
- 
-       while Node /= null loop
-          Element_Type'Output (Stream, Node.Element.all);
-          Node := Node.Next;
-       end loop;
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Cursor)
-    is
-    begin
-       raise Program_Error with "attempt to stream list cursor";
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Constant_Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Write;
- 
- end Ada.Containers.Indefinite_Doubly_Linked_Lists;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cidlli.ads gcc-8.1.0/gcc/ada/a-cidlli.ads
*** gcc-7.3.0/gcc/ada/a-cidlli.ads	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-cidlli.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,397 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --               ADA.CONTAINERS.INDEFINITE_DOUBLY_LINKED_LISTS              --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, 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/>.                                          --
- --                                                                          --
- -- This unit was originally developed by Matthew J Heaney.                  --
- ------------------------------------------------------------------------------
- 
- with Ada.Iterator_Interfaces;
- 
- with Ada.Containers.Helpers;
- private with Ada.Finalization;
- private with Ada.Streams;
- 
- generic
-    type Element_Type (<>) is private;
- 
-    with function "=" (Left, Right : Element_Type)
-       return Boolean is <>;
- 
- package Ada.Containers.Indefinite_Doubly_Linked_Lists is
-    pragma Annotate (CodePeer, Skip_Analysis);
-    pragma Preelaborate;
-    pragma Remote_Types;
- 
-    type List is tagged private with
-       Constant_Indexing => Constant_Reference,
-       Variable_Indexing => Reference,
-       Default_Iterator  => Iterate,
-       Iterator_Element  => Element_Type;
- 
-    pragma Preelaborable_Initialization (List);
- 
-    type Cursor is private;
-    pragma Preelaborable_Initialization (Cursor);
- 
-    Empty_List : constant List;
- 
-    No_Element : constant Cursor;
- 
-    function Has_Element (Position : Cursor) return Boolean;
- 
-    package List_Iterator_Interfaces is new
-      Ada.Iterator_Interfaces (Cursor, Has_Element);
- 
-    function "=" (Left, Right : List) return Boolean;
- 
-    function Length (Container : List) return Count_Type;
- 
-    function Is_Empty (Container : List) return Boolean;
- 
-    procedure Clear (Container : in out List);
- 
-    function Element (Position : Cursor) return Element_Type;
- 
-    procedure Replace_Element
-      (Container : in out List;
-       Position  : Cursor;
-       New_Item  : Element_Type);
- 
-    procedure Query_Element
-      (Position : Cursor;
-       Process  : not null access procedure (Element : Element_Type));
- 
-    procedure Update_Element
-      (Container : in out List;
-       Position  : Cursor;
-       Process   : not null access procedure (Element : in out Element_Type));
- 
-    type Constant_Reference_Type
-       (Element : not null access constant Element_Type) is private
-    with
-       Implicit_Dereference => Element;
- 
-    type Reference_Type
-      (Element : not null access Element_Type) is private
-    with
-       Implicit_Dereference => Element;
- 
-    function Constant_Reference
-      (Container : aliased List;
-       Position  : Cursor) return Constant_Reference_Type;
-    pragma Inline (Constant_Reference);
- 
-    function Reference
-      (Container : aliased in out List;
-       Position  : Cursor) return Reference_Type;
-    pragma Inline (Reference);
- 
-    procedure Assign (Target : in out List; Source : List);
- 
-    function Copy (Source : List) return List;
- 
-    procedure Move
-      (Target : in out List;
-       Source : in out List);
- 
-    procedure Insert
-      (Container : in out List;
-       Before    : Cursor;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1);
- 
-    procedure Insert
-      (Container : in out List;
-       Before    : Cursor;
-       New_Item  : Element_Type;
-       Position  : out Cursor;
-       Count     : Count_Type := 1);
- 
-    procedure Prepend
-      (Container : in out List;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1);
- 
-    procedure Append
-      (Container : in out List;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1);
- 
-    procedure Delete
-      (Container : in out List;
-       Position  : in out Cursor;
-       Count     : Count_Type := 1);
- 
-    procedure Delete_First
-      (Container : in out List;
-       Count     : Count_Type := 1);
- 
-    procedure Delete_Last
-      (Container : in out List;
-       Count     : Count_Type := 1);
- 
-    procedure Reverse_Elements (Container : in out List);
- 
-    procedure Swap (Container : in out List; I, J : Cursor);
- 
-    procedure Swap_Links (Container : in out List; I, J : Cursor);
- 
-    procedure Splice
-      (Target : in out List;
-       Before : Cursor;
-       Source : in out List);
- 
-    procedure Splice
-      (Target   : in out List;
-       Before   : Cursor;
-       Source   : in out List;
-       Position : in out Cursor);
- 
-    procedure Splice
-      (Container : in out List;
-       Before    : Cursor;
-       Position  : Cursor);
- 
-    function First (Container : List) return Cursor;
- 
-    function First_Element (Container : List) return Element_Type;
- 
-    function Last (Container : List) return Cursor;
- 
-    function Last_Element (Container : List) return Element_Type;
- 
-    function Next (Position : Cursor) return Cursor;
- 
-    procedure Next (Position : in out Cursor);
- 
-    function Previous (Position : Cursor) return Cursor;
- 
-    procedure Previous (Position : in out Cursor);
- 
-    function Find
-      (Container : List;
-       Item      : Element_Type;
-       Position  : Cursor := No_Element) return Cursor;
- 
-    function Reverse_Find
-      (Container : List;
-       Item      : Element_Type;
-       Position  : Cursor := No_Element) return Cursor;
- 
-    function Contains
-      (Container : List;
-       Item      : Element_Type) return Boolean;
- 
-    procedure Iterate
-      (Container : List;
-       Process   : not null access procedure (Position : Cursor));
- 
-    procedure Reverse_Iterate
-      (Container : List;
-       Process   : not null access procedure (Position : Cursor));
- 
-    function Iterate
-      (Container : List)
-       return List_Iterator_Interfaces.Reversible_Iterator'class;
- 
-    function Iterate
-      (Container : List;
-       Start     : Cursor)
-       return List_Iterator_Interfaces.Reversible_Iterator'class;
- 
-    generic
-       with function "<" (Left, Right : Element_Type) return Boolean is <>;
-    package Generic_Sorting is
- 
-       function Is_Sorted (Container : List) return Boolean;
- 
-       procedure Sort (Container : in out List);
- 
-       procedure Merge (Target, Source : in out List);
- 
-    end Generic_Sorting;
- 
- private
- 
-    pragma Inline (Next);
-    pragma Inline (Previous);
- 
-    use Ada.Containers.Helpers;
-    package Implementation is new Generic_Implementation;
-    use Implementation;
- 
-    type Node_Type;
-    type Node_Access is access Node_Type;
- 
-    type Element_Access is access all Element_Type;
- 
-    type Node_Type is
-       limited record
-          Element : Element_Access;
-          Next    : Node_Access;
-          Prev    : Node_Access;
-       end record;
- 
-    use Ada.Finalization;
-    use Ada.Streams;
- 
-    type List is
-      new Controlled with record
-         First  : Node_Access := null;
-         Last   : Node_Access := null;
-         Length : Count_Type := 0;
-         TC     : aliased Tamper_Counts;
-      end record;
- 
-    overriding procedure Adjust (Container : in out List);
- 
-    overriding procedure Finalize (Container : in out List) renames Clear;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out List);
- 
-    for List'Read use Read;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : List);
- 
-    for List'Write use Write;
- 
-    type List_Access is access all List;
-    for List_Access'Storage_Size use 0;
- 
-    type Cursor is
-       record
-          Container : List_Access;
-          Node      : Node_Access;
-       end record;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Cursor);
- 
-    for Cursor'Read use Read;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Cursor);
- 
-    for Cursor'Write use Write;
- 
-    subtype Reference_Control_Type is Implementation.Reference_Control_Type;
-    --  It is necessary to rename this here, so that the compiler can find it
- 
-    type Constant_Reference_Type
-      (Element : not null access constant Element_Type) is
-       record
-          Control : Reference_Control_Type :=
-            raise Program_Error with "uninitialized reference";
-          --  The RM says, "The default initialization of an object of
-          --  type Constant_Reference_Type or Reference_Type propagates
-          --  Program_Error."
-       end record;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Constant_Reference_Type);
- 
-    for Constant_Reference_Type'Write use Write;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Constant_Reference_Type);
- 
-    for Constant_Reference_Type'Read use Read;
- 
-    type Reference_Type
-      (Element : not null access Element_Type) is
-       record
-          Control : Reference_Control_Type :=
-            raise Program_Error with "uninitialized reference";
-          --  The RM says, "The default initialization of an object of
-          --  type Constant_Reference_Type or Reference_Type propagates
-          --  Program_Error."
-       end record;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Reference_Type);
- 
-    for Reference_Type'Write use Write;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       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 List'Class) return Reference_Control_Type;
-    pragma Inline (Pseudo_Reference);
-    --  Creates an object of type Reference_Control_Type pointing to the
-    --  container, and increments the Lock. Finalization of this object will
-    --  decrement the Lock.
- 
-    function Get_Element_Access
-      (Position : Cursor) return not null Element_Access;
-    --  Returns a pointer to the element designated by Position.
- 
-    Empty_List : constant List := List'(Controlled with others => <>);
- 
-    No_Element : constant Cursor := Cursor'(null, null);
- 
-    type Iterator is new Limited_Controlled and
-      List_Iterator_Interfaces.Reversible_Iterator with
-    record
-       Container : List_Access;
-       Node      : Node_Access;
-    end record
-      with Disable_Controlled => not T_Check;
- 
-    overriding procedure Finalize (Object : in out Iterator);
- 
-    overriding function First (Object : Iterator) return Cursor;
-    overriding function Last  (Object : Iterator) return Cursor;
- 
-    overriding function Next
-      (Object   : Iterator;
-       Position : Cursor) return Cursor;
- 
-    overriding function Previous
-      (Object   : Iterator;
-       Position : Cursor) return Cursor;
- 
- end Ada.Containers.Indefinite_Doubly_Linked_Lists;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cihama.adb gcc-8.1.0/gcc/ada/a-cihama.adb
*** gcc-7.3.0/gcc/ada/a-cihama.adb	Wed Apr 20 10:29:26 2016
--- gcc-8.1.0/gcc/ada/a-cihama.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,1363 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                  ADA.CONTAINERS.INDEFINITE_HASHED_MAPS                   --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 Ada.Containers.Hash_Tables.Generic_Operations;
- pragma Elaborate_All (Ada.Containers.Hash_Tables.Generic_Operations);
- 
- with Ada.Containers.Hash_Tables.Generic_Keys;
- pragma Elaborate_All (Ada.Containers.Hash_Tables.Generic_Keys);
- 
- with Ada.Containers.Helpers; use Ada.Containers.Helpers;
- 
- with Ada.Unchecked_Deallocation;
- 
- with System; use type System.Address;
- 
- package body Ada.Containers.Indefinite_Hashed_Maps is
- 
-    pragma Warnings (Off, "variable ""Busy*"" is not referenced");
-    pragma Warnings (Off, "variable ""Lock*"" is not referenced");
-    --  See comment in Ada.Containers.Helpers
- 
-    procedure Free_Key is
-       new Ada.Unchecked_Deallocation (Key_Type, Key_Access);
- 
-    procedure Free_Element is
-       new Ada.Unchecked_Deallocation (Element_Type, Element_Access);
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    function Copy_Node (Node : Node_Access) return Node_Access;
-    pragma Inline (Copy_Node);
- 
-    function Equivalent_Key_Node
-      (Key  : Key_Type;
-       Node : Node_Access) return Boolean;
-    pragma Inline (Equivalent_Key_Node);
- 
-    function Find_Equal_Key
-      (R_HT   : Hash_Table_Type;
-       L_Node : Node_Access) return Boolean;
- 
-    procedure Free (X : in out Node_Access);
-    --  pragma Inline (Free);
- 
-    function Hash_Node (Node : Node_Access) return Hash_Type;
-    pragma Inline (Hash_Node);
- 
-    function Next (Node : Node_Access) return Node_Access;
-    pragma Inline (Next);
- 
-    function Read_Node
-      (Stream : not null access Root_Stream_Type'Class) return Node_Access;
- 
-    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;
-       Node   : Node_Access);
- 
-    --------------------------
-    -- Local Instantiations --
-    --------------------------
- 
-    package HT_Ops is new Ada.Containers.Hash_Tables.Generic_Operations
-      (HT_Types  => HT_Types,
-       Hash_Node => Hash_Node,
-       Next      => Next,
-       Set_Next  => Set_Next,
-       Copy_Node => Copy_Node,
-       Free      => Free);
- 
-    package Key_Ops is new Hash_Tables.Generic_Keys
-      (HT_Types        => HT_Types,
-       Next            => Next,
-       Set_Next        => Set_Next,
-       Key_Type        => Key_Type,
-       Hash            => Hash,
-       Equivalent_Keys => Equivalent_Key_Node);
- 
-    ---------
-    -- "=" --
-    ---------
- 
-    function Is_Equal is new HT_Ops.Generic_Equal (Find_Equal_Key);
- 
-    overriding function "=" (Left, Right : Map) return Boolean is
-    begin
-       return Is_Equal (Left.HT, Right.HT);
-    end "=";
- 
-    ------------
-    -- Adjust --
-    ------------
- 
-    procedure Adjust (Container : in out Map) is
-    begin
-       HT_Ops.Adjust (Container.HT);
-    end Adjust;
- 
-    ------------
-    -- Assign --
-    ------------
- 
-    procedure Assign (Target : in out Map; Source : Map) is
-       procedure Insert_Item (Node : Node_Access);
-       pragma Inline (Insert_Item);
- 
-       procedure Insert_Items is new HT_Ops.Generic_Iteration (Insert_Item);
- 
-       -----------------
-       -- Insert_Item --
-       -----------------
- 
-       procedure Insert_Item (Node : Node_Access) is
-       begin
-          Target.Insert (Key => Node.Key.all, New_Item => Node.Element.all);
-       end Insert_Item;
- 
-    --  Start of processing for Assign
- 
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       Target.Clear;
- 
-       if Target.Capacity < Source.Length then
-          Target.Reserve_Capacity (Source.Length);
-       end if;
- 
-       Insert_Items (Source.HT);
-    end Assign;
- 
-    --------------
-    -- Capacity --
-    --------------
- 
-    function Capacity (Container : Map) return Count_Type is
-    begin
-       return HT_Ops.Capacity (Container.HT);
-    end Capacity;
- 
-    -----------
-    -- Clear --
-    -----------
- 
-    procedure Clear (Container : in out Map) is
-    begin
-       HT_Ops.Clear (Container.HT);
-    end Clear;
- 
-    ------------------------
-    -- Constant_Reference --
-    ------------------------
- 
-    function Constant_Reference
-      (Container : aliased Map;
-       Position  : Cursor) return Constant_Reference_Type
-    is
-    begin
-       if Checks and then Position.Container = null then
-          raise Constraint_Error with
-            "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor designates wrong map";
-       end if;
- 
-       if Checks and then Position.Node.Element = null then
-          raise Program_Error with
-            "Position cursor has no element";
-       end if;
- 
-       pragma Assert
-         (Vet (Position),
-          "Position cursor in Constant_Reference is bad");
- 
-       declare
-          M : Map renames Position.Container.all;
-          HT : Hash_Table_Type renames M.HT'Unrestricted_Access.all;
-          TC : constant Tamper_Counts_Access :=
-            HT.TC'Unrestricted_Access;
-       begin
-          return R : constant Constant_Reference_Type :=
-            (Element => Position.Node.Element.all'Access,
-             Control => (Controlled with TC))
-          do
-             Lock (TC.all);
-          end return;
-       end;
-    end Constant_Reference;
- 
-    function Constant_Reference
-      (Container : aliased Map;
-       Key       : Key_Type) return Constant_Reference_Type
-    is
-       HT   : Hash_Table_Type renames Container'Unrestricted_Access.HT;
-       Node : constant Node_Access := Key_Ops.Find (HT, Key);
- 
-    begin
-       if Checks and then Node = null then
-          raise Constraint_Error with "key not in map";
-       end if;
- 
-       if Checks and then Node.Element = null then
-          raise Program_Error with "key has no element";
-       end if;
- 
-       declare
-          TC : constant Tamper_Counts_Access :=
-            HT.TC'Unrestricted_Access;
-       begin
-          return R : constant Constant_Reference_Type :=
-            (Element => Node.Element.all'Access,
-             Control => (Controlled with TC))
-          do
-             Lock (TC.all);
-          end return;
-       end;
-    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 : Count_Type;
- 
-    begin
-       if Capacity < Source.Length then
-          if Checks and then Capacity /= 0 then
-             raise Capacity_Error
-               with "Requested capacity is less than Source length";
-          end if;
- 
-          C := Source.Length;
-       else
-          C := Capacity;
-       end if;
- 
-       return Target : Map do
-          Target.Reserve_Capacity (C);
-          Target.Assign (Source);
-       end return;
-    end Copy;
- 
-    ---------------
-    -- Copy_Node --
-    ---------------
- 
-    function Copy_Node (Node : Node_Access) return Node_Access is
-       K : Key_Access := new Key_Type'(Node.Key.all);
-       E : Element_Access;
-    begin
-       E := new Element_Type'(Node.Element.all);
-       return new Node_Type'(K, E, null);
-    exception
-       when others =>
-          Free_Key (K);
-          Free_Element (E);
-          raise;
-    end Copy_Node;
- 
-    ------------
-    -- Delete --
-    ------------
- 
-    procedure Delete (Container : in out Map; Key : Key_Type) is
-       X : Node_Access;
- 
-    begin
-       Key_Ops.Delete_Key_Sans_Free (Container.HT, Key, X);
- 
-       if Checks and then X = null then
-          raise Constraint_Error with "attempt to delete key not in map";
-       end if;
- 
-       Free (X);
-    end Delete;
- 
-    procedure Delete (Container : in out Map; Position : in out Cursor) is
-    begin
-       if Checks and then Position.Node = null then
-          raise Constraint_Error with
-            "Position cursor of Delete equals No_Element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor of Delete designates wrong map";
-       end if;
- 
-       TC_Check (Container.HT.TC);
- 
-       pragma Assert (Vet (Position), "bad cursor in Delete");
- 
-       HT_Ops.Delete_Node_Sans_Free (Container.HT, Position.Node);
- 
-       Free (Position.Node);
-       Position.Container := null;
-    end Delete;
- 
-    -------------
-    -- Element --
-    -------------
- 
-    function Element (Container : Map; Key : Key_Type) return Element_Type is
-       HT   : Hash_Table_Type renames Container'Unrestricted_Access.HT;
-       Node : constant Node_Access := Key_Ops.Find (HT, Key);
- 
-    begin
-       if Checks and then Node = null then
-          raise Constraint_Error with
-            "no element available because key not in map";
-       end if;
- 
-       return Node.Element.all;
-    end Element;
- 
-    function Element (Position : Cursor) return Element_Type is
-    begin
-       if Checks and then Position.Node = null then
-          raise Constraint_Error with
-            "Position cursor of function Element equals No_Element";
-       end if;
- 
-       if Checks and then Position.Node.Element = null then
-          raise Program_Error with
-            "Position cursor of function Element is bad";
-       end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in function Element");
- 
-       return Position.Node.Element.all;
-    end Element;
- 
-    -------------------------
-    -- Equivalent_Key_Node --
-    -------------------------
- 
-    function Equivalent_Key_Node
-      (Key  : Key_Type;
-       Node : Node_Access) return Boolean
-    is
-    begin
-       return Equivalent_Keys (Key, Node.Key.all);
-    end Equivalent_Key_Node;
- 
-    ---------------------
-    -- Equivalent_Keys --
-    ---------------------
- 
-    function Equivalent_Keys (Left, Right : Cursor) return Boolean is
-    begin
-       if Checks and then Left.Node = null then
-          raise Constraint_Error with
-            "Left cursor of Equivalent_Keys equals No_Element";
-       end if;
- 
-       if Checks and then Right.Node = null then
-          raise Constraint_Error with
-            "Right cursor of Equivalent_Keys equals No_Element";
-       end if;
- 
-       if Checks and then Left.Node.Key = null then
-          raise Program_Error with
-            "Left cursor of Equivalent_Keys is bad";
-       end if;
- 
-       if Checks and then Right.Node.Key = null then
-          raise Program_Error with
-            "Right cursor of Equivalent_Keys is bad";
-       end if;
- 
-       pragma Assert (Vet (Left), "bad Left cursor in Equivalent_Keys");
-       pragma Assert (Vet (Right), "bad Right cursor in Equivalent_Keys");
- 
-       return Equivalent_Keys (Left.Node.Key.all, Right.Node.Key.all);
-    end Equivalent_Keys;
- 
-    function Equivalent_Keys
-      (Left  : Cursor;
-       Right : Key_Type) return Boolean
-    is
-    begin
-       if Checks and then Left.Node = null then
-          raise Constraint_Error with
-            "Left cursor of Equivalent_Keys equals No_Element";
-       end if;
- 
-       if Checks and then Left.Node.Key = null then
-          raise Program_Error with
-            "Left cursor of Equivalent_Keys is bad";
-       end if;
- 
-       pragma Assert (Vet (Left), "bad Left cursor in Equivalent_Keys");
- 
-       return Equivalent_Keys (Left.Node.Key.all, Right);
-    end Equivalent_Keys;
- 
-    function Equivalent_Keys
-      (Left  : Key_Type;
-       Right : Cursor) return Boolean
-    is
-    begin
-       if Checks and then Right.Node = null then
-          raise Constraint_Error with
-            "Right cursor of Equivalent_Keys equals No_Element";
-       end if;
- 
-       if Checks and then Right.Node.Key = null then
-          raise Program_Error with
-            "Right cursor of Equivalent_Keys is bad";
-       end if;
- 
-       pragma Assert (Vet (Right), "bad Right cursor in Equivalent_Keys");
- 
-       return Equivalent_Keys (Left, Right.Node.Key.all);
-    end Equivalent_Keys;
- 
-    -------------
-    -- Exclude --
-    -------------
- 
-    procedure Exclude (Container : in out Map; Key : Key_Type) is
-       X : Node_Access;
-    begin
-       Key_Ops.Delete_Key_Sans_Free (Container.HT, Key, X);
-       Free (X);
-    end Exclude;
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    procedure Finalize (Container : in out Map) is
-    begin
-       HT_Ops.Finalize (Container.HT);
-    end Finalize;
- 
-    procedure Finalize (Object : in out Iterator) is
-    begin
-       if Object.Container /= null then
-          Unbusy (Object.Container.HT.TC);
-       end if;
-    end Finalize;
- 
-    ----------
-    -- Find --
-    ----------
- 
-    function Find (Container : Map; Key : Key_Type) return Cursor is
-       HT   : Hash_Table_Type renames Container'Unrestricted_Access.HT;
-       Node : constant Node_Access := Key_Ops.Find (HT, Key);
- 
-    begin
-       if Node = null then
-          return No_Element;
-       end if;
- 
-       return Cursor'(Container'Unrestricted_Access, Node);
-    end Find;
- 
-    --------------------
-    -- Find_Equal_Key --
-    --------------------
- 
-    function Find_Equal_Key
-      (R_HT   : Hash_Table_Type;
-       L_Node : Node_Access) return Boolean
-    is
-       R_Index : constant Hash_Type := Key_Ops.Index (R_HT, L_Node.Key.all);
-       R_Node  : Node_Access := R_HT.Buckets (R_Index);
- 
-    begin
-       while R_Node /= null loop
-          if Equivalent_Keys (L_Node.Key.all, R_Node.Key.all) then
-             return L_Node.Element.all = R_Node.Element.all;
-          end if;
- 
-          R_Node := R_Node.Next;
-       end loop;
- 
-       return False;
-    end Find_Equal_Key;
- 
-    -----------
-    -- First --
-    -----------
- 
-    function First (Container : Map) return Cursor is
-       Node : constant Node_Access := HT_Ops.First (Container.HT);
-    begin
-       if Node = null then
-          return No_Element;
-       else
-          return Cursor'(Container'Unrestricted_Access, Node);
-       end if;
-    end First;
- 
-    function First (Object : Iterator) return Cursor is
-    begin
-       return Object.Container.First;
-    end First;
- 
-    ----------
-    -- Free --
-    ----------
- 
-    procedure Free (X : in out Node_Access) is
-       procedure Deallocate is
-          new Ada.Unchecked_Deallocation (Node_Type, Node_Access);
- 
-    begin
-       if X = null then
-          return;
-       end if;
- 
-       X.Next := X;  --  detect mischief (in Vet)
- 
-       begin
-          Free_Key (X.Key);
- 
-       exception
-          when others =>
-             X.Key := null;
- 
-             begin
-                Free_Element (X.Element);
-             exception
-                when others =>
-                   X.Element := null;
-             end;
- 
-             Deallocate (X);
-             raise;
-       end;
- 
-       begin
-          Free_Element (X.Element);
-       exception
-          when others =>
-             X.Element := null;
-             Deallocate (X);
-             raise;
-       end;
- 
-       Deallocate (X);
-    end Free;
- 
-    ------------------------
-    -- Get_Element_Access --
-    ------------------------
- 
-    function Get_Element_Access
-      (Position : Cursor) return not null Element_Access is
-    begin
-       return Position.Node.Element;
-    end Get_Element_Access;
- 
-    -----------------
-    -- Has_Element --
-    -----------------
- 
-    function Has_Element (Position : Cursor) return Boolean is
-    begin
-       pragma Assert (Vet (Position), "bad cursor in Has_Element");
-       return Position.Node /= null;
-    end Has_Element;
- 
-    ---------------
-    -- Hash_Node --
-    ---------------
- 
-    function Hash_Node (Node : Node_Access) return Hash_Type is
-    begin
-       return Hash (Node.Key.all);
-    end Hash_Node;
- 
-    -------------
-    -- Include --
-    -------------
- 
-    procedure Include
-      (Container : in out Map;
-       Key       : Key_Type;
-       New_Item  : Element_Type)
-    is
-       Position : Cursor;
-       Inserted : Boolean;
- 
-       K : Key_Access;
-       E : Element_Access;
- 
-    begin
-       Insert (Container, Key, New_Item, Position, Inserted);
- 
-       if not Inserted then
-          TE_Check (Container.HT.TC);
- 
-          K := Position.Node.Key;
-          E := Position.Node.Element;
- 
-          Position.Node.Key := new Key_Type'(Key);
- 
-          declare
-             --  The element allocator may need an accessibility check in the
-             --  case the actual type is class-wide or has access discriminants
-             --  (see RM 4.8(10.1) and AI12-0035).
- 
-             pragma Unsuppress (Accessibility_Check);
- 
-          begin
-             Position.Node.Element := new Element_Type'(New_Item);
- 
-          exception
-             when others =>
-                Free_Key (K);
-                raise;
-          end;
- 
-          Free_Key (K);
-          Free_Element (E);
-       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
-       function New_Node (Next : Node_Access) return Node_Access;
- 
-       procedure Local_Insert is
-         new Key_Ops.Generic_Conditional_Insert (New_Node);
- 
-       --------------
-       -- New_Node --
-       --------------
- 
-       function New_Node (Next : Node_Access) return Node_Access is
-          K  : Key_Access := new Key_Type'(Key);
-          E  : Element_Access;
- 
-          --  The element allocator may need an accessibility check in the case
-          --  the actual type is class-wide or has access discriminants (see
-          --  RM 4.8(10.1) and AI12-0035).
- 
-          pragma Unsuppress (Accessibility_Check);
- 
-       begin
-          E := new Element_Type'(New_Item);
-          return new Node_Type'(K, E, Next);
- 
-       exception
-          when others =>
-             Free_Key (K);
-             Free_Element (E);
-             raise;
-       end New_Node;
- 
-       HT : Hash_Table_Type renames Container.HT;
- 
-    --  Start of processing for Insert
- 
-    begin
-       if HT_Ops.Capacity (HT) = 0 then
-          HT_Ops.Reserve_Capacity (HT, 1);
-       end if;
- 
-       Local_Insert (HT, Key, Position.Node, Inserted);
- 
-       if Inserted
-         and then HT.Length > HT_Ops.Capacity (HT)
-       then
-          HT_Ops.Reserve_Capacity (HT, HT.Length);
-       end if;
- 
-       Position.Container := Container'Unchecked_Access;
-    end Insert;
- 
-    procedure Insert
-      (Container : in out Map;
-       Key       : Key_Type;
-       New_Item  : Element_Type)
-    is
-       Position : Cursor;
-       pragma Unreferenced (Position);
- 
-       Inserted : Boolean;
- 
-    begin
-       Insert (Container, Key, New_Item, Position, Inserted);
- 
-       if Checks and then 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 Container.HT.Length = 0;
-    end Is_Empty;
- 
-    -------------
-    -- Iterate --
-    -------------
- 
-    procedure Iterate
-      (Container : Map;
-       Process   : not null access procedure (Position : Cursor))
-    is
-       procedure Process_Node (Node : Node_Access);
-       pragma Inline (Process_Node);
- 
-       procedure Local_Iterate is
-          new HT_Ops.Generic_Iteration (Process_Node);
- 
-       ------------------
-       -- Process_Node --
-       ------------------
- 
-       procedure Process_Node (Node : Node_Access) is
-       begin
-          Process (Cursor'(Container'Unrestricted_Access, Node));
-       end Process_Node;
- 
-       Busy : With_Busy (Container.HT.TC'Unrestricted_Access);
- 
-    --  Start of processing for Iterate
- 
-    begin
-       Local_Iterate (Container.HT);
-    end Iterate;
- 
-    function Iterate
-      (Container : Map) return Map_Iterator_Interfaces.Forward_Iterator'Class
-    is
-    begin
-       return It : constant Iterator :=
-         (Limited_Controlled with Container => Container'Unrestricted_Access)
-       do
-          Busy (Container.HT.TC'Unrestricted_Access.all);
-       end return;
-    end Iterate;
- 
-    ---------
-    -- Key --
-    ---------
- 
-    function Key (Position : Cursor) return Key_Type is
-    begin
-       if Checks and then Position.Node = null then
-          raise Constraint_Error with
-            "Position cursor of function Key equals No_Element";
-       end if;
- 
-       if Checks and then Position.Node.Key = null then
-          raise Program_Error with
-            "Position cursor of function Key is bad";
-       end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in function Key");
- 
-       return Position.Node.Key.all;
-    end Key;
- 
-    ------------
-    -- Length --
-    ------------
- 
-    function Length (Container : Map) return Count_Type is
-    begin
-       return Container.HT.Length;
-    end Length;
- 
-    ----------
-    -- Move --
-    ----------
- 
-    procedure Move
-      (Target : in out Map;
-       Source : in out Map)
-    is
-    begin
-       HT_Ops.Move (Target => Target.HT, Source => Source.HT);
-    end Move;
- 
-    ----------
-    -- Next --
-    ----------
- 
-    function Next (Node : Node_Access) return Node_Access is
-    begin
-       return Node.Next;
-    end Next;
- 
-    procedure Next (Position : in out Cursor) is
-    begin
-       Position := Next (Position);
-    end Next;
- 
-    function Next (Position : Cursor) return Cursor is
-    begin
-       if Position.Node = null then
-          return No_Element;
-       end if;
- 
-       if Checks and then
-         (Position.Node.Key = null or else Position.Node.Element = null)
-       then
-          raise Program_Error with "Position cursor of Next is bad";
-       end if;
- 
-       pragma Assert (Vet (Position), "Position cursor of Next is bad");
- 
-       declare
-          HT   : Hash_Table_Type renames Position.Container.HT;
-          Node : constant Node_Access := HT_Ops.Next (HT, Position.Node);
-       begin
-          if Node = null then
-             return No_Element;
-          else
-             return Cursor'(Position.Container, Node);
-          end if;
-       end;
-    end Next;
- 
-    function Next (Object : Iterator; Position : Cursor) return Cursor is
-    begin
-       if Position.Container = null then
-          return No_Element;
-       end if;
- 
-       if Checks and then Position.Container /= Object.Container then
-          raise Program_Error with
-            "Position cursor of Next designates wrong map";
-       end if;
- 
-       return Next (Position);
-    end Next;
- 
-    ----------------------
-    -- Pseudo_Reference --
-    ----------------------
- 
-    function Pseudo_Reference
-      (Container : aliased Map'Class) return Reference_Control_Type
-    is
-       TC : constant Tamper_Counts_Access :=
-         Container.HT.TC'Unrestricted_Access;
-    begin
-       return R : constant Reference_Control_Type := (Controlled with TC) do
-          Lock (TC.all);
-       end return;
-    end Pseudo_Reference;
- 
-    -------------------
-    -- Query_Element --
-    -------------------
- 
-    procedure Query_Element
-      (Position : Cursor;
-       Process  : not null access procedure (Key     : Key_Type;
-                                             Element : Element_Type))
-    is
-    begin
-       if Checks and then Position.Node = null then
-          raise Constraint_Error with
-            "Position cursor of Query_Element equals No_Element";
-       end if;
- 
-       if Checks and then
-         (Position.Node.Key = null or else Position.Node.Element = null)
-       then
-          raise Program_Error with
-            "Position cursor of Query_Element is bad";
-       end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in Query_Element");
- 
-       declare
-          M  : Map renames Position.Container.all;
-          HT : Hash_Table_Type renames M.HT'Unrestricted_Access.all;
-          Lock : With_Lock (HT.TC'Unrestricted_Access);
-          K : Key_Type renames Position.Node.Key.all;
-          E : Element_Type renames Position.Node.Element.all;
-       begin
-          Process (K, E);
-       end;
-    end Query_Element;
- 
-    ----------
-    -- Read --
-    ----------
- 
-    procedure Read_Nodes is new HT_Ops.Generic_Read (Read_Node);
- 
-    procedure Read
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : out Map)
-    is
-    begin
-       Read_Nodes (Stream, Container.HT);
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Cursor)
-    is
-    begin
-       raise Program_Error with "attempt to stream map cursor";
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Constant_Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Read;
- 
-    ---------------
-    -- Read_Node --
-    ---------------
- 
-    function Read_Node
-      (Stream : not null access Root_Stream_Type'Class) return Node_Access
-    is
-       Node : Node_Access := new Node_Type;
- 
-    begin
-       begin
-          Node.Key := new Key_Type'(Key_Type'Input (Stream));
-       exception
-          when others =>
-             Free (Node);
-             raise;
-       end;
- 
-       begin
-          Node.Element := new Element_Type'(Element_Type'Input (Stream));
-       exception
-          when others =>
-             Free_Key (Node.Key);
-             Free (Node);
-             raise;
-       end;
- 
-       return Node;
-    end Read_Node;
- 
-    ---------------
-    -- Reference --
-    ---------------
- 
-    function Reference
-      (Container : aliased in out Map;
-       Position  : Cursor) return Reference_Type
-    is
-    begin
-       if Checks and then Position.Container = null then
-          raise Constraint_Error with
-            "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor designates wrong map";
-       end if;
- 
-       if Checks and then Position.Node.Element = null then
-          raise Program_Error with
-            "Position cursor has no element";
-       end if;
- 
-       pragma Assert
-         (Vet (Position),
-          "Position cursor in function Reference is bad");
- 
-       declare
-          M : Map renames Position.Container.all;
-          HT : Hash_Table_Type renames M.HT'Unrestricted_Access.all;
-          TC : constant Tamper_Counts_Access :=
-            HT.TC'Unrestricted_Access;
-       begin
-          return R : constant Reference_Type :=
-            (Element => Position.Node.Element.all'Access,
-             Control => (Controlled with TC))
-          do
-             Lock (TC.all);
-          end return;
-       end;
-    end Reference;
- 
-    function Reference
-      (Container : aliased in out Map;
-       Key       : Key_Type) return Reference_Type
-    is
-       HT   : Hash_Table_Type renames Container.HT;
-       Node : constant Node_Access := Key_Ops.Find (HT, Key);
- 
-    begin
-       if Checks and then Node = null then
-          raise Constraint_Error with "key not in map";
-       end if;
- 
-       if Checks and then Node.Element = null then
-          raise Program_Error with "key has no element";
-       end if;
- 
-       declare
-          TC : constant Tamper_Counts_Access :=
-            HT.TC'Unrestricted_Access;
-       begin
-          return R : constant Reference_Type :=
-            (Element => Node.Element.all'Access,
-             Control => (Controlled with TC))
-          do
-             Lock (TC.all);
-          end return;
-       end;
-    end Reference;
- 
-    -------------
-    -- Replace --
-    -------------
- 
-    procedure Replace
-      (Container : in out Map;
-       Key       : Key_Type;
-       New_Item  : Element_Type)
-    is
-       Node : constant Node_Access := Key_Ops.Find (Container.HT, Key);
- 
-       K : Key_Access;
-       E : Element_Access;
- 
-    begin
-       if Checks and then Node = null then
-          raise Constraint_Error with
-            "attempt to replace key not in map";
-       end if;
- 
-       TE_Check (Container.HT.TC);
- 
-       K := Node.Key;
-       E := Node.Element;
- 
-       Node.Key := new Key_Type'(Key);
- 
-       declare
-          --  The element allocator may need an accessibility check in the case
-          --  the actual type is class-wide or has access discriminants (see
-          --  RM 4.8(10.1) and AI12-0035).
- 
-          pragma Unsuppress (Accessibility_Check);
- 
-       begin
-          Node.Element := new Element_Type'(New_Item);
- 
-       exception
-          when others =>
-             Free_Key (K);
-             raise;
-       end;
- 
-       Free_Key (K);
-       Free_Element (E);
-    end Replace;
- 
-    ---------------------
-    -- Replace_Element --
-    ---------------------
- 
-    procedure Replace_Element
-      (Container : in out Map;
-       Position  : Cursor;
-       New_Item  : Element_Type)
-    is
-    begin
-       if Checks and then Position.Node = null then
-          raise Constraint_Error with
-            "Position cursor of Replace_Element equals No_Element";
-       end if;
- 
-       if Checks and then
-         (Position.Node.Key = null or else Position.Node.Element = null)
-       then
-          raise Program_Error with
-            "Position cursor of Replace_Element is bad";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor of Replace_Element designates wrong map";
-       end if;
- 
-       TE_Check (Position.Container.HT.TC);
- 
-       pragma Assert (Vet (Position), "bad cursor in Replace_Element");
- 
-       declare
-          X : Element_Access := Position.Node.Element;
- 
-          --  The element allocator may need an accessibility check in the case
-          --  the actual type is class-wide or has access discriminants (see
-          --  RM 4.8(10.1) and AI12-0035).
- 
-          pragma Unsuppress (Accessibility_Check);
- 
-       begin
-          Position.Node.Element := new Element_Type'(New_Item);
-          Free_Element (X);
-       end;
-    end Replace_Element;
- 
-    ----------------------
-    -- Reserve_Capacity --
-    ----------------------
- 
-    procedure Reserve_Capacity
-      (Container : in out Map;
-       Capacity  : Count_Type)
-    is
-    begin
-       HT_Ops.Reserve_Capacity (Container.HT, Capacity);
-    end Reserve_Capacity;
- 
-    --------------
-    -- Set_Next --
-    --------------
- 
-    procedure Set_Next (Node : Node_Access; Next : Node_Access) is
-    begin
-       Node.Next := Next;
-    end Set_Next;
- 
-    --------------------
-    -- Update_Element --
-    --------------------
- 
-    procedure Update_Element
-      (Container : in out Map;
-       Position  : Cursor;
-       Process   : not null access procedure (Key     : Key_Type;
-                                              Element : in out Element_Type))
-    is
-    begin
-       if Checks and then Position.Node = null then
-          raise Constraint_Error with
-            "Position cursor of Update_Element equals No_Element";
-       end if;
- 
-       if Checks and then
-         (Position.Node.Key = null or else Position.Node.Element = null)
-       then
-          raise Program_Error with
-            "Position cursor of Update_Element is bad";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor of Update_Element designates wrong map";
-       end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in Update_Element");
- 
-       declare
-          HT : Hash_Table_Type renames Container.HT;
-          Lock : With_Lock (HT.TC'Unrestricted_Access);
-          K : Key_Type renames Position.Node.Key.all;
-          E : Element_Type renames Position.Node.Element.all;
-       begin
-          Process (K, E);
-       end;
-    end Update_Element;
- 
-    ---------
-    -- Vet --
-    ---------
- 
-    function Vet (Position : Cursor) return Boolean is
-    begin
-       if Position.Node = null then
-          return Position.Container = null;
-       end if;
- 
-       if Position.Container = null then
-          return False;
-       end if;
- 
-       if Position.Node.Next = Position.Node then
-          return False;
-       end if;
- 
-       if Position.Node.Key = null then
-          return False;
-       end if;
- 
-       if Position.Node.Element = null then
-          return False;
-       end if;
- 
-       declare
-          HT : Hash_Table_Type renames Position.Container.HT;
-          X  : Node_Access;
- 
-       begin
-          if HT.Length = 0 then
-             return False;
-          end if;
- 
-          if HT.Buckets = null
-            or else HT.Buckets'Length = 0
-          then
-             return False;
-          end if;
- 
-          X := HT.Buckets (Key_Ops.Checked_Index (HT, Position.Node.Key.all));
- 
-          for J in 1 .. HT.Length loop
-             if X = Position.Node then
-                return True;
-             end if;
- 
-             if X = null then
-                return False;
-             end if;
- 
-             if X = X.Next then  --  to prevent unnecessary looping
-                return False;
-             end if;
- 
-             X := X.Next;
-          end loop;
- 
-          return False;
-       end;
-    end Vet;
- 
-    -----------
-    -- Write --
-    -----------
- 
-    procedure Write_Nodes is new HT_Ops.Generic_Write (Write_Node);
- 
-    procedure Write
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : Map)
-    is
-    begin
-       Write_Nodes (Stream, Container.HT);
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Cursor)
-    is
-    begin
-       raise Program_Error with "attempt to stream map cursor";
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Constant_Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Write;
- 
-    ----------------
-    -- Write_Node --
-    ----------------
- 
-    procedure Write_Node
-      (Stream : not null access Root_Stream_Type'Class;
-       Node   : Node_Access)
-    is
-    begin
-       Key_Type'Output (Stream, Node.Key.all);
-       Element_Type'Output (Stream, Node.Element.all);
-    end Write_Node;
- 
- end Ada.Containers.Indefinite_Hashed_Maps;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cihama.ads gcc-8.1.0/gcc/ada/a-cihama.ads
*** gcc-7.3.0/gcc/ada/a-cihama.ads	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-cihama.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,453 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                  ADA.CONTAINERS.INDEFINITE_HASHED_MAPS                   --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, 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/>.                                          --
- --                                                                          --
- -- This unit was originally developed by Matthew J Heaney.                  --
- ------------------------------------------------------------------------------
- 
- with Ada.Iterator_Interfaces;
- 
- private with Ada.Containers.Hash_Tables;
- private with Ada.Finalization;
- private with Ada.Streams;
- 
- 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, Right : Key_Type) return Boolean;
-    with function "=" (Left, Right : Element_Type) return Boolean is <>;
- 
- package Ada.Containers.Indefinite_Hashed_Maps is
-    pragma Annotate (CodePeer, Skip_Analysis);
-    pragma Preelaborate;
-    pragma Remote_Types;
- 
-    type Map is tagged private with
-       Constant_Indexing => Constant_Reference,
-       Variable_Indexing => Reference,
-       Default_Iterator  => Iterate,
-       Iterator_Element  => Element_Type;
- 
-    pragma Preelaborable_Initialization (Map);
- 
-    type Cursor is private;
-    pragma Preelaborable_Initialization (Cursor);
- 
-    Empty_Map : constant Map;
-    --  Map objects declared without an initialization expression are
-    --  initialized to the value Empty_Map.
- 
-    No_Element : constant Cursor;
-    --  Cursor objects declared without an initialization expression are
-    --  initialized to the value No_Element.
- 
-    function Has_Element (Position : Cursor) return Boolean;
-    --  Equivalent to Position /= No_Element
- 
-    package Map_Iterator_Interfaces is new
-      Ada.Iterator_Interfaces (Cursor, Has_Element);
- 
-    overriding function "=" (Left, Right : Map) return Boolean;
-    --  For each key/element pair in Left, equality attempts to find the key in
-    --  Right; if a search fails the equality returns False. The search works by
-    --  calling Hash to find the bucket in the Right map that corresponds to the
-    --  Left key. If bucket is non-empty, then equality calls Equivalent_Keys
-    --  to compare the key (in Left) to the key of each node in the bucket (in
-    --  Right); if the keys are equivalent, then the equality test for this
-    --  key/element pair (in Left) completes by calling the element equality
-    --  operator to compare the element (in Left) to the element of the node
-    --  (in Right) whose key matched.
- 
-    function Capacity (Container : Map) return Count_Type;
-    --  Returns the current capacity of the map. Capacity is the maximum length
-    --  before which rehashing in guaranteed not to occur.
- 
-    procedure Reserve_Capacity (Container : in out Map; Capacity : Count_Type);
-    --  Adjusts the current capacity, by allocating a new buckets array. If the
-    --  requested capacity is less than the current capacity, then the capacity
-    --  is contracted (to a value not less than the current length). If the
-    --  requested capacity is greater than the current capacity, then the
-    --  capacity is expanded (to a value not less than what is requested). In
-    --  either case, the nodes are rehashed from the old buckets array onto the
-    --  new buckets array (Hash is called once for each existing key in order to
-    --  compute the new index), and then the old buckets array is deallocated.
- 
-    function Length (Container : Map) return Count_Type;
-    --  Returns the number of items in the map
- 
-    function Is_Empty (Container : Map) return Boolean;
-    --  Equivalent to Length (Container) = 0
- 
-    procedure Clear (Container : in out Map);
-    --  Removes all of the items from the map
- 
-    function Key (Position : Cursor) return Key_Type;
-    --  Returns the key of the node designated by the cursor
- 
-    function Element (Position : Cursor) return Element_Type;
-    --  Returns the element of the node designated by the cursor
- 
-    procedure Replace_Element
-      (Container : in out Map;
-       Position  : Cursor;
-       New_Item  : Element_Type);
-    --  Assigns the value New_Item to the element designated by the cursor
- 
-    procedure Query_Element
-      (Position : Cursor;
-       Process  : not null access procedure (Key     : Key_Type;
-                                             Element : Element_Type));
-    --  Calls Process with the key and element (both having only a constant
-    --  view) of the node designed by the cursor.
- 
-    procedure Update_Element
-      (Container : in out Map;
-       Position  : Cursor;
-       Process   : not null access procedure (Key     : Key_Type;
-                                              Element : in out Element_Type));
-    --  Calls Process with the key (with only a constant view) and element (with
-    --  a variable view) of the node designed by the cursor.
- 
-    type Constant_Reference_Type
-       (Element : not null access constant Element_Type) is private
-    with
-       Implicit_Dereference => Element;
- 
-    type Reference_Type (Element : not null access Element_Type) is private
-    with
-       Implicit_Dereference => Element;
- 
-    function Constant_Reference
-      (Container : aliased Map;
-       Position  : Cursor) return Constant_Reference_Type;
-    pragma Inline (Constant_Reference);
- 
-    function Reference
-      (Container : aliased in out Map;
-       Position  : Cursor) return Reference_Type;
-    pragma Inline (Reference);
- 
-    function Constant_Reference
-      (Container : aliased Map;
-       Key       : Key_Type) return Constant_Reference_Type;
-    pragma Inline (Constant_Reference);
- 
-    function Reference
-      (Container : aliased in out Map;
-       Key       : Key_Type) return Reference_Type;
-    pragma Inline (Reference);
- 
-    procedure Assign (Target : in out Map; Source : Map);
- 
-    function Copy (Source : Map; Capacity : Count_Type := 0) return Map;
- 
-    procedure Move (Target : in out Map; Source : in out Map);
-    --  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 Map;
-       Key       : Key_Type;
-       New_Item  : Element_Type;
-       Position  : out Cursor;
-       Inserted  : out Boolean);
-    --  Conditionally inserts New_Item into the map. If Key is already in the
-    --  map, then Inserted returns False and Position designates the node
-    --  containing the existing key/element pair (neither of which is modified).
-    --  If Key is not already in the map, the Inserted returns True and Position
-    --  designates the newly-inserted node container Key and New_Item. The
-    --  search for the key works as follows. Hash is called to determine Key's
-    --  bucket; if the bucket is non-empty, then Equivalent_Keys is called to
-    --  compare Key to each node in that bucket. If the bucket is empty, or
-    --  there were no matching keys in the bucket, the search "fails" and the
-    --  key/item pair is inserted in the map (and Inserted returns True);
-    --  otherwise, the search "succeeds" (and Inserted returns False).
- 
-    procedure Insert
-      (Container : in out Map;
-       Key       : Key_Type;
-       New_Item  : Element_Type);
-    --  Attempts to insert Key into the map, performing the usual search (which
-    --  involves calling both Hash and Equivalent_Keys); if the search succeeds
-    --  (because Key is already in the map), then it 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
-    --  Key is not already in the map.)
- 
-    procedure Include
-      (Container : in out Map;
-       Key       : Key_Type;
-       New_Item  : Element_Type);
-    --  Attempts to insert Key into the map. If Key is already in the map, then
-    --  both the existing key and element are assigned the values of Key and
-    --  New_Item, respectively. (This version of Insert only raises an exception
-    --  if cursor tampering occurs. It is intended for use when you want to
-    --  insert the key/element pair in the map, and you don't care whether Key
-    --  is already present.)
- 
-    procedure Replace
-      (Container : in out Map;
-       Key       : Key_Type;
-       New_Item  : Element_Type);
-    --  Searches for Key in the map; if the search fails (because Key was not in
-    --  the map), then it raises Constraint_Error. Otherwise, both the existing
-    --  key and element are assigned the values of Key and New_Item rsp. (This
-    --  is similar to Insert, but with the opposite exception behavior. It is
-    --  intended for use when you want to assert that Key is already in the
-    --  map.)
- 
-    procedure Exclude (Container : in out Map; Key : Key_Type);
-    --  Searches for Key in the map, and if found, removes its node from the map
-    --  and then deallocates it. The search works as follows. The operation
-    --  calls Hash to determine the key's bucket; if the bucket is not empty, it
-    --  calls Equivalent_Keys to compare Key to each key in the bucket. (This is
-    --  the deletion analog of Include. It is intended for use when you want to
-    --  remove the item from the map, but don't care whether the key is already
-    --  in the map.)
- 
-    procedure Delete (Container : in out Map; Key : Key_Type);
-    --  Searches for Key in the map (which involves calling both Hash and
-    --  Equivalent_Keys). If the search fails, then the operation raises
-    --  Constraint_Error. Otherwise it removes the node from the map 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 map.)
- 
-    procedure Delete (Container : in out Map; Position : in out Cursor);
-    --  Removes the node designated by Position from the map, 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_Keys).
- 
-    function First (Container : Map) return Cursor;
-    --  Returns a cursor that designates the first non-empty bucket, by
-    --  searching from the beginning of the buckets array.
- 
-    function Next (Position : Cursor) return Cursor;
-    --  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 (Position : in out Cursor);
-    --  Equivalent to Position := Next (Position)
- 
-    function Find (Container : Map; Key : Key_Type) return Cursor;
-    --  Searches for Key in the map. Find calls Hash to determine the key's
-    --  bucket; if the bucket is not empty, it calls Equivalent_Keys to compare
-    --  Key to each key in the bucket. If the search succeeds, Find returns a
-    --  cursor designating the matching node; otherwise, it returns No_Element.
- 
-    function Contains (Container : Map; Key : Key_Type) return Boolean;
-    --  Equivalent to Find (Container, Key) /= No_Element
- 
-    function Element (Container : Map; Key : Key_Type) return Element_Type;
-    --  Equivalent to Element (Find (Container, Key))
- 
-    function Equivalent_Keys (Left, Right : Cursor) return Boolean;
-    --  Returns the result of calling Equivalent_Keys with the keys of the nodes
-    --  designated by cursors Left and Right.
- 
-    function Equivalent_Keys (Left : Cursor; Right : Key_Type) return Boolean;
-    --  Returns the result of calling Equivalent_Keys with key of the node
-    --  designated by Left and key Right.
- 
-    function Equivalent_Keys (Left : Key_Type; Right : Cursor) return Boolean;
-    --  Returns the result of calling Equivalent_Keys with key Left and the node
-    --  designated by Right.
- 
-    procedure Iterate
-      (Container : Map;
-       Process   : not null access procedure (Position : Cursor));
-    --  Calls Process for each node in the map
- 
-    function Iterate (Container : Map)
-       return Map_Iterator_Interfaces.Forward_Iterator'class;
- 
- private
-    pragma Inline ("=");
-    pragma Inline (Length);
-    pragma Inline (Is_Empty);
-    pragma Inline (Clear);
-    pragma Inline (Key);
-    pragma Inline (Element);
-    pragma Inline (Move);
-    pragma Inline (Contains);
-    pragma Inline (Capacity);
-    pragma Inline (Reserve_Capacity);
-    pragma Inline (Has_Element);
-    pragma Inline (Equivalent_Keys);
-    pragma Inline (Next);
- 
-    type Node_Type;
-    type Node_Access is access Node_Type;
- 
-    type Key_Access is access Key_Type;
-    type Element_Access is access all Element_Type;
- 
-    type Node_Type is limited record
-       Key     : Key_Access;
-       Element : Element_Access;
-       Next    : Node_Access;
-    end record;
- 
-    package HT_Types is
-       new Hash_Tables.Generic_Hash_Table_Types (Node_Type, Node_Access);
- 
-    type Map is new Ada.Finalization.Controlled with record
-       HT : HT_Types.Hash_Table_Type;
-    end record;
- 
-    overriding procedure Adjust   (Container : in out Map);
- 
-    overriding procedure Finalize (Container : in out Map);
- 
-    use HT_Types, HT_Types.Implementation;
-    use Ada.Finalization;
-    use Ada.Streams;
- 
-    procedure Write
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : Map);
- 
-    for Map'Write use Write;
- 
-    procedure Read
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : out Map);
- 
-    for Map'Read use Read;
- 
-    type Map_Access is access all Map;
-    for Map_Access'Storage_Size use 0;
- 
-    type Cursor is record
-       Container : Map_Access;
-       Node      : Node_Access;
-    end record;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Cursor);
- 
-    for Cursor'Write use Write;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Cursor);
- 
-    for Cursor'Read use Read;
- 
-    subtype Reference_Control_Type is Implementation.Reference_Control_Type;
-    --  It is necessary to rename this here, so that the compiler can find it
- 
-    type Constant_Reference_Type
-      (Element : not null access constant Element_Type) is
-       record
-          Control : Reference_Control_Type :=
-            raise Program_Error with "uninitialized reference";
-          --  The RM says, "The default initialization of an object of
-          --  type Constant_Reference_Type or Reference_Type propagates
-          --  Program_Error."
-       end record;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Constant_Reference_Type);
- 
-    for Constant_Reference_Type'Write use Write;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Constant_Reference_Type);
- 
-    for Constant_Reference_Type'Read use Read;
- 
-    type Reference_Type
-      (Element : not null access Element_Type) is
-       record
-          Control : Reference_Control_Type :=
-            raise Program_Error with "uninitialized reference";
-          --  The RM says, "The default initialization of an object of
-          --  type Constant_Reference_Type or Reference_Type propagates
-          --  Program_Error."
-       end record;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Reference_Type);
- 
-    for Reference_Type'Write use Write;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       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 Sem_Ch5 for
-    --  details.
- 
-    function Pseudo_Reference
-      (Container : aliased Map'Class) return Reference_Control_Type;
-    pragma Inline (Pseudo_Reference);
-    --  Creates an object of type Reference_Control_Type pointing to the
-    --  container, and increments the Lock. Finalization of this object will
-    --  decrement the Lock.
- 
-    function Get_Element_Access
-      (Position : Cursor) return not null Element_Access;
-    --  Returns a pointer to the element designated by Position.
- 
-    Empty_Map : constant Map := (Controlled with others => <>);
- 
-    No_Element : constant Cursor := (Container => null, Node => null);
- 
-    type Iterator is new Limited_Controlled and
-      Map_Iterator_Interfaces.Forward_Iterator with
-    record
-       Container : Map_Access;
-    end record
-      with Disable_Controlled => not T_Check;
- 
-    overriding procedure Finalize (Object : in out Iterator);
- 
-    overriding function First (Object : Iterator) return Cursor;
- 
-    overriding function Next
-      (Object   : Iterator;
-       Position : Cursor) return Cursor;
- 
- end Ada.Containers.Indefinite_Hashed_Maps;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cihase.adb gcc-8.1.0/gcc/ada/a-cihase.adb
*** gcc-7.3.0/gcc/ada/a-cihase.adb	Wed Apr 20 10:29:26 2016
--- gcc-8.1.0/gcc/ada/a-cihase.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,2401 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                  ADA.CONTAINERS.INDEFINITE_HASHED_SETS                   --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 Ada.Unchecked_Deallocation;
- 
- with Ada.Containers.Hash_Tables.Generic_Operations;
- pragma Elaborate_All (Ada.Containers.Hash_Tables.Generic_Operations);
- 
- with Ada.Containers.Hash_Tables.Generic_Keys;
- pragma Elaborate_All (Ada.Containers.Hash_Tables.Generic_Keys);
- 
- with Ada.Containers.Helpers; use Ada.Containers.Helpers;
- 
- with Ada.Containers.Prime_Numbers;
- 
- with System; use type System.Address;
- 
- package body Ada.Containers.Indefinite_Hashed_Sets is
- 
-    pragma Warnings (Off, "variable ""Busy*"" is not referenced");
-    pragma Warnings (Off, "variable ""Lock*"" is not referenced");
-    --  See comment in Ada.Containers.Helpers
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    procedure Assign (Node : Node_Access; Item : Element_Type);
-    pragma Inline (Assign);
- 
-    function Copy_Node (Source : Node_Access) return Node_Access;
-    pragma Inline (Copy_Node);
- 
-    function Equivalent_Keys
-      (Key  : Element_Type;
-       Node : Node_Access) return Boolean;
-    pragma Inline (Equivalent_Keys);
- 
-    function Find_Equal_Key
-      (R_HT   : Hash_Table_Type;
-       L_Node : Node_Access) return Boolean;
- 
-    function Find_Equivalent_Key
-      (R_HT   : Hash_Table_Type;
-       L_Node : Node_Access) return Boolean;
- 
-    procedure Free (X : in out Node_Access);
- 
-    function Hash_Node (Node : Node_Access) return Hash_Type;
-    pragma Inline (Hash_Node);
- 
-    procedure Insert
-      (HT       : in out Hash_Table_Type;
-       New_Item : Element_Type;
-       Node     : out Node_Access;
-       Inserted : out Boolean);
- 
-    function Is_In
-      (HT  : aliased in out Hash_Table_Type;
-       Key : Node_Access) return Boolean;
-    pragma Inline (Is_In);
- 
-    function Next (Node : Node_Access) return Node_Access;
-    pragma Inline (Next);
- 
-    function Read_Node (Stream : not null access Root_Stream_Type'Class)
-      return Node_Access;
-    pragma Inline (Read_Node);
- 
-    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;
-       Node   : Node_Access);
-    pragma Inline (Write_Node);
- 
-    --------------------------
-    -- Local Instantiations --
-    --------------------------
- 
-    procedure Free_Element is
-      new Ada.Unchecked_Deallocation (Element_Type, Element_Access);
- 
-    package HT_Ops is new Hash_Tables.Generic_Operations
-      (HT_Types  => HT_Types,
-       Hash_Node => Hash_Node,
-       Next      => Next,
-       Set_Next  => Set_Next,
-       Copy_Node => Copy_Node,
-       Free      => Free);
- 
-    package Element_Keys is new Hash_Tables.Generic_Keys
-      (HT_Types        => HT_Types,
-       Next            => Next,
-       Set_Next        => Set_Next,
-       Key_Type        => Element_Type,
-       Hash            => Hash,
-       Equivalent_Keys => Equivalent_Keys);
- 
-    function Is_Equal is
-       new HT_Ops.Generic_Equal (Find_Equal_Key);
- 
-    function Is_Equivalent is
-       new HT_Ops.Generic_Equal (Find_Equivalent_Key);
- 
-    procedure Read_Nodes is
-       new HT_Ops.Generic_Read (Read_Node);
- 
-    procedure Replace_Element is
-       new Element_Keys.Generic_Replace_Element (Hash_Node, Assign);
- 
-    procedure Write_Nodes is
-      new HT_Ops.Generic_Write (Write_Node);
- 
-    ---------
-    -- "=" --
-    ---------
- 
-    function "=" (Left, Right : Set) return Boolean is
-    begin
-       return Is_Equal (Left.HT, Right.HT);
-    end "=";
- 
-    ------------
-    -- Adjust --
-    ------------
- 
-    procedure Adjust (Container : in out Set) is
-    begin
-       HT_Ops.Adjust (Container.HT);
-    end Adjust;
- 
-    ------------
-    -- Assign --
-    ------------
- 
-    procedure Assign (Node : Node_Access; Item : Element_Type) is
-       X : Element_Access := Node.Element;
- 
-       --  The element allocator may need an accessibility check in the case the
-       --  actual type is class-wide or has access discriminants (RM 4.8(10.1)
-       --  and AI12-0035).
- 
-       pragma Unsuppress (Accessibility_Check);
- 
-    begin
-       Node.Element := new Element_Type'(Item);
-       Free_Element (X);
-    end Assign;
- 
-    procedure Assign (Target : in out Set; Source : Set) is
-    begin
-       if Target'Address = Source'Address then
-          return;
-       else
-          Target.Clear;
-          Target.Union (Source);
-       end if;
-    end Assign;
- 
-    --------------
-    -- Capacity --
-    --------------
- 
-    function Capacity (Container : Set) return Count_Type is
-    begin
-       return HT_Ops.Capacity (Container.HT);
-    end Capacity;
- 
-    -----------
-    -- Clear --
-    -----------
- 
-    procedure Clear (Container : in out Set) is
-    begin
-       HT_Ops.Clear (Container.HT);
-    end Clear;
- 
-    ------------------------
-    -- Constant_Reference --
-    ------------------------
- 
-    function Constant_Reference
-      (Container : aliased Set;
-       Position  : Cursor) return Constant_Reference_Type
-    is
-    begin
-       if Checks and then Position.Container = null then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor designates wrong container";
-       end if;
- 
-       if Checks and then Position.Node.Element = null then
-          raise Program_Error with "Node has no element";
-       end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in Constant_Reference");
- 
-       declare
-          HT : Hash_Table_Type renames Position.Container.all.HT;
-          TC : constant Tamper_Counts_Access :=
-            HT.TC'Unrestricted_Access;
-       begin
-          return R : constant Constant_Reference_Type :=
-            (Element => Position.Node.Element.all'Access,
-             Control => (Controlled with TC))
-          do
-             Lock (TC.all);
-          end return;
-       end;
-    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 : Count_Type;
- 
-    begin
-       if Capacity < Source.Length then
-          if Checks and then Capacity /= 0 then
-             raise Capacity_Error
-               with "Requested capacity is less than Source length";
-          end if;
- 
-          C := Source.Length;
-       else
-          C := Capacity;
-       end if;
- 
-       return Target : Set do
-          Target.Reserve_Capacity (C);
-          Target.Assign (Source);
-       end return;
-    end Copy;
- 
-    ---------------
-    -- Copy_Node --
-    ---------------
- 
-    function Copy_Node (Source : Node_Access) return Node_Access is
-       E : Element_Access := new Element_Type'(Source.Element.all);
-    begin
-       return new Node_Type'(Element => E, Next => null);
-    exception
-       when others =>
-          Free_Element (E);
-          raise;
-    end Copy_Node;
- 
-    ------------
-    -- Delete --
-    ------------
- 
-    procedure Delete
-      (Container : in out Set;
-       Item      : Element_Type)
-    is
-       X : Node_Access;
- 
-    begin
-       Element_Keys.Delete_Key_Sans_Free (Container.HT, Item, X);
- 
-       if Checks and then X = null then
-          raise Constraint_Error with "attempt to delete element not in set";
-       end if;
- 
-       Free (X);
-    end Delete;
- 
-    procedure Delete
-      (Container : in out Set;
-       Position  : in out Cursor)
-    is
-    begin
-       if Checks and then Position.Node = null then
-          raise Constraint_Error with "Position cursor equals No_Element";
-       end if;
- 
-       if Checks and then Position.Node.Element = null then
-          raise Program_Error with "Position cursor is bad";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with "Position cursor designates wrong set";
-       end if;
- 
-       TC_Check (Container.HT.TC);
- 
-       pragma Assert (Vet (Position), "Position cursor is bad");
- 
-       HT_Ops.Delete_Node_Sans_Free (Container.HT, Position.Node);
- 
-       Free (Position.Node);
-       Position.Container := null;
-    end Delete;
- 
-    ----------------
-    -- Difference --
-    ----------------
- 
-    procedure Difference
-      (Target : in out Set;
-       Source : Set)
-    is
-       Src_HT   : Hash_Table_Type renames Source'Unrestricted_Access.HT;
-       Tgt_Node : Node_Access;
- 
-    begin
-       if Target'Address = Source'Address then
-          Clear (Target);
-          return;
-       end if;
- 
-       if Src_HT.Length = 0 then
-          return;
-       end if;
- 
-       TC_Check (Target.HT.TC);
- 
-       if Src_HT.Length < Target.HT.Length then
-          declare
-             Src_Node : Node_Access;
- 
-          begin
-             Src_Node := HT_Ops.First (Src_HT);
-             while Src_Node /= null loop
-                Tgt_Node := Element_Keys.Find (Target.HT, Src_Node.Element.all);
- 
-                if Tgt_Node /= null then
-                   HT_Ops.Delete_Node_Sans_Free (Target.HT, Tgt_Node);
-                   Free (Tgt_Node);
-                end if;
- 
-                Src_Node := HT_Ops.Next (Src_HT, Src_Node);
-             end loop;
-          end;
- 
-       else
-          Tgt_Node := HT_Ops.First (Target.HT);
-          while Tgt_Node /= null loop
-             if Is_In (Src_HT, Tgt_Node) then
-                declare
-                   X : Node_Access := Tgt_Node;
-                begin
-                   Tgt_Node := HT_Ops.Next (Target.HT, Tgt_Node);
-                   HT_Ops.Delete_Node_Sans_Free (Target.HT, X);
-                   Free (X);
-                end;
- 
-             else
-                Tgt_Node := HT_Ops.Next (Target.HT, Tgt_Node);
-             end if;
-          end loop;
-       end if;
-    end Difference;
- 
-    function Difference (Left, Right : Set) return Set is
-       Left_HT  : Hash_Table_Type renames Left'Unrestricted_Access.HT;
-       Right_HT : Hash_Table_Type renames Right'Unrestricted_Access.HT;
-       Buckets  : HT_Types.Buckets_Access;
-       Length   : Count_Type;
- 
-    begin
-       if Left'Address = Right'Address then
-          return Empty_Set;
-       end if;
- 
-       if Left.Length = 0 then
-          return Empty_Set;
-       end if;
- 
-       if Right.Length = 0 then
-          return Left;
-       end if;
- 
-       declare
-          Size : constant Hash_Type := Prime_Numbers.To_Prime (Left.Length);
-       begin
-          Buckets := HT_Ops.New_Buckets (Length => Size);
-       end;
- 
-       Length := 0;
- 
-       Iterate_Left : declare
-          procedure Process (L_Node : Node_Access);
- 
-          procedure Iterate is
-             new HT_Ops.Generic_Iteration (Process);
- 
-          -------------
-          -- Process --
-          -------------
- 
-          procedure Process (L_Node : Node_Access) is
-          begin
-             if not Is_In (Right_HT, L_Node) then
-                declare
-                   --  Per AI05-0022, the container implementation is required
-                   --  to detect element tampering by a generic actual
-                   --  subprogram, hence the use of Checked_Index instead of a
-                   --  simple invocation of generic formal Hash.
- 
-                   Indx   : constant Hash_Type :=
-                     HT_Ops.Checked_Index (Left_HT, Buckets.all, L_Node);
- 
-                   Bucket : Node_Access renames Buckets (Indx);
-                   Src    : Element_Type renames L_Node.Element.all;
-                   Tgt    : Element_Access := new Element_Type'(Src);
- 
-                begin
-                   Bucket := new Node_Type'(Tgt, Bucket);
- 
-                exception
-                   when others =>
-                      Free_Element (Tgt);
-                      raise;
-                end;
- 
-                Length := Length + 1;
-             end if;
-          end Process;
- 
-       --  Start of processing for Iterate_Left
- 
-       begin
-          Iterate (Left.HT);
- 
-       exception
-          when others =>
-             HT_Ops.Free_Hash_Table (Buckets);
-             raise;
-       end Iterate_Left;
- 
-       return (Controlled with HT => (Buckets, Length, (Busy => 0, Lock => 0)));
-    end Difference;
- 
-    -------------
-    -- Element --
-    -------------
- 
-    function Element (Position : Cursor) return Element_Type is
-    begin
-       if Checks and then Position.Node = null then
-          raise Constraint_Error with "Position cursor of equals No_Element";
-       end if;
- 
-       if Checks and then Position.Node.Element = null then
-          --  handle dangling reference
-          raise Program_Error with "Position cursor is bad";
-       end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in function Element");
- 
-       return Position.Node.Element.all;
-    end Element;
- 
-    ---------------------
-    -- Equivalent_Sets --
-    ---------------------
- 
-    function Equivalent_Sets (Left, Right : Set) return Boolean is
-    begin
-       return Is_Equivalent (Left.HT, Right.HT);
-    end Equivalent_Sets;
- 
-    -------------------------
-    -- Equivalent_Elements --
-    -------------------------
- 
-    function Equivalent_Elements (Left, Right : Cursor) return Boolean is
-    begin
-       if Checks and then Left.Node = null then
-          raise Constraint_Error with
-            "Left cursor of Equivalent_Elements equals No_Element";
-       end if;
- 
-       if Checks and then Right.Node = null then
-          raise Constraint_Error with
-            "Right cursor of Equivalent_Elements equals No_Element";
-       end if;
- 
-       if Checks and then Left.Node.Element = null then
-          raise Program_Error with
-            "Left cursor of Equivalent_Elements is bad";
-       end if;
- 
-       if Checks and then Right.Node.Element = null then
-          raise Program_Error with
-            "Right cursor of Equivalent_Elements is bad";
-       end if;
- 
-       pragma Assert (Vet (Left), "bad Left cursor in Equivalent_Elements");
-       pragma Assert (Vet (Right), "bad Right cursor in Equivalent_Elements");
- 
-       --  AI05-0022 requires that a container implementation detect element
-       --  tampering by a generic actual subprogram. However, the following case
-       --  falls outside the scope of that AI. Randy Brukardt explained on the
-       --  ARG list on 2013/02/07 that:
- 
-       --  (Begin Quote):
-       --  But for an operation like "<" [the ordered set analog of
-       --  Equivalent_Elements], there is no need to "dereference" a cursor
-       --  after the call to the generic formal parameter function, so nothing
-       --  bad could happen if tampering is undetected. And the operation can
-       --  safely return a result without a problem even if an element is
-       --  deleted from the container.
-       --  (End Quote).
- 
-       return Equivalent_Elements
-                (Left.Node.Element.all,
-                 Right.Node.Element.all);
-    end Equivalent_Elements;
- 
-    function Equivalent_Elements
-      (Left  : Cursor;
-       Right : Element_Type) return Boolean
-    is
-    begin
-       if Checks and then Left.Node = null then
-          raise Constraint_Error with
-            "Left cursor of Equivalent_Elements equals No_Element";
-       end if;
- 
-       if Checks and then Left.Node.Element = null then
-          raise Program_Error with
-            "Left cursor of Equivalent_Elements is bad";
-       end if;
- 
-       pragma Assert (Vet (Left), "bad Left cursor in Equivalent_Elements");
- 
-       return Equivalent_Elements (Left.Node.Element.all, Right);
-    end Equivalent_Elements;
- 
-    function Equivalent_Elements
-      (Left  : Element_Type;
-       Right : Cursor) return Boolean
-    is
-    begin
-       if Checks and then Right.Node = null then
-          raise Constraint_Error with
-            "Right cursor of Equivalent_Elements equals No_Element";
-       end if;
- 
-       if Checks and then Right.Node.Element = null then
-          raise Program_Error with
-            "Right cursor of Equivalent_Elements is bad";
-       end if;
- 
-       pragma Assert (Vet (Right), "bad Right cursor in Equivalent_Elements");
- 
-       return Equivalent_Elements (Left, Right.Node.Element.all);
-    end Equivalent_Elements;
- 
-    ---------------------
-    -- Equivalent_Keys --
-    ---------------------
- 
-    function Equivalent_Keys
-      (Key  : Element_Type;
-       Node : Node_Access) return Boolean
-    is
-    begin
-       return Equivalent_Elements (Key, Node.Element.all);
-    end Equivalent_Keys;
- 
-    -------------
-    -- Exclude --
-    -------------
- 
-    procedure Exclude
-      (Container : in out Set;
-       Item      : Element_Type)
-    is
-       X : Node_Access;
-    begin
-       Element_Keys.Delete_Key_Sans_Free (Container.HT, Item, X);
-       Free (X);
-    end Exclude;
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    procedure Finalize (Container : in out Set) is
-    begin
-       HT_Ops.Finalize (Container.HT);
-    end Finalize;
- 
-    procedure Finalize (Object : in out Iterator) is
-    begin
-       if Object.Container /= null then
-          Unbusy (Object.Container.HT.TC);
-       end if;
-    end Finalize;
- 
-    ----------
-    -- Find --
-    ----------
- 
-    function Find
-      (Container : Set;
-       Item      : Element_Type) return Cursor
-    is
-       HT   : Hash_Table_Type renames Container'Unrestricted_Access.HT;
-       Node : constant Node_Access := Element_Keys.Find (HT, Item);
-    begin
-       return (if Node = null then No_Element
-               else Cursor'(Container'Unrestricted_Access, Node));
-    end Find;
- 
-    --------------------
-    -- Find_Equal_Key --
-    --------------------
- 
-    function Find_Equal_Key
-      (R_HT   : Hash_Table_Type;
-       L_Node : Node_Access) return Boolean
-    is
-       R_Index : constant Hash_Type :=
-         Element_Keys.Index (R_HT, L_Node.Element.all);
- 
-       R_Node  : Node_Access := R_HT.Buckets (R_Index);
- 
-    begin
-       loop
-          if R_Node = null then
-             return False;
-          end if;
- 
-          if L_Node.Element.all = R_Node.Element.all then
-             return True;
-          end if;
- 
-          R_Node := Next (R_Node);
-       end loop;
-    end Find_Equal_Key;
- 
-    -------------------------
-    -- Find_Equivalent_Key --
-    -------------------------
- 
-    function Find_Equivalent_Key
-      (R_HT   : Hash_Table_Type;
-       L_Node : Node_Access) return Boolean
-    is
-       R_Index : constant Hash_Type :=
-         Element_Keys.Index (R_HT, L_Node.Element.all);
- 
-       R_Node  : Node_Access := R_HT.Buckets (R_Index);
- 
-    begin
-       loop
-          if R_Node = null then
-             return False;
-          end if;
- 
-          if Equivalent_Elements (L_Node.Element.all, R_Node.Element.all) then
-             return True;
-          end if;
- 
-          R_Node := Next (R_Node);
-       end loop;
-    end Find_Equivalent_Key;
- 
-    -----------
-    -- First --
-    -----------
- 
-    function First (Container : Set) return Cursor is
-       Node : constant Node_Access := HT_Ops.First (Container.HT);
-    begin
-       return (if Node = null then No_Element
-               else Cursor'(Container'Unrestricted_Access, Node));
-    end First;
- 
-    function First (Object : Iterator) return Cursor is
-    begin
-       return Object.Container.First;
-    end First;
- 
-    ----------
-    -- Free --
-    ----------
- 
-    procedure Free (X : in out Node_Access) is
-       procedure Deallocate is
-          new Ada.Unchecked_Deallocation (Node_Type, Node_Access);
- 
-    begin
-       if X = null then
-          return;
-       end if;
- 
-       X.Next := X;  --  detect mischief (in Vet)
- 
-       begin
-          Free_Element (X.Element);
- 
-       exception
-          when others =>
-             X.Element := null;
-             Deallocate (X);
-             raise;
-       end;
- 
-       Deallocate (X);
-    end Free;
- 
-    ------------------------
-    -- Get_Element_Access --
-    ------------------------
- 
-    function Get_Element_Access
-      (Position : Cursor) return not null Element_Access is
-    begin
-       return Position.Node.Element;
-    end Get_Element_Access;
- 
-    -----------------
-    -- Has_Element --
-    -----------------
- 
-    function Has_Element (Position : Cursor) return Boolean is
-    begin
-       pragma Assert (Vet (Position), "bad cursor in Has_Element");
-       return Position.Node /= null;
-    end Has_Element;
- 
-    ---------------
-    -- Hash_Node --
-    ---------------
- 
-    function Hash_Node (Node : Node_Access) return Hash_Type is
-    begin
-       return Hash (Node.Element.all);
-    end Hash_Node;
- 
-    -------------
-    -- Include --
-    -------------
- 
-    procedure Include
-      (Container : in out Set;
-       New_Item  : Element_Type)
-    is
-       Position : Cursor;
-       Inserted : Boolean;
- 
-       X : Element_Access;
- 
-    begin
-       Insert (Container, New_Item, Position, Inserted);
- 
-       if not Inserted then
-          TE_Check (Container.HT.TC);
- 
-          X := Position.Node.Element;
- 
-          declare
-             --  The element allocator may need an accessibility check in the
-             --  case the actual type is class-wide or has access discriminants
-             --  (see RM 4.8(10.1) and AI12-0035).
- 
-             pragma Unsuppress (Accessibility_Check);
- 
-          begin
-             Position.Node.Element := new Element_Type'(New_Item);
-          end;
- 
-          Free_Element (X);
-       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.HT, New_Item, Position.Node, Inserted);
-       Position.Container := Container'Unchecked_Access;
-    end Insert;
- 
-    procedure Insert
-      (Container : in out Set;
-       New_Item  : Element_Type)
-    is
-       Position : Cursor;
-       pragma Unreferenced (Position);
- 
-       Inserted : Boolean;
- 
-    begin
-       Insert (Container, New_Item, Position, Inserted);
- 
-       if Checks and then not Inserted then
-          raise Constraint_Error with
-            "attempt to insert element already in set";
-       end if;
-    end Insert;
- 
-    procedure Insert
-      (HT       : in out Hash_Table_Type;
-       New_Item : Element_Type;
-       Node     : out Node_Access;
-       Inserted : out Boolean)
-    is
-       function New_Node (Next : Node_Access) return Node_Access;
-       pragma Inline (New_Node);
- 
-       procedure Local_Insert is
-          new Element_Keys.Generic_Conditional_Insert (New_Node);
- 
-       --------------
-       -- New_Node --
-       --------------
- 
-       function New_Node (Next : Node_Access) return Node_Access is
- 
-          --  The element allocator may need an accessibility check in the case
-          --  the actual type is class-wide or has access discriminants (see
-          --  RM 4.8(10.1) and AI12-0035).
- 
-          pragma Unsuppress (Accessibility_Check);
- 
-          Element : Element_Access := new Element_Type'(New_Item);
- 
-       begin
-          return new Node_Type'(Element, Next);
- 
-       exception
-          when others =>
-             Free_Element (Element);
-             raise;
-       end New_Node;
- 
-    --  Start of processing for Insert
- 
-    begin
-       if HT_Ops.Capacity (HT) = 0 then
-          HT_Ops.Reserve_Capacity (HT, 1);
-       end if;
- 
-       Local_Insert (HT, New_Item, Node, Inserted);
- 
-       if Inserted and then HT.Length > HT_Ops.Capacity (HT) then
-          HT_Ops.Reserve_Capacity (HT, HT.Length);
-       end if;
-    end Insert;
- 
-    ------------------
-    -- Intersection --
-    ------------------
- 
-    procedure Intersection
-      (Target : in out Set;
-       Source : Set)
-    is
-       Src_HT   : Hash_Table_Type renames Source'Unrestricted_Access.HT;
-       Tgt_Node : Node_Access;
- 
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       if Source.Length = 0 then
-          Clear (Target);
-          return;
-       end if;
- 
-       TC_Check (Target.HT.TC);
- 
-       Tgt_Node := HT_Ops.First (Target.HT);
-       while Tgt_Node /= null loop
-          if Is_In (Src_HT, Tgt_Node) then
-             Tgt_Node := HT_Ops.Next (Target.HT, Tgt_Node);
- 
-          else
-             declare
-                X : Node_Access := Tgt_Node;
-             begin
-                Tgt_Node := HT_Ops.Next (Target.HT, Tgt_Node);
-                HT_Ops.Delete_Node_Sans_Free (Target.HT, X);
-                Free (X);
-             end;
-          end if;
-       end loop;
-    end Intersection;
- 
-    function Intersection (Left, Right : Set) return Set is
-       Left_HT  : Hash_Table_Type renames Left'Unrestricted_Access.HT;
-       Right_HT : Hash_Table_Type renames Right'Unrestricted_Access.HT;
-       Buckets  : HT_Types.Buckets_Access;
-       Length   : Count_Type;
- 
-    begin
-       if Left'Address = Right'Address then
-          return Left;
-       end if;
- 
-       Length := Count_Type'Min (Left.Length, Right.Length);
- 
-       if Length = 0 then
-          return Empty_Set;
-       end if;
- 
-       declare
-          Size : constant Hash_Type := Prime_Numbers.To_Prime (Length);
-       begin
-          Buckets := HT_Ops.New_Buckets (Length => Size);
-       end;
- 
-       Length := 0;
- 
-       Iterate_Left : declare
-          procedure Process (L_Node : Node_Access);
- 
-          procedure Iterate is
-             new HT_Ops.Generic_Iteration (Process);
- 
-          -------------
-          -- Process --
-          -------------
- 
-          procedure Process (L_Node : Node_Access) is
-          begin
-             if Is_In (Right_HT, L_Node) then
-                declare
-                   --  Per AI05-0022, the container implementation is required
-                   --  to detect element tampering by a generic actual
-                   --  subprogram, hence the use of Checked_Index instead of a
-                   --  simple invocation of generic formal Hash.
- 
-                   Indx : constant Hash_Type :=
-                     HT_Ops.Checked_Index (Left_HT, Buckets.all, L_Node);
- 
-                   Bucket : Node_Access renames Buckets (Indx);
- 
-                   Src : Element_Type renames L_Node.Element.all;
-                   Tgt : Element_Access := new Element_Type'(Src);
- 
-                begin
-                   Bucket := new Node_Type'(Tgt, Bucket);
- 
-                exception
-                   when others =>
-                      Free_Element (Tgt);
-                      raise;
-                end;
- 
-                Length := Length + 1;
-             end if;
-          end Process;
- 
-       --  Start of processing for Iterate_Left
- 
-       begin
-          Iterate (Left.HT);
- 
-       exception
-          when others =>
-             HT_Ops.Free_Hash_Table (Buckets);
-             raise;
-       end Iterate_Left;
- 
-       return (Controlled with HT => (Buckets, Length, (Busy => 0, Lock => 0)));
-    end Intersection;
- 
-    --------------
-    -- Is_Empty --
-    --------------
- 
-    function Is_Empty (Container : Set) return Boolean is
-    begin
-       return Container.HT.Length = 0;
-    end Is_Empty;
- 
-    -----------
-    -- Is_In --
-    -----------
- 
-    function Is_In
-      (HT  : aliased in out Hash_Table_Type;
-       Key : Node_Access) return Boolean
-    is
-    begin
-       return Element_Keys.Find (HT, Key.Element.all) /= null;
-    end Is_In;
- 
-    ---------------
-    -- Is_Subset --
-    ---------------
- 
-    function Is_Subset
-      (Subset : Set;
-       Of_Set : Set) return Boolean
-    is
-       Subset_HT   : Hash_Table_Type renames Subset'Unrestricted_Access.HT;
-       Of_Set_HT   : Hash_Table_Type renames Of_Set'Unrestricted_Access.HT;
-       Subset_Node : Node_Access;
- 
-    begin
-       if Subset'Address = Of_Set'Address then
-          return True;
-       end if;
- 
-       if Subset.Length > Of_Set.Length then
-          return False;
-       end if;
- 
-       Subset_Node := HT_Ops.First (Subset_HT);
-       while Subset_Node /= null loop
-          if not Is_In (Of_Set_HT, Subset_Node) then
-             return False;
-          end if;
- 
-          Subset_Node := HT_Ops.Next (Subset_HT, Subset_Node);
-       end loop;
- 
-       return True;
-    end Is_Subset;
- 
-    -------------
-    -- Iterate --
-    -------------
- 
-    procedure Iterate
-      (Container : Set;
-       Process   : not null access procedure (Position : Cursor))
-    is
-       procedure Process_Node (Node : Node_Access);
-       pragma Inline (Process_Node);
- 
-       procedure Iterate is
-          new HT_Ops.Generic_Iteration (Process_Node);
- 
-       ------------------
-       -- Process_Node --
-       ------------------
- 
-       procedure Process_Node (Node : Node_Access) is
-       begin
-          Process (Cursor'(Container'Unrestricted_Access, Node));
-       end Process_Node;
- 
-       Busy : With_Busy (Container.HT.TC'Unrestricted_Access);
- 
-    --  Start of processing for Iterate
- 
-    begin
-       Iterate (Container.HT);
-    end Iterate;
- 
-    function Iterate (Container : Set)
-      return Set_Iterator_Interfaces.Forward_Iterator'Class
-    is
-    begin
-       return It : constant Iterator :=
-         Iterator'(Limited_Controlled with
-                     Container => Container'Unrestricted_Access)
-       do
-          Busy (Container.HT.TC'Unrestricted_Access.all);
-       end return;
-    end Iterate;
- 
-    ------------
-    -- Length --
-    ------------
- 
-    function Length (Container : Set) return Count_Type is
-    begin
-       return Container.HT.Length;
-    end Length;
- 
-    ----------
-    -- Move --
-    ----------
- 
-    procedure Move (Target : in out Set; Source : in out Set) is
-    begin
-       HT_Ops.Move (Target => Target.HT, Source => Source.HT);
-    end Move;
- 
-    ----------
-    -- Next --
-    ----------
- 
-    function Next (Node : Node_Access) return Node_Access is
-    begin
-       return Node.Next;
-    end Next;
- 
-    function Next (Position : Cursor) return Cursor is
-    begin
-       if Position.Node = null then
-          return No_Element;
-       end if;
- 
-       if Checks and then Position.Node.Element = null then
-          raise Program_Error with "bad cursor in Next";
-       end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in Next");
- 
-       declare
-          HT   : Hash_Table_Type renames Position.Container.HT;
-          Node : constant Node_Access := HT_Ops.Next (HT, Position.Node);
-       begin
-          return (if Node = null then No_Element
-                  else Cursor'(Position.Container, Node));
-       end;
-    end Next;
- 
-    procedure Next (Position : in out Cursor) is
-    begin
-       Position := Next (Position);
-    end Next;
- 
-    function Next
-      (Object   : Iterator;
-       Position : Cursor) return Cursor
-    is
-    begin
-       if Position.Container = null then
-          return No_Element;
-       end if;
- 
-       if Checks and then Position.Container /= Object.Container then
-          raise Program_Error with
-            "Position cursor of Next designates wrong set";
-       end if;
- 
-       return Next (Position);
-    end Next;
- 
-    -------------
-    -- Overlap --
-    -------------
- 
-    function Overlap (Left, Right : Set) return Boolean is
-       Left_HT   : Hash_Table_Type renames Left'Unrestricted_Access.HT;
-       Right_HT  : Hash_Table_Type renames Right'Unrestricted_Access.HT;
-       Left_Node : Node_Access;
- 
-    begin
-       if Right.Length = 0 then
-          return False;
-       end if;
- 
-       if Left'Address = Right'Address then
-          return True;
-       end if;
- 
-       Left_Node := HT_Ops.First (Left_HT);
-       while Left_Node /= null loop
-          if Is_In (Right_HT, Left_Node) then
-             return True;
-          end if;
- 
-          Left_Node := HT_Ops.Next (Left_HT, Left_Node);
-       end loop;
- 
-       return False;
-    end Overlap;
- 
-    ----------------------
-    -- Pseudo_Reference --
-    ----------------------
- 
-    function Pseudo_Reference
-      (Container : aliased Set'Class) return Reference_Control_Type
-    is
-       TC : constant Tamper_Counts_Access :=
-         Container.HT.TC'Unrestricted_Access;
-    begin
-       return R : constant Reference_Control_Type := (Controlled with TC) do
-          Lock (TC.all);
-       end return;
-    end Pseudo_Reference;
- 
-    -------------------
-    -- Query_Element --
-    -------------------
- 
-    procedure Query_Element
-      (Position : Cursor;
-       Process  : not null access procedure (Element : Element_Type))
-    is
-    begin
-       if Checks and then Position.Node = null then
-          raise Constraint_Error with
-            "Position cursor of Query_Element equals No_Element";
-       end if;
- 
-       if Checks and then Position.Node.Element = null then
-          raise Program_Error with "bad cursor in Query_Element";
-       end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in Query_Element");
- 
-       declare
-          HT : Hash_Table_Type renames
-                 Position.Container'Unrestricted_Access.all.HT;
-          Lock : With_Lock (HT.TC'Unrestricted_Access);
-       begin
-          Process (Position.Node.Element.all);
-       end;
-    end Query_Element;
- 
-    ----------
-    -- Read --
-    ----------
- 
-    procedure Read
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : out Set)
-    is
-    begin
-       Read_Nodes (Stream, Container.HT);
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Cursor)
-    is
-    begin
-       raise Program_Error with "attempt to stream set cursor";
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Constant_Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Read;
- 
-    ---------------
-    -- Read_Node --
-    ---------------
- 
-    function Read_Node
-      (Stream : not null access Root_Stream_Type'Class) return Node_Access
-    is
-       X : Element_Access := new Element_Type'(Element_Type'Input (Stream));
-    begin
-       return new Node_Type'(X, null);
-    exception
-       when others =>
-          Free_Element (X);
-          raise;
-    end Read_Node;
- 
-    -------------
-    -- Replace --
-    -------------
- 
-    procedure Replace
-      (Container : in out Set;
-       New_Item  : Element_Type)
-    is
-       Node : constant Node_Access :=
-         Element_Keys.Find (Container.HT, New_Item);
- 
-       X : Element_Access;
-       pragma Warnings (Off, X);
- 
-    begin
-       if Checks and then Node = null then
-          raise Constraint_Error with
-            "attempt to replace element not in set";
-       end if;
- 
-       TE_Check (Container.HT.TC);
- 
-       X := Node.Element;
- 
-       declare
-          --  The element allocator may need an accessibility check in the case
-          --  the actual type is class-wide or has access discriminants (see
-          --  RM 4.8(10.1) and AI12-0035).
- 
-          pragma Unsuppress (Accessibility_Check);
- 
-       begin
-          Node.Element := new Element_Type'(New_Item);
-       end;
- 
-       Free_Element (X);
-    end Replace;
- 
-    ---------------------
-    -- Replace_Element --
-    ---------------------
- 
-    procedure Replace_Element
-      (Container : in out Set;
-       Position  : Cursor;
-       New_Item  : Element_Type)
-    is
-    begin
-       if Checks and then Position.Node = null then
-          raise Constraint_Error with "Position cursor equals No_Element";
-       end if;
- 
-       if Checks and then Position.Node.Element = null then
-          raise Program_Error with "bad cursor in Replace_Element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor designates wrong set";
-       end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in Replace_Element");
- 
-       Replace_Element (Container.HT, Position.Node, New_Item);
-    end Replace_Element;
- 
-    ----------------------
-    -- Reserve_Capacity --
-    ----------------------
- 
-    procedure Reserve_Capacity
-      (Container : in out Set;
-       Capacity  : Count_Type)
-    is
-    begin
-       HT_Ops.Reserve_Capacity (Container.HT, Capacity);
-    end Reserve_Capacity;
- 
-    --------------
-    -- Set_Next --
-    --------------
- 
-    procedure Set_Next (Node : Node_Access; Next : Node_Access) is
-    begin
-       Node.Next := Next;
-    end Set_Next;
- 
-    --------------------------
-    -- Symmetric_Difference --
-    --------------------------
- 
-    procedure Symmetric_Difference
-      (Target : in out Set;
-       Source : Set)
-    is
-       Tgt_HT : Hash_Table_Type renames Target.HT;
-       Src_HT : Hash_Table_Type renames Source.HT'Unrestricted_Access.all;
-    begin
-       if Target'Address = Source'Address then
-          Clear (Target);
-          return;
-       end if;
- 
-       TC_Check (Tgt_HT.TC);
- 
-       declare
-          N : constant Count_Type := Target.Length + Source.Length;
-       begin
-          if N > HT_Ops.Capacity (Tgt_HT) then
-             HT_Ops.Reserve_Capacity (Tgt_HT, N);
-          end if;
-       end;
- 
-       if Target.Length = 0 then
-          Iterate_Source_When_Empty_Target : declare
-             procedure Process (Src_Node : Node_Access);
- 
-             procedure Iterate is new HT_Ops.Generic_Iteration (Process);
- 
-             -------------
-             -- Process --
-             -------------
- 
-             procedure Process (Src_Node : Node_Access) is
-                E : Element_Type renames Src_Node.Element.all;
-                B : Buckets_Type renames Tgt_HT.Buckets.all;
-                J : constant Hash_Type := Hash (E) mod B'Length;
-                N : Count_Type renames Tgt_HT.Length;
- 
-             begin
-                declare
-                   X : Element_Access := new Element_Type'(E);
-                begin
-                   B (J) := new Node_Type'(X, B (J));
-                exception
-                   when others =>
-                      Free_Element (X);
-                      raise;
-                end;
- 
-                N := N + 1;
-             end Process;
- 
-             --  Per AI05-0022, the container implementation is required to
-             --  detect element tampering by a generic actual subprogram.
- 
-             Lock_Tgt : With_Lock (Tgt_HT.TC'Unrestricted_Access);
-             Lock_Src : With_Lock (Src_HT.TC'Unrestricted_Access);
- 
-          --  Start of processing for Iterate_Source_When_Empty_Target
- 
-          begin
-             Iterate (Src_HT);
-          end Iterate_Source_When_Empty_Target;
- 
-       else
-          Iterate_Source : declare
-             procedure Process (Src_Node : Node_Access);
- 
-             procedure Iterate is
-                new HT_Ops.Generic_Iteration (Process);
- 
-             -------------
-             -- Process --
-             -------------
- 
-             procedure Process (Src_Node : Node_Access) is
-                E : Element_Type renames Src_Node.Element.all;
-                B : Buckets_Type renames Tgt_HT.Buckets.all;
-                J : constant Hash_Type := Hash (E) mod B'Length;
-                N : Count_Type renames Tgt_HT.Length;
- 
-             begin
-                if B (J) = null then
-                   declare
-                      X : Element_Access := new Element_Type'(E);
-                   begin
-                      B (J) := new Node_Type'(X, null);
-                   exception
-                      when others =>
-                         Free_Element (X);
-                         raise;
-                   end;
- 
-                   N := N + 1;
- 
-                elsif Equivalent_Elements (E, B (J).Element.all) then
-                   declare
-                      X : Node_Access := B (J);
-                   begin
-                      B (J) := B (J).Next;
-                      N := N - 1;
-                      Free (X);
-                   end;
- 
-                else
-                   declare
-                      Prev : Node_Access := B (J);
-                      Curr : Node_Access := Prev.Next;
- 
-                   begin
-                      while Curr /= null loop
-                         if Equivalent_Elements (E, Curr.Element.all) then
-                            Prev.Next := Curr.Next;
-                            N := N - 1;
-                            Free (Curr);
-                            return;
-                         end if;
- 
-                         Prev := Curr;
-                         Curr := Prev.Next;
-                      end loop;
- 
-                      declare
-                         X : Element_Access := new Element_Type'(E);
-                      begin
-                         B (J) := new Node_Type'(X, B (J));
-                      exception
-                         when others =>
-                            Free_Element (X);
-                            raise;
-                      end;
- 
-                      N := N + 1;
-                   end;
-                end if;
-             end Process;
- 
-             --  Per AI05-0022, the container implementation is required to
-             --  detect element tampering by a generic actual subprogram.
- 
-             Lock_Tgt : With_Lock (Tgt_HT.TC'Unrestricted_Access);
-             Lock_Src : With_Lock (Src_HT.TC'Unrestricted_Access);
- 
-          --  Start of processing for Iterate_Source
- 
-          begin
-             Iterate (Src_HT);
-          end Iterate_Source;
-       end if;
-    end Symmetric_Difference;
- 
-    function Symmetric_Difference (Left, Right : Set) return Set is
-       Left_HT  : Hash_Table_Type renames Left'Unrestricted_Access.HT;
-       Right_HT : Hash_Table_Type renames Right'Unrestricted_Access.HT;
-       Buckets  : HT_Types.Buckets_Access;
-       Length   : Count_Type;
- 
-    begin
-       if Left'Address = Right'Address then
-          return Empty_Set;
-       end if;
- 
-       if Right.Length = 0 then
-          return Left;
-       end if;
- 
-       if Left.Length = 0 then
-          return Right;
-       end if;
- 
-       declare
-          Size : constant Hash_Type :=
-            Prime_Numbers.To_Prime (Left.Length + Right.Length);
-       begin
-          Buckets := HT_Ops.New_Buckets (Length => Size);
-       end;
- 
-       Length := 0;
- 
-       Iterate_Left : declare
-          procedure Process (L_Node : Node_Access);
- 
-          procedure Iterate is
-             new HT_Ops.Generic_Iteration (Process);
- 
-          -------------
-          -- Process --
-          -------------
- 
-          procedure Process (L_Node : Node_Access) is
-          begin
-             if not Is_In (Right_HT, L_Node) then
-                declare
-                   E : Element_Type renames L_Node.Element.all;
- 
-                   --  Per AI05-0022, the container implementation is required
-                   --  to detect element tampering by a generic actual
-                   --  subprogram, hence the use of Checked_Index instead of a
-                   --  simple invocation of generic formal Hash.
- 
-                   J : constant Hash_Type :=
-                     HT_Ops.Checked_Index (Left_HT, Buckets.all, L_Node);
- 
-                begin
-                   declare
-                      X : Element_Access := new Element_Type'(E);
-                   begin
-                      Buckets (J) := new Node_Type'(X, Buckets (J));
-                   exception
-                      when others =>
-                         Free_Element (X);
-                         raise;
-                   end;
- 
-                   Length := Length + 1;
-                end;
-             end if;
-          end Process;
- 
-       --  Start of processing for Iterate_Left
- 
-       begin
-          Iterate (Left_HT);
-       exception
-          when others =>
-             HT_Ops.Free_Hash_Table (Buckets);
-             raise;
-       end Iterate_Left;
- 
-       Iterate_Right : declare
-          procedure Process (R_Node : Node_Access);
- 
-          procedure Iterate is
-             new HT_Ops.Generic_Iteration (Process);
- 
-          -------------
-          -- Process --
-          -------------
- 
-          procedure Process (R_Node : Node_Access) is
-          begin
-             if not Is_In (Left_HT, R_Node) then
-                declare
-                   E : Element_Type renames R_Node.Element.all;
- 
-                   --  Per AI05-0022, the container implementation is required
-                   --  to detect element tampering by a generic actual
-                   --  subprogram, hence the use of Checked_Index instead of a
-                   --  simple invocation of generic formal Hash.
- 
-                   J : constant Hash_Type :=
-                     HT_Ops.Checked_Index (Right_HT, Buckets.all, R_Node);
- 
-                begin
-                   declare
-                      X : Element_Access := new Element_Type'(E);
-                   begin
-                      Buckets (J) := new Node_Type'(X, Buckets (J));
-                   exception
-                      when others =>
-                         Free_Element (X);
-                         raise;
-                   end;
- 
-                   Length := Length + 1;
-                end;
-             end if;
-          end Process;
- 
-       --  Start of processing for Iterate_Right
- 
-       begin
-          Iterate (Right_HT);
- 
-       exception
-          when others =>
-             HT_Ops.Free_Hash_Table (Buckets);
-             raise;
-       end Iterate_Right;
- 
-       return (Controlled with HT => (Buckets, Length, (Busy => 0, Lock => 0)));
-    end Symmetric_Difference;
- 
-    ------------
-    -- To_Set --
-    ------------
- 
-    function To_Set (New_Item : Element_Type) return Set is
-       HT       : Hash_Table_Type;
-       Node     : Node_Access;
-       Inserted : Boolean;
-       pragma Unreferenced (Node, Inserted);
-    begin
-       Insert (HT, New_Item, Node, Inserted);
-       return Set'(Controlled with HT);
-    end To_Set;
- 
-    -----------
-    -- Union --
-    -----------
- 
-    procedure Union
-      (Target : in out Set;
-       Source : Set)
-    is
-       procedure Process (Src_Node : Node_Access);
- 
-       procedure Iterate is
-          new HT_Ops.Generic_Iteration (Process);
- 
-       -------------
-       -- Process --
-       -------------
- 
-       procedure Process (Src_Node : Node_Access) is
-          Src : Element_Type renames Src_Node.Element.all;
- 
-          function New_Node (Next : Node_Access) return Node_Access;
-          pragma Inline (New_Node);
- 
-          procedure Insert is
-             new Element_Keys.Generic_Conditional_Insert (New_Node);
- 
-          --------------
-          -- New_Node --
-          --------------
- 
-          function New_Node (Next : Node_Access) return Node_Access is
-             Tgt : Element_Access := new Element_Type'(Src);
-          begin
-             return new Node_Type'(Tgt, Next);
-          exception
-             when others =>
-                Free_Element (Tgt);
-                raise;
-          end New_Node;
- 
-          Tgt_Node : Node_Access;
-          Success  : Boolean;
-          pragma Unreferenced (Tgt_Node, Success);
- 
-       --  Start of processing for Process
- 
-       begin
-          Insert (Target.HT, Src, Tgt_Node, Success);
-       end Process;
- 
-    --  Start of processing for Union
- 
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       TC_Check (Target.HT.TC);
- 
-       declare
-          N : constant Count_Type := Target.Length + Source.Length;
-       begin
-          if N > HT_Ops.Capacity (Target.HT) then
-             HT_Ops.Reserve_Capacity (Target.HT, N);
-          end if;
-       end;
- 
-       Iterate (Source.HT);
-    end Union;
- 
-    function Union (Left, Right : Set) return Set is
-       Left_HT  : Hash_Table_Type renames Left.HT'Unrestricted_Access.all;
-       Right_HT : Hash_Table_Type renames Right.HT'Unrestricted_Access.all;
-       Buckets  : HT_Types.Buckets_Access;
-       Length   : Count_Type;
- 
-    begin
-       if Left'Address = Right'Address then
-          return Left;
-       end if;
- 
-       if Right.Length = 0 then
-          return Left;
-       end if;
- 
-       if Left.Length = 0 then
-          return Right;
-       end if;
- 
-       declare
-          Size : constant Hash_Type :=
-            Prime_Numbers.To_Prime (Left.Length + Right.Length);
-       begin
-          Buckets := HT_Ops.New_Buckets (Length => Size);
-       end;
- 
-       Iterate_Left : declare
-          procedure Process (L_Node : Node_Access);
- 
-          procedure Iterate is
-             new HT_Ops.Generic_Iteration (Process);
- 
-          -------------
-          -- Process --
-          -------------
- 
-          procedure Process (L_Node : Node_Access) is
-             Src    : Element_Type renames L_Node.Element.all;
-             J      : constant Hash_Type := Hash (Src) mod Buckets'Length;
-             Bucket : Node_Access renames Buckets (J);
-             Tgt    : Element_Access := new Element_Type'(Src);
-          begin
-             Bucket := new Node_Type'(Tgt, Bucket);
-          exception
-             when others =>
-                Free_Element (Tgt);
-                raise;
-          end Process;
- 
-          --  Per AI05-0022, the container implementation is required to detect
-          --  element tampering by a generic actual subprogram, hence the use of
-          --  Checked_Index instead of a simple invocation of generic formal
-          --  Hash.
- 
-          Lock_Left : With_Lock (Left_HT.TC'Unrestricted_Access);
- 
-       --  Start of processing for Iterate_Left
- 
-       begin
-          Iterate (Left_HT);
-       exception
-          when others =>
-             HT_Ops.Free_Hash_Table (Buckets);
-             raise;
-       end Iterate_Left;
- 
-       Length := Left.Length;
- 
-       Iterate_Right : declare
-          procedure Process (Src_Node : Node_Access);
- 
-          procedure Iterate is
-             new HT_Ops.Generic_Iteration (Process);
- 
-          -------------
-          -- Process --
-          -------------
- 
-          procedure Process (Src_Node : Node_Access) is
-             Src : Element_Type renames Src_Node.Element.all;
-             Idx : constant Hash_Type := Hash (Src) mod Buckets'Length;
- 
-             Tgt_Node : Node_Access := Buckets (Idx);
- 
-          begin
-             while Tgt_Node /= null loop
-                if Equivalent_Elements (Src, Tgt_Node.Element.all) then
-                   return;
-                end if;
-                Tgt_Node := Next (Tgt_Node);
-             end loop;
- 
-             declare
-                Tgt : Element_Access := new Element_Type'(Src);
-             begin
-                Buckets (Idx) := new Node_Type'(Tgt, Buckets (Idx));
-             exception
-                when others =>
-                   Free_Element (Tgt);
-                   raise;
-             end;
- 
-             Length := Length + 1;
-          end Process;
- 
-          --  Per AI05-0022, the container implementation is required to detect
-          --  element tampering by a generic actual subprogram, hence the use of
-          --  Checked_Index instead of a simple invocation of generic formal
-          --  Hash.
- 
-          Lock_Left : With_Lock (Left_HT.TC'Unrestricted_Access);
-          Lock_Right : With_Lock (Right_HT.TC'Unrestricted_Access);
- 
-       --  Start of processing for Iterate_Right
- 
-       begin
-          Iterate (Right.HT);
-       exception
-          when others =>
-             HT_Ops.Free_Hash_Table (Buckets);
-             raise;
-       end Iterate_Right;
- 
-       return (Controlled with HT => (Buckets, Length, (Busy => 0, Lock => 0)));
-    end Union;
- 
-    ---------
-    -- Vet --
-    ---------
- 
-    function Vet (Position : Cursor) return Boolean is
-    begin
-       if Position.Node = null then
-          return Position.Container = null;
-       end if;
- 
-       if Position.Container = null then
-          return False;
-       end if;
- 
-       if Position.Node.Next = Position.Node then
-          return False;
-       end if;
- 
-       if Position.Node.Element = null then
-          return False;
-       end if;
- 
-       declare
-          HT : Hash_Table_Type renames Position.Container.HT;
-          X  : Node_Access;
- 
-       begin
-          if HT.Length = 0 then
-             return False;
-          end if;
- 
-          if HT.Buckets = null
-            or else HT.Buckets'Length = 0
-          then
-             return False;
-          end if;
- 
-          X := HT.Buckets (Element_Keys.Checked_Index
-                             (HT,
-                              Position.Node.Element.all));
- 
-          for J in 1 .. HT.Length loop
-             if X = Position.Node then
-                return True;
-             end if;
- 
-             if X = null then
-                return False;
-             end if;
- 
-             if X = X.Next then  --  to prevent unnecessary looping
-                return False;
-             end if;
- 
-             X := X.Next;
-          end loop;
- 
-          return False;
-       end;
-    end Vet;
- 
-    -----------
-    -- Write --
-    -----------
- 
-    procedure Write
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : Set)
-    is
-    begin
-       Write_Nodes (Stream, Container.HT);
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Cursor)
-    is
-    begin
-       raise Program_Error with "attempt to stream set cursor";
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Constant_Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Write;
- 
-    ----------------
-    -- Write_Node --
-    ----------------
- 
-    procedure Write_Node
-      (Stream : not null access Root_Stream_Type'Class;
-       Node   : Node_Access)
-    is
-    begin
-       Element_Type'Output (Stream, Node.Element.all);
-    end Write_Node;
- 
-    package body Generic_Keys is
- 
-       -----------------------
-       -- Local Subprograms --
-       -----------------------
- 
-       function Equivalent_Key_Node
-         (Key  : Key_Type;
-          Node : Node_Access) return Boolean;
-       pragma Inline (Equivalent_Key_Node);
- 
-       --------------------------
-       -- Local Instantiations --
-       --------------------------
- 
-       package Key_Keys is
-          new Hash_Tables.Generic_Keys
-           (HT_Types  => HT_Types,
-            Next      => Next,
-            Set_Next  => Set_Next,
-            Key_Type  => Key_Type,
-            Hash      => Hash,
-            Equivalent_Keys => Equivalent_Key_Node);
- 
-       ------------------------
-       -- Constant_Reference --
-       ------------------------
- 
-       function Constant_Reference
-         (Container : aliased Set;
-          Key       : Key_Type) return Constant_Reference_Type
-       is
-          HT   : Hash_Table_Type renames Container'Unrestricted_Access.HT;
-          Node : constant Node_Access := Key_Keys.Find (HT, Key);
- 
-       begin
-          if Checks and then Node = null then
-             raise Constraint_Error with "Key not in set";
-          end if;
- 
-          if Checks and then Node.Element = null then
-             raise Program_Error with "Node has no element";
-          end if;
- 
-          declare
-             TC : constant Tamper_Counts_Access :=
-               HT.TC'Unrestricted_Access;
-          begin
-             return R : constant Constant_Reference_Type :=
-               (Element => Node.Element.all'Access,
-                Control => (Controlled with TC))
-             do
-                Lock (TC.all);
-             end return;
-          end;
-       end Constant_Reference;
- 
-       --------------
-       -- 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 : Node_Access;
- 
-       begin
-          Key_Keys.Delete_Key_Sans_Free (Container.HT, Key, X);
- 
-          if Checks and then X = null then
-             raise Constraint_Error with "key not in set";
-          end if;
- 
-          Free (X);
-       end Delete;
- 
-       -------------
-       -- Element --
-       -------------
- 
-       function Element
-         (Container : Set;
-          Key       : Key_Type) return Element_Type
-       is
-          HT   : Hash_Table_Type renames Container'Unrestricted_Access.HT;
-          Node : constant Node_Access := Key_Keys.Find (HT, Key);
- 
-       begin
-          if Checks and then Node = null then
-             raise Constraint_Error with "key not in set";
-          end if;
- 
-          return Node.Element.all;
-       end Element;
- 
-       -------------------------
-       -- Equivalent_Key_Node --
-       -------------------------
- 
-       function Equivalent_Key_Node
-         (Key  : Key_Type;
-          Node : Node_Access) return Boolean is
-       begin
-          return Equivalent_Keys (Key, Generic_Keys.Key (Node.Element.all));
-       end Equivalent_Key_Node;
- 
-       -------------
-       -- Exclude --
-       -------------
- 
-       procedure Exclude
-         (Container : in out Set;
-          Key       : Key_Type)
-       is
-          X : Node_Access;
-       begin
-          Key_Keys.Delete_Key_Sans_Free (Container.HT, Key, X);
-          Free (X);
-       end Exclude;
- 
-       --------------
-       -- Finalize --
-       --------------
- 
-       procedure Finalize (Control : in out Reference_Control_Type) is
-       begin
-          if Control.Container /= null then
-             Impl.Reference_Control_Type (Control).Finalize;
- 
-             if Checks and then Hash (Key (Control.Old_Pos)) /= Control.Old_Hash
-             then
-                HT_Ops.Delete_Node_At_Index
-                  (Control.Container.HT, Control.Index, Control.Old_Pos.Node);
-                raise Program_Error;
-             end if;
- 
-             Control.Container := null;
-          end if;
-       end Finalize;
- 
-       ----------
-       -- Find --
-       ----------
- 
-       function Find
-         (Container : Set;
-          Key       : Key_Type) return Cursor
-       is
-          HT   : Hash_Table_Type renames Container'Unrestricted_Access.HT;
-          Node : constant Node_Access := Key_Keys.Find (HT, Key);
-       begin
-          return (if Node = null then No_Element
-                  else Cursor'(Container'Unrestricted_Access, Node));
-       end Find;
- 
-       ---------
-       -- Key --
-       ---------
- 
-       function Key (Position : Cursor) return Key_Type is
-       begin
-          if Checks and then Position.Node = null then
-             raise Constraint_Error with
-               "Position cursor equals No_Element";
-          end if;
- 
-          if Checks and then Position.Node.Element = null then
-             raise Program_Error with "Position cursor is bad";
-          end if;
- 
-          pragma Assert (Vet (Position), "bad cursor in function Key");
- 
-          return Key (Position.Node.Element.all);
-       end Key;
- 
-       ----------
-       -- Read --
-       ----------
- 
-       procedure Read
-         (Stream : not null access Root_Stream_Type'Class;
-          Item   : out Reference_Type)
-       is
-       begin
-          raise Program_Error with "attempt to stream reference";
-       end Read;
- 
-       ------------------------------
-       -- Reference_Preserving_Key --
-       ------------------------------
- 
-       function Reference_Preserving_Key
-         (Container : aliased in out Set;
-          Position  : Cursor) return Reference_Type
-       is
-       begin
-          if Checks and then Position.Container = null then
-             raise Constraint_Error with "Position cursor has no element";
-          end if;
- 
-          if Checks and then Position.Container /= Container'Unrestricted_Access
-          then
-             raise Program_Error with
-               "Position cursor designates wrong container";
-          end if;
- 
-          if Checks and then Position.Node.Element = null then
-             raise Program_Error with "Node has no element";
-          end if;
- 
-          pragma Assert
-            (Vet (Position),
-             "bad cursor in function Reference_Preserving_Key");
- 
-          declare
-             HT : Hash_Table_Type renames Container.HT;
-          begin
-             return R : constant Reference_Type :=
-                          (Element => Position.Node.Element.all'Access,
-                           Control =>
-                             (Controlled with
-                               HT.TC'Unrestricted_Access,
-                               Container => Container'Access,
-                               Index     => HT_Ops.Index (HT, Position.Node),
-                               Old_Pos   => Position,
-                               Old_Hash  => Hash (Key (Position))))
-             do
-                Lock (HT.TC);
-             end return;
-          end;
-       end Reference_Preserving_Key;
- 
-       function Reference_Preserving_Key
-         (Container : aliased in out Set;
-          Key       : Key_Type) return Reference_Type
-       is
-          Node : constant Node_Access := Key_Keys.Find (Container.HT, Key);
- 
-       begin
-          if Checks and then Node = null then
-             raise Constraint_Error with "Key not in set";
-          end if;
- 
-          if Checks and then Node.Element = null then
-             raise Program_Error with "Node has no element";
-          end if;
- 
-          declare
-             HT : Hash_Table_Type renames Container.HT;
-             P  : constant Cursor := Find (Container, Key);
-          begin
-             return R : constant Reference_Type :=
-                          (Element => Node.Element.all'Access,
-                           Control =>
-                             (Controlled with
-                               HT.TC'Unrestricted_Access,
-                               Container => Container'Access,
-                               Index     => HT_Ops.Index (HT, P.Node),
-                               Old_Pos   => P,
-                               Old_Hash  => Hash (Key)))
-             do
-                Lock (HT.TC);
-             end return;
-          end;
-       end Reference_Preserving_Key;
- 
-       -------------
-       -- Replace --
-       -------------
- 
-       procedure Replace
-         (Container : in out Set;
-          Key       : Key_Type;
-          New_Item  : Element_Type)
-       is
-          Node : constant Node_Access := Key_Keys.Find (Container.HT, Key);
- 
-       begin
-          if Checks and then Node = null then
-             raise Constraint_Error with
-               "attempt to replace key not in set";
-          end if;
- 
-          Replace_Element (Container.HT, Node, New_Item);
-       end Replace;
- 
-       -----------------------------------
-       -- Update_Element_Preserving_Key --
-       -----------------------------------
- 
-       procedure Update_Element_Preserving_Key
-         (Container : in out Set;
-          Position  : Cursor;
-          Process   : not null access
-            procedure (Element : in out Element_Type))
-       is
-          HT   : Hash_Table_Type renames Container.HT;
-          Indx : Hash_Type;
- 
-       begin
-          if Checks and then Position.Node = null then
-             raise Constraint_Error with
-               "Position cursor equals No_Element";
-          end if;
- 
-          if Checks and then
-            (Position.Node.Element = null
-               or else Position.Node.Next = Position.Node)
-          then
-             raise Program_Error with "Position cursor is bad";
-          end if;
- 
-          if Checks and then Position.Container /= Container'Unrestricted_Access
-          then
-             raise Program_Error with
-               "Position cursor designates wrong set";
-          end if;
- 
-          if Checks and then
-            (HT.Buckets = null
-               or else HT.Buckets'Length = 0
-               or else HT.Length = 0)
-          then
-             raise Program_Error with "Position cursor is bad (set is empty)";
-          end if;
- 
-          pragma Assert
-            (Vet (Position),
-             "bad cursor in Update_Element_Preserving_Key");
- 
-          --  Per AI05-0022, the container implementation is required to detect
-          --  element tampering by a generic actual subprogram.
- 
-          declare
-             E : Element_Type renames Position.Node.Element.all;
-             K : constant Key_Type := Key (E);
-             Lock : With_Lock (HT.TC'Unrestricted_Access);
-          begin
-             Indx := HT_Ops.Index (HT, Position.Node);
-             Process (E);
- 
-             if Equivalent_Keys (K, Key (E)) then
-                return;
-             end if;
-          end;
- 
-          if HT.Buckets (Indx) = Position.Node then
-             HT.Buckets (Indx) := Position.Node.Next;
- 
-          else
-             declare
-                Prev : Node_Access := HT.Buckets (Indx);
- 
-             begin
-                while Prev.Next /= Position.Node loop
-                   Prev := Prev.Next;
- 
-                   if Checks and then Prev = null then
-                      raise Program_Error with
-                        "Position cursor is bad (node not found)";
-                   end if;
-                end loop;
- 
-                Prev.Next := Position.Node.Next;
-             end;
-          end if;
- 
-          HT.Length := HT.Length - 1;
- 
-          declare
-             X : Node_Access := Position.Node;
- 
-          begin
-             Free (X);
-          end;
- 
-          raise Program_Error with "key was modified";
-       end Update_Element_Preserving_Key;
- 
-       -----------
-       -- Write --
-       -----------
- 
-       procedure Write
-         (Stream : not null access Root_Stream_Type'Class;
-          Item   : Reference_Type)
-       is
-       begin
-          raise Program_Error with "attempt to stream reference";
-       end Write;
- 
-    end Generic_Keys;
- 
- end Ada.Containers.Indefinite_Hashed_Sets;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cihase.ads gcc-8.1.0/gcc/ada/a-cihase.ads
*** gcc-7.3.0/gcc/ada/a-cihase.ads	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-cihase.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,595 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                  ADA.CONTAINERS.INDEFINITE_HASHED_SETS                   --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, 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/>.                                          --
- --                                                                          --
- -- This unit was originally developed by Matthew J Heaney.                  --
- ------------------------------------------------------------------------------
- 
- with Ada.Iterator_Interfaces;
- 
- private with Ada.Containers.Hash_Tables;
- with Ada.Containers.Helpers;
- private with Ada.Streams;
- private with Ada.Finalization;
- 
- generic
-    type Element_Type (<>) is private;
- 
-    with function Hash (Element : Element_Type) return Hash_Type;
- 
-    with function Equivalent_Elements (Left, Right : Element_Type)
-                                      return Boolean;
- 
-    with function "=" (Left, Right : Element_Type) return Boolean is <>;
- 
- package Ada.Containers.Indefinite_Hashed_Sets is
-    pragma Annotate (CodePeer, Skip_Analysis);
-    pragma Preelaborate;
-    pragma Remote_Types;
- 
-    type Set is tagged private
-      with Constant_Indexing => Constant_Reference,
-           Default_Iterator  => Iterate,
-           Iterator_Element  => Element_Type;
- 
-    pragma Preelaborable_Initialization (Set);
- 
-    type Cursor is private;
-    pragma Preelaborable_Initialization (Cursor);
- 
-    Empty_Set : constant Set;
-    --  Set objects declared without an initialization expression are
-    --  initialized to the value Empty_Set.
- 
-    No_Element : constant Cursor;
-    --  Cursor objects declared without an initialization expression are
-    --  initialized to the value No_Element.
- 
-    function Has_Element (Position : Cursor) return Boolean;
-    --  Equivalent to Position /= No_Element
- 
-    package Set_Iterator_Interfaces is new
-      Ada.Iterator_Interfaces (Cursor, Has_Element);
- 
-    function "=" (Left, Right : Set) return Boolean;
-    --  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;
-    --  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;
-    --  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;
-    --  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);
-    --  Adjusts the current capacity, by allocating a new buckets array. If the
-    --  requested capacity is less than the current capacity, then the capacity
-    --  is contracted (to a value not less than the current length). If the
-    --  requested capacity is greater than the current capacity, then the
-    --  capacity is expanded (to a value not less than what is requested). In
-    --  either case, the nodes are rehashed from the old buckets array onto the
-    --  new buckets array (Hash is called once for each existing element in
-    --  order to compute the new index), and then the old buckets array is
-    --  deallocated.
- 
-    function Length (Container : Set) return Count_Type;
-    --  Returns the number of items in the set
- 
-    function Is_Empty (Container : Set) return Boolean;
-    --  Equivalent to Length (Container) = 0
- 
-    procedure Clear (Container : in out Set);
-    --  Removes all of the items from the set
- 
-    function Element (Position : Cursor) return Element_Type;
-    --  Returns the element of the node designated by the cursor
- 
-    procedure Replace_Element
-      (Container : in out Set;
-       Position  : Cursor;
-       New_Item  : Element_Type);
-    --  If New_Item is equivalent (as determined by calling Equivalent_Elements)
-    --  to the element of the node designated by Position, then New_Element is
-    --  assigned to that element. Otherwise, it calls Hash to determine the
-    --  bucket for New_Item. If the bucket is not empty, then it calls
-    --  Equivalent_Elements for each node in that bucket to determine whether
-    --  New_Item is equivalent to an element in that bucket. If
-    --  Equivalent_Elements returns True then Program_Error is raised (because
-    --  an element may appear only once in the set); otherwise, New_Item is
-    --  assigned to the node designated by Position, and the node is moved to
-    --  its new bucket.
- 
-    procedure Query_Element
-      (Position : Cursor;
-       Process  : not null access procedure (Element : Element_Type));
-    --  Calls Process with the element (having only a constant view) of the node
-    --  designated by the cursor.
- 
-    type Constant_Reference_Type
-      (Element : not null access constant Element_Type) is private
-         with Implicit_Dereference => Element;
- 
-    function Constant_Reference
-      (Container : aliased Set;
-       Position  : Cursor) return Constant_Reference_Type;
-    pragma Inline (Constant_Reference);
- 
-    procedure Assign (Target : in out Set; Source : Set);
- 
-    function Copy (Source : Set; Capacity : Count_Type := 0) return Set;
- 
-    procedure Move (Target : in out Set; Source : in out Set);
-    --  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);
-    --  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);
-    --  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);
-    --  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);
-    --  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);
-    --  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);
-    --  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);
-    --  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);
-    --  The operation first calls Reserve_Capacity if the current capacity is
-    --  less than the sum of the lengths of Source and Target. It then iterates
-    --  over the Source set, and conditionally inserts each element into Target.
- 
-    function Union (Left, Right : Set) return Set;
-    --  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);
-    --  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;
-    --  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);
-    --  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;
-    --  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);
-    --  The operation first calls Reserve_Capacity if the current capacity is
-    --  less than the sum of the lengths of Source and Target. It then 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;
-    --  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;
-    --  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;
-    --  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;
-    --  Returns a cursor that designates the first non-empty bucket, by
-    --  searching from the beginning of the buckets array.
- 
-    function Next (Position : Cursor) return Cursor;
-    --  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 (Position : in out Cursor);
-    --  Equivalent to Position := Next (Position)
- 
-    function Find (Container : Set; Item : Element_Type) return Cursor;
-    --  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;
-    --  Equivalent to Find (Container, Item) /= No_Element
- 
-    function Equivalent_Elements (Left, Right : Cursor) return Boolean;
-    --  Returns the result of calling Equivalent_Elements with the elements of
-    --  the nodes designated by cursors Left and Right.
- 
-    function Equivalent_Elements
-      (Left  : Cursor;
-       Right : Element_Type) return Boolean;
-    --  Returns the result of calling Equivalent_Elements with element of the
-    --  node designated by Left and element Right.
- 
-    function Equivalent_Elements
-      (Left  : Element_Type;
-       Right : Cursor) return Boolean;
-    --  Returns the result of calling Equivalent_Elements with element Left and
-    --  the element of the node designated by Right.
- 
-    procedure Iterate
-      (Container : Set;
-       Process   : not null access procedure (Position : Cursor));
-    --  Calls Process for each node in the set
- 
-    function Iterate (Container : Set)
-      return Set_Iterator_Interfaces.Forward_Iterator'Class;
- 
-    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 is
- 
-       function Key (Position : Cursor) return Key_Type;
-       --  Applies generic formal operation Key to the element of the node
-       --  designated by 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.
- 
-       procedure Replace
-         (Container : in out Set;
-          Key       : Key_Type;
-          New_Item  : Element_Type);
-       --  Searches (as per the key-based Find) for the node containing Key, and
-       --  then replaces the element of that node (as per the element-based
-       --  Replace_Element).
- 
-       procedure Exclude (Container : in out Set; Key : Key_Type);
-       --  Searches for Key in the set, and if found, removes its node from the
-       --  set and then deallocates it. The search works by first calling Hash
-       --  (on Key) to determine the bucket; if the bucket is not empty, it
-       --  calls Equivalent_Keys to compare parameter Key to the value of
-       --  generic formal operation Key applied to element of each node in the
-       --  bucket.
- 
-       procedure Delete (Container : in out Set; Key : Key_Type);
-       --  Deletes the node containing Key as per Exclude, with the difference
-       --  that Constraint_Error is raised if Key is not found.
- 
-       function Find (Container : Set; Key : Key_Type) return Cursor;
-       --  Searches for the node containing Key, and returns a cursor
-       --  designating the node. The search works by first calling Hash (on Key)
-       --  to determine the bucket. If the bucket is not empty, the search
-       --  compares Key to the element of each node in the bucket, and returns
-       --  the matching node. The comparison itself works by applying the
-       --  generic formal Key operation to the element of the node, and then
-       --  calling generic formal operation Equivalent_Keys.
- 
-       function Contains (Container : Set; Key : Key_Type) return Boolean;
-       --  Equivalent to Find (Container, Key) /= No_Element
- 
-       procedure Update_Element_Preserving_Key
-         (Container : in out Set;
-          Position  : Cursor;
-          Process   : not null access
-                        procedure (Element : in out Element_Type));
-       --  Calls Process with the element of the node designated by Position,
-       --  but with the restriction that the key-value of the element is not
-       --  modified. The operation first makes a copy of the value returned by
-       --  applying generic formal operation Key on the element of the node, and
-       --  then calls Process with the element. The operation verifies that the
-       --  key-part has not been modified by calling generic formal operation
-       --  Equivalent_Keys to compare the saved key-value to the value returned
-       --  by applying generic formal operation Key to the post-Process value of
-       --  element. If the key values compare equal then the operation
-       --  completes. Otherwise, the node is removed from the map and
-       --  Program_Error is raised.
- 
-       type Reference_Type (Element : not null access Element_Type) is private
-         with Implicit_Dereference => Element;
- 
-       function Reference_Preserving_Key
-         (Container : aliased in out Set;
-          Position  : Cursor) return Reference_Type;
- 
-       function Constant_Reference
-         (Container : aliased Set;
-          Key       : Key_Type) return Constant_Reference_Type;
- 
-       function Reference_Preserving_Key
-         (Container : aliased in out Set;
-          Key       : Key_Type) return Reference_Type;
- 
-    private
-       type Set_Access is access all Set;
-       for Set_Access'Storage_Size use 0;
- 
-       package Impl is new Helpers.Generic_Implementation;
- 
-       type Reference_Control_Type is
-         new Impl.Reference_Control_Type with
-       record
-          Container : Set_Access;
-          Index     : Hash_Type;
-          Old_Pos   : Cursor;
-          Old_Hash  : Hash_Type;
-       end record;
- 
-       overriding procedure Finalize (Control : in out Reference_Control_Type);
-       pragma Inline (Finalize);
- 
-       type Reference_Type (Element : not null access Element_Type) is record
-          Control : Reference_Control_Type :=
-            raise Program_Error with "uninitialized reference";
-          --  The RM says, "The default initialization of an object of
-          --  type Constant_Reference_Type or Reference_Type propagates
-          --  Program_Error."
-       end record;
- 
-       use Ada.Streams;
- 
-       procedure Read
-         (Stream : not null access Root_Stream_Type'Class;
-          Item   : out Reference_Type);
- 
-       for Reference_Type'Read use Read;
- 
-       procedure Write
-         (Stream : not null access Root_Stream_Type'Class;
-          Item   : Reference_Type);
- 
-       for Reference_Type'Write use Write;
-    end Generic_Keys;
- 
- private
-    pragma Inline (Next);
- 
-    type Node_Type;
-    type Node_Access is access Node_Type;
- 
-    type Element_Access is access all Element_Type;
- 
-    type Node_Type is limited record
-       Element : Element_Access;
-       Next    : Node_Access;
-    end record;
- 
-    package HT_Types is
-      new Hash_Tables.Generic_Hash_Table_Types (Node_Type, Node_Access);
- 
-    type Set is new Ada.Finalization.Controlled with record
-       HT : HT_Types.Hash_Table_Type;
-    end record;
- 
-    overriding procedure Adjust (Container : in out Set);
- 
-    overriding procedure Finalize (Container : in out Set);
- 
-    use HT_Types, HT_Types.Implementation;
-    use Ada.Finalization;
-    use Ada.Streams;
- 
-    procedure Write
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : Set);
- 
-    for Set'Write use Write;
- 
-    procedure Read
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : out Set);
- 
-    for Set'Read use Read;
- 
-    type Set_Access is access all Set;
-    for Set_Access'Storage_Size use 0;
- 
-    type Cursor is record
-       Container : Set_Access;
-       Node      : Node_Access;
-    end record;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Cursor);
- 
-    for Cursor'Write use Write;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Cursor);
- 
-    for Cursor'Read use Read;
- 
-    subtype Reference_Control_Type is Implementation.Reference_Control_Type;
-    --  It is necessary to rename this here, so that the compiler can find it
- 
-    type Constant_Reference_Type
-      (Element : not null access constant Element_Type) is
-       record
-          Control : Reference_Control_Type :=
-            raise Program_Error with "uninitialized reference";
-          --  The RM says, "The default initialization of an object of
-          --  type Constant_Reference_Type or Reference_Type propagates
-          --  Program_Error."
-       end record;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Constant_Reference_Type);
- 
-    for Constant_Reference_Type'Read use Read;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Constant_Reference_Type);
- 
-    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;
-    pragma Inline (Pseudo_Reference);
-    --  Creates an object of type Reference_Control_Type pointing to the
-    --  container, and increments the Lock. Finalization of this object will
-    --  decrement the Lock.
- 
-    function Get_Element_Access
-      (Position : Cursor) return not null Element_Access;
-    --  Returns a pointer to the element designated by Position.
- 
-    Empty_Set : constant Set := (Controlled with others => <>);
- 
-    No_Element : constant Cursor := (Container => null, Node => null);
- 
-    type Iterator is new Limited_Controlled and
-      Set_Iterator_Interfaces.Forward_Iterator with
-    record
-       Container : Set_Access;
-    end record
-      with Disable_Controlled => not T_Check;
- 
-    overriding procedure Finalize (Object : in out Iterator);
- 
-    overriding function First (Object : Iterator) return Cursor;
- 
-    overriding function Next
-      (Object   : Iterator;
-       Position : Cursor) return Cursor;
- 
- end Ada.Containers.Indefinite_Hashed_Sets;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cimutr.adb gcc-8.1.0/gcc/ada/a-cimutr.adb
*** gcc-7.3.0/gcc/ada/a-cimutr.adb	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-cimutr.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,2698 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                   ADA.CONTAINERS.INDEFINITE_MULTIWAY_TREES               --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 Ada.Unchecked_Deallocation;
- 
- with System; use type System.Address;
- 
- package body Ada.Containers.Indefinite_Multiway_Trees is
- 
-    pragma Warnings (Off, "variable ""Busy*"" is not referenced");
-    pragma Warnings (Off, "variable ""Lock*"" is not referenced");
-    --  See comment in Ada.Containers.Helpers
- 
-    --------------------
-    --  Root_Iterator --
-    --------------------
- 
-    type Root_Iterator is abstract new Limited_Controlled and
-      Tree_Iterator_Interfaces.Forward_Iterator with
-    record
-       Container : Tree_Access;
-       Subtree   : Tree_Node_Access;
-    end record;
- 
-    overriding procedure Finalize (Object : in out Root_Iterator);
- 
-    -----------------------
-    --  Subtree_Iterator --
-    -----------------------
- 
-    type Subtree_Iterator is new Root_Iterator with null record;
- 
-    overriding function First (Object : Subtree_Iterator) return Cursor;
- 
-    overriding function Next
-      (Object   : Subtree_Iterator;
-       Position : Cursor) return Cursor;
- 
-    ---------------------
-    --  Child_Iterator --
-    ---------------------
- 
-    type Child_Iterator is new Root_Iterator and
-      Tree_Iterator_Interfaces.Reversible_Iterator with null record;
- 
-    overriding function First (Object : Child_Iterator) return Cursor;
- 
-    overriding function Next
-      (Object   : Child_Iterator;
-       Position : Cursor) return Cursor;
- 
-    overriding function Last (Object : Child_Iterator) return Cursor;
- 
-    overriding function Previous
-      (Object   : Child_Iterator;
-       Position : Cursor) return Cursor;
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    function Root_Node (Container : Tree) return Tree_Node_Access;
- 
-    procedure Free_Element is
-       new Ada.Unchecked_Deallocation (Element_Type, Element_Access);
- 
-    procedure Deallocate_Node (X : in out Tree_Node_Access);
- 
-    procedure Deallocate_Children
-      (Subtree : Tree_Node_Access;
-       Count   : in out Count_Type);
- 
-    procedure Deallocate_Subtree
-      (Subtree : in out Tree_Node_Access;
-       Count   : in out Count_Type);
- 
-    function Equal_Children
-      (Left_Subtree, Right_Subtree : Tree_Node_Access) return Boolean;
- 
-    function Equal_Subtree
-      (Left_Subtree, Right_Subtree : Tree_Node_Access) return Boolean;
- 
-    procedure Iterate_Children
-      (Container : Tree_Access;
-       Subtree   : Tree_Node_Access;
-       Process   : not null access procedure (Position : Cursor));
- 
-    procedure Iterate_Subtree
-      (Container : Tree_Access;
-       Subtree   : Tree_Node_Access;
-       Process   : not null access procedure (Position : Cursor));
- 
-    procedure Copy_Children
-      (Source : Children_Type;
-       Parent : Tree_Node_Access;
-       Count  : in out Count_Type);
- 
-    procedure Copy_Subtree
-      (Source : Tree_Node_Access;
-       Parent : Tree_Node_Access;
-       Target : out Tree_Node_Access;
-       Count  : in out Count_Type);
- 
-    function Find_In_Children
-      (Subtree : Tree_Node_Access;
-       Item    : Element_Type) return Tree_Node_Access;
- 
-    function Find_In_Subtree
-      (Subtree : Tree_Node_Access;
-       Item    : Element_Type) return Tree_Node_Access;
- 
-    function Child_Count (Children : Children_Type) return Count_Type;
- 
-    function Subtree_Node_Count
-      (Subtree : Tree_Node_Access) return Count_Type;
- 
-    function Is_Reachable (From, To : Tree_Node_Access) return Boolean;
- 
-    procedure Remove_Subtree (Subtree : Tree_Node_Access);
- 
-    procedure Insert_Subtree_Node
-      (Subtree : Tree_Node_Access;
-       Parent  : Tree_Node_Access;
-       Before  : Tree_Node_Access);
- 
-    procedure Insert_Subtree_List
-      (First  : Tree_Node_Access;
-       Last   : Tree_Node_Access;
-       Parent : Tree_Node_Access;
-       Before : Tree_Node_Access);
- 
-    procedure Splice_Children
-      (Target_Parent : Tree_Node_Access;
-       Before        : Tree_Node_Access;
-       Source_Parent : Tree_Node_Access);
- 
-    ---------
-    -- "=" --
-    ---------
- 
-    function "=" (Left, Right : Tree) return Boolean is
-    begin
-       return Equal_Children (Root_Node (Left), Root_Node (Right));
-    end "=";
- 
-    ------------
-    -- Adjust --
-    ------------
- 
-    procedure Adjust (Container : in out Tree) is
-       Source       : constant Children_Type := Container.Root.Children;
-       Source_Count : constant Count_Type := Container.Count;
-       Target_Count : Count_Type;
- 
-    begin
-       --  We first restore the target container to its default-initialized
-       --  state, before we attempt any allocation, to ensure that invariants
-       --  are preserved in the event that the allocation fails.
- 
-       Container.Root.Children := Children_Type'(others => null);
-       Zero_Counts (Container.TC);
-       Container.Count := 0;
- 
-       --  Copy_Children returns a count of the number of nodes that it
-       --  allocates, but it works by incrementing the value that is passed in.
-       --  We must therefore initialize the count value before calling
-       --  Copy_Children.
- 
-       Target_Count := 0;
- 
-       --  Now we attempt the allocation of subtrees. The invariants are
-       --  satisfied even if the allocation fails.
- 
-       Copy_Children (Source, Root_Node (Container), Target_Count);
-       pragma Assert (Target_Count = Source_Count);
- 
-       Container.Count := Source_Count;
-    end Adjust;
- 
-    -------------------
-    -- Ancestor_Find --
-    -------------------
- 
-    function Ancestor_Find
-      (Position : Cursor;
-       Item     : Element_Type) return Cursor
-    is
-       R, N : Tree_Node_Access;
- 
-    begin
-       if Checks and then Position = No_Element then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       --  Commented-out pending ARG ruling.  ???
- 
-       --  if Checks and then
-       --     Position.Container /= Container'Unrestricted_Access
-       --  then
-       --     raise Program_Error with "Position cursor not in container";
-       --  end if;
- 
-       --  AI-0136 says to raise PE if Position equals the root node. This does
-       --  not seem correct, as this value is just the limiting condition of the
-       --  search. For now we omit this check pending a ruling from the ARG.???
- 
-       --  if Checks and then Is_Root (Position) then
-       --     raise Program_Error with "Position cursor designates root";
-       --  end if;
- 
-       R := Root_Node (Position.Container.all);
-       N := Position.Node;
-       while N /= R loop
-          if N.Element.all = Item then
-             return Cursor'(Position.Container, N);
-          end if;
- 
-          N := N.Parent;
-       end loop;
- 
-       return No_Element;
-    end Ancestor_Find;
- 
-    ------------------
-    -- Append_Child --
-    ------------------
- 
-    procedure Append_Child
-      (Container : in out Tree;
-       Parent    : Cursor;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1)
-    is
-       First, Last : Tree_Node_Access;
-       Element     : Element_Access;
- 
-    begin
-       if Checks and then Parent = No_Element then
-          raise Constraint_Error with "Parent cursor has no element";
-       end if;
- 
-       if Checks and then Parent.Container /= Container'Unrestricted_Access then
-          raise Program_Error with "Parent cursor not in container";
-       end if;
- 
-       if Count = 0 then
-          return;
-       end if;
- 
-       TC_Check (Container.TC);
- 
-       declare
-          --  The element allocator may need an accessibility check in the case
-          --  the actual type is class-wide or has access discriminants (see
-          --  RM 4.8(10.1) and AI12-0035). We don't unsuppress the check on the
-          --  allocator in the loop below, because the one in this block would
-          --  have failed already.
- 
-          pragma Unsuppress (Accessibility_Check);
- 
-       begin
-          Element := new Element_Type'(New_Item);
-       end;
- 
-       First := new Tree_Node_Type'(Parent  => Parent.Node,
-                                    Element => Element,
-                                    others  => <>);
- 
-       Last := First;
- 
-       for J in Count_Type'(2) .. Count loop
- 
-          --  Reclaim other nodes if Storage_Error.  ???
- 
-          Element := new Element_Type'(New_Item);
-          Last.Next := new Tree_Node_Type'(Parent  => Parent.Node,
-                                           Prev    => Last,
-                                           Element => Element,
-                                           others  => <>);
- 
-          Last := Last.Next;
-       end loop;
- 
-       Insert_Subtree_List
-         (First  => First,
-          Last   => Last,
-          Parent => Parent.Node,
-          Before => null);  -- null means "insert at end of list"
- 
-       --  In order for operation Node_Count to complete in O(1) time, we cache
-       --  the count value. Here we increment the total count by the number of
-       --  nodes we just inserted.
- 
-       Container.Count := Container.Count + Count;
-    end Append_Child;
- 
-    ------------
-    -- Assign --
-    ------------
- 
-    procedure Assign (Target : in out Tree; Source : Tree) is
-       Source_Count : constant Count_Type := Source.Count;
-       Target_Count : Count_Type;
- 
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       Target.Clear;  -- checks busy bit
- 
-       --  Copy_Children returns the number of nodes that it allocates, but it
-       --  does this by incrementing the count value passed in, so we must
-       --  initialize the count before calling Copy_Children.
- 
-       Target_Count := 0;
- 
-       --  Note that Copy_Children inserts the newly-allocated children into
-       --  their parent list only after the allocation of all the children has
-       --  succeeded. This preserves invariants even if the allocation fails.
- 
-       Copy_Children (Source.Root.Children, Root_Node (Target), Target_Count);
-       pragma Assert (Target_Count = Source_Count);
- 
-       Target.Count := Source_Count;
-    end Assign;
- 
-    -----------------
-    -- Child_Count --
-    -----------------
- 
-    function Child_Count (Parent : Cursor) return Count_Type is
-    begin
-       if Parent = No_Element then
-          return 0;
-       else
-          return Child_Count (Parent.Node.Children);
-       end if;
-    end Child_Count;
- 
-    function Child_Count (Children : Children_Type) return Count_Type is
-       Result : Count_Type;
-       Node   : Tree_Node_Access;
- 
-    begin
-       Result := 0;
-       Node := Children.First;
-       while Node /= null loop
-          Result := Result + 1;
-          Node := Node.Next;
-       end loop;
- 
-       return Result;
-    end Child_Count;
- 
-    -----------------
-    -- Child_Depth --
-    -----------------
- 
-    function Child_Depth (Parent, Child : Cursor) return Count_Type is
-       Result : Count_Type;
-       N      : Tree_Node_Access;
- 
-    begin
-       if Checks and then Parent = No_Element then
-          raise Constraint_Error with "Parent cursor has no element";
-       end if;
- 
-       if Checks and then Child = No_Element then
-          raise Constraint_Error with "Child cursor has no element";
-       end if;
- 
-       if Checks and then Parent.Container /= Child.Container then
-          raise Program_Error with "Parent and Child in different containers";
-       end if;
- 
-       Result := 0;
-       N := Child.Node;
-       while N /= Parent.Node loop
-          Result := Result + 1;
-          N := N.Parent;
- 
-          if Checks and then N = null then
-             raise Program_Error with "Parent is not ancestor of Child";
-          end if;
-       end loop;
- 
-       return Result;
-    end Child_Depth;
- 
-    -----------
-    -- Clear --
-    -----------
- 
-    procedure Clear (Container : in out Tree) is
-       Container_Count : Count_Type;
-       Children_Count  : Count_Type;
- 
-    begin
-       TC_Check (Container.TC);
- 
-       --  We first set the container count to 0, in order to preserve
-       --  invariants in case the deallocation fails. (This works because
-       --  Deallocate_Children immediately removes the children from their
-       --  parent, and then does the actual deallocation.)
- 
-       Container_Count := Container.Count;
-       Container.Count := 0;
- 
-       --  Deallocate_Children returns the number of nodes that it deallocates,
-       --  but it does this by incrementing the count value that is passed in,
-       --  so we must first initialize the count return value before calling it.
- 
-       Children_Count := 0;
- 
-       --  See comment above. Deallocate_Children immediately removes the
-       --  children list from their parent node (here, the root of the tree),
-       --  and only after that does it attempt the actual deallocation. So even
-       --  if the deallocation fails, the representation invariants
- 
-       Deallocate_Children (Root_Node (Container), Children_Count);
-       pragma Assert (Children_Count = Container_Count);
-    end Clear;
- 
-    ------------------------
-    -- Constant_Reference --
-    ------------------------
- 
-    function Constant_Reference
-      (Container : aliased Tree;
-       Position  : Cursor) return Constant_Reference_Type
-    is
-    begin
-       if Checks and then Position.Container = null then
-          raise Constraint_Error with
-            "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor designates wrong container";
-       end if;
- 
-       if Checks and then Position.Node = Root_Node (Container) then
-          raise Program_Error with "Position cursor designates root";
-       end if;
- 
-       if Checks and then Position.Node.Element = null then
-          raise Program_Error with "Node has no element";
-       end if;
- 
-       --  Implement Vet for multiway tree???
-       --  pragma Assert (Vet (Position),
-       --                 "Position cursor in Constant_Reference is bad");
- 
-       declare
-          TC : constant Tamper_Counts_Access :=
-            Container.TC'Unrestricted_Access;
-       begin
-          return R : constant Constant_Reference_Type :=
-            (Element => Position.Node.Element.all'Access,
-             Control => (Controlled with TC))
-          do
-             Lock (TC.all);
-          end return;
-       end;
-    end Constant_Reference;
- 
-    --------------
-    -- Contains --
-    --------------
- 
-    function Contains
-      (Container : Tree;
-       Item      : Element_Type) return Boolean
-    is
-    begin
-       return Find (Container, Item) /= No_Element;
-    end Contains;
- 
-    ----------
-    -- Copy --
-    ----------
- 
-    function Copy (Source : Tree) return Tree is
-    begin
-       return Target : Tree do
-          Copy_Children
-            (Source => Source.Root.Children,
-             Parent => Root_Node (Target),
-             Count  => Target.Count);
- 
-          pragma Assert (Target.Count = Source.Count);
-       end return;
-    end Copy;
- 
-    -------------------
-    -- Copy_Children --
-    -------------------
- 
-    procedure Copy_Children
-      (Source : Children_Type;
-       Parent : Tree_Node_Access;
-       Count  : in out Count_Type)
-    is
-       pragma Assert (Parent /= null);
-       pragma Assert (Parent.Children.First = null);
-       pragma Assert (Parent.Children.Last = null);
- 
-       CC : Children_Type;
-       C  : Tree_Node_Access;
- 
-    begin
-       --  We special-case the first allocation, in order to establish the
-       --  representation invariants for type Children_Type.
- 
-       C := Source.First;
- 
-       if C = null then
-          return;
-       end if;
- 
-       Copy_Subtree
-         (Source => C,
-          Parent => Parent,
-          Target => CC.First,
-          Count  => Count);
- 
-       CC.Last := CC.First;
- 
-       --  The representation invariants for the Children_Type list have been
-       --  established, so we can now copy the remaining children of Source.
- 
-       C := C.Next;
-       while C /= null loop
-          Copy_Subtree
-            (Source => C,
-             Parent => Parent,
-             Target => CC.Last.Next,
-             Count  => Count);
- 
-          CC.Last.Next.Prev := CC.Last;
-          CC.Last := CC.Last.Next;
- 
-          C := C.Next;
-       end loop;
- 
-       --  We add the newly-allocated children to their parent list only after
-       --  the allocation has succeeded, in order to preserve invariants of the
-       --  parent.
- 
-       Parent.Children := CC;
-    end Copy_Children;
- 
-    ------------------
-    -- Copy_Subtree --
-    ------------------
- 
-    procedure Copy_Subtree
-      (Target   : in out Tree;
-       Parent   : Cursor;
-       Before   : Cursor;
-       Source   : Cursor)
-    is
-       Target_Subtree : Tree_Node_Access;
-       Target_Count   : Count_Type;
- 
-    begin
-       if Checks and then Parent = No_Element then
-          raise Constraint_Error with "Parent cursor has no element";
-       end if;
- 
-       if Checks and then Parent.Container /= Target'Unrestricted_Access then
-          raise Program_Error with "Parent cursor not in container";
-       end if;
- 
-       if Before /= No_Element then
-          if Checks and then Before.Container /= Target'Unrestricted_Access then
-             raise Program_Error with "Before cursor not in container";
-          end if;
- 
-          if Checks and then Before.Node.Parent /= Parent.Node then
-             raise Constraint_Error with "Before cursor not child of Parent";
-          end if;
-       end if;
- 
-       if Source = No_Element then
-          return;
-       end if;
- 
-       if Checks and then Is_Root (Source) then
-          raise Constraint_Error with "Source cursor designates root";
-       end if;
- 
-       --  Copy_Subtree returns a count of the number of nodes that it
-       --  allocates, but it works by incrementing the value that is passed in.
-       --  We must therefore initialize the count value before calling
-       --  Copy_Subtree.
- 
-       Target_Count := 0;
- 
-       Copy_Subtree
-         (Source => Source.Node,
-          Parent => Parent.Node,
-          Target => Target_Subtree,
-          Count  => Target_Count);
- 
-       pragma Assert (Target_Subtree /= null);
-       pragma Assert (Target_Subtree.Parent = Parent.Node);
-       pragma Assert (Target_Count >= 1);
- 
-       Insert_Subtree_Node
-         (Subtree => Target_Subtree,
-          Parent  => Parent.Node,
-          Before  => Before.Node);
- 
-       --  In order for operation Node_Count to complete in O(1) time, we cache
-       --  the count value. Here we increment the total count by the number of
-       --  nodes we just inserted.
- 
-       Target.Count := Target.Count + Target_Count;
-    end Copy_Subtree;
- 
-    procedure Copy_Subtree
-      (Source : Tree_Node_Access;
-       Parent : Tree_Node_Access;
-       Target : out Tree_Node_Access;
-       Count  : in out Count_Type)
-    is
-       E : constant Element_Access := new Element_Type'(Source.Element.all);
- 
-    begin
-       Target := new Tree_Node_Type'(Element => E,
-                                     Parent  => Parent,
-                                     others  => <>);
- 
-       Count := Count + 1;
- 
-       Copy_Children
-         (Source => Source.Children,
-          Parent => Target,
-          Count  => Count);
-    end Copy_Subtree;
- 
-    -------------------------
-    -- Deallocate_Children --
-    -------------------------
- 
-    procedure Deallocate_Children
-      (Subtree : Tree_Node_Access;
-       Count   : in out Count_Type)
-    is
-       pragma Assert (Subtree /= null);
- 
-       CC : Children_Type := Subtree.Children;
-       C  : Tree_Node_Access;
- 
-    begin
-       --  We immediately remove the children from their parent, in order to
-       --  preserve invariants in case the deallocation fails.
- 
-       Subtree.Children := Children_Type'(others => null);
- 
-       while CC.First /= null loop
-          C := CC.First;
-          CC.First := C.Next;
- 
-          Deallocate_Subtree (C, Count);
-       end loop;
-    end Deallocate_Children;
- 
-    ---------------------
-    -- Deallocate_Node --
-    ---------------------
- 
-    procedure Deallocate_Node (X : in out Tree_Node_Access) is
-       procedure Free_Node is
-          new Ada.Unchecked_Deallocation (Tree_Node_Type, Tree_Node_Access);
- 
-    --  Start of processing for Deallocate_Node
- 
-    begin
-       if X /= null then
-          Free_Element (X.Element);
-          Free_Node (X);
-       end if;
-    end Deallocate_Node;
- 
-    ------------------------
-    -- Deallocate_Subtree --
-    ------------------------
- 
-    procedure Deallocate_Subtree
-      (Subtree : in out Tree_Node_Access;
-       Count   : in out Count_Type)
-    is
-    begin
-       Deallocate_Children (Subtree, Count);
-       Deallocate_Node (Subtree);
-       Count := Count + 1;
-    end Deallocate_Subtree;
- 
-    ---------------------
-    -- Delete_Children --
-    ---------------------
- 
-    procedure Delete_Children
-      (Container : in out Tree;
-       Parent    : Cursor)
-    is
-       Count : Count_Type;
- 
-    begin
-       if Checks and then Parent = No_Element then
-          raise Constraint_Error with "Parent cursor has no element";
-       end if;
- 
-       if Checks and then Parent.Container /= Container'Unrestricted_Access then
-          raise Program_Error with "Parent cursor not in container";
-       end if;
- 
-       TC_Check (Container.TC);
- 
-       --  Deallocate_Children returns a count of the number of nodes
-       --  that it deallocates, but it works by incrementing the
-       --  value that is passed in. We must therefore initialize
-       --  the count value before calling Deallocate_Children.
- 
-       Count := 0;
- 
-       Deallocate_Children (Parent.Node, Count);
-       pragma Assert (Count <= Container.Count);
- 
-       Container.Count := Container.Count - Count;
-    end Delete_Children;
- 
-    -----------------
-    -- Delete_Leaf --
-    -----------------
- 
-    procedure Delete_Leaf
-      (Container : in out Tree;
-       Position  : in out Cursor)
-    is
-       X : Tree_Node_Access;
- 
-    begin
-       if Checks and then Position = No_Element then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with "Position cursor not in container";
-       end if;
- 
-       if Checks and then Is_Root (Position) then
-          raise Program_Error with "Position cursor designates root";
-       end if;
- 
-       if Checks and then not Is_Leaf (Position) then
-          raise Constraint_Error with "Position cursor does not designate leaf";
-       end if;
- 
-       TC_Check (Container.TC);
- 
-       X := Position.Node;
-       Position := No_Element;
- 
-       --  Restore represention invariants before attempting the actual
-       --  deallocation.
- 
-       Remove_Subtree (X);
-       Container.Count := Container.Count - 1;
- 
-       --  It is now safe to attempt the deallocation. This leaf node has been
-       --  disassociated from the tree, so even if the deallocation fails,
-       --  representation invariants will remain satisfied.
- 
-       Deallocate_Node (X);
-    end Delete_Leaf;
- 
-    --------------------
-    -- Delete_Subtree --
-    --------------------
- 
-    procedure Delete_Subtree
-      (Container : in out Tree;
-       Position  : in out Cursor)
-    is
-       X     : Tree_Node_Access;
-       Count : Count_Type;
- 
-    begin
-       if Checks and then Position = No_Element then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with "Position cursor not in container";
-       end if;
- 
-       if Checks and then Is_Root (Position) then
-          raise Program_Error with "Position cursor designates root";
-       end if;
- 
-       TC_Check (Container.TC);
- 
-       X := Position.Node;
-       Position := No_Element;
- 
-       --  Here is one case where a deallocation failure can result in the
-       --  violation of a representation invariant. We disassociate the subtree
-       --  from the tree now, but we only decrement the total node count after
-       --  we attempt the deallocation. However, if the deallocation fails, the
-       --  total node count will not get decremented.
- 
-       --  One way around this dilemma is to count the nodes in the subtree
-       --  before attempt to delete the subtree, but that is an O(n) operation,
-       --  so it does not seem worth it.
- 
-       --  Perhaps this is much ado about nothing, since the only way
-       --  deallocation can fail is if Controlled Finalization fails: this
-       --  propagates Program_Error so all bets are off anyway. ???
- 
-       Remove_Subtree (X);
- 
-       --  Deallocate_Subtree returns a count of the number of nodes that it
-       --  deallocates, but it works by incrementing the value that is passed
-       --  in. We must therefore initialize the count value before calling
-       --  Deallocate_Subtree.
- 
-       Count := 0;
- 
-       Deallocate_Subtree (X, Count);
-       pragma Assert (Count <= Container.Count);
- 
-       --  See comments above. We would prefer to do this sooner, but there's no
-       --  way to satisfy that goal without an potentially severe execution
-       --  penalty.
- 
-       Container.Count := Container.Count - Count;
-    end Delete_Subtree;
- 
-    -----------
-    -- Depth --
-    -----------
- 
-    function Depth (Position : Cursor) return Count_Type is
-       Result : Count_Type;
-       N      : Tree_Node_Access;
- 
-    begin
-       Result := 0;
-       N := Position.Node;
-       while N /= null loop
-          N := N.Parent;
-          Result := Result + 1;
-       end loop;
- 
-       return Result;
-    end Depth;
- 
-    -------------
-    -- Element --
-    -------------
- 
-    function Element (Position : Cursor) return Element_Type is
-    begin
-       if Checks and then Position.Container = null then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Node = Root_Node (Position.Container.all)
-       then
-          raise Program_Error with "Position cursor designates root";
-       end if;
- 
-       return Position.Node.Element.all;
-    end Element;
- 
-    --------------------
-    -- Equal_Children --
-    --------------------
- 
-    function Equal_Children
-      (Left_Subtree  : Tree_Node_Access;
-       Right_Subtree : Tree_Node_Access) return Boolean
-    is
-       Left_Children  : Children_Type renames Left_Subtree.Children;
-       Right_Children : Children_Type renames Right_Subtree.Children;
- 
-       L, R : Tree_Node_Access;
- 
-    begin
-       if Child_Count (Left_Children) /= Child_Count (Right_Children) then
-          return False;
-       end if;
- 
-       L := Left_Children.First;
-       R := Right_Children.First;
-       while L /= null loop
-          if not Equal_Subtree (L, R) then
-             return False;
-          end if;
- 
-          L := L.Next;
-          R := R.Next;
-       end loop;
- 
-       return True;
-    end Equal_Children;
- 
-    -------------------
-    -- Equal_Subtree --
-    -------------------
- 
-    function Equal_Subtree
-      (Left_Position  : Cursor;
-       Right_Position : Cursor) return Boolean
-    is
-    begin
-       if Checks and then Left_Position = No_Element then
-          raise Constraint_Error with "Left cursor has no element";
-       end if;
- 
-       if Checks and then Right_Position = No_Element then
-          raise Constraint_Error with "Right cursor has no element";
-       end if;
- 
-       if Left_Position = Right_Position then
-          return True;
-       end if;
- 
-       if Is_Root (Left_Position) then
-          if not Is_Root (Right_Position) then
-             return False;
-          end if;
- 
-          return Equal_Children (Left_Position.Node, Right_Position.Node);
-       end if;
- 
-       if Is_Root (Right_Position) then
-          return False;
-       end if;
- 
-       return Equal_Subtree (Left_Position.Node, Right_Position.Node);
-    end Equal_Subtree;
- 
-    function Equal_Subtree
-      (Left_Subtree  : Tree_Node_Access;
-       Right_Subtree : Tree_Node_Access) return Boolean
-    is
-    begin
-       if Left_Subtree.Element.all /= Right_Subtree.Element.all then
-          return False;
-       end if;
- 
-       return Equal_Children (Left_Subtree, Right_Subtree);
-    end Equal_Subtree;
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    procedure Finalize (Object : in out Root_Iterator) is
-    begin
-       Unbusy (Object.Container.TC);
-    end Finalize;
- 
-    ----------
-    -- Find --
-    ----------
- 
-    function Find
-      (Container : Tree;
-       Item      : Element_Type) return Cursor
-    is
-       N : constant Tree_Node_Access :=
-         Find_In_Children (Root_Node (Container), Item);
- 
-    begin
-       if N = null then
-          return No_Element;
-       end if;
- 
-       return Cursor'(Container'Unrestricted_Access, N);
-    end Find;
- 
-    -----------
-    -- First --
-    -----------
- 
-    overriding function First (Object : Subtree_Iterator) return Cursor is
-    begin
-       if Object.Subtree = Root_Node (Object.Container.all) then
-          return First_Child (Root (Object.Container.all));
-       else
-          return Cursor'(Object.Container, Object.Subtree);
-       end if;
-    end First;
- 
-    overriding function First (Object : Child_Iterator) return Cursor is
-    begin
-       return First_Child (Cursor'(Object.Container, Object.Subtree));
-    end First;
- 
-    -----------------
-    -- First_Child --
-    -----------------
- 
-    function First_Child (Parent : Cursor) return Cursor is
-       Node : Tree_Node_Access;
- 
-    begin
-       if Checks and then Parent = No_Element then
-          raise Constraint_Error with "Parent cursor has no element";
-       end if;
- 
-       Node := Parent.Node.Children.First;
- 
-       if Node = null then
-          return No_Element;
-       end if;
- 
-       return Cursor'(Parent.Container, Node);
-    end First_Child;
- 
-    -------------------------
-    -- First_Child_Element --
-    -------------------------
- 
-    function First_Child_Element (Parent : Cursor) return Element_Type is
-    begin
-       return Element (First_Child (Parent));
-    end First_Child_Element;
- 
-    ----------------------
-    -- Find_In_Children --
-    ----------------------
- 
-    function Find_In_Children
-      (Subtree : Tree_Node_Access;
-       Item    : Element_Type) return Tree_Node_Access
-    is
-       N, Result : Tree_Node_Access;
- 
-    begin
-       N := Subtree.Children.First;
-       while N /= null loop
-          Result := Find_In_Subtree (N, Item);
- 
-          if Result /= null then
-             return Result;
-          end if;
- 
-          N := N.Next;
-       end loop;
- 
-       return null;
-    end Find_In_Children;
- 
-    ---------------------
-    -- Find_In_Subtree --
-    ---------------------
- 
-    function Find_In_Subtree
-      (Position : Cursor;
-       Item     : Element_Type) return Cursor
-    is
-       Result : Tree_Node_Access;
- 
-    begin
-       if Checks and then Position = No_Element then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       --  Commented-out pending ruling from ARG.  ???
- 
-       --  if Checks and then
-       --    Position.Container /= Container'Unrestricted_Access
-       --  then
-       --     raise Program_Error with "Position cursor not in container";
-       --  end if;
- 
-       if Is_Root (Position) then
-          Result := Find_In_Children (Position.Node, Item);
- 
-       else
-          Result := Find_In_Subtree (Position.Node, Item);
-       end if;
- 
-       if Result = null then
-          return No_Element;
-       end if;
- 
-       return Cursor'(Position.Container, Result);
-    end Find_In_Subtree;
- 
-    function Find_In_Subtree
-      (Subtree : Tree_Node_Access;
-       Item    : Element_Type) return Tree_Node_Access
-    is
-    begin
-       if Subtree.Element.all = Item then
-          return Subtree;
-       end if;
- 
-       return Find_In_Children (Subtree, Item);
-    end Find_In_Subtree;
- 
-    ------------------------
-    -- Get_Element_Access --
-    ------------------------
- 
-    function Get_Element_Access
-      (Position : Cursor) return not null Element_Access is
-    begin
-       return Position.Node.Element;
-    end Get_Element_Access;
- 
-    -----------------
-    -- Has_Element --
-    -----------------
- 
-    function Has_Element (Position : Cursor) return Boolean is
-    begin
-       if Position = No_Element then
-          return False;
-       end if;
- 
-       return Position.Node.Parent /= null;
-    end Has_Element;
- 
-    ------------------
-    -- Insert_Child --
-    ------------------
- 
-    procedure Insert_Child
-      (Container : in out Tree;
-       Parent    : Cursor;
-       Before    : Cursor;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1)
-    is
-       Position : Cursor;
-       pragma Unreferenced (Position);
- 
-    begin
-       Insert_Child (Container, Parent, Before, New_Item, Position, Count);
-    end Insert_Child;
- 
-    procedure Insert_Child
-      (Container : in out Tree;
-       Parent    : Cursor;
-       Before    : Cursor;
-       New_Item  : Element_Type;
-       Position  : out Cursor;
-       Count     : Count_Type := 1)
-    is
-       First   : Tree_Node_Access;
-       Last    : Tree_Node_Access;
-       Element : Element_Access;
- 
-    begin
-       if Checks and then Parent = No_Element then
-          raise Constraint_Error with "Parent cursor has no element";
-       end if;
- 
-       if Checks and then Parent.Container /= Container'Unrestricted_Access then
-          raise Program_Error with "Parent cursor not in container";
-       end if;
- 
-       if Before /= No_Element then
-          if Checks and then Before.Container /= Container'Unrestricted_Access
-          then
-             raise Program_Error with "Before cursor not in container";
-          end if;
- 
-          if Checks and then Before.Node.Parent /= Parent.Node then
-             raise Constraint_Error with "Parent cursor not parent of Before";
-          end if;
-       end if;
- 
-       if Count = 0 then
-          Position := No_Element;  -- Need ruling from ARG ???
-          return;
-       end if;
- 
-       TC_Check (Container.TC);
- 
-       declare
-          --  The element allocator may need an accessibility check in the case
-          --  the actual type is class-wide or has access discriminants (see
-          --  RM 4.8(10.1) and AI12-0035). We don't unsuppress the check on the
-          --  allocator in the loop below, because the one in this block would
-          --  have failed already.
- 
-          pragma Unsuppress (Accessibility_Check);
- 
-       begin
-          Element := new Element_Type'(New_Item);
-       end;
- 
-       First := new Tree_Node_Type'(Parent  => Parent.Node,
-                                    Element => Element,
-                                    others  => <>);
- 
-       Last := First;
-       for J in Count_Type'(2) .. Count loop
- 
-          --  Reclaim other nodes if Storage_Error.  ???
- 
-          Element   := new Element_Type'(New_Item);
-          Last.Next := new Tree_Node_Type'(Parent  => Parent.Node,
-                                           Prev    => Last,
-                                           Element => Element,
-                                           others  => <>);
- 
-          Last := Last.Next;
-       end loop;
- 
-       Insert_Subtree_List
-         (First  => First,
-          Last   => Last,
-          Parent => Parent.Node,
-          Before => Before.Node);
- 
-       --  In order for operation Node_Count to complete in O(1) time, we cache
-       --  the count value. Here we increment the total count by the number of
-       --  nodes we just inserted.
- 
-       Container.Count := Container.Count + Count;
- 
-       Position := Cursor'(Parent.Container, First);
-    end Insert_Child;
- 
-    -------------------------
-    -- Insert_Subtree_List --
-    -------------------------
- 
-    procedure Insert_Subtree_List
-      (First  : Tree_Node_Access;
-       Last   : Tree_Node_Access;
-       Parent : Tree_Node_Access;
-       Before : Tree_Node_Access)
-    is
-       pragma Assert (Parent /= null);
-       C : Children_Type renames Parent.Children;
- 
-    begin
-       --  This is a simple utility operation to insert a list of nodes (from
-       --  First..Last) as children of Parent. The Before node specifies where
-       --  the new children should be inserted relative to the existing
-       --  children.
- 
-       if First = null then
-          pragma Assert (Last = null);
-          return;
-       end if;
- 
-       pragma Assert (Last /= null);
-       pragma Assert (Before = null or else Before.Parent = Parent);
- 
-       if C.First = null then
-          C.First := First;
-          C.First.Prev := null;
-          C.Last := Last;
-          C.Last.Next := null;
- 
-       elsif Before = null then  -- means "insert after existing nodes"
-          C.Last.Next := First;
-          First.Prev := C.Last;
-          C.Last := Last;
-          C.Last.Next := null;
- 
-       elsif Before = C.First then
-          Last.Next := C.First;
-          C.First.Prev := Last;
-          C.First := First;
-          C.First.Prev := null;
- 
-       else
-          Before.Prev.Next := First;
-          First.Prev := Before.Prev;
-          Last.Next := Before;
-          Before.Prev := Last;
-       end if;
-    end Insert_Subtree_List;
- 
-    -------------------------
-    -- Insert_Subtree_Node --
-    -------------------------
- 
-    procedure Insert_Subtree_Node
-      (Subtree : Tree_Node_Access;
-       Parent  : Tree_Node_Access;
-       Before  : Tree_Node_Access)
-    is
-    begin
-       --  This is a simple wrapper operation to insert a single child into the
-       --  Parent's children list.
- 
-       Insert_Subtree_List
-         (First  => Subtree,
-          Last   => Subtree,
-          Parent => Parent,
-          Before => Before);
-    end Insert_Subtree_Node;
- 
-    --------------
-    -- Is_Empty --
-    --------------
- 
-    function Is_Empty (Container : Tree) return Boolean is
-    begin
-       return Container.Root.Children.First = null;
-    end Is_Empty;
- 
-    -------------
-    -- Is_Leaf --
-    -------------
- 
-    function Is_Leaf (Position : Cursor) return Boolean is
-    begin
-       if Position = No_Element then
-          return False;
-       end if;
- 
-       return Position.Node.Children.First = null;
-    end Is_Leaf;
- 
-    ------------------
-    -- Is_Reachable --
-    ------------------
- 
-    function Is_Reachable (From, To : Tree_Node_Access) return Boolean is
-       pragma Assert (From /= null);
-       pragma Assert (To /= null);
- 
-       N : Tree_Node_Access;
- 
-    begin
-       N := From;
-       while N /= null loop
-          if N = To then
-             return True;
-          end if;
- 
-          N := N.Parent;
-       end loop;
- 
-       return False;
-    end Is_Reachable;
- 
-    -------------
-    -- Is_Root --
-    -------------
- 
-    function Is_Root (Position : Cursor) return Boolean is
-    begin
-       if Position.Container = null then
-          return False;
-       end if;
- 
-       return Position = Root (Position.Container.all);
-    end Is_Root;
- 
-    -------------
-    -- Iterate --
-    -------------
- 
-    procedure Iterate
-      (Container : Tree;
-       Process   : not null access procedure (Position : Cursor))
-    is
-       Busy : With_Busy (Container.TC'Unrestricted_Access);
-    begin
-       Iterate_Children
-         (Container => Container'Unrestricted_Access,
-          Subtree   => Root_Node (Container),
-          Process   => Process);
-    end Iterate;
- 
-    function Iterate (Container : Tree)
-      return Tree_Iterator_Interfaces.Forward_Iterator'Class
-    is
-    begin
-       return Iterate_Subtree (Root (Container));
-    end Iterate;
- 
-    ----------------------
-    -- Iterate_Children --
-    ----------------------
- 
-    procedure Iterate_Children
-      (Parent  : Cursor;
-       Process : not null access procedure (Position : Cursor))
-    is
-       C : Tree_Node_Access;
-       Busy : With_Busy (Parent.Container.TC'Unrestricted_Access);
-    begin
-       if Checks and then Parent = No_Element then
-          raise Constraint_Error with "Parent cursor has no element";
-       end if;
- 
-       C := Parent.Node.Children.First;
-       while C /= null loop
-          Process (Position => Cursor'(Parent.Container, Node => C));
-          C := C.Next;
-       end loop;
-    end Iterate_Children;
- 
-    procedure Iterate_Children
-      (Container : Tree_Access;
-       Subtree   : Tree_Node_Access;
-       Process   : not null access procedure (Position : Cursor))
-    is
-       Node : Tree_Node_Access;
- 
-    begin
-       --  This is a helper function to recursively iterate over all the nodes
-       --  in a subtree, in depth-first fashion. This particular helper just
-       --  visits the children of this subtree, not the root of the subtree node
-       --  itself. This is useful when starting from the ultimate root of the
-       --  entire tree (see Iterate), as that root does not have an element.
- 
-       Node := Subtree.Children.First;
-       while Node /= null loop
-          Iterate_Subtree (Container, Node, Process);
-          Node := Node.Next;
-       end loop;
-    end Iterate_Children;
- 
-    function Iterate_Children
-      (Container : Tree;
-       Parent    : Cursor)
-      return Tree_Iterator_Interfaces.Reversible_Iterator'Class
-    is
-       C : constant Tree_Access := Container'Unrestricted_Access;
-    begin
-       if Checks and then Parent = No_Element then
-          raise Constraint_Error with "Parent cursor has no element";
-       end if;
- 
-       if Checks and then Parent.Container /= C then
-          raise Program_Error with "Parent cursor not in container";
-       end if;
- 
-       return It : constant Child_Iterator :=
-         Child_Iterator'(Limited_Controlled with
-                           Container => C,
-                           Subtree   => Parent.Node)
-       do
-          Busy (C.TC);
-       end return;
-    end Iterate_Children;
- 
-    ---------------------
-    -- Iterate_Subtree --
-    ---------------------
- 
-    function Iterate_Subtree
-      (Position : Cursor)
-       return Tree_Iterator_Interfaces.Forward_Iterator'Class
-    is
-       C : constant Tree_Access := Position.Container;
-    begin
-       if Checks and then Position = No_Element then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       --  Implement Vet for multiway trees???
-       --  pragma Assert (Vet (Position), "bad subtree cursor");
- 
-       return It : constant Subtree_Iterator :=
-         (Limited_Controlled with
-            Container => Position.Container,
-            Subtree   => Position.Node)
-       do
-          Busy (C.TC);
-       end return;
-    end Iterate_Subtree;
- 
-    procedure Iterate_Subtree
-      (Position  : Cursor;
-       Process   : not null access procedure (Position : Cursor))
-    is
-       Busy : With_Busy (Position.Container.TC'Unrestricted_Access);
-    begin
-       if Checks and then Position = No_Element then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Is_Root (Position) then
-          Iterate_Children (Position.Container, Position.Node, Process);
-       else
-          Iterate_Subtree (Position.Container, Position.Node, Process);
-       end if;
-    end Iterate_Subtree;
- 
-    procedure Iterate_Subtree
-      (Container : Tree_Access;
-       Subtree   : Tree_Node_Access;
-       Process   : not null access procedure (Position : Cursor))
-    is
-    begin
-       --  This is a helper function to recursively iterate over all the nodes
-       --  in a subtree, in depth-first fashion. It first visits the root of the
-       --  subtree, then visits its children.
- 
-       Process (Cursor'(Container, Subtree));
-       Iterate_Children (Container, Subtree, Process);
-    end Iterate_Subtree;
- 
-    ----------
-    -- Last --
-    ----------
- 
-    overriding function Last (Object : Child_Iterator) return Cursor is
-    begin
-       return Last_Child (Cursor'(Object.Container, Object.Subtree));
-    end Last;
- 
-    ----------------
-    -- Last_Child --
-    ----------------
- 
-    function Last_Child (Parent : Cursor) return Cursor is
-       Node : Tree_Node_Access;
- 
-    begin
-       if Checks and then Parent = No_Element then
-          raise Constraint_Error with "Parent cursor has no element";
-       end if;
- 
-       Node := Parent.Node.Children.Last;
- 
-       if Node = null then
-          return No_Element;
-       end if;
- 
-       return (Parent.Container, Node);
-    end Last_Child;
- 
-    ------------------------
-    -- Last_Child_Element --
-    ------------------------
- 
-    function Last_Child_Element (Parent : Cursor) return Element_Type is
-    begin
-       return Element (Last_Child (Parent));
-    end Last_Child_Element;
- 
-    ----------
-    -- Move --
-    ----------
- 
-    procedure Move (Target : in out Tree; Source : in out Tree) is
-       Node : Tree_Node_Access;
- 
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       TC_Check (Source.TC);
- 
-       Target.Clear;  -- checks busy bit
- 
-       Target.Root.Children := Source.Root.Children;
-       Source.Root.Children := Children_Type'(others => null);
- 
-       Node := Target.Root.Children.First;
-       while Node /= null loop
-          Node.Parent := Root_Node (Target);
-          Node := Node.Next;
-       end loop;
- 
-       Target.Count := Source.Count;
-       Source.Count := 0;
-    end Move;
- 
-    ----------
-    -- Next --
-    ----------
- 
-    function Next
-      (Object   : Subtree_Iterator;
-       Position : Cursor) return Cursor
-    is
-       Node : Tree_Node_Access;
- 
-    begin
-       if Position.Container = null then
-          return No_Element;
-       end if;
- 
-       if Checks and then Position.Container /= Object.Container then
-          raise Program_Error with
-            "Position cursor of Next designates wrong tree";
-       end if;
- 
-       Node := Position.Node;
- 
-       if Node.Children.First /= null then
-          return Cursor'(Object.Container, Node.Children.First);
-       end if;
- 
-       while Node /= Object.Subtree loop
-          if Node.Next /= null then
-             return Cursor'(Object.Container, Node.Next);
-          end if;
- 
-          Node := Node.Parent;
-       end loop;
- 
-       return No_Element;
-    end Next;
- 
-    function Next
-      (Object   : Child_Iterator;
-       Position : Cursor) return Cursor
-    is
-    begin
-       if Position.Container = null then
-          return No_Element;
-       end if;
- 
-       if Checks and then Position.Container /= Object.Container then
-          raise Program_Error with
-            "Position cursor of Next designates wrong tree";
-       end if;
- 
-       return Next_Sibling (Position);
-    end Next;
- 
-    ------------------
-    -- Next_Sibling --
-    ------------------
- 
-    function Next_Sibling (Position : Cursor) return Cursor is
-    begin
-       if Position = No_Element then
-          return No_Element;
-       end if;
- 
-       if Position.Node.Next = null then
-          return No_Element;
-       end if;
- 
-       return Cursor'(Position.Container, Position.Node.Next);
-    end Next_Sibling;
- 
-    procedure Next_Sibling (Position : in out Cursor) is
-    begin
-       Position := Next_Sibling (Position);
-    end Next_Sibling;
- 
-    ----------------
-    -- Node_Count --
-    ----------------
- 
-    function Node_Count (Container : Tree) return Count_Type is
-    begin
-       --  Container.Count is the number of nodes we have actually allocated. We
-       --  cache the value specifically so this Node_Count operation can execute
-       --  in O(1) time, which makes it behave similarly to how the Length
-       --  selector function behaves for other containers.
-       --
-       --  The cached node count value only describes the nodes we have
-       --  allocated; the root node itself is not included in that count. The
-       --  Node_Count operation returns a value that includes the root node
-       --  (because the RM says so), so we must add 1 to our cached value.
- 
-       return 1 + Container.Count;
-    end Node_Count;
- 
-    ------------
-    -- Parent --
-    ------------
- 
-    function Parent (Position : Cursor) return Cursor is
-    begin
-       if Position = No_Element then
-          return No_Element;
-       end if;
- 
-       if Position.Node.Parent = null then
-          return No_Element;
-       end if;
- 
-       return Cursor'(Position.Container, Position.Node.Parent);
-    end Parent;
- 
-    -------------------
-    -- Prepent_Child --
-    -------------------
- 
-    procedure Prepend_Child
-      (Container : in out Tree;
-       Parent    : Cursor;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1)
-    is
-       First, Last : Tree_Node_Access;
-       Element     : Element_Access;
- 
-    begin
-       if Checks and then Parent = No_Element then
-          raise Constraint_Error with "Parent cursor has no element";
-       end if;
- 
-       if Checks and then Parent.Container /= Container'Unrestricted_Access then
-          raise Program_Error with "Parent cursor not in container";
-       end if;
- 
-       if Count = 0 then
-          return;
-       end if;
- 
-       TC_Check (Container.TC);
- 
-       declare
-          --  The element allocator may need an accessibility check in the case
-          --  the actual type is class-wide or has access discriminants (see
-          --  RM 4.8(10.1) and AI12-0035). We don't unsuppress the check on the
-          --  allocator in the loop below, because the one in this block would
-          --  have failed already.
- 
-          pragma Unsuppress (Accessibility_Check);
- 
-       begin
-          Element := new Element_Type'(New_Item);
-       end;
- 
-       First := new Tree_Node_Type'(Parent  => Parent.Node,
-                                    Element => Element,
-                                    others  => <>);
- 
-       Last := First;
- 
-       for J in Count_Type'(2) .. Count loop
- 
-          --  Reclaim other nodes if Storage_Error.  ???
- 
-          Element := new Element_Type'(New_Item);
-          Last.Next := new Tree_Node_Type'(Parent  => Parent.Node,
-                                           Prev    => Last,
-                                           Element => Element,
-                                           others  => <>);
- 
-          Last := Last.Next;
-       end loop;
- 
-       Insert_Subtree_List
-         (First  => First,
-          Last   => Last,
-          Parent => Parent.Node,
-          Before => Parent.Node.Children.First);
- 
-       --  In order for operation Node_Count to complete in O(1) time, we cache
-       --  the count value. Here we increment the total count by the number of
-       --  nodes we just inserted.
- 
-       Container.Count := Container.Count + Count;
-    end Prepend_Child;
- 
-    --------------
-    -- Previous --
-    --------------
- 
-    overriding function Previous
-      (Object   : Child_Iterator;
-       Position : Cursor) return Cursor
-    is
-    begin
-       if Position.Container = null then
-          return No_Element;
-       end if;
- 
-       if Checks and then Position.Container /= Object.Container then
-          raise Program_Error with
-            "Position cursor of Previous designates wrong tree";
-       end if;
- 
-       return Previous_Sibling (Position);
-    end Previous;
- 
-    ----------------------
-    -- Previous_Sibling --
-    ----------------------
- 
-    function Previous_Sibling (Position : Cursor) return Cursor is
-    begin
-       if Position = No_Element then
-          return No_Element;
-       end if;
- 
-       if Position.Node.Prev = null then
-          return No_Element;
-       end if;
- 
-       return Cursor'(Position.Container, Position.Node.Prev);
-    end Previous_Sibling;
- 
-    procedure Previous_Sibling (Position : in out Cursor) is
-    begin
-       Position := Previous_Sibling (Position);
-    end Previous_Sibling;
- 
-    ----------------------
-    -- Pseudo_Reference --
-    ----------------------
- 
-    function Pseudo_Reference
-      (Container : aliased Tree'Class) return Reference_Control_Type
-    is
-       TC : constant Tamper_Counts_Access := Container.TC'Unrestricted_Access;
-    begin
-       return R : constant Reference_Control_Type := (Controlled with TC) do
-          Lock (TC.all);
-       end return;
-    end Pseudo_Reference;
- 
-    -------------------
-    -- Query_Element --
-    -------------------
- 
-    procedure Query_Element
-      (Position : Cursor;
-       Process  : not null access procedure (Element : Element_Type))
-    is
-       T : Tree renames Position.Container.all'Unrestricted_Access.all;
-       Lock : With_Lock (T.TC'Unrestricted_Access);
-    begin
-       if Checks and then Position = No_Element then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Checks and then Is_Root (Position) then
-          raise Program_Error with "Position cursor designates root";
-       end if;
- 
-       Process (Position.Node.Element.all);
-    end Query_Element;
- 
-    ----------
-    -- Read --
-    ----------
- 
-    procedure Read
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : out Tree)
-    is
-       procedure Read_Children (Subtree : Tree_Node_Access);
- 
-       function Read_Subtree
-         (Parent : Tree_Node_Access) return Tree_Node_Access;
- 
-       Total_Count : Count_Type'Base;
-       --  Value read from the stream that says how many elements follow
- 
-       Read_Count : Count_Type'Base;
-       --  Actual number of elements read from the stream
- 
-       -------------------
-       -- Read_Children --
-       -------------------
- 
-       procedure Read_Children (Subtree : Tree_Node_Access) is
-          pragma Assert (Subtree /= null);
-          pragma Assert (Subtree.Children.First = null);
-          pragma Assert (Subtree.Children.Last = null);
- 
-          Count : Count_Type'Base;
-          --  Number of child subtrees
- 
-          C : Children_Type;
- 
-       begin
-          Count_Type'Read (Stream, Count);
- 
-          if Checks and then Count < 0 then
-             raise Program_Error with "attempt to read from corrupt stream";
-          end if;
- 
-          if Count = 0 then
-             return;
-          end if;
- 
-          C.First := Read_Subtree (Parent => Subtree);
-          C.Last := C.First;
- 
-          for J in Count_Type'(2) .. Count loop
-             C.Last.Next := Read_Subtree (Parent => Subtree);
-             C.Last.Next.Prev := C.Last;
-             C.Last := C.Last.Next;
-          end loop;
- 
-          --  Now that the allocation and reads have completed successfully, it
-          --  is safe to link the children to their parent.
- 
-          Subtree.Children := C;
-       end Read_Children;
- 
-       ------------------
-       -- Read_Subtree --
-       ------------------
- 
-       function Read_Subtree
-         (Parent : Tree_Node_Access) return Tree_Node_Access
-       is
-          Element : constant Element_Access :=
-            new Element_Type'(Element_Type'Input (Stream));
- 
-          Subtree : constant Tree_Node_Access :=
-            new Tree_Node_Type'
-              (Parent  => Parent, Element => Element, others  => <>);
- 
-       begin
-          Read_Count := Read_Count + 1;
- 
-          Read_Children (Subtree);
- 
-          return Subtree;
-       end Read_Subtree;
- 
-    --  Start of processing for Read
- 
-    begin
-       Container.Clear;  -- checks busy bit
- 
-       Count_Type'Read (Stream, Total_Count);
- 
-       if Checks and then Total_Count < 0 then
-          raise Program_Error with "attempt to read from corrupt stream";
-       end if;
- 
-       if Total_Count = 0 then
-          return;
-       end if;
- 
-       Read_Count := 0;
- 
-       Read_Children (Root_Node (Container));
- 
-       if Checks and then Read_Count /= Total_Count then
-          raise Program_Error with "attempt to read from corrupt stream";
-       end if;
- 
-       Container.Count := Total_Count;
-    end Read;
- 
-    procedure Read
-      (Stream   : not null access Root_Stream_Type'Class;
-       Position : out Cursor)
-    is
-    begin
-       raise Program_Error with "attempt to read tree cursor from stream";
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Constant_Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Read;
- 
-    ---------------
-    -- Reference --
-    ---------------
- 
-    function Reference
-      (Container : aliased in out Tree;
-       Position  : Cursor) return Reference_Type
-    is
-    begin
-       if Checks and then Position.Container = null then
-          raise Constraint_Error with
-            "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor designates wrong container";
-       end if;
- 
-       if Checks and then Position.Node = Root_Node (Container) then
-          raise Program_Error with "Position cursor designates root";
-       end if;
- 
-       if Checks and then Position.Node.Element = null then
-          raise Program_Error with "Node has no element";
-       end if;
- 
-       --  Implement Vet for multiway tree???
-       --  pragma Assert (Vet (Position),
-       --                 "Position cursor in Constant_Reference is bad");
- 
-       declare
-          TC : constant Tamper_Counts_Access :=
-            Container.TC'Unrestricted_Access;
-       begin
-          return R : constant Reference_Type :=
-            (Element => Position.Node.Element.all'Access,
-             Control => (Controlled with TC))
-          do
-             Lock (TC.all);
-          end return;
-       end;
-    end Reference;
- 
-    --------------------
-    -- Remove_Subtree --
-    --------------------
- 
-    procedure Remove_Subtree (Subtree : Tree_Node_Access) is
-       C : Children_Type renames Subtree.Parent.Children;
- 
-    begin
-       --  This is a utility operation to remove a subtree node from its
-       --  parent's list of children.
- 
-       if C.First = Subtree then
-          pragma Assert (Subtree.Prev = null);
- 
-          if C.Last = Subtree then
-             pragma Assert (Subtree.Next = null);
-             C.First := null;
-             C.Last := null;
- 
-          else
-             C.First := Subtree.Next;
-             C.First.Prev := null;
-          end if;
- 
-       elsif C.Last = Subtree then
-          pragma Assert (Subtree.Next = null);
-          C.Last := Subtree.Prev;
-          C.Last.Next := null;
- 
-       else
-          Subtree.Prev.Next := Subtree.Next;
-          Subtree.Next.Prev := Subtree.Prev;
-       end if;
-    end Remove_Subtree;
- 
-    ----------------------
-    -- Replace_Element --
-    ----------------------
- 
-    procedure Replace_Element
-      (Container : in out Tree;
-       Position  : Cursor;
-       New_Item  : Element_Type)
-    is
-       E, X : Element_Access;
- 
-    begin
-       if Checks and then Position = No_Element then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with "Position cursor not in container";
-       end if;
- 
-       if Checks and then Is_Root (Position) then
-          raise Program_Error with "Position cursor designates root";
-       end if;
- 
-       TE_Check (Container.TC);
- 
-       declare
-          --  The element allocator may need an accessibility check in the case
-          --  the actual type is class-wide or has access discriminants (see
-          --  RM 4.8(10.1) and AI12-0035).
- 
-          pragma Unsuppress (Accessibility_Check);
- 
-       begin
-          E := new Element_Type'(New_Item);
-       end;
- 
-       X := Position.Node.Element;
-       Position.Node.Element := E;
- 
-       Free_Element (X);
-    end Replace_Element;
- 
-    ------------------------------
-    -- Reverse_Iterate_Children --
-    ------------------------------
- 
-    procedure Reverse_Iterate_Children
-      (Parent  : Cursor;
-       Process : not null access procedure (Position : Cursor))
-    is
-       C : Tree_Node_Access;
-       Busy : With_Busy (Parent.Container.TC'Unrestricted_Access);
-    begin
-       if Checks and then Parent = No_Element then
-          raise Constraint_Error with "Parent cursor has no element";
-       end if;
- 
-       C := Parent.Node.Children.Last;
-       while C /= null loop
-          Process (Position => Cursor'(Parent.Container, Node => C));
-          C := C.Prev;
-       end loop;
-    end Reverse_Iterate_Children;
- 
-    ----------
-    -- Root --
-    ----------
- 
-    function Root (Container : Tree) return Cursor is
-    begin
-       return (Container'Unrestricted_Access, Root_Node (Container));
-    end Root;
- 
-    ---------------
-    -- Root_Node --
-    ---------------
- 
-    function Root_Node (Container : Tree) return Tree_Node_Access is
-    begin
-       return Container.Root'Unrestricted_Access;
-    end Root_Node;
- 
-    ---------------------
-    -- Splice_Children --
-    ---------------------
- 
-    procedure Splice_Children
-      (Target          : in out Tree;
-       Target_Parent   : Cursor;
-       Before          : Cursor;
-       Source          : in out Tree;
-       Source_Parent   : Cursor)
-    is
-       Count : Count_Type;
- 
-    begin
-       if Checks and then Target_Parent = No_Element then
-          raise Constraint_Error with "Target_Parent cursor has no element";
-       end if;
- 
-       if Checks and then Target_Parent.Container /= Target'Unrestricted_Access
-       then
-          raise Program_Error
-            with "Target_Parent cursor not in Target container";
-       end if;
- 
-       if Before /= No_Element then
-          if Checks and then Before.Container /= Target'Unrestricted_Access then
-             raise Program_Error
-               with "Before cursor not in Target container";
-          end if;
- 
-          if Checks and then Before.Node.Parent /= Target_Parent.Node then
-             raise Constraint_Error
-               with "Before cursor not child of Target_Parent";
-          end if;
-       end if;
- 
-       if Checks and then Source_Parent = No_Element then
-          raise Constraint_Error with "Source_Parent cursor has no element";
-       end if;
- 
-       if Checks and then Source_Parent.Container /= Source'Unrestricted_Access
-       then
-          raise Program_Error
-            with "Source_Parent cursor not in Source container";
-       end if;
- 
-       if Target'Address = Source'Address then
-          if Target_Parent = Source_Parent then
-             return;
-          end if;
- 
-          TC_Check (Target.TC);
- 
-          if Checks and then Is_Reachable (From => Target_Parent.Node,
-                           To   => Source_Parent.Node)
-          then
-             raise Constraint_Error
-               with "Source_Parent is ancestor of Target_Parent";
-          end if;
- 
-          Splice_Children
-            (Target_Parent => Target_Parent.Node,
-             Before        => Before.Node,
-             Source_Parent => Source_Parent.Node);
- 
-          return;
-       end if;
- 
-       TC_Check (Target.TC);
-       TC_Check (Source.TC);
- 
-       --  We cache the count of the nodes we have allocated, so that operation
-       --  Node_Count can execute in O(1) time. But that means we must count the
-       --  nodes in the subtree we remove from Source and insert into Target, in
-       --  order to keep the count accurate.
- 
-       Count := Subtree_Node_Count (Source_Parent.Node);
-       pragma Assert (Count >= 1);
- 
-       Count := Count - 1;  -- because Source_Parent node does not move
- 
-       Splice_Children
-         (Target_Parent => Target_Parent.Node,
-          Before        => Before.Node,
-          Source_Parent => Source_Parent.Node);
- 
-       Source.Count := Source.Count - Count;
-       Target.Count := Target.Count + Count;
-    end Splice_Children;
- 
-    procedure Splice_Children
-      (Container       : in out Tree;
-       Target_Parent   : Cursor;
-       Before          : Cursor;
-       Source_Parent   : Cursor)
-    is
-    begin
-       if Checks and then Target_Parent = No_Element then
-          raise Constraint_Error with "Target_Parent cursor has no element";
-       end if;
- 
-       if Checks and then
-         Target_Parent.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error
-            with "Target_Parent cursor not in container";
-       end if;
- 
-       if Before /= No_Element then
-          if Checks and then Before.Container /= Container'Unrestricted_Access
-          then
-             raise Program_Error
-               with "Before cursor not in container";
-          end if;
- 
-          if Checks and then Before.Node.Parent /= Target_Parent.Node then
-             raise Constraint_Error
-               with "Before cursor not child of Target_Parent";
-          end if;
-       end if;
- 
-       if Checks and then Source_Parent = No_Element then
-          raise Constraint_Error with "Source_Parent cursor has no element";
-       end if;
- 
-       if Checks and then
-         Source_Parent.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error
-            with "Source_Parent cursor not in container";
-       end if;
- 
-       if Target_Parent = Source_Parent then
-          return;
-       end if;
- 
-       TC_Check (Container.TC);
- 
-       if Checks and then Is_Reachable (From => Target_Parent.Node,
-                        To   => Source_Parent.Node)
-       then
-          raise Constraint_Error
-            with "Source_Parent is ancestor of Target_Parent";
-       end if;
- 
-       Splice_Children
-         (Target_Parent => Target_Parent.Node,
-          Before        => Before.Node,
-          Source_Parent => Source_Parent.Node);
-    end Splice_Children;
- 
-    procedure Splice_Children
-      (Target_Parent : Tree_Node_Access;
-       Before        : Tree_Node_Access;
-       Source_Parent : Tree_Node_Access)
-    is
-       CC : constant Children_Type := Source_Parent.Children;
-       C  : Tree_Node_Access;
- 
-    begin
-       --  This is a utility operation to remove the children from Source parent
-       --  and insert them into Target parent.
- 
-       Source_Parent.Children := Children_Type'(others => null);
- 
-       --  Fix up the Parent pointers of each child to designate its new Target
-       --  parent.
- 
-       C := CC.First;
-       while C /= null loop
-          C.Parent := Target_Parent;
-          C := C.Next;
-       end loop;
- 
-       Insert_Subtree_List
-         (First  => CC.First,
-          Last   => CC.Last,
-          Parent => Target_Parent,
-          Before => Before);
-    end Splice_Children;
- 
-    --------------------
-    -- Splice_Subtree --
-    --------------------
- 
-    procedure Splice_Subtree
-      (Target   : in out Tree;
-       Parent   : Cursor;
-       Before   : Cursor;
-       Source   : in out Tree;
-       Position : in out Cursor)
-    is
-       Subtree_Count : Count_Type;
- 
-    begin
-       if Checks and then Parent = No_Element then
-          raise Constraint_Error with "Parent cursor has no element";
-       end if;
- 
-       if Checks and then Parent.Container /= Target'Unrestricted_Access then
-          raise Program_Error with "Parent cursor not in Target container";
-       end if;
- 
-       if Before /= No_Element then
-          if Checks and then Before.Container /= Target'Unrestricted_Access then
-             raise Program_Error with "Before cursor not in Target container";
-          end if;
- 
-          if Checks and then Before.Node.Parent /= Parent.Node then
-             raise Constraint_Error with "Before cursor not child of Parent";
-          end if;
-       end if;
- 
-       if Checks and then Position = No_Element then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Source'Unrestricted_Access then
-          raise Program_Error with "Position cursor not in Source container";
-       end if;
- 
-       if Checks and then Is_Root (Position) then
-          raise Program_Error with "Position cursor designates root";
-       end if;
- 
-       if Target'Address = Source'Address then
-          if Position.Node.Parent = Parent.Node then
-             if Position.Node = Before.Node then
-                return;
-             end if;
- 
-             if Position.Node.Next = Before.Node then
-                return;
-             end if;
-          end if;
- 
-          TC_Check (Target.TC);
- 
-          if Checks and then
-            Is_Reachable (From => Parent.Node, To => Position.Node)
-          then
-             raise Constraint_Error with "Position is ancestor of Parent";
-          end if;
- 
-          Remove_Subtree (Position.Node);
- 
-          Position.Node.Parent := Parent.Node;
-          Insert_Subtree_Node (Position.Node, Parent.Node, Before.Node);
- 
-          return;
-       end if;
- 
-       TC_Check (Target.TC);
-       TC_Check (Source.TC);
- 
-       --  This is an unfortunate feature of this API: we must count the nodes
-       --  in the subtree that we remove from the source tree, which is an O(n)
-       --  operation. It would have been better if the Tree container did not
-       --  have a Node_Count selector; a user that wants the number of nodes in
-       --  the tree could simply call Subtree_Node_Count, with the understanding
-       --  that such an operation is O(n).
-       --
-       --  Of course, we could choose to implement the Node_Count selector as an
-       --  O(n) operation, which would turn this splice operation into an O(1)
-       --  operation. ???
- 
-       Subtree_Count := Subtree_Node_Count (Position.Node);
-       pragma Assert (Subtree_Count <= Source.Count);
- 
-       Remove_Subtree (Position.Node);
-       Source.Count := Source.Count - Subtree_Count;
- 
-       Position.Node.Parent := Parent.Node;
-       Insert_Subtree_Node (Position.Node, Parent.Node, Before.Node);
- 
-       Target.Count := Target.Count + Subtree_Count;
- 
-       Position.Container := Target'Unrestricted_Access;
-    end Splice_Subtree;
- 
-    procedure Splice_Subtree
-      (Container : in out Tree;
-       Parent    : Cursor;
-       Before    : Cursor;
-       Position  : Cursor)
-    is
-    begin
-       if Checks and then Parent = No_Element then
-          raise Constraint_Error with "Parent cursor has no element";
-       end if;
- 
-       if Checks and then Parent.Container /= Container'Unrestricted_Access then
-          raise Program_Error with "Parent cursor not in container";
-       end if;
- 
-       if Before /= No_Element then
-          if Checks and then Before.Container /= Container'Unrestricted_Access
-          then
-             raise Program_Error with "Before cursor not in container";
-          end if;
- 
-          if Checks and then Before.Node.Parent /= Parent.Node then
-             raise Constraint_Error with "Before cursor not child of Parent";
-          end if;
-       end if;
- 
-       if Checks and then Position = No_Element then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with "Position cursor not in container";
-       end if;
- 
-       if Checks and then Is_Root (Position) then
- 
-          --  Should this be PE instead?  Need ARG confirmation.  ???
- 
-          raise Constraint_Error with "Position cursor designates root";
-       end if;
- 
-       if Position.Node.Parent = Parent.Node then
-          if Position.Node = Before.Node then
-             return;
-          end if;
- 
-          if Position.Node.Next = Before.Node then
-             return;
-          end if;
-       end if;
- 
-       TC_Check (Container.TC);
- 
-       if Checks and then
-         Is_Reachable (From => Parent.Node, To => Position.Node)
-       then
-          raise Constraint_Error with "Position is ancestor of Parent";
-       end if;
- 
-       Remove_Subtree (Position.Node);
- 
-       Position.Node.Parent := Parent.Node;
-       Insert_Subtree_Node (Position.Node, Parent.Node, Before.Node);
-    end Splice_Subtree;
- 
-    ------------------------
-    -- Subtree_Node_Count --
-    ------------------------
- 
-    function Subtree_Node_Count (Position : Cursor) return Count_Type is
-    begin
-       if Position = No_Element then
-          return 0;
-       end if;
- 
-       return Subtree_Node_Count (Position.Node);
-    end Subtree_Node_Count;
- 
-    function Subtree_Node_Count
-      (Subtree : Tree_Node_Access) return Count_Type
-    is
-       Result : Count_Type;
-       Node   : Tree_Node_Access;
- 
-    begin
-       Result := 1;
-       Node := Subtree.Children.First;
-       while Node /= null loop
-          Result := Result + Subtree_Node_Count (Node);
-          Node := Node.Next;
-       end loop;
- 
-       return Result;
-    end Subtree_Node_Count;
- 
-    ----------
-    -- Swap --
-    ----------
- 
-    procedure Swap
-      (Container : in out Tree;
-       I, J      : Cursor)
-    is
-    begin
-       if Checks and then I = No_Element then
-          raise Constraint_Error with "I cursor has no element";
-       end if;
- 
-       if Checks and then I.Container /= Container'Unrestricted_Access then
-          raise Program_Error with "I cursor not in container";
-       end if;
- 
-       if Checks and then Is_Root (I) then
-          raise Program_Error with "I cursor designates root";
-       end if;
- 
-       if I = J then -- make this test sooner???
-          return;
-       end if;
- 
-       if Checks and then J = No_Element then
-          raise Constraint_Error with "J cursor has no element";
-       end if;
- 
-       if Checks and then J.Container /= Container'Unrestricted_Access then
-          raise Program_Error with "J cursor not in container";
-       end if;
- 
-       if Checks and then Is_Root (J) then
-          raise Program_Error with "J cursor designates root";
-       end if;
- 
-       TE_Check (Container.TC);
- 
-       declare
-          EI : constant Element_Access := I.Node.Element;
- 
-       begin
-          I.Node.Element := J.Node.Element;
-          J.Node.Element := EI;
-       end;
-    end Swap;
- 
-    --------------------
-    -- Update_Element --
-    --------------------
- 
-    procedure Update_Element
-      (Container : in out Tree;
-       Position  : Cursor;
-       Process   : not null access procedure (Element : in out Element_Type))
-    is
-       T : Tree renames Position.Container.all'Unrestricted_Access.all;
-       Lock : With_Lock (T.TC'Unrestricted_Access);
-    begin
-       if Checks and then Position = No_Element then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with "Position cursor not in container";
-       end if;
- 
-       if Checks and then Is_Root (Position) then
-          raise Program_Error with "Position cursor designates root";
-       end if;
- 
-       Process (Position.Node.Element.all);
-    end Update_Element;
- 
-    -----------
-    -- Write --
-    -----------
- 
-    procedure Write
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : Tree)
-    is
-       procedure Write_Children (Subtree : Tree_Node_Access);
-       procedure Write_Subtree (Subtree : Tree_Node_Access);
- 
-       --------------------
-       -- Write_Children --
-       --------------------
- 
-       procedure Write_Children (Subtree : Tree_Node_Access) is
-          CC : Children_Type renames Subtree.Children;
-          C  : Tree_Node_Access;
- 
-       begin
-          Count_Type'Write (Stream, Child_Count (CC));
- 
-          C := CC.First;
-          while C /= null loop
-             Write_Subtree (C);
-             C := C.Next;
-          end loop;
-       end Write_Children;
- 
-       -------------------
-       -- Write_Subtree --
-       -------------------
- 
-       procedure Write_Subtree (Subtree : Tree_Node_Access) is
-       begin
-          Element_Type'Output (Stream, Subtree.Element.all);
-          Write_Children (Subtree);
-       end Write_Subtree;
- 
-    --  Start of processing for Write
- 
-    begin
-       Count_Type'Write (Stream, Container.Count);
- 
-       if Container.Count = 0 then
-          return;
-       end if;
- 
-       Write_Children (Root_Node (Container));
-    end Write;
- 
-    procedure Write
-      (Stream   : not null access Root_Stream_Type'Class;
-       Position : Cursor)
-    is
-    begin
-       raise Program_Error with "attempt to write tree cursor to stream";
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Constant_Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Write;
- 
- end Ada.Containers.Indefinite_Multiway_Trees;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cimutr.ads gcc-8.1.0/gcc/ada/a-cimutr.ads
*** gcc-7.3.0/gcc/ada/a-cimutr.ads	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-cimutr.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,456 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                   ADA.CONTAINERS.INDEFINITE_MULTIWAY_TREES               --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, 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/>.                                          --
- --                                                                          --
- -- This unit was originally developed by Matthew J Heaney.                  --
- ------------------------------------------------------------------------------
- 
- with Ada.Iterator_Interfaces;
- 
- with Ada.Containers.Helpers;
- private with Ada.Finalization;
- private with Ada.Streams;
- 
- generic
-    type Element_Type (<>) is private;
- 
-    with function "=" (Left, Right : Element_Type) return Boolean is <>;
- 
- package Ada.Containers.Indefinite_Multiway_Trees is
-    pragma Annotate (CodePeer, Skip_Analysis);
-    pragma Preelaborate;
-    pragma Remote_Types;
- 
-    type Tree is tagged private
-      with Constant_Indexing => Constant_Reference,
-           Variable_Indexing => Reference,
-           Default_Iterator  => Iterate,
-           Iterator_Element  => Element_Type;
- 
-    pragma Preelaborable_Initialization (Tree);
- 
-    type Cursor is private;
-    pragma Preelaborable_Initialization (Cursor);
- 
-    Empty_Tree : constant Tree;
- 
-    No_Element : constant Cursor;
-    function Has_Element (Position : Cursor) return Boolean;
- 
-    package Tree_Iterator_Interfaces is new
-      Ada.Iterator_Interfaces (Cursor, Has_Element);
- 
-    function Equal_Subtree
-      (Left_Position  : Cursor;
-       Right_Position : Cursor) return Boolean;
- 
-    function "=" (Left, Right : Tree) return Boolean;
- 
-    function Is_Empty (Container : Tree) return Boolean;
- 
-    function Node_Count (Container : Tree) return Count_Type;
- 
-    function Subtree_Node_Count (Position : Cursor) return Count_Type;
- 
-    function Depth (Position : Cursor) return Count_Type;
- 
-    function Is_Root (Position : Cursor) return Boolean;
- 
-    function Is_Leaf (Position : Cursor) return Boolean;
- 
-    function Root (Container : Tree) return Cursor;
- 
-    procedure Clear (Container : in out Tree);
- 
-    function Element (Position : Cursor) return Element_Type;
- 
-    procedure Replace_Element
-      (Container : in out Tree;
-       Position  : Cursor;
-       New_Item  : Element_Type);
- 
-    procedure Query_Element
-      (Position : Cursor;
-       Process  : not null access procedure (Element : Element_Type));
- 
-    procedure Update_Element
-      (Container : in out Tree;
-       Position  : Cursor;
-       Process   : not null access procedure (Element : in out Element_Type));
- 
-    type Constant_Reference_Type
-      (Element : not null access constant Element_Type) is private
-         with Implicit_Dereference => Element;
- 
-    type Reference_Type
-      (Element : not null access Element_Type) is private
-         with Implicit_Dereference => Element;
- 
-    function Constant_Reference
-      (Container : aliased Tree;
-       Position  : Cursor) return Constant_Reference_Type;
-    pragma Inline (Constant_Reference);
- 
-    function Reference
-      (Container : aliased in out Tree;
-       Position  : Cursor) return Reference_Type;
-    pragma Inline (Reference);
- 
-    procedure Assign (Target : in out Tree; Source : Tree);
- 
-    function Copy (Source : Tree) return Tree;
- 
-    procedure Move (Target : in out Tree; Source : in out Tree);
- 
-    procedure Delete_Leaf
-      (Container : in out Tree;
-       Position  : in out Cursor);
- 
-    procedure Delete_Subtree
-      (Container : in out Tree;
-       Position  : in out Cursor);
- 
-    procedure Swap
-      (Container : in out Tree;
-       I, J      : Cursor);
- 
-    function Find
-      (Container : Tree;
-       Item      : Element_Type) return Cursor;
- 
-    --  This version of the AI:
-    --   10-06-02  AI05-0136-1/07
-    --  declares Find_In_Subtree this way:
-    --
-    --  function Find_In_Subtree
-    --    (Container : Tree;
-    --     Item      : Element_Type;
-    --     Position  : Cursor) return Cursor;
-    --
-    --  It seems that the Container parameter is there by mistake, but we need
-    --  an official ruling from the ARG. ???
- 
-    function Find_In_Subtree
-      (Position : Cursor;
-       Item     : Element_Type) return Cursor;
- 
-    --  This version of the AI:
-    --   10-06-02  AI05-0136-1/07
-    --  declares Ancestor_Find this way:
-    --
-    --  function Ancestor_Find
-    --    (Container : Tree;
-    --     Item      : Element_Type;
-    --     Position  : Cursor) return Cursor;
-    --
-    --  It seems that the Container parameter is there by mistake, but we need
-    --  an official ruling from the ARG. ???
- 
-    function Ancestor_Find
-      (Position : Cursor;
-       Item     : Element_Type) return Cursor;
- 
-    function Contains
-      (Container : Tree;
-       Item      : Element_Type) return Boolean;
- 
-    procedure Iterate
-      (Container : Tree;
-       Process   : not null access procedure (Position : Cursor));
- 
-    procedure Iterate_Subtree
-      (Position  : Cursor;
-       Process   : not null access procedure (Position : Cursor));
- 
-    function Iterate (Container : Tree)
-      return Tree_Iterator_Interfaces.Forward_Iterator'Class;
- 
-    function Iterate_Subtree (Position : Cursor)
-      return Tree_Iterator_Interfaces.Forward_Iterator'Class;
- 
-    function Iterate_Children
-      (Container : Tree;
-       Parent    : Cursor)
-      return Tree_Iterator_Interfaces.Reversible_Iterator'Class;
- 
-    function Child_Count (Parent : Cursor) return Count_Type;
- 
-    function Child_Depth (Parent, Child : Cursor) return Count_Type;
- 
-    procedure Insert_Child
-      (Container : in out Tree;
-       Parent    : Cursor;
-       Before    : Cursor;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1);
- 
-    procedure Insert_Child
-      (Container : in out Tree;
-       Parent    : Cursor;
-       Before    : Cursor;
-       New_Item  : Element_Type;
-       Position  : out Cursor;
-       Count     : Count_Type := 1);
- 
-    procedure Prepend_Child
-      (Container : in out Tree;
-       Parent    : Cursor;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1);
- 
-    procedure Append_Child
-      (Container : in out Tree;
-       Parent    : Cursor;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1);
- 
-    procedure Delete_Children
-      (Container : in out Tree;
-       Parent    : Cursor);
- 
-    procedure Copy_Subtree
-      (Target   : in out Tree;
-       Parent   : Cursor;
-       Before   : Cursor;
-       Source   : Cursor);
- 
-    procedure Splice_Subtree
-      (Target   : in out Tree;
-       Parent   : Cursor;
-       Before   : Cursor;
-       Source   : in out Tree;
-       Position : in out Cursor);
- 
-    procedure Splice_Subtree
-      (Container : in out Tree;
-       Parent    : Cursor;
-       Before    : Cursor;
-       Position  : Cursor);
- 
-    procedure Splice_Children
-      (Target          : in out Tree;
-       Target_Parent   : Cursor;
-       Before          : Cursor;
-       Source          : in out Tree;
-       Source_Parent   : Cursor);
- 
-    procedure Splice_Children
-      (Container       : in out Tree;
-       Target_Parent   : Cursor;
-       Before          : Cursor;
-       Source_Parent   : Cursor);
- 
-    function Parent (Position : Cursor) return Cursor;
- 
-    function First_Child (Parent : Cursor) return Cursor;
- 
-    function First_Child_Element (Parent : Cursor) return Element_Type;
- 
-    function Last_Child (Parent : Cursor) return Cursor;
- 
-    function Last_Child_Element (Parent : Cursor) return Element_Type;
- 
-    function Next_Sibling (Position : Cursor) return Cursor;
- 
-    function Previous_Sibling (Position : Cursor) return Cursor;
- 
-    procedure Next_Sibling (Position : in out Cursor);
- 
-    procedure Previous_Sibling (Position : in out Cursor);
- 
-    --  This version of the AI:
-    --   10-06-02  AI05-0136-1/07
-    --  declares Iterate_Children this way:
-    --
-    --  procedure Iterate_Children
-    --    (Container : Tree;
-    --     Parent    : Cursor;
-    --     Process   : not null access procedure (Position : Cursor));
-    --
-    --  It seems that the Container parameter is there by mistake, but we need
-    --  an official ruling from the ARG. ???
- 
-    procedure Iterate_Children
-      (Parent  : Cursor;
-       Process : not null access procedure (Position : Cursor));
- 
-    procedure Reverse_Iterate_Children
-      (Parent  : Cursor;
-       Process : not null access procedure (Position : Cursor));
- 
- private
- 
-    use Ada.Containers.Helpers;
-    package Implementation is new Generic_Implementation;
-    use Implementation;
- 
-    type Tree_Node_Type;
-    type Tree_Node_Access is access all Tree_Node_Type;
- 
-    type Children_Type is record
-       First : Tree_Node_Access;
-       Last  : Tree_Node_Access;
-    end record;
- 
-    type Element_Access is access all Element_Type;
- 
-    type Tree_Node_Type is record
-       Parent   : Tree_Node_Access;
-       Prev     : Tree_Node_Access;
-       Next     : Tree_Node_Access;
-       Children : Children_Type;
-       Element  : Element_Access;
-    end record;
- 
-    use Ada.Finalization;
- 
-    --  The Count component of type Tree represents the number of nodes that
-    --  have been (dynamically) allocated. It does not include the root node
-    --  itself. As implementors, we decide to cache this value, so that the
-    --  selector function Node_Count can execute in O(1) time, in order to be
-    --  consistent with the behavior of the Length selector function for other
-    --  standard container library units. This does mean, however, that the
-    --  two-container forms for Splice_XXX (that move subtrees across tree
-    --  containers) will execute in O(n) time, because we must count the number
-    --  of nodes in the subtree(s) that get moved. (We resolve the tension
-    --  between Node_Count and Splice_XXX in favor of Node_Count, under the
-    --  assumption that Node_Count is the more common operation).
- 
-    type Tree is new Controlled with record
-       Root  : aliased Tree_Node_Type;
-       TC    : aliased Tamper_Counts;
-       Count : Count_Type := 0;
-    end record;
- 
-    overriding procedure Adjust (Container : in out Tree);
- 
-    overriding procedure Finalize (Container : in out Tree) renames Clear;
- 
-    use Ada.Streams;
- 
-    procedure Write
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : Tree);
- 
-    for Tree'Write use Write;
- 
-    procedure Read
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : out Tree);
- 
-    for Tree'Read use Read;
- 
-    type Tree_Access is access all Tree;
-    for Tree_Access'Storage_Size use 0;
- 
-    type Cursor is record
-       Container : Tree_Access;
-       Node      : Tree_Node_Access;
-    end record;
- 
-    procedure Write
-      (Stream   : not null access Root_Stream_Type'Class;
-       Position : Cursor);
- 
-    for Cursor'Write use Write;
- 
-    procedure Read
-      (Stream   : not null access Root_Stream_Type'Class;
-       Position : out Cursor);
- 
-    for Cursor'Read use Read;
- 
-    subtype Reference_Control_Type is Implementation.Reference_Control_Type;
-    --  It is necessary to rename this here, so that the compiler can find it
- 
-    type Constant_Reference_Type
-      (Element : not null access constant Element_Type) is
-       record
-          Control : Reference_Control_Type :=
-            raise Program_Error with "uninitialized reference";
-          --  The RM says, "The default initialization of an object of
-          --  type Constant_Reference_Type or Reference_Type propagates
-          --  Program_Error."
-       end record;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Constant_Reference_Type);
- 
-    for Constant_Reference_Type'Read use Read;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Constant_Reference_Type);
- 
-    for Constant_Reference_Type'Write use Write;
- 
-    type Reference_Type
-      (Element : not null access Element_Type) is
-       record
-          Control : Reference_Control_Type :=
-            raise Program_Error with "uninitialized reference";
-          --  The RM says, "The default initialization of an object of
-          --  type Constant_Reference_Type or Reference_Type propagates
-          --  Program_Error."
-       end record;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Reference_Type);
- 
-    for Reference_Type'Read use Read;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Reference_Type);
- 
-    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;
-    pragma Inline (Pseudo_Reference);
-    --  Creates an object of type Reference_Control_Type pointing to the
-    --  container, and increments the Lock. Finalization of this object will
-    --  decrement the Lock.
- 
-    function Get_Element_Access
-      (Position : Cursor) return not null Element_Access;
-    --  Returns a pointer to the element designated by Position.
- 
-    Empty_Tree : constant Tree := (Controlled with others => <>);
- 
-    No_Element : constant Cursor := (others => <>);
- 
- end Ada.Containers.Indefinite_Multiway_Trees;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ciorma.adb gcc-8.1.0/gcc/ada/a-ciorma.adb
*** gcc-7.3.0/gcc/ada/a-ciorma.adb	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-ciorma.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,1686 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                 ADA.CONTAINERS.INDEFINITE_ORDERED_MAPS                   --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 Ada.Unchecked_Deallocation;
- 
- with Ada.Containers.Helpers; use Ada.Containers.Helpers;
- 
- with Ada.Containers.Red_Black_Trees.Generic_Operations;
- pragma Elaborate_All (Ada.Containers.Red_Black_Trees.Generic_Operations);
- 
- with Ada.Containers.Red_Black_Trees.Generic_Keys;
- pragma Elaborate_All (Ada.Containers.Red_Black_Trees.Generic_Keys);
- 
- with System; use type System.Address;
- 
- package body Ada.Containers.Indefinite_Ordered_Maps is
-    pragma Suppress (All_Checks);
- 
-    pragma Warnings (Off, "variable ""Busy*"" is not referenced");
-    pragma Warnings (Off, "variable ""Lock*"" is not referenced");
-    --  See comment in Ada.Containers.Helpers
- 
-    -----------------------------
-    -- 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_Access) return Color_Type;
-    pragma Inline (Color);
- 
-    function Left (Node : Node_Access) return Node_Access;
-    pragma Inline (Left);
- 
-    function Parent (Node : Node_Access) return Node_Access;
-    pragma Inline (Parent);
- 
-    function Right (Node : Node_Access) return Node_Access;
-    pragma Inline (Right);
- 
-    procedure Set_Parent (Node : Node_Access; Parent : Node_Access);
-    pragma Inline (Set_Parent);
- 
-    procedure Set_Left (Node : Node_Access; Left : Node_Access);
-    pragma Inline (Set_Left);
- 
-    procedure Set_Right (Node : Node_Access; Right : Node_Access);
-    pragma Inline (Set_Right);
- 
-    procedure Set_Color (Node : Node_Access; Color : Color_Type);
-    pragma Inline (Set_Color);
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    function Copy_Node (Source : Node_Access) return Node_Access;
-    pragma Inline (Copy_Node);
- 
-    procedure Free (X : in out Node_Access);
- 
-    function Is_Equal_Node_Node
-      (L, R : Node_Access) return Boolean;
-    pragma Inline (Is_Equal_Node_Node);
- 
-    function Is_Greater_Key_Node
-      (Left  : Key_Type;
-       Right : Node_Access) return Boolean;
-    pragma Inline (Is_Greater_Key_Node);
- 
-    function Is_Less_Key_Node
-      (Left  : Key_Type;
-       Right : Node_Access) return Boolean;
-    pragma Inline (Is_Less_Key_Node);
- 
-    --------------------------
-    -- Local Instantiations --
-    --------------------------
- 
-    package Tree_Operations is
-      new Red_Black_Trees.Generic_Operations (Tree_Types);
- 
-    procedure Delete_Tree is
-       new Tree_Operations.Generic_Delete_Tree (Free);
- 
-    function Copy_Tree is
-       new Tree_Operations.Generic_Copy_Tree (Copy_Node, Delete_Tree);
- 
-    use Tree_Operations;
- 
-    package Key_Ops is
-      new Red_Black_Trees.Generic_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);
- 
-    procedure Free_Key is
-      new Ada.Unchecked_Deallocation (Key_Type, Key_Access);
- 
-    procedure Free_Element is
-      new Ada.Unchecked_Deallocation (Element_Type, Element_Access);
- 
-    function Is_Equal is
-      new Tree_Operations.Generic_Equal (Is_Equal_Node_Node);
- 
-    ---------
-    -- "<" --
-    ---------
- 
-    function "<" (Left, Right : Cursor) return Boolean is
-    begin
-       if Checks and then Left.Node = null then
-          raise Constraint_Error with "Left cursor of ""<"" equals No_Element";
-       end if;
- 
-       if Checks and then Right.Node = null then
-          raise Constraint_Error with "Right cursor of ""<"" equals No_Element";
-       end if;
- 
-       if Checks and then Left.Node.Key = null then
-          raise Program_Error with "Left cursor in ""<"" is bad";
-       end if;
- 
-       if Checks and then Right.Node.Key = null then
-          raise Program_Error with "Right cursor in ""<"" is bad";
-       end if;
- 
-       pragma Assert (Vet (Left.Container.Tree, Left.Node),
-                      "Left cursor in ""<"" is bad");
- 
-       pragma Assert (Vet (Right.Container.Tree, Right.Node),
-                      "Right cursor in ""<"" is bad");
- 
-       return Left.Node.Key.all < Right.Node.Key.all;
-    end "<";
- 
-    function "<" (Left : Cursor; Right : Key_Type) return Boolean is
-    begin
-       if Checks and then Left.Node = null then
-          raise Constraint_Error with "Left cursor of ""<"" equals No_Element";
-       end if;
- 
-       if Checks and then Left.Node.Key = null then
-          raise Program_Error with "Left cursor in ""<"" is bad";
-       end if;
- 
-       pragma Assert (Vet (Left.Container.Tree, Left.Node),
-                      "Left cursor in ""<"" is bad");
- 
-       return Left.Node.Key.all < Right;
-    end "<";
- 
-    function "<" (Left : Key_Type; Right : Cursor) return Boolean is
-    begin
-       if Checks and then Right.Node = null then
-          raise Constraint_Error with "Right cursor of ""<"" equals No_Element";
-       end if;
- 
-       if Checks and then Right.Node.Key = null then
-          raise Program_Error with "Right cursor in ""<"" is bad";
-       end if;
- 
-       pragma Assert (Vet (Right.Container.Tree, Right.Node),
-                      "Right cursor in ""<"" is bad");
- 
-       return Left < Right.Node.Key.all;
-    end "<";
- 
-    ---------
-    -- "=" --
-    ---------
- 
-    function "=" (Left, Right : Map) return Boolean is
-    begin
-       return Is_Equal (Left.Tree, Right.Tree);
-    end "=";
- 
-    ---------
-    -- ">" --
-    ---------
- 
-    function ">" (Left, Right : Cursor) return Boolean is
-    begin
-       if Checks and then Left.Node = null then
-          raise Constraint_Error with "Left cursor of "">"" equals No_Element";
-       end if;
- 
-       if Checks and then Right.Node = null then
-          raise Constraint_Error with "Right cursor of "">"" equals No_Element";
-       end if;
- 
-       if Checks and then Left.Node.Key = null then
-          raise Program_Error with "Left cursor in ""<"" is bad";
-       end if;
- 
-       if Checks and then Right.Node.Key = null then
-          raise Program_Error with "Right cursor in ""<"" is bad";
-       end if;
- 
-       pragma Assert (Vet (Left.Container.Tree, Left.Node),
-                      "Left cursor in "">"" is bad");
- 
-       pragma Assert (Vet (Right.Container.Tree, Right.Node),
-                      "Right cursor in "">"" is bad");
- 
-       return Right.Node.Key.all < Left.Node.Key.all;
-    end ">";
- 
-    function ">" (Left : Cursor; Right : Key_Type) return Boolean is
-    begin
-       if Checks and then Left.Node = null then
-          raise Constraint_Error with "Left cursor of "">"" equals No_Element";
-       end if;
- 
-       if Checks and then Left.Node.Key = null then
-          raise Program_Error with "Left cursor in ""<"" is bad";
-       end if;
- 
-       pragma Assert (Vet (Left.Container.Tree, Left.Node),
-                      "Left cursor in "">"" is bad");
- 
-       return Right < Left.Node.Key.all;
-    end ">";
- 
-    function ">" (Left : Key_Type; Right : Cursor) return Boolean is
-    begin
-       if Checks and then Right.Node = null then
-          raise Constraint_Error with "Right cursor of "">"" equals No_Element";
-       end if;
- 
-       if Checks and then Right.Node.Key = null then
-          raise Program_Error with "Right cursor in ""<"" is bad";
-       end if;
- 
-       pragma Assert (Vet (Right.Container.Tree, Right.Node),
-                      "Right cursor in "">"" is bad");
- 
-       return Right.Node.Key.all < Left;
-    end ">";
- 
-    ------------
-    -- Adjust --
-    ------------
- 
-    procedure Adjust is new Tree_Operations.Generic_Adjust (Copy_Tree);
- 
-    procedure Adjust (Container : in out Map) is
-    begin
-       Adjust (Container.Tree);
-    end Adjust;
- 
-    ------------
-    -- Assign --
-    ------------
- 
-    procedure Assign (Target : in out Map; Source : Map) is
-       procedure Insert_Item (Node : Node_Access);
-       pragma Inline (Insert_Item);
- 
-       procedure Insert_Items is
-          new Tree_Operations.Generic_Iteration (Insert_Item);
- 
-       -----------------
-       -- Insert_Item --
-       -----------------
- 
-       procedure Insert_Item (Node : Node_Access) is
-       begin
-          Target.Insert (Key => Node.Key.all, New_Item => Node.Element.all);
-       end Insert_Item;
- 
-    --  Start of processing for Assign
- 
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       Target.Clear;
-       Insert_Items (Source.Tree);
-    end Assign;
- 
-    -------------
-    -- Ceiling --
-    -------------
- 
-    function Ceiling (Container : Map; Key : Key_Type) return Cursor is
-       Node : constant Node_Access := Key_Ops.Ceiling (Container.Tree, Key);
-    begin
-       return (if Node = null then No_Element
-                 else Cursor'(Container'Unrestricted_Access, Node));
-    end Ceiling;
- 
-    -----------
-    -- Clear --
-    -----------
- 
-    procedure Clear is new Tree_Operations.Generic_Clear (Delete_Tree);
- 
-    procedure Clear (Container : in out Map) is
-    begin
-       Clear (Container.Tree);
-    end Clear;
- 
-    -----------
-    -- Color --
-    -----------
- 
-    function Color (Node : Node_Access) return Color_Type is
-    begin
-       return Node.Color;
-    end Color;
- 
-    ------------------------
-    -- Constant_Reference --
-    ------------------------
- 
-    function Constant_Reference
-      (Container : aliased Map;
-       Position  : Cursor) return Constant_Reference_Type
-    is
-    begin
-       if Checks and then Position.Container = null then
-          raise Constraint_Error with
-            "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor designates wrong map";
-       end if;
- 
-       if Checks and then Position.Node.Element = null then
-          raise Program_Error with "Node has no element";
-       end if;
- 
-       pragma Assert (Vet (Container.Tree, Position.Node),
-                      "Position cursor in Constant_Reference is bad");
- 
-       declare
-          TC : constant Tamper_Counts_Access :=
-            Container.Tree.TC'Unrestricted_Access;
-       begin
-          return R : constant Constant_Reference_Type :=
-            (Element => Position.Node.Element.all'Access,
-             Control => (Controlled with TC))
-          do
-             Lock (TC.all);
-          end return;
-       end;
-    end Constant_Reference;
- 
-    function Constant_Reference
-      (Container : aliased Map;
-       Key       : Key_Type) return Constant_Reference_Type
-    is
-       Node : constant Node_Access := Key_Ops.Find (Container.Tree, Key);
- 
-    begin
-       if Checks and then Node = null then
-          raise Constraint_Error with "key not in map";
-       end if;
- 
-       if Checks and then Node.Element = null then
-          raise Program_Error with "Node has no element";
-       end if;
- 
-       declare
-          TC : constant Tamper_Counts_Access :=
-            Container.Tree.TC'Unrestricted_Access;
-       begin
-          return R : constant Constant_Reference_Type :=
-            (Element => Node.Element.all'Access,
-             Control => (Controlled with TC))
-          do
-             Lock (TC.all);
-          end return;
-       end;
-    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) return Map is
-    begin
-       return Target : Map do
-          Target.Assign (Source);
-       end return;
-    end Copy;
- 
-    ---------------
-    -- Copy_Node --
-    ---------------
- 
-    function Copy_Node (Source : Node_Access) return Node_Access is
-       K : Key_Access := new Key_Type'(Source.Key.all);
-       E : Element_Access;
- 
-    begin
-       E := new Element_Type'(Source.Element.all);
- 
-       return new Node_Type'(Parent  => null,
-                             Left    => null,
-                             Right   => null,
-                             Color   => Source.Color,
-                             Key     => K,
-                             Element => E);
- 
-    exception
-       when others =>
-          Free_Key (K);
-          Free_Element (E);
-          raise;
-    end Copy_Node;
- 
-    ------------
-    -- Delete --
-    ------------
- 
-    procedure Delete
-      (Container : in out Map;
-       Position  : in out Cursor)
-    is
-    begin
-       if Checks and then Position.Node = null then
-          raise Constraint_Error with
-            "Position cursor of Delete equals No_Element";
-       end if;
- 
-       if Checks and then
-         (Position.Node.Key = null or else Position.Node.Element = null)
-       then
-          raise Program_Error with "Position cursor of Delete is bad";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor of Delete designates wrong map";
-       end if;
- 
-       pragma Assert (Vet (Container.Tree, Position.Node),
-                      "Position cursor of Delete is bad");
- 
-       Tree_Operations.Delete_Node_Sans_Free (Container.Tree, Position.Node);
-       Free (Position.Node);
- 
-       Position.Container := null;
-    end Delete;
- 
-    procedure Delete (Container : in out Map; Key : Key_Type) is
-       X : Node_Access := Key_Ops.Find (Container.Tree, Key);
- 
-    begin
-       if Checks and then X = null then
-          raise Constraint_Error with "key not in map";
-       end if;
- 
-       Delete_Node_Sans_Free (Container.Tree, X);
-       Free (X);
-    end Delete;
- 
-    ------------------
-    -- Delete_First --
-    ------------------
- 
-    procedure Delete_First (Container : in out Map) is
-       X : Node_Access := Container.Tree.First;
-    begin
-       if X /= null then
-          Tree_Operations.Delete_Node_Sans_Free (Container.Tree, X);
-          Free (X);
-       end if;
-    end Delete_First;
- 
-    -----------------
-    -- Delete_Last --
-    -----------------
- 
-    procedure Delete_Last (Container : in out Map) is
-       X : Node_Access := Container.Tree.Last;
-    begin
-       if X /= null then
-          Tree_Operations.Delete_Node_Sans_Free (Container.Tree, X);
-          Free (X);
-       end if;
-    end Delete_Last;
- 
-    -------------
-    -- Element --
-    -------------
- 
-    function Element (Position : Cursor) return Element_Type is
-    begin
-       if Checks and then Position.Node = null then
-          raise Constraint_Error with
-            "Position cursor of function Element equals No_Element";
-       end if;
- 
-       if Checks and then Position.Node.Element = null then
-          raise Program_Error with
-            "Position cursor of function Element is bad";
-       end if;
- 
-       pragma Assert (Vet (Position.Container.Tree, Position.Node),
-                      "Position cursor of function Element is bad");
- 
-       return Position.Node.Element.all;
-    end Element;
- 
-    function Element (Container : Map; Key : Key_Type) return Element_Type is
-       Node : constant Node_Access := Key_Ops.Find (Container.Tree, Key);
- 
-    begin
-       if Checks and then Node = null then
-          raise Constraint_Error with "key not in map";
-       end if;
- 
-       return Node.Element.all;
-    end Element;
- 
-    ---------------------
-    -- Equivalent_Keys --
-    ---------------------
- 
-    function Equivalent_Keys (Left, Right : Key_Type) return Boolean is
-    begin
-       return (if Left < Right or else Right < Left then False else True);
-    end Equivalent_Keys;
- 
-    -------------
-    -- Exclude --
-    -------------
- 
-    procedure Exclude (Container : in out Map; Key : Key_Type) is
-       X : Node_Access := Key_Ops.Find (Container.Tree, Key);
-    begin
-       if X /= null then
-          Tree_Operations.Delete_Node_Sans_Free (Container.Tree, X);
-          Free (X);
-       end if;
-    end Exclude;
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    procedure Finalize (Object : in out Iterator) is
-    begin
-       if Object.Container /= null then
-          Unbusy (Object.Container.Tree.TC);
-       end if;
-    end Finalize;
- 
-    ----------
-    -- Find --
-    ----------
- 
-    function Find (Container : Map; Key : Key_Type) return Cursor is
-       Node : constant Node_Access := Key_Ops.Find (Container.Tree, Key);
-    begin
-       return (if Node = null then No_Element
-               else Cursor'(Container'Unrestricted_Access, Node));
-    end Find;
- 
-    -----------
-    -- First --
-    -----------
- 
-    function First (Container : Map) return Cursor is
-       T : Tree_Type renames Container.Tree;
-    begin
-       return (if T.First = null then No_Element
-               else Cursor'(Container'Unrestricted_Access, T.First));
-    end First;
- 
-    function First (Object : Iterator) return Cursor is
-    begin
-       --  The value of the iterator object's Node component influences the
-       --  behavior of the First (and Last) selector function.
- 
-       --  When the Node component is null, this means the iterator object was
-       --  constructed without a start expression, in which case the (forward)
-       --  iteration starts from the (logical) beginning of the entire sequence
-       --  of items (corresponding to Container.First for a forward iterator).
- 
-       --  Otherwise, this is iteration over a partial sequence of items. When
-       --  the Node component is non-null, the iterator object was constructed
-       --  with a start expression, that specifies the position from which the
-       --  (forward) partial iteration begins.
- 
-       if Object.Node = null then
-          return Object.Container.First;
-       else
-          return Cursor'(Object.Container, Object.Node);
-       end if;
-    end First;
- 
-    -------------------
-    -- First_Element --
-    -------------------
- 
-    function First_Element (Container : Map) return Element_Type is
-       T : Tree_Type renames Container.Tree;
-    begin
-       if Checks and then T.First = null then
-          raise Constraint_Error with "map is empty";
-       end if;
- 
-       return T.First.Element.all;
-    end First_Element;
- 
-    ---------------
-    -- First_Key --
-    ---------------
- 
-    function First_Key (Container : Map) return Key_Type is
-       T : Tree_Type renames Container.Tree;
-    begin
-       if Checks and then T.First = null then
-          raise Constraint_Error with "map is empty";
-       end if;
- 
-       return T.First.Key.all;
-    end First_Key;
- 
-    -----------
-    -- Floor --
-    -----------
- 
-    function Floor (Container : Map; Key : Key_Type) return Cursor is
-       Node : constant Node_Access := Key_Ops.Floor (Container.Tree, Key);
-    begin
-       return (if Node = null then No_Element
-               else Cursor'(Container'Unrestricted_Access, Node));
-    end Floor;
- 
-    ----------
-    -- Free --
-    ----------
- 
-    procedure Free (X : in out Node_Access) is
-       procedure Deallocate is
-         new Ada.Unchecked_Deallocation (Node_Type, Node_Access);
- 
-    begin
-       if X = null then
-          return;
-       end if;
- 
-       X.Parent := X;
-       X.Left := X;
-       X.Right := X;
- 
-       begin
-          Free_Key (X.Key);
- 
-       exception
-          when others =>
-             X.Key := null;
- 
-             begin
-                Free_Element (X.Element);
-             exception
-                when others =>
-                   X.Element := null;
-             end;
- 
-             Deallocate (X);
-             raise;
-       end;
- 
-       begin
-          Free_Element (X.Element);
- 
-       exception
-          when others =>
-             X.Element := null;
- 
-             Deallocate (X);
-             raise;
-       end;
- 
-       Deallocate (X);
-    end Free;
- 
-    ------------------------
-    -- Get_Element_Access --
-    ------------------------
- 
-    function Get_Element_Access
-      (Position : Cursor) return not null Element_Access is
-    begin
-       return Position.Node.Element;
-    end Get_Element_Access;
- 
-    -----------------
-    -- Has_Element --
-    -----------------
- 
-    function Has_Element (Position : Cursor) return Boolean is
-    begin
-       return Position /= No_Element;
-    end Has_Element;
- 
-    -------------
-    -- Include --
-    -------------
- 
-    procedure Include
-      (Container : in out Map;
-       Key       : Key_Type;
-       New_Item  : Element_Type)
-    is
-       Position : Cursor;
-       Inserted : Boolean;
- 
-       K : Key_Access;
-       E : Element_Access;
- 
-    begin
-       Insert (Container, Key, New_Item, Position, Inserted);
- 
-       if not Inserted then
-          TE_Check (Container.Tree.TC);
- 
-          K := Position.Node.Key;
-          E := Position.Node.Element;
- 
-          Position.Node.Key := new Key_Type'(Key);
- 
-          declare
-             --  The element allocator may need an accessibility check in the
-             --  case the actual type is class-wide or has access discriminants
-             --  (see RM 4.8(10.1) and AI12-0035).
- 
-             pragma Unsuppress (Accessibility_Check);
- 
-          begin
-             Position.Node.Element := new Element_Type'(New_Item);
- 
-          exception
-             when others =>
-                Free_Key (K);
-                raise;
-          end;
- 
-          Free_Key (K);
-          Free_Element (E);
-       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
-       function New_Node return Node_Access;
-       pragma Inline (New_Node);
- 
-       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
-          Node : Node_Access := new Node_Type;
- 
-          --  The element allocator may need an accessibility check in the case
-          --  the actual type is class-wide or has access discriminants (see
-          --  RM 4.8(10.1) and AI12-0035).
- 
-          pragma Unsuppress (Accessibility_Check);
- 
-       begin
-          Node.Key := new Key_Type'(Key);
-          Node.Element := new Element_Type'(New_Item);
-          return Node;
- 
-       exception
-          when others =>
- 
-             --  On exception, deallocate key and elem. Note that free
-             --  deallocates both the key and the elem.
- 
-             Free (Node);
-             raise;
-       end New_Node;
- 
-    --  Start of processing for Insert
- 
-    begin
-       Insert_Sans_Hint
-         (Container.Tree,
-          Key,
-          Position.Node,
-          Inserted);
- 
-       Position.Container := Container'Unrestricted_Access;
-    end Insert;
- 
-    procedure Insert
-      (Container : in out Map;
-       Key       : Key_Type;
-       New_Item  : Element_Type)
-    is
-       Position : Cursor;
-       pragma Unreferenced (Position);
- 
-       Inserted : Boolean;
- 
-    begin
-       Insert (Container, Key, New_Item, Position, Inserted);
- 
-       if Checks and then 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 Container.Tree.Length = 0;
-    end Is_Empty;
- 
-    ------------------------
-    -- Is_Equal_Node_Node --
-    ------------------------
- 
-    function Is_Equal_Node_Node (L, R : Node_Access) return Boolean is
-    begin
-       return (if L.Key.all < R.Key.all then False
-               elsif R.Key.all < L.Key.all then False
-               else L.Element.all = R.Element.all);
-    end Is_Equal_Node_Node;
- 
-    -------------------------
-    -- Is_Greater_Key_Node --
-    -------------------------
- 
-    function Is_Greater_Key_Node
-      (Left  : Key_Type;
-       Right : Node_Access) return Boolean
-    is
-    begin
-       --  k > node same as node < k
- 
-       return Right.Key.all < Left;
-    end Is_Greater_Key_Node;
- 
-    ----------------------
-    -- Is_Less_Key_Node --
-    ----------------------
- 
-    function Is_Less_Key_Node
-      (Left  : Key_Type;
-       Right : Node_Access) return Boolean is
-    begin
-       return Left < Right.Key.all;
-    end Is_Less_Key_Node;
- 
-    -------------
-    -- Iterate --
-    -------------
- 
-    procedure Iterate
-      (Container : Map;
-       Process   : not null access procedure (Position : Cursor))
-    is
-       procedure Process_Node (Node : Node_Access);
-       pragma Inline (Process_Node);
- 
-       procedure Local_Iterate is
-         new Tree_Operations.Generic_Iteration (Process_Node);
- 
-       ------------------
-       -- Process_Node --
-       ------------------
- 
-       procedure Process_Node (Node : Node_Access) is
-       begin
-          Process (Cursor'(Container'Unrestricted_Access, Node));
-       end Process_Node;
- 
-       Busy : With_Busy (Container.Tree.TC'Unrestricted_Access);
- 
-    --  Start of processing for Iterate
- 
-    begin
-       Local_Iterate (Container.Tree);
-    end Iterate;
- 
-    function Iterate
-      (Container : Map) return Map_Iterator_Interfaces.Reversible_Iterator'Class
-    is
-    begin
-       --  The value of the Node component influences the behavior of the First
-       --  and Last selector functions of the iterator object. When the Node
-       --  component is null (as is the case here), this means the iterator
-       --  object was constructed without a start expression. This is a complete
-       --  iterator, meaning that the iteration starts from the (logical)
-       --  beginning of the sequence of items.
- 
-       --  Note: For a forward iterator, Container.First is the beginning, and
-       --  for a reverse iterator, Container.Last is the beginning.
- 
-       return It : constant Iterator :=
-         (Limited_Controlled with
-            Container => Container'Unrestricted_Access,
-            Node      => null)
-       do
-          Busy (Container.Tree.TC'Unrestricted_Access.all);
-       end return;
-    end Iterate;
- 
-    function Iterate
-      (Container : Map;
-       Start     : Cursor)
-       return Map_Iterator_Interfaces.Reversible_Iterator'Class
-    is
-    begin
-       --  It was formerly the case that when Start = No_Element, the partial
-       --  iterator was defined to behave the same as for a complete iterator,
-       --  and iterate over the entire sequence of items. However, those
-       --  semantics were unintuitive and arguably error-prone (it is too easy
-       --  to accidentally create an endless loop), and so they were changed,
-       --  per the ARG meeting in Denver on 2011/11. However, there was no
-       --  consensus about what positive meaning this corner case should have,
-       --  and so it was decided to simply raise an exception. This does imply,
-       --  however, that it is not possible to use a partial iterator to specify
-       --  an empty sequence of items.
- 
-       if Checks and then Start = No_Element then
-          raise Constraint_Error with
-            "Start position for iterator equals No_Element";
-       end if;
- 
-       if Checks and then Start.Container /= Container'Unrestricted_Access then
-          raise Program_Error with
-            "Start cursor of Iterate designates wrong map";
-       end if;
- 
-       pragma Assert (Vet (Container.Tree, Start.Node),
-                      "Start cursor of Iterate is bad");
- 
-       --  The value of the Node component influences the behavior of the First
-       --  and Last selector functions of the iterator object. When the Node
-       --  component is non-null (as is the case here), it means that this
-       --  is a partial iteration, over a subset of the complete sequence of
-       --  items. The iterator object was constructed with a start expression,
-       --  indicating the position from which the iteration begins. Note that
-       --  the start position has the same value irrespective of whether this
-       --  is a forward or reverse iteration.
- 
-       return It : constant Iterator :=
-         (Limited_Controlled with
-            Container => Container'Unrestricted_Access,
-            Node      => Start.Node)
-       do
-          Busy (Container.Tree.TC'Unrestricted_Access.all);
-       end return;
-    end Iterate;
- 
-    ---------
-    -- Key --
-    ---------
- 
-    function Key (Position : Cursor) return Key_Type is
-    begin
-       if Checks and then Position.Node = null then
-          raise Constraint_Error with
-            "Position cursor of function Key equals No_Element";
-       end if;
- 
-       if Checks and then Position.Node.Key = null then
-          raise Program_Error with
-            "Position cursor of function Key is bad";
-       end if;
- 
-       pragma Assert (Vet (Position.Container.Tree, Position.Node),
-                      "Position cursor of function Key is bad");
- 
-       return Position.Node.Key.all;
-    end Key;
- 
-    ----------
-    -- Last --
-    ----------
- 
-    function Last (Container : Map) return Cursor is
-       T : Tree_Type renames Container.Tree;
-    begin
-       return (if T.Last = null then No_Element
-               else Cursor'(Container'Unrestricted_Access, T.Last));
-    end Last;
- 
-    function Last (Object : Iterator) return Cursor is
-    begin
-       --  The value of the iterator object's Node component influences the
-       --  behavior of the Last (and First) selector function.
- 
-       --  When the Node component is null, this means the iterator object was
-       --  constructed without a start expression, in which case the (reverse)
-       --  iteration starts from the (logical) beginning of the entire sequence
-       --  (corresponding to Container.Last, for a reverse iterator).
- 
-       --  Otherwise, this is iteration over a partial sequence of items. When
-       --  the Node component is non-null, the iterator object was constructed
-       --  with a start expression, that specifies the position from which the
-       --  (reverse) partial iteration begins.
- 
-       if Object.Node = null then
-          return Object.Container.Last;
-       else
-          return Cursor'(Object.Container, Object.Node);
-       end if;
-    end Last;
- 
-    ------------------
-    -- Last_Element --
-    ------------------
- 
-    function Last_Element (Container : Map) return Element_Type is
-       T : Tree_Type renames Container.Tree;
- 
-    begin
-       if Checks and then T.Last = null then
-          raise Constraint_Error with "map is empty";
-       end if;
- 
-       return T.Last.Element.all;
-    end Last_Element;
- 
-    --------------
-    -- Last_Key --
-    --------------
- 
-    function Last_Key (Container : Map) return Key_Type is
-       T : Tree_Type renames Container.Tree;
- 
-    begin
-       if Checks and then T.Last = null then
-          raise Constraint_Error with "map is empty";
-       end if;
- 
-       return T.Last.Key.all;
-    end Last_Key;
- 
-    ----------
-    -- Left --
-    ----------
- 
-    function Left (Node : Node_Access) return Node_Access is
-    begin
-       return Node.Left;
-    end Left;
- 
-    ------------
-    -- Length --
-    ------------
- 
-    function Length (Container : Map) return Count_Type is
-    begin
-       return Container.Tree.Length;
-    end Length;
- 
-    ----------
-    -- Move --
-    ----------
- 
-    procedure Move is new Tree_Operations.Generic_Move (Clear);
- 
-    procedure Move (Target : in out Map; Source : in out Map) is
-    begin
-       Move (Target => Target.Tree, Source => Source.Tree);
-    end Move;
- 
-    ----------
-    -- Next --
-    ----------
- 
-    function Next (Position : Cursor) return Cursor is
-    begin
-       if Position = No_Element then
-          return No_Element;
-       end if;
- 
-       pragma Assert (Position.Node /= null);
-       pragma Assert (Position.Node.Key /= null);
-       pragma Assert (Position.Node.Element /= null);
-       pragma Assert (Vet (Position.Container.Tree, Position.Node),
-                      "Position cursor of Next is bad");
- 
-       declare
-          Node : constant Node_Access :=
-            Tree_Operations.Next (Position.Node);
-       begin
-          return (if Node = null then No_Element
-                  else Cursor'(Position.Container, Node));
-       end;
-    end Next;
- 
-    procedure Next (Position : in out Cursor) is
-    begin
-       Position := Next (Position);
-    end Next;
- 
-    function Next
-      (Object   : Iterator;
-       Position : Cursor) return Cursor
-    is
-    begin
-       if Position.Container = null then
-          return No_Element;
-       end if;
- 
-       if Checks and then Position.Container /= Object.Container then
-          raise Program_Error with
-            "Position cursor of Next designates wrong map";
-       end if;
- 
-       return Next (Position);
-    end Next;
- 
-    ------------
-    -- Parent --
-    ------------
- 
-    function Parent (Node : Node_Access) return Node_Access is
-    begin
-       return Node.Parent;
-    end Parent;
- 
-    --------------
-    -- Previous --
-    --------------
- 
-    function Previous (Position : Cursor) return Cursor is
-    begin
-       if Position = No_Element then
-          return No_Element;
-       end if;
- 
-       pragma Assert (Position.Node /= null);
-       pragma Assert (Position.Node.Key /= null);
-       pragma Assert (Position.Node.Element /= null);
-       pragma Assert (Vet (Position.Container.Tree, Position.Node),
-                      "Position cursor of Previous is bad");
- 
-       declare
-          Node : constant Node_Access :=
-            Tree_Operations.Previous (Position.Node);
-       begin
-          return (if Node = null then No_Element
-                  else Cursor'(Position.Container, Node));
-       end;
-    end Previous;
- 
-    procedure Previous (Position : in out Cursor) is
-    begin
-       Position := Previous (Position);
-    end Previous;
- 
-    function Previous
-      (Object   : Iterator;
-       Position : Cursor) return Cursor
-    is
-    begin
-       if Position.Container = null then
-          return No_Element;
-       end if;
- 
-       if Checks and then Position.Container /= Object.Container then
-          raise Program_Error with
-            "Position cursor of Previous designates wrong map";
-       end if;
- 
-       return Previous (Position);
-    end Previous;
- 
-    ----------------------
-    -- Pseudo_Reference --
-    ----------------------
- 
-    function Pseudo_Reference
-      (Container : aliased Map'Class) return Reference_Control_Type
-    is
-       TC : constant Tamper_Counts_Access :=
-         Container.Tree.TC'Unrestricted_Access;
-    begin
-       return R : constant Reference_Control_Type := (Controlled with TC) do
-          Lock (TC.all);
-       end return;
-    end Pseudo_Reference;
- 
-    -------------------
-    -- Query_Element --
-    -------------------
- 
-    procedure Query_Element
-      (Position : Cursor;
-       Process  : not null access procedure (Key     : Key_Type;
-                                             Element : Element_Type))
-    is
-    begin
-       if Checks and then Position.Node = null then
-          raise Constraint_Error with
-            "Position cursor of Query_Element equals No_Element";
-       end if;
- 
-       if Checks and then
-         (Position.Node.Key = null or else Position.Node.Element = null)
-       then
-          raise Program_Error with
-            "Position cursor of Query_Element is bad";
-       end if;
- 
-       pragma Assert (Vet (Position.Container.Tree, Position.Node),
-                      "Position cursor of Query_Element is bad");
- 
-       declare
-          T : Tree_Type renames Position.Container.Tree;
-          Lock : With_Lock (T.TC'Unrestricted_Access);
-          K : Key_Type renames Position.Node.Key.all;
-          E : Element_Type renames Position.Node.Element.all;
-       begin
-          Process (K, E);
-       end;
-    end Query_Element;
- 
-    ----------
-    -- Read --
-    ----------
- 
-    procedure Read
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : out Map)
-    is
-       function Read_Node
-         (Stream : not null access Root_Stream_Type'Class) return Node_Access;
-       pragma Inline (Read_Node);
- 
-       procedure Read is
-          new Tree_Operations.Generic_Read (Clear, Read_Node);
- 
-       ---------------
-       -- Read_Node --
-       ---------------
- 
-       function Read_Node
-         (Stream : not null access Root_Stream_Type'Class) return Node_Access
-       is
-          Node : Node_Access := new Node_Type;
-       begin
-          Node.Key := new Key_Type'(Key_Type'Input (Stream));
-          Node.Element := new Element_Type'(Element_Type'Input (Stream));
-          return Node;
-       exception
-          when others =>
-             Free (Node);  --  Note that Free deallocates key and elem too
-             raise;
-       end Read_Node;
- 
-    --  Start of processing for Read
- 
-    begin
-       Read (Stream, Container.Tree);
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Cursor)
-    is
-    begin
-       raise Program_Error with "attempt to stream map cursor";
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Constant_Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Read;
- 
-    ---------------
-    -- Reference --
-    ---------------
- 
-    function Reference
-      (Container : aliased in out Map;
-       Position  : Cursor) return Reference_Type
-    is
-    begin
-       if Checks and then Position.Container = null then
-          raise Constraint_Error with
-            "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor designates wrong map";
-       end if;
- 
-       if Checks and then Position.Node.Element = null then
-          raise Program_Error with "Node has no element";
-       end if;
- 
-       pragma Assert (Vet (Container.Tree, Position.Node),
-                      "Position cursor in function Reference is bad");
- 
-       declare
-          TC : constant Tamper_Counts_Access :=
-            Container.Tree.TC'Unrestricted_Access;
-       begin
-          return R : constant Reference_Type :=
-            (Element => Position.Node.Element.all'Access,
-             Control => (Controlled with TC))
-          do
-             Lock (TC.all);
-          end return;
-       end;
-    end Reference;
- 
-    function Reference
-      (Container : aliased in out Map;
-       Key       : Key_Type) return Reference_Type
-    is
-       Node : constant Node_Access := Key_Ops.Find (Container.Tree, Key);
- 
-    begin
-       if Checks and then Node = null then
-          raise Constraint_Error with "key not in map";
-       end if;
- 
-       if Checks and then Node.Element = null then
-          raise Program_Error with "Node has no element";
-       end if;
- 
-       declare
-          TC : constant Tamper_Counts_Access :=
-            Container.Tree.TC'Unrestricted_Access;
-       begin
-          return R : constant Reference_Type :=
-            (Element => Node.Element.all'Access,
-             Control => (Controlled with TC))
-          do
-             Lock (TC.all);
-          end return;
-       end;
-    end Reference;
- 
-    -------------
-    -- Replace --
-    -------------
- 
-    procedure Replace
-      (Container : in out Map;
-       Key       : Key_Type;
-       New_Item  : Element_Type)
-    is
-       Node : constant Node_Access := Key_Ops.Find (Container.Tree, Key);
- 
-       K : Key_Access;
-       E : Element_Access;
- 
-    begin
-       if Checks and then Node = null then
-          raise Constraint_Error with "key not in map";
-       end if;
- 
-       TE_Check (Container.Tree.TC);
- 
-       K := Node.Key;
-       E := Node.Element;
- 
-       Node.Key := new Key_Type'(Key);
- 
-       declare
-          --  The element allocator may need an accessibility check in the case
-          --  the actual type is class-wide or has access discriminants (see
-          --  RM 4.8(10.1) and AI12-0035).
- 
-          pragma Unsuppress (Accessibility_Check);
- 
-       begin
-          Node.Element := new Element_Type'(New_Item);
- 
-       exception
-          when others =>
-             Free_Key (K);
-             raise;
-       end;
- 
-       Free_Key (K);
-       Free_Element (E);
-    end Replace;
- 
-    ---------------------
-    -- Replace_Element --
-    ---------------------
- 
-    procedure Replace_Element
-      (Container : in out Map;
-       Position  : Cursor;
-       New_Item  : Element_Type)
-    is
-    begin
-       if Checks and then Position.Node = null then
-          raise Constraint_Error with
-            "Position cursor of Replace_Element equals No_Element";
-       end if;
- 
-       if Checks and then
-         (Position.Node.Key = null or else Position.Node.Element = null)
-       then
-          raise Program_Error with
-            "Position cursor of Replace_Element is bad";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor of Replace_Element designates wrong map";
-       end if;
- 
-       TE_Check (Container.Tree.TC);
- 
-       pragma Assert (Vet (Container.Tree, Position.Node),
-                      "Position cursor of Replace_Element is bad");
- 
-       declare
-          X : Element_Access := Position.Node.Element;
- 
-          --  The element allocator may need an accessibility check in the case
-          --  the actual type is class-wide or has access discriminants (see
-          --  RM 4.8(10.1) and AI12-0035).
- 
-          pragma Unsuppress (Accessibility_Check);
- 
-       begin
-          Position.Node.Element := new Element_Type'(New_Item);
-          Free_Element (X);
-       end;
-    end Replace_Element;
- 
-    ---------------------
-    -- Reverse_Iterate --
-    ---------------------
- 
-    procedure Reverse_Iterate
-      (Container : Map;
-       Process   : not null access procedure (Position : Cursor))
-    is
-       procedure Process_Node (Node : Node_Access);
-       pragma Inline (Process_Node);
- 
-       procedure Local_Reverse_Iterate is
-         new Tree_Operations.Generic_Reverse_Iteration (Process_Node);
- 
-       ------------------
-       -- Process_Node --
-       ------------------
- 
-       procedure Process_Node (Node : Node_Access) is
-       begin
-          Process (Cursor'(Container'Unrestricted_Access, Node));
-       end Process_Node;
- 
-       Busy : With_Busy (Container.Tree.TC'Unrestricted_Access);
- 
-    --  Start of processing for Reverse_Iterate
- 
-    begin
-       Local_Reverse_Iterate (Container.Tree);
-    end Reverse_Iterate;
- 
-    -----------
-    -- Right --
-    -----------
- 
-    function Right (Node : Node_Access) return Node_Access is
-    begin
-       return Node.Right;
-    end Right;
- 
-    ---------------
-    -- Set_Color --
-    ---------------
- 
-    procedure Set_Color (Node : Node_Access; Color : Color_Type) is
-    begin
-       Node.Color := Color;
-    end Set_Color;
- 
-    --------------
-    -- Set_Left --
-    --------------
- 
-    procedure Set_Left (Node : Node_Access; Left : Node_Access) is
-    begin
-       Node.Left := Left;
-    end Set_Left;
- 
-    ----------------
-    -- Set_Parent --
-    ----------------
- 
-    procedure Set_Parent (Node : Node_Access; Parent : Node_Access) is
-    begin
-       Node.Parent := Parent;
-    end Set_Parent;
- 
-    ---------------
-    -- Set_Right --
-    ---------------
- 
-    procedure Set_Right (Node : Node_Access; Right : Node_Access) is
-    begin
-       Node.Right := Right;
-    end Set_Right;
- 
-    --------------------
-    -- Update_Element --
-    --------------------
- 
-    procedure Update_Element
-      (Container : in out Map;
-       Position  : Cursor;
-       Process   : not null access procedure (Key     : Key_Type;
-                                              Element : in out Element_Type))
-    is
-    begin
-       if Checks and then Position.Node = null then
-          raise Constraint_Error with
-            "Position cursor of Update_Element equals No_Element";
-       end if;
- 
-       if Checks and then
-         (Position.Node.Key = null or else Position.Node.Element = null)
-       then
-          raise Program_Error with
-            "Position cursor of Update_Element is bad";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor of Update_Element designates wrong map";
-       end if;
- 
-       pragma Assert (Vet (Container.Tree, Position.Node),
-                      "Position cursor of Update_Element is bad");
- 
-       declare
-          T : Tree_Type renames Position.Container.Tree;
-          Lock : With_Lock (T.TC'Unrestricted_Access);
-          K : Key_Type renames Position.Node.Key.all;
-          E : Element_Type renames Position.Node.Element.all;
-       begin
-          Process (K, E);
-       end;
-    end Update_Element;
- 
-    -----------
-    -- Write --
-    -----------
- 
-    procedure Write
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : Map)
-    is
-       procedure Write_Node
-         (Stream : not null access Root_Stream_Type'Class;
-          Node   : Node_Access);
-       pragma Inline (Write_Node);
- 
-       procedure Write is
-          new Tree_Operations.Generic_Write (Write_Node);
- 
-       ----------------
-       -- Write_Node --
-       ----------------
- 
-       procedure Write_Node
-         (Stream : not null access Root_Stream_Type'Class;
-          Node   : Node_Access)
-       is
-       begin
-          Key_Type'Output (Stream, Node.Key.all);
-          Element_Type'Output (Stream, Node.Element.all);
-       end Write_Node;
- 
-    --  Start of processing for Write
- 
-    begin
-       Write (Stream, Container.Tree);
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Cursor)
-    is
-    begin
-       raise Program_Error with "attempt to stream map cursor";
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Constant_Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Write;
- 
- end Ada.Containers.Indefinite_Ordered_Maps;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ciorma.ads gcc-8.1.0/gcc/ada/a-ciorma.ads
*** gcc-7.3.0/gcc/ada/a-ciorma.ads	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-ciorma.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,388 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                 ADA.CONTAINERS.INDEFINITE_ORDERED_MAPS                   --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, 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/>.                                          --
- --                                                                          --
- -- This unit was originally developed by Matthew J Heaney.                  --
- ------------------------------------------------------------------------------
- 
- with Ada.Iterator_Interfaces;
- 
- private with Ada.Containers.Red_Black_Trees;
- private with Ada.Finalization;
- private with Ada.Streams;
- 
- 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.Indefinite_Ordered_Maps is
-    pragma Annotate (CodePeer, Skip_Analysis);
-    pragma Preelaborate;
-    pragma Remote_Types;
- 
-    function Equivalent_Keys (Left, Right : Key_Type) return Boolean;
- 
-    type Map is tagged private
-    with Constant_Indexing => Constant_Reference,
-         Variable_Indexing => Reference,
-         Default_Iterator  => Iterate,
-         Iterator_Element  => Element_Type;
- 
-    pragma Preelaborable_Initialization (Map);
- 
-    type Cursor is private;
-    pragma Preelaborable_Initialization (Cursor);
- 
-    Empty_Map : constant Map;
- 
-    No_Element : constant Cursor;
-    function Has_Element (Position : Cursor) return Boolean;
- 
-    package Map_Iterator_Interfaces is new
-      Ada.Iterator_Interfaces (Cursor, Has_Element);
- 
-    function "=" (Left, Right : Map) return Boolean;
- 
-    function Length (Container : Map) return Count_Type;
- 
-    function Is_Empty (Container : Map) return Boolean;
- 
-    procedure Clear (Container : in out Map);
- 
-    function Key (Position : Cursor) return Key_Type;
- 
-    function Element (Position : Cursor) return Element_Type;
- 
-    procedure Replace_Element
-      (Container : in out Map;
-       Position  : Cursor;
-       New_Item  : Element_Type);
- 
-    procedure Query_Element
-      (Position : Cursor;
-       Process  : not null access procedure (Key     : Key_Type;
-                                             Element : Element_Type));
- 
-    procedure Update_Element
-      (Container : in out Map;
-       Position  : Cursor;
-       Process   : not null access procedure (Key     : Key_Type;
-                                              Element : in out Element_Type));
- 
-    type Constant_Reference_Type
-       (Element : not null access constant Element_Type) is private
-    with
-       Implicit_Dereference => Element;
- 
-    type Reference_Type (Element : not null access Element_Type) is private
-    with
-       Implicit_Dereference => Element;
- 
-    function Constant_Reference
-      (Container : aliased Map;
-       Position  : Cursor) return Constant_Reference_Type;
-    pragma Inline (Constant_Reference);
- 
-    function Reference
-      (Container : aliased in out Map;
-       Position  : Cursor) return Reference_Type;
-    pragma Inline (Reference);
- 
-    function Constant_Reference
-      (Container : aliased Map;
-       Key       : Key_Type) return Constant_Reference_Type;
-    pragma Inline (Constant_Reference);
- 
-    function Reference
-      (Container : aliased in out Map;
-       Key       : Key_Type) return Reference_Type;
-    pragma Inline (Reference);
- 
-    procedure Assign (Target : in out Map; Source : Map);
- 
-    function Copy (Source : Map) return Map;
- 
-    procedure Move (Target : in out Map; Source : in out Map);
- 
-    procedure Insert
-      (Container : in out Map;
-       Key       : Key_Type;
-       New_Item  : Element_Type;
-       Position  : out Cursor;
-       Inserted  : out Boolean);
- 
-    procedure Insert
-      (Container : in out Map;
-       Key       : Key_Type;
-       New_Item  : Element_Type);
- 
-    procedure Include
-      (Container : in out Map;
-       Key       : Key_Type;
-       New_Item  : Element_Type);
- 
-    procedure Replace
-      (Container : in out Map;
-       Key       : Key_Type;
-       New_Item  : Element_Type);
- 
-    procedure Exclude (Container : in out Map; Key : Key_Type);
- 
-    procedure Delete (Container : in out Map; Key : Key_Type);
- 
-    procedure Delete (Container : in out Map; Position : in out Cursor);
- 
-    procedure Delete_First (Container : in out Map);
- 
-    procedure Delete_Last (Container : in out Map);
- 
-    function First (Container : Map) return Cursor;
- 
-    function First_Element (Container : Map) return Element_Type;
- 
-    function First_Key (Container : Map) return Key_Type;
- 
-    function Last (Container : Map) return Cursor;
- 
-    function Last_Element (Container : Map) return Element_Type;
- 
-    function Last_Key (Container : Map) return Key_Type;
- 
-    function Next (Position : Cursor) return Cursor;
- 
-    procedure Next (Position : in out Cursor);
- 
-    function Previous (Position : Cursor) return Cursor;
- 
-    procedure Previous (Position : in out Cursor);
- 
-    function Find (Container : Map; Key : Key_Type) return Cursor;
- 
-    function Element (Container : Map; Key : Key_Type) return Element_Type;
- 
-    function Floor (Container : Map; Key : Key_Type) return Cursor;
- 
-    function Ceiling (Container : Map; Key : Key_Type) return Cursor;
- 
-    function Contains (Container : Map; Key : Key_Type) return Boolean;
- 
-    function "<" (Left, Right : Cursor) return Boolean;
- 
-    function ">" (Left, Right : Cursor) return Boolean;
- 
-    function "<" (Left : Cursor; Right : Key_Type) return Boolean;
- 
-    function ">" (Left : Cursor; Right : Key_Type) return Boolean;
- 
-    function "<" (Left : Key_Type; Right : Cursor) return Boolean;
- 
-    function ">" (Left : Key_Type; Right : Cursor) return Boolean;
- 
-    procedure Iterate
-      (Container : Map;
-       Process   : not null access procedure (Position : Cursor));
- 
-    procedure Reverse_Iterate
-      (Container : Map;
-       Process   : not null access procedure (Position : Cursor));
- 
-    --  The map container supports iteration in both the forward and reverse
-    --  directions, hence these constructor functions return an object that
-    --  supports the Reversible_Iterator interface.
- 
-    function Iterate
-      (Container : Map)
-       return Map_Iterator_Interfaces.Reversible_Iterator'Class;
- 
-    function Iterate
-      (Container : Map;
-       Start     : Cursor)
-       return Map_Iterator_Interfaces.Reversible_Iterator'Class;
- 
- private
- 
-    pragma Inline (Next);
-    pragma Inline (Previous);
- 
-    type Node_Type;
-    type Node_Access is access Node_Type;
- 
-    type Key_Access is access Key_Type;
-    type Element_Access is access all Element_Type;
- 
-    type Node_Type is limited record
-       Parent  : Node_Access;
-       Left    : Node_Access;
-       Right   : Node_Access;
-       Color   : Red_Black_Trees.Color_Type := Red_Black_Trees.Red;
-       Key     : Key_Access;
-       Element : Element_Access;
-    end record;
- 
-    package Tree_Types is new Red_Black_Trees.Generic_Tree_Types
-      (Node_Type,
-       Node_Access);
- 
-    type Map is new Ada.Finalization.Controlled with record
-       Tree : Tree_Types.Tree_Type;
-    end record;
- 
-    overriding procedure Adjust (Container : in out Map);
- 
-    overriding procedure Finalize (Container : in out Map) renames Clear;
- 
-    use Red_Black_Trees;
-    use Tree_Types, Tree_Types.Implementation;
-    use Ada.Finalization;
-    use Ada.Streams;
- 
-    procedure Write
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : Map);
- 
-    for Map'Write use Write;
- 
-    procedure Read
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : out Map);
- 
-    for Map'Read use Read;
- 
-    type Map_Access is access all Map;
-    for Map_Access'Storage_Size use 0;
- 
-    type Cursor is record
-       Container : Map_Access;
-       Node      : Node_Access;
-    end record;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Cursor);
- 
-    for Cursor'Write use Write;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Cursor);
- 
-    for Cursor'Read use Read;
- 
-    subtype Reference_Control_Type is Implementation.Reference_Control_Type;
-    --  It is necessary to rename this here, so that the compiler can find it
- 
-    type Constant_Reference_Type
-      (Element : not null access constant Element_Type) is
-       record
-          Control : Reference_Control_Type :=
-            raise Program_Error with "uninitialized reference";
-          --  The RM says, "The default initialization of an object of
-          --  type Constant_Reference_Type or Reference_Type propagates
-          --  Program_Error."
-       end record;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Constant_Reference_Type);
- 
-    for Constant_Reference_Type'Read use Read;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Constant_Reference_Type);
- 
-    for Constant_Reference_Type'Write use Write;
- 
-    type Reference_Type
-      (Element : not null access Element_Type) is
-       record
-          Control : Reference_Control_Type :=
-            raise Program_Error with "uninitialized reference";
-          --  The RM says, "The default initialization of an object of
-          --  type Constant_Reference_Type or Reference_Type propagates
-          --  Program_Error."
-       end record;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Reference_Type);
- 
-    for Reference_Type'Read use Read;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Reference_Type);
- 
-    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;
-    pragma Inline (Pseudo_Reference);
-    --  Creates an object of type Reference_Control_Type pointing to the
-    --  container, and increments the Lock. Finalization of this object will
-    --  decrement the Lock.
- 
-    function Get_Element_Access
-      (Position : Cursor) return not null Element_Access;
-    --  Returns a pointer to the element designated by Position.
- 
-    Empty_Map : constant Map := (Controlled with others => <>);
- 
-    No_Element : constant Cursor := Cursor'(null, null);
- 
-    type Iterator is new Limited_Controlled and
-      Map_Iterator_Interfaces.Reversible_Iterator with
-    record
-       Container : Map_Access;
-       Node      : Node_Access;
-    end record
-      with Disable_Controlled => not T_Check;
- 
-    overriding procedure Finalize (Object : in out Iterator);
- 
-    overriding function First (Object : Iterator) return Cursor;
-    overriding function Last  (Object : Iterator) return Cursor;
- 
-    overriding function Next
-      (Object   : Iterator;
-       Position : Cursor) return Cursor;
- 
-    overriding function Previous
-      (Object   : Iterator;
-       Position : Cursor) return Cursor;
- 
- end Ada.Containers.Indefinite_Ordered_Maps;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ciormu.adb gcc-8.1.0/gcc/ada/a-ciormu.adb
*** gcc-7.3.0/gcc/ada/a-ciormu.adb	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-ciormu.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,2013 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --               ADA.CONTAINERS.INDEFINITE_ORDERED_MULTISETS                --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 Ada.Unchecked_Deallocation;
- 
- with Ada.Containers.Red_Black_Trees.Generic_Operations;
- pragma Elaborate_All (Ada.Containers.Red_Black_Trees.Generic_Operations);
- 
- with Ada.Containers.Red_Black_Trees.Generic_Keys;
- pragma Elaborate_All (Ada.Containers.Red_Black_Trees.Generic_Keys);
- 
- with Ada.Containers.Red_Black_Trees.Generic_Set_Operations;
- pragma Elaborate_All (Ada.Containers.Red_Black_Trees.Generic_Set_Operations);
- 
- with System; use type System.Address;
- 
- package body Ada.Containers.Indefinite_Ordered_Multisets is
- 
-    pragma Warnings (Off, "variable ""Busy*"" is not referenced");
-    pragma Warnings (Off, "variable ""Lock*"" is not referenced");
-    --  See comment in Ada.Containers.Helpers
- 
-    -----------------------------
-    -- 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_Access) return Color_Type;
-    pragma Inline (Color);
- 
-    function Left (Node : Node_Access) return Node_Access;
-    pragma Inline (Left);
- 
-    function Parent (Node : Node_Access) return Node_Access;
-    pragma Inline (Parent);
- 
-    function Right (Node : Node_Access) return Node_Access;
-    pragma Inline (Right);
- 
-    procedure Set_Parent (Node : Node_Access; Parent : Node_Access);
-    pragma Inline (Set_Parent);
- 
-    procedure Set_Left (Node : Node_Access; Left : Node_Access);
-    pragma Inline (Set_Left);
- 
-    procedure Set_Right (Node : Node_Access; Right : Node_Access);
-    pragma Inline (Set_Right);
- 
-    procedure Set_Color (Node : Node_Access; Color : Color_Type);
-    pragma Inline (Set_Color);
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    function Copy_Node (Source : Node_Access) return Node_Access;
-    pragma Inline (Copy_Node);
- 
-    procedure Free (X : in out Node_Access);
- 
-    procedure Insert_Sans_Hint
-      (Tree     : in out Tree_Type;
-       New_Item : Element_Type;
-       Node     : out Node_Access);
- 
-    procedure Insert_With_Hint
-      (Dst_Tree : in out Tree_Type;
-       Dst_Hint : Node_Access;
-       Src_Node : Node_Access;
-       Dst_Node : out Node_Access);
- 
-    function Is_Equal_Node_Node (L, R : Node_Access) return Boolean;
-    pragma Inline (Is_Equal_Node_Node);
- 
-    function Is_Greater_Element_Node
-      (Left  : Element_Type;
-       Right : Node_Access) return Boolean;
-    pragma Inline (Is_Greater_Element_Node);
- 
-    function Is_Less_Element_Node
-      (Left  : Element_Type;
-       Right : Node_Access) return Boolean;
-    pragma Inline (Is_Less_Element_Node);
- 
-    function Is_Less_Node_Node (L, R : Node_Access) return Boolean;
-    pragma Inline (Is_Less_Node_Node);
- 
-    procedure Replace_Element
-      (Tree : in out Tree_Type;
-       Node : Node_Access;
-       Item : Element_Type);
- 
-    --------------------------
-    -- Local Instantiations --
-    --------------------------
- 
-    package Tree_Operations is
-      new Red_Black_Trees.Generic_Operations (Tree_Types);
- 
-    procedure Delete_Tree is
-      new Tree_Operations.Generic_Delete_Tree (Free);
- 
-    function Copy_Tree is
-      new Tree_Operations.Generic_Copy_Tree (Copy_Node, Delete_Tree);
- 
-    use Tree_Operations;
- 
-    procedure Free_Element is
-      new Ada.Unchecked_Deallocation (Element_Type, Element_Access);
- 
-    function Is_Equal is
-      new Tree_Operations.Generic_Equal (Is_Equal_Node_Node);
- 
-    package Set_Ops is
-      new Generic_Set_Operations
-        (Tree_Operations  => Tree_Operations,
-         Insert_With_Hint => Insert_With_Hint,
-         Copy_Tree        => Copy_Tree,
-         Delete_Tree      => Delete_Tree,
-         Is_Less          => Is_Less_Node_Node,
-         Free             => Free);
- 
-    package Element_Keys is
-      new Red_Black_Trees.Generic_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);
- 
-    ---------
-    -- "<" --
-    ---------
- 
-    function "<" (Left, Right : Cursor) return Boolean is
-    begin
-       if Left.Node = null then
-          raise Constraint_Error with "Left cursor equals No_Element";
-       end if;
- 
-       if Right.Node = null then
-          raise Constraint_Error with "Right cursor equals No_Element";
-       end if;
- 
-       if Left.Node.Element = null then
-          raise Program_Error with "Left cursor is bad";
-       end if;
- 
-       if Right.Node.Element = null then
-          raise Program_Error with "Right cursor is bad";
-       end if;
- 
-       pragma Assert (Vet (Left.Container.Tree, Left.Node),
-                      "bad Left cursor in ""<""");
- 
-       pragma Assert (Vet (Right.Container.Tree, Right.Node),
-                      "bad Right cursor in ""<""");
- 
-       return Left.Node.Element.all < Right.Node.Element.all;
-    end "<";
- 
-    function "<" (Left : Cursor; Right : Element_Type) return Boolean is
-    begin
-       if Left.Node = null then
-          raise Constraint_Error with "Left cursor equals No_Element";
-       end if;
- 
-       if Left.Node.Element = null then
-          raise Program_Error with "Left cursor is bad";
-       end if;
- 
-       pragma Assert (Vet (Left.Container.Tree, Left.Node),
-                      "bad Left cursor in ""<""");
- 
-       return Left.Node.Element.all < Right;
-    end "<";
- 
-    function "<" (Left : Element_Type; Right : Cursor) return Boolean is
-    begin
-       if Right.Node = null then
-          raise Constraint_Error with "Right cursor equals No_Element";
-       end if;
- 
-       if Right.Node.Element = null then
-          raise Program_Error with "Right cursor is bad";
-       end if;
- 
-       pragma Assert (Vet (Right.Container.Tree, Right.Node),
-                      "bad Right cursor in ""<""");
- 
-       return Left < Right.Node.Element.all;
-    end "<";
- 
-    ---------
-    -- "=" --
-    ---------
- 
-    function "=" (Left, Right : Set) return Boolean is
-    begin
-       return Is_Equal (Left.Tree, Right.Tree);
-    end "=";
- 
-    ---------
-    -- ">" --
-    ---------
- 
-    function ">" (Left, Right : Cursor) return Boolean is
-    begin
-       if Left.Node = null then
-          raise Constraint_Error with "Left cursor equals No_Element";
-       end if;
- 
-       if Right.Node = null then
-          raise Constraint_Error with "Right cursor equals No_Element";
-       end if;
- 
-       if Left.Node.Element = null then
-          raise Program_Error with "Left cursor is bad";
-       end if;
- 
-       if Right.Node.Element = null then
-          raise Program_Error with "Right cursor is bad";
-       end if;
- 
-       pragma Assert (Vet (Left.Container.Tree, Left.Node),
-                      "bad Left cursor in "">""");
- 
-       pragma Assert (Vet (Right.Container.Tree, Right.Node),
-                      "bad Right cursor in "">""");
- 
-       --  L > R same as R < L
- 
-       return Right.Node.Element.all < Left.Node.Element.all;
-    end ">";
- 
-    function ">" (Left : Cursor; Right : Element_Type) return Boolean is
-    begin
-       if Left.Node = null then
-          raise Constraint_Error with "Left cursor equals No_Element";
-       end if;
- 
-       if Left.Node.Element = null then
-          raise Program_Error with "Left cursor is bad";
-       end if;
- 
-       pragma Assert (Vet (Left.Container.Tree, Left.Node),
-                      "bad Left cursor in "">""");
- 
-       return Right < Left.Node.Element.all;
-    end ">";
- 
-    function ">" (Left : Element_Type; Right : Cursor) return Boolean is
-    begin
-       if Right.Node = null then
-          raise Constraint_Error with "Right cursor equals No_Element";
-       end if;
- 
-       if Right.Node.Element = null then
-          raise Program_Error with "Right cursor is bad";
-       end if;
- 
-       pragma Assert (Vet (Right.Container.Tree, Right.Node),
-                      "bad Right cursor in "">""");
- 
-       return Right.Node.Element.all < Left;
-    end ">";
- 
-    ------------
-    -- Adjust --
-    ------------
- 
-    procedure Adjust is
-       new Tree_Operations.Generic_Adjust (Copy_Tree);
- 
-    procedure Adjust (Container : in out Set) is
-    begin
-       Adjust (Container.Tree);
-    end Adjust;
- 
-    ------------
-    -- Assign --
-    ------------
- 
-    procedure Assign (Target : in out Set; Source : Set) is
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       Target.Clear;
-       Target.Union (Source);
-    end Assign;
- 
-    -------------
-    -- Ceiling --
-    -------------
- 
-    function Ceiling (Container : Set; Item : Element_Type) return Cursor is
-       Node : constant Node_Access :=
-         Element_Keys.Ceiling (Container.Tree, Item);
- 
-    begin
-       if Node = null then
-          return No_Element;
-       end if;
- 
-       return Cursor'(Container'Unrestricted_Access, Node);
-    end Ceiling;
- 
-    -----------
-    -- Clear --
-    -----------
- 
-    procedure Clear is
-       new Tree_Operations.Generic_Clear (Delete_Tree);
- 
-    procedure Clear (Container : in out Set) is
-    begin
-       Clear (Container.Tree);
-    end Clear;
- 
-    -----------
-    -- Color --
-    -----------
- 
-    function Color (Node : Node_Access) return Color_Type is
-    begin
-       return Node.Color;
-    end Color;
- 
-    ------------------------
-    -- Constant_Reference --
-    ------------------------
- 
-    function Constant_Reference
-      (Container : aliased Set;
-       Position  : Cursor) return Constant_Reference_Type
-    is
-    begin
-       if Position.Container = null then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Position.Container /= Container'Unrestricted_Access then
-          raise Program_Error with
-            "Position cursor designates wrong container";
-       end if;
- 
-       pragma Assert (Vet (Position.Container.Tree, Position.Node),
-                      "bad cursor in Constant_Reference");
- 
-       --  Note: in predefined container units, the creation of a reference
-       --  increments the busy bit of the container, and its finalization
-       --  decrements it. In the absence of control machinery, this tampering
-       --  protection is missing.
- 
-       declare
-          T : Tree_Type renames Container.Tree'Unrestricted_Access.all;
-          pragma Unreferenced (T);
-       begin
-          return R : constant Constant_Reference_Type :=
-            (Element => Position.Node.Element,
-             Control => (Container => Container'Unrestricted_Access))
-          do
-             null;
-          end return;
-       end;
-    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) return Set is
-    begin
-       return Target : Set do
-          Target.Assign (Source);
-       end return;
-    end Copy;
- 
-    ---------------
-    -- Copy_Node --
-    ---------------
- 
-    function Copy_Node (Source : Node_Access) return Node_Access is
-       X : Element_Access := new Element_Type'(Source.Element.all);
- 
-    begin
-       return new Node_Type'(Parent  => null,
-                             Left    => null,
-                             Right   => null,
-                             Color   => Source.Color,
-                             Element => X);
- 
-    exception
-       when others =>
-          Free_Element (X);
-          raise;
-    end Copy_Node;
- 
-    ------------
-    -- Delete --
-    ------------
- 
-    procedure Delete (Container : in out Set; Item : Element_Type) is
-       Tree : Tree_Type renames Container.Tree;
-       Node : Node_Access := Element_Keys.Ceiling (Tree, Item);
-       Done : constant Node_Access := Element_Keys.Upper_Bound (Tree, Item);
-       X    : Node_Access;
- 
-    begin
-       if Node = Done then
-          raise Constraint_Error with "attempt to delete element not in set";
-       end if;
- 
-       loop
-          X := Node;
-          Node := Tree_Operations.Next (Node);
-          Tree_Operations.Delete_Node_Sans_Free (Tree, X);
-          Free (X);
- 
-          exit when Node = Done;
-       end loop;
-    end Delete;
- 
-    procedure Delete (Container : in out Set; Position : in out Cursor) is
-    begin
-       if Position.Node = null then
-          raise Constraint_Error with "Position cursor equals No_Element";
-       end if;
- 
-       if Position.Node.Element = null then
-          raise Program_Error with "Position cursor is bad";
-       end if;
- 
-       if Position.Container /= Container'Unrestricted_Access then
-          raise Program_Error with "Position cursor designates wrong set";
-       end if;
- 
-       pragma Assert (Vet (Container.Tree, Position.Node),
-                      "bad cursor in Delete");
- 
-       Tree_Operations.Delete_Node_Sans_Free (Container.Tree, Position.Node);
-       Free (Position.Node);
- 
-       Position.Container := null;
-    end Delete;
- 
-    ------------------
-    -- Delete_First --
-    ------------------
- 
-    procedure Delete_First (Container : in out Set) is
-       Tree : Tree_Type renames Container.Tree;
-       X    : Node_Access := Tree.First;
- 
-    begin
-       if X = null then
-          return;
-       end if;
- 
-       Tree_Operations.Delete_Node_Sans_Free (Tree, X);
-       Free (X);
-    end Delete_First;
- 
-    -----------------
-    -- Delete_Last --
-    -----------------
- 
-    procedure Delete_Last (Container : in out Set) is
-       Tree : Tree_Type renames Container.Tree;
-       X    : Node_Access := Tree.Last;
- 
-    begin
-       if X = null then
-          return;
-       end if;
- 
-       Tree_Operations.Delete_Node_Sans_Free (Tree, X);
-       Free (X);
-    end Delete_Last;
- 
-    ----------------
-    -- Difference --
-    ----------------
- 
-    procedure Difference (Target : in out Set; Source : Set) is
-    begin
-       Set_Ops.Difference (Target.Tree, Source.Tree);
-    end Difference;
- 
-    function Difference (Left, Right : Set) return Set is
-       Tree : constant Tree_Type := Set_Ops.Difference (Left.Tree, Right.Tree);
-    begin
-       return Set'(Controlled with Tree);
-    end Difference;
- 
-    -------------
-    -- Element --
-    -------------
- 
-    function Element (Position : Cursor) return Element_Type is
-    begin
-       if Position.Node = null then
-          raise Constraint_Error with "Position cursor equals No_Element";
-       end if;
- 
-       if Position.Node.Element = null then
-          raise Program_Error with "Position cursor is bad";
-       end if;
- 
-       pragma Assert (Vet (Position.Container.Tree, Position.Node),
-                      "bad cursor in Element");
- 
-       return Position.Node.Element.all;
-    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_Access) 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_Access) return Boolean is
-       begin
-          if L.Element.all < R.Element.all then
-             return False;
-          elsif R.Element.all < L.Element.all then
-             return False;
-          else
-             return True;
-          end if;
-       end Is_Equivalent_Node_Node;
- 
-    --  Start of processing for Equivalent_Sets
- 
-    begin
-       return Is_Equivalent (Left.Tree, Right.Tree);
-    end Equivalent_Sets;
- 
-    -------------
-    -- Exclude --
-    -------------
- 
-    procedure Exclude (Container : in out Set; Item : Element_Type) is
-       Tree : Tree_Type renames Container.Tree;
-       Node : Node_Access := Element_Keys.Ceiling (Tree, Item);
-       Done : constant Node_Access := Element_Keys.Upper_Bound (Tree, Item);
-       X    : Node_Access;
- 
-    begin
-       while Node /= Done loop
-          X := Node;
-          Node := Tree_Operations.Next (Node);
-          Tree_Operations.Delete_Node_Sans_Free (Tree, X);
-          Free (X);
-       end loop;
-    end Exclude;
- 
-    ----------
-    -- Find --
-    ----------
- 
-    function Find (Container : Set; Item : Element_Type) return Cursor is
-       Node : constant Node_Access := Element_Keys.Find (Container.Tree, Item);
- 
-    begin
-       if Node = null then
-          return No_Element;
-       end if;
- 
-       return Cursor'(Container'Unrestricted_Access, Node);
-    end Find;
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    procedure Finalize (Object : in out Iterator) is
-    begin
-       Unbusy (Object.Container.Tree.TC);
-    end Finalize;
- 
-    -----------
-    -- First --
-    -----------
- 
-    function First (Container : Set) return Cursor is
-    begin
-       if Container.Tree.First = null then
-          return No_Element;
-       end if;
- 
-       return Cursor'(Container'Unrestricted_Access, Container.Tree.First);
-    end First;
- 
-    function First (Object : Iterator) return Cursor is
-    begin
-       --  The value of the iterator object's Node component influences the
-       --  behavior of the First (and Last) selector function.
- 
-       --  When the Node component is null, this means the iterator object was
-       --  constructed without a start expression, in which case the (forward)
-       --  iteration starts from the (logical) beginning of the entire sequence
-       --  of items (corresponding to Container.First, for a forward iterator).
- 
-       --  Otherwise, this is iteration over a partial sequence of items. When
-       --  the Node component is non-null, the iterator object was constructed
-       --  with a start expression, that specifies the position from which the
-       --  (forward) partial iteration begins.
- 
-       if Object.Node = null then
-          return Object.Container.First;
-       else
-          return Cursor'(Object.Container, Object.Node);
-       end if;
-    end First;
- 
-    -------------------
-    -- First_Element --
-    -------------------
- 
-    function First_Element (Container : Set) return Element_Type is
-    begin
-       if Container.Tree.First = null then
-          raise Constraint_Error with "set is empty";
-       end if;
- 
-       pragma Assert (Container.Tree.First.Element /= null);
-       return Container.Tree.First.Element.all;
-    end First_Element;
- 
-    -----------
-    -- Floor --
-    -----------
- 
-    function Floor (Container : Set; Item : Element_Type) return Cursor is
-       Node : constant Node_Access := Element_Keys.Floor (Container.Tree, Item);
- 
-    begin
-       if Node = null then
-          return No_Element;
-       end if;
- 
-       return Cursor'(Container'Unrestricted_Access, Node);
-    end Floor;
- 
-    ----------
-    -- Free --
-    ----------
- 
-    procedure Free (X : in out Node_Access) is
-       procedure Deallocate is
-         new Ada.Unchecked_Deallocation (Node_Type, Node_Access);
- 
-    begin
-       if X = null then
-          return;
-       end if;
- 
-       X.Parent := X;
-       X.Left := X;
-       X.Right := X;
- 
-       begin
-          Free_Element (X.Element);
-       exception
-          when others =>
-             X.Element := null;
-             Deallocate (X);
-             raise;
-       end;
- 
-       Deallocate (X);
-    end Free;
- 
-    ------------------
-    -- Generic_Keys --
-    ------------------
- 
-    package body Generic_Keys is
- 
-       -----------------------
-       -- Local Subprograms --
-       -----------------------
- 
-       function Is_Less_Key_Node
-         (Left  : Key_Type;
-          Right : Node_Access) return Boolean;
-       pragma Inline (Is_Less_Key_Node);
- 
-       function Is_Greater_Key_Node
-         (Left  : Key_Type;
-          Right : Node_Access) return Boolean;
-       pragma Inline (Is_Greater_Key_Node);
- 
-       --------------------------
-       -- Local Instantiations --
-       --------------------------
- 
-       package Key_Keys is
-         new Red_Black_Trees.Generic_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 Node_Access := Key_Keys.Ceiling (Container.Tree, Key);
- 
-       begin
-          if Node = null then
-             return No_Element;
-          end if;
- 
-          return Cursor'(Container'Unrestricted_Access, 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
-          Tree : Tree_Type renames Container.Tree;
-          Node : Node_Access := Key_Keys.Ceiling (Tree, Key);
-          Done : constant Node_Access := Key_Keys.Upper_Bound (Tree, Key);
-          X    : Node_Access;
- 
-       begin
-          if Node = Done then
-             raise Constraint_Error with "attempt to delete key not in set";
-          end if;
- 
-          loop
-             X := Node;
-             Node := Tree_Operations.Next (Node);
-             Tree_Operations.Delete_Node_Sans_Free (Tree, X);
-             Free (X);
- 
-             exit when Node = Done;
-          end loop;
-       end Delete;
- 
-       -------------
-       -- Element --
-       -------------
- 
-       function Element (Container : Set; Key : Key_Type) return Element_Type is
-          Node : constant Node_Access := Key_Keys.Find (Container.Tree, Key);
- 
-       begin
-          if Node = null then
-             raise Constraint_Error with "key not in set";
-          end if;
- 
-          return Node.Element.all;
-       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
-          Tree : Tree_Type renames Container.Tree;
-          Node : Node_Access := Key_Keys.Ceiling (Tree, Key);
-          Done : constant Node_Access := Key_Keys.Upper_Bound (Tree, Key);
-          X    : Node_Access;
- 
-       begin
-          while Node /= Done loop
-             X := Node;
-             Node := Tree_Operations.Next (Node);
-             Tree_Operations.Delete_Node_Sans_Free (Tree, X);
-             Free (X);
-          end loop;
-       end Exclude;
- 
-       ----------
-       -- Find --
-       ----------
- 
-       function Find (Container : Set; Key : Key_Type) return Cursor is
-          Node : constant Node_Access := Key_Keys.Find (Container.Tree, Key);
- 
-       begin
-          if Node = null then
-             return No_Element;
-          end if;
- 
-          return Cursor'(Container'Unrestricted_Access, Node);
-       end Find;
- 
-       -----------
-       -- Floor --
-       -----------
- 
-       function Floor (Container : Set; Key : Key_Type) return Cursor is
-          Node : constant Node_Access := Key_Keys.Floor (Container.Tree, Key);
- 
-       begin
-          if Node = null then
-             return No_Element;
-          end if;
- 
-          return Cursor'(Container'Unrestricted_Access, Node);
-       end Floor;
- 
-       -------------------------
-       -- Is_Greater_Key_Node --
-       -------------------------
- 
-       function Is_Greater_Key_Node
-         (Left  : Key_Type;
-          Right : Node_Access) return Boolean
-       is
-       begin
-          return Key (Right.Element.all) < Left;
-       end Is_Greater_Key_Node;
- 
-       ----------------------
-       -- Is_Less_Key_Node --
-       ----------------------
- 
-       function Is_Less_Key_Node
-         (Left  : Key_Type;
-          Right : Node_Access) return Boolean
-       is
-       begin
-          return Left < Key (Right.Element.all);
-       end Is_Less_Key_Node;
- 
-       -------------
-       -- Iterate --
-       -------------
- 
-       procedure Iterate
-         (Container : Set;
-          Key       : Key_Type;
-          Process   : not null access procedure (Position : Cursor))
-       is
-          procedure Process_Node (Node : Node_Access);
-          pragma Inline (Process_Node);
- 
-          procedure Local_Iterate is
-            new Key_Keys.Generic_Iteration (Process_Node);
- 
-          ------------------
-          -- Process_Node --
-          ------------------
- 
-          procedure Process_Node (Node : Node_Access) is
-          begin
-             Process (Cursor'(Container'Unrestricted_Access, Node));
-          end Process_Node;
- 
-          T : Tree_Type renames Container.Tree'Unrestricted_Access.all;
-          Busy : With_Busy (T.TC'Unrestricted_Access);
- 
-       --  Start of processing for Iterate
- 
-       begin
-          Local_Iterate (T, Key);
-       end Iterate;
- 
-       ---------
-       -- Key --
-       ---------
- 
-       function Key (Position : Cursor) return Key_Type is
-       begin
-          if Position.Node = null then
-             raise Constraint_Error with
-               "Position cursor equals No_Element";
-          end if;
- 
-          if Position.Node.Element = null then
-             raise Program_Error with
-               "Position cursor is bad";
-          end if;
- 
-          pragma Assert (Vet (Position.Container.Tree, Position.Node),
-                         "bad cursor in Key");
- 
-          return Key (Position.Node.Element.all);
-       end Key;
- 
-       ---------------------
-       -- Reverse_Iterate --
-       ---------------------
- 
-       procedure Reverse_Iterate
-         (Container : Set;
-          Key       : Key_Type;
-          Process   : not null access procedure (Position : Cursor))
-       is
-          procedure Process_Node (Node : Node_Access);
-          pragma Inline (Process_Node);
- 
-          -------------
-          -- Iterate --
-          -------------
- 
-          procedure Local_Reverse_Iterate is
-             new Key_Keys.Generic_Reverse_Iteration (Process_Node);
- 
-          ------------------
-          -- Process_Node --
-          ------------------
- 
-          procedure Process_Node (Node : Node_Access) is
-          begin
-             Process (Cursor'(Container'Unrestricted_Access, Node));
-          end Process_Node;
- 
-          T : Tree_Type renames Container.Tree'Unrestricted_Access.all;
-          Busy : With_Busy (T.TC'Unrestricted_Access);
- 
-       --  Start of processing for Reverse_Iterate
- 
-       begin
-          Local_Reverse_Iterate (T, Key);
-       end Reverse_Iterate;
- 
-       --------------------
-       -- Update_Element --
-       --------------------
- 
-       procedure Update_Element
-         (Container : in out Set;
-          Position  : Cursor;
-          Process   : not null access procedure (Element : in out Element_Type))
-       is
-          Tree : Tree_Type renames Container.Tree;
-          Node : constant Node_Access := Position.Node;
- 
-       begin
-          if Node = null then
-             raise Constraint_Error with "Position cursor equals No_Element";
-          end if;
- 
-          if Node.Element = null then
-             raise Program_Error with "Position cursor is bad";
-          end if;
- 
-          if Position.Container /= Container'Unrestricted_Access then
-             raise Program_Error with "Position cursor designates wrong set";
-          end if;
- 
-          pragma Assert (Vet (Tree, Node),
-                         "bad cursor in Update_Element");
- 
-          declare
-             E : Element_Type renames Node.Element.all;
-             K : constant Key_Type := Key (E);
-             Lock : With_Lock (Tree.TC'Unrestricted_Access);
-          begin
-             Process (E);
- 
-             if Equivalent_Keys (Left => K, Right => Key (E)) then
-                return;
-             end if;
-          end;
- 
-          --  Delete_Node checks busy-bit
- 
-          Tree_Operations.Delete_Node_Sans_Free (Tree, Node);
- 
-          Insert_New_Item : declare
-             function New_Node return Node_Access;
-             pragma Inline (New_Node);
- 
-             procedure Insert_Post is
-                new Element_Keys.Generic_Insert_Post (New_Node);
- 
-             procedure Unconditional_Insert is
-                new Element_Keys.Generic_Unconditional_Insert (Insert_Post);
- 
-             --------------
-             -- New_Node --
-             --------------
- 
-             function New_Node return Node_Access is
-             begin
-                Node.Color := Red_Black_Trees.Red;
-                Node.Parent := null;
-                Node.Left := null;
-                Node.Right := null;
- 
-                return Node;
-             end New_Node;
- 
-             Result : Node_Access;
- 
-          --  Start of processing for Insert_New_Item
- 
-          begin
-             Unconditional_Insert
-               (Tree => Tree,
-                Key  => Node.Element.all,
-                Node => Result);
- 
-             pragma Assert (Result = Node);
-          end Insert_New_Item;
-       end Update_Element;
- 
-    end Generic_Keys;
- 
-    -----------------
-    -- Has_Element --
-    -----------------
- 
-    function Has_Element (Position : Cursor) return Boolean is
-    begin
-       return Position /= No_Element;
-    end Has_Element;
- 
-    ------------
-    -- Insert --
-    ------------
- 
-    procedure Insert (Container : in out Set; New_Item : Element_Type) is
-       Position : Cursor;
-       pragma Unreferenced (Position);
-    begin
-       Insert (Container, New_Item, Position);
-    end Insert;
- 
-    procedure Insert
-      (Container : in out Set;
-       New_Item  : Element_Type;
-       Position  : out Cursor)
-    is
-    begin
-       Insert_Sans_Hint (Container.Tree, New_Item, Position.Node);
-       Position.Container := Container'Unrestricted_Access;
-    end Insert;
- 
-    ----------------------
-    -- Insert_Sans_Hint --
-    ----------------------
- 
-    procedure Insert_Sans_Hint
-      (Tree     : in out Tree_Type;
-       New_Item : Element_Type;
-       Node     : out Node_Access)
-    is
-       function New_Node return Node_Access;
-       pragma Inline (New_Node);
- 
-       procedure Insert_Post is
-         new Element_Keys.Generic_Insert_Post (New_Node);
- 
-       procedure Unconditional_Insert is
-         new Element_Keys.Generic_Unconditional_Insert (Insert_Post);
- 
-       --------------
-       -- New_Node --
-       --------------
- 
-       function New_Node return Node_Access is
-          --  The element allocator may need an accessibility check in the case
-          --  the actual type is class-wide or has access discriminants (see
-          --  RM 4.8(10.1) and AI12-0035).
- 
-          pragma Unsuppress (Accessibility_Check);
- 
-          Element : Element_Access := new Element_Type'(New_Item);
- 
-       begin
-          return new Node_Type'(Parent  => null,
-                                Left    => null,
-                                Right   => null,
-                                Color   => Red_Black_Trees.Red,
-                                Element => Element);
- 
-       exception
-          when others =>
-             Free_Element (Element);
-             raise;
-       end New_Node;
- 
-    --  Start of processing for Insert_Sans_Hint
- 
-    begin
-       Unconditional_Insert (Tree, New_Item, Node);
-    end Insert_Sans_Hint;
- 
-    ----------------------
-    -- Insert_With_Hint --
-    ----------------------
- 
-    procedure Insert_With_Hint
-      (Dst_Tree : in out Tree_Type;
-       Dst_Hint : Node_Access;
-       Src_Node : Node_Access;
-       Dst_Node : out Node_Access)
-    is
-       function New_Node return Node_Access;
-       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_Unconditional_Insert (Insert_Post);
- 
-       procedure Local_Insert_With_Hint is
-         new Element_Keys.Generic_Unconditional_Insert_With_Hint
-           (Insert_Post,
-            Insert_Sans_Hint);
- 
-       --------------
-       -- New_Node --
-       --------------
- 
-       function New_Node return Node_Access is
-          X : Element_Access := new Element_Type'(Src_Node.Element.all);
- 
-       begin
-          return new Node_Type'(Parent  => null,
-                                Left    => null,
-                                Right   => null,
-                                Color   => Red,
-                                Element => X);
- 
-       exception
-          when others =>
-             Free_Element (X);
-             raise;
-       end New_Node;
- 
-    --  Start of processing for Insert_With_Hint
- 
-    begin
-       Local_Insert_With_Hint
-         (Dst_Tree,
-          Dst_Hint,
-          Src_Node.Element.all,
-          Dst_Node);
-    end Insert_With_Hint;
- 
-    ------------------
-    -- Intersection --
-    ------------------
- 
-    procedure Intersection (Target : in out Set; Source : Set) is
-    begin
-       Set_Ops.Intersection (Target.Tree, Source.Tree);
-    end Intersection;
- 
-    function Intersection (Left, Right : Set) return Set is
-       Tree : constant Tree_Type :=
-         Set_Ops.Intersection (Left.Tree, Right.Tree);
-    begin
-       return Set'(Controlled with Tree);
-    end Intersection;
- 
-    --------------
-    -- Is_Empty --
-    --------------
- 
-    function Is_Empty (Container : Set) return Boolean is
-    begin
-       return Container.Tree.Length = 0;
-    end Is_Empty;
- 
-    ------------------------
-    -- Is_Equal_Node_Node --
-    ------------------------
- 
-    function Is_Equal_Node_Node (L, R : Node_Access) return Boolean is
-    begin
-       return L.Element.all = R.Element.all;
-    end Is_Equal_Node_Node;
- 
-    -----------------------------
-    -- Is_Greater_Element_Node --
-    -----------------------------
- 
-    function Is_Greater_Element_Node
-      (Left  : Element_Type;
-       Right : Node_Access) return Boolean
-    is
-    begin
-       --  e > node same as node < e
- 
-       return Right.Element.all < Left;
-    end Is_Greater_Element_Node;
- 
-    --------------------------
-    -- Is_Less_Element_Node --
-    --------------------------
- 
-    function Is_Less_Element_Node
-      (Left  : Element_Type;
-       Right : Node_Access) return Boolean
-    is
-    begin
-       return Left < Right.Element.all;
-    end Is_Less_Element_Node;
- 
-    -----------------------
-    -- Is_Less_Node_Node --
-    -----------------------
- 
-    function Is_Less_Node_Node (L, R : Node_Access) return Boolean is
-    begin
-       return L.Element.all < R.Element.all;
-    end Is_Less_Node_Node;
- 
-    ---------------
-    -- Is_Subset --
-    ---------------
- 
-    function Is_Subset (Subset : Set; Of_Set : Set) return Boolean is
-    begin
-       return Set_Ops.Is_Subset (Subset => Subset.Tree, Of_Set => Of_Set.Tree);
-    end Is_Subset;
- 
-    -------------
-    -- Iterate --
-    -------------
- 
-    procedure Iterate
-      (Container : Set;
-       Item      : Element_Type;
-       Process   : not null access procedure (Position : Cursor))
-    is
-       procedure Process_Node (Node : Node_Access);
-       pragma Inline (Process_Node);
- 
-       procedure Local_Iterate is
-         new Element_Keys.Generic_Iteration (Process_Node);
- 
-       ------------------
-       -- Process_Node --
-       ------------------
- 
-       procedure Process_Node (Node : Node_Access) is
-       begin
-          Process (Cursor'(Container'Unrestricted_Access, Node));
-       end Process_Node;
- 
-       T : Tree_Type renames Container.Tree'Unrestricted_Access.all;
-       Busy : With_Busy (T.TC'Unrestricted_Access);
- 
-    --  Start of processing for Iterate
- 
-    begin
-       Local_Iterate (T, Item);
-    end Iterate;
- 
-    procedure Iterate
-      (Container : Set;
-       Process   : not null access procedure (Position : Cursor))
-    is
-       procedure Process_Node (Node : Node_Access);
-       pragma Inline (Process_Node);
- 
-       procedure Local_Iterate is
-         new Tree_Operations.Generic_Iteration (Process_Node);
- 
-       ------------------
-       -- Process_Node --
-       ------------------
- 
-       procedure Process_Node (Node : Node_Access) is
-       begin
-          Process (Cursor'(Container'Unrestricted_Access, Node));
-       end Process_Node;
- 
-       T : Tree_Type renames Container.Tree'Unrestricted_Access.all;
-       Busy : With_Busy (T.TC'Unrestricted_Access);
- 
-    --  Start of processing for Iterate
- 
-    begin
-       Local_Iterate (T);
-    end Iterate;
- 
-    function Iterate (Container : Set)
-      return Set_Iterator_Interfaces.Reversible_Iterator'Class
-    is
-       S : constant Set_Access := Container'Unrestricted_Access;
-    begin
-       --  The value of the Node component influences the behavior of the First
-       --  and Last selector functions of the iterator object. When the Node
-       --  component is null (as is the case here), this means the iterator
-       --  object was constructed without a start expression. This is a complete
-       --  iterator, meaning that the iteration starts from the (logical)
-       --  beginning of the sequence of items.
- 
-       --  Note: For a forward iterator, Container.First is the beginning, and
-       --  for a reverse iterator, Container.Last is the beginning.
- 
-       return It : constant Iterator := (Limited_Controlled with S, null) do
-          Busy (S.Tree.TC);
-       end return;
-    end Iterate;
- 
-    function Iterate (Container : Set; Start : Cursor)
-      return Set_Iterator_Interfaces.Reversible_Iterator'Class
-    is
-       S : constant Set_Access := Container'Unrestricted_Access;
-    begin
-       --  It was formerly the case that when Start = No_Element, the partial
-       --  iterator was defined to behave the same as for a complete iterator,
-       --  and iterate over the entire sequence of items. However, those
-       --  semantics were unintuitive and arguably error-prone (it is too easy
-       --  to accidentally create an endless loop), and so they were changed,
-       --  per the ARG meeting in Denver on 2011/11. However, there was no
-       --  consensus about what positive meaning this corner case should have,
-       --  and so it was decided to simply raise an exception. This does imply,
-       --  however, that it is not possible to use a partial iterator to specify
-       --  an empty sequence of items.
- 
-       if Start = No_Element then
-          raise Constraint_Error with
-            "Start position for iterator equals No_Element";
-       end if;
- 
-       if Start.Container /= Container'Unrestricted_Access then
-          raise Program_Error with
-            "Start cursor of Iterate designates wrong set";
-       end if;
- 
-       pragma Assert (Vet (Container.Tree, Start.Node),
-                      "Start cursor of Iterate is bad");
- 
-       --  The value of the Node component influences the behavior of the First
-       --  and Last selector functions of the iterator object. When the Node
-       --  component is non-null (as is the case here), it means that this is a
-       --  partial iteration, over a subset of the complete sequence of
-       --  items. The iterator object was constructed with a start expression,
-       --  indicating the position from which the iteration begins. Note that
-       --  the start position has the same value irrespective of whether this is
-       --  a forward or reverse iteration.
- 
-       return It : constant Iterator :=
-                     (Limited_Controlled with S, Start.Node)
-       do
-          Busy (S.Tree.TC);
-       end return;
-    end Iterate;
- 
-    ----------
-    -- Last --
-    ----------
- 
-    function Last (Container : Set) return Cursor is
-    begin
-       if Container.Tree.Last = null then
-          return No_Element;
-       end if;
- 
-       return Cursor'(Container'Unrestricted_Access, Container.Tree.Last);
-    end Last;
- 
-    function Last (Object : Iterator) return Cursor is
-    begin
-       --  The value of the iterator object's Node component influences the
-       --  behavior of the Last (and First) selector function.
- 
-       --  When the Node component is null, this means the iterator object was
-       --  constructed without a start expression, in which case the (reverse)
-       --  iteration starts from the (logical) beginning of the entire sequence
-       --  (corresponding to Container.Last, for a reverse iterator).
- 
-       --  Otherwise, this is iteration over a partial sequence of items. When
-       --  the Node component is non-null, the iterator object was constructed
-       --  with a start expression, that specifies the position from which the
-       --  (reverse) partial iteration begins.
- 
-       if Object.Node = null then
-          return Object.Container.Last;
-       else
-          return Cursor'(Object.Container, Object.Node);
-       end if;
-    end Last;
- 
-    ------------------
-    -- Last_Element --
-    ------------------
- 
-    function Last_Element (Container : Set) return Element_Type is
-    begin
-       if Container.Tree.Last = null then
-          raise Constraint_Error with "set is empty";
-       end if;
- 
-       pragma Assert (Container.Tree.Last.Element /= null);
-       return Container.Tree.Last.Element.all;
-    end Last_Element;
- 
-    ----------
-    -- Left --
-    ----------
- 
-    function Left (Node : Node_Access) return Node_Access is
-    begin
-       return Node.Left;
-    end Left;
- 
-    ------------
-    -- Length --
-    ------------
- 
-    function Length (Container : Set) return Count_Type is
-    begin
-       return Container.Tree.Length;
-    end Length;
- 
-    ----------
-    -- Move --
-    ----------
- 
-    procedure Move is
-       new Tree_Operations.Generic_Move (Clear);
- 
-    procedure Move (Target : in out Set; Source : in out Set) is
-    begin
-       Move (Target => Target.Tree, Source => Source.Tree);
-    end Move;
- 
-    ----------
-    -- Next --
-    ----------
- 
-    function Next (Position : Cursor) return Cursor is
-    begin
-       if Position = No_Element then
-          return No_Element;
-       end if;
- 
-       pragma Assert (Vet (Position.Container.Tree, Position.Node),
-                      "bad cursor in Next");
- 
-       declare
-          Node : constant Node_Access :=
-                   Tree_Operations.Next (Position.Node);
- 
-       begin
-          if Node = null then
-             return No_Element;
-          end if;
- 
-          return Cursor'(Position.Container, Node);
-       end;
-    end Next;
- 
-    procedure Next (Position : in out Cursor) is
-    begin
-       Position := Next (Position);
-    end Next;
- 
-    function Next (Object : Iterator; Position : Cursor) return Cursor is
-    begin
-       if Position.Container = null then
-          return No_Element;
-       end if;
- 
-       if Position.Container /= Object.Container then
-          raise Program_Error with
-            "Position cursor of Next designates wrong set";
-       end if;
- 
-       return Next (Position);
-    end Next;
- 
-    -------------
-    -- Overlap --
-    -------------
- 
-    function Overlap (Left, Right : Set) return Boolean is
-    begin
-       return Set_Ops.Overlap (Left.Tree, Right.Tree);
-    end Overlap;
- 
-    ------------
-    -- Parent --
-    ------------
- 
-    function Parent (Node : Node_Access) return Node_Access is
-    begin
-       return Node.Parent;
-    end Parent;
- 
-    --------------
-    -- Previous --
-    --------------
- 
-    function Previous (Position : Cursor) return Cursor is
-    begin
-       if Position = No_Element then
-          return No_Element;
-       end if;
- 
-       pragma Assert (Vet (Position.Container.Tree, Position.Node),
-                      "bad cursor in Previous");
- 
-       declare
-          Node : constant Node_Access :=
-                   Tree_Operations.Previous (Position.Node);
- 
-       begin
-          if Node = null then
-             return No_Element;
-          end if;
- 
-          return Cursor'(Position.Container, Node);
-       end;
-    end Previous;
- 
-    procedure Previous (Position : in out Cursor) is
-    begin
-       Position := Previous (Position);
-    end Previous;
- 
-    function Previous (Object : Iterator; Position : Cursor) return Cursor is
-    begin
-       if Position.Container = null then
-          return No_Element;
-       end if;
- 
-       if Position.Container /= Object.Container then
-          raise Program_Error with
-            "Position cursor of Previous designates wrong set";
-       end if;
- 
-       return Previous (Position);
-    end Previous;
- 
-    -------------------
-    -- Query_Element --
-    -------------------
- 
-    procedure Query_Element
-      (Position : Cursor;
-       Process  : not null access procedure (Element : Element_Type))
-    is
-    begin
-       if Position.Node = null then
-          raise Constraint_Error with "Position cursor equals No_Element";
-       end if;
- 
-       if Position.Node.Element = null then
-          raise Program_Error with "Position cursor is bad";
-       end if;
- 
-       pragma Assert (Vet (Position.Container.Tree, Position.Node),
-                      "bad cursor in Query_Element");
- 
-       declare
-          T : Tree_Type renames Position.Container.Tree;
-          Lock : With_Lock (T.TC'Unrestricted_Access);
-       begin
-          Process (Position.Node.Element.all);
-       end;
-    end Query_Element;
- 
-    ----------
-    -- Read --
-    ----------
- 
-    procedure Read
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : out Set)
-    is
-       function Read_Node
-         (Stream : not null access Root_Stream_Type'Class) return Node_Access;
-       pragma Inline (Read_Node);
- 
-       procedure Read is
-          new Tree_Operations.Generic_Read (Clear, Read_Node);
- 
-       ---------------
-       -- Read_Node --
-       ---------------
- 
-       function Read_Node
-         (Stream : not null access Root_Stream_Type'Class) return Node_Access
-       is
-          Node : Node_Access := new Node_Type;
-       begin
-          Node.Element := new Element_Type'(Element_Type'Input (Stream));
-          return Node;
-       exception
-          when others =>
-             Free (Node);  --  Note that Free deallocates elem too
-             raise;
-       end Read_Node;
- 
-    --  Start of processing for Read
- 
-    begin
-       Read (Stream, Container.Tree);
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Cursor)
-    is
-    begin
-       raise Program_Error with "attempt to stream set cursor";
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Constant_Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Read;
- 
-    ---------------------
-    -- Replace_Element --
-    ---------------------
- 
-    procedure Replace_Element
-      (Tree : in out Tree_Type;
-       Node : Node_Access;
-       Item : Element_Type)
-    is
-    begin
-       if Item < Node.Element.all
-         or else Node.Element.all < Item
-       then
-          null;
-       else
-          TE_Check (Tree.TC);
- 
-          declare
-             X : Element_Access := Node.Element;
- 
-             --  The element allocator may need an accessibility check in the
-             --  case the actual type is class-wide or has access discriminants
-             --  (see RM 4.8(10.1) and AI12-0035).
- 
-             pragma Unsuppress (Accessibility_Check);
- 
-          begin
-             Node.Element := new Element_Type'(Item);
-             Free_Element (X);
-          end;
- 
-          return;
-       end if;
- 
-       Tree_Operations.Delete_Node_Sans_Free (Tree, Node);  -- Checks busy-bit
- 
-       Insert_New_Item : declare
-          function New_Node return Node_Access;
-          pragma Inline (New_Node);
- 
-          procedure Insert_Post is
-             new Element_Keys.Generic_Insert_Post (New_Node);
- 
-          procedure Unconditional_Insert is
-             new Element_Keys.Generic_Unconditional_Insert (Insert_Post);
- 
-          --------------
-          -- New_Node --
-          --------------
- 
-          function New_Node return Node_Access is
- 
-             --  The element allocator may need an accessibility check in the
-             --  case the actual type is class-wide or has access discriminants
-             --  (see RM 4.8(10.1) and AI12-0035).
- 
-             pragma Unsuppress (Accessibility_Check);
- 
-          begin
-             Node.Element := new Element_Type'(Item);  -- OK if fails
-             Node.Color := Red_Black_Trees.Red;
-             Node.Parent := null;
-             Node.Left := null;
-             Node.Right := null;
- 
-             return Node;
-          end New_Node;
- 
-          Result : Node_Access;
- 
-          X : Element_Access := Node.Element;
- 
-       --  Start of processing for Insert_New_Item
- 
-       begin
-          Unconditional_Insert
-            (Tree => Tree,
-             Key  => Item,
-             Node => Result);
-          pragma Assert (Result = Node);
- 
-          Free_Element (X);  -- OK if fails
-       end Insert_New_Item;
-    end Replace_Element;
- 
-    procedure Replace_Element
-     (Container : in out Set;
-      Position  : Cursor;
-      New_Item  : Element_Type)
-    is
-    begin
-       if Position.Node = null then
-          raise Constraint_Error with "Position cursor equals No_Element";
-       end if;
- 
-       if Position.Node.Element = null then
-          raise Program_Error with "Position cursor is bad";
-       end if;
- 
-       if Position.Container /= Container'Unrestricted_Access then
-          raise Program_Error with "Position cursor designates wrong set";
-       end if;
- 
-       pragma Assert (Vet (Container.Tree, Position.Node),
-                      "bad cursor in Replace_Element");
- 
-       Replace_Element (Container.Tree, Position.Node, New_Item);
-    end Replace_Element;
- 
-    ---------------------
-    -- Reverse_Iterate --
-    ---------------------
- 
-    procedure Reverse_Iterate
-      (Container : Set;
-       Item      : Element_Type;
-       Process   : not null access procedure (Position : Cursor))
-    is
-       procedure Process_Node (Node : Node_Access);
-       pragma Inline (Process_Node);
- 
-       procedure Local_Reverse_Iterate is
-         new Element_Keys.Generic_Reverse_Iteration (Process_Node);
- 
-       ------------------
-       -- Process_Node --
-       ------------------
- 
-       procedure Process_Node (Node : Node_Access) is
-       begin
-          Process (Cursor'(Container'Unrestricted_Access, Node));
-       end Process_Node;
- 
-       T : Tree_Type renames Container.Tree'Unrestricted_Access.all;
-       Busy : With_Busy (T.TC'Unrestricted_Access);
- 
-    --  Start of processing for Reverse_Iterate
- 
-    begin
-       Local_Reverse_Iterate (T, Item);
-    end Reverse_Iterate;
- 
-    procedure Reverse_Iterate
-      (Container : Set;
-       Process   : not null access procedure (Position : Cursor))
-    is
-       procedure Process_Node (Node : Node_Access);
-       pragma Inline (Process_Node);
- 
-       procedure Local_Reverse_Iterate is
-         new Tree_Operations.Generic_Reverse_Iteration (Process_Node);
- 
-       ------------------
-       -- Process_Node --
-       ------------------
- 
-       procedure Process_Node (Node : Node_Access) is
-       begin
-          Process (Cursor'(Container'Unrestricted_Access, Node));
-       end Process_Node;
- 
-       T : Tree_Type renames Container.Tree'Unrestricted_Access.all;
-       Busy : With_Busy (T.TC'Unrestricted_Access);
- 
-    --  Start of processing for Reverse_Iterate
- 
-    begin
-       Local_Reverse_Iterate (T);
-    end Reverse_Iterate;
- 
-    -----------
-    -- Right --
-    -----------
- 
-    function Right (Node : Node_Access) return Node_Access is
-    begin
-       return Node.Right;
-    end Right;
- 
-    ---------------
-    -- Set_Color --
-    ---------------
- 
-    procedure Set_Color (Node : Node_Access; Color : Color_Type) is
-    begin
-       Node.Color := Color;
-    end Set_Color;
- 
-    --------------
-    -- Set_Left --
-    --------------
- 
-    procedure Set_Left (Node : Node_Access; Left : Node_Access) is
-    begin
-       Node.Left := Left;
-    end Set_Left;
- 
-    ----------------
-    -- Set_Parent --
-    ----------------
- 
-    procedure Set_Parent (Node : Node_Access; Parent : Node_Access) is
-    begin
-       Node.Parent := Parent;
-    end Set_Parent;
- 
-    ---------------
-    -- Set_Right --
-    ---------------
- 
-    procedure Set_Right (Node : Node_Access; Right : Node_Access) is
-    begin
-       Node.Right := Right;
-    end Set_Right;
- 
-    --------------------------
-    -- Symmetric_Difference --
-    --------------------------
- 
-    procedure Symmetric_Difference (Target : in out Set; Source : Set) is
-    begin
-       Set_Ops.Symmetric_Difference (Target.Tree, Source.Tree);
-    end Symmetric_Difference;
- 
-    function Symmetric_Difference (Left, Right : Set) return Set is
-       Tree : constant Tree_Type :=
-                Set_Ops.Symmetric_Difference (Left.Tree, Right.Tree);
-    begin
-       return Set'(Controlled with Tree);
-    end Symmetric_Difference;
- 
-    ------------
-    -- To_Set --
-    ------------
- 
-    function To_Set (New_Item : Element_Type) return Set is
-       Tree : Tree_Type;
-       Node : Node_Access;
-       pragma Unreferenced (Node);
-    begin
-       Insert_Sans_Hint (Tree, New_Item, Node);
-       return Set'(Controlled with Tree);
-    end To_Set;
- 
-    -----------
-    -- Union --
-    -----------
- 
-    procedure Union (Target : in out Set; Source : Set) is
-    begin
-       Set_Ops.Union (Target.Tree, Source.Tree);
-    end Union;
- 
-    function Union (Left, Right : Set) return Set is
-       Tree : constant Tree_Type :=
-                Set_Ops.Union (Left.Tree, Right.Tree);
-    begin
-       return Set'(Controlled with Tree);
-    end Union;
- 
-    -----------
-    -- Write --
-    -----------
- 
-    procedure Write
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : Set)
-    is
-       procedure Write_Node
-         (Stream : not null access Root_Stream_Type'Class;
-          Node   : Node_Access);
-       pragma Inline (Write_Node);
- 
-       procedure Write is
-          new Tree_Operations.Generic_Write (Write_Node);
- 
-       ----------------
-       -- Write_Node --
-       ----------------
- 
-       procedure Write_Node
-         (Stream : not null access Root_Stream_Type'Class;
-          Node   : Node_Access)
-       is
-       begin
-          Element_Type'Output (Stream, Node.Element.all);
-       end Write_Node;
- 
-    --  Start of processing for Write
- 
-    begin
-       Write (Stream, Container.Tree);
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Cursor)
-    is
-    begin
-       raise Program_Error with "attempt to stream set cursor";
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Constant_Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Write;
- end Ada.Containers.Indefinite_Ordered_Multisets;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ciormu.ads gcc-8.1.0/gcc/ada/a-ciormu.ads
*** gcc-7.3.0/gcc/ada/a-ciormu.ads	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-ciormu.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,566 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --               ADA.CONTAINERS.INDEFINITE_ORDERED_MULTISETS                --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.                  --
- ------------------------------------------------------------------------------
- 
- --  The indefinite ordered multiset container is similar to the indefinite
- --  ordered set, but with the difference that multiple equivalent elements are
- --  allowed. It also provides additional operations, to iterate over items that
- --  are equivalent.
- 
- private with Ada.Containers.Red_Black_Trees;
- private with Ada.Finalization;
- private with Ada.Streams;
- with Ada.Iterator_Interfaces;
- 
- generic
-    type Element_Type (<>) is private;
- 
-    with function "<" (Left, Right : Element_Type) return Boolean is <>;
-    with function "=" (Left, Right : Element_Type) return Boolean is <>;
- 
- package Ada.Containers.Indefinite_Ordered_Multisets is
-    pragma Annotate (CodePeer, Skip_Analysis);
-    pragma Preelaborate;
-    pragma Remote_Types;
- 
-    function Equivalent_Elements (Left, Right : Element_Type) return Boolean;
-    --  Returns False if Left is less than Right, or Right is less than Left;
-    --  otherwise, it returns True.
- 
-    type Set is tagged private
-    with Constant_Indexing => Constant_Reference,
-         Default_Iterator  => Iterate,
-         Iterator_Element  => Element_Type;
- 
-    pragma Preelaborable_Initialization (Set);
- 
-    type Cursor is private;
-    pragma Preelaborable_Initialization (Cursor);
- 
-    Empty_Set : constant Set;
-    --  The default value for set objects declared without an explicit
-    --  initialization expression.
- 
-    No_Element : constant Cursor;
-    --  The default value for cursor objects declared without an explicit
-    --  initialization expression.
- 
-    function Has_Element (Position : Cursor) return Boolean;
-    --  Equivalent to Position /= No_Element
- 
-    package Set_Iterator_Interfaces is new
-      Ada.Iterator_Interfaces (Cursor, Has_Element);
- 
-    function "=" (Left, Right : Set) return Boolean;
-    --  If Left denotes the same set object as Right, then equality returns
-    --  True. If the length of Left is different from the length of Right, then
-    --  it returns False. Otherwise, set equality iterates over Left and Right,
-    --  comparing the element of Left to the element of Right using the equality
-    --  operator for elements. If the elements compare False, then the iteration
-    --  terminates and set equality returns False. Otherwise, if all elements
-    --  compare True, then set equality returns True.
- 
-    function Equivalent_Sets (Left, Right : Set) return Boolean;
-    --  Similar to set equality, but with the difference that elements are
-    --  compared for equivalence instead of equality.
- 
-    function To_Set (New_Item : Element_Type) return Set;
-    --  Constructs a set object with New_Item as its single element
- 
-    function Length (Container : Set) return Count_Type;
-    --  Returns the total number of elements in Container
- 
-    function Is_Empty (Container : Set) return Boolean;
-    --  Returns True if Container.Length is 0
- 
-    procedure Clear (Container : in out Set);
-    --  Deletes all elements from Container
- 
-    function Element (Position : Cursor) return Element_Type;
-    --  If Position equals No_Element, then Constraint_Error is raised.
-    --  Otherwise, function Element returns the element designed by Position.
- 
-    procedure Replace_Element
-      (Container : in out Set;
-       Position  : Cursor;
-       New_Item  : Element_Type);
-    --  If Position equals No_Element, then Constraint_Error is raised. If
-    --  Position is associated with a set different from Container, then
-    --  Program_Error is raised. If New_Item is equivalent to the element
-    --  designated by Position, then if Container is locked (element tampering
-    --  has been attempted), Program_Error is raised; otherwise, the element
-    --  designated by Position is assigned the value of New_Item. If New_Item is
-    --  not equivalent to the element designated by Position, then if the
-    --  container is busy (cursor tampering has been attempted), Program_Error
-    --  is raised; otherwise, the element designed by Position is assigned the
-    --  value of New_Item, and the node is moved to its new position (in
-    --  canonical insertion order).
- 
-    procedure Query_Element
-      (Position : Cursor;
-       Process  : not null access procedure (Element : Element_Type));
-    --  If Position equals No_Element, then Constraint_Error is
-    --  raised. Otherwise, it calls Process with the element designated by
-    --  Position as the parameter. This call locks the container, so attempts to
-    --  change the value of the element while Process is executing (to "tamper
-    --  with elements") will raise Program_Error.
- 
-    type Constant_Reference_Type
-      (Element : not null access constant Element_Type) is private
-         with Implicit_Dereference => Element;
- 
-    function Constant_Reference
-      (Container : aliased Set;
-       Position  : Cursor) return Constant_Reference_Type;
-    pragma Inline (Constant_Reference);
- 
-    procedure Assign (Target : in out Set; Source : Set);
- 
-    function Copy (Source : Set) return Set;
- 
-    procedure Move (Target : in out Set; Source : in out Set);
-    --  If Target denotes the same object as Source, the operation does
-    --  nothing. If either Target or Source is busy (cursor tampering is
-    --  attempted), then it raises Program_Error. Otherwise, Target is cleared,
-    --  and the nodes from Source are moved (not copied) to Target (so Source
-    --  becomes empty).
- 
-    procedure Insert
-      (Container : in out Set;
-       New_Item  : Element_Type;
-       Position  : out Cursor);
-    --  Insert adds New_Item to Container, and returns cursor Position
-    --  designating the newly inserted node. The node is inserted after any
-    --  existing elements less than or equivalent to New_Item (and before any
-    --  elements greater than New_Item). Note that the issue of where the new
-    --  node is inserted relative to equivalent elements does not arise for
-    --  unique-key containers, since in that case the insertion would simply
-    --  fail. For a multiple-key container (the case here), insertion always
-    --  succeeds, and is defined such that the new item is positioned after any
-    --  equivalent elements already in the container.
- 
-    procedure Insert (Container : in out Set; New_Item : Element_Type);
-    --  Inserts New_Item in Container, but does not return a cursor designating
-    --  the newly-inserted node.
- 
- --  TODO: include Replace too???
- --
- --     procedure Replace
- --       (Container : in out Set;
- --        New_Item  : Element_Type);
- 
-    procedure Exclude (Container : in out Set; Item : Element_Type);
-    --  Deletes from Container all of the elements equivalent to Item
- 
-    procedure Delete (Container : in out Set; Item : Element_Type);
-    --  Deletes from Container all of the elements equivalent to Item. If there
-    --  are no elements equivalent to Item, then it raises Constraint_Error.
- 
-    procedure Delete (Container : in out Set; Position : in out Cursor);
-    --  If Position equals No_Element, then Constraint_Error is raised. If
-    --  Position is associated with a set different from Container, then
-    --  Program_Error is raised. Otherwise, the node designated by Position is
-    --  removed from Container, and Position is set to No_Element.
- 
-    procedure Delete_First (Container : in out Set);
-    --  Removes the first node from Container
- 
-    procedure Delete_Last (Container : in out Set);
-    --  Removes the last node from Container
- 
-    procedure Union (Target : in out Set; Source : Set);
-    --  If Target is busy (cursor tampering is attempted), then Program_Error is
-    --  raised. Otherwise, it inserts each element of Source into Target.
-    --  Elements are inserted in the canonical order for multisets, such that
-    --  the elements from Source are inserted after equivalent elements already
-    --  in Target.
- 
-    function Union (Left, Right : Set) return Set;
-    --  Returns a set comprising the all elements from Left and all of the
-    --  elements from Right. The elements from Right follow the equivalent
-    --  elements from Left.
- 
-    function "or" (Left, Right : Set) return Set renames Union;
- 
-    procedure Intersection (Target : in out Set; Source : Set);
-    --  If Target denotes the same object as Source, the operation does
-    --  nothing. If Target is busy (cursor tampering is attempted),
-    --  Program_Error is raised. Otherwise, the elements in Target having no
-    --  equivalent element in Source are deleted from Target.
- 
-    function Intersection (Left, Right : Set) return Set;
-    --  If Left denotes the same object as Right, then the function returns a
-    --  copy of Left. Otherwise, it returns a set comprising the equivalent
-    --  elements from both Left and Right. Items are inserted in the result set
-    --  in canonical order, such that the elements from Left precede the
-    --  equivalent elements from Right.
- 
-    function "and" (Left, Right : Set) return Set renames Intersection;
- 
-    procedure Difference (Target : in out Set; Source : Set);
-    --  If Target is busy (cursor tampering is attempted), then Program_Error is
-    --  raised. Otherwise, the elements in Target that are equivalent to
-    --  elements in Source are deleted from Target.
- 
-    function Difference (Left, Right : Set) return Set;
-    --  Returns a set comprising the elements from Left that have no equivalent
-    --  element in Right.
- 
-    function "-" (Left, Right : Set) return Set renames Difference;
- 
-    procedure Symmetric_Difference (Target : in out Set; Source : Set);
-    --  If Target is busy, then Program_Error is raised. Otherwise, the elements
-    --  in Target equivalent to elements in Source are deleted from Target, and
-    --  the elements in Source not equivalent to elements in Target are inserted
-    --  into Target.
- 
-    function Symmetric_Difference (Left, Right : Set) return Set;
-    --  Returns a set comprising the union of the elements from Target having no
-    --  equivalent in Source, and the elements of Source having no equivalent in
-    --  Target.
- 
-    function "xor" (Left, Right : Set) return Set renames Symmetric_Difference;
- 
-    function Overlap (Left, Right : Set) return Boolean;
-    --  Returns True if Left contains an element equivalent to an element of
-    --  Right.
- 
-    function Is_Subset (Subset : Set; Of_Set : Set) return Boolean;
-    --  Returns True if every element in Subset has an equivalent element in
-    --  Of_Set.
- 
-    function First (Container : Set) return Cursor;
-    --  If Container is empty, the function returns No_Element. Otherwise, it
-    --  returns a cursor designating the smallest element.
- 
-    function First_Element (Container : Set) return Element_Type;
-    --  Equivalent to Element (First (Container))
- 
-    function Last (Container : Set) return Cursor;
-    --  If Container is empty, the function returns No_Element. Otherwise, it
-    --  returns a cursor designating the largest element.
- 
-    function Last_Element (Container : Set) return Element_Type;
-    --  Equivalent to Element (Last (Container))
- 
-    function Next (Position : Cursor) return Cursor;
-    --  If Position equals No_Element or Last (Container), the function returns
-    --  No_Element. Otherwise, it returns a cursor designating the node that
-    --  immediately follows (as per the insertion order) the node designated by
-    --  Position.
- 
-    procedure Next (Position : in out Cursor);
-    --  Equivalent to Position := Next (Position)
- 
-    function Previous (Position : Cursor) return Cursor;
-    --  If Position equals No_Element or First (Container), the function returns
-    --  No_Element. Otherwise, it returns a cursor designating the node that
-    --  immediately precedes (as per the insertion order) the node designated by
-    --  Position.
- 
-    procedure Previous (Position : in out Cursor);
-    --  Equivalent to Position := Previous (Position)
- 
-    function Find (Container : Set; Item : Element_Type) return Cursor;
-    --  Returns a cursor designating the first element in Container equivalent
-    --  to Item. If there is no equivalent element, it returns No_Element.
- 
-    function Floor (Container : Set; Item : Element_Type) return Cursor;
-    --  If Container is empty, the function returns No_Element. If Item is
-    --  equivalent to elements in Container, it returns a cursor designating the
-    --  first equivalent element. Otherwise, it returns a cursor designating the
-    --  largest element less than Item, or No_Element if all elements are
-    --  greater than Item.
- 
-    function Ceiling (Container : Set; Item : Element_Type) return Cursor;
-    --  If Container is empty, the function returns No_Element. If Item is
-    --  equivalent to elements of Container, it returns a cursor designating the
-    --  last equivalent element. Otherwise, it returns a cursor designating the
-    --  smallest element greater than Item, or No_Element if all elements are
-    --  less than Item.
- 
-    function Contains (Container : Set; Item : Element_Type) return Boolean;
-    --  Equivalent to Container.Find (Item) /= No_Element
- 
-    function "<" (Left, Right : Cursor) return Boolean;
-    --  Equivalent to Element (Left) < Element (Right)
- 
-    function ">" (Left, Right : Cursor) return Boolean;
-    --  Equivalent to Element (Right) < Element (Left)
- 
-    function "<" (Left : Cursor; Right : Element_Type) return Boolean;
-    --  Equivalent to Element (Left) < Right
- 
-    function ">" (Left : Cursor; Right : Element_Type) return Boolean;
-    --  Equivalent to Right < Element (Left)
- 
-    function "<" (Left : Element_Type; Right : Cursor) return Boolean;
-    --  Equivalent to Left < Element (Right)
- 
-    function ">" (Left : Element_Type; Right : Cursor) return Boolean;
-    --  Equivalent to Element (Right) < Left
- 
-    procedure Iterate
-      (Container : Set;
-       Process   : not null access procedure (Position : Cursor));
-    --  Calls Process with a cursor designating each element of Container, in
-    --  order from Container.First to Container.Last.
- 
-    procedure Reverse_Iterate
-      (Container : Set;
-       Process   : not null access procedure (Position : Cursor));
-    --  Calls Process with a cursor designating each element of Container, in
-    --  order from Container.Last to Container.First.
- 
-    procedure Iterate
-      (Container : Set;
-       Item      : Element_Type;
-       Process   : not null access procedure (Position : Cursor));
-    --  Call Process with a cursor designating each element equivalent to Item,
-    --  in order from Container.Floor (Item) to Container.Ceiling (Item).
- 
-    procedure Reverse_Iterate
-      (Container : Set;
-       Item      : Element_Type;
-       Process   : not null access procedure (Position : Cursor));
-    --  Call Process with a cursor designating each element equivalent to Item,
-    --  in order from Container.Ceiling (Item) to Container.Floor (Item).
- 
-    function Iterate
-      (Container : Set)
-       return Set_Iterator_Interfaces.Reversible_Iterator'class;
- 
-    function Iterate
-      (Container : Set;
-       Start     : Cursor)
-       return Set_Iterator_Interfaces.Reversible_Iterator'class;
- 
-    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 is
- 
-       function Equivalent_Keys (Left, Right : Key_Type) return Boolean;
-       --  Returns False if Left is less than Right, or Right is less than Left;
-       --  otherwise, it returns True.
- 
-       function Key (Position : Cursor) return Key_Type;
-       --  Equivalent to Key (Element (Position))
- 
-       function Element (Container : Set; Key : Key_Type) return Element_Type;
-       --  Equivalent to Element (Find (Container, Key))
- 
-       procedure Exclude (Container : in out Set; Key : Key_Type);
-       --  Deletes from Container any elements whose key is equivalent to Key
- 
-       procedure Delete (Container : in out Set; Key : Key_Type);
-       --  Deletes from Container any elements whose key is equivalent to
-       --  Key. If there are no such elements, then it raises Constraint_Error.
- 
-       function Find (Container : Set; Key : Key_Type) return Cursor;
-       --  Returns a cursor designating the first element in Container whose key
-       --  is equivalent to Key. If there is no equivalent element, it returns
-       --  No_Element.
- 
-       function Floor (Container : Set; Key : Key_Type) return Cursor;
-       --  If Container is empty, the function returns No_Element. If Item is
-       --  equivalent to the keys of elements in Container, it returns a cursor
-       --  designating the first such element. Otherwise, it returns a cursor
-       --  designating the largest element whose key is less than Item, or
-       --  No_Element if all keys are greater than Item.
- 
-       function Ceiling (Container : Set; Key : Key_Type) return Cursor;
-       --  If Container is empty, the function returns No_Element. If Item is
-       --  equivalent to the keys of elements of Container, it returns a cursor
-       --  designating the last such element. Otherwise, it returns a cursor
-       --  designating the smallest element whose key is greater than Item, or
-       --  No_Element if all keys are less than Item.
- 
-       function Contains (Container : Set; Key : Key_Type) return Boolean;
-       --  Equivalent to Find (Container, Key) /= No_Element
- 
-       procedure Update_Element  -- Update_Element_Preserving_Key ???
-         (Container : in out Set;
-          Position  : Cursor;
-          Process   : not null access
-                        procedure (Element : in out Element_Type));
-       --  If Position equals No_Element, then Constraint_Error is raised. If
-       --  Position is associated with a set object different from Container,
-       --  then Program_Error is raised. Otherwise, it makes a copy of the key
-       --  of the element designated by Position, and then calls Process with
-       --  the element as the parameter. Update_Element then compares the key
-       --  value obtained before calling Process to the key value obtained from
-       --  the element after calling Process. If the keys are equivalent then
-       --  the operation terminates. If Container is busy (cursor tampering has
-       --  been attempted), then Program_Error is raised. Otherwise, the node
-       --  is moved to its new position (in canonical order).
- 
-       procedure Iterate
-         (Container : Set;
-          Key       : Key_Type;
-          Process   : not null access procedure (Position : Cursor));
-       --  Call Process with a cursor designating each element equivalent to
-       --  Key, in order from Floor (Container, Key) to
-       --  Ceiling (Container, Key).
- 
-       procedure Reverse_Iterate
-         (Container : Set;
-          Key       : Key_Type;
-          Process   : not null access procedure (Position : Cursor));
-       --  Call Process with a cursor designating each element equivalent to
-       --  Key, in order from Ceiling (Container, Key) to
-       --  Floor (Container, Key).
- 
-    end Generic_Keys;
- 
- private
- 
-    pragma Inline (Next);
-    pragma Inline (Previous);
- 
-    type Node_Type;
-    type Node_Access is access Node_Type;
- 
-    type Element_Access is access Element_Type;
- 
-    type Node_Type is limited record
-       Parent  : Node_Access;
-       Left    : Node_Access;
-       Right   : Node_Access;
-       Color   : Red_Black_Trees.Color_Type := Red_Black_Trees.Red;
-       Element : Element_Access;
-    end record;
- 
-    package Tree_Types is new Red_Black_Trees.Generic_Tree_Types
-      (Node_Type,
-       Node_Access);
- 
-    type Set is new Ada.Finalization.Controlled with record
-       Tree : Tree_Types.Tree_Type;
-    end record;
- 
-    overriding procedure Adjust (Container : in out Set);
- 
-    overriding procedure Finalize (Container : in out Set) renames Clear;
- 
-    use Red_Black_Trees;
-    use Tree_Types, Tree_Types.Implementation;
-    use Ada.Finalization;
-    use Ada.Streams;
- 
-    type Set_Access is access all Set;
-    for Set_Access'Storage_Size use 0;
- 
-    --  In all predefined libraries the following type is controlled, for proper
-    --  management of tampering checks. For performance reason we omit this
-    --  machinery for multisets, which are used in a number of our tools.
- 
-    type Reference_Control_Type is record
-       Container : Set_Access;
-    end record;
- 
-    type Constant_Reference_Type
-      (Element : not null access constant Element_Type) is record
-       Control : Reference_Control_Type :=
-         raise Program_Error with "uninitialized reference";
-       --  The RM says, "The default initialization of an object of
-       --  type Constant_Reference_Type or Reference_Type propagates
-       --  Program_Error."
-    end record;
- 
-    type Cursor is record
-       Container : Set_Access;
-       Node      : Node_Access;
-    end record;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Cursor);
- 
-    for Cursor'Write use Write;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Cursor);
- 
-    for Cursor'Read use Read;
- 
-    No_Element : constant Cursor := Cursor'(null, null);
- 
-    procedure Write
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : Set);
- 
-    for Set'Write use Write;
- 
-    procedure Read
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : out Set);
- 
-    for Set'Read use Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Constant_Reference_Type);
- 
-    for Constant_Reference_Type'Read use Read;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Constant_Reference_Type);
- 
-    for Constant_Reference_Type'Write use Write;
- 
-    Empty_Set : constant Set := (Controlled with others => <>);
- 
-    type Iterator is new Limited_Controlled and
-      Set_Iterator_Interfaces.Reversible_Iterator with
-    record
-       Container : Set_Access;
-       Node      : Node_Access;
-    end record
-      with Disable_Controlled => not T_Check;
- 
-    overriding procedure Finalize (Object : in out Iterator);
- 
-    overriding function First (Object : Iterator) return Cursor;
-    overriding function Last  (Object : Iterator) return Cursor;
- 
-    overriding function Next
-      (Object   : Iterator;
-       Position : Cursor) return Cursor;
- 
-    overriding function Previous
-      (Object   : Iterator;
-       Position : Cursor) return Cursor;
- 
- end Ada.Containers.Indefinite_Ordered_Multisets;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ciorse.adb gcc-8.1.0/gcc/ada/a-ciorse.adb
*** gcc-7.3.0/gcc/ada/a-ciorse.adb	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-ciorse.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,2191 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                 ADA.CONTAINERS.INDEFINITE_ORDERED_SETS                   --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 Ada.Containers.Helpers; use Ada.Containers.Helpers;
- 
- with Ada.Containers.Red_Black_Trees.Generic_Operations;
- pragma Elaborate_All (Ada.Containers.Red_Black_Trees.Generic_Operations);
- 
- with Ada.Containers.Red_Black_Trees.Generic_Keys;
- pragma Elaborate_All (Ada.Containers.Red_Black_Trees.Generic_Keys);
- 
- with Ada.Containers.Red_Black_Trees.Generic_Set_Operations;
- pragma Elaborate_All (Ada.Containers.Red_Black_Trees.Generic_Set_Operations);
- 
- with Ada.Unchecked_Deallocation;
- 
- with System; use type System.Address;
- 
- package body Ada.Containers.Indefinite_Ordered_Sets is
- 
-    pragma Warnings (Off, "variable ""Busy*"" is not referenced");
-    pragma Warnings (Off, "variable ""Lock*"" is not referenced");
-    --  See comment in Ada.Containers.Helpers
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    function Color (Node : Node_Access) return Color_Type;
-    pragma Inline (Color);
- 
-    function Copy_Node (Source : Node_Access) return Node_Access;
-    pragma Inline (Copy_Node);
- 
-    procedure Free (X : in out Node_Access);
- 
-    procedure Insert_Sans_Hint
-      (Tree     : in out Tree_Type;
-       New_Item : Element_Type;
-       Node     : out Node_Access;
-       Inserted : out Boolean);
- 
-    procedure Insert_With_Hint
-      (Dst_Tree : in out Tree_Type;
-       Dst_Hint : Node_Access;
-       Src_Node : Node_Access;
-       Dst_Node : out Node_Access);
- 
-    function Is_Greater_Element_Node
-      (Left  : Element_Type;
-       Right : Node_Access) return Boolean;
-    pragma Inline (Is_Greater_Element_Node);
- 
-    function Is_Less_Element_Node
-      (Left  : Element_Type;
-       Right : Node_Access) return Boolean;
-    pragma Inline (Is_Less_Element_Node);
- 
-    function Is_Less_Node_Node (L, R : Node_Access) return Boolean;
-    pragma Inline (Is_Less_Node_Node);
- 
-    function Left (Node : Node_Access) return Node_Access;
-    pragma Inline (Left);
- 
-    function Parent (Node : Node_Access) return Node_Access;
-    pragma Inline (Parent);
- 
-    procedure Replace_Element
-      (Tree : in out Tree_Type;
-       Node : Node_Access;
-       Item : Element_Type);
- 
-    function Right (Node : Node_Access) return Node_Access;
-    pragma Inline (Right);
- 
-    procedure Set_Color (Node : Node_Access; Color : Color_Type);
-    pragma Inline (Set_Color);
- 
-    procedure Set_Left (Node : Node_Access; Left : Node_Access);
-    pragma Inline (Set_Left);
- 
-    procedure Set_Parent (Node   : Node_Access; Parent : Node_Access);
-    pragma Inline (Set_Parent);
- 
-    procedure Set_Right (Node : Node_Access; Right : Node_Access);
-    pragma Inline (Set_Right);
- 
-    --------------------------
-    -- Local Instantiations --
-    --------------------------
- 
-    procedure Free_Element is
-      new Ada.Unchecked_Deallocation (Element_Type, Element_Access);
- 
-    package Tree_Operations is
-      new Red_Black_Trees.Generic_Operations (Tree_Types);
- 
-    procedure Delete_Tree is
-      new Tree_Operations.Generic_Delete_Tree (Free);
- 
-    function Copy_Tree is
-      new Tree_Operations.Generic_Copy_Tree (Copy_Node, Delete_Tree);
- 
-    use Tree_Operations;
- 
-    package Element_Keys is
-      new Red_Black_Trees.Generic_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 Generic_Set_Operations
-         (Tree_Operations  => Tree_Operations,
-          Insert_With_Hint => Insert_With_Hint,
-          Copy_Tree        => Copy_Tree,
-          Delete_Tree      => Delete_Tree,
-          Is_Less          => Is_Less_Node_Node,
-          Free             => Free);
- 
-    ---------
-    -- "<" --
-    ---------
- 
-    function "<" (Left, Right : Cursor) return Boolean is
-    begin
-       if Checks and then Left.Node = null then
-          raise Constraint_Error with "Left cursor equals No_Element";
-       end if;
- 
-       if Checks and then Right.Node = null then
-          raise Constraint_Error with "Right cursor equals No_Element";
-       end if;
- 
-       if Checks and then Left.Node.Element = null then
-          raise Program_Error with "Left cursor is bad";
-       end if;
- 
-       if Checks and then Right.Node.Element = null then
-          raise Program_Error with "Right cursor is bad";
-       end if;
- 
-       pragma Assert (Vet (Left.Container.Tree, Left.Node),
-                      "bad Left cursor in ""<""");
- 
-       pragma Assert (Vet (Right.Container.Tree, Right.Node),
-                      "bad Right cursor in ""<""");
- 
-       return Left.Node.Element.all < Right.Node.Element.all;
-    end "<";
- 
-    function "<" (Left : Cursor; Right : Element_Type) return Boolean is
-    begin
-       if Checks and then Left.Node = null then
-          raise Constraint_Error with "Left cursor equals No_Element";
-       end if;
- 
-       if Checks and then Left.Node.Element = null then
-          raise Program_Error with "Left cursor is bad";
-       end if;
- 
-       pragma Assert (Vet (Left.Container.Tree, Left.Node),
-                      "bad Left cursor in ""<""");
- 
-       return Left.Node.Element.all < Right;
-    end "<";
- 
-    function "<" (Left : Element_Type; Right : Cursor) return Boolean is
-    begin
-       if Checks and then Right.Node = null then
-          raise Constraint_Error with "Right cursor equals No_Element";
-       end if;
- 
-       if Checks and then Right.Node.Element = null then
-          raise Program_Error with "Right cursor is bad";
-       end if;
- 
-       pragma Assert (Vet (Right.Container.Tree, Right.Node),
-                      "bad Right cursor in ""<""");
- 
-       return Left < Right.Node.Element.all;
-    end "<";
- 
-    ---------
-    -- "=" --
-    ---------
- 
-    function "=" (Left, Right : Set) return Boolean is
- 
-       function Is_Equal_Node_Node (L, R : Node_Access) return Boolean;
-       pragma Inline (Is_Equal_Node_Node);
- 
-       function Is_Equal is
-         new Tree_Operations.Generic_Equal (Is_Equal_Node_Node);
- 
-       ------------------------
-       -- Is_Equal_Node_Node --
-       ------------------------
- 
-       function Is_Equal_Node_Node (L, R : Node_Access) return Boolean is
-       begin
-          return L.Element.all = R.Element.all;
-       end Is_Equal_Node_Node;
- 
-    --  Start of processing for "="
- 
-    begin
-       return Is_Equal (Left.Tree, Right.Tree);
-    end "=";
- 
-    ---------
-    -- ">" --
-    ---------
- 
-    function ">" (Left, Right : Cursor) return Boolean is
-    begin
-       if Checks and then Left.Node = null then
-          raise Constraint_Error with "Left cursor equals No_Element";
-       end if;
- 
-       if Checks and then Right.Node = null then
-          raise Constraint_Error with "Right cursor equals No_Element";
-       end if;
- 
-       if Checks and then Left.Node.Element = null then
-          raise Program_Error with "Left cursor is bad";
-       end if;
- 
-       if Checks and then Right.Node.Element = null then
-          raise Program_Error with "Right cursor is bad";
-       end if;
- 
-       pragma Assert (Vet (Left.Container.Tree, Left.Node),
-                      "bad Left cursor in "">""");
- 
-       pragma Assert (Vet (Right.Container.Tree, Right.Node),
-                      "bad Right cursor in "">""");
- 
-       --  L > R same as R < L
- 
-       return Right.Node.Element.all < Left.Node.Element.all;
-    end ">";
- 
-    function ">" (Left : Cursor; Right : Element_Type) return Boolean is
-    begin
-       if Checks and then Left.Node = null then
-          raise Constraint_Error with "Left cursor equals No_Element";
-       end if;
- 
-       if Checks and then Left.Node.Element = null then
-          raise Program_Error with "Left cursor is bad";
-       end if;
- 
-       pragma Assert (Vet (Left.Container.Tree, Left.Node),
-                      "bad Left cursor in "">""");
- 
-       return Right < Left.Node.Element.all;
-    end ">";
- 
-    function ">" (Left : Element_Type; Right : Cursor) return Boolean is
-    begin
-       if Checks and then Right.Node = null then
-          raise Constraint_Error with "Right cursor equals No_Element";
-       end if;
- 
-       if Checks and then Right.Node.Element = null then
-          raise Program_Error with "Right cursor is bad";
-       end if;
- 
-       pragma Assert (Vet (Right.Container.Tree, Right.Node),
-                      "bad Right cursor in "">""");
- 
-       return Right.Node.Element.all < Left;
-    end ">";
- 
-    ------------
-    -- Adjust --
-    ------------
- 
-    procedure Adjust is new Tree_Operations.Generic_Adjust (Copy_Tree);
- 
-    procedure Adjust (Container : in out Set) is
-    begin
-       Adjust (Container.Tree);
-    end Adjust;
- 
-    ------------
-    -- Assign --
-    ------------
- 
-    procedure Assign (Target : in out Set; Source : Set) is
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       Target.Clear;
-       Target.Union (Source);
-    end Assign;
- 
-    -------------
-    -- Ceiling --
-    -------------
- 
-    function Ceiling (Container : Set; Item : Element_Type) return Cursor is
-       Node : constant Node_Access :=
-         Element_Keys.Ceiling (Container.Tree, Item);
-    begin
-       return (if Node = null then No_Element
-               else Cursor'(Container'Unrestricted_Access, Node));
-    end Ceiling;
- 
-    -----------
-    -- Clear --
-    -----------
- 
-    procedure Clear is
-       new Tree_Operations.Generic_Clear (Delete_Tree);
- 
-    procedure Clear (Container : in out Set) is
-    begin
-       Clear (Container.Tree);
-    end Clear;
- 
-    -----------
-    -- Color --
-    -----------
- 
-    function Color (Node : Node_Access) return Color_Type is
-    begin
-       return Node.Color;
-    end Color;
- 
-    ------------------------
-    -- Constant_Reference --
-    ------------------------
- 
-    function Constant_Reference
-      (Container : aliased Set;
-       Position  : Cursor) return Constant_Reference_Type
-    is
-    begin
-       if Checks and then Position.Container = null then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor designates wrong container";
-       end if;
- 
-       if Checks and then Position.Node.Element = null then
-          raise Program_Error with "Node has no element";
-       end if;
- 
-       pragma Assert
-         (Vet (Container.Tree, Position.Node),
-          "bad cursor in Constant_Reference");
- 
-       declare
-          Tree : Tree_Type renames Position.Container.all.Tree;
-          TC : constant Tamper_Counts_Access :=
-            Tree.TC'Unrestricted_Access;
-       begin
-          return R : constant Constant_Reference_Type :=
-            (Element => Position.Node.Element.all'Access,
-             Control => (Controlled with TC))
-          do
-             Lock (TC.all);
-          end return;
-       end;
-    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) return Set is
-    begin
-       return Target : Set do
-          Target.Assign (Source);
-       end return;
-    end Copy;
- 
-    ---------------
-    -- Copy_Node --
-    ---------------
- 
-    function Copy_Node (Source : Node_Access) return Node_Access is
-       Element : Element_Access := new Element_Type'(Source.Element.all);
- 
-    begin
-       return new Node_Type'(Parent  => null,
-                             Left    => null,
-                             Right   => null,
-                             Color   => Source.Color,
-                             Element => Element);
- 
-    exception
-       when others =>
-          Free_Element (Element);
-          raise;
-    end Copy_Node;
- 
-    ------------
-    -- Delete --
-    ------------
- 
-    procedure Delete (Container : in out Set; Position : in out Cursor) is
-    begin
-       if Checks and then Position.Node = null then
-          raise Constraint_Error with "Position cursor equals No_Element";
-       end if;
- 
-       if Checks and then Position.Node.Element = null then
-          raise Program_Error with "Position cursor is bad";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with "Position cursor designates wrong set";
-       end if;
- 
-       pragma Assert (Vet (Container.Tree, Position.Node),
-                      "bad cursor in Delete");
- 
-       Tree_Operations.Delete_Node_Sans_Free (Container.Tree, Position.Node);
-       Free (Position.Node);
-       Position.Container := null;
-    end Delete;
- 
-    procedure Delete (Container : in out Set; Item : Element_Type) is
-       X : Node_Access := Element_Keys.Find (Container.Tree, Item);
-    begin
-       if Checks and then X = null then
-          raise Constraint_Error with "attempt to delete element not in set";
-       end if;
- 
-       Tree_Operations.Delete_Node_Sans_Free (Container.Tree, X);
-       Free (X);
-    end Delete;
- 
-    ------------------
-    -- Delete_First --
-    ------------------
- 
-    procedure Delete_First (Container : in out Set) is
-       Tree : Tree_Type renames Container.Tree;
-       X    : Node_Access := Tree.First;
-    begin
-       if X /= null then
-          Tree_Operations.Delete_Node_Sans_Free (Tree, X);
-          Free (X);
-       end if;
-    end Delete_First;
- 
-    -----------------
-    -- Delete_Last --
-    -----------------
- 
-    procedure Delete_Last (Container : in out Set) is
-       Tree : Tree_Type renames Container.Tree;
-       X    : Node_Access := Tree.Last;
-    begin
-       if X /= null then
-          Tree_Operations.Delete_Node_Sans_Free (Tree, X);
-          Free (X);
-       end if;
-    end Delete_Last;
- 
-    ----------------
-    -- Difference --
-    ----------------
- 
-    procedure Difference (Target : in out Set; Source : Set) is
-    begin
-       Set_Ops.Difference (Target.Tree, Source.Tree);
-    end Difference;
- 
-    function Difference (Left, Right : Set) return Set is
-       Tree : constant Tree_Type := Set_Ops.Difference (Left.Tree, Right.Tree);
-    begin
-       return Set'(Controlled with Tree);
-    end Difference;
- 
-    -------------
-    -- Element --
-    -------------
- 
-    function Element (Position : Cursor) return Element_Type is
-    begin
-       if Checks and then Position.Node = null then
-          raise Constraint_Error with "Position cursor equals No_Element";
-       end if;
- 
-       if Checks and then Position.Node.Element = null then
-          raise Program_Error with "Position cursor is bad";
-       end if;
- 
-       pragma Assert (Vet (Position.Container.Tree, Position.Node),
-                      "bad cursor in Element");
- 
-       return Position.Node.Element.all;
-    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_Access) 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_Access) return Boolean is
-       begin
-          if L.Element.all < R.Element.all then
-             return False;
-          elsif R.Element.all < L.Element.all then
-             return False;
-          else
-             return True;
-          end if;
-       end Is_Equivalent_Node_Node;
- 
-    --  Start of processing for Equivalent_Sets
- 
-    begin
-       return Is_Equivalent (Left.Tree, Right.Tree);
-    end Equivalent_Sets;
- 
-    -------------
-    -- Exclude --
-    -------------
- 
-    procedure Exclude (Container : in out Set; Item : Element_Type) is
-       X : Node_Access := Element_Keys.Find (Container.Tree, Item);
-    begin
-       if X /= null then
-          Tree_Operations.Delete_Node_Sans_Free (Container.Tree, X);
-          Free (X);
-       end if;
-    end Exclude;
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    procedure Finalize (Object : in out Iterator) is
-    begin
-       if Object.Container /= null then
-          Unbusy (Object.Container.Tree.TC);
-       end if;
-    end Finalize;
- 
-    ----------
-    -- Find --
-    ----------
- 
-    function Find (Container : Set; Item : Element_Type) return Cursor is
-       Node : constant Node_Access := Element_Keys.Find (Container.Tree, Item);
-    begin
-       if Node = null then
-          return No_Element;
-       else
-          return Cursor'(Container'Unrestricted_Access, Node);
-       end if;
-    end Find;
- 
-    -----------
-    -- First --
-    -----------
- 
-    function First (Container : Set) return Cursor is
-    begin
-       return
-         (if Container.Tree.First = null then No_Element
-          else Cursor'(Container'Unrestricted_Access, Container.Tree.First));
-    end First;
- 
-    function First (Object : Iterator) return Cursor is
-    begin
-       --  The value of the iterator object's Node component influences the
-       --  behavior of the First (and Last) selector function.
- 
-       --  When the Node component is null, this means the iterator object was
-       --  constructed without a start expression, in which case the (forward)
-       --  iteration starts from the (logical) beginning of the entire sequence
-       --  of items (corresponding to Container.First, for a forward iterator).
- 
-       --  Otherwise, this is iteration over a partial sequence of items. When
-       --  the Node component is non-null, the iterator object was constructed
-       --  with a start expression, that specifies the position from which the
-       --  (forward) partial iteration begins.
- 
-       if Object.Node = null then
-          return Object.Container.First;
-       else
-          return Cursor'(Object.Container, Object.Node);
-       end if;
-    end First;
- 
-    -------------------
-    -- First_Element --
-    -------------------
- 
-    function First_Element (Container : Set) return Element_Type is
-    begin
-       if Checks and then Container.Tree.First = null then
-          raise Constraint_Error with "set is empty";
-       end if;
- 
-       return Container.Tree.First.Element.all;
-    end First_Element;
- 
-    -----------
-    -- Floor --
-    -----------
- 
-    function Floor (Container : Set; Item : Element_Type) return Cursor is
-       Node : constant Node_Access := Element_Keys.Floor (Container.Tree, Item);
-    begin
-       return (if Node = null then No_Element
-               else Cursor'(Container'Unrestricted_Access, Node));
-    end Floor;
- 
-    ----------
-    -- Free --
-    ----------
- 
-    procedure Free (X : in out Node_Access) is
-       procedure Deallocate is
-         new Ada.Unchecked_Deallocation (Node_Type, Node_Access);
- 
-    begin
-       if X = null then
-          return;
-       end if;
- 
-       X.Parent := X;
-       X.Left := X;
-       X.Right := X;
- 
-       begin
-          Free_Element (X.Element);
-       exception
-          when others =>
-             X.Element := null;
-             Deallocate (X);
-             raise;
-       end;
- 
-       Deallocate (X);
-    end Free;
- 
-    ------------------
-    -- Generic_Keys --
-    ------------------
- 
-    package body Generic_Keys is
- 
-       -----------------------
-       -- Local Subprograms --
-       -----------------------
- 
-       function Is_Greater_Key_Node
-         (Left  : Key_Type;
-          Right : Node_Access) return Boolean;
-       pragma Inline (Is_Greater_Key_Node);
- 
-       function Is_Less_Key_Node
-         (Left  : Key_Type;
-          Right : Node_Access) return Boolean;
-       pragma Inline (Is_Less_Key_Node);
- 
-       --------------------------
-       -- Local Instantiations --
-       --------------------------
- 
-       package Key_Keys is
-         new Red_Black_Trees.Generic_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 Node_Access := Key_Keys.Ceiling (Container.Tree, Key);
-       begin
-          return (if Node = null then No_Element
-                  else Cursor'(Container'Unrestricted_Access, Node));
-       end Ceiling;
- 
-       ------------------------
-       -- Constant_Reference --
-       ------------------------
- 
-       function Constant_Reference
-         (Container : aliased Set;
-          Key       : Key_Type) return Constant_Reference_Type
-       is
-          Node : constant Node_Access := Key_Keys.Find (Container.Tree, Key);
- 
-       begin
-          if Checks and then Node = null then
-             raise Constraint_Error with "Key not in set";
-          end if;
- 
-          if Checks and then Node.Element = null then
-             raise Program_Error with "Node has no element";
-          end if;
- 
-          declare
-             Tree : Tree_Type renames Container'Unrestricted_Access.all.Tree;
-             TC : constant Tamper_Counts_Access :=
-               Tree.TC'Unrestricted_Access;
-          begin
-             return R : constant Constant_Reference_Type :=
-               (Element => Node.Element.all'Access,
-                Control => (Controlled with TC))
-             do
-                Lock (TC.all);
-             end return;
-          end;
-       end Constant_Reference;
- 
-       --------------
-       -- 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 : Node_Access := Key_Keys.Find (Container.Tree, Key);
- 
-       begin
-          if Checks and then X = null then
-             raise Constraint_Error with "attempt to delete key not in set";
-          end if;
- 
-          Tree_Operations.Delete_Node_Sans_Free (Container.Tree, X);
-          Free (X);
-       end Delete;
- 
-       -------------
-       -- Element --
-       -------------
- 
-       function Element (Container : Set; Key : Key_Type) return Element_Type is
-          Node : constant Node_Access := Key_Keys.Find (Container.Tree, Key);
-       begin
-          if Checks and then Node = null then
-             raise Constraint_Error with "key not in set";
-          end if;
- 
-          return Node.Element.all;
-       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 : Node_Access := Key_Keys.Find (Container.Tree, Key);
-       begin
-          if X /= null then
-             Tree_Operations.Delete_Node_Sans_Free (Container.Tree, X);
-             Free (X);
-          end if;
-       end Exclude;
- 
-       --------------
-       -- Finalize --
-       --------------
- 
-       procedure Finalize (Control : in out Reference_Control_Type) is
-       begin
-          if Control.Container /= null then
-             Impl.Reference_Control_Type (Control).Finalize;
- 
-             if Checks and then not (Key (Control.Pos) = Control.Old_Key.all)
-             then
-                Delete (Control.Container.all, Key (Control.Pos));
-                raise Program_Error;
-             end if;
- 
-             Control.Container := null;
-             Control.Old_Key   := null;
-          end if;
-       end Finalize;
- 
-       ----------
-       -- Find --
-       ----------
- 
-       function Find (Container : Set; Key : Key_Type) return Cursor is
-          Node : constant Node_Access := Key_Keys.Find (Container.Tree, Key);
-       begin
-          return (if Node = null then No_Element
-                  else Cursor'(Container'Unrestricted_Access, Node));
-       end Find;
- 
-       -----------
-       -- Floor --
-       -----------
- 
-       function Floor (Container : Set; Key : Key_Type) return Cursor is
-          Node : constant Node_Access := Key_Keys.Floor (Container.Tree, Key);
-       begin
-          return (if Node = null then No_Element
-                  else Cursor'(Container'Unrestricted_Access, Node));
-       end Floor;
- 
-       -------------------------
-       -- Is_Greater_Key_Node --
-       -------------------------
- 
-       function Is_Greater_Key_Node
-         (Left  : Key_Type;
-          Right : Node_Access) return Boolean
-       is
-       begin
-          return Key (Right.Element.all) < Left;
-       end Is_Greater_Key_Node;
- 
-       ----------------------
-       -- Is_Less_Key_Node --
-       ----------------------
- 
-       function Is_Less_Key_Node
-         (Left  : Key_Type;
-          Right : Node_Access) return Boolean
-       is
-       begin
-          return Left < Key (Right.Element.all);
-       end Is_Less_Key_Node;
- 
-       ---------
-       -- Key --
-       ---------
- 
-       function Key (Position : Cursor) return Key_Type is
-       begin
-          if Checks and then Position.Node = null then
-             raise Constraint_Error with
-               "Position cursor equals No_Element";
-          end if;
- 
-          if Checks and then Position.Node.Element = null then
-             raise Program_Error with
-               "Position cursor is bad";
-          end if;
- 
-          pragma Assert (Vet (Position.Container.Tree, Position.Node),
-                         "bad cursor in Key");
- 
-          return Key (Position.Node.Element.all);
-       end Key;
- 
-       -------------
-       -- Replace --
-       -------------
- 
-       procedure Replace
-         (Container : in out Set;
-          Key       : Key_Type;
-          New_Item  : Element_Type)
-       is
-          Node : constant Node_Access := Key_Keys.Find (Container.Tree, Key);
- 
-       begin
-          if Checks and then Node = null then
-             raise Constraint_Error with
-               "attempt to replace key not in set";
-          end if;
- 
-          Replace_Element (Container.Tree, Node, New_Item);
-       end Replace;
- 
-       ----------
-       -- Read --
-       ----------
- 
-       procedure Read
-         (Stream : not null access Root_Stream_Type'Class;
-          Item   : out Reference_Type)
-       is
-       begin
-          raise Program_Error with "attempt to stream reference";
-       end Read;
- 
-       ------------------------------
-       -- Reference_Preserving_Key --
-       ------------------------------
- 
-       function Reference_Preserving_Key
-         (Container : aliased in out Set;
-          Position  : Cursor) return Reference_Type
-       is
-       begin
-          if Checks and then Position.Container = null then
-             raise Constraint_Error with "Position cursor has no element";
-          end if;
- 
-          if Checks and then Position.Container /= Container'Unrestricted_Access
-          then
-             raise Program_Error with
-               "Position cursor designates wrong container";
-          end if;
- 
-          if Checks and then Position.Node.Element = null then
-             raise Program_Error with "Node has no element";
-          end if;
- 
-          pragma Assert
-            (Vet (Container.Tree, Position.Node),
-             "bad cursor in function Reference_Preserving_Key");
- 
-          declare
-             Tree : Tree_Type renames Container.Tree;
-          begin
-             return R : constant Reference_Type :=
-               (Element   => Position.Node.Element.all'Unchecked_Access,
-                Control =>
-                  (Controlled with
-                     Tree.TC'Unrestricted_Access,
-                     Container => Container'Access,
-                     Pos       => Position,
-                     Old_Key   => new Key_Type'(Key (Position))))
-          do
-                Lock (Tree.TC);
-             end return;
-          end;
-       end Reference_Preserving_Key;
- 
-       function Reference_Preserving_Key
-         (Container : aliased in out Set;
-          Key       : Key_Type) return Reference_Type
-       is
-          Node : constant Node_Access := Key_Keys.Find (Container.Tree, Key);
- 
-       begin
-          if Checks and then Node = null then
-             raise Constraint_Error with "Key not in set";
-          end if;
- 
-          if Checks and then Node.Element = null then
-             raise Program_Error with "Node has no element";
-          end if;
- 
-          declare
-             Tree : Tree_Type renames Container.Tree;
-          begin
-             return R : constant Reference_Type :=
-               (Element  => Node.Element.all'Unchecked_Access,
-                Control =>
-                  (Controlled with
-                     Tree.TC'Unrestricted_Access,
-                     Container => Container'Access,
-                     Pos       => Find (Container, Key),
-                     Old_Key   => new Key_Type'(Key)))
-             do
-                Lock (Tree.TC);
-             end return;
-          end;
-       end Reference_Preserving_Key;
- 
-       -----------------------------------
-       -- Update_Element_Preserving_Key --
-       -----------------------------------
- 
-       procedure Update_Element_Preserving_Key
-         (Container : in out Set;
-          Position  : Cursor;
-          Process   : not null access
-                         procedure (Element : in out Element_Type))
-       is
-          Tree : Tree_Type renames Container.Tree;
- 
-       begin
-          if Checks and then Position.Node = null then
-             raise Constraint_Error with "Position cursor equals No_Element";
-          end if;
- 
-          if Checks and then Position.Node.Element = null then
-             raise Program_Error with "Position cursor is bad";
-          end if;
- 
-          if Checks and then Position.Container /= Container'Unrestricted_Access
-          then
-             raise Program_Error with "Position cursor designates wrong set";
-          end if;
- 
-          pragma Assert (Vet (Container.Tree, Position.Node),
-                         "bad cursor in Update_Element_Preserving_Key");
- 
-          declare
-             E : Element_Type renames Position.Node.Element.all;
-             K : constant Key_Type := Key (E);
-             Lock : With_Lock (Tree.TC'Unrestricted_Access);
-          begin
-             Process (E);
-             if Equivalent_Keys (K, Key (E)) then
-                return;
-             end if;
-          end;
- 
-          declare
-             X : Node_Access := Position.Node;
-          begin
-             Tree_Operations.Delete_Node_Sans_Free (Tree, X);
-             Free (X);
-          end;
- 
-          raise Program_Error with "key was modified";
-       end Update_Element_Preserving_Key;
- 
-       -----------
-       -- Write --
-       -----------
- 
-       procedure Write
-         (Stream : not null access Root_Stream_Type'Class;
-          Item   : Reference_Type)
-       is
-       begin
-          raise Program_Error with "attempt to stream reference";
-       end Write;
- 
-    end Generic_Keys;
- 
-    ------------------------
-    -- Get_Element_Access --
-    ------------------------
- 
-    function Get_Element_Access
-      (Position : Cursor) return not null Element_Access is
-    begin
-       return Position.Node.Element;
-    end Get_Element_Access;
- 
-    -----------------
-    -- Has_Element --
-    -----------------
- 
-    function Has_Element (Position : Cursor) return Boolean is
-    begin
-       return Position /= No_Element;
-    end Has_Element;
- 
-    -------------
-    -- Include --
-    -------------
- 
-    procedure Include (Container : in out Set; New_Item : Element_Type) is
-       Position : Cursor;
-       Inserted : Boolean;
- 
-       X : Element_Access;
- 
-    begin
-       Insert (Container, New_Item, Position, Inserted);
- 
-       if not Inserted then
-          TE_Check (Container.Tree.TC);
- 
-          declare
-             --  The element allocator may need an accessibility check in the
-             --  case the actual type is class-wide or has access discriminants
-             --  (see RM 4.8(10.1) and AI12-0035).
- 
-             pragma Unsuppress (Accessibility_Check);
- 
-          begin
-             X := Position.Node.Element;
-             Position.Node.Element := new Element_Type'(New_Item);
-             Free_Element (X);
-          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.Tree,
-          New_Item,
-          Position.Node,
-          Inserted);
- 
-       Position.Container := Container'Unrestricted_Access;
-    end Insert;
- 
-    procedure Insert (Container : in out Set; New_Item  : Element_Type) is
-       Position : Cursor;
-       pragma Unreferenced (Position);
- 
-       Inserted : Boolean;
- 
-    begin
-       Insert (Container, New_Item, Position, Inserted);
- 
-       if Checks and then 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
-      (Tree     : in out Tree_Type;
-       New_Item : Element_Type;
-       Node     : out Node_Access;
-       Inserted : out Boolean)
-    is
-       function New_Node return Node_Access;
-       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);
- 
-       --------------
-       -- New_Node --
-       --------------
- 
-       function New_Node return Node_Access is
-          --  The element allocator may need an accessibility check in the case
-          --  the actual type is class-wide or has access discriminants (see
-          --  RM 4.8(10.1) and AI12-0035).
- 
-          pragma Unsuppress (Accessibility_Check);
- 
-          Element : Element_Access := new Element_Type'(New_Item);
- 
-       begin
-          return new Node_Type'(Parent  => null,
-                                Left    => null,
-                                Right   => null,
-                                Color   => Red_Black_Trees.Red,
-                                Element => Element);
- 
-       exception
-          when others =>
-             Free_Element (Element);
-             raise;
-       end New_Node;
- 
-    --  Start of processing for Insert_Sans_Hint
- 
-    begin
-       Conditional_Insert_Sans_Hint
-         (Tree,
-          New_Item,
-          Node,
-          Inserted);
-    end Insert_Sans_Hint;
- 
-    ----------------------
-    -- Insert_With_Hint --
-    ----------------------
- 
-    procedure Insert_With_Hint
-      (Dst_Tree : in out Tree_Type;
-       Dst_Hint : Node_Access;
-       Src_Node : Node_Access;
-       Dst_Node : out Node_Access)
-    is
-       Success : Boolean;
-       pragma Unreferenced (Success);
- 
-       function New_Node return Node_Access;
- 
-       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 Insert_With_Hint is
-          new Element_Keys.Generic_Conditional_Insert_With_Hint
-             (Insert_Post,
-              Insert_Sans_Hint);
- 
-       --------------
-       -- New_Node --
-       --------------
- 
-       function New_Node return Node_Access is
-          Element : Element_Access := new Element_Type'(Src_Node.Element.all);
-          Node    : Node_Access;
- 
-       begin
-          begin
-             Node := new Node_Type;
-          exception
-             when others =>
-                Free_Element (Element);
-                raise;
-          end;
- 
-          Node.Element := Element;
-          return Node;
-       end New_Node;
- 
-    --  Start of processing for Insert_With_Hint
- 
-    begin
-       Insert_With_Hint
-         (Dst_Tree,
-          Dst_Hint,
-          Src_Node.Element.all,
-          Dst_Node,
-          Success);
-    end Insert_With_Hint;
- 
-    ------------------
-    -- Intersection --
-    ------------------
- 
-    procedure Intersection (Target : in out Set; Source : Set) is
-    begin
-       Set_Ops.Intersection (Target.Tree, Source.Tree);
-    end Intersection;
- 
-    function Intersection (Left, Right : Set) return Set is
-       Tree : constant Tree_Type :=
-         Set_Ops.Intersection (Left.Tree, Right.Tree);
-    begin
-       return Set'(Controlled with Tree);
-    end Intersection;
- 
-    --------------
-    -- Is_Empty --
-    --------------
- 
-    function Is_Empty (Container : Set) return Boolean is
-    begin
-       return Container.Tree.Length = 0;
-    end Is_Empty;
- 
-    -----------------------------
-    -- Is_Greater_Element_Node --
-    -----------------------------
- 
-    function Is_Greater_Element_Node
-      (Left  : Element_Type;
-       Right : Node_Access) return Boolean
-    is
-    begin
-       --  e > node same as node < e
- 
-       return Right.Element.all < Left;
-    end Is_Greater_Element_Node;
- 
-    --------------------------
-    -- Is_Less_Element_Node --
-    --------------------------
- 
-    function Is_Less_Element_Node
-      (Left  : Element_Type;
-       Right : Node_Access) return Boolean
-    is
-    begin
-       return Left < Right.Element.all;
-    end Is_Less_Element_Node;
- 
-    -----------------------
-    -- Is_Less_Node_Node --
-    -----------------------
- 
-    function Is_Less_Node_Node (L, R : Node_Access) return Boolean is
-    begin
-       return L.Element.all < R.Element.all;
-    end Is_Less_Node_Node;
- 
-    ---------------
-    -- Is_Subset --
-    ---------------
- 
-    function Is_Subset (Subset : Set; Of_Set : Set) return Boolean is
-    begin
-       return Set_Ops.Is_Subset (Subset => Subset.Tree, Of_Set => Of_Set.Tree);
-    end Is_Subset;
- 
-    -------------
-    -- Iterate --
-    -------------
- 
-    procedure Iterate
-      (Container : Set;
-       Process   : not null access procedure (Position : Cursor))
-    is
-       procedure Process_Node (Node : Node_Access);
-       pragma Inline (Process_Node);
- 
-       procedure Local_Iterate is
-         new Tree_Operations.Generic_Iteration (Process_Node);
- 
-       ------------------
-       -- Process_Node --
-       ------------------
- 
-       procedure Process_Node (Node : Node_Access) is
-       begin
-          Process (Cursor'(Container'Unrestricted_Access, Node));
-       end Process_Node;
- 
-       T : Tree_Type renames Container'Unrestricted_Access.all.Tree;
-       Busy : With_Busy (T.TC'Unrestricted_Access);
- 
-    --  Start of processing for Iterate
- 
-    begin
-       Local_Iterate (T);
-    end Iterate;
- 
-    function Iterate
-      (Container : Set)
-       return Set_Iterator_Interfaces.Reversible_Iterator'class
-    is
-    begin
-       --  The value of the Node component influences the behavior of the First
-       --  and Last selector functions of the iterator object. When the Node
-       --  component is null (as is the case here), this means the iterator
-       --  object was constructed without a start expression. This is a complete
-       --  iterator, meaning that the iteration starts from the (logical)
-       --  beginning of the sequence of items.
- 
-       --  Note: For a forward iterator, Container.First is the beginning, and
-       --  for a reverse iterator, Container.Last is the beginning.
- 
-       return It : constant Iterator :=
-         Iterator'(Limited_Controlled with
-                     Container => Container'Unrestricted_Access,
-                     Node      => null)
-       do
-          Busy (Container.Tree.TC'Unrestricted_Access.all);
-       end return;
-    end Iterate;
- 
-    function Iterate
-      (Container : Set;
-       Start     : Cursor)
-       return Set_Iterator_Interfaces.Reversible_Iterator'class
-    is
-    begin
-       --  It was formerly the case that when Start = No_Element, the partial
-       --  iterator was defined to behave the same as for a complete iterator,
-       --  and iterate over the entire sequence of items. However, those
-       --  semantics were unintuitive and arguably error-prone (it is too easy
-       --  to accidentally create an endless loop), and so they were changed,
-       --  per the ARG meeting in Denver on 2011/11. However, there was no
-       --  consensus about what positive meaning this corner case should have,
-       --  and so it was decided to simply raise an exception. This does imply,
-       --  however, that it is not possible to use a partial iterator to specify
-       --  an empty sequence of items.
- 
-       if Checks and then Start = No_Element then
-          raise Constraint_Error with
-            "Start position for iterator equals No_Element";
-       end if;
- 
-       if Checks and then Start.Container /= Container'Unrestricted_Access then
-          raise Program_Error with
-            "Start cursor of Iterate designates wrong set";
-       end if;
- 
-       pragma Assert (Vet (Container.Tree, Start.Node),
-                      "Start cursor of Iterate is bad");
- 
-       --  The value of the Node component influences the behavior of the First
-       --  and Last selector functions of the iterator object. When the Node
-       --  component is non-null (as is the case here), it means that this is a
-       --  partial iteration, over a subset of the complete sequence of
-       --  items. The iterator object was constructed with a start expression,
-       --  indicating the position from which the iteration begins. Note that
-       --  the start position has the same value irrespective of whether this is
-       --  a forward or reverse iteration.
- 
-       return It : constant Iterator :=
-         (Limited_Controlled with
-            Container => Container'Unrestricted_Access,
-            Node      => Start.Node)
-       do
-          Busy (Container.Tree.TC'Unrestricted_Access.all);
-       end return;
-    end Iterate;
- 
-    ----------
-    -- Last --
-    ----------
- 
-    function Last (Container : Set) return Cursor is
-    begin
-       return
-         (if Container.Tree.Last = null then No_Element
-          else Cursor'(Container'Unrestricted_Access, Container.Tree.Last));
-    end Last;
- 
-    function Last (Object : Iterator) return Cursor is
-    begin
-       --  The value of the iterator object's Node component influences the
-       --  behavior of the Last (and First) selector function.
- 
-       --  When the Node component is null, this means the iterator object was
-       --  constructed without a start expression, in which case the (reverse)
-       --  iteration starts from the (logical) beginning of the entire sequence
-       --  (corresponding to Container.Last, for a reverse iterator).
- 
-       --  Otherwise, this is iteration over a partial sequence of items. When
-       --  the Node component is non-null, the iterator object was constructed
-       --  with a start expression, that specifies the position from which the
-       --  (reverse) partial iteration begins.
- 
-       if Object.Node = null then
-          return Object.Container.Last;
-       else
-          return Cursor'(Object.Container, Object.Node);
-       end if;
-    end Last;
- 
-    ------------------
-    -- Last_Element --
-    ------------------
- 
-    function Last_Element (Container : Set) return Element_Type is
-    begin
-       if Checks and then Container.Tree.Last = null then
-          raise Constraint_Error with "set is empty";
-       end if;
- 
-       return Container.Tree.Last.Element.all;
-    end Last_Element;
- 
-    ----------
-    -- Left --
-    ----------
- 
-    function Left (Node : Node_Access) return Node_Access is
-    begin
-       return Node.Left;
-    end Left;
- 
-    ------------
-    -- Length --
-    ------------
- 
-    function Length (Container : Set) return Count_Type is
-    begin
-       return Container.Tree.Length;
-    end Length;
- 
-    ----------
-    -- Move --
-    ----------
- 
-    procedure Move is new Tree_Operations.Generic_Move (Clear);
- 
-    procedure Move (Target : in out Set; Source : in out Set) is
-    begin
-       Move (Target => Target.Tree, Source => Source.Tree);
-    end Move;
- 
-    ----------
-    -- Next --
-    ----------
- 
-    procedure Next (Position : in out Cursor) is
-    begin
-       Position := Next (Position);
-    end Next;
- 
-    function Next (Position : Cursor) return Cursor is
-    begin
-       if Position = No_Element then
-          return No_Element;
-       end if;
- 
-       if Checks and then Position.Node.Element = null then
-          raise Program_Error with "Position cursor is bad";
-       end if;
- 
-       pragma Assert (Vet (Position.Container.Tree, Position.Node),
-                      "bad cursor in Next");
- 
-       declare
-          Node : constant Node_Access := Tree_Operations.Next (Position.Node);
-       begin
-          return (if Node = null then No_Element
-                  else Cursor'(Position.Container, Node));
-       end;
-    end Next;
- 
-    function Next
-      (Object   : Iterator;
-       Position : Cursor) return Cursor
-    is
-    begin
-       if Position.Container = null then
-          return No_Element;
-       end if;
- 
-       if Checks and then Position.Container /= Object.Container then
-          raise Program_Error with
-            "Position cursor of Next designates wrong set";
-       end if;
- 
-       return Next (Position);
-    end Next;
- 
-    -------------
-    -- Overlap --
-    -------------
- 
-    function Overlap (Left, Right : Set) return Boolean is
-    begin
-       return Set_Ops.Overlap (Left.Tree, Right.Tree);
-    end Overlap;
- 
-    ------------
-    -- Parent --
-    ------------
- 
-    function Parent (Node : Node_Access) return Node_Access is
-    begin
-       return Node.Parent;
-    end Parent;
- 
-    --------------
-    -- Previous --
-    --------------
- 
-    procedure Previous (Position : in out Cursor) is
-    begin
-       Position := Previous (Position);
-    end Previous;
- 
-    function Previous (Position : Cursor) return Cursor is
-    begin
-       if Position = No_Element then
-          return No_Element;
-       end if;
- 
-       if Checks and then Position.Node.Element = null then
-          raise Program_Error with "Position cursor is bad";
-       end if;
- 
-       pragma Assert (Vet (Position.Container.Tree, Position.Node),
-                      "bad cursor in Previous");
- 
-       declare
-          Node : constant Node_Access :=
-            Tree_Operations.Previous (Position.Node);
-       begin
-          return (if Node = null then No_Element
-                  else Cursor'(Position.Container, Node));
-       end;
-    end Previous;
- 
-    function Previous
-      (Object   : Iterator;
-       Position : Cursor) return Cursor
-    is
-    begin
-       if Position.Container = null then
-          return No_Element;
-       end if;
- 
-       if Checks and then Position.Container /= Object.Container then
-          raise Program_Error with
-            "Position cursor of Previous designates wrong set";
-       end if;
- 
-       return Previous (Position);
-    end Previous;
- 
-    ----------------------
-    -- Pseudo_Reference --
-    ----------------------
- 
-    function Pseudo_Reference
-      (Container : aliased Set'Class) return Reference_Control_Type
-    is
-       TC : constant Tamper_Counts_Access :=
-         Container.Tree.TC'Unrestricted_Access;
-    begin
-       return R : constant Reference_Control_Type := (Controlled with TC) do
-          Lock (TC.all);
-       end return;
-    end Pseudo_Reference;
- 
-    -------------------
-    -- Query_Element --
-    -------------------
- 
-    procedure Query_Element
-      (Position  : Cursor;
-       Process   : not null access procedure (Element : Element_Type))
-    is
-    begin
-       if Checks and then Position.Node = null then
-          raise Constraint_Error with "Position cursor equals No_Element";
-       end if;
- 
-       if Checks and then Position.Node.Element = null then
-          raise Program_Error with "Position cursor is bad";
-       end if;
- 
-       pragma Assert (Vet (Position.Container.Tree, Position.Node),
-                      "bad cursor in Query_Element");
- 
-       declare
-          T : Tree_Type renames Position.Container.Tree;
-          Lock : With_Lock (T.TC'Unrestricted_Access);
-       begin
-          Process (Position.Node.Element.all);
-       end;
-    end Query_Element;
- 
-    ----------
-    -- Read --
-    ----------
- 
-    procedure Read
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : out Set)
-    is
-       function Read_Node
-         (Stream : not null access Root_Stream_Type'Class) return Node_Access;
-       pragma Inline (Read_Node);
- 
-       procedure Read is
-          new Tree_Operations.Generic_Read (Clear, Read_Node);
- 
-       ---------------
-       -- Read_Node --
-       ---------------
- 
-       function Read_Node
-         (Stream : not null access Root_Stream_Type'Class) return Node_Access
-       is
-          Node : Node_Access := new Node_Type;
- 
-       begin
-          Node.Element := new Element_Type'(Element_Type'Input (Stream));
-          return Node;
- 
-       exception
-          when others =>
-             Free (Node);  --  Note that Free deallocates elem too
-             raise;
-       end Read_Node;
- 
-    --  Start of processing for Read
- 
-    begin
-       Read (Stream, Container.Tree);
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Cursor)
-    is
-    begin
-       raise Program_Error with "attempt to stream set cursor";
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Constant_Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Read;
- 
-    -------------
-    -- Replace --
-    -------------
- 
-    procedure Replace (Container : in out Set; New_Item : Element_Type) is
-       Node : constant Node_Access :=
-         Element_Keys.Find (Container.Tree, New_Item);
- 
-       X : Element_Access;
-       pragma Warnings (Off, X);
- 
-    begin
-       if Checks and then Node = null then
-          raise Constraint_Error with "attempt to replace element not in set";
-       end if;
- 
-       TE_Check (Container.Tree.TC);
- 
-       declare
-          --  The element allocator may need an accessibility check in the case
-          --  the actual type is class-wide or has access discriminants (see
-          --  RM 4.8(10.1) and AI12-0035).
- 
-          pragma Unsuppress (Accessibility_Check);
- 
-       begin
-          X := Node.Element;
-          Node.Element := new Element_Type'(New_Item);
-          Free_Element (X);
-       end;
-    end Replace;
- 
-    ---------------------
-    -- Replace_Element --
-    ---------------------
- 
-    procedure Replace_Element
-      (Tree : in out Tree_Type;
-       Node : Node_Access;
-       Item : Element_Type)
-    is
-       pragma Assert (Node /= null);
-       pragma Assert (Node.Element /= null);
- 
-       function New_Node return Node_Access;
-       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);
- 
-       --------------
-       -- New_Node --
-       --------------
- 
-       function New_Node return Node_Access is
- 
-          --  The element allocator may need an accessibility check in the case
-          --  the actual type is class-wide or has access discriminants (see
-          --  RM 4.8(10.1) and AI12-0035).
- 
-          pragma Unsuppress (Accessibility_Check);
- 
-       begin
-          Node.Element := new Element_Type'(Item);  -- OK if fails
-          Node.Color := Red;
-          Node.Parent := null;
-          Node.Right := null;
-          Node.Left := null;
-          return Node;
-       end New_Node;
- 
-       Hint     : Node_Access;
-       Result   : Node_Access;
-       Inserted : Boolean;
-       Compare  : Boolean;
- 
-       X : Element_Access := Node.Element;
- 
-    --  Start of processing for Replace_Element
- 
-    begin
-       --  Replace_Element assigns value Item to the element designated by Node,
-       --  per certain semantic constraints, described as follows.
- 
-       --  If Item is equivalent to the element, then element is replaced and
-       --  there's nothing else to do. This is the easy case.
- 
-       --  If Item is not equivalent, then the node will (possibly) have to move
-       --  to some other place in the tree. This is slighly more complicated,
-       --  because we must ensure that Item is not equivalent to some other
-       --  element in the tree (in which case, the replacement is not allowed).
- 
-       --  Determine whether Item is equivalent to element on the specified
-       --  node.
- 
-       declare
-          Lock : With_Lock (Tree.TC'Unrestricted_Access);
-       begin
-          Compare := (if Item < Node.Element.all then False
-                      elsif Node.Element.all < Item then False
-                      else True);
-       end;
- 
-       if Compare then
-          --  Item is equivalent to the node's element, so we will not have to
-          --  move the node.
- 
-          TE_Check (Tree.TC);
- 
-          declare
-             --  The element allocator may need an accessibility check in the
-             --  case the actual type is class-wide or has access discriminants
-             --  (see RM 4.8(10.1) and AI12-0035).
- 
-             pragma Unsuppress (Accessibility_Check);
- 
-          begin
-             Node.Element := new Element_Type'(Item);
-             Free_Element (X);
-          end;
- 
-          return;
-       end if;
- 
-       --  The replacement Item is not equivalent to the element on the
-       --  specified node, which means that it will need to be re-inserted in a
-       --  different position in the tree. We must now determine whether Item is
-       --  equivalent to some other element in the tree (which would prohibit
-       --  the assignment and hence the move).
- 
-       --  Ceiling returns the smallest element equivalent or greater than the
-       --  specified Item; if there is no such element, then it returns null.
- 
-       Hint := Element_Keys.Ceiling (Tree, Item);
- 
-       if Hint /= null then
-          declare
-             Lock : With_Lock (Tree.TC'Unrestricted_Access);
-          begin
-             Compare := Item < Hint.Element.all;
-          end;
- 
-          --  Item >= Hint.Element
- 
-          if Checks and then not Compare then
- 
-             --  Ceiling returns an element that is equivalent or greater
-             --  than Item. If Item is "not less than" the element, then
-             --  by elimination we know that Item is equivalent to the element.
- 
-             --  But this means that it is not possible to assign the value of
-             --  Item to the specified element (on Node), because a different
-             --  element (on Hint) equivalent to Item already exsits. (Were we
-             --  to change Node's element value, we would have to move Node, but
-             --  we would be unable to move the Node, because its new position
-             --  in the tree is already occupied by an equivalent element.)
- 
-             raise Program_Error with "attempt to replace existing element";
-          end if;
- 
-          --  Item is not equivalent to any other element in the tree, so it is
-          --  safe to assign the value of Item to Node.Element. This means that
-          --  the node will have to move to a different position in the tree
-          --  (because its element will have a different value).
- 
-          --  The nearest (greater) neighbor of Item is Hint. This will be the
-          --  insertion position of Node (because its element will have Item as
-          --  its new value).
- 
-          --  If Node equals Hint, the relative position of Node does not
-          --  change. This allows us to perform an optimization: we need not
-          --  remove Node from the tree and then reinsert it with its new value,
-          --  because it would only be placed in the exact same position.
- 
-          if Hint = Node then
-             TE_Check (Tree.TC);
- 
-             declare
-                --  The element allocator may need an accessibility check in the
-                --  case actual type is class-wide or has access discriminants
-                --  (see RM 4.8(10.1) and AI12-0035).
- 
-                pragma Unsuppress (Accessibility_Check);
- 
-             begin
-                Node.Element := new Element_Type'(Item);
-                Free_Element (X);
-             end;
- 
-             return;
-          end if;
-       end if;
- 
-       --  If we get here, it is because Item was greater than all elements in
-       --  the tree (Hint = null), or because Item was less than some element at
-       --  a different place in the tree (Item < Hint.Element.all). In either
-       --  case, we remove Node from the tree (without actually deallocating
-       --  it), and then insert Item into the tree, onto the same Node (so no
-       --  new node is actually allocated).
- 
-       Tree_Operations.Delete_Node_Sans_Free (Tree, Node);  -- Checks busy-bit
- 
-       Local_Insert_With_Hint
-         (Tree     => Tree,
-          Position => Hint,
-          Key      => Item,
-          Node     => Result,
-          Inserted => Inserted);
- 
-       pragma Assert (Inserted);
-       pragma Assert (Result = Node);
- 
-       Free_Element (X);
-    end Replace_Element;
- 
-    procedure Replace_Element
-     (Container : in out Set;
-      Position  : Cursor;
-      New_Item  : Element_Type)
-    is
-    begin
-       if Checks and then Position.Node = null then
-          raise Constraint_Error with "Position cursor equals No_Element";
-       end if;
- 
-       if Checks and then Position.Node.Element = null then
-          raise Program_Error with "Position cursor is bad";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with "Position cursor designates wrong set";
-       end if;
- 
-       pragma Assert (Vet (Container.Tree, Position.Node),
-                      "bad cursor in Replace_Element");
- 
-       Replace_Element (Container.Tree, Position.Node, New_Item);
-    end Replace_Element;
- 
-    ---------------------
-    -- Reverse_Iterate --
-    ---------------------
- 
-    procedure Reverse_Iterate
-      (Container : Set;
-       Process   : not null access procedure (Position : Cursor))
-    is
-       procedure Process_Node (Node : Node_Access);
-       pragma Inline (Process_Node);
- 
-       procedure Local_Reverse_Iterate is
-          new Tree_Operations.Generic_Reverse_Iteration (Process_Node);
- 
-       ------------------
-       -- Process_Node --
-       ------------------
- 
-       procedure Process_Node (Node : Node_Access) is
-       begin
-          Process (Cursor'(Container'Unrestricted_Access, Node));
-       end Process_Node;
- 
-       T : Tree_Type renames Container.Tree'Unrestricted_Access.all;
-       Busy : With_Busy (T.TC'Unrestricted_Access);
- 
-    --  Start of processing for Reverse_Iterate
- 
-    begin
-       Local_Reverse_Iterate (T);
-    end Reverse_Iterate;
- 
-    -----------
-    -- Right --
-    -----------
- 
-    function Right (Node : Node_Access) return Node_Access is
-    begin
-       return Node.Right;
-    end Right;
- 
-    ---------------
-    -- Set_Color --
-    ---------------
- 
-    procedure Set_Color (Node : Node_Access; Color : Color_Type) is
-    begin
-       Node.Color := Color;
-    end Set_Color;
- 
-    --------------
-    -- Set_Left --
-    --------------
- 
-    procedure Set_Left (Node : Node_Access; Left : Node_Access) is
-    begin
-       Node.Left := Left;
-    end Set_Left;
- 
-    ----------------
-    -- Set_Parent --
-    ----------------
- 
-    procedure Set_Parent (Node : Node_Access; Parent : Node_Access) is
-    begin
-       Node.Parent := Parent;
-    end Set_Parent;
- 
-    ---------------
-    -- Set_Right --
-    ---------------
- 
-    procedure Set_Right (Node : Node_Access; Right : Node_Access) is
-    begin
-       Node.Right := Right;
-    end Set_Right;
- 
-    --------------------------
-    -- Symmetric_Difference --
-    --------------------------
- 
-    procedure Symmetric_Difference (Target : in out Set; Source : Set) is
-    begin
-       Set_Ops.Symmetric_Difference (Target.Tree, Source.Tree);
-    end Symmetric_Difference;
- 
-    function Symmetric_Difference (Left, Right : Set) return Set is
-       Tree : constant Tree_Type :=
-         Set_Ops.Symmetric_Difference (Left.Tree, Right.Tree);
-    begin
-       return Set'(Controlled with Tree);
-    end Symmetric_Difference;
- 
-    ------------
-    -- To_Set --
-    ------------
- 
-    function To_Set (New_Item : Element_Type) return Set is
-       Tree     : Tree_Type;
-       Node     : Node_Access;
-       Inserted : Boolean;
-       pragma Unreferenced (Node, Inserted);
-    begin
-       Insert_Sans_Hint (Tree, New_Item, Node, Inserted);
-       return Set'(Controlled with Tree);
-    end To_Set;
- 
-    -----------
-    -- Union --
-    -----------
- 
-    procedure Union (Target : in out Set; Source : Set) is
-    begin
-       Set_Ops.Union (Target.Tree, Source.Tree);
-    end Union;
- 
-    function Union (Left, Right : Set) return Set is
-       Tree : constant Tree_Type := Set_Ops.Union (Left.Tree, Right.Tree);
-    begin
-       return Set'(Controlled with Tree);
-    end Union;
- 
-    -----------
-    -- Write --
-    -----------
- 
-    procedure Write
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : Set)
-    is
-       procedure Write_Node
-         (Stream : not null access Root_Stream_Type'Class;
-          Node   : Node_Access);
-       pragma Inline (Write_Node);
- 
-       procedure Write is
-          new Tree_Operations.Generic_Write (Write_Node);
- 
-       ----------------
-       -- Write_Node --
-       ----------------
- 
-       procedure Write_Node
-         (Stream : not null access Root_Stream_Type'Class;
-          Node   : Node_Access)
-       is
-       begin
-          Element_Type'Output (Stream, Node.Element.all);
-       end Write_Node;
- 
-    --  Start of processing for Write
- 
-    begin
-       Write (Stream, Container.Tree);
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Cursor)
-    is
-    begin
-       raise Program_Error with "attempt to stream set cursor";
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Constant_Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Write;
- 
- end Ada.Containers.Indefinite_Ordered_Sets;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ciorse.ads gcc-8.1.0/gcc/ada/a-ciorse.ads
*** gcc-7.3.0/gcc/ada/a-ciorse.ads	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-ciorse.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,467 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                 ADA.CONTAINERS.INDEFINITE_ORDERED_SETS                   --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, 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/>.                                          --
- --                                                                          --
- -- This unit was originally developed by Matthew J Heaney.                  --
- ------------------------------------------------------------------------------
- 
- with Ada.Iterator_Interfaces;
- 
- with Ada.Containers.Helpers;
- private with Ada.Containers.Red_Black_Trees;
- private with Ada.Finalization;
- private with Ada.Streams;
- 
- generic
-    type Element_Type (<>) is private;
- 
-    with function "<" (Left, Right : Element_Type) return Boolean is <>;
-    with function "=" (Left, Right : Element_Type) return Boolean is <>;
- 
- package Ada.Containers.Indefinite_Ordered_Sets is
-    pragma Annotate (CodePeer, Skip_Analysis);
-    pragma Preelaborate;
-    pragma Remote_Types;
- 
-    function Equivalent_Elements (Left, Right : Element_Type) return Boolean;
- 
-    type Set is tagged private with
-       Constant_Indexing => Constant_Reference,
-       Default_Iterator  => Iterate,
-       Iterator_Element  => Element_Type;
- 
-    pragma Preelaborable_Initialization (Set);
- 
-    type Cursor is private;
-    pragma Preelaborable_Initialization (Cursor);
- 
-    Empty_Set : constant Set;
- 
-    No_Element : constant Cursor;
- 
-    function Has_Element (Position : Cursor) return Boolean;
- 
-    package Set_Iterator_Interfaces is new
-      Ada.Iterator_Interfaces (Cursor, Has_Element);
- 
-    function "=" (Left, Right : Set) return Boolean;
- 
-    function Equivalent_Sets (Left, Right : Set) return Boolean;
- 
-    function To_Set (New_Item : Element_Type) return Set;
- 
-    function Length (Container : Set) return Count_Type;
- 
-    function Is_Empty (Container : Set) return Boolean;
- 
-    procedure Clear (Container : in out Set);
- 
-    function Element (Position : Cursor) return Element_Type;
- 
-    procedure Replace_Element
-      (Container : in out Set;
-       Position  : Cursor;
-       New_Item  : Element_Type);
- 
-    procedure Query_Element
-      (Position : Cursor;
-       Process  : not null access procedure (Element : Element_Type));
- 
-    type Constant_Reference_Type
-      (Element : not null access constant Element_Type) is
-    private with
-       Implicit_Dereference => Element;
- 
-    function Constant_Reference
-      (Container : aliased Set;
-       Position  : Cursor) return Constant_Reference_Type;
-    pragma Inline (Constant_Reference);
- 
-    procedure Assign (Target : in out Set; Source : Set);
- 
-    function Copy (Source : Set) return Set;
- 
-    procedure Move (Target : in out Set; Source : in out Set);
- 
-    procedure Insert
-      (Container : in out Set;
-       New_Item  : Element_Type;
-       Position  : out Cursor;
-       Inserted  : out Boolean);
- 
-    procedure Insert
-      (Container : in out Set;
-       New_Item  : Element_Type);
- 
-    procedure Include
-      (Container : in out Set;
-       New_Item  : Element_Type);
- 
-    procedure Replace
-      (Container : in out Set;
-       New_Item  : Element_Type);
- 
-    procedure Exclude
-      (Container : in out Set;
-       Item      : Element_Type);
- 
-    procedure Delete
-      (Container : in out Set;
-       Item      : Element_Type);
- 
-    procedure Delete
-      (Container : in out Set;
-       Position  : in out Cursor);
- 
-    procedure Delete_First (Container : in out Set);
- 
-    procedure Delete_Last (Container : in out Set);
- 
-    procedure Union (Target : in out Set; Source : Set);
- 
-    function Union (Left, Right : Set) return Set;
- 
-    function "or" (Left, Right : Set) return Set renames Union;
- 
-    procedure Intersection (Target : in out Set; Source : Set);
- 
-    function Intersection (Left, Right : Set) return Set;
- 
-    function "and" (Left, Right : Set) return Set renames Intersection;
- 
-    procedure Difference (Target : in out Set; Source : Set);
- 
-    function Difference (Left, Right : Set) return Set;
- 
-    function "-" (Left, Right : Set) return Set renames Difference;
- 
-    procedure Symmetric_Difference (Target : in out Set; Source : Set);
- 
-    function Symmetric_Difference (Left, Right : Set) return Set;
- 
-    function "xor" (Left, Right : Set) return Set renames Symmetric_Difference;
- 
-    function Overlap (Left, Right : Set) return Boolean;
- 
-    function Is_Subset (Subset : Set; Of_Set : Set) return Boolean;
- 
-    function First (Container : Set) return Cursor;
- 
-    function First_Element (Container : Set) return Element_Type;
- 
-    function Last (Container : Set) return Cursor;
- 
-    function Last_Element (Container : Set) return Element_Type;
- 
-    function Next (Position : Cursor) return Cursor;
- 
-    procedure Next (Position : in out Cursor);
- 
-    function Previous (Position : Cursor) return Cursor;
- 
-    procedure Previous (Position : in out Cursor);
- 
-    function Find
-      (Container : Set;
-       Item      : Element_Type) return Cursor;
- 
-    function Floor
-      (Container : Set;
-       Item      : Element_Type) return Cursor;
- 
-    function Ceiling
-      (Container : Set;
-       Item      : Element_Type) return Cursor;
- 
-    function Contains
-      (Container : Set;
-       Item      : Element_Type) return Boolean;
- 
-    function "<" (Left, Right : Cursor) return Boolean;
- 
-    function ">" (Left, Right : Cursor) return Boolean;
- 
-    function "<" (Left : Cursor; Right : Element_Type) return Boolean;
- 
-    function ">" (Left : Cursor; Right : Element_Type) return Boolean;
- 
-    function "<" (Left : Element_Type; Right : Cursor) return Boolean;
- 
-    function ">" (Left : Element_Type; Right : Cursor) return Boolean;
- 
-    procedure Iterate
-      (Container : Set;
-       Process   : not null access procedure (Position : Cursor));
- 
-    procedure Reverse_Iterate
-      (Container : Set;
-       Process   : not null access procedure (Position : Cursor));
- 
-    function Iterate
-      (Container : Set)
-       return Set_Iterator_Interfaces.Reversible_Iterator'class;
- 
-    function Iterate
-      (Container : Set;
-       Start     : Cursor)
-       return Set_Iterator_Interfaces.Reversible_Iterator'class;
- 
-    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 is
- 
-       function Equivalent_Keys (Left, Right : Key_Type) return Boolean;
- 
-       function Key (Position : Cursor) return Key_Type;
- 
-       function Element (Container : Set; Key : Key_Type) return Element_Type;
- 
-       procedure Replace
-         (Container : in out Set;
-          Key       : Key_Type;
-          New_Item  : Element_Type);
- 
-       procedure Exclude (Container : in out Set; Key : Key_Type);
- 
-       procedure Delete (Container : in out Set; Key : Key_Type);
- 
-       function Find
-         (Container : Set;
-          Key       : Key_Type) return Cursor;
- 
-       function Floor
-         (Container : Set;
-          Key       : Key_Type) return Cursor;
- 
-       function Ceiling
-         (Container : Set;
-          Key       : Key_Type) return Cursor;
- 
-       function Contains
-         (Container : Set;
-          Key       : Key_Type) return Boolean;
- 
-       procedure Update_Element_Preserving_Key
-         (Container : in out Set;
-          Position  : Cursor;
-          Process   : not null access
-                        procedure (Element : in out Element_Type));
- 
-       type Reference_Type (Element : not null access Element_Type) is private
-       with
-          Implicit_Dereference => Element;
- 
-       function Reference_Preserving_Key
-         (Container : aliased in out Set;
-          Position  : Cursor) return Reference_Type;
- 
-       function Constant_Reference
-         (Container : aliased Set;
-          Key       : Key_Type) return Constant_Reference_Type;
- 
-       function Reference_Preserving_Key
-         (Container : aliased in out Set;
-          Key       : Key_Type) return Reference_Type;
- 
-    private
-       type Set_Access is access all Set;
-       for Set_Access'Storage_Size use 0;
- 
-       type Key_Access is access all Key_Type;
- 
-       package Impl is new Helpers.Generic_Implementation;
- 
-       type Reference_Control_Type is
-         new Impl.Reference_Control_Type with
-       record
-          Container : Set_Access;
-          Pos       : Cursor;
-          Old_Key   : Key_Access;
-       end record;
- 
-       overriding procedure Finalize (Control : in out Reference_Control_Type);
-       pragma Inline (Finalize);
- 
-       type Reference_Type (Element : not null access Element_Type) is record
-          Control  : Reference_Control_Type;
-       end record;
- 
-       use Ada.Streams;
- 
-       procedure Write
-         (Stream : not null access Root_Stream_Type'Class;
-          Item   : Reference_Type);
- 
-       for Reference_Type'Write use Write;
- 
-       procedure Read
-         (Stream : not null access Root_Stream_Type'Class;
-          Item   : out Reference_Type);
- 
-       for Reference_Type'Read use Read;
-    end Generic_Keys;
- 
- private
-    pragma Inline (Next);
-    pragma Inline (Previous);
- 
-    type Node_Type;
-    type Node_Access is access Node_Type;
- 
-    type Element_Access is access all Element_Type;
- 
-    type Node_Type is limited record
-       Parent  : Node_Access;
-       Left    : Node_Access;
-       Right   : Node_Access;
-       Color   : Red_Black_Trees.Color_Type := Red_Black_Trees.Red;
-       Element : Element_Access;
-    end record;
- 
-    package Tree_Types is new Red_Black_Trees.Generic_Tree_Types
-      (Node_Type,
-       Node_Access);
- 
-    type Set is new Ada.Finalization.Controlled with record
-       Tree : Tree_Types.Tree_Type;
-    end record;
- 
-    overriding procedure Adjust (Container : in out Set);
- 
-    overriding procedure Finalize (Container : in out Set) renames Clear;
- 
-    use Red_Black_Trees;
-    use Tree_Types, Tree_Types.Implementation;
-    use Ada.Finalization;
-    use Ada.Streams;
- 
-    procedure Write
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : Set);
- 
-    for Set'Write use Write;
- 
-    procedure Read
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : out Set);
- 
-    for Set'Read use Read;
- 
-    type Set_Access is access all Set;
-    for Set_Access'Storage_Size use 0;
- 
-    type Cursor is record
-       Container : Set_Access;
-       Node      : Node_Access;
-    end record;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Cursor);
- 
-    for Cursor'Write use Write;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Cursor);
- 
-    for Cursor'Read use Read;
- 
-    subtype Reference_Control_Type is Implementation.Reference_Control_Type;
-    --  It is necessary to rename this here, so that the compiler can find it
- 
-    type Constant_Reference_Type
-      (Element : not null access constant Element_Type) is
-       record
-          Control : Reference_Control_Type :=
-            raise Program_Error with "uninitialized reference";
-          --  The RM says, "The default initialization of an object of
-          --  type Constant_Reference_Type or Reference_Type propagates
-          --  Program_Error."
-       end record;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Constant_Reference_Type);
- 
-    for Constant_Reference_Type'Read use Read;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Constant_Reference_Type);
- 
-    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;
-    pragma Inline (Pseudo_Reference);
-    --  Creates an object of type Reference_Control_Type pointing to the
-    --  container, and increments the Lock. Finalization of this object will
-    --  decrement the Lock.
- 
-    function Get_Element_Access
-      (Position : Cursor) return not null Element_Access;
-    --  Returns a pointer to the element designated by Position.
- 
-    Empty_Set : constant Set := (Controlled with others => <>);
- 
-    No_Element : constant Cursor := Cursor'(null, null);
- 
-    type Iterator is new Limited_Controlled and
-      Set_Iterator_Interfaces.Reversible_Iterator with
-    record
-       Container : Set_Access;
-       Node      : Node_Access;
-    end record
-      with Disable_Controlled => not T_Check;
- 
-    overriding procedure Finalize (Object : in out Iterator);
- 
-    overriding function First (Object : Iterator) return Cursor;
-    overriding function Last  (Object : Iterator) return Cursor;
- 
-    overriding function Next
-      (Object   : Iterator;
-       Position : Cursor) return Cursor;
- 
-    overriding function Previous
-      (Object   : Iterator;
-       Position : Cursor) return Cursor;
- 
- end Ada.Containers.Indefinite_Ordered_Sets;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-clrefi.adb gcc-8.1.0/gcc/ada/a-clrefi.adb
*** gcc-7.3.0/gcc/ada/a-clrefi.adb	Tue Oct 20 12:42:53 2015
--- gcc-8.1.0/gcc/ada/a-clrefi.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,527 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --       A D A . C O M M A N D _ L I N E . R E S P O N S E _ F I L E        --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2007-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 Compiler_Unit_Warning;
- 
- with Ada.Unchecked_Deallocation;
- 
- with System.OS_Lib; use System.OS_Lib;
- 
- package body Ada.Command_Line.Response_File is
- 
-    type File_Rec;
-    type File_Ptr is access File_Rec;
-    type File_Rec is record
-       Name : String_Access;
-       Next : File_Ptr;
-       Prev : File_Ptr;
-    end record;
-    --  To build a stack of response file names
- 
-    procedure Free is new Ada.Unchecked_Deallocation (File_Rec, File_Ptr);
- 
-    type Argument_List_Access is access Argument_List;
-    procedure Free is new Ada.Unchecked_Deallocation
-      (Argument_List, Argument_List_Access);
-    --  Free only the allocated Argument_List, not allocated String components
- 
-    --------------------
-    -- Arguments_From --
-    --------------------
- 
-    function Arguments_From
-      (Response_File_Name        : String;
-       Recursive                 : Boolean := False;
-       Ignore_Non_Existing_Files : Boolean := False)
-       return Argument_List
-    is
-       First_File : File_Ptr := null;
-       Last_File  : File_Ptr := null;
-       --  The stack of response files
- 
-       Arguments  : Argument_List_Access := new Argument_List (1 .. 4);
-       Last_Arg   : Natural := 0;
- 
-       procedure Add_Argument (Arg : String);
-       --  Add argument Arg to argument list Arguments, increasing Arguments
-       --  if necessary.
- 
-       procedure Recurse (File_Name : String);
-       --  Get the arguments from the file and call itself recursively if one of
-       --  the argument starts with character '@'.
- 
-       ------------------
-       -- Add_Argument --
-       ------------------
- 
-       procedure Add_Argument (Arg : String) is
-       begin
-          if Last_Arg = Arguments'Last then
-             declare
-                New_Arguments : constant Argument_List_Access :=
-                  new Argument_List (1 .. Arguments'Last * 2);
-             begin
-                New_Arguments (Arguments'Range) := Arguments.all;
-                Arguments.all := (others => null);
-                Free (Arguments);
-                Arguments := New_Arguments;
-             end;
-          end if;
- 
-          Last_Arg := Last_Arg + 1;
-          Arguments (Last_Arg) := new String'(Arg);
-       end Add_Argument;
- 
-       -------------
-       -- Recurse --
-       -------------
- 
-       procedure Recurse (File_Name : String) is
-          FD : File_Descriptor;
- 
-          Buffer_Size : constant := 1500;
-          Buffer : String (1 .. Buffer_Size);
- 
-          Buffer_Length : Natural;
- 
-          Buffer_Cursor : Natural;
- 
-          End_Of_File_Reached : Boolean;
- 
-          Line : String (1 .. Max_Line_Length + 1);
-          Last : Natural;
- 
-          First_Char : Positive;
-          --  Index of the first character of an argument in Line
- 
-          Last_Char : Natural;
-          --  Index of the last character of an argument in Line
- 
-          In_String : Boolean;
-          --  True when inside a quoted string
- 
-          Arg : Positive;
- 
-          function End_Of_File return Boolean;
-          --  True when the end of the response file has been reached
- 
-          procedure Get_Buffer;
-          --  Read one buffer from the response file
- 
-          procedure Get_Line;
-          --  Get one line from the response file
- 
-          -----------------
-          -- End_Of_File --
-          -----------------
- 
-          function End_Of_File return Boolean is
-          begin
-             return End_Of_File_Reached and then Buffer_Cursor > Buffer_Length;
-          end End_Of_File;
- 
-          ----------------
-          -- Get_Buffer --
-          ----------------
- 
-          procedure Get_Buffer is
-          begin
-             Buffer_Length := Read (FD, Buffer (1)'Address, Buffer'Length);
-             End_Of_File_Reached := Buffer_Length < Buffer'Length;
-             Buffer_Cursor := 1;
-          end Get_Buffer;
- 
-          --------------
-          -- Get_Line --
-          --------------
- 
-          procedure Get_Line is
-             Ch : Character;
- 
-          begin
-             Last := 0;
- 
-             if End_Of_File then
-                return;
-             end if;
- 
-             loop
-                Ch := Buffer (Buffer_Cursor);
- 
-                exit when Ch = ASCII.CR or else
-                          Ch = ASCII.LF or else
-                          Ch = ASCII.FF;
- 
-                Last := Last + 1;
-                Line (Last) := Ch;
- 
-                if Last = Line'Last then
-                   return;
-                end if;
- 
-                Buffer_Cursor := Buffer_Cursor + 1;
- 
-                if Buffer_Cursor > Buffer_Length then
-                   Get_Buffer;
- 
-                   if End_Of_File then
-                      return;
-                   end if;
-                end if;
-             end loop;
- 
-             loop
-                Ch := Buffer (Buffer_Cursor);
- 
-                exit when Ch /= ASCII.HT and then
-                          Ch /= ASCII.LF and then
-                          Ch /= ASCII.FF;
- 
-                Buffer_Cursor := Buffer_Cursor + 1;
- 
-                if Buffer_Cursor > Buffer_Length then
-                   Get_Buffer;
- 
-                   if End_Of_File then
-                      return;
-                   end if;
-                end if;
-             end loop;
-          end Get_Line;
- 
-       --  Start of processing for Recurse
- 
-       begin
-          Last_Arg := 0;
- 
-          --  Open the response file. If not found, fail or report a warning,
-          --  depending on the value of Ignore_Non_Existing_Files.
- 
-          FD := Open_Read (File_Name, Text);
- 
-          if FD = Invalid_FD then
-             if Ignore_Non_Existing_Files then
-                return;
-             else
-                raise File_Does_Not_Exist;
-             end if;
-          end if;
- 
-          --  Put the response file name on the stack
- 
-          if First_File = null then
-             First_File :=
-               new File_Rec'
-                 (Name => new String'(File_Name),
-                  Next => null,
-                  Prev => null);
-             Last_File  := First_File;
- 
-          else
-             declare
-                Current : File_Ptr := First_File;
- 
-             begin
-                loop
-                   if Current.Name.all = File_Name then
-                      raise Circularity_Detected;
-                   end if;
- 
-                   Current := Current.Next;
-                   exit when Current = null;
-                end loop;
- 
-                Last_File.Next :=
-                  new File_Rec'
-                    (Name => new String'(File_Name),
-                     Next => null,
-                     Prev => Last_File);
-                Last_File := Last_File.Next;
-             end;
-          end if;
- 
-          End_Of_File_Reached := False;
-          Get_Buffer;
- 
-          --  Read the response file line by line
- 
-          Line_Loop :
-          while not End_Of_File loop
-             Get_Line;
- 
-             if Last = Line'Last then
-                raise Line_Too_Long;
-             end if;
- 
-             First_Char := 1;
- 
-             --  Get each argument on the line
- 
-             Arg_Loop :
-             loop
-                --  First, skip any white space
- 
-                while First_Char <= Last loop
-                   exit when Line (First_Char) /= ' ' and then
-                             Line (First_Char) /= ASCII.HT;
-                   First_Char := First_Char + 1;
-                end loop;
- 
-                exit Arg_Loop when First_Char > Last;
- 
-                Last_Char := First_Char;
-                In_String := False;
- 
-                --  Get the character one by one
- 
-                Character_Loop :
-                while Last_Char <= Last loop
- 
-                   --  Inside a string, check only for '"'
- 
-                   if In_String then
-                      if Line (Last_Char) = '"' then
- 
-                         --  Remove the '"'
- 
-                         Line (Last_Char .. Last - 1) :=
-                           Line (Last_Char + 1 .. Last);
-                         Last := Last - 1;
- 
-                         --  End of string is end of argument
- 
-                         if Last_Char > Last or else
-                           Line (Last_Char) = ' ' or else
-                           Line (Last_Char) = ASCII.HT
-                         then
-                            In_String := False;
- 
-                            Last_Char := Last_Char - 1;
-                            exit Character_Loop;
- 
-                         else
-                            --  If there are two consecutive '"', the quoted
-                            --  string is not closed
- 
-                            In_String := Line (Last_Char) = '"';
- 
-                            if In_String then
-                               Last_Char := Last_Char + 1;
-                            end if;
-                         end if;
- 
-                      else
-                         Last_Char := Last_Char + 1;
-                      end if;
- 
-                   elsif Last_Char = Last then
- 
-                      --  An opening '"' at the end of the line is an error
- 
-                      if Line (Last) = '"' then
-                         raise No_Closing_Quote;
- 
-                      else
-                         --  The argument ends with the line
- 
-                         exit Character_Loop;
-                      end if;
- 
-                   elsif Line (Last_Char) = '"' then
- 
-                      --  Entering a quoted string: remove the '"'
- 
-                      In_String := True;
-                      Line (Last_Char .. Last - 1) :=
-                        Line (Last_Char + 1 .. Last);
-                      Last := Last - 1;
- 
-                   else
-                      --  Outside quoted strings, white space ends the argument
- 
-                      exit Character_Loop
-                           when Line (Last_Char + 1) = ' ' or else
-                                Line (Last_Char + 1) = ASCII.HT;
- 
-                      Last_Char := Last_Char + 1;
-                   end if;
-                end loop Character_Loop;
- 
-                --  It is an error to not close a quoted string before the end
-                --  of the line.
- 
-                if In_String then
-                   raise No_Closing_Quote;
-                end if;
- 
-                --  Add the argument to the list
- 
-                declare
-                   Arg : String (1 .. Last_Char - First_Char + 1);
-                begin
-                   Arg := Line (First_Char .. Last_Char);
-                   Add_Argument (Arg);
-                end;
- 
-                --  Next argument, if line is not finished
- 
-                First_Char := Last_Char + 1;
-             end loop Arg_Loop;
-          end loop Line_Loop;
- 
-          Close (FD);
- 
-          --  If Recursive is True, check for any argument starting with '@'
- 
-          if Recursive then
-             Arg := 1;
-             while Arg <= Last_Arg loop
- 
-                if Arguments (Arg)'Length > 0 and then
-                   Arguments (Arg) (1) = '@'
-                then
-                   --  Ignore argument "@" with no file name
- 
-                   if Arguments (Arg)'Length = 1 then
-                      Arguments (Arg .. Last_Arg - 1) :=
-                        Arguments (Arg + 1 .. Last_Arg);
-                      Last_Arg := Last_Arg - 1;
- 
-                   else
-                      --  Save the current arguments and get those in the new
-                      --  response file.
- 
-                      declare
-                         Inc_File_Name     : constant String :=
-                           Arguments (Arg) (2 .. Arguments (Arg)'Last);
-                         Current_Arguments : constant Argument_List :=
-                           Arguments (1 .. Last_Arg);
-                      begin
-                         Recurse (Inc_File_Name);
- 
-                         --  Insert the new arguments where the new response
-                         --  file was imported.
- 
-                         declare
-                            New_Arguments : constant Argument_List :=
-                              Arguments (1 .. Last_Arg);
-                            New_Last_Arg  : constant Positive :=
-                              Current_Arguments'Length +
-                              New_Arguments'Length - 1;
- 
-                         begin
-                            --  Grow Arguments if it is not large enough
- 
-                            if Arguments'Last < New_Last_Arg then
-                               Last_Arg := Arguments'Last;
-                               Free (Arguments);
- 
-                               while Last_Arg < New_Last_Arg loop
-                                  Last_Arg := Last_Arg * 2;
-                               end loop;
- 
-                               Arguments := new Argument_List (1 .. Last_Arg);
-                            end if;
- 
-                            Last_Arg := New_Last_Arg;
- 
-                            Arguments (1 .. Last_Arg) :=
-                              Current_Arguments (1 .. Arg - 1) &
-                            New_Arguments &
-                            Current_Arguments
-                              (Arg + 1 .. Current_Arguments'Last);
- 
-                            Arg := Arg + New_Arguments'Length;
-                         end;
-                      end;
-                   end if;
- 
-                else
-                   Arg := Arg + 1;
-                end if;
-             end loop;
-          end if;
- 
-          --  Remove the response file name from the stack
- 
-          if First_File = Last_File then
-             System.Strings.Free (First_File.Name);
-             Free (First_File);
-             First_File := null;
-             Last_File := null;
- 
-          else
-             System.Strings.Free (Last_File.Name);
-             Last_File := Last_File.Prev;
-             Free (Last_File.Next);
-          end if;
- 
-       exception
-          when others =>
-             Close (FD);
- 
-             raise;
-       end Recurse;
- 
-    --  Start of processing for Arguments_From
- 
-    begin
-       --  The job is done by procedure Recurse
- 
-       Recurse (Response_File_Name);
- 
-       --  Free Arguments before returning the result
- 
-       declare
-          Result : constant Argument_List := Arguments (1 .. Last_Arg);
-       begin
-          Free (Arguments);
-          return Result;
-       end;
- 
-    exception
-       when others =>
- 
-          --  When an exception occurs, deallocate everything
- 
-          Free (Arguments);
- 
-          while First_File /= null loop
-             Last_File := First_File.Next;
-             System.Strings.Free (First_File.Name);
-             Free (First_File);
-             First_File := Last_File;
-          end loop;
- 
-          raise;
-    end Arguments_From;
- 
- end Ada.Command_Line.Response_File;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-clrefi.ads gcc-8.1.0/gcc/ada/a-clrefi.ads
*** gcc-7.3.0/gcc/ada/a-clrefi.ads	Tue Feb 25 15:15:44 2014
--- gcc-8.1.0/gcc/ada/a-clrefi.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,100 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --       A D A . C O M M A N D _ L I N E . R E S P O N S E _ F I L E        --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2007-2013, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 is intended to be used in conjunction with its parent unit,
- --  Ada.Command_Line. It provides facilities for getting command line arguments
- --  from a text file, called a "response file".
- --
- --  Using a response file allow passing a set of arguments to an executable
- --  longer than the maximum allowed by the system on the command line.
- 
- pragma Compiler_Unit_Warning;
- 
- with System.Strings;
- 
- package Ada.Command_Line.Response_File is
- 
-    subtype String_Access is System.Strings.String_Access;
-    --  type String_Access is access all String;
- 
-    procedure Free (S : in out String_Access) renames System.Strings.Free;
-    --  To deallocate a String
- 
-    subtype Argument_List is System.Strings.String_List;
-    --  type String_List is array (Positive range <>) of String_Access;
- 
-    Max_Line_Length : constant := 4096;
-    --  The maximum length of lines in a response file
- 
-    File_Does_Not_Exist : exception;
-    --  Raise by Arguments_From when a response file cannot be found
- 
-    Line_Too_Long : exception;
-    --  Raise by Arguments_From when a line in the response file is longer than
-    --  Max_Line_Length.
- 
-    No_Closing_Quote : exception;
-    --  Raise by Arguments_From when a quoted string does not end before the
-    --  end of the line.
- 
-    Circularity_Detected : exception;
-    --  Raise by Arguments_From when Recursive is True and the same response
-    --  file is reading itself, either directly or indirectly.
- 
-    function Arguments_From
-      (Response_File_Name        : String;
-       Recursive                 : Boolean := False;
-       Ignore_Non_Existing_Files : Boolean := False)
-       return Argument_List;
-    --  Read response file with name Response_File_Name and return the argument
-    --  it contains as an Argument_List. It is the responsibility of the caller
-    --  to deallocate the strings in the Argument_List if desired. When
-    --  Recursive is True, any argument of the form @file_name indicates the
-    --  name of another response file and is replaced by the arguments in this
-    --  response file.
-    --
-    --  Each non empty line of the response file contains one or several
-    --  arguments separated by white space. Empty lines or lines containing only
-    --  white space are ignored. Arguments containing white space or a double
-    --  quote ('"')must be quoted. A double quote inside a quote string is
-    --  indicated by two consecutive double quotes. Example: "-Idir with quote
-    --  "" and spaces" Non white space characters immediately before or after a
-    --  quoted string are part of the same argument. Example -Idir" with "spaces
-    --
-    --  When a response file cannot be found, exception File_Does_Not_Exist is
-    --  raised if Ignore_Non_Existing_Files is False, otherwise the response
-    --  file is ignored. Exception Line_Too_Long is raised when a line of a
-    --  response file is longer than Max_Line_Length. Exception No_Closing_Quote
-    --  is raised when a quoted argument is not closed before the end of the
-    --  line. Exception Circularity_Detected is raised when a Recursive is True
-    --  and a response file is reading itself, either directly or indirectly.
- 
- end Ada.Command_Line.Response_File;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-coboho.adb gcc-8.1.0/gcc/ada/a-coboho.adb
*** gcc-7.3.0/gcc/ada/a-coboho.adb	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-coboho.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,99 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --       A D A . C O N T A I N E R S . B O U N D E D _ H O L D E R S        --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --            Copyright (C) 2015, Free Software Foundation, Inc.            --
- --                                                                          --
- -- GNAT is 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 Unchecked_Conversion;
- 
- package body Ada.Containers.Bounded_Holders is
- 
-    function Size_In_Storage_Elements (Element : Element_Type) return Natural;
-    --  This returns the size of Element in storage units. It raises an
-    --  exception if the size is not a multiple of Storage_Unit, or if the size
-    --  is too big.
- 
-    ------------------------------
-    -- Size_In_Storage_Elements --
-    ------------------------------
- 
-    function Size_In_Storage_Elements (Element : Element_Type) return Natural is
-       Max_Size : Natural renames Max_Size_In_Storage_Elements;
- 
-    begin
-       return S : constant Natural := Element'Size / System.Storage_Unit do
-          pragma Assert
-            (Element'Size mod System.Storage_Unit = 0,
-             "Size must be a multiple of Storage_Unit");
- 
-          pragma Assert
-            (S <= Max_Size, "Size is too big:" & S'Img & " >" & Max_Size'Img);
-       end return;
-    end Size_In_Storage_Elements;
- 
-    function Cast is new
-      Unchecked_Conversion (System.Address, Element_Access);
- 
-    ---------
-    -- "=" --
-    ---------
- 
-    function "=" (Left, Right : Holder) return Boolean is
-    begin
-       return Get (Left) = Get (Right);
-    end "=";
- 
-    -------------
-    -- Element --
-    -------------
- 
-    function Get (Container : Holder) return Element_Type is
-    begin
-       return Cast (Container'Address).all;
-    end Get;
- 
-    ---------
-    -- Set --
-    ---------
- 
-    procedure Set (Container : in out Holder; New_Item  : Element_Type) is
-       Storage : Storage_Array
-         (1 .. Size_In_Storage_Elements (New_Item)) with
-           Address => New_Item'Address;
-    begin
-       Container.Data (Storage'Range) := Storage;
-    end Set;
- 
-    ---------------
-    -- To_Holder --
-    ---------------
- 
-    function To_Holder (New_Item : Element_Type) return Holder is
-    begin
-       return Result : Holder do
-          Set (Result, New_Item);
-       end return;
-    end To_Holder;
- 
- end Ada.Containers.Bounded_Holders;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-coboho.ads gcc-8.1.0/gcc/ada/a-coboho.ads
*** gcc-7.3.0/gcc/ada/a-coboho.ads	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-coboho.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,114 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --       A D A . C O N T A I N E R S . B O U N D E D _ H O L D E R S        --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --            Copyright (C) 2015, Free Software Foundation, 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/>.                                          --
- ------------------------------------------------------------------------------
- 
- private with System;
- 
- generic
-    type Element_Type (<>) is private;
-    Max_Size_In_Storage_Elements : Natural :=
-      Element_Type'Max_Size_In_Storage_Elements;
-    with function "=" (Left, Right : Element_Type) return Boolean is <>;
- 
- package Ada.Containers.Bounded_Holders is
-    pragma Annotate (CodePeer, Skip_Analysis);
- 
-    --  This package is patterned after Ada.Containers.Indefinite_Holders. It is
-    --  used to treat indefinite subtypes as definite, but without using heap
-    --  allocation. For example, you might like to say:
-    --
-    --     type A is array (...) of T'Class; -- illegal
-    --
-    --  Instead, you can instantiate this package with Element_Type => T'Class,
-    --  and say:
-    --
-    --     type A is array (...) of Holder;
-    --
-    --  Each object of type Holder is allocated Max_Size_In_Storage_Elements
-    --  bytes. If you try to create a holder from an object of type Element_Type
-    --  that is too big, an exception is raised (assuming assertions are
-    --  enabled). This applies to To_Holder and Set. If you pass an Element_Type
-    --  object that is smaller than Max_Size_In_Storage_Elements, it works fine,
-    --  but some space is wasted.
-    --
-    --  NOTE: If assertions are disabled, and you try to use an Element that is
-    --  too big, execution is erroneous, and anything can happen, such as
-    --  overwriting arbitrary memory locations.
-    --
-    --  Element_Type must not be an unconstrained array type. It can be a
-    --  class-wide type or a type with non-defaulted discriminants.
-    --
-    --  The 'Size of each Element_Type object must be a multiple of
-    --  System.Storage_Unit; e.g. creating Holders from 5-bit objects won't
-    --  work.
- 
-    type Holder is private;
- 
-    function "=" (Left, Right : Holder) return Boolean;
- 
-    function To_Holder (New_Item : Element_Type) return Holder;
-    function "+" (New_Item : Element_Type) return Holder renames To_Holder;
- 
-    function Get (Container : Holder) return Element_Type;
- 
-    procedure Set (Container : in out Holder; New_Item  : Element_Type);
- 
- private
- 
-    --  The implementation uses low-level tricks (Address clauses and unchecked
-    --  conversions of access types) to treat the elements as storage arrays.
- 
-    pragma Assert (Element_Type'Alignment <= Standard'Maximum_Alignment);
-    --  This prevents elements with a user-specified Alignment that is too big
- 
-    type Storage_Element is mod System.Storage_Unit;
-    type Storage_Array is array (Positive range <>) of Storage_Element;
-    type Holder is record
-       Data : Storage_Array (1 .. Max_Size_In_Storage_Elements);
-    end record
-      with Alignment => Standard'Maximum_Alignment;
-    --  We would like to say "Alignment => Element_Type'Alignment", but that
-    --  is illegal because it's not static, so we use the maximum possible
-    --  (default) alignment instead.
- 
-    type Element_Access is access all Element_Type;
-    pragma Assert (Element_Access'Size = Standard'Address_Size,
-                   "cannot instantiate with an array type");
-    --  If Element_Access is a fat pointer, Element_Type must be an
-    --  unconstrained array, which is not allowed. Arrays won't work, because
-    --  the 'Address of an array points to the first element, thus losing the
-    --  bounds.
- 
-    pragma No_Strict_Aliasing (Element_Access);
-    --  Needed because we are unchecked-converting from Address to
-    --  Element_Access (see package body), which is a violation of the
-    --  normal aliasing rules enforced by gcc.
- 
- end Ada.Containers.Bounded_Holders;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cobove.adb gcc-8.1.0/gcc/ada/a-cobove.adb
*** gcc-7.3.0/gcc/ada/a-cobove.adb	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-cobove.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,2805 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --       A D A . C O N T A I N E R S . B O U N D E D _ V E C T O R S        --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 Ada.Containers.Generic_Array_Sort;
- 
- with System; use type System.Address;
- 
- package body Ada.Containers.Bounded_Vectors is
- 
-    pragma Warnings (Off, "variable ""Busy*"" is not referenced");
-    pragma Warnings (Off, "variable ""Lock*"" is not referenced");
-    --  See comment in Ada.Containers.Helpers
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    function To_Array_Index (Index : Index_Type'Base) return Count_Type'Base;
- 
-    ---------
-    -- "&" --
-    ---------
- 
-    function "&" (Left, Right : Vector) return Vector is
-       LN   : constant Count_Type := Length (Left);
-       RN   : constant Count_Type := Length (Right);
-       N    : Count_Type'Base;  -- length of result
-       J    : Count_Type'Base;  -- for computing intermediate index values
-       Last : Index_Type'Base;  -- Last index of result
- 
-    begin
-       --  We decide that the capacity of the result is the sum of the lengths
-       --  of the vector parameters. We could decide to make it larger, but we
-       --  have no basis for knowing how much larger, so we just allocate the
-       --  minimum amount of storage.
- 
-       --  Here we handle the easy cases first, when one of the vector
-       --  parameters is empty. (We say "easy" because there's nothing to
-       --  compute, that can potentially overflow.)
- 
-       if LN = 0 then
-          if RN = 0 then
-             return Empty_Vector;
-          end if;
- 
-          return Vector'(Capacity => RN,
-                         Elements => Right.Elements (1 .. RN),
-                         Last     => Right.Last,
-                         others   => <>);
-       end if;
- 
-       if RN = 0 then
-          return Vector'(Capacity => LN,
-                         Elements => Left.Elements (1 .. LN),
-                         Last     => Left.Last,
-                         others   => <>);
-       end if;
- 
-       --  Neither of the vector parameters is empty, so must compute the length
-       --  of the result vector and its last index. (This is the harder case,
-       --  because our computations must avoid overflow.)
- 
-       --  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 combined lengths. Note that we cannot
-       --  simply add the lengths, because of the possibility of overflow.
- 
-       if Checks and then LN > Count_Type'Last - RN then
-          raise Constraint_Error with "new length is out of range";
-       end if;
- 
-       --  It is now safe to compute the length of the new vector, without fear
-       --  of overflow.
- 
-       N := LN + RN;
- 
-       --  The second constraint is that the new Last index value cannot
-       --  exceed Index_Type'Last. We use the wider of Index_Type'Base and
-       --  Count_Type'Base as the type for intermediate values.
- 
-       if Index_Type'Base'Last >= Count_Type'Pos (Count_Type'Last) then
- 
-          --  We perform a two-part test. First we determine whether the
-          --  computed Last value lies in the base range of the type, and then
-          --  determine whether it lies in the range of the index (sub)type.
- 
-          --  Last must satisfy this relation:
-          --    First + Length - 1 <= Last
-          --  We regroup terms:
-          --    First - 1 <= Last - Length
-          --  Which can rewrite as:
-          --    No_Index <= Last - Length
- 
-          if Checks and then
-            Index_Type'Base'Last - Index_Type'Base (N) < No_Index
-          then
-             raise Constraint_Error with "new length is out of range";
-          end if;
- 
-          --  We now know that the computed value of Last is within the base
-          --  range of the type, so it is safe to compute its value:
- 
-          Last := No_Index + Index_Type'Base (N);
- 
-          --  Finally we test whether the value is within the range of the
-          --  generic actual index subtype:
- 
-          if Checks and then Last > Index_Type'Last then
-             raise Constraint_Error with "new length is out of range";
-          end if;
- 
-       elsif Index_Type'First <= 0 then
- 
-          --  Here we can compute Last directly, in the normal way. We know that
-          --  No_Index is less than 0, so there is no danger of overflow when
-          --  adding the (positive) value of length.
- 
-          J := Count_Type'Base (No_Index) + N;  -- Last
- 
-          if Checks and then J > Count_Type'Base (Index_Type'Last) then
-             raise Constraint_Error with "new length is out of range";
-          end if;
- 
-          --  We know that the computed value (having type Count_Type) of Last
-          --  is within the range of the generic actual index subtype, so it is
-          --  safe to convert to Index_Type:
- 
-          Last := Index_Type'Base (J);
- 
-       else
-          --  Here Index_Type'First (and Index_Type'Last) is positive, so we
-          --  must test the length indirectly (by working backwards from the
-          --  largest possible value of Last), in order to prevent overflow.
- 
-          J := Count_Type'Base (Index_Type'Last) - N;  -- No_Index
- 
-          if Checks and then J < Count_Type'Base (No_Index) then
-             raise Constraint_Error with "new length is out of range";
-          end if;
- 
-          --  We have determined that the result length would not create a Last
-          --  index value outside of the range of Index_Type, so we can now
-          --  safely compute its value.
- 
-          Last := Index_Type'Base (Count_Type'Base (No_Index) + N);
-       end if;
- 
-       declare
-          LE : Elements_Array renames Left.Elements (1 .. LN);
-          RE : Elements_Array renames Right.Elements (1 .. RN);
- 
-       begin
-          return Vector'(Capacity => N,
-                         Elements => LE & RE,
-                         Last     => Last,
-                         others   => <>);
-       end;
-    end "&";
- 
-    function "&" (Left  : Vector; Right : Element_Type) return Vector is
-       LN : constant Count_Type := Length (Left);
- 
-    begin
-       --  We decide that the capacity of the result is the sum of the lengths
-       --  of the parameters. We could decide to make it larger, but we have no
-       --  basis for knowing how much larger, so we just allocate the minimum
-       --  amount of storage.
- 
-       --  We must compute the length of the result vector and its last index,
-       --  but in such a way that overflow is avoided. We must satisfy two
-       --  constraints: the new length cannot exceed Count_Type'Last, and the
-       --  new Last index cannot exceed Index_Type'Last.
- 
-       if Checks and then LN = Count_Type'Last then
-          raise Constraint_Error with "new length is out of range";
-       end if;
- 
-       if Checks and then Left.Last >= Index_Type'Last then
-          raise Constraint_Error with "new length is out of range";
-       end if;
- 
-       return Vector'(Capacity => LN + 1,
-                      Elements => Left.Elements (1 .. LN) & Right,
-                      Last     => Left.Last + 1,
-                      others   => <>);
-    end "&";
- 
-    function "&" (Left : Element_Type; Right : Vector) return Vector is
-       RN : constant Count_Type := Length (Right);
- 
-    begin
-       --  We decide that the capacity of the result is the sum of the lengths
-       --  of the parameters. We could decide to make it larger, but we have no
-       --  basis for knowing how much larger, so we just allocate the minimum
-       --  amount of storage.
- 
-       --  We compute the length of the result vector and its last index, but in
-       --  such a way that overflow is avoided. We must satisfy two constraints:
-       --  the new length cannot exceed Count_Type'Last, and the new Last index
-       --  cannot exceed Index_Type'Last.
- 
-       if Checks and then RN = Count_Type'Last then
-          raise Constraint_Error with "new length is out of range";
-       end if;
- 
-       if Checks and then Right.Last >= Index_Type'Last then
-          raise Constraint_Error with "new length is out of range";
-       end if;
- 
-       return Vector'(Capacity => 1 + RN,
-                      Elements => Left & Right.Elements (1 .. RN),
-                      Last     => Right.Last + 1,
-                      others   => <>);
-    end "&";
- 
-    function "&" (Left, Right : Element_Type) return Vector is
-    begin
-       --  We decide that the capacity of the result is the sum of the lengths
-       --  of the parameters. We could decide to make it larger, but we have no
-       --  basis for knowing how much larger, so we just allocate the minimum
-       --  amount of storage.
- 
-       --  We must compute the length of the result vector and its last index,
-       --  but in such a way that overflow is avoided. We must satisfy two
-       --  constraints: the new length cannot exceed Count_Type'Last (here, we
-       --  know that that condition is satisfied), and the new Last index cannot
-       --  exceed Index_Type'Last.
- 
-       if Checks and then Index_Type'First >= Index_Type'Last then
-          raise Constraint_Error with "new length is out of range";
-       end if;
- 
-       return Vector'(Capacity => 2,
-                      Elements => (Left, Right),
-                      Last     => Index_Type'First + 1,
-                      others   => <>);
-    end "&";
- 
-    ---------
-    -- "=" --
-    ---------
- 
-    overriding function "=" (Left, Right : Vector) return Boolean is
-    begin
-       if Left.Last /= Right.Last then
-          return False;
-       end if;
- 
-       if Left.Length = 0 then
-          return True;
-       end if;
- 
-       declare
-          --  Per AI05-0022, the container implementation is required to detect
-          --  element tampering by a generic actual subprogram.
- 
-          Lock_Left : With_Lock (Left.TC'Unrestricted_Access);
-          Lock_Right : With_Lock (Right.TC'Unrestricted_Access);
-       begin
-          for J in Count_Type range 1 .. Left.Length loop
-             if Left.Elements (J) /= Right.Elements (J) then
-                return False;
-             end if;
-          end loop;
-       end;
- 
-       return True;
-    end "=";
- 
-    ------------
-    -- Assign --
-    ------------
- 
-    procedure Assign (Target : in out Vector; Source : Vector) is
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       if Checks and then Target.Capacity < Source.Length then
-          raise Capacity_Error  -- ???
-            with "Target capacity is less than Source length";
-       end if;
- 
-       Target.Clear;
- 
-       Target.Elements (1 .. Source.Length) :=
-         Source.Elements (1 .. Source.Length);
- 
-       Target.Last := Source.Last;
-    end Assign;
- 
-    ------------
-    -- Append --
-    ------------
- 
-    procedure Append (Container : in out Vector; New_Item : Vector) is
-    begin
-       if New_Item.Is_Empty then
-          return;
-       end if;
- 
-       if Checks and then Container.Last >= Index_Type'Last then
-          raise Constraint_Error with "vector is already at its maximum length";
-       end if;
- 
-       Container.Insert (Container.Last + 1, New_Item);
-    end Append;
- 
-    procedure Append
-      (Container : in out Vector;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1)
-    is
-    begin
-       if Count = 0 then
-          return;
-       end if;
- 
-       if Checks and then Container.Last >= Index_Type'Last then
-          raise Constraint_Error with "vector is already at its maximum length";
-       end if;
- 
-       Container.Insert (Container.Last + 1, New_Item, Count);
-    end Append;
- 
-    --------------
-    -- Capacity --
-    --------------
- 
-    function Capacity (Container : Vector) return Count_Type is
-    begin
-       return Container.Elements'Length;
-    end Capacity;
- 
-    -----------
-    -- Clear --
-    -----------
- 
-    procedure Clear (Container : in out Vector) is
-    begin
-       TC_Check (Container.TC);
- 
-       Container.Last := No_Index;
-    end Clear;
- 
-    ------------------------
-    -- Constant_Reference --
-    ------------------------
- 
-    function Constant_Reference
-      (Container : aliased Vector;
-       Position  : Cursor) return Constant_Reference_Type
-    is
-    begin
-       if Checks and then Position.Container = null then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with "Position cursor denotes wrong container";
-       end if;
- 
-       if Checks and then Position.Index > Position.Container.Last then
-          raise Constraint_Error with "Position cursor is out of range";
-       end if;
- 
-       declare
-          A : Elements_Array renames Container.Elements;
-          J : constant Count_Type := To_Array_Index (Position.Index);
-          TC : constant Tamper_Counts_Access :=
-            Container.TC'Unrestricted_Access;
-       begin
-          return R : constant Constant_Reference_Type :=
-            (Element => A (J)'Access,
-             Control => (Controlled with TC))
-          do
-             Lock (TC.all);
-          end return;
-       end;
-    end Constant_Reference;
- 
-    function Constant_Reference
-      (Container : aliased Vector;
-       Index     : Index_Type) return Constant_Reference_Type
-    is
-    begin
-       if Checks and then Index > Container.Last then
-          raise Constraint_Error with "Index is out of range";
-       end if;
- 
-       declare
-          A : Elements_Array renames Container.Elements;
-          J : constant Count_Type := To_Array_Index (Index);
-          TC : constant Tamper_Counts_Access :=
-            Container.TC'Unrestricted_Access;
-       begin
-          return R : constant Constant_Reference_Type :=
-            (Element => A (J)'Access,
-             Control => (Controlled with TC))
-          do
-             Lock (TC.all);
-          end return;
-       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 : Count_Type := 0) return Vector
-    is
-       C : Count_Type;
- 
-    begin
-       if Capacity = 0 then
-          C := Source.Length;
- 
-       elsif Capacity >= Source.Length then
-          C := Capacity;
- 
-       elsif Checks then
-          raise Capacity_Error
-            with "Requested capacity is less than Source length";
-       end if;
- 
-       return Target : Vector (C) do
-          Target.Elements (1 .. Source.Length) :=
-             Source.Elements (1 .. Source.Length);
- 
-          Target.Last := Source.Last;
-       end return;
-    end Copy;
- 
-    ------------
-    -- Delete --
-    ------------
- 
-    procedure Delete
-      (Container : in out Vector;
-       Index     : Extended_Index;
-       Count     : Count_Type := 1)
-    is
-       Old_Last : constant Index_Type'Base := Container.Last;
-       Old_Len  : constant Count_Type := Container.Length;
-       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 Checks and then 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 Checks and then Index > Old_Last + 1 then
-             raise Constraint_Error with "Index is out of range (too large)";
-          end if;
- 
-          return;
-       end if;
- 
-       --  Here and elsewhere we treat deleting 0 items from the container as a
-       --  no-op, even when the container is busy, so we simply return.
- 
-       if Count = 0 then
-          return;
-       end if;
- 
-       --  The tampering bits exist to prevent an item from being deleted (or
-       --  otherwise harmfully manipulated) while it is being visited. Query,
-       --  Update, and Iterate increment the busy count on entry, and decrement
-       --  the count on exit. Delete checks the count to determine whether it is
-       --  being called while the associated callback procedure is executing.
- 
-       TC_Check (Container.TC);
- 
-       --  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;
- 
-    procedure Delete
-      (Container : in out Vector;
-       Position  : in out Cursor;
-       Count     : Count_Type := 1)
-    is
-       pragma Warnings (Off, Position);
- 
-    begin
-       if Checks and then Position.Container = null then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with "Position cursor denotes wrong container";
-       end if;
- 
-       if Checks and then Position.Index > Container.Last then
-          raise Program_Error with "Position index is out of range";
-       end if;
- 
-       Delete (Container, Position.Index, Count);
-       Position := No_Element;
-    end Delete;
- 
-    ------------------
-    -- Delete_First --
-    ------------------
- 
-    procedure Delete_First
-      (Container : in out Vector;
-       Count     : Count_Type := 1)
-    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;
-       Count     : Count_Type := 1)
-    is
-    begin
-       --  It is not permitted to delete items while the container is busy (for
-       --  example, we're in the middle of a passive iteration). However, we
-       --  always treat deleting 0 items as a no-op, even when we're busy, so we
-       --  simply return without checking.
- 
-       if Count = 0 then
-          return;
-       end if;
- 
-       --  The tampering bits exist to prevent an item from being deleted (or
-       --  otherwise harmfully manipulated) while it is being visited. Query,
-       --  Update, and Iterate increment the busy count on entry, and decrement
-       --  the count on exit. Delete_Last checks the count to determine whether
-       --  it is being called while the associated callback procedure is
-       --  executing.
- 
-       TC_Check (Container.TC);
- 
-       --  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 >= Container.Length 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 Checks and then Index > Container.Last then
-          raise Constraint_Error with "Index is out of range";
-       else
-          return Container.Elements (To_Array_Index (Index));
-       end if;
-    end Element;
- 
-    function Element (Position : Cursor) return Element_Type is
-    begin
-       if Checks and then Position.Container = null then
-          raise Constraint_Error with "Position cursor has no element";
-       else
-          return Position.Container.Element (Position.Index);
-       end if;
-    end Element;
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    procedure Finalize (Object : in out Iterator) is
-    begin
-       Unbusy (Object.Container.TC);
-    end Finalize;
- 
-    ----------
-    -- Find --
-    ----------
- 
-    function Find
-      (Container : Vector;
-       Item      : Element_Type;
-       Position  : Cursor := No_Element) return Cursor
-    is
-    begin
-       if Position.Container /= null then
-          if Checks and then Position.Container /= Container'Unrestricted_Access
-          then
-             raise Program_Error with "Position cursor denotes wrong container";
-          end if;
- 
-          if Checks and then Position.Index > Container.Last then
-             raise Program_Error with "Position index is out of range";
-          end if;
-       end if;
- 
-       --  Per AI05-0022, the container implementation is required to detect
-       --  element tampering by a generic actual subprogram.
- 
-       declare
-          Lock : With_Lock (Container.TC'Unrestricted_Access);
-       begin
-          for J in Position.Index .. Container.Last loop
-             if Container.Elements (To_Array_Index (J)) = Item then
-                return Cursor'(Container'Unrestricted_Access, J);
-             end if;
-          end loop;
- 
-          return No_Element;
-       end;
-    end Find;
- 
-    ----------------
-    -- Find_Index --
-    ----------------
- 
-    function Find_Index
-      (Container : Vector;
-       Item      : Element_Type;
-       Index     : Index_Type := Index_Type'First) return Extended_Index
-    is
-       --  Per AI05-0022, the container implementation is required to detect
-       --  element tampering by a generic actual subprogram.
- 
-       Lock : With_Lock (Container.TC'Unrestricted_Access);
-    begin
-       for Indx in Index .. Container.Last loop
-          if Container.Elements (To_Array_Index (Indx)) = Item then
-             return Indx;
-          end if;
-       end loop;
- 
-       return No_Index;
-    end Find_Index;
- 
-    -----------
-    -- First --
-    -----------
- 
-    function First (Container : Vector) return Cursor is
-    begin
-       if Is_Empty (Container) then
-          return No_Element;
-       else
-          return (Container'Unrestricted_Access, Index_Type'First);
-       end if;
-    end First;
- 
-    function First (Object : Iterator) return Cursor is
-    begin
-       --  The value of the iterator object's Index component influences the
-       --  behavior of the First (and Last) selector function.
- 
-       --  When the Index component is No_Index, this means the iterator
-       --  object was constructed without a start expression, in which case the
-       --  (forward) iteration starts from the (logical) beginning of the entire
-       --  sequence of items (corresponding to Container.First, for a forward
-       --  iterator).
- 
-       --  Otherwise, this is iteration over a partial sequence of items.
-       --  When the Index component isn't No_Index, the iterator object was
-       --  constructed with a start expression, that specifies the position
-       --  from which the (forward) partial iteration begins.
- 
-       if Object.Index = No_Index then
-          return First (Object.Container.all);
-       else
-          return Cursor'(Object.Container, Object.Index);
-       end if;
-    end First;
- 
-    -------------------
-    -- First_Element --
-    -------------------
- 
-    function First_Element (Container : Vector) return Element_Type is
-    begin
-       if Checks and then Container.Last = No_Index then
-          raise Constraint_Error with "Container is empty";
-       end if;
- 
-       return Container.Elements (To_Array_Index (Index_Type'First));
-    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;
- 
-    ---------------------
-    -- Generic_Sorting --
-    ---------------------
- 
-    package body Generic_Sorting is
- 
-       ---------------
-       -- Is_Sorted --
-       ---------------
- 
-       function Is_Sorted (Container : Vector) return Boolean is
-       begin
-          if Container.Last <= Index_Type'First then
-             return True;
-          end if;
- 
-          --  Per AI05-0022, the container implementation is required to detect
-          --  element tampering by a generic actual subprogram.
- 
-          declare
-             Lock : With_Lock (Container.TC'Unrestricted_Access);
-             EA : Elements_Array renames Container.Elements;
-          begin
-             for J in 1 .. Container.Length - 1 loop
-                if EA (J + 1) < EA (J) then
-                   return False;
-                end if;
-             end loop;
- 
-             return True;
-          end;
-       end Is_Sorted;
- 
-       -----------
-       -- Merge --
-       -----------
- 
-       procedure Merge (Target, Source : in out Vector) is
-          I, J : Count_Type;
- 
-       begin
-          --  The semantics of Merge changed slightly per AI05-0021. It was
-          --  originally the case that if Target and Source denoted the same
-          --  container object, then the GNAT implementation of Merge did
-          --  nothing. However, it was argued that RM05 did not precisely
-          --  specify the semantics for this corner case. The decision of the
-          --  ARG was that if Target and Source denote the same non-empty
-          --  container object, then Program_Error is raised.
- 
-          if Source.Is_Empty then
-             return;
-          end if;
- 
-          if Checks and then Target'Address = Source'Address then
-             raise Program_Error with
-               "Target and Source denote same non-empty container";
-          end if;
- 
-          if Target.Is_Empty then
-             Move (Target => Target, Source => Source);
-             return;
-          end if;
- 
-          TC_Check (Source.TC);
- 
-          I := Target.Length;
-          Target.Set_Length (I + Source.Length);
- 
-          --  Per AI05-0022, the container implementation is required to detect
-          --  element tampering by a generic actual subprogram.
- 
-          declare
-             TA : Elements_Array renames Target.Elements;
-             SA : Elements_Array renames Source.Elements;
- 
-             Lock_Target : With_Lock (Target.TC'Unchecked_Access);
-             Lock_Source : With_Lock (Source.TC'Unchecked_Access);
-          begin
-             J := Target.Length;
-             while not Source.Is_Empty loop
-                pragma Assert (Source.Length <= 1
-                  or else not (SA (Source.Length) < SA (Source.Length - 1)));
- 
-                if I = 0 then
-                   TA (1 .. J) := SA (1 .. Source.Length);
-                   Source.Last := No_Index;
-                   exit;
-                end if;
- 
-                pragma Assert (I <= 1
-                                 or else not (TA (I) < TA (I - 1)));
- 
-                if SA (Source.Length) < TA (I) then
-                   TA (J) := TA (I);
-                   I := I - 1;
- 
-                else
-                   TA (J) := SA (Source.Length);
-                   Source.Last := Source.Last - 1;
-                end if;
- 
-                J := J - 1;
-             end loop;
-          end;
-       end Merge;
- 
-       ----------
-       -- Sort --
-       ----------
- 
-       procedure Sort (Container : in out Vector) is
-          procedure Sort is
-             new Generic_Array_Sort
-              (Index_Type   => Count_Type,
-               Element_Type => Element_Type,
-               Array_Type   => Elements_Array,
-               "<"          => "<");
- 
-       begin
-          if Container.Last <= Index_Type'First then
-             return;
-          end if;
- 
-          --  The exception behavior for the vector container must match that
-          --  for the list container, so we check for cursor tampering here
-          --  (which will catch more things) instead of for element tampering
-          --  (which will catch fewer things). It's true that the elements of
-          --  this vector container could be safely moved around while (say) an
-          --  iteration is taking place (iteration only increments the busy
-          --  counter), and so technically all we would need here is a test for
-          --  element tampering (indicated by the lock counter), that's simply
-          --  an artifact of our array-based implementation. Logically Sort
-          --  requires a check for cursor tampering.
- 
-          TC_Check (Container.TC);
- 
-          --  Per AI05-0022, the container implementation is required to detect
-          --  element tampering by a generic actual subprogram.
- 
-          declare
-             Lock : With_Lock (Container.TC'Unchecked_Access);
-          begin
-             Sort (Container.Elements (1 .. Container.Length));
-          end;
-       end Sort;
- 
-    end Generic_Sorting;
- 
-    ------------------------
-    -- Get_Element_Access --
-    ------------------------
- 
-    function Get_Element_Access
-      (Position : Cursor) return not null Element_Access is
-    begin
-       return Position.Container.Elements
-         (To_Array_Index (Position.Index))'Access;
-    end Get_Element_Access;
- 
-    -----------------
-    -- Has_Element --
-    -----------------
- 
-    function Has_Element (Position : Cursor) return Boolean is
-    begin
-       if Position.Container = null then
-          return False;
-       end if;
- 
-       return Position.Index <= Position.Container.Last;
-    end Has_Element;
- 
-    ------------
-    -- Insert --
-    ------------
- 
-    procedure Insert
-      (Container : in out Vector;
-       Before    : Extended_Index;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1)
-    is
-       EA         : Elements_Array renames Container.Elements;
-       Old_Length : constant Count_Type := Container.Length;
- 
-       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 Checks and then 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 Checks and then Before > Container.Last
-         and then Before > Container.Last + 1
-       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, even when
-       --  the container is busy, 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 Checks and then 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 Checks and then New_Length > Max_Length then
-          raise Constraint_Error with "Count is out of range";
-       end if;
- 
-       --  The tampering bits exist to prevent an item from being harmfully
-       --  manipulated while it is being visited. Query, Update, and Iterate
-       --  increment the busy count on entry, and decrement the count on
-       --  exit. Insert checks the count to determine whether it is being called
-       --  while the associated callback procedure is executing.
- 
-       TC_Check (Container.TC);
- 
-       if Checks and then New_Length > Container.Capacity then
-          raise Capacity_Error with "New length is larger than capacity";
-       end if;
- 
-       J := To_Array_Index (Before);
- 
-       if Before > Container.Last then
- 
-          --  The new items are being appended to the vector, so no
-          --  sliding of existing elements is required.
- 
-          EA (J .. New_Length) := (others => New_Item);
- 
-       else
-          --  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);
-          EA (J .. J + Count - 1) := (others => New_Item);
-       end if;
- 
-       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;
- 
-    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
-       --  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);
- 
-       if Container'Address /= New_Item'Address then
-          --  This is the simple case.  New_Item denotes an object different
-          --  from Container, so there's nothing special we need to do to copy
-          --  the source items to their destination, because all of the source
-          --  items are contiguous.
- 
-          Container.Elements (B .. B + N - 1) := New_Item.Elements (1 .. N);
-          return;
-       end if;
- 
-       --  We refer to array index value Before + N - 1 as J. This is the last
-       --  index value of the destination slice.
- 
-       --  New_Item denotes the same object as Container, so an insertion has
-       --  potentially split the source items. The destination is always the
-       --  range [Before, J], but the source is [Index_Type'First, Before) and
-       --  (J, Container.Last]. We perform the copy in two steps, using each of
-       --  the two slices of the source items.
- 
-       declare
-          subtype Src_Index_Subtype is Count_Type'Base range 1 .. B - 1;
- 
-          Src : Elements_Array renames Container.Elements (Src_Index_Subtype);
- 
-       begin
-          --  We first copy the source items that precede the space we
-          --  inserted. (If Before equals Index_Type'First, then this first
-          --  source slice will be empty, which is harmless.)
- 
-          Container.Elements (B .. B + Src'Length - 1) := Src;
-       end;
- 
-       declare
-          subtype Src_Index_Subtype is Count_Type'Base range
-            B + N .. Container.Length;
- 
-          Src : Elements_Array renames Container.Elements (Src_Index_Subtype);
- 
-       begin
-          --  We next copy the source items that follow the space we inserted.
- 
-          Container.Elements (B + N - Src'Length .. B + N - 1) := Src;
-       end;
-    end Insert;
- 
-    procedure Insert
-      (Container : in out Vector;
-       Before    : Cursor;
-       New_Item  : Vector)
-    is
-       Index : Index_Type'Base;
- 
-    begin
-       if Checks and then Before.Container /= null
-         and then Before.Container /= Container'Unchecked_Access
-       then
-          raise Program_Error with "Before cursor denotes wrong container";
-       end if;
- 
-       if Is_Empty (New_Item) then
-          return;
-       end if;
- 
-       if Before.Container = null
-         or else Before.Index > Container.Last
-       then
-          if Checks and then Container.Last = Index_Type'Last then
-             raise Constraint_Error with
-               "vector is already at its maximum length";
-          end if;
- 
-          Index := Container.Last + 1;
- 
-       else
-          Index := Before.Index;
-       end if;
- 
-       Insert (Container, Index, New_Item);
-    end Insert;
- 
-    procedure Insert
-      (Container : in out Vector;
-       Before    : Cursor;
-       New_Item  : Vector;
-       Position  : out Cursor)
-    is
-       Index : Index_Type'Base;
- 
-    begin
-       if Checks and then Before.Container /= null
-         and then Before.Container /= Container'Unchecked_Access
-       then
-          raise Program_Error with "Before cursor denotes wrong container";
-       end if;
- 
-       if Is_Empty (New_Item) then
-          if Before.Container = null
-            or else Before.Index > Container.Last
-          then
-             Position := No_Element;
-          else
-             Position := (Container'Unchecked_Access, Before.Index);
-          end if;
- 
-          return;
-       end if;
- 
-       if Before.Container = null
-         or else Before.Index > Container.Last
-       then
-          if Checks and then Container.Last = Index_Type'Last then
-             raise Constraint_Error with
-               "vector is already at its maximum length";
-          end if;
- 
-          Index := Container.Last + 1;
- 
-       else
-          Index := Before.Index;
-       end if;
- 
-       Insert (Container, Index, New_Item);
- 
-       Position := Cursor'(Container'Unchecked_Access, Index);
-    end Insert;
- 
-    procedure Insert
-      (Container : in out Vector;
-       Before    : Cursor;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1)
-    is
-       Index : Index_Type'Base;
- 
-    begin
-       if Checks and then Before.Container /= null
-         and then Before.Container /= Container'Unchecked_Access
-       then
-          raise Program_Error with "Before cursor denotes wrong container";
-       end if;
- 
-       if Count = 0 then
-          return;
-       end if;
- 
-       if Before.Container = null
-         or else Before.Index > Container.Last
-       then
-          if Checks and then Container.Last = Index_Type'Last then
-             raise Constraint_Error with
-               "vector is already at its maximum length";
-          end if;
- 
-          Index := Container.Last + 1;
- 
-       else
-          Index := Before.Index;
-       end if;
- 
-       Insert (Container, Index, New_Item, Count);
-    end Insert;
- 
-    procedure Insert
-      (Container : in out Vector;
-       Before    : Cursor;
-       New_Item  : Element_Type;
-       Position  : out Cursor;
-       Count     : Count_Type := 1)
-    is
-       Index : Index_Type'Base;
- 
-    begin
-       if Checks and then Before.Container /= null
-         and then Before.Container /= Container'Unchecked_Access
-       then
-          raise Program_Error with "Before cursor denotes wrong container";
-       end if;
- 
-       if Count = 0 then
-          if Before.Container = null
-            or else Before.Index > Container.Last
-          then
-             Position := No_Element;
-          else
-             Position := (Container'Unchecked_Access, Before.Index);
-          end if;
- 
-          return;
-       end if;
- 
-       if Before.Container = null
-         or else Before.Index > Container.Last
-       then
-          if Checks and then Container.Last = Index_Type'Last then
-             raise Constraint_Error with
-               "vector is already at its maximum length";
-          end if;
- 
-          Index := Container.Last + 1;
- 
-       else
-          Index := Before.Index;
-       end if;
- 
-       Insert (Container, Index, New_Item, Count);
- 
-       Position := Cursor'(Container'Unchecked_Access, Index);
-    end Insert;
- 
-    procedure Insert
-      (Container : in out Vector;
-       Before    : Extended_Index;
-       Count     : Count_Type := 1)
-    is
-       New_Item : Element_Type;  -- Default-initialized value
-       pragma Warnings (Off, New_Item);
- 
-    begin
-       Insert (Container, Before, New_Item, Count);
-    end Insert;
- 
-    procedure Insert
-      (Container : in out Vector;
-       Before    : Cursor;
-       Position  : out Cursor;
-       Count     : Count_Type := 1)
-    is
-       New_Item : Element_Type;  -- Default-initialized value
-       pragma Warnings (Off, New_Item);
- 
-    begin
-       Insert (Container, Before, New_Item, Position, Count);
-    end Insert;
- 
-    ------------------
-    -- Insert_Space --
-    ------------------
- 
-    procedure Insert_Space
-      (Container : in out Vector;
-       Before    : Extended_Index;
-       Count     : Count_Type := 1)
-    is
-       EA         : Elements_Array renames Container.Elements;
-       Old_Length : constant Count_Type := Container.Length;
- 
-       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 Checks and then 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 Checks and then Before > Container.Last
-         and then Before > Container.Last + 1
-       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, even when
-       --  the container is busy, 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 Checks and then 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 Checks and then New_Length > Max_Length then
-          raise Constraint_Error with "Count is out of range";
-       end if;
- 
-       --  The tampering bits exist to prevent an item from being harmfully
-       --  manipulated while it is being visited. Query, Update, and Iterate
-       --  increment the busy count on entry, and decrement the count on
-       --  exit. Insert checks the count to determine whether it is being called
-       --  while the associated callback procedure is executing.
- 
-       TC_Check (Container.TC);
- 
-       --  An internal array has already been allocated, so we need to check
-       --  whether there is enough unused storage for the new items.
- 
-       if Checks and then New_Length > Container.Capacity then
-          raise Capacity_Error with "New length is larger than capacity";
-       end if;
- 
-       --  In this case, we're inserting space into a vector that has already
-       --  allocated an internal array, and the existing array has enough
-       --  unused storage for the new items.
- 
-       if Before <= Container.Last then
- 
-          --  The space is being inserted before some existing elements,
-          --  so we must slide the existing elements up to their new home.
- 
-          J := To_Array_Index (Before);
-          EA (J + Count .. New_Length) := EA (J .. Old_Length);
-       end if;
- 
-       --  New_Last is the last index value of the items in the container after
-       --  insertion.  Use the wider of Index_Type'Base and Count_Type'Base to
-       --  compute its value from the New_Length.
- 
-       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;
- 
-    procedure Insert_Space
-      (Container : in out Vector;
-       Before    : Cursor;
-       Position  : out Cursor;
-       Count     : Count_Type := 1)
-    is
-       Index : Index_Type'Base;
- 
-    begin
-       if Checks and then Before.Container /= null
-         and then Before.Container /= Container'Unchecked_Access
-       then
-          raise Program_Error with "Before cursor denotes wrong container";
-       end if;
- 
-       if Count = 0 then
-          if Before.Container = null
-            or else Before.Index > Container.Last
-          then
-             Position := No_Element;
-          else
-             Position := (Container'Unchecked_Access, Before.Index);
-          end if;
- 
-          return;
-       end if;
- 
-       if Before.Container = null
-         or else Before.Index > Container.Last
-       then
-          if Checks and then Container.Last = Index_Type'Last then
-             raise Constraint_Error with
-               "vector is already at its maximum length";
-          end if;
- 
-          Index := Container.Last + 1;
- 
-       else
-          Index := Before.Index;
-       end if;
- 
-       Insert_Space (Container, Index, Count => Count);
- 
-       Position := Cursor'(Container'Unchecked_Access, Index);
-    end Insert_Space;
- 
-    --------------
-    -- Is_Empty --
-    --------------
- 
-    function Is_Empty (Container : Vector) return Boolean is
-    begin
-       return Container.Last < Index_Type'First;
-    end Is_Empty;
- 
-    -------------
-    -- Iterate --
-    -------------
- 
-    procedure Iterate
-      (Container : Vector;
-       Process   : not null access procedure (Position : Cursor))
-    is
-       Busy : With_Busy (Container.TC'Unrestricted_Access);
-    begin
-       for Indx in Index_Type'First .. Container.Last loop
-          Process (Cursor'(Container'Unrestricted_Access, Indx));
-       end loop;
-    end Iterate;
- 
-    function Iterate
-      (Container : Vector)
-       return Vector_Iterator_Interfaces.Reversible_Iterator'Class
-    is
-       V : constant Vector_Access := Container'Unrestricted_Access;
-    begin
-       --  The value of its Index component influences the behavior of the First
-       --  and Last selector functions of the iterator object. When the Index
-       --  component is No_Index (as is the case here), this means the iterator
-       --  object was constructed without a start expression. This is a complete
-       --  iterator, meaning that the iteration starts from the (logical)
-       --  beginning of the sequence of items.
- 
-       --  Note: For a forward iterator, Container.First is the beginning, and
-       --  for a reverse iterator, Container.Last is the beginning.
- 
-       return It : constant Iterator :=
-         (Limited_Controlled with
-            Container => V,
-            Index     => No_Index)
-       do
-          Busy (Container.TC'Unrestricted_Access.all);
-       end return;
-    end Iterate;
- 
-    function Iterate
-      (Container : Vector;
-       Start     : Cursor)
-       return Vector_Iterator_Interfaces.Reversible_Iterator'Class
-    is
-       V : constant Vector_Access := Container'Unrestricted_Access;
-    begin
-       --  It was formerly the case that when Start = No_Element, the partial
-       --  iterator was defined to behave the same as for a complete iterator,
-       --  and iterate over the entire sequence of items. However, those
-       --  semantics were unintuitive and arguably error-prone (it is too easy
-       --  to accidentally create an endless loop), and so they were changed,
-       --  per the ARG meeting in Denver on 2011/11. However, there was no
-       --  consensus about what positive meaning this corner case should have,
-       --  and so it was decided to simply raise an exception. This does imply,
-       --  however, that it is not possible to use a partial iterator to specify
-       --  an empty sequence of items.
- 
-       if Checks and then Start.Container = null then
-          raise Constraint_Error with
-            "Start position for iterator equals No_Element";
-       end if;
- 
-       if Checks and then Start.Container /= V then
-          raise Program_Error with
-            "Start cursor of Iterate designates wrong vector";
-       end if;
- 
-       if Checks and then Start.Index > V.Last then
-          raise Constraint_Error with
-            "Start position for iterator equals No_Element";
-       end if;
- 
-       --  The value of its Index component influences the behavior of the First
-       --  and Last selector functions of the iterator object. When the Index
-       --  component is not No_Index (as is the case here), it means that this
-       --  is a partial iteration, over a subset of the complete sequence of
-       --  items. The iterator object was constructed with a start expression,
-       --  indicating the position from which the iteration begins. Note that
-       --  the start position has the same value irrespective of whether this is
-       --  a forward or reverse iteration.
- 
-       return It : constant Iterator :=
-         (Limited_Controlled with
-            Container => V,
-            Index     => Start.Index)
-       do
-          Busy (Container.TC'Unrestricted_Access.all);
-       end return;
-    end Iterate;
- 
-    ----------
-    -- Last --
-    ----------
- 
-    function Last (Container : Vector) return Cursor is
-    begin
-       if Is_Empty (Container) then
-          return No_Element;
-       else
-          return (Container'Unrestricted_Access, Container.Last);
-       end if;
-    end Last;
- 
-    function Last (Object : Iterator) return Cursor is
-    begin
-       --  The value of the iterator object's Index component influences the
-       --  behavior of the Last (and First) selector function.
- 
-       --  When the Index component is No_Index, this means the iterator object
-       --  was constructed without a start expression, in which case the
-       --  (reverse) iteration starts from the (logical) beginning of the entire
-       --  sequence (corresponding to Container.Last, for a reverse iterator).
- 
-       --  Otherwise, this is iteration over a partial sequence of items. When
-       --  the Index component is not No_Index, the iterator object was
-       --  constructed with a start expression, that specifies the position from
-       --  which the (reverse) partial iteration begins.
- 
-       if Object.Index = No_Index then
-          return Last (Object.Container.all);
-       else
-          return Cursor'(Object.Container, Object.Index);
-       end if;
-    end Last;
- 
-    ------------------
-    -- Last_Element --
-    ------------------
- 
-    function Last_Element (Container : Vector) return Element_Type is
-    begin
-       if Checks and then Container.Last = No_Index then
-          raise Constraint_Error with "Container is empty";
-       end if;
- 
-       return Container.Elements (Container.Length);
-    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 Count_Type is
-       L : constant Index_Type'Base := Container.Last;
-       F : constant Index_Type := Index_Type'First;
- 
-    begin
-       --  The base range of the index type (Index_Type'Base) might not include
-       --  all values for length (Count_Type). Contrariwise, the index type
-       --  might include values outside the range of length.  Hence we use
-       --  whatever type is wider for intermediate values when calculating
-       --  length. Note that no matter what the index type is, the maximum
-       --  length to which a vector is allowed to grow is always the minimum
-       --  of Count_Type'Last and (IT'Last - IT'First + 1).
- 
-       --  For example, an Index_Type with range -127 .. 127 is only guaranteed
-       --  to have a base range of -128 .. 127, but the corresponding vector
-       --  would have lengths in the range 0 .. 255. In this case we would need
-       --  to use Count_Type'Base for intermediate values.
- 
-       --  Another case would be the index range -2**63 + 1 .. -2**63 + 10. The
-       --  vector would have a maximum length of 10, but the index values lie
-       --  outside the range of Count_Type (which is only 32 bits). In this
-       --  case we would need to use Index_Type'Base for intermediate values.
- 
-       if Count_Type'Base'Last >= Index_Type'Pos (Index_Type'Base'Last) then
-          return Count_Type'Base (L) - Count_Type'Base (F) + 1;
-       else
-          return Count_Type (L - F + 1);
-       end if;
-    end Length;
- 
-    ----------
-    -- Move --
-    ----------
- 
-    procedure Move
-      (Target : in out Vector;
-       Source : in out Vector)
-    is
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       if Checks and then Target.Capacity < Source.Length then
-          raise Capacity_Error  -- ???
-            with "Target capacity is less than Source length";
-       end if;
- 
-       TC_Check (Target.TC);
-       TC_Check (Source.TC);
- 
-       --  Clear Target now, in case element assignment fails
- 
-       Target.Last := No_Index;
- 
-       Target.Elements (1 .. Source.Length) :=
-         Source.Elements (1 .. Source.Length);
- 
-       Target.Last := Source.Last;
-       Source.Last := No_Index;
-    end Move;
- 
-    ----------
-    -- Next --
-    ----------
- 
-    function Next (Position : Cursor) return Cursor is
-    begin
-       if Position.Container = null then
-          return No_Element;
-       elsif Position.Index < Position.Container.Last then
-          return (Position.Container, Position.Index + 1);
-       else
-          return No_Element;
-       end if;
-    end Next;
- 
-    function Next (Object : Iterator; Position : Cursor) return Cursor is
-    begin
-       if Position.Container = null then
-          return No_Element;
-       end if;
- 
-       if Checks and then Position.Container /= Object.Container then
-          raise Program_Error with
-            "Position cursor of Next designates wrong vector";
-       end if;
- 
-       return Next (Position);
-    end Next;
- 
-    procedure Next (Position : in out Cursor) is
-    begin
-       if Position.Container = null then
-          return;
-       elsif Position.Index < Position.Container.Last then
-          Position.Index := Position.Index + 1;
-       else
-          Position := No_Element;
-       end if;
-    end Next;
- 
-    -------------
-    -- 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;
-       Count     : Count_Type := 1)
-    is
-    begin
-       Insert (Container,
-               Index_Type'First,
-               New_Item,
-               Count);
-    end Prepend;
- 
-    --------------
-    -- Previous --
-    --------------
- 
-    procedure Previous (Position : in out Cursor) is
-    begin
-       if Position.Container = null then
-          return;
-       elsif Position.Index > Index_Type'First then
-          Position.Index := Position.Index - 1;
-       else
-          Position := No_Element;
-       end if;
-    end Previous;
- 
-    function Previous (Position : Cursor) return Cursor is
-    begin
-       if Position.Container = null then
-          return No_Element;
-       elsif Position.Index > Index_Type'First then
-          return (Position.Container, Position.Index - 1);
-       else
-          return No_Element;
-       end if;
-    end Previous;
- 
-    function Previous (Object : Iterator; Position : Cursor) return Cursor is
-    begin
-       if Position.Container = null then
-          return No_Element;
-       end if;
- 
-       if Checks and then Position.Container /= Object.Container then
-          raise Program_Error with
-            "Position cursor of Previous designates wrong vector";
-       end if;
- 
-       return Previous (Position);
-    end Previous;
- 
-    ----------------------
-    -- Pseudo_Reference --
-    ----------------------
- 
-    function Pseudo_Reference
-      (Container : aliased Vector'Class) return Reference_Control_Type
-    is
-       TC : constant Tamper_Counts_Access := Container.TC'Unrestricted_Access;
-    begin
-       return R : constant Reference_Control_Type := (Controlled with TC) do
-          Lock (TC.all);
-       end return;
-    end Pseudo_Reference;
- 
-    -------------------
-    -- Query_Element --
-    -------------------
- 
-    procedure Query_Element
-      (Container : Vector;
-       Index     : Index_Type;
-       Process   : not null access procedure (Element : Element_Type))
-    is
-       Lock : With_Lock (Container.TC'Unrestricted_Access);
-       V : Vector renames Container'Unrestricted_Access.all;
-    begin
-       if Checks and then Index > Container.Last then
-          raise Constraint_Error with "Index is out of range";
-       end if;
- 
-       Process (V.Elements (To_Array_Index (Index)));
-    end Query_Element;
- 
-    procedure Query_Element
-      (Position : Cursor;
-       Process  : not null access procedure (Element : Element_Type))
-    is
-    begin
-       if Checks and then Position.Container = null then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       Query_Element (Position.Container.all, Position.Index, Process);
-    end Query_Element;
- 
-    ----------
-    -- Read --
-    ----------
- 
-    procedure Read
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : out Vector)
-    is
-       Length : Count_Type'Base;
-       Last   : Index_Type'Base := No_Index;
- 
-    begin
-       Clear (Container);
- 
-       Count_Type'Base'Read (Stream, Length);
- 
-       Reserve_Capacity (Container, Capacity => Length);
- 
-       for Idx in Count_Type range 1 .. Length loop
-          Last := Last + 1;
-          Element_Type'Read (Stream, Container.Elements (Idx));
-          Container.Last := Last;
-       end loop;
-    end Read;
- 
-    procedure Read
-      (Stream   : not null access Root_Stream_Type'Class;
-       Position : out Cursor)
-    is
-    begin
-       raise Program_Error with "attempt to stream vector cursor";
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Constant_Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Read;
- 
-    ---------------
-    -- Reference --
-    ---------------
- 
-    function Reference
-      (Container : aliased in out Vector;
-       Position  : Cursor) return Reference_Type
-    is
-    begin
-       if Checks and then Position.Container = null then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with "Position cursor denotes wrong container";
-       end if;
- 
-       if Checks and then Position.Index > Position.Container.Last then
-          raise Constraint_Error with "Position cursor is out of range";
-       end if;
- 
-       declare
-          A : Elements_Array renames Container.Elements;
-          J : constant Count_Type := To_Array_Index (Position.Index);
-          TC : constant Tamper_Counts_Access :=
-            Container.TC'Unrestricted_Access;
-       begin
-          return R : constant Reference_Type :=
-            (Element => A (J)'Access,
-             Control => (Controlled with TC))
-          do
-             Lock (TC.all);
-          end return;
-       end;
-    end Reference;
- 
-    function Reference
-      (Container : aliased in out Vector;
-       Index     : Index_Type) return Reference_Type
-    is
-    begin
-       if Checks and then Index > Container.Last then
-          raise Constraint_Error with "Index is out of range";
-       end if;
- 
-       declare
-          A : Elements_Array renames Container.Elements;
-          J : constant Count_Type := To_Array_Index (Index);
-          TC : constant Tamper_Counts_Access :=
-            Container.TC'Unrestricted_Access;
-       begin
-          return R : constant Reference_Type :=
-            (Element => A (J)'Access,
-             Control => (Controlled with TC))
-          do
-             Lock (TC.all);
-          end return;
-       end;
-    end Reference;
- 
-    ---------------------
-    -- Replace_Element --
-    ---------------------
- 
-    procedure Replace_Element
-      (Container : in out Vector;
-       Index     : Index_Type;
-       New_Item  : Element_Type)
-    is
-    begin
-       if Checks and then Index > Container.Last then
-          raise Constraint_Error with "Index is out of range";
-       end if;
- 
-       TE_Check (Container.TC);
- 
-       Container.Elements (To_Array_Index (Index)) := New_Item;
-    end Replace_Element;
- 
-    procedure Replace_Element
-      (Container : in out Vector;
-       Position  : Cursor;
-       New_Item  : Element_Type)
-    is
-    begin
-       if Checks and then Position.Container = null then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with "Position cursor denotes wrong container";
-       end if;
- 
-       if Checks and then Position.Index > Container.Last then
-          raise Constraint_Error with "Position cursor is out of range";
-       end if;
- 
-       TE_Check (Container.TC);
- 
-       Container.Elements (To_Array_Index (Position.Index)) := New_Item;
-    end Replace_Element;
- 
-    ----------------------
-    -- Reserve_Capacity --
-    ----------------------
- 
-    procedure Reserve_Capacity
-      (Container : in out Vector;
-       Capacity  : Count_Type)
-    is
-    begin
-       if Checks and then 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
-       E   : Elements_Array renames Container.Elements;
-       Idx : Count_Type;
-       Jdx : Count_Type;
- 
-    begin
-       if Container.Length <= 1 then
-          return;
-       end if;
- 
-       --  The exception behavior for the vector container must match that for
-       --  the list container, so we check for cursor tampering here (which will
-       --  catch more things) instead of for element tampering (which will catch
-       --  fewer things). It's true that the elements of this vector container
-       --  could be safely moved around while (say) an iteration is taking place
-       --  (iteration only increments the busy counter), and so technically
-       --  all we would need here is a test for element tampering (indicated
-       --  by the lock counter), that's simply an artifact of our array-based
-       --  implementation. Logically Reverse_Elements requires a check for
-       --  cursor tampering.
- 
-       TC_Check (Container.TC);
- 
-       Idx := 1;
-       Jdx := Container.Length;
-       while Idx < Jdx loop
-          declare
-             EI : constant Element_Type := E (Idx);
- 
-          begin
-             E (Idx) := E (Jdx);
-             E (Jdx) := EI;
-          end;
- 
-          Idx := Idx + 1;
-          Jdx := Jdx - 1;
-       end loop;
-    end Reverse_Elements;
- 
-    ------------------
-    -- Reverse_Find --
-    ------------------
- 
-    function Reverse_Find
-      (Container : Vector;
-       Item      : Element_Type;
-       Position  : Cursor := No_Element) return Cursor
-    is
-       Last : Index_Type'Base;
- 
-    begin
-       if Checks and then Position.Container /= null
-         and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with "Position cursor denotes wrong container";
-       end if;
- 
-       Last :=
-         (if Position.Container = null or else Position.Index > Container.Last
-          then Container.Last
-          else Position.Index);
- 
-       --  Per AI05-0022, the container implementation is required to detect
-       --  element tampering by a generic actual subprogram.
- 
-       declare
-          Lock : With_Lock (Container.TC'Unrestricted_Access);
-       begin
-          for Indx in reverse Index_Type'First .. Last loop
-             if Container.Elements (To_Array_Index (Indx)) = Item then
-                return Cursor'(Container'Unrestricted_Access, Indx);
-             end if;
-          end loop;
- 
-          return No_Element;
-       end;
-    end Reverse_Find;
- 
-    ------------------------
-    -- Reverse_Find_Index --
-    ------------------------
- 
-    function Reverse_Find_Index
-      (Container : Vector;
-       Item      : Element_Type;
-       Index     : Index_Type := Index_Type'Last) return Extended_Index
-    is
-       --  Per AI05-0022, the container implementation is required to detect
-       --  element tampering by a generic actual subprogram.
- 
-       Lock : With_Lock (Container.TC'Unrestricted_Access);
- 
-       Last : constant Index_Type'Base :=
-         Index_Type'Min (Container.Last, Index);
- 
-    begin
-       for Indx in reverse Index_Type'First .. Last loop
-          if Container.Elements (To_Array_Index (Indx)) = Item then
-             return Indx;
-          end if;
-       end loop;
- 
-       return No_Index;
-    end Reverse_Find_Index;
- 
-    ---------------------
-    -- Reverse_Iterate --
-    ---------------------
- 
-    procedure Reverse_Iterate
-      (Container : Vector;
-       Process   : not null access procedure (Position : Cursor))
-    is
-       Busy : With_Busy (Container.TC'Unrestricted_Access);
-    begin
-       for Indx in reverse Index_Type'First .. Container.Last loop
-          Process (Cursor'(Container'Unrestricted_Access, Indx));
-       end loop;
-    end Reverse_Iterate;
- 
-    ----------------
-    -- Set_Length --
-    ----------------
- 
-    procedure Set_Length (Container : in out Vector; Length : Count_Type) is
-       Count : constant Count_Type'Base := Container.Length - Length;
- 
-    begin
-       --  Set_Length allows the user to set the length explicitly, instead of
-       --  implicitly as a side-effect of deletion or insertion. If the
-       --  requested length is less than the current length, this is equivalent
-       --  to deleting items from the back end of the vector. If the requested
-       --  length is greater than the current length, then this is equivalent to
-       --  inserting "space" (nonce items) at the end.
- 
-       if Count >= 0 then
-          Container.Delete_Last (Count);
-       elsif Checks and then Container.Last >= Index_Type'Last then
-          raise Constraint_Error with "vector is already at its maximum length";
-       else
-          Container.Insert_Space (Container.Last + 1, -Count);
-       end if;
-    end Set_Length;
- 
-    ----------
-    -- Swap --
-    ----------
- 
-    procedure Swap (Container : in out Vector; I, J : Index_Type) is
-       E : Elements_Array renames Container.Elements;
- 
-    begin
-       if Checks and then I > Container.Last then
-          raise Constraint_Error with "I index is out of range";
-       end if;
- 
-       if Checks and then J > Container.Last then
-          raise Constraint_Error with "J index is out of range";
-       end if;
- 
-       if I = J then
-          return;
-       end if;
- 
-       TE_Check (Container.TC);
- 
-       declare
-          EI_Copy : constant Element_Type := E (To_Array_Index (I));
-       begin
-          E (To_Array_Index (I)) := E (To_Array_Index (J));
-          E (To_Array_Index (J)) := EI_Copy;
-       end;
-    end Swap;
- 
-    procedure Swap (Container : in out Vector; I, J : Cursor) is
-    begin
-       if Checks and then I.Container = null then
-          raise Constraint_Error with "I cursor has no element";
-       end if;
- 
-       if Checks and then J.Container = null then
-          raise Constraint_Error with "J cursor has no element";
-       end if;
- 
-       if Checks and then I.Container /= Container'Unrestricted_Access then
-          raise Program_Error with "I cursor denotes wrong container";
-       end if;
- 
-       if Checks and then J.Container /= Container'Unrestricted_Access then
-          raise Program_Error with "J cursor denotes wrong container";
-       end if;
- 
-       Swap (Container, I.Index, J.Index);
-    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_Cursor --
-    ---------------
- 
-    function To_Cursor
-      (Container : Vector;
-       Index     : Extended_Index) return Cursor
-    is
-    begin
-       if Index not in Index_Type'First .. Container.Last then
-          return No_Element;
-       end if;
- 
-       return Cursor'(Container'Unrestricted_Access, Index);
-    end To_Cursor;
- 
-    --------------
-    -- To_Index --
-    --------------
- 
-    function To_Index (Position : Cursor) return Extended_Index is
-    begin
-       if Position.Container = null then
-          return No_Index;
-       end if;
- 
-       if Position.Index <= Position.Container.Last then
-          return Position.Index;
-       end if;
- 
-       return No_Index;
-    end To_Index;
- 
-    ---------------
-    -- To_Vector --
-    ---------------
- 
-    function To_Vector (Length : Count_Type) return Vector is
-       Index : Count_Type'Base;
-       Last  : Index_Type'Base;
- 
-    begin
-       if Length = 0 then
-          return Empty_Vector;
-       end if;
- 
-       --  We create a vector object with a capacity that matches the specified
-       --  Length, but we do not allow the vector capacity (the length of the
-       --  internal array) to exceed the number of values in Index_Type'Range
-       --  (otherwise, there would be no way to refer to those components via an
-       --  index).  We must therefore check whether the specified Length would
-       --  create a Last index value greater than Index_Type'Last.
- 
-       if Index_Type'Base'Last >= Count_Type'Pos (Count_Type'Last) then
-          --  We perform a two-part test. First we determine whether the
-          --  computed Last value lies in the base range of the type, and then
-          --  determine whether it lies in the range of the index (sub)type.
- 
-          --  Last must satisfy this relation:
-          --    First + Length - 1 <= Last
-          --  We regroup terms:
-          --    First - 1 <= Last - Length
-          --  Which can rewrite as:
-          --    No_Index <= Last - Length
- 
-          if Checks and then
-            Index_Type'Base'Last - Index_Type'Base (Length) < No_Index
-          then
-             raise Constraint_Error with "Length is out of range";
-          end if;
- 
-          --  We now know that the computed value of Last is within the base
-          --  range of the type, so it is safe to compute its value:
- 
-          Last := No_Index + Index_Type'Base (Length);
- 
-          --  Finally we test whether the value is within the range of the
-          --  generic actual index subtype:
- 
-          if Checks and then Last > Index_Type'Last then
-             raise Constraint_Error with "Length is out of range";
-          end if;
- 
-       elsif Index_Type'First <= 0 then
- 
-          --  Here we can compute Last directly, in the normal way. We know that
-          --  No_Index is less than 0, so there is no danger of overflow when
-          --  adding the (positive) value of Length.
- 
-          Index := Count_Type'Base (No_Index) + Length;  -- Last
- 
-          if Checks and then Index > Count_Type'Base (Index_Type'Last) then
-             raise Constraint_Error with "Length is out of range";
-          end if;
- 
-          --  We know that the computed value (having type Count_Type) of Last
-          --  is within the range of the generic actual index subtype, so it is
-          --  safe to convert to Index_Type:
- 
-          Last := Index_Type'Base (Index);
- 
-       else
-          --  Here Index_Type'First (and Index_Type'Last) is positive, so we
-          --  must test the length indirectly (by working backwards from the
-          --  largest possible value of Last), in order to prevent overflow.
- 
-          Index := Count_Type'Base (Index_Type'Last) - Length;  -- No_Index
- 
-          if Checks and then Index < Count_Type'Base (No_Index) then
-             raise Constraint_Error with "Length is out of range";
-          end if;
- 
-          --  We have determined that the value of Length would not create a
-          --  Last index value outside of the range of Index_Type, so we can now
-          --  safely compute its value.
- 
-          Last := Index_Type'Base (Count_Type'Base (No_Index) + Length);
-       end if;
- 
-       return V : Vector (Capacity => Length) do
-          V.Last := Last;
-       end return;
-    end To_Vector;
- 
-    function To_Vector
-      (New_Item : Element_Type;
-       Length   : Count_Type) return Vector
-    is
-       Index : Count_Type'Base;
-       Last  : Index_Type'Base;
- 
-    begin
-       if Length = 0 then
-          return Empty_Vector;
-       end if;
- 
-       --  We create a vector object with a capacity that matches the specified
-       --  Length, but we do not allow the vector capacity (the length of the
-       --  internal array) to exceed the number of values in Index_Type'Range
-       --  (otherwise, there would be no way to refer to those components via an
-       --  index). We must therefore check whether the specified Length would
-       --  create a Last index value greater than Index_Type'Last.
- 
-       if Index_Type'Base'Last >= Count_Type'Pos (Count_Type'Last) then
- 
-          --  We perform a two-part test. First we determine whether the
-          --  computed Last value lies in the base range of the type, and then
-          --  determine whether it lies in the range of the index (sub)type.
- 
-          --  Last must satisfy this relation:
-          --    First + Length - 1 <= Last
-          --  We regroup terms:
-          --    First - 1 <= Last - Length
-          --  Which can rewrite as:
-          --    No_Index <= Last - Length
- 
-          if Checks and then
-            Index_Type'Base'Last - Index_Type'Base (Length) < No_Index
-          then
-             raise Constraint_Error with "Length is out of range";
-          end if;
- 
-          --  We now know that the computed value of Last is within the base
-          --  range of the type, so it is safe to compute its value:
- 
-          Last := No_Index + Index_Type'Base (Length);
- 
-          --  Finally we test whether the value is within the range of the
-          --  generic actual index subtype:
- 
-          if Checks and then Last > Index_Type'Last then
-             raise Constraint_Error with "Length is out of range";
-          end if;
- 
-       elsif Index_Type'First <= 0 then
- 
-          --  Here we can compute Last directly, in the normal way. We know that
-          --  No_Index is less than 0, so there is no danger of overflow when
-          --  adding the (positive) value of Length.
- 
-          Index := Count_Type'Base (No_Index) + Length;  -- same value as V.Last
- 
-          if Checks and then Index > Count_Type'Base (Index_Type'Last) then
-             raise Constraint_Error with "Length is out of range";
-          end if;
- 
-          --  We know that the computed value (having type Count_Type) of Last
-          --  is within the range of the generic actual index subtype, so it is
-          --  safe to convert to Index_Type:
- 
-          Last := Index_Type'Base (Index);
- 
-       else
-          --  Here Index_Type'First (and Index_Type'Last) is positive, so we
-          --  must test the length indirectly (by working backwards from the
-          --  largest possible value of Last), in order to prevent overflow.
- 
-          Index := Count_Type'Base (Index_Type'Last) - Length;  -- No_Index
- 
-          if Checks and then Index < Count_Type'Base (No_Index) then
-             raise Constraint_Error with "Length is out of range";
-          end if;
- 
-          --  We have determined that the value of Length would not create a
-          --  Last index value outside of the range of Index_Type, so we can now
-          --  safely compute its value.
- 
-          Last := Index_Type'Base (Count_Type'Base (No_Index) + Length);
-       end if;
- 
-       return V : Vector (Capacity => Length) do
-          V.Elements := (others => New_Item);
-          V.Last := Last;
-       end return;
-    end To_Vector;
- 
-    --------------------
-    -- Update_Element --
-    --------------------
- 
-    procedure Update_Element
-      (Container : in out Vector;
-       Index     : Index_Type;
-       Process   : not null access procedure (Element : in out Element_Type))
-    is
-       Lock : With_Lock (Container.TC'Unchecked_Access);
-    begin
-       if Checks and then Index > Container.Last then
-          raise Constraint_Error with "Index is out of range";
-       end if;
- 
-       Process (Container.Elements (To_Array_Index (Index)));
-    end Update_Element;
- 
-    procedure Update_Element
-      (Container : in out Vector;
-       Position  : Cursor;
-       Process   : not null access procedure (Element : in out Element_Type))
-    is
-    begin
-       if Checks and then Position.Container = null then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with "Position cursor denotes wrong container";
-       end if;
- 
-       Update_Element (Container, Position.Index, Process);
-    end Update_Element;
- 
-    -----------
-    -- Write --
-    -----------
- 
-    procedure Write
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : Vector)
-    is
-       N : Count_Type;
- 
-    begin
-       N := Container.Length;
-       Count_Type'Base'Write (Stream, N);
- 
-       for J in 1 .. N loop
-          Element_Type'Write (Stream, Container.Elements (J));
-       end loop;
-    end Write;
- 
-    procedure Write
-      (Stream   : not null access Root_Stream_Type'Class;
-       Position : Cursor)
-    is
-    begin
-       raise Program_Error with "attempt to stream vector cursor";
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Constant_Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Write;
- 
- end Ada.Containers.Bounded_Vectors;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cobove.ads gcc-8.1.0/gcc/ada/a-cobove.ads
*** gcc-7.3.0/gcc/ada/a-cobove.ads	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-cobove.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,506 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --       A D A . C O N T A I N E R S . B O U N D E D _ V E C T O R S        --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, 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/>.                                          --
- --                                                                          --
- -- This unit was originally developed by Matthew J Heaney.                  --
- ------------------------------------------------------------------------------
- 
- with Ada.Iterator_Interfaces;
- 
- with Ada.Containers.Helpers;
- private with Ada.Streams;
- private with Ada.Finalization;
- 
- generic
-    type Index_Type is range <>;
-    type Element_Type is private;
- 
-    with function "=" (Left, Right : Element_Type) return Boolean is <>;
- 
- package Ada.Containers.Bounded_Vectors is
-    pragma Annotate (CodePeer, Skip_Analysis);
-    pragma Pure;
-    pragma Remote_Types;
- 
-    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;
- 
-    type Vector (Capacity : Count_Type) is tagged private with
-       Constant_Indexing => Constant_Reference,
-       Variable_Indexing => Reference,
-       Default_Iterator  => Iterate,
-       Iterator_Element  => Element_Type;
- 
-    pragma Preelaborable_Initialization (Vector);
- 
-    type Cursor is private;
-    pragma Preelaborable_Initialization (Cursor);
- 
-    Empty_Vector : constant Vector;
- 
-    No_Element : constant Cursor;
- 
-    function Has_Element (Position : Cursor) return Boolean;
- 
-    package Vector_Iterator_Interfaces is new
-       Ada.Iterator_Interfaces (Cursor, Has_Element);
- 
-    overriding function "=" (Left, Right : Vector) return Boolean;
- 
-    function To_Vector (Length : Count_Type) return Vector;
- 
-    function To_Vector
-      (New_Item : Element_Type;
-       Length   : Count_Type) return Vector;
- 
-    function "&" (Left, Right : Vector) return Vector;
- 
-    function "&" (Left : Vector; Right : Element_Type) return Vector;
- 
-    function "&" (Left : Element_Type; Right : Vector) return Vector;
- 
-    function "&" (Left, Right : Element_Type) return Vector;
- 
-    function Capacity (Container : Vector) return Count_Type;
- 
-    procedure Reserve_Capacity
-      (Container : in out Vector;
-       Capacity  : Count_Type);
- 
-    function Length (Container : Vector) return Count_Type;
- 
-    procedure Set_Length
-      (Container : in out Vector;
-       Length    : Count_Type);
- 
-    function Is_Empty (Container : Vector) return Boolean;
- 
-    procedure Clear (Container : in out Vector);
- 
-    function To_Cursor
-      (Container : Vector;
-       Index     : Extended_Index) return Cursor;
- 
-    function To_Index (Position : Cursor) return Extended_Index;
- 
-    function Element
-      (Container : Vector;
-       Index     : Index_Type) return Element_Type;
- 
-    function Element (Position : Cursor) return Element_Type;
- 
-    procedure Replace_Element
-      (Container : in out Vector;
-       Index     : Index_Type;
-       New_Item  : Element_Type);
- 
-    procedure Replace_Element
-      (Container : in out Vector;
-       Position  : Cursor;
-       New_Item  : Element_Type);
- 
-    procedure Query_Element
-      (Container : Vector;
-       Index     : Index_Type;
-       Process   : not null access procedure (Element : Element_Type));
- 
-    procedure Query_Element
-      (Position : Cursor;
-       Process  : not null access procedure (Element : Element_Type));
- 
-    procedure Update_Element
-      (Container : in out Vector;
-       Index     : Index_Type;
-       Process   : not null access procedure (Element : in out Element_Type));
- 
-    procedure Update_Element
-      (Container : in out Vector;
-       Position  : Cursor;
-       Process   : not null access procedure (Element : in out Element_Type));
- 
-    type Constant_Reference_Type
-       (Element : not null access constant Element_Type) is
-    private
-    with
-       Implicit_Dereference => Element;
- 
-    type Reference_Type (Element : not null access Element_Type) is private
-    with
-       Implicit_Dereference => Element;
- 
-    function Constant_Reference
-      (Container : aliased Vector;
-       Position  : Cursor) return Constant_Reference_Type;
- 
-    function Reference
-      (Container : aliased in out Vector;
-       Position  : Cursor) return Reference_Type;
- 
-    function Constant_Reference
-      (Container : aliased Vector;
-       Index     : Index_Type) return Constant_Reference_Type;
- 
-    function Reference
-      (Container : aliased in out Vector;
-       Index     : Index_Type) return Reference_Type;
- 
-    procedure Assign (Target : in out Vector; Source : Vector);
- 
-    function Copy (Source : Vector; Capacity : Count_Type := 0) return Vector;
- 
-    procedure Move (Target : in out Vector; Source : in out Vector);
- 
-    procedure Insert
-      (Container : in out Vector;
-       Before    : Extended_Index;
-       New_Item  : Vector);
- 
-    procedure Insert
-      (Container : in out Vector;
-       Before    : Cursor;
-       New_Item  : Vector);
- 
-    procedure Insert
-      (Container : in out Vector;
-       Before    : Cursor;
-       New_Item  : Vector;
-       Position  : out Cursor);
- 
-    procedure Insert
-      (Container : in out Vector;
-       Before    : Extended_Index;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1);
- 
-    procedure Insert
-      (Container : in out Vector;
-       Before    : Cursor;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1);
- 
-    procedure Insert
-      (Container : in out Vector;
-       Before    : Cursor;
-       New_Item  : Element_Type;
-       Position  : out Cursor;
-       Count     : Count_Type := 1);
- 
-    procedure Insert
-      (Container : in out Vector;
-       Before    : Extended_Index;
-       Count     : Count_Type := 1);
- 
-    procedure Insert
-      (Container : in out Vector;
-       Before    : Cursor;
-       Position  : out Cursor;
-       Count     : Count_Type := 1);
- 
-    procedure Prepend
-      (Container : in out Vector;
-       New_Item  : Vector);
- 
-    procedure Prepend
-      (Container : in out Vector;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1);
- 
-    procedure Append
-      (Container : in out Vector;
-       New_Item  : Vector);
- 
-    procedure Append
-      (Container : in out Vector;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1);
- 
-    procedure Insert_Space
-      (Container : in out Vector;
-       Before    : Extended_Index;
-       Count     : Count_Type := 1);
- 
-    procedure Insert_Space
-      (Container : in out Vector;
-       Before    : Cursor;
-       Position  : out Cursor;
-       Count     : Count_Type := 1);
- 
-    procedure Delete
-      (Container : in out Vector;
-       Index     : Extended_Index;
-       Count     : Count_Type := 1);
- 
-    procedure Delete
-      (Container : in out Vector;
-       Position  : in out Cursor;
-       Count     : Count_Type := 1);
- 
-    procedure Delete_First
-      (Container : in out Vector;
-       Count     : Count_Type := 1);
- 
-    procedure Delete_Last
-      (Container : in out Vector;
-       Count     : Count_Type := 1);
- 
-    procedure Reverse_Elements (Container : in out Vector);
- 
-    procedure Swap (Container : in out Vector; I, J : Index_Type);
- 
-    procedure Swap (Container : in out Vector; I, J : Cursor);
- 
-    function First_Index (Container : Vector) return Index_Type;
- 
-    function First (Container : Vector) return Cursor;
- 
-    function First_Element (Container : Vector) return Element_Type;
- 
-    function Last_Index (Container : Vector) return Extended_Index;
- 
-    function Last (Container : Vector) return Cursor;
- 
-    function Last_Element (Container : Vector) return Element_Type;
- 
-    function Next (Position : Cursor) return Cursor;
- 
-    procedure Next (Position : in out Cursor);
- 
-    function Previous (Position : Cursor) return Cursor;
- 
-    procedure Previous (Position : in out Cursor);
- 
-    function Find_Index
-      (Container : Vector;
-       Item      : Element_Type;
-       Index     : Index_Type := Index_Type'First) return Extended_Index;
- 
-    function Find
-      (Container : Vector;
-       Item      : Element_Type;
-       Position  : Cursor := No_Element) return Cursor;
- 
-    function Reverse_Find_Index
-      (Container : Vector;
-       Item      : Element_Type;
-       Index     : Index_Type := Index_Type'Last) return Extended_Index;
- 
-    function Reverse_Find
-      (Container : Vector;
-       Item      : Element_Type;
-       Position  : Cursor := No_Element) return Cursor;
- 
-    function Contains
-      (Container : Vector;
-       Item      : Element_Type) return Boolean;
- 
-    procedure Iterate
-      (Container : Vector;
-       Process   : not null access procedure (Position : Cursor));
- 
-    procedure Reverse_Iterate
-      (Container : Vector;
-       Process   : not null access procedure (Position : Cursor));
- 
-    function Iterate
-      (Container : Vector)
-       return Vector_Iterator_Interfaces.Reversible_Iterator'Class;
- 
-    function Iterate
-      (Container : Vector;
-       Start     : Cursor)
-       return Vector_Iterator_Interfaces.Reversible_Iterator'class;
- 
-    generic
-       with function "<" (Left, Right : Element_Type) return Boolean is <>;
-    package Generic_Sorting is
- 
-       function Is_Sorted (Container : Vector) return Boolean;
- 
-       procedure Sort (Container : in out Vector);
- 
-       procedure Merge (Target : in out Vector; Source : in out Vector);
- 
-    end Generic_Sorting;
- 
- private
- 
-    pragma Inline (First_Index);
-    pragma Inline (Last_Index);
-    pragma Inline (Element);
-    pragma Inline (First_Element);
-    pragma Inline (Last_Element);
-    pragma Inline (Query_Element);
-    pragma Inline (Update_Element);
-    pragma Inline (Replace_Element);
-    pragma Inline (Is_Empty);
-    pragma Inline (Contains);
-    pragma Inline (Next);
-    pragma Inline (Previous);
- 
-    use Ada.Containers.Helpers;
-    package Implementation is new Generic_Implementation;
-    use Implementation;
- 
-    use Ada.Streams;
-    use Ada.Finalization;
- 
-    type Elements_Array is array (Count_Type range <>) of aliased Element_Type;
-    function "=" (L, R : Elements_Array) return Boolean is abstract;
- 
-    type Vector (Capacity : Count_Type) is tagged record
-       Elements : Elements_Array (1 .. Capacity) := (others => <>);
-       Last     : Extended_Index := No_Index;
-       TC       : aliased Tamper_Counts;
-    end record;
- 
-    procedure Write
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : Vector);
- 
-    for Vector'Write use Write;
- 
-    procedure Read
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : out Vector);
- 
-    for Vector'Read use Read;
- 
-    type Vector_Access is access all Vector;
-    for Vector_Access'Storage_Size use 0;
- 
-    type Cursor is record
-       Container : Vector_Access;
-       Index     : Index_Type := Index_Type'First;
-    end record;
- 
-    procedure Write
-      (Stream   : not null access Root_Stream_Type'Class;
-       Position : Cursor);
- 
-    for Cursor'Write use Write;
- 
-    procedure Read
-      (Stream   : not null access Root_Stream_Type'Class;
-       Position : out Cursor);
- 
-    for Cursor'Read use Read;
- 
-    subtype Reference_Control_Type is Implementation.Reference_Control_Type;
-    --  It is necessary to rename this here, so that the compiler can find it
- 
-    type Constant_Reference_Type
-      (Element : not null access constant Element_Type) is
-       record
-          Control : Reference_Control_Type :=
-            raise Program_Error with "uninitialized reference";
-          --  The RM says, "The default initialization of an object of
-          --  type Constant_Reference_Type or Reference_Type propagates
-          --  Program_Error."
-       end record;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Constant_Reference_Type);
- 
-    for Constant_Reference_Type'Read use Read;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Constant_Reference_Type);
- 
-    for Constant_Reference_Type'Write use Write;
- 
-    type Reference_Type (Element : not null access Element_Type) is record
-       Control : Reference_Control_Type :=
-         raise Program_Error with "uninitialized reference";
-       --  The RM says, "The default initialization of an object of
-       --  type Constant_Reference_Type or Reference_Type propagates
-       --  Program_Error."
-    end record;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Reference_Type);
- 
-    for Reference_Type'Read use Read;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Reference_Type);
- 
-    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;
-    pragma Inline (Pseudo_Reference);
-    --  Creates an object of type Reference_Control_Type pointing to the
-    --  container, and increments the Lock. Finalization of this object will
-    --  decrement the Lock.
- 
-    type Element_Access is access all Element_Type with
-      Storage_Size => 0;
- 
-    function Get_Element_Access
-      (Position : Cursor) return not null Element_Access;
-    --  Returns a pointer to the element designated by Position.
- 
-    Empty_Vector : constant Vector := (Capacity => 0, others => <>);
- 
-    No_Element : constant Cursor := Cursor'(null, Index_Type'First);
- 
-    type Iterator is new Limited_Controlled and
-      Vector_Iterator_Interfaces.Reversible_Iterator with
-    record
-       Container : Vector_Access;
-       Index     : Index_Type'Base;
-    end record
-      with Disable_Controlled => not T_Check;
- 
-    overriding procedure Finalize (Object : in out Iterator);
- 
-    overriding function First (Object : Iterator) return Cursor;
-    overriding function Last  (Object : Iterator) return Cursor;
- 
-    overriding function Next
-      (Object   : Iterator;
-       Position : Cursor) return Cursor;
- 
-    overriding function Previous
-      (Object   : Iterator;
-       Position : Cursor) return Cursor;
- 
- end Ada.Containers.Bounded_Vectors;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cofove.adb gcc-8.1.0/gcc/ada/a-cofove.adb
*** gcc-7.3.0/gcc/ada/a-cofove.adb	Mon Apr 18 12:58:22 2016
--- gcc-8.1.0/gcc/ada/a-cofove.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,644 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         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-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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_Vectors with
-   SPARK_Mode => Off
- is
- 
-    Growth_Factor : constant := 2;
-    --  When growing a container, multiply current capacity by this. Doubling
-    --  leads to amortized linear-time copying.
- 
-    type Int is range System.Min_Int .. System.Max_Int;
-    type UInt is mod System.Max_Binary_Modulus;
- 
-    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 "=" (Left, 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
-       for X in First_Index (New_Item) .. Last_Index (New_Item) loop
-          Append (Container, Element (New_Item, X));
-       end loop;
-    end Append;
- 
-    procedure Append
-      (Container : in out Vector;
-       New_Item  : Element_Type)
-    is
-       New_Length : constant UInt := UInt (Length (Container) + 1);
-    begin
-       if not Bounded and then
-         Capacity (Container) < Capacity_Range (New_Length)
-       then
-          Reserve_Capacity
-            (Container,
-             Capacity_Range'Max (Capacity (Container) * Growth_Factor,
-                                 Capacity_Range (New_Length)));
-       end if;
- 
-       if Container.Last = Index_Type'Last then
-          raise Constraint_Error with "vector is already at its maximum length";
-       end if;
- 
-       --  TODO: should check whether length > max capacity (cnt_t'last) ???
- 
-       Container.Last := Container.Last + 1;
-       Elems (Container) (Length (Container)) := New_Item;
-    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 Container.Elements_Ptr = null
-               then Container.Elements'Length
-               else Container.Elements_Ptr.all'Length);
-    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;
- 
-    --------------
-    -- 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_To_Last --
-    ---------------------
- 
-    function Current_To_Last
-      (Container : Vector;
-       Current   : Index_Type) return Vector
-    is
-    begin
-       return Result : Vector (Count_Type (Container.Last - Current + 1))
-       do
-          for X in Current .. Container.Last loop
-             Append (Result, Element (Container, X));
-          end loop;
-       end return;
-    end Current_To_Last;
- 
-    -----------------
-    -- Delete_Last --
-    -----------------
- 
-    procedure Delete_Last
-      (Container : in out Vector)
-    is
-       Count : constant Capacity_Range := 1;
-       Index : Int'Base;
- 
-    begin
-       Index := Int'Base (Container.Last) - Int'Base (Count);
- 
-       if Index < Index_Type'Pos (Index_Type'First) then
-          Container.Last := No_Index;
-       else
-          Container.Last := Index_Type (Index);
-       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;
- 
-    --------------
-    -- Elements --
-    --------------
- 
-    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    : Capacity_Range;
-       Last : constant Index_Type := 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;
- 
-    -----------------------
-    -- First_To_Previous --
-    -----------------------
- 
-    function First_To_Previous
-      (Container : Vector;
-       Current   : Index_Type) return Vector
-    is
-    begin
-       return Result : Vector
-         (Count_Type (Current - First_Index (Container)))
-       do
-          for X in First_Index (Container) .. Current - 1 loop
-             Append (Result, Element (Container, X));
-          end loop;
-       end return;
-    end First_To_Previous;
- 
-    ---------------------
-    -- Generic_Sorting --
-    ---------------------
- 
-    package body Generic_Sorting with SPARK_Mode => Off is
- 
-       ---------------
-       -- 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
-          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 (Elems (Container) (1 .. Len));
-          end if;
-       end Sort;
- 
-    end Generic_Sorting;
- 
-    -----------------
-    -- Get_Element --
-    -----------------
- 
-    function Get_Element
-      (Container : Vector;
-       Position  : Capacity_Range) return Element_Type
-    is
-    begin
-       return 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;
- 
-    --------------
-    -- 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 (Last_Index (Container));
-       F : constant Int := Int (Index_Type'First);
-       N : constant Int'Base := L - F + 1;
-    begin
-       return Capacity_Range (N);
-    end Length;
- 
-    ---------------------
-    -- 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) := 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 > Formal_Vectors.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, 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 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    : Capacity_Range;
- 
-    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, 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 Elems (Container) (Capacity_Range (II));
-          EJ : Element_Type renames Elems (Container) (Capacity_Range (JJ));
- 
-          EI_Copy : constant Element_Type := EI;
- 
-       begin
-          EI := EJ;
-          EJ := EI_Copy;
-       end;
-    end Swap;
- 
-    ---------------
-    -- 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 => New_Item));
-       end;
-    end To_Vector;
- 
- end Ada.Containers.Formal_Vectors;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cofove.ads gcc-8.1.0/gcc/ada/a-cofove.ads
*** gcc-7.3.0/gcc/ada/a-cofove.ads	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-cofove.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,280 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         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        --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, 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/>.                                          --
- ------------------------------------------------------------------------------
- 
- --  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.
- 
- generic
-    type Index_Type is range <>;
-    type Element_Type is private;
- 
-    with function "=" (Left, Right : Element_Type) return Boolean is <>;
- 
-    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_Vectors with
-   SPARK_Mode
- is
-    pragma Annotate (GNATprove, External_Axiomatization);
-    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;
- 
-    subtype Capacity_Range is
-      Count_Type range 0 .. Count_Type (Index_Type'Last - Index_Type'First + 1);
- 
-    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 Empty_Vector return Vector;
- 
-    function "=" (Left, Right : Vector) return Boolean with
-      Global => null;
- 
-    function To_Vector
-      (New_Item : Element_Type;
-       Length   : Capacity_Range) return Vector
-    with
-      Global => null;
- 
-    function Capacity (Container : Vector) return Capacity_Range with
-      Global => null,
-      Post => Capacity'Result >= Container.Capacity;
- 
-    procedure Reserve_Capacity
-      (Container : in out Vector;
-       Capacity  : Capacity_Range)
-    with
-      Global => null,
-      Pre    => (if Bounded then Capacity <= Container.Capacity);
- 
-    function Length (Container : Vector) return Capacity_Range with
-      Global => null;
- 
-    function Is_Empty (Container : Vector) return Boolean with
-      Global => null;
- 
-    procedure Clear (Container : in out Vector) with
-      Global => null;
-    --  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);
- 
-    function Copy
-      (Source   : Vector;
-       Capacity : Capacity_Range := 0) return Vector
-    with
-      Global => null,
-      Pre    => (if Bounded then (Capacity = 0 or Length (Source) <= Capacity));
- 
-    function Element
-      (Container : Vector;
-       Index     : Index_Type) return Element_Type
-    with
-      Global => null,
-      Pre    => Index in First_Index (Container) .. Last_Index (Container);
- 
-    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);
- 
-    procedure Append
-      (Container : in out Vector;
-       New_Item  : Vector)
-    with
-      Global => null,
-      Pre    => (if Bounded then
-                  Length (Container) + Length (New_Item) <= Container.Capacity);
- 
-    procedure Append
-      (Container : in out Vector;
-       New_Item  : Element_Type)
-    with
-      Global => null,
-      Pre    => (if Bounded then
-                   Length (Container) < Container.Capacity);
- 
-    procedure Delete_Last
-      (Container : in out Vector)
-    with
-      Global => null;
- 
-    procedure Reverse_Elements (Container : in out Vector) with
-      Global => null;
- 
-    procedure Swap (Container : in out Vector; I, 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);
- 
-    function First_Index (Container : Vector) return Index_Type with
-      Global => null;
- 
-    function First_Element (Container : Vector) return Element_Type with
-      Global => null,
-      Pre    => not Is_Empty (Container);
- 
-    function Last_Index (Container : Vector) return Extended_Index with
-      Global => null;
- 
-    function Last_Element (Container : Vector) return Element_Type with
-      Global => null,
-      Pre    => not Is_Empty (Container);
- 
-    function Find_Index
-      (Container : Vector;
-       Item      : Element_Type;
-       Index     : Index_Type := Index_Type'First) return Extended_Index
-    with
-      Global => null;
- 
-    function Reverse_Find_Index
-      (Container : Vector;
-       Item      : Element_Type;
-       Index     : Index_Type := Index_Type'Last) return Extended_Index
-    with
-      Global => null;
- 
-    function Contains
-      (Container : Vector;
-       Item      : Element_Type) return Boolean
-    with
-      Global => null;
- 
-    function Has_Element
-      (Container : Vector;
-       Position  : Extended_Index) return Boolean
-    with
-      Global => null;
- 
-    generic
-       with function "<" (Left, Right : Element_Type) return Boolean is <>;
-    package Generic_Sorting with SPARK_Mode is
- 
-       function Is_Sorted (Container : Vector) return Boolean with
-         Global => null;
- 
-       procedure Sort (Container : in out Vector) with
-         Global => null;
- 
-    end Generic_Sorting;
- 
-    function First_To_Previous
-      (Container : Vector;
-       Current   : Index_Type) return Vector
-    with
-      Ghost,
-      Global => null,
-      Pre    => Current in First_Index (Container) .. Last_Index (Container);
- 
-    function Current_To_Last
-      (Container : Vector;
-       Current   : Index_Type) return Vector
-    with
-      Ghost,
-      Global => null,
-      Pre    => Current in First_Index (Container) .. Last_Index (Container);
-    --  First_To_Previous returns a container containing all elements preceding
-    --  Current (excluded) in Container. Current_To_Last returns a container
-    --  containing all elements following Current (included) in Container.
-    --  These two new functions can be used to express invariant properties in
-    --  loops which iterate over containers. First_To_Previous returns the part
-    --  of the container already scanned and Current_To_Last the part not
-    --  scanned yet.
- 
- 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 Element_Type;
-    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_Vectors;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cogeso.adb gcc-8.1.0/gcc/ada/a-cogeso.adb
*** gcc-7.3.0/gcc/ada/a-cogeso.adb	Fri Nov  4 13:45:01 2011
--- gcc-8.1.0/gcc/ada/a-cogeso.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,127 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                       ADA.CONTAINERS.GENERIC_SORT                        --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --            Copyright (C) 2011, Free Software Foundation, Inc.            --
- --                                                                          --
- -- GNAT is 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.                  --
- ------------------------------------------------------------------------------
- 
- --  This algorithm was adapted from GNAT.Heap_Sort (see g-heasor.ad[sb])
- 
- with System;
- 
- procedure Ada.Containers.Generic_Sort (First, Last : Index_Type'Base) is
-    type T is range System.Min_Int .. System.Max_Int;
- 
-    function To_Index (J : T) return Index_Type;
-    pragma Inline (To_Index);
- 
-    function Lt (J, K : T) return Boolean;
-    pragma Inline (Lt);
- 
-    procedure Xchg (J, K : T);
-    pragma Inline (Xchg);
- 
-    procedure Sift (S : T);
- 
-    --------------
-    -- To_Index --
-    --------------
- 
-    function To_Index (J : T) return Index_Type is
-       K : constant T'Base := Index_Type'Pos (First) + J - T'(1);
-    begin
-       return Index_Type'Val (K);
-    end To_Index;
- 
-    --------
-    -- Lt --
-    --------
- 
-    function Lt (J, K : T) return Boolean is
-    begin
-       return Before (To_Index (J), To_Index (K));
-    end Lt;
- 
-    ----------
-    -- Xchg --
-    ----------
- 
-    procedure Xchg (J, K : T) is
-    begin
-       Swap (To_Index (J), To_Index (K));
-    end Xchg;
- 
-    Max : T := Index_Type'Pos (Last) - Index_Type'Pos (First) + T'(1);
- 
-    ----------
-    -- Sift --
-    ----------
- 
-    procedure Sift (S : T) is
-       C      : T := S;
-       Son    : T;
-       Father : T;
- 
-    begin
-       loop
-          Son := C + C;
- 
-          if Son < Max then
-             if Lt (Son, Son + 1) then
-                Son := Son + 1;
-             end if;
-          elsif Son > Max then
-             exit;
-          end if;
- 
-          Xchg (Son, C);
-          C := Son;
-       end loop;
- 
-       while C /= S loop
-          Father := C / 2;
- 
-          if Lt (Father, C) then
-             Xchg (Father, C);
-             C := Father;
-          else
-             exit;
-          end if;
-       end loop;
-    end Sift;
- 
- --  Start of processing for Generic_Sort
- 
- begin
-    for J in reverse 1 .. Max / 2 loop
-       Sift (J);
-    end loop;
- 
-    while Max > 1 loop
-       Xchg (1, Max);
-       Max := Max - 1;
-       Sift (1);
-    end loop;
- end Ada.Containers.Generic_Sort;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cogeso.ads gcc-8.1.0/gcc/ada/a-cogeso.ads
*** gcc-7.3.0/gcc/ada/a-cogeso.ads	Fri Nov  4 13:45:01 2011
--- gcc-8.1.0/gcc/ada/a-cogeso.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,40 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                       ADA.CONTAINERS.GENERIC_SORT                        --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --            Copyright (C) 2011, Free Software Foundation, Inc.            --
- --                                                                          --
- -- GNAT is 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.                  --
- ------------------------------------------------------------------------------
- 
- --  Allows an anonymous array (or array-like container) to be sorted. Generic
- --  formal Before returns the result of comparing the elements designated by
- --  the indexes, and generic formal Swap exchanges the designated elements.
- 
- generic
-    type Index_Type is (<>);
-    with function Before (Left, Right : Index_Type) return Boolean;
-    with procedure Swap (Left, Right : Index_Type);
- 
- procedure Ada.Containers.Generic_Sort (First, Last : Index_Type'Base);
- pragma Pure (Ada.Containers.Generic_Sort);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cohama.adb gcc-8.1.0/gcc/ada/a-cohama.adb
*** gcc-7.3.0/gcc/ada/a-cohama.adb	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-cohama.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,1196 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --            A D A . C O N T A I N E R S . H A S H E D _ M A P S           --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 Ada.Unchecked_Deallocation;
- 
- with Ada.Containers.Hash_Tables.Generic_Operations;
- pragma Elaborate_All (Ada.Containers.Hash_Tables.Generic_Operations);
- 
- with Ada.Containers.Hash_Tables.Generic_Keys;
- pragma Elaborate_All (Ada.Containers.Hash_Tables.Generic_Keys);
- 
- with Ada.Containers.Helpers; use Ada.Containers.Helpers;
- 
- with System; use type System.Address;
- 
- package body Ada.Containers.Hashed_Maps is
- 
-    pragma Warnings (Off, "variable ""Busy*"" is not referenced");
-    pragma Warnings (Off, "variable ""Lock*"" is not referenced");
-    --  See comment in Ada.Containers.Helpers
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    function Copy_Node
-      (Source : Node_Access) return Node_Access;
-    pragma Inline (Copy_Node);
- 
-    function Equivalent_Key_Node
-      (Key  : Key_Type;
-       Node : Node_Access) return Boolean;
-    pragma Inline (Equivalent_Key_Node);
- 
-    procedure Free (X : in out Node_Access);
- 
-    function Find_Equal_Key
-      (R_HT   : Hash_Table_Type;
-       L_Node : Node_Access) return Boolean;
- 
-    function Hash_Node (Node : Node_Access) return Hash_Type;
-    pragma Inline (Hash_Node);
- 
-    function Next (Node : Node_Access) return Node_Access;
-    pragma Inline (Next);
- 
-    function Read_Node
-      (Stream : not null access Root_Stream_Type'Class) return Node_Access;
-    pragma Inline (Read_Node);
- 
-    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;
-       Node   : Node_Access);
-    pragma Inline (Write_Node);
- 
-    --------------------------
-    -- Local Instantiations --
-    --------------------------
- 
-    package HT_Ops is new Hash_Tables.Generic_Operations
-      (HT_Types  => HT_Types,
-       Hash_Node => Hash_Node,
-       Next      => Next,
-       Set_Next  => Set_Next,
-       Copy_Node => Copy_Node,
-       Free      => Free);
- 
-    package Key_Ops is new Hash_Tables.Generic_Keys
-      (HT_Types        => HT_Types,
-       Next            => Next,
-       Set_Next        => Set_Next,
-       Key_Type        => Key_Type,
-       Hash            => Hash,
-       Equivalent_Keys => Equivalent_Key_Node);
- 
-    function Is_Equal is new HT_Ops.Generic_Equal (Find_Equal_Key);
- 
-    procedure Read_Nodes  is new HT_Ops.Generic_Read (Read_Node);
-    procedure Write_Nodes is new HT_Ops.Generic_Write (Write_Node);
- 
-    ---------
-    -- "=" --
-    ---------
- 
-    function "=" (Left, Right : Map) return Boolean is
-    begin
-       return Is_Equal (Left.HT, Right.HT);
-    end "=";
- 
-    ------------
-    -- Adjust --
-    ------------
- 
-    procedure Adjust (Container : in out Map) is
-    begin
-       HT_Ops.Adjust (Container.HT);
-    end Adjust;
- 
-    ------------
-    -- Assign --
-    ------------
- 
-    procedure Assign (Target : in out Map; Source : Map) is
-       procedure Insert_Item (Node : Node_Access);
-       pragma Inline (Insert_Item);
- 
-       procedure Insert_Items is new HT_Ops.Generic_Iteration (Insert_Item);
- 
-       -----------------
-       -- Insert_Item --
-       -----------------
- 
-       procedure Insert_Item (Node : Node_Access) is
-       begin
-          Target.Insert (Key => Node.Key, New_Item => Node.Element);
-       end Insert_Item;
- 
-    --  Start of processing for Assign
- 
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       Target.Clear;
- 
-       if Target.Capacity < Source.Length then
-          Target.Reserve_Capacity (Source.Length);
-       end if;
- 
-       Insert_Items (Source.HT);
-    end Assign;
- 
-    --------------
-    -- Capacity --
-    --------------
- 
-    function Capacity (Container : Map) return Count_Type is
-    begin
-       return HT_Ops.Capacity (Container.HT);
-    end Capacity;
- 
-    -----------
-    -- Clear --
-    -----------
- 
-    procedure Clear (Container : in out Map) is
-    begin
-       HT_Ops.Clear (Container.HT);
-    end Clear;
- 
-    ------------------------
-    -- Constant_Reference --
-    ------------------------
- 
-    function Constant_Reference
-      (Container : aliased Map;
-       Position  : Cursor) return Constant_Reference_Type
-    is
-    begin
-       if Checks and then Position.Container = null then
-          raise Constraint_Error with
-            "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor designates wrong map";
-       end if;
- 
-       pragma Assert
-         (Vet (Position),
-          "Position cursor in Constant_Reference is bad");
- 
-       declare
-          HT : Hash_Table_Type renames Container'Unrestricted_Access.all.HT;
-          TC : constant Tamper_Counts_Access :=
-            HT.TC'Unrestricted_Access;
-       begin
-          return R : constant Constant_Reference_Type :=
-            (Element => Position.Node.Element'Access,
-             Control => (Controlled with TC))
-          do
-             Lock (TC.all);
-          end return;
-       end;
-    end Constant_Reference;
- 
-    function Constant_Reference
-      (Container : aliased Map;
-       Key       : Key_Type) return Constant_Reference_Type
-    is
-       HT   : Hash_Table_Type renames Container'Unrestricted_Access.HT;
-       Node : constant Node_Access := Key_Ops.Find (HT, Key);
- 
-    begin
-       if Checks and then Node = null then
-          raise Constraint_Error with "key not in map";
-       end if;
- 
-       declare
-          TC : constant Tamper_Counts_Access :=
-            HT.TC'Unrestricted_Access;
-       begin
-          return R : constant Constant_Reference_Type :=
-            (Element => Node.Element'Access,
-             Control => (Controlled with TC))
-          do
-             Lock (TC.all);
-          end return;
-       end;
-    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 : Count_Type;
- 
-    begin
-       if Capacity = 0 then
-          C := Source.Length;
- 
-       elsif Capacity >= Source.Length then
-          C := Capacity;
- 
-       elsif Checks then
-          raise Capacity_Error
-            with "Requested capacity is less than Source length";
-       end if;
- 
-       return Target : Map do
-          Target.Reserve_Capacity (C);
-          Target.Assign (Source);
-       end return;
-    end Copy;
- 
-    ---------------
-    -- Copy_Node --
-    ---------------
- 
-    function Copy_Node
-      (Source : Node_Access) return Node_Access
-    is
-       Target : constant Node_Access :=
-         new Node_Type'(Key     => Source.Key,
-                        Element => Source.Element,
-                        Next    => null);
-    begin
-       return Target;
-    end Copy_Node;
- 
-    ------------
-    -- Delete --
-    ------------
- 
-    procedure Delete (Container : in out Map; Key : Key_Type) is
-       X : Node_Access;
- 
-    begin
-       Key_Ops.Delete_Key_Sans_Free (Container.HT, Key, X);
- 
-       if Checks and then X = null then
-          raise Constraint_Error with "attempt to delete key not in map";
-       end if;
- 
-       Free (X);
-    end Delete;
- 
-    procedure Delete (Container : in out Map; Position : in out Cursor) is
-    begin
-       if Checks and then Position.Node = null then
-          raise Constraint_Error with
-            "Position cursor of Delete equals No_Element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor of Delete designates wrong map";
-       end if;
- 
-       TC_Check (Container.HT.TC);
- 
-       pragma Assert (Vet (Position), "bad cursor in Delete");
- 
-       HT_Ops.Delete_Node_Sans_Free (Container.HT, Position.Node);
- 
-       Free (Position.Node);
-       Position.Container := null;
-    end Delete;
- 
-    -------------
-    -- Element --
-    -------------
- 
-    function Element (Container : Map; Key : Key_Type) return Element_Type is
-       HT   : Hash_Table_Type renames Container'Unrestricted_Access.HT;
-       Node : constant Node_Access := Key_Ops.Find (HT, Key);
- 
-    begin
-       if Checks and then Node = null then
-          raise Constraint_Error with
-            "no element available because key not in map";
-       end if;
- 
-       return Node.Element;
-    end Element;
- 
-    function Element (Position : Cursor) return Element_Type is
-    begin
-       if Checks and then Position.Node = null then
-          raise Constraint_Error with
-            "Position cursor of function Element equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in function Element");
- 
-       return Position.Node.Element;
-    end Element;
- 
-    -------------------------
-    -- Equivalent_Key_Node --
-    -------------------------
- 
-    function Equivalent_Key_Node
-      (Key  : Key_Type;
-       Node : Node_Access) return Boolean is
-    begin
-       return Equivalent_Keys (Key, Node.Key);
-    end Equivalent_Key_Node;
- 
-    ---------------------
-    -- Equivalent_Keys --
-    ---------------------
- 
-    function Equivalent_Keys (Left, Right : Cursor)
-      return Boolean is
-    begin
-       if Checks and then Left.Node = null then
-          raise Constraint_Error with
-            "Left cursor of Equivalent_Keys equals No_Element";
-       end if;
- 
-       if Checks and then Right.Node = null then
-          raise Constraint_Error with
-            "Right cursor of Equivalent_Keys equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Left), "Left cursor of Equivalent_Keys is bad");
-       pragma Assert (Vet (Right), "Right cursor of Equivalent_Keys is bad");
- 
-       return Equivalent_Keys (Left.Node.Key, Right.Node.Key);
-    end Equivalent_Keys;
- 
-    function Equivalent_Keys (Left : Cursor; Right : Key_Type) return Boolean is
-    begin
-       if Checks and then Left.Node = null then
-          raise Constraint_Error with
-            "Left cursor of Equivalent_Keys equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Left), "Left cursor in Equivalent_Keys is bad");
- 
-       return Equivalent_Keys (Left.Node.Key, Right);
-    end Equivalent_Keys;
- 
-    function Equivalent_Keys (Left : Key_Type; Right : Cursor) return Boolean is
-    begin
-       if Checks and then Right.Node = null then
-          raise Constraint_Error with
-            "Right cursor of Equivalent_Keys equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Right), "Right cursor of Equivalent_Keys is bad");
- 
-       return Equivalent_Keys (Left, Right.Node.Key);
-    end Equivalent_Keys;
- 
-    -------------
-    -- Exclude --
-    -------------
- 
-    procedure Exclude (Container : in out Map; Key : Key_Type) is
-       X : Node_Access;
-    begin
-       Key_Ops.Delete_Key_Sans_Free (Container.HT, Key, X);
-       Free (X);
-    end Exclude;
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    procedure Finalize (Container : in out Map) is
-    begin
-       HT_Ops.Finalize (Container.HT);
-    end Finalize;
- 
-    procedure Finalize (Object : in out Iterator) is
-    begin
-       if Object.Container /= null then
-          Unbusy (Object.Container.HT.TC);
-       end if;
-    end Finalize;
- 
-    ----------
-    -- Find --
-    ----------
- 
-    function Find (Container : Map; Key : Key_Type) return Cursor is
-       HT   : Hash_Table_Type renames Container'Unrestricted_Access.HT;
-       Node : constant Node_Access := Key_Ops.Find (HT, Key);
- 
-    begin
-       if Node = null then
-          return No_Element;
-       end if;
- 
-       return Cursor'(Container'Unrestricted_Access, Node);
-    end Find;
- 
-    --------------------
-    -- Find_Equal_Key --
-    --------------------
- 
-    function Find_Equal_Key
-      (R_HT   : Hash_Table_Type;
-       L_Node : Node_Access) return Boolean
-    is
-       R_Index : constant Hash_Type := Key_Ops.Index (R_HT, L_Node.Key);
-       R_Node  : Node_Access := R_HT.Buckets (R_Index);
- 
-    begin
-       while R_Node /= null loop
-          if Equivalent_Keys (L_Node.Key, R_Node.Key) then
-             return L_Node.Element = R_Node.Element;
-          end if;
- 
-          R_Node := R_Node.Next;
-       end loop;
- 
-       return False;
-    end Find_Equal_Key;
- 
-    -----------
-    -- First --
-    -----------
- 
-    function First (Container : Map) return Cursor is
-       Node : constant Node_Access := HT_Ops.First (Container.HT);
- 
-    begin
-       if Node = null then
-          return No_Element;
-       end if;
- 
-       return Cursor'(Container'Unrestricted_Access, Node);
-    end First;
- 
-    function First (Object : Iterator) return Cursor is
-    begin
-       return Object.Container.First;
-    end First;
- 
-    ----------
-    -- Free --
-    ----------
- 
-    procedure Free (X : in out Node_Access) is
-       procedure Deallocate is
-          new Ada.Unchecked_Deallocation (Node_Type, Node_Access);
-    begin
-       if X /= null then
-          X.Next := X;     --  detect mischief (in Vet)
-          Deallocate (X);
-       end if;
-    end Free;
- 
-    ------------------------
-    -- Get_Element_Access --
-    ------------------------
- 
-    function Get_Element_Access
-      (Position : Cursor) return not null Element_Access is
-    begin
-       return Position.Node.Element'Access;
-    end Get_Element_Access;
- 
-    -----------------
-    -- Has_Element --
-    -----------------
- 
-    function Has_Element (Position : Cursor) return Boolean is
-    begin
-       pragma Assert (Vet (Position), "bad cursor in Has_Element");
-       return Position.Node /= null;
-    end Has_Element;
- 
-    ---------------
-    -- Hash_Node --
-    ---------------
- 
-    function Hash_Node (Node : Node_Access) 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
-          TE_Check (Container.HT.TC);
- 
-          Position.Node.Key := Key;
-          Position.Node.Element := New_Item;
-       end if;
-    end Include;
- 
-    ------------
-    -- Insert --
-    ------------
- 
-    procedure Insert
-      (Container : in out Map;
-       Key       : Key_Type;
-       Position  : out Cursor;
-       Inserted  : out Boolean)
-    is
-       function New_Node (Next : Node_Access) return Node_Access;
-       pragma Inline (New_Node);
- 
-       procedure Local_Insert is
-         new Key_Ops.Generic_Conditional_Insert (New_Node);
- 
-       --------------
-       -- New_Node --
-       --------------
- 
-       function New_Node (Next : Node_Access) return Node_Access is
-       begin
-          return new Node_Type'(Key     => Key,
-                                Element => <>,
-                                Next    => Next);
-       end New_Node;
- 
-       HT : Hash_Table_Type renames Container.HT;
- 
-    --  Start of processing for Insert
- 
-    begin
-       if HT_Ops.Capacity (HT) = 0 then
-          HT_Ops.Reserve_Capacity (HT, 1);
-       end if;
- 
-       Local_Insert (HT, Key, Position.Node, Inserted);
- 
-       if Inserted
-         and then HT.Length > HT_Ops.Capacity (HT)
-       then
-          HT_Ops.Reserve_Capacity (HT, HT.Length);
-       end if;
- 
-       Position.Container := Container'Unrestricted_Access;
-    end Insert;
- 
-    procedure Insert
-      (Container : in out Map;
-       Key       : Key_Type;
-       New_Item  : Element_Type;
-       Position  : out Cursor;
-       Inserted  : out Boolean)
-    is
-       function New_Node (Next : Node_Access) return Node_Access;
-       pragma Inline (New_Node);
- 
-       procedure Local_Insert is
-         new Key_Ops.Generic_Conditional_Insert (New_Node);
- 
-       --------------
-       -- New_Node --
-       --------------
- 
-       function New_Node (Next : Node_Access) return Node_Access is
-       begin
-          return new Node_Type'(Key, New_Item, Next);
-       end New_Node;
- 
-       HT : Hash_Table_Type renames Container.HT;
- 
-    --  Start of processing for Insert
- 
-    begin
-       if HT_Ops.Capacity (HT) = 0 then
-          HT_Ops.Reserve_Capacity (HT, 1);
-       end if;
- 
-       Local_Insert (HT, Key, Position.Node, Inserted);
- 
-       if Inserted
-         and then HT.Length > HT_Ops.Capacity (HT)
-       then
-          HT_Ops.Reserve_Capacity (HT, HT.Length);
-       end if;
- 
-       Position.Container := Container'Unrestricted_Access;
-    end Insert;
- 
-    procedure Insert
-      (Container : in out Map;
-       Key       : Key_Type;
-       New_Item  : Element_Type)
-    is
-       Position : Cursor;
-       pragma Unreferenced (Position);
- 
-       Inserted : Boolean;
- 
-    begin
-       Insert (Container, Key, New_Item, Position, Inserted);
- 
-       if Checks and then 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 Container.HT.Length = 0;
-    end Is_Empty;
- 
-    -------------
-    -- Iterate --
-    -------------
- 
-    procedure Iterate
-      (Container : Map;
-       Process   : not null access procedure (Position : Cursor))
-    is
-       procedure Process_Node (Node : Node_Access);
-       pragma Inline (Process_Node);
- 
-       procedure Local_Iterate is new HT_Ops.Generic_Iteration (Process_Node);
- 
-       ------------------
-       -- Process_Node --
-       ------------------
- 
-       procedure Process_Node (Node : Node_Access) is
-       begin
-          Process (Cursor'(Container'Unrestricted_Access, Node));
-       end Process_Node;
- 
-       Busy : With_Busy (Container.HT.TC'Unrestricted_Access);
- 
-    --  Start of processing for Iterate
- 
-    begin
-       Local_Iterate (Container.HT);
-    end Iterate;
- 
-    function Iterate
-      (Container : Map) return Map_Iterator_Interfaces.Forward_Iterator'Class
-    is
-    begin
-       return It : constant Iterator :=
-         (Limited_Controlled with Container => Container'Unrestricted_Access)
-       do
-          Busy (Container.HT.TC'Unrestricted_Access.all);
-       end return;
-    end Iterate;
- 
-    ---------
-    -- Key --
-    ---------
- 
-    function Key (Position : Cursor) return Key_Type is
-    begin
-       if Checks and then Position.Node = null then
-          raise Constraint_Error with
-            "Position cursor of function Key equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in function Key");
- 
-       return Position.Node.Key;
-    end Key;
- 
-    ------------
-    -- Length --
-    ------------
- 
-    function Length (Container : Map) return Count_Type is
-    begin
-       return Container.HT.Length;
-    end Length;
- 
-    ----------
-    -- Move --
-    ----------
- 
-    procedure Move
-      (Target : in out Map;
-       Source : in out Map)
-    is
-    begin
-       HT_Ops.Move (Target => Target.HT, Source => Source.HT);
-    end Move;
- 
-    ----------
-    -- Next --
-    ----------
- 
-    function Next (Node : Node_Access) return Node_Access is
-    begin
-       return Node.Next;
-    end Next;
- 
-    function Next (Position : Cursor) return Cursor is
-    begin
-       if Position.Node = null then
-          return No_Element;
-       end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in function Next");
- 
-       declare
-          HT   : Hash_Table_Type renames Position.Container.HT;
-          Node : constant Node_Access := HT_Ops.Next (HT, Position.Node);
- 
-       begin
-          if Node = null then
-             return No_Element;
-          end if;
- 
-          return Cursor'(Position.Container, Node);
-       end;
-    end Next;
- 
-    procedure Next (Position : in out Cursor) is
-    begin
-       Position := Next (Position);
-    end Next;
- 
-    function Next
-      (Object   : Iterator;
-       Position : Cursor) return Cursor
-    is
-    begin
-       if Position.Container = null then
-          return No_Element;
-       end if;
- 
-       if Checks and then Position.Container /= Object.Container then
-          raise Program_Error with
-            "Position cursor of Next designates wrong map";
-       end if;
- 
-       return Next (Position);
-    end Next;
- 
-    ----------------------
-    -- Pseudo_Reference --
-    ----------------------
- 
-    function Pseudo_Reference
-      (Container : aliased Map'Class) return Reference_Control_Type
-    is
-       TC : constant Tamper_Counts_Access :=
-         Container.HT.TC'Unrestricted_Access;
-    begin
-       return R : constant Reference_Control_Type := (Controlled with TC) do
-          Lock (TC.all);
-       end return;
-    end Pseudo_Reference;
- 
-    -------------------
-    -- Query_Element --
-    -------------------
- 
-    procedure Query_Element
-      (Position : Cursor;
-       Process  : not null access
-                    procedure (Key : Key_Type; Element : Element_Type))
-    is
-    begin
-       if Checks and then Position.Node = null then
-          raise Constraint_Error with
-            "Position cursor of Query_Element equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in Query_Element");
- 
-       declare
-          M  : Map renames Position.Container.all;
-          HT : Hash_Table_Type renames M.HT'Unrestricted_Access.all;
-          Lock : With_Lock (HT.TC'Unrestricted_Access);
-          K : Key_Type renames Position.Node.Key;
-          E : Element_Type renames Position.Node.Element;
-       begin
-          Process (K, E);
-       end;
-    end Query_Element;
- 
-    ----------
-    -- Read --
-    ----------
- 
-    procedure Read
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : out Map)
-    is
-    begin
-       Read_Nodes (Stream, Container.HT);
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Cursor)
-    is
-    begin
-       raise Program_Error with "attempt to stream map cursor";
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Constant_Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Read;
- 
-    ---------------
-    -- Reference --
-    ---------------
- 
-    function Reference
-      (Container : aliased in out Map;
-       Position  : Cursor) return Reference_Type
-    is
-    begin
-       if Checks and then Position.Container = null then
-          raise Constraint_Error with
-            "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor designates wrong map";
-       end if;
- 
-       pragma Assert
-         (Vet (Position),
-          "Position cursor in function Reference is bad");
- 
-       declare
-          HT : Hash_Table_Type renames Container'Unrestricted_Access.all.HT;
-          TC : constant Tamper_Counts_Access :=
-            HT.TC'Unrestricted_Access;
-       begin
-          return R : constant Reference_Type :=
-            (Element => Position.Node.Element'Access,
-             Control => (Controlled with TC))
-          do
-             Lock (TC.all);
-          end return;
-       end;
-    end Reference;
- 
-    function Reference
-      (Container : aliased in out Map;
-       Key       : Key_Type) return Reference_Type
-    is
-       HT   : Hash_Table_Type renames Container.HT;
-       Node : constant Node_Access := Key_Ops.Find (HT, Key);
- 
-    begin
-       if Checks and then Node = null then
-          raise Constraint_Error with "key not in map";
-       end if;
- 
-       declare
-          TC : constant Tamper_Counts_Access :=
-            HT.TC'Unrestricted_Access;
-       begin
-          return R : constant Reference_Type :=
-            (Element => Node.Element'Access,
-             Control => (Controlled with TC))
-          do
-             Lock (TC.all);
-          end return;
-       end;
-    end Reference;
- 
-    ---------------
-    -- Read_Node --
-    ---------------
- 
-    function Read_Node
-      (Stream : not null access Root_Stream_Type'Class) return Node_Access
-    is
-       Node : Node_Access := new Node_Type;
- 
-    begin
-       Key_Type'Read (Stream, Node.Key);
-       Element_Type'Read (Stream, Node.Element);
-       return Node;
- 
-    exception
-       when others =>
-          Free (Node);
-          raise;
-    end Read_Node;
- 
-    -------------
-    -- Replace --
-    -------------
- 
-    procedure Replace
-      (Container : in out Map;
-       Key       : Key_Type;
-       New_Item  : Element_Type)
-    is
-       Node : constant Node_Access := Key_Ops.Find (Container.HT, Key);
- 
-    begin
-       if Checks and then Node = null then
-          raise Constraint_Error with
-            "attempt to replace key not in map";
-       end if;
- 
-       TE_Check (Container.HT.TC);
- 
-       Node.Key := Key;
-       Node.Element := New_Item;
-    end Replace;
- 
-    ---------------------
-    -- Replace_Element --
-    ---------------------
- 
-    procedure Replace_Element
-      (Container : in out Map;
-       Position  : Cursor;
-       New_Item  : Element_Type)
-    is
-    begin
-       if Checks and then Position.Node = null then
-          raise Constraint_Error with
-            "Position cursor of Replace_Element equals No_Element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor of Replace_Element designates wrong map";
-       end if;
- 
-       TE_Check (Position.Container.HT.TC);
- 
-       pragma Assert (Vet (Position), "bad cursor in Replace_Element");
- 
-       Position.Node.Element := New_Item;
-    end Replace_Element;
- 
-    ----------------------
-    -- Reserve_Capacity --
-    ----------------------
- 
-    procedure Reserve_Capacity
-      (Container : in out Map;
-       Capacity  : Count_Type)
-    is
-    begin
-       HT_Ops.Reserve_Capacity (Container.HT, Capacity);
-    end Reserve_Capacity;
- 
-    --------------
-    -- Set_Next --
-    --------------
- 
-    procedure Set_Next (Node : Node_Access; Next : Node_Access) is
-    begin
-       Node.Next := Next;
-    end Set_Next;
- 
-    --------------------
-    -- Update_Element --
-    --------------------
- 
-    procedure Update_Element
-      (Container : in out Map;
-       Position  : Cursor;
-       Process   : not null access procedure (Key     : Key_Type;
-                                              Element : in out Element_Type))
-    is
-    begin
-       if Checks and then Position.Node = null then
-          raise Constraint_Error with
-            "Position cursor of Update_Element equals No_Element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor of Update_Element designates wrong map";
-       end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in Update_Element");
- 
-       declare
-          HT : Hash_Table_Type renames Container.HT;
-          Lock : With_Lock (HT.TC'Unrestricted_Access);
-          K : Key_Type renames Position.Node.Key;
-          E : Element_Type renames Position.Node.Element;
-       begin
-          Process (K, E);
-       end;
-    end Update_Element;
- 
-    ---------
-    -- Vet --
-    ---------
- 
-    function Vet (Position : Cursor) return Boolean is
-    begin
-       if Position.Node = null then
-          return Position.Container = null;
-       end if;
- 
-       if Position.Container = null then
-          return False;
-       end if;
- 
-       if Position.Node.Next = Position.Node then
-          return False;
-       end if;
- 
-       declare
-          HT : Hash_Table_Type renames Position.Container.HT;
-          X  : Node_Access;
- 
-       begin
-          if HT.Length = 0 then
-             return False;
-          end if;
- 
-          if HT.Buckets = null
-            or else HT.Buckets'Length = 0
-          then
-             return False;
-          end if;
- 
-          X := HT.Buckets (Key_Ops.Checked_Index (HT, Position.Node.Key));
- 
-          for J in 1 .. HT.Length loop
-             if X = Position.Node then
-                return True;
-             end if;
- 
-             if X = null then
-                return False;
-             end if;
- 
-             if X = X.Next then  --  to prevent unnecessary looping
-                return False;
-             end if;
- 
-             X := X.Next;
-          end loop;
- 
-          return False;
-       end;
-    end Vet;
- 
-    -----------
-    -- Write --
-    -----------
- 
-    procedure Write
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : Map)
-    is
-    begin
-       Write_Nodes (Stream, Container.HT);
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Cursor)
-    is
-    begin
-       raise Program_Error with "attempt to stream map cursor";
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Constant_Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Write;
- 
-    ----------------
-    -- Write_Node --
-    ----------------
- 
-    procedure Write_Node
-      (Stream : not null access Root_Stream_Type'Class;
-       Node   : Node_Access)
-    is
-    begin
-       Key_Type'Write (Stream, Node.Key);
-       Element_Type'Write (Stream, Node.Element);
-    end Write_Node;
- 
- end Ada.Containers.Hashed_Maps;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cohama.ads gcc-8.1.0/gcc/ada/a-cohama.ads
*** gcc-7.3.0/gcc/ada/a-cohama.ads	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-cohama.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,462 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --            A D A . C O N T A I N E R S . H A S H E D _ M A P S           --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, 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/>.                                          --
- --                                                                          --
- -- This unit was originally developed by Matthew J Heaney.                  --
- ------------------------------------------------------------------------------
- 
- with Ada.Iterator_Interfaces;
- 
- private with Ada.Containers.Hash_Tables;
- private with Ada.Finalization;
- private with Ada.Streams;
- 
- 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, Right : Key_Type) return Boolean;
-    with function "=" (Left, Right : Element_Type) return Boolean is <>;
- 
- package Ada.Containers.Hashed_Maps is
-    pragma Annotate (CodePeer, Skip_Analysis);
-    pragma Preelaborate;
-    pragma Remote_Types;
- 
-    type Map is tagged private
-    with
-       Constant_Indexing => Constant_Reference,
-       Variable_Indexing => Reference,
-       Default_Iterator  => Iterate,
-       Iterator_Element  => Element_Type;
- 
-    pragma Preelaborable_Initialization (Map);
- 
-    type Cursor is private;
-    pragma Preelaborable_Initialization (Cursor);
- 
-    Empty_Map : constant Map;
-    --  Map objects declared without an initialization expression are
-    --  initialized to the value Empty_Map.
- 
-    No_Element : constant Cursor;
-    --  Cursor objects declared without an initialization expression are
-    --  initialized to the value No_Element.
- 
-    function Has_Element (Position : Cursor) return Boolean;
-    --  Equivalent to Position /= No_Element
- 
-    package Map_Iterator_Interfaces is new
-      Ada.Iterator_Interfaces (Cursor, Has_Element);
- 
-    function "=" (Left, Right : Map) return Boolean;
-    --  For each key/element pair in Left, equality attempts to find the key in
-    --  Right; if a search fails the equality returns False. The search works by
-    --  calling Hash to find the bucket in the Right map that corresponds to the
-    --  Left key. If bucket is non-empty, then equality calls Equivalent_Keys
-    --  to compare the key (in Left) to the key of each node in the bucket (in
-    --  Right); if the keys are equivalent, then the equality test for this
-    --  key/element pair (in Left) completes by calling the element equality
-    --  operator to compare the element (in Left) to the element of the node
-    --  (in Right) whose key matched.
- 
-    function Capacity (Container : Map) return Count_Type;
-    --  Returns the current capacity of the map. Capacity is the maximum length
-    --  before which rehashing in guaranteed not to occur.
- 
-    procedure Reserve_Capacity (Container : in out Map; Capacity : Count_Type);
-    --  Adjusts the current capacity, by allocating a new buckets array. If the
-    --  requested capacity is less than the current capacity, then the capacity
-    --  is contracted (to a value not less than the current length). If the
-    --  requested capacity is greater than the current capacity, then the
-    --  capacity is expanded (to a value not less than what is requested). In
-    --  either case, the nodes are rehashed from the old buckets array onto the
-    --  new buckets array (Hash is called once for each existing key in order to
-    --  compute the new index), and then the old buckets array is deallocated.
- 
-    function Length (Container : Map) return Count_Type;
-    --  Returns the number of items in the map
- 
-    function Is_Empty (Container : Map) return Boolean;
-    --  Equivalent to Length (Container) = 0
- 
-    procedure Clear (Container : in out Map);
-    --  Removes all of the items from the map
- 
-    function Key (Position : Cursor) return Key_Type;
-    --  Returns the key of the node designated by the cursor
- 
-    function Element (Position : Cursor) return Element_Type;
-    --  Returns the element of the node designated by the cursor
- 
-    procedure Replace_Element
-      (Container : in out Map;
-       Position  : Cursor;
-       New_Item  : Element_Type);
-    --  Assigns the value New_Item to the element designated by the cursor
- 
-    procedure Query_Element
-      (Position : Cursor;
-       Process  : not null access
-                    procedure (Key : Key_Type; Element : Element_Type));
-    --  Calls Process with the key and element (both having only a constant
-    --  view) of the node designed by the cursor.
- 
-    procedure Update_Element
-      (Container : in out Map;
-       Position  : Cursor;
-       Process   : not null access
-                     procedure (Key : Key_Type; Element : in out Element_Type));
-    --  Calls Process with the key (with only a constant view) and element (with
-    --  a variable view) of the node designed by the cursor.
- 
-    type Constant_Reference_Type
-       (Element : not null access constant Element_Type) is private
-    with
-       Implicit_Dereference => Element;
- 
-    type Reference_Type (Element : not null access Element_Type) is private
-    with
-       Implicit_Dereference => Element;
- 
-    function Constant_Reference
-      (Container : aliased Map;
-       Position  : Cursor) return Constant_Reference_Type;
-    pragma Inline (Constant_Reference);
- 
-    function Reference
-      (Container : aliased in out Map;
-       Position  : Cursor) return Reference_Type;
-    pragma Inline (Reference);
- 
-    function Constant_Reference
-      (Container : aliased Map;
-       Key       : Key_Type) return Constant_Reference_Type;
-    pragma Inline (Constant_Reference);
- 
-    function Reference
-      (Container : aliased in out Map;
-       Key       : Key_Type) return Reference_Type;
-    pragma Inline (Reference);
- 
-    procedure Assign (Target : in out Map; Source : Map);
- 
-    function Copy (Source : Map; Capacity : Count_Type := 0) return Map;
- 
-    procedure Move (Target : in out Map; Source : in out Map);
-    --  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 Map;
-       Key       : Key_Type;
-       New_Item  : Element_Type;
-       Position  : out Cursor;
-       Inserted  : out Boolean);
-    --  Conditionally inserts New_Item into the map. If Key is already in the
-    --  map, then Inserted returns False and Position designates the node
-    --  containing the existing key/element pair (neither of which is modified).
-    --  If Key is not already in the map, the Inserted returns True and Position
-    --  designates the newly-inserted node container Key and New_Item. The
-    --  search for the key works as follows. Hash is called to determine Key's
-    --  bucket; if the bucket is non-empty, then Equivalent_Keys is called to
-    --  compare Key to each node in that bucket. If the bucket is empty, or
-    --  there were no matching keys in the bucket, the search "fails" and the
-    --  key/item pair is inserted in the map (and Inserted returns True);
-    --  otherwise, the search "succeeds" (and Inserted returns False).
- 
-    procedure Insert
-      (Container : in out Map;
-       Key       : Key_Type;
-       Position  : out Cursor;
-       Inserted  : out Boolean);
-    --  The same as the (conditional) Insert that accepts an element parameter,
-    --  with the difference that if Inserted returns True, then the element of
-    --  the newly-inserted node is initialized to its default value.
- 
-    procedure Insert
-      (Container : in out Map;
-       Key       : Key_Type;
-       New_Item  : Element_Type);
-    --  Attempts to insert Key into the map, performing the usual search (which
-    --  involves calling both Hash and Equivalent_Keys); if the search succeeds
-    --  (because Key is already in the map), then it 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
-    --  Key is not already in the map.)
- 
-    procedure Include
-      (Container : in out Map;
-       Key       : Key_Type;
-       New_Item  : Element_Type);
-    --  Attempts to insert Key into the map. If Key is already in the map, then
-    --  both the existing key and element are assigned the values of Key and
-    --  New_Item, respectively. (This version of Insert only raises an exception
-    --  if cursor tampering occurs. It is intended for use when you want to
-    --  insert the key/element pair in the map, and you don't care whether Key
-    --  is already present.)
- 
-    procedure Replace
-      (Container : in out Map;
-       Key       : Key_Type;
-       New_Item  : Element_Type);
-    --  Searches for Key in the map; if the search fails (because Key was not in
-    --  the map), then it raises Constraint_Error. Otherwise, both the existing
-    --  key and element are assigned the values of Key and New_Item rsp. (This
-    --  is similar to Insert, but with the opposite exception behavior. It is to
-    --  be used when you want to assert that Key is already in the map.)
- 
-    procedure Exclude (Container : in out Map; Key : Key_Type);
-    --  Searches for Key in the map, and if found, removes its node from the map
-    --  and then deallocates it. The search works as follows. The operation
-    --  calls Hash to determine the key's bucket; if the bucket is not empty, it
-    --  calls Equivalent_Keys to compare Key to each key in the bucket. (This is
-    --  the deletion analog of Include. It is intended for use when you want to
-    --  remove the item from the map, but don't care whether the key is already
-    --  in the map.)
- 
-    procedure Delete (Container : in out Map; Key : Key_Type);
-    --  Searches for Key in the map (which involves calling both Hash and
-    --  Equivalent_Keys). If the search fails, then the operation raises
-    --  Constraint_Error. Otherwise it removes the node from the map 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 map.)
- 
-    procedure Delete (Container : in out Map; Position : in out Cursor);
-    --  Removes the node designated by Position from the map, 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_Keys).
- 
-    function First (Container : Map) return Cursor;
-    --  Returns a cursor that designates the first non-empty bucket, by
-    --  searching from the beginning of the buckets array.
- 
-    function Next (Position : Cursor) return Cursor;
-    --  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 (Position : in out Cursor);
-    --  Equivalent to Position := Next (Position)
- 
-    function Find (Container : Map; Key : Key_Type) return Cursor;
-    --  Searches for Key in the map. Find calls Hash to determine the key's
-    --  bucket; if the bucket is not empty, it calls Equivalent_Keys to compare
-    --  Key to each key in the bucket. If the search succeeds, Find returns a
-    --  cursor designating the matching node; otherwise, it returns No_Element.
- 
-    function Contains (Container : Map; Key : Key_Type) return Boolean;
-    --  Equivalent to Find (Container, Key) /= No_Element
- 
-    function Element (Container : Map; Key : Key_Type) return Element_Type;
-    --  Equivalent to Element (Find (Container, Key))
- 
-    function Equivalent_Keys (Left, Right : Cursor) return Boolean;
-    --  Returns the result of calling Equivalent_Keys with the keys of the nodes
-    --  designated by cursors Left and Right.
- 
-    function Equivalent_Keys (Left : Cursor; Right : Key_Type) return Boolean;
-    --  Returns the result of calling Equivalent_Keys with key of the node
-    --  designated by Left and key Right.
- 
-    function Equivalent_Keys (Left : Key_Type; Right : Cursor) return Boolean;
-    --  Returns the result of calling Equivalent_Keys with key Left and the node
-    --  designated by Right.
- 
-    procedure Iterate
-      (Container : Map;
-       Process   : not null access procedure (Position : Cursor));
-    --  Calls Process for each node in the map
- 
-    function Iterate
-      (Container : Map) return Map_Iterator_Interfaces.Forward_Iterator'Class;
- 
- private
-    pragma Inline ("=");
-    pragma Inline (Length);
-    pragma Inline (Is_Empty);
-    pragma Inline (Clear);
-    pragma Inline (Key);
-    pragma Inline (Element);
-    pragma Inline (Move);
-    pragma Inline (Contains);
-    pragma Inline (Capacity);
-    pragma Inline (Reserve_Capacity);
-    pragma Inline (Has_Element);
-    pragma Inline (Equivalent_Keys);
-    pragma Inline (Next);
- 
-    type Node_Type;
-    type Node_Access is access Node_Type;
- 
-    type Node_Type is limited record
-       Key     : Key_Type;
-       Element : aliased Element_Type;
-       Next    : Node_Access;
-    end record;
- 
-    package HT_Types is
-      new Hash_Tables.Generic_Hash_Table_Types (Node_Type, Node_Access);
- 
-    type Map is new Ada.Finalization.Controlled with record
-       HT : HT_Types.Hash_Table_Type;
-    end record;
- 
-    overriding procedure Adjust (Container : in out Map);
- 
-    overriding procedure Finalize (Container : in out Map);
- 
-    use HT_Types, HT_Types.Implementation;
-    use Ada.Finalization;
-    use Ada.Streams;
- 
-    procedure Write
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : Map);
- 
-    for Map'Write use Write;
- 
-    procedure Read
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : out Map);
- 
-    for Map'Read use Read;
- 
-    type Map_Access is access all Map;
-    for Map_Access'Storage_Size use 0;
- 
-    type Cursor is record
-       Container : Map_Access;
-       Node      : Node_Access;
-    end record;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Cursor);
- 
-    for Cursor'Read use Read;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Cursor);
- 
-    for Cursor'Write use Write;
- 
-    subtype Reference_Control_Type is Implementation.Reference_Control_Type;
-    --  It is necessary to rename this here, so that the compiler can find it
- 
-    type Constant_Reference_Type
-      (Element : not null access constant Element_Type) is
-       record
-          Control : Reference_Control_Type :=
-            raise Program_Error with "uninitialized reference";
-          --  The RM says, "The default initialization of an object of
-          --  type Constant_Reference_Type or Reference_Type propagates
-          --  Program_Error."
-       end record;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Constant_Reference_Type);
- 
-    for Constant_Reference_Type'Write use Write;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Constant_Reference_Type);
- 
-    for Constant_Reference_Type'Read use Read;
- 
-    type Reference_Type
-      (Element : not null access Element_Type) is
-       record
-          Control : Reference_Control_Type :=
-            raise Program_Error with "uninitialized reference";
-          --  The RM says, "The default initialization of an object of
-          --  type Constant_Reference_Type or Reference_Type propagates
-          --  Program_Error."
-       end record;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Reference_Type);
- 
-    for Reference_Type'Write use Write;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       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 Sem_Ch5 for
-    --  details.
- 
-    function Pseudo_Reference
-      (Container : aliased Map'Class) return Reference_Control_Type;
-    pragma Inline (Pseudo_Reference);
-    --  Creates an object of type Reference_Control_Type pointing to the
-    --  container, and increments the Lock. Finalization of this object will
-    --  decrement the Lock.
- 
-    type Element_Access is access all Element_Type with
-      Storage_Size => 0;
- 
-    function Get_Element_Access
-      (Position : Cursor) return not null Element_Access;
-    --  Returns a pointer to the element designated by Position.
- 
-    Empty_Map : constant Map := (Controlled with others => <>);
- 
-    No_Element : constant Cursor := (Container => null, Node => null);
- 
-    type Iterator is new Limited_Controlled and
-      Map_Iterator_Interfaces.Forward_Iterator with
-    record
-       Container : Map_Access;
-    end record
-      with Disable_Controlled => not T_Check;
- 
-    overriding procedure Finalize (Object : in out Iterator);
- 
-    overriding function First (Object : Iterator) return Cursor;
- 
-    overriding function Next
-      (Object   : Iterator;
-       Position : Cursor) return Cursor;
- 
- end Ada.Containers.Hashed_Maps;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cohase.adb gcc-8.1.0/gcc/ada/a-cohase.adb
*** gcc-7.3.0/gcc/ada/a-cohase.adb	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-cohase.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,2184 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --           A D A . C O N T A I N E R S . H A S H E D _ S E T S            --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 Ada.Unchecked_Deallocation;
- 
- with Ada.Containers.Hash_Tables.Generic_Operations;
- pragma Elaborate_All (Ada.Containers.Hash_Tables.Generic_Operations);
- 
- with Ada.Containers.Hash_Tables.Generic_Keys;
- pragma Elaborate_All (Ada.Containers.Hash_Tables.Generic_Keys);
- 
- with Ada.Containers.Helpers; use Ada.Containers.Helpers;
- 
- with Ada.Containers.Prime_Numbers;
- 
- with System; use type System.Address;
- 
- package body Ada.Containers.Hashed_Sets is
- 
-    pragma Warnings (Off, "variable ""Busy*"" is not referenced");
-    pragma Warnings (Off, "variable ""Lock*"" is not referenced");
-    --  See comment in Ada.Containers.Helpers
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    procedure Assign (Node : Node_Access; Item : Element_Type);
-    pragma Inline (Assign);
- 
-    function Copy_Node (Source : Node_Access) return Node_Access;
-    pragma Inline (Copy_Node);
- 
-    function Equivalent_Keys
-      (Key  : Element_Type;
-       Node : Node_Access) return Boolean;
-    pragma Inline (Equivalent_Keys);
- 
-    function Find_Equal_Key
-      (R_HT   : Hash_Table_Type;
-       L_Node : Node_Access) return Boolean;
- 
-    function Find_Equivalent_Key
-      (R_HT   : Hash_Table_Type;
-       L_Node : Node_Access) return Boolean;
- 
-    procedure Free (X : in out Node_Access);
- 
-    function Hash_Node (Node : Node_Access) return Hash_Type;
-    pragma Inline (Hash_Node);
- 
-    procedure Insert
-      (HT       : in out Hash_Table_Type;
-       New_Item : Element_Type;
-       Node     : out Node_Access;
-       Inserted : out Boolean);
- 
-    function Is_In
-      (HT  : aliased in out Hash_Table_Type;
-       Key : Node_Access) return Boolean;
-    pragma Inline (Is_In);
- 
-    function Next (Node : Node_Access) return Node_Access;
-    pragma Inline (Next);
- 
-    function Read_Node (Stream : not null access Root_Stream_Type'Class)
-      return Node_Access;
-    pragma Inline (Read_Node);
- 
-    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;
-       Node   : Node_Access);
-    pragma Inline (Write_Node);
- 
-    --------------------------
-    -- Local Instantiations --
-    --------------------------
- 
-    package HT_Ops is new Hash_Tables.Generic_Operations
-      (HT_Types  => HT_Types,
-       Hash_Node => Hash_Node,
-       Next      => Next,
-       Set_Next  => Set_Next,
-       Copy_Node => Copy_Node,
-       Free      => Free);
- 
-    package Element_Keys is new Hash_Tables.Generic_Keys
-      (HT_Types        => HT_Types,
-       Next            => Next,
-       Set_Next        => Set_Next,
-       Key_Type        => Element_Type,
-       Hash            => Hash,
-       Equivalent_Keys => Equivalent_Keys);
- 
-    function Is_Equal is
-       new HT_Ops.Generic_Equal (Find_Equal_Key);
- 
-    function Is_Equivalent is
-       new HT_Ops.Generic_Equal (Find_Equivalent_Key);
- 
-    procedure Read_Nodes is
-       new HT_Ops.Generic_Read (Read_Node);
- 
-    procedure Replace_Element is
-       new Element_Keys.Generic_Replace_Element (Hash_Node, Assign);
- 
-    procedure Write_Nodes is
-       new HT_Ops.Generic_Write (Write_Node);
- 
-    ---------
-    -- "=" --
-    ---------
- 
-    function "=" (Left, Right : Set) return Boolean is
-    begin
-       return Is_Equal (Left.HT, Right.HT);
-    end "=";
- 
-    ------------
-    -- Adjust --
-    ------------
- 
-    procedure Adjust (Container : in out Set) is
-    begin
-       HT_Ops.Adjust (Container.HT);
-    end Adjust;
- 
-    ------------
-    -- Assign --
-    ------------
- 
-    procedure Assign (Node : Node_Access; Item : Element_Type) is
-    begin
-       Node.Element := Item;
-    end Assign;
- 
-    procedure Assign (Target : in out Set; Source : Set) is
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       Target.Clear;
-       Target.Union (Source);
-    end Assign;
- 
-    --------------
-    -- Capacity --
-    --------------
- 
-    function Capacity (Container : Set) return Count_Type is
-    begin
-       return HT_Ops.Capacity (Container.HT);
-    end Capacity;
- 
-    -----------
-    -- Clear --
-    -----------
- 
-    procedure Clear (Container : in out Set) is
-    begin
-       HT_Ops.Clear (Container.HT);
-    end Clear;
- 
-    ------------------------
-    -- Constant_Reference --
-    ------------------------
- 
-    function Constant_Reference
-      (Container : aliased Set;
-       Position  : Cursor) return Constant_Reference_Type
-    is
-    begin
-       if Checks and then Position.Container = null then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor designates wrong container";
-       end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in Constant_Reference");
- 
-       declare
-          HT : Hash_Table_Type renames Position.Container.all.HT;
-          TC : constant Tamper_Counts_Access :=
-            HT.TC'Unrestricted_Access;
-       begin
-          return R : constant Constant_Reference_Type :=
-            (Element => Position.Node.Element'Access,
-             Control => (Controlled with TC))
-          do
-             Lock (TC.all);
-          end return;
-       end;
-    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 : Count_Type;
- 
-    begin
-       if Capacity = 0 then
-          C := Source.Length;
- 
-       elsif Capacity >= Source.Length then
-          C := Capacity;
- 
-       elsif Checks then
-          raise Capacity_Error
-            with "Requested capacity is less than Source length";
-       end if;
- 
-       return Target : Set do
-          Target.Reserve_Capacity (C);
-          Target.Assign (Source);
-       end return;
-    end Copy;
- 
-    ---------------
-    -- Copy_Node --
-    ---------------
- 
-    function Copy_Node (Source : Node_Access) return Node_Access is
-    begin
-       return new Node_Type'(Element => Source.Element, Next => null);
-    end Copy_Node;
- 
-    ------------
-    -- Delete --
-    ------------
- 
-    procedure Delete
-      (Container : in out Set;
-       Item      : Element_Type)
-    is
-       X : Node_Access;
- 
-    begin
-       Element_Keys.Delete_Key_Sans_Free (Container.HT, Item, X);
- 
-       if Checks and then X = null then
-          raise Constraint_Error with "attempt to delete element not in set";
-       end if;
- 
-       Free (X);
-    end Delete;
- 
-    procedure Delete
-      (Container : in out Set;
-       Position  : in out Cursor)
-    is
-    begin
-       if Checks and then Position.Node = null then
-          raise Constraint_Error with "Position cursor equals No_Element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with "Position cursor designates wrong set";
-       end if;
- 
-       TC_Check (Container.HT.TC);
- 
-       pragma Assert (Vet (Position), "bad cursor in Delete");
- 
-       HT_Ops.Delete_Node_Sans_Free (Container.HT, Position.Node);
- 
-       Free (Position.Node);
-       Position.Container := null;
-    end Delete;
- 
-    ----------------
-    -- Difference --
-    ----------------
- 
-    procedure Difference
-      (Target : in out Set;
-       Source : Set)
-    is
-       Tgt_Node : Node_Access;
-       Src_HT   : Hash_Table_Type renames Source'Unrestricted_Access.HT;
- 
-    begin
-       if Target'Address = Source'Address then
-          Clear (Target);
-          return;
-       end if;
- 
-       if Src_HT.Length = 0 then
-          return;
-       end if;
- 
-       TC_Check (Target.HT.TC);
- 
-       if Src_HT.Length < Target.HT.Length then
-          declare
-             Src_Node : Node_Access;
- 
-          begin
-             Src_Node := HT_Ops.First (Src_HT);
-             while Src_Node /= null loop
-                Tgt_Node := Element_Keys.Find (Target.HT, Src_Node.Element);
- 
-                if Tgt_Node /= null then
-                   HT_Ops.Delete_Node_Sans_Free (Target.HT, Tgt_Node);
-                   Free (Tgt_Node);
-                end if;
- 
-                Src_Node := HT_Ops.Next (Src_HT, Src_Node);
-             end loop;
-          end;
- 
-       else
-          Tgt_Node := HT_Ops.First (Target.HT);
-          while Tgt_Node /= null loop
-             if Is_In (Src_HT, Tgt_Node) then
-                declare
-                   X : Node_Access := Tgt_Node;
-                begin
-                   Tgt_Node := HT_Ops.Next (Target.HT, Tgt_Node);
-                   HT_Ops.Delete_Node_Sans_Free (Target.HT, X);
-                   Free (X);
-                end;
- 
-             else
-                Tgt_Node := HT_Ops.Next (Target.HT, Tgt_Node);
-             end if;
-          end loop;
-       end if;
-    end Difference;
- 
-    function Difference (Left, Right : Set) return Set is
-       Left_HT  : Hash_Table_Type renames Left'Unrestricted_Access.HT;
-       Right_HT : Hash_Table_Type renames Right'Unrestricted_Access.HT;
-       Buckets  : HT_Types.Buckets_Access;
-       Length   : Count_Type;
- 
-    begin
-       if Left'Address = Right'Address then
-          return Empty_Set;
-       end if;
- 
-       if Left_HT.Length = 0 then
-          return Empty_Set;
-       end if;
- 
-       if Right_HT.Length = 0 then
-          return Left;
-       end if;
- 
-       declare
-          Size : constant Hash_Type := Prime_Numbers.To_Prime (Left.Length);
-       begin
-          Buckets := HT_Ops.New_Buckets (Length => Size);
-       end;
- 
-       Length := 0;
- 
-       Iterate_Left : declare
-          procedure Process (L_Node : Node_Access);
- 
-          procedure Iterate is
-             new HT_Ops.Generic_Iteration (Process);
- 
-          -------------
-          -- Process --
-          -------------
- 
-          procedure Process (L_Node : Node_Access) is
-          begin
-             if not Is_In (Right_HT, L_Node) then
-                declare
-                   --  Per AI05-0022, the container implementation is required
-                   --  to detect element tampering by a generic actual
-                   --  subprogram, hence the use of Checked_Index instead of a
-                   --  simple invocation of generic formal Hash.
- 
-                   J : constant Hash_Type :=
-                     HT_Ops.Checked_Index (Left_HT, Buckets.all, L_Node);
- 
-                   Bucket : Node_Access renames Buckets (J);
- 
-                begin
-                   Bucket := new Node_Type'(L_Node.Element, Bucket);
-                end;
- 
-                Length := Length + 1;
-             end if;
-          end Process;
- 
-       --  Start of processing for Iterate_Left
- 
-       begin
-          Iterate (Left_HT);
-       exception
-          when others =>
-             HT_Ops.Free_Hash_Table (Buckets);
-             raise;
-       end Iterate_Left;
- 
-       return (Controlled with HT => (Buckets, Length, (Busy => 0, Lock => 0)));
-    end Difference;
- 
-    -------------
-    -- Element --
-    -------------
- 
-    function Element (Position : Cursor) return Element_Type is
-    begin
-       if Checks and then Position.Node = null then
-          raise Constraint_Error with "Position cursor equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in function Element");
- 
-       return Position.Node.Element;
-    end Element;
- 
-    ---------------------
-    -- Equivalent_Sets --
-    ---------------------
- 
-    function Equivalent_Sets (Left, Right : Set) return Boolean is
-    begin
-       return Is_Equivalent (Left.HT, Right.HT);
-    end Equivalent_Sets;
- 
-    -------------------------
-    -- Equivalent_Elements --
-    -------------------------
- 
-    function Equivalent_Elements (Left, Right : Cursor)
-      return Boolean is
-    begin
-       if Checks and then Left.Node = null then
-          raise Constraint_Error with
-            "Left cursor of Equivalent_Elements equals No_Element";
-       end if;
- 
-       if Checks and then Right.Node = null then
-          raise Constraint_Error with
-            "Right cursor of Equivalent_Elements equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Left), "bad Left cursor in Equivalent_Elements");
-       pragma Assert (Vet (Right), "bad Right cursor in Equivalent_Elements");
- 
-       --  AI05-0022 requires that a container implementation detect element
-       --  tampering by a generic actual subprogram. However, the following case
-       --  falls outside the scope of that AI. Randy Brukardt explained on the
-       --  ARG list on 2013/02/07 that:
- 
-       --  (Begin Quote):
-       --  But for an operation like "<" [the ordered set analog of
-       --  Equivalent_Elements], there is no need to "dereference" a cursor
-       --  after the call to the generic formal parameter function, so nothing
-       --  bad could happen if tampering is undetected. And the operation can
-       --  safely return a result without a problem even if an element is
-       --  deleted from the container.
-       --  (End Quote).
- 
-       return Equivalent_Elements (Left.Node.Element, Right.Node.Element);
-    end Equivalent_Elements;
- 
-    function Equivalent_Elements (Left : Cursor; Right : Element_Type)
-      return Boolean is
-    begin
-       if Checks and then Left.Node = null then
-          raise Constraint_Error with
-            "Left cursor of Equivalent_Elements equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Left), "Left cursor in Equivalent_Elements is bad");
- 
-       return Equivalent_Elements (Left.Node.Element, Right);
-    end Equivalent_Elements;
- 
-    function Equivalent_Elements (Left : Element_Type; Right : Cursor)
-      return Boolean is
-    begin
-       if Checks and then Right.Node = null then
-          raise Constraint_Error with
-            "Right cursor of Equivalent_Elements equals No_Element";
-       end if;
- 
-       pragma Assert
-         (Vet (Right),
-          "Right cursor of Equivalent_Elements is bad");
- 
-       return Equivalent_Elements (Left, Right.Node.Element);
-    end Equivalent_Elements;
- 
-    ---------------------
-    -- Equivalent_Keys --
-    ---------------------
- 
-    function Equivalent_Keys (Key : Element_Type; Node : Node_Access)
-      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 : Node_Access;
-    begin
-       Element_Keys.Delete_Key_Sans_Free (Container.HT, Item, X);
-       Free (X);
-    end Exclude;
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    procedure Finalize (Container : in out Set) is
-    begin
-       HT_Ops.Finalize (Container.HT);
-    end Finalize;
- 
-    procedure Finalize (Object : in out Iterator) is
-    begin
-       if Object.Container /= null then
-          Unbusy (Object.Container.HT.TC);
-       end if;
-    end Finalize;
- 
-    ----------
-    -- Find --
-    ----------
- 
-    function Find
-      (Container : Set;
-       Item      : Element_Type) return Cursor
-    is
-       HT   : Hash_Table_Type renames Container'Unrestricted_Access.HT;
-       Node : constant Node_Access := Element_Keys.Find (HT, Item);
- 
-    begin
-       if Node = null then
-          return No_Element;
-       end if;
- 
-       return Cursor'(Container'Unrestricted_Access, Node);
-    end Find;
- 
-    --------------------
-    -- Find_Equal_Key --
-    --------------------
- 
-    function Find_Equal_Key
-      (R_HT   : Hash_Table_Type;
-       L_Node : Node_Access) return Boolean
-    is
-       R_Index : constant Hash_Type :=
-         Element_Keys.Index (R_HT, L_Node.Element);
- 
-       R_Node  : Node_Access := R_HT.Buckets (R_Index);
- 
-    begin
-       loop
-          if R_Node = null then
-             return False;
-          end if;
- 
-          if L_Node.Element = R_Node.Element then
-             return True;
-          end if;
- 
-          R_Node := Next (R_Node);
-       end loop;
-    end Find_Equal_Key;
- 
-    -------------------------
-    -- Find_Equivalent_Key --
-    -------------------------
- 
-    function Find_Equivalent_Key
-      (R_HT   : Hash_Table_Type;
-       L_Node : Node_Access) return Boolean
-    is
-       R_Index : constant Hash_Type :=
-         Element_Keys.Index (R_HT, L_Node.Element);
- 
-       R_Node  : Node_Access := R_HT.Buckets (R_Index);
- 
-    begin
-       loop
-          if R_Node = null then
-             return False;
-          end if;
- 
-          if Equivalent_Elements (L_Node.Element, R_Node.Element) then
-             return True;
-          end if;
- 
-          R_Node := Next (R_Node);
-       end loop;
-    end Find_Equivalent_Key;
- 
-    -----------
-    -- First --
-    -----------
- 
-    function First (Container : Set) return Cursor is
-       Node : constant Node_Access := HT_Ops.First (Container.HT);
- 
-    begin
-       if Node = null then
-          return No_Element;
-       end if;
- 
-       return Cursor'(Container'Unrestricted_Access, Node);
-    end First;
- 
-    function First (Object : Iterator) return Cursor is
-    begin
-       return Object.Container.First;
-    end First;
- 
-    ----------
-    -- Free --
-    ----------
- 
-    procedure Free (X : in out Node_Access) is
-       procedure Deallocate is
-          new Ada.Unchecked_Deallocation (Node_Type, Node_Access);
- 
-    begin
-       if X /= null then
-          X.Next := X;     --  detect mischief (in Vet)
-          Deallocate (X);
-       end if;
-    end Free;
- 
-    ------------------------
-    -- Get_Element_Access --
-    ------------------------
- 
-    function Get_Element_Access
-      (Position : Cursor) return not null Element_Access is
-    begin
-       return Position.Node.Element'Access;
-    end Get_Element_Access;
- 
-    -----------------
-    -- Has_Element --
-    -----------------
- 
-    function Has_Element (Position : Cursor) return Boolean is
-    begin
-       pragma Assert (Vet (Position), "bad cursor in Has_Element");
-       return Position.Node /= null;
-    end Has_Element;
- 
-    ---------------
-    -- Hash_Node --
-    ---------------
- 
-    function Hash_Node (Node : Node_Access) return Hash_Type is
-    begin
-       return Hash (Node.Element);
-    end Hash_Node;
- 
-    -------------
-    -- 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
-          TE_Check (Container.HT.TC);
- 
-          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.HT, New_Item, Position.Node, Inserted);
-       Position.Container := Container'Unchecked_Access;
-    end Insert;
- 
-    procedure Insert
-      (Container : in out Set;
-       New_Item  : Element_Type)
-    is
-       Position : Cursor;
-       pragma Unreferenced (Position);
- 
-       Inserted : Boolean;
- 
-    begin
-       Insert (Container, New_Item, Position, Inserted);
- 
-       if Checks and then not Inserted then
-          raise Constraint_Error with
-            "attempt to insert element already in set";
-       end if;
-    end Insert;
- 
-    procedure Insert
-      (HT       : in out Hash_Table_Type;
-       New_Item : Element_Type;
-       Node     : out Node_Access;
-       Inserted : out Boolean)
-    is
-       function New_Node (Next : Node_Access) return Node_Access;
-       pragma Inline (New_Node);
- 
-       procedure Local_Insert is
-         new Element_Keys.Generic_Conditional_Insert (New_Node);
- 
-       --------------
-       -- New_Node --
-       --------------
- 
-       function New_Node (Next : Node_Access) return Node_Access is
-       begin
-          return new Node_Type'(New_Item, Next);
-       end New_Node;
- 
-    --  Start of processing for Insert
- 
-    begin
-       if HT_Ops.Capacity (HT) = 0 then
-          HT_Ops.Reserve_Capacity (HT, 1);
-       end if;
- 
-       TC_Check (HT.TC);
- 
-       Local_Insert (HT, New_Item, Node, Inserted);
- 
-       if Inserted
-         and then HT.Length > HT_Ops.Capacity (HT)
-       then
-          HT_Ops.Reserve_Capacity (HT, HT.Length);
-       end if;
-    end Insert;
- 
-    ------------------
-    -- Intersection --
-    ------------------
- 
-    procedure Intersection
-      (Target : in out Set;
-       Source : Set)
-    is
-       Src_HT   : Hash_Table_Type renames Source'Unrestricted_Access.HT;
-       Tgt_Node : Node_Access;
- 
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       if Source.HT.Length = 0 then
-          Clear (Target);
-          return;
-       end if;
- 
-       TC_Check (Target.HT.TC);
- 
-       Tgt_Node := HT_Ops.First (Target.HT);
-       while Tgt_Node /= null loop
-          if Is_In (Src_HT, Tgt_Node) then
-             Tgt_Node := HT_Ops.Next (Target.HT, Tgt_Node);
- 
-          else
-             declare
-                X : Node_Access := Tgt_Node;
-             begin
-                Tgt_Node := HT_Ops.Next (Target.HT, Tgt_Node);
-                HT_Ops.Delete_Node_Sans_Free (Target.HT, X);
-                Free (X);
-             end;
-          end if;
-       end loop;
-    end Intersection;
- 
-    function Intersection (Left, Right : Set) return Set is
-       Left_HT  : Hash_Table_Type renames Left'Unrestricted_Access.HT;
-       Right_HT : Hash_Table_Type renames Right'Unrestricted_Access.HT;
-       Buckets  : HT_Types.Buckets_Access;
-       Length   : Count_Type;
- 
-    begin
-       if Left'Address = Right'Address then
-          return Left;
-       end if;
- 
-       Length := Count_Type'Min (Left.Length, Right.Length);
- 
-       if Length = 0 then
-          return Empty_Set;
-       end if;
- 
-       declare
-          Size : constant Hash_Type := Prime_Numbers.To_Prime (Length);
-       begin
-          Buckets := HT_Ops.New_Buckets (Length => Size);
-       end;
- 
-       Length := 0;
- 
-       Iterate_Left : declare
-          procedure Process (L_Node : Node_Access);
- 
-          procedure Iterate is
-             new HT_Ops.Generic_Iteration (Process);
- 
-          -------------
-          -- Process --
-          -------------
- 
-          procedure Process (L_Node : Node_Access) is
-          begin
-             if Is_In (Right_HT, L_Node) then
-                declare
-                   --  Per AI05-0022, the container implementation is required
-                   --  to detect element tampering by a generic actual
-                   --  subprogram, hence the use of Checked_Index instead of a
-                   --  simple invocation of generic formal Hash.
- 
-                   J : constant Hash_Type :=
-                     HT_Ops.Checked_Index (Left_HT, Buckets.all, L_Node);
- 
-                   Bucket : Node_Access renames Buckets (J);
- 
-                begin
-                   Bucket := new Node_Type'(L_Node.Element, Bucket);
-                end;
- 
-                Length := Length + 1;
-             end if;
-          end Process;
- 
-       --  Start of processing for Iterate_Left
- 
-       begin
-          Iterate (Left_HT);
-       exception
-          when others =>
-             HT_Ops.Free_Hash_Table (Buckets);
-             raise;
-       end Iterate_Left;
- 
-       return (Controlled with HT => (Buckets, Length, (Busy => 0, Lock => 0)));
-    end Intersection;
- 
-    --------------
-    -- Is_Empty --
-    --------------
- 
-    function Is_Empty (Container : Set) return Boolean is
-    begin
-       return Container.HT.Length = 0;
-    end Is_Empty;
- 
-    -----------
-    -- Is_In --
-    -----------
- 
-    function Is_In
-      (HT : aliased in out Hash_Table_Type;
-       Key : Node_Access) return Boolean
-    is
-    begin
-       return Element_Keys.Find (HT, Key.Element) /= null;
-    end Is_In;
- 
-    ---------------
-    -- Is_Subset --
-    ---------------
- 
-    function Is_Subset (Subset : Set; Of_Set : Set) return Boolean is
-       Subset_HT   : Hash_Table_Type renames Subset'Unrestricted_Access.HT;
-       Of_Set_HT   : Hash_Table_Type renames Of_Set'Unrestricted_Access.HT;
-       Subset_Node : Node_Access;
- 
-    begin
-       if Subset'Address = Of_Set'Address then
-          return True;
-       end if;
- 
-       if Subset.Length > Of_Set.Length then
-          return False;
-       end if;
- 
-       Subset_Node := HT_Ops.First (Subset_HT);
-       while Subset_Node /= null loop
-          if not Is_In (Of_Set_HT, Subset_Node) then
-             return False;
-          end if;
-          Subset_Node := HT_Ops.Next (Subset_HT, Subset_Node);
-       end loop;
- 
-       return True;
-    end Is_Subset;
- 
-    -------------
-    -- Iterate --
-    -------------
- 
-    procedure Iterate
-      (Container : Set;
-       Process   : not null access procedure (Position : Cursor))
-    is
-       procedure Process_Node (Node : Node_Access);
-       pragma Inline (Process_Node);
- 
-       procedure Iterate is
-          new HT_Ops.Generic_Iteration (Process_Node);
- 
-       ------------------
-       -- Process_Node --
-       ------------------
- 
-       procedure Process_Node (Node : Node_Access) is
-       begin
-          Process (Cursor'(Container'Unrestricted_Access, Node));
-       end Process_Node;
- 
-       Busy : With_Busy (Container.HT.TC'Unrestricted_Access);
- 
-    --  Start of processing for Iterate
- 
-    begin
-       Iterate (Container.HT);
-    end Iterate;
- 
-    function Iterate
-      (Container : Set) return Set_Iterator_Interfaces.Forward_Iterator'Class
-    is
-    begin
-       Busy (Container.HT.TC'Unrestricted_Access.all);
-       return It : constant Iterator :=
-          Iterator'(Limited_Controlled with
-               Container => Container'Unrestricted_Access);
-    end Iterate;
- 
-    ------------
-    -- Length --
-    ------------
- 
-    function Length (Container : Set) return Count_Type is
-    begin
-       return Container.HT.Length;
-    end Length;
- 
-    ----------
-    -- Move --
-    ----------
- 
-    procedure Move (Target : in out Set; Source : in out Set) is
-    begin
-       HT_Ops.Move (Target => Target.HT, Source => Source.HT);
-    end Move;
- 
-    ----------
-    -- Next --
-    ----------
- 
-    function Next (Node : Node_Access) return Node_Access is
-    begin
-       return Node.Next;
-    end Next;
- 
-    function Next (Position : Cursor) return Cursor is
-    begin
-       if Position.Node = null then
-          return No_Element;
-       end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in Next");
- 
-       declare
-          HT   : Hash_Table_Type renames Position.Container.HT;
-          Node : constant Node_Access := HT_Ops.Next (HT, Position.Node);
- 
-       begin
-          if Node = null then
-             return No_Element;
-          end if;
- 
-          return Cursor'(Position.Container, Node);
-       end;
-    end Next;
- 
-    procedure Next (Position : in out Cursor) is
-    begin
-       Position := Next (Position);
-    end Next;
- 
-    function Next
-      (Object   : Iterator;
-       Position : Cursor) return Cursor
-    is
-    begin
-       if Position.Container = null then
-          return No_Element;
-       end if;
- 
-       if Checks and then Position.Container /= Object.Container then
-          raise Program_Error with
-            "Position cursor of Next designates wrong set";
-       end if;
- 
-       return Next (Position);
-    end Next;
- 
-    -------------
-    -- Overlap --
-    -------------
- 
-    function Overlap (Left, Right : Set) return Boolean is
-       Left_HT   : Hash_Table_Type renames Left'Unrestricted_Access.HT;
-       Right_HT  : Hash_Table_Type renames Right'Unrestricted_Access.HT;
-       Left_Node : Node_Access;
- 
-    begin
-       if Right.Length = 0 then
-          return False;
-       end if;
- 
-       if Left'Address = Right'Address then
-          return True;
-       end if;
- 
-       Left_Node := HT_Ops.First (Left_HT);
-       while Left_Node /= null loop
-          if Is_In (Right_HT, Left_Node) then
-             return True;
-          end if;
-          Left_Node := HT_Ops.Next (Left_HT, Left_Node);
-       end loop;
- 
-       return False;
-    end Overlap;
- 
-    ----------------------
-    -- Pseudo_Reference --
-    ----------------------
- 
-    function Pseudo_Reference
-      (Container : aliased Set'Class) return Reference_Control_Type
-    is
-       TC : constant Tamper_Counts_Access :=
-         Container.HT.TC'Unrestricted_Access;
-    begin
-       return R : constant Reference_Control_Type := (Controlled with TC) do
-          Lock (TC.all);
-       end return;
-    end Pseudo_Reference;
- 
-    -------------------
-    -- Query_Element --
-    -------------------
- 
-    procedure Query_Element
-      (Position : Cursor;
-       Process  : not null access procedure (Element : Element_Type))
-    is
-    begin
-       if Checks and then Position.Node = null then
-          raise Constraint_Error with
-            "Position cursor of Query_Element equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in Query_Element");
- 
-       declare
-          HT : Hash_Table_Type renames Position.Container.HT;
-          Lock : With_Lock (HT.TC'Unrestricted_Access);
-       begin
-          Process (Position.Node.Element);
-       end;
-    end Query_Element;
- 
-    ----------
-    -- Read --
-    ----------
- 
-    procedure Read
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : out Set)
-    is
-    begin
-       Read_Nodes (Stream, Container.HT);
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Cursor)
-    is
-    begin
-       raise Program_Error with "attempt to stream set cursor";
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Constant_Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Read;
- 
-    ---------------
-    -- Read_Node --
-    ---------------
- 
-    function Read_Node (Stream : not null access Root_Stream_Type'Class)
-      return Node_Access
-    is
-       Node : Node_Access := new Node_Type;
-    begin
-       Element_Type'Read (Stream, Node.Element);
-       return Node;
-    exception
-       when others =>
-          Free (Node);
-          raise;
-    end Read_Node;
- 
-    -------------
-    -- Replace --
-    -------------
- 
-    procedure Replace
-      (Container : in out Set;
-       New_Item  : Element_Type)
-    is
-       Node : constant Node_Access :=
-         Element_Keys.Find (Container.HT, New_Item);
- 
-    begin
-       if Checks and then Node = null then
-          raise Constraint_Error with
-            "attempt to replace element not in set";
-       end if;
- 
-       TE_Check (Container.HT.TC);
- 
-       Node.Element := New_Item;
-    end Replace;
- 
-    procedure Replace_Element
-      (Container : in out Set;
-       Position  : Cursor;
-       New_Item  : Element_Type)
-    is
-    begin
-       if Checks and then Position.Node = null then
-          raise Constraint_Error with
-            "Position cursor equals No_Element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor designates wrong set";
-       end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in Replace_Element");
- 
-       Replace_Element (Container.HT, Position.Node, New_Item);
-    end Replace_Element;
- 
-    ----------------------
-    -- Reserve_Capacity --
-    ----------------------
- 
-    procedure Reserve_Capacity
-      (Container : in out Set;
-       Capacity  : Count_Type)
-    is
-    begin
-       HT_Ops.Reserve_Capacity (Container.HT, Capacity);
-    end Reserve_Capacity;
- 
-    --------------
-    -- Set_Next --
-    --------------
- 
-    procedure Set_Next (Node : Node_Access; Next : Node_Access) is
-    begin
-       Node.Next := Next;
-    end Set_Next;
- 
-    --------------------------
-    -- Symmetric_Difference --
-    --------------------------
- 
-    procedure Symmetric_Difference
-      (Target : in out Set;
-       Source : Set)
-    is
-       Tgt_HT : Hash_Table_Type renames Target.HT;
-       Src_HT : Hash_Table_Type renames Source.HT'Unrestricted_Access.all;
-    begin
-       if Target'Address = Source'Address then
-          Clear (Target);
-          return;
-       end if;
- 
-       TC_Check (Tgt_HT.TC);
- 
-       declare
-          N : constant Count_Type := Target.Length + Source.Length;
-       begin
-          if N > HT_Ops.Capacity (Tgt_HT) then
-             HT_Ops.Reserve_Capacity (Tgt_HT, N);
-          end if;
-       end;
- 
-       if Target.Length = 0 then
-          Iterate_Source_When_Empty_Target : declare
-             procedure Process (Src_Node : Node_Access);
- 
-             procedure Iterate is new HT_Ops.Generic_Iteration (Process);
- 
-             -------------
-             -- Process --
-             -------------
- 
-             procedure Process (Src_Node : Node_Access) is
-                E : Element_Type renames Src_Node.Element;
-                B : Buckets_Type renames Tgt_HT.Buckets.all;
-                J : constant Hash_Type := Hash (E) mod B'Length;
-                N : Count_Type renames Tgt_HT.Length;
- 
-             begin
-                B (J) := new Node_Type'(E, B (J));
-                N := N + 1;
-             end Process;
- 
-             --  Per AI05-0022, the container implementation is required to
-             --  detect element tampering by a generic actual subprogram.
- 
-             Lock_Tgt : With_Lock (Tgt_HT.TC'Unrestricted_Access);
-             Lock_Src : With_Lock (Src_HT.TC'Unrestricted_Access);
- 
-          --  Start of processing for Iterate_Source_When_Empty_Target
- 
-          begin
-             Iterate (Src_HT);
-          end Iterate_Source_When_Empty_Target;
- 
-       else
-          Iterate_Source : declare
-             procedure Process (Src_Node : Node_Access);
- 
-             procedure Iterate is
-                new HT_Ops.Generic_Iteration (Process);
- 
-             -------------
-             -- Process --
-             -------------
- 
-             procedure Process (Src_Node : Node_Access) is
-                E : Element_Type renames Src_Node.Element;
-                B : Buckets_Type renames Tgt_HT.Buckets.all;
-                J : constant Hash_Type := Hash (E) mod B'Length;
-                N : Count_Type renames Tgt_HT.Length;
- 
-             begin
-                if B (J) = null then
-                   B (J) := new Node_Type'(E, null);
-                   N := N + 1;
- 
-                elsif Equivalent_Elements (E, B (J).Element) then
-                   declare
-                      X : Node_Access := B (J);
-                   begin
-                      B (J) := B (J).Next;
-                      N := N - 1;
-                      Free (X);
-                   end;
- 
-                else
-                   declare
-                      Prev : Node_Access := B (J);
-                      Curr : Node_Access := Prev.Next;
- 
-                   begin
-                      while Curr /= null loop
-                         if Equivalent_Elements (E, Curr.Element) then
-                            Prev.Next := Curr.Next;
-                            N := N - 1;
-                            Free (Curr);
-                            return;
-                         end if;
- 
-                         Prev := Curr;
-                         Curr := Prev.Next;
-                      end loop;
- 
-                      B (J) := new Node_Type'(E, B (J));
-                      N := N + 1;
-                   end;
-                end if;
-             end Process;
- 
-             --  Per AI05-0022, the container implementation is required to
-             --  detect element tampering by a generic actual subprogram.
- 
-             Lock_Tgt : With_Lock (Tgt_HT.TC'Unrestricted_Access);
-             Lock_Src : With_Lock (Src_HT.TC'Unrestricted_Access);
- 
-          --  Start of processing for Iterate_Source
- 
-          begin
-             Iterate (Src_HT);
-          end Iterate_Source;
-       end if;
-    end Symmetric_Difference;
- 
-    function Symmetric_Difference (Left, Right : Set) return Set is
-       Left_HT  : Hash_Table_Type renames Left'Unrestricted_Access.HT;
-       Right_HT : Hash_Table_Type renames Right'Unrestricted_Access.HT;
-       Buckets  : HT_Types.Buckets_Access;
-       Length   : Count_Type;
- 
-    begin
-       if Left'Address = Right'Address then
-          return Empty_Set;
-       end if;
- 
-       if Right.Length = 0 then
-          return Left;
-       end if;
- 
-       if Left.Length = 0 then
-          return Right;
-       end if;
- 
-       declare
-          Size : constant Hash_Type :=
-            Prime_Numbers.To_Prime (Left.Length + Right.Length);
-       begin
-          Buckets := HT_Ops.New_Buckets (Length => Size);
-       end;
- 
-       Length := 0;
- 
-       Iterate_Left : declare
-          procedure Process (L_Node : Node_Access);
- 
-          procedure Iterate is
-             new HT_Ops.Generic_Iteration (Process);
- 
-          -------------
-          -- Process --
-          -------------
- 
-          procedure Process (L_Node : Node_Access) is
-          begin
-             if not Is_In (Right_HT, L_Node) then
-                declare
-                   E : Element_Type renames L_Node.Element;
- 
-                   --  Per AI05-0022, the container implementation is required
-                   --  to detect element tampering by a generic actual
-                   --  subprogram, hence the use of Checked_Index instead of a
-                   --  simple invocation of generic formal Hash.
- 
-                   J : constant Hash_Type :=
-                     HT_Ops.Checked_Index (Left_HT, Buckets.all, L_Node);
- 
-                begin
-                   Buckets (J) := new Node_Type'(E, Buckets (J));
-                   Length := Length + 1;
-                end;
-             end if;
-          end Process;
- 
-       --  Start of processing for Iterate_Left
- 
-       begin
-          Iterate (Left_HT);
- 
-       exception
-          when others =>
-             HT_Ops.Free_Hash_Table (Buckets);
-             raise;
-       end Iterate_Left;
- 
-       Iterate_Right : declare
-          procedure Process (R_Node : Node_Access);
- 
-          procedure Iterate is
-             new HT_Ops.Generic_Iteration (Process);
- 
-          -------------
-          -- Process --
-          -------------
- 
-          procedure Process (R_Node : Node_Access) is
-          begin
-             if not Is_In (Left_HT, R_Node) then
-                declare
-                   E : Element_Type renames R_Node.Element;
- 
-                   --  Per AI05-0022, the container implementation is required
-                   --  to detect element tampering by a generic actual
-                   --  subprogram, hence the use of Checked_Index instead of a
-                   --  simple invocation of generic formal Hash.
- 
-                   J : constant Hash_Type :=
-                     HT_Ops.Checked_Index (Right_HT, Buckets.all, R_Node);
- 
-                begin
-                   Buckets (J) := new Node_Type'(E, Buckets (J));
-                   Length := Length + 1;
-                end;
-             end if;
-          end Process;
- 
-       --  Start of processing for Iterate_Right
- 
-       begin
-          Iterate (Right_HT);
- 
-       exception
-          when others =>
-             HT_Ops.Free_Hash_Table (Buckets);
-             raise;
-       end Iterate_Right;
- 
-       return (Controlled with HT => (Buckets, Length, (Busy => 0, Lock => 0)));
-    end Symmetric_Difference;
- 
-    ------------
-    -- To_Set --
-    ------------
- 
-    function To_Set (New_Item : Element_Type) return Set is
-       HT : Hash_Table_Type;
- 
-       Node     : Node_Access;
-       Inserted : Boolean;
-       pragma Unreferenced (Node, Inserted);
- 
-    begin
-       Insert (HT, New_Item, Node, Inserted);
-       return Set'(Controlled with HT);
-    end To_Set;
- 
-    -----------
-    -- Union --
-    -----------
- 
-    procedure Union
-      (Target : in out Set;
-       Source : Set)
-    is
-       procedure Process (Src_Node : Node_Access);
- 
-       procedure Iterate is
-          new HT_Ops.Generic_Iteration (Process);
- 
-       -------------
-       -- Process --
-       -------------
- 
-       procedure Process (Src_Node : Node_Access) is
-          function New_Node (Next : Node_Access) return Node_Access;
-          pragma Inline (New_Node);
- 
-          procedure Insert is
-             new Element_Keys.Generic_Conditional_Insert (New_Node);
- 
-          --------------
-          -- New_Node --
-          --------------
- 
-          function New_Node (Next : Node_Access) return Node_Access is
-             Node : constant Node_Access :=
-               new Node_Type'(Src_Node.Element, Next);
-          begin
-             return Node;
-          end New_Node;
- 
-          Tgt_Node : Node_Access;
-          Success  : Boolean;
-          pragma Unreferenced (Tgt_Node, Success);
- 
-       --  Start of processing for Process
- 
-       begin
-          Insert (Target.HT, Src_Node.Element, Tgt_Node, Success);
-       end Process;
- 
-    --  Start of processing for Union
- 
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       TC_Check (Target.HT.TC);
- 
-       declare
-          N : constant Count_Type := Target.Length + Source.Length;
-       begin
-          if N > HT_Ops.Capacity (Target.HT) then
-             HT_Ops.Reserve_Capacity (Target.HT, N);
-          end if;
-       end;
- 
-       Iterate (Source.HT);
-    end Union;
- 
-    function Union (Left, Right : Set) return Set is
-       Left_HT  : Hash_Table_Type renames Left.HT'Unrestricted_Access.all;
-       Right_HT : Hash_Table_Type renames Right.HT'Unrestricted_Access.all;
-       Buckets  : HT_Types.Buckets_Access;
-       Length   : Count_Type;
- 
-    begin
-       if Left'Address = Right'Address then
-          return Left;
-       end if;
- 
-       if Right.Length = 0 then
-          return Left;
-       end if;
- 
-       if Left.Length = 0 then
-          return Right;
-       end if;
- 
-       declare
-          Size : constant Hash_Type :=
-            Prime_Numbers.To_Prime (Left.Length + Right.Length);
-       begin
-          Buckets := HT_Ops.New_Buckets (Length => Size);
-       end;
- 
-       Iterate_Left : declare
-          procedure Process (L_Node : Node_Access);
- 
-          procedure Iterate is
-             new HT_Ops.Generic_Iteration (Process);
- 
-          -------------
-          -- Process --
-          -------------
- 
-          procedure Process (L_Node : Node_Access) is
-             J : constant Hash_Type :=
-               Hash (L_Node.Element) mod Buckets'Length;
- 
-          begin
-             Buckets (J) := new Node_Type'(L_Node.Element, Buckets (J));
-          end Process;
- 
-          --  Per AI05-0022, the container implementation is required to detect
-          --  element tampering by a generic actual subprogram, hence the use of
-          --  Checked_Index instead of a simple invocation of generic formal
-          --  Hash.
- 
-          Lock_Left : With_Lock (Left_HT.TC'Unrestricted_Access);
- 
-       --  Start of processing for Iterate_Left
- 
-       begin
-          Iterate (Left_HT);
-       exception
-          when others =>
-             HT_Ops.Free_Hash_Table (Buckets);
-             raise;
-       end Iterate_Left;
- 
-       Length := Left.Length;
- 
-       Iterate_Right : declare
-          procedure Process (Src_Node : Node_Access);
- 
-          procedure Iterate is
-             new HT_Ops.Generic_Iteration (Process);
- 
-          -------------
-          -- Process --
-          -------------
- 
-          procedure Process (Src_Node : Node_Access) is
-             J : constant Hash_Type :=
-               Hash (Src_Node.Element) mod Buckets'Length;
- 
-             Tgt_Node : Node_Access := Buckets (J);
- 
-          begin
-             while Tgt_Node /= null loop
-                if Equivalent_Elements (Src_Node.Element, Tgt_Node.Element) then
-                   return;
-                end if;
- 
-                Tgt_Node := Next (Tgt_Node);
-             end loop;
- 
-             Buckets (J) := new Node_Type'(Src_Node.Element, Buckets (J));
-             Length := Length + 1;
-          end Process;
- 
-          --  Per AI05-0022, the container implementation is required to detect
-          --  element tampering by a generic actual subprogram, hence the use of
-          --  Checked_Index instead of a simple invocation of generic formal
-          --  Hash.
- 
-          Lock_Left : With_Lock (Left_HT.TC'Unrestricted_Access);
-          Lock_Right : With_Lock (Right_HT.TC'Unrestricted_Access);
- 
-       --  Start of processing for Iterate_Right
- 
-       begin
-          Iterate (Right_HT);
-       exception
-          when others =>
-             HT_Ops.Free_Hash_Table (Buckets);
-             raise;
-       end Iterate_Right;
- 
-       return (Controlled with HT => (Buckets, Length, (Busy => 0, Lock => 0)));
-    end Union;
- 
-    ---------
-    -- Vet --
-    ---------
- 
-    function Vet (Position : Cursor) return Boolean is
-    begin
-       if Position.Node = null then
-          return Position.Container = null;
-       end if;
- 
-       if Position.Container = null then
-          return False;
-       end if;
- 
-       if Position.Node.Next = Position.Node then
-          return False;
-       end if;
- 
-       declare
-          HT : Hash_Table_Type renames Position.Container.HT;
-          X  : Node_Access;
- 
-       begin
-          if HT.Length = 0 then
-             return False;
-          end if;
- 
-          if HT.Buckets = null
-            or else HT.Buckets'Length = 0
-          then
-             return False;
-          end if;
- 
-          X := HT.Buckets (Element_Keys.Checked_Index
-                             (HT,
-                              Position.Node.Element));
- 
-          for J in 1 .. HT.Length loop
-             if X = Position.Node then
-                return True;
-             end if;
- 
-             if X = null then
-                return False;
-             end if;
- 
-             if X = X.Next then  --  to prevent unnecessary looping
-                return False;
-             end if;
- 
-             X := X.Next;
-          end loop;
- 
-          return False;
-       end;
-    end Vet;
- 
-    -----------
-    -- Write --
-    -----------
- 
-    procedure Write
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : Set)
-    is
-    begin
-       Write_Nodes (Stream, Container.HT);
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Cursor)
-    is
-    begin
-       raise Program_Error with "attempt to stream set cursor";
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Constant_Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Write;
- 
-    ----------------
-    -- Write_Node --
-    ----------------
- 
-    procedure Write_Node
-      (Stream : not null access Root_Stream_Type'Class;
-       Node   : Node_Access)
-    is
-    begin
-       Element_Type'Write (Stream, Node.Element);
-    end Write_Node;
- 
-    package body Generic_Keys is
- 
-       -----------------------
-       -- Local Subprograms --
-       -----------------------
- 
-       function Equivalent_Key_Node
-         (Key  : Key_Type;
-          Node : Node_Access) return Boolean;
-       pragma Inline (Equivalent_Key_Node);
- 
-       --------------------------
-       -- Local Instantiations --
-       --------------------------
- 
-       package Key_Keys is
-          new Hash_Tables.Generic_Keys
-           (HT_Types  => HT_Types,
-            Next      => Next,
-            Set_Next  => Set_Next,
-            Key_Type  => Key_Type,
-            Hash      => Hash,
-            Equivalent_Keys => Equivalent_Key_Node);
- 
-       ------------------------
-       -- Constant_Reference --
-       ------------------------
- 
-       function Constant_Reference
-         (Container : aliased Set;
-          Key       : Key_Type) return Constant_Reference_Type
-       is
-          HT   : Hash_Table_Type renames Container'Unrestricted_Access.HT;
-          Node : constant Node_Access := Key_Keys.Find (HT, Key);
- 
-       begin
-          if Checks and then Node = null then
-             raise Constraint_Error with "Key not in set";
-          end if;
- 
-          declare
-             TC : constant Tamper_Counts_Access :=
-               HT.TC'Unrestricted_Access;
-          begin
-             return R : constant Constant_Reference_Type :=
-               (Element => Node.Element'Access,
-                Control => (Controlled with TC))
-             do
-                Lock (TC.all);
-             end return;
-          end;
-       end Constant_Reference;
- 
-       --------------
-       -- 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 : Node_Access;
- 
-       begin
-          Key_Keys.Delete_Key_Sans_Free (Container.HT, Key, X);
- 
-          if Checks and then X = null then
-             raise Constraint_Error with "attempt to delete key not in set";
-          end if;
- 
-          Free (X);
-       end Delete;
- 
-       -------------
-       -- Element --
-       -------------
- 
-       function Element
-         (Container : Set;
-          Key       : Key_Type) return Element_Type
-       is
-          HT   : Hash_Table_Type renames Container'Unrestricted_Access.HT;
-          Node : constant Node_Access := Key_Keys.Find (HT, Key);
- 
-       begin
-          if Checks and then Node = null then
-             raise Constraint_Error with "key not in set";
-          end if;
- 
-          return Node.Element;
-       end Element;
- 
-       -------------------------
-       -- Equivalent_Key_Node --
-       -------------------------
- 
-       function Equivalent_Key_Node
-         (Key  : Key_Type;
-          Node : Node_Access) 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 : Node_Access;
-       begin
-          Key_Keys.Delete_Key_Sans_Free (Container.HT, Key, X);
-          Free (X);
-       end Exclude;
- 
-       --------------
-       -- Finalize --
-       --------------
- 
-       procedure Finalize (Control : in out Reference_Control_Type) is
-       begin
-          if Control.Container /= null then
-             Impl.Reference_Control_Type (Control).Finalize;
- 
-             if Checks and then
-               Hash (Key (Element (Control.Old_Pos))) /= Control.Old_Hash
-             then
-                HT_Ops.Delete_Node_At_Index
-                  (Control.Container.HT, Control.Index, Control.Old_Pos.Node);
-                raise Program_Error with "key not preserved in reference";
-             end if;
- 
-             Control.Container := null;
-          end if;
-       end Finalize;
- 
-       ----------
-       -- Find --
-       ----------
- 
-       function Find
-         (Container : Set;
-          Key       : Key_Type) return Cursor
-       is
-          HT   : Hash_Table_Type renames Container'Unrestricted_Access.HT;
-          Node : constant Node_Access := Key_Keys.Find (HT, Key);
-       begin
-          if Node = null then
-             return No_Element;
-          else
-             return Cursor'(Container'Unrestricted_Access, Node);
-          end if;
-       end Find;
- 
-       ---------
-       -- Key --
-       ---------
- 
-       function Key (Position : Cursor) return Key_Type is
-       begin
-          if Checks and then Position.Node = null then
-             raise Constraint_Error with
-               "Position cursor equals No_Element";
-          end if;
- 
-          pragma Assert (Vet (Position), "bad cursor in function Key");
- 
-          return Key (Position.Node.Element);
-       end Key;
- 
-       ----------
-       -- Read --
-       ----------
- 
-       procedure Read
-         (Stream : not null access Root_Stream_Type'Class;
-          Item   : out Reference_Type)
-       is
-       begin
-          raise Program_Error with "attempt to stream reference";
-       end Read;
- 
-       ------------------------------
-       -- Reference_Preserving_Key --
-       ------------------------------
- 
-       function Reference_Preserving_Key
-         (Container : aliased in out Set;
-          Position  : Cursor) return Reference_Type
-       is
-       begin
-          if Checks and then Position.Container = null then
-             raise Constraint_Error with "Position cursor has no element";
-          end if;
- 
-          if Checks and then Position.Container /= Container'Unrestricted_Access
-          then
-             raise Program_Error with
-               "Position cursor designates wrong container";
-          end if;
- 
-          pragma Assert
-            (Vet (Position),
-             "bad cursor in function Reference_Preserving_Key");
- 
-          declare
-             HT : Hash_Table_Type renames Position.Container.all.HT;
-          begin
-             return R : constant Reference_Type :=
-                          (Element => Position.Node.Element'Access,
-                           Control =>
-                             (Controlled with
-                               HT.TC'Unrestricted_Access,
-                               Container'Unrestricted_Access,
-                               Index    => HT_Ops.Index (HT, Position.Node),
-                               Old_Pos  => Position,
-                               Old_Hash => Hash (Key (Position))))
-             do
-                Lock (HT.TC);
-             end return;
-          end;
-       end Reference_Preserving_Key;
- 
-       function Reference_Preserving_Key
-         (Container : aliased in out Set;
-          Key       : Key_Type) return Reference_Type
-       is
-          Node : constant Node_Access := Key_Keys.Find (Container.HT, Key);
- 
-       begin
-          if Checks and then Node = null then
-             raise Constraint_Error with "key not in set";
-          end if;
- 
-          declare
-             HT : Hash_Table_Type renames Container.HT;
-             P  : constant Cursor := Find (Container, Key);
-          begin
-             return R : constant Reference_Type :=
-                          (Element => Node.Element'Access,
-                           Control =>
-                             (Controlled with
-                               HT.TC'Unrestricted_Access,
-                               Container'Unrestricted_Access,
-                               Index    => HT_Ops.Index (HT, P.Node),
-                               Old_Pos  => P,
-                               Old_Hash => Hash (Key)))
-             do
-                Lock (HT.TC);
-             end return;
-          end;
-       end Reference_Preserving_Key;
- 
-       -------------
-       -- Replace --
-       -------------
- 
-       procedure Replace
-         (Container : in out Set;
-          Key       : Key_Type;
-          New_Item  : Element_Type)
-       is
-          Node : constant Node_Access := Key_Keys.Find (Container.HT, Key);
- 
-       begin
-          if Checks and then Node = null then
-             raise Constraint_Error with
-               "attempt to replace key not in set";
-          end if;
- 
-          Replace_Element (Container.HT, Node, New_Item);
-       end Replace;
- 
-       -----------------------------------
-       -- Update_Element_Preserving_Key --
-       -----------------------------------
- 
-       procedure Update_Element_Preserving_Key
-         (Container : in out Set;
-          Position  : Cursor;
-          Process   : not null access
-                        procedure (Element : in out Element_Type))
-       is
-          HT   : Hash_Table_Type renames Container.HT;
-          Indx : Hash_Type;
- 
-       begin
-          if Checks and then Position.Node = null then
-             raise Constraint_Error with
-               "Position cursor equals No_Element";
-          end if;
- 
-          if Checks and then Position.Container /= Container'Unrestricted_Access
-          then
-             raise Program_Error with
-               "Position cursor designates wrong set";
-          end if;
- 
-          if Checks and then
-            (HT.Buckets = null
-               or else HT.Buckets'Length = 0
-               or else HT.Length = 0
-               or else Position.Node.Next = Position.Node)
-          then
-             raise Program_Error with "Position cursor is bad (set is empty)";
-          end if;
- 
-          pragma Assert
-            (Vet (Position),
-             "bad cursor in Update_Element_Preserving_Key");
- 
-          --  Per AI05-0022, the container implementation is required to detect
-          --  element tampering by a generic actual subprogram.
- 
-          declare
-             E : Element_Type renames Position.Node.Element;
-             K : constant Key_Type := Key (E);
-             Lock : With_Lock (HT.TC'Unrestricted_Access);
-          begin
-             Indx := HT_Ops.Index (HT, Position.Node);
-             Process (E);
- 
-             if Equivalent_Keys (K, Key (E)) then
-                return;
-             end if;
-          end;
- 
-          if HT.Buckets (Indx) = Position.Node then
-             HT.Buckets (Indx) := Position.Node.Next;
- 
-          else
-             declare
-                Prev : Node_Access := HT.Buckets (Indx);
- 
-             begin
-                while Prev.Next /= Position.Node loop
-                   Prev := Prev.Next;
- 
-                   if Checks and then Prev = null then
-                      raise Program_Error with
-                        "Position cursor is bad (node not found)";
-                   end if;
-                end loop;
- 
-                Prev.Next := Position.Node.Next;
-             end;
-          end if;
- 
-          HT.Length := HT.Length - 1;
- 
-          declare
-             X : Node_Access := Position.Node;
- 
-          begin
-             Free (X);
-          end;
- 
-          raise Program_Error with "key was modified";
-       end Update_Element_Preserving_Key;
- 
-       -----------
-       -- Write --
-       -----------
- 
-       procedure Write
-         (Stream : not null access Root_Stream_Type'Class;
-          Item   : Reference_Type)
-       is
-       begin
-          raise Program_Error with "attempt to stream reference";
-       end Write;
- 
-    end Generic_Keys;
- 
- end Ada.Containers.Hashed_Sets;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cohase.ads gcc-8.1.0/gcc/ada/a-cohase.ads
*** gcc-7.3.0/gcc/ada/a-cohase.ads	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-cohase.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,607 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --           A D A . C O N T A I N E R S . H A S H E D _ S E T S            --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, 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/>.                                          --
- --                                                                          --
- -- This unit was originally developed by Matthew J Heaney.                  --
- ------------------------------------------------------------------------------
- 
- with Ada.Iterator_Interfaces;
- 
- private with Ada.Containers.Hash_Tables;
- with Ada.Containers.Helpers;
- private with Ada.Finalization;
- private with Ada.Streams;
- 
- generic
-    type Element_Type is private;
- 
-    with function Hash (Element : Element_Type) return Hash_Type;
- 
-    with function Equivalent_Elements
-           (Left, Right : Element_Type) return Boolean;
- 
-    with function "=" (Left, Right : Element_Type) return Boolean is <>;
- 
- package Ada.Containers.Hashed_Sets is
-    pragma Annotate (CodePeer, Skip_Analysis);
-    pragma Preelaborate;
-    pragma Remote_Types;
- 
-    type Set is tagged private
-    with
-       Constant_Indexing => Constant_Reference,
-       Default_Iterator  => Iterate,
-       Iterator_Element  => Element_Type;
- 
-    pragma Preelaborable_Initialization (Set);
- 
-    type Cursor is private;
-    pragma Preelaborable_Initialization (Cursor);
- 
-    Empty_Set : constant Set;
-    --  Set objects declared without an initialization expression are
-    --  initialized to the value Empty_Set.
- 
-    No_Element : constant Cursor;
-    --  Cursor objects declared without an initialization expression are
-    --  initialized to the value No_Element.
- 
-    function Has_Element (Position : Cursor) return Boolean;
-    --  Equivalent to Position /= No_Element
- 
-    package Set_Iterator_Interfaces is new
-      Ada.Iterator_Interfaces (Cursor, Has_Element);
- 
-    function "=" (Left, Right : Set) return Boolean;
-    --  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;
-    --  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;
-    --  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;
-    --  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);
-    --  Adjusts the current capacity, by allocating a new buckets array. If the
-    --  requested capacity is less than the current capacity, then the capacity
-    --  is contracted (to a value not less than the current length). If the
-    --  requested capacity is greater than the current capacity, then the
-    --  capacity is expanded (to a value not less than what is requested). In
-    --  either case, the nodes are rehashed from the old buckets array onto the
-    --  new buckets array (Hash is called once for each existing element in
-    --  order to compute the new index), and then the old buckets array is
-    --  deallocated.
- 
-    function Length (Container : Set) return Count_Type;
-    --  Returns the number of items in the set
- 
-    function Is_Empty (Container : Set) return Boolean;
-    --  Equivalent to Length (Container) = 0
- 
-    procedure Clear (Container : in out Set);
-    --  Removes all of the items from the set
- 
-    function Element (Position : Cursor) return Element_Type;
-    --  Returns the element of the node designated by the cursor
- 
-    procedure Replace_Element
-      (Container : in out Set;
-       Position  : Cursor;
-       New_Item  : Element_Type);
-    --  If New_Item is equivalent (as determined by calling Equivalent_Elements)
-    --  to the element of the node designated by Position, then New_Element is
-    --  assigned to that element. Otherwise, it calls Hash to determine the
-    --  bucket for New_Item. If the bucket is not empty, then it calls
-    --  Equivalent_Elements for each node in that bucket to determine whether
-    --  New_Item is equivalent to an element in that bucket. If
-    --  Equivalent_Elements returns True then Program_Error is raised (because
-    --  an element may appear only once in the set); otherwise, New_Item is
-    --  assigned to the node designated by Position, and the node is moved to
-    --  its new bucket.
- 
-    procedure Query_Element
-      (Position : Cursor;
-       Process  : not null access procedure (Element : Element_Type));
-    --  Calls Process with the element (having only a constant view) of the node
-    --  designed by the cursor.
- 
-    type Constant_Reference_Type
-      (Element : not null access constant Element_Type) is private
-         with Implicit_Dereference => Element;
- 
-    function Constant_Reference
-      (Container : aliased Set;
-       Position  : Cursor) return Constant_Reference_Type;
-    pragma Inline (Constant_Reference);
- 
-    procedure Assign (Target : in out Set; Source : Set);
- 
-    function Copy (Source : Set; Capacity : Count_Type := 0) return Set;
- 
-    procedure Move (Target : in out Set; Source : in out Set);
-    --  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);
-    --  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);
-    --  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);
-    --  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);
-    --  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);
-    --  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);
-    --  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);
-    --  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);
-    --  The operation first calls Reserve_Capacity if the current capacity is
-    --  less than the sum of the lengths of Source and Target. It then iterates
-    --  over the Source set, and conditionally inserts each element into Target.
- 
-    function Union (Left, Right : Set) return Set;
-    --  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);
-    --  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;
-    --  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);
-    --  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;
-    --  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);
-    --  The operation first calls Reserve_Capacity if the current capacity is
-    --  less than the sum of the lengths of Source and Target. It then 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;
-    --  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;
-    --  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;
-    --  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;
-    --  Returns a cursor that designates the first non-empty bucket, by
-    --  searching from the beginning of the buckets array.
- 
-    function Next (Position : Cursor) return Cursor;
-    --  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 (Position : in out Cursor);
-    --  Equivalent to Position := Next (Position)
- 
-    function Find
-      (Container : Set;
-       Item      : Element_Type) return Cursor;
-    --  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;
-    --  Equivalent to Find (Container, Item) /= No_Element
- 
-    function Equivalent_Elements (Left, Right : Cursor) return Boolean;
-    --  Returns the result of calling Equivalent_Elements with the elements of
-    --  the nodes designated by cursors Left and Right.
- 
-    function Equivalent_Elements
-      (Left  : Cursor;
-       Right : Element_Type) return Boolean;
-    --  Returns the result of calling Equivalent_Elements with element of the
-    --  node designated by Left and element Right.
- 
-    function Equivalent_Elements
-      (Left  : Element_Type;
-       Right : Cursor) return Boolean;
-    --  Returns the result of calling Equivalent_Elements with element Left and
-    --  the element of the node designated by Right.
- 
-    procedure Iterate
-      (Container : Set;
-       Process   : not null access procedure (Position : Cursor));
-    --  Calls Process for each node in the set
- 
-    function Iterate
-      (Container : Set) return Set_Iterator_Interfaces.Forward_Iterator'Class;
- 
-    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 is
- 
-       function Key (Position : Cursor) return Key_Type;
-       --  Applies generic formal operation Key to the element of the node
-       --  designated by 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.
- 
-       procedure Replace
-         (Container : in out Set;
-          Key       : Key_Type;
-          New_Item  : Element_Type);
-       --  Searches (as per the key-based Find) for the node containing Key, and
-       --  then replaces the element of that node (as per the element-based
-       --  Replace_Element).
- 
-       procedure Exclude (Container : in out Set; Key : Key_Type);
-       --  Searches for Key in the set, and if found, removes its node from the
-       --  set and then deallocates it. The search works by first calling Hash
-       --  (on Key) to determine the bucket; if the bucket is not empty, it
-       --  calls Equivalent_Keys to compare parameter Key to the value of
-       --  generic formal operation Key applied to element of each node in the
-       --  bucket.
- 
-       procedure Delete (Container : in out Set; Key : Key_Type);
-       --  Deletes the node containing Key as per Exclude, with the difference
-       --  that Constraint_Error is raised if Key is not found.
- 
-       function Find (Container : Set; Key : Key_Type) return Cursor;
-       --  Searches for the node containing Key, and returns a cursor
-       --  designating the node. The search works by first calling Hash (on Key)
-       --  to determine the bucket. If the bucket is not empty, the search
-       --  compares Key to the element of each node in the bucket, and returns
-       --  the matching node. The comparison itself works by applying the
-       --  generic formal Key operation to the element of the node, and then
-       --  calling generic formal operation Equivalent_Keys.
- 
-       function Contains (Container : Set; Key : Key_Type) return Boolean;
-       --  Equivalent to Find (Container, Key) /= No_Element
- 
-       procedure Update_Element_Preserving_Key
-         (Container : in out Set;
-          Position  : Cursor;
-          Process   : not null access
-                        procedure (Element : in out Element_Type));
-       --  Calls Process with the element of the node designated by Position,
-       --  but with the restriction that the key-value of the element is not
-       --  modified. The operation first makes a copy of the value returned by
-       --  applying generic formal operation Key on the element of the node, and
-       --  then calls Process with the element. The operation verifies that the
-       --  key-part has not been modified by calling generic formal operation
-       --  Equivalent_Keys to compare the saved key-value to the value returned
-       --  by applying generic formal operation Key to the post-Process value of
-       --  element. If the key values compare equal then the operation
-       --  completes. Otherwise, the node is removed from the set and
-       --  Program_Error is raised.
- 
-       type Reference_Type (Element : not null access Element_Type) is private
-         with Implicit_Dereference => Element;
- 
-       function Reference_Preserving_Key
-         (Container : aliased in out Set;
-          Position  : Cursor) return Reference_Type;
- 
-       function Constant_Reference
-         (Container : aliased Set;
-          Key       : Key_Type) return Constant_Reference_Type;
- 
-       function Reference_Preserving_Key
-         (Container : aliased in out Set;
-          Key       : Key_Type) return Reference_Type;
- 
-    private
-       use Ada.Streams;
-       type Set_Access is access all Set;
-       for Set_Access'Storage_Size use 0;
- 
-       --  Key_Preserving references must carry information to allow removal
-       --  of elements whose value may have been altered improperly, i.e. have
-       --  been given values incompatible with the hash-code of the previous
-       --  value, and are thus in the wrong bucket. (RM 18.7 (96.6/3))
- 
-       --  We cannot store the key directly because it is an unconstrained type.
-       --  To avoid using additional dynamic allocation we store the old cursor
-       --  which simplifies possible removal. This is not possible for some
-       --  other set types.
- 
-       --  The mechanism is different for Update_Element_Preserving_Key, as
-       --  in that case the check that buckets have not changed is performed
-       --  at the time of the update, not when the reference is finalized.
- 
-       package Impl is new Helpers.Generic_Implementation;
- 
-       type Reference_Control_Type is
-          new Impl.Reference_Control_Type with
-       record
-          Container : Set_Access;
-          Index     : Hash_Type;
-          Old_Pos   : Cursor;
-          Old_Hash  : Hash_Type;
-       end record;
- 
-       overriding procedure Finalize (Control : in out Reference_Control_Type);
-       pragma Inline (Finalize);
- 
-       type Reference_Type (Element : not null access Element_Type) is record
-          Control  : Reference_Control_Type;
-       end record;
- 
-       procedure Read
-         (Stream : not null access Root_Stream_Type'Class;
-          Item   : out Reference_Type);
- 
-       for Reference_Type'Read use Read;
- 
-       procedure Write
-         (Stream : not null access Root_Stream_Type'Class;
-          Item   : Reference_Type);
- 
-       for Reference_Type'Write use Write;
-    end Generic_Keys;
- 
- private
-    pragma Inline (Next);
- 
-    type Node_Type;
-    type Node_Access is access Node_Type;
- 
-    type Node_Type is limited record
-       Element : aliased Element_Type;
-       Next    : Node_Access;
-    end record;
- 
-    package HT_Types is
-      new Hash_Tables.Generic_Hash_Table_Types (Node_Type, Node_Access);
- 
-    type Set is new Ada.Finalization.Controlled with record
-       HT : HT_Types.Hash_Table_Type;
-    end record;
- 
-    overriding procedure Adjust (Container : in out Set);
- 
-    overriding procedure Finalize (Container : in out Set);
- 
-    use HT_Types, HT_Types.Implementation;
-    use Ada.Finalization;
-    use Ada.Streams;
- 
-    procedure Write
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : Set);
- 
-    for Set'Write use Write;
- 
-    procedure Read
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : out Set);
- 
-    for Set'Read use Read;
- 
-    type Set_Access is access all Set;
-    for Set_Access'Storage_Size use 0;
- 
-    type Cursor is record
-       Container : Set_Access;
-       Node      : Node_Access;
-    end record;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Cursor);
- 
-    for Cursor'Write use Write;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Cursor);
- 
-    for Cursor'Read use Read;
- 
-    subtype Reference_Control_Type is Implementation.Reference_Control_Type;
-    --  It is necessary to rename this here, so that the compiler can find it
- 
-    type Constant_Reference_Type
-      (Element : not null access constant Element_Type) is
-       record
-          Control : Reference_Control_Type :=
-            raise Program_Error with "uninitialized reference";
-          --  The RM says, "The default initialization of an object of
-          --  type Constant_Reference_Type or Reference_Type propagates
-          --  Program_Error."
-       end record;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Constant_Reference_Type);
- 
-    for Constant_Reference_Type'Read use Read;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Constant_Reference_Type);
- 
-    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;
-    pragma Inline (Pseudo_Reference);
-    --  Creates an object of type Reference_Control_Type pointing to the
-    --  container, and increments the Lock. Finalization of this object will
-    --  decrement the Lock.
- 
-    type Element_Access is access all Element_Type with
-      Storage_Size => 0;
- 
-    function Get_Element_Access
-      (Position : Cursor) return not null Element_Access;
-    --  Returns a pointer to the element designated by Position.
- 
-    Empty_Set : constant Set := (Controlled with others => <>);
- 
-    No_Element : constant Cursor := (Container => null, Node => null);
- 
-    type Iterator is new Limited_Controlled and
-      Set_Iterator_Interfaces.Forward_Iterator with
-    record
-       Container : Set_Access;
-    end record
-      with Disable_Controlled => not T_Check;
- 
-    overriding function First (Object : Iterator) return Cursor;
- 
-    overriding function Next
-      (Object   : Iterator;
-       Position : Cursor) return Cursor;
-    overriding procedure Finalize (Object : in out Iterator);
- 
- end Ada.Containers.Hashed_Sets;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cohata.ads gcc-8.1.0/gcc/ada/a-cohata.ads
*** gcc-7.3.0/gcc/ada/a-cohata.ads	Tue Oct 20 10:23:46 2015
--- gcc-8.1.0/gcc/ada/a-cohata.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,82 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --            A D A . C O N T A I N E R S . H A S H _ T A B L E S           --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.                  --
- ------------------------------------------------------------------------------
- 
- --  This package declares the hash-table type used to implement hashed
- --  containers.
- 
- with Ada.Containers.Helpers;
- 
- package Ada.Containers.Hash_Tables is
-    pragma Pure;
-    --  Declare Pure so this can be imported by Remote_Types packages
- 
-    generic
-       type Node_Type (<>) is limited private;
- 
-       type Node_Access is access Node_Type;
- 
-    package Generic_Hash_Table_Types is
- 
-       type Buckets_Type is array (Hash_Type range <>) of Node_Access;
- 
-       type Buckets_Access is access all Buckets_Type;
-       for Buckets_Access'Storage_Size use 0;
-       --  Storage_Size of zero so this package can be Pure
- 
-       type Hash_Table_Type is tagged record
-          Buckets : Buckets_Access := null;
-          Length  : Count_Type := 0;
-          TC      : aliased Helpers.Tamper_Counts;
-       end record;
- 
-       package Implementation is new Helpers.Generic_Implementation;
-    end Generic_Hash_Table_Types;
- 
-    generic
-       type Node_Type is private;
-    package Generic_Bounded_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
-       tagged record
-          Length  : Count_Type                  := 0;
-          TC      : aliased Helpers.Tamper_Counts;
-          Free    : Count_Type'Base             := -1;
-          Nodes   : Nodes_Type (1 .. Capacity)  := (others => <>);
-          Buckets : Buckets_Type (1 .. Modulus) := (others => 0);
-       end record;
- 
-       package Implementation is new Helpers.Generic_Implementation;
-    end Generic_Bounded_Hash_Table_Types;
- 
- end Ada.Containers.Hash_Tables;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-coinho-shared.adb gcc-8.1.0/gcc/ada/a-coinho-shared.adb
*** gcc-7.3.0/gcc/ada/a-coinho-shared.adb	Fri Jan 13 10:51:45 2017
--- gcc-8.1.0/gcc/ada/a-coinho-shared.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,528 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --     A D A . C O N T A I N E R S . I N D E F I N I T E _ H O L D E R S    --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2013-2016, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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/>.                                          --
- ------------------------------------------------------------------------------
- 
- --  Note: special attention must be paid to the case of simultaneous access
- --  to internal shared objects and elements by different tasks. The Reference
- --  counter of internal shared object is the only component protected using
- --  atomic operations; other components and elements can be modified only when
- --  reference counter is equal to one (so there are no other references to this
- --  internal shared object and element).
- 
- with Ada.Unchecked_Deallocation;
- 
- package body Ada.Containers.Indefinite_Holders is
- 
-    procedure Free is
-      new Ada.Unchecked_Deallocation (Element_Type, Element_Access);
- 
-    procedure Detach (Container : Holder);
-    --  Detach data from shared copy if necessary. This is necessary to prepare
-    --  container to be modified.
- 
-    ---------
-    -- "=" --
-    ---------
- 
-    function "=" (Left, Right : Holder) return Boolean is
-    begin
-       if Left.Reference = Right.Reference then
- 
-          --  Covers both null and not null but the same shared object cases
- 
-          return True;
- 
-       elsif Left.Reference /= null and Right.Reference /= null then
-          return Left.Reference.Element.all = Right.Reference.Element.all;
- 
-       else
-          return False;
-       end if;
-    end "=";
- 
-    ------------
-    -- Adjust --
-    ------------
- 
-    overriding procedure Adjust (Container : in out Holder) is
-    begin
-       if Container.Reference /= null then
-          if Container.Busy = 0 then
- 
-             --  Container is not locked, reuse existing internal shared object
- 
-             Reference (Container.Reference);
-          else
-             --  Otherwise, create copy of both internal shared object and
-             --  element.
- 
-             Container.Reference :=
-                new Shared_Holder'
-                  (Counter => <>,
-                   Element =>
-                      new Element_Type'(Container.Reference.Element.all));
-          end if;
-       end if;
- 
-       Container.Busy := 0;
-    end Adjust;
- 
-    overriding procedure Adjust (Control : in out Reference_Control_Type) is
-    begin
-       if Control.Container /= null then
-          Reference (Control.Container.Reference);
-          Control.Container.Busy := Control.Container.Busy + 1;
-       end if;
-    end Adjust;
- 
-    ------------
-    -- Assign --
-    ------------
- 
-    procedure Assign (Target : in out Holder; Source : Holder) is
-    begin
-       if Target.Busy /= 0 then
-          raise Program_Error with "attempt to tamper with elements";
-       end if;
- 
-       if Target.Reference /= Source.Reference then
-          if Target.Reference /= null then
-             Unreference (Target.Reference);
-          end if;
- 
-          Target.Reference := Source.Reference;
- 
-          if Source.Reference /= null then
-             Reference (Target.Reference);
-          end if;
-       end if;
-    end Assign;
- 
-    -----------
-    -- Clear --
-    -----------
- 
-    procedure Clear (Container : in out Holder) is
-    begin
-       if Container.Busy /= 0 then
-          raise Program_Error with "attempt to tamper with elements";
-       end if;
- 
-       if Container.Reference /= null then
-          Unreference (Container.Reference);
-          Container.Reference := null;
-       end if;
-    end Clear;
- 
-    ------------------------
-    -- Constant_Reference --
-    ------------------------
- 
-    function Constant_Reference
-      (Container : aliased Holder) return Constant_Reference_Type is
-    begin
-       if Container.Reference = null then
-          raise Constraint_Error with "container is empty";
-       end if;
- 
-       Detach (Container);
- 
-       declare
-          Ref : constant Constant_Reference_Type :=
-                  (Element => Container.Reference.Element.all'Access,
-                   Control => (Controlled with Container'Unrestricted_Access));
-       begin
-          Reference (Ref.Control.Container.Reference);
-          Ref.Control.Container.Busy := Ref.Control.Container.Busy + 1;
-          return Ref;
-       end;
-    end Constant_Reference;
- 
-    ----------
-    -- Copy --
-    ----------
- 
-    function Copy (Source : Holder) return Holder is
-    begin
-       if Source.Reference = null then
-          return (Controlled with null, 0);
- 
-       elsif Source.Busy = 0 then
- 
-          --  Container is not locked, reuse internal shared object
- 
-          Reference (Source.Reference);
- 
-          return (Controlled with Source.Reference, 0);
- 
-       else
-          --  Otherwise, create copy of both internal shared object and element
- 
-          return
-            (Controlled with
-               new Shared_Holder'
-                 (Counter => <>,
-                  Element => new Element_Type'(Source.Reference.Element.all)),
-                0);
-       end if;
-    end Copy;
- 
-    ------------
-    -- Detach --
-    ------------
- 
-    procedure Detach (Container : Holder) is
-    begin
-       if Container.Busy = 0
-         and then not System.Atomic_Counters.Is_One
-                        (Container.Reference.Counter)
-       then
-          --  Container is not locked and internal shared object is used by
-          --  other container, create copy of both internal shared object and
-          --  element.
- 
-          declare
-             Old : constant Shared_Holder_Access := Container.Reference;
- 
-          begin
-             Container'Unrestricted_Access.Reference :=
-                new Shared_Holder'
-                  (Counter => <>,
-                   Element =>
-                     new Element_Type'(Container.Reference.Element.all));
-             Unreference (Old);
-          end;
-       end if;
-    end Detach;
- 
-    -------------
-    -- Element --
-    -------------
- 
-    function Element (Container : Holder) return Element_Type is
-    begin
-       if Container.Reference = null then
-          raise Constraint_Error with "container is empty";
-       else
-          return Container.Reference.Element.all;
-       end if;
-    end Element;
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    overriding procedure Finalize (Container : in out Holder) is
-    begin
-       if Container.Busy /= 0 then
-          raise Program_Error with "attempt to tamper with elements";
-       end if;
- 
-       if Container.Reference /= null then
-          Unreference (Container.Reference);
-          Container.Reference := null;
-       end if;
-    end Finalize;
- 
-    overriding procedure Finalize (Control : in out Reference_Control_Type) is
-    begin
-       if Control.Container /= null then
-          Unreference (Control.Container.Reference);
-          Control.Container.Busy := Control.Container.Busy - 1;
-          Control.Container := null;
-       end if;
-    end Finalize;
- 
-    --------------
-    -- Is_Empty --
-    --------------
- 
-    function Is_Empty (Container : Holder) return Boolean is
-    begin
-       return Container.Reference = null;
-    end Is_Empty;
- 
-    ----------
-    -- Move --
-    ----------
- 
-    procedure Move (Target : in out Holder; Source : in out Holder) is
-    begin
-       if Target.Busy /= 0 then
-          raise Program_Error with "attempt to tamper with elements";
-       end if;
- 
-       if Source.Busy /= 0 then
-          raise Program_Error with "attempt to tamper with elements";
-       end if;
- 
-       if Target.Reference /= Source.Reference then
-          if Target.Reference /= null then
-             Unreference (Target.Reference);
-          end if;
- 
-          Target.Reference := Source.Reference;
-          Source.Reference := null;
-       end if;
-    end Move;
- 
-    -------------------
-    -- Query_Element --
-    -------------------
- 
-    procedure Query_Element
-      (Container : Holder;
-       Process   : not null access procedure (Element : Element_Type))
-    is
-       B : Natural renames Container'Unrestricted_Access.Busy;
- 
-    begin
-       if Container.Reference = null then
-          raise Constraint_Error with "container is empty";
-       end if;
- 
-       Detach (Container);
- 
-       B := B + 1;
- 
-       begin
-          Process (Container.Reference.Element.all);
-       exception
-          when others =>
-             B := B - 1;
-             raise;
-       end;
- 
-       B := B - 1;
-    end Query_Element;
- 
-    ----------
-    -- Read --
-    ----------
- 
-    procedure Read
-      (Stream    : not null access Ada.Streams.Root_Stream_Type'Class;
-       Container : out Holder)
-    is
-    begin
-       Clear (Container);
- 
-       if not Boolean'Input (Stream) then
-          Container.Reference :=
-             new Shared_Holder'
-               (Counter => <>,
-                Element => new Element_Type'(Element_Type'Input (Stream)));
-       end if;
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Constant_Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Read;
- 
-    ---------------
-    -- Reference --
-    ---------------
- 
-    procedure Reference (Item : not null Shared_Holder_Access) is
-    begin
-       System.Atomic_Counters.Increment (Item.Counter);
-    end Reference;
- 
-    function Reference
-      (Container : aliased in out Holder) return Reference_Type
-    is
-    begin
-       if Container.Reference = null then
-          raise Constraint_Error with "container is empty";
-       end if;
- 
-       Detach (Container);
- 
-       declare
-          Ref : constant Reference_Type :=
-                  (Element => Container.Reference.Element.all'Access,
-                   Control => (Controlled with Container'Unrestricted_Access));
-       begin
-          Reference (Ref.Control.Container.Reference);
-          Ref.Control.Container.Busy := Ref.Control.Container.Busy + 1;
-          return Ref;
-       end;
-    end Reference;
- 
-    ---------------------
-    -- Replace_Element --
-    ---------------------
- 
-    procedure Replace_Element
-      (Container : in out Holder;
-       New_Item  : Element_Type)
-    is
-       --  Element allocator may need an accessibility check in case actual type
-       --  is class-wide or has access discriminants (RM 4.8(10.1) and
-       --  AI12-0035).
- 
-       pragma Unsuppress (Accessibility_Check);
- 
-    begin
-       if Container.Busy /= 0 then
-          raise Program_Error with "attempt to tamper with elements";
-       end if;
- 
-       if Container.Reference = null then
-          --  Holder is empty, allocate new Shared_Holder.
- 
-          Container.Reference :=
-             new Shared_Holder'
-               (Counter => <>,
-                Element => new Element_Type'(New_Item));
- 
-       elsif System.Atomic_Counters.Is_One (Container.Reference.Counter) then
-          --  Shared_Holder can be reused.
- 
-          Free (Container.Reference.Element);
-          Container.Reference.Element := new Element_Type'(New_Item);
- 
-       else
-          Unreference (Container.Reference);
-          Container.Reference :=
-             new Shared_Holder'
-               (Counter => <>,
-                Element => new Element_Type'(New_Item));
-       end if;
-    end Replace_Element;
- 
-    ---------------
-    -- To_Holder --
-    ---------------
- 
-    function To_Holder (New_Item : Element_Type) return Holder is
-       --  The element allocator may need an accessibility check in the case the
-       --  actual type is class-wide or has access discriminants (RM 4.8(10.1)
-       --  and AI12-0035).
- 
-       pragma Unsuppress (Accessibility_Check);
- 
-    begin
-       return
-         (Controlled with
-             new Shared_Holder'
-               (Counter => <>,
-                Element => new Element_Type'(New_Item)), 0);
-    end To_Holder;
- 
-    -----------------
-    -- Unreference --
-    -----------------
- 
-    procedure Unreference (Item : not null Shared_Holder_Access) is
- 
-       procedure Free is
-         new Ada.Unchecked_Deallocation (Shared_Holder, Shared_Holder_Access);
- 
-       Aux : Shared_Holder_Access := Item;
- 
-    begin
-       if System.Atomic_Counters.Decrement (Aux.Counter) then
-          Free (Aux.Element);
-          Free (Aux);
-       end if;
-    end Unreference;
- 
-    --------------------
-    -- Update_Element --
-    --------------------
- 
-    procedure Update_Element
-      (Container : in out Holder;
-       Process   : not null access procedure (Element : in out Element_Type))
-    is
-       B : Natural renames Container.Busy;
- 
-    begin
-       if Container.Reference = null then
-          raise Constraint_Error with "container is empty";
-       end if;
- 
-       Detach (Container);
- 
-       B := B + 1;
- 
-       begin
-          Process (Container.Reference.Element.all);
-       exception
-          when others =>
-             B := B - 1;
-             raise;
-       end;
- 
-       B := B - 1;
-    end Update_Element;
- 
-    -----------
-    -- Write --
-    -----------
- 
-    procedure Write
-      (Stream    : not null access Ada.Streams.Root_Stream_Type'Class;
-       Container : Holder)
-    is
-    begin
-       Boolean'Output (Stream, Container.Reference = null);
- 
-       if Container.Reference /= null then
-          Element_Type'Output (Stream, Container.Reference.Element.all);
-       end if;
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Constant_Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Write;
- 
- end Ada.Containers.Indefinite_Holders;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-coinho-shared.ads gcc-8.1.0/gcc/ada/a-coinho-shared.ads
*** gcc-7.3.0/gcc/ada/a-coinho-shared.ads	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-coinho-shared.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,192 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --    A D A . C O N T A I N E R S . I N D E F I N I T E _ H O L D E R S     --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2013-2015, Free Software Foundation, 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/>.                                          --
- ------------------------------------------------------------------------------
- 
- --  This is an optimized version of Indefinite_Holders using copy-on-write.
- --  It is used on platforms that support atomic built-ins.
- 
- private with Ada.Finalization;
- private with Ada.Streams;
- 
- private with System.Atomic_Counters;
- 
- generic
-    type Element_Type (<>) is private;
-    with function "=" (Left, Right : Element_Type) return Boolean is <>;
- 
- package Ada.Containers.Indefinite_Holders is
-    pragma Annotate (CodePeer, Skip_Analysis);
-    pragma Preelaborate (Indefinite_Holders);
-    pragma Remote_Types (Indefinite_Holders);
- 
-    type Holder is tagged private;
-    pragma Preelaborable_Initialization (Holder);
- 
-    Empty_Holder : constant Holder;
- 
-    function "=" (Left, Right : Holder) return Boolean;
- 
-    function To_Holder (New_Item : Element_Type) return Holder;
- 
-    function Is_Empty (Container : Holder) return Boolean;
- 
-    procedure Clear (Container : in out Holder);
- 
-    function Element (Container : Holder) return Element_Type;
- 
-    procedure Replace_Element
-      (Container : in out Holder;
-       New_Item  : Element_Type);
- 
-    procedure Query_Element
-      (Container : Holder;
-       Process   : not null access procedure (Element : Element_Type));
-    procedure Update_Element
-      (Container : in out Holder;
-       Process   : not null access procedure (Element : in out Element_Type));
- 
-    type Constant_Reference_Type
-       (Element : not null access constant Element_Type) is private
-    with
-       Implicit_Dereference => Element;
- 
-    type Reference_Type
-      (Element : not null access Element_Type) is private
-    with
-       Implicit_Dereference => Element;
- 
-    function Constant_Reference
-      (Container : aliased Holder) return Constant_Reference_Type;
-    pragma Inline (Constant_Reference);
- 
-    function Reference
-      (Container : aliased in out Holder) return Reference_Type;
-    pragma Inline (Reference);
- 
-    procedure Assign (Target : in out Holder; Source : Holder);
- 
-    function Copy (Source : Holder) return Holder;
- 
-    procedure Move (Target : in out Holder; Source : in out Holder);
- 
- private
- 
-    use Ada.Finalization;
-    use Ada.Streams;
- 
-    type Element_Access is access all Element_Type;
-    type Holder_Access is access all Holder;
- 
-    type Shared_Holder is record
-       Counter : System.Atomic_Counters.Atomic_Counter;
-       Element : Element_Access;
-    end record;
- 
-    type Shared_Holder_Access is access all Shared_Holder;
- 
-    procedure Reference (Item : not null Shared_Holder_Access);
-    --  Increment reference counter
- 
-    procedure Unreference (Item : not null Shared_Holder_Access);
-    --  Decrement reference counter, deallocate Item when counter goes to zero
- 
-    procedure Read
-      (Stream    : not null access Ada.Streams.Root_Stream_Type'Class;
-       Container : out Holder);
- 
-    procedure Write
-      (Stream    : not null access Ada.Streams.Root_Stream_Type'Class;
-       Container : Holder);
- 
-    type Holder is new Ada.Finalization.Controlled with record
-       Reference : Shared_Holder_Access;
-       Busy      : Natural := 0;
-    end record;
-    for Holder'Read use Read;
-    for Holder'Write use Write;
- 
-    overriding procedure Adjust (Container : in out Holder);
-    overriding procedure Finalize (Container : in out Holder);
- 
-    type Reference_Control_Type is new Controlled with record
-       Container : Holder_Access;
-    end record;
- 
-    overriding procedure Adjust (Control : in out Reference_Control_Type);
-    pragma Inline (Adjust);
- 
-    overriding procedure Finalize (Control : in out Reference_Control_Type);
-    pragma Inline (Finalize);
- 
-    type Constant_Reference_Type
-      (Element : not null access constant Element_Type) is
-       record
-          Control : Reference_Control_Type :=
-            raise Program_Error with "uninitialized reference";
-          --  The RM says, "The default initialization of an object of
-          --  type Constant_Reference_Type or Reference_Type propagates
-          --  Program_Error."
-       end record;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Constant_Reference_Type);
- 
-    for Constant_Reference_Type'Write use Write;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Constant_Reference_Type);
- 
-    for Constant_Reference_Type'Read use Read;
- 
-    type Reference_Type (Element : not null access Element_Type) is record
-       Control : Reference_Control_Type :=
-         raise Program_Error with "uninitialized reference";
-       --  The RM says, "The default initialization of an object of
-       --  type Constant_Reference_Type or Reference_Type propagates
-       --  Program_Error."
-    end record;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Reference_Type);
- 
-    for Reference_Type'Write use Write;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Reference_Type);
- 
-    for Reference_Type'Read use Read;
- 
-    Empty_Holder : constant Holder := (Controlled with null, 0);
- 
- end Ada.Containers.Indefinite_Holders;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-coinho.adb gcc-8.1.0/gcc/ada/a-coinho.adb
*** gcc-7.3.0/gcc/ada/a-coinho.adb	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-coinho.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,383 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --     A D A . C O N T A I N E R S . I N D E F I N I T E _ H O L D E R S    --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2012-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Unchecked_Deallocation;
- 
- package body Ada.Containers.Indefinite_Holders is
- 
-    procedure Free is
-      new Ada.Unchecked_Deallocation (Element_Type, Element_Access);
- 
-    ---------
-    -- "=" --
-    ---------
- 
-    function "=" (Left, Right : Holder) return Boolean is
-    begin
-       if Left.Element = null and Right.Element = null then
-          return True;
-       elsif Left.Element /= null and Right.Element /= null then
-          return Left.Element.all = Right.Element.all;
-       else
-          return False;
-       end if;
-    end "=";
- 
-    ------------
-    -- Adjust --
-    ------------
- 
-    overriding procedure Adjust (Container : in out Holder) is
-    begin
-       if Container.Element /= null then
-          Container.Element := new Element_Type'(Container.Element.all);
-       end if;
- 
-       Container.Busy := 0;
-    end Adjust;
- 
-    overriding procedure Adjust (Control : in out Reference_Control_Type) is
-    begin
-       if Control.Container /= null then
-          declare
-             B : Natural renames Control.Container.Busy;
-          begin
-             B := B + 1;
-          end;
-       end if;
-    end Adjust;
- 
-    ------------
-    -- Assign --
-    ------------
- 
-    procedure Assign (Target : in out Holder; Source : Holder) is
-    begin
-       if Target.Busy /= 0 then
-          raise Program_Error with "attempt to tamper with elements";
-       end if;
- 
-       if Target.Element /= Source.Element then
-          Free (Target.Element);
- 
-          if Source.Element /= null then
-             Target.Element := new Element_Type'(Source.Element.all);
-          end if;
-       end if;
-    end Assign;
- 
-    -----------
-    -- Clear --
-    -----------
- 
-    procedure Clear (Container : in out Holder) is
-    begin
-       if Container.Busy /= 0 then
-          raise Program_Error with "attempt to tamper with elements";
-       end if;
- 
-       Free (Container.Element);
-    end Clear;
- 
-    ------------------------
-    -- Constant_Reference --
-    ------------------------
- 
-    function Constant_Reference
-      (Container : aliased Holder) return Constant_Reference_Type
-    is
-       Ref : constant Constant_Reference_Type :=
-               (Element => Container.Element.all'Access,
-                Control => (Controlled with Container'Unrestricted_Access));
-       B : Natural renames Ref.Control.Container.Busy;
-    begin
-       B := B + 1;
-       return Ref;
-    end Constant_Reference;
- 
-    ----------
-    -- Copy --
-    ----------
- 
-    function Copy (Source : Holder) return Holder is
-    begin
-       if Source.Element = null then
-          return (Controlled with null, 0);
-       else
-          return (Controlled with new Element_Type'(Source.Element.all), 0);
-       end if;
-    end Copy;
- 
-    -------------
-    -- Element --
-    -------------
- 
-    function Element (Container : Holder) return Element_Type is
-    begin
-       if Container.Element = null then
-          raise Constraint_Error with "container is empty";
-       else
-          return Container.Element.all;
-       end if;
-    end Element;
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    overriding procedure Finalize (Container : in out Holder) is
-    begin
-       if Container.Busy /= 0 then
-          raise Program_Error with "attempt to tamper with elements";
-       end if;
- 
-       Free (Container.Element);
-    end Finalize;
- 
-    overriding procedure Finalize (Control : in out Reference_Control_Type) is
-    begin
-       if Control.Container /= null then
-          declare
-             B : Natural renames Control.Container.Busy;
-          begin
-             B := B - 1;
-          end;
-       end if;
- 
-       Control.Container := null;
-    end Finalize;
- 
-    --------------
-    -- Is_Empty --
-    --------------
- 
-    function Is_Empty (Container : Holder) return Boolean is
-    begin
-       return Container.Element = null;
-    end Is_Empty;
- 
-    ----------
-    -- Move --
-    ----------
- 
-    procedure Move (Target : in out Holder; Source : in out Holder) is
-    begin
-       if Target.Busy /= 0 then
-          raise Program_Error with "attempt to tamper with elements";
-       end if;
- 
-       if Source.Busy /= 0 then
-          raise Program_Error with "attempt to tamper with elements";
-       end if;
- 
-       if Target.Element /= Source.Element then
-          Free (Target.Element);
-          Target.Element := Source.Element;
-          Source.Element := null;
-       end if;
-    end Move;
- 
-    -------------------
-    -- Query_Element --
-    -------------------
- 
-    procedure Query_Element
-      (Container : Holder;
-       Process   : not null access procedure (Element : Element_Type))
-    is
-       B : Natural renames Container'Unrestricted_Access.Busy;
- 
-    begin
-       if Container.Element = null then
-          raise Constraint_Error with "container is empty";
-       end if;
- 
-       B := B + 1;
- 
-       begin
-          Process (Container.Element.all);
-       exception
-          when others =>
-             B := B - 1;
-             raise;
-       end;
- 
-       B := B - 1;
-    end Query_Element;
- 
-    ----------
-    -- Read --
-    ----------
- 
-    procedure Read
-      (Stream    : not null access Ada.Streams.Root_Stream_Type'Class;
-       Container : out Holder)
-    is
-    begin
-       Clear (Container);
- 
-       if not Boolean'Input (Stream) then
-          Container.Element := new Element_Type'(Element_Type'Input (Stream));
-       end if;
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Constant_Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Read;
- 
-    ---------------
-    -- Reference --
-    ---------------
- 
-    function Reference
-      (Container : aliased in out Holder) return Reference_Type
-    is
-       Ref : constant Reference_Type :=
-               (Element => Container.Element.all'Access,
-                Control => (Controlled with Container'Unrestricted_Access));
-    begin
-       Container.Busy := Container.Busy + 1;
-       return Ref;
-    end Reference;
- 
-    ---------------------
-    -- Replace_Element --
-    ---------------------
- 
-    procedure Replace_Element
-      (Container : in out Holder;
-       New_Item  : Element_Type)
-    is
-    begin
-       if Container.Busy /= 0 then
-          raise Program_Error with "attempt to tamper with elements";
-       end if;
- 
-       declare
-          X : Element_Access := Container.Element;
- 
-          --  Element allocator may need an accessibility check in case actual
-          --  type is class-wide or has access discriminants (RM 4.8(10.1) and
-          --  AI12-0035).
- 
-          pragma Unsuppress (Accessibility_Check);
- 
-       begin
-          Container.Element := new Element_Type'(New_Item);
-          Free (X);
-       end;
-    end Replace_Element;
- 
-    ---------------
-    -- To_Holder --
-    ---------------
- 
-    function To_Holder (New_Item : Element_Type) return Holder is
- 
-       --  The element allocator may need an accessibility check in the case the
-       --  actual type is class-wide or has access discriminants (RM 4.8(10.1)
-       --  and AI12-0035).
- 
-       pragma Unsuppress (Accessibility_Check);
- 
-    begin
-       return (Controlled with new Element_Type'(New_Item), 0);
-    end To_Holder;
- 
-    --------------------
-    -- Update_Element --
-    --------------------
- 
-    procedure Update_Element
-      (Container : in out Holder;
-       Process   : not null access procedure (Element : in out Element_Type))
-    is
-       B : Natural renames Container.Busy;
- 
-    begin
-       if Container.Element = null then
-          raise Constraint_Error with "container is empty";
-       end if;
- 
-       B := B + 1;
- 
-       begin
-          Process (Container.Element.all);
-       exception
-          when others =>
-             B := B - 1;
-             raise;
-       end;
- 
-       B := B - 1;
-    end Update_Element;
- 
-    -----------
-    -- Write --
-    -----------
- 
-    procedure Write
-      (Stream    : not null access Ada.Streams.Root_Stream_Type'Class;
-       Container : Holder)
-    is
-    begin
-       Boolean'Output (Stream, Container.Element = null);
- 
-       if Container.Element /= null then
-          Element_Type'Output (Stream, Container.Element.all);
-       end if;
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Constant_Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Write;
- 
- end Ada.Containers.Indefinite_Holders;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-coinho.ads gcc-8.1.0/gcc/ada/a-coinho.ads
*** gcc-7.3.0/gcc/ada/a-coinho.ads	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-coinho.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,178 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --    A D A . C O N T A I N E R S . I N D E F I N I T E _ H O L D E R S     --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2011-2015, Free Software Foundation, 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/>.                                          --
- ------------------------------------------------------------------------------
- 
- private with Ada.Finalization;
- private with Ada.Streams;
- 
- generic
-    type Element_Type (<>) is private;
-    with function "=" (Left, Right : Element_Type) return Boolean is <>;
- 
- package Ada.Containers.Indefinite_Holders is
-    pragma Annotate (CodePeer, Skip_Analysis);
-    pragma Preelaborate (Indefinite_Holders);
-    pragma Remote_Types (Indefinite_Holders);
- 
-    type Holder is tagged private;
-    pragma Preelaborable_Initialization (Holder);
- 
-    Empty_Holder : constant Holder;
- 
-    function "=" (Left, Right : Holder) return Boolean;
- 
-    function To_Holder (New_Item : Element_Type) return Holder;
- 
-    function Is_Empty (Container : Holder) return Boolean;
- 
-    procedure Clear (Container : in out Holder);
- 
-    function Element (Container : Holder) return Element_Type;
- 
-    procedure Replace_Element
-      (Container : in out Holder;
-       New_Item  : Element_Type);
- 
-    procedure Query_Element
-      (Container : Holder;
-       Process   : not null access procedure (Element : Element_Type));
- 
-    procedure Update_Element
-      (Container : in out Holder;
-       Process   : not null access procedure (Element : in out Element_Type));
- 
-    type Constant_Reference_Type
-       (Element : not null access constant Element_Type) is private
-    with
-       Implicit_Dereference => Element;
- 
-    type Reference_Type
-      (Element : not null access Element_Type) is private
-    with
-       Implicit_Dereference => Element;
- 
-    function Constant_Reference
-      (Container : aliased Holder) return Constant_Reference_Type;
-    pragma Inline (Constant_Reference);
- 
-    function Reference
-      (Container : aliased in out Holder) return Reference_Type;
-    pragma Inline (Reference);
- 
-    procedure Assign (Target : in out Holder; Source : Holder);
- 
-    function Copy (Source : Holder) return Holder;
- 
-    procedure Move (Target : in out Holder; Source : in out Holder);
- 
- private
- 
-    use Ada.Finalization;
-    use Ada.Streams;
- 
-    type Element_Access is access all Element_Type;
- 
-    type Holder_Access is access all Holder;
-    for Holder_Access'Storage_Size use 0;
- 
-    procedure Read
-      (Stream    : not null access Ada.Streams.Root_Stream_Type'Class;
-       Container : out Holder);
- 
-    procedure Write
-      (Stream    : not null access Ada.Streams.Root_Stream_Type'Class;
-       Container : Holder);
- 
-    type Holder is new Ada.Finalization.Controlled with record
-       Element : Element_Access;
-       Busy    : Natural := 0;
-    end record;
-    for Holder'Read use Read;
-    for Holder'Write use Write;
- 
-    overriding procedure Adjust (Container : in out Holder);
-    overriding procedure Finalize (Container : in out Holder);
- 
-    type Reference_Control_Type is new Controlled with
-    record
-       Container : Holder_Access;
-    end record;
- 
-    overriding procedure Adjust (Control : in out Reference_Control_Type);
-    pragma Inline (Adjust);
- 
-    overriding procedure Finalize (Control : in out Reference_Control_Type);
-    pragma Inline (Finalize);
- 
-    type Constant_Reference_Type
-      (Element : not null access constant Element_Type) is
-       record
-          Control : Reference_Control_Type :=
-            raise Program_Error with "uninitialized reference";
-          --  The RM says, "The default initialization of an object of
-          --  type Constant_Reference_Type or Reference_Type propagates
-          --  Program_Error."
-       end record;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Constant_Reference_Type);
- 
-    for Constant_Reference_Type'Write use Write;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Constant_Reference_Type);
- 
-    for Constant_Reference_Type'Read use Read;
- 
-    type Reference_Type (Element : not null access Element_Type) is record
-       Control : Reference_Control_Type :=
-         raise Program_Error with "uninitialized reference";
-       --  The RM says, "The default initialization of an object of
-       --  type Constant_Reference_Type or Reference_Type propagates
-       --  Program_Error."
-    end record;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Reference_Type);
- 
-    for Reference_Type'Write use Write;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Reference_Type);
- 
-    for Reference_Type'Read use Read;
- 
-    Empty_Holder : constant Holder := (Controlled with null, 0);
- 
- end Ada.Containers.Indefinite_Holders;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-coinve.adb gcc-8.1.0/gcc/ada/a-coinve.adb
*** gcc-7.3.0/gcc/ada/a-coinve.adb	Wed Apr 27 12:55:18 2016
--- gcc-8.1.0/gcc/ada/a-coinve.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,3663 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --    A D A . C O N T A I N E R S . I N D E F I N I T E _ V E C T O R S     --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2004-2016, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 Ada.Containers.Generic_Array_Sort;
- with Ada.Unchecked_Deallocation;
- 
- with System; use type System.Address;
- 
- package body Ada.Containers.Indefinite_Vectors is
- 
-    pragma Warnings (Off, "variable ""Busy*"" is not referenced");
-    pragma Warnings (Off, "variable ""Lock*"" is not referenced");
-    --  See comment in Ada.Containers.Helpers
- 
-    procedure Free is
-      new Ada.Unchecked_Deallocation (Elements_Type, Elements_Access);
- 
-    procedure Free is
-      new Ada.Unchecked_Deallocation (Element_Type, Element_Access);
- 
-    procedure Append_Slow_Path
-      (Container : in out Vector;
-       New_Item  : Element_Type;
-       Count     : Count_Type);
-    --  This is the slow path for Append. This is split out to minimize the size
-    --  of Append, because we have Inline (Append).
- 
-    ---------
-    -- "&" --
-    ---------
- 
-    --  We decide that the capacity of the result of "&" is the minimum needed
-    --  -- the sum of the lengths of the vector parameters. We could decide to
-    --  make it larger, but we have no basis for knowing how much larger, so we
-    --  just allocate the minimum amount of storage.
- 
-    function "&" (Left, Right : Vector) return Vector is
-    begin
-       return Result : Vector do
-          Reserve_Capacity (Result, Length (Left) + Length (Right));
-          Append (Result, Left);
-          Append (Result, Right);
-       end return;
-    end "&";
- 
-    function "&" (Left  : Vector; Right : Element_Type) return Vector is
-    begin
-       return Result : Vector do
-          Reserve_Capacity (Result, Length (Left) + 1);
-          Append (Result, Left);
-          Append (Result, Right);
-       end return;
-    end "&";
- 
-    function "&" (Left  : Element_Type; Right : Vector) return Vector is
-    begin
-       return Result : Vector do
-          Reserve_Capacity (Result, 1 + Length (Right));
-          Append (Result, Left);
-          Append (Result, Right);
-       end return;
-    end "&";
- 
-    function "&" (Left, Right : Element_Type) return Vector is
-    begin
-       return Result : Vector do
-          Reserve_Capacity (Result, 1 + 1);
-          Append (Result, Left);
-          Append (Result, Right);
-       end return;
-    end "&";
- 
-    ---------
-    -- "=" --
-    ---------
- 
-    overriding function "=" (Left, Right : Vector) return Boolean is
-    begin
-       if Left.Last /= Right.Last then
-          return False;
-       end if;
- 
-       if Left.Length = 0 then
-          return True;
-       end if;
- 
-       declare
-          --  Per AI05-0022, the container implementation is required to detect
-          --  element tampering by a generic actual subprogram.
- 
-          Lock_Left : With_Lock (Left.TC'Unrestricted_Access);
-          Lock_Right : With_Lock (Right.TC'Unrestricted_Access);
-       begin
-          for J in Index_Type range Index_Type'First .. Left.Last loop
-             if Left.Elements.EA (J) = null then
-                if Right.Elements.EA (J) /= null then
-                   return False;
-                end if;
- 
-             elsif Right.Elements.EA (J) = null then
-                return False;
- 
-             elsif Left.Elements.EA (J).all /= Right.Elements.EA (J).all then
-                return False;
-             end if;
-          end loop;
-       end;
- 
-       return True;
-    end "=";
- 
-    ------------
-    -- Adjust --
-    ------------
- 
-    procedure Adjust (Container : in out Vector) is
-    begin
-       --  If the counts are nonzero, execution is technically erroneous, but
-       --  it seems friendly to allow things like concurrent "=" on shared
-       --  constants.
- 
-       Zero_Counts (Container.TC);
- 
-       if Container.Last = No_Index then
-          Container.Elements := null;
-          return;
-       end if;
- 
-       declare
-          L : constant Index_Type := Container.Last;
-          E : Elements_Array renames
-                Container.Elements.EA (Index_Type'First .. L);
- 
-       begin
-          Container.Elements := null;
-          Container.Last := No_Index;
- 
-          Container.Elements := new Elements_Type (L);
- 
-          for J in E'Range loop
-             if E (J) /= null then
-                Container.Elements.EA (J) := new Element_Type'(E (J).all);
-             end if;
- 
-             Container.Last := J;
-          end loop;
-       end;
-    end Adjust;
- 
-    ------------
-    -- Append --
-    ------------
- 
-    procedure Append (Container : in out Vector; New_Item : Vector) is
-    begin
-       if Is_Empty (New_Item) then
-          return;
-       elsif Checks and then Container.Last = Index_Type'Last then
-          raise Constraint_Error with "vector is already at its maximum length";
-       else
-          Insert (Container, Container.Last + 1, New_Item);
-       end if;
-    end Append;
- 
-    procedure Append
-      (Container : in out Vector;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1)
-    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;
- 
-             --  The element allocator may need an accessibility check in the
-             --  case actual type is class-wide or has access discriminants
-             --  (see RM 4.8(10.1) and AI12-0035).
- 
-             pragma Unsuppress (Accessibility_Check);
-          begin
-             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_Slow_Path --
-    ----------------------
- 
-    procedure Append_Slow_Path
-      (Container : in out Vector;
-       New_Item  : Element_Type;
-       Count     : Count_Type)
-    is
-    begin
-       if Count = 0 then
-          return;
-       elsif Checks and then Container.Last = Index_Type'Last then
-          raise Constraint_Error with "vector is already at its maximum length";
-       else
-          Insert (Container, Container.Last + 1, New_Item, Count);
-       end if;
-    end Append_Slow_Path;
- 
-    ------------
-    -- Assign --
-    ------------
- 
-    procedure Assign (Target : in out Vector; Source : Vector) is
-    begin
-       if Target'Address = Source'Address then
-          return;
-       else
-          Target.Clear;
-          Target.Append (Source);
-       end if;
-    end Assign;
- 
-    --------------
-    -- Capacity --
-    --------------
- 
-    function Capacity (Container : Vector) return Count_Type is
-    begin
-       if Container.Elements = null then
-          return 0;
-       else
-          return Container.Elements.EA'Length;
-       end if;
-    end Capacity;
- 
-    -----------
-    -- Clear --
-    -----------
- 
-    procedure Clear (Container : in out Vector) is
-    begin
-       TC_Check (Container.TC);
- 
-       while Container.Last >= Index_Type'First loop
-          declare
-             X : Element_Access := Container.Elements.EA (Container.Last);
-          begin
-             Container.Elements.EA (Container.Last) := null;
-             Container.Last := Container.Last - 1;
-             Free (X);
-          end;
-       end loop;
-    end Clear;
- 
-    ------------------------
-    -- Constant_Reference --
-    ------------------------
- 
-    function Constant_Reference
-      (Container : aliased Vector;
-       Position  : Cursor) return Constant_Reference_Type
-    is
-    begin
-       if Checks then
-          if Position.Container = null then
-             raise Constraint_Error with "Position cursor has no element";
-          end if;
- 
-          if Position.Container /= Container'Unrestricted_Access then
-             raise Program_Error with "Position cursor denotes wrong container";
-          end if;
- 
-          if Position.Index > Position.Container.Last then
-             raise Constraint_Error with "Position cursor is out of range";
-          end if;
-       end if;
- 
-       declare
-          TC : constant Tamper_Counts_Access :=
-            Container.TC'Unrestricted_Access;
-       begin
-          --  The following will raise Constraint_Error if Element is null
- 
-          return R : constant Constant_Reference_Type :=
-            (Element => Container.Elements.EA (Position.Index),
-             Control => (Controlled with TC))
-          do
-             Lock (TC.all);
-          end return;
-       end;
-    end Constant_Reference;
- 
-    function Constant_Reference
-      (Container : aliased Vector;
-       Index     : Index_Type) return Constant_Reference_Type
-    is
-    begin
-       if Checks and then Index > Container.Last then
-          raise Constraint_Error with "Index is out of range";
-       end if;
- 
-       declare
-          TC : constant Tamper_Counts_Access :=
-            Container.TC'Unrestricted_Access;
-       begin
-          --  The following will raise Constraint_Error if Element is null
- 
-          return R : constant Constant_Reference_Type :=
-            (Element => Container.Elements.EA (Index),
-             Control => (Controlled with TC))
-          do
-             Lock (TC.all);
-          end return;
-       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 : Count_Type := 0) return Vector
-    is
-       C : Count_Type;
- 
-    begin
-       if Capacity < Source.Length then
-          if Checks and then Capacity /= 0 then
-             raise Capacity_Error
-               with "Requested capacity is less than Source length";
-          end if;
- 
-          C := Source.Length;
-       else
-          C := Capacity;
-       end if;
- 
-       return Target : Vector do
-          Target.Reserve_Capacity (C);
-          Target.Assign (Source);
-       end return;
-    end Copy;
- 
-    ------------
-    -- Delete --
-    ------------
- 
-    procedure Delete
-      (Container : in out Vector;
-       Index     : Extended_Index;
-       Count     : Count_Type := 1)
-    is
-       Old_Last : constant Index_Type'Base := Container.Last;
-       New_Last : Index_Type'Base;
-       Count2   : Count_Type'Base;  -- count of items from Index to Old_Last
-       J        : Index_Type'Base;  -- first index of items that slide down
- 
-    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 Checks and then 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 Checks and then Index > Old_Last + 1 then
-             raise Constraint_Error with "Index is out of range (too large)";
-          else
-             return;
-          end if;
-       end if;
- 
-       --  Here and elsewhere we treat deleting 0 items from the container as a
-       --  no-op, even when the container is busy, so we simply return.
- 
-       if Count = 0 then
-          return;
-       end if;
- 
-       --  The internal elements array isn't guaranteed to exist unless we have
-       --  elements, so we handle that case here in order to avoid having to
-       --  check it later. (Note that an empty vector can never be busy, so
-       --  there's no semantic harm in returning early.)
- 
-       if Container.Is_Empty then
-          return;
-       end if;
- 
-       --  The tampering bits exist to prevent an item from being deleted (or
-       --  otherwise harmfully manipulated) while it is being visited. Query,
-       --  Update, and Iterate increment the busy count on entry, and decrement
-       --  the count on exit. Delete checks the count to determine whether it is
-       --  being called while the associated callback procedure is executing.
- 
-       TC_Check (Container.TC);
- 
-       --  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 the number of elements requested (Count) for deletion is equal to
-       --  (or greater than) the number of elements available (Count2) for
-       --  deletion beginning at Index, then everything from Index to
-       --  Container.Last is deleted (this is equivalent to Delete_Last).
- 
-       if Count >= Count2 then
-          --  Elements in an indefinite vector are allocated, so we must iterate
-          --  over the loop and deallocate elements one-at-a-time. We work from
-          --  back to front, deleting the last element during each pass, in
-          --  order to gracefully handle deallocation failures.
- 
-          declare
-             EA : Elements_Array renames Container.Elements.EA;
- 
-          begin
-             while Container.Last >= Index loop
-                declare
-                   K : constant Index_Type := Container.Last;
-                   X : Element_Access := EA (K);
- 
-                begin
-                   --  We first isolate the element we're deleting, removing it
-                   --  from the vector before we attempt to deallocate it, in
-                   --  case the deallocation fails.
- 
-                   EA (K) := null;
-                   Container.Last := K - 1;
- 
-                   --  Container invariants have been restored, so it is now
-                   --  safe to attempt to deallocate the element.
- 
-                   Free (X);
-                end;
-             end loop;
-          end;
- 
-          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. For the elements that slide down,
-       --  index value New_Last is the last index value of their new home, and
-       --  index value J is the first index of their old home.
- 
-       if Index_Type'Base'Last >= Count_Type_Last then
-          New_Last := Old_Last - Index_Type'Base (Count);
-          J := Index + Index_Type'Base (Count);
-       else
-          New_Last := Index_Type'Base (Count_Type'Base (Old_Last) - Count);
-          J := Index_Type'Base (Count_Type'Base (Index) + Count);
-       end if;
- 
-       --  The internal elements array isn't guaranteed to exist unless we have
-       --  elements, but we have that guarantee here because we know we have
-       --  elements to slide.  The array index values for each slice have
-       --  already been determined, so what remains to be done is to first
-       --  deallocate the elements that are being deleted, and then slide down
-       --  to Index the elements that aren't being deleted.
- 
-       declare
-          EA : Elements_Array renames Container.Elements.EA;
- 
-       begin
-          --  Before we can slide down the elements that aren't being deleted,
-          --  we need to deallocate the elements that are being deleted.
- 
-          for K in Index .. J - 1 loop
-             declare
-                X : Element_Access := EA (K);
- 
-             begin
-                --  First we remove the element we're about to deallocate from
-                --  the vector, in case the deallocation fails, in order to
-                --  preserve representation invariants.
- 
-                EA (K) := null;
- 
-                --  The element has been removed from the vector, so it is now
-                --  safe to attempt to deallocate it.
- 
-                Free (X);
-             end;
-          end loop;
- 
-          EA (Index .. New_Last) := EA (J .. Old_Last);
-          Container.Last := New_Last;
-       end;
-    end Delete;
- 
-    procedure Delete
-      (Container : in out Vector;
-       Position  : in out Cursor;
-       Count     : Count_Type := 1)
-    is
-    begin
-       if Checks then
-          if Position.Container = null then
-             raise Constraint_Error with "Position cursor has no element";
- 
-          elsif Position.Container /= Container'Unrestricted_Access then
-             raise Program_Error with "Position cursor denotes wrong container";
- 
-          elsif Position.Index > Container.Last then
-             raise Program_Error with "Position index is out of range";
-          end if;
-       end if;
- 
-       Delete (Container, Position.Index, Count);
-       Position := No_Element;
-    end Delete;
- 
-    ------------------
-    -- Delete_First --
-    ------------------
- 
-    procedure Delete_First
-      (Container : in out Vector;
-       Count     : Count_Type := 1)
-    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;
-       Count     : Count_Type := 1)
-    is
-    begin
-       --  It is not permitted to delete items while the container is busy (for
-       --  example, we're in the middle of a passive iteration). However, we
-       --  always treat deleting 0 items as a no-op, even when we're busy, so we
-       --  simply return without checking.
- 
-       if Count = 0 then
-          return;
-       end if;
- 
-       --  We cannot simply subsume the empty case into the loop below (the loop
-       --  would iterate 0 times), because we rename the internal array object
-       --  (which is allocated), but an empty vector isn't guaranteed to have
-       --  actually allocated an array. (Note that an empty vector can never be
-       --  busy, so there's no semantic harm in returning early here.)
- 
-       if Container.Is_Empty then
-          return;
-       end if;
- 
-       --  The tampering bits exist to prevent an item from being deleted (or
-       --  otherwise harmfully manipulated) while it is being visited. Query,
-       --  Update, and Iterate increment the busy count on entry, and decrement
-       --  the count on exit. Delete_Last checks the count to determine whether
-       --  it is being called while the associated callback procedure is
-       --  executing.
- 
-       TC_Check (Container.TC);
- 
-       --  Elements in an indefinite vector are allocated, so we must iterate
-       --  over the loop and deallocate elements one-at-a-time. We work from
-       --  back to front, deleting the last element during each pass, in order
-       --  to gracefully handle deallocation failures.
- 
-       declare
-          E : Elements_Array renames Container.Elements.EA;
- 
-       begin
-          for Indx in 1 .. Count_Type'Min (Count, Container.Length) loop
-             declare
-                J : constant Index_Type := Container.Last;
-                X : Element_Access := E (J);
- 
-             begin
-                --  Note that we first isolate the element we're deleting,
-                --  removing it from the vector, before we actually deallocate
-                --  it, in order to preserve representation invariants even if
-                --  the deallocation fails.
- 
-                E (J) := null;
-                Container.Last := J - 1;
- 
-                --  Container invariants have been restored, so it is now safe
-                --  to deallocate the element.
- 
-                Free (X);
-             end;
-          end loop;
-       end;
-    end Delete_Last;
- 
-    -------------
-    -- Element --
-    -------------
- 
-    function Element
-      (Container : Vector;
-       Index     : Index_Type) return Element_Type
-    is
-    begin
-       if Checks and then Index > Container.Last then
-          raise Constraint_Error with "Index is out of range";
-       end if;
- 
-       declare
-          EA : constant Element_Access := Container.Elements.EA (Index);
-       begin
-          if Checks and then EA = null then
-             raise Constraint_Error with "element is empty";
-          else
-             return EA.all;
-          end if;
-       end;
-    end Element;
- 
-    function Element (Position : Cursor) return Element_Type is
-    begin
-       if Checks then
-          if Position.Container = null then
-             raise Constraint_Error with "Position cursor has no element";
-          end if;
- 
-          if Position.Index > Position.Container.Last then
-             raise Constraint_Error with "Position cursor is out of range";
-          end if;
-       end if;
- 
-       declare
-          EA : constant Element_Access :=
-                 Position.Container.Elements.EA (Position.Index);
-       begin
-          if Checks and then EA = null then
-             raise Constraint_Error with "element is empty";
-          else
-             return EA.all;
-          end if;
-       end;
-    end Element;
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    procedure Finalize (Container : in out Vector) is
-    begin
-       Clear (Container);  --  Checks busy-bit
- 
-       declare
-          X : Elements_Access := Container.Elements;
-       begin
-          Container.Elements := null;
-          Free (X);
-       end;
-    end Finalize;
- 
-    procedure Finalize (Object : in out Iterator) is
-    begin
-       Unbusy (Object.Container.TC);
-    end Finalize;
- 
-    ----------
-    -- Find --
-    ----------
- 
-    function Find
-      (Container : Vector;
-       Item      : Element_Type;
-       Position  : Cursor := No_Element) return Cursor
-    is
-    begin
-       if Checks and then Position.Container /= null then
-          if Position.Container /= Container'Unrestricted_Access then
-             raise Program_Error with "Position cursor denotes wrong container";
-          end if;
- 
-          if Position.Index > Container.Last then
-             raise Program_Error with "Position index is out of range";
-          end if;
-       end if;
- 
-       --  Per AI05-0022, the container implementation is required to detect
-       --  element tampering by a generic actual subprogram.
- 
-       declare
-          Lock : With_Lock (Container.TC'Unrestricted_Access);
-       begin
-          for J in Position.Index .. Container.Last loop
-             if Container.Elements.EA (J).all = Item then
-                return Cursor'(Container'Unrestricted_Access, J);
-             end if;
-          end loop;
- 
-          return No_Element;
-       end;
-    end Find;
- 
-    ----------------
-    -- Find_Index --
-    ----------------
- 
-    function Find_Index
-      (Container : Vector;
-       Item      : Element_Type;
-       Index     : Index_Type := Index_Type'First) return Extended_Index
-    is
-       --  Per AI05-0022, the container implementation is required to detect
-       --  element tampering by a generic actual subprogram.
- 
-       Lock : With_Lock (Container.TC'Unrestricted_Access);
-    begin
-       for Indx in Index .. Container.Last loop
-          if Container.Elements.EA (Indx).all = Item then
-             return Indx;
-          end if;
-       end loop;
- 
-       return No_Index;
-    end Find_Index;
- 
-    -----------
-    -- First --
-    -----------
- 
-    function First (Container : Vector) return Cursor is
-    begin
-       if Is_Empty (Container) then
-          return No_Element;
-       end if;
- 
-       return (Container'Unrestricted_Access, Index_Type'First);
-    end First;
- 
-    function First (Object : Iterator) return Cursor is
-    begin
-       --  The value of the iterator object's Index component influences the
-       --  behavior of the First (and Last) selector function.
- 
-       --  When the Index component is No_Index, this means the iterator
-       --  object was constructed without a start expression, in which case the
-       --  (forward) iteration starts from the (logical) beginning of the entire
-       --  sequence of items (corresponding to Container.First, for a forward
-       --  iterator).
- 
-       --  Otherwise, this is iteration over a partial sequence of items.
-       --  When the Index component isn't No_Index, the iterator object was
-       --  constructed with a start expression, that specifies the position
-       --  from which the (forward) partial iteration begins.
- 
-       if Object.Index = No_Index then
-          return First (Object.Container.all);
-       else
-          return Cursor'(Object.Container, Object.Index);
-       end if;
-    end First;
- 
-    -------------------
-    -- First_Element --
-    -------------------
- 
-    function First_Element (Container : Vector) return Element_Type is
-    begin
-       if Checks and then Container.Last = No_Index then
-          raise Constraint_Error with "Container is empty";
-       end if;
- 
-       declare
-          EA : constant Element_Access :=
-                 Container.Elements.EA (Index_Type'First);
-       begin
-          if Checks and then EA = null then
-             raise Constraint_Error with "first element is empty";
-          else
-             return EA.all;
-          end if;
-       end;
-    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;
- 
-    ---------------------
-    -- Generic_Sorting --
-    ---------------------
- 
-    package body Generic_Sorting is
- 
-       -----------------------
-       -- Local Subprograms --
-       -----------------------
- 
-       function Is_Less (L, R : Element_Access) return Boolean;
-       pragma Inline (Is_Less);
- 
-       -------------
-       -- Is_Less --
-       -------------
- 
-       function Is_Less (L, R : Element_Access) return Boolean is
-       begin
-          if L = null then
-             return R /= null;
-          elsif R = null then
-             return False;
-          else
-             return L.all < R.all;
-          end if;
-       end Is_Less;
- 
-       ---------------
-       -- Is_Sorted --
-       ---------------
- 
-       function Is_Sorted (Container : Vector) return Boolean is
-       begin
-          if Container.Last <= Index_Type'First then
-             return True;
-          end if;
- 
-          --  Per AI05-0022, the container implementation is required to detect
-          --  element tampering by a generic actual subprogram.
- 
-          declare
-             Lock : With_Lock (Container.TC'Unrestricted_Access);
-             E : Elements_Array renames Container.Elements.EA;
-          begin
-             for J in Index_Type'First .. Container.Last - 1 loop
-                if Is_Less (E (J + 1), E (J)) then
-                   return False;
-                end if;
-             end loop;
- 
-             return True;
-          end;
-       end Is_Sorted;
- 
-       -----------
-       -- Merge --
-       -----------
- 
-       procedure Merge (Target, Source : in out Vector) is
-          I, J : Index_Type'Base;
- 
-       begin
-          --  The semantics of Merge changed slightly per AI05-0021. It was
-          --  originally the case that if Target and Source denoted the same
-          --  container object, then the GNAT implementation of Merge did
-          --  nothing. However, it was argued that RM05 did not precisely
-          --  specify the semantics for this corner case. The decision of the
-          --  ARG was that if Target and Source denote the same non-empty
-          --  container object, then Program_Error is raised.
- 
-          if Source.Last < Index_Type'First then  -- Source is empty
-             return;
-          end if;
- 
-          if Checks and then Target'Address = Source'Address then
-             raise Program_Error with
-               "Target and Source denote same non-empty container";
-          end if;
- 
-          if Target.Last < Index_Type'First then  -- Target is empty
-             Move (Target => Target, Source => Source);
-             return;
-          end if;
- 
-          TC_Check (Source.TC);
- 
-          I := Target.Last;  -- original value (before Set_Length)
-          Target.Set_Length (Length (Target) + Length (Source));
- 
-          --  Per AI05-0022, the container implementation is required to detect
-          --  element tampering by a generic actual subprogram.
- 
-          declare
-             TA : Elements_Array renames Target.Elements.EA;
-             SA : Elements_Array renames Source.Elements.EA;
- 
-             Lock_Target : With_Lock (Target.TC'Unchecked_Access);
-             Lock_Source : With_Lock (Source.TC'Unchecked_Access);
-          begin
-             J := Target.Last;  -- new value (after Set_Length)
-             while Source.Last >= Index_Type'First loop
-                pragma Assert
-                  (Source.Last <= Index_Type'First
-                    or else not (Is_Less (SA (Source.Last),
-                                          SA (Source.Last - 1))));
- 
-                if I < Index_Type'First then
-                   declare
-                      Src : Elements_Array renames
-                              SA (Index_Type'First .. Source.Last);
-                   begin
-                      TA (Index_Type'First .. J) := Src;
-                      Src := (others => null);
-                   end;
- 
-                   Source.Last := No_Index;
-                   exit;
-                end if;
- 
-                pragma Assert
-                  (I <= Index_Type'First
-                     or else not (Is_Less (TA (I), TA (I - 1))));
- 
-                declare
-                   Src : Element_Access renames SA (Source.Last);
-                   Tgt : Element_Access renames TA (I);
- 
-                begin
-                   if Is_Less (Src, Tgt) then
-                      Target.Elements.EA (J) := Tgt;
-                      Tgt := null;
-                      I := I - 1;
- 
-                   else
-                      Target.Elements.EA (J) := Src;
-                      Src := null;
-                      Source.Last := Source.Last - 1;
-                   end if;
-                end;
- 
-                J := J - 1;
-             end loop;
-          end;
-       end Merge;
- 
-       ----------
-       -- Sort --
-       ----------
- 
-       procedure Sort (Container : in out Vector) is
-          procedure Sort is new Generic_Array_Sort
-            (Index_Type   => Index_Type,
-             Element_Type => Element_Access,
-             Array_Type   => Elements_Array,
-             "<"          => Is_Less);
- 
-       --  Start of processing for Sort
- 
-       begin
-          if Container.Last <= Index_Type'First then
-             return;
-          end if;
- 
-          --  The exception behavior for the vector container must match that
-          --  for the list container, so we check for cursor tampering here
-          --  (which will catch more things) instead of for element tampering
-          --  (which will catch fewer things). It's true that the elements of
-          --  this vector container could be safely moved around while (say) an
-          --  iteration is taking place (iteration only increments the busy
-          --  counter), and so technically all we would need here is a test for
-          --  element tampering (indicated by the lock counter), that's simply
-          --  an artifact of our array-based implementation. Logically Sort
-          --  requires a check for cursor tampering.
- 
-          TC_Check (Container.TC);
- 
-          --  Per AI05-0022, the container implementation is required to detect
-          --  element tampering by a generic actual subprogram.
- 
-          declare
-             Lock : With_Lock (Container.TC'Unchecked_Access);
-          begin
-             Sort (Container.Elements.EA (Index_Type'First .. Container.Last));
-          end;
-       end Sort;
- 
-    end Generic_Sorting;
- 
-    ------------------------
-    -- Get_Element_Access --
-    ------------------------
- 
-    function Get_Element_Access
-      (Position : Cursor) return not null Element_Access
-    is
-       Ptr : constant Element_Access :=
-               Position.Container.Elements.EA (Position.Index);
- 
-    begin
-       --  An indefinite vector may contain spaces that hold no elements.
-       --  Any iteration over an indefinite vector with spaces will raise
-       --  Constraint_Error.
- 
-       if Ptr = null then
-          raise Constraint_Error;
- 
-       else
-          return Ptr;
-       end if;
-    end Get_Element_Access;
- 
-    -----------------
-    -- Has_Element --
-    -----------------
- 
-    function Has_Element (Position : Cursor) return Boolean is
-    begin
-       if Position.Container = null then
-          return False;
-       else
-          return Position.Index <= Position.Container.Last;
-       end if;
-    end Has_Element;
- 
-    ------------
-    -- Insert --
-    ------------
- 
-    procedure Insert
-      (Container : in out Vector;
-       Before    : Extended_Index;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1)
-    is
-       Old_Length : constant Count_Type := Container.Length;
- 
-       Max_Length : Count_Type'Base;  -- determined from range of Index_Type
-       New_Length : Count_Type'Base;  -- sum of current length and Count
-       New_Last   : Index_Type'Base;  -- last index of vector after insertion
- 
-       Index : Index_Type'Base;  -- scratch for intermediate values
-       J     : Count_Type'Base;  -- scratch
- 
-       New_Capacity : Count_Type'Base;  -- length of new, expanded array
-       Dst_Last     : Index_Type'Base;  -- last index of new, expanded array
-       Dst          : Elements_Access;  -- new, expanded internal array
- 
-    begin
-       if Checks then
-          --  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 + 1 then
-             raise Constraint_Error with
-               "Before index is out of range (too large)";
-          end if;
-       end if;
- 
-       --  We treat inserting 0 items into the container as a no-op, even when
-       --  the container is busy, 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: we cannot simply add these values, because of the possibility
-       --  of overflow.
- 
-       if Checks and then 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_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_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 Checks and then New_Length > Max_Length then
-          raise Constraint_Error with "Count is out of range";
-       end if;
- 
-       --  New_Last is the last index value of the items in the container after
-       --  insertion.  Use the wider of Index_Type'Base and Count_Type'Base to
-       --  compute its value from the New_Length.
- 
-       if Index_Type'Base'Last >= Count_Type_Last then
-          New_Last := No_Index + Index_Type'Base (New_Length);
-       else
-          New_Last := Index_Type'Base (Count_Type'Base (No_Index) + New_Length);
-       end if;
- 
-       if Container.Elements = null then
-          pragma Assert (Container.Last = No_Index);
- 
-          --  This is the simplest case, with which we must always begin: we're
-          --  inserting items into an empty vector that hasn't allocated an
-          --  internal array yet. Note that we don't need to check the busy bit
-          --  here, because an empty container cannot be busy.
- 
-          --  In an indefinite vector, elements are allocated individually, and
-          --  stored as access values on the internal array (the length of which
-          --  represents the vector "capacity"), which is separately allocated.
- 
-          Container.Elements := new Elements_Type (New_Last);
- 
-          --  The element backbone has been successfully allocated, so now we
-          --  allocate the elements.
- 
-          for Idx in Container.Elements.EA'Range loop
- 
-             --  In order to preserve container invariants, we always attempt
-             --  the element allocation first, before setting the Last index
-             --  value, in case the allocation fails (either because there is no
-             --  storage available, or because element initialization fails).
- 
-             declare
-                --  The element allocator may need an accessibility check in the
-                --  case actual type is class-wide or has access discriminants
-                --  (see RM 4.8(10.1) and AI12-0035).
- 
-                pragma Unsuppress (Accessibility_Check);
- 
-             begin
-                Container.Elements.EA (Idx) := new Element_Type'(New_Item);
-             end;
- 
-             --  The allocation of the element succeeded, so it is now safe to
-             --  update the Last index, restoring container invariants.
- 
-             Container.Last := Idx;
-          end loop;
- 
-          return;
-       end if;
- 
-       --  The tampering bits exist to prevent an item from being harmfully
-       --  manipulated while it is being visited. Query, Update, and Iterate
-       --  increment the busy count on entry, and decrement the count on
-       --  exit. Insert checks the count to determine whether it is being called
-       --  while the associated callback procedure is executing.
- 
-       TC_Check (Container.TC);
- 
-       if New_Length <= Container.Elements.EA'Length then
- 
-          --  In this case, we're inserting elements into a vector that has
-          --  already allocated an internal array, and the existing array has
-          --  enough unused storage for the new items.
- 
-          declare
-             E : Elements_Array renames Container.Elements.EA;
-             K : Index_Type'Base;
- 
-          begin
-             if Before > Container.Last then
- 
-                --  The new items are being appended to the vector, so no
-                --  sliding of existing elements is required.
- 
-                for Idx in Before .. New_Last loop
- 
-                   --  In order to preserve container invariants, we always
-                   --  attempt the element allocation first, before setting the
-                   --  Last index value, in case the allocation fails (either
-                   --  because there is no storage available, or because element
-                   --  initialization fails).
- 
-                   declare
-                      --  The element allocator may need an accessibility check
-                      --  in case the actual type is class-wide or has access
-                      --  discriminants (see RM 4.8(10.1) and AI12-0035).
- 
-                      pragma Unsuppress (Accessibility_Check);
- 
-                   begin
-                      E (Idx) := new Element_Type'(New_Item);
-                   end;
- 
-                   --  The allocation of the element succeeded, so it is now
-                   --  safe to update the Last index, restoring container
-                   --  invariants.
- 
-                   Container.Last := Idx;
-                end loop;
- 
-             else
-                --  The new items are being inserted before some existing
-                --  elements, so we must slide the existing elements up to their
-                --  new home. We use the wider of Index_Type'Base and
-                --  Count_Type'Base as the type for intermediate index values.
- 
-                if Index_Type'Base'Last >= Count_Type_Last then
-                   Index := Before + Index_Type'Base (Count);
-                else
-                   Index := Index_Type'Base (Count_Type'Base (Before) + Count);
-                end if;
- 
-                --  The new items are being inserted in the middle of the array,
-                --  in the range [Before, Index). Copy the existing elements to
-                --  the end of the array, to make room for the new items.
- 
-                E (Index .. New_Last) := E (Before .. Container.Last);
-                Container.Last := New_Last;
- 
-                --  We have copied the existing items up to the end of the
-                --  array, to make room for the new items in the middle of
-                --  the array.  Now we actually allocate the new items.
- 
-                --  Note: initialize K outside loop to make it clear that
-                --  K always has a value if the exception handler triggers.
- 
-                K := Before;
- 
-                declare
-                   --  The element allocator may need an accessibility check in
-                   --  the case the actual type is class-wide or has access
-                   --  discriminants (see RM 4.8(10.1) and AI12-0035).
- 
-                   pragma Unsuppress (Accessibility_Check);
- 
-                begin
-                   while K < Index loop
-                      E (K) := new Element_Type'(New_Item);
-                      K := K + 1;
-                   end loop;
- 
-                exception
-                   when others =>
- 
-                      --  Values in the range [Before, K) were successfully
-                      --  allocated, but values in the range [K, Index) are
-                      --  stale (these array positions contain copies of the
-                      --  old items, that did not get assigned a new item,
-                      --  because the allocation failed). We must finish what
-                      --  we started by clearing out all of the stale values,
-                      --  leaving a "hole" in the middle of the array.
- 
-                      E (K .. Index - 1) := (others => null);
-                      raise;
-                end;
-             end if;
-          end;
- 
-          return;
-       end if;
- 
-       --  In this case, we're inserting elements into a vector that has already
-       --  allocated an internal array, but the existing array does not have
-       --  enough storage, so we must allocate a new, longer array. In order to
-       --  guarantee that the amortized insertion cost is O(1), we always
-       --  allocate an array whose length is some power-of-two factor of the
-       --  current array length. (The new array cannot have a length less than
-       --  the New_Length of the container, but its last index value cannot be
-       --  greater than Index_Type'Last.)
- 
-       New_Capacity := Count_Type'Max (1, Container.Elements.EA'Length);
-       while New_Capacity < New_Length loop
-          if New_Capacity > Count_Type'Last / 2 then
-             New_Capacity := Count_Type'Last;
-             exit;
-          end if;
- 
-          New_Capacity := 2 * New_Capacity;
-       end loop;
- 
-       if New_Capacity > Max_Length then
- 
-          --  We have reached the limit of capacity, so no further expansion
-          --  will occur. (This is not a problem, as there is never a need to
-          --  have more capacity than the maximum container length.)
- 
-          New_Capacity := Max_Length;
-       end if;
- 
-       --  We have computed the length of the new internal array (and this is
-       --  what "vector capacity" means), so use that to compute its last index.
- 
-       if Index_Type'Base'Last >= Count_Type_Last then
-          Dst_Last := No_Index + Index_Type'Base (New_Capacity);
-       else
-          Dst_Last :=
-            Index_Type'Base (Count_Type'Base (No_Index) + New_Capacity);
-       end if;
- 
-       --  Now we allocate the new, longer internal array. If the allocation
-       --  fails, we have not changed any container state, so no side-effect
-       --  will occur as a result of propagating the exception.
- 
-       Dst := new Elements_Type (Dst_Last);
- 
-       --  We have our new internal array. All that needs to be done now is to
-       --  copy the existing items (if any) from the old array (the "source"
-       --  array) to the new array (the "destination" array), and then
-       --  deallocate the old array.
- 
-       declare
-          Src : Elements_Access := Container.Elements;
- 
-       begin
-          Dst.EA (Index_Type'First .. Before - 1) :=
-            Src.EA (Index_Type'First .. Before - 1);
- 
-          if Before > Container.Last then
- 
-             --  The new items are being appended to the vector, so no
-             --  sliding of existing elements is required.
- 
-             --  We have copied the elements from to the old source array to the
-             --  new destination array, so we can now deallocate the old array.
- 
-             Container.Elements := Dst;
-             Free (Src);
- 
-             --  Now we append the new items.
- 
-             for Idx in Before .. New_Last loop
- 
-                --  In order to preserve container invariants, we always attempt
-                --  the element allocation first, before setting the Last index
-                --  value, in case the allocation fails (either because there
-                --  is no storage available, or because element initialization
-                --  fails).
- 
-                declare
-                   --  The element allocator may need an accessibility check in
-                   --  the case the actual type is class-wide or has access
-                   --  discriminants (see RM 4.8(10.1) and AI12-0035).
- 
-                   pragma Unsuppress (Accessibility_Check);
- 
-                begin
-                   Dst.EA (Idx) := new Element_Type'(New_Item);
-                end;
- 
-                --  The allocation of the element succeeded, so it is now safe
-                --  to update the Last index, restoring container invariants.
- 
-                Container.Last := Idx;
-             end loop;
- 
-          else
-             --  The new items are being inserted before some existing elements,
-             --  so we must slide the existing elements up to their new home.
- 
-             if Index_Type'Base'Last >= Count_Type_Last then
-                Index := Before + Index_Type'Base (Count);
-             else
-                Index := Index_Type'Base (Count_Type'Base (Before) + Count);
-             end if;
- 
-             Dst.EA (Index .. New_Last) := Src.EA (Before .. Container.Last);
- 
-             --  We have copied the elements from to the old source array to the
-             --  new destination array, so we can now deallocate the old array.
- 
-             Container.Elements := Dst;
-             Container.Last := New_Last;
-             Free (Src);
- 
-             --  The new array has a range in the middle containing null access
-             --  values. Fill in that partition of the array with the new items.
- 
-             for Idx in Before .. Index - 1 loop
- 
-                --  Note that container invariants have already been satisfied
-                --  (in particular, the Last index value of the vector has
-                --  already been updated), so if this allocation fails we simply
-                --  let it propagate.
- 
-                declare
-                   --  The element allocator may need an accessibility check in
-                   --  the case the actual type is class-wide or has access
-                   --  discriminants (see RM 4.8(10.1) and AI12-0035).
- 
-                   pragma Unsuppress (Accessibility_Check);
- 
-                begin
-                   Dst.EA (Idx) := new Element_Type'(New_Item);
-                end;
-             end loop;
-          end if;
-       end;
-    end Insert;
- 
-    procedure Insert
-      (Container : in out Vector;
-       Before    : Extended_Index;
-       New_Item  : Vector)
-    is
-       N : constant Count_Type := Length (New_Item);
-       J : Index_Type'Base;
- 
-    begin
-       --  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;
- 
-       if Container'Address /= New_Item'Address then
- 
-          --  This is the simple case.  New_Item denotes an object different
-          --  from Container, so there's nothing special we need to do to copy
-          --  the source items to their destination, because all of the source
-          --  items are contiguous.
- 
-          declare
-             subtype Src_Index_Subtype is Index_Type'Base range
-               Index_Type'First .. New_Item.Last;
- 
-             Src : Elements_Array renames
-                     New_Item.Elements.EA (Src_Index_Subtype);
- 
-             Dst : Elements_Array renames Container.Elements.EA;
- 
-             Dst_Index : Index_Type'Base;
- 
-          begin
-             Dst_Index := Before - 1;
-             for Src_Index in Src'Range loop
-                Dst_Index := Dst_Index + 1;
- 
-                if Src (Src_Index) /= null then
-                   Dst (Dst_Index) := new Element_Type'(Src (Src_Index).all);
-                end if;
-             end loop;
-          end;
- 
-          return;
-       end if;
- 
-       --  New_Item denotes the same object as Container, so an insertion has
-       --  potentially split the source items.  The first source slice is
-       --  [Index_Type'First, Before), and the second source slice is
-       --  [J, Container.Last], where index value J is the first index of the
-       --  second slice. (J gets computed below, but only after we have
-       --  determined that the second source slice is non-empty.) The
-       --  destination slice is always the range [Before, J). We perform the
-       --  copy in two steps, using each of the two slices of the source items.
- 
-       declare
-          L : constant Index_Type'Base := Before - 1;
- 
-          subtype Src_Index_Subtype is Index_Type'Base range
-            Index_Type'First .. L;
- 
-          Src : Elements_Array renames
-                  Container.Elements.EA (Src_Index_Subtype);
- 
-          Dst : Elements_Array renames Container.Elements.EA;
- 
-          Dst_Index : Index_Type'Base;
- 
-       begin
-          --  We first copy the source items that precede the space we
-          --  inserted. (If Before equals Index_Type'First, then this first
-          --  source slice will be empty, which is harmless.)
- 
-          Dst_Index := Before - 1;
-          for Src_Index in Src'Range loop
-             Dst_Index := Dst_Index + 1;
- 
-             if Src (Src_Index) /= null then
-                Dst (Dst_Index) := new Element_Type'(Src (Src_Index).all);
-             end if;
-          end loop;
- 
-          if Src'Length = N then
- 
-             --  The new items were effectively appended to the container, so we
-             --  have already copied all of the items that need to be copied.
-             --  We return early here, even though the source slice below is
-             --  empty (so the assignment would be harmless), because we want to
-             --  avoid computing J, which will overflow if J is greater than
-             --  Index_Type'Base'Last.
- 
-             return;
-          end if;
-       end;
- 
-       --  Index value J is the first index of the second source slice. (It is
-       --  also 1 greater than the last index of the destination slice.) Note:
-       --  avoid computing J if J is greater than Index_Type'Base'Last, in order
-       --  to avoid overflow. Prevent that by returning early above, immediately
-       --  after copying the first slice of the source, and determining that
-       --  this second slice of the source is empty.
- 
-       if Index_Type'Base'Last >= Count_Type_Last then
-          J := Before + Index_Type'Base (N);
-       else
-          J := Index_Type'Base (Count_Type'Base (Before) + N);
-       end if;
- 
-       declare
-          subtype Src_Index_Subtype is Index_Type'Base range
-            J .. Container.Last;
- 
-          Src : Elements_Array renames
-                  Container.Elements.EA (Src_Index_Subtype);
- 
-          Dst : Elements_Array renames Container.Elements.EA;
- 
-          Dst_Index : Index_Type'Base;
- 
-       begin
-          --  We next copy the source items that follow the space we inserted.
-          --  Index value Dst_Index is the first index of that portion of the
-          --  destination that receives this slice of the source. (For the
-          --  reasons given above, this slice is guaranteed to be non-empty.)
- 
-          if Index_Type'Base'Last >= Count_Type_Last then
-             Dst_Index := J - Index_Type'Base (Src'Length);
-          else
-             Dst_Index := Index_Type'Base (Count_Type'Base (J) - Src'Length);
-          end if;
- 
-          for Src_Index in Src'Range loop
-             if Src (Src_Index) /= null then
-                Dst (Dst_Index) := new Element_Type'(Src (Src_Index).all);
-             end if;
- 
-             Dst_Index := Dst_Index + 1;
-          end loop;
-       end;
-    end Insert;
- 
-    procedure Insert
-      (Container : in out Vector;
-       Before    : Cursor;
-       New_Item  : Vector)
-    is
-       Index : Index_Type'Base;
- 
-    begin
-       if Checks and then Before.Container /= null
-         and then Before.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with "Before cursor denotes wrong container";
-       end if;
- 
-       if Is_Empty (New_Item) then
-          return;
-       end if;
- 
-       if Before.Container = null or else Before.Index > Container.Last then
-          if Checks and then Container.Last = Index_Type'Last then
-             raise Constraint_Error with
-               "vector is already at its maximum length";
-          end if;
- 
-          Index := Container.Last + 1;
- 
-       else
-          Index := Before.Index;
-       end if;
- 
-       Insert (Container, Index, New_Item);
-    end Insert;
- 
-    procedure Insert
-      (Container : in out Vector;
-       Before    : Cursor;
-       New_Item  : Vector;
-       Position  : out Cursor)
-    is
-       Index : Index_Type'Base;
- 
-    begin
-       if Checks and then Before.Container /= null
-         and then Before.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with "Before cursor denotes wrong container";
-       end if;
- 
-       if Is_Empty (New_Item) then
-          if Before.Container = null or else Before.Index > Container.Last then
-             Position := No_Element;
-          else
-             Position := (Container'Unrestricted_Access, Before.Index);
-          end if;
- 
-          return;
-       end if;
- 
-       if Before.Container = null or else Before.Index > Container.Last then
-          if Checks and then Container.Last = Index_Type'Last then
-             raise Constraint_Error with
-               "vector is already at its maximum length";
-          end if;
- 
-          Index := Container.Last + 1;
- 
-       else
-          Index := Before.Index;
-       end if;
- 
-       Insert (Container, Index, New_Item);
- 
-       Position := (Container'Unrestricted_Access, Index);
-    end Insert;
- 
-    procedure Insert
-      (Container : in out Vector;
-       Before    : Cursor;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1)
-    is
-       Index : Index_Type'Base;
- 
-    begin
-       if Checks and then Before.Container /= null
-         and then Before.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with "Before cursor denotes wrong container";
-       end if;
- 
-       if Count = 0 then
-          return;
-       end if;
- 
-       if Before.Container = null or else Before.Index > Container.Last then
-          if Checks and then Container.Last = Index_Type'Last then
-             raise Constraint_Error with
-               "vector is already at its maximum length";
-          end if;
- 
-          Index := Container.Last + 1;
- 
-       else
-          Index := Before.Index;
-       end if;
- 
-       Insert (Container, Index, New_Item, Count);
-    end Insert;
- 
-    procedure Insert
-      (Container : in out Vector;
-       Before    : Cursor;
-       New_Item  : Element_Type;
-       Position  : out Cursor;
-       Count     : Count_Type := 1)
-    is
-       Index : Index_Type'Base;
- 
-    begin
-       if Checks and then Before.Container /= null
-         and then Before.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with "Before cursor denotes wrong container";
-       end if;
- 
-       if Count = 0 then
-          if Before.Container = null or else Before.Index > Container.Last then
-             Position := No_Element;
-          else
-             Position := (Container'Unrestricted_Access, Before.Index);
-          end if;
- 
-          return;
-       end if;
- 
-       if Before.Container = null or else Before.Index > Container.Last then
-          if Checks and then Container.Last = Index_Type'Last then
-             raise Constraint_Error with
-               "vector is already at its maximum length";
-          end if;
- 
-          Index := Container.Last + 1;
- 
-       else
-          Index := Before.Index;
-       end if;
- 
-       Insert (Container, Index, New_Item, Count);
- 
-       Position := (Container'Unrestricted_Access, Index);
-    end Insert;
- 
-    ------------------
-    -- Insert_Space --
-    ------------------
- 
-    procedure Insert_Space
-      (Container : in out Vector;
-       Before    : Extended_Index;
-       Count     : Count_Type := 1)
-    is
-       Old_Length : constant Count_Type := Container.Length;
- 
-       Max_Length : Count_Type'Base;  -- determined from range of Index_Type
-       New_Length : Count_Type'Base;  -- sum of current length and Count
-       New_Last   : Index_Type'Base;  -- last index of vector after insertion
- 
-       Index : Index_Type'Base;  -- scratch for intermediate values
-       J     : Count_Type'Base;  -- scratch
- 
-       New_Capacity : Count_Type'Base;  -- length of new, expanded array
-       Dst_Last     : Index_Type'Base;  -- last index of new, expanded array
-       Dst          : Elements_Access;  -- new, expanded internal array
- 
-    begin
-       if Checks then
-          --  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 + 1 then
-             raise Constraint_Error with
-               "Before index is out of range (too large)";
-          end if;
-       end if;
- 
-       --  We treat inserting 0 items into the container as a no-op, even when
-       --  the container is busy, 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: we cannot simply add these values, because of the possibility
-       --  of overflow.
- 
-       if Checks and then 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_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_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 Checks and then New_Length > Max_Length then
-          raise Constraint_Error with "Count is out of range";
-       end if;
- 
-       --  New_Last is the last index value of the items in the container after
-       --  insertion.  Use the wider of Index_Type'Base and Count_Type'Base to
-       --  compute its value from the New_Length.
- 
-       if Index_Type'Base'Last >= Count_Type_Last then
-          New_Last := No_Index + Index_Type'Base (New_Length);
-       else
-          New_Last := Index_Type'Base (Count_Type'Base (No_Index) + New_Length);
-       end if;
- 
-       if Container.Elements = null then
-          pragma Assert (Container.Last = No_Index);
- 
-          --  This is the simplest case, with which we must always begin: we're
-          --  inserting items into an empty vector that hasn't allocated an
-          --  internal array yet. Note that we don't need to check the busy bit
-          --  here, because an empty container cannot be busy.
- 
-          --  In an indefinite vector, elements are allocated individually, and
-          --  stored as access values on the internal array (the length of which
-          --  represents the vector "capacity"), which is separately allocated.
-          --  We have no elements here (because we're inserting "space"), so all
-          --  we need to do is allocate the backbone.
- 
-          Container.Elements := new Elements_Type (New_Last);
-          Container.Last := New_Last;
- 
-          return;
-       end if;
- 
-       --  The tampering bits exist to prevent an item from being harmfully
-       --  manipulated while it is being visited. Query, Update, and Iterate
-       --  increment the busy count on entry, and decrement the count on exit.
-       --  Insert checks the count to determine whether it is being called while
-       --  the associated callback procedure is executing.
- 
-       TC_Check (Container.TC);
- 
-       if New_Length <= Container.Elements.EA'Length then
- 
-          --  In this case, we are inserting elements into a vector that has
-          --  already allocated an internal array, and the existing array has
-          --  enough unused storage for the new items.
- 
-          declare
-             E : Elements_Array renames Container.Elements.EA;
- 
-          begin
-             if Before <= Container.Last then
- 
-                --  The new space is being inserted before some existing
-                --  elements, so we must slide the existing elements up to
-                --  their new home. We use the wider of Index_Type'Base and
-                --  Count_Type'Base as the type for intermediate index values.
- 
-                if Index_Type'Base'Last >= Count_Type_Last then
-                   Index := Before + Index_Type'Base (Count);
-                else
-                   Index := Index_Type'Base (Count_Type'Base (Before) + Count);
-                end if;
- 
-                E (Index .. New_Last) := E (Before .. Container.Last);
-                E (Before .. Index - 1) := (others => null);
-             end if;
-          end;
- 
-          Container.Last := New_Last;
-          return;
-       end if;
- 
-       --  In this case, we're inserting elements into a vector that has already
-       --  allocated an internal array, but the existing array does not have
-       --  enough storage, so we must allocate a new, longer array. In order to
-       --  guarantee that the amortized insertion cost is O(1), we always
-       --  allocate an array whose length is some power-of-two factor of the
-       --  current array length. (The new array cannot have a length less than
-       --  the New_Length of the container, but its last index value cannot be
-       --  greater than Index_Type'Last.)
- 
-       New_Capacity := Count_Type'Max (1, Container.Elements.EA'Length);
-       while New_Capacity < New_Length loop
-          if New_Capacity > Count_Type'Last / 2 then
-             New_Capacity := Count_Type'Last;
-             exit;
-          end if;
- 
-          New_Capacity := 2 * New_Capacity;
-       end loop;
- 
-       if New_Capacity > Max_Length then
- 
-          --  We have reached the limit of capacity, so no further expansion
-          --  will occur. (This is not a problem, as there is never a need to
-          --  have more capacity than the maximum container length.)
- 
-          New_Capacity := Max_Length;
-       end if;
- 
-       --  We have computed the length of the new internal array (and this is
-       --  what "vector capacity" means), so use that to compute its last index.
- 
-       if Index_Type'Base'Last >= Count_Type_Last then
-          Dst_Last := No_Index + Index_Type'Base (New_Capacity);
-       else
-          Dst_Last :=
-            Index_Type'Base (Count_Type'Base (No_Index) + New_Capacity);
-       end if;
- 
-       --  Now we allocate the new, longer internal array. If the allocation
-       --  fails, we have not changed any container state, so no side-effect
-       --  will occur as a result of propagating the exception.
- 
-       Dst := new Elements_Type (Dst_Last);
- 
-       --  We have our new internal array. All that needs to be done now is to
-       --  copy the existing items (if any) from the old array (the "source"
-       --  array) to the new array (the "destination" array), and then
-       --  deallocate the old array.
- 
-       declare
-          Src : Elements_Access := Container.Elements;
- 
-       begin
-          Dst.EA (Index_Type'First .. Before - 1) :=
-            Src.EA (Index_Type'First .. Before - 1);
- 
-          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.
- 
-             if Index_Type'Base'Last >= Count_Type_Last then
-                Index := Before + Index_Type'Base (Count);
-             else
-                Index := Index_Type'Base (Count_Type'Base (Before) + Count);
-             end if;
- 
-             Dst.EA (Index .. New_Last) := Src.EA (Before .. Container.Last);
-          end if;
- 
-          --  We have copied the elements from to the old, source array to the
-          --  new, destination array, so we can now restore invariants, and
-          --  deallocate the old array.
- 
-          Container.Elements := Dst;
-          Container.Last := New_Last;
-          Free (Src);
-       end;
-    end Insert_Space;
- 
-    procedure Insert_Space
-      (Container : in out Vector;
-       Before    : Cursor;
-       Position  : out Cursor;
-       Count     : Count_Type := 1)
-    is
-       Index : Index_Type'Base;
- 
-    begin
-       if Checks and then Before.Container /= null
-         and then Before.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with "Before cursor denotes wrong container";
-       end if;
- 
-       if Count = 0 then
-          if Before.Container = null or else Before.Index > Container.Last then
-             Position := No_Element;
-          else
-             Position := (Container'Unrestricted_Access, Before.Index);
-          end if;
- 
-          return;
-       end if;
- 
-       if Before.Container = null or else Before.Index > Container.Last then
-          if Checks and then Container.Last = Index_Type'Last then
-             raise Constraint_Error with
-               "vector is already at its maximum length";
-          end if;
- 
-          Index := Container.Last + 1;
- 
-       else
-          Index := Before.Index;
-       end if;
- 
-       Insert_Space (Container, Index, Count);
- 
-       Position := (Container'Unrestricted_Access, Index);
-    end Insert_Space;
- 
-    --------------
-    -- Is_Empty --
-    --------------
- 
-    function Is_Empty (Container : Vector) return Boolean is
-    begin
-       return Container.Last < Index_Type'First;
-    end Is_Empty;
- 
-    -------------
-    -- Iterate --
-    -------------
- 
-    procedure Iterate
-      (Container : Vector;
-       Process   : not null access procedure (Position : Cursor))
-    is
-       Busy : With_Busy (Container.TC'Unrestricted_Access);
-    begin
-       for Indx in Index_Type'First .. Container.Last loop
-          Process (Cursor'(Container'Unrestricted_Access, Indx));
-       end loop;
-    end Iterate;
- 
-    function Iterate
-      (Container : Vector)
-       return Vector_Iterator_Interfaces.Reversible_Iterator'Class
-    is
-       V : constant Vector_Access := Container'Unrestricted_Access;
-    begin
-       --  The value of its Index component influences the behavior of the First
-       --  and Last selector functions of the iterator object. When the Index
-       --  component is No_Index (as is the case here), this means the iterator
-       --  object was constructed without a start expression. This is a complete
-       --  iterator, meaning that the iteration starts from the (logical)
-       --  beginning of the sequence of items.
- 
-       --  Note: For a forward iterator, Container.First is the beginning, and
-       --  for a reverse iterator, Container.Last is the beginning.
- 
-       return It : constant Iterator :=
-         (Limited_Controlled with
-            Container => V,
-            Index     => No_Index)
-       do
-          Busy (Container.TC'Unrestricted_Access.all);
-       end return;
-    end Iterate;
- 
-    function Iterate
-      (Container : Vector;
-       Start     : Cursor)
-       return Vector_Iterator_Interfaces.Reversible_Iterator'Class
-    is
-       V : constant Vector_Access := Container'Unrestricted_Access;
-    begin
-       --  It was formerly the case that when Start = No_Element, the partial
-       --  iterator was defined to behave the same as for a complete iterator,
-       --  and iterate over the entire sequence of items. However, those
-       --  semantics were unintuitive and arguably error-prone (it is too easy
-       --  to accidentally create an endless loop), and so they were changed,
-       --  per the ARG meeting in Denver on 2011/11. However, there was no
-       --  consensus about what positive meaning this corner case should have,
-       --  and so it was decided to simply raise an exception. This does imply,
-       --  however, that it is not possible to use a partial iterator to specify
-       --  an empty sequence of items.
- 
-       if Checks then
-          if Start.Container = null then
-             raise Constraint_Error with
-               "Start position for iterator equals No_Element";
-          end if;
- 
-          if Start.Container /= V then
-             raise Program_Error with
-               "Start cursor of Iterate designates wrong vector";
-          end if;
- 
-          if Start.Index > V.Last then
-             raise Constraint_Error with
-               "Start position for iterator equals No_Element";
-          end if;
-       end if;
- 
-       --  The value of its Index component influences the behavior of the First
-       --  and Last selector functions of the iterator object. When the Index
-       --  component is not No_Index (as is the case here), it means that this
-       --  is a partial iteration, over a subset of the complete sequence of
-       --  items. The iterator object was constructed with a start expression,
-       --  indicating the position from which the iteration begins. Note that
-       --  the start position has the same value irrespective of whether this
-       --  is a forward or reverse iteration.
- 
-       return It : constant Iterator :=
-         (Limited_Controlled with
-            Container => V,
-            Index     => Start.Index)
-       do
-          Busy (Container.TC'Unrestricted_Access.all);
-       end return;
-    end Iterate;
- 
-    ----------
-    -- Last --
-    ----------
- 
-    function Last (Container : Vector) return Cursor is
-    begin
-       if Is_Empty (Container) then
-          return No_Element;
-       end if;
- 
-       return (Container'Unrestricted_Access, Container.Last);
-    end Last;
- 
-    function Last (Object : Iterator) return Cursor is
-    begin
-       --  The value of the iterator object's Index component influences the
-       --  behavior of the Last (and First) selector function.
- 
-       --  When the Index component is No_Index, this means the iterator
-       --  object was constructed without a start expression, in which case the
-       --  (reverse) iteration starts from the (logical) beginning of the entire
-       --  sequence (corresponding to Container.Last, for a reverse iterator).
- 
-       --  Otherwise, this is iteration over a partial sequence of items.
-       --  When the Index component is not No_Index, the iterator object was
-       --  constructed with a start expression, that specifies the position
-       --  from which the (reverse) partial iteration begins.
- 
-       if Object.Index = No_Index then
-          return Last (Object.Container.all);
-       else
-          return Cursor'(Object.Container, Object.Index);
-       end if;
-    end Last;
- 
-    ------------------
-    -- Last_Element --
-    ------------------
- 
-    function Last_Element (Container : Vector) return Element_Type is
-    begin
-       if Checks and then Container.Last = No_Index then
-          raise Constraint_Error with "Container is empty";
-       end if;
- 
-       declare
-          EA : constant Element_Access :=
-                 Container.Elements.EA (Container.Last);
-       begin
-          if Checks and then EA = null then
-             raise Constraint_Error with "last element is empty";
-          else
-             return EA.all;
-          end if;
-       end;
-    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 Count_Type is
-       L : constant Index_Type'Base := Container.Last;
-       F : constant Index_Type := Index_Type'First;
- 
-    begin
-       --  The base range of the index type (Index_Type'Base) might not include
-       --  all values for length (Count_Type). Contrariwise, the index type
-       --  might include values outside the range of length.  Hence we use
-       --  whatever type is wider for intermediate values when calculating
-       --  length. Note that no matter what the index type is, the maximum
-       --  length to which a vector is allowed to grow is always the minimum
-       --  of Count_Type'Last and (IT'Last - IT'First + 1).
- 
-       --  For example, an Index_Type with range -127 .. 127 is only guaranteed
-       --  to have a base range of -128 .. 127, but the corresponding vector
-       --  would have lengths in the range 0 .. 255. In this case we would need
-       --  to use Count_Type'Base for intermediate values.
- 
-       --  Another case would be the index range -2**63 + 1 .. -2**63 + 10. The
-       --  vector would have a maximum length of 10, but the index values lie
-       --  outside the range of Count_Type (which is only 32 bits). In this
-       --  case we would need to use Index_Type'Base for intermediate values.
- 
-       if Count_Type'Base'Last >= Index_Type'Pos (Index_Type'Base'Last) then
-          return Count_Type'Base (L) - Count_Type'Base (F) + 1;
-       else
-          return Count_Type (L - F + 1);
-       end if;
-    end Length;
- 
-    ----------
-    -- Move --
-    ----------
- 
-    procedure Move
-      (Target : in out Vector;
-       Source : in out Vector)
-    is
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       TC_Check (Source.TC);
- 
-       Clear (Target);  --  Checks busy-bit
- 
-       declare
-          Target_Elements : constant Elements_Access := Target.Elements;
-       begin
-          Target.Elements := Source.Elements;
-          Source.Elements := Target_Elements;
-       end;
- 
-       Target.Last := Source.Last;
-       Source.Last := No_Index;
-    end Move;
- 
-    ----------
-    -- Next --
-    ----------
- 
-    function Next (Position : Cursor) return Cursor is
-    begin
-       if Position.Container = null then
-          return No_Element;
-       elsif Position.Index < Position.Container.Last then
-          return (Position.Container, Position.Index + 1);
-       else
-          return No_Element;
-       end if;
-    end Next;
- 
-    function Next (Object : Iterator; Position : Cursor) return Cursor is
-    begin
-       if Position.Container = null then
-          return No_Element;
-       elsif Checks and then Position.Container /= Object.Container then
-          raise Program_Error with
-            "Position cursor of Next designates wrong vector";
-       else
-          return Next (Position);
-       end if;
-    end Next;
- 
-    procedure Next (Position : in out Cursor) is
-    begin
-       if Position.Container = null then
-          return;
-       elsif Position.Index < Position.Container.Last then
-          Position.Index := Position.Index + 1;
-       else
-          Position := No_Element;
-       end if;
-    end Next;
- 
-    -------------
-    -- 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;
-       Count     : Count_Type := 1)
-    is
-    begin
-       Insert (Container, Index_Type'First, New_Item, Count);
-    end Prepend;
- 
-    --------------
-    -- Previous --
-    --------------
- 
-    function Previous (Position : Cursor) return Cursor is
-    begin
-       if Position.Container = null then
-          return No_Element;
-       elsif Position.Index > Index_Type'First then
-          return (Position.Container, Position.Index - 1);
-       else
-          return No_Element;
-       end if;
-    end Previous;
- 
-    function Previous (Object : Iterator; Position : Cursor) return Cursor is
-    begin
-       if Position.Container = null then
-          return No_Element;
-       elsif Checks and then Position.Container /= Object.Container then
-          raise Program_Error with
-            "Position cursor of Previous designates wrong vector";
-       else
-          return Previous (Position);
-       end if;
-    end Previous;
- 
-    procedure Previous (Position : in out Cursor) is
-    begin
-       if Position.Container = null then
-          return;
-       elsif Position.Index > Index_Type'First then
-          Position.Index := Position.Index - 1;
-       else
-          Position := No_Element;
-       end if;
-    end Previous;
- 
-    ----------------------
-    -- Pseudo_Reference --
-    ----------------------
- 
-    function Pseudo_Reference
-      (Container : aliased Vector'Class) return Reference_Control_Type
-    is
-       TC : constant Tamper_Counts_Access := Container.TC'Unrestricted_Access;
-    begin
-       return R : constant Reference_Control_Type := (Controlled with TC) do
-          Lock (TC.all);
-       end return;
-    end Pseudo_Reference;
- 
-    -------------------
-    -- Query_Element --
-    -------------------
- 
-    procedure Query_Element
-      (Container : Vector;
-       Index     : Index_Type;
-       Process   : not null access procedure (Element : Element_Type))
-    is
-       Lock : With_Lock (Container.TC'Unrestricted_Access);
-       V : Vector renames Container'Unrestricted_Access.all;
- 
-    begin
-       if Checks and then Index > Container.Last then
-          raise Constraint_Error with "Index is out of range";
-       end if;
- 
-       if Checks and then V.Elements.EA (Index) = null then
-          raise Constraint_Error with "element is null";
-       end if;
- 
-       Process (V.Elements.EA (Index).all);
-    end Query_Element;
- 
-    procedure Query_Element
-      (Position : Cursor;
-       Process  : not null access procedure (Element : Element_Type))
-    is
-    begin
-       if Checks and then Position.Container = null then
-          raise Constraint_Error with "Position cursor has no element";
-       else
-          Query_Element (Position.Container.all, Position.Index, Process);
-       end if;
-    end Query_Element;
- 
-    ----------
-    -- Read --
-    ----------
- 
-    procedure Read
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : out Vector)
-    is
-       Length : Count_Type'Base;
-       Last   : Index_Type'Base := Index_Type'Pred (Index_Type'First);
-       B      : Boolean;
- 
-    begin
-       Clear (Container);
- 
-       Count_Type'Base'Read (Stream, Length);
- 
-       if Length > Capacity (Container) then
-          Reserve_Capacity (Container, Capacity => Length);
-       end if;
- 
-       for J in Count_Type range 1 .. Length loop
-          Last := Last + 1;
- 
-          Boolean'Read (Stream, B);
- 
-          if B then
-             Container.Elements.EA (Last) :=
-               new Element_Type'(Element_Type'Input (Stream));
-          end if;
- 
-          Container.Last := Last;
-       end loop;
-    end Read;
- 
-    procedure Read
-      (Stream   : not null access Root_Stream_Type'Class;
-       Position : out Cursor)
-    is
-    begin
-       raise Program_Error with "attempt to stream vector cursor";
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Constant_Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Read;
- 
-    ---------------
-    -- Reference --
-    ---------------
- 
-    function Reference
-      (Container : aliased in out Vector;
-       Position  : Cursor) return Reference_Type
-    is
-    begin
-       if Checks then
-          if Position.Container = null then
-             raise Constraint_Error with "Position cursor has no element";
-          end if;
- 
-          if Position.Container /= Container'Unrestricted_Access then
-             raise Program_Error with "Position cursor denotes wrong container";
-          end if;
- 
-          if Position.Index > Position.Container.Last then
-             raise Constraint_Error with "Position cursor is out of range";
-          end if;
-       end if;
- 
-       declare
-          TC : constant Tamper_Counts_Access :=
-            Container.TC'Unrestricted_Access;
-       begin
-          --  The following will raise Constraint_Error if Element is null
- 
-          return R : constant Reference_Type :=
-            (Element => Container.Elements.EA (Position.Index),
-             Control => (Controlled with TC))
-          do
-             Lock (TC.all);
-          end return;
-       end;
-    end Reference;
- 
-    function Reference
-      (Container : aliased in out Vector;
-       Index     : Index_Type) return Reference_Type
-    is
-    begin
-       if Checks and then Index > Container.Last then
-          raise Constraint_Error with "Index is out of range";
-       end if;
- 
-       declare
-          TC : constant Tamper_Counts_Access :=
-            Container.TC'Unrestricted_Access;
-       begin
-          --  The following will raise Constraint_Error if Element is null
- 
-          return R : constant Reference_Type :=
-            (Element => Container.Elements.EA (Index),
-             Control => (Controlled with TC))
-          do
-             Lock (TC.all);
-          end return;
-       end;
-    end Reference;
- 
-    ---------------------
-    -- Replace_Element --
-    ---------------------
- 
-    procedure Replace_Element
-      (Container : in out Vector;
-       Index     : Index_Type;
-       New_Item  : Element_Type)
-    is
-    begin
-       if Checks and then Index > Container.Last then
-          raise Constraint_Error with "Index is out of range";
-       end if;
- 
-       TE_Check (Container.TC);
- 
-       declare
-          X : Element_Access := Container.Elements.EA (Index);
- 
-          --  The element allocator may need an accessibility check in the case
-          --  where the actual type is class-wide or has access discriminants
-          --  (see RM 4.8(10.1) and AI12-0035).
- 
-          pragma Unsuppress (Accessibility_Check);
- 
-       begin
-          Container.Elements.EA (Index) := new Element_Type'(New_Item);
-          Free (X);
-       end;
-    end Replace_Element;
- 
-    procedure Replace_Element
-      (Container : in out Vector;
-       Position  : Cursor;
-       New_Item  : Element_Type)
-    is
-    begin
-       if Checks then
-          if Position.Container = null then
-             raise Constraint_Error with "Position cursor has no element";
-          end if;
- 
-          if Position.Container /= Container'Unrestricted_Access then
-             raise Program_Error with "Position cursor denotes wrong container";
-          end if;
- 
-          if Position.Index > Container.Last then
-             raise Constraint_Error with "Position cursor is out of range";
-          end if;
-       end if;
- 
-       TE_Check (Container.TC);
- 
-       declare
-          X : Element_Access := Container.Elements.EA (Position.Index);
- 
-          --  The element allocator may need an accessibility check in the case
-          --  where the actual type is class-wide or has access discriminants
-          --  (see RM 4.8(10.1) and AI12-0035).
- 
-          pragma Unsuppress (Accessibility_Check);
- 
-       begin
-          Container.Elements.EA (Position.Index) := new Element_Type'(New_Item);
-          Free (X);
-       end;
-    end Replace_Element;
- 
-    ----------------------
-    -- Reserve_Capacity --
-    ----------------------
- 
-    procedure Reserve_Capacity
-      (Container : in out Vector;
-       Capacity  : Count_Type)
-    is
-       N : constant Count_Type := Length (Container);
- 
-       Index : Count_Type'Base;
-       Last  : Index_Type'Base;
- 
-    begin
-       --  Reserve_Capacity can be used to either expand the storage available
-       --  for elements (this would be its typical use, in anticipation of
-       --  future insertion), or to trim back storage. In the latter case,
-       --  storage can only be trimmed back to the limit of the container
-       --  length. Note that Reserve_Capacity neither deletes (active) elements
-       --  nor inserts elements; it only affects container capacity, never
-       --  container length.
- 
-       if Capacity = 0 then
- 
-          --  This is a request to trim back storage, to the minimum amount
-          --  possible given the current state of the container.
- 
-          if N = 0 then
- 
-             --  The container is empty, so in this unique case we can
-             --  deallocate the entire internal array. Note that an empty
-             --  container can never be busy, so there's no need to check the
-             --  tampering bits.
- 
-             declare
-                X : Elements_Access := Container.Elements;
- 
-             begin
-                --  First we remove the internal array from the container, to
-                --  handle the case when the deallocation raises an exception
-                --  (although that's unlikely, since this is simply an array of
-                --  access values, all of which are null).
- 
-                Container.Elements := null;
- 
-                --  Container invariants have been restored, so it is now safe
-                --  to attempt to deallocate the internal array.
- 
-                Free (X);
-             end;
- 
-          elsif N < Container.Elements.EA'Length then
- 
-             --  The container is not empty, and the current length is less than
-             --  the current capacity, so there's storage available to trim. In
-             --  this case, we allocate a new internal array having a length
-             --  that exactly matches the number of items in the
-             --  container. (Reserve_Capacity does not delete active elements,
-             --  so this is the best we can do with respect to minimizing
-             --  storage).
- 
-             TC_Check (Container.TC);
- 
-             declare
-                subtype Array_Index_Subtype is Index_Type'Base range
-                  Index_Type'First .. Container.Last;
- 
-                Src : Elements_Array renames
-                        Container.Elements.EA (Array_Index_Subtype);
- 
-                X : Elements_Access := Container.Elements;
- 
-             begin
-                --  Although we have isolated the old internal array that we're
-                --  going to deallocate, we don't deallocate it until we have
-                --  successfully allocated a new one. If there is an exception
-                --  during allocation (because there is not enough storage), we
-                --  let it propagate without causing any side-effect.
- 
-                Container.Elements := new Elements_Type'(Container.Last, Src);
- 
-                --  We have successfully allocated a new internal array (with a
-                --  smaller length than the old one, and containing a copy of
-                --  just the active elements in the container), so we can
-                --  deallocate the old array.
- 
-                Free (X);
-             end;
-          end if;
- 
-          return;
-       end if;
- 
-       --  Reserve_Capacity can be used to expand the storage available for
-       --  elements, but we do not let the capacity grow beyond the number of
-       --  values in Index_Type'Range. (Were it otherwise, there would be no way
-       --  to refer to the elements with index values greater than
-       --  Index_Type'Last, so that storage would be wasted.) Here we compute
-       --  the Last index value of the new internal array, in a way that avoids
-       --  any possibility of overflow.
- 
-       if Index_Type'Base'Last >= Count_Type_Last then
- 
-          --  We perform a two-part test. First we determine whether the
-          --  computed Last value lies in the base range of the type, and then
-          --  determine whether it lies in the range of the index (sub)type.
- 
-          --  Last must satisfy this relation:
-          --    First + Length - 1 <= Last
-          --  We regroup terms:
-          --    First - 1 <= Last - Length
-          --  Which can rewrite as:
-          --    No_Index <= Last - Length
- 
-          if Checks and then
-            Index_Type'Base'Last - Index_Type'Base (Capacity) < No_Index
-          then
-             raise Constraint_Error with "Capacity is out of range";
-          end if;
- 
-          --  We now know that the computed value of Last is within the base
-          --  range of the type, so it is safe to compute its value:
- 
-          Last := No_Index + Index_Type'Base (Capacity);
- 
-          --  Finally we test whether the value is within the range of the
-          --  generic actual index subtype:
- 
-          if Checks and then Last > Index_Type'Last then
-             raise Constraint_Error with "Capacity is out of range";
-          end if;
- 
-       elsif Index_Type'First <= 0 then
- 
-          --  Here we can compute Last directly, in the normal way. We know that
-          --  No_Index is less than 0, so there is no danger of overflow when
-          --  adding the (positive) value of Capacity.
- 
-          Index := Count_Type'Base (No_Index) + Capacity;  -- Last
- 
-          if Checks and then Index > Count_Type'Base (Index_Type'Last) then
-             raise Constraint_Error with "Capacity is out of range";
-          end if;
- 
-          --  We know that the computed value (having type Count_Type) of Last
-          --  is within the range of the generic actual index subtype, so it is
-          --  safe to convert to Index_Type:
- 
-          Last := Index_Type'Base (Index);
- 
-       else
-          --  Here Index_Type'First (and Index_Type'Last) is positive, so we
-          --  must test the length indirectly (by working backwards from the
-          --  largest possible value of Last), in order to prevent overflow.
- 
-          Index := Count_Type'Base (Index_Type'Last) - Capacity;  -- No_Index
- 
-          if Checks and then Index < Count_Type'Base (No_Index) then
-             raise Constraint_Error with "Capacity is out of range";
-          end if;
- 
-          --  We have determined that the value of Capacity would not create a
-          --  Last index value outside of the range of Index_Type, so we can now
-          --  safely compute its value.
- 
-          Last := Index_Type'Base (Count_Type'Base (No_Index) + Capacity);
-       end if;
- 
-       --  The requested capacity is non-zero, but we don't know yet whether
-       --  this is a request for expansion or contraction of storage.
- 
-       if Container.Elements = null then
- 
-          --  The container is empty (it doesn't even have an internal array),
-          --  so this represents a request to allocate storage having the given
-          --  capacity.
- 
-          Container.Elements := new Elements_Type (Last);
-          return;
-       end if;
- 
-       if Capacity <= N then
- 
-          --  This is a request to trim back storage, but only to the limit of
-          --  what's already in the container. (Reserve_Capacity never deletes
-          --  active elements, it only reclaims excess storage.)
- 
-          if N < Container.Elements.EA'Length then
- 
-             --  The container is not empty (because the requested capacity is
-             --  positive, and less than or equal to the container length), and
-             --  the current length is less than the current capacity, so there
-             --  is storage available to trim. In this case, we allocate a new
-             --  internal array having a length that exactly matches the number
-             --  of items in the container.
- 
-             TC_Check (Container.TC);
- 
-             declare
-                subtype Array_Index_Subtype is Index_Type'Base range
-                  Index_Type'First .. Container.Last;
- 
-                Src : Elements_Array renames
-                        Container.Elements.EA (Array_Index_Subtype);
- 
-                X : Elements_Access := Container.Elements;
- 
-             begin
-                --  Although we have isolated the old internal array that we're
-                --  going to deallocate, we don't deallocate it until we have
-                --  successfully allocated a new one. If there is an exception
-                --  during allocation (because there is not enough storage), we
-                --  let it propagate without causing any side-effect.
- 
-                Container.Elements := new Elements_Type'(Container.Last, Src);
- 
-                --  We have successfully allocated a new internal array (with a
-                --  smaller length than the old one, and containing a copy of
-                --  just the active elements in the container), so it is now
-                --  safe to deallocate the old array.
- 
-                Free (X);
-             end;
-          end if;
- 
-          return;
-       end if;
- 
-       --  The requested capacity is larger than the container length (the
-       --  number of active elements). Whether this represents a request for
-       --  expansion or contraction of the current capacity depends on what the
-       --  current capacity is.
- 
-       if Capacity = Container.Elements.EA'Length then
- 
-          --  The requested capacity matches the existing capacity, so there's
-          --  nothing to do here. We treat this case as a no-op, and simply
-          --  return without checking the busy bit.
- 
-          return;
-       end if;
- 
-       --  There is a change in the capacity of a non-empty container, so a new
-       --  internal array will be allocated. (The length of the new internal
-       --  array could be less or greater than the old internal array. We know
-       --  only that the length of the new internal array is greater than the
-       --  number of active elements in the container.) We must check whether
-       --  the container is busy before doing anything else.
- 
-       TC_Check (Container.TC);
- 
-       --  We now allocate a new internal array, having a length different from
-       --  its current value.
- 
-       declare
-          X : Elements_Access := Container.Elements;
- 
-          subtype Index_Subtype is Index_Type'Base range
-            Index_Type'First .. Container.Last;
- 
-       begin
-          --  We now allocate a new internal array, having a length different
-          --  from its current value.
- 
-          Container.Elements := new Elements_Type (Last);
- 
-          --  We have successfully allocated the new internal array, so now we
-          --  move the existing elements from the existing the old internal
-          --  array onto the new one. Note that we're just copying access
-          --  values, to this should not raise any exceptions.
- 
-          Container.Elements.EA (Index_Subtype) := X.EA (Index_Subtype);
- 
-          --  We have moved the elements from the old internal array, so now we
-          --  can deallocate it.
- 
-          Free (X);
-       end;
-    end Reserve_Capacity;
- 
-    ----------------------
-    -- Reverse_Elements --
-    ----------------------
- 
-    procedure Reverse_Elements (Container : in out Vector) is
-    begin
-       if Container.Length <= 1 then
-          return;
-       end if;
- 
-       --  The exception behavior for the vector container must match that for
-       --  the list container, so we check for cursor tampering here (which will
-       --  catch more things) instead of for element tampering (which will catch
-       --  fewer things). It's true that the elements of this vector container
-       --  could be safely moved around while (say) an iteration is taking place
-       --  (iteration only increments the busy counter), and so technically all
-       --  we would need here is a test for element tampering (indicated by the
-       --  lock counter), that's simply an artifact of our array-based
-       --  implementation. Logically Reverse_Elements requires a check for
-       --  cursor tampering.
- 
-       TC_Check (Container.TC);
- 
-       declare
-          I : Index_Type;
-          J : Index_Type;
-          E : Elements_Array renames Container.Elements.EA;
- 
-       begin
-          I := Index_Type'First;
-          J := Container.Last;
-          while I < J loop
-             declare
-                EI : constant Element_Access := 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 --
-    ------------------
- 
-    function Reverse_Find
-      (Container : Vector;
-       Item      : Element_Type;
-       Position  : Cursor := No_Element) return Cursor
-    is
-       Last : Index_Type'Base;
- 
-    begin
-       if Checks and then Position.Container /= null
-         and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with "Position cursor denotes wrong container";
-       end if;
- 
-       Last :=
-         (if Position.Container = null or else Position.Index > Container.Last
-          then Container.Last
-          else Position.Index);
- 
-       --  Per AI05-0022, the container implementation is required to detect
-       --  element tampering by a generic actual subprogram.
- 
-       declare
-          Lock : With_Lock (Container.TC'Unrestricted_Access);
-       begin
-          for Indx in reverse Index_Type'First .. Last loop
-             if Container.Elements.EA (Indx) /= null
-               and then Container.Elements.EA (Indx).all = Item
-             then
-                return Cursor'(Container'Unrestricted_Access, Indx);
-             end if;
-          end loop;
- 
-          return No_Element;
-       end;
-    end Reverse_Find;
- 
-    ------------------------
-    -- Reverse_Find_Index --
-    ------------------------
- 
-    function Reverse_Find_Index
-      (Container : Vector;
-       Item      : Element_Type;
-       Index     : Index_Type := Index_Type'Last) return Extended_Index
-    is
-       --  Per AI05-0022, the container implementation is required to detect
-       --  element tampering by a generic actual subprogram.
- 
-       Lock : With_Lock (Container.TC'Unrestricted_Access);
- 
-       Last : constant Index_Type'Base :=
-         Index_Type'Min (Container.Last, Index);
- 
-    begin
-       for Indx in reverse Index_Type'First .. Last loop
-          if Container.Elements.EA (Indx) /= null
-            and then Container.Elements.EA (Indx).all = Item
-          then
-             return Indx;
-          end if;
-       end loop;
- 
-       return No_Index;
-    end Reverse_Find_Index;
- 
-    ---------------------
-    -- Reverse_Iterate --
-    ---------------------
- 
-    procedure Reverse_Iterate
-      (Container : Vector;
-       Process   : not null access procedure (Position : Cursor))
-    is
-       Busy : With_Busy (Container.TC'Unrestricted_Access);
-    begin
-       for Indx in reverse Index_Type'First .. Container.Last loop
-          Process (Cursor'(Container'Unrestricted_Access, Indx));
-       end loop;
-    end Reverse_Iterate;
- 
-    ----------------
-    -- Set_Length --
-    ----------------
- 
-    procedure Set_Length (Container : in out Vector; Length : Count_Type) is
-       Count : constant Count_Type'Base := Container.Length - Length;
- 
-    begin
-       --  Set_Length allows the user to set the length explicitly, instead of
-       --  implicitly as a side-effect of deletion or insertion. If the
-       --  requested length is less than the current length, this is equivalent
-       --  to deleting items from the back end of the vector. If the requested
-       --  length is greater than the current length, then this is equivalent to
-       --  inserting "space" (nonce items) at the end.
- 
-       if Count >= 0 then
-          Container.Delete_Last (Count);
- 
-       elsif Checks and then Container.Last >= Index_Type'Last then
-          raise Constraint_Error with "vector is already at its maximum length";
- 
-       else
-          Container.Insert_Space (Container.Last + 1, -Count);
-       end if;
-    end Set_Length;
- 
-    ----------
-    -- Swap --
-    ----------
- 
-    procedure Swap (Container : in out Vector; I, J : Index_Type) is
-    begin
-       if Checks then
-          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;
-       end if;
- 
-       if I = J then
-          return;
-       end if;
- 
-       TE_Check (Container.TC);
- 
-       declare
-          EI : Element_Access renames Container.Elements.EA (I);
-          EJ : Element_Access renames Container.Elements.EA (J);
- 
-          EI_Copy : constant Element_Access := EI;
- 
-       begin
-          EI := EJ;
-          EJ := EI_Copy;
-       end;
-    end Swap;
- 
-    procedure Swap
-      (Container : in out Vector;
-       I, J      : Cursor)
-    is
-    begin
-       if Checks then
-          if I.Container = null then
-             raise Constraint_Error with "I cursor has no element";
-          end if;
- 
-          if J.Container = null then
-             raise Constraint_Error with "J cursor has no element";
-          end if;
- 
-          if I.Container /= Container'Unrestricted_Access then
-             raise Program_Error with "I cursor denotes wrong container";
-          end if;
- 
-          if J.Container /= Container'Unrestricted_Access then
-             raise Program_Error with "J cursor denotes wrong container";
-          end if;
-       end if;
- 
-       Swap (Container, I.Index, J.Index);
-    end Swap;
- 
-    ---------------
-    -- To_Cursor --
-    ---------------
- 
-    function To_Cursor
-      (Container : Vector;
-       Index     : Extended_Index) return Cursor
-    is
-    begin
-       if Index not in Index_Type'First .. Container.Last then
-          return No_Element;
-       end if;
- 
-       return Cursor'(Container'Unrestricted_Access, Index);
-    end To_Cursor;
- 
-    --------------
-    -- To_Index --
-    --------------
- 
-    function To_Index (Position : Cursor) return Extended_Index is
-    begin
-       if Position.Container = null then
-          return No_Index;
-       elsif Position.Index <= Position.Container.Last then
-          return Position.Index;
-       else
-          return No_Index;
-       end if;
-    end To_Index;
- 
-    ---------------
-    -- To_Vector --
-    ---------------
- 
-    function To_Vector (Length : Count_Type) return Vector is
-       Index    : Count_Type'Base;
-       Last     : Index_Type'Base;
-       Elements : Elements_Access;
- 
-    begin
-       if Length = 0 then
-          return Empty_Vector;
-       end if;
- 
-       --  We create a vector object with a capacity that matches the specified
-       --  Length, but we do not allow the vector capacity (the length of the
-       --  internal array) to exceed the number of values in Index_Type'Range
-       --  (otherwise, there would be no way to refer to those components via an
-       --  index).  We must therefore check whether the specified Length would
-       --  create a Last index value greater than Index_Type'Last.
- 
-       if Index_Type'Base'Last >= Count_Type_Last then
- 
-          --  We perform a two-part test. First we determine whether the
-          --  computed Last value lies in the base range of the type, and then
-          --  determine whether it lies in the range of the index (sub)type.
- 
-          --  Last must satisfy this relation:
-          --    First + Length - 1 <= Last
-          --  We regroup terms:
-          --    First - 1 <= Last - Length
-          --  Which can rewrite as:
-          --    No_Index <= Last - Length
- 
-          if Checks and then
-            Index_Type'Base'Last - Index_Type'Base (Length) < No_Index
-          then
-             raise Constraint_Error with "Length is out of range";
-          end if;
- 
-          --  We now know that the computed value of Last is within the base
-          --  range of the type, so it is safe to compute its value:
- 
-          Last := No_Index + Index_Type'Base (Length);
- 
-          --  Finally we test whether the value is within the range of the
-          --  generic actual index subtype:
- 
-          if Checks and then Last > Index_Type'Last then
-             raise Constraint_Error with "Length is out of range";
-          end if;
- 
-       elsif Index_Type'First <= 0 then
- 
-          --  Here we can compute Last directly, in the normal way. We know that
-          --  No_Index is less than 0, so there is no danger of overflow when
-          --  adding the (positive) value of Length.
- 
-          Index := Count_Type'Base (No_Index) + Length;  -- Last
- 
-          if Checks and then Index > Count_Type'Base (Index_Type'Last) then
-             raise Constraint_Error with "Length is out of range";
-          end if;
- 
-          --  We know that the computed value (having type Count_Type) of Last
-          --  is within the range of the generic actual index subtype, so it is
-          --  safe to convert to Index_Type:
- 
-          Last := Index_Type'Base (Index);
- 
-       else
-          --  Here Index_Type'First (and Index_Type'Last) is positive, so we
-          --  must test the length indirectly (by working backwards from the
-          --  largest possible value of Last), in order to prevent overflow.
- 
-          Index := Count_Type'Base (Index_Type'Last) - Length;  -- No_Index
- 
-          if Checks and then Index < Count_Type'Base (No_Index) then
-             raise Constraint_Error with "Length is out of range";
-          end if;
- 
-          --  We have determined that the value of Length would not create a
-          --  Last index value outside of the range of Index_Type, so we can now
-          --  safely compute its value.
- 
-          Last := Index_Type'Base (Count_Type'Base (No_Index) + Length);
-       end if;
- 
-       Elements := new Elements_Type (Last);
- 
-       return Vector'(Controlled with Elements, Last, TC => <>);
-    end To_Vector;
- 
-    function To_Vector
-      (New_Item : Element_Type;
-       Length   : Count_Type) return Vector
-    is
-       Index    : Count_Type'Base;
-       Last     : Index_Type'Base;
-       Elements : Elements_Access;
- 
-    begin
-       if Length = 0 then
-          return Empty_Vector;
-       end if;
- 
-       --  We create a vector object with a capacity that matches the specified
-       --  Length, but we do not allow the vector capacity (the length of the
-       --  internal array) to exceed the number of values in Index_Type'Range
-       --  (otherwise, there would be no way to refer to those components via an
-       --  index). We must therefore check whether the specified Length would
-       --  create a Last index value greater than Index_Type'Last.
- 
-       if Index_Type'Base'Last >= Count_Type_Last then
- 
-          --  We perform a two-part test. First we determine whether the
-          --  computed Last value lies in the base range of the type, and then
-          --  determine whether it lies in the range of the index (sub)type.
- 
-          --  Last must satisfy this relation:
-          --    First + Length - 1 <= Last
-          --  We regroup terms:
-          --    First - 1 <= Last - Length
-          --  Which can rewrite as:
-          --    No_Index <= Last - Length
- 
-          if Checks and then
-            Index_Type'Base'Last - Index_Type'Base (Length) < No_Index
-          then
-             raise Constraint_Error with "Length is out of range";
-          end if;
- 
-          --  We now know that the computed value of Last is within the base
-          --  range of the type, so it is safe to compute its value:
- 
-          Last := No_Index + Index_Type'Base (Length);
- 
-          --  Finally we test whether the value is within the range of the
-          --  generic actual index subtype:
- 
-          if Checks and then Last > Index_Type'Last then
-             raise Constraint_Error with "Length is out of range";
-          end if;
- 
-       elsif Index_Type'First <= 0 then
- 
-          --  Here we can compute Last directly, in the normal way. We know that
-          --  No_Index is less than 0, so there is no danger of overflow when
-          --  adding the (positive) value of Length.
- 
-          Index := Count_Type'Base (No_Index) + Length;  -- Last
- 
-          if Checks and then Index > Count_Type'Base (Index_Type'Last) then
-             raise Constraint_Error with "Length is out of range";
-          end if;
- 
-          --  We know that the computed value (having type Count_Type) of Last
-          --  is within the range of the generic actual index subtype, so it is
-          --  safe to convert to Index_Type:
- 
-          Last := Index_Type'Base (Index);
- 
-       else
-          --  Here Index_Type'First (and Index_Type'Last) is positive, so we
-          --  must test the length indirectly (by working backwards from the
-          --  largest possible value of Last), in order to prevent overflow.
- 
-          Index := Count_Type'Base (Index_Type'Last) - Length;  -- No_Index
- 
-          if Checks and then Index < Count_Type'Base (No_Index) then
-             raise Constraint_Error with "Length is out of range";
-          end if;
- 
-          --  We have determined that the value of Length would not create a
-          --  Last index value outside of the range of Index_Type, so we can now
-          --  safely compute its value.
- 
-          Last := Index_Type'Base (Count_Type'Base (No_Index) + Length);
-       end if;
- 
-       Elements := new Elements_Type (Last);
- 
-       --  We use Last as the index of the loop used to populate the internal
-       --  array with items. In general, we prefer to initialize the loop index
-       --  immediately prior to entering the loop. However, Last is also used in
-       --  the exception handler (to reclaim elements that have been allocated,
-       --  before propagating the exception), and the initialization of Last
-       --  after entering the block containing the handler confuses some static
-       --  analysis tools, with respect to whether Last has been properly
-       --  initialized when the handler executes. So here we initialize our loop
-       --  variable earlier than we prefer, before entering the block, so there
-       --  is no ambiguity.
- 
-       Last := Index_Type'First;
- 
-       declare
-          --  The element allocator may need an accessibility check in the case
-          --  where the actual type is class-wide or has access discriminants
-          --  (see RM 4.8(10.1) and AI12-0035).
- 
-          pragma Unsuppress (Accessibility_Check);
- 
-       begin
-          loop
-             Elements.EA (Last) := new Element_Type'(New_Item);
-             exit when Last = Elements.Last;
-             Last := Last + 1;
-          end loop;
- 
-       exception
-          when others =>
-             for J in Index_Type'First .. Last - 1 loop
-                Free (Elements.EA (J));
-             end loop;
- 
-             Free (Elements);
-             raise;
-       end;
- 
-       return (Controlled with Elements, Last, TC => <>);
-    end To_Vector;
- 
-    --------------------
-    -- Update_Element --
-    --------------------
- 
-    procedure Update_Element
-      (Container : in out Vector;
-       Index     : Index_Type;
-       Process   : not null access procedure (Element : in out Element_Type))
-    is
-       Lock : With_Lock (Container.TC'Unchecked_Access);
-    begin
-       if Checks and then Index > Container.Last then
-          raise Constraint_Error with "Index is out of range";
-       end if;
- 
-       if Checks and then Container.Elements.EA (Index) = null then
-          raise Constraint_Error with "element is null";
-       end if;
- 
-       Process (Container.Elements.EA (Index).all);
-    end Update_Element;
- 
-    procedure Update_Element
-      (Container : in out Vector;
-       Position  : Cursor;
-       Process   : not null access procedure (Element : in out Element_Type))
-    is
-    begin
-       if Checks then
-          if Position.Container = null then
-             raise Constraint_Error with "Position cursor has no element";
-          elsif Position.Container /= Container'Unrestricted_Access then
-             raise Program_Error with "Position cursor denotes wrong container";
-          end if;
-       end if;
- 
-       Update_Element (Container, Position.Index, Process);
-    end Update_Element;
- 
-    -----------
-    -- Write --
-    -----------
- 
-    procedure Write
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : Vector)
-    is
-       N : constant Count_Type := Length (Container);
- 
-    begin
-       Count_Type'Base'Write (Stream, N);
- 
-       if N = 0 then
-          return;
-       end if;
- 
-       declare
-          E : Elements_Array renames Container.Elements.EA;
- 
-       begin
-          for Indx in Index_Type'First .. Container.Last loop
-             if E (Indx) = null then
-                Boolean'Write (Stream, False);
-             else
-                Boolean'Write (Stream, True);
-                Element_Type'Output (Stream, E (Indx).all);
-             end if;
-          end loop;
-       end;
-    end Write;
- 
-    procedure Write
-      (Stream   : not null access Root_Stream_Type'Class;
-       Position : Cursor)
-    is
-    begin
-       raise Program_Error with "attempt to stream vector cursor";
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Constant_Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Write;
- 
- end Ada.Containers.Indefinite_Vectors;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-coinve.ads gcc-8.1.0/gcc/ada/a-coinve.ads
*** gcc-7.3.0/gcc/ada/a-coinve.ads	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-coinve.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,509 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --    A D A . C O N T A I N E R S . I N D E F I N I T E _ V E C T O R S     --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, 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/>.                                          --
- --                                                                          --
- -- This unit was originally developed by Matthew J Heaney.                  --
- ------------------------------------------------------------------------------
- 
- with Ada.Iterator_Interfaces;
- 
- with Ada.Containers.Helpers;
- private with Ada.Finalization;
- private with Ada.Streams;
- 
- generic
-    type Index_Type is range <>;
-    type Element_Type (<>) is private;
- 
-    with function "=" (Left, Right : Element_Type) return Boolean is <>;
- 
- package Ada.Containers.Indefinite_Vectors is
-    pragma Annotate (CodePeer, Skip_Analysis);
-    pragma Preelaborate;
-    pragma Remote_Types;
- 
-    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;
- 
-    type Vector is tagged private
-    with
-      Constant_Indexing => Constant_Reference,
-      Variable_Indexing => Reference,
-      Default_Iterator  => Iterate,
-      Iterator_Element  => Element_Type;
- 
-    pragma Preelaborable_Initialization (Vector);
- 
-    type Cursor is private;
-    pragma Preelaborable_Initialization (Cursor);
- 
-    Empty_Vector : constant Vector;
- 
-    No_Element : constant Cursor;
- 
-    function Has_Element (Position : Cursor) return Boolean;
- 
-    package Vector_Iterator_Interfaces is new
-      Ada.Iterator_Interfaces (Cursor, Has_Element);
- 
-    overriding function "=" (Left, Right : Vector) return Boolean;
- 
-    function To_Vector (Length : Count_Type) return Vector;
- 
-    function To_Vector
-      (New_Item : Element_Type;
-       Length   : Count_Type) return Vector;
- 
-    function "&" (Left, Right : Vector) return Vector;
- 
-    function "&" (Left : Vector; Right : Element_Type) return Vector;
- 
-    function "&" (Left : Element_Type; Right : Vector) return Vector;
- 
-    function "&" (Left, Right : Element_Type) return Vector;
- 
-    function Capacity (Container : Vector) return Count_Type;
- 
-    procedure Reserve_Capacity
-      (Container : in out Vector;
-       Capacity  : Count_Type);
- 
-    function Length (Container : Vector) return Count_Type;
- 
-    procedure Set_Length
-      (Container : in out Vector;
-       Length    : Count_Type);
- 
-    function Is_Empty (Container : Vector) return Boolean;
- 
-    procedure Clear (Container : in out Vector);
- 
-    type Constant_Reference_Type
-       (Element : not null access constant Element_Type) is private
-    with
-       Implicit_Dereference => Element;
- 
-    type Reference_Type (Element : not null access Element_Type) is private
-    with
-       Implicit_Dereference => Element;
- 
-    function Constant_Reference
-      (Container : aliased Vector;
-       Position  : Cursor) return Constant_Reference_Type;
-    pragma Inline (Constant_Reference);
- 
-    function Reference
-      (Container : aliased in out Vector;
-       Position  : Cursor) return Reference_Type;
-    pragma Inline (Reference);
- 
-    function Constant_Reference
-      (Container : aliased Vector;
-       Index     : Index_Type) return Constant_Reference_Type;
-    pragma Inline (Constant_Reference);
- 
-    function Reference
-      (Container : aliased in out Vector;
-       Index     : Index_Type) return Reference_Type;
-    pragma Inline (Reference);
- 
-    function To_Cursor
-      (Container : Vector;
-       Index     : Extended_Index) return Cursor;
- 
-    function To_Index (Position : Cursor) return Extended_Index;
- 
-    function Element
-      (Container : Vector;
-       Index     : Index_Type) return Element_Type;
- 
-    function Element (Position : Cursor) return Element_Type;
- 
-    procedure Replace_Element
-      (Container : in out Vector;
-       Index     : Index_Type;
-       New_Item  : Element_Type);
- 
-    procedure Replace_Element
-      (Container : in out Vector;
-       Position  : Cursor;
-       New_Item  : Element_Type);
- 
-    procedure Query_Element
-      (Container : Vector;
-       Index     : Index_Type;
-       Process   : not null access procedure (Element : Element_Type));
- 
-    procedure Query_Element
-      (Position : Cursor;
-       Process  : not null access procedure (Element : Element_Type));
- 
-    procedure Update_Element
-      (Container : in out Vector;
-       Index     : Index_Type;
-       Process   : not null access procedure (Element : in out Element_Type));
- 
-    procedure Update_Element
-      (Container : in out Vector;
-       Position  : Cursor;
-       Process   : not null access procedure (Element : in out Element_Type));
- 
-    procedure Assign (Target : in out Vector; Source : Vector);
- 
-    function Copy (Source : Vector; Capacity : Count_Type := 0) return Vector;
- 
-    procedure Move (Target : in out Vector; Source : in out Vector);
- 
-    procedure Insert
-      (Container : in out Vector;
-       Before    : Extended_Index;
-       New_Item  : Vector);
- 
-    procedure Insert
-      (Container : in out Vector;
-       Before    : Cursor;
-       New_Item  : Vector);
- 
-    procedure Insert
-      (Container : in out Vector;
-       Before    : Cursor;
-       New_Item  : Vector;
-       Position  : out Cursor);
- 
-    procedure Insert
-      (Container : in out Vector;
-       Before    : Extended_Index;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1);
- 
-    procedure Insert
-      (Container : in out Vector;
-       Before    : Cursor;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1);
- 
-    procedure Insert
-      (Container : in out Vector;
-       Before    : Cursor;
-       New_Item  : Element_Type;
-       Position  : out Cursor;
-       Count     : Count_Type := 1);
- 
-    procedure Prepend
-      (Container : in out Vector;
-       New_Item  : Vector);
- 
-    procedure Prepend
-      (Container : in out Vector;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1);
- 
-    procedure Append
-      (Container : in out Vector;
-       New_Item  : Vector);
- 
-    procedure Append
-      (Container : in out Vector;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1);
- 
-    procedure Insert_Space
-      (Container : in out Vector;
-       Before    : Extended_Index;
-       Count     : Count_Type := 1);
- 
-    procedure Insert_Space
-      (Container : in out Vector;
-       Before    : Cursor;
-       Position  : out Cursor;
-       Count     : Count_Type := 1);
- 
-    procedure Delete
-      (Container : in out Vector;
-       Index     : Extended_Index;
-       Count     : Count_Type := 1);
- 
-    procedure Delete
-      (Container : in out Vector;
-       Position  : in out Cursor;
-       Count     : Count_Type := 1);
- 
-    procedure Delete_First
-      (Container : in out Vector;
-       Count     : Count_Type := 1);
- 
-    procedure Delete_Last
-      (Container : in out Vector;
-       Count     : Count_Type := 1);
- 
-    procedure Reverse_Elements (Container : in out Vector);
- 
-    procedure Swap (Container : in out Vector; I, J : Index_Type);
- 
-    procedure Swap (Container : in out Vector; I, J : Cursor);
- 
-    function First_Index (Container : Vector) return Index_Type;
- 
-    function First (Container : Vector) return Cursor;
- 
-    function First_Element (Container : Vector) return Element_Type;
- 
-    function Last_Index (Container : Vector) return Extended_Index;
- 
-    function Last (Container : Vector) return Cursor;
- 
-    function Last_Element (Container : Vector) return Element_Type;
- 
-    function Next (Position : Cursor) return Cursor;
- 
-    procedure Next (Position : in out Cursor);
- 
-    function Previous (Position : Cursor) return Cursor;
- 
-    procedure Previous (Position : in out Cursor);
- 
-    function Find_Index
-      (Container : Vector;
-       Item      : Element_Type;
-       Index     : Index_Type := Index_Type'First) return Extended_Index;
- 
-    function Find
-      (Container : Vector;
-       Item      : Element_Type;
-       Position  : Cursor := No_Element) return Cursor;
- 
-    function Reverse_Find_Index
-      (Container : Vector;
-       Item      : Element_Type;
-       Index     : Index_Type := Index_Type'Last) return Extended_Index;
- 
-    function Reverse_Find
-      (Container : Vector;
-       Item      : Element_Type;
-       Position  : Cursor := No_Element) return Cursor;
- 
-    function Contains
-      (Container : Vector;
-       Item      : Element_Type) return Boolean;
- 
-    procedure Iterate
-      (Container : Vector;
-       Process   : not null access procedure (Position : Cursor));
- 
-    function Iterate (Container : Vector)
-       return Vector_Iterator_Interfaces.Reversible_Iterator'class;
- 
-    function Iterate
-      (Container : Vector;
-       Start     : Cursor)
-       return Vector_Iterator_Interfaces.Reversible_Iterator'class;
- 
-    procedure Reverse_Iterate
-      (Container : Vector;
-       Process   : not null access procedure (Position : Cursor));
- 
-    generic
-       with function "<" (Left, Right : Element_Type) return Boolean is <>;
-    package Generic_Sorting is
- 
-       function Is_Sorted (Container : Vector) return Boolean;
- 
-       procedure Sort (Container : in out Vector);
- 
-       procedure Merge (Target : in out Vector; Source : in out Vector);
- 
-    end Generic_Sorting;
- 
- private
- 
-    pragma Inline (Append);
-    pragma Inline (First_Index);
-    pragma Inline (Last_Index);
-    pragma Inline (Element);
-    pragma Inline (First_Element);
-    pragma Inline (Last_Element);
-    pragma Inline (Query_Element);
-    pragma Inline (Update_Element);
-    pragma Inline (Replace_Element);
-    pragma Inline (Is_Empty);
-    pragma Inline (Contains);
-    pragma Inline (Next);
-    pragma Inline (Previous);
- 
-    use Ada.Containers.Helpers;
-    package Implementation is new Generic_Implementation;
-    use Implementation;
- 
-    type Element_Access is access Element_Type;
- 
-    type Elements_Array is array (Index_Type range <>) of Element_Access;
-    function "=" (L, R : Elements_Array) return Boolean is abstract;
- 
-    type Elements_Type (Last : Extended_Index) is limited record
-       EA : Elements_Array (Index_Type'First .. Last);
-    end record;
- 
-    type Elements_Access is access all Elements_Type;
- 
-    use Finalization;
-    use Streams;
- 
-    type Vector is new Controlled with record
-       Elements : Elements_Access := null;
-       Last     : Extended_Index := No_Index;
-       TC       : aliased Tamper_Counts;
-    end record;
- 
-    overriding procedure Adjust (Container : in out Vector);
-    overriding procedure Finalize (Container : in out Vector);
- 
-    procedure Write
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : Vector);
- 
-    for Vector'Write use Write;
- 
-    procedure Read
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : out Vector);
- 
-    for Vector'Read use Read;
- 
-    type Vector_Access is access all Vector;
-    for Vector_Access'Storage_Size use 0;
- 
-    type Cursor is record
-       Container : Vector_Access;
-       Index     : Index_Type := Index_Type'First;
-    end record;
- 
-    procedure Read
-      (Stream   : not null access Root_Stream_Type'Class;
-       Position : out Cursor);
- 
-    for Cursor'Read use Read;
- 
-    procedure Write
-      (Stream   : not null access Root_Stream_Type'Class;
-       Position : Cursor);
- 
-    for Cursor'Write use Write;
- 
-    subtype Reference_Control_Type is Implementation.Reference_Control_Type;
-    --  It is necessary to rename this here, so that the compiler can find it
- 
-    type Constant_Reference_Type
-      (Element : not null access constant Element_Type) is
-       record
-          Control : Reference_Control_Type :=
-            raise Program_Error with "uninitialized reference";
-          --  The RM says, "The default initialization of an object of
-          --  type Constant_Reference_Type or Reference_Type propagates
-          --  Program_Error."
-       end record;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Constant_Reference_Type);
- 
-    for Constant_Reference_Type'Write use Write;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Constant_Reference_Type);
- 
-    for Constant_Reference_Type'Read use Read;
- 
-    type Reference_Type
-      (Element : not null access Element_Type) is
-       record
-          Control : Reference_Control_Type :=
-            raise Program_Error with "uninitialized reference";
-          --  The RM says, "The default initialization of an object of
-          --  type Constant_Reference_Type or Reference_Type propagates
-          --  Program_Error."
-       end record;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Reference_Type);
- 
-    for Reference_Type'Write use Write;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       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 Vector'Class) return Reference_Control_Type;
-    pragma Inline (Pseudo_Reference);
-    --  Creates an object of type Reference_Control_Type pointing to the
-    --  container, and increments the Lock. Finalization of this object will
-    --  decrement the Lock.
- 
-    function Get_Element_Access
-      (Position : Cursor) return not null Element_Access;
-    --  Returns a pointer to the element designated by Position.
- 
-    No_Element : constant Cursor := Cursor'(null, Index_Type'First);
- 
-    Empty_Vector : constant Vector := (Controlled with others => <>);
- 
-    type Iterator is new Limited_Controlled and
-      Vector_Iterator_Interfaces.Reversible_Iterator with
-    record
-       Container : Vector_Access;
-       Index     : Index_Type'Base;
-    end record
-      with Disable_Controlled => not T_Check;
- 
-    overriding procedure Finalize (Object : in out Iterator);
- 
-    overriding function First (Object : Iterator) return Cursor;
-    overriding function Last  (Object : Iterator) return Cursor;
- 
-    overriding function Next
-      (Object   : Iterator;
-       Position : Cursor) return Cursor;
- 
-    overriding function Previous
-      (Object   : Iterator;
-       Position : Cursor) return Cursor;
- 
- end Ada.Containers.Indefinite_Vectors;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-colien.adb gcc-8.1.0/gcc/ada/a-colien.adb
*** gcc-7.3.0/gcc/ada/a-colien.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-colien.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,72 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --         A D A . C O M M A N D _ L I N E . E N V I R O N M E N T          --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1996-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- --
- -- 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 System;
- 
- package body Ada.Command_Line.Environment is
- 
-    -----------------------
-    -- Environment_Count --
-    -----------------------
- 
-    function Environment_Count return Natural is
-       function Env_Count return Natural;
-       pragma Import (C, Env_Count, "__gnat_env_count");
- 
-    begin
-       return Env_Count;
-    end Environment_Count;
- 
-    -----------------------
-    -- Environment_Value --
-    -----------------------
- 
-    function Environment_Value (Number : Positive) return String is
-       procedure Fill_Env (E : System.Address; Env_Num : Integer);
-       pragma Import (C, Fill_Env, "__gnat_fill_env");
- 
-       function Len_Env (Env_Num : Integer) return Integer;
-       pragma Import (C, Len_Env, "__gnat_len_env");
- 
-    begin
-       if Number > Environment_Count then
-          raise Constraint_Error;
-       end if;
- 
-       declare
-          Env : aliased String (1 .. Len_Env (Number - 1));
-       begin
-          Fill_Env (Env'Address, Number - 1);
-          return Env;
-       end;
-    end Environment_Value;
- 
- end Ada.Command_Line.Environment;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-colien.ads gcc-8.1.0/gcc/ada/a-colien.ads
*** gcc-7.3.0/gcc/ada/a-colien.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-colien.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,55 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --         A D A . C O M M A N D _ L I N E . E N V I R O N M E N T          --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1996-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- --
- -- 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Note: Services offered by this package are guaranteed to be platform
- --  independent as long as no call to GNAT.OS_Lib.Setenv or to C putenv
- --  routine is done. On some platforms the services below will report new
- --  environment variables (e.g. Windows) on some others it will not
- --  (e.g. GNU/Linux and Solaris).
- 
- package Ada.Command_Line.Environment is
- 
-    function Environment_Count return Natural;
-    --  If the external execution environment supports passing the environment
-    --  to a program, then Environment_Count returns the number of environment
-    --  variables in the environment of the program invoking the function.
-    --  Otherwise it returns 0.  And that's a lot of environment.
- 
-    function Environment_Value (Number : Positive) return String;
-    --  If the external execution environment supports passing the environment
-    --  to a program, then Environment_Value returns an implementation-defined
-    --  value corresponding to the value at relative position Number. If Number
-    --  is outside the range 1 .. Environment_Count, then Constraint_Error is
-    --  propagated.
-    --
-    --  in GNAT: Corresponds to envp [n-1] (for n > 0) in C.
- 
- end Ada.Command_Line.Environment;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-colire.adb gcc-8.1.0/gcc/ada/a-colire.adb
*** gcc-7.3.0/gcc/ada/a-colire.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-colire.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,124 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --             A D A . C O M M A N D _ L I N E . R E M O V E                --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1999-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- --
- -- 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 Ada.Command_Line.Remove is
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    procedure Initialize;
-    --  Initialize the Remove_Count and Remove_Args variables
- 
-    ----------------
-    -- Initialize --
-    ----------------
- 
-    procedure Initialize is
-    begin
-       if Remove_Args = null then
-          Remove_Count := Argument_Count;
-          Remove_Args := new Arg_Nums (1 .. Argument_Count);
- 
-          for J in Remove_Args'Range loop
-             Remove_Args (J) := J;
-          end loop;
-       end if;
-    end Initialize;
- 
-    ---------------------
-    -- Remove_Argument --
-    ---------------------
- 
-    procedure Remove_Argument (Number : Positive) is
-    begin
-       Initialize;
- 
-       if Number > Remove_Count then
-          raise Constraint_Error;
-       end if;
- 
-       Remove_Count := Remove_Count - 1;
- 
-       for J in Number .. Remove_Count loop
-          Remove_Args (J) := Remove_Args (J + 1);
-       end loop;
-    end Remove_Argument;
- 
-    procedure Remove_Argument (Argument : String) is
-    begin
-       for J in reverse 1 .. Argument_Count loop
-          if Argument = Ada.Command_Line.Argument (J) then
-             Remove_Argument (J);
-          end if;
-       end loop;
-    end Remove_Argument;
- 
-    ----------------------
-    -- Remove_Arguments --
-    ----------------------
- 
-    procedure Remove_Arguments (From : Positive; To : Natural) is
-    begin
-       Initialize;
- 
-       if From > Remove_Count
-         or else To > Remove_Count
-       then
-          raise Constraint_Error;
-       end if;
- 
-       if To >= From then
-          Remove_Count := Remove_Count - (To - From + 1);
- 
-          for J in From .. Remove_Count loop
-             Remove_Args (J) := Remove_Args (J + (To - From + 1));
-          end loop;
-       end if;
-    end Remove_Arguments;
- 
-    procedure Remove_Arguments (Argument_Prefix : String) is
-    begin
-       for J in reverse 1 .. Argument_Count loop
-          declare
-             Arg : constant String := Argument (J);
- 
-          begin
-             if Arg'Length >= Argument_Prefix'Length
-               and then Arg (1 .. Argument_Prefix'Length) = Argument_Prefix
-             then
-                Remove_Argument (J);
-             end if;
-          end;
-       end loop;
-    end Remove_Arguments;
- 
- end Ada.Command_Line.Remove;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-colire.ads gcc-8.1.0/gcc/ada/a-colire.ads
*** gcc-7.3.0/gcc/ada/a-colire.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-colire.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,79 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --             A D A . C O M M A N D _ L I N E . R E M O V E                --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1999-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- --
- -- 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 is intended to be used in conjunction with its parent unit,
- --  Ada.Command_Line. It provides facilities for logically removing arguments
- --  from the command line, so that subsequent calls to Argument_Count and
- --  Argument will reflect the removals.
- 
- --  For example, if the original command line has three arguments A B C, so
- --  that Argument_Count is initially three, then after removing B, the second
- --  argument, Argument_Count will be 2, and Argument (2) will return C.
- 
- package Ada.Command_Line.Remove is
-    pragma Preelaborate;
- 
-    procedure Remove_Argument (Number : Positive);
-    --  Removes the argument identified by Number, which must be in the
-    --  range 1 .. Argument_Count (i.e. an in range argument number which
-    --  reflects removals). If Number is out of range Constraint_Error
-    --  will be raised.
-    --
-    --  Note: the numbering of arguments greater than Number is affected
-    --  by the call. If you need a loop through the arguments, removing
-    --  some as you go, run the loop in reverse to avoid confusion from
-    --  this renumbering:
-    --
-    --    for J in reverse 1 .. Argument_Count loop
-    --      if Should_Remove (Arguments (J)) then
-    --        Remove_Argument (J);
-    --      end if;
-    --    end loop;
-    --
-    --  Reversing the loop in this manner avoids the confusion.
- 
-    procedure Remove_Arguments (From : Positive; To : Natural);
-    --  Removes arguments in the given From..To range. From must be in the
-    --  range 1 .. Argument_Count and To in the range 0 .. Argument_Count.
-    --  Constraint_Error is raised if either argument is out of range. If
-    --  To is less than From, then the call has no effect.
- 
-    procedure Remove_Argument (Argument : String);
-    --  Removes the argument which matches the given string Argument. Has
-    --  no effect if no argument matches the string. If more than one
-    --  argument matches the string, all are removed.
- 
-    procedure Remove_Arguments (Argument_Prefix : String);
-    --  Removes all arguments whose prefix matches Argument_Prefix. Has
-    --  no effect if no argument matches the string. For example a call
-    --  to Remove_Arguments ("--") removes all arguments starting with --.
- 
- end Ada.Command_Line.Remove;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-comlin.adb gcc-8.1.0/gcc/ada/a-comlin.adb
*** gcc-7.3.0/gcc/ada/a-comlin.adb	Tue Feb 25 15:15:44 2014
--- gcc-8.1.0/gcc/ada/a-comlin.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,131 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                     A D A . C O M M A N D _ L I N E                      --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2013, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 Compiler_Unit_Warning;
- 
- with System; use System;
- 
- package body Ada.Command_Line is
- 
-    function Arg_Count return Natural;
-    pragma Import (C, Arg_Count, "__gnat_arg_count");
- 
-    procedure Fill_Arg (A : System.Address; Arg_Num : Integer);
-    pragma Import (C, Fill_Arg, "__gnat_fill_arg");
- 
-    function Len_Arg (Arg_Num : Integer) return Integer;
-    pragma Import (C, Len_Arg, "__gnat_len_arg");
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    function Initialized return Boolean;
-    --  Checks to ensure that gnat_argc and gnat_argv have been properly
-    --  initialized.  Returns false if not, or if argv / argc are
-    --  unsupported on the target (e.g. VxWorks).
- 
-    --------------
-    -- Argument --
-    --------------
- 
-    function Argument (Number : Positive) return String is
-       Num : Positive;
- 
-    begin
-       if Number > Argument_Count then
-          raise Constraint_Error;
-       end if;
- 
-       if Remove_Args = null then
-          Num := Number;
-       else
-          Num := Remove_Args (Number);
-       end if;
- 
-       declare
-          Arg : aliased String (1 .. Len_Arg (Num));
-       begin
-          Fill_Arg (Arg'Address, Num);
-          return Arg;
-       end;
-    end Argument;
- 
-    --------------------
-    -- Argument_Count --
-    --------------------
- 
-    function Argument_Count return Natural is
-    begin
-       if not Initialized then
-          --  RM A.15 (11)
-          return 0;
-       end if;
- 
-       if Remove_Args = null then
-          return Arg_Count - 1;
-       else
-          return Remove_Count;
-       end if;
-    end Argument_Count;
- 
-    -----------------
-    -- Initialized --
-    -----------------
- 
-    function Initialized return Boolean is
-       gnat_argv : System.Address;
-       pragma Import (C, gnat_argv, "gnat_argv");
- 
-    begin
-       return gnat_argv /= System.Null_Address;
-    end Initialized;
- 
-    ------------------
-    -- Command_Name --
-    ------------------
- 
-    function Command_Name return String is
-    begin
-       if not Initialized then
-          return "";
-       end if;
- 
-       declare
-          Arg : aliased String (1 .. Len_Arg (0));
- 
-       begin
-          Fill_Arg (Arg'Address, 0);
-          return Arg;
-       end;
-    end Command_Name;
- 
- end Ada.Command_Line;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-comlin.ads gcc-8.1.0/gcc/ada/a-comlin.ads
*** gcc-7.3.0/gcc/ada/a-comlin.ads	Tue Feb 25 15:15:44 2014
--- gcc-8.1.0/gcc/ada/a-comlin.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,139 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                     A D A . C O M M A N D _ L I N E                      --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2013, Free Software Foundation, 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- pragma Compiler_Unit_Warning;
- 
- package Ada.Command_Line is
-    pragma Preelaborate;
- 
-    function Argument_Count return Natural;
-    --  If the external execution environment supports passing arguments to a
-    --  program, then Argument_Count returns the number of arguments passed to
-    --  the program invoking the function. Otherwise it return 0.
-    --
-    --  In GNAT: Corresponds to (argc - 1) in C.
- 
-    function Argument (Number : Positive) return String;
-    --  If the external execution environment supports passing arguments to
-    --  a program, then Argument returns an implementation-defined value
-    --  corresponding to the argument at relative position Number. If Number
-    --  is outside the range 1 .. Argument_Count, then Constraint_Error is
-    --  propagated.
-    --
-    --  in GNAT: Corresponds to argv [n] (for n > 0) in C.
- 
-    function Command_Name return String;
-    --  If the external execution environment supports passing arguments to
-    --  a program, then Command_Name returns an implementation-defined value
-    --  corresponding to the name of the command invoking the program.
-    --  Otherwise Command_Name returns the null string.
-    --
-    --  in GNAT: Corresponds to argv [0] in C.
- 
-    type Exit_Status is new Integer;
- 
-    Success : constant Exit_Status;
-    Failure : constant Exit_Status;
- 
-    procedure Set_Exit_Status (Code : Exit_Status);
- 
-    ------------------------------------
-    -- Note on Interface Requirements --
-    ------------------------------------
- 
-    --  Services in this package are not supported during the elaboration of an
-    --  auto-initialized Stand-Alone Library.
- 
-    --  If the main program is in Ada, this package works as specified without
-    --  any other work than the normal steps of WITH'ing the package and then
-    --  calling the desired routines.
- 
-    --  If the main program is not in Ada, then the information must be made
-    --  available for this package to work correctly. In particular, it is
-    --  required that the global variable "gnat_argc" contain the number of
-    --  arguments, and that the global variable "gnat_argv" points to an
-    --  array of null-terminated strings, the first entry being the command
-    --  name, and the remaining entries being the command arguments.
- 
-    --  These correspond to the normal argc/argv variables passed to a C
-    --  main program, and the following is an example of a complete C main
-    --  program that stores the required information:
- 
-    --    main(int argc, char **argv, char **envp)
-    --    {
-    --       extern int    gnat_argc;
-    --       extern char **gnat_argv;
-    --       extern char **gnat_envp;
-    --       gnat_argc = argc;
-    --       gnat_argv = argv;
-    --       gnat_envp = envp;
- 
-    --       adainit();
-    --       adamain();
-    --       adafinal();
-    --    }
- 
-    --  The assignment statements ensure that the necessary information is
-    --  available for finding the command name and command line arguments.
- 
- private
-    Success : constant Exit_Status := 0;
-    Failure : constant Exit_Status := 1;
- 
-    --  The following locations support the operation of the package
-    --  Ada.Command_Line.Remove, which provides facilities for logically
-    --  removing arguments from the command line. If one of the remove
-    --  procedures is called in this unit, then Remove_Args/Remove_Count
-    --  are set to indicate which arguments are removed. If no such calls
-    --  have been made, then Remove_Args is null.
- 
-    Remove_Count : Natural;
-    --  Number of arguments reflecting removals. Not defined unless
-    --  Remove_Args is non-null.
- 
-    type Arg_Nums is array (Positive range <>) of Positive;
-    type Arg_Nums_Ptr is access Arg_Nums;
-    --  An array that maps logical argument numbers (reflecting removal)
-    --  to physical argument numbers (e.g. if the first argument has been
-    --  removed, but not the second, then Arg_Nums (1) will be set to 2.
- 
-    Remove_Args : Arg_Nums_Ptr := null;
-    --  Left set to null if no remove calls have been made, otherwise set
-    --  to point to an appropriate mapping array. Only the first Remove_Count
-    --  elements are relevant.
- 
-    pragma Import (C, Set_Exit_Status, "__gnat_set_exit_status");
- 
- end Ada.Command_Line;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-comutr.adb gcc-8.1.0/gcc/ada/a-comutr.adb
*** gcc-7.3.0/gcc/ada/a-comutr.adb	Wed Apr 27 12:55:18 2016
--- gcc-8.1.0/gcc/ada/a-comutr.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,2676 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --         A D A . C O N T A I N E R S . M U L T I W A Y _ T R E E S        --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2004-2016, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 Ada.Unchecked_Conversion;
- with Ada.Unchecked_Deallocation;
- 
- with System; use type System.Address;
- 
- package body Ada.Containers.Multiway_Trees is
- 
-    pragma Warnings (Off, "variable ""Busy*"" is not referenced");
-    pragma Warnings (Off, "variable ""Lock*"" is not referenced");
-    --  See comment in Ada.Containers.Helpers
- 
-    --------------------
-    --  Root_Iterator --
-    --------------------
- 
-    type Root_Iterator is abstract new Limited_Controlled and
-      Tree_Iterator_Interfaces.Forward_Iterator with
-    record
-       Container : Tree_Access;
-       Subtree   : Tree_Node_Access;
-    end record
-      with Disable_Controlled => not T_Check;
- 
-    overriding procedure Finalize (Object : in out Root_Iterator);
- 
-    -----------------------
-    --  Subtree_Iterator --
-    -----------------------
- 
-    --  ??? these headers are a bit odd, but for sure they do not substitute
-    --  for documenting things, what *is* a Subtree_Iterator?
- 
-    type Subtree_Iterator is new Root_Iterator with null record;
- 
-    overriding function First (Object : Subtree_Iterator) return Cursor;
- 
-    overriding function Next
-      (Object   : Subtree_Iterator;
-       Position : Cursor) return Cursor;
- 
-    ---------------------
-    --  Child_Iterator --
-    ---------------------
- 
-    type Child_Iterator is new Root_Iterator and
-      Tree_Iterator_Interfaces.Reversible_Iterator with null record
-        with Disable_Controlled => not T_Check;
- 
-    overriding function First (Object : Child_Iterator) return Cursor;
- 
-    overriding function Next
-      (Object   : Child_Iterator;
-       Position : Cursor) return Cursor;
- 
-    overriding function Last (Object : Child_Iterator) return Cursor;
- 
-    overriding function Previous
-      (Object   : Child_Iterator;
-       Position : Cursor) return Cursor;
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    function Root_Node (Container : Tree) return Tree_Node_Access;
- 
-    procedure Deallocate_Node is
-       new Ada.Unchecked_Deallocation (Tree_Node_Type, Tree_Node_Access);
- 
-    procedure Deallocate_Children
-      (Subtree : Tree_Node_Access;
-       Count   : in out Count_Type);
- 
-    procedure Deallocate_Subtree
-      (Subtree : in out Tree_Node_Access;
-       Count   : in out Count_Type);
- 
-    function Equal_Children
-      (Left_Subtree, Right_Subtree : Tree_Node_Access) return Boolean;
- 
-    function Equal_Subtree
-      (Left_Subtree, Right_Subtree : Tree_Node_Access) return Boolean;
- 
-    procedure Iterate_Children
-      (Container : Tree_Access;
-       Subtree   : Tree_Node_Access;
-       Process   : not null access procedure (Position : Cursor));
- 
-    procedure Iterate_Subtree
-      (Container : Tree_Access;
-       Subtree   : Tree_Node_Access;
-       Process   : not null access procedure (Position : Cursor));
- 
-    procedure Copy_Children
-      (Source : Children_Type;
-       Parent : Tree_Node_Access;
-       Count  : in out Count_Type);
- 
-    procedure Copy_Subtree
-      (Source : Tree_Node_Access;
-       Parent : Tree_Node_Access;
-       Target : out Tree_Node_Access;
-       Count  : in out Count_Type);
- 
-    function Find_In_Children
-      (Subtree : Tree_Node_Access;
-       Item    : Element_Type) return Tree_Node_Access;
- 
-    function Find_In_Subtree
-      (Subtree : Tree_Node_Access;
-       Item    : Element_Type) return Tree_Node_Access;
- 
-    function Child_Count (Children : Children_Type) return Count_Type;
- 
-    function Subtree_Node_Count
-      (Subtree : Tree_Node_Access) return Count_Type;
- 
-    function Is_Reachable (From, To : Tree_Node_Access) return Boolean;
- 
-    procedure Remove_Subtree (Subtree : Tree_Node_Access);
- 
-    procedure Insert_Subtree_Node
-      (Subtree : Tree_Node_Access;
-       Parent  : Tree_Node_Access;
-       Before  : Tree_Node_Access);
- 
-    procedure Insert_Subtree_List
-      (First  : Tree_Node_Access;
-       Last   : Tree_Node_Access;
-       Parent : Tree_Node_Access;
-       Before : Tree_Node_Access);
- 
-    procedure Splice_Children
-      (Target_Parent : Tree_Node_Access;
-       Before        : Tree_Node_Access;
-       Source_Parent : Tree_Node_Access);
- 
-    ---------
-    -- "=" --
-    ---------
- 
-    function "=" (Left, Right : Tree) return Boolean is
-    begin
-       return Equal_Children (Root_Node (Left), Root_Node (Right));
-    end "=";
- 
-    ------------
-    -- Adjust --
-    ------------
- 
-    procedure Adjust (Container : in out Tree) is
-       Source       : constant Children_Type := Container.Root.Children;
-       Source_Count : constant Count_Type := Container.Count;
-       Target_Count : Count_Type;
- 
-    begin
-       --  We first restore the target container to its default-initialized
-       --  state, before we attempt any allocation, to ensure that invariants
-       --  are preserved in the event that the allocation fails.
- 
-       Container.Root.Children := Children_Type'(others => null);
-       Zero_Counts (Container.TC);
-       Container.Count := 0;
- 
-       --  Copy_Children returns a count of the number of nodes that it
-       --  allocates, but it works by incrementing the value that is passed
-       --  in. We must therefore initialize the count value before calling
-       --  Copy_Children.
- 
-       Target_Count := 0;
- 
-       --  Now we attempt the allocation of subtrees. The invariants are
-       --  satisfied even if the allocation fails.
- 
-       Copy_Children (Source, Root_Node (Container), Target_Count);
-       pragma Assert (Target_Count = Source_Count);
- 
-       Container.Count := Source_Count;
-    end Adjust;
- 
-    -------------------
-    -- Ancestor_Find --
-    -------------------
- 
-    function Ancestor_Find
-      (Position : Cursor;
-       Item     : Element_Type) return Cursor
-    is
-       R, N : Tree_Node_Access;
- 
-    begin
-       if Checks and then Position = No_Element then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       --  Commented-out pending official ruling from ARG.  ???
- 
-       --  if Position.Container /= Container'Unrestricted_Access then
-       --     raise Program_Error with "Position cursor not in container";
-       --  end if;
- 
-       --  AI-0136 says to raise PE if Position equals the root node. This does
-       --  not seem correct, as this value is just the limiting condition of the
-       --  search. For now we omit this check, pending a ruling from the ARG.???
- 
-       --  if Checks and then Is_Root (Position) then
-       --     raise Program_Error with "Position cursor designates root";
-       --  end if;
- 
-       R := Root_Node (Position.Container.all);
-       N := Position.Node;
-       while N /= R loop
-          if N.Element = Item then
-             return Cursor'(Position.Container, N);
-          end if;
- 
-          N := N.Parent;
-       end loop;
- 
-       return No_Element;
-    end Ancestor_Find;
- 
-    ------------------
-    -- Append_Child --
-    ------------------
- 
-    procedure Append_Child
-      (Container : in out Tree;
-       Parent    : Cursor;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1)
-    is
-       First : Tree_Node_Access;
-       Last  : Tree_Node_Access;
- 
-    begin
-       if Checks and then Parent = No_Element then
-          raise Constraint_Error with "Parent cursor has no element";
-       end if;
- 
-       if Checks and then Parent.Container /= Container'Unrestricted_Access then
-          raise Program_Error with "Parent cursor not in container";
-       end if;
- 
-       if Count = 0 then
-          return;
-       end if;
- 
-       TC_Check (Container.TC);
- 
-       First := new Tree_Node_Type'(Parent  => Parent.Node,
-                                    Element => New_Item,
-                                    others  => <>);
- 
-       Last := First;
-       for J in Count_Type'(2) .. Count loop
- 
-          --  Reclaim other nodes if Storage_Error.  ???
- 
-          Last.Next := new Tree_Node_Type'(Parent  => Parent.Node,
-                                           Prev    => Last,
-                                           Element => New_Item,
-                                           others  => <>);
- 
-          Last := Last.Next;
-       end loop;
- 
-       Insert_Subtree_List
-         (First  => First,
-          Last   => Last,
-          Parent => Parent.Node,
-          Before => null);  -- null means "insert at end of list"
- 
-       --  In order for operation Node_Count to complete in O(1) time, we cache
-       --  the count value. Here we increment the total count by the number of
-       --  nodes we just inserted.
- 
-       Container.Count := Container.Count + Count;
-    end Append_Child;
- 
-    ------------
-    -- Assign --
-    ------------
- 
-    procedure Assign (Target : in out Tree; Source : Tree) is
-       Source_Count : constant Count_Type := Source.Count;
-       Target_Count : Count_Type;
- 
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       Target.Clear;  -- checks busy bit
- 
-       --  Copy_Children returns the number of nodes that it allocates, but it
-       --  does this by incrementing the count value passed in, so we must
-       --  initialize the count before calling Copy_Children.
- 
-       Target_Count := 0;
- 
-       --  Note that Copy_Children inserts the newly-allocated children into
-       --  their parent list only after the allocation of all the children has
-       --  succeeded. This preserves invariants even if the allocation fails.
- 
-       Copy_Children (Source.Root.Children, Root_Node (Target), Target_Count);
-       pragma Assert (Target_Count = Source_Count);
- 
-       Target.Count := Source_Count;
-    end Assign;
- 
-    -----------------
-    -- Child_Count --
-    -----------------
- 
-    function Child_Count (Parent : Cursor) return Count_Type is
-    begin
-       return (if Parent = No_Element
-               then 0 else Child_Count (Parent.Node.Children));
-    end Child_Count;
- 
-    function Child_Count (Children : Children_Type) return Count_Type is
-       Result : Count_Type;
-       Node   : Tree_Node_Access;
- 
-    begin
-       Result := 0;
-       Node := Children.First;
-       while Node /= null loop
-          Result := Result + 1;
-          Node := Node.Next;
-       end loop;
- 
-       return Result;
-    end Child_Count;
- 
-    -----------------
-    -- Child_Depth --
-    -----------------
- 
-    function Child_Depth (Parent, Child : Cursor) return Count_Type is
-       Result : Count_Type;
-       N      : Tree_Node_Access;
- 
-    begin
-       if Checks and then Parent = No_Element then
-          raise Constraint_Error with "Parent cursor has no element";
-       end if;
- 
-       if Checks and then Child = No_Element then
-          raise Constraint_Error with "Child cursor has no element";
-       end if;
- 
-       if Checks and then Parent.Container /= Child.Container then
-          raise Program_Error with "Parent and Child in different containers";
-       end if;
- 
-       Result := 0;
-       N := Child.Node;
-       while N /= Parent.Node loop
-          Result := Result + 1;
-          N := N.Parent;
- 
-          if Checks and then N = null then
-             raise Program_Error with "Parent is not ancestor of Child";
-          end if;
-       end loop;
- 
-       return Result;
-    end Child_Depth;
- 
-    -----------
-    -- Clear --
-    -----------
- 
-    procedure Clear (Container : in out Tree) is
-       Container_Count, Children_Count : Count_Type;
- 
-    begin
-       TC_Check (Container.TC);
- 
-       --  We first set the container count to 0, in order to preserve
-       --  invariants in case the deallocation fails. (This works because
-       --  Deallocate_Children immediately removes the children from their
-       --  parent, and then does the actual deallocation.)
- 
-       Container_Count := Container.Count;
-       Container.Count := 0;
- 
-       --  Deallocate_Children returns the number of nodes that it deallocates,
-       --  but it does this by incrementing the count value that is passed in,
-       --  so we must first initialize the count return value before calling it.
- 
-       Children_Count := 0;
- 
-       --  See comment above. Deallocate_Children immediately removes the
-       --  children list from their parent node (here, the root of the tree),
-       --  and only after that does it attempt the actual deallocation. So even
-       --  if the deallocation fails, the representation invariants for the tree
-       --  are preserved.
- 
-       Deallocate_Children (Root_Node (Container), Children_Count);
-       pragma Assert (Children_Count = Container_Count);
-    end Clear;
- 
-    ------------------------
-    -- Constant_Reference --
-    ------------------------
- 
-    function Constant_Reference
-      (Container : aliased Tree;
-       Position  : Cursor) return Constant_Reference_Type
-    is
-    begin
-       if Checks and then Position.Container = null then
-          raise Constraint_Error with
-            "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor designates wrong container";
-       end if;
- 
-       if Checks and then Position.Node = Root_Node (Container) then
-          raise Program_Error with "Position cursor designates root";
-       end if;
- 
-       --  Implement Vet for multiway tree???
-       --  pragma Assert (Vet (Position),
-       --                 "Position cursor in Constant_Reference is bad");
- 
-       declare
-          C : Tree renames Position.Container.all;
-          TC : constant Tamper_Counts_Access :=
-            C.TC'Unrestricted_Access;
-       begin
-          return R : constant Constant_Reference_Type :=
-            (Element => Position.Node.Element'Access,
-             Control => (Controlled with TC))
-          do
-             Lock (TC.all);
-          end return;
-       end;
-    end Constant_Reference;
- 
-    --------------
-    -- Contains --
-    --------------
- 
-    function Contains
-      (Container : Tree;
-       Item      : Element_Type) return Boolean
-    is
-    begin
-       return Find (Container, Item) /= No_Element;
-    end Contains;
- 
-    ----------
-    -- Copy --
-    ----------
- 
-    function Copy (Source : Tree) return Tree is
-    begin
-       return Target : Tree do
-          Copy_Children
-            (Source => Source.Root.Children,
-             Parent => Root_Node (Target),
-             Count  => Target.Count);
- 
-          pragma Assert (Target.Count = Source.Count);
-       end return;
-    end Copy;
- 
-    -------------------
-    -- Copy_Children --
-    -------------------
- 
-    procedure Copy_Children
-      (Source : Children_Type;
-       Parent : Tree_Node_Access;
-       Count  : in out Count_Type)
-    is
-       pragma Assert (Parent /= null);
-       pragma Assert (Parent.Children.First = null);
-       pragma Assert (Parent.Children.Last = null);
- 
-       CC : Children_Type;
-       C  : Tree_Node_Access;
- 
-    begin
-       --  We special-case the first allocation, in order to establish the
-       --  representation invariants for type Children_Type.
- 
-       C := Source.First;
- 
-       if C = null then
-          return;
-       end if;
- 
-       Copy_Subtree
-         (Source => C,
-          Parent => Parent,
-          Target => CC.First,
-          Count  => Count);
- 
-       CC.Last := CC.First;
- 
-       --  The representation invariants for the Children_Type list have been
-       --  established, so we can now copy the remaining children of Source.
- 
-       C := C.Next;
-       while C /= null loop
-          Copy_Subtree
-            (Source => C,
-             Parent => Parent,
-             Target => CC.Last.Next,
-             Count  => Count);
- 
-          CC.Last.Next.Prev := CC.Last;
-          CC.Last := CC.Last.Next;
- 
-          C := C.Next;
-       end loop;
- 
-       --  Add the newly-allocated children to their parent list only after the
-       --  allocation has succeeded, so as to preserve invariants of the parent.
- 
-       Parent.Children := CC;
-    end Copy_Children;
- 
-    ------------------
-    -- Copy_Subtree --
-    ------------------
- 
-    procedure Copy_Subtree
-      (Target   : in out Tree;
-       Parent   : Cursor;
-       Before   : Cursor;
-       Source   : Cursor)
-    is
-       Target_Subtree : Tree_Node_Access;
-       Target_Count   : Count_Type;
- 
-    begin
-       if Checks and then Parent = No_Element then
-          raise Constraint_Error with "Parent cursor has no element";
-       end if;
- 
-       if Checks and then Parent.Container /= Target'Unrestricted_Access then
-          raise Program_Error with "Parent cursor not in container";
-       end if;
- 
-       if Before /= No_Element then
-          if Checks and then Before.Container /= Target'Unrestricted_Access then
-             raise Program_Error with "Before cursor not in container";
-          end if;
- 
-          if Checks and then Before.Node.Parent /= Parent.Node then
-             raise Constraint_Error with "Before cursor not child of Parent";
-          end if;
-       end if;
- 
-       if Source = No_Element then
-          return;
-       end if;
- 
-       if Checks and then Is_Root (Source) then
-          raise Constraint_Error with "Source cursor designates root";
-       end if;
- 
-       --  Copy_Subtree returns a count of the number of nodes that it
-       --  allocates, but it works by incrementing the value that is passed
-       --  in. We must therefore initialize the count value before calling
-       --  Copy_Subtree.
- 
-       Target_Count := 0;
- 
-       Copy_Subtree
-         (Source => Source.Node,
-          Parent => Parent.Node,
-          Target => Target_Subtree,
-          Count  => Target_Count);
- 
-       pragma Assert (Target_Subtree /= null);
-       pragma Assert (Target_Subtree.Parent = Parent.Node);
-       pragma Assert (Target_Count >= 1);
- 
-       Insert_Subtree_Node
-         (Subtree => Target_Subtree,
-          Parent  => Parent.Node,
-          Before  => Before.Node);
- 
-       --  In order for operation Node_Count to complete in O(1) time, we cache
-       --  the count value. Here we increment the total count by the number of
-       --  nodes we just inserted.
- 
-       Target.Count := Target.Count + Target_Count;
-    end Copy_Subtree;
- 
-    procedure Copy_Subtree
-      (Source : Tree_Node_Access;
-       Parent : Tree_Node_Access;
-       Target : out Tree_Node_Access;
-       Count  : in out Count_Type)
-    is
-    begin
-       Target := new Tree_Node_Type'(Element => Source.Element,
-                                     Parent  => Parent,
-                                     others  => <>);
- 
-       Count := Count + 1;
- 
-       Copy_Children
-         (Source => Source.Children,
-          Parent => Target,
-          Count  => Count);
-    end Copy_Subtree;
- 
-    -------------------------
-    -- Deallocate_Children --
-    -------------------------
- 
-    procedure Deallocate_Children
-      (Subtree : Tree_Node_Access;
-       Count   : in out Count_Type)
-    is
-       pragma Assert (Subtree /= null);
- 
-       CC : Children_Type := Subtree.Children;
-       C  : Tree_Node_Access;
- 
-    begin
-       --  We immediately remove the children from their parent, in order to
-       --  preserve invariants in case the deallocation fails.
- 
-       Subtree.Children := Children_Type'(others => null);
- 
-       while CC.First /= null loop
-          C := CC.First;
-          CC.First := C.Next;
- 
-          Deallocate_Subtree (C, Count);
-       end loop;
-    end Deallocate_Children;
- 
-    ------------------------
-    -- Deallocate_Subtree --
-    ------------------------
- 
-    procedure Deallocate_Subtree
-      (Subtree : in out Tree_Node_Access;
-       Count   : in out Count_Type)
-    is
-    begin
-       Deallocate_Children (Subtree, Count);
-       Deallocate_Node (Subtree);
-       Count := Count + 1;
-    end Deallocate_Subtree;
- 
-    ---------------------
-    -- Delete_Children --
-    ---------------------
- 
-    procedure Delete_Children
-      (Container : in out Tree;
-       Parent    : Cursor)
-    is
-       Count : Count_Type;
- 
-    begin
-       if Checks and then Parent = No_Element then
-          raise Constraint_Error with "Parent cursor has no element";
-       end if;
- 
-       if Checks and then Parent.Container /= Container'Unrestricted_Access then
-          raise Program_Error with "Parent cursor not in container";
-       end if;
- 
-       TC_Check (Container.TC);
- 
-       --  Deallocate_Children returns a count of the number of nodes that it
-       --  deallocates, but it works by incrementing the value that is passed
-       --  in. We must therefore initialize the count value before calling
-       --  Deallocate_Children.
- 
-       Count := 0;
- 
-       Deallocate_Children (Parent.Node, Count);
-       pragma Assert (Count <= Container.Count);
- 
-       Container.Count := Container.Count - Count;
-    end Delete_Children;
- 
-    -----------------
-    -- Delete_Leaf --
-    -----------------
- 
-    procedure Delete_Leaf
-      (Container : in out Tree;
-       Position  : in out Cursor)
-    is
-       X : Tree_Node_Access;
- 
-    begin
-       if Checks and then Position = No_Element then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with "Position cursor not in container";
-       end if;
- 
-       if Checks and then Is_Root (Position) then
-          raise Program_Error with "Position cursor designates root";
-       end if;
- 
-       if Checks and then not Is_Leaf (Position) then
-          raise Constraint_Error with "Position cursor does not designate leaf";
-       end if;
- 
-       TC_Check (Container.TC);
- 
-       X := Position.Node;
-       Position := No_Element;
- 
-       --  Restore represention invariants before attempting the actual
-       --  deallocation.
- 
-       Remove_Subtree (X);
-       Container.Count := Container.Count - 1;
- 
-       --  It is now safe to attempt the deallocation. This leaf node has been
-       --  disassociated from the tree, so even if the deallocation fails,
-       --  representation invariants will remain satisfied.
- 
-       Deallocate_Node (X);
-    end Delete_Leaf;
- 
-    --------------------
-    -- Delete_Subtree --
-    --------------------
- 
-    procedure Delete_Subtree
-      (Container : in out Tree;
-       Position  : in out Cursor)
-    is
-       X     : Tree_Node_Access;
-       Count : Count_Type;
- 
-    begin
-       if Checks and then Position = No_Element then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with "Position cursor not in container";
-       end if;
- 
-       if Checks and then Is_Root (Position) then
-          raise Program_Error with "Position cursor designates root";
-       end if;
- 
-       TC_Check (Container.TC);
- 
-       X := Position.Node;
-       Position := No_Element;
- 
-       --  Here is one case where a deallocation failure can result in the
-       --  violation of a representation invariant. We disassociate the subtree
-       --  from the tree now, but we only decrement the total node count after
-       --  we attempt the deallocation. However, if the deallocation fails, the
-       --  total node count will not get decremented.
- 
-       --  One way around this dilemma is to count the nodes in the subtree
-       --  before attempt to delete the subtree, but that is an O(n) operation,
-       --  so it does not seem worth it.
- 
-       --  Perhaps this is much ado about nothing, since the only way
-       --  deallocation can fail is if Controlled Finalization fails: this
-       --  propagates Program_Error so all bets are off anyway. ???
- 
-       Remove_Subtree (X);
- 
-       --  Deallocate_Subtree returns a count of the number of nodes that it
-       --  deallocates, but it works by incrementing the value that is passed
-       --  in. We must therefore initialize the count value before calling
-       --  Deallocate_Subtree.
- 
-       Count := 0;
- 
-       Deallocate_Subtree (X, Count);
-       pragma Assert (Count <= Container.Count);
- 
-       --  See comments above. We would prefer to do this sooner, but there's no
-       --  way to satisfy that goal without a potentially severe execution
-       --  penalty.
- 
-       Container.Count := Container.Count - Count;
-    end Delete_Subtree;
- 
-    -----------
-    -- Depth --
-    -----------
- 
-    function Depth (Position : Cursor) return Count_Type is
-       Result : Count_Type;
-       N      : Tree_Node_Access;
- 
-    begin
-       Result := 0;
-       N := Position.Node;
-       while N /= null loop
-          N := N.Parent;
-          Result := Result + 1;
-       end loop;
- 
-       return Result;
-    end Depth;
- 
-    -------------
-    -- Element --
-    -------------
- 
-    function Element (Position : Cursor) return Element_Type is
-    begin
-       if Checks and then Position.Container = null then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Node = Root_Node (Position.Container.all)
-       then
-          raise Program_Error with "Position cursor designates root";
-       end if;
- 
-       return Position.Node.Element;
-    end Element;
- 
-    --------------------
-    -- Equal_Children --
-    --------------------
- 
-    function Equal_Children
-      (Left_Subtree  : Tree_Node_Access;
-       Right_Subtree : Tree_Node_Access) return Boolean
-    is
-       Left_Children  : Children_Type renames Left_Subtree.Children;
-       Right_Children : Children_Type renames Right_Subtree.Children;
- 
-       L, R : Tree_Node_Access;
- 
-    begin
-       if Child_Count (Left_Children) /= Child_Count (Right_Children) then
-          return False;
-       end if;
- 
-       L := Left_Children.First;
-       R := Right_Children.First;
-       while L /= null loop
-          if not Equal_Subtree (L, R) then
-             return False;
-          end if;
- 
-          L := L.Next;
-          R := R.Next;
-       end loop;
- 
-       return True;
-    end Equal_Children;
- 
-    -------------------
-    -- Equal_Subtree --
-    -------------------
- 
-    function Equal_Subtree
-      (Left_Position  : Cursor;
-       Right_Position : Cursor) return Boolean
-    is
-    begin
-       if Checks and then Left_Position = No_Element then
-          raise Constraint_Error with "Left cursor has no element";
-       end if;
- 
-       if Checks and then Right_Position = No_Element then
-          raise Constraint_Error with "Right cursor has no element";
-       end if;
- 
-       if Left_Position = Right_Position then
-          return True;
-       end if;
- 
-       if Is_Root (Left_Position) then
-          if not Is_Root (Right_Position) then
-             return False;
-          end if;
- 
-          return Equal_Children (Left_Position.Node, Right_Position.Node);
-       end if;
- 
-       if Is_Root (Right_Position) then
-          return False;
-       end if;
- 
-       return Equal_Subtree (Left_Position.Node, Right_Position.Node);
-    end Equal_Subtree;
- 
-    function Equal_Subtree
-      (Left_Subtree  : Tree_Node_Access;
-       Right_Subtree : Tree_Node_Access) return Boolean
-    is
-    begin
-       if Left_Subtree.Element /= Right_Subtree.Element then
-          return False;
-       end if;
- 
-       return Equal_Children (Left_Subtree, Right_Subtree);
-    end Equal_Subtree;
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    procedure Finalize (Object : in out Root_Iterator) is
-    begin
-       Unbusy (Object.Container.TC);
-    end Finalize;
- 
-    ----------
-    -- Find --
-    ----------
- 
-    function Find
-      (Container : Tree;
-       Item      : Element_Type) return Cursor
-    is
-       N : constant Tree_Node_Access :=
-         Find_In_Children (Root_Node (Container), Item);
-    begin
-       if N = null then
-          return No_Element;
-       else
-          return Cursor'(Container'Unrestricted_Access, N);
-       end if;
-    end Find;
- 
-    -----------
-    -- First --
-    -----------
- 
-    overriding function First (Object : Subtree_Iterator) return Cursor is
-    begin
-       if Object.Subtree = Root_Node (Object.Container.all) then
-          return First_Child (Root (Object.Container.all));
-       else
-          return Cursor'(Object.Container, Object.Subtree);
-       end if;
-    end First;
- 
-    overriding function First (Object : Child_Iterator) return Cursor is
-    begin
-       return First_Child (Cursor'(Object.Container, Object.Subtree));
-    end First;
- 
-    -----------------
-    -- First_Child --
-    -----------------
- 
-    function First_Child (Parent : Cursor) return Cursor is
-       Node : Tree_Node_Access;
- 
-    begin
-       if Checks and then Parent = No_Element then
-          raise Constraint_Error with "Parent cursor has no element";
-       end if;
- 
-       Node := Parent.Node.Children.First;
- 
-       if Node = null then
-          return No_Element;
-       end if;
- 
-       return Cursor'(Parent.Container, Node);
-    end First_Child;
- 
-    -------------------------
-    -- First_Child_Element --
-    -------------------------
- 
-    function First_Child_Element (Parent : Cursor) return Element_Type is
-    begin
-       return Element (First_Child (Parent));
-    end First_Child_Element;
- 
-    ----------------------
-    -- Find_In_Children --
-    ----------------------
- 
-    function Find_In_Children
-      (Subtree : Tree_Node_Access;
-       Item    : Element_Type) return Tree_Node_Access
-    is
-       N, Result : Tree_Node_Access;
- 
-    begin
-       N := Subtree.Children.First;
-       while N /= null loop
-          Result := Find_In_Subtree (N, Item);
- 
-          if Result /= null then
-             return Result;
-          end if;
- 
-          N := N.Next;
-       end loop;
- 
-       return null;
-    end Find_In_Children;
- 
-    ---------------------
-    -- Find_In_Subtree --
-    ---------------------
- 
-    function Find_In_Subtree
-      (Position : Cursor;
-       Item     : Element_Type) return Cursor
-    is
-       Result : Tree_Node_Access;
- 
-    begin
-       if Checks and then Position = No_Element then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       --  Commented out pending official ruling by ARG.  ???
- 
-       --  if Checks and then
-       --    Position.Container /= Container'Unrestricted_Access
-       --  then
-       --     raise Program_Error with "Position cursor not in container";
-       --  end if;
- 
-       Result :=
-         (if Is_Root (Position)
-          then Find_In_Children (Position.Node, Item)
-          else Find_In_Subtree  (Position.Node, Item));
- 
-       if Result = null then
-          return No_Element;
-       end if;
- 
-       return Cursor'(Position.Container, Result);
-    end Find_In_Subtree;
- 
-    function Find_In_Subtree
-      (Subtree : Tree_Node_Access;
-       Item    : Element_Type) return Tree_Node_Access
-    is
-    begin
-       if Subtree.Element = Item then
-          return Subtree;
-       end if;
- 
-       return Find_In_Children (Subtree, Item);
-    end Find_In_Subtree;
- 
-    ------------------------
-    -- Get_Element_Access --
-    ------------------------
- 
-    function Get_Element_Access
-      (Position : Cursor) return not null Element_Access is
-    begin
-       return Position.Node.Element'Access;
-    end Get_Element_Access;
- 
-    -----------------
-    -- Has_Element --
-    -----------------
- 
-    function Has_Element (Position : Cursor) return Boolean is
-    begin
-       return (if Position = No_Element then False
-               else Position.Node.Parent /= null);
-    end Has_Element;
- 
-    ------------------
-    -- Insert_Child --
-    ------------------
- 
-    procedure Insert_Child
-      (Container : in out Tree;
-       Parent    : Cursor;
-       Before    : Cursor;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1)
-    is
-       Position : Cursor;
-       pragma Unreferenced (Position);
- 
-    begin
-       Insert_Child (Container, Parent, Before, New_Item, Position, Count);
-    end Insert_Child;
- 
-    procedure Insert_Child
-      (Container : in out Tree;
-       Parent    : Cursor;
-       Before    : Cursor;
-       New_Item  : Element_Type;
-       Position  : out Cursor;
-       Count     : Count_Type := 1)
-    is
-       First : Tree_Node_Access;
-       Last  : Tree_Node_Access;
- 
-    begin
-       if Checks and then Parent = No_Element then
-          raise Constraint_Error with "Parent cursor has no element";
-       end if;
- 
-       if Checks and then Parent.Container /= Container'Unrestricted_Access then
-          raise Program_Error with "Parent cursor not in container";
-       end if;
- 
-       if Before /= No_Element then
-          if Checks and then Before.Container /= Container'Unrestricted_Access
-          then
-             raise Program_Error with "Before cursor not in container";
-          end if;
- 
-          if Checks and then Before.Node.Parent /= Parent.Node then
-             raise Constraint_Error with "Parent cursor not parent of Before";
-          end if;
-       end if;
- 
-       if Count = 0 then
-          Position := No_Element;  -- Need ruling from ARG ???
-          return;
-       end if;
- 
-       TC_Check (Container.TC);
- 
-       First := new Tree_Node_Type'(Parent  => Parent.Node,
-                                    Element => New_Item,
-                                    others  => <>);
- 
-       Last := First;
-       for J in Count_Type'(2) .. Count loop
- 
-          --  Reclaim other nodes if Storage_Error.  ???
- 
-          Last.Next := new Tree_Node_Type'(Parent  => Parent.Node,
-                                           Prev    => Last,
-                                           Element => New_Item,
-                                           others  => <>);
- 
-          Last := Last.Next;
-       end loop;
- 
-       Insert_Subtree_List
-         (First  => First,
-          Last   => Last,
-          Parent => Parent.Node,
-          Before => Before.Node);
- 
-       --  In order for operation Node_Count to complete in O(1) time, we cache
-       --  the count value. Here we increment the total count by the number of
-       --  nodes we just inserted.
- 
-       Container.Count := Container.Count + Count;
- 
-       Position := Cursor'(Parent.Container, First);
-    end Insert_Child;
- 
-    procedure Insert_Child
-      (Container : in out Tree;
-       Parent    : Cursor;
-       Before    : Cursor;
-       Position  : out Cursor;
-       Count     : Count_Type := 1)
-    is
-       First : Tree_Node_Access;
-       Last  : Tree_Node_Access;
- 
-    begin
-       if Checks and then Parent = No_Element then
-          raise Constraint_Error with "Parent cursor has no element";
-       end if;
- 
-       if Checks and then Parent.Container /= Container'Unrestricted_Access then
-          raise Program_Error with "Parent cursor not in container";
-       end if;
- 
-       if Before /= No_Element then
-          if Checks and then Before.Container /= Container'Unrestricted_Access
-          then
-             raise Program_Error with "Before cursor not in container";
-          end if;
- 
-          if Checks and then Before.Node.Parent /= Parent.Node then
-             raise Constraint_Error with "Parent cursor not parent of Before";
-          end if;
-       end if;
- 
-       if Count = 0 then
-          Position := No_Element;  -- Need ruling from ARG  ???
-          return;
-       end if;
- 
-       TC_Check (Container.TC);
- 
-       First := new Tree_Node_Type'(Parent  => Parent.Node,
-                                    Element => <>,
-                                    others  => <>);
- 
-       Last := First;
-       for J in Count_Type'(2) .. Count loop
- 
-          --  Reclaim other nodes if Storage_Error.  ???
- 
-          Last.Next := new Tree_Node_Type'(Parent  => Parent.Node,
-                                           Prev    => Last,
-                                           Element => <>,
-                                           others  => <>);
- 
-          Last := Last.Next;
-       end loop;
- 
-       Insert_Subtree_List
-         (First  => First,
-          Last   => Last,
-          Parent => Parent.Node,
-          Before => Before.Node);
- 
-       --  In order for operation Node_Count to complete in O(1) time, we cache
-       --  the count value. Here we increment the total count by the number of
-       --  nodes we just inserted.
- 
-       Container.Count := Container.Count + Count;
- 
-       Position := Cursor'(Parent.Container, First);
-    end Insert_Child;
- 
-    -------------------------
-    -- Insert_Subtree_List --
-    -------------------------
- 
-    procedure Insert_Subtree_List
-      (First  : Tree_Node_Access;
-       Last   : Tree_Node_Access;
-       Parent : Tree_Node_Access;
-       Before : Tree_Node_Access)
-    is
-       pragma Assert (Parent /= null);
-       C : Children_Type renames Parent.Children;
- 
-    begin
-       --  This is a simple utility operation to insert a list of nodes (from
-       --  First..Last) as children of Parent. The Before node specifies where
-       --  the new children should be inserted relative to the existing
-       --  children.
- 
-       if First = null then
-          pragma Assert (Last = null);
-          return;
-       end if;
- 
-       pragma Assert (Last /= null);
-       pragma Assert (Before = null or else Before.Parent = Parent);
- 
-       if C.First = null then
-          C.First := First;
-          C.First.Prev := null;
-          C.Last := Last;
-          C.Last.Next := null;
- 
-       elsif Before = null then  -- means "insert after existing nodes"
-          C.Last.Next := First;
-          First.Prev := C.Last;
-          C.Last := Last;
-          C.Last.Next := null;
- 
-       elsif Before = C.First then
-          Last.Next := C.First;
-          C.First.Prev := Last;
-          C.First := First;
-          C.First.Prev := null;
- 
-       else
-          Before.Prev.Next := First;
-          First.Prev := Before.Prev;
-          Last.Next := Before;
-          Before.Prev := Last;
-       end if;
-    end Insert_Subtree_List;
- 
-    -------------------------
-    -- Insert_Subtree_Node --
-    -------------------------
- 
-    procedure Insert_Subtree_Node
-      (Subtree : Tree_Node_Access;
-       Parent  : Tree_Node_Access;
-       Before  : Tree_Node_Access)
-    is
-    begin
-       --  This is a simple wrapper operation to insert a single child into the
-       --  Parent's children list.
- 
-       Insert_Subtree_List
-         (First  => Subtree,
-          Last   => Subtree,
-          Parent => Parent,
-          Before => Before);
-    end Insert_Subtree_Node;
- 
-    --------------
-    -- Is_Empty --
-    --------------
- 
-    function Is_Empty (Container : Tree) return Boolean is
-    begin
-       return Container.Root.Children.First = null;
-    end Is_Empty;
- 
-    -------------
-    -- Is_Leaf --
-    -------------
- 
-    function Is_Leaf (Position : Cursor) return Boolean is
-    begin
-       return (if Position = No_Element then False
-               else Position.Node.Children.First = null);
-    end Is_Leaf;
- 
-    ------------------
-    -- Is_Reachable --
-    ------------------
- 
-    function Is_Reachable (From, To : Tree_Node_Access) return Boolean is
-       pragma Assert (From /= null);
-       pragma Assert (To /= null);
- 
-       N : Tree_Node_Access;
- 
-    begin
-       N := From;
-       while N /= null loop
-          if N = To then
-             return True;
-          end if;
- 
-          N := N.Parent;
-       end loop;
- 
-       return False;
-    end Is_Reachable;
- 
-    -------------
-    -- Is_Root --
-    -------------
- 
-    function Is_Root (Position : Cursor) return Boolean is
-    begin
-       return (if Position.Container = null then False
-               else Position = Root (Position.Container.all));
-    end Is_Root;
- 
-    -------------
-    -- Iterate --
-    -------------
- 
-    procedure Iterate
-      (Container : Tree;
-       Process   : not null access procedure (Position : Cursor))
-    is
-       Busy : With_Busy (Container.TC'Unrestricted_Access);
-    begin
-       Iterate_Children
-         (Container => Container'Unrestricted_Access,
-          Subtree   => Root_Node (Container),
-          Process   => Process);
-    end Iterate;
- 
-    function Iterate (Container : Tree)
-      return Tree_Iterator_Interfaces.Forward_Iterator'Class
-    is
-    begin
-       return Iterate_Subtree (Root (Container));
-    end Iterate;
- 
-    ----------------------
-    -- Iterate_Children --
-    ----------------------
- 
-    procedure Iterate_Children
-      (Parent  : Cursor;
-       Process : not null access procedure (Position : Cursor))
-    is
-       C : Tree_Node_Access;
-       Busy : With_Busy (Parent.Container.TC'Unrestricted_Access);
-    begin
-       if Checks and then Parent = No_Element then
-          raise Constraint_Error with "Parent cursor has no element";
-       end if;
- 
-       C := Parent.Node.Children.First;
-       while C /= null loop
-          Process (Position => Cursor'(Parent.Container, Node => C));
-          C := C.Next;
-       end loop;
-    end Iterate_Children;
- 
-    procedure Iterate_Children
-      (Container : Tree_Access;
-       Subtree   : Tree_Node_Access;
-       Process   : not null access procedure (Position : Cursor))
-    is
-       Node : Tree_Node_Access;
- 
-    begin
-       --  This is a helper function to recursively iterate over all the nodes
-       --  in a subtree, in depth-first fashion. This particular helper just
-       --  visits the children of this subtree, not the root of the subtree node
-       --  itself. This is useful when starting from the ultimate root of the
-       --  entire tree (see Iterate), as that root does not have an element.
- 
-       Node := Subtree.Children.First;
-       while Node /= null loop
-          Iterate_Subtree (Container, Node, Process);
-          Node := Node.Next;
-       end loop;
-    end Iterate_Children;
- 
-    function Iterate_Children
-      (Container : Tree;
-       Parent    : Cursor)
-       return Tree_Iterator_Interfaces.Reversible_Iterator'Class
-    is
-       C : constant Tree_Access := Container'Unrestricted_Access;
-    begin
-       if Checks and then Parent = No_Element then
-          raise Constraint_Error with "Parent cursor has no element";
-       end if;
- 
-       if Checks and then Parent.Container /= C then
-          raise Program_Error with "Parent cursor not in container";
-       end if;
- 
-       return It : constant Child_Iterator :=
-         (Limited_Controlled with
-            Container => C,
-            Subtree   => Parent.Node)
-       do
-          Busy (C.TC);
-       end return;
-    end Iterate_Children;
- 
-    ---------------------
-    -- Iterate_Subtree --
-    ---------------------
- 
-    function Iterate_Subtree
-      (Position : Cursor)
-       return Tree_Iterator_Interfaces.Forward_Iterator'Class
-    is
-       C : constant Tree_Access := Position.Container;
-    begin
-       if Checks and then Position = No_Element then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       --  Implement Vet for multiway trees???
-       --  pragma Assert (Vet (Position), "bad subtree cursor");
- 
-       return It : constant Subtree_Iterator :=
-         (Limited_Controlled with
-            Container => C,
-            Subtree   => Position.Node)
-       do
-          Busy (C.TC);
-       end return;
-    end Iterate_Subtree;
- 
-    procedure Iterate_Subtree
-      (Position : Cursor;
-       Process  : not null access procedure (Position : Cursor))
-    is
-       Busy : With_Busy (Position.Container.TC'Unrestricted_Access);
-    begin
-       if Checks and then Position = No_Element then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Is_Root (Position) then
-          Iterate_Children (Position.Container, Position.Node, Process);
-       else
-          Iterate_Subtree (Position.Container, Position.Node, Process);
-       end if;
-    end Iterate_Subtree;
- 
-    procedure Iterate_Subtree
-      (Container : Tree_Access;
-       Subtree   : Tree_Node_Access;
-       Process   : not null access procedure (Position : Cursor))
-    is
-    begin
-       --  This is a helper function to recursively iterate over all the nodes
-       --  in a subtree, in depth-first fashion. It first visits the root of the
-       --  subtree, then visits its children.
- 
-       Process (Cursor'(Container, Subtree));
-       Iterate_Children (Container, Subtree, Process);
-    end Iterate_Subtree;
- 
-    ----------
-    -- Last --
-    ----------
- 
-    overriding function Last (Object : Child_Iterator) return Cursor is
-    begin
-       return Last_Child (Cursor'(Object.Container, Object.Subtree));
-    end Last;
- 
-    ----------------
-    -- Last_Child --
-    ----------------
- 
-    function Last_Child (Parent : Cursor) return Cursor is
-       Node : Tree_Node_Access;
- 
-    begin
-       if Checks and then Parent = No_Element then
-          raise Constraint_Error with "Parent cursor has no element";
-       end if;
- 
-       Node := Parent.Node.Children.Last;
- 
-       if Node = null then
-          return No_Element;
-       end if;
- 
-       return (Parent.Container, Node);
-    end Last_Child;
- 
-    ------------------------
-    -- Last_Child_Element --
-    ------------------------
- 
-    function Last_Child_Element (Parent : Cursor) return Element_Type is
-    begin
-       return Element (Last_Child (Parent));
-    end Last_Child_Element;
- 
-    ----------
-    -- Move --
-    ----------
- 
-    procedure Move (Target : in out Tree; Source : in out Tree) is
-       Node : Tree_Node_Access;
- 
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       TC_Check (Source.TC);
- 
-       Target.Clear;  -- checks busy bit
- 
-       Target.Root.Children := Source.Root.Children;
-       Source.Root.Children := Children_Type'(others => null);
- 
-       Node := Target.Root.Children.First;
-       while Node /= null loop
-          Node.Parent := Root_Node (Target);
-          Node := Node.Next;
-       end loop;
- 
-       Target.Count := Source.Count;
-       Source.Count := 0;
-    end Move;
- 
-    ----------
-    -- Next --
-    ----------
- 
-    function Next
-      (Object   : Subtree_Iterator;
-       Position : Cursor) return Cursor
-    is
-       Node : Tree_Node_Access;
- 
-    begin
-       if Position.Container = null then
-          return No_Element;
-       end if;
- 
-       if Checks and then Position.Container /= Object.Container then
-          raise Program_Error with
-            "Position cursor of Next designates wrong tree";
-       end if;
- 
-       Node := Position.Node;
- 
-       if Node.Children.First /= null then
-          return Cursor'(Object.Container, Node.Children.First);
-       end if;
- 
-       while Node /= Object.Subtree loop
-          if Node.Next /= null then
-             return Cursor'(Object.Container, Node.Next);
-          end if;
- 
-          Node := Node.Parent;
-       end loop;
- 
-       return No_Element;
-    end Next;
- 
-    function Next
-      (Object   : Child_Iterator;
-       Position : Cursor) return Cursor
-    is
-    begin
-       if Position.Container = null then
-          return No_Element;
-       end if;
- 
-       if Checks and then Position.Container /= Object.Container then
-          raise Program_Error with
-            "Position cursor of Next designates wrong tree";
-       end if;
- 
-       return Next_Sibling (Position);
-    end Next;
- 
-    ------------------
-    -- Next_Sibling --
-    ------------------
- 
-    function Next_Sibling (Position : Cursor) return Cursor is
-    begin
-       if Position = No_Element then
-          return No_Element;
-       end if;
- 
-       if Position.Node.Next = null then
-          return No_Element;
-       end if;
- 
-       return Cursor'(Position.Container, Position.Node.Next);
-    end Next_Sibling;
- 
-    procedure Next_Sibling (Position : in out Cursor) is
-    begin
-       Position := Next_Sibling (Position);
-    end Next_Sibling;
- 
-    ----------------
-    -- Node_Count --
-    ----------------
- 
-    function Node_Count (Container : Tree) return Count_Type is
-    begin
-       --  Container.Count is the number of nodes we have actually allocated. We
-       --  cache the value specifically so this Node_Count operation can execute
-       --  in O(1) time, which makes it behave similarly to how the Length
-       --  selector function behaves for other containers.
- 
-       --  The cached node count value only describes the nodes we have
-       --  allocated; the root node itself is not included in that count. The
-       --  Node_Count operation returns a value that includes the root node
-       --  (because the RM says so), so we must add 1 to our cached value.
- 
-       return 1 + Container.Count;
-    end Node_Count;
- 
-    ------------
-    -- Parent --
-    ------------
- 
-    function Parent (Position : Cursor) return Cursor is
-    begin
-       if Position = No_Element then
-          return No_Element;
-       end if;
- 
-       if Position.Node.Parent = null then
-          return No_Element;
-       end if;
- 
-       return Cursor'(Position.Container, Position.Node.Parent);
-    end Parent;
- 
-    -------------------
-    -- Prepent_Child --
-    -------------------
- 
-    procedure Prepend_Child
-      (Container : in out Tree;
-       Parent    : Cursor;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1)
-    is
-       First, Last : Tree_Node_Access;
- 
-    begin
-       if Checks and then Parent = No_Element then
-          raise Constraint_Error with "Parent cursor has no element";
-       end if;
- 
-       if Checks and then Parent.Container /= Container'Unrestricted_Access then
-          raise Program_Error with "Parent cursor not in container";
-       end if;
- 
-       if Count = 0 then
-          return;
-       end if;
- 
-       TC_Check (Container.TC);
- 
-       First := new Tree_Node_Type'(Parent  => Parent.Node,
-                                    Element => New_Item,
-                                    others  => <>);
- 
-       Last := First;
- 
-       for J in Count_Type'(2) .. Count loop
- 
-          --  Reclaim other nodes if Storage_Error???
- 
-          Last.Next := new Tree_Node_Type'(Parent  => Parent.Node,
-                                           Prev    => Last,
-                                           Element => New_Item,
-                                           others  => <>);
- 
-          Last := Last.Next;
-       end loop;
- 
-       Insert_Subtree_List
-         (First  => First,
-          Last   => Last,
-          Parent => Parent.Node,
-          Before => Parent.Node.Children.First);
- 
-       --  In order for operation Node_Count to complete in O(1) time, we cache
-       --  the count value. Here we increment the total count by the number of
-       --  nodes we just inserted.
- 
-       Container.Count := Container.Count + Count;
-    end Prepend_Child;
- 
-    --------------
-    -- Previous --
-    --------------
- 
-    overriding function Previous
-      (Object   : Child_Iterator;
-       Position : Cursor) return Cursor
-    is
-    begin
-       if Position.Container = null then
-          return No_Element;
-       end if;
- 
-       if Checks and then Position.Container /= Object.Container then
-          raise Program_Error with
-            "Position cursor of Previous designates wrong tree";
-       end if;
- 
-       return Previous_Sibling (Position);
-    end Previous;
- 
-    ----------------------
-    -- Previous_Sibling --
-    ----------------------
- 
-    function Previous_Sibling (Position : Cursor) return Cursor is
-    begin
-       return
-         (if Position = No_Element        then No_Element
-          elsif Position.Node.Prev = null then No_Element
-          else Cursor'(Position.Container, Position.Node.Prev));
-    end Previous_Sibling;
- 
-    procedure Previous_Sibling (Position : in out Cursor) is
-    begin
-       Position := Previous_Sibling (Position);
-    end Previous_Sibling;
- 
-    ----------------------
-    -- Pseudo_Reference --
-    ----------------------
- 
-    function Pseudo_Reference
-      (Container : aliased Tree'Class) return Reference_Control_Type
-    is
-       TC : constant Tamper_Counts_Access := Container.TC'Unrestricted_Access;
-    begin
-       return R : constant Reference_Control_Type := (Controlled with TC) do
-          Lock (TC.all);
-       end return;
-    end Pseudo_Reference;
- 
-    -------------------
-    -- Query_Element --
-    -------------------
- 
-    procedure Query_Element
-      (Position : Cursor;
-       Process  : not null access procedure (Element : Element_Type))
-    is
-       T : Tree renames Position.Container.all'Unrestricted_Access.all;
-       Lock : With_Lock (T.TC'Unrestricted_Access);
-    begin
-       if Checks and then Position = No_Element then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Checks and then Is_Root (Position) then
-          raise Program_Error with "Position cursor designates root";
-       end if;
- 
-       Process (Position.Node.Element);
-    end Query_Element;
- 
-    ----------
-    -- Read --
-    ----------
- 
-    procedure Read
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : out Tree)
-    is
-       procedure Read_Children (Subtree : Tree_Node_Access);
- 
-       function Read_Subtree
-         (Parent : Tree_Node_Access) return Tree_Node_Access;
- 
-       Total_Count : Count_Type'Base;
-       --  Value read from the stream that says how many elements follow
- 
-       Read_Count : Count_Type'Base;
-       --  Actual number of elements read from the stream
- 
-       -------------------
-       -- Read_Children --
-       -------------------
- 
-       procedure Read_Children (Subtree : Tree_Node_Access) is
-          pragma Assert (Subtree /= null);
-          pragma Assert (Subtree.Children.First = null);
-          pragma Assert (Subtree.Children.Last = null);
- 
-          Count : Count_Type'Base;
-          --  Number of child subtrees
- 
-          C : Children_Type;
- 
-       begin
-          Count_Type'Read (Stream, Count);
- 
-          if Checks and then Count < 0 then
-             raise Program_Error with "attempt to read from corrupt stream";
-          end if;
- 
-          if Count = 0 then
-             return;
-          end if;
- 
-          C.First := Read_Subtree (Parent => Subtree);
-          C.Last := C.First;
- 
-          for J in Count_Type'(2) .. Count loop
-             C.Last.Next := Read_Subtree (Parent => Subtree);
-             C.Last.Next.Prev := C.Last;
-             C.Last := C.Last.Next;
-          end loop;
- 
-          --  Now that the allocation and reads have completed successfully, it
-          --  is safe to link the children to their parent.
- 
-          Subtree.Children := C;
-       end Read_Children;
- 
-       ------------------
-       -- Read_Subtree --
-       ------------------
- 
-       function Read_Subtree
-         (Parent : Tree_Node_Access) return Tree_Node_Access
-       is
-          Subtree : constant Tree_Node_Access :=
-            new Tree_Node_Type'
-              (Parent  => Parent,
-               Element => Element_Type'Input (Stream),
-               others  => <>);
- 
-       begin
-          Read_Count := Read_Count + 1;
- 
-          Read_Children (Subtree);
- 
-          return Subtree;
-       end Read_Subtree;
- 
-    --  Start of processing for Read
- 
-    begin
-       Container.Clear;  -- checks busy bit
- 
-       Count_Type'Read (Stream, Total_Count);
- 
-       if Checks and then Total_Count < 0 then
-          raise Program_Error with "attempt to read from corrupt stream";
-       end if;
- 
-       if Total_Count = 0 then
-          return;
-       end if;
- 
-       Read_Count := 0;
- 
-       Read_Children (Root_Node (Container));
- 
-       if Checks and then Read_Count /= Total_Count then
-          raise Program_Error with "attempt to read from corrupt stream";
-       end if;
- 
-       Container.Count := Total_Count;
-    end Read;
- 
-    procedure Read
-      (Stream   : not null access Root_Stream_Type'Class;
-       Position : out Cursor)
-    is
-    begin
-       raise Program_Error with "attempt to read tree cursor from stream";
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Constant_Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Read;
- 
-    ---------------
-    -- Reference --
-    ---------------
- 
-    function Reference
-      (Container : aliased in out Tree;
-       Position  : Cursor) return Reference_Type
-    is
-    begin
-       if Checks and then Position.Container = null then
-          raise Constraint_Error with
-            "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor designates wrong container";
-       end if;
- 
-       if Checks and then Position.Node = Root_Node (Container) then
-          raise Program_Error with "Position cursor designates root";
-       end if;
- 
-       --  Implement Vet for multiway tree???
-       --  pragma Assert (Vet (Position),
-       --                 "Position cursor in Constant_Reference is bad");
- 
-       declare
-          C : Tree renames Position.Container.all;
-          TC : constant Tamper_Counts_Access :=
-            C.TC'Unrestricted_Access;
-       begin
-          return R : constant Reference_Type :=
-            (Element => Position.Node.Element'Access,
-             Control => (Controlled with TC))
-          do
-             Lock (TC.all);
-          end return;
-       end;
-    end Reference;
- 
-    --------------------
-    -- Remove_Subtree --
-    --------------------
- 
-    procedure Remove_Subtree (Subtree : Tree_Node_Access) is
-       C : Children_Type renames Subtree.Parent.Children;
- 
-    begin
-       --  This is a utility operation to remove a subtree node from its
-       --  parent's list of children.
- 
-       if C.First = Subtree then
-          pragma Assert (Subtree.Prev = null);
- 
-          if C.Last = Subtree then
-             pragma Assert (Subtree.Next = null);
-             C.First := null;
-             C.Last := null;
- 
-          else
-             C.First := Subtree.Next;
-             C.First.Prev := null;
-          end if;
- 
-       elsif C.Last = Subtree then
-          pragma Assert (Subtree.Next = null);
-          C.Last := Subtree.Prev;
-          C.Last.Next := null;
- 
-       else
-          Subtree.Prev.Next := Subtree.Next;
-          Subtree.Next.Prev := Subtree.Prev;
-       end if;
-    end Remove_Subtree;
- 
-    ----------------------
-    -- Replace_Element --
-    ----------------------
- 
-    procedure Replace_Element
-      (Container : in out Tree;
-       Position  : Cursor;
-       New_Item  : Element_Type)
-    is
-    begin
-       if Checks and then Position = No_Element then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with "Position cursor not in container";
-       end if;
- 
-       if Checks and then Is_Root (Position) then
-          raise Program_Error with "Position cursor designates root";
-       end if;
- 
-       TE_Check (Container.TC);
- 
-       Position.Node.Element := New_Item;
-    end Replace_Element;
- 
-    ------------------------------
-    -- Reverse_Iterate_Children --
-    ------------------------------
- 
-    procedure Reverse_Iterate_Children
-      (Parent  : Cursor;
-       Process : not null access procedure (Position : Cursor))
-    is
-       C : Tree_Node_Access;
-       Busy : With_Busy (Parent.Container.TC'Unrestricted_Access);
-    begin
-       if Checks and then Parent = No_Element then
-          raise Constraint_Error with "Parent cursor has no element";
-       end if;
- 
-       C := Parent.Node.Children.Last;
-       while C /= null loop
-          Process (Position => Cursor'(Parent.Container, Node => C));
-          C := C.Prev;
-       end loop;
-    end Reverse_Iterate_Children;
- 
-    ----------
-    -- Root --
-    ----------
- 
-    function Root (Container : Tree) return Cursor is
-    begin
-       return (Container'Unrestricted_Access, Root_Node (Container));
-    end Root;
- 
-    ---------------
-    -- Root_Node --
-    ---------------
- 
-    function Root_Node (Container : Tree) return Tree_Node_Access is
-       type Root_Node_Access is access all Root_Node_Type;
-       for Root_Node_Access'Storage_Size use 0;
-       pragma Convention (C, Root_Node_Access);
- 
-       function To_Tree_Node_Access is
-          new Ada.Unchecked_Conversion (Root_Node_Access, Tree_Node_Access);
- 
-    --  Start of processing for Root_Node
- 
-    begin
-       --  This is a utility function for converting from an access type that
-       --  designates the distinguished root node to an access type designating
-       --  a non-root node. The representation of a root node does not have an
-       --  element, but is otherwise identical to a non-root node, so the
-       --  conversion itself is safe.
- 
-       return To_Tree_Node_Access (Container.Root'Unrestricted_Access);
-    end Root_Node;
- 
-    ---------------------
-    -- Splice_Children --
-    ---------------------
- 
-    procedure Splice_Children
-      (Target          : in out Tree;
-       Target_Parent   : Cursor;
-       Before          : Cursor;
-       Source          : in out Tree;
-       Source_Parent   : Cursor)
-    is
-       Count : Count_Type;
- 
-    begin
-       if Checks and then Target_Parent = No_Element then
-          raise Constraint_Error with "Target_Parent cursor has no element";
-       end if;
- 
-       if Checks and then Target_Parent.Container /= Target'Unrestricted_Access
-       then
-          raise Program_Error
-            with "Target_Parent cursor not in Target container";
-       end if;
- 
-       if Before /= No_Element then
-          if Checks and then Before.Container /= Target'Unrestricted_Access then
-             raise Program_Error
-               with "Before cursor not in Target container";
-          end if;
- 
-          if Checks and then Before.Node.Parent /= Target_Parent.Node then
-             raise Constraint_Error
-               with "Before cursor not child of Target_Parent";
-          end if;
-       end if;
- 
-       if Checks and then Source_Parent = No_Element then
-          raise Constraint_Error with "Source_Parent cursor has no element";
-       end if;
- 
-       if Checks and then Source_Parent.Container /= Source'Unrestricted_Access
-       then
-          raise Program_Error
-            with "Source_Parent cursor not in Source container";
-       end if;
- 
-       if Target'Address = Source'Address then
-          if Target_Parent = Source_Parent then
-             return;
-          end if;
- 
-          TC_Check (Target.TC);
- 
-          if Checks and then Is_Reachable (From => Target_Parent.Node,
-                           To   => Source_Parent.Node)
-          then
-             raise Constraint_Error
-               with "Source_Parent is ancestor of Target_Parent";
-          end if;
- 
-          Splice_Children
-            (Target_Parent => Target_Parent.Node,
-             Before        => Before.Node,
-             Source_Parent => Source_Parent.Node);
- 
-          return;
-       end if;
- 
-       TC_Check (Target.TC);
-       TC_Check (Source.TC);
- 
-       --  We cache the count of the nodes we have allocated, so that operation
-       --  Node_Count can execute in O(1) time. But that means we must count the
-       --  nodes in the subtree we remove from Source and insert into Target, in
-       --  order to keep the count accurate.
- 
-       Count := Subtree_Node_Count (Source_Parent.Node);
-       pragma Assert (Count >= 1);
- 
-       Count := Count - 1;  -- because Source_Parent node does not move
- 
-       Splice_Children
-         (Target_Parent => Target_Parent.Node,
-          Before        => Before.Node,
-          Source_Parent => Source_Parent.Node);
- 
-       Source.Count := Source.Count - Count;
-       Target.Count := Target.Count + Count;
-    end Splice_Children;
- 
-    procedure Splice_Children
-      (Container       : in out Tree;
-       Target_Parent   : Cursor;
-       Before          : Cursor;
-       Source_Parent   : Cursor)
-    is
-    begin
-       if Checks and then Target_Parent = No_Element then
-          raise Constraint_Error with "Target_Parent cursor has no element";
-       end if;
- 
-       if Checks and then
-         Target_Parent.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error
-            with "Target_Parent cursor not in container";
-       end if;
- 
-       if Before /= No_Element then
-          if Checks and then Before.Container /= Container'Unrestricted_Access
-          then
-             raise Program_Error
-               with "Before cursor not in container";
-          end if;
- 
-          if Checks and then Before.Node.Parent /= Target_Parent.Node then
-             raise Constraint_Error
-               with "Before cursor not child of Target_Parent";
-          end if;
-       end if;
- 
-       if Checks and then Source_Parent = No_Element then
-          raise Constraint_Error with "Source_Parent cursor has no element";
-       end if;
- 
-       if Checks and then
-         Source_Parent.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error
-            with "Source_Parent cursor not in container";
-       end if;
- 
-       if Target_Parent = Source_Parent then
-          return;
-       end if;
- 
-       TC_Check (Container.TC);
- 
-       if Checks and then Is_Reachable (From => Target_Parent.Node,
-                        To   => Source_Parent.Node)
-       then
-          raise Constraint_Error
-            with "Source_Parent is ancestor of Target_Parent";
-       end if;
- 
-       Splice_Children
-         (Target_Parent => Target_Parent.Node,
-          Before        => Before.Node,
-          Source_Parent => Source_Parent.Node);
-    end Splice_Children;
- 
-    procedure Splice_Children
-      (Target_Parent : Tree_Node_Access;
-       Before        : Tree_Node_Access;
-       Source_Parent : Tree_Node_Access)
-    is
-       CC : constant Children_Type := Source_Parent.Children;
-       C  : Tree_Node_Access;
- 
-    begin
-       --  This is a utility operation to remove the children from
-       --  Source parent and insert them into Target parent.
- 
-       Source_Parent.Children := Children_Type'(others => null);
- 
-       --  Fix up the Parent pointers of each child to designate
-       --  its new Target parent.
- 
-       C := CC.First;
-       while C /= null loop
-          C.Parent := Target_Parent;
-          C := C.Next;
-       end loop;
- 
-       Insert_Subtree_List
-         (First  => CC.First,
-          Last   => CC.Last,
-          Parent => Target_Parent,
-          Before => Before);
-    end Splice_Children;
- 
-    --------------------
-    -- Splice_Subtree --
-    --------------------
- 
-    procedure Splice_Subtree
-      (Target   : in out Tree;
-       Parent   : Cursor;
-       Before   : Cursor;
-       Source   : in out Tree;
-       Position : in out Cursor)
-    is
-       Subtree_Count : Count_Type;
- 
-    begin
-       if Checks and then Parent = No_Element then
-          raise Constraint_Error with "Parent cursor has no element";
-       end if;
- 
-       if Checks and then Parent.Container /= Target'Unrestricted_Access then
-          raise Program_Error with "Parent cursor not in Target container";
-       end if;
- 
-       if Before /= No_Element then
-          if Checks and then Before.Container /= Target'Unrestricted_Access then
-             raise Program_Error with "Before cursor not in Target container";
-          end if;
- 
-          if Checks and then Before.Node.Parent /= Parent.Node then
-             raise Constraint_Error with "Before cursor not child of Parent";
-          end if;
-       end if;
- 
-       if Checks and then Position = No_Element then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Source'Unrestricted_Access then
-          raise Program_Error with "Position cursor not in Source container";
-       end if;
- 
-       if Checks and then Is_Root (Position) then
-          raise Program_Error with "Position cursor designates root";
-       end if;
- 
-       if Target'Address = Source'Address then
-          if Position.Node.Parent = Parent.Node then
-             if Position.Node = Before.Node then
-                return;
-             end if;
- 
-             if Position.Node.Next = Before.Node then
-                return;
-             end if;
-          end if;
- 
-          TC_Check (Target.TC);
- 
-          if Checks and then
-            Is_Reachable (From => Parent.Node, To => Position.Node)
-          then
-             raise Constraint_Error with "Position is ancestor of Parent";
-          end if;
- 
-          Remove_Subtree (Position.Node);
- 
-          Position.Node.Parent := Parent.Node;
-          Insert_Subtree_Node (Position.Node, Parent.Node, Before.Node);
- 
-          return;
-       end if;
- 
-       TC_Check (Target.TC);
-       TC_Check (Source.TC);
- 
-       --  This is an unfortunate feature of this API: we must count the nodes
-       --  in the subtree that we remove from the source tree, which is an O(n)
-       --  operation. It would have been better if the Tree container did not
-       --  have a Node_Count selector; a user that wants the number of nodes in
-       --  the tree could simply call Subtree_Node_Count, with the understanding
-       --  that such an operation is O(n).
- 
-       --  Of course, we could choose to implement the Node_Count selector as an
-       --  O(n) operation, which would turn this splice operation into an O(1)
-       --  operation. ???
- 
-       Subtree_Count := Subtree_Node_Count (Position.Node);
-       pragma Assert (Subtree_Count <= Source.Count);
- 
-       Remove_Subtree (Position.Node);
-       Source.Count := Source.Count - Subtree_Count;
- 
-       Position.Node.Parent := Parent.Node;
-       Insert_Subtree_Node (Position.Node, Parent.Node, Before.Node);
- 
-       Target.Count := Target.Count + Subtree_Count;
- 
-       Position.Container := Target'Unrestricted_Access;
-    end Splice_Subtree;
- 
-    procedure Splice_Subtree
-      (Container : in out Tree;
-       Parent    : Cursor;
-       Before    : Cursor;
-       Position  : Cursor)
-    is
-    begin
-       if Checks and then Parent = No_Element then
-          raise Constraint_Error with "Parent cursor has no element";
-       end if;
- 
-       if Checks and then Parent.Container /= Container'Unrestricted_Access then
-          raise Program_Error with "Parent cursor not in container";
-       end if;
- 
-       if Before /= No_Element then
-          if Checks and then Before.Container /= Container'Unrestricted_Access
-          then
-             raise Program_Error with "Before cursor not in container";
-          end if;
- 
-          if Checks and then Before.Node.Parent /= Parent.Node then
-             raise Constraint_Error with "Before cursor not child of Parent";
-          end if;
-       end if;
- 
-       if Checks and then Position = No_Element then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with "Position cursor not in container";
-       end if;
- 
-       if Checks and then Is_Root (Position) then
- 
-          --  Should this be PE instead?  Need ARG confirmation.  ???
- 
-          raise Constraint_Error with "Position cursor designates root";
-       end if;
- 
-       if Position.Node.Parent = Parent.Node then
-          if Position.Node = Before.Node then
-             return;
-          end if;
- 
-          if Position.Node.Next = Before.Node then
-             return;
-          end if;
-       end if;
- 
-       TC_Check (Container.TC);
- 
-       if Checks and then
-         Is_Reachable (From => Parent.Node, To => Position.Node)
-       then
-          raise Constraint_Error with "Position is ancestor of Parent";
-       end if;
- 
-       Remove_Subtree (Position.Node);
- 
-       Position.Node.Parent := Parent.Node;
-       Insert_Subtree_Node (Position.Node, Parent.Node, Before.Node);
-    end Splice_Subtree;
- 
-    ------------------------
-    -- Subtree_Node_Count --
-    ------------------------
- 
-    function Subtree_Node_Count (Position : Cursor) return Count_Type is
-    begin
-       if Position = No_Element then
-          return 0;
-       end if;
- 
-       return Subtree_Node_Count (Position.Node);
-    end Subtree_Node_Count;
- 
-    function Subtree_Node_Count
-      (Subtree : Tree_Node_Access) return Count_Type
-    is
-       Result : Count_Type;
-       Node   : Tree_Node_Access;
- 
-    begin
-       Result := 1;
-       Node := Subtree.Children.First;
-       while Node /= null loop
-          Result := Result + Subtree_Node_Count (Node);
-          Node := Node.Next;
-       end loop;
- 
-       return Result;
-    end Subtree_Node_Count;
- 
-    ----------
-    -- Swap --
-    ----------
- 
-    procedure Swap
-      (Container : in out Tree;
-       I, J      : Cursor)
-    is
-    begin
-       if Checks and then I = No_Element then
-          raise Constraint_Error with "I cursor has no element";
-       end if;
- 
-       if Checks and then I.Container /= Container'Unrestricted_Access then
-          raise Program_Error with "I cursor not in container";
-       end if;
- 
-       if Checks and then Is_Root (I) then
-          raise Program_Error with "I cursor designates root";
-       end if;
- 
-       if I = J then -- make this test sooner???
-          return;
-       end if;
- 
-       if Checks and then J = No_Element then
-          raise Constraint_Error with "J cursor has no element";
-       end if;
- 
-       if Checks and then J.Container /= Container'Unrestricted_Access then
-          raise Program_Error with "J cursor not in container";
-       end if;
- 
-       if Checks and then Is_Root (J) then
-          raise Program_Error with "J cursor designates root";
-       end if;
- 
-       TE_Check (Container.TC);
- 
-       declare
-          EI : constant Element_Type := I.Node.Element;
- 
-       begin
-          I.Node.Element := J.Node.Element;
-          J.Node.Element := EI;
-       end;
-    end Swap;
- 
-    --------------------
-    -- Update_Element --
-    --------------------
- 
-    procedure Update_Element
-      (Container : in out Tree;
-       Position  : Cursor;
-       Process   : not null access procedure (Element : in out Element_Type))
-    is
-       T : Tree renames Position.Container.all'Unrestricted_Access.all;
-       Lock : With_Lock (T.TC'Unrestricted_Access);
-    begin
-       if Checks and then Position = No_Element then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with "Position cursor not in container";
-       end if;
- 
-       if Checks and then Is_Root (Position) then
-          raise Program_Error with "Position cursor designates root";
-       end if;
- 
-       Process (Position.Node.Element);
-    end Update_Element;
- 
-    -----------
-    -- Write --
-    -----------
- 
-    procedure Write
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : Tree)
-    is
-       procedure Write_Children (Subtree : Tree_Node_Access);
-       procedure Write_Subtree (Subtree : Tree_Node_Access);
- 
-       --------------------
-       -- Write_Children --
-       --------------------
- 
-       procedure Write_Children (Subtree : Tree_Node_Access) is
-          CC : Children_Type renames Subtree.Children;
-          C  : Tree_Node_Access;
- 
-       begin
-          Count_Type'Write (Stream, Child_Count (CC));
- 
-          C := CC.First;
-          while C /= null loop
-             Write_Subtree (C);
-             C := C.Next;
-          end loop;
-       end Write_Children;
- 
-       -------------------
-       -- Write_Subtree --
-       -------------------
- 
-       procedure Write_Subtree (Subtree : Tree_Node_Access) is
-       begin
-          Element_Type'Output (Stream, Subtree.Element);
-          Write_Children (Subtree);
-       end Write_Subtree;
- 
-    --  Start of processing for Write
- 
-    begin
-       Count_Type'Write (Stream, Container.Count);
- 
-       if Container.Count = 0 then
-          return;
-       end if;
- 
-       Write_Children (Root_Node (Container));
-    end Write;
- 
-    procedure Write
-      (Stream   : not null access Root_Stream_Type'Class;
-       Position : Cursor)
-    is
-    begin
-       raise Program_Error with "attempt to write tree cursor to stream";
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Constant_Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Write;
- 
- end Ada.Containers.Multiway_Trees;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-comutr.ads gcc-8.1.0/gcc/ada/a-comutr.ads
*** gcc-7.3.0/gcc/ada/a-comutr.ads	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-comutr.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,511 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --         A D A . C O N T A I N E R S . M U L T I W A Y _ T R E E S        --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, 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/>.                                          --
- --                                                                          --
- -- This unit was originally developed by Matthew J Heaney.                  --
- ------------------------------------------------------------------------------
- 
- with Ada.Iterator_Interfaces;
- 
- with Ada.Containers.Helpers;
- private with Ada.Finalization;
- private with Ada.Streams;
- 
- generic
-    type Element_Type is private;
- 
-    with function "=" (Left, Right : Element_Type) return Boolean is <>;
- 
- package Ada.Containers.Multiway_Trees is
-    pragma Annotate (CodePeer, Skip_Analysis);
-    pragma Preelaborate;
-    pragma Remote_Types;
- 
-    type Tree is tagged private
-      with Constant_Indexing => Constant_Reference,
-           Variable_Indexing => Reference,
-           Default_Iterator  => Iterate,
-           Iterator_Element  => Element_Type;
-    pragma Preelaborable_Initialization (Tree);
- 
-    type Cursor is private;
-    pragma Preelaborable_Initialization (Cursor);
- 
-    Empty_Tree : constant Tree;
- 
-    No_Element : constant Cursor;
-    function Has_Element (Position : Cursor) return Boolean;
- 
-    package Tree_Iterator_Interfaces is new
-      Ada.Iterator_Interfaces (Cursor, Has_Element);
- 
-    function Equal_Subtree
-      (Left_Position  : Cursor;
-       Right_Position : Cursor) return Boolean;
- 
-    function "=" (Left, Right : Tree) return Boolean;
- 
-    function Is_Empty (Container : Tree) return Boolean;
- 
-    function Node_Count (Container : Tree) return Count_Type;
- 
-    function Subtree_Node_Count (Position : Cursor) return Count_Type;
- 
-    function Depth (Position : Cursor) return Count_Type;
- 
-    function Is_Root (Position : Cursor) return Boolean;
- 
-    function Is_Leaf (Position : Cursor) return Boolean;
- 
-    function Root (Container : Tree) return Cursor;
- 
-    procedure Clear (Container : in out Tree);
- 
-    function Element (Position : Cursor) return Element_Type;
- 
-    procedure Replace_Element
-      (Container : in out Tree;
-       Position  : Cursor;
-       New_Item  : Element_Type);
- 
-    procedure Query_Element
-      (Position : Cursor;
-       Process  : not null access procedure (Element : Element_Type));
- 
-    procedure Update_Element
-      (Container : in out Tree;
-       Position  : Cursor;
-       Process   : not null access procedure (Element : in out Element_Type));
- 
-    type Constant_Reference_Type
-      (Element : not null access constant Element_Type) is private
-         with Implicit_Dereference => Element;
- 
-    type Reference_Type
-      (Element : not null access Element_Type) is private
-         with Implicit_Dereference => Element;
- 
-    function Constant_Reference
-      (Container : aliased Tree;
-       Position  : Cursor) return Constant_Reference_Type;
-    pragma Inline (Constant_Reference);
- 
-    function Reference
-      (Container : aliased in out Tree;
-       Position  : Cursor) return Reference_Type;
-    pragma Inline (Reference);
- 
-    procedure Assign (Target : in out Tree; Source : Tree);
- 
-    function Copy (Source : Tree) return Tree;
- 
-    procedure Move (Target : in out Tree; Source : in out Tree);
- 
-    procedure Delete_Leaf
-      (Container : in out Tree;
-       Position  : in out Cursor);
- 
-    procedure Delete_Subtree
-      (Container : in out Tree;
-       Position  : in out Cursor);
- 
-    procedure Swap
-      (Container : in out Tree;
-       I, J      : Cursor);
- 
-    function Find
-      (Container : Tree;
-       Item      : Element_Type) return Cursor;
- 
-    --  This version of the AI:
-    --   10-06-02  AI05-0136-1/07
-    --  declares Find_In_Subtree this way:
-    --
-    --  function Find_In_Subtree
-    --    (Container : Tree;
-    --     Item      : Element_Type;
-    --     Position  : Cursor) return Cursor;
-    --
-    --  It seems that the Container parameter is there by mistake, but we need
-    --  an official ruling from the ARG. ???
- 
-    function Find_In_Subtree
-      (Position : Cursor;
-       Item     : Element_Type) return Cursor;
- 
-    --  This version of the AI:
-    --   10-06-02  AI05-0136-1/07
-    --  declares Ancestor_Find this way:
-    --
-    --  function Ancestor_Find
-    --    (Container : Tree;
-    --     Item      : Element_Type;
-    --     Position  : Cursor) return Cursor;
-    --
-    --  It seems that the Container parameter is there by mistake, but we need
-    --  an official ruling from the ARG. ???
- 
-    function Ancestor_Find
-      (Position : Cursor;
-       Item     : Element_Type) return Cursor;
- 
-    function Contains
-      (Container : Tree;
-       Item      : Element_Type) return Boolean;
- 
-    procedure Iterate
-      (Container : Tree;
-       Process   : not null access procedure (Position : Cursor));
- 
-    procedure Iterate_Subtree
-      (Position : Cursor;
-       Process  : not null access procedure (Position : Cursor));
- 
-    function Iterate (Container : Tree)
-      return Tree_Iterator_Interfaces.Forward_Iterator'Class;
- 
-    function Iterate_Subtree (Position : Cursor)
-      return Tree_Iterator_Interfaces.Forward_Iterator'Class;
- 
-    function Iterate_Children
-      (Container : Tree;
-       Parent    : Cursor)
-       return Tree_Iterator_Interfaces.Reversible_Iterator'Class;
- 
-    function Child_Count (Parent : Cursor) return Count_Type;
- 
-    function Child_Depth (Parent, Child : Cursor) return Count_Type;
- 
-    procedure Insert_Child
-      (Container : in out Tree;
-       Parent    : Cursor;
-       Before    : Cursor;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1);
- 
-    procedure Insert_Child
-      (Container : in out Tree;
-       Parent    : Cursor;
-       Before    : Cursor;
-       New_Item  : Element_Type;
-       Position  : out Cursor;
-       Count     : Count_Type := 1);
- 
-    procedure Insert_Child
-      (Container : in out Tree;
-       Parent    : Cursor;
-       Before    : Cursor;
-       Position  : out Cursor;
-       Count     : Count_Type := 1);
- 
-    procedure Prepend_Child
-      (Container : in out Tree;
-       Parent    : Cursor;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1);
- 
-    procedure Append_Child
-      (Container : in out Tree;
-       Parent    : Cursor;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1);
- 
-    procedure Delete_Children
-      (Container : in out Tree;
-       Parent    : Cursor);
- 
-    procedure Copy_Subtree
-      (Target   : in out Tree;
-       Parent   : Cursor;
-       Before   : Cursor;
-       Source   : Cursor);
- 
-    procedure Splice_Subtree
-      (Target   : in out Tree;
-       Parent   : Cursor;
-       Before   : Cursor;
-       Source   : in out Tree;
-       Position : in out Cursor);
- 
-    procedure Splice_Subtree
-      (Container : in out Tree;
-       Parent    : Cursor;
-       Before    : Cursor;
-       Position  : Cursor);
- 
-    procedure Splice_Children
-      (Target          : in out Tree;
-       Target_Parent   : Cursor;
-       Before          : Cursor;
-       Source          : in out Tree;
-       Source_Parent   : Cursor);
- 
-    procedure Splice_Children
-      (Container       : in out Tree;
-       Target_Parent   : Cursor;
-       Before          : Cursor;
-       Source_Parent   : Cursor);
- 
-    function Parent (Position : Cursor) return Cursor;
- 
-    function First_Child (Parent : Cursor) return Cursor;
- 
-    function First_Child_Element (Parent : Cursor) return Element_Type;
- 
-    function Last_Child (Parent : Cursor) return Cursor;
- 
-    function Last_Child_Element (Parent : Cursor) return Element_Type;
- 
-    function Next_Sibling (Position : Cursor) return Cursor;
- 
-    function Previous_Sibling (Position : Cursor) return Cursor;
- 
-    procedure Next_Sibling (Position : in out Cursor);
- 
-    procedure Previous_Sibling (Position : in out Cursor);
- 
-    --  This version of the AI:
-    --   10-06-02  AI05-0136-1/07
-    --  declares Iterate_Children this way:
-    --
-    --  procedure Iterate_Children
-    --    (Container : Tree;
-    --     Parent    : Cursor;
-    --     Process   : not null access procedure (Position : Cursor));
-    --
-    --  It seems that the Container parameter is there by mistake, but we need
-    --  an official ruling from the ARG. ???
- 
-    procedure Iterate_Children
-      (Parent  : Cursor;
-       Process : not null access procedure (Position : Cursor));
- 
-    procedure Reverse_Iterate_Children
-      (Parent  : Cursor;
-       Process : not null access procedure (Position : Cursor));
- 
- private
-    --  A node of this multiway tree comprises an element and a list of children
-    --  (that are themselves trees). The root node is distinguished because it
-    --  contains only children: it does not have an element itself.
- 
-    --  This design feature puts two design goals in tension with one another:
-    --   (1) treat the root node the same as any other node
-    --   (2) not declare any objects of type Element_Type unnecessarily
- 
-    --  To satisfy (1), we could simply declare the Root node of the tree
-    --  using the normal Tree_Node_Type, but that would mean that (2) is not
-    --  satisfied. To resolve the tension (in favor of (2)), we declare the
-    --  component Root as having a different node type, without an Element
-    --  component (thus satisfying goal (2)) but otherwise identical to a normal
-    --  node, and then use Unchecked_Conversion to convert an access object
-    --  designating the Root node component to the access type designating a
-    --  normal, non-root node (thus satisfying goal (1)). We make an explicit
-    --  check for Root when there is any attempt to manipulate the Element
-    --  component of the node (a check required by the RM anyway).
- 
-    --  In order to be explicit about node (and pointer) representation, we
-    --  specify that the respective node types have convention C, to ensure
-    --  that the layout of the components of the node records is the same,
-    --  thus guaranteeing that (unchecked) conversions between access types
-    --  designating each kind of node type is a meaningful conversion.
- 
-    use Ada.Containers.Helpers;
-    package Implementation is new Generic_Implementation;
-    use Implementation;
- 
-    type Tree_Node_Type;
-    type Tree_Node_Access is access all Tree_Node_Type;
-    pragma Convention (C, Tree_Node_Access);
-    pragma No_Strict_Aliasing (Tree_Node_Access);
-    --  The above-mentioned Unchecked_Conversion is a violation of the normal
-    --  aliasing rules.
- 
-    type Children_Type is record
-       First : Tree_Node_Access;
-       Last  : Tree_Node_Access;
-    end record;
- 
-    --  See the comment above. This declaration must exactly match the
-    --  declaration of Root_Node_Type (except for the Element component).
- 
-    type Tree_Node_Type is record
-       Parent   : Tree_Node_Access;
-       Prev     : Tree_Node_Access;
-       Next     : Tree_Node_Access;
-       Children : Children_Type;
-       Element  : aliased Element_Type;
-    end record;
-    pragma Convention (C, Tree_Node_Type);
- 
-    --  See the comment above. This declaration must match the declaration of
-    --  Tree_Node_Type (except for the Element component).
- 
-    type Root_Node_Type is record
-       Parent   : Tree_Node_Access;
-       Prev     : Tree_Node_Access;
-       Next     : Tree_Node_Access;
-       Children : Children_Type;
-    end record;
-    pragma Convention (C, Root_Node_Type);
- 
-    for Root_Node_Type'Alignment use Standard'Maximum_Alignment;
-    --  The alignment has to be large enough to allow Root_Node to Tree_Node
-    --  access value conversions, and Tree_Node_Type's alignment may be bumped
-    --  up by the Element component.
- 
-    use Ada.Finalization;
- 
-    --  The Count component of type Tree represents the number of nodes that
-    --  have been (dynamically) allocated. It does not include the root node
-    --  itself. As implementors, we decide to cache this value, so that the
-    --  selector function Node_Count can execute in O(1) time, in order to be
-    --  consistent with the behavior of the Length selector function for other
-    --  standard container library units. This does mean, however, that the
-    --  two-container forms for Splice_XXX (that move subtrees across tree
-    --  containers) will execute in O(n) time, because we must count the number
-    --  of nodes in the subtree(s) that get moved. (We resolve the tension
-    --  between Node_Count and Splice_XXX in favor of Node_Count, under the
-    --  assumption that Node_Count is the more common operation).
- 
-    type Tree is new Controlled with record
-       Root  : aliased Root_Node_Type;
-       TC    : aliased Tamper_Counts;
-       Count : Count_Type := 0;
-    end record;
- 
-    overriding procedure Adjust (Container : in out Tree);
- 
-    overriding procedure Finalize (Container : in out Tree) renames Clear;
- 
-    use Ada.Streams;
- 
-    procedure Write
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : Tree);
- 
-    for Tree'Write use Write;
- 
-    procedure Read
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : out Tree);
- 
-    for Tree'Read use Read;
- 
-    type Tree_Access is access all Tree;
-    for Tree_Access'Storage_Size use 0;
- 
-    type Cursor is record
-       Container : Tree_Access;
-       Node      : Tree_Node_Access;
-    end record;
- 
-    procedure Write
-      (Stream   : not null access Root_Stream_Type'Class;
-       Position : Cursor);
- 
-    for Cursor'Write use Write;
- 
-    procedure Read
-      (Stream   : not null access Root_Stream_Type'Class;
-       Position : out Cursor);
- 
-    for Cursor'Read use Read;
- 
-    subtype Reference_Control_Type is Implementation.Reference_Control_Type;
-    --  It is necessary to rename this here, so that the compiler can find it
- 
-    type Constant_Reference_Type
-      (Element : not null access constant Element_Type) is
-       record
-          Control : Reference_Control_Type :=
-            raise Program_Error with "uninitialized reference";
-          --  The RM says, "The default initialization of an object of
-          --  type Constant_Reference_Type or Reference_Type propagates
-          --  Program_Error."
-       end record;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Constant_Reference_Type);
- 
-    for Constant_Reference_Type'Read use Read;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Constant_Reference_Type);
- 
-    for Constant_Reference_Type'Write use Write;
- 
-    type Reference_Type
-      (Element : not null access Element_Type) is
-       record
-          Control : Reference_Control_Type :=
-            raise Program_Error with "uninitialized reference";
-          --  The RM says, "The default initialization of an object of
-          --  type Constant_Reference_Type or Reference_Type propagates
-          --  Program_Error."
-       end record;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Reference_Type);
- 
-    for Reference_Type'Read use Read;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Reference_Type);
- 
-    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;
-    pragma Inline (Pseudo_Reference);
-    --  Creates an object of type Reference_Control_Type pointing to the
-    --  container, and increments the Lock. Finalization of this object will
-    --  decrement the Lock.
- 
-    type Element_Access is access all Element_Type with
-      Storage_Size => 0;
- 
-    function Get_Element_Access
-      (Position : Cursor) return not null Element_Access;
-    --  Returns a pointer to the element designated by Position.
- 
-    Empty_Tree : constant Tree := (Controlled with others => <>);
- 
-    No_Element : constant Cursor := (others => <>);
- 
- end Ada.Containers.Multiway_Trees;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-conhel.adb gcc-8.1.0/gcc/ada/a-conhel.adb
*** gcc-7.3.0/gcc/ada/a-conhel.adb	Wed Apr 27 12:55:18 2016
--- gcc-8.1.0/gcc/ada/a-conhel.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,186 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --               A D A . C O N T A I N E R S . H E L P E R S                --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --           Copyright (C) 2015-2016, Free Software Foundation, Inc.        --
- --                                                                          --
- -- GNAT is 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 Ada.Containers.Helpers is
- 
-    package body Generic_Implementation is
- 
-       use type SAC.Atomic_Unsigned;
- 
-       ------------
-       -- Adjust --
-       ------------
- 
-       procedure Adjust (Control : in out Reference_Control_Type) is
-       begin
-          if Control.T_Counts /= null then
-             Lock (Control.T_Counts.all);
-          end if;
-       end Adjust;
- 
-       ----------
-       -- Busy --
-       ----------
- 
-       procedure Busy (T_Counts : in out Tamper_Counts) is
-       begin
-          if T_Check then
-             SAC.Increment (T_Counts.Busy);
-          end if;
-       end Busy;
- 
-       --------------
-       -- Finalize --
-       --------------
- 
-       procedure Finalize (Control : in out Reference_Control_Type) is
-       begin
-          if Control.T_Counts /= null then
-             Unlock (Control.T_Counts.all);
-             Control.T_Counts := null;
-          end if;
-       end Finalize;
- 
-       --  No need to protect against double Finalize here, because these types
-       --  are limited.
- 
-       procedure Finalize (Busy : in out With_Busy) is
-          pragma Warnings (Off);
-          pragma Assert (T_Check); -- not called if check suppressed
-          pragma Warnings (On);
-       begin
-          Unbusy (Busy.T_Counts.all);
-       end Finalize;
- 
-       procedure Finalize (Lock : in out With_Lock) is
-          pragma Warnings (Off);
-          pragma Assert (T_Check); -- not called if check suppressed
-          pragma Warnings (On);
-       begin
-          Unlock (Lock.T_Counts.all);
-       end Finalize;
- 
-       ----------------
-       -- Initialize --
-       ----------------
- 
-       procedure Initialize (Busy : in out With_Busy) is
-          pragma Warnings (Off);
-          pragma Assert (T_Check); -- not called if check suppressed
-          pragma Warnings (On);
-       begin
-          Generic_Implementation.Busy (Busy.T_Counts.all);
-       end Initialize;
- 
-       procedure Initialize (Lock : in out With_Lock) is
-          pragma Warnings (Off);
-          pragma Assert (T_Check); -- not called if check suppressed
-          pragma Warnings (On);
-       begin
-          Generic_Implementation.Lock (Lock.T_Counts.all);
-       end Initialize;
- 
-       ----------
-       -- Lock --
-       ----------
- 
-       procedure Lock (T_Counts : in out Tamper_Counts) is
-       begin
-          if T_Check then
-             SAC.Increment (T_Counts.Lock);
-             SAC.Increment (T_Counts.Busy);
-          end if;
-       end Lock;
- 
-       --------------
-       -- TC_Check --
-       --------------
- 
-       procedure TC_Check (T_Counts : Tamper_Counts) is
-       begin
-          if T_Check and then T_Counts.Busy > 0 then
-             raise Program_Error with
-               "attempt to tamper with cursors";
-          end if;
- 
-          --  The lock status (which monitors "element tampering") always
-          --  implies that the busy status (which monitors "cursor tampering")
-          --  is set too; this is a representation invariant. Thus if the busy
-          --  bit is not set, then the lock bit must not be set either.
- 
-          pragma Assert (T_Counts.Lock = 0);
-       end TC_Check;
- 
-       --------------
-       -- TE_Check --
-       --------------
- 
-       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;
-       end TE_Check;
- 
-       ------------
-       -- Unbusy --
-       ------------
- 
-       procedure Unbusy (T_Counts : in out Tamper_Counts) is
-       begin
-          if T_Check then
-             SAC.Decrement (T_Counts.Busy);
-          end if;
-       end Unbusy;
- 
-       ------------
-       -- Unlock --
-       ------------
- 
-       procedure Unlock (T_Counts : in out Tamper_Counts) is
-       begin
-          if T_Check then
-             SAC.Decrement (T_Counts.Lock);
-             SAC.Decrement (T_Counts.Busy);
-          end if;
-       end Unlock;
- 
-       -----------------
-       -- Zero_Counts --
-       -----------------
- 
-       procedure Zero_Counts (T_Counts : out Tamper_Counts) is
-       begin
-          if T_Check then
-             T_Counts := (others => <>);
-          end if;
-       end Zero_Counts;
- 
-    end Generic_Implementation;
- 
- end Ada.Containers.Helpers;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-conhel.ads gcc-8.1.0/gcc/ada/a-conhel.ads
*** gcc-7.3.0/gcc/ada/a-conhel.ads	Wed Apr 20 10:29:26 2016
--- gcc-8.1.0/gcc/ada/a-conhel.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,159 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --               A D A . C O N T A I N E R S . H E L P E R S                --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --             Copyright (C) 2015, Free Software Foundation, Inc.           --
- --                                                                          --
- -- GNAT is 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.Finalization;
- with System.Atomic_Counters;
- 
- package Ada.Containers.Helpers is
-    pragma Annotate (CodePeer, Skip_Analysis);
-    pragma Pure;
- 
-    --  Miscellaneous helpers shared among various containers
- 
-    package SAC renames System.Atomic_Counters;
- 
-    Count_Type_Last : constant := Count_Type'Last;
-    --  Count_Type'Last as a universal_integer, so we can compare Index_Type
-    --  values against this without type conversions that might overflow.
- 
-    type Tamper_Counts is record
-       Busy : aliased SAC.Atomic_Unsigned := 0;
-       Lock : aliased SAC.Atomic_Unsigned := 0;
-    end record;
- 
-    --  Busy is positive when tampering with cursors is prohibited. Busy and
-    --  Lock are both positive when tampering with elements is prohibited.
- 
-    type Tamper_Counts_Access is access all Tamper_Counts;
-    for Tamper_Counts_Access'Storage_Size use 0;
- 
-    generic
-    package Generic_Implementation is
- 
-       --  Generic package used in the implementation of containers.
- 
-       --  This needs to be generic so that the 'Enabled attribute will return
-       --  the value that is relevant at the point where a container generic is
-       --  instantiated. For example:
-       --
-       --     pragma Suppress (Container_Checks);
-       --     package My_Vectors is new Ada.Containers.Vectors (...);
-       --
-       --  should suppress all container-related checks within the instance
-       --  My_Vectors.
- 
-       --  Shorthands for "checks enabled" and "tampering checks enabled". Note
-       --  that suppressing either Container_Checks or Tampering_Check disables
-       --  tampering checks. Note that this code needs to be in a generic
-       --  package, because we want to take account of check suppressions at the
-       --  instance. We use these flags, along with pragma Inline, to ensure
-       --  that the compiler can optimize away the checks, as well as the
-       --  tampering check machinery, when checks are suppressed.
- 
-       Checks : constant Boolean := Container_Checks'Enabled;
-       T_Check : constant Boolean :=
-         Container_Checks'Enabled and Tampering_Check'Enabled;
- 
-       --  Reference_Control_Type is used as a component of reference types, to
-       --  prohibit tampering with elements so long as references exist.
- 
-       type Reference_Control_Type is
-          new Finalization.Controlled with record
-             T_Counts : Tamper_Counts_Access;
-          end record
-            with Disable_Controlled => not T_Check;
- 
-       overriding procedure Adjust (Control : in out Reference_Control_Type);
-       pragma Inline (Adjust);
- 
-       overriding procedure Finalize (Control : in out Reference_Control_Type);
-       pragma Inline (Finalize);
- 
-       procedure Zero_Counts (T_Counts : out Tamper_Counts);
-       pragma Inline (Zero_Counts);
-       --  Set Busy and Lock to zero
- 
-       procedure Busy (T_Counts : in out Tamper_Counts);
-       pragma Inline (Busy);
-       --  Prohibit tampering with cursors
- 
-       procedure Unbusy (T_Counts : in out Tamper_Counts);
-       pragma Inline (Unbusy);
-       --  Allow tampering with cursors
- 
-       procedure Lock (T_Counts : in out Tamper_Counts);
-       pragma Inline (Lock);
-       --  Prohibit tampering with elements
- 
-       procedure Unlock (T_Counts : in out Tamper_Counts);
-       pragma Inline (Unlock);
-       --  Allow tampering with elements
- 
-       procedure TC_Check (T_Counts : Tamper_Counts);
-       pragma Inline (TC_Check);
-       --  Tampering-with-cursors check
- 
-       procedure TE_Check (T_Counts : Tamper_Counts);
-       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
-       --  given scope, declare an object of type With_Busy. The Busy count
-       --  will be correctly decremented in case of exception or abort.
- 
-       --  With_Lock is the same as With_Busy, except it increments/decrements
-       --  BOTH Busy and Lock, thus prohibiting tampering with cursors.
- 
-       type With_Busy (T_Counts : not null access Tamper_Counts) is
-         new Finalization.Limited_Controlled with null record
-           with Disable_Controlled => not T_Check;
-       overriding procedure Initialize (Busy : in out With_Busy);
-       overriding procedure Finalize (Busy : in out With_Busy);
- 
-       type With_Lock (T_Counts : not null access Tamper_Counts) is
-         new Finalization.Limited_Controlled with null record
-           with Disable_Controlled => not T_Check;
-       overriding procedure Initialize (Lock : in out With_Lock);
-       overriding procedure Finalize (Lock : in out With_Lock);
- 
-       --  Variables of type With_Busy and With_Lock are declared only for the
-       --  effects of Initialize and Finalize, so they are not referenced;
-       --  disable warnings about that. Note that all variables of these types
-       --  have names starting with "Busy" or "Lock". These pragmas need to be
-       --  present wherever these types are used.
- 
-       pragma Warnings (Off, "variable ""Busy*"" is not referenced");
-       pragma Warnings (Off, "variable ""Lock*"" is not referenced");
- 
-    end Generic_Implementation;
- 
- end Ada.Containers.Helpers;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-contai.ads gcc-8.1.0/gcc/ada/a-contai.ads
*** gcc-7.3.0/gcc/ada/a-contai.ads	Tue Oct 20 12:21:37 2015
--- gcc-8.1.0/gcc/ada/a-contai.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,24 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                       A D A . C O N T A I N E R S                        --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- package Ada.Containers is
-    pragma Pure;
- 
-    type Hash_Type is mod 2**32;
-    type Count_Type is range 0 .. 2**31 - 1;
- 
-    Capacity_Error : exception;
- 
- end Ada.Containers;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-convec.adb gcc-8.1.0/gcc/ada/a-convec.adb
*** gcc-7.3.0/gcc/ada/a-convec.adb	Wed Apr 27 12:55:18 2016
--- gcc-8.1.0/gcc/ada/a-convec.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,3274 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                A D A . C O N T A I N E R S . V E C T O R S               --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2004-2016, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 Ada.Containers.Generic_Array_Sort;
- with Ada.Unchecked_Deallocation;
- 
- with System; use type System.Address;
- 
- package body Ada.Containers.Vectors is
- 
-    pragma Warnings (Off, "variable ""Busy*"" is not referenced");
-    pragma Warnings (Off, "variable ""Lock*"" is not referenced");
-    --  See comment in Ada.Containers.Helpers
- 
-    procedure Free is
-      new Ada.Unchecked_Deallocation (Elements_Type, Elements_Access);
- 
-    procedure Append_Slow_Path
-      (Container : in out Vector;
-       New_Item  : Element_Type;
-       Count     : Count_Type);
-    --  This is the slow path for Append. This is split out to minimize the size
-    --  of Append, because we have Inline (Append).
- 
-    ---------
-    -- "&" --
-    ---------
- 
-    --  We decide that the capacity of the result of "&" is the minimum needed
-    --  -- the sum of the lengths of the vector parameters. We could decide to
-    --  make it larger, but we have no basis for knowing how much larger, so we
-    --  just allocate the minimum amount of storage.
- 
-    function "&" (Left, Right : Vector) return Vector is
-    begin
-       return Result : Vector do
-          Reserve_Capacity (Result, Length (Left) + Length (Right));
-          Append (Result, Left);
-          Append (Result, Right);
-       end return;
-    end "&";
- 
-    function "&" (Left  : Vector; Right : Element_Type) return Vector is
-    begin
-       return Result : Vector do
-          Reserve_Capacity (Result, Length (Left) + 1);
-          Append (Result, Left);
-          Append (Result, Right);
-       end return;
-    end "&";
- 
-    function "&" (Left  : Element_Type; Right : Vector) return Vector is
-    begin
-       return Result : Vector do
-          Reserve_Capacity (Result, 1 + Length (Right));
-          Append (Result, Left);
-          Append (Result, Right);
-       end return;
-    end "&";
- 
-    function "&" (Left, Right : Element_Type) return Vector is
-    begin
-       return Result : Vector do
-          Reserve_Capacity (Result, 1 + 1);
-          Append (Result, Left);
-          Append (Result, Right);
-       end return;
-    end "&";
- 
-    ---------
-    -- "=" --
-    ---------
- 
-    overriding function "=" (Left, Right : Vector) return Boolean is
-    begin
-       if Left.Last /= Right.Last then
-          return False;
-       end if;
- 
-       if Left.Length = 0 then
-          return True;
-       end if;
- 
-       declare
-          --  Per AI05-0022, the container implementation is required to detect
-          --  element tampering by a generic actual subprogram.
- 
-          Lock_Left : With_Lock (Left.TC'Unrestricted_Access);
-          Lock_Right : With_Lock (Right.TC'Unrestricted_Access);
-       begin
-          for J in Index_Type range Index_Type'First .. Left.Last loop
-             if Left.Elements.EA (J) /= Right.Elements.EA (J) then
-                return False;
-             end if;
-          end loop;
-       end;
- 
-       return True;
-    end "=";
- 
-    ------------
-    -- Adjust --
-    ------------
- 
-    procedure Adjust (Container : in out Vector) is
-    begin
-       --  If the counts are nonzero, execution is technically erroneous, but
-       --  it seems friendly to allow things like concurrent "=" on shared
-       --  constants.
- 
-       Zero_Counts (Container.TC);
- 
-       if Container.Last = No_Index then
-          Container.Elements := null;
-          return;
-       end if;
- 
-       declare
-          L  : constant Index_Type := Container.Last;
-          EA : Elements_Array renames
-                 Container.Elements.EA (Index_Type'First .. L);
- 
-       begin
-          Container.Elements := null;
- 
-          --  Note: it may seem that the following assignment to Container.Last
-          --  is useless, since we assign it to L below. However this code is
-          --  used in case 'new Elements_Type' below raises an exception, to
-          --  keep Container in a consistent state.
- 
-          Container.Last := No_Index;
-          Container.Elements := new Elements_Type'(L, EA);
-          Container.Last := L;
-       end;
-    end Adjust;
- 
-    ------------
-    -- Append --
-    ------------
- 
-    procedure Append (Container : in out Vector; New_Item : Vector) is
-    begin
-       if Is_Empty (New_Item) then
-          return;
-       elsif Checks and then Container.Last = Index_Type'Last then
-          raise Constraint_Error with "vector is already at its maximum length";
-       else
-          Insert (Container, Container.Last + 1, New_Item);
-       end if;
-    end Append;
- 
-    procedure Append
-      (Container : in out Vector;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1)
-    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;
-    end Append;
- 
-    ----------------------
-    -- Append_Slow_Path --
-    ----------------------
- 
-    procedure Append_Slow_Path
-      (Container : in out Vector;
-       New_Item  : Element_Type;
-       Count     : Count_Type)
-    is
-    begin
-       if Count = 0 then
-          return;
-       elsif Checks and then Container.Last = Index_Type'Last then
-          raise Constraint_Error with "vector is already at its maximum length";
-       else
-          Insert (Container, Container.Last + 1, New_Item, Count);
-       end if;
-    end Append_Slow_Path;
- 
-    ------------
-    -- Assign --
-    ------------
- 
-    procedure Assign (Target : in out Vector; Source : Vector) is
-    begin
-       if Target'Address = Source'Address then
-          return;
-       else
-          Target.Clear;
-          Target.Append (Source);
-       end if;
-    end Assign;
- 
-    --------------
-    -- Capacity --
-    --------------
- 
-    function Capacity (Container : Vector) return Count_Type is
-    begin
-       if Container.Elements = null then
-          return 0;
-       else
-          return Container.Elements.EA'Length;
-       end if;
-    end Capacity;
- 
-    -----------
-    -- Clear --
-    -----------
- 
-    procedure Clear (Container : in out Vector) is
-    begin
-       TC_Check (Container.TC);
-       Container.Last := No_Index;
-    end Clear;
- 
-    ------------------------
-    -- Constant_Reference --
-    ------------------------
- 
-    function Constant_Reference
-      (Container : aliased Vector;
-       Position  : Cursor) return Constant_Reference_Type
-    is
-    begin
-       if Checks then
-          if Position.Container = null then
-             raise Constraint_Error with "Position cursor has no element";
-          end if;
- 
-          if Position.Container /= Container'Unrestricted_Access then
-             raise Program_Error with "Position cursor denotes wrong container";
-          end if;
- 
-          if Position.Index > Position.Container.Last then
-             raise Constraint_Error with "Position cursor is out of range";
-          end if;
-       end if;
- 
-       declare
-          TC : constant Tamper_Counts_Access :=
-            Container.TC'Unrestricted_Access;
-       begin
-          return R : constant Constant_Reference_Type :=
-            (Element => Container.Elements.EA (Position.Index)'Access,
-             Control => (Controlled with TC))
-          do
-             Lock (TC.all);
-          end return;
-       end;
-    end Constant_Reference;
- 
-    function Constant_Reference
-      (Container : aliased Vector;
-       Index     : Index_Type) return Constant_Reference_Type
-    is
-    begin
-       if Checks and then Index > Container.Last then
-          raise Constraint_Error with "Index is out of range";
-       end if;
- 
-       declare
-          TC : constant Tamper_Counts_Access :=
-            Container.TC'Unrestricted_Access;
-       begin
-          return R : constant Constant_Reference_Type :=
-            (Element => Container.Elements.EA (Index)'Access,
-             Control => (Controlled with TC))
-          do
-             Lock (TC.all);
-          end return;
-       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 : Count_Type := 0) return Vector
-    is
-       C : Count_Type;
- 
-    begin
-       if Capacity >= Source.Length then
-          C := Capacity;
- 
-       else
-          C := Source.Length;
- 
-          if Checks and then Capacity /= 0 then
-             raise Capacity_Error with
-               "Requested capacity is less than Source length";
-          end if;
-       end if;
- 
-       return Target : Vector do
-          Target.Reserve_Capacity (C);
-          Target.Assign (Source);
-       end return;
-    end Copy;
- 
-    ------------
-    -- Delete --
-    ------------
- 
-    procedure Delete
-      (Container : in out Vector;
-       Index     : Extended_Index;
-       Count     : Count_Type := 1)
-    is
-       Old_Last : constant Index_Type'Base := Container.Last;
-       New_Last : Index_Type'Base;
-       Count2   : Count_Type'Base;  -- count of items from Index to Old_Last
-       J        : Index_Type'Base;  -- first index of items that slide down
- 
-    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 Checks and then 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 Checks and then Index > Old_Last + 1 then
-             raise Constraint_Error with "Index is out of range (too large)";
-          else
-             return;
-          end if;
-       end if;
- 
-       --  Here and elsewhere we treat deleting 0 items from the container as a
-       --  no-op, even when the container is busy, so we simply return.
- 
-       if Count = 0 then
-          return;
-       end if;
- 
-       --  The tampering bits exist to prevent an item from being deleted (or
-       --  otherwise harmfully manipulated) while it is being visited. Query,
-       --  Update, and Iterate increment the busy count on entry, and decrement
-       --  the count on exit. Delete checks the count to determine whether it is
-       --  being called while the associated callback procedure is executing.
- 
-       TC_Check (Container.TC);
- 
-       --  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. For the elements that slide down,
-       --  index value New_Last is the last index value of their new home, and
-       --  index value J is the first index of their old home.
- 
-       if Index_Type'Base'Last >= Count_Type_Last then
-          New_Last := Old_Last - Index_Type'Base (Count);
-          J := Index + Index_Type'Base (Count);
-       else
-          New_Last := Index_Type'Base (Count_Type'Base (Old_Last) - Count);
-          J := Index_Type'Base (Count_Type'Base (Index) + Count);
-       end if;
- 
-       --  The internal elements array isn't guaranteed to exist unless we have
-       --  elements, but we have that guarantee here because we know we have
-       --  elements to slide.  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.EA;
-       begin
-          EA (Index .. New_Last) := EA (J .. Old_Last);
-          Container.Last := New_Last;
-       end;
-    end Delete;
- 
-    procedure Delete
-      (Container : in out Vector;
-       Position  : in out Cursor;
-       Count     : Count_Type := 1)
-    is
-    begin
-       if Checks then
-          if Position.Container = null then
-             raise Constraint_Error with "Position cursor has no element";
- 
-          elsif Position.Container /= Container'Unrestricted_Access then
-             raise Program_Error with "Position cursor denotes wrong container";
- 
-          elsif Position.Index > Container.Last then
-             raise Program_Error with "Position index is out of range";
-          end if;
-       end if;
- 
-       Delete (Container, Position.Index, Count);
-       Position := No_Element;
-    end Delete;
- 
-    ------------------
-    -- Delete_First --
-    ------------------
- 
-    procedure Delete_First
-      (Container : in out Vector;
-       Count     : Count_Type := 1)
-    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;
-       Count     : Count_Type := 1)
-    is
-    begin
-       --  It is not permitted to delete items while the container is busy (for
-       --  example, we're in the middle of a passive iteration). However, we
-       --  always treat deleting 0 items as a no-op, even when we're busy, so we
-       --  simply return without checking.
- 
-       if Count = 0 then
-          return;
-       end if;
- 
-       --  The tampering bits exist to prevent an item from being deleted (or
-       --  otherwise harmfully manipulated) while it is being visited. Query,
-       --  Update, and Iterate increment the busy count on entry, and decrement
-       --  the count on exit. Delete_Last checks the count to determine whether
-       --  it is being called while the associated callback procedure is
-       --  executing.
- 
-       TC_Check (Container.TC);
- 
-       --  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 >= Container.Length then
-          Container.Last := No_Index;
- 
-       elsif Index_Type'Base'Last >= 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 Checks and then Index > Container.Last then
-          raise Constraint_Error with "Index is out of range";
-       end if;
- 
-       return Container.Elements.EA (Index);
-    end Element;
- 
-    function Element (Position : Cursor) return Element_Type is
-    begin
-       if Checks then
-          if Position.Container = null then
-             raise Constraint_Error with "Position cursor has no element";
-          elsif Position.Index > Position.Container.Last then
-             raise Constraint_Error with "Position cursor is out of range";
-          end if;
-       end if;
- 
-       return Position.Container.Elements.EA (Position.Index);
-    end Element;
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    procedure Finalize (Container : in out Vector) is
-       X : Elements_Access := Container.Elements;
- 
-    begin
-       Container.Elements := null;
-       Container.Last := No_Index;
- 
-       Free (X);
- 
-       TC_Check (Container.TC);
-    end Finalize;
- 
-    procedure Finalize (Object : in out Iterator) is
-    begin
-       Unbusy (Object.Container.TC);
-    end Finalize;
- 
-    ----------
-    -- Find --
-    ----------
- 
-    function Find
-      (Container : Vector;
-       Item      : Element_Type;
-       Position  : Cursor := No_Element) return Cursor
-    is
-    begin
-       if Checks and then Position.Container /= null then
-          if Position.Container /= Container'Unrestricted_Access then
-             raise Program_Error with "Position cursor denotes wrong container";
-          end if;
- 
-          if Position.Index > Container.Last then
-             raise Program_Error with "Position index is out of range";
-          end if;
-       end if;
- 
-       --  Per AI05-0022, the container implementation is required to detect
-       --  element tampering by a generic actual subprogram.
- 
-       declare
-          Lock : With_Lock (Container.TC'Unrestricted_Access);
-       begin
-          for J in Position.Index .. Container.Last loop
-             if Container.Elements.EA (J) = Item then
-                return Cursor'(Container'Unrestricted_Access, J);
-             end if;
-          end loop;
- 
-          return No_Element;
-       end;
-    end Find;
- 
-    ----------------
-    -- Find_Index --
-    ----------------
- 
-    function Find_Index
-      (Container : Vector;
-       Item      : Element_Type;
-       Index     : Index_Type := Index_Type'First) return Extended_Index
-    is
-       --  Per AI05-0022, the container implementation is required to detect
-       --  element tampering by a generic actual subprogram.
- 
-       Lock : With_Lock (Container.TC'Unrestricted_Access);
-    begin
-       for Indx in Index .. Container.Last loop
-          if Container.Elements.EA (Indx) = Item then
-             return Indx;
-          end if;
-       end loop;
- 
-       return No_Index;
-    end Find_Index;
- 
-    -----------
-    -- First --
-    -----------
- 
-    function First (Container : Vector) return Cursor is
-    begin
-       if Is_Empty (Container) then
-          return No_Element;
-       end if;
- 
-       return (Container'Unrestricted_Access, Index_Type'First);
-    end First;
- 
-    function First (Object : Iterator) return Cursor is
-    begin
-       --  The value of the iterator object's Index component influences the
-       --  behavior of the First (and Last) selector function.
- 
-       --  When the Index component is No_Index, this means the iterator
-       --  object was constructed without a start expression, in which case the
-       --  (forward) iteration starts from the (logical) beginning of the entire
-       --  sequence of items (corresponding to Container.First, for a forward
-       --  iterator).
- 
-       --  Otherwise, this is iteration over a partial sequence of items.
-       --  When the Index component isn't No_Index, the iterator object was
-       --  constructed with a start expression, that specifies the position
-       --  from which the (forward) partial iteration begins.
- 
-       if Object.Index = No_Index then
-          return First (Object.Container.all);
-       else
-          return Cursor'(Object.Container, Object.Index);
-       end if;
-    end First;
- 
-    -------------------
-    -- First_Element --
-    -------------------
- 
-    function First_Element (Container : Vector) return Element_Type is
-    begin
-       if Checks and then Container.Last = No_Index then
-          raise Constraint_Error with "Container is empty";
-       else
-          return Container.Elements.EA (Index_Type'First);
-       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;
- 
-    ---------------------
-    -- Generic_Sorting --
-    ---------------------
- 
-    package body Generic_Sorting is
- 
-       ---------------
-       -- Is_Sorted --
-       ---------------
- 
-       function Is_Sorted (Container : Vector) return Boolean is
-       begin
-          if Container.Last <= Index_Type'First then
-             return True;
-          end if;
- 
-          --  Per AI05-0022, the container implementation is required to detect
-          --  element tampering by a generic actual subprogram.
- 
-          declare
-             Lock : With_Lock (Container.TC'Unrestricted_Access);
-             EA   : Elements_Array renames Container.Elements.EA;
-          begin
-             for J in Index_Type'First .. Container.Last - 1 loop
-                if EA (J + 1) < EA (J) then
-                   return False;
-                end if;
-             end loop;
- 
-             return True;
-          end;
-       end Is_Sorted;
- 
-       -----------
-       -- Merge --
-       -----------
- 
-       procedure Merge (Target, Source : in out Vector) is
-          I : Index_Type'Base := Target.Last;
-          J : Index_Type'Base;
- 
-       begin
-          --  The semantics of Merge changed slightly per AI05-0021. It was
-          --  originally the case that if Target and Source denoted the same
-          --  container object, then the GNAT implementation of Merge did
-          --  nothing. However, it was argued that RM05 did not precisely
-          --  specify the semantics for this corner case. The decision of the
-          --  ARG was that if Target and Source denote the same non-empty
-          --  container object, then Program_Error is raised.
- 
-          if Source.Last < Index_Type'First then  -- Source is empty
-             return;
-          end if;
- 
-          if Checks and then Target'Address = Source'Address then
-             raise Program_Error with
-               "Target and Source denote same non-empty container";
-          end if;
- 
-          if Target.Last < Index_Type'First then  -- Target is empty
-             Move (Target => Target, Source => Source);
-             return;
-          end if;
- 
-          TC_Check (Source.TC);
- 
-          Target.Set_Length (Length (Target) + Length (Source));
- 
-          --  Per AI05-0022, the container implementation is required to detect
-          --  element tampering by a generic actual subprogram.
- 
-          declare
-             TA : Elements_Array renames Target.Elements.EA;
-             SA : Elements_Array renames Source.Elements.EA;
- 
-             Lock_Target : With_Lock (Target.TC'Unchecked_Access);
-             Lock_Source : With_Lock (Source.TC'Unchecked_Access);
-          begin
-             J := Target.Last;
-             while Source.Last >= Index_Type'First loop
-                pragma Assert (Source.Last <= Index_Type'First
-                                or else not (SA (Source.Last) <
-                                             SA (Source.Last - 1)));
- 
-                if I < Index_Type'First then
-                   TA (Index_Type'First .. J) :=
-                     SA (Index_Type'First .. Source.Last);
- 
-                   Source.Last := No_Index;
-                   exit;
-                end if;
- 
-                pragma Assert (I <= Index_Type'First
-                                 or else not (TA (I) < TA (I - 1)));
- 
-                if SA (Source.Last) < TA (I) then
-                   TA (J) := TA (I);
-                   I := I - 1;
- 
-                else
-                   TA (J) := SA (Source.Last);
-                   Source.Last := Source.Last - 1;
-                end if;
- 
-                J := J - 1;
-             end loop;
-          end;
-       end Merge;
- 
-       ----------
-       -- Sort --
-       ----------
- 
-       procedure Sort (Container : in out Vector) is
-          procedure Sort is
-             new Generic_Array_Sort
-              (Index_Type   => Index_Type,
-               Element_Type => Element_Type,
-               Array_Type   => Elements_Array,
-               "<"          => "<");
- 
-       begin
-          if Container.Last <= Index_Type'First then
-             return;
-          end if;
- 
-          --  The exception behavior for the vector container must match that
-          --  for the list container, so we check for cursor tampering here
-          --  (which will catch more things) instead of for element tampering
-          --  (which will catch fewer things). It's true that the elements of
-          --  this vector container could be safely moved around while (say) an
-          --  iteration is taking place (iteration only increments the busy
-          --  counter), and so technically all we would need here is a test for
-          --  element tampering (indicated by the lock counter), that's simply
-          --  an artifact of our array-based implementation. Logically Sort
-          --  requires a check for cursor tampering.
- 
-          TC_Check (Container.TC);
- 
-          --  Per AI05-0022, the container implementation is required to detect
-          --  element tampering by a generic actual subprogram.
- 
-          declare
-             Lock : With_Lock (Container.TC'Unchecked_Access);
-          begin
-             Sort (Container.Elements.EA (Index_Type'First .. Container.Last));
-          end;
-       end Sort;
- 
-    end Generic_Sorting;
- 
-    ------------------------
-    -- Get_Element_Access --
-    ------------------------
- 
-    function Get_Element_Access
-      (Position : Cursor) return not null Element_Access is
-    begin
-       return Position.Container.Elements.EA (Position.Index)'Access;
-    end Get_Element_Access;
- 
-    -----------------
-    -- Has_Element --
-    -----------------
- 
-    function Has_Element (Position : Cursor) return Boolean is
-    begin
-       return Position /= No_Element;
-    end Has_Element;
- 
-    ------------
-    -- Insert --
-    ------------
- 
-    procedure Insert
-      (Container : in out Vector;
-       Before    : Extended_Index;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1)
-    is
-       Old_Length : constant Count_Type := Container.Length;
- 
-       Max_Length : Count_Type'Base;  -- determined from range of Index_Type
-       New_Length : Count_Type'Base;  -- sum of current length and Count
-       New_Last   : Index_Type'Base;  -- last index of vector after insertion
- 
-       Index : Index_Type'Base;  -- scratch for intermediate values
-       J     : Count_Type'Base;  -- scratch
- 
-       New_Capacity : Count_Type'Base;  -- length of new, expanded array
-       Dst_Last     : Index_Type'Base;  -- last index of new, expanded array
-       Dst          : Elements_Access;  -- new, expanded internal array
- 
-    begin
-       if Checks then
-          --  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 + 1 then
-             raise Constraint_Error with
-               "Before index is out of range (too large)";
-          end if;
-       end if;
- 
-       --  We treat inserting 0 items into the container as a no-op, even when
-       --  the container is busy, 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: we cannot simply add these values, because of the possibility
-       --  of overflow.
- 
-       if Checks and then 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_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_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 Checks and then New_Length > Max_Length then
-          raise Constraint_Error with "Count is out of range";
-       end if;
- 
-       --  New_Last is the last index value of the items in the container after
-       --  insertion.  Use the wider of Index_Type'Base and Count_Type'Base to
-       --  compute its value from the New_Length.
- 
-       if Index_Type'Base'Last >= Count_Type_Last then
-          New_Last := No_Index + Index_Type'Base (New_Length);
-       else
-          New_Last := Index_Type'Base (Count_Type'Base (No_Index) + New_Length);
-       end if;
- 
-       if Container.Elements = null then
-          pragma Assert (Container.Last = No_Index);
- 
-          --  This is the simplest case, with which we must always begin: we're
-          --  inserting items into an empty vector that hasn't allocated an
-          --  internal array yet. Note that we don't need to check the busy bit
-          --  here, because an empty container cannot be busy.
- 
-          --  In order to preserve container invariants, we allocate the new
-          --  internal array first, before setting the Last index value, in case
-          --  the allocation fails (which can happen either because there is no
-          --  storage available, or because element initialization fails).
- 
-          Container.Elements := new Elements_Type'
-                                      (Last => New_Last,
-                                       EA   => (others => New_Item));
- 
-          --  The allocation of the new, internal array succeeded, so it is now
-          --  safe to update the Last index, restoring container invariants.
- 
-          Container.Last := New_Last;
- 
-          return;
-       end if;
- 
-       --  The tampering bits exist to prevent an item from being harmfully
-       --  manipulated while it is being visited. Query, Update, and Iterate
-       --  increment the busy count on entry, and decrement the count on
-       --  exit. Insert checks the count to determine whether it is being called
-       --  while the associated callback procedure is executing.
- 
-       TC_Check (Container.TC);
- 
-       --  An internal array has already been allocated, so we must determine
-       --  whether there is enough unused storage for the new items.
- 
-       if New_Length <= Container.Elements.EA'Length then
- 
-          --  In this case, we're inserting elements into a vector that has
-          --  already allocated an internal array, and the existing array has
-          --  enough unused storage for the new items.
- 
-          declare
-             EA : Elements_Array renames Container.Elements.EA;
- 
-          begin
-             if Before > Container.Last then
- 
-                --  The new items are being appended to the vector, so no
-                --  sliding of existing elements is required.
- 
-                EA (Before .. New_Last) := (others => New_Item);
- 
-             else
-                --  The new items are being inserted before some existing
-                --  elements, so we must slide the existing elements up to their
-                --  new home. We use the wider of Index_Type'Base and
-                --  Count_Type'Base as the type for intermediate index values.
- 
-                if Index_Type'Base'Last >= Count_Type_Last then
-                   Index := Before + Index_Type'Base (Count);
-                else
-                   Index := Index_Type'Base (Count_Type'Base (Before) + Count);
-                end if;
- 
-                EA (Index .. New_Last) := EA (Before .. Container.Last);
-                EA (Before .. Index - 1) := (others => New_Item);
-             end if;
-          end;
- 
-          Container.Last := New_Last;
-          return;
-       end if;
- 
-       --  In this case, we're inserting elements into a vector that has already
-       --  allocated an internal array, but the existing array does not have
-       --  enough storage, so we must allocate a new, longer array. In order to
-       --  guarantee that the amortized insertion cost is O(1), we always
-       --  allocate an array whose length is some power-of-two factor of the
-       --  current array length. (The new array cannot have a length less than
-       --  the New_Length of the container, but its last index value cannot be
-       --  greater than Index_Type'Last.)
- 
-       New_Capacity := Count_Type'Max (1, Container.Elements.EA'Length);
-       while New_Capacity < New_Length loop
-          if New_Capacity > Count_Type'Last / 2 then
-             New_Capacity := Count_Type'Last;
-             exit;
-          else
-             New_Capacity := 2 * New_Capacity;
-          end if;
-       end loop;
- 
-       if New_Capacity > Max_Length then
- 
-          --  We have reached the limit of capacity, so no further expansion
-          --  will occur. (This is not a problem, as there is never a need to
-          --  have more capacity than the maximum container length.)
- 
-          New_Capacity := Max_Length;
-       end if;
- 
-       --  We have computed the length of the new internal array (and this is
-       --  what "vector capacity" means), so use that to compute its last index.
- 
-       if Index_Type'Base'Last >= Count_Type_Last then
-          Dst_Last := No_Index + Index_Type'Base (New_Capacity);
-       else
-          Dst_Last :=
-            Index_Type'Base (Count_Type'Base (No_Index) + New_Capacity);
-       end if;
- 
-       --  Now we allocate the new, longer internal array. If the allocation
-       --  fails, we have not changed any container state, so no side-effect
-       --  will occur as a result of propagating the exception.
- 
-       Dst := new Elements_Type (Dst_Last);
- 
-       --  We have our new internal array. All that needs to be done now is to
-       --  copy the existing items (if any) from the old array (the "source"
-       --  array, object SA below) to the new array (the "destination" array,
-       --  object DA below), and then deallocate the old array.
- 
-       declare
-          SA : Elements_Array renames Container.Elements.EA; -- source
-          DA : Elements_Array renames Dst.EA;                -- destination
- 
-       begin
-          DA (Index_Type'First .. Before - 1) :=
-            SA (Index_Type'First .. Before - 1);
- 
-          if Before > Container.Last then
-             DA (Before .. New_Last) := (others => New_Item);
- 
-          else
-             --  The new items are being inserted before some existing elements,
-             --  so we must slide the existing elements up to their new home.
- 
-             if Index_Type'Base'Last >= Count_Type_Last then
-                Index := Before + Index_Type'Base (Count);
-             else
-                Index := Index_Type'Base (Count_Type'Base (Before) + Count);
-             end if;
- 
-             DA (Before .. Index - 1) := (others => New_Item);
-             DA (Index .. New_Last) := SA (Before .. Container.Last);
-          end if;
- 
-       exception
-          when others =>
-             Free (Dst);
-             raise;
-       end;
- 
-       --  We have successfully copied the items onto the new array, so the
-       --  final thing to do is deallocate the old array.
- 
-       declare
-          X : Elements_Access := Container.Elements;
- 
-       begin
-          --  We first isolate the old internal array, removing it from the
-          --  container and replacing it with the new internal array, before we
-          --  deallocate the old array (which can fail if finalization of
-          --  elements propagates an exception).
- 
-          Container.Elements := Dst;
-          Container.Last := New_Last;
- 
-          --  The container invariants have been restored, so it is now safe to
-          --  attempt to deallocate the old array.
- 
-          Free (X);
-       end;
-    end Insert;
- 
-    procedure Insert
-      (Container : in out Vector;
-       Before    : Extended_Index;
-       New_Item  : Vector)
-    is
-       N : constant Count_Type := Length (New_Item);
-       J : Index_Type'Base;
- 
-    begin
-       --  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;
- 
-       --  We calculate the last index value of the destination slice using the
-       --  wider of Index_Type'Base and count_Type'Base.
- 
-       if Index_Type'Base'Last >= Count_Type_Last then
-          J := (Before - 1) + Index_Type'Base (N);
-       else
-          J := Index_Type'Base (Count_Type'Base (Before - 1) + N);
-       end if;
- 
-       if Container'Address /= New_Item'Address then
- 
-          --  This is the simple case.  New_Item denotes an object different
-          --  from Container, so there's nothing special we need to do to copy
-          --  the source items to their destination, because all of the source
-          --  items are contiguous.
- 
-          Container.Elements.EA (Before .. J) :=
-            New_Item.Elements.EA (Index_Type'First .. New_Item.Last);
- 
-          return;
-       end if;
- 
-       --  New_Item denotes the same object as Container, so an insertion has
-       --  potentially split the source items. The destination is always the
-       --  range [Before, J], but the source is [Index_Type'First, Before) and
-       --  (J, Container.Last]. We perform the copy in two steps, using each of
-       --  the two slices of the source items.
- 
-       declare
-          L : constant Index_Type'Base := Before - 1;
- 
-          subtype Src_Index_Subtype is Index_Type'Base range
-            Index_Type'First .. L;
- 
-          Src : Elements_Array renames
-                  Container.Elements.EA (Src_Index_Subtype);
- 
-          K : Index_Type'Base;
- 
-       begin
-          --  We first copy the source items that precede the space we
-          --  inserted. Index value K is the last index of that portion
-          --  destination that receives this slice of the source. (If Before
-          --  equals Index_Type'First, then this first source slice will be
-          --  empty, which is harmless.)
- 
-          if Index_Type'Base'Last >= Count_Type_Last then
-             K := L + Index_Type'Base (Src'Length);
-          else
-             K := Index_Type'Base (Count_Type'Base (L) + Src'Length);
-          end if;
- 
-          Container.Elements.EA (Before .. K) := Src;
- 
-          if Src'Length = N then
- 
-             --  The new items were effectively appended to the container, so we
-             --  have already copied all of the items that need to be copied.
-             --  We return early here, even though the source slice below is
-             --  empty (so the assignment would be harmless), because we want to
-             --  avoid computing J + 1, which will overflow if J equals
-             --  Index_Type'Base'Last.
- 
-             return;
-          end if;
-       end;
- 
-       declare
-          --  Note that we want to avoid computing J + 1 here, in case J equals
-          --  Index_Type'Base'Last. We prevent that by returning early above,
-          --  immediately after copying the first slice of the source, and
-          --  determining that this second slice of the source is empty.
- 
-          F : constant Index_Type'Base := J + 1;
- 
-          subtype Src_Index_Subtype is Index_Type'Base range
-            F .. Container.Last;
- 
-          Src : Elements_Array renames
-                  Container.Elements.EA (Src_Index_Subtype);
- 
-          K : Index_Type'Base;
- 
-       begin
-          --  We next copy the source items that follow the space we inserted.
-          --  Index value K is the first index of that portion of the
-          --  destination that receives this slice of the source. (For the
-          --  reasons given above, this slice is guaranteed to be non-empty.)
- 
-          if Index_Type'Base'Last >= Count_Type_Last then
-             K := F - Index_Type'Base (Src'Length);
-          else
-             K := Index_Type'Base (Count_Type'Base (F) - Src'Length);
-          end if;
- 
-          Container.Elements.EA (K .. J) := Src;
-       end;
-    end Insert;
- 
-    procedure Insert
-      (Container : in out Vector;
-       Before    : Cursor;
-       New_Item  : Vector)
-    is
-       Index : Index_Type'Base;
- 
-    begin
-       if Checks and then Before.Container /= null
-         and then Before.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with "Before cursor denotes wrong container";
-       end if;
- 
-       if Is_Empty (New_Item) then
-          return;
-       end if;
- 
-       if Before.Container = null or else Before.Index > Container.Last then
-          if Checks and then Container.Last = Index_Type'Last then
-             raise Constraint_Error with
-               "vector is already at its maximum length";
-          end if;
- 
-          Index := Container.Last + 1;
- 
-       else
-          Index := Before.Index;
-       end if;
- 
-       Insert (Container, Index, New_Item);
-    end Insert;
- 
-    procedure Insert
-      (Container : in out Vector;
-       Before    : Cursor;
-       New_Item  : Vector;
-       Position  : out Cursor)
-    is
-       Index : Index_Type'Base;
- 
-    begin
-       if Checks and then Before.Container /= null
-         and then Before.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with "Before cursor denotes wrong container";
-       end if;
- 
-       if Is_Empty (New_Item) then
-          if Before.Container = null or else Before.Index > Container.Last then
-             Position := No_Element;
-          else
-             Position := (Container'Unrestricted_Access, Before.Index);
-          end if;
- 
-          return;
-       end if;
- 
-       if Before.Container = null or else Before.Index > Container.Last then
-          if Checks and then Container.Last = Index_Type'Last then
-             raise Constraint_Error with
-               "vector is already at its maximum length";
-          end if;
- 
-          Index := Container.Last + 1;
- 
-       else
-          Index := Before.Index;
-       end if;
- 
-       Insert (Container, Index, New_Item);
- 
-       Position := (Container'Unrestricted_Access, Index);
-    end Insert;
- 
-    procedure Insert
-      (Container : in out Vector;
-       Before    : Cursor;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1)
-    is
-       Index : Index_Type'Base;
- 
-    begin
-       if Checks and then Before.Container /= null
-         and then Before.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with "Before cursor denotes wrong container";
-       end if;
- 
-       if Count = 0 then
-          return;
-       end if;
- 
-       if Before.Container = null or else Before.Index > Container.Last then
-          if Checks and then Container.Last = Index_Type'Last then
-             raise Constraint_Error with
-               "vector is already at its maximum length";
-          else
-             Index := Container.Last + 1;
-          end if;
- 
-       else
-          Index := Before.Index;
-       end if;
- 
-       Insert (Container, Index, New_Item, Count);
-    end Insert;
- 
-    procedure Insert
-      (Container : in out Vector;
-       Before    : Cursor;
-       New_Item  : Element_Type;
-       Position  : out Cursor;
-       Count     : Count_Type := 1)
-    is
-       Index : Index_Type'Base;
- 
-    begin
-       if Checks and then Before.Container /= null
-         and then Before.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with "Before cursor denotes wrong container";
-       end if;
- 
-       if Count = 0 then
-          if Before.Container = null or else Before.Index > Container.Last then
-             Position := No_Element;
-          else
-             Position := (Container'Unrestricted_Access, Before.Index);
-          end if;
- 
-          return;
-       end if;
- 
-       if Before.Container = null or else Before.Index > Container.Last then
-          if Checks and then Container.Last = Index_Type'Last then
-             raise Constraint_Error with
-               "vector is already at its maximum length";
-          end if;
- 
-          Index := Container.Last + 1;
- 
-       else
-          Index := Before.Index;
-       end if;
- 
-       Insert (Container, Index, New_Item, Count);
- 
-       Position := (Container'Unrestricted_Access, Index);
-    end Insert;
- 
-    procedure Insert
-      (Container : in out Vector;
-       Before    : Extended_Index;
-       Count     : Count_Type := 1)
-    is
-       New_Item : Element_Type;  -- Default-initialized value
-       pragma Warnings (Off, New_Item);
- 
-    begin
-       Insert (Container, Before, New_Item, Count);
-    end Insert;
- 
-    procedure Insert
-      (Container : in out Vector;
-       Before    : Cursor;
-       Position  : out Cursor;
-       Count     : Count_Type := 1)
-    is
-       New_Item : Element_Type;  -- Default-initialized value
-       pragma Warnings (Off, New_Item);
-    begin
-       Insert (Container, Before, New_Item, Position, Count);
-    end Insert;
- 
-    ------------------
-    -- Insert_Space --
-    ------------------
- 
-    procedure Insert_Space
-      (Container : in out Vector;
-       Before    : Extended_Index;
-       Count     : Count_Type := 1)
-    is
-       Old_Length : constant Count_Type := Container.Length;
- 
-       Max_Length : Count_Type'Base;  -- determined from range of Index_Type
-       New_Length : Count_Type'Base;  -- sum of current length and Count
-       New_Last   : Index_Type'Base;  -- last index of vector after insertion
- 
-       Index : Index_Type'Base;  -- scratch for intermediate values
-       J     : Count_Type'Base;  -- scratch
- 
-       New_Capacity : Count_Type'Base;  -- length of new, expanded array
-       Dst_Last     : Index_Type'Base;  -- last index of new, expanded array
-       Dst          : Elements_Access;  -- new, expanded internal array
- 
-    begin
-       if Checks then
-          --  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 + 1 then
-             raise Constraint_Error with
-               "Before index is out of range (too large)";
-          end if;
-       end if;
- 
-       --  We treat inserting 0 items into the container as a no-op, even when
-       --  the container is busy, 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: we cannot simply add these values, because of the possibility
-       --  of overflow.
- 
-       if Checks and then 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_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_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 Checks and then New_Length > Max_Length then
-          raise Constraint_Error with "Count is out of range";
-       end if;
- 
-       --  New_Last is the last index value of the items in the container after
-       --  insertion.  Use the wider of Index_Type'Base and Count_Type'Base to
-       --  compute its value from the New_Length.
- 
-       if Index_Type'Base'Last >= Count_Type_Last then
-          New_Last := No_Index + Index_Type'Base (New_Length);
-       else
-          New_Last := Index_Type'Base (Count_Type'Base (No_Index) + New_Length);
-       end if;
- 
-       if Container.Elements = null then
-          pragma Assert (Container.Last = No_Index);
- 
-          --  This is the simplest case, with which we must always begin: we're
-          --  inserting items into an empty vector that hasn't allocated an
-          --  internal array yet. Note that we don't need to check the busy bit
-          --  here, because an empty container cannot be busy.
- 
-          --  In order to preserve container invariants, we allocate the new
-          --  internal array first, before setting the Last index value, in case
-          --  the allocation fails (which can happen either because there is no
-          --  storage available, or because default-valued element
-          --  initialization fails).
- 
-          Container.Elements := new Elements_Type (New_Last);
- 
-          --  The allocation of the new, internal array succeeded, so it is now
-          --  safe to update the Last index, restoring container invariants.
- 
-          Container.Last := New_Last;
- 
-          return;
-       end if;
- 
-       --  The tampering bits exist to prevent an item from being harmfully
-       --  manipulated while it is being visited. Query, Update, and Iterate
-       --  increment the busy count on entry, and decrement the count on
-       --  exit. Insert checks the count to determine whether it is being called
-       --  while the associated callback procedure is executing.
- 
-       TC_Check (Container.TC);
- 
-       --  An internal array has already been allocated, so we must determine
-       --  whether there is enough unused storage for the new items.
- 
-       if New_Last <= Container.Elements.Last then
- 
-          --  In this case, we're inserting space into a vector that has already
-          --  allocated an internal array, and the existing array has enough
-          --  unused storage for the new items.
- 
-          declare
-             EA : Elements_Array renames Container.Elements.EA;
- 
-          begin
-             if Before <= Container.Last then
- 
-                --  The space is being inserted before some existing elements,
-                --  so we must slide the existing elements up to their new
-                --  home. We use the wider of Index_Type'Base and
-                --  Count_Type'Base as the type for intermediate index values.
- 
-                if Index_Type'Base'Last >= Count_Type_Last then
-                   Index := Before + Index_Type'Base (Count);
- 
-                else
-                   Index := Index_Type'Base (Count_Type'Base (Before) + Count);
-                end if;
- 
-                EA (Index .. New_Last) := EA (Before .. Container.Last);
-             end if;
-          end;
- 
-          Container.Last := New_Last;
-          return;
-       end if;
- 
-       --  In this case, we're inserting space into a vector that has already
-       --  allocated an internal array, but the existing array does not have
-       --  enough storage, so we must allocate a new, longer array. In order to
-       --  guarantee that the amortized insertion cost is O(1), we always
-       --  allocate an array whose length is some power-of-two factor of the
-       --  current array length. (The new array cannot have a length less than
-       --  the New_Length of the container, but its last index value cannot be
-       --  greater than Index_Type'Last.)
- 
-       New_Capacity := Count_Type'Max (1, Container.Elements.EA'Length);
-       while New_Capacity < New_Length loop
-          if New_Capacity > Count_Type'Last / 2 then
-             New_Capacity := Count_Type'Last;
-             exit;
-          end if;
- 
-          New_Capacity := 2 * New_Capacity;
-       end loop;
- 
-       if New_Capacity > Max_Length then
- 
-          --  We have reached the limit of capacity, so no further expansion
-          --  will occur. (This is not a problem, as there is never a need to
-          --  have more capacity than the maximum container length.)
- 
-          New_Capacity := Max_Length;
-       end if;
- 
-       --  We have computed the length of the new internal array (and this is
-       --  what "vector capacity" means), so use that to compute its last index.
- 
-       if Index_Type'Base'Last >= Count_Type_Last then
-          Dst_Last := No_Index + Index_Type'Base (New_Capacity);
-       else
-          Dst_Last :=
-            Index_Type'Base (Count_Type'Base (No_Index) + New_Capacity);
-       end if;
- 
-       --  Now we allocate the new, longer internal array. If the allocation
-       --  fails, we have not changed any container state, so no side-effect
-       --  will occur as a result of propagating the exception.
- 
-       Dst := new Elements_Type (Dst_Last);
- 
-       --  We have our new internal array. All that needs to be done now is to
-       --  copy the existing items (if any) from the old array (the "source"
-       --  array, object SA below) to the new array (the "destination" array,
-       --  object DA below), and then deallocate the old array.
- 
-       declare
-          SA : Elements_Array renames Container.Elements.EA;  -- source
-          DA : Elements_Array renames Dst.EA;                 -- destination
- 
-       begin
-          DA (Index_Type'First .. Before - 1) :=
-            SA (Index_Type'First .. Before - 1);
- 
-          if Before <= Container.Last then
- 
-             --  The space is being inserted before some existing elements, so
-             --  we must slide the existing elements up to their new home.
- 
-             if Index_Type'Base'Last >= Count_Type_Last then
-                Index := Before + Index_Type'Base (Count);
-             else
-                Index := Index_Type'Base (Count_Type'Base (Before) + Count);
-             end if;
- 
-             DA (Index .. New_Last) := SA (Before .. Container.Last);
-          end if;
- 
-       exception
-          when others =>
-             Free (Dst);
-             raise;
-       end;
- 
-       --  We have successfully copied the items onto the new array, so the
-       --  final thing to do is restore invariants, and deallocate the old
-       --  array.
- 
-       declare
-          X : Elements_Access := Container.Elements;
- 
-       begin
-          --  We first isolate the old internal array, removing it from the
-          --  container and replacing it with the new internal array, before we
-          --  deallocate the old array (which can fail if finalization of
-          --  elements propagates an exception).
- 
-          Container.Elements := Dst;
-          Container.Last := New_Last;
- 
-          --  The container invariants have been restored, so it is now safe to
-          --  attempt to deallocate the old array.
- 
-          Free (X);
-       end;
-    end Insert_Space;
- 
-    procedure Insert_Space
-      (Container : in out Vector;
-       Before    : Cursor;
-       Position  : out Cursor;
-       Count     : Count_Type := 1)
-    is
-       Index : Index_Type'Base;
- 
-    begin
-       if Checks and then Before.Container /= null
-         and then Before.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with "Before cursor denotes wrong container";
-       end if;
- 
-       if Count = 0 then
-          if Before.Container = null or else Before.Index > Container.Last then
-             Position := No_Element;
-          else
-             Position := (Container'Unrestricted_Access, Before.Index);
-          end if;
- 
-          return;
-       end if;
- 
-       if Before.Container = null or else Before.Index > Container.Last then
-          if Checks and then Container.Last = Index_Type'Last then
-             raise Constraint_Error with
-               "vector is already at its maximum length";
-          else
-             Index := Container.Last + 1;
-          end if;
- 
-       else
-          Index := Before.Index;
-       end if;
- 
-       Insert_Space (Container, Index, Count);
- 
-       Position := (Container'Unrestricted_Access, Index);
-    end Insert_Space;
- 
-    --------------
-    -- Is_Empty --
-    --------------
- 
-    function Is_Empty (Container : Vector) return Boolean is
-    begin
-       return Container.Last < Index_Type'First;
-    end Is_Empty;
- 
-    -------------
-    -- Iterate --
-    -------------
- 
-    procedure Iterate
-      (Container : Vector;
-       Process   : not null access procedure (Position : Cursor))
-    is
-       Busy : With_Busy (Container.TC'Unrestricted_Access);
-    begin
-       for Indx in Index_Type'First .. Container.Last loop
-          Process (Cursor'(Container'Unrestricted_Access, Indx));
-       end loop;
-    end Iterate;
- 
-    function Iterate
-      (Container : Vector)
-       return Vector_Iterator_Interfaces.Reversible_Iterator'Class
-    is
-       V : constant Vector_Access := Container'Unrestricted_Access;
-    begin
-       --  The value of its Index component influences the behavior of the First
-       --  and Last selector functions of the iterator object. When the Index
-       --  component is No_Index (as is the case here), this means the iterator
-       --  object was constructed without a start expression. This is a complete
-       --  iterator, meaning that the iteration starts from the (logical)
-       --  beginning of the sequence of items.
- 
-       --  Note: For a forward iterator, Container.First is the beginning, and
-       --  for a reverse iterator, Container.Last is the beginning.
- 
-       return It : constant Iterator :=
-                     (Limited_Controlled with
-                        Container => V,
-                        Index     => No_Index)
-       do
-          Busy (Container.TC'Unrestricted_Access.all);
-       end return;
-    end Iterate;
- 
-    function Iterate
-      (Container : Vector;
-       Start     : Cursor)
-       return Vector_Iterator_Interfaces.Reversible_Iterator'Class
-    is
-       V : constant Vector_Access := Container'Unrestricted_Access;
-    begin
-       --  It was formerly the case that when Start = No_Element, the partial
-       --  iterator was defined to behave the same as for a complete iterator,
-       --  and iterate over the entire sequence of items. However, those
-       --  semantics were unintuitive and arguably error-prone (it is too easy
-       --  to accidentally create an endless loop), and so they were changed,
-       --  per the ARG meeting in Denver on 2011/11. However, there was no
-       --  consensus about what positive meaning this corner case should have,
-       --  and so it was decided to simply raise an exception. This does imply,
-       --  however, that it is not possible to use a partial iterator to specify
-       --  an empty sequence of items.
- 
-       if Checks then
-          if Start.Container = null then
-             raise Constraint_Error with
-               "Start position for iterator equals No_Element";
-          end if;
- 
-          if Start.Container /= V then
-             raise Program_Error with
-               "Start cursor of Iterate designates wrong vector";
-          end if;
- 
-          if Start.Index > V.Last then
-             raise Constraint_Error with
-               "Start position for iterator equals No_Element";
-          end if;
-       end if;
- 
-       --  The value of its Index component influences the behavior of the First
-       --  and Last selector functions of the iterator object. When the Index
-       --  component is not No_Index (as is the case here), it means that this
-       --  is a partial iteration, over a subset of the complete sequence of
-       --  items. The iterator object was constructed with a start expression,
-       --  indicating the position from which the iteration begins. Note that
-       --  the start position has the same value irrespective of whether this
-       --  is a forward or reverse iteration.
- 
-       return It : constant Iterator :=
-                     (Limited_Controlled with
-                        Container => V,
-                        Index     => Start.Index)
-       do
-          Busy (Container.TC'Unrestricted_Access.all);
-       end return;
-    end Iterate;
- 
-    ----------
-    -- Last --
-    ----------
- 
-    function Last (Container : Vector) return Cursor is
-    begin
-       if Is_Empty (Container) then
-          return No_Element;
-       else
-          return (Container'Unrestricted_Access, Container.Last);
-       end if;
-    end Last;
- 
-    function Last (Object : Iterator) return Cursor is
-    begin
-       --  The value of the iterator object's Index component influences the
-       --  behavior of the Last (and First) selector function.
- 
-       --  When the Index component is No_Index, this means the iterator
-       --  object was constructed without a start expression, in which case the
-       --  (reverse) iteration starts from the (logical) beginning of the entire
-       --  sequence (corresponding to Container.Last, for a reverse iterator).
- 
-       --  Otherwise, this is iteration over a partial sequence of items.
-       --  When the Index component is not No_Index, the iterator object was
-       --  constructed with a start expression, that specifies the position
-       --  from which the (reverse) partial iteration begins.
- 
-       if Object.Index = No_Index then
-          return Last (Object.Container.all);
-       else
-          return Cursor'(Object.Container, Object.Index);
-       end if;
-    end Last;
- 
-    ------------------
-    -- Last_Element --
-    ------------------
- 
-    function Last_Element (Container : Vector) return Element_Type is
-    begin
-       if Checks and then Container.Last = No_Index then
-          raise Constraint_Error with "Container is empty";
-       else
-          return Container.Elements.EA (Container.Last);
-       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 Count_Type is
-       L : constant Index_Type'Base := Container.Last;
-       F : constant Index_Type := Index_Type'First;
- 
-    begin
-       --  The base range of the index type (Index_Type'Base) might not include
-       --  all values for length (Count_Type). Contrariwise, the index type
-       --  might include values outside the range of length.  Hence we use
-       --  whatever type is wider for intermediate values when calculating
-       --  length. Note that no matter what the index type is, the maximum
-       --  length to which a vector is allowed to grow is always the minimum
-       --  of Count_Type'Last and (IT'Last - IT'First + 1).
- 
-       --  For example, an Index_Type with range -127 .. 127 is only guaranteed
-       --  to have a base range of -128 .. 127, but the corresponding vector
-       --  would have lengths in the range 0 .. 255. In this case we would need
-       --  to use Count_Type'Base for intermediate values.
- 
-       --  Another case would be the index range -2**63 + 1 .. -2**63 + 10. The
-       --  vector would have a maximum length of 10, but the index values lie
-       --  outside the range of Count_Type (which is only 32 bits). In this
-       --  case we would need to use Index_Type'Base for intermediate values.
- 
-       if Count_Type'Base'Last >= Index_Type'Pos (Index_Type'Base'Last) then
-          return Count_Type'Base (L) - Count_Type'Base (F) + 1;
-       else
-          return Count_Type (L - F + 1);
-       end if;
-    end Length;
- 
-    ----------
-    -- Move --
-    ----------
- 
-    procedure Move
-      (Target : in out Vector;
-       Source : in out Vector)
-    is
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       TC_Check (Target.TC);
-       TC_Check (Source.TC);
- 
-       declare
-          Target_Elements : constant Elements_Access := Target.Elements;
-       begin
-          Target.Elements := Source.Elements;
-          Source.Elements := Target_Elements;
-       end;
- 
-       Target.Last := Source.Last;
-       Source.Last := No_Index;
-    end Move;
- 
-    ----------
-    -- Next --
-    ----------
- 
-    function Next (Position : Cursor) return Cursor is
-    begin
-       if Position.Container = null then
-          return No_Element;
-       elsif Position.Index < Position.Container.Last then
-          return (Position.Container, Position.Index + 1);
-       else
-          return No_Element;
-       end if;
-    end Next;
- 
-    function Next (Object : Iterator; Position : Cursor) return Cursor is
-    begin
-       if Position.Container = null then
-          return No_Element;
-       elsif Checks and then Position.Container /= Object.Container then
-          raise Program_Error with
-            "Position cursor of Next designates wrong vector";
-       else
-          return Next (Position);
-       end if;
-    end Next;
- 
-    procedure Next (Position : in out Cursor) is
-    begin
-       if Position.Container = null then
-          return;
-       elsif Position.Index < Position.Container.Last then
-          Position.Index := Position.Index + 1;
-       else
-          Position := No_Element;
-       end if;
-    end Next;
- 
-    -------------
-    -- 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;
-       Count     : Count_Type := 1)
-    is
-    begin
-       Insert (Container, Index_Type'First, New_Item, Count);
-    end Prepend;
- 
-    --------------
-    -- Previous --
-    --------------
- 
-    function Previous (Position : Cursor) return Cursor is
-    begin
-       if Position.Container = null then
-          return No_Element;
-       elsif Position.Index > Index_Type'First then
-          return (Position.Container, Position.Index - 1);
-       else
-          return No_Element;
-       end if;
-    end Previous;
- 
-    function Previous (Object : Iterator; Position : Cursor) return Cursor is
-    begin
-       if Position.Container = null then
-          return No_Element;
-       elsif Checks and then Position.Container /= Object.Container then
-          raise Program_Error with
-            "Position cursor of Previous designates wrong vector";
-       else
-          return Previous (Position);
-       end if;
-    end Previous;
- 
-    procedure Previous (Position : in out Cursor) is
-    begin
-       if Position.Container = null then
-          return;
-       elsif Position.Index > Index_Type'First then
-          Position.Index := Position.Index - 1;
-       else
-          Position := No_Element;
-       end if;
-    end Previous;
- 
-    ----------------------
-    -- Pseudo_Reference --
-    ----------------------
- 
-    function Pseudo_Reference
-      (Container : aliased Vector'Class) return Reference_Control_Type
-    is
-       TC : constant Tamper_Counts_Access := Container.TC'Unrestricted_Access;
-    begin
-       return R : constant Reference_Control_Type := (Controlled with TC) do
-          Lock (TC.all);
-       end return;
-    end Pseudo_Reference;
- 
-    -------------------
-    -- Query_Element --
-    -------------------
- 
-    procedure Query_Element
-      (Container : Vector;
-       Index     : Index_Type;
-       Process   : not null access procedure (Element : Element_Type))
-    is
-       Lock : With_Lock (Container.TC'Unrestricted_Access);
-       V : Vector renames Container'Unrestricted_Access.all;
- 
-    begin
-       if Checks and then Index > Container.Last then
-          raise Constraint_Error with "Index is out of range";
-       end if;
- 
-       Process (V.Elements.EA (Index));
-    end Query_Element;
- 
-    procedure Query_Element
-      (Position : Cursor;
-       Process  : not null access procedure (Element : Element_Type))
-    is
-    begin
-       if Checks and then Position.Container = null then
-          raise Constraint_Error with "Position cursor has no element";
-       else
-          Query_Element (Position.Container.all, Position.Index, Process);
-       end if;
-    end Query_Element;
- 
-    ----------
-    -- Read --
-    ----------
- 
-    procedure Read
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : out Vector)
-    is
-       Length : Count_Type'Base;
-       Last   : Index_Type'Base := No_Index;
- 
-    begin
-       Clear (Container);
- 
-       Count_Type'Base'Read (Stream, Length);
- 
-       if Length > Capacity (Container) then
-          Reserve_Capacity (Container, Capacity => Length);
-       end if;
- 
-       for J in Count_Type range 1 .. Length loop
-          Last := Last + 1;
-          Element_Type'Read (Stream, Container.Elements.EA (Last));
-          Container.Last := Last;
-       end loop;
-    end Read;
- 
-    procedure Read
-      (Stream   : not null access Root_Stream_Type'Class;
-       Position : out Cursor)
-    is
-    begin
-       raise Program_Error with "attempt to stream vector cursor";
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Constant_Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Read;
- 
-    ---------------
-    -- Reference --
-    ---------------
- 
-    function Reference
-      (Container : aliased in out Vector;
-       Position  : Cursor) return Reference_Type
-    is
-    begin
-       if Checks then
-          if Position.Container = null then
-             raise Constraint_Error with "Position cursor has no element";
-          end if;
- 
-          if Position.Container /= Container'Unrestricted_Access then
-             raise Program_Error with "Position cursor denotes wrong container";
-          end if;
- 
-          if Position.Index > Position.Container.Last then
-             raise Constraint_Error with "Position cursor is out of range";
-          end if;
-       end if;
- 
-       declare
-          TC : constant Tamper_Counts_Access :=
-            Container.TC'Unrestricted_Access;
-       begin
-          return R : constant Reference_Type :=
-            (Element => Container.Elements.EA (Position.Index)'Access,
-             Control => (Controlled with TC))
-          do
-             Lock (TC.all);
-          end return;
-       end;
-    end Reference;
- 
-    function Reference
-      (Container : aliased in out Vector;
-       Index     : Index_Type) return Reference_Type
-    is
-    begin
-       if Checks and then Index > Container.Last then
-          raise Constraint_Error with "Index is out of range";
-       end if;
- 
-       declare
-          TC : constant Tamper_Counts_Access :=
-            Container.TC'Unrestricted_Access;
-       begin
-          return R : constant Reference_Type :=
-            (Element => Container.Elements.EA (Index)'Access,
-             Control => (Controlled with TC))
-          do
-             Lock (TC.all);
-          end return;
-       end;
-    end Reference;
- 
-    ---------------------
-    -- Replace_Element --
-    ---------------------
- 
-    procedure Replace_Element
-      (Container : in out Vector;
-       Index     : Index_Type;
-       New_Item  : Element_Type)
-    is
-    begin
-       if Checks and then Index > Container.Last then
-          raise Constraint_Error with "Index is out of range";
-       end if;
- 
-       TE_Check (Container.TC);
-       Container.Elements.EA (Index) := New_Item;
-    end Replace_Element;
- 
-    procedure Replace_Element
-      (Container : in out Vector;
-       Position  : Cursor;
-       New_Item  : Element_Type)
-    is
-    begin
-       if Checks then
-          if Position.Container = null then
-             raise Constraint_Error with "Position cursor has no element";
- 
-          elsif Position.Container /= Container'Unrestricted_Access then
-             raise Program_Error with "Position cursor denotes wrong container";
- 
-          elsif Position.Index > Container.Last then
-             raise Constraint_Error with "Position cursor is out of range";
-          end if;
-       end if;
- 
-       TE_Check (Container.TC);
-       Container.Elements.EA (Position.Index) := New_Item;
-    end Replace_Element;
- 
-    ----------------------
-    -- Reserve_Capacity --
-    ----------------------
- 
-    procedure Reserve_Capacity
-      (Container : in out Vector;
-       Capacity  : Count_Type)
-    is
-       N : constant Count_Type := Length (Container);
- 
-       Index : Count_Type'Base;
-       Last  : Index_Type'Base;
- 
-    begin
-       --  Reserve_Capacity can be used to either expand the storage available
-       --  for elements (this would be its typical use, in anticipation of
-       --  future insertion), or to trim back storage. In the latter case,
-       --  storage can only be trimmed back to the limit of the container
-       --  length. Note that Reserve_Capacity neither deletes (active) elements
-       --  nor inserts elements; it only affects container capacity, never
-       --  container length.
- 
-       if Capacity = 0 then
- 
-          --  This is a request to trim back storage, to the minimum amount
-          --  possible given the current state of the container.
- 
-          if N = 0 then
- 
-             --  The container is empty, so in this unique case we can
-             --  deallocate the entire internal array. Note that an empty
-             --  container can never be busy, so there's no need to check the
-             --  tampering bits.
- 
-             declare
-                X : Elements_Access := Container.Elements;
- 
-             begin
-                --  First we remove the internal array from the container, to
-                --  handle the case when the deallocation raises an exception.
- 
-                Container.Elements := null;
- 
-                --  Container invariants have been restored, so it is now safe
-                --  to attempt to deallocate the internal array.
- 
-                Free (X);
-             end;
- 
-          elsif N < Container.Elements.EA'Length then
- 
-             --  The container is not empty, and the current length is less than
-             --  the current capacity, so there's storage available to trim. In
-             --  this case, we allocate a new internal array having a length
-             --  that exactly matches the number of items in the
-             --  container. (Reserve_Capacity does not delete active elements,
-             --  so this is the best we can do with respect to minimizing
-             --  storage).
- 
-             TC_Check (Container.TC);
- 
-             declare
-                subtype Src_Index_Subtype is Index_Type'Base range
-                  Index_Type'First .. Container.Last;
- 
-                Src : Elements_Array renames
-                        Container.Elements.EA (Src_Index_Subtype);
- 
-                X : Elements_Access := Container.Elements;
- 
-             begin
-                --  Although we have isolated the old internal array that we're
-                --  going to deallocate, we don't deallocate it until we have
-                --  successfully allocated a new one. If there is an exception
-                --  during allocation (either because there is not enough
-                --  storage, or because initialization of the elements fails),
-                --  we let it propagate without causing any side-effect.
- 
-                Container.Elements := new Elements_Type'(Container.Last, Src);
- 
-                --  We have successfully allocated a new internal array (with a
-                --  smaller length than the old one, and containing a copy of
-                --  just the active elements in the container), so it is now
-                --  safe to attempt to deallocate the old array. The old array
-                --  has been isolated, and container invariants have been
-                --  restored, so if the deallocation fails (because finalization
-                --  of the elements fails), we simply let it propagate.
- 
-                Free (X);
-             end;
-          end if;
- 
-          return;
-       end if;
- 
-       --  Reserve_Capacity can be used to expand the storage available for
-       --  elements, but we do not let the capacity grow beyond the number of
-       --  values in Index_Type'Range. (Were it otherwise, there would be no way
-       --  to refer to the elements with an index value greater than
-       --  Index_Type'Last, so that storage would be wasted.) Here we compute
-       --  the Last index value of the new internal array, in a way that avoids
-       --  any possibility of overflow.
- 
-       if Index_Type'Base'Last >= Count_Type_Last then
- 
-          --  We perform a two-part test. First we determine whether the
-          --  computed Last value lies in the base range of the type, and then
-          --  determine whether it lies in the range of the index (sub)type.
- 
-          --  Last must satisfy this relation:
-          --    First + Length - 1 <= Last
-          --  We regroup terms:
-          --    First - 1 <= Last - Length
-          --  Which can rewrite as:
-          --    No_Index <= Last - Length
- 
-          if Checks and then
-            Index_Type'Base'Last - Index_Type'Base (Capacity) < No_Index
-          then
-             raise Constraint_Error with "Capacity is out of range";
-          end if;
- 
-          --  We now know that the computed value of Last is within the base
-          --  range of the type, so it is safe to compute its value:
- 
-          Last := No_Index + Index_Type'Base (Capacity);
- 
-          --  Finally we test whether the value is within the range of the
-          --  generic actual index subtype:
- 
-          if Checks and then Last > Index_Type'Last then
-             raise Constraint_Error with "Capacity is out of range";
-          end if;
- 
-       elsif Index_Type'First <= 0 then
- 
-          --  Here we can compute Last directly, in the normal way. We know that
-          --  No_Index is less than 0, so there is no danger of overflow when
-          --  adding the (positive) value of Capacity.
- 
-          Index := Count_Type'Base (No_Index) + Capacity;  -- Last
- 
-          if Checks and then Index > Count_Type'Base (Index_Type'Last) then
-             raise Constraint_Error with "Capacity is out of range";
-          end if;
- 
-          --  We know that the computed value (having type Count_Type) of Last
-          --  is within the range of the generic actual index subtype, so it is
-          --  safe to convert to Index_Type:
- 
-          Last := Index_Type'Base (Index);
- 
-       else
-          --  Here Index_Type'First (and Index_Type'Last) is positive, so we
-          --  must test the length indirectly (by working backwards from the
-          --  largest possible value of Last), in order to prevent overflow.
- 
-          Index := Count_Type'Base (Index_Type'Last) - Capacity;  -- No_Index
- 
-          if Checks and then Index < Count_Type'Base (No_Index) then
-             raise Constraint_Error with "Capacity is out of range";
-          end if;
- 
-          --  We have determined that the value of Capacity would not create a
-          --  Last index value outside of the range of Index_Type, so we can now
-          --  safely compute its value.
- 
-          Last := Index_Type'Base (Count_Type'Base (No_Index) + Capacity);
-       end if;
- 
-       --  The requested capacity is non-zero, but we don't know yet whether
-       --  this is a request for expansion or contraction of storage.
- 
-       if Container.Elements = null then
- 
-          --  The container is empty (it doesn't even have an internal array),
-          --  so this represents a request to allocate (expand) storage having
-          --  the given capacity.
- 
-          Container.Elements := new Elements_Type (Last);
-          return;
-       end if;
- 
-       if Capacity <= N then
- 
-          --  This is a request to trim back storage, but only to the limit of
-          --  what's already in the container. (Reserve_Capacity never deletes
-          --  active elements, it only reclaims excess storage.)
- 
-          if N < Container.Elements.EA'Length then
- 
-             --  The container is not empty (because the requested capacity is
-             --  positive, and less than or equal to the container length), and
-             --  the current length is less than the current capacity, so
-             --  there's storage available to trim. In this case, we allocate a
-             --  new internal array having a length that exactly matches the
-             --  number of items in the container.
- 
-             TC_Check (Container.TC);
- 
-             declare
-                subtype Src_Index_Subtype is Index_Type'Base range
-                  Index_Type'First .. Container.Last;
- 
-                Src : Elements_Array renames
-                        Container.Elements.EA (Src_Index_Subtype);
- 
-                X : Elements_Access := Container.Elements;
- 
-             begin
-                --  Although we have isolated the old internal array that we're
-                --  going to deallocate, we don't deallocate it until we have
-                --  successfully allocated a new one. If there is an exception
-                --  during allocation (either because there is not enough
-                --  storage, or because initialization of the elements fails),
-                --  we let it propagate without causing any side-effect.
- 
-                Container.Elements := new Elements_Type'(Container.Last, Src);
- 
-                --  We have successfully allocated a new internal array (with a
-                --  smaller length than the old one, and containing a copy of
-                --  just the active elements in the container), so it is now
-                --  safe to attempt to deallocate the old array. The old array
-                --  has been isolated, and container invariants have been
-                --  restored, so if the deallocation fails (because finalization
-                --  of the elements fails), we simply let it propagate.
- 
-                Free (X);
-             end;
-          end if;
- 
-          return;
-       end if;
- 
-       --  The requested capacity is larger than the container length (the
-       --  number of active elements). Whether this represents a request for
-       --  expansion or contraction of the current capacity depends on what the
-       --  current capacity is.
- 
-       if Capacity = Container.Elements.EA'Length then
- 
-          --  The requested capacity matches the existing capacity, so there's
-          --  nothing to do here. We treat this case as a no-op, and simply
-          --  return without checking the busy bit.
- 
-          return;
-       end if;
- 
-       --  There is a change in the capacity of a non-empty container, so a new
-       --  internal array will be allocated. (The length of the new internal
-       --  array could be less or greater than the old internal array. We know
-       --  only that the length of the new internal array is greater than the
-       --  number of active elements in the container.) We must check whether
-       --  the container is busy before doing anything else.
- 
-       TC_Check (Container.TC);
- 
-       --  We now allocate a new internal array, having a length different from
-       --  its current value.
- 
-       declare
-          E : Elements_Access := new Elements_Type (Last);
- 
-       begin
-          --  We have successfully allocated the new internal array. We first
-          --  attempt to copy the existing elements from the old internal array
-          --  ("src" elements) onto the new internal array ("tgt" elements).
- 
-          declare
-             subtype Index_Subtype is Index_Type'Base range
-               Index_Type'First .. Container.Last;
- 
-             Src : Elements_Array renames
-                     Container.Elements.EA (Index_Subtype);
- 
-             Tgt : Elements_Array renames E.EA (Index_Subtype);
- 
-          begin
-             Tgt := Src;
- 
-          exception
-             when others =>
-                Free (E);
-                raise;
-          end;
- 
-          --  We have successfully copied the existing elements onto the new
-          --  internal array, so now we can attempt to deallocate the old one.
- 
-          declare
-             X : Elements_Access := Container.Elements;
- 
-          begin
-             --  First we isolate the old internal array, and replace it in the
-             --  container with the new internal array.
- 
-             Container.Elements := E;
- 
-             --  Container invariants have been restored, so it is now safe to
-             --  attempt to deallocate the old internal array.
- 
-             Free (X);
-          end;
-       end;
-    end Reserve_Capacity;
- 
-    ----------------------
-    -- Reverse_Elements --
-    ----------------------
- 
-    procedure Reverse_Elements (Container : in out Vector) is
-    begin
-       if Container.Length <= 1 then
-          return;
-       end if;
- 
-       --  The exception behavior for the vector container must match that for
-       --  the list container, so we check for cursor tampering here (which will
-       --  catch more things) instead of for element tampering (which will catch
-       --  fewer things). It's true that the elements of this vector container
-       --  could be safely moved around while (say) an iteration is taking place
-       --  (iteration only increments the busy counter), and so technically
-       --  all we would need here is a test for element tampering (indicated
-       --  by the lock counter), that's simply an artifact of our array-based
-       --  implementation. Logically Reverse_Elements requires a check for
-       --  cursor tampering.
- 
-       TC_Check (Container.TC);
- 
-       declare
-          K : Index_Type;
-          J : Index_Type;
-          E : Elements_Type renames Container.Elements.all;
- 
-       begin
-          K := Index_Type'First;
-          J := Container.Last;
-          while K < J loop
-             declare
-                EK : constant Element_Type := E.EA (K);
-             begin
-                E.EA (K) := E.EA (J);
-                E.EA (J) := EK;
-             end;
- 
-             K := K + 1;
-             J := J - 1;
-          end loop;
-       end;
-    end Reverse_Elements;
- 
-    ------------------
-    -- Reverse_Find --
-    ------------------
- 
-    function Reverse_Find
-      (Container : Vector;
-       Item      : Element_Type;
-       Position  : Cursor := No_Element) return Cursor
-    is
-       Last : Index_Type'Base;
- 
-    begin
-       if Checks and then Position.Container /= null
-         and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with "Position cursor denotes wrong container";
-       end if;
- 
-       Last :=
-         (if Position.Container = null or else Position.Index > Container.Last
-          then Container.Last
-          else Position.Index);
- 
-       --  Per AI05-0022, the container implementation is required to detect
-       --  element tampering by a generic actual subprogram.
- 
-       declare
-          Lock : With_Lock (Container.TC'Unrestricted_Access);
-       begin
-          for Indx in reverse Index_Type'First .. Last loop
-             if Container.Elements.EA (Indx) = Item then
-                return Cursor'(Container'Unrestricted_Access, Indx);
-             end if;
-          end loop;
- 
-          return No_Element;
-       end;
-    end Reverse_Find;
- 
-    ------------------------
-    -- Reverse_Find_Index --
-    ------------------------
- 
-    function Reverse_Find_Index
-      (Container : Vector;
-       Item      : Element_Type;
-       Index     : Index_Type := Index_Type'Last) return Extended_Index
-    is
-       --  Per AI05-0022, the container implementation is required to detect
-       --  element tampering by a generic actual subprogram.
- 
-       Lock : With_Lock (Container.TC'Unrestricted_Access);
- 
-       Last : constant Index_Type'Base :=
-         Index_Type'Min (Container.Last, Index);
- 
-    begin
-       for Indx in reverse Index_Type'First .. Last loop
-          if Container.Elements.EA (Indx) = Item then
-             return Indx;
-          end if;
-       end loop;
- 
-       return No_Index;
-    end Reverse_Find_Index;
- 
-    ---------------------
-    -- Reverse_Iterate --
-    ---------------------
- 
-    procedure Reverse_Iterate
-      (Container : Vector;
-       Process   : not null access procedure (Position : Cursor))
-    is
-       Busy : With_Busy (Container.TC'Unrestricted_Access);
-    begin
-       for Indx in reverse Index_Type'First .. Container.Last loop
-          Process (Cursor'(Container'Unrestricted_Access, Indx));
-       end loop;
-    end Reverse_Iterate;
- 
-    ----------------
-    -- Set_Length --
-    ----------------
- 
-    procedure Set_Length (Container : in out Vector; Length : Count_Type) is
-       Count : constant Count_Type'Base := Container.Length - Length;
- 
-    begin
-       --  Set_Length allows the user to set the length explicitly, instead
-       --  of implicitly as a side-effect of deletion or insertion. If the
-       --  requested length is less than the current length, this is equivalent
-       --  to deleting items from the back end of the vector. If the requested
-       --  length is greater than the current length, then this is equivalent
-       --  to inserting "space" (nonce items) at the end.
- 
-       if Count >= 0 then
-          Container.Delete_Last (Count);
- 
-       elsif Checks and then Container.Last >= Index_Type'Last then
-          raise Constraint_Error with "vector is already at its maximum length";
- 
-       else
-          Container.Insert_Space (Container.Last + 1, -Count);
-       end if;
-    end Set_Length;
- 
-    ----------
-    -- Swap --
-    ----------
- 
-    procedure Swap (Container : in out Vector; I, J : Index_Type) is
-    begin
-       if Checks then
-          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;
-       end if;
- 
-       if I = J then
-          return;
-       end if;
- 
-       TE_Check (Container.TC);
- 
-       declare
-          EI_Copy : constant Element_Type := Container.Elements.EA (I);
-       begin
-          Container.Elements.EA (I) := Container.Elements.EA (J);
-          Container.Elements.EA (J) := EI_Copy;
-       end;
-    end Swap;
- 
-    procedure Swap (Container : in out Vector; I, J : Cursor) is
-    begin
-       if Checks then
-          if I.Container = null then
-             raise Constraint_Error with "I cursor has no element";
- 
-          elsif J.Container = null then
-             raise Constraint_Error with "J cursor has no element";
- 
-          elsif I.Container /= Container'Unrestricted_Access then
-             raise Program_Error with "I cursor denotes wrong container";
- 
-          elsif J.Container /= Container'Unrestricted_Access then
-             raise Program_Error with "J cursor denotes wrong container";
-          end if;
-       end if;
- 
-       Swap (Container, I.Index, J.Index);
-    end Swap;
- 
-    ---------------
-    -- To_Cursor --
-    ---------------
- 
-    function To_Cursor
-      (Container : Vector;
-       Index     : Extended_Index) return Cursor
-    is
-    begin
-       if Index not in Index_Type'First .. Container.Last then
-          return No_Element;
-       else
-          return (Container'Unrestricted_Access, Index);
-       end if;
-    end To_Cursor;
- 
-    --------------
-    -- To_Index --
-    --------------
- 
-    function To_Index (Position : Cursor) return Extended_Index is
-    begin
-       if Position.Container = null then
-          return No_Index;
-       elsif Position.Index <= Position.Container.Last then
-          return Position.Index;
-       else
-          return No_Index;
-       end if;
-    end To_Index;
- 
-    ---------------
-    -- To_Vector --
-    ---------------
- 
-    function To_Vector (Length : Count_Type) return Vector is
-       Index    : Count_Type'Base;
-       Last     : Index_Type'Base;
-       Elements : Elements_Access;
- 
-    begin
-       if Length = 0 then
-          return Empty_Vector;
-       end if;
- 
-       --  We create a vector object with a capacity that matches the specified
-       --  Length, but we do not allow the vector capacity (the length of the
-       --  internal array) to exceed the number of values in Index_Type'Range
-       --  (otherwise, there would be no way to refer to those components via an
-       --  index).  We must therefore check whether the specified Length would
-       --  create a Last index value greater than Index_Type'Last.
- 
-       if Index_Type'Base'Last >= Count_Type_Last then
- 
-          --  We perform a two-part test. First we determine whether the
-          --  computed Last value lies in the base range of the type, and then
-          --  determine whether it lies in the range of the index (sub)type.
- 
-          --  Last must satisfy this relation:
-          --    First + Length - 1 <= Last
-          --  We regroup terms:
-          --    First - 1 <= Last - Length
-          --  Which can rewrite as:
-          --    No_Index <= Last - Length
- 
-          if Checks and then
-            Index_Type'Base'Last - Index_Type'Base (Length) < No_Index
-          then
-             raise Constraint_Error with "Length is out of range";
-          end if;
- 
-          --  We now know that the computed value of Last is within the base
-          --  range of the type, so it is safe to compute its value:
- 
-          Last := No_Index + Index_Type'Base (Length);
- 
-          --  Finally we test whether the value is within the range of the
-          --  generic actual index subtype:
- 
-          if Checks and then Last > Index_Type'Last then
-             raise Constraint_Error with "Length is out of range";
-          end if;
- 
-       elsif Index_Type'First <= 0 then
- 
-          --  Here we can compute Last directly, in the normal way. We know that
-          --  No_Index is less than 0, so there is no danger of overflow when
-          --  adding the (positive) value of Length.
- 
-          Index := Count_Type'Base (No_Index) + Length;  -- Last
- 
-          if Checks and then Index > Count_Type'Base (Index_Type'Last) then
-             raise Constraint_Error with "Length is out of range";
-          end if;
- 
-          --  We know that the computed value (having type Count_Type) of Last
-          --  is within the range of the generic actual index subtype, so it is
-          --  safe to convert to Index_Type:
- 
-          Last := Index_Type'Base (Index);
- 
-       else
-          --  Here Index_Type'First (and Index_Type'Last) is positive, so we
-          --  must test the length indirectly (by working backwards from the
-          --  largest possible value of Last), in order to prevent overflow.
- 
-          Index := Count_Type'Base (Index_Type'Last) - Length;  -- No_Index
- 
-          if Checks and then Index < Count_Type'Base (No_Index) then
-             raise Constraint_Error with "Length is out of range";
-          end if;
- 
-          --  We have determined that the value of Length would not create a
-          --  Last index value outside of the range of Index_Type, so we can now
-          --  safely compute its value.
- 
-          Last := Index_Type'Base (Count_Type'Base (No_Index) + Length);
-       end if;
- 
-       Elements := new Elements_Type (Last);
- 
-       return Vector'(Controlled with Elements, Last, TC => <>);
-    end To_Vector;
- 
-    function To_Vector
-      (New_Item : Element_Type;
-       Length   : Count_Type) return Vector
-    is
-       Index    : Count_Type'Base;
-       Last     : Index_Type'Base;
-       Elements : Elements_Access;
- 
-    begin
-       if Length = 0 then
-          return Empty_Vector;
-       end if;
- 
-       --  We create a vector object with a capacity that matches the specified
-       --  Length, but we do not allow the vector capacity (the length of the
-       --  internal array) to exceed the number of values in Index_Type'Range
-       --  (otherwise, there would be no way to refer to those components via an
-       --  index). We must therefore check whether the specified Length would
-       --  create a Last index value greater than Index_Type'Last.
- 
-       if Index_Type'Base'Last >= Count_Type_Last then
- 
-          --  We perform a two-part test. First we determine whether the
-          --  computed Last value lies in the base range of the type, and then
-          --  determine whether it lies in the range of the index (sub)type.
- 
-          --  Last must satisfy this relation:
-          --    First + Length - 1 <= Last
-          --  We regroup terms:
-          --    First - 1 <= Last - Length
-          --  Which can rewrite as:
-          --    No_Index <= Last - Length
- 
-          if Checks and then
-            Index_Type'Base'Last - Index_Type'Base (Length) < No_Index
-          then
-             raise Constraint_Error with "Length is out of range";
-          end if;
- 
-          --  We now know that the computed value of Last is within the base
-          --  range of the type, so it is safe to compute its value:
- 
-          Last := No_Index + Index_Type'Base (Length);
- 
-          --  Finally we test whether the value is within the range of the
-          --  generic actual index subtype:
- 
-          if Checks and then Last > Index_Type'Last then
-             raise Constraint_Error with "Length is out of range";
-          end if;
- 
-       elsif Index_Type'First <= 0 then
- 
-          --  Here we can compute Last directly, in the normal way. We know that
-          --  No_Index is less than 0, so there is no danger of overflow when
-          --  adding the (positive) value of Length.
- 
-          Index := Count_Type'Base (No_Index) + Length;  -- same value as V.Last
- 
-          if Checks and then Index > Count_Type'Base (Index_Type'Last) then
-             raise Constraint_Error with "Length is out of range";
-          end if;
- 
-          --  We know that the computed value (having type Count_Type) of Last
-          --  is within the range of the generic actual index subtype, so it is
-          --  safe to convert to Index_Type:
- 
-          Last := Index_Type'Base (Index);
- 
-       else
-          --  Here Index_Type'First (and Index_Type'Last) is positive, so we
-          --  must test the length indirectly (by working backwards from the
-          --  largest possible value of Last), in order to prevent overflow.
- 
-          Index := Count_Type'Base (Index_Type'Last) - Length;  -- No_Index
- 
-          if Checks and then Index < Count_Type'Base (No_Index) then
-             raise Constraint_Error with "Length is out of range";
-          end if;
- 
-          --  We have determined that the value of Length would not create a
-          --  Last index value outside of the range of Index_Type, so we can now
-          --  safely compute its value.
- 
-          Last := Index_Type'Base (Count_Type'Base (No_Index) + Length);
-       end if;
- 
-       Elements := new Elements_Type'(Last, EA => (others => New_Item));
- 
-       return (Controlled with Elements, Last, TC => <>);
-    end To_Vector;
- 
-    --------------------
-    -- Update_Element --
-    --------------------
- 
-    procedure Update_Element
-      (Container : in out Vector;
-       Index     : Index_Type;
-       Process   : not null access procedure (Element : in out Element_Type))
-    is
-       Lock : With_Lock (Container.TC'Unchecked_Access);
-    begin
-       if Checks and then Index > Container.Last then
-          raise Constraint_Error with "Index is out of range";
-       end if;
- 
-       Process (Container.Elements.EA (Index));
-    end Update_Element;
- 
-    procedure Update_Element
-      (Container : in out Vector;
-       Position  : Cursor;
-       Process   : not null access procedure (Element : in out Element_Type))
-    is
-    begin
-       if Checks then
-          if Position.Container = null then
-             raise Constraint_Error with "Position cursor has no element";
-          elsif Position.Container /= Container'Unrestricted_Access then
-             raise Program_Error with "Position cursor denotes wrong container";
-          end if;
-       end if;
- 
-       Update_Element (Container, Position.Index, Process);
-    end Update_Element;
- 
-    -----------
-    -- Write --
-    -----------
- 
-    procedure Write
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : Vector)
-    is
-    begin
-       Count_Type'Base'Write (Stream, Length (Container));
- 
-       for J in Index_Type'First .. Container.Last loop
-          Element_Type'Write (Stream, Container.Elements.EA (J));
-       end loop;
-    end Write;
- 
-    procedure Write
-      (Stream   : not null access Root_Stream_Type'Class;
-       Position : Cursor)
-    is
-    begin
-       raise Program_Error with "attempt to stream vector cursor";
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Constant_Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Write;
- 
- end Ada.Containers.Vectors;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-convec.ads gcc-8.1.0/gcc/ada/a-convec.ads
*** gcc-7.3.0/gcc/ada/a-convec.ads	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-convec.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,518 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                A D A . C O N T A I N E R S . V E C T O R S               --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, 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/>.                                          --
- --                                                                          --
- -- This unit was originally developed by Matthew J Heaney.                  --
- ------------------------------------------------------------------------------
- 
- with Ada.Iterator_Interfaces;
- 
- with Ada.Containers.Helpers;
- private with Ada.Finalization;
- private with Ada.Streams;
- 
- generic
-    type Index_Type is range <>;
-    type Element_Type is private;
- 
-    with function "=" (Left, Right : Element_Type) return Boolean is <>;
- 
- package Ada.Containers.Vectors is
-    pragma Annotate (CodePeer, Skip_Analysis);
-    pragma Preelaborate;
-    pragma Remote_Types;
- 
-    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;
- 
-    type Vector is tagged private
-    with
-       Constant_Indexing => Constant_Reference,
-       Variable_Indexing => Reference,
-       Default_Iterator  => Iterate,
-       Iterator_Element  => Element_Type;
-    pragma Preelaborable_Initialization (Vector);
- 
-    type Cursor is private;
-    pragma Preelaborable_Initialization (Cursor);
- 
-    No_Element : constant Cursor;
- 
-    function Has_Element (Position : Cursor) return Boolean;
- 
-    package Vector_Iterator_Interfaces is new
-       Ada.Iterator_Interfaces (Cursor, Has_Element);
- 
-    Empty_Vector : constant Vector;
- 
-    overriding function "=" (Left, Right : Vector) return Boolean;
- 
-    function To_Vector (Length : Count_Type) return Vector;
- 
-    function To_Vector
-      (New_Item : Element_Type;
-       Length   : Count_Type) return Vector;
- 
-    function "&" (Left, Right : Vector) return Vector;
- 
-    function "&" (Left : Vector; Right : Element_Type) return Vector;
- 
-    function "&" (Left : Element_Type; Right : Vector) return Vector;
- 
-    function "&" (Left, Right : Element_Type) return Vector;
- 
-    function Capacity (Container : Vector) return Count_Type;
- 
-    procedure Reserve_Capacity
-      (Container : in out Vector;
-       Capacity  : Count_Type);
- 
-    function Length (Container : Vector) return Count_Type;
- 
-    procedure Set_Length
-      (Container : in out Vector;
-       Length    : Count_Type);
- 
-    function Is_Empty (Container : Vector) return Boolean;
- 
-    procedure Clear (Container : in out Vector);
- 
-    function To_Cursor
-      (Container : Vector;
-       Index     : Extended_Index) return Cursor;
- 
-    function To_Index (Position : Cursor) return Extended_Index;
- 
-    function Element
-      (Container : Vector;
-       Index     : Index_Type) return Element_Type;
- 
-    function Element (Position : Cursor) return Element_Type;
- 
-    procedure Replace_Element
-      (Container : in out Vector;
-       Index     : Index_Type;
-       New_Item  : Element_Type);
- 
-    procedure Replace_Element
-      (Container : in out Vector;
-       Position  : Cursor;
-       New_Item  : Element_Type);
- 
-    procedure Query_Element
-      (Container : Vector;
-       Index     : Index_Type;
-       Process   : not null access procedure (Element : Element_Type));
- 
-    procedure Query_Element
-      (Position : Cursor;
-       Process  : not null access procedure (Element : Element_Type));
- 
-    procedure Update_Element
-      (Container : in out Vector;
-       Index     : Index_Type;
-       Process   : not null access procedure (Element : in out Element_Type));
- 
-    procedure Update_Element
-      (Container : in out Vector;
-       Position  : Cursor;
-       Process   : not null access procedure (Element : in out Element_Type));
- 
-    type Constant_Reference_Type
-       (Element : not null access constant Element_Type) is
-    private
-    with
-       Implicit_Dereference => Element;
- 
-    type Reference_Type (Element : not null access Element_Type) is private
-    with
-       Implicit_Dereference => Element;
- 
-    function Constant_Reference
-      (Container : aliased Vector;
-       Position  : Cursor) return Constant_Reference_Type;
-    pragma Inline (Constant_Reference);
- 
-    function Reference
-      (Container : aliased in out Vector;
-       Position  : Cursor) return Reference_Type;
-    pragma Inline (Reference);
- 
-    function Constant_Reference
-      (Container : aliased Vector;
-       Index     : Index_Type) return Constant_Reference_Type;
-    pragma Inline (Constant_Reference);
- 
-    function Reference
-      (Container : aliased in out Vector;
-       Index     : Index_Type) return Reference_Type;
-    pragma Inline (Reference);
- 
-    procedure Assign (Target : in out Vector; Source : Vector);
- 
-    function Copy (Source : Vector; Capacity : Count_Type := 0) return Vector;
- 
-    procedure Move (Target : in out Vector; Source : in out Vector);
- 
-    procedure Insert
-      (Container : in out Vector;
-       Before    : Extended_Index;
-       New_Item  : Vector);
- 
-    procedure Insert
-      (Container : in out Vector;
-       Before    : Cursor;
-       New_Item  : Vector);
- 
-    procedure Insert
-      (Container : in out Vector;
-       Before    : Cursor;
-       New_Item  : Vector;
-       Position  : out Cursor);
- 
-    procedure Insert
-      (Container : in out Vector;
-       Before    : Extended_Index;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1);
- 
-    procedure Insert
-      (Container : in out Vector;
-       Before    : Cursor;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1);
- 
-    procedure Insert
-      (Container : in out Vector;
-       Before    : Cursor;
-       New_Item  : Element_Type;
-       Position  : out Cursor;
-       Count     : Count_Type := 1);
- 
-    procedure Insert
-      (Container : in out Vector;
-       Before    : Extended_Index;
-       Count     : Count_Type := 1);
- 
-    procedure Insert
-      (Container : in out Vector;
-       Before    : Cursor;
-       Position  : out Cursor;
-       Count     : Count_Type := 1);
- 
-    procedure Prepend
-      (Container : in out Vector;
-       New_Item  : Vector);
- 
-    procedure Prepend
-      (Container : in out Vector;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1);
- 
-    procedure Append
-      (Container : in out Vector;
-       New_Item  : Vector);
- 
-    procedure Append
-      (Container : in out Vector;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1);
- 
-    procedure Insert_Space
-      (Container : in out Vector;
-       Before    : Extended_Index;
-       Count     : Count_Type := 1);
- 
-    procedure Insert_Space
-      (Container : in out Vector;
-       Before    : Cursor;
-       Position  : out Cursor;
-       Count     : Count_Type := 1);
- 
-    procedure Delete
-      (Container : in out Vector;
-       Index     : Extended_Index;
-       Count     : Count_Type := 1);
- 
-    procedure Delete
-      (Container : in out Vector;
-       Position  : in out Cursor;
-       Count     : Count_Type := 1);
- 
-    procedure Delete_First
-      (Container : in out Vector;
-       Count     : Count_Type := 1);
- 
-    procedure Delete_Last
-      (Container : in out Vector;
-       Count     : Count_Type := 1);
- 
-    procedure Reverse_Elements (Container : in out Vector);
- 
-    procedure Swap (Container : in out Vector; I, J : Index_Type);
- 
-    procedure Swap (Container : in out Vector; I, J : Cursor);
- 
-    function First_Index (Container : Vector) return Index_Type;
- 
-    function First (Container : Vector) return Cursor;
- 
-    function First_Element (Container : Vector) return Element_Type;
- 
-    function Last_Index (Container : Vector) return Extended_Index;
- 
-    function Last (Container : Vector) return Cursor;
- 
-    function Last_Element (Container : Vector) return Element_Type;
- 
-    function Next (Position : Cursor) return Cursor;
- 
-    procedure Next (Position : in out Cursor);
- 
-    function Previous (Position : Cursor) return Cursor;
- 
-    procedure Previous (Position : in out Cursor);
- 
-    function Find_Index
-      (Container : Vector;
-       Item      : Element_Type;
-       Index     : Index_Type := Index_Type'First) return Extended_Index;
- 
-    function Find
-      (Container : Vector;
-       Item      : Element_Type;
-       Position  : Cursor := No_Element) return Cursor;
- 
-    function Reverse_Find_Index
-      (Container : Vector;
-       Item      : Element_Type;
-       Index     : Index_Type := Index_Type'Last) return Extended_Index;
- 
-    function Reverse_Find
-      (Container : Vector;
-       Item      : Element_Type;
-       Position  : Cursor := No_Element) return Cursor;
- 
-    function Contains
-      (Container : Vector;
-       Item      : Element_Type) return Boolean;
- 
-    procedure Iterate
-      (Container : Vector;
-       Process   : not null access procedure (Position : Cursor));
- 
-    procedure Reverse_Iterate
-      (Container : Vector;
-       Process   : not null access procedure (Position : Cursor));
- 
-    function Iterate (Container : Vector)
-       return Vector_Iterator_Interfaces.Reversible_Iterator'Class;
- 
-    function Iterate (Container : Vector; Start : Cursor)
-       return Vector_Iterator_Interfaces.Reversible_Iterator'Class;
- 
-    generic
-       with function "<" (Left, Right : Element_Type) return Boolean is <>;
-    package Generic_Sorting is
- 
-       function Is_Sorted (Container : Vector) return Boolean;
- 
-       procedure Sort (Container : in out Vector);
- 
-       procedure Merge (Target : in out Vector; Source : in out Vector);
- 
-    end Generic_Sorting;
- 
- private
- 
-    pragma Inline (Append);
-    pragma Inline (First_Index);
-    pragma Inline (Last_Index);
-    pragma Inline (Element);
-    pragma Inline (First_Element);
-    pragma Inline (Last_Element);
-    pragma Inline (Query_Element);
-    pragma Inline (Update_Element);
-    pragma Inline (Replace_Element);
-    pragma Inline (Is_Empty);
-    pragma Inline (Contains);
-    pragma Inline (Next);
-    pragma Inline (Previous);
- 
-    use Ada.Containers.Helpers;
-    package Implementation is new Generic_Implementation;
-    use Implementation;
- 
-    type Elements_Array is array (Index_Type range <>) of aliased Element_Type;
-    function "=" (L, R : Elements_Array) return Boolean is abstract;
- 
-    type Elements_Type (Last : Extended_Index) is limited record
-       EA : Elements_Array (Index_Type'First .. Last);
-    end record;
- 
-    type Elements_Access is access all Elements_Type;
- 
-    use Finalization;
-    use Streams;
- 
-    type Vector is new Controlled with record
-       Elements : Elements_Access := null;
-       Last     : Extended_Index := No_Index;
-       TC       : aliased Tamper_Counts;
-    end record;
- 
-    overriding procedure Adjust (Container : in out Vector);
-    overriding procedure Finalize (Container : in out Vector);
- 
-    procedure Write
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : Vector);
- 
-    for Vector'Write use Write;
- 
-    procedure Read
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : out Vector);
- 
-    for Vector'Read use Read;
- 
-    type Vector_Access is access all Vector;
-    for Vector_Access'Storage_Size use 0;
- 
-    type Cursor is record
-       Container : Vector_Access;
-       Index     : Index_Type := Index_Type'First;
-    end record;
- 
-    procedure Read
-      (Stream   : not null access Root_Stream_Type'Class;
-       Position : out Cursor);
- 
-    for Cursor'Read use Read;
- 
-    procedure Write
-      (Stream   : not null access Root_Stream_Type'Class;
-       Position : Cursor);
- 
-    for Cursor'Write use Write;
- 
-    subtype Reference_Control_Type is Implementation.Reference_Control_Type;
-    --  It is necessary to rename this here, so that the compiler can find it
- 
-    type Constant_Reference_Type
-      (Element : not null access constant Element_Type) is
-       record
-          Control : Reference_Control_Type :=
-            raise Program_Error with "uninitialized reference";
-          --  The RM says, "The default initialization of an object of
-          --  type Constant_Reference_Type or Reference_Type propagates
-          --  Program_Error."
-       end record;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Constant_Reference_Type);
- 
-    for Constant_Reference_Type'Write use Write;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Constant_Reference_Type);
- 
-    for Constant_Reference_Type'Read use Read;
- 
-    type Reference_Type
-      (Element : not null access Element_Type) is
-       record
-          Control : Reference_Control_Type :=
-            raise Program_Error with "uninitialized reference";
-          --  The RM says, "The default initialization of an object of
-          --  type Constant_Reference_Type or Reference_Type propagates
-          --  Program_Error."
-       end record;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Reference_Type);
- 
-    for Reference_Type'Write use Write;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       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 Vector'Class) return Reference_Control_Type;
-    pragma Inline (Pseudo_Reference);
-    --  Creates an object of type Reference_Control_Type pointing to the
-    --  container, and increments the Lock. Finalization of this object will
-    --  decrement the Lock.
- 
-    type Element_Access is access all Element_Type;
- 
-    function Get_Element_Access
-      (Position : Cursor) return not null Element_Access;
-    --  Returns a pointer to the element designated by Position.
- 
-    No_Element : constant Cursor := Cursor'(null, Index_Type'First);
- 
-    Empty_Vector : constant Vector := (Controlled with others => <>);
- 
-    type Iterator is new Limited_Controlled and
-      Vector_Iterator_Interfaces.Reversible_Iterator with
-    record
-       Container : Vector_Access;
-       Index     : Index_Type'Base;
-    end record
-      with Disable_Controlled => not T_Check;
- 
-    overriding procedure Finalize (Object : in out Iterator);
- 
-    overriding function First (Object : Iterator) return Cursor;
-    overriding function Last  (Object : Iterator) return Cursor;
- 
-    overriding function Next
-      (Object   : Iterator;
-       Position : Cursor) return Cursor;
- 
-    overriding function Previous
-      (Object   : Iterator;
-       Position : Cursor) return Cursor;
- 
- end Ada.Containers.Vectors;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-coorma.adb gcc-8.1.0/gcc/ada/a-coorma.adb
*** gcc-7.3.0/gcc/ada/a-coorma.adb	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-coorma.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,1556 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --           A D A . C O N T A I N E R S . O R D E R E D _ M A P S          --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 Ada.Unchecked_Deallocation;
- 
- with Ada.Containers.Helpers; use Ada.Containers.Helpers;
- 
- with Ada.Containers.Red_Black_Trees.Generic_Operations;
- pragma Elaborate_All (Ada.Containers.Red_Black_Trees.Generic_Operations);
- 
- with Ada.Containers.Red_Black_Trees.Generic_Keys;
- pragma Elaborate_All (Ada.Containers.Red_Black_Trees.Generic_Keys);
- 
- with System; use type System.Address;
- 
- package body Ada.Containers.Ordered_Maps is
- 
-    pragma Warnings (Off, "variable ""Busy*"" is not referenced");
-    pragma Warnings (Off, "variable ""Lock*"" is not referenced");
-    --  See comment in Ada.Containers.Helpers
- 
-    -----------------------------
-    -- 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_Access) return Color_Type;
-    pragma Inline (Color);
- 
-    function Left (Node : Node_Access) return Node_Access;
-    pragma Inline (Left);
- 
-    function Parent (Node : Node_Access) return Node_Access;
-    pragma Inline (Parent);
- 
-    function Right (Node : Node_Access) return Node_Access;
-    pragma Inline (Right);
- 
-    procedure Set_Parent (Node : Node_Access; Parent : Node_Access);
-    pragma Inline (Set_Parent);
- 
-    procedure Set_Left (Node : Node_Access; Left : Node_Access);
-    pragma Inline (Set_Left);
- 
-    procedure Set_Right (Node : Node_Access; Right : Node_Access);
-    pragma Inline (Set_Right);
- 
-    procedure Set_Color (Node : Node_Access; Color : Color_Type);
-    pragma Inline (Set_Color);
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    function Copy_Node (Source : Node_Access) return Node_Access;
-    pragma Inline (Copy_Node);
- 
-    procedure Free (X : in out Node_Access);
- 
-    function Is_Equal_Node_Node (L, R : Node_Access) return Boolean;
-    pragma Inline (Is_Equal_Node_Node);
- 
-    function Is_Greater_Key_Node
-      (Left  : Key_Type;
-       Right : Node_Access) return Boolean;
-    pragma Inline (Is_Greater_Key_Node);
- 
-    function Is_Less_Key_Node
-      (Left  : Key_Type;
-       Right : Node_Access) return Boolean;
-    pragma Inline (Is_Less_Key_Node);
- 
-    --------------------------
-    -- Local Instantiations --
-    --------------------------
- 
-    package Tree_Operations is
-       new Red_Black_Trees.Generic_Operations (Tree_Types);
- 
-    procedure Delete_Tree is
-       new Tree_Operations.Generic_Delete_Tree (Free);
- 
-    function Copy_Tree is
-       new Tree_Operations.Generic_Copy_Tree (Copy_Node, Delete_Tree);
- 
-    use Tree_Operations;
- 
-    package Key_Ops is
-      new Red_Black_Trees.Generic_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 Is_Equal is
-      new Tree_Operations.Generic_Equal (Is_Equal_Node_Node);
- 
-    ---------
-    -- "<" --
-    ---------
- 
-    function "<" (Left, Right : Cursor) return Boolean is
-    begin
-       if Checks and then Left.Node = null then
-          raise Constraint_Error with "Left cursor of ""<"" equals No_Element";
-       end if;
- 
-       if Checks and then Right.Node = null then
-          raise Constraint_Error with "Right cursor of ""<"" equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Left.Container.Tree, Left.Node),
-                      "Left cursor of ""<"" is bad");
- 
-       pragma Assert (Vet (Right.Container.Tree, Right.Node),
-                      "Right cursor of ""<"" is bad");
- 
-       return Left.Node.Key < Right.Node.Key;
-    end "<";
- 
-    function "<" (Left : Cursor; Right : Key_Type) return Boolean is
-    begin
-       if Checks and then Left.Node = null then
-          raise Constraint_Error with "Left cursor of ""<"" equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Left.Container.Tree, Left.Node),
-                      "Left cursor of ""<"" is bad");
- 
-       return Left.Node.Key < Right;
-    end "<";
- 
-    function "<" (Left : Key_Type; Right : Cursor) return Boolean is
-    begin
-       if Checks and then Right.Node = null then
-          raise Constraint_Error with "Right cursor of ""<"" equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Right.Container.Tree, Right.Node),
-                      "Right cursor of ""<"" is bad");
- 
-       return Left < Right.Node.Key;
-    end "<";
- 
-    ---------
-    -- "=" --
-    ---------
- 
-    function "=" (Left, Right : Map) return Boolean is
-    begin
-       return Is_Equal (Left.Tree, Right.Tree);
-    end "=";
- 
-    ---------
-    -- ">" --
-    ---------
- 
-    function ">" (Left, Right : Cursor) return Boolean is
-    begin
-       if Checks and then Left.Node = null then
-          raise Constraint_Error with "Left cursor of "">"" equals No_Element";
-       end if;
- 
-       if Checks and then Right.Node = null then
-          raise Constraint_Error with "Right cursor of "">"" equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Left.Container.Tree, Left.Node),
-                      "Left cursor of "">"" is bad");
- 
-       pragma Assert (Vet (Right.Container.Tree, Right.Node),
-                      "Right cursor of "">"" is bad");
- 
-       return Right.Node.Key < Left.Node.Key;
-    end ">";
- 
-    function ">" (Left : Cursor; Right : Key_Type) return Boolean is
-    begin
-       if Checks and then Left.Node = null then
-          raise Constraint_Error with "Left cursor of "">"" equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Left.Container.Tree, Left.Node),
-                      "Left cursor of "">"" is bad");
- 
-       return Right < Left.Node.Key;
-    end ">";
- 
-    function ">" (Left : Key_Type; Right : Cursor) return Boolean is
-    begin
-       if Checks and then Right.Node = null then
-          raise Constraint_Error with "Right cursor of "">"" equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Right.Container.Tree, Right.Node),
-                      "Right cursor of "">"" is bad");
- 
-       return Right.Node.Key < Left;
-    end ">";
- 
-    ------------
-    -- Adjust --
-    ------------
- 
-    procedure Adjust is
-       new Tree_Operations.Generic_Adjust (Copy_Tree);
- 
-    procedure Adjust (Container : in out Map) is
-    begin
-       Adjust (Container.Tree);
-    end Adjust;
- 
-    ------------
-    -- Assign --
-    ------------
- 
-    procedure Assign (Target : in out Map; Source : Map) is
-       procedure Insert_Item (Node : Node_Access);
-       pragma Inline (Insert_Item);
- 
-       procedure Insert_Items is
-          new Tree_Operations.Generic_Iteration (Insert_Item);
- 
-       -----------------
-       -- Insert_Item --
-       -----------------
- 
-       procedure Insert_Item (Node : Node_Access) is
-       begin
-          Target.Insert (Key => Node.Key, New_Item => Node.Element);
-       end Insert_Item;
- 
-    --  Start of processing for Assign
- 
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       Target.Clear;
-       Insert_Items (Source.Tree);
-    end Assign;
- 
-    -------------
-    -- Ceiling --
-    -------------
- 
-    function Ceiling (Container : Map; Key : Key_Type) return Cursor is
-       Node : constant Node_Access := Key_Ops.Ceiling (Container.Tree, Key);
- 
-    begin
-       if Node = null then
-          return No_Element;
-       end if;
- 
-       return Cursor'(Container'Unrestricted_Access, Node);
-    end Ceiling;
- 
-    -----------
-    -- Clear --
-    -----------
- 
-    procedure Clear is new Tree_Operations.Generic_Clear (Delete_Tree);
- 
-    procedure Clear (Container : in out Map) is
-    begin
-       Clear (Container.Tree);
-    end Clear;
- 
-    -----------
-    -- Color --
-    -----------
- 
-    function Color (Node : Node_Access) return Color_Type is
-    begin
-       return Node.Color;
-    end Color;
- 
-    ------------------------
-    -- Constant_Reference --
-    ------------------------
- 
-    function Constant_Reference
-      (Container : aliased Map;
-       Position  : Cursor) return Constant_Reference_Type
-    is
-    begin
-       if Checks and then Position.Container = null then
-          raise Constraint_Error with
-            "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor designates wrong map";
-       end if;
- 
-       pragma Assert (Vet (Container.Tree, Position.Node),
-                      "Position cursor in Constant_Reference is bad");
- 
-       declare
-          T : Tree_Type renames Position.Container.all.Tree;
-          TC : constant Tamper_Counts_Access :=
-            T.TC'Unrestricted_Access;
-       begin
-          return R : constant Constant_Reference_Type :=
-            (Element => Position.Node.Element'Access,
-             Control => (Controlled with TC))
-          do
-             Lock (TC.all);
-          end return;
-       end;
-    end Constant_Reference;
- 
-    function Constant_Reference
-      (Container : aliased Map;
-       Key       : Key_Type) return Constant_Reference_Type
-    is
-       Node : constant Node_Access := Key_Ops.Find (Container.Tree, Key);
- 
-    begin
-       if Checks and then Node = null then
-          raise Constraint_Error with "key not in map";
-       end if;
- 
-       declare
-          T : Tree_Type renames Container'Unrestricted_Access.all.Tree;
-          TC : constant Tamper_Counts_Access :=
-            T.TC'Unrestricted_Access;
-       begin
-          return R : constant Constant_Reference_Type :=
-            (Element => Node.Element'Access,
-             Control => (Controlled with TC))
-          do
-             Lock (TC.all);
-          end return;
-       end;
-    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) return Map is
-    begin
-       return Target : Map do
-          Target.Assign (Source);
-       end return;
-    end Copy;
- 
-    ---------------
-    -- Copy_Node --
-    ---------------
- 
-    function Copy_Node (Source : Node_Access) return Node_Access is
-       Target : constant Node_Access :=
-         new Node_Type'(Color   => Source.Color,
-                        Key     => Source.Key,
-                        Element => Source.Element,
-                        Parent  => null,
-                        Left    => null,
-                        Right   => null);
-    begin
-       return Target;
-    end Copy_Node;
- 
-    ------------
-    -- Delete --
-    ------------
- 
-    procedure Delete (Container : in out Map; Position : in out Cursor) is
-       Tree : Tree_Type renames Container.Tree;
- 
-    begin
-       if Checks and then Position.Node = null then
-          raise Constraint_Error with
-            "Position cursor of Delete equals No_Element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor of Delete designates wrong map";
-       end if;
- 
-       pragma Assert (Vet (Tree, Position.Node),
-                      "Position cursor of Delete is bad");
- 
-       Tree_Operations.Delete_Node_Sans_Free (Tree, Position.Node);
-       Free (Position.Node);
- 
-       Position.Container := null;
-    end Delete;
- 
-    procedure Delete (Container : in out Map; Key : Key_Type) is
-       X : Node_Access := Key_Ops.Find (Container.Tree, Key);
- 
-    begin
-       if Checks and then X = null then
-          raise Constraint_Error with "key not in map";
-       end if;
- 
-       Tree_Operations.Delete_Node_Sans_Free (Container.Tree, X);
-       Free (X);
-    end Delete;
- 
-    ------------------
-    -- Delete_First --
-    ------------------
- 
-    procedure Delete_First (Container : in out Map) is
-       X : Node_Access := Container.Tree.First;
- 
-    begin
-       if X /= null then
-          Tree_Operations.Delete_Node_Sans_Free (Container.Tree, X);
-          Free (X);
-       end if;
-    end Delete_First;
- 
-    -----------------
-    -- Delete_Last --
-    -----------------
- 
-    procedure Delete_Last (Container : in out Map) is
-       X : Node_Access := Container.Tree.Last;
- 
-    begin
-       if X /= null then
-          Tree_Operations.Delete_Node_Sans_Free (Container.Tree, X);
-          Free (X);
-       end if;
-    end Delete_Last;
- 
-    -------------
-    -- Element --
-    -------------
- 
-    function Element (Position : Cursor) return Element_Type is
-    begin
-       if Checks and then Position.Node = null then
-          raise Constraint_Error with
-            "Position cursor of function Element equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Position.Container.Tree, Position.Node),
-                      "Position cursor of function Element is bad");
- 
-       return Position.Node.Element;
-    end Element;
- 
-    function Element (Container : Map; Key : Key_Type) return Element_Type is
-       Node : constant Node_Access := Key_Ops.Find (Container.Tree, Key);
- 
-    begin
-       if Checks and then Node = null then
-          raise Constraint_Error with "key not in map";
-       end if;
- 
-       return 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 : Node_Access := Key_Ops.Find (Container.Tree, Key);
- 
-    begin
-       if X /= null then
-          Tree_Operations.Delete_Node_Sans_Free (Container.Tree, X);
-          Free (X);
-       end if;
-    end Exclude;
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    procedure Finalize (Object : in out Iterator) is
-    begin
-       if Object.Container /= null then
-          Unbusy (Object.Container.Tree.TC);
-       end if;
-    end Finalize;
- 
-    ----------
-    -- Find --
-    ----------
- 
-    function Find (Container : Map; Key : Key_Type) return Cursor is
-       Node : constant Node_Access := Key_Ops.Find (Container.Tree, Key);
-    begin
-       return (if Node = null then No_Element
-                 else Cursor'(Container'Unrestricted_Access, Node));
-    end Find;
- 
-    -----------
-    -- First --
-    -----------
- 
-    function First (Container : Map) return Cursor is
-       T : Tree_Type renames Container.Tree;
-    begin
-       if T.First = null then
-          return No_Element;
-       else
-          return Cursor'(Container'Unrestricted_Access, T.First);
-       end if;
-    end First;
- 
-    function First (Object : Iterator) return Cursor is
-    begin
-       --  The value of the iterator object's Node component influences the
-       --  behavior of the First (and Last) selector function.
- 
-       --  When the Node component is null, this means the iterator object was
-       --  constructed without a start expression, in which case the (forward)
-       --  iteration starts from the (logical) beginning of the entire sequence
-       --  of items (corresponding to Container.First, for a forward iterator).
- 
-       --  Otherwise, this is iteration over a partial sequence of items. When
-       --  the Node component is non-null, the iterator object was constructed
-       --  with a start expression, that specifies the position from which the
-       --  (forward) partial iteration begins.
- 
-       if Object.Node = null then
-          return Object.Container.First;
-       else
-          return Cursor'(Object.Container, Object.Node);
-       end if;
-    end First;
- 
-    -------------------
-    -- First_Element --
-    -------------------
- 
-    function First_Element (Container : Map) return Element_Type is
-       T : Tree_Type renames Container.Tree;
-    begin
-       if Checks and then T.First = null then
-          raise Constraint_Error with "map is empty";
-       end if;
- 
-       return T.First.Element;
-    end First_Element;
- 
-    ---------------
-    -- First_Key --
-    ---------------
- 
-    function First_Key (Container : Map) return Key_Type is
-       T : Tree_Type renames Container.Tree;
-    begin
-       if Checks and then T.First = null then
-          raise Constraint_Error with "map is empty";
-       end if;
- 
-       return T.First.Key;
-    end First_Key;
- 
-    -----------
-    -- Floor --
-    -----------
- 
-    function Floor (Container : Map; Key : Key_Type) return Cursor is
-       Node : constant Node_Access := Key_Ops.Floor (Container.Tree, Key);
-    begin
-       if Node = null then
-          return No_Element;
-       else
-          return Cursor'(Container'Unrestricted_Access, Node);
-       end if;
-    end Floor;
- 
-    ----------
-    -- Free --
-    ----------
- 
-    procedure Free (X : in out Node_Access) is
-       procedure Deallocate is
-          new Ada.Unchecked_Deallocation (Node_Type, Node_Access);
- 
-    begin
-       if X = null then
-          return;
-       end if;
- 
-       X.Parent := X;
-       X.Left := X;
-       X.Right := X;
- 
-       Deallocate (X);
-    end Free;
- 
-    ------------------------
-    -- Get_Element_Access --
-    ------------------------
- 
-    function Get_Element_Access
-      (Position : Cursor) return not null Element_Access is
-    begin
-       return Position.Node.Element'Access;
-    end Get_Element_Access;
- 
-    -----------------
-    -- Has_Element --
-    -----------------
- 
-    function Has_Element (Position : Cursor) return Boolean is
-    begin
-       return Position /= No_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
-          TE_Check (Container.Tree.TC);
- 
-          Position.Node.Key := Key;
-          Position.Node.Element := New_Item;
-       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
-       function New_Node return Node_Access;
-       pragma Inline (New_Node);
- 
-       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
-       begin
-          return new Node_Type'(Key     => Key,
-                                Element => New_Item,
-                                Color   => Red_Black_Trees.Red,
-                                Parent  => null,
-                                Left    => null,
-                                Right   => null);
-       end New_Node;
- 
-    --  Start of processing for Insert
- 
-    begin
-       Insert_Sans_Hint
-         (Container.Tree,
-          Key,
-          Position.Node,
-          Inserted);
- 
-       Position.Container := Container'Unrestricted_Access;
-    end Insert;
- 
-    procedure Insert
-      (Container : in out Map;
-       Key       : Key_Type;
-       New_Item  : Element_Type)
-    is
-       Position : Cursor;
-       pragma Unreferenced (Position);
- 
-       Inserted : Boolean;
- 
-    begin
-       Insert (Container, Key, New_Item, Position, Inserted);
- 
-       if Checks and then not Inserted then
-          raise Constraint_Error with "key already in map";
-       end if;
-    end Insert;
- 
-    procedure Insert
-      (Container : in out Map;
-       Key       : Key_Type;
-       Position  : out Cursor;
-       Inserted  : out Boolean)
-    is
-       function New_Node return Node_Access;
-       pragma Inline (New_Node);
- 
-       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
-       begin
-          return new Node_Type'(Key     => Key,
-                                Element => <>,
-                                Color   => Red_Black_Trees.Red,
-                                Parent  => null,
-                                Left    => null,
-                                Right   => null);
-       end New_Node;
- 
-    --  Start of processing for Insert
- 
-    begin
-       Insert_Sans_Hint
-         (Container.Tree,
-          Key,
-          Position.Node,
-          Inserted);
- 
-       Position.Container := Container'Unrestricted_Access;
-    end Insert;
- 
-    --------------
-    -- Is_Empty --
-    --------------
- 
-    function Is_Empty (Container : Map) return Boolean is
-    begin
-       return Container.Tree.Length = 0;
-    end Is_Empty;
- 
-    ------------------------
-    -- Is_Equal_Node_Node --
-    ------------------------
- 
-    function Is_Equal_Node_Node
-      (L, R : Node_Access) return Boolean
-    is
-    begin
-       if L.Key < R.Key then
-          return False;
-       elsif R.Key < L.Key then
-          return False;
-       else
-          return L.Element = R.Element;
-       end if;
-    end Is_Equal_Node_Node;
- 
-    -------------------------
-    -- Is_Greater_Key_Node --
-    -------------------------
- 
-    function Is_Greater_Key_Node
-      (Left  : Key_Type;
-       Right : Node_Access) return Boolean
-    is
-    begin
-       --  Left > Right same as Right < Left
- 
-       return Right.Key < Left;
-    end Is_Greater_Key_Node;
- 
-    ----------------------
-    -- Is_Less_Key_Node --
-    ----------------------
- 
-    function Is_Less_Key_Node
-      (Left  : Key_Type;
-       Right : Node_Access) return Boolean
-    is
-    begin
-       return Left < Right.Key;
-    end Is_Less_Key_Node;
- 
-    -------------
-    -- Iterate --
-    -------------
- 
-    procedure Iterate
-      (Container : Map;
-       Process   : not null access procedure (Position : Cursor))
-    is
-       procedure Process_Node (Node : Node_Access);
-       pragma Inline (Process_Node);
- 
-       procedure Local_Iterate is
-          new Tree_Operations.Generic_Iteration (Process_Node);
- 
-       ------------------
-       -- Process_Node --
-       ------------------
- 
-       procedure Process_Node (Node : Node_Access) is
-       begin
-          Process (Cursor'(Container'Unrestricted_Access, Node));
-       end Process_Node;
- 
-       Busy : With_Busy (Container.Tree.TC'Unrestricted_Access);
- 
-    --  Start of processing for Iterate
- 
-    begin
-       Local_Iterate (Container.Tree);
-    end Iterate;
- 
-    function Iterate
-      (Container : Map) return Map_Iterator_Interfaces.Reversible_Iterator'Class
-    is
-    begin
-       --  The value of the Node component influences the behavior of the First
-       --  and Last selector functions of the iterator object. When the Node
-       --  component is null (as is the case here), this means the iterator
-       --  object was constructed without a start expression. This is a
-       --  complete iterator, meaning that the iteration starts from the
-       --  (logical) beginning of the sequence of items.
- 
-       --  Note: For a forward iterator, Container.First is the beginning, and
-       --  for a reverse iterator, Container.Last is the beginning.
- 
-       return It : constant Iterator :=
-         (Limited_Controlled with
-            Container => Container'Unrestricted_Access,
-            Node      => null)
-       do
-          Busy (Container.Tree.TC'Unrestricted_Access.all);
-       end return;
-    end Iterate;
- 
-    function Iterate (Container : Map; Start : Cursor)
-       return Map_Iterator_Interfaces.Reversible_Iterator'Class
-    is
-    begin
-       --  It was formerly the case that when Start = No_Element, the partial
-       --  iterator was defined to behave the same as for a complete iterator,
-       --  and iterate over the entire sequence of items. However, those
-       --  semantics were unintuitive and arguably error-prone (it is too easy
-       --  to accidentally create an endless loop), and so they were changed,
-       --  per the ARG meeting in Denver on 2011/11. However, there was no
-       --  consensus about what positive meaning this corner case should have,
-       --  and so it was decided to simply raise an exception. This does imply,
-       --  however, that it is not possible to use a partial iterator to specify
-       --  an empty sequence of items.
- 
-       if Checks and then Start = No_Element then
-          raise Constraint_Error with
-            "Start position for iterator equals No_Element";
-       end if;
- 
-       if Checks and then Start.Container /= Container'Unrestricted_Access then
-          raise Program_Error with
-            "Start cursor of Iterate designates wrong map";
-       end if;
- 
-       pragma Assert (Vet (Container.Tree, Start.Node),
-                      "Start cursor of Iterate is bad");
- 
-       --  The value of the Node component influences the behavior of the First
-       --  and Last selector functions of the iterator object. When the Node
-       --  component is non-null (as is the case here), it means that this
-       --  is a partial iteration, over a subset of the complete sequence of
-       --  items. The iterator object was constructed with a start expression,
-       --  indicating the position from which the iteration begins. Note that
-       --  the start position has the same value irrespective of whether this
-       --  is a forward or reverse iteration.
- 
-       return It : constant Iterator :=
-         (Limited_Controlled with
-            Container => Container'Unrestricted_Access,
-            Node      => Start.Node)
-       do
-          Busy (Container.Tree.TC'Unrestricted_Access.all);
-       end return;
-    end Iterate;
- 
-    ---------
-    -- Key --
-    ---------
- 
-    function Key (Position : Cursor) return Key_Type is
-    begin
-       if Checks and then Position.Node = null then
-          raise Constraint_Error with
-            "Position cursor of function Key equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Position.Container.Tree, Position.Node),
-                      "Position cursor of function Key is bad");
- 
-       return Position.Node.Key;
-    end Key;
- 
-    ----------
-    -- Last --
-    ----------
- 
-    function Last (Container : Map) return Cursor is
-       T : Tree_Type renames Container.Tree;
-    begin
-       if T.Last = null then
-          return No_Element;
-       else
-          return Cursor'(Container'Unrestricted_Access, T.Last);
-       end if;
-    end Last;
- 
-    function Last (Object : Iterator) return Cursor is
-    begin
-       --  The value of the iterator object's Node component influences the
-       --  behavior of the Last (and First) selector function.
- 
-       --  When the Node component is null, this means the iterator object was
-       --  constructed without a start expression, in which case the (reverse)
-       --  iteration starts from the (logical) beginning of the entire sequence
-       --  (corresponding to Container.Last, for a reverse iterator).
- 
-       --  Otherwise, this is iteration over a partial sequence of items. When
-       --  the Node component is non-null, the iterator object was constructed
-       --  with a start expression, that specifies the position from which the
-       --  (reverse) partial iteration begins.
- 
-       if Object.Node = null then
-          return Object.Container.Last;
-       else
-          return Cursor'(Object.Container, Object.Node);
-       end if;
-    end Last;
- 
-    ------------------
-    -- Last_Element --
-    ------------------
- 
-    function Last_Element (Container : Map) return Element_Type is
-       T : Tree_Type renames Container.Tree;
-    begin
-       if Checks and then T.Last = null then
-          raise Constraint_Error with "map is empty";
-       end if;
- 
-       return T.Last.Element;
-    end Last_Element;
- 
-    --------------
-    -- Last_Key --
-    --------------
- 
-    function Last_Key (Container : Map) return Key_Type is
-       T : Tree_Type renames Container.Tree;
-    begin
-       if Checks and then T.Last = null then
-          raise Constraint_Error with "map is empty";
-       end if;
- 
-       return T.Last.Key;
-    end Last_Key;
- 
-    ----------
-    -- Left --
-    ----------
- 
-    function Left (Node : Node_Access) return Node_Access is
-    begin
-       return Node.Left;
-    end Left;
- 
-    ------------
-    -- Length --
-    ------------
- 
-    function Length (Container : Map) return Count_Type is
-    begin
-       return Container.Tree.Length;
-    end Length;
- 
-    ----------
-    -- Move --
-    ----------
- 
-    procedure Move is
-       new Tree_Operations.Generic_Move (Clear);
- 
-    procedure Move (Target : in out Map; Source : in out Map) is
-    begin
-       Move (Target => Target.Tree, Source => Source.Tree);
-    end Move;
- 
-    ----------
-    -- Next --
-    ----------
- 
-    procedure Next (Position : in out Cursor) is
-    begin
-       Position := Next (Position);
-    end Next;
- 
-    function Next (Position : Cursor) return Cursor is
-    begin
-       if Position = No_Element then
-          return No_Element;
-       end if;
- 
-       pragma Assert (Vet (Position.Container.Tree, Position.Node),
-                      "Position cursor of Next is bad");
- 
-       declare
-          Node : constant Node_Access := Tree_Operations.Next (Position.Node);
- 
-       begin
-          if Node = null then
-             return No_Element;
-          end if;
- 
-          return Cursor'(Position.Container, Node);
-       end;
-    end Next;
- 
-    function Next
-      (Object   : Iterator;
-       Position : Cursor) return Cursor
-    is
-    begin
-       if Position.Container = null then
-          return No_Element;
-       end if;
- 
-       if Checks and then Position.Container /= Object.Container then
-          raise Program_Error with
-            "Position cursor of Next designates wrong map";
-       end if;
- 
-       return Next (Position);
-    end Next;
- 
-    ------------
-    -- Parent --
-    ------------
- 
-    function Parent (Node : Node_Access) return Node_Access is
-    begin
-       return Node.Parent;
-    end Parent;
- 
-    --------------
-    -- Previous --
-    --------------
- 
-    procedure Previous (Position : in out Cursor) is
-    begin
-       Position := Previous (Position);
-    end Previous;
- 
-    function Previous (Position : Cursor) return Cursor is
-    begin
-       if Position = No_Element then
-          return No_Element;
-       end if;
- 
-       pragma Assert (Vet (Position.Container.Tree, Position.Node),
-                      "Position cursor of Previous is bad");
- 
-       declare
-          Node : constant Node_Access :=
-            Tree_Operations.Previous (Position.Node);
- 
-       begin
-          if Node = null then
-             return No_Element;
-          end if;
- 
-          return Cursor'(Position.Container, Node);
-       end;
-    end Previous;
- 
-    function Previous
-      (Object   : Iterator;
-       Position : Cursor) return Cursor
-    is
-    begin
-       if Position.Container = null then
-          return No_Element;
-       end if;
- 
-       if Checks and then Position.Container /= Object.Container then
-          raise Program_Error with
-            "Position cursor of Previous designates wrong map";
-       end if;
- 
-       return Previous (Position);
-    end Previous;
- 
-    ----------------------
-    -- Pseudo_Reference --
-    ----------------------
- 
-    function Pseudo_Reference
-      (Container : aliased Map'Class) return Reference_Control_Type
-    is
-       TC : constant Tamper_Counts_Access :=
-         Container.Tree.TC'Unrestricted_Access;
-    begin
-       return R : constant Reference_Control_Type := (Controlled with TC) do
-          Lock (TC.all);
-       end return;
-    end Pseudo_Reference;
- 
-    -------------------
-    -- Query_Element --
-    -------------------
- 
-    procedure Query_Element
-      (Position : Cursor;
-       Process  : not null access procedure (Key     : Key_Type;
-                                             Element : Element_Type))
-    is
-    begin
-       if Checks and then Position.Node = null then
-          raise Constraint_Error with
-            "Position cursor of Query_Element equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Position.Container.Tree, Position.Node),
-                      "Position cursor of Query_Element is bad");
- 
-       declare
-          T : Tree_Type renames Position.Container.Tree;
-          Lock : With_Lock (T.TC'Unrestricted_Access);
-          K : Key_Type renames Position.Node.Key;
-          E : Element_Type renames Position.Node.Element;
-       begin
-          Process (K, E);
-       end;
-    end Query_Element;
- 
-    ----------
-    -- Read --
-    ----------
- 
-    procedure Read
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : out Map)
-    is
-       function Read_Node
-         (Stream : not null access Root_Stream_Type'Class) return Node_Access;
-       pragma Inline (Read_Node);
- 
-       procedure Read is
-          new Tree_Operations.Generic_Read (Clear, Read_Node);
- 
-       ---------------
-       -- Read_Node --
-       ---------------
- 
-       function Read_Node
-         (Stream : not null access Root_Stream_Type'Class) return Node_Access
-       is
-          Node : Node_Access := new Node_Type;
-       begin
-          Key_Type'Read (Stream, Node.Key);
-          Element_Type'Read (Stream, Node.Element);
-          return Node;
-       exception
-          when others =>
-             Free (Node);
-             raise;
-       end Read_Node;
- 
-    --  Start of processing for Read
- 
-    begin
-       Read (Stream, Container.Tree);
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Cursor)
-    is
-    begin
-       raise Program_Error with "attempt to stream map cursor";
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Constant_Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Read;
- 
-    ---------------
-    -- Reference --
-    ---------------
- 
-    function Reference
-      (Container : aliased in out Map;
-       Position  : Cursor) return Reference_Type
-    is
-    begin
-       if Checks and then Position.Container = null then
-          raise Constraint_Error with
-            "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor designates wrong map";
-       end if;
- 
-       pragma Assert (Vet (Container.Tree, Position.Node),
-                      "Position cursor in function Reference is bad");
- 
-       declare
-          T : Tree_Type renames Position.Container.all.Tree;
-          TC : constant Tamper_Counts_Access :=
-            T.TC'Unrestricted_Access;
-       begin
-          return R : constant Reference_Type :=
-            (Element => Position.Node.Element'Access,
-             Control => (Controlled with TC))
-          do
-             Lock (TC.all);
-          end return;
-       end;
-    end Reference;
- 
-    function Reference
-      (Container : aliased in out Map;
-       Key       : Key_Type) return Reference_Type
-    is
-       Node : constant Node_Access := Key_Ops.Find (Container.Tree, Key);
- 
-    begin
-       if Checks and then Node = null then
-          raise Constraint_Error with "key not in map";
-       end if;
- 
-       declare
-          T : Tree_Type renames Container'Unrestricted_Access.all.Tree;
-          TC : constant Tamper_Counts_Access :=
-            T.TC'Unrestricted_Access;
-       begin
-          return R : constant Reference_Type :=
-            (Element => Node.Element'Access,
-             Control => (Controlled with TC))
-          do
-             Lock (TC.all);
-          end return;
-       end;
-    end Reference;
- 
-    -------------
-    -- Replace --
-    -------------
- 
-    procedure Replace
-      (Container : in out Map;
-       Key       : Key_Type;
-       New_Item  : Element_Type)
-    is
-       Node : constant Node_Access := Key_Ops.Find (Container.Tree, Key);
- 
-    begin
-       if Checks and then Node = null then
-          raise Constraint_Error with "key not in map";
-       end if;
- 
-       TE_Check (Container.Tree.TC);
- 
-       Node.Key := Key;
-       Node.Element := New_Item;
-    end Replace;
- 
-    ---------------------
-    -- Replace_Element --
-    ---------------------
- 
-    procedure Replace_Element
-      (Container : in out Map;
-       Position  : Cursor;
-       New_Item  : Element_Type)
-    is
-    begin
-       if Checks and then Position.Node = null then
-          raise Constraint_Error with
-            "Position cursor of Replace_Element equals No_Element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor of Replace_Element designates wrong map";
-       end if;
- 
-       TE_Check (Container.Tree.TC);
- 
-       pragma Assert (Vet (Container.Tree, Position.Node),
-                      "Position cursor of Replace_Element is bad");
- 
-       Position.Node.Element := New_Item;
-    end Replace_Element;
- 
-    ---------------------
-    -- Reverse_Iterate --
-    ---------------------
- 
-    procedure Reverse_Iterate
-      (Container : Map;
-       Process   : not null access procedure (Position : Cursor))
-    is
-       procedure Process_Node (Node : Node_Access);
-       pragma Inline (Process_Node);
- 
-       procedure Local_Reverse_Iterate is
-          new Tree_Operations.Generic_Reverse_Iteration (Process_Node);
- 
-       ------------------
-       -- Process_Node --
-       ------------------
- 
-       procedure Process_Node (Node : Node_Access) is
-       begin
-          Process (Cursor'(Container'Unrestricted_Access, Node));
-       end Process_Node;
- 
-       Busy : With_Busy (Container.Tree.TC'Unrestricted_Access);
- 
-    --  Start of processing for Reverse_Iterate
- 
-    begin
-       Local_Reverse_Iterate (Container.Tree);
-    end Reverse_Iterate;
- 
-    -----------
-    -- Right --
-    -----------
- 
-    function Right (Node : Node_Access) return Node_Access is
-    begin
-       return Node.Right;
-    end Right;
- 
-    ---------------
-    -- Set_Color --
-    ---------------
- 
-    procedure Set_Color
-      (Node  : Node_Access;
-       Color : Color_Type)
-    is
-    begin
-       Node.Color := Color;
-    end Set_Color;
- 
-    --------------
-    -- Set_Left --
-    --------------
- 
-    procedure Set_Left (Node : Node_Access; Left : Node_Access) is
-    begin
-       Node.Left := Left;
-    end Set_Left;
- 
-    ----------------
-    -- Set_Parent --
-    ----------------
- 
-    procedure Set_Parent (Node : Node_Access; Parent : Node_Access) is
-    begin
-       Node.Parent := Parent;
-    end Set_Parent;
- 
-    ---------------
-    -- Set_Right --
-    ---------------
- 
-    procedure Set_Right (Node : Node_Access; Right : Node_Access) is
-    begin
-       Node.Right := Right;
-    end Set_Right;
- 
-    --------------------
-    -- Update_Element --
-    --------------------
- 
-    procedure Update_Element
-      (Container : in out Map;
-       Position  : Cursor;
-       Process   : not null access procedure (Key     : Key_Type;
-                                              Element : in out Element_Type))
-    is
-    begin
-       if Checks and then Position.Node = null then
-          raise Constraint_Error with
-            "Position cursor of Update_Element equals No_Element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor of Update_Element designates wrong map";
-       end if;
- 
-       pragma Assert (Vet (Container.Tree, Position.Node),
-                      "Position cursor of Update_Element is bad");
- 
-       declare
-          T : Tree_Type renames Container.Tree;
-          Lock : With_Lock (T.TC'Unrestricted_Access);
-          K : Key_Type renames Position.Node.Key;
-          E : Element_Type renames Position.Node.Element;
-       begin
-          Process (K, E);
-       end;
-    end Update_Element;
- 
-    -----------
-    -- Write --
-    -----------
- 
-    procedure Write
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : Map)
-    is
-       procedure Write_Node
-         (Stream : not null access Root_Stream_Type'Class;
-          Node   : Node_Access);
-       pragma Inline (Write_Node);
- 
-       procedure Write is
-          new Tree_Operations.Generic_Write (Write_Node);
- 
-       ----------------
-       -- Write_Node --
-       ----------------
- 
-       procedure Write_Node
-         (Stream : not null access Root_Stream_Type'Class;
-          Node   : Node_Access)
-       is
-       begin
-          Key_Type'Write (Stream, Node.Key);
-          Element_Type'Write (Stream, Node.Element);
-       end Write_Node;
- 
-    --  Start of processing for Write
- 
-    begin
-       Write (Stream, Container.Tree);
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Cursor)
-    is
-    begin
-       raise Program_Error with "attempt to stream map cursor";
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Constant_Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Write;
- 
- end Ada.Containers.Ordered_Maps;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-coorma.ads gcc-8.1.0/gcc/ada/a-coorma.ads
*** gcc-7.3.0/gcc/ada/a-coorma.ads	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-coorma.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,392 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --           A D A . C O N T A I N E R S . O R D E R E D _ M A P S          --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, 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/>.                                          --
- --                                                                          --
- -- This unit was originally developed by Matthew J Heaney.                  --
- ------------------------------------------------------------------------------
- 
- with Ada.Iterator_Interfaces;
- 
- private with Ada.Containers.Red_Black_Trees;
- private with Ada.Finalization;
- private with Ada.Streams;
- 
- 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.Ordered_Maps is
-    pragma Annotate (CodePeer, Skip_Analysis);
-    pragma Preelaborate;
-    pragma Remote_Types;
- 
-    function Equivalent_Keys (Left, Right : Key_Type) return Boolean;
- 
-    type Map is tagged private with
-       Constant_Indexing => Constant_Reference,
-       Variable_Indexing => Reference,
-       Default_Iterator  => Iterate,
-       Iterator_Element  => Element_Type;
- 
-    type Cursor is private;
-    pragma Preelaborable_Initialization (Cursor);
- 
-    Empty_Map : constant Map;
- 
-    No_Element : constant Cursor;
- 
-    function Has_Element (Position : Cursor) return Boolean;
- 
-    package Map_Iterator_Interfaces is new
-      Ada.Iterator_Interfaces (Cursor, Has_Element);
- 
-    function "=" (Left, Right : Map) return Boolean;
- 
-    function Length (Container : Map) return Count_Type;
- 
-    function Is_Empty (Container : Map) return Boolean;
- 
-    procedure Clear (Container : in out Map);
- 
-    function Key (Position : Cursor) return Key_Type;
- 
-    function Element (Position : Cursor) return Element_Type;
- 
-    procedure Replace_Element
-      (Container : in out Map;
-       Position  : Cursor;
-       New_Item  : Element_Type);
- 
-    procedure Query_Element
-      (Position : Cursor;
-       Process  : not null access
-                    procedure (Key : Key_Type; Element : Element_Type));
- 
-    procedure Update_Element
-      (Container : in out Map;
-       Position  : Cursor;
-       Process   : not null access
-                    procedure (Key : Key_Type; Element : in out Element_Type));
- 
-    type Constant_Reference_Type
-       (Element : not null access constant Element_Type) is private
-    with
-       Implicit_Dereference => Element;
- 
-    type Reference_Type (Element : not null access Element_Type) is private
-    with
-       Implicit_Dereference => Element;
- 
-    function Constant_Reference
-      (Container : aliased Map;
-       Position  : Cursor) return Constant_Reference_Type;
-    pragma Inline (Constant_Reference);
- 
-    function Reference
-      (Container : aliased in out Map;
-       Position  : Cursor) return Reference_Type;
-    pragma Inline (Reference);
- 
-    function Constant_Reference
-      (Container : aliased Map;
-       Key       : Key_Type) return Constant_Reference_Type;
-    pragma Inline (Constant_Reference);
- 
-    function Reference
-      (Container : aliased in out Map;
-       Key       : Key_Type) return Reference_Type;
-    pragma Inline (Reference);
- 
-    procedure Assign (Target : in out Map; Source : Map);
- 
-    function Copy (Source : Map) return Map;
- 
-    procedure Move (Target : in out Map; Source : in out Map);
- 
-    procedure Insert
-      (Container : in out Map;
-       Key       : Key_Type;
-       New_Item  : Element_Type;
-       Position  : out Cursor;
-       Inserted  : out Boolean);
- 
-    procedure Insert
-      (Container : in out Map;
-       Key       : Key_Type;
-       Position  : out Cursor;
-       Inserted  : out Boolean);
- 
-    procedure Insert
-      (Container : in out Map;
-       Key       : Key_Type;
-       New_Item  : Element_Type);
- 
-    procedure Include
-      (Container : in out Map;
-       Key       : Key_Type;
-       New_Item  : Element_Type);
- 
-    procedure Replace
-      (Container : in out Map;
-       Key       : Key_Type;
-       New_Item  : Element_Type);
- 
-    procedure Exclude (Container : in out Map; Key : Key_Type);
- 
-    procedure Delete (Container : in out Map; Key : Key_Type);
- 
-    procedure Delete (Container : in out Map; Position : in out Cursor);
- 
-    procedure Delete_First (Container : in out Map);
- 
-    procedure Delete_Last (Container : in out Map);
- 
-    function First (Container : Map) return Cursor;
- 
-    function First_Element (Container : Map) return Element_Type;
- 
-    function First_Key (Container : Map) return Key_Type;
- 
-    function Last (Container : Map) return Cursor;
- 
-    function Last_Element (Container : Map) return Element_Type;
- 
-    function Last_Key (Container : Map) return Key_Type;
- 
-    function Next (Position : Cursor) return Cursor;
- 
-    procedure Next (Position : in out Cursor);
- 
-    function Previous (Position : Cursor) return Cursor;
- 
-    procedure Previous (Position : in out Cursor);
- 
-    function Find (Container : Map; Key : Key_Type) return Cursor;
- 
-    function Element (Container : Map; Key : Key_Type) return Element_Type;
- 
-    function Floor (Container : Map; Key : Key_Type) return Cursor;
- 
-    function Ceiling (Container : Map; Key : Key_Type) return Cursor;
- 
-    function Contains (Container : Map; Key : Key_Type) return Boolean;
- 
-    function "<" (Left, Right : Cursor) return Boolean;
- 
-    function ">" (Left, Right : Cursor) return Boolean;
- 
-    function "<" (Left : Cursor; Right : Key_Type) return Boolean;
- 
-    function ">" (Left : Cursor; Right : Key_Type) return Boolean;
- 
-    function "<" (Left : Key_Type; Right : Cursor) return Boolean;
- 
-    function ">" (Left : Key_Type; Right : Cursor) return Boolean;
- 
-    procedure Iterate
-      (Container : Map;
-       Process   : not null access procedure (Position : Cursor));
- 
-    procedure Reverse_Iterate
-      (Container : Map;
-       Process   : not null access procedure (Position : Cursor));
- 
-    --  The map container supports iteration in both the forward and reverse
-    --  directions, hence these constructor functions return an object that
-    --  supports the Reversible_Iterator interface.
- 
-    function Iterate
-      (Container : Map)
-       return Map_Iterator_Interfaces.Reversible_Iterator'class;
- 
-    function Iterate
-      (Container : Map;
-       Start     : Cursor)
-       return Map_Iterator_Interfaces.Reversible_Iterator'class;
- 
- private
- 
-    pragma Inline (Next);
-    pragma Inline (Previous);
- 
-    type Node_Type;
-    type Node_Access is access Node_Type;
- 
-    type Node_Type is limited record
-       Parent  : Node_Access;
-       Left    : Node_Access;
-       Right   : Node_Access;
-       Color   : Red_Black_Trees.Color_Type := Red_Black_Trees.Red;
-       Key     : Key_Type;
-       Element : aliased Element_Type;
-    end record;
- 
-    package Tree_Types is
-      new Red_Black_Trees.Generic_Tree_Types (Node_Type, Node_Access);
- 
-    type Map is new Ada.Finalization.Controlled with record
-       Tree : Tree_Types.Tree_Type;
-    end record;
- 
-    overriding procedure Adjust (Container : in out Map);
- 
-    overriding procedure Finalize (Container : in out Map) renames Clear;
- 
-    use Red_Black_Trees;
-    use Tree_Types, Tree_Types.Implementation;
-    use Ada.Finalization;
-    use Ada.Streams;
- 
-    procedure Write
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : Map);
- 
-    for Map'Write use Write;
- 
-    procedure Read
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : out Map);
- 
-    for Map'Read use Read;
- 
-    type Map_Access is access all Map;
-    for Map_Access'Storage_Size use 0;
- 
-    type Cursor is record
-       Container : Map_Access;
-       Node      : Node_Access;
-    end record;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Cursor);
- 
-    for Cursor'Write use Write;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Cursor);
- 
-    for Cursor'Read use Read;
- 
-    subtype Reference_Control_Type is Implementation.Reference_Control_Type;
-    --  It is necessary to rename this here, so that the compiler can find it
- 
-    type Constant_Reference_Type
-      (Element : not null access constant Element_Type) is
-       record
-          Control : Reference_Control_Type :=
-            raise Program_Error with "uninitialized reference";
-          --  The RM says, "The default initialization of an object of
-          --  type Constant_Reference_Type or Reference_Type propagates
-          --  Program_Error."
-       end record;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Constant_Reference_Type);
- 
-    for Constant_Reference_Type'Read use Read;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Constant_Reference_Type);
- 
-    for Constant_Reference_Type'Write use Write;
- 
-    type Reference_Type
-      (Element : not null access Element_Type) is
-       record
-          Control : Reference_Control_Type :=
-            raise Program_Error with "uninitialized reference";
-          --  The RM says, "The default initialization of an object of
-          --  type Constant_Reference_Type or Reference_Type propagates
-          --  Program_Error."
-       end record;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Reference_Type);
- 
-    for Reference_Type'Read use Read;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Reference_Type);
- 
-    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;
-    pragma Inline (Pseudo_Reference);
-    --  Creates an object of type Reference_Control_Type pointing to the
-    --  container, and increments the Lock. Finalization of this object will
-    --  decrement the Lock.
- 
-    type Element_Access is access all Element_Type with
-      Storage_Size => 0;
- 
-    function Get_Element_Access
-      (Position : Cursor) return not null Element_Access;
-    --  Returns a pointer to the element designated by Position.
- 
-    Empty_Map : constant Map := (Controlled with others => <>);
- 
-    No_Element : constant Cursor := Cursor'(null, null);
- 
-    type Iterator is new Limited_Controlled and
-      Map_Iterator_Interfaces.Reversible_Iterator with
-    record
-       Container : Map_Access;
-       Node      : Node_Access;
-    end record
-      with Disable_Controlled => not T_Check;
- 
-    overriding procedure Finalize (Object : in out Iterator);
- 
-    overriding function First (Object : Iterator) return Cursor;
-    overriding function Last  (Object : Iterator) return Cursor;
- 
-    overriding function Next
-      (Object   : Iterator;
-       Position : Cursor) return Cursor;
- 
-    overriding function Previous
-      (Object   : Iterator;
-       Position : Cursor) return Cursor;
- 
- end Ada.Containers.Ordered_Maps;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-coormu.adb gcc-8.1.0/gcc/ada/a-coormu.adb
*** gcc-7.3.0/gcc/ada/a-coormu.adb	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-coormu.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,1895 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --     A D A . C O N T A I N E R S . O R D E R E D _ M U L T I S E T S      --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 Ada.Unchecked_Deallocation;
- 
- with Ada.Containers.Red_Black_Trees.Generic_Operations;
- pragma Elaborate_All (Ada.Containers.Red_Black_Trees.Generic_Operations);
- 
- with Ada.Containers.Red_Black_Trees.Generic_Keys;
- pragma Elaborate_All (Ada.Containers.Red_Black_Trees.Generic_Keys);
- 
- with Ada.Containers.Red_Black_Trees.Generic_Set_Operations;
- pragma Elaborate_All (Ada.Containers.Red_Black_Trees.Generic_Set_Operations);
- 
- with System; use type System.Address;
- 
- package body Ada.Containers.Ordered_Multisets is
- 
-    pragma Warnings (Off, "variable ""Busy*"" is not referenced");
-    pragma Warnings (Off, "variable ""Lock*"" is not referenced");
-    --  See comment in Ada.Containers.Helpers
- 
-    -----------------------------
-    -- 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_Access) return Color_Type;
-    pragma Inline (Color);
- 
-    function Left (Node : Node_Access) return Node_Access;
-    pragma Inline (Left);
- 
-    function Parent (Node : Node_Access) return Node_Access;
-    pragma Inline (Parent);
- 
-    function Right (Node : Node_Access) return Node_Access;
-    pragma Inline (Right);
- 
-    procedure Set_Parent (Node : Node_Access; Parent : Node_Access);
-    pragma Inline (Set_Parent);
- 
-    procedure Set_Left (Node : Node_Access; Left : Node_Access);
-    pragma Inline (Set_Left);
- 
-    procedure Set_Right (Node : Node_Access; Right : Node_Access);
-    pragma Inline (Set_Right);
- 
-    procedure Set_Color (Node : Node_Access; Color : Color_Type);
-    pragma Inline (Set_Color);
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    function Copy_Node (Source : Node_Access) return Node_Access;
-    pragma Inline (Copy_Node);
- 
-    procedure Free (X : in out Node_Access);
- 
-    procedure Insert_Sans_Hint
-      (Tree     : in out Tree_Type;
-       New_Item : Element_Type;
-       Node     : out Node_Access);
- 
-    procedure Insert_With_Hint
-      (Dst_Tree : in out Tree_Type;
-       Dst_Hint : Node_Access;
-       Src_Node : Node_Access;
-       Dst_Node : out Node_Access);
- 
-    function Is_Equal_Node_Node (L, R : Node_Access) return Boolean;
-    pragma Inline (Is_Equal_Node_Node);
- 
-    function Is_Greater_Element_Node
-      (Left  : Element_Type;
-       Right : Node_Access) return Boolean;
-    pragma Inline (Is_Greater_Element_Node);
- 
-    function Is_Less_Element_Node
-      (Left  : Element_Type;
-       Right : Node_Access) return Boolean;
-    pragma Inline (Is_Less_Element_Node);
- 
-    function Is_Less_Node_Node (L, R : Node_Access) return Boolean;
-    pragma Inline (Is_Less_Node_Node);
- 
-    procedure Replace_Element
-      (Tree : in out Tree_Type;
-       Node : Node_Access;
-       Item : Element_Type);
- 
-    --------------------------
-    -- Local Instantiations --
-    --------------------------
- 
-    package Tree_Operations is
-      new Red_Black_Trees.Generic_Operations (Tree_Types);
- 
-    procedure Delete_Tree is
-      new Tree_Operations.Generic_Delete_Tree (Free);
- 
-    function Copy_Tree is
-      new Tree_Operations.Generic_Copy_Tree (Copy_Node, Delete_Tree);
- 
-    use Tree_Operations;
- 
-    function Is_Equal is
-      new Tree_Operations.Generic_Equal (Is_Equal_Node_Node);
- 
-    package Element_Keys is
-      new Red_Black_Trees.Generic_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 Generic_Set_Operations
-        (Tree_Operations  => Tree_Operations,
-         Insert_With_Hint => Insert_With_Hint,
-         Copy_Tree        => Copy_Tree,
-         Delete_Tree      => Delete_Tree,
-         Is_Less          => Is_Less_Node_Node,
-         Free             => Free);
- 
-    ---------
-    -- "<" --
-    ---------
- 
-    function "<" (Left, Right : Cursor) return Boolean is
-    begin
-       if Left.Node = null then
-          raise Constraint_Error with "Left cursor equals No_Element";
-       end if;
- 
-       if Right.Node = null then
-          raise Constraint_Error with "Right cursor equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Left.Container.Tree, Left.Node),
-                      "bad Left cursor in ""<""");
- 
-       pragma Assert (Vet (Right.Container.Tree, Right.Node),
-                      "bad Right cursor in ""<""");
- 
-       return Left.Node.Element < Right.Node.Element;
-    end "<";
- 
-    function "<" (Left : Cursor; Right : Element_Type)
-       return Boolean is
-    begin
-       if Left.Node = null then
-          raise Constraint_Error with "Left cursor equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Left.Container.Tree, Left.Node),
-                      "bad Left cursor in ""<""");
- 
-       return Left.Node.Element < Right;
-    end "<";
- 
-    function "<" (Left : Element_Type; Right : Cursor)
-       return Boolean is
-    begin
-       if Right.Node = null then
-          raise Constraint_Error with "Right cursor equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Right.Container.Tree, Right.Node),
-                      "bad Right cursor in ""<""");
- 
-       return Left < Right.Node.Element;
-    end "<";
- 
-    ---------
-    -- "=" --
-    ---------
- 
-    function "=" (Left, Right : Set) return Boolean is
-    begin
-       return Is_Equal (Left.Tree, Right.Tree);
-    end "=";
- 
-    ---------
-    -- ">" --
-    ---------
- 
-    function ">" (Left, Right : Cursor) return Boolean is
-    begin
-       if Left.Node = null then
-          raise Constraint_Error with "Left cursor equals No_Element";
-       end if;
- 
-       if Right.Node = null then
-          raise Constraint_Error with "Right cursor equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Left.Container.Tree, Left.Node),
-                      "bad Left cursor in "">""");
- 
-       pragma Assert (Vet (Right.Container.Tree, Right.Node),
-                      "bad Right cursor in "">""");
- 
-       --  L > R same as R < L
- 
-       return Right.Node.Element < Left.Node.Element;
-    end ">";
- 
-    function ">" (Left : Cursor; Right : Element_Type)
-       return Boolean is
-    begin
-       if Left.Node = null then
-          raise Constraint_Error with "Left cursor equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Left.Container.Tree, Left.Node),
-                      "bad Left cursor in "">""");
- 
-       return Right < Left.Node.Element;
-    end ">";
- 
-    function ">" (Left : Element_Type; Right : Cursor)
-       return Boolean is
-    begin
-       if Right.Node = null then
-          raise Constraint_Error with "Right cursor equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Right.Container.Tree, Right.Node),
-                      "bad Right cursor in "">""");
- 
-       return Right.Node.Element < Left;
-    end ">";
- 
-    ------------
-    -- Adjust --
-    ------------
- 
-    procedure Adjust is new Tree_Operations.Generic_Adjust (Copy_Tree);
- 
-    procedure Adjust (Container : in out Set) is
-    begin
-       Adjust (Container.Tree);
-    end Adjust;
- 
-    ------------
-    -- Assign --
-    ------------
- 
-    procedure Assign (Target : in out Set; Source : Set) is
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       Target.Clear;
-       Target.Union (Source);
-    end Assign;
- 
-    -------------
-    -- Ceiling --
-    -------------
- 
-    function Ceiling (Container : Set; Item : Element_Type) return Cursor is
-       Node : constant Node_Access :=
-         Element_Keys.Ceiling (Container.Tree, Item);
- 
-    begin
-       if Node = null then
-          return No_Element;
-       end if;
- 
-       return Cursor'(Container'Unrestricted_Access, Node);
-    end Ceiling;
- 
-    -----------
-    -- Clear --
-    -----------
- 
-    procedure Clear is
-       new Tree_Operations.Generic_Clear (Delete_Tree);
- 
-    procedure Clear (Container : in out Set) is
-    begin
-       Clear (Container.Tree);
-    end Clear;
- 
-    -----------
-    -- Color --
-    -----------
- 
-    function Color (Node : Node_Access) return Color_Type is
-    begin
-       return Node.Color;
-    end Color;
- 
-    ------------------------
-    -- Constant_Reference --
-    ------------------------
- 
-    function Constant_Reference
-      (Container : aliased Set;
-       Position  : Cursor) return Constant_Reference_Type
-    is
-    begin
-       if Position.Container = null then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Position.Container /= Container'Unrestricted_Access then
-          raise Program_Error with
-            "Position cursor designates wrong container";
-       end if;
- 
-       pragma Assert (Vet (Position.Container.Tree, Position.Node),
-                      "bad cursor in Constant_Reference");
- 
-       --  Note: in predefined container units, the creation of a reference
-       --  increments the busy bit of the container, and its finalization
-       --  decrements it. In the absence of control machinery, this tampering
-       --  protection is missing.
- 
-       declare
-          T : Tree_Type renames Container.Tree'Unrestricted_Access.all;
-          pragma Unreferenced (T);
-       begin
-          return R : constant Constant_Reference_Type :=
-            (Element => Position.Node.Element'Unrestricted_Access,
-             Control => (Container => Container'Unrestricted_Access))
-          do
-             null;
-          end return;
-       end;
-    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) return Set is
-    begin
-       return Target : Set do
-          Target.Assign (Source);
-       end return;
-    end Copy;
- 
-    ---------------
-    -- Copy_Node --
-    ---------------
- 
-    function Copy_Node (Source : Node_Access) return Node_Access is
-       Target : constant Node_Access :=
-         new Node_Type'(Parent  => null,
-                        Left    => null,
-                        Right   => null,
-                        Color   => Source.Color,
-                        Element => Source.Element);
-    begin
-       return Target;
-    end Copy_Node;
- 
-    ------------
-    -- Delete --
-    ------------
- 
-    procedure Delete (Container : in out Set; Item : Element_Type) is
-       Tree : Tree_Type renames Container.Tree;
-       Node : Node_Access := Element_Keys.Ceiling (Tree, Item);
-       Done : constant Node_Access := Element_Keys.Upper_Bound (Tree, Item);
-       X    : Node_Access;
- 
-    begin
-       if Node = Done then
-          raise Constraint_Error with
-            "attempt to delete element not in set";
-       end if;
- 
-       loop
-          X := Node;
-          Node := Tree_Operations.Next (Node);
-          Tree_Operations.Delete_Node_Sans_Free (Tree, X);
-          Free (X);
- 
-          exit when Node = Done;
-       end loop;
-    end Delete;
- 
-    procedure Delete (Container : in out Set; Position : in out Cursor) is
-    begin
-       if Position.Node = null then
-          raise Constraint_Error with "Position cursor equals No_Element";
-       end if;
- 
-       if Position.Container /= Container'Unrestricted_Access then
-          raise Program_Error with "Position cursor designates wrong set";
-       end if;
- 
-       pragma Assert (Vet (Container.Tree, Position.Node),
-                      "bad cursor in Delete");
- 
-       Delete_Node_Sans_Free (Container.Tree, Position.Node);
-       Free (Position.Node);
- 
-       Position.Container := null;
-    end Delete;
- 
-    ------------------
-    -- Delete_First --
-    ------------------
- 
-    procedure Delete_First (Container : in out Set) is
-       Tree : Tree_Type renames Container.Tree;
-       X    : Node_Access := Tree.First;
- 
-    begin
-       if X = null then
-          return;
-       end if;
- 
-       Tree_Operations.Delete_Node_Sans_Free (Tree, X);
-       Free (X);
-    end Delete_First;
- 
-    -----------------
-    -- Delete_Last --
-    -----------------
- 
-    procedure Delete_Last (Container : in out Set) is
-       Tree : Tree_Type renames Container.Tree;
-       X    : Node_Access := Tree.Last;
- 
-    begin
-       if X = null then
-          return;
-       end if;
- 
-       Tree_Operations.Delete_Node_Sans_Free (Tree, X);
-       Free (X);
-    end Delete_Last;
- 
-    ----------------
-    -- Difference --
-    ----------------
- 
-    procedure Difference (Target : in out Set; Source : Set) is
-    begin
-       Set_Ops.Difference (Target.Tree, Source.Tree);
-    end Difference;
- 
-    function Difference (Left, Right : Set) return Set is
-       Tree : constant Tree_Type :=
-         Set_Ops.Difference (Left.Tree, Right.Tree);
-    begin
-       return Set'(Controlled with Tree);
-    end Difference;
- 
-    -------------
-    -- Element --
-    -------------
- 
-    function Element (Position : Cursor) return Element_Type is
-    begin
-       if Position.Node = null then
-          raise Constraint_Error with "Position cursor equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Position.Container.Tree, Position.Node),
-                      "bad cursor in Element");
- 
-       return 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_Access) 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_Access) 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.Tree, Right.Tree);
-    end Equivalent_Sets;
- 
-    -------------
-    -- Exclude --
-    -------------
- 
-    procedure Exclude (Container : in out Set; Item : Element_Type) is
-       Tree : Tree_Type renames Container.Tree;
-       Node : Node_Access := Element_Keys.Ceiling (Tree, Item);
-       Done : constant Node_Access := Element_Keys.Upper_Bound (Tree, Item);
-       X    : Node_Access;
-    begin
-       while Node /= Done loop
-          X := Node;
-          Node := Tree_Operations.Next (Node);
-          Tree_Operations.Delete_Node_Sans_Free (Tree, X);
-          Free (X);
-       end loop;
-    end Exclude;
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    procedure Finalize (Object : in out Iterator) is
-    begin
-       Unbusy (Object.Container.Tree.TC);
-    end Finalize;
- 
-    ----------
-    -- Find --
-    ----------
- 
-    function Find (Container : Set; Item : Element_Type) return Cursor is
-       Node : constant Node_Access :=
-         Element_Keys.Find (Container.Tree, Item);
- 
-    begin
-       if Node = null then
-          return No_Element;
-       end if;
- 
-       return Cursor'(Container'Unrestricted_Access, Node);
-    end Find;
- 
-    -----------
-    -- First --
-    -----------
- 
-    function First (Container : Set) return Cursor is
-    begin
-       if Container.Tree.First = null then
-          return No_Element;
-       end if;
- 
-       return Cursor'(Container'Unrestricted_Access, Container.Tree.First);
-    end First;
- 
-    function First (Object : Iterator) return Cursor is
-    begin
-       --  The value of the iterator object's Node component influences the
-       --  behavior of the First (and Last) selector function.
- 
-       --  When the Node component is null, this means the iterator object was
-       --  constructed without a start expression, in which case the (forward)
-       --  iteration starts from the (logical) beginning of the entire sequence
-       --  of items (corresponding to Container.First, for a forward iterator).
- 
-       --  Otherwise, this is iteration over a partial sequence of items. When
-       --  the Node component is non-null, the iterator object was constructed
-       --  with a start expression, that specifies the position from which the
-       --  (forward) partial iteration begins.
- 
-       if Object.Node = null then
-          return Object.Container.First;
-       else
-          return Cursor'(Object.Container, Object.Node);
-       end if;
-    end First;
- 
-    -------------------
-    -- First_Element --
-    -------------------
- 
-    function First_Element (Container : Set) return Element_Type is
-    begin
-       if Container.Tree.First = null then
-          raise Constraint_Error with "set is empty";
-       end if;
- 
-       return Container.Tree.First.Element;
-    end First_Element;
- 
-    -----------
-    -- Floor --
-    -----------
- 
-    function Floor (Container : Set; Item : Element_Type) return Cursor is
-       Node : constant Node_Access :=
-         Element_Keys.Floor (Container.Tree, Item);
- 
-    begin
-       if Node = null then
-          return No_Element;
-       end if;
- 
-       return Cursor'(Container'Unrestricted_Access, Node);
-    end Floor;
- 
-    ----------
-    -- Free --
-    ----------
- 
-    procedure Free (X : in out Node_Access) is
-       procedure Deallocate is
-          new Ada.Unchecked_Deallocation (Node_Type, Node_Access);
- 
-    begin
-       if X /= null then
-          X.Parent := X;
-          X.Left := X;
-          X.Right := X;
- 
-          Deallocate (X);
-       end if;
-    end Free;
- 
-    ------------------
-    -- Generic_Keys --
-    ------------------
- 
-    package body Generic_Keys is
- 
-       -----------------------
-       -- Local Subprograms --
-       -----------------------
- 
-       function Is_Greater_Key_Node
-         (Left  : Key_Type;
-          Right : Node_Access) return Boolean;
-       pragma Inline (Is_Greater_Key_Node);
- 
-       function Is_Less_Key_Node
-         (Left  : Key_Type;
-          Right : Node_Access) return Boolean;
-       pragma Inline (Is_Less_Key_Node);
- 
-       --------------------------
-       -- Local_Instantiations --
-       --------------------------
- 
-       package Key_Keys is
-          new Red_Black_Trees.Generic_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 Node_Access :=
-            Key_Keys.Ceiling (Container.Tree, Key);
- 
-       begin
-          if Node = null then
-             return No_Element;
-          end if;
- 
-          return Cursor'(Container'Unrestricted_Access, 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
-          Tree : Tree_Type renames Container.Tree;
-          Node : Node_Access := Key_Keys.Ceiling (Tree, Key);
-          Done : constant Node_Access := Key_Keys.Upper_Bound (Tree, Key);
-          X    : Node_Access;
- 
-       begin
-          if Node = Done then
-             raise Constraint_Error with "attempt to delete key not in set";
-          end if;
- 
-          loop
-             X := Node;
-             Node := Tree_Operations.Next (Node);
-             Tree_Operations.Delete_Node_Sans_Free (Tree, X);
-             Free (X);
- 
-             exit when Node = Done;
-          end loop;
-       end Delete;
- 
-       -------------
-       -- Element --
-       -------------
- 
-       function Element (Container : Set; Key : Key_Type) return Element_Type is
-          Node : constant Node_Access := Key_Keys.Find (Container.Tree, Key);
-       begin
-          if Node = null then
-             raise Constraint_Error with "key not in set";
-          end if;
- 
-          return 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 Set; Key : Key_Type) is
-          Tree : Tree_Type renames Container.Tree;
-          Node : Node_Access := Key_Keys.Ceiling (Tree, Key);
-          Done : constant Node_Access := Key_Keys.Upper_Bound (Tree, Key);
-          X    : Node_Access;
- 
-       begin
-          while Node /= Done loop
-             X := Node;
-             Node := Tree_Operations.Next (Node);
-             Tree_Operations.Delete_Node_Sans_Free (Tree, X);
-             Free (X);
-          end loop;
-       end Exclude;
- 
-       ----------
-       -- Find --
-       ----------
- 
-       function Find (Container : Set; Key : Key_Type) return Cursor is
-          Node : constant Node_Access := Key_Keys.Find (Container.Tree, Key);
- 
-       begin
-          if Node = null then
-             return No_Element;
-          end if;
- 
-          return Cursor'(Container'Unrestricted_Access, Node);
-       end Find;
- 
-       -----------
-       -- Floor --
-       -----------
- 
-       function Floor (Container : Set; Key : Key_Type) return Cursor is
-          Node : constant Node_Access := Key_Keys.Floor (Container.Tree, Key);
- 
-       begin
-          if Node = null then
-             return No_Element;
-          end if;
- 
-          return Cursor'(Container'Unrestricted_Access, Node);
-       end Floor;
- 
-       -------------------------
-       -- Is_Greater_Key_Node --
-       -------------------------
- 
-       function Is_Greater_Key_Node
-         (Left  : Key_Type;
-          Right : Node_Access) 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_Access) return Boolean is
-       begin
-          return Left < Key (Right.Element);
-       end Is_Less_Key_Node;
- 
-       -------------
-       -- Iterate --
-       -------------
- 
-       procedure Iterate
-         (Container : Set;
-          Key       : Key_Type;
-          Process   : not null access procedure (Position : Cursor))
-       is
-          procedure Process_Node (Node : Node_Access);
-          pragma Inline (Process_Node);
- 
-          procedure Local_Iterate is
-            new Key_Keys.Generic_Iteration (Process_Node);
- 
-          ------------------
-          -- Process_Node --
-          ------------------
- 
-          procedure Process_Node (Node : Node_Access) is
-          begin
-             Process (Cursor'(Container'Unrestricted_Access, Node));
-          end Process_Node;
- 
-          T : Tree_Type renames Container.Tree'Unrestricted_Access.all;
-          Busy : With_Busy (T.TC'Unrestricted_Access);
- 
-       --  Start of processing for Iterate
- 
-       begin
-          Local_Iterate (T, Key);
-       end Iterate;
- 
-       ---------
-       -- Key --
-       ---------
- 
-       function Key (Position : Cursor) return Key_Type is
-       begin
-          if Position.Node = null then
-             raise Constraint_Error with
-               "Position cursor equals No_Element";
-          end if;
- 
-          pragma Assert (Vet (Position.Container.Tree, Position.Node),
-                         "bad cursor in Key");
- 
-          return Key (Position.Node.Element);
-       end Key;
- 
-       ---------------------
-       -- Reverse_Iterate --
-       ---------------------
- 
-       procedure Reverse_Iterate
-         (Container : Set;
-          Key       : Key_Type;
-          Process   : not null access procedure (Position : Cursor))
-       is
-          procedure Process_Node (Node : Node_Access);
-          pragma Inline (Process_Node);
- 
-          procedure Local_Reverse_Iterate is
-            new Key_Keys.Generic_Reverse_Iteration (Process_Node);
- 
-          ------------------
-          -- Process_Node --
-          ------------------
- 
-          procedure Process_Node (Node : Node_Access) is
-          begin
-             Process (Cursor'(Container'Unrestricted_Access, Node));
-          end Process_Node;
- 
-          T : Tree_Type renames Container.Tree'Unrestricted_Access.all;
-          Busy : With_Busy (T.TC'Unrestricted_Access);
- 
-       --  Start of processing for Reverse_Iterate
- 
-       begin
-          Local_Reverse_Iterate (T, Key);
-       end Reverse_Iterate;
- 
-       --------------------
-       -- Update_Element --
-       --------------------
- 
-       procedure Update_Element
-         (Container : in out Set;
-          Position  : Cursor;
-          Process   : not null access procedure (Element : in out Element_Type))
-       is
-          Tree : Tree_Type renames Container.Tree;
-          Node : constant Node_Access := Position.Node;
- 
-       begin
-          if Node = null then
-             raise Constraint_Error with
-               "Position cursor equals No_Element";
-          end if;
- 
-          if Position.Container /= Container'Unrestricted_Access then
-             raise Program_Error with
-               "Position cursor designates wrong set";
-          end if;
- 
-          pragma Assert (Vet (Tree, Node),
-                         "bad cursor in Update_Element");
- 
-          declare
-             E : Element_Type renames Node.Element;
-             K : constant Key_Type := Key (E);
-             Lock : With_Lock (Tree.TC'Unrestricted_Access);
-          begin
-             Process (E);
- 
-             if Equivalent_Keys (Left => K, Right => Key (E)) then
-                return;
-             end if;
-          end;
- 
-          --  Delete_Node checks busy-bit
- 
-          Tree_Operations.Delete_Node_Sans_Free (Tree, Node);
- 
-          Insert_New_Item : declare
-             function New_Node return Node_Access;
-             pragma Inline (New_Node);
- 
-             procedure Insert_Post is
-                new Element_Keys.Generic_Insert_Post (New_Node);
- 
-             procedure Unconditional_Insert is
-                new Element_Keys.Generic_Unconditional_Insert (Insert_Post);
- 
-             --------------
-             -- New_Node --
-             --------------
- 
-             function New_Node return Node_Access is
-             begin
-                Node.Color := Red_Black_Trees.Red;
-                Node.Parent := null;
-                Node.Left := null;
-                Node.Right := null;
- 
-                return Node;
-             end New_Node;
- 
-             Result : Node_Access;
- 
-          --  Start of processing for Insert_New_Item
- 
-          begin
-             Unconditional_Insert
-               (Tree => Tree,
-                Key  => Node.Element,
-                Node => Result);
- 
-             pragma Assert (Result = Node);
-          end Insert_New_Item;
-       end Update_Element;
- 
-    end Generic_Keys;
- 
-    -----------------
-    -- Has_Element --
-    -----------------
- 
-    function Has_Element (Position : Cursor) return Boolean is
-    begin
-       return Position /= No_Element;
-    end Has_Element;
- 
-    ------------
-    -- Insert --
-    ------------
- 
-    procedure Insert (Container : in out Set; New_Item : Element_Type) is
-       Position : Cursor;
-       pragma Unreferenced (Position);
-    begin
-       Insert (Container, New_Item, Position);
-    end Insert;
- 
-    procedure Insert
-      (Container : in out Set;
-       New_Item  : Element_Type;
-       Position  : out Cursor)
-    is
-    begin
-       Insert_Sans_Hint (Container.Tree, New_Item, Position.Node);
-       Position.Container := Container'Unrestricted_Access;
-    end Insert;
- 
-    ----------------------
-    -- Insert_Sans_Hint --
-    ----------------------
- 
-    procedure Insert_Sans_Hint
-      (Tree     : in out Tree_Type;
-       New_Item : Element_Type;
-       Node     : out Node_Access)
-    is
-       function New_Node return Node_Access;
-       pragma Inline (New_Node);
- 
-       procedure Insert_Post is
-         new Element_Keys.Generic_Insert_Post (New_Node);
- 
-       procedure Unconditional_Insert is
-         new Element_Keys.Generic_Unconditional_Insert (Insert_Post);
- 
-       --------------
-       -- New_Node --
-       --------------
- 
-       function New_Node return Node_Access is
-          Node : constant Node_Access :=
-            new Node_Type'(Parent  => null,
-                           Left    => null,
-                           Right   => null,
-                           Color   => Red_Black_Trees.Red,
-                           Element => New_Item);
-       begin
-          return Node;
-       end New_Node;
- 
-    --  Start of processing for Insert_Sans_Hint
- 
-    begin
-       Unconditional_Insert (Tree, New_Item, Node);
-    end Insert_Sans_Hint;
- 
-    ----------------------
-    -- Insert_With_Hint --
-    ----------------------
- 
-    procedure Insert_With_Hint
-      (Dst_Tree : in out Tree_Type;
-       Dst_Hint : Node_Access;
-       Src_Node : Node_Access;
-       Dst_Node : out Node_Access)
-    is
-       function New_Node return Node_Access;
-       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_Unconditional_Insert (Insert_Post);
- 
-       procedure Local_Insert_With_Hint is
-         new Element_Keys.Generic_Unconditional_Insert_With_Hint
-           (Insert_Post,
-            Insert_Sans_Hint);
- 
-       --------------
-       -- New_Node --
-       --------------
- 
-       function New_Node return Node_Access is
-          Node : constant Node_Access :=
-            new Node_Type'(Parent  => null,
-                           Left    => null,
-                           Right   => null,
-                           Color   => Red,
-                           Element => Src_Node.Element);
-       begin
-          return Node;
-       end New_Node;
- 
-    --  Start of processing for Insert_With_Hint
- 
-    begin
-       Local_Insert_With_Hint
-         (Dst_Tree,
-          Dst_Hint,
-          Src_Node.Element,
-          Dst_Node);
-    end Insert_With_Hint;
- 
-    ------------------
-    -- Intersection --
-    ------------------
- 
-    procedure Intersection (Target : in out Set; Source : Set) is
-    begin
-       Set_Ops.Intersection (Target.Tree, Source.Tree);
-    end Intersection;
- 
-    function Intersection (Left, Right : Set) return Set is
-       Tree : constant Tree_Type :=
-         Set_Ops.Intersection (Left.Tree, Right.Tree);
-    begin
-       return Set'(Controlled with Tree);
-    end Intersection;
- 
-    --------------
-    -- Is_Empty --
-    --------------
- 
-    function Is_Empty (Container : Set) return Boolean is
-    begin
-       return Container.Tree.Length = 0;
-    end Is_Empty;
- 
-    ------------------------
-    -- Is_Equal_Node_Node --
-    ------------------------
- 
-    function Is_Equal_Node_Node (L, R : Node_Access) return Boolean is
-    begin
-       return L.Element = R.Element;
-    end Is_Equal_Node_Node;
- 
-    -----------------------------
-    -- Is_Greater_Element_Node --
-    -----------------------------
- 
-    function Is_Greater_Element_Node
-      (Left  : Element_Type;
-       Right : Node_Access) return Boolean
-    is
-    begin
-       --  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_Access) 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_Access) 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.Is_Subset (Subset => Subset.Tree, Of_Set => Of_Set.Tree);
-    end Is_Subset;
- 
-    -------------
-    -- Iterate --
-    -------------
- 
-    procedure Iterate
-      (Container : Set;
-       Process   : not null access procedure (Position : Cursor))
-    is
-       procedure Process_Node (Node : Node_Access);
-       pragma Inline (Process_Node);
- 
-       procedure Local_Iterate is
-         new Tree_Operations.Generic_Iteration (Process_Node);
- 
-       ------------------
-       -- Process_Node --
-       ------------------
- 
-       procedure Process_Node (Node : Node_Access) is
-       begin
-          Process (Cursor'(Container'Unrestricted_Access, Node));
-       end Process_Node;
- 
-       T : Tree_Type renames Container.Tree'Unrestricted_Access.all;
-       Busy : With_Busy (T.TC'Unrestricted_Access);
- 
-    --  Start of processing for Iterate
- 
-    begin
-       Local_Iterate (T);
-    end Iterate;
- 
-    procedure Iterate
-      (Container : Set;
-       Item      : Element_Type;
-       Process   : not null access procedure (Position : Cursor))
-    is
-       procedure Process_Node (Node : Node_Access);
-       pragma Inline (Process_Node);
- 
-       procedure Local_Iterate is
-         new Element_Keys.Generic_Iteration (Process_Node);
- 
-       ------------------
-       -- Process_Node --
-       ------------------
- 
-       procedure Process_Node (Node : Node_Access) is
-       begin
-          Process (Cursor'(Container'Unrestricted_Access, Node));
-       end Process_Node;
- 
-       T : Tree_Type renames Container.Tree'Unrestricted_Access.all;
-       Busy : With_Busy (T.TC'Unrestricted_Access);
- 
-    --  Start of processing for Iterate
- 
-    begin
-       Local_Iterate (T, Item);
-    end Iterate;
- 
-    function Iterate (Container : Set)
-      return Set_Iterator_Interfaces.Reversible_Iterator'Class
-    is
-       S : constant Set_Access := Container'Unrestricted_Access;
-    begin
-       --  The value of the Node component influences the behavior of the First
-       --  and Last selector functions of the iterator object. When the Node
-       --  component is null (as is the case here), this means the iterator
-       --  object was constructed without a start expression. This is a complete
-       --  iterator, meaning that the iteration starts from the (logical)
-       --  beginning of the sequence of items.
- 
-       --  Note: For a forward iterator, Container.First is the beginning, and
-       --  for a reverse iterator, Container.Last is the beginning.
- 
-       return It : constant Iterator := (Limited_Controlled with S, null) do
-          Busy (S.Tree.TC);
-       end return;
-    end Iterate;
- 
-    function Iterate (Container : Set; Start : Cursor)
-      return Set_Iterator_Interfaces.Reversible_Iterator'Class
-    is
-       S : constant Set_Access := Container'Unrestricted_Access;
-    begin
-       --  It was formerly the case that when Start = No_Element, the partial
-       --  iterator was defined to behave the same as for a complete iterator,
-       --  and iterate over the entire sequence of items. However, those
-       --  semantics were unintuitive and arguably error-prone (it is too easy
-       --  to accidentally create an endless loop), and so they were changed,
-       --  per the ARG meeting in Denver on 2011/11. However, there was no
-       --  consensus about what positive meaning this corner case should have,
-       --  and so it was decided to simply raise an exception. This does imply,
-       --  however, that it is not possible to use a partial iterator to specify
-       --  an empty sequence of items.
- 
-       if Start = No_Element then
-          raise Constraint_Error with
-            "Start position for iterator equals No_Element";
-       end if;
- 
-       if Start.Container /= Container'Unrestricted_Access then
-          raise Program_Error with
-            "Start cursor of Iterate designates wrong set";
-       end if;
- 
-       pragma Assert (Vet (Container.Tree, Start.Node),
-                      "Start cursor of Iterate is bad");
- 
-       --  The value of the Node component influences the behavior of the First
-       --  and Last selector functions of the iterator object. When the Node
-       --  component is non-null (as is the case here), it means that this is a
-       --  partial iteration, over a subset of the complete sequence of
-       --  items. The iterator object was constructed with a start expression,
-       --  indicating the position from which the iteration begins. Note that
-       --  the start position has the same value irrespective of whether this is
-       --  a forward or reverse iteration.
- 
-       return It : constant Iterator :=
-         (Limited_Controlled with S, Start.Node)
-       do
-          Busy (S.Tree.TC);
-       end return;
-    end Iterate;
- 
-    ----------
-    -- Last --
-    ----------
- 
-    function Last (Container : Set) return Cursor is
-    begin
-       if Container.Tree.Last = null then
-          return No_Element;
-       end if;
- 
-       return Cursor'(Container'Unrestricted_Access, Container.Tree.Last);
-    end Last;
- 
-    function Last (Object : Iterator) return Cursor is
-    begin
-       --  The value of the iterator object's Node component influences the
-       --  behavior of the Last (and First) selector function.
- 
-       --  When the Node component is null, this means the iterator object was
-       --  constructed without a start expression, in which case the (reverse)
-       --  iteration starts from the (logical) beginning of the entire sequence
-       --  (corresponding to Container.Last, for a reverse iterator).
- 
-       --  Otherwise, this is iteration over a partial sequence of items. When
-       --  the Node component is non-null, the iterator object was constructed
-       --  with a start expression, that specifies the position from which the
-       --  (reverse) partial iteration begins.
- 
-       if Object.Node = null then
-          return Object.Container.Last;
-       else
-          return Cursor'(Object.Container, Object.Node);
-       end if;
-    end Last;
- 
-    ------------------
-    -- Last_Element --
-    ------------------
- 
-    function Last_Element (Container : Set) return Element_Type is
-    begin
-       if Container.Tree.Last = null then
-          raise Constraint_Error with "set is empty";
-       end if;
- 
-       return Container.Tree.Last.Element;
-    end Last_Element;
- 
-    ----------
-    -- Left --
-    ----------
- 
-    function Left (Node : Node_Access) return Node_Access is
-    begin
-       return Node.Left;
-    end Left;
- 
-    ------------
-    -- Length --
-    ------------
- 
-    function Length (Container : Set) return Count_Type is
-    begin
-       return Container.Tree.Length;
-    end Length;
- 
-    ----------
-    -- Move --
-    ----------
- 
-    procedure Move is
-       new Tree_Operations.Generic_Move (Clear);
- 
-    procedure Move (Target : in out Set; Source : in out Set) is
-    begin
-       Move (Target => Target.Tree, Source => Source.Tree);
-    end Move;
- 
-    ----------
-    -- Next --
-    ----------
- 
-    procedure Next (Position : in out Cursor)
-    is
-    begin
-       Position := Next (Position);
-    end Next;
- 
-    function Next (Position : Cursor) return Cursor is
-    begin
-       if Position = No_Element then
-          return No_Element;
-       end if;
- 
-       pragma Assert (Vet (Position.Container.Tree, Position.Node),
-                      "bad cursor in Next");
- 
-       declare
-          Node : constant Node_Access := Tree_Operations.Next (Position.Node);
-       begin
-          if Node = null then
-             return No_Element;
-          end if;
- 
-          return Cursor'(Position.Container, Node);
-       end;
-    end Next;
- 
-    function Next (Object : Iterator; Position : Cursor) return Cursor is
-    begin
-       if Position.Container = null then
-          return No_Element;
-       end if;
- 
-       if Position.Container /= Object.Container then
-          raise Program_Error with
-            "Position cursor of Next designates wrong set";
-       end if;
- 
-       return Next (Position);
-    end Next;
- 
-    -------------
-    -- Overlap --
-    -------------
- 
-    function Overlap (Left, Right : Set) return Boolean is
-    begin
-       return Set_Ops.Overlap (Left.Tree, Right.Tree);
-    end Overlap;
- 
-    ------------
-    -- Parent --
-    ------------
- 
-    function Parent (Node : Node_Access) return Node_Access is
-    begin
-       return Node.Parent;
-    end Parent;
- 
-    --------------
-    -- Previous --
-    --------------
- 
-    procedure Previous (Position : in out Cursor)
-    is
-    begin
-       Position := Previous (Position);
-    end Previous;
- 
-    function Previous (Position : Cursor) return Cursor is
-    begin
-       if Position = No_Element then
-          return No_Element;
-       end if;
- 
-       pragma Assert (Vet (Position.Container.Tree, Position.Node),
-                      "bad cursor in Previous");
- 
-       declare
-          Node : constant Node_Access :=
-            Tree_Operations.Previous (Position.Node);
-       begin
-          return (if Node = null then No_Element
-                  else Cursor'(Position.Container, Node));
-       end;
-    end Previous;
- 
-    function Previous (Object : Iterator; Position : Cursor) return Cursor is
-    begin
-       if Position.Container = null then
-          return No_Element;
-       end if;
- 
-       if Position.Container /= Object.Container then
-          raise Program_Error with
-            "Position cursor of Previous designates wrong set";
-       end if;
- 
-       return Previous (Position);
-    end Previous;
- 
-    -------------------
-    -- Query_Element --
-    -------------------
- 
-    procedure Query_Element
-      (Position : Cursor;
-       Process  : not null access procedure (Element : Element_Type))
-    is
-    begin
-       if Position.Node = null then
-          raise Constraint_Error with "Position cursor equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Position.Container.Tree, Position.Node),
-                      "bad cursor in Query_Element");
- 
-       declare
-          T : Tree_Type renames Position.Container.Tree;
-          Lock : With_Lock (T.TC'Unrestricted_Access);
-       begin
-          Process (Position.Node.Element);
-       end;
-    end Query_Element;
- 
-    ----------
-    -- Read --
-    ----------
- 
-    procedure Read
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : out Set)
-    is
-       function Read_Node
-         (Stream : not null access Root_Stream_Type'Class) return Node_Access;
-       pragma Inline (Read_Node);
- 
-       procedure Read is
-          new Tree_Operations.Generic_Read (Clear, Read_Node);
- 
-       ---------------
-       -- Read_Node --
-       ---------------
- 
-       function Read_Node
-         (Stream : not null access Root_Stream_Type'Class) return Node_Access
-       is
-          Node : Node_Access := new Node_Type;
-       begin
-          Element_Type'Read (Stream, Node.Element);
-          return Node;
-       exception
-          when others =>
-             Free (Node);  --  Note that Free deallocates elem too
-             raise;
-       end Read_Node;
- 
-    --  Start of processing for Read
- 
-    begin
-       Read (Stream, Container.Tree);
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Cursor)
-    is
-    begin
-       raise Program_Error with "attempt to stream set cursor";
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Constant_Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Read;
- 
-    ---------------------
-    -- Replace_Element --
-    ---------------------
- 
-    procedure Replace_Element
-      (Tree : in out Tree_Type;
-       Node : Node_Access;
-       Item : Element_Type)
-    is
-    begin
-       if Item < Node.Element
-         or else Node.Element < Item
-       then
-          null;
-       else
-          TE_Check (Tree.TC);
- 
-          Node.Element := Item;
-          return;
-       end if;
- 
-       Tree_Operations.Delete_Node_Sans_Free (Tree, Node);  -- Checks busy-bit
- 
-       Insert_New_Item : declare
-          function New_Node return Node_Access;
-          pragma Inline (New_Node);
- 
-          procedure Insert_Post is
-             new Element_Keys.Generic_Insert_Post (New_Node);
- 
-          procedure Unconditional_Insert is
-             new Element_Keys.Generic_Unconditional_Insert (Insert_Post);
- 
-          --------------
-          -- New_Node --
-          --------------
- 
-          function New_Node return Node_Access is
-          begin
-             Node.Element := Item;
-             Node.Color := Red_Black_Trees.Red;
-             Node.Parent := null;
-             Node.Left := null;
-             Node.Right := null;
- 
-             return Node;
-          end New_Node;
- 
-          Result : Node_Access;
- 
-       --  Start of processing for Insert_New_Item
- 
-       begin
-          Unconditional_Insert
-            (Tree => Tree,
-             Key  => Item,
-             Node => Result);
- 
-          pragma Assert (Result = Node);
-       end Insert_New_Item;
-    end Replace_Element;
- 
-    procedure Replace_Element
-      (Container : in out Set;
-       Position  : Cursor;
-       New_Item  : Element_Type)
-    is
-    begin
-       if Position.Node = null then
-          raise Constraint_Error with
-            "Position cursor equals No_Element";
-       end if;
- 
-       if Position.Container /= Container'Unrestricted_Access then
-          raise Program_Error with
-            "Position cursor designates wrong set";
-       end if;
- 
-       pragma Assert (Vet (Container.Tree, Position.Node),
-                      "bad cursor in Replace_Element");
- 
-       Replace_Element (Container.Tree, Position.Node, New_Item);
-    end Replace_Element;
- 
-    ---------------------
-    -- Reverse_Iterate --
-    ---------------------
- 
-    procedure Reverse_Iterate
-      (Container : Set;
-       Process   : not null access procedure (Position : Cursor))
-    is
-       procedure Process_Node (Node : Node_Access);
-       pragma Inline (Process_Node);
- 
-       procedure Local_Reverse_Iterate is
-         new Tree_Operations.Generic_Reverse_Iteration (Process_Node);
- 
-       ------------------
-       -- Process_Node --
-       ------------------
- 
-       procedure Process_Node (Node : Node_Access) is
-       begin
-          Process (Cursor'(Container'Unrestricted_Access, Node));
-       end Process_Node;
- 
-       T : Tree_Type renames Container.Tree'Unrestricted_Access.all;
-       Busy : With_Busy (T.TC'Unrestricted_Access);
- 
-    --  Start of processing for Reverse_Iterate
- 
-    begin
-       Local_Reverse_Iterate (T);
-    end Reverse_Iterate;
- 
-    procedure Reverse_Iterate
-      (Container : Set;
-       Item      : Element_Type;
-       Process   : not null access procedure (Position : Cursor))
-    is
-       procedure Process_Node (Node : Node_Access);
-       pragma Inline (Process_Node);
- 
-       procedure Local_Reverse_Iterate is
-          new Element_Keys.Generic_Reverse_Iteration (Process_Node);
- 
-       ------------------
-       -- Process_Node --
-       ------------------
- 
-       procedure Process_Node (Node : Node_Access) is
-       begin
-          Process (Cursor'(Container'Unrestricted_Access, Node));
-       end Process_Node;
- 
-       T : Tree_Type renames Container.Tree'Unrestricted_Access.all;
-       Busy : With_Busy (T.TC'Unrestricted_Access);
- 
-    --  Start of processing for Reverse_Iterate
- 
-    begin
-       Local_Reverse_Iterate (T, Item);
-    end Reverse_Iterate;
- 
-    -----------
-    -- Right --
-    -----------
- 
-    function Right (Node : Node_Access) return Node_Access is
-    begin
-       return Node.Right;
-    end Right;
- 
-    ---------------
-    -- Set_Color --
-    ---------------
- 
-    procedure Set_Color (Node : Node_Access; Color : Color_Type) is
-    begin
-       Node.Color := Color;
-    end Set_Color;
- 
-    --------------
-    -- Set_Left --
-    --------------
- 
-    procedure Set_Left (Node : Node_Access; Left : Node_Access) is
-    begin
-       Node.Left := Left;
-    end Set_Left;
- 
-    ----------------
-    -- Set_Parent --
-    ----------------
- 
-    procedure Set_Parent (Node : Node_Access; Parent : Node_Access) is
-    begin
-       Node.Parent := Parent;
-    end Set_Parent;
- 
-    ---------------
-    -- Set_Right --
-    ---------------
- 
-    procedure Set_Right (Node : Node_Access; Right : Node_Access) is
-    begin
-       Node.Right := Right;
-    end Set_Right;
- 
-    --------------------------
-    -- Symmetric_Difference --
-    --------------------------
- 
-    procedure Symmetric_Difference (Target : in out Set; Source : Set) is
-    begin
-       Set_Ops.Symmetric_Difference (Target.Tree, Source.Tree);
-    end Symmetric_Difference;
- 
-    function Symmetric_Difference (Left, Right : Set) return Set is
-       Tree : constant Tree_Type :=
-         Set_Ops.Symmetric_Difference (Left.Tree, Right.Tree);
-    begin
-       return Set'(Controlled with Tree);
-    end Symmetric_Difference;
- 
-    ------------
-    -- To_Set --
-    ------------
- 
-    function To_Set (New_Item : Element_Type) return Set is
-       Tree : Tree_Type;
-       Node : Node_Access;
-       pragma Unreferenced (Node);
-    begin
-       Insert_Sans_Hint (Tree, New_Item, Node);
-       return Set'(Controlled with Tree);
-    end To_Set;
- 
-    -----------
-    -- Union --
-    -----------
- 
-    procedure Union (Target : in out Set; Source : Set) is
-    begin
-       Set_Ops.Union (Target.Tree, Source.Tree);
-    end Union;
- 
-    function Union (Left, Right : Set) return Set is
-       Tree : constant Tree_Type := Set_Ops.Union (Left.Tree, Right.Tree);
-    begin
-       return Set'(Controlled with Tree);
-    end Union;
- 
-    -----------
-    -- Write --
-    -----------
- 
-    procedure Write
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : Set)
-    is
-       procedure Write_Node
-         (Stream : not null access Root_Stream_Type'Class;
-          Node   : Node_Access);
-       pragma Inline (Write_Node);
- 
-       procedure Write is
-          new Tree_Operations.Generic_Write (Write_Node);
- 
-       ----------------
-       -- Write_Node --
-       ----------------
- 
-       procedure Write_Node
-         (Stream : not null access Root_Stream_Type'Class;
-          Node   : Node_Access)
-       is
-       begin
-          Element_Type'Write (Stream, Node.Element);
-       end Write_Node;
- 
-    --  Start of processing for Write
- 
-    begin
-       Write (Stream, Container.Tree);
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Cursor)
-    is
-    begin
-       raise Program_Error with "attempt to stream set cursor";
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Constant_Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Write;
- end Ada.Containers.Ordered_Multisets;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-coormu.ads gcc-8.1.0/gcc/ada/a-coormu.ads
*** gcc-7.3.0/gcc/ada/a-coormu.ads	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-coormu.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,570 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --     A D A . C O N T A I N E R S . O R D E R E D _ M U L T I S E T S      --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.                  --
- ------------------------------------------------------------------------------
- 
- --  The ordered multiset container is similar to the ordered set, but with the
- --  difference that multiple equivalent elements are allowed. It also provides
- --  additional operations, to iterate over items that are equivalent.
- 
- private with Ada.Containers.Red_Black_Trees;
- private with Ada.Finalization;
- private with Ada.Streams;
- with Ada.Iterator_Interfaces;
- 
- generic
-    type Element_Type is private;
- 
-    with function "<" (Left, Right : Element_Type) return Boolean is <>;
-    with function "=" (Left, Right : Element_Type) return Boolean is <>;
- 
- package Ada.Containers.Ordered_Multisets is
-    pragma Annotate (CodePeer, Skip_Analysis);
-    pragma Preelaborate;
-    pragma Remote_Types;
- 
-    function Equivalent_Elements (Left, Right : Element_Type) return Boolean;
-    --  Returns False if Left is less than Right, or Right is less than Left;
-    --  otherwise, it returns True.
- 
-    type Set is tagged private
-    with Constant_Indexing => Constant_Reference,
-         Default_Iterator  => Iterate,
-         Iterator_Element  => Element_Type;
- 
-    pragma Preelaborable_Initialization (Set);
- 
-    type Cursor is private;
-    pragma Preelaborable_Initialization (Cursor);
- 
-    Empty_Set : constant Set;
-    --  The default value for set objects declared without an explicit
-    --  initialization expression.
- 
-    No_Element : constant Cursor;
-    --  The default value for cursor objects declared without an explicit
-    --  initialization expression.
- 
-    function Has_Element (Position : Cursor) return Boolean;
-    --  Equivalent to Position /= No_Element
- 
-    package Set_Iterator_Interfaces is new
-      Ada.Iterator_Interfaces (Cursor, Has_Element);
- 
-    function "=" (Left, Right : Set) return Boolean;
-    --  If Left denotes the same set object as Right, then equality returns
-    --  True. If the length of Left is different from the length of Right, then
-    --  it returns False. Otherwise, set equality iterates over Left and Right,
-    --  comparing the element of Left to the element of Right using the equality
-    --  operator for elements. If the elements compare False, then the iteration
-    --  terminates and set equality returns False. Otherwise, if all elements
-    --  compare True, then set equality returns True.
- 
-    function Equivalent_Sets (Left, Right : Set) return Boolean;
-    --  Similar to set equality, but with the difference that elements are
-    --  compared for equivalence instead of equality.
- 
-    function To_Set (New_Item : Element_Type) return Set;
-    --  Constructs a set object with New_Item as its single element
- 
-    function Length (Container : Set) return Count_Type;
-    --  Returns the total number of elements in Container
- 
-    function Is_Empty (Container : Set) return Boolean;
-    --  Returns True if Container.Length is 0
- 
-    procedure Clear (Container : in out Set);
-    --  Deletes all elements from Container
- 
-    function Element (Position : Cursor) return Element_Type;
-    --  If Position equals No_Element, then Constraint_Error is raised.
-    --  Otherwise, function Element returns the element designed by Position.
- 
-    procedure Replace_Element
-      (Container : in out Set;
-       Position  : Cursor;
-       New_Item  : Element_Type);
-    --  If Position equals No_Element, then Constraint_Error is raised. If
-    --  Position is associated with a set different from Container, then
-    --  Program_Error is raised. If New_Item is equivalent to the element
-    --  designated by Position, then if Container is locked (element tampering
-    --  has been attempted), Program_Error is raised; otherwise, the element
-    --  designated by Position is assigned the value of New_Item. If New_Item is
-    --  not equivalent to the element designated by Position, then if the
-    --  container is busy (cursor tampering has been attempted), Program_Error
-    --  is raised; otherwise, the element designed by Position is assigned the
-    --  value of New_Item, and the node is moved to its new position (in
-    --  canonical insertion order).
- 
-    procedure Query_Element
-      (Position : Cursor;
-       Process  : not null access procedure (Element : Element_Type));
-    --  If Position equals No_Element, then Constraint_Error is
-    --  raised. Otherwise, it calls Process with the element designated by
-    --  Position as the parameter. This call locks the container, so attempts to
-    --  change the value of the element while Process is executing (to "tamper
-    --  with elements") will raise Program_Error.
- 
-    type Constant_Reference_Type
-      (Element : not null access constant Element_Type) is private
-         with Implicit_Dereference => Element;
- 
-    function Constant_Reference
-      (Container : aliased Set;
-       Position  : Cursor) return Constant_Reference_Type;
-    pragma Inline (Constant_Reference);
- 
-    procedure Assign (Target : in out Set; Source : Set);
- 
-    function Copy (Source : Set) return Set;
- 
-    procedure Move (Target : in out Set; Source : in out Set);
-    --  If Target denotes the same object as Source, the operation does
-    --  nothing. If either Target or Source is busy (cursor tampering is
-    --  attempted), then it raises Program_Error. Otherwise, Target is cleared,
-    --  and the nodes from Source are moved (not copied) to Target (so Source
-    --  becomes empty).
- 
-    procedure Insert
-      (Container : in out Set;
-       New_Item  : Element_Type;
-       Position  : out Cursor);
-    --  Insert adds New_Item to Container, and returns cursor Position
-    --  designating the newly inserted node. The node is inserted after any
-    --  existing elements less than or equivalent to New_Item (and before any
-    --  elements greater than New_Item). Note that the issue of where the new
-    --  node is inserted relative to equivalent elements does not arise for
-    --  unique-key containers, since in that case the insertion would simply
-    --  fail. For a multiple-key container (the case here), insertion always
-    --  succeeds, and is defined such that the new item is positioned after any
-    --  equivalent elements already in the container.
- 
-    procedure Insert
-      (Container : in out Set;
-       New_Item  : Element_Type);
-    --  Inserts New_Item in Container, but does not return a cursor designating
-    --  the newly-inserted node.
- 
- --  TODO: include Replace too???
- --
- --     procedure Replace
- --       (Container : in out Set;
- --        New_Item  : Element_Type);
- 
-    procedure Exclude
-      (Container : in out Set;
-       Item      : Element_Type);
-    --  Deletes from Container all of the elements equivalent to Item
- 
-    procedure Delete
-      (Container : in out Set;
-       Item      : Element_Type);
-    --  Deletes from Container all of the elements equivalent to Item. If there
-    --  are no elements equivalent to Item, then it raises Constraint_Error.
- 
-    procedure Delete
-      (Container : in out Set;
-       Position  : in out Cursor);
-    --  If Position equals No_Element, then Constraint_Error is raised. If
-    --  Position is associated with a set different from Container, then
-    --  Program_Error is raised. Otherwise, the node designated by Position is
-    --  removed from Container, and Position is set to No_Element.
- 
-    procedure Delete_First (Container : in out Set);
-    --  Removes the first node from Container
- 
-    procedure Delete_Last (Container : in out Set);
-    --  Removes the last node from Container
- 
-    procedure Union (Target : in out Set; Source : Set);
-    --  If Target is busy (cursor tampering is attempted), the Program_Error is
-    --  raised. Otherwise, it inserts each element of Source into
-    --  Target. Elements are inserted in the canonical order for multisets, such
-    --  that the elements from Source are inserted after equivalent elements
-    --  already in Target.
- 
-    function Union (Left, Right : Set) return Set;
-    --  Returns a set comprising the all elements from Left and all of the
-    --  elements from Right. The elements from Right follow the equivalent
-    --  elements from Left.
- 
-    function "or" (Left, Right : Set) return Set renames Union;
- 
-    procedure Intersection (Target : in out Set; Source : Set);
-    --  If Target denotes the same object as Source, the operation does
-    --  nothing. If Target is busy (cursor tampering is attempted),
-    --  Program_Error is raised. Otherwise, the elements in Target having no
-    --  equivalent element in Source are deleted from Target.
- 
-    function Intersection (Left, Right : Set) return Set;
-    --  If Left denotes the same object as Right, then the function returns a
-    --  copy of Left. Otherwise, it returns a set comprising the equivalent
-    --  elements from both Left and Right. Items are inserted in the result set
-    --  in canonical order, such that the elements from Left precede the
-    --  equivalent elements from Right.
- 
-    function "and" (Left, Right : Set) return Set renames Intersection;
- 
-    procedure Difference (Target : in out Set; Source : Set);
-    --  If Target is busy (cursor tampering is attempted), then Program_Error is
-    --  raised. Otherwise, the elements in Target that are equivalent to
-    --  elements in Source are deleted from Target.
- 
-    function Difference (Left, Right : Set) return Set;
-    --  Returns a set comprising the elements from Left that have no equivalent
-    --  element in Right.
- 
-    function "-" (Left, Right : Set) return Set renames Difference;
- 
-    procedure Symmetric_Difference (Target : in out Set; Source : Set);
-    --  If Target is busy, then Program_Error is raised. Otherwise, the elements
-    --  in Target equivalent to elements in Source are deleted from Target, and
-    --  the elements in Source not equivalent to elements in Target are inserted
-    --  into Target.
- 
-    function Symmetric_Difference (Left, Right : Set) return Set;
-    --  Returns a set comprising the union of the elements from Target having no
-    --  equivalent in Source, and the elements of Source having no equivalent in
-    --  Target.
- 
-    function "xor" (Left, Right : Set) return Set renames Symmetric_Difference;
- 
-    function Overlap (Left, Right : Set) return Boolean;
-    --  Returns True if Left contains an element equivalent to an element of
-    --  Right.
- 
-    function Is_Subset (Subset : Set; Of_Set : Set) return Boolean;
-    --  Returns True if every element in Subset has an equivalent element in
-    --  Of_Set.
- 
-    function First (Container : Set) return Cursor;
-    --  If Container is empty, the function returns No_Element. Otherwise, it
-    --  returns a cursor designating the smallest element.
- 
-    function First_Element (Container : Set) return Element_Type;
-    --  Equivalent to Element (First (Container))
- 
-    function Last (Container : Set) return Cursor;
-    --  If Container is empty, the function returns No_Element. Otherwise, it
-    --  returns a cursor designating the largest element.
- 
-    function Last_Element (Container : Set) return Element_Type;
-    --  Equivalent to Element (Last (Container))
- 
-    function Next (Position : Cursor) return Cursor;
-    --  If Position equals No_Element or Last (Container), the function returns
-    --  No_Element. Otherwise, it returns a cursor designating the node that
-    --  immediately follows (as per the insertion order) the node designated by
-    --  Position.
- 
-    procedure Next (Position : in out Cursor);
-    --  Equivalent to Position := Next (Position)
- 
-    function Previous (Position : Cursor) return Cursor;
-    --  If Position equals No_Element or First (Container), the function returns
-    --  No_Element. Otherwise, it returns a cursor designating the node that
-    --  immediately precedes (as per the insertion order) the node designated by
-    --  Position.
- 
-    procedure Previous (Position : in out Cursor);
-    --  Equivalent to Position := Previous (Position)
- 
-    function Find (Container : Set; Item : Element_Type) return Cursor;
-    --  Returns a cursor designating the first element in Container equivalent
-    --  to Item. If there is no equivalent element, it returns No_Element.
- 
-    function Floor (Container : Set; Item : Element_Type) return Cursor;
-    --  If Container is empty, the function returns No_Element. If Item is
-    --  equivalent to elements in Container, it returns a cursor designating the
-    --  first equivalent element. Otherwise, it returns a cursor designating the
-    --  largest element less than Item, or No_Element if all elements are
-    --  greater than Item.
- 
-    function Ceiling (Container : Set; Item : Element_Type) return Cursor;
-    --  If Container is empty, the function returns No_Element. If Item is
-    --  equivalent to elements of Container, it returns a cursor designating the
-    --  last equivalent element. Otherwise, it returns a cursor designating the
-    --  smallest element greater than Item, or No_Element if all elements are
-    --  less than Item.
- 
-    function Contains (Container : Set; Item : Element_Type) return Boolean;
-    --  Equivalent to Container.Find (Item) /= No_Element
- 
-    function "<" (Left, Right : Cursor) return Boolean;
-    --  Equivalent to Element (Left) < Element (Right)
- 
-    function ">" (Left, Right : Cursor) return Boolean;
-    --  Equivalent to Element (Right) < Element (Left)
- 
-    function "<" (Left : Cursor; Right : Element_Type) return Boolean;
-    --  Equivalent to Element (Left) < Right
- 
-    function ">" (Left : Cursor; Right : Element_Type) return Boolean;
-    --  Equivalent to Right < Element (Left)
- 
-    function "<" (Left : Element_Type; Right : Cursor) return Boolean;
-    --  Equivalent to Left < Element (Right)
- 
-    function ">" (Left : Element_Type; Right : Cursor) return Boolean;
-    --  Equivalent to Element (Right) < Left
- 
-    procedure Iterate
-      (Container : Set;
-       Process   : not null access procedure (Position : Cursor));
-    --  Calls Process with a cursor designating each element of Container, in
-    --  order from Container.First to Container.Last.
- 
-    procedure Reverse_Iterate
-      (Container : Set;
-       Process   : not null access procedure (Position : Cursor));
-    --  Calls Process with a cursor designating each element of Container, in
-    --  order from Container.Last to Container.First.
- 
-    procedure Iterate
-      (Container : Set;
-       Item      : Element_Type;
-       Process   : not null access procedure (Position : Cursor));
-    --  Call Process with a cursor designating each element equivalent to Item,
-    --  in order from Container.Floor (Item) to Container.Ceiling (Item).
- 
-    procedure Reverse_Iterate
-      (Container : Set;
-       Item      : Element_Type;
-       Process   : not null access procedure (Position : Cursor));
-    --  Call Process with a cursor designating each element equivalent to Item,
-    --  in order from Container.Ceiling (Item) to Container.Floor (Item).
- 
-    function Iterate
-      (Container : Set)
-       return Set_Iterator_Interfaces.Reversible_Iterator'class;
- 
-    function Iterate
-      (Container : Set;
-       Start     : Cursor)
-       return Set_Iterator_Interfaces.Reversible_Iterator'class;
- 
-    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 is
- 
-       function Equivalent_Keys (Left, Right : Key_Type) return Boolean;
-       --  Returns False if Left is less than Right, or Right is less than Left;
-       --  otherwise, it returns True.
- 
-       function Key (Position : Cursor) return Key_Type;
-       --  Equivalent to Key (Element (Position))
- 
-       function Element (Container : Set; Key : Key_Type) return Element_Type;
-       --  Equivalent to Element (Find (Container, Key))
- 
-       procedure Exclude (Container : in out Set; Key : Key_Type);
-       --  Deletes from Container any elements whose key is equivalent to Key
- 
-       procedure Delete (Container : in out Set; Key : Key_Type);
-       --  Deletes from Container any elements whose key is equivalent to
-       --  Key. If there are no such elements, then it raises Constraint_Error.
- 
-       function Find (Container : Set; Key : Key_Type) return Cursor;
-       --  Returns a cursor designating the first element in Container whose key
-       --  is equivalent to Key. If there is no equivalent element, it returns
-       --  No_Element.
- 
-       function Floor (Container : Set; Key : Key_Type) return Cursor;
-       --  If Container is empty, the function returns No_Element. If Item is
-       --  equivalent to the keys of elements in Container, it returns a cursor
-       --  designating the first such element. Otherwise, it returns a cursor
-       --  designating the largest element whose key is less than Item, or
-       --  No_Element if all keys are greater than Item.
- 
-       function Ceiling (Container : Set; Key : Key_Type) return Cursor;
-       --  If Container is empty, the function returns No_Element. If Item is
-       --  equivalent to the keys of elements of Container, it returns a cursor
-       --  designating the last such element. Otherwise, it returns a cursor
-       --  designating the smallest element whose key is greater than Item, or
-       --  No_Element if all keys are less than Item.
- 
-       function Contains (Container : Set; Key : Key_Type) return Boolean;
-       --  Equivalent to Find (Container, Key) /= No_Element
- 
-       procedure Update_Element  -- Update_Element_Preserving_Key ???
-         (Container : in out Set;
-          Position  : Cursor;
-          Process   : not null access
-                        procedure (Element : in out Element_Type));
-       --  If Position equals No_Element, then Constraint_Error is raised. If
-       --  Position is associated with a set object different from Container,
-       --  then Program_Error is raised. Otherwise, it makes a copy of the key
-       --  of the element designated by Position, and then calls Process with
-       --  the element as the parameter. Update_Element then compares the key
-       --  value obtained before calling Process to the key value obtained from
-       --  the element after calling Process. If the keys are equivalent then
-       --  the operation terminates. If Container is busy (cursor tampering has
-       --  been attempted), then Program_Error is raised. Otherwise, the node
-       --  is moved to its new position (in canonical order).
- 
-       procedure Iterate
-         (Container : Set;
-          Key       : Key_Type;
-          Process   : not null access procedure (Position : Cursor));
-       --  Call Process with a cursor designating each element equivalent to
-       --  Key, in order from Floor (Container, Key) to
-       --  Ceiling (Container, Key).
- 
-       procedure Reverse_Iterate
-         (Container : Set;
-          Key       : Key_Type;
-          Process   : not null access procedure (Position : Cursor));
-       --  Call Process with a cursor designating each element equivalent to
-       --  Key, in order from Ceiling (Container, Key) to
-       --  Floor (Container, Key).
- 
-    end Generic_Keys;
- 
- private
- 
-    pragma Inline (Next);
-    pragma Inline (Previous);
- 
-    type Node_Type;
-    type Node_Access is access Node_Type;
- 
-    type Node_Type is limited record
-       Parent  : Node_Access;
-       Left    : Node_Access;
-       Right   : Node_Access;
-       Color   : Red_Black_Trees.Color_Type := Red_Black_Trees.Red;
-       Element : Element_Type;
-    end record;
- 
-    package Tree_Types is
-      new Red_Black_Trees.Generic_Tree_Types (Node_Type, Node_Access);
- 
-    type Set is new Ada.Finalization.Controlled with record
-       Tree : Tree_Types.Tree_Type;
-    end record;
- 
-    overriding procedure Adjust (Container : in out Set);
- 
-    overriding procedure Finalize (Container : in out Set) renames Clear;
- 
-    use Red_Black_Trees;
-    use Tree_Types, Tree_Types.Implementation;
-    use Ada.Finalization;
-    use Ada.Streams;
- 
-    type Set_Access is access all Set;
-    for Set_Access'Storage_Size use 0;
- 
-    --  In all predefined libraries the following type is controlled, for proper
-    --  management of tampering checks. For performance reason we omit this
-    --  machinery for multisets, which are used in a number of our tools.
- 
-    type Reference_Control_Type is record
-       Container : Set_Access;
-    end record;
- 
-    type Constant_Reference_Type
-      (Element : not null access constant Element_Type) is record
-       Control : Reference_Control_Type :=
-         raise Program_Error with "uninitialized reference";
-       --  The RM says, "The default initialization of an object of
-       --  type Constant_Reference_Type or Reference_Type propagates
-       --  Program_Error."
-    end record;
- 
-    type Cursor is record
-       Container : Set_Access;
-       Node      : Node_Access;
-    end record;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Cursor);
- 
-    for Cursor'Write use Write;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Cursor);
- 
-    for Cursor'Read use Read;
- 
-    No_Element : constant Cursor := Cursor'(null, null);
- 
-    procedure Write
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : Set);
- 
-    for Set'Write use Write;
- 
-    procedure Read
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : out Set);
- 
-    for Set'Read use Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Constant_Reference_Type);
- 
-    for Constant_Reference_Type'Read use Read;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Constant_Reference_Type);
- 
-    for Constant_Reference_Type'Write use Write;
- 
-    Empty_Set : constant Set := (Controlled with others => <>);
- 
-    type Iterator is new Limited_Controlled and
-      Set_Iterator_Interfaces.Reversible_Iterator with
-    record
-       Container : Set_Access;
-       Node      : Node_Access;
-    end record
-      with Disable_Controlled => not T_Check;
- 
-    overriding procedure Finalize (Object : in out Iterator);
- 
-    overriding function First (Object : Iterator) return Cursor;
-    overriding function Last  (Object : Iterator) return Cursor;
- 
-    overriding function Next
-      (Object   : Iterator;
-       Position : Cursor) return Cursor;
- 
-    overriding function Previous
-      (Object   : Iterator;
-       Position : Cursor) return Cursor;
- 
- end Ada.Containers.Ordered_Multisets;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-coorse.adb gcc-8.1.0/gcc/ada/a-coorse.adb
*** gcc-7.3.0/gcc/ada/a-coorse.adb	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-coorse.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,1999 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --           A D A . C O N T A I N E R S . O R D E R E D _ S E T S          --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 Ada.Unchecked_Deallocation;
- 
- with Ada.Containers.Helpers; use Ada.Containers.Helpers;
- 
- with Ada.Containers.Red_Black_Trees.Generic_Operations;
- pragma Elaborate_All (Ada.Containers.Red_Black_Trees.Generic_Operations);
- 
- with Ada.Containers.Red_Black_Trees.Generic_Keys;
- pragma Elaborate_All (Ada.Containers.Red_Black_Trees.Generic_Keys);
- 
- with Ada.Containers.Red_Black_Trees.Generic_Set_Operations;
- pragma Elaborate_All (Ada.Containers.Red_Black_Trees.Generic_Set_Operations);
- 
- with System; use type System.Address;
- 
- package body Ada.Containers.Ordered_Sets is
- 
-    pragma Warnings (Off, "variable ""Busy*"" is not referenced");
-    pragma Warnings (Off, "variable ""Lock*"" is not referenced");
-    --  See comment in Ada.Containers.Helpers
- 
-    ------------------------------
-    -- Access to Fields of Node --
-    ------------------------------
- 
-    --  These subprograms provide functional notation for access to fields
-    --  of a node, and procedural notation for modifying these fields.
- 
-    function Color (Node : Node_Access) return Color_Type;
-    pragma Inline (Color);
- 
-    function Left (Node : Node_Access) return Node_Access;
-    pragma Inline (Left);
- 
-    function Parent (Node : Node_Access) return Node_Access;
-    pragma Inline (Parent);
- 
-    function Right (Node : Node_Access) return Node_Access;
-    pragma Inline (Right);
- 
-    procedure Set_Color (Node : Node_Access; Color : Color_Type);
-    pragma Inline (Set_Color);
- 
-    procedure Set_Left (Node : Node_Access; Left : Node_Access);
-    pragma Inline (Set_Left);
- 
-    procedure Set_Right (Node : Node_Access; Right : Node_Access);
-    pragma Inline (Set_Right);
- 
-    procedure Set_Parent (Node : Node_Access; Parent : Node_Access);
-    pragma Inline (Set_Parent);
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    function Copy_Node (Source : Node_Access) return Node_Access;
-    pragma Inline (Copy_Node);
- 
-    procedure Free (X : in out Node_Access);
- 
-    procedure Insert_Sans_Hint
-      (Tree     : in out Tree_Type;
-       New_Item : Element_Type;
-       Node     : out Node_Access;
-       Inserted : out Boolean);
- 
-    procedure Insert_With_Hint
-      (Dst_Tree : in out Tree_Type;
-       Dst_Hint : Node_Access;
-       Src_Node : Node_Access;
-       Dst_Node : out Node_Access);
- 
-    function Is_Equal_Node_Node (L, R : Node_Access) return Boolean;
-    pragma Inline (Is_Equal_Node_Node);
- 
-    function Is_Greater_Element_Node
-      (Left  : Element_Type;
-       Right : Node_Access) return Boolean;
-    pragma Inline (Is_Greater_Element_Node);
- 
-    function Is_Less_Element_Node
-      (Left  : Element_Type;
-       Right : Node_Access) return Boolean;
-    pragma Inline (Is_Less_Element_Node);
- 
-    function Is_Less_Node_Node (L, R : Node_Access) return Boolean;
-    pragma Inline (Is_Less_Node_Node);
- 
-    procedure Replace_Element
-      (Tree : in out Tree_Type;
-       Node : Node_Access;
-       Item : Element_Type);
- 
-    --------------------------
-    -- Local Instantiations --
-    --------------------------
- 
-    package Tree_Operations is
-      new Red_Black_Trees.Generic_Operations (Tree_Types);
- 
-    procedure Delete_Tree is
-       new Tree_Operations.Generic_Delete_Tree (Free);
- 
-    function Copy_Tree is
-       new Tree_Operations.Generic_Copy_Tree (Copy_Node, Delete_Tree);
- 
-    use Tree_Operations;
- 
-    function Is_Equal is
-      new Tree_Operations.Generic_Equal (Is_Equal_Node_Node);
- 
-    package Element_Keys is
-      new Red_Black_Trees.Generic_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 Generic_Set_Operations
-       (Tree_Operations  => Tree_Operations,
-        Insert_With_Hint => Insert_With_Hint,
-        Copy_Tree        => Copy_Tree,
-        Delete_Tree      => Delete_Tree,
-        Is_Less          => Is_Less_Node_Node,
-        Free             => Free);
- 
-    ---------
-    -- "<" --
-    ---------
- 
-    function "<" (Left, Right : Cursor) return Boolean is
-    begin
-       if Checks and then Left.Node = null then
-          raise Constraint_Error with "Left cursor equals No_Element";
-       end if;
- 
-       if Checks and then Right.Node = null then
-          raise Constraint_Error with "Right cursor equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Left.Container.Tree, Left.Node),
-                      "bad Left cursor in ""<""");
- 
-       pragma Assert (Vet (Right.Container.Tree, Right.Node),
-                      "bad Right cursor in ""<""");
- 
-       return Left.Node.Element < Right.Node.Element;
-    end "<";
- 
-    function "<" (Left : Cursor; Right : Element_Type) return Boolean is
-    begin
-       if Checks and then Left.Node = null then
-          raise Constraint_Error with "Left cursor equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Left.Container.Tree, Left.Node),
-                      "bad Left cursor in ""<""");
- 
-       return Left.Node.Element < Right;
-    end "<";
- 
-    function "<" (Left : Element_Type; Right : Cursor) return Boolean is
-    begin
-       if Checks and then Right.Node = null then
-          raise Constraint_Error with "Right cursor equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Right.Container.Tree, Right.Node),
-                      "bad Right cursor in ""<""");
- 
-       return Left < Right.Node.Element;
-    end "<";
- 
-    ---------
-    -- "=" --
-    ---------
- 
-    function "=" (Left, Right : Set) return Boolean is
-    begin
-       return Is_Equal (Left.Tree, Right.Tree);
-    end "=";
- 
-    ---------
-    -- ">" --
-    ---------
- 
-    function ">" (Left, Right : Cursor) return Boolean is
-    begin
-       if Checks and then Left.Node = null then
-          raise Constraint_Error with "Left cursor equals No_Element";
-       end if;
- 
-       if Checks and then Right.Node = null then
-          raise Constraint_Error with "Right cursor equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Left.Container.Tree, Left.Node),
-                      "bad Left cursor in "">""");
- 
-       pragma Assert (Vet (Right.Container.Tree, Right.Node),
-                      "bad Right cursor in "">""");
- 
-       --  L > R same as R < L
- 
-       return Right.Node.Element < Left.Node.Element;
-    end ">";
- 
-    function ">" (Left : Element_Type; Right : Cursor) return Boolean is
-    begin
-       if Checks and then Right.Node = null then
-          raise Constraint_Error with "Right cursor equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Right.Container.Tree, Right.Node),
-                      "bad Right cursor in "">""");
- 
-       return Right.Node.Element < Left;
-    end ">";
- 
-    function ">" (Left : Cursor; Right : Element_Type) return Boolean is
-    begin
-       if Checks and then Left.Node = null then
-          raise Constraint_Error with "Left cursor equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Left.Container.Tree, Left.Node),
-                      "bad Left cursor in "">""");
- 
-       return Right < Left.Node.Element;
-    end ">";
- 
-    ------------
-    -- Adjust --
-    ------------
- 
-    procedure Adjust is new Tree_Operations.Generic_Adjust (Copy_Tree);
- 
-    procedure Adjust (Container : in out Set) is
-    begin
-       Adjust (Container.Tree);
-    end Adjust;
- 
-    ------------
-    -- Assign --
-    ------------
- 
-    procedure Assign (Target : in out Set; Source : Set) is
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       Target.Clear;
-       Target.Union (Source);
-    end Assign;
- 
-    -------------
-    -- Ceiling --
-    -------------
- 
-    function Ceiling (Container : Set; Item : Element_Type) return Cursor is
-       Node : constant Node_Access :=
-         Element_Keys.Ceiling (Container.Tree, Item);
-    begin
-       return (if Node = null then No_Element
-               else Cursor'(Container'Unrestricted_Access, Node));
-    end Ceiling;
- 
-    -----------
-    -- Clear --
-    -----------
- 
-    procedure Clear is new Tree_Operations.Generic_Clear (Delete_Tree);
- 
-    procedure Clear (Container : in out Set) is
-    begin
-       Clear (Container.Tree);
-    end Clear;
- 
-    -----------
-    -- Color --
-    -----------
- 
-    function Color (Node : Node_Access) return Color_Type is
-    begin
-       return Node.Color;
-    end Color;
- 
-    ------------------------
-    -- Constant_Reference --
-    ------------------------
- 
-    function Constant_Reference
-      (Container : aliased Set;
-       Position  : Cursor) return Constant_Reference_Type
-    is
-    begin
-       if Checks and then Position.Container = null then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor designates wrong container";
-       end if;
- 
-       pragma Assert
-         (Vet (Container.Tree, Position.Node),
-          "bad cursor in Constant_Reference");
- 
-       declare
-          Tree : Tree_Type renames Position.Container.all.Tree;
-          TC : constant Tamper_Counts_Access :=
-            Tree.TC'Unrestricted_Access;
-       begin
-          return R : constant Constant_Reference_Type :=
-            (Element => Position.Node.Element'Access,
-             Control => (Controlled with TC))
-          do
-             Lock (TC.all);
-          end return;
-       end;
-    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) return Set is
-    begin
-       return Target : Set do
-          Target.Assign (Source);
-       end return;
-    end Copy;
- 
-    ---------------
-    -- Copy_Node --
-    ---------------
- 
-    function Copy_Node (Source : Node_Access) return Node_Access is
-       Target : constant Node_Access :=
-         new Node_Type'(Parent  => null,
-                        Left    => null,
-                        Right   => null,
-                        Color   => Source.Color,
-                        Element => Source.Element);
-    begin
-       return Target;
-    end Copy_Node;
- 
-    ------------
-    -- Delete --
-    ------------
- 
-    procedure Delete (Container : in out Set; Position : in out Cursor) is
-    begin
-       if Checks and then Position.Node = null then
-          raise Constraint_Error with "Position cursor equals No_Element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with "Position cursor designates wrong set";
-       end if;
- 
-       pragma Assert (Vet (Container.Tree, Position.Node),
-                      "bad cursor in Delete");
- 
-       Tree_Operations.Delete_Node_Sans_Free (Container.Tree, Position.Node);
-       Free (Position.Node);
-       Position.Container := null;
-    end Delete;
- 
-    procedure Delete (Container : in out Set; Item : Element_Type) is
-       X : Node_Access := Element_Keys.Find (Container.Tree, Item);
- 
-    begin
-       if Checks and then X = null then
-          raise Constraint_Error with "attempt to delete element not in set";
-       end if;
- 
-       Tree_Operations.Delete_Node_Sans_Free (Container.Tree, X);
-       Free (X);
-    end Delete;
- 
-    ------------------
-    -- Delete_First --
-    ------------------
- 
-    procedure Delete_First (Container : in out Set) is
-       Tree : Tree_Type renames Container.Tree;
-       X    : Node_Access := Tree.First;
-    begin
-       if X /= null then
-          Tree_Operations.Delete_Node_Sans_Free (Tree, X);
-          Free (X);
-       end if;
-    end Delete_First;
- 
-    -----------------
-    -- Delete_Last --
-    -----------------
- 
-    procedure Delete_Last (Container : in out Set) is
-       Tree : Tree_Type renames Container.Tree;
-       X    : Node_Access := Tree.Last;
-    begin
-       if X /= null then
-          Tree_Operations.Delete_Node_Sans_Free (Tree, X);
-          Free (X);
-       end if;
-    end Delete_Last;
- 
-    ----------------
-    -- Difference --
-    ----------------
- 
-    procedure Difference (Target : in out Set; Source : Set) is
-    begin
-       Set_Ops.Difference (Target.Tree, Source.Tree);
-    end Difference;
- 
-    function Difference (Left, Right : Set) return Set is
-       Tree : constant Tree_Type := Set_Ops.Difference (Left.Tree, Right.Tree);
-    begin
-       return Set'(Controlled with Tree);
-    end Difference;
- 
-    -------------
-    -- Element --
-    -------------
- 
-    function Element (Position : Cursor) return Element_Type is
-    begin
-       if Checks and then Position.Node = null then
-          raise Constraint_Error with "Position cursor equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Position.Container.Tree, Position.Node),
-                      "bad cursor in Element");
- 
-       return Position.Node.Element;
-    end Element;
- 
-    -------------------------
-    -- Equivalent_Elements --
-    -------------------------
- 
-    function Equivalent_Elements (Left, Right : Element_Type) return Boolean is
-    begin
-       return (if Left < Right or else Right < Left then False else True);
-    end Equivalent_Elements;
- 
-    ---------------------
-    -- Equivalent_Sets --
-    ---------------------
- 
-    function Equivalent_Sets (Left, Right : Set) return Boolean is
-       function Is_Equivalent_Node_Node (L, R : Node_Access) 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_Access) return Boolean is
-       begin
-          return (if L.Element < R.Element then False
-                  elsif R.Element < L.Element then False
-                  else True);
-       end Is_Equivalent_Node_Node;
- 
-    --  Start of processing for Equivalent_Sets
- 
-    begin
-       return Is_Equivalent (Left.Tree, Right.Tree);
-    end Equivalent_Sets;
- 
-    -------------
-    -- Exclude --
-    -------------
- 
-    procedure Exclude (Container : in out Set; Item : Element_Type) is
-       X : Node_Access := Element_Keys.Find (Container.Tree, Item);
- 
-    begin
-       if X /= null then
-          Tree_Operations.Delete_Node_Sans_Free (Container.Tree, X);
-          Free (X);
-       end if;
-    end Exclude;
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    procedure Finalize (Object : in out Iterator) is
-    begin
-       if Object.Container /= null then
-          Unbusy (Object.Container.Tree.TC);
-       end if;
-    end Finalize;
- 
-    ----------
-    -- Find --
-    ----------
- 
-    function Find (Container : Set; Item : Element_Type) return Cursor is
-       Node : constant Node_Access := Element_Keys.Find (Container.Tree, Item);
-    begin
-       return (if Node = null then No_Element
-               else Cursor'(Container'Unrestricted_Access, Node));
-    end Find;
- 
-    -----------
-    -- First --
-    -----------
- 
-    function First (Container : Set) return Cursor is
-    begin
-       return
-         (if Container.Tree.First = null then No_Element
-          else Cursor'(Container'Unrestricted_Access, Container.Tree.First));
-    end First;
- 
-    function First (Object : Iterator) return Cursor is
-    begin
-       --  The value of the iterator object's Node component influences the
-       --  behavior of the First (and Last) selector function.
- 
-       --  When the Node component is null, this means the iterator object was
-       --  constructed without a start expression, in which case the (forward)
-       --  iteration starts from the (logical) beginning of the entire sequence
-       --  of items (corresponding to Container.First, for a forward iterator).
- 
-       --  Otherwise, this is iteration over a partial sequence of items. When
-       --  the Node component is non-null, the iterator object was constructed
-       --  with a start expression, that specifies the position from which the
-       --  (forward) partial iteration begins.
- 
-       if Object.Node = null then
-          return Object.Container.First;
-       else
-          return Cursor'(Object.Container, Object.Node);
-       end if;
-    end First;
- 
-    -------------------
-    -- First_Element --
-    -------------------
- 
-    function First_Element (Container : Set) return Element_Type is
-    begin
-       if Checks and then Container.Tree.First = null then
-          raise Constraint_Error with "set is empty";
-       end if;
- 
-       return Container.Tree.First.Element;
-    end First_Element;
- 
-    -----------
-    -- Floor --
-    -----------
- 
-    function Floor (Container : Set; Item : Element_Type) return Cursor is
-       Node : constant Node_Access := Element_Keys.Floor (Container.Tree, Item);
-    begin
-       return (if Node = null then No_Element
-               else Cursor'(Container'Unrestricted_Access, Node));
-    end Floor;
- 
-    ----------
-    -- Free --
-    ----------
- 
-    procedure Free (X : in out Node_Access) is
-       procedure Deallocate is
-          new Ada.Unchecked_Deallocation (Node_Type, Node_Access);
-    begin
-       if X /= null then
-          X.Parent := X;
-          X.Left   := X;
-          X.Right  := X;
-          Deallocate (X);
-       end if;
-    end Free;
- 
-    ------------------
-    -- Generic_Keys --
-    ------------------
- 
-    package body Generic_Keys is
- 
-       -----------------------
-       -- Local Subprograms --
-       -----------------------
- 
-       function Is_Greater_Key_Node
-         (Left  : Key_Type;
-          Right : Node_Access) return Boolean;
-       pragma Inline (Is_Greater_Key_Node);
- 
-       function Is_Less_Key_Node
-         (Left  : Key_Type;
-          Right : Node_Access) return Boolean;
-       pragma Inline (Is_Less_Key_Node);
- 
-       --------------------------
-       -- Local Instantiations --
-       --------------------------
- 
-       package Key_Keys is
-         new Red_Black_Trees.Generic_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 Node_Access := Key_Keys.Ceiling (Container.Tree, Key);
-       begin
-          return (if Node = null then No_Element
-                  else Cursor'(Container'Unrestricted_Access, Node));
-       end Ceiling;
- 
-       ------------------------
-       -- Constant_Reference --
-       ------------------------
- 
-       function Constant_Reference
-         (Container : aliased Set;
-          Key       : Key_Type) return Constant_Reference_Type
-       is
-          Node : constant Node_Access := Key_Keys.Find (Container.Tree, Key);
- 
-       begin
-          if Checks and then Node = null then
-             raise Constraint_Error with "key not in set";
-          end if;
- 
-          declare
-             Tree : Tree_Type renames Container'Unrestricted_Access.all.Tree;
-             TC : constant Tamper_Counts_Access :=
-               Tree.TC'Unrestricted_Access;
-          begin
-             return R : constant Constant_Reference_Type :=
-               (Element => Node.Element'Access,
-                Control => (Controlled with TC))
-             do
-                Lock (TC.all);
-             end return;
-          end;
-       end Constant_Reference;
- 
-       --------------
-       -- 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 : Node_Access := Key_Keys.Find (Container.Tree, Key);
- 
-       begin
-          if Checks and then X = null then
-             raise Constraint_Error with "attempt to delete key not in set";
-          end if;
- 
-          Delete_Node_Sans_Free (Container.Tree, X);
-          Free (X);
-       end Delete;
- 
-       -------------
-       -- Element --
-       -------------
- 
-       function Element (Container : Set; Key : Key_Type) return Element_Type is
-          Node : constant Node_Access := Key_Keys.Find (Container.Tree, Key);
- 
-       begin
-          if Checks and then Node = null then
-             raise Constraint_Error with "key not in set";
-          end if;
- 
-          return Node.Element;
-       end Element;
- 
-       ---------------------
-       -- Equivalent_Keys --
-       ---------------------
- 
-       function Equivalent_Keys (Left, Right : Key_Type) return Boolean is
-       begin
-          return (if Left < Right or else Right < Left then False else True);
-       end Equivalent_Keys;
- 
-       -------------
-       -- Exclude --
-       -------------
- 
-       procedure Exclude (Container : in out Set; Key : Key_Type) is
-          X : Node_Access := Key_Keys.Find (Container.Tree, Key);
-       begin
-          if X /= null then
-             Delete_Node_Sans_Free (Container.Tree, X);
-             Free (X);
-          end if;
-       end Exclude;
- 
-       --------------
-       -- Finalize --
-       --------------
- 
-       procedure Finalize (Control : in out Reference_Control_Type) is
-       begin
-          if Control.Container /= null then
-             Impl.Reference_Control_Type (Control).Finalize;
- 
-             if Checks and then not (Key (Control.Pos) = Control.Old_Key.all)
-             then
-                Delete (Control.Container.all, Key (Control.Pos));
-                raise Program_Error;
-             end if;
- 
-             Control.Container := null;
-             Control.Old_Key   := null;
-          end if;
-       end Finalize;
- 
-       ----------
-       -- Find --
-       ----------
- 
-       function Find (Container : Set; Key : Key_Type) return Cursor is
-          Node : constant Node_Access := Key_Keys.Find (Container.Tree, Key);
-       begin
-          return (if Node = null then No_Element
-                  else Cursor'(Container'Unrestricted_Access, Node));
-       end Find;
- 
-       -----------
-       -- Floor --
-       -----------
- 
-       function Floor (Container : Set; Key : Key_Type) return Cursor is
-          Node : constant Node_Access := Key_Keys.Floor (Container.Tree, Key);
-       begin
-          return (if Node = null then No_Element
-                  else Cursor'(Container'Unrestricted_Access, Node));
-       end Floor;
- 
-       -------------------------
-       -- Is_Greater_Key_Node --
-       -------------------------
- 
-       function Is_Greater_Key_Node
-         (Left  : Key_Type;
-          Right : Node_Access) 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_Access) return Boolean
-       is
-       begin
-          return Left < Key (Right.Element);
-       end Is_Less_Key_Node;
- 
-       ---------
-       -- Key --
-       ---------
- 
-       function Key (Position : Cursor) return Key_Type is
-       begin
-          if Checks and then Position.Node = null then
-             raise Constraint_Error with
-               "Position cursor equals No_Element";
-          end if;
- 
-          pragma Assert (Vet (Position.Container.Tree, Position.Node),
-                         "bad cursor in Key");
- 
-          return Key (Position.Node.Element);
-       end Key;
- 
-       ----------
-       -- Read --
-       ----------
- 
-       procedure Read
-         (Stream : not null access Root_Stream_Type'Class;
-          Item   : out Reference_Type)
-       is
-       begin
-          raise Program_Error with "attempt to stream reference";
-       end Read;
- 
-       ------------------------------
-       -- Reference_Preserving_Key --
-       ------------------------------
- 
-       function Reference_Preserving_Key
-         (Container : aliased in out Set;
-          Position  : Cursor) return Reference_Type
-       is
-       begin
-          if Checks and then Position.Container = null then
-             raise Constraint_Error with "Position cursor has no element";
-          end if;
- 
-          if Checks and then Position.Container /= Container'Unrestricted_Access
-          then
-             raise Program_Error with
-               "Position cursor designates wrong container";
-          end if;
- 
-          pragma Assert
-            (Vet (Container.Tree, Position.Node),
-             "bad cursor in function Reference_Preserving_Key");
- 
-          declare
-             Tree : Tree_Type renames Container.Tree;
-          begin
-             return R : constant Reference_Type :=
-               (Element  => Position.Node.Element'Access,
-                  Control =>
-                    (Controlled with
-                      Tree.TC'Unrestricted_Access,
-                      Container => Container'Access,
-                      Pos       => Position,
-                      Old_Key   => new Key_Type'(Key (Position))))
-             do
-                Lock (Tree.TC);
-             end return;
-          end;
-       end Reference_Preserving_Key;
- 
-       function Reference_Preserving_Key
-         (Container : aliased in out Set;
-          Key       : Key_Type) return Reference_Type
-       is
-          Node : constant Node_Access := Key_Keys.Find (Container.Tree, Key);
- 
-       begin
-          if Checks and then Node = null then
-             raise Constraint_Error with "Key not in set";
-          end if;
- 
-          declare
-             Tree : Tree_Type renames Container.Tree;
-          begin
-             return R : constant Reference_Type :=
-               (Element  => Node.Element'Access,
-                  Control =>
-                    (Controlled with
-                      Tree.TC'Unrestricted_Access,
-                      Container => Container'Access,
-                      Pos       => Find (Container, Key),
-                      Old_Key   => new Key_Type'(Key)))
-             do
-                Lock (Tree.TC);
-             end return;
-          end;
-       end Reference_Preserving_Key;
- 
-       -------------
-       -- Replace --
-       -------------
- 
-       procedure Replace
-         (Container : in out Set;
-          Key       : Key_Type;
-          New_Item  : Element_Type)
-       is
-          Node : constant Node_Access := Key_Keys.Find (Container.Tree, Key);
- 
-       begin
-          if Checks and then Node = null then
-             raise Constraint_Error with
-               "attempt to replace key not in set";
-          end if;
- 
-          Replace_Element (Container.Tree, Node, New_Item);
-       end Replace;
- 
-       -----------------------------------
-       -- Update_Element_Preserving_Key --
-       -----------------------------------
- 
-       procedure Update_Element_Preserving_Key
-         (Container : in out Set;
-          Position  : Cursor;
-          Process   : not null access procedure (Element : in out Element_Type))
-       is
-          Tree : Tree_Type renames Container.Tree;
- 
-       begin
-          if Checks and then Position.Node = null then
-             raise Constraint_Error with
-               "Position cursor equals No_Element";
-          end if;
- 
-          if Checks and then Position.Container /= Container'Unrestricted_Access
-          then
-             raise Program_Error with
-               "Position cursor designates wrong set";
-          end if;
- 
-          pragma Assert (Vet (Container.Tree, Position.Node),
-                         "bad cursor in Update_Element_Preserving_Key");
- 
-          declare
-             E : Element_Type renames Position.Node.Element;
-             K : constant Key_Type := Key (E);
-             Lock : With_Lock (Tree.TC'Unrestricted_Access);
-          begin
-             Process (E);
-             if Equivalent_Keys (K, Key (E)) then
-                return;
-             end if;
-          end;
- 
-          declare
-             X : Node_Access := Position.Node;
-          begin
-             Tree_Operations.Delete_Node_Sans_Free (Tree, X);
-             Free (X);
-          end;
- 
-          raise Program_Error with "key was modified";
-       end Update_Element_Preserving_Key;
- 
-       -----------
-       -- Write --
-       -----------
- 
-       procedure Write
-         (Stream : not null access Root_Stream_Type'Class;
-          Item   : Reference_Type)
-       is
-       begin
-          raise Program_Error with "attempt to stream reference";
-       end Write;
- 
-    end Generic_Keys;
- 
-    ------------------------
-    -- Get_Element_Access --
-    ------------------------
- 
-    function Get_Element_Access
-      (Position : Cursor) return not null Element_Access is
-    begin
-       return Position.Node.Element'Access;
-    end Get_Element_Access;
- 
-    -----------------
-    -- Has_Element --
-    -----------------
- 
-    function Has_Element (Position : Cursor) return Boolean is
-    begin
-       return Position /= No_Element;
-    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
-          TE_Check (Container.Tree.TC);
- 
-          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_Sans_Hint
-         (Container.Tree,
-          New_Item,
-          Position.Node,
-          Inserted);
- 
-       Position.Container := Container'Unrestricted_Access;
-    end Insert;
- 
-    procedure Insert
-      (Container : in out Set;
-       New_Item  : Element_Type)
-    is
-       Position : Cursor;
-       pragma Unreferenced (Position);
- 
-       Inserted : Boolean;
- 
-    begin
-       Insert (Container, New_Item, Position, Inserted);
- 
-       if Checks and then 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
-      (Tree     : in out Tree_Type;
-       New_Item : Element_Type;
-       Node     : out Node_Access;
-       Inserted : out Boolean)
-    is
-       function New_Node return Node_Access;
-       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);
- 
-       --------------
-       -- New_Node --
-       --------------
- 
-       function New_Node return Node_Access is
-       begin
-          return new Node_Type'(Parent  => null,
-                                Left    => null,
-                                Right   => null,
-                                Color   => Red_Black_Trees.Red,
-                                Element => New_Item);
-       end New_Node;
- 
-    --  Start of processing for Insert_Sans_Hint
- 
-    begin
-       Conditional_Insert_Sans_Hint
-         (Tree,
-          New_Item,
-          Node,
-          Inserted);
-    end Insert_Sans_Hint;
- 
-    ----------------------
-    -- Insert_With_Hint --
-    ----------------------
- 
-    procedure Insert_With_Hint
-      (Dst_Tree : in out Tree_Type;
-       Dst_Hint : Node_Access;
-       Src_Node : Node_Access;
-       Dst_Node : out Node_Access)
-    is
-       Success : Boolean;
-       pragma Unreferenced (Success);
- 
-       function New_Node return Node_Access;
-       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);
- 
-       --------------
-       -- New_Node --
-       --------------
- 
-       function New_Node return Node_Access is
-          Node : constant Node_Access :=
-            new Node_Type'(Parent  => null,
-                           Left    => null,
-                           Right   => null,
-                           Color   => Red,
-                           Element => Src_Node.Element);
-       begin
-          return Node;
-       end New_Node;
- 
-    --  Start of processing for Insert_With_Hint
- 
-    begin
-       Local_Insert_With_Hint
-         (Dst_Tree,
-          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.Intersection (Target.Tree, Source.Tree);
-    end Intersection;
- 
-    function Intersection (Left, Right : Set) return Set is
-       Tree : constant Tree_Type :=
-         Set_Ops.Intersection (Left.Tree, Right.Tree);
-    begin
-       return Set'(Controlled with Tree);
-    end Intersection;
- 
-    --------------
-    -- Is_Empty --
-    --------------
- 
-    function Is_Empty (Container : Set) return Boolean is
-    begin
-       return Container.Tree.Length = 0;
-    end Is_Empty;
- 
-    ------------------------
-    -- Is_Equal_Node_Node --
-    ------------------------
- 
-    function Is_Equal_Node_Node (L, R : Node_Access) return Boolean is
-    begin
-       return L.Element = R.Element;
-    end Is_Equal_Node_Node;
- 
-    -----------------------------
-    -- Is_Greater_Element_Node --
-    -----------------------------
- 
-    function Is_Greater_Element_Node
-      (Left  : Element_Type;
-       Right : Node_Access) 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_Access) 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_Access) 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.Is_Subset (Subset => Subset.Tree, Of_Set => Of_Set.Tree);
-    end Is_Subset;
- 
-    -------------
-    -- Iterate --
-    -------------
- 
-    procedure Iterate
-      (Container : Set;
-       Process   : not null access procedure (Position : Cursor))
-    is
-       procedure Process_Node (Node : Node_Access);
-       pragma Inline (Process_Node);
- 
-       procedure Local_Iterate is
-         new Tree_Operations.Generic_Iteration (Process_Node);
- 
-       ------------------
-       -- Process_Node --
-       ------------------
- 
-       procedure Process_Node (Node : Node_Access) is
-       begin
-          Process (Cursor'(Container'Unrestricted_Access, Node));
-       end Process_Node;
- 
-       T : Tree_Type renames Container'Unrestricted_Access.all.Tree;
-       Busy : With_Busy (T.TC'Unrestricted_Access);
- 
-    --  Start of processing for Iterate
- 
-    begin
-       Local_Iterate (T);
-    end Iterate;
- 
-    function Iterate (Container : Set)
-      return Set_Iterator_Interfaces.Reversible_Iterator'Class
-    is
-    begin
-       --  The value of the Node component influences the behavior of the First
-       --  and Last selector functions of the iterator object. When the Node
-       --  component is null (as is the case here), this means the iterator
-       --  object was constructed without a start expression. This is a complete
-       --  iterator, meaning that the iteration starts from the (logical)
-       --  beginning of the sequence of items.
- 
-       --  Note: For a forward iterator, Container.First is the beginning, and
-       --  for a reverse iterator, Container.Last is the beginning.
- 
-       Busy (Container.Tree.TC'Unrestricted_Access.all);
- 
-       return It : constant Iterator :=
-         Iterator'(Limited_Controlled with
-                     Container => Container'Unrestricted_Access,
-                     Node      => null);
-    end Iterate;
- 
-    function Iterate (Container : Set; Start : Cursor)
-      return Set_Iterator_Interfaces.Reversible_Iterator'Class
-    is
-    begin
-       --  It was formerly the case that when Start = No_Element, the partial
-       --  iterator was defined to behave the same as for a complete iterator,
-       --  and iterate over the entire sequence of items. However, those
-       --  semantics were unintuitive and arguably error-prone (it is too easy
-       --  to accidentally create an endless loop), and so they were changed,
-       --  per the ARG meeting in Denver on 2011/11. However, there was no
-       --  consensus about what positive meaning this corner case should have,
-       --  and so it was decided to simply raise an exception. This does imply,
-       --  however, that it is not possible to use a partial iterator to specify
-       --  an empty sequence of items.
- 
-       if Checks and then Start = No_Element then
-          raise Constraint_Error with
-            "Start position for iterator equals No_Element";
-       end if;
- 
-       if Checks and then Start.Container /= Container'Unrestricted_Access then
-          raise Program_Error with
-            "Start cursor of Iterate designates wrong set";
-       end if;
- 
-       pragma Assert (Vet (Container.Tree, Start.Node),
-                      "Start cursor of Iterate is bad");
- 
-       --  The value of the Node component influences the behavior of the First
-       --  and Last selector functions of the iterator object. When the Node
-       --  component is non-null (as is the case here), it means that this is a
-       --  partial iteration, over a subset of the complete sequence of
-       --  items. The iterator object was constructed with a start expression,
-       --  indicating the position from which the iteration begins. Note that
-       --  the start position has the same value irrespective of whether this is
-       --  a forward or reverse iteration.
- 
-       Busy (Container.Tree.TC'Unrestricted_Access.all);
- 
-       return It : constant Iterator :=
-         Iterator'(Limited_Controlled with
-                     Container => Container'Unrestricted_Access,
-                     Node      => Start.Node);
-    end Iterate;
- 
-    ----------
-    -- Last --
-    ----------
- 
-    function Last (Container : Set) return Cursor is
-    begin
-       return
-         (if Container.Tree.Last = null then No_Element
-          else Cursor'(Container'Unrestricted_Access, Container.Tree.Last));
-    end Last;
- 
-    function Last (Object : Iterator) return Cursor is
-    begin
-       --  The value of the iterator object's Node component influences the
-       --  behavior of the Last (and First) selector function.
- 
-       --  When the Node component is null, this means the iterator object was
-       --  constructed without a start expression, in which case the (reverse)
-       --  iteration starts from the (logical) beginning of the entire sequence
-       --  (corresponding to Container.Last, for a reverse iterator).
- 
-       --  Otherwise, this is iteration over a partial sequence of items. When
-       --  the Node component is non-null, the iterator object was constructed
-       --  with a start expression, that specifies the position from which the
-       --  (reverse) partial iteration begins.
- 
-       if Object.Node = null then
-          return Object.Container.Last;
-       else
-          return Cursor'(Object.Container, Object.Node);
-       end if;
-    end Last;
- 
-    ------------------
-    -- Last_Element --
-    ------------------
- 
-    function Last_Element (Container : Set) return Element_Type is
-    begin
-       if Checks and then Container.Tree.Last = null then
-          raise Constraint_Error with "set is empty";
-       end if;
- 
-       return Container.Tree.Last.Element;
-    end Last_Element;
- 
-    ----------
-    -- Left --
-    ----------
- 
-    function Left (Node : Node_Access) return Node_Access is
-    begin
-       return Node.Left;
-    end Left;
- 
-    ------------
-    -- Length --
-    ------------
- 
-    function Length (Container : Set) return Count_Type is
-    begin
-       return Container.Tree.Length;
-    end Length;
- 
-    ----------
-    -- Move --
-    ----------
- 
-    procedure Move is new Tree_Operations.Generic_Move (Clear);
- 
-    procedure Move (Target : in out Set; Source : in out Set) is
-    begin
-       Move (Target => Target.Tree, Source => Source.Tree);
-    end Move;
- 
-    ----------
-    -- Next --
-    ----------
- 
-    function Next (Position : Cursor) return Cursor is
-    begin
-       if Position = No_Element then
-          return No_Element;
-       end if;
- 
-       pragma Assert (Vet (Position.Container.Tree, Position.Node),
-                      "bad cursor in Next");
- 
-       declare
-          Node : constant Node_Access :=
-            Tree_Operations.Next (Position.Node);
-       begin
-          return (if Node = null then No_Element
-                  else Cursor'(Position.Container, Node));
-       end;
-    end Next;
- 
-    procedure Next (Position : in out Cursor) is
-    begin
-       Position := Next (Position);
-    end Next;
- 
-    function Next (Object : Iterator; Position : Cursor) return Cursor is
-    begin
-       if Position.Container = null then
-          return No_Element;
-       end if;
- 
-       if Checks and then Position.Container /= Object.Container then
-          raise Program_Error with
-            "Position cursor of Next designates wrong set";
-       end if;
- 
-       return Next (Position);
-    end Next;
- 
-    -------------
-    -- Overlap --
-    -------------
- 
-    function Overlap (Left, Right : Set) return Boolean is
-    begin
-       return Set_Ops.Overlap (Left.Tree, Right.Tree);
-    end Overlap;
- 
-    ------------
-    -- Parent --
-    ------------
- 
-    function Parent (Node : Node_Access) return Node_Access is
-    begin
-       return Node.Parent;
-    end Parent;
- 
-    --------------
-    -- Previous --
-    --------------
- 
-    function Previous (Position : Cursor) return Cursor is
-    begin
-       if Position = No_Element then
-          return No_Element;
-       end if;
- 
-       pragma Assert (Vet (Position.Container.Tree, Position.Node),
-                      "bad cursor in Previous");
- 
-       declare
-          Node : constant Node_Access :=
-            Tree_Operations.Previous (Position.Node);
-       begin
-          return (if Node = null then No_Element
-                  else Cursor'(Position.Container, Node));
-       end;
-    end Previous;
- 
-    procedure Previous (Position : in out Cursor) is
-    begin
-       Position := Previous (Position);
-    end Previous;
- 
-    function Previous (Object : Iterator; Position : Cursor) return Cursor is
-    begin
-       if Position.Container = null then
-          return No_Element;
-       end if;
- 
-       if Checks and then Position.Container /= Object.Container then
-          raise Program_Error with
-            "Position cursor of Previous designates wrong set";
-       end if;
- 
-       return Previous (Position);
-    end Previous;
- 
-    ----------------------
-    -- Pseudo_Reference --
-    ----------------------
- 
-    function Pseudo_Reference
-      (Container : aliased Set'Class) return Reference_Control_Type
-    is
-       TC : constant Tamper_Counts_Access :=
-         Container.Tree.TC'Unrestricted_Access;
-    begin
-       return R : constant Reference_Control_Type := (Controlled with TC) do
-          Lock (TC.all);
-       end return;
-    end Pseudo_Reference;
- 
-    -------------------
-    -- Query_Element --
-    -------------------
- 
-    procedure Query_Element
-      (Position : Cursor;
-       Process  : not null access procedure (Element : Element_Type))
-    is
-    begin
-       if Checks and then Position.Node = null then
-          raise Constraint_Error with "Position cursor equals No_Element";
-       end if;
- 
-       pragma Assert (Vet (Position.Container.Tree, Position.Node),
-                      "bad cursor in Query_Element");
- 
-       declare
-          T : Tree_Type renames Position.Container.Tree;
-          Lock : With_Lock (T.TC'Unrestricted_Access);
-       begin
-          Process (Position.Node.Element);
-       end;
-    end Query_Element;
- 
-    ----------
-    -- Read --
-    ----------
- 
-    procedure Read
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : out Set)
-    is
-       function Read_Node
-         (Stream : not null access Root_Stream_Type'Class) return Node_Access;
-       pragma Inline (Read_Node);
- 
-       procedure Read is
-          new Tree_Operations.Generic_Read (Clear, Read_Node);
- 
-       ---------------
-       -- Read_Node --
-       ---------------
- 
-       function Read_Node
-         (Stream : not null access Root_Stream_Type'Class) return Node_Access
-       is
-          Node : Node_Access := new Node_Type;
-       begin
-          Element_Type'Read (Stream, Node.Element);
-          return Node;
-       exception
-          when others =>
-             Free (Node);
-             raise;
-       end Read_Node;
- 
-    --  Start of processing for Read
- 
-    begin
-       Read (Stream, Container.Tree);
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Cursor)
-    is
-    begin
-       raise Program_Error with "attempt to stream set cursor";
-    end Read;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Constant_Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Read;
- 
-    -------------
-    -- Replace --
-    -------------
- 
-    procedure Replace (Container : in out Set; New_Item : Element_Type) is
-       Node : constant Node_Access :=
-         Element_Keys.Find (Container.Tree, New_Item);
- 
-    begin
-       if Checks and then Node = null then
-          raise Constraint_Error with
-            "attempt to replace element not in set";
-       end if;
- 
-       TE_Check (Container.Tree.TC);
- 
-       Node.Element := New_Item;
-    end Replace;
- 
-    ---------------------
-    -- Replace_Element --
-    ---------------------
- 
-    procedure Replace_Element
-      (Tree : in out Tree_Type;
-       Node : Node_Access;
-       Item : Element_Type)
-    is
-       pragma Assert (Node /= null);
- 
-       function New_Node return Node_Access;
-       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);
- 
-       --------------
-       -- New_Node --
-       --------------
- 
-       function New_Node return Node_Access is
-       begin
-          Node.Element := Item;
-          Node.Color   := Red;
-          Node.Parent  := null;
-          Node.Right   := null;
-          Node.Left    := null;
-          return Node;
-       end New_Node;
- 
-       Hint     : Node_Access;
-       Result   : Node_Access;
-       Inserted : Boolean;
-       Compare  : Boolean;
- 
-    --  Start of processing for Replace_Element
- 
-    begin
-       --  Replace_Element assigns value Item to the element designated by Node,
-       --  per certain semantic constraints.
- 
-       --  If Item is equivalent to the element, then element is replaced and
-       --  there's nothing else to do. This is the easy case.
- 
-       --  If Item is not equivalent, then the node will (possibly) have to move
-       --  to some other place in the tree. This is slighly more complicated,
-       --  because we must ensure that Item is not equivalent to some other
-       --  element in the tree (in which case, the replacement is not allowed).
- 
-       --  Determine whether Item is equivalent to element on the specified
-       --  node.
- 
-       declare
-          Lock : With_Lock (Tree.TC'Unrestricted_Access);
-       begin
-          Compare := (if Item < Node.Element then False
-                      elsif Node.Element < Item then False
-                      else True);
-       end;
- 
-       if Compare then
-          --  Item is equivalent to the node's element, so we will not have to
-          --  move the node.
- 
-          TE_Check (Tree.TC);
- 
-          Node.Element := Item;
-          return;
-       end if;
- 
-       --  The replacement Item is not equivalent to the element on the
-       --  specified node, which means that it will need to be re-inserted in a
-       --  different position in the tree. We must now determine whether Item is
-       --  equivalent to some other element in the tree (which would prohibit
-       --  the assignment and hence the move).
- 
-       --  Ceiling returns the smallest element equivalent or greater than the
-       --  specified Item; if there is no such element, then it returns null.
- 
-       Hint := Element_Keys.Ceiling (Tree, Item);
- 
-       if Hint /= null then
-          declare
-             Lock : With_Lock (Tree.TC'Unrestricted_Access);
-          begin
-             Compare := Item < Hint.Element;
-          end;
- 
-          --  Item >= Hint.Element
- 
-          if Checks and then not Compare then
- 
-             --  Ceiling returns an element that is equivalent or greater
-             --  than Item. If Item is "not less than" the element, then
-             --  by elimination we know that Item is equivalent to the element.
- 
-             --  But this means that it is not possible to assign the value of
-             --  Item to the specified element (on Node), because a different
-             --  element (on Hint) equivalent to Item already exsits. (Were we
-             --  to change Node's element value, we would have to move Node, but
-             --  we would be unable to move the Node, because its new position
-             --  in the tree is already occupied by an equivalent element.)
- 
-             raise Program_Error with "attempt to replace existing element";
-          end if;
- 
-          --  Item is not equivalent to any other element in the tree, so it is
-          --  safe to assign the value of Item to Node.Element. This means that
-          --  the node will have to move to a different position in the tree
-          --  (because its element will have a different value).
- 
-          --  The nearest (greater) neighbor of Item is Hint. This will be the
-          --  insertion position of Node (because its element will have Item as
-          --  its new value).
- 
-          --  If Node equals Hint, the relative position of Node does not
-          --  change. This allows us to perform an optimization: we need not
-          --  remove Node from the tree and then reinsert it with its new value,
-          --  because it would only be placed in the exact same position.
- 
-          if Hint = Node then
-             TE_Check (Tree.TC);
- 
-             Node.Element := Item;
-             return;
-          end if;
-       end if;
- 
-       --  If we get here, it is because Item was greater than all elements in
-       --  the tree (Hint = null), or because Item was less than some element at
-       --  a different place in the tree (Item < Hint.Element). In either case,
-       --  we remove Node from the tree (without actually deallocating it), and
-       --  then insert Item into the tree, onto the same Node (so no new node is
-       --  actually allocated).
- 
-       Tree_Operations.Delete_Node_Sans_Free (Tree, Node);  -- Checks busy-bit
- 
-       Local_Insert_With_Hint  -- use unconditional insert here instead???
-         (Tree     => Tree,
-          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 Checks and then Position.Node = null then
-          raise Constraint_Error with
-            "Position cursor equals No_Element";
-       end if;
- 
-       if Checks and then Position.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error with
-            "Position cursor designates wrong set";
-       end if;
- 
-       pragma Assert (Vet (Container.Tree, Position.Node),
-                      "bad cursor in Replace_Element");
- 
-       Replace_Element (Container.Tree, Position.Node, New_Item);
-    end Replace_Element;
- 
-    ---------------------
-    -- Reverse_Iterate --
-    ---------------------
- 
-    procedure Reverse_Iterate
-      (Container : Set;
-       Process   : not null access procedure (Position : Cursor))
-    is
-       procedure Process_Node (Node : Node_Access);
-       pragma Inline (Process_Node);
- 
-       procedure Local_Reverse_Iterate is
-          new Tree_Operations.Generic_Reverse_Iteration (Process_Node);
- 
-       ------------------
-       -- Process_Node --
-       ------------------
- 
-       procedure Process_Node (Node : Node_Access) is
-       begin
-          Process (Cursor'(Container'Unrestricted_Access, Node));
-       end Process_Node;
- 
-       T : Tree_Type renames Container.Tree'Unrestricted_Access.all;
-       Busy : With_Busy (T.TC'Unrestricted_Access);
- 
-    --  Start of processing for Reverse_Iterate
- 
-    begin
-       Local_Reverse_Iterate (T);
-    end Reverse_Iterate;
- 
-    -----------
-    -- Right --
-    -----------
- 
-    function Right (Node : Node_Access) return Node_Access is
-    begin
-       return Node.Right;
-    end Right;
- 
-    ---------------
-    -- Set_Color --
-    ---------------
- 
-    procedure Set_Color (Node : Node_Access; Color : Color_Type) is
-    begin
-       Node.Color := Color;
-    end Set_Color;
- 
-    --------------
-    -- Set_Left --
-    --------------
- 
-    procedure Set_Left (Node : Node_Access; Left : Node_Access) is
-    begin
-       Node.Left := Left;
-    end Set_Left;
- 
-    ----------------
-    -- Set_Parent --
-    ----------------
- 
-    procedure Set_Parent (Node : Node_Access; Parent : Node_Access) is
-    begin
-       Node.Parent := Parent;
-    end Set_Parent;
- 
-    ---------------
-    -- Set_Right --
-    ---------------
- 
-    procedure Set_Right (Node : Node_Access; Right : Node_Access) is
-    begin
-       Node.Right := Right;
-    end Set_Right;
- 
-    --------------------------
-    -- Symmetric_Difference --
-    --------------------------
- 
-    procedure Symmetric_Difference (Target : in out Set; Source : Set) is
-    begin
-       Set_Ops.Symmetric_Difference (Target.Tree, Source.Tree);
-    end Symmetric_Difference;
- 
-    function Symmetric_Difference (Left, Right : Set) return Set is
-       Tree : constant Tree_Type :=
-         Set_Ops.Symmetric_Difference (Left.Tree, Right.Tree);
-    begin
-       return Set'(Controlled with Tree);
-    end Symmetric_Difference;
- 
-    ------------
-    -- To_Set --
-    ------------
- 
-    function To_Set (New_Item : Element_Type) return Set is
-       Tree     : Tree_Type;
-       Node     : Node_Access;
-       Inserted : Boolean;
-       pragma Unreferenced (Node, Inserted);
-    begin
-       Insert_Sans_Hint (Tree, New_Item, Node, Inserted);
-       return Set'(Controlled with Tree);
-    end To_Set;
- 
-    -----------
-    -- Union --
-    -----------
- 
-    procedure Union (Target : in out Set; Source : Set) is
-    begin
-       Set_Ops.Union (Target.Tree, Source.Tree);
-    end Union;
- 
-    function Union (Left, Right : Set) return Set is
-       Tree : constant Tree_Type :=
-         Set_Ops.Union (Left.Tree, Right.Tree);
-    begin
-       return Set'(Controlled with Tree);
-    end Union;
- 
-    -----------
-    -- Write --
-    -----------
- 
-    procedure Write
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : Set)
-    is
-       procedure Write_Node
-         (Stream : not null access Root_Stream_Type'Class;
-          Node   : Node_Access);
-       pragma Inline (Write_Node);
- 
-       procedure Write is
-          new Tree_Operations.Generic_Write (Write_Node);
- 
-       ----------------
-       -- Write_Node --
-       ----------------
- 
-       procedure Write_Node
-         (Stream : not null access Root_Stream_Type'Class;
-          Node   : Node_Access)
-       is
-       begin
-          Element_Type'Write (Stream, Node.Element);
-       end Write_Node;
- 
-    --  Start of processing for Write
- 
-    begin
-       Write (Stream, Container.Tree);
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Cursor)
-    is
-    begin
-       raise Program_Error with "attempt to stream set cursor";
-    end Write;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Constant_Reference_Type)
-    is
-    begin
-       raise Program_Error with "attempt to stream reference";
-    end Write;
- 
- end Ada.Containers.Ordered_Sets;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-coorse.ads gcc-8.1.0/gcc/ada/a-coorse.ads
*** gcc-7.3.0/gcc/ada/a-coorse.ads	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-coorse.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,453 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --           A D A . C O N T A I N E R S . O R D E R E D _ S E T S          --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, 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/>.                                          --
- --                                                                          --
- -- This unit was originally developed by Matthew J Heaney.                  --
- ------------------------------------------------------------------------------
- 
- with Ada.Iterator_Interfaces;
- 
- with Ada.Containers.Helpers;
- private with Ada.Containers.Red_Black_Trees;
- private with Ada.Finalization;
- private with Ada.Streams;
- 
- generic
-    type Element_Type is private;
- 
-    with function "<" (Left, Right : Element_Type) return Boolean is <>;
-    with function "=" (Left, Right : Element_Type) return Boolean is <>;
- 
- package Ada.Containers.Ordered_Sets is
-    pragma Annotate (CodePeer, Skip_Analysis);
-    pragma Preelaborate;
-    pragma Remote_Types;
- 
-    function Equivalent_Elements (Left, Right : Element_Type) return Boolean;
- 
-    type Set is tagged private
-    with Constant_Indexing => Constant_Reference,
-         Default_Iterator  => Iterate,
-         Iterator_Element  => Element_Type;
- 
-    pragma Preelaborable_Initialization (Set);
- 
-    type Cursor is private;
-    pragma Preelaborable_Initialization (Cursor);
- 
-    function Has_Element (Position : Cursor) return Boolean;
- 
-    Empty_Set : constant Set;
- 
-    No_Element : constant Cursor;
- 
-    package Set_Iterator_Interfaces is new
-      Ada.Iterator_Interfaces (Cursor, Has_Element);
- 
-    function "=" (Left, Right : Set) return Boolean;
- 
-    function Equivalent_Sets (Left, Right : Set) return Boolean;
- 
-    function To_Set (New_Item : Element_Type) return Set;
- 
-    function Length (Container : Set) return Count_Type;
- 
-    function Is_Empty (Container : Set) return Boolean;
- 
-    procedure Clear (Container : in out Set);
- 
-    function Element (Position : Cursor) return Element_Type;
- 
-    procedure Replace_Element
-      (Container : in out Set;
-       Position  : Cursor;
-       New_Item  : Element_Type);
- 
-    procedure Query_Element
-      (Position : Cursor;
-       Process  : not null access procedure (Element : Element_Type));
- 
-    type Constant_Reference_Type
-       (Element : not null access constant Element_Type) is
-    private
-    with
-       Implicit_Dereference => Element;
- 
-    function Constant_Reference
-      (Container : aliased Set;
-       Position  : Cursor) return Constant_Reference_Type;
-    pragma Inline (Constant_Reference);
- 
-    procedure Assign (Target : in out Set; Source : Set);
- 
-    function Copy (Source : Set) return Set;
- 
-    procedure Move (Target : in out Set; Source : in out Set);
- 
-    procedure Insert
-      (Container : in out Set;
-       New_Item  : Element_Type;
-       Position  : out Cursor;
-       Inserted  : out Boolean);
- 
-    procedure Insert
-      (Container : in out Set;
-       New_Item  : Element_Type);
- 
-    procedure Include
-      (Container : in out Set;
-       New_Item  : Element_Type);
- 
-    procedure Replace
-      (Container : in out Set;
-       New_Item  : Element_Type);
- 
-    procedure Exclude
-      (Container : in out Set;
-       Item      : Element_Type);
- 
-    procedure Delete
-      (Container : in out Set;
-       Item      : Element_Type);
- 
-    procedure Delete
-      (Container : in out Set;
-       Position  : in out Cursor);
- 
-    procedure Delete_First (Container : in out Set);
- 
-    procedure Delete_Last (Container : in out Set);
- 
-    procedure Union (Target : in out Set; Source : Set);
- 
-    function Union (Left, Right : Set) return Set;
- 
-    function "or" (Left, Right : Set) return Set renames Union;
- 
-    procedure Intersection (Target : in out Set; Source : Set);
- 
-    function Intersection (Left, Right : Set) return Set;
- 
-    function "and" (Left, Right : Set) return Set renames Intersection;
- 
-    procedure Difference (Target : in out Set; Source : Set);
- 
-    function Difference (Left, Right : Set) return Set;
- 
-    function "-" (Left, Right : Set) return Set renames Difference;
- 
-    procedure Symmetric_Difference (Target : in out Set; Source : Set);
- 
-    function Symmetric_Difference (Left, Right : Set) return Set;
- 
-    function "xor" (Left, Right : Set) return Set renames Symmetric_Difference;
- 
-    function Overlap (Left, Right : Set) return Boolean;
- 
-    function Is_Subset (Subset : Set; Of_Set : Set) return Boolean;
- 
-    function First (Container : Set) return Cursor;
- 
-    function First_Element (Container : Set) return Element_Type;
- 
-    function Last (Container : Set) return Cursor;
- 
-    function Last_Element (Container : Set) return Element_Type;
- 
-    function Next (Position : Cursor) return Cursor;
- 
-    procedure Next (Position : in out Cursor);
- 
-    function Previous (Position : Cursor) return Cursor;
- 
-    procedure Previous (Position : in out Cursor);
- 
-    function Find (Container : Set; Item : Element_Type) return Cursor;
- 
-    function Floor (Container : Set; Item : Element_Type) return Cursor;
- 
-    function Ceiling (Container : Set; Item : Element_Type) return Cursor;
- 
-    function Contains (Container : Set; Item : Element_Type) return Boolean;
- 
-    function "<" (Left, Right : Cursor) return Boolean;
- 
-    function ">" (Left, Right : Cursor) return Boolean;
- 
-    function "<" (Left : Cursor; Right : Element_Type) return Boolean;
- 
-    function ">" (Left : Cursor; Right : Element_Type) return Boolean;
- 
-    function "<" (Left : Element_Type; Right : Cursor) return Boolean;
- 
-    function ">" (Left : Element_Type; Right : Cursor) return Boolean;
- 
-    procedure Iterate
-      (Container : Set;
-       Process   : not null access procedure (Position : Cursor));
- 
-    procedure Reverse_Iterate
-      (Container : Set;
-       Process   : not null access procedure (Position : Cursor));
- 
-    function Iterate
-      (Container : Set)
-       return Set_Iterator_Interfaces.Reversible_Iterator'class;
- 
-    function Iterate
-      (Container : Set;
-       Start     : Cursor)
-       return Set_Iterator_Interfaces.Reversible_Iterator'class;
- 
-    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 is
- 
-       function Equivalent_Keys (Left, Right : Key_Type) return Boolean;
- 
-       function Key (Position : Cursor) return Key_Type;
- 
-       function Element (Container : Set; Key : Key_Type) return Element_Type;
- 
-       procedure Replace
-         (Container : in out Set;
-          Key       : Key_Type;
-          New_Item  : Element_Type);
- 
-       procedure Exclude (Container : in out Set; Key : Key_Type);
- 
-       procedure Delete (Container : in out Set; Key : Key_Type);
- 
-       function Find (Container : Set; Key : Key_Type) return Cursor;
- 
-       function Floor (Container : Set; Key : Key_Type) return Cursor;
- 
-       function Ceiling (Container : Set; Key : Key_Type) return Cursor;
- 
-       function Contains (Container : Set; Key : Key_Type) return Boolean;
- 
-       procedure Update_Element_Preserving_Key
-         (Container : in out Set;
-          Position  : Cursor;
-          Process   : not null access
-                        procedure (Element : in out Element_Type));
- 
-       type Reference_Type (Element : not null access Element_Type) is private
-       with
-          Implicit_Dereference => Element;
- 
-       function Reference_Preserving_Key
-         (Container : aliased in out Set;
-          Position  : Cursor) return Reference_Type;
- 
-       function Constant_Reference
-         (Container : aliased Set;
-          Key       : Key_Type) return Constant_Reference_Type;
- 
-       function Reference_Preserving_Key
-         (Container : aliased in out Set;
-          Key       : Key_Type) return Reference_Type;
- 
-    private
-       type Set_Access is access all Set;
-       for Set_Access'Storage_Size use 0;
- 
-       type Key_Access is access all Key_Type;
- 
-       package Impl is new Helpers.Generic_Implementation;
- 
-       type Reference_Control_Type is
-         new Impl.Reference_Control_Type with
-       record
-          Container : Set_Access;
-          Pos       : Cursor;
-          Old_Key   : Key_Access;
-       end record;
- 
-       overriding procedure Finalize (Control : in out Reference_Control_Type);
-       pragma Inline (Finalize);
- 
-       type Reference_Type (Element : not null access Element_Type) is record
-          Control  : Reference_Control_Type;
-       end record;
- 
-       use Ada.Streams;
- 
-       procedure Write
-         (Stream : not null access Root_Stream_Type'Class;
-          Item   : Reference_Type);
- 
-       for Reference_Type'Write use Write;
- 
-       procedure Read
-         (Stream : not null access Root_Stream_Type'Class;
-          Item   : out Reference_Type);
- 
-       for Reference_Type'Read use Read;
-    end Generic_Keys;
- 
- private
- 
-    pragma Inline (Next);
-    pragma Inline (Previous);
- 
-    type Node_Type;
-    type Node_Access is access Node_Type;
- 
-    type Node_Type is limited record
-       Parent  : Node_Access;
-       Left    : Node_Access;
-       Right   : Node_Access;
-       Color   : Red_Black_Trees.Color_Type := Red_Black_Trees.Red;
-       Element : aliased Element_Type;
-    end record;
- 
-    package Tree_Types is
-      new Red_Black_Trees.Generic_Tree_Types (Node_Type, Node_Access);
- 
-    type Set is new Ada.Finalization.Controlled with record
-       Tree : Tree_Types.Tree_Type;
-    end record;
- 
-    overriding procedure Adjust (Container : in out Set);
- 
-    overriding procedure Finalize (Container : in out Set) renames Clear;
- 
-    use Red_Black_Trees;
-    use Tree_Types, Tree_Types.Implementation;
-    use Ada.Finalization;
-    use Ada.Streams;
- 
-    procedure Write
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : Set);
- 
-    for Set'Write use Write;
- 
-    procedure Read
-      (Stream    : not null access Root_Stream_Type'Class;
-       Container : out Set);
- 
-    for Set'Read use Read;
- 
-    type Set_Access is access all Set;
-    for Set_Access'Storage_Size use 0;
- 
-    type Cursor is record
-       Container : Set_Access;
-       Node      : Node_Access;
-    end record;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Cursor);
- 
-    for Cursor'Write use Write;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Cursor);
- 
-    for Cursor'Read use Read;
- 
-    subtype Reference_Control_Type is Implementation.Reference_Control_Type;
-    --  It is necessary to rename this here, so that the compiler can find it
- 
-    type Constant_Reference_Type
-      (Element : not null access constant Element_Type) is
-       record
-          Control : Reference_Control_Type :=
-            raise Program_Error with "uninitialized reference";
-          --  The RM says, "The default initialization of an object of
-          --  type Constant_Reference_Type or Reference_Type propagates
-          --  Program_Error."
-       end record;
- 
-    procedure Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : Constant_Reference_Type);
- 
-    for Constant_Reference_Type'Write use Write;
- 
-    procedure Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Item   : out Constant_Reference_Type);
- 
-    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;
-    pragma Inline (Pseudo_Reference);
-    --  Creates an object of type Reference_Control_Type pointing to the
-    --  container, and increments the Lock. Finalization of this object will
-    --  decrement the Lock.
- 
-    type Element_Access is access all Element_Type with
-      Storage_Size => 0;
- 
-    function Get_Element_Access
-      (Position : Cursor) return not null Element_Access;
-    --  Returns a pointer to the element designated by Position.
- 
-    Empty_Set : constant Set := (Controlled with others => <>);
- 
-    No_Element : constant Cursor := Cursor'(null, null);
- 
-    type Iterator is new Limited_Controlled and
-      Set_Iterator_Interfaces.Reversible_Iterator with
-    record
-       Container : Set_Access;
-       Node      : Node_Access;
-    end record
-      with Disable_Controlled => not T_Check;
- 
-    overriding procedure Finalize (Object : in out Iterator);
- 
-    overriding function First (Object : Iterator) return Cursor;
-    overriding function Last  (Object : Iterator) return Cursor;
- 
-    overriding function Next
-      (Object   : Iterator;
-       Position : Cursor) return Cursor;
- 
-    overriding function Previous
-      (Object   : Iterator;
-       Position : Cursor) return Cursor;
- 
- end Ada.Containers.Ordered_Sets;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-coprnu.adb gcc-8.1.0/gcc/ada/a-coprnu.adb
*** gcc-7.3.0/gcc/ada/a-coprnu.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-coprnu.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,58 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --         A D A . C O N T A I N E R S . P R I M E _ N U M B E R S          --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2004-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- --
- -- 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.Prime_Numbers is
- 
-    --------------
-    -- To_Prime --
-    --------------
- 
-    function To_Prime (Length : Count_Type) return Hash_Type is
-       I, J, K : Integer'Base;
-       Index   : Integer'Base;
- 
-    begin
-       I := Primes'Last - Primes'First;
-       Index := Primes'First;
-       while I > 0 loop
-          J := I / 2;
-          K := Index + J;
- 
-          if Primes (K) < Hash_Type (Length) then
-             Index := K + 1;
-             I := I - J - 1;
-          else
-             I := J;
-          end if;
-       end loop;
- 
-       return Primes (Index);
-    end To_Prime;
- 
- end Ada.Containers.Prime_Numbers;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-coprnu.ads gcc-8.1.0/gcc/ada/a-coprnu.ads
*** gcc-7.3.0/gcc/ada/a-coprnu.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-coprnu.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,51 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --         A D A . C O N T A I N E R S . P R I M E _ N U M B E R S          --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2004-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- --
- -- 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.                  --
- ------------------------------------------------------------------------------
- 
- --  This package declares the prime numbers array used to implement hashed
- --  containers. Bucket arrays are always allocated with a prime-number
- --  length (computed using To_Prime below), as this produces better scatter
- --  when hash values are folded.
- 
- package Ada.Containers.Prime_Numbers is
-    pragma Pure;
- 
-    type Primes_Type is array (Positive range <>) of Hash_Type;
- 
-    Primes : constant Primes_Type :=
-      (53,         97,         193,       389,       769,
-       1543,       3079,       6151,      12289,     24593,
-       49157,      98317,      196613,    393241,    786433,
-       1572869,    3145739,    6291469,   12582917,  25165843,
-       50331653,   100663319,  201326611, 402653189, 805306457,
-       1610612741, 3221225473, 4294967291);
- 
-    function To_Prime (Length : Count_Type) return Hash_Type;
-    --  Returns the smallest value in Primes not less than Length
- 
- end Ada.Containers.Prime_Numbers;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-coteio.ads gcc-8.1.0/gcc/ada/a-coteio.ads
*** gcc-7.3.0/gcc/ada/a-coteio.ads	Tue Apr 10 05:44:30 2012
--- gcc-8.1.0/gcc/ada/a-coteio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,24 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                   A D A . C O M P L E X _ T E X T _ I O                  --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Ada 2005 AI-328
- 
- with Ada.Text_IO.Complex_IO;
- with Ada.Numerics.Complex_Types;
- 
- pragma Elaborate_All (Ada.Text_IO.Complex_IO);
- 
- package Ada.Complex_Text_IO is
-   new Ada.Text_IO.Complex_IO (Ada.Numerics.Complex_Types);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-crbltr.ads gcc-8.1.0/gcc/ada/a-crbltr.ads
*** gcc-7.3.0/gcc/ada/a-crbltr.ads	Tue Oct 20 10:23:46 2015
--- gcc-8.1.0/gcc/ada/a-crbltr.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,80 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --       A D A . C O N T A I N E R S . R E D _ B L A C K _ T R E E S        --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.                  --
- ------------------------------------------------------------------------------
- 
- --  This package declares the tree type used to implement ordered containers
- 
- with Ada.Containers.Helpers;
- 
- package Ada.Containers.Red_Black_Trees is
-    pragma Pure;
- 
-    type Color_Type is (Red, Black);
- 
-    generic
-       type Node_Type (<>) is limited private;
-       type Node_Access is access Node_Type;
-    package Generic_Tree_Types is
- 
-       type Tree_Type is tagged record
-          First  : Node_Access := null;
-          Last   : Node_Access := null;
-          Root   : Node_Access := null;
-          Length : Count_Type := 0;
-          TC     : aliased Helpers.Tamper_Counts;
-       end record;
- 
-       package Implementation is new Helpers.Generic_Implementation;
-    end Generic_Tree_Types;
- 
-    generic
-       type Node_Type is private;
-    package Generic_Bounded_Tree_Types is
-       type Nodes_Type is array (Count_Type range <>) of Node_Type;
- 
-       --  Note that objects of type Tree_Type are logically initialized (in the
-       --  sense that representation invariants of type are satisfied by dint of
-       --  default initialization), even without the Nodes component also having
-       --  its own initialization expression. We only initializae the Nodes
-       --  component here in order to prevent spurious compiler warnings about
-       --  the container object not being fully initialized.
- 
-       type Tree_Type (Capacity : Count_Type) is tagged record
-          First  : Count_Type := 0;
-          Last   : Count_Type := 0;
-          Root   : Count_Type := 0;
-          Length : Count_Type := 0;
-          TC     : aliased Helpers.Tamper_Counts;
-          Free   : Count_Type'Base := -1;
-          Nodes  : Nodes_Type (1 .. Capacity) := (others => <>);
-       end record;
- 
-       package Implementation is new Helpers.Generic_Implementation;
-    end Generic_Bounded_Tree_Types;
- 
- end Ada.Containers.Red_Black_Trees;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-crbtgk.adb gcc-8.1.0/gcc/ada/a-crbtgk.adb
*** gcc-7.3.0/gcc/ada/a-crbtgk.adb	Tue Oct 20 10:23:46 2015
--- gcc-8.1.0/gcc/ada/a-crbtgk.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,690 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                ADA.CONTAINERS.RED_BLACK_TREES.GENERIC_KEYS               --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Red_Black_Trees.Generic_Keys is
- 
-    pragma Warnings (Off, "variable ""Busy*"" is not referenced");
-    pragma Warnings (Off, "variable ""Lock*"" is not referenced");
-    --  See comment in Ada.Containers.Helpers
- 
-    package Ops renames Tree_Operations;
- 
-    -------------
-    -- Ceiling --
-    -------------
- 
-    --  AKA Lower_Bound
- 
-    function Ceiling (Tree : Tree_Type; Key : Key_Type) return Node_Access is
-       --  Per AI05-0022, the container implementation is required to detect
-       --  element tampering by a generic actual subprogram.
- 
-       Lock : With_Lock (Tree.TC'Unrestricted_Access);
- 
-       Y : Node_Access;
-       X : Node_Access;
- 
-    begin
-       --  If the container is empty, return a result immediately, so that we do
-       --  not manipulate the tamper bits unnecessarily.
- 
-       if Tree.Root = null then
-          return null;
-       end if;
- 
-       X := Tree.Root;
-       while X /= null loop
-          if Is_Greater_Key_Node (Key, X) then
-             X := Ops.Right (X);
-          else
-             Y := X;
-             X := Ops.Left (X);
-          end if;
-       end loop;
- 
-       return Y;
-    end Ceiling;
- 
-    ----------
-    -- Find --
-    ----------
- 
-    function Find (Tree : Tree_Type; Key : Key_Type) return Node_Access is
-       --  Per AI05-0022, the container implementation is required to detect
-       --  element tampering by a generic actual subprogram.
- 
-       Lock : With_Lock (Tree.TC'Unrestricted_Access);
- 
-       Y : Node_Access;
-       X : Node_Access;
- 
-    begin
-       --  If the container is empty, return a result immediately, so that we do
-       --  not manipulate the tamper bits unnecessarily.
- 
-       if Tree.Root = null then
-          return null;
-       end if;
- 
-       X := Tree.Root;
-       while X /= null loop
-          if Is_Greater_Key_Node (Key, X) then
-             X := Ops.Right (X);
-          else
-             Y := X;
-             X := Ops.Left (X);
-          end if;
-       end loop;
- 
-       if Y = null or else Is_Less_Key_Node (Key, Y) then
-          return null;
-       else
-          return Y;
-       end if;
-    end Find;
- 
-    -----------
-    -- Floor --
-    -----------
- 
-    function Floor (Tree : Tree_Type; Key : Key_Type) return Node_Access is
-       --  Per AI05-0022, the container implementation is required to detect
-       --  element tampering by a generic actual subprogram.
- 
-       Lock : With_Lock (Tree.TC'Unrestricted_Access);
- 
-       Y : Node_Access;
-       X : Node_Access;
- 
-    begin
-       --  If the container is empty, return a result immediately, so that we do
-       --  not manipulate the tamper bits unnecessarily.
- 
-       if Tree.Root = null then
-          return null;
-       end if;
- 
-       X := Tree.Root;
-       while X /= null loop
-          if Is_Less_Key_Node (Key, X) then
-             X := Ops.Left (X);
-          else
-             Y := X;
-             X := Ops.Right (X);
-          end if;
-       end loop;
- 
-       return Y;
-    end Floor;
- 
-    --------------------------------
-    -- Generic_Conditional_Insert --
-    --------------------------------
- 
-    procedure Generic_Conditional_Insert
-      (Tree     : in out Tree_Type;
-       Key      : Key_Type;
-       Node     : out Node_Access;
-       Inserted : out Boolean)
-    is
-       X : Node_Access;
-       Y : Node_Access;
- 
-       Compare : Boolean;
- 
-    begin
-       --  This is a "conditional" insertion, meaning that the insertion request
-       --  can "fail" in the sense that no new node is created. If the Key is
-       --  equivalent to an existing node, then we return the existing node and
-       --  Inserted is set to False. Otherwise, we allocate a new node (via
-       --  Insert_Post) and Inserted is set to True.
- 
-       --  Note that we are testing for equivalence here, not equality. Key must
-       --  be strictly less than its next neighbor, and strictly greater than
-       --  its previous neighbor, in order for the conditional insertion to
-       --  succeed.
- 
-       --  Handle insertion into an empty container as a special case, so that
-       --  we do not manipulate the tamper bits unnecessarily.
- 
-       if Tree.Root = null then
-          Insert_Post (Tree, null, True, Node);
-          Inserted := True;
-          return;
-       end if;
- 
-       --  We search the tree to find the nearest neighbor of Key, which is
-       --  either the smallest node greater than Key (Inserted is True), or the
-       --  largest node less or equivalent to Key (Inserted is False).
- 
-       declare
-          Lock : With_Lock (Tree.TC'Unrestricted_Access);
-       begin
-          X := Tree.Root;
-          Y := null;
-          Inserted := True;
-          while X /= null loop
-             Y := X;
-             Inserted := Is_Less_Key_Node (Key, X);
-             X := (if Inserted then Ops.Left (X) else Ops.Right (X));
-          end loop;
-       end;
- 
-       if Inserted then
- 
-          --  Key is less than Y. If Y is the first node in the tree, then there
-          --  are no other nodes that we need to search for, and we insert a new
-          --  node into the tree.
- 
-          if Y = Tree.First then
-             Insert_Post (Tree, Y, True, Node);
-             return;
-          end if;
- 
-          --  Y is the next nearest-neighbor of Key. We know that Key is not
-          --  equivalent to Y (because Key is strictly less than Y), so we move
-          --  to the previous node, the nearest-neighbor just smaller or
-          --  equivalent to Key.
- 
-          Node := Ops.Previous (Y);
- 
-       else
-          --  Y is the previous nearest-neighbor of Key. We know that Key is not
-          --  less than Y, which means either that Key is equivalent to Y, or
-          --  greater than Y.
- 
-          Node := Y;
-       end if;
- 
-       --  Key is equivalent to or greater than Node. We must resolve which is
-       --  the case, to determine whether the conditional insertion succeeds.
- 
-       declare
-          Lock : With_Lock (Tree.TC'Unrestricted_Access);
-       begin
-          Compare := Is_Greater_Key_Node (Key, Node);
-       end;
- 
-       if Compare then
- 
-          --  Key is strictly greater than Node, which means that Key is not
-          --  equivalent to Node. In this case, the insertion succeeds, and we
-          --  insert a new node into the tree.
- 
-          Insert_Post (Tree, Y, Inserted, Node);
-          Inserted := True;
-          return;
-       end if;
- 
-       --  Key is equivalent to Node. This is a conditional insertion, so we do
-       --  not insert a new node in this case. We return the existing node and
-       --  report that no insertion has occurred.
- 
-       Inserted := False;
-    end Generic_Conditional_Insert;
- 
-    ------------------------------------------
-    -- Generic_Conditional_Insert_With_Hint --
-    ------------------------------------------
- 
-    procedure Generic_Conditional_Insert_With_Hint
-      (Tree      : in out Tree_Type;
-       Position  : Node_Access;
-       Key       : Key_Type;
-       Node      : out Node_Access;
-       Inserted  : out Boolean)
-    is
-       Test    : Node_Access;
-       Compare : Boolean;
- 
-    begin
-       --  The purpose of a hint is to avoid a search from the root of
-       --  tree. If we have it hint it means we only need to traverse the
-       --  subtree rooted at the hint to find the nearest neighbor. Note
-       --  that finding the neighbor means merely walking the tree; this
-       --  is not a search and the only comparisons that occur are with
-       --  the hint and its neighbor.
- 
-       --  Handle insertion into an empty container as a special case, so that
-       --  we do not manipulate the tamper bits unnecessarily.
- 
-       if Tree.Root = null then
-          Insert_Post (Tree, null, True, Node);
-          Inserted := True;
-          return;
-       end if;
- 
-       --  If Position is null, this is interpreted to mean that Key is large
-       --  relative to the nodes in the tree. If Key is greater than the last
-       --  node in the tree, then we're done; otherwise the hint was "wrong" and
-       --  we must search.
- 
-       if Position = null then  -- largest
-          declare
-             Lock : With_Lock (Tree.TC'Unrestricted_Access);
-          begin
-             Compare := Is_Greater_Key_Node (Key, Tree.Last);
-          end;
- 
-          if Compare then
-             Insert_Post (Tree, Tree.Last, False, Node);
-             Inserted := True;
-          else
-             Conditional_Insert_Sans_Hint (Tree, Key, Node, Inserted);
-          end if;
- 
-          return;
-       end if;
- 
-       pragma Assert (Tree.Length > 0);
- 
-       --  A hint can either name the node that immediately follows Key,
-       --  or immediately precedes Key. We first test whether Key is
-       --  less than the hint, and if so we compare Key to the node that
-       --  precedes the hint. If Key is both less than the hint and
-       --  greater than the hint's preceding neighbor, then we're done;
-       --  otherwise we must search.
- 
-       --  Note also that a hint can either be an anterior node or a leaf
-       --  node. A new node is always inserted at the bottom of the tree
-       --  (at least prior to rebalancing), becoming the new left or
-       --  right child of leaf node (which prior to the insertion must
-       --  necessarily be null, since this is a leaf). If the hint names
-       --  an anterior node then its neighbor must be a leaf, and so
-       --  (here) we insert after the neighbor. If the hint names a leaf
-       --  then its neighbor must be anterior and so we insert before the
-       --  hint.
- 
-       declare
-          Lock : With_Lock (Tree.TC'Unrestricted_Access);
-       begin
-          Compare := Is_Less_Key_Node (Key, Position);
-       end;
- 
-       if Compare then
-          Test := Ops.Previous (Position);  -- "before"
- 
-          if Test = null then  -- new first node
-             Insert_Post (Tree, Tree.First, True, Node);
- 
-             Inserted := True;
-             return;
-          end if;
- 
-          declare
-             Lock : With_Lock (Tree.TC'Unrestricted_Access);
-          begin
-             Compare := Is_Greater_Key_Node (Key, Test);
-          end;
- 
-          if Compare then
-             if Ops.Right (Test) = null then
-                Insert_Post (Tree, Test, False, Node);
-             else
-                Insert_Post (Tree, Position, True, Node);
-             end if;
- 
-             Inserted := True;
- 
-          else
-             Conditional_Insert_Sans_Hint (Tree, Key, Node, Inserted);
-          end if;
- 
-          return;
-       end if;
- 
-       --  We know that Key isn't less than the hint so we try again, this time
-       --  to see if it's greater than the hint. If so we compare Key to the
-       --  node that follows the hint. If Key is both greater than the hint and
-       --  less than the hint's next neighbor, then we're done; otherwise we
-       --  must search.
- 
-       declare
-          Lock : With_Lock (Tree.TC'Unrestricted_Access);
-       begin
-          Compare := Is_Greater_Key_Node (Key, Position);
-       end;
- 
-       if Compare then
-          Test := Ops.Next (Position);  -- "after"
- 
-          if Test = null then  -- new last node
-             Insert_Post (Tree, Tree.Last, False, Node);
- 
-             Inserted := True;
-             return;
-          end if;
- 
-          declare
-             Lock : With_Lock (Tree.TC'Unrestricted_Access);
-          begin
-             Compare := Is_Less_Key_Node (Key, Test);
-          end;
- 
-          if Compare then
-             if Ops.Right (Position) = null then
-                Insert_Post (Tree, Position, False, Node);
-             else
-                Insert_Post (Tree, Test, True, Node);
-             end if;
- 
-             Inserted := True;
- 
-          else
-             Conditional_Insert_Sans_Hint (Tree, Key, Node, Inserted);
-          end if;
- 
-          return;
-       end if;
- 
-       --  We know that Key is neither less than the hint nor greater than the
-       --  hint, and that's the definition of equivalence. There's nothing else
-       --  we need to do, since a search would just reach the same conclusion.
- 
-       Node := Position;
-       Inserted := False;
-    end Generic_Conditional_Insert_With_Hint;
- 
-    -------------------------
-    -- Generic_Insert_Post --
-    -------------------------
- 
-    procedure Generic_Insert_Post
-      (Tree   : in out Tree_Type;
-       Y      : Node_Access;
-       Before : Boolean;
-       Z      : out Node_Access)
-    is
-    begin
-       if Checks and then Tree.Length = Count_Type'Last then
-          raise Constraint_Error with "too many elements";
-       end if;
- 
-       TC_Check (Tree.TC);
- 
-       Z := New_Node;
-       pragma Assert (Z /= null);
-       pragma Assert (Ops.Color (Z) = Red);
- 
-       if Y = null then
-          pragma Assert (Tree.Length = 0);
-          pragma Assert (Tree.Root = null);
-          pragma Assert (Tree.First = null);
-          pragma Assert (Tree.Last = null);
- 
-          Tree.Root := Z;
-          Tree.First := Z;
-          Tree.Last := Z;
- 
-       elsif Before then
-          pragma Assert (Ops.Left (Y) = null);
- 
-          Ops.Set_Left (Y, Z);
- 
-          if Y = Tree.First then
-             Tree.First := Z;
-          end if;
- 
-       else
-          pragma Assert (Ops.Right (Y) = null);
- 
-          Ops.Set_Right (Y, Z);
- 
-          if Y = Tree.Last then
-             Tree.Last := Z;
-          end if;
-       end if;
- 
-       Ops.Set_Parent (Z, Y);
-       Ops.Rebalance_For_Insert (Tree, Z);
-       Tree.Length := Tree.Length + 1;
-    end Generic_Insert_Post;
- 
-    -----------------------
-    -- Generic_Iteration --
-    -----------------------
- 
-    procedure Generic_Iteration
-      (Tree : Tree_Type;
-       Key  : Key_Type)
-    is
-       procedure Iterate (Node : Node_Access);
- 
-       -------------
-       -- Iterate --
-       -------------
- 
-       procedure Iterate (Node : Node_Access) is
-          N : Node_Access;
-       begin
-          N := Node;
-          while N /= null loop
-             if Is_Less_Key_Node (Key, N) then
-                N := Ops.Left (N);
-             elsif Is_Greater_Key_Node (Key, N) then
-                N := Ops.Right (N);
-             else
-                Iterate (Ops.Left (N));
-                Process (N);
-                N := Ops.Right (N);
-             end if;
-          end loop;
-       end Iterate;
- 
-    --  Start of processing for Generic_Iteration
- 
-    begin
-       Iterate (Tree.Root);
-    end Generic_Iteration;
- 
-    -------------------------------
-    -- Generic_Reverse_Iteration --
-    -------------------------------
- 
-    procedure Generic_Reverse_Iteration
-      (Tree : Tree_Type;
-       Key  : Key_Type)
-    is
-       procedure Iterate (Node : Node_Access);
- 
-       -------------
-       -- Iterate --
-       -------------
- 
-       procedure Iterate (Node : Node_Access) is
-          N : Node_Access;
-       begin
-          N := Node;
-          while N /= null loop
-             if Is_Less_Key_Node (Key, N) then
-                N := Ops.Left (N);
-             elsif Is_Greater_Key_Node (Key, N) then
-                N := Ops.Right (N);
-             else
-                Iterate (Ops.Right (N));
-                Process (N);
-                N := Ops.Left (N);
-             end if;
-          end loop;
-       end Iterate;
- 
-    --  Start of processing for Generic_Reverse_Iteration
- 
-    begin
-       Iterate (Tree.Root);
-    end Generic_Reverse_Iteration;
- 
-    ----------------------------------
-    -- Generic_Unconditional_Insert --
-    ----------------------------------
- 
-    procedure Generic_Unconditional_Insert
-      (Tree : in out Tree_Type;
-       Key  : Key_Type;
-       Node : out Node_Access)
-    is
-       Y : Node_Access;
-       X : Node_Access;
- 
-       Before : Boolean;
- 
-    begin
-       Y := null;
-       Before := False;
- 
-       X := Tree.Root;
-       while X /= null loop
-          Y := X;
-          Before := Is_Less_Key_Node (Key, X);
-          X := (if Before then Ops.Left (X) else Ops.Right (X));
-       end loop;
- 
-       Insert_Post (Tree, Y, Before, Node);
-    end Generic_Unconditional_Insert;
- 
-    --------------------------------------------
-    -- Generic_Unconditional_Insert_With_Hint --
-    --------------------------------------------
- 
-    procedure Generic_Unconditional_Insert_With_Hint
-      (Tree : in out Tree_Type;
-       Hint : Node_Access;
-       Key  : Key_Type;
-       Node : out Node_Access)
-    is
-    begin
-       --  There are fewer constraints for an unconditional insertion
-       --  than for a conditional insertion, since we allow duplicate
-       --  keys. So instead of having to check (say) whether Key is
-       --  (strictly) greater than the hint's previous neighbor, here we
-       --  allow Key to be equal to or greater than the previous node.
- 
-       --  There is the issue of what to do if Key is equivalent to the
-       --  hint. Does the new node get inserted before or after the hint?
-       --  We decide that it gets inserted after the hint, reasoning that
-       --  this is consistent with behavior for non-hint insertion, which
-       --  inserts a new node after existing nodes with equivalent keys.
- 
-       --  First we check whether the hint is null, which is interpreted
-       --  to mean that Key is large relative to existing nodes.
-       --  Following our rule above, if Key is equal to or greater than
-       --  the last node, then we insert the new node immediately after
-       --  last. (We don't have an operation for testing whether a key is
-       --  "equal to or greater than" a node, so we must say instead "not
-       --  less than", which is equivalent.)
- 
-       if Hint = null then  -- largest
-          if Tree.Last = null then
-             Insert_Post (Tree, null, False, Node);
-          elsif Is_Less_Key_Node (Key, Tree.Last) then
-             Unconditional_Insert_Sans_Hint (Tree, Key, Node);
-          else
-             Insert_Post (Tree, Tree.Last, False, Node);
-          end if;
- 
-          return;
-       end if;
- 
-       pragma Assert (Tree.Length > 0);
- 
-       --  We decide here whether to insert the new node prior to the
-       --  hint. Key could be equivalent to the hint, so in theory we
-       --  could write the following test as "not greater than" (same as
-       --  "less than or equal to"). If Key were equivalent to the hint,
-       --  that would mean that the new node gets inserted before an
-       --  equivalent node. That wouldn't break any container invariants,
-       --  but our rule above says that new nodes always get inserted
-       --  after equivalent nodes. So here we test whether Key is both
-       --  less than the hint and equal to or greater than the hint's
-       --  previous neighbor, and if so insert it before the hint.
- 
-       if Is_Less_Key_Node (Key, Hint) then
-          declare
-             Before : constant Node_Access := Ops.Previous (Hint);
-          begin
-             if Before = null then
-                Insert_Post (Tree, Hint, True, Node);
-             elsif Is_Less_Key_Node (Key, Before) then
-                Unconditional_Insert_Sans_Hint (Tree, Key, Node);
-             elsif Ops.Right (Before) = null then
-                Insert_Post (Tree, Before, False, Node);
-             else
-                Insert_Post (Tree, Hint, True, Node);
-             end if;
-          end;
- 
-          return;
-       end if;
- 
-       --  We know that Key isn't less than the hint, so it must be equal
-       --  or greater. So we just test whether Key is less than or equal
-       --  to (same as "not greater than") the hint's next neighbor, and
-       --  if so insert it after the hint.
- 
-       declare
-          After : constant Node_Access := Ops.Next (Hint);
-       begin
-          if After = null then
-             Insert_Post (Tree, Hint, False, Node);
-          elsif Is_Greater_Key_Node (Key, After) then
-             Unconditional_Insert_Sans_Hint (Tree, Key, Node);
-          elsif Ops.Right (Hint) = null then
-             Insert_Post (Tree, Hint, False, Node);
-          else
-             Insert_Post (Tree, After, True, Node);
-          end if;
-       end;
-    end Generic_Unconditional_Insert_With_Hint;
- 
-    -----------------
-    -- Upper_Bound --
-    -----------------
- 
-    function Upper_Bound
-      (Tree : Tree_Type;
-       Key  : Key_Type) return Node_Access
-    is
-       Y : Node_Access;
-       X : Node_Access;
- 
-    begin
-       X := Tree.Root;
-       while X /= null loop
-          if Is_Less_Key_Node (Key, X) then
-             Y := X;
-             X := Ops.Left (X);
-          else
-             X := Ops.Right (X);
-          end if;
-       end loop;
- 
-       return Y;
-    end Upper_Bound;
- 
- end Ada.Containers.Red_Black_Trees.Generic_Keys;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-crbtgk.ads gcc-8.1.0/gcc/ada/a-crbtgk.ads
*** gcc-7.3.0/gcc/ada/a-crbtgk.ads	Tue Oct 20 10:23:46 2015
--- gcc-8.1.0/gcc/ada/a-crbtgk.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,192 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                ADA.CONTAINERS.RED_BLACK_TREES.GENERIC_KEYS               --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.                  --
- ------------------------------------------------------------------------------
- 
- --  Tree_Type is used to implement ordered containers. This package declares
- --  the tree operations that depend on keys.
- 
- with Ada.Containers.Red_Black_Trees.Generic_Operations;
- 
- generic
-    with package Tree_Operations is new Generic_Operations (<>);
- 
-    use Tree_Operations.Tree_Types, Tree_Operations.Tree_Types.Implementation;
- 
-    type Key_Type (<>) is limited private;
- 
-    with function Is_Less_Key_Node
-      (L : Key_Type;
-       R : Node_Access) return Boolean;
- 
-    with function Is_Greater_Key_Node
-      (L : Key_Type;
-       R : Node_Access) return Boolean;
- 
- package Ada.Containers.Red_Black_Trees.Generic_Keys is
-    pragma Pure;
- 
-    generic
-       with function New_Node return Node_Access;
-    procedure Generic_Insert_Post
-      (Tree   : in out Tree_Type;
-       Y      : Node_Access;
-       Before : Boolean;
-       Z      : out Node_Access);
-    --  Completes an insertion after the insertion position has been
-    --  determined. On output Z contains a pointer to the newly inserted
-    --  node, allocated using New_Node. If Tree is busy then
-    --  Program_Error is raised. If Y is null, then Tree must be empty.
-    --  Otherwise Y denotes the insertion position, and Before specifies
-    --  whether the new node is Y's left (True) or right (False) child.
- 
-    generic
-       with procedure Insert_Post
-         (T : in out Tree_Type;
-          Y : Node_Access;
-          B : Boolean;
-          Z : out Node_Access);
- 
-    procedure Generic_Conditional_Insert
-      (Tree     : in out Tree_Type;
-       Key      : Key_Type;
-       Node     : out Node_Access;
-       Inserted : out Boolean);
-    --  Inserts a new node in Tree, but only if the tree does not already
-    --  contain Key. Generic_Conditional_Insert first searches for a key
-    --  equivalent to Key in Tree. If an equivalent key is found, then on
-    --  output Node designates the node with that key and Inserted is
-    --  False; there is no allocation and Tree is not modified. Otherwise
-    --  Node designates a new node allocated using Insert_Post, and
-    --  Inserted is True.
- 
-    generic
-       with procedure Insert_Post
-         (T : in out Tree_Type;
-          Y : Node_Access;
-          B : Boolean;
-          Z : out Node_Access);
- 
-    procedure Generic_Unconditional_Insert
-      (Tree : in out Tree_Type;
-       Key  : Key_Type;
-       Node : out Node_Access);
-    --  Inserts a new node in Tree. On output Node designates the new
-    --  node, which is allocated using Insert_Post. The node is inserted
-    --  immediately after already-existing equivalent keys.
- 
-    generic
-       with procedure Insert_Post
-         (T : in out Tree_Type;
-          Y : Node_Access;
-          B : Boolean;
-          Z : out Node_Access);
- 
-       with procedure Unconditional_Insert_Sans_Hint
-         (Tree    : in out Tree_Type;
-          Key     : Key_Type;
-          Node    : out Node_Access);
- 
-    procedure Generic_Unconditional_Insert_With_Hint
-      (Tree : in out Tree_Type;
-       Hint : Node_Access;
-       Key  : Key_Type;
-       Node : out Node_Access);
-    --  Inserts a new node in Tree near position Hint, to avoid having to
-    --  search from the root for the insertion position. If Hint is null
-    --  then Generic_Unconditional_Insert_With_Hint attempts to insert
-    --  the new node after Tree.Last. If Hint is non-null then if Key is
-    --  less than Hint, it attempts to insert the new node immediately
-    --  prior to Hint. Otherwise it attempts to insert the node
-    --  immediately following Hint. We say "attempts" above to emphasize
-    --  that insertions always preserve invariants with respect to key
-    --  order, even when there's a hint. So if Key can't be inserted
-    --  immediately near Hint, then the new node is inserted in the
-    --  normal way, by searching for the correct position starting from
-    --  the root.
- 
-    generic
-       with procedure Insert_Post
-         (T : in out Tree_Type;
-          Y : Node_Access;
-          B : Boolean;
-          Z : out Node_Access);
- 
-       with procedure Conditional_Insert_Sans_Hint
-         (Tree     : in out Tree_Type;
-          Key      : Key_Type;
-          Node     : out Node_Access;
-          Inserted : out Boolean);
- 
-    procedure Generic_Conditional_Insert_With_Hint
-      (Tree     : in out Tree_Type;
-       Position : Node_Access;       -- the hint
-       Key      : Key_Type;
-       Node     : out Node_Access;
-       Inserted : out Boolean);
-    --  Inserts a new node in Tree if the tree does not already contain
-    --  Key, using Position as a hint about where to insert the new node.
-    --  See Generic_Unconditional_Insert_With_Hint for more details about
-    --  hint semantics.
- 
-    function Find
-      (Tree : Tree_Type;
-       Key  : Key_Type) return Node_Access;
-    --  Searches Tree for the smallest node equivalent to Key
- 
-    function Ceiling
-      (Tree : Tree_Type;
-       Key  : Key_Type) return Node_Access;
-    --  Searches Tree for the smallest node equal to or greater than Key
- 
-    function Floor
-      (Tree : Tree_Type;
-       Key  : Key_Type) return Node_Access;
-    --  Searches Tree for the largest node less than or equal to Key
- 
-    function Upper_Bound
-      (Tree : Tree_Type;
-       Key  : Key_Type) return Node_Access;
-    --  Searches Tree for the smallest node greater than Key
- 
-    generic
-       with procedure Process (Node : Node_Access);
-    procedure Generic_Iteration
-      (Tree : Tree_Type;
-       Key  : Key_Type);
-    --  Calls Process for each node in Tree equivalent to Key, in order
-    --  from earliest in range to latest.
- 
-    generic
-       with procedure Process (Node : Node_Access);
-    procedure Generic_Reverse_Iteration
-      (Tree : Tree_Type;
-       Key  : Key_Type);
-    --  Calls Process for each node in Tree equivalent to Key, but in
-    --  order from largest in range to earliest.
- 
- end Ada.Containers.Red_Black_Trees.Generic_Keys;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-crbtgo.adb gcc-8.1.0/gcc/ada/a-crbtgo.adb
*** gcc-7.3.0/gcc/ada/a-crbtgo.adb	Wed Apr 27 13:15:25 2016
--- gcc-8.1.0/gcc/ada/a-crbtgo.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,1159 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --             ADA.CONTAINERS.RED_BLACK_TREES.GENERIC_OPERATIONS            --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2004-2016, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.                  --
- ------------------------------------------------------------------------------
- 
- --  The references below to "CLR" refer to the following book, from which
- --  several of the algorithms here were adapted:
- --     Introduction to Algorithms
- --     by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest
- --     Publisher: The MIT Press (June 18, 1990)
- --     ISBN: 0262031418
- 
- with System; use type System.Address;
- 
- package body Ada.Containers.Red_Black_Trees.Generic_Operations is
- 
-    pragma Warnings (Off, "variable ""Busy*"" is not referenced");
-    pragma Warnings (Off, "variable ""Lock*"" is not referenced");
-    --  See comment in Ada.Containers.Helpers
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    procedure Delete_Fixup (Tree : in out Tree_Type; Node : Node_Access);
- 
-    procedure Delete_Swap (Tree : in out Tree_Type; Z, Y : Node_Access);
- 
-    procedure Left_Rotate  (Tree : in out Tree_Type; X : Node_Access);
-    procedure Right_Rotate (Tree : in out Tree_Type; Y : Node_Access);
- 
- --  Why is all the following code commented out ???
- 
- --     ---------------------
- --     -- Check_Invariant --
- --     ---------------------
- 
- --     procedure Check_Invariant (Tree : Tree_Type) is
- --        Root : constant Node_Access := Tree.Root;
- --
- --        function Check (Node : Node_Access) return Natural;
- --
- --        -----------
- --        -- Check --
- --        -----------
- --
- --        function Check (Node : Node_Access) return Natural is
- --        begin
- --           if Node = null then
- --              return 0;
- --           end if;
- --
- --           if Color (Node) = Red then
- --              declare
- --                 L : constant Node_Access := Left (Node);
- --              begin
- --                 pragma Assert (L = null or else Color (L) = Black);
- --                 null;
- --              end;
- --
- --              declare
- --                 R : constant Node_Access := Right (Node);
- --              begin
- --                 pragma Assert (R = null or else Color (R) = Black);
- --                 null;
- --              end;
- --
- --              declare
- --                 NL : constant Natural := Check (Left (Node));
- --                 NR : constant Natural := Check (Right (Node));
- --              begin
- --                 pragma Assert (NL = NR);
- --                 return NL;
- --              end;
- --           end if;
- --
- --           declare
- --              NL : constant Natural := Check (Left (Node));
- --              NR : constant Natural := Check (Right (Node));
- --           begin
- --              pragma Assert (NL = NR);
- --              return NL + 1;
- --           end;
- --        end Check;
- --
- --     --  Start of processing for Check_Invariant
- --
- --     begin
- --        if Root = null then
- --           pragma Assert (Tree.First = null);
- --           pragma Assert (Tree.Last = null);
- --           pragma Assert (Tree.Length = 0);
- --           null;
- --
- --        else
- --           pragma Assert (Color (Root) = Black);
- --           pragma Assert (Tree.Length > 0);
- --           pragma Assert (Tree.Root /= null);
- --           pragma Assert (Tree.First /= null);
- --           pragma Assert (Tree.Last /= null);
- --           pragma Assert (Parent (Tree.Root) = null);
- --           pragma Assert ((Tree.Length > 1)
- --                             or else (Tree.First = Tree.Last
- --                                        and Tree.First = Tree.Root));
- --           pragma Assert (Left (Tree.First) = null);
- --           pragma Assert (Right (Tree.Last) = null);
- --
- --           declare
- --              L  : constant Node_Access := Left (Root);
- --              R  : constant Node_Access := Right (Root);
- --              NL : constant Natural := Check (L);
- --              NR : constant Natural := Check (R);
- --           begin
- --              pragma Assert (NL = NR);
- --              null;
- --           end;
- --        end if;
- --     end Check_Invariant;
- 
-    ------------------
-    -- Delete_Fixup --
-    ------------------
- 
-    procedure Delete_Fixup (Tree : in out Tree_Type; Node : Node_Access) is
- 
-       --  CLR p274
- 
-       X : Node_Access := Node;
-       W : Node_Access;
- 
-    begin
-       while X /= Tree.Root
-         and then Color (X) = Black
-       loop
-          if X = Left (Parent (X)) then
-             W := Right (Parent (X));
- 
-             if Color (W) = Red then
-                Set_Color (W, Black);
-                Set_Color (Parent (X), Red);
-                Left_Rotate (Tree, Parent (X));
-                W := Right (Parent (X));
-             end if;
- 
-             if (Left (W)  = null or else Color (Left (W)) = Black)
-               and then
-                (Right (W) = null or else Color (Right (W)) = Black)
-             then
-                Set_Color (W, Red);
-                X := Parent (X);
- 
-             else
-                if Right (W) = null
-                  or else Color (Right (W)) = Black
-                then
-                   --  As a condition for setting the color of the left child to
-                   --  black, the left child access value must be non-null. A
-                   --  truth table analysis shows that if we arrive here, that
-                   --  condition holds, so there's no need for an explicit test.
-                   --  The assertion is here to document what we know is true.
- 
-                   pragma Assert (Left (W) /= null);
-                   Set_Color (Left (W), Black);
- 
-                   Set_Color (W, Red);
-                   Right_Rotate (Tree, W);
-                   W := Right (Parent (X));
-                end if;
- 
-                Set_Color (W, Color (Parent (X)));
-                Set_Color (Parent (X), Black);
-                Set_Color (Right (W), Black);
-                Left_Rotate  (Tree, Parent (X));
-                X := Tree.Root;
-             end if;
- 
-          else
-             pragma Assert (X = Right (Parent (X)));
- 
-             W := Left (Parent (X));
- 
-             if Color (W) = Red then
-                Set_Color (W, Black);
-                Set_Color (Parent (X), Red);
-                Right_Rotate (Tree, Parent (X));
-                W := Left (Parent (X));
-             end if;
- 
-             if (Left (W)  = null or else Color (Left (W)) = Black)
-                   and then
-                (Right (W) = null or else Color (Right (W)) = Black)
-             then
-                Set_Color (W, Red);
-                X := Parent (X);
- 
-             else
-                if Left (W) = null or else Color (Left (W)) = Black then
- 
-                   --  As a condition for setting the color of the right child
-                   --  to black, the right child access value must be non-null.
-                   --  A truth table analysis shows that if we arrive here, that
-                   --  condition holds, so there's no need for an explicit test.
-                   --  The assertion is here to document what we know is true.
- 
-                   pragma Assert (Right (W) /= null);
-                   Set_Color (Right (W), Black);
- 
-                   Set_Color (W, Red);
-                   Left_Rotate (Tree, W);
-                   W := Left (Parent (X));
-                end if;
- 
-                Set_Color (W, Color (Parent (X)));
-                Set_Color (Parent (X), Black);
-                Set_Color (Left (W), Black);
-                Right_Rotate (Tree, Parent (X));
-                X := Tree.Root;
-             end if;
-          end if;
-       end loop;
- 
-       Set_Color (X, Black);
-    end Delete_Fixup;
- 
-    ---------------------------
-    -- Delete_Node_Sans_Free --
-    ---------------------------
- 
-    procedure Delete_Node_Sans_Free
-      (Tree : in out Tree_Type;
-       Node : Node_Access)
-    is
-       --  CLR p273
- 
-       X, Y : Node_Access;
- 
-       Z : constant Node_Access := Node;
-       pragma Assert (Z /= null);
- 
-    begin
-       TC_Check (Tree.TC);
- 
-       --  Why are these all commented out ???
- 
- --    pragma Assert (Tree.Length > 0);
- --    pragma Assert (Tree.Root /= null);
- --    pragma Assert (Tree.First /= null);
- --    pragma Assert (Tree.Last /= null);
- --    pragma Assert (Parent (Tree.Root) = null);
- --    pragma Assert ((Tree.Length > 1)
- --                      or else (Tree.First = Tree.Last
- --                                 and then Tree.First = Tree.Root));
- --    pragma Assert ((Left (Node) = null)
- --                      or else (Parent (Left (Node)) = Node));
- --    pragma Assert ((Right (Node) = null)
- --                      or else (Parent (Right (Node)) = Node));
- --    pragma Assert (((Parent (Node) = null) and then (Tree.Root = Node))
- --                      or else ((Parent (Node) /= null) and then
- --                                ((Left (Parent (Node)) = Node)
- --                                   or else (Right (Parent (Node)) = Node))));
- 
-       if Left (Z) = null then
-          if Right (Z) = null then
-             if Z = Tree.First then
-                Tree.First := Parent (Z);
-             end if;
- 
-             if Z = Tree.Last then
-                Tree.Last := Parent (Z);
-             end if;
- 
-             if Color (Z) = Black then
-                Delete_Fixup (Tree, Z);
-             end if;
- 
-             pragma Assert (Left (Z) = null);
-             pragma Assert (Right (Z) = null);
- 
-             if Z = Tree.Root then
-                pragma Assert (Tree.Length = 1);
-                pragma Assert (Parent (Z) = null);
-                Tree.Root := null;
-             elsif Z = Left (Parent (Z)) then
-                Set_Left (Parent (Z), null);
-             else
-                pragma Assert (Z = Right (Parent (Z)));
-                Set_Right (Parent (Z), null);
-             end if;
- 
-          else
-             pragma Assert (Z /= Tree.Last);
- 
-             X := Right (Z);
- 
-             if Z = Tree.First then
-                Tree.First := Min (X);
-             end if;
- 
-             if Z = Tree.Root then
-                Tree.Root := X;
-             elsif Z = Left (Parent (Z)) then
-                Set_Left (Parent (Z), X);
-             else
-                pragma Assert (Z = Right (Parent (Z)));
-                Set_Right (Parent (Z), X);
-             end if;
- 
-             Set_Parent (X, Parent (Z));
- 
-             if Color (Z) = Black then
-                Delete_Fixup (Tree, X);
-             end if;
-          end if;
- 
-       elsif Right (Z) = null then
-          pragma Assert (Z /= Tree.First);
- 
-          X := Left (Z);
- 
-          if Z = Tree.Last then
-             Tree.Last := Max (X);
-          end if;
- 
-          if Z = Tree.Root then
-             Tree.Root := X;
-          elsif Z = Left (Parent (Z)) then
-             Set_Left (Parent (Z), X);
-          else
-             pragma Assert (Z = Right (Parent (Z)));
-             Set_Right (Parent (Z), X);
-          end if;
- 
-          Set_Parent (X, Parent (Z));
- 
-          if Color (Z) = Black then
-             Delete_Fixup (Tree, X);
-          end if;
- 
-       else
-          pragma Assert (Z /= Tree.First);
-          pragma Assert (Z /= Tree.Last);
- 
-          Y := Next (Z);
-          pragma Assert (Left (Y) = null);
- 
-          X := Right (Y);
- 
-          if X = null then
-             if Y = Left (Parent (Y)) then
-                pragma Assert (Parent (Y) /= Z);
-                Delete_Swap (Tree, Z, Y);
-                Set_Left (Parent (Z), Z);
- 
-             else
-                pragma Assert (Y = Right (Parent (Y)));
-                pragma Assert (Parent (Y) = Z);
-                Set_Parent (Y, Parent (Z));
- 
-                if Z = Tree.Root then
-                   Tree.Root := Y;
-                elsif Z = Left (Parent (Z)) then
-                   Set_Left (Parent (Z), Y);
-                else
-                   pragma Assert (Z = Right (Parent (Z)));
-                   Set_Right (Parent (Z), Y);
-                end if;
- 
-                Set_Left (Y, Left (Z));
-                Set_Parent (Left (Y), Y);
-                Set_Right (Y, Z);
-                Set_Parent (Z, Y);
-                Set_Left (Z, null);
-                Set_Right (Z, null);
- 
-                declare
-                   Y_Color : constant Color_Type := Color (Y);
-                begin
-                   Set_Color (Y, Color (Z));
-                   Set_Color (Z, Y_Color);
-                end;
-             end if;
- 
-             if Color (Z) = Black then
-                Delete_Fixup (Tree, Z);
-             end if;
- 
-             pragma Assert (Left (Z) = null);
-             pragma Assert (Right (Z) = null);
- 
-             if Z = Right (Parent (Z)) then
-                Set_Right (Parent (Z), null);
-             else
-                pragma Assert (Z = Left (Parent (Z)));
-                Set_Left (Parent (Z), null);
-             end if;
- 
-          else
-             if Y = Left (Parent (Y)) then
-                pragma Assert (Parent (Y) /= Z);
- 
-                Delete_Swap (Tree, Z, Y);
- 
-                Set_Left (Parent (Z), X);
-                Set_Parent (X, Parent (Z));
- 
-             else
-                pragma Assert (Y = Right (Parent (Y)));
-                pragma Assert (Parent (Y) = Z);
- 
-                Set_Parent (Y, Parent (Z));
- 
-                if Z = Tree.Root then
-                   Tree.Root := Y;
-                elsif Z = Left (Parent (Z)) then
-                   Set_Left (Parent (Z), Y);
-                else
-                   pragma Assert (Z = Right (Parent (Z)));
-                   Set_Right (Parent (Z), Y);
-                end if;
- 
-                Set_Left (Y, Left (Z));
-                Set_Parent (Left (Y), Y);
- 
-                declare
-                   Y_Color : constant Color_Type := Color (Y);
-                begin
-                   Set_Color (Y, Color (Z));
-                   Set_Color (Z, Y_Color);
-                end;
-             end if;
- 
-             if Color (Z) = Black then
-                Delete_Fixup (Tree, X);
-             end if;
-          end if;
-       end if;
- 
-       Tree.Length := Tree.Length - 1;
-    end Delete_Node_Sans_Free;
- 
-    -----------------
-    -- Delete_Swap --
-    -----------------
- 
-    procedure Delete_Swap
-      (Tree : in out Tree_Type;
-       Z, Y : Node_Access)
-    is
-       pragma Assert (Z /= Y);
-       pragma Assert (Parent (Y) /= Z);
- 
-       Y_Parent : constant Node_Access := Parent (Y);
-       Y_Color  : constant Color_Type  := Color (Y);
- 
-    begin
-       Set_Parent (Y, Parent (Z));
-       Set_Left (Y, Left (Z));
-       Set_Right (Y, Right (Z));
-       Set_Color (Y, Color (Z));
- 
-       if Tree.Root = Z then
-          Tree.Root := Y;
-       elsif Right (Parent (Y)) = Z then
-          Set_Right (Parent (Y), Y);
-       else
-          pragma Assert (Left (Parent (Y)) = Z);
-          Set_Left (Parent (Y), Y);
-       end if;
- 
-       if Right (Y) /= null then
-          Set_Parent (Right (Y), Y);
-       end if;
- 
-       if Left (Y) /= null then
-          Set_Parent (Left (Y), Y);
-       end if;
- 
-       Set_Parent (Z, Y_Parent);
-       Set_Color (Z, Y_Color);
-       Set_Left (Z, null);
-       Set_Right (Z, null);
-    end Delete_Swap;
- 
-    --------------------
-    -- Generic_Adjust --
-    --------------------
- 
-    procedure Generic_Adjust (Tree : in out Tree_Type) is
-       N    : constant Count_Type := Tree.Length;
-       Root : constant Node_Access := Tree.Root;
-       use type Helpers.Tamper_Counts;
-    begin
-       --  If the counts are nonzero, execution is technically erroneous, but
-       --  it seems friendly to allow things like concurrent "=" on shared
-       --  constants.
- 
-       Zero_Counts (Tree.TC);
- 
-       if N = 0 then
-          pragma Assert (Root = null);
-          return;
-       end if;
- 
-       Tree.Root := null;
-       Tree.First := null;
-       Tree.Last := null;
-       Tree.Length := 0;
- 
-       Tree.Root := Copy_Tree (Root);
-       Tree.First := Min (Tree.Root);
-       Tree.Last := Max (Tree.Root);
-       Tree.Length := N;
-    end Generic_Adjust;
- 
-    -------------------
-    -- Generic_Clear --
-    -------------------
- 
-    procedure Generic_Clear (Tree : in out Tree_Type) is
-       Root : Node_Access := Tree.Root;
-    begin
-       TC_Check (Tree.TC);
- 
-       Tree := (First  => null,
-                Last   => null,
-                Root   => null,
-                Length => 0,
-                TC     => <>);
- 
-       Delete_Tree (Root);
-    end Generic_Clear;
- 
-    -----------------------
-    -- Generic_Copy_Tree --
-    -----------------------
- 
-    function Generic_Copy_Tree (Source_Root : Node_Access) return Node_Access is
-       Target_Root : Node_Access := Copy_Node (Source_Root);
-       P, X        : Node_Access;
- 
-    begin
-       if Right (Source_Root) /= null then
-          Set_Right
-            (Node  => Target_Root,
-             Right => Generic_Copy_Tree (Right (Source_Root)));
- 
-          Set_Parent
-            (Node   => Right (Target_Root),
-             Parent => Target_Root);
-       end if;
- 
-       P := Target_Root;
- 
-       X := Left (Source_Root);
-       while X /= null loop
-          declare
-             Y : constant Node_Access := Copy_Node (X);
-          begin
-             Set_Left (Node => P, Left => Y);
-             Set_Parent (Node => Y, Parent => P);
- 
-             if Right (X) /= null then
-                Set_Right
-                  (Node  => Y,
-                   Right => Generic_Copy_Tree (Right (X)));
- 
-                Set_Parent
-                  (Node   => Right (Y),
-                   Parent => Y);
-             end if;
- 
-             P := Y;
-             X := Left (X);
-          end;
-       end loop;
- 
-       return Target_Root;
- 
-    exception
-       when others =>
-          Delete_Tree (Target_Root);
-          raise;
-    end Generic_Copy_Tree;
- 
-    -------------------------
-    -- Generic_Delete_Tree --
-    -------------------------
- 
-    procedure Generic_Delete_Tree (X : in out Node_Access) is
-       Y : Node_Access;
-       pragma Warnings (Off, Y);
-    begin
-       while X /= null loop
-          Y := Right (X);
-          Generic_Delete_Tree (Y);
-          Y := Left (X);
-          Free (X);
-          X := Y;
-       end loop;
-    end Generic_Delete_Tree;
- 
-    -------------------
-    -- Generic_Equal --
-    -------------------
- 
-    function Generic_Equal (Left, Right : Tree_Type) return Boolean is
-    begin
-       if Left.Length /= Right.Length then
-          return False;
-       end if;
- 
-       --  If the containers are empty, return a result immediately, so as to
-       --  not manipulate the tamper bits unnecessarily.
- 
-       if Left.Length = 0 then
-          return True;
-       end if;
- 
-       declare
-          Lock_Left : With_Lock (Left.TC'Unrestricted_Access);
-          Lock_Right : With_Lock (Right.TC'Unrestricted_Access);
- 
-          L_Node : Node_Access := Left.First;
-          R_Node : Node_Access := Right.First;
-       begin
-          while L_Node /= null loop
-             if not Is_Equal (L_Node, R_Node) then
-                return False;
-             end if;
- 
-             L_Node := Next (L_Node);
-             R_Node := Next (R_Node);
-          end loop;
-       end;
- 
-       return True;
-    end Generic_Equal;
- 
-    -----------------------
-    -- Generic_Iteration --
-    -----------------------
- 
-    procedure Generic_Iteration (Tree : Tree_Type) is
-       procedure Iterate (P : Node_Access);
- 
-       -------------
-       -- Iterate --
-       -------------
- 
-       procedure Iterate (P : Node_Access) is
-          X : Node_Access := P;
-       begin
-          while X /= null loop
-             Iterate (Left (X));
-             Process (X);
-             X := Right (X);
-          end loop;
-       end Iterate;
- 
-    --  Start of processing for Generic_Iteration
- 
-    begin
-       Iterate (Tree.Root);
-    end Generic_Iteration;
- 
-    ------------------
-    -- Generic_Move --
-    ------------------
- 
-    procedure Generic_Move (Target, Source : in out Tree_Type) is
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       TC_Check (Source.TC);
- 
-       Clear (Target);
- 
-       Target := Source;
- 
-       Source := (First  => null,
-                  Last   => null,
-                  Root   => null,
-                  Length => 0,
-                  TC     => <>);
-    end Generic_Move;
- 
-    ------------------
-    -- Generic_Read --
-    ------------------
- 
-    procedure Generic_Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Tree   : in out Tree_Type)
-    is
-       N : Count_Type'Base;
- 
-       Node, Last_Node : Node_Access;
- 
-    begin
-       Clear (Tree);
- 
-       Count_Type'Base'Read (Stream, N);
-       pragma Assert (N >= 0);
- 
-       if N = 0 then
-          return;
-       end if;
- 
-       Node := Read_Node (Stream);
-       pragma Assert (Node /= null);
-       pragma Assert (Color (Node) = Red);
- 
-       Set_Color (Node, Black);
- 
-       Tree.Root := Node;
-       Tree.First := Node;
-       Tree.Last := Node;
- 
-       Tree.Length := 1;
- 
-       for J in Count_Type range 2 .. N loop
-          Last_Node := Node;
-          pragma Assert (Last_Node = Tree.Last);
- 
-          Node := Read_Node (Stream);
-          pragma Assert (Node /= null);
-          pragma Assert (Color (Node) = Red);
- 
-          Set_Right (Node => Last_Node, Right => Node);
-          Tree.Last := Node;
-          Set_Parent (Node => Node, Parent => Last_Node);
-          Rebalance_For_Insert (Tree, Node);
-          Tree.Length := Tree.Length + 1;
-       end loop;
-    end Generic_Read;
- 
-    -------------------------------
-    -- Generic_Reverse_Iteration --
-    -------------------------------
- 
-    procedure Generic_Reverse_Iteration (Tree : Tree_Type)
-    is
-       procedure Iterate (P : Node_Access);
- 
-       -------------
-       -- Iterate --
-       -------------
- 
-       procedure Iterate (P : Node_Access) is
-          X : Node_Access := P;
-       begin
-          while X /= null loop
-             Iterate (Right (X));
-             Process (X);
-             X := Left (X);
-          end loop;
-       end Iterate;
- 
-    --  Start of processing for Generic_Reverse_Iteration
- 
-    begin
-       Iterate (Tree.Root);
-    end Generic_Reverse_Iteration;
- 
-    -------------------
-    -- Generic_Write --
-    -------------------
- 
-    procedure Generic_Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Tree   : Tree_Type)
-    is
-       procedure Process (Node : Node_Access);
-       pragma Inline (Process);
- 
-       procedure Iterate is
-          new Generic_Iteration (Process);
- 
-       -------------
-       -- Process --
-       -------------
- 
-       procedure Process (Node : Node_Access) is
-       begin
-          Write_Node (Stream, Node);
-       end Process;
- 
-    --  Start of processing for Generic_Write
- 
-    begin
-       Count_Type'Base'Write (Stream, Tree.Length);
-       Iterate (Tree);
-    end Generic_Write;
- 
-    -----------------
-    -- Left_Rotate --
-    -----------------
- 
-    procedure Left_Rotate (Tree : in out Tree_Type; X : Node_Access) is
- 
-       --  CLR p266
- 
-       Y : constant Node_Access := Right (X);
-       pragma Assert (Y /= null);
- 
-    begin
-       Set_Right (X, Left (Y));
- 
-       if Left (Y) /= null then
-          Set_Parent (Left (Y), X);
-       end if;
- 
-       Set_Parent (Y, Parent (X));
- 
-       if X = Tree.Root then
-          Tree.Root := Y;
-       elsif X = Left (Parent (X)) then
-          Set_Left (Parent (X), Y);
-       else
-          pragma Assert (X = Right (Parent (X)));
-          Set_Right (Parent (X), Y);
-       end if;
- 
-       Set_Left (Y, X);
-       Set_Parent (X, Y);
-    end Left_Rotate;
- 
-    ---------
-    -- Max --
-    ---------
- 
-    function Max (Node : Node_Access) return Node_Access is
- 
-       --  CLR p248
- 
-       X : Node_Access := Node;
-       Y : Node_Access;
- 
-    begin
-       loop
-          Y := Right (X);
- 
-          if Y = null then
-             return X;
-          end if;
- 
-          X := Y;
-       end loop;
-    end Max;
- 
-    ---------
-    -- Min --
-    ---------
- 
-    function Min (Node : Node_Access) return Node_Access is
- 
-       --  CLR p248
- 
-       X : Node_Access := Node;
-       Y : Node_Access;
- 
-    begin
-       loop
-          Y := Left (X);
- 
-          if Y = null then
-             return X;
-          end if;
- 
-          X := Y;
-       end loop;
-    end Min;
- 
-    ----------
-    -- Next --
-    ----------
- 
-    function Next (Node : Node_Access) return Node_Access is
-    begin
-       --  CLR p249
- 
-       if Node = null then
-          return null;
-       end if;
- 
-       if Right (Node) /= null then
-          return Min (Right (Node));
-       end if;
- 
-       declare
-          X : Node_Access := Node;
-          Y : Node_Access := Parent (Node);
- 
-       begin
-          while Y /= null
-            and then X = Right (Y)
-          loop
-             X := Y;
-             Y := Parent (Y);
-          end loop;
- 
-          return Y;
-       end;
-    end Next;
- 
-    --------------
-    -- Previous --
-    --------------
- 
-    function Previous (Node : Node_Access) return Node_Access is
-    begin
-       if Node = null then
-          return null;
-       end if;
- 
-       if Left (Node) /= null then
-          return Max (Left (Node));
-       end if;
- 
-       declare
-          X : Node_Access := Node;
-          Y : Node_Access := Parent (Node);
- 
-       begin
-          while Y /= null
-            and then X = Left (Y)
-          loop
-             X := Y;
-             Y := Parent (Y);
-          end loop;
- 
-          return Y;
-       end;
-    end Previous;
- 
-    --------------------------
-    -- Rebalance_For_Insert --
-    --------------------------
- 
-    procedure Rebalance_For_Insert
-      (Tree : in out Tree_Type;
-       Node : Node_Access)
-    is
-       --  CLR p.268
- 
-       X : Node_Access := Node;
-       pragma Assert (X /= null);
-       pragma Assert (Color (X) = Red);
- 
-       Y : Node_Access;
- 
-    begin
-       while X /= Tree.Root and then Color (Parent (X)) = Red loop
-          if Parent (X) = Left (Parent (Parent (X))) then
-             Y := Right (Parent (Parent (X)));
- 
-             if Y /= null and then Color (Y) = Red then
-                Set_Color (Parent (X), Black);
-                Set_Color (Y, Black);
-                Set_Color (Parent (Parent (X)), Red);
-                X := Parent (Parent (X));
- 
-             else
-                if X = Right (Parent (X)) then
-                   X := Parent (X);
-                   Left_Rotate (Tree, X);
-                end if;
- 
-                Set_Color (Parent (X), Black);
-                Set_Color (Parent (Parent (X)), Red);
-                Right_Rotate (Tree, Parent (Parent (X)));
-             end if;
- 
-          else
-             pragma Assert (Parent (X) = Right (Parent (Parent (X))));
- 
-             Y := Left (Parent (Parent (X)));
- 
-             if Y /= null and then Color (Y) = Red then
-                Set_Color (Parent (X), Black);
-                Set_Color (Y, Black);
-                Set_Color (Parent (Parent (X)), Red);
-                X := Parent (Parent (X));
- 
-             else
-                if X = Left (Parent (X)) then
-                   X := Parent (X);
-                   Right_Rotate (Tree, X);
-                end if;
- 
-                Set_Color (Parent (X), Black);
-                Set_Color (Parent (Parent (X)), Red);
-                Left_Rotate (Tree, Parent (Parent (X)));
-             end if;
-          end if;
-       end loop;
- 
-       Set_Color (Tree.Root, Black);
-    end Rebalance_For_Insert;
- 
-    ------------------
-    -- Right_Rotate --
-    ------------------
- 
-    procedure Right_Rotate (Tree : in out Tree_Type; Y : Node_Access) is
-       X : constant Node_Access := Left (Y);
-       pragma Assert (X /= null);
- 
-    begin
-       Set_Left (Y, Right (X));
- 
-       if Right (X) /= null then
-          Set_Parent (Right (X), Y);
-       end if;
- 
-       Set_Parent (X, Parent (Y));
- 
-       if Y = Tree.Root then
-          Tree.Root := X;
-       elsif Y = Left (Parent (Y)) then
-          Set_Left (Parent (Y), X);
-       else
-          pragma Assert (Y = Right (Parent (Y)));
-          Set_Right (Parent (Y), X);
-       end if;
- 
-       Set_Right (X, Y);
-       Set_Parent (Y, X);
-    end Right_Rotate;
- 
-    ---------
-    -- Vet --
-    ---------
- 
-    function Vet (Tree : Tree_Type; Node : Node_Access) return Boolean is
-    begin
-       if Node = null then
-          return True;
-       end if;
- 
-       if Parent (Node) = Node
-         or else Left (Node) = Node
-         or else Right (Node) = Node
-       then
-          return False;
-       end if;
- 
-       if Tree.Length = 0
-         or else Tree.Root = null
-         or else Tree.First = null
-         or else Tree.Last = null
-       then
-          return False;
-       end if;
- 
-       if Parent (Tree.Root) /= null then
-          return False;
-       end if;
- 
-       if Left (Tree.First) /= null then
-          return False;
-       end if;
- 
-       if Right (Tree.Last) /= null then
-          return False;
-       end if;
- 
-       if Tree.Length = 1 then
-          if Tree.First /= Tree.Last
-            or else Tree.First /= Tree.Root
-          then
-             return False;
-          end if;
- 
-          if Node /= Tree.First then
-             return False;
-          end if;
- 
-          if Parent (Node) /= null
-            or else Left (Node) /= null
-            or else Right (Node) /= null
-          then
-             return False;
-          end if;
- 
-          return True;
-       end if;
- 
-       if Tree.First = Tree.Last then
-          return False;
-       end if;
- 
-       if Tree.Length = 2 then
-          if Tree.First /= Tree.Root
-            and then Tree.Last /= Tree.Root
-          then
-             return False;
-          end if;
- 
-          if Tree.First /= Node
-            and then Tree.Last /= Node
-          then
-             return False;
-          end if;
-       end if;
- 
-       if Left (Node) /= null
-         and then Parent (Left (Node)) /= Node
-       then
-          return False;
-       end if;
- 
-       if Right (Node) /= null
-         and then Parent (Right (Node)) /= Node
-       then
-          return False;
-       end if;
- 
-       if Parent (Node) = null then
-          if Tree.Root /= Node then
-             return False;
-          end if;
- 
-       elsif Left (Parent (Node)) /= Node
-         and then Right (Parent (Node)) /= Node
-       then
-          return False;
-       end if;
- 
-       return True;
-    end Vet;
- 
- end Ada.Containers.Red_Black_Trees.Generic_Operations;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-crbtgo.ads gcc-8.1.0/gcc/ada/a-crbtgo.ads
*** gcc-7.3.0/gcc/ada/a-crbtgo.ads	Tue Oct 20 10:23:46 2015
--- gcc-8.1.0/gcc/ada/a-crbtgo.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,163 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --             ADA.CONTAINERS.RED_BLACK_TREES.GENERIC_OPERATIONS            --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.                  --
- ------------------------------------------------------------------------------
- 
- --  Tree_Type is used to implement the ordered containers. This package
- --  declares the tree operations that do not depend on keys.
- 
- with Ada.Streams; use Ada.Streams;
- 
- generic
-    with package Tree_Types is new Generic_Tree_Types (<>);
-    use Tree_Types, Tree_Types.Implementation;
- 
-    with function  Parent (Node : Node_Access) return Node_Access is <>;
-    with procedure Set_Parent (Node : Node_Access; Parent : Node_Access) is <>;
-    with function  Left (Node : Node_Access) return Node_Access is <>;
-    with procedure Set_Left (Node : Node_Access; Left : Node_Access) is <>;
-    with function  Right (Node : Node_Access) return Node_Access is <>;
-    with procedure Set_Right (Node : Node_Access; Right : Node_Access) is <>;
-    with function  Color (Node : Node_Access) return Color_Type is <>;
-    with procedure Set_Color (Node : Node_Access; Color : Color_Type) is <>;
- 
- package Ada.Containers.Red_Black_Trees.Generic_Operations is
-    pragma Pure;
- 
-    function Min (Node : Node_Access) return Node_Access;
-    --  Returns the smallest-valued node of the subtree rooted at Node
- 
-    function Max (Node : Node_Access) return Node_Access;
-    --  Returns the largest-valued node of the subtree rooted at Node
- 
-    --  NOTE: The Check_Invariant operation was used during early
-    --  development of the red-black tree. Now that the tree type
-    --  implementation has matured, we don't really need Check_Invariant
-    --  anymore.
- 
-    --  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.
- 
-    function Next (Node : Node_Access) return Node_Access;
-    --  Returns the smallest node greater than Node
- 
-    function Previous (Node : Node_Access) return Node_Access;
-    --  Returns the largest node less than Node
- 
-    generic
-       with function Is_Equal (L, R : Node_Access) return Boolean;
-    function Generic_Equal (Left, Right : Tree_Type) return Boolean;
-    --  Uses Is_Equal to perform a node-by-node comparison of the
-    --  Left and Right trees; processing stops as soon as the first
-    --  non-equal node is found.
- 
-    procedure Delete_Node_Sans_Free
-      (Tree : in out Tree_Type;
-       Node : Node_Access);
-    --  Removes Node from Tree without deallocating the node. If Tree
-    --  is busy then Program_Error is raised.
- 
-    generic
-       with procedure Free (X : in out Node_Access);
-    procedure Generic_Delete_Tree (X : in out Node_Access);
-    --  Deallocates the tree rooted at X, calling Free on each node
- 
-    generic
-       with function Copy_Node (Source : Node_Access) return Node_Access;
-       with procedure Delete_Tree (X : in out Node_Access);
-    function Generic_Copy_Tree (Source_Root : Node_Access) return Node_Access;
-    --  Copies the tree rooted at Source_Root, using Copy_Node to copy each
-    --  node of the source tree. If Copy_Node propagates an exception
-    --  (e.g. Storage_Error), then Delete_Tree is first used to deallocate
-    --  the target tree, and then the exception is propagated.
- 
-    generic
-       with function Copy_Tree (Root : Node_Access) return Node_Access;
-    procedure Generic_Adjust (Tree : in out Tree_Type);
-    --  Used to implement controlled Adjust. On input to Generic_Adjust, Tree
-    --  holds a bitwise (shallow) copy of the source tree (as would be the case
-    --  when controlled Adjust is called). On output, Tree holds its own (deep)
-    --  copy of the source tree, which is constructed by calling Copy_Tree.
- 
-    generic
-       with procedure Delete_Tree (X : in out Node_Access);
-    procedure Generic_Clear (Tree : in out Tree_Type);
-    --  Clears Tree by deallocating all of its nodes. If Tree is busy then
-    --  Program_Error is raised.
- 
-    generic
-       with procedure Clear (Tree : in out Tree_Type);
-    procedure Generic_Move (Target, Source : in out Tree_Type);
-    --  Moves the tree belonging to Source onto Target. If Source is busy then
-    --  Program_Error is raised. Otherwise Target is first cleared (by calling
-    --  Clear, to deallocate its existing tree), then given the Source tree, and
-    --  then finally Source is cleared (by setting its pointers to null).
- 
-    generic
-       with procedure Process (Node : Node_Access) is <>;
-    procedure Generic_Iteration (Tree : Tree_Type);
-    --  Calls Process for each node in Tree, in order from smallest-valued
-    --  node to largest-valued node.
- 
-    generic
-       with procedure Process (Node : Node_Access) is <>;
-    procedure Generic_Reverse_Iteration (Tree : Tree_Type);
-    --  Calls Process for each node in Tree, in order from largest-valued
-    --  node to smallest-valued node.
- 
-    generic
-       with procedure Write_Node
-         (Stream : not null access Root_Stream_Type'Class;
-          Node   : Node_Access);
-    procedure Generic_Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Tree   : Tree_Type);
-    --  Used to implement stream attribute T'Write. Generic_Write
-    --  first writes the number of nodes into Stream, then calls
-    --  Write_Node for each node in Tree.
- 
-    generic
-       with procedure Clear (Tree : in out Tree_Type);
-       with function Read_Node
-         (Stream : not null access Root_Stream_Type'Class) return Node_Access;
-    procedure Generic_Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Tree   : in out Tree_Type);
-    --  Used to implement stream attribute T'Read. Generic_Read
-    --  first clears Tree. It then reads the number of nodes out of
-    --  Stream, and calls Read_Node for each node in Stream.
- 
-    procedure Rebalance_For_Insert
-      (Tree : in out Tree_Type;
-       Node : Node_Access);
-    --  This rebalances Tree to complete the insertion of Node (which
-    --  must already be linked in at its proper insertion position).
- 
- end Ada.Containers.Red_Black_Trees.Generic_Operations;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-crdlli.adb gcc-8.1.0/gcc/ada/a-crdlli.adb
*** gcc-7.3.0/gcc/ada/a-crdlli.adb	Wed Apr 27 13:15:25 2016
--- gcc-8.1.0/gcc/ada/a-crdlli.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,1503 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --              ADA.CONTAINERS.RESTRICTED_DOUBLY_LINKED_LISTS               --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2004-2016, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Restricted_Doubly_Linked_Lists is
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    procedure Allocate
-      (Container : in out List'Class;
-       New_Item  : Element_Type;
-       New_Node  : out Count_Type);
- 
-    procedure Free
-      (Container : in out List'Class;
-       X         : Count_Type);
- 
-    procedure Insert_Internal
-      (Container : in out List'Class;
-       Before    : Count_Type;
-       New_Node  : Count_Type);
- 
-    function Vet (Position : Cursor) return Boolean;
- 
-    ---------
-    -- "=" --
-    ---------
- 
-    function "=" (Left, Right : List) return Boolean is
-       LN : Node_Array renames Left.Nodes;
-       RN : Node_Array renames Right.Nodes;
- 
-       LI : Count_Type := Left.First;
-       RI : Count_Type := Right.First;
- 
-    begin
-       if Left'Address = Right'Address then
-          return True;
-       end if;
- 
-       if Left.Length /= Right.Length then
-          return False;
-       end if;
- 
-       for J in 1 .. Left.Length loop
-          if LN (LI).Element /= RN (RI).Element then
-             return False;
-          end if;
- 
-          LI := LN (LI).Next;
-          RI := RN (RI).Next;
-       end loop;
- 
-       return True;
-    end "=";
- 
-    --------------
-    -- Allocate --
-    --------------
- 
-    procedure Allocate
-      (Container : in out List'Class;
-       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;
-       Count     : Count_Type := 1)
-    is
-    begin
-       Insert (Container, No_Element, New_Item, Count);
-    end Append;
- 
-    ------------
-    -- Assign --
-    ------------
- 
-    procedure Assign (Target : in out List; Source : List) is
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       if Target.Capacity < Source.Length then
-          raise Constraint_Error;  -- ???
-       end if;
- 
-       Clear (Target);
- 
-       declare
-          N : Node_Array renames Source.Nodes;
-          J : Count_Type := Source.First;
- 
-       begin
-          while J /= 0 loop
-             Append (Target, N (J).Element);
-             J := N (J).Next;
-          end loop;
-       end;
-    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);
- --       pragma Assert (Container.Busy = 0);
- --       pragma Assert (Container.Lock = 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);
- 
- --    if Container.Busy > 0 then
- --      raise Program_Error;
- --    end if;
- 
-       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;
- 
-    --------------
-    -- Contains --
-    --------------
- 
-    function Contains
-      (Container : List;
-       Item      : Element_Type) return Boolean
-    is
-    begin
-       return Find (Container, Item) /= No_Element;
-    end Contains;
- 
-    ------------
-    -- Delete --
-    ------------
- 
-    procedure Delete
-      (Container : in out List;
-       Position  : in out Cursor;
-       Count     : Count_Type := 1)
-    is
-       N : Node_Array renames Container.Nodes;
-       X : Count_Type;
- 
-    begin
-       if Position.Node = 0 then
-          raise Constraint_Error;
-       end if;
- 
-       if Position.Container /= Container'Unrestricted_Access then
-          raise Program_Error;
-       end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in Delete");
- 
-       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;
- 
- --    if Container.Busy > 0 then
- --       raise Program_Error;
- --    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);
- 
-       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;
- 
-          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;
-       Count     : Count_Type := 1)
-    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;
- 
- --    if Container.Busy > 0 then
- --       raise Program_Error;
- --    end if;
- 
-       for I 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;
-       Count     : Count_Type := 1)
-    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;
- 
- --    if Container.Busy > 0 then
- --       raise Program_Error;
- --    end if;
- 
-       for I 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 (Position : Cursor) return Element_Type is
-    begin
-       if Position.Node = 0 then
-          raise Constraint_Error;
-       end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in Element");
- 
-       declare
-          N : Node_Array renames Position.Container.Nodes;
-       begin
-          return N (Position.Node).Element;
-       end;
-    end Element;
- 
-    ----------
-    -- Find --
-    ----------
- 
-    function Find
-      (Container : List;
-       Item      : Element_Type;
-       Position  : Cursor := No_Element) return Cursor
-    is
-       Nodes : Node_Array renames Container.Nodes;
-       Node  : Count_Type := Position.Node;
- 
-    begin
-       if Node = 0 then
-          Node := Container.First;
- 
-       else
-          if Position.Container /= Container'Unrestricted_Access then
-             raise Program_Error;
-          end if;
- 
-          pragma Assert (Vet (Position), "bad cursor in Find");
-       end if;
- 
-       while Node /= 0 loop
-          if Nodes (Node).Element = Item then
-             return Cursor'(Container'Unrestricted_Access, Node);
-          end if;
- 
-          Node := Nodes (Node).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 Cursor'(Container'Unrestricted_Access, Container.First);
-    end First;
- 
-    -------------------
-    -- First_Element --
-    -------------------
- 
-    function First_Element (Container : List) return Element_Type is
-       N : Node_Array renames Container.Nodes;
- 
-    begin
-       if Container.First = 0 then
-          raise Constraint_Error;
-       end if;
- 
-       return N (Container.First).Element;
-    end First_Element;
- 
-    ----------
-    -- Free --
-    ----------
- 
-    procedure Free
-      (Container : in out List'Class;
-       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 I in Container.Free .. Container.Capacity - 1 loop
-                N (I).Next := I + 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 is
- 
-       ---------------
-       -- Is_Sorted --
-       ---------------
- 
-       function Is_Sorted (Container : List) return Boolean is
-          Nodes : Node_Array renames Container.Nodes;
-          Node  : Count_Type := Container.First;
- 
-       begin
-          for I in 2 .. Container.Length loop
-             if Nodes (Nodes (Node).Next).Element < Nodes (Node).Element then
-                return False;
-             end if;
- 
-             Node := Nodes (Node).Next;
-          end loop;
- 
-          return True;
-       end Is_Sorted;
- 
-       ----------
-       -- Sort --
-       ----------
- 
-       procedure Sort (Container : in out List) is
-          N : Node_Array renames Container.Nodes;
- 
-          procedure Partition (Pivot, Back : Count_Type);
-          procedure Sort (Front, Back : Count_Type);
- 
-          ---------------
-          -- Partition --
-          ---------------
- 
-          procedure Partition (Pivot, Back : Count_Type) is
-             Node : Count_Type := N (Pivot).Next;
- 
-          begin
-             while Node /= Back loop
-                if N (Node).Element < N (Pivot).Element then
-                   declare
-                      Prev : constant Count_Type := N (Node).Prev;
-                      Next : constant Count_Type := N (Node).Next;
- 
-                   begin
-                      N (Prev).Next := Next;
- 
-                      if Next = 0 then
-                         Container.Last := Prev;
-                      else
-                         N (Next).Prev := Prev;
-                      end if;
- 
-                      N (Node).Next := Pivot;
-                      N (Node).Prev := N (Pivot).Prev;
- 
-                      N (Pivot).Prev := Node;
- 
-                      if N (Node).Prev = 0 then
-                         Container.First := Node;
-                      else
-                         N (N (Node).Prev).Next := Node;
-                      end if;
- 
-                      Node := Next;
-                   end;
- 
-                else
-                   Node := N (Node).Next;
-                end if;
-             end loop;
-          end Partition;
- 
-          ----------
-          -- Sort --
-          ----------
- 
-          procedure Sort (Front, Back : Count_Type) is
-             Pivot : constant Count_Type :=
-               (if Front = 0 then Container.First else N (Front).Next);
-          begin
-             if Pivot /= Back then
-                Partition (Pivot, Back);
-                Sort (Front, Pivot);
-                Sort (Pivot, Back);
-             end if;
-          end Sort;
- 
-       --  Start of processing for Sort
- 
-       begin
-          if Container.Length <= 1 then
-             return;
-          end if;
- 
-          pragma Assert (N (Container.First).Prev = 0);
-          pragma Assert (N (Container.Last).Next = 0);
- 
- --       if Container.Busy > 0 then
- --          raise Program_Error;
- --       end if;
- 
-          Sort (Front => 0, Back => 0);
- 
-          pragma Assert (N (Container.First).Prev = 0);
-          pragma Assert (N (Container.Last).Next = 0);
-       end Sort;
- 
-    end Generic_Sorting;
- 
-    -----------------
-    -- Has_Element --
-    -----------------
- 
-    function Has_Element (Position : Cursor) return Boolean is
-    begin
-       pragma Assert (Vet (Position), "bad cursor in Has_Element");
-       return Position.Node /= 0;
-    end Has_Element;
- 
-    ------------
-    -- Insert --
-    ------------
- 
-    procedure Insert
-      (Container : in out List;
-       Before    : Cursor;
-       New_Item  : Element_Type;
-       Position  : out Cursor;
-       Count     : Count_Type := 1)
-    is
-       First_Node : Count_Type;
-       New_Node   : Count_Type;
- 
-    begin
-       if Before.Container /= null then
-          if Before.Container /= Container'Unrestricted_Access then
-             raise Program_Error;
-          end if;
- 
-          pragma Assert (Vet (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;
-       end if;
- 
- --    if Container.Busy > 0 then
- --       raise Program_Error;
- --    end if;
- 
-       Allocate (Container, New_Item, New_Node);
-       First_Node := New_Node;
-       Insert_Internal (Container, Before.Node, New_Node);
- 
-       for Index in 2 .. Count loop
-          Allocate (Container, New_Item, New_Node);
-          Insert_Internal (Container, Before.Node, New_Node);
-       end loop;
- 
-       Position := Cursor'(Container'Unrestricted_Access, First_Node);
-    end Insert;
- 
-    procedure Insert
-      (Container : in out List;
-       Before    : Cursor;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1)
-    is
-       Position : Cursor;
-       pragma Unreferenced (Position);
-    begin
-       Insert (Container, Before, New_Item, Position, Count);
-    end Insert;
- 
-    procedure Insert
-      (Container : in out List;
-       Before    : Cursor;
-       Position  : out Cursor;
-       Count     : Count_Type := 1)
-    is
-       New_Item : Element_Type;  -- Do we need to reinit node ???
-       pragma Warnings (Off, New_Item);
- 
-    begin
-       Insert (Container, Before, New_Item, Position, Count);
-    end Insert;
- 
-    ---------------------
-    -- Insert_Internal --
-    ---------------------
- 
-    procedure Insert_Internal
-      (Container : in out List'Class;
-       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 Container.Length = 0;
-    end Is_Empty;
- 
-    -------------
-    -- Iterate --
-    -------------
- 
-    procedure Iterate
-      (Container : List;
-       Process   : not null access procedure (Position : Cursor))
-    is
-       C : List renames Container'Unrestricted_Access.all;
-       N : Node_Array renames C.Nodes;
- --    B : Natural renames C.Busy;
- 
-       Node  : Count_Type := Container.First;
- 
-       Index     : Count_Type := 0;
-       Index_Max : constant Count_Type := Container.Length;
- 
-    begin
-       if Index_Max = 0 then
-          pragma Assert (Node = 0);
-          return;
-       end if;
- 
-       loop
-          pragma Assert (Node /= 0);
- 
-          Process (Cursor'(C'Unchecked_Access, Node));
-          pragma Assert (Container.Length = Index_Max);
-          pragma Assert (N (Node).Prev /= -1);
- 
-          Node := N (Node).Next;
-          Index := Index + 1;
- 
-          if Index = Index_Max then
-             pragma Assert (Node = 0);
-             return;
-          end if;
-       end loop;
-    end Iterate;
- 
-    ----------
-    -- Last --
-    ----------
- 
-    function Last (Container : List) return Cursor is
-    begin
-       if Container.Last = 0 then
-          return No_Element;
-       end if;
- 
-       return Cursor'(Container'Unrestricted_Access, Container.Last);
-    end Last;
- 
-    ------------------
-    -- Last_Element --
-    ------------------
- 
-    function Last_Element (Container : List) return Element_Type is
-       N : Node_Array renames Container.Nodes;
- 
-    begin
-       if Container.Last = 0 then
-          raise Constraint_Error;
-       end if;
- 
-       return N (Container.Last).Element;
-    end Last_Element;
- 
-    ------------
-    -- Length --
-    ------------
- 
-    function Length (Container : List) return Count_Type is
-    begin
-       return Container.Length;
-    end Length;
- 
-    ----------
-    -- Next --
-    ----------
- 
-    procedure Next (Position : in out Cursor) is
-    begin
-       Position := Next (Position);
-    end Next;
- 
-    function Next (Position : Cursor) return Cursor is
-    begin
-       if Position.Node = 0 then
-          return No_Element;
-       end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in Next");
- 
-       declare
-          Nodes : Node_Array renames Position.Container.Nodes;
-          Node  : constant Count_Type := Nodes (Position.Node).Next;
- 
-       begin
-          if Node = 0 then
-             return No_Element;
-          end if;
- 
-          return Cursor'(Position.Container, Node);
-       end;
-    end Next;
- 
-    -------------
-    -- Prepend --
-    -------------
- 
-    procedure Prepend
-      (Container : in out List;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1)
-    is
-    begin
-       Insert (Container, First (Container), New_Item, Count);
-    end Prepend;
- 
-    --------------
-    -- Previous --
-    --------------
- 
-    procedure Previous (Position : in out Cursor) is
-    begin
-       Position := Previous (Position);
-    end Previous;
- 
-    function Previous (Position : Cursor) return Cursor is
-    begin
-       if Position.Node = 0 then
-          return No_Element;
-       end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in Previous");
- 
-       declare
-          Nodes : Node_Array renames Position.Container.Nodes;
-          Node  : constant Count_Type := Nodes (Position.Node).Prev;
-       begin
-          if Node = 0 then
-             return No_Element;
-          end if;
- 
-          return Cursor'(Position.Container, Node);
-       end;
-    end Previous;
- 
-    -------------------
-    -- Query_Element --
-    -------------------
- 
-    procedure Query_Element
-      (Position : Cursor;
-       Process  : not null access procedure (Element : Element_Type))
-    is
-    begin
-       if Position.Node = 0 then
-          raise Constraint_Error;
-       end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in Query_Element");
- 
-       declare
-          C : List renames Position.Container.all'Unrestricted_Access.all;
-          N : Node_Type renames C.Nodes (Position.Node);
- 
-       begin
-          Process (N.Element);
-          pragma Assert (N.Prev >= 0);
-       end;
-    end Query_Element;
- 
-    ---------------------
-    -- Replace_Element --
-    ---------------------
- 
-    procedure Replace_Element
-      (Container : in out List;
-       Position  : Cursor;
-       New_Item  : Element_Type)
-    is
-    begin
-       if Position.Container = null then
-          raise Constraint_Error;
-       end if;
- 
-       if Position.Container /= Container'Unrestricted_Access then
-          raise Program_Error;
-       end if;
- 
- --    if Container.Lock > 0 then
- --       raise Program_Error;
- --    end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in Replace_Element");
- 
-       declare
-          N : Node_Array renames Container.Nodes;
-       begin
-          N (Position.Node).Element := New_Item;
-       end;
-    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, R : Count_Type);
- 
-       ----------
-       -- Swap --
-       ----------
- 
-       procedure Swap (L, 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);
- 
- --    if Container.Busy > 0 then
- --       raise Program_Error;
- --    end if;
- 
-       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
-       N    : Node_Array renames Container.Nodes;
-       Node : Count_Type := Position.Node;
- 
-    begin
-       if Node = 0 then
-          Node := Container.Last;
- 
-       else
-          if Position.Container /= Container'Unrestricted_Access then
-             raise Program_Error;
-          end if;
- 
-          pragma Assert (Vet (Position), "bad cursor in Reverse_Find");
-       end if;
- 
-       while Node /= 0 loop
-          if N (Node).Element = Item then
-             return Cursor'(Container'Unrestricted_Access, Node);
-          end if;
- 
-          Node := N (Node).Prev;
-       end loop;
- 
-       return No_Element;
-    end Reverse_Find;
- 
-    ---------------------
-    -- Reverse_Iterate --
-    ---------------------
- 
-    procedure Reverse_Iterate
-      (Container : List;
-       Process   : not null access procedure (Position : Cursor))
-    is
-       C : List renames Container'Unrestricted_Access.all;
-       N : Node_Array renames C.Nodes;
- --    B : Natural renames C.Busy;
- 
-       Node : Count_Type := Container.Last;
- 
-       Index     : Count_Type := 0;
-       Index_Max : constant Count_Type := Container.Length;
- 
-    begin
-       if Index_Max = 0 then
-          pragma Assert (Node = 0);
-          return;
-       end if;
- 
-       loop
-          pragma Assert (Node > 0);
- 
-          Process (Cursor'(C'Unchecked_Access, Node));
-          pragma Assert (Container.Length = Index_Max);
-          pragma Assert (N (Node).Prev /= -1);
- 
-          Node := N (Node).Prev;
-          Index := Index + 1;
- 
-          if Index = Index_Max then
-             pragma Assert (Node = 0);
-             return;
-          end if;
-       end loop;
-    end Reverse_Iterate;
- 
-    ------------
-    -- Splice --
-    ------------
- 
-    procedure Splice
-      (Container : in out List;
-       Before    : Cursor;
-       Position  : in out Cursor)
-    is
-       N : Node_Array renames Container.Nodes;
- 
-    begin
-       if Before.Container /= null then
-          if Before.Container /= Container'Unrestricted_Access then
-             raise Program_Error;
-          end if;
- 
-          pragma Assert (Vet (Before), "bad Before cursor in Splice");
-       end if;
- 
-       if Position.Node = 0 then
-          raise Constraint_Error;
-       end if;
- 
-       if Position.Container /= Container'Unrestricted_Access then
-          raise Program_Error;
-       end if;
- 
-       pragma Assert (Vet (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 Container.Busy > 0 then
- --       raise Program_Error;
- --    end if;
- 
-       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, J      : Cursor)
-    is
-    begin
-       if I.Node = 0
-         or else J.Node = 0
-       then
-          raise Constraint_Error;
-       end if;
- 
-       if I.Container /= Container'Unrestricted_Access
-         or else J.Container /= Container'Unrestricted_Access
-       then
-          raise Program_Error;
-       end if;
- 
-       if I.Node = J.Node then
-          return;
-       end if;
- 
- --    if Container.Lock > 0 then
- --       raise Program_Error;
- --    end if;
- 
-       pragma Assert (Vet (I), "bad I cursor in Swap");
-       pragma Assert (Vet (J), "bad J cursor in Swap");
- 
-       declare
-          N  : Node_Array renames Container.Nodes;
- 
-          EI : Element_Type renames N (I.Node).Element;
-          EJ : Element_Type renames N (J.Node).Element;
- 
-          EI_Copy : constant Element_Type := EI;
- 
-       begin
-          EI := EJ;
-          EJ := EI_Copy;
-       end;
-    end Swap;
- 
-    ----------------
-    -- Swap_Links --
-    ----------------
- 
-    procedure Swap_Links
-      (Container : in out List;
-       I, J      : Cursor)
-    is
-    begin
-       if I.Node = 0
-         or else J.Node = 0
-       then
-          raise Constraint_Error;
-       end if;
- 
-       if I.Container /= Container'Unrestricted_Access
-         or else I.Container /= J.Container
-       then
-          raise Program_Error;
-       end if;
- 
-       if I.Node = J.Node then
-          return;
-       end if;
- 
- --    if Container.Busy > 0 then
- --       raise Program_Error;
- --    end if;
- 
-       pragma Assert (Vet (I), "bad I cursor in Swap_Links");
-       pragma Assert (Vet (J), "bad J cursor in Swap_Links");
- 
-       declare
-          I_Next : constant Cursor := Next (I);
- 
-          J_Copy : Cursor := J;
-          pragma Warnings (Off, J_Copy);
- 
-       begin
-          if I_Next = J then
-             Splice (Container, Before => I, Position => J_Copy);
- 
-          else
-             declare
-                J_Next : constant Cursor := Next (J);
- 
-                I_Copy : Cursor := I;
-                pragma Warnings (Off, I_Copy);
- 
-             begin
-                if J_Next = I then
-                   Splice (Container, Before => J, Position => I_Copy);
- 
-                else
-                   pragma Assert (Container.Length >= 3);
- 
-                   Splice (Container, Before => I_Next, Position => J_Copy);
-                   Splice (Container, Before => J_Next, Position => I_Copy);
-                end if;
-             end;
-          end if;
-       end;
-    end Swap_Links;
- 
-    --------------------
-    -- Update_Element --
-    --------------------
- 
-    procedure Update_Element
-      (Container : in out List;
-       Position  : Cursor;
-       Process   : not null access procedure (Element : in out Element_Type))
-    is
-    begin
-       if Position.Node = 0 then
-          raise Constraint_Error;
-       end if;
- 
-       if Position.Container /= Container'Unrestricted_Access then
-          raise Program_Error;
-       end if;
- 
-       pragma Assert (Vet (Position), "bad cursor in Update_Element");
- 
-       declare
-          N  : Node_Type renames Container.Nodes (Position.Node);
- 
-       begin
-          Process (N.Element);
-          pragma Assert (N.Prev >= 0);
-       end;
-    end Update_Element;
- 
-    ---------
-    -- Vet --
-    ---------
- 
-    function Vet (Position : Cursor) return Boolean is
-    begin
-       if Position.Node = 0 then
-          return Position.Container = null;
-       end if;
- 
-       if Position.Container = null then
-          return False;
-       end if;
- 
-       declare
-          L : List renames Position.Container.all;
-          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;
-    end Vet;
- 
- end Ada.Containers.Restricted_Doubly_Linked_Lists;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-crdlli.ads gcc-8.1.0/gcc/ada/a-crdlli.ads
*** gcc-7.3.0/gcc/ada/a-crdlli.ads	Tue Oct 20 12:05:48 2015
--- gcc-8.1.0/gcc/ada/a-crdlli.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,337 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --              ADA.CONTAINERS.RESTRICTED_DOUBLY_LINKED_LISTS               --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.                  --
- ------------------------------------------------------------------------------
- 
- --  The doubly-linked list container provides constant-time insertion and
- --  deletion at all positions, and allows iteration in both the forward and
- --  reverse directions. This list form allocates storage for all nodes
- --  statically (there is no dynamic allocation), and a discriminant is used to
- --  specify the capacity. This container is also "restricted", meaning that
- --  even though it does raise exceptions (as described below), it does not use
- --  internal exception handlers. No state changes are made that would need to
- --  be reverted (in the event of an exception), and so as a consequence, this
- --  container cannot detect tampering (of cursors or elements).
- 
- generic
-    type Element_Type is private;
- 
-    with function "=" (Left, Right : Element_Type)
-       return Boolean is <>;
- 
- package Ada.Containers.Restricted_Doubly_Linked_Lists is
-    pragma Pure;
- 
-    type List (Capacity : Count_Type) is tagged limited private;
-    pragma Preelaborable_Initialization (List);
- 
-    type Cursor is private;
-    pragma Preelaborable_Initialization (Cursor);
- 
-    Empty_List : constant List;
-    --  The default value for list objects declared without an explicit
-    --  initialization expression.
- 
-    No_Element : constant Cursor;
-    --  The default value for cursor objects declared without an explicit
-    --  initialization expression.
- 
-    function "=" (Left, Right : List) return Boolean;
-    --  If Left denotes the same list object as Right, then equality returns
-    --  True. If the length of Left is different from the length of Right, then
-    --  it returns False. Otherwise, list equality iterates over Left and Right,
-    --  comparing the element of Left to the corresponding element of Right
-    --  using the generic actual equality operator for elements. If the elements
-    --  compare False, then the iteration terminates and list equality returns
-    --  False. Otherwise, if all elements return True, then list equality
-    --  returns True.
- 
-    procedure Assign (Target : in out List; Source : List);
-    --  If Target denotes the same list object as Source, the operation does
-    --  nothing. If Target.Capacity is less than Source.Length, then it raises
-    --  Constraint_Error. Otherwise, it clears Target, and then inserts each
-    --  element of Source into Target.
- 
-    function Length (Container : List) return Count_Type;
-    --  Returns the total number of (active) elements in Container
- 
-    function Is_Empty (Container : List) return Boolean;
-    --  Returns True if Container.Length is 0
- 
-    procedure Clear (Container : in out List);
-    --  Deletes all elements from Container. Note that this is a bounded
-    --  container and so the element is not "deallocated" in the same sense that
-    --  an unbounded form would deallocate the element. Rather, the node is
-    --  relinked off of the active part of the list and onto the inactive part
-    --  of the list (the storage from which new elements are "allocated").
- 
-    function Element (Position : Cursor) return Element_Type;
-    --  If Position equals No_Element, then Constraint_Error is raised.
-    --  Otherwise, function Element returns the element designed by Position.
- 
-    procedure Replace_Element
-      (Container : in out List;
-       Position  : Cursor;
-       New_Item  : Element_Type);
-    --  If Position equals No_Element, then Constraint_Error is raised. If
-    --  Position is associated with a list object different from Container,
-    --  Program_Error is raised. Otherwise, the element designated by Position
-    --  is assigned the value New_Item.
- 
-    procedure Query_Element
-      (Position : Cursor;
-       Process  : not null access procedure (Element : Element_Type));
-    --  If Position equals No_Element, then Constraint_Error is raised.
-    --  Otherwise, it calls Process with (a constant view of) the element
-    --  designated by Position as the parameter.
- 
-    procedure Update_Element
-      (Container : in out List;
-       Position  : Cursor;
-       Process   : not null access procedure (Element : in out Element_Type));
-    --  If Position equals No_Element, then Constraint_Error is raised.
-    --  Otherwise, it calls Process with (a variable view of) the element
-    --  designated by Position as the parameter.
- 
-    procedure Insert
-      (Container : in out List;
-       Before    : Cursor;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1);
-    --  Inserts Count new elements, all with the value New_Item, into Container,
-    --  immediately prior to the position specified by Before. If Before has the
-    --  value No_Element, this is interpreted to mean that the elements are
-    --  appended to the list. If Before is associated with a list object
-    --  different from Container, then Program_Error is raised. If there are
-    --  fewer than Count nodes available, then Constraint_Error is raised.
- 
-    procedure Insert
-      (Container : in out List;
-       Before    : Cursor;
-       New_Item  : Element_Type;
-       Position  : out Cursor;
-       Count     : Count_Type := 1);
-    --  Inserts elements into Container as described above, but with the
-    --  difference that cursor Position is returned, which designates the first
-    --  of the new elements inserted. If Count is 0, Position returns the value
-    --  Before.
- 
-    procedure Insert
-      (Container : in out List;
-       Before    : Cursor;
-       Position  : out Cursor;
-       Count     : Count_Type := 1);
-    --  Inserts elements in Container as described above, but with the
-    --  difference that the new elements are initialized to the default value
-    --  for objects of type Element_Type.
- 
-    procedure Prepend
-      (Container : in out List;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1);
-    --  Inserts Count elements, all having the value New_Item, prior to the
-    --  first element of Container.
- 
-    procedure Append
-      (Container : in out List;
-       New_Item  : Element_Type;
-       Count     : Count_Type := 1);
-    --  Inserts Count elements, all having the value New_Item, following the
-    --  last element of Container.
- 
-    procedure Delete
-      (Container : in out List;
-       Position  : in out Cursor;
-       Count     : Count_Type := 1);
-    --  If Position equals No_Element, Constraint_Error is raised. If Position
-    --  is associated with a list object different from Container, then
-    --  Program_Error is raised. Otherwise, the Count nodes starting from
-    --  Position are removed from Container ("removed" meaning that the nodes
-    --  are unlinked from the active nodes of the list and relinked to inactive
-    --  storage). On return, Position is set to No_Element.
- 
-    procedure Delete_First
-      (Container : in out List;
-       Count     : Count_Type := 1);
-    --  Removes the first Count nodes from Container
- 
-    procedure Delete_Last
-      (Container : in out List;
-       Count     : Count_Type := 1);
-    --  Removes the last Count nodes from Container
- 
-    procedure Reverse_Elements (Container : in out List);
-    --  Relinks the nodes in reverse order
- 
-    procedure Swap
-      (Container : in out List;
-       I, J      : Cursor);
-    --  If I or J equals No_Element, then Constraint_Error is raised. If I or J
-    --  is associated with a list object different from Container, then
-    --  Program_Error is raised. Otherwise, Swap exchanges (copies) the values
-    --  of the elements (on the nodes) designated by I and J.
- 
-    procedure Swap_Links
-      (Container : in out List;
-       I, J      : Cursor);
-    --  If I or J equals No_Element, then Constraint_Error is raised. If I or J
-    --  is associated with a list object different from Container, then
-    --  Program_Error is raised. Otherwise, Swap exchanges (relinks) the nodes
-    --  designated by I and J.
- 
-    procedure Splice
-      (Container : in out List;
-       Before    : Cursor;
-       Position  : in out Cursor);
-    --  If Before is associated with a list object different from Container,
-    --  then Program_Error is raised. If Position equals No_Element, then
-    --  Constraint_Error is raised; if it associated with a list object
-    --  different from Container, then Program_Error is raised. Otherwise, the
-    --  node designated by Position is relinked immediately prior to Before. If
-    --  Before equals No_Element, this is interpreted to mean to move the node
-    --  designed by Position to the last end of the list.
- 
-    function First (Container : List) return Cursor;
-    --  If Container is empty, the function returns No_Element. Otherwise, it
-    --  returns a cursor designating the first element.
- 
-    function First_Element (Container : List) return Element_Type;
-    --  Equivalent to Element (First (Container))
- 
-    function Last (Container : List) return Cursor;
-    --  If Container is empty, the function returns No_Element. Otherwise, it
-    --  returns a cursor designating the last element.
- 
-    function Last_Element (Container : List) return Element_Type;
-    --  Equivalent to Element (Last (Container))
- 
-    function Next (Position : Cursor) return Cursor;
-    --  If Position equals No_Element or Last (Container), the function returns
-    --  No_Element. Otherwise, it returns a cursor designating the node that
-    --  immediately follows the node designated by Position.
- 
-    procedure Next (Position : in out Cursor);
-    --  Equivalent to Position := Next (Position)
- 
-    function Previous (Position : Cursor) return Cursor;
-    --  If Position equals No_Element or First (Container), the function returns
-    --  No_Element. Otherwise, it returns a cursor designating the node that
-    --  immediately precedes the node designated by Position.
- 
-    procedure Previous (Position : in out Cursor);
-    --  Equivalent to Position := Previous (Position)
- 
-    function Find
-      (Container : List;
-       Item      : Element_Type;
-       Position  : Cursor := No_Element) return Cursor;
-    --  Searches for the node whose element is equal to Item, starting from
-    --  Position and continuing to the last end of the list. If Position equals
-    --  No_Element, the search starts from the first node. If Position is
-    --  associated with a list object different from Container, then
-    --  Program_Error is raised. If no node is found having an element equal to
-    --  Item, then Find returns No_Element.
- 
-    function Reverse_Find
-      (Container : List;
-       Item      : Element_Type;
-       Position  : Cursor := No_Element) return Cursor;
-    --  Searches in reverse for the node whose element is equal to Item,
-    --  starting from Position and continuing to the first end of the list. If
-    --  Position equals No_Element, the search starts from the last node. If
-    --  Position is associated with a list object different from Container, then
-    --  Program_Error is raised. If no node is found having an element equal to
-    --  Item, then Reverse_Find returns No_Element.
- 
-    function Contains
-      (Container : List;
-       Item      : Element_Type) return Boolean;
-    --  Equivalent to Container.Find (Item) /= No_Element
- 
-    function Has_Element (Position : Cursor) return Boolean;
-    --  Equivalent to Position /= No_Element
- 
-    procedure Iterate
-      (Container : List;
-       Process   : not null access procedure (Position : Cursor));
-    --  Calls Process with a cursor designating each element of Container, in
-    --  order from Container.First to Container.Last.
- 
-    procedure Reverse_Iterate
-      (Container : List;
-       Process   : not null access procedure (Position : Cursor));
-    --  Calls Process with a cursor designating each element of Container, in
-    --  order from Container.Last to Container.First.
- 
-    generic
-       with function "<" (Left, Right : Element_Type) return Boolean is <>;
-    package Generic_Sorting is
- 
-       function Is_Sorted (Container : List) return Boolean;
-       --  Returns False if there exists an element which is less than its
-       --  predecessor.
- 
-       procedure Sort (Container : in out List);
-       --  Sorts the elements of Container (by relinking nodes), according to
-       --  the order specified by the generic formal less-than operator, such
-       --  that smaller elements are first in the list. The sort is stable,
-       --  meaning that the relative order of elements is preserved.
- 
-    end Generic_Sorting;
- 
- private
- 
-    type Node_Type is limited record
-       Prev    : Count_Type'Base;
-       Next    : Count_Type;
-       Element : Element_Type;
-    end record;
- 
-    type Node_Array is array (Count_Type range <>) of Node_Type;
- 
-    type List (Capacity : Count_Type) is tagged limited record
-       Nodes  : Node_Array (1 .. Capacity) := (others => <>);
-       Free   : Count_Type'Base := -1;
-       First  : Count_Type := 0;
-       Last   : Count_Type := 0;
-       Length : Count_Type := 0;
-    end record;
- 
-    type List_Access is access all List;
-    for List_Access'Storage_Size use 0;
- 
-    type Cursor is
-       record
-          Container : List_Access;
-          Node      : Count_Type := 0;
-       end record;
- 
-    Empty_List : constant List := (0, others => <>);
- 
-    No_Element : constant Cursor := (null, 0);
- 
- end Ada.Containers.Restricted_Doubly_Linked_Lists;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-csquin.ads gcc-8.1.0/gcc/ada/a-csquin.ads
*** gcc-7.3.0/gcc/ada/a-csquin.ads	Fri May 22 10:20:00 2015
--- gcc-8.1.0/gcc/ada/a-csquin.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,56 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --               ADA.CONTAINERS.SYNCHRONIZED_QUEUE_INTERFACES               --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2011-2015, Free Software Foundation, 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/>.                                          --
- --                                                                          --
- -- This unit was originally developed by Matthew J Heaney.                  --
- ------------------------------------------------------------------------------
- 
- generic
-    type Element_Type is private;
- 
- package Ada.Containers.Synchronized_Queue_Interfaces is
-    pragma Pure;
- 
-    type Queue is synchronized interface;
- 
-    procedure Enqueue
-      (Container : in out Queue;
-       New_Item  : Element_Type) is abstract
-    with Synchronization => By_Entry;
- 
-    procedure Dequeue
-      (Container : in out Queue;
-       Element   : out Element_Type) is abstract
-    with Synchronization => By_Entry;
- 
-    function Current_Use (Container : Queue) return Count_Type is abstract;
- 
-    function Peak_Use (Container : Queue) return Count_Type is abstract;
- 
- end Ada.Containers.Synchronized_Queue_Interfaces;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cuprqu.adb gcc-8.1.0/gcc/ada/a-cuprqu.adb
*** gcc-7.3.0/gcc/ada/a-cuprqu.adb	Wed Jun 22 10:00:24 2016
--- gcc-8.1.0/gcc/ada/a-cuprqu.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,110 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                 ADA.CONTAINERS.UNBOUNDED_PRIORITY_QUEUES                 --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --            Copyright (C) 2011-2016, Free Software Foundation, Inc.       --
- --                                                                          --
- -- GNAT is 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.Unbounded_Priority_Queues is
- 
-    protected body Queue is
- 
-       -----------------
-       -- Current_Use --
-       -----------------
- 
-       function Current_Use return Count_Type is
-       begin
-          return Q_Elems.Length;
-       end Current_Use;
- 
-       -------------
-       -- Dequeue --
-       -------------
- 
-       entry Dequeue (Element : out Queue_Interfaces.Element_Type)
-         when Q_Elems.Length > 0
-       is
-          --  Grab the first item of the set, and remove it from the set
- 
-          C : constant Cursor := First (Q_Elems);
-       begin
-          Element := Sets.Element (C).Item;
-          Delete_First (Q_Elems);
-       end Dequeue;
- 
-       --------------------------------
-       -- Dequeue_Only_High_Priority --
-       --------------------------------
- 
-       procedure Dequeue_Only_High_Priority
-         (At_Least : Queue_Priority;
-          Element  : in out Queue_Interfaces.Element_Type;
-          Success  : out Boolean)
-       is
-          --  Grab the first item. If it exists and has appropriate priority,
-          --  set Success to True, and remove that item. Otherwise, set Success
-          --  to False.
- 
-          C : constant Cursor := First (Q_Elems);
-       begin
-          Success := Has_Element (C) and then
-             not Before (At_Least, Get_Priority (Sets.Element (C).Item));
- 
-          if Success then
-             Element := Sets.Element (C).Item;
-             Delete_First (Q_Elems);
-          end if;
-       end Dequeue_Only_High_Priority;
- 
-       -------------
-       -- Enqueue --
-       -------------
- 
-       entry Enqueue (New_Item : Queue_Interfaces.Element_Type) when True is
-       begin
-          Insert (Q_Elems, (Next_Sequence_Number, New_Item));
-          Next_Sequence_Number := Next_Sequence_Number + 1;
- 
-          --  If we reached a new high-water mark, increase Max_Length
- 
-          if Q_Elems.Length > Max_Length then
-             pragma Assert (Max_Length + 1 = Q_Elems.Length);
-             Max_Length := Q_Elems.Length;
-          end if;
-       end Enqueue;
- 
-       --------------
-       -- Peak_Use --
-       --------------
- 
-       function Peak_Use return Count_Type is
-       begin
-          return Max_Length;
-       end Peak_Use;
- 
-    end Queue;
- 
- end Ada.Containers.Unbounded_Priority_Queues;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cuprqu.ads gcc-8.1.0/gcc/ada/a-cuprqu.ads
*** gcc-7.3.0/gcc/ada/a-cuprqu.ads	Wed Jun 22 10:05:04 2016
--- gcc-8.1.0/gcc/ada/a-cuprqu.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,137 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                 ADA.CONTAINERS.UNBOUNDED_PRIORITY_QUEUES                 --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2011-2016, Free Software Foundation, 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/>.                                          --
- --                                                                          --
- -- This unit was originally developed by Matthew J Heaney.                  --
- ------------------------------------------------------------------------------
- 
- with System;
- with Ada.Containers.Ordered_Sets;
- with Ada.Containers.Synchronized_Queue_Interfaces;
- 
- generic
-    with package Queue_Interfaces is
-      new Ada.Containers.Synchronized_Queue_Interfaces (<>);
- 
-    type Queue_Priority is private;
- 
-    with function Get_Priority
-      (Element : Queue_Interfaces.Element_Type) return Queue_Priority is <>;
- 
-    with function Before
-      (Left, Right : Queue_Priority) return Boolean is <>;
- 
-    Default_Ceiling : System.Any_Priority := System.Priority'Last;
- 
- package Ada.Containers.Unbounded_Priority_Queues is
-    pragma Annotate (CodePeer, Skip_Analysis);
-    pragma Preelaborate;
- 
-    package Implementation is
- 
-       --  All identifiers in this unit are implementation defined
- 
-       pragma Implementation_Defined;
- 
-       --  We use an ordered set to hold the queue elements. This gives O(lg N)
-       --  performance in the worst case for Enqueue and Dequeue.
-       --  Sequence_Number is used to distinguish equivalent items. Each Enqueue
-       --  uses a higher Sequence_Number, so that a new item is placed after
-       --  already-enqueued equivalent items.
-       --
-       --  At any time, the first set element is the one to be dequeued next (if
-       --  the queue is not empty).
- 
-       type Set_Elem is record
-          Sequence_Number : Count_Type;
-          Item : Queue_Interfaces.Element_Type;
-       end record;
- 
-       function "=" (X, Y : Queue_Interfaces.Element_Type) return Boolean is
-          (not Before (Get_Priority (X), Get_Priority (Y))
-             and then not Before (Get_Priority (Y), Get_Priority (X)));
-       --  Elements are equal if neither is Before the other
- 
-       function "=" (X, Y : Set_Elem) return Boolean is
-          (X.Sequence_Number = Y.Sequence_Number and then X.Item = Y.Item);
-       --  Set_Elems are equal if the elements are equal, and the
-       --  Sequence_Numbers are equal. This is passed to Ordered_Sets.
- 
-       function "<" (X, Y : Set_Elem) return Boolean is
-          (if X.Item = Y.Item
-             then X.Sequence_Number < Y.Sequence_Number
-             else Before (Get_Priority (X.Item), Get_Priority (Y.Item)));
-       --  If the items are equal, Sequence_Number breaks the tie. Otherwise,
-       --  use Before. This is passed to Ordered_Sets.
- 
-       pragma Suppress (Container_Checks);
-       package Sets is new Ada.Containers.Ordered_Sets (Set_Elem);
- 
-    end Implementation;
- 
-    use Implementation, Implementation.Sets;
- 
-    protected type Queue (Ceiling : System.Any_Priority := Default_Ceiling)
-    with
-      Priority => Ceiling
-    is new Queue_Interfaces.Queue with
- 
-       overriding entry Enqueue (New_Item : Queue_Interfaces.Element_Type);
- 
-       overriding entry Dequeue (Element : out Queue_Interfaces.Element_Type);
- 
-       --  The priority queue operation Dequeue_Only_High_Priority had been a
-       --  protected entry in early drafts of AI05-0159, but it was discovered
-       --  that that operation as specified was not in fact implementable. The
-       --  operation was changed from an entry to a protected procedure per the
-       --  ARG meeting in Edinburgh (June 2011), with a different signature and
-       --  semantics.
- 
-       procedure Dequeue_Only_High_Priority
-         (At_Least : Queue_Priority;
-          Element  : in out Queue_Interfaces.Element_Type;
-          Success  : out Boolean);
- 
-       overriding function Current_Use return Count_Type;
- 
-       overriding function Peak_Use return Count_Type;
- 
-    private
-       Q_Elems : Set;
-       --  Elements of the queue
- 
-       Max_Length : Count_Type := 0;
-       --  The current length of the queue is the Length of Q_Elems. This is the
-       --  maximum value of that, so far. Updated by Enqueue.
- 
-       Next_Sequence_Number : Count_Type := 0;
-       --  Steadily increasing counter
-    end Queue;
- 
- end Ada.Containers.Unbounded_Priority_Queues;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cusyqu.adb gcc-8.1.0/gcc/ada/a-cusyqu.adb
*** gcc-7.3.0/gcc/ada/a-cusyqu.adb	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-cusyqu.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,174 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --               ADA.CONTAINERS.UNBOUNDED_SYNCHRONIZED_QUEUES               --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --            Copyright (C) 2011-2015, Free Software Foundation, Inc.       --
- --                                                                          --
- -- GNAT is 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 Ada.Unchecked_Deallocation;
- 
- package body Ada.Containers.Unbounded_Synchronized_Queues is
- 
-    package body Implementation is
- 
-       -----------------------
-       -- Local Subprograms --
-       -----------------------
- 
-       procedure Free is
-          new Ada.Unchecked_Deallocation (Node_Type, Node_Access);
- 
-       -------------
-       -- Dequeue --
-       -------------
- 
-       procedure Dequeue
-         (List    : in out List_Type;
-          Element : out Queue_Interfaces.Element_Type)
-       is
-          X : Node_Access;
- 
-       begin
-          Element := List.First.Element;
- 
-          X := List.First;
-          List.First := List.First.Next;
- 
-          if List.First = null then
-             List.Last := null;
-          end if;
- 
-          List.Length := List.Length - 1;
- 
-          Free (X);
-       end Dequeue;
- 
-       -------------
-       -- Enqueue --
-       -------------
- 
-       procedure Enqueue
-         (List     : in out List_Type;
-          New_Item : Queue_Interfaces.Element_Type)
-       is
-          Node : Node_Access;
- 
-       begin
-          Node := new Node_Type'(New_Item, null);
- 
-          if List.First = null then
-             List.First := Node;
-             List.Last := List.First;
- 
-          else
-             List.Last.Next := Node;
-             List.Last := Node;
-          end if;
- 
-          List.Length := List.Length + 1;
- 
-          if List.Length > List.Max_Length then
-             List.Max_Length := List.Length;
-          end if;
-       end Enqueue;
- 
-       --------------
-       -- Finalize --
-       --------------
- 
-       procedure Finalize (List : in out List_Type) is
-          X : Node_Access;
- 
-       begin
-          while List.First /= null loop
-             X := List.First;
-             List.First := List.First.Next;
-             Free (X);
-          end loop;
-       end Finalize;
- 
-       ------------
-       -- Length --
-       ------------
- 
-       function Length (List : List_Type) return Count_Type is
-       begin
-          return List.Length;
-       end Length;
- 
-       ----------------
-       -- Max_Length --
-       ----------------
- 
-       function Max_Length (List : List_Type) return Count_Type is
-       begin
-          return List.Max_Length;
-       end Max_Length;
- 
-    end Implementation;
- 
-    protected body Queue is
- 
-       -----------------
-       -- Current_Use --
-       -----------------
- 
-       function Current_Use return Count_Type is
-       begin
-          return List.Length;
-       end Current_Use;
- 
-       -------------
-       -- Dequeue --
-       -------------
- 
-       entry Dequeue (Element : out Queue_Interfaces.Element_Type)
-         when List.Length > 0
-       is
-       begin
-          List.Dequeue (Element);
-       end Dequeue;
- 
-       -------------
-       -- Enqueue --
-       -------------
- 
-       entry Enqueue (New_Item : Queue_Interfaces.Element_Type) when True is
-       begin
-          List.Enqueue (New_Item);
-       end Enqueue;
- 
-       --------------
-       -- Peak_Use --
-       --------------
- 
-       function Peak_Use return Count_Type is
-       begin
-          return List.Max_Length;
-       end Peak_Use;
- 
-    end Queue;
- 
- end Ada.Containers.Unbounded_Synchronized_Queues;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cusyqu.ads gcc-8.1.0/gcc/ada/a-cusyqu.ads
*** gcc-7.3.0/gcc/ada/a-cusyqu.ads	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-cusyqu.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,106 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --               ADA.CONTAINERS.UNBOUNDED_SYNCHRONIZED_QUEUES               --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2011-2015, Free Software Foundation, 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/>.                                          --
- --                                                                          --
- -- This unit was originally developed by Matthew J Heaney.                  --
- ------------------------------------------------------------------------------
- 
- with System;
- with Ada.Containers.Synchronized_Queue_Interfaces;
- with Ada.Finalization;
- 
- generic
-    with package Queue_Interfaces is
-      new Ada.Containers.Synchronized_Queue_Interfaces (<>);
- 
-    Default_Ceiling : System.Any_Priority := System.Priority'Last;
- 
- package Ada.Containers.Unbounded_Synchronized_Queues is
-    pragma Annotate (CodePeer, Skip_Analysis);
-    pragma Preelaborate;
- 
-    package Implementation is
- 
-       --  All identifiers in this unit are implementation defined
- 
-       pragma Implementation_Defined;
- 
-       type List_Type is tagged limited private;
- 
-       procedure Enqueue
-         (List     : in out List_Type;
-          New_Item : Queue_Interfaces.Element_Type);
- 
-       procedure Dequeue
-         (List    : in out List_Type;
-          Element : out Queue_Interfaces.Element_Type);
- 
-       function Length (List : List_Type) return Count_Type;
- 
-       function Max_Length (List : List_Type) return Count_Type;
- 
-    private
- 
-       type Node_Type;
-       type Node_Access is access Node_Type;
- 
-       type Node_Type is limited record
-          Element : Queue_Interfaces.Element_Type;
-          Next    : Node_Access;
-       end record;
- 
-       type List_Type is new Ada.Finalization.Limited_Controlled with record
-          First, Last : Node_Access;
-          Length      : Count_Type := 0;
-          Max_Length  : Count_Type := 0;
-       end record;
- 
-       overriding procedure Finalize (List : in out List_Type);
- 
-    end Implementation;
- 
-    protected type Queue
-      (Ceiling : System.Any_Priority := Default_Ceiling)
-    with
-      Priority => Ceiling
-    is new Queue_Interfaces.Queue with
- 
-       overriding entry Enqueue (New_Item : Queue_Interfaces.Element_Type);
- 
-       overriding entry Dequeue (Element : out Queue_Interfaces.Element_Type);
- 
-       overriding function Current_Use return Count_Type;
- 
-       overriding function Peak_Use return Count_Type;
- 
-    private
-       List : Implementation.List_Type;
-    end Queue;
- 
- end Ada.Containers.Unbounded_Synchronized_Queues;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cwila1.ads gcc-8.1.0/gcc/ada/a-cwila1.ads
*** gcc-7.3.0/gcc/ada/a-cwila1.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-cwila1.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,322 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --          A D A . C H A R A C T E R S . W I D E _ L A T I N _ 1           --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          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- --
- -- 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 definitions analogous to those in the RM defined
- --  package Ada.Characters.Latin_1 except that the type of the constants
- --  is Wide_Character instead of Character. The provision of this package
- --  is in accordance with the implementation permission in RM (A.3.3(27)).
- 
- package Ada.Characters.Wide_Latin_1 is
-    pragma Pure;
- 
-    ------------------------
-    -- Control Characters --
-    ------------------------
- 
-    NUL                  : constant Wide_Character := Wide_Character'Val (0);
-    SOH                  : constant Wide_Character := Wide_Character'Val (1);
-    STX                  : constant Wide_Character := Wide_Character'Val (2);
-    ETX                  : constant Wide_Character := Wide_Character'Val (3);
-    EOT                  : constant Wide_Character := Wide_Character'Val (4);
-    ENQ                  : constant Wide_Character := Wide_Character'Val (5);
-    ACK                  : constant Wide_Character := Wide_Character'Val (6);
-    BEL                  : constant Wide_Character := Wide_Character'Val (7);
-    BS                   : constant Wide_Character := Wide_Character'Val (8);
-    HT                   : constant Wide_Character := Wide_Character'Val (9);
-    LF                   : constant Wide_Character := Wide_Character'Val (10);
-    VT                   : constant Wide_Character := Wide_Character'Val (11);
-    FF                   : constant Wide_Character := Wide_Character'Val (12);
-    CR                   : constant Wide_Character := Wide_Character'Val (13);
-    SO                   : constant Wide_Character := Wide_Character'Val (14);
-    SI                   : constant Wide_Character := Wide_Character'Val (15);
- 
-    DLE                  : constant Wide_Character := Wide_Character'Val (16);
-    DC1                  : constant Wide_Character := Wide_Character'Val (17);
-    DC2                  : constant Wide_Character := Wide_Character'Val (18);
-    DC3                  : constant Wide_Character := Wide_Character'Val (19);
-    DC4                  : constant Wide_Character := Wide_Character'Val (20);
-    NAK                  : constant Wide_Character := Wide_Character'Val (21);
-    SYN                  : constant Wide_Character := Wide_Character'Val (22);
-    ETB                  : constant Wide_Character := Wide_Character'Val (23);
-    CAN                  : constant Wide_Character := Wide_Character'Val (24);
-    EM                   : constant Wide_Character := Wide_Character'Val (25);
-    SUB                  : constant Wide_Character := Wide_Character'Val (26);
-    ESC                  : constant Wide_Character := Wide_Character'Val (27);
-    FS                   : constant Wide_Character := Wide_Character'Val (28);
-    GS                   : constant Wide_Character := Wide_Character'Val (29);
-    RS                   : constant Wide_Character := Wide_Character'Val (30);
-    US                   : constant Wide_Character := Wide_Character'Val (31);
- 
-    -------------------------------------
-    -- ISO 646 Graphic Wide_Characters --
-    -------------------------------------
- 
-    Space                : constant Wide_Character := ' ';  -- WC'Val(32)
-    Exclamation          : constant Wide_Character := '!';  -- WC'Val(33)
-    Quotation            : constant Wide_Character := '"';  -- WC'Val(34)
-    Number_Sign          : constant Wide_Character := '#';  -- WC'Val(35)
-    Dollar_Sign          : constant Wide_Character := '$';  -- WC'Val(36)
-    Percent_Sign         : constant Wide_Character := '%';  -- WC'Val(37)
-    Ampersand            : constant Wide_Character := '&';  -- WC'Val(38)
-    Apostrophe           : constant Wide_Character := ''';  -- WC'Val(39)
-    Left_Parenthesis     : constant Wide_Character := '(';  -- WC'Val(40)
-    Right_Parenthesis    : constant Wide_Character := ')';  -- WC'Val(41)
-    Asterisk             : constant Wide_Character := '*';  -- WC'Val(42)
-    Plus_Sign            : constant Wide_Character := '+';  -- WC'Val(43)
-    Comma                : constant Wide_Character := ',';  -- WC'Val(44)
-    Hyphen               : constant Wide_Character := '-';  -- WC'Val(45)
-    Minus_Sign           : Wide_Character renames Hyphen;
-    Full_Stop            : constant Wide_Character := '.';  -- WC'Val(46)
-    Solidus              : constant Wide_Character := '/';  -- WC'Val(47)
- 
-    --  Decimal digits '0' though '9' are at positions 48 through 57
- 
-    Colon                : constant Wide_Character := ':';  -- WC'Val(58)
-    Semicolon            : constant Wide_Character := ';';  -- WC'Val(59)
-    Less_Than_Sign       : constant Wide_Character := '<';  -- WC'Val(60)
-    Equals_Sign          : constant Wide_Character := '=';  -- WC'Val(61)
-    Greater_Than_Sign    : constant Wide_Character := '>';  -- WC'Val(62)
-    Question             : constant Wide_Character := '?';  -- WC'Val(63)
- 
-    Commercial_At        : constant Wide_Character := '@';  -- WC'Val(64)
- 
-    --  Letters 'A' through 'Z' are at positions 65 through 90
- 
-    Left_Square_Bracket  : constant Wide_Character := '[';  -- WC'Val (91)
-    Reverse_Solidus      : constant Wide_Character := '\';  -- WC'Val (92)
-    Right_Square_Bracket : constant Wide_Character := ']';  -- WC'Val (93)
-    Circumflex           : constant Wide_Character := '^';  -- WC'Val (94)
-    Low_Line             : constant Wide_Character := '_';  -- WC'Val (95)
- 
-    Grave                : constant Wide_Character := '`';  -- WC'Val (96)
-    LC_A                 : constant Wide_Character := 'a';  -- WC'Val (97)
-    LC_B                 : constant Wide_Character := 'b';  -- WC'Val (98)
-    LC_C                 : constant Wide_Character := 'c';  -- WC'Val (99)
-    LC_D                 : constant Wide_Character := 'd';  -- WC'Val (100)
-    LC_E                 : constant Wide_Character := 'e';  -- WC'Val (101)
-    LC_F                 : constant Wide_Character := 'f';  -- WC'Val (102)
-    LC_G                 : constant Wide_Character := 'g';  -- WC'Val (103)
-    LC_H                 : constant Wide_Character := 'h';  -- WC'Val (104)
-    LC_I                 : constant Wide_Character := 'i';  -- WC'Val (105)
-    LC_J                 : constant Wide_Character := 'j';  -- WC'Val (106)
-    LC_K                 : constant Wide_Character := 'k';  -- WC'Val (107)
-    LC_L                 : constant Wide_Character := 'l';  -- WC'Val (108)
-    LC_M                 : constant Wide_Character := 'm';  -- WC'Val (109)
-    LC_N                 : constant Wide_Character := 'n';  -- WC'Val (110)
-    LC_O                 : constant Wide_Character := 'o';  -- WC'Val (111)
-    LC_P                 : constant Wide_Character := 'p';  -- WC'Val (112)
-    LC_Q                 : constant Wide_Character := 'q';  -- WC'Val (113)
-    LC_R                 : constant Wide_Character := 'r';  -- WC'Val (114)
-    LC_S                 : constant Wide_Character := 's';  -- WC'Val (115)
-    LC_T                 : constant Wide_Character := 't';  -- WC'Val (116)
-    LC_U                 : constant Wide_Character := 'u';  -- WC'Val (117)
-    LC_V                 : constant Wide_Character := 'v';  -- WC'Val (118)
-    LC_W                 : constant Wide_Character := 'w';  -- WC'Val (119)
-    LC_X                 : constant Wide_Character := 'x';  -- WC'Val (120)
-    LC_Y                 : constant Wide_Character := 'y';  -- WC'Val (121)
-    LC_Z                 : constant Wide_Character := 'z';  -- WC'Val (122)
-    Left_Curly_Bracket   : constant Wide_Character := '{';  -- WC'Val (123)
-    Vertical_Line        : constant Wide_Character := '|';  -- WC'Val (124)
-    Right_Curly_Bracket  : constant Wide_Character := '}';  -- WC'Val (125)
-    Tilde                : constant Wide_Character := '~';  -- WC'Val (126)
-    DEL                  : constant Wide_Character := Wide_Character'Val (127);
- 
-    --------------------------------------
-    -- ISO 6429 Control Wide_Characters --
-    --------------------------------------
- 
-    IS4 : Wide_Character renames FS;
-    IS3 : Wide_Character renames GS;
-    IS2 : Wide_Character renames RS;
-    IS1 : Wide_Character renames US;
- 
-    Reserved_128         : constant Wide_Character := Wide_Character'Val (128);
-    Reserved_129         : constant Wide_Character := Wide_Character'Val (129);
-    BPH                  : constant Wide_Character := Wide_Character'Val (130);
-    NBH                  : constant Wide_Character := Wide_Character'Val (131);
-    Reserved_132         : constant Wide_Character := Wide_Character'Val (132);
-    NEL                  : constant Wide_Character := Wide_Character'Val (133);
-    SSA                  : constant Wide_Character := Wide_Character'Val (134);
-    ESA                  : constant Wide_Character := Wide_Character'Val (135);
-    HTS                  : constant Wide_Character := Wide_Character'Val (136);
-    HTJ                  : constant Wide_Character := Wide_Character'Val (137);
-    VTS                  : constant Wide_Character := Wide_Character'Val (138);
-    PLD                  : constant Wide_Character := Wide_Character'Val (139);
-    PLU                  : constant Wide_Character := Wide_Character'Val (140);
-    RI                   : constant Wide_Character := Wide_Character'Val (141);
-    SS2                  : constant Wide_Character := Wide_Character'Val (142);
-    SS3                  : constant Wide_Character := Wide_Character'Val (143);
- 
-    DCS                  : constant Wide_Character := Wide_Character'Val (144);
-    PU1                  : constant Wide_Character := Wide_Character'Val (145);
-    PU2                  : constant Wide_Character := Wide_Character'Val (146);
-    STS                  : constant Wide_Character := Wide_Character'Val (147);
-    CCH                  : constant Wide_Character := Wide_Character'Val (148);
-    MW                   : constant Wide_Character := Wide_Character'Val (149);
-    SPA                  : constant Wide_Character := Wide_Character'Val (150);
-    EPA                  : constant Wide_Character := Wide_Character'Val (151);
- 
-    SOS                  : constant Wide_Character := Wide_Character'Val (152);
-    Reserved_153         : constant Wide_Character := Wide_Character'Val (153);
-    SCI                  : constant Wide_Character := Wide_Character'Val (154);
-    CSI                  : constant Wide_Character := Wide_Character'Val (155);
-    ST                   : constant Wide_Character := Wide_Character'Val (156);
-    OSC                  : constant Wide_Character := Wide_Character'Val (157);
-    PM                   : constant Wide_Character := Wide_Character'Val (158);
-    APC                  : constant Wide_Character := Wide_Character'Val (159);
- 
-    -----------------------------------
-    -- Other Graphic Wide_Characters --
-    -----------------------------------
- 
-    --  Wide_Character positions 160 (16#A0#) .. 175 (16#AF#)
- 
-    No_Break_Space       : constant Wide_Character := Wide_Character'Val (160);
-    NBSP                 : Wide_Character renames No_Break_Space;
-    Inverted_Exclamation : constant Wide_Character := Wide_Character'Val (161);
-    Cent_Sign            : constant Wide_Character := Wide_Character'Val (162);
-    Pound_Sign           : constant Wide_Character := Wide_Character'Val (163);
-    Currency_Sign        : constant Wide_Character := Wide_Character'Val (164);
-    Yen_Sign             : constant Wide_Character := Wide_Character'Val (165);
-    Broken_Bar           : constant Wide_Character := Wide_Character'Val (166);
-    Section_Sign         : constant Wide_Character := Wide_Character'Val (167);
-    Diaeresis            : constant Wide_Character := Wide_Character'Val (168);
-    Copyright_Sign       : constant Wide_Character := Wide_Character'Val (169);
-    Feminine_Ordinal_Indicator
-                         : constant Wide_Character := Wide_Character'Val (170);
-    Left_Angle_Quotation : constant Wide_Character := Wide_Character'Val (171);
-    Not_Sign             : constant Wide_Character := Wide_Character'Val (172);
-    Soft_Hyphen          : constant Wide_Character := Wide_Character'Val (173);
-    Registered_Trade_Mark_Sign
-                         : constant Wide_Character := Wide_Character'Val (174);
-    Macron               : constant Wide_Character := Wide_Character'Val (175);
- 
-    --  Wide_Character positions 176 (16#B0#) .. 191 (16#BF#)
- 
-    Degree_Sign          : constant Wide_Character := Wide_Character'Val (176);
-    Ring_Above           : Wide_Character renames Degree_Sign;
-    Plus_Minus_Sign      : constant Wide_Character := Wide_Character'Val (177);
-    Superscript_Two      : constant Wide_Character := Wide_Character'Val (178);
-    Superscript_Three    : constant Wide_Character := Wide_Character'Val (179);
-    Acute                : constant Wide_Character := Wide_Character'Val (180);
-    Micro_Sign           : constant Wide_Character := Wide_Character'Val (181);
-    Pilcrow_Sign         : constant Wide_Character := Wide_Character'Val (182);
-    Paragraph_Sign       : Wide_Character renames Pilcrow_Sign;
-    Middle_Dot           : constant Wide_Character := Wide_Character'Val (183);
-    Cedilla              : constant Wide_Character := Wide_Character'Val (184);
-    Superscript_One      : constant Wide_Character := Wide_Character'Val (185);
-    Masculine_Ordinal_Indicator
-                         : constant Wide_Character := Wide_Character'Val (186);
-    Right_Angle_Quotation
-                         : constant Wide_Character := Wide_Character'Val (187);
-    Fraction_One_Quarter : constant Wide_Character := Wide_Character'Val (188);
-    Fraction_One_Half    : constant Wide_Character := Wide_Character'Val (189);
-    Fraction_Three_Quarters
-                         : constant Wide_Character := Wide_Character'Val (190);
-    Inverted_Question    : constant Wide_Character := Wide_Character'Val (191);
- 
-    --  Wide_Character positions 192 (16#C0#) .. 207 (16#CF#)
- 
-    UC_A_Grave           : constant Wide_Character := Wide_Character'Val (192);
-    UC_A_Acute           : constant Wide_Character := Wide_Character'Val (193);
-    UC_A_Circumflex      : constant Wide_Character := Wide_Character'Val (194);
-    UC_A_Tilde           : constant Wide_Character := Wide_Character'Val (195);
-    UC_A_Diaeresis       : constant Wide_Character := Wide_Character'Val (196);
-    UC_A_Ring            : constant Wide_Character := Wide_Character'Val (197);
-    UC_AE_Diphthong      : constant Wide_Character := Wide_Character'Val (198);
-    UC_C_Cedilla         : constant Wide_Character := Wide_Character'Val (199);
-    UC_E_Grave           : constant Wide_Character := Wide_Character'Val (200);
-    UC_E_Acute           : constant Wide_Character := Wide_Character'Val (201);
-    UC_E_Circumflex      : constant Wide_Character := Wide_Character'Val (202);
-    UC_E_Diaeresis       : constant Wide_Character := Wide_Character'Val (203);
-    UC_I_Grave           : constant Wide_Character := Wide_Character'Val (204);
-    UC_I_Acute           : constant Wide_Character := Wide_Character'Val (205);
-    UC_I_Circumflex      : constant Wide_Character := Wide_Character'Val (206);
-    UC_I_Diaeresis       : constant Wide_Character := Wide_Character'Val (207);
- 
-    --  Wide_Character positions 208 (16#D0#) .. 223 (16#DF#)
- 
-    UC_Icelandic_Eth     : constant Wide_Character := Wide_Character'Val (208);
-    UC_N_Tilde           : constant Wide_Character := Wide_Character'Val (209);
-    UC_O_Grave           : constant Wide_Character := Wide_Character'Val (210);
-    UC_O_Acute           : constant Wide_Character := Wide_Character'Val (211);
-    UC_O_Circumflex      : constant Wide_Character := Wide_Character'Val (212);
-    UC_O_Tilde           : constant Wide_Character := Wide_Character'Val (213);
-    UC_O_Diaeresis       : constant Wide_Character := Wide_Character'Val (214);
-    Multiplication_Sign  : constant Wide_Character := Wide_Character'Val (215);
-    UC_O_Oblique_Stroke  : constant Wide_Character := Wide_Character'Val (216);
-    UC_U_Grave           : constant Wide_Character := Wide_Character'Val (217);
-    UC_U_Acute           : constant Wide_Character := Wide_Character'Val (218);
-    UC_U_Circumflex      : constant Wide_Character := Wide_Character'Val (219);
-    UC_U_Diaeresis       : constant Wide_Character := Wide_Character'Val (220);
-    UC_Y_Acute           : constant Wide_Character := Wide_Character'Val (221);
-    UC_Icelandic_Thorn   : constant Wide_Character := Wide_Character'Val (222);
-    LC_German_Sharp_S    : constant Wide_Character := Wide_Character'Val (223);
- 
-    --  Wide_Character positions 224 (16#E0#) .. 239 (16#EF#)
- 
-    LC_A_Grave           : constant Wide_Character := Wide_Character'Val (224);
-    LC_A_Acute           : constant Wide_Character := Wide_Character'Val (225);
-    LC_A_Circumflex      : constant Wide_Character := Wide_Character'Val (226);
-    LC_A_Tilde           : constant Wide_Character := Wide_Character'Val (227);
-    LC_A_Diaeresis       : constant Wide_Character := Wide_Character'Val (228);
-    LC_A_Ring            : constant Wide_Character := Wide_Character'Val (229);
-    LC_AE_Diphthong      : constant Wide_Character := Wide_Character'Val (230);
-    LC_C_Cedilla         : constant Wide_Character := Wide_Character'Val (231);
-    LC_E_Grave           : constant Wide_Character := Wide_Character'Val (232);
-    LC_E_Acute           : constant Wide_Character := Wide_Character'Val (233);
-    LC_E_Circumflex      : constant Wide_Character := Wide_Character'Val (234);
-    LC_E_Diaeresis       : constant Wide_Character := Wide_Character'Val (235);
-    LC_I_Grave           : constant Wide_Character := Wide_Character'Val (236);
-    LC_I_Acute           : constant Wide_Character := Wide_Character'Val (237);
-    LC_I_Circumflex      : constant Wide_Character := Wide_Character'Val (238);
-    LC_I_Diaeresis       : constant Wide_Character := Wide_Character'Val (239);
- 
-    --  Wide_Character positions 240 (16#F0#) .. 255 (16#FF)
- 
-    LC_Icelandic_Eth     : constant Wide_Character := Wide_Character'Val (240);
-    LC_N_Tilde           : constant Wide_Character := Wide_Character'Val (241);
-    LC_O_Grave           : constant Wide_Character := Wide_Character'Val (242);
-    LC_O_Acute           : constant Wide_Character := Wide_Character'Val (243);
-    LC_O_Circumflex      : constant Wide_Character := Wide_Character'Val (244);
-    LC_O_Tilde           : constant Wide_Character := Wide_Character'Val (245);
-    LC_O_Diaeresis       : constant Wide_Character := Wide_Character'Val (246);
-    Division_Sign        : constant Wide_Character := Wide_Character'Val (247);
-    LC_O_Oblique_Stroke  : constant Wide_Character := Wide_Character'Val (248);
-    LC_U_Grave           : constant Wide_Character := Wide_Character'Val (249);
-    LC_U_Acute           : constant Wide_Character := Wide_Character'Val (250);
-    LC_U_Circumflex      : constant Wide_Character := Wide_Character'Val (251);
-    LC_U_Diaeresis       : constant Wide_Character := Wide_Character'Val (252);
-    LC_Y_Acute           : constant Wide_Character := Wide_Character'Val (253);
-    LC_Icelandic_Thorn   : constant Wide_Character := Wide_Character'Val (254);
-    LC_Y_Diaeresis       : constant Wide_Character := Wide_Character'Val (255);
- 
- end Ada.Characters.Wide_Latin_1;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-cwila9.ads gcc-8.1.0/gcc/ada/a-cwila9.ads
*** gcc-7.3.0/gcc/ada/a-cwila9.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-cwila9.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,334 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --          A D A . C H A R A C T E R S . W I D E _ L A T I N _ 9           --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          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- --
- -- 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 definitions analogous to those in the GNAT
- --  package Ada.Characters.Latin_9 except that the type of the constants
- --  is Wide_Character instead of Character. The provision of this package
- --  is in accordance with the implementation permission in RM (A.3.3(27)).
- 
- package Ada.Characters.Wide_Latin_9 is
-    pragma Pure;
- 
-    ------------------------
-    -- Control Characters --
-    ------------------------
- 
-    NUL                  : constant Wide_Character := Wide_Character'Val (0);
-    SOH                  : constant Wide_Character := Wide_Character'Val (1);
-    STX                  : constant Wide_Character := Wide_Character'Val (2);
-    ETX                  : constant Wide_Character := Wide_Character'Val (3);
-    EOT                  : constant Wide_Character := Wide_Character'Val (4);
-    ENQ                  : constant Wide_Character := Wide_Character'Val (5);
-    ACK                  : constant Wide_Character := Wide_Character'Val (6);
-    BEL                  : constant Wide_Character := Wide_Character'Val (7);
-    BS                   : constant Wide_Character := Wide_Character'Val (8);
-    HT                   : constant Wide_Character := Wide_Character'Val (9);
-    LF                   : constant Wide_Character := Wide_Character'Val (10);
-    VT                   : constant Wide_Character := Wide_Character'Val (11);
-    FF                   : constant Wide_Character := Wide_Character'Val (12);
-    CR                   : constant Wide_Character := Wide_Character'Val (13);
-    SO                   : constant Wide_Character := Wide_Character'Val (14);
-    SI                   : constant Wide_Character := Wide_Character'Val (15);
- 
-    DLE                  : constant Wide_Character := Wide_Character'Val (16);
-    DC1                  : constant Wide_Character := Wide_Character'Val (17);
-    DC2                  : constant Wide_Character := Wide_Character'Val (18);
-    DC3                  : constant Wide_Character := Wide_Character'Val (19);
-    DC4                  : constant Wide_Character := Wide_Character'Val (20);
-    NAK                  : constant Wide_Character := Wide_Character'Val (21);
-    SYN                  : constant Wide_Character := Wide_Character'Val (22);
-    ETB                  : constant Wide_Character := Wide_Character'Val (23);
-    CAN                  : constant Wide_Character := Wide_Character'Val (24);
-    EM                   : constant Wide_Character := Wide_Character'Val (25);
-    SUB                  : constant Wide_Character := Wide_Character'Val (26);
-    ESC                  : constant Wide_Character := Wide_Character'Val (27);
-    FS                   : constant Wide_Character := Wide_Character'Val (28);
-    GS                   : constant Wide_Character := Wide_Character'Val (29);
-    RS                   : constant Wide_Character := Wide_Character'Val (30);
-    US                   : constant Wide_Character := Wide_Character'Val (31);
- 
-    -------------------------------------
-    -- ISO 646 Graphic Wide_Characters --
-    -------------------------------------
- 
-    Space                : constant Wide_Character := ' ';  -- WC'Val(32)
-    Exclamation          : constant Wide_Character := '!';  -- WC'Val(33)
-    Quotation            : constant Wide_Character := '"';  -- WC'Val(34)
-    Number_Sign          : constant Wide_Character := '#';  -- WC'Val(35)
-    Dollar_Sign          : constant Wide_Character := '$';  -- WC'Val(36)
-    Percent_Sign         : constant Wide_Character := '%';  -- WC'Val(37)
-    Ampersand            : constant Wide_Character := '&';  -- WC'Val(38)
-    Apostrophe           : constant Wide_Character := ''';  -- WC'Val(39)
-    Left_Parenthesis     : constant Wide_Character := '(';  -- WC'Val(40)
-    Right_Parenthesis    : constant Wide_Character := ')';  -- WC'Val(41)
-    Asterisk             : constant Wide_Character := '*';  -- WC'Val(42)
-    Plus_Sign            : constant Wide_Character := '+';  -- WC'Val(43)
-    Comma                : constant Wide_Character := ',';  -- WC'Val(44)
-    Hyphen               : constant Wide_Character := '-';  -- WC'Val(45)
-    Minus_Sign           : Wide_Character renames Hyphen;
-    Full_Stop            : constant Wide_Character := '.';  -- WC'Val(46)
-    Solidus              : constant Wide_Character := '/';  -- WC'Val(47)
- 
-    --  Decimal digits '0' though '9' are at positions 48 through 57
- 
-    Colon                : constant Wide_Character := ':';  -- WC'Val(58)
-    Semicolon            : constant Wide_Character := ';';  -- WC'Val(59)
-    Less_Than_Sign       : constant Wide_Character := '<';  -- WC'Val(60)
-    Equals_Sign          : constant Wide_Character := '=';  -- WC'Val(61)
-    Greater_Than_Sign    : constant Wide_Character := '>';  -- WC'Val(62)
-    Question             : constant Wide_Character := '?';  -- WC'Val(63)
- 
-    Commercial_At        : constant Wide_Character := '@';  -- WC'Val(64)
- 
-    --  Letters 'A' through 'Z' are at positions 65 through 90
- 
-    Left_Square_Bracket  : constant Wide_Character := '[';  -- WC'Val (91)
-    Reverse_Solidus      : constant Wide_Character := '\';  -- WC'Val (92)
-    Right_Square_Bracket : constant Wide_Character := ']';  -- WC'Val (93)
-    Circumflex           : constant Wide_Character := '^';  -- WC'Val (94)
-    Low_Line             : constant Wide_Character := '_';  -- WC'Val (95)
- 
-    Grave                : constant Wide_Character := '`';  -- WC'Val (96)
-    LC_A                 : constant Wide_Character := 'a';  -- WC'Val (97)
-    LC_B                 : constant Wide_Character := 'b';  -- WC'Val (98)
-    LC_C                 : constant Wide_Character := 'c';  -- WC'Val (99)
-    LC_D                 : constant Wide_Character := 'd';  -- WC'Val (100)
-    LC_E                 : constant Wide_Character := 'e';  -- WC'Val (101)
-    LC_F                 : constant Wide_Character := 'f';  -- WC'Val (102)
-    LC_G                 : constant Wide_Character := 'g';  -- WC'Val (103)
-    LC_H                 : constant Wide_Character := 'h';  -- WC'Val (104)
-    LC_I                 : constant Wide_Character := 'i';  -- WC'Val (105)
-    LC_J                 : constant Wide_Character := 'j';  -- WC'Val (106)
-    LC_K                 : constant Wide_Character := 'k';  -- WC'Val (107)
-    LC_L                 : constant Wide_Character := 'l';  -- WC'Val (108)
-    LC_M                 : constant Wide_Character := 'm';  -- WC'Val (109)
-    LC_N                 : constant Wide_Character := 'n';  -- WC'Val (110)
-    LC_O                 : constant Wide_Character := 'o';  -- WC'Val (111)
-    LC_P                 : constant Wide_Character := 'p';  -- WC'Val (112)
-    LC_Q                 : constant Wide_Character := 'q';  -- WC'Val (113)
-    LC_R                 : constant Wide_Character := 'r';  -- WC'Val (114)
-    LC_S                 : constant Wide_Character := 's';  -- WC'Val (115)
-    LC_T                 : constant Wide_Character := 't';  -- WC'Val (116)
-    LC_U                 : constant Wide_Character := 'u';  -- WC'Val (117)
-    LC_V                 : constant Wide_Character := 'v';  -- WC'Val (118)
-    LC_W                 : constant Wide_Character := 'w';  -- WC'Val (119)
-    LC_X                 : constant Wide_Character := 'x';  -- WC'Val (120)
-    LC_Y                 : constant Wide_Character := 'y';  -- WC'Val (121)
-    LC_Z                 : constant Wide_Character := 'z';  -- WC'Val (122)
-    Left_Curly_Bracket   : constant Wide_Character := '{';  -- WC'Val (123)
-    Vertical_Line        : constant Wide_Character := '|';  -- WC'Val (124)
-    Right_Curly_Bracket  : constant Wide_Character := '}';  -- WC'Val (125)
-    Tilde                : constant Wide_Character := '~';  -- WC'Val (126)
-    DEL                  : constant Wide_Character := Wide_Character'Val (127);
- 
-    --------------------------------------
-    -- ISO 6429 Control Wide_Characters --
-    --------------------------------------
- 
-    IS4 : Wide_Character renames FS;
-    IS3 : Wide_Character renames GS;
-    IS2 : Wide_Character renames RS;
-    IS1 : Wide_Character renames US;
- 
-    Reserved_128         : constant Wide_Character := Wide_Character'Val (128);
-    Reserved_129         : constant Wide_Character := Wide_Character'Val (129);
-    BPH                  : constant Wide_Character := Wide_Character'Val (130);
-    NBH                  : constant Wide_Character := Wide_Character'Val (131);
-    Reserved_132         : constant Wide_Character := Wide_Character'Val (132);
-    NEL                  : constant Wide_Character := Wide_Character'Val (133);
-    SSA                  : constant Wide_Character := Wide_Character'Val (134);
-    ESA                  : constant Wide_Character := Wide_Character'Val (135);
-    HTS                  : constant Wide_Character := Wide_Character'Val (136);
-    HTJ                  : constant Wide_Character := Wide_Character'Val (137);
-    VTS                  : constant Wide_Character := Wide_Character'Val (138);
-    PLD                  : constant Wide_Character := Wide_Character'Val (139);
-    PLU                  : constant Wide_Character := Wide_Character'Val (140);
-    RI                   : constant Wide_Character := Wide_Character'Val (141);
-    SS2                  : constant Wide_Character := Wide_Character'Val (142);
-    SS3                  : constant Wide_Character := Wide_Character'Val (143);
- 
-    DCS                  : constant Wide_Character := Wide_Character'Val (144);
-    PU1                  : constant Wide_Character := Wide_Character'Val (145);
-    PU2                  : constant Wide_Character := Wide_Character'Val (146);
-    STS                  : constant Wide_Character := Wide_Character'Val (147);
-    CCH                  : constant Wide_Character := Wide_Character'Val (148);
-    MW                   : constant Wide_Character := Wide_Character'Val (149);
-    SPA                  : constant Wide_Character := Wide_Character'Val (150);
-    EPA                  : constant Wide_Character := Wide_Character'Val (151);
- 
-    SOS                  : constant Wide_Character := Wide_Character'Val (152);
-    Reserved_153         : constant Wide_Character := Wide_Character'Val (153);
-    SCI                  : constant Wide_Character := Wide_Character'Val (154);
-    CSI                  : constant Wide_Character := Wide_Character'Val (155);
-    ST                   : constant Wide_Character := Wide_Character'Val (156);
-    OSC                  : constant Wide_Character := Wide_Character'Val (157);
-    PM                   : constant Wide_Character := Wide_Character'Val (158);
-    APC                  : constant Wide_Character := Wide_Character'Val (159);
- 
-    -----------------------------------
-    -- Other Graphic Wide_Characters --
-    -----------------------------------
- 
-    --  Wide_Character positions 160 (16#A0#) .. 175 (16#AF#)
- 
-    No_Break_Space       : constant Wide_Character := Wide_Character'Val (160);
-    NBSP                 : Wide_Character renames No_Break_Space;
-    Inverted_Exclamation : constant Wide_Character := Wide_Character'Val (161);
-    Cent_Sign            : constant Wide_Character := Wide_Character'Val (162);
-    Pound_Sign           : constant Wide_Character := Wide_Character'Val (163);
-    Euro_Sign            : constant Wide_Character := Wide_Character'Val (164);
-    Yen_Sign             : constant Wide_Character := Wide_Character'Val (165);
-    UC_S_Caron           : constant Wide_Character := Wide_Character'Val (166);
-    Section_Sign         : constant Wide_Character := Wide_Character'Val (167);
-    LC_S_Caron           : constant Wide_Character := Wide_Character'Val (168);
-    Copyright_Sign       : constant Wide_Character := Wide_Character'Val (169);
-    Feminine_Ordinal_Indicator
-                         : constant Wide_Character := Wide_Character'Val (170);
-    Left_Angle_Quotation : constant Wide_Character := Wide_Character'Val (171);
-    Not_Sign             : constant Wide_Character := Wide_Character'Val (172);
-    Soft_Hyphen          : constant Wide_Character := Wide_Character'Val (173);
-    Registered_Trade_Mark_Sign
-                         : constant Wide_Character := Wide_Character'Val (174);
-    Macron               : constant Wide_Character := Wide_Character'Val (175);
- 
-    --  Wide_Character positions 176 (16#B0#) .. 191 (16#BF#)
- 
-    Degree_Sign          : constant Wide_Character := Wide_Character'Val (176);
-    Ring_Above           : Wide_Character renames Degree_Sign;
-    Plus_Minus_Sign      : constant Wide_Character := Wide_Character'Val (177);
-    Superscript_Two      : constant Wide_Character := Wide_Character'Val (178);
-    Superscript_Three    : constant Wide_Character := Wide_Character'Val (179);
-    UC_Z_Caron           : constant Wide_Character := Wide_Character'Val (180);
-    Micro_Sign           : constant Wide_Character := Wide_Character'Val (181);
-    Pilcrow_Sign         : constant Wide_Character := Wide_Character'Val (182);
-    Paragraph_Sign       : Wide_Character renames Pilcrow_Sign;
-    Middle_Dot           : constant Wide_Character := Wide_Character'Val (183);
-    LC_Z_Caron           : constant Wide_Character := Wide_Character'Val (184);
-    Superscript_One      : constant Wide_Character := Wide_Character'Val (185);
-    Masculine_Ordinal_Indicator
-                         : constant Wide_Character := Wide_Character'Val (186);
-    Right_Angle_Quotation
-                         : constant Wide_Character := Wide_Character'Val (187);
-    UC_Ligature_OE       : constant Wide_Character := Wide_Character'Val (188);
-    LC_Ligature_OE       : constant Wide_Character := Wide_Character'Val (189);
-    UC_Y_Diaeresis       : constant Wide_Character := Wide_Character'Val (190);
-    Inverted_Question    : constant Wide_Character := Wide_Character'Val (191);
- 
-    --  Wide_Character positions 192 (16#C0#) .. 207 (16#CF#)
- 
-    UC_A_Grave           : constant Wide_Character := Wide_Character'Val (192);
-    UC_A_Acute           : constant Wide_Character := Wide_Character'Val (193);
-    UC_A_Circumflex      : constant Wide_Character := Wide_Character'Val (194);
-    UC_A_Tilde           : constant Wide_Character := Wide_Character'Val (195);
-    UC_A_Diaeresis       : constant Wide_Character := Wide_Character'Val (196);
-    UC_A_Ring            : constant Wide_Character := Wide_Character'Val (197);
-    UC_AE_Diphthong      : constant Wide_Character := Wide_Character'Val (198);
-    UC_C_Cedilla         : constant Wide_Character := Wide_Character'Val (199);
-    UC_E_Grave           : constant Wide_Character := Wide_Character'Val (200);
-    UC_E_Acute           : constant Wide_Character := Wide_Character'Val (201);
-    UC_E_Circumflex      : constant Wide_Character := Wide_Character'Val (202);
-    UC_E_Diaeresis       : constant Wide_Character := Wide_Character'Val (203);
-    UC_I_Grave           : constant Wide_Character := Wide_Character'Val (204);
-    UC_I_Acute           : constant Wide_Character := Wide_Character'Val (205);
-    UC_I_Circumflex      : constant Wide_Character := Wide_Character'Val (206);
-    UC_I_Diaeresis       : constant Wide_Character := Wide_Character'Val (207);
- 
-    --  Wide_Character positions 208 (16#D0#) .. 223 (16#DF#)
- 
-    UC_Icelandic_Eth     : constant Wide_Character := Wide_Character'Val (208);
-    UC_N_Tilde           : constant Wide_Character := Wide_Character'Val (209);
-    UC_O_Grave           : constant Wide_Character := Wide_Character'Val (210);
-    UC_O_Acute           : constant Wide_Character := Wide_Character'Val (211);
-    UC_O_Circumflex      : constant Wide_Character := Wide_Character'Val (212);
-    UC_O_Tilde           : constant Wide_Character := Wide_Character'Val (213);
-    UC_O_Diaeresis       : constant Wide_Character := Wide_Character'Val (214);
-    Multiplication_Sign  : constant Wide_Character := Wide_Character'Val (215);
-    UC_O_Oblique_Stroke  : constant Wide_Character := Wide_Character'Val (216);
-    UC_U_Grave           : constant Wide_Character := Wide_Character'Val (217);
-    UC_U_Acute           : constant Wide_Character := Wide_Character'Val (218);
-    UC_U_Circumflex      : constant Wide_Character := Wide_Character'Val (219);
-    UC_U_Diaeresis       : constant Wide_Character := Wide_Character'Val (220);
-    UC_Y_Acute           : constant Wide_Character := Wide_Character'Val (221);
-    UC_Icelandic_Thorn   : constant Wide_Character := Wide_Character'Val (222);
-    LC_German_Sharp_S    : constant Wide_Character := Wide_Character'Val (223);
- 
-    --  Wide_Character positions 224 (16#E0#) .. 239 (16#EF#)
- 
-    LC_A_Grave           : constant Wide_Character := Wide_Character'Val (224);
-    LC_A_Acute           : constant Wide_Character := Wide_Character'Val (225);
-    LC_A_Circumflex      : constant Wide_Character := Wide_Character'Val (226);
-    LC_A_Tilde           : constant Wide_Character := Wide_Character'Val (227);
-    LC_A_Diaeresis       : constant Wide_Character := Wide_Character'Val (228);
-    LC_A_Ring            : constant Wide_Character := Wide_Character'Val (229);
-    LC_AE_Diphthong      : constant Wide_Character := Wide_Character'Val (230);
-    LC_C_Cedilla         : constant Wide_Character := Wide_Character'Val (231);
-    LC_E_Grave           : constant Wide_Character := Wide_Character'Val (232);
-    LC_E_Acute           : constant Wide_Character := Wide_Character'Val (233);
-    LC_E_Circumflex      : constant Wide_Character := Wide_Character'Val (234);
-    LC_E_Diaeresis       : constant Wide_Character := Wide_Character'Val (235);
-    LC_I_Grave           : constant Wide_Character := Wide_Character'Val (236);
-    LC_I_Acute           : constant Wide_Character := Wide_Character'Val (237);
-    LC_I_Circumflex      : constant Wide_Character := Wide_Character'Val (238);
-    LC_I_Diaeresis       : constant Wide_Character := Wide_Character'Val (239);
- 
-    --  Wide_Character positions 240 (16#F0#) .. 255 (16#FF)
- 
-    LC_Icelandic_Eth     : constant Wide_Character := Wide_Character'Val (240);
-    LC_N_Tilde           : constant Wide_Character := Wide_Character'Val (241);
-    LC_O_Grave           : constant Wide_Character := Wide_Character'Val (242);
-    LC_O_Acute           : constant Wide_Character := Wide_Character'Val (243);
-    LC_O_Circumflex      : constant Wide_Character := Wide_Character'Val (244);
-    LC_O_Tilde           : constant Wide_Character := Wide_Character'Val (245);
-    LC_O_Diaeresis       : constant Wide_Character := Wide_Character'Val (246);
-    Division_Sign        : constant Wide_Character := Wide_Character'Val (247);
-    LC_O_Oblique_Stroke  : constant Wide_Character := Wide_Character'Val (248);
-    LC_U_Grave           : constant Wide_Character := Wide_Character'Val (249);
-    LC_U_Acute           : constant Wide_Character := Wide_Character'Val (250);
-    LC_U_Circumflex      : constant Wide_Character := Wide_Character'Val (251);
-    LC_U_Diaeresis       : constant Wide_Character := Wide_Character'Val (252);
-    LC_Y_Acute           : constant Wide_Character := Wide_Character'Val (253);
-    LC_Icelandic_Thorn   : constant Wide_Character := Wide_Character'Val (254);
-    LC_Y_Diaeresis       : constant Wide_Character := Wide_Character'Val (255);
- 
-    ------------------------------------------------
-    -- Summary of Changes from Latin-1 => Latin-9 --
-    ------------------------------------------------
- 
-    --   164     Currency                => Euro_Sign
-    --   166     Broken_Bar              => UC_S_Caron
-    --   168     Diaeresis               => LC_S_Caron
-    --   180     Acute                   => UC_Z_Caron
-    --   184     Cedilla                 => LC_Z_Caron
-    --   188     Fraction_One_Quarter    => UC_Ligature_OE
-    --   189     Fraction_One_Half       => LC_Ligature_OE
-    --   190     Fraction_Three_Quarters => UC_Y_Diaeresis
- 
- end Ada.Characters.Wide_Latin_9;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-decima.adb gcc-8.1.0/gcc/ada/a-decima.adb
*** gcc-7.3.0/gcc/ada/a-decima.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-decima.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,60 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                          A D A . D E C I M A L                           --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          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- --
- -- 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 Ada.Decimal is
- 
-    ------------
-    -- Divide --
-    ------------
- 
-    procedure Divide
-      (Dividend  : Dividend_Type;
-       Divisor   : Divisor_Type;
-       Quotient  : out Quotient_Type;
-       Remainder : out Remainder_Type)
-    is
-       --  We have a nested procedure that is the actual intrinsic divide.
-       --  This is required because in the current RM, Divide itself does
-       --  not have convention Intrinsic.
- 
-       procedure Divide
-         (Dividend  : Dividend_Type;
-          Divisor   : Divisor_Type;
-          Quotient  : out Quotient_Type;
-          Remainder : out Remainder_Type);
- 
-       pragma Import (Intrinsic, Divide);
- 
-    begin
-       Divide (Dividend, Divisor, Quotient, Remainder);
-    end Divide;
- 
- end Ada.Decimal;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-decima.ads gcc-8.1.0/gcc/ada/a-decima.ads
*** gcc-7.3.0/gcc/ada/a-decima.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-decima.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,67 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                          A D A . D E C I M A L                           --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2009, Free Software Foundation, 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 Ada.Decimal is
-    pragma Pure;
- 
-    --  The compiler makes a number of assumptions based on the following five
-    --  constants (e.g. there is an assumption that decimal values can always
-    --  be represented in 64-bit signed binary form), so code modifications are
-    --  required to increase these constants.
- 
-    Max_Scale : constant := +18;
-    Min_Scale : constant := -18;
- 
-    Min_Delta : constant := 1.0E-18;
-    Max_Delta : constant := 1.0E+18;
- 
-    Max_Decimal_Digits : constant := 18;
- 
-    generic
-       type Dividend_Type  is delta <> digits <>;
-       type Divisor_Type   is delta <> digits <>;
-       type Quotient_Type  is delta <> digits <>;
-       type Remainder_Type is delta <> digits <>;
- 
-    procedure Divide
-      (Dividend  : Dividend_Type;
-       Divisor   : Divisor_Type;
-       Quotient  : out Quotient_Type;
-       Remainder : out Remainder_Type);
- 
- private
-    pragma Inline (Divide);
- 
- end Ada.Decimal;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-dhfina.ads gcc-8.1.0/gcc/ada/a-dhfina.ads
*** gcc-7.3.0/gcc/ada/a-dhfina.ads	Tue May 12 13:44:19 2015
--- gcc-8.1.0/gcc/ada/a-dhfina.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,46 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                  ADA.DIRECTORIES.HIERARCHICAL_FILE_NAMES                 --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- package Ada.Directories.Hierarchical_File_Names is
-    pragma Unimplemented_Unit;
- 
-    function Is_Simple_Name (Name : String) return Boolean;
- 
-    function Is_Root_Directory_Name (Name : String) return Boolean;
- 
-    function Is_Parent_Directory_Name (Name : String) return Boolean;
- 
-    function Is_Current_Directory_Name (Name : String) return Boolean;
- 
-    function Is_Full_Name (Name : String) return Boolean;
- 
-    function Is_Relative_Name (Name : String) return Boolean;
- 
-    function Simple_Name (Name : String) return String
-      renames Ada.Directories.Simple_Name;
- 
-    function Containing_Directory (Name : String) return String
-      renames Ada.Directories.Containing_Directory;
- 
-    function Initial_Directory (Name : String) return String;
- 
-    function Relative_Name (Name : String) return String;
- 
-    function Compose
-      (Directory      : String := "";
-       Relative_Name  : String;
-       Extension      : String := "") return String;
- 
- end Ada.Directories.Hierarchical_File_Names;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-dinopr.ads gcc-8.1.0/gcc/ada/a-dinopr.ads
*** gcc-7.3.0/gcc/ada/a-dinopr.ads	Fri Feb 20 11:48:57 2015
--- gcc-8.1.0/gcc/ada/a-dinopr.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,31 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --       A D A . D I S P A T C H I N G . N O N _ P R E E M P T I V E        --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This unit is not implemented in typical GNAT implementations that lie on
- --  top of operating systems, because it is infeasible to implement in such
- --  environments.
- 
- --  If a target environment provides appropriate support for this package,
- --  then the Unimplemented_Unit pragma should be removed from this spec and
- --  an appropriate body provided.
- 
- package Ada.Dispatching.Non_Preemptive is
-    pragma Preelaborate (Non_Preemptive);
- 
-    pragma Unimplemented_Unit;
- 
-    procedure Yield_To_Higher;
-    procedure Yield_To_Same_Or_Higher renames Yield;
- end Ada.Dispatching.Non_Preemptive;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-diocst.adb gcc-8.1.0/gcc/ada/a-diocst.adb
*** gcc-7.3.0/gcc/ada/a-diocst.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-diocst.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,88 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                        GNAT RUN-TIME COMPONENTS                          --
- --                                                                          --
- --              A D A . D I R E C T _ I O . C _ S T R E A M S               --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          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- --
- -- 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 Interfaces.C_Streams; use Interfaces.C_Streams;
- with System.File_IO;
- with System.File_Control_Block;
- with System.Direct_IO;
- with Ada.Unchecked_Conversion;
- 
- package body Ada.Direct_IO.C_Streams is
- 
-    package FIO renames System.File_IO;
-    package FCB renames System.File_Control_Block;
-    package DIO renames System.Direct_IO;
- 
-    subtype AP is FCB.AFCB_Ptr;
- 
-    function To_FCB is new Ada.Unchecked_Conversion (File_Mode, FCB.File_Mode);
- 
-    --------------
-    -- C_Stream --
-    --------------
- 
-    function C_Stream (F : File_Type) return FILEs is
-    begin
-       FIO.Check_File_Open (AP (F));
-       return F.Stream;
-    end C_Stream;
- 
-    ----------
-    -- Open --
-    ----------
- 
-    procedure Open
-      (File     : in out File_Type;
-       Mode     : File_Mode;
-       C_Stream : FILEs;
-       Form     : String := "";
-       Name     : String := "")
-    is
-       Dummy_File_Control_Block : DIO.Direct_AFCB;
-       pragma Warnings (Off, Dummy_File_Control_Block);
-       --  Yes, we know this is never assigned a value, only the tag
-       --  is used for dispatching purposes, so that's expected.
- 
-    begin
-       FIO.Open (File_Ptr  => AP (File),
-                 Dummy_FCB => Dummy_File_Control_Block,
-                 Mode      => To_FCB (Mode),
-                 Name      => Name,
-                 Form      => Form,
-                 Amethod   => 'D',
-                 Creat     => False,
-                 Text      => False,
-                 C_Stream  => C_Stream);
- 
-       File.Bytes := Bytes;
-    end Open;
- 
- end Ada.Direct_IO.C_Streams;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-diocst.ads gcc-8.1.0/gcc/ada/a-diocst.ads
*** gcc-7.3.0/gcc/ada/a-diocst.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-diocst.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,54 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --              A D A . D I R E C T _ I O . C _ S T R E A M S               --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          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- --
- -- 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 an interface between Ada.Direct_IO and the
- --  C streams. This allows sharing of a stream between Ada and C or C++,
- --  as well as allowing the Ada program to operate directly on the stream.
- 
- with Interfaces.C_Streams;
- 
- generic
- package Ada.Direct_IO.C_Streams is
- 
-    package ICS renames Interfaces.C_Streams;
- 
-    function C_Stream (F : File_Type) return ICS.FILEs;
-    --  Obtain stream from existing open file
- 
-    procedure Open
-      (File     : in out File_Type;
-       Mode     : File_Mode;
-       C_Stream : ICS.FILEs;
-       Form     : String := "";
-       Name     : String := "");
-    --  Create new file from existing stream
- 
- end Ada.Direct_IO.C_Streams;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-direct.adb gcc-8.1.0/gcc/ada/a-direct.adb
*** gcc-7.3.0/gcc/ada/a-direct.adb	Mon May  2 09:45:17 2016
--- gcc-8.1.0/gcc/ada/a-direct.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,1340 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                      A D A . D I R E C T O R I E S                       --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2004-2016, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Calendar;               use Ada.Calendar;
- with Ada.Calendar.Formatting;    use Ada.Calendar.Formatting;
- with Ada.Characters.Handling;    use Ada.Characters.Handling;
- with Ada.Directories.Validity;   use Ada.Directories.Validity;
- with Ada.Strings.Fixed;
- with Ada.Strings.Maps;           use Ada.Strings.Maps;
- with Ada.Strings.Unbounded;      use Ada.Strings.Unbounded;
- with Ada.Unchecked_Deallocation;
- 
- with System;                 use System;
- with System.CRTL;            use System.CRTL;
- with System.File_Attributes; use System.File_Attributes;
- with System.File_IO;         use System.File_IO;
- with System.OS_Constants;    use System.OS_Constants;
- with System.OS_Lib;          use System.OS_Lib;
- with System.Regexp;          use System.Regexp;
- 
- package body Ada.Directories is
- 
-    type Dir_Type_Value is new Address;
-    --  This is the low-level address directory structure as returned by the C
-    --  opendir routine.
- 
-    No_Dir : constant Dir_Type_Value := Dir_Type_Value (Null_Address);
-    --  Null directory value
- 
-    Dir_Separator : constant Character;
-    pragma Import (C, Dir_Separator, "__gnat_dir_separator");
-    --  Running system default directory separator
- 
-    Dir_Seps : constant Character_Set := Strings.Maps.To_Set ("/\");
-    --  UNIX and DOS style directory separators
- 
-    Max_Path : Integer;
-    pragma Import (C, Max_Path, "__gnat_max_path_len");
-    --  The maximum length of a path
- 
-    type Search_Data is record
-       Is_Valid      : Boolean := False;
-       Name          : Unbounded_String;
-       Pattern       : Regexp;
-       Filter        : Filter_Type;
-       Dir           : Dir_Type_Value := No_Dir;
-       Entry_Fetched : Boolean := False;
-       Dir_Entry     : Directory_Entry_Type;
-    end record;
-    --  The current state of a search
- 
-    Empty_String : constant String := (1 .. 0 => ASCII.NUL);
-    --  Empty string, returned by function Extension when there is no extension
- 
-    procedure Free is new Ada.Unchecked_Deallocation (Search_Data, Search_Ptr);
- 
-    procedure Close (Dir : Dir_Type_Value);
- 
-    function File_Exists (Name : String) return Boolean;
-    --  Returns True if the named file exists
- 
-    procedure Fetch_Next_Entry (Search : Search_Type);
-    --  Get the next entry in a directory, setting Entry_Fetched if successful
-    --  or resetting Is_Valid if not.
- 
-    ---------------
-    -- Base_Name --
-    ---------------
- 
-    function Base_Name (Name : String) return String is
-       Simple : constant String := Simple_Name (Name);
-       --  Simple'First is guaranteed to be 1
- 
-    begin
-       --  Look for the last dot in the file name and return the part of the
-       --  file name preceding this last dot. If the first dot is the first
-       --  character of the file name, the base name is the empty string.
- 
-       for Pos in reverse Simple'Range loop
-          if Simple (Pos) = '.' then
-             return Simple (1 .. Pos - 1);
-          end if;
-       end loop;
- 
-       --  If there is no dot, return the complete file name
- 
-       return Simple;
-    end Base_Name;
- 
-    -----------
-    -- Close --
-    -----------
- 
-    procedure Close (Dir : Dir_Type_Value) is
-       Discard : Integer;
-       pragma Warnings (Off, Discard);
- 
-       function closedir (directory : DIRs) return Integer;
-       pragma Import (C, closedir, "__gnat_closedir");
- 
-    begin
-       Discard := closedir (DIRs (Dir));
-    end Close;
- 
-    -------------
-    -- Compose --
-    -------------
- 
-    function Compose
-      (Containing_Directory : String := "";
-       Name                 : String;
-       Extension            : String := "") return String
-    is
-       Result : String (1 .. Containing_Directory'Length +
-                               Name'Length + Extension'Length + 2);
-       Last   : Natural;
- 
-    begin
-       --  First, deal with the invalid cases
- 
-       if Containing_Directory /= ""
-         and then not Is_Valid_Path_Name (Containing_Directory)
-       then
-          raise Name_Error with
-            "invalid directory path name """ & Containing_Directory & '"';
- 
-       elsif
-         Extension'Length = 0 and then (not Is_Valid_Simple_Name (Name))
-       then
-          raise Name_Error with
-            "invalid simple name """ & Name & '"';
- 
-       elsif Extension'Length /= 0
-         and then not Is_Valid_Simple_Name (Name & '.' & Extension)
-       then
-          raise Name_Error with
-            "invalid file name """ & Name & '.' & Extension & '"';
- 
-       --  This is not an invalid case so build the path name
- 
-       else
-          Last := Containing_Directory'Length;
-          Result (1 .. Last) := Containing_Directory;
- 
-          --  Add a directory separator if needed
- 
-          if Last /= 0 and then not Is_In (Result (Last), Dir_Seps) then
-             Last := Last + 1;
-             Result (Last) := Dir_Separator;
-          end if;
- 
-          --  Add the file name
- 
-          Result (Last + 1 .. Last + Name'Length) := Name;
-          Last := Last + Name'Length;
- 
-          --  If extension was specified, add dot followed by this extension
- 
-          if Extension'Length /= 0 then
-             Last := Last + 1;
-             Result (Last) := '.';
-             Result (Last + 1 .. Last + Extension'Length) := Extension;
-             Last := Last + Extension'Length;
-          end if;
- 
-          return Result (1 .. Last);
-       end if;
-    end Compose;
- 
-    --------------------------
-    -- Containing_Directory --
-    --------------------------
- 
-    function Containing_Directory (Name : String) return String is
-    begin
-       --  First, the invalid case
- 
-       if not Is_Valid_Path_Name (Name) then
-          raise Name_Error with "invalid path name """ & Name & '"';
- 
-       else
-          declare
-             Last_DS : constant Natural :=
-               Strings.Fixed.Index (Name, Dir_Seps, Going => Strings.Backward);
- 
-          begin
-             if Last_DS = 0 then
- 
-                --  There is no directory separator, returns "." representing
-                --  the current working directory.
- 
-                return ".";
- 
-             --  If Name indicates a root directory, raise Use_Error, because
-             --  it has no containing directory.
- 
-             elsif Name = "/"
-               or else
-                 (Windows
-                   and then
-                   (Name = "\"
-                       or else
-                         (Name'Length = 3
-                           and then Name (Name'Last - 1 .. Name'Last) = ":\"
-                           and then (Name (Name'First) in 'a' .. 'z'
-                                      or else
-                                        Name (Name'First) in 'A' .. 'Z'))))
-             then
-                raise Use_Error with
-                  "directory """ & Name & """ has no containing directory";
- 
-             else
-                declare
-                   Last   : Positive := Last_DS - Name'First + 1;
-                   Result : String (1 .. Last);
- 
-                begin
-                   Result := Name (Name'First .. Last_DS);
- 
-                   --  Remove any trailing directory separator, except as the
-                   --  first character or the first character following a drive
-                   --  number on Windows.
- 
-                   while Last > 1 loop
-                      exit when
-                        Result (Last) /= '/'
-                          and then
-                        Result (Last) /= Directory_Separator;
- 
-                      exit when Windows
-                        and then Last = 3
-                        and then Result (2) = ':'
-                        and then
-                          (Result (1) in 'A' .. 'Z'
-                            or else
-                           Result (1) in 'a' .. 'z');
- 
-                      Last := Last - 1;
-                   end loop;
- 
-                   --  Special case of "..": the current directory may be a root
-                   --  directory.
- 
-                   if Last = 2 and then Result (1 .. 2) = ".." then
-                      return Containing_Directory (Current_Directory);
- 
-                   else
-                      return Result (1 .. Last);
-                   end if;
-                end;
-             end if;
-          end;
-       end if;
-    end Containing_Directory;
- 
-    ---------------
-    -- Copy_File --
-    ---------------
- 
-    procedure Copy_File
-      (Source_Name : String;
-       Target_Name : String;
-       Form        : String := "")
-    is
-       Success  : Boolean;
-       Mode     : Copy_Mode := Overwrite;
-       Preserve : Attribute := None;
- 
-    begin
-       --  First, the invalid cases
- 
-       if not Is_Valid_Path_Name (Source_Name) then
-          raise Name_Error with
-            "invalid source path name """ & Source_Name & '"';
- 
-       elsif not Is_Valid_Path_Name (Target_Name) then
-          raise Name_Error with
-            "invalid target path name """ & Target_Name & '"';
- 
-       elsif not Is_Regular_File (Source_Name) then
-          raise Name_Error with '"' & Source_Name & """ is not a file";
- 
-       elsif Is_Directory (Target_Name) then
-          raise Use_Error with "target """ & Target_Name & """ is a directory";
- 
-       else
-          if Form'Length > 0 then
-             declare
-                Formstr : String (1 .. Form'Length + 1);
-                V1, V2  : Natural;
- 
-             begin
-                --  Acquire form string, setting required NUL terminator
- 
-                Formstr (1 .. Form'Length) := Form;
-                Formstr (Formstr'Last) := ASCII.NUL;
- 
-                --  Convert form string to lower case
- 
-                for J in Formstr'Range loop
-                   if Formstr (J) in 'A' .. 'Z' then
-                      Formstr (J) :=
-                        Character'Val (Character'Pos (Formstr (J)) + 32);
-                   end if;
-                end loop;
- 
-                --  Check Form
- 
-                Form_Parameter (Formstr, "mode", V1, V2);
- 
-                if V1 = 0 then
-                   Mode := Overwrite;
-                elsif Formstr (V1 .. V2) = "copy" then
-                   Mode := Copy;
-                elsif Formstr (V1 .. V2) = "overwrite" then
-                   Mode := Overwrite;
-                elsif Formstr (V1 .. V2) = "append" then
-                   Mode := Append;
-                else
-                   raise Use_Error with "invalid Form";
-                end if;
- 
-                Form_Parameter (Formstr, "preserve", V1, V2);
- 
-                if V1 = 0 then
-                   Preserve := None;
-                elsif Formstr (V1 .. V2) = "timestamps" then
-                   Preserve := Time_Stamps;
-                elsif Formstr (V1 .. V2) = "all_attributes" then
-                   Preserve := Full;
-                elsif Formstr (V1 .. V2) = "no_attributes" then
-                   Preserve := None;
-                else
-                   raise Use_Error with "invalid Form";
-                end if;
-             end;
-          end if;
- 
-          --  Do actual copy using System.OS_Lib.Copy_File
- 
-          Copy_File (Source_Name, Target_Name, Success, Mode, Preserve);
- 
-          if not Success then
-             raise Use_Error with "copy of """ & Source_Name & """ failed";
-          end if;
-       end if;
-    end Copy_File;
- 
-    ----------------------
-    -- Create_Directory --
-    ----------------------
- 
-    procedure Create_Directory
-      (New_Directory : String;
-       Form          : String := "")
-    is
-       C_Dir_Name : constant String := New_Directory & ASCII.NUL;
- 
-    begin
-       --  First, the invalid case
- 
-       if not Is_Valid_Path_Name (New_Directory) then
-          raise Name_Error with
-            "invalid new directory path name """ & New_Directory & '"';
- 
-       else
-          --  Acquire setting of encoding parameter
- 
-          declare
-             Formstr : constant String := To_Lower (Form);
- 
-             Encoding : CRTL.Filename_Encoding;
-             --  Filename encoding specified into the form parameter
- 
-             V1, V2 : Natural;
- 
-          begin
-             Form_Parameter (Formstr, "encoding", V1, V2);
- 
-             if V1 = 0 then
-                Encoding := CRTL.Unspecified;
-             elsif Formstr (V1 .. V2) = "utf8" then
-                Encoding := CRTL.UTF8;
-             elsif Formstr (V1 .. V2) = "8bits" then
-                Encoding := CRTL.ASCII_8bits;
-             else
-                raise Use_Error with "invalid Form";
-             end if;
- 
-             if CRTL.mkdir (C_Dir_Name, Encoding) /= 0 then
-                raise Use_Error with
-                  "creation of new directory """ & New_Directory & """ failed";
-             end if;
-          end;
-       end if;
-    end Create_Directory;
- 
-    -----------------
-    -- Create_Path --
-    -----------------
- 
-    procedure Create_Path
-      (New_Directory : String;
-       Form          : String := "")
-    is
-       New_Dir : String (1 .. New_Directory'Length + 1);
-       Last    : Positive := 1;
-       Start   : Positive := 1;
- 
-    begin
-       --  First, the invalid case
- 
-       if not Is_Valid_Path_Name (New_Directory) then
-          raise Name_Error with
-            "invalid new directory path name """ & New_Directory & '"';
- 
-       else
-          --  Build New_Dir with a directory separator at the end, so that the
-          --  complete path will be found in the loop below.
- 
-          New_Dir (1 .. New_Directory'Length) := New_Directory;
-          New_Dir (New_Dir'Last) := Directory_Separator;
- 
-          --  If host is windows, and the first two characters are directory
-          --  separators, we have an UNC path. Skip it.
- 
-          if Directory_Separator = '\'
-            and then New_Dir'Length > 2
-            and then Is_In (New_Dir (1), Dir_Seps)
-            and then Is_In (New_Dir (2), Dir_Seps)
-          then
-             Start := 2;
-             loop
-                Start := Start + 1;
-                exit when Start = New_Dir'Last
-                  or else Is_In (New_Dir (Start), Dir_Seps);
-             end loop;
-          end if;
- 
-          --  Create, if necessary, each directory in the path
- 
-          for J in Start + 1 .. New_Dir'Last loop
- 
-             --  Look for the end of an intermediate directory
- 
-             if not Is_In (New_Dir (J), Dir_Seps) then
-                Last := J;
- 
-             --  We have found a new intermediate directory each time we find
-             --  a first directory separator.
- 
-             elsif not Is_In (New_Dir (J - 1), Dir_Seps) then
- 
-                --  No need to create the directory if it already exists
- 
-                if not Is_Directory (New_Dir (1 .. Last)) then
-                   begin
-                      Create_Directory
-                        (New_Directory => New_Dir (1 .. Last), Form => Form);
- 
-                   exception
-                      when Use_Error =>
-                         if File_Exists (New_Dir (1 .. Last)) then
- 
-                            --  A file with such a name already exists. If it is
-                            --  a directory, then it was apparently just created
-                            --  by another process or thread, and all is well.
-                            --  If it is of some other kind, report an error.
- 
-                            if not Is_Directory (New_Dir (1 .. Last)) then
-                               raise Use_Error with
-                                 "file """ & New_Dir (1 .. Last) &
-                                   """ already exists and is not a directory";
-                            end if;
- 
-                         else
-                            --  Create_Directory failed for some other reason:
-                            --  propagate the exception.
- 
-                            raise;
-                         end if;
-                   end;
-                end if;
-             end if;
-          end loop;
-       end if;
-    end Create_Path;
- 
-    -----------------------
-    -- Current_Directory --
-    -----------------------
- 
-    function Current_Directory return String is
-       Path_Len : Natural := Max_Path;
-       Buffer   : String (1 .. 1 + Max_Path + 1);
- 
-       procedure Local_Get_Current_Dir (Dir : Address; Length : Address);
-       pragma Import (C, Local_Get_Current_Dir, "__gnat_get_current_dir");
- 
-    begin
-       Local_Get_Current_Dir (Buffer'Address, Path_Len'Address);
- 
-       --  We need to resolve links because of RM A.16(47), which requires
-       --  that we not return alternative names for files.
- 
-       return Normalize_Pathname (Buffer (1 .. Path_Len));
-    end Current_Directory;
- 
-    ----------------------
-    -- Delete_Directory --
-    ----------------------
- 
-    procedure Delete_Directory (Directory : String) is
-    begin
-       --  First, the invalid cases
- 
-       if not Is_Valid_Path_Name (Directory) then
-          raise Name_Error with
-            "invalid directory path name """ & Directory & '"';
- 
-       elsif not Is_Directory (Directory) then
-          raise Name_Error with '"' & Directory & """ not a directory";
- 
-       --  Do the deletion, checking for error
- 
-       else
-          declare
-             C_Dir_Name : constant String := Directory & ASCII.NUL;
-          begin
-             if rmdir (C_Dir_Name) /= 0 then
-                raise Use_Error with
-                  "deletion of directory """ & Directory & """ failed";
-             end if;
-          end;
-       end if;
-    end Delete_Directory;
- 
-    -----------------
-    -- Delete_File --
-    -----------------
- 
-    procedure Delete_File (Name : String) is
-       Success : Boolean;
- 
-    begin
-       --  First, the invalid cases
- 
-       if not Is_Valid_Path_Name (Name) then
-          raise Name_Error with "invalid path name """ & Name & '"';
- 
-       elsif not Is_Regular_File (Name)
-         and then not Is_Symbolic_Link (Name)
-       then
-          raise Name_Error with "file """ & Name & """ does not exist";
- 
-       else
-          --  Do actual deletion using System.OS_Lib.Delete_File
- 
-          Delete_File (Name, Success);
- 
-          if not Success then
-             raise Use_Error with "file """ & Name & """ could not be deleted";
-          end if;
-       end if;
-    end Delete_File;
- 
-    -----------------
-    -- Delete_Tree --
-    -----------------
- 
-    procedure Delete_Tree (Directory : String) is
-       Search      : Search_Type;
-       Dir_Ent     : Directory_Entry_Type;
-    begin
-       --  First, the invalid cases
- 
-       if not Is_Valid_Path_Name (Directory) then
-          raise Name_Error with
-            "invalid directory path name """ & Directory & '"';
- 
-       elsif not Is_Directory (Directory) then
-          raise Name_Error with '"' & Directory & """ not a directory";
- 
-       else
- 
-          --  We used to change the current directory to Directory here,
-          --  allowing the use of a local Simple_Name for all references. This
-          --  turned out unfriendly to multitasking programs, where tasks
-          --  running in parallel of this Delete_Tree could see their current
-          --  directory change unpredictably. We now resort to Full_Name
-          --  computations to reach files and subdirs instead.
- 
-          Start_Search (Search, Directory => Directory, Pattern => "");
-          while More_Entries (Search) loop
-             Get_Next_Entry (Search, Dir_Ent);
- 
-             declare
-                Fname : constant String := Full_Name   (Dir_Ent);
-                Sname : constant String := Simple_Name (Dir_Ent);
- 
-             begin
-                if OS_Lib.Is_Directory (Fname) then
-                   if Sname /= "." and then Sname /= ".." then
-                      Delete_Tree (Fname);
-                   end if;
-                else
-                   Delete_File (Fname);
-                end if;
-             end;
-          end loop;
- 
-          End_Search (Search);
- 
-          declare
-             C_Dir_Name : constant String := Directory & ASCII.NUL;
- 
-          begin
-             if rmdir (C_Dir_Name) /= 0 then
-                raise Use_Error with
-                  "directory tree rooted at """ &
-                    Directory & """ could not be deleted";
-             end if;
-          end;
-       end if;
-    end Delete_Tree;
- 
-    ------------
-    -- Exists --
-    ------------
- 
-    function Exists (Name : String) return Boolean is
-    begin
-       --  First, the invalid case
- 
-       if not Is_Valid_Path_Name (Name) then
-          raise Name_Error with "invalid path name """ & Name & '"';
- 
-       else
-          --  The implementation is in File_Exists
- 
-          return File_Exists (Name);
-       end if;
-    end Exists;
- 
-    ---------------
-    -- Extension --
-    ---------------
- 
-    function Extension (Name : String) return String is
-    begin
-       --  First, the invalid case
- 
-       if not Is_Valid_Path_Name (Name) then
-          raise Name_Error with "invalid path name """ & Name & '"';
- 
-       else
-          --  Look for first dot that is not followed by a directory separator
- 
-          for Pos in reverse Name'Range loop
- 
-             --  If a directory separator is found before a dot, there is no
-             --  extension.
- 
-             if Is_In (Name (Pos), Dir_Seps) then
-                return Empty_String;
- 
-             elsif Name (Pos) = '.' then
- 
-                --  We found a dot, build the return value with lower bound 1
- 
-                declare
-                   subtype Result_Type is String (1 .. Name'Last - Pos);
-                begin
-                   return Result_Type (Name (Pos + 1 .. Name'Last));
-                end;
-             end if;
-          end loop;
- 
-          --  No dot were found, there is no extension
- 
-          return Empty_String;
-       end if;
-    end Extension;
- 
-    ----------------------
-    -- Fetch_Next_Entry --
-    ----------------------
- 
-    procedure Fetch_Next_Entry (Search : Search_Type) is
-       Name : String (1 .. NAME_MAX);
-       Last : Natural;
- 
-       Kind : File_Kind := Ordinary_File;
-       --  Initialized to avoid a compilation warning
- 
-       Filename_Addr : Address;
-       Filename_Len  : aliased Integer;
- 
-       Buffer : array (1 .. SIZEOF_struct_dirent_alloc) of Character;
- 
-       function readdir_gnat
-         (Directory : Address;
-          Buffer    : Address;
-          Last      : not null access Integer) return Address;
-       pragma Import (C, readdir_gnat, "__gnat_readdir");
- 
-    begin
-       --  Search.Value.Is_Valid is always True when Fetch_Next_Entry is called
- 
-       loop
-          Filename_Addr :=
-            readdir_gnat
-              (Address (Search.Value.Dir),
-               Buffer'Address,
-               Filename_Len'Access);
- 
-          --  If no matching entry is found, set Is_Valid to False
- 
-          if Filename_Addr = Null_Address then
-             Search.Value.Is_Valid := False;
-             exit;
-          end if;
- 
-          if Filename_Len > Name'Length then
-             raise Use_Error with "file name too long";
-          end if;
- 
-          declare
-             subtype Name_String is String (1 .. Filename_Len);
-             Dent_Name : Name_String;
-             for Dent_Name'Address use Filename_Addr;
-             pragma Import (Ada, Dent_Name);
- 
-          begin
-             Last := Filename_Len;
-             Name (1 .. Last) := Dent_Name;
-          end;
- 
-          --  Check if the entry matches the pattern
- 
-          if Match (Name (1 .. Last), Search.Value.Pattern) then
-             declare
-                C_Full_Name : constant String :=
-                                Compose (To_String (Search.Value.Name),
-                                         Name (1 .. Last)) & ASCII.NUL;
-                Full_Name   : String renames
-                                C_Full_Name
-                                  (C_Full_Name'First .. C_Full_Name'Last - 1);
-                Found       : Boolean := False;
-                Attr        : aliased File_Attributes;
-                Exists      : Integer;
-                Error       : Integer;
- 
-             begin
-                Reset_Attributes (Attr'Access);
-                Exists := File_Exists_Attr (C_Full_Name'Address, Attr'Access);
-                Error  := Error_Attributes (Attr'Access);
- 
-                if Error /= 0 then
-                   raise Use_Error
-                     with Full_Name & ": " & Errno_Message (Err => Error);
-                end if;
- 
-                if Exists = 1 then
- 
-                   --  Now check if the file kind matches the filter
- 
-                   if Is_Regular_File_Attr
-                        (C_Full_Name'Address, Attr'Access) = 1
-                   then
-                      if Search.Value.Filter (Ordinary_File) then
-                         Kind := Ordinary_File;
-                         Found := True;
-                      end if;
- 
-                   elsif Is_Directory_Attr
-                           (C_Full_Name'Address, Attr'Access) = 1
-                   then
-                      if Search.Value.Filter (Directory) then
-                         Kind := Directory;
-                         Found := True;
-                      end if;
- 
-                   elsif Search.Value.Filter (Special_File) then
-                      Kind := Special_File;
-                      Found := True;
-                   end if;
- 
-                   --  If it does, update Search and return
- 
-                   if Found then
-                      Search.Value.Entry_Fetched := True;
-                      Search.Value.Dir_Entry :=
-                        (Is_Valid => True,
-                         Simple   => To_Unbounded_String (Name (1 .. Last)),
-                         Full     => To_Unbounded_String (Full_Name),
-                         Kind     => Kind);
-                      exit;
-                   end if;
-                end if;
-             end;
-          end if;
-       end loop;
-    end Fetch_Next_Entry;
- 
-    -----------------
-    -- File_Exists --
-    -----------------
- 
-    function File_Exists (Name : String) return Boolean is
-       function C_File_Exists (A : Address) return Integer;
-       pragma Import (C, C_File_Exists, "__gnat_file_exists");
- 
-       C_Name : String (1 .. Name'Length + 1);
- 
-    begin
-       C_Name (1 .. Name'Length) := Name;
-       C_Name (C_Name'Last) := ASCII.NUL;
-       return C_File_Exists (C_Name'Address) = 1;
-    end File_Exists;
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    procedure Finalize (Search : in out Search_Type) is
-    begin
-       if Search.Value /= null then
- 
-          --  Close the directory, if one is open
- 
-          if Search.Value.Dir /= No_Dir then
-             Close (Search.Value.Dir);
-          end if;
- 
-          Free (Search.Value);
-       end if;
-    end Finalize;
- 
-    ---------------
-    -- Full_Name --
-    ---------------
- 
-    function Full_Name (Name : String) return String is
-    begin
-       --  First, the invalid case
- 
-       if not Is_Valid_Path_Name (Name) then
-          raise Name_Error with "invalid path name """ & Name & '"';
- 
-       else
-          --  Build the return value with lower bound 1
- 
-          --  Use System.OS_Lib.Normalize_Pathname
- 
-          declare
-             --  We need to resolve links because of (RM A.16(47)), which says
-             --  we must not return alternative names for files.
- 
-             Value : constant String := Normalize_Pathname (Name);
-             subtype Result is String (1 .. Value'Length);
- 
-          begin
-             return Result (Value);
-          end;
-       end if;
-    end Full_Name;
- 
-    function Full_Name (Directory_Entry : Directory_Entry_Type) return String is
-    begin
-       --  First, the invalid case
- 
-       if not Directory_Entry.Is_Valid then
-          raise Status_Error with "invalid directory entry";
- 
-       else
-          --  The value to return has already been computed
- 
-          return To_String (Directory_Entry.Full);
-       end if;
-    end Full_Name;
- 
-    --------------------
-    -- Get_Next_Entry --
-    --------------------
- 
-    procedure Get_Next_Entry
-      (Search          : in out Search_Type;
-       Directory_Entry : out Directory_Entry_Type)
-    is
-    begin
-       --  First, the invalid case
- 
-       if Search.Value = null or else not Search.Value.Is_Valid then
-          raise Status_Error with "invalid search";
-       end if;
- 
-       --  Fetch the next entry, if needed
- 
-       if not Search.Value.Entry_Fetched then
-          Fetch_Next_Entry (Search);
-       end if;
- 
-       --  It is an error if no valid entry is found
- 
-       if not Search.Value.Is_Valid then
-          raise Status_Error with "no next entry";
- 
-       else
-          --  Reset Entry_Fetched and return the entry
- 
-          Search.Value.Entry_Fetched := False;
-          Directory_Entry := Search.Value.Dir_Entry;
-       end if;
-    end Get_Next_Entry;
- 
-    ----------
-    -- Kind --
-    ----------
- 
-    function Kind (Name : String) return File_Kind is
-    begin
-       --  First, the invalid case
- 
-       if not File_Exists (Name) then
-          raise Name_Error with "file """ & Name & """ does not exist";
- 
-       --  If OK, return appropriate kind
- 
-       elsif Is_Regular_File (Name) then
-          return Ordinary_File;
- 
-       elsif Is_Directory (Name) then
-          return Directory;
- 
-       else
-          return Special_File;
-       end if;
-    end Kind;
- 
-    function Kind (Directory_Entry : Directory_Entry_Type) return File_Kind is
-    begin
-       --  First, the invalid case
- 
-       if not Directory_Entry.Is_Valid then
-          raise Status_Error with "invalid directory entry";
- 
-       else
-          --  The value to return has already be computed
- 
-          return Directory_Entry.Kind;
-       end if;
-    end Kind;
- 
-    -----------------------
-    -- Modification_Time --
-    -----------------------
- 
-    function Modification_Time (Name : String) return Time is
-       Date   : OS_Time;
-       Year   : Year_Type;
-       Month  : Month_Type;
-       Day    : Day_Type;
-       Hour   : Hour_Type;
-       Minute : Minute_Type;
-       Second : Second_Type;
- 
-    begin
-       --  First, the invalid cases
- 
-       if not (Is_Regular_File (Name) or else Is_Directory (Name)) then
-          raise Name_Error with '"' & Name & """ not a file or directory";
- 
-       else
-          Date := File_Time_Stamp (Name);
- 
-          --  Break down the time stamp into its constituents relative to GMT.
-          --  This version of Split does not recognize leap seconds or buffer
-          --  space for time zone processing.
- 
-          GM_Split (Date, Year, Month, Day, Hour, Minute, Second);
- 
-          --  The result must be in GMT. Ada.Calendar.
-          --  Formatting.Time_Of with default time zone of zero (0) is the
-          --  routine of choice.
- 
-          return Time_Of (Year, Month, Day, Hour, Minute, Second, 0.0);
-       end if;
-    end Modification_Time;
- 
-    function Modification_Time
-      (Directory_Entry : Directory_Entry_Type) return Ada.Calendar.Time
-    is
-    begin
-       --  First, the invalid case
- 
-       if not Directory_Entry.Is_Valid then
-          raise Status_Error with "invalid directory entry";
- 
-       else
-          --  The value to return has already be computed
- 
-          return Modification_Time (To_String (Directory_Entry.Full));
-       end if;
-    end Modification_Time;
- 
-    ------------------
-    -- More_Entries --
-    ------------------
- 
-    function More_Entries (Search : Search_Type) return Boolean is
-    begin
-       if Search.Value = null then
-          return False;
- 
-       elsif Search.Value.Is_Valid then
- 
-          --  Fetch the next entry, if needed
- 
-          if not Search.Value.Entry_Fetched then
-             Fetch_Next_Entry (Search);
-          end if;
-       end if;
- 
-       return Search.Value.Is_Valid;
-    end More_Entries;
- 
-    ------------
-    -- Rename --
-    ------------
- 
-    procedure Rename (Old_Name, New_Name : String) is
-       Success : Boolean;
- 
-    begin
-       --  First, the invalid cases
- 
-       if not Is_Valid_Path_Name (Old_Name) then
-          raise Name_Error with "invalid old path name """ & Old_Name & '"';
- 
-       elsif not Is_Valid_Path_Name (New_Name) then
-          raise Name_Error with "invalid new path name """ & New_Name & '"';
- 
-       elsif not Is_Regular_File (Old_Name)
-             and then not Is_Directory (Old_Name)
-       then
-          raise Name_Error with "old file """ & Old_Name & """ does not exist";
- 
-       elsif Is_Regular_File (New_Name) or else Is_Directory (New_Name) then
-          raise Use_Error with
-            "new name """ & New_Name
-            & """ designates a file that already exists";
- 
-       --  Do actual rename using System.OS_Lib.Rename_File
- 
-       else
-          Rename_File (Old_Name, New_Name, Success);
- 
-          if not Success then
- 
-             --  AI05-0231-1: Name_Error should be raised in case a directory
-             --  component of New_Name does not exist (as in New_Name =>
-             --  "/no-such-dir/new-filename"). ENOENT indicates that. ENOENT
-             --  also indicate that the Old_Name does not exist, but we already
-             --  checked for that above. All other errors are Use_Error.
- 
-             if Errno = ENOENT then
-                raise Name_Error with
-                  "file """ & Containing_Directory (New_Name) & """ not found";
- 
-             else
-                raise Use_Error with
-                  "file """ & Old_Name & """ could not be renamed";
-             end if;
-          end if;
-       end if;
-    end Rename;
- 
-    ------------
-    -- Search --
-    ------------
- 
-    procedure Search
-      (Directory : String;
-       Pattern   : String;
-       Filter    : Filter_Type := (others => True);
-       Process   : not null access procedure
-                                     (Directory_Entry : Directory_Entry_Type))
-    is
-       Srch            : Search_Type;
-       Directory_Entry : Directory_Entry_Type;
- 
-    begin
-       Start_Search (Srch, Directory, Pattern, Filter);
-       while More_Entries (Srch) loop
-          Get_Next_Entry (Srch, Directory_Entry);
-          Process (Directory_Entry);
-       end loop;
- 
-       End_Search (Srch);
-    end Search;
- 
-    -------------------
-    -- Set_Directory --
-    -------------------
- 
-    procedure Set_Directory (Directory : String) is
-       C_Dir_Name : constant String := Directory & ASCII.NUL;
-    begin
-       if not Is_Valid_Path_Name (Directory) then
-          raise Name_Error with
-            "invalid directory path name & """ & Directory & '"';
- 
-       elsif not Is_Directory (Directory) then
-          raise Name_Error with
-            "directory """ & Directory & """ does not exist";
- 
-       elsif chdir (C_Dir_Name) /= 0 then
-          raise Name_Error with
-            "could not set to designated directory """ & Directory & '"';
-       end if;
-    end Set_Directory;
- 
-    -----------------
-    -- Simple_Name --
-    -----------------
- 
-    function Simple_Name (Name : String) return String is
- 
-       function Simple_Name_Internal (Path : String) return String;
-       --  This function does the job
- 
-       --------------------------
-       -- Simple_Name_Internal --
-       --------------------------
- 
-       function Simple_Name_Internal (Path : String) return String is
-          Cut_Start : Natural :=
-            Strings.Fixed.Index (Path, Dir_Seps, Going => Strings.Backward);
-          Cut_End   : Natural;
- 
-       begin
-          --  Cut_Start pointS to the first simple name character
- 
-          Cut_Start := (if Cut_Start = 0 then Path'First else Cut_Start + 1);
- 
-          --  Cut_End point to the last simple name character
- 
-          Cut_End := Path'Last;
- 
-          Check_For_Standard_Dirs : declare
-             BN : constant String := Path (Cut_Start .. Cut_End);
- 
-             Has_Drive_Letter : constant Boolean :=
-               OS_Lib.Path_Separator /= ':';
-             --  If Path separator is not ':' then we are on a DOS based OS
-             --  where this character is used as a drive letter separator.
- 
-          begin
-             if BN = "." or else BN = ".." then
-                return "";
- 
-             elsif Has_Drive_Letter
-               and then BN'Length > 2
-               and then Characters.Handling.Is_Letter (BN (BN'First))
-               and then BN (BN'First + 1) = ':'
-             then
-                --  We have a DOS drive letter prefix, remove it
- 
-                return BN (BN'First + 2 .. BN'Last);
- 
-             else
-                return BN;
-             end if;
-          end Check_For_Standard_Dirs;
-       end Simple_Name_Internal;
- 
-    --  Start of processing for Simple_Name
- 
-    begin
-       --  First, the invalid case
- 
-       if not Is_Valid_Path_Name (Name) then
-          raise Name_Error with "invalid path name """ & Name & '"';
- 
-       else
-          --  Build the value to return with lower bound 1
- 
-          declare
-             Value : constant String := Simple_Name_Internal (Name);
-             subtype Result is String (1 .. Value'Length);
-          begin
-             return Result (Value);
-          end;
-       end if;
-    end Simple_Name;
- 
-    function Simple_Name
-      (Directory_Entry : Directory_Entry_Type) return String is
-    begin
-       --  First, the invalid case
- 
-       if not Directory_Entry.Is_Valid then
-          raise Status_Error with "invalid directory entry";
- 
-       else
-          --  The value to return has already be computed
- 
-          return To_String (Directory_Entry.Simple);
-       end if;
-    end Simple_Name;
- 
-    ----------
-    -- Size --
-    ----------
- 
-    function Size (Name : String) return File_Size is
-       C_Name : String (1 .. Name'Length + 1);
- 
-       function C_Size (Name : Address) return int64;
-       pragma Import (C, C_Size, "__gnat_named_file_length");
- 
-    begin
-       --  First, the invalid case
- 
-       if not Is_Regular_File (Name) then
-          raise Name_Error with "file """ & Name & """ does not exist";
- 
-       else
-          C_Name (1 .. Name'Length) := Name;
-          C_Name (C_Name'Last) := ASCII.NUL;
-          return File_Size (C_Size (C_Name'Address));
-       end if;
-    end Size;
- 
-    function Size (Directory_Entry : Directory_Entry_Type) return File_Size is
-    begin
-       --  First, the invalid case
- 
-       if not Directory_Entry.Is_Valid then
-          raise Status_Error with "invalid directory entry";
- 
-       else
-          --  The value to return has already be computed
- 
-          return Size (To_String (Directory_Entry.Full));
-       end if;
-    end Size;
- 
-    ------------------
-    -- Start_Search --
-    ------------------
- 
-    procedure Start_Search
-      (Search    : in out Search_Type;
-       Directory : String;
-       Pattern   : String;
-       Filter    : Filter_Type := (others => True))
-    is
-       function opendir (file_name : String) return DIRs;
-       pragma Import (C, opendir, "__gnat_opendir");
- 
-       C_File_Name : constant String := Directory & ASCII.NUL;
-       Pat         : Regexp;
-       Dir         : Dir_Type_Value;
- 
-    begin
-       --  First, the invalid case Name_Error
- 
-       if not Is_Directory (Directory) then
-          raise Name_Error with
-            "unknown directory """ & Simple_Name (Directory) & '"';
-       end if;
- 
-       --  Check the pattern
- 
-       begin
-          Pat := Compile
-            (Pattern,
-             Glob           => True,
-             Case_Sensitive => Is_Path_Name_Case_Sensitive);
-       exception
-          when Error_In_Regexp =>
-             Free (Search.Value);
-             raise Name_Error with "invalid pattern """ & Pattern & '"';
-       end;
- 
-       Dir := Dir_Type_Value (opendir (C_File_Name));
- 
-       if Dir = No_Dir then
-          raise Use_Error with
-            "unreadable directory """ & Simple_Name (Directory) & '"';
-       end if;
- 
-       --  If needed, finalize Search
- 
-       Finalize (Search);
- 
-       --  Allocate the default data
- 
-       Search.Value := new Search_Data;
- 
-       --  Initialize some Search components
- 
-       Search.Value.Filter   := Filter;
-       Search.Value.Name     := To_Unbounded_String (Full_Name (Directory));
-       Search.Value.Pattern  := Pat;
-       Search.Value.Dir      := Dir;
-       Search.Value.Is_Valid := True;
-    end Start_Search;
- 
- end Ada.Directories;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-direct.ads gcc-8.1.0/gcc/ada/a-direct.ads
*** gcc-7.3.0/gcc/ada/a-direct.ads	Fri Aug  1 10:01:31 2014
--- gcc-8.1.0/gcc/ada/a-direct.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,487 ****
- ------------------------------------------------------------------------------
- --                                                                        --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                      A D A . D I R E C T O R I E S                       --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2004-2014, 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. --
- -- 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Ada 2005: Implementation of Ada.Directories (AI95-00248). Note that this
- --  unit is available without -gnat05. That seems reasonable, since you only
- --  get it if you explicitly ask for it.
- 
- --  External files may be classified as directories, special files, or ordinary
- --  files. A directory is an external file that is a container for files on
- --  the target system. A special file is an external file that cannot be
- --  created or read by a predefined Ada Input-Output package. External files
- --  that are not special files or directories are called ordinary files.
- 
- --  A file name is a string identifying an external file. Similarly, a
- --  directory name is a string identifying a directory. The interpretation of
- --  file names and directory names is implementation-defined.
- 
- --  The full name of an external file is a full specification of the name of
- --  the file. If the external environment allows alternative specifications of
- --  the name (for example, abbreviations), the full name should not use such
- --  alternatives. A full name typically will include the names of all of
- --  directories that contain the item. The simple name of an external file is
- --  the name of the item, not including any containing directory names. Unless
- --  otherwise specified, a file name or directory name parameter to a
- --  predefined Ada input-output subprogram can be a full name, a simple name,
- --  or any other form of name supported by the implementation.
- 
- --  The default directory is the directory that is used if a directory or
- --  file name is not a full name (that is, when the name does not fully
- --  identify all of the containing directories).
- 
- --  A directory entry is a single item in a directory, identifying a single
- --  external file (including directories and special files).
- 
- --  For each function that returns a string, the lower bound of the returned
- --  value is 1.
- 
- with Ada.Calendar;
- with Ada.Finalization;
- with Ada.IO_Exceptions;
- with Ada.Strings.Unbounded;
- 
- package Ada.Directories is
- 
-    -----------------------------------
-    -- Directory and File Operations --
-    -----------------------------------
- 
-    function Current_Directory return String;
-    --  Returns the full directory name for the current default directory. The
-    --  name returned must be suitable for a future call to Set_Directory.
-    --  The exception Use_Error is propagated if a default directory is not
-    --  supported by the external environment.
- 
-    procedure Set_Directory (Directory : String);
-    --  Sets the current default directory. The exception Name_Error is
-    --  propagated if the string given as Directory does not identify an
-    --  existing directory. The exception Use_Error is propagated if the
-    --  external environment does not support making Directory (in the absence
-    --  of Name_Error) a default directory.
- 
-    procedure Create_Directory
-      (New_Directory : String;
-       Form          : String := "");
-    --  Creates a directory with name New_Directory. The Form parameter can be
-    --  used to give system-dependent characteristics of the directory; the
-    --  interpretation of the Form parameter is implementation-defined. A null
-    --  string for Form specifies the use of the default options of the
-    --  implementation of the new directory. The exception Name_Error is
-    --  propagated if the string given as New_Directory does not allow the
-    --  identification of a directory. The exception Use_Error is propagated if
-    --  the external environment does not support the creation of a directory
-    --  with the given name (in the absence of Name_Error) and form.
-    --
-    --  The Form parameter is ignored
- 
-    procedure Delete_Directory (Directory : String);
-    --  Deletes an existing empty directory with name Directory. The exception
-    --  Name_Error is propagated if the string given as Directory does not
-    --  identify an existing directory. The exception Use_Error is propagated
-    --  if the external environment does not support the deletion of the
-    --  directory (or some portion of its contents) with the given name (in the
-    --  absence of Name_Error).
- 
-    procedure Create_Path
-      (New_Directory : String;
-       Form          : String := "");
-    --  Creates zero or more directories with name New_Directory. Each
-    --  non-existent directory named by New_Directory is created. For example,
-    --  on a typical Unix system, Create_Path ("/usr/me/my"); would create
-    --  directory "me" in directory "usr", then create directory "my"
-    --  in directory "me". The Form can be used to give system-dependent
-    --  characteristics of the directory; the interpretation of the Form
-    --  parameter is implementation-defined. A null string for Form specifies
-    --  the use of the default options of the implementation of the new
-    --  directory. The exception Name_Error is propagated if the string given
-    --  as New_Directory does not allow the identification of any directory. The
-    --  exception Use_Error is propagated if the external environment does not
-    --  support the creation of any directories with the given name (in the
-    --  absence of Name_Error) and form.
-    --
-    --  The Form parameter is ignored
- 
-    procedure Delete_Tree (Directory : String);
-    --  Deletes an existing directory with name Directory. The directory and
-    --  all of its contents (possibly including other directories) are deleted.
-    --  The exception Name_Error is propagated if the string given as Directory
-    --  does not identify an existing directory. The exception Use_Error is
-    --  propagated if the external environment does not support the deletion
-    --  of the directory or some portion of its contents with the given name
-    --  (in the absence of Name_Error). If Use_Error is propagated, it is
-    --  unspecified if a portion of the contents of the directory are deleted.
- 
-    procedure Delete_File (Name : String);
-    --  Deletes an existing ordinary or special file with Name. The exception
-    --  Name_Error is propagated if the string given as Name does not identify
-    --  an existing ordinary or special external file. The exception Use_Error
-    --  is propagated if the external environment does not support the deletion
-    --  of the file with the given name (in the absence of Name_Error).
- 
-    procedure Rename (Old_Name, New_Name : String);
-    --  Renames an existing external file (including directories) with Old_Name
-    --  to New_Name. The exception Name_Error is propagated if the string given
-    --  as Old_Name does not identify an existing external file. The exception
-    --  Use_Error is propagated if the external environment does not support the
-    --  renaming of the file with the given name (in the absence of Name_Error).
-    --  In particular, Use_Error is propagated if a file or directory already
-    --  exists with New_Name.
- 
-    procedure Copy_File
-      (Source_Name   : String;
-       Target_Name   : String;
-       Form          : String := "");
-    --  Copies the contents of the existing external file with Source_Name to
-    --  Target_Name. The resulting external file is a duplicate of the source
-    --  external file. The Form argument can be used to give system-dependent
-    --  characteristics of the resulting external file; the interpretation of
-    --  the Form parameter is implementation-defined. Exception Name_Error is
-    --  propagated if the string given as Source_Name does not identify an
-    --  existing external ordinary or special file or if the string given as
-    --  Target_Name does not allow the identification of an external file. The
-    --  exception Use_Error is propagated if the external environment does not
-    --  support the creating of the file with the name given by Target_Name and
-    --  form given by Form, or copying of the file with the name given by
-    --  Source_Name (in the absence of Name_Error).
-    --
-    --  Interpretation of the Form parameter:
-    --
-    --    The Form parameter is case-insensitive
-    --
-    --    Two fields are recognized in the Form parameter:
-    --      preserve=<value>
-    --      mode=<value>
-    --
-    --      <value> starts immediately after the character '=' and ends with the
-    --      character immediately preceding the next comma (',') or with the
-    --      last character of the parameter.
-    --
-    --      The allowed values for preserve= are:
-    --
-    --        no_attributes:  Do not try to preserve any file attributes. This
-    --                        is the default if no preserve= is found in Form.
-    --
-    --        all_attributes: Try to preserve all file attributes (timestamps,
-    --                        access rights).
-    --
-    --        timestamps:     Preserve the timestamp of the copied file, but not
-    --                        the other file attributes.
-    --
-    --      The allowed values for mode= are:
-    --
-    --        copy:           Only copy if the destination file does not already
-    --                        exist. If it already exists, Copy_File will fail.
-    --
-    --        overwrite:      Copy the file in all cases. Overwrite an already
-    --                        existing destination file. This is the default if
-    --                        no mode= is found in Form.
-    --
-    --        append:         Append the original file to the destination file.
-    --                        If the destination file does not exist, the
-    --                        destination file is a copy of the source file.
-    --                        When mode=append, the field preserve=, if it
-    --                        exists, is not taken into account.
-    --
-    --    If the Form parameter includes one or both of the fields and the value
-    --    or values are incorrect, Copy_File fails with Use_Error.
-    --
-    --    Examples of correct Forms:
-    --       Form => "preserve=no_attributes,mode=overwrite" (the default)
-    --       Form => "mode=append"
-    --       Form => "mode=copy,preserve=all_attributes"
-    --
-    --    Examples of incorrect Forms:
-    --       Form => "preserve=junk"
-    --       Form => "mode=internal,preserve=timestamps"
- 
-    ----------------------------------------
-    -- File and directory name operations --
-    ----------------------------------------
- 
-    function Full_Name (Name : String) return String;
-    --  Returns the full name corresponding to the file name specified by Name.
-    --  The exception Name_Error is propagated if the string given as Name does
-    --  not allow the identification of an external file (including directories
-    --  and special files).
- 
-    function Simple_Name (Name : String) return String;
-    --  Returns the simple name portion of the file name specified by Name. The
-    --  exception Name_Error is propagated if the string given as Name does not
-    --  allow the identification of an external file (including directories and
-    --  special files).
- 
-    function Containing_Directory (Name : String) return String;
-    --  Returns the name of the containing directory of the external file
-    --  (including directories) identified by Name. If more than one directory
-    --  can contain Name, the directory name returned is implementation-defined.
-    --  The exception Name_Error is propagated if the string given as Name does
-    --  not allow the identification of an external file. The exception
-    --  Use_Error is propagated if the external file does not have a containing
-    --  directory.
- 
-    function Extension (Name : String) return String;
-    --  Returns the extension name corresponding to Name. The extension name is
-    --  a portion of a simple name (not including any separator characters),
-    --  typically used to identify the file class. If the external environment
-    --  does not have extension names, then the null string is returned.
-    --  The exception Name_Error is propagated if the string given as Name does
-    --  not allow the identification of an external file.
- 
-    function Base_Name (Name : String) return String;
-    --  Returns the base name corresponding to Name. The base name is the
-    --  remainder of a simple name after removing any extension and extension
-    --  separators. The exception Name_Error is propagated if the string given
-    --  as Name does not allow the identification of an external file
-    --  (including directories and special files).
- 
-    function Compose
-      (Containing_Directory : String := "";
-       Name                 : String;
-       Extension            : String := "") return String;
-    --  Returns the name of the external file with the specified
-    --  Containing_Directory, Name, and Extension. If Extension is the null
-    --  string, then Name is interpreted as a simple name; otherwise Name is
-    --  interpreted as a base name. The exception Name_Error is propagated if
-    --  the string given as Containing_Directory is not null and does not allow
-    --  the identification of a directory, or if the string given as Extension
-    --  is not null and is not a possible extension, or if the string given as
-    --  Name is not a possible simple name (if Extension is null) or base name
-    --  (if Extension is non-null).
- 
-    --------------------------------
-    -- File and directory queries --
-    --------------------------------
- 
-    type File_Kind is (Directory, Ordinary_File, Special_File);
-    --  The type File_Kind represents the kind of file represented by an
-    --  external file or directory.
- 
-    type File_Size is range 0 .. Long_Long_Integer'Last;
-    --  The type File_Size represents the size of an external file
- 
-    function Exists (Name : String) return Boolean;
-    --  Returns True if external file represented by Name exists, and False
-    --  otherwise. The exception Name_Error is propagated if the string given as
-    --  Name does not allow the identification of an external file (including
-    --  directories and special files).
- 
-    function Kind (Name : String) return File_Kind;
-    --  Returns the kind of external file represented by Name. The exception
-    --  Name_Error is propagated if the string given as Name does not allow the
-    --  identification of an existing external file.
- 
-    function Size (Name : String) return File_Size;
-    --  Returns the size of the external file represented by Name. The size of
-    --  an external file is the number of stream elements contained in the file.
-    --  If the external file is discontiguous (not all elements exist), the
-    --  result is implementation-defined. If the external file is not an
-    --  ordinary file, the result is implementation-defined. The exception
-    --  Name_Error is propagated if the string given as Name does not allow the
-    --  identification of an existing external file. The exception
-    --  Constraint_Error is propagated if the file size is not a value of type
-    --  File_Size.
- 
-    function Modification_Time (Name : String) return Ada.Calendar.Time;
-    --  Returns the time that the external file represented by Name was most
-    --  recently modified. If the external file is not an ordinary file, the
-    --  result is implementation-defined. The exception Name_Error is propagated
-    --  if the string given as Name does not allow the identification of an
-    --  existing external file. The exception Use_Error is propagated if the
-    --  external environment does not support the reading the modification time
-    --  of the file with the name given by Name (in the absence of Name_Error).
- 
-    -------------------------
-    -- Directory Searching --
-    -------------------------
- 
-    type Directory_Entry_Type is limited private;
-    --  The type Directory_Entry_Type represents a single item in a directory.
-    --  These items can only be created by the Get_Next_Entry procedure in this
-    --  package. Information about the item can be obtained from the functions
-    --  declared in this package. A default initialized object of this type is
-    --  invalid; objects returned from Get_Next_Entry are valid.
- 
-    type Filter_Type is array (File_Kind) of Boolean;
-    --  The type Filter_Type specifies which directory entries are provided from
-    --  a search operation. If the Directory component is True, directory
-    --  entries representing directories are provided. If the Ordinary_File
-    --  component is True, directory entries representing ordinary files are
-    --  provided. If the Special_File component is True, directory entries
-    --  representing special files are provided.
- 
-    type Search_Type is limited private;
-    --  The type Search_Type contains the state of a directory search. A
-    --  default-initialized Search_Type object has no entries available
-    --  (More_Entries returns False).
- 
-    procedure Start_Search
-      (Search    : in out Search_Type;
-       Directory : String;
-       Pattern   : String;
-       Filter    : Filter_Type := (others => True));
-    --  Starts a search in the directory entry in the directory named by
-    --  Directory for entries matching Pattern. Pattern represents a file name
-    --  matching pattern. If Pattern is null, all items in the directory are
-    --  matched; otherwise, the interpretation of Pattern is implementation-
-    --  defined. Only items which match Filter will be returned. After a
-    --  successful call on Start_Search, the object Search may have entries
-    --  available, but it may have no entries available if no files or
-    --  directories match Pattern and Filter. The exception Name_Error is
-    --  propagated if the string given by Directory does not identify an
-    --  existing directory, or if Pattern does not allow the identification of
-    --  any possible external file or directory. The exception Use_Error is
-    --  propagated if the external environment does not support the searching
-    --  of the directory with the given name (in the absence of Name_Error).
- 
-    procedure End_Search (Search : in out Search_Type);
-    --  Ends the search represented by Search. After a successful call on
-    --  End_Search, the object Search will have no entries available. Note
-    --  that it is not necessary to call End_Search if the call to Start_Search
-    --  was unsuccessful and raised an exception (but it is harmless to make
-    --  the call in this case).
- 
-    function More_Entries (Search : Search_Type) return Boolean;
-    --  Returns True if more entries are available to be returned by a call
-    --  to Get_Next_Entry for the specified search object, and False otherwise.
- 
-    procedure Get_Next_Entry
-      (Search          : in out Search_Type;
-       Directory_Entry : out Directory_Entry_Type);
-    --  Returns the next Directory_Entry for the search described by Search that
-    --  matches the pattern and filter. If no further matches are available,
-    --  Status_Error is raised. It is implementation-defined as to whether the
-    --  results returned by this routine are altered if the contents of the
-    --  directory are altered while the Search object is valid (for example, by
-    --  another program). The exception Use_Error is propagated if the external
-    --  environment does not support continued searching of the directory
-    --  represented by Search.
- 
-    procedure Search
-      (Directory : String;
-       Pattern   : String;
-       Filter    : Filter_Type := (others => True);
-       Process   : not null access procedure
-                                     (Directory_Entry : Directory_Entry_Type));
-    --  Searches in the directory named by Directory for entries matching
-    --  Pattern. The subprogram designated by Process is called with each
-    --  matching entry in turn. Pattern represents a pattern for matching file
-    --  names. If Pattern is null, all items in the directory are matched;
-    --  otherwise, the interpretation of Pattern is implementation-defined.
-    --  Only items that match Filter will be returned. The exception Name_Error
-    --  is propagated if the string given by Directory does not identify
-    --  an existing directory, or if Pattern does not allow the identification
-    --  of any possible external file or directory. The exception Use_Error is
-    --  propagated if the external environment does not support the searching
-    --  of the directory with the given name (in the absence of Name_Error).
- 
-    -------------------------------------
-    -- Operations on Directory Entries --
-    -------------------------------------
- 
-    function Simple_Name (Directory_Entry : Directory_Entry_Type) return String;
-    --  Returns the simple external name of the external file (including
-    --  directories) represented by Directory_Entry. The format of the name
-    --  returned is implementation-defined. The exception Status_Error is
-    --  propagated if Directory_Entry is invalid.
- 
-    function Full_Name (Directory_Entry : Directory_Entry_Type) return String;
-    --  Returns the full external name of the external file (including
-    --  directories) represented by Directory_Entry. The format of the name
-    --  returned is implementation-defined. The exception Status_Error is
-    --  propagated if Directory_Entry is invalid.
- 
-    function Kind (Directory_Entry : Directory_Entry_Type) return File_Kind;
-    --  Returns the kind of external file represented by Directory_Entry. The
-    --  exception Status_Error is propagated if Directory_Entry is invalid.
- 
-    function Size (Directory_Entry : Directory_Entry_Type) return File_Size;
-    --  Returns the size of the external file represented by Directory_Entry.
-    --  The size of an external file is the number of stream elements contained
-    --  in the file. If the external file is discontiguous (not all elements
-    --  exist), the result is implementation-defined. If the external file
-    --  represented by Directory_Entry is not an ordinary file, the result is
-    --  implementation-defined. The exception Status_Error is propagated if
-    --  Directory_Entry is invalid. The exception Constraint_Error is propagated
-    --  if the file size is not a value of type File_Size.
- 
-    function Modification_Time
-      (Directory_Entry : Directory_Entry_Type) return Ada.Calendar.Time;
-    --  Returns the time that the external file represented by Directory_Entry
-    --  was most recently modified. If the external file represented by
-    --  Directory_Entry is not an ordinary file, the result is
-    --  implementation-defined. The exception Status_Error is propagated if
-    --  Directory_Entry is invalid. The exception Use_Error is propagated if
-    --  the external environment does not support the reading the modification
-    --  time of the file represented by Directory_Entry.
- 
-    ----------------
-    -- Exceptions --
-    ----------------
- 
-    Status_Error : exception renames Ada.IO_Exceptions.Status_Error;
-    Name_Error   : exception renames Ada.IO_Exceptions.Name_Error;
-    Use_Error    : exception renames Ada.IO_Exceptions.Use_Error;
-    Device_Error : exception renames Ada.IO_Exceptions.Device_Error;
- 
- private
-    type Directory_Entry_Type is record
-       Is_Valid : Boolean := False;
-       Simple   : Ada.Strings.Unbounded.Unbounded_String;
-       Full     : Ada.Strings.Unbounded.Unbounded_String;
-       Kind     : File_Kind := Ordinary_File;
-    end record;
- 
-    --  The type Search_Data is defined in the body, so that the spec does not
-    --  depend on packages of the GNAT hierarchy.
- 
-    type Search_Data;
-    type Search_Ptr is access Search_Data;
- 
-    --  Search_Type need to be a controlled type, because it includes component
-    --  of type Dir_Type (in GNAT.Directory_Operations) that need to be closed
-    --  (if opened) during finalization. The component need to be an access
-    --  value, because Search_Data is not fully defined in the spec.
- 
-    type Search_Type is new Ada.Finalization.Controlled with record
-       Value : Search_Ptr;
-    end record;
- 
-    procedure Finalize (Search : in out Search_Type);
-    --  Close the directory, if opened, and deallocate Value
- 
-    procedure End_Search (Search : in out Search_Type) renames Finalize;
- 
- end Ada.Directories;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-direio.adb gcc-8.1.0/gcc/ada/a-direio.adb
*** gcc-7.3.0/gcc/ada/a-direio.adb	Fri Jan  6 11:58:56 2017
--- gcc-8.1.0/gcc/ada/a-direio.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,292 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                        A D A . D I R E C T _ I O                         --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 generic template for Direct_IO, i.e. the code that gets
- --  duplicated. We absolutely minimize this code by either calling routines
- --  in System.File_IO (for common file functions), or in System.Direct_IO
- --  (for specialized Direct_IO functions)
- 
- with Interfaces.C_Streams; use Interfaces.C_Streams;
- with System;               use System;
- with System.CRTL;
- with System.File_Control_Block;
- with System.File_IO;
- with System.Direct_IO;
- with System.Storage_Elements;
- with Ada.Unchecked_Conversion;
- 
- use type System.Direct_IO.Count;
- 
- package body Ada.Direct_IO is
- 
-    Zeroes : constant System.Storage_Elements.Storage_Array :=
-      (1 .. System.Storage_Elements.Storage_Offset (Bytes) => 0);
-    --  Buffer used to fill out partial records
- 
-    package FCB renames System.File_Control_Block;
-    package FIO renames System.File_IO;
-    package DIO renames System.Direct_IO;
- 
-    SU : constant := System.Storage_Unit;
- 
-    subtype AP      is FCB.AFCB_Ptr;
-    subtype FP      is DIO.File_Type;
-    subtype DPCount is DIO.Positive_Count;
- 
-    function To_FCB is new Ada.Unchecked_Conversion (File_Mode, FCB.File_Mode);
-    function To_DIO is new Ada.Unchecked_Conversion (FCB.File_Mode, File_Mode);
- 
-    use type System.CRTL.size_t;
- 
-    -----------
-    -- Close --
-    -----------
- 
-    procedure Close (File : in out File_Type) is
-    begin
-       FIO.Close (AP (File)'Unrestricted_Access);
-    end Close;
- 
-    ------------
-    -- Create --
-    ------------
- 
-    procedure Create
-      (File : in out File_Type;
-       Mode : File_Mode := Inout_File;
-       Name : String := "";
-       Form : String := "")
-    is
-    begin
-       DIO.Create (FP (File), To_FCB (Mode), Name, Form);
-       File.Bytes := Bytes;
-    end Create;
- 
-    ------------
-    -- Delete --
-    ------------
- 
-    procedure Delete (File : in out File_Type) is
-    begin
-       FIO.Delete (AP (File)'Unrestricted_Access);
-    end Delete;
- 
-    -----------------
-    -- End_Of_File --
-    -----------------
- 
-    function End_Of_File (File : File_Type) return Boolean is
-    begin
-       return DIO.End_Of_File (FP (File));
-    end End_Of_File;
- 
-    -----------
-    -- Flush --
-    -----------
- 
-    procedure Flush (File : File_Type) is
-    begin
-       FIO.Flush (AP (File));
-    end Flush;
- 
-    ----------
-    -- Form --
-    ----------
- 
-    function Form (File : File_Type) return String is
-    begin
-       return FIO.Form (AP (File));
-    end Form;
- 
-    -----------
-    -- Index --
-    -----------
- 
-    function Index (File : File_Type) return Positive_Count is
-    begin
-       return Positive_Count (DIO.Index (FP (File)));
-    end Index;
- 
-    -------------
-    -- Is_Open --
-    -------------
- 
-    function Is_Open (File : File_Type) return Boolean is
-    begin
-       return FIO.Is_Open (AP (File));
-    end Is_Open;
- 
-    ----------
-    -- Mode --
-    ----------
- 
-    function Mode (File : File_Type) return File_Mode is
-    begin
-       return To_DIO (FIO.Mode (AP (File)));
-    end Mode;
- 
-    ----------
-    -- Name --
-    ----------
- 
-    function Name (File : File_Type) return String is
-    begin
-       return FIO.Name (AP (File));
-    end Name;
- 
-    ----------
-    -- Open --
-    ----------
- 
-    procedure Open
-      (File : in out File_Type;
-       Mode : File_Mode;
-       Name : String;
-       Form : String := "")
-    is
-    begin
-       DIO.Open (FP (File), To_FCB (Mode), Name, Form);
-       File.Bytes := Bytes;
-    end Open;
- 
-    ----------
-    -- Read --
-    ----------
- 
-    procedure Read
-      (File : File_Type;
-       Item : out Element_Type;
-       From : Positive_Count)
-    is
-    begin
-       --  For a non-constrained variant record type, we read into an
-       --  intermediate buffer, since we may have the case of discriminated
-       --  records where a discriminant check is required, and we may need
-       --  to assign only part of the record buffer originally written.
- 
-       --  Note: we have to turn warnings on/off because this use of
-       --  the Constrained attribute is an obsolescent feature.
- 
-       pragma Warnings (Off);
-       if not Element_Type'Constrained then
-          pragma Warnings (On);
- 
-          declare
-             Buf : Element_Type;
- 
-          begin
-             DIO.Read (FP (File), Buf'Address, Bytes, DPCount (From));
-             Item := Buf;
-          end;
- 
-       --  In the normal case, we can read straight into the buffer
- 
-       else
-          DIO.Read (FP (File), Item'Address, Bytes, DPCount (From));
-       end if;
-    end Read;
- 
-    procedure Read (File : File_Type; Item : out Element_Type) is
-    begin
-       --  Same processing for unconstrained case as above
- 
-       --  Note: we have to turn warnings on/off because this use of
-       --  the Constrained attribute is an obsolescent feature.
- 
-       pragma Warnings (Off);
-       if not Element_Type'Constrained then
-          pragma Warnings (On);
- 
-          declare
-             Buf : Element_Type;
- 
-          begin
-             DIO.Read (FP (File), Buf'Address, Bytes);
-             Item := Buf;
-          end;
- 
-       else
-          DIO.Read (FP (File), Item'Address, Bytes);
-       end if;
-    end Read;
- 
-    -----------
-    -- Reset --
-    -----------
- 
-    procedure Reset (File : in out File_Type; Mode : File_Mode) is
-    begin
-       DIO.Reset (FP (File), To_FCB (Mode));
-    end Reset;
- 
-    procedure Reset (File : in out File_Type) is
-    begin
-       DIO.Reset (FP (File));
-    end Reset;
- 
-    ---------------
-    -- Set_Index --
-    ---------------
- 
-    procedure Set_Index (File : File_Type; To : Positive_Count) is
-    begin
-       DIO.Set_Index (FP (File), DPCount (To));
-    end Set_Index;
- 
-    ----------
-    -- Size --
-    ----------
- 
-    function Size (File : File_Type) return Count is
-    begin
-       return Count (DIO.Size (FP (File)));
-    end Size;
- 
-    -----------
-    -- Write --
-    -----------
- 
-    procedure Write
-      (File : File_Type;
-       Item : Element_Type;
-       To   : Positive_Count)
-    is
-    begin
-       DIO.Set_Index (FP (File), DPCount (To));
-       DIO.Write (FP (File), Item'Address, Item'Size / SU, Zeroes);
-    end Write;
- 
-    procedure Write (File : File_Type; Item : Element_Type) is
-    begin
-       DIO.Write (FP (File), Item'Address, Item'Size / SU, Zeroes);
-    end Write;
- 
- end Ada.Direct_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-direio.ads gcc-8.1.0/gcc/ada/a-direio.ads
*** gcc-7.3.0/gcc/ada/a-direio.ads	Fri Jan  6 11:58:56 2017
--- gcc-8.1.0/gcc/ada/a-direio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,193 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                        A D A . D I R E C T _ I O                         --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2016, Free Software Foundation, 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.IO_Exceptions;
- with System.Direct_IO;
- with Interfaces.C_Streams;
- 
- generic
-    type Element_Type is private;
- 
- package Ada.Direct_IO is
- 
-    pragma Compile_Time_Warning
-      (Element_Type'Has_Access_Values,
-       "Element_Type for Direct_IO instance has access values");
- 
-    pragma Compile_Time_Warning
-      (Element_Type'Has_Tagged_Values,
-       "Element_Type for Direct_IO instance has tagged values");
- 
-    type File_Type is limited private;
- 
-    type File_Mode is (In_File, Inout_File, Out_File);
- 
-    --  The following representation clause allows the use of unchecked
-    --  conversion for rapid translation between the File_Mode type
-    --  used in this package and System.File_IO.
- 
-    for File_Mode use
-      (In_File    => 0,   -- System.File_IO.File_Mode'Pos (In_File)
-       Inout_File => 1,   -- System.File_IO.File_Mode'Pos (Inout_File);
-       Out_File   => 2);  -- System.File_IO.File_Mode'Pos (Out_File)
- 
-    type Count is range 0 .. System.Direct_IO.Count'Last;
- 
-    subtype Positive_Count is Count range 1 .. Count'Last;
- 
-    ---------------------
-    -- File Management --
-    ---------------------
- 
-    procedure Create
-      (File : in out File_Type;
-       Mode : File_Mode := Inout_File;
-       Name : String := "";
-       Form : String := "");
- 
-    procedure Open
-      (File : in out File_Type;
-       Mode : File_Mode;
-       Name : String;
-       Form : String := "");
- 
-    procedure Close  (File : in out File_Type);
-    procedure Delete (File : in out File_Type);
-    procedure Reset  (File : in out File_Type; Mode : File_Mode);
-    procedure Reset  (File : in out File_Type);
- 
-    function Mode (File : File_Type) return File_Mode;
-    function Name (File : File_Type) return String;
-    function Form (File : File_Type) return String;
- 
-    function Is_Open (File : File_Type) return Boolean;
- 
-    procedure Flush (File : File_Type);
- 
-    ---------------------------------
-    -- Input and Output Operations --
-    ---------------------------------
- 
-    procedure Read
-      (File : File_Type;
-       Item : out Element_Type;
-       From : Positive_Count);
- 
-    procedure Read
-      (File : File_Type;
-       Item : out Element_Type);
- 
-    procedure Write
-      (File : File_Type;
-       Item : Element_Type;
-       To   : Positive_Count);
- 
-    procedure Write
-      (File : File_Type;
-       Item : Element_Type);
- 
-    procedure Set_Index (File : File_Type; To : Positive_Count);
- 
-    function Index (File : File_Type) return Positive_Count;
-    function Size  (File : File_Type) return Count;
- 
-    function End_Of_File (File : File_Type) return Boolean;
- 
-    ----------------
-    -- Exceptions --
-    ----------------
- 
-    Status_Error : exception renames IO_Exceptions.Status_Error;
-    Mode_Error   : exception renames IO_Exceptions.Mode_Error;
-    Name_Error   : exception renames IO_Exceptions.Name_Error;
-    Use_Error    : exception renames IO_Exceptions.Use_Error;
-    Device_Error : exception renames IO_Exceptions.Device_Error;
-    End_Error    : exception renames IO_Exceptions.End_Error;
-    Data_Error   : exception renames IO_Exceptions.Data_Error;
- 
- private
- 
-    --  The following procedures have a File_Type formal of mode IN OUT because
-    --  they may close the original file. The Close operation may raise an
-    --  exception, but in that case we want any assignment to the formal to
-    --  be effective anyway, so it must be passed by reference (or the caller
-    --  will be left with a dangling pointer).
- 
-    pragma Export_Procedure
-      (Internal  => Close,
-       External  => "",
-       Mechanism => Reference);
-    pragma Export_Procedure
-      (Internal  => Delete,
-       External  => "",
-       Mechanism => Reference);
-    pragma Export_Procedure
-      (Internal        => Reset,
-       External        => "",
-       Parameter_Types => (File_Type),
-       Mechanism       => Reference);
-    pragma Export_Procedure
-      (Internal        => Reset,
-       External        => "",
-       Parameter_Types => (File_Type, File_Mode),
-       Mechanism       => (File => Reference));
- 
-    type File_Type is new System.Direct_IO.File_Type;
- 
-    Bytes : constant Interfaces.C_Streams.size_t :=
-              Interfaces.C_Streams.size_t'Max
-                (1, Element_Type'Max_Size_In_Storage_Elements);
-    --  Size of an element in storage units. The Max operation here is to ensure
-    --  that we allocate a single byte for zero-sized elements. It's a bit weird
-    --  to instantiate Direct_IO with zero sized elements, but it is legal and
-    --  this adjustment ensures that we don't get anomalous behavior.
- 
-    pragma Inline (Close);
-    pragma Inline (Create);
-    pragma Inline (Delete);
-    pragma Inline (End_Of_File);
-    pragma Inline (Form);
-    pragma Inline (Index);
-    pragma Inline (Is_Open);
-    pragma Inline (Mode);
-    pragma Inline (Name);
-    pragma Inline (Open);
-    pragma Inline (Read);
-    pragma Inline (Reset);
-    pragma Inline (Set_Index);
-    pragma Inline (Size);
-    pragma Inline (Write);
- 
- end Ada.Direct_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-diroro.ads gcc-8.1.0/gcc/ada/a-diroro.ads
*** gcc-7.3.0/gcc/ada/a-diroro.ads	Fri Apr  6 09:29:20 2007
--- gcc-8.1.0/gcc/ada/a-diroro.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,39 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --          A D A . D I S P A T C H I N G . R O U N D _ R O B I N           --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with System;
- with Ada.Real_Time;
- 
- package Ada.Dispatching.Round_Robin is
- 
-    pragma Unimplemented_Unit;
- 
-    Default_Quantum : constant Ada.Real_Time.Time_Span :=
-                        Ada.Real_Time.Milliseconds (10);
- 
-    procedure Set_Quantum
-      (Pri     : System.Priority;
-       Quantum : Ada.Real_Time.Time_Span);
- 
-    procedure Set_Quantum
-      (Low, High : System.Priority;
-       Quantum   : Ada.Real_Time.Time_Span);
- 
-    function Actual_Quantum
-      (Pri : System.Priority) return Ada.Real_Time.Time_Span;
- 
-    function Is_Round_Robin (Pri : System.Priority) return Boolean;
- 
- end Ada.Dispatching.Round_Robin;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-dirval-mingw.adb gcc-8.1.0/gcc/ada/a-dirval-mingw.adb
*** gcc-7.3.0/gcc/ada/a-dirval-mingw.adb	Tue Oct 27 11:23:07 2015
--- gcc-8.1.0/gcc/ada/a-dirval-mingw.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,175 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --             A D A . D I R E C T O R I E S . V A L I D I T Y              --
- --                                                                          --
- --                                 B o d y                                  --
- --                            (Windows Version)                             --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 Windows version of this package
- 
- with Ada.Characters.Latin_1; use Ada.Characters.Latin_1;
- 
- package body Ada.Directories.Validity is
- 
-    Invalid_Character : constant array (Character) of Boolean :=
-      (NUL .. US | '\'       => True,
-       '/' | ':' | '*' | '?' => True,
-       '"' | '<' | '>' | '|' => True,
-       DEL                   => True,
-       others                => False);
-    --  Note that a valid file-name or path-name is implementation defined.
-    --  To support UTF-8 file and directory names, we do not want to be too
-    --  restrictive here.
- 
-    ---------------------------------
-    -- Is_Path_Name_Case_Sensitive --
-    ---------------------------------
- 
-    function Is_Path_Name_Case_Sensitive return Boolean is
-    begin
-       return False;
-    end Is_Path_Name_Case_Sensitive;
- 
-    ------------------------
-    -- Is_Valid_Path_Name --
-    ------------------------
- 
-    function Is_Valid_Path_Name (Name : String) return Boolean is
-       Start : Positive := Name'First;
-       Last  : Natural;
- 
-    begin
-       --  A path name cannot be empty, cannot contain more than 256 characters,
-       --  cannot contain invalid characters and each directory/file name need
-       --  to be valid.
- 
-       if Name'Length = 0 or else Name'Length > 256 then
-          return False;
- 
-       else
-          --  A drive letter may be specified at the beginning
- 
-          if Name'Length >= 2
-            and then  Name (Start + 1) = ':'
-            and then
-              (Name (Start) in 'A' .. 'Z' or else Name (Start) in 'a' .. 'z')
-          then
-             Start := Start + 2;
- 
-             --  A drive letter followed by a colon and followed by nothing or
-             --  by a relative path is an ambiguous path name on Windows, so we
-             --  don't accept it.
- 
-             if Start > Name'Last
-               or else (Name (Start) /= '/' and then Name (Start) /= '\')
-             then
-                return False;
-             end if;
-          end if;
- 
-          loop
-             --  Look for the start of the next directory or file name
- 
-             while Start <= Name'Last
-               and then (Name (Start) = '\' or Name (Start) = '/')
-             loop
-                Start := Start + 1;
-             end loop;
- 
-             --  If all directories/file names are OK, return True
- 
-             exit when Start > Name'Last;
- 
-             Last := Start;
- 
-             --  Look for the end of the directory/file name
- 
-             while Last < Name'Last loop
-                exit when Name (Last + 1) = '\' or Name (Last + 1) = '/';
-                Last := Last + 1;
-             end loop;
- 
-             --  Check if the directory/file name is valid
- 
-             if not Is_Valid_Simple_Name (Name (Start .. Last)) then
-                   return False;
-             end if;
- 
-             --  Move to the next name
- 
-             Start := Last + 1;
-          end loop;
-       end if;
- 
-       --  If Name follows the rules, it is valid
- 
-       return True;
-    end Is_Valid_Path_Name;
- 
-    --------------------------
-    -- Is_Valid_Simple_Name --
-    --------------------------
- 
-    function Is_Valid_Simple_Name (Name : String) return Boolean is
-       Only_Spaces : Boolean;
- 
-    begin
-       --  A file name cannot be empty, cannot contain more than 256 characters,
-       --  and cannot contain invalid characters.
- 
-       if Name'Length = 0 or else Name'Length > 256 then
-          return False;
- 
-       --  Name length is OK
- 
-       else
-          Only_Spaces := True;
-          for J in Name'Range loop
-             if Invalid_Character (Name (J)) then
-                return False;
-             elsif Name (J) /= ' ' then
-                Only_Spaces := False;
-             end if;
-          end loop;
- 
-          --  If no invalid chars, and not all spaces, file name is valid
- 
-          return not Only_Spaces;
-       end if;
-    end Is_Valid_Simple_Name;
- 
-    -------------
-    -- Windows --
-    -------------
- 
-    function Windows return Boolean is
-    begin
-       return True;
-    end Windows;
- 
- end Ada.Directories.Validity;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-dirval.adb gcc-8.1.0/gcc/ada/a-dirval.adb
*** gcc-7.3.0/gcc/ada/a-dirval.adb	Fri Aug  1 09:38:48 2014
--- gcc-8.1.0/gcc/ada/a-dirval.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,104 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --             A D A . D I R E C T O R I E S . V A L I D I T Y              --
- --                                                                          --
- --                                 B o d y                                  --
- --                             (POSIX Version)                              --
- --                                                                          --
- --          Copyright (C) 2004-2014, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 POSIX version of this package
- 
- package body Ada.Directories.Validity is
- 
-    ---------------------------------
-    -- Is_Path_Name_Case_Sensitive --
-    ---------------------------------
- 
-    function Is_Path_Name_Case_Sensitive return Boolean is
-    begin
-       return True;
-    end Is_Path_Name_Case_Sensitive;
- 
-    ------------------------
-    -- Is_Valid_Path_Name --
-    ------------------------
- 
-    function Is_Valid_Path_Name (Name : String) return Boolean is
-    begin
-       --  A path name cannot be empty and cannot contain any NUL character
- 
-       if Name'Length = 0 then
-          return False;
- 
-       else
-          for J in Name'Range loop
-             if Name (J) = ASCII.NUL then
-                return False;
-             end if;
-          end loop;
-       end if;
- 
-       --  If Name does not contain any NUL character, it is valid
- 
-       return True;
-    end Is_Valid_Path_Name;
- 
-    --------------------------
-    -- Is_Valid_Simple_Name --
-    --------------------------
- 
-    function Is_Valid_Simple_Name (Name : String) return Boolean is
-    begin
-       --  A file name cannot be empty and cannot contain a slash ('/') or
-       --  the NUL character.
- 
-       if Name'Length = 0 then
-          return False;
- 
-       else
-          for J in Name'Range loop
-             if Name (J) = '/' or else Name (J) = ASCII.NUL then
-                return False;
-             end if;
-          end loop;
-       end if;
- 
-       --  If Name does not contain any slash or NUL, it is valid
- 
-       return True;
-    end Is_Valid_Simple_Name;
- 
-    -------------
-    -- Windows --
-    -------------
- 
-    function Windows return Boolean is
-    begin
-       return False;
-    end Windows;
- 
- end Ada.Directories.Validity;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-dirval.ads gcc-8.1.0/gcc/ada/a-dirval.ads
*** gcc-7.3.0/gcc/ada/a-dirval.ads	Fri Aug  1 09:38:48 2014
--- gcc-8.1.0/gcc/ada/a-dirval.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,49 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --             A D A . D I R E C T O R I E S . V A L I D I T Y              --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2004-2014, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 private child package is used in the body of Ada.Directories.
- --  It has several bodies, for different platforms.
- 
- private package Ada.Directories.Validity is
- 
-    function Is_Valid_Simple_Name (Name : String) return Boolean;
-    --  Returns True if Name is a valid file name
- 
-    function Is_Valid_Path_Name (Name : String) return Boolean;
-    --  Returns True if Name is a valid path name
- 
-    function Is_Path_Name_Case_Sensitive return Boolean;
-    --  Returns True if file and path names are case-sensitive
- 
-    function Windows return Boolean;
-    --  Return True when OS is Windows
- 
- end Ada.Directories.Validity;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-disedf.ads gcc-8.1.0/gcc/ada/a-disedf.ads
*** gcc-7.3.0/gcc/ada/a-disedf.ads	Tue Oct 20 12:24:52 2015
--- gcc-8.1.0/gcc/ada/a-disedf.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,54 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                  A D A . D I S P A T C H I N G . E D F                   --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This unit is not implemented in typical GNAT implementations that lie on
- --  top of operating systems, because it is infeasible to implement in such
- --  environments.
- 
- --  If a target environment provides appropriate support for this package,
- --  then the Unimplemented_Unit pragma should be removed from this spec and
- --  an appropriate body provided.
- 
- with Ada.Real_Time;
- with Ada.Task_Identification;
- 
- package Ada.Dispatching.EDF is
-    pragma Preelaborate;
- 
-    pragma Unimplemented_Unit;
- 
-    subtype Deadline is Ada.Real_Time.Time;
- 
-    Default_Deadline : constant Deadline := Ada.Real_Time.Time_Last;
- 
-    procedure Set_Deadline
-       (D : Deadline;
-        T : Ada.Task_Identification.Task_Id :=
-              Ada.Task_Identification.Current_Task);
- 
-    procedure Delay_Until_And_Set_Deadline
-       (Delay_Until_Time : Ada.Real_Time.Time;
-        Deadline_Offset  : Ada.Real_Time.Time_Span);
- 
-    function Get_Deadline
-       (T : Ada.Task_Identification.Task_Id :=
-              Ada.Task_Identification.Current_Task)
-        return Deadline
-    with
-      SPARK_Mode,
-      Volatile_Function,
-      Global => Ada.Task_Identification.Tasking_State;
- 
- end Ada.Dispatching.EDF;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-dispat.adb gcc-8.1.0/gcc/ada/a-dispat.adb
*** gcc-7.3.0/gcc/ada/a-dispat.adb	Fri Feb 20 14:29:49 2015
--- gcc-8.1.0/gcc/ada/a-dispat.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,57 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                       A D A . D I S P A T C H I N G                      --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --             Copyright (C) 2015, Free Software Foundation, Inc.           --
- --                                                                          --
- -- GNAT is 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.Exceptions;
- with System.Tasking;
- with System.Task_Primitives.Operations;
- 
- package body Ada.Dispatching is
- 
-    procedure Yield is
-       Self_Id : constant System.Tasking.Task_Id :=
-                   System.Task_Primitives.Operations.Self;
- 
-    begin
-       --  If pragma Detect_Blocking is active, Program_Error must be
-       --  raised if this potentially blocking operation is called from a
-       --  protected action.
- 
-       if System.Tasking.Detect_Blocking
-         and then Self_Id.Common.Protected_Action_Nesting > 0
-       then
-          Ada.Exceptions.Raise_Exception
-            (Program_Error'Identity, "potentially blocking operation");
-       else
-          System.Task_Primitives.Operations.Yield;
-       end if;
-    end Yield;
- 
- end Ada.Dispatching;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-dispat.ads gcc-8.1.0/gcc/ada/a-dispat.ads
*** gcc-7.3.0/gcc/ada/a-dispat.ads	Wed Apr 20 09:04:48 2016
--- gcc-8.1.0/gcc/ada/a-dispat.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,23 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                       A D A . D I S P A T C H I N G                      --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- package Ada.Dispatching is
-    pragma Preelaborate (Dispatching);
- 
-    procedure Yield with
-      Global => null;
- 
-    Dispatching_Policy_Error : exception;
- end Ada.Dispatching;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-dynpri.adb gcc-8.1.0/gcc/ada/a-dynpri.adb
*** gcc-7.3.0/gcc/ada/a-dynpri.adb	Mon Oct  1 09:41:22 2012
--- gcc-8.1.0/gcc/ada/a-dynpri.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,164 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                  GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                --
- --                                                                          --
- --                 A D A . D Y N A M I C _ P R I O R I T I E S              --
- --                                                                          --
- --                                  B o d y                                 --
- --                                                                          --
- --          Copyright (C) 1992-2012, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNARL is 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/>.                                          --
- --                                                                          --
- -- GNARL was developed by the GNARL team at Florida State University.       --
- -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with System.Task_Primitives.Operations;
- with System.Tasking;
- with System.Parameters;
- with System.Soft_Links;
- 
- with Ada.Unchecked_Conversion;
- 
- package body Ada.Dynamic_Priorities is
- 
-    package STPO renames System.Task_Primitives.Operations;
-    package SSL renames System.Soft_Links;
- 
-    use System.Parameters;
-    use System.Tasking;
- 
-    function Convert_Ids is new
-      Ada.Unchecked_Conversion
-        (Task_Identification.Task_Id, System.Tasking.Task_Id);
- 
-    ------------------
-    -- Get_Priority --
-    ------------------
- 
-    --  Inquire base priority of a task
- 
-    function Get_Priority
-      (T : Ada.Task_Identification.Task_Id :=
-         Ada.Task_Identification.Current_Task) return System.Any_Priority
-    is
-       Target : constant Task_Id := Convert_Ids (T);
-       Error_Message : constant String := "Trying to get the priority of a ";
- 
-    begin
-       if Target = Convert_Ids (Ada.Task_Identification.Null_Task_Id) then
-          raise Program_Error with Error_Message & "null task";
-       end if;
- 
-       if Task_Identification.Is_Terminated (T) then
-          raise Tasking_Error with Error_Message & "terminated task";
-       end if;
- 
-       return Target.Common.Base_Priority;
-    end Get_Priority;
- 
-    ------------------
-    -- Set_Priority --
-    ------------------
- 
-    --  Change base priority of a task dynamically
- 
-    procedure Set_Priority
-      (Priority : System.Any_Priority;
-       T        : Ada.Task_Identification.Task_Id :=
-         Ada.Task_Identification.Current_Task)
-    is
-       Target        : constant Task_Id := Convert_Ids (T);
-       Error_Message : constant String := "Trying to set the priority of a ";
-       Yield_Needed  : Boolean;
- 
-    begin
-       if Target = Convert_Ids (Ada.Task_Identification.Null_Task_Id) then
-          raise Program_Error with Error_Message & "null task";
-       end if;
- 
-       --  Setting the priority of an already-terminated task doesn't do
-       --  anything (see RM-D.5.1(7)). Note that Get_Priority is different in
-       --  this regard.
- 
-       if Task_Identification.Is_Terminated (T) then
-          return;
-       end if;
- 
-       SSL.Abort_Defer.all;
- 
-       if Single_Lock then
-          STPO.Lock_RTS;
-       end if;
- 
-       STPO.Write_Lock (Target);
- 
-       Target.Common.Base_Priority := Priority;
- 
-       if Target.Common.Call /= null
-         and then
-           Target.Common.Call.Acceptor_Prev_Priority /= Priority_Not_Boosted
-       then
-          --  Target is within a rendezvous, so ensure the correct priority
-          --  will be reset when finishing the rendezvous, and only change the
-          --  priority immediately if the new priority is greater than the
-          --  current (inherited) priority.
- 
-          Target.Common.Call.Acceptor_Prev_Priority := Priority;
- 
-          if Priority >= Target.Common.Current_Priority then
-             Yield_Needed := True;
-             STPO.Set_Priority (Target, Priority);
-          else
-             Yield_Needed := False;
-          end if;
- 
-       else
-          Yield_Needed := True;
-          STPO.Set_Priority (Target, Priority);
- 
-          if Target.Common.State = Entry_Caller_Sleep then
-             Target.Pending_Priority_Change := True;
-             STPO.Wakeup (Target, Target.Common.State);
-          end if;
-       end if;
- 
-       STPO.Unlock (Target);
- 
-       if Single_Lock then
-          STPO.Unlock_RTS;
-       end if;
- 
-       if STPO.Self = Target and then Yield_Needed then
- 
-          --  Yield is needed to enforce FIFO task dispatching
- 
-          --  LL Set_Priority is made while holding the RTS lock so that it is
-          --  inheriting high priority until it release all the RTS locks.
- 
-          --  If this is used in a system where Ceiling Locking is not enforced
-          --  we may end up getting two Yield effects.
- 
-          STPO.Yield;
-       end if;
- 
-       SSL.Abort_Undefer.all;
-    end Set_Priority;
- 
- end Ada.Dynamic_Priorities;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-dynpri.ads gcc-8.1.0/gcc/ada/a-dynpri.ads
*** gcc-7.3.0/gcc/ada/a-dynpri.ads	Wed Jun 11 12:31:56 2014
--- gcc-8.1.0/gcc/ada/a-dynpri.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,33 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --               A D A . D Y N A M I C _ P R I O R I T I E S                --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with System;
- with Ada.Task_Identification;
- 
- package Ada.Dynamic_Priorities is
-    pragma Preelaborate;
-    --  In accordance with Ada 2005 AI-362
- 
-    procedure Set_Priority
-      (Priority : System.Any_Priority;
-       T        : Ada.Task_Identification.Task_Id :=
-                    Ada.Task_Identification.Current_Task);
- 
-    function Get_Priority
-      (T        : Ada.Task_Identification.Task_Id :=
-                    Ada.Task_Identification.Current_Task)
-      return System.Any_Priority;
- 
- end Ada.Dynamic_Priorities;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-einuoc.adb gcc-8.1.0/gcc/ada/a-einuoc.adb
*** gcc-7.3.0/gcc/ada/a-einuoc.adb	Fri Jun 19 12:29:07 2009
--- gcc-8.1.0/gcc/ada/a-einuoc.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,48 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --     A D A . E X C E P T I O N S . I S _ N U L L _ O C C U R R E N C E    --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2000-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- --
- -- 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- ---------------------------------------
- -- Ada.Exceptions.Is_Null_Occurrence --
- ---------------------------------------
- 
- function Ada.Exceptions.Is_Null_Occurrence
-   (X : Exception_Occurrence) return Boolean
- is
- begin
-    --  The null exception is uniquely identified by the fact that the Id value
-    --  is null. No other exception occurrence can have a null Id.
- 
-    if X.Id = Null_Id then
-       return True;
-    else
-       return False;
-    end if;
- end Ada.Exceptions.Is_Null_Occurrence;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-einuoc.ads gcc-8.1.0/gcc/ada/a-einuoc.ads
*** gcc-7.3.0/gcc/ada/a-einuoc.ads	Fri Jun 19 12:23:38 2009
--- gcc-8.1.0/gcc/ada/a-einuoc.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,40 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --     A D A . E X C E P T I O N S . I S _ N U L L _ O C C U R R E N C E    --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2000-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- --
- -- 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 a GNAT-specific child function of Ada.Exceptions. It provides
- --  clearly missing functionality for its parent package, and most reasonably
- --  would simply be an added function to that package, but this change cannot
- --  be made in a conforming manner.
- 
- function Ada.Exceptions.Is_Null_Occurrence
-   (X : Exception_Occurrence) return Boolean;
- pragma Preelaborate (Ada.Exceptions.Is_Null_Occurrence);
- --  This function yields True if X is Null_Occurrence, and False otherwise
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-elchha.adb gcc-8.1.0/gcc/ada/a-elchha.adb
*** gcc-7.3.0/gcc/ada/a-elchha.adb	Wed Jul 30 14:21:09 2014
--- gcc-8.1.0/gcc/ada/a-elchha.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,141 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --    A D A . E X C E P T I O N S . L A S T _ C H A N C E _ H A N D L E R   --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2003-2014, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Default version for most targets
- 
- pragma Compiler_Unit_Warning;
- 
- with System.Standard_Library; use System.Standard_Library;
- with System.Soft_Links;
- 
- procedure Ada.Exceptions.Last_Chance_Handler
-   (Except : Exception_Occurrence)
- is
-    procedure Unhandled_Terminate;
-    pragma No_Return (Unhandled_Terminate);
-    pragma Import (C, Unhandled_Terminate, "__gnat_unhandled_terminate");
-    --  Perform system dependent shutdown code
- 
-    function Exception_Message_Length
-      (X : Exception_Occurrence) return Natural;
-    pragma Import (Ada, Exception_Message_Length, "__gnat_exception_msg_len");
- 
-    procedure Append_Info_Exception_Message
-      (X    : Exception_Occurrence;
-       Info : in out String;
-       Ptr  : in out Natural);
-    pragma Import
-      (Ada, Append_Info_Exception_Message, "__gnat_append_info_e_msg");
- 
-    procedure Append_Info_Untailored_Exception_Information
-      (X    : Exception_Occurrence;
-       Info : in out String;
-       Ptr  : in out Natural);
-    pragma Import
-      (Ada, Append_Info_Untailored_Exception_Information,
-       "__gnat_append_info_u_e_info");
- 
-    procedure To_Stderr (S : String);
-    pragma Import (Ada, To_Stderr, "__gnat_to_stderr");
-    --  Little routine to output string to stderr
- 
-    Ptr   : Natural := 0;
-    Nobuf : String (1 .. 0);
- 
-    Nline : constant String := String'(1 => ASCII.LF);
-    --  Convenient shortcut
- 
- begin
-    --  Do not execute any task termination code when shutting down the system.
-    --  The Adafinal procedure would execute the task termination routine for
-    --  normal termination, but we have already executed the task termination
-    --  procedure because of an unhandled exception.
- 
-    System.Soft_Links.Task_Termination_Handler :=
-      System.Soft_Links.Task_Termination_NT'Access;
- 
-    --  We shutdown the runtime now. The rest of the procedure needs to be
-    --  careful not to use anything that would require runtime support. In
-    --  particular, functions returning strings are banned since the sec stack
-    --  is no longer functional. This is particularly important to note for the
-    --  Exception_Information output. We used to allow the tailored version to
-    --  show up here, which turned out to be a bad idea as it might involve a
-    --  traceback decorator the length of which we don't control. Potentially
-    --  heavy primary/secondary stack use or dynamic allocations right before
-    --  this point are not welcome, moving the output before the finalization
-    --  raises order of outputs concerns, and decorators are intended to only
-    --  be used with exception traces, which should have been issued already.
- 
-    System.Standard_Library.Adafinal;
- 
-    --  Print a message only when exception traces are not active
- 
-    if Exception_Trace /= RM_Convention then
-       null;
- 
-    --  Check for special case of raising _ABORT_SIGNAL, which is not
-    --  really an exception at all. We recognize this by the fact that
-    --  it is the only exception whose name starts with underscore.
- 
-    elsif To_Ptr (Except.Id.Full_Name) (1) = '_' then
-       To_Stderr (Nline);
-       To_Stderr ("Execution terminated by abort of environment task");
-       To_Stderr (Nline);
- 
-    --  If no tracebacks, we print the unhandled exception in the old style
-    --  (i.e. the style used before ZCX was implemented). We do this to
-    --  retain compatibility.
- 
-    elsif Except.Num_Tracebacks = 0 then
-       To_Stderr (Nline);
-       To_Stderr ("raised ");
-       To_Stderr
-         (To_Ptr (Except.Id.Full_Name) (1 .. Except.Id.Name_Length - 1));
- 
-       if Exception_Message_Length (Except) /= 0 then
-          To_Stderr (" : ");
-          Append_Info_Exception_Message (Except, Nobuf, Ptr);
-       end if;
- 
-       To_Stderr (Nline);
- 
-    --  Traceback exists
- 
-    else
-       To_Stderr (Nline);
-       To_Stderr ("Execution terminated by unhandled exception");
-       To_Stderr (Nline);
- 
-       Append_Info_Untailored_Exception_Information (Except, Nobuf, Ptr);
-    end if;
- 
-    Unhandled_Terminate;
- end Ada.Exceptions.Last_Chance_Handler;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-elchha.ads gcc-8.1.0/gcc/ada/a-elchha.ads
*** gcc-7.3.0/gcc/ada/a-elchha.ads	Tue Feb 25 15:15:44 2014
--- gcc-8.1.0/gcc/ada/a-elchha.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,41 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --    A D A . E X C E P T I O N S . L A S T _ C H A N C E _ H A N D L E R   --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2003-2013, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Last chance handler. Unhandled exceptions are passed to this routine
- 
- pragma Compiler_Unit_Warning;
- 
- procedure Ada.Exceptions.Last_Chance_Handler
-   (Except :  Exception_Occurrence);
- pragma Export (C,
-                Last_Chance_Handler,
-                "__gnat_last_chance_handler");
- pragma No_Return (Last_Chance_Handler);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-envvar.adb gcc-8.1.0/gcc/ada/a-envvar.adb
*** gcc-7.3.0/gcc/ada/a-envvar.adb	Mon Feb 24 16:54:41 2014
--- gcc-8.1.0/gcc/ada/a-envvar.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,228 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --              A D A . E N V I R O N M E N T _ V A R I A B L E S           --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --         Copyright (C) 2009-2013, Free Software Foundation, Inc.          --
- --                                                                          --
- -- GNAT is 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 System.CRTL;
- with Interfaces.C.Strings;
- with Ada.Unchecked_Deallocation;
- 
- package body Ada.Environment_Variables is
- 
-    -----------
-    -- Clear --
-    -----------
- 
-    procedure Clear (Name : String) is
-       procedure Clear_Env_Var (Name : System.Address);
-       pragma Import (C, Clear_Env_Var, "__gnat_unsetenv");
- 
-       F_Name  : String (1 .. Name'Length + 1);
- 
-    begin
-       F_Name (1 .. Name'Length) := Name;
-       F_Name (F_Name'Last)      := ASCII.NUL;
- 
-       Clear_Env_Var (F_Name'Address);
-    end Clear;
- 
-    -----------
-    -- Clear --
-    -----------
- 
-    procedure Clear is
-       procedure Clear_Env;
-       pragma Import (C, Clear_Env, "__gnat_clearenv");
-    begin
-       Clear_Env;
-    end Clear;
- 
-    ------------
-    -- Exists --
-    ------------
- 
-    function Exists (Name : String) return Boolean is
-       use System;
- 
-       procedure Get_Env_Value_Ptr (Name, Length, Ptr : Address);
-       pragma Import (C, Get_Env_Value_Ptr, "__gnat_getenv");
- 
-       Env_Value_Ptr    : aliased Address;
-       Env_Value_Length : aliased Integer;
-       F_Name           : aliased String (1 .. Name'Length + 1);
- 
-    begin
-       F_Name (1 .. Name'Length) := Name;
-       F_Name (F_Name'Last)      := ASCII.NUL;
- 
-       Get_Env_Value_Ptr
-         (F_Name'Address, Env_Value_Length'Address, Env_Value_Ptr'Address);
- 
-       if Env_Value_Ptr = System.Null_Address then
-          return False;
-       end if;
- 
-       return True;
-    end Exists;
- 
-    -------------
-    -- Iterate --
-    -------------
- 
-    procedure Iterate
-      (Process : not null access procedure (Name, Value : String))
-    is
-       use Interfaces.C.Strings;
-       type C_String_Array is array (Natural) of aliased chars_ptr;
-       type C_String_Array_Access is access C_String_Array;
- 
-       function Get_Env return C_String_Array_Access;
-       pragma Import (C, Get_Env, "__gnat_environ");
- 
-       type String_Access is access all String;
-       procedure Free is new Ada.Unchecked_Deallocation (String, String_Access);
- 
-       Env_Length : Natural := 0;
-       Env        : constant C_String_Array_Access := Get_Env;
- 
-    begin
-       --  If the environment is null return directly
- 
-       if Env = null then
-          return;
-       end if;
- 
-       --  First get the number of environment variables
- 
-       loop
-          exit when Env (Env_Length) = Null_Ptr;
-          Env_Length := Env_Length + 1;
-       end loop;
- 
-       declare
-          Env_Copy : array (1 .. Env_Length) of String_Access;
- 
-       begin
-          --  Copy the environment
- 
-          for Iterator in 1 ..  Env_Length loop
-             Env_Copy (Iterator) := new String'(Value (Env (Iterator - 1)));
-          end loop;
- 
-          --  Iterate on the environment copy
- 
-          for Iterator in 1 .. Env_Length loop
-             declare
-                Current_Var : constant String := Env_Copy (Iterator).all;
-                Value_Index : Natural := Env_Copy (Iterator)'First;
- 
-             begin
-                loop
-                   exit when Current_Var (Value_Index) = '=';
-                   Value_Index := Value_Index + 1;
-                end loop;
- 
-                Process
-                  (Current_Var (Current_Var'First .. Value_Index - 1),
-                   Current_Var (Value_Index + 1 .. Current_Var'Last));
-             end;
-          end loop;
- 
-          --  Free the copy of the environment
- 
-          for Iterator in 1 .. Env_Length loop
-             Free (Env_Copy (Iterator));
-          end loop;
-       end;
-    end Iterate;
- 
-    ---------
-    -- Set --
-    ---------
- 
-    procedure Set (Name : String; Value : String) is
-       F_Name  : String (1 .. Name'Length + 1);
-       F_Value : String (1 .. Value'Length + 1);
- 
-       procedure Set_Env_Value (Name, Value : System.Address);
-       pragma Import (C, Set_Env_Value, "__gnat_setenv");
- 
-    begin
-       F_Name (1 .. Name'Length) := Name;
-       F_Name (F_Name'Last)      := ASCII.NUL;
- 
-       F_Value (1 .. Value'Length) := Value;
-       F_Value (F_Value'Last)      := ASCII.NUL;
- 
-       Set_Env_Value (F_Name'Address, F_Value'Address);
-    end Set;
- 
-    -----------
-    -- Value --
-    -----------
- 
-    function Value (Name : String) return String is
-       use System, System.CRTL;
- 
-       procedure Get_Env_Value_Ptr (Name, Length, Ptr : Address);
-       pragma Import (C, Get_Env_Value_Ptr, "__gnat_getenv");
- 
-       Env_Value_Ptr    : aliased Address;
-       Env_Value_Length : aliased Integer;
-       F_Name           : aliased String (1 .. Name'Length + 1);
- 
-    begin
-       F_Name (1 .. Name'Length) := Name;
-       F_Name (F_Name'Last)      := ASCII.NUL;
- 
-       Get_Env_Value_Ptr
-         (F_Name'Address, Env_Value_Length'Address, Env_Value_Ptr'Address);
- 
-       if Env_Value_Ptr = System.Null_Address then
-          raise Constraint_Error;
-       end if;
- 
-       if Env_Value_Length > 0 then
-          declare
-             Result : aliased String (1 .. Env_Value_Length);
-          begin
-             strncpy (Result'Address, Env_Value_Ptr, size_t (Env_Value_Length));
-             return Result;
-          end;
-       else
-          return "";
-       end if;
-    end Value;
- 
-    function Value (Name : String; Default : String) return String is
-    begin
-       return (if Exists (Name) then Value (Name) else Default);
-    end Value;
- 
- end Ada.Environment_Variables;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-envvar.ads gcc-8.1.0/gcc/ada/a-envvar.ads
*** gcc-7.3.0/gcc/ada/a-envvar.ads	Tue Apr 23 09:44:10 2013
--- gcc-8.1.0/gcc/ada/a-envvar.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,69 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --              A D A . E N V I R O N M E N T _ V A R I A B L E S           --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  The implementation of this package is as defined in the Ada 2012 RM, but
- --  it is available in Ada 95 and Ada 2005 modes as well.
- 
- package Ada.Environment_Variables is
-    pragma Preelaborate (Environment_Variables);
- 
-    function Value (Name : String) return String;
-    --  If the external execution environment supports environment variables,
-    --  then Value returns the value of the environment variable with the given
-    --  name. If no environment variable with the given name exists, then
-    --  Constraint_Error is propagated. If the execution environment does not
-    --  support environment variables, then Program_Error is propagated.
- 
-    function Value (Name : String; Default : String) return String;
-    --  If the external execution environment supports environment variables and
-    --  an environment variable with the given name currently exists, then Value
-    --  returns its value; otherwise, it returns Default.
- 
-    function Exists (Name : String) return Boolean;
-    --  If the external execution environment supports environment variables and
-    --  an environment variable with the given name currently exists, then
-    --  Exists returns True; otherwise it returns False.
- 
-    procedure Set (Name : String; Value : String);
-    --  If the external execution environment supports environment variables,
-    --  then Set first clears any existing environment variable with the given
-    --  name, and then defines a single new environment variable with the given
-    --  name and value. Otherwise Program_Error is propagated.
-    --
-    --  If implementation-defined circumstances prohibit the definition of an
-    --  environment variable with the given name and value, then exception
-    --  Constraint_Error is propagated.
-    --
-    --  It is implementation defined whether there exist values for which the
-    --  call Set (Name, Value) has the same effect as Clear (Name).
- 
-    procedure Clear (Name : String);
-    --  If the external execution environment supports environment variables,
-    --  then Clear deletes all existing environment variables with the given
-    --  name. Otherwise Program_Error is propagated.
- 
-    procedure Clear;
-    --  If the external execution environment supports environment variables,
-    --  then Clear deletes all existing environment variables. Otherwise
-    --  Program_Error is propagated.
- 
-    procedure Iterate
-      (Process : not null access procedure (Name, Value : String));
-    --  If the external execution environment supports environment variables,
-    --  then Iterate calls the subprogram designated by Process for each
-    --  existing environment variable, passing the name and value of that
-    --  environment variable. Otherwise Program_Error is propagated.
- 
- end Ada.Environment_Variables;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-etgrbu.ads gcc-8.1.0/gcc/ada/a-etgrbu.ads
*** gcc-7.3.0/gcc/ada/a-etgrbu.ads	Fri Feb 20 13:55:31 2015
--- gcc-8.1.0/gcc/ada/a-etgrbu.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,110 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --      A D A . E X E C U T I O N _ T I M E . G R O U P _ B U D G E T S     --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --            Copyright (C) 2015, Free Software Foundation, 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 unit is not implemented in typical GNAT implementations that lie on
- --  top of operating systems, because it is infeasible to implement in such
- --  environments.
- 
- --  If a target environment provides appropriate support for this package,
- --  then the Unimplemented_Unit pragma should be removed from this spec and
- --  an appropriate body provided.
- 
- with System;
- with System.Multiprocessors;
- 
- package Ada.Execution_Time.Group_Budgets is
-    pragma Unimplemented_Unit;
- 
-    type Group_Budget
-      (CPU : System.Multiprocessors.CPU := System.Multiprocessors.CPU'First)
-    is tagged limited private;
- 
-    type Group_Budget_Handler is access
-       protected procedure (GB : in out Group_Budget);
- 
-    type Task_Array is
-       array (Positive range <>) of Ada.Task_Identification.Task_Id;
- 
-    Min_Handler_Ceiling : constant System.Any_Priority :=
-                            System.Any_Priority'First;
-    --  Initial value is an arbitrary choice ???
- 
-    procedure Add_Task
-      (GB : in out Group_Budget;
-       T  : Ada.Task_Identification.Task_Id);
- 
-    procedure Remove_Task
-      (GB : in out Group_Budget;
-       T  : Ada.Task_Identification.Task_Id);
- 
-    function Is_Member
-      (GB : Group_Budget;
-       T  : Ada.Task_Identification.Task_Id) return Boolean;
- 
-    function Is_A_Group_Member
-      (T : Ada.Task_Identification.Task_Id) return Boolean;
- 
-    function Members (GB : Group_Budget) return Task_Array;
- 
-    procedure Replenish
-      (GB : in out Group_Budget;
-       To : Ada.Real_Time.Time_Span);
- 
-    procedure Add
-      (GB       : in out Group_Budget;
-       Interval : Ada.Real_Time.Time_Span);
- 
-    function Budget_Has_Expired (GB : Group_Budget) return Boolean;
- 
-    function Budget_Remaining
-      (GB : Group_Budget) return Ada.Real_Time.Time_Span;
- 
-    procedure Set_Handler
-      (GB      : in out Group_Budget;
-       Handler : Group_Budget_Handler);
- 
-    function Current_Handler (GB : Group_Budget) return Group_Budget_Handler;
- 
-    procedure Cancel_Handler
-      (GB        : in out Group_Budget;
-       Cancelled : out Boolean);
- 
-    Group_Budget_Error : exception;
- 
- private
-    type Group_Budget
-      (CPU : System.Multiprocessors.CPU := System.Multiprocessors.CPU'First)
-    is tagged limited null record;
- end Ada.Execution_Time.Group_Budgets;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-excach.adb gcc-8.1.0/gcc/ada/a-excach.adb
*** gcc-7.3.0/gcc/ada/a-excach.adb	Wed Jul 30 14:00:58 2014
--- gcc-8.1.0/gcc/ada/a-excach.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,74 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --             A D A . E X C E P T I O N S . C A L L _ C H A I N            --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 Warnings (Off);
- --  Allow withing of non-Preelaborated units in Ada 2005 mode where this
- --  package will be categorized as Preelaborate. See AI-362 for details.
- --  It is safe in the context of the run-time to violate the rules.
- 
- with System.Traceback;
- 
- pragma Warnings (On);
- 
- separate (Ada.Exceptions)
- procedure Call_Chain (Excep : EOA) is
- 
-    Exception_Tracebacks : Integer;
-    pragma Import (C, Exception_Tracebacks, "__gl_exception_tracebacks");
-    --  Boolean indicating whether tracebacks should be stored in exception
-    --  occurrences.
- 
- begin
-    if Exception_Tracebacks /= 0 and Excep.Num_Tracebacks = 0 then
- 
-       --  If Exception_Tracebacks = 0 then the program was not
-       --  compiled for storing tracebacks in exception occurrences
-       --  (-bargs -E switch) so that we do not generate them.
-       --
-       --  If Excep.Num_Tracebacks /= 0 then this is a reraise, no need
-       --  to store a new (wrong) chain.
- 
-       --  We ask System.Traceback.Call_Chain to skip 3 frames to ensure that
-       --  itself, ourselves and our caller are not part of the result. Our
-       --  caller is always an exception propagation actor that we don't want
-       --  to see, and it may be part of a separate subunit which pulls it
-       --  outside the AAA/ZZZ range.
- 
-       System.Traceback.Call_Chain
-         (Traceback   => Excep.Tracebacks,
-          Max_Len     => Max_Tracebacks,
-          Len         => Excep.Num_Tracebacks,
-          Exclude_Min => Code_Address_For_AAA,
-          Exclude_Max => Code_Address_For_ZZZ,
-          Skip_Frames => 3);
-    end if;
- 
- end Call_Chain;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-except-2005.adb gcc-8.1.0/gcc/ada/a-except-2005.adb
*** gcc-7.3.0/gcc/ada/a-except-2005.adb	Tue Oct 20 12:02:30 2015
--- gcc-8.1.0/gcc/ada/a-except-2005.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,1748 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                       A D A . E X C E P T I O N S                        --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 Style_Checks (All_Checks);
- --  No subprogram ordering check, due to logical grouping
- 
- pragma Polling (Off);
- --  We must turn polling off for this unit, because otherwise we get
- --  elaboration circularities with System.Exception_Tables.
- 
- with System;                  use System;
- with System.Exceptions;       use System.Exceptions;
- with System.Exceptions_Debug; use System.Exceptions_Debug;
- with System.Standard_Library; use System.Standard_Library;
- with System.Soft_Links;       use System.Soft_Links;
- with System.WCh_Con;          use System.WCh_Con;
- with System.WCh_StW;          use System.WCh_StW;
- 
- pragma Warnings (Off);
- --  Suppress complaints about Symbolic not being referenced, and about it not
- --  having pragma Preelaborate.
- with System.Traceback.Symbolic;
- --  Bring Symbolic into the closure. If it is the s-trasym-dwarf.adb version,
- --  it will install symbolic tracebacks as the default decorator. Otherwise,
- --  symbolic tracebacks are not supported, and we fall back to hexadecimal
- --  addresses.
- pragma Warnings (On);
- 
- package body Ada.Exceptions is
- 
-    pragma Suppress (All_Checks);
-    --  We definitely do not want exceptions occurring within this unit, or
-    --  we are in big trouble. If an exceptional situation does occur, better
-    --  that it not be raised, since raising it can cause confusing chaos.
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    --  Note: the exported subprograms in this package body are called directly
-    --  from C clients using the given external name, even though they are not
-    --  technically visible in the Ada sense.
- 
-    function Code_Address_For_AAA return System.Address;
-    function Code_Address_For_ZZZ return System.Address;
-    --  Return start and end of procedures in this package
-    --
-    --  These procedures are used to provide exclusion bounds in
-    --  calls to Call_Chain at exception raise points from this unit. The
-    --  purpose is to arrange for the exception tracebacks not to include
-    --  frames from subprograms involved in the raise process, as these are
-    --  meaningless from the user's standpoint.
-    --
-    --  For these bounds to be meaningful, we need to ensure that the object
-    --  code for the subprograms involved in processing a raise is located
-    --  after the object code Code_Address_For_AAA and before the object
-    --  code Code_Address_For_ZZZ. This will indeed be the case as long as
-    --  the following rules are respected:
-    --
-    --  1) The bodies of the subprograms involved in processing a raise
-    --     are located after the body of Code_Address_For_AAA and before the
-    --     body of Code_Address_For_ZZZ.
-    --
-    --  2) No pragma Inline applies to any of these subprograms, as this
-    --     could delay the corresponding assembly output until the end of
-    --     the unit.
- 
-    procedure Call_Chain (Excep : EOA);
-    --  Store up to Max_Tracebacks in Excep, corresponding to the current
-    --  call chain.
- 
-    function Image (Index : Integer) return String;
-    --  Return string image corresponding to Index
- 
-    procedure To_Stderr (S : String);
-    pragma Export (Ada, To_Stderr, "__gnat_to_stderr");
-    --  Little routine to output string to stderr that is also used
-    --  in the tasking run time.
- 
-    procedure To_Stderr (C : Character);
-    pragma Inline (To_Stderr);
-    pragma Export (Ada, To_Stderr, "__gnat_to_stderr_char");
-    --  Little routine to output a character to stderr, used by some of
-    --  the separate units below.
- 
-    package Exception_Data is
- 
-       -----------------------------------
-       -- Exception Message Subprograms --
-       -----------------------------------
- 
-       procedure Set_Exception_C_Msg
-         (Excep  : EOA;
-          Id     : Exception_Id;
-          Msg1   : System.Address;
-          Line   : Integer        := 0;
-          Column : Integer        := 0;
-          Msg2   : System.Address := System.Null_Address);
-       --  This routine is called to setup the exception referenced by X
-       --  to contain the indicated Id value and message. Msg1 is a null
-       --  terminated string which is generated as the exception message. If
-       --  line is non-zero, then a colon and the decimal representation of
-       --  this integer is appended to the message. Ditto for Column. When Msg2
-       --  is non-null, a space and this additional null terminated string is
-       --  added to the message.
- 
-       procedure Set_Exception_Msg
-         (Excep   : EOA;
-          Id      : Exception_Id;
-          Message : String);
-       --  This routine is called to setup the exception referenced by X
-       --  to contain the indicated Id value and message. Message is a string
-       --  which is generated as the exception message.
- 
-       ---------------------------------------
-       -- Exception Information Subprograms --
-       ---------------------------------------
- 
-       function Untailored_Exception_Information
-         (X : Exception_Occurrence) return String;
-       --  This is used by Stream_Attributes.EO_To_String to convert an
-       --  Exception_Occurrence to a String for the stream attributes.
-       --  String_To_EO understands the format, as documented here.
-       --
-       --  The format of the string is as follows:
-       --
-       --    raised <exception name> : <message>
-       --    (" : <message>" is present only if Exception_Message is not empty)
-       --    PID=nnnn (only if nonzero)
-       --    Call stack traceback locations:  (only if at least one location)
-       --    <0xyyyyyyyy 0xyyyyyyyy ...>      (is recorded)
-       --
-       --  The lines are separated by a ASCII.LF character.
-       --  The nnnn is the partition Id given as decimal digits.
-       --  The 0x... line represents traceback program counter locations, in
-       --  execution order with the first one being the exception location.
-       --
-       --  The Exception_Name and Message lines are omitted in the abort
-       --  signal case, since this is not really an exception.
-       --
-       --  Note: If the format of the generated string is changed, please note
-       --  that an equivalent modification to the routine String_To_EO must be
-       --  made to preserve proper functioning of the stream attributes.
- 
-       function Exception_Information (X : Exception_Occurrence) return String;
-       --  This is the implementation of Ada.Exceptions.Exception_Information,
-       --  as defined in the Ada RM.
-       --
-       --  If no traceback decorator (see GNAT.Exception_Traces) is currently
-       --  in place, this is the same as Untailored_Exception_Information.
-       --  Otherwise, the decorator is used to produce a symbolic traceback
-       --  instead of hexadecimal addresses.
-       --
-       --  Note that unlike Untailored_Exception_Information, there is no need
-       --  to keep the output of Exception_Information stable for streaming
-       --  purposes, and in fact the output differs across platforms.
- 
-    end Exception_Data;
- 
-    package Exception_Traces is
- 
-       -------------------------------------------------
-       -- Run-Time Exception Notification Subprograms --
-       -------------------------------------------------
- 
-       --  These subprograms provide a common run-time interface to trigger the
-       --  actions required when an exception is about to be propagated (e.g.
-       --  user specified actions or output of exception information). They are
-       --  exported to be usable by the Ada exception handling personality
-       --  routine when the GCC 3 mechanism is used.
- 
-       procedure Notify_Handled_Exception (Excep : EOA);
-       pragma Export
-         (C, Notify_Handled_Exception, "__gnat_notify_handled_exception");
-       --  This routine is called for a handled occurrence is about to be
-       --  propagated.
- 
-       procedure Notify_Unhandled_Exception (Excep : EOA);
-       pragma Export
-         (C, Notify_Unhandled_Exception, "__gnat_notify_unhandled_exception");
-       --  This routine is called when an unhandled occurrence is about to be
-       --  propagated.
- 
-       procedure Unhandled_Exception_Terminate (Excep : EOA);
-       pragma No_Return (Unhandled_Exception_Terminate);
-       --  This procedure is called to terminate execution following an
-       --  unhandled exception. The exception information, including
-       --  traceback if available is output, and execution is then
-       --  terminated. Note that at the point where this routine is
-       --  called, the stack has typically been destroyed.
- 
-    end Exception_Traces;
- 
-    package Exception_Propagation is
- 
-       ---------------------------------------
-       -- Exception Propagation Subprograms --
-       ---------------------------------------
- 
-       function Allocate_Occurrence return EOA;
-       --  Allocate an exception occurrence (as well as the machine occurrence)
- 
-       procedure Propagate_Exception (Excep : EOA);
-       pragma No_Return (Propagate_Exception);
-       --  This procedure propagates the exception represented by Excep
- 
-    end Exception_Propagation;
- 
-    package Stream_Attributes is
- 
-       ----------------------------------
-       -- Stream Attribute Subprograms --
-       ----------------------------------
- 
-       function EId_To_String (X : Exception_Id) return String;
-       function String_To_EId (S : String) return Exception_Id;
-       --  Functions for implementing Exception_Id stream attributes
- 
-       function EO_To_String (X : Exception_Occurrence) return String;
-       function String_To_EO (S : String) return Exception_Occurrence;
-       --  Functions for implementing Exception_Occurrence stream
-       --  attributes
- 
-    end Stream_Attributes;
- 
-    procedure Complete_Occurrence (X : EOA);
-    --  Finish building the occurrence: save the call chain and notify the
-    --  debugger.
- 
-    procedure Complete_And_Propagate_Occurrence (X : EOA);
-    pragma No_Return (Complete_And_Propagate_Occurrence);
-    --  This is a simple wrapper to Complete_Occurrence and
-    --  Exception_Propagation.Propagate_Exception.
- 
-    function Create_Occurrence_From_Signal_Handler
-      (E : Exception_Id;
-       M : System.Address) return EOA;
-    --  Create and build an exception occurrence using exception id E and
-    --  nul-terminated message M.
- 
-    function Create_Machine_Occurrence_From_Signal_Handler
-      (E : Exception_Id;
-       M : System.Address) return System.Address;
-    pragma Export (C, Create_Machine_Occurrence_From_Signal_Handler,
-                   "__gnat_create_machine_occurrence_from_signal_handler");
-    --  Create and build an exception occurrence using exception id E and
-    --  nul-terminated message M. Return the machine occurrence.
- 
-    procedure Raise_Exception_No_Defer
-      (E       : Exception_Id;
-       Message : String := "");
-    pragma Export
-     (Ada, Raise_Exception_No_Defer,
-      "ada__exceptions__raise_exception_no_defer");
-    pragma No_Return (Raise_Exception_No_Defer);
-    --  Similar to Raise_Exception, but with no abort deferral
- 
-    procedure Raise_With_Msg (E : Exception_Id);
-    pragma No_Return (Raise_With_Msg);
-    pragma Export (C, Raise_With_Msg, "__gnat_raise_with_msg");
-    --  Raises an exception with given exception id value. A message
-    --  is associated with the raise, and has already been stored in the
-    --  exception occurrence referenced by the Current_Excep in the TSD.
-    --  Abort is deferred before the raise call.
- 
-    procedure Raise_With_Location_And_Msg
-      (E : Exception_Id;
-       F : System.Address;
-       L : Integer;
-       C : Integer := 0;
-       M : System.Address := System.Null_Address);
-    pragma No_Return (Raise_With_Location_And_Msg);
-    --  Raise an exception with given exception id value. A filename and line
-    --  number is associated with the raise and is stored in the exception
-    --  occurrence and in addition a column and a string message M may be
-    --  appended to this (if not null/0).
- 
-    procedure Raise_Constraint_Error (File : System.Address; Line : Integer);
-    pragma No_Return (Raise_Constraint_Error);
-    pragma Export (C, Raise_Constraint_Error, "__gnat_raise_constraint_error");
-    --  Raise constraint error with file:line information
- 
-    procedure Raise_Constraint_Error_Msg
-      (File   : System.Address;
-       Line   : Integer;
-       Column : Integer;
-       Msg    : System.Address);
-    pragma No_Return (Raise_Constraint_Error_Msg);
-    pragma Export
-      (C, Raise_Constraint_Error_Msg, "__gnat_raise_constraint_error_msg");
-    --  Raise constraint error with file:line:col + msg information
- 
-    procedure Raise_Program_Error (File : System.Address; Line : Integer);
-    pragma No_Return (Raise_Program_Error);
-    pragma Export (C, Raise_Program_Error, "__gnat_raise_program_error");
-    --  Raise program error with file:line information
- 
-    procedure Raise_Program_Error_Msg
-      (File : System.Address;
-       Line : Integer;
-       Msg  : System.Address);
-    pragma No_Return (Raise_Program_Error_Msg);
-    pragma Export
-      (C, Raise_Program_Error_Msg, "__gnat_raise_program_error_msg");
-    --  Raise program error with file:line + msg information
- 
-    procedure Raise_Storage_Error (File : System.Address; Line : Integer);
-    pragma No_Return (Raise_Storage_Error);
-    pragma Export (C, Raise_Storage_Error, "__gnat_raise_storage_error");
-    --  Raise storage error with file:line information
- 
-    procedure Raise_Storage_Error_Msg
-      (File : System.Address;
-       Line : Integer;
-       Msg  : System.Address);
-    pragma No_Return (Raise_Storage_Error_Msg);
-    pragma Export
-      (C, Raise_Storage_Error_Msg, "__gnat_raise_storage_error_msg");
-    --  Raise storage error with file:line + reason msg information
- 
-    --  The exception raising process and the automatic tracing mechanism rely
-    --  on some careful use of flags attached to the exception occurrence. The
-    --  graph below illustrates the relations between the Raise_ subprograms
-    --  and identifies the points where basic flags such as Exception_Raised
-    --  are initialized.
- 
-    --  (i) signs indicate the flags initialization points. R stands for Raise,
-    --  W for With, and E for Exception.
- 
-    --                   R_No_Msg    R_E   R_Pe  R_Ce  R_Se
-    --                       |        |     |     |     |
-    --                       +--+  +--+     +---+ | +---+
-    --                          |  |            | | |
-    --     R_E_No_Defer(i)    R_W_Msg(i)       R_W_Loc
-    --           |               |              |   |
-    --           +------------+  |  +-----------+   +--+
-    --                        |  |  |                  |
-    --                        |  |  |             Set_E_C_Msg(i)
-    --                        |  |  |
-    --            Complete_And_Propagate_Occurrence
- 
-    procedure Reraise;
-    pragma No_Return (Reraise);
-    pragma Export (C, Reraise, "__gnat_reraise");
-    --  Reraises the exception referenced by the Current_Excep field
-    --  of the TSD (all fields of this exception occurrence are set).
-    --  Abort is deferred before the reraise operation. Called from
-    --  System.Tasking.RendezVous.Exceptional_Complete_RendezVous
- 
-    procedure Transfer_Occurrence
-      (Target : Exception_Occurrence_Access;
-       Source : Exception_Occurrence);
-    pragma Export (C, Transfer_Occurrence, "__gnat_transfer_occurrence");
-    --  Called from s-tasren.adb:Local_Complete_RendezVous and
-    --  s-tpobop.adb:Exceptional_Complete_Entry_Body to setup Target from
-    --  Source as an exception to be propagated in the caller task. Target is
-    --  expected to be a pointer to the fixed TSD occurrence for this task.
- 
-    --------------------------------
-    -- Run-Time Check Subprograms --
-    --------------------------------
- 
-    --  These subprograms raise a specific exception with a reason message
-    --  attached. The parameters are the file name and line number in each
-    --  case. The names are defined by Exp_Ch11.Get_RT_Exception_Name.
- 
-    procedure Rcheck_CE_Access_Check
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_CE_Null_Access_Parameter
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_CE_Discriminant_Check
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_CE_Divide_By_Zero
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_CE_Explicit_Raise
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_CE_Index_Check
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_CE_Invalid_Data
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_CE_Length_Check
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_CE_Null_Exception_Id
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_CE_Null_Not_Allowed
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_CE_Overflow_Check
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_CE_Partition_Check
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_CE_Range_Check
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_CE_Tag_Check
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_PE_Access_Before_Elaboration
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_PE_Accessibility_Check
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_PE_Address_Of_Intrinsic
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_PE_Aliased_Parameters
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_PE_All_Guards_Closed
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_PE_Bad_Predicated_Generic_Type
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_PE_Current_Task_In_Entry_Body
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_PE_Duplicated_Entry_Address
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_PE_Explicit_Raise
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_PE_Implicit_Return
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_PE_Misaligned_Address_Value
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_PE_Missing_Return
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_PE_Non_Transportable_Actual
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_PE_Overlaid_Controlled_Object
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_PE_Potentially_Blocking_Operation
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_PE_Stubbed_Subprogram_Called
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_PE_Unchecked_Union_Restriction
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_SE_Empty_Storage_Pool
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_SE_Explicit_Raise
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_SE_Infinite_Recursion
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_SE_Object_Too_Large
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_PE_Stream_Operation_Not_Allowed
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_CE_Access_Check_Ext
-      (File : System.Address; Line, Column : Integer);
-    procedure Rcheck_CE_Index_Check_Ext
-      (File : System.Address; Line, Column, Index, First, Last : Integer);
-    procedure Rcheck_CE_Invalid_Data_Ext
-      (File : System.Address; Line, Column, Index, First, Last : Integer);
-    procedure Rcheck_CE_Range_Check_Ext
-      (File : System.Address; Line, Column, Index, First, Last : Integer);
- 
-    procedure Rcheck_PE_Finalize_Raised_Exception
-      (File : System.Address; Line : Integer);
-    --  This routine is separated out because it has quite different behavior
-    --  from the others. This is the "finalize/adjust raised exception". This
-    --  subprogram is always called with abort deferred, unlike all other
-    --  Rcheck_* subprograms, it needs to call Raise_Exception_No_Defer.
- 
-    pragma Export (C, Rcheck_CE_Access_Check,
-                   "__gnat_rcheck_CE_Access_Check");
-    pragma Export (C, Rcheck_CE_Null_Access_Parameter,
-                   "__gnat_rcheck_CE_Null_Access_Parameter");
-    pragma Export (C, Rcheck_CE_Discriminant_Check,
-                   "__gnat_rcheck_CE_Discriminant_Check");
-    pragma Export (C, Rcheck_CE_Divide_By_Zero,
-                   "__gnat_rcheck_CE_Divide_By_Zero");
-    pragma Export (C, Rcheck_CE_Explicit_Raise,
-                   "__gnat_rcheck_CE_Explicit_Raise");
-    pragma Export (C, Rcheck_CE_Index_Check,
-                   "__gnat_rcheck_CE_Index_Check");
-    pragma Export (C, Rcheck_CE_Invalid_Data,
-                   "__gnat_rcheck_CE_Invalid_Data");
-    pragma Export (C, Rcheck_CE_Length_Check,
-                   "__gnat_rcheck_CE_Length_Check");
-    pragma Export (C, Rcheck_CE_Null_Exception_Id,
-                   "__gnat_rcheck_CE_Null_Exception_Id");
-    pragma Export (C, Rcheck_CE_Null_Not_Allowed,
-                   "__gnat_rcheck_CE_Null_Not_Allowed");
-    pragma Export (C, Rcheck_CE_Overflow_Check,
-                   "__gnat_rcheck_CE_Overflow_Check");
-    pragma Export (C, Rcheck_CE_Partition_Check,
-                   "__gnat_rcheck_CE_Partition_Check");
-    pragma Export (C, Rcheck_CE_Range_Check,
-                   "__gnat_rcheck_CE_Range_Check");
-    pragma Export (C, Rcheck_CE_Tag_Check,
-                   "__gnat_rcheck_CE_Tag_Check");
-    pragma Export (C, Rcheck_PE_Access_Before_Elaboration,
-                   "__gnat_rcheck_PE_Access_Before_Elaboration");
-    pragma Export (C, Rcheck_PE_Accessibility_Check,
-                   "__gnat_rcheck_PE_Accessibility_Check");
-    pragma Export (C, Rcheck_PE_Address_Of_Intrinsic,
-                   "__gnat_rcheck_PE_Address_Of_Intrinsic");
-    pragma Export (C, Rcheck_PE_Aliased_Parameters,
-                   "__gnat_rcheck_PE_Aliased_Parameters");
-    pragma Export (C, Rcheck_PE_All_Guards_Closed,
-                   "__gnat_rcheck_PE_All_Guards_Closed");
-    pragma Export (C, Rcheck_PE_Bad_Predicated_Generic_Type,
-                   "__gnat_rcheck_PE_Bad_Predicated_Generic_Type");
-    pragma Export (C, Rcheck_PE_Current_Task_In_Entry_Body,
-                   "__gnat_rcheck_PE_Current_Task_In_Entry_Body");
-    pragma Export (C, Rcheck_PE_Duplicated_Entry_Address,
-                   "__gnat_rcheck_PE_Duplicated_Entry_Address");
-    pragma Export (C, Rcheck_PE_Explicit_Raise,
-                   "__gnat_rcheck_PE_Explicit_Raise");
-    pragma Export (C, Rcheck_PE_Finalize_Raised_Exception,
-                   "__gnat_rcheck_PE_Finalize_Raised_Exception");
-    pragma Export (C, Rcheck_PE_Implicit_Return,
-                   "__gnat_rcheck_PE_Implicit_Return");
-    pragma Export (C, Rcheck_PE_Misaligned_Address_Value,
-                   "__gnat_rcheck_PE_Misaligned_Address_Value");
-    pragma Export (C, Rcheck_PE_Missing_Return,
-                   "__gnat_rcheck_PE_Missing_Return");
-    pragma Export (C, Rcheck_PE_Non_Transportable_Actual,
-                   "__gnat_rcheck_PE_Non_Transportable_Actual");
-    pragma Export (C, Rcheck_PE_Overlaid_Controlled_Object,
-                   "__gnat_rcheck_PE_Overlaid_Controlled_Object");
-    pragma Export (C, Rcheck_PE_Potentially_Blocking_Operation,
-                   "__gnat_rcheck_PE_Potentially_Blocking_Operation");
-    pragma Export (C, Rcheck_PE_Stream_Operation_Not_Allowed,
-                   "__gnat_rcheck_PE_Stream_Operation_Not_Allowed");
-    pragma Export (C, Rcheck_PE_Stubbed_Subprogram_Called,
-                   "__gnat_rcheck_PE_Stubbed_Subprogram_Called");
-    pragma Export (C, Rcheck_PE_Unchecked_Union_Restriction,
-                   "__gnat_rcheck_PE_Unchecked_Union_Restriction");
-    pragma Export (C, Rcheck_SE_Empty_Storage_Pool,
-                   "__gnat_rcheck_SE_Empty_Storage_Pool");
-    pragma Export (C, Rcheck_SE_Explicit_Raise,
-                   "__gnat_rcheck_SE_Explicit_Raise");
-    pragma Export (C, Rcheck_SE_Infinite_Recursion,
-                   "__gnat_rcheck_SE_Infinite_Recursion");
-    pragma Export (C, Rcheck_SE_Object_Too_Large,
-                   "__gnat_rcheck_SE_Object_Too_Large");
- 
-    pragma Export (C, Rcheck_CE_Access_Check_Ext,
-                   "__gnat_rcheck_CE_Access_Check_ext");
-    pragma Export (C, Rcheck_CE_Index_Check_Ext,
-                   "__gnat_rcheck_CE_Index_Check_ext");
-    pragma Export (C, Rcheck_CE_Invalid_Data_Ext,
-                   "__gnat_rcheck_CE_Invalid_Data_ext");
-    pragma Export (C, Rcheck_CE_Range_Check_Ext,
-                   "__gnat_rcheck_CE_Range_Check_ext");
- 
-    --  None of these procedures ever returns (they raise an exception). By
-    --  using pragma No_Return, we ensure that any junk code after the call,
-    --  such as normal return epilogue stuff, can be eliminated).
- 
-    pragma No_Return (Rcheck_CE_Access_Check);
-    pragma No_Return (Rcheck_CE_Null_Access_Parameter);
-    pragma No_Return (Rcheck_CE_Discriminant_Check);
-    pragma No_Return (Rcheck_CE_Divide_By_Zero);
-    pragma No_Return (Rcheck_CE_Explicit_Raise);
-    pragma No_Return (Rcheck_CE_Index_Check);
-    pragma No_Return (Rcheck_CE_Invalid_Data);
-    pragma No_Return (Rcheck_CE_Length_Check);
-    pragma No_Return (Rcheck_CE_Null_Exception_Id);
-    pragma No_Return (Rcheck_CE_Null_Not_Allowed);
-    pragma No_Return (Rcheck_CE_Overflow_Check);
-    pragma No_Return (Rcheck_CE_Partition_Check);
-    pragma No_Return (Rcheck_CE_Range_Check);
-    pragma No_Return (Rcheck_CE_Tag_Check);
-    pragma No_Return (Rcheck_PE_Access_Before_Elaboration);
-    pragma No_Return (Rcheck_PE_Accessibility_Check);
-    pragma No_Return (Rcheck_PE_Address_Of_Intrinsic);
-    pragma No_Return (Rcheck_PE_Aliased_Parameters);
-    pragma No_Return (Rcheck_PE_All_Guards_Closed);
-    pragma No_Return (Rcheck_PE_Bad_Predicated_Generic_Type);
-    pragma No_Return (Rcheck_PE_Current_Task_In_Entry_Body);
-    pragma No_Return (Rcheck_PE_Duplicated_Entry_Address);
-    pragma No_Return (Rcheck_PE_Explicit_Raise);
-    pragma No_Return (Rcheck_PE_Implicit_Return);
-    pragma No_Return (Rcheck_PE_Misaligned_Address_Value);
-    pragma No_Return (Rcheck_PE_Missing_Return);
-    pragma No_Return (Rcheck_PE_Non_Transportable_Actual);
-    pragma No_Return (Rcheck_PE_Overlaid_Controlled_Object);
-    pragma No_Return (Rcheck_PE_Potentially_Blocking_Operation);
-    pragma No_Return (Rcheck_PE_Stream_Operation_Not_Allowed);
-    pragma No_Return (Rcheck_PE_Stubbed_Subprogram_Called);
-    pragma No_Return (Rcheck_PE_Unchecked_Union_Restriction);
-    pragma No_Return (Rcheck_PE_Finalize_Raised_Exception);
-    pragma No_Return (Rcheck_SE_Empty_Storage_Pool);
-    pragma No_Return (Rcheck_SE_Explicit_Raise);
-    pragma No_Return (Rcheck_SE_Infinite_Recursion);
-    pragma No_Return (Rcheck_SE_Object_Too_Large);
- 
-    pragma No_Return (Rcheck_CE_Access_Check_Ext);
-    pragma No_Return (Rcheck_CE_Index_Check_Ext);
-    pragma No_Return (Rcheck_CE_Invalid_Data_Ext);
-    pragma No_Return (Rcheck_CE_Range_Check_Ext);
- 
-    ---------------------------------------------
-    -- Reason Strings for Run-Time Check Calls --
-    ---------------------------------------------
- 
-    --  These strings are null-terminated and are used by Rcheck_nn. The
-    --  strings correspond to the definitions for Types.RT_Exception_Code.
- 
-    use ASCII;
- 
-    Rmsg_00 : constant String := "access check failed"              & NUL;
-    Rmsg_01 : constant String := "access parameter is null"         & NUL;
-    Rmsg_02 : constant String := "discriminant check failed"        & NUL;
-    Rmsg_03 : constant String := "divide by zero"                   & NUL;
-    Rmsg_04 : constant String := "explicit raise"                   & NUL;
-    Rmsg_05 : constant String := "index check failed"               & NUL;
-    Rmsg_06 : constant String := "invalid data"                     & NUL;
-    Rmsg_07 : constant String := "length check failed"              & NUL;
-    Rmsg_08 : constant String := "null Exception_Id"                & NUL;
-    Rmsg_09 : constant String := "null-exclusion check failed"      & NUL;
-    Rmsg_10 : constant String := "overflow check failed"            & NUL;
-    Rmsg_11 : constant String := "partition check failed"           & NUL;
-    Rmsg_12 : constant String := "range check failed"               & NUL;
-    Rmsg_13 : constant String := "tag check failed"                 & NUL;
-    Rmsg_14 : constant String := "access before elaboration"        & NUL;
-    Rmsg_15 : constant String := "accessibility check failed"       & NUL;
-    Rmsg_16 : constant String := "attempt to take address of"       &
-                                 " intrinsic subprogram"            & NUL;
-    Rmsg_17 : constant String := "aliased parameters"               & NUL;
-    Rmsg_18 : constant String := "all guards closed"                & NUL;
-    Rmsg_19 : constant String := "improper use of generic subtype"  &
-                                 " with predicate"                  & NUL;
-    Rmsg_20 : constant String := "Current_Task referenced in entry" &
-                                 " body"                            & NUL;
-    Rmsg_21 : constant String := "duplicated entry address"         & NUL;
-    Rmsg_22 : constant String := "explicit raise"                   & NUL;
-    Rmsg_23 : constant String := "finalize/adjust raised exception" & NUL;
-    Rmsg_24 : constant String := "implicit return with No_Return"   & NUL;
-    Rmsg_25 : constant String := "misaligned address value"         & NUL;
-    Rmsg_26 : constant String := "missing return"                   & NUL;
-    Rmsg_27 : constant String := "overlaid controlled object"       & NUL;
-    Rmsg_28 : constant String := "potentially blocking operation"   & NUL;
-    Rmsg_29 : constant String := "stubbed subprogram called"        & NUL;
-    Rmsg_30 : constant String := "unchecked union restriction"      & NUL;
-    Rmsg_31 : constant String := "actual/returned class-wide"       &
-                                 " value not transportable"         & NUL;
-    Rmsg_32 : constant String := "empty storage pool"               & NUL;
-    Rmsg_33 : constant String := "explicit raise"                   & NUL;
-    Rmsg_34 : constant String := "infinite recursion"               & NUL;
-    Rmsg_35 : constant String := "object too large"                 & NUL;
-    Rmsg_36 : constant String := "stream operation not allowed"     & NUL;
- 
-    -----------------------
-    -- Polling Interface --
-    -----------------------
- 
-    type Unsigned is mod 2 ** 32;
- 
-    Counter : Unsigned := 0;
-    pragma Warnings (Off, Counter);
-    --  This counter is provided for convenience. It can be used in Poll to
-    --  perform periodic but not systematic operations.
- 
-    procedure Poll is separate;
-    --  The actual polling routine is separate, so that it can easily be
-    --  replaced with a target dependent version.
- 
-    --------------------------
-    -- Code_Address_For_AAA --
-    --------------------------
- 
-    --  This function gives us the start of the PC range for addresses within
-    --  the exception unit itself. We hope that gigi/gcc keep all the procedures
-    --  in their original order.
- 
-    function Code_Address_For_AAA return System.Address is
-    begin
-       --  We are using a label instead of Code_Address_For_AAA'Address because
-       --  on some platforms the latter does not yield the address we want, but
-       --  the address of a stub or of a descriptor instead. This is the case at
-       --  least on PA-HPUX.
- 
-       <<Start_Of_AAA>>
-       return Start_Of_AAA'Address;
-    end Code_Address_For_AAA;
- 
-    ----------------
-    -- Call_Chain --
-    ----------------
- 
-    procedure Call_Chain (Excep : EOA) is separate;
-    --  The actual Call_Chain routine is separate, so that it can easily
-    --  be dummied out when no exception traceback information is needed.
- 
-    -------------------
-    -- EId_To_String --
-    -------------------
- 
-    function EId_To_String (X : Exception_Id) return String
-      renames Stream_Attributes.EId_To_String;
- 
-    ------------------
-    -- EO_To_String --
-    ------------------
- 
-    --  We use the null string to represent the null occurrence, otherwise we
-    --  output the Untailored_Exception_Information string for the occurrence.
- 
-    function EO_To_String (X : Exception_Occurrence) return String
-      renames Stream_Attributes.EO_To_String;
- 
-    ------------------------
-    -- Exception_Identity --
-    ------------------------
- 
-    function Exception_Identity
-      (X : Exception_Occurrence) return Exception_Id
-    is
-    begin
-       --  Note that the following test used to be here for the original
-       --  Ada 95 semantics, but these were modified by AI-241 to require
-       --  returning Null_Id instead of raising Constraint_Error.
- 
-       --  if X.Id = Null_Id then
-       --     raise Constraint_Error;
-       --  end if;
- 
-       return X.Id;
-    end Exception_Identity;
- 
-    ---------------------------
-    -- Exception_Information --
-    ---------------------------
- 
-    function Exception_Information (X : Exception_Occurrence) return String is
-    begin
-       if X.Id = Null_Id then
-          raise Constraint_Error;
-       else
-          return Exception_Data.Exception_Information (X);
-       end if;
-    end Exception_Information;
- 
-    -----------------------
-    -- Exception_Message --
-    -----------------------
- 
-    function Exception_Message (X : Exception_Occurrence) return String is
-    begin
-       if X.Id = Null_Id then
-          raise Constraint_Error;
-       else
-          return X.Msg (1 .. X.Msg_Length);
-       end if;
-    end Exception_Message;
- 
-    --------------------
-    -- Exception_Name --
-    --------------------
- 
-    function Exception_Name (Id : Exception_Id) return String is
-    begin
-       if Id = null then
-          raise Constraint_Error;
-       else
-          return To_Ptr (Id.Full_Name) (1 .. Id.Name_Length - 1);
-       end if;
-    end Exception_Name;
- 
-    function Exception_Name (X : Exception_Occurrence) return String is
-    begin
-       return Exception_Name (X.Id);
-    end Exception_Name;
- 
-    ---------------------------
-    -- Exception_Name_Simple --
-    ---------------------------
- 
-    function Exception_Name_Simple (X : Exception_Occurrence) return String is
-       Name : constant String := Exception_Name (X);
-       P    : Natural;
- 
-    begin
-       P := Name'Length;
-       while P > 1 loop
-          exit when Name (P - 1) = '.';
-          P := P - 1;
-       end loop;
- 
-       --  Return result making sure lower bound is 1
- 
-       declare
-          subtype Rname is String (1 .. Name'Length - P + 1);
-       begin
-          return Rname (Name (P .. Name'Length));
-       end;
-    end Exception_Name_Simple;
- 
-    --------------------
-    -- Exception_Data --
-    --------------------
- 
-    package body Exception_Data is separate;
-    --  This package can be easily dummied out if we do not want the basic
-    --  support for exception messages (such as in Ada 83).
- 
-    ---------------------------
-    -- Exception_Propagation --
-    ---------------------------
- 
-    package body Exception_Propagation is separate;
-    --  Depending on the actual exception mechanism used (front-end or
-    --  back-end based), the implementation will differ, which is why this
-    --  package is separated.
- 
-    ----------------------
-    -- Exception_Traces --
-    ----------------------
- 
-    package body Exception_Traces is separate;
-    --  Depending on the underlying support for IO the implementation will
-    --  differ. Moreover we would like to dummy out this package in case we
-    --  do not want any exception tracing support. This is why this package
-    --  is separated.
- 
-    --------------------------------------
-    -- Get_Exception_Machine_Occurrence --
-    --------------------------------------
- 
-    function Get_Exception_Machine_Occurrence
-      (X : Exception_Occurrence) return System.Address
-    is
-    begin
-       return X.Machine_Occurrence;
-    end Get_Exception_Machine_Occurrence;
- 
-    -----------
-    -- Image --
-    -----------
- 
-    function Image (Index : Integer) return String is
-       Result : constant String := Integer'Image (Index);
-    begin
-       if Result (1) = ' ' then
-          return Result (2 .. Result'Last);
-       else
-          return Result;
-       end if;
-    end Image;
- 
-    -----------------------
-    -- Stream Attributes --
-    -----------------------
- 
-    package body Stream_Attributes is separate;
-    --  This package can be easily dummied out if we do not want the
-    --  support for streaming Exception_Ids and Exception_Occurrences.
- 
-    ----------------------------
-    -- Raise_Constraint_Error --
-    ----------------------------
- 
-    procedure Raise_Constraint_Error (File : System.Address; Line : Integer) is
-    begin
-       Raise_With_Location_And_Msg (Constraint_Error_Def'Access, File, Line);
-    end Raise_Constraint_Error;
- 
-    --------------------------------
-    -- Raise_Constraint_Error_Msg --
-    --------------------------------
- 
-    procedure Raise_Constraint_Error_Msg
-      (File   : System.Address;
-       Line   : Integer;
-       Column : Integer;
-       Msg    : System.Address)
-    is
-    begin
-       Raise_With_Location_And_Msg
-         (Constraint_Error_Def'Access, File, Line, Column, Msg);
-    end Raise_Constraint_Error_Msg;
- 
-    -------------------------
-    -- Complete_Occurrence --
-    -------------------------
- 
-    procedure Complete_Occurrence (X : EOA) is
-    begin
-       --  Compute the backtrace for this occurrence if the corresponding
-       --  binder option has been set. Call_Chain takes care of the reraise
-       --  case.
- 
-       --  ??? Using Call_Chain here means we are going to walk up the stack
-       --  once only for backtracing purposes before doing it again for the
-       --  propagation per se.
- 
-       --  The first inspection is much lighter, though, as it only requires
-       --  partial unwinding of each frame. Additionally, although we could use
-       --  the personality routine to record the addresses while propagating,
-       --  this method has two drawbacks:
- 
-       --  1) the trace is incomplete if the exception is handled since we
-       --  don't walk past the frame with the handler,
- 
-       --    and
- 
-       --  2) we would miss the frames for which our personality routine is not
-       --  called, e.g. if C or C++ calls are on the way.
- 
-       Call_Chain (X);
- 
-       --  Notify the debugger
-       Debug_Raise_Exception
-         (E       => SSL.Exception_Data_Ptr (X.Id),
-          Message => X.Msg (1 .. X.Msg_Length));
-    end Complete_Occurrence;
- 
-    ---------------------------------------
-    -- Complete_And_Propagate_Occurrence --
-    ---------------------------------------
- 
-    procedure Complete_And_Propagate_Occurrence (X : EOA) is
-    begin
-       Complete_Occurrence (X);
-       Exception_Propagation.Propagate_Exception (X);
-    end Complete_And_Propagate_Occurrence;
- 
-    ---------------------
-    -- Raise_Exception --
-    ---------------------
- 
-    procedure Raise_Exception
-      (E       : Exception_Id;
-       Message : String := "")
-    is
-       EF : Exception_Id := E;
-    begin
-       --  Raise CE if E = Null_ID (AI-446)
- 
-       if E = null then
-          EF := Constraint_Error'Identity;
-       end if;
- 
-       --  Go ahead and raise appropriate exception
- 
-       Raise_Exception_Always (EF, Message);
-    end Raise_Exception;
- 
-    ----------------------------
-    -- Raise_Exception_Always --
-    ----------------------------
- 
-    procedure Raise_Exception_Always
-      (E       : Exception_Id;
-       Message : String := "")
-    is
-       X : constant EOA := Exception_Propagation.Allocate_Occurrence;
- 
-    begin
-       Exception_Data.Set_Exception_Msg (X, E, Message);
- 
-       if not ZCX_By_Default then
-          Abort_Defer.all;
-       end if;
- 
-       Complete_And_Propagate_Occurrence (X);
-    end Raise_Exception_Always;
- 
-    ------------------------------
-    -- Raise_Exception_No_Defer --
-    ------------------------------
- 
-    procedure Raise_Exception_No_Defer
-      (E       : Exception_Id;
-       Message : String := "")
-    is
-       X : constant EOA := Exception_Propagation.Allocate_Occurrence;
- 
-    begin
-       Exception_Data.Set_Exception_Msg (X, E, Message);
- 
-       --  Do not call Abort_Defer.all, as specified by the spec
- 
-       Complete_And_Propagate_Occurrence (X);
-    end Raise_Exception_No_Defer;
- 
-    -------------------------------------
-    -- Raise_From_Controlled_Operation --
-    -------------------------------------
- 
-    procedure Raise_From_Controlled_Operation
-      (X : Ada.Exceptions.Exception_Occurrence)
-    is
-       Prefix             : constant String := "adjust/finalize raised ";
-       Orig_Msg           : constant String := Exception_Message (X);
-       Orig_Prefix_Length : constant Natural :=
-                              Integer'Min (Prefix'Length, Orig_Msg'Length);
- 
-       Orig_Prefix : String renames
-         Orig_Msg (Orig_Msg'First .. Orig_Msg'First + Orig_Prefix_Length - 1);
- 
-    begin
-       --  Message already has the proper prefix, just re-raise
- 
-       if Orig_Prefix = Prefix then
-          Raise_Exception_No_Defer
-            (E       => Program_Error'Identity,
-             Message => Orig_Msg);
- 
-       else
-          declare
-             New_Msg  : constant String := Prefix & Exception_Name (X);
- 
-          begin
-             --  No message present, just provide our own
- 
-             if Orig_Msg = "" then
-                Raise_Exception_No_Defer
-                  (E       => Program_Error'Identity,
-                   Message => New_Msg);
- 
-             --  Message present, add informational prefix
- 
-             else
-                Raise_Exception_No_Defer
-                  (E       => Program_Error'Identity,
-                   Message => New_Msg & ": " & Orig_Msg);
-             end if;
-          end;
-       end if;
-    end Raise_From_Controlled_Operation;
- 
-    -------------------------------------------
-    -- Create_Occurrence_From_Signal_Handler --
-    -------------------------------------------
- 
-    function Create_Occurrence_From_Signal_Handler
-      (E : Exception_Id;
-       M : System.Address) return EOA
-    is
-       X : constant EOA := Exception_Propagation.Allocate_Occurrence;
- 
-    begin
-       Exception_Data.Set_Exception_C_Msg (X, E, M);
- 
-       if not ZCX_By_Default then
-          Abort_Defer.all;
-       end if;
- 
-       Complete_Occurrence (X);
-       return X;
-    end Create_Occurrence_From_Signal_Handler;
- 
-    ---------------------------------------------------
-    -- Create_Machine_Occurrence_From_Signal_Handler --
-    ---------------------------------------------------
- 
-    function Create_Machine_Occurrence_From_Signal_Handler
-      (E : Exception_Id;
-       M : System.Address) return System.Address
-    is
-    begin
-       return Create_Occurrence_From_Signal_Handler (E, M).Machine_Occurrence;
-    end Create_Machine_Occurrence_From_Signal_Handler;
- 
-    -------------------------------
-    -- Raise_From_Signal_Handler --
-    -------------------------------
- 
-    procedure Raise_From_Signal_Handler
-      (E : Exception_Id;
-       M : System.Address)
-    is
-    begin
-       Exception_Propagation.Propagate_Exception
-         (Create_Occurrence_From_Signal_Handler (E, M));
-    end Raise_From_Signal_Handler;
- 
-    -------------------------
-    -- Raise_Program_Error --
-    -------------------------
- 
-    procedure Raise_Program_Error
-      (File : System.Address;
-       Line : Integer)
-    is
-    begin
-       Raise_With_Location_And_Msg (Program_Error_Def'Access, File, Line);
-    end Raise_Program_Error;
- 
-    -----------------------------
-    -- Raise_Program_Error_Msg --
-    -----------------------------
- 
-    procedure Raise_Program_Error_Msg
-      (File : System.Address;
-       Line : Integer;
-       Msg  : System.Address)
-    is
-    begin
-       Raise_With_Location_And_Msg
-         (Program_Error_Def'Access, File, Line, M => Msg);
-    end Raise_Program_Error_Msg;
- 
-    -------------------------
-    -- Raise_Storage_Error --
-    -------------------------
- 
-    procedure Raise_Storage_Error
-      (File : System.Address;
-       Line : Integer)
-    is
-    begin
-       Raise_With_Location_And_Msg (Storage_Error_Def'Access, File, Line);
-    end Raise_Storage_Error;
- 
-    -----------------------------
-    -- Raise_Storage_Error_Msg --
-    -----------------------------
- 
-    procedure Raise_Storage_Error_Msg
-      (File : System.Address;
-       Line : Integer;
-       Msg  : System.Address)
-    is
-    begin
-       Raise_With_Location_And_Msg
-         (Storage_Error_Def'Access, File, Line, M => Msg);
-    end Raise_Storage_Error_Msg;
- 
-    ---------------------------------
-    -- Raise_With_Location_And_Msg --
-    ---------------------------------
- 
-    procedure Raise_With_Location_And_Msg
-      (E : Exception_Id;
-       F : System.Address;
-       L : Integer;
-       C : Integer := 0;
-       M : System.Address := System.Null_Address)
-    is
-       X : constant EOA := Exception_Propagation.Allocate_Occurrence;
-    begin
-       Exception_Data.Set_Exception_C_Msg (X, E, F, L, C, M);
- 
-       if not ZCX_By_Default then
-          Abort_Defer.all;
-       end if;
- 
-       Complete_And_Propagate_Occurrence (X);
-    end Raise_With_Location_And_Msg;
- 
-    --------------------
-    -- Raise_With_Msg --
-    --------------------
- 
-    procedure Raise_With_Msg (E : Exception_Id) is
-       Excep : constant EOA := Exception_Propagation.Allocate_Occurrence;
-       Ex    : constant Exception_Occurrence_Access := Get_Current_Excep.all;
-    begin
-       Excep.Exception_Raised := False;
-       Excep.Id               := E;
-       Excep.Num_Tracebacks   := 0;
-       Excep.Pid              := Local_Partition_ID;
- 
-       --  Copy the message from the current exception
-       --  Change the interface to be called with an occurrence ???
- 
-       Excep.Msg_Length                  := Ex.Msg_Length;
-       Excep.Msg (1 .. Excep.Msg_Length) := Ex.Msg (1 .. Ex.Msg_Length);
- 
-       --  The following is a common pattern, should be abstracted
-       --  into a procedure call ???
- 
-       if not ZCX_By_Default then
-          Abort_Defer.all;
-       end if;
- 
-       Complete_And_Propagate_Occurrence (Excep);
-    end Raise_With_Msg;
- 
-    -----------------------------------------
-    -- Calls to Run-Time Check Subprograms --
-    -----------------------------------------
- 
-    procedure Rcheck_CE_Access_Check
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Constraint_Error_Msg (File, Line, 0, Rmsg_00'Address);
-    end Rcheck_CE_Access_Check;
- 
-    procedure Rcheck_CE_Null_Access_Parameter
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Constraint_Error_Msg (File, Line, 0, Rmsg_01'Address);
-    end Rcheck_CE_Null_Access_Parameter;
- 
-    procedure Rcheck_CE_Discriminant_Check
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Constraint_Error_Msg (File, Line, 0, Rmsg_02'Address);
-    end Rcheck_CE_Discriminant_Check;
- 
-    procedure Rcheck_CE_Divide_By_Zero
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Constraint_Error_Msg (File, Line, 0, Rmsg_03'Address);
-    end Rcheck_CE_Divide_By_Zero;
- 
-    procedure Rcheck_CE_Explicit_Raise
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Constraint_Error_Msg (File, Line, 0, Rmsg_04'Address);
-    end Rcheck_CE_Explicit_Raise;
- 
-    procedure Rcheck_CE_Index_Check
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Constraint_Error_Msg (File, Line, 0, Rmsg_05'Address);
-    end Rcheck_CE_Index_Check;
- 
-    procedure Rcheck_CE_Invalid_Data
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Constraint_Error_Msg (File, Line, 0, Rmsg_06'Address);
-    end Rcheck_CE_Invalid_Data;
- 
-    procedure Rcheck_CE_Length_Check
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Constraint_Error_Msg (File, Line, 0, Rmsg_07'Address);
-    end Rcheck_CE_Length_Check;
- 
-    procedure Rcheck_CE_Null_Exception_Id
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Constraint_Error_Msg (File, Line, 0, Rmsg_08'Address);
-    end Rcheck_CE_Null_Exception_Id;
- 
-    procedure Rcheck_CE_Null_Not_Allowed
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Constraint_Error_Msg (File, Line, 0, Rmsg_09'Address);
-    end Rcheck_CE_Null_Not_Allowed;
- 
-    procedure Rcheck_CE_Overflow_Check
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Constraint_Error_Msg (File, Line, 0, Rmsg_10'Address);
-    end Rcheck_CE_Overflow_Check;
- 
-    procedure Rcheck_CE_Partition_Check
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Constraint_Error_Msg (File, Line, 0, Rmsg_11'Address);
-    end Rcheck_CE_Partition_Check;
- 
-    procedure Rcheck_CE_Range_Check
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Constraint_Error_Msg (File, Line, 0, Rmsg_12'Address);
-    end Rcheck_CE_Range_Check;
- 
-    procedure Rcheck_CE_Tag_Check
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Constraint_Error_Msg (File, Line, 0, Rmsg_13'Address);
-    end Rcheck_CE_Tag_Check;
- 
-    procedure Rcheck_PE_Access_Before_Elaboration
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Program_Error_Msg (File, Line, Rmsg_14'Address);
-    end Rcheck_PE_Access_Before_Elaboration;
- 
-    procedure Rcheck_PE_Accessibility_Check
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Program_Error_Msg (File, Line, Rmsg_15'Address);
-    end Rcheck_PE_Accessibility_Check;
- 
-    procedure Rcheck_PE_Address_Of_Intrinsic
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Program_Error_Msg (File, Line, Rmsg_16'Address);
-    end Rcheck_PE_Address_Of_Intrinsic;
- 
-    procedure Rcheck_PE_Aliased_Parameters
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Program_Error_Msg (File, Line, Rmsg_17'Address);
-    end Rcheck_PE_Aliased_Parameters;
- 
-    procedure Rcheck_PE_All_Guards_Closed
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Program_Error_Msg (File, Line, Rmsg_18'Address);
-    end Rcheck_PE_All_Guards_Closed;
- 
-    procedure Rcheck_PE_Bad_Predicated_Generic_Type
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Program_Error_Msg (File, Line, Rmsg_19'Address);
-    end Rcheck_PE_Bad_Predicated_Generic_Type;
- 
-    procedure Rcheck_PE_Current_Task_In_Entry_Body
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Program_Error_Msg (File, Line, Rmsg_20'Address);
-    end Rcheck_PE_Current_Task_In_Entry_Body;
- 
-    procedure Rcheck_PE_Duplicated_Entry_Address
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Program_Error_Msg (File, Line, Rmsg_21'Address);
-    end Rcheck_PE_Duplicated_Entry_Address;
- 
-    procedure Rcheck_PE_Explicit_Raise
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Program_Error_Msg (File, Line, Rmsg_22'Address);
-    end Rcheck_PE_Explicit_Raise;
- 
-    procedure Rcheck_PE_Implicit_Return
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Program_Error_Msg (File, Line, Rmsg_24'Address);
-    end Rcheck_PE_Implicit_Return;
- 
-    procedure Rcheck_PE_Misaligned_Address_Value
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Program_Error_Msg (File, Line, Rmsg_25'Address);
-    end Rcheck_PE_Misaligned_Address_Value;
- 
-    procedure Rcheck_PE_Missing_Return
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Program_Error_Msg (File, Line, Rmsg_26'Address);
-    end Rcheck_PE_Missing_Return;
- 
-    procedure Rcheck_PE_Non_Transportable_Actual
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Program_Error_Msg (File, Line, Rmsg_31'Address);
-    end Rcheck_PE_Non_Transportable_Actual;
- 
-    procedure Rcheck_PE_Overlaid_Controlled_Object
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Program_Error_Msg (File, Line, Rmsg_27'Address);
-    end Rcheck_PE_Overlaid_Controlled_Object;
- 
-    procedure Rcheck_PE_Potentially_Blocking_Operation
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Program_Error_Msg (File, Line, Rmsg_28'Address);
-    end Rcheck_PE_Potentially_Blocking_Operation;
- 
-    procedure Rcheck_PE_Stream_Operation_Not_Allowed
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Program_Error_Msg (File, Line, Rmsg_36'Address);
-    end Rcheck_PE_Stream_Operation_Not_Allowed;
- 
-    procedure Rcheck_PE_Stubbed_Subprogram_Called
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Program_Error_Msg (File, Line, Rmsg_29'Address);
-    end Rcheck_PE_Stubbed_Subprogram_Called;
- 
-    procedure Rcheck_PE_Unchecked_Union_Restriction
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Program_Error_Msg (File, Line, Rmsg_30'Address);
-    end Rcheck_PE_Unchecked_Union_Restriction;
- 
-    procedure Rcheck_SE_Empty_Storage_Pool
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Storage_Error_Msg (File, Line, Rmsg_32'Address);
-    end Rcheck_SE_Empty_Storage_Pool;
- 
-    procedure Rcheck_SE_Explicit_Raise
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Storage_Error_Msg (File, Line, Rmsg_33'Address);
-    end Rcheck_SE_Explicit_Raise;
- 
-    procedure Rcheck_SE_Infinite_Recursion
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Storage_Error_Msg (File, Line, Rmsg_34'Address);
-    end Rcheck_SE_Infinite_Recursion;
- 
-    procedure Rcheck_SE_Object_Too_Large
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Storage_Error_Msg (File, Line, Rmsg_35'Address);
-    end Rcheck_SE_Object_Too_Large;
- 
-    procedure Rcheck_CE_Access_Check_Ext
-      (File : System.Address; Line, Column : Integer)
-    is
-    begin
-       Raise_Constraint_Error_Msg (File, Line, Column, Rmsg_00'Address);
-    end Rcheck_CE_Access_Check_Ext;
- 
-    procedure Rcheck_CE_Index_Check_Ext
-      (File : System.Address; Line, Column, Index, First, Last : Integer)
-    is
-       Msg : constant String :=
-               Rmsg_05 (Rmsg_05'First .. Rmsg_05'Last - 1) & ASCII.LF
-               & "index " & Image (Index) & " not in " & Image (First)
-               & ".." & Image (Last) & ASCII.NUL;
-    begin
-       Raise_Constraint_Error_Msg (File, Line, Column, Msg'Address);
-    end Rcheck_CE_Index_Check_Ext;
- 
-    procedure Rcheck_CE_Invalid_Data_Ext
-      (File : System.Address; Line, Column, Index, First, Last : Integer)
-    is
-       Msg : constant String :=
-               Rmsg_06 (Rmsg_06'First .. Rmsg_06'Last - 1) & ASCII.LF
-               & "value " & Image (Index) & " not in " & Image (First)
-               & ".." & Image (Last) & ASCII.NUL;
-    begin
-       Raise_Constraint_Error_Msg (File, Line, Column, Msg'Address);
-    end Rcheck_CE_Invalid_Data_Ext;
- 
-    procedure Rcheck_CE_Range_Check_Ext
-      (File : System.Address; Line, Column, Index, First, Last : Integer)
-    is
-       Msg : constant String :=
-               Rmsg_12 (Rmsg_12'First .. Rmsg_12'Last - 1) & ASCII.LF
-               & "value " & Image (Index) & " not in " & Image (First)
-               & ".." & Image (Last) & ASCII.NUL;
-    begin
-       Raise_Constraint_Error_Msg (File, Line, Column, Msg'Address);
-    end Rcheck_CE_Range_Check_Ext;
- 
-    procedure Rcheck_PE_Finalize_Raised_Exception
-      (File : System.Address; Line : Integer)
-    is
-       X : constant EOA := Exception_Propagation.Allocate_Occurrence;
- 
-    begin
-       --  This is "finalize/adjust raised exception". This subprogram is always
-       --  called with abort deferred, unlike all other Rcheck_* subprograms, it
-       --  needs to call Raise_Exception_No_Defer.
- 
-       --  This is consistent with Raise_From_Controlled_Operation
- 
-       Exception_Data.Set_Exception_C_Msg
-         (X, Program_Error_Def'Access, File, Line, 0, Rmsg_23'Address);
-       Complete_And_Propagate_Occurrence (X);
-    end Rcheck_PE_Finalize_Raised_Exception;
- 
-    -------------
-    -- Reraise --
-    -------------
- 
-    procedure Reraise is
-       Excep    : constant EOA := Exception_Propagation.Allocate_Occurrence;
-       Saved_MO : constant System.Address := Excep.Machine_Occurrence;
- 
-    begin
-       if not ZCX_By_Default then
-          Abort_Defer.all;
-       end if;
- 
-       Save_Occurrence (Excep.all, Get_Current_Excep.all.all);
-       Excep.Machine_Occurrence := Saved_MO;
-       Complete_And_Propagate_Occurrence (Excep);
-    end Reraise;
- 
-    --------------------------------------
-    -- Reraise_Library_Exception_If_Any --
-    --------------------------------------
- 
-    procedure Reraise_Library_Exception_If_Any is
-       LE : Exception_Occurrence;
- 
-    begin
-       if Library_Exception_Set then
-          LE := Library_Exception;
- 
-          if LE.Id = Null_Id then
-             Raise_Exception_No_Defer
-               (E       => Program_Error'Identity,
-                Message => "finalize/adjust raised exception");
-          else
-             Raise_From_Controlled_Operation (LE);
-          end if;
-       end if;
-    end Reraise_Library_Exception_If_Any;
- 
-    ------------------------
-    -- Reraise_Occurrence --
-    ------------------------
- 
-    procedure Reraise_Occurrence (X : Exception_Occurrence) is
-    begin
-       if X.Id = null then
-          return;
-       else
-          Reraise_Occurrence_Always (X);
-       end if;
-    end Reraise_Occurrence;
- 
-    -------------------------------
-    -- Reraise_Occurrence_Always --
-    -------------------------------
- 
-    procedure Reraise_Occurrence_Always (X : Exception_Occurrence) is
-    begin
-       if not ZCX_By_Default then
-          Abort_Defer.all;
-       end if;
- 
-       Reraise_Occurrence_No_Defer (X);
-    end Reraise_Occurrence_Always;
- 
-    ---------------------------------
-    -- Reraise_Occurrence_No_Defer --
-    ---------------------------------
- 
-    procedure Reraise_Occurrence_No_Defer (X : Exception_Occurrence) is
-       Excep    : constant EOA := Exception_Propagation.Allocate_Occurrence;
-       Saved_MO : constant System.Address := Excep.Machine_Occurrence;
-    begin
-       Save_Occurrence (Excep.all, X);
-       Excep.Machine_Occurrence := Saved_MO;
-       Complete_And_Propagate_Occurrence (Excep);
-    end Reraise_Occurrence_No_Defer;
- 
-    ---------------------
-    -- Save_Occurrence --
-    ---------------------
- 
-    procedure Save_Occurrence
-      (Target : out Exception_Occurrence;
-       Source : Exception_Occurrence)
-    is
-    begin
-       --  As the machine occurrence might be a data that must be finalized
-       --  (outside any Ada mechanism), do not copy it
- 
-       Target.Id                 := Source.Id;
-       Target.Machine_Occurrence := System.Null_Address;
-       Target.Msg_Length         := Source.Msg_Length;
-       Target.Num_Tracebacks     := Source.Num_Tracebacks;
-       Target.Pid                := Source.Pid;
- 
-       Target.Msg (1 .. Target.Msg_Length) :=
-         Source.Msg (1 .. Target.Msg_Length);
- 
-       Target.Tracebacks (1 .. Target.Num_Tracebacks) :=
-         Source.Tracebacks (1 .. Target.Num_Tracebacks);
-    end Save_Occurrence;
- 
-    function Save_Occurrence (Source : Exception_Occurrence) return EOA is
-       Target : constant EOA := new Exception_Occurrence;
-    begin
-       Save_Occurrence (Target.all, Source);
-       return Target;
-    end Save_Occurrence;
- 
-    -------------------
-    -- String_To_EId --
-    -------------------
- 
-    function String_To_EId (S : String) return Exception_Id
-      renames Stream_Attributes.String_To_EId;
- 
-    ------------------
-    -- String_To_EO --
-    ------------------
- 
-    function String_To_EO (S : String) return Exception_Occurrence
-      renames Stream_Attributes.String_To_EO;
- 
-    ---------------
-    -- To_Stderr --
-    ---------------
- 
-    procedure To_Stderr (C : Character) is
-       procedure Put_Char_Stderr (C : Character);
-       pragma Import (C, Put_Char_Stderr, "put_char_stderr");
-    begin
-       Put_Char_Stderr (C);
-    end To_Stderr;
- 
-    procedure To_Stderr (S : String) is
-    begin
-       for J in S'Range loop
-          if S (J) /= ASCII.CR then
-             To_Stderr (S (J));
-          end if;
-       end loop;
-    end To_Stderr;
- 
-    -------------------------
-    -- Transfer_Occurrence --
-    -------------------------
- 
-    procedure Transfer_Occurrence
-      (Target : Exception_Occurrence_Access;
-       Source : Exception_Occurrence)
-    is
-    begin
-       Save_Occurrence (Target.all, Source);
-    end Transfer_Occurrence;
- 
-    ------------------------
-    -- Triggered_By_Abort --
-    ------------------------
- 
-    function Triggered_By_Abort return Boolean is
-       Ex : constant Exception_Occurrence_Access := Get_Current_Excep.all;
-    begin
-       return Ex /= null
-         and then Exception_Identity (Ex.all) = Standard'Abort_Signal'Identity;
-    end Triggered_By_Abort;
- 
-    -------------------------
-    -- Wide_Exception_Name --
-    -------------------------
- 
-    WC_Encoding : Character;
-    pragma Import (C, WC_Encoding, "__gl_wc_encoding");
-    --  Encoding method for source, as exported by binder
- 
-    function Wide_Exception_Name
-      (Id : Exception_Id) return Wide_String
-    is
-       S : constant String := Exception_Name (Id);
-       W : Wide_String (1 .. S'Length);
-       L : Natural;
-    begin
-       String_To_Wide_String
-         (S, W, L, Get_WC_Encoding_Method (WC_Encoding));
-       return W (1 .. L);
-    end Wide_Exception_Name;
- 
-    function Wide_Exception_Name
-      (X : Exception_Occurrence) return Wide_String
-    is
-       S : constant String := Exception_Name (X);
-       W : Wide_String (1 .. S'Length);
-       L : Natural;
-    begin
-       String_To_Wide_String
-         (S, W, L, Get_WC_Encoding_Method (WC_Encoding));
-       return W (1 .. L);
-    end Wide_Exception_Name;
- 
-    ----------------------------
-    -- Wide_Wide_Exception_Name --
-    -----------------------------
- 
-    function Wide_Wide_Exception_Name
-      (Id : Exception_Id) return Wide_Wide_String
-    is
-       S : constant String := Exception_Name (Id);
-       W : Wide_Wide_String (1 .. S'Length);
-       L : Natural;
-    begin
-       String_To_Wide_Wide_String
-         (S, W, L, Get_WC_Encoding_Method (WC_Encoding));
-       return W (1 .. L);
-    end Wide_Wide_Exception_Name;
- 
-    function Wide_Wide_Exception_Name
-      (X : Exception_Occurrence) return Wide_Wide_String
-    is
-       S : constant String := Exception_Name (X);
-       W : Wide_Wide_String (1 .. S'Length);
-       L : Natural;
-    begin
-       String_To_Wide_Wide_String
-         (S, W, L, Get_WC_Encoding_Method (WC_Encoding));
-       return W (1 .. L);
-    end Wide_Wide_Exception_Name;
- 
-    --------------------------
-    -- Code_Address_For_ZZZ --
-    --------------------------
- 
-    --  This function gives us the end of the PC range for addresses
-    --  within the exception unit itself. We hope that gigi/gcc keeps all the
-    --  procedures in their original order.
- 
-    function Code_Address_For_ZZZ return System.Address is
-    begin
-       <<Start_Of_ZZZ>>
-       return Start_Of_ZZZ'Address;
-    end Code_Address_For_ZZZ;
- 
- end Ada.Exceptions;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-except-2005.ads gcc-8.1.0/gcc/ada/a-except-2005.ads
*** gcc-7.3.0/gcc/ada/a-except-2005.ads	Fri Oct 16 12:32:52 2015
--- gcc-8.1.0/gcc/ada/a-except-2005.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,349 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                       A D A . E X C E P T I O N S                        --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2015, Free Software Foundation, 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 version of Ada.Exceptions fully supports Ada 95 and later language
- --  versions.  It is used in all situations except for the build of the
- --  compiler and other basic tools. For these latter builds, we use an
- --  Ada 95-only version.
- 
- --  The reason for this splitting off of a separate version is to support
- --  older bootstrap compilers that do not support Ada 2005 features, and
- --  Ada.Exceptions is part of the compiler sources.
- 
- pragma Polling (Off);
- --  We must turn polling off for this unit, because otherwise we get
- --  elaboration circularities with ourself.
- 
- with System;
- with System.Parameters;
- with System.Standard_Library;
- with System.Traceback_Entries;
- 
- package Ada.Exceptions is
-    pragma Preelaborate;
-    --  In accordance with Ada 2005 AI-362.
- 
-    type Exception_Id is private;
-    pragma Preelaborable_Initialization (Exception_Id);
- 
-    Null_Id : constant Exception_Id;
- 
-    type Exception_Occurrence is limited private;
-    pragma Preelaborable_Initialization (Exception_Occurrence);
- 
-    type Exception_Occurrence_Access is access all Exception_Occurrence;
- 
-    Null_Occurrence : constant Exception_Occurrence;
- 
-    function Exception_Name (Id : Exception_Id) return String;
- 
-    function Exception_Name (X : Exception_Occurrence) return String;
- 
-    function Wide_Exception_Name
-      (Id : Exception_Id) return Wide_String;
-    pragma Ada_05 (Wide_Exception_Name);
- 
-    function Wide_Exception_Name
-      (X : Exception_Occurrence) return Wide_String;
-    pragma Ada_05 (Wide_Exception_Name);
- 
-    function Wide_Wide_Exception_Name
-      (Id : Exception_Id) return Wide_Wide_String;
-    pragma Ada_05 (Wide_Wide_Exception_Name);
- 
-    function Wide_Wide_Exception_Name
-      (X : Exception_Occurrence) return Wide_Wide_String;
-    pragma Ada_05 (Wide_Wide_Exception_Name);
- 
-    procedure Raise_Exception (E : Exception_Id; Message : String := "");
-    pragma No_Return (Raise_Exception);
-    --  Note: In accordance with AI-466, CE is raised if E = Null_Id
- 
-    function Exception_Message (X : Exception_Occurrence) return String;
- 
-    procedure Reraise_Occurrence (X : Exception_Occurrence);
-    --  Note: it would be really nice to give a pragma No_Return for this
-    --  procedure, but it would be wrong, since Reraise_Occurrence does return
-    --  if the argument is the null exception occurrence. See also procedure
-    --  Reraise_Occurrence_Always in the private part of this package.
- 
-    function Exception_Identity (X : Exception_Occurrence) return Exception_Id;
- 
-    function Exception_Information (X : Exception_Occurrence) return String;
-    --  The format of the exception information is as follows:
-    --
-    --    exception name (as in Exception_Name)
-    --    message (or a null line if no message)
-    --    PID=nnnn
-    --    0xyyyyyyyy 0xyyyyyyyy ...
-    --
-    --  The lines are separated by a ASCII.LF character
-    --
-    --  The nnnn is the partition Id given as decimal digits
-    --
-    --  The 0x... line represents traceback program counter locations,
-    --  in order with the first one being the exception location.
- 
-    --  Note on ordering: the compiler uses the Save_Occurrence procedure, but
-    --  not the function from Rtsfind, so it is important that the procedure
-    --  come first, since Rtsfind finds the first matching entity.
- 
-    procedure Save_Occurrence
-      (Target : out Exception_Occurrence;
-       Source : Exception_Occurrence);
- 
-    function Save_Occurrence
-      (Source : Exception_Occurrence)
-       return   Exception_Occurrence_Access;
- 
-    --  Ada 2005 (AI-438): The language revision introduces the following
-    --  subprograms and attribute definitions. We do not provide them
-    --  explicitly. instead, the corresponding stream attributes are made
-    --  available through a pragma Stream_Convert in the private part.
- 
-    --  procedure Read_Exception_Occurrence
-    --    (Stream : not null access Ada.Streams.Root_Stream_Type'Class;
-    --     Item   : out Exception_Occurrence);
- 
-    --  procedure Write_Exception_Occurrence
-    --    (Stream : not null access Ada.Streams.Root_Stream_Type'Class;
-    --     Item   : Exception_Occurrence);
- 
-    --  for Exception_Occurrence'Read use Read_Exception_Occurrence;
-    --  for Exception_Occurrence'Write use Write_Exception_Occurrence;
- 
- private
-    package SSL renames System.Standard_Library;
-    package SP renames System.Parameters;
- 
-    subtype EOA is Exception_Occurrence_Access;
- 
-    Exception_Msg_Max_Length : constant := SP.Default_Exception_Msg_Max_Length;
- 
-    ------------------
-    -- Exception_Id --
-    ------------------
- 
-    subtype Code_Loc is System.Address;
-    --  Code location used in building exception tables and for call addresses
-    --  when propagating an exception. Values of this type are created by using
-    --  Label'Address or extracted from machine states using Get_Code_Loc.
- 
-    Null_Loc : constant Code_Loc := System.Null_Address;
-    --  Null code location, used to flag outer level frame
- 
-    type Exception_Id is new SSL.Exception_Data_Ptr;
- 
-    function EId_To_String (X : Exception_Id) return String;
-    function String_To_EId (S : String) return Exception_Id;
-    pragma Stream_Convert (Exception_Id, String_To_EId, EId_To_String);
-    --  Functions for implementing Exception_Id stream attributes
- 
-    Null_Id : constant Exception_Id := null;
- 
-    -------------------------
-    -- Private Subprograms --
-    -------------------------
- 
-    function Exception_Name_Simple (X : Exception_Occurrence) return String;
-    --  Like Exception_Name, but returns the simple non-qualified name of the
-    --  exception. This is used to implement the Exception_Name function in
-    --  Current_Exceptions (the DEC compatible unit). It is called from the
-    --  compiler generated code (using Rtsfind, which does not respect the
-    --  private barrier, so we can place this function in the private part
-    --  where the compiler can find it, but the spec is unchanged.)
- 
-    procedure Raise_Exception_Always (E : Exception_Id; Message : String := "");
-    pragma No_Return (Raise_Exception_Always);
-    pragma Export (Ada, Raise_Exception_Always, "__gnat_raise_exception");
-    --  This differs from Raise_Exception only in that the caller has determined
-    --  that for sure the parameter E is not null, and that therefore no check
-    --  for Null_Id is required. The expander converts Raise_Exception calls to
-    --  Raise_Exception_Always if it can determine this is the case. The Export
-    --  allows this routine to be accessed from Pure units.
- 
-    procedure Raise_From_Signal_Handler
-      (E : Exception_Id;
-       M : System.Address);
-    pragma Export
-      (Ada, Raise_From_Signal_Handler,
-            "ada__exceptions__raise_from_signal_handler");
-    pragma No_Return (Raise_From_Signal_Handler);
-    --  This routine is used to raise an exception from a signal handler. The
-    --  signal handler has already stored the machine state (i.e. the state that
-    --  corresponds to the location at which the signal was raised). E is the
-    --  Exception_Id specifying what exception is being raised, and M is a
-    --  pointer to a null-terminated string which is the message to be raised.
-    --  Note that this routine never returns, so it is permissible to simply
-    --  jump to this routine, rather than call it. This may be appropriate for
-    --  systems where the right way to get out of signal handler is to alter the
-    --  PC value in the machine state or in some other way ask the operating
-    --  system to return here rather than to the original location.
- 
-    procedure Raise_From_Controlled_Operation
-      (X : Ada.Exceptions.Exception_Occurrence);
-    pragma No_Return (Raise_From_Controlled_Operation);
-    pragma Export
-      (Ada, Raise_From_Controlled_Operation,
-            "__gnat_raise_from_controlled_operation");
-    --  Raise Program_Error, providing information about X (an exception raised
-    --  during a controlled operation) in the exception message.
- 
-    procedure Reraise_Library_Exception_If_Any;
-    pragma Export
-      (Ada, Reraise_Library_Exception_If_Any,
-            "__gnat_reraise_library_exception_if_any");
-    --  If there was an exception raised during library-level finalization,
-    --  reraise the exception.
- 
-    procedure Reraise_Occurrence_Always (X : Exception_Occurrence);
-    pragma No_Return (Reraise_Occurrence_Always);
-    --  This differs from Raise_Occurrence only in that the caller guarantees
-    --  that for sure the parameter X is not the null occurrence, and that
-    --  therefore this procedure cannot return. The expander uses this routine
-    --  in the translation of a raise statement with no parameter (reraise).
- 
-    procedure Reraise_Occurrence_No_Defer (X : Exception_Occurrence);
-    pragma No_Return (Reraise_Occurrence_No_Defer);
-    --  Exactly like Reraise_Occurrence, except that abort is not deferred
-    --  before the call and the parameter X is known not to be the null
-    --  occurrence. This is used in generated code when it is known that abort
-    --  is already deferred.
- 
-    function Triggered_By_Abort return Boolean;
-    --  Determine whether the current exception (if it exists) is an instance of
-    --  Standard'Abort_Signal.
- 
-    -----------------------
-    -- Polling Interface --
-    -----------------------
- 
-    --  The GNAT compiler has an option to generate polling calls to the Poll
-    --  routine in this package. Specifying the -gnatP option for a compilation
-    --  causes a call to Ada.Exceptions.Poll to be generated on every subprogram
-    --  entry and on every iteration of a loop, thus avoiding the possibility of
-    --  a case of unbounded time between calls.
- 
-    --  This polling interface may be used for instrumentation or debugging
-    --  purposes (e.g. implementing watchpoints in software or in the debugger).
- 
-    --  In the GNAT technology itself, this interface is used to implement
-    --  immediate asynchronous transfer of control and immediate abort on
-    --  targets which do not provide for one thread interrupting another.
- 
-    --  Note: this used to be in a separate unit called System.Poll, but that
-    --  caused horrible circular elaboration problems between System.Poll and
-    --  Ada.Exceptions.
- 
-    procedure Poll;
-    --  Check for asynchronous abort. Note that we do not inline the body.
-    --  This makes the interface more useful for debugging purposes.
- 
-    --------------------------
-    -- Exception_Occurrence --
-    --------------------------
- 
-    package TBE renames System.Traceback_Entries;
- 
-    Max_Tracebacks : constant := 50;
-    --  Maximum number of trace backs stored in exception occurrence
- 
-    subtype Tracebacks_Array is TBE.Tracebacks_Array (1 .. Max_Tracebacks);
-    --  Traceback array stored in exception occurrence
- 
-    type Exception_Occurrence is record
-       Id : Exception_Id;
-       --  Exception_Identity for this exception occurrence
- 
-       Machine_Occurrence : System.Address;
-       --  The underlying machine occurrence. For GCC, this corresponds to the
-       --  _Unwind_Exception structure address.
- 
-       Msg_Length : Natural := 0;
-       --  Length of message (zero = no message)
- 
-       Msg : String (1 .. Exception_Msg_Max_Length);
-       --  Characters of message
- 
-       Exception_Raised : Boolean := False;
-       --  Set to true to indicate that this exception occurrence has actually
-       --  been raised. When an exception occurrence is first created, this is
-       --  set to False, then when it is processed by Raise_Current_Exception,
-       --  it is set to True. If Raise_Current_Exception is used to raise an
-       --  exception for which this flag is already True, then it knows that
-       --  it is dealing with the reraise case (which is useful to distinguish
-       --  for exception tracing purposes).
- 
-       Pid : Natural := 0;
-       --  Partition_Id for partition raising exception
- 
-       Num_Tracebacks : Natural range 0 .. Max_Tracebacks := 0;
-       --  Number of traceback entries stored
- 
-       Tracebacks : Tracebacks_Array;
-       --  Stored tracebacks (in Tracebacks (1 .. Num_Tracebacks))
-    end record;
- 
-    function "=" (Left, Right : Exception_Occurrence) return Boolean
-      is abstract;
-    --  Don't allow comparison on exception occurrences, we should not need
-    --  this, and it would not work right, because of the Msg and Tracebacks
-    --  fields which have unused entries not copied by Save_Occurrence.
- 
-    function Get_Exception_Machine_Occurrence
-      (X : Exception_Occurrence) return System.Address;
-    pragma Export (Ada, Get_Exception_Machine_Occurrence,
-                   "__gnat_get_exception_machine_occurrence");
-    --  Get the machine occurrence corresponding to an exception occurrence.
-    --  It is Null_Address if there is no machine occurrence (in runtimes that
-    --  doesn't use GCC mechanism) or if it has been lost (Save_Occurrence
-    --  doesn't save the machine occurrence).
- 
-    function EO_To_String (X : Exception_Occurrence) return String;
-    function String_To_EO (S : String) return Exception_Occurrence;
-    pragma Stream_Convert (Exception_Occurrence, String_To_EO, EO_To_String);
-    --  Functions for implementing Exception_Occurrence stream attributes
- 
-    Null_Occurrence : constant Exception_Occurrence := (
-      Id                 => null,
-      Machine_Occurrence => System.Null_Address,
-      Msg_Length         => 0,
-      Msg                => (others => ' '),
-      Exception_Raised   => False,
-      Pid                => 0,
-      Num_Tracebacks     => 0,
-      Tracebacks         => (others => TBE.Null_TB_Entry));
- 
- end Ada.Exceptions;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-except.adb gcc-8.1.0/gcc/ada/a-except.adb
*** gcc-7.3.0/gcc/ada/a-except.adb	Tue Oct 20 12:02:30 2015
--- gcc-8.1.0/gcc/ada/a-except.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,1654 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                       A D A . E X C E P T I O N S                        --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 Compiler_Unit_Warning;
- 
- pragma Style_Checks (All_Checks);
- --  No subprogram ordering check, due to logical grouping
- 
- pragma Polling (Off);
- --  We must turn polling off for this unit, because otherwise we get
- --  elaboration circularities with System.Exception_Tables.
- 
- with System;                  use System;
- with System.Exceptions_Debug; use System.Exceptions_Debug;
- with System.Standard_Library; use System.Standard_Library;
- with System.Soft_Links;       use System.Soft_Links;
- 
- package body Ada.Exceptions is
- 
-    pragma Suppress (All_Checks);
-    --  We definitely do not want exceptions occurring within this unit, or we
-    --  are in big trouble. If an exceptional situation does occur, better that
-    --  it not be raised, since raising it can cause confusing chaos.
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    --  Note: the exported subprograms in this package body are called directly
-    --  from C clients using the given external name, even though they are not
-    --  technically visible in the Ada sense.
- 
-    procedure Process_Raise_Exception (E : Exception_Id);
-    pragma No_Return (Process_Raise_Exception);
-    --  This is the lowest level raise routine. It raises the exception
-    --  referenced by Current_Excep.all in the TSD, without deferring abort
-    --  (the caller must ensure that abort is deferred on entry).
- 
-    procedure To_Stderr (S : String);
-    pragma Export (Ada, To_Stderr, "__gnat_to_stderr");
-    --  Little routine to output string to stderr that is also used in the
-    --  tasking run time.
- 
-    procedure To_Stderr (C : Character);
-    pragma Inline (To_Stderr);
-    pragma Export (Ada, To_Stderr, "__gnat_to_stderr_char");
-    --  Little routine to output a character to stderr, used by some of the
-    --  separate units below.
- 
-    package Exception_Data is
- 
-       -----------------------------------
-       -- Exception Message Subprograms --
-       -----------------------------------
- 
-       procedure Set_Exception_C_Msg
-         (Excep  : EOA;
-          Id     : Exception_Id;
-          Msg1   : System.Address;
-          Line   : Integer        := 0;
-          Column : Integer        := 0;
-          Msg2   : System.Address := System.Null_Address);
-       --  This routine is called to setup the exception referenced by the
-       --  Current_Excep field in the TSD to contain the indicated Id value
-       --  and message. Msg1 is a null terminated string which is generated
-       --  as the exception message. If line is non-zero, then a colon and
-       --  the decimal representation of this integer is appended to the
-       --  message. Ditto for Column. When Msg2 is non-null, a space and this
-       --  additional null terminated string is added to the message.
- 
-       procedure Set_Exception_Msg
-         (Excep   : EOA;
-          Id      : Exception_Id;
-          Message : String);
-       --  This routine is called to setup the exception referenced by the
-       --  Current_Excep field in the TSD to contain the indicated Id value and
-       --  message. Message is a string which is generated as the exception
-       --  message.
- 
-       ---------------------------------------
-       -- Exception Information Subprograms --
-       ---------------------------------------
- 
-       function Untailored_Exception_Information
-         (X : Exception_Occurrence) return String;
-       --  This is used by Stream_Attributes.EO_To_String to convert an
-       --  Exception_Occurrence to a String for the stream attributes.
-       --  String_To_EO understands the format, as documented here.
-       --
-       --  The format of the string is as follows:
-       --
-       --    raised <exception name> : <message>
-       --    (" : <message>" is present only if Exception_Message is not empty)
-       --    PID=nnnn (only if nonzero)
-       --    Call stack traceback locations:  (only if at least one location)
-       --    <0xyyyyyyyy 0xyyyyyyyy ...>      (is recorded)
-       --
-       --  The lines are separated by a ASCII.LF character.
-       --  The nnnn is the partition Id given as decimal digits.
-       --  The 0x... line represents traceback program counter locations, in
-       --  execution order with the first one being the exception location.
-       --
-       --  The Exception_Name and Message lines are omitted in the abort
-       --  signal case, since this is not really an exception.
-       --
-       --  Note: If the format of the generated string is changed, please note
-       --  that an equivalent modification to the routine String_To_EO must be
-       --  made to preserve proper functioning of the stream attributes.
- 
-       function Exception_Information (X : Exception_Occurrence) return String;
-       --  This is the implementation of Ada.Exceptions.Exception_Information,
-       --  as defined in the Ada RM.
-       --
-       --  If no traceback decorator (see GNAT.Exception_Traces) is currently
-       --  in place, this is the same as Untailored_Exception_Information.
-       --  Otherwise, the decorator is used to produce a symbolic traceback
-       --  instead of hexadecimal addresses.
-       --
-       --  Note that unlike Untailored_Exception_Information, there is no need
-       --  to keep the output of Exception_Information stable for streaming
-       --  purposes, and in fact the output differs across platforms.
- 
-    end Exception_Data;
- 
-    package Exception_Traces is
- 
-       -------------------------------------------------
-       -- Run-Time Exception Notification Subprograms --
-       -------------------------------------------------
- 
-       --  These subprograms provide a common run-time interface to trigger the
-       --  actions required when an exception is about to be propagated (e.g.
-       --  user specified actions or output of exception information). They are
-       --  exported to be usable by the Ada exception handling personality
-       --  routine when the GCC 3 mechanism is used.
- 
-       procedure Notify_Handled_Exception (Excep : EOA);
-       pragma Export
-         (C, Notify_Handled_Exception, "__gnat_notify_handled_exception");
-       --  This routine is called for a handled occurrence is about to be
-       --  propagated.
- 
-       procedure Notify_Unhandled_Exception (Excep : EOA);
-       pragma Export
-         (C, Notify_Unhandled_Exception, "__gnat_notify_unhandled_exception");
-       --  This routine is called when an unhandled occurrence is about to be
-       --  propagated.
- 
-       procedure Unhandled_Exception_Terminate (Excep : EOA);
-       pragma No_Return (Unhandled_Exception_Terminate);
-       --  This procedure is called to terminate program execution following an
-       --  unhandled exception. The exception information, including traceback
-       --  if available is output, and execution is then terminated. Note that
-       --  at the point where this routine is called, the stack has typically
-       --  been destroyed.
- 
-    end Exception_Traces;
- 
-    package Stream_Attributes is
- 
-       ----------------------------------
-       -- Stream Attribute Subprograms --
-       ----------------------------------
- 
-       function EId_To_String (X : Exception_Id) return String;
-       function String_To_EId (S : String) return Exception_Id;
-       --  Functions for implementing Exception_Id stream attributes
- 
-       function EO_To_String (X : Exception_Occurrence) return String;
-       function String_To_EO (S : String) return Exception_Occurrence;
-       --  Functions for implementing Exception_Occurrence stream
-       --  attributes
- 
-    end Stream_Attributes;
- 
-    procedure Raise_Current_Excep (E : Exception_Id);
-    pragma No_Return (Raise_Current_Excep);
-    pragma Export (C, Raise_Current_Excep, "__gnat_raise_nodefer_with_msg");
-    --  This is a simple wrapper to Process_Raise_Exception.
-    --
-    --  This external name for Raise_Current_Excep is historical, and probably
-    --  should be changed but for now we keep it, because gdb and gigi know
-    --  about it.
- 
-    procedure Raise_Exception_No_Defer
-       (E       : Exception_Id;
-        Message : String := "");
-    pragma Export
-     (Ada, Raise_Exception_No_Defer,
-      "ada__exceptions__raise_exception_no_defer");
-    pragma No_Return (Raise_Exception_No_Defer);
-    --  Similar to Raise_Exception, but with no abort deferral
- 
-    procedure Raise_With_Msg (E : Exception_Id);
-    pragma No_Return (Raise_With_Msg);
-    pragma Export (C, Raise_With_Msg, "__gnat_raise_with_msg");
-    --  Raises an exception with given exception id value. A message is
-    --  associated with the raise, and has already been stored in the exception
-    --  occurrence referenced by the Current_Excep in the TSD. Abort is deferred
-    --  before the raise call.
- 
-    procedure Raise_With_Location_And_Msg
-      (E : Exception_Id;
-       F : System.Address;
-       L : Integer;
-       M : System.Address := System.Null_Address);
-    pragma No_Return (Raise_With_Location_And_Msg);
-    --  Raise an exception with given exception id value. A filename and line
-    --  number is associated with the raise and is stored in the exception
-    --  occurrence and in addition a string message M is appended to this
-    --  if M is not null.
- 
-    procedure Raise_Constraint_Error
-      (File : System.Address;
-       Line : Integer);
-    pragma No_Return (Raise_Constraint_Error);
-    pragma Export
-      (C, Raise_Constraint_Error, "__gnat_raise_constraint_error");
-    --  Raise constraint error with file:line information
- 
-    procedure Raise_Constraint_Error_Msg
-      (File : System.Address;
-       Line : Integer;
-       Msg  : System.Address);
-    pragma No_Return (Raise_Constraint_Error_Msg);
-    pragma Export
-      (C, Raise_Constraint_Error_Msg, "__gnat_raise_constraint_error_msg");
-    --  Raise constraint error with file:line + msg information
- 
-    procedure Raise_Program_Error
-      (File : System.Address;
-       Line : Integer);
-    pragma No_Return (Raise_Program_Error);
-    pragma Export
-      (C, Raise_Program_Error, "__gnat_raise_program_error");
-    --  Raise program error with file:line information
- 
-    procedure Raise_Program_Error_Msg
-      (File : System.Address;
-       Line : Integer;
-       Msg  : System.Address);
-    pragma No_Return (Raise_Program_Error_Msg);
-    pragma Export
-      (C, Raise_Program_Error_Msg, "__gnat_raise_program_error_msg");
-    --  Raise program error with file:line + msg information
- 
-    procedure Raise_Storage_Error
-      (File : System.Address;
-       Line : Integer);
-    pragma No_Return (Raise_Storage_Error);
-    pragma Export
-      (C, Raise_Storage_Error, "__gnat_raise_storage_error");
-    --  Raise storage error with file:line information
- 
-    procedure Raise_Storage_Error_Msg
-      (File : System.Address;
-       Line : Integer;
-       Msg  : System.Address);
-    pragma No_Return (Raise_Storage_Error_Msg);
-    pragma Export
-      (C, Raise_Storage_Error_Msg, "__gnat_raise_storage_error_msg");
-    --  Raise storage error with file:line + reason msg information
- 
-    --  The exception raising process and the automatic tracing mechanism rely
-    --  on some careful use of flags attached to the exception occurrence. The
-    --  graph below illustrates the relations between the Raise_ subprograms
-    --  and identifies the points where basic flags such as Exception_Raised
-    --  are initialized.
-    --
-    --  (i) signs indicate the flags initialization points. R stands for Raise,
-    --  W for With, and E for Exception.
-    --
-    --                   R_No_Msg    R_E   R_Pe  R_Ce  R_Se
-    --                       |        |     |     |     |
-    --                       +--+  +--+     +---+ | +---+
-    --                          |  |            | | |
-    --     R_E_No_Defer(i)    R_W_Msg(i)       R_W_Loc
-    --           |               |              |   |
-    --           +------------+  |  +-----------+   +--+
-    --                        |  |  |                  |
-    --                        |  |  |             Set_E_C_Msg(i)
-    --                        |  |  |
-    --                   Raise_Current_Excep
- 
-    procedure Reraise;
-    pragma No_Return (Reraise);
-    pragma Export (C, Reraise, "__gnat_reraise");
-    --  Reraises the exception referenced by the Current_Excep field of the TSD
-    --  (all fields of this exception occurrence are set). Abort is deferred
-    --  before the reraise operation.
- 
-    procedure Transfer_Occurrence
-      (Target : Exception_Occurrence_Access;
-       Source : Exception_Occurrence);
-    pragma Export (C, Transfer_Occurrence, "__gnat_transfer_occurrence");
-    --  Called from System.Tasking.RendezVous.Exceptional_Complete_RendezVous
-    --  to setup Target from Source as an exception to be propagated in the
-    --  caller task. Target is expected to be a pointer to the fixed TSD
-    --  occurrence for this task.
- 
-    --------------------------------
-    -- Run-Time Check Subprograms --
-    --------------------------------
- 
-    --  These subprograms raise a specific exception with a reason message
-    --  attached. The parameters are the file name and line number in each
-    --  case. The names are defined by Exp_Ch11.Get_RT_Exception_Name.
- 
-    --  Note on ordering of these subprograms. Normally in the Ada.Exceptions
-    --  units we do not care about the ordering of entries for Rcheck
-    --  subprograms, and the normal approach is to keep them in the same
-    --  order as declarations in Types.
- 
-    --  This section is an IMPORTANT EXCEPTION. It is required by the .Net
-    --  runtime that the routine Rcheck_PE_Finalize_Raise_Exception is at the
-    --  end of the list (for reasons that are documented in the exceptmsg.awk
-    --  script which takes care of generating the required exception data).
- 
-    procedure Rcheck_CE_Access_Check                   -- 00
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_CE_Null_Access_Parameter          -- 01
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_CE_Discriminant_Check             -- 02
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_CE_Divide_By_Zero                 -- 03
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_CE_Explicit_Raise                 -- 04
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_CE_Index_Check                    -- 05
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_CE_Invalid_Data                   -- 06
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_CE_Length_Check                   -- 07
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_CE_Null_Exception_Id              -- 08
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_CE_Null_Not_Allowed               -- 09
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_CE_Overflow_Check                 -- 10
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_CE_Partition_Check                -- 11
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_CE_Range_Check                    -- 12
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_CE_Tag_Check                      -- 13
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_PE_Access_Before_Elaboration      -- 14
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_PE_Accessibility_Check            -- 15
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_PE_Address_Of_Intrinsic           -- 16
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_PE_Aliased_Parameters             -- 17
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_PE_All_Guards_Closed              -- 18
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_PE_Bad_Predicated_Generic_Type    -- 19
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_PE_Current_Task_In_Entry_Body     -- 20
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_PE_Duplicated_Entry_Address       -- 21
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_PE_Explicit_Raise                 -- 22
-      (File : System.Address; Line : Integer);
- 
-    procedure Rcheck_PE_Implicit_Return                -- 24
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_PE_Misaligned_Address_Value       -- 25
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_PE_Missing_Return                 -- 26
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_PE_Overlaid_Controlled_Object     -- 27
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_PE_Potentially_Blocking_Operation -- 28
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_PE_Stubbed_Subprogram_Called      -- 29
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_PE_Unchecked_Union_Restriction    -- 30
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_PE_Non_Transportable_Actual       -- 31
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_SE_Empty_Storage_Pool             -- 32
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_SE_Explicit_Raise                 -- 33
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_SE_Infinite_Recursion             -- 34
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_SE_Object_Too_Large               -- 35
-      (File : System.Address; Line : Integer);
-    procedure Rcheck_PE_Stream_Operation_Not_Allowed   -- 36
-      (File : System.Address; Line : Integer);
- 
-    procedure Rcheck_PE_Finalize_Raised_Exception      -- 23
-      (File : System.Address; Line : Integer);
-    --  This routine is separated out because it has quite different behavior
-    --  from the others. This is the "finalize/adjust raised exception". This
-    --  subprogram is always called with abort deferred, unlike all other
-    --  Rcheck_* subprograms, it needs to call Raise_Exception_No_Defer.
- 
-    pragma Export (C, Rcheck_CE_Access_Check,
-                   "__gnat_rcheck_CE_Access_Check");
-    pragma Export (C, Rcheck_CE_Null_Access_Parameter,
-                   "__gnat_rcheck_CE_Null_Access_Parameter");
-    pragma Export (C, Rcheck_CE_Discriminant_Check,
-                   "__gnat_rcheck_CE_Discriminant_Check");
-    pragma Export (C, Rcheck_CE_Divide_By_Zero,
-                   "__gnat_rcheck_CE_Divide_By_Zero");
-    pragma Export (C, Rcheck_CE_Explicit_Raise,
-                   "__gnat_rcheck_CE_Explicit_Raise");
-    pragma Export (C, Rcheck_CE_Index_Check,
-                   "__gnat_rcheck_CE_Index_Check");
-    pragma Export (C, Rcheck_CE_Invalid_Data,
-                   "__gnat_rcheck_CE_Invalid_Data");
-    pragma Export (C, Rcheck_CE_Length_Check,
-                   "__gnat_rcheck_CE_Length_Check");
-    pragma Export (C, Rcheck_CE_Null_Exception_Id,
-                   "__gnat_rcheck_CE_Null_Exception_Id");
-    pragma Export (C, Rcheck_CE_Null_Not_Allowed,
-                   "__gnat_rcheck_CE_Null_Not_Allowed");
-    pragma Export (C, Rcheck_CE_Overflow_Check,
-                   "__gnat_rcheck_CE_Overflow_Check");
-    pragma Export (C, Rcheck_CE_Partition_Check,
-                   "__gnat_rcheck_CE_Partition_Check");
-    pragma Export (C, Rcheck_CE_Range_Check,
-                   "__gnat_rcheck_CE_Range_Check");
-    pragma Export (C, Rcheck_CE_Tag_Check,
-                   "__gnat_rcheck_CE_Tag_Check");
-    pragma Export (C, Rcheck_PE_Access_Before_Elaboration,
-                   "__gnat_rcheck_PE_Access_Before_Elaboration");
-    pragma Export (C, Rcheck_PE_Accessibility_Check,
-                   "__gnat_rcheck_PE_Accessibility_Check");
-    pragma Export (C, Rcheck_PE_Address_Of_Intrinsic,
-                   "__gnat_rcheck_PE_Address_Of_Intrinsic");
-    pragma Export (C, Rcheck_PE_Aliased_Parameters,
-                   "__gnat_rcheck_PE_Aliased_Parameters");
-    pragma Export (C, Rcheck_PE_All_Guards_Closed,
-                   "__gnat_rcheck_PE_All_Guards_Closed");
-    pragma Export (C, Rcheck_PE_Bad_Predicated_Generic_Type,
-                   "__gnat_rcheck_PE_Bad_Predicated_Generic_Type");
-    pragma Export (C, Rcheck_PE_Current_Task_In_Entry_Body,
-                   "__gnat_rcheck_PE_Current_Task_In_Entry_Body");
-    pragma Export (C, Rcheck_PE_Duplicated_Entry_Address,
-                   "__gnat_rcheck_PE_Duplicated_Entry_Address");
-    pragma Export (C, Rcheck_PE_Explicit_Raise,
-                   "__gnat_rcheck_PE_Explicit_Raise");
-    pragma Export (C, Rcheck_PE_Finalize_Raised_Exception,
-                   "__gnat_rcheck_PE_Finalize_Raised_Exception");
-    pragma Export (C, Rcheck_PE_Implicit_Return,
-                   "__gnat_rcheck_PE_Implicit_Return");
-    pragma Export (C, Rcheck_PE_Misaligned_Address_Value,
-                   "__gnat_rcheck_PE_Misaligned_Address_Value");
-    pragma Export (C, Rcheck_PE_Missing_Return,
-                   "__gnat_rcheck_PE_Missing_Return");
-    pragma Export (C, Rcheck_PE_Non_Transportable_Actual,
-                   "__gnat_rcheck_PE_Non_Transportable_Actual");
-    pragma Export (C, Rcheck_PE_Overlaid_Controlled_Object,
-                   "__gnat_rcheck_PE_Overlaid_Controlled_Object");
-    pragma Export (C, Rcheck_PE_Potentially_Blocking_Operation,
-                   "__gnat_rcheck_PE_Potentially_Blocking_Operation");
-    pragma Export (C, Rcheck_PE_Stream_Operation_Not_Allowed,
-                   "__gnat_rcheck_PE_Stream_Operation_Not_Allowed");
-    pragma Export (C, Rcheck_PE_Stubbed_Subprogram_Called,
-                   "__gnat_rcheck_PE_Stubbed_Subprogram_Called");
-    pragma Export (C, Rcheck_PE_Unchecked_Union_Restriction,
-                   "__gnat_rcheck_PE_Unchecked_Union_Restriction");
-    pragma Export (C, Rcheck_SE_Empty_Storage_Pool,
-                   "__gnat_rcheck_SE_Empty_Storage_Pool");
-    pragma Export (C, Rcheck_SE_Explicit_Raise,
-                   "__gnat_rcheck_SE_Explicit_Raise");
-    pragma Export (C, Rcheck_SE_Infinite_Recursion,
-                   "__gnat_rcheck_SE_Infinite_Recursion");
-    pragma Export (C, Rcheck_SE_Object_Too_Large,
-                   "__gnat_rcheck_SE_Object_Too_Large");
- 
-    --  None of these procedures ever returns (they raise an exception). By
-    --  using pragma No_Return, we ensure that any junk code after the call,
-    --  such as normal return epilogue stuff, can be eliminated).
- 
-    pragma No_Return (Rcheck_CE_Access_Check);
-    pragma No_Return (Rcheck_CE_Null_Access_Parameter);
-    pragma No_Return (Rcheck_CE_Discriminant_Check);
-    pragma No_Return (Rcheck_CE_Divide_By_Zero);
-    pragma No_Return (Rcheck_CE_Explicit_Raise);
-    pragma No_Return (Rcheck_CE_Index_Check);
-    pragma No_Return (Rcheck_CE_Invalid_Data);
-    pragma No_Return (Rcheck_CE_Length_Check);
-    pragma No_Return (Rcheck_CE_Null_Exception_Id);
-    pragma No_Return (Rcheck_CE_Null_Not_Allowed);
-    pragma No_Return (Rcheck_CE_Overflow_Check);
-    pragma No_Return (Rcheck_CE_Partition_Check);
-    pragma No_Return (Rcheck_CE_Range_Check);
-    pragma No_Return (Rcheck_CE_Tag_Check);
-    pragma No_Return (Rcheck_PE_Access_Before_Elaboration);
-    pragma No_Return (Rcheck_PE_Accessibility_Check);
-    pragma No_Return (Rcheck_PE_Address_Of_Intrinsic);
-    pragma No_Return (Rcheck_PE_Aliased_Parameters);
-    pragma No_Return (Rcheck_PE_All_Guards_Closed);
-    pragma No_Return (Rcheck_PE_Bad_Predicated_Generic_Type);
-    pragma No_Return (Rcheck_PE_Current_Task_In_Entry_Body);
-    pragma No_Return (Rcheck_PE_Duplicated_Entry_Address);
-    pragma No_Return (Rcheck_PE_Explicit_Raise);
-    pragma No_Return (Rcheck_PE_Implicit_Return);
-    pragma No_Return (Rcheck_PE_Misaligned_Address_Value);
-    pragma No_Return (Rcheck_PE_Missing_Return);
-    pragma No_Return (Rcheck_PE_Overlaid_Controlled_Object);
-    pragma No_Return (Rcheck_PE_Non_Transportable_Actual);
-    pragma No_Return (Rcheck_PE_Potentially_Blocking_Operation);
-    pragma No_Return (Rcheck_PE_Stream_Operation_Not_Allowed);
-    pragma No_Return (Rcheck_PE_Stubbed_Subprogram_Called);
-    pragma No_Return (Rcheck_PE_Unchecked_Union_Restriction);
-    pragma No_Return (Rcheck_PE_Finalize_Raised_Exception);
-    pragma No_Return (Rcheck_SE_Empty_Storage_Pool);
-    pragma No_Return (Rcheck_SE_Explicit_Raise);
-    pragma No_Return (Rcheck_SE_Infinite_Recursion);
-    pragma No_Return (Rcheck_SE_Object_Too_Large);
- 
-    --  For compatibility with previous version of GNAT, to preserve bootstrap
- 
-    procedure Rcheck_00 (File : System.Address; Line : Integer);
-    procedure Rcheck_01 (File : System.Address; Line : Integer);
-    procedure Rcheck_02 (File : System.Address; Line : Integer);
-    procedure Rcheck_03 (File : System.Address; Line : Integer);
-    procedure Rcheck_04 (File : System.Address; Line : Integer);
-    procedure Rcheck_05 (File : System.Address; Line : Integer);
-    procedure Rcheck_06 (File : System.Address; Line : Integer);
-    procedure Rcheck_07 (File : System.Address; Line : Integer);
-    procedure Rcheck_08 (File : System.Address; Line : Integer);
-    procedure Rcheck_09 (File : System.Address; Line : Integer);
-    procedure Rcheck_10 (File : System.Address; Line : Integer);
-    procedure Rcheck_11 (File : System.Address; Line : Integer);
-    procedure Rcheck_12 (File : System.Address; Line : Integer);
-    procedure Rcheck_13 (File : System.Address; Line : Integer);
-    procedure Rcheck_14 (File : System.Address; Line : Integer);
-    procedure Rcheck_15 (File : System.Address; Line : Integer);
-    procedure Rcheck_16 (File : System.Address; Line : Integer);
-    procedure Rcheck_17 (File : System.Address; Line : Integer);
-    procedure Rcheck_18 (File : System.Address; Line : Integer);
-    procedure Rcheck_19 (File : System.Address; Line : Integer);
-    procedure Rcheck_20 (File : System.Address; Line : Integer);
-    procedure Rcheck_21 (File : System.Address; Line : Integer);
-    procedure Rcheck_22 (File : System.Address; Line : Integer);
-    procedure Rcheck_23 (File : System.Address; Line : Integer);
-    procedure Rcheck_24 (File : System.Address; Line : Integer);
-    procedure Rcheck_25 (File : System.Address; Line : Integer);
-    procedure Rcheck_26 (File : System.Address; Line : Integer);
-    procedure Rcheck_27 (File : System.Address; Line : Integer);
-    procedure Rcheck_28 (File : System.Address; Line : Integer);
-    procedure Rcheck_29 (File : System.Address; Line : Integer);
-    procedure Rcheck_30 (File : System.Address; Line : Integer);
-    procedure Rcheck_31 (File : System.Address; Line : Integer);
-    procedure Rcheck_32 (File : System.Address; Line : Integer);
-    procedure Rcheck_33 (File : System.Address; Line : Integer);
-    procedure Rcheck_34 (File : System.Address; Line : Integer);
-    procedure Rcheck_35 (File : System.Address; Line : Integer);
-    procedure Rcheck_36 (File : System.Address; Line : Integer);
- 
-    pragma Export (C, Rcheck_00, "__gnat_rcheck_00");
-    pragma Export (C, Rcheck_01, "__gnat_rcheck_01");
-    pragma Export (C, Rcheck_02, "__gnat_rcheck_02");
-    pragma Export (C, Rcheck_03, "__gnat_rcheck_03");
-    pragma Export (C, Rcheck_04, "__gnat_rcheck_04");
-    pragma Export (C, Rcheck_05, "__gnat_rcheck_05");
-    pragma Export (C, Rcheck_06, "__gnat_rcheck_06");
-    pragma Export (C, Rcheck_07, "__gnat_rcheck_07");
-    pragma Export (C, Rcheck_08, "__gnat_rcheck_08");
-    pragma Export (C, Rcheck_09, "__gnat_rcheck_09");
-    pragma Export (C, Rcheck_10, "__gnat_rcheck_10");
-    pragma Export (C, Rcheck_11, "__gnat_rcheck_11");
-    pragma Export (C, Rcheck_12, "__gnat_rcheck_12");
-    pragma Export (C, Rcheck_13, "__gnat_rcheck_13");
-    pragma Export (C, Rcheck_14, "__gnat_rcheck_14");
-    pragma Export (C, Rcheck_15, "__gnat_rcheck_15");
-    pragma Export (C, Rcheck_16, "__gnat_rcheck_16");
-    pragma Export (C, Rcheck_17, "__gnat_rcheck_17");
-    pragma Export (C, Rcheck_18, "__gnat_rcheck_18");
-    pragma Export (C, Rcheck_19, "__gnat_rcheck_19");
-    pragma Export (C, Rcheck_20, "__gnat_rcheck_20");
-    pragma Export (C, Rcheck_21, "__gnat_rcheck_21");
-    pragma Export (C, Rcheck_22, "__gnat_rcheck_22");
-    pragma Export (C, Rcheck_23, "__gnat_rcheck_23");
-    pragma Export (C, Rcheck_24, "__gnat_rcheck_24");
-    pragma Export (C, Rcheck_25, "__gnat_rcheck_25");
-    pragma Export (C, Rcheck_26, "__gnat_rcheck_26");
-    pragma Export (C, Rcheck_27, "__gnat_rcheck_27");
-    pragma Export (C, Rcheck_28, "__gnat_rcheck_28");
-    pragma Export (C, Rcheck_29, "__gnat_rcheck_29");
-    pragma Export (C, Rcheck_30, "__gnat_rcheck_30");
-    pragma Export (C, Rcheck_31, "__gnat_rcheck_31");
-    pragma Export (C, Rcheck_32, "__gnat_rcheck_32");
-    pragma Export (C, Rcheck_33, "__gnat_rcheck_33");
-    pragma Export (C, Rcheck_34, "__gnat_rcheck_34");
-    pragma Export (C, Rcheck_35, "__gnat_rcheck_35");
-    pragma Export (C, Rcheck_36, "__gnat_rcheck_36");
- 
-    --  None of these procedures ever returns (they raise an exception). By
-    --  using pragma No_Return, we ensure that any junk code after the call,
-    --  such as normal return epilogue stuff, can be eliminated).
- 
-    pragma No_Return (Rcheck_00);
-    pragma No_Return (Rcheck_01);
-    pragma No_Return (Rcheck_02);
-    pragma No_Return (Rcheck_03);
-    pragma No_Return (Rcheck_04);
-    pragma No_Return (Rcheck_05);
-    pragma No_Return (Rcheck_06);
-    pragma No_Return (Rcheck_07);
-    pragma No_Return (Rcheck_08);
-    pragma No_Return (Rcheck_09);
-    pragma No_Return (Rcheck_10);
-    pragma No_Return (Rcheck_11);
-    pragma No_Return (Rcheck_12);
-    pragma No_Return (Rcheck_13);
-    pragma No_Return (Rcheck_14);
-    pragma No_Return (Rcheck_15);
-    pragma No_Return (Rcheck_16);
-    pragma No_Return (Rcheck_17);
-    pragma No_Return (Rcheck_18);
-    pragma No_Return (Rcheck_19);
-    pragma No_Return (Rcheck_20);
-    pragma No_Return (Rcheck_21);
-    pragma No_Return (Rcheck_22);
-    pragma No_Return (Rcheck_23);
-    pragma No_Return (Rcheck_24);
-    pragma No_Return (Rcheck_25);
-    pragma No_Return (Rcheck_26);
-    pragma No_Return (Rcheck_27);
-    pragma No_Return (Rcheck_28);
-    pragma No_Return (Rcheck_29);
-    pragma No_Return (Rcheck_30);
-    pragma No_Return (Rcheck_32);
-    pragma No_Return (Rcheck_33);
-    pragma No_Return (Rcheck_34);
-    pragma No_Return (Rcheck_35);
-    pragma No_Return (Rcheck_36);
- 
-    ---------------------------------------------
-    -- Reason Strings for Run-Time Check Calls --
-    ---------------------------------------------
- 
-    --  These strings are null-terminated and are used by Rcheck_nn. The
-    --  strings correspond to the definitions for Types.RT_Exception_Code.
- 
-    use ASCII;
- 
-    Rmsg_00 : constant String := "access check failed"              & NUL;
-    Rmsg_01 : constant String := "access parameter is null"         & NUL;
-    Rmsg_02 : constant String := "discriminant check failed"        & NUL;
-    Rmsg_03 : constant String := "divide by zero"                   & NUL;
-    Rmsg_04 : constant String := "explicit raise"                   & NUL;
-    Rmsg_05 : constant String := "index check failed"               & NUL;
-    Rmsg_06 : constant String := "invalid data"                     & NUL;
-    Rmsg_07 : constant String := "length check failed"              & NUL;
-    Rmsg_08 : constant String := "null Exception_Id"                & NUL;
-    Rmsg_09 : constant String := "null-exclusion check failed"      & NUL;
-    Rmsg_10 : constant String := "overflow check failed"            & NUL;
-    Rmsg_11 : constant String := "partition check failed"           & NUL;
-    Rmsg_12 : constant String := "range check failed"               & NUL;
-    Rmsg_13 : constant String := "tag check failed"                 & NUL;
-    Rmsg_14 : constant String := "access before elaboration"        & NUL;
-    Rmsg_15 : constant String := "accessibility check failed"       & NUL;
-    Rmsg_16 : constant String := "attempt to take address of"       &
-                                 " intrinsic subprogram"            & NUL;
-    Rmsg_17 : constant String := "aliased parameters"               & NUL;
-    Rmsg_18 : constant String := "all guards closed"                & NUL;
-    Rmsg_19 : constant String := "improper use of generic subtype"  &
-                                 " with predicate"                  & NUL;
-    Rmsg_20 : constant String := "Current_Task referenced in entry" &
-                                 " body"                            & NUL;
-    Rmsg_21 : constant String := "duplicated entry address"         & NUL;
-    Rmsg_22 : constant String := "explicit raise"                   & NUL;
-    Rmsg_23 : constant String := "finalize/adjust raised exception" & NUL;
-    Rmsg_24 : constant String := "implicit return with No_Return"   & NUL;
-    Rmsg_25 : constant String := "misaligned address value"         & NUL;
-    Rmsg_26 : constant String := "missing return"                   & NUL;
-    Rmsg_27 : constant String := "overlaid controlled object"       & NUL;
-    Rmsg_28 : constant String := "potentially blocking operation"   & NUL;
-    Rmsg_29 : constant String := "stubbed subprogram called"        & NUL;
-    Rmsg_30 : constant String := "unchecked union restriction"      & NUL;
-    Rmsg_31 : constant String := "actual/returned class-wide"       &
-                                 " value not transportable"         & NUL;
-    Rmsg_32 : constant String := "empty storage pool"               & NUL;
-    Rmsg_33 : constant String := "explicit raise"                   & NUL;
-    Rmsg_34 : constant String := "infinite recursion"               & NUL;
-    Rmsg_35 : constant String := "object too large"                 & NUL;
-    Rmsg_36 : constant String := "stream operation not allowed"     & NUL;
- 
-    -----------------------
-    -- Polling Interface --
-    -----------------------
- 
-    type Unsigned is mod 2 ** 32;
- 
-    Counter : Unsigned := 0;
-    pragma Warnings (Off, Counter);
-    --  This counter is provided for convenience. It can be used in Poll to
-    --  perform periodic but not systematic operations.
- 
-    procedure Poll is separate;
-    --  The actual polling routine is separate, so that it can easily be
-    --  replaced with a target dependent version.
- 
-    -------------------
-    -- EId_To_String --
-    -------------------
- 
-    function EId_To_String (X : Exception_Id) return String
-      renames Stream_Attributes.EId_To_String;
- 
-    ------------------
-    -- EO_To_String --
-    ------------------
- 
-    --  We use the null string to represent the null occurrence, otherwise we
-    --  output the Untailored_Exception_Information string for the occurrence.
- 
-    function EO_To_String (X : Exception_Occurrence) return String
-      renames Stream_Attributes.EO_To_String;
- 
-    ------------------------
-    -- Exception_Identity --
-    ------------------------
- 
-    function Exception_Identity
-      (X : Exception_Occurrence) return Exception_Id
-    is
-    begin
-       --  Note that the following test used to be here for the original Ada 95
-       --  semantics, but these were modified by AI-241 to require returning
-       --  Null_Id instead of raising Constraint_Error.
- 
-       --  if X.Id = Null_Id then
-       --     raise Constraint_Error;
-       --  end if;
- 
-       return X.Id;
-    end Exception_Identity;
- 
-    ---------------------------
-    -- Exception_Information --
-    ---------------------------
- 
-    function Exception_Information (X : Exception_Occurrence) return String is
-    begin
-       if X.Id = Null_Id then
-          raise Constraint_Error;
-       else
-          return Exception_Data.Exception_Information (X);
-       end if;
-    end Exception_Information;
- 
-    -----------------------
-    -- Exception_Message --
-    -----------------------
- 
-    function Exception_Message (X : Exception_Occurrence) return String is
-    begin
-       if X.Id = Null_Id then
-          raise Constraint_Error;
-       end if;
- 
-       return X.Msg (1 .. X.Msg_Length);
-    end Exception_Message;
- 
-    --------------------
-    -- Exception_Name --
-    --------------------
- 
-    function Exception_Name (Id : Exception_Id) return String is
-    begin
-       if Id = null then
-          raise Constraint_Error;
-       end if;
- 
-       return To_Ptr (Id.Full_Name) (1 .. Id.Name_Length - 1);
-    end Exception_Name;
- 
-    function Exception_Name (X : Exception_Occurrence) return String is
-    begin
-       return Exception_Name (X.Id);
-    end Exception_Name;
- 
-    ---------------------------
-    -- Exception_Name_Simple --
-    ---------------------------
- 
-    function Exception_Name_Simple (X : Exception_Occurrence) return String is
-       Name : constant String := Exception_Name (X);
-       P    : Natural;
- 
-    begin
-       P := Name'Length;
-       while P > 1 loop
-          exit when Name (P - 1) = '.';
-          P := P - 1;
-       end loop;
- 
-       --  Return result making sure lower bound is 1
- 
-       declare
-          subtype Rname is String (1 .. Name'Length - P + 1);
-       begin
-          return Rname (Name (P .. Name'Length));
-       end;
-    end Exception_Name_Simple;
- 
-    --------------------
-    -- Exception_Data --
-    --------------------
- 
-    package body Exception_Data is separate;
-    --  This package can be easily dummied out if we do not want the basic
-    --  support for exception messages (such as in Ada 83).
- 
-    ----------------------
-    -- Exception_Traces --
-    ----------------------
- 
-    package body Exception_Traces is separate;
-    --  Depending on the underlying support for IO the implementation will
-    --  differ. Moreover we would like to dummy out this package in case we do
-    --  not want any exception tracing support. This is why this package is
-    --  separated.
- 
-    -----------------------
-    -- Stream Attributes --
-    -----------------------
- 
-    package body Stream_Attributes is separate;
-    --  This package can be easily dummied out if we do not want the
-    --  support for streaming Exception_Ids and Exception_Occurrences.
- 
-    -----------------------------
-    -- Process_Raise_Exception --
-    -----------------------------
- 
-    procedure Process_Raise_Exception (E : Exception_Id) is
-       pragma Inspection_Point (E);
-       --  This is so the debugger can reliably inspect the parameter
- 
-       Jumpbuf_Ptr : constant Address := Get_Jmpbuf_Address.all;
-       Excep       : constant EOA := Get_Current_Excep.all;
- 
-       procedure builtin_longjmp (buffer : Address; Flag : Integer);
-       pragma No_Return (builtin_longjmp);
-       pragma Import (C, builtin_longjmp, "_gnat_builtin_longjmp");
- 
-    begin
-       --  WARNING: There should be no exception handler for this body because
-       --  this would cause gigi to prepend a setup for a new jmpbuf to the
-       --  sequence of statements in case of built-in sjljl. We would then
-       --  always get this new buf in Jumpbuf_Ptr instead of the one for the
-       --  exception we are handling, which would completely break the whole
-       --  design of this procedure.
- 
-       --  If the jump buffer pointer is non-null, transfer control using it.
-       --  Otherwise announce an unhandled exception (note that this means that
-       --  we have no finalizations to do other than at the outer level).
-       --  Perform the necessary notification tasks in both cases.
- 
-       if Jumpbuf_Ptr /= Null_Address then
-          if not Excep.Exception_Raised then
-             Excep.Exception_Raised := True;
-             Exception_Traces.Notify_Handled_Exception (Excep);
-          end if;
- 
-          builtin_longjmp (Jumpbuf_Ptr, 1);
- 
-       else
-          Exception_Traces.Notify_Unhandled_Exception (Excep);
-          Exception_Traces.Unhandled_Exception_Terminate (Excep);
-       end if;
-    end Process_Raise_Exception;
- 
-    ----------------------------
-    -- Raise_Constraint_Error --
-    ----------------------------
- 
-    procedure Raise_Constraint_Error
-      (File : System.Address;
-       Line : Integer)
-    is
-    begin
-       Raise_With_Location_And_Msg
-         (Constraint_Error_Def'Access, File, Line);
-    end Raise_Constraint_Error;
- 
-    --------------------------------
-    -- Raise_Constraint_Error_Msg --
-    --------------------------------
- 
-    procedure Raise_Constraint_Error_Msg
-      (File : System.Address;
-       Line : Integer;
-       Msg  : System.Address)
-    is
-    begin
-       Raise_With_Location_And_Msg
-         (Constraint_Error_Def'Access, File, Line, Msg);
-    end Raise_Constraint_Error_Msg;
- 
-    -------------------------
-    -- Raise_Current_Excep --
-    -------------------------
- 
-    procedure Raise_Current_Excep (E : Exception_Id) is
- 
-       pragma Inspection_Point (E);
-       --  This is so the debugger can reliably inspect the parameter when
-       --  inserting a breakpoint at the start of this procedure.
- 
-       Id : Exception_Id := E;
-       pragma Volatile (Id);
-       pragma Warnings (Off, Id);
-       --  In order to provide support for breakpoints on unhandled exceptions,
-       --  the debugger will also need to be able to inspect the value of E from
-       --  another (inner) frame. So we need to make sure that if E is passed in
-       --  a register, its value is also spilled on stack. For this, we store
-       --  the parameter value in a local variable, and add a pragma Volatile to
-       --  make sure it is spilled. The pragma Warnings (Off) is needed because
-       --  the compiler knows that Id is not referenced and that this use of
-       --  pragma Volatile is peculiar.
- 
-    begin
-       Debug_Raise_Exception (E => SSL.Exception_Data_Ptr (E), Message => "");
-       Process_Raise_Exception (E);
-    end Raise_Current_Excep;
- 
-    ---------------------
-    -- Raise_Exception --
-    ---------------------
- 
-    procedure Raise_Exception
-      (E       : Exception_Id;
-       Message : String := "")
-    is
-       EF    : Exception_Id := E;
-       Excep : constant EOA := Get_Current_Excep.all;
-    begin
-       --  Raise CE if E = Null_ID (AI-446)
- 
-       if E = null then
-          EF := Constraint_Error'Identity;
-       end if;
- 
-       --  Go ahead and raise appropriate exception
- 
-       Exception_Data.Set_Exception_Msg (Excep, EF, Message);
-       Abort_Defer.all;
-       Raise_Current_Excep (EF);
-    end Raise_Exception;
- 
-    ----------------------------
-    -- Raise_Exception_Always --
-    ----------------------------
- 
-    procedure Raise_Exception_Always
-      (E       : Exception_Id;
-       Message : String := "")
-    is
-       Excep : constant EOA := Get_Current_Excep.all;
-    begin
-       Exception_Data.Set_Exception_Msg (Excep, E, Message);
-       Abort_Defer.all;
-       Raise_Current_Excep (E);
-    end Raise_Exception_Always;
- 
-    ------------------------------
-    -- Raise_Exception_No_Defer --
-    ------------------------------
- 
-    procedure Raise_Exception_No_Defer
-      (E       : Exception_Id;
-       Message : String := "")
-    is
-       Excep : constant EOA := Get_Current_Excep.all;
-    begin
-       Exception_Data.Set_Exception_Msg (Excep, E, Message);
- 
-       --  Do not call Abort_Defer.all, as specified by the spec
- 
-       Raise_Current_Excep (E);
-    end Raise_Exception_No_Defer;
- 
-    -------------------------------------
-    -- Raise_From_Controlled_Operation --
-    -------------------------------------
- 
-    procedure Raise_From_Controlled_Operation
-      (X : Ada.Exceptions.Exception_Occurrence)
-    is
-       Prefix             : constant String := "adjust/finalize raised ";
-       Orig_Msg           : constant String := Exception_Message (X);
-       Orig_Prefix_Length : constant Natural :=
-         Integer'Min (Prefix'Length, Orig_Msg'Length);
-       Orig_Prefix        : String renames Orig_Msg
-         (Orig_Msg'First ..  Orig_Msg'First + Orig_Prefix_Length - 1);
-    begin
-       --  Message already has proper prefix, just re-reraise
- 
-       if Orig_Prefix = Prefix then
-          Raise_Exception_No_Defer
-            (E       => Program_Error'Identity,
-             Message => Orig_Msg);
- 
-       else
-          declare
-             New_Msg  : constant String := Prefix & Exception_Name (X);
- 
-          begin
-             --  No message present, just provide our own
- 
-             if Orig_Msg = "" then
-                Raise_Exception_No_Defer
-                  (E       => Program_Error'Identity,
-                   Message => New_Msg);
- 
-             --  Message present, add informational prefix
- 
-             else
-                Raise_Exception_No_Defer
-                  (E       => Program_Error'Identity,
-                   Message => New_Msg & ": " & Orig_Msg);
-             end if;
-          end;
-       end if;
-    end Raise_From_Controlled_Operation;
- 
-    -------------------------------
-    -- Raise_From_Signal_Handler --
-    -------------------------------
- 
-    procedure Raise_From_Signal_Handler
-      (E : Exception_Id;
-       M : System.Address)
-    is
-       Excep : constant EOA := Get_Current_Excep.all;
-    begin
-       Exception_Data.Set_Exception_C_Msg (Excep, E, M);
-       Abort_Defer.all;
-       Process_Raise_Exception (E);
-    end Raise_From_Signal_Handler;
- 
-    -------------------------
-    -- Raise_Program_Error --
-    -------------------------
- 
-    procedure Raise_Program_Error
-      (File : System.Address;
-       Line : Integer)
-    is
-    begin
-       Raise_With_Location_And_Msg
-         (Program_Error_Def'Access, File, Line);
-    end Raise_Program_Error;
- 
-    -----------------------------
-    -- Raise_Program_Error_Msg --
-    -----------------------------
- 
-    procedure Raise_Program_Error_Msg
-      (File : System.Address;
-       Line : Integer;
-       Msg  : System.Address)
-    is
-    begin
-       Raise_With_Location_And_Msg
-         (Program_Error_Def'Access, File, Line, Msg);
-    end Raise_Program_Error_Msg;
- 
-    -------------------------
-    -- Raise_Storage_Error --
-    -------------------------
- 
-    procedure Raise_Storage_Error
-      (File : System.Address;
-       Line : Integer)
-    is
-    begin
-       Raise_With_Location_And_Msg
-         (Storage_Error_Def'Access, File, Line);
-    end Raise_Storage_Error;
- 
-    -----------------------------
-    -- Raise_Storage_Error_Msg --
-    -----------------------------
- 
-    procedure Raise_Storage_Error_Msg
-      (File : System.Address;
-       Line : Integer;
-       Msg  : System.Address)
-    is
-    begin
-       Raise_With_Location_And_Msg
-         (Storage_Error_Def'Access, File, Line, Msg);
-    end Raise_Storage_Error_Msg;
- 
-    ---------------------------------
-    -- Raise_With_Location_And_Msg --
-    ---------------------------------
- 
-    procedure Raise_With_Location_And_Msg
-      (E : Exception_Id;
-       F : System.Address;
-       L : Integer;
-       M : System.Address := System.Null_Address)
-    is
-       Excep : constant EOA := Get_Current_Excep.all;
-    begin
-       Exception_Data.Set_Exception_C_Msg (Excep, E, F, L, Msg2 => M);
-       Abort_Defer.all;
-       Raise_Current_Excep (E);
-    end Raise_With_Location_And_Msg;
- 
-    --------------------
-    -- Raise_With_Msg --
-    --------------------
- 
-    procedure Raise_With_Msg (E : Exception_Id) is
-       Excep : constant EOA := Get_Current_Excep.all;
- 
-    begin
-       Excep.Exception_Raised := False;
-       Excep.Id               := E;
-       Excep.Num_Tracebacks   := 0;
-       Excep.Pid              := Local_Partition_ID;
-       Abort_Defer.all;
-       Raise_Current_Excep (E);
-    end Raise_With_Msg;
- 
-    -----------------------------------------
-    -- Calls to Run-Time Check Subprograms --
-    -----------------------------------------
- 
-    procedure Rcheck_CE_Access_Check
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Constraint_Error_Msg (File, Line, Rmsg_00'Address);
-    end Rcheck_CE_Access_Check;
- 
-    procedure Rcheck_CE_Null_Access_Parameter
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Constraint_Error_Msg (File, Line, Rmsg_01'Address);
-    end Rcheck_CE_Null_Access_Parameter;
- 
-    procedure Rcheck_CE_Discriminant_Check
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Constraint_Error_Msg (File, Line, Rmsg_02'Address);
-    end Rcheck_CE_Discriminant_Check;
- 
-    procedure Rcheck_CE_Divide_By_Zero
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Constraint_Error_Msg (File, Line, Rmsg_03'Address);
-    end Rcheck_CE_Divide_By_Zero;
- 
-    procedure Rcheck_CE_Explicit_Raise
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Constraint_Error_Msg (File, Line, Rmsg_04'Address);
-    end Rcheck_CE_Explicit_Raise;
- 
-    procedure Rcheck_CE_Index_Check
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Constraint_Error_Msg (File, Line, Rmsg_05'Address);
-    end Rcheck_CE_Index_Check;
- 
-    procedure Rcheck_CE_Invalid_Data
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Constraint_Error_Msg (File, Line, Rmsg_06'Address);
-    end Rcheck_CE_Invalid_Data;
- 
-    procedure Rcheck_CE_Length_Check
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Constraint_Error_Msg (File, Line, Rmsg_07'Address);
-    end Rcheck_CE_Length_Check;
- 
-    procedure Rcheck_CE_Null_Exception_Id
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Constraint_Error_Msg (File, Line, Rmsg_08'Address);
-    end Rcheck_CE_Null_Exception_Id;
- 
-    procedure Rcheck_CE_Null_Not_Allowed
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Constraint_Error_Msg (File, Line, Rmsg_09'Address);
-    end Rcheck_CE_Null_Not_Allowed;
- 
-    procedure Rcheck_CE_Overflow_Check
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Constraint_Error_Msg (File, Line, Rmsg_10'Address);
-    end Rcheck_CE_Overflow_Check;
- 
-    procedure Rcheck_CE_Partition_Check
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Constraint_Error_Msg (File, Line, Rmsg_11'Address);
-    end Rcheck_CE_Partition_Check;
- 
-    procedure Rcheck_CE_Range_Check
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Constraint_Error_Msg (File, Line, Rmsg_12'Address);
-    end Rcheck_CE_Range_Check;
- 
-    procedure Rcheck_CE_Tag_Check
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Constraint_Error_Msg (File, Line, Rmsg_13'Address);
-    end Rcheck_CE_Tag_Check;
- 
-    procedure Rcheck_PE_Access_Before_Elaboration
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Program_Error_Msg (File, Line, Rmsg_14'Address);
-    end Rcheck_PE_Access_Before_Elaboration;
- 
-    procedure Rcheck_PE_Accessibility_Check
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Program_Error_Msg (File, Line, Rmsg_15'Address);
-    end Rcheck_PE_Accessibility_Check;
- 
-    procedure Rcheck_PE_Address_Of_Intrinsic
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Program_Error_Msg (File, Line, Rmsg_16'Address);
-    end Rcheck_PE_Address_Of_Intrinsic;
- 
-    procedure Rcheck_PE_Aliased_Parameters
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Program_Error_Msg (File, Line, Rmsg_17'Address);
-    end Rcheck_PE_Aliased_Parameters;
- 
-    procedure Rcheck_PE_All_Guards_Closed
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Program_Error_Msg (File, Line, Rmsg_18'Address);
-    end Rcheck_PE_All_Guards_Closed;
- 
-    procedure Rcheck_PE_Bad_Predicated_Generic_Type
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Program_Error_Msg (File, Line, Rmsg_19'Address);
-    end Rcheck_PE_Bad_Predicated_Generic_Type;
- 
-    procedure Rcheck_PE_Current_Task_In_Entry_Body
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Program_Error_Msg (File, Line, Rmsg_20'Address);
-    end Rcheck_PE_Current_Task_In_Entry_Body;
- 
-    procedure Rcheck_PE_Duplicated_Entry_Address
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Program_Error_Msg (File, Line, Rmsg_21'Address);
-    end Rcheck_PE_Duplicated_Entry_Address;
- 
-    procedure Rcheck_PE_Explicit_Raise
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Program_Error_Msg (File, Line, Rmsg_22'Address);
-    end Rcheck_PE_Explicit_Raise;
- 
-    procedure Rcheck_PE_Implicit_Return
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Program_Error_Msg (File, Line, Rmsg_24'Address);
-    end Rcheck_PE_Implicit_Return;
- 
-    procedure Rcheck_PE_Misaligned_Address_Value
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Program_Error_Msg (File, Line, Rmsg_25'Address);
-    end Rcheck_PE_Misaligned_Address_Value;
- 
-    procedure Rcheck_PE_Missing_Return
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Program_Error_Msg (File, Line, Rmsg_26'Address);
-    end Rcheck_PE_Missing_Return;
- 
-    procedure Rcheck_PE_Overlaid_Controlled_Object
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Program_Error_Msg (File, Line, Rmsg_27'Address);
-    end Rcheck_PE_Overlaid_Controlled_Object;
- 
-    procedure Rcheck_PE_Potentially_Blocking_Operation
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Program_Error_Msg (File, Line, Rmsg_28'Address);
-    end Rcheck_PE_Potentially_Blocking_Operation;
- 
-    procedure Rcheck_PE_Stubbed_Subprogram_Called
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Program_Error_Msg (File, Line, Rmsg_29'Address);
-    end Rcheck_PE_Stubbed_Subprogram_Called;
- 
-    procedure Rcheck_PE_Unchecked_Union_Restriction
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Program_Error_Msg (File, Line, Rmsg_30'Address);
-    end Rcheck_PE_Unchecked_Union_Restriction;
- 
-    procedure Rcheck_PE_Non_Transportable_Actual
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Program_Error_Msg (File, Line, Rmsg_31'Address);
-    end Rcheck_PE_Non_Transportable_Actual;
- 
-    procedure Rcheck_SE_Empty_Storage_Pool
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Storage_Error_Msg (File, Line, Rmsg_32'Address);
-    end Rcheck_SE_Empty_Storage_Pool;
- 
-    procedure Rcheck_SE_Explicit_Raise
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Storage_Error_Msg (File, Line, Rmsg_33'Address);
-    end Rcheck_SE_Explicit_Raise;
- 
-    procedure Rcheck_SE_Infinite_Recursion
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Storage_Error_Msg (File, Line, Rmsg_34'Address);
-    end Rcheck_SE_Infinite_Recursion;
- 
-    procedure Rcheck_SE_Object_Too_Large
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Storage_Error_Msg (File, Line, Rmsg_35'Address);
-    end Rcheck_SE_Object_Too_Large;
- 
-    procedure Rcheck_PE_Stream_Operation_Not_Allowed
-      (File : System.Address; Line : Integer)
-    is
-    begin
-       Raise_Program_Error_Msg (File, Line, Rmsg_36'Address);
-    end Rcheck_PE_Stream_Operation_Not_Allowed;
- 
-    procedure Rcheck_PE_Finalize_Raised_Exception
-      (File : System.Address; Line : Integer)
-    is
-       E     : constant Exception_Id := Program_Error_Def'Access;
-       Excep : constant EOA := Get_Current_Excep.all;
- 
-    begin
-       --  This is "finalize/adjust raised exception". This subprogram is always
-       --  called with abort deferred, unlike all other Rcheck_* subprograms,
-       --  itneeds to call Raise_Exception_No_Defer.
- 
-       --  This is consistent with Raise_From_Controlled_Operation
- 
-       Exception_Data.Set_Exception_C_Msg (Excep, E, File, Line, 0,
-                                           Rmsg_23'Address);
-       Raise_Current_Excep (E);
-    end Rcheck_PE_Finalize_Raised_Exception;
- 
-    procedure Rcheck_00 (File : System.Address; Line : Integer)
-      renames Rcheck_CE_Access_Check;
-    procedure Rcheck_01 (File : System.Address; Line : Integer)
-      renames Rcheck_CE_Null_Access_Parameter;
-    procedure Rcheck_02 (File : System.Address; Line : Integer)
-      renames Rcheck_CE_Discriminant_Check;
-    procedure Rcheck_03 (File : System.Address; Line : Integer)
-      renames Rcheck_CE_Divide_By_Zero;
-    procedure Rcheck_04 (File : System.Address; Line : Integer)
-      renames Rcheck_CE_Explicit_Raise;
-    procedure Rcheck_05 (File : System.Address; Line : Integer)
-      renames Rcheck_CE_Index_Check;
-    procedure Rcheck_06 (File : System.Address; Line : Integer)
-      renames Rcheck_CE_Invalid_Data;
-    procedure Rcheck_07 (File : System.Address; Line : Integer)
-      renames Rcheck_CE_Length_Check;
-    procedure Rcheck_08 (File : System.Address; Line : Integer)
-      renames Rcheck_CE_Null_Exception_Id;
-    procedure Rcheck_09 (File : System.Address; Line : Integer)
-      renames Rcheck_CE_Null_Not_Allowed;
-    procedure Rcheck_10 (File : System.Address; Line : Integer)
-      renames Rcheck_CE_Overflow_Check;
-    procedure Rcheck_11 (File : System.Address; Line : Integer)
-      renames Rcheck_CE_Partition_Check;
-    procedure Rcheck_12 (File : System.Address; Line : Integer)
-      renames Rcheck_CE_Range_Check;
-    procedure Rcheck_13 (File : System.Address; Line : Integer)
-      renames Rcheck_CE_Tag_Check;
-    procedure Rcheck_14 (File : System.Address; Line : Integer)
-      renames Rcheck_PE_Access_Before_Elaboration;
-    procedure Rcheck_15 (File : System.Address; Line : Integer)
-      renames Rcheck_PE_Accessibility_Check;
-    procedure Rcheck_16 (File : System.Address; Line : Integer)
-      renames Rcheck_PE_Address_Of_Intrinsic;
-    procedure Rcheck_17 (File : System.Address; Line : Integer)
-      renames Rcheck_PE_Aliased_Parameters;
-    procedure Rcheck_18 (File : System.Address; Line : Integer)
-      renames Rcheck_PE_All_Guards_Closed;
-    procedure Rcheck_19 (File : System.Address; Line : Integer)
-      renames Rcheck_PE_Bad_Predicated_Generic_Type;
-    procedure Rcheck_20 (File : System.Address; Line : Integer)
-      renames Rcheck_PE_Current_Task_In_Entry_Body;
-    procedure Rcheck_21 (File : System.Address; Line : Integer)
-      renames Rcheck_PE_Duplicated_Entry_Address;
-    procedure Rcheck_22 (File : System.Address; Line : Integer)
-      renames Rcheck_PE_Explicit_Raise;
-    procedure Rcheck_23 (File : System.Address; Line : Integer)
-      renames Rcheck_PE_Finalize_Raised_Exception;
-    procedure Rcheck_24 (File : System.Address; Line : Integer)
-      renames Rcheck_PE_Implicit_Return;
-    procedure Rcheck_25 (File : System.Address; Line : Integer)
-      renames Rcheck_PE_Misaligned_Address_Value;
-    procedure Rcheck_26 (File : System.Address; Line : Integer)
-      renames Rcheck_PE_Missing_Return;
-    procedure Rcheck_27 (File : System.Address; Line : Integer)
-      renames Rcheck_PE_Overlaid_Controlled_Object;
-    procedure Rcheck_28 (File : System.Address; Line : Integer)
-      renames Rcheck_PE_Potentially_Blocking_Operation;
-    procedure Rcheck_29 (File : System.Address; Line : Integer)
-      renames Rcheck_PE_Stubbed_Subprogram_Called;
-    procedure Rcheck_30 (File : System.Address; Line : Integer)
-      renames Rcheck_PE_Unchecked_Union_Restriction;
-    procedure Rcheck_31 (File : System.Address; Line : Integer)
-      renames Rcheck_PE_Non_Transportable_Actual;
-    procedure Rcheck_32 (File : System.Address; Line : Integer)
-      renames Rcheck_SE_Empty_Storage_Pool;
-    procedure Rcheck_33 (File : System.Address; Line : Integer)
-      renames Rcheck_SE_Explicit_Raise;
-    procedure Rcheck_34 (File : System.Address; Line : Integer)
-      renames Rcheck_SE_Infinite_Recursion;
-    procedure Rcheck_35 (File : System.Address; Line : Integer)
-      renames Rcheck_SE_Object_Too_Large;
-    procedure Rcheck_36 (File : System.Address; Line : Integer)
-      renames Rcheck_PE_Stream_Operation_Not_Allowed;
- 
-    -------------
-    -- Reraise --
-    -------------
- 
-    procedure Reraise is
-       Excep : constant EOA := Get_Current_Excep.all;
- 
-    begin
-       Abort_Defer.all;
-       Raise_Current_Excep (Excep.Id);
-    end Reraise;
- 
-    --------------------------------------
-    -- Reraise_Library_Exception_If_Any --
-    --------------------------------------
- 
-    procedure Reraise_Library_Exception_If_Any is
-       LE : Exception_Occurrence;
-    begin
-       if Library_Exception_Set then
-          LE := Library_Exception;
-          Raise_From_Controlled_Operation (LE);
-       end if;
-    end Reraise_Library_Exception_If_Any;
- 
-    ------------------------
-    -- Reraise_Occurrence --
-    ------------------------
- 
-    procedure Reraise_Occurrence (X : Exception_Occurrence) is
-    begin
-       if X.Id /= null then
-          Abort_Defer.all;
-          Save_Occurrence (Get_Current_Excep.all.all, X);
-          Raise_Current_Excep (X.Id);
-       end if;
-    end Reraise_Occurrence;
- 
-    -------------------------------
-    -- Reraise_Occurrence_Always --
-    -------------------------------
- 
-    procedure Reraise_Occurrence_Always (X : Exception_Occurrence) is
-    begin
-       Abort_Defer.all;
-       Save_Occurrence (Get_Current_Excep.all.all, X);
-       Raise_Current_Excep (X.Id);
-    end Reraise_Occurrence_Always;
- 
-    ---------------------------------
-    -- Reraise_Occurrence_No_Defer --
-    ---------------------------------
- 
-    procedure Reraise_Occurrence_No_Defer (X : Exception_Occurrence) is
-    begin
-       Save_Occurrence (Get_Current_Excep.all.all, X);
-       Raise_Current_Excep (X.Id);
-    end Reraise_Occurrence_No_Defer;
- 
-    ---------------------
-    -- Save_Occurrence --
-    ---------------------
- 
-    procedure Save_Occurrence
-      (Target : out Exception_Occurrence;
-       Source : Exception_Occurrence)
-    is
-    begin
-       Target.Id             := Source.Id;
-       Target.Msg_Length     := Source.Msg_Length;
-       Target.Num_Tracebacks := Source.Num_Tracebacks;
-       Target.Pid            := Source.Pid;
- 
-       Target.Msg (1 .. Target.Msg_Length) :=
-         Source.Msg (1 .. Target.Msg_Length);
- 
-       Target.Tracebacks (1 .. Target.Num_Tracebacks) :=
-         Source.Tracebacks (1 .. Target.Num_Tracebacks);
-    end Save_Occurrence;
- 
-    function Save_Occurrence (Source : Exception_Occurrence) return EOA is
-       Target : constant EOA := new Exception_Occurrence;
-    begin
-       Save_Occurrence (Target.all, Source);
-       return Target;
-    end Save_Occurrence;
- 
-    -------------------
-    -- String_To_EId --
-    -------------------
- 
-    function String_To_EId (S : String) return Exception_Id
-      renames Stream_Attributes.String_To_EId;
- 
-    ------------------
-    -- String_To_EO --
-    ------------------
- 
-    function String_To_EO (S : String) return Exception_Occurrence
-      renames Stream_Attributes.String_To_EO;
- 
-    ---------------
-    -- To_Stderr --
-    ---------------
- 
-    procedure To_Stderr (C : Character) is
-       type int is new Integer;
- 
-       procedure put_char_stderr (C : int);
-       pragma Import (C, put_char_stderr, "put_char_stderr");
- 
-    begin
-       put_char_stderr (Character'Pos (C));
-    end To_Stderr;
- 
-    procedure To_Stderr (S : String) is
-    begin
-       for J in S'Range loop
-          if S (J) /= ASCII.CR then
-             To_Stderr (S (J));
-          end if;
-       end loop;
-    end To_Stderr;
- 
-    -------------------------
-    -- Transfer_Occurrence --
-    -------------------------
- 
-    procedure Transfer_Occurrence
-      (Target : Exception_Occurrence_Access;
-       Source : Exception_Occurrence)
-    is
-    begin
-       Save_Occurrence (Target.all, Source);
-    end Transfer_Occurrence;
- 
-    ------------------------
-    -- Triggered_By_Abort --
-    ------------------------
- 
-    function Triggered_By_Abort return Boolean is
-       Ex : constant Exception_Occurrence_Access := Get_Current_Excep.all;
-    begin
-       return Ex /= null
-         and then Exception_Identity (Ex.all) = Standard'Abort_Signal'Identity;
-    end Triggered_By_Abort;
- 
- end Ada.Exceptions;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-except.ads gcc-8.1.0/gcc/ada/a-except.ads
*** gcc-7.3.0/gcc/ada/a-except.ads	Fri Oct 16 12:32:52 2015
--- gcc-8.1.0/gcc/ada/a-except.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,312 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                       A D A . E X C E P T I O N S                        --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2015, Free Software Foundation, 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 version of Ada.Exceptions is used only for building the compiler
- --  and certain basic tools. The "real" version of Ada.Exceptions is in
- --  a-except-2005.ads/adb, and is used for all other builds where full Ada
- --  functionality is required. In particular, it is used for building run
- --  times on all targets.
- 
- --  This version is limited to Ada 95 features. It omits Ada 2005 features
- --  such as the additional definitions of Exception_Name returning
- --  Wide_[Wide_]String. It differs from the version specified in the Ada 95 RM
- --  only in that it is declared Preelaborate (see declaration below for why
- --  this is done).
- 
- --  The reason for this splitting off of a separate version is to support
- --  older bootstrap compilers that do not support Ada 2005 features, and
- --  Ada.Exceptions is part of the compiler sources.
- 
- pragma Compiler_Unit_Warning;
- 
- pragma Polling (Off);
- --  We must turn polling off for this unit, because otherwise we get
- --  elaboration circularities with ourself.
- 
- with System;
- with System.Parameters;
- with System.Standard_Library;
- with System.Traceback_Entries;
- 
- package Ada.Exceptions is
-    pragma Preelaborate;
-    --  We make this preelaborable. If we did not do this, then run time units
-    --  used by the compiler (e.g. s-soflin.ads) would run into trouble.
-    --  Conformance with Ada 95 is not an issue, since this version is used
-    --  only by the compiler.
- 
-    type Exception_Id is private;
- 
-    Null_Id : constant Exception_Id;
- 
-    type Exception_Occurrence is limited private;
- 
-    type Exception_Occurrence_Access is access all Exception_Occurrence;
- 
-    Null_Occurrence : constant Exception_Occurrence;
- 
-    function Exception_Name (X : Exception_Occurrence) return String;
-    --  Same as Exception_Name (Exception_Identity (X))
- 
-    function Exception_Name (Id : Exception_Id) return String;
- 
-    procedure Raise_Exception (E : Exception_Id; Message : String := "");
-    pragma No_Return (Raise_Exception);
-    --  Note: In accordance with AI-466, CE is raised if E = Null_Id
- 
-    function Exception_Message (X : Exception_Occurrence) return String;
- 
-    procedure Reraise_Occurrence (X : Exception_Occurrence);
-    --  Note: it would be really nice to give a pragma No_Return for this
-    --  procedure, but it would be wrong, since Reraise_Occurrence does return
-    --  if the argument is the null exception occurrence. See also procedure
-    --  Reraise_Occurrence_Always in the private part of this package.
- 
-    function Exception_Identity (X : Exception_Occurrence) return Exception_Id;
- 
-    function Exception_Information (X : Exception_Occurrence) return String;
-    --  The format of the exception information is as follows:
-    --
-    --    exception name (as in Exception_Name)
-    --    message (or a null line if no message)
-    --    PID=nnnn
-    --    0xyyyyyyyy 0xyyyyyyyy ...
-    --
-    --  The lines are separated by a ASCII.LF character
-    --  The nnnn is the partition Id given as decimal digits.
-    --  The 0x... line represents traceback program counter locations,
-    --  in order with the first one being the exception location.
- 
-    --  Note on ordering: the compiler uses the Save_Occurrence procedure, but
-    --  not the function from Rtsfind, so it is important that the procedure
-    --  come first, since Rtsfind finds the first matching entity.
- 
-    procedure Save_Occurrence
-      (Target : out Exception_Occurrence;
-       Source : Exception_Occurrence);
- 
-    function Save_Occurrence
-      (Source : Exception_Occurrence)
-       return   Exception_Occurrence_Access;
- 
- private
-    package SSL renames System.Standard_Library;
-    package SP renames System.Parameters;
- 
-    subtype EOA is Exception_Occurrence_Access;
- 
-    Exception_Msg_Max_Length : constant := SP.Default_Exception_Msg_Max_Length;
- 
-    ------------------
-    -- Exception_Id --
-    ------------------
- 
-    subtype Code_Loc is System.Address;
-    --  Code location used in building exception tables and for call addresses
-    --  when propagating an exception. Values of this type are created by using
-    --  Label'Address or extracted from machine states using Get_Code_Loc.
- 
-    Null_Loc : constant Code_Loc := System.Null_Address;
-    --  Null code location, used to flag outer level frame
- 
-    type Exception_Id is new SSL.Exception_Data_Ptr;
- 
-    function EId_To_String (X : Exception_Id) return String;
-    function String_To_EId (S : String) return Exception_Id;
-    pragma Stream_Convert (Exception_Id, String_To_EId, EId_To_String);
-    --  Functions for implementing Exception_Id stream attributes
- 
-    Null_Id : constant Exception_Id := null;
- 
-    -------------------------
-    -- Private Subprograms --
-    -------------------------
- 
-    function Exception_Name_Simple (X : Exception_Occurrence) return String;
-    --  Like Exception_Name, but returns the simple non-qualified name of the
-    --  exception. This is used to implement the Exception_Name function in
-    --  Current_Exceptions (the DEC compatible unit). It is called from the
-    --  compiler generated code (using Rtsfind, which does not respect the
-    --  private barrier, so we can place this function in the private part
-    --  where the compiler can find it, but the spec is unchanged.)
- 
-    procedure Raise_Exception_Always (E : Exception_Id; Message : String := "");
-    pragma No_Return (Raise_Exception_Always);
-    pragma Export (Ada, Raise_Exception_Always, "__gnat_raise_exception");
-    --  This differs from Raise_Exception only in that the caller has determined
-    --  that for sure the parameter E is not null, and that therefore no check
-    --  for Null_Id is required. The expander converts Raise_Exception calls to
-    --  Raise_Exception_Always if it can determine this is the case. The Export
-    --  allows this routine to be accessed from Pure units.
- 
-    procedure Raise_From_Signal_Handler
-      (E : Exception_Id;
-       M : System.Address);
-    pragma Export
-      (Ada, Raise_From_Signal_Handler,
-            "ada__exceptions__raise_from_signal_handler");
-    pragma No_Return (Raise_From_Signal_Handler);
-    --  This routine is used to raise an exception from a signal handler. The
-    --  signal handler has already stored the machine state (i.e. the state that
-    --  corresponds to the location at which the signal was raised). E is the
-    --  Exception_Id specifying what exception is being raised, and M is a
-    --  pointer to a null-terminated string which is the message to be raised.
-    --  Note that this routine never returns, so it is permissible to simply
-    --  jump to this routine, rather than call it. This may be appropriate for
-    --  systems where the right way to get out of signal handler is to alter the
-    --  PC value in the machine state or in some other way ask the operating
-    --  system to return here rather than to the original location.
- 
-    procedure Raise_From_Controlled_Operation
-      (X : Ada.Exceptions.Exception_Occurrence);
-    pragma No_Return (Raise_From_Controlled_Operation);
-    pragma Export
-      (Ada, Raise_From_Controlled_Operation,
-            "__gnat_raise_from_controlled_operation");
-    --  Raise Program_Error, providing information about X (an exception raised
-    --  during a controlled operation) in the exception message.
- 
-    procedure Reraise_Library_Exception_If_Any;
-    pragma Export
-      (Ada, Reraise_Library_Exception_If_Any,
-            "__gnat_reraise_library_exception_if_any");
-    --  If there was an exception raised during library-level finalization,
-    --  reraise the exception.
- 
-    procedure Reraise_Occurrence_Always (X : Exception_Occurrence);
-    pragma No_Return (Reraise_Occurrence_Always);
-    --  This differs from Raise_Occurrence only in that the caller guarantees
-    --  that for sure the parameter X is not the null occurrence, and that
-    --  therefore this procedure cannot return. The expander uses this routine
-    --  in the translation of a raise statement with no parameter (reraise).
- 
-    procedure Reraise_Occurrence_No_Defer (X : Exception_Occurrence);
-    pragma No_Return (Reraise_Occurrence_No_Defer);
-    --  Exactly like Reraise_Occurrence, except that abort is not deferred
-    --  before the call and the parameter X is known not to be the null
-    --  occurrence. This is used in generated code when it is known that
-    --  abort is already deferred.
- 
-    function Triggered_By_Abort return Boolean;
-    --  Determine whether the current exception (if it exists) is an instance of
-    --  Standard'Abort_Signal.
- 
-    -----------------------
-    -- Polling Interface --
-    -----------------------
- 
-    --  The GNAT compiler has an option to generate polling calls to the Poll
-    --  routine in this package. Specifying the -gnatP option for a compilation
-    --  causes a call to Ada.Exceptions.Poll to be generated on every subprogram
-    --  entry and on every iteration of a loop, thus avoiding the possibility of
-    --  a case of unbounded time between calls.
- 
-    --  This polling interface may be used for instrumentation or debugging
-    --  purposes (e.g. implementing watchpoints in software or in the debugger).
- 
-    --  In the GNAT technology itself, this interface is used to implement
-    --  immediate asynchronous transfer of control and immediate abort on
-    --  targets which do not provide for one thread interrupting another.
- 
-    --  Note: this used to be in a separate unit called System.Poll, but that
-    --  caused horrible circular elaboration problems between System.Poll and
-    --  Ada.Exceptions.
- 
-    procedure Poll;
-    --  Check for asynchronous abort. Note that we do not inline the body.
-    --  This makes the interface more useful for debugging purposes.
- 
-    --------------------------
-    -- Exception_Occurrence --
-    --------------------------
- 
-    package TBE renames System.Traceback_Entries;
- 
-    Max_Tracebacks : constant := 50;
-    --  Maximum number of trace backs stored in exception occurrence
- 
-    subtype Tracebacks_Array is TBE.Tracebacks_Array (1 .. Max_Tracebacks);
-    --  Traceback array stored in exception occurrence
- 
-    type Exception_Occurrence is record
-       Id : Exception_Id;
-       --  Exception_Identity for this exception occurrence
- 
-       Msg_Length : Natural := 0;
-       --  Length of message (zero = no message)
- 
-       Msg : String (1 .. Exception_Msg_Max_Length);
-       --  Characters of message
- 
-       Exception_Raised : Boolean := False;
-       --  Set to true to indicate that this exception occurrence has actually
-       --  been raised. When an exception occurrence is first created, this is
-       --  set to False, then when it is processed by Raise_Current_Exception,
-       --  it is set to True. If Raise_Current_Exception is used to raise an
-       --  exception for which this flag is already True, then it knows that
-       --  it is dealing with the reraise case (which is useful to distinguish
-       --  for exception tracing purposes).
- 
-       Pid : Natural := 0;
-       --  Partition_Id for partition raising exception
- 
-       Num_Tracebacks : Natural range 0 .. Max_Tracebacks := 0;
-       --  Number of traceback entries stored
- 
-       Tracebacks : Tracebacks_Array;
-       --  Stored tracebacks (in Tracebacks (1 .. Num_Tracebacks))
-    end record;
- 
-    function "=" (Left, Right : Exception_Occurrence) return Boolean
-      is abstract;
-    --  Don't allow comparison on exception occurrences, we should not need
-    --  this, and it would not work right, because of the Msg and Tracebacks
-    --  fields which have unused entries not copied by Save_Occurrence.
- 
-    function EO_To_String (X : Exception_Occurrence) return String;
-    function String_To_EO (S : String) return Exception_Occurrence;
-    pragma Stream_Convert (Exception_Occurrence, String_To_EO, EO_To_String);
-    --  Functions for implementing Exception_Occurrence stream attributes
- 
-    Null_Occurrence : constant Exception_Occurrence := (
-      Id               => null,
-      Msg_Length       => 0,
-      Msg              => (others => ' '),
-      Exception_Raised => False,
-      Pid              => 0,
-      Num_Tracebacks   => 0,
-      Tracebacks       => (others => TBE.Null_TB_Entry));
- 
- end Ada.Exceptions;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-excpol-abort.adb gcc-8.1.0/gcc/ada/a-excpol-abort.adb
*** gcc-7.3.0/gcc/ada/a-excpol-abort.adb	Fri Aug  1 09:38:48 2014
--- gcc-8.1.0/gcc/ada/a-excpol-abort.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,62 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
- --                                                                          --
- --                   A D A . E X C E P T I O N S . P O L L                  --
- --                (version supporting asynchronous abort test)              --
- --                                                                          --
- --                                  B o d y                                 --
- --                                                                          --
- --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNARL is 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/>.                                          --
- --                                                                          --
- -- GNARL was developed by the GNARL team at Florida State University.       --
- -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This version is for targets that do not support per-thread asynchronous
- --  signals. On such targets, we require compilation with the -gnatP switch
- --  that activates periodic polling. Then in the body of the polling routine
- --  we test for asynchronous abort.
- 
- --  Windows and HPUX 10 currently use this file
- 
- pragma Warnings (Off);
- --  Allow withing of non-Preelaborated units in Ada 2005 mode where this
- --  package will be categorized as Preelaborate. See AI-362 for details.
- --  It is safe in the context of the run-time to violate the rules.
- 
- with System.Soft_Links;
- 
- pragma Warnings (On);
- 
- separate (Ada.Exceptions)
- 
- ----------
- -- Poll --
- ----------
- 
- procedure Poll is
- begin
-    --  Test for asynchronous abort on each poll
- 
-    if System.Soft_Links.Check_Abort_Status.all /= 0 then
-       raise Standard'Abort_Signal;
-    end if;
- end Poll;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-excpol.adb gcc-8.1.0/gcc/ada/a-excpol.adb
*** gcc-7.3.0/gcc/ada/a-excpol.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-excpol.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,42 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
- --                                                                          --
- --                   A D A . E X C E P T I O N S . P O L L                  --
- --                                                                          --
- --                                  B o d y                                 --
- --                 (dummy version where polling is not used)                --
- --                                                                          --
- --          Copyright (C) 1992-2009, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNARL is 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/>.                                          --
- --                                                                          --
- -- GNARL was developed by the GNARL team at Florida State University.       --
- -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- separate (Ada.Exceptions)
- 
- ----------
- -- Poll --
- ----------
- 
- procedure Poll is
- begin
-    null;
- end Poll;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-exctra.adb gcc-8.1.0/gcc/ada/a-exctra.adb
*** gcc-7.3.0/gcc/ada/a-exctra.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-exctra.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,43 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --              A D A . E X C E P T I O N S . T R A C E B A C K             --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1999-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- --
- -- 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 Ada.Exceptions.Traceback is
- 
-    ----------------
-    -- Tracebacks --
-    ----------------
- 
-    function Tracebacks (E : Exception_Occurrence) return Tracebacks_Array is
-    begin
-       return Tracebacks_Array (E.Tracebacks (1 .. E.Num_Tracebacks));
-    end Tracebacks;
- 
- end Ada.Exceptions.Traceback;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-exctra.ads gcc-8.1.0/gcc/ada/a-exctra.ads
*** gcc-7.3.0/gcc/ada/a-exctra.ads	Wed Jul 30 12:56:13 2014
--- gcc-8.1.0/gcc/ada/a-exctra.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,63 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --              A D A . E X C E P T I O N S . T R A C E B A C K             --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1999-2014, Free Software Foundation, 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 package is part of the support for tracebacks on exceptions
- 
- with System.Traceback_Entries;
- 
- package Ada.Exceptions.Traceback is
- 
-    package STBE renames System.Traceback_Entries;
- 
-    subtype Code_Loc is System.Address;
-    --  Code location in executing program
- 
-    subtype Tracebacks_Array is STBE.Tracebacks_Array;
-    --  A traceback array is an array of traceback entries
- 
-    function Tracebacks (E : Exception_Occurrence) return Tracebacks_Array;
-    --  This function extracts the traceback information from an exception
-    --  occurrence, and returns it formatted in the manner required for
-    --  processing in GNAT.Traceback. See g-traceb.ads for further details.
- 
-    function "=" (A, B : Tracebacks_Array) return Boolean renames STBE."=";
-    --  Make "=" operator visible directly
- 
-    function Get_PC (TBE : STBE.Traceback_Entry) return Code_Loc
-      renames STBE.PC_For;
-    --  Returns the code address held by a given traceback entry, typically the
-    --  address of a call instruction.
- 
- end Ada.Exceptions.Traceback;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-exetim-darwin.adb gcc-8.1.0/gcc/ada/a-exetim-darwin.adb
*** gcc-7.3.0/gcc/ada/a-exetim-darwin.adb	Mon Jun 20 12:25:44 2016
--- gcc-8.1.0/gcc/ada/a-exetim-darwin.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,210 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                   A D A . E X E C U T I O N _ T I M E                    --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --         Copyright (C) 2007-2016, Free Software Foundation, Inc.          --
- --                                                                          --
- -- GNAT is 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 Darwin version of this package
- 
- with Ada.Task_Identification;  use Ada.Task_Identification;
- with Ada.Unchecked_Conversion;
- 
- with System.Tasking;
- with System.OS_Interface; use System.OS_Interface;
- with System.Task_Primitives.Operations; use System.Task_Primitives.Operations;
- 
- with Interfaces.C; use Interfaces.C;
- 
- package body Ada.Execution_Time is
- 
-    ---------
-    -- "+" --
-    ---------
- 
-    function "+"
-      (Left  : CPU_Time;
-       Right : Ada.Real_Time.Time_Span) return CPU_Time
-    is
-       use type Ada.Real_Time.Time;
-    begin
-       return CPU_Time (Ada.Real_Time.Time (Left) + Right);
-    end "+";
- 
-    function "+"
-      (Left  : Ada.Real_Time.Time_Span;
-       Right : CPU_Time) return CPU_Time
-    is
-       use type Ada.Real_Time.Time;
-    begin
-       return CPU_Time (Left + Ada.Real_Time.Time (Right));
-    end "+";
- 
-    ---------
-    -- "-" --
-    ---------
- 
-    function "-"
-      (Left  : CPU_Time;
-       Right : Ada.Real_Time.Time_Span) return CPU_Time
-    is
-       use type Ada.Real_Time.Time;
-    begin
-       return CPU_Time (Ada.Real_Time.Time (Left) - Right);
-    end "-";
- 
-    function "-"
-      (Left  : CPU_Time;
-       Right : CPU_Time) return Ada.Real_Time.Time_Span
-    is
-       use type Ada.Real_Time.Time;
-    begin
-       return (Ada.Real_Time.Time (Left) - Ada.Real_Time.Time (Right));
-    end "-";
- 
-    -----------
-    -- Clock --
-    -----------
- 
-    function Clock
-      (T : Ada.Task_Identification.Task_Id :=
-         Ada.Task_Identification.Current_Task) return CPU_Time
-    is
-       function Convert_Ids is new
-         Ada.Unchecked_Conversion (Task_Id, System.Tasking.Task_Id);
- 
-       function To_CPU_Time is
-         new Ada.Unchecked_Conversion (Duration, CPU_Time);
-       --  Time is equal to Duration (although it is a private type) and
-       --  CPU_Time is equal to Time.
- 
-       subtype integer_t is Interfaces.C.int;
-       subtype mach_port_t is integer_t;
-       --  Type definition for Mach.
- 
-       type time_value_t is record
-          seconds : integer_t;
-          microseconds : integer_t;
-       end record;
-       pragma Convention (C, time_value_t);
-       --  Mach time_value_t
- 
-       type thread_basic_info_t is record
-          user_time     : time_value_t;
-          system_time   : time_value_t;
-          cpu_usage     : integer_t;
-          policy        : integer_t;
-          run_state     : integer_t;
-          flags         : integer_t;
-          suspend_count : integer_t;
-          sleep_time    : integer_t;
-       end record;
-       pragma Convention (C, thread_basic_info_t);
-       --  Mach structure from thread_info.h
- 
-       THREAD_BASIC_INFO       : constant := 3;
-       THREAD_BASIC_INFO_COUNT : constant := 10;
-       --  Flavors for basic info
- 
-       function thread_info (Target : mach_port_t;
-                             Flavor : integer_t;
-                             Thread_Info : System.Address;
-                             Count : System.Address) return integer_t;
-       pragma Import (C, thread_info);
-       --  Mach call to get info on a thread
- 
-       function pthread_mach_thread_np (Thread : pthread_t) return mach_port_t;
-       pragma Import (C, pthread_mach_thread_np);
-       --  Get Mach thread from posix thread
- 
-       Result    : Interfaces.C.int;
-       Thread    : pthread_t;
-       Port      : mach_port_t;
-       Ti        : thread_basic_info_t;
-       Count     : integer_t;
-    begin
-       if T = Ada.Task_Identification.Null_Task_Id then
-          raise Program_Error;
-       end if;
- 
-       Thread := Get_Thread_Id (Convert_Ids (T));
-       Port := pthread_mach_thread_np (Thread);
-       pragma Assert (Port > 0);
- 
-       Count := THREAD_BASIC_INFO_COUNT;
-       Result := thread_info (Port, THREAD_BASIC_INFO,
-                              Ti'Address, Count'Address);
-       pragma Assert (Result = 0);
-       pragma Assert (Count = THREAD_BASIC_INFO_COUNT);
- 
-       return To_CPU_Time
-         (Duration (Ti.user_time.seconds + Ti.system_time.seconds)
-            + Duration (Ti.user_time.microseconds
-                          + Ti.system_time.microseconds) / 1E6);
-    end Clock;
- 
-    --------------------------
-    -- Clock_For_Interrupts --
-    --------------------------
- 
-    function Clock_For_Interrupts return CPU_Time is
-    begin
-       --  According to AI 0170-1, D.14(18.1/3), if Interrupt_Clocks_Supported
-       --  is set to False the function raises Program_Error.
- 
-       raise Program_Error;
-       return CPU_Time_First;
-    end Clock_For_Interrupts;
- 
-    -----------
-    -- Split --
-    -----------
- 
-    procedure Split
-      (T  : CPU_Time;
-       SC : out Ada.Real_Time.Seconds_Count;
-       TS : out Ada.Real_Time.Time_Span)
-    is
-       use type Ada.Real_Time.Time;
-    begin
-       Ada.Real_Time.Split (Ada.Real_Time.Time (T), SC, TS);
-    end Split;
- 
-    -------------
-    -- Time_Of --
-    -------------
- 
-    function Time_Of
-      (SC : Ada.Real_Time.Seconds_Count;
-       TS : Ada.Real_Time.Time_Span := Ada.Real_Time.Time_Span_Zero)
-       return CPU_Time
-    is
-    begin
-       return CPU_Time (Ada.Real_Time.Time_Of (SC, TS));
-    end Time_Of;
- 
- end Ada.Execution_Time;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-exetim-default.ads gcc-8.1.0/gcc/ada/a-exetim-default.ads
*** gcc-7.3.0/gcc/ada/a-exetim-default.ads	Wed Nov 25 15:30:09 2015
--- gcc-8.1.0/gcc/ada/a-exetim-default.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,133 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                   A D A . E X E C U T I O N _ T I M E                    --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2007-2015, Free Software Foundation, 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Task_Identification;
- with Ada.Real_Time;
- 
- package Ada.Execution_Time with
-   SPARK_Mode
- is
- 
-    type CPU_Time is private;
- 
-    CPU_Time_First : constant CPU_Time;
-    CPU_Time_Last  : constant CPU_Time;
-    CPU_Time_Unit  : constant := Ada.Real_Time.Time_Unit;
-    CPU_Tick       : constant Ada.Real_Time.Time_Span;
- 
-    use type Ada.Task_Identification.Task_Id;
- 
-    function Clock
-      (T : Ada.Task_Identification.Task_Id :=
-         Ada.Task_Identification.Current_Task)
-       return CPU_Time
-    with
-      Volatile_Function,
-      Global => Ada.Real_Time.Clock_Time,
-      Pre    => T /= Ada.Task_Identification.Null_Task_Id;
- 
-    function "+"
-      (Left  : CPU_Time;
-       Right : Ada.Real_Time.Time_Span) return CPU_Time
-    with
-      Global => null;
- 
-    function "+"
-      (Left  : Ada.Real_Time.Time_Span;
-       Right : CPU_Time) return CPU_Time
-    with
-      Global => null;
- 
-    function "-"
-      (Left  : CPU_Time;
-       Right : Ada.Real_Time.Time_Span) return CPU_Time
-    with
-      Global => null;
- 
-    function "-"
-      (Left  : CPU_Time;
-       Right : CPU_Time) return Ada.Real_Time.Time_Span
-    with
-      Global => null;
- 
-    function "<"  (Left, Right : CPU_Time) return Boolean with
-      Global => null;
-    function "<=" (Left, Right : CPU_Time) return Boolean with
-      Global => null;
-    function ">"  (Left, Right : CPU_Time) return Boolean with
-      Global => null;
-    function ">=" (Left, Right : CPU_Time) return Boolean with
-      Global => null;
- 
-    procedure Split
-      (T  : CPU_Time;
-       SC : out Ada.Real_Time.Seconds_Count;
-       TS : out Ada.Real_Time.Time_Span)
-    with
-      Global => null;
- 
-    function Time_Of
-      (SC : Ada.Real_Time.Seconds_Count;
-       TS : Ada.Real_Time.Time_Span := Ada.Real_Time.Time_Span_Zero)
-       return CPU_Time
-    with
-      Global => null;
- 
-    Interrupt_Clocks_Supported          : constant Boolean := False;
-    Separate_Interrupt_Clocks_Supported : constant Boolean := False;
- 
-    pragma Warnings (Off, "check will fail at run time");
-    function Clock_For_Interrupts return CPU_Time with
-      Volatile_Function,
-      Global => Ada.Real_Time.Clock_Time,
-      Pre    => Interrupt_Clocks_Supported;
-    pragma Warnings (On, "check will fail at run time");
- 
- private
-    pragma SPARK_Mode (Off);
- 
-    type CPU_Time is new Ada.Real_Time.Time;
- 
-    CPU_Time_First : constant CPU_Time  := CPU_Time (Ada.Real_Time.Time_First);
-    CPU_Time_Last  : constant CPU_Time  := CPU_Time (Ada.Real_Time.Time_Last);
- 
-    CPU_Tick : constant Ada.Real_Time.Time_Span := Ada.Real_Time.Tick;
- 
-    pragma Import (Intrinsic, "<");
-    pragma Import (Intrinsic, "<=");
-    pragma Import (Intrinsic, ">");
-    pragma Import (Intrinsic, ">=");
- 
- end Ada.Execution_Time;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-exetim-mingw.adb gcc-8.1.0/gcc/ada/a-exetim-mingw.adb
*** gcc-7.3.0/gcc/ada/a-exetim-mingw.adb	Tue Oct 20 12:24:52 2015
--- gcc-8.1.0/gcc/ada/a-exetim-mingw.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,174 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                   A D A . E X E C U T I O N _ T I M E                    --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --         Copyright (C) 2007-2012, Free Software Foundation, Inc.          --
- --                                                                          --
- -- GNAT is 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 Windows native version of this package
- 
- with Ada.Task_Identification;           use Ada.Task_Identification;
- with Ada.Unchecked_Conversion;
- 
- with System.OS_Interface;               use System.OS_Interface;
- with System.Task_Primitives.Operations; use System.Task_Primitives.Operations;
- with System.Tasking;                    use System.Tasking;
- with System.Win32;                      use System.Win32;
- 
- package body Ada.Execution_Time with
-   SPARK_Mode => Off
- is
- 
-    ---------
-    -- "+" --
-    ---------
- 
-    function "+"
-      (Left  : CPU_Time;
-       Right : Ada.Real_Time.Time_Span) return CPU_Time
-    is
-       use type Ada.Real_Time.Time;
-    begin
-       return CPU_Time (Ada.Real_Time.Time (Left) + Right);
-    end "+";
- 
-    function "+"
-      (Left  : Ada.Real_Time.Time_Span;
-       Right : CPU_Time) return CPU_Time
-    is
-       use type Ada.Real_Time.Time;
-    begin
-       return CPU_Time (Left + Ada.Real_Time.Time (Right));
-    end "+";
- 
-    ---------
-    -- "-" --
-    ---------
- 
-    function "-"
-      (Left  : CPU_Time;
-       Right : Ada.Real_Time.Time_Span) return CPU_Time
-    is
-       use type Ada.Real_Time.Time;
-    begin
-       return CPU_Time (Ada.Real_Time.Time (Left) - Right);
-    end "-";
- 
-    function "-"
-      (Left  : CPU_Time;
-       Right : CPU_Time) return Ada.Real_Time.Time_Span
-    is
-       use type Ada.Real_Time.Time;
-    begin
-       return (Ada.Real_Time.Time (Left) - Ada.Real_Time.Time (Right));
-    end "-";
- 
-    -----------
-    -- Clock --
-    -----------
- 
-    function Clock
-      (T : Ada.Task_Identification.Task_Id :=
-         Ada.Task_Identification.Current_Task) return CPU_Time
-    is
-       Hundreds_Nano_In_Sec : constant Long_Long_Float := 1.0E7;
- 
-       function To_Time is new Ada.Unchecked_Conversion
-         (Duration, Ada.Real_Time.Time);
- 
-       function To_Task_Id is new Ada.Unchecked_Conversion
-         (Ada.Task_Identification.Task_Id, System.Tasking.Task_Id);
- 
-       C_Time : aliased Long_Long_Integer;
-       E_Time : aliased Long_Long_Integer;
-       K_Time : aliased Long_Long_Integer;
-       U_Time : aliased Long_Long_Integer;
-       Res    : BOOL;
- 
-    begin
-       if T = Ada.Task_Identification.Null_Task_Id then
-          raise Program_Error;
-       end if;
- 
-       Res :=
-         GetThreadTimes
-           (HANDLE (Get_Thread_Id (To_Task_Id (T))),
-            C_Time'Access, E_Time'Access, K_Time'Access, U_Time'Access);
- 
-       if Res = System.Win32.FALSE then
-          raise Program_Error;
-       end if;
- 
-       return
-         CPU_Time
-           (To_Time
-              (Duration
-                 ((Long_Long_Float (K_Time) / Hundreds_Nano_In_Sec)
-                  + (Long_Long_Float (U_Time) / Hundreds_Nano_In_Sec))));
-    end Clock;
- 
-    --------------------------
-    -- Clock_For_Interrupts --
-    --------------------------
- 
-    function Clock_For_Interrupts return CPU_Time is
-    begin
-       --  According to AI 0170-1, D.14(18.1/3), if Interrupt_Clocks_Supported
-       --  is set to False the function raises Program_Error.
- 
-       raise Program_Error;
-       return CPU_Time_First;
-    end Clock_For_Interrupts;
- 
-    -----------
-    -- Split --
-    -----------
- 
-    procedure Split
-      (T  : CPU_Time;
-       SC : out Ada.Real_Time.Seconds_Count;
-       TS : out Ada.Real_Time.Time_Span)
-    is
-       use type Ada.Real_Time.Time;
-    begin
-       Ada.Real_Time.Split (Ada.Real_Time.Time (T), SC, TS);
-    end Split;
- 
-    -------------
-    -- Time_Of --
-    -------------
- 
-    function Time_Of
-      (SC : Ada.Real_Time.Seconds_Count;
-       TS : Ada.Real_Time.Time_Span := Ada.Real_Time.Time_Span_Zero)
-       return CPU_Time
-    is
-    begin
-       return CPU_Time (Ada.Real_Time.Time_Of (SC, TS));
-    end Time_Of;
- 
- end Ada.Execution_Time;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-exetim-mingw.ads gcc-8.1.0/gcc/ada/a-exetim-mingw.ads
*** gcc-7.3.0/gcc/ada/a-exetim-mingw.ads	Mon Apr 18 10:47:29 2016
--- gcc-8.1.0/gcc/ada/a-exetim-mingw.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,132 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                   A D A . E X E C U T I O N _ T I M E                    --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2009-2015, Free Software Foundation, 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 Windows native version of this package
- 
- with Ada.Task_Identification;
- with Ada.Real_Time;
- 
- package Ada.Execution_Time with
-   SPARK_Mode
- is
-    type CPU_Time is private;
- 
-    CPU_Time_First : constant CPU_Time;
-    CPU_Time_Last  : constant CPU_Time;
-    CPU_Time_Unit  : constant := 0.000001;
-    CPU_Tick       : constant Ada.Real_Time.Time_Span;
- 
-    use type Ada.Task_Identification.Task_Id;
- 
-    function Clock
-      (T : Ada.Task_Identification.Task_Id :=
-         Ada.Task_Identification.Current_Task)
-       return CPU_Time
-    with
-      Volatile_Function,
-      Global => Ada.Real_Time.Clock_Time,
-      Pre    => T /= Ada.Task_Identification.Null_Task_Id;
- 
-    function "+"
-      (Left  : CPU_Time;
-       Right : Ada.Real_Time.Time_Span) return CPU_Time
-    with
-      Global => null;
- 
-    function "+"
-      (Left  : Ada.Real_Time.Time_Span;
-       Right : CPU_Time) return CPU_Time
-    with
-      Global => null;
- 
-    function "-"
-      (Left  : CPU_Time;
-       Right : Ada.Real_Time.Time_Span) return CPU_Time
-    with
-      Global => null;
- 
-    function "-"
-      (Left  : CPU_Time;
-       Right : CPU_Time) return Ada.Real_Time.Time_Span;
- 
-    function "<"  (Left, Right : CPU_Time) return Boolean with
-      Global => null;
-    function "<=" (Left, Right : CPU_Time) return Boolean with
-      Global => null;
-    function ">"  (Left, Right : CPU_Time) return Boolean with
-      Global => null;
-    function ">=" (Left, Right : CPU_Time) return Boolean with
-      Global => null;
- 
-    procedure Split
-      (T  : CPU_Time;
-       SC : out Ada.Real_Time.Seconds_Count;
-       TS : out Ada.Real_Time.Time_Span)
-    with
-      Global => null;
- 
-    function Time_Of
-      (SC : Ada.Real_Time.Seconds_Count;
-       TS : Ada.Real_Time.Time_Span := Ada.Real_Time.Time_Span_Zero)
-       return CPU_Time
-    with
-      Global => null;
- 
-    Interrupt_Clocks_Supported          : constant Boolean := False;
-    Separate_Interrupt_Clocks_Supported : constant Boolean := False;
- 
-    pragma Warnings (Off, "check will fail at run time");
-    function Clock_For_Interrupts return CPU_Time with
-      Volatile_Function,
-      Global => Ada.Real_Time.Clock_Time,
-      Pre    => Interrupt_Clocks_Supported;
-    pragma Warnings (On, "check will fail at run time");
- 
- private
-    pragma SPARK_Mode (Off);
- 
-    type CPU_Time is new Ada.Real_Time.Time;
- 
-    CPU_Time_First : constant CPU_Time  := CPU_Time (Ada.Real_Time.Time_First);
-    CPU_Time_Last  : constant CPU_Time  := CPU_Time (Ada.Real_Time.Time_Last);
- 
-    CPU_Tick : constant Ada.Real_Time.Time_Span := Ada.Real_Time.Tick;
- 
-    pragma Import (Intrinsic, "<");
-    pragma Import (Intrinsic, "<=");
-    pragma Import (Intrinsic, ">");
-    pragma Import (Intrinsic, ">=");
- 
- end Ada.Execution_Time;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-exetim-posix.adb gcc-8.1.0/gcc/ada/a-exetim-posix.adb
*** gcc-7.3.0/gcc/ada/a-exetim-posix.adb	Fri Oct 23 12:48:46 2015
--- gcc-8.1.0/gcc/ada/a-exetim-posix.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,185 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                   A D A . E X E C U T I O N _ T I M E                    --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --         Copyright (C) 2007-2015, Free Software Foundation, Inc.          --
- --                                                                          --
- -- GNAT is 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 POSIX (Realtime Extension) version of this package
- 
- with Ada.Task_Identification;  use Ada.Task_Identification;
- with Ada.Unchecked_Conversion;
- 
- with System.Tasking;
- with System.OS_Interface; use System.OS_Interface;
- with System.Task_Primitives.Operations; use System.Task_Primitives.Operations;
- 
- with Interfaces.C; use Interfaces.C;
- 
- package body Ada.Execution_Time is
- 
-    pragma Linker_Options ("-lrt");
-    --  POSIX.1b Realtime Extensions library. Needed to have access to function
-    --  clock_gettime.
- 
-    ---------
-    -- "+" --
-    ---------
- 
-    function "+"
-      (Left  : CPU_Time;
-       Right : Ada.Real_Time.Time_Span) return CPU_Time
-    is
-       use type Ada.Real_Time.Time;
-    begin
-       return CPU_Time (Ada.Real_Time.Time (Left) + Right);
-    end "+";
- 
-    function "+"
-      (Left  : Ada.Real_Time.Time_Span;
-       Right : CPU_Time) return CPU_Time
-    is
-       use type Ada.Real_Time.Time;
-    begin
-       return CPU_Time (Left + Ada.Real_Time.Time (Right));
-    end "+";
- 
-    ---------
-    -- "-" --
-    ---------
- 
-    function "-"
-      (Left  : CPU_Time;
-       Right : Ada.Real_Time.Time_Span) return CPU_Time
-    is
-       use type Ada.Real_Time.Time;
-    begin
-       return CPU_Time (Ada.Real_Time.Time (Left) - Right);
-    end "-";
- 
-    function "-"
-      (Left  : CPU_Time;
-       Right : CPU_Time) return Ada.Real_Time.Time_Span
-    is
-       use type Ada.Real_Time.Time;
-    begin
-       return (Ada.Real_Time.Time (Left) - Ada.Real_Time.Time (Right));
-    end "-";
- 
-    -----------
-    -- Clock --
-    -----------
- 
-    function Clock
-      (T : Ada.Task_Identification.Task_Id :=
-         Ada.Task_Identification.Current_Task) return CPU_Time
-    is
-       TS       : aliased timespec;
-       Clock_Id : aliased Interfaces.C.int;
-       Result   : Interfaces.C.int;
- 
-       function To_CPU_Time is
-         new Ada.Unchecked_Conversion (Duration, CPU_Time);
-       --  Time is equal to Duration (although it is a private type) and
-       --  CPU_Time is equal to Time.
- 
-       function Convert_Ids is new
-         Ada.Unchecked_Conversion (Task_Id, System.Tasking.Task_Id);
- 
-       function clock_gettime
-         (clock_id : Interfaces.C.int;
-          tp       : access timespec)
-          return int;
-       pragma Import (C, clock_gettime, "clock_gettime");
-       --  Function from the POSIX.1b Realtime Extensions library
- 
-       function pthread_getcpuclockid
-         (tid       : Thread_Id;
-          clock_id  : access Interfaces.C.int)
-          return int;
-       pragma Import (C, pthread_getcpuclockid, "pthread_getcpuclockid");
-       --  Function from the Thread CPU-Time Clocks option
- 
-    begin
-       if T = Ada.Task_Identification.Null_Task_Id then
-          raise Program_Error;
-       else
-          --  Get the CPU clock for the task passed as parameter
- 
-          Result := pthread_getcpuclockid
-            (Get_Thread_Id (Convert_Ids (T)), Clock_Id'Access);
-          pragma Assert (Result = 0);
-       end if;
- 
-       Result := clock_gettime
-         (clock_id => Clock_Id, tp => TS'Unchecked_Access);
-       pragma Assert (Result = 0);
- 
-       return To_CPU_Time (To_Duration (TS));
-    end Clock;
- 
-    --------------------------
-    -- Clock_For_Interrupts --
-    --------------------------
- 
-    function Clock_For_Interrupts return CPU_Time is
-    begin
-       --  According to AI 0170-1, D.14(18.1/3), if Interrupt_Clocks_Supported
-       --  is set to False the function raises Program_Error.
- 
-       raise Program_Error;
-       return CPU_Time_First;
-    end Clock_For_Interrupts;
- 
-    -----------
-    -- Split --
-    -----------
- 
-    procedure Split
-      (T  : CPU_Time;
-       SC : out Ada.Real_Time.Seconds_Count;
-       TS : out Ada.Real_Time.Time_Span)
-    is
-       use type Ada.Real_Time.Time;
-    begin
-       Ada.Real_Time.Split (Ada.Real_Time.Time (T), SC, TS);
-    end Split;
- 
-    -------------
-    -- Time_Of --
-    -------------
- 
-    function Time_Of
-      (SC : Ada.Real_Time.Seconds_Count;
-       TS : Ada.Real_Time.Time_Span := Ada.Real_Time.Time_Span_Zero)
-       return CPU_Time
-    is
-    begin
-       return CPU_Time (Ada.Real_Time.Time_Of (SC, TS));
-    end Time_Of;
- 
- end Ada.Execution_Time;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-exetim.ads gcc-8.1.0/gcc/ada/a-exetim.ads
*** gcc-7.3.0/gcc/ada/a-exetim.ads	Wed Nov 25 15:30:09 2015
--- gcc-8.1.0/gcc/ada/a-exetim.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,119 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                   A D A . E X E C U T I O N _ T I M E                    --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This unit is not implemented in typical GNAT implementations that lie on
- --  top of operating systems, because it is infeasible to implement in such
- --  environments.
- 
- --  If a target environment provides appropriate support for this package
- --  then the Unimplemented_Unit pragma should be removed from this spec and
- --  an appropriate body provided.
- 
- with Ada.Task_Identification;
- with Ada.Real_Time;
- 
- package Ada.Execution_Time with
-   SPARK_Mode
- is
-    pragma Preelaborate;
- 
-    pragma Unimplemented_Unit;
- 
-    type CPU_Time is private;
- 
-    CPU_Time_First : constant CPU_Time;
-    CPU_Time_Last  : constant CPU_Time;
-    CPU_Time_Unit  : constant := 0.000001;
-    CPU_Tick       : constant Ada.Real_Time.Time_Span;
- 
-    use type Ada.Task_Identification.Task_Id;
- 
-    function Clock
-      (T : Ada.Task_Identification.Task_Id :=
-         Ada.Task_Identification.Current_Task)
-       return CPU_Time
-    with
-      Volatile_Function,
-      Global => Ada.Real_Time.Clock_Time,
-      Pre    => T /= Ada.Task_Identification.Null_Task_Id;
- 
-    function "+"
-      (Left  : CPU_Time;
-       Right : Ada.Real_Time.Time_Span) return CPU_Time
-    with
-      Global => null;
- 
-    function "+"
-      (Left  : Ada.Real_Time.Time_Span;
-       Right : CPU_Time) return CPU_Time
-    with
-      Global => null;
- 
-    function "-"
-      (Left  : CPU_Time;
-       Right : Ada.Real_Time.Time_Span) return CPU_Time
-    with
-      Global => null;
- 
-    function "-"
-      (Left  : CPU_Time;
-       Right : CPU_Time) return Ada.Real_Time.Time_Span
-    with
-      Global => null;
- 
-    function "<"  (Left, Right : CPU_Time) return Boolean with
-      Global => null;
-    function "<=" (Left, Right : CPU_Time) return Boolean with
-      Global => null;
-    function ">"  (Left, Right : CPU_Time) return Boolean with
-      Global => null;
-    function ">=" (Left, Right : CPU_Time) return Boolean with
-      Global => null;
- 
-    procedure Split
-      (T  : CPU_Time;
-       SC : out Ada.Real_Time.Seconds_Count;
-       TS : out Ada.Real_Time.Time_Span)
-    with
-      Global => null;
- 
-    function Time_Of
-      (SC : Ada.Real_Time.Seconds_Count;
-       TS : Ada.Real_Time.Time_Span := Ada.Real_Time.Time_Span_Zero)
-       return CPU_Time
-    with
-      Global => null;
- 
-    Interrupt_Clocks_Supported          : constant Boolean := False;
-    Separate_Interrupt_Clocks_Supported : constant Boolean := False;
- 
-    pragma Warnings (Off, "check will fail at run time");
-    function Clock_For_Interrupts return CPU_Time with
-      Volatile_Function,
-      Global => Ada.Real_Time.Clock_Time,
-      Pre    => Interrupt_Clocks_Supported;
-    pragma Warnings (On, "check will fail at run time");
- 
- private
-    pragma SPARK_Mode (Off);
- 
-    type CPU_Time is new Ada.Real_Time.Time;
- 
-    CPU_Time_First : constant CPU_Time  := CPU_Time (Ada.Real_Time.Time_First);
-    CPU_Time_Last  : constant CPU_Time  := CPU_Time (Ada.Real_Time.Time_Last);
- 
-    CPU_Tick : constant Ada.Real_Time.Time_Span := Ada.Real_Time.Tick;
- 
- end Ada.Execution_Time;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-exexda.adb gcc-8.1.0/gcc/ada/a-exexda.adb
*** gcc-7.3.0/gcc/ada/a-exexda.adb	Fri Oct 16 13:43:47 2015
--- gcc-8.1.0/gcc/ada/a-exexda.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,744 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                       ADA.EXCEPTIONS.EXCEPTION_DATA                      --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 System.Storage_Elements; use System.Storage_Elements;
- 
- separate (Ada.Exceptions)
- package body Exception_Data is
- 
-    --  This unit implements the Exception_Information related services for
-    --  both the Ada standard requirements and the GNAT.Exception_Traces
-    --  facility. This is also used by the implementation of the stream
-    --  attributes of types Exception_Id and Exception_Occurrence.
- 
-    --  There are common parts between the contents of Exception_Information
-    --  (the regular Ada interface) and Untailored_Exception_Information (used
-    --  for streaming, and when there is no symbolic traceback available) The
-    --  overall structure is sketched below:
- 
-    --
-    --                 Untailored_Exception_Information
-    --                               |
-    --                       +-------+--------+
-    --                       |                |
-    --                Basic_Exc_Info & Untailored_Exc_Tback
-    --                    (B_E_I)         (U_E_TB)
- 
-    --           o--
-    --  (B_E_I)  |  Exception_Name: <exception name> (as in Exception_Name)
-    --           |  Message: <message> (or a null line if no message)
-    --           |  PID=nnnn (if nonzero)
-    --           o--
-    --  (U_E_TB) |  Call stack traceback locations:
-    --           |  <0xyyyyyyyy 0xyyyyyyyy ...>
-    --           o--
- 
-    --                     Exception_Information
-    --                               |
-    --                    +----------+----------+
-    --                    |                     |
-    --             Basic_Exc_Info    &      traceback
-    --                                          |
-    --                              +-----------+------------+
-    --                              |                        |
-    --                     Untailored_Exc_Tback    Or    Tback_Decorator
-    --                     if no decorator set           otherwise
- 
-    --  Functions returning String imply secondary stack use, which is a heavy
-    --  mechanism requiring run-time support. Besides, some of the routines we
-    --  provide here are to be used by the default Last_Chance_Handler, at the
-    --  critical point where the runtime is about to be finalized. Since most
-    --  of the items we have at hand are of bounded length, we also provide a
-    --  procedural interface able to incrementally append the necessary bits to
-    --  a preallocated buffer or output them straight to stderr.
- 
-    --  The procedural interface is composed of two major sections: a neutral
-    --  section for basic types like Address, Character, Natural or String, and
-    --  an exception oriented section for the exception names, messages, and
-    --  information. This is the Append_Info family of procedures below.
- 
-    --  Output to stderr is commanded by passing an empty buffer to update, and
-    --  care is taken not to overflow otherwise.
- 
-    --------------------------------------------
-    -- Procedural Interface - Neutral section --
-    --------------------------------------------
- 
-    procedure Append_Info_Address
-      (A    : Address;
-       Info : in out String;
-       Ptr  : in out Natural);
- 
-    procedure Append_Info_Character
-      (C    : Character;
-       Info : in out String;
-       Ptr  : in out Natural);
- 
-    procedure Append_Info_Nat
-      (N    : Natural;
-       Info : in out String;
-       Ptr  : in out Natural);
- 
-    procedure Append_Info_NL
-      (Info : in out String;
-       Ptr  : in out Natural);
-    pragma Inline (Append_Info_NL);
- 
-    procedure Append_Info_String
-      (S    : String;
-       Info : in out String;
-       Ptr  : in out Natural);
- 
-    -------------------------------------------------------
-    -- Procedural Interface - Exception oriented section --
-    -------------------------------------------------------
- 
-    procedure Append_Info_Exception_Name
-      (Id   : Exception_Id;
-       Info : in out String;
-       Ptr  : in out Natural);
- 
-    procedure Append_Info_Exception_Name
-      (X    : Exception_Occurrence;
-       Info : in out String;
-       Ptr  : in out Natural);
- 
-    procedure Append_Info_Exception_Message
-      (X    : Exception_Occurrence;
-       Info : in out String;
-       Ptr  : in out Natural);
- 
-    procedure Append_Info_Basic_Exception_Information
-      (X    : Exception_Occurrence;
-       Info : in out String;
-       Ptr  : in out Natural);
- 
-    procedure Append_Info_Untailored_Exception_Traceback
-      (X    : Exception_Occurrence;
-       Info : in out String;
-       Ptr  : in out Natural);
- 
-    procedure Append_Info_Untailored_Exception_Information
-      (X    : Exception_Occurrence;
-       Info : in out String;
-       Ptr  : in out Natural);
- 
-    --  The "functional" interface to the exception information not involving
-    --  a traceback decorator uses preallocated intermediate buffers to avoid
-    --  the use of secondary stack. Preallocation requires preliminary length
-    --  computation, for which a series of functions are introduced:
- 
-    ---------------------------------
-    -- Length evaluation utilities --
-    ---------------------------------
- 
-    function Basic_Exception_Info_Maxlength
-      (X : Exception_Occurrence) return Natural;
- 
-    function Untailored_Exception_Traceback_Maxlength
-      (X : Exception_Occurrence) return Natural;
- 
-    function Exception_Info_Maxlength
-      (X : Exception_Occurrence) return Natural;
- 
-    function Exception_Name_Length
-      (Id : Exception_Id) return Natural;
- 
-    function Exception_Name_Length
-      (X : Exception_Occurrence) return Natural;
- 
-    function Exception_Message_Length
-      (X : Exception_Occurrence) return Natural;
- 
-    --------------------------
-    -- Functional Interface --
-    --------------------------
- 
-    function Untailored_Exception_Traceback
-      (X : Exception_Occurrence) return String;
-    --  Returns an image of the complete call chain associated with an
-    --  exception occurrence in its most basic form, that is as a raw sequence
-    --  of hexadecimal addresses.
- 
-    function Tailored_Exception_Traceback
-      (X : Exception_Occurrence) return String;
-    --  Returns an image of the complete call chain associated with an
-    --  exception occurrence, either in its basic form if no decorator is
-    --  in place, or as formatted by the decorator otherwise.
- 
-    -----------------------------------------------------------------------
-    -- Services for the default Last_Chance_Handler and the task wrapper --
-    -----------------------------------------------------------------------
- 
-    pragma Export
-      (Ada, Append_Info_Exception_Message, "__gnat_append_info_e_msg");
- 
-    pragma Export
-      (Ada, Append_Info_Untailored_Exception_Information,
-       "__gnat_append_info_u_e_info");
- 
-    pragma Export
-      (Ada, Exception_Message_Length, "__gnat_exception_msg_len");
- 
-    function Get_Executable_Load_Address return System.Address;
-    pragma Import (C, Get_Executable_Load_Address,
-                   "__gnat_get_executable_load_address");
-    --  Get the load address of the executable, or Null_Address if not known
- 
-    -------------------------
-    -- Append_Info_Address --
-    -------------------------
- 
-    procedure Append_Info_Address
-      (A    : Address;
-       Info : in out String;
-       Ptr  : in out Natural)
-    is
-       S : String (1 .. 18);
-       P : Natural;
-       N : Integer_Address;
- 
-       H : constant array (Integer range 0 .. 15) of Character :=
-         "0123456789abcdef";
-    begin
-       P := S'Last;
-       N := To_Integer (A);
-       loop
-          S (P) := H (Integer (N mod 16));
-          P := P - 1;
-          N := N / 16;
-          exit when N = 0;
-       end loop;
- 
-       S (P - 1) := '0';
-       S (P) := 'x';
- 
-       Append_Info_String (S (P - 1 .. S'Last), Info, Ptr);
-    end Append_Info_Address;
- 
-    ---------------------------------------------
-    -- Append_Info_Basic_Exception_Information --
-    ---------------------------------------------
- 
-    --  To ease the maximum length computation, we define and pull out some
-    --  string constants:
- 
-    BEI_Name_Header : constant String := "raised ";
-    BEI_Msg_Header  : constant String := " : ";
-    BEI_PID_Header  : constant String := "PID: ";
- 
-    procedure Append_Info_Basic_Exception_Information
-      (X    : Exception_Occurrence;
-       Info : in out String;
-       Ptr  : in out Natural)
-    is
-       Name : String (1 .. Exception_Name_Length (X));
-       --  Buffer in which to fetch the exception name, in order to check
-       --  whether this is an internal _ABORT_SIGNAL or a regular occurrence.
- 
-       Name_Ptr : Natural := Name'First - 1;
- 
-    begin
-       --  Output exception name and message except for _ABORT_SIGNAL, where
-       --  these two lines are omitted.
- 
-       Append_Info_Exception_Name (X, Name, Name_Ptr);
- 
-       if Name (Name'First) /= '_' then
-          Append_Info_String (BEI_Name_Header, Info, Ptr);
-          Append_Info_String (Name, Info, Ptr);
- 
-          if Exception_Message_Length (X) /= 0 then
-             Append_Info_String (BEI_Msg_Header, Info, Ptr);
-             Append_Info_Exception_Message  (X, Info, Ptr);
-          end if;
- 
-          Append_Info_NL (Info, Ptr);
-       end if;
- 
-       --  Output PID line if nonzero
- 
-       if X.Pid /= 0 then
-          Append_Info_String (BEI_PID_Header, Info, Ptr);
-          Append_Info_Nat (X.Pid, Info, Ptr);
-          Append_Info_NL (Info, Ptr);
-       end if;
-    end Append_Info_Basic_Exception_Information;
- 
-    ---------------------------
-    -- Append_Info_Character --
-    ---------------------------
- 
-    procedure Append_Info_Character
-      (C    : Character;
-       Info : in out String;
-       Ptr  : in out Natural)
-    is
-    begin
-       if Info'Length = 0 then
-          To_Stderr (C);
-       elsif Ptr < Info'Last then
-          Ptr := Ptr + 1;
-          Info (Ptr) := C;
-       end if;
-    end Append_Info_Character;
- 
-    -----------------------------------
-    -- Append_Info_Exception_Message --
-    -----------------------------------
- 
-    procedure Append_Info_Exception_Message
-      (X    : Exception_Occurrence;
-       Info : in out String;
-       Ptr  : in out Natural)
-    is
-    begin
-       if X.Id = Null_Id then
-          raise Constraint_Error;
-       end if;
- 
-       declare
-          Len : constant Natural           := Exception_Message_Length (X);
-          Msg : constant String (1 .. Len) := X.Msg (1 .. Len);
-       begin
-          Append_Info_String (Msg, Info, Ptr);
-       end;
-    end Append_Info_Exception_Message;
- 
-    --------------------------------
-    -- Append_Info_Exception_Name --
-    --------------------------------
- 
-    procedure Append_Info_Exception_Name
-      (Id   : Exception_Id;
-       Info : in out String;
-       Ptr  : in out Natural)
-    is
-    begin
-       if Id = Null_Id then
-          raise Constraint_Error;
-       end if;
- 
-       declare
-          Len  : constant Natural           := Exception_Name_Length (Id);
-          Name : constant String (1 .. Len) := To_Ptr (Id.Full_Name) (1 .. Len);
-       begin
-          Append_Info_String (Name, Info, Ptr);
-       end;
-    end Append_Info_Exception_Name;
- 
-    procedure Append_Info_Exception_Name
-      (X    : Exception_Occurrence;
-       Info : in out String;
-       Ptr  : in out Natural)
-    is
-    begin
-       Append_Info_Exception_Name (X.Id, Info, Ptr);
-    end Append_Info_Exception_Name;
- 
-    ------------------------------
-    -- Exception_Info_Maxlength --
-    ------------------------------
- 
-    function Exception_Info_Maxlength
-      (X : Exception_Occurrence) return Natural
-    is
-    begin
-       return
-         Basic_Exception_Info_Maxlength (X)
-         + Untailored_Exception_Traceback_Maxlength (X);
-    end Exception_Info_Maxlength;
- 
-    ---------------------
-    -- Append_Info_Nat --
-    ---------------------
- 
-    procedure Append_Info_Nat
-      (N    : Natural;
-       Info : in out String;
-       Ptr  : in out Natural)
-    is
-    begin
-       if N > 9 then
-          Append_Info_Nat (N / 10, Info, Ptr);
-       end if;
- 
-       Append_Info_Character
-         (Character'Val (Character'Pos ('0') + N mod 10), Info, Ptr);
-    end Append_Info_Nat;
- 
-    --------------------
-    -- Append_Info_NL --
-    --------------------
- 
-    procedure Append_Info_NL
-      (Info : in out String;
-       Ptr  : in out Natural)
-    is
-    begin
-       Append_Info_Character (ASCII.LF, Info, Ptr);
-    end Append_Info_NL;
- 
-    ------------------------
-    -- Append_Info_String --
-    ------------------------
- 
-    procedure Append_Info_String
-      (S    : String;
-       Info : in out String;
-       Ptr  : in out Natural)
-    is
-    begin
-       if Info'Length = 0 then
-          To_Stderr (S);
-       else
-          declare
-             Last : constant Natural :=
-               Integer'Min (Ptr + S'Length, Info'Last);
-          begin
-             Info (Ptr + 1 .. Last) := S;
-             Ptr := Last;
-          end;
-       end if;
-    end Append_Info_String;
- 
-    --------------------------------------------------
-    -- Append_Info_Untailored_Exception_Information --
-    --------------------------------------------------
- 
-    procedure Append_Info_Untailored_Exception_Information
-      (X    : Exception_Occurrence;
-       Info : in out String;
-       Ptr  : in out Natural)
-    is
-    begin
-       Append_Info_Basic_Exception_Information (X, Info, Ptr);
-       Append_Info_Untailored_Exception_Traceback (X, Info, Ptr);
-    end Append_Info_Untailored_Exception_Information;
- 
-    ------------------------------------------------
-    -- Append_Info_Untailored_Exception_Traceback --
-    ------------------------------------------------
- 
-    --  As for Basic_Exception_Information:
- 
-    BETB_Header : constant String := "Call stack traceback locations:";
-    LDAD_Header : constant String := "Load address: ";
- 
-    procedure Append_Info_Untailored_Exception_Traceback
-      (X    : Exception_Occurrence;
-       Info : in out String;
-       Ptr  : in out Natural)
-    is
-       Load_Address : Address;
- 
-    begin
-       if X.Num_Tracebacks = 0 then
-          return;
-       end if;
- 
-       --  The executable load address line
- 
-       Load_Address := Get_Executable_Load_Address;
- 
-       if Load_Address /= Null_Address then
-          Append_Info_String (LDAD_Header, Info, Ptr);
-          Append_Info_Address (Load_Address, Info, Ptr);
-          Append_Info_NL (Info, Ptr);
-       end if;
- 
-       --  The traceback lines
- 
-       Append_Info_String (BETB_Header, Info, Ptr);
-       Append_Info_NL (Info, Ptr);
- 
-       for J in 1 .. X.Num_Tracebacks loop
-          Append_Info_Address (TBE.PC_For (X.Tracebacks (J)), Info, Ptr);
-          exit when J = X.Num_Tracebacks;
-          Append_Info_Character (' ', Info, Ptr);
-       end loop;
- 
-       Append_Info_NL (Info, Ptr);
-    end Append_Info_Untailored_Exception_Traceback;
- 
-    -------------------------------------------
-    -- Basic_Exception_Information_Maxlength --
-    -------------------------------------------
- 
-    function Basic_Exception_Info_Maxlength
-      (X : Exception_Occurrence) return Natural
-    is
-    begin
-       return
-         BEI_Name_Header'Length + Exception_Name_Length (X)
-         + BEI_Msg_Header'Length + Exception_Message_Length (X) + 1
-         + BEI_PID_Header'Length + 15;
-    end Basic_Exception_Info_Maxlength;
- 
-    ---------------------------
-    -- Exception_Information --
-    ---------------------------
- 
-    function Exception_Information (X : Exception_Occurrence) return String is
-       --  The tailored exception information is the basic information
-       --  associated with the tailored call chain backtrace.
- 
-       Tback_Info : constant String  := Tailored_Exception_Traceback (X);
-       Tback_Len  : constant Natural := Tback_Info'Length;
- 
-       Info : String (1 .. Basic_Exception_Info_Maxlength (X) + Tback_Len);
-       Ptr  : Natural := Info'First - 1;
- 
-    begin
-       Append_Info_Basic_Exception_Information (X, Info, Ptr);
-       Append_Info_String (Tback_Info, Info, Ptr);
-       return Info (Info'First .. Ptr);
-    end Exception_Information;
- 
-    ------------------------------
-    -- Exception_Message_Length --
-    ------------------------------
- 
-    function Exception_Message_Length
-      (X : Exception_Occurrence) return Natural
-    is
-    begin
-       return X.Msg_Length;
-    end Exception_Message_Length;
- 
-    ---------------------------
-    -- Exception_Name_Length --
-    ---------------------------
- 
-    function Exception_Name_Length (Id : Exception_Id) return Natural is
-    begin
-       --  What is stored in the internal Name buffer includes a terminating
-       --  null character that we never care about.
- 
-       return Id.Name_Length - 1;
-    end Exception_Name_Length;
- 
-    function Exception_Name_Length (X : Exception_Occurrence) return Natural is
-    begin
-       return Exception_Name_Length (X.Id);
-    end Exception_Name_Length;
- 
-    -------------------------------
-    -- Untailored_Exception_Traceback --
-    -------------------------------
- 
-    function Untailored_Exception_Traceback
-      (X : Exception_Occurrence) return String
-    is
-       Info : aliased String
-                        (1 .. Untailored_Exception_Traceback_Maxlength (X));
-       Ptr  : Natural := Info'First - 1;
-    begin
-       Append_Info_Untailored_Exception_Traceback (X, Info, Ptr);
-       return Info (Info'First .. Ptr);
-    end Untailored_Exception_Traceback;
- 
-    --------------------------------------
-    -- Untailored_Exception_Information --
-    --------------------------------------
- 
-    function Untailored_Exception_Information
-      (X : Exception_Occurrence) return String
-    is
-       Info : String (1 .. Exception_Info_Maxlength (X));
-       Ptr  : Natural := Info'First - 1;
-    begin
-       Append_Info_Untailored_Exception_Information (X, Info, Ptr);
-       return Info (Info'First .. Ptr);
-    end Untailored_Exception_Information;
- 
-    -------------------------
-    -- Set_Exception_C_Msg --
-    -------------------------
- 
-    procedure Set_Exception_C_Msg
-      (Excep  : EOA;
-       Id     : Exception_Id;
-       Msg1   : System.Address;
-       Line   : Integer        := 0;
-       Column : Integer        := 0;
-       Msg2   : System.Address := System.Null_Address)
-    is
-       Remind : Integer;
-       Ptr    : Natural;
- 
-       procedure Append_Number (Number : Integer);
-       --  Append given number to Excep.Msg
- 
-       -------------------
-       -- Append_Number --
-       -------------------
- 
-       procedure Append_Number (Number : Integer) is
-          Val  : Integer;
-          Size : Integer;
- 
-       begin
-          if Number <= 0 then
-             return;
-          end if;
- 
-          --  Compute the number of needed characters
- 
-          Size := 1;
-          Val := Number;
-          while Val > 0 loop
-             Val := Val / 10;
-             Size := Size + 1;
-          end loop;
- 
-          --  If enough characters are available, put the line number
- 
-          if Excep.Msg_Length <= Exception_Msg_Max_Length - Size then
-             Excep.Msg (Excep.Msg_Length + 1) := ':';
-             Excep.Msg_Length := Excep.Msg_Length + Size;
- 
-             Val := Number;
-             Size := 0;
-             while Val > 0 loop
-                Remind := Val rem 10;
-                Val := Val / 10;
-                Excep.Msg (Excep.Msg_Length - Size) :=
-                  Character'Val (Remind + Character'Pos ('0'));
-                Size := Size + 1;
-             end loop;
-          end if;
-       end Append_Number;
- 
-    --  Start of processing for Set_Exception_C_Msg
- 
-    begin
-       Excep.Exception_Raised := False;
-       Excep.Id               := Id;
-       Excep.Num_Tracebacks   := 0;
-       Excep.Pid              := Local_Partition_ID;
-       Excep.Msg_Length       := 0;
- 
-       while To_Ptr (Msg1) (Excep.Msg_Length + 1) /= ASCII.NUL
-         and then Excep.Msg_Length < Exception_Msg_Max_Length
-       loop
-          Excep.Msg_Length := Excep.Msg_Length + 1;
-          Excep.Msg (Excep.Msg_Length) := To_Ptr (Msg1) (Excep.Msg_Length);
-       end loop;
- 
-       Append_Number (Line);
-       Append_Number (Column);
- 
-       --  Append second message if present
- 
-       if Msg2 /= System.Null_Address
-         and then Excep.Msg_Length + 1 < Exception_Msg_Max_Length
-       then
-          Excep.Msg_Length := Excep.Msg_Length + 1;
-          Excep.Msg (Excep.Msg_Length) := ' ';
- 
-          Ptr := 1;
-          while To_Ptr (Msg2) (Ptr) /= ASCII.NUL
-            and then Excep.Msg_Length < Exception_Msg_Max_Length
-          loop
-             Excep.Msg_Length := Excep.Msg_Length + 1;
-             Excep.Msg (Excep.Msg_Length) := To_Ptr (Msg2) (Ptr);
-             Ptr := Ptr + 1;
-          end loop;
-       end if;
-    end Set_Exception_C_Msg;
- 
-    -----------------------
-    -- Set_Exception_Msg --
-    -----------------------
- 
-    procedure Set_Exception_Msg
-      (Excep   : EOA;
-       Id      : Exception_Id;
-       Message : String)
-    is
-       Len : constant Natural :=
-               Natural'Min (Message'Length, Exception_Msg_Max_Length);
-       First : constant Integer := Message'First;
-    begin
-       Excep.Exception_Raised := False;
-       Excep.Msg_Length       := Len;
-       Excep.Msg (1 .. Len)   := Message (First .. First + Len - 1);
-       Excep.Id               := Id;
-       Excep.Num_Tracebacks   := 0;
-       Excep.Pid              := Local_Partition_ID;
-    end Set_Exception_Msg;
- 
-    ----------------------------------
-    -- Tailored_Exception_Traceback --
-    ----------------------------------
- 
-    function Tailored_Exception_Traceback
-      (X : Exception_Occurrence) return String
-    is
-       --  We reference the decorator *wrapper* here and not the decorator
-       --  itself. The purpose of the local variable Wrapper is to prevent a
-       --  potential race condition in the code below. The atomicity of this
-       --  assignment is enforced by pragma Atomic in System.Soft_Links.
- 
-       --  The potential race condition here, if no local variable was used,
-       --  relates to the test upon the wrapper's value and the call, which
-       --  are not performed atomically. With the local variable, potential
-       --  changes of the wrapper's global value between the test and the
-       --  call become inoffensive.
- 
-       Wrapper : constant Traceback_Decorator_Wrapper_Call :=
-                   Traceback_Decorator_Wrapper;
- 
-    begin
-       if Wrapper = null then
-          return Untailored_Exception_Traceback (X);
-       else
-          return Wrapper.all (X.Tracebacks'Address, X.Num_Tracebacks);
-       end if;
-    end Tailored_Exception_Traceback;
- 
-    ----------------------------------------------
-    -- Untailored_Exception_Traceback_Maxlength --
-    ----------------------------------------------
- 
-    function Untailored_Exception_Traceback_Maxlength
-      (X : Exception_Occurrence) return Natural
-    is
-       Space_Per_Address : constant := 2 + 16 + 1;
-       --  Space for "0x" + HHHHHHHHHHHHHHHH + " "
-    begin
-       return
-         LDAD_Header'Length + Space_Per_Address + BETB_Header'Length + 1 +
-           X.Num_Tracebacks * Space_Per_Address + 1;
-    end Untailored_Exception_Traceback_Maxlength;
- 
- end Exception_Data;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-exexpr-gcc.adb gcc-8.1.0/gcc/ada/a-exexpr-gcc.adb
*** gcc-7.3.0/gcc/ada/a-exexpr-gcc.adb	Fri Jan  6 10:28:06 2017
--- gcc-8.1.0/gcc/ada/a-exexpr-gcc.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,439 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --  A D A . E X C E P T I O N S . E X C E P T I O N _ P R O P A G A T I O N --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 version using the GCC EH mechanism
- 
- with Ada.Unchecked_Conversion;
- with Ada.Unchecked_Deallocation;
- 
- with System.Storage_Elements;   use System.Storage_Elements;
- with System.Exceptions.Machine; use System.Exceptions.Machine;
- 
- separate (Ada.Exceptions)
- package body Exception_Propagation is
- 
-    use Exception_Traces;
- 
-    Foreign_Exception : aliased System.Standard_Library.Exception_Data;
-    pragma Import (Ada, Foreign_Exception,
-                   "system__exceptions__foreign_exception");
-    --  Id for foreign exceptions
- 
-    --------------------------------------------------------------
-    -- GNAT Specific Entities To Deal With The GCC EH Circuitry --
-    --------------------------------------------------------------
- 
-    procedure GNAT_GCC_Exception_Cleanup
-      (Reason : Unwind_Reason_Code;
-       Excep  : not null GNAT_GCC_Exception_Access);
-    pragma Convention (C, GNAT_GCC_Exception_Cleanup);
-    --  Procedure called when a GNAT GCC exception is free.
- 
-    procedure Propagate_GCC_Exception
-      (GCC_Exception : not null GCC_Exception_Access);
-    pragma No_Return (Propagate_GCC_Exception);
-    --  Propagate a GCC exception
- 
-    procedure Reraise_GCC_Exception
-      (GCC_Exception : not null GCC_Exception_Access);
-    pragma No_Return (Reraise_GCC_Exception);
-    pragma Export (C, Reraise_GCC_Exception, "__gnat_reraise_zcx");
-    --  Called to implement raise without exception, ie reraise. Called
-    --  directly from gigi.
- 
-    function Setup_Current_Excep
-      (GCC_Exception : not null GCC_Exception_Access) return EOA;
-    pragma Export (C, Setup_Current_Excep, "__gnat_setup_current_excep");
-    --  Write Get_Current_Excep.all from GCC_Exception. Called by the
-    --  personality routine.
- 
-    procedure Unhandled_Except_Handler
-      (GCC_Exception : not null GCC_Exception_Access);
-    pragma No_Return (Unhandled_Except_Handler);
-    pragma Export (C, Unhandled_Except_Handler,
-                   "__gnat_unhandled_except_handler");
-    --  Called for handle unhandled exceptions, ie the last chance handler
-    --  on platforms (such as SEH) that never returns after throwing an
-    --  exception. Called directly by gigi.
- 
-    function CleanupUnwind_Handler
-      (UW_Version   : Integer;
-       UW_Phases    : Unwind_Action;
-       UW_Eclass    : Exception_Class;
-       UW_Exception : not null GCC_Exception_Access;
-       UW_Context   : System.Address;
-       UW_Argument  : System.Address) return Unwind_Reason_Code;
-    pragma Import (C, CleanupUnwind_Handler,
-                   "__gnat_cleanupunwind_handler");
-    --  Hook called at each step of the forced unwinding we perform to trigger
-    --  cleanups found during the propagation of an unhandled exception.
- 
-    --  GCC runtime functions used. These are C non-void functions, actually,
-    --  but we ignore the return values. See raise.c as to why we are using
-    --  __gnat stubs for these.
- 
-    procedure Unwind_RaiseException
-      (UW_Exception : not null GCC_Exception_Access);
-    pragma Import (C, Unwind_RaiseException, "__gnat_Unwind_RaiseException");
- 
-    procedure Unwind_ForcedUnwind
-      (UW_Exception : not null GCC_Exception_Access;
-       UW_Handler   : System.Address;
-       UW_Argument  : System.Address);
-    pragma Import (C, Unwind_ForcedUnwind, "__gnat_Unwind_ForcedUnwind");
- 
-    procedure Set_Exception_Parameter
-      (Excep         : EOA;
-       GCC_Exception : not null GCC_Exception_Access);
-    pragma Export
-      (C, Set_Exception_Parameter, "__gnat_set_exception_parameter");
-    --  Called inserted by gigi to set the exception choice parameter from the
-    --  gcc occurrence.
- 
-    procedure Set_Foreign_Occurrence (Excep : EOA; Mo : System.Address);
-    --  Utility routine to initialize occurrence Excep from a foreign exception
-    --  whose machine occurrence is Mo. The message is empty, the backtrace
-    --  is empty too and the exception identity is Foreign_Exception.
- 
-    --  Hooks called when entering/leaving an exception handler for a given
-    --  occurrence, aimed at handling the stack of active occurrences. The
-    --  calls are generated by gigi in tree_transform/N_Exception_Handler.
- 
-    procedure Begin_Handler (GCC_Exception : not null GCC_Exception_Access);
-    pragma Export (C, Begin_Handler, "__gnat_begin_handler");
- 
-    procedure End_Handler (GCC_Exception : GCC_Exception_Access);
-    pragma Export (C, End_Handler, "__gnat_end_handler");
- 
-    --------------------------------------------------------------------
-    -- Accessors to Basic Components of a GNAT Exception Data Pointer --
-    --------------------------------------------------------------------
- 
-    --  As of today, these are only used by the C implementation of the GCC
-    --  propagation personality routine to avoid having to rely on a C
-    --  counterpart of the whole exception_data structure, which is both
-    --  painful and error prone. These subprograms could be moved to a more
-    --  widely visible location if need be.
- 
-    function Is_Handled_By_Others (E : Exception_Data_Ptr) return Boolean;
-    pragma Export (C, Is_Handled_By_Others, "__gnat_is_handled_by_others");
-    pragma Warnings (Off, Is_Handled_By_Others);
- 
-    function Language_For (E : Exception_Data_Ptr) return Character;
-    pragma Export (C, Language_For, "__gnat_language_for");
- 
-    function Foreign_Data_For (E : Exception_Data_Ptr) return Address;
-    pragma Export (C, Foreign_Data_For, "__gnat_foreign_data_for");
- 
-    function EID_For (GNAT_Exception : not null GNAT_GCC_Exception_Access)
-      return Exception_Id;
-    pragma Export (C, EID_For, "__gnat_eid_for");
- 
-    ---------------------------------------------------------------------------
-    -- Objects to materialize "others" and "all others" in the GCC EH tables --
-    ---------------------------------------------------------------------------
- 
-    --  Currently, these only have their address taken and compared so there is
-    --  no real point having whole exception data blocks allocated. Note that
-    --  there are corresponding declarations in gigi (trans.c) which must be
-    --  kept properly synchronized.
- 
-    Others_Value : constant Character := 'O';
-    pragma Export (C, Others_Value, "__gnat_others_value");
- 
-    All_Others_Value : constant Character := 'A';
-    pragma Export (C, All_Others_Value, "__gnat_all_others_value");
- 
-    Unhandled_Others_Value : constant Character := 'U';
-    pragma Export (C, Unhandled_Others_Value, "__gnat_unhandled_others_value");
-    --  Special choice (emitted by gigi) to catch and notify unhandled
-    --  exceptions on targets which always handle exceptions (such as SEH).
-    --  The handler will simply call Unhandled_Except_Handler.
- 
-    -------------------------
-    -- Allocate_Occurrence --
-    -------------------------
- 
-    function Allocate_Occurrence return EOA is
-       Res : GNAT_GCC_Exception_Access;
- 
-    begin
-       Res := New_Occurrence;
-       Res.Header.Cleanup := GNAT_GCC_Exception_Cleanup'Address;
-       Res.Occurrence.Machine_Occurrence := Res.all'Address;
- 
-       return Res.Occurrence'Access;
-    end Allocate_Occurrence;
- 
-    --------------------------------
-    -- GNAT_GCC_Exception_Cleanup --
-    --------------------------------
- 
-    procedure GNAT_GCC_Exception_Cleanup
-      (Reason : Unwind_Reason_Code;
-       Excep  : not null GNAT_GCC_Exception_Access)
-    is
-       pragma Unreferenced (Reason);
- 
-       procedure Free is new Unchecked_Deallocation
-         (GNAT_GCC_Exception, GNAT_GCC_Exception_Access);
- 
-       Copy : GNAT_GCC_Exception_Access := Excep;
- 
-    begin
-       --  Simply free the memory
- 
-       Free (Copy);
-    end GNAT_GCC_Exception_Cleanup;
- 
-    ----------------------------
-    -- Set_Foreign_Occurrence --
-    ----------------------------
- 
-    procedure Set_Foreign_Occurrence (Excep : EOA; Mo : System.Address) is
-    begin
-       Excep.all := (
-         Id                 => Foreign_Exception'Access,
-         Machine_Occurrence => Mo,
-         Msg                => <>,
-         Msg_Length         => 0,
-         Exception_Raised   => True,
-         Pid                => Local_Partition_ID,
-         Num_Tracebacks     => 0,
-         Tracebacks         => <>);
-    end Set_Foreign_Occurrence;
- 
-    -------------------------
-    -- Setup_Current_Excep --
-    -------------------------
- 
-    function Setup_Current_Excep
-      (GCC_Exception : not null GCC_Exception_Access) return EOA
-    is
-       Excep : constant EOA := Get_Current_Excep.all;
- 
-    begin
-       --  Setup the exception occurrence
- 
-       if GCC_Exception.Class = GNAT_Exception_Class then
- 
-          --  From the GCC exception
- 
-          declare
-             GNAT_Occurrence : constant GNAT_GCC_Exception_Access :=
-                                 To_GNAT_GCC_Exception (GCC_Exception);
-          begin
-             Excep.all := GNAT_Occurrence.Occurrence;
-             return GNAT_Occurrence.Occurrence'Access;
-          end;
- 
-       else
-          --  A default one
- 
-          Set_Foreign_Occurrence (Excep, GCC_Exception.all'Address);
- 
-          return Excep;
-       end if;
-    end Setup_Current_Excep;
- 
-    -------------------
-    -- Begin_Handler --
-    -------------------
- 
-    procedure Begin_Handler (GCC_Exception : not null GCC_Exception_Access) is
-       pragma Unreferenced (GCC_Exception);
-    begin
-       null;
-    end Begin_Handler;
- 
-    -----------------
-    -- End_Handler --
-    -----------------
- 
-    procedure End_Handler (GCC_Exception : GCC_Exception_Access) is
-    begin
-       if GCC_Exception /= null then
- 
-          --  The exception might have been reraised, in this case the cleanup
-          --  mustn't be called.
- 
-          Unwind_DeleteException (GCC_Exception);
-       end if;
-    end End_Handler;
- 
-    -----------------------------
-    -- Reraise_GCC_Exception --
-    -----------------------------
- 
-    procedure Reraise_GCC_Exception
-      (GCC_Exception : not null GCC_Exception_Access)
-    is
-    begin
-       --  Simply propagate it
- 
-       Propagate_GCC_Exception (GCC_Exception);
-    end Reraise_GCC_Exception;
- 
-    -----------------------------
-    -- Propagate_GCC_Exception --
-    -----------------------------
- 
-    --  Call Unwind_RaiseException to actually throw, taking care of handling
-    --  the two phase scheme it implements.
- 
-    procedure Propagate_GCC_Exception
-      (GCC_Exception : not null GCC_Exception_Access)
-    is
-       Excep : EOA;
- 
-    begin
-       --  Perform a standard raise first. If a regular handler is found, it
-       --  will be entered after all the intermediate cleanups have run. If
-       --  there is no regular handler, it will return.
- 
-       Unwind_RaiseException (GCC_Exception);
- 
-       --  If we get here we know the exception is not handled, as otherwise
-       --  Unwind_RaiseException arranges for the handler to be entered. Take
-       --  the necessary steps to enable the debugger to gain control while the
-       --  stack is still intact.
- 
-       Excep := Setup_Current_Excep (GCC_Exception);
-       Notify_Unhandled_Exception (Excep);
- 
-       --  Now, un a forced unwind to trigger cleanups. Control should not
-       --  resume there, if there are cleanups and in any cases as the
-       --  unwinding hook calls Unhandled_Exception_Terminate when end of
-       --  stack is reached.
- 
-       Unwind_ForcedUnwind
-         (GCC_Exception,
-          CleanupUnwind_Handler'Address,
-          System.Null_Address);
- 
-       --  We get here in case of error. The debugger has been notified before
-       --  the second step above.
- 
-       Unhandled_Except_Handler (GCC_Exception);
-    end Propagate_GCC_Exception;
- 
-    -------------------------
-    -- Propagate_Exception --
-    -------------------------
- 
-    procedure Propagate_Exception (Excep : EOA) is
-    begin
-       Propagate_GCC_Exception (To_GCC_Exception (Excep.Machine_Occurrence));
-    end Propagate_Exception;
- 
-    -----------------------------
-    -- Set_Exception_Parameter --
-    -----------------------------
- 
-    procedure Set_Exception_Parameter
-      (Excep         : EOA;
-       GCC_Exception : not null GCC_Exception_Access)
-    is
-    begin
-       --  Setup the exception occurrence
- 
-       if GCC_Exception.Class = GNAT_Exception_Class then
- 
-          --  From the GCC exception
- 
-          declare
-             GNAT_Occurrence : constant GNAT_GCC_Exception_Access :=
-                                 To_GNAT_GCC_Exception (GCC_Exception);
-          begin
-             Save_Occurrence (Excep.all, GNAT_Occurrence.Occurrence);
-          end;
- 
-       else
-          --  A default one
- 
-          Set_Foreign_Occurrence (Excep, GCC_Exception.all'Address);
-       end if;
-    end Set_Exception_Parameter;
- 
-    ------------------------------
-    -- Unhandled_Except_Handler --
-    ------------------------------
- 
-    procedure Unhandled_Except_Handler
-      (GCC_Exception : not null GCC_Exception_Access)
-    is
-       Excep : EOA;
-    begin
-       Excep := Setup_Current_Excep (GCC_Exception);
-       Unhandled_Exception_Terminate (Excep);
-    end Unhandled_Except_Handler;
- 
-    -------------
-    -- EID_For --
-    -------------
- 
-    function EID_For
-      (GNAT_Exception : not null GNAT_GCC_Exception_Access) return Exception_Id
-    is
-    begin
-       return GNAT_Exception.Occurrence.Id;
-    end EID_For;
- 
-    ----------------------
-    -- Foreign_Data_For --
-    ----------------------
- 
-    function Foreign_Data_For
-      (E : SSL.Exception_Data_Ptr) return Address
-    is
-    begin
-       return E.Foreign_Data;
-    end Foreign_Data_For;
- 
-    --------------------------
-    -- Is_Handled_By_Others --
-    --------------------------
- 
-    function Is_Handled_By_Others (E : SSL.Exception_Data_Ptr) return Boolean is
-    begin
-       return not E.all.Not_Handled_By_Others;
-    end Is_Handled_By_Others;
- 
-    ------------------
-    -- Language_For --
-    ------------------
- 
-    function Language_For (E : SSL.Exception_Data_Ptr) return Character is
-    begin
-       return E.all.Lang;
-    end Language_For;
- 
- end Exception_Propagation;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-exexpr.adb gcc-8.1.0/gcc/ada/a-exexpr.adb
*** gcc-7.3.0/gcc/ada/a-exexpr.adb	Mon Jul 16 13:00:24 2012
--- gcc-8.1.0/gcc/ada/a-exexpr.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,99 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --  A D A . E X C E P T I O N S . E X C E P T I O N _ P R O P A G A T I O N --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2012, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 default version, using the __builtin_setjmp/longjmp EH
- --  mechanism.
- 
- with Ada.Unchecked_Conversion;
- 
- separate (Ada.Exceptions)
- package body Exception_Propagation is
- 
-    --  Common binding to __builtin_longjmp for sjlj variants.
- 
-    procedure builtin_longjmp (buffer : System.Address; Flag : Integer);
-    pragma No_Return (builtin_longjmp);
-    pragma Import (Intrinsic, builtin_longjmp, "__builtin_longjmp");
- 
-    procedure Propagate_Continue (E : Exception_Id);
-    pragma No_Return (Propagate_Continue);
-    pragma Export (C, Propagate_Continue, "__gnat_raise_nodefer_with_msg");
-    --  A call to this procedure is inserted automatically by GIGI, in order
-    --  to continue the propagation when the exception was not handled.
-    --  The linkage name is historical.
- 
-    -------------------------
-    -- Allocate_Occurrence --
-    -------------------------
- 
-    function Allocate_Occurrence return EOA is
-    begin
-       return Get_Current_Excep.all;
-    end Allocate_Occurrence;
- 
-    -------------------------
-    -- Propagate_Exception --
-    -------------------------
- 
-    procedure Propagate_Exception (Excep : EOA) is
-       Jumpbuf_Ptr : constant Address := Get_Jmpbuf_Address.all;
- 
-    begin
-       --  If the jump buffer pointer is non-null, transfer control using
-       --  it. Otherwise announce an unhandled exception (note that this
-       --  means that we have no finalizations to do other than at the outer
-       --  level). Perform the necessary notification tasks in both cases.
- 
-       if Jumpbuf_Ptr /= Null_Address then
-          if not Excep.Exception_Raised then
-             Excep.Exception_Raised := True;
-             Exception_Traces.Notify_Handled_Exception (Excep);
-          end if;
- 
-          builtin_longjmp (Jumpbuf_Ptr, 1);
- 
-       else
-          Exception_Traces.Notify_Unhandled_Exception (Excep);
-          Exception_Traces.Unhandled_Exception_Terminate (Excep);
-       end if;
-    end Propagate_Exception;
- 
-    ------------------------
-    -- Propagate_Continue --
-    ------------------------
- 
-    procedure Propagate_Continue (E : Exception_Id) is
-       pragma Unreferenced (E);
-    begin
-       Propagate_Exception (Get_Current_Excep.all);
-    end Propagate_Continue;
- 
- end Exception_Propagation;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-exextr.adb gcc-8.1.0/gcc/ada/a-exextr.adb
*** gcc-7.3.0/gcc/ada/a-exextr.adb	Fri Oct 23 12:50:16 2015
--- gcc-8.1.0/gcc/ada/a-exextr.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,201 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                      ADA.EXCEPTIONS.EXCEPTION_TRACES                     --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Unchecked_Conversion;
- 
- pragma Warnings (Off);
- with Ada.Exceptions.Last_Chance_Handler;
- pragma Warnings (On);
- --  Bring last chance handler into closure
- 
- separate (Ada.Exceptions)
- package body Exception_Traces is
- 
-    Nline : constant String := String'(1 => ASCII.LF);
-    --  Convenient shortcut
- 
-    type Exception_Action is access procedure (E : Exception_Occurrence);
-    Global_Action : Exception_Action := null;
-    pragma Export
-      (Ada, Global_Action, "__gnat_exception_actions_global_action");
-    --  Global action, executed whenever an exception is raised.  Changing the
-    --  export name must be coordinated with code in g-excact.adb.
- 
-    Raise_Hook_Initialized : Boolean := False;
-    pragma Export
-      (Ada, Raise_Hook_Initialized, "__gnat_exception_actions_initialized");
- 
-    procedure Last_Chance_Handler (Except : Exception_Occurrence);
-    pragma Import (C, Last_Chance_Handler, "__gnat_last_chance_handler");
-    pragma No_Return (Last_Chance_Handler);
-    --  Users can replace the default version of this routine,
-    --  Ada.Exceptions.Last_Chance_Handler.
- 
-    function To_Action is new Ada.Unchecked_Conversion
-      (Raise_Action, Exception_Action);
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    procedure Notify_Exception (Excep : EOA; Is_Unhandled : Boolean);
-    --  Factorizes the common processing for Notify_Handled_Exception and
-    --  Notify_Unhandled_Exception. Is_Unhandled is set to True only in the
-    --  latter case because Notify_Handled_Exception may be called for an
-    --  actually unhandled occurrence in the Front-End-SJLJ case.
- 
-    ----------------------
-    -- Notify_Exception --
-    ----------------------
- 
-    procedure Notify_Exception (Excep : EOA; Is_Unhandled : Boolean) is
-    begin
-       --  Output the exception information required by the Exception_Trace
-       --  configuration. Take care not to output information about internal
-       --  exceptions.
- 
-       if not Excep.Id.Not_Handled_By_Others
-         and then
-           (Exception_Trace = Every_Raise
-             or else
-               (Is_Unhandled
-                 and then
-                   (Exception_Trace = Unhandled_Raise
-                     or else Exception_Trace = Unhandled_Raise_In_Main)))
-       then
-          --  Exception trace messages need to be protected when several tasks
-          --  can issue them at the same time.
- 
-          Lock_Task.all;
-          To_Stderr (Nline);
- 
-          if Exception_Trace /= Unhandled_Raise_In_Main then
-             if Is_Unhandled then
-                To_Stderr ("Unhandled ");
-             end if;
- 
-             To_Stderr ("Exception raised");
-             To_Stderr (Nline);
-          end if;
- 
-          To_Stderr (Exception_Information (Excep.all));
-          Unlock_Task.all;
-       end if;
- 
-       --  Call the user-specific actions
-       --  ??? We should presumably look at the reraise status here.
- 
-       if Raise_Hook_Initialized
-         and then Exception_Data_Ptr (Excep.Id).Raise_Hook /= null
-       then
-          To_Action (Exception_Data_Ptr (Excep.Id).Raise_Hook) (Excep.all);
-       end if;
- 
-       if Global_Action /= null then
-          Global_Action (Excep.all);
-       end if;
-    end Notify_Exception;
- 
-    ------------------------------
-    -- Notify_Handled_Exception --
-    ------------------------------
- 
-    procedure Notify_Handled_Exception (Excep : EOA) is
-    begin
-       Notify_Exception (Excep, Is_Unhandled => False);
-    end Notify_Handled_Exception;
- 
-    --------------------------------
-    -- Notify_Unhandled_Exception --
-    --------------------------------
- 
-    procedure Notify_Unhandled_Exception (Excep : EOA) is
-    begin
-       --  Check whether there is any termination handler to be executed for
-       --  the environment task, and execute it if needed. Here we handle both
-       --  the Abnormal and Unhandled_Exception task termination. Normal
-       --  task termination routine is executed elsewhere (either in the
-       --  Task_Wrapper or in the Adafinal routine for the environment task).
- 
-       Task_Termination_Handler.all (Excep.all);
- 
-       Notify_Exception (Excep, Is_Unhandled => True);
-       Debug_Unhandled_Exception (SSL.Exception_Data_Ptr (Excep.Id));
-    end Notify_Unhandled_Exception;
- 
-    -----------------------------------
-    -- Unhandled_Exception_Terminate --
-    -----------------------------------
- 
-    procedure Unhandled_Exception_Terminate (Excep : EOA) is
-       Occ : Exception_Occurrence;
-       --  This occurrence will be used to display a message after finalization.
-       --  It is necessary to save a copy here, or else the designated value
-       --  could be overwritten if an exception is raised during finalization
-       --  (even if that exception is caught). The occurrence is saved on the
-       --  stack to avoid dynamic allocation (if this exception is due to lack
-       --  of space in the heap, we therefore avoid a second failure). We assume
-       --  that there is enough room on the stack however.
- 
-    begin
-       Save_Occurrence (Occ, Excep.all);
-       Last_Chance_Handler (Occ);
-    end Unhandled_Exception_Terminate;
- 
-    ------------------------------------
-    -- Handling GNAT.Exception_Traces --
-    ------------------------------------
- 
-    --  The bulk of exception traces output is centralized in Notify_Exception,
-    --  for both the Handled and Unhandled cases. Extra task specific output is
-    --  triggered in the task wrapper for unhandled occurrences in tasks. It is
-    --  not performed in this unit to avoid dependencies on the tasking units
-    --  here.
- 
-    --  We used to rely on the output performed by Unhanded_Exception_Terminate
-    --  for the case of an unhandled occurrence in the environment thread, and
-    --  the task wrapper was responsible for the whole output in the tasking
-    --  case.
- 
-    --  This initial scheme had a drawback: the output from Terminate only
-    --  occurs after finalization is done, which means possibly never if some
-    --  tasks keep hanging around.
- 
-    --  The first "presumably obvious" fix consists in moving the Terminate
-    --  output before the finalization. It has not been retained because it
-    --  introduces annoying changes in output orders when the finalization
-    --  itself issues outputs, this also in "regular" cases not resorting to
-    --  Exception_Traces.
- 
-    --  Today's solution has the advantage of simplicity and better isolates
-    --  the Exception_Traces machinery.
- 
- end Exception_Traces;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-exstat.adb gcc-8.1.0/gcc/ada/a-exstat.adb
*** gcc-7.3.0/gcc/ada/a-exstat.adb	Fri Oct 16 13:43:47 2015
--- gcc-8.1.0/gcc/ada/a-exstat.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,266 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                     ADA.EXCEPTIONS.STREAM_ATTRIBUTES                     --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 Warnings (Off);
- --  Allow withing of non-Preelaborated units in Ada 2005 mode where this
- --  package will be categorized as Preelaborate. See AI-362 for details.
- --  It is safe in the context of the run-time to violate the rules.
- 
- with System.Exception_Table;  use System.Exception_Table;
- with System.Storage_Elements; use System.Storage_Elements;
- 
- pragma Warnings (On);
- 
- separate (Ada.Exceptions)
- package body Stream_Attributes is
- 
-    -------------------
-    -- EId_To_String --
-    -------------------
- 
-    function EId_To_String (X : Exception_Id) return String is
-    begin
-       if X = Null_Id then
-          return "";
-       else
-          return Exception_Name (X);
-       end if;
-    end EId_To_String;
- 
-    ------------------
-    -- EO_To_String --
-    ------------------
- 
-    --  We use the null string to represent the null occurrence, otherwise we
-    --  output the Untailored_Exception_Information string for the occurrence.
- 
-    function EO_To_String (X : Exception_Occurrence) return String is
-    begin
-       if X.Id = Null_Id then
-          return "";
-       else
-          return Exception_Data.Untailored_Exception_Information (X);
-       end if;
-    end EO_To_String;
- 
-    -------------------
-    -- String_To_EId --
-    -------------------
- 
-    function String_To_EId (S : String) return Exception_Id is
-    begin
-       if S = "" then
-          return Null_Id;
-       else
-          return Exception_Id (Internal_Exception (S));
-       end if;
-    end String_To_EId;
- 
-    ------------------
-    -- String_To_EO --
-    ------------------
- 
-    function String_To_EO (S : String) return Exception_Occurrence is
-       From : Natural;
-       To   : Integer;
- 
-       X    : aliased Exception_Occurrence;
-       --  This is the exception occurrence we will create
- 
-       procedure Bad_EO;
-       pragma No_Return (Bad_EO);
-       --  Signal bad exception occurrence string
- 
-       procedure Next_String;
-       --  On entry, To points to last character of previous line of the
-       --  message, terminated by LF. On return, From .. To are set to
-       --  specify the next string, or From > To if there are no more lines.
- 
-       procedure Bad_EO is
-       begin
-          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
-       begin
-          From := To + 2;
- 
-          if From < S'Last then
-             To := From + 1;
- 
-             while To < S'Last - 1 loop
-                if To >= S'Last then
-                   Bad_EO;
-                elsif S (To + 1) = ASCII.LF then
-                   exit;
-                else
-                   To := To + 1;
-                end if;
-             end loop;
-          end if;
-       end Next_String;
- 
-    --  Start of processing for String_To_EO
- 
-    begin
-       if S = "" then
-          return Null_Occurrence;
-       end if;
- 
-       To := S'First - 2;
-       Next_String;
- 
-       if S (From .. From + 6) /= "raised " then
-          Bad_EO;
-       end if;
- 
-       declare
-          Name_Start : constant Positive := From + 7;
-       begin
-          From := Name_Start + 1;
- 
-          while From < To and then S (From) /= ' ' loop
-             From := From + 1;
-          end loop;
- 
-          X.Id :=
-            Exception_Id (Internal_Exception (S (Name_Start .. From - 1)));
-       end;
- 
-       if From <= To then
-          if S (From .. From + 2) /= " : " then
-             Bad_EO;
-          end if;
- 
-          X.Msg_Length := To - From - 2;
-          X.Msg (1 .. X.Msg_Length) := S (From + 3 .. To);
- 
-       else
-          X.Msg_Length := 0;
-       end if;
- 
-       Next_String;
-       X.Pid := 0;
- 
-       if From <= To and then S (From) = 'P' then
-          if S (From .. From + 3) /= "PID:" then
-             Bad_EO;
-          end if;
- 
-          From := From + 5; -- skip past PID: space
- 
-          while From <= To loop
-             X.Pid := X.Pid * 10 +
-                        (Character'Pos (S (From)) - Character'Pos ('0'));
-             From := From + 1;
-          end loop;
- 
-          Next_String;
-       end if;
- 
-       X.Num_Tracebacks := 0;
- 
-       if From <= To then
-          if S (From .. To) /= "Call stack traceback locations:" then
-             Bad_EO;
-          end if;
- 
-          Next_String;
-          loop
-             exit when From > To;
- 
-             declare
-                Ch : Character;
-                C  : Integer_Address;
-                N  : Integer_Address;
- 
-             begin
-                if S (From) /= '0'
-                  or else S (From + 1) /= 'x'
-                then
-                   Bad_EO;
-                else
-                   From := From + 2;
-                end if;
- 
-                C := 0;
-                while From <= To loop
-                   Ch := S (From);
- 
-                   if Ch in '0' .. '9' then
-                      N :=
-                        Character'Pos (S (From)) - Character'Pos ('0');
- 
-                   elsif Ch in 'a' .. 'f' then
-                      N :=
-                        Character'Pos (S (From)) - Character'Pos ('a') + 10;
- 
-                   elsif Ch = ' ' then
-                      From := From + 1;
-                      exit;
- 
-                   else
-                      Bad_EO;
-                   end if;
- 
-                   C := C * 16 + N;
- 
-                   From := From + 1;
-                end loop;
- 
-                if X.Num_Tracebacks = Max_Tracebacks then
-                   Bad_EO;
-                end if;
- 
-                X.Num_Tracebacks := X.Num_Tracebacks + 1;
-                X.Tracebacks (X.Num_Tracebacks) :=
-                  TBE.TB_Entry_For (To_Address (C));
-             end;
-          end loop;
-       end if;
- 
-       --  If an exception was converted to a string, it must have
-       --  already been raised, so flag it accordingly and we are done.
- 
-       X.Exception_Raised := True;
-       return X;
-    end String_To_EO;
- 
- end Stream_Attributes;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-extiin.ads gcc-8.1.0/gcc/ada/a-extiin.ads
*** gcc-7.3.0/gcc/ada/a-extiin.ads	Wed Nov 25 15:30:09 2015
--- gcc-8.1.0/gcc/ada/a-extiin.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,35 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --         A D A . E X E C U T I O N _ T I M E . I N T E R R U P T S        --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Interrupts;
- with Ada.Real_Time;
- 
- package Ada.Execution_Time.Interrupts with
-   SPARK_Mode
- is
- 
-    pragma Unimplemented_Unit;
- 
-    function Clock (Interrupt : Ada.Interrupts.Interrupt_ID) return CPU_Time
-    with
-      Volatile_Function,
-      Global => Ada.Real_Time.Clock_Time,
-      Pre    => Separate_Interrupt_Clocks_Supported;
- 
-    function Supported (Interrupt : Ada.Interrupts.Interrupt_ID) return Boolean
-    with
-      Global => null;
- 
- end Ada.Execution_Time.Interrupts;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-extiti.ads gcc-8.1.0/gcc/ada/a-extiti.ads
*** gcc-7.3.0/gcc/ada/a-extiti.ads	Wed Sep 12 11:59:17 2007
--- gcc-8.1.0/gcc/ada/a-extiti.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,61 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --             A D A . E X E C U T I O N _ T I M E . T I M E R S            --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This unit is not implemented in typical GNAT implementations that lie on
- --  top of operating systems, because it is infeasible to implement in such
- --  environments.
- 
- --  If a target environment provides appropriate support for this package,
- --  then the Unimplemented_Unit pragma should be removed from this spec and
- --  an appropriate body provided.
- 
- with System;
- 
- package Ada.Execution_Time.Timers is
-    pragma Preelaborate;
- 
-    pragma Unimplemented_Unit;
- 
-    type Timer (T : not null access constant Ada.Task_Identification.Task_Id) is
-       tagged limited private;
- 
-    type Timer_Handler is access protected procedure (TM : in out Timer);
- 
-    Min_Handler_Ceiling : constant System.Any_Priority := System.Priority'Last;
- 
-    procedure Set_Handler
-      (TM      : in out Timer;
-       In_Time : Ada.Real_Time.Time_Span;
-       Handler : Timer_Handler);
- 
-    procedure Set_Handler
-      (TM      : in out Timer;
-       At_Time : CPU_Time;
-       Handler : Timer_Handler);
- 
-    function Current_Handler (TM : Timer) return Timer_Handler;
- 
-    procedure Cancel_Handler
-      (TM        : in out Timer;
-       Cancelled : out Boolean);
- 
-    function Time_Remaining (TM : Timer) return Ada.Real_Time.Time_Span;
- 
-    Timer_Resource_Error : exception;
- 
- private
-    type Timer (T : access Ada.Task_Identification.Task_Id) is
-       tagged limited null record;
- end Ada.Execution_Time.Timers;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-finali.adb gcc-8.1.0/gcc/ada/a-finali.adb
*** gcc-7.3.0/gcc/ada/a-finali.adb	Tue Oct 20 09:56:56 2015
--- gcc-8.1.0/gcc/ada/a-finali.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,36 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                     A D A . F I N A L I Z A T I O N                      --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 does not require a body. We provide a dummy file containing a
- --  No_Body pragma so that previous versions of the body (which did exist) will
- --  not interfere.
- 
- pragma No_Body;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-finali.ads gcc-8.1.0/gcc/ada/a-finali.ads
*** gcc-7.3.0/gcc/ada/a-finali.ads	Tue Oct 20 09:56:56 2015
--- gcc-8.1.0/gcc/ada/a-finali.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,68 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                     A D A . F I N A L I Z A T I O N                      --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2015, Free Software Foundation, 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- pragma Warnings (Off);
- with System.Finalization_Root;
- pragma Warnings (On);
- 
- package Ada.Finalization is
-    pragma Pure;
- 
-    type Controlled is abstract tagged private;
-    pragma Preelaborable_Initialization (Controlled);
- 
-    procedure Initialize (Object : in out Controlled) is null;
-    procedure Adjust     (Object : in out Controlled) is null;
-    procedure Finalize   (Object : in out Controlled) is null;
- 
-    type Limited_Controlled is abstract tagged limited private;
-    pragma Preelaborable_Initialization (Limited_Controlled);
- 
-    procedure Initialize (Object : in out Limited_Controlled) is null;
-    procedure Finalize   (Object : in out Limited_Controlled) is null;
- 
- private
-    package SFR renames System.Finalization_Root;
- 
-    type Controlled is abstract new SFR.Root_Controlled with null record;
- 
-    --  In order to simplify the implementation, the mechanism in Process_Full_
-    --  View ensures that the full view is limited even though the parent type
-    --  is not.
- 
-    type Limited_Controlled is
-      abstract new SFR.Root_Controlled with null record;
- 
- end Ada.Finalization;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-flteio.ads gcc-8.1.0/gcc/ada/a-flteio.ads
*** gcc-7.3.0/gcc/ada/a-flteio.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-flteio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,21 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                    A D A . F L O A T _ T E X T _ I O                     --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Text_IO;
- 
- pragma Elaborate_All (Ada.Text_IO);
- 
- package Ada.Float_Text_IO is
-   new Ada.Text_IO.Float_IO (Float);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-fwteio.ads gcc-8.1.0/gcc/ada/a-fwteio.ads
*** gcc-7.3.0/gcc/ada/a-fwteio.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-fwteio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,19 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --               A D A . F L O A T _ W I D E _ T E X T _ I O                --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Wide_Text_IO;
- 
- package Ada.Float_Wide_Text_IO is
-   new Ada.Wide_Text_IO.Float_IO (Float);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-fzteio.ads gcc-8.1.0/gcc/ada/a-fzteio.ads
*** gcc-7.3.0/gcc/ada/a-fzteio.ads	Tue Apr 10 05:44:30 2012
--- gcc-8.1.0/gcc/ada/a-fzteio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,19 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --          A D A . F L O A T _ W I D E _ W I D E _ T E X T _ I O           --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Wide_Wide_Text_IO;
- 
- package Ada.Float_Wide_Wide_Text_IO is
-   new Ada.Wide_Wide_Text_IO.Float_IO (Float);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-inteio.ads gcc-8.1.0/gcc/ada/a-inteio.ads
*** gcc-7.3.0/gcc/ada/a-inteio.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-inteio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,19 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                  A D A . I N T E G E R _ T E X T _ I O                   --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Text_IO;
- 
- package Ada.Integer_Text_IO is
-   new Ada.Text_IO.Integer_IO (Integer);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-interr.adb gcc-8.1.0/gcc/ada/a-interr.adb
*** gcc-7.3.0/gcc/ada/a-interr.adb	Wed Nov 18 10:23:05 2015
--- gcc-8.1.0/gcc/ada/a-interr.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,139 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
- --                                                                          --
- --                         A D A . I N T E R R U P T S                      --
- --                                                                          --
- --                                  B o d y                                 --
- --                                                                          --
- --             Copyright (C) 1991-1994, Florida State University            --
- --                     Copyright (C) 1995-2015, AdaCore                     --
- --                                                                          --
- -- GNAT is 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/>.                                          --
- --                                                                          --
- -- GNARL was developed by the GNARL team at Florida State University.       --
- -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Unchecked_Conversion;
- 
- package body Ada.Interrupts is
- 
-    package SI renames System.Interrupts;
- 
-    function To_System is new Ada.Unchecked_Conversion
-      (Parameterless_Handler, SI.Parameterless_Handler);
- 
-    function To_Ada is new Ada.Unchecked_Conversion
-      (SI.Parameterless_Handler, Parameterless_Handler);
- 
-    --------------------
-    -- Attach_Handler --
-    --------------------
- 
-    procedure Attach_Handler
-      (New_Handler : Parameterless_Handler;
-       Interrupt   : Interrupt_ID)
-    is
-    begin
-       SI.Attach_Handler
-         (To_System (New_Handler), SI.Interrupt_ID (Interrupt), False);
-    end Attach_Handler;
- 
-    ---------------------
-    -- Current_Handler --
-    ---------------------
- 
-    function Current_Handler
-      (Interrupt : Interrupt_ID) return Parameterless_Handler
-    is
-    begin
-       return To_Ada (SI.Current_Handler (SI.Interrupt_ID (Interrupt)));
-    end Current_Handler;
- 
-    --------------------
-    -- Detach_Handler --
-    --------------------
- 
-    procedure Detach_Handler (Interrupt : Interrupt_ID) is
-    begin
-       SI.Detach_Handler (SI.Interrupt_ID (Interrupt), False);
-    end Detach_Handler;
- 
-    ----------------------
-    -- Exchange_Handler --
-    ----------------------
- 
-    procedure Exchange_Handler
-      (Old_Handler : out Parameterless_Handler;
-       New_Handler : Parameterless_Handler;
-       Interrupt   : Interrupt_ID)
-    is
-       H : SI.Parameterless_Handler;
- 
-    begin
-       SI.Exchange_Handler
-         (H, To_System (New_Handler),
-          SI.Interrupt_ID (Interrupt), False);
-       Old_Handler := To_Ada (H);
-    end Exchange_Handler;
- 
-    -------------
-    -- Get_CPU --
-    -------------
- 
-    function Get_CPU
-      (Interrupt : Interrupt_ID) return System.Multiprocessors.CPU_Range
-    is
-       pragma Unreferenced (Interrupt);
- 
-    begin
-       --  The underlying operating system does not indicate the processor on
-       --  which the handler for Interrupt is executed.
- 
-       return System.Multiprocessors.Not_A_Specific_CPU;
-    end Get_CPU;
- 
-    -----------------
-    -- Is_Attached --
-    -----------------
- 
-    function Is_Attached (Interrupt : Interrupt_ID) return Boolean is
-    begin
-       return SI.Is_Handler_Attached (SI.Interrupt_ID (Interrupt));
-    end Is_Attached;
- 
-    -----------------
-    -- Is_Reserved --
-    -----------------
- 
-    function Is_Reserved (Interrupt : Interrupt_ID) return Boolean is
-    begin
-       return SI.Is_Reserved (SI.Interrupt_ID (Interrupt));
-    end Is_Reserved;
- 
-    ---------------
-    -- Reference --
-    ---------------
- 
-    function Reference (Interrupt : Interrupt_ID) return System.Address is
-    begin
-       return SI.Reference (SI.Interrupt_ID (Interrupt));
-    end Reference;
- 
- end Ada.Interrupts;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-interr.ads gcc-8.1.0/gcc/ada/a-interr.ads
*** gcc-7.3.0/gcc/ada/a-interr.ads	Wed Nov 18 10:40:47 2015
--- gcc-8.1.0/gcc/ada/a-interr.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,100 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                        GNAT RUN-TIME COMPONENTS                          --
- --                                                                          --
- --                       A D A . I N T E R R U P T S                        --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2015, Free Software Foundation, 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with System.Interrupts;
- with System.Multiprocessors;
- with Ada.Task_Identification;
- 
- package Ada.Interrupts is
- 
-    type Interrupt_ID is new System.Interrupts.Ada_Interrupt_ID;
- 
-    type Parameterless_Handler is access protected procedure;
- 
-    function Is_Reserved (Interrupt : Interrupt_ID) return Boolean with
-      SPARK_Mode,
-      Volatile_Function,
-      Global => Ada.Task_Identification.Tasking_State;
- 
-    function Is_Attached (Interrupt : Interrupt_ID) return Boolean with
-      SPARK_Mode,
-      Volatile_Function,
-      Global => Ada.Task_Identification.Tasking_State;
- 
-    function Current_Handler
-      (Interrupt : Interrupt_ID) return Parameterless_Handler
-    with
-      SPARK_Mode => Off,
-      Global     => null;
- 
-    procedure Attach_Handler
-      (New_Handler : Parameterless_Handler;
-       Interrupt   : Interrupt_ID)
-    with
-      SPARK_Mode => Off,
-      Global     => null;
- 
-    procedure Exchange_Handler
-      (Old_Handler : out Parameterless_Handler;
-       New_Handler : Parameterless_Handler;
-       Interrupt   : Interrupt_ID)
-    with
-      SPARK_Mode => Off,
-      Global     => null;
- 
-    procedure Detach_Handler (Interrupt : Interrupt_ID) with
-      SPARK_Mode,
-      Global => (In_Out => Ada.Task_Identification.Tasking_State);
- 
-    function Reference (Interrupt : Interrupt_ID) return System.Address with
-      SPARK_Mode => Off,
-      Global     => null;
- 
-    function Get_CPU
-      (Interrupt : Interrupt_ID) return System.Multiprocessors.CPU_Range
-    with
-      SPARK_Mode,
-      Volatile_Function,
-      Global => Ada.Task_Identification.Tasking_State;
- 
- private
-    pragma Inline (Is_Reserved);
-    pragma Inline (Is_Attached);
-    pragma Inline (Current_Handler);
-    pragma Inline (Attach_Handler);
-    pragma Inline (Detach_Handler);
-    pragma Inline (Exchange_Handler);
-    pragma Inline (Get_CPU);
- end Ada.Interrupts;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-intnam-aix.ads gcc-8.1.0/gcc/ada/a-intnam-aix.ads
*** gcc-7.3.0/gcc/ada/a-intnam-aix.ads	Tue Sep  6 09:46:21 2011
--- gcc-8.1.0/gcc/ada/a-intnam-aix.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,201 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
- --                                                                          --
- --                   A D A . I N T E R R U P T S . N A M E S                --
- --                                                                          --
- --                                  S p e c                                 --
- --                                                                          --
- --          Copyright (C) 1991-2011, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNARL is 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/>.                                          --
- --                                                                          --
- -- GNARL was developed by the GNARL team at Florida State University.       --
- -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This is a AIX version of this package
- 
- --  The following signals are reserved by the run time (native threads):
- 
- --  SIGFPE, SIGILL, SIGSEGV, SIGBUS, SIGABRT, SIGTRAP, SIGINT, SIGEMT
- --  SIGSTOP, SIGKILL
- 
- --  The following signals are reserved by the run time (FSU threads):
- 
- --  SIGFPE, SIGILL, SIGSEGV, SIGBUS, SIGABRT, SIGTRAP, SIGINT, SIGALRM,
- --  SIGWAITING, SIGSTOP, SIGKILL
- 
- --  The pragma Unreserve_All_Interrupts affects the following signal(s):
- 
- --  SIGINT: made available for Ada handler
- 
- --  This target-dependent package spec contains names of interrupts
- --  supported by the local system.
- 
- with System.OS_Interface;
- 
- package Ada.Interrupts.Names is
- 
-    --  All identifiers in this unit are implementation defined
- 
-    pragma Implementation_Defined;
- 
-    --  Beware that the mapping of names to signals may be many-to-one. There
-    --  may be aliases. Also, for all signal names that are not supported on
-    --  the current system the value of the corresponding constant will be zero.
- 
-    SIGHUP : constant Interrupt_ID :=
-      System.OS_Interface.SIGHUP;      --  hangup
- 
-    SIGINT : constant Interrupt_ID :=
-      System.OS_Interface.SIGINT;      --  interrupt (rubout)
- 
-    SIGQUIT : constant Interrupt_ID :=
-      System.OS_Interface.SIGQUIT;     --  quit (ASCD FS)
- 
-    SIGILL : constant Interrupt_ID :=
-      System.OS_Interface.SIGILL;      --  illegal instruction (not reset)
- 
-    SIGTRAP : constant Interrupt_ID :=
-      System.OS_Interface.SIGTRAP;     --  trace trap (not reset)
- 
-    SIGIOT : constant Interrupt_ID :=
-      System.OS_Interface.SIGIOT;      --  IOT instruction
- 
-    SIGABRT : constant Interrupt_ID := --  used by abort,
-      System.OS_Interface.SIGABRT;     --  replace SIGIOT in the  future
- 
-    SIGEMT : constant Interrupt_ID :=
-      System.OS_Interface.SIGEMT;      --  EMT instruction
- 
-    SIGFPE : constant Interrupt_ID :=
-      System.OS_Interface.SIGFPE;      --  floating point exception
- 
-    SIGKILL : constant Interrupt_ID :=
-      System.OS_Interface.SIGKILL;     --  kill (cannot be caught or ignored)
- 
-    SIGBUS : constant Interrupt_ID :=
-      System.OS_Interface.SIGBUS;      --  bus error
- 
-    SIGSEGV : constant Interrupt_ID :=
-      System.OS_Interface.SIGSEGV;     --  segmentation violation
- 
-    SIGSYS : constant Interrupt_ID :=
-      System.OS_Interface.SIGSYS;      --  bad argument to system call
- 
-    SIGPIPE : constant Interrupt_ID := --  write on a pipe with
-      System.OS_Interface.SIGPIPE;     --  no one to read it
- 
-    SIGALRM : constant Interrupt_ID :=
-      System.OS_Interface.SIGALRM;     --  alarm clock
- 
-    SIGTERM : constant Interrupt_ID :=
-      System.OS_Interface.SIGTERM;     --  software termination signal from kill
- 
-    SIGUSR1 : constant Interrupt_ID :=
-      System.OS_Interface.SIGUSR1;     --  user defined signal 1
- 
-    SIGUSR2 : constant Interrupt_ID :=
-      System.OS_Interface.SIGUSR2;     --  user defined signal 2
- 
-    SIGCLD : constant Interrupt_ID :=
-      System.OS_Interface.SIGCLD;      --  child status change
- 
-    SIGCHLD : constant Interrupt_ID :=
-      System.OS_Interface.SIGCHLD;     --  4.3BSD's/POSIX name for SIGCLD
- 
-    SIGPWR : constant Interrupt_ID :=
-      System.OS_Interface.SIGPWR;        --  power-fail restart
- 
-    SIGWINCH : constant Interrupt_ID :=
-      System.OS_Interface.SIGWINCH;    --  window size change
- 
-    SIGURG : constant Interrupt_ID :=
-      System.OS_Interface.SIGURG;      --  urgent condition on IO channel
- 
-    SIGPOLL : constant Interrupt_ID :=
-      System.OS_Interface.SIGPOLL;     --  pollable event occurred
- 
-    SIGIO : constant Interrupt_ID :=   --  input/output possible,
-      System.OS_Interface.SIGIO;       --  SIGPOLL alias (Solaris)
- 
-    SIGSTOP : constant Interrupt_ID :=
-      System.OS_Interface.SIGSTOP;     --  stop (cannot be caught or ignored)
- 
-    SIGTSTP : constant Interrupt_ID :=
-      System.OS_Interface.SIGTSTP;     --  user stop requested from tty
- 
-    SIGCONT : constant Interrupt_ID :=
-      System.OS_Interface.SIGCONT;     --  stopped process has been continued
- 
-    SIGTTIN : constant Interrupt_ID :=
-      System.OS_Interface.SIGTTIN;     --  background tty read attempted
- 
-    SIGTTOU : constant Interrupt_ID :=
-      System.OS_Interface.SIGTTOU;     --  background tty write attempted
- 
-    SIGVTALRM : constant Interrupt_ID :=
-      System.OS_Interface.SIGVTALRM;   --  virtual timer expired
- 
-    SIGPROF : constant Interrupt_ID :=
-      System.OS_Interface.SIGPROF;     --  profiling timer expired
- 
-    SIGXCPU : constant Interrupt_ID :=
-      System.OS_Interface.SIGXCPU;     --  CPU time limit exceeded
- 
-    SIGXFSZ : constant Interrupt_ID :=
-      System.OS_Interface.SIGXFSZ;     --  filesize limit exceeded
- 
-    SIGMSG : constant Interrupt_ID :=
-      System.OS_Interface.SIGMSG;      -- input data is in the ring buffer
- 
-    SIGDANGER : constant Interrupt_ID :=
-      System.OS_Interface.SIGDANGER;   -- system crash imminent;
- 
-    SIGMIGRATE : constant Interrupt_ID :=
-      System.OS_Interface.SIGMIGRATE;  -- migrate process
- 
-    SIGPRE : constant Interrupt_ID :=
-      System.OS_Interface.SIGPRE;      -- programming exception
- 
-    SIGVIRT : constant Interrupt_ID :=
-      System.OS_Interface.SIGVIRT;     -- AIX virtual time alarm
- 
-    SIGALRM1 : constant Interrupt_ID :=
-      System.OS_Interface.SIGALRM1;    -- m:n condition variables
- 
-    SIGWAITING : constant Interrupt_ID :=
-      System.OS_Interface.SIGWAITING;  --  m:n scheduling
- 
-    SIGKAP : constant Interrupt_ID :=
-      System.OS_Interface.SIGKAP;      -- keep alive poll from native keyboard
- 
-    SIGGRANT : constant Interrupt_ID :=
-      System.OS_Interface.SIGGRANT;    -- monitor mode granted
- 
-    SIGRETRACT : constant Interrupt_ID :=
-      System.OS_Interface.SIGRETRACT;  -- monitor mode should be relinquished
- 
-    SIGSOUND : constant Interrupt_ID :=
-      System.OS_Interface.SIGSOUND;    -- sound control has completed
- 
-    SIGSAK : constant Interrupt_ID :=
-      System.OS_Interface.SIGSAK;      -- secure attention key
- 
- end Ada.Interrupts.Names;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-intnam-darwin.ads gcc-8.1.0/gcc/ada/a-intnam-darwin.ads
*** gcc-7.3.0/gcc/ada/a-intnam-darwin.ads	Tue Sep  6 09:46:21 2011
--- gcc-8.1.0/gcc/ada/a-intnam-darwin.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,153 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
- --                                                                          --
- --                   A D A . I N T E R R U P T S . N A M E S                --
- --                                                                          --
- --                                  S p e c                                 --
- --                                                                          --
- --          Copyright (C) 1991-2011, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNARL is 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/>.                                          --
- --                                                                          --
- -- GNARL was developed by the GNARL team at Florida State University.       --
- -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This is the Darwin version of this package
- 
- --  The following signals are reserved by the run time:
- 
- --  SIGSTOP, SIGKILL
- 
- --  The pragma Unreserve_All_Interrupts affects the following signal(s):
- 
- --  SIGINT: made available for Ada handler
- 
- --  This target-dependent package spec contains names of interrupts
- --  supported by the local system.
- 
- with System.OS_Interface;
- 
- package Ada.Interrupts.Names is
- 
-    --  All identifiers in this unit are implementation defined
- 
-    pragma Implementation_Defined;
- 
-    --  Beware that the mapping of names to signals may be many-to-one. There
-    --  may be aliases. Also, for all signal names that are not supported on the
-    --  current system the value of the corresponding constant will be zero.
- 
-    SIGHUP    : constant Interrupt_ID :=
-      System.OS_Interface.SIGHUP;      --  hangup
- 
-    SIGINT    : constant Interrupt_ID :=
-      System.OS_Interface.SIGINT;      --  interrupt (rubout)
- 
-    SIGQUIT   : constant Interrupt_ID :=
-      System.OS_Interface.SIGQUIT;     --  quit (ASCD FS)
- 
-    SIGILL    : constant Interrupt_ID :=
-      System.OS_Interface.SIGILL;      --  illegal instruction (not reset)
- 
-    SIGTRAP   : constant Interrupt_ID :=
-      System.OS_Interface.SIGTRAP;     --  trace trap (not reset)
- 
-    SIGIOT    : constant Interrupt_ID :=
-      System.OS_Interface.SIGIOT;      --  IOT instruction
- 
-    SIGABRT   : constant Interrupt_ID := --  used by abort,
-      System.OS_Interface.SIGABRT;     --  replace SIGIOT in the  future
- 
-    SIGEMT    : constant Interrupt_ID :=
-      System.OS_Interface.SIGEMT;      --  EMT instruction
- 
-    SIGFPE    : constant Interrupt_ID :=
-      System.OS_Interface.SIGFPE;      --  floating point exception
- 
-    SIGKILL   : constant Interrupt_ID :=
-      System.OS_Interface.SIGKILL;     --  kill (cannot be caught or ignored)
- 
-    SIGBUS    : constant Interrupt_ID :=
-      System.OS_Interface.SIGBUS;      --  bus error
- 
-    SIGSEGV   : constant Interrupt_ID :=
-      System.OS_Interface.SIGSEGV;     --  segmentation violation
- 
-    SIGSYS    : constant Interrupt_ID :=
-      System.OS_Interface.SIGSYS;      --  bad argument to system call
- 
-    SIGPIPE   : constant Interrupt_ID := --  write on a pipe with
-      System.OS_Interface.SIGPIPE;     --  no one to read it
- 
-    SIGALRM   : constant Interrupt_ID :=
-      System.OS_Interface.SIGALRM;     --  alarm clock
- 
-    SIGTERM   : constant Interrupt_ID :=
-      System.OS_Interface.SIGTERM;     --  software termination signal from kill
- 
-    SIGURG    : constant Interrupt_ID :=
-      System.OS_Interface.SIGURG;      --  urgent condition on IO channel
- 
-    SIGSTOP   : constant Interrupt_ID :=
-      System.OS_Interface.SIGSTOP;     --  stop (cannot be caught or ignored)
- 
-    SIGTSTP   : constant Interrupt_ID :=
-      System.OS_Interface.SIGTSTP;     --  user stop requested from tty
- 
-    SIGCONT   : constant Interrupt_ID :=
-      System.OS_Interface.SIGCONT;     --  stopped process has been continued
- 
-    SIGCHLD   : constant Interrupt_ID :=
-      System.OS_Interface.SIGCHLD;     --  4.3BSD's/POSIX name for SIGCLD
- 
-    SIGTTIN   : constant Interrupt_ID :=
-      System.OS_Interface.SIGTTIN;     --  background tty read attempted
- 
-    SIGTTOU   : constant Interrupt_ID :=
-      System.OS_Interface.SIGTTOU;     --  background tty write attempted
- 
-    SIGIO     : constant Interrupt_ID :=   --  input/output possible,
-      System.OS_Interface.SIGIO;       --  SIGPOLL alias (Solaris)
- 
-    SIGXCPU   : constant Interrupt_ID :=
-      System.OS_Interface.SIGXCPU;     --  CPU time limit exceeded
- 
-    SIGXFSZ   : constant Interrupt_ID :=
-      System.OS_Interface.SIGXFSZ;     --  filesize limit exceeded
- 
-    SIGVTALRM : constant Interrupt_ID :=
-      System.OS_Interface.SIGVTALRM;   --  virtual timer expired
- 
-    SIGPROF   : constant Interrupt_ID :=
-      System.OS_Interface.SIGPROF;     --  profiling timer expired
- 
-    SIGWINCH  : constant Interrupt_ID :=
-      System.OS_Interface.SIGWINCH;    --  window size change
- 
-    SIGINFO   : constant Interrupt_ID :=
-      System.OS_Interface.SIGINFO;      -- information request
- 
-    SIGUSR1   : constant Interrupt_ID :=
-      System.OS_Interface.SIGUSR1;     --  user defined signal 1
- 
-    SIGUSR2   : constant Interrupt_ID :=
-      System.OS_Interface.SIGUSR2;     --  user defined signal 2
- 
- end Ada.Interrupts.Names;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-intnam-dragonfly.ads gcc-8.1.0/gcc/ada/a-intnam-dragonfly.ads
*** gcc-7.3.0/gcc/ada/a-intnam-dragonfly.ads	Mon Jun  8 07:27:56 2015
--- gcc-8.1.0/gcc/ada/a-intnam-dragonfly.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,136 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
- --                                                                          --
- --                   A D A . I N T E R R U P T S . N A M E S                --
- --                                                                          --
- --                                  S p e c                                 --
- --                                                                          --
- --          Copyright (C) 1991-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNARL is 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/>.                                          --
- --                                                                          --
- -- GNARL was developed by the GNARL team at Florida State University.       --
- -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This is the DragonFly BSD THREADS version of this package
- 
- with System.OS_Interface;
- 
- package Ada.Interrupts.Names is
- 
-    --  All identifiers in this unit are implementation defined
- 
-    pragma Implementation_Defined;
- 
-    --  Beware that the mapping of names to signals may be many-to-one. There
-    --  may be aliases. Also, for all signal names that are not supported on
-    --  the current system the value of the corresponding constant will be zero.
- 
-    SIGHUP : constant Interrupt_ID :=
-      System.OS_Interface.SIGHUP;      --  hangup
- 
-    SIGINT : constant Interrupt_ID :=
-      System.OS_Interface.SIGINT;      --  interrupt (rubout)
- 
-    SIGQUIT : constant Interrupt_ID :=
-      System.OS_Interface.SIGQUIT;     --  quit (ASCD FS)
- 
-    SIGILL : constant Interrupt_ID :=
-      System.OS_Interface.SIGILL;      --  illegal instruction (not reset)
- 
-    SIGTRAP : constant Interrupt_ID :=
-      System.OS_Interface.SIGTRAP;     --  trace trap (not reset)
- 
-    SIGIOT : constant Interrupt_ID :=
-      System.OS_Interface.SIGIOT;      --  IOT instruction
- 
-    SIGABRT : constant Interrupt_ID := --  used by abort,
-      System.OS_Interface.SIGABRT;     --  replace SIGIOT in the  future
- 
-    SIGFPE : constant Interrupt_ID :=
-      System.OS_Interface.SIGFPE;      --  floating point exception
- 
-    SIGKILL : constant Interrupt_ID :=
-      System.OS_Interface.SIGKILL;     --  kill (cannot be caught or ignored)
- 
-    SIGBUS : constant Interrupt_ID :=
-      System.OS_Interface.SIGBUS;      --  bus error
- 
-    SIGSEGV : constant Interrupt_ID :=
-      System.OS_Interface.SIGSEGV;     --  segmentation violation
- 
-    SIGPIPE : constant Interrupt_ID := --  write on a pipe with
-      System.OS_Interface.SIGPIPE;     --  no one to read it
- 
-    SIGALRM : constant Interrupt_ID :=
-      System.OS_Interface.SIGALRM;     --  alarm clock
- 
-    SIGTERM : constant Interrupt_ID :=
-      System.OS_Interface.SIGTERM;     --  software termination signal from kill
- 
-    SIGURG : constant Interrupt_ID :=
-      System.OS_Interface.SIGURG;      --  urgent condition on IO channel
- 
-    SIGSTOP : constant Interrupt_ID :=
-      System.OS_Interface.SIGSTOP;     --  stop (cannot be caught or ignored)
- 
-    SIGTSTP : constant Interrupt_ID :=
-      System.OS_Interface.SIGTSTP;     --  user stop requested from tty
- 
-    SIGCONT : constant Interrupt_ID :=
-      System.OS_Interface.SIGCONT;     --  stopped process has been continued
- 
-    SIGCHLD : constant Interrupt_ID :=
-      System.OS_Interface.SIGCHLD;     --  4.3BSD's/POSIX name for SIGCLD
- 
-    SIGCLD : constant Interrupt_ID :=
-      System.OS_Interface.SIGCLD;      --  child status change
- 
-    SIGTTIN : constant Interrupt_ID :=
-      System.OS_Interface.SIGTTIN;     --  background tty read attempted
- 
-    SIGTTOU : constant Interrupt_ID :=
-      System.OS_Interface.SIGTTOU;     --  background tty write attempted
- 
-    SIGIO : constant Interrupt_ID :=   --  input/output possible,
-      System.OS_Interface.SIGIO;       --  SIGPOLL alias (Solaris)
- 
-    SIGXCPU : constant Interrupt_ID :=
-      System.OS_Interface.SIGXCPU;     --  CPU time limit exceeded
- 
-    SIGXFSZ : constant Interrupt_ID :=
-      System.OS_Interface.SIGXFSZ;     --  filesize limit exceeded
- 
-    SIGVTALRM : constant Interrupt_ID :=
-      System.OS_Interface.SIGVTALRM;   --  virtual timer expired
- 
-    SIGPROF : constant Interrupt_ID :=
-      System.OS_Interface.SIGPROF;     --  profiling timer expired
- 
-    SIGWINCH : constant Interrupt_ID :=
-      System.OS_Interface.SIGWINCH;    --  window size change
- 
-    SIGUSR1 : constant Interrupt_ID :=
-      System.OS_Interface.SIGUSR1;     --  user defined signal 1
- 
-    SIGUSR2 : constant Interrupt_ID :=
-      System.OS_Interface.SIGUSR2;     --  user defined signal 2
- 
- end Ada.Interrupts.Names;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-intnam-dummy.ads gcc-8.1.0/gcc/ada/a-intnam-dummy.ads
*** gcc-7.3.0/gcc/ada/a-intnam-dummy.ads	Tue Sep  6 09:46:21 2011
--- gcc-8.1.0/gcc/ada/a-intnam-dummy.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,50 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                  GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                --
- --                                                                          --
- --                   A D A . I N T E R R U P T S . N A M E S                --
- --                                                                          --
- --                                  S p e c                                 --
- --                           (No Tasking Version)                           --
- --                                                                          --
- --          Copyright (C) 1991-2011, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNARL is 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/>.                                          --
- --                                                                          --
- -- GNARL was developed by the GNARL team at Florida State University.       --
- -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  The standard implementation of this spec contains only dummy interrupt
- --  names. These dummy entries permit checking out code for correctness of
- --  semantics, even if interrupts are not supported.
- 
- --  For specific implementations that fully support interrupts, this package
- --  spec is replaced by an implementation dependent version that defines the
- --  interrupts available on the system.
- 
- package Ada.Interrupts.Names is
- 
-    --  All identifiers in this unit are implementation defined
- 
-    pragma Implementation_Defined;
- 
-    DUMMY_INTERRUPT_1 : constant Interrupt_ID := 1;
-    DUMMY_INTERRUPT_2 : constant Interrupt_ID := 2;
- 
- end Ada.Interrupts.Names;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-intnam-freebsd.ads gcc-8.1.0/gcc/ada/a-intnam-freebsd.ads
*** gcc-7.3.0/gcc/ada/a-intnam-freebsd.ads	Tue Sep  6 09:46:21 2011
--- gcc-8.1.0/gcc/ada/a-intnam-freebsd.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,136 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
- --                                                                          --
- --                   A D A . I N T E R R U P T S . N A M E S                --
- --                                                                          --
- --                                  S p e c                                 --
- --                                                                          --
- --          Copyright (C) 1991-2011, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNARL is 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/>.                                          --
- --                                                                          --
- -- GNARL was developed by the GNARL team at Florida State University.       --
- -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This is the FreeBSD THREADS version of this package
- 
- with System.OS_Interface;
- 
- package Ada.Interrupts.Names is
- 
-    --  All identifiers in this unit are implementation defined
- 
-    pragma Implementation_Defined;
- 
-    --  Beware that the mapping of names to signals may be many-to-one. There
-    --  may be aliases. Also, for all signal names that are not supported on
-    --  the current system the value of the corresponding constant will be zero.
- 
-    SIGHUP : constant Interrupt_ID :=
-      System.OS_Interface.SIGHUP;      --  hangup
- 
-    SIGINT : constant Interrupt_ID :=
-      System.OS_Interface.SIGINT;      --  interrupt (rubout)
- 
-    SIGQUIT : constant Interrupt_ID :=
-      System.OS_Interface.SIGQUIT;     --  quit (ASCD FS)
- 
-    SIGILL : constant Interrupt_ID :=
-      System.OS_Interface.SIGILL;      --  illegal instruction (not reset)
- 
-    SIGTRAP : constant Interrupt_ID :=
-      System.OS_Interface.SIGTRAP;     --  trace trap (not reset)
- 
-    SIGIOT : constant Interrupt_ID :=
-      System.OS_Interface.SIGIOT;      --  IOT instruction
- 
-    SIGABRT : constant Interrupt_ID := --  used by abort,
-      System.OS_Interface.SIGABRT;     --  replace SIGIOT in the  future
- 
-    SIGFPE : constant Interrupt_ID :=
-      System.OS_Interface.SIGFPE;      --  floating point exception
- 
-    SIGKILL : constant Interrupt_ID :=
-      System.OS_Interface.SIGKILL;     --  kill (cannot be caught or ignored)
- 
-    SIGBUS : constant Interrupt_ID :=
-      System.OS_Interface.SIGBUS;      --  bus error
- 
-    SIGSEGV : constant Interrupt_ID :=
-      System.OS_Interface.SIGSEGV;     --  segmentation violation
- 
-    SIGPIPE : constant Interrupt_ID := --  write on a pipe with
-      System.OS_Interface.SIGPIPE;     --  no one to read it
- 
-    SIGALRM : constant Interrupt_ID :=
-      System.OS_Interface.SIGALRM;     --  alarm clock
- 
-    SIGTERM : constant Interrupt_ID :=
-      System.OS_Interface.SIGTERM;     --  software termination signal from kill
- 
-    SIGURG : constant Interrupt_ID :=
-      System.OS_Interface.SIGURG;      --  urgent condition on IO channel
- 
-    SIGSTOP : constant Interrupt_ID :=
-      System.OS_Interface.SIGSTOP;     --  stop (cannot be caught or ignored)
- 
-    SIGTSTP : constant Interrupt_ID :=
-      System.OS_Interface.SIGTSTP;     --  user stop requested from tty
- 
-    SIGCONT : constant Interrupt_ID :=
-      System.OS_Interface.SIGCONT;     --  stopped process has been continued
- 
-    SIGCHLD : constant Interrupt_ID :=
-      System.OS_Interface.SIGCHLD;     --  4.3BSD's/POSIX name for SIGCLD
- 
-    SIGCLD : constant Interrupt_ID :=
-      System.OS_Interface.SIGCLD;      --  child status change
- 
-    SIGTTIN : constant Interrupt_ID :=
-      System.OS_Interface.SIGTTIN;     --  background tty read attempted
- 
-    SIGTTOU : constant Interrupt_ID :=
-      System.OS_Interface.SIGTTOU;     --  background tty write attempted
- 
-    SIGIO : constant Interrupt_ID :=   --  input/output possible,
-      System.OS_Interface.SIGIO;       --  SIGPOLL alias (Solaris)
- 
-    SIGXCPU : constant Interrupt_ID :=
-      System.OS_Interface.SIGXCPU;     --  CPU time limit exceeded
- 
-    SIGXFSZ : constant Interrupt_ID :=
-      System.OS_Interface.SIGXFSZ;     --  filesize limit exceeded
- 
-    SIGVTALRM : constant Interrupt_ID :=
-      System.OS_Interface.SIGVTALRM;   --  virtual timer expired
- 
-    SIGPROF : constant Interrupt_ID :=
-      System.OS_Interface.SIGPROF;     --  profiling timer expired
- 
-    SIGWINCH : constant Interrupt_ID :=
-      System.OS_Interface.SIGWINCH;    --  window size change
- 
-    SIGUSR1 : constant Interrupt_ID :=
-      System.OS_Interface.SIGUSR1;     --  user defined signal 1
- 
-    SIGUSR2 : constant Interrupt_ID :=
-      System.OS_Interface.SIGUSR2;     --  user defined signal 2
- 
- end Ada.Interrupts.Names;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-intnam-hpux.ads gcc-8.1.0/gcc/ada/a-intnam-hpux.ads
*** gcc-7.3.0/gcc/ada/a-intnam-hpux.ads	Tue Sep  6 09:46:21 2011
--- gcc-8.1.0/gcc/ada/a-intnam-hpux.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,154 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
- --                                                                          --
- --                   A D A . I N T E R R U P T S . N A M E S                --
- --                                                                          --
- --                                  S p e c                                 --
- --                                                                          --
- --          Copyright (C) 1991-2011, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNARL is 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/>.                                          --
- --                                                                          --
- -- GNARL was developed by the GNARL team at Florida State University.       --
- -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This is a HP-UX version of this package
- 
- --  The following signals are reserved by the run time:
- 
- --  SIGFPE, SIGILL, SIGSEGV, SIGBUS, SIGTRAP, SIGTERM, SIGABRT, SIGINT,
- --  SIGALRM, SIGSTOP, SIGKILL
- 
- --  The pragma Unreserve_All_Interrupts affects the following signal(s):
- 
- --  SIGINT: made available for Ada handler
- 
- --  This target-dependent package spec contains names of interrupts
- --  supported by the local system.
- 
- with System.OS_Interface;
- 
- package Ada.Interrupts.Names is
- 
-    --  All identifiers in this unit are implementation defined
- 
-    pragma Implementation_Defined;
- 
-    --  Beware that the mapping of names to signals may be many-to-one. There
-    --  may be aliases. Also, for all signal names that are not supported on
-    --  the current system the value of the corresponding constant will be zero.
- 
-    SIGHUP : constant Interrupt_ID :=
-      System.OS_Interface.SIGHUP;      --  hangup
- 
-    SIGINT : constant Interrupt_ID :=
-      System.OS_Interface.SIGINT;      --  interrupt (rubout)
- 
-    SIGQUIT : constant Interrupt_ID :=
-      System.OS_Interface.SIGQUIT;     --  quit (ASCD FS)
- 
-    SIGILL : constant Interrupt_ID :=
-      System.OS_Interface.SIGILL;      --  illegal instruction (not reset)
- 
-    SIGTRAP : constant Interrupt_ID :=
-      System.OS_Interface.SIGTRAP;     --  trace trap (not reset)
- 
-    SIGIOT : constant Interrupt_ID :=
-      System.OS_Interface.SIGIOT;      --  IOT instruction
- 
-    SIGABRT : constant Interrupt_ID := --  used by abort,
-      System.OS_Interface.SIGABRT;     --  replace SIGIOT in the  future
- 
-    SIGEMT : constant Interrupt_ID :=
-      System.OS_Interface.SIGEMT;      --  EMT instruction
- 
-    SIGFPE : constant Interrupt_ID :=
-      System.OS_Interface.SIGFPE;      --  floating point exception
- 
-    SIGKILL : constant Interrupt_ID :=
-      System.OS_Interface.SIGKILL;     --  kill (cannot be caught or ignored)
- 
-    SIGBUS : constant Interrupt_ID :=
-      System.OS_Interface.SIGBUS;      --  bus error
- 
-    SIGSEGV : constant Interrupt_ID :=
-      System.OS_Interface.SIGSEGV;     --  segmentation violation
- 
-    SIGSYS : constant Interrupt_ID :=
-      System.OS_Interface.SIGSYS;      --  bad argument to system call
- 
-    SIGPIPE : constant Interrupt_ID := --  write on a pipe with
-      System.OS_Interface.SIGPIPE;     --  no one to read it
- 
-    SIGALRM : constant Interrupt_ID :=
-      System.OS_Interface.SIGALRM;     --  alarm clock
- 
-    SIGTERM : constant Interrupt_ID :=
-      System.OS_Interface.SIGTERM;     --  software termination signal from kill
- 
-    SIGUSR1 : constant Interrupt_ID :=
-      System.OS_Interface.SIGUSR1;     --  user defined signal 1
- 
-    SIGUSR2 : constant Interrupt_ID :=
-      System.OS_Interface.SIGUSR2;     --  user defined signal 2
- 
-    SIGCLD : constant Interrupt_ID :=
-      System.OS_Interface.SIGCLD;      --  child status change
- 
-    SIGCHLD : constant Interrupt_ID :=
-      System.OS_Interface.SIGCHLD;     --  4.3BSD's/POSIX name for SIGCLD
- 
-    SIGWINCH : constant Interrupt_ID :=
-      System.OS_Interface.SIGWINCH;    --  window size change
- 
-    SIGURG : constant Interrupt_ID :=
-      System.OS_Interface.SIGURG;      --  urgent condition on IO channel
- 
-    SIGPOLL : constant Interrupt_ID :=
-      System.OS_Interface.SIGPOLL;     --  pollable event occurred
- 
-    SIGIO : constant Interrupt_ID :=   --  input/output possible,
-      System.OS_Interface.SIGIO;       --  SIGPOLL alias
- 
-    SIGSTOP : constant Interrupt_ID :=
-      System.OS_Interface.SIGSTOP;     --  stop (cannot be caught or ignored)
- 
-    SIGTSTP : constant Interrupt_ID :=
-      System.OS_Interface.SIGTSTP;     --  user stop requested from tty
- 
-    SIGCONT : constant Interrupt_ID :=
-      System.OS_Interface.SIGCONT;     --  stopped process has been continued
- 
-    SIGTTIN : constant Interrupt_ID :=
-      System.OS_Interface.SIGTTIN;     --  background tty read attempted
- 
-    SIGTTOU : constant Interrupt_ID :=
-      System.OS_Interface.SIGTTOU;     --  background tty write attempted
- 
-    SIGVTALRM : constant Interrupt_ID :=
-      System.OS_Interface.SIGVTALRM;   --  virtual timer expired
- 
-    SIGPROF : constant Interrupt_ID :=
-      System.OS_Interface.SIGPROF;     --  profiling timer expired
- 
-    SIGPWR : constant Interrupt_ID :=
-      System.OS_Interface.SIGPWR;      --  power-fail restart
- 
- end Ada.Interrupts.Names;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-intnam-linux.ads gcc-8.1.0/gcc/ada/a-intnam-linux.ads
*** gcc-7.3.0/gcc/ada/a-intnam-linux.ads	Thu Jul 31 13:40:26 2014
--- gcc-8.1.0/gcc/ada/a-intnam-linux.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,163 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
- --                                                                          --
- --                   A D A . I N T E R R U P T S . N A M E S                --
- --                                                                          --
- --                                  S p e c                                 --
- --                                                                          --
- --          Copyright (C) 1991-2014, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNARL is 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/>.                                          --
- --                                                                          --
- -- GNARL was developed by the GNARL team at Florida State University.       --
- -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This is a GNU/Linux version of this package
- 
- --  The following signals are reserved by the run time:
- 
- --  SIGFPE, SIGILL, SIGSEGV, SIGBUS, SIGTRAP, SIGABRT, SIGINT,
- --  SIGUSR1, SIGUSR2, SIGVTALRM, SIGUNUSED, SIGSTOP, SIGKILL
- 
- --  The pragma Unreserve_All_Interrupts affects the following signal(s):
- 
- --  SIGINT: made available for Ada handler
- 
- --  This target-dependent package spec contains names of interrupts
- --  supported by the local system.
- 
- with System.OS_Interface;
- 
- package Ada.Interrupts.Names is
- 
-    --  All identifiers in this unit are implementation defined
- 
-    pragma Implementation_Defined;
- 
-    --  Beware that the mapping of names to signals may be many-to-one. There
-    --  may be aliases. Also, for all signal names that are not supported on the
-    --  current system the value of the corresponding constant will be zero.
- 
-    SIGHUP : constant Interrupt_ID :=
-      System.OS_Interface.SIGHUP;      --  hangup
- 
-    SIGINT : constant Interrupt_ID :=
-      System.OS_Interface.SIGINT;      --  interrupt (rubout)
- 
-    SIGQUIT : constant Interrupt_ID :=
-      System.OS_Interface.SIGQUIT;     --  quit (ASCD FS)
- 
-    SIGILL : constant Interrupt_ID :=
-      System.OS_Interface.SIGILL;      --  illegal instruction (not reset)
- 
-    SIGTRAP : constant Interrupt_ID :=
-      System.OS_Interface.SIGTRAP;     --  trace trap (not reset)
- 
-    SIGIOT : constant Interrupt_ID :=
-      System.OS_Interface.SIGIOT;      --  IOT instruction
- 
-    SIGABRT : constant Interrupt_ID := --  used by abort,
-      System.OS_Interface.SIGABRT;     --  replace SIGIOT in the  future
- 
-    SIGFPE : constant Interrupt_ID :=
-      System.OS_Interface.SIGFPE;      --  floating point exception
- 
-    SIGKILL : constant Interrupt_ID :=
-      System.OS_Interface.SIGKILL;     --  kill (cannot be caught or ignored)
- 
-    SIGBUS : constant Interrupt_ID :=
-      System.OS_Interface.SIGBUS;      --  bus error
- 
-    SIGSEGV : constant Interrupt_ID :=
-      System.OS_Interface.SIGSEGV;     --  segmentation violation
- 
-    SIGPIPE : constant Interrupt_ID := --  write on a pipe with
-      System.OS_Interface.SIGPIPE;     --  no one to read it
- 
-    SIGALRM : constant Interrupt_ID :=
-      System.OS_Interface.SIGALRM;     --  alarm clock
- 
-    SIGTERM : constant Interrupt_ID :=
-      System.OS_Interface.SIGTERM;     --  software termination signal from kill
- 
-    SIGUSR1 : constant Interrupt_ID :=
-      System.OS_Interface.SIGUSR1;     --  user defined signal 1
- 
-    SIGUSR2 : constant Interrupt_ID :=
-      System.OS_Interface.SIGUSR2;     --  user defined signal 2
- 
-    SIGCLD : constant Interrupt_ID :=
-      System.OS_Interface.SIGCLD;      --  child status change
- 
-    SIGCHLD : constant Interrupt_ID :=
-      System.OS_Interface.SIGCHLD;     --  4.3BSD's/POSIX name for SIGCLD
- 
-    SIGWINCH : constant Interrupt_ID :=
-      System.OS_Interface.SIGWINCH;    --  window size change
- 
-    SIGURG : constant Interrupt_ID :=
-      System.OS_Interface.SIGURG;      --  urgent condition on IO channel
- 
-    SIGPOLL : constant Interrupt_ID :=
-      System.OS_Interface.SIGPOLL;     --  pollable event occurred
- 
-    SIGIO : constant Interrupt_ID :=   --  input/output possible,
-      System.OS_Interface.SIGIO;       --  SIGPOLL alias (Solaris)
- 
-    SIGSTOP : constant Interrupt_ID :=
-      System.OS_Interface.SIGSTOP;     --  stop (cannot be caught or ignored)
- 
-    SIGTSTP : constant Interrupt_ID :=
-      System.OS_Interface.SIGTSTP;     --  user stop requested from tty
- 
-    SIGCONT : constant Interrupt_ID :=
-      System.OS_Interface.SIGCONT;     --  stopped process has been continued
- 
-    SIGTTIN : constant Interrupt_ID :=
-      System.OS_Interface.SIGTTIN;     --  background tty read attempted
- 
-    SIGTTOU : constant Interrupt_ID :=
-      System.OS_Interface.SIGTTOU;     --  background tty write attempted
- 
-    SIGVTALRM : constant Interrupt_ID :=
-      System.OS_Interface.SIGVTALRM;   --  virtual timer expired
- 
-    SIGPROF : constant Interrupt_ID :=
-      System.OS_Interface.SIGPROF;     --  profiling timer expired
- 
-    SIGXCPU : constant Interrupt_ID :=
-      System.OS_Interface.SIGXCPU;     --  CPU time limit exceeded
- 
-    SIGXFSZ : constant Interrupt_ID :=
-      System.OS_Interface.SIGXFSZ;     --  filesize limit exceeded
- 
-    SIGUNUSED : constant Interrupt_ID :=
-      System.OS_Interface.SIGUNUSED;     --  unused signal
- 
-    SIGSTKFLT : constant Interrupt_ID :=
-      System.OS_Interface.SIGSTKFLT;     --  stack fault on coprocessor
- 
-    SIGLOST : constant Interrupt_ID :=
-      System.OS_Interface.SIGLOST;       --  Linux alias for SIGIO
- 
-    SIGPWR : constant Interrupt_ID :=
-      System.OS_Interface.SIGPWR;        --  Power failure
- 
- end Ada.Interrupts.Names;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-intnam-mingw.ads gcc-8.1.0/gcc/ada/a-intnam-mingw.ads
*** gcc-7.3.0/gcc/ada/a-intnam-mingw.ads	Tue Sep  6 09:46:21 2011
--- gcc-8.1.0/gcc/ada/a-intnam-mingw.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,67 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
- --                                                                          --
- --                   A D A . I N T E R R U P T S . N A M E S                --
- --                                                                          --
- --                                  S p e c                                 --
- --                                                                          --
- --          Copyright (C) 1997-2011, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNARL is 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/>.                                          --
- --                                                                          --
- -- GNARL was developed by the GNARL team at Florida State University.       --
- -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This is a NT (native) version of this package
- 
- --  This target-dependent package spec contains names of interrupts supported
- --  by the local system.
- 
- with System.OS_Interface;
- 
- package Ada.Interrupts.Names is
- 
-    --  All identifiers in this unit are implementation defined
- 
-    pragma Implementation_Defined;
- 
-    --  Beware that the mapping of names to signals may be many-to-one. There
-    --  may be aliases. Also, for all signal names that are not supported on the
-    --  current system the value of the corresponding constant will be zero.
- 
-    SIGINT  : constant Interrupt_ID :=  -- interrupt (rubout)
-                System.OS_Interface.SIGINT;
- 
-    SIGILL  : constant Interrupt_ID :=  -- illegal instruction (not reset)
-                System.OS_Interface.SIGILL;
- 
-    SIGABRT : constant Interrupt_ID :=  -- used by abort (use SIGIOT in future)
-                System.OS_Interface.SIGABRT;
- 
-    SIGFPE  : constant Interrupt_ID :=  -- floating point exception
-                System.OS_Interface.SIGFPE;
- 
-    SIGSEGV : constant Interrupt_ID :=  -- segmentation violation
-                System.OS_Interface.SIGSEGV;
- 
-    SIGTERM : constant Interrupt_ID :=  -- software termination signal from kill
-                System.OS_Interface.SIGTERM;
- 
- end Ada.Interrupts.Names;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-intnam-rtems.ads gcc-8.1.0/gcc/ada/a-intnam-rtems.ads
*** gcc-7.3.0/gcc/ada/a-intnam-rtems.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-intnam-rtems.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,114 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                GNU ADA RUN-TIME LIBRARY (GNARL) COMPONENTS               --
- --                                                                          --
- --                   A D A . I N T E R R U P T S . N A M E S                --
- --                                                                          --
- --                                  S p e c                                 --
- --                                                                          --
- --             Copyright (C) 1991-2009 Free Software Foundation, Inc.       --
- --                                                                          --
- -- GNARL is 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/>.                                          --
- --                                                                          --
- -- GNARL was developed by the GNARL team at Florida State University.       --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- -- The GNARL files that were developed for RTEMS are maintained by  On-Line --
- -- Applications Research Corporation (http://www.oarcorp.com)  in  coopera- --
- -- tion with Ada Core Technologies Inc. and Florida State University.       --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This is a RTEMS version of this package
- --
- --  The following signals are reserved by the run time:
- --
- --  SIGFPE, SIGILL, SIGSEGV, SIGBUS, SIGTRAP, SIGABRT, SIGINT,
- --  SIGALRM, SIGEMT, SIGKILL
- --
- --  The pragma Unreserve_All_Interrupts affects the following signal(s):
- --
- --  SIGINT: made available for Ada handlers
- 
- --  This target-dependent package spec contains names of interrupts
- --  supported by the local system.
- 
- with System.OS_Interface;
- --  used for names of interrupts
- 
- package Ada.Interrupts.Names is
- 
-    --  Beware that the mapping of names to signals may be
-    --  many-to-one.  There may be aliases.  Also, for all
-    --  signal names that are not supported on the current system
-    --  the value of the corresponding constant will be zero.
- 
-    SIGHUP : constant Interrupt_ID :=
-      System.OS_Interface.SIGHUP;      --  hangup
- 
-    SIGINT : constant Interrupt_ID :=
-      System.OS_Interface.SIGINT;      --  interrupt (rubout)
- 
-    SIGQUIT : constant Interrupt_ID :=
-      System.OS_Interface.SIGQUIT;     --  quit (ASCD FS)
- 
-    SIGILL : constant Interrupt_ID :=
-      System.OS_Interface.SIGILL;      --  illegal instruction (not reset)
- 
-    SIGTRAP : constant Interrupt_ID :=
-      System.OS_Interface.SIGTRAP;     --  trace trap (not reset)
- 
-    SIGIOT : constant Interrupt_ID :=
-      System.OS_Interface.SIGIOT;      --  IOT instruction
- 
-    SIGABRT : constant Interrupt_ID := --  used by abort,
-      System.OS_Interface.SIGABRT;     --  replace SIGIOT in the  future
- 
-    SIGEMT : constant Interrupt_ID :=
-      System.OS_Interface.SIGEMT;      --  EMT instruction
- 
-    SIGFPE : constant Interrupt_ID :=
-      System.OS_Interface.SIGFPE;      --  floating point exception
- 
-    SIGKILL : constant Interrupt_ID :=
-      System.OS_Interface.SIGKILL;     --  kill (cannot be caught or ignored)
- 
-    SIGBUS : constant Interrupt_ID :=
-      System.OS_Interface.SIGBUS;      --  bus error
- 
-    SIGSEGV : constant Interrupt_ID :=
-      System.OS_Interface.SIGSEGV;     --  segmentation violation
- 
-    SIGSYS : constant Interrupt_ID :=
-      System.OS_Interface.SIGSYS;      --  bad argument to system call
- 
-    SIGPIPE : constant Interrupt_ID := --  write on a pipe with
-      System.OS_Interface.SIGPIPE;     --  no one to read it
- 
-    SIGALRM : constant Interrupt_ID :=
-      System.OS_Interface.SIGALRM;     --  alarm clock
- 
-    SIGTERM : constant Interrupt_ID :=
-      System.OS_Interface.SIGTERM;     --  software termination signal from kill
- 
-    SIGUSR1 : constant Interrupt_ID :=
-      System.OS_Interface.SIGUSR1;     --  user defined signal 1
- 
-    SIGUSR2 : constant Interrupt_ID :=
-      System.OS_Interface.SIGUSR2;     --  user defined signal 2
- 
- end Ada.Interrupts.Names;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-intnam-solaris.ads gcc-8.1.0/gcc/ada/a-intnam-solaris.ads
*** gcc-7.3.0/gcc/ada/a-intnam-solaris.ads	Tue Sep  6 09:46:21 2011
--- gcc-8.1.0/gcc/ada/a-intnam-solaris.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,179 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
- --                                                                          --
- --                   A D A . I N T E R R U P T S . N A M E S                --
- --                                                                          --
- --                                  S p e c                                 --
- --                                                                          --
- --          Copyright (C) 1991-2011, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNARL is 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/>.                                          --
- --                                                                          --
- -- GNARL was developed by the GNARL team at Florida State University.       --
- -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This is a Solaris version of this package
- 
- --  The following signals are reserved by the run time (native threads):
- 
- --  SIGFPE, SIGILL, SIGSEGV, SIGBUS, SIGTRAP, SIGABRT, SIGINT,
- --  SIGLWP, SIGWAITING, SIGCANCEL, SIGSTOP, SIGKILL
- 
- --  The following signals are reserved by the run time (FSU threads):
- 
- --  SIGFPE, SIGILL, SIGSEGV, SIGBUS, SIGTRAP, SIGTERM, SIGABRT, SIGINT,
- --  SIGLWP, SIGALRM, SIGVTALRM, SIGWAITING, SIGSTOP, SIGKILL
- 
- --  The pragma Unreserve_All_Interrupts affects the following signal(s):
- 
- --  SIGINT: made available for Ada handlers
- 
- with System.OS_Interface;
- 
- package Ada.Interrupts.Names is
- 
-    --  All identifiers in this unit are implementation defined
- 
-    pragma Implementation_Defined;
- 
-    --  Beware that the mapping of names to signals may be many-to-one. There
-    --  may be aliases. Also, for all signal names that are not supported on the
-    --  current system the value of the corresponding constant will be zero.
- 
-    SIGHUP : constant Interrupt_ID :=
-      System.OS_Interface.SIGHUP;      --  hangup
- 
-    SIGINT : constant Interrupt_ID :=
-      System.OS_Interface.SIGINT;      --  interrupt (rubout)
- 
-    SIGQUIT : constant Interrupt_ID :=
-      System.OS_Interface.SIGQUIT;     --  quit (ASCD FS)
- 
-    SIGILL : constant Interrupt_ID :=
-      System.OS_Interface.SIGILL;      --  illegal instruction (not reset)
- 
-    SIGTRAP : constant Interrupt_ID :=
-      System.OS_Interface.SIGTRAP;     --  trace trap (not reset)
- 
-    SIGIOT : constant Interrupt_ID :=
-      System.OS_Interface.SIGIOT;      --  IOT instruction
- 
-    SIGABRT : constant Interrupt_ID := --  used by abort,
-      System.OS_Interface.SIGABRT;     --  replace SIGIOT in the  future
- 
-    SIGEMT : constant Interrupt_ID :=
-      System.OS_Interface.SIGEMT;      --  EMT instruction
- 
-    SIGFPE : constant Interrupt_ID :=
-      System.OS_Interface.SIGFPE;      --  floating point exception
- 
-    SIGKILL : constant Interrupt_ID :=
-      System.OS_Interface.SIGKILL;     --  kill (cannot be caught or ignored)
- 
-    SIGBUS : constant Interrupt_ID :=
-      System.OS_Interface.SIGBUS;      --  bus error
- 
-    SIGSEGV : constant Interrupt_ID :=
-      System.OS_Interface.SIGSEGV;     --  segmentation violation
- 
-    SIGSYS : constant Interrupt_ID :=
-      System.OS_Interface.SIGSYS;      --  bad argument to system call
- 
-    SIGPIPE : constant Interrupt_ID := --  write on a pipe with
-      System.OS_Interface.SIGPIPE;     --  no one to read it
- 
-    SIGALRM : constant Interrupt_ID :=
-      System.OS_Interface.SIGALRM;     --  alarm clock
- 
-    SIGTERM : constant Interrupt_ID :=
-      System.OS_Interface.SIGTERM;     --  software termination signal from kill
- 
-    SIGUSR1 : constant Interrupt_ID :=
-      System.OS_Interface.SIGUSR1;     --  user defined signal 1
- 
-    SIGUSR2 : constant Interrupt_ID :=
-      System.OS_Interface.SIGUSR2;     --  user defined signal 2
- 
-    SIGCLD : constant Interrupt_ID :=
-      System.OS_Interface.SIGCLD;      --  child status change
- 
-    SIGCHLD : constant Interrupt_ID :=
-      System.OS_Interface.SIGCHLD;     --  4.3BSD's/POSIX name for SIGCLD
- 
-    SIGWINCH : constant Interrupt_ID :=
-      System.OS_Interface.SIGWINCH;    --  window size change
- 
-    SIGURG : constant Interrupt_ID :=
-      System.OS_Interface.SIGURG;      --  urgent condition on IO channel
- 
-    SIGPOLL : constant Interrupt_ID :=
-      System.OS_Interface.SIGPOLL;     --  pollable event occurred
- 
-    SIGIO : constant Interrupt_ID :=   --  input/output possible,
-      System.OS_Interface.SIGIO;       --  SIGPOLL alias (Solaris)
- 
-    SIGSTOP : constant Interrupt_ID :=
-      System.OS_Interface.SIGSTOP;     --  stop (cannot be caught or ignored)
- 
-    SIGTSTP : constant Interrupt_ID :=
-      System.OS_Interface.SIGTSTP;     --  user stop requested from tty
- 
-    SIGCONT : constant Interrupt_ID :=
-      System.OS_Interface.SIGCONT;     --  stopped process has been continued
- 
-    SIGTTIN : constant Interrupt_ID :=
-      System.OS_Interface.SIGTTIN;     --  background tty read attempted
- 
-    SIGTTOU : constant Interrupt_ID :=
-      System.OS_Interface.SIGTTOU;     --  background tty write attempted
- 
-    SIGVTALRM : constant Interrupt_ID :=
-      System.OS_Interface.SIGVTALRM;   --  virtual timer expired
- 
-    SIGPROF : constant Interrupt_ID :=
-      System.OS_Interface.SIGPROF;     --  profiling timer expired
- 
-    SIGXCPU : constant Interrupt_ID :=
-      System.OS_Interface.SIGXCPU;     --  CPU time limit exceeded
- 
-    SIGXFSZ : constant Interrupt_ID :=
-      System.OS_Interface.SIGXFSZ;     --  filesize limit exceeded
- 
-    SIGPWR : constant Interrupt_ID :=
-      System.OS_Interface.SIGPWR;      --  power-fail restart
- 
-    SIGWAITING : constant Interrupt_ID :=
-      System.OS_Interface.SIGWAITING;  --  process's lwps blocked (Solaris)
- 
-    SIGLWP : constant Interrupt_ID :=
-      System.OS_Interface.SIGLWP;      --  used by thread library (Solaris)
- 
-    SIGFREEZE : constant Interrupt_ID :=
-      System.OS_Interface.SIGFREEZE;   --  used by CPR (Solaris)
- 
- --  what is CPR????
- 
-    SIGTHAW : constant Interrupt_ID :=
-      System.OS_Interface.SIGTHAW;     --  used by CPR (Solaris)
- 
-    SIGCANCEL : constant Interrupt_ID :=
-      System.OS_Interface.SIGCANCEL;     --  used for thread cancel (Solaris)
- 
- end Ada.Interrupts.Names;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-intnam-vxworks.ads gcc-8.1.0/gcc/ada/a-intnam-vxworks.ads
*** gcc-7.3.0/gcc/ada/a-intnam-vxworks.ads	Tue Sep  6 09:46:21 2011
--- gcc-8.1.0/gcc/ada/a-intnam-vxworks.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,46 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                  GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                --
- --                                                                          --
- --                   A D A . I N T E R R U P T S . N A M E S                --
- --                                                                          --
- --                                  S p e c                                 --
- --                                                                          --
- --          Copyright (C) 1998-2011, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNARL is 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/>.                                          --
- --                                                                          --
- -- GNARL was developed by the GNARL team at Florida State University.       --
- -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This is the VxWorks version of this package
- 
- with System.OS_Interface;
- 
- package Ada.Interrupts.Names is
- 
-    --  All identifiers in this unit are implementation defined
- 
-    pragma Implementation_Defined;
- 
-    subtype Hardware_Interrupts is Interrupt_ID
-      range Interrupt_ID'First .. System.OS_Interface.Max_HW_Interrupt;
-    --  Range of values that can be used for hardware interrupts
- 
- end Ada.Interrupts.Names;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-intnam.ads gcc-8.1.0/gcc/ada/a-intnam.ads
*** gcc-7.3.0/gcc/ada/a-intnam.ads	Thu Sep 15 10:26:49 2011
--- gcc-8.1.0/gcc/ada/a-intnam.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,46 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                 A D A . I N T E R R U P T S . N A M E S                  --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1995-2011, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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/>.                                          --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  The standard implementation of this spec contains only dummy interrupt
- --  names. These dummy entries permit checking out code for correctness of
- --  semantics, even if interrupts are not supported.
- 
- --  For specific implementations that fully support interrupts, this package
- --  spec is replaced by an implementation dependent version that defines the
- --  interrupts available on the system.
- 
- package Ada.Interrupts.Names is
- 
-    --  All identifiers in this unit are implementation defined
- 
-    pragma Implementation_Defined;
- 
-    DUMMY_INTERRUPT_1 : constant Interrupt_ID := 1;
-    DUMMY_INTERRUPT_2 : constant Interrupt_ID := 2;
- 
- end Ada.Interrupts.Names;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ioexce.ads gcc-8.1.0/gcc/ada/a-ioexce.ads
*** gcc-7.3.0/gcc/ada/a-ioexce.ads	Tue Feb 25 15:15:44 2014
--- gcc-8.1.0/gcc/ada/a-ioexce.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,30 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                     A D A . I O _ E X C E P T I O N S                    --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- pragma Compiler_Unit_Warning;
- 
- package Ada.IO_Exceptions is
-    pragma Pure;
- 
-    Status_Error : exception;
-    Mode_Error   : exception;
-    Name_Error   : exception;
-    Use_Error    : exception;
-    Device_Error : exception;
-    End_Error    : exception;
-    Data_Error   : exception;
-    Layout_Error : exception;
- 
- end Ada.IO_Exceptions;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-iteint.ads gcc-8.1.0/gcc/ada/a-iteint.ads
*** gcc-7.3.0/gcc/ada/a-iteint.ads	Tue Sep  6 09:26:02 2011
--- gcc-8.1.0/gcc/ada/a-iteint.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,39 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --               A D A . I T E R A T O R . I N T E R F A C E S              --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- generic
-    type Cursor;
-    with function Has_Element (Position : Cursor) return Boolean;
-    pragma Unreferenced (Has_Element);
- 
- package Ada.Iterator_Interfaces is
-    pragma Pure;
- 
-    type Forward_Iterator is limited interface;
- 
-    function First
-      (Object : Forward_Iterator) return Cursor is abstract;
-    function Next
-      (Object   : Forward_Iterator;
-       Position : Cursor) return Cursor is abstract;
- 
-    type Reversible_Iterator is limited interface and Forward_Iterator;
- 
-    function Last
-      (Object : Reversible_Iterator) return Cursor is abstract;
-    function Previous
-      (Object   : Reversible_Iterator;
-       Position : Cursor) return Cursor is abstract;
- end Ada.Iterator_Interfaces;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-iwteio.ads gcc-8.1.0/gcc/ada/a-iwteio.ads
*** gcc-7.3.0/gcc/ada/a-iwteio.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-iwteio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,19 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --             A D A . I N T E G E R _ W I D E _ T E X T _ I O              --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Wide_Text_IO;
- 
- package Ada.Integer_Wide_Text_IO is
-   new Ada.Wide_Text_IO.Integer_IO (Integer);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-izteio.ads gcc-8.1.0/gcc/ada/a-izteio.ads
*** gcc-7.3.0/gcc/ada/a-izteio.ads	Tue Apr 10 05:44:30 2012
--- gcc-8.1.0/gcc/ada/a-izteio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,19 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --        A D A . I N T E G E R _ W I D E _ W I D E _ T E X T _ I O         --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Wide_Wide_Text_IO;
- 
- package Ada.Integer_Wide_Wide_Text_IO is
-   new Ada.Wide_Wide_Text_IO.Integer_IO (Integer);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-lcteio.ads gcc-8.1.0/gcc/ada/a-lcteio.ads
*** gcc-7.3.0/gcc/ada/a-lcteio.ads	Tue Apr 10 05:44:30 2012
--- gcc-8.1.0/gcc/ada/a-lcteio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,24 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --              A D A . L O N G _ C O M P L E X _ T E X T _ I O             --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Ada 2005 AI-328
- 
- with Ada.Text_IO.Complex_IO;
- with Ada.Numerics.Long_Complex_Types;
- 
- pragma Elaborate_All (Ada.Text_IO.Complex_IO);
- 
- package Ada.Long_Complex_Text_IO is
-   new Ada.Text_IO.Complex_IO (Ada.Numerics.Long_Complex_Types);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-lfteio.ads gcc-8.1.0/gcc/ada/a-lfteio.ads
*** gcc-7.3.0/gcc/ada/a-lfteio.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-lfteio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,19 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --               A D A . L O N G _ F L O A T _ T E X T _ I O                --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Text_IO;
- 
- package Ada.Long_Float_Text_IO is
-   new Ada.Text_IO.Float_IO (Long_Float);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-lfwtio.ads gcc-8.1.0/gcc/ada/a-lfwtio.ads
*** gcc-7.3.0/gcc/ada/a-lfwtio.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-lfwtio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,19 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --          A D A . L O N G _ F L O A T _ W I D E _ T E X T _ I O           --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Wide_Text_IO;
- 
- package Ada.Long_Float_Wide_Text_IO is
-   new Ada.Wide_Text_IO.Float_IO (Long_Float);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-lfztio.ads gcc-8.1.0/gcc/ada/a-lfztio.ads
*** gcc-7.3.0/gcc/ada/a-lfztio.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-lfztio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,19 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --     A D A . L O N G _ F L O A T _ W I D E _ W I D E _ T E X T _ I O      --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Wide_Wide_Text_IO;
- 
- package Ada.Long_Float_Wide_Wide_Text_IO is
-   new Ada.Wide_Wide_Text_IO.Float_IO (Long_Float);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-liteio.ads gcc-8.1.0/gcc/ada/a-liteio.ads
*** gcc-7.3.0/gcc/ada/a-liteio.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-liteio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,19 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --             A D A . L O N G _ I N T E G E R _ T E X T _ I O              --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Text_IO;
- 
- package Ada.Long_Integer_Text_IO is
-   new Ada.Text_IO.Integer_IO (Long_Integer);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-liwtio.ads gcc-8.1.0/gcc/ada/a-liwtio.ads
*** gcc-7.3.0/gcc/ada/a-liwtio.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-liwtio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,19 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --        A D A . L O N G _ I N T E G E R _ W I D E _ T E X T _ I O         --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Wide_Text_IO;
- 
- package Ada.Long_Integer_Wide_Text_IO is
-   new Ada.Wide_Text_IO.Integer_IO (Long_Integer);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-liztio.ads gcc-8.1.0/gcc/ada/a-liztio.ads
*** gcc-7.3.0/gcc/ada/a-liztio.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-liztio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,19 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --   A D A . L O N G _ I N T E G E R _ W I D E _ W I D E _ T E X T _ I O    --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Wide_Wide_Text_IO;
- 
- package Ada.Long_Integer_Wide_Wide_Text_IO is
-   new Ada.Wide_Wide_Text_IO.Integer_IO (Long_Integer);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-llctio.ads gcc-8.1.0/gcc/ada/a-llctio.ads
*** gcc-7.3.0/gcc/ada/a-llctio.ads	Tue Apr 10 05:44:30 2012
--- gcc-8.1.0/gcc/ada/a-llctio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,24 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --         A D A . L O N G _ L O N G _ C O M P L E X _ T E X T _ I O        --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Ada 2005 AI-328
- 
- with Ada.Text_IO.Complex_IO;
- with Ada.Numerics.Long_Long_Complex_Types;
- 
- pragma Elaborate_All (Ada.Text_IO.Complex_IO);
- 
- package Ada.Long_Long_Complex_Text_IO is
-   new Ada.Text_IO.Complex_IO (Ada.Numerics.Long_Long_Complex_Types);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-llftio.ads gcc-8.1.0/gcc/ada/a-llftio.ads
*** gcc-7.3.0/gcc/ada/a-llftio.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-llftio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,19 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --          A D A . L O N G _ L O N G _ F L O A T _ T E X T _ I O           --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Text_IO;
- 
- package Ada.Long_Long_Float_Text_IO is
-   new Ada.Text_IO.Float_IO (Long_Long_Float);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-llfwti.ads gcc-8.1.0/gcc/ada/a-llfwti.ads
*** gcc-7.3.0/gcc/ada/a-llfwti.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-llfwti.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,19 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --     A D A . L O N G _ L O N G _ F L O A T _ W I D E _ T E X T _ I O      --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Wide_Text_IO;
- 
- package Ada.Long_Long_Float_Wide_Text_IO is
-   new Ada.Wide_Text_IO.Float_IO (Long_Long_Float);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-llfzti.ads gcc-8.1.0/gcc/ada/a-llfzti.ads
*** gcc-7.3.0/gcc/ada/a-llfzti.ads	Mon Mar 24 10:57:32 2008
--- gcc-8.1.0/gcc/ada/a-llfzti.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,19 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                  ADA.LONG_LONG_FLOAT_WIDE_WIDE_TEXT_IO                   --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Wide_Wide_Text_IO;
- 
- package Ada.Long_Long_Float_Wide_Wide_Text_IO is
-   new Ada.Wide_Wide_Text_IO.Float_IO (Long_Long_Float);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-llitio.ads gcc-8.1.0/gcc/ada/a-llitio.ads
*** gcc-7.3.0/gcc/ada/a-llitio.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-llitio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,19 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --        A D A . L O N G _ L O N G _ I N T E G E R _ T E X T _ I O         --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Text_IO;
- 
- package Ada.Long_Long_Integer_Text_IO is
-   new Ada.Text_IO.Integer_IO (Long_Long_Integer);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-lliwti.ads gcc-8.1.0/gcc/ada/a-lliwti.ads
*** gcc-7.3.0/gcc/ada/a-lliwti.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-lliwti.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,19 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --   A D A . L O N G _ L O N G _ I N T E G E R _ W I D E _ T E X T _ I O    --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Wide_Text_IO;
- 
- package Ada.Long_Long_Integer_Wide_Text_IO is
-   new Ada.Wide_Text_IO.Integer_IO (Long_Long_Integer);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-llizti.ads gcc-8.1.0/gcc/ada/a-llizti.ads
*** gcc-7.3.0/gcc/ada/a-llizti.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-llizti.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,19 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --   A D A . L O N G _ L O N G _ I N T E G E R _ W I D E _ T E X T _ I O    --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Wide_Wide_Text_IO;
- 
- package Ada.Long_Long_Integer_Wide_Wide_Text_IO is
-   new Ada.Wide_Wide_Text_IO.Integer_IO (Long_Long_Integer);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-locale.adb gcc-8.1.0/gcc/ada/a-locale.adb
*** gcc-7.3.0/gcc/ada/a-locale.adb	Fri Jan 20 10:36:01 2017
--- gcc-8.1.0/gcc/ada/a-locale.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,64 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                           A D A . L O C A L E S                          --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2010-2016, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 System; use System;
- 
- package body Ada.Locales is
- 
-    type Str_4 is new String (1 .. 4);
- 
-    --------------
-    -- Language --
-    --------------
- 
-    function Language return Language_Code is
-       procedure C_Get_Language_Code (P : Address);
-       pragma Import (C, C_Get_Language_Code);
-       F : Str_4;
-    begin
-       C_Get_Language_Code (F'Address);
-       return Language_Code (F (1 .. 3));
-    end Language;
- 
-    -------------
-    -- Country --
-    -------------
- 
-    function Country return Country_Code is
-       procedure C_Get_Country_Code (P : Address);
-       pragma Import (C, C_Get_Country_Code);
-       F : Str_4;
-    begin
-       C_Get_Country_Code (F'Address);
-       return Country_Code (F (1 .. 2));
-    end Country;
- 
- end Ada.Locales;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-locale.ads gcc-8.1.0/gcc/ada/a-locale.ads
*** gcc-7.3.0/gcc/ada/a-locale.ads	Fri Jan 20 10:36:01 2017
--- gcc-8.1.0/gcc/ada/a-locale.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,36 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                           A D A . L O C A L E S                          --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2010-2016, 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 --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- package Ada.Locales is
-    pragma Preelaborate (Locales);
-    pragma Remote_Types (Locales);
- 
-    type Language_Code is new String (1 .. 3)
-       with Dynamic_Predicate =>
-          (for all E of Language_Code => E in 'a' .. 'z');
- 
-    type Country_Code is new String (1 .. 2)
-       with Dynamic_Predicate =>
-          (for all E of Country_Code => E in 'A' .. 'Z');
- 
-    Language_Unknown : constant Language_Code := "und";
-    Country_Unknown  : constant Country_Code := "ZZ";
- 
-    function Language return Language_Code;
-    function Country return Country_Code;
- 
- end Ada.Locales;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ncelfu.ads gcc-8.1.0/gcc/ada/a-ncelfu.ads
*** gcc-7.3.0/gcc/ada/a-ncelfu.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-ncelfu.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,23 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --            ADA.NUMERICS.GENERIC_COMPLEX.ELEMENTARY_FUNCTIONS             --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Numerics.Complex_Types;
- with Ada.Numerics.Generic_Complex_Elementary_Functions;
- 
- package Ada.Numerics.Complex_Elementary_Functions is
-   new Ada.Numerics.Generic_Complex_Elementary_Functions
-                                             (Ada.Numerics.Complex_Types);
- 
- pragma Pure (Ada.Numerics.Complex_Elementary_Functions);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ngcefu.adb gcc-8.1.0/gcc/ada/a-ngcefu.adb
*** gcc-7.3.0/gcc/ada/a-ngcefu.adb	Mon Jan 23 11:57:27 2017
--- gcc-8.1.0/gcc/ada/a-ngcefu.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,710 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --            ADA.NUMERICS.GENERIC_COMPLEX_ELEMENTARY_FUNCTIONS             --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Generic_Elementary_Functions;
- 
- package body Ada.Numerics.Generic_Complex_Elementary_Functions is
- 
-    package Elementary_Functions is new
-       Ada.Numerics.Generic_Elementary_Functions (Real'Base);
-    use Elementary_Functions;
- 
-    PI       : constant := 3.14159_26535_89793_23846_26433_83279_50288_41971;
-    PI_2     : constant := PI / 2.0;
-    Sqrt_Two : constant := 1.41421_35623_73095_04880_16887_24209_69807_85696;
-    Log_Two  : constant := 0.69314_71805_59945_30941_72321_21458_17656_80755;
- 
-    subtype T is Real'Base;
- 
-    Epsilon                 : constant T := 2.0      ** (1 - T'Model_Mantissa);
-    Square_Root_Epsilon     : constant T := Sqrt_Two ** (1 - T'Model_Mantissa);
-    Inv_Square_Root_Epsilon : constant T := Sqrt_Two ** (T'Model_Mantissa - 1);
-    Root_Root_Epsilon       : constant T := Sqrt_Two **
-                                                  ((1 - T'Model_Mantissa) / 2);
-    Log_Inverse_Epsilon_2   : constant T := T (T'Model_Mantissa - 1) / 2.0;
- 
-    Complex_Zero : constant Complex := (0.0,  0.0);
-    Complex_One  : constant Complex := (1.0,  0.0);
-    Complex_I    : constant Complex := (0.0,  1.0);
-    Half_Pi      : constant Complex := (PI_2, 0.0);
- 
-    --------
-    -- ** --
-    --------
- 
-    function "**" (Left : Complex; Right : Complex) return Complex is
-    begin
-       if Re (Right) = 0.0
-         and then Im (Right) = 0.0
-         and then Re (Left)  = 0.0
-         and then Im (Left)  = 0.0
-       then
-          raise Argument_Error;
- 
-       elsif Re (Left) = 0.0
-         and then Im (Left) = 0.0
-         and then Re (Right) < 0.0
-       then
-          raise Constraint_Error;
- 
-       elsif Re (Left) = 0.0 and then Im (Left) = 0.0 then
-          return Left;
- 
-       elsif Right = (0.0, 0.0) then
-          return Complex_One;
- 
-       elsif Re (Right) = 0.0 and then Im (Right) = 0.0 then
-          return 1.0 + Right;
- 
-       elsif Re (Right) = 1.0 and then Im (Right) = 0.0 then
-          return Left;
- 
-       else
-          return Exp (Right * Log (Left));
-       end if;
-    end "**";
- 
-    function "**" (Left : Real'Base; Right : Complex) return Complex is
-    begin
-       if Re (Right) = 0.0 and then Im (Right) = 0.0 and then Left = 0.0 then
-          raise Argument_Error;
- 
-       elsif Left = 0.0 and then Re (Right) < 0.0 then
-          raise Constraint_Error;
- 
-       elsif Left = 0.0 then
-          return Compose_From_Cartesian (Left, 0.0);
- 
-       elsif Re (Right) = 0.0 and then Im (Right) = 0.0 then
-          return Complex_One;
- 
-       elsif Re (Right) = 1.0 and then Im (Right) = 0.0 then
-          return Compose_From_Cartesian (Left, 0.0);
- 
-       else
-          return Exp (Log (Left) * Right);
-       end if;
-    end "**";
- 
-    function "**" (Left : Complex; Right : Real'Base) return Complex is
-    begin
-       if Right = 0.0
-         and then Re (Left) = 0.0
-         and then Im (Left) = 0.0
-       then
-          raise Argument_Error;
- 
-       elsif Re (Left) = 0.0
-         and then Im (Left) = 0.0
-         and then Right < 0.0
-       then
-          raise Constraint_Error;
- 
-       elsif Re (Left) = 0.0 and then Im (Left) = 0.0 then
-          return Left;
- 
-       elsif Right = 0.0 then
-          return Complex_One;
- 
-       elsif Right = 1.0 then
-          return Left;
- 
-       else
-          return Exp (Right * Log (Left));
-       end if;
-    end "**";
- 
-    ------------
-    -- Arccos --
-    ------------
- 
-    function Arccos (X : Complex) return Complex is
-       Result : Complex;
- 
-    begin
-       if X = Complex_One then
-          return Complex_Zero;
- 
-       elsif abs Re (X) < Square_Root_Epsilon and then
-          abs Im (X) < Square_Root_Epsilon
-       then
-          return Half_Pi - X;
- 
-       elsif abs Re (X) > Inv_Square_Root_Epsilon or else
-             abs Im (X) > Inv_Square_Root_Epsilon
-       then
-          return -2.0 * Complex_I * Log (Sqrt ((1.0 + X) / 2.0) +
-                             Complex_I * Sqrt ((1.0 - X) / 2.0));
-       end if;
- 
-       Result := -Complex_I * Log (X + Complex_I * Sqrt (1.0 - X * X));
- 
-       if Im (X) = 0.0
-         and then abs Re (X) <= 1.00
-       then
-          Set_Im (Result, Im (X));
-       end if;
- 
-       return Result;
-    end Arccos;
- 
-    -------------
-    -- Arccosh --
-    -------------
- 
-    function Arccosh (X : Complex) return Complex is
-       Result : Complex;
- 
-    begin
-       if X = Complex_One then
-          return Complex_Zero;
- 
-       elsif abs Re (X) < Square_Root_Epsilon and then
-          abs Im (X) < Square_Root_Epsilon
-       then
-          Result := Compose_From_Cartesian (-Im (X), -PI_2 + Re (X));
- 
-       elsif abs Re (X) > Inv_Square_Root_Epsilon or else
-             abs Im (X) > Inv_Square_Root_Epsilon
-       then
-          Result := Log_Two + Log (X);
- 
-       else
-          Result := 2.0 * Log (Sqrt ((1.0 + X) / 2.0) +
-                               Sqrt ((X - 1.0) / 2.0));
-       end if;
- 
-       if Re (Result) <= 0.0 then
-          Result := -Result;
-       end if;
- 
-       return Result;
-    end Arccosh;
- 
-    ------------
-    -- Arccot --
-    ------------
- 
-    function Arccot (X : Complex) return Complex is
-       Xt : Complex;
- 
-    begin
-       if abs Re (X) < Square_Root_Epsilon and then
-          abs Im (X) < Square_Root_Epsilon
-       then
-          return Half_Pi - X;
- 
-       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));
-             return Xt;
-          else
-             return Xt;
-          end if;
-       end if;
- 
-       Xt := Complex_I * Log ((X - Complex_I) / (X + Complex_I)) / 2.0;
- 
-       if Re (Xt) < 0.0 then
-          Xt := PI + Xt;
-       end if;
- 
-       return Xt;
-    end Arccot;
- 
-    --------------
-    -- Arccoth --
-    --------------
- 
-    function Arccoth (X : Complex) return Complex is
-       R : Complex;
- 
-    begin
-       if X = (0.0, 0.0) then
-          return Compose_From_Cartesian (0.0, PI_2);
- 
-       elsif abs Re (X) < Square_Root_Epsilon
-          and then abs Im (X) < Square_Root_Epsilon
-       then
-          return PI_2 * Complex_I + X;
- 
-       elsif abs Re (X) > 1.0 / Epsilon or else
-             abs Im (X) > 1.0 / Epsilon
-       then
-          if Im (X) > 0.0 then
-             return (0.0, 0.0);
-          else
-             return PI * Complex_I;
-          end if;
- 
-       elsif Im (X) = 0.0 and then Re (X) = 1.0 then
-          raise Constraint_Error;
- 
-       elsif Im (X) = 0.0 and then Re (X) = -1.0 then
-          raise Constraint_Error;
-       end if;
- 
-       begin
-          R := Log ((1.0 + X) / (X - 1.0)) / 2.0;
- 
-       exception
-          when Constraint_Error =>
-             R := (Log (1.0 + X) - Log (X - 1.0)) / 2.0;
-       end;
- 
-       if Im (R) < 0.0 then
-          Set_Im (R, PI + Im (R));
-       end if;
- 
-       if Re (X) = 0.0 then
-          Set_Re (R, Re (X));
-       end if;
- 
-       return R;
-    end Arccoth;
- 
-    ------------
-    -- Arcsin --
-    ------------
- 
-    function Arcsin (X : Complex) return Complex is
-       Result : Complex;
- 
-    begin
-       --  For very small argument, sin (x) = x
- 
-       if abs Re (X) < Square_Root_Epsilon and then
-          abs Im (X) < Square_Root_Epsilon
-       then
-          return X;
- 
-       elsif abs Re (X) > Inv_Square_Root_Epsilon or else
-             abs Im (X) > Inv_Square_Root_Epsilon
-       then
-          Result := -Complex_I * (Log (Complex_I * X) + Log (2.0 * Complex_I));
- 
-          if Im (Result) > PI_2 then
-             Set_Im (Result, PI - Im (X));
- 
-          elsif Im (Result) < -PI_2 then
-             Set_Im (Result, -(PI + Im (X)));
-          end if;
- 
-          return Result;
-       end if;
- 
-       Result := -Complex_I * Log (Complex_I * X + Sqrt (1.0 - X * X));
- 
-       if Re (X) = 0.0 then
-          Set_Re (Result, Re (X));
- 
-       elsif Im (X) = 0.0
-         and then abs Re (X) <= 1.00
-       then
-          Set_Im (Result, Im (X));
-       end if;
- 
-       return Result;
-    end Arcsin;
- 
-    -------------
-    -- Arcsinh --
-    -------------
- 
-    function Arcsinh (X : Complex) return Complex is
-       Result : Complex;
- 
-    begin
-       if abs Re (X) < Square_Root_Epsilon and then
-          abs Im (X) < Square_Root_Epsilon
-       then
-          return X;
- 
-       elsif abs Re (X) > Inv_Square_Root_Epsilon or else
-             abs Im (X) > Inv_Square_Root_Epsilon
-       then
-          Result := Log_Two + Log (X); -- may have wrong sign
- 
-          if (Re (X) < 0.0 and then Re (Result) > 0.0)
-            or else (Re (X) > 0.0 and then Re (Result) < 0.0)
-          then
-             Set_Re (Result, -Re (Result));
-          end if;
- 
-          return Result;
-       end if;
- 
-       Result := Log (X + Sqrt (1.0 + X * X));
- 
-       if Re (X) = 0.0 then
-          Set_Re (Result, Re (X));
-       elsif Im  (X) = 0.0 then
-          Set_Im (Result, Im  (X));
-       end if;
- 
-       return Result;
-    end Arcsinh;
- 
-    ------------
-    -- Arctan --
-    ------------
- 
-    function Arctan (X : Complex) return Complex is
-    begin
-       if abs Re (X) < Square_Root_Epsilon and then
-          abs Im (X) < Square_Root_Epsilon
-       then
-          return X;
- 
-       else
-          return -Complex_I * (Log (1.0 + Complex_I * X)
-                             - Log (1.0 - Complex_I * X)) / 2.0;
-       end if;
-    end Arctan;
- 
-    -------------
-    -- Arctanh --
-    -------------
- 
-    function Arctanh (X : Complex) return Complex is
-    begin
-       if abs Re (X) < Square_Root_Epsilon and then
-          abs Im (X) < Square_Root_Epsilon
-       then
-          return X;
-       else
-          return (Log (1.0 + X) - Log (1.0 - X)) / 2.0;
-       end if;
-    end Arctanh;
- 
-    ---------
-    -- Cos --
-    ---------
- 
-    function Cos (X : Complex) return Complex is
-    begin
-       return
-         Compose_From_Cartesian
-           (Cos (Re (X)) * Cosh (Im (X)),
-            -(Sin (Re (X)) * Sinh (Im (X))));
-    end Cos;
- 
-    ----------
-    -- Cosh --
-    ----------
- 
-    function Cosh (X : Complex) return Complex is
-    begin
-       return
-         Compose_From_Cartesian
-           (Cosh (Re (X)) * Cos (Im (X)),
-            Sinh (Re (X)) * Sin (Im (X)));
-    end Cosh;
- 
-    ---------
-    -- Cot --
-    ---------
- 
-    function Cot (X : Complex) return Complex is
-    begin
-       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;
- 
-       elsif Im (X) < -Log_Inverse_Epsilon_2 then
-          return Complex_I;
-       end if;
- 
-       return Cos (X) / Sin (X);
-    end Cot;
- 
-    ----------
-    -- Coth --
-    ----------
- 
-    function Coth (X : Complex) return Complex is
-    begin
-       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;
- 
-       elsif Re (X) < -Log_Inverse_Epsilon_2 then
-          return -Complex_One;
- 
-       else
-          return Cosh (X) / Sinh (X);
-       end if;
-    end Coth;
- 
-    ---------
-    -- Exp --
-    ---------
- 
-    function Exp (X : Complex) return Complex is
-       EXP_RE_X : constant Real'Base := Exp (Re (X));
- 
-    begin
-       return Compose_From_Cartesian (EXP_RE_X * Cos (Im (X)),
-                                      EXP_RE_X * Sin (Im (X)));
-    end Exp;
- 
-    function Exp (X : Imaginary) return Complex is
-       ImX : constant Real'Base := Im (X);
- 
-    begin
-       return Compose_From_Cartesian (Cos (ImX), Sin (ImX));
-    end Exp;
- 
-    ---------
-    -- Log --
-    ---------
- 
-    function Log (X : Complex) return Complex is
-       ReX : Real'Base;
-       ImX : Real'Base;
-       Z   : Complex;
- 
-    begin
-       if Re (X) = 0.0 and then Im (X) = 0.0 then
-          raise Constraint_Error;
- 
-       elsif abs (1.0 - Re (X)) < Root_Root_Epsilon
-         and then abs Im (X) < Root_Root_Epsilon
-       then
-          Z := X;
-          Set_Re (Z, Re (Z) - 1.0);
- 
-          return (1.0 - (1.0 / 2.0 -
-                        (1.0 / 3.0 - (1.0 / 4.0) * Z) * Z) * Z) * Z;
-       end if;
- 
-       begin
-          ReX := Log (Modulus (X));
- 
-       exception
-          when Constraint_Error =>
-             ReX := Log (Modulus (X / 2.0)) - Log_Two;
-       end;
- 
-       ImX := Arctan (Im (X), Re (X));
- 
-       if ImX > PI then
-          ImX := ImX - 2.0 * PI;
-       end if;
- 
-       return Compose_From_Cartesian (ReX, ImX);
-    end Log;
- 
-    ---------
-    -- Sin --
-    ---------
- 
-    function Sin (X : Complex) return Complex is
-    begin
-       if abs Re (X) < Square_Root_Epsilon
-            and then
-          abs Im (X) < Square_Root_Epsilon
-       then
-          return X;
-       end if;
- 
-       return
-         Compose_From_Cartesian
-           (Sin (Re (X)) * Cosh (Im (X)),
-            Cos (Re (X)) * Sinh (Im (X)));
-    end Sin;
- 
-    ----------
-    -- Sinh --
-    ----------
- 
-    function Sinh (X : Complex) return Complex is
-    begin
-       if abs Re (X) < Square_Root_Epsilon and then
-          abs Im (X) < Square_Root_Epsilon
-       then
-          return X;
- 
-       else
-          return Compose_From_Cartesian (Sinh (Re (X)) * Cos (Im (X)),
-                                         Cosh (Re (X)) * Sin (Im (X)));
-       end if;
-    end Sinh;
- 
-    ----------
-    -- Sqrt --
-    ----------
- 
-    function Sqrt (X : Complex) return Complex is
-       ReX : constant Real'Base := Re (X);
-       ImX : constant Real'Base := Im (X);
-       XR  : constant Real'Base := abs Re (X);
-       YR  : constant Real'Base := abs Im (X);
-       R   : Real'Base;
-       R_X : Real'Base;
-       R_Y : Real'Base;
- 
-    begin
-       --  Deal with pure real case, see (RM G.1.2(39))
- 
-       if ImX = 0.0 then
-          if ReX > 0.0 then
-             return
-               Compose_From_Cartesian
-                 (Sqrt (ReX), 0.0);
- 
-          elsif ReX = 0.0 then
-             return X;
- 
-          else
-             return
-               Compose_From_Cartesian
-                 (0.0, Real'Copy_Sign (Sqrt (-ReX), ImX));
-          end if;
- 
-       elsif ReX = 0.0 then
-          R_X := Sqrt (YR / 2.0);
- 
-          if ImX > 0.0 then
-             return Compose_From_Cartesian (R_X, R_X);
-          else
-             return Compose_From_Cartesian (R_X, -R_X);
-          end if;
- 
-       else
-          R  := Sqrt (XR ** 2 + YR ** 2);
- 
-          --  If the square of the modulus overflows, try rescaling the
-          --  real and imaginary parts. We cannot depend on an exception
-          --  being raised on all targets.
- 
-          if R > Real'Base'Last then
-             raise Constraint_Error;
-          end if;
- 
-          --  We are solving the system
- 
-          --  XR = R_X ** 2 - Y_R ** 2      (1)
-          --  YR = 2.0 * R_X * R_Y          (2)
-          --
-          --  The symmetric solution involves square roots for both R_X and
-          --  R_Y, but it is more accurate to use the square root with the
-          --  larger argument for either R_X or R_Y, and equation (2) for the
-          --  other.
- 
-          if ReX < 0.0 then
-             R_Y := Sqrt (0.5 * (R - ReX));
-             R_X := YR / (2.0 * R_Y);
- 
-          else
-             R_X := Sqrt (0.5 * (R + ReX));
-             R_Y := YR / (2.0 * R_X);
-          end if;
-       end if;
- 
-       if Im (X) < 0.0 then -- halve angle, Sqrt of magnitude
-          R_Y := -R_Y;
-       end if;
-       return Compose_From_Cartesian (R_X, R_Y);
- 
-    exception
-       when Constraint_Error =>
- 
-          --  Rescale and try again
- 
-          R := Modulus (Compose_From_Cartesian (Re (X / 4.0), Im (X / 4.0)));
-          R_X := 2.0 * Sqrt (0.5 * R + 0.5 * Re (X / 4.0));
-          R_Y := 2.0 * Sqrt (0.5 * R - 0.5 * Re (X / 4.0));
- 
-          if Im (X) < 0.0 then -- halve angle, Sqrt of magnitude
-             R_Y := -R_Y;
-          end if;
- 
-          return Compose_From_Cartesian (R_X, R_Y);
-    end Sqrt;
- 
-    ---------
-    -- Tan --
-    ---------
- 
-    function Tan (X : Complex) return Complex is
-    begin
-       if abs Re (X) < Square_Root_Epsilon and then
-          abs Im (X) < Square_Root_Epsilon
-       then
-          return X;
- 
-       elsif Im (X) > Log_Inverse_Epsilon_2 then
-          return Complex_I;
- 
-       elsif Im (X) < -Log_Inverse_Epsilon_2 then
-          return -Complex_I;
- 
-       else
-          return Sin (X) / Cos (X);
-       end if;
-    end Tan;
- 
-    ----------
-    -- Tanh --
-    ----------
- 
-    function Tanh (X : Complex) return Complex is
-    begin
-       if abs Re (X) < Square_Root_Epsilon and then
-          abs Im (X) < Square_Root_Epsilon
-       then
-          return X;
- 
-       elsif Re (X) > Log_Inverse_Epsilon_2 then
-          return Complex_One;
- 
-       elsif Re (X) < -Log_Inverse_Epsilon_2 then
-          return -Complex_One;
- 
-       else
-          return Sinh (X) / Cosh (X);
-       end if;
-    end Tanh;
- 
- end Ada.Numerics.Generic_Complex_Elementary_Functions;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ngcefu.ads gcc-8.1.0/gcc/ada/a-ngcefu.ads
*** gcc-7.3.0/gcc/ada/a-ngcefu.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-ngcefu.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,55 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --            ADA.NUMERICS.GENERIC_COMPLEX_ELEMENTARY_FUNCTIONS             --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Numerics.Generic_Complex_Types;
- generic
-    with package Complex_Types is new Ada.Numerics.Generic_Complex_Types (<>);
-    use Complex_Types;
- 
- package Ada.Numerics.Generic_Complex_Elementary_Functions is
-    pragma Pure;
- 
-    function Sqrt (X : Complex)   return Complex;
- 
-    function Log  (X : Complex)   return Complex;
- 
-    function Exp  (X : Complex)   return Complex;
-    function Exp  (X : Imaginary) return Complex;
- 
-    function "**" (Left : Complex;   Right : Complex)   return Complex;
-    function "**" (Left : Complex;   Right : Real'Base) return Complex;
-    function "**" (Left : Real'Base; Right : Complex)   return Complex;
- 
-    function Sin (X : Complex) return Complex;
-    function Cos (X : Complex) return Complex;
-    function Tan (X : Complex) return Complex;
-    function Cot (X : Complex) return Complex;
- 
-    function Arcsin (X : Complex) return Complex;
-    function Arccos (X : Complex) return Complex;
-    function Arctan (X : Complex) return Complex;
-    function Arccot (X : Complex) return Complex;
- 
-    function Sinh (X : Complex) return Complex;
-    function Cosh (X : Complex) return Complex;
-    function Tanh (X : Complex) return Complex;
-    function Coth (X : Complex) return Complex;
- 
-    function Arcsinh (X : Complex) return Complex;
-    function Arccosh (X : Complex) return Complex;
-    function Arctanh (X : Complex) return Complex;
-    function Arccoth (X : Complex) return Complex;
- 
- end Ada.Numerics.Generic_Complex_Elementary_Functions;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ngcoar.adb gcc-8.1.0/gcc/ada/a-ngcoar.adb
*** gcc-7.3.0/gcc/ada/a-ngcoar.adb	Wed Apr 27 13:05:41 2016
--- gcc-8.1.0/gcc/ada/a-ngcoar.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,1253 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                   ADA.NUMERICS.GENERIC_COMPLEX_ARRAYS                    --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --            Copyright (C) 2006-2016, Free Software Foundation, Inc.       --
- --                                                                          --
- -- GNAT is 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 System.Generic_Array_Operations; use System.Generic_Array_Operations;
- 
- package body Ada.Numerics.Generic_Complex_Arrays is
- 
-    --  Operations that are defined in terms of operations on the type Real,
-    --  such as addition, subtraction and scaling, are computed in the canonical
-    --  way looping over all elements.
- 
-    package Ops renames System.Generic_Array_Operations;
- 
-    subtype Real is Real_Arrays.Real;
-    --  Work around visibility bug ???
- 
-    function Is_Non_Zero (X : Complex) return Boolean is (X /= (0.0, 0.0));
-    --  Needed by Back_Substitute
- 
-    procedure Back_Substitute is new Ops.Back_Substitute
-      (Scalar        => Complex,
-       Matrix        => Complex_Matrix,
-       Is_Non_Zero   => Is_Non_Zero);
- 
-    procedure Forward_Eliminate is new Ops.Forward_Eliminate
-     (Scalar        => Complex,
-      Real          => Real'Base,
-      Matrix        => Complex_Matrix,
-      Zero          => (0.0, 0.0),
-      One           => (1.0, 0.0));
- 
-    procedure Transpose is new Ops.Transpose
-                                 (Scalar => Complex,
-                                  Matrix => Complex_Matrix);
- 
-    --  Helper function that raises a Constraint_Error is the argument is
-    --  not a square matrix, and otherwise returns its length.
- 
-    function Length is new Square_Matrix_Length (Complex, Complex_Matrix);
- 
-    --  Instant a generic square root implementation here, in order to avoid
-    --  instantiating a complete copy of Generic_Elementary_Functions.
-    --  Speed of the square root is not a big concern here.
- 
-    function Sqrt is new Ops.Sqrt (Real'Base);
- 
-    --  Instantiating the following subprograms directly would lead to
-    --  name clashes, so use a local package.
- 
-    package Instantiations is
- 
-       ---------
-       -- "*" --
-       ---------
- 
-       function "*" is new Vector_Scalar_Elementwise_Operation
-                             (Left_Scalar   => Complex,
-                              Right_Scalar  => Complex,
-                              Result_Scalar => Complex,
-                              Left_Vector   => Complex_Vector,
-                              Result_Vector => Complex_Vector,
-                              Operation     => "*");
- 
-       function "*" is new Vector_Scalar_Elementwise_Operation
-                             (Left_Scalar   => Complex,
-                              Right_Scalar  => Real'Base,
-                              Result_Scalar => Complex,
-                              Left_Vector   => Complex_Vector,
-                              Result_Vector => Complex_Vector,
-                              Operation     => "*");
- 
-       function "*" is new Scalar_Vector_Elementwise_Operation
-                             (Left_Scalar   => Complex,
-                              Right_Scalar  => Complex,
-                              Result_Scalar => Complex,
-                              Right_Vector  => Complex_Vector,
-                              Result_Vector => Complex_Vector,
-                              Operation     => "*");
- 
-       function "*" is new Scalar_Vector_Elementwise_Operation
-                             (Left_Scalar   => Real'Base,
-                              Right_Scalar  => Complex,
-                              Result_Scalar => Complex,
-                              Right_Vector  => Complex_Vector,
-                              Result_Vector => Complex_Vector,
-                              Operation     => "*");
- 
-       function "*" is new Inner_Product
-                             (Left_Scalar   => Complex,
-                              Right_Scalar  => Real'Base,
-                              Result_Scalar => Complex,
-                              Left_Vector   => Complex_Vector,
-                              Right_Vector  => Real_Vector,
-                              Zero          => (0.0, 0.0));
- 
-       function "*" is new Inner_Product
-                             (Left_Scalar   => Real'Base,
-                              Right_Scalar  => Complex,
-                              Result_Scalar => Complex,
-                              Left_Vector   => Real_Vector,
-                              Right_Vector  => Complex_Vector,
-                              Zero          => (0.0, 0.0));
- 
-       function "*" is new Inner_Product
-                             (Left_Scalar   => Complex,
-                              Right_Scalar  => Complex,
-                              Result_Scalar => Complex,
-                              Left_Vector   => Complex_Vector,
-                              Right_Vector  => Complex_Vector,
-                              Zero          => (0.0, 0.0));
- 
-       function "*" is new Outer_Product
-                             (Left_Scalar   => Complex,
-                              Right_Scalar  => Complex,
-                              Result_Scalar => Complex,
-                              Left_Vector   => Complex_Vector,
-                              Right_Vector  => Complex_Vector,
-                              Matrix        => Complex_Matrix);
- 
-       function "*" is new Outer_Product
-                             (Left_Scalar   => Real'Base,
-                              Right_Scalar  => Complex,
-                              Result_Scalar => Complex,
-                              Left_Vector   => Real_Vector,
-                              Right_Vector  => Complex_Vector,
-                              Matrix        => Complex_Matrix);
- 
-       function "*" is new Outer_Product
-                             (Left_Scalar   => Complex,
-                              Right_Scalar  => Real'Base,
-                              Result_Scalar => Complex,
-                              Left_Vector   => Complex_Vector,
-                              Right_Vector  => Real_Vector,
-                              Matrix        => Complex_Matrix);
- 
-       function "*" is new Matrix_Scalar_Elementwise_Operation
-                             (Left_Scalar   => Complex,
-                              Right_Scalar  => Complex,
-                              Result_Scalar => Complex,
-                              Left_Matrix   => Complex_Matrix,
-                              Result_Matrix => Complex_Matrix,
-                              Operation     => "*");
- 
-       function "*" is new Matrix_Scalar_Elementwise_Operation
-                             (Left_Scalar   => Complex,
-                              Right_Scalar  => Real'Base,
-                              Result_Scalar => Complex,
-                              Left_Matrix   => Complex_Matrix,
-                              Result_Matrix => Complex_Matrix,
-                              Operation     => "*");
- 
-       function "*" is new Scalar_Matrix_Elementwise_Operation
-                             (Left_Scalar   => Complex,
-                              Right_Scalar  => Complex,
-                              Result_Scalar => Complex,
-                              Right_Matrix  => Complex_Matrix,
-                              Result_Matrix => Complex_Matrix,
-                              Operation     => "*");
- 
-       function "*" is new Scalar_Matrix_Elementwise_Operation
-                             (Left_Scalar   => Real'Base,
-                              Right_Scalar  => Complex,
-                              Result_Scalar => Complex,
-                              Right_Matrix  => Complex_Matrix,
-                              Result_Matrix => Complex_Matrix,
-                              Operation     => "*");
- 
-       function "*" is new Matrix_Vector_Product
-                             (Left_Scalar   => Real'Base,
-                              Right_Scalar  => Complex,
-                              Result_Scalar => Complex,
-                              Matrix        => Real_Matrix,
-                              Right_Vector  => Complex_Vector,
-                              Result_Vector => Complex_Vector,
-                              Zero          => (0.0, 0.0));
- 
-       function "*" is new Matrix_Vector_Product
-                             (Left_Scalar   => Complex,
-                              Right_Scalar  => Real'Base,
-                              Result_Scalar => Complex,
-                              Matrix        => Complex_Matrix,
-                              Right_Vector  => Real_Vector,
-                              Result_Vector => Complex_Vector,
-                              Zero          => (0.0, 0.0));
- 
-       function "*" is new Matrix_Vector_Product
-                             (Left_Scalar   => Complex,
-                              Right_Scalar  => Complex,
-                              Result_Scalar => Complex,
-                              Matrix        => Complex_Matrix,
-                              Right_Vector  => Complex_Vector,
-                              Result_Vector => Complex_Vector,
-                              Zero          => (0.0, 0.0));
- 
-       function "*" is new Vector_Matrix_Product
-                             (Left_Scalar   => Real'Base,
-                              Right_Scalar  => Complex,
-                              Result_Scalar => Complex,
-                              Left_Vector   => Real_Vector,
-                              Matrix        => Complex_Matrix,
-                              Result_Vector => Complex_Vector,
-                              Zero          => (0.0, 0.0));
- 
-       function "*" is new Vector_Matrix_Product
-                             (Left_Scalar   => Complex,
-                              Right_Scalar  => Real'Base,
-                              Result_Scalar => Complex,
-                              Left_Vector   => Complex_Vector,
-                              Matrix        => Real_Matrix,
-                              Result_Vector => Complex_Vector,
-                              Zero          => (0.0, 0.0));
- 
-       function "*" is new Vector_Matrix_Product
-                             (Left_Scalar   => Complex,
-                              Right_Scalar  => Complex,
-                              Result_Scalar => Complex,
-                              Left_Vector   => Complex_Vector,
-                              Matrix        => Complex_Matrix,
-                              Result_Vector => Complex_Vector,
-                              Zero          => (0.0, 0.0));
- 
-       function "*" is new Matrix_Matrix_Product
-                             (Left_Scalar   => Complex,
-                              Right_Scalar  => Complex,
-                              Result_Scalar => Complex,
-                              Left_Matrix   => Complex_Matrix,
-                              Right_Matrix  => Complex_Matrix,
-                              Result_Matrix => Complex_Matrix,
-                              Zero          => (0.0, 0.0));
- 
-       function "*" is new Matrix_Matrix_Product
-                             (Left_Scalar   => Real'Base,
-                              Right_Scalar  => Complex,
-                              Result_Scalar => Complex,
-                              Left_Matrix   => Real_Matrix,
-                              Right_Matrix  => Complex_Matrix,
-                              Result_Matrix => Complex_Matrix,
-                              Zero          => (0.0, 0.0));
- 
-       function "*" is new Matrix_Matrix_Product
-                             (Left_Scalar   => Complex,
-                              Right_Scalar  => Real'Base,
-                              Result_Scalar => Complex,
-                              Left_Matrix   => Complex_Matrix,
-                              Right_Matrix  => Real_Matrix,
-                              Result_Matrix => Complex_Matrix,
-                              Zero          => (0.0, 0.0));
- 
-       ---------
-       -- "+" --
-       ---------
- 
-       function "+" is new Vector_Elementwise_Operation
-                             (X_Scalar      => Complex,
-                              Result_Scalar => Complex,
-                              X_Vector      => Complex_Vector,
-                              Result_Vector => Complex_Vector,
-                              Operation     => "+");
- 
-       function "+" is new Vector_Vector_Elementwise_Operation
-                             (Left_Scalar   => Complex,
-                              Right_Scalar  => Complex,
-                              Result_Scalar => Complex,
-                              Left_Vector   => Complex_Vector,
-                              Right_Vector  => Complex_Vector,
-                              Result_Vector => Complex_Vector,
-                              Operation     => "+");
- 
-       function "+" is new Vector_Vector_Elementwise_Operation
-                             (Left_Scalar   => Real'Base,
-                              Right_Scalar  => Complex,
-                              Result_Scalar => Complex,
-                              Left_Vector   => Real_Vector,
-                              Right_Vector  => Complex_Vector,
-                              Result_Vector => Complex_Vector,
-                              Operation     => "+");
- 
-       function "+" is new Vector_Vector_Elementwise_Operation
-                             (Left_Scalar   => Complex,
-                              Right_Scalar  => Real'Base,
-                              Result_Scalar => Complex,
-                              Left_Vector   => Complex_Vector,
-                              Right_Vector  => Real_Vector,
-                              Result_Vector => Complex_Vector,
-                              Operation     => "+");
- 
-       function "+" is new Matrix_Elementwise_Operation
-                             (X_Scalar      => Complex,
-                              Result_Scalar => Complex,
-                              X_Matrix      => Complex_Matrix,
-                              Result_Matrix => Complex_Matrix,
-                              Operation     => "+");
- 
-       function "+" is new Matrix_Matrix_Elementwise_Operation
-                             (Left_Scalar   => Complex,
-                              Right_Scalar  => Complex,
-                              Result_Scalar => Complex,
-                              Left_Matrix   => Complex_Matrix,
-                              Right_Matrix  => Complex_Matrix,
-                              Result_Matrix => Complex_Matrix,
-                              Operation     => "+");
- 
-       function "+" is new Matrix_Matrix_Elementwise_Operation
-                             (Left_Scalar   => Real'Base,
-                              Right_Scalar  => Complex,
-                              Result_Scalar => Complex,
-                              Left_Matrix   => Real_Matrix,
-                              Right_Matrix  => Complex_Matrix,
-                              Result_Matrix => Complex_Matrix,
-                              Operation     => "+");
- 
-       function "+" is new Matrix_Matrix_Elementwise_Operation
-                             (Left_Scalar   => Complex,
-                              Right_Scalar  => Real'Base,
-                              Result_Scalar => Complex,
-                              Left_Matrix   => Complex_Matrix,
-                              Right_Matrix  => Real_Matrix,
-                              Result_Matrix => Complex_Matrix,
-                              Operation     => "+");
- 
-       ---------
-       -- "-" --
-       ---------
- 
-       function "-" is new Vector_Elementwise_Operation
-                             (X_Scalar      => Complex,
-                              Result_Scalar => Complex,
-                              X_Vector      => Complex_Vector,
-                              Result_Vector => Complex_Vector,
-                              Operation     => "-");
- 
-       function "-" is new Vector_Vector_Elementwise_Operation
-                             (Left_Scalar   => Complex,
-                              Right_Scalar  => Complex,
-                              Result_Scalar => Complex,
-                              Left_Vector   => Complex_Vector,
-                              Right_Vector  => Complex_Vector,
-                              Result_Vector => Complex_Vector,
-                              Operation     => "-");
- 
-       function "-" is new Vector_Vector_Elementwise_Operation
-                             (Left_Scalar   => Real'Base,
-                              Right_Scalar  => Complex,
-                              Result_Scalar => Complex,
-                              Left_Vector   => Real_Vector,
-                              Right_Vector  => Complex_Vector,
-                              Result_Vector => Complex_Vector,
-                              Operation     => "-");
- 
-       function "-" is new Vector_Vector_Elementwise_Operation
-                             (Left_Scalar   => Complex,
-                              Right_Scalar  => Real'Base,
-                              Result_Scalar => Complex,
-                              Left_Vector   => Complex_Vector,
-                              Right_Vector  => Real_Vector,
-                              Result_Vector => Complex_Vector,
-                              Operation     => "-");
- 
-       function "-" is new Matrix_Elementwise_Operation
-                             (X_Scalar      => Complex,
-                              Result_Scalar => Complex,
-                              X_Matrix      => Complex_Matrix,
-                              Result_Matrix => Complex_Matrix,
-                              Operation     => "-");
- 
-       function "-" is new Matrix_Matrix_Elementwise_Operation
-                             (Left_Scalar   => Complex,
-                              Right_Scalar  => Complex,
-                              Result_Scalar => Complex,
-                              Left_Matrix   => Complex_Matrix,
-                              Right_Matrix  => Complex_Matrix,
-                              Result_Matrix => Complex_Matrix,
-                              Operation     => "-");
- 
-       function "-" is new Matrix_Matrix_Elementwise_Operation
-                             (Left_Scalar   => Real'Base,
-                              Right_Scalar  => Complex,
-                              Result_Scalar => Complex,
-                              Left_Matrix   => Real_Matrix,
-                              Right_Matrix  => Complex_Matrix,
-                              Result_Matrix => Complex_Matrix,
-                              Operation     => "-");
- 
-       function "-" is new Matrix_Matrix_Elementwise_Operation
-                             (Left_Scalar   => Complex,
-                              Right_Scalar  => Real'Base,
-                              Result_Scalar => Complex,
-                              Left_Matrix   => Complex_Matrix,
-                              Right_Matrix  => Real_Matrix,
-                              Result_Matrix => Complex_Matrix,
-                              Operation     => "-");
- 
-       ---------
-       -- "/" --
-       ---------
- 
-       function "/" is new Vector_Scalar_Elementwise_Operation
-                             (Left_Scalar   => Complex,
-                              Right_Scalar  => Complex,
-                              Result_Scalar => Complex,
-                              Left_Vector   => Complex_Vector,
-                              Result_Vector => Complex_Vector,
-                              Operation     => "/");
- 
-       function "/" is new Vector_Scalar_Elementwise_Operation
-                             (Left_Scalar   => Complex,
-                              Right_Scalar  => Real'Base,
-                              Result_Scalar => Complex,
-                              Left_Vector   => Complex_Vector,
-                              Result_Vector => Complex_Vector,
-                              Operation     => "/");
- 
-       function "/" is new Matrix_Scalar_Elementwise_Operation
-                             (Left_Scalar   => Complex,
-                              Right_Scalar  => Complex,
-                              Result_Scalar => Complex,
-                              Left_Matrix   => Complex_Matrix,
-                              Result_Matrix => Complex_Matrix,
-                              Operation     => "/");
- 
-       function "/" is new Matrix_Scalar_Elementwise_Operation
-                             (Left_Scalar   => Complex,
-                              Right_Scalar  => Real'Base,
-                              Result_Scalar => Complex,
-                              Left_Matrix   => Complex_Matrix,
-                              Result_Matrix => Complex_Matrix,
-                              Operation     => "/");
- 
-       -----------
-       -- "abs" --
-       -----------
- 
-       function "abs" is new L2_Norm
-                               (X_Scalar      => Complex,
-                                Result_Real   => Real'Base,
-                                X_Vector      => Complex_Vector);
- 
-       --------------
-       -- Argument --
-       --------------
- 
-       function Argument is new Vector_Elementwise_Operation
-                             (X_Scalar      => Complex,
-                              Result_Scalar => Real'Base,
-                              X_Vector      => Complex_Vector,
-                              Result_Vector => Real_Vector,
-                              Operation     => Argument);
- 
-       function Argument is new Vector_Scalar_Elementwise_Operation
-                             (Left_Scalar   => Complex,
-                              Right_Scalar  => Real'Base,
-                              Result_Scalar => Real'Base,
-                              Left_Vector   => Complex_Vector,
-                              Result_Vector => Real_Vector,
-                              Operation     => Argument);
- 
-       function Argument is new Matrix_Elementwise_Operation
-                             (X_Scalar      => Complex,
-                              Result_Scalar => Real'Base,
-                              X_Matrix      => Complex_Matrix,
-                              Result_Matrix => Real_Matrix,
-                              Operation     => Argument);
- 
-       function Argument is new Matrix_Scalar_Elementwise_Operation
-                             (Left_Scalar   => Complex,
-                              Right_Scalar  => Real'Base,
-                              Result_Scalar => Real'Base,
-                              Left_Matrix   => Complex_Matrix,
-                              Result_Matrix => Real_Matrix,
-                              Operation     => Argument);
- 
-       ----------------------------
-       -- Compose_From_Cartesian --
-       ----------------------------
- 
-       function Compose_From_Cartesian is new Vector_Elementwise_Operation
-                             (X_Scalar      => Real'Base,
-                              Result_Scalar => Complex,
-                              X_Vector      => Real_Vector,
-                              Result_Vector => Complex_Vector,
-                              Operation     => Compose_From_Cartesian);
- 
-       function Compose_From_Cartesian is
-          new Vector_Vector_Elementwise_Operation
-                             (Left_Scalar   => Real'Base,
-                              Right_Scalar  => Real'Base,
-                              Result_Scalar => Complex,
-                              Left_Vector   => Real_Vector,
-                              Right_Vector  => Real_Vector,
-                              Result_Vector => Complex_Vector,
-                              Operation     => Compose_From_Cartesian);
- 
-       function Compose_From_Cartesian is new Matrix_Elementwise_Operation
-                             (X_Scalar      => Real'Base,
-                              Result_Scalar => Complex,
-                              X_Matrix      => Real_Matrix,
-                              Result_Matrix => Complex_Matrix,
-                              Operation     => Compose_From_Cartesian);
- 
-       function Compose_From_Cartesian is
-          new Matrix_Matrix_Elementwise_Operation
-                             (Left_Scalar   => Real'Base,
-                              Right_Scalar  => Real'Base,
-                              Result_Scalar => Complex,
-                              Left_Matrix   => Real_Matrix,
-                              Right_Matrix  => Real_Matrix,
-                              Result_Matrix => Complex_Matrix,
-                              Operation     => Compose_From_Cartesian);
- 
-       ------------------------
-       -- Compose_From_Polar --
-       ------------------------
- 
-       function Compose_From_Polar is
-         new Vector_Vector_Elementwise_Operation
-                             (Left_Scalar   => Real'Base,
-                              Right_Scalar  => Real'Base,
-                              Result_Scalar => Complex,
-                              Left_Vector   => Real_Vector,
-                              Right_Vector  => Real_Vector,
-                              Result_Vector => Complex_Vector,
-                              Operation     => Compose_From_Polar);
- 
-       function Compose_From_Polar is
-         new Vector_Vector_Scalar_Elementwise_Operation
-                             (X_Scalar      => Real'Base,
-                              Y_Scalar      => Real'Base,
-                              Z_Scalar      => Real'Base,
-                              Result_Scalar => Complex,
-                              X_Vector      => Real_Vector,
-                              Y_Vector      => Real_Vector,
-                              Result_Vector => Complex_Vector,
-                              Operation     => Compose_From_Polar);
- 
-       function Compose_From_Polar is
-         new Matrix_Matrix_Elementwise_Operation
-                             (Left_Scalar   => Real'Base,
-                              Right_Scalar  => Real'Base,
-                              Result_Scalar => Complex,
-                              Left_Matrix   => Real_Matrix,
-                              Right_Matrix  => Real_Matrix,
-                              Result_Matrix => Complex_Matrix,
-                              Operation     => Compose_From_Polar);
- 
-       function Compose_From_Polar is
-         new Matrix_Matrix_Scalar_Elementwise_Operation
-                             (X_Scalar      => Real'Base,
-                              Y_Scalar      => Real'Base,
-                              Z_Scalar      => Real'Base,
-                              Result_Scalar => Complex,
-                              X_Matrix      => Real_Matrix,
-                              Y_Matrix      => Real_Matrix,
-                              Result_Matrix => Complex_Matrix,
-                              Operation     => Compose_From_Polar);
- 
-       ---------------
-       -- Conjugate --
-       ---------------
- 
-       function Conjugate is new Vector_Elementwise_Operation
-                             (X_Scalar      => Complex,
-                              Result_Scalar => Complex,
-                              X_Vector      => Complex_Vector,
-                              Result_Vector => Complex_Vector,
-                              Operation     => Conjugate);
- 
-       function Conjugate is new Matrix_Elementwise_Operation
-                             (X_Scalar      => Complex,
-                              Result_Scalar => Complex,
-                              X_Matrix      => Complex_Matrix,
-                              Result_Matrix => Complex_Matrix,
-                              Operation     => Conjugate);
- 
-       --------
-       -- Im --
-       --------
- 
-       function Im is new Vector_Elementwise_Operation
-                             (X_Scalar      => Complex,
-                              Result_Scalar => Real'Base,
-                              X_Vector      => Complex_Vector,
-                              Result_Vector => Real_Vector,
-                              Operation     => Im);
- 
-       function Im is new Matrix_Elementwise_Operation
-                             (X_Scalar      => Complex,
-                              Result_Scalar => Real'Base,
-                              X_Matrix      => Complex_Matrix,
-                              Result_Matrix => Real_Matrix,
-                              Operation     => Im);
- 
-       -------------
-       -- Modulus --
-       -------------
- 
-       function Modulus is new Vector_Elementwise_Operation
-                             (X_Scalar      => Complex,
-                              Result_Scalar => Real'Base,
-                              X_Vector      => Complex_Vector,
-                              Result_Vector => Real_Vector,
-                              Operation     => Modulus);
- 
-       function Modulus is new Matrix_Elementwise_Operation
-                             (X_Scalar      => Complex,
-                              Result_Scalar => Real'Base,
-                              X_Matrix      => Complex_Matrix,
-                              Result_Matrix => Real_Matrix,
-                              Operation     => Modulus);
- 
-       --------
-       -- Re --
-       --------
- 
-       function Re is new Vector_Elementwise_Operation
-                             (X_Scalar      => Complex,
-                              Result_Scalar => Real'Base,
-                              X_Vector      => Complex_Vector,
-                              Result_Vector => Real_Vector,
-                              Operation     => Re);
- 
-       function Re is new Matrix_Elementwise_Operation
-                             (X_Scalar      => Complex,
-                              Result_Scalar => Real'Base,
-                              X_Matrix      => Complex_Matrix,
-                              Result_Matrix => Real_Matrix,
-                              Operation     => Re);
- 
-       ------------
-       -- Set_Im --
-       ------------
- 
-       procedure Set_Im is new Update_Vector_With_Vector
-                             (X_Scalar      => Complex,
-                              Y_Scalar      => Real'Base,
-                              X_Vector      => Complex_Vector,
-                              Y_Vector      => Real_Vector,
-                              Update        => Set_Im);
- 
-       procedure Set_Im is new Update_Matrix_With_Matrix
-                             (X_Scalar      => Complex,
-                              Y_Scalar      => Real'Base,
-                              X_Matrix      => Complex_Matrix,
-                              Y_Matrix      => Real_Matrix,
-                              Update        => Set_Im);
- 
-       ------------
-       -- Set_Re --
-       ------------
- 
-       procedure Set_Re is new Update_Vector_With_Vector
-                             (X_Scalar      => Complex,
-                              Y_Scalar      => Real'Base,
-                              X_Vector      => Complex_Vector,
-                              Y_Vector      => Real_Vector,
-                              Update        => Set_Re);
- 
-       procedure Set_Re is new Update_Matrix_With_Matrix
-                             (X_Scalar      => Complex,
-                              Y_Scalar      => Real'Base,
-                              X_Matrix      => Complex_Matrix,
-                              Y_Matrix      => Real_Matrix,
-                              Update        => Set_Re);
- 
-       -----------
-       -- Solve --
-       -----------
- 
-       function Solve is new Matrix_Vector_Solution
-         (Complex, (0.0, 0.0), Complex_Vector, Complex_Matrix);
- 
-       function Solve is new Matrix_Matrix_Solution
-         (Complex, (0.0, 0.0), Complex_Matrix);
- 
-       -----------------
-       -- Unit_Matrix --
-       -----------------
- 
-       function Unit_Matrix is new System.Generic_Array_Operations.Unit_Matrix
-                             (Scalar        => Complex,
-                              Matrix        => Complex_Matrix,
-                              Zero          => (0.0, 0.0),
-                              One           => (1.0, 0.0));
- 
-       function Unit_Vector is new System.Generic_Array_Operations.Unit_Vector
-                             (Scalar        => Complex,
-                              Vector        => Complex_Vector,
-                              Zero          => (0.0, 0.0),
-                              One           => (1.0, 0.0));
-    end Instantiations;
- 
-    ---------
-    -- "*" --
-    ---------
- 
-    function "*"
-      (Left  : Complex_Vector;
-       Right : Complex_Vector) return Complex
-      renames Instantiations."*";
- 
-    function "*"
-      (Left  : Real_Vector;
-       Right : Complex_Vector) return Complex
-      renames Instantiations."*";
- 
-    function "*"
-      (Left  : Complex_Vector;
-       Right : Real_Vector) return Complex
-      renames Instantiations."*";
- 
-    function "*"
-      (Left  : Complex;
-       Right : Complex_Vector) return Complex_Vector
-      renames Instantiations."*";
- 
-    function "*"
-      (Left  : Complex_Vector;
-       Right : Complex) return Complex_Vector
-      renames Instantiations."*";
- 
-    function "*"
-      (Left  : Real'Base;
-       Right : Complex_Vector) return Complex_Vector
-      renames Instantiations."*";
- 
-    function "*"
-      (Left  : Complex_Vector;
-       Right : Real'Base) return Complex_Vector
-      renames Instantiations."*";
- 
-    function "*"
-      (Left  : Complex_Matrix;
-       Right : Complex_Matrix) return  Complex_Matrix
-      renames Instantiations."*";
- 
-    function "*"
-      (Left  : Complex_Vector;
-       Right : Complex_Vector) return Complex_Matrix
-      renames Instantiations."*";
- 
-    function "*"
-      (Left  : Complex_Vector;
-       Right : Complex_Matrix) return Complex_Vector
-      renames Instantiations."*";
- 
-    function "*"
-      (Left  : Complex_Matrix;
-       Right : Complex_Vector) return Complex_Vector
-      renames Instantiations."*";
- 
-    function "*"
-      (Left  : Real_Matrix;
-       Right : Complex_Matrix) return Complex_Matrix
-      renames Instantiations."*";
- 
-    function "*"
-      (Left  : Complex_Matrix;
-       Right : Real_Matrix) return Complex_Matrix
-      renames Instantiations."*";
- 
-    function "*"
-      (Left  : Real_Vector;
-       Right : Complex_Vector) return Complex_Matrix
-      renames Instantiations."*";
- 
-    function "*"
-      (Left  : Complex_Vector;
-       Right : Real_Vector) return Complex_Matrix
-      renames Instantiations."*";
- 
-    function "*"
-      (Left  : Real_Vector;
-       Right : Complex_Matrix) return Complex_Vector
-      renames Instantiations."*";
- 
-    function "*"
-      (Left  : Complex_Vector;
-       Right : Real_Matrix) return Complex_Vector
-      renames Instantiations."*";
- 
-    function "*"
-      (Left  : Real_Matrix;
-       Right : Complex_Vector) return Complex_Vector
-      renames Instantiations."*";
- 
-    function "*"
-      (Left  : Complex_Matrix;
-       Right : Real_Vector) return Complex_Vector
-      renames Instantiations."*";
- 
-    function "*"
-      (Left  : Complex;
-       Right : Complex_Matrix) return Complex_Matrix
-      renames Instantiations."*";
- 
-    function "*"
-      (Left  : Complex_Matrix;
-       Right : Complex) return Complex_Matrix
-      renames Instantiations."*";
- 
-    function "*"
-      (Left  : Real'Base;
-       Right : Complex_Matrix) return Complex_Matrix
-      renames Instantiations."*";
- 
-    function "*"
-      (Left  : Complex_Matrix;
-       Right : Real'Base) return Complex_Matrix
-      renames Instantiations."*";
- 
-    ---------
-    -- "+" --
-    ---------
- 
-    function "+" (Right : Complex_Vector) return Complex_Vector
-      renames Instantiations."+";
- 
-    function "+"
-      (Left  : Complex_Vector;
-       Right : Complex_Vector) return Complex_Vector
-      renames Instantiations."+";
- 
-    function "+"
-      (Left  : Real_Vector;
-       Right : Complex_Vector) return Complex_Vector
-      renames Instantiations."+";
- 
-    function "+"
-      (Left  : Complex_Vector;
-       Right : Real_Vector) return Complex_Vector
-      renames Instantiations."+";
- 
-    function "+" (Right : Complex_Matrix) return Complex_Matrix
-      renames Instantiations."+";
- 
-    function "+"
-      (Left  : Complex_Matrix;
-       Right : Complex_Matrix) return Complex_Matrix
-      renames Instantiations."+";
- 
-    function "+"
-      (Left  : Real_Matrix;
-       Right : Complex_Matrix) return Complex_Matrix
-      renames Instantiations."+";
- 
-    function "+"
-      (Left  : Complex_Matrix;
-       Right : Real_Matrix) return Complex_Matrix
-      renames Instantiations."+";
- 
-    ---------
-    -- "-" --
-    ---------
- 
-    function "-"
-      (Right : Complex_Vector) return Complex_Vector
-      renames Instantiations."-";
- 
-    function "-"
-      (Left  : Complex_Vector;
-       Right : Complex_Vector) return Complex_Vector
-      renames Instantiations."-";
- 
-    function "-"
-      (Left  : Real_Vector;
-       Right : Complex_Vector) return Complex_Vector
-       renames Instantiations."-";
- 
-    function "-"
-      (Left  : Complex_Vector;
-       Right : Real_Vector) return Complex_Vector
-      renames Instantiations."-";
- 
-    function "-" (Right : Complex_Matrix) return Complex_Matrix
-      renames Instantiations."-";
- 
-    function "-"
-      (Left  : Complex_Matrix;
-       Right : Complex_Matrix) return Complex_Matrix
-      renames Instantiations."-";
- 
-    function "-"
-      (Left  : Real_Matrix;
-       Right : Complex_Matrix) return Complex_Matrix
-      renames Instantiations."-";
- 
-    function "-"
-      (Left  : Complex_Matrix;
-       Right : Real_Matrix) return Complex_Matrix
-      renames Instantiations."-";
- 
-    ---------
-    -- "/" --
-    ---------
- 
-    function "/"
-      (Left  : Complex_Vector;
-       Right : Complex) return Complex_Vector
-      renames Instantiations."/";
- 
-    function "/"
-      (Left  : Complex_Vector;
-       Right : Real'Base) return Complex_Vector
-      renames Instantiations."/";
- 
-    function "/"
-      (Left  : Complex_Matrix;
-       Right : Complex) return Complex_Matrix
-      renames Instantiations."/";
- 
-    function "/"
-      (Left  : Complex_Matrix;
-       Right : Real'Base) return Complex_Matrix
-      renames Instantiations."/";
- 
-    -----------
-    -- "abs" --
-    -----------
- 
-    function "abs" (Right : Complex_Vector) return Real'Base
-       renames Instantiations."abs";
- 
-    --------------
-    -- Argument --
-    --------------
- 
-    function Argument (X : Complex_Vector) return Real_Vector
-      renames Instantiations.Argument;
- 
-    function Argument
-      (X     : Complex_Vector;
-       Cycle : Real'Base) return Real_Vector
-      renames Instantiations.Argument;
- 
-    function Argument (X : Complex_Matrix) return Real_Matrix
-      renames Instantiations.Argument;
- 
-    function Argument
-      (X     : Complex_Matrix;
-       Cycle : Real'Base) return Real_Matrix
-      renames Instantiations.Argument;
- 
-    ----------------------------
-    -- Compose_From_Cartesian --
-    ----------------------------
- 
-    function Compose_From_Cartesian (Re : Real_Vector) return Complex_Vector
-      renames Instantiations.Compose_From_Cartesian;
- 
-    function Compose_From_Cartesian
-      (Re : Real_Vector;
-       Im : Real_Vector) return Complex_Vector
-      renames Instantiations.Compose_From_Cartesian;
- 
-    function Compose_From_Cartesian (Re : Real_Matrix) return Complex_Matrix
-      renames Instantiations.Compose_From_Cartesian;
- 
-    function Compose_From_Cartesian
-      (Re : Real_Matrix;
-       Im : Real_Matrix) return Complex_Matrix
-      renames Instantiations.Compose_From_Cartesian;
- 
-    ------------------------
-    -- Compose_From_Polar --
-    ------------------------
- 
-    function Compose_From_Polar
-      (Modulus  : Real_Vector;
-       Argument : Real_Vector) return Complex_Vector
-      renames Instantiations.Compose_From_Polar;
- 
-    function Compose_From_Polar
-      (Modulus  : Real_Vector;
-       Argument : Real_Vector;
-       Cycle    : Real'Base) return Complex_Vector
-      renames Instantiations.Compose_From_Polar;
- 
-    function Compose_From_Polar
-      (Modulus  : Real_Matrix;
-       Argument : Real_Matrix) return Complex_Matrix
-      renames Instantiations.Compose_From_Polar;
- 
-    function Compose_From_Polar
-      (Modulus  : Real_Matrix;
-       Argument : Real_Matrix;
-       Cycle    : Real'Base) return Complex_Matrix
-      renames Instantiations.Compose_From_Polar;
- 
-    ---------------
-    -- Conjugate --
-    ---------------
- 
-    function Conjugate (X : Complex_Vector) return Complex_Vector
-      renames Instantiations.Conjugate;
- 
-    function Conjugate (X : Complex_Matrix) return Complex_Matrix
-      renames Instantiations.Conjugate;
- 
-    -----------------
-    -- Determinant --
-    -----------------
- 
-    function Determinant (A : Complex_Matrix) return Complex is
-       M : Complex_Matrix := A;
-       B : Complex_Matrix (A'Range (1), 1 .. 0);
-       R : Complex;
-    begin
-       Forward_Eliminate (M, B, R);
-       return R;
-    end Determinant;
- 
-    -----------------
-    -- Eigensystem --
-    -----------------
- 
-    procedure Eigensystem
-      (A       : Complex_Matrix;
-       Values  : out Real_Vector;
-       Vectors : out Complex_Matrix)
-    is
-       N : constant Natural := Length (A);
- 
-       --  For a Hermitian matrix C, we convert the eigenvalue problem to a
-       --  real symmetric one: if C = A + i * B, then the (N, N) complex
-       --  eigenvalue problem:
-       --     (A + i * B) * (u + i * v) = Lambda * (u + i * v)
-       --
-       --  is equivalent to the (2 * N, 2 * N) real eigenvalue problem:
-       --     [  A, B ] [ u ] = Lambda * [ u ]
-       --     [ -B, A ] [ v ]            [ v ]
-       --
-       --  Note that the (2 * N, 2 * N) matrix above is symmetric, as
-       --  Transpose (A) = A and Transpose (B) = -B if C is Hermitian.
- 
-       --  We solve this eigensystem using the real-valued algorithms. The final
-       --  result will have every eigenvalue twice, so in the sorted output we
-       --  just pick every second value, with associated eigenvector u + i * v.
- 
-       M    : Real_Matrix (1 .. 2 * N, 1 .. 2 * N);
-       Vals : Real_Vector (1 .. 2 * N);
-       Vecs : Real_Matrix (1 .. 2 * N, 1 .. 2 * N);
- 
-    begin
-       for J in 1 .. N loop
-          for K in 1 .. N loop
-             declare
-                C : constant Complex :=
-                  (A (A'First (1) + (J - 1), A'First (2) + (K - 1)));
-             begin
-                M (J, K) := Re (C);
-                M (J + N, K + N) := Re (C);
-                M (J + N, K) := Im (C);
-                M (J, K + N) := -Im (C);
-             end;
-          end loop;
-       end loop;
- 
-       Eigensystem (M, Vals, Vecs);
- 
-       for J in 1 .. N loop
-          declare
-             Col : constant Integer := Values'First + (J - 1);
-          begin
-             Values (Col) := Vals (2 * J);
- 
-             for K in 1 .. N loop
-                declare
-                   Row : constant Integer := Vectors'First (2) + (K - 1);
-                begin
-                   Vectors (Row, Col)
-                      := (Vecs (J * 2, Col), Vecs (J * 2, Col + N));
-                end;
-             end loop;
-          end;
-       end loop;
-    end Eigensystem;
- 
-    -----------------
-    -- Eigenvalues --
-    -----------------
- 
-    function Eigenvalues (A : Complex_Matrix) return Real_Vector is
-       --  See Eigensystem for a description of the algorithm
- 
-       N : constant Natural := Length (A);
-       R : Real_Vector (A'Range (1));
- 
-       M    : Real_Matrix (1 .. 2 * N, 1 .. 2 * N);
-       Vals : Real_Vector (1 .. 2 * N);
-    begin
-       for J in 1 .. N loop
-          for K in 1 .. N loop
-             declare
-                C : constant Complex :=
-                  (A (A'First (1) + (J - 1), A'First (2) + (K - 1)));
-             begin
-                M (J, K) := Re (C);
-                M (J + N, K + N) := Re (C);
-                M (J + N, K) := Im (C);
-                M (J, K + N) := -Im (C);
-             end;
-          end loop;
-       end loop;
- 
-       Vals := Eigenvalues (M);
- 
-       for J in 1 .. N loop
-          R (A'First (1) + (J - 1)) := Vals (2 * J);
-       end loop;
- 
-       return R;
-    end Eigenvalues;
- 
-    --------
-    -- Im --
-    --------
- 
-    function Im (X : Complex_Vector) return Real_Vector
-      renames Instantiations.Im;
- 
-    function Im (X : Complex_Matrix) return Real_Matrix
-      renames Instantiations.Im;
- 
-    -------------
-    -- Inverse --
-    -------------
- 
-    function Inverse (A : Complex_Matrix) return Complex_Matrix is
-      (Solve (A, Unit_Matrix (Length (A))));
- 
-    -------------
-    -- Modulus --
-    -------------
- 
-    function Modulus (X : Complex_Vector) return Real_Vector
-      renames Instantiations.Modulus;
- 
-    function Modulus (X : Complex_Matrix) return Real_Matrix
-      renames Instantiations.Modulus;
- 
-    --------
-    -- Re --
-    --------
- 
-    function Re (X : Complex_Vector) return Real_Vector
-      renames Instantiations.Re;
- 
-    function Re (X : Complex_Matrix) return Real_Matrix
-      renames Instantiations.Re;
- 
-    ------------
-    -- Set_Im --
-    ------------
- 
-    procedure Set_Im
-      (X  : in out Complex_Matrix;
-       Im : Real_Matrix)
-      renames Instantiations.Set_Im;
- 
-    procedure Set_Im
-      (X  : in out Complex_Vector;
-       Im : Real_Vector)
-      renames Instantiations.Set_Im;
- 
-    ------------
-    -- Set_Re --
-    ------------
- 
-    procedure Set_Re
-      (X  : in out Complex_Matrix;
-       Re : Real_Matrix)
-      renames Instantiations.Set_Re;
- 
-    procedure Set_Re
-      (X  : in out Complex_Vector;
-       Re : Real_Vector)
-      renames Instantiations.Set_Re;
- 
-    -----------
-    -- Solve --
-    -----------
- 
-    function Solve
-      (A : Complex_Matrix;
-       X : Complex_Vector) return Complex_Vector
-      renames Instantiations.Solve;
- 
-    function Solve
-      (A : Complex_Matrix;
-       X : Complex_Matrix) return Complex_Matrix
-      renames Instantiations.Solve;
- 
-    ---------------
-    -- Transpose --
-    ---------------
- 
-    function Transpose
-      (X : Complex_Matrix) return Complex_Matrix
-    is
-       R : Complex_Matrix (X'Range (2), X'Range (1));
-    begin
-       Transpose (X, R);
-       return R;
-    end Transpose;
- 
-    -----------------
-    -- Unit_Matrix --
-    -----------------
- 
-    function Unit_Matrix
-      (Order   : Positive;
-       First_1 : Integer := 1;
-       First_2 : Integer := 1) return Complex_Matrix
-      renames Instantiations.Unit_Matrix;
- 
-    -----------------
-    -- Unit_Vector --
-    -----------------
- 
-    function Unit_Vector
-      (Index : Integer;
-       Order : Positive;
-       First : Integer := 1) return Complex_Vector
-      renames Instantiations.Unit_Vector;
- 
- end Ada.Numerics.Generic_Complex_Arrays;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ngcoar.ads gcc-8.1.0/gcc/ada/a-ngcoar.ads
*** gcc-7.3.0/gcc/ada/a-ngcoar.ads	Thu Oct 13 10:56:08 2011
--- gcc-8.1.0/gcc/ada/a-ngcoar.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,281 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                   ADA.NUMERICS.GENERIC_COMPLEX_ARRAYS                    --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Numerics.Generic_Real_Arrays, Ada.Numerics.Generic_Complex_Types;
- 
- generic
-    with package Real_Arrays is new Ada.Numerics.Generic_Real_Arrays (<>);
-    use Real_Arrays;
-    with package Complex_Types is new Ada.Numerics.Generic_Complex_Types (Real);
-    use Complex_Types;
- package Ada.Numerics.Generic_Complex_Arrays is
-    pragma Pure (Generic_Complex_Arrays);
- 
-    --  Types
- 
-    type Complex_Vector is array (Integer range <>) of Complex;
-    type Complex_Matrix is
-      array (Integer range <>, Integer range <>) of Complex;
- 
-    --  Subprograms for Complex_Vector types
-    --  Complex_Vector selection, conversion and composition operations
- 
-    function Re (X : Complex_Vector) return Real_Vector;
-    function Im (X : Complex_Vector) return Real_Vector;
- 
-    procedure Set_Re (X : in out Complex_Vector; Re : Real_Vector);
-    procedure Set_Im (X : in out Complex_Vector; Im : Real_Vector);
- 
-    function Compose_From_Cartesian
-      (Re : Real_Vector) return Complex_Vector;
-    function Compose_From_Cartesian
-      (Re, Im : Real_Vector) return Complex_Vector;
- 
-    function Modulus (X : Complex_Vector) return Real_Vector;
-    function "abs" (Right : Complex_Vector) return Real_Vector renames Modulus;
-    function Argument (X : Complex_Vector) return Real_Vector;
- 
-    function Argument
-      (X     : Complex_Vector;
-       Cycle : Real'Base) return Real_Vector;
- 
-    function Compose_From_Polar
-      (Modulus, Argument : Real_Vector) return Complex_Vector;
- 
-    function Compose_From_Polar
-      (Modulus, Argument : Real_Vector;
-       Cycle             : Real'Base) return Complex_Vector;
- 
-    --  Complex_Vector arithmetic operations
- 
-    function "+" (Right : Complex_Vector) return Complex_Vector;
-    function "-" (Right : Complex_Vector) return Complex_Vector;
-    function Conjugate (X : Complex_Vector) return Complex_Vector;
-    function "+" (Left, Right : Complex_Vector) return Complex_Vector;
-    function "-" (Left, Right : Complex_Vector) return Complex_Vector;
-    function "*" (Left, Right : Complex_Vector) return Complex;
-    function "abs" (Right : Complex_Vector) return Real'Base;
- 
-    --  Mixed Real_Vector and Complex_Vector arithmetic operations
- 
-    function "+"
-      (Left  : Real_Vector;
-       Right : Complex_Vector) return Complex_Vector;
- 
-    function "+"
-      (Left  : Complex_Vector;
-       Right : Real_Vector) return Complex_Vector;
- 
-    function "-"
-      (Left  : Real_Vector;
-       Right : Complex_Vector) return Complex_Vector;
- 
-    function "-"
-      (Left  : Complex_Vector;
-       Right : Real_Vector) return Complex_Vector;
- 
-    function "*" (Left : Real_Vector; Right : Complex_Vector) return Complex;
-    function "*" (Left : Complex_Vector; Right : Real_Vector) return Complex;
- 
-    --  Complex_Vector scaling operations
- 
-    function "*"
-      (Left  : Complex;
-       Right : Complex_Vector) return Complex_Vector;
- 
-    function "*"
-      (Left  : Complex_Vector;
-       Right : Complex) return Complex_Vector;
- 
-    function "/"
-      (Left  : Complex_Vector;
-       Right : Complex) return Complex_Vector;
- 
-    function "*"
-      (Left  : Real'Base;
-       Right : Complex_Vector) return Complex_Vector;
- 
-    function "*"
-      (Left  : Complex_Vector;
-       Right : Real'Base) return Complex_Vector;
- 
-    function "/"
-      (Left  : Complex_Vector;
-       Right : Real'Base) return Complex_Vector;
- 
-    --  Other Complex_Vector operations
- 
-    function Unit_Vector
-      (Index : Integer;
-       Order : Positive;
-       First : Integer := 1) return Complex_Vector;
- 
-    --  Subprograms for Complex_Matrix types
- 
-    --  Complex_Matrix selection, conversion and composition operations
- 
-    function Re (X : Complex_Matrix) return Real_Matrix;
-    function Im (X : Complex_Matrix) return Real_Matrix;
- 
-    procedure Set_Re (X : in out Complex_Matrix; Re : Real_Matrix);
-    procedure Set_Im (X : in out Complex_Matrix; Im : Real_Matrix);
- 
-    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;
- 
-    function Argument (X : Complex_Matrix) return Real_Matrix;
- 
-    function Argument
-      (X     : Complex_Matrix;
-       Cycle : Real'Base) return Real_Matrix;
- 
-    function Compose_From_Polar
-      (Modulus, Argument : Real_Matrix) return Complex_Matrix;
- 
-    function Compose_From_Polar
-      (Modulus  : Real_Matrix;
-       Argument : Real_Matrix;
-       Cycle    : Real'Base) return Complex_Matrix;
- 
-    --  Complex_Matrix arithmetic operations
- 
-    function "+" (Right : Complex_Matrix) return Complex_Matrix;
-    function "-" (Right : Complex_Matrix) return Complex_Matrix;
- 
-    function Conjugate (X : Complex_Matrix) return Complex_Matrix;
-    function Transpose (X : Complex_Matrix) return Complex_Matrix;
- 
-    function "+" (Left, Right : Complex_Matrix) return Complex_Matrix;
-    function "-" (Left, Right : Complex_Matrix) return Complex_Matrix;
-    function "*" (Left, Right : Complex_Matrix) return Complex_Matrix;
-    function "*" (Left, Right : Complex_Vector) return Complex_Matrix;
- 
-    function "*"
-      (Left  : Complex_Vector;
-       Right : Complex_Matrix) return Complex_Vector;
- 
-    function "*"
-      (Left  : Complex_Matrix;
-       Right : Complex_Vector) return Complex_Vector;
- 
-    --  Mixed Real_Matrix and Complex_Matrix arithmetic operations
- 
-    function "+"
-      (Left  : Real_Matrix;
-       Right : Complex_Matrix) return Complex_Matrix;
- 
-    function "+"
-      (Left  : Complex_Matrix;
-       Right : Real_Matrix) return Complex_Matrix;
- 
-    function "-"
-      (Left  : Real_Matrix;
-       Right : Complex_Matrix) return Complex_Matrix;
- 
-    function "-"
-      (Left  : Complex_Matrix;
-       Right : Real_Matrix) return Complex_Matrix;
- 
-    function "*"
-      (Left  : Real_Matrix;
-       Right : Complex_Matrix) return Complex_Matrix;
- 
-    function "*"
-      (Left  : Complex_Matrix;
-       Right : Real_Matrix) return Complex_Matrix;
- 
-    function "*"
-      (Left  : Real_Vector;
-       Right : Complex_Vector) return Complex_Matrix;
- 
-    function "*"
-      (Left  : Complex_Vector;
-       Right : Real_Vector) return Complex_Matrix;
- 
-    function "*"
-      (Left  : Real_Vector;
-       Right : Complex_Matrix) return Complex_Vector;
- 
-    function "*"
-      (Left  : Complex_Vector;
-       Right : Real_Matrix) return Complex_Vector;
- 
-    function "*"
-      (Left  : Real_Matrix;
-       Right : Complex_Vector) return Complex_Vector;
- 
-    function "*"
-      (Left  : Complex_Matrix;
-       Right : Real_Vector) return Complex_Vector;
- 
-    --  Complex_Matrix scaling operations
- 
-    function "*"
-      (Left  : Complex;
-       Right : Complex_Matrix) return  Complex_Matrix;
- 
-    function "*"
-      (Left  : Complex_Matrix;
-       Right : Complex) return Complex_Matrix;
- 
-    function "/"
-      (Left  : Complex_Matrix;
-       Right : Complex) return Complex_Matrix;
- 
-    function "*"
-      (Left  : Real'Base;
-       Right : Complex_Matrix) return Complex_Matrix;
- 
-    function "*"
-      (Left  : Complex_Matrix;
-       Right : Real'Base) return Complex_Matrix;
- 
-    function "/"
-      (Left  : Complex_Matrix;
-       Right : Real'Base) return Complex_Matrix;
- 
-    --  Complex_Matrix inversion and related operations
- 
-    function Solve
-      (A : Complex_Matrix;
-       X : Complex_Vector) return Complex_Vector;
- 
-    function Solve (A, X : Complex_Matrix) return Complex_Matrix;
- 
-    function Inverse (A : Complex_Matrix) return Complex_Matrix;
- 
-    function Determinant (A : Complex_Matrix) return Complex;
- 
-    --  Eigenvalues and vectors of a Hermitian matrix
- 
-    function Eigenvalues (A : Complex_Matrix) return Real_Vector;
- 
-    procedure Eigensystem
-      (A       : Complex_Matrix;
-       Values  : out Real_Vector;
-       Vectors : out Complex_Matrix);
- 
-    --  Other Complex_Matrix operations
- 
-    function Unit_Matrix
-      (Order            : Positive;
-       First_1, First_2 : Integer := 1) return Complex_Matrix;
- 
- end Ada.Numerics.Generic_Complex_Arrays;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ngcoty.adb gcc-8.1.0/gcc/ada/a-ngcoty.adb
*** gcc-7.3.0/gcc/ada/a-ngcoty.adb	Tue Jun 22 17:17:57 2010
--- gcc-8.1.0/gcc/ada/a-ngcoty.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,681 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --   A D A . N U M E R I C S . G E N E R I C _ C O M P L E X _ T Y P E S    --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2010, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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; use Ada.Numerics.Aux;
- 
- package body Ada.Numerics.Generic_Complex_Types is
- 
-    subtype R is Real'Base;
- 
-    Two_Pi  : constant R := R (2.0) * Pi;
-    Half_Pi : constant R := Pi / R (2.0);
- 
-    ---------
-    -- "*" --
-    ---------
- 
-    function "*" (Left, Right : Complex) return Complex is
- 
-       Scale : constant R := R (R'Machine_Radix) ** ((R'Machine_Emax - 1) / 2);
-       --  In case of overflow, scale the operands by the largest power of the
-       --  radix (to avoid rounding error), so that the square of the scale does
-       --  not overflow itself.
- 
-       X : R;
-       Y : R;
- 
-    begin
-       X := Left.Re * Right.Re - Left.Im * Right.Im;
-       Y := Left.Re * Right.Im + Left.Im * Right.Re;
- 
-       --  If either component overflows, try to scale (skip in fast math mode)
- 
-       if not Standard'Fast_Math then
- 
-          --  Note that the test below is written as a negation. This is to
-          --  account for the fact that X and Y may be NaNs, because both of
-          --  their operands could overflow. Given that all operations on NaNs
-          --  return false, the test can only be written thus.
- 
-          if not (abs (X) <= R'Last) then
-             X := Scale**2 * ((Left.Re / Scale) * (Right.Re / Scale) -
-                              (Left.Im / Scale) * (Right.Im / Scale));
-          end if;
- 
-          if not (abs (Y) <= R'Last) then
-             Y := Scale**2 * ((Left.Re / Scale) * (Right.Im / Scale)
-                            + (Left.Im / Scale) * (Right.Re / Scale));
-          end if;
-       end if;
- 
-       return (X, Y);
-    end "*";
- 
-    function "*" (Left, Right : Imaginary) return Real'Base is
-    begin
-       return -(R (Left) * R (Right));
-    end "*";
- 
-    function "*" (Left : Complex; Right : Real'Base) return Complex is
-    begin
-       return Complex'(Left.Re * Right, Left.Im * Right);
-    end "*";
- 
-    function "*" (Left : Real'Base; Right : Complex) return Complex is
-    begin
-       return (Left * Right.Re, Left * Right.Im);
-    end "*";
- 
-    function "*" (Left : Complex; Right : Imaginary) return Complex is
-    begin
-       return Complex'(-(Left.Im * R (Right)), Left.Re * R (Right));
-    end "*";
- 
-    function "*" (Left : Imaginary; Right : Complex) return Complex is
-    begin
-       return Complex'(-(R (Left) * Right.Im), R (Left) * Right.Re);
-    end "*";
- 
-    function "*" (Left : Imaginary; Right : Real'Base) return Imaginary is
-    begin
-       return Left * Imaginary (Right);
-    end "*";
- 
-    function "*" (Left : Real'Base; Right : Imaginary) return Imaginary is
-    begin
-       return Imaginary (Left * R (Right));
-    end "*";
- 
-    ----------
-    -- "**" --
-    ----------
- 
-    function "**" (Left : Complex; Right : Integer) return Complex is
-       Result : Complex := (1.0, 0.0);
-       Factor : Complex := Left;
-       Exp    : Integer := Right;
- 
-    begin
-       --  We use the standard logarithmic approach, Exp gets shifted right
-       --  testing successive low order bits and Factor is the value of the
-       --  base raised to the next power of 2. For positive exponents we
-       --  multiply the result by this factor, for negative exponents, we
-       --  divide by this factor.
- 
-       if Exp >= 0 then
- 
-          --  For a positive exponent, if we get a constraint error during
-          --  this loop, it is an overflow, and the constraint error will
-          --  simply be passed on to the caller.
- 
-          while Exp /= 0 loop
-             if Exp rem 2 /= 0 then
-                Result := Result * Factor;
-             end if;
- 
-             Factor := Factor * Factor;
-             Exp := Exp / 2;
-          end loop;
- 
-          return Result;
- 
-       else -- Exp < 0 then
- 
-          --  For the negative exponent case, a constraint error during this
-          --  calculation happens if Factor gets too large, and the proper
-          --  response is to return 0.0, since what we essentially have is
-          --  1.0 / infinity, and the closest model number will be zero.
- 
-          begin
-             while Exp /= 0 loop
-                if Exp rem 2 /= 0 then
-                   Result := Result * Factor;
-                end if;
- 
-                Factor := Factor * Factor;
-                Exp := Exp / 2;
-             end loop;
- 
-             return R'(1.0) / Result;
- 
-          exception
-             when Constraint_Error =>
-                return (0.0, 0.0);
-          end;
-       end if;
-    end "**";
- 
-    function "**" (Left : Imaginary; Right : Integer) return Complex is
-       M : constant R := R (Left) ** Right;
-    begin
-       case Right mod 4 is
-          when 0 => return (M,   0.0);
-          when 1 => return (0.0, M);
-          when 2 => return (-M,  0.0);
-          when 3 => return (0.0, -M);
-          when others => raise Program_Error;
-       end case;
-    end "**";
- 
-    ---------
-    -- "+" --
-    ---------
- 
-    function "+" (Right : Complex) return Complex is
-    begin
-       return Right;
-    end "+";
- 
-    function "+" (Left, Right : Complex) return Complex is
-    begin
-       return Complex'(Left.Re + Right.Re, Left.Im + Right.Im);
-    end "+";
- 
-    function "+" (Right : Imaginary) return Imaginary is
-    begin
-       return Right;
-    end "+";
- 
-    function "+" (Left, Right : Imaginary) return Imaginary is
-    begin
-       return Imaginary (R (Left) + R (Right));
-    end "+";
- 
-    function "+" (Left : Complex; Right : Real'Base) return Complex is
-    begin
-       return Complex'(Left.Re + Right, Left.Im);
-    end "+";
- 
-    function "+" (Left : Real'Base; Right : Complex) return Complex is
-    begin
-       return Complex'(Left + Right.Re, Right.Im);
-    end "+";
- 
-    function "+" (Left : Complex; Right : Imaginary) return Complex is
-    begin
-       return Complex'(Left.Re, Left.Im + R (Right));
-    end "+";
- 
-    function "+" (Left : Imaginary; Right : Complex) return Complex is
-    begin
-       return Complex'(Right.Re, R (Left) + Right.Im);
-    end "+";
- 
-    function "+" (Left : Imaginary; Right : Real'Base) return Complex is
-    begin
-       return Complex'(Right, R (Left));
-    end "+";
- 
-    function "+" (Left : Real'Base; Right : Imaginary) return Complex is
-    begin
-       return Complex'(Left, R (Right));
-    end "+";
- 
-    ---------
-    -- "-" --
-    ---------
- 
-    function "-" (Right : Complex) return Complex is
-    begin
-       return (-Right.Re, -Right.Im);
-    end "-";
- 
-    function "-" (Left, Right : Complex) return Complex is
-    begin
-       return (Left.Re - Right.Re, Left.Im - Right.Im);
-    end "-";
- 
-    function "-" (Right : Imaginary) return Imaginary is
-    begin
-       return Imaginary (-R (Right));
-    end "-";
- 
-    function "-" (Left, Right : Imaginary) return Imaginary is
-    begin
-       return Imaginary (R (Left) - R (Right));
-    end "-";
- 
-    function "-" (Left : Complex; Right : Real'Base) return Complex is
-    begin
-       return Complex'(Left.Re - Right, Left.Im);
-    end "-";
- 
-    function "-" (Left : Real'Base; Right : Complex) return Complex is
-    begin
-       return Complex'(Left - Right.Re, -Right.Im);
-    end "-";
- 
-    function "-" (Left : Complex; Right : Imaginary) return Complex is
-    begin
-       return Complex'(Left.Re, Left.Im - R (Right));
-    end "-";
- 
-    function "-" (Left : Imaginary; Right : Complex) return Complex is
-    begin
-       return Complex'(-Right.Re, R (Left) - Right.Im);
-    end "-";
- 
-    function "-" (Left : Imaginary; Right : Real'Base) return Complex is
-    begin
-       return Complex'(-Right, R (Left));
-    end "-";
- 
-    function "-" (Left : Real'Base; Right : Imaginary) return Complex is
-    begin
-       return Complex'(Left, -R (Right));
-    end "-";
- 
-    ---------
-    -- "/" --
-    ---------
- 
-    function "/" (Left, Right : Complex) return Complex is
-       a : constant R := Left.Re;
-       b : constant R := Left.Im;
-       c : constant R := Right.Re;
-       d : constant R := Right.Im;
- 
-    begin
-       if c = 0.0 and then d = 0.0 then
-          raise Constraint_Error;
-       else
-          return Complex'(Re => ((a * c) + (b * d)) / (c ** 2 + d ** 2),
-                          Im => ((b * c) - (a * d)) / (c ** 2 + d ** 2));
-       end if;
-    end "/";
- 
-    function "/" (Left, Right : Imaginary) return Real'Base is
-    begin
-       return R (Left) / R (Right);
-    end "/";
- 
-    function "/" (Left : Complex; Right : Real'Base) return Complex is
-    begin
-       return Complex'(Left.Re / Right, Left.Im / Right);
-    end "/";
- 
-    function "/" (Left : Real'Base; Right : Complex) return Complex is
-       a : constant R := Left;
-       c : constant R := Right.Re;
-       d : constant R := Right.Im;
-    begin
-       return Complex'(Re =>   (a * c) / (c ** 2 + d ** 2),
-                       Im => -((a * d) / (c ** 2 + d ** 2)));
-    end "/";
- 
-    function "/" (Left : Complex; Right : Imaginary) return Complex is
-       a : constant R := Left.Re;
-       b : constant R := Left.Im;
-       d : constant R := R (Right);
- 
-    begin
-       return (b / d,  -(a / d));
-    end "/";
- 
-    function "/" (Left : Imaginary; Right : Complex) return Complex is
-       b : constant R := R (Left);
-       c : constant R := Right.Re;
-       d : constant R := Right.Im;
- 
-    begin
-       return (Re => b * d / (c ** 2 + d ** 2),
-               Im => b * c / (c ** 2 + d ** 2));
-    end "/";
- 
-    function "/" (Left : Imaginary; Right : Real'Base) return Imaginary is
-    begin
-       return Imaginary (R (Left) / Right);
-    end "/";
- 
-    function "/" (Left : Real'Base; Right : Imaginary) return Imaginary is
-    begin
-       return Imaginary (-(Left / R (Right)));
-    end "/";
- 
-    ---------
-    -- "<" --
-    ---------
- 
-    function "<" (Left, Right : Imaginary) return Boolean is
-    begin
-       return R (Left) < R (Right);
-    end "<";
- 
-    ----------
-    -- "<=" --
-    ----------
- 
-    function "<=" (Left, Right : Imaginary) return Boolean is
-    begin
-       return R (Left) <= R (Right);
-    end "<=";
- 
-    ---------
-    -- ">" --
-    ---------
- 
-    function ">" (Left, Right : Imaginary) return Boolean is
-    begin
-       return R (Left) > R (Right);
-    end ">";
- 
-    ----------
-    -- ">=" --
-    ----------
- 
-    function ">=" (Left, Right : Imaginary) return Boolean is
-    begin
-       return R (Left) >= R (Right);
-    end ">=";
- 
-    -----------
-    -- "abs" --
-    -----------
- 
-    function "abs" (Right : Imaginary) return Real'Base is
-    begin
-       return abs R (Right);
-    end "abs";
- 
-    --------------
-    -- Argument --
-    --------------
- 
-    function Argument (X : Complex) return Real'Base is
-       a   : constant R := X.Re;
-       b   : constant R := X.Im;
-       arg : R;
- 
-    begin
-       if b = 0.0 then
- 
-          if a >= 0.0 then
-             return 0.0;
-          else
-             return R'Copy_Sign (Pi, b);
-          end if;
- 
-       elsif a = 0.0 then
- 
-          if b >= 0.0 then
-             return Half_Pi;
-          else
-             return -Half_Pi;
-          end if;
- 
-       else
-          arg := R (Atan (Double (abs (b / a))));
- 
-          if a > 0.0 then
-             if b > 0.0 then
-                return arg;
-             else                  --  b < 0.0
-                return -arg;
-             end if;
- 
-          else                     --  a < 0.0
-             if b >= 0.0 then
-                return Pi - arg;
-             else                  --  b < 0.0
-                return -(Pi - arg);
-             end if;
-          end if;
-       end if;
- 
-    exception
-       when Constraint_Error =>
-          if b > 0.0 then
-             return Half_Pi;
-          else
-             return -Half_Pi;
-          end if;
-    end Argument;
- 
-    function Argument (X : Complex; Cycle : Real'Base) return Real'Base is
-    begin
-       if Cycle > 0.0 then
-          return Argument (X) * Cycle / Two_Pi;
-       else
-          raise Argument_Error;
-       end if;
-    end Argument;
- 
-    ----------------------------
-    -- Compose_From_Cartesian --
-    ----------------------------
- 
-    function Compose_From_Cartesian (Re, Im : Real'Base) return Complex is
-    begin
-       return (Re, Im);
-    end Compose_From_Cartesian;
- 
-    function Compose_From_Cartesian (Re : Real'Base) return Complex is
-    begin
-       return (Re, 0.0);
-    end Compose_From_Cartesian;
- 
-    function Compose_From_Cartesian (Im : Imaginary) return Complex is
-    begin
-       return (0.0, R (Im));
-    end Compose_From_Cartesian;
- 
-    ------------------------
-    -- Compose_From_Polar --
-    ------------------------
- 
-    function Compose_From_Polar (
-      Modulus, Argument : Real'Base)
-      return Complex
-    is
-    begin
-       if Modulus = 0.0 then
-          return (0.0, 0.0);
-       else
-          return (Modulus * R (Cos (Double (Argument))),
-                  Modulus * R (Sin (Double (Argument))));
-       end if;
-    end Compose_From_Polar;
- 
-    function Compose_From_Polar (
-      Modulus, Argument, Cycle : Real'Base)
-      return Complex
-    is
-       Arg : Real'Base;
- 
-    begin
-       if Modulus = 0.0 then
-          return (0.0, 0.0);
- 
-       elsif Cycle > 0.0 then
-          if Argument = 0.0 then
-             return (Modulus, 0.0);
- 
-          elsif Argument = Cycle / 4.0 then
-             return (0.0, Modulus);
- 
-          elsif Argument = Cycle / 2.0 then
-             return (-Modulus, 0.0);
- 
-          elsif Argument = 3.0 * Cycle / R (4.0) then
-             return (0.0, -Modulus);
-          else
-             Arg := Two_Pi * Argument / Cycle;
-             return (Modulus * R (Cos (Double (Arg))),
-                     Modulus * R (Sin (Double (Arg))));
-          end if;
-       else
-          raise Argument_Error;
-       end if;
-    end Compose_From_Polar;
- 
-    ---------------
-    -- Conjugate --
-    ---------------
- 
-    function Conjugate (X : Complex) return Complex is
-    begin
-       return Complex'(X.Re, -X.Im);
-    end Conjugate;
- 
-    --------
-    -- Im --
-    --------
- 
-    function Im (X : Complex) return Real'Base is
-    begin
-       return X.Im;
-    end Im;
- 
-    function Im (X : Imaginary) return Real'Base is
-    begin
-       return R (X);
-    end Im;
- 
-    -------------
-    -- Modulus --
-    -------------
- 
-    function Modulus (X : Complex) return Real'Base is
-       Re2, Im2 : R;
- 
-    begin
- 
-       begin
-          Re2 := X.Re ** 2;
- 
-          --  To compute (a**2 + b**2) ** (0.5) when a**2 may be out of bounds,
-          --  compute a * (1 + (b/a) **2) ** (0.5). On a machine where the
-          --  squaring does not raise constraint_error but generates infinity,
-          --  we can use an explicit comparison to determine whether to use
-          --  the scaling expression.
- 
-          --  The scaling expression is computed in double format throughout
-          --  in order to prevent inaccuracies on machines where not all
-          --  immediate expressions are rounded, such as PowerPC.
- 
-          --  ??? same weird test, why not Re2 > R'Last ???
-          if not (Re2 <= R'Last) then
-             raise Constraint_Error;
-          end if;
- 
-       exception
-          when Constraint_Error =>
-             return R (Double (abs (X.Re))
-               * Sqrt (1.0 + (Double (X.Im) / Double (X.Re)) ** 2));
-       end;
- 
-       begin
-          Im2 := X.Im ** 2;
- 
-          --  ??? same weird test
-          if not (Im2 <= R'Last) then
-             raise Constraint_Error;
-          end if;
- 
-       exception
-          when Constraint_Error =>
-             return R (Double (abs (X.Im))
-               * Sqrt (1.0 + (Double (X.Re) / Double (X.Im)) ** 2));
-       end;
- 
-       --  Now deal with cases of underflow. If only one of the squares
-       --  underflows, return the modulus of the other component. If both
-       --  squares underflow, use scaling as above.
- 
-       if Re2 = 0.0 then
- 
-          if X.Re = 0.0 then
-             return abs (X.Im);
- 
-          elsif Im2 = 0.0 then
- 
-             if X.Im = 0.0 then
-                return abs (X.Re);
- 
-             else
-                if abs (X.Re) > abs (X.Im) then
-                   return
-                     R (Double (abs (X.Re))
-                       * Sqrt (1.0 + (Double (X.Im) / Double (X.Re)) ** 2));
-                else
-                   return
-                     R (Double (abs (X.Im))
-                       * Sqrt (1.0 + (Double (X.Re) / Double (X.Im)) ** 2));
-                end if;
-             end if;
- 
-          else
-             return abs (X.Im);
-          end if;
- 
-       elsif Im2 = 0.0 then
-          return abs (X.Re);
- 
-       --  In all other cases, the naive computation will do
- 
-       else
-          return R (Sqrt (Double (Re2 + Im2)));
-       end if;
-    end Modulus;
- 
-    --------
-    -- Re --
-    --------
- 
-    function Re (X : Complex) return Real'Base is
-    begin
-       return X.Re;
-    end Re;
- 
-    ------------
-    -- Set_Im --
-    ------------
- 
-    procedure Set_Im (X : in out Complex; Im : Real'Base) is
-    begin
-       X.Im := Im;
-    end Set_Im;
- 
-    procedure Set_Im (X : out Imaginary; Im : Real'Base) is
-    begin
-       X := Imaginary (Im);
-    end Set_Im;
- 
-    ------------
-    -- Set_Re --
-    ------------
- 
-    procedure Set_Re (X : in out Complex; Re : Real'Base) is
-    begin
-       X.Re := Re;
-    end Set_Re;
- 
- end Ada.Numerics.Generic_Complex_Types;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ngcoty.ads gcc-8.1.0/gcc/ada/a-ngcoty.ads
*** gcc-7.3.0/gcc/ada/a-ngcoty.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-ngcoty.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,157 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --   A D A . N U M E R I C S . G E N E R I C _ C O M P L E X _ T Y P E S    --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2009, Free Software Foundation, 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- generic
-    type Real is digits <>;
- 
- package Ada.Numerics.Generic_Complex_Types is
-    pragma Pure;
- 
-    type Complex is record
-       Re, Im : Real'Base;
-    end record;
- 
-    pragma Complex_Representation (Complex);
- 
-    type Imaginary is private;
-    pragma Preelaborable_Initialization (Imaginary);
- 
-    i : constant Imaginary;
-    j : constant Imaginary;
- 
-    function Re (X : Complex)   return Real'Base;
-    function Im (X : Complex)   return Real'Base;
-    function Im (X : Imaginary) return Real'Base;
- 
-    procedure Set_Re (X : in out Complex; Re : Real'Base);
-    procedure Set_Im (X : in out Complex; Im : Real'Base);
-    procedure Set_Im (X : out Imaginary;  Im : Real'Base);
- 
-    function Compose_From_Cartesian (Re, Im : Real'Base) return Complex;
-    function Compose_From_Cartesian (Re     : Real'Base) return Complex;
-    function Compose_From_Cartesian (Im     : Imaginary) return Complex;
- 
-    function Modulus (X     : Complex) return Real'Base;
-    function "abs"   (Right : Complex) return Real'Base renames Modulus;
- 
-    function Argument (X : Complex)                    return Real'Base;
-    function Argument (X : Complex; Cycle : Real'Base) return Real'Base;
- 
-    function Compose_From_Polar (
-      Modulus, Argument : Real'Base)
-      return Complex;
- 
-    function Compose_From_Polar (
-      Modulus, Argument, Cycle : Real'Base)
-      return Complex;
- 
-    function "+"       (Right : Complex) return Complex;
-    function "-"       (Right : Complex) return Complex;
-    function Conjugate (X     : Complex) return Complex;
- 
-    function "+"       (Left, Right : Complex) return Complex;
-    function "-"       (Left, Right : Complex) return Complex;
-    function "*"       (Left, Right : Complex) return Complex;
-    function "/"       (Left, Right : Complex) return Complex;
- 
-    function "**"      (Left : Complex; Right : Integer) return Complex;
- 
-    function "+"       (Right : Imaginary) return Imaginary;
-    function "-"       (Right : Imaginary) return Imaginary;
-    function Conjugate (X     : Imaginary) return Imaginary renames "-";
-    function "abs"     (Right : Imaginary) return Real'Base;
- 
-    function "+"       (Left, Right : Imaginary) return Imaginary;
-    function "-"       (Left, Right : Imaginary) return Imaginary;
-    function "*"       (Left, Right : Imaginary) return Real'Base;
-    function "/"       (Left, Right : Imaginary) return Real'Base;
- 
-    function "**"      (Left : Imaginary; Right : Integer) return Complex;
- 
-    function "<"       (Left, Right : Imaginary) return Boolean;
-    function "<="      (Left, Right : Imaginary) return Boolean;
-    function ">"       (Left, Right : Imaginary) return Boolean;
-    function ">="      (Left, Right : Imaginary) return Boolean;
- 
-    function "+"       (Left : Complex;   Right : Real'Base) return Complex;
-    function "+"       (Left : Real'Base; Right : Complex)   return Complex;
-    function "-"       (Left : Complex;   Right : Real'Base) return Complex;
-    function "-"       (Left : Real'Base; Right : Complex)   return Complex;
-    function "*"       (Left : Complex;   Right : Real'Base) return Complex;
-    function "*"       (Left : Real'Base; Right : Complex)   return Complex;
-    function "/"       (Left : Complex;   Right : Real'Base) return Complex;
-    function "/"       (Left : Real'Base; Right : Complex)   return Complex;
- 
-    function "+"       (Left : Complex;   Right : Imaginary) return Complex;
-    function "+"       (Left : Imaginary; Right : Complex)   return Complex;
-    function "-"       (Left : Complex;   Right : Imaginary) return Complex;
-    function "-"       (Left : Imaginary; Right : Complex)   return Complex;
-    function "*"       (Left : Complex;   Right : Imaginary) return Complex;
-    function "*"       (Left : Imaginary; Right : Complex)   return Complex;
-    function "/"       (Left : Complex;   Right : Imaginary) return Complex;
-    function "/"       (Left : Imaginary; Right : Complex)   return Complex;
- 
-    function "+"       (Left : Imaginary; Right : Real'Base) return Complex;
-    function "+"       (Left : Real'Base; Right : Imaginary) return Complex;
-    function "-"       (Left : Imaginary; Right : Real'Base) return Complex;
-    function "-"       (Left : Real'Base; Right : Imaginary) return Complex;
- 
-    function "*"       (Left : Imaginary; Right : Real'Base) return Imaginary;
-    function "*"       (Left : Real'Base; Right : Imaginary) return Imaginary;
-    function "/"       (Left : Imaginary; Right : Real'Base) return Imaginary;
-    function "/"       (Left : Real'Base; Right : Imaginary) return Imaginary;
- 
- private
-    type Imaginary is new Real'Base;
- 
-    i : constant Imaginary := 1.0;
-    j : constant Imaginary := 1.0;
- 
-    pragma Inline ("+");
-    pragma Inline ("-");
-    pragma Inline ("*");
-    pragma Inline ("<");
-    pragma Inline ("<=");
-    pragma Inline (">");
-    pragma Inline (">=");
-    pragma Inline ("abs");
-    pragma Inline (Compose_From_Cartesian);
-    pragma Inline (Conjugate);
-    pragma Inline (Im);
-    pragma Inline (Re);
-    pragma Inline (Set_Im);
-    pragma Inline (Set_Re);
- 
- end Ada.Numerics.Generic_Complex_Types;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ngelfu.adb gcc-8.1.0/gcc/ada/a-ngelfu.adb
*** gcc-7.3.0/gcc/ada/a-ngelfu.adb	Tue Oct 20 12:40:36 2015
--- gcc-8.1.0/gcc/ada/a-ngelfu.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,995 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                ADA.NUMERICS.GENERIC_ELEMENTARY_FUNCTIONS                 --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 body is specifically for using an Ada interface to C math.h to get
- --  the computation engine. Many special cases are handled locally to avoid
- --  unnecessary calls or to meet Annex G strict mode requirements.
- 
- --  Uses functions sqrt, exp, log, pow, sin, asin, cos, acos, tan, atan, sinh,
- --  cosh, tanh from C library via math.h
- 
- with Ada.Numerics.Aux;
- 
- package body Ada.Numerics.Generic_Elementary_Functions is
- 
-    use type Ada.Numerics.Aux.Double;
- 
-    Sqrt_Two : constant := 1.41421_35623_73095_04880_16887_24209_69807_85696;
-    Log_Two  : constant := 0.69314_71805_59945_30941_72321_21458_17656_80755;
- 
-    Half_Log_Two : constant := Log_Two / 2;
- 
-    subtype T is Float_Type'Base;
-    subtype Double is Aux.Double;
- 
-    Two_Pi  : constant T := 2.0 * Pi;
-    Half_Pi : constant T := Pi / 2.0;
- 
-    Half_Log_Epsilon    : constant T := T (1 - T'Model_Mantissa) * Half_Log_Two;
-    Log_Inverse_Epsilon : constant T := T (T'Model_Mantissa - 1) * Log_Two;
-    Sqrt_Epsilon        : constant T := Sqrt_Two ** (1 - T'Model_Mantissa);
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    function Exp_Strict (X : Float_Type'Base) return Float_Type'Base;
-    --  Cody/Waite routine, supposedly more precise than the library version.
-    --  Currently only needed for Sinh/Cosh on X86 with the largest FP type.
- 
-    function Local_Atan
-      (Y : Float_Type'Base;
-       X : Float_Type'Base := 1.0) return Float_Type'Base;
-    --  Common code for arc tangent after cycle reduction
- 
-    ----------
-    -- "**" --
-    ----------
- 
-    function "**" (Left, Right : Float_Type'Base) return Float_Type'Base is
-       A_Right  : Float_Type'Base;
-       Int_Part : Integer;
-       Result   : Float_Type'Base;
-       R1       : Float_Type'Base;
-       Rest     : Float_Type'Base;
- 
-    begin
-       if Left = 0.0
-         and then Right = 0.0
-       then
-          raise Argument_Error;
- 
-       elsif Left < 0.0 then
-          raise Argument_Error;
- 
-       elsif Right = 0.0 then
-          return 1.0;
- 
-       elsif Left = 0.0 then
-          if Right < 0.0 then
-             raise Constraint_Error;
-          else
-             return 0.0;
-          end if;
- 
-       elsif Left = 1.0 then
-          return 1.0;
- 
-       elsif Right = 1.0 then
-          return Left;
- 
-       else
-          begin
-             if Right = 2.0 then
-                return Left * Left;
- 
-             elsif Right = 0.5 then
-                return Sqrt (Left);
- 
-             else
-                A_Right := abs (Right);
- 
-                --  If exponent is larger than one, compute integer exponen-
-                --  tiation if possible, and evaluate fractional part with more
-                --  precision. The relative error is now proportional to the
-                --  fractional part of the exponent only.
- 
-                if A_Right > 1.0
-                  and then A_Right < Float_Type'Base (Integer'Last)
-                then
-                   Int_Part := Integer (Float_Type'Base'Truncation (A_Right));
-                   Result := Left ** Int_Part;
-                   Rest := A_Right - Float_Type'Base (Int_Part);
- 
-                   --  Compute with two leading bits of the mantissa using
-                   --  square roots. Bound  to be better than logarithms, and
-                   --  easily extended to greater precision.
- 
-                   if Rest >= 0.5 then
-                      R1 := Sqrt (Left);
-                      Result := Result * R1;
-                      Rest := Rest - 0.5;
- 
-                      if Rest >= 0.25 then
-                         Result := Result * Sqrt (R1);
-                         Rest := Rest - 0.25;
-                      end if;
- 
-                   elsif Rest >= 0.25 then
-                      Result := Result * Sqrt (Sqrt (Left));
-                      Rest := Rest - 0.25;
-                   end if;
- 
-                   Result := Result *
-                     Float_Type'Base (Aux.Pow (Double (Left), Double (Rest)));
- 
-                   if Right >= 0.0 then
-                      return Result;
-                   else
-                      return (1.0 / Result);
-                   end if;
-                else
-                   return
-                     Float_Type'Base (Aux.Pow (Double (Left), Double (Right)));
-                end if;
-             end if;
- 
-          exception
-             when others =>
-                raise Constraint_Error;
-          end;
-       end if;
-    end "**";
- 
-    ------------
-    -- Arccos --
-    ------------
- 
-    --  Natural cycle
- 
-    function Arccos (X : Float_Type'Base) return Float_Type'Base is
-       Temp : Float_Type'Base;
- 
-    begin
-       if abs X > 1.0 then
-          raise Argument_Error;
- 
-       elsif abs X < Sqrt_Epsilon then
-          return Pi / 2.0 - X;
- 
-       elsif X = 1.0 then
-          return 0.0;
- 
-       elsif X = -1.0 then
-          return Pi;
-       end if;
- 
-       Temp := Float_Type'Base (Aux.Acos (Double (X)));
- 
-       if Temp < 0.0 then
-          Temp := Pi + Temp;
-       end if;
- 
-       return Temp;
-    end Arccos;
- 
-    --  Arbitrary cycle
- 
-    function Arccos (X, Cycle : Float_Type'Base) return Float_Type'Base is
-       Temp : Float_Type'Base;
- 
-    begin
-       if Cycle <= 0.0 then
-          raise Argument_Error;
- 
-       elsif abs X > 1.0 then
-          raise Argument_Error;
- 
-       elsif abs X < Sqrt_Epsilon then
-          return Cycle / 4.0;
- 
-       elsif X = 1.0 then
-          return 0.0;
- 
-       elsif X = -1.0 then
-          return Cycle / 2.0;
-       end if;
- 
-       Temp := Arctan (Sqrt ((1.0 - X) * (1.0 + X)) / X, 1.0, Cycle);
- 
-       if Temp < 0.0 then
-          Temp := Cycle / 2.0 + Temp;
-       end if;
- 
-       return Temp;
-    end Arccos;
- 
-    -------------
-    -- Arccosh --
-    -------------
- 
-    function Arccosh (X : Float_Type'Base) return Float_Type'Base is
-    begin
-       --  Return positive branch of Log (X - Sqrt (X * X - 1.0)), or the proper
-       --  approximation for X close to 1 or >> 1.
- 
-       if X < 1.0 then
-          raise Argument_Error;
- 
-       elsif X < 1.0 + Sqrt_Epsilon then
-          return Sqrt (2.0 * (X - 1.0));
- 
-       elsif X > 1.0 / Sqrt_Epsilon then
-          return Log (X) + Log_Two;
- 
-       else
-          return Log (X + Sqrt ((X - 1.0) * (X + 1.0)));
-       end if;
-    end Arccosh;
- 
-    ------------
-    -- Arccot --
-    ------------
- 
-    --  Natural cycle
- 
-    function Arccot
-      (X    : Float_Type'Base;
-       Y    : Float_Type'Base := 1.0)
-       return Float_Type'Base
-    is
-    begin
-       --  Just reverse arguments
- 
-       return Arctan (Y, X);
-    end Arccot;
- 
-    --  Arbitrary cycle
- 
-    function Arccot
-      (X     : Float_Type'Base;
-       Y     : Float_Type'Base := 1.0;
-       Cycle : Float_Type'Base)
-       return  Float_Type'Base
-    is
-    begin
-       --  Just reverse arguments
- 
-       return Arctan (Y, X, Cycle);
-    end Arccot;
- 
-    -------------
-    -- Arccoth --
-    -------------
- 
-    function Arccoth (X : Float_Type'Base) return Float_Type'Base is
-    begin
-       if abs X > 2.0 then
-          return Arctanh (1.0 / X);
- 
-       elsif abs X = 1.0 then
-          raise Constraint_Error;
- 
-       elsif abs X < 1.0 then
-          raise Argument_Error;
- 
-       else
-          --  1.0 < abs X <= 2.0. One of X + 1.0 and X - 1.0 is exact, the other
-          --  has error 0 or Epsilon.
- 
-          return 0.5 * (Log (abs (X + 1.0)) - Log (abs (X - 1.0)));
-       end if;
-    end Arccoth;
- 
-    ------------
-    -- Arcsin --
-    ------------
- 
-    --  Natural cycle
- 
-    function Arcsin (X : Float_Type'Base) return Float_Type'Base is
-    begin
-       if abs X > 1.0 then
-          raise Argument_Error;
- 
-       elsif abs X < Sqrt_Epsilon then
-          return X;
- 
-       elsif X = 1.0 then
-          return Pi / 2.0;
- 
-       elsif X = -1.0 then
-          return -(Pi / 2.0);
-       end if;
- 
-       return Float_Type'Base (Aux.Asin (Double (X)));
-    end Arcsin;
- 
-    --  Arbitrary cycle
- 
-    function Arcsin (X, Cycle : Float_Type'Base) return Float_Type'Base is
-    begin
-       if Cycle <= 0.0 then
-          raise Argument_Error;
- 
-       elsif abs X > 1.0 then
-          raise Argument_Error;
- 
-       elsif X = 0.0 then
-          return X;
- 
-       elsif X = 1.0 then
-          return Cycle / 4.0;
- 
-       elsif X = -1.0 then
-          return -(Cycle / 4.0);
-       end if;
- 
-       return Arctan (X / Sqrt ((1.0 - X) * (1.0 + X)), 1.0, Cycle);
-    end Arcsin;
- 
-    -------------
-    -- Arcsinh --
-    -------------
- 
-    function Arcsinh (X : Float_Type'Base) return Float_Type'Base is
-    begin
-       if abs X < Sqrt_Epsilon then
-          return X;
- 
-       elsif X > 1.0 / Sqrt_Epsilon then
-          return Log (X) + Log_Two;
- 
-       elsif X < -(1.0 / Sqrt_Epsilon) then
-          return -(Log (-X) + Log_Two);
- 
-       elsif X < 0.0 then
-          return -Log (abs X + Sqrt (X * X + 1.0));
- 
-       else
-          return Log (X + Sqrt (X * X + 1.0));
-       end if;
-    end Arcsinh;
- 
-    ------------
-    -- Arctan --
-    ------------
- 
-    --  Natural cycle
- 
-    function Arctan
-      (Y    : Float_Type'Base;
-       X    : Float_Type'Base := 1.0)
-       return Float_Type'Base
-    is
-    begin
-       if X = 0.0 and then Y = 0.0 then
-          raise Argument_Error;
- 
-       elsif Y = 0.0 then
-          if X > 0.0 then
-             return 0.0;
-          else -- X < 0.0
-             return Pi * Float_Type'Copy_Sign (1.0, Y);
-          end if;
- 
-       elsif X = 0.0 then
-          return Float_Type'Copy_Sign (Half_Pi, Y);
- 
-       else
-          return Local_Atan (Y, X);
-       end if;
-    end Arctan;
- 
-    --  Arbitrary cycle
- 
-    function Arctan
-      (Y     : Float_Type'Base;
-       X     : Float_Type'Base := 1.0;
-       Cycle : Float_Type'Base)
-       return  Float_Type'Base
-    is
-    begin
-       if Cycle <= 0.0 then
-          raise Argument_Error;
- 
-       elsif X = 0.0 and then Y = 0.0 then
-          raise Argument_Error;
- 
-       elsif Y = 0.0 then
-          if X > 0.0 then
-             return 0.0;
-          else -- X < 0.0
-             return Cycle / 2.0 * Float_Type'Copy_Sign (1.0, Y);
-          end if;
- 
-       elsif X = 0.0 then
-          return Float_Type'Copy_Sign (Cycle / 4.0, Y);
- 
-       else
-          return Local_Atan (Y, X) *  Cycle / Two_Pi;
-       end if;
-    end Arctan;
- 
-    -------------
-    -- Arctanh --
-    -------------
- 
-    function Arctanh (X : Float_Type'Base) return Float_Type'Base is
-       A, B, D, A_Plus_1, A_From_1 : Float_Type'Base;
- 
-       Mantissa : constant Integer := Float_Type'Base'Machine_Mantissa;
- 
-    begin
-       --  The naive formula:
- 
-       --     Arctanh (X) := (1/2) * Log  (1 + X) / (1 - X)
- 
-       --   is not well-behaved numerically when X < 0.5 and when X is close
-       --   to one. The following is accurate but probably not optimal.
- 
-       if abs X = 1.0 then
-          raise Constraint_Error;
- 
-       elsif abs X >= 1.0 - 2.0 ** (-Mantissa) then
- 
-          if abs X >= 1.0 then
-             raise Argument_Error;
-          else
- 
-             --  The one case that overflows if put through the method below:
-             --  abs X = 1.0 - Epsilon.  In this case (1/2) log (2/Epsilon) is
-             --  accurate. This simplifies to:
- 
-             return Float_Type'Copy_Sign (
-                Half_Log_Two * Float_Type'Base (Mantissa + 1), X);
-          end if;
- 
-       --  elsif abs X <= 0.5 then
-       --  why is above line commented out ???
- 
-       else
-          --  Use several piecewise linear approximations. A is close to X,
-          --  chosen so 1.0 + A, 1.0 - A, and X - A are exact. The two scalings
-          --  remove the low-order bits of X.
- 
-          A := Float_Type'Base'Scaling (
-              Float_Type'Base (Long_Long_Integer
-                (Float_Type'Base'Scaling (X, Mantissa - 1))), 1 - Mantissa);
- 
-          B := X - A;                --  This is exact; abs B <= 2**(-Mantissa).
-          A_Plus_1 := 1.0 + A;       --  This is exact.
-          A_From_1 := 1.0 - A;       --  Ditto.
-          D := A_Plus_1 * A_From_1;  --  1 - A*A.
- 
-          --  use one term of the series expansion:
- 
-          --    f (x + e) = f(x) + e * f'(x) + ..
- 
-          --  The derivative of Arctanh at A is 1/(1-A*A). Next term is
-          --  A*(B/D)**2 (if a quadratic approximation is ever needed).
- 
-          return 0.5 * (Log (A_Plus_1) - Log (A_From_1)) + B / D;
-       end if;
-    end Arctanh;
- 
-    ---------
-    -- Cos --
-    ---------
- 
-    --  Natural cycle
- 
-    function Cos (X : Float_Type'Base) return Float_Type'Base is
-    begin
-       if abs X < Sqrt_Epsilon then
-          return 1.0;
-       end if;
- 
-       return Float_Type'Base (Aux.Cos (Double (X)));
-    end Cos;
- 
-    --  Arbitrary cycle
- 
-    function Cos (X, Cycle : Float_Type'Base) return Float_Type'Base is
-    begin
-       --  Just reuse the code for Sin. The potential small loss of speed is
-       --  negligible with proper (front-end) inlining.
- 
-       return -Sin (abs X - Cycle * 0.25, Cycle);
-    end Cos;
- 
-    ----------
-    -- Cosh --
-    ----------
- 
-    function Cosh (X : Float_Type'Base) return Float_Type'Base is
-       Lnv      : constant Float_Type'Base := 8#0.542714#;
-       V2minus1 : constant Float_Type'Base := 0.13830_27787_96019_02638E-4;
-       Y        : constant Float_Type'Base := abs X;
-       Z        : Float_Type'Base;
- 
-    begin
-       if Y < Sqrt_Epsilon then
-          return 1.0;
- 
-       elsif Y > Log_Inverse_Epsilon then
-          Z := Exp_Strict (Y - Lnv);
-          return (Z + V2minus1 * Z);
- 
-       else
-          Z := Exp_Strict (Y);
-          return 0.5 * (Z + 1.0 / Z);
-       end if;
- 
-    end Cosh;
- 
-    ---------
-    -- Cot --
-    ---------
- 
-    --  Natural cycle
- 
-    function Cot (X : Float_Type'Base) return Float_Type'Base is
-    begin
-       if X = 0.0 then
-          raise Constraint_Error;
- 
-       elsif abs X < Sqrt_Epsilon then
-          return 1.0 / X;
-       end if;
- 
-       return 1.0 / Float_Type'Base (Aux.Tan (Double (X)));
-    end Cot;
- 
-    --  Arbitrary cycle
- 
-    function Cot (X, Cycle : Float_Type'Base) return Float_Type'Base is
-       T : Float_Type'Base;
- 
-    begin
-       if Cycle <= 0.0 then
-          raise Argument_Error;
-       end if;
- 
-       T := Float_Type'Base'Remainder (X, Cycle);
- 
-       if T = 0.0 or else abs T = 0.5 * Cycle then
-          raise Constraint_Error;
- 
-       elsif abs T < Sqrt_Epsilon then
-          return 1.0 / T;
- 
-       elsif abs T = 0.25 * Cycle then
-          return 0.0;
- 
-       else
-          T := T / Cycle * Two_Pi;
-          return Cos (T) / Sin (T);
-       end if;
-    end Cot;
- 
-    ----------
-    -- Coth --
-    ----------
- 
-    function Coth (X : Float_Type'Base) return Float_Type'Base is
-    begin
-       if X = 0.0 then
-          raise Constraint_Error;
- 
-       elsif X < Half_Log_Epsilon then
-          return -1.0;
- 
-       elsif X > -Half_Log_Epsilon then
-          return 1.0;
- 
-       elsif abs X < Sqrt_Epsilon then
-          return 1.0 / X;
-       end if;
- 
-       return 1.0 / Float_Type'Base (Aux.Tanh (Double (X)));
-    end Coth;
- 
-    ---------
-    -- Exp --
-    ---------
- 
-    function Exp (X : Float_Type'Base) return Float_Type'Base is
-       Result : Float_Type'Base;
- 
-    begin
-       if X = 0.0 then
-          return 1.0;
-       end if;
- 
-       Result := Float_Type'Base (Aux.Exp (Double (X)));
- 
-       --  Deal with case of Exp returning IEEE infinity. If Machine_Overflows
-       --  is False, then we can just leave it as an infinity (and indeed we
-       --  prefer to do so). But if Machine_Overflows is True, then we have
-       --  to raise a Constraint_Error exception as required by the RM.
- 
-       if Float_Type'Machine_Overflows and then not Result'Valid then
-          raise Constraint_Error;
-       end if;
- 
-       return Result;
-    end Exp;
- 
-    ----------------
-    -- Exp_Strict --
-    ----------------
- 
-    function Exp_Strict (X : Float_Type'Base) return Float_Type'Base is
-       G : Float_Type'Base;
-       Z : Float_Type'Base;
- 
-       P0 : constant := 0.25000_00000_00000_00000;
-       P1 : constant := 0.75753_18015_94227_76666E-2;
-       P2 : constant := 0.31555_19276_56846_46356E-4;
- 
-       Q0 : constant := 0.5;
-       Q1 : constant := 0.56817_30269_85512_21787E-1;
-       Q2 : constant := 0.63121_89437_43985_02557E-3;
-       Q3 : constant := 0.75104_02839_98700_46114E-6;
- 
-       C1 : constant := 8#0.543#;
-       C2 : constant := -2.1219_44400_54690_58277E-4;
-       Le : constant := 1.4426_95040_88896_34074;
- 
-       XN : Float_Type'Base;
-       P, Q, R : Float_Type'Base;
- 
-    begin
-       if X = 0.0 then
-          return 1.0;
-       end if;
- 
-       XN := Float_Type'Base'Rounding (X * Le);
-       G := (X - XN * C1) - XN * C2;
-       Z := G * G;
-       P := G * ((P2 * Z + P1) * Z + P0);
-       Q := ((Q3 * Z + Q2) * Z + Q1) * Z + Q0;
-       R := 0.5 + P / (Q - P);
- 
-       R := Float_Type'Base'Scaling (R, Integer (XN) + 1);
- 
-       --  Deal with case of Exp returning IEEE infinity. If Machine_Overflows
-       --  is False, then we can just leave it as an infinity (and indeed we
-       --  prefer to do so). But if Machine_Overflows is True, then we have to
-       --  raise a Constraint_Error exception as required by the RM.
- 
-       if Float_Type'Machine_Overflows and then not R'Valid then
-          raise Constraint_Error;
-       else
-          return R;
-       end if;
- 
-    end Exp_Strict;
- 
-    ----------------
-    -- Local_Atan --
-    ----------------
- 
-    function Local_Atan
-      (Y : Float_Type'Base;
-       X : Float_Type'Base := 1.0) return Float_Type'Base
-    is
-       Z        : Float_Type'Base;
-       Raw_Atan : Float_Type'Base;
- 
-    begin
-       Z := (if abs Y > abs X then abs (X / Y) else abs (Y / X));
- 
-       Raw_Atan :=
-         (if Z < Sqrt_Epsilon then Z
-          elsif Z = 1.0 then Pi / 4.0
-          else Float_Type'Base (Aux.Atan (Double (Z))));
- 
-       if abs Y > abs X then
-          Raw_Atan := Half_Pi - Raw_Atan;
-       end if;
- 
-       if X > 0.0 then
-          return Float_Type'Copy_Sign (Raw_Atan, Y);
-       else
-          return Float_Type'Copy_Sign (Pi - Raw_Atan, Y);
-       end if;
-    end Local_Atan;
- 
-    ---------
-    -- Log --
-    ---------
- 
-    --  Natural base
- 
-    function Log (X : Float_Type'Base) return Float_Type'Base is
-    begin
-       if X < 0.0 then
-          raise Argument_Error;
- 
-       elsif X = 0.0 then
-          raise Constraint_Error;
- 
-       elsif X = 1.0 then
-          return 0.0;
-       end if;
- 
-       return Float_Type'Base (Aux.Log (Double (X)));
-    end Log;
- 
-    --  Arbitrary base
- 
-    function Log (X, Base : Float_Type'Base) return Float_Type'Base is
-    begin
-       if X < 0.0 then
-          raise Argument_Error;
- 
-       elsif Base <= 0.0 or else Base = 1.0 then
-          raise Argument_Error;
- 
-       elsif X = 0.0 then
-          raise Constraint_Error;
- 
-       elsif X = 1.0 then
-          return 0.0;
-       end if;
- 
-       return Float_Type'Base (Aux.Log (Double (X)) / Aux.Log (Double (Base)));
-    end Log;
- 
-    ---------
-    -- Sin --
-    ---------
- 
-    --  Natural cycle
- 
-    function Sin (X : Float_Type'Base) return Float_Type'Base is
-    begin
-       if abs X < Sqrt_Epsilon then
-          return X;
-       end if;
- 
-       return Float_Type'Base (Aux.Sin (Double (X)));
-    end Sin;
- 
-    --  Arbitrary cycle
- 
-    function Sin (X, Cycle : Float_Type'Base) return Float_Type'Base is
-       T : Float_Type'Base;
- 
-    begin
-       if Cycle <= 0.0 then
-          raise Argument_Error;
- 
-       --  If X is zero, return it as the result, preserving the argument sign.
-       --  Is this test really needed on any machine ???
- 
-       elsif X = 0.0 then
-          return X;
-       end if;
- 
-       T := Float_Type'Base'Remainder (X, Cycle);
- 
-       --  The following two reductions reduce the argument to the interval
-       --  [-0.25 * Cycle, 0.25 * Cycle]. This reduction is exact and is needed
-       --  to prevent inaccuracy that may result if the sine function uses a
-       --  different (more accurate) value of Pi in its reduction than is used
-       --  in the multiplication with Two_Pi.
- 
-       if abs T > 0.25 * Cycle then
-          T := 0.5 * Float_Type'Copy_Sign (Cycle, T) - T;
-       end if;
- 
-       --  Could test for 12.0 * abs T = Cycle, and return an exact value in
-       --  those cases. It is not clear this is worth the extra test though.
- 
-       return Float_Type'Base (Aux.Sin (Double (T / Cycle * Two_Pi)));
-    end Sin;
- 
-    ----------
-    -- Sinh --
-    ----------
- 
-    function Sinh (X : Float_Type'Base) return Float_Type'Base is
-       Lnv      : constant Float_Type'Base := 8#0.542714#;
-       V2minus1 : constant Float_Type'Base := 0.13830_27787_96019_02638E-4;
-       Y        : constant Float_Type'Base := abs X;
-       F        : constant Float_Type'Base := Y * Y;
-       Z        : Float_Type'Base;
- 
-       Float_Digits_1_6 : constant Boolean := Float_Type'Digits < 7;
- 
-    begin
-       if Y < Sqrt_Epsilon then
-          return X;
- 
-       elsif Y > Log_Inverse_Epsilon then
-          Z := Exp_Strict (Y - Lnv);
-          Z := Z + V2minus1 * Z;
- 
-       elsif Y < 1.0 then
- 
-          if Float_Digits_1_6 then
- 
-             --  Use expansion provided by Cody and Waite, p. 226. Note that
-             --  leading term of the polynomial in Q is exactly 1.0.
- 
-             declare
-                P0 : constant := -0.71379_3159E+1;
-                P1 : constant := -0.19033_3399E+0;
-                Q0 : constant := -0.42827_7109E+2;
- 
-             begin
-                Z := Y + Y * F * (P1 * F + P0) / (F + Q0);
-             end;
- 
-          else
-             declare
-                P0 : constant := -0.35181_28343_01771_17881E+6;
-                P1 : constant := -0.11563_52119_68517_68270E+5;
-                P2 : constant := -0.16375_79820_26307_51372E+3;
-                P3 : constant := -0.78966_12741_73570_99479E+0;
-                Q0 : constant := -0.21108_77005_81062_71242E+7;
-                Q1 : constant :=  0.36162_72310_94218_36460E+5;
-                Q2 : constant := -0.27773_52311_96507_01667E+3;
- 
-             begin
-                Z := Y + Y * F * (((P3 * F + P2) * F + P1) * F + P0)
-                               / (((F + Q2) * F + Q1) * F + Q0);
-             end;
-          end if;
- 
-       else
-          Z := Exp_Strict (Y);
-          Z := 0.5 * (Z - 1.0 / Z);
-       end if;
- 
-       if X > 0.0 then
-          return Z;
-       else
-          return -Z;
-       end if;
-    end Sinh;
- 
-    ----------
-    -- Sqrt --
-    ----------
- 
-    function Sqrt (X : Float_Type'Base) return Float_Type'Base is
-    begin
-       if X < 0.0 then
-          raise Argument_Error;
- 
-       --  Special case Sqrt (0.0) to preserve possible minus sign per IEEE
- 
-       elsif X = 0.0 then
-          return X;
-       end if;
- 
-       return Float_Type'Base (Aux.Sqrt (Double (X)));
-    end Sqrt;
- 
-    ---------
-    -- Tan --
-    ---------
- 
-    --  Natural cycle
- 
-    function Tan (X : Float_Type'Base) return Float_Type'Base is
-    begin
-       if abs X < Sqrt_Epsilon then
-          return X;
-       end if;
- 
-       --  Note: if X is exactly pi/2, then we should raise an exception, since
-       --  the result would overflow. But for all floating-point formats we deal
-       --  with, it is impossible for X to be exactly pi/2, and the result is
-       --  always in range.
- 
-       return Float_Type'Base (Aux.Tan (Double (X)));
-    end Tan;
- 
-    --  Arbitrary cycle
- 
-    function Tan (X, Cycle : Float_Type'Base) return Float_Type'Base is
-       T : Float_Type'Base;
- 
-    begin
-       if Cycle <= 0.0 then
-          raise Argument_Error;
- 
-       elsif X = 0.0 then
-          return X;
-       end if;
- 
-       T := Float_Type'Base'Remainder (X, Cycle);
- 
-       if abs T = 0.25 * Cycle then
-          raise Constraint_Error;
- 
-       elsif abs T = 0.5 * Cycle then
-          return 0.0;
- 
-       else
-          T := T / Cycle * Two_Pi;
-          return Sin (T) / Cos (T);
-       end if;
- 
-    end Tan;
- 
-    ----------
-    -- Tanh --
-    ----------
- 
-    function Tanh (X : Float_Type'Base) return Float_Type'Base is
-       P0 : constant Float_Type'Base := -0.16134_11902_39962_28053E+4;
-       P1 : constant Float_Type'Base := -0.99225_92967_22360_83313E+2;
-       P2 : constant Float_Type'Base := -0.96437_49277_72254_69787E+0;
- 
-       Q0 : constant Float_Type'Base :=  0.48402_35707_19886_88686E+4;
-       Q1 : constant Float_Type'Base :=  0.22337_72071_89623_12926E+4;
-       Q2 : constant Float_Type'Base :=  0.11274_47438_05349_49335E+3;
-       Q3 : constant Float_Type'Base :=  0.10000_00000_00000_00000E+1;
- 
-       Half_Ln3 : constant Float_Type'Base := 0.54930_61443_34054_84570;
- 
-       P, Q, R : Float_Type'Base;
-       Y : constant Float_Type'Base := abs X;
-       G : constant Float_Type'Base := Y * Y;
- 
-       Float_Type_Digits_15_Or_More : constant Boolean :=
-         Float_Type'Digits > 14;
- 
-    begin
-       if X < Half_Log_Epsilon then
-          return -1.0;
- 
-       elsif X > -Half_Log_Epsilon then
-          return 1.0;
- 
-       elsif Y < Sqrt_Epsilon then
-          return X;
- 
-       elsif Y < Half_Ln3
-         and then Float_Type_Digits_15_Or_More
-       then
-          P := (P2 * G + P1) * G + P0;
-          Q := ((Q3 * G + Q2) * G + Q1) * G + Q0;
-          R := G * (P / Q);
-          return X + X * R;
- 
-       else
-          return Float_Type'Base (Aux.Tanh (Double (X)));
-       end if;
-    end Tanh;
- 
- end Ada.Numerics.Generic_Elementary_Functions;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ngelfu.ads gcc-8.1.0/gcc/ada/a-ngelfu.ads
*** gcc-7.3.0/gcc/ada/a-ngelfu.ads	Fri Oct 16 13:14:24 2015
--- gcc-8.1.0/gcc/ada/a-ngelfu.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,170 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                ADA.NUMERICS.GENERIC_ELEMENTARY_FUNCTIONS                 --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2012-2015, Free Software Foundation, 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 Post aspects that have been added to the spec.       --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- generic
-    type Float_Type is digits <>;
- 
- package Ada.Numerics.Generic_Elementary_Functions is
-    pragma Pure;
- 
-    function Sqrt (X : Float_Type'Base) return Float_Type'Base with
-      Post => Sqrt'Result >= 0.0
-        and then (if X = 0.0 then Sqrt'Result = 0.0)
-        and then (if X = 1.0 then Sqrt'Result = 1.0)
- 
-        --  Finally if X is positive, the result of Sqrt is positive (because
-        --  the sqrt of numbers greater than 1 is greater than or equal to 1,
-        --  and the sqrt of numbers less than 1 is greater than the argument).
- 
-        --  This property is useful in particular for static analysis. The
-        --  property that X is positive is not expressed as (X > 0.0), as
-        --  the value X may be held in registers that have larger range and
-        --  precision on some architecture (for example, on x86 using x387
-        --  FPU, as opposed to SSE2). So, it might be possible for X to be
-        --  2.0**(-5000) or so, which could cause the number to compare as
-        --  greater than 0, but Sqrt would still return a zero result.
- 
-        --  Note: we use the comparison with Succ (0.0) here because this is
-        --  more amenable to CodePeer analysis than the use of 'Machine.
- 
-        and then (if X >= Float_Type'Succ (0.0) then Sqrt'Result > 0.0);
- 
-    function Log (X : Float_Type'Base) return Float_Type'Base with
-      Post => (if X = 1.0 then Log'Result = 0.0);
- 
-    function Log (X, Base : Float_Type'Base) return Float_Type'Base with
-      Post => (if X = 1.0 then Log'Result = 0.0);
- 
-    function Exp (X : Float_Type'Base) return Float_Type'Base with
-      Post => (if X = 0.0 then Exp'Result = 1.0);
- 
-    function "**" (Left, Right : Float_Type'Base) return Float_Type'Base with
-      Post => "**"'Result >= 0.0
-        and then (if Right = 0.0 then "**"'Result = 1.0)
-        and then (if Right = 1.0 then "**"'Result = Left)
-        and then (if Left  = 1.0 then "**"'Result = 1.0)
-        and then (if Left  = 0.0 then "**"'Result = 0.0);
- 
-    function Sin (X : Float_Type'Base) return Float_Type'Base with
-      Post => Sin'Result in -1.0 .. 1.0
-        and then (if X = 0.0 then Sin'Result = 0.0);
- 
-    function Sin (X, Cycle : Float_Type'Base) return Float_Type'Base with
-      Post => Sin'Result in -1.0 .. 1.0
-        and then (if X = 0.0 then Sin'Result = 0.0);
- 
-    function Cos (X : Float_Type'Base) return Float_Type'Base with
-      Post => Cos'Result in -1.0 .. 1.0
-        and then (if X = 0.0 then Cos'Result = 1.0);
- 
-    function Cos (X, Cycle : Float_Type'Base) return Float_Type'Base with
-      Post => Cos'Result in -1.0 .. 1.0
-        and then (if X = 0.0 then Cos'Result = 1.0);
- 
-    function Tan (X : Float_Type'Base) return Float_Type'Base with
-      Post => (if X = 0.0 then Tan'Result = 0.0);
- 
-    function Tan (X, Cycle : Float_Type'Base) return Float_Type'Base with
-      Post => (if X = 0.0 then Tan'Result = 0.0);
- 
-    function Cot (X : Float_Type'Base) return Float_Type'Base;
- 
-    function Cot (X, Cycle : Float_Type'Base) return Float_Type'Base;
- 
-    function Arcsin (X : Float_Type'Base) return Float_Type'Base with
-      Post => (if X = 0.0 then Arcsin'Result = 0.0);
- 
-    function Arcsin (X, Cycle : Float_Type'Base) return Float_Type'Base with
-      Post => (if X = 0.0 then Arcsin'Result = 0.0);
- 
-    function Arccos (X : Float_Type'Base) return Float_Type'Base with
-      Post => (if X = 1.0 then Arccos'Result = 0.0);
- 
-    function Arccos (X, Cycle : Float_Type'Base) return Float_Type'Base with
-      Post => (if X = 1.0 then Arccos'Result = 0.0);
- 
-    function Arctan
-      (Y : Float_Type'Base;
-       X : Float_Type'Base := 1.0) return Float_Type'Base
-    with
-      Post => (if X > 0.0 and then Y = 0.0 then Arctan'Result = 0.0);
- 
-    function Arctan
-      (Y     : Float_Type'Base;
-       X     : Float_Type'Base := 1.0;
-       Cycle : Float_Type'Base) return Float_Type'Base
-    with
-      Post => (if X > 0.0 and then Y = 0.0 then Arctan'Result = 0.0);
- 
-    function Arccot
-      (X   : Float_Type'Base;
-       Y   : Float_Type'Base := 1.0) return Float_Type'Base
-    with
-      Post => (if X > 0.0 and then Y = 0.0 then Arccot'Result = 0.0);
- 
-    function Arccot
-      (X     : Float_Type'Base;
-       Y     : Float_Type'Base := 1.0;
-       Cycle : Float_Type'Base) return Float_Type'Base
-    with
-      Post => (if X > 0.0 and then Y = 0.0 then Arccot'Result = 0.0);
- 
-    function Sinh (X : Float_Type'Base) return Float_Type'Base with
-      Post => (if X = 0.0 then Sinh'Result = 0.0);
- 
-    function Cosh (X : Float_Type'Base) return Float_Type'Base with
-      Post => Cosh'Result >= 1.0
-        and then (if X = 0.0 then Cosh'Result = 1.0);
- 
-    function Tanh (X : Float_Type'Base) return Float_Type'Base with
-      Post => Tanh'Result in -1.0 .. 1.0
-        and then (if X = 0.0 then Tanh'Result = 0.0);
- 
-    function Coth (X : Float_Type'Base) return Float_Type'Base with
-      Post => abs Coth'Result >= 1.0;
- 
-    function Arcsinh (X : Float_Type'Base) return Float_Type'Base with
-      Post => (if X = 0.0 then Arcsinh'Result = 0.0);
- 
-    function Arccosh (X : Float_Type'Base) return Float_Type'Base with
-      Post => Arccosh'Result >= 0.0
-        and then (if X = 1.0 then Arccosh'Result = 0.0);
- 
-    function Arctanh (X : Float_Type'Base) return Float_Type'Base with
-      Post => (if X = 0.0 then Arctanh'Result = 0.0);
- 
-    function Arccoth (X : Float_Type'Base) return Float_Type'Base;
- 
- end Ada.Numerics.Generic_Elementary_Functions;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ngrear.adb gcc-8.1.0/gcc/ada/a-ngrear.adb
*** gcc-7.3.0/gcc/ada/a-ngrear.adb	Wed Apr 27 13:05:41 2016
--- gcc-8.1.0/gcc/ada/a-ngrear.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,775 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                     ADA.NUMERICS.GENERIC_REAL_ARRAYS                     --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2006-2016, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 version of Generic_Real_Arrays avoids the use of BLAS and LAPACK. One
- --  reason for this is new Ada 2012 requirements that prohibit algorithms such
- --  as Strassen's algorithm, which may be used by some BLAS implementations. In
- --  addition, some platforms lacked suitable compilers to compile the reference
- --  BLAS/LAPACK implementation. Finally, on some platforms there are more
- --  floating point types than supported by BLAS/LAPACK.
- 
- with Ada.Containers.Generic_Anonymous_Array_Sort; use Ada.Containers;
- 
- with System; use System;
- with System.Generic_Array_Operations; use System.Generic_Array_Operations;
- 
- package body Ada.Numerics.Generic_Real_Arrays is
- 
-    package Ops renames System.Generic_Array_Operations;
- 
-    function Is_Non_Zero (X : Real'Base) return Boolean is (X /= 0.0);
- 
-    procedure Back_Substitute is new Ops.Back_Substitute
-      (Scalar        => Real'Base,
-       Matrix        => Real_Matrix,
-       Is_Non_Zero   => Is_Non_Zero);
- 
-    function Diagonal is new Ops.Diagonal
-      (Scalar       => Real'Base,
-       Vector       => Real_Vector,
-       Matrix       => Real_Matrix);
- 
-    procedure Forward_Eliminate is new Ops.Forward_Eliminate
-     (Scalar        => Real'Base,
-      Real          => Real'Base,
-      Matrix        => Real_Matrix,
-      Zero          => 0.0,
-      One           => 1.0);
- 
-    procedure Swap_Column is new Ops.Swap_Column
-     (Scalar        => Real'Base,
-      Matrix        => Real_Matrix);
- 
-    procedure Transpose is new  Ops.Transpose
-        (Scalar        => Real'Base,
-         Matrix        => Real_Matrix);
- 
-    function Is_Symmetric (A : Real_Matrix) return Boolean is
-      (Transpose (A) = A);
-    --  Return True iff A is symmetric, see RM G.3.1 (90).
- 
-    function Is_Tiny (Value, Compared_To : Real) return Boolean is
-      (abs Compared_To + 100.0 * abs (Value) = abs Compared_To);
-    --  Return True iff the Value is much smaller in magnitude than the least
-    --  significant digit of Compared_To.
- 
-    procedure Jacobi
-      (A               : Real_Matrix;
-       Values          : out Real_Vector;
-       Vectors         : out Real_Matrix;
-       Compute_Vectors : Boolean := True);
-    --  Perform Jacobi's eigensystem algorithm on real symmetric matrix A
- 
-    function Length is new Square_Matrix_Length (Real'Base, Real_Matrix);
-    --  Helper function that raises a Constraint_Error is the argument is
-    --  not a square matrix, and otherwise returns its length.
- 
-    procedure Rotate (X, Y : in out Real; Sin, Tau : Real);
-    --  Perform a Givens rotation
- 
-    procedure Sort_Eigensystem
-      (Values  : in out Real_Vector;
-       Vectors : in out Real_Matrix);
-    --  Sort Values and associated Vectors by decreasing absolute value
- 
-    procedure Swap (Left, Right : in out Real);
-    --  Exchange Left and Right
- 
-    function Sqrt is new Ops.Sqrt (Real);
-    --  Instant a generic square root implementation here, in order to avoid
-    --  instantiating a complete copy of Generic_Elementary_Functions.
-    --  Speed of the square root is not a big concern here.
- 
-    ------------
-    -- Rotate --
-    ------------
- 
-    procedure Rotate (X, Y : in out Real; Sin, Tau : Real) is
-       Old_X : constant Real := X;
-       Old_Y : constant Real := Y;
-    begin
-       X := Old_X - Sin * (Old_Y + Old_X * Tau);
-       Y := Old_Y + Sin * (Old_X - Old_Y * Tau);
-    end Rotate;
- 
-    ----------
-    -- Swap --
-    ----------
- 
-    procedure Swap (Left, Right : in out Real) is
-       Temp : constant Real := Left;
-    begin
-       Left := Right;
-       Right := Temp;
-    end Swap;
- 
-    --  Instantiating the following subprograms directly would lead to
-    --  name clashes, so use a local package.
- 
-    package Instantiations is
- 
-       function "+" is new
-         Vector_Elementwise_Operation
-           (X_Scalar      => Real'Base,
-            Result_Scalar => Real'Base,
-            X_Vector      => Real_Vector,
-            Result_Vector => Real_Vector,
-            Operation     => "+");
- 
-       function "+" is new
-         Matrix_Elementwise_Operation
-           (X_Scalar      => Real'Base,
-            Result_Scalar => Real'Base,
-            X_Matrix      => Real_Matrix,
-            Result_Matrix => Real_Matrix,
-            Operation     => "+");
- 
-       function "+" is new
-         Vector_Vector_Elementwise_Operation
-           (Left_Scalar   => Real'Base,
-            Right_Scalar  => Real'Base,
-            Result_Scalar => Real'Base,
-            Left_Vector   => Real_Vector,
-            Right_Vector  => Real_Vector,
-            Result_Vector => Real_Vector,
-            Operation     => "+");
- 
-       function "+" is new
-         Matrix_Matrix_Elementwise_Operation
-           (Left_Scalar   => Real'Base,
-            Right_Scalar  => Real'Base,
-            Result_Scalar => Real'Base,
-            Left_Matrix   => Real_Matrix,
-            Right_Matrix  => Real_Matrix,
-            Result_Matrix => Real_Matrix,
-            Operation     => "+");
- 
-       function "-" is new
-         Vector_Elementwise_Operation
-           (X_Scalar      => Real'Base,
-            Result_Scalar => Real'Base,
-            X_Vector      => Real_Vector,
-            Result_Vector => Real_Vector,
-            Operation     => "-");
- 
-       function "-" is new
-         Matrix_Elementwise_Operation
-           (X_Scalar      => Real'Base,
-            Result_Scalar => Real'Base,
-            X_Matrix      => Real_Matrix,
-            Result_Matrix => Real_Matrix,
-            Operation     => "-");
- 
-       function "-" is new
-         Vector_Vector_Elementwise_Operation
-           (Left_Scalar   => Real'Base,
-            Right_Scalar  => Real'Base,
-            Result_Scalar => Real'Base,
-            Left_Vector   => Real_Vector,
-            Right_Vector  => Real_Vector,
-            Result_Vector => Real_Vector,
-            Operation     => "-");
- 
-       function "-" is new
-         Matrix_Matrix_Elementwise_Operation
-           (Left_Scalar   => Real'Base,
-            Right_Scalar  => Real'Base,
-            Result_Scalar => Real'Base,
-            Left_Matrix   => Real_Matrix,
-            Right_Matrix  => Real_Matrix,
-            Result_Matrix => Real_Matrix,
-            Operation     => "-");
- 
-       function "*" is new
-         Scalar_Vector_Elementwise_Operation
-           (Left_Scalar   => Real'Base,
-            Right_Scalar  => Real'Base,
-            Result_Scalar => Real'Base,
-            Right_Vector  => Real_Vector,
-            Result_Vector => Real_Vector,
-            Operation     => "*");
- 
-       function "*" is new
-         Scalar_Matrix_Elementwise_Operation
-           (Left_Scalar   => Real'Base,
-            Right_Scalar  => Real'Base,
-            Result_Scalar => Real'Base,
-            Right_Matrix  => Real_Matrix,
-            Result_Matrix => Real_Matrix,
-            Operation     => "*");
- 
-       function "*" is new
-         Vector_Scalar_Elementwise_Operation
-           (Left_Scalar   => Real'Base,
-            Right_Scalar  => Real'Base,
-            Result_Scalar => Real'Base,
-            Left_Vector   => Real_Vector,
-            Result_Vector => Real_Vector,
-            Operation     => "*");
- 
-       function "*" is new
-         Matrix_Scalar_Elementwise_Operation
-           (Left_Scalar   => Real'Base,
-            Right_Scalar  => Real'Base,
-            Result_Scalar => Real'Base,
-            Left_Matrix   => Real_Matrix,
-            Result_Matrix => Real_Matrix,
-            Operation     => "*");
- 
-       function "*" is new
-         Outer_Product
-           (Left_Scalar   => Real'Base,
-            Right_Scalar  => Real'Base,
-            Result_Scalar => Real'Base,
-            Left_Vector   => Real_Vector,
-            Right_Vector  => Real_Vector,
-            Matrix        => Real_Matrix);
- 
-       function "*" is new
-         Inner_Product
-           (Left_Scalar   => Real'Base,
-            Right_Scalar  => Real'Base,
-            Result_Scalar => Real'Base,
-            Left_Vector   => Real_Vector,
-            Right_Vector  => Real_Vector,
-            Zero          => 0.0);
- 
-       function "*" is new
-         Matrix_Vector_Product
-           (Left_Scalar   => Real'Base,
-            Right_Scalar  => Real'Base,
-            Result_Scalar => Real'Base,
-            Matrix        => Real_Matrix,
-            Right_Vector  => Real_Vector,
-            Result_Vector => Real_Vector,
-            Zero          => 0.0);
- 
-       function "*" is new
-         Vector_Matrix_Product
-           (Left_Scalar   => Real'Base,
-            Right_Scalar  => Real'Base,
-            Result_Scalar => Real'Base,
-            Left_Vector   => Real_Vector,
-            Matrix        => Real_Matrix,
-            Result_Vector => Real_Vector,
-            Zero          => 0.0);
- 
-       function "*" is new
-         Matrix_Matrix_Product
-           (Left_Scalar   => Real'Base,
-            Right_Scalar  => Real'Base,
-            Result_Scalar => Real'Base,
-            Left_Matrix   => Real_Matrix,
-            Right_Matrix  => Real_Matrix,
-            Result_Matrix => Real_Matrix,
-            Zero          => 0.0);
- 
-       function "/" is new
-         Vector_Scalar_Elementwise_Operation
-           (Left_Scalar   => Real'Base,
-            Right_Scalar  => Real'Base,
-            Result_Scalar => Real'Base,
-            Left_Vector   => Real_Vector,
-            Result_Vector => Real_Vector,
-            Operation     => "/");
- 
-       function "/" is new
-         Matrix_Scalar_Elementwise_Operation
-           (Left_Scalar   => Real'Base,
-            Right_Scalar  => Real'Base,
-            Result_Scalar => Real'Base,
-            Left_Matrix   => Real_Matrix,
-            Result_Matrix => Real_Matrix,
-            Operation     => "/");
- 
-       function "abs" is new
-         L2_Norm
-           (X_Scalar      => Real'Base,
-            Result_Real   => Real'Base,
-            X_Vector      => Real_Vector,
-            "abs"         => "+");
-       --  While the L2_Norm by definition uses the absolute values of the
-       --  elements of X_Vector, for real values the subsequent squaring
-       --  makes this unnecessary, so we substitute the "+" identity function
-       --  instead.
- 
-       function "abs" is new
-         Vector_Elementwise_Operation
-           (X_Scalar      => Real'Base,
-            Result_Scalar => Real'Base,
-            X_Vector      => Real_Vector,
-            Result_Vector => Real_Vector,
-            Operation     => "abs");
- 
-       function "abs" is new
-         Matrix_Elementwise_Operation
-           (X_Scalar      => Real'Base,
-            Result_Scalar => Real'Base,
-            X_Matrix      => Real_Matrix,
-            Result_Matrix => Real_Matrix,
-            Operation     => "abs");
- 
-       function Solve is new
-         Matrix_Vector_Solution (Real'Base, 0.0, Real_Vector, Real_Matrix);
- 
-       function Solve is new
-         Matrix_Matrix_Solution (Real'Base, 0.0, Real_Matrix);
- 
-       function Unit_Matrix is new
-         Generic_Array_Operations.Unit_Matrix
-           (Scalar        => Real'Base,
-            Matrix        => Real_Matrix,
-            Zero          => 0.0,
-            One           => 1.0);
- 
-       function Unit_Vector is new
-         Generic_Array_Operations.Unit_Vector
-           (Scalar        => Real'Base,
-            Vector        => Real_Vector,
-            Zero          => 0.0,
-            One           => 1.0);
- 
-    end Instantiations;
- 
-    ---------
-    -- "+" --
-    ---------
- 
-    function "+" (Right : Real_Vector) return Real_Vector
-      renames Instantiations."+";
- 
-    function "+" (Right : Real_Matrix) return Real_Matrix
-      renames Instantiations."+";
- 
-    function "+" (Left, Right : Real_Vector) return Real_Vector
-      renames Instantiations."+";
- 
-    function "+" (Left, Right : Real_Matrix) return Real_Matrix
-      renames Instantiations."+";
- 
-    ---------
-    -- "-" --
-    ---------
- 
-    function "-" (Right : Real_Vector) return Real_Vector
-      renames Instantiations."-";
- 
-    function "-" (Right : Real_Matrix) return Real_Matrix
-      renames Instantiations."-";
- 
-    function "-" (Left, Right : Real_Vector) return Real_Vector
-      renames Instantiations."-";
- 
-    function "-" (Left, Right : Real_Matrix) return Real_Matrix
-       renames Instantiations."-";
- 
-    ---------
-    -- "*" --
-    ---------
- 
-    --  Scalar multiplication
- 
-    function "*" (Left : Real'Base; Right : Real_Vector) return Real_Vector
-      renames Instantiations."*";
- 
-    function "*" (Left : Real_Vector; Right : Real'Base) return Real_Vector
-      renames Instantiations."*";
- 
-    function "*" (Left : Real'Base; Right : Real_Matrix) return Real_Matrix
-      renames Instantiations."*";
- 
-    function "*" (Left : Real_Matrix; Right : Real'Base) return Real_Matrix
-      renames Instantiations."*";
- 
-    --  Vector multiplication
- 
-    function "*" (Left, Right : Real_Vector) return Real'Base
-      renames Instantiations."*";
- 
-    function "*" (Left, Right : Real_Vector) return Real_Matrix
-      renames Instantiations."*";
- 
-    function "*" (Left : Real_Vector; Right : Real_Matrix) return Real_Vector
-      renames Instantiations."*";
- 
-    function "*" (Left : Real_Matrix; Right : Real_Vector) return Real_Vector
-      renames Instantiations."*";
- 
-    --  Matrix Multiplication
- 
-    function "*" (Left, Right : Real_Matrix) return Real_Matrix
-      renames Instantiations."*";
- 
-    ---------
-    -- "/" --
-    ---------
- 
-    function "/" (Left : Real_Vector; Right : Real'Base) return Real_Vector
-      renames Instantiations."/";
- 
-    function "/" (Left : Real_Matrix; Right : Real'Base) return Real_Matrix
-      renames Instantiations."/";
- 
-    -----------
-    -- "abs" --
-    -----------
- 
-    function "abs" (Right : Real_Vector) return Real'Base
-      renames Instantiations."abs";
- 
-    function "abs" (Right : Real_Vector) return Real_Vector
-      renames Instantiations."abs";
- 
-    function "abs" (Right : Real_Matrix) return Real_Matrix
-      renames Instantiations."abs";
- 
-    -----------------
-    -- Determinant --
-    -----------------
- 
-    function Determinant (A : Real_Matrix) return Real'Base is
-       M : Real_Matrix := A;
-       B : Real_Matrix (A'Range (1), 1 .. 0);
-       R : Real'Base;
-    begin
-       Forward_Eliminate (M, B, R);
-       return R;
-    end Determinant;
- 
-    -----------------
-    -- Eigensystem --
-    -----------------
- 
-    procedure Eigensystem
-      (A       : Real_Matrix;
-       Values  : out Real_Vector;
-       Vectors : out Real_Matrix)
-    is
-    begin
-       Jacobi (A, Values, Vectors, Compute_Vectors => True);
-       Sort_Eigensystem (Values, Vectors);
-    end Eigensystem;
- 
-    -----------------
-    -- Eigenvalues --
-    -----------------
- 
-    function Eigenvalues (A : Real_Matrix) return Real_Vector is
-    begin
-       return Values : Real_Vector (A'Range (1)) do
-          declare
-             Vectors : Real_Matrix (1 .. 0, 1 .. 0);
-          begin
-             Jacobi (A, Values, Vectors, Compute_Vectors => False);
-             Sort_Eigensystem (Values, Vectors);
-          end;
-       end return;
-    end Eigenvalues;
- 
-    -------------
-    -- Inverse --
-    -------------
- 
-    function Inverse (A : Real_Matrix) return Real_Matrix is
-      (Solve (A, Unit_Matrix (Length (A))));
- 
-    ------------
-    -- Jacobi --
-    ------------
- 
-    procedure Jacobi
-      (A               : Real_Matrix;
-       Values          : out Real_Vector;
-       Vectors         : out Real_Matrix;
-       Compute_Vectors : Boolean := True)
-    is
-       --  This subprogram uses Carl Gustav Jacob Jacobi's iterative method
-       --  for computing eigenvalues and eigenvectors and is based on
-       --  Rutishauser's implementation.
- 
-       --  The given real symmetric matrix is transformed iteratively to
-       --  diagonal form through a sequence of appropriately chosen elementary
-       --  orthogonal transformations, called Jacobi rotations here.
- 
-       --  The Jacobi method produces a systematic decrease of the sum of the
-       --  squares of off-diagonal elements. Convergence to zero is quadratic,
-       --  both for this implementation, as for the classic method that doesn't
-       --  use row-wise scanning for pivot selection.
- 
-       --  The numerical stability and accuracy of Jacobi's method make it the
-       --  best choice here, even though for large matrices other methods will
-       --  be significantly more efficient in both time and space.
- 
-       --  While the eigensystem computations are absolutely foolproof for all
-       --  real symmetric matrices, in presence of invalid values, or similar
-       --  exceptional situations it might not. In such cases the results cannot
-       --  be trusted and Constraint_Error is raised.
- 
-       --  Note: this implementation needs temporary storage for 2 * N + N**2
-       --        values of type Real.
- 
-       Max_Iterations  : constant := 50;
-       N               : constant Natural := Length (A);
- 
-       subtype Square_Matrix is Real_Matrix (1 .. N, 1 .. N);
- 
-       --  In order to annihilate the M (Row, Col) element, the
-       --  rotation parameters Cos and Sin are computed as
-       --  follows:
- 
-       --    Theta = Cot (2.0 * Phi)
-       --          = (Diag (Col) - Diag (Row)) / (2.0 * M (Row, Col))
- 
-       --  Then Tan (Phi) as the smaller root (in modulus) of
- 
-       --    T**2 + 2 * T * Theta = 1 (or 0.5 / Theta, if Theta is large)
- 
-       function Compute_Tan (Theta : Real) return Real is
-          (Real'Copy_Sign (1.0 / (abs Theta + Sqrt (1.0 + Theta**2)), Theta));
- 
-       function Compute_Tan (P, H : Real) return Real is
-          (if Is_Tiny (P, Compared_To => H) then P / H
-           else Compute_Tan (Theta => H / (2.0 * P)));
- 
-       function Sum_Strict_Upper (M : Square_Matrix) return Real;
-       --  Return the sum of all elements in the strict upper triangle of M
- 
-       ----------------------
-       -- Sum_Strict_Upper --
-       ----------------------
- 
-       function Sum_Strict_Upper (M : Square_Matrix) return Real is
-          Sum : Real := 0.0;
- 
-       begin
-          for Row in 1 .. N - 1 loop
-             for Col in Row + 1 .. N loop
-                Sum := Sum + abs M (Row, Col);
-             end loop;
-          end loop;
- 
-          return Sum;
-       end Sum_Strict_Upper;
- 
-       M         : Square_Matrix := A; --  Work space for solving eigensystem
-       Threshold : Real;
-       Sum       : Real;
-       Diag      : Real_Vector (1 .. N);
-       Diag_Adj  : Real_Vector (1 .. N);
- 
-       --  The vector Diag_Adj indicates the amount of change in each value,
-       --  while Diag tracks the value itself and Values holds the values as
-       --  they were at the beginning. As the changes typically will be small
-       --  compared to the absolute value of Diag, at the end of each iteration
-       --  Diag is computed as Diag + Diag_Adj thus avoiding accumulating
-       --  rounding errors. This technique is due to Rutishauser.
- 
-    begin
-       if Compute_Vectors
-          and then (Vectors'Length (1) /= N or else Vectors'Length (2) /= N)
-       then
-          raise Constraint_Error with "incompatible matrix dimensions";
- 
-       elsif Values'Length /= N then
-          raise Constraint_Error with "incompatible vector length";
- 
-       elsif not Is_Symmetric (M) then
-          raise Constraint_Error with "matrix not symmetric";
-       end if;
- 
-       --  Note: Only the locally declared matrix M and vectors (Diag, Diag_Adj)
-       --        have lower bound equal to 1. The Vectors matrix may have
-       --        different bounds, so take care indexing elements. Assignment
-       --        as a whole is fine as sliding is automatic in that case.
- 
-       Vectors := (if not Compute_Vectors then (1 .. 0 => (1 .. 0 => 0.0))
-                   else Unit_Matrix (Vectors'Length (1), Vectors'Length (2)));
-       Values := Diagonal (M);
- 
-       Sweep : for Iteration in 1 .. Max_Iterations loop
- 
-          --  The first three iterations, perform rotation for any non-zero
-          --  element. After this, rotate only for those that are not much
-          --  smaller than the average off-diagnal element. After the fifth
-          --  iteration, additionally zero out off-diagonal elements that are
-          --  very small compared to elements on the diagonal with the same
-          --  column or row index.
- 
-          Sum := Sum_Strict_Upper (M);
- 
-          exit Sweep when Sum = 0.0;
- 
-          Threshold := (if Iteration < 4 then 0.2 * Sum / Real (N**2) else 0.0);
- 
-          --  Iterate over all off-diagonal elements, rotating any that have
-          --  an absolute value that exceeds the threshold.
- 
-          Diag := Values;
-          Diag_Adj := (others => 0.0); -- Accumulates adjustments to Diag
- 
-          for Row in 1 .. N - 1 loop
-             for Col in Row + 1 .. N loop
- 
-                --  If, before the rotation M (Row, Col) is tiny compared to
-                --  Diag (Row) and Diag (Col), rotation is skipped. This is
-                --  meaningful, as it produces no larger error than would be
-                --  produced anyhow if the rotation had been performed.
-                --  Suppress this optimization in the first four sweeps, so
-                --  that this procedure can be used for computing eigenvectors
-                --  of perturbed diagonal matrices.
- 
-                if Iteration > 4
-                   and then Is_Tiny (M (Row, Col), Compared_To => Diag (Row))
-                   and then Is_Tiny (M (Row, Col), Compared_To => Diag (Col))
-                then
-                   M (Row, Col) := 0.0;
- 
-                elsif abs M (Row, Col) > Threshold then
-                   Perform_Rotation : declare
-                      Tan : constant Real := Compute_Tan (M (Row, Col),
-                                                Diag (Col) - Diag (Row));
-                      Cos : constant Real := 1.0 / Sqrt (1.0 + Tan**2);
-                      Sin : constant Real := Tan * Cos;
-                      Tau : constant Real := Sin / (1.0 + Cos);
-                      Adj : constant Real := Tan * M (Row, Col);
- 
-                   begin
-                      Diag_Adj (Row) := Diag_Adj (Row) - Adj;
-                      Diag_Adj (Col) := Diag_Adj (Col) + Adj;
-                      Diag (Row) := Diag (Row) - Adj;
-                      Diag (Col) := Diag (Col) + Adj;
- 
-                      M (Row, Col) := 0.0;
- 
-                      for J in 1 .. Row - 1 loop        --  1 <= J < Row
-                         Rotate (M (J, Row), M (J, Col), Sin, Tau);
-                      end loop;
- 
-                      for J in Row + 1 .. Col - 1 loop  --  Row < J < Col
-                         Rotate (M (Row, J), M (J, Col), Sin, Tau);
-                      end loop;
- 
-                      for J in Col + 1 .. N loop        --  Col < J <= N
-                         Rotate (M (Row, J), M (Col, J), Sin, Tau);
-                      end loop;
- 
-                      for J in Vectors'Range (1) loop
-                         Rotate (Vectors (J, Row - 1 + Vectors'First (2)),
-                                 Vectors (J, Col - 1 + Vectors'First (2)),
-                                 Sin, Tau);
-                      end loop;
-                   end Perform_Rotation;
-                end if;
-             end loop;
-          end loop;
- 
-          Values := Values + Diag_Adj;
-       end loop Sweep;
- 
-       --  All normal matrices with valid values should converge perfectly.
- 
-       if Sum /= 0.0 then
-          raise Constraint_Error with "eigensystem solution does not converge";
-       end if;
-    end Jacobi;
- 
-    -----------
-    -- Solve --
-    -----------
- 
-    function Solve (A : Real_Matrix; X : Real_Vector) return Real_Vector
-       renames Instantiations.Solve;
- 
-    function Solve (A, X : Real_Matrix) return Real_Matrix
-       renames Instantiations.Solve;
- 
-    ----------------------
-    -- Sort_Eigensystem --
-    ----------------------
- 
-    procedure Sort_Eigensystem
-      (Values  : in out Real_Vector;
-       Vectors : in out Real_Matrix)
-    is
-       procedure Swap (Left, Right : Integer);
-       --  Swap Values (Left) with Values (Right), and also swap the
-       --  corresponding eigenvectors. Note that lowerbounds may differ.
- 
-       function Less (Left, Right : Integer) return Boolean is
-         (Values (Left) > Values (Right));
-       --  Sort by decreasing eigenvalue, see RM G.3.1 (76).
- 
-       procedure Sort is new Generic_Anonymous_Array_Sort (Integer);
-       --  Sorts eigenvalues and eigenvectors by decreasing value
- 
-       procedure Swap (Left, Right : Integer) is
-       begin
-          Swap (Values (Left), Values (Right));
-          Swap_Column (Vectors, Left - Values'First + Vectors'First (2),
-                                Right - Values'First + Vectors'First (2));
-       end Swap;
- 
-    begin
-       Sort (Values'First, Values'Last);
-    end Sort_Eigensystem;
- 
-    ---------------
-    -- Transpose --
-    ---------------
- 
-    function Transpose (X : Real_Matrix) return Real_Matrix is
-    begin
-       return R : Real_Matrix (X'Range (2), X'Range (1)) do
-          Transpose (X, R);
-       end return;
-    end Transpose;
- 
-    -----------------
-    -- Unit_Matrix --
-    -----------------
- 
-    function Unit_Matrix
-      (Order   : Positive;
-       First_1 : Integer := 1;
-       First_2 : Integer := 1) return Real_Matrix
-      renames Instantiations.Unit_Matrix;
- 
-    -----------------
-    -- Unit_Vector --
-    -----------------
- 
-    function Unit_Vector
-      (Index : Integer;
-       Order : Positive;
-       First : Integer := 1) return Real_Vector
-      renames Instantiations.Unit_Vector;
- 
- end Ada.Numerics.Generic_Real_Arrays;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ngrear.ads gcc-8.1.0/gcc/ada/a-ngrear.ads
*** gcc-7.3.0/gcc/ada/a-ngrear.ads	Wed Mar  7 14:53:39 2012
--- gcc-8.1.0/gcc/ada/a-ngrear.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,142 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                     ADA.NUMERICS.GENERIC_REAL_ARRAYS                     --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2009-2012, Free Software Foundation, 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- generic
-    type Real is digits <>;
- package Ada.Numerics.Generic_Real_Arrays is
-    pragma Pure (Generic_Real_Arrays);
- 
-    --  Types
- 
-    type Real_Vector is array (Integer range <>) of Real'Base;
-    type Real_Matrix is array (Integer range <>, Integer range <>) of Real'Base;
- 
-    --  Subprograms for Real_Vector types
- 
-    --  Real_Vector arithmetic operations
- 
-    function "+"   (Right : Real_Vector)       return Real_Vector;
-    function "-"   (Right : Real_Vector)       return Real_Vector;
-    function "abs" (Right : Real_Vector)       return Real_Vector;
- 
-    function "+"   (Left, Right : Real_Vector) return Real_Vector;
-    function "-"   (Left, Right : Real_Vector) return Real_Vector;
- 
-    function "*"   (Left, Right : Real_Vector) return Real'Base;
- 
-    function "abs" (Right : Real_Vector)       return Real'Base;
- 
-    --  Real_Vector scaling operations
- 
-    function "*" (Left : Real'Base;   Right : Real_Vector) return Real_Vector;
-    function "*" (Left : Real_Vector; Right : Real'Base)   return Real_Vector;
-    function "/" (Left : Real_Vector; Right : Real'Base)   return Real_Vector;
- 
-    --  Other Real_Vector operations
- 
-    function Unit_Vector
-      (Index : Integer;
-       Order : Positive;
-       First : Integer := 1) return Real_Vector;
- 
-    --  Subprograms for Real_Matrix types
- 
-    --  Real_Matrix arithmetic operations
- 
-    function "+"       (Right : Real_Matrix) return Real_Matrix;
-    function "-"       (Right : Real_Matrix) return Real_Matrix;
-    function "abs"     (Right : Real_Matrix) return Real_Matrix;
-    function Transpose (X     : Real_Matrix) return Real_Matrix;
- 
-    function "+" (Left, Right : Real_Matrix) return Real_Matrix;
-    function "-" (Left, Right : Real_Matrix) return Real_Matrix;
-    function "*" (Left, Right : Real_Matrix) return Real_Matrix;
- 
-    function "*" (Left, Right : Real_Vector) return Real_Matrix;
- 
-    function "*" (Left : Real_Vector; Right : Real_Matrix) return Real_Vector;
-    function "*" (Left : Real_Matrix; Right : Real_Vector) return Real_Vector;
- 
-    --  Real_Matrix scaling operations
- 
-    function "*" (Left : Real'Base;   Right : Real_Matrix) return Real_Matrix;
-    function "*" (Left : Real_Matrix; Right : Real'Base)   return Real_Matrix;
-    function "/" (Left : Real_Matrix; Right : Real'Base)   return Real_Matrix;
- 
-    --  Real_Matrix inversion and related operations
- 
-    function Solve (A : Real_Matrix; X : Real_Vector) return Real_Vector;
-    function Solve (A, X : Real_Matrix) return Real_Matrix;
-    function Inverse (A : Real_Matrix) return Real_Matrix;
-    function Determinant (A : Real_Matrix) return Real'Base;
- 
-    --  Eigenvalues and vectors of a real symmetric matrix
- 
-    function Eigenvalues (A : Real_Matrix) return Real_Vector;
- 
-    procedure Eigensystem
-      (A       : Real_Matrix;
-       Values  : out Real_Vector;
-       Vectors : out Real_Matrix);
- 
-    --  Other Real_Matrix operations
- 
-    function Unit_Matrix
-      (Order   : Positive;
-       First_1 : Integer := 1;
-       First_2 : Integer := 1) return Real_Matrix;
- 
- private
-    --  The following operations are either relatively simple compared to the
-    --  expense of returning unconstrained arrays, or are just function wrappers
-    --  calling procedures implementing the actual operation. By having the
-    --  front end inline these, the expense of the unconstrained returns
-    --  can be avoided.
- 
-    --  Note: We use an extended return statement in their implementation to
-    --  allow the frontend to inline these functions.
- 
-    pragma Inline ("+");
-    pragma Inline ("-");
-    pragma Inline ("*");
-    pragma Inline ("/");
-    pragma Inline ("abs");
-    pragma Inline (Eigenvalues);
-    pragma Inline (Inverse);
-    pragma Inline (Solve);
-    pragma Inline (Transpose);
-    pragma Inline (Unit_Matrix);
-    pragma Inline (Unit_Vector);
- end Ada.Numerics.Generic_Real_Arrays;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-nlcefu.ads gcc-8.1.0/gcc/ada/a-nlcefu.ads
*** gcc-7.3.0/gcc/ada/a-nlcefu.ads	Wed Jan  2 11:13:39 2013
--- gcc-8.1.0/gcc/ada/a-nlcefu.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,22 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --              ADA.NUMERICS.LONG_COMPLEX.ELEMENTARY_FUNCTIONS              --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Numerics.Long_Complex_Types;
- with Ada.Numerics.Generic_Complex_Elementary_Functions;
- 
- package Ada.Numerics.Long_Complex_Elementary_Functions is
-   new Ada.Numerics.Generic_Complex_Elementary_Functions
-                                           (Ada.Numerics.Long_Complex_Types);
- pragma Pure (Ada.Numerics.Long_Complex_Elementary_Functions);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-nlcoar.ads gcc-8.1.0/gcc/ada/a-nlcoar.ads
*** gcc-7.3.0/gcc/ada/a-nlcoar.ads	Fri Apr  6 09:23:23 2007
--- gcc-8.1.0/gcc/ada/a-nlcoar.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,23 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                     ADA.NUMERICS.LONG_COMPLEX_ARRAYS                     --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Numerics.Generic_Complex_Arrays;
- with Ada.Numerics.Long_Real_Arrays;
- with Ada.Numerics.Long_Complex_Types;
- 
- package Ada.Numerics.Long_Complex_Arrays is new
-    Ada.Numerics.Generic_Complex_Arrays (Long_Real_Arrays, Long_Complex_Types);
- 
- pragma Pure (Long_Complex_Arrays);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-nlcoty.ads gcc-8.1.0/gcc/ada/a-nlcoty.ads
*** gcc-7.3.0/gcc/ada/a-nlcoty.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-nlcoty.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,21 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --       A D A . N U M E R I C S . L O N G _ C O M P L E X _ T Y P E S      --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Numerics.Generic_Complex_Types;
- 
- package Ada.Numerics.Long_Complex_Types is
-    new Ada.Numerics.Generic_Complex_Types (Long_Float);
- 
- pragma Pure (Long_Complex_Types);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-nlelfu.ads gcc-8.1.0/gcc/ada/a-nlelfu.ads
*** gcc-7.3.0/gcc/ada/a-nlelfu.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-nlelfu.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,21 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                  ADA.NUMERICS.LONG_ELEMENTARY_FUNCTIONS                  --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Numerics.Generic_Elementary_Functions;
- 
- package Ada.Numerics.Long_Elementary_Functions is
-   new Ada.Numerics.Generic_Elementary_Functions (Long_Float);
- 
- pragma Pure (Long_Elementary_Functions);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-nllcar.ads gcc-8.1.0/gcc/ada/a-nllcar.ads
*** gcc-7.3.0/gcc/ada/a-nllcar.ads	Fri Apr  6 09:23:23 2007
--- gcc-8.1.0/gcc/ada/a-nllcar.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,24 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                   ADA.NUMERICS.LONG_LONG_COMPLEX_ARRAYS                  --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Numerics.Generic_Complex_Arrays;
- with Ada.Numerics.Long_Long_Real_Arrays;
- with Ada.Numerics.Long_Long_Complex_Types;
- 
- package Ada.Numerics.Long_Long_Complex_Arrays is
-    new Ada.Numerics.Generic_Complex_Arrays (Long_Long_Real_Arrays,
-                                             Long_Long_Complex_Types);
- 
- pragma Pure (Long_Long_Complex_Arrays);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-nllcef.ads gcc-8.1.0/gcc/ada/a-nllcef.ads
*** gcc-7.3.0/gcc/ada/a-nllcef.ads	Wed Jan  2 11:13:39 2013
--- gcc-8.1.0/gcc/ada/a-nllcef.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,22 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --           ADA.NUMERICS.LONG_LONG_COMPLEX.ELEMENTARY_FUNCTIONS            --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Numerics.Long_Long_Complex_Types;
- with Ada.Numerics.Generic_Complex_Elementary_Functions;
- 
- package Ada.Numerics.Long_Long_Complex_Elementary_Functions is
-   new Ada.Numerics.Generic_Complex_Elementary_Functions
-                                    (Ada.Numerics.Long_Long_Complex_Types);
- pragma Pure (Ada.Numerics.Long_Long_Complex_Elementary_Functions);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-nllcty.ads gcc-8.1.0/gcc/ada/a-nllcty.ads
*** gcc-7.3.0/gcc/ada/a-nllcty.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-nllcty.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,21 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- -- A D A . N U M E R I C S . L O N G _ L O N G _ C O M P L E X _ T Y P E S  --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Numerics.Generic_Complex_Types;
- 
- package Ada.Numerics.Long_Long_Complex_Types is
-    new Ada.Numerics.Generic_Complex_Types (Long_Long_Float);
- 
- pragma Pure (Long_Long_Complex_Types);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-nllefu.ads gcc-8.1.0/gcc/ada/a-nllefu.ads
*** gcc-7.3.0/gcc/ada/a-nllefu.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-nllefu.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,21 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --               ADA.NUMERICS.LONG_LONG_ELEMENTARY_FUNCTIONS                --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Numerics.Generic_Elementary_Functions;
- 
- package Ada.Numerics.Long_Long_Elementary_Functions is
-   new Ada.Numerics.Generic_Elementary_Functions (Long_Long_Float);
- 
- pragma Pure (Long_Long_Elementary_Functions);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-nllrar.ads gcc-8.1.0/gcc/ada/a-nllrar.ads
*** gcc-7.3.0/gcc/ada/a-nllrar.ads	Mon Mar 24 10:57:32 2008
--- gcc-8.1.0/gcc/ada/a-nllrar.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,21 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --    A D A . N U M E R I C S . L O N G _ L O N G _R E A L _ A R R A Y S    --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Numerics.Generic_Real_Arrays;
- 
- package Ada.Numerics.Long_Long_Real_Arrays is
-    new Ada.Numerics.Generic_Real_Arrays (Long_Long_Float);
- 
- pragma Pure (Long_Long_Real_Arrays);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-nlrear.ads gcc-8.1.0/gcc/ada/a-nlrear.ads
*** gcc-7.3.0/gcc/ada/a-nlrear.ads	Mon Mar 24 10:57:32 2008
--- gcc-8.1.0/gcc/ada/a-nlrear.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,21 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --        A D A . N U M E R I C S . L O N G _ R E A L _ A R R A Y S         --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Numerics.Generic_Real_Arrays;
- 
- package Ada.Numerics.Long_Real_Arrays is
-    new Ada.Numerics.Generic_Real_Arrays (Long_Float);
- 
- pragma Pure (Long_Real_Arrays);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-nscefu.ads gcc-8.1.0/gcc/ada/a-nscefu.ads
*** gcc-7.3.0/gcc/ada/a-nscefu.ads	Wed Jan  2 11:13:39 2013
--- gcc-8.1.0/gcc/ada/a-nscefu.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,22 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --              ADA.NUMERICS.SHORT.COMPLEX.ELEMENTARY_FUNCTIONS             --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Numerics.Short_Complex_Types;
- with Ada.Numerics.Generic_Complex_Elementary_Functions;
- 
- package Ada.Numerics.Short_Complex_Elementary_Functions is
-   new Ada.Numerics.Generic_Complex_Elementary_Functions
-                                           (Ada.Numerics.Short_Complex_Types);
- pragma Pure (Ada.Numerics.Short_Complex_Elementary_Functions);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-nscoty.ads gcc-8.1.0/gcc/ada/a-nscoty.ads
*** gcc-7.3.0/gcc/ada/a-nscoty.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-nscoty.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,21 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --      A D A . N U M E R I C S . S H O R T _ C O M P L E X _ T Y P E S     --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Numerics.Generic_Complex_Types;
- 
- package Ada.Numerics.Short_Complex_Types is
-    new Ada.Numerics.Generic_Complex_Types (Short_Float);
- 
- pragma Pure (Short_Complex_Types);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-nselfu.ads gcc-8.1.0/gcc/ada/a-nselfu.ads
*** gcc-7.3.0/gcc/ada/a-nselfu.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-nselfu.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,21 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                 ADA.NUMERICS.SHORT_ELEMENTARY_FUNCTIONS                  --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Numerics.Generic_Elementary_Functions;
- 
- package Ada.Numerics.Short_Elementary_Functions is
-   new Ada.Numerics.Generic_Elementary_Functions (Short_Float);
- 
- pragma Pure (Short_Elementary_Functions);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-nucoar.ads gcc-8.1.0/gcc/ada/a-nucoar.ads
*** gcc-7.3.0/gcc/ada/a-nucoar.ads	Mon Mar 24 10:57:32 2008
--- gcc-8.1.0/gcc/ada/a-nucoar.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,23 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --          A D A . N U M E R I C S . C O M P L E X _ A R R A Y S           --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Numerics.Generic_Complex_Arrays;
- with Ada.Numerics.Real_Arrays;
- with Ada.Numerics.Complex_Types;
- 
- package Ada.Numerics.Complex_Arrays is
-    new Ada.Numerics.Generic_Complex_Arrays (Real_Arrays, Complex_Types);
- 
- pragma Pure (Complex_Arrays);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-nucoty.ads gcc-8.1.0/gcc/ada/a-nucoty.ads
*** gcc-7.3.0/gcc/ada/a-nucoty.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-nucoty.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,21 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --            A D A . N U M E R I C S . C O M P L E X _ T Y P E S           --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Numerics.Generic_Complex_Types;
- 
- package Ada.Numerics.Complex_Types is
-    new Ada.Numerics.Generic_Complex_Types (Float);
- 
- pragma Pure (Complex_Types);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-nudira.adb gcc-8.1.0/gcc/ada/a-nudira.adb
*** gcc-7.3.0/gcc/ada/a-nudira.adb	Mon Apr 18 10:41:18 2016
--- gcc-8.1.0/gcc/ada/a-nudira.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,96 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --         A D A . N U M E R I C S . D I S C R E T E _ R A N D O M          --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 Ada.Numerics.Discrete_Random with
-   SPARK_Mode => Off
- is
- 
-    package SRN renames System.Random_Numbers;
-    use SRN;
- 
-    -----------
-    -- Image --
-    -----------
- 
-    function Image (Of_State : State) return String is
-    begin
-       return Image (SRN.State (Of_State));
-    end Image;
- 
-    ------------
-    -- Random --
-    ------------
- 
-    function Random (Gen : Generator) return Result_Subtype is
-       function Random is
-         new SRN.Random_Discrete (Result_Subtype, Result_Subtype'First);
-    begin
-       return Random (SRN.Generator (Gen));
-    end Random;
- 
-    -----------
-    -- Reset --
-    -----------
- 
-    procedure Reset (Gen : Generator) is
-    begin
-       Reset (SRN.Generator (Gen));
-    end Reset;
- 
-    procedure Reset (Gen : Generator; Initiator : Integer) is
-    begin
-       Reset (SRN.Generator (Gen), Initiator);
-    end Reset;
- 
-    procedure Reset (Gen : Generator; From_State : State) is
-    begin
-       Reset (SRN.Generator (Gen), SRN.State (From_State));
-    end Reset;
- 
-    ----------
-    -- Save --
-    ----------
- 
-    procedure Save (Gen : Generator; To_State   : out State) is
-    begin
-       Save (SRN.Generator (Gen), SRN.State (To_State));
-    end Save;
- 
-    -----------
-    -- Value --
-    -----------
- 
-    function Value (Coded_State : String) return State is
-    begin
-       return State (SRN.State'(Value (Coded_State)));
-    end Value;
- 
- end Ada.Numerics.Discrete_Random;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-nudira.ads gcc-8.1.0/gcc/ada/a-nudira.ads
*** gcc-7.3.0/gcc/ada/a-nudira.ads	Mon Apr 18 10:41:18 2016
--- gcc-8.1.0/gcc/ada/a-nudira.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,75 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --         A D A . N U M E R I C S . D I S C R E T E _ R A N D O M          --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2015, Free Software Foundation, 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Note: the implementation used in this package is a version of the
- --  Mersenne Twister. See s-rannum.adb for details and references.
- 
- with System.Random_Numbers;
- 
- generic
-    type Result_Subtype is (<>);
- 
- package Ada.Numerics.Discrete_Random with
-   SPARK_Mode => Off
- is
- 
-    --  Basic facilities
- 
-    type Generator is limited private;
- 
-    function Random (Gen : Generator) return Result_Subtype;
- 
-    procedure Reset (Gen : Generator; Initiator : Integer);
-    procedure Reset (Gen : Generator);
- 
-    --  Advanced facilities
- 
-    type State is private;
- 
-    procedure Save  (Gen : Generator; To_State   : out State);
-    procedure Reset (Gen : Generator; From_State : State);
- 
-    Max_Image_Width : constant := System.Random_Numbers.Max_Image_Width;
- 
-    function Image (Of_State    : State)  return String;
-    function Value (Coded_State : String) return State;
- 
- private
- 
-    type Generator is new System.Random_Numbers.Generator;
- 
-    type State is new System.Random_Numbers.State;
- 
- end Ada.Numerics.Discrete_Random;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-nuelfu.ads gcc-8.1.0/gcc/ada/a-nuelfu.ads
*** gcc-7.3.0/gcc/ada/a-nuelfu.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-nuelfu.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,21 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --     A D A . N U M E R I C S . E L E M E N T A R Y _ F U N C T I O N S    --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Numerics.Generic_Elementary_Functions;
- 
- package Ada.Numerics.Elementary_Functions is
-   new Ada.Numerics.Generic_Elementary_Functions (Float);
- 
- pragma Pure (Elementary_Functions);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-nuflra.adb gcc-8.1.0/gcc/ada/a-nuflra.adb
*** gcc-7.3.0/gcc/ada/a-nuflra.adb	Mon Apr 18 10:41:18 2016
--- gcc-8.1.0/gcc/ada/a-nuflra.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,104 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --            A D A . N U M E R I C S . F L O A T _ R A N D O M             --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 Ada.Numerics.Float_Random with
-   SPARK_Mode => Off
- is
- 
-    package SRN renames System.Random_Numbers;
-    use SRN;
- 
-    -----------
-    -- Image --
-    -----------
- 
-    function Image (Of_State : State) return String is
-    begin
-       return Image (SRN.State (Of_State));
-    end Image;
- 
-    ------------
-    -- Random --
-    ------------
- 
-    function Random (Gen : Generator) return Uniformly_Distributed is
-    begin
-       return Random (SRN.Generator (Gen));
-    end Random;
- 
-    -----------
-    -- Reset --
-    -----------
- 
-    --  Version that works from calendar
- 
-    procedure Reset (Gen : Generator) is
-    begin
-       Reset (SRN.Generator (Gen));
-    end Reset;
- 
-    --  Version that works from given initiator value
- 
-    procedure Reset (Gen : Generator; Initiator : Integer) is
-    begin
-       Reset (SRN.Generator (Gen), Initiator);
-    end Reset;
- 
-    --  Version that works from specific saved state
- 
-    procedure Reset (Gen : Generator; From_State : State) is
-    begin
-       Reset (SRN.Generator (Gen), From_State);
-    end Reset;
- 
-    ----------
-    -- Save --
-    ----------
- 
-    procedure Save  (Gen : Generator; To_State : out State) is
-    begin
-       Save (SRN.Generator (Gen), To_State);
-    end Save;
- 
-    -----------
-    -- Value --
-    -----------
- 
-    function Value (Coded_State : String) return State is
-       G : SRN.Generator;
-       S : SRN.State;
-    begin
-       Reset (G, Coded_State);
-       Save (G, S);
-       return State (S);
-    end Value;
- 
- end Ada.Numerics.Float_Random;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-nuflra.ads gcc-8.1.0/gcc/ada/a-nuflra.ads
*** gcc-7.3.0/gcc/ada/a-nuflra.ads	Mon Apr 18 10:41:18 2016
--- gcc-8.1.0/gcc/ada/a-nuflra.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,74 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --            A D A . N U M E R I C S . F L O A T _ R A N D O M             --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2015, Free Software Foundation, 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Note: the implementation used in this package is a version of the
- --  Mersenne Twister. See s-rannum.adb for details and references.
- 
- with System.Random_Numbers;
- 
- package Ada.Numerics.Float_Random with
-   SPARK_Mode => Off
- is
- 
-    --  Basic facilities
- 
-    type Generator is limited private;
- 
-    subtype Uniformly_Distributed is Float range 0.0 .. 1.0;
- 
-    function Random (Gen : Generator) return Uniformly_Distributed;
- 
-    procedure Reset (Gen : Generator);
-    procedure Reset (Gen : Generator; Initiator : Integer);
- 
-    --  Advanced facilities
- 
-    type State is private;
- 
-    procedure Save  (Gen : Generator; To_State   : out State);
-    procedure Reset (Gen : Generator; From_State : State);
- 
-    Max_Image_Width : constant := System.Random_Numbers.Max_Image_Width;
- 
-    function Image (Of_State    : State)  return String;
-    function Value (Coded_State : String) return State;
- 
- private
- 
-    type Generator is new System.Random_Numbers.Generator;
- 
-    type State is new System.Random_Numbers.State;
- 
- end Ada.Numerics.Float_Random;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-numaux-darwin.adb gcc-8.1.0/gcc/ada/a-numaux-darwin.adb
*** gcc-7.3.0/gcc/ada/a-numaux-darwin.adb	Fri Aug  1 09:48:28 2014
--- gcc-8.1.0/gcc/ada/a-numaux-darwin.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,183 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                     A D A . N U M E R I C S . A U X                      --
- --                                                                          --
- --                                 B o d y                                  --
- --                          (Apple OS X Version)                            --
- --                                                                          --
- --          Copyright (C) 1998-2014, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 Ada.Numerics.Aux is
- 
-    -----------------------
-    -- Local subprograms --
-    -----------------------
- 
-    procedure Reduce (X : in out Double; Q : out Natural);
-    --  Implements reduction of X by Pi/2. Q is the quadrant of the final
-    --  result in the range 0 .. 3. The absolute value of X is at most Pi/4.
- 
-    --  The following three functions implement Chebishev approximations
-    --  of the trigonometric functions in their reduced domain.
-    --  These approximations have been computed using Maple.
- 
-    function Sine_Approx (X : Double) return Double;
-    function Cosine_Approx (X : Double) return Double;
- 
-    pragma Inline (Reduce);
-    pragma Inline (Sine_Approx);
-    pragma Inline (Cosine_Approx);
- 
-    function Cosine_Approx (X : Double) return Double is
-       XX : constant Double := X * X;
-    begin
-       return (((((16#8.DC57FBD05F640#E-08 * XX
-               - 16#4.9F7D00BF25D80#E-06) * XX
-               + 16#1.A019F7FDEFCC2#E-04) * XX
-               - 16#5.B05B058F18B20#E-03) * XX
-               + 16#A.AAAAAAAA73FA8#E-02) * XX
-               - 16#7.FFFFFFFFFFDE4#E-01) * XX
-               - 16#3.655E64869ECCE#E-14 + 1.0;
-    end Cosine_Approx;
- 
-    function Sine_Approx (X : Double) return Double is
-       XX : constant Double := X * X;
-    begin
-       return (((((16#A.EA2D4ABE41808#E-09 * XX
-               - 16#6.B974C10F9D078#E-07) * XX
-               + 16#2.E3BC673425B0E#E-05) * XX
-               - 16#D.00D00CCA7AF00#E-04) * XX
-               + 16#2.222222221B190#E-02) * XX
-               - 16#2.AAAAAAAAAAA44#E-01) * (XX * X) + X;
-    end Sine_Approx;
- 
-    ------------
-    -- Reduce --
-    ------------
- 
-    procedure Reduce (X : in out Double; Q : out Natural) is
-       Half_Pi     : constant := Pi / 2.0;
-       Two_Over_Pi : constant := 2.0 / Pi;
- 
-       HM : constant := Integer'Min (Double'Machine_Mantissa / 2, Natural'Size);
-       M  : constant Double := 0.5 + 2.0**(1 - HM); -- Splitting constant
-       P1 : constant Double := Double'Leading_Part (Half_Pi, HM);
-       P2 : constant Double := Double'Leading_Part (Half_Pi - P1, HM);
-       P3 : constant Double := Double'Leading_Part (Half_Pi - P1 - P2, HM);
-       P4 : constant Double := Double'Leading_Part (Half_Pi - P1 - P2 - P3, HM);
-       P5 : constant Double := Double'Leading_Part (Half_Pi - P1 - P2 - P3
-                                                                  - P4, HM);
-       P6 : constant Double := Double'Model (Half_Pi - P1 - P2 - P3 - P4 - P5);
-       K  : Double;
- 
-    begin
-       --  For X < 2.0**HM, all products below are computed exactly.
-       --  Due to cancellation effects all subtractions are exact as well.
-       --  As no double extended floating-point number has more than 75
-       --  zeros after the binary point, the result will be the correctly
-       --  rounded result of X - K * (Pi / 2.0).
- 
-       K := X * Two_Over_Pi;
-       while abs K >= 2.0 ** HM loop
-          K := K * M - (K * M - K);
-          X :=
-            (((((X - K * P1) - K * P2) - K * P3) - K * P4) - K * P5) - K * P6;
-          K := X * Two_Over_Pi;
-       end loop;
- 
-       --  If K is not a number (because X was not finite) raise exception
- 
-       if K /= K then
-          raise Constraint_Error;
-       end if;
- 
-       K := Double'Rounding (K);
-       Q := Integer (K) mod 4;
-       X := (((((X - K * P1) - K * P2) - K * P3)
-                   - K * P4) - K * P5) - K * P6;
-    end Reduce;
- 
-    ---------
-    -- Cos --
-    ---------
- 
-    function Cos (X : Double) return Double is
-       Reduced_X : Double := abs X;
-       Quadrant  : Natural range 0 .. 3;
- 
-    begin
-       if Reduced_X > Pi / 4.0 then
-          Reduce (Reduced_X, Quadrant);
- 
-          case Quadrant is
-             when 0 =>
-                return Cosine_Approx (Reduced_X);
- 
-             when 1 =>
-                return Sine_Approx (-Reduced_X);
- 
-             when 2 =>
-                return -Cosine_Approx (Reduced_X);
- 
-             when 3 =>
-                return Sine_Approx (Reduced_X);
-          end case;
-       end if;
- 
-       return Cosine_Approx (Reduced_X);
-    end Cos;
- 
-    ---------
-    -- Sin --
-    ---------
- 
-    function Sin (X : Double) return Double is
-       Reduced_X : Double := X;
-       Quadrant  : Natural range 0 .. 3;
- 
-    begin
-       if abs X > Pi / 4.0 then
-          Reduce (Reduced_X, Quadrant);
- 
-          case Quadrant is
-             when 0 =>
-                return Sine_Approx (Reduced_X);
- 
-             when 1 =>
-                return Cosine_Approx (Reduced_X);
- 
-             when 2 =>
-                return Sine_Approx (-Reduced_X);
- 
-             when 3 =>
-                return -Cosine_Approx (Reduced_X);
-          end case;
-       end if;
- 
-       return Sine_Approx (Reduced_X);
-    end Sin;
- 
- end Ada.Numerics.Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-numaux-darwin.ads gcc-8.1.0/gcc/ada/a-numaux-darwin.ads
*** gcc-7.3.0/gcc/ada/a-numaux-darwin.ads	Fri Aug  1 09:48:28 2014
--- gcc-8.1.0/gcc/ada/a-numaux-darwin.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,103 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                     A D A . N U M E R I C S . A U X                      --
- --                                                                          --
- --                                 S p e c                                  --
- --                          (Apple OS X Version)                            --
- --                                                                          --
- --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 version is for use on OS X. It uses the normal Unix math functions,
- --  except for sine/cosine which have been implemented directly in Ada to get
- --  the required accuracy.
- 
- package Ada.Numerics.Aux is
-    pragma Pure;
- 
-    pragma Linker_Options ("-lm");
- 
-    type Double is digits 15;
-    --  Type Double is the type used to call the C routines
- 
-    --  The following functions have been implemented in Ada, since
-    --  the OS X math library didn't meet accuracy requirements for
-    --  argument reduction. The implementation here has been tailored
-    --  to match Ada strict mode Numerics requirements while maintaining
-    --  maximum efficiency.
-    function Sin (X : Double) return Double;
-    pragma Inline (Sin);
- 
-    function Cos (X : Double) return Double;
-    pragma Inline (Cos);
- 
-    --  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 Tan (X : Double) return Double;
-    pragma Import (C, Tan, "tan");
-    pragma Pure_Function (Tan);
- 
-    function Exp (X : Double) return Double;
-    pragma Import (C, Exp, "exp");
-    pragma Pure_Function (Exp);
- 
-    function Sqrt (X : Double) return Double;
-    pragma Import (C, Sqrt, "sqrt");
-    pragma Pure_Function (Sqrt);
- 
-    function Log (X : Double) return Double;
-    pragma Import (C, Log, "log");
-    pragma Pure_Function (Log);
- 
-    function Acos (X : Double) return Double;
-    pragma Import (C, Acos, "acos");
-    pragma Pure_Function (Acos);
- 
-    function Asin (X : Double) return Double;
-    pragma Import (C, Asin, "asin");
-    pragma Pure_Function (Asin);
- 
-    function Atan (X : Double) return Double;
-    pragma Import (C, Atan, "atan");
-    pragma Pure_Function (Atan);
- 
-    function Sinh (X : Double) return Double;
-    pragma Import (C, Sinh, "sinh");
-    pragma Pure_Function (Sinh);
- 
-    function Cosh (X : Double) return Double;
-    pragma Import (C, Cosh, "cosh");
-    pragma Pure_Function (Cosh);
- 
-    function Tanh (X : Double) return Double;
-    pragma Import (C, Tanh, "tanh");
-    pragma Pure_Function (Tanh);
- 
-    function Pow (X, Y : Double) return Double;
-    pragma Import (C, Pow, "pow");
-    pragma Pure_Function (Pow);
- 
- end Ada.Numerics.Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-numaux-libc-x86.ads gcc-8.1.0/gcc/ada/a-numaux-libc-x86.ads
*** gcc-7.3.0/gcc/ada/a-numaux-libc-x86.ads	Fri Aug  1 09:48:28 2014
--- gcc-8.1.0/gcc/ada/a-numaux-libc-x86.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,97 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                     A D A . N U M E R I C S . A U X                      --
- --                                                                          --
- --                                 S p e c                                  --
- --                       (C Library Version for x86)                        --
- --                                                                          --
- --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 version is for the x86 using the 80-bit x86 long double format
- 
- package Ada.Numerics.Aux is
-    pragma Pure;
- 
-    pragma Linker_Options ("-lm");
- 
-    type Double is digits 18;
- 
-    --  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 : Double) return Double;
-    pragma Import (C, Sin, "sinl");
-    pragma Pure_Function (Sin);
- 
-    function Cos (X : Double) return Double;
-    pragma Import (C, Cos, "cosl");
-    pragma Pure_Function (Cos);
- 
-    function Tan (X : Double) return Double;
-    pragma Import (C, Tan, "tanl");
-    pragma Pure_Function (Tan);
- 
-    function Exp (X : Double) return Double;
-    pragma Import (C, Exp, "expl");
-    pragma Pure_Function (Exp);
- 
-    function Sqrt (X : Double) return Double;
-    pragma Import (C, Sqrt, "sqrtl");
-    pragma Pure_Function (Sqrt);
- 
-    function Log (X : Double) return Double;
-    pragma Import (C, Log, "logl");
-    pragma Pure_Function (Log);
- 
-    function Acos (X : Double) return Double;
-    pragma Import (C, Acos, "acosl");
-    pragma Pure_Function (Acos);
- 
-    function Asin (X : Double) return Double;
-    pragma Import (C, Asin, "asinl");
-    pragma Pure_Function (Asin);
- 
-    function Atan (X : Double) return Double;
-    pragma Import (C, Atan, "atanl");
-    pragma Pure_Function (Atan);
- 
-    function Sinh (X : Double) return Double;
-    pragma Import (C, Sinh, "sinhl");
-    pragma Pure_Function (Sinh);
- 
-    function Cosh (X : Double) return Double;
-    pragma Import (C, Cosh, "coshl");
-    pragma Pure_Function (Cosh);
- 
-    function Tanh (X : Double) return Double;
-    pragma Import (C, Tanh, "tanhl");
-    pragma Pure_Function (Tanh);
- 
-    function Pow (X, Y : Double) return Double;
-    pragma Import (C, Pow, "powl");
-    pragma Pure_Function (Pow);
- 
- end Ada.Numerics.Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-numaux-vxworks.ads gcc-8.1.0/gcc/ada/a-numaux-vxworks.ads
*** gcc-7.3.0/gcc/ada/a-numaux-vxworks.ads	Fri Aug  1 09:48:28 2014
--- gcc-8.1.0/gcc/ada/a-numaux-vxworks.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,97 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                     A D A . N U M E R I C S . A U X                      --
- --                                                                          --
- --                                 S p e c                                  --
- --                       (C Library Version, VxWorks)                       --
- --                                                                          --
- --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Version for use on VxWorks (where we have no libm.a library), so the pragma
- --  Linker_Options ("-lm") is omitted in this version.
- 
- package Ada.Numerics.Aux is
-    pragma Pure;
- 
-    type Double is digits 15;
-    --  Type Double is the type used to call the C routines
- 
-    --  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 : Double) return Double;
-    pragma Import (C, Sin, "sin");
-    pragma Pure_Function (Sin);
- 
-    function Cos (X : Double) return Double;
-    pragma Import (C, Cos, "cos");
-    pragma Pure_Function (Cos);
- 
-    function Tan (X : Double) return Double;
-    pragma Import (C, Tan, "tan");
-    pragma Pure_Function (Tan);
- 
-    function Exp (X : Double) return Double;
-    pragma Import (C, Exp, "exp");
-    pragma Pure_Function (Exp);
- 
-    function Sqrt (X : Double) return Double;
-    pragma Import (C, Sqrt, "sqrt");
-    pragma Pure_Function (Sqrt);
- 
-    function Log (X : Double) return Double;
-    pragma Import (C, Log, "log");
-    pragma Pure_Function (Log);
- 
-    function Acos (X : Double) return Double;
-    pragma Import (C, Acos, "acos");
-    pragma Pure_Function (Acos);
- 
-    function Asin (X : Double) return Double;
-    pragma Import (C, Asin, "asin");
-    pragma Pure_Function (Asin);
- 
-    function Atan (X : Double) return Double;
-    pragma Import (C, Atan, "atan");
-    pragma Pure_Function (Atan);
- 
-    function Sinh (X : Double) return Double;
-    pragma Import (C, Sinh, "sinh");
-    pragma Pure_Function (Sinh);
- 
-    function Cosh (X : Double) return Double;
-    pragma Import (C, Cosh, "cosh");
-    pragma Pure_Function (Cosh);
- 
-    function Tanh (X : Double) return Double;
-    pragma Import (C, Tanh, "tanh");
-    pragma Pure_Function (Tanh);
- 
-    function Pow (X, Y : Double) return Double;
-    pragma Import (C, Pow, "pow");
-    pragma Pure_Function (Pow);
- 
- end Ada.Numerics.Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-numaux-x86.adb gcc-8.1.0/gcc/ada/a-numaux-x86.adb
*** gcc-7.3.0/gcc/ada/a-numaux-x86.adb	Fri Jan 13 10:19:19 2017
--- gcc-8.1.0/gcc/ada/a-numaux-x86.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,570 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                     A D A . N U M E R I C S . A U X                      --
- --                                                                          --
- --                                 B o d y                                  --
- --                        (Machine Version for x86)                         --
- --                                                                          --
- --          Copyright (C) 1998-2016, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 System.Machine_Code; use System.Machine_Code;
- 
- package body Ada.Numerics.Aux is
- 
-    NL : constant String := ASCII.LF & ASCII.HT;
- 
-    -----------------------
-    -- Local subprograms --
-    -----------------------
- 
-    function Is_Nan (X : Double) return Boolean;
-    --  Return True iff X is a IEEE NaN value
- 
-    function Logarithmic_Pow (X, Y : Double) return Double;
-    --  Implementation of X**Y using Exp and Log functions (binary base)
-    --  to calculate the exponentiation. This is used by Pow for values
-    --  for values of Y in the open interval (-0.25, 0.25)
- 
-    procedure Reduce (X : in out Double; Q : out Natural);
-    --  Implements reduction of X by Pi/2. Q is the quadrant of the final
-    --  result in the range 0 .. 3. The absolute value of X is at most Pi.
- 
-    pragma Inline (Is_Nan);
-    pragma Inline (Reduce);
- 
-    --------------------------------
-    -- Basic Elementary Functions --
-    --------------------------------
- 
-    --  This section implements a few elementary functions that are used to
-    --  build the more complex ones. This ordering enables better inlining.
- 
-    ----------
-    -- Atan --
-    ----------
- 
-    function Atan (X : Double) return Double is
-       Result  : Double;
- 
-    begin
-       Asm (Template =>
-            "fld1" & NL
-          & "fpatan",
-          Outputs  => Double'Asm_Output ("=t", Result),
-          Inputs   => Double'Asm_Input  ("0", X));
- 
-       --  The result value is NaN iff input was invalid
- 
-       if not (Result = Result) then
-          raise Argument_Error;
-       end if;
- 
-       return Result;
-    end Atan;
- 
-    ---------
-    -- Exp --
-    ---------
- 
-    function Exp (X : Double) return Double is
-       Result : Double;
-    begin
-       Asm (Template =>
-          "fldl2e               " & NL
-        & "fmulp   %%st, %%st(1)" & NL -- X * log2 (E)
-        & "fld     %%st(0)      " & NL
-        & "frndint              " & NL -- Integer (X * Log2 (E))
-        & "fsubr   %%st, %%st(1)" & NL -- Fraction (X * Log2 (E))
-        & "fxch                 " & NL
-        & "f2xm1                " & NL -- 2**(...) - 1
-        & "fld1                 " & NL
-        & "faddp   %%st, %%st(1)" & NL -- 2**(Fraction (X * Log2 (E)))
-        & "fscale               " & NL -- E ** X
-        & "fstp    %%st(1)      ",
-          Outputs  => Double'Asm_Output ("=t", Result),
-          Inputs   => Double'Asm_Input  ("0", X));
-       return Result;
-    end Exp;
- 
-    ------------
-    -- Is_Nan --
-    ------------
- 
-    function Is_Nan (X : Double) return Boolean is
-    begin
-       --  The IEEE NaN values are the only ones that do not equal themselves
- 
-       return not (X = X);
-    end Is_Nan;
- 
-    ---------
-    -- Log --
-    ---------
- 
-    function Log (X : Double) return Double is
-       Result : Double;
- 
-    begin
-       Asm (Template =>
-          "fldln2               " & NL
-        & "fxch                 " & NL
-        & "fyl2x                " & NL,
-          Outputs  => Double'Asm_Output ("=t", Result),
-          Inputs   => Double'Asm_Input  ("0", X));
-       return Result;
-    end Log;
- 
-    ------------
-    -- Reduce --
-    ------------
- 
-    procedure Reduce (X : in out Double; Q : out Natural) is
-       Half_Pi     : constant := Pi / 2.0;
-       Two_Over_Pi : constant := 2.0 / Pi;
- 
-       HM : constant := Integer'Min (Double'Machine_Mantissa / 2, Natural'Size);
-       M  : constant Double := 0.5 + 2.0**(1 - HM); -- Splitting constant
-       P1 : constant Double := Double'Leading_Part (Half_Pi, HM);
-       P2 : constant Double := Double'Leading_Part (Half_Pi - P1, HM);
-       P3 : constant Double := Double'Leading_Part (Half_Pi - P1 - P2, HM);
-       P4 : constant Double := Double'Leading_Part (Half_Pi - P1 - P2 - P3, HM);
-       P5 : constant Double := Double'Leading_Part (Half_Pi - P1 - P2 - P3
-                                                                  - P4, HM);
-       P6 : constant Double := Double'Model (Half_Pi - P1 - P2 - P3 - P4 - P5);
-       K  : Double := X * Two_Over_Pi;
-    begin
-       --  For X < 2.0**32, all products below are computed exactly.
-       --  Due to cancellation effects all subtractions are exact as well.
-       --  As no double extended floating-point number has more than 75
-       --  zeros after the binary point, the result will be the correctly
-       --  rounded result of X - K * (Pi / 2.0).
- 
-       while abs K >= 2.0**HM loop
-          K := K * M - (K * M - K);
-          X := (((((X - K * P1) - K * P2) - K * P3)
-                      - K * P4) - K * P5) - K * P6;
-          K := X * Two_Over_Pi;
-       end loop;
- 
-       if K /= K then
- 
-          --  K is not a number, because X was not finite
- 
-          raise Constraint_Error;
-       end if;
- 
-       K := Double'Rounding (K);
-       Q := Integer (K) mod 4;
-       X := (((((X - K * P1) - K * P2) - K * P3)
-                   - K * P4) - K * P5) - K * P6;
-    end Reduce;
- 
-    ----------
-    -- Sqrt --
-    ----------
- 
-    function Sqrt (X : Double) return Double is
-       Result  : Double;
- 
-    begin
-       if X < 0.0 then
-          raise Argument_Error;
-       end if;
- 
-       Asm (Template => "fsqrt",
-            Outputs  => Double'Asm_Output ("=t", Result),
-            Inputs   => Double'Asm_Input  ("0", X));
- 
-       return Result;
-    end Sqrt;
- 
-    --------------------------------
-    -- Other Elementary Functions --
-    --------------------------------
- 
-    --  These are built using the previously implemented basic functions
- 
-    ----------
-    -- Acos --
-    ----------
- 
-    function Acos (X : Double) return Double is
-       Result  : Double;
- 
-    begin
-       Result := 2.0 * Atan (Sqrt ((1.0 - X) / (1.0 + X)));
- 
-       --  The result value is NaN iff input was invalid
- 
-       if Is_Nan (Result) then
-          raise Argument_Error;
-       end if;
- 
-       return Result;
-    end Acos;
- 
-    ----------
-    -- Asin --
-    ----------
- 
-    function Asin (X : Double) return Double is
-       Result  : Double;
- 
-    begin
-       Result := Atan (X / Sqrt ((1.0 - X) * (1.0 + X)));
- 
-       --  The result value is NaN iff input was invalid
- 
-       if Is_Nan (Result) then
-          raise Argument_Error;
-       end if;
- 
-       return Result;
-    end Asin;
- 
-    ---------
-    -- Cos --
-    ---------
- 
-    function Cos (X : Double) return Double is
-       Reduced_X : Double := abs X;
-       Result    : Double;
-       Quadrant  : Natural range 0 .. 3;
- 
-    begin
-       if Reduced_X > Pi / 4.0 then
-          Reduce (Reduced_X, Quadrant);
- 
-          case Quadrant is
-             when 0 =>
-                Asm (Template  => "fcos",
-                   Outputs  => Double'Asm_Output ("=t", Result),
-                   Inputs   => Double'Asm_Input  ("0", Reduced_X));
- 
-             when 1 =>
-                Asm (Template  => "fsin",
-                   Outputs  => Double'Asm_Output ("=t", Result),
-                   Inputs   => Double'Asm_Input  ("0", -Reduced_X));
- 
-             when 2 =>
-                Asm (Template  => "fcos ; fchs",
-                   Outputs  => Double'Asm_Output ("=t", Result),
-                   Inputs   => Double'Asm_Input  ("0", Reduced_X));
- 
-             when 3 =>
-                Asm (Template  => "fsin",
-                   Outputs  => Double'Asm_Output ("=t", Result),
-                   Inputs   => Double'Asm_Input  ("0", Reduced_X));
-          end case;
- 
-       else
-          Asm (Template  => "fcos",
-               Outputs  => Double'Asm_Output ("=t", Result),
-               Inputs   => Double'Asm_Input  ("0", Reduced_X));
-       end if;
- 
-       return Result;
-    end Cos;
- 
-    ---------------------
-    -- Logarithmic_Pow --
-    ---------------------
- 
-    function Logarithmic_Pow (X, Y : Double) return Double is
-       Result  : Double;
-    begin
-       Asm (Template => ""             --  X                  : Y
-        & "fyl2x                " & NL --  Y * Log2 (X)
-        & "fld     %%st(0)      " & NL --  Y * Log2 (X)       : Y * Log2 (X)
-        & "frndint              " & NL --  Int (...)          : Y * Log2 (X)
-        & "fsubr   %%st, %%st(1)" & NL --  Int (...)          : Fract (...)
-        & "fxch                 " & NL --  Fract (...)        : Int (...)
-        & "f2xm1                " & NL --  2**Fract (...) - 1 : Int (...)
-        & "fld1                 " & NL --  1 : 2**Fract (...) - 1 : Int (...)
-        & "faddp   %%st, %%st(1)" & NL --  2**Fract (...)     : Int (...)
-        & "fscale               ",     --  2**(Fract (...) + Int (...))
-          Outputs  => Double'Asm_Output ("=t", Result),
-          Inputs   =>
-            (Double'Asm_Input  ("0", X),
-             Double'Asm_Input  ("u", Y)));
-       return Result;
-    end Logarithmic_Pow;
- 
-    ---------
-    -- Pow --
-    ---------
- 
-    function Pow (X, Y : Double) return Double is
-       type Mantissa_Type is mod 2**Double'Machine_Mantissa;
-       --  Modular type that can hold all bits of the mantissa of Double
- 
-       --  For negative exponents, do divide at the end of the processing
- 
-       Negative_Y : constant Boolean := Y < 0.0;
-       Abs_Y      : constant Double := abs Y;
- 
-       --  During this function the following invariant is kept:
-       --  X ** (abs Y) = Base**(Exp_High + Exp_Mid + Exp_Low) * Factor
- 
-       Base : Double := X;
- 
-       Exp_High : Double := Double'Floor (Abs_Y);
-       Exp_Mid  : Double;
-       Exp_Low  : Double;
-       Exp_Int  : Mantissa_Type;
- 
-       Factor : Double := 1.0;
- 
-    begin
-       --  Select algorithm for calculating Pow (integer cases fall through)
- 
-       if Exp_High >= 2.0**Double'Machine_Mantissa then
- 
-          --  In case of Y that is IEEE infinity, just raise constraint error
- 
-          if Exp_High > Double'Safe_Last then
-             raise Constraint_Error;
-          end if;
- 
-          --  Large values of Y are even integers and will stay integer
-          --  after division by two.
- 
-          loop
-             --  Exp_Mid and Exp_Low are zero, so
-             --    X**(abs Y) = Base ** Exp_High = (Base**2) ** (Exp_High / 2)
- 
-             Exp_High := Exp_High / 2.0;
-             Base := Base * Base;
-             exit when Exp_High < 2.0**Double'Machine_Mantissa;
-          end loop;
- 
-       elsif Exp_High /= Abs_Y then
-          Exp_Low := Abs_Y - Exp_High;
-          Factor := 1.0;
- 
-          if Exp_Low /= 0.0 then
- 
-             --  Exp_Low now is in interval (0.0, 1.0)
-             --  Exp_Mid := Double'Floor (Exp_Low * 4.0) / 4.0;
- 
-             Exp_Mid := 0.0;
-             Exp_Low := Exp_Low - Exp_Mid;
- 
-             if Exp_Low >= 0.5 then
-                Factor := Sqrt (X);
-                Exp_Low := Exp_Low - 0.5;  -- exact
- 
-                if Exp_Low >= 0.25 then
-                   Factor := Factor * Sqrt (Factor);
-                   Exp_Low := Exp_Low - 0.25; --  exact
-                end if;
- 
-             elsif Exp_Low >= 0.25 then
-                Factor := Sqrt (Sqrt (X));
-                Exp_Low := Exp_Low - 0.25; --  exact
-             end if;
- 
-             --  Exp_Low now is in interval (0.0, 0.25)
- 
-             --  This means it is safe to call Logarithmic_Pow
-             --  for the remaining part.
- 
-             Factor := Factor * Logarithmic_Pow (X, Exp_Low);
-          end if;
- 
-       elsif X = 0.0 then
-          return 0.0;
-       end if;
- 
-       --  Exp_High is non-zero integer smaller than 2**Double'Machine_Mantissa
- 
-       Exp_Int := Mantissa_Type (Exp_High);
- 
-       --  Standard way for processing integer powers > 0
- 
-       while Exp_Int > 1 loop
-          if (Exp_Int and 1) = 1 then
- 
-             --  Base**Y = Base**(Exp_Int - 1) * Exp_Int for Exp_Int > 0
- 
-             Factor := Factor * Base;
-          end if;
- 
-          --  Exp_Int is even and Exp_Int > 0, so
-          --    Base**Y = (Base**2)**(Exp_Int / 2)
- 
-          Base := Base * Base;
-          Exp_Int := Exp_Int / 2;
-       end loop;
- 
-       --  Exp_Int = 1 or Exp_Int = 0
- 
-       if Exp_Int = 1 then
-          Factor := Base * Factor;
-       end if;
- 
-       if Negative_Y then
-          Factor := 1.0 / Factor;
-       end if;
- 
-       return Factor;
-    end Pow;
- 
-    ---------
-    -- Sin --
-    ---------
- 
-    function Sin (X : Double) return Double is
-       Reduced_X : Double := X;
-       Result    : Double;
-       Quadrant  : Natural range 0 .. 3;
- 
-    begin
-       if abs X > Pi / 4.0 then
-          Reduce (Reduced_X, Quadrant);
- 
-          case Quadrant is
-             when 0 =>
-                Asm (Template  => "fsin",
-                   Outputs  => Double'Asm_Output ("=t", Result),
-                   Inputs   => Double'Asm_Input  ("0", Reduced_X));
- 
-             when 1 =>
-                Asm (Template  => "fcos",
-                   Outputs  => Double'Asm_Output ("=t", Result),
-                   Inputs   => Double'Asm_Input  ("0", Reduced_X));
- 
-             when 2 =>
-                Asm (Template  => "fsin",
-                   Outputs  => Double'Asm_Output ("=t", Result),
-                   Inputs   => Double'Asm_Input  ("0", -Reduced_X));
- 
-             when 3 =>
-                Asm (Template  => "fcos ; fchs",
-                   Outputs  => Double'Asm_Output ("=t", Result),
-                   Inputs   => Double'Asm_Input  ("0", Reduced_X));
-          end case;
- 
-       else
-          Asm (Template  => "fsin",
-             Outputs  => Double'Asm_Output ("=t", Result),
-             Inputs   => Double'Asm_Input  ("0", Reduced_X));
-       end if;
- 
-       return Result;
-    end Sin;
- 
-    ---------
-    -- Tan --
-    ---------
- 
-    function Tan (X : Double) return Double is
-       Reduced_X : Double := X;
-       Result    : Double;
-       Quadrant  : Natural range 0 .. 3;
- 
-    begin
-       if abs X > Pi / 4.0 then
-          Reduce (Reduced_X, Quadrant);
- 
-          if Quadrant mod 2 = 0 then
-             Asm (Template  => "fptan" & NL
-                             & "ffree   %%st(0)"  & NL
-                             & "fincstp",
-                   Outputs  => Double'Asm_Output ("=t", Result),
-                   Inputs   => Double'Asm_Input  ("0", Reduced_X));
-          else
-             Asm (Template  => "fsincos" & NL
-                             & "fdivp   %%st, %%st(1)" & NL
-                             & "fchs",
-                   Outputs  => Double'Asm_Output ("=t", Result),
-                   Inputs   => Double'Asm_Input  ("0", Reduced_X));
-          end if;
- 
-       else
-          Asm (Template  =>
-                "fptan                 " & NL
-              & "ffree   %%st(0)      " & NL
-              & "fincstp              ",
-                Outputs  => Double'Asm_Output ("=t", Result),
-                Inputs   => Double'Asm_Input  ("0", Reduced_X));
-       end if;
- 
-       return Result;
-    end Tan;
- 
-    ----------
-    -- Sinh --
-    ----------
- 
-    function Sinh (X : Double) return Double is
-    begin
-       --  Mathematically Sinh (x) is defined to be (Exp (X) - Exp (-X)) / 2.0
- 
-       if abs X < 25.0 then
-          return (Exp (X) - Exp (-X)) / 2.0;
-       else
-          return Exp (X) / 2.0;
-       end if;
-    end Sinh;
- 
-    ----------
-    -- Cosh --
-    ----------
- 
-    function Cosh (X : Double) return Double is
-    begin
-       --  Mathematically Cosh (X) is defined to be (Exp (X) + Exp (-X)) / 2.0
- 
-       if abs X < 22.0 then
-          return (Exp (X) + Exp (-X)) / 2.0;
-       else
-          return Exp (X) / 2.0;
-       end if;
-    end Cosh;
- 
-    ----------
-    -- Tanh --
-    ----------
- 
-    function Tanh (X : Double) return Double is
-    begin
-       --  Return the Hyperbolic Tangent of x
- 
-       --                                    x    -x
-       --                                   e  - e        Sinh (X)
-       --       Tanh (X) is defined to be -----------   = --------
-       --                                    x    -x      Cosh (X)
-       --                                   e  + e
- 
-       if abs X > 23.0 then
-          return Double'Copy_Sign (1.0, X);
-       end if;
- 
-       return 1.0 / (1.0 + Exp (-(2.0 * X))) - 1.0 / (1.0 + Exp (2.0 * X));
-    end Tanh;
- 
- end Ada.Numerics.Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-numaux-x86.ads gcc-8.1.0/gcc/ada/a-numaux-x86.ads
*** gcc-7.3.0/gcc/ada/a-numaux-x86.ads	Fri Aug  1 09:48:28 2014
--- gcc-8.1.0/gcc/ada/a-numaux-x86.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,75 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                     A D A . N U M E R I C S . A U X                      --
- --                                                                          --
- --                                 S p e c                                  --
- --                        (Machine Version for x86)                         --
- --                                                                          --
- --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Version for the x86, using 64-bit IEEE format with inline asm statements
- 
- package Ada.Numerics.Aux is
-    pragma Pure;
- 
-    type Double is new Long_Long_Float;
- 
-    function Sin (X : Double) return Double;
- 
-    function Cos (X : Double) return Double;
- 
-    function Tan (X : Double) return Double;
- 
-    function Exp (X : Double) return Double;
- 
-    function Sqrt (X : Double) return Double;
- 
-    function Log (X : Double) return Double;
- 
-    function Atan (X : Double) return Double;
- 
-    function Acos (X : Double) return Double;
- 
-    function Asin (X : Double) return Double;
- 
-    function Sinh (X : Double) return Double;
- 
-    function Cosh (X : Double) return Double;
- 
-    function Tanh (X : Double) return Double;
- 
-    function Pow (X, Y : Double) return Double;
- 
- private
-    pragma Inline (Atan);
-    pragma Inline (Cos);
-    pragma Inline (Tan);
-    pragma Inline (Exp);
-    pragma Inline (Log);
-    pragma Inline (Sin);
-    pragma Inline (Sqrt);
- 
- end Ada.Numerics.Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-numaux.ads gcc-8.1.0/gcc/ada/a-numaux.ads
*** gcc-7.3.0/gcc/ada/a-numaux.ads	Fri Aug  1 09:48:28 2014
--- gcc-8.1.0/gcc/ada/a-numaux.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,111 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                     A D A . N U M E R I C S . A U X                      --
- --                                                                          --
- --                                 S p e c                                  --
- --                       (C Library Version, non-x86)                       --
- --                                                                          --
- --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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. The C library version interfaces with the routines
- --  in the C mathematical library, and is thus quite portable, although it may
- --  not necessarily meet the requirements for accuracy in the numerics annex.
- --  One advantage of using this package is that it will interface directly to
- --  hardware instructions, such as the those provided on the Intel x86.
- 
- --  This version here is for use with normal Unix math functions. Alternative
- --  versions are provided for special situations:
- 
- --    a-numaux-darwin    For OS/X (special handling of sin/cos for accuracy)
- --    a-numaux-libc-x86  For the x86, using 80-bit long double format
- --    a-numaux-x86       For the x86, using 64-bit IEEE (inline asm statements)
- --    a-numaux-vxworks   For use on VxWorks (where we have no libm.a library)
- 
- package Ada.Numerics.Aux is
-    pragma Pure;
- 
-    pragma Linker_Options ("-lm");
- 
-    type Double is digits 15;
-    --  Type Double is the type used to call the C routines
- 
-    --  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 : Double) return Double;
-    pragma Import (C, Sin, "sin");
-    pragma Pure_Function (Sin);
- 
-    function Cos (X : Double) return Double;
-    pragma Import (C, Cos, "cos");
-    pragma Pure_Function (Cos);
- 
-    function Tan (X : Double) return Double;
-    pragma Import (C, Tan, "tan");
-    pragma Pure_Function (Tan);
- 
-    function Exp (X : Double) return Double;
-    pragma Import (C, Exp, "exp");
-    pragma Pure_Function (Exp);
- 
-    function Sqrt (X : Double) return Double;
-    pragma Import (C, Sqrt, "sqrt");
-    pragma Pure_Function (Sqrt);
- 
-    function Log (X : Double) return Double;
-    pragma Import (C, Log, "log");
-    pragma Pure_Function (Log);
- 
-    function Acos (X : Double) return Double;
-    pragma Import (C, Acos, "acos");
-    pragma Pure_Function (Acos);
- 
-    function Asin (X : Double) return Double;
-    pragma Import (C, Asin, "asin");
-    pragma Pure_Function (Asin);
- 
-    function Atan (X : Double) return Double;
-    pragma Import (C, Atan, "atan");
-    pragma Pure_Function (Atan);
- 
-    function Sinh (X : Double) return Double;
-    pragma Import (C, Sinh, "sinh");
-    pragma Pure_Function (Sinh);
- 
-    function Cosh (X : Double) return Double;
-    pragma Import (C, Cosh, "cosh");
-    pragma Pure_Function (Cosh);
- 
-    function Tanh (X : Double) return Double;
-    pragma Import (C, Tanh, "tanh");
-    pragma Pure_Function (Tanh);
- 
-    function Pow (X, Y : Double) return Double;
-    pragma Import (C, Pow, "pow");
-    pragma Pure_Function (Pow);
- 
- end Ada.Numerics.Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-numeri.ads gcc-8.1.0/gcc/ada/a-numeri.ads
*** gcc-7.3.0/gcc/ada/a-numeri.ads	Mon Mar 24 17:48:07 2008
--- gcc-8.1.0/gcc/ada/a-numeri.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,32 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                         A D A . N U M E R I C S                          --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- package Ada.Numerics is
-    pragma Pure;
- 
-    Argument_Error : exception;
- 
-    Pi : constant :=
-           3.14159_26535_89793_23846_26433_83279_50288_41971_69399_37511;
- 
-    ["03C0"] : constant := Pi;
-    --  This is the Greek letter Pi (for Ada 2005 AI-388). Note that it is
-    --  conforming to have this constant present even in Ada 95 mode, as there
-    --  is no way for a normal mode Ada 95 program to reference this identifier.
- 
-    e : constant :=
-          2.71828_18284_59045_23536_02874_71352_66249_77572_47093_69996;
- 
- end Ada.Numerics;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-nurear.ads gcc-8.1.0/gcc/ada/a-nurear.ads
*** gcc-7.3.0/gcc/ada/a-nurear.ads	Mon Mar 24 10:57:32 2008
--- gcc-8.1.0/gcc/ada/a-nurear.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,21 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --             A D A . N U M E R I C S . R E A L _ A R R A Y S              --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Numerics.Generic_Real_Arrays;
- 
- package Ada.Numerics.Real_Arrays is
-    new Ada.Numerics.Generic_Real_Arrays (Float);
- 
- pragma Pure (Real_Arrays);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-rbtgbk.adb gcc-8.1.0/gcc/ada/a-rbtgbk.adb
*** gcc-7.3.0/gcc/ada/a-rbtgbk.adb	Tue Oct 20 10:23:46 2015
--- gcc-8.1.0/gcc/ada/a-rbtgbk.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,627 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --            ADA.CONTAINERS.RED_BLACK_TREES.GENERIC_BOUNDED_KEYS           --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Red_Black_Trees.Generic_Bounded_Keys is
- 
-    package Ops renames Tree_Operations;
- 
-    -------------
-    -- Ceiling --
-    -------------
- 
-    --  AKA Lower_Bound
- 
-    function Ceiling
-      (Tree : Tree_Type'Class;
-       Key  : Key_Type) return Count_Type
-    is
-       Y : Count_Type;
-       X : Count_Type;
-       N : Nodes_Type renames Tree.Nodes;
- 
-    begin
-       Y := 0;
- 
-       X := Tree.Root;
-       while X /= 0 loop
-          if Is_Greater_Key_Node (Key, N (X)) then
-             X := Ops.Right (N (X));
-          else
-             Y := X;
-             X := Ops.Left (N (X));
-          end if;
-       end loop;
- 
-       return Y;
-    end Ceiling;
- 
-    ----------
-    -- Find --
-    ----------
- 
-    function Find
-      (Tree : Tree_Type'Class;
-       Key  : Key_Type) return Count_Type
-    is
-       Y : Count_Type;
-       X : Count_Type;
-       N : Nodes_Type renames Tree.Nodes;
- 
-    begin
-       Y := 0;
- 
-       X := Tree.Root;
-       while X /= 0 loop
-          if Is_Greater_Key_Node (Key, N (X)) then
-             X := Ops.Right (N (X));
-          else
-             Y := X;
-             X := Ops.Left (N (X));
-          end if;
-       end loop;
- 
-       if Y = 0 then
-          return 0;
-       end if;
- 
-       if Is_Less_Key_Node (Key, N (Y)) then
-          return 0;
-       end if;
- 
-       return Y;
-    end Find;
- 
-    -----------
-    -- Floor --
-    -----------
- 
-    function Floor
-      (Tree : Tree_Type'Class;
-       Key  : Key_Type) return Count_Type
-    is
-       Y : Count_Type;
-       X : Count_Type;
-       N : Nodes_Type renames Tree.Nodes;
- 
-    begin
-       Y := 0;
- 
-       X := Tree.Root;
-       while X /= 0 loop
-          if Is_Less_Key_Node (Key, N (X)) then
-             X := Ops.Left (N (X));
-          else
-             Y := X;
-             X := Ops.Right (N (X));
-          end if;
-       end loop;
- 
-       return Y;
-    end Floor;
- 
-    --------------------------------
-    -- Generic_Conditional_Insert --
-    --------------------------------
- 
-    procedure Generic_Conditional_Insert
-      (Tree     : in out Tree_Type'Class;
-       Key      : Key_Type;
-       Node     : out Count_Type;
-       Inserted : out Boolean)
-    is
-       Y : Count_Type;
-       X : Count_Type;
-       N : Nodes_Type renames Tree.Nodes;
- 
-    begin
-       --  This is a "conditional" insertion, meaning that the insertion request
-       --  can "fail" in the sense that no new node is created. If the Key is
-       --  equivalent to an existing node, then we return the existing node and
-       --  Inserted is set to False. Otherwise, we allocate a new node (via
-       --  Insert_Post) and Inserted is set to True.
- 
-       --  Note that we are testing for equivalence here, not equality. Key must
-       --  be strictly less than its next neighbor, and strictly greater than
-       --  its previous neighbor, in order for the conditional insertion to
-       --  succeed.
- 
-       --  We search the tree to find the nearest neighbor of Key, which is
-       --  either the smallest node greater than Key (Inserted is True), or the
-       --  largest node less or equivalent to Key (Inserted is False).
- 
-       Y := 0;
-       X := Tree.Root;
-       Inserted := True;
-       while X /= 0 loop
-          Y := X;
-          Inserted := Is_Less_Key_Node (Key, N (X));
-          X := (if Inserted then Ops.Left (N (X)) else Ops.Right (N (X)));
-       end loop;
- 
-       if Inserted then
- 
-          --  Either Tree is empty, or Key is less than Y. If Y is the first
-          --  node in the tree, then there are no other nodes that we need to
-          --  search for, and we insert a new node into the tree.
- 
-          if Y = Tree.First then
-             Insert_Post (Tree, Y, True, Node);
-             return;
-          end if;
- 
-          --  Y is the next nearest-neighbor of Key. We know that Key is not
-          --  equivalent to Y (because Key is strictly less than Y), so we move
-          --  to the previous node, the nearest-neighbor just smaller or
-          --  equivalent to Key.
- 
-          Node := Ops.Previous (Tree, Y);
- 
-       else
-          --  Y is the previous nearest-neighbor of Key. We know that Key is not
-          --  less than Y, which means either that Key is equivalent to Y, or
-          --  greater than Y.
- 
-          Node := Y;
-       end if;
- 
-       --  Key is equivalent to or greater than Node. We must resolve which is
-       --  the case, to determine whether the conditional insertion succeeds.
- 
-       if Is_Greater_Key_Node (Key, N (Node)) then
- 
-          --  Key is strictly greater than Node, which means that Key is not
-          --  equivalent to Node. In this case, the insertion succeeds, and we
-          --  insert a new node into the tree.
- 
-          Insert_Post (Tree, Y, Inserted, Node);
-          Inserted := True;
-          return;
-       end if;
- 
-       --  Key is equivalent to Node. This is a conditional insertion, so we do
-       --  not insert a new node in this case. We return the existing node and
-       --  report that no insertion has occurred.
- 
-       Inserted := False;
-    end Generic_Conditional_Insert;
- 
-    ------------------------------------------
-    -- Generic_Conditional_Insert_With_Hint --
-    ------------------------------------------
- 
-    procedure Generic_Conditional_Insert_With_Hint
-      (Tree      : in out Tree_Type'Class;
-       Position  : Count_Type;
-       Key       : Key_Type;
-       Node      : out Count_Type;
-       Inserted  : out Boolean)
-    is
-       N : Nodes_Type renames Tree.Nodes;
- 
-    begin
-       --  The purpose of a hint is to avoid a search from the root of
-       --  tree. If we have it hint it means we only need to traverse the
-       --  subtree rooted at the hint to find the nearest neighbor. Note
-       --  that finding the neighbor means merely walking the tree; this
-       --  is not a search and the only comparisons that occur are with
-       --  the hint and its neighbor.
- 
-       --  If Position is 0, this is interpreted to mean that Key is
-       --  large relative to the nodes in the tree. If the tree is empty,
-       --  or Key is greater than the last node in the tree, then we're
-       --  done; otherwise the hint was "wrong" and we must search.
- 
-       if Position = 0 then  -- largest
-          if Tree.Last = 0
-            or else Is_Greater_Key_Node (Key, N (Tree.Last))
-          then
-             Insert_Post (Tree, Tree.Last, False, Node);
-             Inserted := True;
-          else
-             Conditional_Insert_Sans_Hint (Tree, Key, Node, Inserted);
-          end if;
- 
-          return;
-       end if;
- 
-       pragma Assert (Tree.Length > 0);
- 
-       --  A hint can either name the node that immediately follows Key,
-       --  or immediately precedes Key. We first test whether Key is
-       --  less than the hint, and if so we compare Key to the node that
-       --  precedes the hint. If Key is both less than the hint and
-       --  greater than the hint's preceding neighbor, then we're done;
-       --  otherwise we must search.
- 
-       --  Note also that a hint can either be an anterior node or a leaf
-       --  node. A new node is always inserted at the bottom of the tree
-       --  (at least prior to rebalancing), becoming the new left or
-       --  right child of leaf node (which prior to the insertion must
-       --  necessarily be null, since this is a leaf). If the hint names
-       --  an anterior node then its neighbor must be a leaf, and so
-       --  (here) we insert after the neighbor. If the hint names a leaf
-       --  then its neighbor must be anterior and so we insert before the
-       --  hint.
- 
-       if Is_Less_Key_Node (Key, N (Position)) then
-          declare
-             Before : constant Count_Type := Ops.Previous (Tree, Position);
- 
-          begin
-             if Before = 0 then
-                Insert_Post (Tree, Tree.First, True, Node);
-                Inserted := True;
- 
-             elsif Is_Greater_Key_Node (Key, N (Before)) then
-                if Ops.Right (N (Before)) = 0 then
-                   Insert_Post (Tree, Before, False, Node);
-                else
-                   Insert_Post (Tree, Position, True, Node);
-                end if;
- 
-                Inserted := True;
- 
-             else
-                Conditional_Insert_Sans_Hint (Tree, Key, Node, Inserted);
-             end if;
-          end;
- 
-          return;
-       end if;
- 
-       --  We know that Key isn't less than the hint so we try again,
-       --  this time to see if it's greater than the hint. If so we
-       --  compare Key to the node that follows the hint. If Key is both
-       --  greater than the hint and less than the hint's next neighbor,
-       --  then we're done; otherwise we must search.
- 
-       if Is_Greater_Key_Node (Key, N (Position)) then
-          declare
-             After : constant Count_Type := Ops.Next (Tree, Position);
- 
-          begin
-             if After = 0 then
-                Insert_Post (Tree, Tree.Last, False, Node);
-                Inserted := True;
- 
-             elsif Is_Less_Key_Node (Key, N (After)) then
-                if Ops.Right (N (Position)) = 0 then
-                   Insert_Post (Tree, Position, False, Node);
-                else
-                   Insert_Post (Tree, After, True, Node);
-                end if;
- 
-                Inserted := True;
- 
-             else
-                Conditional_Insert_Sans_Hint (Tree, Key, Node, Inserted);
-             end if;
-          end;
- 
-          return;
-       end if;
- 
-       --  We know that Key is neither less than the hint nor greater
-       --  than the hint, and that's the definition of equivalence.
-       --  There's nothing else we need to do, since a search would just
-       --  reach the same conclusion.
- 
-       Node := Position;
-       Inserted := False;
-    end Generic_Conditional_Insert_With_Hint;
- 
-    -------------------------
-    -- Generic_Insert_Post --
-    -------------------------
- 
-    procedure Generic_Insert_Post
-      (Tree   : in out Tree_Type'Class;
-       Y      : Count_Type;
-       Before : Boolean;
-       Z      : out Count_Type)
-    is
-       N : Nodes_Type renames Tree.Nodes;
- 
-    begin
-       TC_Check (Tree.TC);
- 
-       if Checks and then Tree.Length >= Tree.Capacity then
-          raise Capacity_Error with "not enough capacity to insert new item";
-       end if;
- 
-       Z := New_Node;
-       pragma Assert (Z /= 0);
- 
-       if Y = 0 then
-          pragma Assert (Tree.Length = 0);
-          pragma Assert (Tree.Root = 0);
-          pragma Assert (Tree.First = 0);
-          pragma Assert (Tree.Last = 0);
- 
-          Tree.Root := Z;
-          Tree.First := Z;
-          Tree.Last := Z;
- 
-       elsif Before then
-          pragma Assert (Ops.Left (N (Y)) = 0);
- 
-          Ops.Set_Left (N (Y), Z);
- 
-          if Y = Tree.First then
-             Tree.First := Z;
-          end if;
- 
-       else
-          pragma Assert (Ops.Right (N (Y)) = 0);
- 
-          Ops.Set_Right (N (Y), Z);
- 
-          if Y = Tree.Last then
-             Tree.Last := Z;
-          end if;
-       end if;
- 
-       Ops.Set_Color (N (Z), Red);
-       Ops.Set_Parent (N (Z), Y);
-       Ops.Rebalance_For_Insert (Tree, Z);
-       Tree.Length := Tree.Length + 1;
-    end Generic_Insert_Post;
- 
-    -----------------------
-    -- Generic_Iteration --
-    -----------------------
- 
-    procedure Generic_Iteration
-      (Tree : Tree_Type'Class;
-       Key  : Key_Type)
-    is
-       procedure Iterate (Index : Count_Type);
- 
-       -------------
-       -- Iterate --
-       -------------
- 
-       procedure Iterate (Index : Count_Type) is
-          J : Count_Type;
-          N : Nodes_Type renames Tree.Nodes;
- 
-       begin
-          J := Index;
-          while J /= 0 loop
-             if Is_Less_Key_Node (Key, N (J)) then
-                J := Ops.Left (N (J));
-             elsif Is_Greater_Key_Node (Key, N (J)) then
-                J := Ops.Right (N (J));
-             else
-                Iterate (Ops.Left (N (J)));
-                Process (J);
-                J := Ops.Right (N (J));
-             end if;
-          end loop;
-       end Iterate;
- 
-    --  Start of processing for Generic_Iteration
- 
-    begin
-       Iterate (Tree.Root);
-    end Generic_Iteration;
- 
-    -------------------------------
-    -- Generic_Reverse_Iteration --
-    -------------------------------
- 
-    procedure Generic_Reverse_Iteration
-      (Tree : Tree_Type'Class;
-       Key  : Key_Type)
-    is
-       procedure Iterate (Index : Count_Type);
- 
-       -------------
-       -- Iterate --
-       -------------
- 
-       procedure Iterate (Index : Count_Type) is
-          J : Count_Type;
-          N : Nodes_Type renames Tree.Nodes;
- 
-       begin
-          J := Index;
-          while J /= 0 loop
-             if Is_Less_Key_Node (Key, N (J)) then
-                J := Ops.Left (N (J));
-             elsif Is_Greater_Key_Node (Key, N (J)) then
-                J := Ops.Right (N (J));
-             else
-                Iterate (Ops.Right (N (J)));
-                Process (J);
-                J := Ops.Left (N (J));
-             end if;
-          end loop;
-       end Iterate;
- 
-    --  Start of processing for Generic_Reverse_Iteration
- 
-    begin
-       Iterate (Tree.Root);
-    end Generic_Reverse_Iteration;
- 
-    ----------------------------------
-    -- Generic_Unconditional_Insert --
-    ----------------------------------
- 
-    procedure Generic_Unconditional_Insert
-      (Tree : in out Tree_Type'Class;
-       Key  : Key_Type;
-       Node : out Count_Type)
-    is
-       Y : Count_Type;
-       X : Count_Type;
-       N : Nodes_Type renames Tree.Nodes;
- 
-       Before : Boolean;
- 
-    begin
-       Y := 0;
-       Before := False;
- 
-       X := Tree.Root;
-       while X /= 0 loop
-          Y := X;
-          Before := Is_Less_Key_Node (Key, N (X));
-          X := (if Before then Ops.Left (N (X)) else Ops.Right (N (X)));
-       end loop;
- 
-       Insert_Post (Tree, Y, Before, Node);
-    end Generic_Unconditional_Insert;
- 
-    --------------------------------------------
-    -- Generic_Unconditional_Insert_With_Hint --
-    --------------------------------------------
- 
-    procedure Generic_Unconditional_Insert_With_Hint
-      (Tree : in out Tree_Type'Class;
-       Hint : Count_Type;
-       Key  : Key_Type;
-       Node : out Count_Type)
-    is
-       N : Nodes_Type renames Tree.Nodes;
- 
-    begin
-       --  There are fewer constraints for an unconditional insertion
-       --  than for a conditional insertion, since we allow duplicate
-       --  keys. So instead of having to check (say) whether Key is
-       --  (strictly) greater than the hint's previous neighbor, here we
-       --  allow Key to be equal to or greater than the previous node.
- 
-       --  There is the issue of what to do if Key is equivalent to the
-       --  hint. Does the new node get inserted before or after the hint?
-       --  We decide that it gets inserted after the hint, reasoning that
-       --  this is consistent with behavior for non-hint insertion, which
-       --  inserts a new node after existing nodes with equivalent keys.
- 
-       --  First we check whether the hint is null, which is interpreted
-       --  to mean that Key is large relative to existing nodes.
-       --  Following our rule above, if Key is equal to or greater than
-       --  the last node, then we insert the new node immediately after
-       --  last. (We don't have an operation for testing whether a key is
-       --  "equal to or greater than" a node, so we must say instead "not
-       --  less than", which is equivalent.)
- 
-       if Hint = 0 then  -- largest
-          if Tree.Last = 0 then
-             Insert_Post (Tree, 0, False, Node);
-          elsif Is_Less_Key_Node (Key, N (Tree.Last)) then
-             Unconditional_Insert_Sans_Hint (Tree, Key, Node);
-          else
-             Insert_Post (Tree, Tree.Last, False, Node);
-          end if;
- 
-          return;
-       end if;
- 
-       pragma Assert (Tree.Length > 0);
- 
-       --  We decide here whether to insert the new node prior to the
-       --  hint. Key could be equivalent to the hint, so in theory we
-       --  could write the following test as "not greater than" (same as
-       --  "less than or equal to"). If Key were equivalent to the hint,
-       --  that would mean that the new node gets inserted before an
-       --  equivalent node. That wouldn't break any container invariants,
-       --  but our rule above says that new nodes always get inserted
-       --  after equivalent nodes. So here we test whether Key is both
-       --  less than the hint and equal to or greater than the hint's
-       --  previous neighbor, and if so insert it before the hint.
- 
-       if Is_Less_Key_Node (Key, N (Hint)) then
-          declare
-             Before : constant Count_Type := Ops.Previous (Tree, Hint);
-          begin
-             if Before = 0 then
-                Insert_Post (Tree, Hint, True, Node);
-             elsif Is_Less_Key_Node (Key, N (Before)) then
-                Unconditional_Insert_Sans_Hint (Tree, Key, Node);
-             elsif Ops.Right (N (Before)) = 0 then
-                Insert_Post (Tree, Before, False, Node);
-             else
-                Insert_Post (Tree, Hint, True, Node);
-             end if;
-          end;
- 
-          return;
-       end if;
- 
-       --  We know that Key isn't less than the hint, so it must be equal
-       --  or greater. So we just test whether Key is less than or equal
-       --  to (same as "not greater than") the hint's next neighbor, and
-       --  if so insert it after the hint.
- 
-       declare
-          After : constant Count_Type := Ops.Next (Tree, Hint);
-       begin
-          if After = 0 then
-             Insert_Post (Tree, Hint, False, Node);
-          elsif Is_Greater_Key_Node (Key, N (After)) then
-             Unconditional_Insert_Sans_Hint (Tree, Key, Node);
-          elsif Ops.Right (N (Hint)) = 0 then
-             Insert_Post (Tree, Hint, False, Node);
-          else
-             Insert_Post (Tree, After, True, Node);
-          end if;
-       end;
-    end Generic_Unconditional_Insert_With_Hint;
- 
-    -----------------
-    -- Upper_Bound --
-    -----------------
- 
-    function Upper_Bound
-      (Tree : Tree_Type'Class;
-       Key  : Key_Type) return Count_Type
-    is
-       Y : Count_Type;
-       X : Count_Type;
-       N : Nodes_Type renames Tree.Nodes;
- 
-    begin
-       Y := 0;
- 
-       X := Tree.Root;
-       while X /= 0 loop
-          if Is_Less_Key_Node (Key, N (X)) then
-             Y := X;
-             X := Ops.Left (N (X));
-          else
-             X := Ops.Right (N (X));
-          end if;
-       end loop;
- 
-       return Y;
-    end Upper_Bound;
- 
- end Ada.Containers.Red_Black_Trees.Generic_Bounded_Keys;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-rbtgbk.ads gcc-8.1.0/gcc/ada/a-rbtgbk.ads
*** gcc-7.3.0/gcc/ada/a-rbtgbk.ads	Tue Oct 20 10:23:46 2015
--- gcc-8.1.0/gcc/ada/a-rbtgbk.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,193 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --            ADA.CONTAINERS.RED_BLACK_TREES.GENERIC_BOUNDED_KEYS           --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.                  --
- ------------------------------------------------------------------------------
- 
- --  Tree_Type is used to implement ordered containers. This package declares
- --  the tree operations that depend on keys.
- 
- with Ada.Containers.Red_Black_Trees.Generic_Bounded_Operations;
- 
- generic
-    with package Tree_Operations is new Generic_Bounded_Operations (<>);
- 
-    use Tree_Operations.Tree_Types, Tree_Operations.Tree_Types.Implementation;
- 
-    type Key_Type (<>) is limited private;
- 
-    with function Is_Less_Key_Node
-      (L : Key_Type;
-       R : Node_Type) return Boolean;
- 
-    with function Is_Greater_Key_Node
-      (L : Key_Type;
-       R : Node_Type) return Boolean;
- 
- package Ada.Containers.Red_Black_Trees.Generic_Bounded_Keys is
-    pragma Pure;
- 
-    generic
-       with function New_Node return Count_Type;
- 
-    procedure Generic_Insert_Post
-      (Tree   : in out Tree_Type'Class;
-       Y      : Count_Type;
-       Before : Boolean;
-       Z      : out Count_Type);
-    --  Completes an insertion after the insertion position has been
-    --  determined. On output Z contains the index of the newly inserted
-    --  node, allocated using Allocate. If Tree is busy then
-    --  Program_Error is raised. If Y is 0, then Tree must be empty.
-    --  Otherwise Y denotes the insertion position, and Before specifies
-    --  whether the new node is Y's left (True) or right (False) child.
- 
-    generic
-       with procedure Insert_Post
-         (T : in out Tree_Type'Class;
-          Y : Count_Type;
-          B : Boolean;
-          Z : out Count_Type);
- 
-    procedure Generic_Conditional_Insert
-      (Tree     : in out Tree_Type'Class;
-       Key      : Key_Type;
-       Node     : out Count_Type;
-       Inserted : out Boolean);
-    --  Inserts a new node in Tree, but only if the tree does not already
-    --  contain Key. Generic_Conditional_Insert first searches for a key
-    --  equivalent to Key in Tree. If an equivalent key is found, then on
-    --  output Node designates the node with that key and Inserted is
-    --  False; there is no allocation and Tree is not modified. Otherwise
-    --  Node designates a new node allocated using Insert_Post, and
-    --  Inserted is True.
- 
-    generic
-       with procedure Insert_Post
-         (T : in out Tree_Type'Class;
-          Y : Count_Type;
-          B : Boolean;
-          Z : out Count_Type);
- 
-    procedure Generic_Unconditional_Insert
-      (Tree : in out Tree_Type'Class;
-       Key  : Key_Type;
-       Node : out Count_Type);
-    --  Inserts a new node in Tree. On output Node designates the new
-    --  node, which is allocated using Insert_Post. The node is inserted
-    --  immediately after already-existing equivalent keys.
- 
-    generic
-       with procedure Insert_Post
-         (T : in out Tree_Type'Class;
-          Y : Count_Type;
-          B : Boolean;
-          Z : out Count_Type);
- 
-       with procedure Unconditional_Insert_Sans_Hint
-         (Tree    : in out Tree_Type'Class;
-          Key     : Key_Type;
-          Node    : out Count_Type);
- 
-    procedure Generic_Unconditional_Insert_With_Hint
-      (Tree : in out Tree_Type'Class;
-       Hint : Count_Type;
-       Key  : Key_Type;
-       Node : out Count_Type);
-    --  Inserts a new node in Tree near position Hint, to avoid having to
-    --  search from the root for the insertion position. If Hint is 0
-    --  then Generic_Unconditional_Insert_With_Hint attempts to insert
-    --  the new node after Tree.Last. If Hint is non-zero then if Key is
-    --  less than Hint, it attempts to insert the new node immediately
-    --  prior to Hint. Otherwise it attempts to insert the node
-    --  immediately following Hint. We say "attempts" above to emphasize
-    --  that insertions always preserve invariants with respect to key
-    --  order, even when there's a hint. So if Key can't be inserted
-    --  immediately near Hint, then the new node is inserted in the
-    --  normal way, by searching for the correct position starting from
-    --  the root.
- 
-    generic
-       with procedure Insert_Post
-         (T : in out Tree_Type'Class;
-          Y : Count_Type;
-          B : Boolean;
-          Z : out Count_Type);
- 
-       with procedure Conditional_Insert_Sans_Hint
-         (Tree     : in out Tree_Type'Class;
-          Key      : Key_Type;
-          Node     : out Count_Type;
-          Inserted : out Boolean);
- 
-    procedure Generic_Conditional_Insert_With_Hint
-      (Tree     : in out Tree_Type'Class;
-       Position : Count_Type;       -- the hint
-       Key      : Key_Type;
-       Node     : out Count_Type;
-       Inserted : out Boolean);
-    --  Inserts a new node in Tree if the tree does not already contain
-    --  Key, using Position as a hint about where to insert the new node.
-    --  See Generic_Unconditional_Insert_With_Hint for more details about
-    --  hint semantics.
- 
-    function Find
-      (Tree : Tree_Type'Class;
-       Key  : Key_Type) return Count_Type;
-    --  Searches Tree for the smallest node equivalent to Key
- 
-    function Ceiling
-      (Tree : Tree_Type'Class;
-       Key  : Key_Type) return Count_Type;
-    --  Searches Tree for the smallest node equal to or greater than Key
- 
-    function Floor
-      (Tree : Tree_Type'Class;
-       Key  : Key_Type) return Count_Type;
-    --  Searches Tree for the largest node less than or equal to Key
- 
-    function Upper_Bound
-      (Tree : Tree_Type'Class;
-       Key  : Key_Type) return Count_Type;
-    --  Searches Tree for the smallest node greater than Key
- 
-    generic
-       with procedure Process (Index : Count_Type);
-    procedure Generic_Iteration
-      (Tree : Tree_Type'Class;
-       Key  : Key_Type);
-    --  Calls Process for each node in Tree equivalent to Key, in order
-    --  from earliest in range to latest.
- 
-    generic
-       with procedure Process (Index : Count_Type);
-    procedure Generic_Reverse_Iteration
-      (Tree : Tree_Type'Class;
-       Key  : Key_Type);
-    --  Calls Process for each node in Tree equivalent to Key, but in
-    --  order from largest in range to earliest.
- 
- end Ada.Containers.Red_Black_Trees.Generic_Bounded_Keys;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-rbtgbo.adb gcc-8.1.0/gcc/ada/a-rbtgbo.adb
*** gcc-7.3.0/gcc/ada/a-rbtgbo.adb	Wed Apr 27 13:15:25 2016
--- gcc-8.1.0/gcc/ada/a-rbtgbo.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,1127 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --         ADA.CONTAINERS.RED_BLACK_TREES.GENERIC_BOUNDED_OPERATIONS        --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2004-2016, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.                  --
- ------------------------------------------------------------------------------
- 
- --  The references in this file to "CLR" refer to the following book, from
- --  which several of the algorithms here were adapted:
- 
- --     Introduction to Algorithms
- --     by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest
- --     Publisher: The MIT Press (June 18, 1990)
- --     ISBN: 0262031418
- 
- with System; use type System.Address;
- 
- package body Ada.Containers.Red_Black_Trees.Generic_Bounded_Operations is
- 
-    pragma Warnings (Off, "variable ""Busy*"" is not referenced");
-    pragma Warnings (Off, "variable ""Lock*"" is not referenced");
-    --  See comment in Ada.Containers.Helpers
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    procedure Delete_Fixup (Tree : in out Tree_Type'Class; Node : Count_Type);
-    procedure Delete_Swap (Tree : in out Tree_Type'Class; Z, Y : Count_Type);
- 
-    procedure Left_Rotate  (Tree : in out Tree_Type'Class; X : Count_Type);
-    procedure Right_Rotate (Tree : in out Tree_Type'Class; Y : Count_Type);
- 
-    ----------------
-    -- Clear_Tree --
-    ----------------
- 
-    procedure Clear_Tree (Tree : in out Tree_Type'Class) is
-    begin
-       TC_Check (Tree.TC);
- 
-       Tree.First  := 0;
-       Tree.Last   := 0;
-       Tree.Root   := 0;
-       Tree.Length := 0;
-       Tree.Free   := -1;
-    end Clear_Tree;
- 
-    ------------------
-    -- Delete_Fixup --
-    ------------------
- 
-    procedure Delete_Fixup
-      (Tree : in out Tree_Type'Class;
-       Node : Count_Type)
-    is
-       --  CLR p. 274
- 
-       X : Count_Type;
-       W : Count_Type;
-       N : Nodes_Type renames Tree.Nodes;
- 
-    begin
-       X := Node;
-       while X /= Tree.Root and then Color (N (X)) = Black loop
-          if X = Left (N (Parent (N (X)))) then
-             W := Right (N (Parent (N (X))));
- 
-             if Color (N (W)) = Red then
-                Set_Color (N (W), Black);
-                Set_Color (N (Parent (N (X))), Red);
-                Left_Rotate (Tree, Parent (N (X)));
-                W := Right (N (Parent (N (X))));
-             end if;
- 
-             if (Left (N (W))  = 0 or else Color (N (Left (N (W)))) = Black)
-                   and then
-                (Right (N (W)) = 0 or else Color (N (Right (N (W)))) = Black)
-             then
-                Set_Color (N (W), Red);
-                X := Parent (N (X));
- 
-             else
-                if Right (N (W)) = 0
-                  or else Color (N (Right (N (W)))) = Black
-                then
-                   --  As a condition for setting the color of the left child to
-                   --  black, the left child access value must be non-null. A
-                   --  truth table analysis shows that if we arrive here, that
-                   --  condition holds, so there's no need for an explicit test.
-                   --  The assertion is here to document what we know is true.
- 
-                   pragma Assert (Left (N (W)) /= 0);
-                   Set_Color (N (Left (N (W))), Black);
- 
-                   Set_Color (N (W), Red);
-                   Right_Rotate (Tree, W);
-                   W := Right (N (Parent (N (X))));
-                end if;
- 
-                Set_Color (N (W), Color (N (Parent (N (X)))));
-                Set_Color (N (Parent (N (X))), Black);
-                Set_Color (N (Right (N (W))), Black);
-                Left_Rotate  (Tree, Parent (N (X)));
-                X := Tree.Root;
-             end if;
- 
-          else
-             pragma Assert (X = Right (N (Parent (N (X)))));
- 
-             W := Left (N (Parent (N (X))));
- 
-             if Color (N (W)) = Red then
-                Set_Color (N (W), Black);
-                Set_Color (N (Parent (N (X))), Red);
-                Right_Rotate (Tree, Parent (N (X)));
-                W := Left (N (Parent (N (X))));
-             end if;
- 
-             if (Left (N (W))  = 0 or else Color (N (Left (N (W)))) = Black)
-                   and then
-                (Right (N (W)) = 0 or else Color (N (Right (N (W)))) = Black)
-             then
-                Set_Color (N (W), Red);
-                X := Parent (N (X));
- 
-             else
-                if Left (N (W)) = 0
-                  or else Color (N (Left (N (W)))) = Black
-                then
-                   --  As a condition for setting the color of the right child
-                   --  to black, the right child access value must be non-null.
-                   --  A truth table analysis shows that if we arrive here, that
-                   --  condition holds, so there's no need for an explicit test.
-                   --  The assertion is here to document what we know is true.
- 
-                   pragma Assert (Right (N (W)) /= 0);
-                   Set_Color (N (Right (N (W))), Black);
- 
-                   Set_Color (N (W), Red);
-                   Left_Rotate (Tree, W);
-                   W := Left (N (Parent (N (X))));
-                end if;
- 
-                Set_Color (N (W), Color (N (Parent (N (X)))));
-                Set_Color (N (Parent (N (X))), Black);
-                Set_Color (N (Left (N (W))), Black);
-                Right_Rotate (Tree, Parent (N (X)));
-                X := Tree.Root;
-             end if;
-          end if;
-       end loop;
- 
-       Set_Color (N (X), Black);
-    end Delete_Fixup;
- 
-    ---------------------------
-    -- Delete_Node_Sans_Free --
-    ---------------------------
- 
-    procedure Delete_Node_Sans_Free
-      (Tree : in out Tree_Type'Class;
-       Node : Count_Type)
-    is
-       --  CLR p. 273
- 
-       X, Y : Count_Type;
- 
-       Z : constant Count_Type := Node;
- 
-       N : Nodes_Type renames Tree.Nodes;
- 
-    begin
-       TC_Check (Tree.TC);
- 
-       --  If node is not present, return (exception will be raised in caller)
- 
-       if Z = 0 then
-          return;
-       end if;
- 
-       pragma Assert (Tree.Length > 0);
-       pragma Assert (Tree.Root  /= 0);
-       pragma Assert (Tree.First /= 0);
-       pragma Assert (Tree.Last  /= 0);
-       pragma Assert (Parent (N (Tree.Root)) = 0);
- 
-       pragma Assert ((Tree.Length > 1)
-                        or else (Tree.First = Tree.Last
-                                  and then Tree.First = Tree.Root));
- 
-       pragma Assert ((Left (N (Node)) = 0)
-                         or else (Parent (N (Left (N (Node)))) = Node));
- 
-       pragma Assert ((Right (N (Node)) = 0)
-                         or else (Parent (N (Right (N (Node)))) = Node));
- 
-       pragma Assert (((Parent (N (Node)) = 0) and then (Tree.Root = Node))
-                         or else ((Parent (N (Node)) /= 0) and then
-                                   ((Left (N (Parent (N (Node)))) = Node)
-                                       or else
-                                    (Right (N (Parent (N (Node)))) = Node))));
- 
-       if Left (N (Z)) = 0 then
-          if Right (N (Z)) = 0 then
-             if Z = Tree.First then
-                Tree.First := Parent (N (Z));
-             end if;
- 
-             if Z = Tree.Last then
-                Tree.Last := Parent (N (Z));
-             end if;
- 
-             if Color (N (Z)) = Black then
-                Delete_Fixup (Tree, Z);
-             end if;
- 
-             pragma Assert (Left (N (Z)) = 0);
-             pragma Assert (Right (N (Z)) = 0);
- 
-             if Z = Tree.Root then
-                pragma Assert (Tree.Length = 1);
-                pragma Assert (Parent (N (Z)) = 0);
-                Tree.Root := 0;
-             elsif Z = Left (N (Parent (N (Z)))) then
-                Set_Left (N (Parent (N (Z))), 0);
-             else
-                pragma Assert (Z = Right (N (Parent (N (Z)))));
-                Set_Right (N (Parent (N (Z))), 0);
-             end if;
- 
-          else
-             pragma Assert (Z /= Tree.Last);
- 
-             X := Right (N (Z));
- 
-             if Z = Tree.First then
-                Tree.First := Min (Tree, X);
-             end if;
- 
-             if Z = Tree.Root then
-                Tree.Root := X;
-             elsif Z = Left (N (Parent (N (Z)))) then
-                Set_Left (N (Parent (N (Z))), X);
-             else
-                pragma Assert (Z = Right (N (Parent (N (Z)))));
-                Set_Right (N (Parent (N (Z))), X);
-             end if;
- 
-             Set_Parent (N (X), Parent (N (Z)));
- 
-             if Color (N (Z)) = Black then
-                Delete_Fixup (Tree, X);
-             end if;
-          end if;
- 
-       elsif Right (N (Z)) = 0 then
-          pragma Assert (Z /= Tree.First);
- 
-          X := Left (N (Z));
- 
-          if Z = Tree.Last then
-             Tree.Last := Max (Tree, X);
-          end if;
- 
-          if Z = Tree.Root then
-             Tree.Root := X;
-          elsif Z = Left (N (Parent (N (Z)))) then
-             Set_Left (N (Parent (N (Z))), X);
-          else
-             pragma Assert (Z = Right (N (Parent (N (Z)))));
-             Set_Right (N (Parent (N (Z))), X);
-          end if;
- 
-          Set_Parent (N (X), Parent (N (Z)));
- 
-          if Color (N (Z)) = Black then
-             Delete_Fixup (Tree, X);
-          end if;
- 
-       else
-          pragma Assert (Z /= Tree.First);
-          pragma Assert (Z /= Tree.Last);
- 
-          Y := Next (Tree, Z);
-          pragma Assert (Left (N (Y)) = 0);
- 
-          X := Right (N (Y));
- 
-          if X = 0 then
-             if Y = Left (N (Parent (N (Y)))) then
-                pragma Assert (Parent (N (Y)) /= Z);
-                Delete_Swap (Tree, Z, Y);
-                Set_Left (N (Parent (N (Z))), Z);
- 
-             else
-                pragma Assert (Y = Right (N (Parent (N (Y)))));
-                pragma Assert (Parent (N (Y)) = Z);
-                Set_Parent (N (Y), Parent (N (Z)));
- 
-                if Z = Tree.Root then
-                   Tree.Root := Y;
-                elsif Z = Left (N (Parent (N (Z)))) then
-                   Set_Left (N (Parent (N (Z))), Y);
-                else
-                   pragma Assert (Z = Right (N (Parent (N (Z)))));
-                   Set_Right (N (Parent (N (Z))), Y);
-                end if;
- 
-                Set_Left   (N (Y), Left (N (Z)));
-                Set_Parent (N (Left (N (Y))), Y);
-                Set_Right  (N (Y), Z);
- 
-                Set_Parent (N (Z), Y);
-                Set_Left   (N (Z), 0);
-                Set_Right  (N (Z), 0);
- 
-                declare
-                   Y_Color : constant Color_Type := Color (N (Y));
-                begin
-                   Set_Color (N (Y), Color (N (Z)));
-                   Set_Color (N (Z), Y_Color);
-                end;
-             end if;
- 
-             if Color (N (Z)) = Black then
-                Delete_Fixup (Tree, Z);
-             end if;
- 
-             pragma Assert (Left (N (Z)) = 0);
-             pragma Assert (Right (N (Z)) = 0);
- 
-             if Z = Right (N (Parent (N (Z)))) then
-                Set_Right (N (Parent (N (Z))), 0);
-             else
-                pragma Assert (Z = Left (N (Parent (N (Z)))));
-                Set_Left (N (Parent (N (Z))), 0);
-             end if;
- 
-          else
-             if Y = Left (N (Parent (N (Y)))) then
-                pragma Assert (Parent (N (Y)) /= Z);
- 
-                Delete_Swap (Tree, Z, Y);
- 
-                Set_Left (N (Parent (N (Z))), X);
-                Set_Parent (N (X), Parent (N (Z)));
- 
-             else
-                pragma Assert (Y = Right (N (Parent (N (Y)))));
-                pragma Assert (Parent (N (Y)) = Z);
- 
-                Set_Parent (N (Y), Parent (N (Z)));
- 
-                if Z = Tree.Root then
-                   Tree.Root := Y;
-                elsif Z = Left (N (Parent (N (Z)))) then
-                   Set_Left (N (Parent (N (Z))), Y);
-                else
-                   pragma Assert (Z = Right (N (Parent (N (Z)))));
-                   Set_Right (N (Parent (N (Z))), Y);
-                end if;
- 
-                Set_Left (N (Y), Left (N (Z)));
-                Set_Parent (N (Left (N (Y))), Y);
- 
-                declare
-                   Y_Color : constant Color_Type := Color (N (Y));
-                begin
-                   Set_Color (N (Y), Color (N (Z)));
-                   Set_Color (N (Z), Y_Color);
-                end;
-             end if;
- 
-             if Color (N (Z)) = Black then
-                Delete_Fixup (Tree, X);
-             end if;
-          end if;
-       end if;
- 
-       Tree.Length := Tree.Length - 1;
-    end Delete_Node_Sans_Free;
- 
-    -----------------
-    -- Delete_Swap --
-    -----------------
- 
-    procedure Delete_Swap
-      (Tree : in out Tree_Type'Class;
-       Z, Y : Count_Type)
-    is
-       N : Nodes_Type renames Tree.Nodes;
- 
-       pragma Assert (Z /= Y);
-       pragma Assert (Parent (N (Y)) /= Z);
- 
-       Y_Parent : constant Count_Type := Parent (N (Y));
-       Y_Color  : constant Color_Type := Color (N (Y));
- 
-    begin
-       Set_Parent (N (Y), Parent (N (Z)));
-       Set_Left   (N (Y), Left   (N (Z)));
-       Set_Right  (N (Y), Right  (N (Z)));
-       Set_Color  (N (Y), Color  (N (Z)));
- 
-       if Tree.Root = Z then
-          Tree.Root := Y;
-       elsif Right (N (Parent (N (Y)))) = Z then
-          Set_Right (N (Parent (N (Y))), Y);
-       else
-          pragma Assert (Left (N (Parent (N (Y)))) = Z);
-          Set_Left (N (Parent (N (Y))), Y);
-       end if;
- 
-       if Right (N (Y)) /= 0 then
-          Set_Parent (N (Right (N (Y))), Y);
-       end if;
- 
-       if Left (N (Y)) /= 0 then
-          Set_Parent (N (Left (N (Y))), Y);
-       end if;
- 
-       Set_Parent (N (Z), Y_Parent);
-       Set_Color  (N (Z), Y_Color);
-       Set_Left   (N (Z), 0);
-       Set_Right  (N (Z), 0);
-    end Delete_Swap;
- 
-    ----------
-    -- Free --
-    ----------
- 
-    procedure Free (Tree : in out Tree_Type'Class; X : Count_Type) is
-       pragma Assert (X > 0);
-       pragma Assert (X <= Tree.Capacity);
- 
-       N : Nodes_Type renames Tree.Nodes;
-       --  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.  ???
- 
-    begin
-       --  The set container actually contains two data structures: a list for
-       --  the "active" nodes that contain elements that have been inserted
-       --  onto the tree, 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 Parent 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 Prev component to a negative
-       --  value, to indicate that it is now inactive. This provides a useful
-       --  way to detect a dangling cursor reference.
- 
-       --  The comment above is incorrect; we need some other way to
-       --  indicate a node is inactive, for example by using a special
-       --  Color_Type value.  ???
-       --  N (X).Prev := -1;  -- Node is deallocated (not on active list)
- 
-       if Tree.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_Parent (N (X), Tree.Free);
-          Tree.Free := X;
- 
-       elsif X + 1 = abs Tree.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.
- 
-          Tree.Free := Tree.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.
- 
-          Tree.Free := abs Tree.Free;
- 
-          if Tree.Free > Tree.Capacity then
-             Tree.Free := 0;
- 
-          else
-             for I in Tree.Free .. Tree.Capacity - 1 loop
-                Set_Parent (N (I), I + 1);
-             end loop;
- 
-             Set_Parent (N (Tree.Capacity), 0);
-          end if;
- 
-          Set_Parent (N (X), Tree.Free);
-          Tree.Free := X;
-       end if;
-    end Free;
- 
-    -----------------------
-    -- Generic_Allocate --
-    -----------------------
- 
-    procedure Generic_Allocate
-      (Tree : in out Tree_Type'Class;
-       Node : out Count_Type)
-    is
-       N : Nodes_Type renames Tree.Nodes;
- 
-    begin
-       if Tree.Free >= 0 then
-          Node := Tree.Free;
- 
-          --  We always perform the assignment first, before we
-          --  change container state, in order to defend against
-          --  exceptions duration assignment.
- 
-          Set_Element (N (Node));
-          Tree.Free := Parent (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 Tree.Free;
- 
-          --  As above, we perform this assignment first, before modifying
-          --  any container state.
- 
-          Set_Element (N (Node));
-          Tree.Free := Tree.Free - 1;
-       end if;
- 
-       --  When a node is allocated from the free store, its pointer components
-       --  (the links to other nodes in the tree) must also be initialized (to
-       --  0, the equivalent of null). This simplifies the post-allocation
-       --  handling of nodes inserted into terminal positions.
- 
-       Set_Parent (N (Node), Parent => 0);
-       Set_Left   (N (Node), Left   => 0);
-       Set_Right  (N (Node), Right  => 0);
-    end Generic_Allocate;
- 
-    -------------------
-    -- Generic_Equal --
-    -------------------
- 
-    function Generic_Equal (Left, Right : Tree_Type'Class) return Boolean is
-       --  Per AI05-0022, the container implementation is required to detect
-       --  element tampering by a generic actual subprogram.
- 
-       Lock_Left : With_Lock (Left.TC'Unrestricted_Access);
-       Lock_Right : With_Lock (Right.TC'Unrestricted_Access);
- 
-       L_Node : Count_Type;
-       R_Node : Count_Type;
- 
-    begin
-       if Left'Address = Right'Address then
-          return True;
-       end if;
- 
-       if Left.Length /= Right.Length then
-          return False;
-       end if;
- 
-       --  If the containers are empty, return a result immediately, so as to
-       --  not manipulate the tamper bits unnecessarily.
- 
-       if Left.Length = 0 then
-          return True;
-       end if;
- 
-       L_Node := Left.First;
-       R_Node := Right.First;
-       while L_Node /= 0 loop
-          if not Is_Equal (Left.Nodes (L_Node), Right.Nodes (R_Node)) then
-             return False;
-          end if;
- 
-          L_Node := Next (Left, L_Node);
-          R_Node := Next (Right, R_Node);
-       end loop;
- 
-       return True;
-    end Generic_Equal;
- 
-    -----------------------
-    -- Generic_Iteration --
-    -----------------------
- 
-    procedure Generic_Iteration (Tree : Tree_Type'Class) is
-       procedure Iterate (P : Count_Type);
- 
-       -------------
-       -- Iterate --
-       -------------
- 
-       procedure Iterate (P : Count_Type) is
-          X : Count_Type := P;
-       begin
-          while X /= 0 loop
-             Iterate (Left (Tree.Nodes (X)));
-             Process (X);
-             X := Right (Tree.Nodes (X));
-          end loop;
-       end Iterate;
- 
-    --  Start of processing for Generic_Iteration
- 
-    begin
-       Iterate (Tree.Root);
-    end Generic_Iteration;
- 
-    ------------------
-    -- Generic_Read --
-    ------------------
- 
-    procedure Generic_Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Tree   : in out Tree_Type'Class)
-    is
-       Len : Count_Type'Base;
- 
-       Node, Last_Node : Count_Type;
- 
-       N : Nodes_Type renames Tree.Nodes;
- 
-    begin
-       Clear_Tree (Tree);
-       Count_Type'Base'Read (Stream, Len);
- 
-       if Checks and then Len < 0 then
-          raise Program_Error with "bad container length (corrupt stream)";
-       end if;
- 
-       if Len = 0 then
-          return;
-       end if;
- 
-       if Checks and then Len > Tree.Capacity then
-          raise Constraint_Error with "length exceeds capacity";
-       end if;
- 
-       --  Use Unconditional_Insert_With_Hint here instead ???
- 
-       Allocate (Tree, Node);
-       pragma Assert (Node /= 0);
- 
-       Set_Color (N (Node), Black);
- 
-       Tree.Root   := Node;
-       Tree.First  := Node;
-       Tree.Last   := Node;
-       Tree.Length := 1;
- 
-       for J in Count_Type range 2 .. Len loop
-          Last_Node := Node;
-          pragma Assert (Last_Node = Tree.Last);
- 
-          Allocate (Tree, Node);
-          pragma Assert (Node /= 0);
- 
-          Set_Color (N (Node), Red);
-          Set_Right (N (Last_Node), Right => Node);
-          Tree.Last := Node;
-          Set_Parent (N (Node), Parent => Last_Node);
- 
-          Rebalance_For_Insert (Tree, Node);
-          Tree.Length := Tree.Length + 1;
-       end loop;
-    end Generic_Read;
- 
-    -------------------------------
-    -- Generic_Reverse_Iteration --
-    -------------------------------
- 
-    procedure Generic_Reverse_Iteration (Tree : Tree_Type'Class) is
-       procedure Iterate (P : Count_Type);
- 
-       -------------
-       -- Iterate --
-       -------------
- 
-       procedure Iterate (P : Count_Type) is
-          X : Count_Type := P;
-       begin
-          while X /= 0 loop
-             Iterate (Right (Tree.Nodes (X)));
-             Process (X);
-             X := Left (Tree.Nodes (X));
-          end loop;
-       end Iterate;
- 
-    --  Start of processing for Generic_Reverse_Iteration
- 
-    begin
-       Iterate (Tree.Root);
-    end Generic_Reverse_Iteration;
- 
-    -------------------
-    -- Generic_Write --
-    -------------------
- 
-    procedure Generic_Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Tree   : Tree_Type'Class)
-    is
-       procedure Process (Node : Count_Type);
-       pragma Inline (Process);
- 
-       procedure Iterate is new Generic_Iteration (Process);
- 
-       -------------
-       -- Process --
-       -------------
- 
-       procedure Process (Node : Count_Type) is
-       begin
-          Write_Node (Stream, Tree.Nodes (Node));
-       end Process;
- 
-    --  Start of processing for Generic_Write
- 
-    begin
-       Count_Type'Base'Write (Stream, Tree.Length);
-       Iterate (Tree);
-    end Generic_Write;
- 
-    -----------------
-    -- Left_Rotate --
-    -----------------
- 
-    procedure Left_Rotate (Tree : in out Tree_Type'Class; X : Count_Type) is
- 
-       --  CLR p. 266
- 
-       N : Nodes_Type renames Tree.Nodes;
- 
-       Y : constant Count_Type := Right (N (X));
-       pragma Assert (Y /= 0);
- 
-    begin
-       Set_Right (N (X), Left (N (Y)));
- 
-       if Left (N (Y)) /= 0 then
-          Set_Parent (N (Left (N (Y))), X);
-       end if;
- 
-       Set_Parent (N (Y), Parent (N (X)));
- 
-       if X = Tree.Root then
-          Tree.Root := Y;
-       elsif X = Left (N (Parent (N (X)))) then
-          Set_Left (N (Parent (N (X))), Y);
-       else
-          pragma Assert (X = Right (N (Parent (N (X)))));
-          Set_Right (N (Parent (N (X))), Y);
-       end if;
- 
-       Set_Left   (N (Y), X);
-       Set_Parent (N (X), Y);
-    end Left_Rotate;
- 
-    ---------
-    -- Max --
-    ---------
- 
-    function Max
-      (Tree : Tree_Type'Class;
-       Node : Count_Type) return Count_Type
-    is
-       --  CLR p. 248
- 
-       X : Count_Type := Node;
-       Y : Count_Type;
- 
-    begin
-       loop
-          Y := Right (Tree.Nodes (X));
- 
-          if Y = 0 then
-             return X;
-          end if;
- 
-          X := Y;
-       end loop;
-    end Max;
- 
-    ---------
-    -- Min --
-    ---------
- 
-    function Min
-      (Tree : Tree_Type'Class;
-       Node : Count_Type) return Count_Type
-    is
-       --  CLR p. 248
- 
-       X : Count_Type := Node;
-       Y : Count_Type;
- 
-    begin
-       loop
-          Y := Left (Tree.Nodes (X));
- 
-          if Y = 0 then
-             return X;
-          end if;
- 
-          X := Y;
-       end loop;
-    end Min;
- 
-    ----------
-    -- Next --
-    ----------
- 
-    function Next
-      (Tree : Tree_Type'Class;
-       Node : Count_Type) return Count_Type
-    is
-    begin
-       --  CLR p. 249
- 
-       if Node = 0 then
-          return 0;
-       end if;
- 
-       if Right (Tree.Nodes (Node)) /= 0 then
-          return Min (Tree, Right (Tree.Nodes (Node)));
-       end if;
- 
-       declare
-          X : Count_Type := Node;
-          Y : Count_Type := Parent (Tree.Nodes (Node));
- 
-       begin
-          while Y /= 0 and then X = Right (Tree.Nodes (Y)) loop
-             X := Y;
-             Y := Parent (Tree.Nodes (Y));
-          end loop;
- 
-          return Y;
-       end;
-    end Next;
- 
-    --------------
-    -- Previous --
-    --------------
- 
-    function Previous
-      (Tree : Tree_Type'Class;
-       Node : Count_Type) return Count_Type
-    is
-    begin
-       if Node = 0 then
-          return 0;
-       end if;
- 
-       if Left (Tree.Nodes (Node)) /= 0 then
-          return Max (Tree, Left (Tree.Nodes (Node)));
-       end if;
- 
-       declare
-          X : Count_Type := Node;
-          Y : Count_Type := Parent (Tree.Nodes (Node));
- 
-       begin
-          while Y /= 0 and then X = Left (Tree.Nodes (Y)) loop
-             X := Y;
-             Y := Parent (Tree.Nodes (Y));
-          end loop;
- 
-          return Y;
-       end;
-    end Previous;
- 
-    --------------------------
-    -- Rebalance_For_Insert --
-    --------------------------
- 
-    procedure Rebalance_For_Insert
-      (Tree : in out Tree_Type'Class;
-       Node : Count_Type)
-    is
-       --  CLR p. 268
- 
-       N : Nodes_Type renames Tree.Nodes;
- 
-       X : Count_Type := Node;
-       pragma Assert (X /= 0);
-       pragma Assert (Color (N (X)) = Red);
- 
-       Y : Count_Type;
- 
-    begin
-       while X /= Tree.Root and then Color (N (Parent (N (X)))) = Red loop
-          if Parent (N (X)) = Left (N (Parent (N (Parent (N (X)))))) then
-             Y := Right (N (Parent (N (Parent (N (X))))));
- 
-             if Y /= 0 and then Color (N (Y)) = Red then
-                Set_Color (N (Parent (N (X))), Black);
-                Set_Color (N (Y), Black);
-                Set_Color (N (Parent (N (Parent (N (X))))), Red);
-                X := Parent (N (Parent (N (X))));
- 
-             else
-                if X = Right (N (Parent (N (X)))) then
-                   X := Parent (N (X));
-                   Left_Rotate (Tree, X);
-                end if;
- 
-                Set_Color (N (Parent (N (X))), Black);
-                Set_Color (N (Parent (N (Parent (N (X))))), Red);
-                Right_Rotate (Tree, Parent (N (Parent (N (X)))));
-             end if;
- 
-          else
-             pragma Assert (Parent (N (X)) =
-                              Right (N (Parent (N (Parent (N (X)))))));
- 
-             Y := Left (N (Parent (N (Parent (N (X))))));
- 
-             if Y /= 0 and then Color (N (Y)) = Red then
-                Set_Color (N (Parent (N (X))), Black);
-                Set_Color (N (Y), Black);
-                Set_Color (N (Parent (N (Parent (N (X))))), Red);
-                X := Parent (N (Parent (N (X))));
- 
-             else
-                if X = Left (N (Parent (N (X)))) then
-                   X := Parent (N (X));
-                   Right_Rotate (Tree, X);
-                end if;
- 
-                Set_Color (N (Parent (N (X))), Black);
-                Set_Color (N (Parent (N (Parent (N (X))))), Red);
-                Left_Rotate (Tree, Parent (N (Parent (N (X)))));
-             end if;
-          end if;
-       end loop;
- 
-       Set_Color (N (Tree.Root), Black);
-    end Rebalance_For_Insert;
- 
-    ------------------
-    -- Right_Rotate --
-    ------------------
- 
-    procedure Right_Rotate (Tree : in out Tree_Type'Class; Y : Count_Type) is
-       N : Nodes_Type renames Tree.Nodes;
- 
-       X : constant Count_Type := Left (N (Y));
-       pragma Assert (X /= 0);
- 
-    begin
-       Set_Left (N (Y), Right (N (X)));
- 
-       if Right (N (X)) /= 0 then
-          Set_Parent (N (Right (N (X))), Y);
-       end if;
- 
-       Set_Parent (N (X), Parent (N (Y)));
- 
-       if Y = Tree.Root then
-          Tree.Root := X;
-       elsif Y = Left (N (Parent (N (Y)))) then
-          Set_Left (N (Parent (N (Y))), X);
-       else
-          pragma Assert (Y = Right (N (Parent (N (Y)))));
-          Set_Right (N (Parent (N (Y))), X);
-       end if;
- 
-       Set_Right  (N (X), Y);
-       Set_Parent (N (Y), X);
-    end Right_Rotate;
- 
-    ---------
-    -- Vet --
-    ---------
- 
-    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
-       then
-          return False;
-       end if;
- 
-       if Tree.Length = 0
-         or else Tree.Root = 0
-         or else Tree.First = 0
-         or else Tree.Last = 0
-       then
-          return False;
-       end if;
- 
-       if Parent (Nodes (Tree.Root)) /= 0 then
-          return False;
-       end if;
- 
-       if Left (Nodes (Tree.First)) /= 0 then
-          return False;
-       end if;
- 
-       if Right (Nodes (Tree.Last)) /= 0 then
-          return False;
-       end if;
- 
-       if Tree.Length = 1 then
-          if Tree.First /= Tree.Last
-            or else Tree.First /= Tree.Root
-          then
-             return False;
-          end if;
- 
-          if Index /= Tree.First then
-             return False;
-          end if;
- 
-          if Parent (Node) /= 0
-            or else Left (Node) /= 0
-            or else Right (Node) /= 0
-          then
-             return False;
-          end if;
- 
-          return True;
-       end if;
- 
-       if Tree.First = Tree.Last then
-          return False;
-       end if;
- 
-       if Tree.Length = 2 then
-          if Tree.First /= Tree.Root and then Tree.Last /= Tree.Root then
-             return False;
-          end if;
- 
-          if Tree.First /= Index and then Tree.Last /= Index then
-             return False;
-          end if;
-       end if;
- 
-       if Left (Node) /= 0 and then Parent (Nodes (Left (Node))) /= Index then
-          return False;
-       end if;
- 
-       if Right (Node) /= 0 and then Parent (Nodes (Right (Node))) /= Index then
-          return False;
-       end if;
- 
-       if Parent (Node) = 0 then
-          if Tree.Root /= Index then
-             return False;
-          end if;
- 
-       elsif Left (Nodes (Parent (Node))) /= Index
-         and then Right (Nodes (Parent (Node))) /= Index
-       then
-          return False;
-       end if;
- 
-       return True;
-    end Vet;
- 
- end Ada.Containers.Red_Black_Trees.Generic_Bounded_Operations;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-rbtgbo.ads gcc-8.1.0/gcc/ada/a-rbtgbo.ads
*** gcc-7.3.0/gcc/ada/a-rbtgbo.ads	Fri Oct 23 12:37:35 2015
--- gcc-8.1.0/gcc/ada/a-rbtgbo.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,156 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --         ADA.CONTAINERS.RED_BLACK_TREES.GENERIC_BOUNDED_OPERATIONS        --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.                  --
- ------------------------------------------------------------------------------
- 
- --  Tree_Type is used to implement the ordered containers. This package
- --  declares the tree operations that do not depend on keys.
- 
- with Ada.Streams; use Ada.Streams;
- 
- generic
-    with package Tree_Types is new Generic_Bounded_Tree_Types (<>);
-    use Tree_Types, Tree_Types.Implementation;
- 
-    with function  Parent (Node : Node_Type) return Count_Type is <>;
- 
-    with procedure Set_Parent
-      (Node   : in out Node_Type;
-       Parent : Count_Type) is <>;
- 
-    with function  Left (Node : Node_Type) return Count_Type is <>;
- 
-    with procedure Set_Left
-      (Node : in out Node_Type;
-       Left : Count_Type) is <>;
- 
-    with function  Right (Node : Node_Type) return Count_Type is <>;
- 
-    with procedure Set_Right
-      (Node  : in out Node_Type;
-       Right : Count_Type) is <>;
- 
-    with function  Color (Node : Node_Type) return Color_Type is <>;
- 
-    with procedure Set_Color
-      (Node  : in out Node_Type;
-       Color : Color_Type) is <>;
- 
- package Ada.Containers.Red_Black_Trees.Generic_Bounded_Operations is
-    pragma Annotate (CodePeer, Skip_Analysis);
-    pragma Pure;
- 
-    function Min (Tree : Tree_Type'Class; Node : Count_Type) return Count_Type;
-    --  Returns the smallest-valued node of the subtree rooted at Node
- 
-    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.
- 
-    function Next
-      (Tree : Tree_Type'Class;
-       Node : Count_Type) return Count_Type;
-    --  Returns the smallest node greater than Node
- 
-    function Previous
-      (Tree : Tree_Type'Class;
-       Node : Count_Type) return Count_Type;
-    --  Returns the largest node less than Node
- 
-    generic
-       with function Is_Equal (L, R : Node_Type) return Boolean;
-    function Generic_Equal (Left, Right : Tree_Type'Class) return Boolean;
-    --  Uses Is_Equal to perform a node-by-node comparison of the
-    --  Left and Right trees; processing stops as soon as the first
-    --  non-equal node is found.
- 
-    procedure Delete_Node_Sans_Free
-      (Tree : in out Tree_Type'Class; Node : Count_Type);
-    --  Removes Node from Tree without deallocating the node. If Tree
-    --  is busy then Program_Error is raised.
- 
-    procedure Clear_Tree (Tree : in out Tree_Type'Class);
-    --  Clears Tree by deallocating all of its nodes. If Tree is busy then
-    --  Program_Error is raised.
- 
-    generic
-       with procedure Process (Node : Count_Type) is <>;
-    procedure Generic_Iteration (Tree : Tree_Type'Class);
-    --  Calls Process for each node in Tree, in order from smallest-valued
-    --  node to largest-valued node.
- 
-    generic
-       with procedure Process (Node : Count_Type) is <>;
-    procedure Generic_Reverse_Iteration (Tree : Tree_Type'Class);
-    --  Calls Process for each node in Tree, in order from largest-valued
-    --  node to smallest-valued node.
- 
-    generic
-       with procedure Write_Node
-         (Stream : not null access Root_Stream_Type'Class;
-          Node   : Node_Type);
-    procedure Generic_Write
-      (Stream : not null access Root_Stream_Type'Class;
-       Tree   : Tree_Type'Class);
-    --  Used to implement stream attribute T'Write. Generic_Write
-    --  first writes the number of nodes into Stream, then calls
-    --  Write_Node for each node in Tree.
- 
-    generic
-       with procedure Allocate
-         (Tree : in out Tree_Type'Class;
-          Node : out Count_Type);
-    procedure Generic_Read
-      (Stream : not null access Root_Stream_Type'Class;
-       Tree   : in out Tree_Type'Class);
-    --  Used to implement stream attribute T'Read. Generic_Read
-    --  first clears Tree. It then reads the number of nodes out of
-    --  Stream, and calls Read_Node for each node in Stream.
- 
-    procedure Rebalance_For_Insert
-      (Tree : in out Tree_Type'Class;
-       Node : Count_Type);
-    --  This rebalances Tree to complete the insertion of Node (which
-    --  must already be linked in at its proper insertion position).
- 
-    generic
-       with procedure Set_Element (Node : in out Node_Type);
-    procedure Generic_Allocate
-      (Tree : in out Tree_Type'Class;
-       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 (Tree : in out Tree_Type'Class; X : Count_Type);
-    --  Return a node back to the free store, from where it had
-    --  been previously claimed via Generic_Allocate.
- 
- end Ada.Containers.Red_Black_Trees.Generic_Bounded_Operations;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-rbtgso.adb gcc-8.1.0/gcc/ada/a-rbtgso.adb
*** gcc-7.3.0/gcc/ada/a-rbtgso.adb	Tue Oct 20 10:23:46 2015
--- gcc-8.1.0/gcc/ada/a-rbtgso.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,739 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --           ADA.CONTAINERS.RED_BLACK_TREES.GENERIC_SET_OPERATIONS          --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Red_Black_Trees.Generic_Set_Operations is
- 
-    pragma Warnings (Off, "variable ""Busy*"" is not referenced");
-    pragma Warnings (Off, "variable ""Lock*"" is not referenced");
-    --  See comment in Ada.Containers.Helpers
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    procedure Clear (Tree : in out Tree_Type);
- 
-    function Copy (Source : Tree_Type) return Tree_Type;
- 
-    -----------
-    -- Clear --
-    -----------
- 
-    procedure Clear (Tree : in out Tree_Type) is
-       use type Helpers.Tamper_Counts;
-       pragma Assert (Tree.TC = (Busy => 0, Lock => 0));
- 
-       Root : Node_Access := Tree.Root;
-       pragma Warnings (Off, Root);
- 
-    begin
-       Tree.Root := null;
-       Tree.First := null;
-       Tree.Last := null;
-       Tree.Length := 0;
- 
-       Delete_Tree (Root);
-    end Clear;
- 
-    ----------
-    -- Copy --
-    ----------
- 
-    function Copy (Source : Tree_Type) return Tree_Type is
-       Target : Tree_Type;
- 
-    begin
-       if Source.Length = 0 then
-          return Target;
-       end if;
- 
-       Target.Root := Copy_Tree (Source.Root);
-       Target.First := Tree_Operations.Min (Target.Root);
-       Target.Last := Tree_Operations.Max (Target.Root);
-       Target.Length := Source.Length;
- 
-       return Target;
-    end Copy;
- 
-    ----------------
-    -- Difference --
-    ----------------
- 
-    procedure Difference (Target : in out Tree_Type; Source : Tree_Type) is
-       Tgt : Node_Access;
-       Src : Node_Access;
- 
-       Compare : Integer;
- 
-    begin
-       if Target'Address = Source'Address then
-          TC_Check (Target.TC);
- 
-          Clear (Target);
-          return;
-       end if;
- 
-       if Source.Length = 0 then
-          return;
-       end if;
- 
-       TC_Check (Target.TC);
- 
-       Tgt := Target.First;
-       Src := Source.First;
-       loop
-          if Tgt = null then
-             exit;
-          end if;
- 
-          if Src = null then
-             exit;
-          end if;
- 
-          --  Per AI05-0022, the container implementation is required to detect
-          --  element tampering by a generic actual subprogram.
- 
-          declare
-             Lock_Target : With_Lock (Target.TC'Unrestricted_Access);
-             Lock_Source : With_Lock (Source.TC'Unrestricted_Access);
-          begin
-             if Is_Less (Tgt, Src) then
-                Compare := -1;
-             elsif Is_Less (Src, Tgt) then
-                Compare := 1;
-             else
-                Compare := 0;
-             end if;
-          end;
- 
-          if Compare < 0 then
-             Tgt := Tree_Operations.Next (Tgt);
- 
-          elsif Compare > 0 then
-             Src := Tree_Operations.Next (Src);
- 
-          else
-             declare
-                X : Node_Access := Tgt;
-             begin
-                Tgt := Tree_Operations.Next (Tgt);
-                Tree_Operations.Delete_Node_Sans_Free (Target, X);
-                Free (X);
-             end;
- 
-             Src := Tree_Operations.Next (Src);
-          end if;
-       end loop;
-    end Difference;
- 
-    function Difference (Left, Right : Tree_Type) return Tree_Type is
-    begin
-       if Left'Address = Right'Address then
-          return Tree_Type'(others => <>);  -- Empty set
-       end if;
- 
-       if Left.Length = 0 then
-          return Tree_Type'(others => <>);  -- Empty set
-       end if;
- 
-       if Right.Length = 0 then
-          return Copy (Left);
-       end if;
- 
-       --  Per AI05-0022, the container implementation is required to detect
-       --  element tampering by a generic actual subprogram.
- 
-       declare
-          Lock_Left : With_Lock (Left.TC'Unrestricted_Access);
-          Lock_Right : With_Lock (Right.TC'Unrestricted_Access);
- 
-          Tree : Tree_Type;
- 
-          L_Node : Node_Access;
-          R_Node : Node_Access;
- 
-          Dst_Node : Node_Access;
-          pragma Warnings (Off, Dst_Node);
- 
-       begin
-          L_Node := Left.First;
-          R_Node := Right.First;
-          loop
-             if L_Node = null then
-                exit;
-             end if;
- 
-             if R_Node = null then
-                while L_Node /= null loop
-                   Insert_With_Hint
-                     (Dst_Tree => Tree,
-                      Dst_Hint => null,
-                      Src_Node => L_Node,
-                      Dst_Node => Dst_Node);
- 
-                   L_Node := Tree_Operations.Next (L_Node);
-                end loop;
- 
-                exit;
-             end if;
- 
-             if Is_Less (L_Node, R_Node) then
-                Insert_With_Hint
-                  (Dst_Tree => Tree,
-                   Dst_Hint => null,
-                   Src_Node => L_Node,
-                   Dst_Node => Dst_Node);
- 
-                L_Node := Tree_Operations.Next (L_Node);
- 
-             elsif Is_Less (R_Node, L_Node) then
-                R_Node := Tree_Operations.Next (R_Node);
- 
-             else
-                L_Node := Tree_Operations.Next (L_Node);
-                R_Node := Tree_Operations.Next (R_Node);
-             end if;
-          end loop;
- 
-          return Tree;
- 
-       exception
-          when others =>
-             Delete_Tree (Tree.Root);
-             raise;
-       end;
-    end Difference;
- 
-    ------------------
-    -- Intersection --
-    ------------------
- 
-    procedure Intersection
-      (Target : in out Tree_Type;
-       Source : Tree_Type)
-    is
-       Tgt : Node_Access;
-       Src : Node_Access;
- 
-       Compare : Integer;
- 
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       TC_Check (Target.TC);
- 
-       if Source.Length = 0 then
-          Clear (Target);
-          return;
-       end if;
- 
-       Tgt := Target.First;
-       Src := Source.First;
-       while Tgt /= null
-         and then Src /= null
-       loop
-          --  Per AI05-0022, the container implementation is required to detect
-          --  element tampering by a generic actual subprogram.
- 
-          declare
-             Lock_Target : With_Lock (Target.TC'Unrestricted_Access);
-             Lock_Source : With_Lock (Source.TC'Unrestricted_Access);
-          begin
-             if Is_Less (Tgt, Src) then
-                Compare := -1;
-             elsif Is_Less (Src, Tgt) then
-                Compare := 1;
-             else
-                Compare := 0;
-             end if;
-          end;
- 
-          if Compare < 0 then
-             declare
-                X : Node_Access := Tgt;
-             begin
-                Tgt := Tree_Operations.Next (Tgt);
-                Tree_Operations.Delete_Node_Sans_Free (Target, X);
-                Free (X);
-             end;
- 
-          elsif Compare > 0 then
-             Src := Tree_Operations.Next (Src);
- 
-          else
-             Tgt := Tree_Operations.Next (Tgt);
-             Src := Tree_Operations.Next (Src);
-          end if;
-       end loop;
- 
-       while Tgt /= null loop
-          declare
-             X : Node_Access := Tgt;
-          begin
-             Tgt := Tree_Operations.Next (Tgt);
-             Tree_Operations.Delete_Node_Sans_Free (Target, X);
-             Free (X);
-          end;
-       end loop;
-    end Intersection;
- 
-    function Intersection (Left, Right : Tree_Type) return Tree_Type is
-    begin
-       if Left'Address = Right'Address then
-          return Copy (Left);
-       end if;
- 
-       --  Per AI05-0022, the container implementation is required to detect
-       --  element tampering by a generic actual subprogram.
- 
-       declare
-          Lock_Left : With_Lock (Left.TC'Unrestricted_Access);
-          Lock_Right : With_Lock (Right.TC'Unrestricted_Access);
- 
-          Tree : Tree_Type;
- 
-          L_Node : Node_Access;
-          R_Node : Node_Access;
- 
-          Dst_Node : Node_Access;
-          pragma Warnings (Off, Dst_Node);
- 
-       begin
-          L_Node := Left.First;
-          R_Node := Right.First;
-          loop
-             if L_Node = null then
-                exit;
-             end if;
- 
-             if R_Node = null then
-                exit;
-             end if;
- 
-             if Is_Less (L_Node, R_Node) then
-                L_Node := Tree_Operations.Next (L_Node);
- 
-             elsif Is_Less (R_Node, L_Node) then
-                R_Node := Tree_Operations.Next (R_Node);
- 
-             else
-                Insert_With_Hint
-                  (Dst_Tree => Tree,
-                   Dst_Hint => null,
-                   Src_Node => L_Node,
-                   Dst_Node => Dst_Node);
- 
-                L_Node := Tree_Operations.Next (L_Node);
-                R_Node := Tree_Operations.Next (R_Node);
-             end if;
-          end loop;
- 
-          return Tree;
- 
-       exception
-          when others =>
-             Delete_Tree (Tree.Root);
-             raise;
-       end;
-    end Intersection;
- 
-    ---------------
-    -- Is_Subset --
-    ---------------
- 
-    function Is_Subset
-      (Subset : Tree_Type;
-       Of_Set : Tree_Type) return Boolean
-    is
-    begin
-       if Subset'Address = Of_Set'Address then
-          return True;
-       end if;
- 
-       if Subset.Length > Of_Set.Length then
-          return False;
-       end if;
- 
-       --  Per AI05-0022, the container implementation is required to detect
-       --  element tampering by a generic actual subprogram.
- 
-       declare
-          Lock_Subset : With_Lock (Subset.TC'Unrestricted_Access);
-          Lock_Of_Set : With_Lock (Of_Set.TC'Unrestricted_Access);
- 
-          Subset_Node : Node_Access;
-          Set_Node    : Node_Access;
- 
-       begin
-          Subset_Node := Subset.First;
-          Set_Node    := Of_Set.First;
-          loop
-             if Set_Node = null then
-                return Subset_Node = null;
-             end if;
- 
-             if Subset_Node = null then
-                return True;
-             end if;
- 
-             if Is_Less (Subset_Node, Set_Node) then
-                return False;
-             end if;
- 
-             if Is_Less (Set_Node, Subset_Node) then
-                Set_Node := Tree_Operations.Next (Set_Node);
-             else
-                Set_Node := Tree_Operations.Next (Set_Node);
-                Subset_Node := Tree_Operations.Next (Subset_Node);
-             end if;
-          end loop;
-       end;
-    end Is_Subset;
- 
-    -------------
-    -- Overlap --
-    -------------
- 
-    function Overlap (Left, Right : Tree_Type) return Boolean is
-    begin
-       if Left'Address = Right'Address then
-          return Left.Length /= 0;
-       end if;
- 
-       --  Per AI05-0022, the container implementation is required to detect
-       --  element tampering by a generic actual subprogram.
- 
-       declare
-          Lock_Left : With_Lock (Left.TC'Unrestricted_Access);
-          Lock_Right : With_Lock (Right.TC'Unrestricted_Access);
- 
-          L_Node : Node_Access;
-          R_Node : Node_Access;
-       begin
-          L_Node := Left.First;
-          R_Node := Right.First;
-          loop
-             if L_Node = null
-               or else R_Node = null
-             then
-                return False;
-             end if;
- 
-             if Is_Less (L_Node, R_Node) then
-                L_Node := Tree_Operations.Next (L_Node);
- 
-             elsif Is_Less (R_Node, L_Node) then
-                R_Node := Tree_Operations.Next (R_Node);
- 
-             else
-                return True;
-             end if;
-          end loop;
-       end;
-    end Overlap;
- 
-    --------------------------
-    -- Symmetric_Difference --
-    --------------------------
- 
-    procedure Symmetric_Difference
-      (Target : in out Tree_Type;
-       Source : Tree_Type)
-    is
-       Tgt : Node_Access;
-       Src : Node_Access;
- 
-       New_Tgt_Node : Node_Access;
-       pragma Warnings (Off, New_Tgt_Node);
- 
-       Compare : Integer;
- 
-    begin
-       if Target'Address = Source'Address then
-          Clear (Target);
-          return;
-       end if;
- 
-       Tgt := Target.First;
-       Src := Source.First;
-       loop
-          if Tgt = null then
-             while Src /= null loop
-                Insert_With_Hint
-                  (Dst_Tree => Target,
-                   Dst_Hint => null,
-                   Src_Node => Src,
-                   Dst_Node => New_Tgt_Node);
- 
-                Src := Tree_Operations.Next (Src);
-             end loop;
- 
-             return;
-          end if;
- 
-          if Src = null then
-             return;
-          end if;
- 
-          --  Per AI05-0022, the container implementation is required to detect
-          --  element tampering by a generic actual subprogram.
- 
-          declare
-             Lock_Target : With_Lock (Target.TC'Unrestricted_Access);
-             Lock_Source : With_Lock (Source.TC'Unrestricted_Access);
-          begin
-             if Is_Less (Tgt, Src) then
-                Compare := -1;
-             elsif Is_Less (Src, Tgt) then
-                Compare := 1;
-             else
-                Compare := 0;
-             end if;
-          end;
- 
-          if Compare < 0 then
-             Tgt := Tree_Operations.Next (Tgt);
- 
-          elsif Compare > 0 then
-             Insert_With_Hint
-               (Dst_Tree => Target,
-                Dst_Hint => Tgt,
-                Src_Node => Src,
-                Dst_Node => New_Tgt_Node);
- 
-             Src := Tree_Operations.Next (Src);
- 
-          else
-             declare
-                X : Node_Access := Tgt;
-             begin
-                Tgt := Tree_Operations.Next (Tgt);
-                Tree_Operations.Delete_Node_Sans_Free (Target, X);
-                Free (X);
-             end;
- 
-             Src := Tree_Operations.Next (Src);
-          end if;
-       end loop;
-    end Symmetric_Difference;
- 
-    function Symmetric_Difference (Left, Right : Tree_Type) return Tree_Type is
-    begin
-       if Left'Address = Right'Address then
-          return Tree_Type'(others => <>);  -- Empty set
-       end if;
- 
-       if Right.Length = 0 then
-          return Copy (Left);
-       end if;
- 
-       if Left.Length = 0 then
-          return Copy (Right);
-       end if;
- 
-       --  Per AI05-0022, the container implementation is required to detect
-       --  element tampering by a generic actual subprogram.
- 
-       declare
-          Lock_Left : With_Lock (Left.TC'Unrestricted_Access);
-          Lock_Right : With_Lock (Right.TC'Unrestricted_Access);
- 
-          Tree : Tree_Type;
- 
-          L_Node : Node_Access;
-          R_Node : Node_Access;
- 
-          Dst_Node : Node_Access;
-          pragma Warnings (Off, Dst_Node);
- 
-       begin
-          L_Node := Left.First;
-          R_Node := Right.First;
-          loop
-             if L_Node = null then
-                while R_Node /= null loop
-                   Insert_With_Hint
-                     (Dst_Tree => Tree,
-                      Dst_Hint => null,
-                      Src_Node => R_Node,
-                      Dst_Node => Dst_Node);
-                   R_Node := Tree_Operations.Next (R_Node);
-                end loop;
- 
-                exit;
-             end if;
- 
-             if R_Node = null then
-                while L_Node /= null loop
-                   Insert_With_Hint
-                     (Dst_Tree => Tree,
-                      Dst_Hint => null,
-                      Src_Node => L_Node,
-                      Dst_Node => Dst_Node);
- 
-                   L_Node := Tree_Operations.Next (L_Node);
-                end loop;
- 
-                exit;
-             end if;
- 
-             if Is_Less (L_Node, R_Node) then
-                Insert_With_Hint
-                  (Dst_Tree => Tree,
-                   Dst_Hint => null,
-                   Src_Node => L_Node,
-                   Dst_Node => Dst_Node);
- 
-                L_Node := Tree_Operations.Next (L_Node);
- 
-             elsif Is_Less (R_Node, L_Node) then
-                Insert_With_Hint
-                  (Dst_Tree => Tree,
-                   Dst_Hint => null,
-                   Src_Node => R_Node,
-                   Dst_Node => Dst_Node);
- 
-                R_Node := Tree_Operations.Next (R_Node);
- 
-             else
-                L_Node := Tree_Operations.Next (L_Node);
-                R_Node := Tree_Operations.Next (R_Node);
-             end if;
-          end loop;
- 
-          return Tree;
- 
-       exception
-          when others =>
-             Delete_Tree (Tree.Root);
-             raise;
-       end;
-    end Symmetric_Difference;
- 
-    -----------
-    -- Union --
-    -----------
- 
-    procedure Union (Target : in out Tree_Type; Source : Tree_Type) is
-       Hint : Node_Access;
- 
-       procedure Process (Node : Node_Access);
-       pragma Inline (Process);
- 
-       procedure Iterate is new Tree_Operations.Generic_Iteration (Process);
- 
-       -------------
-       -- Process --
-       -------------
- 
-       procedure Process (Node : Node_Access) is
-       begin
-          Insert_With_Hint
-            (Dst_Tree => Target,
-             Dst_Hint => Hint,  -- use node most recently inserted as hint
-             Src_Node => Node,
-             Dst_Node => Hint);
-       end Process;
- 
-    --  Start of processing for Union
- 
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       --  Per AI05-0022, the container implementation is required to detect
-       --  element tampering by a generic actual subprogram.
- 
-       declare
-          Lock_Source : With_Lock (Source.TC'Unrestricted_Access);
-       begin
-          Iterate (Source);
-       end;
-    end Union;
- 
-    function Union (Left, Right : Tree_Type) return Tree_Type is
-    begin
-       if Left'Address = Right'Address then
-          return Copy (Left);
-       end if;
- 
-       if Left.Length = 0 then
-          return Copy (Right);
-       end if;
- 
-       if Right.Length = 0 then
-          return Copy (Left);
-       end if;
- 
-       declare
-          Lock_Left : With_Lock (Left.TC'Unrestricted_Access);
-          Lock_Right : With_Lock (Right.TC'Unrestricted_Access);
- 
-          Tree : Tree_Type := Copy (Left);
- 
-          Hint : Node_Access;
- 
-          procedure Process (Node : Node_Access);
-          pragma Inline (Process);
- 
-          procedure Iterate is
-            new Tree_Operations.Generic_Iteration (Process);
- 
-          -------------
-          -- Process --
-          -------------
- 
-          procedure Process (Node : Node_Access) is
-          begin
-             Insert_With_Hint
-               (Dst_Tree => Tree,
-                Dst_Hint => Hint,  -- use node most recently inserted as hint
-                Src_Node => Node,
-                Dst_Node => Hint);
-          end Process;
- 
-       --  Start of processing for Union
- 
-       begin
-          Iterate (Right);
-          return Tree;
- 
-       exception
-          when others =>
-             Delete_Tree (Tree.Root);
-             raise;
-       end;
-    end Union;
- 
- end Ada.Containers.Red_Black_Trees.Generic_Set_Operations;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-rbtgso.ads gcc-8.1.0/gcc/ada/a-rbtgso.ads
*** gcc-7.3.0/gcc/ada/a-rbtgso.ads	Tue Oct 20 10:23:46 2015
--- gcc-8.1.0/gcc/ada/a-rbtgso.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,106 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --           ADA.CONTAINERS.RED_BLACK_TREES.GENERIC_SET_OPERATIONS          --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.                  --
- ------------------------------------------------------------------------------
- 
- --  Tree_Type is used to implement ordered containers. This package declares
- --  set-based tree operations.
- 
- with Ada.Containers.Red_Black_Trees.Generic_Operations;
- 
- generic
-    with package Tree_Operations is new Generic_Operations (<>);
- 
-    use Tree_Operations.Tree_Types, Tree_Operations.Tree_Types.Implementation;
- 
-    with procedure Insert_With_Hint
-      (Dst_Tree : in out Tree_Type;
-       Dst_Hint : Node_Access;
-       Src_Node : Node_Access;
-       Dst_Node : out Node_Access);
- 
-    with function Copy_Tree (Source_Root : Node_Access)
-        return Node_Access;
- 
-    with procedure Delete_Tree (X : in out Node_Access);
- 
-    with function Is_Less (Left, Right : Node_Access) return Boolean;
- 
-    with procedure Free (X : in out Node_Access);
- 
- package Ada.Containers.Red_Black_Trees.Generic_Set_Operations is
-    pragma Pure;
- 
-    procedure Union (Target : in out Tree_Type; Source : Tree_Type);
-    --  Attempts to insert each element of Source in Target. If Target is
-    --  busy then Program_Error is raised. We say "attempts" here because
-    --  if these are unique-element sets, then the insertion should fail
-    --  (not insert a new item) when the insertion item from Source is
-    --  equivalent to an item already in Target. If these are multisets
-    --  then of course the attempt should always succeed.
- 
-    function Union (Left, Right : Tree_Type) return Tree_Type;
-    --  Makes a copy of Left, and attempts to insert each element of
-    --  Right into the copy, then returns the copy.
- 
-    procedure Intersection (Target : in out Tree_Type; Source : Tree_Type);
-    --  Removes elements from Target that are not equivalent to items in
-    --  Source. If Target is busy then Program_Error is raised.
- 
-    function Intersection (Left, Right : Tree_Type) return Tree_Type;
-    --  Returns a set comprising all the items in Left equivalent to items in
-    --  Right.
- 
-    procedure Difference (Target : in out Tree_Type; Source : Tree_Type);
-    --  Removes elements from Target that are equivalent to items in Source. If
-    --  Target is busy then Program_Error is raised.
- 
-    function Difference (Left, Right : Tree_Type) return Tree_Type;
-    --  Returns a set comprising all the items in Left not equivalent to items
-    --  in Right.
- 
-    procedure Symmetric_Difference
-      (Target : in out Tree_Type;
-       Source : Tree_Type);
-    --  Removes from Target elements that are equivalent to items in Source, and
-    --  inserts into Target items from Source not equivalent elements in
-    --  Target. If Target is busy then Program_Error is raised.
- 
-    function Symmetric_Difference (Left, Right : Tree_Type) return Tree_Type;
-    --  Returns a set comprising the union of the elements in Left not
-    --  equivalent to items in Right, and the elements in Right not equivalent
-    --  to items in Left.
- 
-    function Is_Subset (Subset : Tree_Type; Of_Set : Tree_Type) return Boolean;
-    --  Returns False if Subset contains at least one element not equivalent to
-    --  any item in Of_Set; returns True otherwise.
- 
-    function Overlap (Left, Right : Tree_Type) return Boolean;
-    --  Returns True if at least one element of Left is equivalent to an item in
-    --  Right; returns False otherwise.
- 
- end Ada.Containers.Red_Black_Trees.Generic_Set_Operations;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-reatim.adb gcc-8.1.0/gcc/ada/a-reatim.adb
*** gcc-7.3.0/gcc/ada/a-reatim.adb	Mon Oct 26 10:12:40 2015
--- gcc-8.1.0/gcc/ada/a-reatim.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,390 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
- --                                                                          --
- --                         A D A . R E A L _ T I M E                        --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --             Copyright (C) 1991-1994, Florida State University            --
- --                     Copyright (C) 1995-2015, AdaCore                     --
- --                                                                          --
- -- GNAT is 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/>.                                          --
- --                                                                          --
- -- GNARL was developed by the GNARL team at Florida State University.       --
- -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with System.Tasking;
- with Unchecked_Conversion;
- 
- package body Ada.Real_Time with
-   SPARK_Mode => Off
- is
- 
-    ---------
-    -- "*" --
-    ---------
- 
-    --  Note that Constraint_Error may be propagated
- 
-    function "*" (Left : Time_Span; Right : Integer) return Time_Span is
-       pragma Unsuppress (Overflow_Check);
-    begin
-       return Time_Span (Duration (Left) * Right);
-    end "*";
- 
-    function "*" (Left : Integer; Right : Time_Span) return Time_Span is
-       pragma Unsuppress (Overflow_Check);
-    begin
-       return Time_Span (Left * Duration (Right));
-    end "*";
- 
-    ---------
-    -- "+" --
-    ---------
- 
-    --  Note that Constraint_Error may be propagated
- 
-    function "+" (Left : Time; Right : Time_Span) return Time is
-       pragma Unsuppress (Overflow_Check);
-    begin
-       return Time (Duration (Left) + Duration (Right));
-    end "+";
- 
-    function "+" (Left : Time_Span; Right : Time) return Time is
-       pragma Unsuppress (Overflow_Check);
-    begin
-       return Time (Duration (Left) + Duration (Right));
-    end "+";
- 
-    function "+" (Left, Right : Time_Span) return Time_Span is
-       pragma Unsuppress (Overflow_Check);
-    begin
-       return Time_Span (Duration (Left) + Duration (Right));
-    end "+";
- 
-    ---------
-    -- "-" --
-    ---------
- 
-    --  Note that Constraint_Error may be propagated
- 
-    function "-" (Left : Time; Right : Time_Span) return Time is
-       pragma Unsuppress (Overflow_Check);
-    begin
-       return Time (Duration (Left) - Duration (Right));
-    end "-";
- 
-    function "-" (Left, Right : Time) return Time_Span is
-       pragma Unsuppress (Overflow_Check);
-    begin
-       return Time_Span (Duration (Left) - Duration (Right));
-    end "-";
- 
-    function "-" (Left, Right : Time_Span) return Time_Span is
-       pragma Unsuppress (Overflow_Check);
-    begin
-       return Time_Span (Duration (Left) - Duration (Right));
-    end "-";
- 
-    function "-" (Right : Time_Span) return Time_Span is
-       pragma Unsuppress (Overflow_Check);
-    begin
-       return Time_Span_Zero - Right;
-    end "-";
- 
-    ---------
-    -- "/" --
-    ---------
- 
-    --  Note that Constraint_Error may be propagated
- 
-    function "/" (Left, Right : Time_Span) return Integer is
-       pragma Unsuppress (Overflow_Check);
-       pragma Unsuppress (Division_Check);
- 
-       --  RM D.8 (27) specifies the effects of operators on Time_Span, and
-       --  rounding of the division operator in particular, to be the same as
-       --  effects on integer types. To get the correct rounding we first
-       --  convert Time_Span to its root type Duration, which is represented as
-       --  a 64-bit signed integer, and then use integer division.
- 
-       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)));
-    end "/";
- 
-    function "/" (Left : Time_Span; Right : Integer) return Time_Span is
-       pragma Unsuppress (Overflow_Check);
-       pragma Unsuppress (Division_Check);
-    begin
-       --  Even though checks are unsuppressed, we need an explicit check for
-       --  the case of largest negative integer divided by minus one, since
-       --  some library routines we use fail to catch this case. This will be
-       --  fixed at the compiler level in the future, at which point this test
-       --  can be removed.
- 
-       if Left = Time_Span_First and then Right = -1 then
-          raise Constraint_Error with "overflow";
-       end if;
- 
-       return Time_Span (Duration (Left) / Right);
-    end "/";
- 
-    -----------
-    -- Clock --
-    -----------
- 
-    function Clock return Time is
-    begin
-       return Time (System.Task_Primitives.Operations.Monotonic_Clock);
-    end Clock;
- 
-    ------------------
-    -- Microseconds --
-    ------------------
- 
-    function Microseconds (US : Integer) return Time_Span is
-    begin
-       return Time_Span_Unit * US * 1_000;
-    end Microseconds;
- 
-    ------------------
-    -- Milliseconds --
-    ------------------
- 
-    function Milliseconds (MS : Integer) return Time_Span is
-    begin
-       return Time_Span_Unit * MS * 1_000_000;
-    end Milliseconds;
- 
-    -------------
-    -- Minutes --
-    -------------
- 
-    function Minutes (M : Integer) return Time_Span is
-    begin
-       return Milliseconds (M) * Integer'(60_000);
-    end Minutes;
- 
-    -----------------
-    -- Nanoseconds --
-    -----------------
- 
-    function Nanoseconds (NS : Integer) return Time_Span is
-    begin
-       return Time_Span_Unit * NS;
-    end Nanoseconds;
- 
-    -------------
-    -- Seconds --
-    -------------
- 
-    function Seconds (S : Integer) return Time_Span is
-    begin
-       return Milliseconds (S) * Integer'(1000);
-    end Seconds;
- 
-    -----------
-    -- Split --
-    -----------
- 
-    procedure Split (T : Time; SC : out Seconds_Count; TS : out Time_Span) is
-       T_Val : Time;
- 
-    begin
-       --  Special-case for Time_First, whose absolute value is anomalous,
-       --  courtesy of two's complement.
- 
-       T_Val := (if T = Time_First then abs (Time_Last) else abs (T));
- 
-       --  Extract the integer part of T, truncating towards zero
- 
-       SC :=
-         (if T_Val < 0.5 then 0 else Seconds_Count (Time_Span'(T_Val - 0.5)));
- 
-       if T < 0.0 then
-          SC := -SC;
-       end if;
- 
-       --  If original time is negative, need to truncate towards negative
-       --  infinity, to make TS non-negative, as per ARM.
- 
-       if Time (SC) > T then
-          SC := SC - 1;
-       end if;
- 
-       TS := Time_Span (Duration (T) - Duration (SC));
-    end Split;
- 
-    -------------
-    -- Time_Of --
-    -------------
- 
-    function Time_Of (SC : Seconds_Count; TS : Time_Span) return Time is
-       pragma Suppress (Overflow_Check);
-       pragma Suppress (Range_Check);
-       --  We do all our own checks for this function
- 
-       --  This is not such a simple case, since TS is already 64 bits, and
-       --  so we can't just promote everything to a wider type to ensure proper
-       --  testing for overflow. The situation is that Seconds_Count is a MUCH
-       --  wider type than Time_Span and Time (both of which have the underlying
-       --  type Duration).
- 
-       --         <------------------- Seconds_Count -------------------->
-       --                            <-- Duration -->
- 
-       --  Now it is possible for an SC value outside the Duration range to
-       --  be "brought back into range" by an appropriate TS value, but there
-       --  are also clearly SC values that are completely out of range. Note
-       --  that the above diagram is wildly out of scale, the difference in
-       --  ranges is much greater than shown.
- 
-       --  We can't just go generating out of range Duration values to test for
-       --  overflow, since Duration is a full range type, so we follow the steps
-       --  shown below.
- 
-       SC_Lo : constant Seconds_Count :=
-                 Seconds_Count (Duration (Time_Span_First) + Duration'(0.5));
-       SC_Hi : constant Seconds_Count :=
-                 Seconds_Count (Duration (Time_Span_Last)  - Duration'(0.5));
-       --  These are the maximum values of the seconds (integer) part of the
-       --  Duration range. Used to compute and check the seconds in the result.
- 
-       TS_SC : Seconds_Count;
-       --  Seconds part of input value
- 
-       TS_Fraction : Duration;
-       --  Fractional part of input value, may be negative
- 
-       Result_SC : Seconds_Count;
-       --  Seconds value for result
- 
-       Fudge : constant Seconds_Count := 10;
-       --  Fudge value used to do end point checks far from end point
- 
-       FudgeD : constant Duration := Duration (Fudge);
-       --  Fudge value as Duration
- 
-       Fudged_Result : Duration;
-       --  Result fudged up or down by FudgeD
- 
-       procedure Out_Of_Range;
-       pragma No_Return (Out_Of_Range);
-       --  Raise exception for result out of range
- 
-       ------------------
-       -- Out_Of_Range --
-       ------------------
- 
-       procedure Out_Of_Range is
-       begin
-          raise Constraint_Error with
-            "result for Ada.Real_Time.Time_Of is out of range";
-       end Out_Of_Range;
- 
-    --  Start of processing for Time_Of
- 
-    begin
-       --  If SC is so far out of range that there is no possibility of the
-       --  addition of TS getting it back in range, raise an exception right
-       --  away. That way we don't have to worry about SC values overflowing.
- 
-       if SC < 3 * SC_Lo or else SC > 3 * SC_Hi then
-          Out_Of_Range;
-       end if;
- 
-       --  Decompose input TS value
- 
-       TS_SC := Seconds_Count (Duration (TS));
-       TS_Fraction := Duration (TS) - Duration (TS_SC);
- 
-       --  Compute result seconds. If clearly out of range, raise error now
- 
-       Result_SC := SC + TS_SC;
- 
-       if Result_SC < (SC_Lo - 1) or else Result_SC > (SC_Hi + 1) then
-          Out_Of_Range;
-       end if;
- 
-       --  Now the result is simply Result_SC + TS_Fraction, but we can't just
-       --  go computing that since it might be out of range. So what we do is
-       --  to compute a value fudged down or up by 10.0 (arbitrary value, but
-       --  that will do fine), and check that fudged value, and if in range
-       --  unfudge it and return the result.
- 
-       --  Fudge positive result down, and check high bound
- 
-       if Result_SC > 0 then
-          Fudged_Result := Duration (Result_SC - Fudge) + TS_Fraction;
- 
-          if Fudged_Result <= Duration'Last - FudgeD then
-             return Time (Fudged_Result + FudgeD);
-          else
-             Out_Of_Range;
-          end if;
- 
-       --  Same for negative values of seconds, fudge up and check low bound
- 
-       else
-          Fudged_Result := Duration (Result_SC + Fudge) + TS_Fraction;
- 
-          if Fudged_Result >= Duration'First + FudgeD then
-             return Time (Fudged_Result - FudgeD);
-          else
-             Out_Of_Range;
-          end if;
-       end if;
-    end Time_Of;
- 
-    -----------------
-    -- To_Duration --
-    -----------------
- 
-    function To_Duration (TS : Time_Span) return Duration is
-    begin
-       return Duration (TS);
-    end To_Duration;
- 
-    ------------------
-    -- To_Time_Span --
-    ------------------
- 
-    function To_Time_Span (D : Duration) return Time_Span is
-    begin
-       --  Note regarding AI-00432 requiring range checking on this conversion.
-       --  In almost all versions of GNAT (and all to which this version of the
-       --  Ada.Real_Time package apply), the range of Time_Span and Duration are
-       --  the same, so there is no issue of overflow.
- 
-       return Time_Span (D);
-    end To_Time_Span;
- 
- begin
-    --  Ensure that the tasking run time is initialized when using clock and/or
-    --  delay operations. The initialization routine has the required machinery
-    --  to prevent multiple calls to Initialize.
- 
-    System.Tasking.Initialize;
- end Ada.Real_Time;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-reatim.ads gcc-8.1.0/gcc/ada/a-reatim.ads
*** gcc-7.3.0/gcc/ada/a-reatim.ads	Wed Apr 20 09:04:48 2016
--- gcc-8.1.0/gcc/ada/a-reatim.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,187 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                         A D A . R E A L _ T I M E                        --
- --                                                                          --
- --                                  S p e c                                 --
- --                                                                          --
- --          Copyright (C) 1992-2015, Free Software Foundation, 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with System.Task_Primitives.Operations;
- pragma Elaborate_All (System.Task_Primitives.Operations);
- 
- package Ada.Real_Time with
-   SPARK_Mode,
-   Abstract_State => (Clock_Time with Synchronous,
-                                      External => (Async_Readers,
-                                                   Async_Writers)),
-   Initializes    => Clock_Time
- is
- 
-    pragma Compile_Time_Error
-      (Duration'Size /= 64,
-       "this version of Ada.Real_Time requires 64-bit Duration");
- 
-    type Time is private;
-    Time_First : constant Time;
-    Time_Last  : constant Time;
-    Time_Unit  : constant := 10#1.0#E-9;
- 
-    type Time_Span is private;
-    Time_Span_First : constant Time_Span;
-    Time_Span_Last  : constant Time_Span;
-    Time_Span_Zero  : constant Time_Span;
-    Time_Span_Unit  : constant Time_Span;
- 
-    Tick : constant Time_Span;
-    function Clock return Time with
-      Volatile_Function,
-      Global => Clock_Time;
- 
-    function "+"  (Left : Time;      Right : Time_Span) return Time with
-      Global => null;
-    function "+"  (Left : Time_Span; Right : Time)      return Time with
-      Global => null;
-    function "-"  (Left : Time;      Right : Time_Span) return Time with
-      Global => null;
-    function "-"  (Left : Time;      Right : Time)      return Time_Span with
-      Global => null;
- 
-    function "<"  (Left, Right : Time) return Boolean with
-      Global => null;
-    function "<=" (Left, Right : Time) return Boolean with
-      Global => null;
-    function ">"  (Left, Right : Time) return Boolean with
-      Global => null;
-    function ">=" (Left, Right : Time) return Boolean with
-      Global => null;
- 
-    function "+"  (Left, Right : Time_Span)             return Time_Span with
-      Global => null;
-    function "-"  (Left, Right : Time_Span)             return Time_Span with
-      Global => null;
-    function "-"  (Right : Time_Span)                   return Time_Span with
-      Global => null;
-    function "*"  (Left : Time_Span; Right : Integer)   return Time_Span with
-      Global => null;
-    function "*"  (Left : Integer;   Right : Time_Span) return Time_Span with
-      Global => null;
-    function "/"  (Left, Right : Time_Span)             return Integer with
-      Global => null;
-    function "/"  (Left : Time_Span; Right : Integer)   return Time_Span with
-      Global => null;
- 
-    function "abs" (Right : Time_Span) return Time_Span with
-      Global => null;
- 
-    function "<"  (Left, Right : Time_Span) return Boolean with
-      Global => null;
-    function "<=" (Left, Right : Time_Span) return Boolean with
-      Global => null;
-    function ">"  (Left, Right : Time_Span) return Boolean with
-      Global => null;
-    function ">=" (Left, Right : Time_Span) return Boolean with
-      Global => null;
- 
-    function To_Duration  (TS : Time_Span) return Duration with
-      Global => null;
-    function To_Time_Span (D : Duration)   return Time_Span with
-      Global => null;
- 
-    function Nanoseconds  (NS : Integer) return Time_Span with
-      Global => null;
-    function Microseconds (US : Integer) return Time_Span with
-      Global => null;
-    function Milliseconds (MS : Integer) return Time_Span with
-      Global => null;
- 
-    function Seconds (S : Integer) return Time_Span with
-      Global => null;
-    pragma Ada_05 (Seconds);
- 
-    function Minutes (M : Integer) return Time_Span with
-      Global => null;
-    pragma Ada_05 (Minutes);
- 
-    type Seconds_Count is new Long_Long_Integer;
-    --  Seconds_Count needs 64 bits, since the type Time has the full range of
-    --  Duration. The delta of Duration is 10 ** (-9), so the maximum number of
-    --  seconds is 2**63/10**9 = 8*10**9 which does not quite fit in 32 bits.
-    --  However, rather than make this explicitly 64-bits we derive from
-    --  Long_Long_Integer. In normal usage this will have the same effect. But
-    --  in the case of CodePeer with a target configuration file with a maximum
-    --  integer size of 32, it allows analysis of this unit.
- 
-    procedure Split (T : Time; SC : out Seconds_Count; TS : out Time_Span)
-    with
-      Global => null;
-    function Time_Of (SC : Seconds_Count; TS : Time_Span) return Time
-    with
-      Global => null;
- 
- private
-    pragma SPARK_Mode (Off);
- 
-    --  Time and Time_Span are represented in 64-bit Duration value in
-    --  nanoseconds. For example, 1 second and 1 nanosecond is represented
-    --  as the stored integer 1_000_000_001. This is for the 64-bit Duration
-    --  case, not clear if this also is used for 32-bit Duration values.
- 
-    type Time is new Duration;
- 
-    Time_First : constant Time := Time'First;
- 
-    Time_Last  : constant Time := Time'Last;
- 
-    type Time_Span is new Duration;
- 
-    Time_Span_First : constant Time_Span := Time_Span'First;
- 
-    Time_Span_Last  : constant Time_Span := Time_Span'Last;
- 
-    Time_Span_Zero  : constant Time_Span := 0.0;
- 
-    Time_Span_Unit  : constant Time_Span := 10#1.0#E-9;
- 
-    Tick : constant Time_Span :=
-             Time_Span (System.Task_Primitives.Operations.RT_Resolution);
- 
-    pragma Import (Intrinsic, "<");
-    pragma Import (Intrinsic, "<=");
-    pragma Import (Intrinsic, ">");
-    pragma Import (Intrinsic, ">=");
-    pragma Import (Intrinsic, "abs");
- 
-    pragma Inline (Microseconds);
-    pragma Inline (Milliseconds);
-    pragma Inline (Nanoseconds);
-    pragma Inline (Seconds);
-    pragma Inline (Minutes);
- 
- end Ada.Real_Time;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-retide.adb gcc-8.1.0/gcc/ada/a-retide.adb
*** gcc-7.3.0/gcc/ada/a-retide.adb	Wed Jun 23 06:31:57 2010
--- gcc-8.1.0/gcc/ada/a-retide.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,78 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                  GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                --
- --                                                                          --
- --                   A D A . R E A L _ T I M E . D E L A Y S                --
- --                                                                          --
- --                                  B o d y                                 --
- --                                                                          --
- --         Copyright (C) 1992-2010, Free Software Foundation, Inc.          --
- --                                                                          --
- -- GNARL is 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/>.                                          --
- --                                                                          --
- -- GNARL was developed by the GNARL team at Florida State University.       --
- -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Exceptions;
- 
- with System.Tasking;
- with System.Task_Primitives.Operations;
- 
- package body Ada.Real_Time.Delays is
- 
-    package STPO renames System.Task_Primitives.Operations;
- 
-    ----------------
-    -- Local Data --
-    ----------------
- 
-    Absolute_RT : constant := 2;
- 
-    -----------------
-    -- Delay_Until --
-    -----------------
- 
-    procedure Delay_Until (T : Time) is
-       Self_Id : constant System.Tasking.Task_Id := STPO.Self;
- 
-    begin
-       --  If pragma Detect_Blocking is active, Program_Error must be
-       --  raised if this potentially blocking operation is called from a
-       --  protected action.
- 
-       if System.Tasking.Detect_Blocking
-         and then Self_Id.Common.Protected_Action_Nesting > 0
-       then
-          Ada.Exceptions.Raise_Exception
-            (Program_Error'Identity, "potentially blocking operation");
-       else
-          STPO.Timed_Delay (Self_Id, To_Duration (T), Absolute_RT);
-       end if;
-    end Delay_Until;
- 
-    -----------------
-    -- To_Duration --
-    -----------------
- 
-    function To_Duration (T : Time) return Duration is
-    begin
-       return To_Duration (Time_Span (T));
-    end To_Duration;
- 
- end Ada.Real_Time.Delays;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-retide.ads gcc-8.1.0/gcc/ada/a-retide.ads
*** gcc-7.3.0/gcc/ada/a-retide.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-retide.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,48 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                  GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                --
- --                                                                          --
- --                   A D A . R E A L _ T I M E . D E L A Y S                --
- --                                                                          --
- --                                  S p e c                                 --
- --                                                                          --
- --          Copyright (C) 1992-2009, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNARL is 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/>.                                          --
- --                                                                          --
- -- GNARL was developed by the GNARL team at Florida State University.       --
- -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Implements Real_Time.Time absolute delays
- 
- --  Note: the compiler generates direct calls to this interface, in the
- --  processing of time types.
- 
- package Ada.Real_Time.Delays is
- 
-    function To_Duration (T : Real_Time.Time) return Duration;
-    --  Convert Time to Duration
- 
-    procedure Delay_Until (T : Time);
-    --  Delay until Clock has reached (at least) time T,
-    --  or the task is aborted to at least the current ATC nesting level.
-    --  The body of this procedure must perform all the processing
-    --  required for an abort point.
- 
- end Ada.Real_Time.Delays;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-rttiev.adb gcc-8.1.0/gcc/ada/a-rttiev.adb
*** gcc-7.3.0/gcc/ada/a-rttiev.adb	Wed Jul 30 12:46:03 2014
--- gcc-8.1.0/gcc/ada/a-rttiev.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,367 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --          A D A . R E A L _ T I M E . T I M I N G _ E V E N T S           --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --           Copyright (C) 2005-2014, Free Software Foundation, Inc.        --
- --                                                                          --
- -- GNAT is 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 System.Task_Primitives.Operations;
- with System.Tasking.Utilities;
- with System.Soft_Links;
- with System.Interrupt_Management.Operations;
- 
- with Ada.Containers.Doubly_Linked_Lists;
- pragma Elaborate_All (Ada.Containers.Doubly_Linked_Lists);
- 
- ---------------------------------
- -- Ada.Real_Time.Timing_Events --
- ---------------------------------
- 
- package body Ada.Real_Time.Timing_Events is
- 
-    use System.Task_Primitives.Operations;
- 
-    package SSL renames System.Soft_Links;
- 
-    type Any_Timing_Event is access all Timing_Event'Class;
-    --  We must also handle user-defined types derived from Timing_Event
- 
-    ------------
-    -- Events --
-    ------------
- 
-    package Events is new Ada.Containers.Doubly_Linked_Lists (Any_Timing_Event);
-    --  Provides the type for the container holding pointers to events
- 
-    All_Events : Events.List;
-    --  The queue of pending events, ordered by increasing timeout value, that
-    --  have been "set" by the user via Set_Handler.
- 
-    Event_Queue_Lock : aliased System.Task_Primitives.RTS_Lock;
-    --  Used for mutually exclusive access to All_Events
- 
-    --  We need to Initialize_Lock before Timer is activated. The purpose of the
-    --  Dummy package is to get around Ada's syntax rules.
- 
-    package Dummy is end Dummy;
-    package body Dummy is
-    begin
-       Initialize_Lock (Event_Queue_Lock'Access, Level => PO_Level);
-    end Dummy;
- 
-    procedure Process_Queued_Events;
-    --  Examine the queue of pending events for any that have timed out. For
-    --  those that have timed out, remove them from the queue and invoke their
-    --  handler (unless the user has cancelled the event by setting the handler
-    --  pointer to null). Mutually exclusive access is held via Event_Queue_Lock
-    --  during part of the processing.
- 
-    procedure Insert_Into_Queue (This : Any_Timing_Event);
-    --  Insert the specified event pointer into the queue of pending events
-    --  with mutually exclusive access via Event_Queue_Lock.
- 
-    procedure Remove_From_Queue (This : Any_Timing_Event);
-    --  Remove the specified event pointer from the queue of pending events with
-    --  mutually exclusive access via Event_Queue_Lock. This procedure is used
-    --  by the client-side routines (Set_Handler, etc.).
- 
-    -----------
-    -- Timer --
-    -----------
- 
-    task Timer is
-       pragma Priority (System.Priority'Last);
-    end Timer;
- 
-    task body Timer is
-       Period : constant Time_Span := Milliseconds (100);
-       --  This is a "chiming" clock timer that fires periodically. The period
-       --  selected is arbitrary and could be changed to suit the application
-       --  requirements. Obviously a shorter period would give better resolution
-       --  at the cost of more overhead.
- 
-       Ignore : constant Boolean := System.Tasking.Utilities.Make_Independent;
-       pragma Unreferenced (Ignore);
- 
-    begin
-       --  Since this package may be elaborated before System.Interrupt,
-       --  we need to call Setup_Interrupt_Mask explicitly to ensure that
-       --  this task has the proper signal mask.
- 
-       System.Interrupt_Management.Operations.Setup_Interrupt_Mask;
- 
-       loop
-          Process_Queued_Events;
-          delay until Clock + Period;
-       end loop;
-    end Timer;
- 
-    ---------------------------
-    -- Process_Queued_Events --
-    ---------------------------
- 
-    procedure Process_Queued_Events is
-       Next_Event : Any_Timing_Event;
- 
-    begin
-       loop
-          SSL.Abort_Defer.all;
- 
-          Write_Lock (Event_Queue_Lock'Access);
- 
-          if All_Events.Is_Empty then
-             Unlock (Event_Queue_Lock'Access);
-             SSL.Abort_Undefer.all;
-             return;
-          else
-             Next_Event := All_Events.First_Element;
-          end if;
- 
-          if Next_Event.Timeout > Clock then
- 
-             --  We found one that has not yet timed out. The queue is in
-             --  ascending order by Timeout so there is no need to continue
-             --  processing (and indeed we must not continue since we always
-             --  delete the first element).
- 
-             Unlock (Event_Queue_Lock'Access);
-             SSL.Abort_Undefer.all;
-             return;
-          end if;
- 
-          --  We have an event that has timed out so we will process it. It must
-          --  be the first in the queue so no search is needed.
- 
-          All_Events.Delete_First;
- 
-          --  A fundamental issue is that the invocation of the event's handler
-          --  might call Set_Handler on itself to re-insert itself back into the
-          --  queue of future events. Thus we cannot hold the lock on the queue
-          --  while invoking the event's handler.
- 
-          Unlock (Event_Queue_Lock'Access);
- 
-          SSL.Abort_Undefer.all;
- 
-          --  There is no race condition with the user changing the handler
-          --  pointer while we are processing because we are executing at the
-          --  highest possible application task priority and are not doing
-          --  anything to block prior to invoking their handler.
- 
-          declare
-             Handler : constant Timing_Event_Handler := Next_Event.Handler;
- 
-          begin
-             --  The first act is to clear the event, per D.15(13/2). Besides,
-             --  we cannot clear the handler pointer *after* invoking the
-             --  handler because the handler may have re-inserted the event via
-             --  Set_Event. Thus we take a copy and then clear the component.
- 
-             Next_Event.Handler := null;
- 
-             if Handler /= null then
-                Handler.all (Timing_Event (Next_Event.all));
-             end if;
- 
-          --  Ignore exceptions propagated by Handler.all, as required by
-          --  RM D.15(21/2).
- 
-          exception
-             when others =>
-                null;
-          end;
-       end loop;
-    end Process_Queued_Events;
- 
-    -----------------------
-    -- Insert_Into_Queue --
-    -----------------------
- 
-    procedure Insert_Into_Queue (This : Any_Timing_Event) is
- 
-       function Sooner (Left, Right : Any_Timing_Event) return Boolean;
-       --  Compares events in terms of timeout values
- 
-       package By_Timeout is new Events.Generic_Sorting (Sooner);
-       --  Used to keep the events in ascending order by timeout value
- 
-       ------------
-       -- Sooner --
-       ------------
- 
-       function Sooner (Left, Right : Any_Timing_Event) return Boolean is
-       begin
-          return Left.Timeout < Right.Timeout;
-       end Sooner;
- 
-    --  Start of processing for Insert_Into_Queue
- 
-    begin
-       SSL.Abort_Defer.all;
- 
-       Write_Lock (Event_Queue_Lock'Access);
- 
-       All_Events.Append (This);
- 
-       --  A critical property of the implementation of this package is that
-       --  all occurrences are in ascending order by Timeout. Thus the first
-       --  event in the queue always has the "next" value for the Timer task
-       --  to use in its delay statement.
- 
-       By_Timeout.Sort (All_Events);
- 
-       Unlock (Event_Queue_Lock'Access);
- 
-       SSL.Abort_Undefer.all;
-    end Insert_Into_Queue;
- 
-    -----------------------
-    -- Remove_From_Queue --
-    -----------------------
- 
-    procedure Remove_From_Queue (This : Any_Timing_Event) is
-       use Events;
-       Location : Cursor;
- 
-    begin
-       SSL.Abort_Defer.all;
- 
-       Write_Lock (Event_Queue_Lock'Access);
- 
-       Location := All_Events.Find (This);
- 
-       if Location /= No_Element then
-          All_Events.Delete (Location);
-       end if;
- 
-       Unlock (Event_Queue_Lock'Access);
- 
-       SSL.Abort_Undefer.all;
-    end Remove_From_Queue;
- 
-    -----------------
-    -- Set_Handler --
-    -----------------
- 
-    procedure Set_Handler
-      (Event   : in out Timing_Event;
-       At_Time : Time;
-       Handler : Timing_Event_Handler)
-    is
-    begin
-       Remove_From_Queue (Event'Unchecked_Access);
-       Event.Handler := null;
- 
-       --  RM D.15(15/2) required that at this point, we check whether the time
-       --  has already passed, and if so, call Handler.all directly from here
-       --  instead of doing the enqueuing below. However, this caused a nasty
-       --  race condition and potential deadlock. If the current task has
-       --  already locked the protected object of Handler.all, and the time has
-       --  passed, deadlock would occur. It has been fixed by AI05-0094-1, which
-       --  says that the handler should be executed as soon as possible, meaning
-       --  that the timing event will be executed after the protected action
-       --  finishes (Handler.all should not be called directly from here).
-       --  The same comment applies to the other Set_Handler below.
- 
-       if Handler /= null then
-          Event.Timeout := At_Time;
-          Event.Handler := Handler;
-          Insert_Into_Queue (Event'Unchecked_Access);
-       end if;
-    end Set_Handler;
- 
-    -----------------
-    -- Set_Handler --
-    -----------------
- 
-    procedure Set_Handler
-      (Event   : in out Timing_Event;
-       In_Time : Time_Span;
-       Handler : Timing_Event_Handler)
-    is
-    begin
-       Remove_From_Queue (Event'Unchecked_Access);
-       Event.Handler := null;
- 
-       --  See comment in the other Set_Handler above
- 
-       if Handler /= null then
-          Event.Timeout := Clock + In_Time;
-          Event.Handler := Handler;
-          Insert_Into_Queue (Event'Unchecked_Access);
-       end if;
-    end Set_Handler;
- 
-    ---------------------
-    -- Current_Handler --
-    ---------------------
- 
-    function Current_Handler
-      (Event : Timing_Event) return Timing_Event_Handler
-    is
-    begin
-       return Event.Handler;
-    end Current_Handler;
- 
-    --------------------
-    -- Cancel_Handler --
-    --------------------
- 
-    procedure Cancel_Handler
-      (Event     : in out Timing_Event;
-       Cancelled : out Boolean)
-    is
-    begin
-       Remove_From_Queue (Event'Unchecked_Access);
-       Cancelled := Event.Handler /= null;
-       Event.Handler := null;
-    end Cancel_Handler;
- 
-    -------------------
-    -- Time_Of_Event --
-    -------------------
- 
-    function Time_Of_Event (Event : Timing_Event) return Time is
-    begin
-       --  RM D.15(18/2): Time_First must be returned in the event is not set
- 
-       return (if Event.Handler = null then Time_First else Event.Timeout);
-    end Time_Of_Event;
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    procedure Finalize (This : in out Timing_Event) is
-    begin
-       --  D.15 (19/2) says finalization clears the event
- 
-       This.Handler := null;
-       Remove_From_Queue (This'Unchecked_Access);
-    end Finalize;
- 
- end Ada.Real_Time.Timing_Events;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-rttiev.ads gcc-8.1.0/gcc/ada/a-rttiev.ads
*** gcc-7.3.0/gcc/ada/a-rttiev.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-rttiev.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,81 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --          A D A . R E A L _ T I M E . T I M I N G _ E V E N T S           --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --           Copyright (C) 2005-2009, Free Software Foundation, 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Finalization;
- 
- package Ada.Real_Time.Timing_Events is
- 
-    type Timing_Event is tagged limited private;
- 
-    type Timing_Event_Handler
-      is access protected procedure (Event : in out Timing_Event);
- 
-    procedure Set_Handler
-      (Event   : in out Timing_Event;
-       At_Time : Time;
-       Handler : Timing_Event_Handler);
- 
-    procedure Set_Handler
-      (Event   : in out Timing_Event;
-       In_Time : Time_Span;
-       Handler : Timing_Event_Handler);
- 
-    function Current_Handler
-      (Event : Timing_Event) return Timing_Event_Handler;
- 
-    procedure Cancel_Handler
-      (Event     : in out Timing_Event;
-       Cancelled : out Boolean);
- 
-    function Time_Of_Event (Event : Timing_Event) return Time;
- 
- private
- 
-    type Timing_Event is new Ada.Finalization.Limited_Controlled with record
-       Timeout : Time := Time_First;
-       --  The time at which the user's handler should be invoked when the
-       --  event is "set" (i.e., when Handler is not null).
- 
-       Handler : Timing_Event_Handler;
-       --  An access value designating the protected procedure to be invoked
-       --  at the Timeout time in the future.  When this value is null the event
-       --  is said to be "cleared" and no timeout is processed.
-    end record;
- 
-    overriding procedure Finalize (This : in out Timing_Event);
-    --  Finalization procedure is required to satisfy (RM D.15 (19/2)), which
-    --  says that the object must be cleared on finalization.
- 
- end Ada.Real_Time.Timing_Events;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-sbecin.adb gcc-8.1.0/gcc/ada/a-sbecin.adb
*** gcc-7.3.0/gcc/ada/a-sbecin.adb	Fri Nov  4 10:55:41 2011
--- gcc-8.1.0/gcc/ada/a-sbecin.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,40 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                ADA.STRINGS.BOUNDED.EQUAL_CASE_INSENSITIVE                --
- --                                                                          --
- --                                B o d y                                   --
- --                                                                          --
- --            Copyright (C) 2011, Free Software Foundation, Inc.            --
- --                                                                          --
- -- GNAT is 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 Ada.Strings.Equal_Case_Insensitive;
- 
- function Ada.Strings.Bounded.Equal_Case_Insensitive
-   (Left, Right : Bounded.Bounded_String)
-   return Boolean
- is
- begin
-    return Ada.Strings.Equal_Case_Insensitive
-      (Left  => Bounded.To_String (Left),
-       Right => Bounded.To_String (Right));
- end Ada.Strings.Bounded.Equal_Case_Insensitive;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-sbecin.ads gcc-8.1.0/gcc/ada/a-sbecin.ads
*** gcc-7.3.0/gcc/ada/a-sbecin.ads	Fri Nov  4 10:55:41 2011
--- gcc-8.1.0/gcc/ada/a-sbecin.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,42 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                ADA.STRINGS.BOUNDED.EQUAL_CASE_INSENSITIVE                --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --            Copyright (C) 2011, Free Software Foundation, 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/>.                                          --
- --                                                                          --
- -- This unit was originally developed by Matthew J Heaney.                  --
- ------------------------------------------------------------------------------
- 
- generic
-    with package Bounded is
-      new Ada.Strings.Bounded.Generic_Bounded_Length (<>);
- 
- function Ada.Strings.Bounded.Equal_Case_Insensitive
-   (Left, Right : Bounded.Bounded_String)
-   return Boolean;
- 
- pragma Preelaborate (Ada.Strings.Bounded.Equal_Case_Insensitive);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-sbhcin.adb gcc-8.1.0/gcc/ada/a-sbhcin.adb
*** gcc-7.3.0/gcc/ada/a-sbhcin.adb	Fri Nov  4 10:55:41 2011
--- gcc-8.1.0/gcc/ada/a-sbhcin.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,38 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                 ADA.STRINGS.BOUNDED.HASH_CASE_INSENSITIVE                --
- --                                                                          --
- --                                B o d y                                   --
- --                                                                          --
- --            Copyright (C) 2011, Free Software Foundation, Inc.            --
- --                                                                          --
- -- GNAT is 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 Ada.Strings.Hash_Case_Insensitive;
- 
- function Ada.Strings.Bounded.Hash_Case_Insensitive
-   (Key : Bounded.Bounded_String)
-   return Containers.Hash_Type
- is
- begin
-    return Ada.Strings.Hash_Case_Insensitive (Bounded.To_String (Key));
- end Ada.Strings.Bounded.Hash_Case_Insensitive;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-sbhcin.ads gcc-8.1.0/gcc/ada/a-sbhcin.ads
*** gcc-7.3.0/gcc/ada/a-sbhcin.ads	Fri Nov  4 10:55:41 2011
--- gcc-8.1.0/gcc/ada/a-sbhcin.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,44 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                 ADA.STRINGS.BOUNDED.HASH_CASE_INSENSITIVE                --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --            Copyright (C) 2011, Free Software Foundation, 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/>.                                          --
- --                                                                          --
- -- This unit was originally developed by Matthew J Heaney.                  --
- ------------------------------------------------------------------------------
- 
- with Ada.Containers;
- 
- generic
-    with package Bounded is
-      new Ada.Strings.Bounded.Generic_Bounded_Length (<>);
- 
- function Ada.Strings.Bounded.Hash_Case_Insensitive
-   (Key : Bounded.Bounded_String)
-   return Containers.Hash_Type;
- 
- pragma Preelaborate (Ada.Strings.Bounded.Hash_Case_Insensitive);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-sblcin.adb gcc-8.1.0/gcc/ada/a-sblcin.adb
*** gcc-7.3.0/gcc/ada/a-sblcin.adb	Fri Nov  4 10:55:41 2011
--- gcc-8.1.0/gcc/ada/a-sblcin.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,40 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                 ADA.STRINGS.BOUNDED.LESS_CASE_INSENSITIVE                --
- --                                                                          --
- --                                B o d y                                   --
- --                                                                          --
- --            Copyright (C) 2011, Free Software Foundation, Inc.            --
- --                                                                          --
- -- GNAT is 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 Ada.Strings.Less_Case_Insensitive;
- 
- function Ada.Strings.Bounded.Less_Case_Insensitive
-   (Left, Right : Bounded.Bounded_String)
-   return Boolean
- is
- begin
-    return Ada.Strings.Less_Case_Insensitive
-      (Left  => Bounded.To_String (Left),
-       Right => Bounded.To_String (Right));
- end Ada.Strings.Bounded.Less_Case_Insensitive;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-sblcin.ads gcc-8.1.0/gcc/ada/a-sblcin.ads
*** gcc-7.3.0/gcc/ada/a-sblcin.ads	Fri Nov  4 10:55:41 2011
--- gcc-8.1.0/gcc/ada/a-sblcin.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,42 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                 ADA.STRINGS.BOUNDED.LESS_CASE_INSENSITIVE                --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --            Copyright (C) 2011, Free Software Foundation, 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/>.                                          --
- --                                                                          --
- -- This unit was originally developed by Matthew J Heaney.                  --
- ------------------------------------------------------------------------------
- 
- generic
-    with package Bounded is
-      new Ada.Strings.Bounded.Generic_Bounded_Length (<>);
- 
- function Ada.Strings.Bounded.Less_Case_Insensitive
-   (Left, Right : Bounded.Bounded_String)
-   return Boolean;
- 
- pragma Preelaborate (Ada.Strings.Bounded.Less_Case_Insensitive);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-scteio.ads gcc-8.1.0/gcc/ada/a-scteio.ads
*** gcc-7.3.0/gcc/ada/a-scteio.ads	Tue Apr 10 05:44:30 2012
--- gcc-8.1.0/gcc/ada/a-scteio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,24 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --             A D A . S H O R T _ C O M P L E X _ T E X T _ I O            --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Ada 2005 AI-328
- 
- with Ada.Text_IO.Complex_IO;
- with Ada.Numerics.Short_Complex_Types;
- 
- pragma Elaborate_All (Ada.Text_IO.Complex_IO);
- 
- package Ada.Short_Complex_Text_IO is
-   new Ada.Text_IO.Complex_IO (Ada.Numerics.Short_Complex_Types);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-secain.adb gcc-8.1.0/gcc/ada/a-secain.adb
*** gcc-7.3.0/gcc/ada/a-secain.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-secain.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,59 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --   A D A . S T R I N G S . E Q U A L _ C A S E _ I N S E N S I T I V E    --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2004-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- --
- -- 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 Ada.Characters.Handling;  use Ada.Characters.Handling;
- 
- function Ada.Strings.Equal_Case_Insensitive
-   (Left, Right : String) return Boolean
- is
-    LI : Integer := Left'First;
-    RI : Integer := Right'First;
- 
- begin
-    if Left'Length /= Right'Length then
-       return False;
-    end if;
- 
-    if Left'Length = 0 then
-       return True;
-    end if;
- 
-    loop
-       if To_Lower (Left (LI)) /= To_Lower (Right (RI)) then
-          return False;
-       end if;
- 
-       if LI = Left'Last then
-          return True;
-       end if;
- 
-       LI := LI + 1;
-       RI := RI + 1;
-    end loop;
- end Ada.Strings.Equal_Case_Insensitive;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-secain.ads gcc-8.1.0/gcc/ada/a-secain.ads
*** gcc-7.3.0/gcc/ada/a-secain.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-secain.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,38 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --   A D A . S T R I N G S . E Q U A L _ C A S E _ I N S E N S I T I V E    --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2004-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- --
- -- 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.                  --
- ------------------------------------------------------------------------------
- 
- function Ada.Strings.Equal_Case_Insensitive
-   (Left, Right : String) return Boolean;
- pragma Pure (Ada.Strings.Equal_Case_Insensitive);
- --  Performs a case-insensitive equality test of Left and Right. This is
- --  useful as the generic actual equivalence operation (Equivalent_Keys)
- --  when instantiating a hashed container package with type String as the
- --  key. It is also useful as the generic actual equality operator when
- --  instantiating a container package with type String as the element,
- --  allowing case-insensitive container equality tests.
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-sequio.adb gcc-8.1.0/gcc/ada/a-sequio.adb
*** gcc-7.3.0/gcc/ada/a-sequio.adb	Fri Jan  6 11:58:56 2017
--- gcc-8.1.0/gcc/ada/a-sequio.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,314 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                    A D A . S E Q U E N T I A L _ I O                     --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 generic template for Sequential_IO, i.e. the code that gets
- --  duplicated. We absolutely minimize this code by either calling routines
- --  in System.File_IO (for common file functions), or in System.Sequential_IO
- --  (for specialized Sequential_IO functions)
- 
- with Ada.Unchecked_Conversion;
- 
- with System;
- with System.Byte_Swapping;
- with System.CRTL;
- with System.File_Control_Block;
- with System.File_IO;
- with System.Storage_Elements;
- 
- with Interfaces.C_Streams; use Interfaces.C_Streams;
- 
- package body Ada.Sequential_IO is
- 
-    package FIO renames System.File_IO;
-    package FCB renames System.File_Control_Block;
-    package SIO renames System.Sequential_IO;
-    package SSE renames System.Storage_Elements;
- 
-    SU : constant := System.Storage_Unit;
- 
-    subtype AP is FCB.AFCB_Ptr;
-    subtype FP is SIO.File_Type;
- 
-    function To_FCB is new Ada.Unchecked_Conversion (File_Mode, FCB.File_Mode);
-    function To_SIO is new Ada.Unchecked_Conversion (FCB.File_Mode, File_Mode);
- 
-    use type System.Bit_Order;
-    use type System.CRTL.size_t;
- 
-    procedure Byte_Swap (Siz : in out size_t);
-    --  Byte swap Siz
- 
-    ---------------
-    -- Byte_Swap --
-    ---------------
- 
-    procedure Byte_Swap (Siz : in out size_t) is
-       use System.Byte_Swapping;
-    begin
-       case Siz'Size is
-          when 32     => Siz := size_t (Bswap_32 (U32 (Siz)));
-          when 64     => Siz := size_t (Bswap_64 (U64 (Siz)));
-          when others => raise Program_Error;
-       end case;
-    end Byte_Swap;
- 
-    -----------
-    -- Close --
-    -----------
- 
-    procedure Close (File : in out File_Type) is
-    begin
-       FIO.Close (AP (File)'Unrestricted_Access);
-    end Close;
- 
-    ------------
-    -- Create --
-    ------------
- 
-    procedure Create
-      (File : in out File_Type;
-       Mode : File_Mode := Out_File;
-       Name : String := "";
-       Form : String := "")
-    is
-    begin
-       SIO.Create (FP (File), To_FCB (Mode), Name, Form);
-    end Create;
- 
-    ------------
-    -- Delete --
-    ------------
- 
-    procedure Delete (File : in out File_Type) is
-    begin
-       FIO.Delete (AP (File)'Unrestricted_Access);
-    end Delete;
- 
-    -----------------
-    -- End_Of_File --
-    -----------------
- 
-    function End_Of_File (File : File_Type) return Boolean is
-    begin
-       return FIO.End_Of_File (AP (File));
-    end End_Of_File;
- 
-    -----------
-    -- Flush --
-    -----------
- 
-    procedure Flush (File : File_Type) is
-    begin
-       FIO.Flush (AP (File));
-    end Flush;
- 
-    ----------
-    -- Form --
-    ----------
- 
-    function Form (File : File_Type) return String is
-    begin
-       return FIO.Form (AP (File));
-    end Form;
- 
-    -------------
-    -- Is_Open --
-    -------------
- 
-    function Is_Open (File : File_Type) return Boolean is
-    begin
-       return FIO.Is_Open (AP (File));
-    end Is_Open;
- 
-    ----------
-    -- Mode --
-    ----------
- 
-    function Mode (File : File_Type) return File_Mode is
-    begin
-       return To_SIO (FIO.Mode (AP (File)));
-    end Mode;
- 
-    ----------
-    -- Name --
-    ----------
- 
-    function Name (File : File_Type) return String is
-    begin
-       return FIO.Name (AP (File));
-    end Name;
- 
-    ----------
-    -- Open --
-    ----------
- 
-    procedure Open
-      (File : in out File_Type;
-       Mode : File_Mode;
-       Name : String;
-       Form : String := "")
-    is
-    begin
-       SIO.Open (FP (File), To_FCB (Mode), Name, Form);
-    end Open;
- 
-    ----------
-    -- Read --
-    ----------
- 
-    procedure Read (File : File_Type; Item : out Element_Type) is
-       Siz  : constant size_t := (Item'Size + SU - 1) / SU;
-       Rsiz : size_t;
- 
-    begin
-       FIO.Check_Read_Status (AP (File));
- 
-       --  For non-definite type or type with discriminants, read size and
-       --  raise Program_Error if it is larger than the size of the item.
- 
-       if not Element_Type'Definite
-         or else Element_Type'Has_Discriminants
-       then
-          FIO.Read_Buf
-            (AP (File), Rsiz'Address, size_t'Size / System.Storage_Unit);
- 
-          --  If item read has non-default scalar storage order, then the size
-          --  will have been written with that same order, so byte swap it.
- 
-          if Element_Type'Scalar_Storage_Order /= System.Default_Bit_Order then
-             Byte_Swap (Rsiz);
-          end if;
- 
-          --  For a type with discriminants, we have to read into a temporary
-          --  buffer if Item is constrained, to check that the discriminants
-          --  are correct.
- 
-          if Element_Type'Has_Discriminants and then Item'Constrained then
-             declare
-                RsizS : constant SSE.Storage_Offset :=
-                          SSE.Storage_Offset (Rsiz - 1);
- 
-                type SA is new SSE.Storage_Array (0 .. RsizS);
- 
-                for SA'Alignment use Standard'Maximum_Alignment;
-                --  We will perform an unchecked conversion of a pointer-to-SA
-                --  into pointer-to-Element_Type. We need to ensure that the
-                --  source is always at least as strictly aligned as the target.
- 
-                type SAP   is access all SA;
-                type ItemP is access all Element_Type;
- 
-                pragma Warnings (Off);
-                --  We have to turn warnings off for function To_ItemP,
-                --  because it gets analyzed for all types, including ones
-                --  which can't possibly come this way, and for which the
-                --  size of the access types differs.
- 
-                function To_ItemP is new Ada.Unchecked_Conversion (SAP, ItemP);
- 
-                pragma Warnings (On);
- 
-                Buffer : aliased SA;
- 
-                pragma Unsuppress (Discriminant_Check);
- 
-             begin
-                FIO.Read_Buf (AP (File), Buffer'Address, Rsiz);
-                Item := To_ItemP (Buffer'Access).all;
-                return;
-             end;
-          end if;
- 
-          --  In the case of a non-definite type, make sure the length is OK.
-          --  We can't do this in the variant record case, because the size is
-          --  based on the current discriminant, so may be apparently wrong.
- 
-          if not Element_Type'Has_Discriminants and then Rsiz > Siz then
-             raise Program_Error;
-          end if;
- 
-          FIO.Read_Buf (AP (File), Item'Address, Rsiz);
- 
-       --  For definite type without discriminants, use actual size of item
- 
-       else
-          FIO.Read_Buf (AP (File), Item'Address, Siz);
-       end if;
-    end Read;
- 
-    -----------
-    -- Reset --
-    -----------
- 
-    procedure Reset (File : in out File_Type; Mode : File_Mode) is
-    begin
-       FIO.Reset (AP (File)'Unrestricted_Access, To_FCB (Mode));
-    end Reset;
- 
-    procedure Reset (File : in out File_Type) is
-    begin
-       FIO.Reset (AP (File)'Unrestricted_Access);
-    end Reset;
- 
-    -----------
-    -- Write --
-    -----------
- 
-    procedure Write (File : File_Type; Item : Element_Type) is
-       Siz : constant size_t := (Item'Size + SU - 1) / SU;
-       --  Size to be written, in native representation
- 
-       Swapped_Siz : size_t := Siz;
-       --  Same, possibly byte swapped to account for Element_Type endianness
- 
-    begin
-       FIO.Check_Write_Status (AP (File));
- 
-       --  For non-definite types or types with discriminants, write the size
- 
-       if not Element_Type'Definite
-         or else Element_Type'Has_Discriminants
-       then
-          --  If item written has non-default scalar storage order, then the
-          --  size is written with that same order, so byte swap it.
- 
-          if Element_Type'Scalar_Storage_Order /= System.Default_Bit_Order then
-             Byte_Swap (Swapped_Siz);
-          end if;
- 
-          FIO.Write_Buf
-            (AP (File), Swapped_Siz'Address, size_t'Size / System.Storage_Unit);
-       end if;
- 
-       FIO.Write_Buf (AP (File), Item'Address, Siz);
-    end Write;
- 
- end Ada.Sequential_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-sequio.ads gcc-8.1.0/gcc/ada/a-sequio.ads
*** gcc-7.3.0/gcc/ada/a-sequio.ads	Fri Jan  6 11:58:56 2017
--- gcc-8.1.0/gcc/ada/a-sequio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,160 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                    A D A . S E Q U E N T I A L _ I O                     --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2016, Free Software Foundation, 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.IO_Exceptions;
- 
- with System.Sequential_IO;
- 
- generic
-    type Element_Type (<>) is private;
- 
- package Ada.Sequential_IO is
- 
-    pragma Compile_Time_Warning
-      (Element_Type'Has_Access_Values,
-       "Element_Type for Sequential_IO instance has access values");
- 
-    pragma Compile_Time_Warning
-      (Element_Type'Has_Tagged_Values,
-       "Element_Type for Sequential_IO instance has tagged values");
- 
-    type File_Type is limited private;
- 
-    type File_Mode is (In_File, Out_File, Append_File);
- 
-    --  The following representation clause allows the use of unchecked
-    --  conversion for rapid translation between the File_Mode type
-    --  used in this package and System.File_IO.
- 
-    for File_Mode use
-      (In_File     => 0,  -- System.File_IO.File_Mode'Pos (In_File)
-       Out_File    => 2,  -- System.File_IO.File_Mode'Pos (Out_File)
-       Append_File => 3); -- System.File_IO.File_Mode'Pos (Append_File)
- 
-    ---------------------
-    -- File management --
-    ---------------------
- 
-    procedure Create
-      (File : in out File_Type;
-       Mode : File_Mode := Out_File;
-       Name : String := "";
-       Form : String := "");
- 
-    procedure Open
-      (File : in out File_Type;
-       Mode : File_Mode;
-       Name : String;
-       Form : String := "");
- 
-    procedure Close  (File : in out File_Type);
-    procedure Delete (File : in out File_Type);
-    procedure Reset  (File : in out File_Type; Mode : File_Mode);
-    procedure Reset  (File : in out File_Type);
- 
-    function Mode    (File : File_Type) return File_Mode;
-    function Name    (File : File_Type) return String;
-    function Form    (File : File_Type) return String;
- 
-    function Is_Open (File : File_Type) return Boolean;
- 
-    procedure Flush (File : File_Type);
- 
-    ---------------------------------
-    -- Input and output operations --
-    ---------------------------------
- 
-    procedure Read  (File : File_Type; Item : out Element_Type);
-    procedure Write (File : File_Type; Item : Element_Type);
- 
-    function End_Of_File (File : File_Type) return Boolean;
- 
-    ----------------
-    -- Exceptions --
-    ----------------
- 
-    Status_Error : exception renames IO_Exceptions.Status_Error;
-    Mode_Error   : exception renames IO_Exceptions.Mode_Error;
-    Name_Error   : exception renames IO_Exceptions.Name_Error;
-    Use_Error    : exception renames IO_Exceptions.Use_Error;
-    Device_Error : exception renames IO_Exceptions.Device_Error;
-    End_Error    : exception renames IO_Exceptions.End_Error;
-    Data_Error   : exception renames IO_Exceptions.Data_Error;
- 
- private
- 
-    --  The following procedures have a File_Type formal of mode IN OUT because
-    --  they may close the original file. The Close operation may raise an
-    --  exception, but in that case we want any assignment to the formal to
-    --  be effective anyway, so it must be passed by reference (or the caller
-    --  will be left with a dangling pointer).
- 
-    pragma Export_Procedure
-      (Internal  => Close,
-       External  => "",
-       Mechanism => Reference);
-    pragma Export_Procedure
-      (Internal  => Delete,
-       External  => "",
-       Mechanism => Reference);
-    pragma Export_Procedure
-      (Internal        => Reset,
-       External        => "",
-       Parameter_Types => (File_Type),
-       Mechanism       => Reference);
-    pragma Export_Procedure
-      (Internal        => Reset,
-       External        => "",
-       Parameter_Types => (File_Type, File_Mode),
-       Mechanism       => (File => Reference));
- 
-    type File_Type is new System.Sequential_IO.File_Type;
- 
-    --  All subprograms are inlined
- 
-    pragma Inline (Close);
-    pragma Inline (Create);
-    pragma Inline (Delete);
-    pragma Inline (End_Of_File);
-    pragma Inline (Form);
-    pragma Inline (Is_Open);
-    pragma Inline (Mode);
-    pragma Inline (Name);
-    pragma Inline (Open);
-    pragma Inline (Read);
-    pragma Inline (Reset);
-    pragma Inline (Write);
- 
- end Ada.Sequential_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-sfecin.ads gcc-8.1.0/gcc/ada/a-sfecin.ads
*** gcc-7.3.0/gcc/ada/a-sfecin.ads	Fri Nov  4 10:55:41 2011
--- gcc-8.1.0/gcc/ada/a-sfecin.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,40 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                 ADA.STRINGS.FIXED.EQUAL_CASE_INSENSITIVE                 --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --            Copyright (C) 2011, Free Software Foundation, 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/>.                                          --
- --                                                                          --
- -- This unit was originally developed by Matthew J Heaney.                  --
- ------------------------------------------------------------------------------
- 
- with Ada.Strings.Equal_Case_Insensitive;
- 
- function Ada.Strings.Fixed.Equal_Case_Insensitive
-   (Left, Right : String)
-   return Boolean renames Ada.Strings.Equal_Case_Insensitive;
- 
- pragma Pure (Ada.Strings.Fixed.Equal_Case_Insensitive);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-sfhcin.ads gcc-8.1.0/gcc/ada/a-sfhcin.ads
*** gcc-7.3.0/gcc/ada/a-sfhcin.ads	Fri Nov  4 10:55:41 2011
--- gcc-8.1.0/gcc/ada/a-sfhcin.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,41 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                  ADA.STRINGS.FIXED.HASH_CASE_INSENSITIVE                 --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --            Copyright (C) 2011, Free Software Foundation, 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/>.                                          --
- --                                                                          --
- -- This unit was originally developed by Matthew J Heaney.                  --
- ------------------------------------------------------------------------------
- 
- with Ada.Containers;
- with Ada.Strings.Hash_Case_Insensitive;
- 
- function Ada.Strings.Fixed.Hash_Case_Insensitive
-   (Key : String)
-   return Containers.Hash_Type renames Ada.Strings.Hash_Case_Insensitive;
- 
- pragma Pure (Ada.Strings.Fixed.Hash_Case_Insensitive);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-sflcin.ads gcc-8.1.0/gcc/ada/a-sflcin.ads
*** gcc-7.3.0/gcc/ada/a-sflcin.ads	Fri Nov  4 10:55:41 2011
--- gcc-8.1.0/gcc/ada/a-sflcin.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,40 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                  ADA.STRINGS.FIXED.LESS_CASE_INSENSITIVE                 --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --            Copyright (C) 2011, Free Software Foundation, 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/>.                                          --
- --                                                                          --
- -- This unit was originally developed by Matthew J Heaney.                  --
- ------------------------------------------------------------------------------
- 
- with Ada.Strings.Less_Case_Insensitive;
- 
- function Ada.Strings.Fixed.Less_Case_Insensitive
-   (Left, Right : String)
-   return Boolean renames Ada.Strings.Less_Case_Insensitive;
- 
- pragma Pure (Ada.Strings.Fixed.Less_Case_Insensitive);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-sfteio.ads gcc-8.1.0/gcc/ada/a-sfteio.ads
*** gcc-7.3.0/gcc/ada/a-sfteio.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-sfteio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,19 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --              A D A . S H O R T _ F L O A T _ T E X T _ I O               --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Text_IO;
- 
- package Ada.Short_Float_Text_IO is
-   new Ada.Text_IO.Float_IO (Short_Float);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-sfwtio.ads gcc-8.1.0/gcc/ada/a-sfwtio.ads
*** gcc-7.3.0/gcc/ada/a-sfwtio.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-sfwtio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,19 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --         A D A . S H O R T _ F L O A T _ W I D E _ T E X T _ I O          --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Wide_Text_IO;
- 
- package Ada.Short_Float_Wide_Text_IO is
-   new Ada.Wide_Text_IO.Float_IO (Short_Float);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-sfztio.ads gcc-8.1.0/gcc/ada/a-sfztio.ads
*** gcc-7.3.0/gcc/ada/a-sfztio.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-sfztio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,19 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --    A D A . S H O R T _ F L O A T _ W I D E _ W I D E _ T E X T _ I O     --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Wide_Wide_Text_IO;
- 
- package Ada.Short_Float_Wide_Wide_Text_IO is
-   new Ada.Wide_Wide_Text_IO.Float_IO (Short_Float);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-shcain.adb gcc-8.1.0/gcc/ada/a-shcain.adb
*** gcc-7.3.0/gcc/ada/a-shcain.adb	Mon Jun 22 12:24:57 2009
--- gcc-8.1.0/gcc/ada/a-shcain.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,41 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --    A D A . S T R I N G S . H A S H _ C A S E _ I N S E N S I T I V E     --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2004-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- --
- -- 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 Ada.Characters.Handling; use Ada.Characters.Handling;
- with System.String_Hash;
- 
- function Ada.Strings.Hash_Case_Insensitive
-   (Key : String) return Containers.Hash_Type
- is
-    use Ada.Containers;
-    function Hash is new System.String_Hash.Hash
-      (Character, String, Hash_Type);
- begin
-    return Hash (To_Lower (Key));
- end Ada.Strings.Hash_Case_Insensitive;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-shcain.ads gcc-8.1.0/gcc/ada/a-shcain.ads
*** gcc-7.3.0/gcc/ada/a-shcain.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-shcain.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,37 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --    A D A . S T R I N G S . H A S H _ C A S E _ I N S E N S I T I V E     --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2004-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- --
- -- 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 Ada.Containers;
- 
- function Ada.Strings.Hash_Case_Insensitive
-   (Key : String) return Containers.Hash_Type;
- pragma Pure (Ada.Strings.Hash_Case_Insensitive);
- --  Computes a hash value for Key without regard for character case. This is
- --  useful as the generic actual Hash function when instantiating a hashed
- --  container package with type String as the key.
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-siocst.adb gcc-8.1.0/gcc/ada/a-siocst.adb
*** gcc-7.3.0/gcc/ada/a-siocst.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-siocst.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,86 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                        GNAT RUN-TIME COMPONENTS                          --
- --                                                                          --
- --          A D A . S E Q U E N T I A L _ I O . C _ S T R E A M S           --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          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- --
- -- 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 Interfaces.C_Streams; use Interfaces.C_Streams;
- with System.File_IO;
- with System.File_Control_Block;
- with System.Sequential_IO;
- with Ada.Unchecked_Conversion;
- 
- package body Ada.Sequential_IO.C_Streams is
- 
-    package FIO renames System.File_IO;
-    package FCB renames System.File_Control_Block;
-    package SIO renames System.Sequential_IO;
- 
-    subtype AP is FCB.AFCB_Ptr;
- 
-    function To_FCB is new Ada.Unchecked_Conversion (File_Mode, FCB.File_Mode);
- 
-    --------------
-    -- C_Stream --
-    --------------
- 
-    function C_Stream (F : File_Type) return FILEs is
-    begin
-       FIO.Check_File_Open (AP (F));
-       return F.Stream;
-    end C_Stream;
- 
-    ----------
-    -- Open --
-    ----------
- 
-    procedure Open
-      (File     : in out File_Type;
-       Mode     : File_Mode;
-       C_Stream : FILEs;
-       Form     : String := "";
-       Name     : String := "")
-    is
-       Dummy_File_Control_Block : SIO.Sequential_AFCB;
-       pragma Warnings (Off, Dummy_File_Control_Block);
-       --  Yes, we know this is never assigned a value, only the tag
-       --  is used for dispatching purposes, so that's expected.
- 
-    begin
-       FIO.Open (File_Ptr  => AP (File),
-                 Dummy_FCB => Dummy_File_Control_Block,
-                 Mode      => To_FCB (Mode),
-                 Name      => Name,
-                 Form      => Form,
-                 Amethod   => 'Q',
-                 Creat     => False,
-                 Text      => False,
-                 C_Stream  => C_Stream);
-    end Open;
- 
- end Ada.Sequential_IO.C_Streams;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-siocst.ads gcc-8.1.0/gcc/ada/a-siocst.ads
*** gcc-7.3.0/gcc/ada/a-siocst.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-siocst.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,54 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --          A D A . S E Q U E N T I A L _ I O . C _ S T R E A M S           --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          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- --
- -- 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 an interface between Ada.Sequential_IO and the
- --  C streams. This allows sharing of a stream between Ada and C or C++,
- --  as well as allowing the Ada program to operate directly on the stream.
- 
- with Interfaces.C_Streams;
- 
- generic
- package Ada.Sequential_IO.C_Streams is
- 
-    package ICS renames Interfaces.C_Streams;
- 
-    function C_Stream (F : File_Type) return ICS.FILEs;
-    --  Obtain stream from existing open file
- 
-    procedure Open
-      (File     : in out File_Type;
-       Mode     : File_Mode;
-       C_Stream : ICS.FILEs;
-       Form     : String := "";
-       Name     : String := "");
-    --  Create new file from existing stream
- 
- end Ada.Sequential_IO.C_Streams;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-siteio.ads gcc-8.1.0/gcc/ada/a-siteio.ads
*** gcc-7.3.0/gcc/ada/a-siteio.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-siteio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,19 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --            A D A . S H O R T _ I N T E G E R _ T E X T _ I O             --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Text_IO;
- 
- package Ada.Short_Integer_Text_IO is
-   new Ada.Text_IO.Integer_IO (Short_Integer);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-siwtio.ads gcc-8.1.0/gcc/ada/a-siwtio.ads
*** gcc-7.3.0/gcc/ada/a-siwtio.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-siwtio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,19 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --       A D A . S H O R T _ I N T E G E R _ W I D E _ T E X T _ I O        --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Wide_Text_IO;
- 
- package Ada.Short_Integer_Wide_Text_IO is
-   new Ada.Wide_Text_IO.Integer_IO (Short_Integer);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-siztio.ads gcc-8.1.0/gcc/ada/a-siztio.ads
*** gcc-7.3.0/gcc/ada/a-siztio.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-siztio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,19 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --  A D A . S H O R T _ I N T E G E R _ W I D E _ W I D E _ T E X T _ I O   --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Wide_Wide_Text_IO;
- 
- package Ada.Short_Integer_Wide_Wide_Text_IO is
-   new Ada.Wide_Wide_Text_IO.Integer_IO (Short_Integer);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-slcain.adb gcc-8.1.0/gcc/ada/a-slcain.adb
*** gcc-7.3.0/gcc/ada/a-slcain.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-slcain.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,72 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                    ADA.STRINGS.LESS_CASE_INSENSITIVE                     --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2004-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- --
- -- 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 Ada.Characters.Handling; use Ada.Characters.Handling;
- 
- function Ada.Strings.Less_Case_Insensitive
-   (Left, Right : String) return Boolean
- is
-    LI : Integer := Left'First;
-    RI : Integer := Right'First;
- 
-    LC, RC : Character;
- 
- begin
-    if LI > Left'Last then
-       return RI <= Right'Last;
-    end if;
- 
-    if RI > Right'Last then
-       return False;
-    end if;
- 
-    loop
-       LC := To_Lower (Left (LI));
-       RC := To_Lower (Right (RI));
- 
-       if LC < RC then
-          return True;
-       end if;
- 
-       if LC > RC then
-          return False;
-       end if;
- 
-       if LI = Left'Last then
-          return RI < Right'Last;
-       end if;
- 
-       if RI = Right'Last then
-          return False;
-       end if;
- 
-       LI := LI + 1;
-       RI := RI + 1;
-    end loop;
- end Ada.Strings.Less_Case_Insensitive;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-slcain.ads gcc-8.1.0/gcc/ada/a-slcain.ads
*** gcc-7.3.0/gcc/ada/a-slcain.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-slcain.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,36 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                    ADA.STRINGS.LESS_CASE_INSENSITIVE                     --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2004-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- --
- -- 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.                  --
- ------------------------------------------------------------------------------
- 
- function Ada.Strings.Less_Case_Insensitive
-   (Left, Right : String) return Boolean;
- pragma Pure (Ada.Strings.Less_Case_Insensitive);
- --  Performs a case-insensitive lexicographic comparison of Left and
- --  Right. This is useful as the generic actual less-than operator when
- --  instantiating an ordered container package with type String as the key,
- --  allowing case-insensitive equivalence tests.
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ssicst.adb gcc-8.1.0/gcc/ada/a-ssicst.adb
*** gcc-7.3.0/gcc/ada/a-ssicst.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-ssicst.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,84 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --      A D A . S T R E A M S . S T R E A M _ I O . C _ S T R E A M S       --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          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- --
- -- 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 Interfaces.C_Streams; use Interfaces.C_Streams;
- with System.File_IO;
- with System.File_Control_Block;
- with Ada.Unchecked_Conversion;
- 
- package body Ada.Streams.Stream_IO.C_Streams is
- 
-    package FIO renames System.File_IO;
-    package FCB renames System.File_Control_Block;
- 
-    subtype AP is FCB.AFCB_Ptr;
- 
-    function To_FCB is new Ada.Unchecked_Conversion (File_Mode, FCB.File_Mode);
- 
-    --------------
-    -- C_Stream --
-    --------------
- 
-    function C_Stream (F : File_Type) return FILEs is
-    begin
-       FIO.Check_File_Open (AP (F));
-       return F.Stream;
-    end C_Stream;
- 
-    ----------
-    -- Open --
-    ----------
- 
-    procedure Open
-      (File     : in out File_Type;
-       Mode     : File_Mode;
-       C_Stream : FILEs;
-       Form     : String := "";
-       Name     : String := "")
-    is
-       Dummy_File_Control_Block : Stream_AFCB;
-       pragma Warnings (Off, Dummy_File_Control_Block);
-       --  Yes, we know this is never assigned a value, only the tag
-       --  is used for dispatching purposes, so that's expected.
- 
-    begin
-       FIO.Open (File_Ptr  => AP (File),
-                 Dummy_FCB => Dummy_File_Control_Block,
-                 Mode      => To_FCB (Mode),
-                 Name      => Name,
-                 Form      => Form,
-                 Amethod   => 'S',
-                 Creat     => False,
-                 Text      => False,
-                 C_Stream  => C_Stream);
-    end Open;
- 
- end Ada.Streams.Stream_IO.C_Streams;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ssicst.ads gcc-8.1.0/gcc/ada/a-ssicst.ads
*** gcc-7.3.0/gcc/ada/a-ssicst.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-ssicst.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,53 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --      A D A . S T R E A M S . S T R E A M _ I O . C _ S T R E A M S       --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          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- --
- -- 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 an interface between Ada.Stream_IO and the
- --  C streams. This allows sharing of a stream between Ada and C or C++,
- --  as well as allowing the Ada program to operate directly on the stream.
- 
- with Interfaces.C_Streams;
- 
- package Ada.Streams.Stream_IO.C_Streams is
- 
-    package ICS renames Interfaces.C_Streams;
- 
-    function C_Stream (F : File_Type) return ICS.FILEs;
-    --  Obtain stream from existing open file
- 
-    procedure Open
-      (File     : in out File_Type;
-       Mode     : File_Mode;
-       C_Stream : ICS.FILEs;
-       Form     : String := "";
-       Name     : String := "");
-    --  Create new file from existing stream
- 
- end Ada.Streams.Stream_IO.C_Streams;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ssitio.ads gcc-8.1.0/gcc/ada/a-ssitio.ads
*** gcc-7.3.0/gcc/ada/a-ssitio.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-ssitio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,19 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --      A D A . S H O R T _ S H O R T _ I N T E G E R _ T E X T _ I O       --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Text_IO;
- 
- package Ada.Short_Short_Integer_Text_IO is
-   new Ada.Text_IO.Integer_IO (Short_Short_Integer);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ssiwti.ads gcc-8.1.0/gcc/ada/a-ssiwti.ads
*** gcc-7.3.0/gcc/ada/a-ssiwti.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-ssiwti.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,19 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- -- A D A . S H O R T _ S H O R T _ I N T E G E R _ W I D E _ T E X T _ I O  --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Wide_Text_IO;
- 
- package Ada.Short_Short_Integer_Wide_Text_IO is
-   new Ada.Wide_Text_IO.Integer_IO (Short_Short_Integer);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ssizti.ads gcc-8.1.0/gcc/ada/a-ssizti.ads
*** gcc-7.3.0/gcc/ada/a-ssizti.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-ssizti.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,19 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- -- A D A . S H O R T _ S H O R T _ I N T E G E R _ W I D E _ T E X T _ I O  --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Wide_Wide_Text_IO;
- 
- package Ada.Short_Short_Integer_Wide_Wide_Text_IO is
-   new Ada.Wide_Wide_Text_IO.Integer_IO (Short_Short_Integer);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-stboha.adb gcc-8.1.0/gcc/ada/a-stboha.adb
*** gcc-7.3.0/gcc/ada/a-stboha.adb	Mon Jun 22 12:24:57 2009
--- gcc-8.1.0/gcc/ada/a-stboha.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,40 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --             A D A . S T R I N G S . B O U N D E D . H A S H              --
- --                                                                          --
- --                                B o d y                                   --
- --                                                                          --
- --          Copyright (C) 2004-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- --
- -- 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.String_Hash;
- 
- function Ada.Strings.Bounded.Hash (Key : Bounded.Bounded_String)
-   return Containers.Hash_Type
- is
-    use Ada.Containers;
-    function Hash_Fun is new System.String_Hash.Hash
-      (Character, String, Hash_Type);
- begin
-    return Hash_Fun (Bounded.To_String (Key));
- end Ada.Strings.Bounded.Hash;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-stboha.ads gcc-8.1.0/gcc/ada/a-stboha.ads
*** gcc-7.3.0/gcc/ada/a-stboha.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-stboha.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,25 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --             A D A . S T R I N G S . B O U N D E D . H A S H              --
- --                                                                          --
- --                                S p e c                                   --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Containers;
- 
- generic
-    with package Bounded is
-      new Ada.Strings.Bounded.Generic_Bounded_Length (<>);
- 
- function Ada.Strings.Bounded.Hash (Key : Bounded.Bounded_String)
-     return Containers.Hash_Type;
- 
- pragma Preelaborate (Ada.Strings.Bounded.Hash);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-stcoed.ads gcc-8.1.0/gcc/ada/a-stcoed.ads
*** gcc-7.3.0/gcc/ada/a-stcoed.ads	Fri Feb 20 14:29:49 2015
--- gcc-8.1.0/gcc/ada/a-stcoed.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,31 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --      A D A . S Y N C H R O N O U S _ T A S K _ C O N T R O L . E D F     --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This unit is not implemented in typical GNAT implementations that lie on
- --  top of operating systems, because it is infeasible to implement in such
- --  environments.
- 
- --  If a target environment provides appropriate support for this package,
- --  then the Unimplemented_Unit pragma should be removed from this spec and
- --  an appropriate body provided.
- 
- package Ada.Synchronous_Task_Control.EDF is
- 
-    pragma Unimplemented_Unit;
- 
-    procedure Suspend_Until_True_And_Set_Deadline
-       (S  : in out Suspension_Object;
-        TS : Ada.Real_Time.Time_Span);
- end Ada.Synchronous_Task_Control.EDF;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-stfiha.ads gcc-8.1.0/gcc/ada/a-stfiha.ads
*** gcc-7.3.0/gcc/ada/a-stfiha.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-stfiha.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,21 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --             A D A . S T R I N G S . F I X E D . H A S H                  --
- --                                                                          --
- --                                S p e c                                   --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Containers, Ada.Strings.Hash;
- 
- function Ada.Strings.Fixed.Hash (Key : String) return Containers.Hash_Type
-    renames Ada.Strings.Hash;
- 
- pragma Pure (Ada.Strings.Fixed.Hash);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-stmaco.ads gcc-8.1.0/gcc/ada/a-stmaco.ads
*** gcc-7.3.0/gcc/ada/a-stmaco.ads	Wed Jun 11 12:31:56 2014
--- gcc-8.1.0/gcc/ada/a-stmaco.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,915 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --           A D A . S T R I N G S . M A P S . C O N S T A N T S            --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2014, Free Software Foundation, 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Characters.Latin_1;
- 
- package Ada.Strings.Maps.Constants is
-    pragma Pure;
-    --  In accordance with Ada 2005 AI-362
- 
-    Control_Set           : constant Character_Set;
-    Graphic_Set           : constant Character_Set;
-    Letter_Set            : constant Character_Set;
-    Lower_Set             : constant Character_Set;
-    Upper_Set             : constant Character_Set;
-    Basic_Set             : constant Character_Set;
-    Decimal_Digit_Set     : constant Character_Set;
-    Hexadecimal_Digit_Set : constant Character_Set;
-    Alphanumeric_Set      : constant Character_Set;
-    Special_Set           : constant Character_Set;
-    ISO_646_Set           : constant Character_Set;
- 
-    Lower_Case_Map        : constant Character_Mapping;
-    --  Maps to lower case for letters, else identity
- 
-    Upper_Case_Map        : constant Character_Mapping;
-    --  Maps to upper case for letters, else identity
- 
-    Basic_Map             : constant Character_Mapping;
-    --  Maps to basic letters for letters, else identity
- 
- private
-    package L renames Ada.Characters.Latin_1;
- 
-    Control_Set               : constant Character_Set :=
-      (L.NUL                  ..  L.US                  => True,
-       L.DEL                  ..  L.APC                 => True,
-       others                                           => False);
- 
-    Graphic_Set               : constant Character_Set :=
-      (L.Space                ..  L.Tilde               => True,
-       L.No_Break_Space       ..  L.LC_Y_Diaeresis      => True,
-       others                                           => False);
- 
-    Letter_Set                : constant Character_Set :=
-      ('A'                    .. 'Z'                    => True,
-       L.LC_A                 ..  L.LC_Z                => True,
-       L.UC_A_Grave           ..  L.UC_O_Diaeresis      => True,
-       L.UC_O_Oblique_Stroke  ..  L.LC_O_Diaeresis      => True,
-       L.LC_O_Oblique_Stroke  ..  L.LC_Y_Diaeresis      => True,
-       others                                           => False);
- 
-    Lower_Set                 : constant Character_Set :=
-      (L.LC_A                 ..  L.LC_Z                => True,
-       L.LC_German_Sharp_S    ..  L.LC_O_Diaeresis      => True,
-       L.LC_O_Oblique_Stroke  ..  L.LC_Y_Diaeresis      => True,
-       others                                           => False);
- 
-    Upper_Set                 : constant Character_Set :=
-      ('A'                    ..  'Z'                   => True,
-       L.UC_A_Grave           ..  L.UC_O_Diaeresis      => True,
-       L.UC_O_Oblique_Stroke  ..  L.UC_Icelandic_Thorn  => True,
-       others                                           => False);
- 
-    Basic_Set                 : constant Character_Set :=
-      ('A'                    .. 'Z'                    => True,
-       L.LC_A                 ..  L.LC_Z                => True,
-       L.UC_AE_Diphthong      ..  L.UC_AE_Diphthong     => True,
-       L.LC_AE_Diphthong      ..  L.LC_AE_Diphthong     => True,
-       L.LC_German_Sharp_S    ..  L.LC_German_Sharp_S   => True,
-       L.UC_Icelandic_Thorn   ..  L.UC_Icelandic_Thorn  => True,
-       L.LC_Icelandic_Thorn   ..  L.LC_Icelandic_Thorn  => True,
-       L.UC_Icelandic_Eth     ..  L.UC_Icelandic_Eth    => True,
-       L.LC_Icelandic_Eth     ..  L.LC_Icelandic_Eth    => True,
-       others                                           => False);
- 
-    Decimal_Digit_Set         : constant Character_Set :=
-      ('0'                    ..  '9'                   => True,
-       others                                           => False);
- 
-    Hexadecimal_Digit_Set     : constant Character_Set :=
-      ('0'                    ..  '9'                   => True,
-       'A'                    ..  'F'                   => True,
-       L.LC_A                 ..  L.LC_F                => True,
-       others                                           => False);
- 
-    Alphanumeric_Set          : constant Character_Set :=
-      ('0'                    ..  '9'                   => True,
-       'A'                    ..  'Z'                   => True,
-       L.LC_A                 ..  L.LC_Z                => True,
-       L.UC_A_Grave           ..  L.UC_O_Diaeresis      => True,
-       L.UC_O_Oblique_Stroke  ..  L.LC_O_Diaeresis      => True,
-       L.LC_O_Oblique_Stroke  ..  L.LC_Y_Diaeresis      => True,
-       others                                           => False);
- 
-    Special_Set               : constant Character_Set :=
-      (L.Space                ..  L.Solidus             => True,
-       L.Colon                ..  L.Commercial_At       => True,
-       L.Left_Square_Bracket  ..  L.Grave               => True,
-       L.Left_Curly_Bracket   ..  L.Tilde               => True,
-       L.No_Break_Space       ..  L.Inverted_Question   => True,
-       L.Multiplication_Sign  ..  L.Multiplication_Sign => True,
-       L.Division_Sign        ..  L.Division_Sign       => True,
-       others                                           => False);
- 
-    ISO_646_Set               : constant Character_Set :=
-      (L.NUL                  ..  L.DEL                 => True,
-       others                                           => False);
- 
-    Lower_Case_Map : constant Character_Mapping :=
-      (L.NUL                         &  -- NUL                             0
-       L.SOH                         &  -- SOH                             1
-       L.STX                         &  -- STX                             2
-       L.ETX                         &  -- ETX                             3
-       L.EOT                         &  -- EOT                             4
-       L.ENQ                         &  -- ENQ                             5
-       L.ACK                         &  -- ACK                             6
-       L.BEL                         &  -- BEL                             7
-       L.BS                          &  -- BS                              8
-       L.HT                          &  -- HT                              9
-       L.LF                          &  -- LF                             10
-       L.VT                          &  -- VT                             11
-       L.FF                          &  -- FF                             12
-       L.CR                          &  -- CR                             13
-       L.SO                          &  -- SO                             14
-       L.SI                          &  -- SI                             15
-       L.DLE                         &  -- DLE                            16
-       L.DC1                         &  -- DC1                            17
-       L.DC2                         &  -- DC2                            18
-       L.DC3                         &  -- DC3                            19
-       L.DC4                         &  -- DC4                            20
-       L.NAK                         &  -- NAK                            21
-       L.SYN                         &  -- SYN                            22
-       L.ETB                         &  -- ETB                            23
-       L.CAN                         &  -- CAN                            24
-       L.EM                          &  -- EM                             25
-       L.SUB                         &  -- SUB                            26
-       L.ESC                         &  -- ESC                            27
-       L.FS                          &  -- FS                             28
-       L.GS                          &  -- GS                             29
-       L.RS                          &  -- RS                             30
-       L.US                          &  -- US                             31
-       L.Space                       &  -- ' '                            32
-       L.Exclamation                 &  -- '!'                            33
-       L.Quotation                   &  -- '"'                            34
-       L.Number_Sign                 &  -- '#'                            35
-       L.Dollar_Sign                 &  -- '$'                            36
-       L.Percent_Sign                &  -- '%'                            37
-       L.Ampersand                   &  -- '&'                            38
-       L.Apostrophe                  &  -- '''                            39
-       L.Left_Parenthesis            &  -- '('                            40
-       L.Right_Parenthesis           &  -- ')'                            41
-       L.Asterisk                    &  -- '*'                            42
-       L.Plus_Sign                   &  -- '+'                            43
-       L.Comma                       &  -- ','                            44
-       L.Hyphen                      &  -- '-'                            45
-       L.Full_Stop                   &  -- '.'                            46
-       L.Solidus                     &  -- '/'                            47
-       '0'                           &  -- '0'                            48
-       '1'                           &  -- '1'                            49
-       '2'                           &  -- '2'                            50
-       '3'                           &  -- '3'                            51
-       '4'                           &  -- '4'                            52
-       '5'                           &  -- '5'                            53
-       '6'                           &  -- '6'                            54
-       '7'                           &  -- '7'                            55
-       '8'                           &  -- '8'                            56
-       '9'                           &  -- '9'                            57
-       L.Colon                       &  -- ':'                            58
-       L.Semicolon                   &  -- ';'                            59
-       L.Less_Than_Sign              &  -- '<'                            60
-       L.Equals_Sign                 &  -- '='                            61
-       L.Greater_Than_Sign           &  -- '>'                            62
-       L.Question                    &  -- '?'                            63
-       L.Commercial_At               &  -- '@'                            64
-       L.LC_A                        &  -- 'a'                            65
-       L.LC_B                        &  -- 'b'                            66
-       L.LC_C                        &  -- 'c'                            67
-       L.LC_D                        &  -- 'd'                            68
-       L.LC_E                        &  -- 'e'                            69
-       L.LC_F                        &  -- 'f'                            70
-       L.LC_G                        &  -- 'g'                            71
-       L.LC_H                        &  -- 'h'                            72
-       L.LC_I                        &  -- 'i'                            73
-       L.LC_J                        &  -- 'j'                            74
-       L.LC_K                        &  -- 'k'                            75
-       L.LC_L                        &  -- 'l'                            76
-       L.LC_M                        &  -- 'm'                            77
-       L.LC_N                        &  -- 'n'                            78
-       L.LC_O                        &  -- 'o'                            79
-       L.LC_P                        &  -- 'p'                            80
-       L.LC_Q                        &  -- 'q'                            81
-       L.LC_R                        &  -- 'r'                            82
-       L.LC_S                        &  -- 's'                            83
-       L.LC_T                        &  -- 't'                            84
-       L.LC_U                        &  -- 'u'                            85
-       L.LC_V                        &  -- 'v'                            86
-       L.LC_W                        &  -- 'w'                            87
-       L.LC_X                        &  -- 'x'                            88
-       L.LC_Y                        &  -- 'y'                            89
-       L.LC_Z                        &  -- 'z'                            90
-       L.Left_Square_Bracket         &  -- '['                            91
-       L.Reverse_Solidus             &  -- '\'                            92
-       L.Right_Square_Bracket        &  -- ']'                            93
-       L.Circumflex                  &  -- '^'                            94
-       L.Low_Line                    &  -- '_'                            95
-       L.Grave                       &  -- '`'                            96
-       L.LC_A                        &  -- 'a'                            97
-       L.LC_B                        &  -- 'b'                            98
-       L.LC_C                        &  -- 'c'                            99
-       L.LC_D                        &  -- 'd'                           100
-       L.LC_E                        &  -- 'e'                           101
-       L.LC_F                        &  -- 'f'                           102
-       L.LC_G                        &  -- 'g'                           103
-       L.LC_H                        &  -- 'h'                           104
-       L.LC_I                        &  -- 'i'                           105
-       L.LC_J                        &  -- 'j'                           106
-       L.LC_K                        &  -- 'k'                           107
-       L.LC_L                        &  -- 'l'                           108
-       L.LC_M                        &  -- 'm'                           109
-       L.LC_N                        &  -- 'n'                           110
-       L.LC_O                        &  -- 'o'                           111
-       L.LC_P                        &  -- 'p'                           112
-       L.LC_Q                        &  -- 'q'                           113
-       L.LC_R                        &  -- 'r'                           114
-       L.LC_S                        &  -- 's'                           115
-       L.LC_T                        &  -- 't'                           116
-       L.LC_U                        &  -- 'u'                           117
-       L.LC_V                        &  -- 'v'                           118
-       L.LC_W                        &  -- 'w'                           119
-       L.LC_X                        &  -- 'x'                           120
-       L.LC_Y                        &  -- 'y'                           121
-       L.LC_Z                        &  -- 'z'                           122
-       L.Left_Curly_Bracket          &  -- '{'                           123
-       L.Vertical_Line               &  -- '|'                           124
-       L.Right_Curly_Bracket         &  -- '}'                           125
-       L.Tilde                       &  -- '~'                           126
-       L.DEL                         &  -- DEL                           127
-       L.Reserved_128                &  -- Reserved_128                  128
-       L.Reserved_129                &  -- Reserved_129                  129
-       L.BPH                         &  -- BPH                           130
-       L.NBH                         &  -- NBH                           131
-       L.Reserved_132                &  -- Reserved_132                  132
-       L.NEL                         &  -- NEL                           133
-       L.SSA                         &  -- SSA                           134
-       L.ESA                         &  -- ESA                           135
-       L.HTS                         &  -- HTS                           136
-       L.HTJ                         &  -- HTJ                           137
-       L.VTS                         &  -- VTS                           138
-       L.PLD                         &  -- PLD                           139
-       L.PLU                         &  -- PLU                           140
-       L.RI                          &  -- RI                            141
-       L.SS2                         &  -- SS2                           142
-       L.SS3                         &  -- SS3                           143
-       L.DCS                         &  -- DCS                           144
-       L.PU1                         &  -- PU1                           145
-       L.PU2                         &  -- PU2                           146
-       L.STS                         &  -- STS                           147
-       L.CCH                         &  -- CCH                           148
-       L.MW                          &  -- MW                            149
-       L.SPA                         &  -- SPA                           150
-       L.EPA                         &  -- EPA                           151
-       L.SOS                         &  -- SOS                           152
-       L.Reserved_153                &  -- Reserved_153                  153
-       L.SCI                         &  -- SCI                           154
-       L.CSI                         &  -- CSI                           155
-       L.ST                          &  -- ST                            156
-       L.OSC                         &  -- OSC                           157
-       L.PM                          &  -- PM                            158
-       L.APC                         &  -- APC                           159
-       L.No_Break_Space              &  -- No_Break_Space                160
-       L.Inverted_Exclamation        &  -- Inverted_Exclamation          161
-       L.Cent_Sign                   &  -- Cent_Sign                     162
-       L.Pound_Sign                  &  -- Pound_Sign                    163
-       L.Currency_Sign               &  -- Currency_Sign                 164
-       L.Yen_Sign                    &  -- Yen_Sign                      165
-       L.Broken_Bar                  &  -- Broken_Bar                    166
-       L.Section_Sign                &  -- Section_Sign                  167
-       L.Diaeresis                   &  -- Diaeresis                     168
-       L.Copyright_Sign              &  -- Copyright_Sign                169
-       L.Feminine_Ordinal_Indicator  &  -- Feminine_Ordinal_Indicator    170
-       L.Left_Angle_Quotation        &  -- Left_Angle_Quotation          171
-       L.Not_Sign                    &  -- Not_Sign                      172
-       L.Soft_Hyphen                 &  -- Soft_Hyphen                   173
-       L.Registered_Trade_Mark_Sign  &  -- Registered_Trade_Mark_Sign    174
-       L.Macron                      &  -- Macron                        175
-       L.Degree_Sign                 &  -- Degree_Sign                   176
-       L.Plus_Minus_Sign             &  -- Plus_Minus_Sign               177
-       L.Superscript_Two             &  -- Superscript_Two               178
-       L.Superscript_Three           &  -- Superscript_Three             179
-       L.Acute                       &  -- Acute                         180
-       L.Micro_Sign                  &  -- Micro_Sign                    181
-       L.Pilcrow_Sign                &  -- Pilcrow_Sign                  182
-       L.Middle_Dot                  &  -- Middle_Dot                    183
-       L.Cedilla                     &  -- Cedilla                       184
-       L.Superscript_One             &  -- Superscript_One               185
-       L.Masculine_Ordinal_Indicator &  -- Masculine_Ordinal_Indicator   186
-       L.Right_Angle_Quotation       &  -- Right_Angle_Quotation         187
-       L.Fraction_One_Quarter        &  -- Fraction_One_Quarter          188
-       L.Fraction_One_Half           &  -- Fraction_One_Half             189
-       L.Fraction_Three_Quarters     &  -- Fraction_Three_Quarters       190
-       L.Inverted_Question           &  -- Inverted_Question             191
-       L.LC_A_Grave                  &  -- UC_A_Grave                    192
-       L.LC_A_Acute                  &  -- UC_A_Acute                    193
-       L.LC_A_Circumflex             &  -- UC_A_Circumflex               194
-       L.LC_A_Tilde                  &  -- UC_A_Tilde                    195
-       L.LC_A_Diaeresis              &  -- UC_A_Diaeresis                196
-       L.LC_A_Ring                   &  -- UC_A_Ring                     197
-       L.LC_AE_Diphthong             &  -- UC_AE_Diphthong               198
-       L.LC_C_Cedilla                &  -- UC_C_Cedilla                  199
-       L.LC_E_Grave                  &  -- UC_E_Grave                    200
-       L.LC_E_Acute                  &  -- UC_E_Acute                    201
-       L.LC_E_Circumflex             &  -- UC_E_Circumflex               202
-       L.LC_E_Diaeresis              &  -- UC_E_Diaeresis                203
-       L.LC_I_Grave                  &  -- UC_I_Grave                    204
-       L.LC_I_Acute                  &  -- UC_I_Acute                    205
-       L.LC_I_Circumflex             &  -- UC_I_Circumflex               206
-       L.LC_I_Diaeresis              &  -- UC_I_Diaeresis                207
-       L.LC_Icelandic_Eth            &  -- UC_Icelandic_Eth              208
-       L.LC_N_Tilde                  &  -- UC_N_Tilde                    209
-       L.LC_O_Grave                  &  -- UC_O_Grave                    210
-       L.LC_O_Acute                  &  -- UC_O_Acute                    211
-       L.LC_O_Circumflex             &  -- UC_O_Circumflex               212
-       L.LC_O_Tilde                  &  -- UC_O_Tilde                    213
-       L.LC_O_Diaeresis              &  -- UC_O_Diaeresis                214
-       L.Multiplication_Sign         &  -- Multiplication_Sign           215
-       L.LC_O_Oblique_Stroke         &  -- UC_O_Oblique_Stroke           216
-       L.LC_U_Grave                  &  -- UC_U_Grave                    217
-       L.LC_U_Acute                  &  -- UC_U_Acute                    218
-       L.LC_U_Circumflex             &  -- UC_U_Circumflex               219
-       L.LC_U_Diaeresis              &  -- UC_U_Diaeresis                220
-       L.LC_Y_Acute                  &  -- UC_Y_Acute                    221
-       L.LC_Icelandic_Thorn          &  -- UC_Icelandic_Thorn            222
-       L.LC_German_Sharp_S           &  -- LC_German_Sharp_S             223
-       L.LC_A_Grave                  &  -- LC_A_Grave                    224
-       L.LC_A_Acute                  &  -- LC_A_Acute                    225
-       L.LC_A_Circumflex             &  -- LC_A_Circumflex               226
-       L.LC_A_Tilde                  &  -- LC_A_Tilde                    227
-       L.LC_A_Diaeresis              &  -- LC_A_Diaeresis                228
-       L.LC_A_Ring                   &  -- LC_A_Ring                     229
-       L.LC_AE_Diphthong             &  -- LC_AE_Diphthong               230
-       L.LC_C_Cedilla                &  -- LC_C_Cedilla                  231
-       L.LC_E_Grave                  &  -- LC_E_Grave                    232
-       L.LC_E_Acute                  &  -- LC_E_Acute                    233
-       L.LC_E_Circumflex             &  -- LC_E_Circumflex               234
-       L.LC_E_Diaeresis              &  -- LC_E_Diaeresis                235
-       L.LC_I_Grave                  &  -- LC_I_Grave                    236
-       L.LC_I_Acute                  &  -- LC_I_Acute                    237
-       L.LC_I_Circumflex             &  -- LC_I_Circumflex               238
-       L.LC_I_Diaeresis              &  -- LC_I_Diaeresis                239
-       L.LC_Icelandic_Eth            &  -- LC_Icelandic_Eth              240
-       L.LC_N_Tilde                  &  -- LC_N_Tilde                    241
-       L.LC_O_Grave                  &  -- LC_O_Grave                    242
-       L.LC_O_Acute                  &  -- LC_O_Acute                    243
-       L.LC_O_Circumflex             &  -- LC_O_Circumflex               244
-       L.LC_O_Tilde                  &  -- LC_O_Tilde                    245
-       L.LC_O_Diaeresis              &  -- LC_O_Diaeresis                246
-       L.Division_Sign               &  -- Division_Sign                 247
-       L.LC_O_Oblique_Stroke         &  -- LC_O_Oblique_Stroke           248
-       L.LC_U_Grave                  &  -- LC_U_Grave                    249
-       L.LC_U_Acute                  &  -- LC_U_Acute                    250
-       L.LC_U_Circumflex             &  -- LC_U_Circumflex               251
-       L.LC_U_Diaeresis              &  -- LC_U_Diaeresis                252
-       L.LC_Y_Acute                  &  -- LC_Y_Acute                    253
-       L.LC_Icelandic_Thorn          &  -- LC_Icelandic_Thorn            254
-       L.LC_Y_Diaeresis);               -- LC_Y_Diaeresis                255
- 
-    Upper_Case_Map : constant Character_Mapping :=
-      (L.NUL                         &  -- NUL                             0
-       L.SOH                         &  -- SOH                             1
-       L.STX                         &  -- STX                             2
-       L.ETX                         &  -- ETX                             3
-       L.EOT                         &  -- EOT                             4
-       L.ENQ                         &  -- ENQ                             5
-       L.ACK                         &  -- ACK                             6
-       L.BEL                         &  -- BEL                             7
-       L.BS                          &  -- BS                              8
-       L.HT                          &  -- HT                              9
-       L.LF                          &  -- LF                             10
-       L.VT                          &  -- VT                             11
-       L.FF                          &  -- FF                             12
-       L.CR                          &  -- CR                             13
-       L.SO                          &  -- SO                             14
-       L.SI                          &  -- SI                             15
-       L.DLE                         &  -- DLE                            16
-       L.DC1                         &  -- DC1                            17
-       L.DC2                         &  -- DC2                            18
-       L.DC3                         &  -- DC3                            19
-       L.DC4                         &  -- DC4                            20
-       L.NAK                         &  -- NAK                            21
-       L.SYN                         &  -- SYN                            22
-       L.ETB                         &  -- ETB                            23
-       L.CAN                         &  -- CAN                            24
-       L.EM                          &  -- EM                             25
-       L.SUB                         &  -- SUB                            26
-       L.ESC                         &  -- ESC                            27
-       L.FS                          &  -- FS                             28
-       L.GS                          &  -- GS                             29
-       L.RS                          &  -- RS                             30
-       L.US                          &  -- US                             31
-       L.Space                       &  -- ' '                            32
-       L.Exclamation                 &  -- '!'                            33
-       L.Quotation                   &  -- '"'                            34
-       L.Number_Sign                 &  -- '#'                            35
-       L.Dollar_Sign                 &  -- '$'                            36
-       L.Percent_Sign                &  -- '%'                            37
-       L.Ampersand                   &  -- '&'                            38
-       L.Apostrophe                  &  -- '''                            39
-       L.Left_Parenthesis            &  -- '('                            40
-       L.Right_Parenthesis           &  -- ')'                            41
-       L.Asterisk                    &  -- '*'                            42
-       L.Plus_Sign                   &  -- '+'                            43
-       L.Comma                       &  -- ','                            44
-       L.Hyphen                      &  -- '-'                            45
-       L.Full_Stop                   &  -- '.'                            46
-       L.Solidus                     &  -- '/'                            47
-       '0'                           &  -- '0'                            48
-       '1'                           &  -- '1'                            49
-       '2'                           &  -- '2'                            50
-       '3'                           &  -- '3'                            51
-       '4'                           &  -- '4'                            52
-       '5'                           &  -- '5'                            53
-       '6'                           &  -- '6'                            54
-       '7'                           &  -- '7'                            55
-       '8'                           &  -- '8'                            56
-       '9'                           &  -- '9'                            57
-       L.Colon                       &  -- ':'                            58
-       L.Semicolon                   &  -- ';'                            59
-       L.Less_Than_Sign              &  -- '<'                            60
-       L.Equals_Sign                 &  -- '='                            61
-       L.Greater_Than_Sign           &  -- '>'                            62
-       L.Question                    &  -- '?'                            63
-       L.Commercial_At               &  -- '@'                            64
-       'A'                           &  -- 'A'                            65
-       'B'                           &  -- 'B'                            66
-       'C'                           &  -- 'C'                            67
-       'D'                           &  -- 'D'                            68
-       'E'                           &  -- 'E'                            69
-       'F'                           &  -- 'F'                            70
-       'G'                           &  -- 'G'                            71
-       'H'                           &  -- 'H'                            72
-       'I'                           &  -- 'I'                            73
-       'J'                           &  -- 'J'                            74
-       'K'                           &  -- 'K'                            75
-       'L'                           &  -- 'L'                            76
-       'M'                           &  -- 'M'                            77
-       'N'                           &  -- 'N'                            78
-       'O'                           &  -- 'O'                            79
-       'P'                           &  -- 'P'                            80
-       'Q'                           &  -- 'Q'                            81
-       'R'                           &  -- 'R'                            82
-       'S'                           &  -- 'S'                            83
-       'T'                           &  -- 'T'                            84
-       'U'                           &  -- 'U'                            85
-       'V'                           &  -- 'V'                            86
-       'W'                           &  -- 'W'                            87
-       'X'                           &  -- 'X'                            88
-       'Y'                           &  -- 'Y'                            89
-       'Z'                           &  -- 'Z'                            90
-       L.Left_Square_Bracket         &  -- '['                            91
-       L.Reverse_Solidus             &  -- '\'                            92
-       L.Right_Square_Bracket        &  -- ']'                            93
-       L.Circumflex                  &  -- '^'                            94
-       L.Low_Line                    &  -- '_'                            95
-       L.Grave                       &  -- '`'                            96
-       'A'                           &  -- 'a'                            97
-       'B'                           &  -- 'b'                            98
-       'C'                           &  -- 'c'                            99
-       'D'                           &  -- 'd'                           100
-       'E'                           &  -- 'e'                           101
-       'F'                           &  -- 'f'                           102
-       'G'                           &  -- 'g'                           103
-       'H'                           &  -- 'h'                           104
-       'I'                           &  -- 'i'                           105
-       'J'                           &  -- 'j'                           106
-       'K'                           &  -- 'k'                           107
-       'L'                           &  -- 'l'                           108
-       'M'                           &  -- 'm'                           109
-       'N'                           &  -- 'n'                           110
-       'O'                           &  -- 'o'                           111
-       'P'                           &  -- 'p'                           112
-       'Q'                           &  -- 'q'                           113
-       'R'                           &  -- 'r'                           114
-       'S'                           &  -- 's'                           115
-       'T'                           &  -- 't'                           116
-       'U'                           &  -- 'u'                           117
-       'V'                           &  -- 'v'                           118
-       'W'                           &  -- 'w'                           119
-       'X'                           &  -- 'x'                           120
-       'Y'                           &  -- 'y'                           121
-       'Z'                           &  -- 'z'                           122
-       L.Left_Curly_Bracket          &  -- '{'                           123
-       L.Vertical_Line               &  -- '|'                           124
-       L.Right_Curly_Bracket         &  -- '}'                           125
-       L.Tilde                       &  -- '~'                           126
-       L.DEL                         &  -- DEL                           127
-       L.Reserved_128                &  -- Reserved_128                  128
-       L.Reserved_129                &  -- Reserved_129                  129
-       L.BPH                         &  -- BPH                           130
-       L.NBH                         &  -- NBH                           131
-       L.Reserved_132                &  -- Reserved_132                  132
-       L.NEL                         &  -- NEL                           133
-       L.SSA                         &  -- SSA                           134
-       L.ESA                         &  -- ESA                           135
-       L.HTS                         &  -- HTS                           136
-       L.HTJ                         &  -- HTJ                           137
-       L.VTS                         &  -- VTS                           138
-       L.PLD                         &  -- PLD                           139
-       L.PLU                         &  -- PLU                           140
-       L.RI                          &  -- RI                            141
-       L.SS2                         &  -- SS2                           142
-       L.SS3                         &  -- SS3                           143
-       L.DCS                         &  -- DCS                           144
-       L.PU1                         &  -- PU1                           145
-       L.PU2                         &  -- PU2                           146
-       L.STS                         &  -- STS                           147
-       L.CCH                         &  -- CCH                           148
-       L.MW                          &  -- MW                            149
-       L.SPA                         &  -- SPA                           150
-       L.EPA                         &  -- EPA                           151
-       L.SOS                         &  -- SOS                           152
-       L.Reserved_153                &  -- Reserved_153                  153
-       L.SCI                         &  -- SCI                           154
-       L.CSI                         &  -- CSI                           155
-       L.ST                          &  -- ST                            156
-       L.OSC                         &  -- OSC                           157
-       L.PM                          &  -- PM                            158
-       L.APC                         &  -- APC                           159
-       L.No_Break_Space              &  -- No_Break_Space                160
-       L.Inverted_Exclamation        &  -- Inverted_Exclamation          161
-       L.Cent_Sign                   &  -- Cent_Sign                     162
-       L.Pound_Sign                  &  -- Pound_Sign                    163
-       L.Currency_Sign               &  -- Currency_Sign                 164
-       L.Yen_Sign                    &  -- Yen_Sign                      165
-       L.Broken_Bar                  &  -- Broken_Bar                    166
-       L.Section_Sign                &  -- Section_Sign                  167
-       L.Diaeresis                   &  -- Diaeresis                     168
-       L.Copyright_Sign              &  -- Copyright_Sign                169
-       L.Feminine_Ordinal_Indicator  &  -- Feminine_Ordinal_Indicator    170
-       L.Left_Angle_Quotation        &  -- Left_Angle_Quotation          171
-       L.Not_Sign                    &  -- Not_Sign                      172
-       L.Soft_Hyphen                 &  -- Soft_Hyphen                   173
-       L.Registered_Trade_Mark_Sign  &  -- Registered_Trade_Mark_Sign    174
-       L.Macron                      &  -- Macron                        175
-       L.Degree_Sign                 &  -- Degree_Sign                   176
-       L.Plus_Minus_Sign             &  -- Plus_Minus_Sign               177
-       L.Superscript_Two             &  -- Superscript_Two               178
-       L.Superscript_Three           &  -- Superscript_Three             179
-       L.Acute                       &  -- Acute                         180
-       L.Micro_Sign                  &  -- Micro_Sign                    181
-       L.Pilcrow_Sign                &  -- Pilcrow_Sign                  182
-       L.Middle_Dot                  &  -- Middle_Dot                    183
-       L.Cedilla                     &  -- Cedilla                       184
-       L.Superscript_One             &  -- Superscript_One               185
-       L.Masculine_Ordinal_Indicator &  -- Masculine_Ordinal_Indicator   186
-       L.Right_Angle_Quotation       &  -- Right_Angle_Quotation         187
-       L.Fraction_One_Quarter        &  -- Fraction_One_Quarter          188
-       L.Fraction_One_Half           &  -- Fraction_One_Half             189
-       L.Fraction_Three_Quarters     &  -- Fraction_Three_Quarters       190
-       L.Inverted_Question           &  -- Inverted_Question             191
-       L.UC_A_Grave                  &  -- UC_A_Grave                    192
-       L.UC_A_Acute                  &  -- UC_A_Acute                    193
-       L.UC_A_Circumflex             &  -- UC_A_Circumflex               194
-       L.UC_A_Tilde                  &  -- UC_A_Tilde                    195
-       L.UC_A_Diaeresis              &  -- UC_A_Diaeresis                196
-       L.UC_A_Ring                   &  -- UC_A_Ring                     197
-       L.UC_AE_Diphthong             &  -- UC_AE_Diphthong               198
-       L.UC_C_Cedilla                &  -- UC_C_Cedilla                  199
-       L.UC_E_Grave                  &  -- UC_E_Grave                    200
-       L.UC_E_Acute                  &  -- UC_E_Acute                    201
-       L.UC_E_Circumflex             &  -- UC_E_Circumflex               202
-       L.UC_E_Diaeresis              &  -- UC_E_Diaeresis                203
-       L.UC_I_Grave                  &  -- UC_I_Grave                    204
-       L.UC_I_Acute                  &  -- UC_I_Acute                    205
-       L.UC_I_Circumflex             &  -- UC_I_Circumflex               206
-       L.UC_I_Diaeresis              &  -- UC_I_Diaeresis                207
-       L.UC_Icelandic_Eth            &  -- UC_Icelandic_Eth              208
-       L.UC_N_Tilde                  &  -- UC_N_Tilde                    209
-       L.UC_O_Grave                  &  -- UC_O_Grave                    210
-       L.UC_O_Acute                  &  -- UC_O_Acute                    211
-       L.UC_O_Circumflex             &  -- UC_O_Circumflex               212
-       L.UC_O_Tilde                  &  -- UC_O_Tilde                    213
-       L.UC_O_Diaeresis              &  -- UC_O_Diaeresis                214
-       L.Multiplication_Sign         &  -- Multiplication_Sign           215
-       L.UC_O_Oblique_Stroke         &  -- UC_O_Oblique_Stroke           216
-       L.UC_U_Grave                  &  -- UC_U_Grave                    217
-       L.UC_U_Acute                  &  -- UC_U_Acute                    218
-       L.UC_U_Circumflex             &  -- UC_U_Circumflex               219
-       L.UC_U_Diaeresis              &  -- UC_U_Diaeresis                220
-       L.UC_Y_Acute                  &  -- UC_Y_Acute                    221
-       L.UC_Icelandic_Thorn          &  -- UC_Icelandic_Thorn            222
-       L.LC_German_Sharp_S           &  -- LC_German_Sharp_S             223
-       L.UC_A_Grave                  &  -- LC_A_Grave                    224
-       L.UC_A_Acute                  &  -- LC_A_Acute                    225
-       L.UC_A_Circumflex             &  -- LC_A_Circumflex               226
-       L.UC_A_Tilde                  &  -- LC_A_Tilde                    227
-       L.UC_A_Diaeresis              &  -- LC_A_Diaeresis                228
-       L.UC_A_Ring                   &  -- LC_A_Ring                     229
-       L.UC_AE_Diphthong             &  -- LC_AE_Diphthong               230
-       L.UC_C_Cedilla                &  -- LC_C_Cedilla                  231
-       L.UC_E_Grave                  &  -- LC_E_Grave                    232
-       L.UC_E_Acute                  &  -- LC_E_Acute                    233
-       L.UC_E_Circumflex             &  -- LC_E_Circumflex               234
-       L.UC_E_Diaeresis              &  -- LC_E_Diaeresis                235
-       L.UC_I_Grave                  &  -- LC_I_Grave                    236
-       L.UC_I_Acute                  &  -- LC_I_Acute                    237
-       L.UC_I_Circumflex             &  -- LC_I_Circumflex               238
-       L.UC_I_Diaeresis              &  -- LC_I_Diaeresis                239
-       L.UC_Icelandic_Eth            &  -- LC_Icelandic_Eth              240
-       L.UC_N_Tilde                  &  -- LC_N_Tilde                    241
-       L.UC_O_Grave                  &  -- LC_O_Grave                    242
-       L.UC_O_Acute                  &  -- LC_O_Acute                    243
-       L.UC_O_Circumflex             &  -- LC_O_Circumflex               244
-       L.UC_O_Tilde                  &  -- LC_O_Tilde                    245
-       L.UC_O_Diaeresis              &  -- LC_O_Diaeresis                246
-       L.Division_Sign               &  -- Division_Sign                 247
-       L.UC_O_Oblique_Stroke         &  -- LC_O_Oblique_Stroke           248
-       L.UC_U_Grave                  &  -- LC_U_Grave                    249
-       L.UC_U_Acute                  &  -- LC_U_Acute                    250
-       L.UC_U_Circumflex             &  -- LC_U_Circumflex               251
-       L.UC_U_Diaeresis              &  -- LC_U_Diaeresis                252
-       L.UC_Y_Acute                  &  -- LC_Y_Acute                    253
-       L.UC_Icelandic_Thorn          &  -- LC_Icelandic_Thorn            254
-       L.LC_Y_Diaeresis);               -- LC_Y_Diaeresis                255
- 
-    Basic_Map : constant Character_Mapping :=
-      (L.NUL                         &  -- NUL                             0
-       L.SOH                         &  -- SOH                             1
-       L.STX                         &  -- STX                             2
-       L.ETX                         &  -- ETX                             3
-       L.EOT                         &  -- EOT                             4
-       L.ENQ                         &  -- ENQ                             5
-       L.ACK                         &  -- ACK                             6
-       L.BEL                         &  -- BEL                             7
-       L.BS                          &  -- BS                              8
-       L.HT                          &  -- HT                              9
-       L.LF                          &  -- LF                             10
-       L.VT                          &  -- VT                             11
-       L.FF                          &  -- FF                             12
-       L.CR                          &  -- CR                             13
-       L.SO                          &  -- SO                             14
-       L.SI                          &  -- SI                             15
-       L.DLE                         &  -- DLE                            16
-       L.DC1                         &  -- DC1                            17
-       L.DC2                         &  -- DC2                            18
-       L.DC3                         &  -- DC3                            19
-       L.DC4                         &  -- DC4                            20
-       L.NAK                         &  -- NAK                            21
-       L.SYN                         &  -- SYN                            22
-       L.ETB                         &  -- ETB                            23
-       L.CAN                         &  -- CAN                            24
-       L.EM                          &  -- EM                             25
-       L.SUB                         &  -- SUB                            26
-       L.ESC                         &  -- ESC                            27
-       L.FS                          &  -- FS                             28
-       L.GS                          &  -- GS                             29
-       L.RS                          &  -- RS                             30
-       L.US                          &  -- US                             31
-       L.Space                       &  -- ' '                            32
-       L.Exclamation                 &  -- '!'                            33
-       L.Quotation                   &  -- '"'                            34
-       L.Number_Sign                 &  -- '#'                            35
-       L.Dollar_Sign                 &  -- '$'                            36
-       L.Percent_Sign                &  -- '%'                            37
-       L.Ampersand                   &  -- '&'                            38
-       L.Apostrophe                  &  -- '''                            39
-       L.Left_Parenthesis            &  -- '('                            40
-       L.Right_Parenthesis           &  -- ')'                            41
-       L.Asterisk                    &  -- '*'                            42
-       L.Plus_Sign                   &  -- '+'                            43
-       L.Comma                       &  -- ','                            44
-       L.Hyphen                      &  -- '-'                            45
-       L.Full_Stop                   &  -- '.'                            46
-       L.Solidus                     &  -- '/'                            47
-       '0'                           &  -- '0'                            48
-       '1'                           &  -- '1'                            49
-       '2'                           &  -- '2'                            50
-       '3'                           &  -- '3'                            51
-       '4'                           &  -- '4'                            52
-       '5'                           &  -- '5'                            53
-       '6'                           &  -- '6'                            54
-       '7'                           &  -- '7'                            55
-       '8'                           &  -- '8'                            56
-       '9'                           &  -- '9'                            57
-       L.Colon                       &  -- ':'                            58
-       L.Semicolon                   &  -- ';'                            59
-       L.Less_Than_Sign              &  -- '<'                            60
-       L.Equals_Sign                 &  -- '='                            61
-       L.Greater_Than_Sign           &  -- '>'                            62
-       L.Question                    &  -- '?'                            63
-       L.Commercial_At               &  -- '@'                            64
-       'A'                           &  -- 'A'                            65
-       'B'                           &  -- 'B'                            66
-       'C'                           &  -- 'C'                            67
-       'D'                           &  -- 'D'                            68
-       'E'                           &  -- 'E'                            69
-       'F'                           &  -- 'F'                            70
-       'G'                           &  -- 'G'                            71
-       'H'                           &  -- 'H'                            72
-       'I'                           &  -- 'I'                            73
-       'J'                           &  -- 'J'                            74
-       'K'                           &  -- 'K'                            75
-       'L'                           &  -- 'L'                            76
-       'M'                           &  -- 'M'                            77
-       'N'                           &  -- 'N'                            78
-       'O'                           &  -- 'O'                            79
-       'P'                           &  -- 'P'                            80
-       'Q'                           &  -- 'Q'                            81
-       'R'                           &  -- 'R'                            82
-       'S'                           &  -- 'S'                            83
-       'T'                           &  -- 'T'                            84
-       'U'                           &  -- 'U'                            85
-       'V'                           &  -- 'V'                            86
-       'W'                           &  -- 'W'                            87
-       'X'                           &  -- 'X'                            88
-       'Y'                           &  -- 'Y'                            89
-       'Z'                           &  -- 'Z'                            90
-       L.Left_Square_Bracket         &  -- '['                            91
-       L.Reverse_Solidus             &  -- '\'                            92
-       L.Right_Square_Bracket        &  -- ']'                            93
-       L.Circumflex                  &  -- '^'                            94
-       L.Low_Line                    &  -- '_'                            95
-       L.Grave                       &  -- '`'                            96
-       L.LC_A                        &  -- 'a'                            97
-       L.LC_B                        &  -- 'b'                            98
-       L.LC_C                        &  -- 'c'                            99
-       L.LC_D                        &  -- 'd'                           100
-       L.LC_E                        &  -- 'e'                           101
-       L.LC_F                        &  -- 'f'                           102
-       L.LC_G                        &  -- 'g'                           103
-       L.LC_H                        &  -- 'h'                           104
-       L.LC_I                        &  -- 'i'                           105
-       L.LC_J                        &  -- 'j'                           106
-       L.LC_K                        &  -- 'k'                           107
-       L.LC_L                        &  -- 'l'                           108
-       L.LC_M                        &  -- 'm'                           109
-       L.LC_N                        &  -- 'n'                           110
-       L.LC_O                        &  -- 'o'                           111
-       L.LC_P                        &  -- 'p'                           112
-       L.LC_Q                        &  -- 'q'                           113
-       L.LC_R                        &  -- 'r'                           114
-       L.LC_S                        &  -- 's'                           115
-       L.LC_T                        &  -- 't'                           116
-       L.LC_U                        &  -- 'u'                           117
-       L.LC_V                        &  -- 'v'                           118
-       L.LC_W                        &  -- 'w'                           119
-       L.LC_X                        &  -- 'x'                           120
-       L.LC_Y                        &  -- 'y'                           121
-       L.LC_Z                        &  -- 'z'                           122
-       L.Left_Curly_Bracket          &  -- '{'                           123
-       L.Vertical_Line               &  -- '|'                           124
-       L.Right_Curly_Bracket         &  -- '}'                           125
-       L.Tilde                       &  -- '~'                           126
-       L.DEL                         &  -- DEL                           127
-       L.Reserved_128                &  -- Reserved_128                  128
-       L.Reserved_129                &  -- Reserved_129                  129
-       L.BPH                         &  -- BPH                           130
-       L.NBH                         &  -- NBH                           131
-       L.Reserved_132                &  -- Reserved_132                  132
-       L.NEL                         &  -- NEL                           133
-       L.SSA                         &  -- SSA                           134
-       L.ESA                         &  -- ESA                           135
-       L.HTS                         &  -- HTS                           136
-       L.HTJ                         &  -- HTJ                           137
-       L.VTS                         &  -- VTS                           138
-       L.PLD                         &  -- PLD                           139
-       L.PLU                         &  -- PLU                           140
-       L.RI                          &  -- RI                            141
-       L.SS2                         &  -- SS2                           142
-       L.SS3                         &  -- SS3                           143
-       L.DCS                         &  -- DCS                           144
-       L.PU1                         &  -- PU1                           145
-       L.PU2                         &  -- PU2                           146
-       L.STS                         &  -- STS                           147
-       L.CCH                         &  -- CCH                           148
-       L.MW                          &  -- MW                            149
-       L.SPA                         &  -- SPA                           150
-       L.EPA                         &  -- EPA                           151
-       L.SOS                         &  -- SOS                           152
-       L.Reserved_153                &  -- Reserved_153                  153
-       L.SCI                         &  -- SCI                           154
-       L.CSI                         &  -- CSI                           155
-       L.ST                          &  -- ST                            156
-       L.OSC                         &  -- OSC                           157
-       L.PM                          &  -- PM                            158
-       L.APC                         &  -- APC                           159
-       L.No_Break_Space              &  -- No_Break_Space                160
-       L.Inverted_Exclamation        &  -- Inverted_Exclamation          161
-       L.Cent_Sign                   &  -- Cent_Sign                     162
-       L.Pound_Sign                  &  -- Pound_Sign                    163
-       L.Currency_Sign               &  -- Currency_Sign                 164
-       L.Yen_Sign                    &  -- Yen_Sign                      165
-       L.Broken_Bar                  &  -- Broken_Bar                    166
-       L.Section_Sign                &  -- Section_Sign                  167
-       L.Diaeresis                   &  -- Diaeresis                     168
-       L.Copyright_Sign              &  -- Copyright_Sign                169
-       L.Feminine_Ordinal_Indicator  &  -- Feminine_Ordinal_Indicator    170
-       L.Left_Angle_Quotation        &  -- Left_Angle_Quotation          171
-       L.Not_Sign                    &  -- Not_Sign                      172
-       L.Soft_Hyphen                 &  -- Soft_Hyphen                   173
-       L.Registered_Trade_Mark_Sign  &  -- Registered_Trade_Mark_Sign    174
-       L.Macron                      &  -- Macron                        175
-       L.Degree_Sign                 &  -- Degree_Sign                   176
-       L.Plus_Minus_Sign             &  -- Plus_Minus_Sign               177
-       L.Superscript_Two             &  -- Superscript_Two               178
-       L.Superscript_Three           &  -- Superscript_Three             179
-       L.Acute                       &  -- Acute                         180
-       L.Micro_Sign                  &  -- Micro_Sign                    181
-       L.Pilcrow_Sign                &  -- Pilcrow_Sign                  182
-       L.Middle_Dot                  &  -- Middle_Dot                    183
-       L.Cedilla                     &  -- Cedilla                       184
-       L.Superscript_One             &  -- Superscript_One               185
-       L.Masculine_Ordinal_Indicator &  -- Masculine_Ordinal_Indicator   186
-       L.Right_Angle_Quotation       &  -- Right_Angle_Quotation         187
-       L.Fraction_One_Quarter        &  -- Fraction_One_Quarter          188
-       L.Fraction_One_Half           &  -- Fraction_One_Half             189
-       L.Fraction_Three_Quarters     &  -- Fraction_Three_Quarters       190
-       L.Inverted_Question           &  -- Inverted_Question             191
-       'A'                           &  -- UC_A_Grave                    192
-       'A'                           &  -- UC_A_Acute                    193
-       'A'                           &  -- UC_A_Circumflex               194
-       'A'                           &  -- UC_A_Tilde                    195
-       'A'                           &  -- UC_A_Diaeresis                196
-       'A'                           &  -- UC_A_Ring                     197
-       L.UC_AE_Diphthong             &  -- UC_AE_Diphthong               198
-       'C'                           &  -- UC_C_Cedilla                  199
-       'E'                           &  -- UC_E_Grave                    200
-       'E'                           &  -- UC_E_Acute                    201
-       'E'                           &  -- UC_E_Circumflex               202
-       'E'                           &  -- UC_E_Diaeresis                203
-       'I'                           &  -- UC_I_Grave                    204
-       'I'                           &  -- UC_I_Acute                    205
-       'I'                           &  -- UC_I_Circumflex               206
-       'I'                           &  -- UC_I_Diaeresis                207
-       L.UC_Icelandic_Eth            &  -- UC_Icelandic_Eth              208
-       'N'                           &  -- UC_N_Tilde                    209
-       'O'                           &  -- UC_O_Grave                    210
-       'O'                           &  -- UC_O_Acute                    211
-       'O'                           &  -- UC_O_Circumflex               212
-       'O'                           &  -- UC_O_Tilde                    213
-       'O'                           &  -- UC_O_Diaeresis                214
-       L.Multiplication_Sign         &  -- Multiplication_Sign           215
-       'O'                           &  -- UC_O_Oblique_Stroke           216
-       'U'                           &  -- UC_U_Grave                    217
-       'U'                           &  -- UC_U_Acute                    218
-       'U'                           &  -- UC_U_Circumflex               219
-       'U'                           &  -- UC_U_Diaeresis                220
-       'Y'                           &  -- UC_Y_Acute                    221
-       L.UC_Icelandic_Thorn          &  -- UC_Icelandic_Thorn            222
-       L.LC_German_Sharp_S           &  -- LC_German_Sharp_S             223
-       L.LC_A                        &  -- LC_A_Grave                    224
-       L.LC_A                        &  -- LC_A_Acute                    225
-       L.LC_A                        &  -- LC_A_Circumflex               226
-       L.LC_A                        &  -- LC_A_Tilde                    227
-       L.LC_A                        &  -- LC_A_Diaeresis                228
-       L.LC_A                        &  -- LC_A_Ring                     229
-       L.LC_AE_Diphthong             &  -- LC_AE_Diphthong               230
-       L.LC_C                        &  -- LC_C_Cedilla                  231
-       L.LC_E                        &  -- LC_E_Grave                    232
-       L.LC_E                        &  -- LC_E_Acute                    233
-       L.LC_E                        &  -- LC_E_Circumflex               234
-       L.LC_E                        &  -- LC_E_Diaeresis                235
-       L.LC_I                        &  -- LC_I_Grave                    236
-       L.LC_I                        &  -- LC_I_Acute                    237
-       L.LC_I                        &  -- LC_I_Circumflex               238
-       L.LC_I                        &  -- LC_I_Diaeresis                239
-       L.LC_Icelandic_Eth            &  -- LC_Icelandic_Eth              240
-       L.LC_N                        &  -- LC_N_Tilde                    241
-       L.LC_O                        &  -- LC_O_Grave                    242
-       L.LC_O                        &  -- LC_O_Acute                    243
-       L.LC_O                        &  -- LC_O_Circumflex               244
-       L.LC_O                        &  -- LC_O_Tilde                    245
-       L.LC_O                        &  -- LC_O_Diaeresis                246
-       L.Division_Sign               &  -- Division_Sign                 247
-       L.LC_O                        &  -- LC_O_Oblique_Stroke           248
-       L.LC_U                        &  -- LC_U_Grave                    249
-       L.LC_U                        &  -- LC_U_Acute                    250
-       L.LC_U                        &  -- LC_U_Circumflex               251
-       L.LC_U                        &  -- LC_U_Diaeresis                252
-       L.LC_Y                        &  -- LC_Y_Acute                    253
-       L.LC_Icelandic_Thorn          &  -- LC_Icelandic_Thorn            254
-       L.LC_Y);                         -- LC_Y_Diaeresis                255
- 
- end Ada.Strings.Maps.Constants;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-storio.adb gcc-8.1.0/gcc/ada/a-storio.adb
*** gcc-7.3.0/gcc/ada/a-storio.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-storio.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,60 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                       A D A . S T O R A G E _ I O                        --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          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- --
- -- 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.Unchecked_Conversion;
- 
- package body Ada.Storage_IO is
- 
-    type Buffer_Ptr is access all Buffer_Type;
-    type Elmt_Ptr   is access all Element_Type;
- 
-    function To_Buffer_Ptr is
-      new Ada.Unchecked_Conversion (Elmt_Ptr, Buffer_Ptr);
- 
-    ----------
-    -- Read --
-    ----------
- 
-    procedure Read (Buffer : Buffer_Type; Item : out Element_Type) is
-    begin
-       To_Buffer_Ptr (Item'Unrestricted_Access).all := Buffer;
-    end Read;
- 
-    -----------
-    -- Write --
-    -----------
- 
-    procedure Write (Buffer : out Buffer_Type; Item : Element_Type) is
-    begin
-       Buffer := To_Buffer_Ptr (Item'Unrestricted_Access).all;
-    end Write;
- 
- end Ada.Storage_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-storio.ads gcc-8.1.0/gcc/ada/a-storio.ads
*** gcc-7.3.0/gcc/ada/a-storio.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-storio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,47 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                       A D A . S T O R A G E _ I O                        --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.IO_Exceptions;
- with System.Storage_Elements;
- 
- generic
-    type Element_Type is private;
- 
- package Ada.Storage_IO is
-    pragma Preelaborate;
- 
-    Buffer_Size : constant System.Storage_Elements.Storage_Count :=
-                    System.Storage_Elements.Storage_Count
-                      ((Element_Type'Size + System.Storage_Unit - 1) /
-                                                       System.Storage_Unit);
- 
-    subtype Buffer_Type is
-      System.Storage_Elements.Storage_Array (1 .. Buffer_Size);
- 
-    ---------------------------------
-    -- Input and Output Operations --
-    ---------------------------------
- 
-    procedure Read (Buffer : Buffer_Type; Item : out Element_Type);
- 
-    procedure Write (Buffer : out Buffer_Type; Item : Element_Type);
- 
-    ----------------
-    -- Exceptions --
-    ----------------
- 
-    Data_Error : exception renames IO_Exceptions.Data_Error;
- 
- end Ada.Storage_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-strbou.adb gcc-8.1.0/gcc/ada/a-strbou.adb
*** gcc-7.3.0/gcc/ada/a-strbou.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-strbou.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,106 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                  A D A . S T R I N G S . B O U N D E D                   --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          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- --
- -- 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 Ada.Strings.Bounded is
- 
-    package body Generic_Bounded_Length is
- 
-       --  The subprograms in this body are those for which there is no
-       --  Bounded_String input, and hence no implicit information on the
-       --  maximum size. This means that the maximum size has to be passed
-       --  explicitly to the routine in Superbounded.
- 
-       ---------
-       -- "*" --
-       ---------
- 
-       function "*"
-         (Left  : Natural;
-          Right : Character) return Bounded_String
-       is
-       begin
-          return Times (Left, Right, Max_Length);
-       end "*";
- 
-       function "*"
-         (Left  : Natural;
-          Right : String) return Bounded_String
-       is
-       begin
-          return Times (Left, Right, Max_Length);
-       end "*";
- 
-       -----------------
-       -- From_String --
-       -----------------
- 
-       function From_String (Source : String) return Bounded_String is
-       begin
-          return To_Super_String (Source, Max_Length, Error);
-       end From_String;
- 
-       ---------------
-       -- Replicate --
-       ---------------
- 
-       function Replicate
-         (Count : Natural;
-          Item  : Character;
-          Drop  : Strings.Truncation := Strings.Error) return Bounded_String
-       is
-       begin
-          return Super_Replicate (Count, Item, Drop, Max_Length);
-       end Replicate;
- 
-       function Replicate
-         (Count : Natural;
-          Item  : String;
-          Drop  : Strings.Truncation := Strings.Error) return Bounded_String
-       is
-       begin
-          return Super_Replicate (Count, Item, Drop, Max_Length);
-       end Replicate;
- 
-       -----------------------
-       -- To_Bounded_String --
-       -----------------------
- 
-       function To_Bounded_String
-         (Source : String;
-          Drop   : Strings.Truncation := Strings.Error) return Bounded_String
-       is
-       begin
-          return To_Super_String (Source, Max_Length, Drop);
-       end To_Bounded_String;
- 
-    end Generic_Bounded_Length;
- 
- end Ada.Strings.Bounded;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-strbou.ads gcc-8.1.0/gcc/ada/a-strbou.ads
*** gcc-7.3.0/gcc/ada/a-strbou.ads	Thu Jul 31 12:40:36 2014
--- gcc-8.1.0/gcc/ada/a-strbou.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,914 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                  A D A . S T R I N G S . B O U N D E D                   --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2014, Free Software Foundation, 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Strings.Maps;
- with Ada.Strings.Superbounded;
- 
- package Ada.Strings.Bounded is
-    pragma Preelaborate;
- 
-    generic
-       Max : Positive;
-       --  Maximum length of a Bounded_String
- 
-    package Generic_Bounded_Length is
- 
-       Max_Length : constant Positive := Max;
- 
-       type Bounded_String is private;
-       pragma Preelaborable_Initialization (Bounded_String);
- 
-       Null_Bounded_String : constant Bounded_String;
- 
-       subtype Length_Range is Natural range 0 .. Max_Length;
- 
-       function Length (Source : Bounded_String) return Length_Range;
- 
-       --------------------------------------------------------
-       -- Conversion, Concatenation, and Selection Functions --
-       --------------------------------------------------------
- 
-       function To_Bounded_String
-         (Source : String;
-          Drop   : Truncation := Error) return Bounded_String;
- 
-       function To_String (Source : Bounded_String) return String;
- 
-       procedure Set_Bounded_String
-         (Target : out Bounded_String;
-          Source : String;
-          Drop   : Truncation := Error);
-       pragma Ada_05 (Set_Bounded_String);
- 
-       function Append
-         (Left  : Bounded_String;
-          Right : Bounded_String;
-          Drop  : Truncation  := Error) return Bounded_String;
- 
-       function Append
-         (Left  : Bounded_String;
-          Right : String;
-          Drop  : Truncation := Error) return Bounded_String;
- 
-       function Append
-         (Left  : String;
-          Right : Bounded_String;
-          Drop  : Truncation := Error) return Bounded_String;
- 
-       function Append
-         (Left  : Bounded_String;
-          Right : Character;
-          Drop  : Truncation := Error) return Bounded_String;
- 
-       function Append
-         (Left  : Character;
-          Right : Bounded_String;
-          Drop  : Truncation := Error) return Bounded_String;
- 
-       procedure Append
-         (Source   : in out Bounded_String;
-          New_Item : Bounded_String;
-          Drop     : Truncation  := Error);
- 
-       procedure Append
-         (Source   : in out Bounded_String;
-          New_Item : String;
-          Drop     : Truncation  := Error);
- 
-       procedure Append
-         (Source   : in out Bounded_String;
-          New_Item : Character;
-          Drop     : Truncation  := Error);
- 
-       function "&"
-         (Left  : Bounded_String;
-          Right : Bounded_String) return Bounded_String;
- 
-       function "&"
-         (Left  : Bounded_String;
-          Right : String) return Bounded_String;
- 
-       function "&"
-         (Left  : String;
-          Right : Bounded_String) return Bounded_String;
- 
-       function "&"
-         (Left  : Bounded_String;
-          Right : Character) return Bounded_String;
- 
-       function "&"
-         (Left  : Character;
-          Right : Bounded_String) return Bounded_String;
- 
-       function Element
-         (Source : Bounded_String;
-          Index  : Positive) return Character;
- 
-       procedure Replace_Element
-         (Source : in out Bounded_String;
-          Index  : Positive;
-          By     : Character);
- 
-       function Slice
-         (Source : Bounded_String;
-          Low    : Positive;
-          High   : Natural) return String;
- 
-       function Bounded_Slice
-         (Source : Bounded_String;
-          Low    : Positive;
-          High   : Natural) return Bounded_String;
-       pragma Ada_05 (Bounded_Slice);
- 
-       procedure Bounded_Slice
-         (Source : Bounded_String;
-          Target : out Bounded_String;
-          Low    : Positive;
-          High   : Natural);
-       pragma Ada_05 (Bounded_Slice);
- 
-       function "="
-         (Left  : Bounded_String;
-          Right : Bounded_String) return Boolean;
- 
-       function "="
-         (Left  : Bounded_String;
-          Right : String) return Boolean;
- 
-       function "="
-         (Left  : String;
-          Right : Bounded_String) return Boolean;
- 
-       function "<"
-         (Left  : Bounded_String;
-          Right : Bounded_String) return Boolean;
- 
-       function "<"
-         (Left  : Bounded_String;
-          Right : String) return Boolean;
- 
-       function "<"
-         (Left  : String;
-          Right : Bounded_String) return Boolean;
- 
-       function "<="
-         (Left  : Bounded_String;
-          Right : Bounded_String) return Boolean;
- 
-       function "<="
-         (Left  : Bounded_String;
-          Right : String) return Boolean;
- 
-       function "<="
-         (Left  : String;
-          Right : Bounded_String) return Boolean;
- 
-       function ">"
-         (Left  : Bounded_String;
-          Right : Bounded_String) return Boolean;
- 
-       function ">"
-         (Left  : Bounded_String;
-          Right : String) return Boolean;
- 
-       function ">"
-         (Left  : String;
-          Right : Bounded_String) return Boolean;
- 
-       function ">="
-         (Left  : Bounded_String;
-          Right : Bounded_String) return Boolean;
- 
-       function ">="
-         (Left  : Bounded_String;
-          Right : String) return Boolean;
- 
-       function ">="
-         (Left  : String;
-          Right : Bounded_String) return Boolean;
- 
-       ----------------------
-       -- Search Functions --
-       ----------------------
- 
-       function Index
-         (Source  : Bounded_String;
-          Pattern : String;
-          Going   : Direction := Forward;
-          Mapping : Maps.Character_Mapping := Maps.Identity) return Natural;
- 
-       function Index
-         (Source  : Bounded_String;
-          Pattern : String;
-          Going   : Direction := Forward;
-          Mapping : Maps.Character_Mapping_Function) return Natural;
- 
-       function Index
-         (Source : Bounded_String;
-          Set    : Maps.Character_Set;
-          Test   : Membership := Inside;
-          Going  : Direction  := Forward) return Natural;
- 
-       function Index
-         (Source  : Bounded_String;
-          Pattern : String;
-          From    : Positive;
-          Going   : Direction := Forward;
-          Mapping : Maps.Character_Mapping := Maps.Identity) return Natural;
-       pragma Ada_05 (Index);
- 
-       function Index
-         (Source  : Bounded_String;
-          Pattern : String;
-          From    : Positive;
-          Going   : Direction := Forward;
-          Mapping : Maps.Character_Mapping_Function) return Natural;
-       pragma Ada_05 (Index);
- 
-       function Index
-         (Source  : Bounded_String;
-          Set     : Maps.Character_Set;
-          From    : Positive;
-          Test    : Membership := Inside;
-          Going   : Direction := Forward) return Natural;
-       pragma Ada_05 (Index);
- 
-       function Index_Non_Blank
-         (Source : Bounded_String;
-          Going  : Direction := Forward) return Natural;
- 
-       function Index_Non_Blank
-         (Source : Bounded_String;
-          From   : Positive;
-          Going  : Direction := Forward) return Natural;
-       pragma Ada_05 (Index_Non_Blank);
- 
-       function Count
-         (Source  : Bounded_String;
-          Pattern : String;
-          Mapping : Maps.Character_Mapping := Maps.Identity) return Natural;
- 
-       function Count
-         (Source  : Bounded_String;
-          Pattern : String;
-          Mapping : Maps.Character_Mapping_Function) return Natural;
- 
-       function Count
-         (Source : Bounded_String;
-          Set    : Maps.Character_Set) return Natural;
- 
-       procedure Find_Token
-         (Source : Bounded_String;
-          Set    : Maps.Character_Set;
-          From   : Positive;
-          Test   : Membership;
-          First  : out Positive;
-          Last   : out Natural);
-       pragma Ada_2012 (Find_Token);
- 
-       procedure Find_Token
-         (Source : Bounded_String;
-          Set    : Maps.Character_Set;
-          Test   : Membership;
-          First  : out Positive;
-          Last   : out Natural);
- 
-       ------------------------------------
-       -- String Translation Subprograms --
-       ------------------------------------
- 
-       function Translate
-         (Source  : Bounded_String;
-          Mapping : Maps.Character_Mapping) return Bounded_String;
- 
-       procedure Translate
-         (Source   : in out Bounded_String;
-          Mapping  : Maps.Character_Mapping);
- 
-       function Translate
-         (Source  : Bounded_String;
-          Mapping : Maps.Character_Mapping_Function) return Bounded_String;
- 
-       procedure Translate
-         (Source  : in out Bounded_String;
-          Mapping : Maps.Character_Mapping_Function);
- 
-       ---------------------------------------
-       -- String Transformation Subprograms --
-       ---------------------------------------
- 
-       function Replace_Slice
-         (Source : Bounded_String;
-          Low    : Positive;
-          High   : Natural;
-          By     : String;
-          Drop   : Truncation := Error) return Bounded_String;
- 
-       procedure Replace_Slice
-         (Source   : in out Bounded_String;
-          Low      : Positive;
-          High     : Natural;
-          By       : String;
-          Drop     : Truncation := Error);
- 
-       function Insert
-         (Source   : Bounded_String;
-          Before   : Positive;
-          New_Item : String;
-          Drop     : Truncation := Error) return Bounded_String;
- 
-       procedure Insert
-         (Source   : in out Bounded_String;
-          Before   : Positive;
-          New_Item : String;
-          Drop     : Truncation := Error);
- 
-       function Overwrite
-         (Source   : Bounded_String;
-          Position : Positive;
-          New_Item : String;
-          Drop     : Truncation := Error) return Bounded_String;
- 
-       procedure Overwrite
-         (Source    : in out Bounded_String;
-          Position  : Positive;
-          New_Item  : String;
-          Drop      : Truncation := Error);
- 
-       function Delete
-         (Source  : Bounded_String;
-          From    : Positive;
-          Through : Natural) return Bounded_String;
- 
-       procedure Delete
-         (Source  : in out Bounded_String;
-          From    : Positive;
-          Through : Natural);
- 
-       ---------------------------------
-       -- String Selector Subprograms --
-       ---------------------------------
- 
-       function Trim
-         (Source : Bounded_String;
-          Side   : Trim_End) return Bounded_String;
- 
-       procedure Trim
-         (Source : in out Bounded_String;
-          Side   : Trim_End);
- 
-       function Trim
-         (Source : Bounded_String;
-           Left  : Maps.Character_Set;
-           Right : Maps.Character_Set) return Bounded_String;
- 
-       procedure Trim
-         (Source : in out Bounded_String;
-          Left   : Maps.Character_Set;
-          Right  : Maps.Character_Set);
- 
-       function Head
-         (Source : Bounded_String;
-          Count  : Natural;
-          Pad    : Character := Space;
-          Drop   : Truncation := Error) return Bounded_String;
- 
-       procedure Head
-         (Source : in out Bounded_String;
-          Count  : Natural;
-          Pad    : Character  := Space;
-          Drop   : Truncation := Error);
- 
-       function Tail
-         (Source : Bounded_String;
-          Count  : Natural;
-          Pad    : Character  := Space;
-          Drop   : Truncation := Error) return Bounded_String;
- 
-       procedure Tail
-         (Source : in out Bounded_String;
-          Count  : Natural;
-          Pad    : Character  := Space;
-          Drop   : Truncation := Error);
- 
-       ------------------------------------
-       -- String Constructor Subprograms --
-       ------------------------------------
- 
-       function "*"
-         (Left  : Natural;
-          Right : Character) return Bounded_String;
- 
-       function "*"
-         (Left  : Natural;
-          Right : String) return Bounded_String;
- 
-       function "*"
-         (Left  : Natural;
-          Right : Bounded_String) return Bounded_String;
- 
-       function Replicate
-         (Count : Natural;
-          Item  : Character;
-          Drop  : Truncation := Error) return Bounded_String;
- 
-       function Replicate
-         (Count : Natural;
-          Item  : String;
-          Drop  : Truncation := Error) return Bounded_String;
- 
-       function Replicate
-         (Count : Natural;
-          Item  : Bounded_String;
-          Drop  : Truncation := Error) return Bounded_String;
- 
-    private
-       --  Most of the implementation is in the separate non generic package
-       --  Ada.Strings.Superbounded. Type Bounded_String is derived from type
-       --  Superbounded.Super_String with the maximum length constraint. In
-       --  almost all cases, the routines in Superbounded can be called with
-       --  no requirement to pass the maximum length explicitly, since there
-       --  is at least one Bounded_String argument from which the maximum
-       --  length can be obtained. For all such routines, the implementation
-       --  in this private part is simply a renaming of the corresponding
-       --  routine in the superbounded package.
- 
-       --  The five exceptions are the * and Replicate routines operating on
-       --  character values. For these cases, we have a routine in the body
-       --  that calls the superbounded routine passing the maximum length
-       --  explicitly as an extra parameter.
- 
-       type Bounded_String is new Superbounded.Super_String (Max_Length);
-       --  Deriving Bounded_String from Superbounded.Super_String is the
-       --  real trick, it ensures that the type Bounded_String declared in
-       --  the generic instantiation is compatible with the Super_String
-       --  type declared in the Superbounded package.
- 
-       function From_String (Source : String) return Bounded_String;
-       --  Private routine used only by Stream_Convert
- 
-       pragma Stream_Convert (Bounded_String, From_String, To_String);
-       --  Provide stream routines without dragging in Ada.Streams
- 
-       Null_Bounded_String : constant Bounded_String :=
-                               (Max_Length     => Max_Length,
-                                Current_Length => 0,
-                                Data           =>
-                                  (1 .. Max_Length => ASCII.NUL));
- 
-       pragma Inline (To_Bounded_String);
- 
-       procedure Set_Bounded_String
-         (Target : out Bounded_String;
-          Source : String;
-          Drop   : Truncation := Error)
-          renames Set_Super_String;
- 
-       function Length
-         (Source : Bounded_String) return Length_Range
-          renames Super_Length;
- 
-       function To_String
-         (Source : Bounded_String) return String
-          renames Super_To_String;
- 
-       function Append
-         (Left  : Bounded_String;
-          Right : Bounded_String;
-          Drop  : Truncation  := Error) return Bounded_String
-          renames Super_Append;
- 
-       function Append
-         (Left  : Bounded_String;
-          Right : String;
-          Drop  : Truncation := Error) return Bounded_String
-          renames Super_Append;
- 
-       function Append
-         (Left  : String;
-          Right : Bounded_String;
-          Drop  : Truncation := Error) return Bounded_String
-          renames Super_Append;
- 
-       function Append
-         (Left  : Bounded_String;
-          Right : Character;
-          Drop  : Truncation := Error) return Bounded_String
-          renames Super_Append;
- 
-       function Append
-         (Left  : Character;
-          Right : Bounded_String;
-          Drop  : Truncation := Error) return Bounded_String
-          renames Super_Append;
- 
-       procedure Append
-         (Source   : in out Bounded_String;
-          New_Item : Bounded_String;
-          Drop     : Truncation  := Error)
-          renames Super_Append;
- 
-       procedure Append
-         (Source   : in out Bounded_String;
-          New_Item : String;
-          Drop     : Truncation  := Error)
-          renames Super_Append;
- 
-       procedure Append
-         (Source   : in out Bounded_String;
-          New_Item : Character;
-          Drop     : Truncation  := Error)
-          renames Super_Append;
- 
-       function "&"
-         (Left  : Bounded_String;
-          Right : Bounded_String) return Bounded_String
-          renames Concat;
- 
-       function "&"
-         (Left  : Bounded_String;
-          Right : String) return Bounded_String
-          renames Concat;
- 
-       function "&"
-         (Left  : String;
-          Right : Bounded_String) return Bounded_String
-          renames Concat;
- 
-       function "&"
-         (Left  : Bounded_String;
-          Right : Character) return Bounded_String
-          renames Concat;
- 
-       function "&"
-         (Left  : Character;
-          Right : Bounded_String) return Bounded_String
-          renames Concat;
- 
-       function Element
-         (Source : Bounded_String;
-          Index  : Positive) return Character
-          renames Super_Element;
- 
-       procedure Replace_Element
-         (Source : in out Bounded_String;
-          Index  : Positive;
-          By     : Character)
-          renames Super_Replace_Element;
- 
-       function Slice
-         (Source : Bounded_String;
-          Low    : Positive;
-          High   : Natural) return String
-          renames Super_Slice;
- 
-       function Bounded_Slice
-         (Source : Bounded_String;
-          Low    : Positive;
-          High   : Natural) return Bounded_String
-          renames Super_Slice;
- 
-       procedure Bounded_Slice
-         (Source : Bounded_String;
-          Target : out Bounded_String;
-          Low    : Positive;
-          High   : Natural)
-          renames Super_Slice;
- 
-       overriding function "="
-         (Left  : Bounded_String;
-          Right : Bounded_String) return Boolean
-          renames Equal;
- 
-       function "="
-         (Left  : Bounded_String;
-          Right : String) return Boolean
-          renames Equal;
- 
-       function "="
-         (Left  : String;
-          Right : Bounded_String) return Boolean
-          renames Equal;
- 
-       function "<"
-         (Left  : Bounded_String;
-          Right : Bounded_String) return Boolean
-          renames Less;
- 
-       function "<"
-         (Left  : Bounded_String;
-          Right : String) return Boolean
-          renames Less;
- 
-       function "<"
-         (Left  : String;
-          Right : Bounded_String) return Boolean
-          renames Less;
- 
-       function "<="
-         (Left  : Bounded_String;
-          Right : Bounded_String) return Boolean
-          renames Less_Or_Equal;
- 
-       function "<="
-         (Left  : Bounded_String;
-          Right : String) return Boolean
-          renames Less_Or_Equal;
- 
-       function "<="
-         (Left  : String;
-          Right : Bounded_String) return Boolean
-          renames Less_Or_Equal;
- 
-       function ">"
-         (Left  : Bounded_String;
-          Right : Bounded_String) return Boolean
-          renames Greater;
- 
-       function ">"
-         (Left  : Bounded_String;
-          Right : String) return Boolean
-          renames Greater;
- 
-       function ">"
-         (Left  : String;
-          Right : Bounded_String) return Boolean
-          renames Greater;
- 
-       function ">="
-         (Left  : Bounded_String;
-          Right : Bounded_String) return Boolean
-          renames Greater_Or_Equal;
- 
-       function ">="
-         (Left  : Bounded_String;
-          Right : String) return Boolean
-          renames Greater_Or_Equal;
- 
-       function ">="
-         (Left  : String;
-          Right : Bounded_String) return Boolean
-          renames Greater_Or_Equal;
- 
-       function Index
-         (Source  : Bounded_String;
-          Pattern : String;
-          Going   : Direction := Forward;
-          Mapping : Maps.Character_Mapping := Maps.Identity) return Natural
-          renames Super_Index;
- 
-       function Index
-         (Source  : Bounded_String;
-          Pattern : String;
-          Going   : Direction := Forward;
-          Mapping : Maps.Character_Mapping_Function) return Natural
-          renames Super_Index;
- 
-       function Index
-         (Source : Bounded_String;
-          Set    : Maps.Character_Set;
-          Test   : Membership := Inside;
-          Going  : Direction  := Forward) return Natural
-          renames Super_Index;
- 
-       function Index
-         (Source  : Bounded_String;
-          Pattern : String;
-          From    : Positive;
-          Going   : Direction := Forward;
-          Mapping : Maps.Character_Mapping := Maps.Identity) return Natural
-          renames Super_Index;
- 
-       function Index
-         (Source  : Bounded_String;
-          Pattern : String;
-          From    : Positive;
-          Going   : Direction := Forward;
-          Mapping : Maps.Character_Mapping_Function) return Natural
-       renames Super_Index;
- 
-       function Index
-         (Source  : Bounded_String;
-          Set     : Maps.Character_Set;
-          From    : Positive;
-          Test    : Membership := Inside;
-          Going   : Direction := Forward) return Natural
-       renames Super_Index;
- 
-       function Index_Non_Blank
-         (Source : Bounded_String;
-          Going  : Direction := Forward) return Natural
-          renames Super_Index_Non_Blank;
- 
-       function Index_Non_Blank
-         (Source : Bounded_String;
-          From   : Positive;
-          Going  : Direction := Forward) return Natural
-          renames Super_Index_Non_Blank;
- 
-       function Count
-         (Source  : Bounded_String;
-          Pattern : String;
-          Mapping : Maps.Character_Mapping := Maps.Identity) return Natural
-          renames Super_Count;
- 
-       function Count
-         (Source  : Bounded_String;
-          Pattern : String;
-          Mapping : Maps.Character_Mapping_Function) return Natural
-          renames Super_Count;
- 
-       function Count
-         (Source : Bounded_String;
-          Set    : Maps.Character_Set) return Natural
-          renames Super_Count;
- 
-       procedure Find_Token
-         (Source : Bounded_String;
-          Set    : Maps.Character_Set;
-          From   : Positive;
-          Test   : Membership;
-          First  : out Positive;
-          Last   : out Natural)
-          renames Super_Find_Token;
- 
-       procedure Find_Token
-         (Source : Bounded_String;
-          Set    : Maps.Character_Set;
-          Test   : Membership;
-          First  : out Positive;
-          Last   : out Natural)
-          renames Super_Find_Token;
- 
-       function Translate
-         (Source  : Bounded_String;
-          Mapping : Maps.Character_Mapping) return Bounded_String
-          renames Super_Translate;
- 
-       procedure Translate
-         (Source   : in out Bounded_String;
-          Mapping  : Maps.Character_Mapping)
-          renames Super_Translate;
- 
-       function Translate
-         (Source  : Bounded_String;
-          Mapping : Maps.Character_Mapping_Function) return Bounded_String
-          renames Super_Translate;
- 
-       procedure Translate
-         (Source  : in out Bounded_String;
-          Mapping : Maps.Character_Mapping_Function)
-          renames Super_Translate;
- 
-       function Replace_Slice
-         (Source : Bounded_String;
-          Low    : Positive;
-          High   : Natural;
-          By     : String;
-          Drop   : Truncation := Error) return Bounded_String
-          renames Super_Replace_Slice;
- 
-       procedure Replace_Slice
-         (Source   : in out Bounded_String;
-          Low      : Positive;
-          High     : Natural;
-          By       : String;
-          Drop     : Truncation := Error)
-          renames Super_Replace_Slice;
- 
-       function Insert
-         (Source   : Bounded_String;
-          Before   : Positive;
-          New_Item : String;
-          Drop     : Truncation := Error) return Bounded_String
-          renames Super_Insert;
- 
-       procedure Insert
-         (Source   : in out Bounded_String;
-          Before   : Positive;
-          New_Item : String;
-          Drop     : Truncation := Error)
-          renames Super_Insert;
- 
-       function Overwrite
-         (Source   : Bounded_String;
-          Position : Positive;
-          New_Item : String;
-          Drop     : Truncation := Error) return Bounded_String
-          renames Super_Overwrite;
- 
-       procedure Overwrite
-         (Source    : in out Bounded_String;
-          Position  : Positive;
-          New_Item  : String;
-          Drop      : Truncation := Error)
-          renames Super_Overwrite;
- 
-       function Delete
-         (Source  : Bounded_String;
-          From    : Positive;
-          Through : Natural) return Bounded_String
-          renames Super_Delete;
- 
-       procedure Delete
-         (Source  : in out Bounded_String;
-          From    : Positive;
-          Through : Natural)
-          renames Super_Delete;
- 
-       function Trim
-         (Source : Bounded_String;
-          Side   : Trim_End) return Bounded_String
-          renames Super_Trim;
- 
-       procedure Trim
-         (Source : in out Bounded_String;
-          Side   : Trim_End)
-          renames Super_Trim;
- 
-       function Trim
-         (Source : Bounded_String;
-          Left   : Maps.Character_Set;
-          Right  : Maps.Character_Set) return Bounded_String
-          renames Super_Trim;
- 
-       procedure Trim
-         (Source : in out Bounded_String;
-          Left   : Maps.Character_Set;
-          Right  : Maps.Character_Set)
-          renames Super_Trim;
- 
-       function Head
-         (Source : Bounded_String;
-          Count  : Natural;
-          Pad    : Character := Space;
-          Drop   : Truncation := Error) return Bounded_String
-          renames Super_Head;
- 
-       procedure Head
-         (Source : in out Bounded_String;
-          Count  : Natural;
-          Pad    : Character  := Space;
-          Drop   : Truncation := Error)
-          renames Super_Head;
- 
-       function Tail
-         (Source : Bounded_String;
-          Count  : Natural;
-          Pad    : Character  := Space;
-          Drop   : Truncation := Error) return Bounded_String
-          renames Super_Tail;
- 
-       procedure Tail
-         (Source : in out Bounded_String;
-          Count  : Natural;
-          Pad    : Character  := Space;
-          Drop   : Truncation := Error)
-          renames Super_Tail;
- 
-       function "*"
-         (Left  : Natural;
-          Right : Bounded_String) return Bounded_String
-          renames Times;
- 
-       function Replicate
-         (Count : Natural;
-          Item  : Bounded_String;
-          Drop  : Truncation := Error) return Bounded_String
-          renames Super_Replicate;
- 
-    end Generic_Bounded_Length;
- 
- end Ada.Strings.Bounded;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-stream.adb gcc-8.1.0/gcc/ada/a-stream.adb
*** gcc-7.3.0/gcc/ada/a-stream.adb	Wed Jan 22 16:53:24 2014
--- gcc-8.1.0/gcc/ada/a-stream.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,70 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                           A D A . S T R E A M S                          --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --             Copyright (C) 2013, Free Software Foundation, 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.IO_Exceptions;
- 
- package body Ada.Streams is
- 
-    --------------
-    -- Read_SEA --
-    --------------
- 
-    procedure Read_SEA
-      (S : access Root_Stream_Type'Class;
-       V : out Stream_Element_Array)
-    is
-       Last : Stream_Element_Offset;
- 
-    begin
-       Read (S.all, V, Last);
- 
-       if Last /= V'Last then
-          raise Ada.IO_Exceptions.End_Error;
-       end if;
-    end Read_SEA;
- 
-    ---------------
-    -- Write_SEA --
-    ---------------
- 
-    procedure Write_SEA
-      (S : access Root_Stream_Type'Class;
-       V : Stream_Element_Array)
-    is
-    begin
-       Write (S.all, V);
-    end Write_SEA;
- 
- end Ada.Streams;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-stream.ads gcc-8.1.0/gcc/ada/a-stream.ads
*** gcc-7.3.0/gcc/ada/a-stream.ads	Thu Nov 20 11:28:12 2014
--- gcc-8.1.0/gcc/ada/a-stream.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,87 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                           A D A . S T R E A M S                          --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2014, Free Software Foundation, 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 Ada.Streams is
-    pragma Pure;
- 
-    type Root_Stream_Type is abstract tagged limited private;
-    pragma Preelaborable_Initialization (Root_Stream_Type);
- 
-    type Stream_Element is mod 2 ** Standard'Storage_Unit;
- 
-    type Stream_Element_Offset is new Long_Long_Integer;
-    --  Stream_Element_Offset needs 64 bits to accomodate large stream files.
-    --  However, rather than make this explicitly 64-bits we derive from
-    --  Long_Long_Integer. In normal usage this will have the same effect.
-    --  But in the case of CodePeer with a target configuration file with a
-    --  maximum integer size of 32, it allows analysis of this unit.
- 
-    subtype Stream_Element_Count is
-       Stream_Element_Offset range 0 .. Stream_Element_Offset'Last;
- 
-    type Stream_Element_Array is
-       array (Stream_Element_Offset range <>) of aliased Stream_Element;
- 
-    procedure Read
-      (Stream : in out Root_Stream_Type;
-       Item   : out Stream_Element_Array;
-       Last   : out Stream_Element_Offset)
-    is abstract;
- 
-    procedure Write
-      (Stream : in out Root_Stream_Type;
-       Item   : Stream_Element_Array)
-    is abstract;
- 
- private
- 
-    type Root_Stream_Type is abstract tagged limited null record;
- 
-    --  Stream attributes for Stream_Element_Array: trivially call the
-    --  corresponding stream primitive for the whole array, instead of doing
-    --  so element by element.
- 
-    procedure Read_SEA
-      (S : access Root_Stream_Type'Class;
-       V : out Stream_Element_Array);
- 
-    procedure Write_SEA
-      (S : access Root_Stream_Type'Class;
-       V : Stream_Element_Array);
- 
-    for Stream_Element_Array'Read use Read_SEA;
-    for Stream_Element_Array'Write use Write_SEA;
- 
- end Ada.Streams;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-strfix.adb gcc-8.1.0/gcc/ada/a-strfix.adb
*** gcc-7.3.0/gcc/ada/a-strfix.adb	Fri Jan 13 10:19:19 2017
--- gcc-8.1.0/gcc/ada/a-strfix.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,733 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                    A D A . S T R I N G S . F I X E D                     --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Note: This code is derived from the ADAR.CSH public domain Ada 83 versions
- --  of the Appendix C string handling packages. One change is to avoid the use
- --  of Is_In, so that we are not dependent on inlining. Note that the search
- --  function implementations are to be found in the auxiliary package
- --  Ada.Strings.Search. Also the Move procedure is directly incorporated (ADAR
- --  used a subunit for this procedure). The number of errors having to do with
- --  bounds of function return results were also fixed, and use of & removed for
- --  efficiency reasons.
- 
- with Ada.Strings.Maps; use Ada.Strings.Maps;
- with Ada.Strings.Search;
- 
- package body Ada.Strings.Fixed is
- 
-    ------------------------
-    -- Search Subprograms --
-    ------------------------
- 
-    function Index
-      (Source  : String;
-       Pattern : String;
-       Going   : Direction := Forward;
-       Mapping : Maps.Character_Mapping := Maps.Identity) return Natural
-    renames Ada.Strings.Search.Index;
- 
-    function Index
-      (Source  : String;
-       Pattern : String;
-       Going   : Direction := Forward;
-       Mapping : Maps.Character_Mapping_Function) return Natural
-    renames Ada.Strings.Search.Index;
- 
-    function Index
-      (Source : String;
-       Set    : Maps.Character_Set;
-       Test   : Membership := Inside;
-       Going  : Direction  := Forward) return Natural
-    renames Ada.Strings.Search.Index;
- 
-    function Index
-      (Source  : String;
-       Pattern : String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Maps.Character_Mapping := Maps.Identity) return Natural
-    renames Ada.Strings.Search.Index;
- 
-    function Index
-      (Source  : String;
-       Pattern : String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Maps.Character_Mapping_Function) return Natural
-    renames Ada.Strings.Search.Index;
- 
-    function Index
-      (Source  : String;
-       Set     : Maps.Character_Set;
-       From    : Positive;
-       Test    : Membership := Inside;
-       Going   : Direction := Forward) return Natural
-    renames Ada.Strings.Search.Index;
- 
-    function Index_Non_Blank
-      (Source : String;
-       Going  : Direction := Forward) return Natural
-    renames Ada.Strings.Search.Index_Non_Blank;
- 
-    function Index_Non_Blank
-      (Source : String;
-       From   : Positive;
-       Going  : Direction := Forward) return Natural
-    renames Ada.Strings.Search.Index_Non_Blank;
- 
-    function Count
-      (Source  : String;
-       Pattern : String;
-       Mapping : Maps.Character_Mapping := Maps.Identity) return Natural
-    renames Ada.Strings.Search.Count;
- 
-    function Count
-      (Source  : String;
-       Pattern : String;
-       Mapping : Maps.Character_Mapping_Function) return Natural
-    renames Ada.Strings.Search.Count;
- 
-    function Count
-      (Source : String;
-       Set    : Maps.Character_Set) return Natural
-    renames Ada.Strings.Search.Count;
- 
-    procedure Find_Token
-      (Source : String;
-       Set    : Maps.Character_Set;
-       From   : Positive;
-       Test   : Membership;
-       First  : out Positive;
-       Last   : out Natural)
-    renames Ada.Strings.Search.Find_Token;
- 
-    procedure Find_Token
-      (Source : String;
-       Set    : Maps.Character_Set;
-       Test   : Membership;
-       First  : out Positive;
-       Last   : out Natural)
-    renames Ada.Strings.Search.Find_Token;
- 
-    ---------
-    -- "*" --
-    ---------
- 
-    function "*"
-      (Left  : Natural;
-       Right : Character) return String
-    is
-       Result : String (1 .. Left);
- 
-    begin
-       for J in Result'Range loop
-          Result (J) := Right;
-       end loop;
- 
-       return Result;
-    end "*";
- 
-    function "*"
-      (Left  : Natural;
-       Right : String) return String
-    is
-       Result : String (1 .. Left * Right'Length);
-       Ptr    : Integer := 1;
- 
-    begin
-       for J in 1 .. Left loop
-          Result (Ptr .. Ptr + Right'Length - 1) := Right;
-          Ptr := Ptr + Right'Length;
-       end loop;
- 
-       return Result;
-    end "*";
- 
-    ------------
-    -- Delete --
-    ------------
- 
-    function Delete
-      (Source  : String;
-       From    : Positive;
-       Through : Natural) return String
-    is
-    begin
-       if From > Through then
-          declare
-             subtype Result_Type is String (1 .. Source'Length);
- 
-          begin
-             return Result_Type (Source);
-          end;
- 
-       elsif From not in Source'Range
-         or else Through > Source'Last
-       then
-          raise Index_Error;
- 
-       else
-          declare
-             Front  : constant Integer := From - Source'First;
-             Result : String (1 .. Source'Length - (Through - From + 1));
- 
-          begin
-             Result (1 .. Front) :=
-               Source (Source'First .. From - 1);
-             Result (Front + 1 .. Result'Last) :=
-               Source (Through + 1 .. Source'Last);
- 
-             return Result;
-          end;
-       end if;
-    end Delete;
- 
-    procedure Delete
-      (Source  : in out String;
-       From    : Positive;
-       Through : Natural;
-       Justify : Alignment := Left;
-       Pad     : Character := Space)
-    is
-    begin
-       Move (Source  => Delete (Source, From, Through),
-             Target  => Source,
-             Justify => Justify,
-             Pad     => Pad);
-    end Delete;
- 
-    ----------
-    -- Head --
-    ----------
- 
-    function Head
-      (Source : String;
-       Count  : Natural;
-       Pad    : Character := Space) return String
-    is
-       subtype Result_Type is String (1 .. Count);
- 
-    begin
-       if Count < Source'Length then
-          return
-            Result_Type (Source (Source'First .. Source'First + Count - 1));
- 
-       else
-          declare
-             Result : Result_Type;
- 
-          begin
-             Result (1 .. Source'Length) := Source;
- 
-             for J in Source'Length + 1 .. Count loop
-                Result (J) := Pad;
-             end loop;
- 
-             return Result;
-          end;
-       end if;
-    end Head;
- 
-    procedure Head
-      (Source  : in out String;
-       Count   : Natural;
-       Justify : Alignment := Left;
-       Pad     : Character := Space)
-    is
-    begin
-       Move (Source  => Head (Source, Count, Pad),
-             Target  => Source,
-             Drop    => Error,
-             Justify => Justify,
-             Pad     => Pad);
-    end Head;
- 
-    ------------
-    -- Insert --
-    ------------
- 
-    function Insert
-      (Source   : String;
-       Before   : Positive;
-       New_Item : String) return String
-    is
-       Result : String (1 .. Source'Length + New_Item'Length);
-       Front  : constant Integer := Before - Source'First;
- 
-    begin
-       if Before not in Source'First .. Source'Last + 1 then
-          raise Index_Error;
-       end if;
- 
-       Result (1 .. Front) :=
-         Source (Source'First .. Before - 1);
-       Result (Front + 1 .. Front + New_Item'Length) :=
-         New_Item;
-       Result (Front + New_Item'Length + 1 .. Result'Last) :=
-         Source (Before .. Source'Last);
- 
-       return Result;
-    end Insert;
- 
-    procedure Insert
-      (Source   : in out String;
-       Before   : Positive;
-       New_Item : String;
-       Drop     : Truncation := Error)
-    is
-    begin
-       Move (Source => Insert (Source, Before, New_Item),
-             Target => Source,
-             Drop   => Drop);
-    end Insert;
- 
-    ----------
-    -- Move --
-    ----------
- 
-    procedure Move
-      (Source  : String;
-       Target  : out String;
-       Drop    : Truncation := Error;
-       Justify : Alignment  := Left;
-       Pad     : Character  := Space)
-    is
-       Sfirst  : constant Integer := Source'First;
-       Slast   : constant Integer := Source'Last;
-       Slength : constant Integer := Source'Length;
- 
-       Tfirst  : constant Integer := Target'First;
-       Tlast   : constant Integer := Target'Last;
-       Tlength : constant Integer := Target'Length;
- 
-       function Is_Padding (Item : String) return Boolean;
-       --  Check if Item is all Pad characters, return True if so, False if not
- 
-       function Is_Padding (Item : String) return Boolean is
-       begin
-          for J in Item'Range loop
-             if Item (J) /= Pad then
-                return False;
-             end if;
-          end loop;
- 
-          return True;
-       end Is_Padding;
- 
-    --  Start of processing for Move
- 
-    begin
-       if Slength = Tlength then
-          Target := Source;
- 
-       elsif Slength > Tlength then
-          case Drop is
-             when Left =>
-                Target := Source (Slast - Tlength + 1 .. Slast);
- 
-             when Right =>
-                Target := Source (Sfirst .. Sfirst + Tlength - 1);
- 
-             when Error =>
-                case Justify is
-                   when Left =>
-                      if Is_Padding (Source (Sfirst + Tlength .. Slast)) then
-                         Target :=
-                           Source (Sfirst .. Sfirst + Target'Length - 1);
-                      else
-                         raise Length_Error;
-                      end if;
- 
-                   when Right =>
-                      if Is_Padding (Source (Sfirst .. Slast - Tlength)) then
-                         Target := Source (Slast - Tlength + 1 .. Slast);
-                      else
-                         raise Length_Error;
-                      end if;
- 
-                   when Center =>
-                      raise Length_Error;
-                end case;
-          end case;
- 
-       --  Source'Length < Target'Length
- 
-       else
-          case Justify is
-             when Left =>
-                Target (Tfirst .. Tfirst + Slength - 1) := Source;
- 
-                for I in Tfirst + Slength .. Tlast loop
-                   Target (I) := Pad;
-                end loop;
- 
-             when Right =>
-                for I in Tfirst .. Tlast - Slength loop
-                   Target (I) := Pad;
-                end loop;
- 
-                Target (Tlast - Slength + 1 .. Tlast) := Source;
- 
-             when Center =>
-                declare
-                   Front_Pad   : constant Integer := (Tlength - Slength) / 2;
-                   Tfirst_Fpad : constant Integer := Tfirst + Front_Pad;
- 
-                begin
-                   for I in Tfirst .. Tfirst_Fpad - 1 loop
-                      Target (I) := Pad;
-                   end loop;
- 
-                   Target (Tfirst_Fpad .. Tfirst_Fpad + Slength - 1) := Source;
- 
-                   for I in Tfirst_Fpad + Slength .. Tlast loop
-                      Target (I) := Pad;
-                   end loop;
-                end;
-          end case;
-       end if;
-    end Move;
- 
-    ---------------
-    -- Overwrite --
-    ---------------
- 
-    function Overwrite
-      (Source   : String;
-       Position : Positive;
-       New_Item : String) return String
-    is
-    begin
-       if Position not in Source'First .. Source'Last + 1 then
-          raise Index_Error;
-       end if;
- 
-       declare
-          Result_Length : constant Natural :=
-            Integer'Max
-              (Source'Length,
-               Position - Source'First + New_Item'Length);
- 
-          Result : String (1 .. Result_Length);
-          Front  : constant Integer := Position - Source'First;
- 
-       begin
-          Result (1 .. Front) :=
-            Source (Source'First .. Position - 1);
-          Result (Front + 1 .. Front + New_Item'Length) :=
-            New_Item;
-          Result (Front + New_Item'Length + 1 .. Result'Length) :=
-            Source (Position + New_Item'Length .. Source'Last);
-          return Result;
-       end;
-    end Overwrite;
- 
-    procedure Overwrite
-      (Source   : in out String;
-       Position : Positive;
-       New_Item : String;
-       Drop     : Truncation := Right)
-    is
-    begin
-       Move (Source => Overwrite (Source, Position, New_Item),
-             Target => Source,
-             Drop   => Drop);
-    end Overwrite;
- 
-    -------------------
-    -- Replace_Slice --
-    -------------------
- 
-    function Replace_Slice
-      (Source : String;
-       Low    : Positive;
-       High   : Natural;
-       By     : String) return String
-    is
-    begin
-       if Low > Source'Last + 1 or else High < Source'First - 1 then
-          raise Index_Error;
-       end if;
- 
-       if High >= Low then
-          declare
-             Front_Len : constant Integer :=
-               Integer'Max (0, Low - Source'First);
-             --  Length of prefix of Source copied to result
- 
-             Back_Len : constant Integer :=
-               Integer'Max (0, Source'Last - High);
-             --  Length of suffix of Source copied to result
- 
-             Result_Length : constant Integer :=
-               Front_Len + By'Length + Back_Len;
-             --  Length of result
- 
-             Result : String (1 .. Result_Length);
- 
-          begin
-             Result (1 .. Front_Len) := Source (Source'First .. Low - 1);
-             Result (Front_Len + 1 .. Front_Len + By'Length) := By;
-             Result (Front_Len + By'Length + 1 .. Result'Length) :=
-               Source (High + 1 .. Source'Last);
-             return Result;
-          end;
- 
-       else
-          return Insert (Source, Before => Low, New_Item => By);
-       end if;
-    end Replace_Slice;
- 
-    procedure Replace_Slice
-      (Source   : in out String;
-       Low      : Positive;
-       High     : Natural;
-       By       : String;
-       Drop     : Truncation := Error;
-       Justify  : Alignment  := Left;
-       Pad      : Character  := Space)
-    is
-    begin
-       Move (Replace_Slice (Source, Low, High, By), Source, Drop, Justify, Pad);
-    end Replace_Slice;
- 
-    ----------
-    -- Tail --
-    ----------
- 
-    function Tail
-      (Source : String;
-       Count  : Natural;
-       Pad    : Character := Space) return String
-    is
-       subtype Result_Type is String (1 .. Count);
- 
-    begin
-       if Count < Source'Length then
-          return Result_Type (Source (Source'Last - Count + 1 .. Source'Last));
- 
-       --  Pad on left
- 
-       else
-          declare
-             Result : Result_Type;
- 
-          begin
-             for J in 1 .. Count - Source'Length loop
-                Result (J) := Pad;
-             end loop;
- 
-             Result (Count - Source'Length + 1 .. Count) := Source;
-             return Result;
-          end;
-       end if;
-    end Tail;
- 
-    procedure Tail
-      (Source  : in out String;
-       Count   : Natural;
-       Justify : Alignment := Left;
-       Pad     : Character := Space)
-    is
-    begin
-       Move (Source  => Tail (Source, Count, Pad),
-             Target  => Source,
-             Drop    => Error,
-             Justify => Justify,
-             Pad     => Pad);
-    end Tail;
- 
-    ---------------
-    -- Translate --
-    ---------------
- 
-    function Translate
-      (Source  : String;
-       Mapping : Maps.Character_Mapping) return String
-    is
-       Result : String (1 .. Source'Length);
- 
-    begin
-       for J in Source'Range loop
-          Result (J - (Source'First - 1)) := Value (Mapping, Source (J));
-       end loop;
- 
-       return Result;
-    end Translate;
- 
-    procedure Translate
-      (Source  : in out String;
-       Mapping : Maps.Character_Mapping)
-    is
-    begin
-       for J in Source'Range loop
-          Source (J) := Value (Mapping, Source (J));
-       end loop;
-    end Translate;
- 
-    function Translate
-      (Source  : String;
-       Mapping : Maps.Character_Mapping_Function) return String
-    is
-       Result : String (1 .. Source'Length);
-       pragma Unsuppress (Access_Check);
- 
-    begin
-       for J in Source'Range loop
-          Result (J - (Source'First - 1)) := Mapping.all (Source (J));
-       end loop;
- 
-       return Result;
-    end Translate;
- 
-    procedure Translate
-      (Source  : in out String;
-       Mapping : Maps.Character_Mapping_Function)
-    is
-       pragma Unsuppress (Access_Check);
-    begin
-       for J in Source'Range loop
-          Source (J) := Mapping.all (Source (J));
-       end loop;
-    end Translate;
- 
-    ----------
-    -- Trim --
-    ----------
- 
-    function Trim
-      (Source : String;
-       Side   : Trim_End) return String
-    is
-       Low, High : Integer;
- 
-    begin
-       Low := Index_Non_Blank (Source, Forward);
- 
-       --  All blanks case
- 
-       if Low = 0 then
-          return "";
- 
-       --  At least one non-blank
- 
-       else
-          High := Index_Non_Blank (Source, Backward);
- 
-          case Side is
-             when Strings.Left =>
-                declare
-                   subtype Result_Type is String (1 .. Source'Last - Low + 1);
- 
-                begin
-                   return Result_Type (Source (Low .. Source'Last));
-                end;
- 
-             when Strings.Right =>
-                declare
-                   subtype Result_Type is String (1 .. High - Source'First + 1);
- 
-                begin
-                   return Result_Type (Source (Source'First .. High));
-                end;
- 
-             when Strings.Both =>
-                declare
-                   subtype Result_Type is String (1 .. High - Low + 1);
- 
-                begin
-                   return Result_Type (Source (Low .. High));
-                end;
-          end case;
-       end if;
-    end Trim;
- 
-    procedure Trim
-      (Source  : in out String;
-       Side    : Trim_End;
-       Justify : Alignment := Left;
-       Pad     : Character := Space)
-    is
-    begin
-       Move (Trim (Source, Side),
-             Source,
-             Justify => Justify,
-             Pad => Pad);
-    end Trim;
- 
-    function Trim
-      (Source : String;
-       Left   : Maps.Character_Set;
-       Right  : Maps.Character_Set) return String
-    is
-       High, Low : Integer;
- 
-    begin
-       Low := Index (Source, Set => Left, Test  => Outside, Going => Forward);
- 
-       --  Case where source comprises only characters in Left
- 
-       if Low = 0 then
-          return "";
-       end if;
- 
-       High :=
-         Index (Source, Set => Right, Test  => Outside, Going => Backward);
- 
-       --  Case where source comprises only characters in Right
- 
-       if High = 0 then
-          return "";
-       end if;
- 
-       declare
-          subtype Result_Type is String (1 .. High - Low + 1);
- 
-       begin
-          return Result_Type (Source (Low .. High));
-       end;
-    end Trim;
- 
-    procedure Trim
-      (Source  : in out String;
-       Left    : Maps.Character_Set;
-       Right   : Maps.Character_Set;
-       Justify : Alignment := Strings.Left;
-       Pad     : Character := Space)
-    is
-    begin
-       Move (Source  => Trim (Source, Left, Right),
-             Target  => Source,
-             Justify => Justify,
-             Pad     => Pad);
-    end Trim;
- 
- end Ada.Strings.Fixed;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-strfix.ads gcc-8.1.0/gcc/ada/a-strfix.ads
*** gcc-7.3.0/gcc/ada/a-strfix.ads	Fri Oct  8 13:02:55 2010
--- gcc-8.1.0/gcc/ada/a-strfix.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,251 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                    A D A . S T R I N G S . F I X E D                     --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Strings.Maps;
- 
- package Ada.Strings.Fixed is
-    pragma Preelaborate;
- 
-    --------------------------------------------------------------
-    -- Copy Procedure for Strings of Possibly Different Lengths --
-    --------------------------------------------------------------
- 
-    procedure Move
-      (Source  : String;
-       Target  : out String;
-       Drop    : Truncation := Error;
-       Justify : Alignment  := Left;
-       Pad     : Character  := Space);
- 
-    ------------------------
-    -- Search Subprograms --
-    ------------------------
- 
-    function Index
-      (Source  : String;
-       Pattern : String;
-       Going   : Direction := Forward;
-       Mapping : Maps.Character_Mapping := Maps.Identity) return Natural;
- 
-    function Index
-      (Source  : String;
-       Pattern : String;
-       Going   : Direction := Forward;
-       Mapping : Maps.Character_Mapping_Function) return Natural;
- 
-    function Index
-      (Source : String;
-       Set    : Maps.Character_Set;
-       Test   : Membership := Inside;
-       Going  : Direction  := Forward) return Natural;
- 
-    function Index
-      (Source  : String;
-       Pattern : String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Maps.Character_Mapping := Maps.Identity) return Natural;
-    pragma Ada_05 (Index);
- 
-    function Index
-      (Source  : String;
-       Pattern : String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Maps.Character_Mapping_Function) return Natural;
-    pragma Ada_05 (Index);
- 
-    function Index
-      (Source  : String;
-       Set     : Maps.Character_Set;
-       From    : Positive;
-       Test    : Membership := Inside;
-       Going   : Direction := Forward) return Natural;
-    pragma Ada_05 (Index);
- 
-    function Index_Non_Blank
-      (Source : String;
-       Going  : Direction := Forward) return Natural;
- 
-    function Index_Non_Blank
-      (Source : String;
-       From   : Positive;
-       Going  : Direction := Forward) return Natural;
-    pragma Ada_05 (Index_Non_Blank);
- 
-    function Count
-      (Source  : String;
-       Pattern : String;
-       Mapping : Maps.Character_Mapping := Maps.Identity) return Natural;
- 
-    function Count
-      (Source  : String;
-       Pattern : String;
-       Mapping : Maps.Character_Mapping_Function) return Natural;
- 
-    function Count
-      (Source : String;
-       Set    : Maps.Character_Set) return Natural;
- 
-    procedure Find_Token
-      (Source : String;
-       Set    : Maps.Character_Set;
-       From   : Positive;
-       Test   : Membership;
-       First  : out Positive;
-       Last   : out Natural);
-    pragma Ada_2012 (Find_Token);
- 
-    procedure Find_Token
-      (Source : String;
-       Set    : Maps.Character_Set;
-       Test   : Membership;
-       First  : out Positive;
-       Last   : out Natural);
- 
-    ------------------------------------
-    -- String Translation Subprograms --
-    ------------------------------------
- 
-    function Translate
-      (Source  : String;
-       Mapping : Maps.Character_Mapping) return String;
- 
-    procedure Translate
-      (Source  : in out String;
-       Mapping : Maps.Character_Mapping);
- 
-    function Translate
-      (Source  : String;
-       Mapping : Maps.Character_Mapping_Function) return String;
- 
-    procedure Translate
-      (Source  : in out String;
-       Mapping : Maps.Character_Mapping_Function);
- 
-    ---------------------------------------
-    -- String Transformation Subprograms --
-    ---------------------------------------
- 
-    function Replace_Slice
-      (Source : String;
-       Low    : Positive;
-       High   : Natural;
-       By     : String) return String;
- 
-    procedure Replace_Slice
-      (Source  : in out String;
-       Low     : Positive;
-       High    : Natural;
-       By      : String;
-       Drop    : Truncation := Error;
-       Justify : Alignment  := Left;
-       Pad     : Character  := Space);
- 
-    function Insert
-      (Source   : String;
-       Before   : Positive;
-       New_Item : String) return String;
- 
-    procedure Insert
-      (Source   : in out String;
-       Before   : Positive;
-       New_Item : String;
-       Drop     : Truncation := Error);
- 
-    function Overwrite
-      (Source   : String;
-       Position : Positive;
-       New_Item : String) return String;
- 
-    procedure Overwrite
-      (Source   : in out String;
-       Position : Positive;
-       New_Item : String;
-       Drop     : Truncation := Right);
- 
-    function Delete
-      (Source  : String;
-       From    : Positive;
-       Through : Natural) return String;
- 
-    procedure Delete
-      (Source  : in out String;
-       From    : Positive;
-       Through : Natural;
-       Justify : Alignment := Left;
-       Pad     : Character := Space);
- 
-    ---------------------------------
-    -- String Selector Subprograms --
-    ---------------------------------
- 
-    function Trim
-      (Source : String;
-       Side   : Trim_End) return String;
- 
-    procedure Trim
-      (Source  : in out String;
-       Side    : Trim_End;
-       Justify : Alignment := Left;
-       Pad     : Character := Space);
- 
-    function Trim
-      (Source : String;
-       Left   : Maps.Character_Set;
-       Right  : Maps.Character_Set) return String;
- 
-    procedure Trim
-      (Source  : in out String;
-       Left    : Maps.Character_Set;
-       Right   : Maps.Character_Set;
-       Justify : Alignment := Strings.Left;
-       Pad     : Character := Space);
- 
-    function Head
-      (Source : String;
-       Count  : Natural;
-       Pad    : Character := Space) return String;
- 
-    procedure Head
-      (Source  : in out String;
-       Count   : Natural;
-       Justify : Alignment := Left;
-       Pad     : Character := Space);
- 
-    function Tail
-      (Source : String;
-       Count  : Natural;
-       Pad    : Character := Space) return String;
- 
-    procedure Tail
-      (Source  : in out String;
-       Count   : Natural;
-       Justify : Alignment := Left;
-       Pad     : Character := Space);
- 
-    ----------------------------------
-    -- String Constructor Functions --
-    ----------------------------------
- 
-    function "*"
-      (Left  : Natural;
-       Right : Character) return String;
- 
-    function "*"
-      (Left  : Natural;
-       Right : String) return String;
- 
- end Ada.Strings.Fixed;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-strhas.adb gcc-8.1.0/gcc/ada/a-strhas.adb
*** gcc-7.3.0/gcc/ada/a-strhas.adb	Mon Jun 22 12:24:57 2009
--- gcc-8.1.0/gcc/ada/a-strhas.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,38 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                     A D A . S T R I N G S . H A S H                      --
- --                                                                          --
- --                                B o d y                                   --
- --                                                                          --
- --          Copyright (C) 2004-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- --
- -- 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.String_Hash;
- 
- function Ada.Strings.Hash (Key : String) return Containers.Hash_Type is
-    use Ada.Containers;
-    function Hash is new System.String_Hash.Hash
-      (Character, String, Hash_Type);
- begin
-    return Hash (Key);
- end Ada.Strings.Hash;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-strhas.ads gcc-8.1.0/gcc/ada/a-strhas.ads
*** gcc-7.3.0/gcc/ada/a-strhas.ads	Tue Feb 25 15:15:44 2014
--- gcc-8.1.0/gcc/ada/a-strhas.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,25 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                     A D A . S T R I N G S . H A S H                      --
- --                                                                          --
- --                                S p e c                                   --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- pragma Compiler_Unit_Warning;
- 
- with Ada.Containers;
- 
- function Ada.Strings.Hash (Key : String) return Containers.Hash_Type;
- --  Note: this hash function has predictable collisions and is subject to
- --  equivalent substring attacks. It is not suitable for construction of a
- --  hash table keyed on possibly malicious user input.
- 
- pragma Pure (Ada.Strings.Hash);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-string.ads gcc-8.1.0/gcc/ada/a-string.ads
*** gcc-7.3.0/gcc/ada/a-string.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-string.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,35 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                          A D A . S T R I N G S                           --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- package Ada.Strings is
-    pragma Pure;
- 
-    Space           : constant Character           := ' ';
-    Wide_Space      : constant Wide_Character      := ' ';
- 
-    --  The following declaration is for Ada 2005 (AI-285)
- 
-    Wide_Wide_Space : constant Wide_Wide_Character := ' ';
-    pragma Ada_05 (Wide_Wide_Space);
- 
-    Length_Error, Pattern_Error, Index_Error, Translation_Error : exception;
- 
-    type Alignment  is (Left, Right, Center);
-    type Truncation is (Left, Right, Error);
-    type Membership is (Inside, Outside);
-    type Direction  is (Forward, Backward);
-    type Trim_End   is (Left, Right, Both);
- 
- end Ada.Strings;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-strmap.adb gcc-8.1.0/gcc/ada/a-strmap.adb
*** gcc-7.3.0/gcc/ada/a-strmap.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-strmap.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,322 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                     A D A . S T R I N G S . M A P S                      --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          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- --
- -- 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Note: parts of this code are derived from the ADAR.CSH public domain
- --  Ada 83 versions of the Appendix C string handling packages. The main
- --  differences are that we avoid the use of the minimize function which
- --  is bit-by-bit or character-by-character and therefore rather slow.
- --  Generally for character sets we favor the full 32-byte representation.
- 
- package body Ada.Strings.Maps is
- 
-    use Ada.Characters.Latin_1;
- 
-    ---------
-    -- "-" --
-    ---------
- 
-    function "-" (Left, Right : Character_Set) return Character_Set is
-    begin
-       return Left and not Right;
-    end "-";
- 
-    ---------
-    -- "=" --
-    ---------
- 
-    function "=" (Left, Right : Character_Set) return Boolean is
-    begin
-       return Character_Set_Internal (Left) = Character_Set_Internal (Right);
-    end "=";
- 
-    -----------
-    -- "and" --
-    -----------
- 
-    function "and" (Left, Right : Character_Set) return Character_Set is
-    begin
-       return Character_Set
-         (Character_Set_Internal (Left) and Character_Set_Internal (Right));
-    end "and";
- 
-    -----------
-    -- "not" --
-    -----------
- 
-    function "not" (Right : Character_Set) return Character_Set is
-    begin
-       return Character_Set (not Character_Set_Internal (Right));
-    end "not";
- 
-    ----------
-    -- "or" --
-    ----------
- 
-    function "or" (Left, Right : Character_Set) return Character_Set is
-    begin
-       return Character_Set
-         (Character_Set_Internal (Left) or Character_Set_Internal (Right));
-    end "or";
- 
-    -----------
-    -- "xor" --
-    -----------
- 
-    function "xor" (Left, Right : Character_Set) return Character_Set is
-    begin
-       return Character_Set
-         (Character_Set_Internal (Left) xor Character_Set_Internal (Right));
-    end "xor";
- 
-    -----------
-    -- Is_In --
-    -----------
- 
-    function Is_In
-      (Element : Character;
-       Set     : Character_Set) return Boolean
-    is
-    begin
-       return Set (Element);
-    end Is_In;
- 
-    ---------------
-    -- Is_Subset --
-    ---------------
- 
-    function Is_Subset
-      (Elements : Character_Set;
-       Set      : Character_Set) return Boolean
-    is
-    begin
-       return (Elements and Set) = Elements;
-    end Is_Subset;
- 
-    ---------------
-    -- To_Domain --
-    ---------------
- 
-    function To_Domain (Map : Character_Mapping) return Character_Sequence
-    is
-       Result : String (1 .. Map'Length);
-       J      : Natural;
- 
-    begin
-       J := 0;
-       for C in Map'Range loop
-          if Map (C) /= C then
-             J := J + 1;
-             Result (J) := C;
-          end if;
-       end loop;
- 
-       return Result (1 .. J);
-    end To_Domain;
- 
-    ----------------
-    -- To_Mapping --
-    ----------------
- 
-    function To_Mapping
-      (From, To : Character_Sequence) return Character_Mapping
-    is
-       Result   : Character_Mapping;
-       Inserted : Character_Set := Null_Set;
-       From_Len : constant Natural := From'Length;
-       To_Len   : constant Natural := To'Length;
- 
-    begin
-       if From_Len /= To_Len then
-          raise Strings.Translation_Error;
-       end if;
- 
-       for Char in Character loop
-          Result (Char) := Char;
-       end loop;
- 
-       for J in From'Range loop
-          if Inserted (From (J)) then
-             raise Strings.Translation_Error;
-          end if;
- 
-          Result   (From (J)) := To (J - From'First + To'First);
-          Inserted (From (J)) := True;
-       end loop;
- 
-       return Result;
-    end To_Mapping;
- 
-    --------------
-    -- To_Range --
-    --------------
- 
-    function To_Range (Map : Character_Mapping) return Character_Sequence
-    is
-       Result : String (1 .. Map'Length);
-       J      : Natural;
-    begin
-       J := 0;
-       for C in Map'Range loop
-          if Map (C) /= C then
-             J := J + 1;
-             Result (J) := Map (C);
-          end if;
-       end loop;
- 
-       return Result (1 .. J);
-    end To_Range;
- 
-    ---------------
-    -- To_Ranges --
-    ---------------
- 
-    function To_Ranges (Set : Character_Set) return Character_Ranges is
-       Max_Ranges : Character_Ranges (1 .. Set'Length / 2 + 1);
-       Range_Num  : Natural;
-       C          : Character;
- 
-    begin
-       C := Character'First;
-       Range_Num := 0;
- 
-       loop
-          --  Skip gap between subsets
- 
-          while not Set (C) loop
-             exit when C = Character'Last;
-             C := Character'Succ (C);
-          end loop;
- 
-          exit when not Set (C);
- 
-          Range_Num := Range_Num + 1;
-          Max_Ranges (Range_Num).Low := C;
- 
-          --  Span a subset
- 
-          loop
-             exit when not Set (C) or else C = Character'Last;
-             C := Character'Succ (C);
-          end loop;
- 
-          if Set (C) then
-             Max_Ranges (Range_Num). High := C;
-             exit;
-          else
-             Max_Ranges (Range_Num). High := Character'Pred (C);
-          end if;
-       end loop;
- 
-       return Max_Ranges (1 .. Range_Num);
-    end To_Ranges;
- 
-    -----------------
-    -- To_Sequence --
-    -----------------
- 
-    function To_Sequence (Set : Character_Set) return Character_Sequence is
-       Result : String (1 .. Character'Pos (Character'Last) + 1);
-       Count  : Natural := 0;
-    begin
-       for Char in Set'Range loop
-          if Set (Char) then
-             Count := Count + 1;
-             Result (Count) := Char;
-          end if;
-       end loop;
- 
-       return Result (1 .. Count);
-    end To_Sequence;
- 
-    ------------
-    -- To_Set --
-    ------------
- 
-    function To_Set (Ranges : Character_Ranges) return Character_Set is
-       Result : Character_Set;
-    begin
-       for C in Result'Range loop
-          Result (C) := False;
-       end loop;
- 
-       for R in Ranges'Range loop
-          for C in Ranges (R).Low .. Ranges (R).High loop
-             Result (C) := True;
-          end loop;
-       end loop;
- 
-       return Result;
-    end To_Set;
- 
-    function To_Set (Span : Character_Range) return Character_Set is
-       Result : Character_Set;
-    begin
-       for C in Result'Range loop
-          Result (C) := False;
-       end loop;
- 
-       for C in Span.Low .. Span.High loop
-          Result (C) := True;
-       end loop;
- 
-       return Result;
-    end To_Set;
- 
-    function To_Set (Sequence : Character_Sequence) return Character_Set is
-       Result : Character_Set := Null_Set;
-    begin
-       for J in Sequence'Range loop
-          Result (Sequence (J)) := True;
-       end loop;
- 
-       return Result;
-    end To_Set;
- 
-    function To_Set (Singleton : Character) return Character_Set is
-       Result : Character_Set := Null_Set;
-    begin
-       Result (Singleton) := True;
-       return Result;
-    end To_Set;
- 
-    -----------
-    -- Value --
-    -----------
- 
-    function Value
-      (Map     : Character_Mapping;
-       Element : Character) return Character
-    is
-    begin
-       return Map (Element);
-    end Value;
- 
- end Ada.Strings.Maps;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-strmap.ads gcc-8.1.0/gcc/ada/a-strmap.ads
*** gcc-7.3.0/gcc/ada/a-strmap.ads	Wed Jun 11 12:31:56 2014
--- gcc-8.1.0/gcc/ada/a-strmap.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,411 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                     A D A . S T R I N G S . M A P S                      --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2014, Free Software Foundation, 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Characters.Latin_1;
- 
- package Ada.Strings.Maps is
-    pragma Pure;
-    --  In accordance with Ada 2005 AI-362
- 
-    --------------------------------
-    -- Character Set Declarations --
-    --------------------------------
- 
-    type Character_Set is private;
-    pragma Preelaborable_Initialization (Character_Set);
-    --  Representation for a set of character values:
- 
-    Null_Set : constant Character_Set;
- 
-    ---------------------------
-    -- Constructors for Sets --
-    ---------------------------
- 
-    type Character_Range is record
-       Low  : Character;
-       High : Character;
-    end record;
-    --  Represents Character range Low .. High
- 
-    type Character_Ranges is array (Positive range <>) of Character_Range;
- 
-    function To_Set    (Ranges : Character_Ranges) return Character_Set;
- 
-    function To_Set    (Span   : Character_Range)  return Character_Set;
- 
-    function To_Ranges (Set    : Character_Set)    return Character_Ranges;
- 
-    ----------------------------------
-    -- Operations on Character Sets --
-    ----------------------------------
- 
-    function "="   (Left, Right : Character_Set) return Boolean;
- 
-    function "not" (Right       : Character_Set) return Character_Set;
-    function "and" (Left, Right : Character_Set) return Character_Set;
-    function "or"  (Left, Right : Character_Set) return Character_Set;
-    function "xor" (Left, Right : Character_Set) return Character_Set;
-    function "-"   (Left, Right : Character_Set) return Character_Set;
- 
-    function Is_In
-      (Element : Character;
-       Set     : Character_Set) return Boolean;
- 
-    function Is_Subset
-      (Elements : Character_Set;
-       Set      : Character_Set) return     Boolean;
- 
-    function "<="
-      (Left  : Character_Set;
-       Right : Character_Set) return  Boolean
-    renames Is_Subset;
- 
-    subtype Character_Sequence is String;
-    --  Alternative representation for a set of character values
- 
-    function To_Set (Sequence  : Character_Sequence) return Character_Set;
-    function To_Set (Singleton : Character)          return Character_Set;
- 
-    function To_Sequence (Set : Character_Set) return Character_Sequence;
- 
-    ------------------------------------
-    -- Character Mapping Declarations --
-    ------------------------------------
- 
-    type Character_Mapping is private;
-    pragma Preelaborable_Initialization (Character_Mapping);
-    --  Representation for a character to character mapping:
- 
-    function Value
-      (Map     : Character_Mapping;
-       Element : Character) return Character;
- 
-    Identity : constant Character_Mapping;
- 
-    ----------------------------
-    -- Operations on Mappings --
-    ----------------------------
- 
-    function To_Mapping
-      (From, To : Character_Sequence) return Character_Mapping;
- 
-    function To_Domain
-      (Map : Character_Mapping) return Character_Sequence;
- 
-    function To_Range
-      (Map : Character_Mapping) return Character_Sequence;
- 
-    type Character_Mapping_Function is
-       access function (From : Character) return Character;
- 
- private
-    pragma Inline (Is_In);
-    pragma Inline (Value);
- 
-    type Character_Set_Internal is array (Character) of Boolean;
-    pragma Pack (Character_Set_Internal);
- 
-    type Character_Set is new Character_Set_Internal;
-    --  Note: the reason for this level of derivation is to make sure
-    --  that the predefined logical operations on this type remain
-    --  accessible. The operations on Character_Set are overridden by
-    --  the defined operations in the spec, but the operations defined
-    --  on Character_Set_Internal remain visible.
- 
-    Null_Set : constant Character_Set := (others => False);
- 
-    type Character_Mapping is array (Character) of Character;
- 
-    package L renames Ada.Characters.Latin_1;
- 
-    Identity : constant Character_Mapping :=
-      (L.NUL                         &  -- NUL                             0
-       L.SOH                         &  -- SOH                             1
-       L.STX                         &  -- STX                             2
-       L.ETX                         &  -- ETX                             3
-       L.EOT                         &  -- EOT                             4
-       L.ENQ                         &  -- ENQ                             5
-       L.ACK                         &  -- ACK                             6
-       L.BEL                         &  -- BEL                             7
-       L.BS                          &  -- BS                              8
-       L.HT                          &  -- HT                              9
-       L.LF                          &  -- LF                             10
-       L.VT                          &  -- VT                             11
-       L.FF                          &  -- FF                             12
-       L.CR                          &  -- CR                             13
-       L.SO                          &  -- SO                             14
-       L.SI                          &  -- SI                             15
-       L.DLE                         &  -- DLE                            16
-       L.DC1                         &  -- DC1                            17
-       L.DC2                         &  -- DC2                            18
-       L.DC3                         &  -- DC3                            19
-       L.DC4                         &  -- DC4                            20
-       L.NAK                         &  -- NAK                            21
-       L.SYN                         &  -- SYN                            22
-       L.ETB                         &  -- ETB                            23
-       L.CAN                         &  -- CAN                            24
-       L.EM                          &  -- EM                             25
-       L.SUB                         &  -- SUB                            26
-       L.ESC                         &  -- ESC                            27
-       L.FS                          &  -- FS                             28
-       L.GS                          &  -- GS                             29
-       L.RS                          &  -- RS                             30
-       L.US                          &  -- US                             31
-       L.Space                       &  -- ' '                            32
-       L.Exclamation                 &  -- '!'                            33
-       L.Quotation                   &  -- '"'                            34
-       L.Number_Sign                 &  -- '#'                            35
-       L.Dollar_Sign                 &  -- '$'                            36
-       L.Percent_Sign                &  -- '%'                            37
-       L.Ampersand                   &  -- '&'                            38
-       L.Apostrophe                  &  -- '''                            39
-       L.Left_Parenthesis            &  -- '('                            40
-       L.Right_Parenthesis           &  -- ')'                            41
-       L.Asterisk                    &  -- '*'                            42
-       L.Plus_Sign                   &  -- '+'                            43
-       L.Comma                       &  -- ','                            44
-       L.Hyphen                      &  -- '-'                            45
-       L.Full_Stop                   &  -- '.'                            46
-       L.Solidus                     &  -- '/'                            47
-       '0'                           &  -- '0'                            48
-       '1'                           &  -- '1'                            49
-       '2'                           &  -- '2'                            50
-       '3'                           &  -- '3'                            51
-       '4'                           &  -- '4'                            52
-       '5'                           &  -- '5'                            53
-       '6'                           &  -- '6'                            54
-       '7'                           &  -- '7'                            55
-       '8'                           &  -- '8'                            56
-       '9'                           &  -- '9'                            57
-       L.Colon                       &  -- ':'                            58
-       L.Semicolon                   &  -- ';'                            59
-       L.Less_Than_Sign              &  -- '<'                            60
-       L.Equals_Sign                 &  -- '='                            61
-       L.Greater_Than_Sign           &  -- '>'                            62
-       L.Question                    &  -- '?'                            63
-       L.Commercial_At               &  -- '@'                            64
-       'A'                           &  -- 'A'                            65
-       'B'                           &  -- 'B'                            66
-       'C'                           &  -- 'C'                            67
-       'D'                           &  -- 'D'                            68
-       'E'                           &  -- 'E'                            69
-       'F'                           &  -- 'F'                            70
-       'G'                           &  -- 'G'                            71
-       'H'                           &  -- 'H'                            72
-       'I'                           &  -- 'I'                            73
-       'J'                           &  -- 'J'                            74
-       'K'                           &  -- 'K'                            75
-       'L'                           &  -- 'L'                            76
-       'M'                           &  -- 'M'                            77
-       'N'                           &  -- 'N'                            78
-       'O'                           &  -- 'O'                            79
-       'P'                           &  -- 'P'                            80
-       'Q'                           &  -- 'Q'                            81
-       'R'                           &  -- 'R'                            82
-       'S'                           &  -- 'S'                            83
-       'T'                           &  -- 'T'                            84
-       'U'                           &  -- 'U'                            85
-       'V'                           &  -- 'V'                            86
-       'W'                           &  -- 'W'                            87
-       'X'                           &  -- 'X'                            88
-       'Y'                           &  -- 'Y'                            89
-       'Z'                           &  -- 'Z'                            90
-       L.Left_Square_Bracket         &  -- '['                            91
-       L.Reverse_Solidus             &  -- '\'                            92
-       L.Right_Square_Bracket        &  -- ']'                            93
-       L.Circumflex                  &  -- '^'                            94
-       L.Low_Line                    &  -- '_'                            95
-       L.Grave                       &  -- '`'                            96
-       L.LC_A                        &  -- 'a'                            97
-       L.LC_B                        &  -- 'b'                            98
-       L.LC_C                        &  -- 'c'                            99
-       L.LC_D                        &  -- 'd'                           100
-       L.LC_E                        &  -- 'e'                           101
-       L.LC_F                        &  -- 'f'                           102
-       L.LC_G                        &  -- 'g'                           103
-       L.LC_H                        &  -- 'h'                           104
-       L.LC_I                        &  -- 'i'                           105
-       L.LC_J                        &  -- 'j'                           106
-       L.LC_K                        &  -- 'k'                           107
-       L.LC_L                        &  -- 'l'                           108
-       L.LC_M                        &  -- 'm'                           109
-       L.LC_N                        &  -- 'n'                           110
-       L.LC_O                        &  -- 'o'                           111
-       L.LC_P                        &  -- 'p'                           112
-       L.LC_Q                        &  -- 'q'                           113
-       L.LC_R                        &  -- 'r'                           114
-       L.LC_S                        &  -- 's'                           115
-       L.LC_T                        &  -- 't'                           116
-       L.LC_U                        &  -- 'u'                           117
-       L.LC_V                        &  -- 'v'                           118
-       L.LC_W                        &  -- 'w'                           119
-       L.LC_X                        &  -- 'x'                           120
-       L.LC_Y                        &  -- 'y'                           121
-       L.LC_Z                        &  -- 'z'                           122
-       L.Left_Curly_Bracket          &  -- '{'                           123
-       L.Vertical_Line               &  -- '|'                           124
-       L.Right_Curly_Bracket         &  -- '}'                           125
-       L.Tilde                       &  -- '~'                           126
-       L.DEL                         &  -- DEL                           127
-       L.Reserved_128                &  -- Reserved_128                  128
-       L.Reserved_129                &  -- Reserved_129                  129
-       L.BPH                         &  -- BPH                           130
-       L.NBH                         &  -- NBH                           131
-       L.Reserved_132                &  -- Reserved_132                  132
-       L.NEL                         &  -- NEL                           133
-       L.SSA                         &  -- SSA                           134
-       L.ESA                         &  -- ESA                           135
-       L.HTS                         &  -- HTS                           136
-       L.HTJ                         &  -- HTJ                           137
-       L.VTS                         &  -- VTS                           138
-       L.PLD                         &  -- PLD                           139
-       L.PLU                         &  -- PLU                           140
-       L.RI                          &  -- RI                            141
-       L.SS2                         &  -- SS2                           142
-       L.SS3                         &  -- SS3                           143
-       L.DCS                         &  -- DCS                           144
-       L.PU1                         &  -- PU1                           145
-       L.PU2                         &  -- PU2                           146
-       L.STS                         &  -- STS                           147
-       L.CCH                         &  -- CCH                           148
-       L.MW                          &  -- MW                            149
-       L.SPA                         &  -- SPA                           150
-       L.EPA                         &  -- EPA                           151
-       L.SOS                         &  -- SOS                           152
-       L.Reserved_153                &  -- Reserved_153                  153
-       L.SCI                         &  -- SCI                           154
-       L.CSI                         &  -- CSI                           155
-       L.ST                          &  -- ST                            156
-       L.OSC                         &  -- OSC                           157
-       L.PM                          &  -- PM                            158
-       L.APC                         &  -- APC                           159
-       L.No_Break_Space              &  -- No_Break_Space                160
-       L.Inverted_Exclamation        &  -- Inverted_Exclamation          161
-       L.Cent_Sign                   &  -- Cent_Sign                     162
-       L.Pound_Sign                  &  -- Pound_Sign                    163
-       L.Currency_Sign               &  -- Currency_Sign                 164
-       L.Yen_Sign                    &  -- Yen_Sign                      165
-       L.Broken_Bar                  &  -- Broken_Bar                    166
-       L.Section_Sign                &  -- Section_Sign                  167
-       L.Diaeresis                   &  -- Diaeresis                     168
-       L.Copyright_Sign              &  -- Copyright_Sign                169
-       L.Feminine_Ordinal_Indicator  &  -- Feminine_Ordinal_Indicator    170
-       L.Left_Angle_Quotation        &  -- Left_Angle_Quotation          171
-       L.Not_Sign                    &  -- Not_Sign                      172
-       L.Soft_Hyphen                 &  -- Soft_Hyphen                   173
-       L.Registered_Trade_Mark_Sign  &  -- Registered_Trade_Mark_Sign    174
-       L.Macron                      &  -- Macron                        175
-       L.Degree_Sign                 &  -- Degree_Sign                   176
-       L.Plus_Minus_Sign             &  -- Plus_Minus_Sign               177
-       L.Superscript_Two             &  -- Superscript_Two               178
-       L.Superscript_Three           &  -- Superscript_Three             179
-       L.Acute                       &  -- Acute                         180
-       L.Micro_Sign                  &  -- Micro_Sign                    181
-       L.Pilcrow_Sign                &  -- Pilcrow_Sign                  182
-       L.Middle_Dot                  &  -- Middle_Dot                    183
-       L.Cedilla                     &  -- Cedilla                       184
-       L.Superscript_One             &  -- Superscript_One               185
-       L.Masculine_Ordinal_Indicator &  -- Masculine_Ordinal_Indicator   186
-       L.Right_Angle_Quotation       &  -- Right_Angle_Quotation         187
-       L.Fraction_One_Quarter        &  -- Fraction_One_Quarter          188
-       L.Fraction_One_Half           &  -- Fraction_One_Half             189
-       L.Fraction_Three_Quarters     &  -- Fraction_Three_Quarters       190
-       L.Inverted_Question           &  -- Inverted_Question             191
-       L.UC_A_Grave                  &  -- UC_A_Grave                    192
-       L.UC_A_Acute                  &  -- UC_A_Acute                    193
-       L.UC_A_Circumflex             &  -- UC_A_Circumflex               194
-       L.UC_A_Tilde                  &  -- UC_A_Tilde                    195
-       L.UC_A_Diaeresis              &  -- UC_A_Diaeresis                196
-       L.UC_A_Ring                   &  -- UC_A_Ring                     197
-       L.UC_AE_Diphthong             &  -- UC_AE_Diphthong               198
-       L.UC_C_Cedilla                &  -- UC_C_Cedilla                  199
-       L.UC_E_Grave                  &  -- UC_E_Grave                    200
-       L.UC_E_Acute                  &  -- UC_E_Acute                    201
-       L.UC_E_Circumflex             &  -- UC_E_Circumflex               202
-       L.UC_E_Diaeresis              &  -- UC_E_Diaeresis                203
-       L.UC_I_Grave                  &  -- UC_I_Grave                    204
-       L.UC_I_Acute                  &  -- UC_I_Acute                    205
-       L.UC_I_Circumflex             &  -- UC_I_Circumflex               206
-       L.UC_I_Diaeresis              &  -- UC_I_Diaeresis                207
-       L.UC_Icelandic_Eth            &  -- UC_Icelandic_Eth              208
-       L.UC_N_Tilde                  &  -- UC_N_Tilde                    209
-       L.UC_O_Grave                  &  -- UC_O_Grave                    210
-       L.UC_O_Acute                  &  -- UC_O_Acute                    211
-       L.UC_O_Circumflex             &  -- UC_O_Circumflex               212
-       L.UC_O_Tilde                  &  -- UC_O_Tilde                    213
-       L.UC_O_Diaeresis              &  -- UC_O_Diaeresis                214
-       L.Multiplication_Sign         &  -- Multiplication_Sign           215
-       L.UC_O_Oblique_Stroke         &  -- UC_O_Oblique_Stroke           216
-       L.UC_U_Grave                  &  -- UC_U_Grave                    217
-       L.UC_U_Acute                  &  -- UC_U_Acute                    218
-       L.UC_U_Circumflex             &  -- UC_U_Circumflex               219
-       L.UC_U_Diaeresis              &  -- UC_U_Diaeresis                220
-       L.UC_Y_Acute                  &  -- UC_Y_Acute                    221
-       L.UC_Icelandic_Thorn          &  -- UC_Icelandic_Thorn            222
-       L.LC_German_Sharp_S           &  -- LC_German_Sharp_S             223
-       L.LC_A_Grave                  &  -- LC_A_Grave                    224
-       L.LC_A_Acute                  &  -- LC_A_Acute                    225
-       L.LC_A_Circumflex             &  -- LC_A_Circumflex               226
-       L.LC_A_Tilde                  &  -- LC_A_Tilde                    227
-       L.LC_A_Diaeresis              &  -- LC_A_Diaeresis                228
-       L.LC_A_Ring                   &  -- LC_A_Ring                     229
-       L.LC_AE_Diphthong             &  -- LC_AE_Diphthong               230
-       L.LC_C_Cedilla                &  -- LC_C_Cedilla                  231
-       L.LC_E_Grave                  &  -- LC_E_Grave                    232
-       L.LC_E_Acute                  &  -- LC_E_Acute                    233
-       L.LC_E_Circumflex             &  -- LC_E_Circumflex               234
-       L.LC_E_Diaeresis              &  -- LC_E_Diaeresis                235
-       L.LC_I_Grave                  &  -- LC_I_Grave                    236
-       L.LC_I_Acute                  &  -- LC_I_Acute                    237
-       L.LC_I_Circumflex             &  -- LC_I_Circumflex               238
-       L.LC_I_Diaeresis              &  -- LC_I_Diaeresis                239
-       L.LC_Icelandic_Eth            &  -- LC_Icelandic_Eth              240
-       L.LC_N_Tilde                  &  -- LC_N_Tilde                    241
-       L.LC_O_Grave                  &  -- LC_O_Grave                    242
-       L.LC_O_Acute                  &  -- LC_O_Acute                    243
-       L.LC_O_Circumflex             &  -- LC_O_Circumflex               244
-       L.LC_O_Tilde                  &  -- LC_O_Tilde                    245
-       L.LC_O_Diaeresis              &  -- LC_O_Diaeresis                246
-       L.Division_Sign               &  -- Division_Sign                 247
-       L.LC_O_Oblique_Stroke         &  -- LC_O_Oblique_Stroke           248
-       L.LC_U_Grave                  &  -- LC_U_Grave                    249
-       L.LC_U_Acute                  &  -- LC_U_Acute                    250
-       L.LC_U_Circumflex             &  -- LC_U_Circumflex               251
-       L.LC_U_Diaeresis              &  -- LC_U_Diaeresis                252
-       L.LC_Y_Acute                  &  -- LC_Y_Acute                    253
-       L.LC_Icelandic_Thorn          &  -- LC_Icelandic_Thorn            254
-       L.LC_Y_Diaeresis);               -- LC_Y_Diaeresis                255
- 
- end Ada.Strings.Maps;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-strsea.adb gcc-8.1.0/gcc/ada/a-strsea.adb
*** gcc-7.3.0/gcc/ada/a-strsea.adb	Mon Mar  2 11:07:34 2015
--- gcc-8.1.0/gcc/ada/a-strsea.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,645 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                   A D A . S T R I N G S . S E A R C H                    --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Note: This code is derived from the ADAR.CSH public domain Ada 83
- --  versions of the Appendix C string handling packages (code extracted
- --  from Ada.Strings.Fixed). A significant change is that we optimize the
- --  case of identity mappings for Count and Index, and also Index_Non_Blank
- --  is specialized (rather than using the general Index routine).
- 
- with Ada.Strings.Maps; use Ada.Strings.Maps;
- with System;           use System;
- 
- package body Ada.Strings.Search is
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    function Belongs
-      (Element : Character;
-       Set     : Maps.Character_Set;
-       Test    : Membership) return Boolean;
-    pragma Inline (Belongs);
-    --  Determines if the given element is in (Test = Inside) or not in
-    --  (Test = Outside) the given character set.
- 
-    -------------
-    -- Belongs --
-    -------------
- 
-    function Belongs
-      (Element : Character;
-       Set     : Maps.Character_Set;
-       Test    : Membership) return Boolean
-    is
-    begin
-       if Test = Inside then
-          return Is_In (Element, Set);
-       else
-          return not Is_In (Element, Set);
-       end if;
-    end Belongs;
- 
-    -----------
-    -- Count --
-    -----------
- 
-    function Count
-      (Source  : String;
-       Pattern : String;
-       Mapping : Maps.Character_Mapping := Maps.Identity) return Natural
-    is
-       PL1 : constant Integer := Pattern'Length - 1;
-       Num : Natural;
-       Ind : Natural;
-       Cur : Natural;
- 
-    begin
-       if Pattern = "" then
-          raise Pattern_Error;
-       end if;
- 
-       Num := 0;
-       Ind := Source'First;
- 
-       --  Unmapped case
- 
-       if Mapping'Address = Maps.Identity'Address then
-          while Ind <= Source'Last - PL1 loop
-             if Pattern = Source (Ind .. Ind + PL1) then
-                Num := Num + 1;
-                Ind := Ind + Pattern'Length;
-             else
-                Ind := Ind + 1;
-             end if;
-          end loop;
- 
-       --  Mapped case
- 
-       else
-          while Ind <= Source'Last - PL1 loop
-             Cur := Ind;
-             for K in Pattern'Range loop
-                if Pattern (K) /= Value (Mapping, Source (Cur)) then
-                   Ind := Ind + 1;
-                   goto Cont;
-                else
-                   Cur := Cur + 1;
-                end if;
-             end loop;
- 
-             Num := Num + 1;
-             Ind := Ind + Pattern'Length;
- 
-          <<Cont>>
-             null;
-          end loop;
-       end if;
- 
-       --  Return result
- 
-       return Num;
-    end Count;
- 
-    function Count
-      (Source  : String;
-       Pattern : String;
-       Mapping : Maps.Character_Mapping_Function) return Natural
-    is
-       PL1 : constant Integer := Pattern'Length - 1;
-       Num : Natural;
-       Ind : Natural;
-       Cur : Natural;
- 
-    begin
-       if Pattern = "" then
-          raise Pattern_Error;
-       end if;
- 
-       --  Check for null pointer in case checks are off
- 
-       if Mapping = null then
-          raise Constraint_Error;
-       end if;
- 
-       Num := 0;
-       Ind := Source'First;
-       while Ind <= Source'Last - PL1 loop
-          Cur := Ind;
-          for K in Pattern'Range loop
-             if Pattern (K) /= Mapping (Source (Cur)) then
-                Ind := Ind + 1;
-                goto Cont;
-             else
-                Cur := Cur + 1;
-             end if;
-          end loop;
- 
-          Num := Num + 1;
-          Ind := Ind + Pattern'Length;
- 
-       <<Cont>>
-          null;
-       end loop;
- 
-       return Num;
-    end Count;
- 
-    function Count
-      (Source : String;
-       Set    : Maps.Character_Set) return Natural
-    is
-       N : Natural := 0;
- 
-    begin
-       for J in Source'Range loop
-          if Is_In (Source (J), Set) then
-             N := N + 1;
-          end if;
-       end loop;
- 
-       return N;
-    end Count;
- 
-    ----------------
-    -- Find_Token --
-    ----------------
- 
-    procedure Find_Token
-      (Source : String;
-       Set    : Maps.Character_Set;
-       From   : Positive;
-       Test   : Membership;
-       First  : out Positive;
-       Last   : out Natural)
-    is
-    begin
-       --  AI05-031: Raise Index error if Source non-empty and From not in range
- 
-       if Source'Length /= 0 and then From not in Source'Range then
-          raise Index_Error;
-       end if;
- 
-       --  If Source is the empty string, From may still be out of its
-       --  range.  The following ensures that in all cases there is no
-       --  possible erroneous access to a non-existing character.
- 
-       for J in Integer'Max (From, Source'First) .. Source'Last loop
-          if Belongs (Source (J), Set, Test) then
-             First := J;
- 
-             for K in J + 1 .. Source'Last loop
-                if not Belongs (Source (K), Set, Test) then
-                   Last := K - 1;
-                   return;
-                end if;
-             end loop;
- 
-             --  Here if J indexes first char of token, and all chars after J
-             --  are in the token.
- 
-             Last := Source'Last;
-             return;
-          end if;
-       end loop;
- 
-       --  Here if no token found
- 
-       First := From;
-       Last  := 0;
-    end Find_Token;
- 
-    procedure Find_Token
-      (Source : String;
-       Set    : Maps.Character_Set;
-       Test   : Membership;
-       First  : out Positive;
-       Last   : out Natural)
-    is
-    begin
-       for J in Source'Range loop
-          if Belongs (Source (J), Set, Test) then
-             First := J;
- 
-             for K in J + 1 .. Source'Last loop
-                if not Belongs (Source (K), Set, Test) then
-                   Last := K - 1;
-                   return;
-                end if;
-             end loop;
- 
-             --  Here if J indexes first char of token, and all chars after J
-             --  are in the token.
- 
-             Last := Source'Last;
-             return;
-          end if;
-       end loop;
- 
-       --  Here if no token found
- 
-       --  RM 2005 A.4.3 (68/1) specifies that an exception must be raised if
-       --  Source'First is not positive and is assigned to First. Formulation
-       --  is slightly different in RM 2012, but the intent seems similar, so
-       --  we check explicitly for that condition.
- 
-       if Source'First not in Positive then
-          raise Constraint_Error;
- 
-       else
-          First := Source'First;
-          Last  := 0;
-       end if;
-    end Find_Token;
- 
-    -----------
-    -- Index --
-    -----------
- 
-    function Index
-      (Source  : String;
-       Pattern : String;
-       Going   : Direction := Forward;
-       Mapping : Maps.Character_Mapping := Maps.Identity) return Natural
-    is
-       PL1 : constant Integer := Pattern'Length - 1;
-       Cur : Natural;
- 
-       Ind : Integer;
-       --  Index for start of match check. This can be negative if the pattern
-       --  length is greater than the string length, which is why this variable
-       --  is Integer instead of Natural. In this case, the search loops do not
-       --  execute at all, so this Ind value is never used.
- 
-    begin
-       if Pattern = "" then
-          raise Pattern_Error;
-       end if;
- 
-       --  Forwards case
- 
-       if Going = Forward then
-          Ind := Source'First;
- 
-          --  Unmapped forward case
- 
-          if Mapping'Address = Maps.Identity'Address then
-             for J in 1 .. Source'Length - PL1 loop
-                if Pattern = Source (Ind .. Ind + PL1) then
-                   return Ind;
-                else
-                   Ind := Ind + 1;
-                end if;
-             end loop;
- 
-          --  Mapped forward case
- 
-          else
-             for J in 1 .. Source'Length - PL1 loop
-                Cur := Ind;
- 
-                for K in Pattern'Range loop
-                   if Pattern (K) /= Value (Mapping, Source (Cur)) then
-                      goto Cont1;
-                   else
-                      Cur := Cur + 1;
-                   end if;
-                end loop;
- 
-                return Ind;
- 
-             <<Cont1>>
-                Ind := Ind + 1;
-             end loop;
-          end if;
- 
-       --  Backwards case
- 
-       else
-          --  Unmapped backward case
- 
-          Ind := Source'Last - PL1;
- 
-          if Mapping'Address = Maps.Identity'Address then
-             for J in reverse 1 .. Source'Length - PL1 loop
-                if Pattern = Source (Ind .. Ind + PL1) then
-                   return Ind;
-                else
-                   Ind := Ind - 1;
-                end if;
-             end loop;
- 
-          --  Mapped backward case
- 
-          else
-             for J in reverse 1 .. Source'Length - PL1 loop
-                Cur := Ind;
- 
-                for K in Pattern'Range loop
-                   if Pattern (K) /= Value (Mapping, Source (Cur)) then
-                      goto Cont2;
-                   else
-                      Cur := Cur + 1;
-                   end if;
-                end loop;
- 
-                return Ind;
- 
-             <<Cont2>>
-                Ind := Ind - 1;
-             end loop;
-          end if;
-       end if;
- 
-       --  Fall through if no match found. Note that the loops are skipped
-       --  completely in the case of the pattern being longer than the source.
- 
-       return 0;
-    end Index;
- 
-    function Index
-      (Source  : String;
-       Pattern : String;
-       Going   : Direction := Forward;
-       Mapping : Maps.Character_Mapping_Function) return Natural
-    is
-       PL1 : constant Integer := Pattern'Length - 1;
-       Ind : Natural;
-       Cur : Natural;
- 
-    begin
-       if Pattern = "" then
-          raise Pattern_Error;
-       end if;
- 
-       --  Check for null pointer in case checks are off
- 
-       if Mapping = null then
-          raise Constraint_Error;
-       end if;
- 
-       --  If Pattern longer than Source it can't be found
- 
-       if Pattern'Length > Source'Length then
-          return 0;
-       end if;
- 
-       --  Forwards case
- 
-       if Going = Forward then
-          Ind := Source'First;
-          for J in 1 .. Source'Length - PL1 loop
-             Cur := Ind;
- 
-             for K in Pattern'Range loop
-                if Pattern (K) /= Mapping.all (Source (Cur)) then
-                   goto Cont1;
-                else
-                   Cur := Cur + 1;
-                end if;
-             end loop;
- 
-             return Ind;
- 
-          <<Cont1>>
-             Ind := Ind + 1;
-          end loop;
- 
-       --  Backwards case
- 
-       else
-          Ind := Source'Last - PL1;
-          for J in reverse 1 .. Source'Length - PL1 loop
-             Cur := Ind;
- 
-             for K in Pattern'Range loop
-                if Pattern (K) /= Mapping.all (Source (Cur)) then
-                   goto Cont2;
-                else
-                   Cur := Cur + 1;
-                end if;
-             end loop;
- 
-             return Ind;
- 
-          <<Cont2>>
-             Ind := Ind - 1;
-          end loop;
-       end if;
- 
-       --  Fall through if no match found. Note that the loops are skipped
-       --  completely in the case of the pattern being longer than the source.
- 
-       return 0;
-    end Index;
- 
-    function Index
-      (Source : String;
-       Set    : Maps.Character_Set;
-       Test   : Membership := Inside;
-       Going  : Direction  := Forward) return Natural
-    is
-    begin
-       --  Forwards case
- 
-       if Going = Forward then
-          for J in Source'Range loop
-             if Belongs (Source (J), Set, Test) then
-                return J;
-             end if;
-          end loop;
- 
-       --  Backwards case
- 
-       else
-          for J in reverse Source'Range loop
-             if Belongs (Source (J), Set, Test) then
-                return J;
-             end if;
-          end loop;
-       end if;
- 
-       --  Fall through if no match
- 
-       return 0;
-    end Index;
- 
-    function Index
-      (Source  : String;
-       Pattern : String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Maps.Character_Mapping := Maps.Identity) return Natural
-    is
-    begin
- 
-       --  AI05-056: If source is empty result is always zero
- 
-       if Source'Length = 0 then
-          return 0;
- 
-       elsif Going = Forward then
-          if From < Source'First then
-             raise Index_Error;
-          end if;
- 
-          return
-            Index (Source (From .. Source'Last), Pattern, Forward, Mapping);
- 
-       else
-          if From > Source'Last then
-             raise Index_Error;
-          end if;
- 
-          return
-            Index (Source (Source'First .. From), Pattern, Backward, Mapping);
-       end if;
-    end Index;
- 
-    function Index
-      (Source  : String;
-       Pattern : String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Maps.Character_Mapping_Function) return Natural
-    is
-    begin
- 
-       --  AI05-056: If source is empty result is always zero
- 
-       if Source'Length = 0 then
-          return 0;
- 
-       elsif Going = Forward then
-          if From < Source'First then
-             raise Index_Error;
-          end if;
- 
-          return Index
-            (Source (From .. Source'Last), Pattern, Forward, Mapping);
- 
-       else
-          if From > Source'Last then
-             raise Index_Error;
-          end if;
- 
-          return Index
-            (Source (Source'First .. From), Pattern, Backward, Mapping);
-       end if;
-    end Index;
- 
-    function Index
-      (Source  : String;
-       Set     : Maps.Character_Set;
-       From    : Positive;
-       Test    : Membership := Inside;
-       Going   : Direction := Forward) return Natural
-    is
-    begin
- 
-       --  AI05-056 : if source is empty result is always 0.
- 
-       if Source'Length = 0 then
-          return 0;
- 
-       elsif Going = Forward then
-          if From < Source'First then
-             raise Index_Error;
-          end if;
- 
-          return
-            Index (Source (From .. Source'Last), Set, Test, Forward);
- 
-       else
-          if From > Source'Last then
-             raise Index_Error;
-          end if;
- 
-          return
-            Index (Source (Source'First .. From), Set, Test, Backward);
-       end if;
-    end Index;
- 
-    ---------------------
-    -- Index_Non_Blank --
-    ---------------------
- 
-    function Index_Non_Blank
-      (Source : String;
-       Going  : Direction := Forward) return Natural
-    is
-    begin
-       if Going = Forward then
-          for J in Source'Range loop
-             if Source (J) /= ' ' then
-                return J;
-             end if;
-          end loop;
- 
-       else -- Going = Backward
-          for J in reverse Source'Range loop
-             if Source (J) /= ' ' then
-                return J;
-             end if;
-          end loop;
-       end if;
- 
-       --  Fall through if no match
- 
-       return 0;
-    end Index_Non_Blank;
- 
-    function Index_Non_Blank
-      (Source : String;
-       From   : Positive;
-       Going  : Direction := Forward) return Natural
-    is
-    begin
-       if Going = Forward then
-          if From < Source'First then
-             raise Index_Error;
-          end if;
- 
-          return
-            Index_Non_Blank (Source (From .. Source'Last), Forward);
- 
-       else
-          if From > Source'Last then
-             raise Index_Error;
-          end if;
- 
-          return
-            Index_Non_Blank (Source (Source'First .. From), Backward);
-       end if;
-    end Index_Non_Blank;
- 
- end Ada.Strings.Search;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-strsea.ads gcc-8.1.0/gcc/ada/a-strsea.ads
*** gcc-7.3.0/gcc/ada/a-strsea.ads	Fri Oct  8 13:02:55 2010
--- gcc-8.1.0/gcc/ada/a-strsea.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,121 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                   A D A . S T R I N G S . S E A R C H                    --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2010, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 search functions from Ada.Strings.Fixed. They
- --  are separated out because they are shared by Ada.Strings.Bounded and
- --  Ada.Strings.Unbounded, and we don't want to drag other irrelevant stuff
- --  from Ada.Strings.Fixed when using the other two packages. We make this
- --  a private package, since user programs should access these subprograms
- --  via one of the standard string packages.
- 
- with Ada.Strings.Maps;
- 
- private package Ada.Strings.Search is
-    pragma Preelaborate;
- 
-    function Index
-      (Source  : String;
-       Pattern : String;
-       Going   : Direction := Forward;
-       Mapping : Maps.Character_Mapping := Maps.Identity) return Natural;
- 
-    function Index
-      (Source  : String;
-       Pattern : String;
-       Going   : Direction := Forward;
-       Mapping : Maps.Character_Mapping_Function) return Natural;
- 
-    function Index
-      (Source : String;
-       Set    : Maps.Character_Set;
-       Test   : Membership := Inside;
-       Going  : Direction  := Forward) return Natural;
- 
-    function Index
-      (Source  : String;
-       Pattern : String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Maps.Character_Mapping := Maps.Identity) return Natural;
- 
-    function Index
-      (Source  : String;
-       Pattern : String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Maps.Character_Mapping_Function) return Natural;
- 
-    function Index
-      (Source  : String;
-       Set     : Maps.Character_Set;
-       From    : Positive;
-       Test    : Membership := Inside;
-       Going   : Direction := Forward) return Natural;
- 
-    function Index_Non_Blank
-      (Source : String;
-       Going  : Direction := Forward) return Natural;
- 
-    function Index_Non_Blank
-      (Source : String;
-       From   : Positive;
-       Going  : Direction := Forward) return Natural;
- 
-    function Count
-      (Source  : String;
-       Pattern : String;
-       Mapping : Maps.Character_Mapping := Maps.Identity) return Natural;
- 
-    function Count
-      (Source  : String;
-       Pattern : String;
-       Mapping : Maps.Character_Mapping_Function) return Natural;
- 
-    function Count
-      (Source : String;
-       Set    : Maps.Character_Set) return Natural;
- 
-    procedure Find_Token
-      (Source : String;
-       Set    : Maps.Character_Set;
-       From   : Positive;
-       Test   : Membership;
-       First  : out Positive;
-       Last   : out Natural);
- 
-    procedure Find_Token
-      (Source : String;
-       Set    : Maps.Character_Set;
-       Test   : Membership;
-       First  : out Positive;
-       Last   : out Natural);
- 
- end Ada.Strings.Search;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-strsup.adb gcc-8.1.0/gcc/ada/a-strsup.adb
*** gcc-7.3.0/gcc/ada/a-strsup.adb	Tue Oct 20 09:38:17 2015
--- gcc-8.1.0/gcc/ada/a-strsup.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,1925 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --             A D A . S T R I N G S . S U P E R B O U N D E D              --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2003-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Strings.Maps;   use Ada.Strings.Maps;
- with Ada.Strings.Search;
- 
- package body Ada.Strings.Superbounded is
- 
-    ------------
-    -- Concat --
-    ------------
- 
-    function Concat
-      (Left  : Super_String;
-       Right : Super_String) return Super_String
-    is
-    begin
-       return Result : Super_String (Left.Max_Length) do
-          declare
-             Llen : constant Natural := Left.Current_Length;
-             Rlen : constant Natural := Right.Current_Length;
-             Nlen : constant Natural := Llen + Rlen;
-          begin
-             if Nlen > Left.Max_Length then
-                raise Ada.Strings.Length_Error;
-             end if;
- 
-             Result.Current_Length := Nlen;
-             Result.Data (1 .. Llen) := Left.Data (1 .. Llen);
-             Result.Data (Llen + 1 .. Nlen) := Right.Data (1 .. Rlen);
-          end;
-       end return;
-    end Concat;
- 
-    function Concat
-      (Left  : Super_String;
-       Right : String) return Super_String
-    is
-    begin
-       return Result : Super_String (Left.Max_Length) do
-          declare
-             Llen   : constant Natural := Left.Current_Length;
-             Nlen   : constant Natural := Llen + Right'Length;
-          begin
-             if Nlen > Left.Max_Length then
-                raise Ada.Strings.Length_Error;
-             end if;
- 
-             Result.Current_Length := Nlen;
-             Result.Data (1 .. Llen) := Left.Data (1 .. Llen);
-             Result.Data (Llen + 1 .. Nlen) := Right;
-          end;
-       end return;
-    end Concat;
- 
-    function Concat
-      (Left  : String;
-       Right : Super_String) return Super_String
-    is
- 
-    begin
-       return Result : Super_String (Right.Max_Length) do
-          declare
-             Llen : constant Natural := Left'Length;
-             Rlen : constant Natural := Right.Current_Length;
-             Nlen : constant Natural := Llen + Rlen;
-          begin
-             if Nlen > Right.Max_Length then
-                raise Ada.Strings.Length_Error;
-             end if;
- 
-             Result.Current_Length := Nlen;
-             Result.Data (1 .. Llen) := Left;
-             Result.Data (Llen + 1 .. Nlen) := Right.Data (1 .. Rlen);
-          end;
-       end return;
-    end Concat;
- 
-    function Concat
-      (Left  : Super_String;
-       Right : Character) return Super_String
-    is
-    begin
-       return Result : Super_String (Left.Max_Length) do
-          declare
-             Llen : constant Natural := Left.Current_Length;
-          begin
-             if Llen = Left.Max_Length then
-                raise Ada.Strings.Length_Error;
-             end if;
- 
-             Result.Current_Length := Llen + 1;
-             Result.Data (1 .. Llen) := Left.Data (1 .. Llen);
-             Result.Data (Result.Current_Length) := Right;
-          end;
-       end return;
-    end Concat;
- 
-    function Concat
-      (Left  : Character;
-       Right : Super_String) return Super_String
-    is
-    begin
-       return Result : Super_String (Right.Max_Length) do
-          declare
-             Rlen : constant Natural := Right.Current_Length;
-          begin
-             if Rlen = Right.Max_Length then
-                raise Ada.Strings.Length_Error;
-             end if;
- 
-             Result.Current_Length := Rlen + 1;
-             Result.Data (1) := Left;
-             Result.Data (2 .. Result.Current_Length) :=
-               Right.Data (1 .. Rlen);
-          end;
-       end return;
-    end Concat;
- 
-    -----------
-    -- Equal --
-    -----------
- 
-    function "="
-      (Left  : Super_String;
-       Right : Super_String) return Boolean
-    is
-    begin
-       return Left.Current_Length = Right.Current_Length
-         and then Left.Data (1 .. Left.Current_Length) =
-                    Right.Data (1 .. Right.Current_Length);
-    end "=";
- 
-    function Equal
-      (Left  : Super_String;
-       Right : String) return Boolean
-    is
-    begin
-       return Left.Current_Length = Right'Length
-         and then Left.Data (1 .. Left.Current_Length) = Right;
-    end Equal;
- 
-    function Equal
-      (Left  : String;
-       Right : Super_String) return Boolean
-    is
-    begin
-       return Left'Length = Right.Current_Length
-         and then Left = Right.Data (1 .. Right.Current_Length);
-    end Equal;
- 
-    -------------
-    -- Greater --
-    -------------
- 
-    function Greater
-      (Left  : Super_String;
-       Right : Super_String) return Boolean
-    is
-    begin
-       return Left.Data (1 .. Left.Current_Length) >
-                Right.Data (1 .. Right.Current_Length);
-    end Greater;
- 
-    function Greater
-      (Left  : Super_String;
-       Right : String) return Boolean
-    is
-    begin
-       return Left.Data (1 .. Left.Current_Length) > Right;
-    end Greater;
- 
-    function Greater
-      (Left  : String;
-       Right : Super_String) return Boolean
-    is
-    begin
-       return Left > Right.Data (1 .. Right.Current_Length);
-    end Greater;
- 
-    ----------------------
-    -- Greater_Or_Equal --
-    ----------------------
- 
-    function Greater_Or_Equal
-      (Left  : Super_String;
-       Right : Super_String) return Boolean
-    is
-    begin
-       return Left.Data (1 .. Left.Current_Length) >=
-                Right.Data (1 .. Right.Current_Length);
-    end Greater_Or_Equal;
- 
-    function Greater_Or_Equal
-      (Left  : Super_String;
-       Right : String) return Boolean
-    is
-    begin
-       return Left.Data (1 .. Left.Current_Length) >= Right;
-    end Greater_Or_Equal;
- 
-    function Greater_Or_Equal
-      (Left  : String;
-       Right : Super_String) return Boolean
-    is
-    begin
-       return Left >= Right.Data (1 .. Right.Current_Length);
-    end Greater_Or_Equal;
- 
-    ----------
-    -- Less --
-    ----------
- 
-    function Less
-      (Left  : Super_String;
-       Right : Super_String) return Boolean
-    is
-    begin
-       return Left.Data (1 .. Left.Current_Length) <
-                Right.Data (1 .. Right.Current_Length);
-    end Less;
- 
-    function Less
-      (Left  : Super_String;
-       Right : String) return Boolean
-    is
-    begin
-       return Left.Data (1 .. Left.Current_Length) < Right;
-    end Less;
- 
-    function Less
-      (Left  : String;
-       Right : Super_String) return Boolean
-    is
-    begin
-       return Left < Right.Data (1 .. Right.Current_Length);
-    end Less;
- 
-    -------------------
-    -- Less_Or_Equal --
-    -------------------
- 
-    function Less_Or_Equal
-      (Left  : Super_String;
-       Right : Super_String) return Boolean
-    is
-    begin
-       return Left.Data (1 .. Left.Current_Length) <=
-                Right.Data (1 .. Right.Current_Length);
-    end Less_Or_Equal;
- 
-    function Less_Or_Equal
-      (Left  : Super_String;
-       Right : String) return Boolean
-    is
-    begin
-       return Left.Data (1 .. Left.Current_Length) <= Right;
-    end Less_Or_Equal;
- 
-    function Less_Or_Equal
-      (Left  : String;
-       Right : Super_String) return Boolean
-    is
-    begin
-       return Left <= Right.Data (1 .. Right.Current_Length);
-    end Less_Or_Equal;
- 
-    ----------------------
-    -- Set_Super_String --
-    ----------------------
- 
-    procedure Set_Super_String
-      (Target : out Super_String;
-       Source : String;
-       Drop   : Truncation := Error)
-    is
-       Slen       : constant Natural := Source'Length;
-       Max_Length : constant Positive := Target.Max_Length;
- 
-    begin
-       if Slen <= Max_Length then
-          Target.Current_Length := Slen;
-          Target.Data (1 .. Slen) := Source;
- 
-       else
-          case Drop is
-             when Strings.Right =>
-                Target.Current_Length := Max_Length;
-                Target.Data (1 .. Max_Length) :=
-                  Source (Source'First .. Source'First - 1 + Max_Length);
- 
-             when Strings.Left =>
-                Target.Current_Length := Max_Length;
-                Target.Data (1 .. Max_Length) :=
-                  Source (Source'Last - (Max_Length - 1) .. Source'Last);
- 
-             when Strings.Error =>
-                raise Ada.Strings.Length_Error;
-          end case;
-       end if;
-    end Set_Super_String;
- 
-    ------------------
-    -- Super_Append --
-    ------------------
- 
-    --  Case of Super_String and Super_String
- 
-    function Super_Append
-      (Left  : Super_String;
-       Right : Super_String;
-       Drop  : Truncation := Error) return Super_String
-    is
-       Max_Length : constant Positive := Left.Max_Length;
-       Result : Super_String (Max_Length);
-       Llen   : constant Natural := Left.Current_Length;
-       Rlen   : constant Natural := Right.Current_Length;
-       Nlen   : constant Natural := Llen + Rlen;
- 
-    begin
-       if Nlen <= Max_Length then
-          Result.Current_Length := Nlen;
-          Result.Data (1 .. Llen) := Left.Data (1 .. Llen);
-          Result.Data (Llen + 1 .. Nlen) := Right.Data (1 .. Rlen);
- 
-       else
-          Result.Current_Length := Max_Length;
- 
-          case Drop is
-             when Strings.Right =>
-                if Llen >= Max_Length then -- only case is Llen = Max_Length
-                   Result.Data := Left.Data;
- 
-                else
-                   Result.Data (1 .. Llen) := Left.Data (1 .. Llen);
-                   Result.Data (Llen + 1 .. Max_Length) :=
-                     Right.Data (1 .. Max_Length - Llen);
-                end if;
- 
-             when Strings.Left =>
-                if Rlen >= Max_Length then -- only case is Rlen = Max_Length
-                   Result.Data := Right.Data;
- 
-                else
-                   Result.Data (1 .. Max_Length - Rlen) :=
-                     Left.Data (Llen - (Max_Length - Rlen - 1) .. Llen);
-                   Result.Data (Max_Length - Rlen + 1 .. Max_Length) :=
-                     Right.Data (1 .. Rlen);
-                end if;
- 
-             when Strings.Error =>
-                raise Ada.Strings.Length_Error;
-          end case;
-       end if;
- 
-       return Result;
-    end Super_Append;
- 
-    procedure Super_Append
-      (Source   : in out Super_String;
-       New_Item : Super_String;
-       Drop     : Truncation := Error)
-    is
-       Max_Length : constant Positive := Source.Max_Length;
-       Llen       : constant Natural := Source.Current_Length;
-       Rlen       : constant Natural := New_Item.Current_Length;
-       Nlen       : constant Natural := Llen + Rlen;
- 
-    begin
-       if Nlen <= Max_Length then
-          Source.Current_Length := Nlen;
-          Source.Data (Llen + 1 .. Nlen) := New_Item.Data (1 .. Rlen);
- 
-       else
-          Source.Current_Length := Max_Length;
- 
-          case Drop is
-             when Strings.Right =>
-                if Llen < Max_Length then
-                   Source.Data (Llen + 1 .. Max_Length) :=
-                     New_Item.Data (1 .. Max_Length - Llen);
-                end if;
- 
-             when Strings.Left =>
-                if Rlen >= Max_Length then -- only case is Rlen = Max_Length
-                   Source.Data := New_Item.Data;
- 
-                else
-                   Source.Data (1 .. Max_Length - Rlen) :=
-                     Source.Data (Llen - (Max_Length - Rlen - 1) .. Llen);
-                   Source.Data (Max_Length - Rlen + 1 .. Max_Length) :=
-                     New_Item.Data (1 .. Rlen);
-                end if;
- 
-             when Strings.Error =>
-                raise Ada.Strings.Length_Error;
-          end case;
-       end if;
- 
-    end Super_Append;
- 
-    --  Case of Super_String and String
- 
-    function Super_Append
-      (Left  : Super_String;
-       Right : String;
-       Drop  : Strings.Truncation := Strings.Error) return Super_String
-    is
-       Max_Length : constant Positive := Left.Max_Length;
-       Result : Super_String (Max_Length);
-       Llen   : constant Natural := Left.Current_Length;
-       Rlen   : constant Natural := Right'Length;
-       Nlen   : constant Natural := Llen + Rlen;
- 
-    begin
-       if Nlen <= Max_Length then
-          Result.Current_Length := Nlen;
-          Result.Data (1 .. Llen) := Left.Data (1 .. Llen);
-          Result.Data (Llen + 1 .. Nlen) := Right;
- 
-       else
-          Result.Current_Length := Max_Length;
- 
-          case Drop is
-             when Strings.Right =>
-                if Llen >= Max_Length then -- only case is Llen = Max_Length
-                   Result.Data := Left.Data;
- 
-                else
-                   Result.Data (1 .. Llen) := Left.Data (1 .. Llen);
-                   Result.Data (Llen + 1 .. Max_Length) :=
-                     Right (Right'First .. Right'First - 1 +
-                              Max_Length - Llen);
- 
-                end if;
- 
-             when Strings.Left =>
-                if Rlen >= Max_Length then
-                   Result.Data (1 .. Max_Length) :=
-                     Right (Right'Last - (Max_Length - 1) .. Right'Last);
- 
-                else
-                   Result.Data (1 .. Max_Length - Rlen) :=
-                     Left.Data (Llen - (Max_Length - Rlen - 1) .. Llen);
-                   Result.Data (Max_Length - Rlen + 1 .. Max_Length) :=
-                     Right;
-                end if;
- 
-             when Strings.Error =>
-                raise Ada.Strings.Length_Error;
-          end case;
-       end if;
- 
-       return Result;
-    end Super_Append;
- 
-    procedure Super_Append
-      (Source   : in out Super_String;
-       New_Item : String;
-       Drop     : Truncation := Error)
-    is
-       Max_Length : constant Positive := Source.Max_Length;
-       Llen   : constant Natural := Source.Current_Length;
-       Rlen   : constant Natural := New_Item'Length;
-       Nlen   : constant Natural := Llen + Rlen;
- 
-    begin
-       if Nlen <= Max_Length then
-          Source.Current_Length := Nlen;
-          Source.Data (Llen + 1 .. Nlen) := New_Item;
- 
-       else
-          Source.Current_Length := Max_Length;
- 
-          case Drop is
-             when Strings.Right =>
-                if Llen < Max_Length then
-                   Source.Data (Llen + 1 .. Max_Length) :=
-                     New_Item (New_Item'First ..
-                                 New_Item'First - 1 + Max_Length - Llen);
-                end if;
- 
-             when Strings.Left =>
-                if Rlen >= Max_Length then
-                   Source.Data (1 .. Max_Length) :=
-                     New_Item (New_Item'Last - (Max_Length - 1) ..
-                                 New_Item'Last);
- 
-                else
-                   Source.Data (1 .. Max_Length - Rlen) :=
-                     Source.Data (Llen - (Max_Length - Rlen - 1) .. Llen);
-                   Source.Data (Max_Length - Rlen + 1 .. Max_Length) :=
-                     New_Item;
-                end if;
- 
-             when Strings.Error =>
-                raise Ada.Strings.Length_Error;
-          end case;
-       end if;
- 
-    end Super_Append;
- 
-    --  Case of String and Super_String
- 
-    function Super_Append
-      (Left  : String;
-       Right : Super_String;
-       Drop  : Strings.Truncation := Strings.Error) return Super_String
-    is
-       Max_Length : constant Positive := Right.Max_Length;
-       Result     : Super_String (Max_Length);
-       Llen       : constant Natural := Left'Length;
-       Rlen       : constant Natural := Right.Current_Length;
-       Nlen       : constant Natural := Llen + Rlen;
- 
-    begin
-       if Nlen <= Max_Length then
-          Result.Current_Length := Nlen;
-          Result.Data (1 .. Llen) := Left;
-          Result.Data (Llen + 1 .. Llen + Rlen) := Right.Data (1 .. Rlen);
- 
-       else
-          Result.Current_Length := Max_Length;
- 
-          case Drop is
-             when Strings.Right =>
-                if Llen >= Max_Length then
-                   Result.Data (1 .. Max_Length) :=
-                     Left (Left'First .. Left'First + (Max_Length - 1));
- 
-                else
-                   Result.Data (1 .. Llen) := Left;
-                   Result.Data (Llen + 1 .. Max_Length) :=
-                     Right.Data (1 .. Max_Length - Llen);
-                end if;
- 
-             when Strings.Left =>
-                if Rlen >= Max_Length then
-                   Result.Data (1 .. Max_Length) :=
-                     Right.Data (Rlen - (Max_Length - 1) .. Rlen);
- 
-                else
-                   Result.Data (1 .. Max_Length - Rlen) :=
-                     Left (Left'Last - (Max_Length - Rlen - 1) .. Left'Last);
-                   Result.Data (Max_Length - Rlen + 1 .. Max_Length) :=
-                     Right.Data (1 .. Rlen);
-                end if;
- 
-             when Strings.Error =>
-                raise Ada.Strings.Length_Error;
-          end case;
-       end if;
- 
-       return Result;
-    end Super_Append;
- 
-    --  Case of Super_String and Character
- 
-    function Super_Append
-      (Left  : Super_String;
-       Right : Character;
-       Drop  : Strings.Truncation := Strings.Error) return Super_String
-    is
-       Max_Length : constant Positive := Left.Max_Length;
-       Result     : Super_String (Max_Length);
-       Llen       : constant Natural := Left.Current_Length;
- 
-    begin
-       if Llen  < Max_Length then
-          Result.Current_Length := Llen + 1;
-          Result.Data (1 .. Llen) := Left.Data (1 .. Llen);
-          Result.Data (Llen + 1) := Right;
-          return Result;
- 
-       else
-          case Drop is
-             when Strings.Right =>
-                return Left;
- 
-             when Strings.Left =>
-                Result.Current_Length := Max_Length;
-                Result.Data (1 .. Max_Length - 1) :=
-                  Left.Data (2 .. Max_Length);
-                Result.Data (Max_Length) := Right;
-                return Result;
- 
-             when Strings.Error =>
-                raise Ada.Strings.Length_Error;
-          end case;
-       end if;
-    end Super_Append;
- 
-    procedure Super_Append
-      (Source   : in out Super_String;
-       New_Item : Character;
-       Drop     : Truncation := Error)
-    is
-       Max_Length : constant Positive := Source.Max_Length;
-       Llen       : constant Natural  := Source.Current_Length;
- 
-    begin
-       if Llen  < Max_Length then
-          Source.Current_Length := Llen + 1;
-          Source.Data (Llen + 1) := New_Item;
- 
-       else
-          Source.Current_Length := Max_Length;
- 
-          case Drop is
-             when Strings.Right =>
-                null;
- 
-             when Strings.Left =>
-                Source.Data (1 .. Max_Length - 1) :=
-                  Source.Data (2 .. Max_Length);
-                Source.Data (Max_Length) := New_Item;
- 
-             when Strings.Error =>
-                raise Ada.Strings.Length_Error;
-          end case;
-       end if;
- 
-    end Super_Append;
- 
-    --  Case of Character and Super_String
- 
-    function Super_Append
-      (Left  : Character;
-       Right : Super_String;
-       Drop  : Strings.Truncation := Strings.Error) return Super_String
-    is
-       Max_Length : constant Positive := Right.Max_Length;
-       Result : Super_String (Max_Length);
-       Rlen   : constant Natural := Right.Current_Length;
- 
-    begin
-       if Rlen < Max_Length then
-          Result.Current_Length := Rlen + 1;
-          Result.Data (1) := Left;
-          Result.Data (2 .. Rlen + 1) := Right.Data (1 .. Rlen);
-          return Result;
- 
-       else
-          case Drop is
-             when Strings.Right =>
-                Result.Current_Length := Max_Length;
-                Result.Data (1) := Left;
-                Result.Data (2 .. Max_Length) :=
-                  Right.Data (1 .. Max_Length - 1);
-                return Result;
- 
-             when Strings.Left =>
-                return Right;
- 
-             when Strings.Error =>
-                raise Ada.Strings.Length_Error;
-          end case;
-       end if;
-    end Super_Append;
- 
-    -----------------
-    -- Super_Count --
-    -----------------
- 
-    function Super_Count
-      (Source  : Super_String;
-       Pattern : String;
-       Mapping : Maps.Character_Mapping := Maps.Identity) return Natural
-    is
-    begin
-       return
-         Search.Count
-           (Source.Data (1 .. Source.Current_Length), Pattern, Mapping);
-    end Super_Count;
- 
-    function Super_Count
-      (Source  : Super_String;
-       Pattern : String;
-       Mapping : Maps.Character_Mapping_Function) return Natural
-    is
-    begin
-       return
-         Search.Count
-           (Source.Data (1 .. Source.Current_Length), Pattern, Mapping);
-    end Super_Count;
- 
-    function Super_Count
-      (Source : Super_String;
-       Set    : Maps.Character_Set) return Natural
-    is
-    begin
-       return Search.Count (Source.Data (1 .. Source.Current_Length), Set);
-    end Super_Count;
- 
-    ------------------
-    -- Super_Delete --
-    ------------------
- 
-    function Super_Delete
-      (Source  : Super_String;
-       From    : Positive;
-       Through : Natural) return Super_String
-    is
-       Result     : Super_String (Source.Max_Length);
-       Slen       : constant Natural := Source.Current_Length;
-       Num_Delete : constant Integer := Through - From + 1;
- 
-    begin
-       if Num_Delete <= 0 then
-          return Source;
- 
-       elsif From > Slen + 1 then
-          raise Ada.Strings.Index_Error;
- 
-       elsif Through >= Slen then
-          Result.Current_Length := From - 1;
-          Result.Data (1 .. From - 1) := Source.Data (1 .. From - 1);
-          return Result;
- 
-       else
-          Result.Current_Length := Slen - Num_Delete;
-          Result.Data (1 .. From - 1) := Source.Data (1 .. From - 1);
-          Result.Data (From .. Result.Current_Length) :=
-            Source.Data (Through + 1 .. Slen);
-          return Result;
-       end if;
-    end Super_Delete;
- 
-    procedure Super_Delete
-      (Source  : in out Super_String;
-       From    : Positive;
-       Through : Natural)
-    is
-       Slen       : constant Natural := Source.Current_Length;
-       Num_Delete : constant Integer := Through - From + 1;
- 
-    begin
-       if Num_Delete <= 0 then
-          return;
- 
-       elsif From > Slen + 1 then
-          raise Ada.Strings.Index_Error;
- 
-       elsif Through >= Slen then
-          Source.Current_Length := From - 1;
- 
-       else
-          Source.Current_Length := Slen - Num_Delete;
-          Source.Data (From .. Source.Current_Length) :=
-            Source.Data (Through + 1 .. Slen);
-       end if;
-    end Super_Delete;
- 
-    -------------------
-    -- Super_Element --
-    -------------------
- 
-    function Super_Element
-      (Source : Super_String;
-       Index  : Positive) return Character
-    is
-    begin
-       if Index <= Source.Current_Length then
-          return Source.Data (Index);
-       else
-          raise Strings.Index_Error;
-       end if;
-    end Super_Element;
- 
-    ----------------------
-    -- Super_Find_Token --
-    ----------------------
- 
-    procedure Super_Find_Token
-      (Source : Super_String;
-       Set    : Maps.Character_Set;
-       From   : Positive;
-       Test   : Strings.Membership;
-       First  : out Positive;
-       Last   : out Natural)
-    is
-    begin
-       Search.Find_Token
-         (Source.Data (From .. Source.Current_Length), Set, Test, First, Last);
-    end Super_Find_Token;
- 
-    procedure Super_Find_Token
-      (Source : Super_String;
-       Set    : Maps.Character_Set;
-       Test   : Strings.Membership;
-       First  : out Positive;
-       Last   : out Natural)
-    is
-    begin
-       Search.Find_Token
-         (Source.Data (1 .. Source.Current_Length), Set, Test, First, Last);
-    end Super_Find_Token;
- 
-    ----------------
-    -- Super_Head --
-    ----------------
- 
-    function Super_Head
-      (Source : Super_String;
-       Count  : Natural;
-       Pad    : Character := Space;
-       Drop   : Strings.Truncation := Strings.Error) return Super_String
-    is
-       Max_Length : constant Positive := Source.Max_Length;
-       Result     : Super_String (Max_Length);
-       Slen       : constant Natural := Source.Current_Length;
-       Npad       : constant Integer := Count - Slen;
- 
-    begin
-       if Npad <= 0 then
-          Result.Current_Length := Count;
-          Result.Data (1 .. Count) := Source.Data (1 .. Count);
- 
-       elsif Count <= Max_Length then
-          Result.Current_Length := Count;
-          Result.Data (1 .. Slen) := Source.Data (1 .. Slen);
-          Result.Data (Slen + 1 .. Count) := (others => Pad);
- 
-       else
-          Result.Current_Length := Max_Length;
- 
-          case Drop is
-             when Strings.Right =>
-                Result.Data (1 .. Slen) := Source.Data (1 .. Slen);
-                Result.Data (Slen + 1 .. Max_Length) := (others => Pad);
- 
-             when Strings.Left =>
-                if Npad >= Max_Length then
-                   Result.Data := (others => Pad);
- 
-                else
-                   Result.Data (1 .. Max_Length - Npad) :=
-                     Source.Data (Count - Max_Length + 1 .. Slen);
-                   Result.Data (Max_Length - Npad + 1 .. Max_Length) :=
-                     (others => Pad);
-                end if;
- 
-             when Strings.Error =>
-                raise Ada.Strings.Length_Error;
-          end case;
-       end if;
- 
-       return Result;
-    end Super_Head;
- 
-    procedure Super_Head
-      (Source : in out Super_String;
-       Count  : Natural;
-       Pad    : Character := Space;
-       Drop   : Truncation := Error)
-    is
-       Max_Length : constant Positive := Source.Max_Length;
-       Slen       : constant Natural  := Source.Current_Length;
-       Npad       : constant Integer  := Count - Slen;
-       Temp       : String (1 .. Max_Length);
- 
-    begin
-       if Npad <= 0 then
-          Source.Current_Length := Count;
- 
-       elsif Count <= Max_Length then
-          Source.Current_Length := Count;
-          Source.Data (Slen + 1 .. Count) := (others => Pad);
- 
-       else
-          Source.Current_Length := Max_Length;
- 
-          case Drop is
-             when Strings.Right =>
-                Source.Data (Slen + 1 .. Max_Length) := (others => Pad);
- 
-             when Strings.Left =>
-                if Npad > Max_Length then
-                   Source.Data := (others => Pad);
- 
-                else
-                   Temp := Source.Data;
-                   Source.Data (1 .. Max_Length - Npad) :=
-                     Temp (Count - Max_Length + 1 .. Slen);
- 
-                   for J in Max_Length - Npad + 1 .. Max_Length loop
-                      Source.Data (J) := Pad;
-                   end loop;
-                end if;
- 
-             when Strings.Error =>
-                raise Ada.Strings.Length_Error;
-          end case;
-       end if;
-    end Super_Head;
- 
-    -----------------
-    -- Super_Index --
-    -----------------
- 
-    function Super_Index
-      (Source  : Super_String;
-       Pattern : String;
-       Going   : Strings.Direction := Strings.Forward;
-       Mapping : Maps.Character_Mapping := Maps.Identity) return Natural
-    is
-    begin
-       return Search.Index
-         (Source.Data (1 .. Source.Current_Length), Pattern, Going, Mapping);
-    end Super_Index;
- 
-    function Super_Index
-      (Source  : Super_String;
-       Pattern : String;
-       Going   : Direction := Forward;
-       Mapping : Maps.Character_Mapping_Function) return Natural
-    is
-    begin
-       return Search.Index
-         (Source.Data (1 .. Source.Current_Length), Pattern, Going, Mapping);
-    end Super_Index;
- 
-    function Super_Index
-      (Source : Super_String;
-       Set    : Maps.Character_Set;
-       Test   : Strings.Membership := Strings.Inside;
-       Going  : Strings.Direction  := Strings.Forward) return Natural
-    is
-    begin
-       return Search.Index
-         (Source.Data (1 .. Source.Current_Length), Set, Test, Going);
-    end Super_Index;
- 
-    function Super_Index
-      (Source  : Super_String;
-       Pattern : String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Maps.Character_Mapping := Maps.Identity) return Natural
-    is
-    begin
-       return Search.Index
-         (Source.Data (1 .. Source.Current_Length),
-          Pattern, From, Going, Mapping);
-    end Super_Index;
- 
-    function Super_Index
-      (Source  : Super_String;
-       Pattern : String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Maps.Character_Mapping_Function) return Natural
-    is
-    begin
-       return Search.Index
-         (Source.Data (1 .. Source.Current_Length),
-          Pattern, From, Going, Mapping);
-    end Super_Index;
- 
-    function Super_Index
-      (Source : Super_String;
-       Set    : Maps.Character_Set;
-       From   : Positive;
-       Test   : Membership := Inside;
-       Going  : Direction := Forward) return Natural
-    is
-    begin
-       return Search.Index
-         (Source.Data (1 .. Source.Current_Length), Set, From, Test, Going);
-    end Super_Index;
- 
-    ---------------------------
-    -- Super_Index_Non_Blank --
-    ---------------------------
- 
-    function Super_Index_Non_Blank
-      (Source : Super_String;
-       Going  : Strings.Direction := Strings.Forward) return Natural
-    is
-    begin
-       return
-         Search.Index_Non_Blank
-           (Source.Data (1 .. Source.Current_Length), Going);
-    end Super_Index_Non_Blank;
- 
-    function Super_Index_Non_Blank
-      (Source : Super_String;
-       From   : Positive;
-       Going  : Direction := Forward) return Natural
-    is
-    begin
-       return
-         Search.Index_Non_Blank
-           (Source.Data (1 .. Source.Current_Length), From, Going);
-    end Super_Index_Non_Blank;
- 
-    ------------------
-    -- Super_Insert --
-    ------------------
- 
-    function Super_Insert
-      (Source   : Super_String;
-       Before   : Positive;
-       New_Item : String;
-       Drop     : Strings.Truncation := Strings.Error) return Super_String
-    is
-       Max_Length : constant Positive := Source.Max_Length;
-       Result     : Super_String (Max_Length);
-       Slen       : constant Natural := Source.Current_Length;
-       Nlen       : constant Natural := New_Item'Length;
-       Tlen       : constant Natural := Slen + Nlen;
-       Blen       : constant Natural := Before - 1;
-       Alen       : constant Integer := Slen - Blen;
-       Droplen    : constant Integer := Tlen - Max_Length;
- 
-       --  Tlen is the length of the total string before possible truncation.
-       --  Blen, Alen are the lengths of the before and after pieces of the
-       --  source string.
- 
-    begin
-       if Alen < 0 then
-          raise Ada.Strings.Index_Error;
- 
-       elsif Droplen <= 0 then
-          Result.Current_Length := Tlen;
-          Result.Data (1 .. Blen) := Source.Data (1 .. Blen);
-          Result.Data (Before .. Before + Nlen - 1) := New_Item;
-          Result.Data (Before + Nlen .. Tlen) :=
-            Source.Data (Before .. Slen);
- 
-       else
-          Result.Current_Length := Max_Length;
- 
-          case Drop is
-             when Strings.Right =>
-                Result.Data (1 .. Blen) := Source.Data (1 .. Blen);
- 
-                if Droplen > Alen then
-                   Result.Data (Before .. Max_Length) :=
-                     New_Item (New_Item'First
-                                 .. New_Item'First + Max_Length - Before);
-                else
-                   Result.Data (Before .. Before + Nlen - 1) := New_Item;
-                   Result.Data (Before + Nlen .. Max_Length) :=
-                     Source.Data (Before .. Slen - Droplen);
-                end if;
- 
-             when Strings.Left =>
-                Result.Data (Max_Length - (Alen - 1) .. Max_Length) :=
-                  Source.Data (Before .. Slen);
- 
-                if Droplen >= Blen then
-                   Result.Data (1 .. Max_Length - Alen) :=
-                     New_Item (New_Item'Last - (Max_Length - Alen) + 1
-                                 .. New_Item'Last);
-                else
-                   Result.Data
-                     (Blen - Droplen + 1 .. Max_Length - Alen) :=
-                     New_Item;
-                   Result.Data (1 .. Blen - Droplen) :=
-                     Source.Data (Droplen + 1 .. Blen);
-                end if;
- 
-             when Strings.Error =>
-                raise Ada.Strings.Length_Error;
-          end case;
-       end if;
- 
-       return Result;
-    end Super_Insert;
- 
-    procedure Super_Insert
-      (Source   : in out Super_String;
-       Before   : Positive;
-       New_Item : String;
-       Drop     : Strings.Truncation := Strings.Error)
-    is
-    begin
-       --  We do a double copy here because this is one of the situations
-       --  in which we move data to the right, and at least at the moment,
-       --  GNAT is not handling such cases correctly ???
- 
-       Source := Super_Insert (Source, Before, New_Item, Drop);
-    end Super_Insert;
- 
-    ------------------
-    -- Super_Length --
-    ------------------
- 
-    function Super_Length (Source : Super_String) return Natural is
-    begin
-       return Source.Current_Length;
-    end Super_Length;
- 
-    ---------------------
-    -- Super_Overwrite --
-    ---------------------
- 
-    function Super_Overwrite
-      (Source   : Super_String;
-       Position : Positive;
-       New_Item : String;
-       Drop     : Strings.Truncation := Strings.Error) return Super_String
-    is
-       Max_Length : constant Positive := Source.Max_Length;
-       Result     : Super_String (Max_Length);
-       Endpos     : constant Natural  := Position + New_Item'Length - 1;
-       Slen       : constant Natural  := Source.Current_Length;
-       Droplen    : Natural;
- 
-    begin
-       if Position > Slen + 1 then
-          raise Ada.Strings.Index_Error;
- 
-       elsif New_Item'Length = 0 then
-          return Source;
- 
-       elsif Endpos <= Slen then
-          Result.Current_Length := Source.Current_Length;
-          Result.Data (1 .. Slen) := Source.Data (1 .. Slen);
-          Result.Data (Position .. Endpos) := New_Item;
-          return Result;
- 
-       elsif Endpos <= Max_Length then
-          Result.Current_Length := Endpos;
-          Result.Data (1 .. Position - 1) := Source.Data (1 .. Position - 1);
-          Result.Data (Position .. Endpos) := New_Item;
-          return Result;
- 
-       else
-          Result.Current_Length := Max_Length;
-          Droplen := Endpos - Max_Length;
- 
-          case Drop is
-             when Strings.Right =>
-                Result.Data (1 .. Position - 1) :=
-                  Source.Data (1 .. Position - 1);
- 
-                Result.Data (Position .. Max_Length) :=
-                  New_Item (New_Item'First .. New_Item'Last - Droplen);
-                return Result;
- 
-             when Strings.Left =>
-                if New_Item'Length >= Max_Length then
-                   Result.Data (1 .. Max_Length) :=
-                     New_Item (New_Item'Last - Max_Length + 1 ..
-                                 New_Item'Last);
-                   return Result;
- 
-                else
-                   Result.Data (1 .. Max_Length - New_Item'Length) :=
-                     Source.Data (Droplen + 1 .. Position - 1);
-                   Result.Data
-                     (Max_Length - New_Item'Length + 1 .. Max_Length) :=
-                     New_Item;
-                   return Result;
-                end if;
- 
-             when Strings.Error =>
-                raise Ada.Strings.Length_Error;
-          end case;
-       end if;
-    end Super_Overwrite;
- 
-    procedure Super_Overwrite
-      (Source    : in out Super_String;
-       Position  : Positive;
-       New_Item  : String;
-       Drop      : Strings.Truncation := Strings.Error)
-    is
-       Max_Length : constant Positive := Source.Max_Length;
-       Endpos     : constant Positive := Position + New_Item'Length - 1;
-       Slen       : constant Natural  := Source.Current_Length;
-       Droplen    : Natural;
- 
-    begin
-       if Position > Slen + 1 then
-          raise Ada.Strings.Index_Error;
- 
-       elsif Endpos <= Slen then
-          Source.Data (Position .. Endpos) := New_Item;
- 
-       elsif Endpos <= Max_Length then
-          Source.Data (Position .. Endpos) := New_Item;
-          Source.Current_Length := Endpos;
- 
-       else
-          Source.Current_Length := Max_Length;
-          Droplen := Endpos - Max_Length;
- 
-          case Drop is
-             when Strings.Right =>
-                Source.Data (Position .. Max_Length) :=
-                  New_Item (New_Item'First .. New_Item'Last - Droplen);
- 
-             when Strings.Left =>
-                if New_Item'Length > Max_Length then
-                   Source.Data (1 .. Max_Length) :=
-                     New_Item (New_Item'Last - Max_Length + 1 ..
-                                 New_Item'Last);
- 
-                else
-                   Source.Data (1 .. Max_Length - New_Item'Length) :=
-                     Source.Data (Droplen + 1 .. Position - 1);
- 
-                   Source.Data
-                     (Max_Length - New_Item'Length + 1 .. Max_Length) :=
-                     New_Item;
-                end if;
- 
-             when Strings.Error =>
-                raise Ada.Strings.Length_Error;
-          end case;
-       end if;
-    end Super_Overwrite;
- 
-    ---------------------------
-    -- Super_Replace_Element --
-    ---------------------------
- 
-    procedure Super_Replace_Element
-      (Source : in out Super_String;
-       Index  : Positive;
-       By     : Character)
-    is
-    begin
-       if Index <= Source.Current_Length then
-          Source.Data (Index) := By;
-       else
-          raise Ada.Strings.Index_Error;
-       end if;
-    end Super_Replace_Element;
- 
-    -------------------------
-    -- Super_Replace_Slice --
-    -------------------------
- 
-    function Super_Replace_Slice
-      (Source : Super_String;
-       Low    : Positive;
-       High   : Natural;
-       By     : String;
-       Drop   : Strings.Truncation := Strings.Error) return Super_String
-    is
-       Max_Length : constant Positive := Source.Max_Length;
-       Slen       : constant Natural  := Source.Current_Length;
- 
-    begin
-       if Low > Slen + 1 then
-          raise Strings.Index_Error;
- 
-       elsif High < Low then
-          return Super_Insert (Source, Low, By, Drop);
- 
-       else
-          declare
-             Blen    : constant Natural := Natural'Max (0, Low - 1);
-             Alen    : constant Natural := Natural'Max (0, Slen - High);
-             Tlen    : constant Natural := Blen + By'Length + Alen;
-             Droplen : constant Integer := Tlen - Max_Length;
-             Result  : Super_String (Max_Length);
- 
-             --  Tlen is the total length of the result string before any
-             --  truncation. Blen and Alen are the lengths of the pieces
-             --  of the original string that end up in the result string
-             --  before and after the replaced slice.
- 
-          begin
-             if Droplen <= 0 then
-                Result.Current_Length := Tlen;
-                Result.Data (1 .. Blen) := Source.Data (1 .. Blen);
-                Result.Data (Low .. Low + By'Length - 1) := By;
-                Result.Data (Low + By'Length .. Tlen) :=
-                  Source.Data (High + 1 .. Slen);
- 
-             else
-                Result.Current_Length := Max_Length;
- 
-                case Drop is
-                   when Strings.Right =>
-                      Result.Data (1 .. Blen) := Source.Data (1 .. Blen);
- 
-                      if Droplen > Alen then
-                         Result.Data (Low .. Max_Length) :=
-                           By (By'First .. By'First + Max_Length - Low);
-                      else
-                         Result.Data (Low .. Low + By'Length - 1) := By;
-                         Result.Data (Low + By'Length .. Max_Length) :=
-                           Source.Data (High + 1 .. Slen - Droplen);
-                      end if;
- 
-                   when Strings.Left =>
-                      Result.Data (Max_Length - (Alen - 1) .. Max_Length) :=
-                        Source.Data (High + 1 .. Slen);
- 
-                      if Droplen >= Blen then
-                         Result.Data (1 .. Max_Length - Alen) :=
-                           By (By'Last - (Max_Length - Alen) + 1 .. By'Last);
-                      else
-                         Result.Data
-                           (Blen - Droplen + 1 .. Max_Length - Alen) := By;
-                         Result.Data (1 .. Blen - Droplen) :=
-                           Source.Data (Droplen + 1 .. Blen);
-                      end if;
- 
-                   when Strings.Error =>
-                      raise Ada.Strings.Length_Error;
-                end case;
-             end if;
- 
-             return Result;
-          end;
-       end if;
-    end Super_Replace_Slice;
- 
-    procedure Super_Replace_Slice
-      (Source   : in out Super_String;
-       Low      : Positive;
-       High     : Natural;
-       By       : String;
-       Drop     : Strings.Truncation := Strings.Error)
-    is
-    begin
-       --  We do a double copy here because this is one of the situations
-       --  in which we move data to the right, and at least at the moment,
-       --  GNAT is not handling such cases correctly ???
- 
-       Source := Super_Replace_Slice (Source, Low, High, By, Drop);
-    end Super_Replace_Slice;
- 
-    ---------------------
-    -- Super_Replicate --
-    ---------------------
- 
-    function Super_Replicate
-      (Count      : Natural;
-       Item       : Character;
-       Drop       : Truncation := Error;
-       Max_Length : Positive) return Super_String
-    is
-       Result : Super_String (Max_Length);
- 
-    begin
-       if Count <= Max_Length then
-          Result.Current_Length := Count;
- 
-       elsif Drop = Strings.Error then
-          raise Ada.Strings.Length_Error;
- 
-       else
-          Result.Current_Length := Max_Length;
-       end if;
- 
-       Result.Data (1 .. Result.Current_Length) := (others => Item);
-       return Result;
-    end Super_Replicate;
- 
-    function Super_Replicate
-      (Count      : Natural;
-       Item       : String;
-       Drop       : Truncation := Error;
-       Max_Length : Positive) return Super_String
-    is
-       Length : constant Integer := Count * Item'Length;
-       Result : Super_String (Max_Length);
-       Indx   : Positive;
- 
-    begin
-       if Length <= Max_Length then
-          Result.Current_Length := Length;
- 
-          if Length > 0 then
-             Indx := 1;
- 
-             for J in 1 .. Count loop
-                Result.Data (Indx .. Indx + Item'Length - 1) := Item;
-                Indx := Indx + Item'Length;
-             end loop;
-          end if;
- 
-       else
-          Result.Current_Length := Max_Length;
- 
-          case Drop is
-             when Strings.Right =>
-                Indx := 1;
- 
-                while Indx + Item'Length <= Max_Length + 1 loop
-                   Result.Data (Indx .. Indx + Item'Length - 1) := Item;
-                   Indx := Indx + Item'Length;
-                end loop;
- 
-                Result.Data (Indx .. Max_Length) :=
-                  Item (Item'First .. Item'First + Max_Length - Indx);
- 
-             when Strings.Left =>
-                Indx := Max_Length;
- 
-                while Indx - Item'Length >= 1 loop
-                   Result.Data (Indx - (Item'Length - 1) .. Indx) := Item;
-                   Indx := Indx - Item'Length;
-                end loop;
- 
-                Result.Data (1 .. Indx) :=
-                  Item (Item'Last - Indx + 1 .. Item'Last);
- 
-             when Strings.Error =>
-                raise Ada.Strings.Length_Error;
-          end case;
-       end if;
- 
-       return Result;
-    end Super_Replicate;
- 
-    function Super_Replicate
-      (Count : Natural;
-       Item  : Super_String;
-       Drop  : Strings.Truncation := Strings.Error) return Super_String
-    is
-    begin
-       return
-         Super_Replicate
-           (Count,
-            Item.Data (1 .. Item.Current_Length),
-            Drop,
-            Item.Max_Length);
-    end Super_Replicate;
- 
-    -----------------
-    -- Super_Slice --
-    -----------------
- 
-    function Super_Slice
-      (Source : Super_String;
-       Low    : Positive;
-       High   : Natural) return String
-    is
-    begin
-       --  Note: test of High > Length is in accordance with AI95-00128
- 
-       return R : String (Low .. High) do
-          if Low > Source.Current_Length + 1
-            or else High > Source.Current_Length
-          then
-             raise Index_Error;
-          end if;
- 
-          --  Note: in this case, superflat bounds are not a problem, we just
-          --  get the null string in accordance with normal Ada slice rules.
- 
-          R := Source.Data (Low .. High);
-       end return;
-    end Super_Slice;
- 
-    function Super_Slice
-      (Source : Super_String;
-       Low    : Positive;
-       High   : Natural) return Super_String
-    is
-    begin
-       return Result : Super_String (Source.Max_Length) do
-          if Low > Source.Current_Length + 1
-            or else High > Source.Current_Length
-          then
-             raise Index_Error;
-          end if;
- 
-          --  Note: the Max operation here deals with the superflat case
- 
-          Result.Current_Length := Integer'Max (0, High - Low + 1);
-          Result.Data (1 .. Result.Current_Length) := Source.Data (Low .. High);
-       end return;
-    end Super_Slice;
- 
-    procedure Super_Slice
-      (Source : Super_String;
-       Target : out Super_String;
-       Low    : Positive;
-       High   : Natural)
-    is
-    begin
-       if Low > Source.Current_Length + 1
-         or else High > Source.Current_Length
-       then
-          raise Index_Error;
-       end if;
- 
-       --  Note: the Max operation here deals with the superflat case
- 
-       Target.Current_Length := Integer'Max (0, High - Low + 1);
-       Target.Data (1 .. Target.Current_Length) := Source.Data (Low .. High);
-    end Super_Slice;
- 
-    ----------------
-    -- Super_Tail --
-    ----------------
- 
-    function Super_Tail
-      (Source : Super_String;
-       Count  : Natural;
-       Pad    : Character := Space;
-       Drop   : Strings.Truncation := Strings.Error) return Super_String
-    is
-       Max_Length : constant Positive := Source.Max_Length;
-       Result     : Super_String (Max_Length);
-       Slen       : constant Natural := Source.Current_Length;
-       Npad       : constant Integer := Count - Slen;
- 
-    begin
-       if Npad <= 0 then
-          Result.Current_Length := Count;
-          Result.Data (1 .. Count) :=
-            Source.Data (Slen - (Count - 1) .. Slen);
- 
-       elsif Count <= Max_Length then
-          Result.Current_Length := Count;
-          Result.Data (1 .. Npad) := (others => Pad);
-          Result.Data (Npad + 1 .. Count) := Source.Data (1 .. Slen);
- 
-       else
-          Result.Current_Length := Max_Length;
- 
-          case Drop is
-             when Strings.Right =>
-                if Npad >= Max_Length then
-                   Result.Data := (others => Pad);
- 
-                else
-                   Result.Data (1 .. Npad) := (others => Pad);
-                   Result.Data (Npad + 1 .. Max_Length) :=
-                     Source.Data (1 .. Max_Length - Npad);
-                end if;
- 
-             when Strings.Left =>
-                Result.Data (1 .. Max_Length - Slen) := (others => Pad);
-                Result.Data (Max_Length - Slen + 1 .. Max_Length) :=
-                  Source.Data (1 .. Slen);
- 
-             when Strings.Error =>
-                raise Ada.Strings.Length_Error;
-          end case;
-       end if;
- 
-       return Result;
-    end Super_Tail;
- 
-    procedure Super_Tail
-      (Source : in out Super_String;
-       Count  : Natural;
-       Pad    : Character := Space;
-       Drop   : Truncation := Error)
-    is
-       Max_Length : constant Positive := Source.Max_Length;
-       Slen       : constant Natural  := Source.Current_Length;
-       Npad       : constant Integer  := Count - Slen;
- 
-       Temp : constant String (1 .. Max_Length) := Source.Data;
- 
-    begin
-       if Npad <= 0 then
-          Source.Current_Length := Count;
-          Source.Data (1 .. Count) :=
-            Temp (Slen - (Count - 1) .. Slen);
- 
-       elsif Count <= Max_Length then
-          Source.Current_Length := Count;
-          Source.Data (1 .. Npad) := (others => Pad);
-          Source.Data (Npad + 1 .. Count) := Temp (1 .. Slen);
- 
-       else
-          Source.Current_Length := Max_Length;
- 
-          case Drop is
-             when Strings.Right =>
-                if Npad >= Max_Length then
-                   Source.Data := (others => Pad);
- 
-                else
-                   Source.Data (1 .. Npad) := (others => Pad);
-                   Source.Data (Npad + 1 .. Max_Length) :=
-                     Temp (1 .. Max_Length - Npad);
-                end if;
- 
-             when Strings.Left =>
-                for J in 1 .. Max_Length - Slen loop
-                   Source.Data (J) := Pad;
-                end loop;
- 
-                Source.Data (Max_Length - Slen + 1 .. Max_Length) :=
-                  Temp (1 .. Slen);
- 
-             when Strings.Error =>
-                raise Ada.Strings.Length_Error;
-          end case;
-       end if;
-    end Super_Tail;
- 
-    ---------------------
-    -- Super_To_String --
-    ---------------------
- 
-    function Super_To_String (Source : Super_String) return String is
-    begin
-       return R : String (1 .. Source.Current_Length) do
-          R := Source.Data (1 .. Source.Current_Length);
-       end return;
-    end Super_To_String;
- 
-    ---------------------
-    -- Super_Translate --
-    ---------------------
- 
-    function Super_Translate
-      (Source  : Super_String;
-       Mapping : Maps.Character_Mapping) return Super_String
-    is
-       Result : Super_String (Source.Max_Length);
- 
-    begin
-       Result.Current_Length := Source.Current_Length;
- 
-       for J in 1 .. Source.Current_Length loop
-          Result.Data (J) := Value (Mapping, Source.Data (J));
-       end loop;
- 
-       return Result;
-    end Super_Translate;
- 
-    procedure Super_Translate
-      (Source  : in out Super_String;
-       Mapping : Maps.Character_Mapping)
-    is
-    begin
-       for J in 1 .. Source.Current_Length loop
-          Source.Data (J) := Value (Mapping, Source.Data (J));
-       end loop;
-    end Super_Translate;
- 
-    function Super_Translate
-      (Source  : Super_String;
-       Mapping : Maps.Character_Mapping_Function) return Super_String
-    is
-       Result : Super_String (Source.Max_Length);
- 
-    begin
-       Result.Current_Length := Source.Current_Length;
- 
-       for J in 1 .. Source.Current_Length loop
-          Result.Data (J) := Mapping.all (Source.Data (J));
-       end loop;
- 
-       return Result;
-    end Super_Translate;
- 
-    procedure Super_Translate
-      (Source  : in out Super_String;
-       Mapping : Maps.Character_Mapping_Function)
-    is
-    begin
-       for J in 1 .. Source.Current_Length loop
-          Source.Data (J) := Mapping.all (Source.Data (J));
-       end loop;
-    end Super_Translate;
- 
-    ----------------
-    -- Super_Trim --
-    ----------------
- 
-    function Super_Trim
-      (Source : Super_String;
-       Side   : Trim_End) return Super_String
-    is
-       Result : Super_String (Source.Max_Length);
-       Last   : Natural := Source.Current_Length;
-       First  : Positive := 1;
- 
-    begin
-       if Side = Left or else Side = Both then
-          while First <= Last and then Source.Data (First) = ' ' loop
-             First := First + 1;
-          end loop;
-       end if;
- 
-       if Side = Right or else Side = Both then
-          while Last >= First and then Source.Data (Last) = ' ' loop
-             Last := Last - 1;
-          end loop;
-       end if;
- 
-       Result.Current_Length := Last - First + 1;
-       Result.Data (1 .. Result.Current_Length) := Source.Data (First .. Last);
-       return Result;
-    end Super_Trim;
- 
-    procedure Super_Trim
-      (Source : in out Super_String;
-       Side   : Trim_End)
-    is
-       Max_Length : constant Positive := Source.Max_Length;
-       Last       : Natural           := Source.Current_Length;
-       First      : Positive          := 1;
-       Temp       : String (1 .. Max_Length);
- 
-    begin
-       Temp (1 .. Last) := Source.Data (1 .. Last);
- 
-       if Side = Left or else Side = Both then
-          while First <= Last and then Temp (First) = ' ' loop
-             First := First + 1;
-          end loop;
-       end if;
- 
-       if Side = Right or else Side = Both then
-          while Last >= First and then Temp (Last) = ' ' loop
-             Last := Last - 1;
-          end loop;
-       end if;
- 
-       Source.Current_Length := Last - First + 1;
-       Source.Data (1 .. Source.Current_Length) := Temp (First .. Last);
-    end Super_Trim;
- 
-    function Super_Trim
-      (Source : Super_String;
-       Left   : Maps.Character_Set;
-       Right  : Maps.Character_Set) return Super_String
-    is
-       Result : Super_String (Source.Max_Length);
- 
-    begin
-       for First in 1 .. Source.Current_Length loop
-          if not Is_In (Source.Data (First), Left) then
-             for Last in reverse First .. Source.Current_Length loop
-                if not Is_In (Source.Data (Last), Right) then
-                   Result.Current_Length := Last - First + 1;
-                   Result.Data (1 .. Result.Current_Length) :=
-                     Source.Data (First .. Last);
-                   return Result;
-                end if;
-             end loop;
-          end if;
-       end loop;
- 
-       Result.Current_Length := 0;
-       return Result;
-    end Super_Trim;
- 
-    procedure Super_Trim
-      (Source : in out Super_String;
-       Left   : Maps.Character_Set;
-       Right  : Maps.Character_Set)
-    is
-    begin
-       for First in 1 .. Source.Current_Length loop
-          if not Is_In (Source.Data (First), Left) then
-             for Last in reverse First .. Source.Current_Length loop
-                if not Is_In (Source.Data (Last), Right) then
-                   if First = 1 then
-                      Source.Current_Length := Last;
-                      return;
-                   else
-                      Source.Current_Length := Last - First + 1;
-                      Source.Data (1 .. Source.Current_Length) :=
-                        Source.Data (First .. Last);
-                      return;
-                   end if;
-                end if;
-             end loop;
- 
-             Source.Current_Length := 0;
-             return;
-          end if;
-       end loop;
- 
-       Source.Current_Length := 0;
-    end Super_Trim;
- 
-    -----------
-    -- Times --
-    -----------
- 
-    function Times
-      (Left       : Natural;
-       Right      : Character;
-       Max_Length : Positive) return Super_String
-    is
-       Result : Super_String (Max_Length);
- 
-    begin
-       if Left > Max_Length then
-          raise Ada.Strings.Length_Error;
- 
-       else
-          Result.Current_Length := Left;
- 
-          for J in 1 .. Left loop
-             Result.Data (J) := Right;
-          end loop;
-       end if;
- 
-       return Result;
-    end Times;
- 
-    function Times
-      (Left       : Natural;
-       Right      : String;
-       Max_Length : Positive) return Super_String
-    is
-       Result : Super_String (Max_Length);
-       Pos    : Positive         := 1;
-       Rlen   : constant Natural := Right'Length;
-       Nlen   : constant Natural := Left * Rlen;
- 
-    begin
-       if Nlen > Max_Length then
-          raise Ada.Strings.Length_Error;
- 
-       else
-          Result.Current_Length := Nlen;
- 
-          if Nlen > 0 then
-             for J in 1 .. Left loop
-                Result.Data (Pos .. Pos + Rlen - 1) := Right;
-                Pos := Pos + Rlen;
-             end loop;
-          end if;
-       end if;
- 
-       return Result;
-    end Times;
- 
-    function Times
-      (Left  : Natural;
-       Right : Super_String) return Super_String
-    is
-       Result : Super_String (Right.Max_Length);
-       Pos    : Positive := 1;
-       Rlen   : constant Natural := Right.Current_Length;
-       Nlen   : constant Natural := Left * Rlen;
- 
-    begin
-       if Nlen > Right.Max_Length then
-          raise Ada.Strings.Length_Error;
- 
-       else
-          Result.Current_Length := Nlen;
- 
-          if Nlen > 0 then
-             for J in 1 .. Left loop
-                Result.Data (Pos .. Pos + Rlen - 1) :=
-                  Right.Data (1 .. Rlen);
-                Pos := Pos + Rlen;
-             end loop;
-          end if;
-       end if;
- 
-       return Result;
-    end Times;
- 
-    ---------------------
-    -- To_Super_String --
-    ---------------------
- 
-    function To_Super_String
-      (Source     : String;
-       Max_Length : Natural;
-       Drop       : Truncation := Error) return Super_String
-    is
-       Result : Super_String (Max_Length);
-       Slen   : constant Natural := Source'Length;
- 
-    begin
-       if Slen <= Max_Length then
-          Result.Current_Length := Slen;
-          Result.Data (1 .. Slen) := Source;
- 
-       else
-          case Drop is
-             when Strings.Right =>
-                Result.Current_Length := Max_Length;
-                Result.Data (1 .. Max_Length) :=
-                  Source (Source'First .. Source'First - 1 + Max_Length);
- 
-             when Strings.Left =>
-                Result.Current_Length := Max_Length;
-                Result.Data (1 .. Max_Length) :=
-                  Source (Source'Last - (Max_Length - 1) .. Source'Last);
- 
-             when Strings.Error =>
-                raise Ada.Strings.Length_Error;
-          end case;
-       end if;
- 
-       return Result;
-    end To_Super_String;
- 
- end Ada.Strings.Superbounded;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-strsup.ads gcc-8.1.0/gcc/ada/a-strsup.ads
*** gcc-7.3.0/gcc/ada/a-strsup.ads	Fri Mar  9 14:50:48 2012
--- gcc-8.1.0/gcc/ada/a-strsup.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,493 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --             A D A . S T R I N G S . S U P E R B O U N D E D              --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2003-2012, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 non generic package contains most of the implementation of the
- --  generic package Ada.Strings.Bounded.Generic_Bounded_Length.
- 
- --  It defines type Super_String as a discriminated record with the maximum
- --  length as the discriminant. Individual instantiations of Strings.Bounded
- --  use this type with an appropriate discriminant value set.
- 
- with Ada.Strings.Maps;
- 
- package Ada.Strings.Superbounded is
-    pragma Preelaborate;
- 
-    --  Type Bounded_String in Ada.Strings.Bounded.Generic_Bounded_Length is
-    --  derived from Super_String, with the constraint of the maximum length.
- 
-    type Super_String (Max_Length : Positive) is record
-       Current_Length : Natural := 0;
-       Data           : String (1 .. Max_Length);
-       --  A previous version had a default initial value for Data, which is
-       --  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_String, except that they have different names, so
-    --  that they can be renamed in Ada.Strings.Bounded.Generic_Bounded_Length.
- 
-    function Super_Length (Source : Super_String) return Natural;
- 
-    --------------------------------------------------------
-    -- Conversion, Concatenation, and Selection Functions --
-    --------------------------------------------------------
- 
-    function To_Super_String
-      (Source     : String;
-       Max_Length : Natural;
-       Drop       : Truncation := Error) return Super_String;
-    --  Note the additional parameter Max_Length, which specifies the maximum
-    --  length setting of the resulting Super_String value.
- 
-    --  The following procedures have declarations (and semantics) that are
-    --  exactly analogous to those declared in Ada.Strings.Bounded.
- 
-    function Super_To_String (Source : Super_String) return String;
- 
-    procedure Set_Super_String
-      (Target : out Super_String;
-       Source : String;
-       Drop   : Truncation := Error);
- 
-    function Super_Append
-      (Left  : Super_String;
-       Right : Super_String;
-       Drop  : Truncation  := Error) return Super_String;
- 
-    function Super_Append
-      (Left  : Super_String;
-       Right : String;
-       Drop  : Truncation := Error) return Super_String;
- 
-    function Super_Append
-      (Left  : String;
-       Right : Super_String;
-       Drop  : Truncation := Error) return Super_String;
- 
-    function Super_Append
-      (Left  : Super_String;
-       Right : Character;
-       Drop  : Truncation := Error) return Super_String;
- 
-    function Super_Append
-      (Left  : Character;
-       Right : Super_String;
-       Drop  : Truncation := Error) return Super_String;
- 
-    procedure Super_Append
-      (Source   : in out Super_String;
-       New_Item : Super_String;
-       Drop     : Truncation  := Error);
- 
-    procedure Super_Append
-      (Source   : in out Super_String;
-       New_Item : String;
-       Drop     : Truncation  := Error);
- 
-    procedure Super_Append
-      (Source   : in out Super_String;
-       New_Item : Character;
-       Drop     : Truncation  := Error);
- 
-    function Concat
-      (Left  : Super_String;
-       Right : Super_String) return Super_String;
- 
-    function Concat
-      (Left  : Super_String;
-       Right : String) return Super_String;
- 
-    function Concat
-      (Left  : String;
-       Right : Super_String) return Super_String;
- 
-    function Concat
-      (Left  : Super_String;
-       Right : Character) return Super_String;
- 
-    function Concat
-      (Left  : Character;
-       Right : Super_String) return Super_String;
- 
-    function Super_Element
-      (Source : Super_String;
-       Index  : Positive) return Character;
- 
-    procedure Super_Replace_Element
-      (Source : in out Super_String;
-       Index  : Positive;
-       By     : Character);
- 
-    function Super_Slice
-      (Source : Super_String;
-       Low    : Positive;
-       High   : Natural) return String;
- 
-    function Super_Slice
-      (Source : Super_String;
-       Low    : Positive;
-       High   : Natural) return Super_String;
- 
-    procedure Super_Slice
-      (Source : Super_String;
-       Target : out Super_String;
-       Low    : Positive;
-       High   : Natural);
- 
-    function "="
-      (Left  : Super_String;
-       Right : Super_String) return Boolean;
- 
-    function Equal
-      (Left  : Super_String;
-       Right : Super_String) return Boolean renames "=";
- 
-    function Equal
-      (Left  : Super_String;
-       Right : String) return Boolean;
- 
-    function Equal
-      (Left  : String;
-       Right : Super_String) return Boolean;
- 
-    function Less
-      (Left  : Super_String;
-       Right : Super_String) return Boolean;
- 
-    function Less
-      (Left  : Super_String;
-       Right : String) return Boolean;
- 
-    function Less
-      (Left  : String;
-       Right : Super_String) return Boolean;
- 
-    function Less_Or_Equal
-      (Left  : Super_String;
-       Right : Super_String) return Boolean;
- 
-    function Less_Or_Equal
-      (Left  : Super_String;
-       Right : String) return Boolean;
- 
-    function Less_Or_Equal
-      (Left  : String;
-       Right : Super_String) return Boolean;
- 
-    function Greater
-      (Left  : Super_String;
-       Right : Super_String) return Boolean;
- 
-    function Greater
-      (Left  : Super_String;
-       Right : String) return Boolean;
- 
-    function Greater
-      (Left  : String;
-       Right : Super_String) return Boolean;
- 
-    function Greater_Or_Equal
-      (Left  : Super_String;
-       Right : Super_String) return Boolean;
- 
-    function Greater_Or_Equal
-      (Left  : Super_String;
-       Right : String) return Boolean;
- 
-    function Greater_Or_Equal
-      (Left  : String;
-       Right : Super_String) return Boolean;
- 
-    ----------------------
-    -- Search Functions --
-    ----------------------
- 
-    function Super_Index
-      (Source  : Super_String;
-       Pattern : String;
-       Going   : Direction := Forward;
-       Mapping : Maps.Character_Mapping := Maps.Identity) return Natural;
- 
-    function Super_Index
-      (Source  : Super_String;
-       Pattern : String;
-       Going   : Direction := Forward;
-       Mapping : Maps.Character_Mapping_Function) return Natural;
- 
-    function Super_Index
-      (Source : Super_String;
-       Set    : Maps.Character_Set;
-       Test   : Membership := Inside;
-       Going  : Direction  := Forward) return Natural;
- 
-    function Super_Index
-      (Source  : Super_String;
-       Pattern : String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Maps.Character_Mapping := Maps.Identity) return Natural;
- 
-    function Super_Index
-      (Source  : Super_String;
-       Pattern : String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Maps.Character_Mapping_Function) return Natural;
- 
-    function Super_Index
-      (Source : Super_String;
-       Set    : Maps.Character_Set;
-       From   : Positive;
-       Test   : Membership := Inside;
-       Going  : Direction := Forward) return Natural;
- 
-    function Super_Index_Non_Blank
-      (Source : Super_String;
-       Going  : Direction := Forward) return Natural;
- 
-    function Super_Index_Non_Blank
-      (Source : Super_String;
-       From   : Positive;
-       Going  : Direction := Forward) return Natural;
- 
-    function Super_Count
-      (Source  : Super_String;
-       Pattern : String;
-       Mapping : Maps.Character_Mapping := Maps.Identity) return Natural;
- 
-    function Super_Count
-      (Source  : Super_String;
-       Pattern : String;
-       Mapping : Maps.Character_Mapping_Function) return Natural;
- 
-    function Super_Count
-      (Source : Super_String;
-       Set    : Maps.Character_Set) return Natural;
- 
-    procedure Super_Find_Token
-      (Source : Super_String;
-       Set    : Maps.Character_Set;
-       From   : Positive;
-       Test   : Membership;
-       First  : out Positive;
-       Last   : out Natural);
- 
-    procedure Super_Find_Token
-      (Source : Super_String;
-       Set    : Maps.Character_Set;
-       Test   : Membership;
-       First  : out Positive;
-       Last   : out Natural);
- 
-    ------------------------------------
-    -- String Translation Subprograms --
-    ------------------------------------
- 
-    function Super_Translate
-      (Source  : Super_String;
-       Mapping : Maps.Character_Mapping) return Super_String;
- 
-    procedure Super_Translate
-      (Source   : in out Super_String;
-       Mapping  : Maps.Character_Mapping);
- 
-    function Super_Translate
-      (Source  : Super_String;
-       Mapping : Maps.Character_Mapping_Function) return Super_String;
- 
-    procedure Super_Translate
-      (Source  : in out Super_String;
-       Mapping : Maps.Character_Mapping_Function);
- 
-    ---------------------------------------
-    -- String Transformation Subprograms --
-    ---------------------------------------
- 
-    function Super_Replace_Slice
-      (Source : Super_String;
-       Low    : Positive;
-       High   : Natural;
-       By     : String;
-       Drop   : Truncation := Error) return Super_String;
- 
-    procedure Super_Replace_Slice
-      (Source  : in out Super_String;
-       Low     : Positive;
-       High    : Natural;
-       By      : String;
-       Drop    : Truncation := Error);
- 
-    function Super_Insert
-      (Source   : Super_String;
-       Before   : Positive;
-       New_Item : String;
-       Drop     : Truncation := Error) return Super_String;
- 
-    procedure Super_Insert
-      (Source   : in out Super_String;
-       Before   : Positive;
-       New_Item : String;
-       Drop     : Truncation := Error);
- 
-    function Super_Overwrite
-      (Source   : Super_String;
-       Position : Positive;
-       New_Item : String;
-       Drop     : Truncation := Error) return Super_String;
- 
-    procedure Super_Overwrite
-      (Source    : in out Super_String;
-       Position  : Positive;
-       New_Item  : String;
-       Drop      : Truncation := Error);
- 
-    function Super_Delete
-      (Source  : Super_String;
-       From    : Positive;
-       Through : Natural) return Super_String;
- 
-    procedure Super_Delete
-      (Source  : in out Super_String;
-       From    : Positive;
-       Through : Natural);
- 
-    ---------------------------------
-    -- String Selector Subprograms --
-    ---------------------------------
- 
-    function Super_Trim
-      (Source : Super_String;
-       Side   : Trim_End) return Super_String;
- 
-    procedure Super_Trim
-      (Source : in out Super_String;
-       Side   : Trim_End);
- 
-    function Super_Trim
-      (Source : Super_String;
-       Left   : Maps.Character_Set;
-       Right  : Maps.Character_Set) return Super_String;
- 
-    procedure Super_Trim
-      (Source : in out Super_String;
-       Left   : Maps.Character_Set;
-       Right  : Maps.Character_Set);
- 
-    function Super_Head
-      (Source : Super_String;
-       Count  : Natural;
-       Pad    : Character := Space;
-       Drop   : Truncation := Error) return Super_String;
- 
-    procedure Super_Head
-      (Source : in out Super_String;
-       Count  : Natural;
-       Pad    : Character := Space;
-       Drop   : Truncation := Error);
- 
-    function Super_Tail
-      (Source : Super_String;
-       Count  : Natural;
-       Pad    : Character := Space;
-       Drop   : Truncation := Error) return Super_String;
- 
-    procedure Super_Tail
-      (Source : in out Super_String;
-       Count  : Natural;
-       Pad    : Character := Space;
-       Drop   : Truncation := Error);
- 
-    ------------------------------------
-    -- String Constructor Subprograms --
-    ------------------------------------
- 
-    --  Note: in some of the following routines, there is an extra parameter
-    --  Max_Length which specifies the value of the maximum length for the
-    --  resulting Super_String value.
- 
-    function Times
-      (Left       : Natural;
-       Right      : Character;
-       Max_Length : Positive) return Super_String;
-    --  Note the additional parameter Max_Length
- 
-    function Times
-      (Left       : Natural;
-       Right      : String;
-       Max_Length : Positive) return Super_String;
-    --  Note the additional parameter Max_Length
- 
-    function Times
-      (Left  : Natural;
-       Right : Super_String) return Super_String;
- 
-    function Super_Replicate
-      (Count      : Natural;
-       Item       : Character;
-       Drop       : Truncation := Error;
-       Max_Length : Positive) return Super_String;
-    --  Note the additional parameter Max_Length
- 
-    function Super_Replicate
-      (Count      : Natural;
-       Item       : String;
-       Drop       : Truncation := Error;
-       Max_Length : Positive) return Super_String;
-    --  Note the additional parameter Max_Length
- 
-    function Super_Replicate
-      (Count : Natural;
-       Item  : Super_String;
-       Drop  : Truncation := Error) return Super_String;
- 
- private
-       --  Pragma Inline declarations
- 
-       pragma Inline ("=");
-       pragma Inline (Less);
-       pragma Inline (Less_Or_Equal);
-       pragma Inline (Greater);
-       pragma Inline (Greater_Or_Equal);
-       pragma Inline (Concat);
-       pragma Inline (Super_Count);
-       pragma Inline (Super_Element);
-       pragma Inline (Super_Find_Token);
-       pragma Inline (Super_Index);
-       pragma Inline (Super_Index_Non_Blank);
-       pragma Inline (Super_Length);
-       pragma Inline (Super_Replace_Element);
-       pragma Inline (Super_Slice);
-       pragma Inline (Super_To_String);
- 
- end Ada.Strings.Superbounded;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-strunb-shared.adb gcc-8.1.0/gcc/ada/a-strunb-shared.adb
*** gcc-7.3.0/gcc/ada/a-strunb-shared.adb	Wed Oct 12 12:59:57 2016
--- gcc-8.1.0/gcc/ada/a-strunb-shared.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,2115 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                 A D A . S T R I N G S . U N B O U N D E D                --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Strings.Search;
- with Ada.Unchecked_Deallocation;
- 
- package body Ada.Strings.Unbounded is
- 
-    use Ada.Strings.Maps;
- 
-    Growth_Factor : constant := 32;
-    --  The growth factor controls how much extra space is allocated when
-    --  we have to increase the size of an allocated unbounded string. By
-    --  allocating extra space, we avoid the need to reallocate on every
-    --  append, particularly important when a string is built up by repeated
-    --  append operations of small pieces. This is expressed as a factor so
-    --  32 means add 1/32 of the length of the string as growth space.
- 
-    Min_Mul_Alloc : constant := Standard'Maximum_Alignment;
-    --  Allocation will be done by a multiple of Min_Mul_Alloc. This causes
-    --  no memory loss as most (all?) malloc implementations are obliged to
-    --  align the returned memory on the maximum alignment as malloc does not
-    --  know the target alignment.
- 
-    function Aligned_Max_Length (Max_Length : Natural) return Natural;
-    --  Returns recommended length of the shared string which is greater or
-    --  equal to specified length. Calculation take in sense alignment of the
-    --  allocated memory segments to use memory effectively by Append/Insert/etc
-    --  operations.
- 
-    ---------
-    -- "&" --
-    ---------
- 
-    function "&"
-      (Left  : Unbounded_String;
-       Right : Unbounded_String) return Unbounded_String
-    is
-       LR : constant Shared_String_Access := Left.Reference;
-       RR : constant Shared_String_Access := Right.Reference;
-       DL : constant Natural := LR.Last + RR.Last;
-       DR : Shared_String_Access;
- 
-    begin
-       --  Result is an empty string, reuse shared empty string
- 
-       if DL = 0 then
-          Reference (Empty_Shared_String'Access);
-          DR := Empty_Shared_String'Access;
- 
-       --  Left string is empty, return Right string
- 
-       elsif LR.Last = 0 then
-          Reference (RR);
-          DR := RR;
- 
-       --  Right string is empty, return Left string
- 
-       elsif RR.Last = 0 then
-          Reference (LR);
-          DR := LR;
- 
-       --  Otherwise, allocate new shared string and fill data
- 
-       else
-          DR := Allocate (DL);
-          DR.Data (1 .. LR.Last) := LR.Data (1 .. LR.Last);
-          DR.Data (LR.Last + 1 .. DL) := RR.Data (1 .. RR.Last);
-          DR.Last := DL;
-       end if;
- 
-       return (AF.Controlled with Reference => DR);
-    end "&";
- 
-    function "&"
-      (Left  : Unbounded_String;
-       Right : String) return Unbounded_String
-    is
-       LR : constant Shared_String_Access := Left.Reference;
-       DL : constant Natural := LR.Last + Right'Length;
-       DR : Shared_String_Access;
- 
-    begin
-       --  Result is an empty string, reuse shared empty string
- 
-       if DL = 0 then
-          Reference (Empty_Shared_String'Access);
-          DR := Empty_Shared_String'Access;
- 
-       --  Right is an empty string, return Left string
- 
-       elsif Right'Length = 0 then
-          Reference (LR);
-          DR := LR;
- 
-       --  Otherwise, allocate new shared string and fill it
- 
-       else
-          DR := Allocate (DL);
-          DR.Data (1 .. LR.Last) := LR.Data (1 .. LR.Last);
-          DR.Data (LR.Last + 1 .. DL) := Right;
-          DR.Last := DL;
-       end if;
- 
-       return (AF.Controlled with Reference => DR);
-    end "&";
- 
-    function "&"
-      (Left  : String;
-       Right : Unbounded_String) return Unbounded_String
-    is
-       RR : constant Shared_String_Access := Right.Reference;
-       DL : constant Natural := Left'Length + RR.Last;
-       DR : Shared_String_Access;
- 
-    begin
-       --  Result is an empty string, reuse shared one
- 
-       if DL = 0 then
-          Reference (Empty_Shared_String'Access);
-          DR := Empty_Shared_String'Access;
- 
-       --  Left is empty string, return Right string
- 
-       elsif Left'Length = 0 then
-          Reference (RR);
-          DR := RR;
- 
-       --  Otherwise, allocate new shared string and fill it
- 
-       else
-          DR := Allocate (DL);
-          DR.Data (1 .. Left'Length) := Left;
-          DR.Data (Left'Length + 1 .. DL) := RR.Data (1 .. RR.Last);
-          DR.Last := DL;
-       end if;
- 
-       return (AF.Controlled with Reference => DR);
-    end "&";
- 
-    function "&"
-      (Left  : Unbounded_String;
-       Right : Character) return Unbounded_String
-    is
-       LR : constant Shared_String_Access := Left.Reference;
-       DL : constant Natural := LR.Last + 1;
-       DR : Shared_String_Access;
- 
-    begin
-       DR := Allocate (DL);
-       DR.Data (1 .. LR.Last) := LR.Data (1 .. LR.Last);
-       DR.Data (DL) := Right;
-       DR.Last := DL;
- 
-       return (AF.Controlled with Reference => DR);
-    end "&";
- 
-    function "&"
-      (Left  : Character;
-       Right : Unbounded_String) return Unbounded_String
-    is
-       RR : constant Shared_String_Access := Right.Reference;
-       DL : constant Natural := 1 + RR.Last;
-       DR : Shared_String_Access;
- 
-    begin
-       DR := Allocate (DL);
-       DR.Data (1) := Left;
-       DR.Data (2 .. DL) := RR.Data (1 .. RR.Last);
-       DR.Last := DL;
- 
-       return (AF.Controlled with Reference => DR);
-    end "&";
- 
-    ---------
-    -- "*" --
-    ---------
- 
-    function "*"
-      (Left  : Natural;
-       Right : Character) return Unbounded_String
-    is
-       DR : Shared_String_Access;
- 
-    begin
-       --  Result is an empty string, reuse shared empty string
- 
-       if Left = 0 then
-          Reference (Empty_Shared_String'Access);
-          DR := Empty_Shared_String'Access;
- 
-       --  Otherwise, allocate new shared string and fill it
- 
-       else
-          DR := Allocate (Left);
- 
-          for J in 1 .. Left loop
-             DR.Data (J) := Right;
-          end loop;
- 
-          DR.Last := Left;
-       end if;
- 
-       return (AF.Controlled with Reference => DR);
-    end "*";
- 
-    function "*"
-      (Left  : Natural;
-       Right : String) return Unbounded_String
-    is
-       DL : constant Natural := Left * Right'Length;
-       DR : Shared_String_Access;
-       K  : Positive;
- 
-    begin
-       --  Result is an empty string, reuse shared empty string
- 
-       if DL = 0 then
-          Reference (Empty_Shared_String'Access);
-          DR := Empty_Shared_String'Access;
- 
-       --  Otherwise, allocate new shared string and fill it
- 
-       else
-          DR := Allocate (DL);
-          K := 1;
- 
-          for J in 1 .. Left loop
-             DR.Data (K .. K + Right'Length - 1) := Right;
-             K := K + Right'Length;
-          end loop;
- 
-          DR.Last := DL;
-       end if;
- 
-       return (AF.Controlled with Reference => DR);
-    end "*";
- 
-    function "*"
-      (Left  : Natural;
-       Right : Unbounded_String) return Unbounded_String
-    is
-       RR : constant Shared_String_Access := Right.Reference;
-       DL : constant Natural := Left * RR.Last;
-       DR : Shared_String_Access;
-       K  : Positive;
- 
-    begin
-       --  Result is an empty string, reuse shared empty string
- 
-       if DL = 0 then
-          Reference (Empty_Shared_String'Access);
-          DR := Empty_Shared_String'Access;
- 
-       --  Coefficient is one, just return string itself
- 
-       elsif Left = 1 then
-          Reference (RR);
-          DR := RR;
- 
-       --  Otherwise, allocate new shared string and fill it
- 
-       else
-          DR := Allocate (DL);
-          K := 1;
- 
-          for J in 1 .. Left loop
-             DR.Data (K .. K + RR.Last - 1) := RR.Data (1 .. RR.Last);
-             K := K + RR.Last;
-          end loop;
- 
-          DR.Last := DL;
-       end if;
- 
-       return (AF.Controlled with Reference => DR);
-    end "*";
- 
-    ---------
-    -- "<" --
-    ---------
- 
-    function "<"
-      (Left  : Unbounded_String;
-       Right : Unbounded_String) return Boolean
-    is
-       LR : constant Shared_String_Access := Left.Reference;
-       RR : constant Shared_String_Access := Right.Reference;
-    begin
-       return LR.Data (1 .. LR.Last) < RR.Data (1 .. RR.Last);
-    end "<";
- 
-    function "<"
-      (Left  : Unbounded_String;
-       Right : String) return Boolean
-    is
-       LR : constant Shared_String_Access := Left.Reference;
-    begin
-       return LR.Data (1 .. LR.Last) < Right;
-    end "<";
- 
-    function "<"
-      (Left  : String;
-       Right : Unbounded_String) return Boolean
-    is
-       RR : constant Shared_String_Access := Right.Reference;
-    begin
-       return Left < RR.Data (1 .. RR.Last);
-    end "<";
- 
-    ----------
-    -- "<=" --
-    ----------
- 
-    function "<="
-      (Left  : Unbounded_String;
-       Right : Unbounded_String) return Boolean
-    is
-       LR : constant Shared_String_Access := Left.Reference;
-       RR : constant Shared_String_Access := Right.Reference;
- 
-    begin
-       --  LR = RR means two strings shares shared string, thus they are equal
- 
-       return LR = RR or else LR.Data (1 .. LR.Last) <= RR.Data (1 .. RR.Last);
-    end "<=";
- 
-    function "<="
-      (Left  : Unbounded_String;
-       Right : String) return Boolean
-    is
-       LR : constant Shared_String_Access := Left.Reference;
-    begin
-       return LR.Data (1 .. LR.Last) <= Right;
-    end "<=";
- 
-    function "<="
-      (Left  : String;
-       Right : Unbounded_String) return Boolean
-    is
-       RR : constant Shared_String_Access := Right.Reference;
-    begin
-       return Left <= RR.Data (1 .. RR.Last);
-    end "<=";
- 
-    ---------
-    -- "=" --
-    ---------
- 
-    function "="
-      (Left  : Unbounded_String;
-       Right : Unbounded_String) return Boolean
-    is
-       LR : constant Shared_String_Access := Left.Reference;
-       RR : constant Shared_String_Access := Right.Reference;
- 
-    begin
-       return LR = RR or else LR.Data (1 .. LR.Last) = RR.Data (1 .. RR.Last);
-       --  LR = RR means two strings shares shared string, thus they are equal
-    end "=";
- 
-    function "="
-      (Left  : Unbounded_String;
-       Right : String) return Boolean
-    is
-       LR : constant Shared_String_Access := Left.Reference;
-    begin
-       return LR.Data (1 .. LR.Last) = Right;
-    end "=";
- 
-    function "="
-      (Left  : String;
-       Right : Unbounded_String) return Boolean
-    is
-       RR : constant Shared_String_Access := Right.Reference;
-    begin
-       return Left = RR.Data (1 .. RR.Last);
-    end "=";
- 
-    ---------
-    -- ">" --
-    ---------
- 
-    function ">"
-      (Left  : Unbounded_String;
-       Right : Unbounded_String) return Boolean
-    is
-       LR : constant Shared_String_Access := Left.Reference;
-       RR : constant Shared_String_Access := Right.Reference;
-    begin
-       return LR.Data (1 .. LR.Last) > RR.Data (1 .. RR.Last);
-    end ">";
- 
-    function ">"
-      (Left  : Unbounded_String;
-       Right : String) return Boolean
-    is
-       LR : constant Shared_String_Access := Left.Reference;
-    begin
-       return LR.Data (1 .. LR.Last) > Right;
-    end ">";
- 
-    function ">"
-      (Left  : String;
-       Right : Unbounded_String) return Boolean
-    is
-       RR : constant Shared_String_Access := Right.Reference;
-    begin
-       return Left > RR.Data (1 .. RR.Last);
-    end ">";
- 
-    ----------
-    -- ">=" --
-    ----------
- 
-    function ">="
-      (Left  : Unbounded_String;
-       Right : Unbounded_String) return Boolean
-    is
-       LR : constant Shared_String_Access := Left.Reference;
-       RR : constant Shared_String_Access := Right.Reference;
- 
-    begin
-       --  LR = RR means two strings shares shared string, thus they are equal
- 
-       return LR = RR or else LR.Data (1 .. LR.Last) >= RR.Data (1 .. RR.Last);
-    end ">=";
- 
-    function ">="
-      (Left  : Unbounded_String;
-       Right : String) return Boolean
-    is
-       LR : constant Shared_String_Access := Left.Reference;
-    begin
-       return LR.Data (1 .. LR.Last) >= Right;
-    end ">=";
- 
-    function ">="
-      (Left  : String;
-       Right : Unbounded_String) return Boolean
-    is
-       RR : constant Shared_String_Access := Right.Reference;
-    begin
-       return Left >= RR.Data (1 .. RR.Last);
-    end ">=";
- 
-    ------------
-    -- Adjust --
-    ------------
- 
-    procedure Adjust (Object : in out Unbounded_String) is
-    begin
-       Reference (Object.Reference);
-    end Adjust;
- 
-    ------------------------
-    -- Aligned_Max_Length --
-    ------------------------
- 
-    function Aligned_Max_Length (Max_Length : Natural) return Natural is
-       Static_Size : constant Natural :=
-         Empty_Shared_String'Size / Standard'Storage_Unit;
-       --  Total size of all static components
- 
-    begin
-       return
-         ((Static_Size + Max_Length - 1) / Min_Mul_Alloc + 2) * Min_Mul_Alloc
-            - Static_Size;
-    end Aligned_Max_Length;
- 
-    --------------
-    -- Allocate --
-    --------------
- 
-    function Allocate
-      (Max_Length : Natural) return not null Shared_String_Access
-    is
-    begin
-       --  Empty string requested, return shared empty string
- 
-       if Max_Length = 0 then
-          Reference (Empty_Shared_String'Access);
-          return Empty_Shared_String'Access;
- 
-       --  Otherwise, allocate requested space (and probably some more room)
- 
-       else
-          return new Shared_String (Aligned_Max_Length (Max_Length));
-       end if;
-    end Allocate;
- 
-    ------------
-    -- Append --
-    ------------
- 
-    procedure Append
-      (Source   : in out Unbounded_String;
-       New_Item : Unbounded_String)
-    is
-       SR  : constant Shared_String_Access := Source.Reference;
-       NR  : constant Shared_String_Access := New_Item.Reference;
-       DL  : constant Natural              := SR.Last + NR.Last;
-       DR  : Shared_String_Access;
- 
-    begin
-       --  Source is an empty string, reuse New_Item data
- 
-       if SR.Last = 0 then
-          Reference (NR);
-          Source.Reference := NR;
-          Unreference (SR);
- 
-       --  New_Item is empty string, nothing to do
- 
-       elsif NR.Last = 0 then
-          null;
- 
-       --  Try to reuse existing shared string
- 
-       elsif Can_Be_Reused (SR, DL) then
-          SR.Data (SR.Last + 1 .. DL) := NR.Data (1 .. NR.Last);
-          SR.Last := DL;
- 
-       --  Otherwise, allocate new one and fill it
- 
-       else
-          DR := Allocate (DL + DL / Growth_Factor);
-          DR.Data (1 .. SR.Last) := SR.Data (1 .. SR.Last);
-          DR.Data (SR.Last + 1 .. DL) := NR.Data (1 .. NR.Last);
-          DR.Last := DL;
-          Source.Reference := DR;
-          Unreference (SR);
-       end if;
-    end Append;
- 
-    procedure Append
-      (Source   : in out Unbounded_String;
-       New_Item : String)
-    is
-       SR : constant Shared_String_Access := Source.Reference;
-       DL : constant Natural := SR.Last + New_Item'Length;
-       DR : Shared_String_Access;
- 
-    begin
-       --  New_Item is an empty string, nothing to do
- 
-       if New_Item'Length = 0 then
-          null;
- 
-       --  Try to reuse existing shared string
- 
-       elsif Can_Be_Reused (SR, DL) then
-          SR.Data (SR.Last + 1 .. DL) := New_Item;
-          SR.Last := DL;
- 
-       --  Otherwise, allocate new one and fill it
- 
-       else
-          DR := Allocate (DL + DL / Growth_Factor);
-          DR.Data (1 .. SR.Last) := SR.Data (1 .. SR.Last);
-          DR.Data (SR.Last + 1 .. DL) := New_Item;
-          DR.Last := DL;
-          Source.Reference := DR;
-          Unreference (SR);
-       end if;
-    end Append;
- 
-    procedure Append
-      (Source   : in out Unbounded_String;
-       New_Item : Character)
-    is
-       SR : constant Shared_String_Access := Source.Reference;
-       DL : constant Natural := SR.Last + 1;
-       DR : Shared_String_Access;
- 
-    begin
-       --  Try to reuse existing shared string
- 
-       if Can_Be_Reused (SR, SR.Last + 1) then
-          SR.Data (SR.Last + 1) := New_Item;
-          SR.Last := SR.Last + 1;
- 
-       --  Otherwise, allocate new one and fill it
- 
-       else
-          DR := Allocate (DL + DL / Growth_Factor);
-          DR.Data (1 .. SR.Last) := SR.Data (1 .. SR.Last);
-          DR.Data (DL) := New_Item;
-          DR.Last := DL;
-          Source.Reference := DR;
-          Unreference (SR);
-       end if;
-    end Append;
- 
-    -------------------
-    -- Can_Be_Reused --
-    -------------------
- 
-    function Can_Be_Reused
-      (Item   : not null Shared_String_Access;
-       Length : Natural) return Boolean
-    is
-    begin
-       return
-         System.Atomic_Counters.Is_One (Item.Counter)
-           and then Item.Max_Length >= Length
-           and then Item.Max_Length <=
-                      Aligned_Max_Length (Length + Length / Growth_Factor);
-    end Can_Be_Reused;
- 
-    -----------
-    -- Count --
-    -----------
- 
-    function Count
-      (Source  : Unbounded_String;
-       Pattern : String;
-       Mapping : Maps.Character_Mapping := Maps.Identity) return Natural
-    is
-       SR : constant Shared_String_Access := Source.Reference;
-    begin
-       return Search.Count (SR.Data (1 .. SR.Last), Pattern, Mapping);
-    end Count;
- 
-    function Count
-      (Source  : Unbounded_String;
-       Pattern : String;
-       Mapping : Maps.Character_Mapping_Function) return Natural
-    is
-       SR : constant Shared_String_Access := Source.Reference;
-    begin
-       return Search.Count (SR.Data (1 .. SR.Last), Pattern, Mapping);
-    end Count;
- 
-    function Count
-      (Source : Unbounded_String;
-       Set    : Maps.Character_Set) return Natural
-    is
-       SR : constant Shared_String_Access := Source.Reference;
-    begin
-       return Search.Count (SR.Data (1 .. SR.Last), Set);
-    end Count;
- 
-    ------------
-    -- Delete --
-    ------------
- 
-    function Delete
-      (Source  : Unbounded_String;
-       From    : Positive;
-       Through : Natural) return Unbounded_String
-    is
-       SR : constant Shared_String_Access := Source.Reference;
-       DL : Natural;
-       DR : Shared_String_Access;
- 
-    begin
-       --  Empty slice is deleted, use the same shared string
- 
-       if From > Through then
-          Reference (SR);
-          DR := SR;
- 
-       --  Index is out of range
- 
-       elsif Through > SR.Last then
-          raise Index_Error;
- 
-       --  Compute size of the result
- 
-       else
-          DL := SR.Last - (Through - From + 1);
- 
-          --  Result is an empty string, reuse shared empty string
- 
-          if DL = 0 then
-             Reference (Empty_Shared_String'Access);
-             DR := Empty_Shared_String'Access;
- 
-          --  Otherwise, allocate new shared string and fill it
- 
-          else
-             DR := Allocate (DL);
-             DR.Data (1 .. From - 1) := SR.Data (1 .. From - 1);
-             DR.Data (From .. DL) := SR.Data (Through + 1 .. SR.Last);
-             DR.Last := DL;
-          end if;
-       end if;
- 
-       return (AF.Controlled with Reference => DR);
-    end Delete;
- 
-    procedure Delete
-      (Source  : in out Unbounded_String;
-       From    : Positive;
-       Through : Natural)
-    is
-       SR : constant Shared_String_Access := Source.Reference;
-       DL : Natural;
-       DR : Shared_String_Access;
- 
-    begin
-       --  Nothing changed, return
- 
-       if From > Through then
-          null;
- 
-       --  Through is outside of the range
- 
-       elsif Through > SR.Last then
-          raise Index_Error;
- 
-       else
-          DL := SR.Last - (Through - From + 1);
- 
-          --  Result is empty, reuse shared empty string
- 
-          if DL = 0 then
-             Reference (Empty_Shared_String'Access);
-             Source.Reference := Empty_Shared_String'Access;
-             Unreference (SR);
- 
-          --  Try to reuse existing shared string
- 
-          elsif Can_Be_Reused (SR, DL) then
-             SR.Data (From .. DL) := SR.Data (Through + 1 .. SR.Last);
-             SR.Last := DL;
- 
-          --  Otherwise, allocate new shared string
- 
-          else
-             DR := Allocate (DL);
-             DR.Data (1 .. From - 1) := SR.Data (1 .. From - 1);
-             DR.Data (From .. DL) := SR.Data (Through + 1 .. SR.Last);
-             DR.Last := DL;
-             Source.Reference := DR;
-             Unreference (SR);
-          end if;
-       end if;
-    end Delete;
- 
-    -------------
-    -- Element --
-    -------------
- 
-    function Element
-      (Source : Unbounded_String;
-       Index  : Positive) return Character
-    is
-       SR : constant Shared_String_Access := Source.Reference;
-    begin
-       if Index <= SR.Last then
-          return SR.Data (Index);
-       else
-          raise Index_Error;
-       end if;
-    end Element;
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    procedure Finalize (Object : in out Unbounded_String) is
-       SR : constant not null Shared_String_Access := Object.Reference;
-    begin
-       if SR /= Null_Unbounded_String.Reference then
- 
-          --  The same controlled object can be finalized several times for
-          --  some reason. As per 7.6.1(24) this should have no ill effect,
-          --  so we need to add a guard for the case of finalizing the same
-          --  object twice.
- 
-          --  We set the Object to the empty string so there will be no ill
-          --  effects if a program references an already-finalized object.
- 
-          Object.Reference := Null_Unbounded_String.Reference;
-          Reference (Object.Reference);
-          Unreference (SR);
-       end if;
-    end Finalize;
- 
-    ----------------
-    -- Find_Token --
-    ----------------
- 
-    procedure Find_Token
-      (Source : Unbounded_String;
-       Set    : Maps.Character_Set;
-       From   : Positive;
-       Test   : Strings.Membership;
-       First  : out Positive;
-       Last   : out Natural)
-    is
-       SR : constant Shared_String_Access := Source.Reference;
-    begin
-       Search.Find_Token (SR.Data (From .. SR.Last), Set, Test, First, Last);
-    end Find_Token;
- 
-    procedure Find_Token
-      (Source : Unbounded_String;
-       Set    : Maps.Character_Set;
-       Test   : Strings.Membership;
-       First  : out Positive;
-       Last   : out Natural)
-    is
-       SR : constant Shared_String_Access := Source.Reference;
-    begin
-       Search.Find_Token (SR.Data (1 .. SR.Last), Set, Test, First, Last);
-    end Find_Token;
- 
-    ----------
-    -- Free --
-    ----------
- 
-    procedure Free (X : in out String_Access) is
-       procedure Deallocate is
-         new Ada.Unchecked_Deallocation (String, String_Access);
-    begin
-       Deallocate (X);
-    end Free;
- 
-    ----------
-    -- Head --
-    ----------
- 
-    function Head
-      (Source : Unbounded_String;
-       Count  : Natural;
-       Pad    : Character := Space) return Unbounded_String
-    is
-       SR : constant Shared_String_Access := Source.Reference;
-       DR : Shared_String_Access;
- 
-    begin
-       --  Result is empty, reuse shared empty string
- 
-       if Count = 0 then
-          Reference (Empty_Shared_String'Access);
-          DR := Empty_Shared_String'Access;
- 
-       --  Length of the string is the same as requested, reuse source shared
-       --  string.
- 
-       elsif Count = SR.Last then
-          Reference (SR);
-          DR := SR;
- 
-       --  Otherwise, allocate new shared string and fill it
- 
-       else
-          DR := Allocate (Count);
- 
-          --  Length of the source string is more than requested, copy
-          --  corresponding slice.
- 
-          if Count < SR.Last then
-             DR.Data (1 .. Count) := SR.Data (1 .. Count);
- 
-          --  Length of the source string is less than requested, copy all
-          --  contents and fill others by Pad character.
- 
-          else
-             DR.Data (1 .. SR.Last) := SR.Data (1 .. SR.Last);
- 
-             for J in SR.Last + 1 .. Count loop
-                DR.Data (J) := Pad;
-             end loop;
-          end if;
- 
-          DR.Last := Count;
-       end if;
- 
-       return (AF.Controlled with Reference => DR);
-    end Head;
- 
-    procedure Head
-      (Source : in out Unbounded_String;
-       Count  : Natural;
-       Pad    : Character := Space)
-    is
-       SR : constant Shared_String_Access := Source.Reference;
-       DR : Shared_String_Access;
- 
-    begin
-       --  Result is empty, reuse empty shared string
- 
-       if Count = 0 then
-          Reference (Empty_Shared_String'Access);
-          Source.Reference := Empty_Shared_String'Access;
-          Unreference (SR);
- 
-       --  Result is same as source string, reuse source shared string
- 
-       elsif Count = SR.Last then
-          null;
- 
-       --  Try to reuse existing shared string
- 
-       elsif Can_Be_Reused (SR, Count) then
-          if Count > SR.Last then
-             for J in SR.Last + 1 .. Count loop
-                SR.Data (J) := Pad;
-             end loop;
-          end if;
- 
-          SR.Last := Count;
- 
-       --  Otherwise, allocate new shared string and fill it
- 
-       else
-          DR := Allocate (Count);
- 
-          --  Length of the source string is greater than requested, copy
-          --  corresponding slice.
- 
-          if Count < SR.Last then
-             DR.Data (1 .. Count) := SR.Data (1 .. Count);
- 
-          --  Length of the source string is less than requested, copy all
-          --  existing data and fill remaining positions with Pad characters.
- 
-          else
-             DR.Data (1 .. SR.Last) := SR.Data (1 .. SR.Last);
- 
-             for J in SR.Last + 1 .. Count loop
-                DR.Data (J) := Pad;
-             end loop;
-          end if;
- 
-          DR.Last := Count;
-          Source.Reference := DR;
-          Unreference (SR);
-       end if;
-    end Head;
- 
-    -----------
-    -- Index --
-    -----------
- 
-    function Index
-      (Source  : Unbounded_String;
-       Pattern : String;
-       Going   : Strings.Direction := Strings.Forward;
-       Mapping : Maps.Character_Mapping := Maps.Identity) return Natural
-    is
-       SR : constant Shared_String_Access := Source.Reference;
-    begin
-       return Search.Index (SR.Data (1 .. SR.Last), Pattern, Going, Mapping);
-    end Index;
- 
-    function Index
-      (Source  : Unbounded_String;
-       Pattern : String;
-       Going   : Direction := Forward;
-       Mapping : Maps.Character_Mapping_Function) return Natural
-    is
-       SR : constant Shared_String_Access := Source.Reference;
-    begin
-       return Search.Index (SR.Data (1 .. SR.Last), Pattern, Going, Mapping);
-    end Index;
- 
-    function Index
-      (Source : Unbounded_String;
-       Set    : Maps.Character_Set;
-       Test   : Strings.Membership := Strings.Inside;
-       Going  : Strings.Direction  := Strings.Forward) return Natural
-    is
-       SR : constant Shared_String_Access := Source.Reference;
-    begin
-       return Search.Index (SR.Data (1 .. SR.Last), Set, Test, Going);
-    end Index;
- 
-    function Index
-      (Source  : Unbounded_String;
-       Pattern : String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Maps.Character_Mapping := Maps.Identity) return Natural
-    is
-       SR : constant Shared_String_Access := Source.Reference;
-    begin
-       return Search.Index
-         (SR.Data (1 .. SR.Last), Pattern, From, Going, Mapping);
-    end Index;
- 
-    function Index
-      (Source  : Unbounded_String;
-       Pattern : String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Maps.Character_Mapping_Function) return Natural
-    is
-       SR : constant Shared_String_Access := Source.Reference;
-    begin
-       return Search.Index
-         (SR.Data (1 .. SR.Last), Pattern, From, Going, Mapping);
-    end Index;
- 
-    function Index
-      (Source  : Unbounded_String;
-       Set     : Maps.Character_Set;
-       From    : Positive;
-       Test    : Membership := Inside;
-       Going   : Direction := Forward) return Natural
-    is
-       SR : constant Shared_String_Access := Source.Reference;
-    begin
-       return Search.Index (SR.Data (1 .. SR.Last), Set, From, Test, Going);
-    end Index;
- 
-    ---------------------
-    -- Index_Non_Blank --
-    ---------------------
- 
-    function Index_Non_Blank
-      (Source : Unbounded_String;
-       Going  : Strings.Direction := Strings.Forward) return Natural
-    is
-       SR : constant Shared_String_Access := Source.Reference;
-    begin
-       return Search.Index_Non_Blank (SR.Data (1 .. SR.Last), Going);
-    end Index_Non_Blank;
- 
-    function Index_Non_Blank
-      (Source : Unbounded_String;
-       From   : Positive;
-       Going  : Direction := Forward) return Natural
-    is
-       SR : constant Shared_String_Access := Source.Reference;
-    begin
-       return Search.Index_Non_Blank (SR.Data (1 .. SR.Last), From, Going);
-    end Index_Non_Blank;
- 
-    ----------------
-    -- Initialize --
-    ----------------
- 
-    procedure Initialize (Object : in out Unbounded_String) is
-    begin
-       Reference (Object.Reference);
-    end Initialize;
- 
-    ------------
-    -- Insert --
-    ------------
- 
-    function Insert
-      (Source   : Unbounded_String;
-       Before   : Positive;
-       New_Item : String) return Unbounded_String
-    is
-       SR : constant Shared_String_Access := Source.Reference;
-       DL : constant Natural := SR.Last + New_Item'Length;
-       DR : Shared_String_Access;
- 
-    begin
-       --  Check index first
- 
-       if Before > SR.Last + 1 then
-          raise Index_Error;
-       end if;
- 
-       --  Result is empty, reuse empty shared string
- 
-       if DL = 0 then
-          Reference (Empty_Shared_String'Access);
-          DR := Empty_Shared_String'Access;
- 
-       --  Inserted string is empty, reuse source shared string
- 
-       elsif New_Item'Length = 0 then
-          Reference (SR);
-          DR := SR;
- 
-       --  Otherwise, allocate new shared string and fill it
- 
-       else
-          DR := Allocate (DL + DL / Growth_Factor);
-          DR.Data (1 .. Before - 1) := SR.Data (1 .. Before - 1);
-          DR.Data (Before .. Before + New_Item'Length - 1) := New_Item;
-          DR.Data (Before + New_Item'Length .. DL) :=
-            SR.Data (Before .. SR.Last);
-          DR.Last := DL;
-       end if;
- 
-       return (AF.Controlled with Reference => DR);
-    end Insert;
- 
-    procedure Insert
-      (Source   : in out Unbounded_String;
-       Before   : Positive;
-       New_Item : String)
-    is
-       SR : constant Shared_String_Access := Source.Reference;
-       DL : constant Natural              := SR.Last + New_Item'Length;
-       DR : Shared_String_Access;
- 
-    begin
-       --  Check bounds
- 
-       if Before > SR.Last + 1 then
-          raise Index_Error;
-       end if;
- 
-       --  Result is empty string, reuse empty shared string
- 
-       if DL = 0 then
-          Reference (Empty_Shared_String'Access);
-          Source.Reference := Empty_Shared_String'Access;
-          Unreference (SR);
- 
-       --  Inserted string is empty, nothing to do
- 
-       elsif New_Item'Length = 0 then
-          null;
- 
-       --  Try to reuse existing shared string first
- 
-       elsif Can_Be_Reused (SR, DL) then
-          SR.Data (Before + New_Item'Length .. DL) :=
-            SR.Data (Before .. SR.Last);
-          SR.Data (Before .. Before + New_Item'Length - 1) := New_Item;
-          SR.Last := DL;
- 
-       --  Otherwise, allocate new shared string and fill it
- 
-       else
-          DR := Allocate (DL + DL / Growth_Factor);
-          DR.Data (1 .. Before - 1) := SR.Data (1 .. Before - 1);
-          DR.Data (Before .. Before + New_Item'Length - 1) := New_Item;
-          DR.Data (Before + New_Item'Length .. DL) :=
-            SR.Data (Before .. SR.Last);
-          DR.Last := DL;
-          Source.Reference := DR;
-          Unreference (SR);
-       end if;
-    end Insert;
- 
-    ------------
-    -- Length --
-    ------------
- 
-    function Length (Source : Unbounded_String) return Natural is
-    begin
-       return Source.Reference.Last;
-    end Length;
- 
-    ---------------
-    -- Overwrite --
-    ---------------
- 
-    function Overwrite
-      (Source   : Unbounded_String;
-       Position : Positive;
-       New_Item : String) return Unbounded_String
-    is
-       SR : constant Shared_String_Access := Source.Reference;
-       DL : Natural;
-       DR : Shared_String_Access;
- 
-    begin
-       --  Check bounds
- 
-       if Position > SR.Last + 1 then
-          raise Index_Error;
-       end if;
- 
-       DL := Integer'Max (SR.Last, Position + New_Item'Length - 1);
- 
-       --  Result is empty string, reuse empty shared string
- 
-       if DL = 0 then
-          Reference (Empty_Shared_String'Access);
-          DR := Empty_Shared_String'Access;
- 
-       --  Result is same as source string, reuse source shared string
- 
-       elsif New_Item'Length = 0 then
-          Reference (SR);
-          DR := SR;
- 
-       --  Otherwise, allocate new shared string and fill it
- 
-       else
-          DR := Allocate (DL);
-          DR.Data (1 .. Position - 1) := SR.Data (1 .. Position - 1);
-          DR.Data (Position .. Position + New_Item'Length - 1) := New_Item;
-          DR.Data (Position + New_Item'Length .. DL) :=
-            SR.Data (Position + New_Item'Length .. SR.Last);
-          DR.Last := DL;
-       end if;
- 
-       return (AF.Controlled with Reference => DR);
-    end Overwrite;
- 
-    procedure Overwrite
-      (Source    : in out Unbounded_String;
-       Position  : Positive;
-       New_Item  : String)
-    is
-       SR : constant Shared_String_Access := Source.Reference;
-       DL : Natural;
-       DR : Shared_String_Access;
- 
-    begin
-       --  Bounds check
- 
-       if Position > SR.Last + 1 then
-          raise Index_Error;
-       end if;
- 
-       DL := Integer'Max (SR.Last, Position + New_Item'Length - 1);
- 
-       --  Result is empty string, reuse empty shared string
- 
-       if DL = 0 then
-          Reference (Empty_Shared_String'Access);
-          Source.Reference := Empty_Shared_String'Access;
-          Unreference (SR);
- 
-       --  String unchanged, nothing to do
- 
-       elsif New_Item'Length = 0 then
-          null;
- 
-       --  Try to reuse existing shared string
- 
-       elsif Can_Be_Reused (SR, DL) then
-          SR.Data (Position .. Position + New_Item'Length - 1) := New_Item;
-          SR.Last := DL;
- 
-       --  Otherwise allocate new shared string and fill it
- 
-       else
-          DR := Allocate (DL);
-          DR.Data (1 .. Position - 1) := SR.Data (1 .. Position - 1);
-          DR.Data (Position .. Position + New_Item'Length - 1) := New_Item;
-          DR.Data (Position + New_Item'Length .. DL) :=
-            SR.Data (Position + New_Item'Length .. SR.Last);
-          DR.Last := DL;
-          Source.Reference := DR;
-          Unreference (SR);
-       end if;
-    end Overwrite;
- 
-    ---------------
-    -- Reference --
-    ---------------
- 
-    procedure Reference (Item : not null Shared_String_Access) is
-    begin
-       System.Atomic_Counters.Increment (Item.Counter);
-    end Reference;
- 
-    ---------------------
-    -- Replace_Element --
-    ---------------------
- 
-    procedure Replace_Element
-      (Source : in out Unbounded_String;
-       Index  : Positive;
-       By     : Character)
-    is
-       SR : constant Shared_String_Access := Source.Reference;
-       DR : Shared_String_Access;
- 
-    begin
-       --  Bounds check
- 
-       if Index <= SR.Last then
- 
-          --  Try to reuse existing shared string
- 
-          if Can_Be_Reused (SR, SR.Last) then
-             SR.Data (Index) := By;
- 
-          --  Otherwise allocate new shared string and fill it
- 
-          else
-             DR := Allocate (SR.Last);
-             DR.Data (1 .. SR.Last) := SR.Data (1 .. SR.Last);
-             DR.Data (Index) := By;
-             DR.Last := SR.Last;
-             Source.Reference := DR;
-             Unreference (SR);
-          end if;
- 
-       else
-          raise Index_Error;
-       end if;
-    end Replace_Element;
- 
-    -------------------
-    -- Replace_Slice --
-    -------------------
- 
-    function Replace_Slice
-      (Source : Unbounded_String;
-       Low    : Positive;
-       High   : Natural;
-       By     : String) return Unbounded_String
-    is
-       SR : constant Shared_String_Access := Source.Reference;
-       DL : Natural;
-       DR : Shared_String_Access;
- 
-    begin
-       --  Check bounds
- 
-       if Low > SR.Last + 1 then
-          raise Index_Error;
-       end if;
- 
-       --  Do replace operation when removed slice is not empty
- 
-       if High >= Low then
-          DL := By'Length + SR.Last + Low - Integer'Min (High, SR.Last) - 1;
-          --  This is the number of characters remaining in the string after
-          --  replacing the slice.
- 
-          --  Result is empty string, reuse empty shared string
- 
-          if DL = 0 then
-             Reference (Empty_Shared_String'Access);
-             DR := Empty_Shared_String'Access;
- 
-          --  Otherwise allocate new shared string and fill it
- 
-          else
-             DR := Allocate (DL);
-             DR.Data (1 .. Low - 1) := SR.Data (1 .. Low - 1);
-             DR.Data (Low .. Low + By'Length - 1) := By;
-             DR.Data (Low + By'Length .. DL) := SR.Data (High + 1 .. SR.Last);
-             DR.Last := DL;
-          end if;
- 
-          return (AF.Controlled with Reference => DR);
- 
-       --  Otherwise just insert string
- 
-       else
-          return Insert (Source, Low, By);
-       end if;
-    end Replace_Slice;
- 
-    procedure Replace_Slice
-      (Source : in out Unbounded_String;
-       Low    : Positive;
-       High   : Natural;
-       By     : String)
-    is
-       SR : constant Shared_String_Access := Source.Reference;
-       DL : Natural;
-       DR : Shared_String_Access;
- 
-    begin
-       --  Bounds check
- 
-       if Low > SR.Last + 1 then
-          raise Index_Error;
-       end if;
- 
-       --  Do replace operation only when replaced slice is not empty
- 
-       if High >= Low then
-          DL := By'Length + SR.Last + Low - Integer'Min (High, SR.Last) - 1;
-          --  This is the number of characters remaining in the string after
-          --  replacing the slice.
- 
-          --  Result is empty string, reuse empty shared string
- 
-          if DL = 0 then
-             Reference (Empty_Shared_String'Access);
-             Source.Reference := Empty_Shared_String'Access;
-             Unreference (SR);
- 
-          --  Try to reuse existing shared string
- 
-          elsif Can_Be_Reused (SR, DL) then
-             SR.Data (Low + By'Length .. DL) := SR.Data (High + 1 .. SR.Last);
-             SR.Data (Low .. Low + By'Length - 1) := By;
-             SR.Last := DL;
- 
-          --  Otherwise allocate new shared string and fill it
- 
-          else
-             DR := Allocate (DL);
-             DR.Data (1 .. Low - 1) := SR.Data (1 .. Low - 1);
-             DR.Data (Low .. Low + By'Length - 1) := By;
-             DR.Data (Low + By'Length .. DL) := SR.Data (High + 1 .. SR.Last);
-             DR.Last := DL;
-             Source.Reference := DR;
-             Unreference (SR);
-          end if;
- 
-       --  Otherwise just insert item
- 
-       else
-          Insert (Source, Low, By);
-       end if;
-    end Replace_Slice;
- 
-    --------------------------
-    -- Set_Unbounded_String --
-    --------------------------
- 
-    procedure Set_Unbounded_String
-      (Target : out Unbounded_String;
-       Source : String)
-    is
-       TR : constant Shared_String_Access := Target.Reference;
-       DR : Shared_String_Access;
- 
-    begin
-       --  In case of empty string, reuse empty shared string
- 
-       if Source'Length = 0 then
-          Reference (Empty_Shared_String'Access);
-          Target.Reference := Empty_Shared_String'Access;
- 
-       else
-          --  Try to reuse existing shared string
- 
-          if Can_Be_Reused (TR, Source'Length) then
-             Reference (TR);
-             DR := TR;
- 
-          --  Otherwise allocate new shared string
- 
-          else
-             DR := Allocate (Source'Length);
-             Target.Reference := DR;
-          end if;
- 
-          DR.Data (1 .. Source'Length) := Source;
-          DR.Last := Source'Length;
-       end if;
- 
-       Unreference (TR);
-    end Set_Unbounded_String;
- 
-    -----------
-    -- Slice --
-    -----------
- 
-    function Slice
-      (Source : Unbounded_String;
-       Low    : Positive;
-       High   : Natural) return String
-    is
-       SR : constant Shared_String_Access := Source.Reference;
- 
-    begin
-       --  Note: test of High > Length is in accordance with AI95-00128
- 
-       if Low > SR.Last + 1 or else High > SR.Last then
-          raise Index_Error;
- 
-       else
-          return SR.Data (Low .. High);
-       end if;
-    end Slice;
- 
-    ----------
-    -- Tail --
-    ----------
- 
-    function Tail
-      (Source : Unbounded_String;
-       Count  : Natural;
-       Pad    : Character := Space) return Unbounded_String
-    is
-       SR : constant Shared_String_Access := Source.Reference;
-       DR : Shared_String_Access;
- 
-    begin
-       --  For empty result reuse empty shared string
- 
-       if Count = 0 then
-          Reference (Empty_Shared_String'Access);
-          DR := Empty_Shared_String'Access;
- 
-       --  Result is whole source string, reuse source shared string
- 
-       elsif Count = SR.Last then
-          Reference (SR);
-          DR := SR;
- 
-       --  Otherwise allocate new shared string and fill it
- 
-       else
-          DR := Allocate (Count);
- 
-          if Count < SR.Last then
-             DR.Data (1 .. Count) := SR.Data (SR.Last - Count + 1 .. SR.Last);
- 
-          else
-             for J in 1 .. Count - SR.Last loop
-                DR.Data (J) := Pad;
-             end loop;
- 
-             DR.Data (Count - SR.Last + 1 .. Count) := SR.Data (1 .. SR.Last);
-          end if;
- 
-          DR.Last := Count;
-       end if;
- 
-       return (AF.Controlled with Reference => DR);
-    end Tail;
- 
-    procedure Tail
-      (Source : in out Unbounded_String;
-       Count  : Natural;
-       Pad    : Character := Space)
-    is
-       SR : constant Shared_String_Access := Source.Reference;
-       DR : Shared_String_Access;
- 
-       procedure Common
-         (SR    : Shared_String_Access;
-          DR    : Shared_String_Access;
-          Count : Natural);
-       --  Common code of tail computation. SR/DR can point to the same object
- 
-       ------------
-       -- Common --
-       ------------
- 
-       procedure Common
-         (SR    : Shared_String_Access;
-          DR    : Shared_String_Access;
-          Count : Natural) is
-       begin
-          if Count < SR.Last then
-             DR.Data (1 .. Count) := SR.Data (SR.Last - Count + 1 .. SR.Last);
- 
-          else
-             DR.Data (Count - SR.Last + 1 .. Count) := SR.Data (1 .. SR.Last);
- 
-             for J in 1 .. Count - SR.Last loop
-                DR.Data (J) := Pad;
-             end loop;
-          end if;
- 
-          DR.Last := Count;
-       end Common;
- 
-    begin
-       --  Result is empty string, reuse empty shared string
- 
-       if Count = 0 then
-          Reference (Empty_Shared_String'Access);
-          Source.Reference := Empty_Shared_String'Access;
-          Unreference (SR);
- 
-       --  Length of the result is the same as length of the source string,
-       --  reuse source shared string.
- 
-       elsif Count = SR.Last then
-          null;
- 
-       --  Try to reuse existing shared string
- 
-       elsif Can_Be_Reused (SR, Count) then
-          Common (SR, SR, Count);
- 
-       --  Otherwise allocate new shared string and fill it
- 
-       else
-          DR := Allocate (Count);
-          Common (SR, DR, Count);
-          Source.Reference := DR;
-          Unreference (SR);
-       end if;
-    end Tail;
- 
-    ---------------
-    -- To_String --
-    ---------------
- 
-    function To_String (Source : Unbounded_String) return String is
-    begin
-       return Source.Reference.Data (1 .. Source.Reference.Last);
-    end To_String;
- 
-    -------------------------
-    -- To_Unbounded_String --
-    -------------------------
- 
-    function To_Unbounded_String (Source : String) return Unbounded_String is
-       DR : Shared_String_Access;
- 
-    begin
-       if Source'Length = 0 then
-          Reference (Empty_Shared_String'Access);
-          DR := Empty_Shared_String'Access;
- 
-       else
-          DR := Allocate (Source'Length);
-          DR.Data (1 .. Source'Length) := Source;
-          DR.Last := Source'Length;
-       end if;
- 
-       return (AF.Controlled with Reference => DR);
-    end To_Unbounded_String;
- 
-    function To_Unbounded_String (Length : Natural) return Unbounded_String is
-       DR : Shared_String_Access;
- 
-    begin
-       if Length = 0 then
-          Reference (Empty_Shared_String'Access);
-          DR := Empty_Shared_String'Access;
- 
-       else
-          DR := Allocate (Length);
-          DR.Last := Length;
-       end if;
- 
-       return (AF.Controlled with Reference => DR);
-    end To_Unbounded_String;
- 
-    ---------------
-    -- Translate --
-    ---------------
- 
-    function Translate
-      (Source  : Unbounded_String;
-       Mapping : Maps.Character_Mapping) return Unbounded_String
-    is
-       SR : constant Shared_String_Access := Source.Reference;
-       DR : Shared_String_Access;
- 
-    begin
-       --  Nothing to translate, reuse empty shared string
- 
-       if SR.Last = 0 then
-          Reference (Empty_Shared_String'Access);
-          DR := Empty_Shared_String'Access;
- 
-       --  Otherwise, allocate new shared string and fill it
- 
-       else
-          DR := Allocate (SR.Last);
- 
-          for J in 1 .. SR.Last loop
-             DR.Data (J) := Value (Mapping, SR.Data (J));
-          end loop;
- 
-          DR.Last := SR.Last;
-       end if;
- 
-       return (AF.Controlled with Reference => DR);
-    end Translate;
- 
-    procedure Translate
-      (Source  : in out Unbounded_String;
-       Mapping : Maps.Character_Mapping)
-    is
-       SR : constant Shared_String_Access := Source.Reference;
-       DR : Shared_String_Access;
- 
-    begin
-       --  Nothing to translate
- 
-       if SR.Last = 0 then
-          null;
- 
-       --  Try to reuse shared string
- 
-       elsif Can_Be_Reused (SR, SR.Last) then
-          for J in 1 .. SR.Last loop
-             SR.Data (J) := Value (Mapping, SR.Data (J));
-          end loop;
- 
-       --  Otherwise, allocate new shared string
- 
-       else
-          DR := Allocate (SR.Last);
- 
-          for J in 1 .. SR.Last loop
-             DR.Data (J) := Value (Mapping, SR.Data (J));
-          end loop;
- 
-          DR.Last := SR.Last;
-          Source.Reference := DR;
-          Unreference (SR);
-       end if;
-    end Translate;
- 
-    function Translate
-      (Source  : Unbounded_String;
-       Mapping : Maps.Character_Mapping_Function) return Unbounded_String
-    is
-       SR : constant Shared_String_Access := Source.Reference;
-       DR : Shared_String_Access;
- 
-    begin
-       --  Nothing to translate, reuse empty shared string
- 
-       if SR.Last = 0 then
-          Reference (Empty_Shared_String'Access);
-          DR := Empty_Shared_String'Access;
- 
-       --  Otherwise, allocate new shared string and fill it
- 
-       else
-          DR := Allocate (SR.Last);
- 
-          for J in 1 .. SR.Last loop
-             DR.Data (J) := Mapping.all (SR.Data (J));
-          end loop;
- 
-          DR.Last := SR.Last;
-       end if;
- 
-       return (AF.Controlled with Reference => DR);
- 
-    exception
-       when others =>
-          Unreference (DR);
- 
-          raise;
-    end Translate;
- 
-    procedure Translate
-      (Source  : in out Unbounded_String;
-       Mapping : Maps.Character_Mapping_Function)
-    is
-       SR : constant Shared_String_Access := Source.Reference;
-       DR : Shared_String_Access;
- 
-    begin
-       --  Nothing to translate
- 
-       if SR.Last = 0 then
-          null;
- 
-       --  Try to reuse shared string
- 
-       elsif Can_Be_Reused (SR, SR.Last) then
-          for J in 1 .. SR.Last loop
-             SR.Data (J) := Mapping.all (SR.Data (J));
-          end loop;
- 
-       --  Otherwise allocate new shared string and fill it
- 
-       else
-          DR := Allocate (SR.Last);
- 
-          for J in 1 .. SR.Last loop
-             DR.Data (J) := Mapping.all (SR.Data (J));
-          end loop;
- 
-          DR.Last := SR.Last;
-          Source.Reference := DR;
-          Unreference (SR);
-       end if;
- 
-    exception
-       when others =>
-          if DR /= null then
-             Unreference (DR);
-          end if;
- 
-          raise;
-    end Translate;
- 
-    ----------
-    -- Trim --
-    ----------
- 
-    function Trim
-      (Source : Unbounded_String;
-       Side   : Trim_End) return Unbounded_String
-    is
-       SR   : constant Shared_String_Access := Source.Reference;
-       DL   : Natural;
-       DR   : Shared_String_Access;
-       Low  : Natural;
-       High : Natural;
- 
-    begin
-       Low := Index_Non_Blank (Source, Forward);
- 
-       --  All blanks, reuse empty shared string
- 
-       if Low = 0 then
-          Reference (Empty_Shared_String'Access);
-          DR := Empty_Shared_String'Access;
- 
-       else
-          case Side is
-             when Left =>
-                High := SR.Last;
-                DL   := SR.Last - Low + 1;
- 
-             when Right =>
-                Low  := 1;
-                High := Index_Non_Blank (Source, Backward);
-                DL   := High;
- 
-             when Both =>
-                High := Index_Non_Blank (Source, Backward);
-                DL   := High - Low + 1;
-          end case;
- 
-          --  Length of the result is the same as length of the source string,
-          --  reuse source shared string.
- 
-          if DL = SR.Last then
-             Reference (SR);
-             DR := SR;
- 
-          --  Otherwise, allocate new shared string
- 
-          else
-             DR := Allocate (DL);
-             DR.Data (1 .. DL) := SR.Data (Low .. High);
-             DR.Last := DL;
-          end if;
-       end if;
- 
-       return (AF.Controlled with Reference => DR);
-    end Trim;
- 
-    procedure Trim
-      (Source : in out Unbounded_String;
-       Side   : Trim_End)
-    is
-       SR   : constant Shared_String_Access := Source.Reference;
-       DL   : Natural;
-       DR   : Shared_String_Access;
-       Low  : Natural;
-       High : Natural;
- 
-    begin
-       Low := Index_Non_Blank (Source, Forward);
- 
-       --  All blanks, reuse empty shared string
- 
-       if Low = 0 then
-          Reference (Empty_Shared_String'Access);
-          Source.Reference := Empty_Shared_String'Access;
-          Unreference (SR);
- 
-       else
-          case Side is
-             when Left =>
-                High := SR.Last;
-                DL   := SR.Last - Low + 1;
- 
-             when Right =>
-                Low  := 1;
-                High := Index_Non_Blank (Source, Backward);
-                DL   := High;
- 
-             when Both =>
-                High := Index_Non_Blank (Source, Backward);
-                DL   := High - Low + 1;
-          end case;
- 
-          --  Length of the result is the same as length of the source string,
-          --  nothing to do.
- 
-          if DL = SR.Last then
-             null;
- 
-          --  Try to reuse existing shared string
- 
-          elsif Can_Be_Reused (SR, DL) then
-             SR.Data (1 .. DL) := SR.Data (Low .. High);
-             SR.Last := DL;
- 
-          --  Otherwise, allocate new shared string
- 
-          else
-             DR := Allocate (DL);
-             DR.Data (1 .. DL) := SR.Data (Low .. High);
-             DR.Last := DL;
-             Source.Reference := DR;
-             Unreference (SR);
-          end if;
-       end if;
-    end Trim;
- 
-    function Trim
-      (Source : Unbounded_String;
-       Left   : Maps.Character_Set;
-       Right  : Maps.Character_Set) return Unbounded_String
-    is
-       SR   : constant Shared_String_Access := Source.Reference;
-       DL   : Natural;
-       DR   : Shared_String_Access;
-       Low  : Natural;
-       High : Natural;
- 
-    begin
-       Low := Index (Source, Left, Outside, Forward);
- 
-       --  Source includes only characters from Left set, reuse empty shared
-       --  string.
- 
-       if Low = 0 then
-          Reference (Empty_Shared_String'Access);
-          DR := Empty_Shared_String'Access;
- 
-       else
-          High := Index (Source, Right, Outside, Backward);
-          DL   := Integer'Max (0, High - Low + 1);
- 
-          --  Source includes only characters from Right set or result string
-          --  is empty, reuse empty shared string.
- 
-          if High = 0 or else DL = 0 then
-             Reference (Empty_Shared_String'Access);
-             DR := Empty_Shared_String'Access;
- 
-          --  Otherwise, allocate new shared string and fill it
- 
-          else
-             DR := Allocate (DL);
-             DR.Data (1 .. DL) := SR.Data (Low .. High);
-             DR.Last := DL;
-          end if;
-       end if;
- 
-       return (AF.Controlled with Reference => DR);
-    end Trim;
- 
-    procedure Trim
-      (Source : in out Unbounded_String;
-       Left   : Maps.Character_Set;
-       Right  : Maps.Character_Set)
-    is
-       SR   : constant Shared_String_Access := Source.Reference;
-       DL   : Natural;
-       DR   : Shared_String_Access;
-       Low  : Natural;
-       High : Natural;
- 
-    begin
-       Low := Index (Source, Left, Outside, Forward);
- 
-       --  Source includes only characters from Left set, reuse empty shared
-       --  string.
- 
-       if Low = 0 then
-          Reference (Empty_Shared_String'Access);
-          Source.Reference := Empty_Shared_String'Access;
-          Unreference (SR);
- 
-       else
-          High := Index (Source, Right, Outside, Backward);
-          DL   := Integer'Max (0, High - Low + 1);
- 
-          --  Source includes only characters from Right set or result string
-          --  is empty, reuse empty shared string.
- 
-          if High = 0 or else DL = 0 then
-             Reference (Empty_Shared_String'Access);
-             Source.Reference := Empty_Shared_String'Access;
-             Unreference (SR);
- 
-          --  Try to reuse existing shared string
- 
-          elsif Can_Be_Reused (SR, DL) then
-             SR.Data (1 .. DL) := SR.Data (Low .. High);
-             SR.Last := DL;
- 
-          --  Otherwise, allocate new shared string and fill it
- 
-          else
-             DR := Allocate (DL);
-             DR.Data (1 .. DL) := SR.Data (Low .. High);
-             DR.Last := DL;
-             Source.Reference := DR;
-             Unreference (SR);
-          end if;
-       end if;
-    end Trim;
- 
-    ---------------------
-    -- Unbounded_Slice --
-    ---------------------
- 
-    function Unbounded_Slice
-      (Source : Unbounded_String;
-       Low    : Positive;
-       High   : Natural) return Unbounded_String
-    is
-       SR : constant Shared_String_Access := Source.Reference;
-       DL : Natural;
-       DR : Shared_String_Access;
- 
-    begin
-       --  Check bounds
- 
-       if Low > SR.Last + 1 or else High > SR.Last then
-          raise Index_Error;
- 
-       --  Result is empty slice, reuse empty shared string
- 
-       elsif Low > High then
-          Reference (Empty_Shared_String'Access);
-          DR := Empty_Shared_String'Access;
- 
-       --  Otherwise, allocate new shared string and fill it
- 
-       else
-          DL := High - Low + 1;
-          DR := Allocate (DL);
-          DR.Data (1 .. DL) := SR.Data (Low .. High);
-          DR.Last := DL;
-       end if;
- 
-       return (AF.Controlled with Reference => DR);
-    end Unbounded_Slice;
- 
-    procedure Unbounded_Slice
-      (Source : Unbounded_String;
-       Target : out Unbounded_String;
-       Low    : Positive;
-       High   : Natural)
-    is
-       SR : constant Shared_String_Access := Source.Reference;
-       TR : constant Shared_String_Access := Target.Reference;
-       DL : Natural;
-       DR : Shared_String_Access;
- 
-    begin
-       --  Check bounds
- 
-       if Low > SR.Last + 1 or else High > SR.Last then
-          raise Index_Error;
- 
-       --  Result is empty slice, reuse empty shared string
- 
-       elsif Low > High then
-          Reference (Empty_Shared_String'Access);
-          Target.Reference := Empty_Shared_String'Access;
-          Unreference (TR);
- 
-       else
-          DL := High - Low + 1;
- 
-          --  Try to reuse existing shared string
- 
-          if Can_Be_Reused (TR, DL) then
-             TR.Data (1 .. DL) := SR.Data (Low .. High);
-             TR.Last := DL;
- 
-          --  Otherwise, allocate new shared string and fill it
- 
-          else
-             DR := Allocate (DL);
-             DR.Data (1 .. DL) := SR.Data (Low .. High);
-             DR.Last := DL;
-             Target.Reference := DR;
-             Unreference (TR);
-          end if;
-       end if;
-    end Unbounded_Slice;
- 
-    -----------------
-    -- Unreference --
-    -----------------
- 
-    procedure Unreference (Item : not null Shared_String_Access) is
- 
-       procedure Free is
-         new Ada.Unchecked_Deallocation (Shared_String, Shared_String_Access);
- 
-       Aux : Shared_String_Access := Item;
- 
-    begin
-       if System.Atomic_Counters.Decrement (Aux.Counter) then
- 
-          --  Reference counter of Empty_Shared_String should never reach
-          --  zero. We check here in case it wraps around.
- 
-          if Aux /= Empty_Shared_String'Access then
-             Free (Aux);
-          end if;
-       end if;
-    end Unreference;
- 
- end Ada.Strings.Unbounded;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-strunb-shared.ads gcc-8.1.0/gcc/ada/a-strunb-shared.ads
*** gcc-7.3.0/gcc/ada/a-strunb-shared.ads	Wed Oct 12 12:27:25 2016
--- gcc-8.1.0/gcc/ada/a-strunb-shared.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,490 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                 A D A . S T R I N G S . U N B O U N D E D                --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2016, Free Software Foundation, 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 package provides an implementation of Ada.Strings.Unbounded that uses
- --  reference counts to implement copy on modification (rather than copy on
- --  assignment). This is significantly more efficient on many targets.
- 
- --  This version is supported on:
- --    - all Alpha platforms
- --    - all ia64 platforms
- --    - all PowerPC platforms
- --    - all SPARC V9 platforms
- --    - all x86 platforms
- --    - all x86_64 platforms
- 
-    --  This package uses several techniques to increase speed:
- 
-    --   - Implicit sharing or copy-on-write. An Unbounded_String contains only
-    --     the reference to the data which is shared between several instances.
-    --     The shared data is reallocated only when its value is changed and
-    --     the object mutation can't be used or it is inefficient to use it.
- 
-    --   - Object mutation. Shared data object can be reused without memory
-    --     reallocation when all of the following requirements are met:
-    --      - the shared data object is no longer used by anyone else;
-    --      - the size is sufficient to store the new value;
-    --      - the gap after reuse is less than a defined threshold.
- 
-    --   - Memory preallocation. Most of used memory allocation algorithms
-    --     align allocated segments on the some boundary, thus some amount of
-    --     additional memory can be preallocated without any impact. Such
-    --     preallocated memory can used later by Append/Insert operations
-    --     without reallocation.
- 
-    --  Reference counting uses GCC builtin atomic operations, which allows safe
-    --  sharing of internal data between Ada tasks. Nevertheless, this does not
-    --  make objects of Unbounded_String thread-safe: an instance cannot be
-    --  accessed by several tasks simultaneously.
- 
- with Ada.Strings.Maps;
- private with Ada.Finalization;
- private with System.Atomic_Counters;
- 
- package Ada.Strings.Unbounded is
-    pragma Preelaborate;
- 
-    type Unbounded_String is private;
-    pragma Preelaborable_Initialization (Unbounded_String);
- 
-    Null_Unbounded_String : constant Unbounded_String;
- 
-    function Length (Source : Unbounded_String) return Natural;
- 
-    type String_Access is access all String;
- 
-    procedure Free (X : in out String_Access);
- 
-    --------------------------------------------------------
-    -- Conversion, Concatenation, and Selection Functions --
-    --------------------------------------------------------
- 
-    function To_Unbounded_String
-      (Source : String)  return Unbounded_String;
- 
-    function To_Unbounded_String
-      (Length : Natural) return Unbounded_String;
- 
-    function To_String (Source : Unbounded_String) return String;
- 
-    procedure Set_Unbounded_String
-      (Target : out Unbounded_String;
-       Source : String);
-    pragma Ada_05 (Set_Unbounded_String);
- 
-    procedure Append
-      (Source   : in out Unbounded_String;
-       New_Item : Unbounded_String);
- 
-    procedure Append
-      (Source   : in out Unbounded_String;
-       New_Item : String);
- 
-    procedure Append
-      (Source   : in out Unbounded_String;
-       New_Item : Character);
- 
-    function "&"
-      (Left  : Unbounded_String;
-       Right : Unbounded_String) return Unbounded_String;
- 
-    function "&"
-      (Left  : Unbounded_String;
-       Right : String) return Unbounded_String;
- 
-    function "&"
-      (Left  : String;
-       Right : Unbounded_String) return Unbounded_String;
- 
-    function "&"
-      (Left  : Unbounded_String;
-       Right : Character) return Unbounded_String;
- 
-    function "&"
-      (Left  : Character;
-       Right : Unbounded_String) return Unbounded_String;
- 
-    function Element
-      (Source : Unbounded_String;
-       Index  : Positive) return Character;
- 
-    procedure Replace_Element
-      (Source : in out Unbounded_String;
-       Index  : Positive;
-       By     : Character);
- 
-    function Slice
-      (Source : Unbounded_String;
-       Low    : Positive;
-       High   : Natural) return String;
- 
-    function Unbounded_Slice
-      (Source : Unbounded_String;
-       Low    : Positive;
-       High   : Natural) return Unbounded_String;
-    pragma Ada_05 (Unbounded_Slice);
- 
-    procedure Unbounded_Slice
-      (Source : Unbounded_String;
-       Target : out Unbounded_String;
-       Low    : Positive;
-       High   : Natural);
-    pragma Ada_05 (Unbounded_Slice);
- 
-    function "="
-      (Left  : Unbounded_String;
-       Right : Unbounded_String) return Boolean;
- 
-    function "="
-      (Left  : Unbounded_String;
-       Right : String) return Boolean;
- 
-    function "="
-      (Left  : String;
-       Right : Unbounded_String) return Boolean;
- 
-    function "<"
-      (Left  : Unbounded_String;
-       Right : Unbounded_String) return Boolean;
- 
-    function "<"
-      (Left  : Unbounded_String;
-       Right : String) return Boolean;
- 
-    function "<"
-      (Left  : String;
-       Right : Unbounded_String) return Boolean;
- 
-    function "<="
-      (Left  : Unbounded_String;
-       Right : Unbounded_String) return Boolean;
- 
-    function "<="
-      (Left  : Unbounded_String;
-       Right : String) return Boolean;
- 
-    function "<="
-      (Left  : String;
-       Right : Unbounded_String) return Boolean;
- 
-    function ">"
-      (Left  : Unbounded_String;
-       Right : Unbounded_String) return Boolean;
- 
-    function ">"
-      (Left  : Unbounded_String;
-       Right : String) return Boolean;
- 
-    function ">"
-      (Left  : String;
-       Right : Unbounded_String) return Boolean;
- 
-    function ">="
-      (Left  : Unbounded_String;
-       Right : Unbounded_String) return Boolean;
- 
-    function ">="
-      (Left  : Unbounded_String;
-       Right : String) return Boolean;
- 
-    function ">="
-      (Left  : String;
-       Right : Unbounded_String) return Boolean;
- 
-    ------------------------
-    -- Search Subprograms --
-    ------------------------
- 
-    function Index
-      (Source  : Unbounded_String;
-       Pattern : String;
-       Going   : Direction := Forward;
-       Mapping : Maps.Character_Mapping := Maps.Identity) return Natural;
- 
-    function Index
-      (Source  : Unbounded_String;
-       Pattern : String;
-       Going   : Direction := Forward;
-       Mapping : Maps.Character_Mapping_Function) return Natural;
- 
-    function Index
-      (Source : Unbounded_String;
-       Set    : Maps.Character_Set;
-       Test   : Membership := Inside;
-       Going  : Direction  := Forward) return Natural;
- 
-    function Index
-      (Source  : Unbounded_String;
-       Pattern : String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Maps.Character_Mapping := Maps.Identity) return Natural;
-    pragma Ada_05 (Index);
- 
-    function Index
-      (Source  : Unbounded_String;
-       Pattern : String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Maps.Character_Mapping_Function) return Natural;
-    pragma Ada_05 (Index);
- 
-    function Index
-      (Source  : Unbounded_String;
-       Set     : Maps.Character_Set;
-       From    : Positive;
-       Test    : Membership := Inside;
-       Going   : Direction := Forward) return Natural;
-    pragma Ada_05 (Index);
- 
-    function Index_Non_Blank
-      (Source : Unbounded_String;
-       Going  : Direction := Forward) return Natural;
- 
-    function Index_Non_Blank
-      (Source : Unbounded_String;
-       From   : Positive;
-       Going  : Direction := Forward) return Natural;
-    pragma Ada_05 (Index_Non_Blank);
- 
-    function Count
-      (Source  : Unbounded_String;
-       Pattern : String;
-       Mapping : Maps.Character_Mapping := Maps.Identity) return Natural;
- 
-    function Count
-      (Source  : Unbounded_String;
-       Pattern : String;
-       Mapping : Maps.Character_Mapping_Function) return Natural;
- 
-    function Count
-      (Source : Unbounded_String;
-       Set    : Maps.Character_Set) return Natural;
- 
-    procedure Find_Token
-      (Source : Unbounded_String;
-       Set    : Maps.Character_Set;
-       From   : Positive;
-       Test   : Membership;
-       First  : out Positive;
-       Last   : out Natural);
-    pragma Ada_2012 (Find_Token);
- 
-    procedure Find_Token
-      (Source : Unbounded_String;
-       Set    : Maps.Character_Set;
-       Test   : Membership;
-       First  : out Positive;
-       Last   : out Natural);
- 
-    ------------------------------------
-    -- String Translation Subprograms --
-    ------------------------------------
- 
-    function Translate
-      (Source  : Unbounded_String;
-       Mapping : Maps.Character_Mapping) return Unbounded_String;
- 
-    procedure Translate
-      (Source  : in out Unbounded_String;
-       Mapping : Maps.Character_Mapping);
- 
-    function Translate
-      (Source  : Unbounded_String;
-       Mapping : Maps.Character_Mapping_Function) return Unbounded_String;
- 
-    procedure Translate
-      (Source  : in out Unbounded_String;
-       Mapping : Maps.Character_Mapping_Function);
- 
-    ---------------------------------------
-    -- String Transformation Subprograms --
-    ---------------------------------------
- 
-    function Replace_Slice
-      (Source : Unbounded_String;
-       Low    : Positive;
-       High   : Natural;
-       By     : String) return Unbounded_String;
- 
-    procedure Replace_Slice
-      (Source : in out Unbounded_String;
-       Low    : Positive;
-       High   : Natural;
-       By     : String);
- 
-    function Insert
-      (Source   : Unbounded_String;
-       Before   : Positive;
-       New_Item : String) return Unbounded_String;
- 
-    procedure Insert
-      (Source   : in out Unbounded_String;
-       Before   : Positive;
-       New_Item : String);
- 
-    function Overwrite
-      (Source   : Unbounded_String;
-       Position : Positive;
-       New_Item : String) return Unbounded_String;
- 
-    procedure Overwrite
-      (Source   : in out Unbounded_String;
-       Position : Positive;
-       New_Item : String);
- 
-    function Delete
-      (Source  : Unbounded_String;
-       From    : Positive;
-       Through : Natural) return Unbounded_String;
- 
-    procedure Delete
-      (Source  : in out Unbounded_String;
-       From    : Positive;
-       Through : Natural);
- 
-    function Trim
-      (Source : Unbounded_String;
-       Side   : Trim_End) return Unbounded_String;
- 
-    procedure Trim
-      (Source : in out Unbounded_String;
-       Side   : Trim_End);
- 
-    function Trim
-      (Source : Unbounded_String;
-       Left   : Maps.Character_Set;
-       Right  : Maps.Character_Set) return Unbounded_String;
- 
-    procedure Trim
-      (Source : in out Unbounded_String;
-       Left   : Maps.Character_Set;
-       Right  : Maps.Character_Set);
- 
-    function Head
-      (Source : Unbounded_String;
-       Count  : Natural;
-       Pad    : Character := Space) return Unbounded_String;
- 
-    procedure Head
-      (Source : in out Unbounded_String;
-       Count  : Natural;
-       Pad    : Character := Space);
- 
-    function Tail
-      (Source : Unbounded_String;
-       Count  : Natural;
-       Pad    : Character := Space) return Unbounded_String;
- 
-    procedure Tail
-      (Source : in out Unbounded_String;
-       Count  : Natural;
-       Pad    : Character := Space);
- 
-    function "*"
-      (Left  : Natural;
-       Right : Character) return Unbounded_String;
- 
-    function "*"
-      (Left  : Natural;
-       Right : String) return Unbounded_String;
- 
-    function "*"
-      (Left  : Natural;
-       Right : Unbounded_String) return Unbounded_String;
- 
- private
-    pragma Inline (Length);
- 
-    package AF renames Ada.Finalization;
- 
-    type Shared_String (Max_Length : Natural) is limited record
-       Counter : System.Atomic_Counters.Atomic_Counter;
-       --  Reference counter
- 
-       Last : Natural := 0;
-       Data : String (1 .. Max_Length);
-       --  Last is the index of last significant element of the Data. All
-       --  elements with larger indexes are currently insignificant.
-    end record;
- 
-    type Shared_String_Access is access all Shared_String;
- 
-    procedure Reference (Item : not null Shared_String_Access);
-    --  Increment reference counter
- 
-    procedure Unreference (Item : not null Shared_String_Access);
-    --  Decrement reference counter, deallocate Item when counter goes to zero
- 
-    function Can_Be_Reused
-      (Item   : not null Shared_String_Access;
-       Length : Natural) return Boolean;
-    --  Returns True if Shared_String can be reused. There are two criteria when
-    --  Shared_String can be reused: its reference counter must be one (thus
-    --  Shared_String is owned exclusively) and its size is sufficient to
-    --  store string with specified length effectively.
- 
-    function Allocate
-      (Max_Length : Natural) return not null Shared_String_Access;
-    --  Allocates new Shared_String with at least specified maximum length.
-    --  Actual maximum length of the allocated Shared_String can be slightly
-    --  greater. Returns reference to Empty_Shared_String when requested length
-    --  is zero.
- 
-    Empty_Shared_String : aliased Shared_String (0);
- 
-    function To_Unbounded (S : String) return Unbounded_String
-      renames To_Unbounded_String;
-    --  This renames are here only to be used in the pragma Stream_Convert
- 
-    type Unbounded_String is new AF.Controlled with record
-       Reference : not null Shared_String_Access := Empty_Shared_String'Access;
-    end record;
- 
-    pragma Stream_Convert (Unbounded_String, To_Unbounded, To_String);
-    --  Provide stream routines without dragging in Ada.Streams
- 
-    pragma Finalize_Storage_Only (Unbounded_String);
-    --  Finalization is required only for freeing storage
- 
-    overriding procedure Initialize (Object : in out Unbounded_String);
-    overriding procedure Adjust     (Object : in out Unbounded_String);
-    overriding procedure Finalize   (Object : in out Unbounded_String);
- 
-    Null_Unbounded_String : constant Unbounded_String :=
-                              (AF.Controlled with
-                                 Reference => Empty_Shared_String'Access);
- 
- end Ada.Strings.Unbounded;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-strunb.adb gcc-8.1.0/gcc/ada/a-strunb.adb
*** gcc-7.3.0/gcc/ada/a-strunb.adb	Mon Oct  1 09:41:22 2012
--- gcc-8.1.0/gcc/ada/a-strunb.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,1073 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                 A D A . S T R I N G S . U N B O U N D E D                --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2012, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Strings.Fixed;
- with Ada.Strings.Search;
- with Ada.Unchecked_Deallocation;
- 
- package body Ada.Strings.Unbounded is
- 
-    use Ada.Finalization;
- 
-    ---------
-    -- "&" --
-    ---------
- 
-    function "&"
-      (Left  : Unbounded_String;
-       Right : Unbounded_String) return Unbounded_String
-    is
-       L_Length : constant Natural := Left.Last;
-       R_Length : constant Natural := Right.Last;
-       Result   : Unbounded_String;
- 
-    begin
-       Result.Last := L_Length + R_Length;
- 
-       Result.Reference := new String (1 .. Result.Last);
- 
-       Result.Reference (1 .. L_Length) :=
-         Left.Reference (1 .. Left.Last);
-       Result.Reference (L_Length + 1 .. Result.Last) :=
-         Right.Reference (1 .. Right.Last);
- 
-       return Result;
-    end "&";
- 
-    function "&"
-      (Left  : Unbounded_String;
-       Right : String) return Unbounded_String
-    is
-       L_Length : constant Natural := Left.Last;
-       Result   : Unbounded_String;
- 
-    begin
-       Result.Last := L_Length + Right'Length;
- 
-       Result.Reference := new String (1 .. Result.Last);
- 
-       Result.Reference (1 .. L_Length) := Left.Reference (1 .. Left.Last);
-       Result.Reference (L_Length + 1 .. Result.Last) := Right;
- 
-       return Result;
-    end "&";
- 
-    function "&"
-      (Left  : String;
-       Right : Unbounded_String) return Unbounded_String
-    is
-       R_Length : constant Natural := Right.Last;
-       Result   : Unbounded_String;
- 
-    begin
-       Result.Last := Left'Length + R_Length;
- 
-       Result.Reference := new String (1 .. Result.Last);
- 
-       Result.Reference (1 .. Left'Length) := Left;
-       Result.Reference (Left'Length + 1 .. Result.Last) :=
-         Right.Reference (1 .. Right.Last);
- 
-       return Result;
-    end "&";
- 
-    function "&"
-      (Left  : Unbounded_String;
-       Right : Character) return Unbounded_String
-    is
-       Result : Unbounded_String;
- 
-    begin
-       Result.Last := Left.Last + 1;
- 
-       Result.Reference := new String (1 .. Result.Last);
- 
-       Result.Reference (1 .. Result.Last - 1) :=
-         Left.Reference (1 .. Left.Last);
-       Result.Reference (Result.Last) := Right;
- 
-       return Result;
-    end "&";
- 
-    function "&"
-      (Left  : Character;
-       Right : Unbounded_String) return Unbounded_String
-    is
-       Result : Unbounded_String;
- 
-    begin
-       Result.Last := Right.Last + 1;
- 
-       Result.Reference := new String (1 .. Result.Last);
-       Result.Reference (1) := Left;
-       Result.Reference (2 .. Result.Last) :=
-         Right.Reference (1 .. Right.Last);
-       return Result;
-    end "&";
- 
-    ---------
-    -- "*" --
-    ---------
- 
-    function "*"
-      (Left  : Natural;
-       Right : Character) return Unbounded_String
-    is
-       Result : Unbounded_String;
- 
-    begin
-       Result.Last   := Left;
- 
-       Result.Reference := new String (1 .. Left);
-       for J in Result.Reference'Range loop
-          Result.Reference (J) := Right;
-       end loop;
- 
-       return Result;
-    end "*";
- 
-    function "*"
-      (Left  : Natural;
-       Right : String) return Unbounded_String
-    is
-       Len    : constant Natural := Right'Length;
-       K      : Positive;
-       Result : Unbounded_String;
- 
-    begin
-       Result.Last := Left * Len;
- 
-       Result.Reference := new String (1 .. Result.Last);
- 
-       K := 1;
-       for J in 1 .. Left loop
-          Result.Reference (K .. K + Len - 1) := Right;
-          K := K + Len;
-       end loop;
- 
-       return Result;
-    end "*";
- 
-    function "*"
-      (Left  : Natural;
-       Right : Unbounded_String) return Unbounded_String
-    is
-       Len    : constant Natural := Right.Last;
-       K      : Positive;
-       Result : Unbounded_String;
- 
-    begin
-       Result.Last := Left * Len;
- 
-       Result.Reference := new String (1 .. Result.Last);
- 
-       K := 1;
-       for J in 1 .. Left loop
-          Result.Reference (K .. K + Len - 1) :=
-            Right.Reference (1 .. Right.Last);
-          K := K + Len;
-       end loop;
- 
-       return Result;
-    end "*";
- 
-    ---------
-    -- "<" --
-    ---------
- 
-    function "<"
-      (Left  : Unbounded_String;
-       Right : Unbounded_String) return Boolean
-    is
-    begin
-       return
-         Left.Reference (1 .. Left.Last) < Right.Reference (1 .. Right.Last);
-    end "<";
- 
-    function "<"
-      (Left  : Unbounded_String;
-       Right : String) return Boolean
-    is
-    begin
-       return Left.Reference (1 .. Left.Last) < Right;
-    end "<";
- 
-    function "<"
-      (Left  : String;
-       Right : Unbounded_String) return Boolean
-    is
-    begin
-       return Left < Right.Reference (1 .. Right.Last);
-    end "<";
- 
-    ----------
-    -- "<=" --
-    ----------
- 
-    function "<="
-      (Left  : Unbounded_String;
-       Right : Unbounded_String) return Boolean
-    is
-    begin
-       return
-         Left.Reference (1 .. Left.Last) <= Right.Reference (1 .. Right.Last);
-    end "<=";
- 
-    function "<="
-      (Left  : Unbounded_String;
-       Right : String) return Boolean
-    is
-    begin
-       return Left.Reference (1 .. Left.Last) <= Right;
-    end "<=";
- 
-    function "<="
-      (Left  : String;
-       Right : Unbounded_String) return Boolean
-    is
-    begin
-       return Left <= Right.Reference (1 .. Right.Last);
-    end "<=";
- 
-    ---------
-    -- "=" --
-    ---------
- 
-    function "="
-      (Left  : Unbounded_String;
-       Right : Unbounded_String) return Boolean
-    is
-    begin
-       return
-         Left.Reference (1 .. Left.Last) = Right.Reference (1 .. Right.Last);
-    end "=";
- 
-    function "="
-      (Left  : Unbounded_String;
-       Right : String) return Boolean
-    is
-    begin
-       return Left.Reference (1 .. Left.Last) = Right;
-    end "=";
- 
-    function "="
-      (Left  : String;
-       Right : Unbounded_String) return Boolean
-    is
-    begin
-       return Left = Right.Reference (1 .. Right.Last);
-    end "=";
- 
-    ---------
-    -- ">" --
-    ---------
- 
-    function ">"
-      (Left  : Unbounded_String;
-       Right : Unbounded_String) return Boolean
-    is
-    begin
-       return
-         Left.Reference (1 .. Left.Last) > Right.Reference (1 .. Right.Last);
-    end ">";
- 
-    function ">"
-      (Left  : Unbounded_String;
-       Right : String) return Boolean
-    is
-    begin
-       return Left.Reference (1 .. Left.Last) > Right;
-    end ">";
- 
-    function ">"
-      (Left  : String;
-       Right : Unbounded_String) return Boolean
-    is
-    begin
-       return Left > Right.Reference (1 .. Right.Last);
-    end ">";
- 
-    ----------
-    -- ">=" --
-    ----------
- 
-    function ">="
-      (Left  : Unbounded_String;
-       Right : Unbounded_String) return Boolean
-    is
-    begin
-       return
-         Left.Reference (1 .. Left.Last) >= Right.Reference (1 .. Right.Last);
-    end ">=";
- 
-    function ">="
-      (Left  : Unbounded_String;
-       Right : String) return Boolean
-    is
-    begin
-       return Left.Reference (1 .. Left.Last) >= Right;
-    end ">=";
- 
-    function ">="
-      (Left  : String;
-       Right : Unbounded_String) return Boolean
-    is
-    begin
-       return Left >= Right.Reference (1 .. Right.Last);
-    end ">=";
- 
-    ------------
-    -- Adjust --
-    ------------
- 
-    procedure Adjust (Object : in out Unbounded_String) is
-    begin
-       --  Copy string, except we do not copy the statically allocated null
-       --  string since it can never be deallocated. Note that we do not copy
-       --  extra string room here to avoid dragging unused allocated memory.
- 
-       if Object.Reference /= Null_String'Access then
-          Object.Reference := new String'(Object.Reference (1 .. Object.Last));
-       end if;
-    end Adjust;
- 
-    ------------
-    -- Append --
-    ------------
- 
-    procedure Append
-      (Source   : in out Unbounded_String;
-       New_Item : Unbounded_String)
-    is
-    begin
-       Realloc_For_Chunk (Source, New_Item.Last);
-       Source.Reference (Source.Last + 1 .. Source.Last + New_Item.Last) :=
-         New_Item.Reference (1 .. New_Item.Last);
-       Source.Last := Source.Last + New_Item.Last;
-    end Append;
- 
-    procedure Append
-      (Source   : in out Unbounded_String;
-       New_Item : String)
-    is
-    begin
-       Realloc_For_Chunk (Source, New_Item'Length);
-       Source.Reference (Source.Last + 1 .. Source.Last + New_Item'Length) :=
-         New_Item;
-       Source.Last := Source.Last + New_Item'Length;
-    end Append;
- 
-    procedure Append
-      (Source   : in out Unbounded_String;
-       New_Item : Character)
-    is
-    begin
-       Realloc_For_Chunk (Source, 1);
-       Source.Reference (Source.Last + 1) := New_Item;
-       Source.Last := Source.Last + 1;
-    end Append;
- 
-    -----------
-    -- Count --
-    -----------
- 
-    function Count
-      (Source  : Unbounded_String;
-       Pattern : String;
-       Mapping : Maps.Character_Mapping := Maps.Identity) return Natural
-    is
-    begin
-       return
-         Search.Count (Source.Reference (1 .. Source.Last), Pattern, Mapping);
-    end Count;
- 
-    function Count
-      (Source  : Unbounded_String;
-       Pattern : String;
-       Mapping : Maps.Character_Mapping_Function) return Natural
-    is
-    begin
-       return
-         Search.Count (Source.Reference (1 .. Source.Last), Pattern, Mapping);
-    end Count;
- 
-    function Count
-      (Source : Unbounded_String;
-       Set    : Maps.Character_Set) return Natural
-    is
-    begin
-       return Search.Count (Source.Reference (1 .. Source.Last), Set);
-    end Count;
- 
-    ------------
-    -- Delete --
-    ------------
- 
-    function Delete
-      (Source  : Unbounded_String;
-       From    : Positive;
-       Through : Natural) return Unbounded_String
-    is
-    begin
-       return
-         To_Unbounded_String
-           (Fixed.Delete (Source.Reference (1 .. Source.Last), From, Through));
-    end Delete;
- 
-    procedure Delete
-      (Source  : in out Unbounded_String;
-       From    : Positive;
-       Through : Natural)
-    is
-    begin
-       if From > Through then
-          null;
- 
-       elsif From < Source.Reference'First or else Through > Source.Last then
-          raise Index_Error;
- 
-       else
-          declare
-             Len : constant Natural := Through - From + 1;
- 
-          begin
-             Source.Reference (From .. Source.Last - Len) :=
-               Source.Reference (Through + 1 .. Source.Last);
-             Source.Last := Source.Last - Len;
-          end;
-       end if;
-    end Delete;
- 
-    -------------
-    -- Element --
-    -------------
- 
-    function Element
-      (Source : Unbounded_String;
-       Index  : Positive) return Character
-    is
-    begin
-       if Index <= Source.Last then
-          return Source.Reference (Index);
-       else
-          raise Strings.Index_Error;
-       end if;
-    end Element;
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    procedure Finalize (Object : in out Unbounded_String) is
-       procedure Deallocate is
-          new Ada.Unchecked_Deallocation (String, String_Access);
- 
-    begin
-       --  Note: Don't try to free statically allocated null string
- 
-       if Object.Reference /= Null_String'Access then
-          Deallocate (Object.Reference);
-          Object.Reference := Null_Unbounded_String.Reference;
-          Object.Last := 0;
-       end if;
-    end Finalize;
- 
-    ----------------
-    -- Find_Token --
-    ----------------
- 
-    procedure Find_Token
-      (Source : Unbounded_String;
-       Set    : Maps.Character_Set;
-       From   : Positive;
-       Test   : Strings.Membership;
-       First  : out Positive;
-       Last   : out Natural)
-    is
-    begin
-       Search.Find_Token
-         (Source.Reference (From .. Source.Last), Set, Test, First, Last);
-    end Find_Token;
- 
-    procedure Find_Token
-      (Source : Unbounded_String;
-       Set    : Maps.Character_Set;
-       Test   : Strings.Membership;
-       First  : out Positive;
-       Last   : out Natural)
-    is
-    begin
-       Search.Find_Token
-         (Source.Reference (1 .. Source.Last), Set, Test, First, Last);
-    end Find_Token;
- 
-    ----------
-    -- Free --
-    ----------
- 
-    procedure Free (X : in out String_Access) is
-       procedure Deallocate is
-          new Ada.Unchecked_Deallocation (String, String_Access);
- 
-    begin
-       --  Note: Do not try to free statically allocated null string
- 
-       if X /= Null_Unbounded_String.Reference then
-          Deallocate (X);
-       end if;
-    end Free;
- 
-    ----------
-    -- Head --
-    ----------
- 
-    function Head
-      (Source : Unbounded_String;
-       Count  : Natural;
-       Pad    : Character := Space) return Unbounded_String
-    is
-    begin
-       return To_Unbounded_String
-         (Fixed.Head (Source.Reference (1 .. Source.Last), Count, Pad));
-    end Head;
- 
-    procedure Head
-      (Source : in out Unbounded_String;
-       Count  : Natural;
-       Pad    : Character := Space)
-    is
-       Old : String_Access := Source.Reference;
-    begin
-       Source.Reference :=
-         new String'(Fixed.Head (Source.Reference (1 .. Source.Last),
-                     Count, Pad));
-       Source.Last := Source.Reference'Length;
-       Free (Old);
-    end Head;
- 
-    -----------
-    -- Index --
-    -----------
- 
-    function Index
-      (Source  : Unbounded_String;
-       Pattern : String;
-       Going   : Strings.Direction := Strings.Forward;
-       Mapping : Maps.Character_Mapping := Maps.Identity) return Natural
-    is
-    begin
-       return Search.Index
-         (Source.Reference (1 .. Source.Last), Pattern, Going, Mapping);
-    end Index;
- 
-    function Index
-      (Source  : Unbounded_String;
-       Pattern : String;
-       Going   : Direction := Forward;
-       Mapping : Maps.Character_Mapping_Function) return Natural
-    is
-    begin
-       return Search.Index
-         (Source.Reference (1 .. Source.Last), Pattern, Going, Mapping);
-    end Index;
- 
-    function Index
-      (Source : Unbounded_String;
-       Set    : Maps.Character_Set;
-       Test   : Strings.Membership := Strings.Inside;
-       Going  : Strings.Direction  := Strings.Forward) return Natural
-    is
-    begin
-       return Search.Index
-         (Source.Reference (1 .. Source.Last), Set, Test, Going);
-    end Index;
- 
-    function Index
-      (Source  : Unbounded_String;
-       Pattern : String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Maps.Character_Mapping := Maps.Identity) return Natural
-    is
-    begin
-       return Search.Index
-         (Source.Reference (1 .. Source.Last), Pattern, From, Going, Mapping);
-    end Index;
- 
-    function Index
-      (Source  : Unbounded_String;
-       Pattern : String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Maps.Character_Mapping_Function) return Natural
-    is
-    begin
-       return Search.Index
-         (Source.Reference (1 .. Source.Last), Pattern, From, Going, Mapping);
-    end Index;
- 
-    function Index
-      (Source  : Unbounded_String;
-       Set     : Maps.Character_Set;
-       From    : Positive;
-       Test    : Membership := Inside;
-       Going   : Direction := Forward) return Natural
-    is
-    begin
-       return Search.Index
-         (Source.Reference (1 .. Source.Last), Set, From, Test, Going);
-    end Index;
- 
-    function Index_Non_Blank
-      (Source : Unbounded_String;
-       Going  : Strings.Direction := Strings.Forward) return Natural
-    is
-    begin
-       return
-         Search.Index_Non_Blank
-           (Source.Reference (1 .. Source.Last), Going);
-    end Index_Non_Blank;
- 
-    function Index_Non_Blank
-      (Source : Unbounded_String;
-       From   : Positive;
-       Going  : Direction := Forward) return Natural
-    is
-    begin
-       return
-         Search.Index_Non_Blank
-           (Source.Reference (1 .. Source.Last), From, Going);
-    end Index_Non_Blank;
- 
-    ----------------
-    -- Initialize --
-    ----------------
- 
-    procedure Initialize (Object : in out Unbounded_String) is
-    begin
-       Object.Reference := Null_Unbounded_String.Reference;
-       Object.Last      := 0;
-    end Initialize;
- 
-    ------------
-    -- Insert --
-    ------------
- 
-    function Insert
-      (Source   : Unbounded_String;
-       Before   : Positive;
-       New_Item : String) return Unbounded_String
-    is
-    begin
-       return To_Unbounded_String
-         (Fixed.Insert (Source.Reference (1 .. Source.Last), Before, New_Item));
-    end Insert;
- 
-    procedure Insert
-      (Source   : in out Unbounded_String;
-       Before   : Positive;
-       New_Item : String)
-    is
-    begin
-       if Before not in Source.Reference'First .. Source.Last + 1 then
-          raise Index_Error;
-       end if;
- 
-       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;
-       Source.Last := Source.Last + New_Item'Length;
-    end Insert;
- 
-    ------------
-    -- Length --
-    ------------
- 
-    function Length (Source : Unbounded_String) return Natural is
-    begin
-       return Source.Last;
-    end Length;
- 
-    ---------------
-    -- Overwrite --
-    ---------------
- 
-    function Overwrite
-      (Source   : Unbounded_String;
-       Position : Positive;
-       New_Item : String) return Unbounded_String
-    is
-    begin
-       return To_Unbounded_String
-         (Fixed.Overwrite
-           (Source.Reference (1 .. Source.Last), Position, New_Item));
-    end Overwrite;
- 
-    procedure Overwrite
-      (Source    : in out Unbounded_String;
-       Position  : Positive;
-       New_Item  : String)
-    is
-       NL : constant Natural := New_Item'Length;
-    begin
-       if Position <= Source.Last - NL + 1 then
-          Source.Reference (Position .. Position + NL - 1) := New_Item;
-       else
-          declare
-             Old : String_Access := Source.Reference;
-          begin
-             Source.Reference := new String'
-               (Fixed.Overwrite
-                 (Source.Reference (1 .. Source.Last), Position, New_Item));
-             Source.Last := Source.Reference'Length;
-             Free (Old);
-          end;
-       end if;
-    end Overwrite;
- 
-    -----------------------
-    -- Realloc_For_Chunk --
-    -----------------------
- 
-    procedure Realloc_For_Chunk
-      (Source     : in out Unbounded_String;
-       Chunk_Size : Natural)
-    is
-       Growth_Factor : constant := 32;
-       --  The growth factor controls how much extra space is allocated when
-       --  we have to increase the size of an allocated unbounded string. By
-       --  allocating extra space, we avoid the need to reallocate on every
-       --  append, particularly important when a string is built up by repeated
-       --  append operations of small pieces. This is expressed as a factor so
-       --  32 means add 1/32 of the length of the string as growth space.
- 
-       Min_Mul_Alloc : constant := Standard'Maximum_Alignment;
-       --  Allocation will be done by a multiple of Min_Mul_Alloc This causes
-       --  no memory loss as most (all?) malloc implementations are obliged to
-       --  align the returned memory on the maximum alignment as malloc does not
-       --  know the target alignment.
- 
-       S_Length : constant Natural := Source.Reference'Length;
- 
-    begin
-       if Chunk_Size > S_Length - Source.Last then
-          declare
-             New_Size : constant Positive :=
-               S_Length + Chunk_Size + (S_Length / Growth_Factor);
- 
-             New_Rounded_Up_Size : constant Positive :=
-               ((New_Size - 1) / Min_Mul_Alloc + 1) * Min_Mul_Alloc;
- 
-             Tmp : constant String_Access :=
-               new String (1 .. New_Rounded_Up_Size);
- 
-          begin
-             Tmp (1 .. Source.Last) := Source.Reference (1 .. Source.Last);
-             Free (Source.Reference);
-             Source.Reference := Tmp;
-          end;
-       end if;
-    end Realloc_For_Chunk;
- 
-    ---------------------
-    -- Replace_Element --
-    ---------------------
- 
-    procedure Replace_Element
-      (Source : in out Unbounded_String;
-       Index  : Positive;
-       By     : Character)
-    is
-    begin
-       if Index <= Source.Last then
-          Source.Reference (Index) := By;
-       else
-          raise Strings.Index_Error;
-       end if;
-    end Replace_Element;
- 
-    -------------------
-    -- Replace_Slice --
-    -------------------
- 
-    function Replace_Slice
-      (Source : Unbounded_String;
-       Low    : Positive;
-       High   : Natural;
-       By     : String) return Unbounded_String
-    is
-    begin
-       return To_Unbounded_String
-         (Fixed.Replace_Slice
-            (Source.Reference (1 .. Source.Last), Low, High, By));
-    end Replace_Slice;
- 
-    procedure Replace_Slice
-      (Source : in out Unbounded_String;
-       Low    : Positive;
-       High   : Natural;
-       By     : String)
-    is
-       Old : String_Access := Source.Reference;
-    begin
-       Source.Reference := new String'
-         (Fixed.Replace_Slice
-            (Source.Reference (1 .. Source.Last), Low, High, By));
-       Source.Last := Source.Reference'Length;
-       Free (Old);
-    end Replace_Slice;
- 
-    --------------------------
-    -- Set_Unbounded_String --
-    --------------------------
- 
-    procedure Set_Unbounded_String
-      (Target : out Unbounded_String;
-       Source : String)
-    is
-       Old : String_Access := Target.Reference;
-    begin
-       Target.Last          := Source'Length;
-       Target.Reference     := new String (1 .. Source'Length);
-       Target.Reference.all := Source;
-       Free (Old);
-    end Set_Unbounded_String;
- 
-    -----------
-    -- Slice --
-    -----------
- 
-    function Slice
-      (Source : Unbounded_String;
-       Low    : Positive;
-       High   : Natural) return String
-    is
-    begin
-       --  Note: test of High > Length is in accordance with AI95-00128
- 
-       if Low > Source.Last + 1 or else High > Source.Last then
-          raise Index_Error;
-       else
-          return Source.Reference (Low .. High);
-       end if;
-    end Slice;
- 
-    ----------
-    -- Tail --
-    ----------
- 
-    function Tail
-      (Source : Unbounded_String;
-       Count  : Natural;
-       Pad    : Character := Space) return Unbounded_String is
-    begin
-       return To_Unbounded_String
-         (Fixed.Tail (Source.Reference (1 .. Source.Last), Count, Pad));
-    end Tail;
- 
-    procedure Tail
-      (Source : in out Unbounded_String;
-       Count  : Natural;
-       Pad    : Character := Space)
-    is
-       Old : String_Access := Source.Reference;
-    begin
-       Source.Reference := new String'
-         (Fixed.Tail (Source.Reference (1 .. Source.Last), Count, Pad));
-       Source.Last := Source.Reference'Length;
-       Free (Old);
-    end Tail;
- 
-    ---------------
-    -- To_String --
-    ---------------
- 
-    function To_String (Source : Unbounded_String) return String is
-    begin
-       return Source.Reference (1 .. Source.Last);
-    end To_String;
- 
-    -------------------------
-    -- To_Unbounded_String --
-    -------------------------
- 
-    function To_Unbounded_String (Source : String) return Unbounded_String is
-       Result : Unbounded_String;
-    begin
-       --  Do not allocate an empty string: keep the default
- 
-       if Source'Length > 0 then
-          Result.Last          := Source'Length;
-          Result.Reference     := new String (1 .. Source'Length);
-          Result.Reference.all := Source;
-       end if;
- 
-       return Result;
-    end To_Unbounded_String;
- 
-    function To_Unbounded_String
-      (Length : Natural) return Unbounded_String
-    is
-       Result : Unbounded_String;
- 
-    begin
-       --  Do not allocate an empty string: keep the default
- 
-       if Length > 0 then
-          Result.Last      := Length;
-          Result.Reference := new String (1 .. Length);
-       end if;
- 
-       return Result;
-    end To_Unbounded_String;
- 
-    ---------------
-    -- Translate --
-    ---------------
- 
-    function Translate
-      (Source  : Unbounded_String;
-       Mapping : Maps.Character_Mapping) return Unbounded_String
-    is
-    begin
-       return To_Unbounded_String
-         (Fixed.Translate (Source.Reference (1 .. Source.Last), Mapping));
-    end Translate;
- 
-    procedure Translate
-      (Source  : in out Unbounded_String;
-       Mapping : Maps.Character_Mapping)
-    is
-    begin
-       Fixed.Translate (Source.Reference (1 .. Source.Last), Mapping);
-    end Translate;
- 
-    function Translate
-      (Source  : Unbounded_String;
-       Mapping : Maps.Character_Mapping_Function) return Unbounded_String
-    is
-    begin
-       return To_Unbounded_String
-         (Fixed.Translate (Source.Reference (1 .. Source.Last), Mapping));
-    end Translate;
- 
-    procedure Translate
-      (Source  : in out Unbounded_String;
-       Mapping : Maps.Character_Mapping_Function)
-    is
-    begin
-       Fixed.Translate (Source.Reference (1 .. Source.Last), Mapping);
-    end Translate;
- 
-    ----------
-    -- Trim --
-    ----------
- 
-    function Trim
-      (Source : Unbounded_String;
-       Side   : Trim_End) return Unbounded_String
-    is
-    begin
-       return To_Unbounded_String
-         (Fixed.Trim (Source.Reference (1 .. Source.Last), Side));
-    end Trim;
- 
-    procedure Trim
-      (Source : in out Unbounded_String;
-       Side   : Trim_End)
-    is
-       Old : String_Access := Source.Reference;
-    begin
-       Source.Reference := new String'
-         (Fixed.Trim (Source.Reference (1 .. Source.Last), Side));
-       Source.Last      := Source.Reference'Length;
-       Free (Old);
-    end Trim;
- 
-    function Trim
-      (Source : Unbounded_String;
-       Left   : Maps.Character_Set;
-       Right  : Maps.Character_Set) return Unbounded_String
-    is
-    begin
-       return To_Unbounded_String
-         (Fixed.Trim (Source.Reference (1 .. Source.Last), Left, Right));
-    end Trim;
- 
-    procedure Trim
-      (Source : in out Unbounded_String;
-       Left   : Maps.Character_Set;
-       Right  : Maps.Character_Set)
-    is
-       Old : String_Access := Source.Reference;
-    begin
-       Source.Reference := new String'
-         (Fixed.Trim (Source.Reference (1 .. Source.Last), Left, Right));
-       Source.Last      := Source.Reference'Length;
-       Free (Old);
-    end Trim;
- 
-    ---------------------
-    -- Unbounded_Slice --
-    ---------------------
- 
-    function Unbounded_Slice
-      (Source : Unbounded_String;
-       Low    : Positive;
-       High   : Natural) return Unbounded_String
-    is
-    begin
-       if Low > Source.Last + 1 or else High > Source.Last then
-          raise Index_Error;
-       else
-          return To_Unbounded_String (Source.Reference.all (Low .. High));
-       end if;
-    end Unbounded_Slice;
- 
-    procedure Unbounded_Slice
-      (Source : Unbounded_String;
-       Target : out Unbounded_String;
-       Low    : Positive;
-       High   : Natural)
-    is
-    begin
-       if Low > Source.Last + 1 or else High > Source.Last then
-          raise Index_Error;
-       else
-          Target := To_Unbounded_String (Source.Reference.all (Low .. High));
-       end if;
-    end Unbounded_Slice;
- 
- end Ada.Strings.Unbounded;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-strunb.ads gcc-8.1.0/gcc/ada/a-strunb.ads
*** gcc-7.3.0/gcc/ada/a-strunb.ads	Mon Aug 29 13:01:34 2011
--- gcc-8.1.0/gcc/ada/a-strunb.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,437 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                 A D A . S T R I N G S . U N B O U N D E D                --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2011, Free Software Foundation, 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Strings.Maps;
- with Ada.Finalization;
- 
- package Ada.Strings.Unbounded is
-    pragma Preelaborate;
- 
-    type Unbounded_String is private;
-    pragma Preelaborable_Initialization (Unbounded_String);
- 
-    Null_Unbounded_String : constant Unbounded_String;
- 
-    function Length (Source : Unbounded_String) return Natural;
- 
-    type String_Access is access all String;
- 
-    procedure Free (X : in out String_Access);
- 
-    --------------------------------------------------------
-    -- Conversion, Concatenation, and Selection Functions --
-    --------------------------------------------------------
- 
-    function To_Unbounded_String
-      (Source : String)  return Unbounded_String;
- 
-    function To_Unbounded_String
-      (Length : Natural) return Unbounded_String;
- 
-    function To_String (Source : Unbounded_String) return String;
- 
-    procedure Set_Unbounded_String
-      (Target : out Unbounded_String;
-       Source : String);
-    pragma Ada_05 (Set_Unbounded_String);
- 
-    procedure Append
-      (Source   : in out Unbounded_String;
-       New_Item : Unbounded_String);
- 
-    procedure Append
-      (Source   : in out Unbounded_String;
-       New_Item : String);
- 
-    procedure Append
-      (Source   : in out Unbounded_String;
-       New_Item : Character);
- 
-    function "&"
-      (Left  : Unbounded_String;
-       Right : Unbounded_String) return Unbounded_String;
- 
-    function "&"
-      (Left  : Unbounded_String;
-       Right : String) return Unbounded_String;
- 
-    function "&"
-      (Left  : String;
-       Right : Unbounded_String) return Unbounded_String;
- 
-    function "&"
-      (Left  : Unbounded_String;
-       Right : Character) return Unbounded_String;
- 
-    function "&"
-      (Left  : Character;
-       Right : Unbounded_String) return Unbounded_String;
- 
-    function Element
-      (Source : Unbounded_String;
-       Index  : Positive) return Character;
- 
-    procedure Replace_Element
-      (Source : in out Unbounded_String;
-       Index  : Positive;
-       By     : Character);
- 
-    function Slice
-      (Source : Unbounded_String;
-       Low    : Positive;
-       High   : Natural) return String;
- 
-    function Unbounded_Slice
-      (Source : Unbounded_String;
-       Low    : Positive;
-       High   : Natural) return Unbounded_String;
-    pragma Ada_05 (Unbounded_Slice);
- 
-    procedure Unbounded_Slice
-      (Source : Unbounded_String;
-       Target : out Unbounded_String;
-       Low    : Positive;
-       High   : Natural);
-    pragma Ada_05 (Unbounded_Slice);
- 
-    function "="
-      (Left  : Unbounded_String;
-       Right : Unbounded_String) return Boolean;
- 
-    function "="
-      (Left  : Unbounded_String;
-       Right : String) return Boolean;
- 
-    function "="
-      (Left  : String;
-       Right : Unbounded_String) return Boolean;
- 
-    function "<"
-      (Left  : Unbounded_String;
-       Right : Unbounded_String) return Boolean;
- 
-    function "<"
-      (Left  : Unbounded_String;
-       Right : String) return Boolean;
- 
-    function "<"
-      (Left  : String;
-       Right : Unbounded_String) return Boolean;
- 
-    function "<="
-      (Left  : Unbounded_String;
-       Right : Unbounded_String) return Boolean;
- 
-    function "<="
-      (Left  : Unbounded_String;
-       Right : String) return Boolean;
- 
-    function "<="
-      (Left  : String;
-       Right : Unbounded_String) return Boolean;
- 
-    function ">"
-      (Left  : Unbounded_String;
-       Right : Unbounded_String) return Boolean;
- 
-    function ">"
-      (Left  : Unbounded_String;
-       Right : String) return Boolean;
- 
-    function ">"
-      (Left  : String;
-       Right : Unbounded_String) return Boolean;
- 
-    function ">="
-      (Left  : Unbounded_String;
-       Right : Unbounded_String) return Boolean;
- 
-    function ">="
-      (Left  : Unbounded_String;
-       Right : String) return Boolean;
- 
-    function ">="
-      (Left  : String;
-       Right : Unbounded_String) return Boolean;
- 
-    ------------------------
-    -- Search Subprograms --
-    ------------------------
- 
-    function Index
-      (Source  : Unbounded_String;
-       Pattern : String;
-       Going   : Direction := Forward;
-       Mapping : Maps.Character_Mapping := Maps.Identity) return Natural;
- 
-    function Index
-      (Source  : Unbounded_String;
-       Pattern : String;
-       Going   : Direction := Forward;
-       Mapping : Maps.Character_Mapping_Function) return Natural;
- 
-    function Index
-      (Source : Unbounded_String;
-       Set    : Maps.Character_Set;
-       Test   : Membership := Inside;
-       Going  : Direction  := Forward) return Natural;
- 
-    function Index
-      (Source  : Unbounded_String;
-       Pattern : String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Maps.Character_Mapping := Maps.Identity) return Natural;
-    pragma Ada_05 (Index);
- 
-    function Index
-      (Source  : Unbounded_String;
-       Pattern : String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Maps.Character_Mapping_Function) return Natural;
-    pragma Ada_05 (Index);
- 
-    function Index
-      (Source  : Unbounded_String;
-       Set     : Maps.Character_Set;
-       From    : Positive;
-       Test    : Membership := Inside;
-       Going   : Direction := Forward) return Natural;
-    pragma Ada_05 (Index);
- 
-    function Index_Non_Blank
-      (Source : Unbounded_String;
-       Going  : Direction := Forward) return Natural;
- 
-    function Index_Non_Blank
-      (Source : Unbounded_String;
-       From   : Positive;
-       Going  : Direction := Forward) return Natural;
-    pragma Ada_05 (Index_Non_Blank);
- 
-    function Count
-      (Source  : Unbounded_String;
-       Pattern : String;
-       Mapping : Maps.Character_Mapping := Maps.Identity) return Natural;
- 
-    function Count
-      (Source  : Unbounded_String;
-       Pattern : String;
-       Mapping : Maps.Character_Mapping_Function) return Natural;
- 
-    function Count
-      (Source : Unbounded_String;
-       Set    : Maps.Character_Set) return Natural;
- 
-    procedure Find_Token
-      (Source : Unbounded_String;
-       Set    : Maps.Character_Set;
-       From   : Positive;
-       Test   : Membership;
-       First  : out Positive;
-       Last   : out Natural);
-    pragma Ada_2012 (Find_Token);
- 
-    procedure Find_Token
-      (Source : Unbounded_String;
-       Set    : Maps.Character_Set;
-       Test   : Membership;
-       First  : out Positive;
-       Last   : out Natural);
- 
-    ------------------------------------
-    -- String Translation Subprograms --
-    ------------------------------------
- 
-    function Translate
-      (Source  : Unbounded_String;
-       Mapping : Maps.Character_Mapping) return Unbounded_String;
- 
-    procedure Translate
-      (Source  : in out Unbounded_String;
-       Mapping : Maps.Character_Mapping);
- 
-    function Translate
-      (Source  : Unbounded_String;
-       Mapping : Maps.Character_Mapping_Function) return Unbounded_String;
- 
-    procedure Translate
-      (Source  : in out Unbounded_String;
-       Mapping : Maps.Character_Mapping_Function);
- 
-    ---------------------------------------
-    -- String Transformation Subprograms --
-    ---------------------------------------
- 
-    function Replace_Slice
-      (Source : Unbounded_String;
-       Low    : Positive;
-       High   : Natural;
-       By     : String) return Unbounded_String;
- 
-    procedure Replace_Slice
-      (Source : in out Unbounded_String;
-       Low    : Positive;
-       High   : Natural;
-       By     : String);
- 
-    function Insert
-      (Source   : Unbounded_String;
-       Before   : Positive;
-       New_Item : String) return Unbounded_String;
- 
-    procedure Insert
-      (Source   : in out Unbounded_String;
-       Before   : Positive;
-       New_Item : String);
- 
-    function Overwrite
-      (Source   : Unbounded_String;
-       Position : Positive;
-       New_Item : String) return Unbounded_String;
- 
-    procedure Overwrite
-      (Source   : in out Unbounded_String;
-       Position : Positive;
-       New_Item : String);
- 
-    function Delete
-      (Source  : Unbounded_String;
-       From    : Positive;
-       Through : Natural) return Unbounded_String;
- 
-    procedure Delete
-      (Source  : in out Unbounded_String;
-       From    : Positive;
-       Through : Natural);
- 
-    function Trim
-      (Source : Unbounded_String;
-       Side   : Trim_End) return Unbounded_String;
- 
-    procedure Trim
-      (Source : in out Unbounded_String;
-       Side   : Trim_End);
- 
-    function Trim
-      (Source : Unbounded_String;
-       Left   : Maps.Character_Set;
-       Right  : Maps.Character_Set) return Unbounded_String;
- 
-    procedure Trim
-      (Source : in out Unbounded_String;
-       Left   : Maps.Character_Set;
-       Right  : Maps.Character_Set);
- 
-    function Head
-      (Source : Unbounded_String;
-       Count  : Natural;
-       Pad    : Character := Space) return Unbounded_String;
- 
-    procedure Head
-      (Source : in out Unbounded_String;
-       Count  : Natural;
-       Pad    : Character := Space);
- 
-    function Tail
-      (Source : Unbounded_String;
-       Count  : Natural;
-       Pad    : Character := Space) return Unbounded_String;
- 
-    procedure Tail
-      (Source : in out Unbounded_String;
-       Count  : Natural;
-       Pad    : Character := Space);
- 
-    function "*"
-      (Left  : Natural;
-       Right : Character) return Unbounded_String;
- 
-    function "*"
-      (Left  : Natural;
-       Right : String) return Unbounded_String;
- 
-    function "*"
-      (Left  : Natural;
-       Right : Unbounded_String) return Unbounded_String;
- 
- private
-    pragma Inline (Length);
- 
-    package AF renames Ada.Finalization;
- 
-    Null_String : aliased String := "";
- 
-    function To_Unbounded (S : String) return Unbounded_String
-      renames To_Unbounded_String;
- 
-    type Unbounded_String is new AF.Controlled with record
-       Reference : String_Access := Null_String'Access;
-       Last      : Natural       := 0;
-    end record;
-    --  The Unbounded_String is using a buffered implementation to increase
-    --  speed of the Append/Delete/Insert procedures. The Reference string
-    --  pointer above contains the current string value and extra room at the
-    --  end to be used by the next Append routine. Last is the index of the
-    --  string ending character. So the current string value is really
-    --  Reference (1 .. Last).
- 
-    pragma Stream_Convert (Unbounded_String, To_Unbounded, To_String);
-    --  Provide stream routines without dragging in Ada.Streams
- 
-    pragma Finalize_Storage_Only (Unbounded_String);
-    --  Finalization is required only for freeing storage
- 
-    procedure Initialize (Object : in out Unbounded_String);
-    procedure Adjust     (Object : in out Unbounded_String);
-    procedure Finalize   (Object : in out Unbounded_String);
- 
-    procedure Realloc_For_Chunk
-      (Source     : in out Unbounded_String;
-       Chunk_Size : Natural);
-    pragma Inline (Realloc_For_Chunk);
-    --  Adjust the size allocated for the string. Add at least Chunk_Size so it
-    --  is safe to add a string of this size at the end of the current content.
-    --  The real size allocated for the string is Chunk_Size + x of the current
-    --  string size. This buffered handling makes the Append unbounded string
-    --  routines very fast. This spec is in the private part so that it can be
-    --  accessed from children (e.g. from Unbounded.Text_IO).
- 
-    Null_Unbounded_String : constant Unbounded_String :=
-                              (AF.Controlled with
-                                 Reference => Null_String'Access,
-                                 Last      => 0);
- end Ada.Strings.Unbounded;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ststio.adb gcc-8.1.0/gcc/ada/a-ststio.adb
*** gcc-7.3.0/gcc/ada/a-ststio.adb	Thu Jul 31 13:29:58 2014
--- gcc-8.1.0/gcc/ada/a-ststio.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,490 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                A D A . S T R E A M S . S T R E A M _ I O                 --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 Interfaces.C_Streams; use Interfaces.C_Streams;
- 
- with System;               use System;
- with System.Communication; use System.Communication;
- with System.File_IO;
- with System.Soft_Links;
- with System.CRTL;
- 
- with Ada.Unchecked_Conversion;
- with Ada.Unchecked_Deallocation;
- 
- package body Ada.Streams.Stream_IO is
- 
-    package FIO renames System.File_IO;
-    package SSL renames System.Soft_Links;
- 
-    subtype AP is FCB.AFCB_Ptr;
- 
-    function To_FCB is new Ada.Unchecked_Conversion (File_Mode, FCB.File_Mode);
-    function To_SIO is new Ada.Unchecked_Conversion (FCB.File_Mode, File_Mode);
-    use type FCB.File_Mode;
-    use type FCB.Shared_Status_Type;
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    procedure Set_Position (File : File_Type);
-    --  Sets file position pointer according to value of current index
- 
-    -------------------
-    -- AFCB_Allocate --
-    -------------------
- 
-    function AFCB_Allocate (Control_Block : Stream_AFCB) return FCB.AFCB_Ptr is
-       pragma Warnings (Off, Control_Block);
-    begin
-       return new Stream_AFCB;
-    end AFCB_Allocate;
- 
-    ----------------
-    -- AFCB_Close --
-    ----------------
- 
-    --  No special processing required for closing Stream_IO file
- 
-    procedure AFCB_Close (File : not null access Stream_AFCB) is
-       pragma Warnings (Off, File);
-    begin
-       null;
-    end AFCB_Close;
- 
-    ---------------
-    -- AFCB_Free --
-    ---------------
- 
-    procedure AFCB_Free (File : not null access Stream_AFCB) is
-       type FCB_Ptr is access all Stream_AFCB;
-       FT : FCB_Ptr := FCB_Ptr (File);
- 
-       procedure Free is new Ada.Unchecked_Deallocation (Stream_AFCB, FCB_Ptr);
- 
-    begin
-       Free (FT);
-    end AFCB_Free;
- 
-    -----------
-    -- Close --
-    -----------
- 
-    procedure Close (File : in out File_Type) is
-    begin
-       FIO.Close (AP (File)'Unrestricted_Access);
-    end Close;
- 
-    ------------
-    -- Create --
-    ------------
- 
-    procedure Create
-      (File : in out File_Type;
-       Mode : File_Mode := Out_File;
-       Name : String := "";
-       Form : String := "")
-    is
-       Dummy_File_Control_Block : Stream_AFCB;
-       pragma Warnings (Off, Dummy_File_Control_Block);
-       --  Yes, we know this is never assigned a value, only the tag
-       --  is used for dispatching purposes, so that's expected.
- 
-    begin
-       FIO.Open (File_Ptr  => AP (File),
-                 Dummy_FCB => Dummy_File_Control_Block,
-                 Mode      => To_FCB (Mode),
-                 Name      => Name,
-                 Form      => Form,
-                 Amethod   => 'S',
-                 Creat     => True,
-                 Text      => False);
-       File.Last_Op := Op_Write;
-    end Create;
- 
-    ------------
-    -- Delete --
-    ------------
- 
-    procedure Delete (File : in out File_Type) is
-    begin
-       FIO.Delete (AP (File)'Unrestricted_Access);
-    end Delete;
- 
-    -----------------
-    -- End_Of_File --
-    -----------------
- 
-    function End_Of_File (File : File_Type) return Boolean is
-    begin
-       FIO.Check_Read_Status (AP (File));
-       return File.Index > Size (File);
-    end End_Of_File;
- 
-    -----------
-    -- Flush --
-    -----------
- 
-    procedure Flush (File : File_Type) is
-    begin
-       FIO.Flush (AP (File));
-    end Flush;
- 
-    ----------
-    -- Form --
-    ----------
- 
-    function Form (File : File_Type) return String is
-    begin
-       return FIO.Form (AP (File));
-    end Form;
- 
-    -----------
-    -- Index --
-    -----------
- 
-    function Index (File : File_Type) return Positive_Count is
-    begin
-       FIO.Check_File_Open (AP (File));
-       return File.Index;
-    end Index;
- 
-    -------------
-    -- Is_Open --
-    -------------
- 
-    function Is_Open (File : File_Type) return Boolean is
-    begin
-       return FIO.Is_Open (AP (File));
-    end Is_Open;
- 
-    ----------
-    -- Mode --
-    ----------
- 
-    function Mode (File : File_Type) return File_Mode is
-    begin
-       return To_SIO (FIO.Mode (AP (File)));
-    end Mode;
- 
-    ----------
-    -- Name --
-    ----------
- 
-    function Name (File : File_Type) return String is
-    begin
-       return FIO.Name (AP (File));
-    end Name;
- 
-    ----------
-    -- Open --
-    ----------
- 
-    procedure Open
-      (File : in out File_Type;
-       Mode : File_Mode;
-       Name : String;
-       Form : String := "")
-    is
-       Dummy_File_Control_Block : Stream_AFCB;
-       pragma Warnings (Off, Dummy_File_Control_Block);
-       --  Yes, we know this is never assigned a value, only the tag
-       --  is used for dispatching purposes, so that's expected.
- 
-    begin
-       FIO.Open (File_Ptr  => AP (File),
-                 Dummy_FCB => Dummy_File_Control_Block,
-                 Mode      => To_FCB (Mode),
-                 Name      => Name,
-                 Form      => Form,
-                 Amethod   => 'S',
-                 Creat     => False,
-                 Text      => False);
- 
-       --  Ensure that the stream index is set properly (e.g., for Append_File)
- 
-       Reset (File, Mode);
- 
-       --  Set last operation. The purpose here is to ensure proper handling
-       --  of the initial operation. In general, a write after a read requires
-       --  resetting and doing a seek, so we set the last operation as Read
-       --  for an In_Out file, but for an Out file we set the last operation
-       --  to Op_Write, since in this case it is not necessary to do a seek
-       --  (and furthermore there are situations (such as the case of writing
-       --  a sequential Posix FIFO file) where the lseek would cause problems.
- 
-       File.Last_Op := (if Mode = Out_File then Op_Write else Op_Read);
-    end Open;
- 
-    ----------
-    -- Read --
-    ----------
- 
-    procedure Read
-      (File : File_Type;
-       Item : out Stream_Element_Array;
-       Last : out Stream_Element_Offset;
-       From : Positive_Count)
-    is
-    begin
-       Set_Index (File, From);
-       Read (File, Item, Last);
-    end Read;
- 
-    procedure Read
-      (File : File_Type;
-       Item : out Stream_Element_Array;
-       Last : out Stream_Element_Offset)
-    is
-       Nread : size_t;
- 
-    begin
-       FIO.Check_Read_Status (AP (File));
- 
-       --  If last operation was not a read, or if in file sharing mode,
-       --  then reset the physical pointer of the file to match the index
-       --  We lock out task access over the two operations in this case.
- 
-       if File.Last_Op /= Op_Read
-         or else File.Shared_Status = FCB.Yes
-       then
-          Locked_Processing : begin
-             SSL.Lock_Task.all;
-             Set_Position (File);
-             FIO.Read_Buf (AP (File), Item'Address, Item'Length, Nread);
-             SSL.Unlock_Task.all;
- 
-          exception
-             when others =>
-                SSL.Unlock_Task.all;
-                raise;
-          end Locked_Processing;
- 
-       else
-          FIO.Read_Buf (AP (File), Item'Address, Item'Length, Nread);
-       end if;
- 
-       File.Index := File.Index + Count (Nread);
-       File.Last_Op := Op_Read;
-       Last := Last_Index (Item'First, Nread);
-    end Read;
- 
-    --  This version of Read is the primitive operation on the underlying
-    --  Stream type, used when a Stream_IO file is treated as a Stream
- 
-    procedure Read
-      (File : in out Stream_AFCB;
-       Item : out Ada.Streams.Stream_Element_Array;
-       Last : out Ada.Streams.Stream_Element_Offset)
-    is
-    begin
-       Read (File'Unchecked_Access, Item, Last);
-    end Read;
- 
-    -----------
-    -- Reset --
-    -----------
- 
-    procedure Reset (File : in out File_Type; Mode : File_Mode) is
-    begin
-       FIO.Check_File_Open (AP (File));
- 
-       --  Reset file index to start of file for read/write cases. For
-       --  the append case, the Set_Mode call repositions the index.
- 
-       File.Index := 1;
-       Set_Mode (File, Mode);
-    end Reset;
- 
-    procedure Reset (File : in out File_Type) is
-    begin
-       Reset (File, To_SIO (File.Mode));
-    end Reset;
- 
-    ---------------
-    -- Set_Index --
-    ---------------
- 
-    procedure Set_Index (File : File_Type; To : Positive_Count) is
-    begin
-       FIO.Check_File_Open (AP (File));
-       File.Index := Count (To);
-       File.Last_Op := Op_Other;
-    end Set_Index;
- 
-    --------------
-    -- Set_Mode --
-    --------------
- 
-    procedure Set_Mode (File : in out File_Type; Mode : File_Mode) is
-    begin
-       FIO.Check_File_Open (AP (File));
- 
-       --  If we are switching from read to write, or vice versa, and
-       --  we are not already open in update mode, then reopen in update
-       --  mode now. Note that we can use Inout_File as the mode for the
-       --  call since File_IO handles all modes for all file types.
- 
-       if ((File.Mode = FCB.In_File) /= (Mode = In_File))
-         and then not File.Update_Mode
-       then
-          FIO.Reset (AP (File)'Unrestricted_Access, FCB.Inout_File);
-          File.Update_Mode := True;
-       end if;
- 
-       --  Set required mode and position to end of file if append mode
- 
-       File.Mode := To_FCB (Mode);
-       FIO.Append_Set (AP (File));
- 
-       if File.Mode = FCB.Append_File then
-          if Standard'Address_Size = 64 then
-             File.Index := Count (ftell64 (File.Stream)) + 1;
-          else
-             File.Index := Count (ftell (File.Stream)) + 1;
-          end if;
-       end if;
- 
-       File.Last_Op := Op_Other;
-    end Set_Mode;
- 
-    ------------------
-    -- Set_Position --
-    ------------------
- 
-    procedure Set_Position (File : File_Type) is
-       use type System.CRTL.int64;
-       R : int;
-    begin
-       R := fseek64 (File.Stream, System.CRTL.int64 (File.Index) - 1, SEEK_SET);
- 
-       if R /= 0 then
-          raise Use_Error;
-       end if;
-    end Set_Position;
- 
-    ----------
-    -- Size --
-    ----------
- 
-    function Size (File : File_Type) return Count is
-    begin
-       FIO.Check_File_Open (AP (File));
- 
-       if File.File_Size = -1 then
-          File.Last_Op := Op_Other;
- 
-          if fseek64 (File.Stream, 0, SEEK_END) /= 0 then
-             raise Device_Error;
-          end if;
- 
-          File.File_Size := Stream_Element_Offset (ftell64 (File.Stream));
- 
-          if File.File_Size = -1 then
-             raise Use_Error;
-          end if;
-       end if;
- 
-       return Count (File.File_Size);
-    end Size;
- 
-    ------------
-    -- Stream --
-    ------------
- 
-    function Stream (File : File_Type) return Stream_Access is
-    begin
-       FIO.Check_File_Open (AP (File));
-       return Stream_Access (File);
-    end Stream;
- 
-    -----------
-    -- Write --
-    -----------
- 
-    procedure Write
-      (File : File_Type;
-       Item : Stream_Element_Array;
-       To   : Positive_Count)
-    is
-    begin
-       Set_Index (File, To);
-       Write (File, Item);
-    end Write;
- 
-    procedure Write
-      (File : File_Type;
-       Item : Stream_Element_Array)
-    is
-    begin
-       FIO.Check_Write_Status (AP (File));
- 
-       --  If last operation was not a write, or if in file sharing mode,
-       --  then reset the physical pointer of the file to match the index
-       --  We lock out task access over the two operations in this case.
- 
-       if File.Last_Op /= Op_Write
-         or else File.Shared_Status = FCB.Yes
-       then
-          Locked_Processing : begin
-             SSL.Lock_Task.all;
-             Set_Position (File);
-             FIO.Write_Buf (AP (File), Item'Address, Item'Length);
-             SSL.Unlock_Task.all;
- 
-          exception
-             when others =>
-                SSL.Unlock_Task.all;
-                raise;
-          end Locked_Processing;
- 
-       else
-          FIO.Write_Buf (AP (File), Item'Address, Item'Length);
-       end if;
- 
-       File.Index := File.Index + Item'Length;
-       File.Last_Op := Op_Write;
-       File.File_Size := -1;
-    end Write;
- 
-    --  This version of Write is the primitive operation on the underlying
-    --  Stream type, used when a Stream_IO file is treated as a Stream
- 
-    procedure Write
-      (File : in out Stream_AFCB;
-       Item : Ada.Streams.Stream_Element_Array)
-    is
-    begin
-       Write (File'Unchecked_Access, Item);
-    end Write;
- 
- end Ada.Streams.Stream_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ststio.ads gcc-8.1.0/gcc/ada/a-ststio.ads
*** gcc-7.3.0/gcc/ada/a-ststio.ads	Mon Jul  9 13:09:52 2012
--- gcc-8.1.0/gcc/ada/a-ststio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,223 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                A D A . S T R E A M S . S T R E A M _ I O                 --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2012, Free Software Foundation, 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.IO_Exceptions;
- with System.File_Control_Block;
- 
- package Ada.Streams.Stream_IO is
-    pragma Preelaborate;
- 
-    type Stream_Access is access all Root_Stream_Type'Class;
- 
-    type File_Type is limited private;
- 
-    type File_Mode is (In_File, Out_File, Append_File);
- 
-    --  The following representation clause allows the use of unchecked
-    --  conversion for rapid translation between the File_Mode type
-    --  used in this package and System.File_IO.
- 
-    for File_Mode use
-      (In_File     => 0,  -- System.File_IO.File_Mode'Pos (In_File)
-       Out_File    => 2,  -- System.File_IO.File_Mode'Pos (Out_File)
-       Append_File => 3); -- System.File_IO.File_Mode'Pos (Append_File)
- 
-    type Count is new Stream_Element_Offset
-      range 0 .. Stream_Element_Offset'Last;
- 
-    subtype Positive_Count is Count range 1 .. Count'Last;
-    --  Index into file, in stream elements
- 
-    ---------------------
-    -- File Management --
-    ---------------------
- 
-    procedure Create
-      (File : in out File_Type;
-       Mode : File_Mode := Out_File;
-       Name : String := "";
-       Form : String := "");
- 
-    procedure Open
-      (File : in out File_Type;
-       Mode : File_Mode;
-       Name : String;
-       Form : String := "");
- 
-    procedure Close  (File : in out File_Type);
-    procedure Delete (File : in out File_Type);
-    procedure Reset  (File : in out File_Type; Mode : File_Mode);
-    procedure Reset  (File : in out File_Type);
- 
-    function Mode (File : File_Type) return File_Mode;
-    function Name (File : File_Type) return String;
-    function Form (File : File_Type) return String;
- 
-    function Is_Open     (File : File_Type) return Boolean;
-    function End_Of_File (File : File_Type) return Boolean;
- 
-    function Stream (File : File_Type) return Stream_Access;
- 
-    -----------------------------
-    -- Input-Output Operations --
-    -----------------------------
- 
-    procedure Read
-      (File : File_Type;
-       Item : out Stream_Element_Array;
-       Last : out Stream_Element_Offset;
-       From : Positive_Count);
- 
-    procedure Read
-      (File : File_Type;
-       Item : out Stream_Element_Array;
-       Last : out Stream_Element_Offset);
- 
-    procedure Write
-      (File : File_Type;
-       Item : Stream_Element_Array;
-       To   : Positive_Count);
- 
-    procedure Write
-      (File : File_Type;
-       Item : Stream_Element_Array);
- 
-    ----------------------------------------
-    -- Operations on Position within File --
-    ----------------------------------------
- 
-    procedure Set_Index (File : File_Type; To : Positive_Count);
- 
-    function Index (File : File_Type) return Positive_Count;
-    function Size  (File : File_Type) return Count;
- 
-    procedure Set_Mode (File : in out File_Type; Mode : File_Mode);
- 
-    --  Note: The parameter file is IN OUT in the RM, but this is clearly
-    --  an oversight, and was intended to be IN, see AI95-00057.
- 
-    procedure Flush (File : File_Type);
- 
-    ----------------
-    -- Exceptions --
-    ----------------
- 
-    Status_Error : exception renames IO_Exceptions.Status_Error;
-    Mode_Error   : exception renames IO_Exceptions.Mode_Error;
-    Name_Error   : exception renames IO_Exceptions.Name_Error;
-    Use_Error    : exception renames IO_Exceptions.Use_Error;
-    Device_Error : exception renames IO_Exceptions.Device_Error;
-    End_Error    : exception renames IO_Exceptions.End_Error;
-    Data_Error   : exception renames IO_Exceptions.Data_Error;
- 
- private
- 
-    --  The following procedures have a File_Type formal of mode IN OUT because
-    --  they may close the original file. The Close operation may raise an
-    --  exception, but in that case we want any assignment to the formal to
-    --  be effective anyway, so it must be passed by reference (or the caller
-    --  will be left with a dangling pointer).
- 
-    pragma Export_Procedure
-      (Internal  => Close,
-       External  => "",
-       Mechanism => Reference);
-    pragma Export_Procedure
-      (Internal  => Delete,
-       External  => "",
-       Mechanism => Reference);
-    pragma Export_Procedure
-      (Internal        => Reset,
-       External        => "",
-       Parameter_Types => (File_Type),
-       Mechanism       => Reference);
-    pragma Export_Procedure
-      (Internal        => Reset,
-       External        => "",
-       Parameter_Types => (File_Type, File_Mode),
-       Mechanism       => (File => Reference));
-    pragma Export_Procedure
-      (Internal  => Set_Mode,
-       External  => "",
-       Mechanism => (File => Reference));
- 
-    package FCB renames System.File_Control_Block;
- 
-    -----------------------------
-    -- Stream_IO Control Block --
-    -----------------------------
- 
-    type Operation is (Op_Read, Op_Write, Op_Other);
-    --  Type used to record last operation (to optimize sequential operations)
- 
-    type Stream_AFCB is new FCB.AFCB with record
-       Index : Count := 1;
-       --  Current Index value
- 
-       File_Size : Stream_Element_Offset := -1;
-       --  Cached value of File_Size, so that we do not keep recomputing it
-       --  when not necessary (otherwise End_Of_File becomes gruesomely slow).
-       --  A value of minus one means that there is no cached value.
- 
-       Last_Op : Operation := Op_Other;
-       --  Last operation performed on file, used to avoid unnecessary
-       --  repositioning between successive read or write operations.
- 
-       Update_Mode : Boolean := False;
-       --  Set if the mode is changed from write to read or vice versa.
-       --  Indicates that the file has been reopened in update mode.
- 
-    end record;
- 
-    type File_Type is access all Stream_AFCB;
- 
-    overriding function AFCB_Allocate
-      (Control_Block : Stream_AFCB) return FCB.AFCB_Ptr;
- 
-    overriding procedure AFCB_Close (File : not null access Stream_AFCB);
-    overriding procedure AFCB_Free  (File : not null access Stream_AFCB);
- 
-    overriding procedure Read
-      (File : in out Stream_AFCB;
-       Item : out Ada.Streams.Stream_Element_Array;
-       Last : out Ada.Streams.Stream_Element_Offset);
-    --  Read operation used when Stream_IO file is treated directly as Stream
- 
-    overriding procedure Write
-      (File : in out Stream_AFCB;
-       Item : Ada.Streams.Stream_Element_Array);
-    --  Write operation used when Stream_IO file is treated directly as Stream
- 
- end Ada.Streams.Stream_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-stunau-shared.adb gcc-8.1.0/gcc/ada/a-stunau-shared.adb
*** gcc-7.3.0/gcc/ada/a-stunau-shared.adb	Wed Jun 23 12:51:37 2010
--- gcc-8.1.0/gcc/ada/a-stunau-shared.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,62 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                          GNAT RUN-TIME COMPONENTS                        --
- --                                                                          --
- --            A D A . S T R I N G S . U N B O U N D E D . A U X             --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2010, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 Ada.Strings.Unbounded.Aux is
- 
-    ----------------
-    -- Get_String --
-    ----------------
- 
-    procedure Get_String
-      (U : Unbounded_String;
-       S : out Big_String_Access;
-       L : out Natural)
-    is
-       X : aliased Big_String;
-       for X'Address use U.Reference.Data'Address;
-    begin
-       S := X'Unchecked_Access;
-       L := U.Reference.Last;
-    end Get_String;
- 
-    ----------------
-    -- Set_String --
-    ----------------
- 
-    procedure Set_String (UP : in out Unbounded_String; S : String_Access) is
-       X : String_Access := S;
- 
-    begin
-       Set_Unbounded_String (UP, S.all);
-       Free (X);
-    end Set_String;
- 
- end Ada.Strings.Unbounded.Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-stunau.adb gcc-8.1.0/gcc/ada/a-stunau.adb
*** gcc-7.3.0/gcc/ada/a-stunau.adb	Fri Jun 18 12:29:49 2010
--- gcc-8.1.0/gcc/ada/a-stunau.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,62 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                          GNAT RUN-TIME COMPONENTS                        --
- --                                                                          --
- --            A D A . S T R I N G S . U N B O U N D E D . A U X             --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          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- --
- -- 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 Ada.Strings.Unbounded.Aux is
- 
-    ----------------
-    -- Get_String --
-    ----------------
- 
-    procedure Get_String
-      (U : Unbounded_String;
-       S : out Big_String_Access;
-       L : out Natural)
-    is
-       X : aliased Big_String;
-       for X'Address use U.Reference.all'Address;
- 
-    begin
-       S := X'Unchecked_Access;
-       L := U.Last;
-    end Get_String;
- 
-    ----------------
-    -- Set_String --
-    ----------------
- 
-    procedure Set_String (UP : in out Unbounded_String; S : String_Access) is
-    begin
-       Finalize (UP);
-       UP.Reference := S;
-       UP.Last := UP.Reference'Length;
-    end Set_String;
- 
- end Ada.Strings.Unbounded.Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-stunau.ads gcc-8.1.0/gcc/ada/a-stunau.ads
*** gcc-7.3.0/gcc/ada/a-stunau.ads	Fri Aug  5 14:14:36 2011
--- gcc-8.1.0/gcc/ada/a-stunau.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,77 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                          GNAT RUN-TIME COMPONENTS                        --
- --                                                                          --
- --            A D A . S T R I N G S . U N B O U N D E D . A U X             --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2011, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 child package of Ada.Strings.Unbounded provides some specialized
- --  access functions which are intended to allow more efficient use of the
- --  facilities of Ada.Strings.Unbounded, particularly by other layered
- --  utilities (such as GNAT.SPITBOL.Patterns).
- 
- package Ada.Strings.Unbounded.Aux is
-    pragma Preelaborate;
- 
-    subtype Big_String is String (1 .. Positive'Last);
-    pragma Suppress_Initialization (Big_String);
-    --  Type used to obtain string access to given address. Initialization is
-    --  suppressed, since we never want to have variables of this type, and
-    --  we never want to attempt initialiazation of virtual variables of this
-    --  type (e.g. when pragma Normalize_Scalars is used).
- 
-    type Big_String_Access is access all Big_String;
-    for Big_String_Access'Storage_Size use 0;
-    --  We use this access type to pass a pointer to an area of storage to be
-    --  accessed as a string. Of course when this pointer is used, it is the
-    --  responsibility of the accessor to ensure proper bounds. The storage
-    --  size clause ensures we do not allocate variables of this type.
- 
-    procedure Get_String
-      (U : Unbounded_String;
-       S : out Big_String_Access;
-       L : out Natural);
-    pragma Inline (Get_String);
-    --  This procedure returns the internal string pointer used in the
-    --  representation of an unbounded string as well as the actual current
-    --  length (which may be less than S.all'Length because in general there
-    --  can be extra space assigned). The characters of this string may be
-    --  not be modified via the returned pointer,  and are valid only as
-    --  long as the original unbounded string is not accessed or modified.
-    --
-    --  This procedure is much more efficient than the use of To_String
-    --  since it avoids the need to copy the string. The lower bound of the
-    --  referenced string returned by this call is always one, so the actual
-    --  string data is always accessible as S (1 .. L).
- 
-    procedure Set_String (UP : in out Unbounded_String; S : String_Access);
-    pragma Inline (Set_String);
-    --  This version of Set_Unbounded_String takes a string access value, rather
-    --  than a string. The lower bound of the string value is required to be
-    --  one, and this requirement is not checked.
- 
- end Ada.Strings.Unbounded.Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-stunha.adb gcc-8.1.0/gcc/ada/a-stunha.adb
*** gcc-7.3.0/gcc/ada/a-stunha.adb	Mon Jun 22 12:24:57 2009
--- gcc-8.1.0/gcc/ada/a-stunha.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,40 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --           A D A . S T R I N G S . U N B O U N D E D . H A S H            --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2004-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- --
- -- 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.String_Hash;
- 
- function Ada.Strings.Unbounded.Hash
-   (Key : Unbounded_String) return Containers.Hash_Type
- is
-    use Ada.Containers;
-    function Hash is new System.String_Hash.Hash
-      (Character, String, Hash_Type);
- begin
-    return Hash (To_String (Key));
- end Ada.Strings.Unbounded.Hash;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-stunha.ads gcc-8.1.0/gcc/ada/a-stunha.ads
*** gcc-7.3.0/gcc/ada/a-stunha.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-stunha.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,21 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --           A D A . S T R I N G S . U N B O U N D E D . H A S H            --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Containers;
- 
- function Ada.Strings.Unbounded.Hash
-   (Key : Unbounded_String) return Containers.Hash_Type;
- 
- pragma Preelaborate (Ada.Strings.Unbounded.Hash);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-stuten.adb gcc-8.1.0/gcc/ada/a-stuten.adb
*** gcc-7.3.0/gcc/ada/a-stuten.adb	Wed Jun 23 12:44:34 2010
--- gcc-8.1.0/gcc/ada/a-stuten.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,209 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --              A D A . S T R I N G S . U T F _ E N C O D I N G             --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --             Copyright (C) 2010, Free Software Foundation, Inc.           --
- --                                                                          --
- -- GNAT is 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 Ada.Strings.UTF_Encoding is
-    use Interfaces;
- 
-    --------------
-    -- Encoding --
-    --------------
- 
-    function Encoding
-      (Item    : UTF_String;
-       Default : Encoding_Scheme := UTF_8) return Encoding_Scheme
-    is
-    begin
-       if Item'Length >= 2 then
-          if Item (Item'First .. Item'First + 1) = BOM_16BE then
-             return UTF_16BE;
- 
-          elsif Item (Item'First .. Item'First + 1) = BOM_16LE then
-             return UTF_16LE;
- 
-          elsif Item'Length >= 3
-            and then Item (Item'First .. Item'First + 2) = BOM_8
-          then
-             return UTF_8;
-          end if;
-       end if;
- 
-       return Default;
-    end Encoding;
- 
-    -----------------
-    -- From_UTF_16 --
-    -----------------
- 
-    function From_UTF_16
-      (Item          : UTF_16_Wide_String;
-       Output_Scheme : UTF_XE_Encoding;
-       Output_BOM    : Boolean := False) return UTF_String
-    is
-       BSpace : constant Natural := 2 * Boolean'Pos (Output_BOM);
-       Result : UTF_String (1 .. 2 * Item'Length + BSpace);
-       Len    : Natural;
-       C      : Unsigned_16;
-       Iptr   : Natural;
- 
-    begin
-       if Output_BOM then
-          Result (1 .. 2) :=
-            (if Output_Scheme = UTF_16BE then BOM_16BE else BOM_16LE);
-          Len := 2;
-       else
-          Len := 0;
-       end if;
- 
-       --  Skip input BOM
- 
-       Iptr := Item'First;
- 
-       if Iptr <= Item'Last and then Item (Iptr) = BOM_16 (1) then
-          Iptr := Iptr + 1;
-       end if;
- 
-       --  UTF-16BE case
- 
-       if Output_Scheme = UTF_16BE then
-          while Iptr <= Item'Last loop
-             C := To_Unsigned_16 (Item (Iptr));
-             Result (Len + 1) := Character'Val (Shift_Right (C, 8));
-             Result (Len + 2) := Character'Val (C and 16#00_FF#);
-             Len := Len + 2;
-             Iptr := Iptr + 1;
-          end loop;
- 
-       --  UTF-16LE case
- 
-       else
-          while Iptr <= Item'Last loop
-             C := To_Unsigned_16 (Item (Iptr));
-             Result (Len + 1) := Character'Val (C and 16#00_FF#);
-             Result (Len + 2) := Character'Val (Shift_Right (C, 8));
-             Len := Len + 2;
-             Iptr := Iptr + 1;
-          end loop;
-       end if;
- 
-       return Result (1 .. Len);
-    end From_UTF_16;
- 
-    --------------------------
-    -- Raise_Encoding_Error --
-    --------------------------
- 
-    procedure Raise_Encoding_Error (Index : Natural) is
-       Val : constant String := Index'Img;
-    begin
-       raise Encoding_Error with
-         "bad input at Item (" & Val (Val'First + 1 .. Val'Last) & ')';
-    end Raise_Encoding_Error;
- 
-    ---------------
-    -- To_UTF_16 --
-    ---------------
- 
-    function To_UTF_16
-      (Item         : UTF_String;
-       Input_Scheme : UTF_XE_Encoding;
-       Output_BOM   : Boolean := False) return UTF_16_Wide_String
-    is
-       Result : UTF_16_Wide_String (1 .. Item'Length / 2 + 1);
-       Len    : Natural;
-       Iptr   : Natural;
- 
-    begin
-       if Item'Length mod 2 /= 0 then
-          raise Encoding_Error with "UTF-16BE/LE string has odd length";
-       end if;
- 
-       --  Deal with input BOM, skip if OK, error if bad BOM
- 
-       Iptr := Item'First;
- 
-       if Item'Length >= 2 then
-          if Item (Iptr .. Iptr + 1) = BOM_16BE then
-             if Input_Scheme = UTF_16BE then
-                Iptr := Iptr + 2;
-             else
-                Raise_Encoding_Error (Iptr);
-             end if;
- 
-          elsif Item (Iptr .. Iptr + 1) = BOM_16LE then
-             if Input_Scheme = UTF_16LE then
-                Iptr := Iptr + 2;
-             else
-                Raise_Encoding_Error (Iptr);
-             end if;
- 
-          elsif Item'Length >= 3 and then Item (Iptr .. Iptr + 2) = BOM_8 then
-             Raise_Encoding_Error (Iptr);
-          end if;
-       end if;
- 
-       --  Output BOM if specified
- 
-       if Output_BOM then
-          Result (1) := BOM_16 (1);
-          Len := 1;
-       else
-          Len := 0;
-       end if;
- 
-       --  UTF-16BE case
- 
-       if Input_Scheme = UTF_16BE then
-          while Iptr < Item'Last loop
-             Len := Len + 1;
-             Result (Len) :=
-               Wide_Character'Val
-                 (Character'Pos (Item (Iptr)) * 256 +
-                    Character'Pos (Item (Iptr + 1)));
-             Iptr := Iptr + 2;
-          end loop;
- 
-       --  UTF-16LE case
- 
-       else
-          while Iptr < Item'Last loop
-             Len := Len + 1;
-             Result (Len) :=
-               Wide_Character'Val
-                 (Character'Pos (Item (Iptr)) +
-                  Character'Pos (Item (Iptr + 1)) * 256);
-             Iptr := Iptr + 2;
-          end loop;
-       end if;
- 
-       return Result (1 .. Len);
-    end To_UTF_16;
- 
- end Ada.Strings.UTF_Encoding;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-stuten.ads gcc-8.1.0/gcc/ada/a-stuten.ads
*** gcc-7.3.0/gcc/ada/a-stuten.ads	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/a-stuten.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,144 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --              A D A . S T R I N G S . U T F _ E N C O D I N G             --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- 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 one of the Ada 2012 package defined in AI05-0137-1. It is a parent
- --  package that contains declarations used in the child packages for handling
- --  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);
- 
-    subtype UTF_String is String;
-    --  Used to represent a string of 8-bit values containing a sequence of
-    --  values encoded in one of three ways (UTF-8, UTF-16BE, or UTF-16LE).
-    --  Typically used in connection with a Scheme parameter indicating which
-    --  of the encodings applies. This is not strictly a String value in the
-    --  sense defined in the Ada RM, but in practice type String accommodates
-    --  all possible 256 codes, and can be used to hold any sequence of 8-bit
-    --  codes. We use String directly rather than create a new type so that
-    --  all existing facilities for manipulating type String (e.g. the child
-    --  packages of Ada.Strings) are available for manipulation of UTF_Strings.
- 
-    type Encoding_Scheme is (UTF_8, UTF_16BE, UTF_16LE);
-    --  Used to specify which of three possible encodings apply to a UTF_String
- 
-    subtype UTF_8_String is String;
-    --  Similar to UTF_String but specifically represents a UTF-8 encoded string
- 
-    subtype UTF_16_Wide_String is Wide_String;
-    --  This is similar to UTF_8_String but is used to represent a Wide_String
-    --  value which is a sequence of 16-bit values encoded using UTF-16. Again
-    --  this is not strictly a Wide_String in the sense of the Ada RM, but the
-    --  type Wide_String can be used to represent a sequence of arbitrary 16-bit
-    --  values, and it is more convenient to use Wide_String than a new type.
- 
-    Encoding_Error : exception;
-    --  This exception is raised in the following situations:
-    --    a) A UTF encoded string contains an invalid encoding sequence
-    --    b) A UTF-16BE or UTF-16LE input string has an odd length
-    --    c) An incorrect character value is present in the Input string
-    --    d) The result for a Wide_Character output exceeds 16#FFFF#
-    --  The exception message has the index value where the error occurred.
- 
-    --  The BOM (BYTE_ORDER_MARK) values defined here are used at the start of
-    --  a string to indicate the encoding. The convention in this package is
-    --  that on input a correct BOM is ignored and an incorrect BOM causes an
-    --  Encoding_Error exception. On output, the output string may or may not
-    --  include a BOM depending on the setting of Output_BOM.
- 
-    BOM_8    : constant UTF_8_String :=
-                 Character'Val (16#EF#) &
-                 Character'Val (16#BB#) &
-                 Character'Val (16#BF#);
- 
-    BOM_16BE : constant UTF_String :=
-                 Character'Val (16#FE#) &
-                 Character'Val (16#FF#);
- 
-    BOM_16LE : constant UTF_String :=
-                 Character'Val (16#FF#) &
-                 Character'Val (16#FE#);
- 
-    BOM_16   : constant UTF_16_Wide_String :=
-                 (1 => Wide_Character'Val (16#FEFF#));
- 
-    function Encoding
-      (Item    : UTF_String;
-       Default : Encoding_Scheme := UTF_8) return Encoding_Scheme;
-    --  This function inspects a UTF_String value to determine whether it
-    --  starts with a BOM for UTF-8, UTF-16BE, or UTF_16LE. If so, the result
-    --  is the scheme corresponding to the BOM. If no valid BOM is present
-    --  then the result is the specified Default value.
- 
- 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
- 
-    --  Utility routines for converting between UTF-16 and UTF-16LE/BE
- 
-    function From_UTF_16
-      (Item          : UTF_16_Wide_String;
-       Output_Scheme : UTF_XE_Encoding;
-       Output_BOM    : Boolean := False) return UTF_String;
-    --  The input string Item is encoded in UTF-16. The output is encoded using
-    --  Output_Scheme (which is either UTF-16LE or UTF-16BE). There are no error
-    --  cases. The output starts with BOM_16BE/LE if Output_BOM is True.
- 
-    function To_UTF_16
-      (Item          : UTF_String;
-       Input_Scheme  : UTF_XE_Encoding;
-       Output_BOM    : Boolean := False) return UTF_16_Wide_String;
-    --  The input string Item is encoded using Input_Scheme which is either
-    --  UTF-16LE or UTF-16BE. The output is the corresponding UTF_16 wide
-    --  string. Encoding error is raised if the length of the input is odd.
-    --  The output starts with BOM_16 if Output_BOM is True.
- 
-    procedure Raise_Encoding_Error (Index : Natural);
-    pragma No_Return (Raise_Encoding_Error);
-    --  Raise Encoding_Error exception for bad encoding in input item. The
-    --  parameter Index is the index of the location in Item for the error.
- 
- end Ada.Strings.UTF_Encoding;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-stwibo.adb gcc-8.1.0/gcc/ada/a-stwibo.adb
*** gcc-7.3.0/gcc/ada/a-stwibo.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-stwibo.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,94 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --             A D A . S T R I N G S . W I D E _ B O U N D E D              --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          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- --
- -- 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 Ada.Strings.Wide_Bounded is
- 
-    package body Generic_Bounded_Length is
- 
-       ---------
-       -- "*" --
-       ---------
- 
-       function "*"
-         (Left  : Natural;
-          Right : Wide_Character) return Bounded_Wide_String
-       is
-       begin
-          return Times (Left, Right, Max_Length);
-       end "*";
- 
-       function "*"
-         (Left  : Natural;
-          Right : Wide_String) return Bounded_Wide_String
-       is
-       begin
-          return Times (Left, Right, Max_Length);
-       end "*";
- 
-       ---------------
-       -- Replicate --
-       ---------------
- 
-       function Replicate
-         (Count : Natural;
-          Item  : Wide_Character;
-          Drop  : Strings.Truncation := Strings.Error)
-          return Bounded_Wide_String
-       is
-       begin
-          return Super_Replicate (Count, Item, Drop, Max_Length);
-       end Replicate;
- 
-       function Replicate
-         (Count : Natural;
-          Item  : Wide_String;
-          Drop  : Strings.Truncation := Strings.Error)
-          return Bounded_Wide_String
-       is
-       begin
-          return Super_Replicate (Count, Item, Drop, Max_Length);
-       end Replicate;
- 
-       ----------------------------
-       -- To_Bounded_Wide_String --
-       ----------------------------
- 
-       function To_Bounded_Wide_String
-         (Source : Wide_String;
-          Drop   : Strings.Truncation := Strings.Error)
-          return Bounded_Wide_String
-       is
-       begin
-          return To_Super_String (Source, Max_Length, Drop);
-       end To_Bounded_Wide_String;
- 
-    end Generic_Bounded_Length;
- end Ada.Strings.Wide_Bounded;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-stwibo.ads gcc-8.1.0/gcc/ada/a-stwibo.ads
*** gcc-7.3.0/gcc/ada/a-stwibo.ads	Wed Apr 20 10:10:32 2016
--- gcc-8.1.0/gcc/ada/a-stwibo.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,921 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --             A D A . S T R I N G S . W I D E _ B O U N D E D              --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2015, Free Software Foundation, 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Strings.Wide_Maps;
- with Ada.Strings.Wide_Superbounded;
- 
- package Ada.Strings.Wide_Bounded is
-    pragma Preelaborate;
- 
-    generic
-       Max : Positive;
-       --  Maximum length of a Bounded_Wide_String
- 
-    package Generic_Bounded_Length is
- 
-       Max_Length : constant Positive := Max;
- 
-       type Bounded_Wide_String is private;
-       pragma Preelaborable_Initialization (Bounded_Wide_String);
- 
-       Null_Bounded_Wide_String : constant Bounded_Wide_String;
- 
-       subtype Length_Range is Natural range 0 .. Max_Length;
- 
-       function Length (Source : Bounded_Wide_String) return Length_Range;
- 
-       --------------------------------------------------------
-       -- Conversion, Concatenation, and Selection Functions --
-       --------------------------------------------------------
- 
-       function To_Bounded_Wide_String
-         (Source : Wide_String;
-          Drop   : Truncation := Error) return Bounded_Wide_String;
- 
-       function To_Wide_String
-         (Source : Bounded_Wide_String) return Wide_String;
- 
-       procedure Set_Bounded_Wide_String
-         (Target : out Bounded_Wide_String;
-          Source : Wide_String;
-          Drop   : Truncation := Error);
-       pragma Ada_05 (Set_Bounded_Wide_String);
- 
-       function Append
-         (Left  : Bounded_Wide_String;
-          Right : Bounded_Wide_String;
-          Drop  : Truncation  := Error) return Bounded_Wide_String;
- 
-       function Append
-         (Left  : Bounded_Wide_String;
-          Right : Wide_String;
-          Drop  : Truncation := Error) return Bounded_Wide_String;
- 
-       function Append
-         (Left  : Wide_String;
-          Right : Bounded_Wide_String;
-          Drop  : Truncation := Error) return Bounded_Wide_String;
- 
-       function Append
-         (Left  : Bounded_Wide_String;
-          Right : Wide_Character;
-          Drop  : Truncation := Error) return Bounded_Wide_String;
- 
-       function Append
-         (Left  : Wide_Character;
-          Right : Bounded_Wide_String;
-          Drop  : Truncation := Error) return Bounded_Wide_String;
- 
-       procedure Append
-         (Source   : in out Bounded_Wide_String;
-          New_Item : Bounded_Wide_String;
-          Drop     : Truncation  := Error);
- 
-       procedure Append
-         (Source   : in out Bounded_Wide_String;
-          New_Item : Wide_String;
-          Drop     : Truncation  := Error);
- 
-       procedure Append
-         (Source   : in out Bounded_Wide_String;
-          New_Item : Wide_Character;
-          Drop     : Truncation  := Error);
- 
-       function "&"
-         (Left  : Bounded_Wide_String;
-          Right : Bounded_Wide_String) return Bounded_Wide_String;
- 
-       function "&"
-         (Left  : Bounded_Wide_String;
-          Right : Wide_String) return Bounded_Wide_String;
- 
-       function "&"
-         (Left  : Wide_String;
-          Right : Bounded_Wide_String) return Bounded_Wide_String;
- 
-       function "&"
-         (Left  : Bounded_Wide_String;
-          Right : Wide_Character) return Bounded_Wide_String;
- 
-       function "&"
-         (Left  : Wide_Character;
-          Right : Bounded_Wide_String) return Bounded_Wide_String;
- 
-       function Element
-         (Source : Bounded_Wide_String;
-          Index  : Positive) return Wide_Character;
- 
-       procedure Replace_Element
-         (Source : in out Bounded_Wide_String;
-          Index  : Positive;
-          By     : Wide_Character);
- 
-       function Slice
-         (Source : Bounded_Wide_String;
-          Low    : Positive;
-          High   : Natural) return Wide_String;
- 
-       function Bounded_Slice
-         (Source : Bounded_Wide_String;
-          Low    : Positive;
-          High   : Natural) return Bounded_Wide_String;
-       pragma Ada_05 (Bounded_Slice);
- 
-       procedure Bounded_Slice
-         (Source : Bounded_Wide_String;
-          Target : out Bounded_Wide_String;
-          Low    : Positive;
-          High   : Natural);
-       pragma Ada_05 (Bounded_Slice);
- 
-       function "="
-         (Left  : Bounded_Wide_String;
-          Right : Bounded_Wide_String) return Boolean;
- 
-       function "="
-         (Left  : Bounded_Wide_String;
-          Right : Wide_String) return Boolean;
- 
-       function "="
-         (Left  : Wide_String;
-          Right : Bounded_Wide_String) return Boolean;
- 
-       function "<"
-         (Left  : Bounded_Wide_String;
-          Right : Bounded_Wide_String) return Boolean;
- 
-       function "<"
-         (Left  : Bounded_Wide_String;
-          Right : Wide_String) return Boolean;
- 
-       function "<"
-         (Left  : Wide_String;
-          Right : Bounded_Wide_String) return Boolean;
- 
-       function "<="
-         (Left  : Bounded_Wide_String;
-          Right : Bounded_Wide_String) return Boolean;
- 
-       function "<="
-         (Left  : Bounded_Wide_String;
-          Right : Wide_String) return Boolean;
- 
-       function "<="
-         (Left  : Wide_String;
-          Right : Bounded_Wide_String) return Boolean;
- 
-       function ">"
-         (Left  : Bounded_Wide_String;
-          Right : Bounded_Wide_String) return Boolean;
- 
-       function ">"
-         (Left  : Bounded_Wide_String;
-          Right : Wide_String) return Boolean;
- 
-       function ">"
-         (Left  : Wide_String;
-          Right : Bounded_Wide_String) return Boolean;
- 
-       function ">="
-         (Left  : Bounded_Wide_String;
-          Right : Bounded_Wide_String) return Boolean;
- 
-       function ">="
-         (Left  : Bounded_Wide_String;
-          Right : Wide_String) return Boolean;
- 
-       function ">="
-         (Left  : Wide_String;
-          Right : Bounded_Wide_String) return Boolean;
- 
-       ----------------------
-       -- Search Functions --
-       ----------------------
- 
-       function Index
-         (Source  : Bounded_Wide_String;
-          Pattern : Wide_String;
-          Going   : Direction := Forward;
-          Mapping : Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity)
-          return Natural;
- 
-       function Index
-         (Source  : Bounded_Wide_String;
-          Pattern : Wide_String;
-          Going   : Direction := Forward;
-          Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural;
- 
-       function Index
-         (Source : Bounded_Wide_String;
-          Set    : Wide_Maps.Wide_Character_Set;
-          Test   : Membership := Inside;
-          Going  : Direction  := Forward) return Natural;
- 
-       function Index
-         (Source  : Bounded_Wide_String;
-          Pattern : Wide_String;
-          From    : Positive;
-          Going   : Direction := Forward;
-          Mapping : Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity)
-          return Natural;
-       pragma Ada_05 (Index);
- 
-       function Index
-         (Source  : Bounded_Wide_String;
-          Pattern : Wide_String;
-          From    : Positive;
-          Going   : Direction := Forward;
-          Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural;
-       pragma Ada_05 (Index);
- 
-       function Index
-         (Source  : Bounded_Wide_String;
-          Set     : Wide_Maps.Wide_Character_Set;
-          From    : Positive;
-          Test    : Membership := Inside;
-          Going   : Direction := Forward) return Natural;
-       pragma Ada_05 (Index);
- 
-       function Index_Non_Blank
-         (Source : Bounded_Wide_String;
-          Going  : Direction := Forward) return Natural;
- 
-       function Index_Non_Blank
-         (Source : Bounded_Wide_String;
-          From   : Positive;
-          Going  : Direction := Forward) return Natural;
-       pragma Ada_05 (Index_Non_Blank);
- 
-       function Count
-         (Source  : Bounded_Wide_String;
-          Pattern : Wide_String;
-          Mapping : Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity)
-          return Natural;
- 
-       function Count
-         (Source  : Bounded_Wide_String;
-          Pattern : Wide_String;
-          Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural;
- 
-       function Count
-         (Source : Bounded_Wide_String;
-          Set    : Wide_Maps.Wide_Character_Set) return Natural;
- 
-       procedure Find_Token
-         (Source : Bounded_Wide_String;
-          Set    : Wide_Maps.Wide_Character_Set;
-          From   : Positive;
-          Test   : Membership;
-          First  : out Positive;
-          Last   : out Natural);
-       pragma Ada_2012 (Find_Token);
- 
-       procedure Find_Token
-         (Source : Bounded_Wide_String;
-          Set    : Wide_Maps.Wide_Character_Set;
-          Test   : Membership;
-          First  : out Positive;
-          Last   : out Natural);
- 
-       ------------------------------------
-       -- String Translation Subprograms --
-       ------------------------------------
- 
-       function Translate
-         (Source  : Bounded_Wide_String;
-          Mapping : Wide_Maps.Wide_Character_Mapping)
-          return Bounded_Wide_String;
- 
-       procedure Translate
-         (Source  : in out Bounded_Wide_String;
-          Mapping : Wide_Maps.Wide_Character_Mapping);
- 
-       function Translate
-         (Source  : Bounded_Wide_String;
-          Mapping : Wide_Maps.Wide_Character_Mapping_Function)
-          return Bounded_Wide_String;
- 
-       procedure Translate
-         (Source  : in out Bounded_Wide_String;
-          Mapping : Wide_Maps.Wide_Character_Mapping_Function);
- 
-       ---------------------------------------
-       -- String Transformation Subprograms --
-       ---------------------------------------
- 
-       function Replace_Slice
-         (Source : Bounded_Wide_String;
-          Low    : Positive;
-          High   : Natural;
-          By     : Wide_String;
-          Drop   : Truncation := Error) return Bounded_Wide_String;
- 
-       procedure Replace_Slice
-         (Source   : in out Bounded_Wide_String;
-          Low      : Positive;
-          High     : Natural;
-          By       : Wide_String;
-          Drop     : Truncation := Error);
- 
-       function Insert
-         (Source   : Bounded_Wide_String;
-          Before   : Positive;
-          New_Item : Wide_String;
-          Drop     : Truncation := Error) return Bounded_Wide_String;
- 
-       procedure Insert
-         (Source   : in out Bounded_Wide_String;
-          Before   : Positive;
-          New_Item : Wide_String;
-          Drop     : Truncation := Error);
- 
-       function Overwrite
-         (Source   : Bounded_Wide_String;
-          Position : Positive;
-          New_Item : Wide_String;
-          Drop     : Truncation := Error) return Bounded_Wide_String;
- 
-       procedure Overwrite
-         (Source    : in out Bounded_Wide_String;
-          Position  : Positive;
-          New_Item  : Wide_String;
-          Drop      : Truncation := Error);
- 
-       function Delete
-         (Source  : Bounded_Wide_String;
-          From    : Positive;
-          Through : Natural) return Bounded_Wide_String;
- 
-       procedure Delete
-         (Source  : in out Bounded_Wide_String;
-          From    : Positive;
-          Through : Natural);
- 
-       ---------------------------------
-       -- String Selector Subprograms --
-       ---------------------------------
- 
-       function Trim
-         (Source : Bounded_Wide_String;
-          Side   : Trim_End) return Bounded_Wide_String;
- 
-       procedure Trim
-         (Source : in out Bounded_Wide_String;
-          Side   : Trim_End);
- 
-       function Trim
-         (Source : Bounded_Wide_String;
-           Left  : Wide_Maps.Wide_Character_Set;
-           Right : Wide_Maps.Wide_Character_Set) return Bounded_Wide_String;
- 
-       procedure Trim
-         (Source : in out Bounded_Wide_String;
-          Left   : Wide_Maps.Wide_Character_Set;
-          Right  : Wide_Maps.Wide_Character_Set);
- 
-       function Head
-         (Source : Bounded_Wide_String;
-          Count  : Natural;
-          Pad    : Wide_Character := Wide_Space;
-          Drop   : Truncation := Error) return Bounded_Wide_String;
- 
-       procedure Head
-         (Source : in out Bounded_Wide_String;
-          Count  : Natural;
-          Pad    : Wide_Character  := Wide_Space;
-          Drop   : Truncation := Error);
- 
-       function Tail
-         (Source : Bounded_Wide_String;
-          Count  : Natural;
-          Pad    : Wide_Character := Wide_Space;
-          Drop   : Truncation     := Error) return Bounded_Wide_String;
- 
-       procedure Tail
-         (Source : in out Bounded_Wide_String;
-          Count  : Natural;
-          Pad    : Wide_Character := Wide_Space;
-          Drop   : Truncation     := Error);
- 
-       ------------------------------------
-       -- String Constructor Subprograms --
-       ------------------------------------
- 
-       function "*"
-         (Left  : Natural;
-          Right : Wide_Character) return Bounded_Wide_String;
- 
-       function "*"
-         (Left  : Natural;
-          Right : Wide_String) return Bounded_Wide_String;
- 
-       function "*"
-         (Left  : Natural;
-          Right : Bounded_Wide_String) return Bounded_Wide_String;
- 
-       function Replicate
-         (Count : Natural;
-          Item  : Wide_Character;
-          Drop  : Truncation := Error) return Bounded_Wide_String;
- 
-       function Replicate
-         (Count : Natural;
-          Item  : Wide_String;
-          Drop  : Truncation := Error) return Bounded_Wide_String;
- 
-       function Replicate
-         (Count : Natural;
-          Item  : Bounded_Wide_String;
-          Drop  : Truncation := Error) return Bounded_Wide_String;
- 
-    private
-       --  Most of the implementation is in the separate non generic package
-       --  Ada.Strings.Wide_Superbounded. Type Bounded_Wide_String is derived
-       --  from type Wide_Superbounded.Super_String with the maximum length
-       --  constraint. In almost all cases, the routines in Wide_Superbounded
-       --  can be called with no requirement to pass the maximum length
-       --  explicitly, since there is at least one Bounded_Wide_String argument
-       --  from which the maximum length can be obtained. For all such
-       --  routines, the implementation in this private part is simply a
-       --  renaming of the corresponding routine in the super bouded package.
- 
-       --  The five exceptions are the * and Replicate routines operating on
-       --  character values. For these cases, we have a routine in the body
-       --  that calls the superbounded routine passing the maximum length
-       --  explicitly as an extra parameter.
- 
-       type Bounded_Wide_String is
-         new Wide_Superbounded.Super_String (Max_Length);
-       --  Deriving Bounded_Wide_String from Wide_Superbounded.Super_String is
-       --  the real trick, it ensures that the type Bounded_Wide_String
-       --  declared in the generic instantiation is compatible with the
-       --  Super_String type declared in the Wide_Superbounded package.
- 
-       Null_Bounded_Wide_String : constant Bounded_Wide_String :=
-                                    (Max_Length         => Max_Length,
-                                     Current_Length     => 0,
-                                     Data               =>
-                                       (1 .. Max_Length =>
-                                          Wide_Superbounded.Wide_NUL));
- 
-       pragma Inline (To_Bounded_Wide_String);
- 
-       procedure Set_Bounded_Wide_String
-         (Target : out Bounded_Wide_String;
-          Source : Wide_String;
-          Drop   : Truncation := Error)
-          renames Set_Super_String;
- 
-       function Length
-         (Source : Bounded_Wide_String) return Length_Range
-          renames Super_Length;
- 
-       function To_Wide_String
-         (Source : Bounded_Wide_String) return Wide_String
-          renames Super_To_String;
- 
-       function Append
-         (Left  : Bounded_Wide_String;
-          Right : Bounded_Wide_String;
-          Drop  : Truncation  := Error) return Bounded_Wide_String
-          renames Super_Append;
- 
-       function Append
-         (Left  : Bounded_Wide_String;
-          Right : Wide_String;
-          Drop  : Truncation := Error) return Bounded_Wide_String
-          renames Super_Append;
- 
-       function Append
-         (Left  : Wide_String;
-          Right : Bounded_Wide_String;
-          Drop  : Truncation := Error) return Bounded_Wide_String
-          renames Super_Append;
- 
-       function Append
-         (Left  : Bounded_Wide_String;
-          Right : Wide_Character;
-          Drop  : Truncation := Error) return Bounded_Wide_String
-          renames Super_Append;
- 
-       function Append
-         (Left  : Wide_Character;
-          Right : Bounded_Wide_String;
-          Drop  : Truncation := Error) return Bounded_Wide_String
-          renames Super_Append;
- 
-       procedure Append
-         (Source   : in out Bounded_Wide_String;
-          New_Item : Bounded_Wide_String;
-          Drop     : Truncation  := Error)
-          renames Super_Append;
- 
-       procedure Append
-         (Source   : in out Bounded_Wide_String;
-          New_Item : Wide_String;
-          Drop     : Truncation  := Error)
-          renames Super_Append;
- 
-       procedure Append
-         (Source   : in out Bounded_Wide_String;
-          New_Item : Wide_Character;
-          Drop     : Truncation  := Error)
-          renames Super_Append;
- 
-       function "&"
-         (Left  : Bounded_Wide_String;
-          Right : Bounded_Wide_String) return Bounded_Wide_String
-          renames Concat;
- 
-       function "&"
-         (Left  : Bounded_Wide_String;
-          Right : Wide_String) return Bounded_Wide_String
-          renames Concat;
- 
-       function "&"
-         (Left  : Wide_String;
-          Right : Bounded_Wide_String) return Bounded_Wide_String
-          renames Concat;
- 
-       function "&"
-         (Left  : Bounded_Wide_String;
-          Right : Wide_Character) return Bounded_Wide_String
-          renames Concat;
- 
-       function "&"
-         (Left  : Wide_Character;
-          Right : Bounded_Wide_String) return Bounded_Wide_String
-          renames Concat;
- 
-       function Element
-         (Source : Bounded_Wide_String;
-          Index  : Positive) return Wide_Character
-          renames Super_Element;
- 
-       procedure Replace_Element
-         (Source : in out Bounded_Wide_String;
-          Index  : Positive;
-          By     : Wide_Character)
-          renames Super_Replace_Element;
- 
-       function Slice
-         (Source : Bounded_Wide_String;
-          Low    : Positive;
-          High   : Natural) return Wide_String
-          renames Super_Slice;
- 
-       function Bounded_Slice
-         (Source : Bounded_Wide_String;
-          Low    : Positive;
-          High   : Natural) return Bounded_Wide_String
-          renames Super_Slice;
- 
-       procedure Bounded_Slice
-         (Source : Bounded_Wide_String;
-          Target : out Bounded_Wide_String;
-          Low    : Positive;
-          High   : Natural)
-          renames Super_Slice;
- 
-       overriding function "="
-         (Left  : Bounded_Wide_String;
-          Right : Bounded_Wide_String) return Boolean
-          renames Equal;
- 
-       function "="
-         (Left  : Bounded_Wide_String;
-          Right : Wide_String) return Boolean
-          renames Equal;
- 
-       function "="
-         (Left  : Wide_String;
-          Right : Bounded_Wide_String) return Boolean
-          renames Equal;
- 
-       function "<"
-         (Left  : Bounded_Wide_String;
-          Right : Bounded_Wide_String) return Boolean
-          renames Less;
- 
-       function "<"
-         (Left  : Bounded_Wide_String;
-          Right : Wide_String) return Boolean
-          renames Less;
- 
-       function "<"
-         (Left  : Wide_String;
-          Right : Bounded_Wide_String) return Boolean
-          renames Less;
- 
-       function "<="
-         (Left  : Bounded_Wide_String;
-          Right : Bounded_Wide_String) return Boolean
-          renames Less_Or_Equal;
- 
-       function "<="
-         (Left  : Bounded_Wide_String;
-          Right : Wide_String) return Boolean
-          renames Less_Or_Equal;
- 
-       function "<="
-         (Left  : Wide_String;
-          Right : Bounded_Wide_String) return Boolean
-          renames Less_Or_Equal;
- 
-       function ">"
-         (Left  : Bounded_Wide_String;
-          Right : Bounded_Wide_String) return Boolean
-          renames Greater;
- 
-       function ">"
-         (Left  : Bounded_Wide_String;
-          Right : Wide_String) return Boolean
-          renames Greater;
- 
-       function ">"
-         (Left  : Wide_String;
-          Right : Bounded_Wide_String) return Boolean
-          renames Greater;
- 
-       function ">="
-         (Left  : Bounded_Wide_String;
-          Right : Bounded_Wide_String) return Boolean
-          renames Greater_Or_Equal;
- 
-       function ">="
-         (Left  : Bounded_Wide_String;
-          Right : Wide_String) return Boolean
-          renames Greater_Or_Equal;
- 
-       function ">="
-         (Left  : Wide_String;
-          Right : Bounded_Wide_String) return Boolean
-          renames Greater_Or_Equal;
- 
-       function Index
-         (Source  : Bounded_Wide_String;
-          Pattern : Wide_String;
-          Going   : Direction := Forward;
-          Mapping : Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity)
-          return Natural
-          renames Super_Index;
- 
-       function Index
-         (Source  : Bounded_Wide_String;
-          Pattern : Wide_String;
-          Going   : Direction := Forward;
-          Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural
-          renames Super_Index;
- 
-       function Index
-         (Source : Bounded_Wide_String;
-          Set    : Wide_Maps.Wide_Character_Set;
-          Test   : Membership := Inside;
-          Going  : Direction  := Forward) return Natural
-          renames Super_Index;
- 
-       function Index
-         (Source  : Bounded_Wide_String;
-          Pattern : Wide_String;
-          From    : Positive;
-          Going   : Direction := Forward;
-          Mapping : Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity)
-          return Natural
-          renames Super_Index;
- 
-       function Index
-         (Source  : Bounded_Wide_String;
-          Pattern : Wide_String;
-          From    : Positive;
-          Going   : Direction := Forward;
-          Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural
-       renames Super_Index;
- 
-       function Index
-         (Source  : Bounded_Wide_String;
-          Set     : Wide_Maps.Wide_Character_Set;
-          From    : Positive;
-          Test    : Membership := Inside;
-          Going   : Direction := Forward) return Natural
-       renames Super_Index;
- 
-       function Index_Non_Blank
-         (Source : Bounded_Wide_String;
-          Going  : Direction := Forward) return Natural
-          renames Super_Index_Non_Blank;
- 
-       function Index_Non_Blank
-         (Source : Bounded_Wide_String;
-          From   : Positive;
-          Going  : Direction := Forward) return Natural
-          renames Super_Index_Non_Blank;
- 
-       function Count
-         (Source  : Bounded_Wide_String;
-          Pattern : Wide_String;
-          Mapping : Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity)
-          return Natural
-          renames Super_Count;
- 
-       function Count
-         (Source  : Bounded_Wide_String;
-          Pattern : Wide_String;
-          Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural
-          renames Super_Count;
- 
-       function Count
-         (Source : Bounded_Wide_String;
-          Set    : Wide_Maps.Wide_Character_Set) return Natural
-          renames Super_Count;
- 
-       procedure Find_Token
-         (Source : Bounded_Wide_String;
-          Set    : Wide_Maps.Wide_Character_Set;
-          From   : Positive;
-          Test   : Membership;
-          First  : out Positive;
-          Last   : out Natural)
-          renames Super_Find_Token;
- 
-       procedure Find_Token
-         (Source : Bounded_Wide_String;
-          Set    : Wide_Maps.Wide_Character_Set;
-          Test   : Membership;
-          First  : out Positive;
-          Last   : out Natural)
-          renames Super_Find_Token;
- 
-       function Translate
-         (Source  : Bounded_Wide_String;
-          Mapping : Wide_Maps.Wide_Character_Mapping)
-          return Bounded_Wide_String
-          renames Super_Translate;
- 
-       procedure Translate
-         (Source   : in out Bounded_Wide_String;
-          Mapping  : Wide_Maps.Wide_Character_Mapping)
-          renames Super_Translate;
- 
-       function Translate
-         (Source  : Bounded_Wide_String;
-          Mapping : Wide_Maps.Wide_Character_Mapping_Function)
-          return Bounded_Wide_String
-          renames Super_Translate;
- 
-       procedure Translate
-         (Source  : in out Bounded_Wide_String;
-          Mapping : Wide_Maps.Wide_Character_Mapping_Function)
-          renames Super_Translate;
- 
-       function Replace_Slice
-         (Source : Bounded_Wide_String;
-          Low    : Positive;
-          High   : Natural;
-          By     : Wide_String;
-          Drop   : Truncation := Error) return Bounded_Wide_String
-          renames Super_Replace_Slice;
- 
-       procedure Replace_Slice
-         (Source   : in out Bounded_Wide_String;
-          Low      : Positive;
-          High     : Natural;
-          By       : Wide_String;
-          Drop     : Truncation := Error)
-          renames Super_Replace_Slice;
- 
-       function Insert
-         (Source   : Bounded_Wide_String;
-          Before   : Positive;
-          New_Item : Wide_String;
-          Drop     : Truncation := Error) return Bounded_Wide_String
-          renames Super_Insert;
- 
-       procedure Insert
-         (Source   : in out Bounded_Wide_String;
-          Before   : Positive;
-          New_Item : Wide_String;
-          Drop     : Truncation := Error)
-          renames Super_Insert;
- 
-       function Overwrite
-         (Source   : Bounded_Wide_String;
-          Position : Positive;
-          New_Item : Wide_String;
-          Drop     : Truncation := Error) return Bounded_Wide_String
-          renames Super_Overwrite;
- 
-       procedure Overwrite
-         (Source    : in out Bounded_Wide_String;
-          Position  : Positive;
-          New_Item  : Wide_String;
-          Drop      : Truncation := Error)
-          renames Super_Overwrite;
- 
-       function Delete
-         (Source  : Bounded_Wide_String;
-          From    : Positive;
-          Through : Natural) return Bounded_Wide_String
-          renames Super_Delete;
- 
-       procedure Delete
-         (Source  : in out Bounded_Wide_String;
-          From    : Positive;
-          Through : Natural)
-          renames Super_Delete;
- 
-       function Trim
-         (Source : Bounded_Wide_String;
-          Side   : Trim_End) return Bounded_Wide_String
-          renames Super_Trim;
- 
-       procedure Trim
-         (Source : in out Bounded_Wide_String;
-          Side   : Trim_End)
-          renames Super_Trim;
- 
-       function Trim
-         (Source : Bounded_Wide_String;
-          Left   : Wide_Maps.Wide_Character_Set;
-          Right  : Wide_Maps.Wide_Character_Set) return Bounded_Wide_String
-          renames Super_Trim;
- 
-       procedure Trim
-         (Source : in out Bounded_Wide_String;
-          Left   : Wide_Maps.Wide_Character_Set;
-          Right  : Wide_Maps.Wide_Character_Set)
-          renames Super_Trim;
- 
-       function Head
-         (Source : Bounded_Wide_String;
-          Count  : Natural;
-          Pad    : Wide_Character := Wide_Space;
-          Drop   : Truncation     := Error) return Bounded_Wide_String
-          renames Super_Head;
- 
-       procedure Head
-         (Source : in out Bounded_Wide_String;
-          Count  : Natural;
-          Pad    : Wide_Character := Wide_Space;
-          Drop   : Truncation     := Error)
-          renames Super_Head;
- 
-       function Tail
-         (Source : Bounded_Wide_String;
-          Count  : Natural;
-          Pad    : Wide_Character := Wide_Space;
-          Drop   : Truncation     := Error) return Bounded_Wide_String
-          renames Super_Tail;
- 
-       procedure Tail
-         (Source : in out Bounded_Wide_String;
-          Count  : Natural;
-          Pad    : Wide_Character := Wide_Space;
-          Drop   : Truncation := Error)
-          renames Super_Tail;
- 
-       function "*"
-         (Left  : Natural;
-          Right : Bounded_Wide_String) return Bounded_Wide_String
-          renames Times;
- 
-       function Replicate
-         (Count : Natural;
-          Item  : Bounded_Wide_String;
-          Drop  : Truncation := Error) return Bounded_Wide_String
-          renames Super_Replicate;
- 
-    end Generic_Bounded_Length;
- 
- end Ada.Strings.Wide_Bounded;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-stwifi.adb gcc-8.1.0/gcc/ada/a-stwifi.adb
*** gcc-7.3.0/gcc/ada/a-stwifi.adb	Fri Jan 13 10:19:19 2017
--- gcc-8.1.0/gcc/ada/a-stwifi.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,688 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --               A D A . S T R I N G S . W I D E _ F I X E D                --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Strings.Wide_Maps;   use Ada.Strings.Wide_Maps;
- with Ada.Strings.Wide_Search;
- 
- package body Ada.Strings.Wide_Fixed is
- 
-    ------------------------
-    -- Search Subprograms --
-    ------------------------
- 
-    function Index
-      (Source  : Wide_String;
-       Pattern : Wide_String;
-       Going   : Direction := Forward;
-       Mapping : Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity)
-       return Natural
-    renames Ada.Strings.Wide_Search.Index;
- 
-    function Index
-      (Source  : Wide_String;
-       Pattern : Wide_String;
-       Going   : Direction := Forward;
-       Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural
-    renames Ada.Strings.Wide_Search.Index;
- 
-    function Index
-      (Source : Wide_String;
-       Set    : Wide_Maps.Wide_Character_Set;
-       Test   : Membership := Inside;
-       Going  : Direction  := Forward) return Natural
-    renames Ada.Strings.Wide_Search.Index;
- 
-    function Index
-      (Source  : Wide_String;
-       Pattern : Wide_String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity)
-       return Natural
-    renames Ada.Strings.Wide_Search.Index;
- 
-    function Index
-      (Source  : Wide_String;
-       Pattern : Wide_String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural
-    renames Ada.Strings.Wide_Search.Index;
- 
-    function Index
-      (Source  : Wide_String;
-       Set     : Wide_Maps.Wide_Character_Set;
-       From    : Positive;
-       Test    : Membership := Inside;
-       Going   : Direction := Forward) return Natural
-    renames Ada.Strings.Wide_Search.Index;
- 
-    function Index_Non_Blank
-      (Source : Wide_String;
-       Going  : Direction := Forward) return Natural
-    renames Ada.Strings.Wide_Search.Index_Non_Blank;
- 
-    function Index_Non_Blank
-      (Source : Wide_String;
-       From   : Positive;
-       Going  : Direction := Forward) return Natural
-    renames Ada.Strings.Wide_Search.Index_Non_Blank;
- 
-    function Count
-      (Source  : Wide_String;
-       Pattern : Wide_String;
-       Mapping : Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity)
-       return Natural
-    renames Ada.Strings.Wide_Search.Count;
- 
-    function Count
-      (Source  : Wide_String;
-       Pattern : Wide_String;
-       Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural
-    renames Ada.Strings.Wide_Search.Count;
- 
-    function Count
-      (Source : Wide_String;
-       Set    : Wide_Maps.Wide_Character_Set) return Natural
-    renames Ada.Strings.Wide_Search.Count;
- 
-    procedure Find_Token
-      (Source : Wide_String;
-       Set    : Wide_Maps.Wide_Character_Set;
-       From   : Positive;
-       Test   : Membership;
-       First  : out Positive;
-       Last   : out Natural)
-    renames Ada.Strings.Wide_Search.Find_Token;
- 
-    procedure Find_Token
-      (Source : Wide_String;
-       Set    : Wide_Maps.Wide_Character_Set;
-       Test   : Membership;
-       First  : out Positive;
-       Last   : out Natural)
-    renames Ada.Strings.Wide_Search.Find_Token;
- 
-    ---------
-    -- "*" --
-    ---------
- 
-    function "*"
-      (Left  : Natural;
-       Right : Wide_Character) return Wide_String
-    is
-       Result : Wide_String (1 .. Left);
- 
-    begin
-       for J in Result'Range loop
-          Result (J) := Right;
-       end loop;
- 
-       return Result;
-    end "*";
- 
-    function "*"
-      (Left  : Natural;
-       Right : Wide_String) return Wide_String
-    is
-       Result : Wide_String (1 .. Left * Right'Length);
-       Ptr    : Integer := 1;
- 
-    begin
-       for J in 1 .. Left loop
-          Result (Ptr .. Ptr + Right'Length - 1) := Right;
-          Ptr := Ptr + Right'Length;
-       end loop;
- 
-       return Result;
-    end "*";
- 
-    ------------
-    -- Delete --
-    ------------
- 
-    function Delete
-      (Source  : Wide_String;
-       From    : Positive;
-       Through : Natural) return Wide_String
-    is
-    begin
-       if From not in Source'Range
-         or else Through > Source'Last
-       then
-          raise Index_Error;
- 
-       elsif From > Through then
-          return Source;
- 
-       else
-          declare
-             Len    : constant Integer := Source'Length - (Through - From + 1);
-             Result : constant
-                        Wide_String (Source'First .. Source'First + Len - 1) :=
-                          Source (Source'First .. From - 1) &
-                          Source (Through + 1 .. Source'Last);
-          begin
-             return Result;
-          end;
-       end if;
-    end Delete;
- 
-    procedure Delete
-      (Source  : in out Wide_String;
-       From    : Positive;
-       Through : Natural;
-       Justify : Alignment := Left;
-       Pad     : Wide_Character := Wide_Space)
-    is
-    begin
-       Move (Source  => Delete (Source, From, Through),
-             Target  => Source,
-             Justify => Justify,
-             Pad     => Pad);
-    end Delete;
- 
-    ----------
-    -- Head --
-    ----------
- 
-    function Head
-      (Source : Wide_String;
-       Count  : Natural;
-       Pad    : Wide_Character := Wide_Space) return Wide_String
-    is
-       Result : Wide_String (1 .. Count);
- 
-    begin
-       if Count <= Source'Length then
-          Result := Source (Source'First .. Source'First + Count - 1);
- 
-       else
-          Result (1 .. Source'Length) := Source;
- 
-          for J in Source'Length + 1 .. Count loop
-             Result (J) := Pad;
-          end loop;
-       end if;
- 
-       return Result;
-    end Head;
- 
-    procedure Head
-      (Source  : in out Wide_String;
-       Count   : Natural;
-       Justify : Alignment := Left;
-       Pad     : Wide_Character := Ada.Strings.Wide_Space)
-    is
-    begin
-       Move (Source  => Head (Source, Count, Pad),
-             Target  => Source,
-             Drop    => Error,
-             Justify => Justify,
-             Pad     => Pad);
-    end Head;
- 
-    ------------
-    -- Insert --
-    ------------
- 
-    function Insert
-      (Source   : Wide_String;
-       Before   : Positive;
-       New_Item : Wide_String) return Wide_String
-    is
-       Result : Wide_String (1 .. Source'Length + New_Item'Length);
- 
-    begin
-       if Before < Source'First or else Before > Source'Last + 1 then
-          raise Index_Error;
-       end if;
- 
-       Result := Source (Source'First .. Before - 1) & New_Item &
-                 Source (Before .. Source'Last);
-       return Result;
-    end Insert;
- 
-    procedure Insert
-      (Source   : in out Wide_String;
-       Before   : Positive;
-       New_Item : Wide_String;
-       Drop     : Truncation := Error)
-    is
-    begin
-       Move (Source => Insert (Source, Before, New_Item),
-             Target => Source,
-             Drop   => Drop);
-    end Insert;
- 
-    ----------
-    -- Move --
-    ----------
- 
-    procedure Move
-      (Source  : Wide_String;
-       Target  : out Wide_String;
-       Drop    : Truncation := Error;
-       Justify : Alignment  := Left;
-       Pad     : Wide_Character  := Wide_Space)
-    is
-       Sfirst  : constant Integer := Source'First;
-       Slast   : constant Integer := Source'Last;
-       Slength : constant Integer := Source'Length;
- 
-       Tfirst  : constant Integer := Target'First;
-       Tlast   : constant Integer := Target'Last;
-       Tlength : constant Integer := Target'Length;
- 
-       function Is_Padding (Item : Wide_String) return Boolean;
-       --  Determine if all characters in Item are pad characters
- 
-       ----------------
-       -- Is_Padding --
-       ----------------
- 
-       function Is_Padding (Item : Wide_String) return Boolean is
-       begin
-          for J in Item'Range loop
-             if Item (J) /= Pad then
-                return False;
-             end if;
-          end loop;
- 
-          return True;
-       end Is_Padding;
- 
-    --  Start of processing for Move
- 
-    begin
-       if Slength = Tlength then
-          Target := Source;
- 
-       elsif Slength > Tlength then
-          case Drop is
-             when Left =>
-                Target := Source (Slast - Tlength + 1 .. Slast);
- 
-             when Right =>
-                Target := Source (Sfirst .. Sfirst + Tlength - 1);
- 
-             when Error =>
-                case Justify is
-                   when Left =>
-                      if Is_Padding (Source (Sfirst + Tlength .. Slast)) then
-                         Target :=
-                           Source (Sfirst .. Sfirst + Target'Length - 1);
-                      else
-                         raise Length_Error;
-                      end if;
- 
-                   when Right =>
-                      if Is_Padding (Source (Sfirst .. Slast - Tlength)) then
-                         Target := Source (Slast - Tlength + 1 .. Slast);
-                      else
-                         raise Length_Error;
-                      end if;
- 
-                   when Center =>
-                      raise Length_Error;
-                end case;
-          end case;
- 
-       --  Source'Length < Target'Length
- 
-       else
-          case Justify is
-             when Left =>
-                Target (Tfirst .. Tfirst + Slength - 1) := Source;
- 
-                for J in Tfirst + Slength .. Tlast loop
-                   Target (J) := Pad;
-                end loop;
- 
-             when Right =>
-                for J in Tfirst .. Tlast - Slength loop
-                   Target (J) := Pad;
-                end loop;
- 
-                Target (Tlast - Slength + 1 .. Tlast) := Source;
- 
-             when Center =>
-                declare
-                   Front_Pad   : constant Integer := (Tlength - Slength) / 2;
-                   Tfirst_Fpad : constant Integer := Tfirst + Front_Pad;
- 
-                begin
-                   for J in Tfirst .. Tfirst_Fpad - 1 loop
-                      Target (J) := Pad;
-                   end loop;
- 
-                   Target (Tfirst_Fpad .. Tfirst_Fpad + Slength - 1) := Source;
- 
-                   for J in Tfirst_Fpad + Slength .. Tlast loop
-                      Target (J) := Pad;
-                   end loop;
-                end;
-          end case;
-       end if;
-    end Move;
- 
-    ---------------
-    -- Overwrite --
-    ---------------
- 
-    function Overwrite
-      (Source   : Wide_String;
-       Position : Positive;
-       New_Item : Wide_String) return Wide_String
-    is
-    begin
-       if Position not in Source'First .. Source'Last + 1 then
-          raise Index_Error;
-       else
-          declare
-             Result_Length : constant Natural :=
-               Natural'Max
-                 (Source'Length,
-                  Position - Source'First + New_Item'Length);
- 
-             Result : Wide_String (1 .. Result_Length);
- 
-          begin
-             Result := Source (Source'First .. Position - 1) & New_Item &
-                         Source (Position + New_Item'Length .. Source'Last);
-             return Result;
-          end;
-       end if;
-    end Overwrite;
- 
-    procedure Overwrite
-      (Source   : in out Wide_String;
-       Position : Positive;
-       New_Item : Wide_String;
-       Drop     : Truncation := Right)
-    is
-    begin
-       Move (Source => Overwrite (Source, Position, New_Item),
-             Target => Source,
-             Drop   => Drop);
-    end Overwrite;
- 
-    -------------------
-    -- Replace_Slice --
-    -------------------
- 
-    function Replace_Slice
-      (Source : Wide_String;
-       Low    : Positive;
-       High   : Natural;
-       By     : Wide_String) return Wide_String
-    is
-    begin
-       if Low > Source'Last + 1 or else High < Source'First - 1 then
-          raise Index_Error;
-       end if;
- 
-       if High >= Low then
-          declare
-             Front_Len : constant Integer :=
-               Integer'Max (0, Low - Source'First);
-             --  Length of prefix of Source copied to result
- 
-             Back_Len : constant Integer := Integer'Max (0, Source'Last - High);
-             --  Length of suffix of Source copied to result
- 
-             Result_Length : constant Integer :=
-               Front_Len + By'Length + Back_Len;
-             --  Length of result
- 
-             Result : Wide_String (1 .. Result_Length);
- 
-          begin
-             Result (1 .. Front_Len) := Source (Source'First .. Low - 1);
-             Result (Front_Len + 1 .. Front_Len + By'Length) := By;
-             Result (Front_Len + By'Length + 1 .. Result'Length) :=
-               Source (High + 1 .. Source'Last);
-             return Result;
-          end;
- 
-       else
-          return Insert (Source, Before => Low, New_Item => By);
-       end if;
-    end Replace_Slice;
- 
-    procedure Replace_Slice
-      (Source   : in out Wide_String;
-       Low      : Positive;
-       High     : Natural;
-       By       : Wide_String;
-       Drop     : Truncation := Error;
-       Justify  : Alignment  := Left;
-       Pad      : Wide_Character  := Wide_Space)
-    is
-    begin
-       Move (Replace_Slice (Source, Low, High, By), Source, Drop, Justify, Pad);
-    end Replace_Slice;
- 
-    ----------
-    -- Tail --
-    ----------
- 
-    function Tail
-      (Source : Wide_String;
-       Count  : Natural;
-       Pad    : Wide_Character := Wide_Space) return Wide_String
-    is
-       Result : Wide_String (1 .. Count);
- 
-    begin
-       if Count < Source'Length then
-          Result := Source (Source'Last - Count + 1 .. Source'Last);
- 
-       --  Pad on left
- 
-       else
-          for J in 1 .. Count - Source'Length loop
-             Result (J) := Pad;
-          end loop;
- 
-          Result (Count - Source'Length + 1 .. Count) := Source;
-       end if;
- 
-       return Result;
-    end Tail;
- 
-    procedure Tail
-      (Source  : in out Wide_String;
-       Count   : Natural;
-       Justify : Alignment := Left;
-       Pad     : Wide_Character := Ada.Strings.Wide_Space)
-    is
-    begin
-       Move (Source  => Tail (Source, Count, Pad),
-             Target  => Source,
-             Drop    => Error,
-             Justify => Justify,
-             Pad     => Pad);
-    end Tail;
- 
-    ---------------
-    -- Translate --
-    ---------------
- 
-    function Translate
-      (Source  : Wide_String;
-       Mapping : Wide_Maps.Wide_Character_Mapping) return Wide_String
-    is
-       Result : Wide_String (1 .. Source'Length);
- 
-    begin
-       for J in Source'Range loop
-          Result (J - (Source'First - 1)) := Value (Mapping, Source (J));
-       end loop;
- 
-       return Result;
-    end Translate;
- 
-    procedure Translate
-      (Source  : in out Wide_String;
-       Mapping : Wide_Maps.Wide_Character_Mapping)
-    is
-    begin
-       for J in Source'Range loop
-          Source (J) := Value (Mapping, Source (J));
-       end loop;
-    end Translate;
- 
-    function Translate
-      (Source  : Wide_String;
-       Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Wide_String
-    is
-       Result : Wide_String (1 .. Source'Length);
- 
-    begin
-       for J in Source'Range loop
-          Result (J - (Source'First - 1)) := Mapping (Source (J));
-       end loop;
- 
-       return Result;
-    end Translate;
- 
-    procedure Translate
-      (Source  : in out Wide_String;
-       Mapping : Wide_Maps.Wide_Character_Mapping_Function)
-    is
-    begin
-       for J in Source'Range loop
-          Source (J) := Mapping (Source (J));
-       end loop;
-    end Translate;
- 
-    ----------
-    -- Trim --
-    ----------
- 
-    function Trim
-      (Source : Wide_String;
-       Side   : Trim_End) return Wide_String
-    is
-       Low  : Natural := Source'First;
-       High : Natural := Source'Last;
- 
-    begin
-       if Side = Left or else Side = Both then
-          while Low <= High and then Source (Low) = Wide_Space loop
-             Low := Low + 1;
-          end loop;
-       end if;
- 
-       if Side = Right or else Side = Both then
-          while High >= Low and then Source (High) = Wide_Space loop
-             High := High - 1;
-          end loop;
-       end if;
- 
-       --  All blanks case
- 
-       if Low > High then
-          return "";
- 
-       --  At least one non-blank
- 
-       else
-          declare
-             Result : constant Wide_String (1 .. High - Low + 1) :=
-               Source (Low .. High);
- 
-          begin
-             return Result;
-          end;
-       end if;
-    end Trim;
- 
-    procedure Trim
-      (Source  : in out Wide_String;
-       Side    : Trim_End;
-       Justify : Alignment      := Left;
-       Pad     : Wide_Character := Wide_Space)
-    is
-    begin
-       Move (Source  => Trim (Source, Side),
-             Target  => Source,
-             Justify => Justify,
-             Pad     => Pad);
-    end Trim;
- 
-    function Trim
-       (Source : Wide_String;
-        Left   : Wide_Maps.Wide_Character_Set;
-        Right  : Wide_Maps.Wide_Character_Set) return Wide_String
-    is
-       Low  : Natural := Source'First;
-       High : Natural := Source'Last;
- 
-    begin
-       while Low <= High and then Is_In (Source (Low), Left) loop
-          Low := Low + 1;
-       end loop;
- 
-       while High >= Low and then Is_In (Source (High), Right) loop
-          High := High - 1;
-       end loop;
- 
-       --  Case where source comprises only characters in the sets
- 
-       if Low > High then
-          return "";
-       else
-          declare
-             subtype WS is Wide_String (1 .. High - Low + 1);
- 
-          begin
-             return WS (Source (Low .. High));
-          end;
-       end if;
-    end Trim;
- 
-    procedure Trim
-       (Source  : in out Wide_String;
-        Left    : Wide_Maps.Wide_Character_Set;
-        Right   : Wide_Maps.Wide_Character_Set;
-        Justify : Alignment      := Strings.Left;
-        Pad     : Wide_Character := Wide_Space)
-    is
-    begin
-       Move (Source  => Trim (Source, Left, Right),
-             Target  => Source,
-             Justify => Justify,
-             Pad     => Pad);
-    end Trim;
- 
- end Ada.Strings.Wide_Fixed;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-stwifi.ads gcc-8.1.0/gcc/ada/a-stwifi.ads
*** gcc-7.3.0/gcc/ada/a-stwifi.ads	Fri Oct  8 13:02:55 2010
--- gcc-8.1.0/gcc/ada/a-stwifi.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,254 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --               A D A . S T R I N G S . W I D E _ F I X E D                --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Strings.Wide_Maps;
- 
- package Ada.Strings.Wide_Fixed is
-    pragma Preelaborate;
- 
-    -------------------------------------------------------------------
-    -- Copy Procedure for Wide_Strings of Possibly Different Lengths --
-    -------------------------------------------------------------------
- 
-    procedure Move
-      (Source  : Wide_String;
-       Target  : out Wide_String;
-       Drop    : Truncation := Error;
-       Justify : Alignment  := Left;
-       Pad     : Wide_Character  := Ada.Strings.Wide_Space);
- 
-    ------------------------
-    -- Search Subprograms --
-    ------------------------
- 
-    function Index
-      (Source  : Wide_String;
-       Pattern : Wide_String;
-       Going   : Direction := Forward;
-       Mapping : Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity)
-       return Natural;
- 
-    function Index
-      (Source  : Wide_String;
-       Pattern : Wide_String;
-       Going   : Direction := Forward;
-       Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural;
- 
-    function Index
-      (Source : Wide_String;
-       Set    : Wide_Maps.Wide_Character_Set;
-       Test   : Membership := Inside;
-       Going  : Direction  := Forward) return Natural;
- 
-    function Index
-      (Source  : Wide_String;
-       Pattern : Wide_String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity)
-       return Natural;
-    pragma Ada_05 (Index);
- 
-    function Index
-      (Source  : Wide_String;
-       Pattern : Wide_String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural;
-    pragma Ada_05 (Index);
- 
-    function Index
-      (Source  : Wide_String;
-       Set     : Wide_Maps.Wide_Character_Set;
-       From    : Positive;
-       Test    : Membership := Inside;
-       Going   : Direction := Forward) return Natural;
-    pragma Ada_05 (Index);
- 
-    function Index_Non_Blank
-      (Source : Wide_String;
-       Going  : Direction := Forward) return Natural;
- 
-    function Index_Non_Blank
-      (Source : Wide_String;
-       From   : Positive;
-       Going  : Direction := Forward) return Natural;
-    pragma Ada_05 (Index_Non_Blank);
- 
-    function Count
-      (Source  : Wide_String;
-       Pattern : Wide_String;
-       Mapping : Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity)
-       return Natural;
- 
-    function Count
-      (Source  : Wide_String;
-       Pattern : Wide_String;
-       Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural;
- 
-    function Count
-      (Source : Wide_String;
-       Set    : Wide_Maps.Wide_Character_Set) return Natural;
- 
-    procedure Find_Token
-      (Source : Wide_String;
-       Set    : Wide_Maps.Wide_Character_Set;
-       From   : Positive;
-       Test   : Membership;
-       First  : out Positive;
-       Last   : out Natural);
-    pragma Ada_2012 (Find_Token);
- 
-    procedure Find_Token
-      (Source : Wide_String;
-       Set    : Wide_Maps.Wide_Character_Set;
-       Test   : Membership;
-       First  : out Positive;
-       Last   : out Natural);
- 
-    -----------------------------------------
-    -- Wide_String Translation Subprograms --
-    -----------------------------------------
- 
-    function Translate
-      (Source  : Wide_String;
-       Mapping : Wide_Maps.Wide_Character_Mapping) return Wide_String;
- 
-    procedure Translate
-      (Source  : in out Wide_String;
-       Mapping : Wide_Maps.Wide_Character_Mapping);
- 
-    function Translate
-      (Source  : Wide_String;
-       Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Wide_String;
- 
-    procedure Translate
-      (Source  : in out Wide_String;
-       Mapping : Wide_Maps.Wide_Character_Mapping_Function);
- 
-    --------------------------------------------
-    -- Wide_String Transformation Subprograms --
-    --------------------------------------------
- 
-    function Replace_Slice
-      (Source : Wide_String;
-       Low    : Positive;
-       High   : Natural;
-       By     : Wide_String) return Wide_String;
- 
-    procedure Replace_Slice
-      (Source  : in out Wide_String;
-       Low     : Positive;
-       High    : Natural;
-       By      : Wide_String;
-       Drop    : Truncation := Error;
-       Justify : Alignment  := Left;
-       Pad     : Wide_Character  := Ada.Strings.Wide_Space);
- 
-    function Insert
-      (Source   : Wide_String;
-       Before   : Positive;
-       New_Item : Wide_String) return Wide_String;
- 
-    procedure Insert
-      (Source   : in out Wide_String;
-       Before   : Positive;
-       New_Item : Wide_String;
-       Drop     : Truncation := Error);
- 
-    function Overwrite
-      (Source   : Wide_String;
-       Position : Positive;
-       New_Item : Wide_String) return Wide_String;
- 
-    procedure Overwrite
-      (Source   : in out Wide_String;
-       Position : Positive;
-       New_Item : Wide_String;
-       Drop     : Truncation := Right);
- 
-    function Delete
-      (Source  : Wide_String;
-       From    : Positive;
-       Through : Natural) return Wide_String;
- 
-    procedure Delete
-      (Source  : in out Wide_String;
-       From    : Positive;
-       Through : Natural;
-       Justify : Alignment := Left;
-       Pad     : Wide_Character := Ada.Strings.Wide_Space);
- 
-    --------------------------------------
-    -- Wide_String Selector Subprograms --
-    --------------------------------------
- 
-    function Trim
-      (Source : Wide_String;
-       Side   : Trim_End) return Wide_String;
- 
-    procedure Trim
-      (Source  : in out Wide_String;
-       Side    : Trim_End;
-       Justify : Alignment      := Left;
-       Pad     : Wide_Character := Wide_Space);
- 
-    function Trim
-      (Source : Wide_String;
-       Left   : Wide_Maps.Wide_Character_Set;
-       Right  : Wide_Maps.Wide_Character_Set) return Wide_String;
- 
-    procedure Trim
-      (Source  : in out Wide_String;
-       Left    : Wide_Maps.Wide_Character_Set;
-       Right   : Wide_Maps.Wide_Character_Set;
-       Justify : Alignment := Ada.Strings.Left;
-       Pad     : Wide_Character := Ada.Strings.Wide_Space);
- 
-    function Head
-      (Source : Wide_String;
-       Count  : Natural;
-       Pad    : Wide_Character := Ada.Strings.Wide_Space) return Wide_String;
- 
-    procedure Head
-      (Source  : in out Wide_String;
-       Count   : Natural;
-       Justify : Alignment := Left;
-       Pad     : Wide_Character := Ada.Strings.Wide_Space);
- 
-    function Tail
-      (Source : Wide_String;
-       Count  : Natural;
-       Pad    : Wide_Character := Ada.Strings.Wide_Space) return Wide_String;
- 
-    procedure Tail
-      (Source  : in out Wide_String;
-       Count   : Natural;
-       Justify : Alignment := Left;
-       Pad     : Wide_Character := Ada.Strings.Wide_Space);
- 
-    ---------------------------------------
-    -- Wide_String Constructor Functions --
-    ---------------------------------------
- 
-    function "*"
-      (Left  : Natural;
-       Right : Wide_Character) return Wide_String;
- 
-    function "*"
-      (Left  : Natural;
-       Right : Wide_String) return Wide_String;
- 
- end Ada.Strings.Wide_Fixed;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-stwiha.adb gcc-8.1.0/gcc/ada/a-stwiha.adb
*** gcc-7.3.0/gcc/ada/a-stwiha.adb	Tue Jun 23 09:24:45 2009
--- gcc-8.1.0/gcc/ada/a-stwiha.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,40 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                A D A . S T R I N G S . W I D E _ H A S H                 --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2004-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- --
- -- 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.String_Hash;
- 
- function Ada.Strings.Wide_Hash
-   (Key : Wide_String) return Containers.Hash_Type
- is
-    use Ada.Containers;
-    function Hash_Fun is new System.String_Hash.Hash
-      (Wide_Character, Wide_String, Hash_Type);
- begin
-    return Hash_Fun (Key);
- end Ada.Strings.Wide_Hash;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-stwiha.ads gcc-8.1.0/gcc/ada/a-stwiha.ads
*** gcc-7.3.0/gcc/ada/a-stwiha.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-stwiha.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,21 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                A D A . S T R I N G S . W I D E _ H A S H                 --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Containers;
- 
- function Ada.Strings.Wide_Hash
-   (Key : Wide_String) return Containers.Hash_Type;
- 
- pragma Pure (Ada.Strings.Wide_Hash);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-stwima.adb gcc-8.1.0/gcc/ada/a-stwima.adb
*** gcc-7.3.0/gcc/ada/a-stwima.adb	Wed Nov 18 10:31:53 2015
--- gcc-8.1.0/gcc/ada/a-stwima.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,742 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                A D A . S T R I N G S . W I D E _ M A P S                 --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Unchecked_Deallocation;
- 
- package body Ada.Strings.Wide_Maps is
- 
-    ---------
-    -- "-" --
-    ---------
- 
-    function "-"
-      (Left, Right : Wide_Character_Set) return Wide_Character_Set
-    is
-       LS : constant Wide_Character_Ranges_Access := Left.Set;
-       RS : constant Wide_Character_Ranges_Access := Right.Set;
- 
-       Result : Wide_Character_Ranges (1 .. LS'Last + RS'Last);
-       --  Each range on the right can generate at least one more range in
-       --  the result, by splitting one of the left operand ranges.
- 
-       N  : Natural := 0;
-       R  : Natural := 1;
-       L  : Natural := 1;
- 
-       Left_Low : Wide_Character;
-       --  Left_Low is lowest character of the L'th range not yet dealt with
- 
-    begin
-       if LS'Last = 0 or else RS'Last = 0 then
-          return Left;
-       end if;
- 
-       Left_Low := LS (L).Low;
-       while R <= RS'Last loop
- 
-          --  If next right range is below current left range, skip it
- 
-          if RS (R).High < Left_Low then
-             R := R + 1;
- 
-          --  If next right range above current left range, copy remainder
-          --  of the left range to the result
- 
-          elsif RS (R).Low > LS (L).High then
-             N := N + 1;
-             Result (N).Low  := Left_Low;
-             Result (N).High := LS (L).High;
-             L := L + 1;
-             exit when L > LS'Last;
-             Left_Low := LS (L).Low;
- 
-          else
-             --  Next right range overlaps bottom of left range
- 
-             if RS (R).Low <= Left_Low then
- 
-                --  Case of right range complete overlaps left range
- 
-                if RS (R).High >= LS (L).High then
-                   L := L + 1;
-                   exit when L > LS'Last;
-                   Left_Low := LS (L).Low;
- 
-                --  Case of right range eats lower part of left range
- 
-                else
-                   Left_Low := Wide_Character'Succ (RS (R).High);
-                   R := R + 1;
-                end if;
- 
-             --  Next right range overlaps some of left range, but not bottom
- 
-             else
-                N := N + 1;
-                Result (N).Low  := Left_Low;
-                Result (N).High := Wide_Character'Pred (RS (R).Low);
- 
-                --  Case of right range splits left range
- 
-                if RS (R).High < LS (L).High then
-                   Left_Low := Wide_Character'Succ (RS (R).High);
-                   R := R + 1;
- 
-                --  Case of right range overlaps top of left range
- 
-                else
-                   L := L + 1;
-                   exit when L > LS'Last;
-                   Left_Low := LS (L).Low;
-                end if;
-             end if;
-          end if;
-       end loop;
- 
-       --  Copy remainder of left ranges to result
- 
-       if L <= LS'Last then
-          N := N + 1;
-          Result (N).Low  := Left_Low;
-          Result (N).High := LS (L).High;
- 
-          loop
-             L := L + 1;
-             exit when L > LS'Last;
-             N := N + 1;
-             Result (N) := LS (L);
-          end loop;
-       end if;
- 
-       return (AF.Controlled with
-               Set => new Wide_Character_Ranges'(Result (1 .. N)));
-    end "-";
- 
-    ---------
-    -- "=" --
-    ---------
- 
-    --  The sorted, discontiguous form is canonical, so equality can be used
- 
-    function "=" (Left, Right : Wide_Character_Set) return Boolean is
-    begin
-       return Left.Set.all = Right.Set.all;
-    end "=";
- 
-    -----------
-    -- "and" --
-    -----------
- 
-    function "and"
-      (Left, Right : Wide_Character_Set) return Wide_Character_Set
-    is
-       LS : constant Wide_Character_Ranges_Access := Left.Set;
-       RS : constant Wide_Character_Ranges_Access := Right.Set;
- 
-       Result : Wide_Character_Ranges (1 .. LS'Last + RS'Last);
-       N      : Natural := 0;
-       L, R   : Natural := 1;
- 
-    begin
-       --  Loop to search for overlapping character ranges
- 
-       while L <= LS'Last and then R <= RS'Last loop
- 
-          if LS (L).High < RS (R).Low then
-             L := L + 1;
- 
-          elsif RS (R).High < LS (L).Low then
-             R := R + 1;
- 
-          --  Here we have LS (L).High >= RS (R).Low
-          --           and RS (R).High >= LS (L).Low
-          --  so we have an overlapping range
- 
-          else
-             N := N + 1;
-             Result (N).Low := Wide_Character'Max (LS (L).Low,  RS (R).Low);
-             Result (N).High :=
-               Wide_Character'Min (LS (L).High, RS (R).High);
- 
-             if RS (R).High = LS (L).High then
-                L := L + 1;
-                R := R + 1;
-             elsif RS (R).High < LS (L).High then
-                R := R + 1;
-             else
-                L := L + 1;
-             end if;
-          end if;
-       end loop;
- 
-       return (AF.Controlled with
-               Set       => new Wide_Character_Ranges'(Result (1 .. N)));
-    end "and";
- 
-    -----------
-    -- "not" --
-    -----------
- 
-    function "not"
-      (Right : Wide_Character_Set) return Wide_Character_Set
-    is
-       RS : constant Wide_Character_Ranges_Access := Right.Set;
- 
-       Result : Wide_Character_Ranges (1 .. RS'Last + 1);
-       N      : Natural := 0;
- 
-    begin
-       if RS'Last = 0 then
-          N := 1;
-          Result (1) := (Low  => Wide_Character'First,
-                         High => Wide_Character'Last);
- 
-       else
-          if RS (1).Low /= Wide_Character'First then
-             N := N + 1;
-             Result (N).Low  := Wide_Character'First;
-             Result (N).High := Wide_Character'Pred (RS (1).Low);
-          end if;
- 
-          for K in 1 .. RS'Last - 1 loop
-             N := N + 1;
-             Result (N).Low  := Wide_Character'Succ (RS (K).High);
-             Result (N).High := Wide_Character'Pred (RS (K + 1).Low);
-          end loop;
- 
-          if RS (RS'Last).High /= Wide_Character'Last then
-             N := N + 1;
-             Result (N).Low  := Wide_Character'Succ (RS (RS'Last).High);
-             Result (N).High := Wide_Character'Last;
-          end if;
-       end if;
- 
-       return (AF.Controlled with
-               Set => new Wide_Character_Ranges'(Result (1 .. N)));
-    end "not";
- 
-    ----------
-    -- "or" --
-    ----------
- 
-    function "or"
-      (Left, Right : Wide_Character_Set) return Wide_Character_Set
-    is
-       LS : constant Wide_Character_Ranges_Access := Left.Set;
-       RS : constant Wide_Character_Ranges_Access := Right.Set;
- 
-       Result : Wide_Character_Ranges (1 .. LS'Last + RS'Last);
-       N      : Natural;
-       L, R   : Natural;
- 
-    begin
-       N := 0;
-       L := 1;
-       R := 1;
- 
-       --  Loop through ranges in output file
- 
-       loop
-          --  If no left ranges left, copy next right range
- 
-          if L > LS'Last then
-             exit when R > RS'Last;
-             N := N + 1;
-             Result (N) := RS (R);
-             R := R + 1;
- 
-          --  If no right ranges left, copy next left range
- 
-          elsif R > RS'Last then
-             N := N + 1;
-             Result (N) := LS (L);
-             L := L + 1;
- 
-          else
-             --  We have two ranges, choose lower one
- 
-             N := N + 1;
- 
-             if LS (L).Low <= RS (R).Low then
-                Result (N) := LS (L);
-                L := L + 1;
-             else
-                Result (N) := RS (R);
-                R := R + 1;
-             end if;
- 
-             --  Loop to collapse ranges into last range
- 
-             loop
-                --  Collapse next length range into current result range
-                --  if possible.
- 
-                if L <= LS'Last
-                  and then LS (L).Low <= Wide_Character'Succ (Result (N).High)
-                then
-                   Result (N).High :=
-                     Wide_Character'Max (Result (N).High, LS (L).High);
-                   L := L + 1;
- 
-                --  Collapse next right range into current result range
-                --  if possible
- 
-                elsif R <= RS'Last
-                  and then RS (R).Low <=
-                             Wide_Character'Succ (Result (N).High)
-                then
-                   Result (N).High :=
-                     Wide_Character'Max (Result (N).High, RS (R).High);
-                   R := R + 1;
- 
-                --  If neither range collapses, then done with this range
- 
-                else
-                   exit;
-                end if;
-             end loop;
-          end if;
-       end loop;
- 
-       return (AF.Controlled with
-               Set => new Wide_Character_Ranges'(Result (1 .. N)));
-    end "or";
- 
-    -----------
-    -- "xor" --
-    -----------
- 
-    function "xor"
-      (Left, Right : Wide_Character_Set) return Wide_Character_Set
-    is
-    begin
-       return (Left or Right) - (Left and Right);
-    end "xor";
- 
-    ------------
-    -- Adjust --
-    ------------
- 
-    procedure Adjust (Object : in out Wide_Character_Mapping) is
-    begin
-       Object.Map := new Wide_Character_Mapping_Values'(Object.Map.all);
-    end Adjust;
- 
-    procedure Adjust (Object : in out Wide_Character_Set) is
-    begin
-       Object.Set := new Wide_Character_Ranges'(Object.Set.all);
-    end Adjust;
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    procedure Finalize (Object : in out Wide_Character_Mapping) is
- 
-       procedure Free is new Ada.Unchecked_Deallocation
-         (Wide_Character_Mapping_Values,
-          Wide_Character_Mapping_Values_Access);
- 
-    begin
-       if Object.Map /= Null_Map'Unrestricted_Access then
-          Free (Object.Map);
-       end if;
-    end Finalize;
- 
-    procedure Finalize (Object : in out Wide_Character_Set) is
- 
-       procedure Free is new Ada.Unchecked_Deallocation
-         (Wide_Character_Ranges,
-          Wide_Character_Ranges_Access);
- 
-    begin
-       if Object.Set /= Null_Range'Unrestricted_Access then
-          Free (Object.Set);
-       end if;
-    end Finalize;
- 
-    ----------------
-    -- Initialize --
-    ----------------
- 
-    procedure Initialize (Object : in out Wide_Character_Mapping) is
-    begin
-       Object := Identity;
-    end Initialize;
- 
-    procedure Initialize (Object : in out Wide_Character_Set) is
-    begin
-       Object := Null_Set;
-    end Initialize;
- 
-    -----------
-    -- Is_In --
-    -----------
- 
-    function Is_In
-      (Element : Wide_Character;
-       Set     : Wide_Character_Set) return Boolean
-    is
-       L, R, M : Natural;
-       SS      : constant Wide_Character_Ranges_Access := Set.Set;
- 
-    begin
-       L := 1;
-       R := SS'Last;
- 
-       --  Binary search loop. The invariant is that if Element is in any of
-       --  of the constituent ranges it is in one between Set (L) and Set (R).
- 
-       loop
-          if L > R then
-             return False;
- 
-          else
-             M := (L + R) / 2;
- 
-             if Element > SS (M).High then
-                L := M + 1;
-             elsif Element < SS (M).Low then
-                R := M - 1;
-             else
-                return True;
-             end if;
-          end if;
-       end loop;
-    end Is_In;
- 
-    ---------------
-    -- Is_Subset --
-    ---------------
- 
-    function Is_Subset
-      (Elements : Wide_Character_Set;
-       Set      : Wide_Character_Set) return Boolean
-    is
-       ES : constant Wide_Character_Ranges_Access := Elements.Set;
-       SS : constant Wide_Character_Ranges_Access := Set.Set;
- 
-       S  : Positive := 1;
-       E  : Positive := 1;
- 
-    begin
-       loop
-          --  If no more element ranges, done, and result is true
- 
-          if E > ES'Last then
-             return True;
- 
-          --  If more element ranges, but no more set ranges, result is false
- 
-          elsif S > SS'Last then
-             return False;
- 
-          --  Remove irrelevant set range
- 
-          elsif SS (S).High < ES (E).Low then
-             S := S + 1;
- 
-          --  Get rid of element range that is properly covered by set
- 
-          elsif SS (S).Low <= ES (E).Low
-             and then ES (E).High <= SS (S).High
-          then
-             E := E + 1;
- 
-          --  Otherwise we have a non-covered element range, result is false
- 
-          else
-             return False;
-          end if;
-       end loop;
-    end Is_Subset;
- 
-    ---------------
-    -- To_Domain --
-    ---------------
- 
-    function To_Domain
-      (Map : Wide_Character_Mapping) return Wide_Character_Sequence
-    is
-    begin
-       return Map.Map.Domain;
-    end To_Domain;
- 
-    ----------------
-    -- To_Mapping --
-    ----------------
- 
-    function To_Mapping
-      (From, To : Wide_Character_Sequence) return Wide_Character_Mapping
-    is
-       Domain : Wide_Character_Sequence (1 .. From'Length);
-       Rangev : Wide_Character_Sequence (1 .. To'Length);
-       N      : Natural := 0;
- 
-    begin
-       if From'Length /= To'Length then
-          raise Translation_Error;
- 
-       else
-          pragma Warnings (Off); -- apparent uninit use of Domain
- 
-          for J in From'Range loop
-             for M in 1 .. N loop
-                if From (J) = Domain (M) then
-                   raise Translation_Error;
-                elsif From (J) < Domain (M) then
-                   Domain (M + 1 .. N + 1) := Domain (M .. N);
-                   Rangev (M + 1 .. N + 1) := Rangev (M .. N);
-                   Domain (M) := From (J);
-                   Rangev (M) := To   (J);
-                   goto Continue;
-                end if;
-             end loop;
- 
-             Domain (N + 1) := From (J);
-             Rangev (N + 1) := To   (J);
- 
-             <<Continue>>
-                N := N + 1;
-          end loop;
- 
-          pragma Warnings (On);
- 
-          return (AF.Controlled with
-                  Map => new Wide_Character_Mapping_Values'(
-                           Length => N,
-                           Domain => Domain (1 .. N),
-                           Rangev => Rangev (1 .. N)));
-       end if;
-    end To_Mapping;
- 
-    --------------
-    -- To_Range --
-    --------------
- 
-    function To_Range
-      (Map : Wide_Character_Mapping) return Wide_Character_Sequence
-    is
-    begin
-       return Map.Map.Rangev;
-    end To_Range;
- 
-    ---------------
-    -- To_Ranges --
-    ---------------
- 
-    function To_Ranges
-      (Set : Wide_Character_Set) return Wide_Character_Ranges
-    is
-    begin
-       return Set.Set.all;
-    end To_Ranges;
- 
-    -----------------
-    -- To_Sequence --
-    -----------------
- 
-    function To_Sequence
-      (Set : Wide_Character_Set) return Wide_Character_Sequence
-    is
-       SS    : constant Wide_Character_Ranges_Access := Set.Set;
-       N     : Natural := 0;
-       Count : Natural := 0;
- 
-    begin
-       for J in SS'Range loop
-          Count :=
-            Count + (Wide_Character'Pos (SS (J).High) -
-                     Wide_Character'Pos (SS (J).Low) + 1);
-       end loop;
- 
-       return Result : Wide_String (1 .. Count) do
-          for J in SS'Range loop
-             for K in SS (J).Low .. SS (J).High loop
-                N := N + 1;
-                Result (N) := K;
-             end loop;
-          end loop;
-       end return;
-    end To_Sequence;
- 
-    ------------
-    -- To_Set --
-    ------------
- 
-    --  Case of multiple range input
- 
-    function To_Set
-      (Ranges : Wide_Character_Ranges) return Wide_Character_Set
-    is
-       Result : Wide_Character_Ranges (Ranges'Range);
-       N      : Natural := 0;
-       J      : Natural;
- 
-    begin
-       --  The output of To_Set is required to be sorted by increasing Low
-       --  values, and discontiguous, so first we sort them as we enter them,
-       --  using a simple insertion sort.
- 
-       pragma Warnings (Off);
-       --  Kill bogus warning on Result being uninitialized
- 
-       for J in Ranges'Range loop
-          for K in 1 .. N loop
-             if Ranges (J).Low < Result (K).Low then
-                Result (K + 1 .. N + 1) := Result (K .. N);
-                Result (K) := Ranges (J);
-                goto Continue;
-             end if;
-          end loop;
- 
-          Result (N + 1) := Ranges (J);
- 
-          <<Continue>>
-             N := N + 1;
-       end loop;
- 
-       pragma Warnings (On);
- 
-       --  Now collapse any contiguous or overlapping ranges
- 
-       J := 1;
-       while J < N loop
-          if Result (J).High < Result (J).Low then
-             N := N - 1;
-             Result (J .. N) := Result (J + 1 .. N + 1);
- 
-          elsif Wide_Character'Succ (Result (J).High) >= Result (J + 1).Low then
-             Result (J).High :=
-               Wide_Character'Max (Result (J).High, Result (J + 1).High);
- 
-             N := N - 1;
-             Result (J + 1 .. N) := Result (J + 2 .. N + 1);
- 
-          else
-             J := J + 1;
-          end if;
-       end loop;
- 
-       if N > 0 and then Result (N).High < Result (N).Low then
-          N := N - 1;
-       end if;
- 
-       return (AF.Controlled with
-               Set => new Wide_Character_Ranges'(Result (1 .. N)));
-    end To_Set;
- 
-    --  Case of single range input
- 
-    function To_Set
-      (Span : Wide_Character_Range) return Wide_Character_Set
-    is
-    begin
-       if Span.Low > Span.High then
-          return Null_Set;
-          --  This is safe, because there is no procedure with parameter
-          --  Wide_Character_Set of mode "out" or "in out".
- 
-       else
-          return (AF.Controlled with
-                  Set => new Wide_Character_Ranges'(1 => Span));
-       end if;
-    end To_Set;
- 
-    --  Case of wide string input
- 
-    function To_Set
-      (Sequence : Wide_Character_Sequence) return Wide_Character_Set
-    is
-       R : Wide_Character_Ranges (1 .. Sequence'Length);
- 
-    begin
-       for J in R'Range loop
-          R (J) := (Sequence (J), Sequence (J));
-       end loop;
- 
-       return To_Set (R);
-    end To_Set;
- 
-    --  Case of single wide character input
- 
-    function To_Set
-      (Singleton : Wide_Character) return Wide_Character_Set
-    is
-    begin
-       return
-         (AF.Controlled with
-          Set => new Wide_Character_Ranges'(1 => (Singleton, Singleton)));
-    end To_Set;
- 
-    -----------
-    -- Value --
-    -----------
- 
-    function Value
-      (Map     : Wide_Character_Mapping;
-       Element : Wide_Character) return Wide_Character
-    is
-       L, R, M : Natural;
- 
-       MV : constant Wide_Character_Mapping_Values_Access := Map.Map;
- 
-    begin
-       L := 1;
-       R := MV.Domain'Last;
- 
-       --  Binary search loop
- 
-       loop
-          --  If not found, identity
- 
-          if L > R then
-             return Element;
- 
-          --  Otherwise do binary divide
- 
-          else
-             M := (L + R) / 2;
- 
-             if Element < MV.Domain (M) then
-                R := M - 1;
- 
-             elsif Element > MV.Domain (M) then
-                L := M + 1;
- 
-             else --  Element = MV.Domain (M) then
-                return MV.Rangev (M);
-             end if;
-          end if;
-       end loop;
-    end Value;
- 
- end Ada.Strings.Wide_Maps;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-stwima.ads gcc-8.1.0/gcc/ada/a-stwima.ads
*** gcc-7.3.0/gcc/ada/a-stwima.ads	Thu Dec 22 11:52:00 2011
--- gcc-8.1.0/gcc/ada/a-stwima.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,240 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                A D A . S T R I N G S . W I D E _ M A P S                 --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2011, Free Software Foundation, 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Finalization;
- 
- package Ada.Strings.Wide_Maps is
-    pragma Preelaborate;
- 
-    -------------------------------------
-    -- Wide Character Set Declarations --
-    -------------------------------------
- 
-    type Wide_Character_Set is private;
-    pragma Preelaborable_Initialization (Wide_Character_Set);
-    --  Representation for a set of Wide_Character values:
- 
-    Null_Set : constant Wide_Character_Set;
- 
-    ------------------------------------------
-    -- Constructors for Wide Character Sets --
-    ------------------------------------------
- 
-    type Wide_Character_Range is record
-       Low  : Wide_Character;
-       High : Wide_Character;
-    end record;
-    --  Represents Wide_Character range Low .. High
- 
-    type Wide_Character_Ranges is
-      array (Positive range <>) of Wide_Character_Range;
- 
-    function To_Set
-      (Ranges : Wide_Character_Ranges) return Wide_Character_Set;
- 
-    function To_Set
-      (Span : Wide_Character_Range) return Wide_Character_Set;
- 
-    function To_Ranges
-      (Set : Wide_Character_Set) return Wide_Character_Ranges;
- 
-    ---------------------------------------
-    -- Operations on Wide Character Sets --
-    ---------------------------------------
- 
-    function "=" (Left, Right : Wide_Character_Set) return Boolean;
- 
-    function "not"
-      (Right : Wide_Character_Set) return Wide_Character_Set;
- 
-    function "and"
-      (Left, Right : Wide_Character_Set) return Wide_Character_Set;
- 
-    function "or"
-      (Left, Right : Wide_Character_Set) return Wide_Character_Set;
- 
-    function "xor"
-      (Left, Right : Wide_Character_Set) return Wide_Character_Set;
- 
-    function "-"
-      (Left, Right : Wide_Character_Set) return Wide_Character_Set;
- 
-    function Is_In
-      (Element : Wide_Character;
-       Set     : Wide_Character_Set) return Boolean;
- 
-    function Is_Subset
-      (Elements : Wide_Character_Set;
-       Set      : Wide_Character_Set) return Boolean;
- 
-    function "<="
-      (Left  : Wide_Character_Set;
-       Right : Wide_Character_Set) return Boolean
-    renames Is_Subset;
- 
-    subtype Wide_Character_Sequence is Wide_String;
-    --  Alternative representation for a set of character values
- 
-    function To_Set
-      (Sequence : Wide_Character_Sequence) return Wide_Character_Set;
- 
-    function To_Set
-      (Singleton : Wide_Character) return Wide_Character_Set;
- 
-    function To_Sequence
-      (Set : Wide_Character_Set) return Wide_Character_Sequence;
- 
-    -----------------------------------------
-    -- Wide Character Mapping Declarations --
-    -----------------------------------------
- 
-    type Wide_Character_Mapping is private;
-    pragma Preelaborable_Initialization (Wide_Character_Mapping);
-    --  Representation for a wide character to wide character mapping:
- 
-    function Value
-      (Map     : Wide_Character_Mapping;
-       Element : Wide_Character) return Wide_Character;
- 
-    Identity : constant Wide_Character_Mapping;
- 
-    ---------------------------------
-    -- Operations on Wide Mappings --
-    ---------------------------------
- 
-    function To_Mapping
-      (From, To : Wide_Character_Sequence) return Wide_Character_Mapping;
- 
-    function To_Domain
-      (Map : Wide_Character_Mapping) return Wide_Character_Sequence;
- 
-    function To_Range
-      (Map : Wide_Character_Mapping) return Wide_Character_Sequence;
- 
-    type Wide_Character_Mapping_Function is
-       access function (From : Wide_Character) return Wide_Character;
- 
- private
-    package AF renames Ada.Finalization;
- 
-    ------------------------------------------
-    -- Representation of Wide_Character_Set --
-    ------------------------------------------
- 
-    --  A wide character set is represented as a sequence of wide character
-    --  ranges (i.e. an object of type Wide_Character_Ranges) in which the
-    --  following hold:
- 
-    --    The lower bound is 1
-    --    The ranges are in order by increasing Low values
-    --    The ranges are non-overlapping and discontigous
- 
-    --  A character value is in the set if it is contained in one of the
-    --  ranges. The actual Wide_Character_Set value is a controlled pointer
-    --  to this Wide_Character_Ranges value. The use of a controlled type
-    --  is necessary to prevent storage leaks.
- 
-    type Wide_Character_Ranges_Access is access all Wide_Character_Ranges;
- 
-    type Wide_Character_Set is new AF.Controlled with record
-       Set : Wide_Character_Ranges_Access;
-    end record;
- 
-    pragma Finalize_Storage_Only (Wide_Character_Set);
-    --  This avoids useless finalizations, and, more importantly avoids
-    --  incorrect attempts to finalize constants that are statically
-    --  declared here and in Ada.Strings.Wide_Maps, which is incorrect.
- 
-    overriding procedure Initialize (Object : in out Wide_Character_Set);
-    overriding procedure Adjust     (Object : in out Wide_Character_Set);
-    overriding procedure Finalize   (Object : in out Wide_Character_Set);
- 
-    Null_Range : aliased constant Wide_Character_Ranges :=
-                   (1 .. 0 => (Low => ' ', High => ' '));
- 
-    Null_Set : constant Wide_Character_Set :=
-                 (AF.Controlled with
-                  Set => Null_Range'Unrestricted_Access);
- 
-    ----------------------------------------------
-    -- Representation of Wide_Character_Mapping --
-    ----------------------------------------------
- 
-    --  A wide character mapping is represented as two strings of equal
-    --  length, where any character appearing in Domain is mapped to the
-    --  corresponding character in Rangev. A character not appearing in
-    --  Domain is mapped to itself. The characters in Domain are sorted
-    --  in ascending order.
- 
-    --  The actual Wide_Character_Mapping value is a controlled record
-    --  that contains a pointer to a discriminated record containing the
-    --  range and domain values.
- 
-    --  Note: this representation is canonical, and the values stored in
-    --  Domain and Rangev are exactly the values that are returned by the
-    --  functions To_Domain and To_Range. The use of a controlled type is
-    --  necessary to prevent storage leaks.
- 
-    type Wide_Character_Mapping_Values (Length : Natural) is record
-       Domain : Wide_Character_Sequence (1 .. Length);
-       Rangev : Wide_Character_Sequence (1 .. Length);
-    end record;
- 
-    type Wide_Character_Mapping_Values_Access is
-      access all Wide_Character_Mapping_Values;
- 
-    type Wide_Character_Mapping is new AF.Controlled with record
-       Map : Wide_Character_Mapping_Values_Access;
-    end record;
- 
-    pragma Finalize_Storage_Only (Wide_Character_Mapping);
-    --  This avoids useless finalizations, and, more importantly avoids
-    --  incorrect attempts to finalize constants that are statically
-    --  declared here and in Ada.Strings.Wide_Maps, which is incorrect.
- 
-    overriding procedure Initialize (Object : in out Wide_Character_Mapping);
-    overriding procedure Adjust     (Object : in out Wide_Character_Mapping);
-    overriding procedure Finalize   (Object : in out Wide_Character_Mapping);
- 
-    Null_Map : aliased constant Wide_Character_Mapping_Values :=
-                  (Length => 0,
-                   Domain => "",
-                   Rangev => "");
- 
-    Identity : constant Wide_Character_Mapping :=
-                 (AF.Controlled with
-                  Map => Null_Map'Unrestricted_Access);
- 
- end Ada.Strings.Wide_Maps;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-stwise.adb gcc-8.1.0/gcc/ada/a-stwise.adb
*** gcc-7.3.0/gcc/ada/a-stwise.adb	Tue May 26 10:29:25 2015
--- gcc-8.1.0/gcc/ada/a-stwise.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,614 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --              A D A . S T R I N G S . W I D E _ S E A R C H               --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Strings.Wide_Maps; use Ada.Strings.Wide_Maps;
- with System;                use System;
- 
- package body Ada.Strings.Wide_Search is
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    function Belongs
-      (Element : Wide_Character;
-       Set     : Wide_Maps.Wide_Character_Set;
-       Test    : Membership) return Boolean;
-    pragma Inline (Belongs);
-    --  Determines if the given element is in (Test = Inside) or not in
-    --  (Test = Outside) the given character set.
- 
-    -------------
-    -- Belongs --
-    -------------
- 
-    function Belongs
-      (Element : Wide_Character;
-       Set     : Wide_Maps.Wide_Character_Set;
-       Test    : Membership) return Boolean
-    is
-    begin
-       if Test = Inside then
-          return Is_In (Element, Set);
-       else
-          return not Is_In (Element, Set);
-       end if;
-    end Belongs;
- 
-    -----------
-    -- Count --
-    -----------
- 
-    function Count
-      (Source  : Wide_String;
-       Pattern : Wide_String;
-       Mapping : Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity)
-       return Natural
-    is
-       PL1 : constant Integer := Pattern'Length - 1;
-       Num : Natural;
-       Ind : Natural;
-       Cur : Natural;
- 
-    begin
-       if Pattern = "" then
-          raise Pattern_Error;
-       end if;
- 
-       Num := 0;
-       Ind := Source'First;
- 
-       --  Unmapped case
- 
-       if Mapping'Address = Wide_Maps.Identity'Address then
-          while Ind <= Source'Last - PL1 loop
-             if Pattern = Source (Ind .. Ind + PL1) then
-                Num := Num + 1;
-                Ind := Ind + Pattern'Length;
-             else
-                Ind := Ind + 1;
-             end if;
-          end loop;
- 
-       --  Mapped case
- 
-       else
-          while Ind <= Source'Last - PL1 loop
-             Cur := Ind;
-             for K in Pattern'Range loop
-                if Pattern (K) /= Value (Mapping, Source (Cur)) then
-                   Ind := Ind + 1;
-                   goto Cont;
-                else
-                   Cur := Cur + 1;
-                end if;
-             end loop;
- 
-             Num := Num + 1;
-             Ind := Ind + Pattern'Length;
- 
-          <<Cont>>
-             null;
-          end loop;
-       end if;
- 
-       --  Return result
- 
-       return Num;
-    end Count;
- 
-    function Count
-      (Source  : Wide_String;
-       Pattern : Wide_String;
-       Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural
-    is
-       PL1 : constant Integer := Pattern'Length - 1;
-       Num : Natural;
-       Ind : Natural;
-       Cur : Natural;
- 
-    begin
-       if Pattern = "" then
-          raise Pattern_Error;
-       end if;
- 
-       --  Check for null pointer in case checks are off
- 
-       if Mapping = null then
-          raise Constraint_Error;
-       end if;
- 
-       Num := 0;
-       Ind := Source'First;
-       while Ind <= Source'Last - PL1 loop
-          Cur := Ind;
-          for K in Pattern'Range loop
-             if Pattern (K) /= Mapping (Source (Cur)) then
-                Ind := Ind + 1;
-                goto Cont;
-             else
-                Cur := Cur + 1;
-             end if;
-          end loop;
- 
-          Num := Num + 1;
-          Ind := Ind + Pattern'Length;
- 
-       <<Cont>>
-          null;
-       end loop;
- 
-       return Num;
-    end Count;
- 
-    function Count
-      (Source : Wide_String;
-       Set    : Wide_Maps.Wide_Character_Set) return Natural
-    is
-       N : Natural := 0;
- 
-    begin
-       for J in Source'Range loop
-          if Is_In (Source (J), Set) then
-             N := N + 1;
-          end if;
-       end loop;
- 
-       return N;
-    end Count;
- 
-    ----------------
-    -- Find_Token --
-    ----------------
- 
-    procedure Find_Token
-      (Source : Wide_String;
-       Set    : Wide_Maps.Wide_Character_Set;
-       From   : Positive;
-       Test   : Membership;
-       First  : out Positive;
-       Last   : out Natural)
-    is
-    begin
-       for J in From .. Source'Last loop
-          if Belongs (Source (J), Set, Test) then
-             First := J;
- 
-             for K in J + 1 .. Source'Last loop
-                if not Belongs (Source (K), Set, Test) then
-                   Last := K - 1;
-                   return;
-                end if;
-             end loop;
- 
-             --  Here if J indexes first char of token, and all chars after J
-             --  are in the token.
- 
-             Last := Source'Last;
-             return;
-          end if;
-       end loop;
- 
-       --  Here if no token found
- 
-       First := From;
-       Last  := 0;
-    end Find_Token;
- 
-    procedure Find_Token
-      (Source : Wide_String;
-       Set    : Wide_Maps.Wide_Character_Set;
-       Test   : Membership;
-       First  : out Positive;
-       Last   : out Natural)
-    is
-    begin
-       for J in Source'Range loop
-          if Belongs (Source (J), Set, Test) then
-             First := J;
- 
-             for K in J + 1 .. Source'Last loop
-                if not Belongs (Source (K), Set, Test) then
-                   Last := K - 1;
-                   return;
-                end if;
-             end loop;
- 
-             --  Here if J indexes first char of token, and all chars after J
-             --  are in the token.
- 
-             Last := Source'Last;
-             return;
-          end if;
-       end loop;
- 
-       --  Here if no token found
- 
-       --  RM 2005 A.4.3 (68/1) specifies that an exception must be raised if
-       --  Source'First is not positive and is assigned to First. Formulation
-       --  is slightly different in RM 2012, but the intent seems similar, so
-       --  we check explicitly for that condition.
- 
-       if Source'First not in Positive then
-          raise Constraint_Error;
- 
-       else
-          First := Source'First;
-          Last  := 0;
-       end if;
-    end Find_Token;
- 
-    -----------
-    -- Index --
-    -----------
- 
-    function Index
-      (Source  : Wide_String;
-       Pattern : Wide_String;
-       Going   : Direction := Forward;
-       Mapping : Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity)
-       return Natural
-    is
-       PL1 : constant Integer := Pattern'Length - 1;
-       Cur : Natural;
- 
-       Ind : Integer;
-       --  Index for start of match check. This can be negative if the pattern
-       --  length is greater than the string length, which is why this variable
-       --  is Integer instead of Natural. In this case, the search loops do not
-       --  execute at all, so this Ind value is never used.
- 
-    begin
-       if Pattern = "" then
-          raise Pattern_Error;
-       end if;
- 
-       --  Forwards case
- 
-       if Going = Forward then
-          Ind := Source'First;
- 
-          --  Unmapped forward case
- 
-          if Mapping'Address = Wide_Maps.Identity'Address then
-             for J in 1 .. Source'Length - PL1 loop
-                if Pattern = Source (Ind .. Ind + PL1) then
-                   return Ind;
-                else
-                   Ind := Ind + 1;
-                end if;
-             end loop;
- 
-          --  Mapped forward case
- 
-          else
-             for J in 1 .. Source'Length - PL1 loop
-                Cur := Ind;
- 
-                for K in Pattern'Range loop
-                   if Pattern (K) /= Value (Mapping, Source (Cur)) then
-                      goto Cont1;
-                   else
-                      Cur := Cur + 1;
-                   end if;
-                end loop;
- 
-                return Ind;
- 
-             <<Cont1>>
-                Ind := Ind + 1;
-             end loop;
-          end if;
- 
-       --  Backwards case
- 
-       else
-          --  Unmapped backward case
- 
-          Ind := Source'Last - PL1;
- 
-          if Mapping'Address = Wide_Maps.Identity'Address then
-             for J in reverse 1 .. Source'Length - PL1 loop
-                if Pattern = Source (Ind .. Ind + PL1) then
-                   return Ind;
-                else
-                   Ind := Ind - 1;
-                end if;
-             end loop;
- 
-          --  Mapped backward case
- 
-          else
-             for J in reverse 1 .. Source'Length - PL1 loop
-                Cur := Ind;
- 
-                for K in Pattern'Range loop
-                   if Pattern (K) /= Value (Mapping, Source (Cur)) then
-                      goto Cont2;
-                   else
-                      Cur := Cur + 1;
-                   end if;
-                end loop;
- 
-                return Ind;
- 
-             <<Cont2>>
-                Ind := Ind - 1;
-             end loop;
-          end if;
-       end if;
- 
-       --  Fall through if no match found. Note that the loops are skipped
-       --  completely in the case of the pattern being longer than the source.
- 
-       return 0;
-    end Index;
- 
-    function Index
-      (Source  : Wide_String;
-       Pattern : Wide_String;
-       Going   : Direction := Forward;
-       Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural
-    is
-       PL1 : constant Integer := Pattern'Length - 1;
-       Ind : Natural;
-       Cur : Natural;
- 
-    begin
-       if Pattern = "" then
-          raise Pattern_Error;
-       end if;
- 
-       --  Check for null pointer in case checks are off
- 
-       if Mapping = null then
-          raise Constraint_Error;
-       end if;
- 
-       --  If Pattern longer than Source it can't be found
- 
-       if Pattern'Length > Source'Length then
-          return 0;
-       end if;
- 
-       --  Forwards case
- 
-       if Going = Forward then
-          Ind := Source'First;
-          for J in 1 .. Source'Length - PL1 loop
-             Cur := Ind;
- 
-             for K in Pattern'Range loop
-                if Pattern (K) /= Mapping.all (Source (Cur)) then
-                   goto Cont1;
-                else
-                   Cur := Cur + 1;
-                end if;
-             end loop;
- 
-             return Ind;
- 
-          <<Cont1>>
-             Ind := Ind + 1;
-          end loop;
- 
-       --  Backwards case
- 
-       else
-          Ind := Source'Last - PL1;
-          for J in reverse 1 .. Source'Length - PL1 loop
-             Cur := Ind;
- 
-             for K in Pattern'Range loop
-                if Pattern (K) /= Mapping.all (Source (Cur)) then
-                   goto Cont2;
-                else
-                   Cur := Cur + 1;
-                end if;
-             end loop;
- 
-             return Ind;
- 
-          <<Cont2>>
-             Ind := Ind - 1;
-          end loop;
-       end if;
- 
-       --  Fall through if no match found. Note that the loops are skipped
-       --  completely in the case of the pattern being longer than the source.
- 
-       return 0;
-    end Index;
- 
-    function Index
-      (Source : Wide_String;
-       Set    : Wide_Maps.Wide_Character_Set;
-       Test   : Membership := Inside;
-       Going  : Direction  := Forward) return Natural
-    is
-    begin
-       --  Forwards case
- 
-       if Going = Forward then
-          for J in Source'Range loop
-             if Belongs (Source (J), Set, Test) then
-                return J;
-             end if;
-          end loop;
- 
-       --  Backwards case
- 
-       else
-          for J in reverse Source'Range loop
-             if Belongs (Source (J), Set, Test) then
-                return J;
-             end if;
-          end loop;
-       end if;
- 
-       --  Fall through if no match
- 
-       return 0;
-    end Index;
- 
-    function Index
-      (Source  : Wide_String;
-       Pattern : Wide_String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity)
-       return Natural
-    is
-    begin
-       if Going = Forward then
-          if From < Source'First then
-             raise Index_Error;
-          end if;
- 
-          return
-            Index (Source (From .. Source'Last), Pattern, Forward, Mapping);
- 
-       else
-          if From > Source'Last then
-             raise Index_Error;
-          end if;
- 
-          return
-            Index (Source (Source'First .. From), Pattern, Backward, Mapping);
-       end if;
-    end Index;
- 
-    function Index
-      (Source  : Wide_String;
-       Pattern : Wide_String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural
-    is
-    begin
-       if Going = Forward then
-          if From < Source'First then
-             raise Index_Error;
-          end if;
- 
-          return Index
-            (Source (From .. Source'Last), Pattern, Forward, Mapping);
- 
-       else
-          if From > Source'Last then
-             raise Index_Error;
-          end if;
- 
-          return Index
-            (Source (Source'First .. From), Pattern, Backward, Mapping);
-       end if;
-    end Index;
- 
-    function Index
-      (Source  : Wide_String;
-       Set     : Wide_Maps.Wide_Character_Set;
-       From    : Positive;
-       Test    : Membership := Inside;
-       Going   : Direction := Forward) return Natural
-    is
-    begin
-       if Going = Forward then
-          if From < Source'First then
-             raise Index_Error;
-          end if;
- 
-          return
-            Index (Source (From .. Source'Last), Set, Test, Forward);
- 
-       else
-          if From > Source'Last then
-             raise Index_Error;
-          end if;
- 
-          return
-            Index (Source (Source'First .. From), Set, Test, Backward);
-       end if;
-    end Index;
- 
-    ---------------------
-    -- Index_Non_Blank --
-    ---------------------
- 
-    function Index_Non_Blank
-      (Source : Wide_String;
-       Going  : Direction := Forward) return Natural
-    is
-    begin
-       if Going = Forward then
-          for J in Source'Range loop
-             if Source (J) /= Wide_Space then
-                return J;
-             end if;
-          end loop;
- 
-       else -- Going = Backward
-          for J in reverse Source'Range loop
-             if Source (J) /= Wide_Space then
-                return J;
-             end if;
-          end loop;
-       end if;
- 
-       --  Fall through if no match
- 
-       return 0;
-    end Index_Non_Blank;
- 
-    function Index_Non_Blank
-      (Source : Wide_String;
-       From   : Positive;
-       Going  : Direction := Forward) return Natural
-    is
-    begin
-       if Going = Forward then
-          if From < Source'First then
-             raise Index_Error;
-          end if;
- 
-          return
-            Index_Non_Blank (Source (From .. Source'Last), Forward);
- 
-       else
-          if From > Source'Last then
-             raise Index_Error;
-          end if;
- 
-          return
-            Index_Non_Blank (Source (Source'First .. From), Backward);
-       end if;
-    end Index_Non_Blank;
- 
- end Ada.Strings.Wide_Search;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-stwise.ads gcc-8.1.0/gcc/ada/a-stwise.ads
*** gcc-7.3.0/gcc/ada/a-stwise.ads	Fri Oct  8 13:02:55 2010
--- gcc-8.1.0/gcc/ada/a-stwise.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,125 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --              A D A . S T R I N G S . W I D E _ S E A R C H               --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2010, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 search functions from Ada.Strings.Wide_Fixed.
- --  They are separated out because they are shared by Ada.Strings.Wide_Bounded
- --  and Ada.Strings.Wide_Unbounded, and we don't want to drag other irrelevant
- --  stuff from Ada.Strings.Wide_Fixed when using the other two packages. We
- --  make this a private package, since user programs should access these
- --  subprograms via one of the standard string packages.
- 
- with Ada.Strings.Wide_Maps;
- 
- private package Ada.Strings.Wide_Search is
-    pragma Preelaborate;
- 
-    function Index
-      (Source  : Wide_String;
-       Pattern : Wide_String;
-       Going   : Direction := Forward;
-       Mapping : Wide_Maps.Wide_Character_Mapping :=
-                   Wide_Maps.Identity) return Natural;
- 
-    function Index
-      (Source  : Wide_String;
-       Pattern : Wide_String;
-       Going   : Direction := Forward;
-       Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural;
- 
-    function Index
-      (Source : Wide_String;
-       Set    : Wide_Maps.Wide_Character_Set;
-       Test   : Membership := Inside;
-       Going  : Direction  := Forward) return Natural;
- 
-    function Index
-      (Source  : Wide_String;
-       Pattern : Wide_String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity)
-       return Natural;
- 
-    function Index
-      (Source  : Wide_String;
-       Pattern : Wide_String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural;
- 
-    function Index
-      (Source  : Wide_String;
-       Set     : Wide_Maps.Wide_Character_Set;
-       From    : Positive;
-       Test    : Membership := Inside;
-       Going   : Direction := Forward) return Natural;
- 
-    function Index_Non_Blank
-      (Source : Wide_String;
-       Going  : Direction := Forward) return Natural;
- 
-    function Index_Non_Blank
-      (Source : Wide_String;
-       From   : Positive;
-       Going  : Direction := Forward) return Natural;
- 
-    function Count
-      (Source  : Wide_String;
-       Pattern : Wide_String;
-       Mapping : Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity)
-       return Natural;
- 
-    function Count
-      (Source  : Wide_String;
-       Pattern : Wide_String;
-       Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural;
- 
-    function Count
-      (Source : Wide_String;
-       Set    : Wide_Maps.Wide_Character_Set) return Natural;
- 
-    procedure Find_Token
-      (Source : Wide_String;
-       Set    : Wide_Maps.Wide_Character_Set;
-       From   : Positive;
-       Test   : Membership;
-       First  : out Positive;
-       Last   : out Natural);
-    pragma Ada_2012 (Find_Token);
- 
-    procedure Find_Token
-      (Source : Wide_String;
-       Set    : Wide_Maps.Wide_Character_Set;
-       Test   : Membership;
-       First  : out Positive;
-       Last   : out Natural);
- 
- end Ada.Strings.Wide_Search;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-stwisu.adb gcc-8.1.0/gcc/ada/a-stwisu.adb
*** gcc-7.3.0/gcc/ada/a-stwisu.adb	Wed Mar  7 14:45:51 2012
--- gcc-8.1.0/gcc/ada/a-stwisu.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,1933 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --        A D A . S T R I N G S . W I D E _ S U P E R B O U N D E D         --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2003-2012, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Strings.Wide_Maps;   use Ada.Strings.Wide_Maps;
- with Ada.Strings.Wide_Search;
- 
- package body Ada.Strings.Wide_Superbounded is
- 
-    ------------
-    -- Concat --
-    ------------
- 
-    function Concat
-      (Left  : Super_String;
-       Right : Super_String) return Super_String
-    is
-    begin
-       return Result : Super_String (Left.Max_Length) do
-          declare
-             Llen : constant Natural := Left.Current_Length;
-             Rlen : constant Natural := Right.Current_Length;
-             Nlen : constant Natural := Llen + Rlen;
- 
-          begin
-             if Nlen > Left.Max_Length then
-                raise Ada.Strings.Length_Error;
-             else
-                Result.Current_Length := Nlen;
-                Result.Data (1 .. Llen) := Left.Data (1 .. Llen);
-                Result.Data (Llen + 1 .. Nlen) := Right.Data (1 .. Rlen);
-             end if;
-          end;
-       end return;
-    end Concat;
- 
-    function Concat
-      (Left  : Super_String;
-       Right : Wide_String) return Super_String
-    is
-    begin
-       return Result : Super_String (Left.Max_Length) do
-          declare
-             Llen : constant Natural := Left.Current_Length;
-             Nlen : constant Natural := Llen + Right'Length;
- 
-          begin
-             if Nlen > Left.Max_Length then
-                raise Ada.Strings.Length_Error;
-             else
-                Result.Current_Length := Nlen;
-                Result.Data (1 .. Llen) := Left.Data (1 .. Llen);
-                Result.Data (Llen + 1 .. Nlen) := Right;
-             end if;
-          end;
-       end return;
-    end Concat;
- 
-    function Concat
-      (Left  : Wide_String;
-       Right : Super_String) return Super_String
-    is
-    begin
-       return Result : Super_String (Right.Max_Length) do
-          declare
-             Llen : constant Natural := Left'Length;
-             Rlen : constant Natural := Right.Current_Length;
-             Nlen : constant Natural := Llen + Rlen;
- 
-          begin
-             if Nlen > Right.Max_Length then
-                raise Ada.Strings.Length_Error;
-             else
-                Result.Current_Length := Nlen;
-                Result.Data (1 .. Llen) := Left;
-                Result.Data (Llen + 1 .. Nlen) := Right.Data (1 .. Rlen);
-             end if;
-          end;
-       end return;
-    end Concat;
- 
-    function Concat
-      (Left  : Super_String;
-       Right : Wide_Character) return Super_String
-    is
-    begin
-       return Result : Super_String (Left.Max_Length) do
-          declare
-             Llen : constant Natural := Left.Current_Length;
- 
-          begin
-             if Llen = Left.Max_Length then
-                raise Ada.Strings.Length_Error;
-             else
-                Result.Current_Length := Llen + 1;
-                Result.Data (1 .. Llen) := Left.Data (1 .. Llen);
-                Result.Data (Result.Current_Length) := Right;
-             end if;
-          end;
-       end return;
-    end Concat;
- 
-    function Concat
-      (Left  : Wide_Character;
-       Right : Super_String) return Super_String
-    is
-    begin
-       return Result : Super_String (Right.Max_Length) do
-          declare
-             Rlen : constant Natural := Right.Current_Length;
- 
-          begin
-             if Rlen = Right.Max_Length then
-                raise Ada.Strings.Length_Error;
-             else
-                Result.Current_Length := Rlen + 1;
-                Result.Data (1) := Left;
-                Result.Data (2 .. Result.Current_Length) :=
-                  Right.Data (1 .. Rlen);
-             end if;
-          end;
-       end return;
-    end Concat;
- 
-    -----------
-    -- Equal --
-    -----------
- 
-    function "="
-      (Left  : Super_String;
-       Right : Super_String) return Boolean
-    is
-    begin
-       return Left.Current_Length = Right.Current_Length
-         and then Left.Data (1 .. Left.Current_Length) =
-                    Right.Data (1 .. Right.Current_Length);
-    end "=";
- 
-    function Equal
-      (Left  : Super_String;
-       Right : Wide_String) return Boolean
-    is
-    begin
-       return Left.Current_Length = Right'Length
-         and then Left.Data (1 .. Left.Current_Length) = Right;
-    end Equal;
- 
-    function Equal
-      (Left  : Wide_String;
-       Right : Super_String) return Boolean
-    is
-    begin
-       return Left'Length = Right.Current_Length
-         and then Left = Right.Data (1 .. Right.Current_Length);
-    end Equal;
- 
-    -------------
-    -- Greater --
-    -------------
- 
-    function Greater
-      (Left  : Super_String;
-       Right : Super_String) return Boolean
-    is
-    begin
-       return Left.Data (1 .. Left.Current_Length) >
-                Right.Data (1 .. Right.Current_Length);
-    end Greater;
- 
-    function Greater
-      (Left  : Super_String;
-       Right : Wide_String) return Boolean
-    is
-    begin
-       return Left.Data (1 .. Left.Current_Length) > Right;
-    end Greater;
- 
-    function Greater
-      (Left  : Wide_String;
-       Right : Super_String) return Boolean
-    is
-    begin
-       return Left > Right.Data (1 .. Right.Current_Length);
-    end Greater;
- 
-    ----------------------
-    -- Greater_Or_Equal --
-    ----------------------
- 
-    function Greater_Or_Equal
-      (Left  : Super_String;
-       Right : Super_String) return Boolean
-    is
-    begin
-       return Left.Data (1 .. Left.Current_Length) >=
-                Right.Data (1 .. Right.Current_Length);
-    end Greater_Or_Equal;
- 
-    function Greater_Or_Equal
-      (Left  : Super_String;
-       Right : Wide_String) return Boolean
-    is
-    begin
-       return Left.Data (1 .. Left.Current_Length) >= Right;
-    end Greater_Or_Equal;
- 
-    function Greater_Or_Equal
-      (Left  : Wide_String;
-       Right : Super_String) return Boolean
-    is
-    begin
-       return Left >= Right.Data (1 .. Right.Current_Length);
-    end Greater_Or_Equal;
- 
-    ----------
-    -- Less --
-    ----------
- 
-    function Less
-      (Left  : Super_String;
-       Right : Super_String) return Boolean
-    is
-    begin
-       return Left.Data (1 .. Left.Current_Length) <
-                Right.Data (1 .. Right.Current_Length);
-    end Less;
- 
-    function Less
-      (Left  : Super_String;
-       Right : Wide_String) return Boolean
-    is
-    begin
-       return Left.Data (1 .. Left.Current_Length) < Right;
-    end Less;
- 
-    function Less
-      (Left  : Wide_String;
-       Right : Super_String) return Boolean
-    is
-    begin
-       return Left < Right.Data (1 .. Right.Current_Length);
-    end Less;
- 
-    -------------------
-    -- Less_Or_Equal --
-    -------------------
- 
-    function Less_Or_Equal
-      (Left  : Super_String;
-       Right : Super_String) return Boolean
-    is
-    begin
-       return Left.Data (1 .. Left.Current_Length) <=
-                Right.Data (1 .. Right.Current_Length);
-    end Less_Or_Equal;
- 
-    function Less_Or_Equal
-      (Left  : Super_String;
-       Right : Wide_String) return Boolean
-    is
-    begin
-       return Left.Data (1 .. Left.Current_Length) <= Right;
-    end Less_Or_Equal;
- 
-    function Less_Or_Equal
-      (Left  : Wide_String;
-       Right : Super_String) return Boolean
-    is
-    begin
-       return Left <= Right.Data (1 .. Right.Current_Length);
-    end Less_Or_Equal;
- 
-    ----------------------
-    -- Set_Super_String --
-    ----------------------
- 
-    procedure Set_Super_String
-      (Target : out Super_String;
-       Source : Wide_String;
-       Drop   : Truncation := Error)
-    is
-       Slen       : constant Natural := Source'Length;
-       Max_Length : constant Positive := Target.Max_Length;
- 
-    begin
-       if Slen <= Max_Length then
-          Target.Current_Length := Slen;
-          Target.Data (1 .. Slen) := Source;
- 
-       else
-          case Drop is
-             when Strings.Right =>
-                Target.Current_Length := Max_Length;
-                Target.Data (1 .. Max_Length) :=
-                  Source (Source'First .. Source'First - 1 + Max_Length);
- 
-             when Strings.Left =>
-                Target.Current_Length := Max_Length;
-                Target.Data (1 .. Max_Length) :=
-                  Source (Source'Last - (Max_Length - 1) .. Source'Last);
- 
-             when Strings.Error =>
-                raise Ada.Strings.Length_Error;
-          end case;
-       end if;
-    end Set_Super_String;
- 
-    ------------------
-    -- Super_Append --
-    ------------------
- 
-    --  Case of Super_String and Super_String
- 
-    function Super_Append
-      (Left  : Super_String;
-       Right : Super_String;
-       Drop  : Strings.Truncation  := Strings.Error) return Super_String
-    is
-       Max_Length : constant Positive := Left.Max_Length;
-       Result : Super_String (Max_Length);
-       Llen   : constant Natural := Left.Current_Length;
-       Rlen   : constant Natural := Right.Current_Length;
-       Nlen   : constant Natural := Llen + Rlen;
- 
-    begin
-       if Nlen <= Max_Length then
-          Result.Current_Length := Nlen;
-          Result.Data (1 .. Llen) := Left.Data (1 .. Llen);
-          Result.Data (Llen + 1 .. Nlen) := Right.Data (1 .. Rlen);
- 
-       else
-          Result.Current_Length := Max_Length;
- 
-          case Drop is
-             when Strings.Right =>
-                if Llen >= Max_Length then -- only case is Llen = Max_Length
-                   Result.Data := Left.Data;
- 
-                else
-                   Result.Data (1 .. Llen) := Left.Data (1 .. Llen);
-                   Result.Data (Llen + 1 .. Max_Length) :=
-                     Right.Data (1 .. Max_Length - Llen);
-                end if;
- 
-             when Strings.Left =>
-                if Rlen >= Max_Length then -- only case is Rlen = Max_Length
-                   Result.Data := Right.Data;
- 
-                else
-                   Result.Data (1 .. Max_Length - Rlen) :=
-                     Left.Data (Llen - (Max_Length - Rlen - 1) .. Llen);
-                   Result.Data (Max_Length - Rlen + 1 .. Max_Length) :=
-                     Right.Data (1 .. Rlen);
-                end if;
- 
-             when Strings.Error =>
-                raise Ada.Strings.Length_Error;
-          end case;
-       end if;
- 
-       return Result;
-    end Super_Append;
- 
-    procedure Super_Append
-      (Source   : in out Super_String;
-       New_Item : Super_String;
-       Drop     : Truncation  := Error)
-    is
-       Max_Length : constant Positive := Source.Max_Length;
-       Llen       : constant Natural := Source.Current_Length;
-       Rlen       : constant Natural := New_Item.Current_Length;
-       Nlen       : constant Natural := Llen + Rlen;
- 
-    begin
-       if Nlen <= Max_Length then
-          Source.Current_Length := Nlen;
-          Source.Data (Llen + 1 .. Nlen) := New_Item.Data (1 .. Rlen);
- 
-       else
-          Source.Current_Length := Max_Length;
- 
-          case Drop is
-             when Strings.Right =>
-                if Llen < Max_Length then
-                   Source.Data (Llen + 1 .. Max_Length) :=
-                     New_Item.Data (1 .. Max_Length - Llen);
-                end if;
- 
-             when Strings.Left =>
-                if Rlen >= Max_Length then -- only case is Rlen = Max_Length
-                   Source.Data := New_Item.Data;
- 
-                else
-                   Source.Data (1 .. Max_Length - Rlen) :=
-                     Source.Data (Llen - (Max_Length - Rlen - 1) .. Llen);
-                   Source.Data (Max_Length - Rlen + 1 .. Max_Length) :=
-                     New_Item.Data (1 .. Rlen);
-                end if;
- 
-             when Strings.Error =>
-                raise Ada.Strings.Length_Error;
-          end case;
-       end if;
- 
-    end Super_Append;
- 
-    --  Case of Super_String and Wide_String
- 
-    function Super_Append
-      (Left  : Super_String;
-       Right : Wide_String;
-       Drop  : Strings.Truncation := Strings.Error) return Super_String
-    is
-       Max_Length : constant Positive := Left.Max_Length;
-       Result : Super_String (Max_Length);
-       Llen   : constant Natural := Left.Current_Length;
-       Rlen   : constant Natural := Right'Length;
-       Nlen   : constant Natural := Llen + Rlen;
- 
-    begin
-       if Nlen <= Max_Length then
-          Result.Current_Length := Nlen;
-          Result.Data (1 .. Llen) := Left.Data (1 .. Llen);
-          Result.Data (Llen + 1 .. Nlen) := Right;
- 
-       else
-          Result.Current_Length := Max_Length;
- 
-          case Drop is
-             when Strings.Right =>
-                if Llen >= Max_Length then -- only case is Llen = Max_Length
-                   Result.Data := Left.Data;
- 
-                else
-                   Result.Data (1 .. Llen) := Left.Data (1 .. Llen);
-                   Result.Data (Llen + 1 .. Max_Length) :=
-                     Right (Right'First .. Right'First - 1 +
-                              Max_Length - Llen);
- 
-                end if;
- 
-             when Strings.Left =>
-                if Rlen >= Max_Length then
-                   Result.Data (1 .. Max_Length) :=
-                     Right (Right'Last - (Max_Length - 1) .. Right'Last);
- 
-                else
-                   Result.Data (1 .. Max_Length - Rlen) :=
-                     Left.Data (Llen - (Max_Length - Rlen - 1) .. Llen);
-                   Result.Data (Max_Length - Rlen + 1 .. Max_Length) :=
-                     Right;
-                end if;
- 
-             when Strings.Error =>
-                raise Ada.Strings.Length_Error;
-          end case;
-       end if;
- 
-       return Result;
-    end Super_Append;
- 
-    procedure Super_Append
-      (Source   : in out Super_String;
-       New_Item : Wide_String;
-       Drop     : Truncation  := Error)
-    is
-       Max_Length : constant Positive := Source.Max_Length;
-       Llen   : constant Natural := Source.Current_Length;
-       Rlen   : constant Natural := New_Item'Length;
-       Nlen   : constant Natural := Llen + Rlen;
- 
-    begin
-       if Nlen <= Max_Length then
-          Source.Current_Length := Nlen;
-          Source.Data (Llen + 1 .. Nlen) := New_Item;
- 
-       else
-          Source.Current_Length := Max_Length;
- 
-          case Drop is
-             when Strings.Right =>
-                if Llen < Max_Length then
-                   Source.Data (Llen + 1 .. Max_Length) :=
-                     New_Item (New_Item'First ..
-                                 New_Item'First - 1 + Max_Length - Llen);
-                end if;
- 
-             when Strings.Left =>
-                if Rlen >= Max_Length then
-                   Source.Data (1 .. Max_Length) :=
-                     New_Item (New_Item'Last - (Max_Length - 1) ..
-                                 New_Item'Last);
- 
-                else
-                   Source.Data (1 .. Max_Length - Rlen) :=
-                     Source.Data (Llen - (Max_Length - Rlen - 1) .. Llen);
-                   Source.Data (Max_Length - Rlen + 1 .. Max_Length) :=
-                     New_Item;
-                end if;
- 
-             when Strings.Error =>
-                raise Ada.Strings.Length_Error;
-          end case;
-       end if;
- 
-    end Super_Append;
- 
-    --  Case of Wide_String and Super_String
- 
-    function Super_Append
-      (Left  : Wide_String;
-       Right : Super_String;
-       Drop  : Strings.Truncation := Strings.Error) return Super_String
-    is
-       Max_Length : constant Positive := Right.Max_Length;
-       Result     : Super_String (Max_Length);
-       Llen       : constant Natural := Left'Length;
-       Rlen       : constant Natural := Right.Current_Length;
-       Nlen       : constant Natural := Llen + Rlen;
- 
-    begin
-       if Nlen <= Max_Length then
-          Result.Current_Length := Nlen;
-          Result.Data (1 .. Llen) := Left;
-          Result.Data (Llen + 1 .. Llen + Rlen) := Right.Data (1 .. Rlen);
- 
-       else
-          Result.Current_Length := Max_Length;
- 
-          case Drop is
-             when Strings.Right =>
-                if Llen >= Max_Length then
-                   Result.Data (1 .. Max_Length) :=
-                     Left (Left'First .. Left'First + (Max_Length - 1));
- 
-                else
-                   Result.Data (1 .. Llen) := Left;
-                   Result.Data (Llen + 1 .. Max_Length) :=
-                     Right.Data (1 .. Max_Length - Llen);
-                end if;
- 
-             when Strings.Left =>
-                if Rlen >= Max_Length then
-                   Result.Data (1 .. Max_Length) :=
-                     Right.Data (Rlen - (Max_Length - 1) .. Rlen);
- 
-                else
-                   Result.Data (1 .. Max_Length - Rlen) :=
-                     Left (Left'Last - (Max_Length - Rlen - 1) .. Left'Last);
-                   Result.Data (Max_Length - Rlen + 1 .. Max_Length) :=
-                     Right.Data (1 .. Rlen);
-                end if;
- 
-             when Strings.Error =>
-                raise Ada.Strings.Length_Error;
-          end case;
-       end if;
- 
-       return Result;
-    end Super_Append;
- 
-    --  Case of Super_String and Wide_Character
- 
-    function Super_Append
-      (Left  : Super_String;
-       Right : Wide_Character;
-       Drop  : Strings.Truncation := Strings.Error) return Super_String
-    is
-       Max_Length : constant Positive := Left.Max_Length;
-       Result     : Super_String (Max_Length);
-       Llen       : constant Natural := Left.Current_Length;
- 
-    begin
-       if Llen  < Max_Length then
-          Result.Current_Length := Llen + 1;
-          Result.Data (1 .. Llen) := Left.Data (1 .. Llen);
-          Result.Data (Llen + 1) := Right;
-          return Result;
- 
-       else
-          case Drop is
-             when Strings.Right =>
-                return Left;
- 
-             when Strings.Left =>
-                Result.Current_Length := Max_Length;
-                Result.Data (1 .. Max_Length - 1) :=
-                  Left.Data (2 .. Max_Length);
-                Result.Data (Max_Length) := Right;
-                return Result;
- 
-             when Strings.Error =>
-                raise Ada.Strings.Length_Error;
-          end case;
-       end if;
-    end Super_Append;
- 
-    procedure Super_Append
-      (Source   : in out Super_String;
-       New_Item : Wide_Character;
-       Drop     : Truncation  := Error)
-    is
-       Max_Length : constant Positive := Source.Max_Length;
-       Llen       : constant Natural  := Source.Current_Length;
- 
-    begin
-       if Llen  < Max_Length then
-          Source.Current_Length := Llen + 1;
-          Source.Data (Llen + 1) := New_Item;
- 
-       else
-          Source.Current_Length := Max_Length;
- 
-          case Drop is
-             when Strings.Right =>
-                null;
- 
-             when Strings.Left =>
-                Source.Data (1 .. Max_Length - 1) :=
-                  Source.Data (2 .. Max_Length);
-                Source.Data (Max_Length) := New_Item;
- 
-             when Strings.Error =>
-                raise Ada.Strings.Length_Error;
-          end case;
-       end if;
- 
-    end Super_Append;
- 
-    --  Case of Wide_Character and Super_String
- 
-    function Super_Append
-      (Left  : Wide_Character;
-       Right : Super_String;
-       Drop  : Strings.Truncation := Strings.Error) return Super_String
-    is
-       Max_Length : constant Positive := Right.Max_Length;
-       Result : Super_String (Max_Length);
-       Rlen   : constant Natural := Right.Current_Length;
- 
-    begin
-       if Rlen < Max_Length then
-          Result.Current_Length := Rlen + 1;
-          Result.Data (1) := Left;
-          Result.Data (2 .. Rlen + 1) := Right.Data (1 .. Rlen);
-          return Result;
- 
-       else
-          case Drop is
-             when Strings.Right =>
-                Result.Current_Length := Max_Length;
-                Result.Data (1) := Left;
-                Result.Data (2 .. Max_Length) :=
-                  Right.Data (1 .. Max_Length - 1);
-                return Result;
- 
-             when Strings.Left =>
-                return Right;
- 
-             when Strings.Error =>
-                raise Ada.Strings.Length_Error;
-          end case;
-       end if;
-    end Super_Append;
- 
-    -----------------
-    -- Super_Count --
-    -----------------
- 
-    function Super_Count
-      (Source  : Super_String;
-       Pattern : Wide_String;
-       Mapping : Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity)
-       return Natural
-    is
-    begin
-       return
-         Wide_Search.Count
-           (Source.Data (1 .. Source.Current_Length), Pattern, Mapping);
-    end Super_Count;
- 
-    function Super_Count
-      (Source  : Super_String;
-       Pattern : Wide_String;
-       Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural
-    is
-    begin
-       return
-         Wide_Search.Count
-           (Source.Data (1 .. Source.Current_Length), Pattern, Mapping);
-    end Super_Count;
- 
-    function Super_Count
-      (Source : Super_String;
-       Set    : Wide_Maps.Wide_Character_Set) return Natural
-    is
-    begin
-       return Wide_Search.Count (Source.Data (1 .. Source.Current_Length), Set);
-    end Super_Count;
- 
-    ------------------
-    -- Super_Delete --
-    ------------------
- 
-    function Super_Delete
-      (Source  : Super_String;
-       From    : Positive;
-       Through : Natural) return Super_String
-    is
-       Result     : Super_String (Source.Max_Length);
-       Slen       : constant Natural := Source.Current_Length;
-       Num_Delete : constant Integer := Through - From + 1;
- 
-    begin
-       if Num_Delete <= 0 then
-          return Source;
- 
-       elsif From > Slen + 1 then
-          raise Ada.Strings.Index_Error;
- 
-       elsif Through >= Slen then
-          Result.Current_Length := From - 1;
-          Result.Data (1 .. From - 1) := Source.Data (1 .. From - 1);
-          return Result;
- 
-       else
-          Result.Current_Length := Slen - Num_Delete;
-          Result.Data (1 .. From - 1) := Source.Data (1 .. From - 1);
-          Result.Data (From .. Result.Current_Length) :=
-            Source.Data (Through + 1 .. Slen);
-          return Result;
-       end if;
-    end Super_Delete;
- 
-    procedure Super_Delete
-      (Source  : in out Super_String;
-       From    : Positive;
-       Through : Natural)
-    is
-       Slen       : constant Natural := Source.Current_Length;
-       Num_Delete : constant Integer := Through - From + 1;
- 
-    begin
-       if Num_Delete <= 0 then
-          return;
- 
-       elsif From > Slen + 1 then
-          raise Ada.Strings.Index_Error;
- 
-       elsif Through >= Slen then
-          Source.Current_Length := From - 1;
- 
-       else
-          Source.Current_Length := Slen - Num_Delete;
-          Source.Data (From .. Source.Current_Length) :=
-            Source.Data (Through + 1 .. Slen);
-       end if;
-    end Super_Delete;
- 
-    -------------------
-    -- Super_Element --
-    -------------------
- 
-    function Super_Element
-      (Source : Super_String;
-       Index  : Positive) return Wide_Character
-    is
-    begin
-       if Index <= Source.Current_Length then
-          return Source.Data (Index);
-       else
-          raise Strings.Index_Error;
-       end if;
-    end Super_Element;
- 
-    ----------------------
-    -- Super_Find_Token --
-    ----------------------
- 
-    procedure Super_Find_Token
-      (Source : Super_String;
-       Set    : Wide_Maps.Wide_Character_Set;
-       From   : Positive;
-       Test   : Strings.Membership;
-       First  : out Positive;
-       Last   : out Natural)
-    is
-    begin
-       Wide_Search.Find_Token
-         (Source.Data (From .. Source.Current_Length), Set, Test, First, Last);
-    end Super_Find_Token;
- 
-    procedure Super_Find_Token
-      (Source : Super_String;
-       Set    : Wide_Maps.Wide_Character_Set;
-       Test   : Strings.Membership;
-       First  : out Positive;
-       Last   : out Natural)
-    is
-    begin
-       Wide_Search.Find_Token
-         (Source.Data (1 .. Source.Current_Length), Set, Test, First, Last);
-    end Super_Find_Token;
- 
-    ----------------
-    -- Super_Head --
-    ----------------
- 
-    function Super_Head
-      (Source : Super_String;
-       Count  : Natural;
-       Pad    : Wide_Character := Wide_Space;
-       Drop   : Strings.Truncation := Strings.Error) return Super_String
-    is
-       Max_Length : constant Positive := Source.Max_Length;
-       Result     : Super_String (Max_Length);
-       Slen       : constant Natural := Source.Current_Length;
-       Npad       : constant Integer := Count - Slen;
- 
-    begin
-       if Npad <= 0 then
-          Result.Current_Length := Count;
-          Result.Data (1 .. Count) := Source.Data (1 .. Count);
- 
-       elsif Count <= Max_Length then
-          Result.Current_Length := Count;
-          Result.Data (1 .. Slen) := Source.Data (1 .. Slen);
-          Result.Data (Slen + 1 .. Count) := (others => Pad);
- 
-       else
-          Result.Current_Length := Max_Length;
- 
-          case Drop is
-             when Strings.Right =>
-                Result.Data (1 .. Slen) := Source.Data (1 .. Slen);
-                Result.Data (Slen + 1 .. Max_Length) := (others => Pad);
- 
-             when Strings.Left =>
-                if Npad >= Max_Length then
-                   Result.Data := (others => Pad);
- 
-                else
-                   Result.Data (1 .. Max_Length - Npad) :=
-                     Source.Data (Count - Max_Length + 1 .. Slen);
-                   Result.Data (Max_Length - Npad + 1 .. Max_Length) :=
-                     (others => Pad);
-                end if;
- 
-             when Strings.Error =>
-                raise Ada.Strings.Length_Error;
-          end case;
-       end if;
- 
-       return Result;
-    end Super_Head;
- 
-    procedure Super_Head
-      (Source : in out Super_String;
-       Count  : Natural;
-       Pad    : Wide_Character := Wide_Space;
-       Drop   : Truncation := Error)
-    is
-       Max_Length : constant Positive := Source.Max_Length;
-       Slen       : constant Natural  := Source.Current_Length;
-       Npad       : constant Integer  := Count - Slen;
-       Temp       : Wide_String (1 .. Max_Length);
- 
-    begin
-       if Npad <= 0 then
-          Source.Current_Length := Count;
- 
-       elsif Count <= Max_Length then
-          Source.Current_Length := Count;
-          Source.Data (Slen + 1 .. Count) := (others => Pad);
- 
-       else
-          Source.Current_Length := Max_Length;
- 
-          case Drop is
-             when Strings.Right =>
-                Source.Data (Slen + 1 .. Max_Length) := (others => Pad);
- 
-             when Strings.Left =>
-                if Npad > Max_Length then
-                   Source.Data := (others => Pad);
- 
-                else
-                   Temp := Source.Data;
-                   Source.Data (1 .. Max_Length - Npad) :=
-                     Temp (Count - Max_Length + 1 .. Slen);
- 
-                   for J in Max_Length - Npad + 1 .. Max_Length loop
-                      Source.Data (J) := Pad;
-                   end loop;
-                end if;
- 
-             when Strings.Error =>
-                raise Ada.Strings.Length_Error;
-          end case;
-       end if;
-    end Super_Head;
- 
-    -----------------
-    -- Super_Index --
-    -----------------
- 
-    function Super_Index
-      (Source  : Super_String;
-       Pattern : Wide_String;
-       Going   : Strings.Direction := Strings.Forward;
-       Mapping : Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity)
-       return Natural
-    is
-    begin
-       return Wide_Search.Index
-         (Source.Data (1 .. Source.Current_Length), Pattern, Going, Mapping);
-    end Super_Index;
- 
-    function Super_Index
-      (Source  : Super_String;
-       Pattern : Wide_String;
-       Going   : Direction := Forward;
-       Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural
-    is
-    begin
-       return Wide_Search.Index
-         (Source.Data (1 .. Source.Current_Length), Pattern, Going, Mapping);
-    end Super_Index;
- 
-    function Super_Index
-      (Source : Super_String;
-       Set    : Wide_Maps.Wide_Character_Set;
-       Test   : Strings.Membership := Strings.Inside;
-       Going  : Strings.Direction  := Strings.Forward) return Natural
-    is
-    begin
-       return Wide_Search.Index
-         (Source.Data (1 .. Source.Current_Length), Set, Test, Going);
-    end Super_Index;
- 
-    function Super_Index
-      (Source  : Super_String;
-       Pattern : Wide_String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity)
-       return Natural
-    is
-    begin
-       return Wide_Search.Index
-         (Source.Data (1 .. Source.Current_Length),
-          Pattern, From, Going, Mapping);
-    end Super_Index;
- 
-    function Super_Index
-      (Source  : Super_String;
-       Pattern : Wide_String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural
-    is
-    begin
-       return Wide_Search.Index
-         (Source.Data (1 .. Source.Current_Length),
-          Pattern, From, Going, Mapping);
-    end Super_Index;
- 
-    function Super_Index
-      (Source : Super_String;
-       Set    : Wide_Maps.Wide_Character_Set;
-       From   : Positive;
-       Test   : Membership := Inside;
-       Going  : Direction := Forward) return Natural
-    is
-    begin
-       return Wide_Search.Index
-         (Source.Data (1 .. Source.Current_Length), Set, From, Test, Going);
-    end Super_Index;
- 
-    ---------------------------
-    -- Super_Index_Non_Blank --
-    ---------------------------
- 
-    function Super_Index_Non_Blank
-      (Source : Super_String;
-       Going  : Strings.Direction := Strings.Forward) return Natural
-    is
-    begin
-       return
-         Wide_Search.Index_Non_Blank
-           (Source.Data (1 .. Source.Current_Length), Going);
-    end Super_Index_Non_Blank;
- 
-    function Super_Index_Non_Blank
-      (Source : Super_String;
-       From   : Positive;
-       Going  : Direction := Forward) return Natural
-    is
-    begin
-       return
-         Wide_Search.Index_Non_Blank
-           (Source.Data (1 .. Source.Current_Length), From, Going);
-    end Super_Index_Non_Blank;
- 
-    ------------------
-    -- Super_Insert --
-    ------------------
- 
-    function Super_Insert
-      (Source   : Super_String;
-       Before   : Positive;
-       New_Item : Wide_String;
-       Drop     : Strings.Truncation := Strings.Error) return Super_String
-    is
-       Max_Length : constant Positive := Source.Max_Length;
-       Result     : Super_String (Max_Length);
-       Slen       : constant Natural := Source.Current_Length;
-       Nlen       : constant Natural := New_Item'Length;
-       Tlen       : constant Natural := Slen + Nlen;
-       Blen       : constant Natural := Before - 1;
-       Alen       : constant Integer := Slen - Blen;
-       Droplen    : constant Integer := Tlen - Max_Length;
- 
-       --  Tlen is the length of the total string before possible truncation.
-       --  Blen, Alen are the lengths of the before and after pieces of the
-       --  source string.
- 
-    begin
-       if Alen < 0 then
-          raise Ada.Strings.Index_Error;
- 
-       elsif Droplen <= 0 then
-          Result.Current_Length := Tlen;
-          Result.Data (1 .. Blen) := Source.Data (1 .. Blen);
-          Result.Data (Before .. Before + Nlen - 1) := New_Item;
-          Result.Data (Before + Nlen .. Tlen) :=
-            Source.Data (Before .. Slen);
- 
-       else
-          Result.Current_Length := Max_Length;
- 
-          case Drop is
-             when Strings.Right =>
-                Result.Data (1 .. Blen) := Source.Data (1 .. Blen);
- 
-                if Droplen > Alen then
-                   Result.Data (Before .. Max_Length) :=
-                     New_Item (New_Item'First
-                                 .. New_Item'First + Max_Length - Before);
-                else
-                   Result.Data (Before .. Before + Nlen - 1) := New_Item;
-                   Result.Data (Before + Nlen .. Max_Length) :=
-                     Source.Data (Before .. Slen - Droplen);
-                end if;
- 
-             when Strings.Left =>
-                Result.Data (Max_Length - (Alen - 1) .. Max_Length) :=
-                  Source.Data (Before .. Slen);
- 
-                if Droplen >= Blen then
-                   Result.Data (1 .. Max_Length - Alen) :=
-                     New_Item (New_Item'Last - (Max_Length - Alen) + 1
-                                 .. New_Item'Last);
-                else
-                   Result.Data
-                     (Blen - Droplen + 1 .. Max_Length - Alen) :=
-                     New_Item;
-                   Result.Data (1 .. Blen - Droplen) :=
-                     Source.Data (Droplen + 1 .. Blen);
-                end if;
- 
-             when Strings.Error =>
-                raise Ada.Strings.Length_Error;
-          end case;
-       end if;
- 
-       return Result;
-    end Super_Insert;
- 
-    procedure Super_Insert
-      (Source   : in out Super_String;
-       Before   : Positive;
-       New_Item : Wide_String;
-       Drop     : Strings.Truncation := Strings.Error)
-    is
-    begin
-       --  We do a double copy here because this is one of the situations
-       --  in which we move data to the right, and at least at the moment,
-       --  GNAT is not handling such cases correctly ???
- 
-       Source := Super_Insert (Source, Before, New_Item, Drop);
-    end Super_Insert;
- 
-    ------------------
-    -- Super_Length --
-    ------------------
- 
-    function Super_Length (Source : Super_String) return Natural is
-    begin
-       return Source.Current_Length;
-    end Super_Length;
- 
-    ---------------------
-    -- Super_Overwrite --
-    ---------------------
- 
-    function Super_Overwrite
-      (Source   : Super_String;
-       Position : Positive;
-       New_Item : Wide_String;
-       Drop     : Strings.Truncation := Strings.Error) return Super_String
-    is
-       Max_Length : constant Positive := Source.Max_Length;
-       Result     : Super_String (Max_Length);
-       Endpos     : constant Natural  := Position + New_Item'Length - 1;
-       Slen       : constant Natural  := Source.Current_Length;
-       Droplen    : Natural;
- 
-    begin
-       if Position > Slen + 1 then
-          raise Ada.Strings.Index_Error;
- 
-       elsif New_Item'Length = 0 then
-          return Source;
- 
-       elsif Endpos <= Slen then
-          Result.Current_Length := Source.Current_Length;
-          Result.Data (1 .. Slen) := Source.Data (1 .. Slen);
-          Result.Data (Position .. Endpos) := New_Item;
-          return Result;
- 
-       elsif Endpos <= Max_Length then
-          Result.Current_Length := Endpos;
-          Result.Data (1 .. Position - 1) := Source.Data (1 .. Position - 1);
-          Result.Data (Position .. Endpos) := New_Item;
-          return Result;
- 
-       else
-          Result.Current_Length := Max_Length;
-          Droplen := Endpos - Max_Length;
- 
-          case Drop is
-             when Strings.Right =>
-                Result.Data (1 .. Position - 1) :=
-                  Source.Data (1 .. Position - 1);
- 
-                Result.Data (Position .. Max_Length) :=
-                  New_Item (New_Item'First .. New_Item'Last - Droplen);
-                return Result;
- 
-             when Strings.Left =>
-                if New_Item'Length >= Max_Length then
-                   Result.Data (1 .. Max_Length) :=
-                     New_Item (New_Item'Last - Max_Length + 1 ..
-                                 New_Item'Last);
-                   return Result;
- 
-                else
-                   Result.Data (1 .. Max_Length - New_Item'Length) :=
-                     Source.Data (Droplen + 1 .. Position - 1);
-                   Result.Data
-                     (Max_Length - New_Item'Length + 1 .. Max_Length) :=
-                     New_Item;
-                   return Result;
-                end if;
- 
-             when Strings.Error =>
-                raise Ada.Strings.Length_Error;
-          end case;
-       end if;
-    end Super_Overwrite;
- 
-    procedure Super_Overwrite
-      (Source    : in out Super_String;
-       Position  : Positive;
-       New_Item  : Wide_String;
-       Drop      : Strings.Truncation := Strings.Error)
-    is
-       Max_Length : constant Positive := Source.Max_Length;
-       Endpos     : constant Positive := Position + New_Item'Length - 1;
-       Slen       : constant Natural  := Source.Current_Length;
-       Droplen    : Natural;
- 
-    begin
-       if Position > Slen + 1 then
-          raise Ada.Strings.Index_Error;
- 
-       elsif Endpos <= Slen then
-          Source.Data (Position .. Endpos) := New_Item;
- 
-       elsif Endpos <= Max_Length then
-          Source.Data (Position .. Endpos) := New_Item;
-          Source.Current_Length := Endpos;
- 
-       else
-          Source.Current_Length := Max_Length;
-          Droplen := Endpos - Max_Length;
- 
-          case Drop is
-             when Strings.Right =>
-                Source.Data (Position .. Max_Length) :=
-                  New_Item (New_Item'First .. New_Item'Last - Droplen);
- 
-             when Strings.Left =>
-                if New_Item'Length > Max_Length then
-                   Source.Data (1 .. Max_Length) :=
-                     New_Item (New_Item'Last - Max_Length + 1 ..
-                                 New_Item'Last);
- 
-                else
-                   Source.Data (1 .. Max_Length - New_Item'Length) :=
-                     Source.Data (Droplen + 1 .. Position - 1);
- 
-                   Source.Data
-                     (Max_Length - New_Item'Length + 1 .. Max_Length) :=
-                     New_Item;
-                end if;
- 
-             when Strings.Error =>
-                raise Ada.Strings.Length_Error;
-          end case;
-       end if;
-    end Super_Overwrite;
- 
-    ---------------------------
-    -- Super_Replace_Element --
-    ---------------------------
- 
-    procedure Super_Replace_Element
-      (Source : in out Super_String;
-       Index  : Positive;
-       By     : Wide_Character)
-    is
-    begin
-       if Index <= Source.Current_Length then
-          Source.Data (Index) := By;
-       else
-          raise Ada.Strings.Index_Error;
-       end if;
-    end Super_Replace_Element;
- 
-    -------------------------
-    -- Super_Replace_Slice --
-    -------------------------
- 
-    function Super_Replace_Slice
-      (Source : Super_String;
-       Low    : Positive;
-       High   : Natural;
-       By     : Wide_String;
-       Drop   : Strings.Truncation := Strings.Error) return Super_String
-    is
-       Max_Length : constant Positive := Source.Max_Length;
-       Slen       : constant Natural  := Source.Current_Length;
- 
-    begin
-       if Low > Slen + 1 then
-          raise Strings.Index_Error;
- 
-       elsif High < Low then
-          return Super_Insert (Source, Low, By, Drop);
- 
-       else
-          declare
-             Blen    : constant Natural := Natural'Max (0, Low - 1);
-             Alen    : constant Natural := Natural'Max (0, Slen - High);
-             Tlen    : constant Natural := Blen + By'Length + Alen;
-             Droplen : constant Integer := Tlen - Max_Length;
-             Result  : Super_String (Max_Length);
- 
-             --  Tlen is the total length of the result string before any
-             --  truncation. Blen and Alen are the lengths of the pieces
-             --  of the original string that end up in the result string
-             --  before and after the replaced slice.
- 
-          begin
-             if Droplen <= 0 then
-                Result.Current_Length := Tlen;
-                Result.Data (1 .. Blen) := Source.Data (1 .. Blen);
-                Result.Data (Low .. Low + By'Length - 1) := By;
-                Result.Data (Low + By'Length .. Tlen) :=
-                  Source.Data (High + 1 .. Slen);
- 
-             else
-                Result.Current_Length := Max_Length;
- 
-                case Drop is
-                   when Strings.Right =>
-                      Result.Data (1 .. Blen) := Source.Data (1 .. Blen);
- 
-                      if Droplen > Alen then
-                         Result.Data (Low .. Max_Length) :=
-                           By (By'First .. By'First + Max_Length - Low);
-                      else
-                         Result.Data (Low .. Low + By'Length - 1) := By;
-                         Result.Data (Low + By'Length .. Max_Length) :=
-                           Source.Data (High + 1 .. Slen - Droplen);
-                      end if;
- 
-                   when Strings.Left =>
-                      Result.Data (Max_Length - (Alen - 1) .. Max_Length) :=
-                        Source.Data (High + 1 .. Slen);
- 
-                      if Droplen >= Blen then
-                         Result.Data (1 .. Max_Length - Alen) :=
-                           By (By'Last - (Max_Length - Alen) + 1 .. By'Last);
-                      else
-                         Result.Data
-                           (Blen - Droplen + 1 .. Max_Length - Alen) := By;
-                         Result.Data (1 .. Blen - Droplen) :=
-                           Source.Data (Droplen + 1 .. Blen);
-                      end if;
- 
-                   when Strings.Error =>
-                      raise Ada.Strings.Length_Error;
-                end case;
-             end if;
- 
-             return Result;
-          end;
-       end if;
-    end Super_Replace_Slice;
- 
-    procedure Super_Replace_Slice
-      (Source   : in out Super_String;
-       Low      : Positive;
-       High     : Natural;
-       By       : Wide_String;
-       Drop     : Strings.Truncation := Strings.Error)
-    is
-    begin
-       --  We do a double copy here because this is one of the situations
-       --  in which we move data to the right, and at least at the moment,
-       --  GNAT is not handling such cases correctly ???
- 
-       Source := Super_Replace_Slice (Source, Low, High, By, Drop);
-    end Super_Replace_Slice;
- 
-    ---------------------
-    -- Super_Replicate --
-    ---------------------
- 
-    function Super_Replicate
-      (Count      : Natural;
-       Item       : Wide_Character;
-       Drop       : Truncation := Error;
-       Max_Length : Positive) return Super_String
-    is
-       Result : Super_String (Max_Length);
- 
-    begin
-       if Count <= Max_Length then
-          Result.Current_Length := Count;
- 
-       elsif Drop = Strings.Error then
-          raise Ada.Strings.Length_Error;
- 
-       else
-          Result.Current_Length := Max_Length;
-       end if;
- 
-       Result.Data (1 .. Result.Current_Length) := (others => Item);
-       return Result;
-    end Super_Replicate;
- 
-    function Super_Replicate
-      (Count      : Natural;
-       Item       : Wide_String;
-       Drop       : Truncation := Error;
-       Max_Length : Positive) return Super_String
-    is
-       Length : constant Integer := Count * Item'Length;
-       Result : Super_String (Max_Length);
-       Indx   : Positive;
- 
-    begin
-       if Length <= Max_Length then
-          Result.Current_Length := Length;
- 
-          if Length > 0 then
-             Indx := 1;
- 
-             for J in 1 .. Count loop
-                Result.Data (Indx .. Indx + Item'Length - 1) := Item;
-                Indx := Indx + Item'Length;
-             end loop;
-          end if;
- 
-       else
-          Result.Current_Length := Max_Length;
- 
-          case Drop is
-             when Strings.Right =>
-                Indx := 1;
- 
-                while Indx + Item'Length <= Max_Length + 1 loop
-                   Result.Data (Indx .. Indx + Item'Length - 1) := Item;
-                   Indx := Indx + Item'Length;
-                end loop;
- 
-                Result.Data (Indx .. Max_Length) :=
-                  Item (Item'First .. Item'First + Max_Length - Indx);
- 
-             when Strings.Left =>
-                Indx := Max_Length;
- 
-                while Indx - Item'Length >= 1 loop
-                   Result.Data (Indx - (Item'Length - 1) .. Indx) := Item;
-                   Indx := Indx - Item'Length;
-                end loop;
- 
-                Result.Data (1 .. Indx) :=
-                  Item (Item'Last - Indx + 1 .. Item'Last);
- 
-             when Strings.Error =>
-                raise Ada.Strings.Length_Error;
-          end case;
-       end if;
- 
-       return Result;
-    end Super_Replicate;
- 
-    function Super_Replicate
-      (Count : Natural;
-       Item  : Super_String;
-       Drop  : Strings.Truncation := Strings.Error) return Super_String
-    is
-    begin
-       return
-         Super_Replicate
-           (Count,
-            Item.Data (1 .. Item.Current_Length),
-            Drop,
-            Item.Max_Length);
-    end Super_Replicate;
- 
-    -----------------
-    -- Super_Slice --
-    -----------------
- 
-    function Super_Slice
-      (Source : Super_String;
-       Low    : Positive;
-       High   : Natural) return Wide_String
-    is
-    begin
-       --  Note: test of High > Length is in accordance with AI95-00128
- 
-       return R : Wide_String (Low .. High) do
-          if Low > Source.Current_Length + 1
-            or else High > Source.Current_Length
-          then
-             raise Index_Error;
-          end if;
- 
-          R := Source.Data (Low .. High);
-       end return;
-    end Super_Slice;
- 
-    function Super_Slice
-      (Source : Super_String;
-       Low    : Positive;
-       High   : Natural) return Super_String
-    is
-    begin
-       return Result : Super_String (Source.Max_Length) do
-          if Low > Source.Current_Length + 1
-            or else High > Source.Current_Length
-          then
-             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;
- 
-    procedure Super_Slice
-      (Source : Super_String;
-       Target : out Super_String;
-       Low    : Positive;
-       High   : Natural)
-    is
-    begin
-       if Low > Source.Current_Length + 1
-         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;
- 
-    ----------------
-    -- Super_Tail --
-    ----------------
- 
-    function Super_Tail
-      (Source : Super_String;
-       Count  : Natural;
-       Pad    : Wide_Character := Wide_Space;
-       Drop   : Strings.Truncation := Strings.Error) return Super_String
-    is
-       Max_Length : constant Positive := Source.Max_Length;
-       Result     : Super_String (Max_Length);
-       Slen       : constant Natural := Source.Current_Length;
-       Npad       : constant Integer := Count - Slen;
- 
-    begin
-       if Npad <= 0 then
-          Result.Current_Length := Count;
-          Result.Data (1 .. Count) :=
-            Source.Data (Slen - (Count - 1) .. Slen);
- 
-       elsif Count <= Max_Length then
-          Result.Current_Length := Count;
-          Result.Data (1 .. Npad) := (others => Pad);
-          Result.Data (Npad + 1 .. Count) := Source.Data (1 .. Slen);
- 
-       else
-          Result.Current_Length := Max_Length;
- 
-          case Drop is
-             when Strings.Right =>
-                if Npad >= Max_Length then
-                   Result.Data := (others => Pad);
- 
-                else
-                   Result.Data (1 .. Npad) := (others => Pad);
-                   Result.Data (Npad + 1 .. Max_Length) :=
-                     Source.Data (1 .. Max_Length - Npad);
-                end if;
- 
-             when Strings.Left =>
-                Result.Data (1 .. Max_Length - Slen) := (others => Pad);
-                Result.Data (Max_Length - Slen + 1 .. Max_Length) :=
-                  Source.Data (1 .. Slen);
- 
-             when Strings.Error =>
-                raise Ada.Strings.Length_Error;
-          end case;
-       end if;
- 
-       return Result;
-    end Super_Tail;
- 
-    procedure Super_Tail
-      (Source : in out Super_String;
-       Count  : Natural;
-       Pad    : Wide_Character := Wide_Space;
-       Drop   : Truncation := Error)
-    is
-       Max_Length : constant Positive := Source.Max_Length;
-       Slen       : constant Natural  := Source.Current_Length;
-       Npad       : constant Integer  := Count - Slen;
- 
-       Temp : constant Wide_String (1 .. Max_Length) := Source.Data;
- 
-    begin
-       if Npad <= 0 then
-          Source.Current_Length := Count;
-          Source.Data (1 .. Count) :=
-            Temp (Slen - (Count - 1) .. Slen);
- 
-       elsif Count <= Max_Length then
-          Source.Current_Length := Count;
-          Source.Data (1 .. Npad) := (others => Pad);
-          Source.Data (Npad + 1 .. Count) := Temp (1 .. Slen);
- 
-       else
-          Source.Current_Length := Max_Length;
- 
-          case Drop is
-             when Strings.Right =>
-                if Npad >= Max_Length then
-                   Source.Data := (others => Pad);
- 
-                else
-                   Source.Data (1 .. Npad) := (others => Pad);
-                   Source.Data (Npad + 1 .. Max_Length) :=
-                     Temp (1 .. Max_Length - Npad);
-                end if;
- 
-             when Strings.Left =>
-                for J in 1 .. Max_Length - Slen loop
-                   Source.Data (J) := Pad;
-                end loop;
- 
-                Source.Data (Max_Length - Slen + 1 .. Max_Length) :=
-                  Temp (1 .. Slen);
- 
-             when Strings.Error =>
-                raise Ada.Strings.Length_Error;
-          end case;
-       end if;
-    end Super_Tail;
- 
-    ---------------------
-    -- Super_To_String --
-    ---------------------
- 
-    function Super_To_String (Source : Super_String) return Wide_String is
-    begin
-       return R : Wide_String (1 .. Source.Current_Length) do
-          R := Source.Data (1 .. Source.Current_Length);
-       end return;
-    end Super_To_String;
- 
-    ---------------------
-    -- Super_Translate --
-    ---------------------
- 
-    function Super_Translate
-      (Source  : Super_String;
-       Mapping : Wide_Maps.Wide_Character_Mapping) return Super_String
-    is
-       Result : Super_String (Source.Max_Length);
- 
-    begin
-       Result.Current_Length := Source.Current_Length;
- 
-       for J in 1 .. Source.Current_Length loop
-          Result.Data (J) := Value (Mapping, Source.Data (J));
-       end loop;
- 
-       return Result;
-    end Super_Translate;
- 
-    procedure Super_Translate
-      (Source  : in out Super_String;
-       Mapping : Wide_Maps.Wide_Character_Mapping)
-    is
-    begin
-       for J in 1 .. Source.Current_Length loop
-          Source.Data (J) := Value (Mapping, Source.Data (J));
-       end loop;
-    end Super_Translate;
- 
-    function Super_Translate
-      (Source  : Super_String;
-       Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Super_String
-    is
-       Result : Super_String (Source.Max_Length);
- 
-    begin
-       Result.Current_Length := Source.Current_Length;
- 
-       for J in 1 .. Source.Current_Length loop
-          Result.Data (J) := Mapping.all (Source.Data (J));
-       end loop;
- 
-       return Result;
-    end Super_Translate;
- 
-    procedure Super_Translate
-      (Source  : in out Super_String;
-       Mapping : Wide_Maps.Wide_Character_Mapping_Function)
-    is
-    begin
-       for J in 1 .. Source.Current_Length loop
-          Source.Data (J) := Mapping.all (Source.Data (J));
-       end loop;
-    end Super_Translate;
- 
-    ----------------
-    -- Super_Trim --
-    ----------------
- 
-    function Super_Trim
-      (Source : Super_String;
-       Side   : Trim_End) return Super_String
-    is
-       Result : Super_String (Source.Max_Length);
-       Last   : Natural := Source.Current_Length;
-       First  : Positive := 1;
- 
-    begin
-       if Side = Left or else Side = Both then
-          while First <= Last and then Source.Data (First) = ' ' loop
-             First := First + 1;
-          end loop;
-       end if;
- 
-       if Side = Right or else Side = Both then
-          while Last >= First and then Source.Data (Last) = ' ' loop
-             Last := Last - 1;
-          end loop;
-       end if;
- 
-       Result.Current_Length := Last - First + 1;
-       Result.Data (1 .. Result.Current_Length) := Source.Data (First .. Last);
-       return Result;
-    end Super_Trim;
- 
-    procedure Super_Trim
-      (Source : in out Super_String;
-       Side   : Trim_End)
-    is
-       Max_Length : constant Positive := Source.Max_Length;
-       Last       : Natural           := Source.Current_Length;
-       First      : Positive          := 1;
-       Temp       : Wide_String (1 .. Max_Length);
- 
-    begin
-       Temp (1 .. Last) := Source.Data (1 .. Last);
- 
-       if Side = Left or else Side = Both then
-          while First <= Last and then Temp (First) = ' ' loop
-             First := First + 1;
-          end loop;
-       end if;
- 
-       if Side = Right or else Side = Both then
-          while Last >= First and then Temp (Last) = ' ' loop
-             Last := Last - 1;
-          end loop;
-       end if;
- 
-       Source.Data := (others => Wide_NUL);
-       Source.Current_Length := Last - First + 1;
-       Source.Data (1 .. Source.Current_Length) := Temp (First .. Last);
-    end Super_Trim;
- 
-    function Super_Trim
-      (Source : Super_String;
-       Left   : Wide_Maps.Wide_Character_Set;
-       Right  : Wide_Maps.Wide_Character_Set) return Super_String
-    is
-       Result : Super_String (Source.Max_Length);
- 
-    begin
-       for First in 1 .. Source.Current_Length loop
-          if not Is_In (Source.Data (First), Left) then
-             for Last in reverse First .. Source.Current_Length loop
-                if not Is_In (Source.Data (Last), Right) then
-                   Result.Current_Length := Last - First + 1;
-                   Result.Data (1 .. Result.Current_Length) :=
-                     Source.Data (First .. Last);
-                   return Result;
-                end if;
-             end loop;
-          end if;
-       end loop;
- 
-       Result.Current_Length := 0;
-       return Result;
-    end Super_Trim;
- 
-    procedure Super_Trim
-      (Source : in out Super_String;
-       Left   : Wide_Maps.Wide_Character_Set;
-       Right  : Wide_Maps.Wide_Character_Set)
-    is
-    begin
-       for First in 1 .. Source.Current_Length loop
-          if not Is_In (Source.Data (First), Left) then
-             for Last in reverse First .. Source.Current_Length loop
-                if not Is_In (Source.Data (Last), Right) then
-                   if First = 1 then
-                      Source.Current_Length := Last;
-                      return;
-                   else
-                      Source.Current_Length := Last - First + 1;
-                      Source.Data (1 .. Source.Current_Length) :=
-                        Source.Data (First .. Last);
- 
-                      for J in Source.Current_Length + 1 ..
-                                 Source.Max_Length
-                      loop
-                         Source.Data (J) := Wide_NUL;
-                      end loop;
- 
-                      return;
-                   end if;
-                end if;
-             end loop;
- 
-             Source.Current_Length := 0;
-             return;
-          end if;
-       end loop;
- 
-       Source.Current_Length := 0;
-    end Super_Trim;
- 
-    -----------
-    -- Times --
-    -----------
- 
-    function Times
-      (Left       : Natural;
-       Right      : Wide_Character;
-       Max_Length : Positive) return Super_String
-    is
-       Result : Super_String (Max_Length);
- 
-    begin
-       if Left > Max_Length then
-          raise Ada.Strings.Length_Error;
- 
-       else
-          Result.Current_Length := Left;
- 
-          for J in 1 .. Left loop
-             Result.Data (J) := Right;
-          end loop;
-       end if;
- 
-       return Result;
-    end Times;
- 
-    function Times
-      (Left       : Natural;
-       Right      : Wide_String;
-       Max_Length : Positive) return Super_String
-    is
-       Result : Super_String (Max_Length);
-       Pos    : Positive         := 1;
-       Rlen   : constant Natural := Right'Length;
-       Nlen   : constant Natural := Left * Rlen;
- 
-    begin
-       if Nlen > Max_Length then
-          raise Ada.Strings.Index_Error;
- 
-       else
-          Result.Current_Length := Nlen;
- 
-          if Nlen > 0 then
-             for J in 1 .. Left loop
-                Result.Data (Pos .. Pos + Rlen - 1) := Right;
-                Pos := Pos + Rlen;
-             end loop;
-          end if;
-       end if;
- 
-       return Result;
-    end Times;
- 
-    function Times
-      (Left  : Natural;
-       Right : Super_String) return Super_String
-    is
-       Result : Super_String (Right.Max_Length);
-       Pos    : Positive := 1;
-       Rlen   : constant Natural := Right.Current_Length;
-       Nlen   : constant Natural := Left * Rlen;
- 
-    begin
-       if Nlen > Right.Max_Length then
-          raise Ada.Strings.Length_Error;
- 
-       else
-          Result.Current_Length := Nlen;
- 
-          if Nlen > 0 then
-             for J in 1 .. Left loop
-                Result.Data (Pos .. Pos + Rlen - 1) :=
-                  Right.Data (1 .. Rlen);
-                Pos := Pos + Rlen;
-             end loop;
-          end if;
-       end if;
- 
-       return Result;
-    end Times;
- 
-    ---------------------
-    -- To_Super_String --
-    ---------------------
- 
-    function To_Super_String
-      (Source     : Wide_String;
-       Max_Length : Natural;
-       Drop       : Truncation := Error) return Super_String
-    is
-       Result : Super_String (Max_Length);
-       Slen   : constant Natural := Source'Length;
- 
-    begin
-       if Slen <= Max_Length then
-          Result.Current_Length := Slen;
-          Result.Data (1 .. Slen) := Source;
- 
-       else
-          case Drop is
-             when Strings.Right =>
-                Result.Current_Length := Max_Length;
-                Result.Data (1 .. Max_Length) :=
-                  Source (Source'First .. Source'First - 1 + Max_Length);
- 
-             when Strings.Left =>
-                Result.Current_Length := Max_Length;
-                Result.Data (1 .. Max_Length) :=
-                  Source (Source'Last - (Max_Length - 1) .. Source'Last);
- 
-             when Strings.Error =>
-                raise Ada.Strings.Length_Error;
-          end case;
-       end if;
- 
-       return Result;
-    end To_Super_String;
- 
- end Ada.Strings.Wide_Superbounded;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-stwisu.ads gcc-8.1.0/gcc/ada/a-stwisu.ads
*** gcc-7.3.0/gcc/ada/a-stwisu.ads	Fri Mar  9 14:50:48 2012
--- gcc-8.1.0/gcc/ada/a-stwisu.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,499 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --       A D A . S T R I N G S .  W I D E _ S U P E R B O U N D E D         --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2003-2012, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 non generic package contains most of the implementation of the
- --  generic package Ada.Strings.Wide_Bounded.Generic_Bounded_Length.
- 
- --  It defines type Super_String as a discriminated record with the maximum
- --  length as the discriminant. Individual instantiations of the package
- --  Strings.Wide_Bounded.Generic_Bounded_Length use this type with
- --  an appropriate discriminant value set.
- 
- with Ada.Strings.Wide_Maps;
- 
- package Ada.Strings.Wide_Superbounded is
-    pragma Preelaborate;
- 
-    Wide_NUL : constant Wide_Character := Wide_Character'Val (0);
- 
-    --  Ada.Strings.Wide_Bounded.Generic_Bounded_Length.Wide_Bounded_String is
-    --  derived from Super_String, with the constraint of the maximum length.
- 
-    type Super_String (Max_Length : Positive) is record
-       Current_Length : Natural := 0;
-       Data           : Wide_String (1 .. Max_Length);
-       --  A previous version had a default initial value for Data, which is
-       --  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
-    --  they can be renamed in Ada.Strings.Wide_Bounded.Generic_Bounded_Length.
- 
-    function Super_Length (Source : Super_String) return Natural;
- 
-    --------------------------------------------------------
-    -- Conversion, Concatenation, and Selection Functions --
-    --------------------------------------------------------
- 
-    function To_Super_String
-      (Source     : Wide_String;
-       Max_Length : Natural;
-       Drop       : Truncation := Error) return Super_String;
-    --  Note the additional parameter Max_Length, which specifies the maximum
-    --  length setting of the resulting Super_String value.
- 
-    --  The following procedures have declarations (and semantics) that are
-    --  exactly analogous to those declared in Ada.Strings.Wide_Bounded.
- 
-    function Super_To_String (Source : Super_String) return Wide_String;
- 
-    procedure Set_Super_String
-      (Target : out Super_String;
-       Source : Wide_String;
-       Drop   : Truncation := Error);
- 
-    function Super_Append
-      (Left  : Super_String;
-       Right : Super_String;
-       Drop  : Truncation := Error) return Super_String;
- 
-    function Super_Append
-      (Left  : Super_String;
-       Right : Wide_String;
-       Drop  : Truncation := Error) return Super_String;
- 
-    function Super_Append
-      (Left  : Wide_String;
-       Right : Super_String;
-       Drop  : Truncation := Error) return Super_String;
- 
-    function Super_Append
-      (Left  : Super_String;
-       Right : Wide_Character;
-       Drop  : Truncation := Error) return Super_String;
- 
-    function Super_Append
-      (Left  : Wide_Character;
-       Right : Super_String;
-       Drop  : Truncation := Error) return Super_String;
- 
-    procedure Super_Append
-      (Source   : in out Super_String;
-       New_Item : Super_String;
-       Drop     : Truncation := Error);
- 
-    procedure Super_Append
-      (Source   : in out Super_String;
-       New_Item : Wide_String;
-       Drop     : Truncation := Error);
- 
-    procedure Super_Append
-      (Source   : in out Super_String;
-       New_Item : Wide_Character;
-       Drop     : Truncation := Error);
- 
-    function Concat
-      (Left  : Super_String;
-       Right : Super_String) return Super_String;
- 
-    function Concat
-      (Left  : Super_String;
-       Right : Wide_String) return Super_String;
- 
-    function Concat
-      (Left  : Wide_String;
-       Right : Super_String) return Super_String;
- 
-    function Concat
-      (Left  : Super_String;
-       Right : Wide_Character) return Super_String;
- 
-    function Concat
-      (Left  : Wide_Character;
-       Right : Super_String) return Super_String;
- 
-    function Super_Element
-      (Source : Super_String;
-       Index  : Positive) return Wide_Character;
- 
-    procedure Super_Replace_Element
-      (Source : in out Super_String;
-       Index  : Positive;
-       By     : Wide_Character);
- 
-    function Super_Slice
-      (Source : Super_String;
-       Low    : Positive;
-       High   : Natural) return Wide_String;
- 
-    function Super_Slice
-      (Source : Super_String;
-       Low    : Positive;
-       High   : Natural) return Super_String;
- 
-    procedure Super_Slice
-      (Source : Super_String;
-       Target : out Super_String;
-       Low    : Positive;
-       High   : Natural);
- 
-    function "="
-      (Left  : Super_String;
-       Right : Super_String) return Boolean;
- 
-    function Equal
-      (Left  : Super_String;
-       Right : Super_String) return Boolean renames "=";
- 
-    function Equal
-      (Left  : Super_String;
-       Right : Wide_String) return Boolean;
- 
-    function Equal
-      (Left  : Wide_String;
-       Right : Super_String) return Boolean;
- 
-    function Less
-      (Left  : Super_String;
-       Right : Super_String) return Boolean;
- 
-    function Less
-      (Left  : Super_String;
-       Right : Wide_String) return Boolean;
- 
-    function Less
-      (Left  : Wide_String;
-       Right : Super_String) return Boolean;
- 
-    function Less_Or_Equal
-      (Left  : Super_String;
-       Right : Super_String) return Boolean;
- 
-    function Less_Or_Equal
-      (Left  : Super_String;
-       Right : Wide_String) return Boolean;
- 
-    function Less_Or_Equal
-      (Left  : Wide_String;
-       Right : Super_String) return Boolean;
- 
-    function Greater
-      (Left  : Super_String;
-       Right : Super_String) return Boolean;
- 
-    function Greater
-      (Left  : Super_String;
-       Right : Wide_String) return Boolean;
- 
-    function Greater
-      (Left  : Wide_String;
-       Right : Super_String) return Boolean;
- 
-    function Greater_Or_Equal
-      (Left  : Super_String;
-       Right : Super_String) return Boolean;
- 
-    function Greater_Or_Equal
-      (Left  : Super_String;
-       Right : Wide_String) return Boolean;
- 
-    function Greater_Or_Equal
-      (Left  : Wide_String;
-       Right : Super_String) return Boolean;
- 
-    ----------------------
-    -- Search Functions --
-    ----------------------
- 
-    function Super_Index
-      (Source  : Super_String;
-       Pattern : Wide_String;
-       Going   : Direction := Forward;
-       Mapping : Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity)
-       return Natural;
- 
-    function Super_Index
-      (Source  : Super_String;
-       Pattern : Wide_String;
-       Going   : Direction := Forward;
-       Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural;
- 
-    function Super_Index
-      (Source : Super_String;
-       Set    : Wide_Maps.Wide_Character_Set;
-       Test   : Membership := Inside;
-       Going  : Direction  := Forward) return Natural;
- 
-    function Super_Index
-      (Source  : Super_String;
-       Pattern : Wide_String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity)
-       return Natural;
- 
-    function Super_Index
-      (Source  : Super_String;
-       Pattern : Wide_String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural;
- 
-    function Super_Index
-      (Source : Super_String;
-       Set    : Wide_Maps.Wide_Character_Set;
-       From   : Positive;
-       Test   : Membership := Inside;
-       Going  : Direction := Forward) return Natural;
- 
-    function Super_Index_Non_Blank
-      (Source : Super_String;
-       Going  : Direction := Forward) return Natural;
- 
-    function Super_Index_Non_Blank
-      (Source : Super_String;
-       From   : Positive;
-       Going  : Direction := Forward) return Natural;
- 
-    function Super_Count
-      (Source  : Super_String;
-       Pattern : Wide_String;
-       Mapping : Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity)
-       return Natural;
- 
-    function Super_Count
-      (Source  : Super_String;
-       Pattern : Wide_String;
-       Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural;
- 
-    function Super_Count
-      (Source : Super_String;
-       Set    : Wide_Maps.Wide_Character_Set) return Natural;
- 
-    procedure Super_Find_Token
-      (Source : Super_String;
-       Set    : Wide_Maps.Wide_Character_Set;
-       From   : Positive;
-       Test   : Membership;
-       First  : out Positive;
-       Last   : out Natural);
- 
-    procedure Super_Find_Token
-      (Source : Super_String;
-       Set    : Wide_Maps.Wide_Character_Set;
-       Test   : Membership;
-       First  : out Positive;
-       Last   : out Natural);
- 
-    ------------------------------------
-    -- String Translation Subprograms --
-    ------------------------------------
- 
-    function Super_Translate
-      (Source  : Super_String;
-       Mapping : Wide_Maps.Wide_Character_Mapping) return Super_String;
- 
-    procedure Super_Translate
-      (Source   : in out Super_String;
-       Mapping  : Wide_Maps.Wide_Character_Mapping);
- 
-    function Super_Translate
-      (Source  : Super_String;
-       Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Super_String;
- 
-    procedure Super_Translate
-      (Source  : in out Super_String;
-       Mapping : Wide_Maps.Wide_Character_Mapping_Function);
- 
-    ---------------------------------------
-    -- String Transformation Subprograms --
-    ---------------------------------------
- 
-    function Super_Replace_Slice
-      (Source : Super_String;
-       Low    : Positive;
-       High   : Natural;
-       By     : Wide_String;
-       Drop   : Truncation := Error) return Super_String;
- 
-    procedure Super_Replace_Slice
-      (Source  : in out Super_String;
-       Low     : Positive;
-       High    : Natural;
-       By      : Wide_String;
-       Drop    : Truncation := Error);
- 
-    function Super_Insert
-      (Source   : Super_String;
-       Before   : Positive;
-       New_Item : Wide_String;
-       Drop     : Truncation := Error) return Super_String;
- 
-    procedure Super_Insert
-      (Source   : in out Super_String;
-       Before   : Positive;
-       New_Item : Wide_String;
-       Drop     : Truncation := Error);
- 
-    function Super_Overwrite
-      (Source   : Super_String;
-       Position : Positive;
-       New_Item : Wide_String;
-       Drop     : Truncation := Error) return Super_String;
- 
-    procedure Super_Overwrite
-      (Source    : in out Super_String;
-       Position  : Positive;
-       New_Item  : Wide_String;
-       Drop      : Truncation := Error);
- 
-    function Super_Delete
-      (Source  : Super_String;
-       From    : Positive;
-       Through : Natural) return Super_String;
- 
-    procedure Super_Delete
-      (Source  : in out Super_String;
-       From    : Positive;
-       Through : Natural);
- 
-    ---------------------------------
-    -- String Selector Subprograms --
-    ---------------------------------
- 
-    function Super_Trim
-      (Source : Super_String;
-       Side   : Trim_End) return Super_String;
- 
-    procedure Super_Trim
-      (Source : in out Super_String;
-       Side   : Trim_End);
- 
-    function Super_Trim
-      (Source : Super_String;
-       Left   : Wide_Maps.Wide_Character_Set;
-       Right  : Wide_Maps.Wide_Character_Set) return Super_String;
- 
-    procedure Super_Trim
-      (Source : in out Super_String;
-       Left   : Wide_Maps.Wide_Character_Set;
-       Right  : Wide_Maps.Wide_Character_Set);
- 
-    function Super_Head
-      (Source : Super_String;
-       Count  : Natural;
-       Pad    : Wide_Character := Wide_Space;
-       Drop   : Truncation := Error) return Super_String;
- 
-    procedure Super_Head
-      (Source : in out Super_String;
-       Count  : Natural;
-       Pad    : Wide_Character := Wide_Space;
-       Drop   : Truncation := Error);
- 
-    function Super_Tail
-      (Source : Super_String;
-       Count  : Natural;
-       Pad    : Wide_Character := Wide_Space;
-       Drop   : Truncation := Error) return Super_String;
- 
-    procedure Super_Tail
-      (Source : in out Super_String;
-       Count  : Natural;
-       Pad    : Wide_Character := Wide_Space;
-       Drop   : Truncation := Error);
- 
-    ------------------------------------
-    -- String Constructor Subprograms --
-    ------------------------------------
- 
-    --  Note: in some of the following routines, there is an extra parameter
-    --  Max_Length which specifies the value of the maximum length for the
-    --  resulting Super_String value.
- 
-    function Times
-      (Left       : Natural;
-       Right      : Wide_Character;
-       Max_Length : Positive) return Super_String;
-    --  Note the additional parameter Max_Length
- 
-    function Times
-      (Left       : Natural;
-       Right      : Wide_String;
-       Max_Length : Positive) return Super_String;
-    --  Note the additional parameter Max_Length
- 
-    function Times
-      (Left  : Natural;
-       Right : Super_String) return Super_String;
- 
-    function Super_Replicate
-      (Count      : Natural;
-       Item       : Wide_Character;
-       Drop       : Truncation := Error;
-       Max_Length : Positive) return Super_String;
-    --  Note the additional parameter Max_Length
- 
-    function Super_Replicate
-      (Count      : Natural;
-       Item       : Wide_String;
-       Drop       : Truncation := Error;
-       Max_Length : Positive) return Super_String;
-    --  Note the additional parameter Max_Length
- 
-    function Super_Replicate
-      (Count : Natural;
-       Item  : Super_String;
-       Drop  : Truncation := Error) return Super_String;
- 
- private
-       --  Pragma Inline declarations
- 
-       pragma Inline ("=");
-       pragma Inline (Less);
-       pragma Inline (Less_Or_Equal);
-       pragma Inline (Greater);
-       pragma Inline (Greater_Or_Equal);
-       pragma Inline (Concat);
-       pragma Inline (Super_Count);
-       pragma Inline (Super_Element);
-       pragma Inline (Super_Find_Token);
-       pragma Inline (Super_Index);
-       pragma Inline (Super_Index_Non_Blank);
-       pragma Inline (Super_Length);
-       pragma Inline (Super_Replace_Element);
-       pragma Inline (Super_Slice);
-       pragma Inline (Super_To_String);
- 
- end Ada.Strings.Wide_Superbounded;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-stwiun-shared.adb gcc-8.1.0/gcc/ada/a-stwiun-shared.adb
*** gcc-7.3.0/gcc/ada/a-stwiun-shared.adb	Thu Nov 20 14:37:41 2014
--- gcc-8.1.0/gcc/ada/a-stwiun-shared.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,2128 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --           A D A . S T R I N G S . W I D E _ U N B O U N D E D            --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Strings.Wide_Search;
- with Ada.Unchecked_Deallocation;
- 
- package body Ada.Strings.Wide_Unbounded is
- 
-    use Ada.Strings.Wide_Maps;
- 
-    Growth_Factor : constant := 32;
-    --  The growth factor controls how much extra space is allocated when
-    --  we have to increase the size of an allocated unbounded string. By
-    --  allocating extra space, we avoid the need to reallocate on every
-    --  append, particularly important when a string is built up by repeated
-    --  append operations of small pieces. This is expressed as a factor so
-    --  32 means add 1/32 of the length of the string as growth space.
- 
-    Min_Mul_Alloc : constant := Standard'Maximum_Alignment;
-    --  Allocation will be done by a multiple of Min_Mul_Alloc. This causes
-    --  no memory loss as most (all?) malloc implementations are obliged to
-    --  align the returned memory on the maximum alignment as malloc does not
-    --  know the target alignment.
- 
-    function Aligned_Max_Length (Max_Length : Natural) return Natural;
-    --  Returns recommended length of the shared string which is greater or
-    --  equal to specified length. Calculation take in sense alignment of
-    --  the allocated memory segments to use memory effectively by
-    --  Append/Insert/etc operations.
- 
-    ---------
-    -- "&" --
-    ---------
- 
-    function "&"
-      (Left  : Unbounded_Wide_String;
-       Right : Unbounded_Wide_String) return Unbounded_Wide_String
-    is
-       LR : constant Shared_Wide_String_Access := Left.Reference;
-       RR : constant Shared_Wide_String_Access := Right.Reference;
-       DL : constant Natural := LR.Last + RR.Last;
-       DR : Shared_Wide_String_Access;
- 
-    begin
-       --  Result is an empty string, reuse shared empty string
- 
-       if DL = 0 then
-          Reference (Empty_Shared_Wide_String'Access);
-          DR := Empty_Shared_Wide_String'Access;
- 
-       --  Left string is empty, return Rigth string
- 
-       elsif LR.Last = 0 then
-          Reference (RR);
-          DR := RR;
- 
-       --  Right string is empty, return Left string
- 
-       elsif RR.Last = 0 then
-          Reference (LR);
-          DR := LR;
- 
-       --  Overwise, allocate new shared string and fill data
- 
-       else
-          DR := Allocate (DL);
-          DR.Data (1 .. LR.Last) := LR.Data (1 .. LR.Last);
-          DR.Data (LR.Last + 1 .. DL) := RR.Data (1 .. RR.Last);
-          DR.Last := DL;
-       end if;
- 
-       return (AF.Controlled with Reference => DR);
-    end "&";
- 
-    function "&"
-      (Left  : Unbounded_Wide_String;
-       Right : Wide_String) return Unbounded_Wide_String
-    is
-       LR : constant Shared_Wide_String_Access := Left.Reference;
-       DL : constant Natural := LR.Last + Right'Length;
-       DR : Shared_Wide_String_Access;
- 
-    begin
-       --  Result is an empty string, reuse shared empty string
- 
-       if DL = 0 then
-          Reference (Empty_Shared_Wide_String'Access);
-          DR := Empty_Shared_Wide_String'Access;
- 
-       --  Right is an empty string, return Left string
- 
-       elsif Right'Length = 0 then
-          Reference (LR);
-          DR := LR;
- 
-       --  Otherwise, allocate new shared string and fill it
- 
-       else
-          DR := Allocate (DL);
-          DR.Data (1 .. LR.Last) := LR.Data (1 .. LR.Last);
-          DR.Data (LR.Last + 1 .. DL) := Right;
-          DR.Last := DL;
-       end if;
- 
-       return (AF.Controlled with Reference => DR);
-    end "&";
- 
-    function "&"
-      (Left  : Wide_String;
-       Right : Unbounded_Wide_String) return Unbounded_Wide_String
-    is
-       RR : constant Shared_Wide_String_Access := Right.Reference;
-       DL : constant Natural := Left'Length + RR.Last;
-       DR : Shared_Wide_String_Access;
- 
-    begin
-       --  Result is an empty string, reuse shared one
- 
-       if DL = 0 then
-          Reference (Empty_Shared_Wide_String'Access);
-          DR := Empty_Shared_Wide_String'Access;
- 
-       --  Left is empty string, return Right string
- 
-       elsif Left'Length = 0 then
-          Reference (RR);
-          DR := RR;
- 
-       --  Otherwise, allocate new shared string and fill it
- 
-       else
-          DR := Allocate (DL);
-          DR.Data (1 .. Left'Length) := Left;
-          DR.Data (Left'Length + 1 .. DL) := RR.Data (1 .. RR.Last);
-          DR.Last := DL;
-       end if;
- 
-       return (AF.Controlled with Reference => DR);
-    end "&";
- 
-    function "&"
-      (Left  : Unbounded_Wide_String;
-       Right : Wide_Character) return Unbounded_Wide_String
-    is
-       LR : constant Shared_Wide_String_Access := Left.Reference;
-       DL : constant Natural := LR.Last + 1;
-       DR : Shared_Wide_String_Access;
- 
-    begin
-       DR := Allocate (DL);
-       DR.Data (1 .. LR.Last) := LR.Data (1 .. LR.Last);
-       DR.Data (DL) := Right;
-       DR.Last := DL;
- 
-       return (AF.Controlled with Reference => DR);
-    end "&";
- 
-    function "&"
-      (Left  : Wide_Character;
-       Right : Unbounded_Wide_String) return Unbounded_Wide_String
-    is
-       RR : constant Shared_Wide_String_Access := Right.Reference;
-       DL : constant Natural := 1 + RR.Last;
-       DR : Shared_Wide_String_Access;
- 
-    begin
-       DR := Allocate (DL);
-       DR.Data (1) := Left;
-       DR.Data (2 .. DL) := RR.Data (1 .. RR.Last);
-       DR.Last := DL;
- 
-       return (AF.Controlled with Reference => DR);
-    end "&";
- 
-    ---------
-    -- "*" --
-    ---------
- 
-    function "*"
-      (Left  : Natural;
-       Right : Wide_Character) return Unbounded_Wide_String
-    is
-       DR : Shared_Wide_String_Access;
- 
-    begin
-       --  Result is an empty string, reuse shared empty string
- 
-       if Left = 0 then
-          Reference (Empty_Shared_Wide_String'Access);
-          DR := Empty_Shared_Wide_String'Access;
- 
-       --  Otherwise, allocate new shared string and fill it
- 
-       else
-          DR := Allocate (Left);
- 
-          for J in 1 .. Left loop
-             DR.Data (J) := Right;
-          end loop;
- 
-          DR.Last := Left;
-       end if;
- 
-       return (AF.Controlled with Reference => DR);
-    end "*";
- 
-    function "*"
-      (Left  : Natural;
-       Right : Wide_String) return Unbounded_Wide_String
-    is
-       DL : constant Natural := Left * Right'Length;
-       DR : Shared_Wide_String_Access;
-       K  : Positive;
- 
-    begin
-       --  Result is an empty string, reuse shared empty string
- 
-       if DL = 0 then
-          Reference (Empty_Shared_Wide_String'Access);
-          DR := Empty_Shared_Wide_String'Access;
- 
-       --  Otherwise, allocate new shared string and fill it
- 
-       else
-          DR := Allocate (DL);
-          K := 1;
- 
-          for J in 1 .. Left loop
-             DR.Data (K .. K + Right'Length - 1) := Right;
-             K := K + Right'Length;
-          end loop;
- 
-          DR.Last := DL;
-       end if;
- 
-       return (AF.Controlled with Reference => DR);
-    end "*";
- 
-    function "*"
-      (Left  : Natural;
-       Right : Unbounded_Wide_String) return Unbounded_Wide_String
-    is
-       RR : constant Shared_Wide_String_Access := Right.Reference;
-       DL : constant Natural := Left * RR.Last;
-       DR : Shared_Wide_String_Access;
-       K  : Positive;
- 
-    begin
-       --  Result is an empty string, reuse shared empty string
- 
-       if DL = 0 then
-          Reference (Empty_Shared_Wide_String'Access);
-          DR := Empty_Shared_Wide_String'Access;
- 
-       --  Coefficient is one, just return string itself
- 
-       elsif Left = 1 then
-          Reference (RR);
-          DR := RR;
- 
-       --  Otherwise, allocate new shared string and fill it
- 
-       else
-          DR := Allocate (DL);
-          K := 1;
- 
-          for J in 1 .. Left loop
-             DR.Data (K .. K + RR.Last - 1) := RR.Data (1 .. RR.Last);
-             K := K + RR.Last;
-          end loop;
- 
-          DR.Last := DL;
-       end if;
- 
-       return (AF.Controlled with Reference => DR);
-    end "*";
- 
-    ---------
-    -- "<" --
-    ---------
- 
-    function "<"
-      (Left  : Unbounded_Wide_String;
-       Right : Unbounded_Wide_String) return Boolean
-    is
-       LR : constant Shared_Wide_String_Access := Left.Reference;
-       RR : constant Shared_Wide_String_Access := Right.Reference;
-    begin
-       return LR.Data (1 .. LR.Last) < RR.Data (1 .. RR.Last);
-    end "<";
- 
-    function "<"
-      (Left  : Unbounded_Wide_String;
-       Right : Wide_String) return Boolean
-    is
-       LR : constant Shared_Wide_String_Access := Left.Reference;
-    begin
-       return LR.Data (1 .. LR.Last) < Right;
-    end "<";
- 
-    function "<"
-      (Left  : Wide_String;
-       Right : Unbounded_Wide_String) return Boolean
-    is
-       RR : constant Shared_Wide_String_Access := Right.Reference;
-    begin
-       return Left < RR.Data (1 .. RR.Last);
-    end "<";
- 
-    ----------
-    -- "<=" --
-    ----------
- 
-    function "<="
-      (Left  : Unbounded_Wide_String;
-       Right : Unbounded_Wide_String) return Boolean
-    is
-       LR : constant Shared_Wide_String_Access := Left.Reference;
-       RR : constant Shared_Wide_String_Access := Right.Reference;
- 
-    begin
-       --  LR = RR means two strings shares shared string, thus they are equal
- 
-       return LR = RR or else LR.Data (1 .. LR.Last) <= RR.Data (1 .. RR.Last);
-    end "<=";
- 
-    function "<="
-      (Left  : Unbounded_Wide_String;
-       Right : Wide_String) return Boolean
-    is
-       LR : constant Shared_Wide_String_Access := Left.Reference;
-    begin
-       return LR.Data (1 .. LR.Last) <= Right;
-    end "<=";
- 
-    function "<="
-      (Left  : Wide_String;
-       Right : Unbounded_Wide_String) return Boolean
-    is
-       RR : constant Shared_Wide_String_Access := Right.Reference;
-    begin
-       return Left <= RR.Data (1 .. RR.Last);
-    end "<=";
- 
-    ---------
-    -- "=" --
-    ---------
- 
-    function "="
-      (Left  : Unbounded_Wide_String;
-       Right : Unbounded_Wide_String) return Boolean
-    is
-       LR : constant Shared_Wide_String_Access := Left.Reference;
-       RR : constant Shared_Wide_String_Access := Right.Reference;
- 
-    begin
-       return LR = RR or else LR.Data (1 .. LR.Last) = RR.Data (1 .. RR.Last);
-       --  LR = RR means two strings shares shared string, thus they are equal
-    end "=";
- 
-    function "="
-      (Left  : Unbounded_Wide_String;
-       Right : Wide_String) return Boolean
-    is
-       LR : constant Shared_Wide_String_Access := Left.Reference;
-    begin
-       return LR.Data (1 .. LR.Last) = Right;
-    end "=";
- 
-    function "="
-      (Left  : Wide_String;
-       Right : Unbounded_Wide_String) return Boolean
-    is
-       RR : constant Shared_Wide_String_Access := Right.Reference;
-    begin
-       return Left = RR.Data (1 .. RR.Last);
-    end "=";
- 
-    ---------
-    -- ">" --
-    ---------
- 
-    function ">"
-      (Left  : Unbounded_Wide_String;
-       Right : Unbounded_Wide_String) return Boolean
-    is
-       LR : constant Shared_Wide_String_Access := Left.Reference;
-       RR : constant Shared_Wide_String_Access := Right.Reference;
-    begin
-       return LR.Data (1 .. LR.Last) > RR.Data (1 .. RR.Last);
-    end ">";
- 
-    function ">"
-      (Left  : Unbounded_Wide_String;
-       Right : Wide_String) return Boolean
-    is
-       LR : constant Shared_Wide_String_Access := Left.Reference;
-    begin
-       return LR.Data (1 .. LR.Last) > Right;
-    end ">";
- 
-    function ">"
-      (Left  : Wide_String;
-       Right : Unbounded_Wide_String) return Boolean
-    is
-       RR : constant Shared_Wide_String_Access := Right.Reference;
-    begin
-       return Left > RR.Data (1 .. RR.Last);
-    end ">";
- 
-    ----------
-    -- ">=" --
-    ----------
- 
-    function ">="
-      (Left  : Unbounded_Wide_String;
-       Right : Unbounded_Wide_String) return Boolean
-    is
-       LR : constant Shared_Wide_String_Access := Left.Reference;
-       RR : constant Shared_Wide_String_Access := Right.Reference;
- 
-    begin
-       --  LR = RR means two strings shares shared string, thus they are equal
- 
-       return LR = RR or else LR.Data (1 .. LR.Last) >= RR.Data (1 .. RR.Last);
-    end ">=";
- 
-    function ">="
-      (Left  : Unbounded_Wide_String;
-       Right : Wide_String) return Boolean
-    is
-       LR : constant Shared_Wide_String_Access := Left.Reference;
-    begin
-       return LR.Data (1 .. LR.Last) >= Right;
-    end ">=";
- 
-    function ">="
-      (Left  : Wide_String;
-       Right : Unbounded_Wide_String) return Boolean
-    is
-       RR : constant Shared_Wide_String_Access := Right.Reference;
-    begin
-       return Left >= RR.Data (1 .. RR.Last);
-    end ">=";
- 
-    ------------
-    -- Adjust --
-    ------------
- 
-    procedure Adjust (Object : in out Unbounded_Wide_String) is
-    begin
-       Reference (Object.Reference);
-    end Adjust;
- 
-    ------------------------
-    -- Aligned_Max_Length --
-    ------------------------
- 
-    function Aligned_Max_Length (Max_Length : Natural) return Natural is
-       Static_Size  : constant Natural :=
-         Empty_Shared_Wide_String'Size / Standard'Storage_Unit;
-       --  Total size of all static components
- 
-       Element_Size : constant Natural :=
-         Wide_Character'Size / Standard'Storage_Unit;
- 
-    begin
-       return
-         (((Static_Size + Max_Length * Element_Size - 1) / Min_Mul_Alloc + 2)
-           * Min_Mul_Alloc - Static_Size) / Element_Size;
-    end Aligned_Max_Length;
- 
-    --------------
-    -- Allocate --
-    --------------
- 
-    function Allocate (Max_Length : Natural) return Shared_Wide_String_Access is
-    begin
-       --  Empty string requested, return shared empty string
- 
-       if Max_Length = 0 then
-          Reference (Empty_Shared_Wide_String'Access);
-          return Empty_Shared_Wide_String'Access;
- 
-       --  Otherwise, allocate requested space (and probably some more room)
- 
-       else
-          return new Shared_Wide_String (Aligned_Max_Length (Max_Length));
-       end if;
-    end Allocate;
- 
-    ------------
-    -- Append --
-    ------------
- 
-    procedure Append
-      (Source   : in out Unbounded_Wide_String;
-       New_Item : Unbounded_Wide_String)
-    is
-       SR  : constant Shared_Wide_String_Access := Source.Reference;
-       NR  : constant Shared_Wide_String_Access := New_Item.Reference;
-       DL  : constant Natural                   := SR.Last + NR.Last;
-       DR  : Shared_Wide_String_Access;
- 
-    begin
-       --  Source is an empty string, reuse New_Item data
- 
-       if SR.Last = 0 then
-          Reference (NR);
-          Source.Reference := NR;
-          Unreference (SR);
- 
-       --  New_Item is empty string, nothing to do
- 
-       elsif NR.Last = 0 then
-          null;
- 
-       --  Try to reuse existent shared string
- 
-       elsif Can_Be_Reused (SR, DL) then
-          SR.Data (SR.Last + 1 .. DL) := NR.Data (1 .. NR.Last);
-          SR.Last := DL;
- 
-       --  Otherwise, allocate new one and fill it
- 
-       else
-          DR := Allocate (DL + DL / Growth_Factor);
-          DR.Data (1 .. SR.Last) := SR.Data (1 .. SR.Last);
-          DR.Data (SR.Last + 1 .. DL) := NR.Data (1 .. NR.Last);
-          DR.Last := DL;
-          Source.Reference := DR;
-          Unreference (SR);
-       end if;
-    end Append;
- 
-    procedure Append
-      (Source   : in out Unbounded_Wide_String;
-       New_Item : Wide_String)
-    is
-       SR : constant Shared_Wide_String_Access := Source.Reference;
-       DL : constant Natural                   := SR.Last + New_Item'Length;
-       DR : Shared_Wide_String_Access;
- 
-    begin
-       --  New_Item is an empty string, nothing to do
- 
-       if New_Item'Length = 0 then
-          null;
- 
-       --  Try to reuse existing shared string
- 
-       elsif Can_Be_Reused (SR, DL) then
-          SR.Data (SR.Last + 1 .. DL) := New_Item;
-          SR.Last := DL;
- 
-       --  Otherwise, allocate new one and fill it
- 
-       else
-          DR := Allocate (DL + DL / Growth_Factor);
-          DR.Data (1 .. SR.Last) := SR.Data (1 .. SR.Last);
-          DR.Data (SR.Last + 1 .. DL) := New_Item;
-          DR.Last := DL;
-          Source.Reference := DR;
-          Unreference (SR);
-       end if;
-    end Append;
- 
-    procedure Append
-      (Source   : in out Unbounded_Wide_String;
-       New_Item : Wide_Character)
-    is
-       SR : constant Shared_Wide_String_Access := Source.Reference;
-       DL : constant Natural := SR.Last + 1;
-       DR : Shared_Wide_String_Access;
- 
-    begin
-       --  Try to reuse existing shared string
- 
-       if Can_Be_Reused (SR, SR.Last + 1) then
-          SR.Data (SR.Last + 1) := New_Item;
-          SR.Last := SR.Last + 1;
- 
-       --  Otherwise, allocate new one and fill it
- 
-       else
-          DR := Allocate (DL + DL / Growth_Factor);
-          DR.Data (1 .. SR.Last) := SR.Data (1 .. SR.Last);
-          DR.Data (DL) := New_Item;
-          DR.Last := DL;
-          Source.Reference := DR;
-          Unreference (SR);
-       end if;
-    end Append;
- 
-    -------------------
-    -- Can_Be_Reused --
-    -------------------
- 
-    function Can_Be_Reused
-      (Item   : Shared_Wide_String_Access;
-       Length : Natural) return Boolean is
-    begin
-       return
-         System.Atomic_Counters.Is_One (Item.Counter)
-           and then Item.Max_Length >= Length
-           and then Item.Max_Length <=
-                      Aligned_Max_Length (Length + Length / Growth_Factor);
-    end Can_Be_Reused;
- 
-    -----------
-    -- Count --
-    -----------
- 
-    function Count
-      (Source  : Unbounded_Wide_String;
-       Pattern : Wide_String;
-       Mapping : Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity)
-       return Natural
-    is
-       SR : constant Shared_Wide_String_Access := Source.Reference;
-    begin
-       return Wide_Search.Count (SR.Data (1 .. SR.Last), Pattern, Mapping);
-    end Count;
- 
-    function Count
-      (Source  : Unbounded_Wide_String;
-       Pattern : Wide_String;
-       Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural
-    is
-       SR : constant Shared_Wide_String_Access := Source.Reference;
-    begin
-       return Wide_Search.Count (SR.Data (1 .. SR.Last), Pattern, Mapping);
-    end Count;
- 
-    function Count
-      (Source : Unbounded_Wide_String;
-       Set    : Wide_Maps.Wide_Character_Set) return Natural
-    is
-       SR : constant Shared_Wide_String_Access := Source.Reference;
-    begin
-       return Wide_Search.Count (SR.Data (1 .. SR.Last), Set);
-    end Count;
- 
-    ------------
-    -- Delete --
-    ------------
- 
-    function Delete
-      (Source  : Unbounded_Wide_String;
-       From    : Positive;
-       Through : Natural) return Unbounded_Wide_String
-    is
-       SR : constant Shared_Wide_String_Access := Source.Reference;
-       DL : Natural;
-       DR : Shared_Wide_String_Access;
- 
-    begin
-       --  Empty slice is deleted, use the same shared string
- 
-       if From > Through then
-          Reference (SR);
-          DR := SR;
- 
-       --  Index is out of range
- 
-       elsif Through > SR.Last then
-          raise Index_Error;
- 
-       --  Compute size of the result
- 
-       else
-          DL := SR.Last - (Through - From + 1);
- 
-          --  Result is an empty string, reuse shared empty string
- 
-          if DL = 0 then
-             Reference (Empty_Shared_Wide_String'Access);
-             DR := Empty_Shared_Wide_String'Access;
- 
-          --  Otherwise, allocate new shared string and fill it
- 
-          else
-             DR := Allocate (DL);
-             DR.Data (1 .. From - 1) := SR.Data (1 .. From - 1);
-             DR.Data (From .. DL) := SR.Data (Through + 1 .. SR.Last);
-             DR.Last := DL;
-          end if;
-       end if;
- 
-       return (AF.Controlled with Reference => DR);
-    end Delete;
- 
-    procedure Delete
-      (Source  : in out Unbounded_Wide_String;
-       From    : Positive;
-       Through : Natural)
-    is
-       SR : constant Shared_Wide_String_Access := Source.Reference;
-       DL : Natural;
-       DR : Shared_Wide_String_Access;
- 
-    begin
-       --  Nothing changed, return
- 
-       if From > Through then
-          null;
- 
-       --  Through is outside of the range
- 
-       elsif Through > SR.Last then
-          raise Index_Error;
- 
-       else
-          DL := SR.Last - (Through - From + 1);
- 
-          --  Result is empty, reuse shared empty string
- 
-          if DL = 0 then
-             Reference (Empty_Shared_Wide_String'Access);
-             Source.Reference := Empty_Shared_Wide_String'Access;
-             Unreference (SR);
- 
-          --  Try to reuse existent shared string
- 
-          elsif Can_Be_Reused (SR, DL) then
-             SR.Data (From .. DL) := SR.Data (Through + 1 .. SR.Last);
-             SR.Last := DL;
- 
-          --  Otherwise, allocate new shared string
- 
-          else
-             DR := Allocate (DL);
-             DR.Data (1 .. From - 1) := SR.Data (1 .. From - 1);
-             DR.Data (From .. DL) := SR.Data (Through + 1 .. SR.Last);
-             DR.Last := DL;
-             Source.Reference := DR;
-             Unreference (SR);
-          end if;
-       end if;
-    end Delete;
- 
-    -------------
-    -- Element --
-    -------------
- 
-    function Element
-      (Source : Unbounded_Wide_String;
-       Index  : Positive) return Wide_Character
-    is
-       SR : constant Shared_Wide_String_Access := Source.Reference;
-    begin
-       if Index <= SR.Last then
-          return SR.Data (Index);
-       else
-          raise Index_Error;
-       end if;
-    end Element;
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    procedure Finalize (Object : in out Unbounded_Wide_String) is
-       SR : constant Shared_Wide_String_Access := Object.Reference;
- 
-    begin
-       if SR /= null then
- 
-          --  The same controlled object can be finalized several times for
-          --  some reason. As per 7.6.1(24) this should have no ill effect,
-          --  so we need to add a guard for the case of finalizing the same
-          --  object twice.
- 
-          Object.Reference := null;
-          Unreference (SR);
-       end if;
-    end Finalize;
- 
-    ----------------
-    -- Find_Token --
-    ----------------
- 
-    procedure Find_Token
-      (Source : Unbounded_Wide_String;
-       Set    : Wide_Maps.Wide_Character_Set;
-       From   : Positive;
-       Test   : Strings.Membership;
-       First  : out Positive;
-       Last   : out Natural)
-    is
-       SR : constant Shared_Wide_String_Access := Source.Reference;
-    begin
-       Wide_Search.Find_Token
-         (SR.Data (From .. SR.Last), Set, Test, First, Last);
-    end Find_Token;
- 
-    procedure Find_Token
-      (Source : Unbounded_Wide_String;
-       Set    : Wide_Maps.Wide_Character_Set;
-       Test   : Strings.Membership;
-       First  : out Positive;
-       Last   : out Natural)
-    is
-       SR : constant Shared_Wide_String_Access := Source.Reference;
-    begin
-       Wide_Search.Find_Token
-         (SR.Data (1 .. SR.Last), Set, Test, First, Last);
-    end Find_Token;
- 
-    ----------
-    -- Free --
-    ----------
- 
-    procedure Free (X : in out Wide_String_Access) is
-       procedure Deallocate is
-          new Ada.Unchecked_Deallocation (Wide_String, Wide_String_Access);
-    begin
-       Deallocate (X);
-    end Free;
- 
-    ----------
-    -- Head --
-    ----------
- 
-    function Head
-      (Source : Unbounded_Wide_String;
-       Count  : Natural;
-       Pad    : Wide_Character := Wide_Space) return Unbounded_Wide_String
-    is
-       SR : constant Shared_Wide_String_Access := Source.Reference;
-       DR : Shared_Wide_String_Access;
- 
-    begin
-       --  Result is empty, reuse shared empty string
- 
-       if Count = 0 then
-          Reference (Empty_Shared_Wide_String'Access);
-          DR := Empty_Shared_Wide_String'Access;
- 
-       --  Length of the string is the same as requested, reuse source shared
-       --  string.
- 
-       elsif Count = SR.Last then
-          Reference (SR);
-          DR := SR;
- 
-       --  Otherwise, allocate new shared string and fill it
- 
-       else
-          DR := Allocate (Count);
- 
-          --  Length of the source string is more than requested, copy
-          --  corresponding slice.
- 
-          if Count < SR.Last then
-             DR.Data (1 .. Count) := SR.Data (1 .. Count);
- 
-          --  Length of the source string is less than requested, copy all
-          --  contents and fill others by Pad character.
- 
-          else
-             DR.Data (1 .. SR.Last) := SR.Data (1 .. SR.Last);
- 
-             for J in SR.Last + 1 .. Count loop
-                DR.Data (J) := Pad;
-             end loop;
-          end if;
- 
-          DR.Last := Count;
-       end if;
- 
-       return (AF.Controlled with Reference => DR);
-    end Head;
- 
-    procedure Head
-      (Source : in out Unbounded_Wide_String;
-       Count  : Natural;
-       Pad    : Wide_Character := Wide_Space)
-    is
-       SR : constant Shared_Wide_String_Access := Source.Reference;
-       DR : Shared_Wide_String_Access;
- 
-    begin
-       --  Result is empty, reuse empty shared string
- 
-       if Count = 0 then
-          Reference (Empty_Shared_Wide_String'Access);
-          Source.Reference := Empty_Shared_Wide_String'Access;
-          Unreference (SR);
- 
-       --  Result is same with source string, reuse source shared string
- 
-       elsif Count = SR.Last then
-          null;
- 
-       --  Try to reuse existent shared string
- 
-       elsif Can_Be_Reused (SR, Count) then
-          if Count > SR.Last then
-             for J in SR.Last + 1 .. Count loop
-                SR.Data (J) := Pad;
-             end loop;
-          end if;
- 
-          SR.Last := Count;
- 
-       --  Otherwise, allocate new shared string and fill it
- 
-       else
-          DR := Allocate (Count);
- 
-          --  Length of the source string is greater than requested, copy
-          --  corresponding slice.
- 
-          if Count < SR.Last then
-             DR.Data (1 .. Count) := SR.Data (1 .. Count);
- 
-          --  Length of the source string is less than requested, copy all
-          --  exists data and fill others by Pad character.
- 
-          else
-             DR.Data (1 .. SR.Last) := SR.Data (1 .. SR.Last);
- 
-             for J in SR.Last + 1 .. Count loop
-                DR.Data (J) := Pad;
-             end loop;
-          end if;
- 
-          DR.Last := Count;
-          Source.Reference := DR;
-          Unreference (SR);
-       end if;
-    end Head;
- 
-    -----------
-    -- Index --
-    -----------
- 
-    function Index
-      (Source  : Unbounded_Wide_String;
-       Pattern : Wide_String;
-       Going   : Strings.Direction := Strings.Forward;
-       Mapping : Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity)
-       return Natural
-    is
-       SR : constant Shared_Wide_String_Access := Source.Reference;
-    begin
-       return Wide_Search.Index
-         (SR.Data (1 .. SR.Last), Pattern, Going, Mapping);
-    end Index;
- 
-    function Index
-      (Source  : Unbounded_Wide_String;
-       Pattern : Wide_String;
-       Going   : Direction := Forward;
-       Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural
-    is
-       SR : constant Shared_Wide_String_Access := Source.Reference;
-    begin
-       return Wide_Search.Index
-         (SR.Data (1 .. SR.Last), Pattern, Going, Mapping);
-    end Index;
- 
-    function Index
-      (Source : Unbounded_Wide_String;
-       Set    : Wide_Maps.Wide_Character_Set;
-       Test   : Strings.Membership := Strings.Inside;
-       Going  : Strings.Direction  := Strings.Forward) return Natural
-    is
-       SR : constant Shared_Wide_String_Access := Source.Reference;
-    begin
-       return Wide_Search.Index (SR.Data (1 .. SR.Last), Set, Test, Going);
-    end Index;
- 
-    function Index
-      (Source  : Unbounded_Wide_String;
-       Pattern : Wide_String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity)
-       return Natural
-    is
-       SR : constant Shared_Wide_String_Access := Source.Reference;
-    begin
-       return Wide_Search.Index
-         (SR.Data (1 .. SR.Last), Pattern, From, Going, Mapping);
-    end Index;
- 
-    function Index
-      (Source  : Unbounded_Wide_String;
-       Pattern : Wide_String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural
-    is
-       SR : constant Shared_Wide_String_Access := Source.Reference;
-    begin
-       return Wide_Search.Index
-         (SR.Data (1 .. SR.Last), Pattern, From, Going, Mapping);
-    end Index;
- 
-    function Index
-      (Source  : Unbounded_Wide_String;
-       Set     : Wide_Maps.Wide_Character_Set;
-       From    : Positive;
-       Test    : Membership := Inside;
-       Going   : Direction := Forward) return Natural
-    is
-       SR : constant Shared_Wide_String_Access := Source.Reference;
-    begin
-       return Wide_Search.Index
-         (SR.Data (1 .. SR.Last), Set, From, Test, Going);
-    end Index;
- 
-    ---------------------
-    -- Index_Non_Blank --
-    ---------------------
- 
-    function Index_Non_Blank
-      (Source : Unbounded_Wide_String;
-       Going  : Strings.Direction := Strings.Forward) return Natural
-    is
-       SR : constant Shared_Wide_String_Access := Source.Reference;
-    begin
-       return Wide_Search.Index_Non_Blank (SR.Data (1 .. SR.Last), Going);
-    end Index_Non_Blank;
- 
-    function Index_Non_Blank
-      (Source : Unbounded_Wide_String;
-       From   : Positive;
-       Going  : Direction := Forward) return Natural
-    is
-       SR : constant Shared_Wide_String_Access := Source.Reference;
-    begin
-       return Wide_Search.Index_Non_Blank
-         (SR.Data (1 .. SR.Last), From, Going);
-    end Index_Non_Blank;
- 
-    ----------------
-    -- Initialize --
-    ----------------
- 
-    procedure Initialize (Object : in out Unbounded_Wide_String) is
-    begin
-       Reference (Object.Reference);
-    end Initialize;
- 
-    ------------
-    -- Insert --
-    ------------
- 
-    function Insert
-      (Source   : Unbounded_Wide_String;
-       Before   : Positive;
-       New_Item : Wide_String) return Unbounded_Wide_String
-    is
-       SR : constant Shared_Wide_String_Access := Source.Reference;
-       DL : constant Natural := SR.Last + New_Item'Length;
-       DR : Shared_Wide_String_Access;
- 
-    begin
-       --  Check index first
- 
-       if Before > SR.Last + 1 then
-          raise Index_Error;
-       end if;
- 
-       --  Result is empty, reuse empty shared string
- 
-       if DL = 0 then
-          Reference (Empty_Shared_Wide_String'Access);
-          DR := Empty_Shared_Wide_String'Access;
- 
-       --  Inserted string is empty, reuse source shared string
- 
-       elsif New_Item'Length = 0 then
-          Reference (SR);
-          DR := SR;
- 
-       --  Otherwise, allocate new shared string and fill it
- 
-       else
-          DR := Allocate (DL + DL / Growth_Factor);
-          DR.Data (1 .. Before - 1) := SR.Data (1 .. Before - 1);
-          DR.Data (Before .. Before + New_Item'Length - 1) := New_Item;
-          DR.Data (Before + New_Item'Length .. DL) :=
-            SR.Data (Before .. SR.Last);
-          DR.Last := DL;
-       end if;
- 
-       return (AF.Controlled with Reference => DR);
-    end Insert;
- 
-    procedure Insert
-      (Source   : in out Unbounded_Wide_String;
-       Before   : Positive;
-       New_Item : Wide_String)
-    is
-       SR : constant Shared_Wide_String_Access := Source.Reference;
-       DL : constant Natural                   := SR.Last + New_Item'Length;
-       DR : Shared_Wide_String_Access;
- 
-    begin
-       --  Check bounds
- 
-       if Before > SR.Last + 1 then
-          raise Index_Error;
-       end if;
- 
-       --  Result is empty string, reuse empty shared string
- 
-       if DL = 0 then
-          Reference (Empty_Shared_Wide_String'Access);
-          Source.Reference := Empty_Shared_Wide_String'Access;
-          Unreference (SR);
- 
-       --  Inserted string is empty, nothing to do
- 
-       elsif New_Item'Length = 0 then
-          null;
- 
-       --  Try to reuse existent shared string first
- 
-       elsif Can_Be_Reused (SR, DL) then
-          SR.Data (Before + New_Item'Length .. DL) :=
-            SR.Data (Before .. SR.Last);
-          SR.Data (Before .. Before + New_Item'Length - 1) := New_Item;
-          SR.Last := DL;
- 
-       --  Otherwise, allocate new shared string and fill it
- 
-       else
-          DR := Allocate (DL + DL / Growth_Factor);
-          DR.Data (1 .. Before - 1) := SR.Data (1 .. Before - 1);
-          DR.Data (Before .. Before + New_Item'Length - 1) := New_Item;
-          DR.Data (Before + New_Item'Length .. DL) :=
-            SR.Data (Before .. SR.Last);
-          DR.Last := DL;
-          Source.Reference := DR;
-          Unreference (SR);
-       end if;
-    end Insert;
- 
-    ------------
-    -- Length --
-    ------------
- 
-    function Length (Source : Unbounded_Wide_String) return Natural is
-    begin
-       return Source.Reference.Last;
-    end Length;
- 
-    ---------------
-    -- Overwrite --
-    ---------------
- 
-    function Overwrite
-      (Source   : Unbounded_Wide_String;
-       Position : Positive;
-       New_Item : Wide_String) return Unbounded_Wide_String
-    is
-       SR : constant Shared_Wide_String_Access := Source.Reference;
-       DL : Natural;
-       DR : Shared_Wide_String_Access;
- 
-    begin
-       --  Check bounds
- 
-       if Position > SR.Last + 1 then
-          raise Index_Error;
-       end if;
- 
-       DL := Integer'Max (SR.Last, Position + New_Item'Length - 1);
- 
-       --  Result is empty string, reuse empty shared string
- 
-       if DL = 0 then
-          Reference (Empty_Shared_Wide_String'Access);
-          DR := Empty_Shared_Wide_String'Access;
- 
-       --  Result is same with source string, reuse source shared string
- 
-       elsif New_Item'Length = 0 then
-          Reference (SR);
-          DR := SR;
- 
-       --  Otherwise, allocate new shared string and fill it
- 
-       else
-          DR := Allocate (DL);
-          DR.Data (1 .. Position - 1) := SR.Data (1 .. Position - 1);
-          DR.Data (Position .. Position + New_Item'Length - 1) := New_Item;
-          DR.Data (Position + New_Item'Length .. DL) :=
-            SR.Data (Position + New_Item'Length .. SR.Last);
-          DR.Last := DL;
-       end if;
- 
-       return (AF.Controlled with Reference => DR);
-    end Overwrite;
- 
-    procedure Overwrite
-      (Source    : in out Unbounded_Wide_String;
-       Position  : Positive;
-       New_Item  : Wide_String)
-    is
-       SR : constant Shared_Wide_String_Access := Source.Reference;
-       DL : Natural;
-       DR : Shared_Wide_String_Access;
- 
-    begin
-       --  Bounds check
- 
-       if Position > SR.Last + 1 then
-          raise Index_Error;
-       end if;
- 
-       DL := Integer'Max (SR.Last, Position + New_Item'Length - 1);
- 
-       --  Result is empty string, reuse empty shared string
- 
-       if DL = 0 then
-          Reference (Empty_Shared_Wide_String'Access);
-          Source.Reference := Empty_Shared_Wide_String'Access;
-          Unreference (SR);
- 
-       --  String unchanged, nothing to do
- 
-       elsif New_Item'Length = 0 then
-          null;
- 
-       --  Try to reuse existent shared string
- 
-       elsif Can_Be_Reused (SR, DL) then
-          SR.Data (Position .. Position + New_Item'Length - 1) := New_Item;
-          SR.Last := DL;
- 
-       --  Otherwise allocate new shared string and fill it
- 
-       else
-          DR := Allocate (DL);
-          DR.Data (1 .. Position - 1) := SR.Data (1 .. Position - 1);
-          DR.Data (Position .. Position + New_Item'Length - 1) := New_Item;
-          DR.Data (Position + New_Item'Length .. DL) :=
-            SR.Data (Position + New_Item'Length .. SR.Last);
-          DR.Last := DL;
-          Source.Reference := DR;
-          Unreference (SR);
-       end if;
-    end Overwrite;
- 
-    ---------------
-    -- Reference --
-    ---------------
- 
-    procedure Reference (Item : not null Shared_Wide_String_Access) is
-    begin
-       System.Atomic_Counters.Increment (Item.Counter);
-    end Reference;
- 
-    ---------------------
-    -- Replace_Element --
-    ---------------------
- 
-    procedure Replace_Element
-      (Source : in out Unbounded_Wide_String;
-       Index  : Positive;
-       By     : Wide_Character)
-    is
-       SR : constant Shared_Wide_String_Access := Source.Reference;
-       DR : Shared_Wide_String_Access;
- 
-    begin
-       --  Bounds check
- 
-       if Index <= SR.Last then
- 
-          --  Try to reuse existent shared string
- 
-          if Can_Be_Reused (SR, SR.Last) then
-             SR.Data (Index) := By;
- 
-          --  Otherwise allocate new shared string and fill it
- 
-          else
-             DR := Allocate (SR.Last);
-             DR.Data (1 .. SR.Last) := SR.Data (1 .. SR.Last);
-             DR.Data (Index) := By;
-             DR.Last := SR.Last;
-             Source.Reference := DR;
-             Unreference (SR);
-          end if;
- 
-       else
-          raise Index_Error;
-       end if;
-    end Replace_Element;
- 
-    -------------------
-    -- Replace_Slice --
-    -------------------
- 
-    function Replace_Slice
-      (Source : Unbounded_Wide_String;
-       Low    : Positive;
-       High   : Natural;
-       By     : Wide_String) return Unbounded_Wide_String
-    is
-       SR : constant Shared_Wide_String_Access := Source.Reference;
-       DL : Natural;
-       DR : Shared_Wide_String_Access;
- 
-    begin
-       --  Check bounds
- 
-       if Low > SR.Last + 1 then
-          raise Index_Error;
-       end if;
- 
-       --  Do replace operation when removed slice is not empty
- 
-       if High >= Low then
-          DL := By'Length + SR.Last + Low - Integer'Min (High, SR.Last) - 1;
-          --  This is the number of characters remaining in the string after
-          --  replacing the slice.
- 
-          --  Result is empty string, reuse empty shared string
- 
-          if DL = 0 then
-             Reference (Empty_Shared_Wide_String'Access);
-             DR := Empty_Shared_Wide_String'Access;
- 
-          --  Otherwise allocate new shared string and fill it
- 
-          else
-             DR := Allocate (DL);
-             DR.Data (1 .. Low - 1) := SR.Data (1 .. Low - 1);
-             DR.Data (Low .. Low + By'Length - 1) := By;
-             DR.Data (Low + By'Length .. DL) := SR.Data (High + 1 .. SR.Last);
-             DR.Last := DL;
-          end if;
- 
-          return (AF.Controlled with Reference => DR);
- 
-       --  Otherwise just insert string
- 
-       else
-          return Insert (Source, Low, By);
-       end if;
-    end Replace_Slice;
- 
-    procedure Replace_Slice
-      (Source : in out Unbounded_Wide_String;
-       Low    : Positive;
-       High   : Natural;
-       By     : Wide_String)
-    is
-       SR : constant Shared_Wide_String_Access := Source.Reference;
-       DL : Natural;
-       DR : Shared_Wide_String_Access;
- 
-    begin
-       --  Bounds check
- 
-       if Low > SR.Last + 1 then
-          raise Index_Error;
-       end if;
- 
-       --  Do replace operation only when replaced slice is not empty
- 
-       if High >= Low then
-          DL := By'Length + SR.Last + Low - Integer'Min (High, SR.Last) - 1;
-          --  This is the number of characters remaining in the string after
-          --  replacing the slice.
- 
-          --  Result is empty string, reuse empty shared string
- 
-          if DL = 0 then
-             Reference (Empty_Shared_Wide_String'Access);
-             Source.Reference := Empty_Shared_Wide_String'Access;
-             Unreference (SR);
- 
-          --  Try to reuse existent shared string
- 
-          elsif Can_Be_Reused (SR, DL) then
-             SR.Data (Low + By'Length .. DL) := SR.Data (High + 1 .. SR.Last);
-             SR.Data (Low .. Low + By'Length - 1) := By;
-             SR.Last := DL;
- 
-          --  Otherwise allocate new shared string and fill it
- 
-          else
-             DR := Allocate (DL);
-             DR.Data (1 .. Low - 1) := SR.Data (1 .. Low - 1);
-             DR.Data (Low .. Low + By'Length - 1) := By;
-             DR.Data (Low + By'Length .. DL) := SR.Data (High + 1 .. SR.Last);
-             DR.Last := DL;
-             Source.Reference := DR;
-             Unreference (SR);
-          end if;
- 
-       --  Otherwise just insert item
- 
-       else
-          Insert (Source, Low, By);
-       end if;
-    end Replace_Slice;
- 
-    -------------------------------
-    -- Set_Unbounded_Wide_String --
-    -------------------------------
- 
-    procedure Set_Unbounded_Wide_String
-      (Target : out Unbounded_Wide_String;
-       Source : Wide_String)
-    is
-       TR : constant Shared_Wide_String_Access := Target.Reference;
-       DR : Shared_Wide_String_Access;
- 
-    begin
-       --  In case of empty string, reuse empty shared string
- 
-       if Source'Length = 0 then
-          Reference (Empty_Shared_Wide_String'Access);
-          Target.Reference := Empty_Shared_Wide_String'Access;
- 
-       else
-          --  Try to reuse existent shared string
- 
-          if Can_Be_Reused (TR, Source'Length) then
-             Reference (TR);
-             DR := TR;
- 
-          --  Otherwise allocate new shared string
- 
-          else
-             DR := Allocate (Source'Length);
-             Target.Reference := DR;
-          end if;
- 
-          DR.Data (1 .. Source'Length) := Source;
-          DR.Last := Source'Length;
-       end if;
- 
-       Unreference (TR);
-    end Set_Unbounded_Wide_String;
- 
-    -----------
-    -- Slice --
-    -----------
- 
-    function Slice
-      (Source : Unbounded_Wide_String;
-       Low    : Positive;
-       High   : Natural) return Wide_String
-    is
-       SR : constant Shared_Wide_String_Access := Source.Reference;
- 
-    begin
-       --  Note: test of High > Length is in accordance with AI95-00128
- 
-       if Low > SR.Last + 1 or else High > SR.Last then
-          raise Index_Error;
- 
-       else
-          return SR.Data (Low .. High);
-       end if;
-    end Slice;
- 
-    ----------
-    -- Tail --
-    ----------
- 
-    function Tail
-      (Source : Unbounded_Wide_String;
-       Count  : Natural;
-       Pad    : Wide_Character := Wide_Space) return Unbounded_Wide_String
-    is
-       SR : constant Shared_Wide_String_Access := Source.Reference;
-       DR : Shared_Wide_String_Access;
- 
-    begin
-       --  For empty result reuse empty shared string
- 
-       if Count = 0 then
-          Reference (Empty_Shared_Wide_String'Access);
-          DR := Empty_Shared_Wide_String'Access;
- 
-       --  Result is hole source string, reuse source shared string
- 
-       elsif Count = SR.Last then
-          Reference (SR);
-          DR := SR;
- 
-       --  Otherwise allocate new shared string and fill it
- 
-       else
-          DR := Allocate (Count);
- 
-          if Count < SR.Last then
-             DR.Data (1 .. Count) := SR.Data (SR.Last - Count + 1 .. SR.Last);
- 
-          else
-             for J in 1 .. Count - SR.Last loop
-                DR.Data (J) := Pad;
-             end loop;
- 
-             DR.Data (Count - SR.Last + 1 .. Count) := SR.Data (1 .. SR.Last);
-          end if;
- 
-          DR.Last := Count;
-       end if;
- 
-       return (AF.Controlled with Reference => DR);
-    end Tail;
- 
-    procedure Tail
-      (Source : in out Unbounded_Wide_String;
-       Count  : Natural;
-       Pad    : Wide_Character := Wide_Space)
-    is
-       SR : constant Shared_Wide_String_Access := Source.Reference;
-       DR : Shared_Wide_String_Access;
- 
-       procedure Common
-         (SR    : Shared_Wide_String_Access;
-          DR    : Shared_Wide_String_Access;
-          Count : Natural);
-       --  Common code of tail computation. SR/DR can point to the same object
- 
-       ------------
-       -- Common --
-       ------------
- 
-       procedure Common
-         (SR    : Shared_Wide_String_Access;
-          DR    : Shared_Wide_String_Access;
-          Count : Natural) is
-       begin
-          if Count < SR.Last then
-             DR.Data (1 .. Count) := SR.Data (SR.Last - Count + 1 .. SR.Last);
- 
-          else
-             DR.Data (Count - SR.Last + 1 .. Count) := SR.Data (1 .. SR.Last);
- 
-             for J in 1 .. Count - SR.Last loop
-                DR.Data (J) := Pad;
-             end loop;
-          end if;
- 
-          DR.Last := Count;
-       end Common;
- 
-    begin
-       --  Result is empty string, reuse empty shared string
- 
-       if Count = 0 then
-          Reference (Empty_Shared_Wide_String'Access);
-          Source.Reference := Empty_Shared_Wide_String'Access;
-          Unreference (SR);
- 
-       --  Length of the result is the same with length of the source string,
-       --  reuse source shared string.
- 
-       elsif Count = SR.Last then
-          null;
- 
-       --  Try to reuse existent shared string
- 
-       elsif Can_Be_Reused (SR, Count) then
-          Common (SR, SR, Count);
- 
-       --  Otherwise allocate new shared string and fill it
- 
-       else
-          DR := Allocate (Count);
-          Common (SR, DR, Count);
-          Source.Reference := DR;
-          Unreference (SR);
-       end if;
-    end Tail;
- 
-    --------------------
-    -- To_Wide_String --
-    --------------------
- 
-    function To_Wide_String
-      (Source : Unbounded_Wide_String) return Wide_String is
-    begin
-       return Source.Reference.Data (1 .. Source.Reference.Last);
-    end To_Wide_String;
- 
-    ------------------------------
-    -- To_Unbounded_Wide_String --
-    ------------------------------
- 
-    function To_Unbounded_Wide_String
-      (Source : Wide_String) return Unbounded_Wide_String
-    is
-       DR : Shared_Wide_String_Access;
- 
-    begin
-       if Source'Length = 0 then
-          Reference (Empty_Shared_Wide_String'Access);
-          DR := Empty_Shared_Wide_String'Access;
- 
-       else
-          DR := Allocate (Source'Length);
-          DR.Data (1 .. Source'Length) := Source;
-          DR.Last := Source'Length;
-       end if;
- 
-       return (AF.Controlled with Reference => DR);
-    end To_Unbounded_Wide_String;
- 
-    function To_Unbounded_Wide_String
-      (Length : Natural) return Unbounded_Wide_String
-    is
-       DR : Shared_Wide_String_Access;
- 
-    begin
-       if Length = 0 then
-          Reference (Empty_Shared_Wide_String'Access);
-          DR := Empty_Shared_Wide_String'Access;
- 
-       else
-          DR := Allocate (Length);
-          DR.Last := Length;
-       end if;
- 
-       return (AF.Controlled with Reference => DR);
-    end To_Unbounded_Wide_String;
- 
-    ---------------
-    -- Translate --
-    ---------------
- 
-    function Translate
-      (Source  : Unbounded_Wide_String;
-       Mapping : Wide_Maps.Wide_Character_Mapping) return Unbounded_Wide_String
-    is
-       SR : constant Shared_Wide_String_Access := Source.Reference;
-       DR : Shared_Wide_String_Access;
- 
-    begin
-       --  Nothing to translate, reuse empty shared string
- 
-       if SR.Last = 0 then
-          Reference (Empty_Shared_Wide_String'Access);
-          DR := Empty_Shared_Wide_String'Access;
- 
-       --  Otherwise, allocate new shared string and fill it
- 
-       else
-          DR := Allocate (SR.Last);
- 
-          for J in 1 .. SR.Last loop
-             DR.Data (J) := Value (Mapping, SR.Data (J));
-          end loop;
- 
-          DR.Last := SR.Last;
-       end if;
- 
-       return (AF.Controlled with Reference => DR);
-    end Translate;
- 
-    procedure Translate
-      (Source  : in out Unbounded_Wide_String;
-       Mapping : Wide_Maps.Wide_Character_Mapping)
-    is
-       SR : constant Shared_Wide_String_Access := Source.Reference;
-       DR : Shared_Wide_String_Access;
- 
-    begin
-       --  Nothing to translate
- 
-       if SR.Last = 0 then
-          null;
- 
-       --  Try to reuse shared string
- 
-       elsif Can_Be_Reused (SR, SR.Last) then
-          for J in 1 .. SR.Last loop
-             SR.Data (J) := Value (Mapping, SR.Data (J));
-          end loop;
- 
-       --  Otherwise, allocate new shared string
- 
-       else
-          DR := Allocate (SR.Last);
- 
-          for J in 1 .. SR.Last loop
-             DR.Data (J) := Value (Mapping, SR.Data (J));
-          end loop;
- 
-          DR.Last := SR.Last;
-          Source.Reference := DR;
-          Unreference (SR);
-       end if;
-    end Translate;
- 
-    function Translate
-      (Source  : Unbounded_Wide_String;
-       Mapping : Wide_Maps.Wide_Character_Mapping_Function)
-       return Unbounded_Wide_String
-    is
-       SR : constant Shared_Wide_String_Access := Source.Reference;
-       DR : Shared_Wide_String_Access;
- 
-    begin
-       --  Nothing to translate, reuse empty shared string
- 
-       if SR.Last = 0 then
-          Reference (Empty_Shared_Wide_String'Access);
-          DR := Empty_Shared_Wide_String'Access;
- 
-       --  Otherwise, allocate new shared string and fill it
- 
-       else
-          DR := Allocate (SR.Last);
- 
-          for J in 1 .. SR.Last loop
-             DR.Data (J) := Mapping.all (SR.Data (J));
-          end loop;
- 
-          DR.Last := SR.Last;
-       end if;
- 
-       return (AF.Controlled with Reference => DR);
- 
-    exception
-       when others =>
-          Unreference (DR);
- 
-          raise;
-    end Translate;
- 
-    procedure Translate
-      (Source  : in out Unbounded_Wide_String;
-       Mapping : Wide_Maps.Wide_Character_Mapping_Function)
-    is
-       SR : constant Shared_Wide_String_Access := Source.Reference;
-       DR : Shared_Wide_String_Access;
- 
-    begin
-       --  Nothing to translate
- 
-       if SR.Last = 0 then
-          null;
- 
-       --  Try to reuse shared string
- 
-       elsif Can_Be_Reused (SR, SR.Last) then
-          for J in 1 .. SR.Last loop
-             SR.Data (J) := Mapping.all (SR.Data (J));
-          end loop;
- 
-       --  Otherwise allocate new shared string and fill it
- 
-       else
-          DR := Allocate (SR.Last);
- 
-          for J in 1 .. SR.Last loop
-             DR.Data (J) := Mapping.all (SR.Data (J));
-          end loop;
- 
-          DR.Last := SR.Last;
-          Source.Reference := DR;
-          Unreference (SR);
-       end if;
- 
-    exception
-       when others =>
-          if DR /= null then
-             Unreference (DR);
-          end if;
- 
-          raise;
-    end Translate;
- 
-    ----------
-    -- Trim --
-    ----------
- 
-    function Trim
-      (Source : Unbounded_Wide_String;
-       Side   : Trim_End) return Unbounded_Wide_String
-    is
-       SR   : constant Shared_Wide_String_Access := Source.Reference;
-       DL   : Natural;
-       DR   : Shared_Wide_String_Access;
-       Low  : Natural;
-       High : Natural;
- 
-    begin
-       Low := Index_Non_Blank (Source, Forward);
- 
-       --  All blanks, reuse empty shared string
- 
-       if Low = 0 then
-          Reference (Empty_Shared_Wide_String'Access);
-          DR := Empty_Shared_Wide_String'Access;
- 
-       else
-          case Side is
-             when Left =>
-                High := SR.Last;
-                DL   := SR.Last - Low + 1;
- 
-             when Right =>
-                Low  := 1;
-                High := Index_Non_Blank (Source, Backward);
-                DL   := High;
- 
-             when Both =>
-                High := Index_Non_Blank (Source, Backward);
-                DL   := High - Low + 1;
-          end case;
- 
-          --  Length of the result is the same as length of the source string,
-          --  reuse source shared string.
- 
-          if DL = SR.Last then
-             Reference (SR);
-             DR := SR;
- 
-          --  Otherwise, allocate new shared string
- 
-          else
-             DR := Allocate (DL);
-             DR.Data (1 .. DL) := SR.Data (Low .. High);
-             DR.Last := DL;
-          end if;
-       end if;
- 
-       return (AF.Controlled with Reference => DR);
-    end Trim;
- 
-    procedure Trim
-      (Source : in out Unbounded_Wide_String;
-       Side   : Trim_End)
-    is
-       SR   : constant Shared_Wide_String_Access := Source.Reference;
-       DL   : Natural;
-       DR   : Shared_Wide_String_Access;
-       Low  : Natural;
-       High : Natural;
- 
-    begin
-       Low := Index_Non_Blank (Source, Forward);
- 
-       --  All blanks, reuse empty shared string
- 
-       if Low = 0 then
-          Reference (Empty_Shared_Wide_String'Access);
-          Source.Reference := Empty_Shared_Wide_String'Access;
-          Unreference (SR);
- 
-       else
-          case Side is
-             when Left =>
-                High := SR.Last;
-                DL   := SR.Last - Low + 1;
- 
-             when Right =>
-                Low  := 1;
-                High := Index_Non_Blank (Source, Backward);
-                DL   := High;
- 
-             when Both =>
-                High := Index_Non_Blank (Source, Backward);
-                DL   := High - Low + 1;
-          end case;
- 
-          --  Length of the result is the same as length of the source string,
-          --  nothing to do.
- 
-          if DL = SR.Last then
-             null;
- 
-          --  Try to reuse existent shared string
- 
-          elsif Can_Be_Reused (SR, DL) then
-             SR.Data (1 .. DL) := SR.Data (Low .. High);
-             SR.Last := DL;
- 
-          --  Otherwise, allocate new shared string
- 
-          else
-             DR := Allocate (DL);
-             DR.Data (1 .. DL) := SR.Data (Low .. High);
-             DR.Last := DL;
-             Source.Reference := DR;
-             Unreference (SR);
-          end if;
-       end if;
-    end Trim;
- 
-    function Trim
-      (Source : Unbounded_Wide_String;
-       Left   : Wide_Maps.Wide_Character_Set;
-       Right  : Wide_Maps.Wide_Character_Set) return Unbounded_Wide_String
-    is
-       SR   : constant Shared_Wide_String_Access := Source.Reference;
-       DL   : Natural;
-       DR   : Shared_Wide_String_Access;
-       Low  : Natural;
-       High : Natural;
- 
-    begin
-       Low := Index (Source, Left, Outside, Forward);
- 
-       --  Source includes only characters from Left set, reuse empty shared
-       --  string.
- 
-       if Low = 0 then
-          Reference (Empty_Shared_Wide_String'Access);
-          DR := Empty_Shared_Wide_String'Access;
- 
-       else
-          High := Index (Source, Right, Outside, Backward);
-          DL   := Integer'Max (0, High - Low + 1);
- 
-          --  Source includes only characters from Right set or result string
-          --  is empty, reuse empty shared string.
- 
-          if High = 0 or else DL = 0 then
-             Reference (Empty_Shared_Wide_String'Access);
-             DR := Empty_Shared_Wide_String'Access;
- 
-          --  Otherwise, allocate new shared string and fill it
- 
-          else
-             DR := Allocate (DL);
-             DR.Data (1 .. DL) := SR.Data (Low .. High);
-             DR.Last := DL;
-          end if;
-       end if;
- 
-       return (AF.Controlled with Reference => DR);
-    end Trim;
- 
-    procedure Trim
-      (Source : in out Unbounded_Wide_String;
-       Left   : Wide_Maps.Wide_Character_Set;
-       Right  : Wide_Maps.Wide_Character_Set)
-    is
-       SR   : constant Shared_Wide_String_Access := Source.Reference;
-       DL   : Natural;
-       DR   : Shared_Wide_String_Access;
-       Low  : Natural;
-       High : Natural;
- 
-    begin
-       Low := Index (Source, Left, Outside, Forward);
- 
-       --  Source includes only characters from Left set, reuse empty shared
-       --  string.
- 
-       if Low = 0 then
-          Reference (Empty_Shared_Wide_String'Access);
-          Source.Reference := Empty_Shared_Wide_String'Access;
-          Unreference (SR);
- 
-       else
-          High := Index (Source, Right, Outside, Backward);
-          DL   := Integer'Max (0, High - Low + 1);
- 
-          --  Source includes only characters from Right set or result string
-          --  is empty, reuse empty shared string.
- 
-          if High = 0 or else DL = 0 then
-             Reference (Empty_Shared_Wide_String'Access);
-             Source.Reference := Empty_Shared_Wide_String'Access;
-             Unreference (SR);
- 
-          --  Try to reuse existent shared string
- 
-          elsif Can_Be_Reused (SR, DL) then
-             SR.Data (1 .. DL) := SR.Data (Low .. High);
-             SR.Last := DL;
- 
-          --  Otherwise, allocate new shared string and fill it
- 
-          else
-             DR := Allocate (DL);
-             DR.Data (1 .. DL) := SR.Data (Low .. High);
-             DR.Last := DL;
-             Source.Reference := DR;
-             Unreference (SR);
-          end if;
-       end if;
-    end Trim;
- 
-    ---------------------
-    -- Unbounded_Slice --
-    ---------------------
- 
-    function Unbounded_Slice
-      (Source : Unbounded_Wide_String;
-       Low    : Positive;
-       High   : Natural) return Unbounded_Wide_String
-    is
-       SR : constant Shared_Wide_String_Access := Source.Reference;
-       DL : Natural;
-       DR : Shared_Wide_String_Access;
- 
-    begin
-       --  Check bounds
- 
-       if Low > SR.Last + 1 or else High > SR.Last then
-          raise Index_Error;
- 
-       --  Result is empty slice, reuse empty shared string
- 
-       elsif Low > High then
-          Reference (Empty_Shared_Wide_String'Access);
-          DR := Empty_Shared_Wide_String'Access;
- 
-       --  Otherwise, allocate new shared string and fill it
- 
-       else
-          DL := High - Low + 1;
-          DR := Allocate (DL);
-          DR.Data (1 .. DL) := SR.Data (Low .. High);
-          DR.Last := DL;
-       end if;
- 
-       return (AF.Controlled with Reference => DR);
-    end Unbounded_Slice;
- 
-    procedure Unbounded_Slice
-      (Source : Unbounded_Wide_String;
-       Target : out Unbounded_Wide_String;
-       Low    : Positive;
-       High   : Natural)
-    is
-       SR : constant Shared_Wide_String_Access := Source.Reference;
-       TR : constant Shared_Wide_String_Access := Target.Reference;
-       DL : Natural;
-       DR : Shared_Wide_String_Access;
- 
-    begin
-       --  Check bounds
- 
-       if Low > SR.Last + 1 or else High > SR.Last then
-          raise Index_Error;
- 
-       --  Result is empty slice, reuse empty shared string
- 
-       elsif Low > High then
-          Reference (Empty_Shared_Wide_String'Access);
-          Target.Reference := Empty_Shared_Wide_String'Access;
-          Unreference (TR);
- 
-       else
-          DL := High - Low + 1;
- 
-          --  Try to reuse existent shared string
- 
-          if Can_Be_Reused (TR, DL) then
-             TR.Data (1 .. DL) := SR.Data (Low .. High);
-             TR.Last := DL;
- 
-          --  Otherwise, allocate new shared string and fill it
- 
-          else
-             DR := Allocate (DL);
-             DR.Data (1 .. DL) := SR.Data (Low .. High);
-             DR.Last := DL;
-             Target.Reference := DR;
-             Unreference (TR);
-          end if;
-       end if;
-    end Unbounded_Slice;
- 
-    -----------------
-    -- Unreference --
-    -----------------
- 
-    procedure Unreference (Item : not null Shared_Wide_String_Access) is
- 
-       procedure Free is
-         new Ada.Unchecked_Deallocation
-               (Shared_Wide_String, Shared_Wide_String_Access);
- 
-       Aux : Shared_Wide_String_Access := Item;
- 
-    begin
-       if System.Atomic_Counters.Decrement (Aux.Counter) then
- 
-          --  Reference counter of Empty_Shared_Wide_String must never reach
-          --  zero.
- 
-          pragma Assert (Aux /= Empty_Shared_Wide_String'Access);
- 
-          Free (Aux);
-       end if;
-    end Unreference;
- 
- end Ada.Strings.Wide_Unbounded;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-stwiun-shared.ads gcc-8.1.0/gcc/ada/a-stwiun-shared.ads
*** gcc-7.3.0/gcc/ada/a-stwiun-shared.ads	Tue Jan  6 09:39:03 2015
--- gcc-8.1.0/gcc/ada/a-stwiun-shared.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,494 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --           A D A . S T R I N G S . W I D E _ U N B O U N D E D            --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2014, Free Software Foundation, 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 version is supported on:
- --    - all Alpha platforms
- --    - all ia64 platforms
- --    - all PowerPC platforms
- --    - all SPARC V9 platforms
- --    - all x86 platforms
- --    - all x86_64 platforms
- 
- with Ada.Strings.Wide_Maps;
- private with Ada.Finalization;
- private with System.Atomic_Counters;
- 
- package Ada.Strings.Wide_Unbounded is
-    pragma Preelaborate;
- 
-    type Unbounded_Wide_String is private;
-    pragma Preelaborable_Initialization (Unbounded_Wide_String);
- 
-    Null_Unbounded_Wide_String : constant Unbounded_Wide_String;
- 
-    function Length (Source : Unbounded_Wide_String) return Natural;
- 
-    type Wide_String_Access is access all Wide_String;
- 
-    procedure Free (X : in out Wide_String_Access);
- 
-    --------------------------------------------------------
-    -- Conversion, Concatenation, and Selection Functions --
-    --------------------------------------------------------
- 
-    function To_Unbounded_Wide_String
-      (Source : Wide_String) return Unbounded_Wide_String;
- 
-    function To_Unbounded_Wide_String
-      (Length : Natural) return Unbounded_Wide_String;
- 
-    function To_Wide_String
-      (Source : Unbounded_Wide_String) return Wide_String;
- 
-    procedure Set_Unbounded_Wide_String
-      (Target : out Unbounded_Wide_String;
-       Source : Wide_String);
-    pragma Ada_05 (Set_Unbounded_Wide_String);
- 
-    procedure Append
-      (Source   : in out Unbounded_Wide_String;
-       New_Item : Unbounded_Wide_String);
- 
-    procedure Append
-      (Source   : in out Unbounded_Wide_String;
-       New_Item : Wide_String);
- 
-    procedure Append
-      (Source   : in out Unbounded_Wide_String;
-       New_Item : Wide_Character);
- 
-    function "&"
-      (Left  : Unbounded_Wide_String;
-       Right : Unbounded_Wide_String) return Unbounded_Wide_String;
- 
-    function "&"
-      (Left  : Unbounded_Wide_String;
-       Right : Wide_String) return Unbounded_Wide_String;
- 
-    function "&"
-      (Left  : Wide_String;
-       Right : Unbounded_Wide_String) return Unbounded_Wide_String;
- 
-    function "&"
-      (Left  : Unbounded_Wide_String;
-       Right : Wide_Character) return Unbounded_Wide_String;
- 
-    function "&"
-      (Left  : Wide_Character;
-       Right : Unbounded_Wide_String) return Unbounded_Wide_String;
- 
-    function Element
-      (Source : Unbounded_Wide_String;
-       Index  : Positive) return Wide_Character;
- 
-    procedure Replace_Element
-      (Source : in out Unbounded_Wide_String;
-       Index  : Positive;
-       By     : Wide_Character);
- 
-    function Slice
-      (Source : Unbounded_Wide_String;
-       Low    : Positive;
-       High   : Natural) return Wide_String;
- 
-    function Unbounded_Slice
-      (Source : Unbounded_Wide_String;
-       Low    : Positive;
-       High   : Natural) return Unbounded_Wide_String;
-    pragma Ada_05 (Unbounded_Slice);
- 
-    procedure Unbounded_Slice
-      (Source : Unbounded_Wide_String;
-       Target : out Unbounded_Wide_String;
-       Low    : Positive;
-       High   : Natural);
-    pragma Ada_05 (Unbounded_Slice);
- 
-    function "="
-      (Left  : Unbounded_Wide_String;
-       Right : Unbounded_Wide_String) return Boolean;
- 
-    function "="
-      (Left  : Unbounded_Wide_String;
-       Right : Wide_String) return Boolean;
- 
-    function "="
-      (Left  : Wide_String;
-       Right : Unbounded_Wide_String) return Boolean;
- 
-    function "<"
-      (Left  : Unbounded_Wide_String;
-       Right : Unbounded_Wide_String) return Boolean;
- 
-    function "<"
-      (Left  : Unbounded_Wide_String;
-       Right : Wide_String) return Boolean;
- 
-    function "<"
-      (Left  : Wide_String;
-       Right : Unbounded_Wide_String) return Boolean;
- 
-    function "<="
-      (Left  : Unbounded_Wide_String;
-       Right : Unbounded_Wide_String) return Boolean;
- 
-    function "<="
-      (Left  : Unbounded_Wide_String;
-       Right : Wide_String) return Boolean;
- 
-    function "<="
-      (Left  : Wide_String;
-       Right : Unbounded_Wide_String) return Boolean;
- 
-    function ">"
-      (Left  : Unbounded_Wide_String;
-       Right : Unbounded_Wide_String) return Boolean;
- 
-    function ">"
-      (Left  : Unbounded_Wide_String;
-       Right : Wide_String) return Boolean;
- 
-    function ">"
-      (Left  : Wide_String;
-       Right : Unbounded_Wide_String) return Boolean;
- 
-    function ">="
-      (Left  : Unbounded_Wide_String;
-       Right : Unbounded_Wide_String) return Boolean;
- 
-    function ">="
-      (Left  : Unbounded_Wide_String;
-       Right : Wide_String) return Boolean;
- 
-    function ">="
-      (Left  : Wide_String;
-       Right : Unbounded_Wide_String) return Boolean;
- 
-    ------------------------
-    -- Search Subprograms --
-    ------------------------
- 
-    function Index
-      (Source  : Unbounded_Wide_String;
-       Pattern : Wide_String;
-       Going   : Direction := Forward;
-       Mapping : Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity)
-       return Natural;
- 
-    function Index
-      (Source  : Unbounded_Wide_String;
-       Pattern : Wide_String;
-       Going   : Direction := Forward;
-       Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural;
- 
-    function Index
-      (Source : Unbounded_Wide_String;
-       Set    : Wide_Maps.Wide_Character_Set;
-       Test   : Membership := Inside;
-       Going  : Direction  := Forward) return Natural;
- 
-    function Index
-      (Source  : Unbounded_Wide_String;
-       Pattern : Wide_String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity)
-       return Natural;
-    pragma Ada_05 (Index);
- 
-    function Index
-      (Source  : Unbounded_Wide_String;
-       Pattern : Wide_String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural;
-    pragma Ada_05 (Index);
- 
-    function Index
-      (Source  : Unbounded_Wide_String;
-       Set     : Wide_Maps.Wide_Character_Set;
-       From    : Positive;
-       Test    : Membership := Inside;
-       Going   : Direction := Forward) return Natural;
-    pragma Ada_05 (Index);
- 
-    function Index_Non_Blank
-      (Source : Unbounded_Wide_String;
-       Going  : Direction := Forward) return Natural;
- 
-    function Index_Non_Blank
-      (Source : Unbounded_Wide_String;
-       From   : Positive;
-       Going  : Direction := Forward) return Natural;
-    pragma Ada_05 (Index_Non_Blank);
- 
-    function Count
-      (Source  : Unbounded_Wide_String;
-       Pattern : Wide_String;
-       Mapping : Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity)
-       return Natural;
- 
-    function Count
-      (Source  : Unbounded_Wide_String;
-       Pattern : Wide_String;
-       Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural;
- 
-    function Count
-      (Source : Unbounded_Wide_String;
-       Set    : Wide_Maps.Wide_Character_Set) return Natural;
- 
-    procedure Find_Token
-      (Source : Unbounded_Wide_String;
-       Set    : Wide_Maps.Wide_Character_Set;
-       From   : Positive;
-       Test   : Membership;
-       First  : out Positive;
-       Last   : out Natural);
-    pragma Ada_2012 (Find_Token);
- 
-    procedure Find_Token
-      (Source : Unbounded_Wide_String;
-       Set    : Wide_Maps.Wide_Character_Set;
-       Test   : Membership;
-       First  : out Positive;
-       Last   : out Natural);
- 
-    ------------------------------------
-    -- String Translation Subprograms --
-    ------------------------------------
- 
-    function Translate
-      (Source  : Unbounded_Wide_String;
-       Mapping : Wide_Maps.Wide_Character_Mapping)
-       return Unbounded_Wide_String;
- 
-    procedure Translate
-      (Source  : in out Unbounded_Wide_String;
-       Mapping : Wide_Maps.Wide_Character_Mapping);
- 
-    function Translate
-      (Source  : Unbounded_Wide_String;
-       Mapping : Wide_Maps.Wide_Character_Mapping_Function)
-       return Unbounded_Wide_String;
- 
-    procedure Translate
-      (Source  : in out Unbounded_Wide_String;
-       Mapping : Wide_Maps.Wide_Character_Mapping_Function);
- 
-    ---------------------------------------
-    -- String Transformation Subprograms --
-    ---------------------------------------
- 
-    function Replace_Slice
-      (Source : Unbounded_Wide_String;
-       Low    : Positive;
-       High   : Natural;
-       By     : Wide_String) return Unbounded_Wide_String;
- 
-    procedure Replace_Slice
-      (Source : in out Unbounded_Wide_String;
-       Low    : Positive;
-       High   : Natural;
-       By     : Wide_String);
- 
-    function Insert
-      (Source   : Unbounded_Wide_String;
-       Before   : Positive;
-       New_Item : Wide_String) return Unbounded_Wide_String;
- 
-    procedure Insert
-      (Source   : in out Unbounded_Wide_String;
-       Before   : Positive;
-       New_Item : Wide_String);
- 
-    function Overwrite
-      (Source   : Unbounded_Wide_String;
-       Position : Positive;
-       New_Item : Wide_String) return Unbounded_Wide_String;
- 
-    procedure Overwrite
-      (Source   : in out Unbounded_Wide_String;
-       Position : Positive;
-       New_Item : Wide_String);
- 
-    function Delete
-      (Source  : Unbounded_Wide_String;
-       From    : Positive;
-       Through : Natural) return Unbounded_Wide_String;
- 
-    procedure Delete
-      (Source  : in out Unbounded_Wide_String;
-       From    : Positive;
-       Through : Natural);
- 
-    function Trim
-      (Source : Unbounded_Wide_String;
-       Side   : Trim_End) return Unbounded_Wide_String;
- 
-    procedure Trim
-      (Source : in out Unbounded_Wide_String;
-       Side   : Trim_End);
- 
-    function Trim
-      (Source : Unbounded_Wide_String;
-       Left   : Wide_Maps.Wide_Character_Set;
-       Right  : Wide_Maps.Wide_Character_Set) return Unbounded_Wide_String;
- 
-    procedure Trim
-      (Source : in out Unbounded_Wide_String;
-       Left   : Wide_Maps.Wide_Character_Set;
-       Right  : Wide_Maps.Wide_Character_Set);
- 
-    function Head
-      (Source : Unbounded_Wide_String;
-       Count  : Natural;
-       Pad    : Wide_Character := Wide_Space) return Unbounded_Wide_String;
- 
-    procedure Head
-      (Source : in out Unbounded_Wide_String;
-       Count  : Natural;
-       Pad    : Wide_Character := Wide_Space);
- 
-    function Tail
-      (Source : Unbounded_Wide_String;
-       Count  : Natural;
-       Pad    : Wide_Character := Wide_Space) return Unbounded_Wide_String;
- 
-    procedure Tail
-      (Source : in out Unbounded_Wide_String;
-       Count  : Natural;
-       Pad    : Wide_Character := Wide_Space);
- 
-    function "*"
-      (Left  : Natural;
-       Right : Wide_Character) return Unbounded_Wide_String;
- 
-    function "*"
-      (Left  : Natural;
-       Right : Wide_String) return Unbounded_Wide_String;
- 
-    function "*"
-      (Left  : Natural;
-       Right : Unbounded_Wide_String) return Unbounded_Wide_String;
- 
- private
-    pragma Inline (Length);
- 
-    package AF renames Ada.Finalization;
- 
-    type Shared_Wide_String (Max_Length : Natural) is limited record
-       Counter : System.Atomic_Counters.Atomic_Counter;
-       --  Reference counter
- 
-       Last : Natural := 0;
-       Data : Wide_String (1 .. Max_Length);
-       --  Last is the index of last significant element of the Data. All
-       --  elements with larger indexes are just extra room for expansion.
-    end record;
- 
-    type Shared_Wide_String_Access is access all Shared_Wide_String;
- 
-    procedure Reference (Item : not null Shared_Wide_String_Access);
-    --  Increment reference counter.
- 
-    procedure Unreference (Item : not null Shared_Wide_String_Access);
-    --  Decrement reference counter. Deallocate Item when ref counter is zero
- 
-    function Can_Be_Reused
-      (Item   : Shared_Wide_String_Access;
-       Length : Natural) return Boolean;
-    --  Returns True if Shared_Wide_String can be reused. There are two criteria
-    --  when Shared_Wide_String can be reused: its reference counter must be one
-    --  (thus Shared_Wide_String is owned exclusively) and its size is
-    --  sufficient to store string with specified length effectively.
- 
-    function Allocate (Max_Length : Natural) return Shared_Wide_String_Access;
-    --  Allocates new Shared_Wide_String with at least specified maximum length.
-    --  Actual maximum length of the allocated Shared_Wide_String can be
-    --  slightly greater. Returns reference to Empty_Shared_Wide_String when
-    --  requested length is zero.
- 
-    Empty_Shared_Wide_String : aliased Shared_Wide_String (0);
- 
-    function To_Unbounded (S : Wide_String) return Unbounded_Wide_String
-      renames To_Unbounded_Wide_String;
-    --  This renames are here only to be used in the pragma Stream_Convert
- 
-    type Unbounded_Wide_String is new AF.Controlled with record
-       Reference : Shared_Wide_String_Access := Empty_Shared_Wide_String'Access;
-    end record;
- 
-    --  The Unbounded_Wide_String uses several techniques to increase speed of
-    --  the application:
- 
-    --   - implicit sharing or copy-on-write. Unbounded_Wide_String contains
-    --     only the reference to the data which is shared between several
-    --     instances. The shared data is reallocated only when its value is
-    --     changed and the object mutation can't be used or it is inefficient to
-    --     use it;
- 
-    --   - object mutation. Shared data object can be reused without memory
-    --     reallocation when all of the following requirements are meat:
-    --      - shared data object don't used anywhere longer;
-    --      - its size is sufficient to store new value;
-    --      - the gap after reuse is less than some threshold.
- 
-    --   - memory preallocation. Most of used memory allocation algorithms
-    --     aligns allocated segment on the some boundary, thus some amount of
-    --     additional memory can be preallocated without any impact. Such
-    --     preallocated memory can used later by Append/Insert operations
-    --     without reallocation.
- 
-    --  Reference counting uses GCC builtin atomic operations, which allows safe
-    --  sharing of internal data between Ada tasks. Nevertheless, this does not
-    --  make objects of Unbounded_String thread-safe: an instance cannot be
-    --  accessed by several tasks simultaneously.
- 
-    pragma Stream_Convert (Unbounded_Wide_String, To_Unbounded, To_Wide_String);
-    --  Provide stream routines without dragging in Ada.Streams
- 
-    pragma Finalize_Storage_Only (Unbounded_Wide_String);
-    --  Finalization is required only for freeing storage
- 
-    overriding procedure Initialize (Object : in out Unbounded_Wide_String);
-    overriding procedure Adjust     (Object : in out Unbounded_Wide_String);
-    overriding procedure Finalize   (Object : in out Unbounded_Wide_String);
- 
-    Null_Unbounded_Wide_String : constant Unbounded_Wide_String :=
-                                   (AF.Controlled with
-                                      Reference =>
-                                        Empty_Shared_Wide_String'Access);
- 
- end Ada.Strings.Wide_Unbounded;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-stwiun.adb gcc-8.1.0/gcc/ada/a-stwiun.adb
*** gcc-7.3.0/gcc/ada/a-stwiun.adb	Mon Oct  1 09:41:22 2012
--- gcc-8.1.0/gcc/ada/a-stwiun.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,1097 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --           A D A . S T R I N G S . W I D E _ U N B O U N D E D            --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2012, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Strings.Wide_Fixed;
- with Ada.Strings.Wide_Search;
- with Ada.Unchecked_Deallocation;
- 
- package body Ada.Strings.Wide_Unbounded is
- 
-    use Ada.Finalization;
- 
-    ---------
-    -- "&" --
-    ---------
- 
-    function "&"
-      (Left  : Unbounded_Wide_String;
-       Right : Unbounded_Wide_String) return Unbounded_Wide_String
-    is
-       L_Length : constant Natural := Left.Last;
-       R_Length : constant Natural := Right.Last;
-       Result   : Unbounded_Wide_String;
- 
-    begin
-       Result.Last := L_Length + R_Length;
- 
-       Result.Reference := new Wide_String (1 .. Result.Last);
- 
-       Result.Reference (1 .. L_Length) :=
-         Left.Reference (1 .. Left.Last);
-       Result.Reference (L_Length + 1 .. Result.Last) :=
-         Right.Reference (1 .. Right.Last);
- 
-       return Result;
-    end "&";
- 
-    function "&"
-      (Left  : Unbounded_Wide_String;
-       Right : Wide_String) return Unbounded_Wide_String
-    is
-       L_Length : constant Natural := Left.Last;
-       Result   : Unbounded_Wide_String;
- 
-    begin
-       Result.Last := L_Length + Right'Length;
- 
-       Result.Reference := new Wide_String (1 .. Result.Last);
- 
-       Result.Reference (1 .. L_Length) := Left.Reference (1 .. Left.Last);
-       Result.Reference (L_Length + 1 .. Result.Last) := Right;
- 
-       return Result;
-    end "&";
- 
-    function "&"
-      (Left  : Wide_String;
-       Right : Unbounded_Wide_String) return Unbounded_Wide_String
-    is
-       R_Length : constant Natural := Right.Last;
-       Result   : Unbounded_Wide_String;
- 
-    begin
-       Result.Last := Left'Length + R_Length;
- 
-       Result.Reference := new Wide_String (1 .. Result.Last);
- 
-       Result.Reference (1 .. Left'Length) := Left;
-       Result.Reference (Left'Length + 1 .. Result.Last) :=
-         Right.Reference (1 .. Right.Last);
- 
-       return Result;
-    end "&";
- 
-    function "&"
-      (Left  : Unbounded_Wide_String;
-       Right : Wide_Character) return Unbounded_Wide_String
-    is
-       Result : Unbounded_Wide_String;
- 
-    begin
-       Result.Last := Left.Last + 1;
- 
-       Result.Reference := new Wide_String (1 .. Result.Last);
- 
-       Result.Reference (1 .. Result.Last - 1) :=
-         Left.Reference (1 .. Left.Last);
-       Result.Reference (Result.Last) := Right;
- 
-       return Result;
-    end "&";
- 
-    function "&"
-      (Left  : Wide_Character;
-       Right : Unbounded_Wide_String) return Unbounded_Wide_String
-    is
-       Result : Unbounded_Wide_String;
- 
-    begin
-       Result.Last := Right.Last + 1;
- 
-       Result.Reference := new Wide_String (1 .. Result.Last);
-       Result.Reference (1) := Left;
-       Result.Reference (2 .. Result.Last) :=
-         Right.Reference (1 .. Right.Last);
-       return Result;
-    end "&";
- 
-    ---------
-    -- "*" --
-    ---------
- 
-    function "*"
-      (Left  : Natural;
-       Right : Wide_Character) return Unbounded_Wide_String
-    is
-       Result : Unbounded_Wide_String;
- 
-    begin
-       Result.Last   := Left;
- 
-       Result.Reference := new Wide_String (1 .. Left);
-       for J in Result.Reference'Range loop
-          Result.Reference (J) := Right;
-       end loop;
- 
-       return Result;
-    end "*";
- 
-    function "*"
-      (Left  : Natural;
-       Right : Wide_String) return Unbounded_Wide_String
-    is
-       Len    : constant Natural := Right'Length;
-       K      : Positive;
-       Result : Unbounded_Wide_String;
- 
-    begin
-       Result.Last := Left * Len;
- 
-       Result.Reference := new Wide_String (1 .. Result.Last);
- 
-       K := 1;
-       for J in 1 .. Left loop
-          Result.Reference (K .. K + Len - 1) := Right;
-          K := K + Len;
-       end loop;
- 
-       return Result;
-    end "*";
- 
-    function "*"
-      (Left  : Natural;
-       Right : Unbounded_Wide_String) return Unbounded_Wide_String
-    is
-       Len    : constant Natural := Right.Last;
-       K      : Positive;
-       Result : Unbounded_Wide_String;
- 
-    begin
-       Result.Last := Left * Len;
- 
-       Result.Reference := new Wide_String (1 .. Result.Last);
- 
-       K := 1;
-       for J in 1 .. Left loop
-          Result.Reference (K .. K + Len - 1) :=
-            Right.Reference (1 .. Right.Last);
-          K := K + Len;
-       end loop;
- 
-       return Result;
-    end "*";
- 
-    ---------
-    -- "<" --
-    ---------
- 
-    function "<"
-      (Left  : Unbounded_Wide_String;
-       Right : Unbounded_Wide_String) return Boolean
-    is
-    begin
-       return
-         Left.Reference (1 .. Left.Last) < Right.Reference (1 .. Right.Last);
-    end "<";
- 
-    function "<"
-      (Left  : Unbounded_Wide_String;
-       Right : Wide_String) return Boolean
-    is
-    begin
-       return Left.Reference (1 .. Left.Last) < Right;
-    end "<";
- 
-    function "<"
-      (Left  : Wide_String;
-       Right : Unbounded_Wide_String) return Boolean
-    is
-    begin
-       return Left < Right.Reference (1 .. Right.Last);
-    end "<";
- 
-    ----------
-    -- "<=" --
-    ----------
- 
-    function "<="
-      (Left  : Unbounded_Wide_String;
-       Right : Unbounded_Wide_String) return Boolean
-    is
-    begin
-       return
-         Left.Reference (1 .. Left.Last) <= Right.Reference (1 .. Right.Last);
-    end "<=";
- 
-    function "<="
-      (Left  : Unbounded_Wide_String;
-       Right : Wide_String) return Boolean
-    is
-    begin
-       return Left.Reference (1 .. Left.Last) <= Right;
-    end "<=";
- 
-    function "<="
-      (Left  : Wide_String;
-       Right : Unbounded_Wide_String) return Boolean
-    is
-    begin
-       return Left <= Right.Reference (1 .. Right.Last);
-    end "<=";
- 
-    ---------
-    -- "=" --
-    ---------
- 
-    function "="
-      (Left  : Unbounded_Wide_String;
-       Right : Unbounded_Wide_String) return Boolean
-    is
-    begin
-       return
-         Left.Reference (1 .. Left.Last) = Right.Reference (1 .. Right.Last);
-    end "=";
- 
-    function "="
-      (Left  : Unbounded_Wide_String;
-       Right : Wide_String) return Boolean
-    is
-    begin
-       return Left.Reference (1 .. Left.Last) = Right;
-    end "=";
- 
-    function "="
-      (Left  : Wide_String;
-       Right : Unbounded_Wide_String) return Boolean
-    is
-    begin
-       return Left = Right.Reference (1 .. Right.Last);
-    end "=";
- 
-    ---------
-    -- ">" --
-    ---------
- 
-    function ">"
-      (Left  : Unbounded_Wide_String;
-       Right : Unbounded_Wide_String) return Boolean
-    is
-    begin
-       return
-         Left.Reference (1 .. Left.Last) > Right.Reference (1 .. Right.Last);
-    end ">";
- 
-    function ">"
-      (Left  : Unbounded_Wide_String;
-       Right : Wide_String) return Boolean
-    is
-    begin
-       return Left.Reference (1 .. Left.Last) > Right;
-    end ">";
- 
-    function ">"
-      (Left  : Wide_String;
-       Right : Unbounded_Wide_String) return Boolean
-    is
-    begin
-       return Left > Right.Reference (1 .. Right.Last);
-    end ">";
- 
-    ----------
-    -- ">=" --
-    ----------
- 
-    function ">="
-      (Left  : Unbounded_Wide_String;
-       Right : Unbounded_Wide_String) return Boolean
-    is
-    begin
-       return
-         Left.Reference (1 .. Left.Last) >= Right.Reference (1 .. Right.Last);
-    end ">=";
- 
-    function ">="
-      (Left  : Unbounded_Wide_String;
-       Right : Wide_String) return Boolean
-    is
-    begin
-       return Left.Reference (1 .. Left.Last) >= Right;
-    end ">=";
- 
-    function ">="
-      (Left  : Wide_String;
-       Right : Unbounded_Wide_String) return Boolean
-    is
-    begin
-       return Left >= Right.Reference (1 .. Right.Last);
-    end ">=";
- 
-    ------------
-    -- Adjust --
-    ------------
- 
-    procedure Adjust (Object : in out Unbounded_Wide_String) is
-    begin
-       --  Copy string, except we do not copy the statically allocated null
-       --  string, since it can never be deallocated. Note that we do not copy
-       --  extra string room here to avoid dragging unused allocated memory.
- 
-       if Object.Reference /= Null_Wide_String'Access then
-          Object.Reference :=
-            new Wide_String'(Object.Reference (1 .. Object.Last));
-       end if;
-    end Adjust;
- 
-    ------------
-    -- Append --
-    ------------
- 
-    procedure Append
-      (Source   : in out Unbounded_Wide_String;
-       New_Item : Unbounded_Wide_String)
-    is
-    begin
-       Realloc_For_Chunk (Source, New_Item.Last);
-       Source.Reference (Source.Last + 1 .. Source.Last + New_Item.Last) :=
-         New_Item.Reference (1 .. New_Item.Last);
-       Source.Last := Source.Last + New_Item.Last;
-    end Append;
- 
-    procedure Append
-      (Source   : in out Unbounded_Wide_String;
-       New_Item : Wide_String)
-    is
-    begin
-       Realloc_For_Chunk (Source, New_Item'Length);
-       Source.Reference (Source.Last + 1 .. Source.Last + New_Item'Length) :=
-         New_Item;
-       Source.Last := Source.Last + New_Item'Length;
-    end Append;
- 
-    procedure Append
-      (Source   : in out Unbounded_Wide_String;
-       New_Item : Wide_Character)
-    is
-    begin
-       Realloc_For_Chunk (Source, 1);
-       Source.Reference (Source.Last + 1) := New_Item;
-       Source.Last := Source.Last + 1;
-    end Append;
- 
-    -----------
-    -- Count --
-    -----------
- 
-    function Count
-      (Source  : Unbounded_Wide_String;
-       Pattern : Wide_String;
-       Mapping : Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity)
-       return Natural
-    is
-    begin
-       return
-         Wide_Search.Count
-           (Source.Reference (1 .. Source.Last), Pattern, Mapping);
-    end Count;
- 
-    function Count
-      (Source  : Unbounded_Wide_String;
-       Pattern : Wide_String;
-       Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural
-    is
-    begin
-       return
-         Wide_Search.Count
-           (Source.Reference (1 .. Source.Last), Pattern, Mapping);
-    end Count;
- 
-    function Count
-      (Source : Unbounded_Wide_String;
-       Set    : Wide_Maps.Wide_Character_Set) return Natural
-    is
-    begin
-       return
-         Wide_Search.Count
-         (Source.Reference (1 .. Source.Last), Set);
-    end Count;
- 
-    ------------
-    -- Delete --
-    ------------
- 
-    function Delete
-      (Source  : Unbounded_Wide_String;
-       From    : Positive;
-       Through : Natural) return Unbounded_Wide_String
-    is
-    begin
-       return
-         To_Unbounded_Wide_String
-           (Wide_Fixed.Delete
-              (Source.Reference (1 .. Source.Last), From, Through));
-    end Delete;
- 
-    procedure Delete
-      (Source  : in out Unbounded_Wide_String;
-       From    : Positive;
-       Through : Natural)
-    is
-    begin
-       if From > Through then
-          null;
- 
-       elsif From < Source.Reference'First or else Through > Source.Last then
-          raise Index_Error;
- 
-       else
-          declare
-             Len : constant Natural := Through - From + 1;
- 
-          begin
-             Source.Reference (From .. Source.Last - Len) :=
-               Source.Reference (Through + 1 .. Source.Last);
-             Source.Last := Source.Last - Len;
-          end;
-       end if;
-    end Delete;
- 
-    -------------
-    -- Element --
-    -------------
- 
-    function Element
-      (Source : Unbounded_Wide_String;
-       Index  : Positive) return Wide_Character
-    is
-    begin
-       if Index <= Source.Last then
-          return Source.Reference (Index);
-       else
-          raise Strings.Index_Error;
-       end if;
-    end Element;
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    procedure Finalize (Object : in out Unbounded_Wide_String) is
-       procedure Deallocate is
-          new Ada.Unchecked_Deallocation (Wide_String, Wide_String_Access);
- 
-    begin
-       --  Note: Don't try to free statically allocated null string
- 
-       if Object.Reference /= Null_Wide_String'Access then
-          Deallocate (Object.Reference);
-          Object.Reference := Null_Unbounded_Wide_String.Reference;
-          Object.Last := 0;
-       end if;
-    end Finalize;
- 
-    ----------------
-    -- Find_Token --
-    ----------------
- 
-    procedure Find_Token
-      (Source : Unbounded_Wide_String;
-       Set    : Wide_Maps.Wide_Character_Set;
-       From   : Positive;
-       Test   : Strings.Membership;
-       First  : out Positive;
-       Last   : out Natural)
-    is
-    begin
-       Wide_Search.Find_Token
-         (Source.Reference (From .. Source.Last), Set, Test, First, Last);
-    end Find_Token;
- 
-    procedure Find_Token
-      (Source : Unbounded_Wide_String;
-       Set    : Wide_Maps.Wide_Character_Set;
-       Test   : Strings.Membership;
-       First  : out Positive;
-       Last   : out Natural)
-    is
-    begin
-       Wide_Search.Find_Token
-         (Source.Reference (1 .. Source.Last), Set, Test, First, Last);
-    end Find_Token;
- 
-    ----------
-    -- Free --
-    ----------
- 
-    procedure Free (X : in out Wide_String_Access) is
-       procedure Deallocate is
-          new Ada.Unchecked_Deallocation (Wide_String, Wide_String_Access);
- 
-    begin
-       --  Note: Do not try to free statically allocated null string
- 
-       if X /= Null_Unbounded_Wide_String.Reference then
-          Deallocate (X);
-       end if;
-    end Free;
- 
-    ----------
-    -- Head --
-    ----------
- 
-    function Head
-      (Source : Unbounded_Wide_String;
-       Count  : Natural;
-       Pad    : Wide_Character := Wide_Space) return Unbounded_Wide_String
-    is
-    begin
-       return To_Unbounded_Wide_String
-         (Wide_Fixed.Head (Source.Reference (1 .. Source.Last), Count, Pad));
-    end Head;
- 
-    procedure Head
-      (Source : in out Unbounded_Wide_String;
-       Count  : Natural;
-       Pad    : Wide_Character := Wide_Space)
-    is
-       Old : Wide_String_Access := Source.Reference;
-    begin
-       Source.Reference :=
-         new Wide_String'
-           (Wide_Fixed.Head (Source.Reference (1 .. Source.Last), Count, Pad));
-       Source.Last := Source.Reference'Length;
-       Free (Old);
-    end Head;
- 
-    -----------
-    -- Index --
-    -----------
- 
-    function Index
-      (Source  : Unbounded_Wide_String;
-       Pattern : Wide_String;
-       Going   : Strings.Direction := Strings.Forward;
-       Mapping : Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity)
-       return Natural
-    is
-    begin
-       return
-         Wide_Search.Index
-           (Source.Reference (1 .. Source.Last), Pattern, Going, Mapping);
-    end Index;
- 
-    function Index
-      (Source  : Unbounded_Wide_String;
-       Pattern : Wide_String;
-       Going   : Direction := Forward;
-       Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural
-    is
-    begin
-       return
-         Wide_Search.Index
-           (Source.Reference (1 .. Source.Last), Pattern, Going, Mapping);
-    end Index;
- 
-    function Index
-      (Source : Unbounded_Wide_String;
-       Set    : Wide_Maps.Wide_Character_Set;
-       Test   : Strings.Membership := Strings.Inside;
-       Going  : Strings.Direction  := Strings.Forward) return Natural
-    is
-    begin
-       return Wide_Search.Index
-         (Source.Reference (1 .. Source.Last), Set, Test, Going);
-    end Index;
- 
-    function Index
-      (Source  : Unbounded_Wide_String;
-       Pattern : Wide_String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity)
-       return Natural
-    is
-    begin
-       return
-         Wide_Search.Index
-           (Source.Reference (1 .. Source.Last), Pattern, From, Going, Mapping);
-    end Index;
- 
-    function Index
-      (Source  : Unbounded_Wide_String;
-       Pattern : Wide_String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural
-    is
-    begin
-       return
-         Wide_Search.Index
-           (Source.Reference (1 .. Source.Last), Pattern, From, Going, Mapping);
-    end Index;
- 
-    function Index
-      (Source  : Unbounded_Wide_String;
-       Set     : Wide_Maps.Wide_Character_Set;
-       From    : Positive;
-       Test    : Membership := Inside;
-       Going   : Direction := Forward) return Natural
-    is
-    begin
-       return
-         Wide_Search.Index
-           (Source.Reference (1 .. Source.Last), Set, From, Test, Going);
-    end Index;
- 
-    function Index_Non_Blank
-      (Source : Unbounded_Wide_String;
-       Going  : Strings.Direction := Strings.Forward) return Natural
-    is
-    begin
-       return
-         Wide_Search.Index_Non_Blank
-           (Source.Reference (1 .. Source.Last), Going);
-    end Index_Non_Blank;
- 
-    function Index_Non_Blank
-      (Source : Unbounded_Wide_String;
-       From   : Positive;
-       Going  : Direction := Forward) return Natural
-    is
-    begin
-       return
-         Wide_Search.Index_Non_Blank
-           (Source.Reference (1 .. Source.Last), From, Going);
-    end Index_Non_Blank;
- 
-    ----------------
-    -- Initialize --
-    ----------------
- 
-    procedure Initialize (Object : in out Unbounded_Wide_String) is
-    begin
-       Object.Reference := Null_Unbounded_Wide_String.Reference;
-       Object.Last      := 0;
-    end Initialize;
- 
-    ------------
-    -- Insert --
-    ------------
- 
-    function Insert
-      (Source   : Unbounded_Wide_String;
-       Before   : Positive;
-       New_Item : Wide_String) return Unbounded_Wide_String
-    is
-    begin
-       return
-         To_Unbounded_Wide_String
-           (Wide_Fixed.Insert
-              (Source.Reference (1 .. Source.Last), Before, New_Item));
-    end Insert;
- 
-    procedure Insert
-      (Source   : in out Unbounded_Wide_String;
-       Before   : Positive;
-       New_Item : Wide_String)
-    is
-    begin
-       if Before not in Source.Reference'First .. Source.Last + 1 then
-          raise Index_Error;
-       end if;
- 
-       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;
-       Source.Last := Source.Last + New_Item'Length;
-    end Insert;
- 
-    ------------
-    -- Length --
-    ------------
- 
-    function Length (Source : Unbounded_Wide_String) return Natural is
-    begin
-       return Source.Last;
-    end Length;
- 
-    ---------------
-    -- Overwrite --
-    ---------------
- 
-    function Overwrite
-      (Source   : Unbounded_Wide_String;
-       Position : Positive;
-       New_Item : Wide_String) return Unbounded_Wide_String
-    is
-    begin
-       return
-         To_Unbounded_Wide_String
-           (Wide_Fixed.Overwrite
-             (Source.Reference (1 .. Source.Last), Position, New_Item));
-    end Overwrite;
- 
-    procedure Overwrite
-      (Source    : in out Unbounded_Wide_String;
-       Position  : Positive;
-       New_Item  : Wide_String)
-    is
-       NL : constant Natural := New_Item'Length;
-    begin
-       if Position <= Source.Last - NL + 1 then
-          Source.Reference (Position .. Position + NL - 1) := New_Item;
-       else
-          declare
-             Old : Wide_String_Access := Source.Reference;
-          begin
-             Source.Reference := new Wide_String'
-               (Wide_Fixed.Overwrite
-                 (Source.Reference (1 .. Source.Last), Position, New_Item));
-             Source.Last := Source.Reference'Length;
-             Free (Old);
-          end;
-       end if;
-    end Overwrite;
- 
-    -----------------------
-    -- Realloc_For_Chunk --
-    -----------------------
- 
-    procedure Realloc_For_Chunk
-      (Source     : in out Unbounded_Wide_String;
-       Chunk_Size : Natural)
-    is
-       Growth_Factor : constant := 32;
-       --  The growth factor controls how much extra space is allocated when
-       --  we have to increase the size of an allocated unbounded string. By
-       --  allocating extra space, we avoid the need to reallocate on every
-       --  append, particularly important when a string is built up by repeated
-       --  append operations of small pieces. This is expressed as a factor so
-       --  32 means add 1/32 of the length of the string as growth space.
- 
-       Min_Mul_Alloc : constant := Standard'Maximum_Alignment;
-       --  Allocation will be done by a multiple of Min_Mul_Alloc This causes
-       --  no memory loss as most (all?) malloc implementations are obliged to
-       --  align the returned memory on the maximum alignment as malloc does not
-       --  know the target alignment.
- 
-       S_Length : constant Natural := Source.Reference'Length;
- 
-    begin
-       if Chunk_Size > S_Length - Source.Last then
-          declare
-             New_Size : constant Positive :=
-               S_Length + Chunk_Size + (S_Length / Growth_Factor);
- 
-             New_Rounded_Up_Size : constant Positive :=
-               ((New_Size - 1) / Min_Mul_Alloc + 1) * Min_Mul_Alloc;
- 
-             Tmp : constant Wide_String_Access :=
-               new Wide_String (1 .. New_Rounded_Up_Size);
- 
-          begin
-             Tmp (1 .. Source.Last) := Source.Reference (1 .. Source.Last);
-             Free (Source.Reference);
-             Source.Reference := Tmp;
-          end;
-       end if;
-    end Realloc_For_Chunk;
- 
-    ---------------------
-    -- Replace_Element --
-    ---------------------
- 
-    procedure Replace_Element
-      (Source : in out Unbounded_Wide_String;
-       Index  : Positive;
-       By     : Wide_Character)
-    is
-    begin
-       if Index <= Source.Last then
-          Source.Reference (Index) := By;
-       else
-          raise Strings.Index_Error;
-       end if;
-    end Replace_Element;
- 
-    -------------------
-    -- Replace_Slice --
-    -------------------
- 
-    function Replace_Slice
-      (Source : Unbounded_Wide_String;
-       Low    : Positive;
-       High   : Natural;
-       By     : Wide_String) return Unbounded_Wide_String
-    is
-    begin
-       return To_Unbounded_Wide_String
-         (Wide_Fixed.Replace_Slice
-            (Source.Reference (1 .. Source.Last), Low, High, By));
-    end Replace_Slice;
- 
-    procedure Replace_Slice
-      (Source : in out Unbounded_Wide_String;
-       Low    : Positive;
-       High   : Natural;
-       By     : Wide_String)
-    is
-       Old : Wide_String_Access := Source.Reference;
-    begin
-       Source.Reference := new Wide_String'
-         (Wide_Fixed.Replace_Slice
-            (Source.Reference (1 .. Source.Last), Low, High, By));
-       Source.Last := Source.Reference'Length;
-       Free (Old);
-    end Replace_Slice;
- 
-    -------------------------------
-    -- Set_Unbounded_Wide_String --
-    -------------------------------
- 
-    procedure Set_Unbounded_Wide_String
-      (Target : out Unbounded_Wide_String;
-       Source : Wide_String)
-    is
-    begin
-       Target.Last          := Source'Length;
-       Target.Reference     := new Wide_String (1 .. Source'Length);
-       Target.Reference.all := Source;
-    end Set_Unbounded_Wide_String;
- 
-    -----------
-    -- Slice --
-    -----------
- 
-    function Slice
-      (Source : Unbounded_Wide_String;
-       Low    : Positive;
-       High   : Natural) return Wide_String
-    is
-    begin
-       --  Note: test of High > Length is in accordance with AI95-00128
- 
-       if Low > Source.Last + 1 or else High > Source.Last then
-          raise Index_Error;
-       else
-          return Source.Reference (Low .. High);
-       end if;
-    end Slice;
- 
-    ----------
-    -- Tail --
-    ----------
- 
-    function Tail
-      (Source : Unbounded_Wide_String;
-       Count  : Natural;
-       Pad    : Wide_Character := Wide_Space) return Unbounded_Wide_String is
-    begin
-       return To_Unbounded_Wide_String
-         (Wide_Fixed.Tail (Source.Reference (1 .. Source.Last), Count, Pad));
-    end Tail;
- 
-    procedure Tail
-      (Source : in out Unbounded_Wide_String;
-       Count  : Natural;
-       Pad    : Wide_Character := Wide_Space)
-    is
-       Old : Wide_String_Access := Source.Reference;
-    begin
-       Source.Reference := new Wide_String'
-         (Wide_Fixed.Tail (Source.Reference (1 .. Source.Last), Count, Pad));
-       Source.Last := Source.Reference'Length;
-       Free (Old);
-    end Tail;
- 
-    ------------------------------
-    -- To_Unbounded_Wide_String --
-    ------------------------------
- 
-    function To_Unbounded_Wide_String
-      (Source : Wide_String)
-       return Unbounded_Wide_String
-    is
-       Result : Unbounded_Wide_String;
-    begin
-       Result.Last          := Source'Length;
-       Result.Reference     := new Wide_String (1 .. Source'Length);
-       Result.Reference.all := Source;
-       return Result;
-    end To_Unbounded_Wide_String;
- 
-    function To_Unbounded_Wide_String
-      (Length : Natural) return Unbounded_Wide_String
-    is
-       Result : Unbounded_Wide_String;
-    begin
-       Result.Last      := Length;
-       Result.Reference := new Wide_String (1 .. Length);
-       return Result;
-    end To_Unbounded_Wide_String;
- 
-    -------------------
-    -- To_Wide_String --
-    --------------------
- 
-    function To_Wide_String
-      (Source : Unbounded_Wide_String)
-       return Wide_String
-    is
-    begin
-       return Source.Reference (1 .. Source.Last);
-    end To_Wide_String;
- 
-    ---------------
-    -- Translate --
-    ---------------
- 
-    function Translate
-      (Source  : Unbounded_Wide_String;
-       Mapping : Wide_Maps.Wide_Character_Mapping)
-       return Unbounded_Wide_String
-    is
-    begin
-       return
-         To_Unbounded_Wide_String
-           (Wide_Fixed.Translate
-              (Source.Reference (1 .. Source.Last), Mapping));
-    end Translate;
- 
-    procedure Translate
-      (Source  : in out Unbounded_Wide_String;
-       Mapping : Wide_Maps.Wide_Character_Mapping)
-    is
-    begin
-       Wide_Fixed.Translate (Source.Reference (1 .. Source.Last), Mapping);
-    end Translate;
- 
-    function Translate
-      (Source  : Unbounded_Wide_String;
-       Mapping : Wide_Maps.Wide_Character_Mapping_Function)
-       return Unbounded_Wide_String
-    is
-    begin
-       return
-         To_Unbounded_Wide_String
-           (Wide_Fixed.Translate
-             (Source.Reference (1 .. Source.Last), Mapping));
-    end Translate;
- 
-    procedure Translate
-      (Source  : in out Unbounded_Wide_String;
-       Mapping : Wide_Maps.Wide_Character_Mapping_Function)
-    is
-    begin
-       Wide_Fixed.Translate (Source.Reference (1 .. Source.Last), Mapping);
-    end Translate;
- 
-    ----------
-    -- Trim --
-    ----------
- 
-    function Trim
-      (Source : Unbounded_Wide_String;
-       Side   : Trim_End) return Unbounded_Wide_String
-    is
-    begin
-       return
-         To_Unbounded_Wide_String
-           (Wide_Fixed.Trim (Source.Reference (1 .. Source.Last), Side));
-    end Trim;
- 
-    procedure Trim
-      (Source : in out Unbounded_Wide_String;
-       Side   : Trim_End)
-    is
-       Old : Wide_String_Access := Source.Reference;
-    begin
-       Source.Reference :=
-         new Wide_String'
-           (Wide_Fixed.Trim (Source.Reference (1 .. Source.Last), Side));
-       Source.Last      := Source.Reference'Length;
-       Free (Old);
-    end Trim;
- 
-    function Trim
-      (Source : Unbounded_Wide_String;
-       Left   : Wide_Maps.Wide_Character_Set;
-       Right  : Wide_Maps.Wide_Character_Set)
-       return Unbounded_Wide_String
-    is
-    begin
-       return
-         To_Unbounded_Wide_String
-           (Wide_Fixed.Trim
-              (Source.Reference (1 .. Source.Last), Left, Right));
-    end Trim;
- 
-    procedure Trim
-      (Source : in out Unbounded_Wide_String;
-       Left   : Wide_Maps.Wide_Character_Set;
-       Right  : Wide_Maps.Wide_Character_Set)
-    is
-       Old : Wide_String_Access := Source.Reference;
-    begin
-       Source.Reference :=
-         new Wide_String'
-           (Wide_Fixed.Trim
-              (Source.Reference (1 .. Source.Last), Left, Right));
-       Source.Last      := Source.Reference'Length;
-       Free (Old);
-    end Trim;
- 
-    ---------------------
-    -- Unbounded_Slice --
-    ---------------------
- 
-    function Unbounded_Slice
-      (Source : Unbounded_Wide_String;
-       Low    : Positive;
-       High   : Natural) return Unbounded_Wide_String
-    is
-    begin
-       if Low > Source.Last + 1 or else High > Source.Last then
-          raise Index_Error;
-       else
-          return To_Unbounded_Wide_String (Source.Reference.all (Low .. High));
-       end if;
-    end Unbounded_Slice;
- 
-    procedure Unbounded_Slice
-      (Source : Unbounded_Wide_String;
-       Target : out Unbounded_Wide_String;
-       Low    : Positive;
-       High   : Natural)
-    is
-    begin
-       if Low > Source.Last + 1 or else High > Source.Last then
-          raise Index_Error;
-       else
-          Target :=
-            To_Unbounded_Wide_String (Source.Reference.all (Low .. High));
-       end if;
-    end Unbounded_Slice;
- 
- end Ada.Strings.Wide_Unbounded;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-stwiun.ads gcc-8.1.0/gcc/ada/a-stwiun.ads
*** gcc-7.3.0/gcc/ada/a-stwiun.ads	Fri Oct  8 13:02:55 2010
--- gcc-8.1.0/gcc/ada/a-stwiun.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,443 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --           A D A . S T R I N G S . W I D E _ U N B O U N D E D            --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2010, Free Software Foundation, 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Strings.Wide_Maps;
- with Ada.Finalization;
- 
- package Ada.Strings.Wide_Unbounded is
-    pragma Preelaborate;
- 
-    type Unbounded_Wide_String is private;
-    pragma Preelaborable_Initialization (Unbounded_Wide_String);
- 
-    Null_Unbounded_Wide_String : constant Unbounded_Wide_String;
- 
-    function Length (Source : Unbounded_Wide_String) return Natural;
- 
-    type Wide_String_Access is access all Wide_String;
- 
-    procedure Free (X : in out Wide_String_Access);
- 
-    --------------------------------------------------------
-    -- Conversion, Concatenation, and Selection Functions --
-    --------------------------------------------------------
- 
-    function To_Unbounded_Wide_String
-      (Source : Wide_String) return Unbounded_Wide_String;
- 
-    function To_Unbounded_Wide_String
-      (Length : Natural) return Unbounded_Wide_String;
- 
-    function To_Wide_String
-      (Source : Unbounded_Wide_String)
-       return Wide_String;
- 
-    procedure Set_Unbounded_Wide_String
-      (Target : out Unbounded_Wide_String;
-       Source : Wide_String);
-    pragma Ada_05 (Set_Unbounded_Wide_String);
- 
-    procedure Append
-      (Source   : in out Unbounded_Wide_String;
-       New_Item : Unbounded_Wide_String);
- 
-    procedure Append
-      (Source   : in out Unbounded_Wide_String;
-       New_Item : Wide_String);
- 
-    procedure Append
-      (Source   : in out Unbounded_Wide_String;
-       New_Item : Wide_Character);
- 
-    function "&"
-      (Left  : Unbounded_Wide_String;
-       Right : Unbounded_Wide_String) return Unbounded_Wide_String;
- 
-    function "&"
-      (Left  : Unbounded_Wide_String;
-       Right : Wide_String) return Unbounded_Wide_String;
- 
-    function "&"
-      (Left  : Wide_String;
-       Right : Unbounded_Wide_String) return Unbounded_Wide_String;
- 
-    function "&"
-      (Left  : Unbounded_Wide_String;
-       Right : Wide_Character) return Unbounded_Wide_String;
- 
-    function "&"
-      (Left  : Wide_Character;
-       Right : Unbounded_Wide_String) return Unbounded_Wide_String;
- 
-    function Element
-      (Source : Unbounded_Wide_String;
-       Index  : Positive) return Wide_Character;
- 
-    procedure Replace_Element
-      (Source : in out Unbounded_Wide_String;
-       Index  : Positive;
-       By     : Wide_Character);
- 
-    function Slice
-      (Source : Unbounded_Wide_String;
-       Low    : Positive;
-       High   : Natural) return Wide_String;
- 
-    function Unbounded_Slice
-      (Source : Unbounded_Wide_String;
-       Low    : Positive;
-       High   : Natural) return Unbounded_Wide_String;
-    pragma Ada_05 (Unbounded_Slice);
- 
-    procedure Unbounded_Slice
-      (Source : Unbounded_Wide_String;
-       Target : out Unbounded_Wide_String;
-       Low    : Positive;
-       High   : Natural);
-    pragma Ada_05 (Unbounded_Slice);
- 
-    function "="
-      (Left  : Unbounded_Wide_String;
-       Right : Unbounded_Wide_String) return Boolean;
- 
-    function "="
-      (Left  : Unbounded_Wide_String;
-       Right : Wide_String) return Boolean;
- 
-    function "="
-      (Left  : Wide_String;
-       Right : Unbounded_Wide_String) return Boolean;
- 
-    function "<"
-      (Left  : Unbounded_Wide_String;
-       Right : Unbounded_Wide_String) return Boolean;
- 
-    function "<"
-      (Left  : Unbounded_Wide_String;
-       Right : Wide_String) return Boolean;
- 
-    function "<"
-      (Left  : Wide_String;
-       Right : Unbounded_Wide_String) return Boolean;
- 
-    function "<="
-      (Left  : Unbounded_Wide_String;
-       Right : Unbounded_Wide_String) return Boolean;
- 
-    function "<="
-      (Left  : Unbounded_Wide_String;
-       Right : Wide_String) return Boolean;
- 
-    function "<="
-      (Left  : Wide_String;
-       Right : Unbounded_Wide_String) return Boolean;
- 
-    function ">"
-      (Left  : Unbounded_Wide_String;
-       Right : Unbounded_Wide_String) return Boolean;
- 
-    function ">"
-      (Left  : Unbounded_Wide_String;
-       Right : Wide_String) return Boolean;
- 
-    function ">"
-      (Left  : Wide_String;
-       Right : Unbounded_Wide_String) return Boolean;
- 
-    function ">="
-      (Left  : Unbounded_Wide_String;
-       Right : Unbounded_Wide_String) return Boolean;
- 
-    function ">="
-      (Left  : Unbounded_Wide_String;
-       Right : Wide_String) return Boolean;
- 
-    function ">="
-      (Left  : Wide_String;
-       Right : Unbounded_Wide_String) return Boolean;
- 
-    ------------------------
-    -- Search Subprograms --
-    ------------------------
- 
-    function Index
-      (Source  : Unbounded_Wide_String;
-       Pattern : Wide_String;
-       Going   : Direction := Forward;
-       Mapping : Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity)
-       return Natural;
- 
-    function Index
-      (Source  : Unbounded_Wide_String;
-       Pattern : Wide_String;
-       Going   : Direction := Forward;
-       Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural;
- 
-    function Index
-      (Source : Unbounded_Wide_String;
-       Set    : Wide_Maps.Wide_Character_Set;
-       Test   : Membership := Inside;
-       Going  : Direction  := Forward) return Natural;
- 
-    function Index
-      (Source  : Unbounded_Wide_String;
-       Pattern : Wide_String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity)
-       return Natural;
-    pragma Ada_05 (Index);
- 
-    function Index
-      (Source  : Unbounded_Wide_String;
-       Pattern : Wide_String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural;
-    pragma Ada_05 (Index);
- 
-    function Index
-      (Source  : Unbounded_Wide_String;
-       Set     : Wide_Maps.Wide_Character_Set;
-       From    : Positive;
-       Test    : Membership := Inside;
-       Going   : Direction := Forward) return Natural;
-    pragma Ada_05 (Index);
- 
-    function Index_Non_Blank
-      (Source : Unbounded_Wide_String;
-       Going  : Direction := Forward) return Natural;
- 
-    function Index_Non_Blank
-      (Source : Unbounded_Wide_String;
-       From   : Positive;
-       Going  : Direction := Forward) return Natural;
-    pragma Ada_05 (Index_Non_Blank);
- 
-    function Count
-      (Source  : Unbounded_Wide_String;
-       Pattern : Wide_String;
-       Mapping : Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity)
-       return Natural;
- 
-    function Count
-      (Source  : Unbounded_Wide_String;
-       Pattern : Wide_String;
-       Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural;
- 
-    function Count
-      (Source : Unbounded_Wide_String;
-       Set    : Wide_Maps.Wide_Character_Set) return Natural;
- 
-    procedure Find_Token
-      (Source : Unbounded_Wide_String;
-       Set    : Wide_Maps.Wide_Character_Set;
-       From   : Positive;
-       Test   : Membership;
-       First  : out Positive;
-       Last   : out Natural);
-    pragma Ada_2012 (Find_Token);
- 
-    procedure Find_Token
-      (Source : Unbounded_Wide_String;
-       Set    : Wide_Maps.Wide_Character_Set;
-       Test   : Membership;
-       First  : out Positive;
-       Last   : out Natural);
- 
-    ------------------------------------
-    -- String Translation Subprograms --
-    ------------------------------------
- 
-    function Translate
-      (Source  : Unbounded_Wide_String;
-       Mapping : Wide_Maps.Wide_Character_Mapping)
-       return Unbounded_Wide_String;
- 
-    procedure Translate
-      (Source  : in out Unbounded_Wide_String;
-       Mapping : Wide_Maps.Wide_Character_Mapping);
- 
-    function Translate
-      (Source  : Unbounded_Wide_String;
-       Mapping : Wide_Maps.Wide_Character_Mapping_Function)
-       return Unbounded_Wide_String;
- 
-    procedure Translate
-      (Source  : in out Unbounded_Wide_String;
-       Mapping : Wide_Maps.Wide_Character_Mapping_Function);
- 
-    ---------------------------------------
-    -- String Transformation Subprograms --
-    ---------------------------------------
- 
-    function Replace_Slice
-      (Source : Unbounded_Wide_String;
-       Low    : Positive;
-       High   : Natural;
-       By     : Wide_String) return Unbounded_Wide_String;
- 
-    procedure Replace_Slice
-      (Source : in out Unbounded_Wide_String;
-       Low    : Positive;
-       High   : Natural;
-       By     : Wide_String);
- 
-    function Insert
-      (Source   : Unbounded_Wide_String;
-       Before   : Positive;
-       New_Item : Wide_String) return Unbounded_Wide_String;
- 
-    procedure Insert
-      (Source   : in out Unbounded_Wide_String;
-       Before   : Positive;
-       New_Item : Wide_String);
- 
-    function Overwrite
-      (Source   : Unbounded_Wide_String;
-       Position : Positive;
-       New_Item : Wide_String) return Unbounded_Wide_String;
- 
-    procedure Overwrite
-      (Source   : in out Unbounded_Wide_String;
-       Position : Positive;
-       New_Item : Wide_String);
- 
-    function Delete
-      (Source  : Unbounded_Wide_String;
-       From    : Positive;
-       Through : Natural) return Unbounded_Wide_String;
- 
-    procedure Delete
-      (Source  : in out Unbounded_Wide_String;
-       From    : Positive;
-       Through : Natural);
- 
-    function Trim
-      (Source : Unbounded_Wide_String;
-       Side   : Trim_End) return Unbounded_Wide_String;
- 
-    procedure Trim
-      (Source : in out Unbounded_Wide_String;
-       Side   : Trim_End);
- 
-    function Trim
-      (Source : Unbounded_Wide_String;
-       Left   : Wide_Maps.Wide_Character_Set;
-       Right  : Wide_Maps.Wide_Character_Set) return Unbounded_Wide_String;
- 
-    procedure Trim
-      (Source : in out Unbounded_Wide_String;
-       Left   : Wide_Maps.Wide_Character_Set;
-       Right  : Wide_Maps.Wide_Character_Set);
- 
-    function Head
-      (Source : Unbounded_Wide_String;
-       Count  : Natural;
-       Pad    : Wide_Character := Wide_Space) return Unbounded_Wide_String;
- 
-    procedure Head
-      (Source : in out Unbounded_Wide_String;
-       Count  : Natural;
-       Pad    : Wide_Character := Wide_Space);
- 
-    function Tail
-      (Source : Unbounded_Wide_String;
-       Count  : Natural;
-       Pad    : Wide_Character := Wide_Space) return Unbounded_Wide_String;
- 
-    procedure Tail
-      (Source : in out Unbounded_Wide_String;
-       Count  : Natural;
-       Pad    : Wide_Character := Wide_Space);
- 
-    function "*"
-      (Left  : Natural;
-       Right : Wide_Character) return Unbounded_Wide_String;
- 
-    function "*"
-      (Left  : Natural;
-       Right : Wide_String) return Unbounded_Wide_String;
- 
-    function "*"
-      (Left  : Natural;
-       Right : Unbounded_Wide_String) return Unbounded_Wide_String;
- 
- private
-    pragma Inline (Length);
- 
-    package AF renames Ada.Finalization;
- 
-    Null_Wide_String : aliased Wide_String := "";
- 
-    function To_Unbounded_Wide (S : Wide_String) return Unbounded_Wide_String
-      renames To_Unbounded_Wide_String;
- 
-    type Unbounded_Wide_String is new AF.Controlled with record
-       Reference : Wide_String_Access := Null_Wide_String'Access;
-       Last      : Natural            := 0;
-    end record;
- 
-    --  The Unbounded_Wide_String is using a buffered implementation to increase
-    --  speed of the Append/Delete/Insert procedures. The Reference string
-    --  pointer above contains the current string value and extra room at the
-    --  end to be used by the next Append routine. Last is the index of the
-    --  string ending character. So the current string value is really
-    --  Reference (1 .. Last).
- 
-    pragma Stream_Convert
-      (Unbounded_Wide_String, To_Unbounded_Wide, To_Wide_String);
- 
-    pragma Finalize_Storage_Only (Unbounded_Wide_String);
-    --  Finalization is required only for freeing storage
- 
-    procedure Initialize (Object : in out Unbounded_Wide_String);
-    procedure Adjust     (Object : in out Unbounded_Wide_String);
-    procedure Finalize   (Object : in out Unbounded_Wide_String);
- 
-    procedure Realloc_For_Chunk
-      (Source     : in out Unbounded_Wide_String;
-       Chunk_Size : Natural);
-    --  Adjust the size allocated for the string. Add at least Chunk_Size so it
-    --  is safe to add a string of this size at the end of the current content.
-    --  The real size allocated for the string is Chunk_Size + x of the current
-    --  string size. This buffered handling makes the Append unbounded string
-    --  routines very fast.
- 
-    Null_Unbounded_Wide_String : constant Unbounded_Wide_String :=
-                                   (AF.Controlled with
-                                      Reference => Null_Wide_String'Access,
-                                      Last => 0);
- end Ada.Strings.Wide_Unbounded;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-stzbou.adb gcc-8.1.0/gcc/ada/a-stzbou.adb
*** gcc-7.3.0/gcc/ada/a-stzbou.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-stzbou.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,94 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --        A D A . S T R I N G S . W I D E _ W I D E _ B O U N D E D         --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          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- --
- -- 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 Ada.Strings.Wide_Wide_Bounded is
- 
-    package body Generic_Bounded_Length is
- 
-       ---------
-       -- "*" --
-       ---------
- 
-       function "*"
-         (Left  : Natural;
-          Right : Wide_Wide_Character) return Bounded_Wide_Wide_String
-       is
-       begin
-          return Times (Left, Right, Max_Length);
-       end "*";
- 
-       function "*"
-         (Left  : Natural;
-          Right : Wide_Wide_String) return Bounded_Wide_Wide_String
-       is
-       begin
-          return Times (Left, Right, Max_Length);
-       end "*";
- 
-       ---------------
-       -- Replicate --
-       ---------------
- 
-       function Replicate
-         (Count : Natural;
-          Item  : Wide_Wide_Character;
-          Drop  : Strings.Truncation := Strings.Error)
-          return Bounded_Wide_Wide_String
-       is
-       begin
-          return Super_Replicate (Count, Item, Drop, Max_Length);
-       end Replicate;
- 
-       function Replicate
-         (Count : Natural;
-          Item  : Wide_Wide_String;
-          Drop  : Strings.Truncation := Strings.Error)
-          return Bounded_Wide_Wide_String
-       is
-       begin
-          return Super_Replicate (Count, Item, Drop, Max_Length);
-       end Replicate;
- 
-       ---------------------------------
-       -- To_Bounded_Wide_Wide_String --
-       ---------------------------------
- 
-       function To_Bounded_Wide_Wide_String
-         (Source : Wide_Wide_String;
-          Drop   : Strings.Truncation := Strings.Error)
-          return Bounded_Wide_Wide_String
-       is
-       begin
-          return To_Super_String (Source, Max_Length, Drop);
-       end To_Bounded_Wide_Wide_String;
- 
-    end Generic_Bounded_Length;
- end Ada.Strings.Wide_Wide_Bounded;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-stzbou.ads gcc-8.1.0/gcc/ada/a-stzbou.ads
*** gcc-7.3.0/gcc/ada/a-stzbou.ads	Wed Apr 20 10:10:32 2016
--- gcc-8.1.0/gcc/ada/a-stzbou.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,937 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --        A D A . S T R I N G S . W I D E _ W I D E _ B O U N D E D         --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2015, Free Software Foundation, 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Strings.Wide_Wide_Maps;
- with Ada.Strings.Wide_Wide_Superbounded;
- 
- package Ada.Strings.Wide_Wide_Bounded is
-    pragma Preelaborate;
- 
-    generic
-       Max : Positive;
-       --  Maximum length of a Bounded_Wide_Wide_String
- 
-    package Generic_Bounded_Length is
- 
-       Max_Length : constant Positive := Max;
- 
-       type Bounded_Wide_Wide_String is private;
-       pragma Preelaborable_Initialization (Bounded_Wide_Wide_String);
- 
-       Null_Bounded_Wide_Wide_String : constant Bounded_Wide_Wide_String;
- 
-       subtype Length_Range is Natural range 0 .. Max_Length;
- 
-       function Length (Source : Bounded_Wide_Wide_String) return Length_Range;
- 
-       --------------------------------------------------------
-       -- Conversion, Concatenation, and Selection Functions --
-       --------------------------------------------------------
- 
-       function To_Bounded_Wide_Wide_String
-         (Source : Wide_Wide_String;
-          Drop   : Truncation := Error) return Bounded_Wide_Wide_String;
- 
-       function To_Wide_Wide_String
-         (Source : Bounded_Wide_Wide_String) return Wide_Wide_String;
- 
-       procedure Set_Bounded_Wide_Wide_String
-         (Target : out Bounded_Wide_Wide_String;
-          Source : Wide_Wide_String;
-          Drop   : Truncation := Error);
-       pragma Ada_05 (Set_Bounded_Wide_Wide_String);
- 
-       function Append
-         (Left  : Bounded_Wide_Wide_String;
-          Right : Bounded_Wide_Wide_String;
-          Drop  : Truncation  := Error) return Bounded_Wide_Wide_String;
- 
-       function Append
-         (Left  : Bounded_Wide_Wide_String;
-          Right : Wide_Wide_String;
-          Drop  : Truncation := Error) return Bounded_Wide_Wide_String;
- 
-       function Append
-         (Left  : Wide_Wide_String;
-          Right : Bounded_Wide_Wide_String;
-          Drop  : Truncation := Error) return Bounded_Wide_Wide_String;
- 
-       function Append
-         (Left  : Bounded_Wide_Wide_String;
-          Right : Wide_Wide_Character;
-          Drop  : Truncation := Error) return Bounded_Wide_Wide_String;
- 
-       function Append
-         (Left  : Wide_Wide_Character;
-          Right : Bounded_Wide_Wide_String;
-          Drop  : Truncation := Error) return Bounded_Wide_Wide_String;
- 
-       procedure Append
-         (Source   : in out Bounded_Wide_Wide_String;
-          New_Item : Bounded_Wide_Wide_String;
-          Drop     : Truncation  := Error);
- 
-       procedure Append
-         (Source   : in out Bounded_Wide_Wide_String;
-          New_Item : Wide_Wide_String;
-          Drop     : Truncation  := Error);
- 
-       procedure Append
-         (Source   : in out Bounded_Wide_Wide_String;
-          New_Item : Wide_Wide_Character;
-          Drop     : Truncation  := Error);
- 
-       function "&"
-         (Left  : Bounded_Wide_Wide_String;
-          Right : Bounded_Wide_Wide_String) return Bounded_Wide_Wide_String;
- 
-       function "&"
-         (Left  : Bounded_Wide_Wide_String;
-          Right : Wide_Wide_String) return Bounded_Wide_Wide_String;
- 
-       function "&"
-         (Left  : Wide_Wide_String;
-          Right : Bounded_Wide_Wide_String) return Bounded_Wide_Wide_String;
- 
-       function "&"
-         (Left  : Bounded_Wide_Wide_String;
-          Right : Wide_Wide_Character) return Bounded_Wide_Wide_String;
- 
-       function "&"
-         (Left  : Wide_Wide_Character;
-          Right : Bounded_Wide_Wide_String) return Bounded_Wide_Wide_String;
- 
-       function Element
-         (Source : Bounded_Wide_Wide_String;
-          Index  : Positive) return Wide_Wide_Character;
- 
-       procedure Replace_Element
-         (Source : in out Bounded_Wide_Wide_String;
-          Index  : Positive;
-          By     : Wide_Wide_Character);
- 
-       function Slice
-         (Source : Bounded_Wide_Wide_String;
-          Low    : Positive;
-          High   : Natural) return Wide_Wide_String;
- 
-       function Bounded_Slice
-         (Source : Bounded_Wide_Wide_String;
-          Low    : Positive;
-          High   : Natural) return Bounded_Wide_Wide_String;
-       pragma Ada_05 (Bounded_Slice);
- 
-       procedure Bounded_Slice
-         (Source : Bounded_Wide_Wide_String;
-          Target : out Bounded_Wide_Wide_String;
-          Low    : Positive;
-          High   : Natural);
-       pragma Ada_05 (Bounded_Slice);
- 
-       function "="
-         (Left  : Bounded_Wide_Wide_String;
-          Right : Bounded_Wide_Wide_String) return Boolean;
- 
-       function "="
-         (Left  : Bounded_Wide_Wide_String;
-          Right : Wide_Wide_String) return Boolean;
- 
-       function "="
-         (Left  : Wide_Wide_String;
-          Right : Bounded_Wide_Wide_String) return Boolean;
- 
-       function "<"
-         (Left  : Bounded_Wide_Wide_String;
-          Right : Bounded_Wide_Wide_String) return Boolean;
- 
-       function "<"
-         (Left  : Bounded_Wide_Wide_String;
-          Right : Wide_Wide_String) return Boolean;
- 
-       function "<"
-         (Left  : Wide_Wide_String;
-          Right : Bounded_Wide_Wide_String) return Boolean;
- 
-       function "<="
-         (Left  : Bounded_Wide_Wide_String;
-          Right : Bounded_Wide_Wide_String) return Boolean;
- 
-       function "<="
-         (Left  : Bounded_Wide_Wide_String;
-          Right : Wide_Wide_String) return Boolean;
- 
-       function "<="
-         (Left  : Wide_Wide_String;
-          Right : Bounded_Wide_Wide_String) return Boolean;
- 
-       function ">"
-         (Left  : Bounded_Wide_Wide_String;
-          Right : Bounded_Wide_Wide_String) return Boolean;
- 
-       function ">"
-         (Left  : Bounded_Wide_Wide_String;
-          Right : Wide_Wide_String) return Boolean;
- 
-       function ">"
-         (Left  : Wide_Wide_String;
-          Right : Bounded_Wide_Wide_String) return Boolean;
- 
-       function ">="
-         (Left  : Bounded_Wide_Wide_String;
-          Right : Bounded_Wide_Wide_String) return Boolean;
- 
-       function ">="
-         (Left  : Bounded_Wide_Wide_String;
-          Right : Wide_Wide_String) return Boolean;
- 
-       function ">="
-         (Left  : Wide_Wide_String;
-          Right : Bounded_Wide_Wide_String) return Boolean;
- 
-       ----------------------
-       -- Search Functions --
-       ----------------------
- 
-       function Index
-         (Source  : Bounded_Wide_Wide_String;
-          Pattern : Wide_Wide_String;
-          Going   : Direction := Forward;
-          Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping :=
-                      Wide_Wide_Maps.Identity)
-          return Natural;
- 
-       function Index
-         (Source  : Bounded_Wide_Wide_String;
-          Pattern : Wide_Wide_String;
-          Going   : Direction := Forward;
-          Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
-          return Natural;
- 
-       function Index
-         (Source : Bounded_Wide_Wide_String;
-          Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
-          Test   : Membership := Inside;
-          Going  : Direction  := Forward) return Natural;
- 
-       function Index
-         (Source  : Bounded_Wide_Wide_String;
-          Pattern : Wide_Wide_String;
-          From    : Positive;
-          Going   : Direction := Forward;
-          Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping :=
-                      Wide_Wide_Maps.Identity)
-          return Natural;
-       pragma Ada_05 (Index);
- 
-       function Index
-         (Source  : Bounded_Wide_Wide_String;
-          Pattern : Wide_Wide_String;
-          From    : Positive;
-          Going   : Direction := Forward;
-          Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
-          return Natural;
-       pragma Ada_05 (Index);
- 
-       function Index
-         (Source : Bounded_Wide_Wide_String;
-          Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
-          From   : Positive;
-          Test   : Membership := Inside;
-          Going  : Direction := Forward) return Natural;
-       pragma Ada_05 (Index);
- 
-       function Index_Non_Blank
-         (Source : Bounded_Wide_Wide_String;
-          Going  : Direction := Forward) return Natural;
- 
-       function Index_Non_Blank
-         (Source : Bounded_Wide_Wide_String;
-          From   : Positive;
-          Going  : Direction := Forward) return Natural;
-       pragma Ada_05 (Index_Non_Blank);
- 
-       function Count
-         (Source  : Bounded_Wide_Wide_String;
-          Pattern : Wide_Wide_String;
-          Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping :=
-                      Wide_Wide_Maps.Identity)
-          return Natural;
- 
-       function Count
-         (Source  : Bounded_Wide_Wide_String;
-          Pattern : Wide_Wide_String;
-          Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
-          return Natural;
- 
-       function Count
-         (Source : Bounded_Wide_Wide_String;
-          Set    : Wide_Wide_Maps.Wide_Wide_Character_Set) return Natural;
- 
-       procedure Find_Token
-         (Source : Bounded_Wide_Wide_String;
-          Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
-          From   : Positive;
-          Test   : Membership;
-          First  : out Positive;
-          Last   : out Natural);
-       pragma Ada_2012 (Find_Token);
- 
-       procedure Find_Token
-         (Source : Bounded_Wide_Wide_String;
-          Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
-          Test   : Membership;
-          First  : out Positive;
-          Last   : out Natural);
- 
-       ------------------------------------
-       -- String Translation Subprograms --
-       ------------------------------------
- 
-       function Translate
-         (Source  : Bounded_Wide_Wide_String;
-          Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping)
-          return Bounded_Wide_Wide_String;
- 
-       procedure Translate
-         (Source  : in out Bounded_Wide_Wide_String;
-          Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping);
- 
-       function Translate
-         (Source  : Bounded_Wide_Wide_String;
-          Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
-          return Bounded_Wide_Wide_String;
- 
-       procedure Translate
-         (Source  : in out Bounded_Wide_Wide_String;
-          Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function);
- 
-       ---------------------------------------
-       -- String Transformation Subprograms --
-       ---------------------------------------
- 
-       function Replace_Slice
-         (Source : Bounded_Wide_Wide_String;
-          Low    : Positive;
-          High   : Natural;
-          By     : Wide_Wide_String;
-          Drop   : Truncation := Error) return Bounded_Wide_Wide_String;
- 
-       procedure Replace_Slice
-         (Source   : in out Bounded_Wide_Wide_String;
-          Low      : Positive;
-          High     : Natural;
-          By       : Wide_Wide_String;
-          Drop     : Truncation := Error);
- 
-       function Insert
-         (Source   : Bounded_Wide_Wide_String;
-          Before   : Positive;
-          New_Item : Wide_Wide_String;
-          Drop     : Truncation := Error) return Bounded_Wide_Wide_String;
- 
-       procedure Insert
-         (Source   : in out Bounded_Wide_Wide_String;
-          Before   : Positive;
-          New_Item : Wide_Wide_String;
-          Drop     : Truncation := Error);
- 
-       function Overwrite
-         (Source   : Bounded_Wide_Wide_String;
-          Position : Positive;
-          New_Item : Wide_Wide_String;
-          Drop     : Truncation := Error) return Bounded_Wide_Wide_String;
- 
-       procedure Overwrite
-         (Source    : in out Bounded_Wide_Wide_String;
-          Position  : Positive;
-          New_Item  : Wide_Wide_String;
-          Drop      : Truncation := Error);
- 
-       function Delete
-         (Source  : Bounded_Wide_Wide_String;
-          From    : Positive;
-          Through : Natural) return Bounded_Wide_Wide_String;
- 
-       procedure Delete
-         (Source  : in out Bounded_Wide_Wide_String;
-          From    : Positive;
-          Through : Natural);
- 
-       ---------------------------------
-       -- String Selector Subprograms --
-       ---------------------------------
- 
-       function Trim
-         (Source : Bounded_Wide_Wide_String;
-          Side   : Trim_End) return Bounded_Wide_Wide_String;
- 
-       procedure Trim
-         (Source : in out Bounded_Wide_Wide_String;
-          Side   : Trim_End);
- 
-       function Trim
-         (Source : Bounded_Wide_Wide_String;
-           Left  : Wide_Wide_Maps.Wide_Wide_Character_Set;
-           Right : Wide_Wide_Maps.Wide_Wide_Character_Set)
-           return Bounded_Wide_Wide_String;
- 
-       procedure Trim
-         (Source : in out Bounded_Wide_Wide_String;
-          Left   : Wide_Wide_Maps.Wide_Wide_Character_Set;
-          Right  : Wide_Wide_Maps.Wide_Wide_Character_Set);
- 
-       function Head
-         (Source : Bounded_Wide_Wide_String;
-          Count  : Natural;
-          Pad    : Wide_Wide_Character := Wide_Wide_Space;
-          Drop   : Truncation := Error) return Bounded_Wide_Wide_String;
- 
-       procedure Head
-         (Source : in out Bounded_Wide_Wide_String;
-          Count  : Natural;
-          Pad    : Wide_Wide_Character  := Wide_Wide_Space;
-          Drop   : Truncation := Error);
- 
-       function Tail
-         (Source : Bounded_Wide_Wide_String;
-          Count  : Natural;
-          Pad    : Wide_Wide_Character := Wide_Wide_Space;
-          Drop   : Truncation     := Error) return Bounded_Wide_Wide_String;
- 
-       procedure Tail
-         (Source : in out Bounded_Wide_Wide_String;
-          Count  : Natural;
-          Pad    : Wide_Wide_Character := Wide_Wide_Space;
-          Drop   : Truncation     := Error);
- 
-       ------------------------------------
-       -- String Constructor Subprograms --
-       ------------------------------------
- 
-       function "*"
-         (Left  : Natural;
-          Right : Wide_Wide_Character) return Bounded_Wide_Wide_String;
- 
-       function "*"
-         (Left  : Natural;
-          Right : Wide_Wide_String) return Bounded_Wide_Wide_String;
- 
-       function "*"
-         (Left  : Natural;
-          Right : Bounded_Wide_Wide_String) return Bounded_Wide_Wide_String;
- 
-       function Replicate
-         (Count : Natural;
-          Item  : Wide_Wide_Character;
-          Drop  : Truncation := Error) return Bounded_Wide_Wide_String;
- 
-       function Replicate
-         (Count : Natural;
-          Item  : Wide_Wide_String;
-          Drop  : Truncation := Error) return Bounded_Wide_Wide_String;
- 
-       function Replicate
-         (Count : Natural;
-          Item  : Bounded_Wide_Wide_String;
-          Drop  : Truncation := Error) return Bounded_Wide_Wide_String;
- 
-    private
-       --  Most of the implementation is in the separate non generic package
-       --  Ada.Strings.Wide_Wide_Superbounded. Type Bounded_Wide_Wide_String is
-       --  derived from type Wide_Wide_Superbounded.Super_String with the
-       --  maximum length constraint. In almost all cases, the routines in
-       --  Wide_Wide_Superbounded can be called with no requirement to pass the
-       --  maximum length explicitly, since there is at least one
-       --  Bounded_Wide_Wide_String argument from which the maximum length can
-       --  be obtained. For all such routines, the implementation in this
-       --  private part is simply renaming of the corresponding routine in the
-       --  super bouded package.
- 
-       --  The five exceptions are the * and Replicate routines operating on
-       --  character values. For these cases, we have a routine in the body
-       --  that calls the superbounded routine passing the maximum length
-       --  explicitly as an extra parameter.
- 
-       type Bounded_Wide_Wide_String is
-         new Wide_Wide_Superbounded.Super_String (Max_Length);
-       --  Deriving Bounded_Wide_Wide_String from
-       --  Wide_Wide_Superbounded.Super_String is the real trick, it ensures
-       --  that the type Bounded_Wide_Wide_String declared in the generic
-       --  instantiation is compatible with the Super_String type declared in
-       --  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);
- 
-       procedure Set_Bounded_Wide_Wide_String
-         (Target : out Bounded_Wide_Wide_String;
-          Source : Wide_Wide_String;
-          Drop   : Truncation := Error)
-          renames Set_Super_String;
- 
-       function Length
-         (Source : Bounded_Wide_Wide_String) return Length_Range
-          renames Super_Length;
- 
-       function To_Wide_Wide_String
-         (Source : Bounded_Wide_Wide_String) return Wide_Wide_String
-          renames Super_To_String;
- 
-       function Append
-         (Left  : Bounded_Wide_Wide_String;
-          Right : Bounded_Wide_Wide_String;
-          Drop  : Truncation  := Error) return Bounded_Wide_Wide_String
-          renames Super_Append;
- 
-       function Append
-         (Left  : Bounded_Wide_Wide_String;
-          Right : Wide_Wide_String;
-          Drop  : Truncation := Error) return Bounded_Wide_Wide_String
-          renames Super_Append;
- 
-       function Append
-         (Left  : Wide_Wide_String;
-          Right : Bounded_Wide_Wide_String;
-          Drop  : Truncation := Error) return Bounded_Wide_Wide_String
-          renames Super_Append;
- 
-       function Append
-         (Left  : Bounded_Wide_Wide_String;
-          Right : Wide_Wide_Character;
-          Drop  : Truncation := Error) return Bounded_Wide_Wide_String
-          renames Super_Append;
- 
-       function Append
-         (Left  : Wide_Wide_Character;
-          Right : Bounded_Wide_Wide_String;
-          Drop  : Truncation := Error) return Bounded_Wide_Wide_String
-          renames Super_Append;
- 
-       procedure Append
-         (Source   : in out Bounded_Wide_Wide_String;
-          New_Item : Bounded_Wide_Wide_String;
-          Drop     : Truncation  := Error)
-          renames Super_Append;
- 
-       procedure Append
-         (Source   : in out Bounded_Wide_Wide_String;
-          New_Item : Wide_Wide_String;
-          Drop     : Truncation  := Error)
-          renames Super_Append;
- 
-       procedure Append
-         (Source   : in out Bounded_Wide_Wide_String;
-          New_Item : Wide_Wide_Character;
-          Drop     : Truncation  := Error)
-          renames Super_Append;
- 
-       function "&"
-         (Left  : Bounded_Wide_Wide_String;
-          Right : Bounded_Wide_Wide_String) return Bounded_Wide_Wide_String
-          renames Concat;
- 
-       function "&"
-         (Left  : Bounded_Wide_Wide_String;
-          Right : Wide_Wide_String) return Bounded_Wide_Wide_String
-          renames Concat;
- 
-       function "&"
-         (Left  : Wide_Wide_String;
-          Right : Bounded_Wide_Wide_String) return Bounded_Wide_Wide_String
-          renames Concat;
- 
-       function "&"
-         (Left  : Bounded_Wide_Wide_String;
-          Right : Wide_Wide_Character) return Bounded_Wide_Wide_String
-          renames Concat;
- 
-       function "&"
-         (Left  : Wide_Wide_Character;
-          Right : Bounded_Wide_Wide_String) return Bounded_Wide_Wide_String
-          renames Concat;
- 
-       function Element
-         (Source : Bounded_Wide_Wide_String;
-          Index  : Positive) return Wide_Wide_Character
-          renames Super_Element;
- 
-       procedure Replace_Element
-         (Source : in out Bounded_Wide_Wide_String;
-          Index  : Positive;
-          By     : Wide_Wide_Character)
-          renames Super_Replace_Element;
- 
-       function Slice
-         (Source : Bounded_Wide_Wide_String;
-          Low    : Positive;
-          High   : Natural) return Wide_Wide_String
-          renames Super_Slice;
- 
-       function Bounded_Slice
-         (Source : Bounded_Wide_Wide_String;
-          Low    : Positive;
-          High   : Natural) return Bounded_Wide_Wide_String
-          renames Super_Slice;
- 
-       procedure Bounded_Slice
-         (Source : Bounded_Wide_Wide_String;
-          Target : out Bounded_Wide_Wide_String;
-          Low    : Positive;
-          High   : Natural)
-          renames Super_Slice;
- 
-       overriding function "="
-         (Left  : Bounded_Wide_Wide_String;
-          Right : Bounded_Wide_Wide_String) return Boolean
-          renames Equal;
- 
-       function "="
-         (Left  : Bounded_Wide_Wide_String;
-          Right : Wide_Wide_String) return Boolean
-          renames Equal;
- 
-       function "="
-         (Left  : Wide_Wide_String;
-          Right : Bounded_Wide_Wide_String) return Boolean
-          renames Equal;
- 
-       function "<"
-         (Left  : Bounded_Wide_Wide_String;
-          Right : Bounded_Wide_Wide_String) return Boolean
-          renames Less;
- 
-       function "<"
-         (Left  : Bounded_Wide_Wide_String;
-          Right : Wide_Wide_String) return Boolean
-          renames Less;
- 
-       function "<"
-         (Left  : Wide_Wide_String;
-          Right : Bounded_Wide_Wide_String) return Boolean
-          renames Less;
- 
-       function "<="
-         (Left  : Bounded_Wide_Wide_String;
-          Right : Bounded_Wide_Wide_String) return Boolean
-          renames Less_Or_Equal;
- 
-       function "<="
-         (Left  : Bounded_Wide_Wide_String;
-          Right : Wide_Wide_String) return Boolean
-          renames Less_Or_Equal;
- 
-       function "<="
-         (Left  : Wide_Wide_String;
-          Right : Bounded_Wide_Wide_String) return Boolean
-          renames Less_Or_Equal;
- 
-       function ">"
-         (Left  : Bounded_Wide_Wide_String;
-          Right : Bounded_Wide_Wide_String) return Boolean
-          renames Greater;
- 
-       function ">"
-         (Left  : Bounded_Wide_Wide_String;
-          Right : Wide_Wide_String) return Boolean
-          renames Greater;
- 
-       function ">"
-         (Left  : Wide_Wide_String;
-          Right : Bounded_Wide_Wide_String) return Boolean
-          renames Greater;
- 
-       function ">="
-         (Left  : Bounded_Wide_Wide_String;
-          Right : Bounded_Wide_Wide_String) return Boolean
-          renames Greater_Or_Equal;
- 
-       function ">="
-         (Left  : Bounded_Wide_Wide_String;
-          Right : Wide_Wide_String) return Boolean
-          renames Greater_Or_Equal;
- 
-       function ">="
-         (Left  : Wide_Wide_String;
-          Right : Bounded_Wide_Wide_String) return Boolean
-          renames Greater_Or_Equal;
- 
-       function Index
-         (Source  : Bounded_Wide_Wide_String;
-          Pattern : Wide_Wide_String;
-          Going   : Direction := Forward;
-          Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping :=
-                      Wide_Wide_Maps.Identity)
-          return Natural
-          renames Super_Index;
- 
-       function Index
-         (Source  : Bounded_Wide_Wide_String;
-          Pattern : Wide_Wide_String;
-          Going   : Direction := Forward;
-          Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
-          return Natural
-          renames Super_Index;
- 
-       function Index
-         (Source : Bounded_Wide_Wide_String;
-          Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
-          Test   : Membership := Inside;
-          Going  : Direction  := Forward) return Natural
-          renames Super_Index;
- 
-       function Index
-         (Source  : Bounded_Wide_Wide_String;
-          Pattern : Wide_Wide_String;
-          From    : Positive;
-          Going   : Direction := Forward;
-          Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping :=
-                      Wide_Wide_Maps.Identity)
-          return Natural
-          renames Super_Index;
- 
-       function Index
-         (Source  : Bounded_Wide_Wide_String;
-          Pattern : Wide_Wide_String;
-          From    : Positive;
-          Going   : Direction := Forward;
-          Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
-          return Natural
-       renames Super_Index;
- 
-       function Index
-         (Source : Bounded_Wide_Wide_String;
-          Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
-          From   : Positive;
-          Test   : Membership := Inside;
-          Going  : Direction := Forward) return Natural
-       renames Super_Index;
- 
-       function Index_Non_Blank
-         (Source : Bounded_Wide_Wide_String;
-          Going  : Direction := Forward) return Natural
-          renames Super_Index_Non_Blank;
- 
-       function Index_Non_Blank
-         (Source : Bounded_Wide_Wide_String;
-          From   : Positive;
-          Going  : Direction := Forward) return Natural
-          renames Super_Index_Non_Blank;
- 
-       function Count
-         (Source  : Bounded_Wide_Wide_String;
-          Pattern : Wide_Wide_String;
-          Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping :=
-                      Wide_Wide_Maps.Identity)
-          return Natural
-          renames Super_Count;
- 
-       function Count
-         (Source  : Bounded_Wide_Wide_String;
-          Pattern : Wide_Wide_String;
-          Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
-          return Natural
-          renames Super_Count;
- 
-       function Count
-         (Source : Bounded_Wide_Wide_String;
-          Set    : Wide_Wide_Maps.Wide_Wide_Character_Set) return Natural
-          renames Super_Count;
- 
-       procedure Find_Token
-         (Source : Bounded_Wide_Wide_String;
-          Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
-          From   : Positive;
-          Test   : Membership;
-          First  : out Positive;
-          Last   : out Natural)
-          renames Super_Find_Token;
- 
-       procedure Find_Token
-         (Source : Bounded_Wide_Wide_String;
-          Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
-          Test   : Membership;
-          First  : out Positive;
-          Last   : out Natural)
-          renames Super_Find_Token;
- 
-       function Translate
-         (Source  : Bounded_Wide_Wide_String;
-          Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping)
-          return Bounded_Wide_Wide_String
-          renames Super_Translate;
- 
-       procedure Translate
-         (Source   : in out Bounded_Wide_Wide_String;
-          Mapping  : Wide_Wide_Maps.Wide_Wide_Character_Mapping)
-          renames Super_Translate;
- 
-       function Translate
-         (Source  : Bounded_Wide_Wide_String;
-          Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
-          return Bounded_Wide_Wide_String
-          renames Super_Translate;
- 
-       procedure Translate
-         (Source  : in out Bounded_Wide_Wide_String;
-          Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
-          renames Super_Translate;
- 
-       function Replace_Slice
-         (Source : Bounded_Wide_Wide_String;
-          Low    : Positive;
-          High   : Natural;
-          By     : Wide_Wide_String;
-          Drop   : Truncation := Error) return Bounded_Wide_Wide_String
-          renames Super_Replace_Slice;
- 
-       procedure Replace_Slice
-         (Source   : in out Bounded_Wide_Wide_String;
-          Low      : Positive;
-          High     : Natural;
-          By       : Wide_Wide_String;
-          Drop     : Truncation := Error)
-          renames Super_Replace_Slice;
- 
-       function Insert
-         (Source   : Bounded_Wide_Wide_String;
-          Before   : Positive;
-          New_Item : Wide_Wide_String;
-          Drop     : Truncation := Error) return Bounded_Wide_Wide_String
-          renames Super_Insert;
- 
-       procedure Insert
-         (Source   : in out Bounded_Wide_Wide_String;
-          Before   : Positive;
-          New_Item : Wide_Wide_String;
-          Drop     : Truncation := Error)
-          renames Super_Insert;
- 
-       function Overwrite
-         (Source   : Bounded_Wide_Wide_String;
-          Position : Positive;
-          New_Item : Wide_Wide_String;
-          Drop     : Truncation := Error) return Bounded_Wide_Wide_String
-          renames Super_Overwrite;
- 
-       procedure Overwrite
-         (Source    : in out Bounded_Wide_Wide_String;
-          Position  : Positive;
-          New_Item  : Wide_Wide_String;
-          Drop      : Truncation := Error)
-          renames Super_Overwrite;
- 
-       function Delete
-         (Source  : Bounded_Wide_Wide_String;
-          From    : Positive;
-          Through : Natural) return Bounded_Wide_Wide_String
-          renames Super_Delete;
- 
-       procedure Delete
-         (Source  : in out Bounded_Wide_Wide_String;
-          From    : Positive;
-          Through : Natural)
-          renames Super_Delete;
- 
-       function Trim
-         (Source : Bounded_Wide_Wide_String;
-          Side   : Trim_End) return Bounded_Wide_Wide_String
-          renames Super_Trim;
- 
-       procedure Trim
-         (Source : in out Bounded_Wide_Wide_String;
-          Side   : Trim_End)
-          renames Super_Trim;
- 
-       function Trim
-         (Source : Bounded_Wide_Wide_String;
-          Left   : Wide_Wide_Maps.Wide_Wide_Character_Set;
-          Right  : Wide_Wide_Maps.Wide_Wide_Character_Set)
-          return Bounded_Wide_Wide_String
-          renames Super_Trim;
- 
-       procedure Trim
-         (Source : in out Bounded_Wide_Wide_String;
-          Left   : Wide_Wide_Maps.Wide_Wide_Character_Set;
-          Right  : Wide_Wide_Maps.Wide_Wide_Character_Set)
-          renames Super_Trim;
- 
-       function Head
-         (Source : Bounded_Wide_Wide_String;
-          Count  : Natural;
-          Pad    : Wide_Wide_Character := Wide_Wide_Space;
-          Drop   : Truncation     := Error) return Bounded_Wide_Wide_String
-          renames Super_Head;
- 
-       procedure Head
-         (Source : in out Bounded_Wide_Wide_String;
-          Count  : Natural;
-          Pad    : Wide_Wide_Character := Wide_Wide_Space;
-          Drop   : Truncation     := Error)
-          renames Super_Head;
- 
-       function Tail
-         (Source : Bounded_Wide_Wide_String;
-          Count  : Natural;
-          Pad    : Wide_Wide_Character := Wide_Wide_Space;
-          Drop   : Truncation     := Error) return Bounded_Wide_Wide_String
-          renames Super_Tail;
- 
-       procedure Tail
-         (Source : in out Bounded_Wide_Wide_String;
-          Count  : Natural;
-          Pad    : Wide_Wide_Character := Wide_Wide_Space;
-          Drop   : Truncation := Error)
-          renames Super_Tail;
- 
-       function "*"
-         (Left  : Natural;
-          Right : Bounded_Wide_Wide_String) return Bounded_Wide_Wide_String
-          renames Times;
- 
-       function Replicate
-         (Count : Natural;
-          Item  : Bounded_Wide_Wide_String;
-          Drop  : Truncation := Error) return Bounded_Wide_Wide_String
-          renames Super_Replicate;
- 
-    end Generic_Bounded_Length;
- 
- end Ada.Strings.Wide_Wide_Bounded;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-stzfix.adb gcc-8.1.0/gcc/ada/a-stzfix.adb
*** gcc-7.3.0/gcc/ada/a-stzfix.adb	Fri Jan 13 10:19:19 2017
--- gcc-8.1.0/gcc/ada/a-stzfix.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,694 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --               A D A . S T R I N G S . W I D E _ F I X E D                --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Strings.Wide_Wide_Maps; use Ada.Strings.Wide_Wide_Maps;
- with Ada.Strings.Wide_Wide_Search;
- 
- package body Ada.Strings.Wide_Wide_Fixed is
- 
-    ------------------------
-    -- Search Subprograms --
-    ------------------------
- 
-    function Index
-      (Source  : Wide_Wide_String;
-       Pattern : Wide_Wide_String;
-       Going   : Direction := Forward;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping :=
-         Wide_Wide_Maps.Identity)
-       return Natural
-    renames Ada.Strings.Wide_Wide_Search.Index;
- 
-    function Index
-      (Source  : Wide_Wide_String;
-       Pattern : Wide_Wide_String;
-       Going   : Direction := Forward;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
-       return Natural
-    renames Ada.Strings.Wide_Wide_Search.Index;
- 
-    function Index
-      (Source : Wide_Wide_String;
-       Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       Test   : Membership := Inside;
-       Going  : Direction  := Forward) return Natural
-    renames Ada.Strings.Wide_Wide_Search.Index;
- 
-    function Index
-      (Source  : Wide_Wide_String;
-       Pattern : Wide_Wide_String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping :=
-         Wide_Wide_Maps.Identity)
-       return Natural
-    renames Ada.Strings.Wide_Wide_Search.Index;
- 
-    function Index
-      (Source  : Wide_Wide_String;
-       Pattern : Wide_Wide_String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
-       return Natural
-    renames Ada.Strings.Wide_Wide_Search.Index;
- 
-    function Index
-      (Source  : Wide_Wide_String;
-       Set     : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       From    : Positive;
-       Test    : Membership := Inside;
-       Going   : Direction := Forward) return Natural
-    renames Ada.Strings.Wide_Wide_Search.Index;
- 
-    function Index_Non_Blank
-      (Source : Wide_Wide_String;
-       Going  : Direction := Forward) return Natural
-       renames Ada.Strings.Wide_Wide_Search.Index_Non_Blank;
- 
-    function Index_Non_Blank
-      (Source : Wide_Wide_String;
-       From   : Positive;
-       Going  : Direction := Forward) return Natural
-    renames Ada.Strings.Wide_Wide_Search.Index_Non_Blank;
- 
-    function Count
-      (Source  : Wide_Wide_String;
-       Pattern : Wide_Wide_String;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping :=
-         Wide_Wide_Maps.Identity)
-       return Natural
-    renames Ada.Strings.Wide_Wide_Search.Count;
- 
-    function Count
-      (Source  : Wide_Wide_String;
-       Pattern : Wide_Wide_String;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
-       return Natural
-    renames Ada.Strings.Wide_Wide_Search.Count;
- 
-    function Count
-      (Source : Wide_Wide_String;
-       Set    : Wide_Wide_Maps.Wide_Wide_Character_Set) return Natural
-    renames Ada.Strings.Wide_Wide_Search.Count;
- 
-    procedure Find_Token
-      (Source : Wide_Wide_String;
-       Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       From   : Positive;
-       Test   : Membership;
-       First  : out Positive;
-       Last   : out Natural)
-    renames Ada.Strings.Wide_Wide_Search.Find_Token;
- 
-    procedure Find_Token
-      (Source : Wide_Wide_String;
-       Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       Test   : Membership;
-       First  : out Positive;
-       Last   : out Natural)
-    renames Ada.Strings.Wide_Wide_Search.Find_Token;
- 
-    ---------
-    -- "*" --
-    ---------
- 
-    function "*"
-      (Left  : Natural;
-       Right : Wide_Wide_Character) return Wide_Wide_String
-    is
-       Result : Wide_Wide_String (1 .. Left);
- 
-    begin
-       for J in Result'Range loop
-          Result (J) := Right;
-       end loop;
- 
-       return Result;
-    end "*";
- 
-    function "*"
-      (Left  : Natural;
-       Right : Wide_Wide_String) return Wide_Wide_String
-    is
-       Result : Wide_Wide_String (1 .. Left * Right'Length);
-       Ptr    : Integer := 1;
- 
-    begin
-       for J in 1 .. Left loop
-          Result (Ptr .. Ptr + Right'Length - 1) := Right;
-          Ptr := Ptr + Right'Length;
-       end loop;
- 
-       return Result;
-    end "*";
- 
-    ------------
-    -- Delete --
-    ------------
- 
-    function Delete
-      (Source  : Wide_Wide_String;
-       From    : Positive;
-       Through : Natural) return Wide_Wide_String
-    is
-    begin
-       if From not in Source'Range
-         or else Through > Source'Last
-       then
-          raise Index_Error;
- 
-       elsif From > Through then
-          return Source;
- 
-       else
-          declare
-             Len    : constant Integer := Source'Length - (Through - From + 1);
-             Result : constant Wide_Wide_String
-                        (Source'First .. Source'First + Len - 1) :=
-                           Source (Source'First .. From - 1) &
-                           Source (Through + 1 .. Source'Last);
-          begin
-             return Result;
-          end;
-       end if;
-    end Delete;
- 
-    procedure Delete
-      (Source  : in out Wide_Wide_String;
-       From    : Positive;
-       Through : Natural;
-       Justify : Alignment := Left;
-       Pad     : Wide_Wide_Character := Wide_Wide_Space)
-    is
-    begin
-       Move (Source  => Delete (Source, From, Through),
-             Target  => Source,
-             Justify => Justify,
-             Pad     => Pad);
-    end Delete;
- 
-    ----------
-    -- Head --
-    ----------
- 
-    function Head
-      (Source : Wide_Wide_String;
-       Count  : Natural;
-       Pad    : Wide_Wide_Character := Wide_Wide_Space) return Wide_Wide_String
-    is
-       Result : Wide_Wide_String (1 .. Count);
- 
-    begin
-       if Count <= Source'Length then
-          Result := Source (Source'First .. Source'First + Count - 1);
- 
-       else
-          Result (1 .. Source'Length) := Source;
- 
-          for J in Source'Length + 1 .. Count loop
-             Result (J) := Pad;
-          end loop;
-       end if;
- 
-       return Result;
-    end Head;
- 
-    procedure Head
-      (Source  : in out Wide_Wide_String;
-       Count   : Natural;
-       Justify : Alignment := Left;
-       Pad     : Wide_Wide_Character := Ada.Strings.Wide_Wide_Space)
-    is
-    begin
-       Move (Source  => Head (Source, Count, Pad),
-             Target  => Source,
-             Drop    => Error,
-             Justify => Justify,
-             Pad     => Pad);
-    end Head;
- 
-    ------------
-    -- Insert --
-    ------------
- 
-    function Insert
-      (Source   : Wide_Wide_String;
-       Before   : Positive;
-       New_Item : Wide_Wide_String) return Wide_Wide_String
-    is
-       Result : Wide_Wide_String (1 .. Source'Length + New_Item'Length);
- 
-    begin
-       if Before < Source'First or else Before > Source'Last + 1 then
-          raise Index_Error;
-       end if;
- 
-       Result := Source (Source'First .. Before - 1) & New_Item &
-                 Source (Before .. Source'Last);
-       return Result;
-    end Insert;
- 
-    procedure Insert
-      (Source   : in out Wide_Wide_String;
-       Before   : Positive;
-       New_Item : Wide_Wide_String;
-       Drop     : Truncation := Error)
-    is
-    begin
-       Move (Source => Insert (Source, Before, New_Item),
-             Target => Source,
-             Drop   => Drop);
-    end Insert;
- 
-    ----------
-    -- Move --
-    ----------
- 
-    procedure Move
-      (Source  : Wide_Wide_String;
-       Target  : out Wide_Wide_String;
-       Drop    : Truncation := Error;
-       Justify : Alignment  := Left;
-       Pad     : Wide_Wide_Character  := Wide_Wide_Space)
-    is
-       Sfirst  : constant Integer := Source'First;
-       Slast   : constant Integer := Source'Last;
-       Slength : constant Integer := Source'Length;
- 
-       Tfirst  : constant Integer := Target'First;
-       Tlast   : constant Integer := Target'Last;
-       Tlength : constant Integer := Target'Length;
- 
-       function Is_Padding (Item : Wide_Wide_String) return Boolean;
-       --  Determinbe if all characters in Item are pad characters
- 
-       function Is_Padding (Item : Wide_Wide_String) return Boolean is
-       begin
-          for J in Item'Range loop
-             if Item (J) /= Pad then
-                return False;
-             end if;
-          end loop;
- 
-          return True;
-       end Is_Padding;
- 
-    --  Start of processing for Move
- 
-    begin
-       if Slength = Tlength then
-          Target := Source;
- 
-       elsif Slength > Tlength then
-          case Drop is
-             when Left =>
-                Target := Source (Slast - Tlength + 1 .. Slast);
- 
-             when Right =>
-                Target := Source (Sfirst .. Sfirst + Tlength - 1);
- 
-             when Error =>
-                case Justify is
-                   when Left =>
-                      if Is_Padding (Source (Sfirst + Tlength .. Slast)) then
-                         Target :=
-                           Source (Sfirst .. Sfirst + Target'Length - 1);
-                      else
-                         raise Length_Error;
-                      end if;
- 
-                   when Right =>
-                      if Is_Padding (Source (Sfirst .. Slast - Tlength)) then
-                         Target := Source (Slast - Tlength + 1 .. Slast);
-                      else
-                         raise Length_Error;
-                      end if;
- 
-                   when Center =>
-                      raise Length_Error;
-                end case;
- 
-          end case;
- 
-       --  Source'Length < Target'Length
- 
-       else
-          case Justify is
-             when Left =>
-                Target (Tfirst .. Tfirst + Slength - 1) := Source;
- 
-                for J in Tfirst + Slength .. Tlast loop
-                   Target (J) := Pad;
-                end loop;
- 
-             when Right =>
-                for J in Tfirst .. Tlast - Slength loop
-                   Target (J) := Pad;
-                end loop;
- 
-                Target (Tlast - Slength + 1 .. Tlast) := Source;
- 
-             when Center =>
-                declare
-                   Front_Pad   : constant Integer := (Tlength - Slength) / 2;
-                   Tfirst_Fpad : constant Integer := Tfirst + Front_Pad;
- 
-                begin
-                   for J in Tfirst .. Tfirst_Fpad - 1 loop
-                      Target (J) := Pad;
-                   end loop;
- 
-                   Target (Tfirst_Fpad .. Tfirst_Fpad + Slength - 1) := Source;
- 
-                   for J in Tfirst_Fpad + Slength .. Tlast loop
-                      Target (J) := Pad;
-                   end loop;
-                end;
-          end case;
-       end if;
-    end Move;
- 
-    ---------------
-    -- Overwrite --
-    ---------------
- 
-    function Overwrite
-      (Source   : Wide_Wide_String;
-       Position : Positive;
-       New_Item : Wide_Wide_String) return Wide_Wide_String
-    is
-    begin
-       if Position not in Source'First .. Source'Last + 1 then
-          raise Index_Error;
-       else
-          declare
-             Result_Length : constant Natural :=
-               Natural'Max
-                 (Source'Length,
-                  Position - Source'First + New_Item'Length);
- 
-             Result : Wide_Wide_String (1 .. Result_Length);
- 
-          begin
-             Result := Source (Source'First .. Position - 1) & New_Item &
-                         Source (Position + New_Item'Length .. Source'Last);
-             return Result;
-          end;
-       end if;
-    end Overwrite;
- 
-    procedure Overwrite
-      (Source   : in out Wide_Wide_String;
-       Position : Positive;
-       New_Item : Wide_Wide_String;
-       Drop     : Truncation := Right)
-    is
-    begin
-       Move (Source => Overwrite (Source, Position, New_Item),
-             Target => Source,
-             Drop   => Drop);
-    end Overwrite;
- 
-    -------------------
-    -- Replace_Slice --
-    -------------------
- 
-    function Replace_Slice
-      (Source : Wide_Wide_String;
-       Low    : Positive;
-       High   : Natural;
-       By     : Wide_Wide_String) return Wide_Wide_String
-    is
-    begin
-       if Low > Source'Last + 1 or else High < Source'First - 1 then
-          raise Index_Error;
-       end if;
- 
-       if High >= Low then
-          declare
-             Front_Len : constant Integer :=
-               Integer'Max (0, Low - Source'First);
-             --  Length of prefix of Source copied to result
- 
-             Back_Len : constant Integer :=
-               Integer'Max (0, Source'Last - High);
-             --  Length of suffix of Source copied to result
- 
-             Result_Length : constant Integer :=
-               Front_Len + By'Length + Back_Len;
-             --  Length of result
- 
-             Result : Wide_Wide_String (1 .. Result_Length);
- 
-          begin
-             Result (1 .. Front_Len) := Source (Source'First .. Low - 1);
-             Result (Front_Len + 1 .. Front_Len + By'Length) := By;
-             Result (Front_Len + By'Length + 1 .. Result'Length) :=
-               Source (High + 1 .. Source'Last);
-             return Result;
-          end;
- 
-       else
-          return Insert (Source, Before => Low, New_Item => By);
-       end if;
-    end Replace_Slice;
- 
-    procedure Replace_Slice
-      (Source   : in out Wide_Wide_String;
-       Low      : Positive;
-       High     : Natural;
-       By       : Wide_Wide_String;
-       Drop     : Truncation := Error;
-       Justify  : Alignment  := Left;
-       Pad      : Wide_Wide_Character  := Wide_Wide_Space)
-    is
-    begin
-       Move (Replace_Slice (Source, Low, High, By), Source, Drop, Justify, Pad);
-    end Replace_Slice;
- 
-    ----------
-    -- Tail --
-    ----------
- 
-    function Tail
-      (Source : Wide_Wide_String;
-       Count  : Natural;
-       Pad    : Wide_Wide_Character := Wide_Wide_Space) return Wide_Wide_String
-    is
-       Result : Wide_Wide_String (1 .. Count);
- 
-    begin
-       if Count < Source'Length then
-          Result := Source (Source'Last - Count + 1 .. Source'Last);
- 
-       --  Pad on left
- 
-       else
-          for J in 1 .. Count - Source'Length loop
-             Result (J) := Pad;
-          end loop;
- 
-          Result (Count - Source'Length + 1 .. Count) := Source;
-       end if;
- 
-       return Result;
-    end Tail;
- 
-    procedure Tail
-      (Source  : in out Wide_Wide_String;
-       Count   : Natural;
-       Justify : Alignment := Left;
-       Pad     : Wide_Wide_Character := Ada.Strings.Wide_Wide_Space)
-    is
-    begin
-       Move (Source  => Tail (Source, Count, Pad),
-             Target  => Source,
-             Drop    => Error,
-             Justify => Justify,
-             Pad     => Pad);
-    end Tail;
- 
-    ---------------
-    -- Translate --
-    ---------------
- 
-    function Translate
-      (Source  : Wide_Wide_String;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping)
-       return Wide_Wide_String
-    is
-       Result : Wide_Wide_String (1 .. Source'Length);
- 
-    begin
-       for J in Source'Range loop
-          Result (J - (Source'First - 1)) := Value (Mapping, Source (J));
-       end loop;
- 
-       return Result;
-    end Translate;
- 
-    procedure Translate
-      (Source  : in out Wide_Wide_String;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping)
-    is
-    begin
-       for J in Source'Range loop
-          Source (J) := Value (Mapping, Source (J));
-       end loop;
-    end Translate;
- 
-    function Translate
-      (Source  : Wide_Wide_String;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
-       return Wide_Wide_String
-    is
-       Result : Wide_Wide_String (1 .. Source'Length);
- 
-    begin
-       for J in Source'Range loop
-          Result (J - (Source'First - 1)) := Mapping (Source (J));
-       end loop;
- 
-       return Result;
-    end Translate;
- 
-    procedure Translate
-      (Source  : in out Wide_Wide_String;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
-    is
-    begin
-       for J in Source'Range loop
-          Source (J) := Mapping (Source (J));
-       end loop;
-    end Translate;
- 
-    ----------
-    -- Trim --
-    ----------
- 
-    function Trim
-      (Source : Wide_Wide_String;
-       Side   : Trim_End) return Wide_Wide_String
-    is
-       Low  : Natural := Source'First;
-       High : Natural := Source'Last;
- 
-    begin
-       if Side = Left or else Side = Both then
-          while Low <= High and then Source (Low) = Wide_Wide_Space loop
-             Low := Low + 1;
-          end loop;
-       end if;
- 
-       if Side = Right or else Side = Both then
-          while High >= Low and then Source (High) = Wide_Wide_Space loop
-             High := High - 1;
-          end loop;
-       end if;
- 
-       --  All blanks case
- 
-       if Low > High then
-          return "";
- 
-       --  At least one non-blank
- 
-       else
-          declare
-             Result : constant Wide_Wide_String (1 .. High - Low + 1) :=
-               Source (Low .. High);
- 
-          begin
-             return Result;
-          end;
-       end if;
-    end Trim;
- 
-    procedure Trim
-      (Source  : in out Wide_Wide_String;
-       Side    : Trim_End;
-       Justify : Alignment      := Left;
-       Pad     : Wide_Wide_Character := Wide_Wide_Space)
-    is
-    begin
-       Move (Source  => Trim (Source, Side),
-             Target  => Source,
-             Justify => Justify,
-             Pad     => Pad);
-    end Trim;
- 
-    function Trim
-       (Source : Wide_Wide_String;
-        Left   : Wide_Wide_Maps.Wide_Wide_Character_Set;
-        Right  : Wide_Wide_Maps.Wide_Wide_Character_Set) return Wide_Wide_String
-    is
-       Low  : Natural := Source'First;
-       High : Natural := Source'Last;
- 
-    begin
-       while Low <= High and then Is_In (Source (Low), Left) loop
-          Low := Low + 1;
-       end loop;
- 
-       while High >= Low and then Is_In (Source (High), Right) loop
-          High := High - 1;
-       end loop;
- 
-       --  Case where source comprises only characters in the sets
- 
-       if Low > High then
-          return "";
-       else
-          declare
-             subtype WS is Wide_Wide_String (1 .. High - Low + 1);
- 
-          begin
-             return WS (Source (Low .. High));
-          end;
-       end if;
-    end Trim;
- 
-    procedure Trim
-       (Source  : in out Wide_Wide_String;
-        Left    : Wide_Wide_Maps.Wide_Wide_Character_Set;
-        Right   : Wide_Wide_Maps.Wide_Wide_Character_Set;
-        Justify : Alignment      := Strings.Left;
-        Pad     : Wide_Wide_Character := Wide_Wide_Space)
-    is
-    begin
-       Move (Source  => Trim (Source, Left, Right),
-             Target  => Source,
-             Justify => Justify,
-             Pad     => Pad);
-    end Trim;
- 
- end Ada.Strings.Wide_Wide_Fixed;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-stzfix.ads gcc-8.1.0/gcc/ada/a-stzfix.ads
*** gcc-7.3.0/gcc/ada/a-stzfix.ads	Fri Oct  8 13:02:55 2010
--- gcc-8.1.0/gcc/ada/a-stzfix.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,264 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --          A D A . S T R I N G S . W I D E _ W I D E _ F I X E D           --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Strings.Wide_Wide_Maps;
- 
- package Ada.Strings.Wide_Wide_Fixed is
-    pragma Preelaborate;
- 
-    ------------------------------------------------------------------------
-    -- Copy Procedure for Wide_Wide_Strings of Possibly Different Lengths --
-    ------------------------------------------------------------------------
- 
-    procedure Move
-      (Source  : Wide_Wide_String;
-       Target  : out Wide_Wide_String;
-       Drop    : Truncation := Error;
-       Justify : Alignment  := Left;
-       Pad     : Wide_Wide_Character  := Ada.Strings.Wide_Wide_Space);
- 
-    ------------------------
-    -- Search Subprograms --
-    ------------------------
- 
-    function Index
-      (Source  : Wide_Wide_String;
-       Pattern : Wide_Wide_String;
-       Going   : Direction := Forward;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping :=
-                   Wide_Wide_Maps.Identity) return Natural;
- 
-    function Index
-      (Source  : Wide_Wide_String;
-       Pattern : Wide_Wide_String;
-       Going   : Direction := Forward;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
-       return Natural;
- 
-    function Index
-      (Source : Wide_Wide_String;
-       Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       Test   : Membership := Inside;
-       Going  : Direction  := Forward) return Natural;
- 
-    function Index
-      (Source  : Wide_Wide_String;
-       Pattern : Wide_Wide_String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping :=
-                   Wide_Wide_Maps.Identity)
-       return Natural;
-    pragma Ada_05 (Index);
- 
-    function Index
-      (Source  : Wide_Wide_String;
-       Pattern : Wide_Wide_String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
-       return Natural;
-    pragma Ada_05 (Index);
- 
-    function Index
-      (Source  : Wide_Wide_String;
-       Set     : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       From    : Positive;
-       Test    : Membership := Inside;
-       Going   : Direction := Forward) return Natural;
-    pragma Ada_05 (Index);
- 
-    function Index_Non_Blank
-      (Source : Wide_Wide_String;
-       Going  : Direction := Forward) return Natural;
- 
-    function Index_Non_Blank
-      (Source : Wide_Wide_String;
-       From   : Positive;
-       Going  : Direction := Forward) return Natural;
-    pragma Ada_05 (Index_Non_Blank);
- 
-    function Count
-      (Source  : Wide_Wide_String;
-       Pattern : Wide_Wide_String;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping :=
-                   Wide_Wide_Maps.Identity)
-       return Natural;
- 
-    function Count
-      (Source  : Wide_Wide_String;
-       Pattern : Wide_Wide_String;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
-       return Natural;
- 
-    function Count
-      (Source : Wide_Wide_String;
-       Set    : Wide_Wide_Maps.Wide_Wide_Character_Set) return Natural;
- 
-    procedure Find_Token
-      (Source : Wide_Wide_String;
-       Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       From   : Positive;
-       Test   : Membership;
-       First  : out Positive;
-       Last   : out Natural);
-    pragma Ada_2012 (Find_Token);
- 
-    procedure Find_Token
-      (Source : Wide_Wide_String;
-       Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       Test   : Membership;
-       First  : out Positive;
-       Last   : out Natural);
- 
-    ----------------------------------------------
-    -- Wide_Wide_String Translation Subprograms --
-    ----------------------------------------------
- 
-    function Translate
-      (Source  : Wide_Wide_String;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping)
-       return Wide_Wide_String;
- 
-    procedure Translate
-      (Source  : in out Wide_Wide_String;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping);
- 
-    function Translate
-      (Source  : Wide_Wide_String;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
-       return Wide_Wide_String;
- 
-    procedure Translate
-      (Source  : in out Wide_Wide_String;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function);
- 
-    -------------------------------------------------
-    -- Wide_Wide_String Transformation Subprograms --
-    -------------------------------------------------
- 
-    function Replace_Slice
-      (Source : Wide_Wide_String;
-       Low    : Positive;
-       High   : Natural;
-       By     : Wide_Wide_String) return Wide_Wide_String;
- 
-    procedure Replace_Slice
-      (Source  : in out Wide_Wide_String;
-       Low     : Positive;
-       High    : Natural;
-       By      : Wide_Wide_String;
-       Drop    : Truncation := Error;
-       Justify : Alignment  := Left;
-       Pad     : Wide_Wide_Character  := Ada.Strings.Wide_Wide_Space);
- 
-    function Insert
-      (Source   : Wide_Wide_String;
-       Before   : Positive;
-       New_Item : Wide_Wide_String) return Wide_Wide_String;
- 
-    procedure Insert
-      (Source   : in out Wide_Wide_String;
-       Before   : Positive;
-       New_Item : Wide_Wide_String;
-       Drop     : Truncation := Error);
- 
-    function Overwrite
-      (Source   : Wide_Wide_String;
-       Position : Positive;
-       New_Item : Wide_Wide_String) return Wide_Wide_String;
- 
-    procedure Overwrite
-      (Source   : in out Wide_Wide_String;
-       Position : Positive;
-       New_Item : Wide_Wide_String;
-       Drop     : Truncation := Right);
- 
-    function Delete
-      (Source  : Wide_Wide_String;
-       From    : Positive;
-       Through : Natural) return Wide_Wide_String;
- 
-    procedure Delete
-      (Source  : in out Wide_Wide_String;
-       From    : Positive;
-       Through : Natural;
-       Justify : Alignment := Left;
-       Pad     : Wide_Wide_Character := Ada.Strings.Wide_Wide_Space);
- 
-    -------------------------------------------
-    -- Wide_Wide_String Selector Subprograms --
-    -------------------------------------------
- 
-    function Trim
-      (Source : Wide_Wide_String;
-       Side   : Trim_End) return Wide_Wide_String;
- 
-    procedure Trim
-      (Source  : in out Wide_Wide_String;
-       Side    : Trim_End;
-       Justify : Alignment      := Left;
-       Pad     : Wide_Wide_Character := Wide_Wide_Space);
- 
-    function Trim
-      (Source : Wide_Wide_String;
-       Left   : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       Right  : Wide_Wide_Maps.Wide_Wide_Character_Set)
-       return Wide_Wide_String;
- 
-    procedure Trim
-      (Source  : in out Wide_Wide_String;
-       Left    : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       Right   : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       Justify : Alignment := Ada.Strings.Left;
-       Pad     : Wide_Wide_Character := Ada.Strings.Wide_Wide_Space);
- 
-    function Head
-      (Source : Wide_Wide_String;
-       Count  : Natural;
-       Pad    : Wide_Wide_Character := Ada.Strings.Wide_Wide_Space)
-       return Wide_Wide_String;
- 
-    procedure Head
-      (Source  : in out Wide_Wide_String;
-       Count   : Natural;
-       Justify : Alignment := Left;
-       Pad     : Wide_Wide_Character := Ada.Strings.Wide_Wide_Space);
- 
-    function Tail
-      (Source : Wide_Wide_String;
-       Count  : Natural;
-       Pad    : Wide_Wide_Character := Ada.Strings.Wide_Wide_Space)
-       return Wide_Wide_String;
- 
-    procedure Tail
-      (Source  : in out Wide_Wide_String;
-       Count   : Natural;
-       Justify : Alignment := Left;
-       Pad     : Wide_Wide_Character := Ada.Strings.Wide_Wide_Space);
- 
-    --------------------------------------------
-    -- Wide_Wide_String Constructor Functions --
-    --------------------------------------------
- 
-    function "*"
-      (Left  : Natural;
-       Right : Wide_Wide_Character) return Wide_Wide_String;
- 
-    function "*"
-      (Left  : Natural;
-       Right : Wide_Wide_String) return Wide_Wide_String;
- 
- end Ada.Strings.Wide_Wide_Fixed;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-stzhas.adb gcc-8.1.0/gcc/ada/a-stzhas.adb
*** gcc-7.3.0/gcc/ada/a-stzhas.adb	Tue Jun 23 10:06:00 2009
--- gcc-8.1.0/gcc/ada/a-stzhas.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,36 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --            A D A . S T R I N G S . W I D E _ W I D E _ H A S H           --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --             Copyright (C) 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- --
- -- 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 does not require a body, since it is an instantiation. We
- --  provide a dummy file containing a No_Body pragma so that previous versions
- --  of the body (which did exist) will not interfere.
- 
- pragma No_Body;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-stzhas.ads gcc-8.1.0/gcc/ada/a-stzhas.ads
*** gcc-7.3.0/gcc/ada/a-stzhas.ads	Tue Jun 23 09:49:38 2009
--- gcc-8.1.0/gcc/ada/a-stzhas.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,25 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --            A D A . S T R I N G S . W I D E _ W I D E _ H A S H           --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Is this really an RM unit? Doc needed???
- 
- with Ada.Containers;
- with System.String_Hash;
- 
- function Ada.Strings.Wide_Wide_Hash
- is new System.String_Hash.Hash
-   (Wide_Wide_Character, Wide_Wide_String, Containers.Hash_Type);
- 
- pragma Pure (Ada.Strings.Wide_Wide_Hash);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-stzmap.adb gcc-8.1.0/gcc/ada/a-stzmap.adb
*** gcc-7.3.0/gcc/ada/a-stzmap.adb	Wed Nov 18 10:31:53 2015
--- gcc-8.1.0/gcc/ada/a-stzmap.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,747 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --           A D A . S T R I N G S . W I D E _ W I D E _ M A P S            --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Unchecked_Deallocation;
- 
- package body Ada.Strings.Wide_Wide_Maps is
- 
-    ---------
-    -- "-" --
-    ---------
- 
-    function "-"
-      (Left, Right : Wide_Wide_Character_Set) return Wide_Wide_Character_Set
-    is
-       LS : constant Wide_Wide_Character_Ranges_Access := Left.Set;
-       RS : constant Wide_Wide_Character_Ranges_Access := Right.Set;
- 
-       Result : Wide_Wide_Character_Ranges (1 .. LS'Last + RS'Last);
-       --  Each range on the right can generate at least one more range in
-       --  the result, by splitting one of the left operand ranges.
- 
-       N  : Natural := 0;
-       R  : Natural := 1;
-       L  : Natural := 1;
- 
-       Left_Low : Wide_Wide_Character;
-       --  Left_Low is lowest character of the L'th range not yet dealt with
- 
-    begin
-       if LS'Last = 0 or else RS'Last = 0 then
-          return Left;
-       end if;
- 
-       Left_Low := LS (L).Low;
-       while R <= RS'Last loop
- 
-          --  If next right range is below current left range, skip it
- 
-          if RS (R).High < Left_Low then
-             R := R + 1;
- 
-          --  If next right range above current left range, copy remainder of
-          --  the left range to the result
- 
-          elsif RS (R).Low > LS (L).High then
-             N := N + 1;
-             Result (N).Low  := Left_Low;
-             Result (N).High := LS (L).High;
-             L := L + 1;
-             exit when L > LS'Last;
-             Left_Low := LS (L).Low;
- 
-          else
-             --  Next right range overlaps bottom of left range
- 
-             if RS (R).Low <= Left_Low then
- 
-                --  Case of right range complete overlaps left range
- 
-                if RS (R).High >= LS (L).High then
-                   L := L + 1;
-                   exit when L > LS'Last;
-                   Left_Low := LS (L).Low;
- 
-                --  Case of right range eats lower part of left range
- 
-                else
-                   Left_Low := Wide_Wide_Character'Succ (RS (R).High);
-                   R := R + 1;
-                end if;
- 
-             --  Next right range overlaps some of left range, but not bottom
- 
-             else
-                N := N + 1;
-                Result (N).Low  := Left_Low;
-                Result (N).High := Wide_Wide_Character'Pred (RS (R).Low);
- 
-                --  Case of right range splits left range
- 
-                if RS (R).High < LS (L).High then
-                   Left_Low := Wide_Wide_Character'Succ (RS (R).High);
-                   R := R + 1;
- 
-                --  Case of right range overlaps top of left range
- 
-                else
-                   L := L + 1;
-                   exit when L > LS'Last;
-                   Left_Low := LS (L).Low;
-                end if;
-             end if;
-          end if;
-       end loop;
- 
-       --  Copy remainder of left ranges to result
- 
-       if L <= LS'Last then
-          N := N + 1;
-          Result (N).Low  := Left_Low;
-          Result (N).High := LS (L).High;
- 
-          loop
-             L := L + 1;
-             exit when L > LS'Last;
-             N := N + 1;
-             Result (N) := LS (L);
-          end loop;
-       end if;
- 
-       return (AF.Controlled with
-               Set => new Wide_Wide_Character_Ranges'(Result (1 .. N)));
-    end "-";
- 
-    ---------
-    -- "=" --
-    ---------
- 
-    --  The sorted, discontiguous form is canonical, so equality can be used
- 
-    function "=" (Left, Right : Wide_Wide_Character_Set) return Boolean is
-    begin
-       return Left.Set.all = Right.Set.all;
-    end "=";
- 
-    -----------
-    -- "and" --
-    -----------
- 
-    function "and"
-      (Left, Right : Wide_Wide_Character_Set) return Wide_Wide_Character_Set
-    is
-       LS : constant Wide_Wide_Character_Ranges_Access := Left.Set;
-       RS : constant Wide_Wide_Character_Ranges_Access := Right.Set;
- 
-       Result : Wide_Wide_Character_Ranges (1 .. LS'Last + RS'Last);
-       N      : Natural := 0;
-       L, R   : Natural := 1;
- 
-    begin
-       --  Loop to search for overlapping character ranges
- 
-       while L <= LS'Last and then R <= RS'Last loop
- 
-          if LS (L).High < RS (R).Low then
-             L := L + 1;
- 
-          elsif RS (R).High < LS (L).Low then
-             R := R + 1;
- 
-          --  Here we have LS (L).High >= RS (R).Low
-          --           and RS (R).High >= LS (L).Low
-          --  so we have an overlapping range
- 
-          else
-             N := N + 1;
-             Result (N).Low :=
-               Wide_Wide_Character'Max (LS (L).Low,  RS (R).Low);
-             Result (N).High :=
-               Wide_Wide_Character'Min (LS (L).High, RS (R).High);
- 
-             if RS (R).High = LS (L).High then
-                L := L + 1;
-                R := R + 1;
-             elsif RS (R).High < LS (L).High then
-                R := R + 1;
-             else
-                L := L + 1;
-             end if;
-          end if;
-       end loop;
- 
-       return (AF.Controlled with
-               Set => new Wide_Wide_Character_Ranges'(Result (1 .. N)));
-    end "and";
- 
-    -----------
-    -- "not" --
-    -----------
- 
-    function "not"
-      (Right : Wide_Wide_Character_Set) return Wide_Wide_Character_Set
-    is
-       RS : constant Wide_Wide_Character_Ranges_Access := Right.Set;
- 
-       Result : Wide_Wide_Character_Ranges (1 .. RS'Last + 1);
-       N      : Natural := 0;
- 
-    begin
-       if RS'Last = 0 then
-          N := 1;
-          Result (1) := (Low  => Wide_Wide_Character'First,
-                         High => Wide_Wide_Character'Last);
- 
-       else
-          if RS (1).Low /= Wide_Wide_Character'First then
-             N := N + 1;
-             Result (N).Low  := Wide_Wide_Character'First;
-             Result (N).High := Wide_Wide_Character'Pred (RS (1).Low);
-          end if;
- 
-          for K in 1 .. RS'Last - 1 loop
-             N := N + 1;
-             Result (N).Low  := Wide_Wide_Character'Succ (RS (K).High);
-             Result (N).High := Wide_Wide_Character'Pred (RS (K + 1).Low);
-          end loop;
- 
-          if RS (RS'Last).High /= Wide_Wide_Character'Last then
-             N := N + 1;
-             Result (N).Low  := Wide_Wide_Character'Succ (RS (RS'Last).High);
-             Result (N).High := Wide_Wide_Character'Last;
-          end if;
-       end if;
- 
-       return (AF.Controlled with
-               Set => new Wide_Wide_Character_Ranges'(Result (1 .. N)));
-    end "not";
- 
-    ----------
-    -- "or" --
-    ----------
- 
-    function "or"
-      (Left, Right : Wide_Wide_Character_Set) return Wide_Wide_Character_Set
-    is
-       LS : constant Wide_Wide_Character_Ranges_Access := Left.Set;
-       RS : constant Wide_Wide_Character_Ranges_Access := Right.Set;
- 
-       Result : Wide_Wide_Character_Ranges (1 .. LS'Last + RS'Last);
-       N      : Natural;
-       L, R   : Natural;
- 
-    begin
-       N := 0;
-       L := 1;
-       R := 1;
- 
-       --  Loop through ranges in output file
- 
-       loop
-          --  If no left ranges left, copy next right range
- 
-          if L > LS'Last then
-             exit when R > RS'Last;
-             N := N + 1;
-             Result (N) := RS (R);
-             R := R + 1;
- 
-          --  If no right ranges left, copy next left range
- 
-          elsif R > RS'Last then
-             N := N + 1;
-             Result (N) := LS (L);
-             L := L + 1;
- 
-          else
-             --  We have two ranges, choose lower one
- 
-             N := N + 1;
- 
-             if LS (L).Low <= RS (R).Low then
-                Result (N) := LS (L);
-                L := L + 1;
-             else
-                Result (N) := RS (R);
-                R := R + 1;
-             end if;
- 
-             --  Loop to collapse ranges into last range
- 
-             loop
-                --  Collapse next length range into current result range
-                --  if possible.
- 
-                if L <= LS'Last
-                  and then LS (L).Low <=
-                           Wide_Wide_Character'Succ (Result (N).High)
-                then
-                   Result (N).High :=
-                     Wide_Wide_Character'Max (Result (N).High, LS (L).High);
-                   L := L + 1;
- 
-                --  Collapse next right range into current result range
-                --  if possible
- 
-                elsif R <= RS'Last
-                  and then RS (R).Low <=
-                             Wide_Wide_Character'Succ (Result (N).High)
-                then
-                   Result (N).High :=
-                     Wide_Wide_Character'Max (Result (N).High, RS (R).High);
-                   R := R + 1;
- 
-                --  If neither range collapses, then done with this range
- 
-                else
-                   exit;
-                end if;
-             end loop;
-          end if;
-       end loop;
- 
-       return (AF.Controlled with
-               Set => new Wide_Wide_Character_Ranges'(Result (1 .. N)));
-    end "or";
- 
-    -----------
-    -- "xor" --
-    -----------
- 
-    function "xor"
-      (Left, Right : Wide_Wide_Character_Set) return Wide_Wide_Character_Set
-    is
-    begin
-       return (Left or Right) - (Left and Right);
-    end "xor";
- 
-    ------------
-    -- Adjust --
-    ------------
- 
-    procedure Adjust (Object : in out Wide_Wide_Character_Mapping) is
-    begin
-       Object.Map := new Wide_Wide_Character_Mapping_Values'(Object.Map.all);
-    end Adjust;
- 
-    procedure Adjust (Object : in out Wide_Wide_Character_Set) is
-    begin
-       Object.Set := new Wide_Wide_Character_Ranges'(Object.Set.all);
-    end Adjust;
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    procedure Finalize (Object : in out Wide_Wide_Character_Mapping) is
- 
-       procedure Free is new Ada.Unchecked_Deallocation
-         (Wide_Wide_Character_Mapping_Values,
-          Wide_Wide_Character_Mapping_Values_Access);
- 
-    begin
-       if Object.Map /= Null_Map'Unrestricted_Access then
-          Free (Object.Map);
-       end if;
-    end Finalize;
- 
-    procedure Finalize (Object : in out Wide_Wide_Character_Set) is
- 
-       procedure Free is new Ada.Unchecked_Deallocation
-         (Wide_Wide_Character_Ranges,
-          Wide_Wide_Character_Ranges_Access);
- 
-    begin
-       if Object.Set /= Null_Range'Unrestricted_Access then
-          Free (Object.Set);
-       end if;
-    end Finalize;
- 
-    ----------------
-    -- Initialize --
-    ----------------
- 
-    procedure Initialize (Object : in out Wide_Wide_Character_Mapping) is
-    begin
-       Object := Identity;
-    end Initialize;
- 
-    procedure Initialize (Object : in out Wide_Wide_Character_Set) is
-    begin
-       Object := Null_Set;
-    end Initialize;
- 
-    -----------
-    -- Is_In --
-    -----------
- 
-    function Is_In
-      (Element : Wide_Wide_Character;
-       Set     : Wide_Wide_Character_Set) return Boolean
-    is
-       L, R, M : Natural;
-       SS      : constant Wide_Wide_Character_Ranges_Access := Set.Set;
- 
-    begin
-       L := 1;
-       R := SS'Last;
- 
-       --  Binary search loop. The invariant is that if Element is in any of
-       --  of the constituent ranges it is in one between Set (L) and Set (R).
- 
-       loop
-          if L > R then
-             return False;
- 
-          else
-             M := (L + R) / 2;
- 
-             if Element > SS (M).High then
-                L := M + 1;
-             elsif Element < SS (M).Low then
-                R := M - 1;
-             else
-                return True;
-             end if;
-          end if;
-       end loop;
-    end Is_In;
- 
-    ---------------
-    -- Is_Subset --
-    ---------------
- 
-    function Is_Subset
-      (Elements : Wide_Wide_Character_Set;
-       Set      : Wide_Wide_Character_Set) return Boolean
-    is
-       ES : constant Wide_Wide_Character_Ranges_Access := Elements.Set;
-       SS : constant Wide_Wide_Character_Ranges_Access := Set.Set;
- 
-       S  : Positive := 1;
-       E  : Positive := 1;
- 
-    begin
-       loop
-          --  If no more element ranges, done, and result is true
- 
-          if E > ES'Last then
-             return True;
- 
-          --  If more element ranges, but no more set ranges, result is false
- 
-          elsif S > SS'Last then
-             return False;
- 
-          --  Remove irrelevant set range
- 
-          elsif SS (S).High < ES (E).Low then
-             S := S + 1;
- 
-          --  Get rid of element range that is properly covered by set
- 
-          elsif SS (S).Low <= ES (E).Low
-             and then ES (E).High <= SS (S).High
-          then
-             E := E + 1;
- 
-          --  Otherwise we have a non-covered element range, result is false
- 
-          else
-             return False;
-          end if;
-       end loop;
-    end Is_Subset;
- 
-    ---------------
-    -- To_Domain --
-    ---------------
- 
-    function To_Domain
-      (Map : Wide_Wide_Character_Mapping) return Wide_Wide_Character_Sequence
-    is
-    begin
-       return Map.Map.Domain;
-    end To_Domain;
- 
-    ----------------
-    -- To_Mapping --
-    ----------------
- 
-    function To_Mapping
-      (From, To : Wide_Wide_Character_Sequence)
-      return Wide_Wide_Character_Mapping
-    is
-       Domain : Wide_Wide_Character_Sequence (1 .. From'Length);
-       Rangev : Wide_Wide_Character_Sequence (1 .. To'Length);
-       N      : Natural := 0;
- 
-    begin
-       if From'Length /= To'Length then
-          raise Translation_Error;
- 
-       else
-          pragma Warnings (Off); -- apparent uninit use of Domain
- 
-          for J in From'Range loop
-             for M in 1 .. N loop
-                if From (J) = Domain (M) then
-                   raise Translation_Error;
-                elsif From (J) < Domain (M) then
-                   Domain (M + 1 .. N + 1) := Domain (M .. N);
-                   Rangev (M + 1 .. N + 1) := Rangev (M .. N);
-                   Domain (M) := From (J);
-                   Rangev (M) := To   (J);
-                   goto Continue;
-                end if;
-             end loop;
- 
-             Domain (N + 1) := From (J);
-             Rangev (N + 1) := To   (J);
- 
-             <<Continue>>
-                N := N + 1;
-          end loop;
- 
-          pragma Warnings (On);
- 
-          return (AF.Controlled with
-                  Map => new Wide_Wide_Character_Mapping_Values'(
-                           Length => N,
-                           Domain => Domain (1 .. N),
-                           Rangev => Rangev (1 .. N)));
-       end if;
-    end To_Mapping;
- 
-    --------------
-    -- To_Range --
-    --------------
- 
-    function To_Range
-      (Map : Wide_Wide_Character_Mapping) return Wide_Wide_Character_Sequence
-    is
-    begin
-       return Map.Map.Rangev;
-    end To_Range;
- 
-    ---------------
-    -- To_Ranges --
-    ---------------
- 
-    function To_Ranges
-      (Set : Wide_Wide_Character_Set) return Wide_Wide_Character_Ranges
-    is
-    begin
-       return Set.Set.all;
-    end To_Ranges;
- 
-    -----------------
-    -- To_Sequence --
-    -----------------
- 
-    function To_Sequence
-      (Set : Wide_Wide_Character_Set) return Wide_Wide_Character_Sequence
-    is
-       SS    : constant Wide_Wide_Character_Ranges_Access := Set.Set;
-       N     : Natural := 0;
-       Count : Natural := 0;
- 
-    begin
-       for J in SS'Range loop
-          Count :=
-            Count + (Wide_Wide_Character'Pos (SS (J).High) -
-                     Wide_Wide_Character'Pos (SS (J).Low) + 1);
-       end loop;
- 
-       return Result : Wide_Wide_String (1 .. Count) do
-          for J in SS'Range loop
-             for K in SS (J).Low .. SS (J).High loop
-                N := N + 1;
-                Result (N) := K;
-             end loop;
-          end loop;
-       end return;
-    end To_Sequence;
- 
-    ------------
-    -- To_Set --
-    ------------
- 
-    --  Case of multiple range input
- 
-    function To_Set
-      (Ranges : Wide_Wide_Character_Ranges) return Wide_Wide_Character_Set
-    is
-       Result : Wide_Wide_Character_Ranges (Ranges'Range);
-       N      : Natural := 0;
-       J      : Natural;
- 
-    begin
-       --  The output of To_Set is required to be sorted by increasing Low
-       --  values, and discontiguous, so first we sort them as we enter them,
-       --  using a simple insertion sort.
- 
-       pragma Warnings (Off);
-       --  Kill bogus warning on Result being uninitialized
- 
-       for J in Ranges'Range loop
-          for K in 1 .. N loop
-             if Ranges (J).Low < Result (K).Low then
-                Result (K + 1 .. N + 1) := Result (K .. N);
-                Result (K) := Ranges (J);
-                goto Continue;
-             end if;
-          end loop;
- 
-          Result (N + 1) := Ranges (J);
- 
-          <<Continue>>
-             N := N + 1;
-       end loop;
- 
-       pragma Warnings (On);
- 
-       --  Now collapse any contiguous or overlapping ranges
- 
-       J := 1;
-       while J < N loop
-          if Result (J).High < Result (J).Low then
-             N := N - 1;
-             Result (J .. N) := Result (J + 1 .. N + 1);
- 
-          elsif Wide_Wide_Character'Succ (Result (J).High) >=
-            Result (J + 1).Low
-          then
-             Result (J).High :=
-               Wide_Wide_Character'Max (Result (J).High, Result (J + 1).High);
- 
-             N := N - 1;
-             Result (J + 1 .. N) := Result (J + 2 .. N + 1);
- 
-          else
-             J := J + 1;
-          end if;
-       end loop;
- 
-       if Result (N).High < Result (N).Low then
-          N := N - 1;
-       end if;
- 
-       return (AF.Controlled with
-               Set => new Wide_Wide_Character_Ranges'(Result (1 .. N)));
-    end To_Set;
- 
-    --  Case of single range input
- 
-    function To_Set
-      (Span : Wide_Wide_Character_Range) return Wide_Wide_Character_Set
-    is
-    begin
-       if Span.Low > Span.High then
-          return Null_Set;
-          --  This is safe, because there is no procedure with parameter
-          --  Wide_Wide_Character_Set of mode "out" or "in out".
- 
-       else
-          return (AF.Controlled with
-                  Set => new Wide_Wide_Character_Ranges'(1 => Span));
-       end if;
-    end To_Set;
- 
-    --  Case of wide string input
- 
-    function To_Set
-      (Sequence : Wide_Wide_Character_Sequence) return Wide_Wide_Character_Set
-    is
-       R : Wide_Wide_Character_Ranges (1 .. Sequence'Length);
- 
-    begin
-       for J in R'Range loop
-          R (J) := (Sequence (J), Sequence (J));
-       end loop;
- 
-       return To_Set (R);
-    end To_Set;
- 
-    --  Case of single wide character input
- 
-    function To_Set
-      (Singleton : Wide_Wide_Character) return Wide_Wide_Character_Set
-    is
-    begin
-       return
-         (AF.Controlled with
-          Set => new Wide_Wide_Character_Ranges'(1 => (Singleton, Singleton)));
-    end To_Set;
- 
-    -----------
-    -- Value --
-    -----------
- 
-    function Value
-      (Map     : Wide_Wide_Character_Mapping;
-       Element : Wide_Wide_Character) return Wide_Wide_Character
-    is
-       L, R, M : Natural;
- 
-       MV : constant Wide_Wide_Character_Mapping_Values_Access := Map.Map;
- 
-    begin
-       L := 1;
-       R := MV.Domain'Last;
- 
-       --  Binary search loop
- 
-       loop
-          --  If not found, identity
- 
-          if L > R then
-             return Element;
- 
-          --  Otherwise do binary divide
- 
-          else
-             M := (L + R) / 2;
- 
-             if Element < MV.Domain (M) then
-                R := M - 1;
- 
-             elsif Element > MV.Domain (M) then
-                L := M + 1;
- 
-             else --  Element = MV.Domain (M) then
-                return MV.Rangev (M);
-             end if;
-          end if;
-       end loop;
-    end Value;
- 
- end Ada.Strings.Wide_Wide_Maps;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-stzmap.ads gcc-8.1.0/gcc/ada/a-stzmap.ads
*** gcc-7.3.0/gcc/ada/a-stzmap.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-stzmap.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,242 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --           A D A . S T R I N G S . W I D E _ W I D E _ M A P S            --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2009, Free Software Foundation, 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Finalization;
- 
- package Ada.Strings.Wide_Wide_Maps is
-    pragma Preelaborate;
- 
-    ------------------------------------------
-    -- Wide_Wide_Character Set Declarations --
-    ------------------------------------------
- 
-    type Wide_Wide_Character_Set is private;
-    pragma Preelaborable_Initialization (Wide_Wide_Character_Set);
-    --  Representation for a set of Wide_Wide_Character values:
- 
-    Null_Set : constant Wide_Wide_Character_Set;
- 
-    -----------------------------------------------
-    -- Constructors for Wide_Wide_Character Sets --
-    -----------------------------------------------
- 
-    type Wide_Wide_Character_Range is record
-       Low  : Wide_Wide_Character;
-       High : Wide_Wide_Character;
-    end record;
-    --  Represents Wide_Wide_Character range Low .. High
- 
-    type Wide_Wide_Character_Ranges is
-      array (Positive range <>) of Wide_Wide_Character_Range;
- 
-    function To_Set
-      (Ranges : Wide_Wide_Character_Ranges) return Wide_Wide_Character_Set;
- 
-    function To_Set
-      (Span : Wide_Wide_Character_Range) return Wide_Wide_Character_Set;
- 
-    function To_Ranges
-      (Set : Wide_Wide_Character_Set) return Wide_Wide_Character_Ranges;
- 
-    ---------------------------------------
-    -- Operations on Wide Character Sets --
-    ---------------------------------------
- 
-    function "=" (Left, Right : Wide_Wide_Character_Set) return Boolean;
- 
-    function "not"
-      (Right : Wide_Wide_Character_Set) return Wide_Wide_Character_Set;
- 
-    function "and"
-      (Left, Right : Wide_Wide_Character_Set) return Wide_Wide_Character_Set;
- 
-    function "or"
-      (Left, Right : Wide_Wide_Character_Set) return Wide_Wide_Character_Set;
- 
-    function "xor"
-      (Left, Right : Wide_Wide_Character_Set) return Wide_Wide_Character_Set;
- 
-    function "-"
-      (Left, Right : Wide_Wide_Character_Set) return Wide_Wide_Character_Set;
- 
-    function Is_In
-      (Element : Wide_Wide_Character;
-       Set     : Wide_Wide_Character_Set) return Boolean;
- 
-    function Is_Subset
-      (Elements : Wide_Wide_Character_Set;
-       Set      : Wide_Wide_Character_Set) return Boolean;
- 
-    function "<="
-      (Left  : Wide_Wide_Character_Set;
-       Right : Wide_Wide_Character_Set) return Boolean
-    renames Is_Subset;
- 
-    subtype Wide_Wide_Character_Sequence is Wide_Wide_String;
-    --  Alternative representation for a set of character values
- 
-    function To_Set
-      (Sequence : Wide_Wide_Character_Sequence) return Wide_Wide_Character_Set;
- 
-    function To_Set
-      (Singleton : Wide_Wide_Character) return Wide_Wide_Character_Set;
- 
-    function To_Sequence
-      (Set : Wide_Wide_Character_Set) return Wide_Wide_Character_Sequence;
- 
-    ----------------------------------------------
-    -- Wide_Wide_Character Mapping Declarations --
-    ----------------------------------------------
- 
-    type Wide_Wide_Character_Mapping is private;
-    pragma Preelaborable_Initialization (Wide_Wide_Character_Mapping);
-    --  Representation for a wide character to wide character mapping:
- 
-    function Value
-      (Map     : Wide_Wide_Character_Mapping;
-       Element : Wide_Wide_Character) return Wide_Wide_Character;
- 
-    Identity : constant Wide_Wide_Character_Mapping;
- 
-    --------------------------------------
-    -- Operations on Wide Wide Mappings --
-    ---------------------------------------
- 
-    function To_Mapping
-      (From, To : Wide_Wide_Character_Sequence)
-       return Wide_Wide_Character_Mapping;
- 
-    function To_Domain
-      (Map : Wide_Wide_Character_Mapping) return Wide_Wide_Character_Sequence;
- 
-    function To_Range
-      (Map : Wide_Wide_Character_Mapping) return Wide_Wide_Character_Sequence;
- 
-    type Wide_Wide_Character_Mapping_Function is
-       access function (From : Wide_Wide_Character) return Wide_Wide_Character;
- 
- private
-    package AF renames Ada.Finalization;
- 
-    -----------------------------------------------
-    -- Representation of Wide_Wide_Character_Set --
-    -----------------------------------------------
- 
-    --  A wide character set is represented as a sequence of wide character
-    --  ranges (i.e. an object of type Wide_Wide_Character_Ranges) in which the
-    --  following hold:
- 
-    --    The lower bound is 1
-    --    The ranges are in order by increasing Low values
-    --    The ranges are non-overlapping and discontigous
- 
-    --  A character value is in the set if it is contained in one of the
-    --  ranges. The actual Wide_Wide_Character_Set value is a controlled pointer
-    --  to this Wide_Wide_Character_Ranges value. The use of a controlled type
-    --  is necessary to prevent storage leaks.
- 
-    type Wide_Wide_Character_Ranges_Access is
-      access all Wide_Wide_Character_Ranges;
- 
-    type Wide_Wide_Character_Set is new AF.Controlled with record
-       Set : Wide_Wide_Character_Ranges_Access;
-    end record;
- 
-    pragma Finalize_Storage_Only (Wide_Wide_Character_Set);
-    --  This avoids useless finalizations, and, more importantly avoids
-    --  incorrect attempts to finalize constants that are statically
-    --  declared here and in Ada.Strings.Wide_Wide_Maps, which is incorrect.
- 
-    procedure Initialize (Object : in out Wide_Wide_Character_Set);
-    procedure Adjust     (Object : in out Wide_Wide_Character_Set);
-    procedure Finalize   (Object : in out Wide_Wide_Character_Set);
- 
-    Null_Range : aliased constant Wide_Wide_Character_Ranges :=
-                   (1 .. 0 => (Low => ' ', High => ' '));
- 
-    Null_Set : constant Wide_Wide_Character_Set :=
-                 (AF.Controlled with
-                  Set => Null_Range'Unrestricted_Access);
- 
-    ---------------------------------------------------
-    -- Representation of Wide_Wide_Character_Mapping --
-    ---------------------------------------------------
- 
-    --  A wide character mapping is represented as two strings of equal
-    --  length, where any character appearing in Domain is mapped to the
-    --  corresponding character in Rangev. A character not appearing in
-    --  Domain is mapped to itself. The characters in Domain are sorted
-    --  in ascending order.
- 
-    --  The actual Wide_Wide_Character_Mapping value is a controlled record
-    --  that contains a pointer to a discriminated record containing the
-    --  range and domain values.
- 
-    --  Note: this representation is canonical, and the values stored in
-    --  Domain and Rangev are exactly the values that are returned by the
-    --  functions To_Domain and To_Range. The use of a controlled type is
-    --  necessary to prevent storage leaks.
- 
-    type Wide_Wide_Character_Mapping_Values (Length : Natural) is record
-       Domain : Wide_Wide_Character_Sequence (1 .. Length);
-       Rangev : Wide_Wide_Character_Sequence (1 .. Length);
-    end record;
- 
-    type Wide_Wide_Character_Mapping_Values_Access is
-      access all Wide_Wide_Character_Mapping_Values;
- 
-    type Wide_Wide_Character_Mapping is new AF.Controlled with record
-       Map : Wide_Wide_Character_Mapping_Values_Access;
-    end record;
- 
-    pragma Finalize_Storage_Only (Wide_Wide_Character_Mapping);
-    --  This avoids useless finalizations, and, more importantly avoids
-    --  incorrect attempts to finalize constants that are statically
-    --  declared here and in Ada.Strings.Wide_Wide_Maps, which is incorrect.
- 
-    procedure Initialize (Object : in out Wide_Wide_Character_Mapping);
-    procedure Adjust     (Object : in out Wide_Wide_Character_Mapping);
-    procedure Finalize   (Object : in out Wide_Wide_Character_Mapping);
- 
-    Null_Map : aliased constant Wide_Wide_Character_Mapping_Values :=
-                  (Length => 0,
-                   Domain => "",
-                   Rangev => "");
- 
-    Identity : constant Wide_Wide_Character_Mapping :=
-                 (AF.Controlled with
-                  Map => Null_Map'Unrestricted_Access);
- 
- end Ada.Strings.Wide_Wide_Maps;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-stzsea.adb gcc-8.1.0/gcc/ada/a-stzsea.adb
*** gcc-7.3.0/gcc/ada/a-stzsea.adb	Tue May 26 10:29:25 2015
--- gcc-8.1.0/gcc/ada/a-stzsea.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,617 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --         A D A . S T R I N G S . W I D E _ W I D E _ S E A R C H          --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Strings.Wide_Wide_Maps; use Ada.Strings.Wide_Wide_Maps;
- with System; use System;
- 
- package body Ada.Strings.Wide_Wide_Search is
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    function Belongs
-      (Element : Wide_Wide_Character;
-       Set     : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       Test    : Membership) return Boolean;
-    pragma Inline (Belongs);
-    --  Determines if the given element is in (Test = Inside) or not in
-    --  (Test = Outside) the given character set.
- 
-    -------------
-    -- Belongs --
-    -------------
- 
-    function Belongs
-      (Element : Wide_Wide_Character;
-       Set     : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       Test    : Membership) return Boolean
-    is
-    begin
-       if Test = Inside then
-          return Is_In (Element, Set);
-       else
-          return not Is_In (Element, Set);
-       end if;
-    end Belongs;
- 
-    -----------
-    -- Count --
-    -----------
- 
-    function Count
-      (Source  : Wide_Wide_String;
-       Pattern : Wide_Wide_String;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping :=
-         Wide_Wide_Maps.Identity) return Natural
-    is
-       PL1 : constant Integer := Pattern'Length - 1;
-       Num : Natural;
-       Ind : Natural;
-       Cur : Natural;
- 
-    begin
-       if Pattern = "" then
-          raise Pattern_Error;
-       end if;
- 
-       Num := 0;
-       Ind := Source'First;
- 
-       --  Unmapped case
- 
-       if Mapping'Address = Wide_Wide_Maps.Identity'Address then
-          while Ind <= Source'Last - PL1 loop
-             if Pattern = Source (Ind .. Ind + PL1) then
-                Num := Num + 1;
-                Ind := Ind + Pattern'Length;
-             else
-                Ind := Ind + 1;
-             end if;
-          end loop;
- 
-       --  Mapped case
- 
-       else
-          while Ind <= Source'Last - PL1 loop
-             Cur := Ind;
-             for K in Pattern'Range loop
-                if Pattern (K) /= Value (Mapping, Source (Cur)) then
-                   Ind := Ind + 1;
-                   goto Cont;
-                else
-                   Cur := Cur + 1;
-                end if;
-             end loop;
- 
-             Num := Num + 1;
-             Ind := Ind + Pattern'Length;
- 
-          <<Cont>>
-             null;
-          end loop;
-       end if;
- 
-       --  Return result
- 
-       return Num;
-    end Count;
- 
-    function Count
-      (Source  : Wide_Wide_String;
-       Pattern : Wide_Wide_String;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
-       return Natural
-    is
-       PL1 : constant Integer := Pattern'Length - 1;
-       Num : Natural;
-       Ind : Natural;
-       Cur : Natural;
- 
-    begin
-       if Pattern = "" then
-          raise Pattern_Error;
-       end if;
- 
-       --  Check for null pointer in case checks are off
- 
-       if Mapping = null then
-          raise Constraint_Error;
-       end if;
- 
-       Num := 0;
-       Ind := Source'First;
-       while Ind <= Source'Last - PL1 loop
-          Cur := Ind;
-          for K in Pattern'Range loop
-             if Pattern (K) /= Mapping (Source (Cur)) then
-                Ind := Ind + 1;
-                goto Cont;
-             else
-                Cur := Cur + 1;
-             end if;
-          end loop;
- 
-          Num := Num + 1;
-          Ind := Ind + Pattern'Length;
- 
-       <<Cont>>
-          null;
-       end loop;
- 
-       return Num;
-    end Count;
- 
-    function Count
-      (Source : Wide_Wide_String;
-       Set : Wide_Wide_Maps.Wide_Wide_Character_Set) return Natural
-    is
-       N : Natural := 0;
- 
-    begin
-       for J in Source'Range loop
-          if Is_In (Source (J), Set) then
-             N := N + 1;
-          end if;
-       end loop;
- 
-       return N;
-    end Count;
- 
-    ----------------
-    -- Find_Token --
-    ----------------
- 
-    procedure Find_Token
-      (Source : Wide_Wide_String;
-       Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       From   : Positive;
-       Test   : Membership;
-       First  : out Positive;
-       Last   : out Natural)
-    is
-    begin
-       for J in From .. Source'Last loop
-          if Belongs (Source (J), Set, Test) then
-             First := J;
- 
-             for K in J + 1 .. Source'Last loop
-                if not Belongs (Source (K), Set, Test) then
-                   Last := K - 1;
-                   return;
-                end if;
-             end loop;
- 
-             --  Here if J indexes first char of token, and all chars after J
-             --  are in the token.
- 
-             Last := Source'Last;
-             return;
-          end if;
-       end loop;
- 
-       --  Here if no token found
- 
-       First := From;
-       Last  := 0;
-    end Find_Token;
- 
-    procedure Find_Token
-      (Source : Wide_Wide_String;
-       Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       Test   : Membership;
-       First  : out Positive;
-       Last   : out Natural)
-    is
-    begin
-       for J in Source'Range loop
-          if Belongs (Source (J), Set, Test) then
-             First := J;
- 
-             for K in J + 1 .. Source'Last loop
-                if not Belongs (Source (K), Set, Test) then
-                   Last := K - 1;
-                   return;
-                end if;
-             end loop;
- 
-             --  Here if J indexes first char of token, and all chars after J
-             --  are in the token.
- 
-             Last := Source'Last;
-             return;
-          end if;
-       end loop;
- 
-       --  Here if no token found
- 
-       --  RM 2005 A.4.3 (68/1) specifies that an exception must be raised if
-       --  Source'First is not positive and is assigned to First. Formulation
-       --  is slightly different in RM 2012, but the intent seems similar, so
-       --  we check explicitly for that condition.
- 
-       if Source'First not in Positive then
-          raise Constraint_Error;
- 
-       else
-          First := Source'First;
-          Last  := 0;
-       end if;
-    end Find_Token;
- 
-    -----------
-    -- Index --
-    -----------
- 
-    function Index
-      (Source  : Wide_Wide_String;
-       Pattern : Wide_Wide_String;
-       Going   : Direction := Forward;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping :=
-         Wide_Wide_Maps.Identity) return Natural
-    is
-       PL1 : constant Integer := Pattern'Length - 1;
-       Cur : Natural;
- 
-       Ind : Integer;
-       --  Index for start of match check. This can be negative if the pattern
-       --  length is greater than the string length, which is why this variable
-       --  is Integer instead of Natural. In this case, the search loops do not
-       --  execute at all, so this Ind value is never used.
- 
-    begin
-       if Pattern = "" then
-          raise Pattern_Error;
-       end if;
- 
-       --  Forwards case
- 
-       if Going = Forward then
-          Ind := Source'First;
- 
-          --  Unmapped forward case
- 
-          if Mapping'Address = Wide_Wide_Maps.Identity'Address then
-             for J in 1 .. Source'Length - PL1 loop
-                if Pattern = Source (Ind .. Ind + PL1) then
-                   return Ind;
-                else
-                   Ind := Ind + 1;
-                end if;
-             end loop;
- 
-          --  Mapped forward case
- 
-          else
-             for J in 1 .. Source'Length - PL1 loop
-                Cur := Ind;
- 
-                for K in Pattern'Range loop
-                   if Pattern (K) /= Value (Mapping, Source (Cur)) then
-                      goto Cont1;
-                   else
-                      Cur := Cur + 1;
-                   end if;
-                end loop;
- 
-                return Ind;
- 
-             <<Cont1>>
-                Ind := Ind + 1;
-             end loop;
-          end if;
- 
-       --  Backwards case
- 
-       else
-          --  Unmapped backward case
- 
-          Ind := Source'Last - PL1;
- 
-          if Mapping'Address = Wide_Wide_Maps.Identity'Address then
-             for J in reverse 1 .. Source'Length - PL1 loop
-                if Pattern = Source (Ind .. Ind + PL1) then
-                   return Ind;
-                else
-                   Ind := Ind - 1;
-                end if;
-             end loop;
- 
-          --  Mapped backward case
- 
-          else
-             for J in reverse 1 .. Source'Length - PL1 loop
-                Cur := Ind;
- 
-                for K in Pattern'Range loop
-                   if Pattern (K) /= Value (Mapping, Source (Cur)) then
-                      goto Cont2;
-                   else
-                      Cur := Cur + 1;
-                   end if;
-                end loop;
- 
-                return Ind;
- 
-             <<Cont2>>
-                Ind := Ind - 1;
-             end loop;
-          end if;
-       end if;
- 
-       --  Fall through if no match found. Note that the loops are skipped
-       --  completely in the case of the pattern being longer than the source.
- 
-       return 0;
-    end Index;
- 
-    function Index
-      (Source  : Wide_Wide_String;
-       Pattern : Wide_Wide_String;
-       Going   : Direction := Forward;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
-       return Natural
-    is
-       PL1 : constant Integer := Pattern'Length - 1;
-       Ind : Natural;
-       Cur : Natural;
- 
-    begin
-       if Pattern = "" then
-          raise Pattern_Error;
-       end if;
- 
-       --  Check for null pointer in case checks are off
- 
-       if Mapping = null then
-          raise Constraint_Error;
-       end if;
- 
-       --  If Pattern longer than Source it can't be found
- 
-       if Pattern'Length > Source'Length then
-          return 0;
-       end if;
- 
-       --  Forwards case
- 
-       if Going = Forward then
-          Ind := Source'First;
-          for J in 1 .. Source'Length - PL1 loop
-             Cur := Ind;
- 
-             for K in Pattern'Range loop
-                if Pattern (K) /= Mapping.all (Source (Cur)) then
-                   goto Cont1;
-                else
-                   Cur := Cur + 1;
-                end if;
-             end loop;
- 
-             return Ind;
- 
-          <<Cont1>>
-             Ind := Ind + 1;
-          end loop;
- 
-       --  Backwards case
- 
-       else
-          Ind := Source'Last - PL1;
-          for J in reverse 1 .. Source'Length - PL1 loop
-             Cur := Ind;
- 
-             for K in Pattern'Range loop
-                if Pattern (K) /= Mapping.all (Source (Cur)) then
-                   goto Cont2;
-                else
-                   Cur := Cur + 1;
-                end if;
-             end loop;
- 
-             return Ind;
- 
-          <<Cont2>>
-             Ind := Ind - 1;
-          end loop;
-       end if;
- 
-       --  Fall through if no match found. Note that the loops are skipped
-       --  completely in the case of the pattern being longer than the source.
- 
-       return 0;
-    end Index;
- 
-    function Index
-      (Source : Wide_Wide_String;
-       Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       Test   : Membership := Inside;
-       Going  : Direction  := Forward) return Natural
-    is
-    begin
-       --  Forwards case
- 
-       if Going = Forward then
-          for J in Source'Range loop
-             if Belongs (Source (J), Set, Test) then
-                return J;
-             end if;
-          end loop;
- 
-       --  Backwards case
- 
-       else
-          for J in reverse Source'Range loop
-             if Belongs (Source (J), Set, Test) then
-                return J;
-             end if;
-          end loop;
-       end if;
- 
-       --  Fall through if no match
- 
-       return 0;
-    end Index;
- 
-    function Index
-      (Source  : Wide_Wide_String;
-       Pattern : Wide_Wide_String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping :=
-         Wide_Wide_Maps.Identity) return Natural
-    is
-    begin
-       if Going = Forward then
-          if From < Source'First then
-             raise Index_Error;
-          end if;
- 
-          return
-            Index (Source (From .. Source'Last), Pattern, Forward, Mapping);
- 
-       else
-          if From > Source'Last then
-             raise Index_Error;
-          end if;
- 
-          return
-            Index (Source (Source'First .. From), Pattern, Backward, Mapping);
-       end if;
-    end Index;
- 
-    function Index
-      (Source  : Wide_Wide_String;
-       Pattern : Wide_Wide_String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
-       return Natural
-    is
-    begin
-       if Going = Forward then
-          if From < Source'First then
-             raise Index_Error;
-          end if;
- 
-          return Index
-            (Source (From .. Source'Last), Pattern, Forward, Mapping);
- 
-       else
-          if From > Source'Last then
-             raise Index_Error;
-          end if;
- 
-          return Index
-            (Source (Source'First .. From), Pattern, Backward, Mapping);
-       end if;
-    end Index;
- 
-    function Index
-      (Source  : Wide_Wide_String;
-       Set     : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       From    : Positive;
-       Test    : Membership := Inside;
-       Going   : Direction := Forward) return Natural
-    is
-    begin
-       if Going = Forward then
-          if From < Source'First then
-             raise Index_Error;
-          end if;
- 
-          return
-            Index (Source (From .. Source'Last), Set, Test, Forward);
- 
-       else
-          if From > Source'Last then
-             raise Index_Error;
-          end if;
- 
-          return
-            Index (Source (Source'First .. From), Set, Test, Backward);
-       end if;
-    end Index;
- 
-    ---------------------
-    -- Index_Non_Blank --
-    ---------------------
- 
-    function Index_Non_Blank
-      (Source : Wide_Wide_String;
-       Going  : Direction := Forward) return Natural
-    is
-    begin
-       if Going = Forward then
-          for J in Source'Range loop
-             if Source (J) /= Wide_Wide_Space then
-                return J;
-             end if;
-          end loop;
- 
-       else -- Going = Backward
-          for J in reverse Source'Range loop
-             if Source (J) /= Wide_Wide_Space then
-                return J;
-             end if;
-          end loop;
-       end if;
- 
-       --  Fall through if no match
- 
-       return 0;
-    end Index_Non_Blank;
- 
-    function Index_Non_Blank
-      (Source : Wide_Wide_String;
-       From   : Positive;
-       Going  : Direction := Forward) return Natural
-    is
-    begin
-       if Going = Forward then
-          if From < Source'First then
-             raise Index_Error;
-          end if;
- 
-          return
-            Index_Non_Blank (Source (From .. Source'Last), Forward);
- 
-       else
-          if From > Source'Last then
-             raise Index_Error;
-          end if;
- 
-          return
-            Index_Non_Blank (Source (Source'First .. From), Backward);
-       end if;
-    end Index_Non_Blank;
- 
- end Ada.Strings.Wide_Wide_Search;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-stzsea.ads gcc-8.1.0/gcc/ada/a-stzsea.ads
*** gcc-7.3.0/gcc/ada/a-stzsea.ads	Fri Oct  8 13:02:55 2010
--- gcc-8.1.0/gcc/ada/a-stzsea.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,130 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --         A D A . S T R I N G S . W I D E _ W I D E _ S E A R C H          --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2010, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 search functions from Ada.Strings.Wide_Wide_Fixed.
- --  They are separated because Ada.Strings.Wide_Wide_Bounded shares these
- --  search functions with Ada.Strings.Wide_Wide_Unbounded, and we don't want
- --  to drag other irrelevant stuff from Ada.Strings.Wide_Wide_Fixed when using
- --  the other two packages. We make this a private package, since user
- --  programs should access these subprograms via one of the standard string
- --  packages.
- 
- with Ada.Strings.Wide_Wide_Maps;
- 
- private package Ada.Strings.Wide_Wide_Search is
-    pragma Preelaborate;
- 
-    function Index
-      (Source  : Wide_Wide_String;
-       Pattern : Wide_Wide_String;
-       Going   : Direction := Forward;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping :=
-                   Wide_Wide_Maps.Identity) return Natural;
- 
-    function Index
-      (Source  : Wide_Wide_String;
-       Pattern : Wide_Wide_String;
-       Going   : Direction := Forward;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
-       return Natural;
- 
-    function Index
-      (Source : Wide_Wide_String;
-       Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       Test   : Membership := Inside;
-       Going  : Direction  := Forward) return Natural;
- 
-    function Index
-      (Source  : Wide_Wide_String;
-       Pattern : Wide_Wide_String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping :=
-                   Wide_Wide_Maps.Identity)
-       return Natural;
- 
-    function Index
-      (Source  : Wide_Wide_String;
-       Pattern : Wide_Wide_String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
-       return Natural;
- 
-    function Index
-      (Source  : Wide_Wide_String;
-       Set     : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       From    : Positive;
-       Test    : Membership := Inside;
-       Going   : Direction := Forward) return Natural;
- 
-    function Index_Non_Blank
-      (Source : Wide_Wide_String;
-       Going  : Direction := Forward) return Natural;
- 
-    function Index_Non_Blank
-      (Source : Wide_Wide_String;
-       From   : Positive;
-       Going  : Direction := Forward) return Natural;
- 
-    function Count
-      (Source  : Wide_Wide_String;
-       Pattern : Wide_Wide_String;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping :=
-                   Wide_Wide_Maps.Identity)
-       return Natural;
- 
-    function Count
-      (Source  : Wide_Wide_String;
-       Pattern : Wide_Wide_String;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
-       return Natural;
- 
-    function Count
-      (Source : Wide_Wide_String;
-       Set    : Wide_Wide_Maps.Wide_Wide_Character_Set) return Natural;
- 
-    procedure Find_Token
-      (Source : Wide_Wide_String;
-       Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       From   : Positive;
-       Test   : Membership;
-       First  : out Positive;
-       Last   : out Natural);
- 
-    procedure Find_Token
-      (Source : Wide_Wide_String;
-       Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       Test   : Membership;
-       First  : out Positive;
-       Last   : out Natural);
- 
- end Ada.Strings.Wide_Wide_Search;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-stzsup.adb gcc-8.1.0/gcc/ada/a-stzsup.adb
*** gcc-7.3.0/gcc/ada/a-stzsup.adb	Fri Jan 13 10:19:19 2017
--- gcc-8.1.0/gcc/ada/a-stzsup.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,1941 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --   A D A . S T R I N G S . W I D E _ W I D E _ S U P E R B O U N D E D    --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2003-2016, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Strings.Wide_Wide_Maps;   use Ada.Strings.Wide_Wide_Maps;
- with Ada.Strings.Wide_Wide_Search;
- 
- package body Ada.Strings.Wide_Wide_Superbounded is
- 
-    ------------
-    -- Concat --
-    ------------
- 
-    function Concat
-      (Left  : Super_String;
-       Right : Super_String) return Super_String
-    is
-    begin
-       return Result : Super_String (Left.Max_Length) do
-          declare
-             Llen : constant Natural := Left.Current_Length;
-             Rlen : constant Natural := Right.Current_Length;
-             Nlen : constant Natural := Llen + Rlen;
- 
-          begin
-             if Nlen > Left.Max_Length then
-                raise Ada.Strings.Length_Error;
-             else
-                Result.Current_Length := Nlen;
-                Result.Data (1 .. Llen) := Left.Data (1 .. Llen);
-                Result.Data (Llen + 1 .. Nlen) := Right.Data (1 .. Rlen);
-             end if;
-          end;
-       end return;
-    end Concat;
- 
-    function Concat
-      (Left  : Super_String;
-       Right : Wide_Wide_String) return Super_String
-    is
-    begin
-       return Result : Super_String (Left.Max_Length) do
-          declare
-             Llen : constant Natural := Left.Current_Length;
-             Nlen : constant Natural := Llen + Right'Length;
- 
-          begin
-             if Nlen > Left.Max_Length then
-                raise Ada.Strings.Length_Error;
-             else
-                Result.Current_Length := Nlen;
-                Result.Data (1 .. Llen) := Left.Data (1 .. Llen);
-                Result.Data (Llen + 1 .. Nlen) := Right;
-             end if;
-          end;
-       end return;
-    end Concat;
- 
-    function Concat
-      (Left  : Wide_Wide_String;
-       Right : Super_String) return Super_String
-    is
-    begin
-       return Result : Super_String (Right.Max_Length) do
-          declare
-             Llen : constant Natural := Left'Length;
-             Rlen : constant Natural := Right.Current_Length;
-             Nlen : constant Natural := Llen + Rlen;
- 
-          begin
-             if Nlen > Right.Max_Length then
-                raise Ada.Strings.Length_Error;
-             else
-                Result.Current_Length := Nlen;
-                Result.Data (1 .. Llen) := Left;
-                Result.Data (Llen + 1 .. Nlen) := Right.Data (1 .. Rlen);
-             end if;
-          end;
-       end return;
-    end Concat;
- 
-    function Concat
-      (Left  : Super_String;
-       Right : Wide_Wide_Character) return Super_String
-    is
-    begin
-       return Result : Super_String (Left.Max_Length) do
-          declare
-             Llen : constant Natural := Left.Current_Length;
- 
-          begin
-             if Llen = Left.Max_Length then
-                raise Ada.Strings.Length_Error;
-             else
-                Result.Current_Length := Llen + 1;
-                Result.Data (1 .. Llen) := Left.Data (1 .. Llen);
-                Result.Data (Result.Current_Length) := Right;
-             end if;
-          end;
-       end return;
-    end Concat;
- 
-    function Concat
-      (Left  : Wide_Wide_Character;
-       Right : Super_String) return Super_String
-    is
-    begin
-       return Result : Super_String (Right.Max_Length) do
-          declare
-             Rlen : constant Natural := Right.Current_Length;
- 
-          begin
-             if Rlen = Right.Max_Length then
-                raise Ada.Strings.Length_Error;
-             else
-                Result.Current_Length := Rlen + 1;
-                Result.Data (1) := Left;
-                Result.Data (2 .. Result.Current_Length) :=
-                  Right.Data (1 .. Rlen);
-             end if;
-          end;
-       end return;
-    end Concat;
- 
-    -----------
-    -- Equal --
-    -----------
- 
-    function "="
-      (Left  : Super_String;
-       Right : Super_String) return Boolean
-    is
-    begin
-       return Left.Current_Length = Right.Current_Length
-         and then Left.Data (1 .. Left.Current_Length) =
-                    Right.Data (1 .. Right.Current_Length);
-    end "=";
- 
-    function Equal
-      (Left  : Super_String;
-       Right : Wide_Wide_String) return Boolean
-    is
-    begin
-       return Left.Current_Length = Right'Length
-         and then Left.Data (1 .. Left.Current_Length) = Right;
-    end Equal;
- 
-    function Equal
-      (Left  : Wide_Wide_String;
-       Right : Super_String) return Boolean
-    is
-    begin
-       return Left'Length = Right.Current_Length
-         and then Left = Right.Data (1 .. Right.Current_Length);
-    end Equal;
- 
-    -------------
-    -- Greater --
-    -------------
- 
-    function Greater
-      (Left  : Super_String;
-       Right : Super_String) return Boolean
-    is
-    begin
-       return Left.Data (1 .. Left.Current_Length) >
-                Right.Data (1 .. Right.Current_Length);
-    end Greater;
- 
-    function Greater
-      (Left  : Super_String;
-       Right : Wide_Wide_String) return Boolean
-    is
-    begin
-       return Left.Data (1 .. Left.Current_Length) > Right;
-    end Greater;
- 
-    function Greater
-      (Left  : Wide_Wide_String;
-       Right : Super_String) return Boolean
-    is
-    begin
-       return Left > Right.Data (1 .. Right.Current_Length);
-    end Greater;
- 
-    ----------------------
-    -- Greater_Or_Equal --
-    ----------------------
- 
-    function Greater_Or_Equal
-      (Left  : Super_String;
-       Right : Super_String) return Boolean
-    is
-    begin
-       return Left.Data (1 .. Left.Current_Length) >=
-                Right.Data (1 .. Right.Current_Length);
-    end Greater_Or_Equal;
- 
-    function Greater_Or_Equal
-      (Left  : Super_String;
-       Right : Wide_Wide_String) return Boolean
-    is
-    begin
-       return Left.Data (1 .. Left.Current_Length) >= Right;
-    end Greater_Or_Equal;
- 
-    function Greater_Or_Equal
-      (Left  : Wide_Wide_String;
-       Right : Super_String) return Boolean
-    is
-    begin
-       return Left >= Right.Data (1 .. Right.Current_Length);
-    end Greater_Or_Equal;
- 
-    ----------
-    -- Less --
-    ----------
- 
-    function Less
-      (Left  : Super_String;
-       Right : Super_String) return Boolean
-    is
-    begin
-       return Left.Data (1 .. Left.Current_Length) <
-                Right.Data (1 .. Right.Current_Length);
-    end Less;
- 
-    function Less
-      (Left  : Super_String;
-       Right : Wide_Wide_String) return Boolean
-    is
-    begin
-       return Left.Data (1 .. Left.Current_Length) < Right;
-    end Less;
- 
-    function Less
-      (Left  : Wide_Wide_String;
-       Right : Super_String) return Boolean
-    is
-    begin
-       return Left < Right.Data (1 .. Right.Current_Length);
-    end Less;
- 
-    -------------------
-    -- Less_Or_Equal --
-    -------------------
- 
-    function Less_Or_Equal
-      (Left  : Super_String;
-       Right : Super_String) return Boolean
-    is
-    begin
-       return Left.Data (1 .. Left.Current_Length) <=
-                Right.Data (1 .. Right.Current_Length);
-    end Less_Or_Equal;
- 
-    function Less_Or_Equal
-      (Left  : Super_String;
-       Right : Wide_Wide_String) return Boolean
-    is
-    begin
-       return Left.Data (1 .. Left.Current_Length) <= Right;
-    end Less_Or_Equal;
- 
-    function Less_Or_Equal
-      (Left  : Wide_Wide_String;
-       Right : Super_String) return Boolean
-    is
-    begin
-       return Left <= Right.Data (1 .. Right.Current_Length);
-    end Less_Or_Equal;
- 
-    ----------------------
-    -- Set_Super_String --
-    ----------------------
- 
-    procedure Set_Super_String
-      (Target : out Super_String;
-       Source : Wide_Wide_String;
-       Drop   : Truncation := Error)
-    is
-       Slen       : constant Natural := Source'Length;
-       Max_Length : constant Positive := Target.Max_Length;
- 
-    begin
-       if Slen <= Max_Length then
-          Target.Current_Length := Slen;
-          Target.Data (1 .. Slen) := Source;
- 
-       else
-          case Drop is
-             when Strings.Right =>
-                Target.Current_Length := Max_Length;
-                Target.Data (1 .. Max_Length) :=
-                  Source (Source'First .. Source'First - 1 + Max_Length);
- 
-             when Strings.Left =>
-                Target.Current_Length := Max_Length;
-                Target.Data (1 .. Max_Length) :=
-                  Source (Source'Last - (Max_Length - 1) .. Source'Last);
- 
-             when Strings.Error =>
-                raise Ada.Strings.Length_Error;
-          end case;
-       end if;
-    end Set_Super_String;
- 
-    ------------------
-    -- Super_Append --
-    ------------------
- 
-    --  Case of Super_String and Super_String
- 
-    function Super_Append
-      (Left  : Super_String;
-       Right : Super_String;
-       Drop  : Strings.Truncation := Strings.Error) return Super_String
-    is
-       Max_Length : constant Positive := Left.Max_Length;
-       Result : Super_String (Max_Length);
-       Llen   : constant Natural := Left.Current_Length;
-       Rlen   : constant Natural := Right.Current_Length;
-       Nlen   : constant Natural := Llen + Rlen;
- 
-    begin
-       if Nlen <= Max_Length then
-          Result.Current_Length := Nlen;
-          Result.Data (1 .. Llen) := Left.Data (1 .. Llen);
-          Result.Data (Llen + 1 .. Nlen) := Right.Data (1 .. Rlen);
- 
-       else
-          Result.Current_Length := Max_Length;
- 
-          case Drop is
-             when Strings.Right =>
-                if Llen >= Max_Length then -- only case is Llen = Max_Length
-                   Result.Data := Left.Data;
- 
-                else
-                   Result.Data (1 .. Llen) := Left.Data (1 .. Llen);
-                   Result.Data (Llen + 1 .. Max_Length) :=
-                     Right.Data (1 .. Max_Length - Llen);
-                end if;
- 
-             when Strings.Left =>
-                if Rlen >= Max_Length then -- only case is Rlen = Max_Length
-                   Result.Data := Right.Data;
- 
-                else
-                   Result.Data (1 .. Max_Length - Rlen) :=
-                     Left.Data (Llen - (Max_Length - Rlen - 1) .. Llen);
-                   Result.Data (Max_Length - Rlen + 1 .. Max_Length) :=
-                     Right.Data (1 .. Rlen);
-                end if;
- 
-             when Strings.Error =>
-                raise Ada.Strings.Length_Error;
-          end case;
-       end if;
- 
-       return Result;
-    end Super_Append;
- 
-    procedure Super_Append
-      (Source   : in out Super_String;
-       New_Item : Super_String;
-       Drop     : Truncation := Error)
-    is
-       Max_Length : constant Positive := Source.Max_Length;
-       Llen       : constant Natural := Source.Current_Length;
-       Rlen       : constant Natural := New_Item.Current_Length;
-       Nlen       : constant Natural := Llen + Rlen;
- 
-    begin
-       if Nlen <= Max_Length then
-          Source.Current_Length := Nlen;
-          Source.Data (Llen + 1 .. Nlen) := New_Item.Data (1 .. Rlen);
- 
-       else
-          Source.Current_Length := Max_Length;
- 
-          case Drop is
-             when Strings.Right =>
-                if Llen < Max_Length then
-                   Source.Data (Llen + 1 .. Max_Length) :=
-                     New_Item.Data (1 .. Max_Length - Llen);
-                end if;
- 
-             when Strings.Left =>
-                if Rlen >= Max_Length then -- only case is Rlen = Max_Length
-                   Source.Data := New_Item.Data;
- 
-                else
-                   Source.Data (1 .. Max_Length - Rlen) :=
-                     Source.Data (Llen - (Max_Length - Rlen - 1) .. Llen);
-                   Source.Data (Max_Length - Rlen + 1 .. Max_Length) :=
-                     New_Item.Data (1 .. Rlen);
-                end if;
- 
-             when Strings.Error =>
-                raise Ada.Strings.Length_Error;
-          end case;
-       end if;
- 
-    end Super_Append;
- 
-    --  Case of Super_String and Wide_Wide_String
- 
-    function Super_Append
-      (Left  : Super_String;
-       Right : Wide_Wide_String;
-       Drop  : Strings.Truncation := Strings.Error) return Super_String
-    is
-       Max_Length : constant Positive := Left.Max_Length;
-       Result : Super_String (Max_Length);
-       Llen   : constant Natural := Left.Current_Length;
-       Rlen   : constant Natural := Right'Length;
-       Nlen   : constant Natural := Llen + Rlen;
- 
-    begin
-       if Nlen <= Max_Length then
-          Result.Current_Length := Nlen;
-          Result.Data (1 .. Llen) := Left.Data (1 .. Llen);
-          Result.Data (Llen + 1 .. Nlen) := Right;
- 
-       else
-          Result.Current_Length := Max_Length;
- 
-          case Drop is
-             when Strings.Right =>
-                if Llen >= Max_Length then -- only case is Llen = Max_Length
-                   Result.Data := Left.Data;
- 
-                else
-                   Result.Data (1 .. Llen) := Left.Data (1 .. Llen);
-                   Result.Data (Llen + 1 .. Max_Length) :=
-                     Right (Right'First .. Right'First - 1 +
-                              Max_Length - Llen);
- 
-                end if;
- 
-             when Strings.Left =>
-                if Rlen >= Max_Length then
-                   Result.Data (1 .. Max_Length) :=
-                     Right (Right'Last - (Max_Length - 1) .. Right'Last);
- 
-                else
-                   Result.Data (1 .. Max_Length - Rlen) :=
-                     Left.Data (Llen - (Max_Length - Rlen - 1) .. Llen);
-                   Result.Data (Max_Length - Rlen + 1 .. Max_Length) :=
-                     Right;
-                end if;
- 
-             when Strings.Error =>
-                raise Ada.Strings.Length_Error;
-          end case;
-       end if;
- 
-       return Result;
-    end Super_Append;
- 
-    procedure Super_Append
-      (Source   : in out Super_String;
-       New_Item : Wide_Wide_String;
-       Drop     : Truncation := Error)
-    is
-       Max_Length : constant Positive := Source.Max_Length;
-       Llen   : constant Natural := Source.Current_Length;
-       Rlen   : constant Natural := New_Item'Length;
-       Nlen   : constant Natural := Llen + Rlen;
- 
-    begin
-       if Nlen <= Max_Length then
-          Source.Current_Length := Nlen;
-          Source.Data (Llen + 1 .. Nlen) := New_Item;
- 
-       else
-          Source.Current_Length := Max_Length;
- 
-          case Drop is
-             when Strings.Right =>
-                if Llen < Max_Length then
-                   Source.Data (Llen + 1 .. Max_Length) :=
-                     New_Item (New_Item'First ..
-                                 New_Item'First - 1 + Max_Length - Llen);
-                end if;
- 
-             when Strings.Left =>
-                if Rlen >= Max_Length then
-                   Source.Data (1 .. Max_Length) :=
-                     New_Item (New_Item'Last - (Max_Length - 1) ..
-                                 New_Item'Last);
- 
-                else
-                   Source.Data (1 .. Max_Length - Rlen) :=
-                     Source.Data (Llen - (Max_Length - Rlen - 1) .. Llen);
-                   Source.Data (Max_Length - Rlen + 1 .. Max_Length) :=
-                     New_Item;
-                end if;
- 
-             when Strings.Error =>
-                raise Ada.Strings.Length_Error;
-          end case;
-       end if;
-    end Super_Append;
- 
-    --  Case of Wide_Wide_String and Super_String
- 
-    function Super_Append
-      (Left  : Wide_Wide_String;
-       Right : Super_String;
-       Drop  : Strings.Truncation := Strings.Error) return Super_String
-    is
-       Max_Length : constant Positive := Right.Max_Length;
-       Result     : Super_String (Max_Length);
-       Llen       : constant Natural := Left'Length;
-       Rlen       : constant Natural := Right.Current_Length;
-       Nlen       : constant Natural := Llen + Rlen;
- 
-    begin
-       if Nlen <= Max_Length then
-          Result.Current_Length := Nlen;
-          Result.Data (1 .. Llen) := Left;
-          Result.Data (Llen + 1 .. Llen + Rlen) := Right.Data (1 .. Rlen);
- 
-       else
-          Result.Current_Length := Max_Length;
- 
-          case Drop is
-             when Strings.Right =>
-                if Llen >= Max_Length then
-                   Result.Data (1 .. Max_Length) :=
-                     Left (Left'First .. Left'First + (Max_Length - 1));
- 
-                else
-                   Result.Data (1 .. Llen) := Left;
-                   Result.Data (Llen + 1 .. Max_Length) :=
-                     Right.Data (1 .. Max_Length - Llen);
-                end if;
- 
-             when Strings.Left =>
-                if Rlen >= Max_Length then
-                   Result.Data (1 .. Max_Length) :=
-                     Right.Data (Rlen - (Max_Length - 1) .. Rlen);
- 
-                else
-                   Result.Data (1 .. Max_Length - Rlen) :=
-                     Left (Left'Last - (Max_Length - Rlen - 1) .. Left'Last);
-                   Result.Data (Max_Length - Rlen + 1 .. Max_Length) :=
-                     Right.Data (1 .. Rlen);
-                end if;
- 
-             when Strings.Error =>
-                raise Ada.Strings.Length_Error;
-          end case;
-       end if;
- 
-       return Result;
-    end Super_Append;
- 
-    --  Case of Super_String and Wide_Wide_Character
- 
-    function Super_Append
-      (Left  : Super_String;
-       Right : Wide_Wide_Character;
-       Drop  : Strings.Truncation := Strings.Error) return Super_String
-    is
-       Max_Length : constant Positive := Left.Max_Length;
-       Result     : Super_String (Max_Length);
-       Llen       : constant Natural := Left.Current_Length;
- 
-    begin
-       if Llen  < Max_Length then
-          Result.Current_Length := Llen + 1;
-          Result.Data (1 .. Llen) := Left.Data (1 .. Llen);
-          Result.Data (Llen + 1) := Right;
-          return Result;
- 
-       else
-          case Drop is
-             when Strings.Right =>
-                return Left;
- 
-             when Strings.Left =>
-                Result.Current_Length := Max_Length;
-                Result.Data (1 .. Max_Length - 1) :=
-                  Left.Data (2 .. Max_Length);
-                Result.Data (Max_Length) := Right;
-                return Result;
- 
-             when Strings.Error =>
-                raise Ada.Strings.Length_Error;
-          end case;
-       end if;
-    end Super_Append;
- 
-    procedure Super_Append
-      (Source   : in out Super_String;
-       New_Item : Wide_Wide_Character;
-       Drop     : Truncation := Error)
-    is
-       Max_Length : constant Positive := Source.Max_Length;
-       Llen       : constant Natural  := Source.Current_Length;
- 
-    begin
-       if Llen  < Max_Length then
-          Source.Current_Length := Llen + 1;
-          Source.Data (Llen + 1) := New_Item;
- 
-       else
-          Source.Current_Length := Max_Length;
- 
-          case Drop is
-             when Strings.Right =>
-                null;
- 
-             when Strings.Left =>
-                Source.Data (1 .. Max_Length - 1) :=
-                  Source.Data (2 .. Max_Length);
-                Source.Data (Max_Length) := New_Item;
- 
-             when Strings.Error =>
-                raise Ada.Strings.Length_Error;
-          end case;
-       end if;
- 
-    end Super_Append;
- 
-    --  Case of Wide_Wide_Character and Super_String
- 
-    function Super_Append
-      (Left  : Wide_Wide_Character;
-       Right : Super_String;
-       Drop  : Strings.Truncation := Strings.Error) return Super_String
-    is
-       Max_Length : constant Positive := Right.Max_Length;
-       Result : Super_String (Max_Length);
-       Rlen   : constant Natural := Right.Current_Length;
- 
-    begin
-       if Rlen < Max_Length then
-          Result.Current_Length := Rlen + 1;
-          Result.Data (1) := Left;
-          Result.Data (2 .. Rlen + 1) := Right.Data (1 .. Rlen);
-          return Result;
- 
-       else
-          case Drop is
-             when Strings.Right =>
-                Result.Current_Length := Max_Length;
-                Result.Data (1) := Left;
-                Result.Data (2 .. Max_Length) :=
-                  Right.Data (1 .. Max_Length - 1);
-                return Result;
- 
-             when Strings.Left =>
-                return Right;
- 
-             when Strings.Error =>
-                raise Ada.Strings.Length_Error;
-          end case;
-       end if;
-    end Super_Append;
- 
-    -----------------
-    -- Super_Count --
-    -----------------
- 
-    function Super_Count
-      (Source  : Super_String;
-       Pattern : Wide_Wide_String;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping :=
-         Wide_Wide_Maps.Identity) return Natural
-    is
-    begin
-       return
-         Wide_Wide_Search.Count
-           (Source.Data (1 .. Source.Current_Length), Pattern, Mapping);
-    end Super_Count;
- 
-    function Super_Count
-      (Source  : Super_String;
-       Pattern : Wide_Wide_String;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
-       return Natural
-    is
-    begin
-       return
-         Wide_Wide_Search.Count
-           (Source.Data (1 .. Source.Current_Length), Pattern, Mapping);
-    end Super_Count;
- 
-    function Super_Count
-      (Source : Super_String;
-       Set    : Wide_Wide_Maps.Wide_Wide_Character_Set) return Natural
-    is
-    begin
-       return Wide_Wide_Search.Count
-                (Source.Data (1 .. Source.Current_Length), Set);
-    end Super_Count;
- 
-    ------------------
-    -- Super_Delete --
-    ------------------
- 
-    function Super_Delete
-      (Source  : Super_String;
-       From    : Positive;
-       Through : Natural) return Super_String
-    is
-       Result     : Super_String (Source.Max_Length);
-       Slen       : constant Natural := Source.Current_Length;
-       Num_Delete : constant Integer := Through - From + 1;
- 
-    begin
-       if Num_Delete <= 0 then
-          return Source;
- 
-       elsif From > Slen + 1 then
-          raise Ada.Strings.Index_Error;
- 
-       elsif Through >= Slen then
-          Result.Current_Length := From - 1;
-          Result.Data (1 .. From - 1) := Source.Data (1 .. From - 1);
-          return Result;
- 
-       else
-          Result.Current_Length := Slen - Num_Delete;
-          Result.Data (1 .. From - 1) := Source.Data (1 .. From - 1);
-          Result.Data (From .. Result.Current_Length) :=
-            Source.Data (Through + 1 .. Slen);
-          return Result;
-       end if;
-    end Super_Delete;
- 
-    procedure Super_Delete
-      (Source  : in out Super_String;
-       From    : Positive;
-       Through : Natural)
-    is
-       Slen       : constant Natural := Source.Current_Length;
-       Num_Delete : constant Integer := Through - From + 1;
- 
-    begin
-       if Num_Delete <= 0 then
-          return;
- 
-       elsif From > Slen + 1 then
-          raise Ada.Strings.Index_Error;
- 
-       elsif Through >= Slen then
-          Source.Current_Length := From - 1;
- 
-       else
-          Source.Current_Length := Slen - Num_Delete;
-          Source.Data (From .. Source.Current_Length) :=
-            Source.Data (Through + 1 .. Slen);
-       end if;
-    end Super_Delete;
- 
-    -------------------
-    -- Super_Element --
-    -------------------
- 
-    function Super_Element
-      (Source : Super_String;
-       Index  : Positive) return Wide_Wide_Character
-    is
-    begin
-       if Index <= Source.Current_Length then
-          return Source.Data (Index);
-       else
-          raise Strings.Index_Error;
-       end if;
-    end Super_Element;
- 
-    ----------------------
-    -- Super_Find_Token --
-    ----------------------
- 
-    procedure Super_Find_Token
-      (Source : Super_String;
-       Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       From   : Positive;
-       Test   : Strings.Membership;
-       First  : out Positive;
-       Last   : out Natural)
-    is
-    begin
-       Wide_Wide_Search.Find_Token
-         (Source.Data (From .. Source.Current_Length), Set, Test, First, Last);
-    end Super_Find_Token;
- 
-    procedure Super_Find_Token
-      (Source : Super_String;
-       Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       Test   : Strings.Membership;
-       First  : out Positive;
-       Last   : out Natural)
-    is
-    begin
-       Wide_Wide_Search.Find_Token
-         (Source.Data (1 .. Source.Current_Length), Set, Test, First, Last);
-    end Super_Find_Token;
- 
-    ----------------
-    -- Super_Head --
-    ----------------
- 
-    function Super_Head
-      (Source : Super_String;
-       Count  : Natural;
-       Pad    : Wide_Wide_Character := Wide_Wide_Space;
-       Drop   : Strings.Truncation := Strings.Error) return Super_String
-    is
-       Max_Length : constant Positive := Source.Max_Length;
-       Result     : Super_String (Max_Length);
-       Slen       : constant Natural := Source.Current_Length;
-       Npad       : constant Integer := Count - Slen;
- 
-    begin
-       if Npad <= 0 then
-          Result.Current_Length := Count;
-          Result.Data (1 .. Count) := Source.Data (1 .. Count);
- 
-       elsif Count <= Max_Length then
-          Result.Current_Length := Count;
-          Result.Data (1 .. Slen) := Source.Data (1 .. Slen);
-          Result.Data (Slen + 1 .. Count) := (others => Pad);
- 
-       else
-          Result.Current_Length := Max_Length;
- 
-          case Drop is
-             when Strings.Right =>
-                Result.Data (1 .. Slen) := Source.Data (1 .. Slen);
-                Result.Data (Slen + 1 .. Max_Length) := (others => Pad);
- 
-             when Strings.Left =>
-                if Npad >= Max_Length then
-                   Result.Data := (others => Pad);
- 
-                else
-                   Result.Data (1 .. Max_Length - Npad) :=
-                     Source.Data (Count - Max_Length + 1 .. Slen);
-                   Result.Data (Max_Length - Npad + 1 .. Max_Length) :=
-                     (others => Pad);
-                end if;
- 
-             when Strings.Error =>
-                raise Ada.Strings.Length_Error;
-          end case;
-       end if;
- 
-       return Result;
-    end Super_Head;
- 
-    procedure Super_Head
-      (Source : in out Super_String;
-       Count  : Natural;
-       Pad    : Wide_Wide_Character  := Wide_Wide_Space;
-       Drop   : Truncation := Error)
-    is
-       Max_Length : constant Positive := Source.Max_Length;
-       Slen       : constant Natural  := Source.Current_Length;
-       Npad       : constant Integer  := Count - Slen;
-       Temp       : Wide_Wide_String (1 .. Max_Length);
- 
-    begin
-       if Npad <= 0 then
-          Source.Current_Length := Count;
- 
-       elsif Count <= Max_Length then
-          Source.Current_Length := Count;
-          Source.Data (Slen + 1 .. Count) := (others => Pad);
- 
-       else
-          Source.Current_Length := Max_Length;
- 
-          case Drop is
-             when Strings.Right =>
-                Source.Data (Slen + 1 .. Max_Length) := (others => Pad);
- 
-             when Strings.Left =>
-                if Npad > Max_Length then
-                   Source.Data := (others => Pad);
- 
-                else
-                   Temp := Source.Data;
-                   Source.Data (1 .. Max_Length - Npad) :=
-                     Temp (Count - Max_Length + 1 .. Slen);
- 
-                   for J in Max_Length - Npad + 1 .. Max_Length loop
-                      Source.Data (J) := Pad;
-                   end loop;
-                end if;
- 
-             when Strings.Error =>
-                raise Ada.Strings.Length_Error;
-          end case;
-       end if;
-    end Super_Head;
- 
-    -----------------
-    -- Super_Index --
-    -----------------
- 
-    function Super_Index
-      (Source  : Super_String;
-       Pattern : Wide_Wide_String;
-       Going   : Strings.Direction := Strings.Forward;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping :=
-         Wide_Wide_Maps.Identity) return Natural
-    is
-    begin
-       return Wide_Wide_Search.Index
-         (Source.Data (1 .. Source.Current_Length), Pattern, Going, Mapping);
-    end Super_Index;
- 
-    function Super_Index
-      (Source  : Super_String;
-       Pattern : Wide_Wide_String;
-       Going   : Direction := Forward;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
-       return Natural
-    is
-    begin
-       return Wide_Wide_Search.Index
-         (Source.Data (1 .. Source.Current_Length), Pattern, Going, Mapping);
-    end Super_Index;
- 
-    function Super_Index
-      (Source : Super_String;
-       Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       Test   : Strings.Membership := Strings.Inside;
-       Going  : Strings.Direction  := Strings.Forward) return Natural
-    is
-    begin
-       return Wide_Wide_Search.Index
-         (Source.Data (1 .. Source.Current_Length), Set, Test, Going);
-    end Super_Index;
- 
-    function Super_Index
-      (Source  : Super_String;
-       Pattern : Wide_Wide_String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping :=
-         Wide_Wide_Maps.Identity) return Natural
-    is
-    begin
-       return Wide_Wide_Search.Index
-         (Source.Data (1 .. Source.Current_Length),
-          Pattern, From, Going, Mapping);
-    end Super_Index;
- 
-    function Super_Index
-      (Source  : Super_String;
-       Pattern : Wide_Wide_String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
-       return Natural
-    is
-    begin
-       return Wide_Wide_Search.Index
-         (Source.Data (1 .. Source.Current_Length),
-          Pattern, From, Going, Mapping);
-    end Super_Index;
- 
-    function Super_Index
-      (Source : Super_String;
-       Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       From   : Positive;
-       Test   : Membership := Inside;
-       Going  : Direction := Forward) return Natural
-    is
-    begin
-       return Wide_Wide_Search.Index
-         (Source.Data (1 .. Source.Current_Length), Set, From, Test, Going);
-    end Super_Index;
- 
-    ---------------------------
-    -- Super_Index_Non_Blank --
-    ---------------------------
- 
-    function Super_Index_Non_Blank
-      (Source : Super_String;
-       Going  : Strings.Direction := Strings.Forward) return Natural
-    is
-    begin
-       return
-         Wide_Wide_Search.Index_Non_Blank
-           (Source.Data (1 .. Source.Current_Length), Going);
-    end Super_Index_Non_Blank;
- 
-    function Super_Index_Non_Blank
-      (Source : Super_String;
-       From   : Positive;
-       Going  : Direction := Forward) return Natural
-    is
-    begin
-       return
-         Wide_Wide_Search.Index_Non_Blank
-           (Source.Data (1 .. Source.Current_Length), From, Going);
-    end Super_Index_Non_Blank;
- 
-    ------------------
-    -- Super_Insert --
-    ------------------
- 
-    function Super_Insert
-      (Source   : Super_String;
-       Before   : Positive;
-       New_Item : Wide_Wide_String;
-       Drop     : Strings.Truncation := Strings.Error) return Super_String
-    is
-       Max_Length : constant Positive := Source.Max_Length;
-       Result     : Super_String (Max_Length);
-       Slen       : constant Natural := Source.Current_Length;
-       Nlen       : constant Natural := New_Item'Length;
-       Tlen       : constant Natural := Slen + Nlen;
-       Blen       : constant Natural := Before - 1;
-       Alen       : constant Integer := Slen - Blen;
-       Droplen    : constant Integer := Tlen - Max_Length;
- 
-       --  Tlen is the length of the total string before possible truncation.
-       --  Blen, Alen are the lengths of the before and after pieces of the
-       --  source string.
- 
-    begin
-       if Alen < 0 then
-          raise Ada.Strings.Index_Error;
- 
-       elsif Droplen <= 0 then
-          Result.Current_Length := Tlen;
-          Result.Data (1 .. Blen) := Source.Data (1 .. Blen);
-          Result.Data (Before .. Before + Nlen - 1) := New_Item;
-          Result.Data (Before + Nlen .. Tlen) :=
-            Source.Data (Before .. Slen);
- 
-       else
-          Result.Current_Length := Max_Length;
- 
-          case Drop is
-             when Strings.Right =>
-                Result.Data (1 .. Blen) := Source.Data (1 .. Blen);
- 
-                if Droplen > Alen then
-                   Result.Data (Before .. Max_Length) :=
-                     New_Item (New_Item'First
-                                 .. New_Item'First + Max_Length - Before);
-                else
-                   Result.Data (Before .. Before + Nlen - 1) := New_Item;
-                   Result.Data (Before + Nlen .. Max_Length) :=
-                     Source.Data (Before .. Slen - Droplen);
-                end if;
- 
-             when Strings.Left =>
-                Result.Data (Max_Length - (Alen - 1) .. Max_Length) :=
-                  Source.Data (Before .. Slen);
- 
-                if Droplen >= Blen then
-                   Result.Data (1 .. Max_Length - Alen) :=
-                     New_Item (New_Item'Last - (Max_Length - Alen) + 1
-                                 .. New_Item'Last);
-                else
-                   Result.Data
-                     (Blen - Droplen + 1 .. Max_Length - Alen) :=
-                     New_Item;
-                   Result.Data (1 .. Blen - Droplen) :=
-                     Source.Data (Droplen + 1 .. Blen);
-                end if;
- 
-             when Strings.Error =>
-                raise Ada.Strings.Length_Error;
-          end case;
-       end if;
- 
-       return Result;
-    end Super_Insert;
- 
-    procedure Super_Insert
-      (Source   : in out Super_String;
-       Before   : Positive;
-       New_Item : Wide_Wide_String;
-       Drop     : Strings.Truncation := Strings.Error)
-    is
-    begin
-       --  We do a double copy here because this is one of the situations
-       --  in which we move data to the right, and at least at the moment,
-       --  GNAT is not handling such cases correctly ???
- 
-       Source := Super_Insert (Source, Before, New_Item, Drop);
-    end Super_Insert;
- 
-    ------------------
-    -- Super_Length --
-    ------------------
- 
-    function Super_Length (Source : Super_String) return Natural is
-    begin
-       return Source.Current_Length;
-    end Super_Length;
- 
-    ---------------------
-    -- Super_Overwrite --
-    ---------------------
- 
-    function Super_Overwrite
-      (Source   : Super_String;
-       Position : Positive;
-       New_Item : Wide_Wide_String;
-       Drop     : Strings.Truncation := Strings.Error) return Super_String
-    is
-       Max_Length : constant Positive := Source.Max_Length;
-       Result     : Super_String (Max_Length);
-       Endpos     : constant Natural  := Position + New_Item'Length - 1;
-       Slen       : constant Natural  := Source.Current_Length;
-       Droplen    : Natural;
- 
-    begin
-       if Position > Slen + 1 then
-          raise Ada.Strings.Index_Error;
- 
-       elsif New_Item'Length = 0 then
-          return Source;
- 
-       elsif Endpos <= Slen then
-          Result.Current_Length := Source.Current_Length;
-          Result.Data (1 .. Slen) := Source.Data (1 .. Slen);
-          Result.Data (Position .. Endpos) := New_Item;
-          return Result;
- 
-       elsif Endpos <= Max_Length then
-          Result.Current_Length := Endpos;
-          Result.Data (1 .. Position - 1) := Source.Data (1 .. Position - 1);
-          Result.Data (Position .. Endpos) := New_Item;
-          return Result;
- 
-       else
-          Result.Current_Length := Max_Length;
-          Droplen := Endpos - Max_Length;
- 
-          case Drop is
-             when Strings.Right =>
-                Result.Data (1 .. Position - 1) :=
-                  Source.Data (1 .. Position - 1);
- 
-                Result.Data (Position .. Max_Length) :=
-                  New_Item (New_Item'First .. New_Item'Last - Droplen);
-                return Result;
- 
-             when Strings.Left =>
-                if New_Item'Length >= Max_Length then
-                   Result.Data (1 .. Max_Length) :=
-                     New_Item (New_Item'Last - Max_Length + 1 ..
-                                 New_Item'Last);
-                   return Result;
- 
-                else
-                   Result.Data (1 .. Max_Length - New_Item'Length) :=
-                     Source.Data (Droplen + 1 .. Position - 1);
-                   Result.Data
-                     (Max_Length - New_Item'Length + 1 .. Max_Length) :=
-                     New_Item;
-                   return Result;
-                end if;
- 
-             when Strings.Error =>
-                raise Ada.Strings.Length_Error;
-          end case;
-       end if;
-    end Super_Overwrite;
- 
-    procedure Super_Overwrite
-      (Source    : in out Super_String;
-       Position  : Positive;
-       New_Item  : Wide_Wide_String;
-       Drop      : Strings.Truncation := Strings.Error)
-    is
-       Max_Length : constant Positive := Source.Max_Length;
-       Endpos     : constant Positive := Position + New_Item'Length - 1;
-       Slen       : constant Natural  := Source.Current_Length;
-       Droplen    : Natural;
- 
-    begin
-       if Position > Slen + 1 then
-          raise Ada.Strings.Index_Error;
- 
-       elsif Endpos <= Slen then
-          Source.Data (Position .. Endpos) := New_Item;
- 
-       elsif Endpos <= Max_Length then
-          Source.Data (Position .. Endpos) := New_Item;
-          Source.Current_Length := Endpos;
- 
-       else
-          Source.Current_Length := Max_Length;
-          Droplen := Endpos - Max_Length;
- 
-          case Drop is
-             when Strings.Right =>
-                Source.Data (Position .. Max_Length) :=
-                  New_Item (New_Item'First .. New_Item'Last - Droplen);
- 
-             when Strings.Left =>
-                if New_Item'Length > Max_Length then
-                   Source.Data (1 .. Max_Length) :=
-                     New_Item (New_Item'Last - Max_Length + 1 ..
-                                 New_Item'Last);
- 
-                else
-                   Source.Data (1 .. Max_Length - New_Item'Length) :=
-                     Source.Data (Droplen + 1 .. Position - 1);
- 
-                   Source.Data
-                     (Max_Length - New_Item'Length + 1 .. Max_Length) :=
-                     New_Item;
-                end if;
- 
-             when Strings.Error =>
-                raise Ada.Strings.Length_Error;
-          end case;
-       end if;
-    end Super_Overwrite;
- 
-    ---------------------------
-    -- Super_Replace_Element --
-    ---------------------------
- 
-    procedure Super_Replace_Element
-      (Source : in out Super_String;
-       Index  : Positive;
-       By     : Wide_Wide_Character)
-    is
-    begin
-       if Index <= Source.Current_Length then
-          Source.Data (Index) := By;
-       else
-          raise Ada.Strings.Index_Error;
-       end if;
-    end Super_Replace_Element;
- 
-    -------------------------
-    -- Super_Replace_Slice --
-    -------------------------
- 
-    function Super_Replace_Slice
-      (Source : Super_String;
-       Low    : Positive;
-       High   : Natural;
-       By     : Wide_Wide_String;
-       Drop   : Strings.Truncation := Strings.Error) return Super_String
-    is
-       Max_Length : constant Positive := Source.Max_Length;
-       Slen       : constant Natural  := Source.Current_Length;
- 
-    begin
-       if Low > Slen + 1 then
-          raise Strings.Index_Error;
- 
-       elsif High < Low then
-          return Super_Insert (Source, Low, By, Drop);
- 
-       else
-          declare
-             Blen    : constant Natural := Natural'Max (0, Low - 1);
-             Alen    : constant Natural := Natural'Max (0, Slen - High);
-             Tlen    : constant Natural := Blen + By'Length + Alen;
-             Droplen : constant Integer := Tlen - Max_Length;
-             Result  : Super_String (Max_Length);
- 
-             --  Tlen is the total length of the result string before any
-             --  truncation. Blen and Alen are the lengths of the pieces
-             --  of the original string that end up in the result string
-             --  before and after the replaced slice.
- 
-          begin
-             if Droplen <= 0 then
-                Result.Current_Length := Tlen;
-                Result.Data (1 .. Blen) := Source.Data (1 .. Blen);
-                Result.Data (Low .. Low + By'Length - 1) := By;
-                Result.Data (Low + By'Length .. Tlen) :=
-                  Source.Data (High + 1 .. Slen);
- 
-             else
-                Result.Current_Length := Max_Length;
- 
-                case Drop is
-                   when Strings.Right =>
-                      Result.Data (1 .. Blen) := Source.Data (1 .. Blen);
- 
-                      if Droplen > Alen then
-                         Result.Data (Low .. Max_Length) :=
-                           By (By'First .. By'First + Max_Length - Low);
-                      else
-                         Result.Data (Low .. Low + By'Length - 1) := By;
-                         Result.Data (Low + By'Length .. Max_Length) :=
-                           Source.Data (High + 1 .. Slen - Droplen);
-                      end if;
- 
-                   when Strings.Left =>
-                      Result.Data (Max_Length - (Alen - 1) .. Max_Length) :=
-                        Source.Data (High + 1 .. Slen);
- 
-                      if Droplen >= Blen then
-                         Result.Data (1 .. Max_Length - Alen) :=
-                           By (By'Last - (Max_Length - Alen) + 1 .. By'Last);
-                      else
-                         Result.Data
-                           (Blen - Droplen + 1 .. Max_Length - Alen) := By;
-                         Result.Data (1 .. Blen - Droplen) :=
-                           Source.Data (Droplen + 1 .. Blen);
-                      end if;
- 
-                   when Strings.Error =>
-                      raise Ada.Strings.Length_Error;
-                end case;
-             end if;
- 
-             return Result;
-          end;
-       end if;
-    end Super_Replace_Slice;
- 
-    procedure Super_Replace_Slice
-      (Source   : in out Super_String;
-       Low      : Positive;
-       High     : Natural;
-       By       : Wide_Wide_String;
-       Drop     : Strings.Truncation := Strings.Error)
-    is
-    begin
-       --  We do a double copy here because this is one of the situations
-       --  in which we move data to the right, and at least at the moment,
-       --  GNAT is not handling such cases correctly ???
- 
-       Source := Super_Replace_Slice (Source, Low, High, By, Drop);
-    end Super_Replace_Slice;
- 
-    ---------------------
-    -- Super_Replicate --
-    ---------------------
- 
-    function Super_Replicate
-      (Count      : Natural;
-       Item       : Wide_Wide_Character;
-       Drop       : Truncation := Error;
-       Max_Length : Positive) return Super_String
-    is
-       Result : Super_String (Max_Length);
- 
-    begin
-       if Count <= Max_Length then
-          Result.Current_Length := Count;
- 
-       elsif Drop = Strings.Error then
-          raise Ada.Strings.Length_Error;
- 
-       else
-          Result.Current_Length := Max_Length;
-       end if;
- 
-       Result.Data (1 .. Result.Current_Length) := (others => Item);
-       return Result;
-    end Super_Replicate;
- 
-    function Super_Replicate
-      (Count      : Natural;
-       Item       : Wide_Wide_String;
-       Drop       : Truncation := Error;
-       Max_Length : Positive) return Super_String
-    is
-       Length : constant Integer := Count * Item'Length;
-       Result : Super_String (Max_Length);
-       Indx   : Positive;
- 
-    begin
-       if Length <= Max_Length then
-          Result.Current_Length := Length;
- 
-          if Length > 0 then
-             Indx := 1;
- 
-             for J in 1 .. Count loop
-                Result.Data (Indx .. Indx + Item'Length - 1) := Item;
-                Indx := Indx + Item'Length;
-             end loop;
-          end if;
- 
-       else
-          Result.Current_Length := Max_Length;
- 
-          case Drop is
-             when Strings.Right =>
-                Indx := 1;
- 
-                while Indx + Item'Length <= Max_Length + 1 loop
-                   Result.Data (Indx .. Indx + Item'Length - 1) := Item;
-                   Indx := Indx + Item'Length;
-                end loop;
- 
-                Result.Data (Indx .. Max_Length) :=
-                  Item (Item'First .. Item'First + Max_Length - Indx);
- 
-             when Strings.Left =>
-                Indx := Max_Length;
- 
-                while Indx - Item'Length >= 1 loop
-                   Result.Data (Indx - (Item'Length - 1) .. Indx) := Item;
-                   Indx := Indx - Item'Length;
-                end loop;
- 
-                Result.Data (1 .. Indx) :=
-                  Item (Item'Last - Indx + 1 .. Item'Last);
- 
-             when Strings.Error =>
-                raise Ada.Strings.Length_Error;
-          end case;
-       end if;
- 
-       return Result;
-    end Super_Replicate;
- 
-    function Super_Replicate
-      (Count : Natural;
-       Item  : Super_String;
-       Drop  : Strings.Truncation := Strings.Error) return Super_String
-    is
-    begin
-       return
-         Super_Replicate
-           (Count,
-            Item.Data (1 .. Item.Current_Length),
-            Drop,
-            Item.Max_Length);
-    end Super_Replicate;
- 
-    -----------------
-    -- Super_Slice --
-    -----------------
- 
-    function Super_Slice
-      (Source : Super_String;
-       Low    : Positive;
-       High   : Natural) return Wide_Wide_String
-    is
-    begin
-       --  Note: test of High > Length is in accordance with AI95-00128
- 
-       return R : Wide_Wide_String (Low .. High) do
-          if Low > Source.Current_Length + 1
-            or else High > Source.Current_Length
-          then
-             raise Index_Error;
-          end if;
- 
-          R := Source.Data (Low .. High);
-       end return;
-    end Super_Slice;
- 
-    function Super_Slice
-      (Source : Super_String;
-       Low    : Positive;
-       High   : Natural) return Super_String
-    is
-    begin
-       return Result : Super_String (Source.Max_Length) do
-          if Low > Source.Current_Length + 1
-            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;
- 
-    procedure Super_Slice
-      (Source : Super_String;
-       Target : out Super_String;
-       Low    : Positive;
-       High   : Natural)
-    is
-    begin
-       if Low > Source.Current_Length + 1
-         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;
- 
-    ----------------
-    -- Super_Tail --
-    ----------------
- 
-    function Super_Tail
-      (Source : Super_String;
-       Count  : Natural;
-       Pad    : Wide_Wide_Character := Wide_Wide_Space;
-       Drop   : Strings.Truncation := Strings.Error) return Super_String
-    is
-       Max_Length : constant Positive := Source.Max_Length;
-       Result     : Super_String (Max_Length);
-       Slen       : constant Natural := Source.Current_Length;
-       Npad       : constant Integer := Count - Slen;
- 
-    begin
-       if Npad <= 0 then
-          Result.Current_Length := Count;
-          Result.Data (1 .. Count) :=
-            Source.Data (Slen - (Count - 1) .. Slen);
- 
-       elsif Count <= Max_Length then
-          Result.Current_Length := Count;
-          Result.Data (1 .. Npad) := (others => Pad);
-          Result.Data (Npad + 1 .. Count) := Source.Data (1 .. Slen);
- 
-       else
-          Result.Current_Length := Max_Length;
- 
-          case Drop is
-             when Strings.Right =>
-                if Npad >= Max_Length then
-                   Result.Data := (others => Pad);
- 
-                else
-                   Result.Data (1 .. Npad) := (others => Pad);
-                   Result.Data (Npad + 1 .. Max_Length) :=
-                     Source.Data (1 .. Max_Length - Npad);
-                end if;
- 
-             when Strings.Left =>
-                Result.Data (1 .. Max_Length - Slen) := (others => Pad);
-                Result.Data (Max_Length - Slen + 1 .. Max_Length) :=
-                  Source.Data (1 .. Slen);
- 
-             when Strings.Error =>
-                raise Ada.Strings.Length_Error;
-          end case;
-       end if;
- 
-       return Result;
-    end Super_Tail;
- 
-    procedure Super_Tail
-      (Source : in out Super_String;
-       Count  : Natural;
-       Pad    : Wide_Wide_Character := Wide_Wide_Space;
-       Drop   : Truncation := Error)
-    is
-       Max_Length : constant Positive := Source.Max_Length;
-       Slen       : constant Natural  := Source.Current_Length;
-       Npad       : constant Integer  := Count - Slen;
- 
-       Temp : constant Wide_Wide_String (1 .. Max_Length) := Source.Data;
- 
-    begin
-       if Npad <= 0 then
-          Source.Current_Length := Count;
-          Source.Data (1 .. Count) :=
-            Temp (Slen - (Count - 1) .. Slen);
- 
-       elsif Count <= Max_Length then
-          Source.Current_Length := Count;
-          Source.Data (1 .. Npad) := (others => Pad);
-          Source.Data (Npad + 1 .. Count) := Temp (1 .. Slen);
- 
-       else
-          Source.Current_Length := Max_Length;
- 
-          case Drop is
-             when Strings.Right =>
-                if Npad >= Max_Length then
-                   Source.Data := (others => Pad);
- 
-                else
-                   Source.Data (1 .. Npad) := (others => Pad);
-                   Source.Data (Npad + 1 .. Max_Length) :=
-                     Temp (1 .. Max_Length - Npad);
-                end if;
- 
-             when Strings.Left =>
-                for J in 1 .. Max_Length - Slen loop
-                   Source.Data (J) := Pad;
-                end loop;
- 
-                Source.Data (Max_Length - Slen + 1 .. Max_Length) :=
-                  Temp (1 .. Slen);
- 
-             when Strings.Error =>
-                raise Ada.Strings.Length_Error;
-          end case;
-       end if;
-    end Super_Tail;
- 
-    ---------------------
-    -- Super_To_String --
-    ---------------------
- 
-    function Super_To_String
-      (Source : Super_String) return Wide_Wide_String
-    is
-    begin
-       return R : Wide_Wide_String (1 .. Source.Current_Length) do
-          R := Source.Data (1 .. Source.Current_Length);
-       end return;
-    end Super_To_String;
- 
-    ---------------------
-    -- Super_Translate --
-    ---------------------
- 
-    function Super_Translate
-      (Source  : Super_String;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping)
-       return Super_String
-    is
-       Result : Super_String (Source.Max_Length);
- 
-    begin
-       Result.Current_Length := Source.Current_Length;
- 
-       for J in 1 .. Source.Current_Length loop
-          Result.Data (J) := Value (Mapping, Source.Data (J));
-       end loop;
- 
-       return Result;
-    end Super_Translate;
- 
-    procedure Super_Translate
-      (Source  : in out Super_String;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping)
-    is
-    begin
-       for J in 1 .. Source.Current_Length loop
-          Source.Data (J) := Value (Mapping, Source.Data (J));
-       end loop;
-    end Super_Translate;
- 
-    function Super_Translate
-      (Source  : Super_String;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
-       return Super_String
-    is
-       Result : Super_String (Source.Max_Length);
- 
-    begin
-       Result.Current_Length := Source.Current_Length;
- 
-       for J in 1 .. Source.Current_Length loop
-          Result.Data (J) := Mapping.all (Source.Data (J));
-       end loop;
- 
-       return Result;
-    end Super_Translate;
- 
-    procedure Super_Translate
-      (Source  : in out Super_String;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
-    is
-    begin
-       for J in 1 .. Source.Current_Length loop
-          Source.Data (J) := Mapping.all (Source.Data (J));
-       end loop;
-    end Super_Translate;
- 
-    ----------------
-    -- Super_Trim --
-    ----------------
- 
-    function Super_Trim
-      (Source : Super_String;
-       Side   : Trim_End) return Super_String
-    is
-       Result : Super_String (Source.Max_Length);
-       Last   : Natural := Source.Current_Length;
-       First  : Positive := 1;
- 
-    begin
-       if Side = Left or else Side = Both then
-          while First <= Last and then Source.Data (First) = ' ' loop
-             First := First + 1;
-          end loop;
-       end if;
- 
-       if Side = Right or else Side = Both then
-          while Last >= First and then Source.Data (Last) = ' ' loop
-             Last := Last - 1;
-          end loop;
-       end if;
- 
-       Result.Current_Length := Last - First + 1;
-       Result.Data (1 .. Result.Current_Length) := Source.Data (First .. Last);
-       return Result;
-    end Super_Trim;
- 
-    procedure Super_Trim
-      (Source : in out Super_String;
-       Side   : Trim_End)
-    is
-       Max_Length : constant Positive := Source.Max_Length;
-       Last       : Natural           := Source.Current_Length;
-       First      : Positive          := 1;
-       Temp       : Wide_Wide_String (1 .. Max_Length);
- 
-    begin
-       Temp (1 .. Last) := Source.Data (1 .. Last);
- 
-       if Side = Left or else Side = Both then
-          while First <= Last and then Temp (First) = ' ' loop
-             First := First + 1;
-          end loop;
-       end if;
- 
-       if Side = Right or else Side = Both then
-          while Last >= First and then Temp (Last) = ' ' loop
-             Last := Last - 1;
-          end loop;
-       end if;
- 
-       Source.Data := (others => Wide_Wide_NUL);
-       Source.Current_Length := Last - First + 1;
-       Source.Data (1 .. Source.Current_Length) := Temp (First .. Last);
-    end Super_Trim;
- 
-    function Super_Trim
-      (Source : Super_String;
-       Left   : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       Right  : Wide_Wide_Maps.Wide_Wide_Character_Set) return Super_String
-    is
-       Result : Super_String (Source.Max_Length);
- 
-    begin
-       for First in 1 .. Source.Current_Length loop
-          if not Is_In (Source.Data (First), Left) then
-             for Last in reverse First .. Source.Current_Length loop
-                if not Is_In (Source.Data (Last), Right) then
-                   Result.Current_Length := Last - First + 1;
-                   Result.Data (1 .. Result.Current_Length) :=
-                     Source.Data (First .. Last);
-                   return Result;
-                end if;
-             end loop;
-          end if;
-       end loop;
- 
-       Result.Current_Length := 0;
-       return Result;
-    end Super_Trim;
- 
-    procedure Super_Trim
-      (Source : in out Super_String;
-       Left   : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       Right  : Wide_Wide_Maps.Wide_Wide_Character_Set)
-    is
-    begin
-       for First in 1 .. Source.Current_Length loop
-          if not Is_In (Source.Data (First), Left) then
-             for Last in reverse First .. Source.Current_Length loop
-                if not Is_In (Source.Data (Last), Right) then
-                   if First = 1 then
-                      Source.Current_Length := Last;
-                      return;
-                   else
-                      Source.Current_Length := Last - First + 1;
-                      Source.Data (1 .. Source.Current_Length) :=
-                        Source.Data (First .. Last);
- 
-                      for J in Source.Current_Length + 1 ..
-                                 Source.Max_Length
-                      loop
-                         Source.Data (J) := Wide_Wide_NUL;
-                      end loop;
- 
-                      return;
-                   end if;
-                end if;
-             end loop;
- 
-             Source.Current_Length := 0;
-             return;
-          end if;
-       end loop;
- 
-       Source.Current_Length := 0;
-    end Super_Trim;
- 
-    -----------
-    -- Times --
-    -----------
- 
-    function Times
-      (Left       : Natural;
-       Right      : Wide_Wide_Character;
-       Max_Length : Positive) return Super_String
-    is
-       Result : Super_String (Max_Length);
- 
-    begin
-       if Left > Max_Length then
-          raise Ada.Strings.Length_Error;
- 
-       else
-          Result.Current_Length := Left;
- 
-          for J in 1 .. Left loop
-             Result.Data (J) := Right;
-          end loop;
-       end if;
- 
-       return Result;
-    end Times;
- 
-    function Times
-      (Left       : Natural;
-       Right      : Wide_Wide_String;
-       Max_Length : Positive) return Super_String
-    is
-       Result : Super_String (Max_Length);
-       Pos    : Positive         := 1;
-       Rlen   : constant Natural := Right'Length;
-       Nlen   : constant Natural := Left * Rlen;
- 
-    begin
-       if Nlen > Max_Length then
-          raise Ada.Strings.Index_Error;
- 
-       else
-          Result.Current_Length := Nlen;
- 
-          if Nlen > 0 then
-             for J in 1 .. Left loop
-                Result.Data (Pos .. Pos + Rlen - 1) := Right;
-                Pos := Pos + Rlen;
-             end loop;
-          end if;
-       end if;
- 
-       return Result;
-    end Times;
- 
-    function Times
-      (Left  : Natural;
-       Right : Super_String) return Super_String
-    is
-       Result : Super_String (Right.Max_Length);
-       Pos    : Positive := 1;
-       Rlen   : constant Natural := Right.Current_Length;
-       Nlen   : constant Natural := Left * Rlen;
- 
-    begin
-       if Nlen > Right.Max_Length then
-          raise Ada.Strings.Length_Error;
- 
-       else
-          Result.Current_Length := Nlen;
- 
-          if Nlen > 0 then
-             for J in 1 .. Left loop
-                Result.Data (Pos .. Pos + Rlen - 1) :=
-                  Right.Data (1 .. Rlen);
-                Pos := Pos + Rlen;
-             end loop;
-          end if;
-       end if;
- 
-       return Result;
-    end Times;
- 
-    ---------------------
-    -- To_Super_String --
-    ---------------------
- 
-    function To_Super_String
-      (Source     : Wide_Wide_String;
-       Max_Length : Natural;
-       Drop       : Truncation := Error) return Super_String
-    is
-       Result : Super_String (Max_Length);
-       Slen   : constant Natural := Source'Length;
- 
-    begin
-       if Slen <= Max_Length then
-          Result.Current_Length := Slen;
-          Result.Data (1 .. Slen) := Source;
- 
-       else
-          case Drop is
-             when Strings.Right =>
-                Result.Current_Length := Max_Length;
-                Result.Data (1 .. Max_Length) :=
-                  Source (Source'First .. Source'First - 1 + Max_Length);
- 
-             when Strings.Left =>
-                Result.Current_Length := Max_Length;
-                Result.Data (1 .. Max_Length) :=
-                  Source (Source'Last - (Max_Length - 1) .. Source'Last);
- 
-             when Strings.Error =>
-                raise Ada.Strings.Length_Error;
-          end case;
-       end if;
- 
-       return Result;
-    end To_Super_String;
- 
- end Ada.Strings.Wide_Wide_Superbounded;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-stzsup.ads gcc-8.1.0/gcc/ada/a-stzsup.ads
*** gcc-7.3.0/gcc/ada/a-stzsup.ads	Fri Mar  9 14:50:48 2012
--- gcc-8.1.0/gcc/ada/a-stzsup.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,508 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --  A D A . S T R I N G S .  W I D E _ W I D E _ S U P E R B O U N D E D    --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2003-2012, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 non generic package contains most of the implementation of the
- --  generic package Ada.Strings.Wide_Wide_Bounded.Generic_Bounded_Length.
- 
- --  It defines type Super_String as a discriminated record with the maximum
- --  length as the discriminant. Individual instantiations of the package
- --  Strings.Wide_Wide_Bounded.Generic_Bounded_Length use this type with
- --  an appropriate discriminant value set.
- 
- with Ada.Strings.Wide_Wide_Maps;
- 
- package Ada.Strings.Wide_Wide_Superbounded is
-    pragma Preelaborate;
- 
-    Wide_Wide_NUL : constant Wide_Wide_Character :=
-                      Wide_Wide_Character'Val (0);
- 
-    --  Wide_Wide_Bounded.Generic_Bounded_Length.Wide_Wide_Bounded_String is
-    --  derived from Super_String, with the constraint of the maximum length.
- 
-    type Super_String (Max_Length : Positive) is record
-       Current_Length : Natural := 0;
-       Data           : Wide_Wide_String (1 .. Max_Length);
-       --  A previous version had a default initial value for Data, which is
-       --  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
-    --  that they can be renamed in Wide_Wide_Bounded.Generic_Bounded_Length.
- 
-    function Super_Length (Source : Super_String) return Natural;
- 
-    --------------------------------------------------------
-    -- Conversion, Concatenation, and Selection Functions --
-    --------------------------------------------------------
- 
-    function To_Super_String
-      (Source     : Wide_Wide_String;
-       Max_Length : Natural;
-       Drop       : Truncation := Error) return Super_String;
-    --  Note the additional parameter Max_Length, which specifies the maximum
-    --  length setting of the resulting Super_String value.
- 
-    --  The following procedures have declarations (and semantics) that are
-    --  exactly analogous to those declared in Ada.Strings.Wide_Wide_Bounded.
- 
-    function Super_To_String (Source : Super_String) return Wide_Wide_String;
- 
-    procedure Set_Super_String
-      (Target : out Super_String;
-       Source : Wide_Wide_String;
-       Drop   : Truncation := Error);
- 
-    function Super_Append
-      (Left  : Super_String;
-       Right : Super_String;
-       Drop  : Truncation := Error) return Super_String;
- 
-    function Super_Append
-      (Left  : Super_String;
-       Right : Wide_Wide_String;
-       Drop  : Truncation := Error) return Super_String;
- 
-    function Super_Append
-      (Left  : Wide_Wide_String;
-       Right : Super_String;
-       Drop  : Truncation := Error) return Super_String;
- 
-    function Super_Append
-      (Left  : Super_String;
-       Right : Wide_Wide_Character;
-       Drop  : Truncation := Error) return Super_String;
- 
-    function Super_Append
-      (Left  : Wide_Wide_Character;
-       Right : Super_String;
-       Drop  : Truncation := Error) return Super_String;
- 
-    procedure Super_Append
-      (Source   : in out Super_String;
-       New_Item : Super_String;
-       Drop     : Truncation := Error);
- 
-    procedure Super_Append
-      (Source   : in out Super_String;
-       New_Item : Wide_Wide_String;
-       Drop     : Truncation := Error);
- 
-    procedure Super_Append
-      (Source   : in out Super_String;
-       New_Item : Wide_Wide_Character;
-       Drop     : Truncation := Error);
- 
-    function Concat
-      (Left  : Super_String;
-       Right : Super_String) return Super_String;
- 
-    function Concat
-      (Left  : Super_String;
-       Right : Wide_Wide_String) return Super_String;
- 
-    function Concat
-      (Left  : Wide_Wide_String;
-       Right : Super_String) return Super_String;
- 
-    function Concat
-      (Left  : Super_String;
-       Right : Wide_Wide_Character) return Super_String;
- 
-    function Concat
-      (Left  : Wide_Wide_Character;
-       Right : Super_String) return Super_String;
- 
-    function Super_Element
-      (Source : Super_String;
-       Index  : Positive) return Wide_Wide_Character;
- 
-    procedure Super_Replace_Element
-      (Source : in out Super_String;
-       Index  : Positive;
-       By     : Wide_Wide_Character);
- 
-    function Super_Slice
-      (Source : Super_String;
-       Low    : Positive;
-       High   : Natural) return Wide_Wide_String;
- 
-    function Super_Slice
-      (Source : Super_String;
-       Low    : Positive;
-       High   : Natural) return Super_String;
- 
-    procedure Super_Slice
-      (Source : Super_String;
-       Target : out Super_String;
-       Low    : Positive;
-       High   : Natural);
- 
-    function "="
-      (Left  : Super_String;
-       Right : Super_String) return Boolean;
- 
-    function Equal
-      (Left  : Super_String;
-       Right : Super_String) return Boolean renames "=";
- 
-    function Equal
-      (Left  : Super_String;
-       Right : Wide_Wide_String) return Boolean;
- 
-    function Equal
-      (Left  : Wide_Wide_String;
-       Right : Super_String) return Boolean;
- 
-    function Less
-      (Left  : Super_String;
-       Right : Super_String) return Boolean;
- 
-    function Less
-      (Left  : Super_String;
-       Right : Wide_Wide_String) return Boolean;
- 
-    function Less
-      (Left  : Wide_Wide_String;
-       Right : Super_String) return Boolean;
- 
-    function Less_Or_Equal
-      (Left  : Super_String;
-       Right : Super_String) return Boolean;
- 
-    function Less_Or_Equal
-      (Left  : Super_String;
-       Right : Wide_Wide_String) return Boolean;
- 
-    function Less_Or_Equal
-      (Left  : Wide_Wide_String;
-       Right : Super_String) return Boolean;
- 
-    function Greater
-      (Left  : Super_String;
-       Right : Super_String) return Boolean;
- 
-    function Greater
-      (Left  : Super_String;
-       Right : Wide_Wide_String) return Boolean;
- 
-    function Greater
-      (Left  : Wide_Wide_String;
-       Right : Super_String) return Boolean;
- 
-    function Greater_Or_Equal
-      (Left  : Super_String;
-       Right : Super_String) return Boolean;
- 
-    function Greater_Or_Equal
-      (Left  : Super_String;
-       Right : Wide_Wide_String) return Boolean;
- 
-    function Greater_Or_Equal
-      (Left  : Wide_Wide_String;
-       Right : Super_String) return Boolean;
- 
-    ----------------------
-    -- Search Functions --
-    ----------------------
- 
-    function Super_Index
-      (Source  : Super_String;
-       Pattern : Wide_Wide_String;
-       Going   : Direction := Forward;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping :=
-                   Wide_Wide_Maps.Identity)
-       return Natural;
- 
-    function Super_Index
-      (Source  : Super_String;
-       Pattern : Wide_Wide_String;
-       Going   : Direction := Forward;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
-       return Natural;
- 
-    function Super_Index
-      (Source : Super_String;
-       Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       Test   : Membership := Inside;
-       Going  : Direction  := Forward) return Natural;
- 
-    function Super_Index
-      (Source  : Super_String;
-       Pattern : Wide_Wide_String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping :=
-                   Wide_Wide_Maps.Identity)
-       return Natural;
- 
-    function Super_Index
-      (Source  : Super_String;
-       Pattern : Wide_Wide_String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
-       return Natural;
- 
-    function Super_Index
-      (Source : Super_String;
-       Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       From   : Positive;
-       Test   : Membership := Inside;
-       Going  : Direction := Forward) return Natural;
- 
-    function Super_Index_Non_Blank
-      (Source : Super_String;
-       Going  : Direction := Forward) return Natural;
- 
-    function Super_Index_Non_Blank
-      (Source : Super_String;
-       From   : Positive;
-       Going  : Direction := Forward) return Natural;
- 
-    function Super_Count
-      (Source  : Super_String;
-       Pattern : Wide_Wide_String;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping :=
-                   Wide_Wide_Maps.Identity)
-       return Natural;
- 
-    function Super_Count
-      (Source  : Super_String;
-       Pattern : Wide_Wide_String;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
-       return Natural;
- 
-    function Super_Count
-      (Source : Super_String;
-       Set    : Wide_Wide_Maps.Wide_Wide_Character_Set) return Natural;
- 
-    procedure Super_Find_Token
-      (Source : Super_String;
-       Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       From   : Positive;
-       Test   : Membership;
-       First  : out Positive;
-       Last   : out Natural);
- 
-    procedure Super_Find_Token
-      (Source : Super_String;
-       Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       Test   : Membership;
-       First  : out Positive;
-       Last   : out Natural);
- 
-    ------------------------------------
-    -- String Translation Subprograms --
-    ------------------------------------
- 
-    function Super_Translate
-      (Source  : Super_String;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping)
-       return Super_String;
- 
-    procedure Super_Translate
-      (Source   : in out Super_String;
-       Mapping  : Wide_Wide_Maps.Wide_Wide_Character_Mapping);
- 
-    function Super_Translate
-      (Source  : Super_String;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
-       return Super_String;
- 
-    procedure Super_Translate
-      (Source  : in out Super_String;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function);
- 
-    ---------------------------------------
-    -- String Transformation Subprograms --
-    ---------------------------------------
- 
-    function Super_Replace_Slice
-      (Source : Super_String;
-       Low    : Positive;
-       High   : Natural;
-       By     : Wide_Wide_String;
-       Drop   : Truncation := Error) return Super_String;
- 
-    procedure Super_Replace_Slice
-      (Source  : in out Super_String;
-       Low     : Positive;
-       High    : Natural;
-       By      : Wide_Wide_String;
-       Drop    : Truncation := Error);
- 
-    function Super_Insert
-      (Source   : Super_String;
-       Before   : Positive;
-       New_Item : Wide_Wide_String;
-       Drop     : Truncation := Error) return Super_String;
- 
-    procedure Super_Insert
-      (Source   : in out Super_String;
-       Before   : Positive;
-       New_Item : Wide_Wide_String;
-       Drop     : Truncation := Error);
- 
-    function Super_Overwrite
-      (Source   : Super_String;
-       Position : Positive;
-       New_Item : Wide_Wide_String;
-       Drop     : Truncation := Error) return Super_String;
- 
-    procedure Super_Overwrite
-      (Source    : in out Super_String;
-       Position  : Positive;
-       New_Item  : Wide_Wide_String;
-       Drop      : Truncation := Error);
- 
-    function Super_Delete
-      (Source  : Super_String;
-       From    : Positive;
-       Through : Natural) return Super_String;
- 
-    procedure Super_Delete
-      (Source  : in out Super_String;
-       From    : Positive;
-       Through : Natural);
- 
-    ---------------------------------
-    -- String Selector Subprograms --
-    ---------------------------------
- 
-    function Super_Trim
-      (Source : Super_String;
-       Side   : Trim_End) return Super_String;
- 
-    procedure Super_Trim
-      (Source : in out Super_String;
-       Side   : Trim_End);
- 
-    function Super_Trim
-      (Source : Super_String;
-       Left   : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       Right  : Wide_Wide_Maps.Wide_Wide_Character_Set) return Super_String;
- 
-    procedure Super_Trim
-      (Source : in out Super_String;
-       Left   : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       Right  : Wide_Wide_Maps.Wide_Wide_Character_Set);
- 
-    function Super_Head
-      (Source : Super_String;
-       Count  : Natural;
-       Pad    : Wide_Wide_Character := Wide_Wide_Space;
-       Drop   : Truncation := Error) return Super_String;
- 
-    procedure Super_Head
-      (Source : in out Super_String;
-       Count  : Natural;
-       Pad    : Wide_Wide_Character := Wide_Wide_Space;
-       Drop   : Truncation := Error);
- 
-    function Super_Tail
-      (Source : Super_String;
-       Count  : Natural;
-       Pad    : Wide_Wide_Character := Wide_Wide_Space;
-       Drop   : Truncation := Error) return Super_String;
- 
-    procedure Super_Tail
-      (Source : in out Super_String;
-       Count  : Natural;
-       Pad    : Wide_Wide_Character := Wide_Wide_Space;
-       Drop   : Truncation := Error);
- 
-    ------------------------------------
-    -- String Constructor Subprograms --
-    ------------------------------------
- 
-    --  Note: in some of the following routines, there is an extra parameter
-    --  Max_Length which specifies the value of the maximum length for the
-    --  resulting Super_String value.
- 
-    function Times
-      (Left       : Natural;
-       Right      : Wide_Wide_Character;
-       Max_Length : Positive) return Super_String;
-    --  Note the additional parameter Max_Length
- 
-    function Times
-      (Left       : Natural;
-       Right      : Wide_Wide_String;
-       Max_Length : Positive) return Super_String;
-    --  Note the additional parameter Max_Length
- 
-    function Times
-      (Left  : Natural;
-       Right : Super_String) return Super_String;
- 
-    function Super_Replicate
-      (Count      : Natural;
-       Item       : Wide_Wide_Character;
-       Drop       : Truncation := Error;
-       Max_Length : Positive) return Super_String;
-    --  Note the additional parameter Max_Length
- 
-    function Super_Replicate
-      (Count      : Natural;
-       Item       : Wide_Wide_String;
-       Drop       : Truncation := Error;
-       Max_Length : Positive) return Super_String;
-    --  Note the additional parameter Max_Length
- 
-    function Super_Replicate
-      (Count : Natural;
-       Item  : Super_String;
-       Drop  : Truncation := Error) return Super_String;
- 
- private
-       --  Pragma Inline declarations
- 
-       pragma Inline ("=");
-       pragma Inline (Less);
-       pragma Inline (Less_Or_Equal);
-       pragma Inline (Greater);
-       pragma Inline (Greater_Or_Equal);
-       pragma Inline (Concat);
-       pragma Inline (Super_Count);
-       pragma Inline (Super_Element);
-       pragma Inline (Super_Find_Token);
-       pragma Inline (Super_Index);
-       pragma Inline (Super_Index_Non_Blank);
-       pragma Inline (Super_Length);
-       pragma Inline (Super_Replace_Element);
-       pragma Inline (Super_Slice);
-       pragma Inline (Super_To_String);
- 
- end Ada.Strings.Wide_Wide_Superbounded;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-stzunb-shared.adb gcc-8.1.0/gcc/ada/a-stzunb-shared.adb
*** gcc-7.3.0/gcc/ada/a-stzunb-shared.adb	Thu Nov 20 14:37:41 2014
--- gcc-8.1.0/gcc/ada/a-stzunb-shared.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,2137 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --      A D A . S T R I N G S . W I D E _ W I D E _ U N B O U N D E D       --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Strings.Wide_Wide_Search;
- with Ada.Unchecked_Deallocation;
- 
- package body Ada.Strings.Wide_Wide_Unbounded is
- 
-    use Ada.Strings.Wide_Wide_Maps;
- 
-    Growth_Factor : constant := 32;
-    --  The growth factor controls how much extra space is allocated when
-    --  we have to increase the size of an allocated unbounded string. By
-    --  allocating extra space, we avoid the need to reallocate on every
-    --  append, particularly important when a string is built up by repeated
-    --  append operations of small pieces. This is expressed as a factor so
-    --  32 means add 1/32 of the length of the string as growth space.
- 
-    Min_Mul_Alloc : constant := Standard'Maximum_Alignment;
-    --  Allocation will be done by a multiple of Min_Mul_Alloc. This causes
-    --  no memory loss as most (all?) malloc implementations are obliged to
-    --  align the returned memory on the maximum alignment as malloc does not
-    --  know the target alignment.
- 
-    function Aligned_Max_Length (Max_Length : Natural) return Natural;
-    --  Returns recommended length of the shared string which is greater or
-    --  equal to specified length. Calculation take in sense alignment of
-    --  the allocated memory segments to use memory effectively by
-    --  Append/Insert/etc operations.
- 
-    ---------
-    -- "&" --
-    ---------
- 
-    function "&"
-      (Left  : Unbounded_Wide_Wide_String;
-       Right : Unbounded_Wide_Wide_String) return Unbounded_Wide_Wide_String
-    is
-       LR : constant Shared_Wide_Wide_String_Access := Left.Reference;
-       RR : constant Shared_Wide_Wide_String_Access := Right.Reference;
-       DL : constant Natural := LR.Last + RR.Last;
-       DR : Shared_Wide_Wide_String_Access;
- 
-    begin
-       --  Result is an empty string, reuse shared empty string
- 
-       if DL = 0 then
-          Reference (Empty_Shared_Wide_Wide_String'Access);
-          DR := Empty_Shared_Wide_Wide_String'Access;
- 
-       --  Left string is empty, return Rigth string
- 
-       elsif LR.Last = 0 then
-          Reference (RR);
-          DR := RR;
- 
-       --  Right string is empty, return Left string
- 
-       elsif RR.Last = 0 then
-          Reference (LR);
-          DR := LR;
- 
-       --  Overwise, allocate new shared string and fill data
- 
-       else
-          DR := Allocate (DL);
-          DR.Data (1 .. LR.Last) := LR.Data (1 .. LR.Last);
-          DR.Data (LR.Last + 1 .. DL) := RR.Data (1 .. RR.Last);
-          DR.Last := DL;
-       end if;
- 
-       return (AF.Controlled with Reference => DR);
-    end "&";
- 
-    function "&"
-      (Left  : Unbounded_Wide_Wide_String;
-       Right : Wide_Wide_String) return Unbounded_Wide_Wide_String
-    is
-       LR : constant Shared_Wide_Wide_String_Access := Left.Reference;
-       DL : constant Natural := LR.Last + Right'Length;
-       DR : Shared_Wide_Wide_String_Access;
- 
-    begin
-       --  Result is an empty string, reuse shared empty string
- 
-       if DL = 0 then
-          Reference (Empty_Shared_Wide_Wide_String'Access);
-          DR := Empty_Shared_Wide_Wide_String'Access;
- 
-       --  Right is an empty string, return Left string
- 
-       elsif Right'Length = 0 then
-          Reference (LR);
-          DR := LR;
- 
-       --  Otherwise, allocate new shared string and fill it
- 
-       else
-          DR := Allocate (DL);
-          DR.Data (1 .. LR.Last) := LR.Data (1 .. LR.Last);
-          DR.Data (LR.Last + 1 .. DL) := Right;
-          DR.Last := DL;
-       end if;
- 
-       return (AF.Controlled with Reference => DR);
-    end "&";
- 
-    function "&"
-      (Left  : Wide_Wide_String;
-       Right : Unbounded_Wide_Wide_String) return Unbounded_Wide_Wide_String
-    is
-       RR : constant Shared_Wide_Wide_String_Access := Right.Reference;
-       DL : constant Natural := Left'Length + RR.Last;
-       DR : Shared_Wide_Wide_String_Access;
- 
-    begin
-       --  Result is an empty string, reuse shared one
- 
-       if DL = 0 then
-          Reference (Empty_Shared_Wide_Wide_String'Access);
-          DR := Empty_Shared_Wide_Wide_String'Access;
- 
-       --  Left is empty string, return Right string
- 
-       elsif Left'Length = 0 then
-          Reference (RR);
-          DR := RR;
- 
-       --  Otherwise, allocate new shared string and fill it
- 
-       else
-          DR := Allocate (DL);
-          DR.Data (1 .. Left'Length) := Left;
-          DR.Data (Left'Length + 1 .. DL) := RR.Data (1 .. RR.Last);
-          DR.Last := DL;
-       end if;
- 
-       return (AF.Controlled with Reference => DR);
-    end "&";
- 
-    function "&"
-      (Left  : Unbounded_Wide_Wide_String;
-       Right : Wide_Wide_Character) return Unbounded_Wide_Wide_String
-    is
-       LR : constant Shared_Wide_Wide_String_Access := Left.Reference;
-       DL : constant Natural := LR.Last + 1;
-       DR : Shared_Wide_Wide_String_Access;
- 
-    begin
-       DR := Allocate (DL);
-       DR.Data (1 .. LR.Last) := LR.Data (1 .. LR.Last);
-       DR.Data (DL) := Right;
-       DR.Last := DL;
- 
-       return (AF.Controlled with Reference => DR);
-    end "&";
- 
-    function "&"
-      (Left  : Wide_Wide_Character;
-       Right : Unbounded_Wide_Wide_String) return Unbounded_Wide_Wide_String
-    is
-       RR : constant Shared_Wide_Wide_String_Access := Right.Reference;
-       DL : constant Natural := 1 + RR.Last;
-       DR : Shared_Wide_Wide_String_Access;
- 
-    begin
-       DR := Allocate (DL);
-       DR.Data (1) := Left;
-       DR.Data (2 .. DL) := RR.Data (1 .. RR.Last);
-       DR.Last := DL;
- 
-       return (AF.Controlled with Reference => DR);
-    end "&";
- 
-    ---------
-    -- "*" --
-    ---------
- 
-    function "*"
-      (Left  : Natural;
-       Right : Wide_Wide_Character) return Unbounded_Wide_Wide_String
-    is
-       DR : Shared_Wide_Wide_String_Access;
- 
-    begin
-       --  Result is an empty string, reuse shared empty string
- 
-       if Left = 0 then
-          Reference (Empty_Shared_Wide_Wide_String'Access);
-          DR := Empty_Shared_Wide_Wide_String'Access;
- 
-       --  Otherwise, allocate new shared string and fill it
- 
-       else
-          DR := Allocate (Left);
- 
-          for J in 1 .. Left loop
-             DR.Data (J) := Right;
-          end loop;
- 
-          DR.Last := Left;
-       end if;
- 
-       return (AF.Controlled with Reference => DR);
-    end "*";
- 
-    function "*"
-      (Left  : Natural;
-       Right : Wide_Wide_String) return Unbounded_Wide_Wide_String
-    is
-       DL : constant Natural := Left * Right'Length;
-       DR : Shared_Wide_Wide_String_Access;
-       K  : Positive;
- 
-    begin
-       --  Result is an empty string, reuse shared empty string
- 
-       if DL = 0 then
-          Reference (Empty_Shared_Wide_Wide_String'Access);
-          DR := Empty_Shared_Wide_Wide_String'Access;
- 
-       --  Otherwise, allocate new shared string and fill it
- 
-       else
-          DR := Allocate (DL);
-          K := 1;
- 
-          for J in 1 .. Left loop
-             DR.Data (K .. K + Right'Length - 1) := Right;
-             K := K + Right'Length;
-          end loop;
- 
-          DR.Last := DL;
-       end if;
- 
-       return (AF.Controlled with Reference => DR);
-    end "*";
- 
-    function "*"
-      (Left  : Natural;
-       Right : Unbounded_Wide_Wide_String) return Unbounded_Wide_Wide_String
-    is
-       RR : constant Shared_Wide_Wide_String_Access := Right.Reference;
-       DL : constant Natural := Left * RR.Last;
-       DR : Shared_Wide_Wide_String_Access;
-       K  : Positive;
- 
-    begin
-       --  Result is an empty string, reuse shared empty string
- 
-       if DL = 0 then
-          Reference (Empty_Shared_Wide_Wide_String'Access);
-          DR := Empty_Shared_Wide_Wide_String'Access;
- 
-       --  Coefficient is one, just return string itself
- 
-       elsif Left = 1 then
-          Reference (RR);
-          DR := RR;
- 
-       --  Otherwise, allocate new shared string and fill it
- 
-       else
-          DR := Allocate (DL);
-          K := 1;
- 
-          for J in 1 .. Left loop
-             DR.Data (K .. K + RR.Last - 1) := RR.Data (1 .. RR.Last);
-             K := K + RR.Last;
-          end loop;
- 
-          DR.Last := DL;
-       end if;
- 
-       return (AF.Controlled with Reference => DR);
-    end "*";
- 
-    ---------
-    -- "<" --
-    ---------
- 
-    function "<"
-      (Left  : Unbounded_Wide_Wide_String;
-       Right : Unbounded_Wide_Wide_String) return Boolean
-    is
-       LR : constant Shared_Wide_Wide_String_Access := Left.Reference;
-       RR : constant Shared_Wide_Wide_String_Access := Right.Reference;
-    begin
-       return LR.Data (1 .. LR.Last) < RR.Data (1 .. RR.Last);
-    end "<";
- 
-    function "<"
-      (Left  : Unbounded_Wide_Wide_String;
-       Right : Wide_Wide_String) return Boolean
-    is
-       LR : constant Shared_Wide_Wide_String_Access := Left.Reference;
-    begin
-       return LR.Data (1 .. LR.Last) < Right;
-    end "<";
- 
-    function "<"
-      (Left  : Wide_Wide_String;
-       Right : Unbounded_Wide_Wide_String) return Boolean
-    is
-       RR : constant Shared_Wide_Wide_String_Access := Right.Reference;
-    begin
-       return Left < RR.Data (1 .. RR.Last);
-    end "<";
- 
-    ----------
-    -- "<=" --
-    ----------
- 
-    function "<="
-      (Left  : Unbounded_Wide_Wide_String;
-       Right : Unbounded_Wide_Wide_String) return Boolean
-    is
-       LR : constant Shared_Wide_Wide_String_Access := Left.Reference;
-       RR : constant Shared_Wide_Wide_String_Access := Right.Reference;
- 
-    begin
-       --  LR = RR means two strings shares shared string, thus they are equal
- 
-       return LR = RR or else LR.Data (1 .. LR.Last) <= RR.Data (1 .. RR.Last);
-    end "<=";
- 
-    function "<="
-      (Left  : Unbounded_Wide_Wide_String;
-       Right : Wide_Wide_String) return Boolean
-    is
-       LR : constant Shared_Wide_Wide_String_Access := Left.Reference;
-    begin
-       return LR.Data (1 .. LR.Last) <= Right;
-    end "<=";
- 
-    function "<="
-      (Left  : Wide_Wide_String;
-       Right : Unbounded_Wide_Wide_String) return Boolean
-    is
-       RR : constant Shared_Wide_Wide_String_Access := Right.Reference;
-    begin
-       return Left <= RR.Data (1 .. RR.Last);
-    end "<=";
- 
-    ---------
-    -- "=" --
-    ---------
- 
-    function "="
-      (Left  : Unbounded_Wide_Wide_String;
-       Right : Unbounded_Wide_Wide_String) return Boolean
-    is
-       LR : constant Shared_Wide_Wide_String_Access := Left.Reference;
-       RR : constant Shared_Wide_Wide_String_Access := Right.Reference;
- 
-    begin
-       return LR = RR or else LR.Data (1 .. LR.Last) = RR.Data (1 .. RR.Last);
-       --  LR = RR means two strings shares shared string, thus they are equal
-    end "=";
- 
-    function "="
-      (Left  : Unbounded_Wide_Wide_String;
-       Right : Wide_Wide_String) return Boolean
-    is
-       LR : constant Shared_Wide_Wide_String_Access := Left.Reference;
-    begin
-       return LR.Data (1 .. LR.Last) = Right;
-    end "=";
- 
-    function "="
-      (Left  : Wide_Wide_String;
-       Right : Unbounded_Wide_Wide_String) return Boolean
-    is
-       RR : constant Shared_Wide_Wide_String_Access := Right.Reference;
-    begin
-       return Left = RR.Data (1 .. RR.Last);
-    end "=";
- 
-    ---------
-    -- ">" --
-    ---------
- 
-    function ">"
-      (Left  : Unbounded_Wide_Wide_String;
-       Right : Unbounded_Wide_Wide_String) return Boolean
-    is
-       LR : constant Shared_Wide_Wide_String_Access := Left.Reference;
-       RR : constant Shared_Wide_Wide_String_Access := Right.Reference;
-    begin
-       return LR.Data (1 .. LR.Last) > RR.Data (1 .. RR.Last);
-    end ">";
- 
-    function ">"
-      (Left  : Unbounded_Wide_Wide_String;
-       Right : Wide_Wide_String) return Boolean
-    is
-       LR : constant Shared_Wide_Wide_String_Access := Left.Reference;
-    begin
-       return LR.Data (1 .. LR.Last) > Right;
-    end ">";
- 
-    function ">"
-      (Left  : Wide_Wide_String;
-       Right : Unbounded_Wide_Wide_String) return Boolean
-    is
-       RR : constant Shared_Wide_Wide_String_Access := Right.Reference;
-    begin
-       return Left > RR.Data (1 .. RR.Last);
-    end ">";
- 
-    ----------
-    -- ">=" --
-    ----------
- 
-    function ">="
-      (Left  : Unbounded_Wide_Wide_String;
-       Right : Unbounded_Wide_Wide_String) return Boolean
-    is
-       LR : constant Shared_Wide_Wide_String_Access := Left.Reference;
-       RR : constant Shared_Wide_Wide_String_Access := Right.Reference;
- 
-    begin
-       --  LR = RR means two strings shares shared string, thus they are equal
- 
-       return LR = RR or else LR.Data (1 .. LR.Last) >= RR.Data (1 .. RR.Last);
-    end ">=";
- 
-    function ">="
-      (Left  : Unbounded_Wide_Wide_String;
-       Right : Wide_Wide_String) return Boolean
-    is
-       LR : constant Shared_Wide_Wide_String_Access := Left.Reference;
-    begin
-       return LR.Data (1 .. LR.Last) >= Right;
-    end ">=";
- 
-    function ">="
-      (Left  : Wide_Wide_String;
-       Right : Unbounded_Wide_Wide_String) return Boolean
-    is
-       RR : constant Shared_Wide_Wide_String_Access := Right.Reference;
-    begin
-       return Left >= RR.Data (1 .. RR.Last);
-    end ">=";
- 
-    ------------
-    -- Adjust --
-    ------------
- 
-    procedure Adjust (Object : in out Unbounded_Wide_Wide_String) is
-    begin
-       Reference (Object.Reference);
-    end Adjust;
- 
-    ------------------------
-    -- Aligned_Max_Length --
-    ------------------------
- 
-    function Aligned_Max_Length (Max_Length : Natural) return Natural is
-       Static_Size  : constant Natural :=
-         Empty_Shared_Wide_Wide_String'Size / Standard'Storage_Unit;
-       --  Total size of all static components
- 
-       Element_Size : constant Natural :=
-         Wide_Wide_Character'Size / Standard'Storage_Unit;
- 
-    begin
-       return
-         (((Static_Size + Max_Length * Element_Size - 1) / Min_Mul_Alloc + 2)
-           * Min_Mul_Alloc - Static_Size) / Element_Size;
-    end Aligned_Max_Length;
- 
-    --------------
-    -- Allocate --
-    --------------
- 
-    function Allocate
-      (Max_Length : Natural) return Shared_Wide_Wide_String_Access is
-    begin
-       --  Empty string requested, return shared empty string
- 
-       if Max_Length = 0 then
-          Reference (Empty_Shared_Wide_Wide_String'Access);
-          return Empty_Shared_Wide_Wide_String'Access;
- 
-       --  Otherwise, allocate requested space (and probably some more room)
- 
-       else
-          return new Shared_Wide_Wide_String (Aligned_Max_Length (Max_Length));
-       end if;
-    end Allocate;
- 
-    ------------
-    -- Append --
-    ------------
- 
-    procedure Append
-      (Source   : in out Unbounded_Wide_Wide_String;
-       New_Item : Unbounded_Wide_Wide_String)
-    is
-       SR  : constant Shared_Wide_Wide_String_Access := Source.Reference;
-       NR  : constant Shared_Wide_Wide_String_Access := New_Item.Reference;
-       DL  : constant Natural              := SR.Last + NR.Last;
-       DR  : Shared_Wide_Wide_String_Access;
- 
-    begin
-       --  Source is an empty string, reuse New_Item data
- 
-       if SR.Last = 0 then
-          Reference (NR);
-          Source.Reference := NR;
-          Unreference (SR);
- 
-       --  New_Item is empty string, nothing to do
- 
-       elsif NR.Last = 0 then
-          null;
- 
-       --  Try to reuse existent shared string
- 
-       elsif Can_Be_Reused (SR, DL) then
-          SR.Data (SR.Last + 1 .. DL) := NR.Data (1 .. NR.Last);
-          SR.Last := DL;
- 
-       --  Otherwise, allocate new one and fill it
- 
-       else
-          DR := Allocate (DL + DL / Growth_Factor);
-          DR.Data (1 .. SR.Last) := SR.Data (1 .. SR.Last);
-          DR.Data (SR.Last + 1 .. DL) := NR.Data (1 .. NR.Last);
-          DR.Last := DL;
-          Source.Reference := DR;
-          Unreference (SR);
-       end if;
-    end Append;
- 
-    procedure Append
-      (Source   : in out Unbounded_Wide_Wide_String;
-       New_Item : Wide_Wide_String)
-    is
-       SR : constant Shared_Wide_Wide_String_Access := Source.Reference;
-       DL : constant Natural := SR.Last + New_Item'Length;
-       DR : Shared_Wide_Wide_String_Access;
- 
-    begin
-       --  New_Item is an empty string, nothing to do
- 
-       if New_Item'Length = 0 then
-          null;
- 
-       --  Try to reuse existing shared string
- 
-       elsif Can_Be_Reused (SR, DL) then
-          SR.Data (SR.Last + 1 .. DL) := New_Item;
-          SR.Last := DL;
- 
-       --  Otherwise, allocate new one and fill it
- 
-       else
-          DR := Allocate (DL + DL / Growth_Factor);
-          DR.Data (1 .. SR.Last) := SR.Data (1 .. SR.Last);
-          DR.Data (SR.Last + 1 .. DL) := New_Item;
-          DR.Last := DL;
-          Source.Reference := DR;
-          Unreference (SR);
-       end if;
-    end Append;
- 
-    procedure Append
-      (Source   : in out Unbounded_Wide_Wide_String;
-       New_Item : Wide_Wide_Character)
-    is
-       SR : constant Shared_Wide_Wide_String_Access := Source.Reference;
-       DL : constant Natural := SR.Last + 1;
-       DR : Shared_Wide_Wide_String_Access;
- 
-    begin
-       --  Try to reuse existing shared string
- 
-       if Can_Be_Reused (SR, SR.Last + 1) then
-          SR.Data (SR.Last + 1) := New_Item;
-          SR.Last := SR.Last + 1;
- 
-       --  Otherwise, allocate new one and fill it
- 
-       else
-          DR := Allocate (DL + DL / Growth_Factor);
-          DR.Data (1 .. SR.Last) := SR.Data (1 .. SR.Last);
-          DR.Data (DL) := New_Item;
-          DR.Last := DL;
-          Source.Reference := DR;
-          Unreference (SR);
-       end if;
-    end Append;
- 
-    -------------------
-    -- Can_Be_Reused --
-    -------------------
- 
-    function Can_Be_Reused
-      (Item   : Shared_Wide_Wide_String_Access;
-       Length : Natural) return Boolean is
-    begin
-       return
-         System.Atomic_Counters.Is_One (Item.Counter)
-           and then Item.Max_Length >= Length
-           and then Item.Max_Length <=
-                      Aligned_Max_Length (Length + Length / Growth_Factor);
-    end Can_Be_Reused;
- 
-    -----------
-    -- Count --
-    -----------
- 
-    function Count
-      (Source  : Unbounded_Wide_Wide_String;
-       Pattern : Wide_Wide_String;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping :=
-         Wide_Wide_Maps.Identity) return Natural
-    is
-       SR : constant Shared_Wide_Wide_String_Access := Source.Reference;
-    begin
-       return Wide_Wide_Search.Count (SR.Data (1 .. SR.Last), Pattern, Mapping);
-    end Count;
- 
-    function Count
-      (Source  : Unbounded_Wide_Wide_String;
-       Pattern : Wide_Wide_String;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
-       return Natural
-    is
-       SR : constant Shared_Wide_Wide_String_Access := Source.Reference;
-    begin
-       return Wide_Wide_Search.Count (SR.Data (1 .. SR.Last), Pattern, Mapping);
-    end Count;
- 
-    function Count
-      (Source : Unbounded_Wide_Wide_String;
-       Set    : Wide_Wide_Maps.Wide_Wide_Character_Set) return Natural
-    is
-       SR : constant Shared_Wide_Wide_String_Access := Source.Reference;
-    begin
-       return Wide_Wide_Search.Count (SR.Data (1 .. SR.Last), Set);
-    end Count;
- 
-    ------------
-    -- Delete --
-    ------------
- 
-    function Delete
-      (Source  : Unbounded_Wide_Wide_String;
-       From    : Positive;
-       Through : Natural) return Unbounded_Wide_Wide_String
-    is
-       SR : constant Shared_Wide_Wide_String_Access := Source.Reference;
-       DL : Natural;
-       DR : Shared_Wide_Wide_String_Access;
- 
-    begin
-       --  Empty slice is deleted, use the same shared string
- 
-       if From > Through then
-          Reference (SR);
-          DR := SR;
- 
-       --  Index is out of range
- 
-       elsif Through > SR.Last then
-          raise Index_Error;
- 
-       --  Compute size of the result
- 
-       else
-          DL := SR.Last - (Through - From + 1);
- 
-          --  Result is an empty string, reuse shared empty string
- 
-          if DL = 0 then
-             Reference (Empty_Shared_Wide_Wide_String'Access);
-             DR := Empty_Shared_Wide_Wide_String'Access;
- 
-          --  Otherwise, allocate new shared string and fill it
- 
-          else
-             DR := Allocate (DL);
-             DR.Data (1 .. From - 1) := SR.Data (1 .. From - 1);
-             DR.Data (From .. DL) := SR.Data (Through + 1 .. SR.Last);
-             DR.Last := DL;
-          end if;
-       end if;
- 
-       return (AF.Controlled with Reference => DR);
-    end Delete;
- 
-    procedure Delete
-      (Source  : in out Unbounded_Wide_Wide_String;
-       From    : Positive;
-       Through : Natural)
-    is
-       SR : constant Shared_Wide_Wide_String_Access := Source.Reference;
-       DL : Natural;
-       DR : Shared_Wide_Wide_String_Access;
- 
-    begin
-       --  Nothing changed, return
- 
-       if From > Through then
-          null;
- 
-       --  Through is outside of the range
- 
-       elsif Through > SR.Last then
-          raise Index_Error;
- 
-       else
-          DL := SR.Last - (Through - From + 1);
- 
-          --  Result is empty, reuse shared empty string
- 
-          if DL = 0 then
-             Reference (Empty_Shared_Wide_Wide_String'Access);
-             Source.Reference := Empty_Shared_Wide_Wide_String'Access;
-             Unreference (SR);
- 
-          --  Try to reuse existent shared string
- 
-          elsif Can_Be_Reused (SR, DL) then
-             SR.Data (From .. DL) := SR.Data (Through + 1 .. SR.Last);
-             SR.Last := DL;
- 
-          --  Otherwise, allocate new shared string
- 
-          else
-             DR := Allocate (DL);
-             DR.Data (1 .. From - 1) := SR.Data (1 .. From - 1);
-             DR.Data (From .. DL) := SR.Data (Through + 1 .. SR.Last);
-             DR.Last := DL;
-             Source.Reference := DR;
-             Unreference (SR);
-          end if;
-       end if;
-    end Delete;
- 
-    -------------
-    -- Element --
-    -------------
- 
-    function Element
-      (Source : Unbounded_Wide_Wide_String;
-       Index  : Positive) return Wide_Wide_Character
-    is
-       SR : constant Shared_Wide_Wide_String_Access := Source.Reference;
-    begin
-       if Index <= SR.Last then
-          return SR.Data (Index);
-       else
-          raise Index_Error;
-       end if;
-    end Element;
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    procedure Finalize (Object : in out Unbounded_Wide_Wide_String) is
-       SR : constant Shared_Wide_Wide_String_Access := Object.Reference;
- 
-    begin
-       if SR /= null then
- 
-          --  The same controlled object can be finalized several times for
-          --  some reason. As per 7.6.1(24) this should have no ill effect,
-          --  so we need to add a guard for the case of finalizing the same
-          --  object twice.
- 
-          Object.Reference := null;
-          Unreference (SR);
-       end if;
-    end Finalize;
- 
-    ----------------
-    -- Find_Token --
-    ----------------
- 
-    procedure Find_Token
-      (Source : Unbounded_Wide_Wide_String;
-       Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       From   : Positive;
-       Test   : Strings.Membership;
-       First  : out Positive;
-       Last   : out Natural)
-    is
-       SR : constant Shared_Wide_Wide_String_Access := Source.Reference;
-    begin
-       Wide_Wide_Search.Find_Token
-         (SR.Data (From .. SR.Last), Set, Test, First, Last);
-    end Find_Token;
- 
-    procedure Find_Token
-      (Source : Unbounded_Wide_Wide_String;
-       Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       Test   : Strings.Membership;
-       First  : out Positive;
-       Last   : out Natural)
-    is
-       SR : constant Shared_Wide_Wide_String_Access := Source.Reference;
-    begin
-       Wide_Wide_Search.Find_Token
-         (SR.Data (1 .. SR.Last), Set, Test, First, Last);
-    end Find_Token;
- 
-    ----------
-    -- Free --
-    ----------
- 
-    procedure Free (X : in out Wide_Wide_String_Access) is
-       procedure Deallocate is
-          new Ada.Unchecked_Deallocation
-                (Wide_Wide_String, Wide_Wide_String_Access);
-    begin
-       Deallocate (X);
-    end Free;
- 
-    ----------
-    -- Head --
-    ----------
- 
-    function Head
-      (Source : Unbounded_Wide_Wide_String;
-       Count  : Natural;
-       Pad    : Wide_Wide_Character := Wide_Wide_Space)
-       return Unbounded_Wide_Wide_String
-    is
-       SR : constant Shared_Wide_Wide_String_Access := Source.Reference;
-       DR : Shared_Wide_Wide_String_Access;
- 
-    begin
-       --  Result is empty, reuse shared empty string
- 
-       if Count = 0 then
-          Reference (Empty_Shared_Wide_Wide_String'Access);
-          DR := Empty_Shared_Wide_Wide_String'Access;
- 
-       --  Length of the string is the same as requested, reuse source shared
-       --  string.
- 
-       elsif Count = SR.Last then
-          Reference (SR);
-          DR := SR;
- 
-       --  Otherwise, allocate new shared string and fill it
- 
-       else
-          DR := Allocate (Count);
- 
-          --  Length of the source string is more than requested, copy
-          --  corresponding slice.
- 
-          if Count < SR.Last then
-             DR.Data (1 .. Count) := SR.Data (1 .. Count);
- 
-          --  Length of the source string is less than requested, copy all
-          --  contents and fill others by Pad character.
- 
-          else
-             DR.Data (1 .. SR.Last) := SR.Data (1 .. SR.Last);
- 
-             for J in SR.Last + 1 .. Count loop
-                DR.Data (J) := Pad;
-             end loop;
-          end if;
- 
-          DR.Last := Count;
-       end if;
- 
-       return (AF.Controlled with Reference => DR);
-    end Head;
- 
-    procedure Head
-      (Source : in out Unbounded_Wide_Wide_String;
-       Count  : Natural;
-       Pad    : Wide_Wide_Character := Wide_Wide_Space)
-    is
-       SR : constant Shared_Wide_Wide_String_Access := Source.Reference;
-       DR : Shared_Wide_Wide_String_Access;
- 
-    begin
-       --  Result is empty, reuse empty shared string
- 
-       if Count = 0 then
-          Reference (Empty_Shared_Wide_Wide_String'Access);
-          Source.Reference := Empty_Shared_Wide_Wide_String'Access;
-          Unreference (SR);
- 
-       --  Result is same with source string, reuse source shared string
- 
-       elsif Count = SR.Last then
-          null;
- 
-       --  Try to reuse existent shared string
- 
-       elsif Can_Be_Reused (SR, Count) then
-          if Count > SR.Last then
-             for J in SR.Last + 1 .. Count loop
-                SR.Data (J) := Pad;
-             end loop;
-          end if;
- 
-          SR.Last := Count;
- 
-       --  Otherwise, allocate new shared string and fill it
- 
-       else
-          DR := Allocate (Count);
- 
-          --  Length of the source string is greater than requested, copy
-          --  corresponding slice.
- 
-          if Count < SR.Last then
-             DR.Data (1 .. Count) := SR.Data (1 .. Count);
- 
-          --  Length of the source string is less than requested, copy all
-          --  exists data and fill others by Pad character.
- 
-          else
-             DR.Data (1 .. SR.Last) := SR.Data (1 .. SR.Last);
- 
-             for J in SR.Last + 1 .. Count loop
-                DR.Data (J) := Pad;
-             end loop;
-          end if;
- 
-          DR.Last := Count;
-          Source.Reference := DR;
-          Unreference (SR);
-       end if;
-    end Head;
- 
-    -----------
-    -- Index --
-    -----------
- 
-    function Index
-      (Source  : Unbounded_Wide_Wide_String;
-       Pattern : Wide_Wide_String;
-       Going   : Strings.Direction := Strings.Forward;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping :=
-         Wide_Wide_Maps.Identity) return Natural
-    is
-       SR : constant Shared_Wide_Wide_String_Access := Source.Reference;
-    begin
-       return Wide_Wide_Search.Index
-         (SR.Data (1 .. SR.Last), Pattern, Going, Mapping);
-    end Index;
- 
-    function Index
-      (Source  : Unbounded_Wide_Wide_String;
-       Pattern : Wide_Wide_String;
-       Going   : Direction := Forward;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
-       return Natural
-    is
-       SR : constant Shared_Wide_Wide_String_Access := Source.Reference;
-    begin
-       return Wide_Wide_Search.Index
-         (SR.Data (1 .. SR.Last), Pattern, Going, Mapping);
-    end Index;
- 
-    function Index
-      (Source : Unbounded_Wide_Wide_String;
-       Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       Test   : Strings.Membership := Strings.Inside;
-       Going  : Strings.Direction  := Strings.Forward) return Natural
-    is
-       SR : constant Shared_Wide_Wide_String_Access := Source.Reference;
-    begin
-       return Wide_Wide_Search.Index (SR.Data (1 .. SR.Last), Set, Test, Going);
-    end Index;
- 
-    function Index
-      (Source  : Unbounded_Wide_Wide_String;
-       Pattern : Wide_Wide_String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping :=
-         Wide_Wide_Maps.Identity) return Natural
-    is
-       SR : constant Shared_Wide_Wide_String_Access := Source.Reference;
-    begin
-       return Wide_Wide_Search.Index
-         (SR.Data (1 .. SR.Last), Pattern, From, Going, Mapping);
-    end Index;
- 
-    function Index
-      (Source  : Unbounded_Wide_Wide_String;
-       Pattern : Wide_Wide_String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
-       return Natural
-    is
-       SR : constant Shared_Wide_Wide_String_Access := Source.Reference;
-    begin
-       return Wide_Wide_Search.Index
-         (SR.Data (1 .. SR.Last), Pattern, From, Going, Mapping);
-    end Index;
- 
-    function Index
-      (Source  : Unbounded_Wide_Wide_String;
-       Set     : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       From    : Positive;
-       Test    : Membership := Inside;
-       Going   : Direction := Forward) return Natural
-    is
-       SR : constant Shared_Wide_Wide_String_Access := Source.Reference;
-    begin
-       return Wide_Wide_Search.Index
-         (SR.Data (1 .. SR.Last), Set, From, Test, Going);
-    end Index;
- 
-    ---------------------
-    -- Index_Non_Blank --
-    ---------------------
- 
-    function Index_Non_Blank
-      (Source : Unbounded_Wide_Wide_String;
-       Going  : Strings.Direction := Strings.Forward) return Natural
-    is
-       SR : constant Shared_Wide_Wide_String_Access := Source.Reference;
-    begin
-       return Wide_Wide_Search.Index_Non_Blank (SR.Data (1 .. SR.Last), Going);
-    end Index_Non_Blank;
- 
-    function Index_Non_Blank
-      (Source : Unbounded_Wide_Wide_String;
-       From   : Positive;
-       Going  : Direction := Forward) return Natural
-    is
-       SR : constant Shared_Wide_Wide_String_Access := Source.Reference;
-    begin
-       return Wide_Wide_Search.Index_Non_Blank
-         (SR.Data (1 .. SR.Last), From, Going);
-    end Index_Non_Blank;
- 
-    ----------------
-    -- Initialize --
-    ----------------
- 
-    procedure Initialize (Object : in out Unbounded_Wide_Wide_String) is
-    begin
-       Reference (Object.Reference);
-    end Initialize;
- 
-    ------------
-    -- Insert --
-    ------------
- 
-    function Insert
-      (Source   : Unbounded_Wide_Wide_String;
-       Before   : Positive;
-       New_Item : Wide_Wide_String) return Unbounded_Wide_Wide_String
-    is
-       SR : constant Shared_Wide_Wide_String_Access := Source.Reference;
-       DL : constant Natural := SR.Last + New_Item'Length;
-       DR : Shared_Wide_Wide_String_Access;
- 
-    begin
-       --  Check index first
- 
-       if Before > SR.Last + 1 then
-          raise Index_Error;
-       end if;
- 
-       --  Result is empty, reuse empty shared string
- 
-       if DL = 0 then
-          Reference (Empty_Shared_Wide_Wide_String'Access);
-          DR := Empty_Shared_Wide_Wide_String'Access;
- 
-       --  Inserted string is empty, reuse source shared string
- 
-       elsif New_Item'Length = 0 then
-          Reference (SR);
-          DR := SR;
- 
-       --  Otherwise, allocate new shared string and fill it
- 
-       else
-          DR := Allocate (DL + DL / Growth_Factor);
-          DR.Data (1 .. Before - 1) := SR.Data (1 .. Before - 1);
-          DR.Data (Before .. Before + New_Item'Length - 1) := New_Item;
-          DR.Data (Before + New_Item'Length .. DL) :=
-            SR.Data (Before .. SR.Last);
-          DR.Last := DL;
-       end if;
- 
-       return (AF.Controlled with Reference => DR);
-    end Insert;
- 
-    procedure Insert
-      (Source   : in out Unbounded_Wide_Wide_String;
-       Before   : Positive;
-       New_Item : Wide_Wide_String)
-    is
-       SR : constant Shared_Wide_Wide_String_Access := Source.Reference;
-       DL : constant Natural := SR.Last + New_Item'Length;
-       DR : Shared_Wide_Wide_String_Access;
- 
-    begin
-       --  Check bounds
- 
-       if Before > SR.Last + 1 then
-          raise Index_Error;
-       end if;
- 
-       --  Result is empty string, reuse empty shared string
- 
-       if DL = 0 then
-          Reference (Empty_Shared_Wide_Wide_String'Access);
-          Source.Reference := Empty_Shared_Wide_Wide_String'Access;
-          Unreference (SR);
- 
-       --  Inserted string is empty, nothing to do
- 
-       elsif New_Item'Length = 0 then
-          null;
- 
-       --  Try to reuse existent shared string first
- 
-       elsif Can_Be_Reused (SR, DL) then
-          SR.Data (Before + New_Item'Length .. DL) :=
-            SR.Data (Before .. SR.Last);
-          SR.Data (Before .. Before + New_Item'Length - 1) := New_Item;
-          SR.Last := DL;
- 
-       --  Otherwise, allocate new shared string and fill it
- 
-       else
-          DR := Allocate (DL + DL / Growth_Factor);
-          DR.Data (1 .. Before - 1) := SR.Data (1 .. Before - 1);
-          DR.Data (Before .. Before + New_Item'Length - 1) := New_Item;
-          DR.Data (Before + New_Item'Length .. DL) :=
-            SR.Data (Before .. SR.Last);
-          DR.Last := DL;
-          Source.Reference := DR;
-          Unreference (SR);
-       end if;
-    end Insert;
- 
-    ------------
-    -- Length --
-    ------------
- 
-    function Length (Source : Unbounded_Wide_Wide_String) return Natural is
-    begin
-       return Source.Reference.Last;
-    end Length;
- 
-    ---------------
-    -- Overwrite --
-    ---------------
- 
-    function Overwrite
-      (Source   : Unbounded_Wide_Wide_String;
-       Position : Positive;
-       New_Item : Wide_Wide_String) return Unbounded_Wide_Wide_String
-    is
-       SR : constant Shared_Wide_Wide_String_Access := Source.Reference;
-       DL : Natural;
-       DR : Shared_Wide_Wide_String_Access;
- 
-    begin
-       --  Check bounds
- 
-       if Position > SR.Last + 1 then
-          raise Index_Error;
-       end if;
- 
-       DL := Integer'Max (SR.Last, Position + New_Item'Length - 1);
- 
-       --  Result is empty string, reuse empty shared string
- 
-       if DL = 0 then
-          Reference (Empty_Shared_Wide_Wide_String'Access);
-          DR := Empty_Shared_Wide_Wide_String'Access;
- 
-       --  Result is same with source string, reuse source shared string
- 
-       elsif New_Item'Length = 0 then
-          Reference (SR);
-          DR := SR;
- 
-       --  Otherwise, allocate new shared string and fill it
- 
-       else
-          DR := Allocate (DL);
-          DR.Data (1 .. Position - 1) := SR.Data (1 .. Position - 1);
-          DR.Data (Position .. Position + New_Item'Length - 1) := New_Item;
-          DR.Data (Position + New_Item'Length .. DL) :=
-            SR.Data (Position + New_Item'Length .. SR.Last);
-          DR.Last := DL;
-       end if;
- 
-       return (AF.Controlled with Reference => DR);
-    end Overwrite;
- 
-    procedure Overwrite
-      (Source    : in out Unbounded_Wide_Wide_String;
-       Position  : Positive;
-       New_Item  : Wide_Wide_String)
-    is
-       SR : constant Shared_Wide_Wide_String_Access := Source.Reference;
-       DL : Natural;
-       DR : Shared_Wide_Wide_String_Access;
- 
-    begin
-       --  Bounds check
- 
-       if Position > SR.Last + 1 then
-          raise Index_Error;
-       end if;
- 
-       DL := Integer'Max (SR.Last, Position + New_Item'Length - 1);
- 
-       --  Result is empty string, reuse empty shared string
- 
-       if DL = 0 then
-          Reference (Empty_Shared_Wide_Wide_String'Access);
-          Source.Reference := Empty_Shared_Wide_Wide_String'Access;
-          Unreference (SR);
- 
-       --  String unchanged, nothing to do
- 
-       elsif New_Item'Length = 0 then
-          null;
- 
-       --  Try to reuse existent shared string
- 
-       elsif Can_Be_Reused (SR, DL) then
-          SR.Data (Position .. Position + New_Item'Length - 1) := New_Item;
-          SR.Last := DL;
- 
-       --  Otherwise allocate new shared string and fill it
- 
-       else
-          DR := Allocate (DL);
-          DR.Data (1 .. Position - 1) := SR.Data (1 .. Position - 1);
-          DR.Data (Position .. Position + New_Item'Length - 1) := New_Item;
-          DR.Data (Position + New_Item'Length .. DL) :=
-            SR.Data (Position + New_Item'Length .. SR.Last);
-          DR.Last := DL;
-          Source.Reference := DR;
-          Unreference (SR);
-       end if;
-    end Overwrite;
- 
-    ---------------
-    -- Reference --
-    ---------------
- 
-    procedure Reference (Item : not null Shared_Wide_Wide_String_Access) is
-    begin
-       System.Atomic_Counters.Increment (Item.Counter);
-    end Reference;
- 
-    ---------------------
-    -- Replace_Element --
-    ---------------------
- 
-    procedure Replace_Element
-      (Source : in out Unbounded_Wide_Wide_String;
-       Index  : Positive;
-       By     : Wide_Wide_Character)
-    is
-       SR : constant Shared_Wide_Wide_String_Access := Source.Reference;
-       DR : Shared_Wide_Wide_String_Access;
- 
-    begin
-       --  Bounds check
- 
-       if Index <= SR.Last then
- 
-          --  Try to reuse existent shared string
- 
-          if Can_Be_Reused (SR, SR.Last) then
-             SR.Data (Index) := By;
- 
-          --  Otherwise allocate new shared string and fill it
- 
-          else
-             DR := Allocate (SR.Last);
-             DR.Data (1 .. SR.Last) := SR.Data (1 .. SR.Last);
-             DR.Data (Index) := By;
-             DR.Last := SR.Last;
-             Source.Reference := DR;
-             Unreference (SR);
-          end if;
- 
-       else
-          raise Index_Error;
-       end if;
-    end Replace_Element;
- 
-    -------------------
-    -- Replace_Slice --
-    -------------------
- 
-    function Replace_Slice
-      (Source : Unbounded_Wide_Wide_String;
-       Low    : Positive;
-       High   : Natural;
-       By     : Wide_Wide_String) return Unbounded_Wide_Wide_String
-    is
-       SR : constant Shared_Wide_Wide_String_Access := Source.Reference;
-       DL : Natural;
-       DR : Shared_Wide_Wide_String_Access;
- 
-    begin
-       --  Check bounds
- 
-       if Low > SR.Last + 1 then
-          raise Index_Error;
-       end if;
- 
-       --  Do replace operation when removed slice is not empty
- 
-       if High >= Low then
-          DL := By'Length + SR.Last + Low - Integer'Min (High, SR.Last) - 1;
-          --  This is the number of characters remaining in the string after
-          --  replacing the slice.
- 
-          --  Result is empty string, reuse empty shared string
- 
-          if DL = 0 then
-             Reference (Empty_Shared_Wide_Wide_String'Access);
-             DR := Empty_Shared_Wide_Wide_String'Access;
- 
-          --  Otherwise allocate new shared string and fill it
- 
-          else
-             DR := Allocate (DL);
-             DR.Data (1 .. Low - 1) := SR.Data (1 .. Low - 1);
-             DR.Data (Low .. Low + By'Length - 1) := By;
-             DR.Data (Low + By'Length .. DL) := SR.Data (High + 1 .. SR.Last);
-             DR.Last := DL;
-          end if;
- 
-          return (AF.Controlled with Reference => DR);
- 
-       --  Otherwise just insert string
- 
-       else
-          return Insert (Source, Low, By);
-       end if;
-    end Replace_Slice;
- 
-    procedure Replace_Slice
-      (Source : in out Unbounded_Wide_Wide_String;
-       Low    : Positive;
-       High   : Natural;
-       By     : Wide_Wide_String)
-    is
-       SR : constant Shared_Wide_Wide_String_Access := Source.Reference;
-       DL : Natural;
-       DR : Shared_Wide_Wide_String_Access;
- 
-    begin
-       --  Bounds check
- 
-       if Low > SR.Last + 1 then
-          raise Index_Error;
-       end if;
- 
-       --  Do replace operation only when replaced slice is not empty
- 
-       if High >= Low then
-          DL := By'Length + SR.Last + Low - Integer'Min (High, SR.Last) - 1;
-          --  This is the number of characters remaining in the string after
-          --  replacing the slice.
- 
-          --  Result is empty string, reuse empty shared string
- 
-          if DL = 0 then
-             Reference (Empty_Shared_Wide_Wide_String'Access);
-             Source.Reference := Empty_Shared_Wide_Wide_String'Access;
-             Unreference (SR);
- 
-          --  Try to reuse existent shared string
- 
-          elsif Can_Be_Reused (SR, DL) then
-             SR.Data (Low + By'Length .. DL) := SR.Data (High + 1 .. SR.Last);
-             SR.Data (Low .. Low + By'Length - 1) := By;
-             SR.Last := DL;
- 
-          --  Otherwise allocate new shared string and fill it
- 
-          else
-             DR := Allocate (DL);
-             DR.Data (1 .. Low - 1) := SR.Data (1 .. Low - 1);
-             DR.Data (Low .. Low + By'Length - 1) := By;
-             DR.Data (Low + By'Length .. DL) := SR.Data (High + 1 .. SR.Last);
-             DR.Last := DL;
-             Source.Reference := DR;
-             Unreference (SR);
-          end if;
- 
-       --  Otherwise just insert item
- 
-       else
-          Insert (Source, Low, By);
-       end if;
-    end Replace_Slice;
- 
-    -------------------------------
-    -- Set_Unbounded_Wide_Wide_String --
-    -------------------------------
- 
-    procedure Set_Unbounded_Wide_Wide_String
-      (Target : out Unbounded_Wide_Wide_String;
-       Source : Wide_Wide_String)
-    is
-       TR : constant Shared_Wide_Wide_String_Access := Target.Reference;
-       DR : Shared_Wide_Wide_String_Access;
- 
-    begin
-       --  In case of empty string, reuse empty shared string
- 
-       if Source'Length = 0 then
-          Reference (Empty_Shared_Wide_Wide_String'Access);
-          Target.Reference := Empty_Shared_Wide_Wide_String'Access;
- 
-       else
-          --  Try to reuse existent shared string
- 
-          if Can_Be_Reused (TR, Source'Length) then
-             Reference (TR);
-             DR := TR;
- 
-          --  Otherwise allocate new shared string
- 
-          else
-             DR := Allocate (Source'Length);
-             Target.Reference := DR;
-          end if;
- 
-          DR.Data (1 .. Source'Length) := Source;
-          DR.Last := Source'Length;
-       end if;
- 
-       Unreference (TR);
-    end Set_Unbounded_Wide_Wide_String;
- 
-    -----------
-    -- Slice --
-    -----------
- 
-    function Slice
-      (Source : Unbounded_Wide_Wide_String;
-       Low    : Positive;
-       High   : Natural) return Wide_Wide_String
-    is
-       SR : constant Shared_Wide_Wide_String_Access := Source.Reference;
- 
-    begin
-       --  Note: test of High > Length is in accordance with AI95-00128
- 
-       if Low > SR.Last + 1 or else High > SR.Last then
-          raise Index_Error;
- 
-       else
-          return SR.Data (Low .. High);
-       end if;
-    end Slice;
- 
-    ----------
-    -- Tail --
-    ----------
- 
-    function Tail
-      (Source : Unbounded_Wide_Wide_String;
-       Count  : Natural;
-       Pad    : Wide_Wide_Character := Wide_Wide_Space)
-       return Unbounded_Wide_Wide_String
-    is
-       SR : constant Shared_Wide_Wide_String_Access := Source.Reference;
-       DR : Shared_Wide_Wide_String_Access;
- 
-    begin
-       --  For empty result reuse empty shared string
- 
-       if Count = 0 then
-          Reference (Empty_Shared_Wide_Wide_String'Access);
-          DR := Empty_Shared_Wide_Wide_String'Access;
- 
-       --  Result is hole source string, reuse source shared string
- 
-       elsif Count = SR.Last then
-          Reference (SR);
-          DR := SR;
- 
-       --  Otherwise allocate new shared string and fill it
- 
-       else
-          DR := Allocate (Count);
- 
-          if Count < SR.Last then
-             DR.Data (1 .. Count) := SR.Data (SR.Last - Count + 1 .. SR.Last);
- 
-          else
-             for J in 1 .. Count - SR.Last loop
-                DR.Data (J) := Pad;
-             end loop;
- 
-             DR.Data (Count - SR.Last + 1 .. Count) := SR.Data (1 .. SR.Last);
-          end if;
- 
-          DR.Last := Count;
-       end if;
- 
-       return (AF.Controlled with Reference => DR);
-    end Tail;
- 
-    procedure Tail
-      (Source : in out Unbounded_Wide_Wide_String;
-       Count  : Natural;
-       Pad    : Wide_Wide_Character := Wide_Wide_Space)
-    is
-       SR : constant Shared_Wide_Wide_String_Access := Source.Reference;
-       DR : Shared_Wide_Wide_String_Access;
- 
-       procedure Common
-         (SR    : Shared_Wide_Wide_String_Access;
-          DR    : Shared_Wide_Wide_String_Access;
-          Count : Natural);
-       --  Common code of tail computation. SR/DR can point to the same object
- 
-       ------------
-       -- Common --
-       ------------
- 
-       procedure Common
-         (SR    : Shared_Wide_Wide_String_Access;
-          DR    : Shared_Wide_Wide_String_Access;
-          Count : Natural) is
-       begin
-          if Count < SR.Last then
-             DR.Data (1 .. Count) := SR.Data (SR.Last - Count + 1 .. SR.Last);
- 
-          else
-             DR.Data (Count - SR.Last + 1 .. Count) := SR.Data (1 .. SR.Last);
- 
-             for J in 1 .. Count - SR.Last loop
-                DR.Data (J) := Pad;
-             end loop;
-          end if;
- 
-          DR.Last := Count;
-       end Common;
- 
-    begin
-       --  Result is empty string, reuse empty shared string
- 
-       if Count = 0 then
-          Reference (Empty_Shared_Wide_Wide_String'Access);
-          Source.Reference := Empty_Shared_Wide_Wide_String'Access;
-          Unreference (SR);
- 
-       --  Length of the result is the same with length of the source string,
-       --  reuse source shared string.
- 
-       elsif Count = SR.Last then
-          null;
- 
-       --  Try to reuse existent shared string
- 
-       elsif Can_Be_Reused (SR, Count) then
-          Common (SR, SR, Count);
- 
-       --  Otherwise allocate new shared string and fill it
- 
-       else
-          DR := Allocate (Count);
-          Common (SR, DR, Count);
-          Source.Reference := DR;
-          Unreference (SR);
-       end if;
-    end Tail;
- 
-    -------------------------
-    -- To_Wide_Wide_String --
-    -------------------------
- 
-    function To_Wide_Wide_String
-      (Source : Unbounded_Wide_Wide_String) return Wide_Wide_String is
-    begin
-       return Source.Reference.Data (1 .. Source.Reference.Last);
-    end To_Wide_Wide_String;
- 
-    -----------------------------------
-    -- To_Unbounded_Wide_Wide_String --
-    -----------------------------------
- 
-    function To_Unbounded_Wide_Wide_String
-      (Source : Wide_Wide_String) return Unbounded_Wide_Wide_String
-    is
-       DR : Shared_Wide_Wide_String_Access;
- 
-    begin
-       if Source'Length = 0 then
-          Reference (Empty_Shared_Wide_Wide_String'Access);
-          DR := Empty_Shared_Wide_Wide_String'Access;
- 
-       else
-          DR := Allocate (Source'Length);
-          DR.Data (1 .. Source'Length) := Source;
-          DR.Last := Source'Length;
-       end if;
- 
-       return (AF.Controlled with Reference => DR);
-    end To_Unbounded_Wide_Wide_String;
- 
-    function To_Unbounded_Wide_Wide_String
-      (Length : Natural) return Unbounded_Wide_Wide_String
-    is
-       DR : Shared_Wide_Wide_String_Access;
- 
-    begin
-       if Length = 0 then
-          Reference (Empty_Shared_Wide_Wide_String'Access);
-          DR := Empty_Shared_Wide_Wide_String'Access;
- 
-       else
-          DR := Allocate (Length);
-          DR.Last := Length;
-       end if;
- 
-       return (AF.Controlled with Reference => DR);
-    end To_Unbounded_Wide_Wide_String;
- 
-    ---------------
-    -- Translate --
-    ---------------
- 
-    function Translate
-      (Source  : Unbounded_Wide_Wide_String;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping)
-       return Unbounded_Wide_Wide_String
-    is
-       SR : constant Shared_Wide_Wide_String_Access := Source.Reference;
-       DR : Shared_Wide_Wide_String_Access;
- 
-    begin
-       --  Nothing to translate, reuse empty shared string
- 
-       if SR.Last = 0 then
-          Reference (Empty_Shared_Wide_Wide_String'Access);
-          DR := Empty_Shared_Wide_Wide_String'Access;
- 
-       --  Otherwise, allocate new shared string and fill it
- 
-       else
-          DR := Allocate (SR.Last);
- 
-          for J in 1 .. SR.Last loop
-             DR.Data (J) := Value (Mapping, SR.Data (J));
-          end loop;
- 
-          DR.Last := SR.Last;
-       end if;
- 
-       return (AF.Controlled with Reference => DR);
-    end Translate;
- 
-    procedure Translate
-      (Source  : in out Unbounded_Wide_Wide_String;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping)
-    is
-       SR : constant Shared_Wide_Wide_String_Access := Source.Reference;
-       DR : Shared_Wide_Wide_String_Access;
- 
-    begin
-       --  Nothing to translate
- 
-       if SR.Last = 0 then
-          null;
- 
-       --  Try to reuse shared string
- 
-       elsif Can_Be_Reused (SR, SR.Last) then
-          for J in 1 .. SR.Last loop
-             SR.Data (J) := Value (Mapping, SR.Data (J));
-          end loop;
- 
-       --  Otherwise, allocate new shared string
- 
-       else
-          DR := Allocate (SR.Last);
- 
-          for J in 1 .. SR.Last loop
-             DR.Data (J) := Value (Mapping, SR.Data (J));
-          end loop;
- 
-          DR.Last := SR.Last;
-          Source.Reference := DR;
-          Unreference (SR);
-       end if;
-    end Translate;
- 
-    function Translate
-      (Source  : Unbounded_Wide_Wide_String;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
-       return Unbounded_Wide_Wide_String
-    is
-       SR : constant Shared_Wide_Wide_String_Access := Source.Reference;
-       DR : Shared_Wide_Wide_String_Access;
- 
-    begin
-       --  Nothing to translate, reuse empty shared string
- 
-       if SR.Last = 0 then
-          Reference (Empty_Shared_Wide_Wide_String'Access);
-          DR := Empty_Shared_Wide_Wide_String'Access;
- 
-       --  Otherwise, allocate new shared string and fill it
- 
-       else
-          DR := Allocate (SR.Last);
- 
-          for J in 1 .. SR.Last loop
-             DR.Data (J) := Mapping.all (SR.Data (J));
-          end loop;
- 
-          DR.Last := SR.Last;
-       end if;
- 
-       return (AF.Controlled with Reference => DR);
- 
-    exception
-       when others =>
-          Unreference (DR);
- 
-          raise;
-    end Translate;
- 
-    procedure Translate
-      (Source  : in out Unbounded_Wide_Wide_String;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
-    is
-       SR : constant Shared_Wide_Wide_String_Access := Source.Reference;
-       DR : Shared_Wide_Wide_String_Access;
- 
-    begin
-       --  Nothing to translate
- 
-       if SR.Last = 0 then
-          null;
- 
-       --  Try to reuse shared string
- 
-       elsif Can_Be_Reused (SR, SR.Last) then
-          for J in 1 .. SR.Last loop
-             SR.Data (J) := Mapping.all (SR.Data (J));
-          end loop;
- 
-       --  Otherwise allocate new shared string and fill it
- 
-       else
-          DR := Allocate (SR.Last);
- 
-          for J in 1 .. SR.Last loop
-             DR.Data (J) := Mapping.all (SR.Data (J));
-          end loop;
- 
-          DR.Last := SR.Last;
-          Source.Reference := DR;
-          Unreference (SR);
-       end if;
- 
-    exception
-       when others =>
-          if DR /= null then
-             Unreference (DR);
-          end if;
- 
-          raise;
-    end Translate;
- 
-    ----------
-    -- Trim --
-    ----------
- 
-    function Trim
-      (Source : Unbounded_Wide_Wide_String;
-       Side   : Trim_End) return Unbounded_Wide_Wide_String
-    is
-       SR   : constant Shared_Wide_Wide_String_Access := Source.Reference;
-       DL   : Natural;
-       DR   : Shared_Wide_Wide_String_Access;
-       Low  : Natural;
-       High : Natural;
- 
-    begin
-       Low := Index_Non_Blank (Source, Forward);
- 
-       --  All blanks, reuse empty shared string
- 
-       if Low = 0 then
-          Reference (Empty_Shared_Wide_Wide_String'Access);
-          DR := Empty_Shared_Wide_Wide_String'Access;
- 
-       else
-          case Side is
-             when Left =>
-                High := SR.Last;
-                DL   := SR.Last - Low + 1;
- 
-             when Right =>
-                Low  := 1;
-                High := Index_Non_Blank (Source, Backward);
-                DL   := High;
- 
-             when Both =>
-                High := Index_Non_Blank (Source, Backward);
-                DL   := High - Low + 1;
-          end case;
- 
-          --  Length of the result is the same as length of the source string,
-          --  reuse source shared string.
- 
-          if DL = SR.Last then
-             Reference (SR);
-             DR := SR;
- 
-          --  Otherwise, allocate new shared string
- 
-          else
-             DR := Allocate (DL);
-             DR.Data (1 .. DL) := SR.Data (Low .. High);
-             DR.Last := DL;
-          end if;
-       end if;
- 
-       return (AF.Controlled with Reference => DR);
-    end Trim;
- 
-    procedure Trim
-      (Source : in out Unbounded_Wide_Wide_String;
-       Side   : Trim_End)
-    is
-       SR   : constant Shared_Wide_Wide_String_Access := Source.Reference;
-       DL   : Natural;
-       DR   : Shared_Wide_Wide_String_Access;
-       Low  : Natural;
-       High : Natural;
- 
-    begin
-       Low := Index_Non_Blank (Source, Forward);
- 
-       --  All blanks, reuse empty shared string
- 
-       if Low = 0 then
-          Reference (Empty_Shared_Wide_Wide_String'Access);
-          Source.Reference := Empty_Shared_Wide_Wide_String'Access;
-          Unreference (SR);
- 
-       else
-          case Side is
-             when Left =>
-                High := SR.Last;
-                DL   := SR.Last - Low + 1;
- 
-             when Right =>
-                Low  := 1;
-                High := Index_Non_Blank (Source, Backward);
-                DL   := High;
- 
-             when Both =>
-                High := Index_Non_Blank (Source, Backward);
-                DL   := High - Low + 1;
-          end case;
- 
-          --  Length of the result is the same as length of the source string,
-          --  nothing to do.
- 
-          if DL = SR.Last then
-             null;
- 
-          --  Try to reuse existent shared string
- 
-          elsif Can_Be_Reused (SR, DL) then
-             SR.Data (1 .. DL) := SR.Data (Low .. High);
-             SR.Last := DL;
- 
-          --  Otherwise, allocate new shared string
- 
-          else
-             DR := Allocate (DL);
-             DR.Data (1 .. DL) := SR.Data (Low .. High);
-             DR.Last := DL;
-             Source.Reference := DR;
-             Unreference (SR);
-          end if;
-       end if;
-    end Trim;
- 
-    function Trim
-      (Source : Unbounded_Wide_Wide_String;
-       Left   : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       Right  : Wide_Wide_Maps.Wide_Wide_Character_Set)
-       return Unbounded_Wide_Wide_String
-    is
-       SR   : constant Shared_Wide_Wide_String_Access := Source.Reference;
-       DL   : Natural;
-       DR   : Shared_Wide_Wide_String_Access;
-       Low  : Natural;
-       High : Natural;
- 
-    begin
-       Low := Index (Source, Left, Outside, Forward);
- 
-       --  Source includes only characters from Left set, reuse empty shared
-       --  string.
- 
-       if Low = 0 then
-          Reference (Empty_Shared_Wide_Wide_String'Access);
-          DR := Empty_Shared_Wide_Wide_String'Access;
- 
-       else
-          High := Index (Source, Right, Outside, Backward);
-          DL   := Integer'Max (0, High - Low + 1);
- 
-          --  Source includes only characters from Right set or result string
-          --  is empty, reuse empty shared string.
- 
-          if High = 0 or else DL = 0 then
-             Reference (Empty_Shared_Wide_Wide_String'Access);
-             DR := Empty_Shared_Wide_Wide_String'Access;
- 
-          --  Otherwise, allocate new shared string and fill it
- 
-          else
-             DR := Allocate (DL);
-             DR.Data (1 .. DL) := SR.Data (Low .. High);
-             DR.Last := DL;
-          end if;
-       end if;
- 
-       return (AF.Controlled with Reference => DR);
-    end Trim;
- 
-    procedure Trim
-      (Source : in out Unbounded_Wide_Wide_String;
-       Left   : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       Right  : Wide_Wide_Maps.Wide_Wide_Character_Set)
-    is
-       SR   : constant Shared_Wide_Wide_String_Access := Source.Reference;
-       DL   : Natural;
-       DR   : Shared_Wide_Wide_String_Access;
-       Low  : Natural;
-       High : Natural;
- 
-    begin
-       Low := Index (Source, Left, Outside, Forward);
- 
-       --  Source includes only characters from Left set, reuse empty shared
-       --  string.
- 
-       if Low = 0 then
-          Reference (Empty_Shared_Wide_Wide_String'Access);
-          Source.Reference := Empty_Shared_Wide_Wide_String'Access;
-          Unreference (SR);
- 
-       else
-          High := Index (Source, Right, Outside, Backward);
-          DL   := Integer'Max (0, High - Low + 1);
- 
-          --  Source includes only characters from Right set or result string
-          --  is empty, reuse empty shared string.
- 
-          if High = 0 or else DL = 0 then
-             Reference (Empty_Shared_Wide_Wide_String'Access);
-             Source.Reference := Empty_Shared_Wide_Wide_String'Access;
-             Unreference (SR);
- 
-          --  Try to reuse existent shared string
- 
-          elsif Can_Be_Reused (SR, DL) then
-             SR.Data (1 .. DL) := SR.Data (Low .. High);
-             SR.Last := DL;
- 
-          --  Otherwise, allocate new shared string and fill it
- 
-          else
-             DR := Allocate (DL);
-             DR.Data (1 .. DL) := SR.Data (Low .. High);
-             DR.Last := DL;
-             Source.Reference := DR;
-             Unreference (SR);
-          end if;
-       end if;
-    end Trim;
- 
-    ---------------------
-    -- Unbounded_Slice --
-    ---------------------
- 
-    function Unbounded_Slice
-      (Source : Unbounded_Wide_Wide_String;
-       Low    : Positive;
-       High   : Natural) return Unbounded_Wide_Wide_String
-    is
-       SR : constant Shared_Wide_Wide_String_Access := Source.Reference;
-       DL : Natural;
-       DR : Shared_Wide_Wide_String_Access;
- 
-    begin
-       --  Check bounds
- 
-       if Low > SR.Last + 1 or else High > SR.Last then
-          raise Index_Error;
- 
-       --  Result is empty slice, reuse empty shared string
- 
-       elsif Low > High then
-          Reference (Empty_Shared_Wide_Wide_String'Access);
-          DR := Empty_Shared_Wide_Wide_String'Access;
- 
-       --  Otherwise, allocate new shared string and fill it
- 
-       else
-          DL := High - Low + 1;
-          DR := Allocate (DL);
-          DR.Data (1 .. DL) := SR.Data (Low .. High);
-          DR.Last := DL;
-       end if;
- 
-       return (AF.Controlled with Reference => DR);
-    end Unbounded_Slice;
- 
-    procedure Unbounded_Slice
-      (Source : Unbounded_Wide_Wide_String;
-       Target : out Unbounded_Wide_Wide_String;
-       Low    : Positive;
-       High   : Natural)
-    is
-       SR : constant Shared_Wide_Wide_String_Access := Source.Reference;
-       TR : constant Shared_Wide_Wide_String_Access := Target.Reference;
-       DL : Natural;
-       DR : Shared_Wide_Wide_String_Access;
- 
-    begin
-       --  Check bounds
- 
-       if Low > SR.Last + 1 or else High > SR.Last then
-          raise Index_Error;
- 
-       --  Result is empty slice, reuse empty shared string
- 
-       elsif Low > High then
-          Reference (Empty_Shared_Wide_Wide_String'Access);
-          Target.Reference := Empty_Shared_Wide_Wide_String'Access;
-          Unreference (TR);
- 
-       else
-          DL := High - Low + 1;
- 
-          --  Try to reuse existent shared string
- 
-          if Can_Be_Reused (TR, DL) then
-             TR.Data (1 .. DL) := SR.Data (Low .. High);
-             TR.Last := DL;
- 
-          --  Otherwise, allocate new shared string and fill it
- 
-          else
-             DR := Allocate (DL);
-             DR.Data (1 .. DL) := SR.Data (Low .. High);
-             DR.Last := DL;
-             Target.Reference := DR;
-             Unreference (TR);
-          end if;
-       end if;
-    end Unbounded_Slice;
- 
-    -----------------
-    -- Unreference --
-    -----------------
- 
-    procedure Unreference (Item : not null Shared_Wide_Wide_String_Access) is
- 
-       procedure Free is
-         new Ada.Unchecked_Deallocation
-               (Shared_Wide_Wide_String, Shared_Wide_Wide_String_Access);
- 
-       Aux : Shared_Wide_Wide_String_Access := Item;
- 
-    begin
-       if System.Atomic_Counters.Decrement (Aux.Counter) then
- 
-          --  Reference counter of Empty_Shared_Wide_Wide_String must never
-          --  reach zero.
- 
-          pragma Assert (Aux /= Empty_Shared_Wide_Wide_String'Access);
- 
-          Free (Aux);
-       end if;
-    end Unreference;
- 
- end Ada.Strings.Wide_Wide_Unbounded;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-stzunb-shared.ads gcc-8.1.0/gcc/ada/a-stzunb-shared.ads
*** gcc-7.3.0/gcc/ada/a-stzunb-shared.ads	Tue Jan  6 09:39:03 2015
--- gcc-8.1.0/gcc/ada/a-stzunb-shared.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,513 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --      A D A . S T R I N G S . W I D E _ W I D E _ U N B O U N D E D       --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2014, Free Software Foundation, 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 version is supported on:
- --    - all Alpha platforms
- --    - all ia64 platforms
- --    - all PowerPC platforms
- --    - all SPARC V9 platforms
- --    - all x86 platforms
- --    - all x86_64 platforms
- 
- with Ada.Strings.Wide_Wide_Maps;
- private with Ada.Finalization;
- private with System.Atomic_Counters;
- 
- package Ada.Strings.Wide_Wide_Unbounded is
-    pragma Preelaborate;
- 
-    type Unbounded_Wide_Wide_String is private;
-    pragma Preelaborable_Initialization (Unbounded_Wide_Wide_String);
- 
-    Null_Unbounded_Wide_Wide_String : constant Unbounded_Wide_Wide_String;
- 
-    function Length (Source : Unbounded_Wide_Wide_String) return Natural;
- 
-    type Wide_Wide_String_Access is access all Wide_Wide_String;
- 
-    procedure Free (X : in out Wide_Wide_String_Access);
- 
-    --------------------------------------------------------
-    -- Conversion, Concatenation, and Selection Functions --
-    --------------------------------------------------------
- 
-    function To_Unbounded_Wide_Wide_String
-      (Source : Wide_Wide_String) return Unbounded_Wide_Wide_String;
- 
-    function To_Unbounded_Wide_Wide_String
-      (Length : Natural) return Unbounded_Wide_Wide_String;
- 
-    function To_Wide_Wide_String
-      (Source : Unbounded_Wide_Wide_String) return Wide_Wide_String;
- 
-    procedure Set_Unbounded_Wide_Wide_String
-      (Target : out Unbounded_Wide_Wide_String;
-       Source : Wide_Wide_String);
-    pragma Ada_05 (Set_Unbounded_Wide_Wide_String);
- 
-    procedure Append
-      (Source   : in out Unbounded_Wide_Wide_String;
-       New_Item : Unbounded_Wide_Wide_String);
- 
-    procedure Append
-      (Source   : in out Unbounded_Wide_Wide_String;
-       New_Item : Wide_Wide_String);
- 
-    procedure Append
-      (Source   : in out Unbounded_Wide_Wide_String;
-       New_Item : Wide_Wide_Character);
- 
-    function "&"
-      (Left  : Unbounded_Wide_Wide_String;
-       Right : Unbounded_Wide_Wide_String) return Unbounded_Wide_Wide_String;
- 
-    function "&"
-      (Left  : Unbounded_Wide_Wide_String;
-       Right : Wide_Wide_String) return Unbounded_Wide_Wide_String;
- 
-    function "&"
-      (Left  : Wide_Wide_String;
-       Right : Unbounded_Wide_Wide_String) return Unbounded_Wide_Wide_String;
- 
-    function "&"
-      (Left  : Unbounded_Wide_Wide_String;
-       Right : Wide_Wide_Character) return Unbounded_Wide_Wide_String;
- 
-    function "&"
-      (Left  : Wide_Wide_Character;
-       Right : Unbounded_Wide_Wide_String) return Unbounded_Wide_Wide_String;
- 
-    function Element
-      (Source : Unbounded_Wide_Wide_String;
-       Index  : Positive) return Wide_Wide_Character;
- 
-    procedure Replace_Element
-      (Source : in out Unbounded_Wide_Wide_String;
-       Index  : Positive;
-       By     : Wide_Wide_Character);
- 
-    function Slice
-      (Source : Unbounded_Wide_Wide_String;
-       Low    : Positive;
-       High   : Natural) return Wide_Wide_String;
- 
-    function Unbounded_Slice
-      (Source : Unbounded_Wide_Wide_String;
-       Low    : Positive;
-       High   : Natural) return Unbounded_Wide_Wide_String;
-    pragma Ada_05 (Unbounded_Slice);
- 
-    procedure Unbounded_Slice
-      (Source : Unbounded_Wide_Wide_String;
-       Target : out Unbounded_Wide_Wide_String;
-       Low    : Positive;
-       High   : Natural);
-    pragma Ada_05 (Unbounded_Slice);
- 
-    function "="
-      (Left  : Unbounded_Wide_Wide_String;
-       Right : Unbounded_Wide_Wide_String) return Boolean;
- 
-    function "="
-      (Left  : Unbounded_Wide_Wide_String;
-       Right : Wide_Wide_String) return Boolean;
- 
-    function "="
-      (Left  : Wide_Wide_String;
-       Right : Unbounded_Wide_Wide_String) return Boolean;
- 
-    function "<"
-      (Left  : Unbounded_Wide_Wide_String;
-       Right : Unbounded_Wide_Wide_String) return Boolean;
- 
-    function "<"
-      (Left  : Unbounded_Wide_Wide_String;
-       Right : Wide_Wide_String) return Boolean;
- 
-    function "<"
-      (Left  : Wide_Wide_String;
-       Right : Unbounded_Wide_Wide_String) return Boolean;
- 
-    function "<="
-      (Left  : Unbounded_Wide_Wide_String;
-       Right : Unbounded_Wide_Wide_String) return Boolean;
- 
-    function "<="
-      (Left  : Unbounded_Wide_Wide_String;
-       Right : Wide_Wide_String) return Boolean;
- 
-    function "<="
-      (Left  : Wide_Wide_String;
-       Right : Unbounded_Wide_Wide_String) return Boolean;
- 
-    function ">"
-      (Left  : Unbounded_Wide_Wide_String;
-       Right : Unbounded_Wide_Wide_String) return Boolean;
- 
-    function ">"
-      (Left  : Unbounded_Wide_Wide_String;
-       Right : Wide_Wide_String) return Boolean;
- 
-    function ">"
-      (Left  : Wide_Wide_String;
-       Right : Unbounded_Wide_Wide_String) return Boolean;
- 
-    function ">="
-      (Left  : Unbounded_Wide_Wide_String;
-       Right : Unbounded_Wide_Wide_String) return Boolean;
- 
-    function ">="
-      (Left  : Unbounded_Wide_Wide_String;
-       Right : Wide_Wide_String) return Boolean;
- 
-    function ">="
-      (Left  : Wide_Wide_String;
-       Right : Unbounded_Wide_Wide_String) return Boolean;
- 
-    ------------------------
-    -- Search Subprograms --
-    ------------------------
- 
-    function Index
-      (Source  : Unbounded_Wide_Wide_String;
-       Pattern : Wide_Wide_String;
-       Going   : Direction := Forward;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping :=
-                   Wide_Wide_Maps.Identity)
-       return Natural;
- 
-    function Index
-      (Source  : Unbounded_Wide_Wide_String;
-       Pattern : Wide_Wide_String;
-       Going   : Direction := Forward;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
-       return Natural;
- 
-    function Index
-      (Source : Unbounded_Wide_Wide_String;
-       Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       Test   : Membership := Inside;
-       Going  : Direction  := Forward) return Natural;
- 
-    function Index
-      (Source  : Unbounded_Wide_Wide_String;
-       Pattern : Wide_Wide_String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping :=
-                   Wide_Wide_Maps.Identity)
-       return Natural;
-    pragma Ada_05 (Index);
- 
-    function Index
-      (Source  : Unbounded_Wide_Wide_String;
-       Pattern : Wide_Wide_String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
-       return Natural;
-    pragma Ada_05 (Index);
- 
-    function Index
-      (Source  : Unbounded_Wide_Wide_String;
-       Set     : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       From    : Positive;
-       Test    : Membership := Inside;
-       Going   : Direction := Forward) return Natural;
-    pragma Ada_05 (Index);
- 
-    function Index_Non_Blank
-      (Source : Unbounded_Wide_Wide_String;
-       Going  : Direction := Forward) return Natural;
- 
-    function Index_Non_Blank
-      (Source : Unbounded_Wide_Wide_String;
-       From   : Positive;
-       Going  : Direction := Forward) return Natural;
-    pragma Ada_05 (Index_Non_Blank);
- 
-    function Count
-      (Source  : Unbounded_Wide_Wide_String;
-       Pattern : Wide_Wide_String;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping :=
-                   Wide_Wide_Maps.Identity)
-       return Natural;
- 
-    function Count
-      (Source  : Unbounded_Wide_Wide_String;
-       Pattern : Wide_Wide_String;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
-       return Natural;
- 
-    function Count
-      (Source : Unbounded_Wide_Wide_String;
-       Set    : Wide_Wide_Maps.Wide_Wide_Character_Set) return Natural;
- 
-    procedure Find_Token
-      (Source : Unbounded_Wide_Wide_String;
-       Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       From   : Positive;
-       Test   : Membership;
-       First  : out Positive;
-       Last   : out Natural);
-    pragma Ada_2012 (Find_Token);
- 
-    procedure Find_Token
-      (Source : Unbounded_Wide_Wide_String;
-       Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       Test   : Membership;
-       First  : out Positive;
-       Last   : out Natural);
- 
-    ------------------------------------
-    -- String Translation Subprograms --
-    ------------------------------------
- 
-    function Translate
-      (Source  : Unbounded_Wide_Wide_String;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping)
-       return Unbounded_Wide_Wide_String;
- 
-    procedure Translate
-      (Source  : in out Unbounded_Wide_Wide_String;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping);
- 
-    function Translate
-      (Source  : Unbounded_Wide_Wide_String;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
-       return Unbounded_Wide_Wide_String;
- 
-    procedure Translate
-      (Source  : in out Unbounded_Wide_Wide_String;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function);
- 
-    ---------------------------------------
-    -- String Transformation Subprograms --
-    ---------------------------------------
- 
-    function Replace_Slice
-      (Source : Unbounded_Wide_Wide_String;
-       Low    : Positive;
-       High   : Natural;
-       By     : Wide_Wide_String) return Unbounded_Wide_Wide_String;
- 
-    procedure Replace_Slice
-      (Source : in out Unbounded_Wide_Wide_String;
-       Low    : Positive;
-       High   : Natural;
-       By     : Wide_Wide_String);
- 
-    function Insert
-      (Source   : Unbounded_Wide_Wide_String;
-       Before   : Positive;
-       New_Item : Wide_Wide_String) return Unbounded_Wide_Wide_String;
- 
-    procedure Insert
-      (Source   : in out Unbounded_Wide_Wide_String;
-       Before   : Positive;
-       New_Item : Wide_Wide_String);
- 
-    function Overwrite
-      (Source   : Unbounded_Wide_Wide_String;
-       Position : Positive;
-       New_Item : Wide_Wide_String) return Unbounded_Wide_Wide_String;
- 
-    procedure Overwrite
-      (Source   : in out Unbounded_Wide_Wide_String;
-       Position : Positive;
-       New_Item : Wide_Wide_String);
- 
-    function Delete
-      (Source  : Unbounded_Wide_Wide_String;
-       From    : Positive;
-       Through : Natural) return Unbounded_Wide_Wide_String;
- 
-    procedure Delete
-      (Source  : in out Unbounded_Wide_Wide_String;
-       From    : Positive;
-       Through : Natural);
- 
-    function Trim
-      (Source : Unbounded_Wide_Wide_String;
-       Side   : Trim_End) return Unbounded_Wide_Wide_String;
- 
-    procedure Trim
-      (Source : in out Unbounded_Wide_Wide_String;
-       Side   : Trim_End);
- 
-    function Trim
-      (Source : Unbounded_Wide_Wide_String;
-       Left   : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       Right  : Wide_Wide_Maps.Wide_Wide_Character_Set)
-       return Unbounded_Wide_Wide_String;
- 
-    procedure Trim
-      (Source : in out Unbounded_Wide_Wide_String;
-       Left   : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       Right  : Wide_Wide_Maps.Wide_Wide_Character_Set);
- 
-    function Head
-      (Source : Unbounded_Wide_Wide_String;
-       Count  : Natural;
-       Pad    : Wide_Wide_Character := Wide_Wide_Space)
-       return Unbounded_Wide_Wide_String;
- 
-    procedure Head
-      (Source : in out Unbounded_Wide_Wide_String;
-       Count  : Natural;
-       Pad    : Wide_Wide_Character := Wide_Wide_Space);
- 
-    function Tail
-      (Source : Unbounded_Wide_Wide_String;
-       Count  : Natural;
-       Pad    : Wide_Wide_Character := Wide_Wide_Space)
-       return Unbounded_Wide_Wide_String;
- 
-    procedure Tail
-      (Source : in out Unbounded_Wide_Wide_String;
-       Count  : Natural;
-       Pad    : Wide_Wide_Character := Wide_Wide_Space);
- 
-    function "*"
-      (Left  : Natural;
-       Right : Wide_Wide_Character) return Unbounded_Wide_Wide_String;
- 
-    function "*"
-      (Left  : Natural;
-       Right : Wide_Wide_String) return Unbounded_Wide_Wide_String;
- 
-    function "*"
-      (Left  : Natural;
-       Right : Unbounded_Wide_Wide_String) return Unbounded_Wide_Wide_String;
- 
- private
-    pragma Inline (Length);
- 
-    package AF renames Ada.Finalization;
- 
-    type Shared_Wide_Wide_String (Max_Length : Natural) is limited record
-       Counter : System.Atomic_Counters.Atomic_Counter;
-       --  Reference counter
- 
-       Last : Natural := 0;
-       Data : Wide_Wide_String (1 .. Max_Length);
-       --  Last is the index of last significant element of the Data. All
-       --  elements with larger indexes are just extra room for expansion.
-    end record;
- 
-    type Shared_Wide_Wide_String_Access is access all Shared_Wide_Wide_String;
- 
-    procedure Reference (Item : not null Shared_Wide_Wide_String_Access);
-    --  Increment reference counter.
- 
-    procedure Unreference (Item : not null Shared_Wide_Wide_String_Access);
-    --  Decrement reference counter. Deallocate Item when reference counter is
-    --  zero.
- 
-    function Can_Be_Reused
-      (Item   : Shared_Wide_Wide_String_Access;
-       Length : Natural) return Boolean;
-    --  Returns True if Shared_Wide_Wide_String can be reused. There are two
-    --  criteria when Shared_Wide_Wide_String can be reused: its reference
-    --  counter must be one (thus Shared_Wide_Wide_String is owned exclusively)
-    --  and its size is sufficient to store string with specified length
-    --  effectively.
- 
-    function Allocate
-      (Max_Length : Natural) return Shared_Wide_Wide_String_Access;
-    --  Allocates new Shared_Wide_Wide_String with at least specified maximum
-    --  length. Actual maximum length of the allocated Shared_Wide_Wide_String
-    --  can be slightly greater. Returns reference to
-    --  Empty_Shared_Wide_Wide_String when requested length is zero.
- 
-    Empty_Shared_Wide_Wide_String : aliased Shared_Wide_Wide_String (0);
- 
-    function To_Unbounded
-      (S : Wide_Wide_String) return Unbounded_Wide_Wide_String
-      renames To_Unbounded_Wide_Wide_String;
-    --  This renames are here only to be used in the pragma Stream_Convert.
- 
-    type Unbounded_Wide_Wide_String is new AF.Controlled with record
-       Reference : Shared_Wide_Wide_String_Access :=
-                     Empty_Shared_Wide_Wide_String'Access;
-    end record;
- 
-    --  The Unbounded_Wide_Wide_String uses several techniques to increase speed
-    --  of the application:
- 
-    --   - implicit sharing or copy-on-write. Unbounded_Wide_Wide_String
-    --     contains only the reference to the data which is shared between
-    --     several instances. The shared data is reallocated only when its value
-    --     is changed and the object mutation can't be used or it is inefficient
-    --     to use it;
- 
-    --   - object mutation. Shared data object can be reused without memory
-    --     reallocation when all of the following requirements are meat:
-    --      - shared data object don't used anywhere longer;
-    --      - its size is sufficient to store new value;
-    --      - the gap after reuse is less than some threshold.
- 
-    --   - memory preallocation. Most of used memory allocation algorithms
-    --     aligns allocated segment on the some boundary, thus some amount of
-    --     additional memory can be preallocated without any impact. Such
-    --     preallocated memory can used later by Append/Insert operations
-    --     without reallocation.
- 
-    --  Reference counting uses GCC builtin atomic operations, which allows safe
-    --  sharing of internal data between Ada tasks. Nevertheless, this does not
-    --  make objects of Unbounded_String thread-safe: an instance cannot be
-    --  accessed by several tasks simultaneously.
- 
-    pragma Stream_Convert
-      (Unbounded_Wide_Wide_String, To_Unbounded, To_Wide_Wide_String);
-    --  Provide stream routines without dragging in Ada.Streams
- 
-    pragma Finalize_Storage_Only (Unbounded_Wide_Wide_String);
-    --  Finalization is required only for freeing storage
- 
-    overriding procedure Initialize
-      (Object : in out Unbounded_Wide_Wide_String);
-    overriding procedure Adjust
-      (Object : in out Unbounded_Wide_Wide_String);
-    overriding procedure Finalize
-      (Object : in out Unbounded_Wide_Wide_String);
- 
-    Null_Unbounded_Wide_Wide_String : constant Unbounded_Wide_Wide_String :=
-                                        (AF.Controlled with
-                                           Reference =>
-                                             Empty_Shared_Wide_Wide_String'
-                                               Access);
- 
- end Ada.Strings.Wide_Wide_Unbounded;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-stzunb.adb gcc-8.1.0/gcc/ada/a-stzunb.adb
*** gcc-7.3.0/gcc/ada/a-stzunb.adb	Mon Oct  1 09:41:22 2012
--- gcc-8.1.0/gcc/ada/a-stzunb.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,1107 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --      A D A . S T R I N G S . W I D E _ W I D E _ U N B O U N D E D       --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2012, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Strings.Wide_Wide_Fixed;
- with Ada.Strings.Wide_Wide_Search;
- with Ada.Unchecked_Deallocation;
- 
- package body Ada.Strings.Wide_Wide_Unbounded is
- 
-    use Ada.Finalization;
- 
-    ---------
-    -- "&" --
-    ---------
- 
-    function "&"
-      (Left  : Unbounded_Wide_Wide_String;
-       Right : Unbounded_Wide_Wide_String) return Unbounded_Wide_Wide_String
-    is
-       L_Length : constant Natural := Left.Last;
-       R_Length : constant Natural := Right.Last;
-       Result   : Unbounded_Wide_Wide_String;
- 
-    begin
-       Result.Last := L_Length + R_Length;
- 
-       Result.Reference := new Wide_Wide_String (1 .. Result.Last);
- 
-       Result.Reference (1 .. L_Length) :=
-         Left.Reference (1 .. Left.Last);
-       Result.Reference (L_Length + 1 .. Result.Last) :=
-         Right.Reference (1 .. Right.Last);
- 
-       return Result;
-    end "&";
- 
-    function "&"
-      (Left  : Unbounded_Wide_Wide_String;
-       Right : Wide_Wide_String) return Unbounded_Wide_Wide_String
-    is
-       L_Length : constant Natural := Left.Last;
-       Result   : Unbounded_Wide_Wide_String;
- 
-    begin
-       Result.Last := L_Length + Right'Length;
- 
-       Result.Reference := new Wide_Wide_String (1 .. Result.Last);
- 
-       Result.Reference (1 .. L_Length) := Left.Reference (1 .. Left.Last);
-       Result.Reference (L_Length + 1 .. Result.Last) := Right;
- 
-       return Result;
-    end "&";
- 
-    function "&"
-      (Left  : Wide_Wide_String;
-       Right : Unbounded_Wide_Wide_String) return Unbounded_Wide_Wide_String
-    is
-       R_Length : constant Natural := Right.Last;
-       Result   : Unbounded_Wide_Wide_String;
- 
-    begin
-       Result.Last := Left'Length + R_Length;
- 
-       Result.Reference := new Wide_Wide_String (1 .. Result.Last);
- 
-       Result.Reference (1 .. Left'Length) := Left;
-       Result.Reference (Left'Length + 1 .. Result.Last) :=
-         Right.Reference (1 .. Right.Last);
- 
-       return Result;
-    end "&";
- 
-    function "&"
-      (Left  : Unbounded_Wide_Wide_String;
-       Right : Wide_Wide_Character) return Unbounded_Wide_Wide_String
-    is
-       Result : Unbounded_Wide_Wide_String;
- 
-    begin
-       Result.Last := Left.Last + 1;
- 
-       Result.Reference := new Wide_Wide_String (1 .. Result.Last);
- 
-       Result.Reference (1 .. Result.Last - 1) :=
-         Left.Reference (1 .. Left.Last);
-       Result.Reference (Result.Last) := Right;
- 
-       return Result;
-    end "&";
- 
-    function "&"
-      (Left  : Wide_Wide_Character;
-       Right : Unbounded_Wide_Wide_String) return Unbounded_Wide_Wide_String
-    is
-       Result : Unbounded_Wide_Wide_String;
- 
-    begin
-       Result.Last := Right.Last + 1;
- 
-       Result.Reference := new Wide_Wide_String (1 .. Result.Last);
-       Result.Reference (1) := Left;
-       Result.Reference (2 .. Result.Last) :=
-         Right.Reference (1 .. Right.Last);
-       return Result;
-    end "&";
- 
-    ---------
-    -- "*" --
-    ---------
- 
-    function "*"
-      (Left  : Natural;
-       Right : Wide_Wide_Character) return Unbounded_Wide_Wide_String
-    is
-       Result : Unbounded_Wide_Wide_String;
- 
-    begin
-       Result.Last   := Left;
- 
-       Result.Reference := new Wide_Wide_String (1 .. Left);
-       for J in Result.Reference'Range loop
-          Result.Reference (J) := Right;
-       end loop;
- 
-       return Result;
-    end "*";
- 
-    function "*"
-      (Left  : Natural;
-       Right : Wide_Wide_String) return Unbounded_Wide_Wide_String
-    is
-       Len    : constant Natural := Right'Length;
-       K      : Positive;
-       Result : Unbounded_Wide_Wide_String;
- 
-    begin
-       Result.Last := Left * Len;
- 
-       Result.Reference := new Wide_Wide_String (1 .. Result.Last);
- 
-       K := 1;
-       for J in 1 .. Left loop
-          Result.Reference (K .. K + Len - 1) := Right;
-          K := K + Len;
-       end loop;
- 
-       return Result;
-    end "*";
- 
-    function "*"
-      (Left  : Natural;
-       Right : Unbounded_Wide_Wide_String) return Unbounded_Wide_Wide_String
-    is
-       Len    : constant Natural := Right.Last;
-       K      : Positive;
-       Result : Unbounded_Wide_Wide_String;
- 
-    begin
-       Result.Last := Left * Len;
- 
-       Result.Reference := new Wide_Wide_String (1 .. Result.Last);
- 
-       K := 1;
-       for J in 1 .. Left loop
-          Result.Reference (K .. K + Len - 1) :=
-            Right.Reference (1 .. Right.Last);
-          K := K + Len;
-       end loop;
- 
-       return Result;
-    end "*";
- 
-    ---------
-    -- "<" --
-    ---------
- 
-    function "<"
-      (Left  : Unbounded_Wide_Wide_String;
-       Right : Unbounded_Wide_Wide_String) return Boolean
-    is
-    begin
-       return
-         Left.Reference (1 .. Left.Last) < Right.Reference (1 .. Right.Last);
-    end "<";
- 
-    function "<"
-      (Left  : Unbounded_Wide_Wide_String;
-       Right : Wide_Wide_String) return Boolean
-    is
-    begin
-       return Left.Reference (1 .. Left.Last) < Right;
-    end "<";
- 
-    function "<"
-      (Left  : Wide_Wide_String;
-       Right : Unbounded_Wide_Wide_String) return Boolean
-    is
-    begin
-       return Left < Right.Reference (1 .. Right.Last);
-    end "<";
- 
-    ----------
-    -- "<=" --
-    ----------
- 
-    function "<="
-      (Left  : Unbounded_Wide_Wide_String;
-       Right : Unbounded_Wide_Wide_String) return Boolean
-    is
-    begin
-       return
-         Left.Reference (1 .. Left.Last) <= Right.Reference (1 .. Right.Last);
-    end "<=";
- 
-    function "<="
-      (Left  : Unbounded_Wide_Wide_String;
-       Right : Wide_Wide_String) return Boolean
-    is
-    begin
-       return Left.Reference (1 .. Left.Last) <= Right;
-    end "<=";
- 
-    function "<="
-      (Left  : Wide_Wide_String;
-       Right : Unbounded_Wide_Wide_String) return Boolean
-    is
-    begin
-       return Left <= Right.Reference (1 .. Right.Last);
-    end "<=";
- 
-    ---------
-    -- "=" --
-    ---------
- 
-    function "="
-      (Left  : Unbounded_Wide_Wide_String;
-       Right : Unbounded_Wide_Wide_String) return Boolean
-    is
-    begin
-       return
-         Left.Reference (1 .. Left.Last) = Right.Reference (1 .. Right.Last);
-    end "=";
- 
-    function "="
-      (Left  : Unbounded_Wide_Wide_String;
-       Right : Wide_Wide_String) return Boolean
-    is
-    begin
-       return Left.Reference (1 .. Left.Last) = Right;
-    end "=";
- 
-    function "="
-      (Left  : Wide_Wide_String;
-       Right : Unbounded_Wide_Wide_String) return Boolean
-    is
-    begin
-       return Left = Right.Reference (1 .. Right.Last);
-    end "=";
- 
-    ---------
-    -- ">" --
-    ---------
- 
-    function ">"
-      (Left  : Unbounded_Wide_Wide_String;
-       Right : Unbounded_Wide_Wide_String) return Boolean
-    is
-    begin
-       return
-         Left.Reference (1 .. Left.Last) > Right.Reference (1 .. Right.Last);
-    end ">";
- 
-    function ">"
-      (Left  : Unbounded_Wide_Wide_String;
-       Right : Wide_Wide_String) return Boolean
-    is
-    begin
-       return Left.Reference (1 .. Left.Last) > Right;
-    end ">";
- 
-    function ">"
-      (Left  : Wide_Wide_String;
-       Right : Unbounded_Wide_Wide_String) return Boolean
-    is
-    begin
-       return Left > Right.Reference (1 .. Right.Last);
-    end ">";
- 
-    ----------
-    -- ">=" --
-    ----------
- 
-    function ">="
-      (Left  : Unbounded_Wide_Wide_String;
-       Right : Unbounded_Wide_Wide_String) return Boolean
-    is
-    begin
-       return
-         Left.Reference (1 .. Left.Last) >= Right.Reference (1 .. Right.Last);
-    end ">=";
- 
-    function ">="
-      (Left  : Unbounded_Wide_Wide_String;
-       Right : Wide_Wide_String) return Boolean
-    is
-    begin
-       return Left.Reference (1 .. Left.Last) >= Right;
-    end ">=";
- 
-    function ">="
-      (Left  : Wide_Wide_String;
-       Right : Unbounded_Wide_Wide_String) return Boolean
-    is
-    begin
-       return Left >= Right.Reference (1 .. Right.Last);
-    end ">=";
- 
-    ------------
-    -- Adjust --
-    ------------
- 
-    procedure Adjust (Object : in out Unbounded_Wide_Wide_String) is
-    begin
-       --  Copy string, except we do not copy the statically allocated null
-       --  string, since it can never be deallocated. Note that we do not copy
-       --  extra string room here to avoid dragging unused allocated memory.
- 
-       if Object.Reference /= Null_Wide_Wide_String'Access then
-          Object.Reference :=
-            new Wide_Wide_String'(Object.Reference (1 .. Object.Last));
-       end if;
-    end Adjust;
- 
-    ------------
-    -- Append --
-    ------------
- 
-    procedure Append
-      (Source   : in out Unbounded_Wide_Wide_String;
-       New_Item : Unbounded_Wide_Wide_String)
-    is
-    begin
-       Realloc_For_Chunk (Source, New_Item.Last);
-       Source.Reference (Source.Last + 1 .. Source.Last + New_Item.Last) :=
-         New_Item.Reference (1 .. New_Item.Last);
-       Source.Last := Source.Last + New_Item.Last;
-    end Append;
- 
-    procedure Append
-      (Source   : in out Unbounded_Wide_Wide_String;
-       New_Item : Wide_Wide_String)
-    is
-    begin
-       Realloc_For_Chunk (Source, New_Item'Length);
-       Source.Reference (Source.Last + 1 .. Source.Last + New_Item'Length) :=
-         New_Item;
-       Source.Last := Source.Last + New_Item'Length;
-    end Append;
- 
-    procedure Append
-      (Source   : in out Unbounded_Wide_Wide_String;
-       New_Item : Wide_Wide_Character)
-    is
-    begin
-       Realloc_For_Chunk (Source, 1);
-       Source.Reference (Source.Last + 1) := New_Item;
-       Source.Last := Source.Last + 1;
-    end Append;
- 
-    -----------
-    -- Count --
-    -----------
- 
-    function Count
-      (Source  : Unbounded_Wide_Wide_String;
-       Pattern : Wide_Wide_String;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping :=
-         Wide_Wide_Maps.Identity) return Natural
-    is
-    begin
-       return
-         Wide_Wide_Search.Count
-           (Source.Reference (1 .. Source.Last), Pattern, Mapping);
-    end Count;
- 
-    function Count
-      (Source  : Unbounded_Wide_Wide_String;
-       Pattern : Wide_Wide_String;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
-       return Natural
-    is
-    begin
-       return
-         Wide_Wide_Search.Count
-           (Source.Reference (1 .. Source.Last), Pattern, Mapping);
-    end Count;
- 
-    function Count
-      (Source : Unbounded_Wide_Wide_String;
-       Set    : Wide_Wide_Maps.Wide_Wide_Character_Set) return Natural
-    is
-    begin
-       return
-         Wide_Wide_Search.Count
-         (Source.Reference (1 .. Source.Last), Set);
-    end Count;
- 
-    ------------
-    -- Delete --
-    ------------
- 
-    function Delete
-      (Source  : Unbounded_Wide_Wide_String;
-       From    : Positive;
-       Through : Natural) return Unbounded_Wide_Wide_String
-    is
-    begin
-       return
-         To_Unbounded_Wide_Wide_String
-           (Wide_Wide_Fixed.Delete
-              (Source.Reference (1 .. Source.Last), From, Through));
-    end Delete;
- 
-    procedure Delete
-      (Source  : in out Unbounded_Wide_Wide_String;
-       From    : Positive;
-       Through : Natural)
-    is
-    begin
-       if From > Through then
-          null;
- 
-       elsif From < Source.Reference'First or else Through > Source.Last then
-          raise Index_Error;
- 
-       else
-          declare
-             Len : constant Natural := Through - From + 1;
- 
-          begin
-             Source.Reference (From .. Source.Last - Len) :=
-               Source.Reference (Through + 1 .. Source.Last);
-             Source.Last := Source.Last - Len;
-          end;
-       end if;
-    end Delete;
- 
-    -------------
-    -- Element --
-    -------------
- 
-    function Element
-      (Source : Unbounded_Wide_Wide_String;
-       Index  : Positive) return Wide_Wide_Character
-    is
-    begin
-       if Index <= Source.Last then
-          return Source.Reference (Index);
-       else
-          raise Strings.Index_Error;
-       end if;
-    end Element;
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    procedure Finalize (Object : in out Unbounded_Wide_Wide_String) is
-       procedure Deallocate is
-         new Ada.Unchecked_Deallocation
-           (Wide_Wide_String, Wide_Wide_String_Access);
- 
-    begin
-       --  Note: Don't try to free statically allocated null string
- 
-       if Object.Reference /= Null_Wide_Wide_String'Access then
-          Deallocate (Object.Reference);
-          Object.Reference := Null_Unbounded_Wide_Wide_String.Reference;
-          Object.Last := 0;
-       end if;
-    end Finalize;
- 
-    ----------------
-    -- Find_Token --
-    ----------------
- 
-    procedure Find_Token
-      (Source : Unbounded_Wide_Wide_String;
-       Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       From   : Positive;
-       Test   : Strings.Membership;
-       First  : out Positive;
-       Last   : out Natural)
-    is
-    begin
-       Wide_Wide_Search.Find_Token
-         (Source.Reference (From .. Source.Last), Set, Test, First, Last);
-    end Find_Token;
- 
-    procedure Find_Token
-      (Source : Unbounded_Wide_Wide_String;
-       Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       Test   : Strings.Membership;
-       First  : out Positive;
-       Last   : out Natural)
-    is
-    begin
-       Wide_Wide_Search.Find_Token
-         (Source.Reference (1 .. Source.Last), Set, Test, First, Last);
-    end Find_Token;
- 
-    ----------
-    -- Free --
-    ----------
- 
-    procedure Free (X : in out Wide_Wide_String_Access) is
-       procedure Deallocate is
-         new Ada.Unchecked_Deallocation
-           (Wide_Wide_String, Wide_Wide_String_Access);
- 
-    begin
-       --  Note: Do not try to free statically allocated null string
- 
-       if X /= Null_Unbounded_Wide_Wide_String.Reference then
-          Deallocate (X);
-       end if;
-    end Free;
- 
-    ----------
-    -- Head --
-    ----------
- 
-    function Head
-      (Source : Unbounded_Wide_Wide_String;
-       Count  : Natural;
-       Pad    : Wide_Wide_Character := Wide_Wide_Space)
-       return Unbounded_Wide_Wide_String
-    is
-    begin
-       return To_Unbounded_Wide_Wide_String
-         (Wide_Wide_Fixed.Head
-            (Source.Reference (1 .. Source.Last), Count, Pad));
-    end Head;
- 
-    procedure Head
-      (Source : in out Unbounded_Wide_Wide_String;
-       Count  : Natural;
-       Pad    : Wide_Wide_Character := Wide_Wide_Space)
-    is
-       Old : Wide_Wide_String_Access := Source.Reference;
-    begin
-       Source.Reference :=
-         new Wide_Wide_String'
-           (Wide_Wide_Fixed.Head
-              (Source.Reference (1 .. Source.Last), Count, Pad));
-       Source.Last := Source.Reference'Length;
-       Free (Old);
-    end Head;
- 
-    -----------
-    -- Index --
-    -----------
- 
-    function Index
-      (Source  : Unbounded_Wide_Wide_String;
-       Pattern : Wide_Wide_String;
-       Going   : Strings.Direction := Strings.Forward;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping :=
-         Wide_Wide_Maps.Identity) return Natural
-    is
-    begin
-       return
-         Wide_Wide_Search.Index
-           (Source.Reference (1 .. Source.Last), Pattern, Going, Mapping);
-    end Index;
- 
-    function Index
-      (Source  : Unbounded_Wide_Wide_String;
-       Pattern : Wide_Wide_String;
-       Going   : Direction := Forward;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
-       return Natural
-    is
-    begin
-       return
-         Wide_Wide_Search.Index
-           (Source.Reference (1 .. Source.Last), Pattern, Going, Mapping);
-    end Index;
- 
-    function Index
-      (Source : Unbounded_Wide_Wide_String;
-       Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       Test   : Strings.Membership := Strings.Inside;
-       Going  : Strings.Direction  := Strings.Forward) return Natural
-    is
-    begin
-       return Wide_Wide_Search.Index
-         (Source.Reference (1 .. Source.Last), Set, Test, Going);
-    end Index;
- 
-    function Index
-      (Source  : Unbounded_Wide_Wide_String;
-       Pattern : Wide_Wide_String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping :=
-         Wide_Wide_Maps.Identity) return Natural
-    is
-    begin
-       return
-         Wide_Wide_Search.Index
-           (Source.Reference (1 .. Source.Last), Pattern, From, Going, Mapping);
-    end Index;
- 
-    function Index
-      (Source  : Unbounded_Wide_Wide_String;
-       Pattern : Wide_Wide_String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
-       return Natural
-    is
-    begin
-       return
-         Wide_Wide_Search.Index
-           (Source.Reference (1 .. Source.Last), Pattern, From, Going, Mapping);
-    end Index;
- 
-    function Index
-      (Source : Unbounded_Wide_Wide_String;
-       Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       From   : Positive;
-       Test   : Membership := Inside;
-       Going  : Direction := Forward) return Natural
-    is
-    begin
-       return
-         Wide_Wide_Search.Index
-           (Source.Reference (1 .. Source.Last), Set, From, Test, Going);
-    end Index;
- 
-    function Index_Non_Blank
-      (Source : Unbounded_Wide_Wide_String;
-       Going  : Strings.Direction := Strings.Forward) return Natural
-    is
-    begin
-       return
-         Wide_Wide_Search.Index_Non_Blank
-           (Source.Reference (1 .. Source.Last), Going);
-    end Index_Non_Blank;
- 
-    function Index_Non_Blank
-      (Source : Unbounded_Wide_Wide_String;
-       From   : Positive;
-       Going  : Direction := Forward) return Natural
-    is
-    begin
-       return
-         Wide_Wide_Search.Index_Non_Blank
-           (Source.Reference (1 .. Source.Last), From, Going);
-    end Index_Non_Blank;
- 
-    ----------------
-    -- Initialize --
-    ----------------
- 
-    procedure Initialize (Object : in out Unbounded_Wide_Wide_String) is
-    begin
-       Object.Reference := Null_Unbounded_Wide_Wide_String.Reference;
-       Object.Last      := 0;
-    end Initialize;
- 
-    ------------
-    -- Insert --
-    ------------
- 
-    function Insert
-      (Source   : Unbounded_Wide_Wide_String;
-       Before   : Positive;
-       New_Item : Wide_Wide_String) return Unbounded_Wide_Wide_String
-    is
-    begin
-       return
-         To_Unbounded_Wide_Wide_String
-           (Wide_Wide_Fixed.Insert
-              (Source.Reference (1 .. Source.Last), Before, New_Item));
-    end Insert;
- 
-    procedure Insert
-      (Source   : in out Unbounded_Wide_Wide_String;
-       Before   : Positive;
-       New_Item : Wide_Wide_String)
-    is
-    begin
-       if Before not in Source.Reference'First .. Source.Last + 1 then
-          raise Index_Error;
-       end if;
- 
-       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;
-       Source.Last := Source.Last + New_Item'Length;
-    end Insert;
- 
-    ------------
-    -- Length --
-    ------------
- 
-    function Length (Source : Unbounded_Wide_Wide_String) return Natural is
-    begin
-       return Source.Last;
-    end Length;
- 
-    ---------------
-    -- Overwrite --
-    ---------------
- 
-    function Overwrite
-      (Source   : Unbounded_Wide_Wide_String;
-       Position : Positive;
-       New_Item : Wide_Wide_String) return Unbounded_Wide_Wide_String
-    is
-    begin
-       return
-         To_Unbounded_Wide_Wide_String
-           (Wide_Wide_Fixed.Overwrite
-             (Source.Reference (1 .. Source.Last), Position, New_Item));
-    end Overwrite;
- 
-    procedure Overwrite
-      (Source    : in out Unbounded_Wide_Wide_String;
-       Position  : Positive;
-       New_Item  : Wide_Wide_String)
-    is
-       NL : constant Natural := New_Item'Length;
-    begin
-       if Position <= Source.Last - NL + 1 then
-          Source.Reference (Position .. Position + NL - 1) := New_Item;
-       else
-          declare
-             Old : Wide_Wide_String_Access := Source.Reference;
-          begin
-             Source.Reference := new Wide_Wide_String'
-               (Wide_Wide_Fixed.Overwrite
-                 (Source.Reference (1 .. Source.Last), Position, New_Item));
-             Source.Last := Source.Reference'Length;
-             Free (Old);
-          end;
-       end if;
-    end Overwrite;
- 
-    -----------------------
-    -- Realloc_For_Chunk --
-    -----------------------
- 
-    procedure Realloc_For_Chunk
-      (Source     : in out Unbounded_Wide_Wide_String;
-       Chunk_Size : Natural)
-    is
-       Growth_Factor : constant := 32;
-       --  The growth factor controls how much extra space is allocated when
-       --  we have to increase the size of an allocated unbounded string. By
-       --  allocating extra space, we avoid the need to reallocate on every
-       --  append, particularly important when a string is built up by repeated
-       --  append operations of small pieces. This is expressed as a factor so
-       --  32 means add 1/32 of the length of the string as growth space.
- 
-       Min_Mul_Alloc : constant := Standard'Maximum_Alignment;
-       --  Allocation will be done by a multiple of Min_Mul_Alloc This causes
-       --  no memory loss as most (all?) malloc implementations are obliged to
-       --  align the returned memory on the maximum alignment as malloc does not
-       --  know the target alignment.
- 
-       S_Length : constant Natural := Source.Reference'Length;
- 
-    begin
-       if Chunk_Size > S_Length - Source.Last then
-          declare
-             New_Size : constant Positive :=
-               S_Length + Chunk_Size + (S_Length / Growth_Factor);
- 
-             New_Rounded_Up_Size : constant Positive :=
-               ((New_Size - 1) / Min_Mul_Alloc + 1) * Min_Mul_Alloc;
- 
-             Tmp : constant Wide_Wide_String_Access :=
-               new Wide_Wide_String (1 .. New_Rounded_Up_Size);
- 
-          begin
-             Tmp (1 .. Source.Last) := Source.Reference (1 .. Source.Last);
-             Free (Source.Reference);
-             Source.Reference := Tmp;
-          end;
-       end if;
-    end Realloc_For_Chunk;
- 
-    ---------------------
-    -- Replace_Element --
-    ---------------------
- 
-    procedure Replace_Element
-      (Source : in out Unbounded_Wide_Wide_String;
-       Index  : Positive;
-       By     : Wide_Wide_Character)
-    is
-    begin
-       if Index <= Source.Last then
-          Source.Reference (Index) := By;
-       else
-          raise Strings.Index_Error;
-       end if;
-    end Replace_Element;
- 
-    -------------------
-    -- Replace_Slice --
-    -------------------
- 
-    function Replace_Slice
-      (Source : Unbounded_Wide_Wide_String;
-       Low    : Positive;
-       High   : Natural;
-       By     : Wide_Wide_String) return Unbounded_Wide_Wide_String
-    is
-    begin
-       return To_Unbounded_Wide_Wide_String
-         (Wide_Wide_Fixed.Replace_Slice
-            (Source.Reference (1 .. Source.Last), Low, High, By));
-    end Replace_Slice;
- 
-    procedure Replace_Slice
-      (Source : in out Unbounded_Wide_Wide_String;
-       Low    : Positive;
-       High   : Natural;
-       By     : Wide_Wide_String)
-    is
-       Old : Wide_Wide_String_Access := Source.Reference;
-    begin
-       Source.Reference := new Wide_Wide_String'
-         (Wide_Wide_Fixed.Replace_Slice
-            (Source.Reference (1 .. Source.Last), Low, High, By));
-       Source.Last := Source.Reference'Length;
-       Free (Old);
-    end Replace_Slice;
- 
-    ------------------------------------
-    -- Set_Unbounded_Wide_Wide_String --
-    ------------------------------------
- 
-    procedure Set_Unbounded_Wide_Wide_String
-      (Target : out Unbounded_Wide_Wide_String;
-       Source : Wide_Wide_String)
-    is
-    begin
-       Target.Last          := Source'Length;
-       Target.Reference     := new Wide_Wide_String (1 .. Source'Length);
-       Target.Reference.all := Source;
-    end Set_Unbounded_Wide_Wide_String;
- 
-    -----------
-    -- Slice --
-    -----------
- 
-    function Slice
-      (Source : Unbounded_Wide_Wide_String;
-       Low    : Positive;
-       High   : Natural) return Wide_Wide_String
-    is
-    begin
-       --  Note: test of High > Length is in accordance with AI95-00128
- 
-       if Low > Source.Last + 1 or else High > Source.Last then
-          raise Index_Error;
-       else
-          return Source.Reference (Low .. High);
-       end if;
-    end Slice;
- 
-    ----------
-    -- Tail --
-    ----------
- 
-    function Tail
-      (Source : Unbounded_Wide_Wide_String;
-       Count  : Natural;
-       Pad    : Wide_Wide_Character := Wide_Wide_Space)
-       return Unbounded_Wide_Wide_String is
-    begin
-       return To_Unbounded_Wide_Wide_String
-         (Wide_Wide_Fixed.Tail
-            (Source.Reference (1 .. Source.Last), Count, Pad));
-    end Tail;
- 
-    procedure Tail
-      (Source : in out Unbounded_Wide_Wide_String;
-       Count  : Natural;
-       Pad    : Wide_Wide_Character := Wide_Wide_Space)
-    is
-       Old : Wide_Wide_String_Access := Source.Reference;
-    begin
-       Source.Reference := new Wide_Wide_String'
-         (Wide_Wide_Fixed.Tail
-            (Source.Reference (1 .. Source.Last), Count, Pad));
-       Source.Last := Source.Reference'Length;
-       Free (Old);
-    end Tail;
- 
-    -----------------------------------
-    -- To_Unbounded_Wide_Wide_String --
-    -----------------------------------
- 
-    function To_Unbounded_Wide_Wide_String
-      (Source : Wide_Wide_String) return Unbounded_Wide_Wide_String
-    is
-       Result : Unbounded_Wide_Wide_String;
-    begin
-       Result.Last          := Source'Length;
-       Result.Reference     := new Wide_Wide_String (1 .. Source'Length);
-       Result.Reference.all := Source;
-       return Result;
-    end To_Unbounded_Wide_Wide_String;
- 
-    function To_Unbounded_Wide_Wide_String
-      (Length : Natural) return Unbounded_Wide_Wide_String
-    is
-       Result : Unbounded_Wide_Wide_String;
-    begin
-       Result.Last      := Length;
-       Result.Reference := new Wide_Wide_String (1 .. Length);
-       return Result;
-    end To_Unbounded_Wide_Wide_String;
- 
-    -------------------------
-    -- To_Wide_Wide_String --
-    -------------------------
- 
-    function To_Wide_Wide_String
-      (Source : Unbounded_Wide_Wide_String) return Wide_Wide_String
-    is
-    begin
-       return Source.Reference (1 .. Source.Last);
-    end To_Wide_Wide_String;
- 
-    ---------------
-    -- Translate --
-    ---------------
- 
-    function Translate
-      (Source  : Unbounded_Wide_Wide_String;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping)
-       return Unbounded_Wide_Wide_String
-    is
-    begin
-       return
-         To_Unbounded_Wide_Wide_String
-           (Wide_Wide_Fixed.Translate
-              (Source.Reference (1 .. Source.Last), Mapping));
-    end Translate;
- 
-    procedure Translate
-      (Source  : in out Unbounded_Wide_Wide_String;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping)
-    is
-    begin
-       Wide_Wide_Fixed.Translate (Source.Reference (1 .. Source.Last), Mapping);
-    end Translate;
- 
-    function Translate
-      (Source  : Unbounded_Wide_Wide_String;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
-       return Unbounded_Wide_Wide_String
-    is
-    begin
-       return
-         To_Unbounded_Wide_Wide_String
-           (Wide_Wide_Fixed.Translate
-             (Source.Reference (1 .. Source.Last), Mapping));
-    end Translate;
- 
-    procedure Translate
-      (Source  : in out Unbounded_Wide_Wide_String;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
-    is
-    begin
-       Wide_Wide_Fixed.Translate (Source.Reference (1 .. Source.Last), Mapping);
-    end Translate;
- 
-    ----------
-    -- Trim --
-    ----------
- 
-    function Trim
-      (Source : Unbounded_Wide_Wide_String;
-       Side   : Trim_End) return Unbounded_Wide_Wide_String
-    is
-    begin
-       return
-         To_Unbounded_Wide_Wide_String
-           (Wide_Wide_Fixed.Trim (Source.Reference (1 .. Source.Last), Side));
-    end Trim;
- 
-    procedure Trim
-      (Source : in out Unbounded_Wide_Wide_String;
-       Side   : Trim_End)
-    is
-       Old : Wide_Wide_String_Access := Source.Reference;
-    begin
-       Source.Reference :=
-         new Wide_Wide_String'
-           (Wide_Wide_Fixed.Trim (Source.Reference (1 .. Source.Last), Side));
-       Source.Last      := Source.Reference'Length;
-       Free (Old);
-    end Trim;
- 
-    function Trim
-      (Source : Unbounded_Wide_Wide_String;
-       Left   : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       Right  : Wide_Wide_Maps.Wide_Wide_Character_Set)
-       return Unbounded_Wide_Wide_String
-    is
-    begin
-       return
-         To_Unbounded_Wide_Wide_String
-           (Wide_Wide_Fixed.Trim
-              (Source.Reference (1 .. Source.Last), Left, Right));
-    end Trim;
- 
-    procedure Trim
-      (Source : in out Unbounded_Wide_Wide_String;
-       Left   : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       Right  : Wide_Wide_Maps.Wide_Wide_Character_Set)
-    is
-       Old : Wide_Wide_String_Access := Source.Reference;
-    begin
-       Source.Reference :=
-         new Wide_Wide_String'
-           (Wide_Wide_Fixed.Trim
-              (Source.Reference (1 .. Source.Last), Left, Right));
-       Source.Last      := Source.Reference'Length;
-       Free (Old);
-    end Trim;
- 
-    ---------------------
-    -- Unbounded_Slice --
-    ---------------------
- 
-    function Unbounded_Slice
-      (Source : Unbounded_Wide_Wide_String;
-       Low    : Positive;
-       High   : Natural) return Unbounded_Wide_Wide_String
-    is
-    begin
-       if Low > Source.Last + 1 or else High > Source.Last then
-          raise Index_Error;
-       else
-          return
-            To_Unbounded_Wide_Wide_String (Source.Reference.all (Low .. High));
-       end if;
-    end Unbounded_Slice;
- 
-    procedure Unbounded_Slice
-      (Source : Unbounded_Wide_Wide_String;
-       Target : out Unbounded_Wide_Wide_String;
-       Low    : Positive;
-       High   : Natural)
-    is
-    begin
-       if Low > Source.Last + 1 or else High > Source.Last then
-          raise Index_Error;
-       else
-          Target :=
-            To_Unbounded_Wide_Wide_String (Source.Reference.all (Low .. High));
-       end if;
-    end Unbounded_Slice;
- 
- end Ada.Strings.Wide_Wide_Unbounded;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-stzunb.ads gcc-8.1.0/gcc/ada/a-stzunb.ads
*** gcc-7.3.0/gcc/ada/a-stzunb.ads	Fri Oct  8 13:02:55 2010
--- gcc-8.1.0/gcc/ada/a-stzunb.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,452 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --      A D A . S T R I N G S . W I D E _ W I D E _ U N B O U N D E D       --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2010, Free Software Foundation, 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Strings.Wide_Wide_Maps;
- with Ada.Finalization;
- 
- package Ada.Strings.Wide_Wide_Unbounded is
-    pragma Preelaborate;
- 
-    type Unbounded_Wide_Wide_String is private;
-    pragma Preelaborable_Initialization (Unbounded_Wide_Wide_String);
- 
-    Null_Unbounded_Wide_Wide_String : constant Unbounded_Wide_Wide_String;
- 
-    function Length (Source : Unbounded_Wide_Wide_String) return Natural;
- 
-    type Wide_Wide_String_Access is access all Wide_Wide_String;
- 
-    procedure Free (X : in out Wide_Wide_String_Access);
- 
-    --------------------------------------------------------
-    -- Conversion, Concatenation, and Selection Functions --
-    --------------------------------------------------------
- 
-    function To_Unbounded_Wide_Wide_String
-      (Source : Wide_Wide_String) return Unbounded_Wide_Wide_String;
- 
-    function To_Unbounded_Wide_Wide_String
-      (Length : Natural) return Unbounded_Wide_Wide_String;
- 
-    function To_Wide_Wide_String
-      (Source : Unbounded_Wide_Wide_String) return Wide_Wide_String;
- 
-    procedure Set_Unbounded_Wide_Wide_String
-      (Target : out Unbounded_Wide_Wide_String;
-       Source : Wide_Wide_String);
-    pragma Ada_05 (Set_Unbounded_Wide_Wide_String);
- 
-    procedure Append
-      (Source   : in out Unbounded_Wide_Wide_String;
-       New_Item : Unbounded_Wide_Wide_String);
- 
-    procedure Append
-      (Source   : in out Unbounded_Wide_Wide_String;
-       New_Item : Wide_Wide_String);
- 
-    procedure Append
-      (Source   : in out Unbounded_Wide_Wide_String;
-       New_Item : Wide_Wide_Character);
- 
-    function "&"
-      (Left  : Unbounded_Wide_Wide_String;
-       Right : Unbounded_Wide_Wide_String) return Unbounded_Wide_Wide_String;
- 
-    function "&"
-      (Left  : Unbounded_Wide_Wide_String;
-       Right : Wide_Wide_String) return Unbounded_Wide_Wide_String;
- 
-    function "&"
-      (Left  : Wide_Wide_String;
-       Right : Unbounded_Wide_Wide_String) return Unbounded_Wide_Wide_String;
- 
-    function "&"
-      (Left  : Unbounded_Wide_Wide_String;
-       Right : Wide_Wide_Character) return Unbounded_Wide_Wide_String;
- 
-    function "&"
-      (Left  : Wide_Wide_Character;
-       Right : Unbounded_Wide_Wide_String) return Unbounded_Wide_Wide_String;
- 
-    function Element
-      (Source : Unbounded_Wide_Wide_String;
-       Index  : Positive) return Wide_Wide_Character;
- 
-    procedure Replace_Element
-      (Source : in out Unbounded_Wide_Wide_String;
-       Index  : Positive;
-       By     : Wide_Wide_Character);
- 
-    function Slice
-      (Source : Unbounded_Wide_Wide_String;
-       Low    : Positive;
-       High   : Natural) return Wide_Wide_String;
- 
-    function Unbounded_Slice
-      (Source : Unbounded_Wide_Wide_String;
-       Low    : Positive;
-       High   : Natural) return Unbounded_Wide_Wide_String;
-       pragma Ada_05 (Unbounded_Slice);
- 
-    procedure Unbounded_Slice
-      (Source : Unbounded_Wide_Wide_String;
-       Target : out Unbounded_Wide_Wide_String;
-       Low    : Positive;
-       High   : Natural);
-       pragma Ada_05 (Unbounded_Slice);
- 
-    function "="
-      (Left  : Unbounded_Wide_Wide_String;
-       Right : Unbounded_Wide_Wide_String) return Boolean;
- 
-    function "="
-      (Left  : Unbounded_Wide_Wide_String;
-       Right : Wide_Wide_String) return Boolean;
- 
-    function "="
-      (Left  : Wide_Wide_String;
-       Right : Unbounded_Wide_Wide_String) return Boolean;
- 
-    function "<"
-      (Left  : Unbounded_Wide_Wide_String;
-       Right : Unbounded_Wide_Wide_String) return Boolean;
- 
-    function "<"
-      (Left  : Unbounded_Wide_Wide_String;
-       Right : Wide_Wide_String) return Boolean;
- 
-    function "<"
-      (Left  : Wide_Wide_String;
-       Right : Unbounded_Wide_Wide_String) return Boolean;
- 
-    function "<="
-      (Left  : Unbounded_Wide_Wide_String;
-       Right : Unbounded_Wide_Wide_String) return Boolean;
- 
-    function "<="
-      (Left  : Unbounded_Wide_Wide_String;
-       Right : Wide_Wide_String) return Boolean;
- 
-    function "<="
-      (Left  : Wide_Wide_String;
-       Right : Unbounded_Wide_Wide_String) return Boolean;
- 
-    function ">"
-      (Left  : Unbounded_Wide_Wide_String;
-       Right : Unbounded_Wide_Wide_String) return Boolean;
- 
-    function ">"
-      (Left  : Unbounded_Wide_Wide_String;
-       Right : Wide_Wide_String) return Boolean;
- 
-    function ">"
-      (Left  : Wide_Wide_String;
-       Right : Unbounded_Wide_Wide_String) return Boolean;
- 
-    function ">="
-      (Left  : Unbounded_Wide_Wide_String;
-       Right : Unbounded_Wide_Wide_String) return Boolean;
- 
-    function ">="
-      (Left  : Unbounded_Wide_Wide_String;
-       Right : Wide_Wide_String) return Boolean;
- 
-    function ">="
-      (Left  : Wide_Wide_String;
-       Right : Unbounded_Wide_Wide_String) return Boolean;
- 
-    ------------------------
-    -- Search Subprograms --
-    ------------------------
- 
-    function Index
-      (Source  : Unbounded_Wide_Wide_String;
-       Pattern : Wide_Wide_String;
-       Going   : Direction := Forward;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping :=
-                   Wide_Wide_Maps.Identity)
-       return Natural;
- 
-    function Index
-      (Source  : Unbounded_Wide_Wide_String;
-       Pattern : Wide_Wide_String;
-       Going   : Direction := Forward;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
-       return Natural;
- 
-    function Index
-      (Source : Unbounded_Wide_Wide_String;
-       Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       Test   : Membership := Inside;
-       Going  : Direction  := Forward) return Natural;
- 
-    function Index
-      (Source  : Unbounded_Wide_Wide_String;
-       Pattern : Wide_Wide_String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping :=
-                   Wide_Wide_Maps.Identity)
-       return Natural;
-    pragma Ada_05 (Index);
- 
-    function Index
-      (Source  : Unbounded_Wide_Wide_String;
-       Pattern : Wide_Wide_String;
-       From    : Positive;
-       Going   : Direction := Forward;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
-       return Natural;
-    pragma Ada_05 (Index);
- 
-    function Index
-      (Source : Unbounded_Wide_Wide_String;
-       Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       From   : Positive;
-       Test   : Membership := Inside;
-       Going  : Direction := Forward) return Natural;
-    pragma Ada_05 (Index);
- 
-    function Index_Non_Blank
-      (Source : Unbounded_Wide_Wide_String;
-       Going  : Direction := Forward) return Natural;
- 
-    function Index_Non_Blank
-      (Source : Unbounded_Wide_Wide_String;
-       From   : Positive;
-       Going  : Direction := Forward) return Natural;
-    pragma Ada_05 (Index_Non_Blank);
- 
-    function Count
-      (Source  : Unbounded_Wide_Wide_String;
-       Pattern : Wide_Wide_String;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping :=
-                   Wide_Wide_Maps.Identity)
-       return Natural;
- 
-    function Count
-      (Source  : Unbounded_Wide_Wide_String;
-       Pattern : Wide_Wide_String;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
-       return Natural;
- 
-    function Count
-      (Source : Unbounded_Wide_Wide_String;
-       Set    : Wide_Wide_Maps.Wide_Wide_Character_Set) return Natural;
- 
-    procedure Find_Token
-      (Source : Unbounded_Wide_Wide_String;
-       Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       From   : Positive;
-       Test   : Membership;
-       First  : out Positive;
-       Last   : out Natural);
-    pragma Ada_2012 (Find_Token);
- 
-    procedure Find_Token
-      (Source : Unbounded_Wide_Wide_String;
-       Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       Test   : Membership;
-       First  : out Positive;
-       Last   : out Natural);
- 
-    ------------------------------------
-    -- String Translation Subprograms --
-    ------------------------------------
- 
-    function Translate
-      (Source  : Unbounded_Wide_Wide_String;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping)
-       return Unbounded_Wide_Wide_String;
- 
-    procedure Translate
-      (Source  : in out Unbounded_Wide_Wide_String;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping);
- 
-    function Translate
-      (Source  : Unbounded_Wide_Wide_String;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
-       return Unbounded_Wide_Wide_String;
- 
-    procedure Translate
-      (Source  : in out Unbounded_Wide_Wide_String;
-       Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function);
- 
-    ---------------------------------------
-    -- String Transformation Subprograms --
-    ---------------------------------------
- 
-    function Replace_Slice
-      (Source : Unbounded_Wide_Wide_String;
-       Low    : Positive;
-       High   : Natural;
-       By     : Wide_Wide_String) return Unbounded_Wide_Wide_String;
- 
-    procedure Replace_Slice
-      (Source : in out Unbounded_Wide_Wide_String;
-       Low    : Positive;
-       High   : Natural;
-       By     : Wide_Wide_String);
- 
-    function Insert
-      (Source   : Unbounded_Wide_Wide_String;
-       Before   : Positive;
-       New_Item : Wide_Wide_String) return Unbounded_Wide_Wide_String;
- 
-    procedure Insert
-      (Source   : in out Unbounded_Wide_Wide_String;
-       Before   : Positive;
-       New_Item : Wide_Wide_String);
- 
-    function Overwrite
-      (Source   : Unbounded_Wide_Wide_String;
-       Position : Positive;
-       New_Item : Wide_Wide_String) return Unbounded_Wide_Wide_String;
- 
-    procedure Overwrite
-      (Source   : in out Unbounded_Wide_Wide_String;
-       Position : Positive;
-       New_Item : Wide_Wide_String);
- 
-    function Delete
-      (Source  : Unbounded_Wide_Wide_String;
-       From    : Positive;
-       Through : Natural) return Unbounded_Wide_Wide_String;
- 
-    procedure Delete
-      (Source  : in out Unbounded_Wide_Wide_String;
-       From    : Positive;
-       Through : Natural);
- 
-    function Trim
-      (Source : Unbounded_Wide_Wide_String;
-       Side   : Trim_End) return Unbounded_Wide_Wide_String;
- 
-    procedure Trim
-      (Source : in out Unbounded_Wide_Wide_String;
-       Side   : Trim_End);
- 
-    function Trim
-      (Source : Unbounded_Wide_Wide_String;
-       Left   : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       Right  : Wide_Wide_Maps.Wide_Wide_Character_Set)
-       return Unbounded_Wide_Wide_String;
- 
-    procedure Trim
-      (Source : in out Unbounded_Wide_Wide_String;
-       Left   : Wide_Wide_Maps.Wide_Wide_Character_Set;
-       Right  : Wide_Wide_Maps.Wide_Wide_Character_Set);
- 
-    function Head
-      (Source : Unbounded_Wide_Wide_String;
-       Count  : Natural;
-       Pad    : Wide_Wide_Character := Wide_Wide_Space)
-       return Unbounded_Wide_Wide_String;
- 
-    procedure Head
-      (Source : in out Unbounded_Wide_Wide_String;
-       Count  : Natural;
-       Pad    : Wide_Wide_Character := Wide_Wide_Space);
- 
-    function Tail
-      (Source : Unbounded_Wide_Wide_String;
-       Count  : Natural;
-       Pad    : Wide_Wide_Character := Wide_Wide_Space)
-       return Unbounded_Wide_Wide_String;
- 
-    procedure Tail
-      (Source : in out Unbounded_Wide_Wide_String;
-       Count  : Natural;
-       Pad    : Wide_Wide_Character := Wide_Wide_Space);
- 
-    function "*"
-      (Left  : Natural;
-       Right : Wide_Wide_Character) return Unbounded_Wide_Wide_String;
- 
-    function "*"
-      (Left  : Natural;
-       Right : Wide_Wide_String) return Unbounded_Wide_Wide_String;
- 
-    function "*"
-      (Left  : Natural;
-       Right : Unbounded_Wide_Wide_String) return Unbounded_Wide_Wide_String;
- 
- private
-    pragma Inline (Length);
- 
-    package AF renames Ada.Finalization;
- 
-    Null_Wide_Wide_String : aliased Wide_Wide_String := "";
- 
-    function To_Unbounded_Wide
-      (S : Wide_Wide_String) return Unbounded_Wide_Wide_String
-      renames To_Unbounded_Wide_Wide_String;
- 
-    type Unbounded_Wide_Wide_String is new AF.Controlled with record
-       Reference : Wide_Wide_String_Access := Null_Wide_Wide_String'Access;
-       Last      : Natural            := 0;
-    end record;
- 
-    --  The Unbounded_Wide_Wide_String is using a buffered implementation to
-    --  increase speed of the Append/Delete/Insert procedures. The Reference
-    --  string pointer above contains the current string value and extra room
-    --  at the end to be used by the next Append routine. Last is the index of
-    --  the string ending character. So the current string value is really
-    --  Reference (1 .. Last).
- 
-    pragma Stream_Convert
-      (Unbounded_Wide_Wide_String, To_Unbounded_Wide, To_Wide_Wide_String);
- 
-    pragma Finalize_Storage_Only (Unbounded_Wide_Wide_String);
-    --  Finalization is required only for freeing storage
- 
-    procedure Initialize (Object : in out Unbounded_Wide_Wide_String);
-    procedure Adjust     (Object : in out Unbounded_Wide_Wide_String);
-    procedure Finalize   (Object : in out Unbounded_Wide_Wide_String);
-    procedure Realloc_For_Chunk
-      (Source     : in out Unbounded_Wide_Wide_String;
-       Chunk_Size : Natural);
-    --  Adjust the size allocated for the string. Add at least Chunk_Size so it
-    --  is safe to add a string of this size at the end of the current content.
-    --  The real size allocated for the string is Chunk_Size + x of the current
-    --  string size. This buffered handling makes the Append unbounded string
-    --  routines very fast.
- 
-    Null_Unbounded_Wide_Wide_String : constant Unbounded_Wide_Wide_String :=
-                                        (AF.Controlled with
-                                           Reference =>
-                                             Null_Wide_Wide_String'Access,
-                                           Last => 0);
- end Ada.Strings.Wide_Wide_Unbounded;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-suecin.adb gcc-8.1.0/gcc/ada/a-suecin.adb
*** gcc-7.3.0/gcc/ada/a-suecin.adb	Fri Nov  4 10:55:41 2011
--- gcc-8.1.0/gcc/ada/a-suecin.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,47 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --               ADA.STRINGS.UNBOUNDED.EQUAL_CASE_INSENSITIVE               --
- --                                                                          --
- --                                B o d y                                   --
- --                                                                          --
- --            Copyright (C) 2011, Free Software Foundation, Inc.            --
- --                                                                          --
- -- GNAT is 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 Ada.Strings.Unbounded.Aux;
- with Ada.Strings.Equal_Case_Insensitive;
- 
- function Ada.Strings.Unbounded.Equal_Case_Insensitive
-   (Left, Right : Unbounded.Unbounded_String)
-   return Boolean
- is
-    SL, SR : Aux.Big_String_Access;
-    LL, LR : Natural;
- 
- begin
-    Aux.Get_String (Left, SL, LL);
-    Aux.Get_String (Right, SR, LR);
- 
-    return Ada.Strings.Equal_Case_Insensitive
-      (Left  => SL (1 .. LL),
-       Right => SR (1 .. LR));
- end Ada.Strings.Unbounded.Equal_Case_Insensitive;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-suecin.ads gcc-8.1.0/gcc/ada/a-suecin.ads
*** gcc-7.3.0/gcc/ada/a-suecin.ads	Fri Nov  4 10:55:41 2011
--- gcc-8.1.0/gcc/ada/a-suecin.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,38 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --               ADA.STRINGS.UNBOUNDED.EQUAL_CASE_INSENSITIVE               --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --            Copyright (C) 2011, Free Software Foundation, 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/>.                                          --
- --                                                                          --
- -- This unit was originally developed by Matthew J Heaney.                  --
- ------------------------------------------------------------------------------
- 
- function Ada.Strings.Unbounded.Equal_Case_Insensitive
-   (Left, Right : Unbounded.Unbounded_String)
-   return Boolean;
- 
- pragma Preelaborate (Ada.Strings.Unbounded.Equal_Case_Insensitive);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-suenco.adb gcc-8.1.0/gcc/ada/a-suenco.adb
*** gcc-7.3.0/gcc/ada/a-suenco.adb	Wed Jul 30 13:48:04 2014
--- gcc-8.1.0/gcc/ada/a-suenco.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,418 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                   ADA.STRINGS.UTF_ENCODING.CONVERSIONS                   --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2010-2014, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 Ada.Strings.UTF_Encoding.Conversions is
-    use Interfaces;
- 
-    --  Convert from UTF-8/UTF-16BE/LE to UTF-8/UTF-16BE/LE
- 
-    function Convert
-      (Item          : UTF_String;
-       Input_Scheme  : Encoding_Scheme;
-       Output_Scheme : Encoding_Scheme;
-       Output_BOM    : Boolean := False) return UTF_String
-    is
-    begin
-       --  Nothing to do if identical schemes, but for UTF_8 we need to
-       --  handle overlong encodings, so need to do the full conversion.
- 
-       if Input_Scheme = Output_Scheme
-         and then Input_Scheme /= UTF_8
-       then
-          return Item;
- 
-       --  For remaining cases, one or other of the operands is UTF-16BE/LE
-       --  encoded, or we have the UTF-8 to UTF-8 case where we must handle
-       --  overlong encodings. In all cases,  go through UTF-16 intermediate.
- 
-       else
-          return Convert (UTF_16_Wide_String'(Convert (Item, Input_Scheme)),
-                          Output_Scheme, Output_BOM);
-       end if;
-    end Convert;
- 
-    --  Convert from UTF-8/UTF-16BE/LE to UTF-16
- 
-    function Convert
-      (Item          : UTF_String;
-       Input_Scheme  : Encoding_Scheme;
-       Output_BOM    : Boolean := False) return UTF_16_Wide_String
-    is
-    begin
-       if Input_Scheme = UTF_8 then
-          return Convert (Item, Output_BOM);
-       else
-          return To_UTF_16 (Item, Input_Scheme, Output_BOM);
-       end if;
-    end Convert;
- 
-    --  Convert from UTF-8 to UTF-16
- 
-    function Convert
-      (Item       : UTF_8_String;
-       Output_BOM : Boolean := False) return UTF_16_Wide_String
-    is
-       Result : UTF_16_Wide_String (1 .. Item'Length + 1);
-       --  Maximum length of result, including possible BOM
- 
-       Len : Natural := 0;
-       --  Number of characters stored so far in Result
- 
-       Iptr : Natural;
-       --  Next character to process in Item
- 
-       C : Unsigned_8;
-       --  Input UTF-8 code
- 
-       R : Unsigned_16;
-       --  Output UTF-16 code
- 
-       procedure Get_Continuation;
-       --  Reads a continuation byte of the form 10xxxxxx, shifts R left by 6
-       --  bits, and or's in the xxxxxx to the low order 6 bits. On return Ptr
-       --  is incremented. Raises exception if continuation byte does not exist
-       --  or is invalid.
- 
-       ----------------------
-       -- Get_Continuation --
-       ----------------------
- 
-       procedure Get_Continuation is
-       begin
-          if Iptr > Item'Last then
-             Raise_Encoding_Error (Iptr - 1);
- 
-          else
-             C := To_Unsigned_8 (Item (Iptr));
-             Iptr := Iptr + 1;
- 
-             if C < 2#10_000000# or else C > 2#10_111111# then
-                Raise_Encoding_Error (Iptr - 1);
- 
-             else
-                R :=
-                  Shift_Left (R, 6) or Unsigned_16 (C and 2#00_111111#);
-             end if;
-          end if;
-       end Get_Continuation;
- 
-    --  Start of processing for Convert
- 
-    begin
-       --  Output BOM if required
- 
-       if Output_BOM then
-          Len := Len + 1;
-          Result (Len) := BOM_16 (1);
-       end if;
- 
-       --  Skip OK BOM
- 
-       Iptr := Item'First;
- 
-       if Item'Length >= 3 and then Item (Iptr .. Iptr + 2) = BOM_8 then
-          Iptr := Iptr + 3;
- 
-       --  Error if bad BOM
- 
-       elsif Item'Length >= 2
-         and then (Item (Iptr .. Iptr + 1) = BOM_16BE
-                     or else
-                   Item (Iptr .. Iptr + 1) = BOM_16LE)
-       then
-          Raise_Encoding_Error (Iptr);
- 
-       --  No BOM present
- 
-       else
-          Iptr := Item'First;
-       end if;
- 
-       while Iptr <= Item'Last loop
-          C := To_Unsigned_8 (Item (Iptr));
-          Iptr := Iptr + 1;
- 
-          --  Codes in the range 16#00# .. 16#7F#
-          --    UTF-8:  0xxxxxxx
-          --    UTF-16: 00000000_0xxxxxxx
- 
-          if C <= 16#7F# then
-             Len := Len + 1;
-             Result (Len) := Wide_Character'Val (C);
- 
-          --  No initial code can be of the form 10xxxxxx. Such codes are used
-          --  only for continuations.
- 
-          elsif C <= 2#10_111111# then
-             Raise_Encoding_Error (Iptr - 1);
- 
-          --  Codes in the range 16#80# .. 16#7FF#
-          --    UTF-8:  110yyyxx 10xxxxxx
-          --    UTF-16: 00000yyy_xxxxxxxx
- 
-          elsif C <= 2#110_11111# then
-             R := Unsigned_16 (C and 2#000_11111#);
-             Get_Continuation;
-             Len := Len + 1;
-             Result (Len) := Wide_Character'Val (R);
- 
-          --  Codes in the range 16#800# .. 16#D7FF or 16#DF01# .. 16#FFFF#
-          --    UTF-8:  1110yyyy 10yyyyxx 10xxxxxx
-          --    UTF-16: yyyyyyyy_xxxxxxxx
- 
-          elsif C <= 2#1110_1111# then
-             R := Unsigned_16 (C and 2#0000_1111#);
-             Get_Continuation;
-             Get_Continuation;
-             Len := Len + 1;
-             Result (Len) := Wide_Character'Val (R);
- 
-             --  Make sure that we don't have a result in the forbidden range
-             --  reserved for UTF-16 surrogate characters.
- 
-             if R in 16#D800# .. 16#DF00# then
-                Raise_Encoding_Error (Iptr - 3);
-             end if;
- 
-          --  Codes in the range 16#10000# .. 16#10FFFF#
-          --    UTF-8:  11110zzz 10zzyyyy 10yyyyxx 10xxxxxx
-          --    UTF-16: 110110zz_zzyyyyyy 110111yy_xxxxxxxx
-          --    Note: zzzz in the output is input zzzzz - 1
- 
-          elsif C <= 2#11110_111# then
-             R := Unsigned_16 (C and 2#00000_111#);
-             Get_Continuation;
- 
-             --  R now has zzzzzyyyy
- 
-             --  At this stage, we check for the case where we have an overlong
-             --  encoding, and the encoded value in fact lies in the single word
-             --  range (16#800# .. 16#D7FF or 16#DF01# .. 16#FFFF#). This means
-             --  that the result fits in a single result word.
- 
-             if R <= 2#1111# then
-                Get_Continuation;
-                Get_Continuation;
- 
-                --  Make sure we are not in the forbidden surrogate range
- 
-                if R in 16#D800# .. 16#DF00# then
-                   Raise_Encoding_Error (Iptr - 3);
-                end if;
- 
-                --  Otherwise output a single UTF-16 value
- 
-                Len := Len + 1;
-                Result (Len) := Wide_Character'Val (R);
- 
-             --  Here for normal case (code value > 16#FFFF and zzzzz non-zero)
- 
-             else
-                --  Subtract 1 from input zzzzz value to get output zzzz value
- 
-                R := R - 2#0000_1_0000#;
- 
-                --  R now has zzzzyyyy (zzzz minus one for the output)
- 
-                Get_Continuation;
- 
-                --  R now has zzzzyy_yyyyyyxx
- 
-                Len := Len + 1;
-                Result (Len) :=
-                  Wide_Character'Val
-                    (2#110110_00_0000_0000# or Shift_Right (R, 4));
- 
-                R := R and 2#1111#;
-                Get_Continuation;
-                Len := Len + 1;
-                Result (Len) :=
-                  Wide_Character'Val (2#110111_00_0000_0000# or R);
-             end if;
- 
-          --  Any other code is an error
- 
-          else
-             Raise_Encoding_Error (Iptr - 1);
-          end if;
-       end loop;
- 
-       return Result (1 .. Len);
-    end Convert;
- 
-    --  Convert from UTF-16 to UTF-8/UTF-16-BE/LE
- 
-    function Convert
-      (Item          : UTF_16_Wide_String;
-       Output_Scheme : Encoding_Scheme;
-       Output_BOM    : Boolean := False) return UTF_String
-    is
-    begin
-       if Output_Scheme = UTF_8 then
-          return Convert (Item, Output_BOM);
-       else
-          return From_UTF_16 (Item, Output_Scheme, Output_BOM);
-       end if;
-    end Convert;
- 
-    --  Convert from UTF-16 to UTF-8
- 
-    function Convert
-      (Item          : UTF_16_Wide_String;
-       Output_BOM    : Boolean := False) return UTF_8_String
-    is
-       Result : UTF_8_String (1 .. 3 * Item'Length + 3);
-       --  Worst case is 3 output codes for each input code + BOM space
- 
-       Len : Natural;
-       --  Number of result codes stored
- 
-       Iptr : Natural;
-       --  Pointer to next input character
- 
-       C1, C2 : Unsigned_16;
- 
-       zzzzz    : Unsigned_16;
-       yyyyyyyy : Unsigned_16;
-       xxxxxxxx : Unsigned_16;
-       --  Components of double length case
- 
-    begin
-       Iptr := Item'First;
- 
-       --  Skip BOM at start of input
- 
-       if Item'Length > 0 and then Item (Iptr) = BOM_16 (1) then
-          Iptr := Iptr + 1;
-       end if;
- 
-       --  Generate output BOM if required
- 
-       if Output_BOM then
-          Result (1 .. 3) := BOM_8;
-          Len := 3;
-       else
-          Len := 0;
-       end if;
- 
-       --  Loop through input
- 
-       while Iptr <= Item'Last loop
-          C1 := To_Unsigned_16 (Item (Iptr));
-          Iptr := Iptr + 1;
- 
-          --  Codes in the range 16#0000# - 16#007F#
-          --    UTF-16: 000000000xxxxxxx
-          --    UTF-8:  0xxxxxxx
- 
-          if C1 <= 16#007F# then
-             Result (Len + 1) := Character'Val (C1);
-             Len := Len + 1;
- 
-          --  Codes in the range 16#80# - 16#7FF#
-          --    UTF-16: 00000yyyxxxxxxxx
-          --    UTF-8:  110yyyxx 10xxxxxx
- 
-          elsif C1 <= 16#07FF# then
-             Result (Len + 1) :=
-               Character'Val
-                 (2#110_00000# or Shift_Right (C1, 6));
-             Result (Len + 2) :=
-               Character'Val
-                 (2#10_000000# or (C1 and 2#00_111111#));
-             Len := Len + 2;
- 
-          --  Codes in the range 16#800# - 16#D7FF# or 16#E000# - 16#FFFF#
-          --    UTF-16: yyyyyyyyxxxxxxxx
-          --    UTF-8:  1110yyyy 10yyyyxx 10xxxxxx
- 
-          elsif C1 <= 16#D7FF# or else C1 >= 16#E000# then
-             Result (Len + 1) :=
-               Character'Val
-                 (2#1110_0000# or Shift_Right (C1, 12));
-             Result (Len + 2) :=
-               Character'Val
-                 (2#10_000000# or (Shift_Right (C1, 6) and 2#00_111111#));
-             Result (Len + 3) :=
-               Character'Val
-                 (2#10_000000# or (C1 and 2#00_111111#));
-             Len := Len + 3;
- 
-          --  Codes in the range 16#10000# - 16#10FFFF#
-          --    UTF-16: 110110zzzzyyyyyy 110111yyxxxxxxxx
-          --    UTF-8:  11110zzz 10zzyyyy 10yyyyxx 10xxxxxx
-          --    Note: zzzzz in the output is input zzzz + 1
- 
-          elsif C1 <= 2#110110_11_11111111# then
-             if Iptr > Item'Last then
-                Raise_Encoding_Error (Iptr - 1);
-             else
-                C2 := To_Unsigned_16 (Item (Iptr));
-                Iptr := Iptr + 1;
-             end if;
- 
-             if (C2 and 2#111111_00_00000000#) /= 2#110111_00_00000000# then
-                Raise_Encoding_Error (Iptr - 1);
-             end if;
- 
-             zzzzz    := (Shift_Right (C1, 6) and 2#1111#) + 1;
-             yyyyyyyy := ((Shift_Left (C1, 2) and 2#111111_00#)
-                             or
-                          (Shift_Right (C2, 8) and 2#000000_11#));
-             xxxxxxxx := C2 and 2#11111111#;
- 
-             Result (Len + 1) :=
-               Character'Val
-                 (2#11110_000# or (Shift_Right (zzzzz, 2)));
-             Result (Len + 2) :=
-               Character'Val
-                 (2#10_000000# or Shift_Left (zzzzz and 2#11#, 4)
-                               or Shift_Right (yyyyyyyy, 4));
-             Result (Len + 3) :=
-               Character'Val
-                 (2#10_000000# or Shift_Left (yyyyyyyy and 2#1111#, 4)
-                               or Shift_Right (xxxxxxxx, 6));
-             Result (Len + 4) :=
-               Character'Val
-                 (2#10_000000# or (xxxxxxxx and 2#00_111111#));
-             Len := Len + 4;
- 
-          --  Error if input in 16#DC00# - 16#DFFF# (2nd surrogate with no 1st)
- 
-          else
-             Raise_Encoding_Error (Iptr - 2);
-          end if;
-       end loop;
- 
-       return Result (1 .. Len);
-    end Convert;
- 
- end Ada.Strings.UTF_Encoding.Conversions;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-suenco.ads gcc-8.1.0/gcc/ada/a-suenco.ads
*** gcc-7.3.0/gcc/ada/a-suenco.ads	Tue Apr 10 05:44:30 2012
--- gcc-8.1.0/gcc/ada/a-suenco.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,61 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                   ADA.STRINGS.UTF_ENCODING.CONVERSIONS                   --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This is an Ada 2012 package defined in AI05-0137-1. It provides conversions
- --  from one UTF encoding method to another. Note: this package is consistent
- --  with Ada 95, and may be used in Ada 95 or Ada 2005 mode.
- 
- package Ada.Strings.UTF_Encoding.Conversions is
-    pragma Pure (Conversions);
- 
-    --  In the following conversion routines, a BOM in the input that matches
-    --  the encoding scheme is ignored, an incorrect BOM causes Encoding_Error
-    --  to be raised. A BOM is present in the output if the Output_BOM parameter
-    --  is set to True.
- 
-    function Convert
-      (Item          : UTF_String;
-       Input_Scheme  : Encoding_Scheme;
-       Output_Scheme : Encoding_Scheme;
-       Output_BOM    : Boolean := False) return UTF_String;
-    --  Convert from input encoded in UTF-8, UTF-16LE, or UTF-16BE as specified
-    --  by the Input_Scheme argument, and generate an output encoded in one of
-    --  these three schemes as specified by the Output_Scheme argument.
- 
-    function Convert
-      (Item          : UTF_String;
-       Input_Scheme  : Encoding_Scheme;
-       Output_BOM    : Boolean := False) return UTF_16_Wide_String;
-    --  Convert from input encoded in UTF-8, UTF-16LE, or UTF-16BE as specified
-    --  by the Input_Scheme argument, and generate an output encoded in UTF-16.
- 
-    function Convert
-      (Item          : UTF_8_String;
-       Output_BOM    : Boolean := False) return UTF_16_Wide_String;
-    --  Convert from UTF-8 to UTF-16
- 
-    function Convert
-      (Item          : UTF_16_Wide_String;
-       Output_Scheme : Encoding_Scheme;
-       Output_BOM    : Boolean := False) return UTF_String;
-    --  Convert from UTF-16 to UTF-8, UTF-16LE, or UTF-16BE as specified by
-    --  the Output_Scheme argument.
- 
-    function Convert
-      (Item          : UTF_16_Wide_String;
-       Output_BOM    : Boolean := False) return UTF_8_String;
-    --  Convert from UTF-16 to UTF-8
- 
- end Ada.Strings.UTF_Encoding.Conversions;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-suenst.adb gcc-8.1.0/gcc/ada/a-suenst.adb
*** gcc-7.3.0/gcc/ada/a-suenst.adb	Mon Jan 27 16:54:37 2014
--- gcc-8.1.0/gcc/ada/a-suenst.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,350 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                     ADA.STRINGS.UTF_ENCODING.STRINGS                     --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2010-2013, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 Ada.Strings.UTF_Encoding.Strings is
-    use Interfaces;
- 
-    ------------
-    -- Decode --
-    ------------
- 
-    --  Decode UTF-8/UTF-16BE/UTF-16LE input to String
- 
-    function Decode
-      (Item         : UTF_String;
-       Input_Scheme : Encoding_Scheme) return String
-    is
-    begin
-       if Input_Scheme = UTF_8 then
-          return Decode (Item);
-       else
-          return Decode (To_UTF_16 (Item, Input_Scheme));
-       end if;
-    end Decode;
- 
-    --  Decode UTF-8 input to String
- 
-    function Decode (Item : UTF_8_String) return String is
-       Result : String (1 .. Item'Length);
-       --  Result string (worst case is same length as input)
- 
-       Len : Natural := 0;
-       --  Length of result stored so far
- 
-       Iptr : Natural;
-       --  Input Item pointer
- 
-       C : Unsigned_8;
-       R : Unsigned_16;
- 
-       procedure Get_Continuation;
-       --  Reads a continuation byte of the form 10xxxxxx, shifts R left
-       --  by 6 bits, and or's in the xxxxxx to the low order 6 bits. On
-       --  return Ptr is incremented. Raises exception if continuation
-       --  byte does not exist or is invalid.
- 
-       ----------------------
-       -- Get_Continuation --
-       ----------------------
- 
-       procedure Get_Continuation is
-       begin
-          if Iptr > Item'Last then
-             Raise_Encoding_Error (Iptr - 1);
- 
-          else
-             C := To_Unsigned_8 (Item (Iptr));
-             Iptr := Iptr + 1;
- 
-             if C not in 2#10_000000# .. 2#10_111111# then
-                Raise_Encoding_Error (Iptr - 1);
-             else
-                R := Shift_Left (R, 6) or Unsigned_16 (C and 2#00_111111#);
-             end if;
-          end if;
-       end Get_Continuation;
- 
-    --  Start of processing for Decode
- 
-    begin
-       Iptr := Item'First;
- 
-       --  Skip BOM at start
- 
-       if Item'Length >= 3
-         and then Item (Iptr .. Iptr + 2) = BOM_8
-       then
-          Iptr := Iptr + 3;
- 
-       --  Error if bad BOM
- 
-       elsif Item'Length >= 2
-         and then (Item (Iptr .. Iptr + 1) = BOM_16BE
-                     or else
-                   Item (Iptr .. Iptr + 1) = BOM_16LE)
-       then
-          Raise_Encoding_Error (Iptr);
-       end if;
- 
-       while Iptr <= Item'Last loop
-          C := To_Unsigned_8 (Item (Iptr));
-          Iptr := Iptr + 1;
- 
-          --  Codes in the range 16#00# - 16#7F# are represented as
-          --    0xxxxxxx
- 
-          if C <= 16#7F# then
-             R := Unsigned_16 (C);
- 
-          --  No initial code can be of the form 10xxxxxx. Such codes are used
-          --  only for continuations.
- 
-          elsif C <= 2#10_111111# then
-             Raise_Encoding_Error (Iptr - 1);
- 
-          --  Codes in the range 16#80# - 16#7FF# are represented as
-          --    110yyyxx 10xxxxxx
- 
-          elsif C <= 2#110_11111# then
-             R := Unsigned_16 (C and 2#000_11111#);
-             Get_Continuation;
- 
-          --  Codes in the range 16#800# - 16#FFFF# are represented as
-          --    1110yyyy 10yyyyxx 10xxxxxx
- 
-          --  Such codes are out of range for type Character
- 
-          --  Codes in the range 16#10000# - 16#10FFFF# are represented as
-          --    11110zzz 10zzyyyy 10yyyyxx 10xxxxxx
- 
-          --  Such codes are out of range for Wide_String output
- 
-          --  Thus all remaining cases raise Encoding_Error
- 
-          else
-             Raise_Encoding_Error (Iptr - 1);
-          end if;
- 
-          Len := Len + 1;
- 
-          --  The value may still be out of range of Standard.Character. We make
-          --  the check explicit because the library is typically compiled with
-          --  range checks disabled.
- 
-          if R > Character'Pos (Character'Last) then
-             Raise_Encoding_Error (Iptr - 1);
-          end if;
- 
-          Result (Len) := Character'Val (R);
-       end loop;
- 
-       return Result (1 .. Len);
-    end Decode;
- 
-    --  Decode UTF-16 input to String
- 
-    function Decode (Item : UTF_16_Wide_String) return String is
-       Result : String (1 .. Item'Length);
-       --  Result is same length as input (possibly minus 1 if BOM present)
- 
-       Len : Natural := 0;
-       --  Length of result
- 
-       Iptr : Natural;
-       --  Index of next Item element
- 
-       C : Unsigned_16;
- 
-    begin
-       --  Skip UTF-16 BOM at start
- 
-       Iptr := Item'First;
- 
-       if Item'Length > 0 and then Item (Iptr) = BOM_16 (1) then
-          Iptr := Iptr + 1;
-       end if;
- 
-       --  Loop through input characters
- 
-       while Iptr <= Item'Last loop
-          C := To_Unsigned_16 (Item (Iptr));
-          Iptr := Iptr + 1;
- 
-          --  Codes in the range 16#0000#..16#00FF# represent their own value
- 
-          if C <= 16#00FF# then
-             Len := Len + 1;
-             Result (Len) := Character'Val (C);
- 
-          --  All other codes are invalid, either they are invalid UTF-16
-          --  encoding sequences, or they represent values that are out of
-          --  range for type Character.
- 
-          else
-             Raise_Encoding_Error (Iptr - 1);
-          end if;
-       end loop;
- 
-       return Result (1 .. Len);
-    end Decode;
- 
-    ------------
-    -- Encode --
-    ------------
- 
-    --  Encode String in UTF-8, UTF-16BE or UTF-16LE
- 
-    function Encode
-      (Item          : String;
-       Output_Scheme : Encoding_Scheme;
-       Output_BOM    : Boolean  := False) return UTF_String
-    is
-    begin
-       --  Case of UTF_8
- 
-       if Output_Scheme = UTF_8 then
-          return Encode (Item, Output_BOM);
- 
-       --  Case of UTF_16LE or UTF_16BE, use UTF-16 intermediary
- 
-       else
-          return From_UTF_16 (UTF_16_Wide_String'(Encode (Item)),
-                              Output_Scheme, Output_BOM);
-       end if;
-    end Encode;
- 
-    --  Encode String in UTF-8
- 
-    function Encode
-      (Item       : String;
-       Output_BOM : Boolean  := False) return UTF_8_String
-    is
-       Result : UTF_8_String (1 .. 3 * Item'Length + 3);
-       --  Worst case is three bytes per input byte + space for BOM
- 
-       Len : Natural;
-       --  Number of output codes stored in Result
- 
-       C : Unsigned_8;
-       --  Single input character
- 
-       procedure Store (C : Unsigned_8);
-       pragma Inline (Store);
-       --  Store one output code, C is in the range 0 .. 255
- 
-       -----------
-       -- Store --
-       -----------
- 
-       procedure Store (C : Unsigned_8) is
-       begin
-          Len := Len + 1;
-          Result (Len) := Character'Val (C);
-       end Store;
- 
-    --  Start of processing for UTF8_Encode
- 
-    begin
-       --  Output BOM if required
- 
-       if Output_BOM then
-          Result (1 .. 3) := BOM_8;
-          Len := 3;
-       else
-          Len := 0;
-       end if;
- 
-       --  Loop through characters of input
- 
-       for J in Item'Range loop
-          C := To_Unsigned_8 (Item (J));
- 
-          --  Codes in the range 16#00# - 16#7F# are represented as
-          --    0xxxxxxx
- 
-          if C <= 16#7F# then
-             Store (C);
- 
-          --  Codes in the range 16#80# - 16#7FF# are represented as
-          --    110yyyxx 10xxxxxx
- 
-          --  For type character of course, the limit is 16#FF# in any case
- 
-          else
-             Store (2#110_00000# or Shift_Right (C, 6));
-             Store (2#10_000000# or (C and 2#00_111111#));
-          end if;
-       end loop;
- 
-       return Result (1 .. Len);
-    end Encode;
- 
-    --  Encode String in UTF-16
- 
-    function Encode
-      (Item       : String;
-       Output_BOM : Boolean  := False) return UTF_16_Wide_String
-    is
-       Result : UTF_16_Wide_String
-                  (1 .. Item'Length + Boolean'Pos (Output_BOM));
-       --  Output is same length as input + possible BOM
- 
-       Len : Integer;
-       --  Length of output string
- 
-       C : Unsigned_8;
- 
-    begin
-       --  Output BOM if required
- 
-       if Output_BOM then
-          Result (1) := BOM_16 (1);
-          Len := 1;
-       else
-          Len := 0;
-       end if;
- 
-       --  Loop through input characters encoding them
- 
-       for Iptr in Item'Range loop
-          C := To_Unsigned_8 (Item (Iptr));
- 
-          --  Codes in the range 16#0000#..16#00FF# are output unchanged. This
-          --  includes all possible cases of Character values.
- 
-          Len := Len + 1;
-          Result (Len) := Wide_Character'Val (C);
-       end loop;
- 
-       return Result;
-    end Encode;
- 
- end Ada.Strings.UTF_Encoding.Strings;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-suenst.ads gcc-8.1.0/gcc/ada/a-suenst.ads
*** gcc-7.3.0/gcc/ada/a-suenst.ads	Tue Apr 10 05:44:30 2012
--- gcc-8.1.0/gcc/ada/a-suenst.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,65 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                     ADA.STRINGS.UTF_ENCODING.STRINGS                 --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This is an Ada 2012 package defined in AI05-0137-1. It is used for encoding
- --  and decoding String values using UTF encodings. Note: this package is
- --  consistent with Ada 95, and may be included in Ada 95 implementations.
- 
- package Ada.Strings.UTF_Encoding.Strings is
-    pragma Pure (Strings);
- 
-    --  The encoding routines take a String as input and encode the result
-    --  using the specified UTF encoding method. The result includes a BOM if
-    --  the Output_BOM argument is set to True. All 256 values of type Character
-    --  are valid, so Encoding_Error cannot be raised for string input data.
- 
-    function Encode
-      (Item          : String;
-       Output_Scheme : Encoding_Scheme;
-       Output_BOM    : Boolean  := False) return UTF_String;
-    --  Encode String using UTF-8, UTF-16LE or UTF-16BE encoding as specified by
-    --  the Output_Scheme parameter.
- 
-    function Encode
-      (Item       : String;
-       Output_BOM : Boolean  := False) return UTF_8_String;
-    --  Encode String using UTF-8 encoding
- 
-    function Encode
-      (Item       : String;
-       Output_BOM : Boolean  := False) return UTF_16_Wide_String;
-    --  Encode String using UTF_16 encoding
- 
-    --  The decoding routines take a UTF String as input, and return a decoded
-    --  Wide_String. If the UTF String starts with a BOM that matches the
-    --  encoding method, it is ignored. An incorrect BOM raises Encoding_Error,
-    --  as does a code out of range of type Character.
- 
-    function Decode
-      (Item         : UTF_String;
-       Input_Scheme : Encoding_Scheme) return String;
-    --  The input is encoded in UTF_8, UTF_16LE or UTF_16BE as specified by the
-    --  Input_Scheme parameter. It is decoded and returned as a String value.
-    --  Note: a convenient form for scheme may be Encoding (UTF_String).
- 
-    function Decode
-      (Item : UTF_8_String) return String;
-    --  The input is encoded in UTF-8 and returned as a String value
- 
-    function Decode
-      (Item : UTF_16_Wide_String) return String;
-    --  The input is encoded in UTF-16 and returned as a String value
- 
- end Ada.Strings.UTF_Encoding.Strings;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-suewst.adb gcc-8.1.0/gcc/ada/a-suewst.adb
*** gcc-7.3.0/gcc/ada/a-suewst.adb	Fri Jan  4 12:49:55 2013
--- gcc-8.1.0/gcc/ada/a-suewst.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,370 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                   ADA.STRINGS.UTF_ENCODING.WIDE_STRINGS                  --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2010-2012, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 Ada.Strings.UTF_Encoding.Wide_Strings is
-    use Interfaces;
- 
-    ------------
-    -- Decode --
-    ------------
- 
-    --  Decode UTF-8/UTF-16BE/UTF-16LE input to Wide_String
- 
-    function Decode
-      (Item         : UTF_String;
-       Input_Scheme : Encoding_Scheme) return Wide_String
-    is
-    begin
-       if Input_Scheme = UTF_8 then
-          return Decode (Item);
-       else
-          return Decode (To_UTF_16 (Item, Input_Scheme));
-       end if;
-    end Decode;
- 
-    --  Decode UTF-8 input to Wide_String
- 
-    function Decode (Item : UTF_8_String) return Wide_String is
-       Result : Wide_String (1 .. Item'Length);
-       --  Result string (worst case is same length as input)
- 
-       Len : Natural := 0;
-       --  Length of result stored so far
- 
-       Iptr : Natural;
-       --  Input Item pointer
- 
-       C : Unsigned_8;
-       R : Unsigned_16;
- 
-       procedure Get_Continuation;
-       --  Reads a continuation byte of the form 10xxxxxx, shifts R left by 6
-       --  bits, and or's in the xxxxxx to the low order 6 bits. On return Ptr
-       --  is incremented. Raises exception if continuation byte does not exist
-       --  or is invalid.
- 
-       ----------------------
-       -- Get_Continuation --
-       ----------------------
- 
-       procedure Get_Continuation is
-       begin
-          if Iptr > Item'Last then
-             Raise_Encoding_Error (Iptr - 1);
- 
-          else
-             C := To_Unsigned_8 (Item (Iptr));
-             Iptr := Iptr + 1;
- 
-             if C not in 2#10_000000# .. 2#10_111111# then
-                Raise_Encoding_Error (Iptr - 1);
-             else
-                R := Shift_Left (R, 6) or Unsigned_16 (C and 2#00_111111#);
-             end if;
-          end if;
-       end Get_Continuation;
- 
-    --  Start of processing for Decode
- 
-    begin
-       Iptr := Item'First;
- 
-       --  Skip BOM at start
- 
-       if Item'Length >= 3
-         and then Item (Iptr .. Iptr + 2) = BOM_8
-       then
-          Iptr := Iptr + 3;
- 
-       --  Error if bad BOM
- 
-       elsif Item'Length >= 2
-         and then (Item (Iptr .. Iptr + 1) = BOM_16BE
-                     or else
-                   Item (Iptr .. Iptr + 1) = BOM_16LE)
-       then
-          Raise_Encoding_Error (Iptr);
-       end if;
- 
-       while Iptr <= Item'Last loop
-          C := To_Unsigned_8 (Item (Iptr));
-          Iptr := Iptr + 1;
- 
-          --  Codes in the range 16#00# - 16#7F# are represented as
-          --    0xxxxxxx
- 
-          if C <= 16#7F# then
-             R := Unsigned_16 (C);
- 
-          --  No initial code can be of the form 10xxxxxx. Such codes are used
-          --  only for continuations.
- 
-          elsif C <= 2#10_111111# then
-             Raise_Encoding_Error (Iptr - 1);
- 
-          --  Codes in the range 16#80# - 16#7FF# are represented as
-          --    110yyyxx 10xxxxxx
- 
-          elsif C <= 2#110_11111# then
-             R := Unsigned_16 (C and 2#000_11111#);
-             Get_Continuation;
- 
-          --  Codes in the range 16#800# - 16#FFFF# are represented as
-          --    1110yyyy 10yyyyxx 10xxxxxx
- 
-          elsif C <= 2#1110_1111# then
-             R := Unsigned_16 (C and 2#0000_1111#);
-             Get_Continuation;
-             Get_Continuation;
- 
-          --  Codes in the range 16#10000# - 16#10FFFF# are represented as
-          --    11110zzz 10zzyyyy 10yyyyxx 10xxxxxx
- 
-          --  Such codes are out of range for Wide_String output
- 
-          else
-             Raise_Encoding_Error (Iptr - 1);
-          end if;
- 
-          Len := Len + 1;
-          Result (Len) := Wide_Character'Val (R);
-       end loop;
- 
-       return Result (1 .. Len);
-    end Decode;
- 
-    --  Decode UTF-16 input to Wide_String
- 
-    function Decode (Item : UTF_16_Wide_String) return Wide_String is
-       Result : Wide_String (1 .. Item'Length);
-       --  Result is same length as input (possibly minus 1 if BOM present)
- 
-       Len : Natural := 0;
-       --  Length of result
- 
-       Iptr : Natural;
-       --  Index of next Item element
- 
-       C : Unsigned_16;
- 
-    begin
-       --  Skip UTF-16 BOM at start
- 
-       Iptr := Item'First;
- 
-       if Item'Length > 0 and then Item (Iptr) = BOM_16 (1) then
-          Iptr := Iptr + 1;
-       end if;
- 
-       --  Loop through input characters
- 
-       while Iptr <= Item'Last loop
-          C := To_Unsigned_16 (Item (Iptr));
-          Iptr := Iptr + 1;
- 
-          --  Codes in the range 16#0000#..16#D7FF# or 16#E000#..16#FFFD#
-          --  represent their own value.
- 
-          if C <= 16#D7FF# or else C in 16#E000# .. 16#FFFD# then
-             Len := Len + 1;
-             Result (Len) := Wide_Character'Val (C);
- 
-          --  Codes in the range 16#D800#..16#DBFF# represent the first of the
-          --  two surrogates used to encode the range 16#01_000#..16#10_FFFF".
-          --  Such codes are out of range for 16-bit output.
- 
-          --  The case of input in the range 16#DC00#..16#DFFF# must never
-          --  occur, since it means we have a second surrogate character with
-          --  no corresponding first surrogate.
- 
-          --  Codes in the range 16#FFFE# .. 16#FFFF# are also invalid since
-          --  they conflict with codes used for BOM values.
- 
-          --  Thus all remaining codes are invalid
- 
-          else
-             Raise_Encoding_Error (Iptr - 1);
-          end if;
-       end loop;
- 
-       return Result (1 .. Len);
-    end Decode;
- 
-    ------------
-    -- Encode --
-    ------------
- 
-    --  Encode Wide_String in UTF-8, UTF-16BE or UTF-16LE
- 
-    function Encode
-      (Item          : Wide_String;
-       Output_Scheme : Encoding_Scheme;
-       Output_BOM    : Boolean  := False) return UTF_String
-    is
-    begin
-       --  Case of UTF_8
- 
-       if Output_Scheme = UTF_8 then
-          return Encode (Item, Output_BOM);
- 
-       --  Case of UTF_16LE or UTF_16BE, use UTF-16 intermediary
- 
-       else
-          return From_UTF_16 (UTF_16_Wide_String'(Encode (Item)),
-                              Output_Scheme, Output_BOM);
-       end if;
-    end Encode;
- 
-    --  Encode Wide_String in UTF-8
- 
-    function Encode
-      (Item       : Wide_String;
-       Output_BOM : Boolean  := False) return UTF_8_String
-    is
-       Result : UTF_8_String (1 .. 3 * Item'Length + 3);
-       --  Worst case is three bytes per input byte + space for BOM
- 
-       Len : Natural;
-       --  Number of output codes stored in Result
- 
-       C : Unsigned_16;
-       --  Single input character
- 
-       procedure Store (C : Unsigned_16);
-       pragma Inline (Store);
-       --  Store one output code, C is in the range 0 .. 255
- 
-       -----------
-       -- Store --
-       -----------
- 
-       procedure Store (C : Unsigned_16) is
-       begin
-          Len := Len + 1;
-          Result (Len) := Character'Val (C);
-       end Store;
- 
-    --  Start of processing for UTF8_Encode
- 
-    begin
-       --  Output BOM if required
- 
-       if Output_BOM then
-          Result (1 .. 3) := BOM_8;
-          Len := 3;
-       else
-          Len := 0;
-       end if;
- 
-       --  Loop through characters of input
- 
-       for J in Item'Range loop
-          C := To_Unsigned_16 (Item (J));
- 
-          --  Codes in the range 16#00# - 16#7F# are represented as
-          --    0xxxxxxx
- 
-          if C <= 16#7F# then
-             Store (C);
- 
-          --  Codes in the range 16#80# - 16#7FF# are represented as
-          --    110yyyxx 10xxxxxx
- 
-          elsif C <= 16#7FF# then
-             Store (2#110_00000# or Shift_Right (C, 6));
-             Store (2#10_000000# or (C and 2#00_111111#));
- 
-          --  Codes in the range 16#800# - 16#FFFF# are represented as
-          --    1110yyyy 10yyyyxx 10xxxxxx
- 
-          else
-             Store (2#1110_0000# or Shift_Right (C, 12));
-             Store (2#10_000000# or
-                      Shift_Right (C and 2#111111_000000#, 6));
-             Store (2#10_000000# or (C and 2#00_111111#));
-          end if;
-       end loop;
- 
-       return Result (1 .. Len);
-    end Encode;
- 
-    --  Encode Wide_String in UTF-16
- 
-    function Encode
-      (Item       : Wide_String;
-       Output_BOM : Boolean  := False) return UTF_16_Wide_String
-    is
-       Result : UTF_16_Wide_String
-                  (1 .. Item'Length + Boolean'Pos (Output_BOM));
-       --  Output is same length as input + possible BOM
- 
-       Len : Integer;
-       --  Length of output string
- 
-       C : Unsigned_16;
- 
-    begin
-       --  Output BOM if required
- 
-       if Output_BOM then
-          Result (1) := BOM_16 (1);
-          Len := 1;
-       else
-          Len := 0;
-       end if;
- 
-       --  Loop through input characters encoding them
- 
-       for Iptr in Item'Range loop
-          C := To_Unsigned_16 (Item (Iptr));
- 
-          --  Codes in the range 16#0000#..16#D7FF# or 16#E000#..16#FFFD# are
-          --  output unchanged.
- 
-          if C <= 16#D7FF# or else C in 16#E000# .. 16#FFFD# then
-             Len := Len + 1;
-             Result (Len) := Wide_Character'Val (C);
- 
-          --  Codes in the range 16#D800#..16#DFFF# should never appear in the
-          --  input, since no valid Unicode characters are in this range (which
-          --  would conflict with the UTF-16 surrogate encodings). Similarly
-          --  codes in the range 16#FFFE#..16#FFFF conflict with BOM codes.
-          --  Thus all remaining codes are illegal.
- 
-          else
-             Raise_Encoding_Error (Iptr);
-          end if;
-       end loop;
- 
-       return Result;
-    end Encode;
- 
- end Ada.Strings.UTF_Encoding.Wide_Strings;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-suewst.ads gcc-8.1.0/gcc/ada/a-suewst.ads
*** gcc-7.3.0/gcc/ada/a-suewst.ads	Tue Apr 10 05:44:30 2012
--- gcc-8.1.0/gcc/ada/a-suewst.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,67 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                   ADA.STRINGS.UTF_ENCODING.WIDE_STRINGS                  --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This is an Ada 2012 package defined in AI05-0137-1. It is used for encoding
- --  and decoding Wide_String values using UTF encodings. Note: this package is
- --  consistent with Ada 95, and may be included in Ada 95 implementations.
- 
- package Ada.Strings.UTF_Encoding.Wide_Strings is
-    pragma Pure (Wide_Strings);
- 
-    --  The encoding routines take a Wide_String as input and encode the result
-    --  using the specified UTF encoding method. The result includes a BOM if
-    --  the Output_BOM argument is set to True. Encoding_Error is raised if an
-    --  invalid character appears in the input. In particular the characters
-    --  in the range 16#D800# .. 16#DFFF# are invalid because they conflict
-    --  with UTF-16 surrogate encodings, and the characters 16#FFFE# and
-    --  16#FFFF# are also invalid because they conflict with BOM codes.
- 
-    function Encode
-      (Item          : Wide_String;
-       Output_Scheme : Encoding_Scheme;
-       Output_BOM    : Boolean  := False) return UTF_String;
-    --  Encode Wide_String using UTF-8, UTF-16LE or UTF-16BE encoding as
-    --  specified by the Output_Scheme parameter.
- 
-    function Encode
-      (Item       : Wide_String;
-       Output_BOM : Boolean  := False) return UTF_8_String;
-    --  Encode Wide_String using UTF-8 encoding
- 
-    function Encode
-      (Item       : Wide_String;
-       Output_BOM : Boolean  := False) return UTF_16_Wide_String;
-    --  Encode Wide_String using UTF_16 encoding
- 
-    --  The decoding routines take a UTF String as input, and return a decoded
-    --  Wide_String. If the UTF String starts with a BOM that matches the
-    --  encoding method, it is ignored. An incorrect BOM raises Encoding_Error.
- 
-    function Decode
-      (Item         : UTF_String;
-       Input_Scheme : Encoding_Scheme) return Wide_String;
-    --  The input is encoded in UTF_8, UTF_16LE or UTF_16BE as specified by the
-    --  Input_Scheme parameter. It is decoded and returned as a Wide_String
-    --  value. Note: a convenient form for scheme may be Encoding (UTF_String).
- 
-    function Decode
-      (Item : UTF_8_String) return Wide_String;
-    --  The input is encoded in UTF-8 and returned as a Wide_String value
- 
-    function Decode
-      (Item : UTF_16_Wide_String) return Wide_String;
-    --  The input is encoded in UTF-16 and returned as a Wide_String value
- 
- end Ada.Strings.UTF_Encoding.Wide_Strings;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-suezst.adb gcc-8.1.0/gcc/ada/a-suezst.adb
*** gcc-7.3.0/gcc/ada/a-suezst.adb	Fri Jan  4 12:49:55 2013
--- gcc-8.1.0/gcc/ada/a-suezst.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,429 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                ADA.STRINGS.UTF_ENCODING.WIDE_WIDE_STRINGS                --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2010-2012, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 Ada.Strings.UTF_Encoding.Wide_Wide_Strings is
-    use Interfaces;
- 
-    ------------
-    -- Decode --
-    ------------
- 
-    --  Decode UTF-8/UTF-16BE/UTF-16LE input to Wide_Wide_String
- 
-    function Decode
-      (Item         : UTF_String;
-       Input_Scheme : Encoding_Scheme) return Wide_Wide_String
-    is
-    begin
-       if Input_Scheme = UTF_8 then
-          return Decode (Item);
-       else
-          return Decode (To_UTF_16 (Item, Input_Scheme));
-       end if;
-    end Decode;
- 
-    --  Decode UTF-8 input to Wide_Wide_String
- 
-    function Decode (Item : UTF_8_String) return Wide_Wide_String is
-       Result : Wide_Wide_String (1 .. Item'Length);
-       --  Result string (worst case is same length as input)
- 
-       Len : Natural := 0;
-       --  Length of result stored so far
- 
-       Iptr : Natural;
-       --  Input string pointer
- 
-       C : Unsigned_8;
-       R : Unsigned_32;
- 
-       procedure Get_Continuation;
-       --  Reads a continuation byte of the form 10xxxxxx, shifts R left by 6
-       --  bits, and or's in the xxxxxx to the low order 6 bits. On return Ptr
-       --  is incremented. Raises exception if continuation byte does not exist
-       --  or is invalid.
- 
-       ----------------------
-       -- Get_Continuation --
-       ----------------------
- 
-       procedure Get_Continuation is
-       begin
-          if Iptr > Item'Last then
-             Raise_Encoding_Error (Iptr - 1);
- 
-          else
-             C := To_Unsigned_8 (Item (Iptr));
-             Iptr := Iptr + 1;
- 
-             if C not in 2#10_000000# .. 2#10_111111# then
-                Raise_Encoding_Error (Iptr - 1);
-             else
-                R := Shift_Left (R, 6) or Unsigned_32 (C and 2#00_111111#);
-             end if;
-          end if;
-       end Get_Continuation;
- 
-    --  Start of processing for Decode
- 
-    begin
-       Iptr := Item'First;
- 
-       --  Skip BOM at start
- 
-       if Item'Length >= 3
-         and then Item (Iptr .. Iptr + 2) = BOM_8
-       then
-          Iptr := Iptr + 3;
- 
-       --  Error if bad BOM
- 
-       elsif Item'Length >= 2
-         and then (Item (Iptr .. Iptr + 1) = BOM_16BE
-                     or else
-                   Item (Iptr .. Iptr + 1) = BOM_16LE)
-       then
-          Raise_Encoding_Error (Iptr);
-       end if;
- 
-       --  Loop through input characters
- 
-       while Iptr <= Item'Last loop
-          C := To_Unsigned_8 (Item (Iptr));
-          Iptr := Iptr + 1;
- 
-          --  Codes in the range 16#00# - 16#7F# are represented as
-          --    0xxxxxxx
- 
-          if C <= 16#7F# then
-             R := Unsigned_32 (C);
- 
-          --  No initial code can be of the form 10xxxxxx. Such codes are used
-          --  only for continuations.
- 
-          elsif C <= 2#10_111111# then
-             Raise_Encoding_Error (Iptr - 1);
- 
-          --  Codes in the range 16#80# - 16#7FF# are represented as
-          --    110yyyxx 10xxxxxx
- 
-          elsif C <= 2#110_11111# then
-             R := Unsigned_32 (C and 2#000_11111#);
-             Get_Continuation;
- 
-          --  Codes in the range 16#800# - 16#FFFF# are represented as
-          --    1110yyyy 10yyyyxx 10xxxxxx
- 
-          elsif C <= 2#1110_1111# then
-             R := Unsigned_32 (C and 2#0000_1111#);
-             Get_Continuation;
-             Get_Continuation;
- 
-          --  Codes in the range 16#10000# - 16#10FFFF# are represented as
-          --    11110zzz 10zzyyyy 10yyyyxx 10xxxxxx
- 
-          elsif C <= 2#11110_111# then
-             R := Unsigned_32 (C and 2#00000_111#);
-             Get_Continuation;
-             Get_Continuation;
-             Get_Continuation;
- 
-          --  Any other code is an error
- 
-          else
-             Raise_Encoding_Error (Iptr - 1);
-          end if;
- 
-          Len := Len + 1;
-          Result (Len) := Wide_Wide_Character'Val (R);
-       end loop;
- 
-       return Result (1 .. Len);
-    end Decode;
- 
-    --  Decode UTF-16 input to Wide_Wide_String
- 
-    function Decode (Item : UTF_16_Wide_String) return Wide_Wide_String is
-       Result : Wide_Wide_String (1 .. Item'Length);
-       --  Result cannot be longer than the input string
- 
-       Len : Natural := 0;
-       --  Length of result
- 
-       Iptr : Natural;
-       --  Pointer to next element in Item
- 
-       C : Unsigned_16;
-       R : Unsigned_32;
- 
-    begin
-       --  Skip UTF-16 BOM at start
- 
-       Iptr := Item'First;
- 
-       if Iptr <= Item'Last and then Item (Iptr) = BOM_16 (1) then
-          Iptr := Iptr + 1;
-       end if;
- 
-       --  Loop through input characters
- 
-       while Iptr <= Item'Last loop
-          C := To_Unsigned_16 (Item (Iptr));
-          Iptr := Iptr + 1;
- 
-          --  Codes in the range 16#0000#..16#D7FF# or 16#E000#..16#FFFD#
-          --  represent their own value.
- 
-          if C <= 16#D7FF# or else C in 16#E000# .. 16#FFFD# then
-             Len := Len + 1;
-             Result (Len) := Wide_Wide_Character'Val (C);
- 
-          --  Codes in the range 16#D800#..16#DBFF# represent the first of the
-          --  two surrogates used to encode the range 16#01_000#..16#10_FFFF".
-          --  The first surrogate provides 10 high order bits of the result.
- 
-          elsif C <= 16#DBFF# then
-             R := Shift_Left ((Unsigned_32 (C) - 16#D800#), 10);
- 
-             --  Error if at end of string
- 
-             if Iptr > Item'Last then
-                Raise_Encoding_Error (Iptr - 1);
- 
-             --  Otherwise next character must be valid low order surrogate
-             --  which provides the low 10 order bits of the result.
- 
-             else
-                C := To_Unsigned_16 (Item (Iptr));
-                Iptr := Iptr + 1;
- 
-                if C not in 16#DC00# .. 16#DFFF# then
-                   Raise_Encoding_Error (Iptr - 1);
- 
-                else
-                   R := R or (Unsigned_32 (C) mod 2 ** 10);
- 
-                --  The final adjustment is to add 16#01_0000 to get the
-                --  result back in the required 21 bit range.
- 
-                   R := R + 16#01_0000#;
-                   Len := Len + 1;
-                   Result (Len) := Wide_Wide_Character'Val (R);
-                end if;
-             end if;
- 
-          --  Remaining codes are invalid
- 
-          else
-             Raise_Encoding_Error (Iptr - 1);
-          end if;
-       end loop;
- 
-       return Result (1 .. Len);
-    end Decode;
- 
-    ------------
-    -- Encode --
-    ------------
- 
-    --  Encode Wide_Wide_String in UTF-8, UTF-16BE or UTF-16LE
- 
-    function Encode
-      (Item          : Wide_Wide_String;
-       Output_Scheme : Encoding_Scheme;
-       Output_BOM    : Boolean  := False) return UTF_String
-    is
-    begin
-       if Output_Scheme = UTF_8 then
-          return Encode (Item, Output_BOM);
-       else
-          return From_UTF_16 (Encode (Item), Output_Scheme, Output_BOM);
-       end if;
-    end Encode;
- 
-    --  Encode Wide_Wide_String in UTF-8
- 
-    function Encode
-      (Item       : Wide_Wide_String;
-       Output_BOM : Boolean  := False) return UTF_8_String
-    is
-       Result : String (1 .. 4 * Item'Length + 3);
-       --  Worst case is four bytes per input byte + space for BOM
- 
-       Len  : Natural;
-       --  Number of output codes stored in Result
- 
-       C : Unsigned_32;
-       --  Single input character
- 
-       procedure Store (C : Unsigned_32);
-       pragma Inline (Store);
-       --  Store one output code (input is in range 0 .. 255)
- 
-       -----------
-       -- Store --
-       -----------
- 
-       procedure Store (C : Unsigned_32) is
-       begin
-          Len := Len + 1;
-          Result (Len) := Character'Val (C);
-       end Store;
- 
-    --  Start of processing for Encode
- 
-    begin
-       --  Output BOM if required
- 
-       if Output_BOM then
-          Result (1 .. 3) := BOM_8;
-          Len := 3;
-       else
-          Len := 0;
-       end if;
- 
-       --  Loop through characters of input
- 
-       for Iptr in Item'Range loop
-          C := To_Unsigned_32 (Item (Iptr));
- 
-          --  Codes in the range 16#00#..16#7F# are represented as
-          --    0xxxxxxx
- 
-          if C <= 16#7F# then
-             Store (C);
- 
-          --  Codes in the range 16#80#..16#7FF# are represented as
-          --    110yyyxx 10xxxxxx
- 
-          elsif C <= 16#7FF# then
-             Store (2#110_00000# or Shift_Right (C, 6));
-             Store (2#10_000000# or (C and 2#00_111111#));
- 
-          --  Codes in the range 16#800#..16#D7FF# or 16#E000#..16#FFFD# are
-          --  represented as
-          --    1110yyyy 10yyyyxx 10xxxxxx
- 
-          elsif C <= 16#D7FF# or else C in 16#E000# .. 16#FFFD# then
-             Store (2#1110_0000# or Shift_Right (C, 12));
-             Store (2#10_000000# or
-                      Shift_Right (C and 2#111111_000000#, 6));
-             Store (2#10_000000# or (C and 2#00_111111#));
- 
-          --  Codes in the range 16#10000# - 16#10FFFF# are represented as
-          --    11110zzz 10zzyyyy 10yyyyxx 10xxxxxx
- 
-          elsif C in 16#1_0000# .. 16#10_FFFF# then
-             Store (2#11110_000# or
-                      Shift_Right (C, 18));
-             Store (2#10_000000# or
-                      Shift_Right (C and 2#111111_000000_000000#, 12));
-             Store (2#10_000000# or
-                      Shift_Right (C and 2#111111_000000#, 6));
-             Store (2#10_000000# or
-                      (C and 2#00_111111#));
- 
-          --  All other codes are invalid
- 
-          else
-             Raise_Encoding_Error (Iptr);
-          end if;
-       end loop;
- 
-       return Result (1 .. Len);
-    end Encode;
- 
-    --  Encode Wide_Wide_String in UTF-16
- 
-    function Encode
-      (Item       : Wide_Wide_String;
-       Output_BOM : Boolean  := False) return UTF_16_Wide_String
-    is
-       Result : UTF_16_Wide_String (1 .. 2 * Item'Length + 1);
-       --  Worst case is each input character generates two output characters
-       --  plus one for possible BOM.
- 
-       Len : Integer;
-       --  Length of output string
- 
-       C : Unsigned_32;
- 
-    begin
-       --  Output BOM if needed
- 
-       if Output_BOM then
-          Result (1) := BOM_16 (1);
-          Len := 1;
-       else
-          Len := 0;
-       end if;
- 
-       --  Loop through input characters encoding them
- 
-       for Iptr in Item'Range loop
-          C := To_Unsigned_32 (Item (Iptr));
- 
-          --  Codes in the range 16#00_0000#..16#00_D7FF# or 16#E000#..16#FFFD#
-          --  are output unchanged
- 
-          if C <= 16#00_D7FF# or else C in 16#E000# .. 16#FFFD# then
-             Len := Len + 1;
-             Result (Len) := Wide_Character'Val (C);
- 
-          --  Codes in the range 16#01_0000#..16#10_FFFF# are output using two
-          --  surrogate characters. First 16#1_0000# is subtracted from the code
-          --  point to give a 20-bit value. This is then split into two separate
-          --  10-bit values each of which is represented as a surrogate with the
-          --  most significant half placed in the first surrogate. The ranges of
-          --  values used for the two surrogates are 16#D800#-16#DBFF# for the
-          --  first, most significant surrogate and 16#DC00#-16#DFFF# for the
-          --  second, least significant surrogate.
- 
-          elsif C in 16#1_0000# ..  16#10_FFFF# then
-             C := C - 16#1_0000#;
- 
-             Len := Len + 1;
-             Result (Len) := Wide_Character'Val (16#D800# + C / 2 ** 10);
- 
-             Len := Len + 1;
-             Result (Len) := Wide_Character'Val (16#DC00# + C mod 2 ** 10);
- 
-          --  All other codes are invalid
- 
-          else
-             Raise_Encoding_Error (Iptr);
-          end if;
-       end loop;
- 
-       return Result (1 .. Len);
-    end Encode;
- 
- end Ada.Strings.UTF_Encoding.Wide_Wide_Strings;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-suezst.ads gcc-8.1.0/gcc/ada/a-suezst.ads
*** gcc-7.3.0/gcc/ada/a-suezst.ads	Tue Apr 10 05:44:30 2012
--- gcc-8.1.0/gcc/ada/a-suezst.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,64 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                ADA.STRINGS.UTF_ENCODING.WIDE_WIDE_STRINGS                --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This is an Ada 2012 package defined in AI05-0137-1. It is used for encoding
- --  and decoding Wide_String values using UTF encodings. Note: this package is
- --  consistent with Ada 2005, and may be used in Ada 2005 mode, but cannot be
- --  used in Ada 95 mode, since Wide_Wide_Character is an Ada 2005 feature.
- 
- package Ada.Strings.UTF_Encoding.Wide_Wide_Strings is
-    pragma Pure (Wide_Wide_Strings);
- 
-    --  The encoding routines take a Wide_Wide_String as input and encode the
-    --  result using the specified UTF encoding method. The result includes a
-    --  BOM if the Output_BOM parameter is set to True.
- 
-    function Encode
-      (Item          : Wide_Wide_String;
-       Output_Scheme : Encoding_Scheme;
-       Output_BOM    : Boolean  := False) return UTF_String;
-    --  Encode Wide_Wide_String using UTF-8, UTF-16LE or UTF-16BE encoding as
-    --  specified by the Output_Scheme parameter.
- 
-    function Encode
-      (Item       : Wide_Wide_String;
-       Output_BOM : Boolean  := False) return UTF_8_String;
-    --  Encode Wide_Wide_String using UTF-8 encoding
- 
-    function Encode
-      (Item       : Wide_Wide_String;
-       Output_BOM : Boolean  := False) return UTF_16_Wide_String;
-    --  Encode Wide_Wide_String using UTF_16 encoding
- 
-    --  The decoding routines take a UTF String as input, and return a decoded
-    --  Wide_String. If the UTF String starts with a BOM that matches the
-    --  encoding method, it is ignored. An incorrect BOM raises Encoding_Error.
- 
-    function Decode
-      (Item         : UTF_String;
-       Input_Scheme : Encoding_Scheme) return Wide_Wide_String;
-    --  The input is encoded in UTF_8, UTF_16LE or UTF_16BE as specified by the
-    --  Input_Scheme parameter. It is decoded and returned as a Wide_Wide_String
-    --  value. Note: a convenient form for Scheme may be Encoding (UTF_String).
- 
-    function Decode
-      (Item : UTF_8_String) return Wide_Wide_String;
-    --  The input is encoded in UTF-8 and returned as a Wide_Wide_String value
- 
-    function Decode
-      (Item : UTF_16_Wide_String) return Wide_Wide_String;
-    --  The input is encoded in UTF-16 and returned as a Wide_String value
- 
- end Ada.Strings.UTF_Encoding.Wide_Wide_Strings;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-suhcin.adb gcc-8.1.0/gcc/ada/a-suhcin.adb
*** gcc-7.3.0/gcc/ada/a-suhcin.adb	Fri Nov  4 10:55:41 2011
--- gcc-8.1.0/gcc/ada/a-suhcin.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,43 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --               ADA.STRINGS.UNBOUNDED.HASH_CASE_INSENSITIVE                --
- --                                                                          --
- --                                B o d y                                   --
- --                                                                          --
- --            Copyright (C) 2011, Free Software Foundation, Inc.            --
- --                                                                          --
- -- GNAT is 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 Ada.Strings.Unbounded.Aux;
- with Ada.Strings.Hash_Case_Insensitive;
- 
- function Ada.Strings.Unbounded.Hash_Case_Insensitive
-   (Key : Unbounded.Unbounded_String)
-   return Containers.Hash_Type
- is
-    S : Aux.Big_String_Access;
-    L : Natural;
- 
- begin
-    Aux.Get_String (Key, S, L);
-    return Ada.Strings.Hash_Case_Insensitive (S (1 .. L));
- end Ada.Strings.Unbounded.Hash_Case_Insensitive;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-suhcin.ads gcc-8.1.0/gcc/ada/a-suhcin.ads
*** gcc-7.3.0/gcc/ada/a-suhcin.ads	Fri Nov  4 10:55:41 2011
--- gcc-8.1.0/gcc/ada/a-suhcin.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,40 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --               ADA.STRINGS.UNBOUNDED.HASH_CASE_INSENSITIVE                --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --            Copyright (C) 2011, Free Software Foundation, 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/>.                                          --
- --                                                                          --
- -- This unit was originally developed by Matthew J Heaney.                  --
- ------------------------------------------------------------------------------
- 
- with Ada.Containers;
- 
- function Ada.Strings.Unbounded.Hash_Case_Insensitive
-   (Key : Unbounded.Unbounded_String)
-   return Containers.Hash_Type;
- 
- pragma Preelaborate (Ada.Strings.Unbounded.Hash_Case_Insensitive);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-sulcin.adb gcc-8.1.0/gcc/ada/a-sulcin.adb
*** gcc-7.3.0/gcc/ada/a-sulcin.adb	Fri Nov  4 10:55:41 2011
--- gcc-8.1.0/gcc/ada/a-sulcin.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,47 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --               ADA.STRINGS.UNBOUNDED.LESS_CASE_INSENSITIVE                --
- --                                                                          --
- --                                B o d y                                   --
- --                                                                          --
- --            Copyright (C) 2011, Free Software Foundation, Inc.            --
- --                                                                          --
- -- GNAT is 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 Ada.Strings.Unbounded.Aux;
- with Ada.Strings.Less_Case_Insensitive;
- 
- function Ada.Strings.Unbounded.Less_Case_Insensitive
-   (Left, Right : Unbounded.Unbounded_String)
-   return Boolean
- is
-    SL, SR : Aux.Big_String_Access;
-    LL, LR : Natural;
- 
- begin
-    Aux.Get_String (Left, SL, LL);
-    Aux.Get_String (Right, SR, LR);
- 
-    return Ada.Strings.Less_Case_Insensitive
-      (Left  => SL (1 .. LL),
-       Right => SR (1 .. LR));
- end Ada.Strings.Unbounded.Less_Case_Insensitive;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-sulcin.ads gcc-8.1.0/gcc/ada/a-sulcin.ads
*** gcc-7.3.0/gcc/ada/a-sulcin.ads	Fri Nov  4 10:55:41 2011
--- gcc-8.1.0/gcc/ada/a-sulcin.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,38 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --               ADA.STRINGS.UNBOUNDED.LESS_CASE_INSENSITIVE                --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --            Copyright (C) 2011, Free Software Foundation, 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/>.                                          --
- --                                                                          --
- -- This unit was originally developed by Matthew J Heaney.                  --
- ------------------------------------------------------------------------------
- 
- function Ada.Strings.Unbounded.Less_Case_Insensitive
-   (Left, Right : Unbounded.Unbounded_String)
-   return Boolean;
- 
- pragma Preelaborate (Ada.Strings.Unbounded.Less_Case_Insensitive);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-suteio-shared.adb gcc-8.1.0/gcc/ada/a-suteio-shared.adb
*** gcc-7.3.0/gcc/ada/a-suteio-shared.adb	Wed Jun 23 12:51:37 2010
--- gcc-8.1.0/gcc/ada/a-suteio-shared.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,132 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --         A D A . S T R I N G S . U N B O U N D E D . T E X T _ I O        --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1997-2010, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Text_IO; use Ada.Text_IO;
- 
- package body Ada.Strings.Unbounded.Text_IO is
- 
-    --------------
-    -- Get_Line --
-    --------------
- 
-    function Get_Line return Unbounded_String is
-       Buffer : String (1 .. 1000);
-       Last   : Natural;
-       Result : Unbounded_String;
- 
-    begin
-       Get_Line (Buffer, Last);
-       Set_Unbounded_String (Result, Buffer (1 .. Last));
- 
-       while Last = Buffer'Last loop
-          Get_Line (Buffer, Last);
-          Append (Result, Buffer (1 .. Last));
-       end loop;
- 
-       return Result;
-    end Get_Line;
- 
-    function Get_Line (File : Ada.Text_IO.File_Type) return Unbounded_String is
-       Buffer : String (1 .. 1000);
-       Last   : Natural;
-       Result : Unbounded_String;
- 
-    begin
-       Get_Line (File, Buffer, Last);
-       Set_Unbounded_String (Result, Buffer (1 .. Last));
- 
-       while Last = Buffer'Last loop
-          Get_Line (File, Buffer, Last);
-          Append (Result, Buffer (1 .. Last));
-       end loop;
- 
-       return Result;
-    end Get_Line;
- 
-    procedure Get_Line (Item : out Unbounded_String) is
-    begin
-       Get_Line (Current_Input, Item);
-    end Get_Line;
- 
-    procedure Get_Line
-      (File : Ada.Text_IO.File_Type;
-       Item : out Unbounded_String)
-    is
-       Buffer : String (1 .. 1000);
-       Last   : Natural;
- 
-    begin
-       Get_Line (File, Buffer, Last);
-       Set_Unbounded_String (Item, Buffer (1 .. Last));
- 
-       while Last = Buffer'Last loop
-          Get_Line (File, Buffer, Last);
-          Append (Item, Buffer (1 .. Last));
-       end loop;
-    end Get_Line;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put (U : Unbounded_String) is
-       UR : constant Shared_String_Access := U.Reference;
- 
-    begin
-       Put (UR.Data (1 .. UR.Last));
-    end Put;
- 
-    procedure Put (File : File_Type; U : Unbounded_String) is
-       UR : constant Shared_String_Access := U.Reference;
- 
-    begin
-       Put (File, UR.Data (1 .. UR.Last));
-    end Put;
- 
-    --------------
-    -- Put_Line --
-    --------------
- 
-    procedure Put_Line (U : Unbounded_String) is
-       UR : constant Shared_String_Access := U.Reference;
- 
-    begin
-       Put_Line (UR.Data (1 .. UR.Last));
-    end Put_Line;
- 
-    procedure Put_Line (File : File_Type; U : Unbounded_String) is
-       UR : constant Shared_String_Access := U.Reference;
- 
-    begin
-       Put_Line (File, UR.Data (1 .. UR.Last));
-    end Put_Line;
- 
- end Ada.Strings.Unbounded.Text_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-suteio.adb gcc-8.1.0/gcc/ada/a-suteio.adb
*** gcc-7.3.0/gcc/ada/a-suteio.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-suteio.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,159 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --         A D A . S T R I N G S . U N B O U N D E D . T E X T _ I O        --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1997-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- --
- -- 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.Text_IO; use Ada.Text_IO;
- 
- package body Ada.Strings.Unbounded.Text_IO is
- 
-    --------------
-    -- Get_Line --
-    --------------
- 
-    function Get_Line return Unbounded_String is
-       Buffer : String (1 .. 1000);
-       Last   : Natural;
-       Str1   : String_Access;
-       Str2   : String_Access;
-       Result : Unbounded_String;
- 
-    begin
-       Get_Line (Buffer, Last);
-       Str1 := new String'(Buffer (1 .. Last));
-       while Last = Buffer'Last loop
-          Get_Line (Buffer, Last);
-          Str2 := new String (1 .. Str1'Last + Last);
-          Str2 (Str1'Range) := Str1.all;
-          Str2 (Str1'Last + 1 .. Str2'Last) := Buffer (1 .. Last);
-          Free (Str1);
-          Str1 := Str2;
-       end loop;
- 
-       Result.Reference := Str1;
-       Result.Last      := Str1'Length;
-       return Result;
-    end Get_Line;
- 
-    function Get_Line (File : Ada.Text_IO.File_Type) return Unbounded_String is
-       Buffer : String (1 .. 1000);
-       Last   : Natural;
-       Str1   : String_Access;
-       Str2   : String_Access;
-       Result : Unbounded_String;
- 
-    begin
-       Get_Line (File, Buffer, Last);
-       Str1 := new String'(Buffer (1 .. Last));
-       while Last = Buffer'Last loop
-          Get_Line (File, Buffer, Last);
-          Str2 := new String (1 .. Str1'Last + Last);
-          Str2 (Str1'Range) := Str1.all;
-          Str2 (Str1'Last + 1 .. Str2'Last) := Buffer (1 .. Last);
-          Free (Str1);
-          Str1 := Str2;
-       end loop;
- 
-       Result.Reference := Str1;
-       Result.Last      := Str1'Length;
-       return Result;
-    end Get_Line;
- 
-    procedure Get_Line (Item : out Unbounded_String) is
-    begin
-       Get_Line (Current_Input, Item);
-    end Get_Line;
- 
-    procedure Get_Line
-      (File : Ada.Text_IO.File_Type;
-       Item : out Unbounded_String)
-    is
-    begin
-       --  We are going to read into the string that is already there and
-       --  allocated. Hopefully it is big enough now, if not, we will extend
-       --  it in the usual manner using Realloc_For_Chunk.
- 
-       --  Make sure we start with at least 80 characters
- 
-       if Item.Reference'Last < 80 then
-          Realloc_For_Chunk (Item, 80);
-       end if;
- 
-       --  Loop to read data, filling current string as far as possible.
-       --  Item.Last holds the number of characters read so far.
- 
-       Item.Last := 0;
-       loop
-          Get_Line
-            (File,
-             Item.Reference (Item.Last + 1 .. Item.Reference'Last),
-             Item.Last);
- 
-          --  If we hit the end of the line before the end of the buffer, then
-          --  we are all done, and the result length is properly set.
- 
-          if Item.Last < Item.Reference'Last then
-             return;
-          end if;
- 
-          --  If not enough room, double it and keep reading
- 
-          Realloc_For_Chunk (Item, Item.Last);
-       end loop;
-    end Get_Line;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put (U : Unbounded_String) is
-    begin
-       Put (U.Reference (1 .. U.Last));
-    end Put;
- 
-    procedure Put (File : File_Type; U : Unbounded_String) is
-    begin
-       Put (File, U.Reference (1 .. U.Last));
-    end Put;
- 
-    --------------
-    -- Put_Line --
-    --------------
- 
-    procedure Put_Line (U : Unbounded_String) is
-    begin
-       Put_Line (U.Reference (1 .. U.Last));
-    end Put_Line;
- 
-    procedure Put_Line (File : File_Type; U : Unbounded_String) is
-    begin
-       Put_Line (File, U.Reference (1 .. U.Last));
-    end Put_Line;
- 
- end Ada.Strings.Unbounded.Text_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-suteio.ads gcc-8.1.0/gcc/ada/a-suteio.ads
*** gcc-7.3.0/gcc/ada/a-suteio.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-suteio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,61 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --         A D A . S T R I N G S . U N B O U N D E D . T E X T _ I O        --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1997-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- --
- -- 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 child package of Ada.Strings.Unbounded provides some specialized
- --  Text_IO routines that work directly with unbounded strings, avoiding the
- --  inefficiencies of access via the standard interface, and also taking
- --  direct advantage of the variable length semantics of these strings.
- 
- with Ada.Text_IO;
- 
- package Ada.Strings.Unbounded.Text_IO is
- 
-    function Get_Line                                return Unbounded_String;
-    function Get_Line (File : Ada.Text_IO.File_Type) return Unbounded_String;
-    --  Reads up to the end of the current line, returning the result
-    --  as an unbounded string of appropriate length. If no File parameter
-    --  is present, input is from Current_Input.
- 
-    procedure Get_Line
-      (File : Ada.Text_IO.File_Type;
-       Item : out Unbounded_String);
-    procedure Get_Line (Item : out Unbounded_String);
-    --  Similar to the above, but in procedure form with an out parameter
- 
-    procedure Put                                    (U : Unbounded_String);
-    procedure Put      (File : Ada.Text_IO.File_Type; U : Unbounded_String);
-    procedure Put_Line                               (U : Unbounded_String);
-    procedure Put_Line (File : Ada.Text_IO.File_Type; U : Unbounded_String);
-    --  These are equivalent to the standard Text_IO routines passed the
-    --  value To_String (U), but operate more efficiently, because the extra
-    --  copy of the argument is avoided.
- 
- end Ada.Strings.Unbounded.Text_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-swbwha.adb gcc-8.1.0/gcc/ada/a-swbwha.adb
*** gcc-7.3.0/gcc/ada/a-swbwha.adb	Mon Jun 22 12:24:57 2009
--- gcc-8.1.0/gcc/ada/a-swbwha.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,41 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --   A D A . S T R I N G S . W I D E _ B O U N D E D . W I D E _ H A S H    --
- --                                                                          --
- --                                B o d y                                   --
- --                                                                          --
- --          Copyright (C) 2004-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- --
- -- 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.String_Hash;
- 
- function Ada.Strings.Wide_Bounded.Wide_Hash
-   (Key : Bounded.Bounded_Wide_String)
-   return Containers.Hash_Type
- is
-    use Ada.Containers;
-    function Hash is new System.String_Hash.Hash
-      (Wide_Character, Wide_String, Hash_Type);
- begin
-    return Hash (Bounded.To_Wide_String (Key));
- end Ada.Strings.Wide_Bounded.Wide_Hash;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-swbwha.ads gcc-8.1.0/gcc/ada/a-swbwha.ads
*** gcc-7.3.0/gcc/ada/a-swbwha.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-swbwha.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,25 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --   A D A . S T R I N G S . W I D E _ B O U N D E D . W I D E _ H A S H    --
- --                                                                          --
- --                                S p e c                                   --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Containers;
- 
- generic
-    with package Bounded is
-      new Ada.Strings.Wide_Bounded.Generic_Bounded_Length (<>);
- 
- function Ada.Strings.Wide_Bounded.Wide_Hash (Key : Bounded.Bounded_Wide_String)
-     return Containers.Hash_Type;
- 
- pragma Preelaborate (Ada.Strings.Wide_Bounded.Wide_Hash);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-swfwha.ads gcc-8.1.0/gcc/ada/a-swfwha.ads
*** gcc-7.3.0/gcc/ada/a-swfwha.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-swfwha.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,22 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --    A D A . S T R I N G S . W I D E _ F I X E D . W I D E _ H A S H       --
- --                                                                          --
- --                                S p e c                                   --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Containers, Ada.Strings.Wide_Hash;
- 
- function Ada.Strings.Wide_Fixed.Wide_Hash
-   (Key : Wide_String) return Containers.Hash_Type
-   renames Ada.Strings.Wide_Hash;
- 
- pragma Pure (Ada.Strings.Wide_Fixed.Wide_Hash);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-swmwco.ads gcc-8.1.0/gcc/ada/a-swmwco.ads
*** gcc-7.3.0/gcc/ada/a-swmwco.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-swmwco.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,450 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- -- A D A . S T R I N G S . W I D E _ M A P S . W I D E _ C O N S T A N T S  --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2009, Free Software Foundation, 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Characters.Wide_Latin_1;
- 
- package Ada.Strings.Wide_Maps.Wide_Constants is
-    pragma Preelaborate;
- 
-    Control_Set           : constant Wide_Maps.Wide_Character_Set;
-    Graphic_Set           : constant Wide_Maps.Wide_Character_Set;
-    Letter_Set            : constant Wide_Maps.Wide_Character_Set;
-    Lower_Set             : constant Wide_Maps.Wide_Character_Set;
-    Upper_Set             : constant Wide_Maps.Wide_Character_Set;
-    Basic_Set             : constant Wide_Maps.Wide_Character_Set;
-    Decimal_Digit_Set     : constant Wide_Maps.Wide_Character_Set;
-    Hexadecimal_Digit_Set : constant Wide_Maps.Wide_Character_Set;
-    Alphanumeric_Set      : constant Wide_Maps.Wide_Character_Set;
-    Special_Graphic_Set   : constant Wide_Maps.Wide_Character_Set;
-    ISO_646_Set           : constant Wide_Maps.Wide_Character_Set;
-    Character_Set         : constant Wide_Maps.Wide_Character_Set;
- 
-    Lower_Case_Map        : constant Wide_Maps.Wide_Character_Mapping;
-    --  Maps to lower case for letters, else identity
- 
-    Upper_Case_Map        : constant Wide_Maps.Wide_Character_Mapping;
-    --  Maps to upper case for letters, else identity
- 
-    Basic_Map             : constant Wide_Maps.Wide_Character_Mapping;
-    --  Maps to basic letter for letters, else identity
- 
- private
-    package W renames Ada.Characters.Wide_Latin_1;
- 
-    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
-       Letter_Ranges'Unrestricted_Access);
- 
-    Lower_Ranges             : aliased constant Wide_Character_Ranges :=
-      (1 => (W.LC_A,                 W.LC_Z),
-       2 => (W.LC_German_Sharp_S,   W.LC_O_Diaeresis),
-       3 => (W.LC_O_Oblique_Stroke, W.LC_Y_Diaeresis));
- 
-    Lower_Set                : constant Wide_Character_Set :=
-      (AF.Controlled with
-       Lower_Ranges'Unrestricted_Access);
- 
-    Upper_Ranges             : aliased constant Wide_Character_Ranges :=
-      (1 => ('A',                   'Z'),
-       2 => (W.UC_A_Grave,          W.UC_O_Diaeresis),
-       3 => (W.UC_O_Oblique_Stroke, W.UC_Icelandic_Thorn));
- 
-    Upper_Set                : constant Wide_Character_Set :=
-      (AF.Controlled with
-       Upper_Ranges'Unrestricted_Access);
- 
-    Basic_Ranges             : aliased constant Wide_Character_Ranges :=
-      (1 => ('A',                   'Z'),
-       2 => (W.LC_A,                W.LC_Z),
-       3 => (W.UC_AE_Diphthong,     W.UC_AE_Diphthong),
-       4 => (W.LC_AE_Diphthong,     W.LC_AE_Diphthong),
-       5 => (W.LC_German_Sharp_S,   W.LC_German_Sharp_S),
-       6 => (W.UC_Icelandic_Thorn,  W.UC_Icelandic_Thorn),
-       7 => (W.LC_Icelandic_Thorn,  W.LC_Icelandic_Thorn),
-       8 => (W.UC_Icelandic_Eth,    W.UC_Icelandic_Eth),
-       9 => (W.LC_Icelandic_Eth,    W.LC_Icelandic_Eth));
- 
-    Basic_Set                : constant Wide_Character_Set :=
-      (AF.Controlled with
-       Basic_Ranges'Unrestricted_Access);
- 
-    Decimal_Digit_Ranges     : aliased constant Wide_Character_Ranges :=
-      (1 => ('0', '9'));
- 
-    Decimal_Digit_Set        : constant Wide_Character_Set :=
-      (AF.Controlled with
-       Decimal_Digit_Ranges'Unrestricted_Access);
- 
-    Hexadecimal_Digit_Ranges : aliased constant Wide_Character_Ranges :=
-      (1 => ('0', '9'),
-       2 => ('A', 'F'),
-       3 => (W.LC_A, W.LC_F));
- 
-    Hexadecimal_Digit_Set    : constant Wide_Character_Set :=
-      (AF.Controlled with
-       Hexadecimal_Digit_Ranges'Unrestricted_Access);
- 
-    Alphanumeric_Ranges      : aliased constant Wide_Character_Ranges :=
-      (1 => ('0',                   '9'),
-       2 => ('A',                   'Z'),
-       3 => (W.LC_A,                W.LC_Z),
-       4 => (W.UC_A_Grave,          W.UC_O_Diaeresis),
-       5 => (W.UC_O_Oblique_Stroke, W.LC_O_Diaeresis),
-       6 => (W.LC_O_Oblique_Stroke, W.LC_Y_Diaeresis));
- 
-    Alphanumeric_Set         : constant Wide_Character_Set :=
-      (AF.Controlled with
-       Alphanumeric_Ranges'Unrestricted_Access);
- 
-    Special_Graphic_Ranges   : aliased constant Wide_Character_Ranges :=
-      (1 => (Wide_Space,            W.Solidus),
-       2 => (W.Colon,               W.Commercial_At),
-       3 => (W.Left_Square_Bracket, W.Grave),
-       4 => (W.Left_Curly_Bracket,  W.Tilde),
-       5 => (W.No_Break_Space,      W.Inverted_Question),
-       6 => (W.Multiplication_Sign, W.Multiplication_Sign),
-       7 => (W.Division_Sign,       W.Division_Sign));
- 
-    Special_Graphic_Set      : constant Wide_Character_Set :=
-      (AF.Controlled with
-       Special_Graphic_Ranges'Unrestricted_Access);
- 
-    ISO_646_Ranges           : aliased constant Wide_Character_Ranges :=
-      (1 => (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 :=
-      (1 => (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" &
-          W.UC_A_Grave                &
-          W.UC_A_Acute                &
-          W.UC_A_Circumflex           &
-          W.UC_A_Tilde                &
-          W.UC_A_Diaeresis            &
-          W.UC_A_Ring                 &
-          W.UC_AE_Diphthong           &
-          W.UC_C_Cedilla              &
-          W.UC_E_Grave                &
-          W.UC_E_Acute                &
-          W.UC_E_Circumflex           &
-          W.UC_E_Diaeresis            &
-          W.UC_I_Grave                &
-          W.UC_I_Acute                &
-          W.UC_I_Circumflex           &
-          W.UC_I_Diaeresis            &
-          W.UC_Icelandic_Eth          &
-          W.UC_N_Tilde                &
-          W.UC_O_Grave                &
-          W.UC_O_Acute                &
-          W.UC_O_Circumflex           &
-          W.UC_O_Tilde                &
-          W.UC_O_Diaeresis            &
-          W.UC_O_Oblique_Stroke       &
-          W.UC_U_Grave                &
-          W.UC_U_Acute                &
-          W.UC_U_Circumflex           &
-          W.UC_U_Diaeresis            &
-          W.UC_Y_Acute                &
-          W.UC_Icelandic_Thorn,
- 
-       Rangev =>
-         "abcdefghijklmnopqrstuvwxyz" &
-          W.LC_A_Grave                &
-          W.LC_A_Acute                &
-          W.LC_A_Circumflex           &
-          W.LC_A_Tilde                &
-          W.LC_A_Diaeresis            &
-          W.LC_A_Ring                 &
-          W.LC_AE_Diphthong           &
-          W.LC_C_Cedilla              &
-          W.LC_E_Grave                &
-          W.LC_E_Acute                &
-          W.LC_E_Circumflex           &
-          W.LC_E_Diaeresis            &
-          W.LC_I_Grave                &
-          W.LC_I_Acute                &
-          W.LC_I_Circumflex           &
-          W.LC_I_Diaeresis            &
-          W.LC_Icelandic_Eth          &
-          W.LC_N_Tilde                &
-          W.LC_O_Grave                &
-          W.LC_O_Acute                &
-          W.LC_O_Circumflex           &
-          W.LC_O_Tilde                &
-          W.LC_O_Diaeresis            &
-          W.LC_O_Oblique_Stroke       &
-          W.LC_U_Grave                &
-          W.LC_U_Acute                &
-          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" &
-          W.LC_A_Grave                &
-          W.LC_A_Acute                &
-          W.LC_A_Circumflex           &
-          W.LC_A_Tilde                &
-          W.LC_A_Diaeresis            &
-          W.LC_A_Ring                 &
-          W.LC_AE_Diphthong           &
-          W.LC_C_Cedilla              &
-          W.LC_E_Grave                &
-          W.LC_E_Acute                &
-          W.LC_E_Circumflex           &
-          W.LC_E_Diaeresis            &
-          W.LC_I_Grave                &
-          W.LC_I_Acute                &
-          W.LC_I_Circumflex           &
-          W.LC_I_Diaeresis            &
-          W.LC_Icelandic_Eth          &
-          W.LC_N_Tilde                &
-          W.LC_O_Grave                &
-          W.LC_O_Acute                &
-          W.LC_O_Circumflex           &
-          W.LC_O_Tilde                &
-          W.LC_O_Diaeresis            &
-          W.LC_O_Oblique_Stroke       &
-          W.LC_U_Grave                &
-          W.LC_U_Acute                &
-          W.LC_U_Circumflex           &
-          W.LC_U_Diaeresis            &
-          W.LC_Y_Acute                &
-          W.LC_Icelandic_Thorn,
- 
-       Rangev =>
-         "ABCDEFGHIJKLMNOPQRSTUVWXYZ" &
-          W.UC_A_Grave                &
-          W.UC_A_Acute                &
-          W.UC_A_Circumflex           &
-          W.UC_A_Tilde                &
-          W.UC_A_Diaeresis            &
-          W.UC_A_Ring                 &
-          W.UC_AE_Diphthong           &
-          W.UC_C_Cedilla              &
-          W.UC_E_Grave                &
-          W.UC_E_Acute                &
-          W.UC_E_Circumflex           &
-          W.UC_E_Diaeresis            &
-          W.UC_I_Grave                &
-          W.UC_I_Acute                &
-          W.UC_I_Circumflex           &
-          W.UC_I_Diaeresis            &
-          W.UC_Icelandic_Eth          &
-          W.UC_N_Tilde                &
-          W.UC_O_Grave                &
-          W.UC_O_Acute                &
-          W.UC_O_Circumflex           &
-          W.UC_O_Tilde                &
-          W.UC_O_Diaeresis            &
-          W.UC_O_Oblique_Stroke       &
-          W.UC_U_Grave                &
-          W.UC_U_Acute                &
-          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          &
-         W.UC_A_Acute          &
-         W.UC_A_Circumflex     &
-         W.UC_A_Tilde          &
-         W.UC_A_Diaeresis      &
-         W.UC_A_Ring           &
-         W.UC_C_Cedilla        &
-         W.UC_E_Grave          &
-         W.UC_E_Acute          &
-         W.UC_E_Circumflex     &
-         W.UC_E_Diaeresis      &
-         W.UC_I_Grave          &
-         W.UC_I_Acute          &
-         W.UC_I_Circumflex     &
-         W.UC_I_Diaeresis      &
-         W.UC_N_Tilde          &
-         W.UC_O_Grave          &
-         W.UC_O_Acute          &
-         W.UC_O_Circumflex     &
-         W.UC_O_Tilde          &
-         W.UC_O_Diaeresis      &
-         W.UC_O_Oblique_Stroke &
-         W.UC_U_Grave          &
-         W.UC_U_Acute          &
-         W.UC_U_Circumflex     &
-         W.UC_U_Diaeresis      &
-         W.UC_Y_Acute          &
-         W.LC_A_Grave          &
-         W.LC_A_Acute          &
-         W.LC_A_Circumflex     &
-         W.LC_A_Tilde          &
-         W.LC_A_Diaeresis      &
-         W.LC_A_Ring           &
-         W.LC_C_Cedilla        &
-         W.LC_E_Grave          &
-         W.LC_E_Acute          &
-         W.LC_E_Circumflex     &
-         W.LC_E_Diaeresis      &
-         W.LC_I_Grave          &
-         W.LC_I_Acute          &
-         W.LC_I_Circumflex     &
-         W.LC_I_Diaeresis      &
-         W.LC_N_Tilde          &
-         W.LC_O_Grave          &
-         W.LC_O_Acute          &
-         W.LC_O_Circumflex     &
-         W.LC_O_Tilde          &
-         W.LC_O_Diaeresis      &
-         W.LC_O_Oblique_Stroke &
-         W.LC_U_Grave          &
-         W.LC_U_Acute          &
-         W.LC_U_Circumflex     &
-         W.LC_U_Diaeresis      &
-         W.LC_Y_Acute          &
-         W.LC_Y_Diaeresis,
- 
-       Rangev =>
-         'A'        &  -- UC_A_Grave
-         'A'        &  -- UC_A_Acute
-         'A'        &  -- UC_A_Circumflex
-         'A'        &  -- UC_A_Tilde
-         'A'        &  -- UC_A_Diaeresis
-         'A'        &  -- UC_A_Ring
-         'C'        &  -- UC_C_Cedilla
-         'E'        &  -- UC_E_Grave
-         'E'        &  -- UC_E_Acute
-         'E'        &  -- UC_E_Circumflex
-         'E'        &  -- UC_E_Diaeresis
-         'I'        &  -- UC_I_Grave
-         'I'        &  -- UC_I_Acute
-         'I'        &  -- UC_I_Circumflex
-         'I'        &  -- UC_I_Diaeresis
-         'N'        &  -- UC_N_Tilde
-         'O'        &  -- UC_O_Grave
-         'O'        &  -- UC_O_Acute
-         'O'        &  -- UC_O_Circumflex
-         'O'        &  -- UC_O_Tilde
-         'O'        &  -- UC_O_Diaeresis
-         'O'        &  -- UC_O_Oblique_Stroke
-         'U'        &  -- UC_U_Grave
-         'U'        &  -- UC_U_Acute
-         'U'        &  -- UC_U_Circumflex
-         'U'        &  -- UC_U_Diaeresis
-         'Y'        &  -- UC_Y_Acute
-         'a'        &  -- LC_A_Grave
-         'a'        &  -- LC_A_Acute
-         'a'        &  -- LC_A_Circumflex
-         'a'        &  -- LC_A_Tilde
-         'a'        &  -- LC_A_Diaeresis
-         'a'        &  -- LC_A_Ring
-         'c'        &  -- LC_C_Cedilla
-         'e'        &  -- LC_E_Grave
-         'e'        &  -- LC_E_Acute
-         'e'        &  -- LC_E_Circumflex
-         'e'        &  -- LC_E_Diaeresis
-         'i'        &  -- LC_I_Grave
-         'i'        &  -- LC_I_Acute
-         'i'        &  -- LC_I_Circumflex
-         'i'        &  -- LC_I_Diaeresis
-         'n'        &  -- LC_N_Tilde
-         'o'        &  -- LC_O_Grave
-         'o'        &  -- LC_O_Acute
-         'o'        &  -- LC_O_Circumflex
-         'o'        &  -- LC_O_Tilde
-         'o'        &  -- LC_O_Diaeresis
-         'o'        &  -- LC_O_Oblique_Stroke
-         'u'        &  -- LC_U_Grave
-         'u'        &  -- LC_U_Acute
-         '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
-       Basic_Mapping'Unrestricted_Access);
- 
- end Ada.Strings.Wide_Maps.Wide_Constants;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-swunau-shared.adb gcc-8.1.0/gcc/ada/a-swunau-shared.adb
*** gcc-7.3.0/gcc/ada/a-swunau-shared.adb	Wed Jun 23 12:51:37 2010
--- gcc-8.1.0/gcc/ada/a-swunau-shared.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,65 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                          GNAT RUN-TIME COMPONENTS                        --
- --                                                                          --
- --        A D A . S T R I N G S . W I D E _ U N B O U N D E D . A U X       --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2010, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 Ada.Strings.Wide_Unbounded.Aux is
- 
-    ---------------------
-    -- Get_Wide_String --
-    ---------------------
- 
-    procedure Get_Wide_String
-      (U : Unbounded_Wide_String;
-       S : out Big_Wide_String_Access;
-       L : out Natural)
-    is
-       X : aliased Big_Wide_String;
-       for X'Address use U.Reference.Data'Address;
-    begin
-       S := X'Unchecked_Access;
-       L := U.Reference.Last;
-    end Get_Wide_String;
- 
-    ---------------------
-    -- Set_Wide_String --
-    ---------------------
- 
-    procedure Set_Wide_String
-      (UP : in out Unbounded_Wide_String;
-       S  : Wide_String_Access)
-    is
-       X : Wide_String_Access := S;
- 
-    begin
-       Set_Unbounded_Wide_String (UP, S.all);
-       Free (X);
-    end Set_Wide_String;
- 
- end Ada.Strings.Wide_Unbounded.Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-swunau.adb gcc-8.1.0/gcc/ada/a-swunau.adb
*** gcc-7.3.0/gcc/ada/a-swunau.adb	Fri Jun 18 12:29:49 2010
--- gcc-8.1.0/gcc/ada/a-swunau.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,65 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                          GNAT RUN-TIME COMPONENTS                        --
- --                                                                          --
- --        A D A . S T R I N G S . W I D E _ U N B O U N D E D . A U X       --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          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- --
- -- 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 Ada.Strings.Wide_Unbounded.Aux is
- 
-    --------------------
-    -- Get_Wide_String --
-    ---------------------
- 
-    procedure Get_Wide_String
-      (U : Unbounded_Wide_String;
-       S : out Big_Wide_String_Access;
-       L : out Natural)
-    is
-       X : aliased Big_Wide_String;
-       for X'Address use U.Reference.all'Address;
- 
-    begin
-       S := X'Unchecked_Access;
-       L := U.Last;
-    end Get_Wide_String;
- 
-    ---------------------
-    -- Set_Wide_String --
-    ---------------------
- 
-    procedure Set_Wide_String
-      (UP : in out Unbounded_Wide_String;
-       S  : Wide_String_Access)
-    is
-    begin
-       Finalize (UP);
-       UP.Reference := S;
-       UP.Last := UP.Reference'Length;
-    end Set_Wide_String;
- 
- end Ada.Strings.Wide_Unbounded.Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-swunau.ads gcc-8.1.0/gcc/ada/a-swunau.ads
*** gcc-7.3.0/gcc/ada/a-swunau.ads	Fri Jun 18 12:29:49 2010
--- gcc-8.1.0/gcc/ada/a-swunau.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,76 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                          GNAT RUN-TIME COMPONENTS                        --
- --                                                                          --
- --        A D A . S T R I N G S . W I D E _ U N B O U N D E D . A U X       --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          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- --
- -- 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 child package of Ada.Strings.Wide_Unbounded provides some specialized
- --  access functions which are intended to allow more efficient use of the
- --  facilities of Ada.Strings.Wide_Unbounded, particularly by other layered
- --  utilities.
- 
- package Ada.Strings.Wide_Unbounded.Aux is
-    pragma Preelaborate;
- 
-    subtype Big_Wide_String is Wide_String (Positive'Range);
-    type Big_Wide_String_Access is access all Big_Wide_String;
- 
-    procedure Get_Wide_String
-      (U : Unbounded_Wide_String;
-       S : out Big_Wide_String_Access;
-       L : out Natural);
-    pragma Inline (Get_Wide_String);
-    --  This procedure returns the internal string pointer used in the
-    --  representation of an unbounded string as well as the actual current
-    --  length (which may be less than S.all'Length because in general there
-    --  can be extra space assigned). The characters of this string may be
-    --  not be modified via the returned pointer,  and are valid only as
-    --  long as the original unbounded string is not accessed or modified.
-    --
-    --  This procedure is much more efficient than the use of To_Wide_String
-    --  since it avoids the need to copy the string. The lower bound of the
-    --  referenced string returned by this call is always one, so the actual
-    --  string data is always accessible as S (1 .. L).
- 
-    procedure Set_Wide_String (UP : out Unbounded_Wide_String; S : Wide_String)
-      renames Set_Unbounded_Wide_String;
-    --  This function sets the string contents of the referenced unbounded
-    --  string to the given string value. It is significantly more efficient
-    --  than the use of To_Unbounded_Wide_String with an assignment, since it
-    --  avoids the necessity of messing with finalization chains. The lower
-    --  bound of the string S is not required to be one.
- 
-    procedure Set_Wide_String
-      (UP : in out Unbounded_Wide_String;
-       S  : Wide_String_Access);
-    pragma Inline (Set_Wide_String);
-    --  This version of Set_Wide_String takes a string access value, rather
-    --  than string. The lower bound of the string value is required to be one,
-    --  and this requirement is not checked.
- 
- end Ada.Strings.Wide_Unbounded.Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-swuwha.adb gcc-8.1.0/gcc/ada/a-swuwha.adb
*** gcc-7.3.0/gcc/ada/a-swuwha.adb	Mon Jun 22 12:24:57 2009
--- gcc-8.1.0/gcc/ada/a-swuwha.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,40 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --  A D A . S T R I N G S . W I D E _ U N B O U N D E D . W I D E _ H A S H --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2004-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- --
- -- 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.String_Hash;
- 
- function Ada.Strings.Wide_Unbounded.Wide_Hash
-   (Key : Unbounded_Wide_String) return Containers.Hash_Type
- is
-    use Ada.Containers;
-    function Hash is new System.String_Hash.Hash
-      (Wide_Character, Wide_String, Hash_Type);
- begin
-    return Hash (To_Wide_String (Key));
- end Ada.Strings.Wide_Unbounded.Wide_Hash;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-swuwha.ads gcc-8.1.0/gcc/ada/a-swuwha.ads
*** gcc-7.3.0/gcc/ada/a-swuwha.ads	Mon Mar 24 10:57:32 2008
--- gcc-8.1.0/gcc/ada/a-swuwha.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,23 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --  A D A . S T R I N G S . W I D E _ U N B O U N D E D . W I D E _ H A S H --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Is this really an RM unit? Doc needed ???
- 
- with Ada.Containers;
- 
- function Ada.Strings.Wide_Unbounded.Wide_Hash
-   (Key : Unbounded_Wide_String) return Containers.Hash_Type;
- 
- pragma Preelaborate (Ada.Strings.Wide_Unbounded.Wide_Hash);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-swuwti-shared.adb gcc-8.1.0/gcc/ada/a-swuwti-shared.adb
*** gcc-7.3.0/gcc/ada/a-swuwti-shared.adb	Wed Jun 23 12:51:37 2010
--- gcc-8.1.0/gcc/ada/a-swuwti-shared.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,134 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                  ADA.STRINGS.WIDE_UNBOUNDED.WIDE_TEXT_IO                 --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1997-2010, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Wide_Text_IO; use Ada.Wide_Text_IO;
- 
- package body Ada.Strings.Wide_Unbounded.Wide_Text_IO is
- 
-    --------------
-    -- Get_Line --
-    --------------
- 
-    function Get_Line return Unbounded_Wide_String is
-       Buffer : Wide_String (1 .. 1000);
-       Last   : Natural;
-       Result : Unbounded_Wide_String;
- 
-    begin
-       Get_Line (Buffer, Last);
-       Set_Unbounded_Wide_String (Result, Buffer (1 .. Last));
- 
-       while Last = Buffer'Last loop
-          Get_Line (Buffer, Last);
-          Append (Result, Buffer (1 .. Last));
-       end loop;
- 
-       return Result;
-    end Get_Line;
- 
-    function Get_Line
-      (File : Ada.Wide_Text_IO.File_Type) return Unbounded_Wide_String
-    is
-       Buffer : Wide_String (1 .. 1000);
-       Last   : Natural;
-       Result : Unbounded_Wide_String;
- 
-    begin
-       Get_Line (File, Buffer, Last);
-       Set_Unbounded_Wide_String (Result, Buffer (1 .. Last));
- 
-       while Last = Buffer'Last loop
-          Get_Line (File, Buffer, Last);
-          Append (Result, Buffer (1 .. Last));
-       end loop;
- 
-       return Result;
-    end Get_Line;
- 
-    procedure Get_Line (Item : out Unbounded_Wide_String) is
-    begin
-       Get_Line (Current_Input, Item);
-    end Get_Line;
- 
-    procedure Get_Line
-      (File : Ada.Wide_Text_IO.File_Type;
-       Item : out Unbounded_Wide_String)
-    is
-       Buffer : Wide_String (1 .. 1000);
-       Last   : Natural;
- 
-    begin
-       Get_Line (File, Buffer, Last);
-       Set_Unbounded_Wide_String (Item, Buffer (1 .. Last));
- 
-       while Last = Buffer'Last loop
-          Get_Line (File, Buffer, Last);
-          Append (Item, Buffer (1 .. Last));
-       end loop;
-    end Get_Line;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put (U : Unbounded_Wide_String) is
-       UR : constant Shared_Wide_String_Access := U.Reference;
- 
-    begin
-       Put (UR.Data (1 .. UR.Last));
-    end Put;
- 
-    procedure Put (File : File_Type; U : Unbounded_Wide_String) is
-       UR : constant Shared_Wide_String_Access := U.Reference;
- 
-    begin
-       Put (File, UR.Data (1 .. UR.Last));
-    end Put;
- 
-    --------------
-    -- Put_Line --
-    --------------
- 
-    procedure Put_Line (U : Unbounded_Wide_String) is
-       UR : constant Shared_Wide_String_Access := U.Reference;
- 
-    begin
-       Put_Line (UR.Data (1 .. UR.Last));
-    end Put_Line;
- 
-    procedure Put_Line (File : File_Type; U : Unbounded_Wide_String) is
-       UR : constant Shared_Wide_String_Access := U.Reference;
- 
-    begin
-       Put_Line (File, UR.Data (1 .. UR.Last));
-    end Put_Line;
- 
- end Ada.Strings.Wide_Unbounded.Wide_Text_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-swuwti.adb gcc-8.1.0/gcc/ada/a-swuwti.adb
*** gcc-7.3.0/gcc/ada/a-swuwti.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-swuwti.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,161 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                  ADA.STRINGS.WIDE_UNBOUNDED.WIDE_TEXT_IO                 --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1997-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- --
- -- 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.Wide_Text_IO; use Ada.Wide_Text_IO;
- 
- package body Ada.Strings.Wide_Unbounded.Wide_Text_IO is
- 
-    --------------
-    -- Get_Line --
-    --------------
- 
-    function Get_Line return Unbounded_Wide_String is
-       Buffer : Wide_String (1 .. 1000);
-       Last   : Natural;
-       Str1   : Wide_String_Access;
-       Str2   : Wide_String_Access;
-       Result : Unbounded_Wide_String;
- 
-    begin
-       Get_Line (Buffer, Last);
-       Str1 := new Wide_String'(Buffer (1 .. Last));
-       while Last = Buffer'Last loop
-          Get_Line (Buffer, Last);
-          Str2 := new Wide_String (1 .. Str1'Last + Last);
-          Str2 (Str1'Range) := Str1.all;
-          Str2 (Str1'Last + 1 .. Str2'Last) := Buffer (1 .. Last);
-          Free (Str1);
-          Str1 := Str2;
-       end loop;
- 
-       Result.Reference := Str1;
-       Result.Last      := Str1'Length;
-       return Result;
-    end Get_Line;
- 
-    function Get_Line
-      (File : Ada.Wide_Text_IO.File_Type) return Unbounded_Wide_String
-    is
-       Buffer : Wide_String (1 .. 1000);
-       Last   : Natural;
-       Str1   : Wide_String_Access;
-       Str2   : Wide_String_Access;
-       Result : Unbounded_Wide_String;
- 
-    begin
-       Get_Line (File, Buffer, Last);
-       Str1 := new Wide_String'(Buffer (1 .. Last));
-       while Last = Buffer'Last loop
-          Get_Line (File, Buffer, Last);
-          Str2 := new Wide_String (1 .. Str1'Last + Last);
-          Str2 (Str1'Range) := Str1.all;
-          Str2 (Str1'Last + 1 .. Str2'Last) := Buffer (1 .. Last);
-          Free (Str1);
-          Str1 := Str2;
-       end loop;
- 
-       Result.Reference := Str1;
-       Result.Last      := Str1'Length;
-       return Result;
-    end Get_Line;
- 
-    procedure Get_Line (Item : out Unbounded_Wide_String) is
-    begin
-       Get_Line (Current_Input, Item);
-    end Get_Line;
- 
-    procedure Get_Line
-      (File : Ada.Wide_Text_IO.File_Type;
-       Item : out Unbounded_Wide_String)
-    is
-    begin
-       --  We are going to read into the string that is already there and
-       --  allocated. Hopefully it is big enough now, if not, we will extend
-       --  it in the usual manner using Realloc_For_Chunk.
- 
-       --  Make sure we start with at least 80 characters
- 
-       if Item.Reference'Last < 80 then
-          Realloc_For_Chunk (Item, 80);
-       end if;
- 
-       --  Loop to read data, filling current string as far as possible.
-       --  Item.Last holds the number of characters read so far.
- 
-       Item.Last := 0;
-       loop
-          Get_Line
-            (File,
-             Item.Reference (Item.Last + 1 .. Item.Reference'Last),
-             Item.Last);
- 
-          --  If we hit the end of the line before the end of the buffer, then
-          --  we are all done, and the result length is properly set.
- 
-          if Item.Last < Item.Reference'Last then
-             return;
-          end if;
- 
-          --  If not enough room, double it and keep reading
- 
-          Realloc_For_Chunk (Item, Item.Last);
-       end loop;
-    end Get_Line;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put (U : Unbounded_Wide_String) is
-    begin
-       Put (U.Reference (1 .. U.Last));
-    end Put;
- 
-    procedure Put (File : File_Type; U : Unbounded_Wide_String) is
-    begin
-       Put (File, U.Reference (1 .. U.Last));
-    end Put;
- 
-    --------------
-    -- Put_Line --
-    --------------
- 
-    procedure Put_Line (U : Unbounded_Wide_String) is
-    begin
-       Put_Line (U.Reference (1 .. U.Last));
-    end Put_Line;
- 
-    procedure Put_Line (File : File_Type; U : Unbounded_Wide_String) is
-    begin
-       Put_Line (File, U.Reference (1 .. U.Last));
-    end Put_Line;
- 
- end Ada.Strings.Wide_Unbounded.Wide_Text_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-swuwti.ads gcc-8.1.0/gcc/ada/a-swuwti.ads
*** gcc-7.3.0/gcc/ada/a-swuwti.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-swuwti.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,69 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                  ADA.STRINGS.WIDE_UNBOUNDED.WIDE_TEXT_IO                 --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1997-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- --
- -- 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 child package of Ada.Strings.Wide_Unbounded provides specialized
- --  Wide_Text_IO routines that work directly with unbounded wide strings,
- --  avoiding the inefficiencies of access via the standard interface, and also
- --  taking direct advantage of the variable length semantics of these strings.
- 
- with Ada.Wide_Text_IO;
- 
- package Ada.Strings.Wide_Unbounded.Wide_Text_IO is
- 
-    function Get_Line
-      return Unbounded_Wide_String;
-    function Get_Line
-      (File : Ada.Wide_Text_IO.File_Type) return Unbounded_Wide_String;
-    --  Reads up to the end of the current line, returning the result
-    --  as an unbounded string of appropriate length. If no File parameter
-    --  is present, input is from Current_Input.
- 
-    procedure Get_Line
-      (File : Ada.Wide_Text_IO.File_Type;
-       Item : out Unbounded_Wide_String);
-    procedure Get_Line (Item : out Unbounded_Wide_String);
-    --  Similar to the above, but in procedure form with an out parameter
- 
-    procedure Put
-      (U : Unbounded_Wide_String);
-    procedure Put
-      (File : Ada.Wide_Text_IO.File_Type;
-       U    : Unbounded_Wide_String);
-    procedure Put_Line
-      (U    : Unbounded_Wide_String);
-    procedure Put_Line
-      (File : Ada.Wide_Text_IO.File_Type;
-       U    : Unbounded_Wide_String);
-    --  These are equivalent to the standard Wide_Text_IO routines passed the
-    --  value To_Wide_String (U), but operate more efficiently, because the
-    --  extra copy of the argument is avoided.
- 
- end Ada.Strings.Wide_Unbounded.Wide_Text_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-synbar-posix.adb gcc-8.1.0/gcc/ada/a-synbar-posix.adb
*** gcc-7.3.0/gcc/ada/a-synbar-posix.adb	Fri Aug  1 10:01:31 2014
--- gcc-8.1.0/gcc/ada/a-synbar-posix.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,111 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --             A D A . S Y N C H R O N O U S _ B A R R I E R S              --
- --                                                                          --
- --                                  B o d y                                 --
- --                                                                          --
- --          Copyright (C) 1992-2014, Free Software Foundation, 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 body of this package using POSIX barriers
- 
- with Interfaces.C; use Interfaces.C;
- 
- package body Ada.Synchronous_Barriers is
- 
-    --------------------
-    -- POSIX barriers --
-    --------------------
- 
-    function pthread_barrier_init
-      (barrier : not null access pthread_barrier_t;
-       attr    : System.Address := System.Null_Address;
-       count   : unsigned) return int;
-    pragma Import (C, pthread_barrier_init, "pthread_barrier_init");
-    --  Initialize barrier with the attributes in attr. The barrier is opened
-    --  when count waiters arrived. If attr is null the default barrier
-    --  attributes are used.
- 
-    function pthread_barrier_destroy
-      (barrier : not null access pthread_barrier_t) return int;
-    pragma Import (C, pthread_barrier_destroy, "pthread_barrier_destroy");
-    --  Destroy a previously dynamically initialized barrier
- 
-    function pthread_barrier_wait
-      (barrier : not null access pthread_barrier_t) return int;
-    pragma Import (C, pthread_barrier_wait, "pthread_barrier_wait");
-    --  Wait on barrier
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    overriding procedure Finalize (Barrier : in out Synchronous_Barrier) is
-       Result : int;
-    begin
-       Result := pthread_barrier_destroy (Barrier.POSIX_Barrier'Access);
-       pragma Assert (Result = 0);
-    end Finalize;
- 
-    overriding procedure Initialize (Barrier : in out Synchronous_Barrier) is
-       Result : int;
-    begin
-       Result :=
-         pthread_barrier_init
-           (barrier => Barrier.POSIX_Barrier'Access,
-            attr    => System.Null_Address,
-            count   => unsigned (Barrier.Release_Threshold));
-       pragma Assert (Result = 0);
-    end Initialize;
- 
-    ----------------------
-    -- Wait_For_Release --
-    ----------------------
- 
-    procedure Wait_For_Release
-      (The_Barrier : in out Synchronous_Barrier;
-       Notified    : out Boolean)
-    is
-       Result : int;
- 
-       PTHREAD_BARRIER_SERIAL_THREAD : constant := -1;
-       --  Value used to indicate the task which receives the notification for
-       --  the barrier open.
- 
-    begin
-       Result :=
-         pthread_barrier_wait
-           (barrier => The_Barrier.POSIX_Barrier'Access);
-       pragma Assert
-         (Result = 0 or else Result = PTHREAD_BARRIER_SERIAL_THREAD);
- 
-       Notified := (Result = PTHREAD_BARRIER_SERIAL_THREAD);
-    end Wait_For_Release;
- 
- end Ada.Synchronous_Barriers;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-synbar-posix.ads gcc-8.1.0/gcc/ada/a-synbar-posix.ads
*** gcc-7.3.0/gcc/ada/a-synbar-posix.ads	Mon Aug 29 11:01:53 2011
--- gcc-8.1.0/gcc/ada/a-synbar-posix.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,84 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --             A D A . S Y N C H R O N O U S _ B A R R I E R S              --
- --                                                                          --
- --                                  S p e c                                 --
- --                                                                          --
- --          Copyright (C) 1992-2011, Free Software Foundation, 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 spec of this package using POSIX barriers
- 
- with System;
- private with Ada.Finalization;
- private with Interfaces.C;
- 
- package Ada.Synchronous_Barriers is
-    pragma Preelaborate (Synchronous_Barriers);
- 
-    subtype Barrier_Limit is Positive range 1 .. Positive'Last;
- 
-    type Synchronous_Barrier (Release_Threshold : Barrier_Limit) is
-       limited private;
- 
-    procedure Wait_For_Release
-      (The_Barrier : in out Synchronous_Barrier;
-       Notified    : out Boolean);
- 
- private
-    --  POSIX barrier data type
- 
-    SIZEOF_PTHREAD_BARRIER_T : constant :=
-      (if System.Word_Size = 64 then 32 else 20);
-    --  Value defined according to the linux definition in pthreadtypes.h. On
-    --  other system, e.g. MIPS IRIX, the object is smaller, so it works
-    --  correctly although we are wasting some space.
- 
-    type pthread_barrier_t_view is (size_based, align_based);
- 
-    type pthread_barrier_t (Kind : pthread_barrier_t_view := size_based) is
-       record
-          case Kind is
-             when size_based =>
-                size : Interfaces.C.char_array (1 .. SIZEOF_PTHREAD_BARRIER_T);
-             when align_based =>
-                align : Interfaces.C.long;
-          end case;
-       end record;
-    pragma Unchecked_Union (pthread_barrier_t);
- 
-    type Synchronous_Barrier (Release_Threshold : Barrier_Limit) is
-      new Ada.Finalization.Limited_Controlled with
-         record
-            POSIX_Barrier : aliased pthread_barrier_t;
-         end record;
- 
-    overriding procedure Initialize (Barrier : in out Synchronous_Barrier);
-    overriding procedure Finalize   (Barrier : in out Synchronous_Barrier);
- end Ada.Synchronous_Barriers;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-synbar.adb gcc-8.1.0/gcc/ada/a-synbar.adb
*** gcc-7.3.0/gcc/ada/a-synbar.adb	Mon Aug 29 11:12:17 2011
--- gcc-8.1.0/gcc/ada/a-synbar.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,78 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --             A D A . S Y N C H R O N O U S _ B A R R I E R S              --
- --                                                                          --
- --                                  B o d y                                 --
- --                                                                          --
- --          Copyright (C) 1992-2011, Free Software Foundation, 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 body Ada.Synchronous_Barriers is
- 
-    protected body Synchronous_Barrier is
- 
-       --  The condition "Wait'Count = Release_Threshold" opens the barrier when
-       --  the required number of tasks is reached. The condition "Keep_Open"
-       --  leaves the barrier open while there are queued tasks. While there are
-       --  tasks in the queue no new task will be queued (no new protected
-       --  action can be started on a protected object while another protected
-       --  action on the same protected object is underway, RM 9.5.1 (4)),
-       --  guaranteeing that the barrier will remain open only for those tasks
-       --  already inside the queue when the barrier was open.
- 
-       entry Wait (Notified : out Boolean)
-         when Keep_Open or else Wait'Count = Release_Threshold
-       is
-       begin
-          --  If we are executing the entry it means that the required number of
-          --  tasks have been queued in the entry. Keep_Open barrier will remain
-          --  true until all queued tasks are out.
- 
-          Keep_Open := Wait'Count > 0;
- 
-          --  The last released task will close the barrier and get the Notified
-          --  token.
- 
-          Notified := Wait'Count = 0;
-       end Wait;
-    end Synchronous_Barrier;
- 
-    ----------------------
-    -- Wait_For_Release --
-    ----------------------
- 
-    procedure Wait_For_Release
-      (The_Barrier : in out Synchronous_Barrier;
-       Notified    : out Boolean)
-    is
-    begin
-       The_Barrier.Wait (Notified);
-    end Wait_For_Release;
- 
- end Ada.Synchronous_Barriers;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-synbar.ads gcc-8.1.0/gcc/ada/a-synbar.ads
*** gcc-7.3.0/gcc/ada/a-synbar.ads	Mon Aug 29 11:01:53 2011
--- gcc-8.1.0/gcc/ada/a-synbar.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,54 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --             A D A . S Y N C H R O N O U S _ B A R R I E R S              --
- --                                                                          --
- --                                  S p e c                                 --
- --                                                                          --
- --          Copyright (C) 1992-2011, Free Software Foundation, 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 Ada.Synchronous_Barriers is
-    pragma Preelaborate (Synchronous_Barriers);
- 
-    subtype Barrier_Limit is Positive range 1 .. Positive'Last;
- 
-    type Synchronous_Barrier (Release_Threshold : Barrier_Limit) is
-       limited private;
- 
-    procedure Wait_For_Release
-      (The_Barrier : in out Synchronous_Barrier;
-       Notified    : out Boolean);
- 
- private
-    protected type Synchronous_Barrier (Release_Threshold : Barrier_Limit) is
-       entry Wait (Notified : out Boolean);
-    private
-       Keep_Open : Boolean := False;
-    end Synchronous_Barrier;
- end Ada.Synchronous_Barriers;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-sytaco.adb gcc-8.1.0/gcc/ada/a-sytaco.adb
*** gcc-7.3.0/gcc/ada/a-sytaco.adb	Tue Oct 20 12:24:52 2015
--- gcc-8.1.0/gcc/ada/a-sytaco.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,106 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --         A D A . S Y N C H R O N O U S _ T A S K _ C O N T R O L          --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          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- --
- -- 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.Exceptions;
- 
- with System.Tasking;
- with System.Task_Primitives.Operations;
- 
- package body Ada.Synchronous_Task_Control with
-   SPARK_Mode => Off
- is
- 
-    ----------------
-    -- Initialize --
-    ----------------
- 
-    procedure Initialize (S : in out Suspension_Object) is
-    begin
-       System.Task_Primitives.Operations.Initialize (S.SO);
-    end Initialize;
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    procedure Finalize (S : in out Suspension_Object) is
-    begin
-       System.Task_Primitives.Operations.Finalize (S.SO);
-    end Finalize;
- 
-    -------------------
-    -- Current_State --
-    -------------------
- 
-    function Current_State (S : Suspension_Object) return Boolean is
-    begin
-       return System.Task_Primitives.Operations.Current_State (S.SO);
-    end Current_State;
- 
-    ---------------
-    -- Set_False --
-    ---------------
- 
-    procedure Set_False (S : in out Suspension_Object) is
-    begin
-       System.Task_Primitives.Operations.Set_False (S.SO);
-    end Set_False;
- 
-    --------------
-    -- Set_True --
-    --------------
- 
-    procedure Set_True (S : in out Suspension_Object) is
-    begin
-       System.Task_Primitives.Operations.Set_True (S.SO);
-    end Set_True;
- 
-    ------------------------
-    -- Suspend_Until_True --
-    ------------------------
- 
-    procedure Suspend_Until_True (S : in out Suspension_Object) is
-    begin
-       --  This is a potentially blocking (see ARM D.10, par. 10), so that
-       --  if pragma Detect_Blocking is active then Program_Error must be
-       --  raised if this operation is called from a protected action.
- 
-       if System.Tasking.Detect_Blocking
-         and then System.Tasking.Self.Common.Protected_Action_Nesting > 0
-       then
-          Ada.Exceptions.Raise_Exception
-            (Program_Error'Identity, "potentially blocking operation");
-       end if;
- 
-       System.Task_Primitives.Operations.Suspend_Until_True (S.SO);
-    end Suspend_Until_True;
- 
- end Ada.Synchronous_Task_Control;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-sytaco.ads gcc-8.1.0/gcc/ada/a-sytaco.ads
*** gcc-7.3.0/gcc/ada/a-sytaco.ads	Mon Apr 18 09:22:50 2016
--- gcc-8.1.0/gcc/ada/a-sytaco.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,94 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --         A D A . S Y N C H R O N O U S _ T A S K _ C O N T R O L          --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2015, Free Software Foundation, 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with System.Task_Primitives;
- 
- with Ada.Finalization;
- with Ada.Task_Identification;
- 
- package Ada.Synchronous_Task_Control with
-   SPARK_Mode
- is
-    pragma Preelaborate;
-    --  In accordance with Ada 2005 AI-362
- 
-    type Suspension_Object is limited private with
-      Default_Initial_Condition;
- 
-    procedure Set_True (S : in out Suspension_Object) with
-      Global  => null,
-      Depends => (S    => null,
-                  null => S);
- 
-    procedure Set_False (S : in out Suspension_Object) with
-      Global  => null,
-      Depends => (S    => null,
-                  null => S);
- 
-    function Current_State (S : Suspension_Object) return Boolean with
-      Volatile_Function,
-      Global => Ada.Task_Identification.Tasking_State;
- 
-    procedure Suspend_Until_True (S : in out Suspension_Object) with
-      Global  => null,
-      Depends => (S    => null,
-                  null => S);
- 
- private
-    pragma SPARK_Mode (Off);
- 
-    procedure Initialize (S : in out Suspension_Object);
-    --  Initialization for Suspension_Object
- 
-    procedure Finalize (S : in out Suspension_Object);
-    --  Finalization for Suspension_Object
- 
-    type Suspension_Object is
-      new Ada.Finalization.Limited_Controlled with
-    record
-       SO : System.Task_Primitives.Suspension_Object;
-       --  Use low-level suspension objects so that the synchronization
-       --  functionality provided by this object can be achieved using
-       --  efficient operating system primitives.
-    end record;
- 
-    pragma Inline (Set_True);
-    pragma Inline (Set_False);
-    pragma Inline (Current_State);
-    pragma Inline (Suspend_Until_True);
-    pragma Inline (Initialize);
-    pragma Inline (Finalize);
- 
- end Ada.Synchronous_Task_Control;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-szbzha.adb gcc-8.1.0/gcc/ada/a-szbzha.adb
*** gcc-7.3.0/gcc/ada/a-szbzha.adb	Mon Jun 22 12:24:57 2009
--- gcc-8.1.0/gcc/ada/a-szbzha.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,41 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --              ADA.STRINGS.WIDE_WIDE_BOUNDED.WIDE_WIDE_HASH                --
- --                                                                          --
- --                                B o d y                                   --
- --                                                                          --
- --          Copyright (C) 2004-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- --
- -- 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.String_Hash;
- 
- function Ada.Strings.Wide_Wide_Bounded.Wide_Wide_Hash
-   (Key : Bounded.Bounded_Wide_Wide_String)
-   return Containers.Hash_Type
- is
-    use Ada.Containers;
-    function Hash is new System.String_Hash.Hash
-      (Wide_Wide_Character, Wide_Wide_String, Hash_Type);
- begin
-    return Hash (Bounded.To_Wide_Wide_String (Key));
- end Ada.Strings.Wide_Wide_Bounded.Wide_Wide_Hash;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-szbzha.ads gcc-8.1.0/gcc/ada/a-szbzha.ads
*** gcc-7.3.0/gcc/ada/a-szbzha.ads	Mon Mar 24 10:57:32 2008
--- gcc-8.1.0/gcc/ada/a-szbzha.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,28 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --              ADA.STRINGS.WIDE_WIDE_BOUNDED.WIDE_WIDE_HASH                --
- --                                                                          --
- --                                S p e c                                   --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Is this really an RM unit? doc needed ???
- 
- with Ada.Containers;
- 
- generic
-    with package Bounded is
-      new Ada.Strings.Wide_Wide_Bounded.Generic_Bounded_Length (<>);
- 
- function Ada.Strings.Wide_Wide_Bounded.Wide_Wide_Hash
-   (Key : Bounded.Bounded_Wide_Wide_String)
-   return Containers.Hash_Type;
- 
- pragma Preelaborate (Ada.Strings.Wide_Wide_Bounded.Wide_Wide_Hash);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-szfzha.ads gcc-8.1.0/gcc/ada/a-szfzha.ads
*** gcc-7.3.0/gcc/ada/a-szfzha.ads	Tue Jun 23 09:49:38 2009
--- gcc-8.1.0/gcc/ada/a-szfzha.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,24 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --        A D A . S T R I N G S . W I D E _ W I D E _ F I X E D .           --
- --                      W I D E _ W I D E _ H A S H                         --
- --                                                                          --
- --                                S p e c                                   --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Containers;
- with Ada.Strings.Wide_Wide_Hash;
- 
- function Ada.Strings.Wide_Wide_Fixed.Wide_Wide_Hash
-  (Key : Wide_Wide_String) return Containers.Hash_Type
-  renames Ada.Strings.Wide_Wide_Hash;
- 
- pragma Pure (Ada.Strings.Wide_Wide_Fixed.Wide_Wide_Hash);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-szmzco.ads gcc-8.1.0/gcc/ada/a-szmzco.ads
*** gcc-7.3.0/gcc/ada/a-szmzco.ads	Fri Aug  1 08:32:27 2014
--- gcc-8.1.0/gcc/ada/a-szmzco.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,450 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --              ADA.STRINGS.WIDE_WIDE_MAPS.WIDE_WIDE_CONSTANTS              --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2014, Free Software Foundation, 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Characters.Wide_Wide_Latin_1;
- 
- package Ada.Strings.Wide_Wide_Maps.Wide_Wide_Constants is
-    pragma Preelaborate;
- 
-    Control_Set           : constant Wide_Wide_Maps.Wide_Wide_Character_Set;
-    Graphic_Set           : constant Wide_Wide_Maps.Wide_Wide_Character_Set;
-    Letter_Set            : constant Wide_Wide_Maps.Wide_Wide_Character_Set;
-    Lower_Set             : constant Wide_Wide_Maps.Wide_Wide_Character_Set;
-    Upper_Set             : constant Wide_Wide_Maps.Wide_Wide_Character_Set;
-    Basic_Set             : constant Wide_Wide_Maps.Wide_Wide_Character_Set;
-    Decimal_Digit_Set     : constant Wide_Wide_Maps.Wide_Wide_Character_Set;
-    Hexadecimal_Digit_Set : constant Wide_Wide_Maps.Wide_Wide_Character_Set;
-    Alphanumeric_Set      : constant Wide_Wide_Maps.Wide_Wide_Character_Set;
-    Special_Graphic_Set   : constant Wide_Wide_Maps.Wide_Wide_Character_Set;
-    ISO_646_Set           : constant Wide_Wide_Maps.Wide_Wide_Character_Set;
-    Character_Set         : constant Wide_Wide_Maps.Wide_Wide_Character_Set;
- 
-    Lower_Case_Map        : constant Wide_Wide_Maps.Wide_Wide_Character_Mapping;
-    --  Maps to lower case for letters, else identity
- 
-    Upper_Case_Map        : constant Wide_Wide_Maps.Wide_Wide_Character_Mapping;
-    --  Maps to upper case for letters, else identity
- 
-    Basic_Map             : constant Wide_Wide_Maps.Wide_Wide_Character_Mapping;
-    --  Maps to basic letter for letters, else identity
- 
- private
-    package W renames Ada.Characters.Wide_Wide_Latin_1;
- 
-    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
-       Letter_Ranges'Unrestricted_Access);
- 
-    Lower_Ranges             : aliased constant Wide_Wide_Character_Ranges :=
-      (1 => (W.LC_A,                 W.LC_Z),
-       2 => (W.LC_German_Sharp_S,   W.LC_O_Diaeresis),
-       3 => (W.LC_O_Oblique_Stroke, W.LC_Y_Diaeresis));
- 
-    Lower_Set                : constant Wide_Wide_Character_Set :=
-      (AF.Controlled with
-       Lower_Ranges'Unrestricted_Access);
- 
-    Upper_Ranges             : aliased constant Wide_Wide_Character_Ranges :=
-      (1 => ('A',                   'Z'),
-       2 => (W.UC_A_Grave,          W.UC_O_Diaeresis),
-       3 => (W.UC_O_Oblique_Stroke, W.UC_Icelandic_Thorn));
- 
-    Upper_Set                : constant Wide_Wide_Character_Set :=
-      (AF.Controlled with
-       Upper_Ranges'Unrestricted_Access);
- 
-    Basic_Ranges             : aliased constant Wide_Wide_Character_Ranges :=
-      (1 => ('A',                   'Z'),
-       2 => (W.LC_A,                W.LC_Z),
-       3 => (W.UC_AE_Diphthong,     W.UC_AE_Diphthong),
-       4 => (W.LC_AE_Diphthong,     W.LC_AE_Diphthong),
-       5 => (W.LC_German_Sharp_S,   W.LC_German_Sharp_S),
-       6 => (W.UC_Icelandic_Thorn,  W.UC_Icelandic_Thorn),
-       7 => (W.LC_Icelandic_Thorn,  W.LC_Icelandic_Thorn),
-       8 => (W.UC_Icelandic_Eth,    W.UC_Icelandic_Eth),
-       9 => (W.LC_Icelandic_Eth,    W.LC_Icelandic_Eth));
- 
-    Basic_Set                : constant Wide_Wide_Character_Set :=
-      (AF.Controlled with
-       Basic_Ranges'Unrestricted_Access);
- 
-    Decimal_Digit_Ranges     : aliased constant Wide_Wide_Character_Ranges :=
-      (1 => ('0', '9'));
- 
-    Decimal_Digit_Set        : constant Wide_Wide_Character_Set :=
-      (AF.Controlled with
-       Decimal_Digit_Ranges'Unrestricted_Access);
- 
-    Hexadecimal_Digit_Ranges : aliased constant Wide_Wide_Character_Ranges :=
-      (1 => ('0', '9'),
-       2 => ('A', 'F'),
-       3 => (W.LC_A, W.LC_F));
- 
-    Hexadecimal_Digit_Set    : constant Wide_Wide_Character_Set :=
-      (AF.Controlled with
-       Hexadecimal_Digit_Ranges'Unrestricted_Access);
- 
-    Alphanumeric_Ranges      : aliased constant Wide_Wide_Character_Ranges :=
-      (1 => ('0',                   '9'),
-       2 => ('A',                   'Z'),
-       3 => (W.LC_A,                W.LC_Z),
-       4 => (W.UC_A_Grave,          W.UC_O_Diaeresis),
-       5 => (W.UC_O_Oblique_Stroke, W.LC_O_Diaeresis),
-       6 => (W.LC_O_Oblique_Stroke, W.LC_Y_Diaeresis));
- 
-    Alphanumeric_Set         : constant Wide_Wide_Character_Set :=
-      (AF.Controlled with
-       Alphanumeric_Ranges'Unrestricted_Access);
- 
-    Special_Graphic_Ranges   : aliased constant Wide_Wide_Character_Ranges :=
-      (1 => (Wide_Wide_Space,            W.Solidus),
-       2 => (W.Colon,               W.Commercial_At),
-       3 => (W.Left_Square_Bracket, W.Grave),
-       4 => (W.Left_Curly_Bracket,  W.Tilde),
-       5 => (W.No_Break_Space,      W.Inverted_Question),
-       6 => (W.Multiplication_Sign, W.Multiplication_Sign),
-       7 => (W.Division_Sign,       W.Division_Sign));
- 
-    Special_Graphic_Set      : constant Wide_Wide_Character_Set :=
-      (AF.Controlled with
-       Special_Graphic_Ranges'Unrestricted_Access);
- 
-    ISO_646_Ranges           : aliased constant Wide_Wide_Character_Ranges :=
-      (1 => (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 :=
-      (1 => (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" &
-          W.UC_A_Grave                &
-          W.UC_A_Acute                &
-          W.UC_A_Circumflex           &
-          W.UC_A_Tilde                &
-          W.UC_A_Diaeresis            &
-          W.UC_A_Ring                 &
-          W.UC_AE_Diphthong           &
-          W.UC_C_Cedilla              &
-          W.UC_E_Grave                &
-          W.UC_E_Acute                &
-          W.UC_E_Circumflex           &
-          W.UC_E_Diaeresis            &
-          W.UC_I_Grave                &
-          W.UC_I_Acute                &
-          W.UC_I_Circumflex           &
-          W.UC_I_Diaeresis            &
-          W.UC_Icelandic_Eth          &
-          W.UC_N_Tilde                &
-          W.UC_O_Grave                &
-          W.UC_O_Acute                &
-          W.UC_O_Circumflex           &
-          W.UC_O_Tilde                &
-          W.UC_O_Diaeresis            &
-          W.UC_O_Oblique_Stroke       &
-          W.UC_U_Grave                &
-          W.UC_U_Acute                &
-          W.UC_U_Circumflex           &
-          W.UC_U_Diaeresis            &
-          W.UC_Y_Acute                &
-          W.UC_Icelandic_Thorn,
- 
-       Rangev =>
-         "abcdefghijklmnopqrstuvwxyz" &
-          W.LC_A_Grave                &
-          W.LC_A_Acute                &
-          W.LC_A_Circumflex           &
-          W.LC_A_Tilde                &
-          W.LC_A_Diaeresis            &
-          W.LC_A_Ring                 &
-          W.LC_AE_Diphthong           &
-          W.LC_C_Cedilla              &
-          W.LC_E_Grave                &
-          W.LC_E_Acute                &
-          W.LC_E_Circumflex           &
-          W.LC_E_Diaeresis            &
-          W.LC_I_Grave                &
-          W.LC_I_Acute                &
-          W.LC_I_Circumflex           &
-          W.LC_I_Diaeresis            &
-          W.LC_Icelandic_Eth          &
-          W.LC_N_Tilde                &
-          W.LC_O_Grave                &
-          W.LC_O_Acute                &
-          W.LC_O_Circumflex           &
-          W.LC_O_Tilde                &
-          W.LC_O_Diaeresis            &
-          W.LC_O_Oblique_Stroke       &
-          W.LC_U_Grave                &
-          W.LC_U_Acute                &
-          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" &
-          W.LC_A_Grave                &
-          W.LC_A_Acute                &
-          W.LC_A_Circumflex           &
-          W.LC_A_Tilde                &
-          W.LC_A_Diaeresis            &
-          W.LC_A_Ring                 &
-          W.LC_AE_Diphthong           &
-          W.LC_C_Cedilla              &
-          W.LC_E_Grave                &
-          W.LC_E_Acute                &
-          W.LC_E_Circumflex           &
-          W.LC_E_Diaeresis            &
-          W.LC_I_Grave                &
-          W.LC_I_Acute                &
-          W.LC_I_Circumflex           &
-          W.LC_I_Diaeresis            &
-          W.LC_Icelandic_Eth          &
-          W.LC_N_Tilde                &
-          W.LC_O_Grave                &
-          W.LC_O_Acute                &
-          W.LC_O_Circumflex           &
-          W.LC_O_Tilde                &
-          W.LC_O_Diaeresis            &
-          W.LC_O_Oblique_Stroke       &
-          W.LC_U_Grave                &
-          W.LC_U_Acute                &
-          W.LC_U_Circumflex           &
-          W.LC_U_Diaeresis            &
-          W.LC_Y_Acute                &
-          W.LC_Icelandic_Thorn,
- 
-       Rangev =>
-         "ABCDEFGHIJKLMNOPQRSTUVWXYZ" &
-          W.UC_A_Grave                &
-          W.UC_A_Acute                &
-          W.UC_A_Circumflex           &
-          W.UC_A_Tilde                &
-          W.UC_A_Diaeresis            &
-          W.UC_A_Ring                 &
-          W.UC_AE_Diphthong           &
-          W.UC_C_Cedilla              &
-          W.UC_E_Grave                &
-          W.UC_E_Acute                &
-          W.UC_E_Circumflex           &
-          W.UC_E_Diaeresis            &
-          W.UC_I_Grave                &
-          W.UC_I_Acute                &
-          W.UC_I_Circumflex           &
-          W.UC_I_Diaeresis            &
-          W.UC_Icelandic_Eth          &
-          W.UC_N_Tilde                &
-          W.UC_O_Grave                &
-          W.UC_O_Acute                &
-          W.UC_O_Circumflex           &
-          W.UC_O_Tilde                &
-          W.UC_O_Diaeresis            &
-          W.UC_O_Oblique_Stroke       &
-          W.UC_U_Grave                &
-          W.UC_U_Acute                &
-          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          &
-         W.UC_A_Acute          &
-         W.UC_A_Circumflex     &
-         W.UC_A_Tilde          &
-         W.UC_A_Diaeresis      &
-         W.UC_A_Ring           &
-         W.UC_C_Cedilla        &
-         W.UC_E_Grave          &
-         W.UC_E_Acute          &
-         W.UC_E_Circumflex     &
-         W.UC_E_Diaeresis      &
-         W.UC_I_Grave          &
-         W.UC_I_Acute          &
-         W.UC_I_Circumflex     &
-         W.UC_I_Diaeresis      &
-         W.UC_N_Tilde          &
-         W.UC_O_Grave          &
-         W.UC_O_Acute          &
-         W.UC_O_Circumflex     &
-         W.UC_O_Tilde          &
-         W.UC_O_Diaeresis      &
-         W.UC_O_Oblique_Stroke &
-         W.UC_U_Grave          &
-         W.UC_U_Acute          &
-         W.UC_U_Circumflex     &
-         W.UC_U_Diaeresis      &
-         W.UC_Y_Acute          &
-         W.LC_A_Grave          &
-         W.LC_A_Acute          &
-         W.LC_A_Circumflex     &
-         W.LC_A_Tilde          &
-         W.LC_A_Diaeresis      &
-         W.LC_A_Ring           &
-         W.LC_C_Cedilla        &
-         W.LC_E_Grave          &
-         W.LC_E_Acute          &
-         W.LC_E_Circumflex     &
-         W.LC_E_Diaeresis      &
-         W.LC_I_Grave          &
-         W.LC_I_Acute          &
-         W.LC_I_Circumflex     &
-         W.LC_I_Diaeresis      &
-         W.LC_N_Tilde          &
-         W.LC_O_Grave          &
-         W.LC_O_Acute          &
-         W.LC_O_Circumflex     &
-         W.LC_O_Tilde          &
-         W.LC_O_Diaeresis      &
-         W.LC_O_Oblique_Stroke &
-         W.LC_U_Grave          &
-         W.LC_U_Acute          &
-         W.LC_U_Circumflex     &
-         W.LC_U_Diaeresis      &
-         W.LC_Y_Acute          &
-         W.LC_Y_Diaeresis,
- 
-       Rangev =>
-         'A'        &  -- UC_A_Grave
-         'A'        &  -- UC_A_Acute
-         'A'        &  -- UC_A_Circumflex
-         'A'        &  -- UC_A_Tilde
-         'A'        &  -- UC_A_Diaeresis
-         'A'        &  -- UC_A_Ring
-         'C'        &  -- UC_C_Cedilla
-         'E'        &  -- UC_E_Grave
-         'E'        &  -- UC_E_Acute
-         'E'        &  -- UC_E_Circumflex
-         'E'        &  -- UC_E_Diaeresis
-         'I'        &  -- UC_I_Grave
-         'I'        &  -- UC_I_Acute
-         'I'        &  -- UC_I_Circumflex
-         'I'        &  -- UC_I_Diaeresis
-         'N'        &  -- UC_N_Tilde
-         'O'        &  -- UC_O_Grave
-         'O'        &  -- UC_O_Acute
-         'O'        &  -- UC_O_Circumflex
-         'O'        &  -- UC_O_Tilde
-         'O'        &  -- UC_O_Diaeresis
-         'O'        &  -- UC_O_Oblique_Stroke
-         'U'        &  -- UC_U_Grave
-         'U'        &  -- UC_U_Acute
-         'U'        &  -- UC_U_Circumflex
-         'U'        &  -- UC_U_Diaeresis
-         'Y'        &  -- UC_Y_Acute
-         'a'        &  -- LC_A_Grave
-         'a'        &  -- LC_A_Acute
-         'a'        &  -- LC_A_Circumflex
-         'a'        &  -- LC_A_Tilde
-         'a'        &  -- LC_A_Diaeresis
-         'a'        &  -- LC_A_Ring
-         'c'        &  -- LC_C_Cedilla
-         'e'        &  -- LC_E_Grave
-         'e'        &  -- LC_E_Acute
-         'e'        &  -- LC_E_Circumflex
-         'e'        &  -- LC_E_Diaeresis
-         'i'        &  -- LC_I_Grave
-         'i'        &  -- LC_I_Acute
-         'i'        &  -- LC_I_Circumflex
-         'i'        &  -- LC_I_Diaeresis
-         'n'        &  -- LC_N_Tilde
-         'o'        &  -- LC_O_Grave
-         'o'        &  -- LC_O_Acute
-         'o'        &  -- LC_O_Circumflex
-         'o'        &  -- LC_O_Tilde
-         'o'        &  -- LC_O_Diaeresis
-         'o'        &  -- LC_O_Oblique_Stroke
-         'u'        &  -- LC_U_Grave
-         'u'        &  -- LC_U_Acute
-         '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
-       Basic_Mapping'Unrestricted_Access);
- 
- end Ada.Strings.Wide_Wide_Maps.Wide_Wide_Constants;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-szunau-shared.adb gcc-8.1.0/gcc/ada/a-szunau-shared.adb
*** gcc-7.3.0/gcc/ada/a-szunau-shared.adb	Wed Jun 23 12:51:37 2010
--- gcc-8.1.0/gcc/ada/a-szunau-shared.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,65 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                          GNAT RUN-TIME COMPONENTS                        --
- --                                                                          --
- --   A D A . S T R I N G S . W I D E _ W I D E _ U N B O U N D E D . A U X  --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2010, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 Ada.Strings.Wide_Wide_Unbounded.Aux is
- 
-    --------------------------
-    -- Get_Wide_Wide_String --
-    --------------------------
- 
-    procedure Get_Wide_Wide_String
-      (U : Unbounded_Wide_Wide_String;
-       S : out Big_Wide_Wide_String_Access;
-       L : out Natural)
-    is
-       X : aliased Big_Wide_Wide_String;
-       for X'Address use U.Reference.Data'Address;
-    begin
-       S := X'Unchecked_Access;
-       L := U.Reference.Last;
-    end Get_Wide_Wide_String;
- 
-    --------------------------
-    -- Set_Wide_Wide_String --
-    --------------------------
- 
-    procedure Set_Wide_Wide_String
-      (UP : in out Unbounded_Wide_Wide_String;
-       S  : Wide_Wide_String_Access)
-    is
-       X : Wide_Wide_String_Access := S;
- 
-    begin
-       Set_Unbounded_Wide_Wide_String (UP, S.all);
-       Free (X);
-    end Set_Wide_Wide_String;
- 
- end Ada.Strings.Wide_Wide_Unbounded.Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-szunau.adb gcc-8.1.0/gcc/ada/a-szunau.adb
*** gcc-7.3.0/gcc/ada/a-szunau.adb	Fri Jun 18 12:29:49 2010
--- gcc-8.1.0/gcc/ada/a-szunau.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,65 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                          GNAT RUN-TIME COMPONENTS                        --
- --                                                                          --
- --   A D A . S T R I N G S . W I D E _ W I D E _ U N B O U N D E D . A U X  --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          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- --
- -- 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 Ada.Strings.Wide_Wide_Unbounded.Aux is
- 
-    --------------------------
-    -- Get_Wide_Wide_String --
-    --------------------------
- 
-    procedure Get_Wide_Wide_String
-      (U : Unbounded_Wide_Wide_String;
-       S : out Big_Wide_Wide_String_Access;
-       L : out Natural)
-    is
-       X : aliased Big_Wide_Wide_String;
-       for X'Address use U.Reference.all'Address;
- 
-    begin
-       S := X'Unchecked_Access;
-       L := U.Last;
-    end Get_Wide_Wide_String;
- 
-    --------------------------
-    -- Set_Wide_Wide_String --
-    --------------------------
- 
-    procedure Set_Wide_Wide_String
-      (UP : in out Unbounded_Wide_Wide_String;
-       S  : Wide_Wide_String_Access)
-    is
-    begin
-       Finalize (UP);
-       UP.Reference := S;
-       UP.Last := UP.Reference'Length;
-    end Set_Wide_Wide_String;
- 
- end Ada.Strings.Wide_Wide_Unbounded.Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-szunau.ads gcc-8.1.0/gcc/ada/a-szunau.ads
*** gcc-7.3.0/gcc/ada/a-szunau.ads	Fri Jun 18 12:29:49 2010
--- gcc-8.1.0/gcc/ada/a-szunau.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,78 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                          GNAT RUN-TIME COMPONENTS                        --
- --                                                                          --
- --   A D A . S T R I N G S . W I D E _ W I D E _ U N B O U N D E D . A U X  --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          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- --
- -- 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 child package of Ada.Strings.Wide_Wide_Unbounded provides some
- --  specialized access functions which are intended to allow more efficient
- --  use of the facilities of Ada.Strings.Wide_Wide_Unbounded, particularly by
- --  other layered utilities.
- 
- package Ada.Strings.Wide_Wide_Unbounded.Aux is
-    pragma Preelaborate;
- 
-    subtype Big_Wide_Wide_String is Wide_Wide_String (Positive);
-    type Big_Wide_Wide_String_Access is access all Big_Wide_Wide_String;
- 
-    procedure Get_Wide_Wide_String
-      (U : Unbounded_Wide_Wide_String;
-       S : out Big_Wide_Wide_String_Access;
-       L : out Natural);
-    pragma Inline (Get_Wide_Wide_String);
-    --  This procedure returns the internal string pointer used in the
-    --  representation of an unbounded string as well as the actual current
-    --  length (which may be less than S.all'Length because in general there
-    --  can be extra space assigned). The characters of this string may be
-    --  not be modified via the returned pointer,  and are valid only as
-    --  long as the original unbounded string is not accessed or modified.
-    --
-    --  This procedure is more efficient than the use of To_Wide_Wide_String
-    --  since it avoids the need to copy the string. The lower bound of the
-    --  referenced string returned by this call is always one, so the actual
-    --  string data is always accessible as S (1 .. L).
- 
-    procedure Set_Wide_Wide_String
-      (UP : out Unbounded_Wide_Wide_String;
-       S  : Wide_Wide_String)
-       renames Set_Unbounded_Wide_Wide_String;
-    --  This function sets the string contents of the referenced unbounded
-    --  string to the given string value. It is significantly more efficient
-    --  than the use of To_Unbounded_Wide_Wide_String with an assignment, since
-    --  it avoids the necessity of messing with finalization chains. The lower
-    --  bound of the string S is not required to be one.
- 
-    procedure Set_Wide_Wide_String
-      (UP : in out Unbounded_Wide_Wide_String;
-       S  : Wide_Wide_String_Access);
-    pragma Inline (Set_Wide_Wide_String);
-    --  This version of Set_Wide_Wide_String takes a string access value, rather
-    --  than string. The lower bound of the string value is required to be one,
-    --  and this requirement is not checked.
- 
- end Ada.Strings.Wide_Wide_Unbounded.Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-szuzha.adb gcc-8.1.0/gcc/ada/a-szuzha.adb
*** gcc-7.3.0/gcc/ada/a-szuzha.adb	Mon Jun 22 12:24:57 2009
--- gcc-8.1.0/gcc/ada/a-szuzha.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,40 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --  A D A . S T R I N G S . W I D E _ U N B O U N D E D . W I D E _ H A S H --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2004-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- --
- -- 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.String_Hash;
- 
- function Ada.Strings.Wide_Wide_Unbounded.Wide_Wide_Hash
-   (Key : Unbounded_Wide_Wide_String) return Containers.Hash_Type
- is
-    use Ada.Containers;
-    function Hash is new System.String_Hash.Hash
-      (Wide_Wide_Character, Wide_Wide_String, Hash_Type);
- begin
-    return Hash (To_Wide_Wide_String (Key));
- end Ada.Strings.Wide_Wide_Unbounded.Wide_Wide_Hash;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-szuzha.ads gcc-8.1.0/gcc/ada/a-szuzha.ads
*** gcc-7.3.0/gcc/ada/a-szuzha.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-szuzha.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,21 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --  A D A . S T R I N G S . W I D E _ U N B O U N D E D . W I D E _ H A S H --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Containers;
- 
- function Ada.Strings.Wide_Wide_Unbounded.Wide_Wide_Hash
-   (Key : Unbounded_Wide_Wide_String) return Containers.Hash_Type;
- 
- pragma Preelaborate (Ada.Strings.Wide_Wide_Unbounded.Wide_Wide_Hash);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-szuzti-shared.adb gcc-8.1.0/gcc/ada/a-szuzti-shared.adb
*** gcc-7.3.0/gcc/ada/a-szuzti-shared.adb	Wed Jun 23 12:51:37 2010
--- gcc-8.1.0/gcc/ada/a-szuzti-shared.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,135 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                  ADA.STRINGS.WIDE_UNBOUNDED.WIDE_TEXT_IO                 --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1997-2010, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Wide_Wide_Text_IO; use Ada.Wide_Wide_Text_IO;
- 
- package body Ada.Strings.Wide_Wide_Unbounded.Wide_Wide_Text_IO is
- 
-    --------------
-    -- Get_Line --
-    --------------
- 
-    function Get_Line return Unbounded_Wide_Wide_String is
-       Buffer : Wide_Wide_String (1 .. 1000);
-       Last   : Natural;
-       Result : Unbounded_Wide_Wide_String;
- 
-    begin
-       Get_Line (Buffer, Last);
-       Set_Unbounded_Wide_Wide_String (Result, Buffer (1 .. Last));
- 
-       while Last = Buffer'Last loop
-          Get_Line (Buffer, Last);
-          Append (Result, Buffer (1 .. Last));
-       end loop;
- 
-       return Result;
-    end Get_Line;
- 
-    function Get_Line
-      (File : Ada.Wide_Wide_Text_IO.File_Type)
-       return Unbounded_Wide_Wide_String
-    is
-       Buffer : Wide_Wide_String (1 .. 1000);
-       Last   : Natural;
-       Result : Unbounded_Wide_Wide_String;
- 
-    begin
-       Get_Line (File, Buffer, Last);
-       Set_Unbounded_Wide_Wide_String (Result, Buffer (1 .. Last));
- 
-       while Last = Buffer'Last loop
-          Get_Line (File, Buffer, Last);
-          Append (Result, Buffer (1 .. Last));
-       end loop;
- 
-       return Result;
-    end Get_Line;
- 
-    procedure Get_Line (Item : out Unbounded_Wide_Wide_String) is
-    begin
-       Get_Line (Current_Input, Item);
-    end Get_Line;
- 
-    procedure Get_Line
-      (File : Ada.Wide_Wide_Text_IO.File_Type;
-       Item : out Unbounded_Wide_Wide_String)
-    is
-       Buffer : Wide_Wide_String (1 .. 1000);
-       Last   : Natural;
- 
-    begin
-       Get_Line (File, Buffer, Last);
-       Set_Unbounded_Wide_Wide_String (Item, Buffer (1 .. Last));
- 
-       while Last = Buffer'Last loop
-          Get_Line (File, Buffer, Last);
-          Append (Item, Buffer (1 .. Last));
-       end loop;
-    end Get_Line;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put (U : Unbounded_Wide_Wide_String) is
-       UR : constant Shared_Wide_Wide_String_Access := U.Reference;
- 
-    begin
-       Put (UR.Data (1 .. UR.Last));
-    end Put;
- 
-    procedure Put (File : File_Type; U : Unbounded_Wide_Wide_String) is
-       UR : constant Shared_Wide_Wide_String_Access := U.Reference;
- 
-    begin
-       Put (File, UR.Data (1 .. UR.Last));
-    end Put;
- 
-    --------------
-    -- Put_Line --
-    --------------
- 
-    procedure Put_Line (U : Unbounded_Wide_Wide_String) is
-       UR : constant Shared_Wide_Wide_String_Access := U.Reference;
- 
-    begin
-       Put_Line (UR.Data (1 .. UR.Last));
-    end Put_Line;
- 
-    procedure Put_Line (File : File_Type; U : Unbounded_Wide_Wide_String) is
-       UR : constant Shared_Wide_Wide_String_Access := U.Reference;
- 
-    begin
-       Put_Line (File, UR.Data (1 .. UR.Last));
-    end Put_Line;
- 
- end Ada.Strings.Wide_Wide_Unbounded.Wide_Wide_Text_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-szuzti.adb gcc-8.1.0/gcc/ada/a-szuzti.adb
*** gcc-7.3.0/gcc/ada/a-szuzti.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-szuzti.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,162 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --             ADA.STRINGS.WIDE_WIDE_UNBOUNDED.WIDE_WIDE_TEXT_IO            --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1997-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- --
- -- 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.Wide_Wide_Text_IO; use Ada.Wide_Wide_Text_IO;
- 
- package body Ada.Strings.Wide_Wide_Unbounded.Wide_Wide_Text_IO is
- 
-    --------------
-    -- Get_Line --
-    --------------
- 
-    function Get_Line return Unbounded_Wide_Wide_String is
-       Buffer : Wide_Wide_String (1 .. 1000);
-       Last   : Natural;
-       Str1   : Wide_Wide_String_Access;
-       Str2   : Wide_Wide_String_Access;
-       Result : Unbounded_Wide_Wide_String;
- 
-    begin
-       Get_Line (Buffer, Last);
-       Str1 := new Wide_Wide_String'(Buffer (1 .. Last));
-       while Last = Buffer'Last loop
-          Get_Line (Buffer, Last);
-          Str2 := new Wide_Wide_String (1 .. Str1'Last + Last);
-          Str2 (Str1'Range) := Str1.all;
-          Str2 (Str1'Last + 1 .. Str2'Last) := Buffer (1 .. Last);
-          Free (Str1);
-          Str1 := Str2;
-       end loop;
- 
-       Result.Reference := Str1;
-       Result.Last      := Str1'Length;
-       return Result;
-    end Get_Line;
- 
-    function Get_Line
-      (File : Ada.Wide_Wide_Text_IO.File_Type) return Unbounded_Wide_Wide_String
-    is
-       Buffer : Wide_Wide_String (1 .. 1000);
-       Last   : Natural;
-       Str1   : Wide_Wide_String_Access;
-       Str2   : Wide_Wide_String_Access;
-       Result : Unbounded_Wide_Wide_String;
- 
-    begin
-       Get_Line (File, Buffer, Last);
-       Str1 := new Wide_Wide_String'(Buffer (1 .. Last));
- 
-       while Last = Buffer'Last loop
-          Get_Line (File, Buffer, Last);
-          Str2 := new Wide_Wide_String (1 .. Str1'Last + Last);
-          Str2 (Str1'Range) := Str1.all;
-          Str2 (Str1'Last + 1 .. Str2'Last) := Buffer (1 .. Last);
-          Free (Str1);
-          Str1 := Str2;
-       end loop;
- 
-       Result.Reference := Str1;
-       Result.Last      := Str1'Length;
-       return Result;
-    end Get_Line;
- 
-    procedure Get_Line (Item : out Unbounded_Wide_Wide_String) is
-    begin
-       Get_Line (Current_Input, Item);
-    end Get_Line;
- 
-    procedure Get_Line
-      (File : Ada.Wide_Wide_Text_IO.File_Type;
-       Item : out Unbounded_Wide_Wide_String)
-    is
-    begin
-       --  We are going to read into the string that is already there and
-       --  allocated. Hopefully it is big enough now, if not, we will extend
-       --  it in the usual manner using Realloc_For_Chunk.
- 
-       --  Make sure we start with at least 80 characters
- 
-       if Item.Reference'Last < 80 then
-          Realloc_For_Chunk (Item, 80);
-       end if;
- 
-       --  Loop to read data, filling current string as far as possible.
-       --  Item.Last holds the number of characters read so far.
- 
-       Item.Last := 0;
-       loop
-          Get_Line
-            (File,
-             Item.Reference (Item.Last + 1 .. Item.Reference'Last),
-             Item.Last);
- 
-          --  If we hit the end of the line before the end of the buffer, then
-          --  we are all done, and the result length is properly set.
- 
-          if Item.Last < Item.Reference'Last then
-             return;
-          end if;
- 
-          --  If not enough room, double it and keep reading
- 
-          Realloc_For_Chunk (Item, Item.Last);
-       end loop;
-    end Get_Line;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put (U : Unbounded_Wide_Wide_String) is
-    begin
-       Put (U.Reference (1 .. U.Last));
-    end Put;
- 
-    procedure Put (File : File_Type; U : Unbounded_Wide_Wide_String) is
-    begin
-       Put (File, U.Reference (1 .. U.Last));
-    end Put;
- 
-    --------------
-    -- Put_Line --
-    --------------
- 
-    procedure Put_Line (U : Unbounded_Wide_Wide_String) is
-    begin
-       Put_Line (U.Reference (1 .. U.Last));
-    end Put_Line;
- 
-    procedure Put_Line (File : File_Type; U : Unbounded_Wide_Wide_String) is
-    begin
-       Put_Line (File, U.Reference (1 .. U.Last));
-    end Put_Line;
- 
- end Ada.Strings.Wide_Wide_Unbounded.Wide_Wide_Text_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-szuzti.ads gcc-8.1.0/gcc/ada/a-szuzti.ads
*** gcc-7.3.0/gcc/ada/a-szuzti.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-szuzti.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,71 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --             ADA.STRINGS.WIDE_WIDE_UNBOUNDED.WIDE_WIDE_TEXT_IO            --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1997-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- --
- -- 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 child package of Ada.Strings.Wide_Wide_Unbounded provides specialized
- --  Wide_Wide_Text_IO routines that work directly with unbounded wide wide
- --  strings, avoiding the inefficiencies of access via the standard interface,
- --  and also taking direct advantage of the variable length semantics of these
- --  strings.
- 
- with Ada.Wide_Wide_Text_IO;
- 
- package Ada.Strings.Wide_Wide_Unbounded.Wide_Wide_Text_IO is
- 
-    function Get_Line
-      return Unbounded_Wide_Wide_String;
-    function Get_Line
-      (File : Ada.Wide_Wide_Text_IO.File_Type)
-       return Unbounded_Wide_Wide_String;
-    --  Reads up to the end of the current line, returning the result
-    --  as an unbounded string of appropriate length. If no File parameter
-    --  is present, input is from Current_Input.
- 
-    procedure Get_Line
-      (File : Ada.Wide_Wide_Text_IO.File_Type;
-       Item : out Unbounded_Wide_Wide_String);
-    procedure Get_Line (Item : out Unbounded_Wide_Wide_String);
-    --  Similar to the above, but in procedure form with an out parameter
- 
-    procedure Put
-      (U : Unbounded_Wide_Wide_String);
-    procedure Put
-      (File : Ada.Wide_Wide_Text_IO.File_Type;
-       U    : Unbounded_Wide_Wide_String);
-    procedure Put_Line
-      (U    : Unbounded_Wide_Wide_String);
-    procedure Put_Line
-      (File : Ada.Wide_Wide_Text_IO.File_Type;
-       U    : Unbounded_Wide_Wide_String);
-    --  These are equivalent to the standard Wide_Wide_Text_IO routines passed
-    --  the value To_Wide_Wide_String (U), but operate more efficiently,
-    --  because the extra copy of the argument is avoided.
- 
- end Ada.Strings.Wide_Wide_Unbounded.Wide_Wide_Text_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-tags.adb gcc-8.1.0/gcc/ada/a-tags.adb
*** gcc-7.3.0/gcc/ada/a-tags.adb	Wed Oct 12 12:59:57 2016
--- gcc-8.1.0/gcc/ada/a-tags.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,1085 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                             A D A . T A G S                              --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Exceptions;
- with Ada.Unchecked_Conversion;
- 
- with System.HTable;
- with System.Storage_Elements; use System.Storage_Elements;
- with System.WCh_Con;          use System.WCh_Con;
- with System.WCh_StW;          use System.WCh_StW;
- 
- pragma Elaborate (System.HTable);
- --  Elaborate needed instead of Elaborate_All to avoid elaboration cycles
- --  when polling is turned on. This is safe because HTable doesn't do anything
- --  at elaboration time; it just contains a generic package we want to
- --  instantiate.
- 
- package body Ada.Tags is
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    function CW_Membership (Obj_Tag : Tag; Typ_Tag : Tag) return Boolean;
-    --  Given the tag of an object and the tag associated to a type, return
-    --  true if Obj is in Typ'Class.
- 
-    function Get_External_Tag (T : Tag) return System.Address;
-    --  Returns address of a null terminated string containing the external name
- 
-    function Is_Primary_DT (T : Tag) return Boolean;
-    --  Given a tag returns True if it has the signature of a primary dispatch
-    --  table.  This is Inline_Always since it is called from other Inline_
-    --  Always subprograms where we want no out of line code to be generated.
- 
-    function IW_Membership
-      (Descendant_TSD : Type_Specific_Data_Ptr;
-       T              : Tag) return Boolean;
-    --  Subsidiary function of IW_Membership and CW_Membership which factorizes
-    --  the functionality needed to check if a given descendant implements an
-    --  interface tag T.
- 
-    function Length (Str : Cstring_Ptr) return Natural;
-    --  Length of string represented by the given pointer (treating the string
-    --  as a C-style string, which is Nul terminated). See comment in body
-    --  explaining why we cannot use the normal strlen built-in.
- 
-    function OSD (T : Tag) return Object_Specific_Data_Ptr;
-    --  Ada 2005 (AI-251): Given a pointer T to a secondary dispatch table,
-    --  retrieve the address of the record containing the Object Specific
-    --  Data table.
- 
-    function SSD (T : Tag) return Select_Specific_Data_Ptr;
-    --  Ada 2005 (AI-251): Given a pointer T to a dispatch Table, retrieves the
-    --  address of the record containing the Select Specific Data in T's TSD.
- 
-    pragma Inline_Always (CW_Membership);
-    pragma Inline_Always (Get_External_Tag);
-    pragma Inline_Always (Is_Primary_DT);
-    pragma Inline_Always (OSD);
-    pragma Inline_Always (SSD);
- 
-    --  Unchecked conversions
- 
-    function To_Address is
-      new Unchecked_Conversion (Cstring_Ptr, System.Address);
- 
-    function To_Cstring_Ptr is
-      new Unchecked_Conversion (System.Address, Cstring_Ptr);
- 
-    --  Disable warnings on possible aliasing problem
- 
-    function To_Tag is
-      new Unchecked_Conversion (Integer_Address, Tag);
- 
-    function To_Addr_Ptr is
-       new Ada.Unchecked_Conversion (System.Address, Addr_Ptr);
- 
-    function To_Address is
-      new Ada.Unchecked_Conversion (Tag, System.Address);
- 
-    function To_Dispatch_Table_Ptr is
-       new Ada.Unchecked_Conversion (Tag, Dispatch_Table_Ptr);
- 
-    function To_Dispatch_Table_Ptr is
-       new Ada.Unchecked_Conversion (System.Address, Dispatch_Table_Ptr);
- 
-    function To_Object_Specific_Data_Ptr is
-      new Ada.Unchecked_Conversion (System.Address, Object_Specific_Data_Ptr);
- 
-    function To_Tag_Ptr is
-      new Ada.Unchecked_Conversion (System.Address, Tag_Ptr);
- 
-    function To_Type_Specific_Data_Ptr is
-      new Ada.Unchecked_Conversion (System.Address, Type_Specific_Data_Ptr);
- 
-    -------------------------------
-    -- Inline_Always Subprograms --
-    -------------------------------
- 
-    --  Inline_always subprograms must be placed before their first call to
-    --  avoid defeating the frontend inlining mechanism and thus ensure the
-    --  generation of their correct debug info.
- 
-    -------------------
-    -- CW_Membership --
-    -------------------
- 
-    --  Canonical implementation of Classwide Membership corresponding to:
- 
-    --     Obj in Typ'Class
- 
-    --  Each dispatch table contains a reference to a table of ancestors (stored
-    --  in the first part of the Tags_Table) and a count of the level of
-    --  inheritance "Idepth".
- 
-    --  Obj is in Typ'Class if Typ'Tag is in the table of ancestors that are
-    --  contained in the dispatch table referenced by Obj'Tag . Knowing the
-    --  level of inheritance of both types, this can be computed in constant
-    --  time by the formula:
- 
-    --   TSD (Obj'tag).Tags_Table (TSD (Obj'tag).Idepth - TSD (Typ'tag).Idepth)
-    --     = Typ'tag
- 
-    function CW_Membership (Obj_Tag : Tag; Typ_Tag : Tag) return Boolean is
-       Obj_TSD_Ptr : constant Addr_Ptr :=
-         To_Addr_Ptr (To_Address (Obj_Tag) - DT_Typeinfo_Ptr_Size);
-       Typ_TSD_Ptr : constant Addr_Ptr :=
-         To_Addr_Ptr (To_Address (Typ_Tag) - DT_Typeinfo_Ptr_Size);
-       Obj_TSD     : constant Type_Specific_Data_Ptr :=
-         To_Type_Specific_Data_Ptr (Obj_TSD_Ptr.all);
-       Typ_TSD     : constant Type_Specific_Data_Ptr :=
-         To_Type_Specific_Data_Ptr (Typ_TSD_Ptr.all);
-       Pos         : constant Integer := Obj_TSD.Idepth - Typ_TSD.Idepth;
-    begin
-       return Pos >= 0 and then Obj_TSD.Tags_Table (Pos) = Typ_Tag;
-    end CW_Membership;
- 
-    ----------------------
-    -- Get_External_Tag --
-    ----------------------
- 
-    function Get_External_Tag (T : Tag) return System.Address 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);
-    begin
-       return To_Address (TSD.External_Tag);
-    end Get_External_Tag;
- 
-    -------------------
-    -- Is_Primary_DT --
-    -------------------
- 
-    function Is_Primary_DT (T : Tag) return Boolean is
-    begin
-       return DT (T).Signature = Primary_DT;
-    end Is_Primary_DT;
- 
-    ---------
-    -- OSD --
-    ---------
- 
-    function OSD (T : Tag) return Object_Specific_Data_Ptr is
-       OSD_Ptr : constant Addr_Ptr :=
-                   To_Addr_Ptr (To_Address (T) - DT_Typeinfo_Ptr_Size);
-    begin
-       return To_Object_Specific_Data_Ptr (OSD_Ptr.all);
-    end OSD;
- 
-    ---------
-    -- SSD --
-    ---------
- 
-    function SSD (T : Tag) return Select_Specific_Data_Ptr 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);
-    begin
-       return TSD.SSD;
-    end SSD;
- 
-    -------------------------
-    -- External_Tag_HTable --
-    -------------------------
- 
-    type HTable_Headers is range 1 .. 64;
- 
-    --  The following internal package defines the routines used for the
-    --  instantiation of a new System.HTable.Static_HTable (see below). See
-    --  spec in g-htable.ads for details of usage.
- 
-    package HTable_Subprograms is
-       procedure Set_HT_Link (T : Tag; Next : Tag);
-       function  Get_HT_Link (T : Tag) return Tag;
-       function Hash (F : System.Address) return HTable_Headers;
-       function Equal (A, B : System.Address) return Boolean;
-    end HTable_Subprograms;
- 
-    package External_Tag_HTable is new System.HTable.Static_HTable (
-      Header_Num => HTable_Headers,
-      Element    => Dispatch_Table,
-      Elmt_Ptr   => Tag,
-      Null_Ptr   => null,
-      Set_Next   => HTable_Subprograms.Set_HT_Link,
-      Next       => HTable_Subprograms.Get_HT_Link,
-      Key        => System.Address,
-      Get_Key    => Get_External_Tag,
-      Hash       => HTable_Subprograms.Hash,
-      Equal      => HTable_Subprograms.Equal);
- 
-    ------------------------
-    -- HTable_Subprograms --
-    ------------------------
- 
-    --  Bodies of routines for hash table instantiation
- 
-    package body HTable_Subprograms is
- 
-       -----------
-       -- Equal --
-       -----------
- 
-       function Equal (A, B : System.Address) return Boolean is
-          Str1 : constant Cstring_Ptr := To_Cstring_Ptr (A);
-          Str2 : constant Cstring_Ptr := To_Cstring_Ptr (B);
-          J    : Integer;
-       begin
-          J := 1;
-          loop
-             if Str1 (J) /= Str2 (J) then
-                return False;
-             elsif Str1 (J) = ASCII.NUL then
-                return True;
-             else
-                J := J + 1;
-             end if;
-          end loop;
-       end Equal;
- 
-       -----------------
-       -- Get_HT_Link --
-       -----------------
- 
-       function Get_HT_Link (T : Tag) return Tag 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);
-       begin
-          return TSD.HT_Link.all;
-       end Get_HT_Link;
- 
-       ----------
-       -- Hash --
-       ----------
- 
-       function Hash (F : System.Address) return HTable_Headers is
-          function H is new System.HTable.Hash (HTable_Headers);
-          Str : constant Cstring_Ptr    := To_Cstring_Ptr (F);
-          Res : constant HTable_Headers := H (Str (1 .. Length (Str)));
-       begin
-          return Res;
-       end Hash;
- 
-       -----------------
-       -- Set_HT_Link --
-       -----------------
- 
-       procedure Set_HT_Link (T : Tag; Next : Tag) 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);
-       begin
-          TSD.HT_Link.all := Next;
-       end Set_HT_Link;
- 
-    end HTable_Subprograms;
- 
-    ------------------
-    -- Base_Address --
-    ------------------
- 
-    function Base_Address (This : System.Address) return System.Address is
-    begin
-       return This - Offset_To_Top (This);
-    end Base_Address;
- 
-    ---------------
-    -- Check_TSD --
-    ---------------
- 
-    procedure Check_TSD (TSD : Type_Specific_Data_Ptr) is
-       T : Tag;
- 
-       E_Tag_Len : constant Integer := Length (TSD.External_Tag);
-       E_Tag     : String (1 .. E_Tag_Len);
-       for E_Tag'Address use TSD.External_Tag.all'Address;
-       pragma Import (Ada, E_Tag);
- 
-       Dup_Ext_Tag : constant String := "duplicated external tag """;
- 
-    begin
-       --  Verify that the external tag of this TSD is not registered in the
-       --  runtime hash table.
- 
-       T := External_Tag_HTable.Get (To_Address (TSD.External_Tag));
- 
-       if T /= null then
- 
-          --  Avoid concatenation, as it is not allowed in no run time mode
- 
-          declare
-             Msg : String (1 .. Dup_Ext_Tag'Length + E_Tag_Len + 1);
-          begin
-             Msg (1 .. Dup_Ext_Tag'Length) := Dup_Ext_Tag;
-             Msg (Dup_Ext_Tag'Length + 1 .. Dup_Ext_Tag'Length + E_Tag_Len) :=
-               E_Tag;
-             Msg (Msg'Last) := '"';
-             raise Program_Error with Msg;
-          end;
-       end if;
-    end Check_TSD;
- 
-    --------------------
-    -- Descendant_Tag --
-    --------------------
- 
-    function Descendant_Tag (External : String; Ancestor : Tag) return Tag is
-       Int_Tag : constant Tag := Internal_Tag (External);
-    begin
-       if not Is_Descendant_At_Same_Level (Int_Tag, Ancestor) then
-          raise Tag_Error;
-       else
-          return Int_Tag;
-       end if;
-    end Descendant_Tag;
- 
-    --------------
-    -- Displace --
-    --------------
- 
-    function Displace (This : System.Address; T : Tag) return System.Address is
-       Iface_Table : Interface_Data_Ptr;
-       Obj_Base    : System.Address;
-       Obj_DT      : Dispatch_Table_Ptr;
-       Obj_DT_Tag  : Tag;
- 
-    begin
-       if System."=" (This, System.Null_Address) then
-          return System.Null_Address;
-       end if;
- 
-       Obj_Base    := Base_Address (This);
-       Obj_DT_Tag  := To_Tag_Ptr (Obj_Base).all;
-       Obj_DT      := DT (To_Tag_Ptr (Obj_Base).all);
-       Iface_Table := To_Type_Specific_Data_Ptr (Obj_DT.TSD).Interfaces_Table;
- 
-       if Iface_Table /= null then
-          for Id in 1 .. Iface_Table.Nb_Ifaces loop
-             if Iface_Table.Ifaces_Table (Id).Iface_Tag = T then
- 
-                --  Case of Static value of Offset_To_Top
- 
-                if Iface_Table.Ifaces_Table (Id).Static_Offset_To_Top then
-                   Obj_Base := Obj_Base +
-                     Iface_Table.Ifaces_Table (Id).Offset_To_Top_Value;
- 
-                --  Otherwise call the function generated by the expander to
-                --  provide the value.
- 
-                else
-                   Obj_Base := Obj_Base +
-                     Iface_Table.Ifaces_Table (Id).Offset_To_Top_Func.all
-                       (Obj_Base);
-                end if;
- 
-                return Obj_Base;
-             end if;
-          end loop;
-       end if;
- 
-       --  Check if T is an immediate ancestor. This is required to handle
-       --  conversion of class-wide interfaces to tagged types.
- 
-       if CW_Membership (Obj_DT_Tag, T) then
-          return Obj_Base;
-       end if;
- 
-       --  If the object does not implement the interface we must raise CE
- 
-       raise Constraint_Error with "invalid interface conversion";
-    end Displace;
- 
-    --------
-    -- DT --
-    --------
- 
-    function DT (T : Tag) return Dispatch_Table_Ptr is
-       Offset : constant SSE.Storage_Offset :=
-                  To_Dispatch_Table_Ptr (T).Prims_Ptr'Position;
-    begin
-       return To_Dispatch_Table_Ptr (To_Address (T) - Offset);
-    end DT;
- 
-    -------------------
-    -- IW_Membership --
-    -------------------
- 
-    function IW_Membership
-      (Descendant_TSD : Type_Specific_Data_Ptr;
-       T              : Tag) return Boolean
-    is
-       Iface_Table : Interface_Data_Ptr;
- 
-    begin
-       Iface_Table := Descendant_TSD.Interfaces_Table;
- 
-       if Iface_Table /= null then
-          for Id in 1 .. Iface_Table.Nb_Ifaces loop
-             if Iface_Table.Ifaces_Table (Id).Iface_Tag = T then
-                return True;
-             end if;
-          end loop;
-       end if;
- 
-       --  Look for the tag in the ancestor tags table. This is required for:
-       --     Iface_CW in Typ'Class
- 
-       for Id in 0 .. Descendant_TSD.Idepth loop
-          if Descendant_TSD.Tags_Table (Id) = T then
-             return True;
-          end if;
-       end loop;
- 
-       return False;
-    end IW_Membership;
- 
-    -------------------
-    -- IW_Membership --
-    -------------------
- 
-    --  Canonical implementation of Classwide Membership corresponding to:
- 
-    --     Obj in Iface'Class
- 
-    --  Each dispatch table contains a table with the tags of all the
-    --  implemented interfaces.
- 
-    --  Obj is in Iface'Class if Iface'Tag is found in the table of interfaces
-    --  that are contained in the dispatch table referenced by Obj'Tag.
- 
-    function IW_Membership (This : System.Address; T : Tag) return Boolean is
-       Obj_Base : System.Address;
-       Obj_DT   : Dispatch_Table_Ptr;
-       Obj_TSD  : Type_Specific_Data_Ptr;
- 
-    begin
-       Obj_Base := Base_Address (This);
-       Obj_DT   := DT (To_Tag_Ptr (Obj_Base).all);
-       Obj_TSD  := To_Type_Specific_Data_Ptr (Obj_DT.TSD);
- 
-       return IW_Membership (Obj_TSD, T);
-    end IW_Membership;
- 
-    -------------------
-    -- Expanded_Name --
-    -------------------
- 
-    function Expanded_Name (T : Tag) return String is
-       Result  : Cstring_Ptr;
-       TSD_Ptr : Addr_Ptr;
-       TSD     : Type_Specific_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);
-       Result  := TSD.Expanded_Name;
-       return Result (1 .. Length (Result));
-    end Expanded_Name;
- 
-    ------------------
-    -- External_Tag --
-    ------------------
- 
-    function External_Tag (T : Tag) return String is
-       Result  : Cstring_Ptr;
-       TSD_Ptr : Addr_Ptr;
-       TSD     : Type_Specific_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);
-       Result  := TSD.External_Tag;
-       return Result (1 .. Length (Result));
-    end External_Tag;
- 
-    ---------------------
-    -- Get_Entry_Index --
-    ---------------------
- 
-    function Get_Entry_Index (T : Tag; Position : Positive) return Positive is
-    begin
-       return SSD (T).SSD_Table (Position).Index;
-    end Get_Entry_Index;
- 
-    ----------------------
-    -- Get_Prim_Op_Kind --
-    ----------------------
- 
-    function Get_Prim_Op_Kind
-      (T        : Tag;
-       Position : Positive) return Prim_Op_Kind
-    is
-    begin
-       return SSD (T).SSD_Table (Position).Kind;
-    end Get_Prim_Op_Kind;
- 
-    ----------------------
-    -- Get_Offset_Index --
-    ----------------------
- 
-    function Get_Offset_Index
-      (T        : Tag;
-       Position : Positive) return Positive
-    is
-    begin
-       if Is_Primary_DT (T) then
-          return Position;
-       else
-          return OSD (T).OSD_Table (Position);
-       end if;
-    end Get_Offset_Index;
- 
-    ---------------------
-    -- Get_Tagged_Kind --
-    ---------------------
- 
-    function Get_Tagged_Kind (T : Tag) return Tagged_Kind is
-    begin
-       return DT (T).Tag_Kind;
-    end Get_Tagged_Kind;
- 
-    -----------------------------
-    -- Interface_Ancestor_Tags --
-    -----------------------------
- 
-    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);
-          begin
-             return Table;
-          end;
- 
-       else
-          declare
-             Table : Tag_Array (1 .. Iface_Table.Nb_Ifaces);
-          begin
-             for J in 1 .. Iface_Table.Nb_Ifaces loop
-                Table (J) := Iface_Table.Ifaces_Table (J).Iface_Tag;
-             end loop;
- 
-             return Table;
-          end;
-       end if;
-    end Interface_Ancestor_Tags;
- 
-    ------------------
-    -- Internal_Tag --
-    ------------------
- 
-    --  Internal tags have the following format:
-    --    "Internal tag at 16#ADDRESS#: <full-name-of-tagged-type>"
- 
-    Internal_Tag_Header : constant String    := "Internal tag at ";
-    Header_Separator    : constant Character := '#';
- 
-    function Internal_Tag (External : String) return Tag is
-       Ext_Copy : aliased String (External'First .. External'Last + 1);
-       Res      : Tag := null;
- 
-    begin
-       --  Handle locally defined tagged types
- 
-       if External'Length > Internal_Tag_Header'Length
-         and then
-           External (External'First ..
-                       External'First + Internal_Tag_Header'Length - 1) =
-                                                         Internal_Tag_Header
-       then
-          declare
-             Addr_First : constant Natural :=
-                            External'First + Internal_Tag_Header'Length;
-             Addr_Last  : Natural;
-             Addr       : Integer_Address;
- 
-          begin
-             --  Search the second separator (#) to identify the address
- 
-             Addr_Last := Addr_First;
- 
-             for J in 1 .. 2 loop
-                while Addr_Last <= External'Last
-                  and then External (Addr_Last) /= Header_Separator
-                loop
-                   Addr_Last := Addr_Last + 1;
-                end loop;
- 
-                --  Skip the first separator
- 
-                if J = 1 then
-                   Addr_Last := Addr_Last + 1;
-                end if;
-             end loop;
- 
-             if Addr_Last <= External'Last then
- 
-                --  Protect the run-time against wrong internal tags. We
-                --  cannot use exception handlers here because it would
-                --  disable the use of this run-time compiling with
-                --  restriction No_Exception_Handler.
- 
-                declare
-                   C         : Character;
-                   Wrong_Tag : Boolean := False;
- 
-                begin
-                   if External (Addr_First) /= '1'
-                     or else External (Addr_First + 1) /= '6'
-                     or else External (Addr_First + 2) /= '#'
-                   then
-                      Wrong_Tag := True;
- 
-                   else
-                      for J in Addr_First + 3 .. Addr_Last - 1 loop
-                         C := External (J);
- 
-                         if not (C in '0' .. '9')
-                           and then not (C in 'A' .. 'F')
-                           and then not (C in 'a' .. 'f')
-                         then
-                            Wrong_Tag := True;
-                            exit;
-                         end if;
-                      end loop;
-                   end if;
- 
-                   --  Convert the numeric value into a tag
- 
-                   if not Wrong_Tag then
-                      Addr := Integer_Address'Value
-                                (External (Addr_First .. Addr_Last));
- 
-                      --  Internal tags never have value 0
- 
-                      if Addr /= 0 then
-                         return To_Tag (Addr);
-                      end if;
-                   end if;
-                end;
-             end if;
-          end;
- 
-       --  Handle library-level tagged types
- 
-       else
-          --  Make NUL-terminated copy of external tag string
- 
-          Ext_Copy (External'Range) := External;
-          Ext_Copy (Ext_Copy'Last)  := ASCII.NUL;
-          Res := External_Tag_HTable.Get (Ext_Copy'Address);
-       end if;
- 
-       if Res = null then
-          declare
-             Msg1 : constant String := "unknown tagged type: ";
-             Msg2 : String (1 .. Msg1'Length + External'Length);
- 
-          begin
-             Msg2 (1 .. Msg1'Length) := Msg1;
-             Msg2 (Msg1'Length + 1 .. Msg1'Length + External'Length) :=
-               External;
-             Ada.Exceptions.Raise_Exception (Tag_Error'Identity, Msg2);
-          end;
-       end if;
- 
-       return Res;
-    end Internal_Tag;
- 
-    ---------------------------------
-    -- Is_Descendant_At_Same_Level --
-    ---------------------------------
- 
-    function Is_Descendant_At_Same_Level
-      (Descendant : Tag;
-       Ancestor   : Tag) return Boolean
-    is
-    begin
-       if Descendant = Ancestor then
-          return True;
- 
-       else
-          declare
-             D_TSD_Ptr : constant Addr_Ptr :=
-               To_Addr_Ptr (To_Address (Descendant) - DT_Typeinfo_Ptr_Size);
-             A_TSD_Ptr : constant Addr_Ptr :=
-               To_Addr_Ptr (To_Address (Ancestor) - DT_Typeinfo_Ptr_Size);
-             D_TSD     : constant Type_Specific_Data_Ptr :=
-               To_Type_Specific_Data_Ptr (D_TSD_Ptr.all);
-             A_TSD     : constant Type_Specific_Data_Ptr :=
-               To_Type_Specific_Data_Ptr (A_TSD_Ptr.all);
-          begin
-             return
-               D_TSD.Access_Level = A_TSD.Access_Level
-                 and then (CW_Membership (Descendant, Ancestor)
-                            or else IW_Membership (D_TSD, Ancestor));
-          end;
-       end if;
-    end Is_Descendant_At_Same_Level;
- 
-    ------------
-    -- Length --
-    ------------
- 
-    --  Note: This unit is used in the Ravenscar runtime library, so it cannot
-    --  depend on System.CTRL. Furthermore, this happens on CPUs where the GCC
-    --  intrinsic strlen may not be available, so we need to recode our own Ada
-    --  version here.
- 
-    function Length (Str : Cstring_Ptr) return Natural is
-       Len : Integer;
- 
-    begin
-       Len := 1;
-       while Str (Len) /= ASCII.NUL loop
-          Len := Len + 1;
-       end loop;
- 
-       return Len - 1;
-    end Length;
- 
-    -------------------
-    -- Offset_To_Top --
-    -------------------
- 
-    function Offset_To_Top
-      (This : System.Address) return SSE.Storage_Offset
-    is
-       Tag_Size : constant SSE.Storage_Count :=
-         SSE.Storage_Count (1 * (Standard'Address_Size / System.Storage_Unit));
- 
-       type Storage_Offset_Ptr is access SSE.Storage_Offset;
-       function To_Storage_Offset_Ptr is
-         new Unchecked_Conversion (System.Address, Storage_Offset_Ptr);
- 
-       Curr_DT : Dispatch_Table_Ptr;
- 
-    begin
-       Curr_DT := DT (To_Tag_Ptr (This).all);
- 
-       if Curr_DT.Offset_To_Top = SSE.Storage_Offset'Last then
-          return To_Storage_Offset_Ptr (This + Tag_Size).all;
-       else
-          return Curr_DT.Offset_To_Top;
-       end if;
-    end Offset_To_Top;
- 
-    ------------------------
-    -- Needs_Finalization --
-    ------------------------
- 
-    function Needs_Finalization (T : Tag) return Boolean 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);
-    begin
-       return TSD.Needs_Finalization;
-    end Needs_Finalization;
- 
-    -----------------
-    -- Parent_Size --
-    -----------------
- 
-    function Parent_Size
-      (Obj : System.Address;
-       T   : Tag) return SSE.Storage_Count
-    is
-       Parent_Slot : constant Positive := 1;
-       --  The tag of the parent is always in the first slot of the table of
-       --  ancestor tags.
- 
-       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);
-       --  Pointer to the TSD
- 
-       Parent_Tag     : constant Tag := TSD.Tags_Table (Parent_Slot);
-       Parent_TSD_Ptr : constant Addr_Ptr :=
-         To_Addr_Ptr (To_Address (Parent_Tag) - DT_Typeinfo_Ptr_Size);
-       Parent_TSD     : constant Type_Specific_Data_Ptr :=
-         To_Type_Specific_Data_Ptr (Parent_TSD_Ptr.all);
- 
-    begin
-       --  Here we compute the size of the _parent field of the object
- 
-       return SSE.Storage_Count (Parent_TSD.Size_Func.all (Obj));
-    end Parent_Size;
- 
-    ----------------
-    -- Parent_Tag --
-    ----------------
- 
-    function Parent_Tag (T : Tag) return Tag is
-       TSD_Ptr : Addr_Ptr;
-       TSD     : Type_Specific_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);
- 
-       --  The Parent_Tag of a root-level tagged type is defined to be No_Tag.
-       --  The first entry in the Ancestors_Tags array will be null for such
-       --  a type, but it's better to be explicit about returning No_Tag in
-       --  this case.
- 
-       if TSD.Idepth = 0 then
-          return No_Tag;
-       else
-          return TSD.Tags_Table (1);
-       end if;
-    end Parent_Tag;
- 
-    -------------------------------
-    -- Register_Interface_Offset --
-    -------------------------------
- 
-    procedure Register_Interface_Offset
-      (This         : System.Address;
-       Interface_T  : Tag;
-       Is_Static    : Boolean;
-       Offset_Value : SSE.Storage_Offset;
-       Offset_Func  : Offset_To_Top_Function_Ptr)
-    is
-       Prim_DT     : Dispatch_Table_Ptr;
-       Iface_Table : Interface_Data_Ptr;
- 
-    begin
-       --  "This" points to the primary DT and we must save Offset_Value in
-       --  the Offset_To_Top field of the corresponding dispatch table.
- 
-       Prim_DT     := DT (To_Tag_Ptr (This).all);
-       Iface_Table := To_Type_Specific_Data_Ptr (Prim_DT.TSD).Interfaces_Table;
- 
-       --  Save Offset_Value in the table of interfaces of the primary DT.
-       --  This data will be used by the subprogram "Displace" to give support
-       --  to backward abstract interface type conversions.
- 
-       --  Register the offset in the table of interfaces
- 
-       if Iface_Table /= null then
-          for Id in 1 .. Iface_Table.Nb_Ifaces loop
-             if Iface_Table.Ifaces_Table (Id).Iface_Tag = Interface_T then
-                if Is_Static or else Offset_Value = 0 then
-                   Iface_Table.Ifaces_Table (Id).Static_Offset_To_Top := True;
-                   Iface_Table.Ifaces_Table (Id).Offset_To_Top_Value :=
-                     Offset_Value;
-                else
-                   Iface_Table.Ifaces_Table (Id).Static_Offset_To_Top := False;
-                   Iface_Table.Ifaces_Table (Id).Offset_To_Top_Func :=
-                     Offset_Func;
-                end if;
- 
-                return;
-             end if;
-          end loop;
-       end if;
- 
-       --  If we arrive here there is some error in the run-time data structure
- 
-       raise Program_Error;
-    end Register_Interface_Offset;
- 
-    ------------------
-    -- Register_Tag --
-    ------------------
- 
-    procedure Register_Tag (T : Tag) is
-    begin
-       External_Tag_HTable.Set (T);
-    end Register_Tag;
- 
-    -------------------
-    -- Secondary_Tag --
-    -------------------
- 
-    function Secondary_Tag (T, Iface : Tag) return Tag is
-       Iface_Table : Interface_Data_Ptr;
-       Obj_DT      : Dispatch_Table_Ptr;
- 
-    begin
-       if not Is_Primary_DT (T) then
-          raise Program_Error;
-       end if;
- 
-       Obj_DT      := DT (T);
-       Iface_Table := To_Type_Specific_Data_Ptr (Obj_DT.TSD).Interfaces_Table;
- 
-       if Iface_Table /= null then
-          for Id in 1 .. Iface_Table.Nb_Ifaces loop
-             if Iface_Table.Ifaces_Table (Id).Iface_Tag = Iface then
-                return Iface_Table.Ifaces_Table (Id).Secondary_DT;
-             end if;
-          end loop;
-       end if;
- 
-       --  If the object does not implement the interface we must raise CE
- 
-       raise Constraint_Error with "invalid interface conversion";
-    end Secondary_Tag;
- 
-    ---------------------
-    -- Set_Entry_Index --
-    ---------------------
- 
-    procedure Set_Entry_Index
-      (T        : Tag;
-       Position : Positive;
-       Value    : Positive)
-    is
-    begin
-       SSD (T).SSD_Table (Position).Index := Value;
-    end Set_Entry_Index;
- 
-    -----------------------
-    -- Set_Offset_To_Top --
-    -----------------------
- 
-    procedure Set_Dynamic_Offset_To_Top
-      (This         : System.Address;
-       Interface_T  : Tag;
-       Offset_Value : SSE.Storage_Offset;
-       Offset_Func  : Offset_To_Top_Function_Ptr)
-    is
-       Sec_Base : System.Address;
-       Sec_DT   : Dispatch_Table_Ptr;
- 
-    begin
-       --  Save the offset to top field in the secondary dispatch table
- 
-       if Offset_Value /= 0 then
-          Sec_Base := This + Offset_Value;
-          Sec_DT := DT (To_Tag_Ptr (Sec_Base).all);
-          Sec_DT.Offset_To_Top := SSE.Storage_Offset'Last;
-       end if;
- 
-       Register_Interface_Offset
-         (This, Interface_T, False, Offset_Value, Offset_Func);
-    end Set_Dynamic_Offset_To_Top;
- 
-    ----------------------
-    -- Set_Prim_Op_Kind --
-    ----------------------
- 
-    procedure Set_Prim_Op_Kind
-      (T        : Tag;
-       Position : Positive;
-       Value    : Prim_Op_Kind)
-    is
-    begin
-       SSD (T).SSD_Table (Position).Kind := Value;
-    end Set_Prim_Op_Kind;
- 
-    ----------------------
-    -- Type_Is_Abstract --
-    ----------------------
- 
-    function Type_Is_Abstract (T : Tag) return Boolean is
-       TSD_Ptr : Addr_Ptr;
-       TSD     : Type_Specific_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);
-       return TSD.Type_Is_Abstract;
-    end Type_Is_Abstract;
- 
-    --------------------
-    -- Unregister_Tag --
-    --------------------
- 
-    procedure Unregister_Tag (T : Tag) is
-    begin
-       External_Tag_HTable.Remove (Get_External_Tag (T));
-    end Unregister_Tag;
- 
-    ------------------------
-    -- Wide_Expanded_Name --
-    ------------------------
- 
-    WC_Encoding : Character;
-    pragma Import (C, WC_Encoding, "__gl_wc_encoding");
-    --  Encoding method for source, as exported by binder
- 
-    function Wide_Expanded_Name (T : Tag) return Wide_String is
-       S : constant String := Expanded_Name (T);
-       W : Wide_String (1 .. S'Length);
-       L : Natural;
-    begin
-       String_To_Wide_String
-         (S, W, L, Get_WC_Encoding_Method (WC_Encoding));
-       return W (1 .. L);
-    end Wide_Expanded_Name;
- 
-    -----------------------------
-    -- Wide_Wide_Expanded_Name --
-    -----------------------------
- 
-    function Wide_Wide_Expanded_Name (T : Tag) return Wide_Wide_String is
-       S : constant String := Expanded_Name (T);
-       W : Wide_Wide_String (1 .. S'Length);
-       L : Natural;
-    begin
-       String_To_Wide_Wide_String
-         (S, W, L, Get_WC_Encoding_Method (WC_Encoding));
-       return W (1 .. L);
-    end Wide_Wide_Expanded_Name;
- 
- end Ada.Tags;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-tags.ads gcc-8.1.0/gcc/ada/a-tags.ads
*** gcc-7.3.0/gcc/ada/a-tags.ads	Fri Oct 16 13:03:16 2015
--- gcc-8.1.0/gcc/ada/a-tags.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,608 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                             A D A . T A G S                              --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2015, Free Software Foundation, 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  For performance analysis, take into account that the operations in this
- --  package provide the guarantee that all dispatching calls on primitive
- --  operations of tagged types and interfaces take constant time (in terms
- --  of source lines executed), that is to say, the cost of these calls is
- --  independent of the number of primitives of the type or interface, and
- --  independent of the number of ancestors or interface progenitors that a
- --  tagged type may have.
- 
- --  The following subprograms of the public part of this package take constant
- --  time (in terms of source lines executed):
- 
- --    Expanded_Name, Wide_Expanded_Name, Wide_Wide_Expanded_Name, External_Tag,
- --    Is_Descendant_At_Same_Level, Parent_Tag, Type_Is_Abstract
- --    Descendant_Tag (when used with a library-level tagged type),
- --    Internal_Tag (when used with a library-level tagged type).
- 
- --  The following subprograms of the public part of this package execute in
- --  time that is not constant (in terms of sources line executed):
- 
- --    Internal_Tag (when used with a locally defined tagged type), because in
- --    such cases this routine processes the external tag, extracts from it an
- --    address available there, and converts it into the tag value returned by
- --    this function. The number of instructions executed is not constant since
- --    it depends on the length of the external tag string.
- 
- --    Descendant_Tag (when used with a locally defined tagged type), because
- --    it relies on the subprogram Internal_Tag() to provide its functionality.
- 
- --    Interface_Ancestor_Tags, because this function returns a table whose
- --    length depends on the number of interfaces covered by a tagged type.
- 
- with System.Storage_Elements;
- 
- package Ada.Tags is
-    pragma Preelaborate;
-    --  In accordance with Ada 2005 AI-362
- 
-    type Tag is private;
-    pragma Preelaborable_Initialization (Tag);
- 
-    No_Tag : constant Tag;
- 
-    function Expanded_Name (T : Tag) return String;
- 
-    function Wide_Expanded_Name (T : Tag) return Wide_String;
-    pragma Ada_05 (Wide_Expanded_Name);
- 
-    function Wide_Wide_Expanded_Name (T : Tag) return Wide_Wide_String;
-    pragma Ada_05 (Wide_Wide_Expanded_Name);
- 
-    function External_Tag (T : Tag) return String;
- 
-    function Internal_Tag (External : String) return Tag;
- 
-    function Descendant_Tag
-      (External : String;
-       Ancestor : Tag) return Tag;
-    pragma Ada_05 (Descendant_Tag);
- 
-    function Is_Descendant_At_Same_Level
-      (Descendant : Tag;
-       Ancestor   : Tag) return Boolean;
-    pragma Ada_05 (Is_Descendant_At_Same_Level);
- 
-    function Parent_Tag (T : Tag) return Tag;
-    pragma Ada_05 (Parent_Tag);
- 
-    type Tag_Array is array (Positive range <>) of Tag;
- 
-    function Interface_Ancestor_Tags (T : Tag) return Tag_Array;
-    pragma Ada_05 (Interface_Ancestor_Tags);
- 
-    function Type_Is_Abstract (T : Tag) return Boolean;
-    pragma Ada_2012 (Type_Is_Abstract);
- 
-    Tag_Error : exception;
- 
- private
-    --  Structure of the GNAT Primary Dispatch Table
- 
-    --           +--------------------+
-    --           |      Signature     |
-    --           +--------------------+
-    --           |     Tagged_Kind    |
-    --           +--------------------+                            Predef Prims
-    --           |    Predef_Prims -----------------------------> +------------+
-    --           +--------------------+                           |  table of  |
-    --           |    Offset_To_Top   |                           | predefined |
-    --           +--------------------+                           | primitives |
-    --           |Typeinfo_Ptr/TSD_Ptr---> Type Specific Data     +------------+
-    --  Tag ---> +--------------------+   +-------------------+
-    --           |      table of      |   | inheritance depth |
-    --           :   primitive ops    :   +-------------------+
-    --           |      pointers      |   |   access level    |
-    --           +--------------------+   +-------------------+
-    --                                    |     alignment     |
-    --                                    +-------------------+
-    --                                    |   expanded name   |
-    --                                    +-------------------+
-    --                                    |   external tag    |
-    --                                    +-------------------+
-    --                                    |   hash table link |
-    --                                    +-------------------+
-    --                                    |   transportable   |
-    --                                    +-------------------+
-    --                                    |  type_is_abstract |
-    --                                    +-------------------+
-    --                                    | needs finalization|
-    --                                    +-------------------+
-    --                                    |   Ifaces_Table   ---> Interface Data
-    --                                    +-------------------+   +------------+
-    --         Select Specific Data  <----        SSD         |   |  Nb_Ifaces |
-    --         +------------------+       +-------------------+   +------------+
-    --         |table of primitive|       | table of          |   |  table     |
-    --         :   operation      :       :    ancestor       :   :    of      :
-    --         |      kinds       |       |       tags        |   | interfaces |
-    --         +------------------+       +-------------------+   +------------+
-    --         |table of          |
-    --         :   entry          :
-    --         |      indexes     |
-    --         +------------------+
- 
-    --  Structure of the GNAT Secondary Dispatch Table
- 
-    --           +--------------------+
-    --           |      Signature     |
-    --           +--------------------+
-    --           |     Tagged_Kind    |
-    --           +--------------------+                            Predef Prims
-    --           |    Predef_Prims -----------------------------> +------------+
-    --           +--------------------+                           |  table of  |
-    --           |    Offset_To_Top   |                           | predefined |
-    --           +--------------------+                           | primitives |
-    --           |       OSD_Ptr      |---> Object Specific Data  |   thunks   |
-    --  Tag ---> +--------------------+      +---------------+    +------------+
-    --           |      table of      |      | num prim ops  |
-    --           :    primitive op    :      +---------------+
-    --           |   thunk pointers   |      | table of      |
-    --           +--------------------+      +   primitive   |
-    --                                       |    op offsets |
-    --                                       +---------------+
- 
-    --  The runtime information kept for each tagged type is separated into two
-    --  objects: the Dispatch Table and the Type Specific Data record.
- 
-    package SSE renames System.Storage_Elements;
- 
-    subtype Cstring is String (Positive);
-    type Cstring_Ptr is access all Cstring;
-    pragma No_Strict_Aliasing (Cstring_Ptr);
- 
-    --  Declarations for the table of interfaces
- 
-    type Offset_To_Top_Function_Ptr is
-      access function (This : System.Address) return SSE.Storage_Offset;
-    --  Type definition used to call the function that is generated by the
-    --  expander in case of tagged types with discriminants that have secondary
-    --  dispatch tables. This function provides the Offset_To_Top value in this
-    --  specific case.
- 
-    type Interface_Data_Element is record
-       Iface_Tag            : Tag;
-       Static_Offset_To_Top : Boolean;
-       Offset_To_Top_Value  : SSE.Storage_Offset;
-       Offset_To_Top_Func   : Offset_To_Top_Function_Ptr;
-       Secondary_DT         : Tag;
-    end record;
-    --  If some ancestor of the tagged type has discriminants the field
-    --  Static_Offset_To_Top is False and the field Offset_To_Top_Func
-    --  is used to store the access to the function generated by the
-    --  expander which provides this value; otherwise Static_Offset_To_Top
-    --  is True and such value is stored in the Offset_To_Top_Value field.
-    --  Secondary_DT references a secondary dispatch table whose contents
-    --  are pointers to the primitives of the tagged type that cover the
-    --  interface primitives. Secondary_DT gives support to dispatching
-    --  calls through interface types associated with Generic Dispatching
-    --  Constructors.
- 
-    type Interfaces_Array is array (Natural range <>) of Interface_Data_Element;
- 
-    type Interface_Data (Nb_Ifaces : Positive) is record
-       Ifaces_Table : Interfaces_Array (1 .. Nb_Ifaces);
-    end record;
- 
-    type Interface_Data_Ptr is access all Interface_Data;
-    --  Table of abstract interfaces used to give support to backward interface
-    --  conversions and also to IW_Membership.
- 
-    --  Primitive operation kinds. These values differentiate the kinds of
-    --  callable entities stored in the dispatch table. Certain kinds may
-    --  not be used, but are added for completeness.
- 
-    type Prim_Op_Kind is
-      (POK_Function,
-       POK_Procedure,
-       POK_Protected_Entry,
-       POK_Protected_Function,
-       POK_Protected_Procedure,
-       POK_Task_Entry,
-       POK_Task_Function,
-       POK_Task_Procedure);
- 
-    --  Select specific data types
- 
-    type Select_Specific_Data_Element is record
-       Index : Positive;
-       Kind  : Prim_Op_Kind;
-    end record;
- 
-    type Select_Specific_Data_Array is
-      array (Positive range <>) of Select_Specific_Data_Element;
- 
-    type Select_Specific_Data (Nb_Prim : Positive) is record
-       SSD_Table : Select_Specific_Data_Array (1 .. Nb_Prim);
-       --  NOTE: Nb_Prim is the number of non-predefined primitive operations
-    end record;
- 
-    type Select_Specific_Data_Ptr is access all Select_Specific_Data;
-    --  A table used to store the primitive operation kind and entry index of
-    --  primitive subprograms of a type that implements a limited interface.
-    --  The Select Specific Data table resides in the Type Specific Data of a
-    --  type. This construct is used in the handling of dispatching triggers
-    --  in select statements.
- 
-    type Prim_Ptr is access procedure;
-    type Address_Array is array (Positive range <>) of Prim_Ptr;
- 
-    subtype Dispatch_Table is Address_Array (1 .. 1);
-    --  Used by GDB to identify the _tags and traverse the run-time structure
-    --  associated with tagged types. For compatibility with older versions of
-    --  gdb, its name must not be changed.
- 
-    type Tag is access all Dispatch_Table;
-    pragma No_Strict_Aliasing (Tag);
- 
-    type Interface_Tag is access all Dispatch_Table;
- 
-    No_Tag : constant Tag := null;
- 
-    --  The expander ensures that Tag objects reference the Prims_Ptr component
-    --  of the wrapper.
- 
-    type Tag_Ptr is access all Tag;
-    pragma No_Strict_Aliasing (Tag_Ptr);
- 
-    type Offset_To_Top_Ptr is access all SSE.Storage_Offset;
-    pragma No_Strict_Aliasing (Offset_To_Top_Ptr);
- 
-    type Tag_Table is array (Natural range <>) of Tag;
- 
-    type Size_Ptr is
-      access function (A : System.Address) return Long_Long_Integer;
- 
-    type Type_Specific_Data (Idepth : Natural) is record
-    --  The discriminant Idepth is the Inheritance Depth Level: Used to
-    --  implement the membership test associated with single inheritance of
-    --  tagged types in constant-time. It also indicates the size of the
-    --  Tags_Table component.
- 
-       Access_Level : Natural;
-       --  Accessibility level required to give support to Ada 2005 nested type
-       --  extensions. This feature allows safe nested type extensions by
-       --  shifting the accessibility checks to certain operations, rather than
-       --  being enforced at the type declaration. In particular, by performing
-       --  run-time accessibility checks on class-wide allocators, class-wide
-       --  function return, and class-wide stream I/O, the danger of objects
-       --  outliving their type declaration can be eliminated (Ada 2005: AI-344)
- 
-       Alignment     : Natural;
-       Expanded_Name : Cstring_Ptr;
-       External_Tag  : Cstring_Ptr;
-       HT_Link       : Tag_Ptr;
-       --  Components used to support to the Ada.Tags subprograms in RM 3.9
- 
-       --  Note: Expanded_Name is referenced by GDB to determine the actual name
-       --  of the tagged type. Its requirements are: 1) it must have this exact
-       --  name, and 2) its contents must point to a C-style Nul terminated
-       --  string containing its expanded name. GDB has no requirement on a
-       --  given position inside the record.
- 
-       Transportable : Boolean;
-       --  Used to check RM E.4(18), set for types that satisfy the requirements
-       --  for being used in remote calls as actuals for classwide formals or as
-       --  return values for classwide functions.
- 
-       Type_Is_Abstract : Boolean;
-       --  True if the type is abstract (Ada 2012: AI05-0173)
- 
-       Needs_Finalization : Boolean;
-       --  Used to dynamically check whether an object is controlled or not
- 
-       Size_Func : Size_Ptr;
-       --  Pointer to the subprogram computing the _size of the object. Used by
-       --  the run-time whenever a call to the 'size primitive is required. We
-       --  cannot assume that the contents of dispatch tables are addresses
-       --  because in some architectures the ABI allows descriptors.
- 
-       Interfaces_Table : Interface_Data_Ptr;
-       --  Pointer to the table of interface tags. It is used to implement the
-       --  membership test associated with interfaces and also for backward
-       --  abstract interface type conversions (Ada 2005:AI-251)
- 
-       SSD : Select_Specific_Data_Ptr;
-       --  Pointer to a table of records used in dispatching selects. This field
-       --  has a meaningful value for all tagged types that implement a limited,
-       --  protected, synchronized or task interfaces and have non-predefined
-       --  primitive operations.
- 
-       Tags_Table : Tag_Table (0 .. Idepth);
-       --  Table of ancestor tags. Its size actually depends on the inheritance
-       --  depth level of the tagged type.
-    end record;
- 
-    type Type_Specific_Data_Ptr is access all Type_Specific_Data;
-    pragma No_Strict_Aliasing (Type_Specific_Data_Ptr);
- 
-    --  Declarations for the dispatch table record
- 
-    type Signature_Kind is
-       (Unknown,
-        Primary_DT,
-        Secondary_DT);
- 
-    --  Tagged type kinds with respect to concurrency and limitedness
- 
-    type Tagged_Kind is
-      (TK_Abstract_Limited_Tagged,
-       TK_Abstract_Tagged,
-       TK_Limited_Tagged,
-       TK_Protected,
-       TK_Tagged,
-       TK_Task);
- 
-    type Dispatch_Table_Wrapper (Num_Prims : Natural) is record
-       Signature     : Signature_Kind;
-       Tag_Kind      : Tagged_Kind;
-       Predef_Prims  : System.Address;
-       --  Pointer to the dispatch table of predefined Ada primitives
- 
-       --  According to the C++ ABI the components Offset_To_Top and TSD are
-       --  stored just "before" the dispatch table, and they are referenced with
-       --  negative offsets referring to the base of the dispatch table. The
-       --   _Tag (or the VTable_Ptr in C++ terminology) must point to the base
-       --  of the virtual table, just after these components, to point to the
-       --  Prims_Ptr table.
- 
-       Offset_To_Top : SSE.Storage_Offset;
-       TSD           : System.Address;
- 
-       Prims_Ptr : aliased Address_Array (1 .. Num_Prims);
-       --  The size of the Prims_Ptr array actually depends on the tagged type
-       --  to which it applies. For each tagged type, the expander computes the
-       --  actual array size, allocates the Dispatch_Table record accordingly.
-    end record;
- 
-    type Dispatch_Table_Ptr is access all Dispatch_Table_Wrapper;
-    pragma No_Strict_Aliasing (Dispatch_Table_Ptr);
- 
-    --  The following type declaration is used by the compiler when the program
-    --  is compiled with restriction No_Dispatching_Calls. It is also used with
-    --  interface types to generate the tag and run-time information associated
-    --  with them.
- 
-    type No_Dispatch_Table_Wrapper is record
-       NDT_TSD       : System.Address;
-       NDT_Prims_Ptr : Natural;
-    end record;
- 
-    DT_Predef_Prims_Size : constant SSE.Storage_Count :=
-                             SSE.Storage_Count
-                               (1 * (Standard'Address_Size /
-                                       System.Storage_Unit));
-    --  Size of the Predef_Prims field of the Dispatch_Table
- 
-    DT_Offset_To_Top_Size : constant SSE.Storage_Count :=
-                              SSE.Storage_Count
-                                (1 * (Standard'Address_Size /
-                                        System.Storage_Unit));
-    --  Size of the Offset_To_Top field of the Dispatch Table
- 
-    DT_Typeinfo_Ptr_Size : constant SSE.Storage_Count :=
-                             SSE.Storage_Count
-                               (1 * (Standard'Address_Size /
-                                       System.Storage_Unit));
-    --  Size of the Typeinfo_Ptr field of the Dispatch Table
- 
-    use type System.Storage_Elements.Storage_Offset;
- 
-    DT_Offset_To_Top_Offset : constant SSE.Storage_Count :=
-                                DT_Typeinfo_Ptr_Size
-                                  + DT_Offset_To_Top_Size;
- 
-    DT_Predef_Prims_Offset : constant SSE.Storage_Count :=
-                               DT_Typeinfo_Ptr_Size
-                                 + DT_Offset_To_Top_Size
-                                 + DT_Predef_Prims_Size;
-    --  Offset from Prims_Ptr to Predef_Prims component
- 
-    --  Object Specific Data record of secondary dispatch tables
- 
-    type Object_Specific_Data_Array is array (Positive range <>) of Positive;
- 
-    type Object_Specific_Data (OSD_Num_Prims : Positive) is record
-       OSD_Table : Object_Specific_Data_Array (1 .. OSD_Num_Prims);
-       --  Table used in secondary DT to reference their counterpart in the
-       --  select specific data (in the TSD of the primary DT). This construct
-       --  is used in the handling of dispatching triggers in select statements.
-       --  Nb_Prim is the number of non-predefined primitive operations.
-    end record;
- 
-    type Object_Specific_Data_Ptr is access all Object_Specific_Data;
-    pragma No_Strict_Aliasing (Object_Specific_Data_Ptr);
- 
-    --  The following subprogram specifications are placed here instead of the
-    --  package body to see them from the frontend through rtsfind.
- 
-    function Base_Address (This : System.Address) return System.Address;
-    --  Ada 2005 (AI-251): Displace "This" to point to the base address of the
-    --  object (that is, the address of the primary tag of the object).
- 
-    procedure Check_TSD (TSD : Type_Specific_Data_Ptr);
-    --  Ada 2012 (AI-113): Raise Program_Error if the external tag of this TSD
-    --  is the same as the external tag for some other tagged type declaration.
- 
-    function Displace (This : System.Address; T : Tag) return System.Address;
-    --  Ada 2005 (AI-251): Displace "This" to point to the secondary dispatch
-    --  table of T.
- 
-    function Secondary_Tag (T, Iface : Tag) return Tag;
-    --  Ada 2005 (AI-251): Given a primary tag T associated with a tagged type
-    --  Typ, search for the secondary tag of the interface type Iface covered
-    --  by Typ.
- 
-    function DT (T : Tag) return Dispatch_Table_Ptr;
-    --  Return the pointer to the TSD record associated with T
- 
-    function Get_Entry_Index (T : Tag; Position : Positive) return Positive;
-    --  Ada 2005 (AI-251): Return a primitive operation's entry index (if entry)
-    --  given a dispatch table T and a position of a primitive operation in T.
- 
-    function Get_Offset_Index
-      (T        : Tag;
-       Position : Positive) return Positive;
-    --  Ada 2005 (AI-251): Given a pointer to a secondary dispatch table (T)
-    --  and a position of an operation in the DT, retrieve the corresponding
-    --  operation's position in the primary dispatch table from the Offset
-    --  Specific Data table of T.
- 
-    function Get_Prim_Op_Kind
-      (T        : Tag;
-       Position : Positive) return Prim_Op_Kind;
-    --  Ada 2005 (AI-251): Return a primitive operation's kind given a dispatch
-    --  table T and a position of a primitive operation in T.
- 
-    function Get_Tagged_Kind (T : Tag) return Tagged_Kind;
-    --  Ada 2005 (AI-345): Given a pointer to either a primary or a secondary
-    --  dispatch table, return the tagged kind of a type in the context of
-    --  concurrency and limitedness.
- 
-    function IW_Membership (This : System.Address; T : Tag) return Boolean;
-    --  Ada 2005 (AI-251): General routine that checks if a given object
-    --  implements a tagged type. Its common usage is to check if Obj is in
-    --  Iface'Class, but it is also used to check if a class-wide interface
-    --  implements a given type (Iface_CW_Typ in T'Class). For example:
-    --
-    --      type I is interface;
-    --      type T is tagged ...
-    --
-    --      function Test (O : I'Class) is
-    --      begin
-    --         return O in T'Class.
-    --      end Test;
- 
-    function Offset_To_Top
-      (This : System.Address) return SSE.Storage_Offset;
-    --  Ada 2005 (AI-251): Returns the current value of the Offset_To_Top
-    --  component available in the prologue of the dispatch table. If the parent
-    --  of the tagged type has discriminants this value is stored in a record
-    --  component just immediately after the tag component.
- 
-    function Needs_Finalization (T : Tag) return Boolean;
-    --  A helper routine used in conjunction with finalization collections which
-    --  service class-wide types. The function dynamically determines whether an
-    --  object is controlled or has controlled components.
- 
-    function Parent_Size
-      (Obj : System.Address;
-       T   : Tag) return SSE.Storage_Count;
-    --  Computes the size the ancestor part of a tagged extension object whose
-    --  address is 'obj' by calling indirectly the ancestor _size function. The
-    --  ancestor is the parent of the type represented by tag T. This function
-    --  assumes that _size is always in slot one of the dispatch table.
- 
-    procedure Register_Interface_Offset
-      (This         : System.Address;
-       Interface_T  : Tag;
-       Is_Static    : Boolean;
-       Offset_Value : SSE.Storage_Offset;
-       Offset_Func  : Offset_To_Top_Function_Ptr);
-    --  Register in the table of interfaces of the tagged type associated with
-    --  "This" object the offset of the record component associated with the
-    --  progenitor Interface_T (that is, the distance from "This" to the object
-    --  component containing the tag of the secondary dispatch table). In case
-    --  of constant offset, Is_Static is true and Offset_Value has such value.
-    --  In case of variable offset, Is_Static is false and Offset_Func is an
-    --  access to function that must be called to evaluate the offset.
- 
-    procedure Register_Tag (T : Tag);
-    --  Insert the Tag and its associated external_tag in a table for the sake
-    --  of Internal_Tag.
- 
-    procedure Set_Dynamic_Offset_To_Top
-      (This         : System.Address;
-       Interface_T  : Tag;
-       Offset_Value : SSE.Storage_Offset;
-       Offset_Func  : Offset_To_Top_Function_Ptr);
-    --  Ada 2005 (AI-251): The compiler generates calls to this routine only
-    --  when initializing the Offset_To_Top field of dispatch tables associated
-    --  with tagged type whose parent has variable size components. "This" is
-    --  the object whose dispatch table is being initialized. Interface_T is the
-    --  interface for which the secondary dispatch table is being initialized,
-    --  and Offset_Value is the distance from "This" to the object component
-    --  containing the tag of the secondary dispatch table (a zero value means
-    --  that this interface shares the primary dispatch table). Offset_Func
-    --  references a function that must be called to evaluate the offset at
-    --  runtime. This routine also takes care of registering these values in
-    --  the table of interfaces of the type.
- 
-    procedure Set_Entry_Index (T : Tag; Position : Positive; Value : Positive);
-    --  Ada 2005 (AI-345): Set the entry index of a primitive operation in T's
-    --  TSD table indexed by Position.
- 
-    procedure Set_Prim_Op_Kind
-      (T        : Tag;
-       Position : Positive;
-       Value    : Prim_Op_Kind);
-    --  Ada 2005 (AI-251): Set the kind of a primitive operation in T's TSD
-    --  table indexed by Position.
- 
-    procedure Unregister_Tag (T : Tag);
-    --  Remove a particular tag from the external tag hash table
- 
-    Max_Predef_Prims : constant Positive := 15;
-    --  Number of reserved slots for the following predefined ada primitives:
-    --
-    --    1. Size
-    --    2. Read
-    --    3. Write
-    --    4. Input
-    --    5. Output
-    --    6. "="
-    --    7. assignment
-    --    8. deep adjust
-    --    9. deep finalize
-    --   10. async select
-    --   11. conditional select
-    --   12. prim_op kind
-    --   13. task_id
-    --   14. dispatching requeue
-    --   15. timed select
-    --
-    --  The compiler checks that the value here is correct
- 
-    subtype Predef_Prims_Table  is Address_Array (1 .. Max_Predef_Prims);
-    type Predef_Prims_Table_Ptr is access Predef_Prims_Table;
-    pragma No_Strict_Aliasing (Predef_Prims_Table_Ptr);
- 
-    type Addr_Ptr is access System.Address;
-    pragma No_Strict_Aliasing (Addr_Ptr);
-    --  This type is used by the frontend to generate the code that handles
-    --  dispatch table slots of types declared at the local level.
- 
- end Ada.Tags;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-tasatt.adb gcc-8.1.0/gcc/ada/a-tasatt.adb
*** gcc-7.3.0/gcc/ada/a-tasatt.adb	Thu Apr 21 10:21:56 2016
--- gcc-8.1.0/gcc/ada/a-tasatt.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,375 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                        GNAT RUN-TIME COMPONENTS                          --
- --                                                                          --
- --                  A D A . T A S K _ A T T R I B U T E S                   --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --            Copyright (C) 2014-2016, Free Software Foundation, Inc.       --
- --                                                                          --
- -- GNAT is 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/>.                                          --
- --                                                                          --
- -- GNARL was developed by the GNARL team at Florida State University.       --
- -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with System.Tasking;
- with System.Tasking.Initialization;
- with System.Tasking.Task_Attributes;
- pragma Elaborate_All (System.Tasking.Task_Attributes);
- 
- with System.Task_Primitives.Operations;
- 
- with Ada.Finalization; use Ada.Finalization;
- with Ada.Unchecked_Conversion;
- with Ada.Unchecked_Deallocation;
- 
- package body Ada.Task_Attributes is
- 
-    use System,
-        System.Tasking.Initialization,
-        System.Tasking,
-        System.Tasking.Task_Attributes;
- 
-    package STPO renames System.Task_Primitives.Operations;
- 
-    type Attribute_Cleanup is new Limited_Controlled with null record;
-    procedure Finalize (Cleanup : in out Attribute_Cleanup);
-    --  Finalize all tasks' attributes for this package
- 
-    Cleanup : Attribute_Cleanup;
-    pragma Unreferenced (Cleanup);
-    --  Will call Finalize when this instantiation gets out of scope
- 
-    ---------------------------
-    -- Unchecked Conversions --
-    ---------------------------
- 
-    type Real_Attribute is record
-       Free  : Deallocator;
-       Value : Attribute;
-    end record;
-    type Real_Attribute_Access is access all Real_Attribute;
-    pragma No_Strict_Aliasing (Real_Attribute_Access);
-    --  Each value in the task control block's Attributes array is either
-    --  mapped to the attribute value directly if Fast_Path is True, or
-    --  is in effect a Real_Attribute_Access.
-    --
-    --  Note: the Deallocator field must be first, for compatibility with
-    --  System.Tasking.Task_Attributes.Attribute_Record and to allow unchecked
-    --  conversions between Attribute_Access and Real_Attribute_Access.
- 
-    function New_Attribute (Val : Attribute) return Atomic_Address;
-    --  Create a new Real_Attribute using Val, and return its address. The
-    --  returned value can be converted via To_Real_Attribute.
- 
-    procedure Deallocate (Ptr : Atomic_Address);
-    --  Free memory associated with Ptr, a Real_Attribute_Access in reality
- 
-    function To_Real_Attribute is new
-      Ada.Unchecked_Conversion (Atomic_Address, Real_Attribute_Access);
- 
-    pragma Warnings (Off);
-    --  Kill warning about possible size mismatch
- 
-    function To_Address is new
-      Ada.Unchecked_Conversion (Attribute, Atomic_Address);
-    function To_Attribute is new
-      Ada.Unchecked_Conversion (Atomic_Address, Attribute);
- 
-    function To_Address is new
-      Ada.Unchecked_Conversion (Attribute, System.Address);
-    function To_Int is new
-      Ada.Unchecked_Conversion (Attribute, Integer);
- 
-    pragma Warnings (On);
- 
-    function To_Address is new
-      Ada.Unchecked_Conversion (Real_Attribute_Access, Atomic_Address);
- 
-    pragma Warnings (Off);
-    --  Kill warning about possible aliasing
- 
-    function To_Handle is new
-      Ada.Unchecked_Conversion (System.Address, Attribute_Handle);
- 
-    pragma Warnings (On);
- 
-    function To_Task_Id is new
-      Ada.Unchecked_Conversion (Task_Identification.Task_Id, Task_Id);
-    --  To access TCB of identified task
- 
-    procedure Free is new
-      Ada.Unchecked_Deallocation (Real_Attribute, Real_Attribute_Access);
- 
-    Fast_Path : constant Boolean :=
-                  (Attribute'Size = Integer'Size
-                    and then Attribute'Alignment <= Atomic_Address'Alignment
-                    and then To_Int (Initial_Value) = 0)
-                  or else (Attribute'Size = System.Address'Size
-                    and then Attribute'Alignment <= Atomic_Address'Alignment
-                    and then To_Address (Initial_Value) = System.Null_Address);
-    --  If the attribute fits in an Atomic_Address (both size and alignment)
-    --  and Initial_Value is 0 (or null), then we will map the attribute
-    --  directly into ATCB.Attributes (Index), otherwise we will create
-    --  a level of indirection and instead use Attributes (Index) as a
-    --  Real_Attribute_Access.
- 
-    Index : constant Integer :=
-              Next_Index (Require_Finalization => not Fast_Path);
-    --  Index in the task control block's Attributes array
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    procedure Finalize (Cleanup : in out Attribute_Cleanup) is
-       pragma Unreferenced (Cleanup);
- 
-    begin
-       STPO.Lock_RTS;
- 
-       declare
-          C : System.Tasking.Task_Id := System.Tasking.All_Tasks_List;
- 
-       begin
-          while C /= null loop
-             STPO.Write_Lock (C);
- 
-             if C.Attributes (Index) /= 0
-               and then Require_Finalization (Index)
-             then
-                Deallocate (C.Attributes (Index));
-                C.Attributes (Index) := 0;
-             end if;
- 
-             STPO.Unlock (C);
-             C := C.Common.All_Tasks_Link;
-          end loop;
-       end;
- 
-       Finalize (Index);
-       STPO.Unlock_RTS;
-    end Finalize;
- 
-    ----------------
-    -- Deallocate --
-    ----------------
- 
-    procedure Deallocate (Ptr : Atomic_Address) is
-       Obj : Real_Attribute_Access := To_Real_Attribute (Ptr);
-    begin
-       Free (Obj);
-    end Deallocate;
- 
-    -------------------
-    -- New_Attribute --
-    -------------------
- 
-    function New_Attribute (Val : Attribute) return Atomic_Address is
-       Tmp : Real_Attribute_Access;
-    begin
-       Tmp := new Real_Attribute'(Free  => Deallocate'Unrestricted_Access,
-                                  Value => Val);
-       return To_Address (Tmp);
-    end New_Attribute;
- 
-    ---------------
-    -- Reference --
-    ---------------
- 
-    function Reference
-      (T : Task_Identification.Task_Id := Task_Identification.Current_Task)
-       return Attribute_Handle
-    is
-       Self_Id       : Task_Id;
-       TT            : constant Task_Id := To_Task_Id (T);
-       Error_Message : constant String  := "trying to get the reference of a ";
-       Result        : Attribute_Handle;
- 
-    begin
-       if TT = null then
-          raise Program_Error with Error_Message & "null task";
-       end if;
- 
-       if TT.Common.State = Terminated then
-          raise Tasking_Error with Error_Message & "terminated task";
-       end if;
- 
-       if Fast_Path then
-          --  Kill warning about possible alignment mismatch. If this happens,
-          --  Fast_Path will be False anyway
-          pragma Warnings (Off);
-          return To_Handle (TT.Attributes (Index)'Address);
-          pragma Warnings (On);
-       else
-          Self_Id := STPO.Self;
-          Task_Lock (Self_Id);
- 
-          if TT.Attributes (Index) = 0 then
-             TT.Attributes (Index) := New_Attribute (Initial_Value);
-          end if;
- 
-          Result := To_Handle
-            (To_Real_Attribute (TT.Attributes (Index)).Value'Address);
-          Task_Unlock (Self_Id);
- 
-          return Result;
-       end if;
-    end Reference;
- 
-    ------------------
-    -- Reinitialize --
-    ------------------
- 
-    procedure Reinitialize
-      (T : Task_Identification.Task_Id := Task_Identification.Current_Task)
-    is
-       Self_Id       : Task_Id;
-       TT            : constant Task_Id := To_Task_Id (T);
-       Error_Message : constant String  := "Trying to Reinitialize a ";
- 
-    begin
-       if TT = null then
-          raise Program_Error with Error_Message & "null task";
-       end if;
- 
-       if TT.Common.State = Terminated then
-          raise Tasking_Error with Error_Message & "terminated task";
-       end if;
- 
-       if Fast_Path then
- 
-          --  No finalization needed, simply reset to Initial_Value
- 
-          TT.Attributes (Index) := To_Address (Initial_Value);
- 
-       else
-          Self_Id := STPO.Self;
-          Task_Lock (Self_Id);
- 
-          declare
-             Attr : Atomic_Address renames TT.Attributes (Index);
-          begin
-             if Attr /= 0 then
-                Deallocate (Attr);
-                Attr := 0;
-             end if;
-          end;
- 
-          Task_Unlock (Self_Id);
-       end if;
-    end Reinitialize;
- 
-    ---------------
-    -- Set_Value --
-    ---------------
- 
-    procedure Set_Value
-      (Val : Attribute;
-       T   : Task_Identification.Task_Id := Task_Identification.Current_Task)
-    is
-       Self_Id       : Task_Id;
-       TT            : constant Task_Id := To_Task_Id (T);
-       Error_Message : constant String  := "trying to set the value of a ";
- 
-    begin
-       if TT = null then
-          raise Program_Error with Error_Message & "null task";
-       end if;
- 
-       if TT.Common.State = Terminated then
-          raise Tasking_Error with Error_Message & "terminated task";
-       end if;
- 
-       if Fast_Path then
- 
-          --  No finalization needed, simply set to Val
- 
-          TT.Attributes (Index) := To_Address (Val);
- 
-       else
-          Self_Id := STPO.Self;
-          Task_Lock (Self_Id);
- 
-          declare
-             Attr : Atomic_Address renames TT.Attributes (Index);
- 
-          begin
-             if Attr /= 0 then
-                Deallocate (Attr);
-             end if;
- 
-             Attr := New_Attribute (Val);
-          end;
- 
-          Task_Unlock (Self_Id);
-       end if;
-    end Set_Value;
- 
-    -----------
-    -- Value --
-    -----------
- 
-    function Value
-      (T : Task_Identification.Task_Id := Task_Identification.Current_Task)
-       return Attribute
-    is
-       Self_Id       : Task_Id;
-       TT            : constant Task_Id := To_Task_Id (T);
-       Error_Message : constant String  := "trying to get the value of a ";
- 
-    begin
-       if TT = null then
-          raise Program_Error with Error_Message & "null task";
-       end if;
- 
-       if TT.Common.State = Terminated then
-          raise Tasking_Error with Error_Message & "terminated task";
-       end if;
- 
-       if Fast_Path then
-          return To_Attribute (TT.Attributes (Index));
- 
-       else
-          Self_Id := STPO.Self;
-          Task_Lock (Self_Id);
- 
-          declare
-             Attr : Atomic_Address renames TT.Attributes (Index);
- 
-          begin
-             if Attr = 0 then
-                Task_Unlock (Self_Id);
-                return Initial_Value;
- 
-             else
-                declare
-                   Result : constant Attribute :=
-                              To_Real_Attribute (Attr).Value;
-                begin
-                   Task_Unlock (Self_Id);
-                   return Result;
-                end;
-             end if;
-          end;
-       end if;
-    end Value;
- 
- end Ada.Task_Attributes;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-tasatt.ads gcc-8.1.0/gcc/ada/a-tasatt.ads
*** gcc-7.3.0/gcc/ada/a-tasatt.ads	Thu Apr 21 10:21:56 2016
--- gcc-8.1.0/gcc/ada/a-tasatt.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,93 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                  A D A . T A S K _ A T T R I B U T E S                   --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --            Copyright (C) 2014-2016, Free Software Foundation, 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Task_Identification;
- 
- generic
-    type Attribute is private;
-    Initial_Value : Attribute;
- 
- package Ada.Task_Attributes is
- 
-    --  Note that this package will use an efficient implementation with no
-    --  locks and no extra dynamic memory allocation if Attribute is the size
-    --  of either Integer or System.Address, and Initial_Value is 0 (null for
-    --  an access type).
- 
-    --  Other types and initial values are supported, but will require
-    --  the use of locking and a level of indirection (meaning extra dynamic
-    --  memory allocation).
- 
-    --  The maximum number of task attributes supported by this implementation
-    --  is determined by the constant System.Parameters.Max_Attribute_Count.
-    --  If you exceed this number, Storage_Error will be raised during the
-    --  elaboration of the instantiation of this package.
- 
-    type Attribute_Handle is access all Attribute;
- 
-    function Value
-      (T : Ada.Task_Identification.Task_Id :=
-             Ada.Task_Identification.Current_Task) return Attribute;
-    --  Return the value of the corresponding attribute of T. Tasking_Error
-    --  is raised if T is terminated and Program_Error will be raised if T
-    --  is Null_Task_Id.
- 
-    function Reference
-      (T : Ada.Task_Identification.Task_Id :=
-             Ada.Task_Identification.Current_Task) return Attribute_Handle;
-    --  Return an access value that designates the corresponding attribute of
-    --  T. Tasking_Error is raised if T is terminated and Program_Error will be
-    --  raised if T is Null_Task_Id.
- 
-    procedure Set_Value
-      (Val : Attribute;
-       T   : Ada.Task_Identification.Task_Id :=
-               Ada.Task_Identification.Current_Task);
-    --  Finalize the old value of the attribute of T and assign Val to that
-    --  attribute. Tasking_Error is raised if T is terminated and Program_Error
-    --  will be raised if T is Null_Task_Id.
- 
-    procedure Reinitialize
-      (T : Ada.Task_Identification.Task_Id :=
-             Ada.Task_Identification.Current_Task);
-    --  Same as Set_Value (Initial_Value, T). Tasking_Error is raised if T is
-    --  terminated and Program_Error will be raised if T is Null_Task_Id.
- 
- private
-    pragma Inline (Value);
-    pragma Inline (Reference);
-    pragma Inline (Set_Value);
-    pragma Inline (Reinitialize);
- end Ada.Task_Attributes;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-taside.adb gcc-8.1.0/gcc/ada/a-taside.adb
*** gcc-7.3.0/gcc/ada/a-taside.adb	Tue Oct 20 12:24:52 2015
--- gcc-8.1.0/gcc/ada/a-taside.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,215 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                        GNAT RUN-TIME COMPONENTS                          --
- --                                                                          --
- --              A D A . T A S K _ I D E N T I F I C A T I O N               --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2013, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 System.Address_Image;
- with System.Parameters;
- with System.Soft_Links;
- with System.Task_Primitives;
- with System.Task_Primitives.Operations;
- with Ada.Unchecked_Conversion;
- 
- pragma Warnings (Off);
- --  Allow withing of non-Preelaborated units in Ada 2005 mode where this
- --  package will be categorized as Preelaborate. See AI-362 for details.
- --  It is safe in the context of the run-time to violate the rules.
- 
- with System.Tasking.Utilities;
- 
- pragma Warnings (On);
- 
- package body Ada.Task_Identification with
-   SPARK_Mode => Off
- is
- 
-    use System.Parameters;
- 
-    package STPO renames System.Task_Primitives.Operations;
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    function Convert_Ids (T : Task_Id) return System.Tasking.Task_Id;
-    function Convert_Ids (T : System.Tasking.Task_Id) return Task_Id;
-    pragma Inline (Convert_Ids);
-    --  Conversion functions between different forms of Task_Id
- 
-    ---------
-    -- "=" --
-    ---------
- 
-    function "=" (Left, Right : Task_Id) return Boolean is
-    begin
-       return System.Tasking."=" (Convert_Ids (Left), Convert_Ids (Right));
-    end "=";
- 
-    -----------------
-    -- Abort_Task --
-    ----------------
- 
-    procedure Abort_Task (T : Task_Id) is
-    begin
-       if T = Null_Task_Id then
-          raise Program_Error;
-       else
-          System.Tasking.Utilities.Abort_Tasks
-            (System.Tasking.Task_List'(1 => Convert_Ids (T)));
-       end if;
-    end Abort_Task;
- 
-    ----------------------------
-    -- Activation_Is_Complete --
-    ----------------------------
- 
-    function Activation_Is_Complete (T : Task_Id) return Boolean is
-       use type System.Tasking.Task_Id;
-    begin
-       return Convert_Ids (T).Common.Activator = null;
-    end Activation_Is_Complete;
- 
-    -----------------
-    -- Convert_Ids --
-    -----------------
- 
-    function Convert_Ids (T : Task_Id) return System.Tasking.Task_Id is
-    begin
-       return System.Tasking.Task_Id (T);
-    end Convert_Ids;
- 
-    function Convert_Ids (T : System.Tasking.Task_Id) return Task_Id is
-    begin
-       return Task_Id (T);
-    end Convert_Ids;
- 
-    ------------------
-    -- Current_Task --
-    ------------------
- 
-    function Current_Task return Task_Id is
-    begin
-       return Convert_Ids (System.Task_Primitives.Operations.Self);
-    end Current_Task;
- 
-    ----------------------
-    -- Environment_Task --
-    ----------------------
- 
-    function Environment_Task return Task_Id is
-    begin
-       return Convert_Ids (System.Task_Primitives.Operations.Environment_Task);
-    end Environment_Task;
- 
-    -----------
-    -- Image --
-    -----------
- 
-    function Image (T : Task_Id) return String is
-       function To_Address is new
-         Ada.Unchecked_Conversion
-           (Task_Id, System.Task_Primitives.Task_Address);
- 
-    begin
-       if T = Null_Task_Id then
-          return "";
- 
-       elsif T.Common.Task_Image_Len = 0 then
-          return System.Address_Image (To_Address (T));
- 
-       else
-          return T.Common.Task_Image (1 .. T.Common.Task_Image_Len)
-             & "_" &  System.Address_Image (To_Address (T));
-       end if;
-    end Image;
- 
-    -----------------
-    -- Is_Callable --
-    -----------------
- 
-    function Is_Callable (T : Task_Id) return Boolean is
-       Result : Boolean;
-       Id     : constant System.Tasking.Task_Id := Convert_Ids (T);
-    begin
-       if T = Null_Task_Id then
-          raise Program_Error;
-       else
-          System.Soft_Links.Abort_Defer.all;
- 
-          if Single_Lock then
-             STPO.Lock_RTS;
-          end if;
- 
-          STPO.Write_Lock (Id);
-          Result := Id.Callable;
-          STPO.Unlock (Id);
- 
-          if Single_Lock then
-             STPO.Unlock_RTS;
-          end if;
- 
-          System.Soft_Links.Abort_Undefer.all;
-          return Result;
-       end if;
-    end Is_Callable;
- 
-    -------------------
-    -- Is_Terminated --
-    -------------------
- 
-    function Is_Terminated (T : Task_Id) return Boolean is
-       Result : Boolean;
-       Id     : constant System.Tasking.Task_Id := Convert_Ids (T);
- 
-       use System.Tasking;
- 
-    begin
-       if T = Null_Task_Id then
-          raise Program_Error;
-       else
-          System.Soft_Links.Abort_Defer.all;
- 
-          if Single_Lock then
-             STPO.Lock_RTS;
-          end if;
- 
-          STPO.Write_Lock (Id);
-          Result := Id.Common.State = Terminated;
-          STPO.Unlock (Id);
- 
-          if Single_Lock then
-             STPO.Unlock_RTS;
-          end if;
- 
-          System.Soft_Links.Abort_Undefer.all;
-          return Result;
-       end if;
-    end Is_Terminated;
- 
- end Ada.Task_Identification;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-taside.ads gcc-8.1.0/gcc/ada/a-taside.ads
*** gcc-7.3.0/gcc/ada/a-taside.ads	Wed Apr 20 09:04:48 2016
--- gcc-8.1.0/gcc/ada/a-taside.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,97 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --              A D A . T A S K _ I D E N T I F I C A T I O N               --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2015, Free Software Foundation, 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with System;
- with System.Tasking;
- 
- package Ada.Task_Identification with
-   SPARK_Mode,
-   Abstract_State => (Tasking_State with Synchronous,
-                                         External => (Async_Readers,
-                                                      Async_Writers)),
-   Initializes    => Tasking_State
- is
-    pragma Preelaborate;
-    --  In accordance with Ada 2005 AI-362
- 
-    type Task_Id is private;
-    pragma Preelaborable_Initialization (Task_Id);
- 
-    Null_Task_Id : constant Task_Id;
- 
-    function "=" (Left, Right : Task_Id) return Boolean with
-      Global => null;
-    pragma Inline ("=");
- 
-    function Image (T : Task_Id) return String with
-      Global => null;
- 
-    function Current_Task return Task_Id with
-      Volatile_Function,
-      Global => Tasking_State;
-    pragma Inline (Current_Task);
- 
-    function Environment_Task return Task_Id with
-      SPARK_Mode => Off,
-      Global     => null;
-    pragma Inline (Environment_Task);
- 
-    procedure Abort_Task (T : Task_Id) with
-      Global => null;
-    pragma Inline (Abort_Task);
-    --  Note: parameter is mode IN, not IN OUT, per AI-00101
- 
-    function Is_Terminated (T : Task_Id) return Boolean with
-      Volatile_Function,
-      Global => Tasking_State;
-    pragma Inline (Is_Terminated);
- 
-    function Is_Callable (T : Task_Id) return Boolean with
-      Volatile_Function,
-      Global => Tasking_State;
-    pragma Inline (Is_Callable);
- 
-    function Activation_Is_Complete (T : Task_Id) return Boolean with
-      Volatile_Function,
-      Global => Tasking_State;
- 
- private
-    pragma SPARK_Mode (Off);
- 
-    type Task_Id is new System.Tasking.Task_Id;
- 
-    Null_Task_Id : constant Task_Id := null;
- 
- end Ada.Task_Identification;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-taster.adb gcc-8.1.0/gcc/ada/a-taster.adb
*** gcc-7.3.0/gcc/ada/a-taster.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-taster.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,191 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                 A D A . T A S K _ T E R M I N A T I O N                  --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2005-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- --
- -- 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 System.Tasking;
- with System.Task_Primitives.Operations;
- with System.Parameters;
- with System.Soft_Links;
- 
- with Ada.Unchecked_Conversion;
- 
- package body Ada.Task_Termination is
- 
-    use type Ada.Task_Identification.Task_Id;
- 
-    package STPO renames System.Task_Primitives.Operations;
-    package SSL  renames System.Soft_Links;
- 
-    use System.Parameters;
- 
-    -----------------------
-    -- Local subprograms --
-    -----------------------
- 
-    function To_TT is new Ada.Unchecked_Conversion
-      (System.Tasking.Termination_Handler, Termination_Handler);
- 
-    function To_ST is new Ada.Unchecked_Conversion
-      (Termination_Handler, System.Tasking.Termination_Handler);
- 
-    function To_Task_Id is new Ada.Unchecked_Conversion
-      (Ada.Task_Identification.Task_Id, System.Tasking.Task_Id);
- 
-    -----------------------------------
-    -- Current_Task_Fallback_Handler --
-    -----------------------------------
- 
-    function Current_Task_Fallback_Handler return Termination_Handler is
-    begin
-       --  There is no need for explicit protection against race conditions
-       --  for this function because this function can only be executed by
-       --  Self, and the Fall_Back_Handler can only be modified by Self.
- 
-       return To_TT (STPO.Self.Common.Fall_Back_Handler);
-    end Current_Task_Fallback_Handler;
- 
-    -------------------------------------
-    -- Set_Dependents_Fallback_Handler --
-    -------------------------------------
- 
-    procedure Set_Dependents_Fallback_Handler
-      (Handler : Termination_Handler)
-    is
-       Self : constant System.Tasking.Task_Id := STPO.Self;
- 
-    begin
-       SSL.Abort_Defer.all;
- 
-       if Single_Lock then
-          STPO.Lock_RTS;
-       end if;
- 
-       STPO.Write_Lock (Self);
- 
-       Self.Common.Fall_Back_Handler := To_ST (Handler);
- 
-       STPO.Unlock (Self);
- 
-       if Single_Lock then
-          STPO.Unlock_RTS;
-       end if;
- 
-       SSL.Abort_Undefer.all;
-    end Set_Dependents_Fallback_Handler;
- 
-    --------------------------
-    -- Set_Specific_Handler --
-    --------------------------
- 
-    procedure Set_Specific_Handler
-      (T       : Ada.Task_Identification.Task_Id;
-       Handler : Termination_Handler)
-    is
-    begin
-       --  Tasking_Error is raised if the task identified by T has already
-       --  terminated. Program_Error is raised if the value of T is
-       --  Null_Task_Id.
- 
-       if T = Ada.Task_Identification.Null_Task_Id then
-          raise Program_Error;
-       elsif Ada.Task_Identification.Is_Terminated (T) then
-          raise Tasking_Error;
-       else
-          declare
-             Target : constant System.Tasking.Task_Id := To_Task_Id (T);
- 
-          begin
-             SSL.Abort_Defer.all;
- 
-             if Single_Lock then
-                STPO.Lock_RTS;
-             end if;
- 
-             STPO.Write_Lock (Target);
- 
-             Target.Common.Specific_Handler := To_ST (Handler);
- 
-             STPO.Unlock (Target);
- 
-             if Single_Lock then
-                STPO.Unlock_RTS;
-             end if;
- 
-             SSL.Abort_Undefer.all;
-          end;
-       end if;
-    end Set_Specific_Handler;
- 
-    ----------------------
-    -- Specific_Handler --
-    ----------------------
- 
-    function Specific_Handler
-      (T : Ada.Task_Identification.Task_Id) return Termination_Handler
-    is
-    begin
-       --  Tasking_Error is raised if the task identified by T has already
-       --  terminated. Program_Error is raised if the value of T is
-       --  Null_Task_Id.
- 
-       if T = Ada.Task_Identification.Null_Task_Id then
-          raise Program_Error;
-       elsif Ada.Task_Identification.Is_Terminated (T) then
-          raise Tasking_Error;
-       else
-          declare
-             Target : constant System.Tasking.Task_Id := To_Task_Id (T);
-             TH     : Termination_Handler;
- 
-          begin
-             SSL.Abort_Defer.all;
- 
-             if Single_Lock then
-                STPO.Lock_RTS;
-             end if;
- 
-             STPO.Write_Lock (Target);
- 
-             TH := To_TT (Target.Common.Specific_Handler);
- 
-             STPO.Unlock (Target);
- 
-             if Single_Lock then
-                STPO.Unlock_RTS;
-             end if;
- 
-             SSL.Abort_Undefer.all;
- 
-             return TH;
-          end;
-       end if;
-    end Specific_Handler;
- 
- end Ada.Task_Termination;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-taster.ads gcc-8.1.0/gcc/ada/a-taster.ads
*** gcc-7.3.0/gcc/ada/a-taster.ads	Tue May 12 12:47:19 2015
--- gcc-8.1.0/gcc/ada/a-taster.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,39 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                 A D A . T A S K _ T E R M I N A T I O N                  --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Task_Identification;
- with Ada.Exceptions;
- 
- package Ada.Task_Termination is
-    pragma Preelaborate (Task_Termination);
- 
-    type Cause_Of_Termination is (Normal, Abnormal, Unhandled_Exception);
- 
-    type Termination_Handler is access protected procedure
-      (Cause : Cause_Of_Termination;
-       T     : Ada.Task_Identification.Task_Id;
-       X     : Ada.Exceptions.Exception_Occurrence);
- 
-    procedure Set_Dependents_Fallback_Handler
-      (Handler : Termination_Handler);
-    function Current_Task_Fallback_Handler return Termination_Handler;
- 
-    procedure Set_Specific_Handler
-      (T       : Ada.Task_Identification.Task_Id;
-       Handler : Termination_Handler);
-    function Specific_Handler
-      (T : Ada.Task_Identification.Task_Id) return Termination_Handler;
- 
- end Ada.Task_Termination;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-teioed.adb gcc-8.1.0/gcc/ada/a-teioed.adb
*** gcc-7.3.0/gcc/ada/a-teioed.adb	Fri Jan 13 10:19:19 2017
--- gcc-8.1.0/gcc/ada/a-teioed.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,2860 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                  A D A . T E X T _ I O . E D I T I N G                   --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Strings.Fixed;
- package body Ada.Text_IO.Editing is
- 
-    package Strings renames Ada.Strings;
-    package Strings_Fixed renames Ada.Strings.Fixed;
-    package Text_IO renames Ada.Text_IO;
- 
-    ---------------------
-    -- Blank_When_Zero --
-    ---------------------
- 
-    function Blank_When_Zero (Pic : Picture) return Boolean is
-    begin
-       return Pic.Contents.Original_BWZ;
-    end Blank_When_Zero;
- 
-    ------------
-    -- Expand --
-    ------------
- 
-    function Expand (Picture : String) return String is
-       Result        : String (1 .. MAX_PICSIZE);
-       Picture_Index : Integer := Picture'First;
-       Result_Index  : Integer := Result'First;
-       Count         : Natural;
-       Last          : Integer;
- 
-       package Int_IO is new Ada.Text_IO.Integer_IO (Integer);
- 
-    begin
-       if Picture'Length < 1 then
-          raise Picture_Error;
-       end if;
- 
-       if Picture (Picture'First) = '(' then
-          raise Picture_Error;
-       end if;
- 
-       loop
-          case Picture (Picture_Index) is
-             when '(' =>
-                Int_IO.Get
-                  (Picture (Picture_Index + 1 .. Picture'Last), Count, Last);
- 
-                if Picture (Last + 1) /= ')' then
-                   raise Picture_Error;
-                end if;
- 
-                --  In what follows note that one copy of the repeated character
-                --  has already been made, so a count of one is a no-op, and a
-                --  count of zero erases a character.
- 
-                if Result_Index + Count - 2 > Result'Last then
-                   raise Picture_Error;
-                end if;
- 
-                for J in 2 .. Count loop
-                   Result (Result_Index + J - 2) := Picture (Picture_Index - 1);
-                end loop;
- 
-                Result_Index := Result_Index + Count - 1;
- 
-                --  Last + 1 was a ')' throw it away too
- 
-                Picture_Index := Last + 2;
- 
-             when ')' =>
-                raise Picture_Error;
- 
-             when others =>
-                if Result_Index > Result'Last then
-                   raise Picture_Error;
-                end if;
- 
-                Result (Result_Index) := Picture (Picture_Index);
-                Picture_Index := Picture_Index + 1;
-                Result_Index := Result_Index + 1;
-          end case;
- 
-          exit when Picture_Index > Picture'Last;
-       end loop;
- 
-       return Result (1 .. Result_Index - 1);
- 
-    exception
-       when others =>
-          raise Picture_Error;
-    end Expand;
- 
-    -------------------
-    -- Format_Number --
-    -------------------
- 
-    function Format_Number
-      (Pic                 : Format_Record;
-       Number              : String;
-       Currency_Symbol     : String;
-       Fill_Character      : Character;
-       Separator_Character : Character;
-       Radix_Point         : Character) return String
-    is
-       Attrs    : Number_Attributes := Parse_Number_String (Number);
-       Position : Integer;
-       Rounded  : String := Number;
- 
-       Sign_Position : Integer := Pic.Sign_Position; --  may float.
- 
-       Answer : String (1 .. Pic.Picture.Length) := Pic.Picture.Expanded;
-       Last          : Integer;
-       Currency_Pos  : Integer := Pic.Start_Currency;
-       In_Currency   : Boolean := False;
- 
-       Dollar : Boolean := False;
-       --  Overridden immediately if necessary
- 
-       Zero : Boolean := True;
-       --  Set to False when a non-zero digit is output
- 
-    begin
- 
-       --  If the picture has fewer decimal places than the number, the image
-       --  must be rounded according to the usual rules.
- 
-       if Attrs.Has_Fraction then
-          declare
-             R : constant Integer :=
-               (Attrs.End_Of_Fraction - Attrs.Start_Of_Fraction + 1)
-                 - Pic.Max_Trailing_Digits;
-             R_Pos : Integer;
- 
-          begin
-             if R > 0 then
-                R_Pos := Attrs.End_Of_Fraction - R;
- 
-                if Rounded (R_Pos + 1) > '4' then
- 
-                   if Rounded (R_Pos) = '.' then
-                      R_Pos := R_Pos - 1;
-                   end if;
- 
-                   if Rounded (R_Pos) /= '9' then
-                      Rounded (R_Pos) := Character'Succ (Rounded (R_Pos));
-                   else
-                      Rounded (R_Pos) := '0';
-                      R_Pos := R_Pos - 1;
- 
-                      while R_Pos > 1 loop
-                         if Rounded (R_Pos) = '.' then
-                            R_Pos := R_Pos - 1;
-                         end if;
- 
-                         if Rounded (R_Pos) /= '9' then
-                            Rounded (R_Pos) := Character'Succ (Rounded (R_Pos));
-                            exit;
-                         else
-                            Rounded (R_Pos) := '0';
-                            R_Pos := R_Pos - 1;
-                         end if;
-                      end loop;
- 
-                      --  The rounding may add a digit in front. Either the
-                      --  leading blank or the sign (already captured) can
-                      --  be overwritten.
- 
-                      if R_Pos = 1 then
-                         Rounded (R_Pos) := '1';
-                         Attrs.Start_Of_Int := Attrs.Start_Of_Int - 1;
-                      end if;
-                   end if;
-                end if;
-             end if;
-          end;
-       end if;
- 
-       if Pic.Start_Currency /= Invalid_Position then
-          Dollar := Answer (Pic.Start_Currency) = '$';
-       end if;
- 
-       --  Fix up "direct inserts" outside the playing field. Set up as one
-       --  loop to do the beginning, one (reverse) loop to do the end.
- 
-       Last := 1;
-       loop
-          exit when Last = Pic.Start_Float;
-          exit when Last = Pic.Radix_Position;
-          exit when Answer (Last) = '9';
- 
-          case Answer (Last) is
-             when '_' =>
-                Answer (Last) := Separator_Character;
- 
-             when 'b' =>
-                Answer (Last) := ' ';
- 
-             when others =>
-                null;
-          end case;
- 
-          exit when Last = Answer'Last;
- 
-          Last := Last + 1;
-       end loop;
- 
-       --  Now for the end...
- 
-       for J in reverse Last .. Answer'Last loop
-          exit when J = Pic.Radix_Position;
- 
-          --  Do this test First, Separator_Character can equal Pic.Floater
- 
-          if Answer (J) = Pic.Floater then
-             exit;
-          end if;
- 
-          case Answer (J) is
-             when '_' =>
-                Answer (J) := Separator_Character;
- 
-             when 'b' =>
-                Answer (J) := ' ';
- 
-             when '9' =>
-                exit;
- 
-             when others =>
-                null;
-          end case;
-       end loop;
- 
-       --  Non-floating sign
- 
-       if Pic.Start_Currency /= -1
-         and then Answer (Pic.Start_Currency) = '#'
-         and then Pic.Floater /= '#'
-       then
-          if Currency_Symbol'Length >
-             Pic.End_Currency - Pic.Start_Currency + 1
-          then
-             raise Picture_Error;
- 
-          elsif Currency_Symbol'Length =
-             Pic.End_Currency - Pic.Start_Currency + 1
-          then
-             Answer (Pic.Start_Currency .. Pic.End_Currency) :=
-               Currency_Symbol;
- 
-          elsif Pic.Radix_Position = Invalid_Position
-            or else Pic.Start_Currency < Pic.Radix_Position
-          then
-             Answer (Pic.Start_Currency .. Pic.End_Currency) :=
-                                                         (others => ' ');
-             Answer (Pic.End_Currency - Currency_Symbol'Length + 1 ..
-                     Pic.End_Currency) := Currency_Symbol;
- 
-          else
-             Answer (Pic.Start_Currency .. Pic.End_Currency) :=
-                                                         (others => ' ');
-             Answer (Pic.Start_Currency ..
-                     Pic.Start_Currency + Currency_Symbol'Length - 1) :=
-                                                         Currency_Symbol;
-          end if;
-       end if;
- 
-       --  Fill in leading digits
- 
-       if Attrs.End_Of_Int - Attrs.Start_Of_Int + 1 >
-                                                 Pic.Max_Leading_Digits
-       then
-          raise Ada.Text_IO.Layout_Error;
-       end if;
- 
-       Position :=
-         (if Pic.Radix_Position = Invalid_Position
-          then Answer'Last
-          else Pic.Radix_Position - 1);
- 
-       for J in reverse Attrs.Start_Of_Int .. Attrs.End_Of_Int loop
-          while Answer (Position) /= '9'
-                  and then
-                Answer (Position) /= Pic.Floater
-          loop
-             if Answer (Position) = '_' then
-                Answer (Position) := Separator_Character;
- 
-             elsif Answer (Position) = 'b' then
-                Answer (Position) := ' ';
-             end if;
- 
-             Position := Position - 1;
-          end loop;
- 
-          Answer (Position) := Rounded (J);
- 
-          if Rounded (J) /= '0' then
-             Zero := False;
-          end if;
- 
-          Position := Position - 1;
-       end loop;
- 
-       --  Do lead float
- 
-       if Pic.Start_Float = Invalid_Position then
- 
-          --  No leading floats, but need to change '9' to '0', '_' to
-          --  Separator_Character and 'b' to ' '.
- 
-          for J in Last .. Position loop
- 
-             --  Last set when fixing the "uninteresting" leaders above.
-             --  Don't duplicate the work.
- 
-             if Answer (J) = '9' then
-                Answer (J) := '0';
- 
-             elsif Answer (J) = '_' then
-                Answer (J) := Separator_Character;
- 
-             elsif Answer (J) = 'b' then
-                Answer (J) := ' ';
-             end if;
-          end loop;
- 
-       elsif Pic.Floater = '<'
-               or else
-             Pic.Floater = '+'
-               or else
-             Pic.Floater = '-'
-       then
-          for J in Pic.End_Float .. Position loop --  May be null range.
-             if Answer (J) = '9' then
-                Answer (J) := '0';
- 
-             elsif Answer (J) = '_' then
-                Answer (J) := Separator_Character;
- 
-             elsif Answer (J) = 'b' then
-                Answer (J) := ' ';
-             end if;
-          end loop;
- 
-          if Position > Pic.End_Float then
-             Position := Pic.End_Float;
-          end if;
- 
-          for J in Pic.Start_Float .. Position - 1 loop
-             Answer (J) := ' ';
-          end loop;
- 
-          Answer (Position) := Pic.Floater;
-          Sign_Position     := Position;
- 
-       elsif Pic.Floater = '$' then
- 
-          for J in Pic.End_Float .. Position loop --  May be null range.
-             if Answer (J) = '9' then
-                Answer (J) := '0';
- 
-             elsif Answer (J) = '_' then
-                Answer (J) := ' ';    --  no separators before leftmost digit.
- 
-             elsif Answer (J) = 'b' then
-                Answer (J) := ' ';
-             end if;
-          end loop;
- 
-          if Position > Pic.End_Float then
-             Position := Pic.End_Float;
-          end if;
- 
-          for J in Pic.Start_Float .. Position - 1 loop
-             Answer (J) := ' ';
-          end loop;
- 
-          Answer (Position) := Pic.Floater;
-          Currency_Pos      := Position;
- 
-       elsif Pic.Floater = '*' then
- 
-          for J in Pic.End_Float .. Position loop --  May be null range.
-             if Answer (J) = '9' then
-                Answer (J) := '0';
- 
-             elsif Answer (J) = '_' then
-                Answer (J) := Separator_Character;
- 
-             elsif Answer (J) = 'b' then
-                Answer (J) := Fill_Character;
-             end if;
-          end loop;
- 
-          if Position > Pic.End_Float then
-             Position := Pic.End_Float;
-          end if;
- 
-          for J in Pic.Start_Float .. Position loop
-             Answer (J) := Fill_Character;
-          end loop;
- 
-       else
-          if Pic.Floater = '#' then
-             Currency_Pos := Currency_Symbol'Length;
-             In_Currency := True;
-          end if;
- 
-          for J in reverse Pic.Start_Float .. Position loop
-             case Answer (J) is
-                when '*' =>
-                   Answer (J) := Fill_Character;
- 
-                when 'b' | '/' =>
-                   if In_Currency and then Currency_Pos > 0 then
-                      Answer (J)   := Currency_Symbol (Currency_Pos);
-                      Currency_Pos := Currency_Pos - 1;
-                   else
-                      Answer (J) := ' ';
-                   end if;
- 
-                when 'Z' | '0' =>
-                   Answer (J) := ' ';
- 
-                when '9' =>
-                   Answer (J) := '0';
- 
-                when '.' | 'V' | 'v' | '<' | '$' | '+' | '-' =>
-                   null;
- 
-                when '#' =>
-                   if Currency_Pos = 0 then
-                      Answer (J) := ' ';
-                   else
-                      Answer (J)   := Currency_Symbol (Currency_Pos);
-                      Currency_Pos := Currency_Pos - 1;
-                   end if;
- 
-                when '_' =>
-                   case Pic.Floater is
-                      when '*' =>
-                         Answer (J) := Fill_Character;
- 
-                      when 'Z' | 'b' =>
-                         Answer (J) := ' ';
- 
-                      when '#' =>
-                         if Currency_Pos = 0 then
-                            Answer (J) := ' ';
- 
-                         else
-                            Answer (J)   := Currency_Symbol (Currency_Pos);
-                            Currency_Pos := Currency_Pos - 1;
-                         end if;
- 
-                      when others =>
-                         null;
-                   end case;
- 
-                when others =>
-                   null;
-             end case;
-          end loop;
- 
-          if Pic.Floater = '#' and then Currency_Pos /= 0 then
-             raise Ada.Text_IO.Layout_Error;
-          end if;
-       end if;
- 
-       --  Do sign
- 
-       if Sign_Position = Invalid_Position then
-          if Attrs.Negative then
-             raise Ada.Text_IO.Layout_Error;
-          end if;
- 
-       else
-          if Attrs.Negative then
-             case Answer (Sign_Position) is
-                when 'C' | 'D' | '-' =>
-                   null;
- 
-                when '+' =>
-                   Answer (Sign_Position) := '-';
- 
-                when '<' =>
-                   Answer (Sign_Position)   := '(';
-                   Answer (Pic.Second_Sign) := ')';
- 
-                when others =>
-                   raise Picture_Error;
-             end case;
- 
-          else --  positive
- 
-             case Answer (Sign_Position) is
-                when '-' =>
-                   Answer (Sign_Position) := ' ';
- 
-                when '<' | 'C' | 'D' =>
-                   Answer (Sign_Position)   := ' ';
-                   Answer (Pic.Second_Sign) := ' ';
- 
-                when '+' =>
-                   null;
- 
-                when others =>
-                   raise Picture_Error;
-             end case;
-          end if;
-       end if;
- 
-       --  Fill in trailing digits
- 
-       if Pic.Max_Trailing_Digits > 0 then
- 
-          if Attrs.Has_Fraction then
-             Position := Attrs.Start_Of_Fraction;
-             Last     := Pic.Radix_Position + 1;
- 
-             for J in Last .. Answer'Last loop
-                if Answer (J) = '9' or else Answer (J) = Pic.Floater then
-                   Answer (J) := Rounded (Position);
- 
-                   if Rounded (Position) /= '0' then
-                      Zero := False;
-                   end if;
- 
-                   Position := Position + 1;
-                   Last     := J + 1;
- 
-                   --  Used up fraction but remember place in Answer
- 
-                   exit when Position > Attrs.End_Of_Fraction;
- 
-                elsif Answer (J) = 'b' then
-                   Answer (J) := ' ';
- 
-                elsif Answer (J) = '_' then
-                   Answer (J) := Separator_Character;
-                end if;
- 
-                Last := J + 1;
-             end loop;
- 
-             Position := Last;
- 
-          else
-             Position := Pic.Radix_Position + 1;
-          end if;
- 
-          --  Now fill remaining 9's with zeros and _ with separators
- 
-          Last := Answer'Last;
- 
-          for J in Position .. Last loop
-             if Answer (J) = '9' then
-                Answer (J) := '0';
- 
-             elsif Answer (J) = Pic.Floater then
-                Answer (J) := '0';
- 
-             elsif Answer (J) = '_' then
-                Answer (J) := Separator_Character;
- 
-             elsif Answer (J) = 'b' then
-                Answer (J) := ' ';
- 
-             end if;
-          end loop;
- 
-          Position := Last + 1;
- 
-       else
-          if Pic.Floater = '#' and then Currency_Pos /= 0 then
-             raise Ada.Text_IO.Layout_Error;
-          end if;
- 
-          --  No trailing digits, but now J may need to stick in a currency
-          --  symbol or sign.
- 
-          Position :=
-            (if Pic.Start_Currency = Invalid_Position
-             then Answer'Last + 1
-             else Pic.Start_Currency);
-       end if;
- 
-       for J in Position .. Answer'Last loop
-          if Pic.Start_Currency /= Invalid_Position
-            and then Answer (Pic.Start_Currency) = '#'
-          then
-             Currency_Pos := 1;
-          end if;
- 
-          case Answer (J) is
-             when '*' =>
-                Answer (J) := Fill_Character;
- 
-             when 'b' =>
-                if In_Currency then
-                   Answer (J) := Currency_Symbol (Currency_Pos);
-                   Currency_Pos := Currency_Pos + 1;
- 
-                   if Currency_Pos > Currency_Symbol'Length then
-                      In_Currency := False;
-                   end if;
-                end if;
- 
-             when '#' =>
-                if Currency_Pos > Currency_Symbol'Length then
-                   Answer (J) := ' ';
- 
-                else
-                   In_Currency := True;
-                   Answer (J)   := Currency_Symbol (Currency_Pos);
-                   Currency_Pos := Currency_Pos + 1;
- 
-                   if Currency_Pos > Currency_Symbol'Length then
-                      In_Currency := False;
-                   end if;
-                end if;
- 
-             when '_' =>
-                Answer (J) := Currency_Symbol (Currency_Pos);
-                Currency_Pos := Currency_Pos + 1;
- 
-                case Pic.Floater is
-                   when '*' =>
-                      Answer (J) := Fill_Character;
- 
-                   when 'Z' | 'z' =>
-                      Answer (J) := ' ';
- 
-                   when '#' =>
-                      if Currency_Pos > Currency_Symbol'Length then
-                         Answer (J) := ' ';
-                      else
-                         Answer (J)   := Currency_Symbol (Currency_Pos);
-                         Currency_Pos := Currency_Pos + 1;
-                      end if;
- 
-                   when others =>
-                      null;
-                end case;
- 
-             when others =>
-                exit;
-          end case;
-       end loop;
- 
-       --  Now get rid of Blank_when_Zero and complete Star fill
- 
-       if Zero and then Pic.Blank_When_Zero then
- 
-          --  Value is zero, and blank it
- 
-          Last := Answer'Last;
- 
-          if Dollar then
-             Last := Last - 1 + Currency_Symbol'Length;
-          end if;
- 
-          if Pic.Radix_Position /= Invalid_Position
-            and then Answer (Pic.Radix_Position) = 'V'
-          then
-             Last := Last - 1;
-          end if;
- 
-          return String'(1 .. Last => ' ');
- 
-       elsif Zero and then Pic.Star_Fill then
-          Last := Answer'Last;
- 
-          if Dollar then
-             Last := Last - 1 + Currency_Symbol'Length;
-          end if;
- 
-          if Pic.Radix_Position /= Invalid_Position then
- 
-             if Answer (Pic.Radix_Position) = 'V' then
-                Last := Last - 1;
- 
-             elsif Dollar then
-                if Pic.Radix_Position > Pic.Start_Currency then
-                   return String'(1 .. Pic.Radix_Position - 1 => '*') &
-                      Radix_Point &
-                      String'(Pic.Radix_Position + 1 .. Last => '*');
- 
-                else
-                   return
-                      String'
-                      (1 ..
-                       Pic.Radix_Position + Currency_Symbol'Length - 2 =>
-                          '*') & Radix_Point &
-                      String'
-                      (Pic.Radix_Position + Currency_Symbol'Length .. Last
-                       => '*');
-                end if;
- 
-             else
-                return String'(1 .. Pic.Radix_Position - 1 => '*') &
-                   Radix_Point &
-                   String'(Pic.Radix_Position + 1 .. Last => '*');
-             end if;
-          end if;
- 
-          return String'(1 .. Last => '*');
-       end if;
- 
-       --  This was once a simple return statement, now there are nine different
-       --  return cases. Not to mention the five above to deal with zeros. Why
-       --  not split things out?
- 
-       --  Processing the radix and sign expansion separately would require
-       --  lots of copying--the string and some of its indexes--without
-       --  really simplifying the logic. The cases are:
- 
-       --  1) Expand $, replace '.' with Radix_Point
-       --  2) No currency expansion, replace '.' with Radix_Point
-       --  3) Expand $, radix blanked
-       --  4) No currency expansion, radix blanked
-       --  5) Elide V
-       --  6) Expand $, Elide V
-       --  7) Elide V, Expand $ (Two cases depending on order.)
-       --  8) No radix, expand $
-       --  9) No radix, no currency expansion
- 
-       if Pic.Radix_Position /= Invalid_Position then
- 
-          if Answer (Pic.Radix_Position) = '.' then
-             Answer (Pic.Radix_Position) := Radix_Point;
- 
-             if Dollar then
- 
-                --  1) Expand $, replace '.' with Radix_Point
- 
-                return Answer (1 .. Currency_Pos - 1) & Currency_Symbol &
-                   Answer (Currency_Pos + 1 .. Answer'Last);
- 
-             else
-                --  2) No currency expansion, replace '.' with Radix_Point
- 
-                return Answer;
-             end if;
- 
-          elsif Answer (Pic.Radix_Position) = ' ' then --  blanked radix.
-             if Dollar then
- 
-                --  3) Expand $, radix blanked
- 
-                return Answer (1 .. Currency_Pos - 1) & Currency_Symbol &
-                  Answer (Currency_Pos + 1 .. Answer'Last);
- 
-             else
-                --  4) No expansion, radix blanked
- 
-                return Answer;
-             end if;
- 
-          --  V cases
- 
-          else
-             if not Dollar then
- 
-                --  5) Elide V
- 
-                return Answer (1 .. Pic.Radix_Position - 1) &
-                   Answer (Pic.Radix_Position + 1 .. Answer'Last);
- 
-             elsif Currency_Pos < Pic.Radix_Position then
- 
-                --  6) Expand $, Elide V
- 
-                return Answer (1 .. Currency_Pos - 1) & Currency_Symbol &
-                   Answer (Currency_Pos + 1 .. Pic.Radix_Position - 1) &
-                   Answer (Pic.Radix_Position + 1 .. Answer'Last);
- 
-             else
-                --  7) Elide V, Expand $
- 
-                return Answer (1 .. Pic.Radix_Position - 1) &
-                   Answer (Pic.Radix_Position + 1 .. Currency_Pos - 1) &
-                   Currency_Symbol &
-                   Answer (Currency_Pos + 1 .. Answer'Last);
-             end if;
-          end if;
- 
-       elsif Dollar then
- 
-          --  8) No radix, expand $
- 
-          return Answer (1 .. Currency_Pos - 1) & Currency_Symbol &
-             Answer (Currency_Pos + 1 .. Answer'Last);
- 
-       else
-          --  9) No radix, no currency expansion
- 
-          return Answer;
-       end if;
-    end Format_Number;
- 
-    -------------------------
-    -- Parse_Number_String --
-    -------------------------
- 
-    function Parse_Number_String (Str : String) return Number_Attributes is
-       Answer : Number_Attributes;
- 
-    begin
-       for J in Str'Range loop
-          case Str (J) is
-             when ' ' =>
-                null; --  ignore
- 
-             when '1' .. '9' =>
- 
-                --  Decide if this is the start of a number.
-                --  If so, figure out which one...
- 
-                if Answer.Has_Fraction then
-                   Answer.End_Of_Fraction := J;
-                else
-                   if Answer.Start_Of_Int = Invalid_Position then
-                      --  start integer
-                      Answer.Start_Of_Int := J;
-                   end if;
-                   Answer.End_Of_Int := J;
-                end if;
- 
-             when '0' =>
- 
-                --  Only count a zero before the decimal point if it follows a
-                --  non-zero digit. After the decimal point, zeros will be
-                --  counted if followed by a non-zero digit.
- 
-                if not Answer.Has_Fraction then
-                   if Answer.Start_Of_Int /= Invalid_Position then
-                      Answer.End_Of_Int := J;
-                   end if;
-                end if;
- 
-             when '-' =>
- 
-                --  Set negative
- 
-                Answer.Negative := True;
- 
-             when '.' =>
- 
-                --  Close integer, start fraction
- 
-                if Answer.Has_Fraction then
-                   raise Picture_Error;
-                end if;
- 
-                --  Two decimal points is a no-no
- 
-                Answer.Has_Fraction    := True;
-                Answer.End_Of_Fraction := J;
- 
-                --  Could leave this at Invalid_Position, but this seems the
-                --  right way to indicate a null range...
- 
-                Answer.Start_Of_Fraction := J + 1;
-                Answer.End_Of_Int        := J - 1;
- 
-             when others =>
-                raise Picture_Error; -- can this happen? probably not
-          end case;
-       end loop;
- 
-       if Answer.Start_Of_Int = Invalid_Position then
-          Answer.Start_Of_Int := Answer.End_Of_Int + 1;
-       end if;
- 
-       --  No significant (integer) digits needs a null range
- 
-       return Answer;
-    end Parse_Number_String;
- 
-    ----------------
-    -- Pic_String --
-    ----------------
- 
-    --  The following ensures that we return B and not b being careful not
-    --  to break things which expect lower case b for blank. See CXF3A02.
- 
-    function Pic_String (Pic : Picture) return String is
-       Temp : String (1 .. Pic.Contents.Picture.Length) :=
-         Pic.Contents.Picture.Expanded;
-    begin
-       for J in Temp'Range loop
-          if Temp (J) = 'b' then
-             Temp (J) := 'B';
-          end if;
-       end loop;
- 
-       return Temp;
-    end Pic_String;
- 
-    ------------------
-    -- Precalculate --
-    ------------------
- 
-    procedure Precalculate  (Pic : in out Format_Record) is
-       Debug : constant Boolean := False;
-       --  Set True to generate debug output
- 
-       Computed_BWZ : Boolean := True;
- 
-       type Legality is  (Okay, Reject);
- 
-       State : Legality := Reject;
-       --  Start in reject, which will reject null strings
- 
-       Index : Pic_Index := Pic.Picture.Expanded'First;
- 
-       function At_End return Boolean;
-       pragma Inline (At_End);
- 
-       procedure Set_State (L : Legality);
-       pragma Inline (Set_State);
- 
-       function Look return Character;
-       pragma Inline (Look);
- 
-       function Is_Insert return Boolean;
-       pragma Inline (Is_Insert);
- 
-       procedure Skip;
-       pragma Inline (Skip);
- 
-       procedure Debug_Start (Name : String);
-       pragma Inline (Debug_Start);
- 
-       procedure Debug_Integer  (Value : Integer; S : String);
-       pragma Inline (Debug_Integer);
- 
-       procedure Trailing_Currency;
-       procedure Trailing_Bracket;
-       procedure Number_Fraction;
-       procedure Number_Completion;
-       procedure Number_Fraction_Or_Bracket;
-       procedure Number_Fraction_Or_Z_Fill;
-       procedure Zero_Suppression;
-       procedure Floating_Bracket;
-       procedure Number_Fraction_Or_Star_Fill;
-       procedure Star_Suppression;
-       procedure Number_Fraction_Or_Dollar;
-       procedure Leading_Dollar;
-       procedure Number_Fraction_Or_Pound;
-       procedure Leading_Pound;
-       procedure Picture;
-       procedure Floating_Plus;
-       procedure Floating_Minus;
-       procedure Picture_Plus;
-       procedure Picture_Minus;
-       procedure Picture_Bracket;
-       procedure Number;
-       procedure Optional_RHS_Sign;
-       procedure Picture_String;
-       procedure Set_Debug;
- 
-       ------------
-       -- At_End --
-       ------------
- 
-       function At_End return Boolean is
-       begin
-          Debug_Start ("At_End");
-          return Index > Pic.Picture.Length;
-       end At_End;
- 
-       --------------
-       -- Set_Debug--
-       --------------
- 
-       --  Needed to have a procedure to pass to pragma Debug
- 
-       procedure Set_Debug is
-       begin
-          --  Uncomment this line and make Debug a variable to enable debug
- 
-          --  Debug := True;
- 
-          null;
-       end Set_Debug;
- 
-       -------------------
-       -- Debug_Integer --
-       -------------------
- 
-       procedure Debug_Integer (Value : Integer; S : String) is
-          use Ada.Text_IO; --  needed for >
- 
-       begin
-          if Debug and then Value > 0 then
-             if Ada.Text_IO.Col > 70 - S'Length then
-                Ada.Text_IO.New_Line;
-             end if;
- 
-             Ada.Text_IO.Put (' ' & S & Integer'Image (Value) & ',');
-          end if;
-       end Debug_Integer;
- 
-       -----------------
-       -- Debug_Start --
-       -----------------
- 
-       procedure Debug_Start (Name : String) is
-       begin
-          if Debug then
-             Ada.Text_IO.Put_Line ("  In " & Name & '.');
-          end if;
-       end Debug_Start;
- 
-       ----------------------
-       -- Floating_Bracket --
-       ----------------------
- 
-       --  Note that Floating_Bracket is only called with an acceptable
-       --  prefix. But we don't set Okay, because we must end with a '>'.
- 
-       procedure Floating_Bracket is
-       begin
-          Debug_Start ("Floating_Bracket");
- 
-          --  Two different floats not allowed
- 
-          if Pic.Floater /= '!' and then Pic.Floater /= '<' then
-             raise Picture_Error;
- 
-          else
-             Pic.Floater := '<';
-          end if;
- 
-          Pic.End_Float := Index;
-          Pic.Max_Leading_Digits := Pic.Max_Leading_Digits + 1;
- 
-          --  First bracket wasn't counted...
- 
-          Skip; --  known '<'
- 
-          loop
-             if At_End then
-                return;
-             end if;
- 
-             case Look is
-                when '_' | '0' | '/' =>
-                   Pic.End_Float := Index;
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.End_Float := Index;
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when '<' =>
-                   Pic.End_Float := Index;
-                   Pic.Max_Leading_Digits := Pic.Max_Leading_Digits + 1;
-                   Skip;
- 
-                when '9' =>
-                   Number_Completion;
- 
-                when '$' =>
-                   Leading_Dollar;
- 
-                when '#' =>
-                   Leading_Pound;
- 
-                when 'V' | 'v' | '.' =>
-                   Pic.Radix_Position := Index;
-                   Skip;
-                   Number_Fraction_Or_Bracket;
-                   return;
- 
-                when others =>
-                return;
-             end case;
-          end loop;
-       end Floating_Bracket;
- 
-       --------------------
-       -- Floating_Minus --
-       --------------------
- 
-       procedure Floating_Minus is
-       begin
-          Debug_Start ("Floating_Minus");
- 
-          loop
-             if At_End then
-                return;
-             end if;
- 
-             case Look is
-                when '_' | '0' | '/' =>
-                   Pic.End_Float := Index;
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.End_Float := Index;
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when '-' =>
-                   Pic.Max_Leading_Digits := Pic.Max_Leading_Digits + 1;
-                   Pic.End_Float := Index;
-                   Skip;
- 
-                when '9' =>
-                   Number_Completion;
-                   return;
- 
-                when '.' | 'V' | 'v' =>
-                   Pic.Radix_Position := Index;
-                   Skip; --  Radix
- 
-                   while Is_Insert loop
-                      Skip;
-                   end loop;
- 
-                   if At_End then
-                      return;
-                   end if;
- 
-                   if Look = '-' then
-                      loop
-                         if At_End then
-                            return;
-                         end if;
- 
-                         case Look is
-                            when '-' =>
-                               Pic.Max_Trailing_Digits :=
-                                 Pic.Max_Trailing_Digits + 1;
-                               Pic.End_Float := Index;
-                               Skip;
- 
-                            when '_' | '0' | '/' =>
-                               Skip;
- 
-                            when 'B' | 'b'  =>
-                               Pic.Picture.Expanded (Index) := 'b';
-                               Skip;
- 
-                            when others =>
-                               return;
-                         end case;
-                      end loop;
- 
-                   else
-                      Number_Completion;
-                   end if;
- 
-                   return;
- 
-                when others =>
-                   return;
-             end case;
-          end loop;
-       end Floating_Minus;
- 
-       -------------------
-       -- Floating_Plus --
-       -------------------
- 
-       procedure Floating_Plus is
-       begin
-          Debug_Start ("Floating_Plus");
- 
-          loop
-             if At_End then
-                return;
-             end if;
- 
-             case Look is
-                when '_' | '0' | '/' =>
-                   Pic.End_Float := Index;
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.End_Float := Index;
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when '+' =>
-                   Pic.Max_Leading_Digits := Pic.Max_Leading_Digits + 1;
-                   Pic.End_Float := Index;
-                   Skip;
- 
-                when '9' =>
-                   Number_Completion;
-                   return;
- 
-                when '.' | 'V' | 'v' =>
-                   Pic.Radix_Position := Index;
-                   Skip; --  Radix
- 
-                   while Is_Insert loop
-                      Skip;
-                   end loop;
- 
-                   if At_End then
-                      return;
-                   end if;
- 
-                   if Look = '+' then
-                      loop
-                         if At_End then
-                            return;
-                         end if;
- 
-                         case Look is
-                            when '+' =>
-                               Pic.Max_Trailing_Digits :=
-                                 Pic.Max_Trailing_Digits + 1;
-                               Pic.End_Float := Index;
-                               Skip;
- 
-                            when '_' | '0' | '/' =>
-                               Skip;
- 
-                            when 'B' | 'b'  =>
-                               Pic.Picture.Expanded (Index) := 'b';
-                               Skip;
- 
-                            when others =>
-                               return;
-                         end case;
-                      end loop;
- 
-                   else
-                      Number_Completion;
-                   end if;
- 
-                   return;
- 
-                when others =>
-                   return;
-             end case;
-          end loop;
-       end Floating_Plus;
- 
-       ---------------
-       -- Is_Insert --
-       ---------------
- 
-       function Is_Insert return Boolean is
-       begin
-          if At_End then
-             return False;
-          end if;
- 
-          case Pic.Picture.Expanded (Index) is
-             when '_' | '0' | '/' =>
-                return True;
- 
-             when 'B' | 'b' =>
-                Pic.Picture.Expanded (Index) := 'b'; --  canonical
-                return True;
- 
-             when others =>
-                return False;
-          end case;
-       end Is_Insert;
- 
-       --------------------
-       -- Leading_Dollar --
-       --------------------
- 
-       --  Note that Leading_Dollar can be called in either State. It will set
-       --  state to Okay only if a 9 or (second) $ is encountered.
- 
-       --  Also notice the tricky bit with State and Zero_Suppression.
-       --  Zero_Suppression is Picture_Error if a '$' or a '9' has been
-       --  encountered, exactly the cases where State has been set.
- 
-       procedure Leading_Dollar is
-       begin
-          Debug_Start ("Leading_Dollar");
- 
-          --  Treat as a floating dollar, and unwind otherwise
- 
-          if Pic.Floater /= '!' and then Pic.Floater /= '$' then
- 
-             --  Two floats not allowed
- 
-             raise Picture_Error;
- 
-          else
-             Pic.Floater := '$';
-          end if;
- 
-          Pic.Start_Currency := Index;
-          Pic.End_Currency := Index;
-          Pic.Start_Float := Index;
-          Pic.End_Float := Index;
- 
-          --  Don't increment Pic.Max_Leading_Digits, we need one "real"
-          --  currency place.
- 
-          Skip; --  known '$'
- 
-          loop
-             if At_End then
-                return;
-             end if;
- 
-             case Look is
-                when '_' | '0' | '/' =>
-                   Pic.End_Float := Index;
-                   Skip;
- 
-                   --  A trailing insertion character is not part of the
-                   --  floating currency, so need to look ahead.
- 
-                   if Look /= '$' then
-                      Pic.End_Float := Pic.End_Float - 1;
-                   end if;
- 
-                when 'B' | 'b'  =>
-                   Pic.End_Float := Index;
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when 'Z' | 'z' =>
-                   Pic.Picture.Expanded (Index) := 'Z'; -- consistency
- 
-                   if State = Okay then
-                      raise Picture_Error;
-                   else
-                      --  Overwrite Floater and Start_Float
- 
-                      Pic.Floater := 'Z';
-                      Pic.Start_Float := Index;
-                      Zero_Suppression;
-                   end if;
- 
-                when '*' =>
-                   if State = Okay then
-                      raise Picture_Error;
-                   else
-                      --  Overwrite Floater and Start_Float
- 
-                      Pic.Floater := '*';
-                      Pic.Start_Float := Index;
-                      Star_Suppression;
-                   end if;
- 
-                when '$' =>
-                   Pic.Max_Leading_Digits := Pic.Max_Leading_Digits + 1;
-                   Pic.End_Float := Index;
-                   Pic.End_Currency := Index;
-                   Set_State (Okay); Skip;
- 
-                when '9' =>
-                   if State /= Okay then
-                      Pic.Floater := '!';
-                      Pic.Start_Float := Invalid_Position;
-                      Pic.End_Float := Invalid_Position;
-                   end if;
- 
-                   --  A single dollar does not a floating make
- 
-                   Number_Completion;
-                   return;
- 
-                when 'V' | 'v' | '.' =>
-                   if State /= Okay then
-                      Pic.Floater := '!';
-                      Pic.Start_Float := Invalid_Position;
-                      Pic.End_Float := Invalid_Position;
-                   end if;
- 
-                   --  Only one dollar before the sign is okay, but doesn't
-                   --  float.
- 
-                   Pic.Radix_Position := Index;
-                   Skip;
-                   Number_Fraction_Or_Dollar;
-                   return;
- 
-                when others =>
-                   return;
-             end case;
-          end loop;
-       end Leading_Dollar;
- 
-       -------------------
-       -- Leading_Pound --
-       -------------------
- 
-       --  This one is complex.  A Leading_Pound can be fixed or floating,
-       --  but in some cases the decision has to be deferred until we leave
-       --  this procedure. Also note that Leading_Pound can be called in
-       --  either State.
- 
-       --  It will set state to Okay only if a 9 or (second) # is encountered
- 
-       --  One Last note:  In ambiguous cases, the currency is treated as
-       --  floating unless there is only one '#'.
- 
-       procedure Leading_Pound is
- 
-          Inserts : Boolean := False;
-          --  Set to True if a '_', '0', '/', 'B', or 'b' is encountered
- 
-          Must_Float : Boolean := False;
-          --  Set to true if a '#' occurs after an insert
- 
-       begin
-          Debug_Start ("Leading_Pound");
- 
-          --  Treat as a floating currency. If it isn't, this will be
-          --  overwritten later.
- 
-          if Pic.Floater /= '!' and then Pic.Floater /= '#' then
- 
-             --  Two floats not allowed
- 
-             raise Picture_Error;
- 
-          else
-             Pic.Floater := '#';
-          end if;
- 
-          Pic.Start_Currency := Index;
-          Pic.End_Currency := Index;
-          Pic.Start_Float := Index;
-          Pic.End_Float := Index;
- 
-          --  Don't increment Pic.Max_Leading_Digits, we need one "real"
-          --  currency place.
- 
-          Pic.Max_Currency_Digits := 1; --  we've seen one.
- 
-          Skip; --  known '#'
- 
-          loop
-             if At_End then
-                return;
-             end if;
- 
-             case Look is
-                when '_' | '0' | '/' =>
-                   Pic.End_Float := Index;
-                   Inserts := True;
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Pic.End_Float := Index;
-                   Inserts := True;
-                   Skip;
- 
-                when 'Z' | 'z' =>
-                   Pic.Picture.Expanded (Index) := 'Z'; -- consistency
- 
-                   if Must_Float then
-                      raise Picture_Error;
-                   else
-                      Pic.Max_Leading_Digits := 0;
- 
-                      --  Overwrite Floater and Start_Float
- 
-                      Pic.Floater := 'Z';
-                      Pic.Start_Float := Index;
-                      Zero_Suppression;
-                   end if;
- 
-                when '*' =>
-                   if Must_Float then
-                      raise Picture_Error;
-                   else
-                      Pic.Max_Leading_Digits := 0;
- 
-                      --  Overwrite Floater and Start_Float
-                      Pic.Floater := '*';
-                      Pic.Start_Float := Index;
-                      Star_Suppression;
-                   end if;
- 
-                when '#' =>
-                   if Inserts then
-                      Must_Float := True;
-                   end if;
- 
-                   Pic.Max_Leading_Digits := Pic.Max_Leading_Digits + 1;
-                   Pic.End_Float := Index;
-                   Pic.End_Currency := Index;
-                   Set_State (Okay);
-                   Skip;
- 
-                when '9' =>
-                   if State /= Okay then
- 
-                      --  A single '#' doesn't float
- 
-                      Pic.Floater := '!';
-                      Pic.Start_Float := Invalid_Position;
-                      Pic.End_Float := Invalid_Position;
-                   end if;
- 
-                   Number_Completion;
-                   return;
- 
-                when 'V' | 'v' | '.' =>
-                   if State /= Okay then
-                      Pic.Floater := '!';
-                      Pic.Start_Float := Invalid_Position;
-                      Pic.End_Float := Invalid_Position;
-                   end if;
- 
-                   --  Only one pound before the sign is okay, but doesn't
-                   --  float.
- 
-                   Pic.Radix_Position := Index;
-                   Skip;
-                   Number_Fraction_Or_Pound;
-                   return;
- 
-                when others =>
-                   return;
-             end case;
-          end loop;
-       end Leading_Pound;
- 
-       ----------
-       -- Look --
-       ----------
- 
-       function Look return Character is
-       begin
-          if At_End then
-             raise Picture_Error;
-          end if;
- 
-          return Pic.Picture.Expanded (Index);
-       end Look;
- 
-       ------------
-       -- Number --
-       ------------
- 
-       procedure Number is
-       begin
-          Debug_Start ("Number");
- 
-          loop
-             case Look is
-                when '_' | '0' | '/' =>
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when '9' =>
-                   Computed_BWZ := False;
-                   Pic.Max_Leading_Digits := Pic.Max_Leading_Digits + 1;
-                   Set_State (Okay);
-                   Skip;
- 
-                when '.' | 'V' | 'v' =>
-                   Pic.Radix_Position := Index;
-                   Skip;
-                   Number_Fraction;
-                   return;
- 
-                when others =>
-                   return;
-             end case;
- 
-             if At_End then
-                return;
-             end if;
- 
-             --  Will return in Okay state if a '9' was seen
- 
-          end loop;
-       end Number;
- 
-       -----------------------
-       -- Number_Completion --
-       -----------------------
- 
-       procedure Number_Completion is
-       begin
-          Debug_Start ("Number_Completion");
- 
-          while not At_End loop
-             case Look is
-                when '_' | '0' | '/' =>
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when '9' =>
-                   Computed_BWZ := False;
-                   Pic.Max_Leading_Digits := Pic.Max_Leading_Digits + 1;
-                   Set_State (Okay);
-                   Skip;
- 
-                when 'V' | 'v' | '.' =>
-                   Pic.Radix_Position := Index;
-                   Skip;
-                   Number_Fraction;
-                   return;
- 
-                when others =>
-                   return;
-             end case;
-          end loop;
-       end Number_Completion;
- 
-       ---------------------
-       -- Number_Fraction --
-       ---------------------
- 
-       procedure Number_Fraction is
-       begin
-          --  Note that number fraction can be called in either State.
-          --  It will set state to Valid only if a 9 is encountered.
- 
-          Debug_Start ("Number_Fraction");
- 
-          loop
-             if At_End then
-                return;
-             end if;
- 
-             case Look is
-                when '_' | '0' | '/' =>
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when '9' =>
-                   Computed_BWZ := False;
-                   Pic.Max_Trailing_Digits := Pic.Max_Trailing_Digits + 1;
-                   Set_State (Okay); Skip;
- 
-                when others =>
-                   return;
-             end case;
-          end loop;
-       end Number_Fraction;
- 
-       --------------------------------
-       -- Number_Fraction_Or_Bracket --
-       --------------------------------
- 
-       procedure Number_Fraction_Or_Bracket is
-       begin
-          Debug_Start ("Number_Fraction_Or_Bracket");
- 
-          loop
-             if At_End then
-                return;
-             end if;
- 
-             case Look is
-                when '_' | '0' | '/' =>
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when '<' =>
-                   Pic.Max_Trailing_Digits := Pic.Max_Trailing_Digits + 1;
-                   Pic.End_Float := Index;
-                   Skip;
- 
-                   loop
-                      if At_End then
-                         return;
-                      end if;
- 
-                      case Look is
-                         when '_' | '0' | '/' =>
-                            Skip;
- 
-                         when 'B' | 'b'  =>
-                            Pic.Picture.Expanded (Index) := 'b';
-                            Skip;
- 
-                         when '<' =>
-                            Pic.Max_Trailing_Digits :=
-                              Pic.Max_Trailing_Digits + 1;
-                            Pic.End_Float := Index;
-                            Skip;
- 
-                         when others =>
-                            return;
-                      end case;
-                   end loop;
- 
-                when others =>
-                   Number_Fraction;
-                   return;
-             end case;
-          end loop;
-       end Number_Fraction_Or_Bracket;
- 
-       -------------------------------
-       -- Number_Fraction_Or_Dollar --
-       -------------------------------
- 
-       procedure Number_Fraction_Or_Dollar is
-       begin
-          Debug_Start ("Number_Fraction_Or_Dollar");
- 
-          loop
-             if At_End then
-                return;
-             end if;
- 
-             case Look is
-                when '_' | '0' | '/' =>
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when '$' =>
-                   Pic.Max_Trailing_Digits := Pic.Max_Trailing_Digits + 1;
-                   Pic.End_Float := Index;
-                   Skip;
- 
-                   loop
-                      if At_End then
-                         return;
-                      end if;
- 
-                      case Look is
-                         when '_' | '0' | '/' =>
-                            Skip;
- 
-                         when 'B' | 'b'  =>
-                            Pic.Picture.Expanded (Index) := 'b';
-                            Skip;
- 
-                         when '$' =>
-                            Pic.Max_Trailing_Digits :=
-                              Pic.Max_Trailing_Digits + 1;
-                            Pic.End_Float := Index;
-                            Skip;
- 
-                         when others =>
-                            return;
-                      end case;
-                   end loop;
- 
-                when others =>
-                   Number_Fraction;
-                   return;
-             end case;
-          end loop;
-       end Number_Fraction_Or_Dollar;
- 
-       ------------------------------
-       -- Number_Fraction_Or_Pound --
-       ------------------------------
- 
-       procedure Number_Fraction_Or_Pound is
-       begin
-          loop
-             if At_End then
-                return;
-             end if;
- 
-             case Look is
-                when '_' | '0' | '/' =>
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when '#' =>
-                   Pic.Max_Trailing_Digits := Pic.Max_Trailing_Digits + 1;
-                   Pic.End_Float := Index;
-                   Skip;
- 
-                   loop
-                      if At_End then
-                         return;
-                      end if;
- 
-                      case Look is
-                         when '_' | '0' | '/' =>
-                            Skip;
- 
-                         when 'B' | 'b'  =>
-                            Pic.Picture.Expanded (Index) := 'b';
-                            Skip;
- 
-                         when '#' =>
-                            Pic.Max_Trailing_Digits :=
-                              Pic.Max_Trailing_Digits + 1;
-                            Pic.End_Float := Index;
-                            Skip;
- 
-                         when others =>
-                            return;
-                      end case;
-                   end loop;
- 
-                when others =>
-                   Number_Fraction;
-                   return;
-             end case;
-          end loop;
-       end Number_Fraction_Or_Pound;
- 
-       ----------------------------------
-       -- Number_Fraction_Or_Star_Fill --
-       ----------------------------------
- 
-       procedure Number_Fraction_Or_Star_Fill is
-       begin
-          Debug_Start ("Number_Fraction_Or_Star_Fill");
- 
-          loop
-             if At_End then
-                return;
-             end if;
- 
-             case Look is
-                when '_' | '0' | '/' =>
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when '*' =>
-                   Pic.Star_Fill := True;
-                   Pic.Max_Trailing_Digits := Pic.Max_Trailing_Digits + 1;
-                   Pic.End_Float := Index;
-                   Skip;
- 
-                   loop
-                      if At_End then
-                         return;
-                      end if;
- 
-                      case Look is
-                         when '_' | '0' | '/' =>
-                            Skip;
- 
-                         when 'B' | 'b'  =>
-                            Pic.Picture.Expanded (Index) := 'b';
-                            Skip;
- 
-                         when '*' =>
-                            Pic.Star_Fill := True;
-                            Pic.Max_Trailing_Digits :=
-                              Pic.Max_Trailing_Digits + 1;
-                            Pic.End_Float := Index;
-                            Skip;
- 
-                         when others =>
-                            return;
-                      end case;
-                   end loop;
- 
-                when others =>
-                   Number_Fraction;
-                   return;
-             end case;
-          end loop;
-       end Number_Fraction_Or_Star_Fill;
- 
-       -------------------------------
-       -- Number_Fraction_Or_Z_Fill --
-       -------------------------------
- 
-       procedure Number_Fraction_Or_Z_Fill is
-       begin
-          Debug_Start ("Number_Fraction_Or_Z_Fill");
- 
-          loop
-             if At_End then
-                return;
-             end if;
- 
-             case Look is
-                when '_' | '0' | '/' =>
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when 'Z' | 'z' =>
-                   Pic.Max_Trailing_Digits := Pic.Max_Trailing_Digits + 1;
-                   Pic.End_Float := Index;
-                   Pic.Picture.Expanded (Index) := 'Z'; -- consistency
- 
-                   Skip;
- 
-                   loop
-                      if At_End then
-                         return;
-                      end if;
- 
-                      case Look is
-                         when '_' | '0' | '/' =>
-                            Skip;
- 
-                         when 'B' | 'b'  =>
-                            Pic.Picture.Expanded (Index) := 'b';
-                            Skip;
- 
-                         when 'Z' | 'z' =>
-                            Pic.Picture.Expanded (Index) := 'Z'; -- consistency
- 
-                            Pic.Max_Trailing_Digits :=
-                              Pic.Max_Trailing_Digits + 1;
-                            Pic.End_Float := Index;
-                            Skip;
- 
-                         when others =>
-                            return;
-                      end case;
-                   end loop;
- 
-                when others =>
-                   Number_Fraction;
-                   return;
-             end case;
-          end loop;
-       end Number_Fraction_Or_Z_Fill;
- 
-       -----------------------
-       -- Optional_RHS_Sign --
-       -----------------------
- 
-       procedure Optional_RHS_Sign is
-       begin
-          Debug_Start ("Optional_RHS_Sign");
- 
-          if At_End then
-             return;
-          end if;
- 
-          case Look is
-             when '+' | '-' =>
-                Pic.Sign_Position := Index;
-                Skip;
-                return;
- 
-             when 'C' | 'c' =>
-                Pic.Sign_Position := Index;
-                Pic.Picture.Expanded (Index) := 'C';
-                Skip;
- 
-                if Look = 'R' or else Look = 'r' then
-                   Pic.Second_Sign := Index;
-                   Pic.Picture.Expanded (Index) := 'R';
-                   Skip;
- 
-                else
-                   raise Picture_Error;
-                end if;
- 
-                return;
- 
-             when 'D' | 'd' =>
-                Pic.Sign_Position := Index;
-                Pic.Picture.Expanded (Index) := 'D';
-                Skip;
- 
-                if Look = 'B' or else Look = 'b' then
-                   Pic.Second_Sign := Index;
-                   Pic.Picture.Expanded (Index) := 'B';
-                   Skip;
- 
-                else
-                   raise Picture_Error;
-                end if;
- 
-                return;
- 
-             when '>' =>
-                if Pic.Picture.Expanded (Pic.Sign_Position) = '<' then
-                   Pic.Second_Sign := Index;
-                   Skip;
- 
-                else
-                   raise Picture_Error;
-                end if;
- 
-             when others =>
-                return;
-          end case;
-       end Optional_RHS_Sign;
- 
-       -------------
-       -- Picture --
-       -------------
- 
-       --  Note that Picture can be called in either State
- 
-       --  It will set state to Valid only if a 9 is encountered or floating
-       --  currency is called.
- 
-       procedure Picture is
-       begin
-          Debug_Start ("Picture");
- 
-          loop
-             if At_End then
-                return;
-             end if;
- 
-             case Look is
-                when '_' | '0' | '/' =>
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when '$' =>
-                   Leading_Dollar;
-                   return;
- 
-                when '#' =>
-                   Leading_Pound;
-                   return;
- 
-                when '9' =>
-                   Computed_BWZ := False;
-                   Set_State (Okay);
-                   Pic.Max_Leading_Digits := Pic.Max_Leading_Digits + 1;
-                   Skip;
- 
-                when 'V' | 'v' | '.' =>
-                   Pic.Radix_Position := Index;
-                   Skip;
-                   Number_Fraction;
-                   Trailing_Currency;
-                   return;
- 
-                when others =>
-                   return;
-             end case;
-          end loop;
-       end Picture;
- 
-       ---------------------
-       -- Picture_Bracket --
-       ---------------------
- 
-       procedure Picture_Bracket is
-       begin
-          Pic.Sign_Position := Index;
-          Debug_Start ("Picture_Bracket");
-          Pic.Sign_Position := Index;
- 
-          --  Treat as a floating sign, and unwind otherwise
- 
-          Pic.Floater := '<';
-          Pic.Start_Float := Index;
-          Pic.End_Float := Index;
- 
-          --  Don't increment Pic.Max_Leading_Digits, we need one "real"
-          --  sign place.
- 
-          Skip; --  Known Bracket
- 
-          loop
-             case Look is
-                when '_' | '0' | '/' =>
-                   Pic.End_Float := Index;
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.End_Float := Index;
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when '<' =>
-                   Set_State (Okay);  --  "<<>" is enough.
-                   Floating_Bracket;
-                   Trailing_Currency;
-                   Trailing_Bracket;
-                   return;
- 
-                when '$' | '#' | '9' | '*' =>
-                   if State /= Okay then
-                      Pic.Floater := '!';
-                      Pic.Start_Float := Invalid_Position;
-                      Pic.End_Float := Invalid_Position;
-                   end if;
- 
-                   Picture;
-                   Trailing_Bracket;
-                   Set_State (Okay);
-                   return;
- 
-                when '.' | 'V' | 'v' =>
-                   if State /= Okay then
-                      Pic.Floater := '!';
-                      Pic.Start_Float := Invalid_Position;
-                      Pic.End_Float := Invalid_Position;
-                   end if;
- 
-                   --  Don't assume that state is okay, haven't seen a digit
- 
-                   Picture;
-                   Trailing_Bracket;
-                   return;
- 
-                when others =>
-                   raise Picture_Error;
-             end case;
-          end loop;
-       end Picture_Bracket;
- 
-       -------------------
-       -- Picture_Minus --
-       -------------------
- 
-       procedure Picture_Minus is
-       begin
-          Debug_Start ("Picture_Minus");
- 
-          Pic.Sign_Position := Index;
- 
-          --  Treat as a floating sign, and unwind otherwise
- 
-          Pic.Floater := '-';
-          Pic.Start_Float := Index;
-          Pic.End_Float := Index;
- 
-          --  Don't increment Pic.Max_Leading_Digits, we need one "real"
-          --  sign place.
- 
-          Skip; --  Known Minus
- 
-          loop
-             case Look is
-                when '_' | '0' | '/' =>
-                   Pic.End_Float := Index;
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.End_Float := Index;
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when '-' =>
-                   Pic.Max_Leading_Digits := Pic.Max_Leading_Digits + 1;
-                   Pic.End_Float := Index;
-                   Skip;
-                   Set_State (Okay);  --  "-- " is enough.
-                   Floating_Minus;
-                   Trailing_Currency;
-                   return;
- 
-                when '$' | '#' | '9' | '*' =>
-                   if State /= Okay then
-                      Pic.Floater := '!';
-                      Pic.Start_Float := Invalid_Position;
-                      Pic.End_Float := Invalid_Position;
-                   end if;
- 
-                   Picture;
-                   Set_State (Okay);
-                   return;
- 
-                when 'Z' | 'z' =>
- 
-                   --  Can't have Z and a floating sign
- 
-                   if State = Okay then
-                      Set_State (Reject);
-                   end if;
- 
-                   Pic.Picture.Expanded (Index) := 'Z'; -- consistency
-                   Zero_Suppression;
-                   Trailing_Currency;
-                   Optional_RHS_Sign;
-                   return;
- 
-                when '.' | 'V' | 'v' =>
-                   if State /= Okay then
-                      Pic.Floater := '!';
-                      Pic.Start_Float := Invalid_Position;
-                      Pic.End_Float := Invalid_Position;
-                   end if;
- 
-                   --  Don't assume that state is okay, haven't seen a digit
- 
-                   Picture;
-                   return;
- 
-                when others =>
-                   return;
-             end case;
-          end loop;
-       end Picture_Minus;
- 
-       ------------------
-       -- Picture_Plus --
-       ------------------
- 
-       procedure Picture_Plus is
-       begin
-          Debug_Start ("Picture_Plus");
-          Pic.Sign_Position := Index;
- 
-          --  Treat as a floating sign, and unwind otherwise
- 
-          Pic.Floater := '+';
-          Pic.Start_Float := Index;
-          Pic.End_Float := Index;
- 
-          --  Don't increment Pic.Max_Leading_Digits, we need one "real"
-          --  sign place.
- 
-          Skip; --  Known Plus
- 
-          loop
-             case Look is
-                when '_' | '0' | '/' =>
-                   Pic.End_Float := Index;
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.End_Float := Index;
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when '+' =>
-                   Pic.Max_Leading_Digits := Pic.Max_Leading_Digits + 1;
-                   Pic.End_Float := Index;
-                   Skip;
-                   Set_State (Okay);  --  "++" is enough
-                   Floating_Plus;
-                   Trailing_Currency;
-                   return;
- 
-                when '$' | '#' | '9' | '*' =>
-                   if State /= Okay then
-                      Pic.Floater := '!';
-                      Pic.Start_Float := Invalid_Position;
-                      Pic.End_Float := Invalid_Position;
-                   end if;
- 
-                   Picture;
-                   Set_State (Okay);
-                   return;
- 
-                when 'Z' | 'z' =>
-                   if State = Okay then
-                      Set_State (Reject);
-                   end if;
- 
-                   --  Can't have Z and a floating sign
- 
-                   Pic.Picture.Expanded (Index) := 'Z'; -- consistency
- 
-                   --  '+Z' is acceptable
- 
-                   Set_State (Okay);
- 
-                   --  Overwrite Floater and Start_Float
- 
-                   Pic.Floater := 'Z';
-                   Pic.Start_Float := Index;
- 
-                   Zero_Suppression;
-                   Trailing_Currency;
-                   Optional_RHS_Sign;
-                   return;
- 
-                when '.' | 'V' | 'v' =>
-                   if State /= Okay then
-                      Pic.Floater := '!';
-                      Pic.Start_Float := Invalid_Position;
-                      Pic.End_Float := Invalid_Position;
-                   end if;
- 
-                   --  Don't assume that state is okay, haven't seen a digit
- 
-                   Picture;
-                   return;
- 
-                when others =>
-                   return;
-             end case;
-          end loop;
-       end Picture_Plus;
- 
-       --------------------
-       -- Picture_String --
-       --------------------
- 
-       procedure Picture_String is
-       begin
-          Debug_Start ("Picture_String");
- 
-          while Is_Insert loop
-             Skip;
-          end loop;
- 
-          case Look is
-             when '$' | '#' =>
-                Picture;
-                Optional_RHS_Sign;
- 
-             when '+' =>
-                Picture_Plus;
- 
-             when '-' =>
-                Picture_Minus;
- 
-             when '<' =>
-                Picture_Bracket;
- 
-             when 'Z' | 'z' =>
-                Pic.Picture.Expanded (Index) := 'Z'; -- consistency
-                Zero_Suppression;
-                Trailing_Currency;
-                Optional_RHS_Sign;
- 
-             when '*' =>
-                Star_Suppression;
-                Trailing_Currency;
-                Optional_RHS_Sign;
- 
-             when '9' | '.' | 'V' | 'v' =>
-                Number;
-                Trailing_Currency;
-                Optional_RHS_Sign;
- 
-             when others =>
-                raise Picture_Error;
-          end case;
- 
-          --  Blank when zero either if the PIC does not contain a '9' or if
-          --  requested by the user and no '*'.
- 
-          Pic.Blank_When_Zero :=
-            (Computed_BWZ or else Pic.Blank_When_Zero)
-              and then not Pic.Star_Fill;
- 
-          --  Star fill if '*' and no '9'
- 
-          Pic.Star_Fill := Pic.Star_Fill and then Computed_BWZ;
- 
-          if not At_End then
-             Set_State (Reject);
-          end if;
-       end Picture_String;
- 
-       ---------------
-       -- Set_State --
-       ---------------
- 
-       procedure Set_State (L : Legality) is
-       begin
-          if Debug then
-             Ada.Text_IO.Put_Line
-               ("  Set state from " & Legality'Image (State)
-                & " to " & Legality'Image (L));
-          end if;
- 
-          State := L;
-       end Set_State;
- 
-       ----------
-       -- Skip --
-       ----------
- 
-       procedure Skip is
-       begin
-          if Debug then
-             Ada.Text_IO.Put_Line ("  Skip " & Pic.Picture.Expanded (Index));
-          end if;
- 
-          Index := Index + 1;
-       end Skip;
- 
-       ----------------------
-       -- Star_Suppression --
-       ----------------------
- 
-       procedure Star_Suppression is
-       begin
-          Debug_Start ("Star_Suppression");
- 
-          if Pic.Floater /= '!' and then Pic.Floater /= '*' then
- 
-             --  Two floats not allowed
- 
-             raise Picture_Error;
- 
-          else
-             Pic.Floater := '*';
-          end if;
- 
-          Pic.Start_Float := Index;
-          Pic.End_Float := Index;
-          Pic.Max_Leading_Digits := Pic.Max_Leading_Digits + 1;
-          Set_State (Okay);
- 
-          --  Even a single * is a valid picture
- 
-          Pic.Star_Fill := True;
-          Skip; --  Known *
- 
-          loop
-             if At_End then
-                return;
-             end if;
- 
-             case Look is
-                when '_' | '0' | '/' =>
-                   Pic.End_Float := Index;
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.End_Float := Index;
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when '*' =>
-                   Pic.End_Float := Index;
-                   Pic.Max_Leading_Digits := Pic.Max_Leading_Digits + 1;
-                   Set_State (Okay); Skip;
- 
-                when '9' =>
-                   Set_State (Okay);
-                   Number_Completion;
-                   return;
- 
-                when '.' | 'V' | 'v' =>
-                   Pic.Radix_Position := Index;
-                   Skip;
-                   Number_Fraction_Or_Star_Fill;
-                   return;
- 
-                when '#' | '$' =>
-                   if Pic.Max_Currency_Digits > 0 then
-                      raise Picture_Error;
-                   end if;
- 
-                   --  Cannot have leading and trailing currency
- 
-                   Trailing_Currency;
-                   Set_State (Okay);
-                   return;
- 
-                when others =>
-                   raise Picture_Error;
-             end case;
-          end loop;
-       end Star_Suppression;
- 
-       ----------------------
-       -- Trailing_Bracket --
-       ----------------------
- 
-       procedure Trailing_Bracket is
-       begin
-          Debug_Start ("Trailing_Bracket");
- 
-          if Look = '>' then
-             Pic.Second_Sign := Index;
-             Skip;
-          else
-             raise Picture_Error;
-          end if;
-       end Trailing_Bracket;
- 
-       -----------------------
-       -- Trailing_Currency --
-       -----------------------
- 
-       procedure Trailing_Currency is
-       begin
-          Debug_Start ("Trailing_Currency");
- 
-          if At_End then
-             return;
-          end if;
- 
-          if Look = '$' then
-             Pic.Start_Currency := Index;
-             Pic.End_Currency := Index;
-             Skip;
- 
-          else
-             while not At_End and then Look = '#' loop
-                if Pic.Start_Currency = Invalid_Position then
-                   Pic.Start_Currency := Index;
-                end if;
- 
-                Pic.End_Currency := Index;
-                Skip;
-             end loop;
-          end if;
- 
-          loop
-             if At_End then
-                return;
-             end if;
- 
-             case Look is
-                when '_' | '0' | '/' =>
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when others =>
-                   return;
-             end case;
-          end loop;
-       end Trailing_Currency;
- 
-       ----------------------
-       -- Zero_Suppression --
-       ----------------------
- 
-       procedure Zero_Suppression is
-       begin
-          Debug_Start ("Zero_Suppression");
- 
-          Pic.Floater := 'Z';
-          Pic.Start_Float := Index;
-          Pic.End_Float := Index;
-          Pic.Max_Leading_Digits := Pic.Max_Leading_Digits + 1;
-          Pic.Picture.Expanded (Index) := 'Z'; -- consistency
- 
-          Skip; --  Known Z
- 
-          loop
-             --  Even a single Z is a valid picture
- 
-             if At_End then
-                Set_State (Okay);
-                return;
-             end if;
- 
-             case Look is
-                when '_' | '0' | '/' =>
-                   Pic.End_Float := Index;
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.End_Float := Index;
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when 'Z' | 'z' =>
-                   Pic.Picture.Expanded (Index) := 'Z'; -- consistency
- 
-                   Pic.Max_Leading_Digits := Pic.Max_Leading_Digits + 1;
-                   Pic.End_Float := Index;
-                   Set_State (Okay);
-                   Skip;
- 
-                when '9' =>
-                   Set_State (Okay);
-                   Number_Completion;
-                   return;
- 
-                when '.' | 'V' | 'v' =>
-                   Pic.Radix_Position := Index;
-                   Skip;
-                   Number_Fraction_Or_Z_Fill;
-                   return;
- 
-                when '#' | '$' =>
-                   Trailing_Currency;
-                   Set_State (Okay);
-                   return;
- 
-                when others =>
-                   return;
-             end case;
-          end loop;
-       end Zero_Suppression;
- 
-    --  Start of processing for Precalculate
- 
-    begin
-       pragma Debug (Set_Debug);
- 
-       Picture_String;
- 
-       if Debug then
-          Ada.Text_IO.New_Line;
-          Ada.Text_IO.Put (" Picture : """ &
-                      Pic.Picture.Expanded (1 .. Pic.Picture.Length) & """,");
-          Ada.Text_IO.Put (" Floater : '" & Pic.Floater & "',");
-       end if;
- 
-       if State = Reject then
-          raise Picture_Error;
-       end if;
- 
-       Debug_Integer (Pic.Radix_Position, "Radix Positon : ");
-       Debug_Integer (Pic.Sign_Position, "Sign Positon : ");
-       Debug_Integer (Pic.Second_Sign, "Second Sign : ");
-       Debug_Integer (Pic.Start_Float, "Start Float : ");
-       Debug_Integer (Pic.End_Float, "End Float : ");
-       Debug_Integer (Pic.Start_Currency, "Start Currency : ");
-       Debug_Integer (Pic.End_Currency, "End Currency : ");
-       Debug_Integer (Pic.Max_Leading_Digits, "Max Leading Digits : ");
-       Debug_Integer (Pic.Max_Trailing_Digits, "Max Trailing Digits : ");
- 
-       if Debug then
-          Ada.Text_IO.New_Line;
-       end if;
- 
-    exception
- 
-       when Constraint_Error =>
- 
-       --  To deal with special cases like null strings
- 
-       raise Picture_Error;
-    end Precalculate;
- 
-    ----------------
-    -- To_Picture --
-    ----------------
- 
-    function To_Picture
-      (Pic_String      : String;
-       Blank_When_Zero : Boolean := False) return Picture
-    is
-       Result : Picture;
- 
-    begin
-       declare
-          Item : constant String := Expand (Pic_String);
- 
-       begin
-          Result.Contents.Picture         := (Item'Length, Item);
-          Result.Contents.Original_BWZ := Blank_When_Zero;
-          Result.Contents.Blank_When_Zero := Blank_When_Zero;
-          Precalculate (Result.Contents);
-          return Result;
-       end;
- 
-    exception
-       when others =>
-          raise Picture_Error;
-    end To_Picture;
- 
-    -----------
-    -- Valid --
-    -----------
- 
-    function Valid
-      (Pic_String      : String;
-       Blank_When_Zero : Boolean := False) return Boolean
-    is
-    begin
-       declare
-          Expanded_Pic : constant String := Expand (Pic_String);
-          --  Raises Picture_Error if Item not well-formed
- 
-          Format_Rec : Format_Record;
- 
-       begin
-          Format_Rec.Picture := (Expanded_Pic'Length, Expanded_Pic);
-          Format_Rec.Blank_When_Zero := Blank_When_Zero;
-          Format_Rec.Original_BWZ := Blank_When_Zero;
-          Precalculate (Format_Rec);
- 
-          --  False only if Blank_When_Zero is True but the pic string has a '*'
- 
-          return not Blank_When_Zero
-            or else Strings_Fixed.Index (Expanded_Pic, "*") = 0;
-       end;
- 
-    exception
-       when others => return False;
-    end Valid;
- 
-    --------------------
-    -- Decimal_Output --
-    --------------------
- 
-    package body Decimal_Output is
- 
-       -----------
-       -- Image --
-       -----------
- 
-       function Image
-         (Item       : Num;
-          Pic        : Picture;
-          Currency   : String    := Default_Currency;
-          Fill       : Character := Default_Fill;
-          Separator  : Character := Default_Separator;
-          Radix_Mark : Character := Default_Radix_Mark) return String
-       is
-       begin
-          return Format_Number
-             (Pic.Contents, Num'Image (Item),
-              Currency, Fill, Separator, Radix_Mark);
-       end Image;
- 
-       ------------
-       -- Length --
-       ------------
- 
-       function Length
-         (Pic      : Picture;
-          Currency : String := Default_Currency) return Natural
-       is
-          Picstr     : constant String := Pic_String (Pic);
-          V_Adjust   : Integer := 0;
-          Cur_Adjust : Integer := 0;
- 
-       begin
-          --  Check if Picstr has 'V' or '$'
- 
-          --  If 'V', then length is 1 less than otherwise
- 
-          --  If '$', then length is Currency'Length-1 more than otherwise
- 
-          --  This should use the string handling package ???
- 
-          for J in Picstr'Range loop
-             if Picstr (J) = 'V' then
-                V_Adjust := -1;
- 
-             elsif Picstr (J) = '$' then
-                Cur_Adjust := Currency'Length - 1;
-             end if;
-          end loop;
- 
-          return Picstr'Length - V_Adjust + Cur_Adjust;
-       end Length;
- 
-       ---------
-       -- Put --
-       ---------
- 
-       procedure Put
-         (File       : Text_IO.File_Type;
-          Item       : Num;
-          Pic        : Picture;
-          Currency   : String    := Default_Currency;
-          Fill       : Character := Default_Fill;
-          Separator  : Character := Default_Separator;
-          Radix_Mark : Character := Default_Radix_Mark)
-       is
-       begin
-          Text_IO.Put (File, Image (Item, Pic,
-                                    Currency, Fill, Separator, Radix_Mark));
-       end Put;
- 
-       procedure Put
-         (Item       : Num;
-          Pic        : Picture;
-          Currency   : String    := Default_Currency;
-          Fill       : Character := Default_Fill;
-          Separator  : Character := Default_Separator;
-          Radix_Mark : Character := Default_Radix_Mark)
-       is
-       begin
-          Text_IO.Put (Image (Item, Pic,
-                              Currency, Fill, Separator, Radix_Mark));
-       end Put;
- 
-       procedure Put
-         (To         : out String;
-          Item       : Num;
-          Pic        : Picture;
-          Currency   : String    := Default_Currency;
-          Fill       : Character := Default_Fill;
-          Separator  : Character := Default_Separator;
-          Radix_Mark : Character := Default_Radix_Mark)
-       is
-          Result : constant String :=
-            Image (Item, Pic, Currency, Fill, Separator, Radix_Mark);
- 
-       begin
-          if Result'Length > To'Length then
-             raise Ada.Text_IO.Layout_Error;
-          else
-             Strings_Fixed.Move (Source => Result, Target => To,
-                                 Justify => Strings.Right);
-          end if;
-       end Put;
- 
-       -----------
-       -- Valid --
-       -----------
- 
-       function Valid
-         (Item     : Num;
-          Pic      : Picture;
-          Currency : String := Default_Currency) return Boolean
-       is
-       begin
-          declare
-             Temp : constant String := Image (Item, Pic, Currency);
-             pragma Warnings (Off, Temp);
-          begin
-             return True;
-          end;
- 
-       exception
-          when Ada.Text_IO.Layout_Error => return False;
- 
-       end Valid;
-    end Decimal_Output;
- 
- end Ada.Text_IO.Editing;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-teioed.ads gcc-8.1.0/gcc/ada/a-teioed.ads
*** gcc-7.3.0/gcc/ada/a-teioed.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-teioed.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,194 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                  A D A . T E X T _ I O . E D I T I N G                   --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2009, Free Software Foundation, 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 Ada.Text_IO.Editing is
- 
-    type Picture is private;
- 
-    function Valid
-      (Pic_String      : String;
-       Blank_When_Zero : Boolean := False) return Boolean;
- 
-    function To_Picture
-      (Pic_String      : String;
-       Blank_When_Zero : Boolean := False) return Picture;
- 
-    function Pic_String      (Pic : Picture) return String;
-    function Blank_When_Zero (Pic : Picture) return Boolean;
- 
-    Max_Picture_Length : constant := 64;
- 
-    Picture_Error : exception;
- 
-    Default_Currency   : constant String    := "$";
-    Default_Fill       : constant Character := '*';
-    Default_Separator  : constant Character := ',';
-    Default_Radix_Mark : constant Character := '.';
- 
-    generic
-       type Num is delta <> digits <>;
-       Default_Currency   : String := Editing.Default_Currency;
-       Default_Fill       : Character := Editing.Default_Fill;
-       Default_Separator  : Character := Editing.Default_Separator;
-       Default_Radix_Mark : Character := Editing.Default_Radix_Mark;
- 
-    package Decimal_Output is
- 
-       function Length
-         (Pic      : Picture;
-          Currency : String := Default_Currency) return Natural;
- 
-       function Valid
-         (Item     : Num;
-          Pic      : Picture;
-          Currency : String := Default_Currency) return Boolean;
- 
-       function Image
-         (Item       : Num;
-          Pic        : Picture;
-          Currency   : String    := Default_Currency;
-          Fill       : Character := Default_Fill;
-          Separator  : Character := Default_Separator;
-          Radix_Mark : Character := Default_Radix_Mark) return String;
- 
-       procedure Put
-         (File       : Ada.Text_IO.File_Type;
-          Item       : Num;
-          Pic        : Picture;
-          Currency   : String    := Default_Currency;
-          Fill       : Character := Default_Fill;
-          Separator  : Character := Default_Separator;
-          Radix_Mark : Character := Default_Radix_Mark);
- 
-       procedure Put
-         (Item       : Num;
-          Pic        : Picture;
-          Currency   : String    := Default_Currency;
-          Fill       : Character := Default_Fill;
-          Separator  : Character := Default_Separator;
-          Radix_Mark : Character := Default_Radix_Mark);
- 
-       procedure Put
-         (To         : out String;
-          Item       : Num;
-          Pic        : Picture;
-          Currency   : String    := Default_Currency;
-          Fill       : Character := Default_Fill;
-          Separator  : Character := Default_Separator;
-          Radix_Mark : Character := Default_Radix_Mark);
- 
-    end Decimal_Output;
- 
- private
- 
-    MAX_PICSIZE      : constant := 50;
-    MAX_MONEYSIZE    : constant := 10;
-    Invalid_Position : constant := -1;
- 
-    subtype Pic_Index is Natural range 0 .. MAX_PICSIZE;
- 
-    type Picture_Record (Length : Pic_Index := 0) is record
-       Expanded : String (1 .. Length);
-    end record;
- 
-    type Format_Record is record
-       Picture              : Picture_Record;
-       --  Read only
- 
-       Blank_When_Zero      : Boolean;
-       --  Read/write
- 
-       Original_BWZ         : Boolean;
- 
-       --  The following components get written
- 
-       Star_Fill            : Boolean := False;
- 
-       Radix_Position       : Integer := Invalid_Position;
- 
-       Sign_Position,
-       Second_Sign          : Integer := Invalid_Position;
- 
-       Start_Float,
-       End_Float            : Integer := Invalid_Position;
- 
-       Start_Currency,
-       End_Currency         : Integer := Invalid_Position;
- 
-       Max_Leading_Digits   : Integer := 0;
- 
-       Max_Trailing_Digits  : Integer := 0;
- 
-       Max_Currency_Digits  : Integer := 0;
- 
-       Floater              : Character := '!';
-       --  Initialized to illegal value
- 
-    end record;
- 
-    type Picture is record
-       Contents : Format_Record;
-    end record;
- 
-    type Number_Attributes is record
-       Negative     : Boolean := False;
- 
-       Has_Fraction : Boolean := False;
- 
-       Start_Of_Int,
-       End_Of_Int,
-       Start_Of_Fraction,
-       End_Of_Fraction : Integer := Invalid_Position;    -- invalid value
-    end record;
- 
-    function Parse_Number_String (Str : String) return Number_Attributes;
-    --  Assumed format is 'IMAGE or Fixed_IO.Put format (depends on no
-    --  trailing blanks...)
- 
-    procedure Precalculate (Pic : in out Format_Record);
-    --  Precalculates fields from the user supplied data
- 
-    function Format_Number
-      (Pic                 : Format_Record;
-       Number              : String;
-       Currency_Symbol     : String;
-       Fill_Character      : Character;
-       Separator_Character : Character;
-       Radix_Point         : Character) return String;
-    --  Formats number according to Pic
- 
-    function Expand (Picture : String) return String;
- 
- end Ada.Text_IO.Editing;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-textio.adb gcc-8.1.0/gcc/ada/a-textio.adb
*** gcc-7.3.0/gcc/ada/a-textio.adb	Thu Apr 28 10:58:38 2016
--- gcc-8.1.0/gcc/ada/a-textio.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,2183 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                          A D A . T E X T _ I O                           --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Streams;             use Ada.Streams;
- with Interfaces.C_Streams;    use Interfaces.C_Streams;
- 
- with System.File_IO;
- with System.CRTL;
- with System.WCh_Cnv;          use System.WCh_Cnv;
- with System.WCh_Con;          use System.WCh_Con;
- 
- with Ada.Unchecked_Conversion;
- with Ada.Unchecked_Deallocation;
- 
- pragma Elaborate_All (System.File_IO);
- --  Needed because of calls to Chain_File in package body elaboration
- 
- package body Ada.Text_IO is
- 
-    package FIO renames System.File_IO;
- 
-    subtype AP is FCB.AFCB_Ptr;
- 
-    function To_FCB is new Ada.Unchecked_Conversion (File_Mode, FCB.File_Mode);
-    function To_TIO is new Ada.Unchecked_Conversion (FCB.File_Mode, File_Mode);
-    use type FCB.File_Mode;
- 
-    use type System.CRTL.size_t;
- 
-    WC_Encoding : Character;
-    pragma Import (C, WC_Encoding, "__gl_wc_encoding");
-    --  Default wide character encoding
- 
-    Err_Name : aliased String := "*stderr" & ASCII.NUL;
-    In_Name  : aliased String := "*stdin" & ASCII.NUL;
-    Out_Name : aliased String := "*stdout" & ASCII.NUL;
-    --  Names of standard files
-    --
-    --  Use "preallocated" strings to avoid calling "new" during the elaboration
-    --  of the run time. This is needed in the tasking case to avoid calling
-    --  Task_Lock too early. A filename is expected to end with a null character
-    --  in the runtime, here the null characters are added just to have a
-    --  correct filename length.
-    --
-    --  Note: the names for these files are bogus, and probably it would be
-    --  better for these files to have no names, but the ACVC tests insist.
-    --  We use names that are bound to fail in open etc.
- 
-    Null_Str : aliased constant String := "";
-    --  Used as form string for standard files
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    function Get_Upper_Half_Char
-      (C    : Character;
-       File : File_Type) return Character;
-    --  This function is shared by Get and Get_Immediate to extract an encoded
-    --  upper half character value from the given File. The first byte has
-    --  already been read and is passed in C. The character value is returned as
-    --  the result, and the file pointer is bumped past the character.
-    --  Constraint_Error is raised if the encoded value is outside the bounds of
-    --  type Character.
- 
-    function Get_Upper_Half_Char_Immed
-      (C    : Character;
-       File : File_Type) return Character;
-    --  This routine is identical to Get_Upper_Half_Char, except that the reads
-    --  are done in Get_Immediate mode (i.e. without waiting for a line return).
- 
-    function Getc (File : File_Type) return int;
-    --  Gets next character from file, which has already been checked for being
-    --  in read status, and returns the character read if no error occurs. The
-    --  result is EOF if the end of file was read.
- 
-    function Getc_Immed (File : File_Type) return int;
-    --  This routine is identical to Getc, except that the read is done in
-    --  Get_Immediate mode (i.e. without waiting for a line return).
- 
-    function Has_Upper_Half_Character (Item : String) return Boolean;
-    --  Returns True if any of the characters is in the range 16#80#-16#FF#
- 
-    function Nextc (File : File_Type) return int;
-    --  Returns next character from file without skipping past it (i.e. it is a
-    --  combination of Getc followed by an Ungetc).
- 
-    procedure Put_Encoded (File : File_Type; Char : Character);
-    --  Called to output a character Char to the given File, when the encoding
-    --  method for the file is other than brackets, and Char is upper half.
- 
-    procedure Putc (ch : int; File : File_Type);
-    --  Outputs the given character to the file, which has already been checked
-    --  for being in output status. Device_Error is raised if the character
-    --  cannot be written.
- 
-    procedure Set_WCEM (File : in out File_Type);
-    --  Called by Open and Create to set the wide character encoding method for
-    --  the file, processing a WCEM form parameter if one is present. File is
-    --  IN OUT because it may be closed in case of an error.
- 
-    procedure Terminate_Line (File : File_Type);
-    --  If the file is in Write_File or Append_File mode, and the current line
-    --  is not terminated, then a line terminator is written using New_Line.
-    --  Note that there is no Terminate_Page routine, because the page mark at
-    --  the end of the file is implied if necessary.
- 
-    procedure Ungetc (ch : int; File : File_Type);
-    --  Pushes back character into stream, using ungetc. The caller has checked
-    --  that the file is in read status. Device_Error is raised if the character
-    --  cannot be pushed back. An attempt to push back and end of file character
-    --  (EOF) is ignored.
- 
-    -------------------
-    -- AFCB_Allocate --
-    -------------------
- 
-    function AFCB_Allocate (Control_Block : Text_AFCB) return FCB.AFCB_Ptr is
-       pragma Unreferenced (Control_Block);
-    begin
-       return new Text_AFCB;
-    end AFCB_Allocate;
- 
-    ----------------
-    -- AFCB_Close --
-    ----------------
- 
-    procedure AFCB_Close (File : not null access Text_AFCB) is
-    begin
-       --  If the file being closed is one of the current files, then close
-       --  the corresponding current file. It is not clear that this action
-       --  is required (RM A.10.3(23)) but it seems reasonable, and besides
-       --  ACVC test CE3208A expects this behavior.
- 
-       if File_Type (File) = Current_In then
-          Current_In := null;
-       elsif File_Type (File) = Current_Out then
-          Current_Out := null;
-       elsif File_Type (File) = Current_Err then
-          Current_Err := null;
-       end if;
- 
-       Terminate_Line (File_Type (File));
-    end AFCB_Close;
- 
-    ---------------
-    -- AFCB_Free --
-    ---------------
- 
-    procedure AFCB_Free (File : not null access Text_AFCB) is
-       type FCB_Ptr is access all Text_AFCB;
-       FT : FCB_Ptr := FCB_Ptr (File);
- 
-       procedure Free is new Ada.Unchecked_Deallocation (Text_AFCB, FCB_Ptr);
- 
-    begin
-       Free (FT);
-    end AFCB_Free;
- 
-    -----------
-    -- Close --
-    -----------
- 
-    procedure Close (File : in out File_Type) is
-    begin
-       FIO.Close (AP (File)'Unrestricted_Access);
-    end Close;
- 
-    ---------
-    -- Col --
-    ---------
- 
-    --  Note: we assume that it is impossible in practice for the column
-    --  to exceed the value of Count'Last, i.e. no check is required for
-    --  overflow raising layout error.
- 
-    function Col (File : File_Type) return Positive_Count is
-    begin
-       FIO.Check_File_Open (AP (File));
-       return File.Col;
-    end Col;
- 
-    function Col return Positive_Count is
-    begin
-       return Col (Current_Out);
-    end Col;
- 
-    ------------
-    -- Create --
-    ------------
- 
-    procedure Create
-      (File : in out File_Type;
-       Mode : File_Mode := Out_File;
-       Name : String := "";
-       Form : String := "")
-    is
-       Dummy_File_Control_Block : Text_AFCB;
-       pragma Warnings (Off, Dummy_File_Control_Block);
-       --  Yes, we know this is never assigned a value, only the tag
-       --  is used for dispatching purposes, so that's expected.
- 
-    begin
-       FIO.Open (File_Ptr  => AP (File),
-                 Dummy_FCB => Dummy_File_Control_Block,
-                 Mode      => To_FCB (Mode),
-                 Name      => Name,
-                 Form      => Form,
-                 Amethod   => 'T',
-                 Creat     => True,
-                 Text      => True);
- 
-       File.Self := File;
-       Set_WCEM (File);
-    end Create;
- 
-    -------------------
-    -- Current_Error --
-    -------------------
- 
-    function Current_Error return File_Type is
-    begin
-       return Current_Err;
-    end Current_Error;
- 
-    function Current_Error return File_Access is
-    begin
-       return Current_Err.Self'Access;
-    end Current_Error;
- 
-    -------------------
-    -- Current_Input --
-    -------------------
- 
-    function Current_Input return File_Type is
-    begin
-       return Current_In;
-    end Current_Input;
- 
-    function Current_Input return File_Access is
-    begin
-       return Current_In.Self'Access;
-    end Current_Input;
- 
-    --------------------
-    -- Current_Output --
-    --------------------
- 
-    function Current_Output return File_Type is
-    begin
-       return Current_Out;
-    end Current_Output;
- 
-    function Current_Output return File_Access is
-    begin
-       return Current_Out.Self'Access;
-    end Current_Output;
- 
-    ------------
-    -- Delete --
-    ------------
- 
-    procedure Delete (File : in out File_Type) is
-    begin
-       FIO.Delete (AP (File)'Unrestricted_Access);
-    end Delete;
- 
-    -----------------
-    -- End_Of_File --
-    -----------------
- 
-    function End_Of_File (File : File_Type) return Boolean is
-       ch : int;
- 
-    begin
-       FIO.Check_Read_Status (AP (File));
- 
-       if File.Before_Upper_Half_Character then
-          return False;
- 
-       elsif File.Before_LM then
-          if File.Before_LM_PM then
-             return Nextc (File) = EOF;
-          end if;
- 
-       else
-          ch := Getc (File);
- 
-          if ch = EOF then
-             return True;
- 
-          elsif ch /= LM then
-             Ungetc (ch, File);
-             return False;
- 
-          else -- ch = LM
-             File.Before_LM := True;
-          end if;
-       end if;
- 
-       --  Here we are just past the line mark with Before_LM set so that we
-       --  do not have to try to back up past the LM, thus avoiding the need
-       --  to back up more than one character.
- 
-       ch := Getc (File);
- 
-       if ch = EOF then
-          return True;
- 
-       elsif ch = PM and then File.Is_Regular_File then
-          File.Before_LM_PM := True;
-          return Nextc (File) = EOF;
- 
-       --  Here if neither EOF nor PM followed end of line
- 
-       else
-          Ungetc (ch, File);
-          return False;
-       end if;
- 
-    end End_Of_File;
- 
-    function End_Of_File return Boolean is
-    begin
-       return End_Of_File (Current_In);
-    end End_Of_File;
- 
-    -----------------
-    -- End_Of_Line --
-    -----------------
- 
-    function End_Of_Line (File : File_Type) return Boolean is
-       ch : int;
- 
-    begin
-       FIO.Check_Read_Status (AP (File));
- 
-       if File.Before_Upper_Half_Character then
-          return False;
- 
-       elsif File.Before_LM then
-          return True;
- 
-       else
-          ch := Getc (File);
- 
-          if ch = EOF then
-             return True;
- 
-          else
-             Ungetc (ch, File);
-             return (ch = LM);
-          end if;
-       end if;
-    end End_Of_Line;
- 
-    function End_Of_Line return Boolean is
-    begin
-       return End_Of_Line (Current_In);
-    end End_Of_Line;
- 
-    -----------------
-    -- End_Of_Page --
-    -----------------
- 
-    function End_Of_Page (File : File_Type) return Boolean is
-       ch  : int;
- 
-    begin
-       FIO.Check_Read_Status (AP (File));
- 
-       if not File.Is_Regular_File then
-          return False;
- 
-       elsif File.Before_Upper_Half_Character then
-          return False;
- 
-       elsif File.Before_LM then
-          if File.Before_LM_PM then
-             return True;
-          end if;
- 
-       else
-          ch := Getc (File);
- 
-          if ch = EOF then
-             return True;
- 
-          elsif ch /= LM then
-             Ungetc (ch, File);
-             return False;
- 
-          else -- ch = LM
-             File.Before_LM := True;
-          end if;
-       end if;
- 
-       --  Here we are just past the line mark with Before_LM set so that we
-       --  do not have to try to back up past the LM, thus avoiding the need
-       --  to back up more than one character.
- 
-       ch := Nextc (File);
- 
-       return ch = PM or else ch = EOF;
-    end End_Of_Page;
- 
-    function End_Of_Page return Boolean is
-    begin
-       return End_Of_Page (Current_In);
-    end End_Of_Page;
- 
-    --------------
-    -- EOF_Char --
-    --------------
- 
-    function EOF_Char return Integer is
-    begin
-       return EOF;
-    end EOF_Char;
- 
-    -----------
-    -- Flush --
-    -----------
- 
-    procedure Flush (File : File_Type) is
-    begin
-       FIO.Flush (AP (File));
-    end Flush;
- 
-    procedure Flush is
-    begin
-       Flush (Current_Out);
-    end Flush;
- 
-    ----------
-    -- Form --
-    ----------
- 
-    function Form (File : File_Type) return String is
-    begin
-       return FIO.Form (AP (File));
-    end Form;
- 
-    ---------
-    -- Get --
-    ---------
- 
-    procedure Get
-      (File : File_Type;
-       Item : out Character)
-    is
-       ch : int;
- 
-    begin
-       FIO.Check_Read_Status (AP (File));
- 
-       if File.Before_Upper_Half_Character then
-          File.Before_Upper_Half_Character := False;
-          Item := File.Saved_Upper_Half_Character;
- 
-       elsif File.Before_LM then
-          File.Before_LM := False;
-          File.Col := 1;
- 
-          if File.Before_LM_PM then
-             File.Line := 1;
-             File.Page := File.Page + 1;
-             File.Before_LM_PM := False;
-          else
-             File.Line := File.Line + 1;
-          end if;
-       end if;
- 
-       loop
-          ch := Getc (File);
- 
-          if ch = EOF then
-             raise End_Error;
- 
-          elsif ch = LM then
-             File.Line := File.Line + 1;
-             File.Col := 1;
- 
-          elsif ch = PM and then File.Is_Regular_File then
-             File.Page := File.Page + 1;
-             File.Line := 1;
- 
-          else
-             Item := Character'Val (ch);
-             File.Col := File.Col + 1;
-             return;
-          end if;
-       end loop;
-    end Get;
- 
-    procedure Get (Item : out Character) is
-    begin
-       Get (Current_In, Item);
-    end Get;
- 
-    procedure Get
-      (File : File_Type;
-       Item : out String)
-    is
-       ch : int;
-       J  : Natural;
- 
-    begin
-       FIO.Check_Read_Status (AP (File));
- 
-       if File.Before_LM then
-          File.Before_LM := False;
-          File.Before_LM_PM := False;
-          File.Col := 1;
- 
-          if File.Before_LM_PM then
-             File.Line := 1;
-             File.Page := File.Page + 1;
-             File.Before_LM_PM := False;
- 
-          else
-             File.Line := File.Line + 1;
-          end if;
-       end if;
- 
-       J := Item'First;
-       while J <= Item'Last loop
-          ch := Getc (File);
- 
-          if ch = EOF then
-             raise End_Error;
- 
-          elsif ch = LM then
-             File.Line := File.Line + 1;
-             File.Col := 1;
- 
-          elsif ch = PM and then File.Is_Regular_File then
-             File.Page := File.Page + 1;
-             File.Line := 1;
- 
-          else
-             Item (J) := Character'Val (ch);
-             J := J + 1;
-             File.Col := File.Col + 1;
-          end if;
-       end loop;
-    end Get;
- 
-    procedure Get (Item : out String) is
-    begin
-       Get (Current_In, Item);
-    end Get;
- 
-    -------------------
-    -- Get_Immediate --
-    -------------------
- 
-    procedure Get_Immediate
-      (File : File_Type;
-       Item : out Character)
-    is
-       ch          : int;
- 
-    begin
-       FIO.Check_Read_Status (AP (File));
- 
-       if File.Before_Upper_Half_Character then
-          File.Before_Upper_Half_Character := False;
-          Item := File.Saved_Upper_Half_Character;
- 
-       elsif File.Before_LM then
-          File.Before_LM := False;
-          File.Before_LM_PM := False;
-          Item := Character'Val (LM);
- 
-       else
-          ch := Getc_Immed (File);
- 
-          if ch = EOF then
-             raise End_Error;
-          else
-             Item :=
-               (if not Is_Start_Of_Encoding (Character'Val (ch), File.WC_Method)
-                then Character'Val (ch)
-                else Get_Upper_Half_Char_Immed (Character'Val (ch), File));
-          end if;
-       end if;
-    end Get_Immediate;
- 
-    procedure Get_Immediate
-      (Item : out Character)
-    is
-    begin
-       Get_Immediate (Current_In, Item);
-    end Get_Immediate;
- 
-    procedure Get_Immediate
-      (File      : File_Type;
-       Item      : out Character;
-       Available : out Boolean)
-    is
-       ch          : int;
-       end_of_file : int;
-       avail       : int;
- 
-       procedure getc_immediate_nowait
-         (stream      : FILEs;
-          ch          : out int;
-          end_of_file : out int;
-          avail       : out int);
-       pragma Import (C, getc_immediate_nowait, "getc_immediate_nowait");
- 
-    begin
-       FIO.Check_Read_Status (AP (File));
-       Available := True;
- 
-       if File.Before_Upper_Half_Character then
-          File.Before_Upper_Half_Character := False;
-          Item := File.Saved_Upper_Half_Character;
- 
-       elsif File.Before_LM then
-          File.Before_LM := False;
-          File.Before_LM_PM := False;
-          Item := Character'Val (LM);
- 
-       else
-          getc_immediate_nowait (File.Stream, ch, end_of_file, avail);
- 
-          if ferror (File.Stream) /= 0 then
-             raise Device_Error;
- 
-          elsif end_of_file /= 0 then
-             raise End_Error;
- 
-          elsif avail = 0 then
-             Available := False;
-             Item := ASCII.NUL;
- 
-          else
-             Available := True;
- 
-             Item :=
-               (if not Is_Start_Of_Encoding (Character'Val (ch), File.WC_Method)
-                then Character'Val (ch)
-                else Get_Upper_Half_Char_Immed (Character'Val (ch), File));
-          end if;
-       end if;
- 
-    end Get_Immediate;
- 
-    procedure Get_Immediate
-      (Item      : out Character;
-       Available : out Boolean)
-    is
-    begin
-       Get_Immediate (Current_In, Item, Available);
-    end Get_Immediate;
- 
-    --------------
-    -- Get_Line --
-    --------------
- 
-    procedure Get_Line
-      (File : File_Type;
-       Item : out String;
-       Last : out Natural) is separate;
-    --  The implementation of Ada.Text_IO.Get_Line is split into a subunit so
-    --  that different implementations can be used on different systems.
- 
-    procedure Get_Line
-      (Item : out String;
-       Last : out Natural)
-    is
-    begin
-       Get_Line (Current_In, Item, Last);
-    end Get_Line;
- 
-    function Get_Line (File : File_Type) return String is
-       function Get_Rest (S : String) return String;
-       --  This is a recursive function that reads the rest of the line and
-       --  returns it. S is the part read so far.
- 
-       --------------
-       -- Get_Rest --
-       --------------
- 
-       function Get_Rest (S : String) return String is
- 
-          --  The first time we allocate a buffer of size 500. Each following
-          --  time we allocate a buffer the same size as what we have read so
-          --  far. This limits us to a logarithmic number of calls to Get_Rest
-          --  and also ensures only a linear use of stack space.
- 
-          Buffer : String (1 .. Integer'Max (500, S'Length));
-          Last   : Natural;
- 
-       begin
-          Get_Line (File, Buffer, Last);
- 
-          declare
-             R : constant String := S & Buffer (1 .. Last);
-          begin
-             if Last < Buffer'Last then
-                return R;
- 
-             else
-                pragma Assert (Last = Buffer'Last);
- 
-                --  If the String has the same length as the buffer, and there
-                --  is no end of line, check whether we are at the end of file,
-                --  in which case we have the full String in the buffer.
- 
-                if End_Of_File (File) then
-                   return R;
- 
-                else
-                   return Get_Rest (R);
-                end if;
-             end if;
-          end;
-       end Get_Rest;
- 
-    --  Start of processing for Get_Line
- 
-    begin
-       return Get_Rest ("");
-    end Get_Line;
- 
-    function Get_Line return String is
-    begin
-       return Get_Line (Current_In);
-    end Get_Line;
- 
-    -------------------------
-    -- Get_Upper_Half_Char --
-    -------------------------
- 
-    function Get_Upper_Half_Char
-      (C    : Character;
-       File : File_Type) return Character
-    is
-       Result : Wide_Character;
- 
-       function In_Char return Character;
-       --  Function used to obtain additional characters it the wide character
-       --  sequence is more than one character long.
- 
-       function WC_In is new Char_Sequence_To_Wide_Char (In_Char);
- 
-       -------------
-       -- In_Char --
-       -------------
- 
-       function In_Char return Character is
-          ch : constant Integer := Getc (File);
-       begin
-          if ch = EOF then
-             raise End_Error;
-          else
-             return Character'Val (ch);
-          end if;
-       end In_Char;
- 
-    --  Start of processing for Get_Upper_Half_Char
- 
-    begin
-       Result := WC_In (C, File.WC_Method);
- 
-       if Wide_Character'Pos (Result) > 16#FF# then
-          raise Constraint_Error with
-            "invalid wide character in Text_'I'O input";
-       else
-          return Character'Val (Wide_Character'Pos (Result));
-       end if;
-    end Get_Upper_Half_Char;
- 
-    -------------------------------
-    -- Get_Upper_Half_Char_Immed --
-    -------------------------------
- 
-    function Get_Upper_Half_Char_Immed
-      (C    : Character;
-       File : File_Type) return Character
-    is
-       Result : Wide_Character;
- 
-       function In_Char return Character;
-       --  Function used to obtain additional characters it the wide character
-       --  sequence is more than one character long.
- 
-       function WC_In is new Char_Sequence_To_Wide_Char (In_Char);
- 
-       -------------
-       -- In_Char --
-       -------------
- 
-       function In_Char return Character is
-          ch : constant Integer := Getc_Immed (File);
-       begin
-          if ch = EOF then
-             raise End_Error;
-          else
-             return Character'Val (ch);
-          end if;
-       end In_Char;
- 
-    --  Start of processing for Get_Upper_Half_Char_Immed
- 
-    begin
-       Result := WC_In (C, File.WC_Method);
- 
-       if Wide_Character'Pos (Result) > 16#FF# then
-          raise Constraint_Error with
-            "invalid wide character in Text_'I'O input";
-       else
-          return Character'Val (Wide_Character'Pos (Result));
-       end if;
-    end Get_Upper_Half_Char_Immed;
- 
-    ----------
-    -- Getc --
-    ----------
- 
-    function Getc (File : File_Type) return int is
-       ch : int;
- 
-    begin
-       ch := fgetc (File.Stream);
- 
-       if ch = EOF and then ferror (File.Stream) /= 0 then
-          raise Device_Error;
-       else
-          return ch;
-       end if;
-    end Getc;
- 
-    ----------------
-    -- Getc_Immed --
-    ----------------
- 
-    function Getc_Immed (File : File_Type) return int is
-       ch          : int;
-       end_of_file : int;
- 
-       procedure getc_immediate
-         (stream : FILEs; ch : out int; end_of_file : out int);
-       pragma Import (C, getc_immediate, "getc_immediate");
- 
-    begin
-       FIO.Check_Read_Status (AP (File));
- 
-       if File.Before_LM then
-          File.Before_LM := False;
-          File.Before_LM_PM := False;
-          ch := LM;
- 
-       else
-          getc_immediate (File.Stream, ch, end_of_file);
- 
-          if ferror (File.Stream) /= 0 then
-             raise Device_Error;
-          elsif end_of_file /= 0 then
-             return EOF;
-          end if;
-       end if;
- 
-       return ch;
-    end Getc_Immed;
- 
-    ------------------------------
-    -- Has_Upper_Half_Character --
-    ------------------------------
- 
-    function Has_Upper_Half_Character (Item : String) return Boolean is
-    begin
-       for J in Item'Range loop
-          if Character'Pos (Item (J)) >= 16#80# then
-             return True;
-          end if;
-       end loop;
- 
-       return False;
-    end Has_Upper_Half_Character;
- 
-    -------------------------------
-    -- Initialize_Standard_Files --
-    -------------------------------
- 
-    procedure Initialize_Standard_Files is
-    begin
-       Standard_Err.Stream            := stderr;
-       Standard_Err.Name              := Err_Name'Access;
-       Standard_Err.Form              := Null_Str'Unrestricted_Access;
-       Standard_Err.Mode              := FCB.Out_File;
-       Standard_Err.Is_Regular_File   := is_regular_file (fileno (stderr)) /= 0;
-       Standard_Err.Is_Temporary_File := False;
-       Standard_Err.Is_System_File    := True;
-       Standard_Err.Text_Encoding     := Default_Text;
-       Standard_Err.Access_Method     := 'T';
-       Standard_Err.Self              := Standard_Err;
-       Standard_Err.WC_Method         := Default_WCEM;
- 
-       Standard_In.Stream             := stdin;
-       Standard_In.Name               := In_Name'Access;
-       Standard_In.Form               := Null_Str'Unrestricted_Access;
-       Standard_In.Mode               := FCB.In_File;
-       Standard_In.Is_Regular_File    := is_regular_file (fileno (stdin)) /= 0;
-       Standard_In.Is_Temporary_File  := False;
-       Standard_In.Is_System_File     := True;
-       Standard_In.Text_Encoding      := Default_Text;
-       Standard_In.Access_Method      := 'T';
-       Standard_In.Self               := Standard_In;
-       Standard_In.WC_Method          := Default_WCEM;
- 
-       Standard_Out.Stream            := stdout;
-       Standard_Out.Name              := Out_Name'Access;
-       Standard_Out.Form              := Null_Str'Unrestricted_Access;
-       Standard_Out.Mode              := FCB.Out_File;
-       Standard_Out.Is_Regular_File   := is_regular_file (fileno (stdout)) /= 0;
-       Standard_Out.Is_Temporary_File := False;
-       Standard_Out.Is_System_File    := True;
-       Standard_Out.Text_Encoding     := Default_Text;
-       Standard_Out.Access_Method     := 'T';
-       Standard_Out.Self              := Standard_Out;
-       Standard_Out.WC_Method         := Default_WCEM;
- 
-       FIO.Make_Unbuffered (AP (Standard_Out));
-       FIO.Make_Unbuffered (AP (Standard_Err));
-    end Initialize_Standard_Files;
- 
-    -------------
-    -- Is_Open --
-    -------------
- 
-    function Is_Open (File : File_Type) return Boolean is
-    begin
-       return FIO.Is_Open (AP (File));
-    end Is_Open;
- 
-    ----------
-    -- Line --
-    ----------
- 
-    --  Note: we assume that it is impossible in practice for the line
-    --  to exceed the value of Count'Last, i.e. no check is required for
-    --  overflow raising layout error.
- 
-    function Line (File : File_Type) return Positive_Count is
-    begin
-       FIO.Check_File_Open (AP (File));
-       return File.Line;
-    end Line;
- 
-    function Line return Positive_Count is
-    begin
-       return Line (Current_Out);
-    end Line;
- 
-    -----------------
-    -- Line_Length --
-    -----------------
- 
-    function Line_Length (File : File_Type) return Count is
-    begin
-       FIO.Check_Write_Status (AP (File));
-       return File.Line_Length;
-    end Line_Length;
- 
-    function Line_Length return Count is
-    begin
-       return Line_Length (Current_Out);
-    end Line_Length;
- 
-    ----------------
-    -- Look_Ahead --
-    ----------------
- 
-    procedure Look_Ahead
-      (File        : File_Type;
-       Item        : out Character;
-       End_Of_Line : out Boolean)
-    is
-       ch : int;
- 
-    begin
-       FIO.Check_Read_Status (AP (File));
- 
-       --  If we are logically before a line mark, we can return immediately
- 
-       if File.Before_LM then
-          End_Of_Line := True;
-          Item := ASCII.NUL;
- 
-       --  If we are before an upper half character just return it (this can
-       --  happen if there are two calls to Look_Ahead in a row).
- 
-       elsif File.Before_Upper_Half_Character then
-          End_Of_Line := False;
-          Item := File.Saved_Upper_Half_Character;
- 
-       --  Otherwise we must read a character from the input stream
- 
-       else
-          ch := Getc (File);
- 
-          if ch = LM
-            or else ch = EOF
-            or else (ch = PM and then File.Is_Regular_File)
-          then
-             End_Of_Line := True;
-             Ungetc (ch, File);
-             Item := ASCII.NUL;
- 
-          --  Case where character obtained does not represent the start of an
-          --  encoded sequence so it stands for itself and we can unget it with
-          --  no difficulty.
- 
-          elsif not Is_Start_Of_Encoding
-                      (Character'Val (ch), File.WC_Method)
-          then
-             End_Of_Line := False;
-             Ungetc (ch, File);
-             Item := Character'Val (ch);
- 
-          --  For the start of an encoding, we read the character using the
-          --  Get_Upper_Half_Char routine. It will occupy more than one byte
-          --  so we can't put it back with ungetc. Instead we save it in the
-          --  control block, setting a flag that everyone interested in reading
-          --  characters must test before reading the stream.
- 
-          else
-             Item := Get_Upper_Half_Char (Character'Val (ch), File);
-             End_Of_Line := False;
-             File.Saved_Upper_Half_Character := Item;
-             File.Before_Upper_Half_Character := True;
-          end if;
-       end if;
-    end Look_Ahead;
- 
-    procedure Look_Ahead
-      (Item        : out Character;
-       End_Of_Line : out Boolean)
-    is
-    begin
-       Look_Ahead (Current_In, Item, End_Of_Line);
-    end Look_Ahead;
- 
-    ----------
-    -- Mode --
-    ----------
- 
-    function Mode (File : File_Type) return File_Mode is
-    begin
-       return To_TIO (FIO.Mode (AP (File)));
-    end Mode;
- 
-    ----------
-    -- Name --
-    ----------
- 
-    function Name (File : File_Type) return String is
-    begin
-       return FIO.Name (AP (File));
-    end Name;
- 
-    --------------
-    -- New_Line --
-    --------------
- 
-    procedure New_Line
-      (File    : File_Type;
-       Spacing : Positive_Count := 1)
-    is
-    begin
-       --  Raise Constraint_Error if out of range value. The reason for this
-       --  explicit test is that we don't want junk values around, even if
-       --  checks are off in the caller.
- 
-       if not Spacing'Valid then
-          raise Constraint_Error;
-       end if;
- 
-       FIO.Check_Write_Status (AP (File));
- 
-       for K in 1 .. Spacing loop
-          Putc (LM, File);
-          File.Line := File.Line + 1;
- 
-          if File.Page_Length /= 0
-            and then File.Line > File.Page_Length
-          then
-             Putc (PM, File);
-             File.Line := 1;
-             File.Page := File.Page + 1;
-          end if;
-       end loop;
- 
-       File.Col := 1;
-    end New_Line;
- 
-    procedure New_Line (Spacing : Positive_Count := 1) is
-    begin
-       New_Line (Current_Out, Spacing);
-    end New_Line;
- 
-    --------------
-    -- New_Page --
-    --------------
- 
-    procedure New_Page (File : File_Type) is
-    begin
-       FIO.Check_Write_Status (AP (File));
- 
-       if File.Col /= 1 or else File.Line = 1 then
-          Putc (LM, File);
-       end if;
- 
-       Putc (PM, File);
-       File.Page := File.Page + 1;
-       File.Line := 1;
-       File.Col := 1;
-    end New_Page;
- 
-    procedure New_Page is
-    begin
-       New_Page (Current_Out);
-    end New_Page;
- 
-    -----------
-    -- Nextc --
-    -----------
- 
-    function Nextc (File : File_Type) return int is
-       ch : int;
- 
-    begin
-       ch := fgetc (File.Stream);
- 
-       if ch = EOF then
-          if ferror (File.Stream) /= 0 then
-             raise Device_Error;
-          end if;
- 
-       else
-          if ungetc (ch, File.Stream) = EOF then
-             raise Device_Error;
-          end if;
-       end if;
- 
-       return ch;
-    end Nextc;
- 
-    ----------
-    -- Open --
-    ----------
- 
-    procedure Open
-      (File : in out File_Type;
-       Mode : File_Mode;
-       Name : String;
-       Form : String := "")
-    is
-       Dummy_File_Control_Block : Text_AFCB;
-       pragma Warnings (Off, Dummy_File_Control_Block);
-       --  Yes, we know this is never assigned a value, only the tag
-       --  is used for dispatching purposes, so that's expected.
- 
-    begin
-       FIO.Open (File_Ptr  => AP (File),
-                 Dummy_FCB => Dummy_File_Control_Block,
-                 Mode      => To_FCB (Mode),
-                 Name      => Name,
-                 Form      => Form,
-                 Amethod   => 'T',
-                 Creat     => False,
-                 Text      => True);
- 
-       File.Self := File;
-       Set_WCEM (File);
-    end Open;
- 
-    ----------
-    -- Page --
-    ----------
- 
-    --  Note: we assume that it is impossible in practice for the page
-    --  to exceed the value of Count'Last, i.e. no check is required for
-    --  overflow raising layout error.
- 
-    function Page (File : File_Type) return Positive_Count is
-    begin
-       FIO.Check_File_Open (AP (File));
-       return File.Page;
-    end Page;
- 
-    function Page return Positive_Count is
-    begin
-       return Page (Current_Out);
-    end Page;
- 
-    -----------------
-    -- Page_Length --
-    -----------------
- 
-    function Page_Length (File : File_Type) return Count is
-    begin
-       FIO.Check_Write_Status (AP (File));
-       return File.Page_Length;
-    end Page_Length;
- 
-    function Page_Length return Count is
-    begin
-       return Page_Length (Current_Out);
-    end Page_Length;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put
-      (File : File_Type;
-       Item : Character)
-    is
-    begin
-       FIO.Check_Write_Status (AP (File));
- 
-       if File.Line_Length /= 0 and then File.Col > File.Line_Length then
-          New_Line (File);
-       end if;
- 
-       --  If lower half character, or brackets encoding, output directly
- 
-       if Character'Pos (Item) < 16#80#
-         or else File.WC_Method = WCEM_Brackets
-       then
-          if fputc (Character'Pos (Item), File.Stream) = EOF then
-             raise Device_Error;
-          end if;
- 
-       --  Case of upper half character with non-brackets encoding
- 
-       else
-          Put_Encoded (File, Item);
-       end if;
- 
-       File.Col := File.Col + 1;
-    end Put;
- 
-    procedure Put (Item : Character) is
-    begin
-       Put (Current_Out, Item);
-    end Put;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put
-      (File : File_Type;
-       Item : String)
-    is
-    begin
-       FIO.Check_Write_Status (AP (File));
- 
-       --  Only have something to do if string is non-null
- 
-       if Item'Length > 0 then
- 
-          --  If we have bounded lines, or if the file encoding is other than
-          --  Brackets and the string has at least one upper half character,
-          --  then output the string character by character.
- 
-          if File.Line_Length /= 0
-            or else (File.WC_Method /= WCEM_Brackets
-                       and then Has_Upper_Half_Character (Item))
-          then
-             for J in Item'Range loop
-                Put (File, Item (J));
-             end loop;
- 
-          --  Otherwise we can output the entire string at once. Note that if
-          --  there are LF or FF characters in the string, we do not bother to
-          --  count them as line or page terminators.
- 
-          else
-             FIO.Write_Buf (AP (File), Item'Address, Item'Length);
-             File.Col := File.Col + Item'Length;
-          end if;
-       end if;
-    end Put;
- 
-    procedure Put (Item : String) is
-    begin
-       Put (Current_Out, Item);
-    end Put;
- 
-    -----------------
-    -- Put_Encoded --
-    -----------------
- 
-    procedure Put_Encoded (File : File_Type; Char : Character) is
-       procedure Out_Char (C : Character);
-       --  Procedure to output one character of an upper half encoded sequence
- 
-       procedure WC_Out is new Wide_Char_To_Char_Sequence (Out_Char);
- 
-       --------------
-       -- Out_Char --
-       --------------
- 
-       procedure Out_Char (C : Character) is
-       begin
-          Putc (Character'Pos (C), File);
-       end Out_Char;
- 
-    --  Start of processing for Put_Encoded
- 
-    begin
-       WC_Out (Wide_Character'Val (Character'Pos (Char)), File.WC_Method);
-    end Put_Encoded;
- 
-    --------------
-    -- Put_Line --
-    --------------
- 
-    procedure Put_Line
-      (File : File_Type;
-       Item : String)
-    is
-       Ilen   : Natural := Item'Length;
-       Istart : Natural := Item'First;
- 
-    begin
-       FIO.Check_Write_Status (AP (File));
- 
-       --  If we have bounded lines, or if the file encoding is other than
-       --  Brackets and the string has at least one upper half character, then
-       --  output the string character by character.
- 
-       if File.Line_Length /= 0
-         or else (File.WC_Method /= WCEM_Brackets
-                    and then Has_Upper_Half_Character (Item))
-       then
-          for J in Item'Range loop
-             Put (File, Item (J));
-          end loop;
- 
-          New_Line (File);
-          return;
-       end if;
- 
-       --  Normal case where we do not need to output character by character
- 
-       --  We setup a single string that has the necessary terminators and
-       --  then write it with a single call. The reason for doing this is
-       --  that it gives better behavior for the use of Put_Line in multi-
-       --  tasking programs, since often the OS will treat the entire put
-       --  operation as an atomic operation.
- 
-       --  We only do this if the message is 512 characters or less in length,
-       --  since otherwise Put_Line would use an unbounded amount of stack
-       --  space and could cause undetected stack overflow. If we have a
-       --  longer string, then output the first part separately to avoid this.
- 
-       if Ilen > 512 then
-          FIO.Write_Buf (AP (File), Item'Address, size_t (Ilen - 512));
-          Istart := Istart + Ilen - 512;
-          Ilen   := 512;
-       end if;
- 
-       --  Now prepare the string with its terminator
- 
-       declare
-          Buffer : String (1 .. Ilen + 2);
-          Plen   : size_t;
- 
-       begin
-          Buffer (1 .. Ilen) := Item (Istart .. Item'Last);
-          Buffer (Ilen + 1) := Character'Val (LM);
- 
-          if File.Page_Length /= 0
-            and then File.Line > File.Page_Length
-          then
-             Buffer (Ilen + 2) := Character'Val (PM);
-             Plen := size_t (Ilen) + 2;
-             File.Line := 1;
-             File.Page := File.Page + 1;
- 
-          else
-             Plen := size_t (Ilen) + 1;
-             File.Line := File.Line + 1;
-          end if;
- 
-          FIO.Write_Buf (AP (File), Buffer'Address, Plen);
- 
-          File.Col := 1;
-       end;
-    end Put_Line;
- 
-    procedure Put_Line (Item : String) is
-    begin
-       Put_Line (Current_Out, Item);
-    end Put_Line;
- 
-    ----------
-    -- Putc --
-    ----------
- 
-    procedure Putc (ch : int; File : File_Type) is
-    begin
-       if fputc (ch, File.Stream) = EOF then
-          raise Device_Error;
-       end if;
-    end Putc;
- 
-    ----------
-    -- Read --
-    ----------
- 
-    --  This is the primitive Stream Read routine, used when a Text_IO file
-    --  is treated directly as a stream using Text_IO.Streams.Stream.
- 
-    procedure Read
-      (File : in out Text_AFCB;
-       Item : out Stream_Element_Array;
-       Last : out Stream_Element_Offset)
-    is
-       Discard_ch : int;
-       pragma Warnings (Off, Discard_ch);
- 
-    begin
-       --  Need to deal with Before_Upper_Half_Character ???
- 
-       if File.Mode /= FCB.In_File then
-          raise Mode_Error;
-       end if;
- 
-       --  Deal with case where our logical and physical position do not match
-       --  because of being after an LM or LM-PM sequence when in fact we are
-       --  logically positioned before it.
- 
-       if File.Before_LM then
- 
-          --  If we are before a PM, then it is possible for a stream read
-          --  to leave us after the LM and before the PM, which is a bit
-          --  odd. The easiest way to deal with this is to unget the PM,
-          --  so we are indeed positioned between the characters. This way
-          --  further stream read operations will work correctly, and the
-          --  effect on text processing is a little weird, but what can
-          --  be expected if stream and text input are mixed this way?
- 
-          if File.Before_LM_PM then
-             Discard_ch := ungetc (PM, File.Stream);
-             File.Before_LM_PM := False;
-          end if;
- 
-          File.Before_LM := False;
- 
-          Item (Item'First) := Stream_Element (Character'Pos (ASCII.LF));
- 
-          if Item'Length = 1 then
-             Last := Item'Last;
- 
-          else
-             Last :=
-               Item'First +
-                 Stream_Element_Offset
-                   (fread (buffer => Item'Address,
-                           index  => size_t (Item'First + 1),
-                           size   => 1,
-                           count  => Item'Length - 1,
-                           stream => File.Stream));
-          end if;
- 
-          return;
-       end if;
- 
-       --  Now we do the read. Since this is a text file, it is normally in
-       --  text mode, but stream data must be read in binary mode, so we
-       --  temporarily set binary mode for the read, resetting it after.
-       --  These calls have no effect in a system (like Unix) where there is
-       --  no distinction between text and binary files.
- 
-       set_binary_mode (fileno (File.Stream));
- 
-       Last :=
-         Item'First +
-           Stream_Element_Offset
-             (fread (Item'Address, 1, Item'Length, File.Stream)) - 1;
- 
-       if Last < Item'Last then
-          if ferror (File.Stream) /= 0 then
-             raise Device_Error;
-          end if;
-       end if;
- 
-       set_text_mode (fileno (File.Stream));
-    end Read;
- 
-    -----------
-    -- Reset --
-    -----------
- 
-    procedure Reset
-      (File : in out File_Type;
-       Mode : File_Mode)
-    is
-    begin
-       --  Don't allow change of mode for current file (RM A.10.2(5))
- 
-       if (File = Current_In  or else
-           File = Current_Out or else
-           File = Current_Error)
-         and then To_FCB (Mode) /= File.Mode
-       then
-          raise Mode_Error;
-       end if;
- 
-       Terminate_Line (File);
-       FIO.Reset (AP (File)'Unrestricted_Access, To_FCB (Mode));
-       File.Page := 1;
-       File.Line := 1;
-       File.Col  := 1;
-       File.Line_Length := 0;
-       File.Page_Length := 0;
-       File.Before_LM := False;
-       File.Before_LM_PM := False;
-    end Reset;
- 
-    procedure Reset (File : in out File_Type) is
-    begin
-       Terminate_Line (File);
-       FIO.Reset (AP (File)'Unrestricted_Access);
-       File.Page := 1;
-       File.Line := 1;
-       File.Col  := 1;
-       File.Line_Length := 0;
-       File.Page_Length := 0;
-       File.Before_LM := False;
-       File.Before_LM_PM := False;
-    end Reset;
- 
-    -------------
-    -- Set_Col --
-    -------------
- 
-    procedure Set_Col
-      (File : File_Type;
-       To   : Positive_Count)
-    is
-       ch : int;
- 
-    begin
-       --  Raise Constraint_Error if out of range value. The reason for this
-       --  explicit test is that we don't want junk values around, even if
-       --  checks are off in the caller.
- 
-       if not To'Valid then
-          raise Constraint_Error;
-       end if;
- 
-       FIO.Check_File_Open (AP (File));
- 
-       --  Output case
- 
-       if Mode (File) >= Out_File then
- 
-          --  Error if we attempt to set Col to a value greater than the
-          --  maximum permissible line length.
- 
-          if File.Line_Length /= 0 and then To > File.Line_Length then
-             raise Layout_Error;
-          end if;
- 
-          --  If we are behind current position, then go to start of new line
- 
-          if To < File.Col then
-             New_Line (File);
-          end if;
- 
-          --  Loop to output blanks till we are at the required column
- 
-          while File.Col < To loop
-             Put (File, ' ');
-          end loop;
- 
-       --  Input case
- 
-       else
-          --  If we are logically before a LM, but physically after it, the
-          --  file position still reflects the position before the LM, so eat
-          --  it now and adjust the file position appropriately.
- 
-          if File.Before_LM then
-             File.Before_LM := False;
-             File.Before_LM_PM := False;
-             File.Line := File.Line + 1;
-             File.Col := 1;
-          end if;
- 
-          --  Loop reading characters till we get one at the required Col value
- 
-          loop
-             --  Read next character. The reason we have to read ahead is to
-             --  skip formatting characters, the effect of Set_Col is to set
-             --  us to a real character with the right Col value, and format
-             --  characters don't count.
- 
-             ch := Getc (File);
- 
-             --  Error if we hit an end of file
- 
-             if ch = EOF then
-                raise End_Error;
- 
-             --  If line mark, eat it and adjust file position
- 
-             elsif ch = LM then
-                File.Line := File.Line + 1;
-                File.Col := 1;
- 
-             --  If recognized page mark, eat it, and adjust file position
- 
-             elsif ch = PM and then File.Is_Regular_File then
-                File.Page := File.Page + 1;
-                File.Line := 1;
-                File.Col := 1;
- 
-             --  Otherwise this is the character we are looking for, so put it
-             --  back in the input stream (we have not adjusted the file
-             --  position yet, so everything is set right after this ungetc).
- 
-             elsif To = File.Col then
-                Ungetc (ch, File);
-                return;
- 
-             --  Keep skipping characters if we are not there yet, updating the
-             --  file position past the skipped character.
- 
-             else
-                File.Col := File.Col + 1;
-             end if;
-          end loop;
-       end if;
-    end Set_Col;
- 
-    procedure Set_Col (To : Positive_Count) is
-    begin
-       Set_Col (Current_Out, To);
-    end Set_Col;
- 
-    ---------------
-    -- Set_Error --
-    ---------------
- 
-    procedure Set_Error (File : File_Type) is
-    begin
-       FIO.Check_Write_Status (AP (File));
-       Current_Err := File;
-    end Set_Error;
- 
-    ---------------
-    -- Set_Input --
-    ---------------
- 
-    procedure Set_Input (File : File_Type) is
-    begin
-       FIO.Check_Read_Status (AP (File));
-       Current_In := File;
-    end Set_Input;
- 
-    --------------
-    -- Set_Line --
-    --------------
- 
-    procedure Set_Line
-      (File : File_Type;
-       To   : Positive_Count)
-    is
-    begin
-       --  Raise Constraint_Error if out of range value. The reason for this
-       --  explicit test is that we don't want junk values around, even if
-       --  checks are off in the caller.
- 
-       if not To'Valid then
-          raise Constraint_Error;
-       end if;
- 
-       FIO.Check_File_Open (AP (File));
- 
-       if To = File.Line then
-          return;
-       end if;
- 
-       if Mode (File) >= Out_File then
-          if File.Page_Length /= 0 and then To > File.Page_Length then
-             raise Layout_Error;
-          end if;
- 
-          if To < File.Line then
-             New_Page (File);
-          end if;
- 
-          while File.Line < To loop
-             New_Line (File);
-          end loop;
- 
-       else
-          while To /= File.Line loop
-             Skip_Line (File);
-          end loop;
-       end if;
-    end Set_Line;
- 
-    procedure Set_Line (To : Positive_Count) is
-    begin
-       Set_Line (Current_Out, To);
-    end Set_Line;
- 
-    ---------------------
-    -- Set_Line_Length --
-    ---------------------
- 
-    procedure Set_Line_Length (File : File_Type; To : Count) is
-    begin
-       --  Raise Constraint_Error if out of range value. The reason for this
-       --  explicit test is that we don't want junk values around, even if
-       --  checks are off in the caller.
- 
-       if not To'Valid then
-          raise Constraint_Error;
-       end if;
- 
-       FIO.Check_Write_Status (AP (File));
-       File.Line_Length := To;
-    end Set_Line_Length;
- 
-    procedure Set_Line_Length (To : Count) is
-    begin
-       Set_Line_Length (Current_Out, To);
-    end Set_Line_Length;
- 
-    ----------------
-    -- Set_Output --
-    ----------------
- 
-    procedure Set_Output (File : File_Type) is
-    begin
-       FIO.Check_Write_Status (AP (File));
-       Current_Out := File;
-    end Set_Output;
- 
-    ---------------------
-    -- Set_Page_Length --
-    ---------------------
- 
-    procedure Set_Page_Length (File : File_Type; To : Count) is
-    begin
-       --  Raise Constraint_Error if out of range value. The reason for this
-       --  explicit test is that we don't want junk values around, even if
-       --  checks are off in the caller.
- 
-       if not To'Valid then
-          raise Constraint_Error;
-       end if;
- 
-       FIO.Check_Write_Status (AP (File));
-       File.Page_Length := To;
-    end Set_Page_Length;
- 
-    procedure Set_Page_Length (To : Count) is
-    begin
-       Set_Page_Length (Current_Out, To);
-    end Set_Page_Length;
- 
-    --------------
-    -- Set_WCEM --
-    --------------
- 
-    procedure Set_WCEM (File : in out File_Type) is
-       Start : Natural;
-       Stop  : Natural;
- 
-    begin
-       File.WC_Method := WCEM_Brackets;
-       FIO.Form_Parameter (File.Form.all, "wcem", Start, Stop);
- 
-       if Start = 0 then
-          File.WC_Method := WCEM_Brackets;
- 
-       else
-          if Stop = Start then
-             for J in WC_Encoding_Letters'Range loop
-                if File.Form (Start) = WC_Encoding_Letters (J) then
-                   File.WC_Method := J;
-                   return;
-                end if;
-             end loop;
-          end if;
- 
-          Close (File);
-          raise Use_Error with "invalid WCEM form parameter";
-       end if;
-    end Set_WCEM;
- 
-    ---------------
-    -- Skip_Line --
-    ---------------
- 
-    procedure Skip_Line
-      (File    : File_Type;
-       Spacing : Positive_Count := 1)
-    is
-       ch : int;
- 
-    begin
-       --  Raise Constraint_Error if out of range value. The reason for this
-       --  explicit test is that we don't want junk values around, even if
-       --  checks are off in the caller.
- 
-       if not Spacing'Valid then
-          raise Constraint_Error;
-       end if;
- 
-       FIO.Check_Read_Status (AP (File));
- 
-       for L in 1 .. Spacing loop
-          if File.Before_LM then
-             File.Before_LM := False;
- 
-             --  Note that if File.Before_LM_PM is currently set, we also have
-             --  to reset it (because it makes sense for Before_LM_PM to be set
-             --  only when Before_LM is also set). This is done later on in this
-             --  subprogram, as soon as Before_LM_PM has been taken into account
-             --  for the purpose of page and line counts.
- 
-          else
-             ch := Getc (File);
- 
-             --  If at end of file now, then immediately raise End_Error. Note
-             --  that we can never be positioned between a line mark and a page
-             --  mark, so if we are at the end of file, we cannot logically be
-             --  before the implicit page mark that is at the end of the file.
- 
-             --  For the same reason, we do not need an explicit check for a
-             --  page mark. If there is a FF in the middle of a line, the file
-             --  is not in canonical format and we do not care about the page
-             --  numbers for files other than ones in canonical format.
- 
-             if ch = EOF then
-                raise End_Error;
-             end if;
- 
-             --  If not at end of file, then loop till we get to an LM or EOF.
-             --  The latter case happens only in non-canonical files where the
-             --  last line is not terminated by LM, but we don't want to blow
-             --  up for such files, so we assume an implicit LM in this case.
- 
-             loop
-                exit when ch = LM or else ch = EOF;
-                ch := Getc (File);
-             end loop;
-          end if;
- 
-          --  We have got past a line mark, now, for a regular file only,
-          --  see if a page mark immediately follows this line mark and
-          --  if so, skip past the page mark as well. We do not do this
-          --  for non-regular files, since it would cause an undesirable
-          --  wait for an additional character.
- 
-          File.Col := 1;
-          File.Line := File.Line + 1;
- 
-          if File.Before_LM_PM then
-             File.Page := File.Page + 1;
-             File.Line := 1;
-             File.Before_LM_PM := False;
- 
-          elsif File.Is_Regular_File then
-             ch := Getc (File);
- 
-             --  Page mark can be explicit, or implied at the end of the file
- 
-             if (ch = PM or else ch = EOF)
-               and then File.Is_Regular_File
-             then
-                File.Page := File.Page + 1;
-                File.Line := 1;
-             else
-                Ungetc (ch, File);
-             end if;
-          end if;
-       end loop;
- 
-       File.Before_Upper_Half_Character := False;
-    end Skip_Line;
- 
-    procedure Skip_Line (Spacing : Positive_Count := 1) is
-    begin
-       Skip_Line (Current_In, Spacing);
-    end Skip_Line;
- 
-    ---------------
-    -- Skip_Page --
-    ---------------
- 
-    procedure Skip_Page (File : File_Type) is
-       ch : int;
- 
-    begin
-       FIO.Check_Read_Status (AP (File));
- 
-       --  If at page mark already, just skip it
- 
-       if File.Before_LM_PM then
-          File.Before_LM := False;
-          File.Before_LM_PM := False;
-          File.Page := File.Page + 1;
-          File.Line := 1;
-          File.Col  := 1;
-          return;
-       end if;
- 
-       --  This is a bit tricky, if we are logically before an LM then
-       --  it is not an error if we are at an end of file now, since we
-       --  are not really at it.
- 
-       if File.Before_LM then
-          File.Before_LM := False;
-          File.Before_LM_PM := False;
-          ch := Getc (File);
- 
-       --  Otherwise we do raise End_Error if we are at the end of file now
- 
-       else
-          ch := Getc (File);
- 
-          if ch = EOF then
-             raise End_Error;
-          end if;
-       end if;
- 
-       --  Now we can just rumble along to the next page mark, or to the
-       --  end of file, if that comes first. The latter case happens when
-       --  the page mark is implied at the end of file.
- 
-       loop
-          exit when ch = EOF
-            or else (ch = PM and then File.Is_Regular_File);
-          ch := Getc (File);
-       end loop;
- 
-       File.Page := File.Page + 1;
-       File.Line := 1;
-       File.Col  := 1;
-       File.Before_Upper_Half_Character := False;
-    end Skip_Page;
- 
-    procedure Skip_Page is
-    begin
-       Skip_Page (Current_In);
-    end Skip_Page;
- 
-    --------------------
-    -- Standard_Error --
-    --------------------
- 
-    function Standard_Error return File_Type is
-    begin
-       return Standard_Err;
-    end Standard_Error;
- 
-    function Standard_Error return File_Access is
-    begin
-       return Standard_Err'Access;
-    end Standard_Error;
- 
-    --------------------
-    -- Standard_Input --
-    --------------------
- 
-    function Standard_Input return File_Type is
-    begin
-       return Standard_In;
-    end Standard_Input;
- 
-    function Standard_Input return File_Access is
-    begin
-       return Standard_In'Access;
-    end Standard_Input;
- 
-    ---------------------
-    -- Standard_Output --
-    ---------------------
- 
-    function Standard_Output return File_Type is
-    begin
-       return Standard_Out;
-    end Standard_Output;
- 
-    function Standard_Output return File_Access is
-    begin
-       return Standard_Out'Access;
-    end Standard_Output;
- 
-    --------------------
-    -- Terminate_Line --
-    --------------------
- 
-    procedure Terminate_Line (File : File_Type) is
-    begin
-       FIO.Check_File_Open (AP (File));
- 
-       --  For file other than In_File, test for needing to terminate last line
- 
-       if Mode (File) /= In_File then
- 
-          --  If not at start of line definition need new line
- 
-          if File.Col /= 1 then
-             New_Line (File);
- 
-          --  For files other than standard error and standard output, we
-          --  make sure that an empty file has a single line feed, so that
-          --  it is properly formatted. We avoid this for the standard files
-          --  because it is too much of a nuisance to have these odd line
-          --  feeds when nothing has been written to the file.
- 
-          --  We also avoid this for files opened in append mode, in
-          --  accordance with (RM A.8.2(10))
- 
-          elsif (File /= Standard_Err and then File /= Standard_Out)
-            and then (File.Line = 1 and then File.Page = 1)
-            and then Mode (File) = Out_File
-          then
-             New_Line (File);
-          end if;
-       end if;
-    end Terminate_Line;
- 
-    ------------
-    -- Ungetc --
-    ------------
- 
-    procedure Ungetc (ch : int; File : File_Type) is
-    begin
-       if ch /= EOF then
-          if ungetc (ch, File.Stream) = EOF then
-             raise Device_Error;
-          end if;
-       end if;
-    end Ungetc;
- 
-    -----------
-    -- Write --
-    -----------
- 
-    --  This is the primitive Stream Write routine, used when a Text_IO file
-    --  is treated directly as a stream using Text_IO.Streams.Stream.
- 
-    procedure Write
-      (File : in out Text_AFCB;
-       Item : Stream_Element_Array)
-    is
-       pragma Warnings (Off, File);
-       --  Because in this implementation we don't need IN OUT, we only read
- 
-       function Has_Translated_Characters return Boolean;
-       --  return True if Item array contains a character which will be
-       --  translated under the text file mode. There is only one such
-       --  character under DOS based systems which is character 10.
- 
-       text_translation_required : Boolean;
-       for text_translation_required'Size use Character'Size;
-       pragma Import (C, text_translation_required,
-                      "__gnat_text_translation_required");
- 
-       Siz : constant size_t := Item'Length;
- 
-       -------------------------------
-       -- Has_Translated_Characters --
-       -------------------------------
- 
-       function Has_Translated_Characters return Boolean is
-       begin
-          for K in Item'Range loop
-             if Item (K) = 10 then
-                return True;
-             end if;
-          end loop;
-          return False;
-       end Has_Translated_Characters;
- 
-       Needs_Binary_Write : constant Boolean :=
-         text_translation_required and then Has_Translated_Characters;
- 
-    --  Start of processing for Write
- 
-    begin
-       if File.Mode = FCB.In_File then
-          raise Mode_Error;
-       end if;
- 
-       --  Now we do the write. Since this is a text file, it is normally in
-       --  text mode, but stream data must be written in binary mode, so we
-       --  temporarily set binary mode for the write, resetting it after. This
-       --  is done only if needed (i.e. there is some characters in Item which
-       --  needs to be written using the binary mode).
-       --  These calls have no effect in a system (like Unix) where there is
-       --  no distinction between text and binary files.
- 
-       --  Since the character translation is done at the time the buffer is
-       --  written (this is true under Windows) we first flush current buffer
-       --  with text mode if needed.
- 
-       if Needs_Binary_Write then
-          if fflush (File.Stream) = -1 then
-             raise Device_Error;
-          end if;
- 
-          set_binary_mode (fileno (File.Stream));
-       end if;
- 
-       if fwrite (Item'Address, 1, Siz, File.Stream) /= Siz then
-          raise Device_Error;
-       end if;
- 
-       --  At this point we need to flush the buffer using the binary mode then
-       --  we reset to text mode.
- 
-       if Needs_Binary_Write then
-          if fflush (File.Stream) = -1 then
-             raise Device_Error;
-          end if;
- 
-          set_text_mode (fileno (File.Stream));
-       end if;
-    end Write;
- 
- begin
-    --  Initialize Standard Files
- 
-    for J in WC_Encoding_Method loop
-       if WC_Encoding = WC_Encoding_Letters (J) then
-          Default_WCEM := J;
-       end if;
-    end loop;
- 
-    Initialize_Standard_Files;
- 
-    FIO.Chain_File (AP (Standard_In));
-    FIO.Chain_File (AP (Standard_Out));
-    FIO.Chain_File (AP (Standard_Err));
- 
- end Ada.Text_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-textio.ads gcc-8.1.0/gcc/ada/a-textio.ads
*** gcc-7.3.0/gcc/ada/a-textio.ads	Thu Jul 17 06:37:45 2014
--- gcc-8.1.0/gcc/ada/a-textio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,471 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                          A D A . T E X T _ I O                           --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2014, Free Software Foundation, 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Note: the generic subpackages of Text_IO (Integer_IO, Float_IO, Fixed_IO,
- --  Modular_IO, Decimal_IO and Enumeration_IO) appear as private children in
- --  GNAT. These children are with'ed automatically if they are referenced, so
- --  this rearrangement is invisible to user programs, but has the advantage
- --  that only the needed parts of Text_IO are processed and loaded.
- 
- with Ada.IO_Exceptions;
- with Ada.Streams;
- 
- with System;
- with System.File_Control_Block;
- with System.WCh_Con;
- 
- package Ada.Text_IO is
-    pragma Elaborate_Body;
- 
-    type File_Type is limited private;
-    type File_Mode is (In_File, Out_File, Append_File);
- 
-    --  The following representation clause allows the use of unchecked
-    --  conversion for rapid translation between the File_Mode type
-    --  used in this package and System.File_IO.
- 
-    for File_Mode use
-      (In_File     => 0,  -- System.FIle_IO.File_Mode'Pos (In_File)
-       Out_File    => 2,  -- System.File_IO.File_Mode'Pos (Out_File)
-       Append_File => 3); -- System.File_IO.File_Mode'Pos (Append_File)
- 
-    type Count is range 0 .. Natural'Last;
-    --  The value of Count'Last must be large enough so that the assumption that
-    --  the Line, Column and Page counts can never exceed this value is valid.
- 
-    subtype Positive_Count is Count range 1 .. Count'Last;
- 
-    Unbounded : constant Count := 0;
-    --  Line and page length
- 
-    subtype Field is Integer range 0 .. 255;
-    --  Note: if for any reason, there is a need to increase this value, then it
-    --  will be necessary to change the corresponding value in System.Img_Real
-    --  in file s-imgrea.adb.
- 
-    subtype Number_Base is Integer range 2 .. 16;
- 
-    type Type_Set is (Lower_Case, Upper_Case);
- 
-    ---------------------
-    -- File Management --
-    ---------------------
- 
-    procedure Create
-      (File : in out File_Type;
-       Mode : File_Mode := Out_File;
-       Name : String := "";
-       Form : String := "");
- 
-    procedure Open
-      (File : in out File_Type;
-       Mode : File_Mode;
-       Name : String;
-       Form : String := "");
- 
-    procedure Close  (File : in out File_Type);
-    procedure Delete (File : in out File_Type);
-    procedure Reset  (File : in out File_Type; Mode : File_Mode);
-    procedure Reset  (File : in out File_Type);
- 
-    function Mode (File : File_Type) return File_Mode;
-    function Name (File : File_Type) return String;
-    function Form (File : File_Type) return String;
- 
-    function Is_Open (File : File_Type) return Boolean;
- 
-    ------------------------------------------------------
-    -- Control of default input, output and error files --
-    ------------------------------------------------------
- 
-    procedure Set_Input  (File : File_Type);
-    procedure Set_Output (File : File_Type);
-    procedure Set_Error  (File : File_Type);
- 
-    function Standard_Input  return File_Type;
-    function Standard_Output return File_Type;
-    function Standard_Error  return File_Type;
- 
-    function Current_Input  return File_Type;
-    function Current_Output return File_Type;
-    function Current_Error  return File_Type;
- 
-    type File_Access is access constant File_Type;
- 
-    function Standard_Input  return File_Access;
-    function Standard_Output return File_Access;
-    function Standard_Error  return File_Access;
- 
-    function Current_Input  return File_Access;
-    function Current_Output return File_Access;
-    function Current_Error  return File_Access;
- 
-    --------------------
-    -- Buffer control --
-    --------------------
- 
-    --  Note: The parameter file is IN OUT in the RM, but this is clearly
-    --  an oversight, and was intended to be IN, see AI95-00057.
- 
-    procedure Flush (File : File_Type);
-    procedure Flush;
- 
-    --------------------------------------------
-    -- Specification of line and page lengths --
-    --------------------------------------------
- 
-    procedure Set_Line_Length (File : File_Type; To : Count);
-    procedure Set_Line_Length (To : Count);
- 
-    procedure Set_Page_Length (File : File_Type; To : Count);
-    procedure Set_Page_Length (To : Count);
- 
-    function Line_Length (File : File_Type) return Count;
-    function Line_Length return Count;
- 
-    function Page_Length (File : File_Type) return Count;
-    function Page_Length return Count;
- 
-    ------------------------------------
-    -- Column, Line, and Page Control --
-    ------------------------------------
- 
-    procedure New_Line (File : File_Type; Spacing : Positive_Count := 1);
-    procedure New_Line (Spacing : Positive_Count := 1);
- 
-    procedure Skip_Line (File : File_Type; Spacing : Positive_Count := 1);
-    procedure Skip_Line (Spacing : Positive_Count := 1);
- 
-    function End_Of_Line (File : File_Type) return Boolean;
-    function End_Of_Line return Boolean;
- 
-    procedure New_Page (File : File_Type);
-    procedure New_Page;
- 
-    procedure Skip_Page (File : File_Type);
-    procedure Skip_Page;
- 
-    function End_Of_Page (File : File_Type) return Boolean;
-    function End_Of_Page return Boolean;
- 
-    function End_Of_File (File : File_Type) return Boolean;
-    function End_Of_File return Boolean;
- 
-    procedure Set_Col (File : File_Type;  To : Positive_Count);
-    procedure Set_Col (To : Positive_Count);
- 
-    procedure Set_Line (File : File_Type; To : Positive_Count);
-    procedure Set_Line (To : Positive_Count);
- 
-    function Col (File : File_Type) return Positive_Count;
-    function Col return Positive_Count;
- 
-    function Line (File : File_Type) return Positive_Count;
-    function Line return Positive_Count;
- 
-    function Page (File : File_Type) return Positive_Count;
-    function Page return Positive_Count;
- 
-    ----------------------------
-    -- Character Input-Output --
-    ----------------------------
- 
-    procedure Get (File : File_Type; Item : out Character);
-    procedure Get (Item : out Character);
-    procedure Put (File : File_Type; Item : Character);
-    procedure Put (Item : Character);
- 
-    procedure Look_Ahead
-      (File        : File_Type;
-       Item        : out Character;
-       End_Of_Line : out Boolean);
- 
-    procedure Look_Ahead
-      (Item        : out Character;
-       End_Of_Line : out Boolean);
- 
-    procedure Get_Immediate
-      (File : File_Type;
-       Item : out Character);
- 
-    procedure Get_Immediate
-      (Item : out Character);
- 
-    procedure Get_Immediate
-      (File      : File_Type;
-       Item      : out Character;
-       Available : out Boolean);
- 
-    procedure Get_Immediate
-      (Item      : out Character;
-       Available : out Boolean);
- 
-    -------------------------
-    -- String Input-Output --
-    -------------------------
- 
-    procedure Get (File : File_Type; Item : out String);
-    procedure Get (Item : out String);
-    procedure Put (File : File_Type; Item : String);
-    procedure Put (Item : String);
- 
-    procedure Get_Line
-      (File : File_Type;
-       Item : out String;
-       Last : out Natural);
- 
-    procedure Get_Line
-      (Item : out String;
-       Last : out Natural);
- 
-    function Get_Line (File : File_Type) return String;
-    pragma Ada_05 (Get_Line);
- 
-    function Get_Line return String;
-    pragma Ada_05 (Get_Line);
- 
-    procedure Put_Line
-      (File : File_Type;
-       Item : String);
- 
-    procedure Put_Line
-      (Item : String);
- 
-    ---------------------------------------
-    -- Generic packages for Input-Output --
-    ---------------------------------------
- 
-    --  The generic packages:
- 
-    --    Ada.Text_IO.Integer_IO
-    --    Ada.Text_IO.Modular_IO
-    --    Ada.Text_IO.Float_IO
-    --    Ada.Text_IO.Fixed_IO
-    --    Ada.Text_IO.Decimal_IO
-    --    Ada.Text_IO.Enumeration_IO
- 
-    --  are implemented as separate child packages in GNAT, so the
-    --  spec and body of these packages are to be found in separate
-    --  child units. This implementation detail is hidden from the
-    --  Ada programmer by special circuitry in the compiler that
-    --  treats these child packages as though they were nested in
-    --  Text_IO. The advantage of this special processing is that
-    --  the subsidiary routines needed if these generics are used
-    --  are not loaded when they are not used.
- 
-    ----------------
-    -- Exceptions --
-    ----------------
- 
-    Status_Error : exception renames IO_Exceptions.Status_Error;
-    Mode_Error   : exception renames IO_Exceptions.Mode_Error;
-    Name_Error   : exception renames IO_Exceptions.Name_Error;
-    Use_Error    : exception renames IO_Exceptions.Use_Error;
-    Device_Error : exception renames IO_Exceptions.Device_Error;
-    End_Error    : exception renames IO_Exceptions.End_Error;
-    Data_Error   : exception renames IO_Exceptions.Data_Error;
-    Layout_Error : exception renames IO_Exceptions.Layout_Error;
- 
- private
- 
-    --  The following procedures have a File_Type formal of mode IN OUT because
-    --  they may close the original file. The Close operation may raise an
-    --  exception, but in that case we want any assignment to the formal to
-    --  be effective anyway, so it must be passed by reference (or the caller
-    --  will be left with a dangling pointer).
- 
-    pragma Export_Procedure
-      (Internal  => Close,
-       External  => "",
-       Mechanism => Reference);
-    pragma Export_Procedure
-      (Internal  => Delete,
-       External  => "",
-       Mechanism => Reference);
-    pragma Export_Procedure
-      (Internal        => Reset,
-       External        => "",
-       Parameter_Types => (File_Type),
-       Mechanism       => Reference);
-    pragma Export_Procedure
-      (Internal        => Reset,
-       External        => "",
-       Parameter_Types => (File_Type, File_Mode),
-       Mechanism       => (File => Reference));
- 
-    -----------------------------------
-    -- Handling of Format Characters --
-    -----------------------------------
- 
-    --  Line marks are represented by the single character ASCII.LF (16#0A#).
-    --  In DOS and similar systems, underlying file translation takes care
-    --  of translating this to and from the standard CR/LF sequences used in
-    --  these operating systems to mark the end of a line. On output there is
-    --  always a line mark at the end of the last line, but on input, this
-    --  line mark can be omitted, and is implied by the end of file.
- 
-    --  Page marks are represented by the single character ASCII.FF (16#0C#),
-    --  The page mark at the end of the file may be omitted, and is normally
-    --  omitted on output unless an explicit New_Page call is made before
-    --  closing the file. No page mark is added when a file is appended to,
-    --  so, in accordance with the permission in (RM A.10.2(4)), there may
-    --  or may not be a page mark separating preexisting text in the file
-    --  from the new text to be written.
- 
-    --  A file mark is marked by the physical end of file. In DOS translation
-    --  mode on input, an EOF character (SUB = 16#1A#) gets translated to the
-    --  physical end of file, so in effect this character is recognized as
-    --  marking the end of file in DOS and similar systems.
- 
-    LM : constant := Character'Pos (ASCII.LF);
-    --  Used as line mark
- 
-    PM : constant := Character'Pos (ASCII.FF);
-    --  Used as page mark, except at end of file where it is implied
- 
-    --------------------------------
-    -- Text_IO File Control Block --
-    --------------------------------
- 
-    Default_WCEM : System.WCh_Con.WC_Encoding_Method :=
-                     System.WCh_Con.WCEM_UTF8;
-    --  This gets modified during initialization (see body) using
-    --  the default value established in the call to Set_Globals.
- 
-    package FCB renames System.File_Control_Block;
- 
-    type Text_AFCB;
-    type File_Type is access all Text_AFCB;
- 
-    type Text_AFCB is new FCB.AFCB with record
-       Page        : Count := 1;
-       Line        : Count := 1;
-       Col         : Count := 1;
-       Line_Length : Count := 0;
-       Page_Length : Count := 0;
- 
-       Self : aliased File_Type;
-       --  Set to point to the containing Text_AFCB block. This is used to
-       --  implement the Current_{Error,Input,Output} functions which return
-       --  a File_Access, the file access value returned is a pointer to
-       --  the Self field of the corresponding file.
- 
-       Before_LM : Boolean := False;
-       --  This flag is used to deal with the anomalies introduced by the
-       --  peculiar definition of End_Of_File and End_Of_Page in Ada. These
-       --  functions require looking ahead more than one character. Since
-       --  there is no convenient way of backing up more than one character,
-       --  what we do is to leave ourselves positioned past the LM, but set
-       --  this flag, so that we know that from an Ada point of view we are
-       --  in front of the LM, not after it. A little odd, but it works.
- 
-       Before_LM_PM : Boolean := False;
-       --  This flag similarly handles the case of being physically positioned
-       --  after a LM-PM sequence when logically we are before the LM-PM. This
-       --  flag can only be set if Before_LM is also set.
- 
-       WC_Method : System.WCh_Con.WC_Encoding_Method := Default_WCEM;
-       --  Encoding method to be used for this file. Text_IO does not deal with
-       --  wide characters, but it does deal with upper half characters in the
-       --  range 16#80#-16#FF# which may need encoding, e.g. in UTF-8 mode.
- 
-       Before_Upper_Half_Character : Boolean := False;
-       --  This flag is set to indicate that an encoded upper half character has
-       --  been read by Text_IO.Look_Ahead. If it is set to True, then it means
-       --  that the stream is logically positioned before the character but is
-       --  physically positioned after it. The character involved must be in
-       --  the range 16#80#-16#FF#, i.e. if the flag is set, then we know the
-       --  next character has a code greater than 16#7F#, and the value of this
-       --  character is saved in Saved_Upper_Half_Character.
- 
-       Saved_Upper_Half_Character : Character;
-       --  This field is valid only if Before_Upper_Half_Character is set. It
-       --  contains an upper-half character read by Look_Ahead. If Look_Ahead
-       --  reads a character in the range 16#00# to 16#7F#, then it can use
-       --  ungetc to put it back, but ungetc cannot be called more than once,
-       --  so for characters above this range, we don't try to back up the
-       --  file. Instead we save the character in this field and set the flag
-       --  Before_Upper_Half_Character to True to indicate that we are logically
-       --  positioned before this character even though the stream is physically
-       --  positioned after it.
- 
-    end record;
- 
-    function AFCB_Allocate (Control_Block : Text_AFCB) return FCB.AFCB_Ptr;
- 
-    procedure AFCB_Close (File : not null access Text_AFCB);
-    procedure AFCB_Free  (File : not null access Text_AFCB);
- 
-    procedure Read
-      (File : in out Text_AFCB;
-       Item : out Ada.Streams.Stream_Element_Array;
-       Last : out Ada.Streams.Stream_Element_Offset);
-    --  Read operation used when Text_IO file is treated directly as Stream
- 
-    procedure Write
-      (File : in out Text_AFCB;
-       Item : Ada.Streams.Stream_Element_Array);
-    --  Write operation used when Text_IO file is treated directly as Stream
- 
-    ------------------------
-    -- The Standard Files --
-    ------------------------
- 
-    Standard_In_AFCB  : aliased Text_AFCB;
-    Standard_Out_AFCB : aliased Text_AFCB;
-    Standard_Err_AFCB : aliased Text_AFCB;
- 
-    Standard_In  : aliased File_Type := Standard_In_AFCB'Access;
-    Standard_Out : aliased File_Type := Standard_Out_AFCB'Access;
-    Standard_Err : aliased File_Type := Standard_Err_AFCB'Access;
-    --  Standard files
- 
-    Current_In   : aliased File_Type := Standard_In;
-    Current_Out  : aliased File_Type := Standard_Out;
-    Current_Err  : aliased File_Type := Standard_Err;
-    --  Current files
- 
-    function EOF_Char return Integer;
-    --  Returns the system-specific character indicating the end of a text file.
-    --  This is exported for use by child packages such as Enumeration_Aux to
-    --  eliminate their needing to depend directly on Interfaces.C_Streams,
-    --  which is not available in certain target environments (such as AAMP).
- 
-    procedure Initialize_Standard_Files;
-    --  Initializes the file control blocks for the standard files. Called from
-    --  the elaboration routine for this package, and from Reset_Standard_Files
-    --  in package Ada.Text_IO.Reset_Standard_Files.
- 
- end Ada.Text_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-tgdico.ads gcc-8.1.0/gcc/ada/a-tgdico.ads
*** gcc-7.3.0/gcc/ada/a-tgdico.ads	Mon Oct 20 14:11:43 2014
--- gcc-8.1.0/gcc/ada/a-tgdico.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,29 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                 ADA.TAGS.GENERIC_DISPATCHING_CONSTRUCTOR                 --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- pragma Warnings (Off);
- --  Turn off categorization warnings
- 
- generic
-    type T (<>) is abstract tagged limited private;
-    type Parameters (<>) is limited private;
-    with function Constructor (Params : not null access Parameters) return T
-      is abstract;
- 
- function Ada.Tags.Generic_Dispatching_Constructor
-   (The_Tag : Tag;
-    Params  : not null access Parameters) return T'Class;
- pragma Preelaborate (Generic_Dispatching_Constructor);
- pragma Import (Intrinsic, Generic_Dispatching_Constructor);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-tiboio.adb gcc-8.1.0/gcc/ada/a-tiboio.adb
*** gcc-7.3.0/gcc/ada/a-tiboio.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-tiboio.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,179 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --               A D A . T E X T _ I O . B O U N D E D _ I O                --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1997-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- --
- -- 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.Text_IO; use Ada.Text_IO;
- with Ada.Unchecked_Deallocation;
- 
- package body Ada.Text_IO.Bounded_IO is
- 
-    type String_Access is access all String;
- 
-    procedure Free (SA : in out String_Access);
-    --  Perform an unchecked deallocation of a non-null string
- 
-    ----------
-    -- Free --
-    ----------
- 
-    procedure Free (SA : in out String_Access) is
-       Null_String : constant String := "";
- 
-       procedure Deallocate is
-         new Ada.Unchecked_Deallocation (String, String_Access);
- 
-    begin
-       --  Do not try to free statically allocated null string
- 
-       if SA.all /= Null_String then
-          Deallocate (SA);
-       end if;
-    end Free;
- 
-    --------------
-    -- Get_Line --
-    --------------
- 
-    function Get_Line return Bounded.Bounded_String is
-    begin
-       return Bounded.To_Bounded_String (Get_Line);
-    end Get_Line;
- 
-    --------------
-    -- Get_Line --
-    --------------
- 
-    function Get_Line
-      (File : File_Type) return Bounded.Bounded_String
-    is
-    begin
-       return Bounded.To_Bounded_String (Get_Line (File));
-    end Get_Line;
- 
-    --------------
-    -- Get_Line --
-    --------------
- 
-    procedure Get_Line
-      (Item : out Bounded.Bounded_String)
-    is
-       Buffer : String (1 .. 1000);
-       Last   : Natural;
-       Str1   : String_Access;
-       Str2   : String_Access;
- 
-    begin
-       Get_Line (Buffer, Last);
-       Str1 := new String'(Buffer (1 .. Last));
- 
-       while Last = Buffer'Last loop
-          Get_Line (Buffer, Last);
-          Str2 := new String'(Str1.all & Buffer (1 .. Last));
-          Free (Str1);
-          Str1 := Str2;
-       end loop;
- 
-       Item := Bounded.To_Bounded_String (Str1.all);
-    end Get_Line;
- 
-    --------------
-    -- Get_Line --
-    --------------
- 
-    procedure Get_Line
-      (File : File_Type;
-       Item : out Bounded.Bounded_String)
-    is
-       Buffer : String (1 .. 1000);
-       Last   : Natural;
-       Str1   : String_Access;
-       Str2   : String_Access;
- 
-    begin
-       Get_Line (File, Buffer, Last);
-       Str1 := new String'(Buffer (1 .. Last));
- 
-       while Last = Buffer'Last loop
-          Get_Line (File, Buffer, Last);
-          Str2 := new String'(Str1.all & Buffer (1 .. Last));
-          Free (Str1);
-          Str1 := Str2;
-       end loop;
- 
-       Item := Bounded.To_Bounded_String (Str1.all);
-    end Get_Line;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put
-      (Item : Bounded.Bounded_String)
-    is
-    begin
-       Put (Bounded.To_String (Item));
-    end Put;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put
-      (File : File_Type;
-       Item : Bounded.Bounded_String)
-    is
-    begin
-       Put (File, Bounded.To_String (Item));
-    end Put;
- 
-    --------------
-    -- Put_Line --
-    --------------
- 
-    procedure Put_Line
-      (Item : Bounded.Bounded_String)
-    is
-    begin
-       Put_Line (Bounded.To_String (Item));
-    end Put_Line;
- 
-    --------------
-    -- Put_Line --
-    --------------
- 
-    procedure Put_Line
-      (File : File_Type;
-       Item : Bounded.Bounded_String)
-    is
-    begin
-       Put_Line (File, Bounded.To_String (Item));
-    end Put_Line;
- 
- end Ada.Text_IO.Bounded_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-tiboio.ads gcc-8.1.0/gcc/ada/a-tiboio.ads
*** gcc-7.3.0/gcc/ada/a-tiboio.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-tiboio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,50 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --               A D A . T E X T _ I O . B O U N D E D _ I O                --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Strings.Bounded;
- 
- generic
-    with package Bounded is
-      new Ada.Strings.Bounded.Generic_Bounded_Length (<>);
- 
- package Ada.Text_IO.Bounded_IO is
- 
-    function Get_Line return Bounded.Bounded_String;
- 
-    function Get_Line
-      (File : File_Type) return Bounded.Bounded_String;
- 
-    procedure Get_Line
-      (Item : out Bounded.Bounded_String);
- 
-    procedure Get_Line
-      (File : File_Type;
-       Item : out Bounded.Bounded_String);
- 
-    procedure Put
-      (Item : Bounded.Bounded_String);
- 
-    procedure Put
-      (File : File_Type;
-       Item : Bounded.Bounded_String);
- 
-    procedure Put_Line
-      (Item : Bounded.Bounded_String);
- 
-    procedure Put_Line
-      (File : File_Type;
-       Item : Bounded.Bounded_String);
- 
- end Ada.Text_IO.Bounded_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ticoau.adb gcc-8.1.0/gcc/ada/a-ticoau.adb
*** gcc-7.3.0/gcc/ada/a-ticoau.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-ticoau.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,202 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --              A D A . T E X T _ I O . C O M P L E X _ A U X               --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          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- --
- -- 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.Text_IO.Generic_Aux; use Ada.Text_IO.Generic_Aux;
- with Ada.Text_IO.Float_Aux;
- 
- with System.Img_Real; use System.Img_Real;
- 
- package body Ada.Text_IO.Complex_Aux is
- 
-    package Aux renames Ada.Text_IO.Float_Aux;
- 
-    ---------
-    -- Get --
-    ---------
- 
-    procedure Get
-      (File  : File_Type;
-       ItemR : out Long_Long_Float;
-       ItemI : out Long_Long_Float;
-       Width : Field)
-    is
-       Buf   : String (1 .. Field'Last);
-       Stop  : Integer := 0;
-       Ptr   : aliased Integer;
-       Paren : Boolean := False;
- 
-    begin
-       --  General note for following code, exceptions from the calls to
-       --  Get for components of the complex value are propagated.
- 
-       if Width /= 0 then
-          Load_Width (File, Width, Buf, Stop);
-          Gets (Buf (1 .. Stop), ItemR, ItemI, Ptr);
- 
-          for J in Ptr + 1 .. Stop loop
-             if not Is_Blank (Buf (J)) then
-                raise Data_Error;
-             end if;
-          end loop;
- 
-       --  Case of width = 0
- 
-       else
-          Load_Skip (File);
-          Ptr := 0;
-          Load (File, Buf, Ptr, '(', Paren);
-          Aux.Get (File, ItemR, 0);
-          Load_Skip (File);
-          Load (File, Buf, Ptr, ',');
-          Aux.Get (File, ItemI, 0);
- 
-          if Paren then
-             Load_Skip (File);
-             Load (File, Buf, Ptr, ')', Paren);
- 
-             if not Paren then
-                raise Data_Error;
-             end if;
-          end if;
-       end if;
-    end Get;
- 
-    ----------
-    -- Gets --
-    ----------
- 
-    procedure Gets
-      (From  : String;
-       ItemR : out Long_Long_Float;
-       ItemI : out Long_Long_Float;
-       Last  : out Positive)
-    is
-       Paren : Boolean;
-       Pos   : Integer;
- 
-    begin
-       String_Skip (From, Pos);
- 
-       if From (Pos) = '(' then
-          Pos := Pos + 1;
-          Paren := True;
-       else
-          Paren := False;
-       end if;
- 
-       Aux.Gets (From (Pos .. From'Last), ItemR, Pos);
- 
-       String_Skip (From (Pos + 1 .. From'Last), Pos);
- 
-       if From (Pos) = ',' then
-          Pos := Pos + 1;
-       end if;
- 
-       Aux.Gets (From (Pos .. From'Last), ItemI, Pos);
- 
-       if Paren then
-          String_Skip (From (Pos + 1 .. From'Last), Pos);
- 
-          if From (Pos) /= ')' then
-             raise Data_Error;
-          end if;
-       end if;
- 
-       Last := Pos;
-    end Gets;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put
-      (File  : File_Type;
-       ItemR : Long_Long_Float;
-       ItemI : Long_Long_Float;
-       Fore  : Field;
-       Aft   : Field;
-       Exp   : Field)
-    is
-    begin
-       Put (File, '(');
-       Aux.Put (File, ItemR, Fore, Aft, Exp);
-       Put (File, ',');
-       Aux.Put (File, ItemI, Fore, Aft, Exp);
-       Put (File, ')');
-    end Put;
- 
-    ----------
-    -- Puts --
-    ----------
- 
-    procedure Puts
-      (To    : out String;
-       ItemR : Long_Long_Float;
-       ItemI : Long_Long_Float;
-       Aft   : Field;
-       Exp   : Field)
-    is
-       I_String : String (1 .. 3 * Field'Last);
-       R_String : String (1 .. 3 * Field'Last);
- 
-       Iptr : Natural;
-       Rptr : Natural;
- 
-    begin
-       --  Both parts are initially converted with a Fore of 0
- 
-       Rptr := 0;
-       Set_Image_Real (ItemR, R_String, Rptr, 0, Aft, Exp);
-       Iptr := 0;
-       Set_Image_Real (ItemI, I_String, Iptr, 0, Aft, Exp);
- 
-       --  Check room for both parts plus parens plus comma (RM G.1.3(34))
- 
-       if Rptr + Iptr + 3 > To'Length then
-          raise Layout_Error;
-       end if;
- 
-       --  If there is room, layout result according to (RM G.1.3(31-33))
- 
-       To (To'First) := '(';
-       To (To'First + 1 .. To'First + Rptr) := R_String (1 .. Rptr);
-       To (To'First + Rptr + 1) := ',';
- 
-       To (To'Last) := ')';
-       To (To'Last - Iptr .. To'Last - 1) := I_String (1 .. Iptr);
- 
-       for J in To'First + Rptr + 2 .. To'Last - Iptr - 1 loop
-          To (J) := ' ';
-       end loop;
- 
-    end Puts;
- 
- end Ada.Text_IO.Complex_Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ticoau.ads gcc-8.1.0/gcc/ada/a-ticoau.ads
*** gcc-7.3.0/gcc/ada/a-ticoau.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-ticoau.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,69 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --              A D A . T E X T _ I O . C O M P L E X _ A U X               --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          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- --
- -- 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 routines for Ada.Text_IO.Complex_IO that are
- --  shared among separate instantiations of this package. The routines in
- --  this package are identical semantically to those in Complex_IO itself,
- --  except that the generic parameter Complex has been replaced by separate
- --  real and imaginary values of type Long_Long_Float, and default parameters
- --  have been removed because they are supplied explicitly by the calls from
- --  within the generic template.
- 
- package Ada.Text_IO.Complex_Aux is
- 
-    procedure Get
-      (File  : File_Type;
-       ItemR : out Long_Long_Float;
-       ItemI : out Long_Long_Float;
-       Width : Field);
- 
-    procedure Put
-      (File  : File_Type;
-       ItemR : Long_Long_Float;
-       ItemI : Long_Long_Float;
-       Fore  : Field;
-       Aft   : Field;
-       Exp   : Field);
- 
-    procedure Gets
-      (From  : String;
-       ItemR : out Long_Long_Float;
-       ItemI : out Long_Long_Float;
-       Last  : out Positive);
- 
-    procedure Puts
-      (To    : out String;
-       ItemR : Long_Long_Float;
-       ItemI : Long_Long_Float;
-       Aft   : Field;
-       Exp   : Field);
- 
- end Ada.Text_IO.Complex_Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ticoio.adb gcc-8.1.0/gcc/ada/a-ticoio.adb
*** gcc-7.3.0/gcc/ada/a-ticoio.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-ticoio.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,140 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --               A D A . T E X T _ I O . C O M P L E X _ I O                --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          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- --
- -- 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.Text_IO;
- 
- with Ada.Text_IO.Complex_Aux;
- 
- package body Ada.Text_IO.Complex_IO is
- 
-    use Complex_Types;
- 
-    package Aux renames Ada.Text_IO.Complex_Aux;
- 
-    subtype LLF is Long_Long_Float;
-    --  Type used for calls to routines in Aux
- 
-    ---------
-    -- Get --
-    ---------
- 
-    procedure Get
-      (File  : File_Type;
-       Item  : out Complex_Types.Complex;
-       Width : Field := 0)
-    is
-       Real_Item : Real'Base;
-       Imag_Item : Real'Base;
- 
-    begin
-       Aux.Get (File, LLF (Real_Item), LLF (Imag_Item), Width);
-       Item := (Real_Item, Imag_Item);
- 
-    exception
-       when Constraint_Error => raise Data_Error;
-    end Get;
- 
-    ---------
-    -- Get --
-    ---------
- 
-    procedure Get
-      (Item  : out Complex_Types.Complex;
-       Width : Field := 0)
-    is
-    begin
-       Get (Current_In, Item, Width);
-    end Get;
- 
-    ---------
-    -- Get --
-    ---------
- 
-    procedure Get
-      (From : String;
-       Item : out Complex_Types.Complex;
-       Last : out Positive)
-    is
-       Real_Item : Real'Base;
-       Imag_Item : Real'Base;
- 
-    begin
-       Aux.Gets (From, LLF (Real_Item), LLF (Imag_Item), Last);
-       Item := (Real_Item, Imag_Item);
- 
-    exception
-       when Data_Error => raise Constraint_Error;
-    end Get;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put
-      (File : File_Type;
-       Item : Complex_Types.Complex;
-       Fore : Field := Default_Fore;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp)
-    is
-    begin
-       Aux.Put (File, LLF (Re (Item)), LLF (Im (Item)), Fore, Aft, Exp);
-    end Put;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put
-      (Item : Complex_Types.Complex;
-       Fore : Field := Default_Fore;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp)
-    is
-    begin
-       Put (Current_Out, Item, Fore, Aft, Exp);
-    end Put;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put
-      (To   : out String;
-       Item : Complex_Types.Complex;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp)
-    is
-    begin
-       Aux.Puts (To, LLF (Re (Item)), LLF (Im (Item)), Aft, Exp);
-    end Put;
- 
- end Ada.Text_IO.Complex_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ticoio.ads gcc-8.1.0/gcc/ada/a-ticoio.ads
*** gcc-7.3.0/gcc/ada/a-ticoio.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-ticoio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,84 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --               A D A . T E X T _ I O . C O M P L E X _ I O                --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2009, Free Software Foundation, 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Numerics.Generic_Complex_Types;
- 
- generic
-    with package Complex_Types is new Ada.Numerics.Generic_Complex_Types (<>);
- 
- package Ada.Text_IO.Complex_IO is
- 
-    Default_Fore : Field := 2;
-    Default_Aft  : Field := Complex_Types.Real'Digits - 1;
-    Default_Exp  : Field := 3;
- 
-    procedure Get
-      (File  : File_Type;
-       Item  : out Complex_Types.Complex;
-       Width : Field := 0);
- 
-    procedure Get
-      (Item  : out Complex_Types.Complex;
-       Width : Field := 0);
- 
-    procedure Put
-      (File : File_Type;
-       Item : Complex_Types.Complex;
-       Fore : Field := Default_Fore;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp);
- 
-    procedure Put
-      (Item : Complex_Types.Complex;
-       Fore : Field := Default_Fore;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp);
- 
-    procedure Get
-      (From : String;
-       Item : out Complex_Types.Complex;
-       Last : out Positive);
- 
-    procedure Put
-      (To   : out String;
-       Item : Complex_Types.Complex;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp);
- 
- private
-    pragma Inline (Get);
-    pragma Inline (Put);
- 
- end Ada.Text_IO.Complex_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-tideau.adb gcc-8.1.0/gcc/ada/a-tideau.adb
*** gcc-7.3.0/gcc/ada/a-tideau.adb	Fri Oct 30 13:27:40 2009
--- gcc-8.1.0/gcc/ada/a-tideau.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,261 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --              A D A . T E X T _ I O . D E C I M A L _ A U X               --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          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- --
- -- 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.Text_IO.Generic_Aux; use Ada.Text_IO.Generic_Aux;
- with Ada.Text_IO.Float_Aux;   use Ada.Text_IO.Float_Aux;
- 
- with System.Img_Dec; use System.Img_Dec;
- with System.Img_LLD; use System.Img_LLD;
- with System.Val_Dec; use System.Val_Dec;
- with System.Val_LLD; use System.Val_LLD;
- 
- package body Ada.Text_IO.Decimal_Aux is
- 
-    -------------
-    -- Get_Dec --
-    -------------
- 
-    function Get_Dec
-      (File  : File_Type;
-       Width : Field;
-       Scale : Integer) return Integer
-    is
-       Buf  : String (1 .. Field'Last);
-       Ptr  : aliased Integer;
-       Stop : Integer := 0;
-       Item : Integer;
- 
-    begin
-       if Width /= 0 then
-          Load_Width (File, Width, Buf, Stop);
-          String_Skip (Buf, Ptr);
-       else
-          Load_Real (File, Buf, Stop);
-          Ptr := 1;
-       end if;
- 
-       Item := Scan_Decimal (Buf, Ptr'Access, Stop, Scale);
-       Check_End_Of_Field (Buf, Stop, Ptr, Width);
-       return Item;
-    end Get_Dec;
- 
-    -------------
-    -- Get_LLD --
-    -------------
- 
-    function Get_LLD
-      (File  : File_Type;
-       Width : Field;
-       Scale : Integer) return Long_Long_Integer
-    is
-       Buf  : String (1 .. Field'Last);
-       Ptr  : aliased Integer;
-       Stop : Integer := 0;
-       Item : Long_Long_Integer;
- 
-    begin
-       if Width /= 0 then
-          Load_Width (File, Width, Buf, Stop);
-          String_Skip (Buf, Ptr);
-       else
-          Load_Real (File, Buf, Stop);
-          Ptr := 1;
-       end if;
- 
-       Item := Scan_Long_Long_Decimal (Buf, Ptr'Access, Stop, Scale);
-       Check_End_Of_Field (Buf, Stop, Ptr, Width);
-       return Item;
-    end Get_LLD;
- 
-    --------------
-    -- Gets_Dec --
-    --------------
- 
-    function Gets_Dec
-      (From  : String;
-       Last  : not null access Positive;
-       Scale : Integer) return Integer
-    is
-       Pos  : aliased Integer;
-       Item : Integer;
- 
-    begin
-       String_Skip (From, Pos);
-       Item := Scan_Decimal (From, Pos'Access, From'Last, Scale);
-       Last.all := Pos - 1;
-       return Item;
- 
-    exception
-       when Constraint_Error =>
-          Last.all := Pos - 1;
-          raise Data_Error;
-    end Gets_Dec;
- 
-    --------------
-    -- Gets_LLD --
-    --------------
- 
-    function Gets_LLD
-      (From  : String;
-       Last  : not null access Positive;
-       Scale : Integer) return Long_Long_Integer
-    is
-       Pos  : aliased Integer;
-       Item : Long_Long_Integer;
- 
-    begin
-       String_Skip (From, Pos);
-       Item := Scan_Long_Long_Decimal (From, Pos'Access, From'Last, Scale);
-       Last.all := Pos - 1;
-       return Item;
- 
-    exception
-       when Constraint_Error =>
-          Last.all := Pos - 1;
-          raise Data_Error;
-    end Gets_LLD;
- 
-    -------------
-    -- Put_Dec --
-    -------------
- 
-    procedure Put_Dec
-      (File  : File_Type;
-       Item  : Integer;
-       Fore  : Field;
-       Aft   : Field;
-       Exp   : Field;
-       Scale : Integer)
-    is
-       Buf : String (1 .. Field'Last);
-       Ptr : Natural := 0;
- 
-    begin
-       Set_Image_Decimal (Item, Buf, Ptr, Scale, Fore, Aft, Exp);
-       Put_Item (File, Buf (1 .. Ptr));
-    end Put_Dec;
- 
-    -------------
-    -- Put_LLD --
-    -------------
- 
-    procedure Put_LLD
-      (File  : File_Type;
-       Item  : Long_Long_Integer;
-       Fore  : Field;
-       Aft   : Field;
-       Exp   : Field;
-       Scale : Integer)
-    is
-       Buf : String (1 .. Field'Last);
-       Ptr : Natural := 0;
- 
-    begin
-       Set_Image_Long_Long_Decimal (Item, Buf, Ptr, Scale, Fore, Aft, Exp);
-       Put_Item (File, Buf (1 .. Ptr));
-    end Put_LLD;
- 
-    --------------
-    -- Puts_Dec --
-    --------------
- 
-    procedure Puts_Dec
-      (To    : out String;
-       Item  : Integer;
-       Aft   : Field;
-       Exp   : Field;
-       Scale : Integer)
-    is
-       Buf  : String (1 .. Field'Last);
-       Fore : Integer;
-       Ptr  : Natural := 0;
- 
-    begin
-       --  Compute Fore, allowing for Aft digits and the decimal dot
- 
-       Fore := To'Length - Field'Max (1, Aft) - 1;
- 
-       --  Allow for Exp and two more for E+ or E- if exponent present
- 
-       if Exp /= 0 then
-          Fore := Fore - 2 - Exp;
-       end if;
- 
-       --  Make sure we have enough room
- 
-       if Fore < 1 then
-          raise Layout_Error;
-       end if;
- 
-       --  Do the conversion and check length of result
- 
-       Set_Image_Decimal (Item, Buf, Ptr, Scale, Fore, Aft, Exp);
- 
-       if Ptr > To'Length then
-          raise Layout_Error;
-       else
-          To := Buf (1 .. Ptr);
-       end if;
-    end Puts_Dec;
- 
-    --------------
-    -- Puts_Dec --
-    --------------
- 
-    procedure Puts_LLD
-      (To    : out String;
-       Item  : Long_Long_Integer;
-       Aft   : Field;
-       Exp   : Field;
-       Scale : Integer)
-    is
-       Buf  : String (1 .. Field'Last);
-       Fore : Integer;
-       Ptr  : Natural := 0;
- 
-    begin
-       Fore :=
-         (if Exp = 0 then To'Length - 1 - Aft else To'Length - 2 - Aft - Exp);
- 
-       if Fore < 1 then
-          raise Layout_Error;
-       end if;
- 
-       Set_Image_Long_Long_Decimal (Item, Buf, Ptr, Scale, Fore, Aft, Exp);
- 
-       if Ptr > To'Length then
-          raise Layout_Error;
-       else
-          To := Buf (1 .. Ptr);
-       end if;
-    end Puts_LLD;
- 
- end Ada.Text_IO.Decimal_Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-tideau.ads gcc-8.1.0/gcc/ada/a-tideau.ads
*** gcc-7.3.0/gcc/ada/a-tideau.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-tideau.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,92 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --              A D A . T E X T _ I O . D E C I M A L _ A U X               --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          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- --
- -- 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 routines for Ada.Text_IO.Decimal_IO that are
- --  shared among separate instantiations of this package. The routines in
- --  the package are identical semantically to those declared in Text_IO,
- --  except that default values have been supplied by the generic, and the
- --  Num parameter has been replaced by Integer or Long_Long_Integer, with
- --  an additional Scale parameter giving the value of Num'Scale. In addition
- --  the Get routines return the value rather than store it in an Out parameter.
- 
- private package Ada.Text_IO.Decimal_Aux is
- 
-    function Get_Dec
-      (File  : File_Type;
-       Width : Field;
-       Scale : Integer) return Integer;
- 
-    function Get_LLD
-      (File  : File_Type;
-       Width : Field;
-       Scale : Integer) return Long_Long_Integer;
- 
-    procedure Put_Dec
-      (File  : File_Type;
-       Item  : Integer;
-       Fore  : Field;
-       Aft   : Field;
-       Exp   : Field;
-       Scale : Integer);
- 
-    procedure Put_LLD
-      (File  : File_Type;
-       Item  : Long_Long_Integer;
-       Fore  : Field;
-       Aft   : Field;
-       Exp   : Field;
-       Scale : Integer);
- 
-    function Gets_Dec
-      (From  : String;
-       Last  : not null access Positive;
-       Scale : Integer) return Integer;
- 
-    function Gets_LLD
-      (From  : String;
-       Last  : not null access Positive;
-       Scale : Integer) return Long_Long_Integer;
- 
-    procedure Puts_Dec
-      (To    : out String;
-       Item  : Integer;
-       Aft   : Field;
-       Exp   : Field;
-       Scale : Integer);
- 
-    procedure Puts_LLD
-      (To    : out String;
-       Item  : Long_Long_Integer;
-       Aft   : Field;
-       Exp   : Field;
-       Scale : Integer);
- 
- end Ada.Text_IO.Decimal_Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-tideio.adb gcc-8.1.0/gcc/ada/a-tideio.adb
*** gcc-7.3.0/gcc/ada/a-tideio.adb	Fri Oct 30 13:27:40 2009
--- gcc-8.1.0/gcc/ada/a-tideio.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,137 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --               A D A . T E X T _ I O . D E C I M A L _ I O                --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          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- --
- -- 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.Text_IO.Decimal_Aux;
- 
- package body Ada.Text_IO.Decimal_IO is
- 
-    package Aux renames Ada.Text_IO.Decimal_Aux;
- 
-    Scale : constant Integer := Num'Scale;
- 
-    ---------
-    -- Get --
-    ---------
- 
-    procedure Get
-      (File  : File_Type;
-       Item  : out Num;
-       Width : Field := 0)
-    is
-       pragma Unsuppress (Range_Check);
- 
-    begin
-       if Num'Size > Integer'Size then
-          Item := Num'Fixed_Value (Aux.Get_LLD (File, Width, Scale));
-       else
-          Item := Num'Fixed_Value (Aux.Get_Dec (File, Width, Scale));
-       end if;
- 
-    exception
-       when Constraint_Error => raise Data_Error;
-    end Get;
- 
-    procedure Get
-      (Item  : out Num;
-       Width : Field := 0)
-    is
-    begin
-       Get (Current_In, Item, Width);
-    end Get;
- 
-    procedure Get
-      (From : String;
-       Item : out Num;
-       Last : out Positive)
-    is
-       pragma Unsuppress (Range_Check);
- 
-    begin
-       if Num'Size > Integer'Size then
-          Item := Num'Fixed_Value
-                    (Aux.Gets_LLD (From, Last'Unrestricted_Access, Scale));
-       else
-          Item := Num'Fixed_Value
-                    (Aux.Gets_Dec (From, Last'Unrestricted_Access, Scale));
-       end if;
- 
-    exception
-       when Constraint_Error => raise Data_Error;
-    end Get;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put
-      (File : File_Type;
-       Item : Num;
-       Fore : Field := Default_Fore;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp)
-    is
-    begin
-       if Num'Size > Integer'Size then
-          Aux.Put_LLD
-            (File, Long_Long_Integer'Integer_Value (Item),
-             Fore, Aft, Exp, Scale);
-       else
-          Aux.Put_Dec
-            (File, Integer'Integer_Value (Item), Fore, Aft, Exp, Scale);
-       end if;
-    end Put;
- 
-    procedure Put
-      (Item : Num;
-       Fore : Field := Default_Fore;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp)
-    is
-    begin
-       Put (Current_Out, Item, Fore, Aft, Exp);
-    end Put;
- 
-    procedure Put
-      (To   : out String;
-       Item : Num;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp)
-    is
-    begin
-       if Num'Size > Integer'Size then
-          Aux.Puts_LLD
-            (To, Long_Long_Integer'Integer_Value (Item), Aft, Exp, Scale);
-       else
-          Aux.Puts_Dec (To, Integer'Integer_Value (Item), Aft, Exp, Scale);
-       end if;
-    end Put;
- 
- end Ada.Text_IO.Decimal_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-tideio.ads gcc-8.1.0/gcc/ada/a-tideio.ads
*** gcc-7.3.0/gcc/ada/a-tideio.ads	Thu Jul 17 06:35:13 2014
--- gcc-8.1.0/gcc/ada/a-tideio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,89 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --               A D A . T E X T _ I O . D E C I M A L _ I O                --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2014, Free Software Foundation, 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  In Ada 95, the package Ada.Text_IO.Decimal_IO is a subpackage of Text_IO.
- --  This is for compatibility with Ada 83. In GNAT we make it a child package
- --  to avoid loading the necessary code if Decimal_IO is not instantiated.
- --  See routine Rtsfind.Check_Text_IO_Special_Unit for a description of how
- --  we patch up the difference in semantics so that it is invisible to the
- --  Ada programmer.
- 
- private generic
-    type Num is delta <> digits <>;
- 
- package Ada.Text_IO.Decimal_IO is
- 
-    Default_Fore : Field := Num'Fore;
-    Default_Aft  : Field := Num'Aft;
-    Default_Exp  : Field := 0;
- 
-    procedure Get
-      (File  : File_Type;
-       Item  : out Num;
-       Width : Field := 0);
- 
-    procedure Get
-      (Item  : out Num;
-       Width : Field := 0);
- 
-    procedure Put
-      (File : File_Type;
-       Item : Num;
-       Fore : Field := Default_Fore;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp);
- 
-    procedure Put
-      (Item : Num;
-       Fore : Field := Default_Fore;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp);
- 
-    procedure Get
-      (From : String;
-       Item : out Num;
-       Last : out Positive);
- 
-    procedure Put
-      (To   : out String;
-       Item : Num;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp);
- 
- private
-    pragma Inline (Get);
-    pragma Inline (Put);
- 
- end Ada.Text_IO.Decimal_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-tienau.adb gcc-8.1.0/gcc/ada/a-tienau.adb
*** gcc-7.3.0/gcc/ada/a-tienau.adb	Tue Oct 15 10:33:29 2013
--- gcc-8.1.0/gcc/ada/a-tienau.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,283 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --          A D A . T E X T _ I O . E N U M E R A T I O N _ A U X           --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2013, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Text_IO.Generic_Aux; use Ada.Text_IO.Generic_Aux;
- with Ada.Characters.Handling; use Ada.Characters.Handling;
- 
- --  Note: this package does not yet deal properly with wide characters ???
- 
- package body Ada.Text_IO.Enumeration_Aux is
- 
-    ------------------
-    -- Get_Enum_Lit --
-    ------------------
- 
-    procedure Get_Enum_Lit
-      (File   : File_Type;
-       Buf    : out String;
-       Buflen : out Natural)
-    is
-       ch  : Integer;
-       C   : Character;
- 
-    begin
-       Buflen := 0;
-       Load_Skip (File);
-       ch := Getc (File);
-       C := Character'Val (ch);
- 
-       --  Character literal case. If the initial character is a quote, then
-       --  we read as far as we can without backup (see ACVC test CE3905L)
- 
-       if C = ''' then
-          Store_Char (File, ch, Buf, Buflen);
- 
-          ch := Getc (File);
- 
-          if ch in 16#20# .. 16#7E# or else ch >= 16#80# then
-             Store_Char (File, ch, Buf, Buflen);
- 
-             ch := Getc (File);
- 
-             if ch = Character'Pos (''') then
-                Store_Char (File, ch, Buf, Buflen);
-             else
-                Ungetc (ch, File);
-             end if;
- 
-          else
-             Ungetc (ch, File);
-          end if;
- 
-       --  Similarly for identifiers, read as far as we can, in particular,
-       --  do read a trailing underscore (again see ACVC test CE3905L to
-       --  understand why we do this, although it seems somewhat peculiar).
- 
-       else
-          --  Identifier must start with a letter
- 
-          if not Is_Letter (C) then
-             Ungetc (ch, File);
-             return;
-          end if;
- 
-          --  If we do have a letter, loop through the characters quitting on
-          --  the first non-identifier character (note that this includes the
-          --  cases of hitting a line mark or page mark).
- 
-          loop
-             C := Character'Val (ch);
-             Store_Char (File, Character'Pos (To_Upper (C)), Buf, Buflen);
- 
-             ch := Getc (File);
-             exit when ch = EOF_Char;
-             C := Character'Val (ch);
- 
-             exit when not Is_Letter (C)
-               and then not Is_Digit (C)
-               and then C /= '_';
- 
-             exit when C = '_'
-               and then Buf (Buflen) = '_';
-          end loop;
- 
-          Ungetc (ch, File);
-       end if;
-    end Get_Enum_Lit;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put
-      (File  : File_Type;
-       Item  : String;
-       Width : Field;
-       Set   : Type_Set)
-    is
-       Actual_Width : constant Count := Count'Max (Count (Width), Item'Length);
- 
-    begin
-       --  Deal with limited line length of output file
- 
-       if Line_Length (File) /= 0 then
- 
-          --  If actual width exceeds line length, raise Layout_Error
- 
-          if Actual_Width > Line_Length (File) then
-             raise Layout_Error;
-          end if;
- 
-          --  If full width cannot fit on current line move to new line
- 
-          if Actual_Width + (Col (File) - 1) > Line_Length (File) then
-             New_Line (File);
-          end if;
-       end if;
- 
-       --  Output in lower case if necessary
- 
-       if Set = Lower_Case and then Item (Item'First) /= ''' then
-          declare
-             Iteml : String (Item'First .. Item'Last);
- 
-          begin
-             for J in Item'Range loop
-                Iteml (J) := To_Lower (Item (J));
-             end loop;
- 
-             Put_Item (File, Iteml);
-          end;
- 
-       --  Otherwise output in upper case
- 
-       else
-          Put_Item (File, Item);
-       end if;
- 
-       --  Fill out item with spaces to width
- 
-       for J in 1 .. Actual_Width - Item'Length loop
-          Put (File, ' ');
-       end loop;
-    end Put;
- 
-    ----------
-    -- Puts --
-    ----------
- 
-    procedure Puts
-      (To   : out String;
-       Item : String;
-       Set  : Type_Set)
-    is
-       Ptr : Natural;
- 
-    begin
-       if Item'Length > To'Length then
-          raise Layout_Error;
- 
-       else
-          Ptr := To'First;
-          for J in Item'Range loop
-             if Set = Lower_Case and then Item (Item'First) /= ''' then
-                To (Ptr) := To_Lower (Item (J));
-             else
-                To (Ptr) := Item (J);
-             end if;
- 
-             Ptr := Ptr + 1;
-          end loop;
- 
-          while Ptr <= To'Last loop
-             To (Ptr) := ' ';
-             Ptr := Ptr + 1;
-          end loop;
-       end if;
-    end Puts;
- 
-    -------------------
-    -- Scan_Enum_Lit --
-    -------------------
- 
-    procedure Scan_Enum_Lit
-      (From  : String;
-       Start : out Natural;
-       Stop  : out Natural)
-    is
-       C  : Character;
- 
-    --  Processing for Scan_Enum_Lit
- 
-    begin
-       String_Skip (From, Start);
- 
-       --  Character literal case. If the initial character is a quote, then
-       --  we read as far as we can without backup (see ACVC test CE3905L
-       --  which is for the analogous case for reading from a file).
- 
-       if From (Start) = ''' then
-          Stop := Start;
- 
-          if Stop = From'Last then
-             raise Data_Error;
-          else
-             Stop := Stop + 1;
-          end if;
- 
-          if From (Stop) in ' ' .. '~'
-            or else From (Stop) >= Character'Val (16#80#)
-          then
-             if Stop = From'Last then
-                raise Data_Error;
-             else
-                Stop := Stop + 1;
- 
-                if From (Stop) = ''' then
-                   return;
-                end if;
-             end if;
-          end if;
- 
-          raise Data_Error;
- 
-       --  Similarly for identifiers, read as far as we can, in particular,
-       --  do read a trailing underscore (again see ACVC test CE3905L to
-       --  understand why we do this, although it seems somewhat peculiar).
- 
-       else
-          --  Identifier must start with a letter
- 
-          if not Is_Letter (From (Start)) then
-             raise Data_Error;
-          end if;
- 
-          --  If we do have a letter, loop through the characters quitting on
-          --  the first non-identifier character (note that this includes the
-          --  cases of hitting a line mark or page mark).
- 
-          Stop := Start;
-          while Stop < From'Last loop
-             C := From (Stop + 1);
- 
-             exit when not Is_Letter (C)
-               and then not Is_Digit (C)
-               and then C /= '_';
- 
-             exit when C = '_'
-               and then From (Stop) = '_';
- 
-             Stop := Stop + 1;
-          end loop;
-       end if;
-    end Scan_Enum_Lit;
- 
- end Ada.Text_IO.Enumeration_Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-tienau.ads gcc-8.1.0/gcc/ada/a-tienau.ads
*** gcc-7.3.0/gcc/ada/a-tienau.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-tienau.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,69 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --          A D A . T E X T _ I O . E N U M E R A T I O N _ A U X           --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          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- --
- -- 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 routines for Ada.Text_IO.Enumeration_IO
- --  that are shared among separate instantiations of this package.
- 
- private package Ada.Text_IO.Enumeration_Aux is
- 
-    procedure Get_Enum_Lit
-      (File   : File_Type;
-       Buf    : out String;
-       Buflen : out Natural);
-    --  Reads an enumeration literal value from the file, folds to upper case,
-    --  and stores the result in Buf, setting Buflen to the number of stored
-    --  characters (Buf has a lower bound of 1). If more than Buflen characters
-    --  are present in the literal, Data_Error is raised.
- 
-    procedure Scan_Enum_Lit
-      (From  : String;
-       Start : out Natural;
-       Stop  : out Natural);
-    --  Scans an enumeration literal at the start of From, skipping any leading
-    --  spaces. Sets Start to the first character, Stop to the last character.
-    --  Raises End_Error if no enumeration literal is found.
- 
-    procedure Put
-      (File  : File_Type;
-       Item  : String;
-       Width : Field;
-       Set   : Type_Set);
-    --  Outputs the enumeration literal image stored in Item to the given File,
-    --  using the given Width and Set parameters (Item is always in upper case).
- 
-    procedure Puts
-      (To   : out String;
-       Item : String;
-       Set  : Type_Set);
-    --  Stores the enumeration literal image stored in Item to the string To,
-    --  padding with trailing spaces if necessary to fill To. Set is used to
- 
- end Ada.Text_IO.Enumeration_Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-tienio.adb gcc-8.1.0/gcc/ada/a-tienio.adb
*** gcc-7.3.0/gcc/ada/a-tienio.adb	Mon Oct 26 11:17:42 2015
--- gcc-8.1.0/gcc/ada/a-tienio.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,137 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --           A D A . T E X T _ I O . E N U M E R A T I O N _ I O            --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Text_IO.Enumeration_Aux;
- 
- package body Ada.Text_IO.Enumeration_IO is
- 
-    package Aux renames Ada.Text_IO.Enumeration_Aux;
- 
-    ---------
-    -- Get --
-    ---------
- 
-    procedure Get (File : File_Type; Item : out Enum) is
-       Buf    : String (1 .. Enum'Width + 1);
-       Buflen : Natural;
- 
-    begin
-       Aux.Get_Enum_Lit (File, Buf, Buflen);
- 
-       declare
-          Buf_Str : String renames Buf (1 .. Buflen);
-          pragma Unsuppress (Range_Check);
-       begin
-          Item := Enum'Value (Buf_Str);
-       end;
- 
-    exception
-       when Constraint_Error => raise Data_Error;
-    end Get;
- 
-    procedure Get (Item : out Enum) is
-       pragma Unsuppress (Range_Check);
-    begin
-       Get (Current_In, Item);
-    end Get;
- 
-    procedure Get
-      (From : String;
-       Item : out Enum;
-       Last : out Positive)
-    is
-       Start : Natural;
- 
-    begin
-       Aux.Scan_Enum_Lit (From, Start, Last);
- 
-       declare
-          From_Str : String renames From (Start .. Last);
-          pragma Unsuppress (Range_Check);
-       begin
-          Item := Enum'Value (From_Str);
-       end;
- 
-    exception
-       when Constraint_Error => raise Data_Error;
-    end Get;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put
-      (File  : File_Type;
-       Item  : Enum;
-       Width : Field := Default_Width;
-       Set   : Type_Set := Default_Setting)
-    is
-    begin
-       --  Ensure that Item is valid before attempting to retrieve the Image, to
-       --  prevent the possibility of out-of-bounds addressing of index or image
-       --  tables. Units in the run-time library are normally compiled with
-       --  checks suppressed, which includes instantiated generics.
- 
-       if not Item'Valid then
-          raise Constraint_Error with "invalid enumeration value";
-       end if;
- 
-       Aux.Put (File, Enum'Image (Item), Width, Set);
-    end Put;
- 
-    procedure Put
-      (Item  : Enum;
-       Width : Field := Default_Width;
-       Set   : Type_Set := Default_Setting)
-    is
-    begin
-       Put (Current_Out, Item, Width, Set);
-    end Put;
- 
-    procedure Put
-      (To   : out String;
-       Item : Enum;
-       Set  : Type_Set := Default_Setting)
-    is
-    begin
-       --  Ensure that Item is valid before attempting to retrieve the Image, to
-       --  prevent the possibility of out-of-bounds addressing of index or image
-       --  tables. Units in the run-time library are normally compiled with
-       --  checks suppressed, which includes instantiated generics.
- 
-       if not Item'Valid then
-          raise Constraint_Error with "invalid enumeration value";
-       end if;
- 
-       Aux.Puts (To, Enum'Image (Item), Set);
-    end Put;
- 
- end Ada.Text_IO.Enumeration_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-tienio.ads gcc-8.1.0/gcc/ada/a-tienio.ads
*** gcc-7.3.0/gcc/ada/a-tienio.ads	Thu Jul 17 06:35:13 2014
--- gcc-8.1.0/gcc/ada/a-tienio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,55 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --           A D A . T E X T _ I O . E N U M E R A T I O N _ I O            --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  In Ada 95, the package Ada.Text_IO.Enumeration_IO is a subpackage of
- --  Text_IO. This is for compatibility with Ada 83. In GNAT we make it a
- --  child package to avoid loading the necessary code if Enumeration_IO is
- --  not instantiated. See routine Rtsfind.Check_Text_IO_Special_Unit for a
- --  description of how we patch up the difference in semantics so that it
- --  is invisible to the Ada programmer.
- 
- private generic
-    type Enum is (<>);
- 
- package Ada.Text_IO.Enumeration_IO is
- 
-    Default_Width : Field := 0;
-    Default_Setting : Type_Set := Upper_Case;
- 
-    procedure Get (File : File_Type; Item : out Enum);
-    procedure Get (Item : out Enum);
- 
-    procedure Put
-      (File  : File_Type;
-       Item  : Enum;
-       Width : Field := Default_Width;
-       Set   : Type_Set := Default_Setting);
- 
-    procedure Put
-      (Item  : Enum;
-       Width : Field := Default_Width;
-       Set   : Type_Set := Default_Setting);
- 
-    procedure Get
-      (From : String;
-       Item : out Enum;
-       Last : out Positive);
- 
-    procedure Put
-      (To   : out String;
-       Item : Enum;
-       Set  : Type_Set := Default_Setting);
- 
- end Ada.Text_IO.Enumeration_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-tifiio.adb gcc-8.1.0/gcc/ada/a-tifiio.adb
*** gcc-7.3.0/gcc/ada/a-tifiio.adb	Tue Oct 20 12:40:36 2015
--- gcc-8.1.0/gcc/ada/a-tifiio.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,716 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                 A D A . T E X T _ I O . F I X E D _ I O                  --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Fixed point I/O
- --  ---------------
- 
- --  The following documents implementation details of the fixed point
- --  input/output routines in the GNAT run time. The first part describes
- --  general properties of fixed point types as defined by the Ada 95 standard,
- --  including the Information Systems Annex.
- 
- --  Subsequently these are reduced to implementation constraints and the impact
- --  of these constraints on a few possible approaches to I/O are given.
- --  Based on this analysis, a specific implementation is selected for use in
- --  the GNAT run time. Finally, the chosen algorithm is analyzed numerically in
- --  order to provide user-level documentation on limits for range and precision
- --  of fixed point types as well as accuracy of input/output conversions.
- 
- --  -------------------------------------------
- --  - General Properties of Fixed Point Types -
- --  -------------------------------------------
- 
- --  Operations on fixed point values, other than input and output, are not
- --  important for the purposes of this document. Only the set of values that a
- --  fixed point type can represent and the input and output operations are
- --  significant.
- 
- --  Values
- --  ------
- 
- --  Set set of values of a fixed point type comprise the integral
- --  multiples of a number called the small of the type. The small can
- --  either be a power of ten, a power of two or (if the implementation
- --  allows) an arbitrary strictly positive real value.
- 
- --  Implementations need to support fixed-point types with a precision
- --  of at least 24 bits, and (in order to comply with the Information
- --  Systems Annex) decimal types need to support at least digits 18.
- --  For the rest, however, no requirements exist for the minimal small
- --  and range that need to be supported.
- 
- --  Operations
- --  ----------
- 
- --  'Image and 'Wide_Image (see RM 3.5(34))
- 
- --          These attributes return a decimal real literal best approximating
- --          the value (rounded away from zero if halfway between) with a
- --          single leading character that is either a minus sign or a space,
- --          one or more digits before the decimal point (with no redundant
- --          leading zeros), a decimal point, and N digits after the decimal
- --          point. For a subtype S, the value of N is S'Aft, the smallest
- --          positive integer such that (10**N)*S'Delta is greater or equal to
- --          one, see RM 3.5.10(5).
- 
- --          For an arbitrary small, this means large number arithmetic needs
- --          to be performed.
- 
- --  Put (see RM A.10.9(22-26))
- 
- --          The requirements for Put add no extra constraints over the image
- --          attributes, although it would be nice to be able to output more
- --          than S'Aft digits after the decimal point for values of subtype S.
- 
- --  'Value and 'Wide_Value attribute (RM 3.5(40-55))
- 
- --          Since the input can be given in any base in the range 2..16,
- --          accurate conversion to a fixed point number may require
- --          arbitrary precision arithmetic if there is no limit on the
- --          magnitude of the small of the fixed point type.
- 
- --  Get (see RM A.10.9(12-21))
- 
- --          The requirements for Get are identical to those of the Value
- --          attribute.
- 
- --  ------------------------------
- --  - Implementation Constraints -
- --  ------------------------------
- 
- --  The requirements listed above for the input/output operations lead to
- --  significant complexity, if no constraints are put on supported smalls.
- 
- --  Implementation Strategies
- --  -------------------------
- 
- --  * Float arithmetic
- --  * Arbitrary-precision integer arithmetic
- --  * Fixed-precision integer arithmetic
- 
- --  Although it seems convenient to convert fixed point numbers to floating-
- --  point and then print them, this leads to a number of restrictions.
- --  The first one is precision. The widest floating-point type generally
- --  available has 53 bits of mantissa. This means that Fine_Delta cannot
- --  be less than 2.0**(-53).
- 
- --  In GNAT, Fine_Delta is 2.0**(-63), and Duration for example is a
- --  64-bit type. It would still be possible to use multi-precision
- --  floating-point to perform calculations using longer mantissas,
- --  but this is a much harder approach.
- 
- --  The base conversions needed for input and output of (non-decimal)
- --  fixed point types can be seen as pairs of integer multiplications
- --  and divisions.
- 
- --  Arbitrary-precision integer arithmetic would be suitable for the job
- --  at hand, but has the draw-back that it is very heavy implementation-wise.
- --  Especially in embedded systems, where fixed point types are often used,
- --  it may not be desirable to require large amounts of storage and time
- --  for fixed I/O operations.
- 
- --  Fixed-precision integer arithmetic has the advantage of simplicity and
- --  speed. For the most common fixed point types this would be a perfect
- --  solution. The downside however may be a too limited set of acceptable
- --  fixed point types.
- 
- --  Extra Precision
- --  ---------------
- 
- --  Using a scaled divide which truncates and returns a remainder R,
- --  another E trailing digits can be calculated by computing the value
- --  (R * (10.0**E)) / Z using another scaled divide. This procedure
- --  can be repeated to compute an arbitrary number of digits in linear
- --  time and storage. The last scaled divide should be rounded, with
- --  a possible carry propagating to the more significant digits, to
- --  ensure correct rounding of the unit in the last place.
- 
- --  An extension of this technique is to limit the value of Q to 9 decimal
- --  digits, since 32-bit integers can be much more efficient than 64-bit
- --  integers to output.
- 
- with Interfaces;                        use Interfaces;
- with System.Arith_64;                   use System.Arith_64;
- with System.Img_Real;                   use System.Img_Real;
- with Ada.Text_IO;                       use Ada.Text_IO;
- with Ada.Text_IO.Float_Aux;
- with Ada.Text_IO.Generic_Aux;
- 
- package body Ada.Text_IO.Fixed_IO is
- 
-    --  Note: we still use the floating-point I/O routines for input of
-    --  ordinary fixed-point and output using exponent format. This will
-    --  result in inaccuracies for fixed point types with a small that is
-    --  not a power of two, and for types that require more precision than
-    --  is available in Long_Long_Float.
- 
-    package Aux renames Ada.Text_IO.Float_Aux;
- 
-    Extra_Layout_Space : constant Field := 5 + Num'Fore;
-    --  Extra space that may be needed for output of sign, decimal point,
-    --  exponent indication and mandatory decimals after and before the
-    --  decimal point. A string with length
- 
-    --    Fore + Aft + Exp + Extra_Layout_Space
- 
-    --  is always long enough for formatting any fixed point number
- 
-    --  Implementation of Put routines
- 
-    --  The following section describes a specific implementation choice for
-    --  performing base conversions needed for output of values of a fixed
-    --  point type T with small T'Small. The goal is to be able to output
-    --  all values of types with a precision of 64 bits and a delta of at
-    --  least 2.0**(-63), as these are current GNAT limitations already.
- 
-    --  The chosen algorithm uses fixed precision integer arithmetic for
-    --  reasons of simplicity and efficiency. It is important to understand
-    --  in what ways the most simple and accurate approach to fixed point I/O
-    --  is limiting, before considering more complicated schemes.
- 
-    --  Without loss of generality assume T has a range (-2.0**63) * T'Small
-    --  .. (2.0**63 - 1) * T'Small, and is output with Aft digits after the
-    --  decimal point and T'Fore - 1 before. If T'Small is integer, or
-    --  1.0 / T'Small is integer, let S = T'Small and E = 0. For other T'Small,
-    --  let S and E be integers such that S / 10**E best approximates T'Small
-    --  and S is in the range 10**17 .. 10**18 - 1. The extra decimal scaling
-    --  factor 10**E can be trivially handled during final output, by adjusting
-    --  the decimal point or exponent.
- 
-    --  Convert a value X * S of type T to a 64-bit integer value Q equal
-    --  to 10.0**D * (X * S) rounded to the nearest integer.
-    --  This conversion is a scaled integer divide of the form
- 
-    --     Q := (X * Y) / Z,
- 
-    --  where all variables are 64-bit signed integers using 2's complement,
-    --  and both the multiplication and division are done using full
-    --  intermediate precision. The final decimal value to be output is
- 
-    --     Q * 10**(E-D)
- 
-    --  This value can be written to the output file or to the result string
-    --  according to the format described in RM A.3.10. The details of this
-    --  operation are omitted here.
- 
-    --  A 64-bit value can contain 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, for purposes of the
-    --  conversion Aft is adjusted to 18 - (Fore - 1). In that case, or
-    --  when Fore > 19, trailing zeros can complete the output after writing
-    --  the first 18 significant digits, or the technique described in the
-    --  next section can be used.
- 
-    --  The final expression for D is
- 
-    --     D := Integer'Max (-18, Integer'Min (Aft, 18 - (Fore - 1)));
- 
-    --  For Y and Z the following expressions can be derived:
- 
-    --     Q / (10.0**D) = X * S
- 
-    --     Q = X * S * (10.0**D) = (X * Y) / Z
- 
-    --     S * 10.0**D = Y / Z;
- 
-    --  If S is an integer greater than or equal to one, then Fore must be at
-    --  least 20 in order to print T'First, which is at most -2.0**63.
-    --  This means D < 0, so use
- 
-    --    (1)   Y = -S and Z = -10**(-D)
- 
-    --  If 1.0 / S is an integer greater than one, use
- 
-    --    (2)   Y = -10**D and Z = -(1.0 / S), for D >= 0
- 
-    --  or
- 
-    --    (3)   Y = 1 and Z = (1.0 / S) * 10**(-D), for D < 0
- 
-    --  Negative values are used for nominator Y and denominator Z, so that S
-    --  can have a maximum value of 2.0**63 and a minimum of 2.0**(-63).
-    --  For Z in -1 .. -9, Fore will still be 20, and D will be negative, as
-    --  (-2.0**63) / -9 is greater than 10**18. In these cases there is room
-    --  in the denominator for the extra decimal scaling required, so case (3)
-    --  will not overflow.
- 
-    pragma Assert (System.Fine_Delta >= 2.0**(-63));
-    pragma Assert (Num'Small in 2.0**(-63) .. 2.0**63);
-    pragma Assert (Num'Fore <= 37);
-    --  These assertions need to be relaxed to allow for a Small of
-    --  2.0**(-64) at least, since there is an ACATS test for this ???
- 
-    Max_Digits : constant := 18;
-    --  Maximum number of decimal digits that can be represented in a
-    --  64-bit signed number, see above
- 
-    --  The constants E0 .. E5 implement a binary search for the appropriate
-    --  power of ten to scale the small so that it has one digit before the
-    --  decimal point.
- 
-    subtype Int is Integer;
-    E0 : constant Int := -(20 * Boolean'Pos (Num'Small >= 1.0E1));
-    E1 : constant Int := E0 + 10 * Boolean'Pos (Num'Small * 10.0**E0 < 1.0E-10);
-    E2 : constant Int := E1 +  5 * Boolean'Pos (Num'Small * 10.0**E1 < 1.0E-5);
-    E3 : constant Int := E2 +  3 * Boolean'Pos (Num'Small * 10.0**E2 < 1.0E-3);
-    E4 : constant Int := E3 +  2 * Boolean'Pos (Num'Small * 10.0**E3 < 1.0E-1);
-    E5 : constant Int := E4 +  1 * Boolean'Pos (Num'Small * 10.0**E4 < 1.0E-0);
- 
-    Scale : constant Integer := E5;
- 
-    pragma Assert (Num'Small * 10.0**Scale >= 1.0
-                    and then Num'Small * 10.0**Scale < 10.0);
- 
-    Exact : constant Boolean :=
-      Float'Floor (Num'Small) = Float'Ceiling (Num'Small)
-        or else Float'Floor (1.0 / Num'Small) = Float'Ceiling (1.0 / Num'Small)
-        or else Num'Small >= 10.0**Max_Digits;
-    --  True iff a numerator and denominator can be calculated such that
-    --  their ratio exactly represents the small of Num.
- 
-    procedure Put
-      (To   : out String;
-       Last : out Natural;
-       Item : Num;
-       Fore : Integer;
-       Aft  : Field;
-       Exp  : Field);
-    --  Actual output function, used internally by all other Put routines.
-    --  The formal Fore is an Integer, not a Field, because the routine is
-    --  also called from the version of Put that performs I/O to a string,
-    --  where the starting position depends on the size of the String, and
-    --  bears no relation to the bounds of Field.
- 
-    ---------
-    -- Get --
-    ---------
- 
-    procedure Get
-      (File  : File_Type;
-       Item  : out Num;
-       Width : Field := 0)
-    is
-       pragma Unsuppress (Range_Check);
-    begin
-       Aux.Get (File, Long_Long_Float (Item), Width);
-    exception
-       when Constraint_Error => raise Data_Error;
-    end Get;
- 
-    procedure Get
-      (Item  : out Num;
-       Width : Field := 0)
-    is
-       pragma Unsuppress (Range_Check);
-    begin
-       Aux.Get (Current_In, Long_Long_Float (Item), Width);
-    exception
-       when Constraint_Error => raise Data_Error;
-    end Get;
- 
-    procedure Get
-      (From : String;
-       Item : out Num;
-       Last : out Positive)
-    is
-       pragma Unsuppress (Range_Check);
-    begin
-       Aux.Gets (From, Long_Long_Float (Item), Last);
-    exception
-       when Constraint_Error => raise Data_Error;
-    end Get;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put
-      (File : File_Type;
-       Item : Num;
-       Fore : Field := Default_Fore;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp)
-    is
-       S    : String (1 .. Fore + Aft + Exp + Extra_Layout_Space);
-       Last : Natural;
-    begin
-       Put (S, Last, Item, Fore, Aft, Exp);
-       Generic_Aux.Put_Item (File, S (1 .. Last));
-    end Put;
- 
-    procedure Put
-      (Item : Num;
-       Fore : Field := Default_Fore;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp)
-    is
-       S    : String (1 .. Fore + Aft + Exp + Extra_Layout_Space);
-       Last : Natural;
-    begin
-       Put (S, Last, Item, Fore, Aft, Exp);
-       Generic_Aux.Put_Item (Text_IO.Current_Out, S (1 .. Last));
-    end Put;
- 
-    procedure Put
-      (To   : out String;
-       Item : Num;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp)
-    is
-       Fore : constant Integer :=
-         To'Length
-           - 1                      -- Decimal point
-           - Field'Max (1, Aft)     -- Decimal part
-           - Boolean'Pos (Exp /= 0) -- Exponent indicator
-           - Exp;                   -- Exponent
- 
-       Last : Natural;
- 
-    begin
-       if Fore - Boolean'Pos (Item < 0.0) < 1 then
-          raise Layout_Error;
-       end if;
- 
-       Put (To, Last, Item, Fore, Aft, Exp);
- 
-       if Last /= To'Last then
-          raise Layout_Error;
-       end if;
-    end Put;
- 
-    procedure Put
-      (To   : out String;
-       Last : out Natural;
-       Item : Num;
-       Fore : Integer;
-       Aft  : Field;
-       Exp  : Field)
-    is
-       subtype Digit is Int64 range 0 .. 9;
- 
-       X   : constant Int64   := Int64'Integer_Value (Item);
-       A   : constant Field   := Field'Max (Aft, 1);
-       Neg : constant Boolean := (Item < 0.0);
-       Pos : Integer := 0;  -- Next digit X has value X * 10.0**Pos;
- 
-       procedure Put_Character (C : Character);
-       pragma Inline (Put_Character);
-       --  Add C to the output string To, updating Last
- 
-       procedure Put_Digit (X : Digit);
-       --  Add digit X to the output string (going from left to right), updating
-       --  Last and Pos, and inserting the sign, leading zeros or a decimal
-       --  point when necessary. After outputting the first digit, Pos must not
-       --  be changed outside Put_Digit anymore.
- 
-       procedure Put_Int64 (X : Int64; Scale : Integer);
-       --  Output the decimal number abs X * 10**Scale
- 
-       procedure Put_Scaled
-         (X, Y, Z : Int64;
-          A       : Field;
-          E       : Integer);
-       --  Output the decimal number (X * Y / Z) * 10**E, producing A digits
-       --  after the decimal point and rounding the final digit. The value
-       --  X * Y / Z is computed with full precision, but must be in the
-       --  range of Int64.
- 
-       -------------------
-       -- Put_Character --
-       -------------------
- 
-       procedure Put_Character (C : Character) is
-       begin
-          Last := Last + 1;
- 
-          --  Never put a character outside of string To. Exception Layout_Error
-          --  will be raised later if Last is greater than To'Last.
- 
-          if Last <= To'Last then
-             To (Last) := C;
-          end if;
-       end Put_Character;
- 
-       ---------------
-       -- Put_Digit --
-       ---------------
- 
-       procedure Put_Digit (X : Digit) is
-          Digs : constant array (Digit) of Character := "0123456789";
- 
-       begin
-          if Last = To'First - 1 then
-             if X /= 0 or else Pos <= 0 then
- 
-                --  Before outputting first digit, include leading space,
-                --  possible minus sign and, if the first digit is fractional,
-                --  decimal seperator and leading zeros.
- 
-                --  The Fore part has Pos + 1 + Boolean'Pos (Neg) characters,
-                --  if Pos >= 0 and otherwise has a single zero digit plus minus
-                --  sign if negative. Add leading space if necessary.
- 
-                for J in Integer'Max (0, Pos) + 2 + Boolean'Pos (Neg) .. Fore
-                loop
-                   Put_Character (' ');
-                end loop;
- 
-                --  Output minus sign, if number is negative
- 
-                if Neg then
-                   Put_Character ('-');
-                end if;
- 
-                --  If starting with fractional digit, output leading zeros
- 
-                if Pos < 0 then
-                   Put_Character ('0');
-                   Put_Character ('.');
- 
-                   for J in Pos .. -2 loop
-                      Put_Character ('0');
-                   end loop;
-                end if;
- 
-                Put_Character (Digs (X));
-             end if;
- 
-          else
-             --  This is not the first digit to be output, so the only
-             --  special handling is that for the decimal point
- 
-             if Pos = -1 then
-                Put_Character ('.');
-             end if;
- 
-             Put_Character (Digs (X));
-          end if;
- 
-          Pos := Pos - 1;
-       end Put_Digit;
- 
-       ---------------
-       -- Put_Int64 --
-       ---------------
- 
-       procedure Put_Int64 (X : Int64; Scale : Integer) is
-       begin
-          if X = 0 then
-             return;
-          end if;
- 
-          if X not in -9 .. 9 then
-             Put_Int64 (X / 10, Scale + 1);
-          end if;
- 
-          --  Use Put_Digit to advance Pos. This fixes a case where the second
-          --  or later Scaled_Divide would omit leading zeroes, resulting in
-          --  too few digits produced and a Layout_Error as result.
- 
-          while Pos > Scale loop
-             Put_Digit (0);
-          end loop;
- 
-          --  If and only if more than one digit is output before the decimal
-          --  point, pos will be unequal to scale when outputting the first
-          --  digit.
- 
-          pragma Assert (Pos = Scale or else Last = To'First - 1);
- 
-          Pos := Scale;
- 
-          Put_Digit (abs (X rem 10));
-       end Put_Int64;
- 
-       ----------------
-       -- Put_Scaled --
-       ----------------
- 
-       procedure Put_Scaled
-         (X, Y, Z : Int64;
-          A       : Field;
-          E       : Integer)
-       is
-          pragma Assert (E >= -Max_Digits);
-          AA : constant Field := E + A;
-          N  : constant Natural := (AA + Max_Digits - 1) / Max_Digits + 1;
- 
-          Q  : array (0 .. N - 1) of Int64 := (others => 0);
-          --  Each element of Q has Max_Digits decimal digits, except the
-          --  last, which has eAA rem Max_Digits. Only Q (Q'First) may have an
-          --  absolute value equal to or larger than 10**Max_Digits. Only the
-          --  absolute value of the elements is not significant, not the sign.
- 
-          XX : Int64 := X;
-          YY : Int64 := Y;
- 
-       begin
-          for J in Q'Range loop
-             exit when XX = 0;
- 
-             if J > 0 then
-                YY := 10**(Integer'Min (Max_Digits, AA - (J - 1) * Max_Digits));
-             end if;
- 
-             Scaled_Divide (XX, YY, Z, Q (J), R => XX, Round => False);
-          end loop;
- 
-          if -E > A then
-             pragma Assert (N = 1);
- 
-             Discard_Extra_Digits : declare
-                Factor : constant Int64 := 10**(-E - A);
- 
-             begin
-                --  The scaling factors were such that the first division
-                --  produced more digits than requested. So divide away extra
-                --  digits and compute new remainder for later rounding.
- 
-                if abs (Q (0) rem Factor) >= Factor / 2 then
-                   Q (0) := abs (Q (0) / Factor) + 1;
-                else
-                   Q (0) := Q (0) / Factor;
-                end if;
- 
-                XX := 0;
-             end Discard_Extra_Digits;
-          end if;
- 
-          --  At this point XX is a remainder and we need to determine if the
-          --  quotient in Q must be rounded away from zero.
- 
-          --  As XX is less than the divisor, it is safe to take its absolute
-          --  without chance of overflow. The check to see if XX is at least
-          --  half the absolute value of the divisor must be done carefully to
-          --  avoid overflow or lose precision.
- 
-          XX := abs XX;
- 
-          if XX >= 2**62
-             or else (Z < 0 and then (-XX) * 2 <= Z)
-             or else (Z >= 0 and then XX * 2 >= Z)
-          then
-             --  OK, rounding is necessary. As the sign is not significant,
-             --  take advantage of the fact that an extra negative value will
-             --  always be available when propagating the carry.
- 
-             Q (Q'Last) := -abs Q (Q'Last) - 1;
- 
-             Propagate_Carry :
-             for J in reverse 1 .. Q'Last loop
-                if Q (J) = YY or else Q (J) = -YY then
-                   Q (J) := 0;
-                   Q (J - 1) := -abs Q (J - 1) - 1;
- 
-                else
-                   exit Propagate_Carry;
-                end if;
-             end loop Propagate_Carry;
-          end if;
- 
-          for J in Q'First .. Q'Last - 1 loop
-             Put_Int64 (Q (J), E - J * Max_Digits);
-          end loop;
- 
-          Put_Int64 (Q (Q'Last), -A);
-       end Put_Scaled;
- 
-    --  Start of processing for Put
- 
-    begin
-       Last := To'First - 1;
- 
-       if Exp /= 0 then
- 
-          --  With the Exp format, it is not known how many output digits to
-          --  generate, as leading zeros must be ignored. Computing too many
-          --  digits and then truncating the output will not give the closest
-          --  output, it is necessary to round at the correct digit.
- 
-          --  The general approach is as follows: as long as no digits have
-          --  been generated, compute the Aft next digits (without rounding).
-          --  Once a non-zero digit is generated, determine the exact number
-          --  of digits remaining and compute them with rounding.
- 
-          --  Since a large number of iterations might be necessary in case
-          --  of Aft = 1, the following optimization would be desirable.
- 
-          --  Count the number Z of leading zero bits in the integer
-          --  representation of X, and start with producing Aft + Z * 1000 /
-          --  3322 digits in the first scaled division.
- 
-          --  However, the floating-point routines are still used now ???
- 
-          System.Img_Real.Set_Image_Real (Long_Long_Float (Item), To, Last,
-             Fore, Aft, Exp);
-          return;
-       end if;
- 
-       if Exact then
-          declare
-             D : constant Integer := Integer'Min (A, Max_Digits
-                                                             - (Num'Fore - 1));
-             Y : constant Int64   := Int64'Min (Int64 (-Num'Small), -1)
-                                      * 10**Integer'Max (0, D);
-             Z : constant Int64   := Int64'Min (Int64 (-(1.0 / Num'Small)), -1)
-                                      * 10**Integer'Max (0, -D);
-          begin
-             Put_Scaled (X, Y, Z, A, -D);
-          end;
- 
-       else -- not Exact
-          declare
-             E : constant Integer := Max_Digits - 1 + Scale;
-             D : constant Integer := Scale - 1;
-             Y : constant Int64   := Int64 (-Num'Small * 10.0**E);
-             Z : constant Int64   := -10**Max_Digits;
-          begin
-             Put_Scaled (X, Y, Z, A, -D);
-          end;
-       end if;
- 
-       --  If only zero digits encountered, unit digit has not been output yet
- 
-       if Last < To'First then
-          Pos := 0;
- 
-       elsif Last > To'Last then
-          raise Layout_Error; -- Not enough room in the output variable
-       end if;
- 
-       --  Always output digits up to the first one after the decimal point
- 
-       while Pos >= -A loop
-          Put_Digit (0);
-       end loop;
-    end Put;
- 
- end Ada.Text_IO.Fixed_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-tifiio.ads gcc-8.1.0/gcc/ada/a-tifiio.ads
*** gcc-7.3.0/gcc/ada/a-tifiio.ads	Thu Jul 17 06:35:13 2014
--- gcc-8.1.0/gcc/ada/a-tifiio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,69 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                 A D A . T E X T _ I O . F I X E D _ I O                  --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  In Ada 95, the package Ada.Text_IO.Fixed_IO is a subpackage of Text_IO.
- --  This is for compatibility with Ada 83. In GNAT we make it a child package
- --  to avoid loading the necessary code if Fixed_IO is not instantiated. See
- --  routine Rtsfind.Check_Text_IO_Special_Unit for a description of how we
- --  patch up the difference in semantics so that it is invisible to the Ada
- --  programmer.
- 
- private generic
-    type Num is delta <>;
- 
- package Ada.Text_IO.Fixed_IO is
- 
-    Default_Fore : Field := Num'Fore;
-    Default_Aft  : Field := Num'Aft;
-    Default_Exp  : Field := 0;
- 
-    procedure Get
-      (File  : File_Type;
-       Item  : out Num;
-       Width : Field := 0);
- 
-    procedure Get
-      (Item  : out Num;
-       Width : Field := 0);
- 
-    procedure Put
-      (File : File_Type;
-       Item : Num;
-       Fore : Field := Default_Fore;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp);
- 
-    procedure Put
-      (Item : Num;
-       Fore : Field := Default_Fore;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp);
- 
-    procedure Get
-      (From : String;
-       Item : out Num;
-       Last : out Positive);
- 
-    procedure Put
-      (To   : out String;
-       Item : Num;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp);
- 
- private
-    pragma Inline (Get);
-    pragma Inline (Put);
- 
- end Ada.Text_IO.Fixed_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-tiflau.adb gcc-8.1.0/gcc/ada/a-tiflau.adb
*** gcc-7.3.0/gcc/ada/a-tiflau.adb	Tue Jan  6 09:24:33 2015
--- gcc-8.1.0/gcc/ada/a-tiflau.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,235 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                        GNAT RUN-TIME COMPONENTS                          --
- --                                                                          --
- --                A D A . T E X T _ I O . F L O A T _ A U X                 --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Text_IO.Generic_Aux; use Ada.Text_IO.Generic_Aux;
- 
- with System.Img_Real; use System.Img_Real;
- with System.Val_Real; use System.Val_Real;
- 
- package body Ada.Text_IO.Float_Aux is
- 
-    ---------
-    -- Get --
-    ---------
- 
-    procedure Get
-      (File  : File_Type;
-       Item  : out Long_Long_Float;
-       Width : Field)
-    is
-       Buf  : String (1 .. Field'Last);
-       Stop : Integer := 0;
-       Ptr  : aliased Integer := 1;
- 
-    begin
-       if Width /= 0 then
-          Load_Width (File, Width, Buf, Stop);
-          String_Skip (Buf, Ptr);
-       else
-          Load_Real (File, Buf, Stop);
-       end if;
- 
-       Item := Scan_Real (Buf, Ptr'Access, Stop);
- 
-       Check_End_Of_Field (Buf, Stop, Ptr, Width);
-    end Get;
- 
-    ----------
-    -- Gets --
-    ----------
- 
-    procedure Gets
-      (From : String;
-       Item : out Long_Long_Float;
-       Last : out Positive)
-    is
-       Pos : aliased Integer;
- 
-    begin
-       String_Skip (From, Pos);
-       Item := Scan_Real (From, Pos'Access, From'Last);
-       Last := Pos - 1;
- 
-    exception
-       when Constraint_Error =>
-          raise Data_Error;
-    end Gets;
- 
-    ---------------
-    -- Load_Real --
-    ---------------
- 
-    procedure Load_Real
-      (File : File_Type;
-       Buf  : out String;
-       Ptr  : in out Natural)
-    is
-       Loaded   : Boolean;
- 
-    begin
-       --  Skip initial blanks, and load possible sign
- 
-       Load_Skip (File);
-       Load (File, Buf, Ptr, '+', '-');
- 
-       --  Case of .nnnn
- 
-       Load (File, Buf, Ptr, '.', Loaded);
- 
-       if Loaded then
-          Load_Digits (File, Buf, Ptr, Loaded);
- 
-          --  Hopeless junk if no digits loaded
- 
-          if not Loaded then
-             return;
-          end if;
- 
-       --  Otherwise must have digits to start
- 
-       else
-          Load_Digits (File, Buf, Ptr, Loaded);
- 
-          --  Hopeless junk if no digits loaded
- 
-          if not Loaded then
-             return;
-          end if;
- 
-          --  Based cases. We recognize either the standard '#' or the
-          --  allowed alternative replacement ':' (see RM J.2(3)).
- 
-          Load (File, Buf, Ptr, '#', ':', Loaded);
- 
-          if Loaded then
- 
-             --  Case of nnn#.xxx#
- 
-             Load (File, Buf, Ptr, '.', Loaded);
- 
-             if Loaded then
-                Load_Extended_Digits (File, Buf, Ptr);
-                Load (File, Buf, Ptr, '#', ':');
- 
-             --  Case of nnn#xxx.[xxx]# or nnn#xxx#
- 
-             else
-                Load_Extended_Digits (File, Buf, Ptr);
-                Load (File, Buf, Ptr, '.', Loaded);
- 
-                if Loaded then
-                   Load_Extended_Digits (File, Buf, Ptr);
-                end if;
- 
-                --  As usual, it seems strange to allow mixed base characters,
-                --  but that is what ACVC tests expect, see CE3804M, case (3).
- 
-                Load (File, Buf, Ptr, '#', ':');
-             end if;
- 
-          --  Case of nnn.[nnn] or nnn
- 
-          else
-             --  Prevent the potential processing of '.' in cases where the
-             --  initial digits have a trailing underscore.
- 
-             if Buf (Ptr) = '_' then
-                return;
-             end if;
- 
-             Load (File, Buf, Ptr, '.', Loaded);
- 
-             if Loaded then
-                Load_Digits (File, Buf, Ptr);
-             end if;
-          end if;
-       end if;
- 
-       --  Deal with exponent
- 
-       Load (File, Buf, Ptr, 'E', 'e', Loaded);
- 
-       if Loaded then
-          Load (File, Buf, Ptr, '+', '-');
-          Load_Digits (File, Buf, Ptr);
-       end if;
-    end Load_Real;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put
-      (File : File_Type;
-       Item : Long_Long_Float;
-       Fore : Field;
-       Aft  : Field;
-       Exp  : Field)
-    is
-       Buf : String (1 .. 3 * Field'Last + 2);
-       Ptr : Natural := 0;
- 
-    begin
-       Set_Image_Real (Item, Buf, Ptr, Fore, Aft, Exp);
-       Put_Item (File, Buf (1 .. Ptr));
-    end Put;
- 
-    ----------
-    -- Puts --
-    ----------
- 
-    procedure Puts
-      (To   : out String;
-       Item : Long_Long_Float;
-       Aft  : Field;
-       Exp  : Field)
-    is
-       Buf : String (1 .. 3 * Field'Last + 2);
-       Ptr : Natural := 0;
- 
-    begin
-       Set_Image_Real (Item, Buf, Ptr, Fore => 1, Aft => Aft, Exp => Exp);
- 
-       if Ptr > To'Length then
-          raise Layout_Error;
- 
-       else
-          for J in 1 .. Ptr loop
-             To (To'Last - Ptr + J) := Buf (J);
-          end loop;
- 
-          for J in To'First .. To'Last - Ptr loop
-             To (J) := ' ';
-          end loop;
-       end if;
-    end Puts;
- 
- end Ada.Text_IO.Float_Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-tiflau.ads gcc-8.1.0/gcc/ada/a-tiflau.ads
*** gcc-7.3.0/gcc/ada/a-tiflau.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-tiflau.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,72 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                A D A . T E X T _ I O . F L O A T _ A U X                 --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          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- --
- -- 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 routines for Ada.Text_IO.Float_IO that are
- --  shared among separate instantiations of this package. The routines in
- --  this package are identical semantically to those in Float_IO itself,
- --  except that generic parameter Num has been replaced by Long_Long_Float,
- --  and the default parameters have been removed because they are supplied
- --  explicitly by the calls from within the generic template. This package
- --  is also used by Ada.Text_IO.Fixed_IO, and Ada.Text_IO.Decimal_IO.
- 
- private package Ada.Text_IO.Float_Aux is
- 
-    procedure Load_Real
-      (File : File_Type;
-       Buf  : out String;
-       Ptr  : in out Natural);
-    --  This is an auxiliary routine that is used to load a possibly signed
-    --  real literal value from the input file into Buf, starting at Ptr + 1.
- 
-    procedure Get
-      (File  : File_Type;
-       Item  : out Long_Long_Float;
-       Width : Field);
- 
-    procedure Put
-      (File : File_Type;
-       Item : Long_Long_Float;
-       Fore : Field;
-       Aft  : Field;
-       Exp  : Field);
- 
-    procedure Gets
-      (From : String;
-       Item : out Long_Long_Float;
-       Last : out Positive);
- 
-    procedure Puts
-      (To   : out String;
-       Item : Long_Long_Float;
-       Aft  : Field;
-       Exp  : Field);
- 
- end Ada.Text_IO.Float_Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-tiflio.adb gcc-8.1.0/gcc/ada/a-tiflio.adb
*** gcc-7.3.0/gcc/ada/a-tiflio.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-tiflio.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,145 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                 A D A . T E X T _ I O . F L O A T _ I O                  --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          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- --
- -- 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.Text_IO.Float_Aux;
- 
- package body Ada.Text_IO.Float_IO is
- 
-    package Aux renames Ada.Text_IO.Float_Aux;
- 
-    ---------
-    -- Get --
-    ---------
- 
-    procedure Get
-      (File  : File_Type;
-       Item  : out Num;
-       Width : Field := 0)
-    is
-       pragma Unsuppress (Range_Check);
- 
-    begin
-       Aux.Get (File, Long_Long_Float (Item), Width);
- 
-       --  In the case where the type is unconstrained (e.g. Standard'Float),
-       --  the above conversion may result in an infinite value, which is
-       --  normally fine for a conversion, but in this case, we want to treat
-       --  that as a data error.
- 
-       if not Item'Valid then
-          raise Data_Error;
-       end if;
- 
-    exception
-       when Constraint_Error => raise Data_Error;
-    end Get;
- 
-    procedure Get
-      (Item  : out Num;
-       Width : Field := 0)
-    is
-       pragma Unsuppress (Range_Check);
- 
-    begin
-       Aux.Get (Current_In, Long_Long_Float (Item), Width);
- 
-       --  In the case where the type is unconstrained (e.g. Standard'Float),
-       --  the above conversion may result in an infinite value, which is
-       --  normally fine for a conversion, but in this case, we want to treat
-       --  that as a data error.
- 
-       if not Item'Valid then
-          raise Data_Error;
-       end if;
- 
-    exception
-       when Constraint_Error => raise Data_Error;
-    end Get;
- 
-    procedure Get
-      (From : String;
-       Item : out Num;
-       Last : out Positive)
-    is
-       pragma Unsuppress (Range_Check);
- 
-    begin
-       Aux.Gets (From, Long_Long_Float (Item), Last);
- 
-       --  In the case where the type is unconstrained (e.g. Standard'Float),
-       --  the above conversion may result in an infinite value, which is
-       --  normally fine for a conversion, but in this case, we want to treat
-       --  that as a data error.
- 
-       if not Item'Valid then
-          raise Data_Error;
-       end if;
- 
-    exception
-       when Constraint_Error => raise Data_Error;
-    end Get;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put
-      (File : File_Type;
-       Item : Num;
-       Fore : Field := Default_Fore;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp)
-    is
-    begin
-       Aux.Put (File, Long_Long_Float (Item), Fore, Aft, Exp);
-    end Put;
- 
-    procedure Put
-      (Item : Num;
-       Fore : Field := Default_Fore;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp)
-    is
-    begin
-       Aux.Put (Current_Out, Long_Long_Float (Item), Fore, Aft, Exp);
-    end Put;
- 
-    procedure Put
-      (To   : out String;
-       Item : Num;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp)
-    is
-    begin
-       Aux.Puts (To, Long_Long_Float (Item), Aft, Exp);
-    end Put;
- 
- end Ada.Text_IO.Float_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-tiflio.ads gcc-8.1.0/gcc/ada/a-tiflio.ads
*** gcc-7.3.0/gcc/ada/a-tiflio.ads	Thu Jul 17 06:35:13 2014
--- gcc-8.1.0/gcc/ada/a-tiflio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,89 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                 A D A . T E X T _ I O . F L O A T _ I O                  --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2014, Free Software Foundation, 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  In Ada 95, the package Ada.Text_IO.Float_IO is a subpackage of Text_IO.
- --  This is for compatibility with Ada 83. In GNAT we make it a child package
- --  to avoid loading the necessary code if Float_IO is not instantiated. See
- --  routine Rtsfind.Check_Text_IO_Special_Unit for a description of how we
- --  patch up the difference in semantics so that it is invisible to the Ada
- --  programmer.
- 
- private generic
-    type Num is digits <>;
- 
- package Ada.Text_IO.Float_IO is
- 
-    Default_Fore : Field := 2;
-    Default_Aft  : Field := Num'Digits - 1;
-    Default_Exp  : Field := 3;
- 
-    procedure Get
-      (File  : File_Type;
-       Item  : out Num;
-       Width : Field := 0);
- 
-    procedure Get
-      (Item  : out Num;
-       Width : Field := 0);
- 
-    procedure Put
-      (File : File_Type;
-       Item : Num;
-       Fore : Field := Default_Fore;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp);
- 
-    procedure Put
-      (Item : Num;
-       Fore : Field := Default_Fore;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp);
- 
-    procedure Get
-      (From : String;
-       Item : out Num;
-       Last : out Positive);
- 
-    procedure Put
-      (To   : out String;
-       Item : Num;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp);
- 
- private
-    pragma Inline (Get);
-    pragma Inline (Put);
- 
- end Ada.Text_IO.Float_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-tigeau.adb gcc-8.1.0/gcc/ada/a-tigeau.adb
*** gcc-7.3.0/gcc/ada/a-tigeau.adb	Tue Jan  6 10:08:52 2015
--- gcc-8.1.0/gcc/ada/a-tigeau.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,487 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --              A D A . T E X T _ I O . G E N E R I C _ A U X               --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 Interfaces.C_Streams; use Interfaces.C_Streams;
- with System.File_IO;
- with System.File_Control_Block;
- 
- package body Ada.Text_IO.Generic_Aux is
- 
-    package FIO renames System.File_IO;
-    package FCB renames System.File_Control_Block;
-    subtype AP is FCB.AFCB_Ptr;
- 
-    ------------------------
-    -- Check_End_Of_Field --
-    ------------------------
- 
-    procedure Check_End_Of_Field
-      (Buf   : String;
-       Stop  : Integer;
-       Ptr   : Integer;
-       Width : Field)
-    is
-    begin
-       if Ptr > Stop then
-          return;
- 
-       elsif Width = 0 then
-          raise Data_Error;
- 
-       else
-          for J in Ptr .. Stop loop
-             if not Is_Blank (Buf (J)) then
-                raise Data_Error;
-             end if;
-          end loop;
-       end if;
-    end Check_End_Of_Field;
- 
-    -----------------------
-    -- Check_On_One_Line --
-    -----------------------
- 
-    procedure Check_On_One_Line
-      (File   : File_Type;
-       Length : Integer)
-    is
-    begin
-       FIO.Check_Write_Status (AP (File));
- 
-       if File.Line_Length /= 0 then
-          if Count (Length) > File.Line_Length then
-             raise Layout_Error;
-          elsif File.Col + Count (Length) > File.Line_Length + 1 then
-             New_Line (File);
-          end if;
-       end if;
-    end Check_On_One_Line;
- 
-    ----------
-    -- Getc --
-    ----------
- 
-    function Getc (File : File_Type) return int is
-       ch : int;
- 
-    begin
-       ch := fgetc (File.Stream);
- 
-       if ch = EOF and then ferror (File.Stream) /= 0 then
-          raise Device_Error;
-       else
-          return ch;
-       end if;
-    end Getc;
- 
-    --------------
-    -- Is_Blank --
-    --------------
- 
-    function Is_Blank (C : Character) return Boolean is
-    begin
-       return C = ' ' or else C = ASCII.HT;
-    end Is_Blank;
- 
-    ----------
-    -- Load --
-    ----------
- 
-    procedure Load
-      (File   : File_Type;
-       Buf    : out String;
-       Ptr    : in out Integer;
-       Char   : Character;
-       Loaded : out Boolean)
-    is
-       ch : int;
- 
-    begin
-       ch := Getc (File);
- 
-       if ch = Character'Pos (Char) then
-          Store_Char (File, ch, Buf, Ptr);
-          Loaded := True;
-       else
-          Ungetc (ch, File);
-          Loaded := False;
-       end if;
-    end Load;
- 
-    procedure Load
-      (File   : File_Type;
-       Buf    : out String;
-       Ptr    : in out Integer;
-       Char   : Character)
-    is
-       ch : int;
- 
-    begin
-       ch := Getc (File);
- 
-       if ch = Character'Pos (Char) then
-          Store_Char (File, ch, Buf, Ptr);
-       else
-          Ungetc (ch, File);
-       end if;
-    end Load;
- 
-    procedure Load
-      (File   : File_Type;
-       Buf    : out String;
-       Ptr    : in out Integer;
-       Char1  : Character;
-       Char2  : Character;
-       Loaded : out Boolean)
-    is
-       ch : int;
- 
-    begin
-       ch := Getc (File);
- 
-       if ch = Character'Pos (Char1) or else ch = Character'Pos (Char2) then
-          Store_Char (File, ch, Buf, Ptr);
-          Loaded := True;
-       else
-          Ungetc (ch, File);
-          Loaded := False;
-       end if;
-    end Load;
- 
-    procedure Load
-      (File   : File_Type;
-       Buf    : out String;
-       Ptr    : in out Integer;
-       Char1  : Character;
-       Char2  : Character)
-    is
-       ch : int;
- 
-    begin
-       ch := Getc (File);
- 
-       if ch = Character'Pos (Char1) or else ch = Character'Pos (Char2) then
-          Store_Char (File, ch, Buf, Ptr);
-       else
-          Ungetc (ch, File);
-       end if;
-    end Load;
- 
-    -----------------
-    -- Load_Digits --
-    -----------------
- 
-    procedure Load_Digits
-      (File   : File_Type;
-       Buf    : out String;
-       Ptr    : in out Integer;
-       Loaded : out Boolean)
-    is
-       ch          : int;
-       After_Digit : Boolean;
- 
-    begin
-       ch := Getc (File);
- 
-       if ch not in Character'Pos ('0') .. Character'Pos ('9') then
-          Loaded := False;
- 
-       else
-          Loaded := True;
-          After_Digit := True;
- 
-          loop
-             Store_Char (File, ch, Buf, Ptr);
-             ch := Getc (File);
- 
-             if ch in Character'Pos ('0') .. Character'Pos ('9') then
-                After_Digit := True;
- 
-             elsif ch = Character'Pos ('_') and then After_Digit then
-                After_Digit := False;
- 
-             else
-                exit;
-             end if;
-          end loop;
-       end if;
- 
-       Ungetc (ch, File);
-    end Load_Digits;
- 
-    procedure Load_Digits
-      (File   : File_Type;
-       Buf    : out String;
-       Ptr    : in out Integer)
-    is
-       ch          : int;
-       After_Digit : Boolean;
- 
-    begin
-       ch := Getc (File);
- 
-       if ch in Character'Pos ('0') .. Character'Pos ('9') then
-          After_Digit := True;
- 
-          loop
-             Store_Char (File, ch, Buf, Ptr);
-             ch := Getc (File);
- 
-             if ch in Character'Pos ('0') .. Character'Pos ('9') then
-                After_Digit := True;
- 
-             elsif ch = Character'Pos ('_') and then After_Digit then
-                After_Digit := False;
- 
-             else
-                exit;
-             end if;
-          end loop;
-       end if;
- 
-       Ungetc (ch, File);
-    end Load_Digits;
- 
-    --------------------------
-    -- Load_Extended_Digits --
-    --------------------------
- 
-    procedure Load_Extended_Digits
-      (File   : File_Type;
-       Buf    : out String;
-       Ptr    : in out Integer;
-       Loaded : out Boolean)
-    is
-       ch          : int;
-       After_Digit : Boolean := False;
- 
-    begin
-       Loaded := False;
- 
-       loop
-          ch := Getc (File);
- 
-          if ch in Character'Pos ('0') .. Character'Pos ('9')
-               or else
-             ch in Character'Pos ('a') .. Character'Pos ('f')
-               or else
-             ch in Character'Pos ('A') .. Character'Pos ('F')
-          then
-             After_Digit := True;
- 
-          elsif ch = Character'Pos ('_') and then After_Digit then
-             After_Digit := False;
- 
-          else
-             exit;
-          end if;
- 
-          Store_Char (File, ch, Buf, Ptr);
-          Loaded := True;
-       end loop;
- 
-       Ungetc (ch, File);
-    end Load_Extended_Digits;
- 
-    procedure Load_Extended_Digits
-      (File   : File_Type;
-       Buf    : out String;
-       Ptr    : in out Integer)
-    is
-       Junk : Boolean;
-       pragma Unreferenced (Junk);
-    begin
-       Load_Extended_Digits (File, Buf, Ptr, Junk);
-    end Load_Extended_Digits;
- 
-    ---------------
-    -- Load_Skip --
-    ---------------
- 
-    procedure Load_Skip (File  : File_Type) is
-       C : Character;
- 
-    begin
-       FIO.Check_Read_Status (AP (File));
- 
-       --  Loop till we find a non-blank character (note that as usual in
-       --  Text_IO, blank includes horizontal tab). Note that Get deals with
-       --  the Before_LM and Before_LM_PM flags appropriately.
- 
-       loop
-          Get (File, C);
-          exit when not Is_Blank (C);
-       end loop;
- 
-       Ungetc (Character'Pos (C), File);
-       File.Col := File.Col - 1;
-    end Load_Skip;
- 
-    ----------------
-    -- Load_Width --
-    ----------------
- 
-    procedure Load_Width
-      (File  : File_Type;
-       Width : Field;
-       Buf   : out String;
-       Ptr   : in out Integer)
-    is
-       ch : int;
- 
-    begin
-       FIO.Check_Read_Status (AP (File));
- 
-       --  If we are immediately before a line mark, then we have no characters.
-       --  This is always a data error, so we may as well raise it right away.
- 
-       if File.Before_LM then
-          raise Data_Error;
- 
-       else
-          for J in 1 .. Width loop
-             ch := Getc (File);
- 
-             if ch = EOF then
-                return;
- 
-             elsif ch = LM then
-                Ungetc (ch, File);
-                return;
- 
-             else
-                Store_Char (File, ch, Buf, Ptr);
-             end if;
-          end loop;
-       end if;
-    end Load_Width;
- 
-    -----------
-    -- Nextc --
-    -----------
- 
-    function Nextc (File : File_Type) return int is
-       ch : int;
- 
-    begin
-       ch := fgetc (File.Stream);
- 
-       if ch = EOF then
-          if ferror (File.Stream) /= 0 then
-             raise Device_Error;
-          else
-             return EOF;
-          end if;
- 
-       else
-          Ungetc (ch, File);
-          return ch;
-       end if;
-    end Nextc;
- 
-    --------------
-    -- Put_Item --
-    --------------
- 
-    procedure Put_Item (File : File_Type; Str : String) is
-    begin
-       Check_On_One_Line (File, Str'Length);
-       Put (File, Str);
-    end Put_Item;
- 
-    ----------------
-    -- Store_Char --
-    ----------------
- 
-    procedure Store_Char
-      (File : File_Type;
-       ch   : int;
-       Buf  : in out String;
-       Ptr  : in out Integer)
-    is
-    begin
-       File.Col := File.Col + 1;
- 
-       if Ptr < Buf'Last then
-          Ptr := Ptr + 1;
-       end if;
- 
-       Buf (Ptr) := Character'Val (ch);
-    end Store_Char;
- 
-    -----------------
-    -- String_Skip --
-    -----------------
- 
-    procedure String_Skip (Str : String; Ptr : out Integer) is
-    begin
-       --  Routines calling String_Skip malfunction if Str'Last = Positive'Last.
-       --  It's too much trouble to make this silly case work, so we just raise
-       --  Program_Error with an appropriate message. We raise Program_Error
-       --  rather than Constraint_Error because we don't want this case to be
-       --  converted to Data_Error.
- 
-       if Str'Last = Positive'Last then
-          raise Program_Error with
-            "string upper bound is Positive'Last, not supported";
-       end if;
- 
-       --  Normal case where Str'Last < Positive'Last
- 
-       Ptr := Str'First;
- 
-       loop
-          if Ptr > Str'Last then
-             raise End_Error;
- 
-          elsif not Is_Blank (Str (Ptr)) then
-             return;
- 
-          else
-             Ptr := Ptr + 1;
-          end if;
-       end loop;
-    end String_Skip;
- 
-    ------------
-    -- Ungetc --
-    ------------
- 
-    procedure Ungetc (ch : int; File : File_Type) is
-    begin
-       if ch /= EOF then
-          if ungetc (ch, File.Stream) = EOF then
-             raise Device_Error;
-          end if;
-       end if;
-    end Ungetc;
- 
- end Ada.Text_IO.Generic_Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-tigeau.ads gcc-8.1.0/gcc/ada/a-tigeau.ads
*** gcc-7.3.0/gcc/ada/a-tigeau.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-tigeau.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,191 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --              A D A . T E X T _ I O . G E N E R I C _ A U X               --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          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- --
- -- 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 a set of auxiliary routines used by the Text_IO
- --  generic children, including for reading and writing numeric strings.
- 
- private package Ada.Text_IO.Generic_Aux is
- 
-    --  Note: for all the Load routines, File indicates the file to be read,
-    --  Buf is the string into which data is stored, Ptr is the index of the
-    --  last character stored so far, and is updated if additional characters
-    --  are stored. Data_Error is raised if the input overflows Buf. The only
-    --  Load routines that do a file status check are Load_Skip and Load_Width
-    --  so one of these two routines must be called first.
- 
-    procedure Check_End_Of_Field
-      (Buf   : String;
-       Stop  : Integer;
-       Ptr   : Integer;
-       Width : Field);
-    --  This routine is used after doing a get operations on a numeric value.
-    --  Buf is the string being scanned, and Stop is the last character of
-    --  the field being scanned. Ptr is as set by the call to the scan routine
-    --  that scanned out the numeric value, i.e. it points one past the last
-    --  character scanned, and Width is the width parameter from the Get call.
-    --
-    --  There are two cases, if Width is non-zero, then a check is made that
-    --  the remainder of the field is all blanks. If Width is zero, then it
-    --  means that the scan routine scanned out only part of the field. We
-    --  have already scanned out the field that the ACVC tests seem to expect
-    --  us to read (even if it does not follow the syntax of the type being
-    --  scanned, e.g. allowing negative exponents in integers, and underscores
-    --  at the end of the string), so we just raise Data_Error.
- 
-    procedure Check_On_One_Line (File : File_Type; Length : Integer);
-    --  Check to see if item of length Integer characters can fit on
-    --  current line. Call New_Line if not, first checking that the
-    --  line length can accommodate Length characters, raise Layout_Error
-    --  if item is too large for a single line.
- 
-    function Getc (File : File_Type) return Integer;
-    --  Gets next character from file, which has already been checked for
-    --  being in read status, and returns the character read if no error
-    --  occurs. The result is EOF if the end of file was read. Note that
-    --  the Col value is not bumped, so it is the caller's responsibility
-    --  to bump it if necessary.
- 
-    function Is_Blank (C : Character) return Boolean;
-    --  Determines if C is a blank (space or tab)
- 
-    procedure Load_Width
-      (File  : File_Type;
-       Width : Field;
-       Buf   : out String;
-       Ptr   : in out Integer);
-    --  Loads exactly Width characters, unless a line mark is encountered first
- 
-    procedure Load_Skip (File  : File_Type);
-    --  Skips leading blanks and line and page marks, if the end of file is
-    --  read without finding a non-blank character, then End_Error is raised.
-    --  Note: a blank is defined as a space or horizontal tab (RM A.10.6(5)).
- 
-    procedure Load
-      (File   : File_Type;
-       Buf    : out String;
-       Ptr    : in out Integer;
-       Char   : Character;
-       Loaded : out Boolean);
-    --  If next character is Char, loads it, otherwise no characters are loaded
-    --  Loaded is set to indicate whether or not the character was found.
- 
-    procedure Load
-      (File   : File_Type;
-       Buf    : out String;
-       Ptr    : in out Integer;
-       Char   : Character);
-    --  Same as above, but no indication if character is loaded
- 
-    procedure Load
-      (File   : File_Type;
-       Buf    : out String;
-       Ptr    : in out Integer;
-       Char1  : Character;
-       Char2  : Character;
-       Loaded : out Boolean);
-    --  If next character is Char1 or Char2, loads it, otherwise no characters
-    --  are loaded. Loaded is set to indicate whether or not one of the two
-    --  characters was found.
- 
-    procedure Load
-      (File   : File_Type;
-       Buf    : out String;
-       Ptr    : in out Integer;
-       Char1  : Character;
-       Char2  : Character);
-    --  Same as above, but no indication if character is loaded
- 
-    procedure Load_Digits
-      (File   : File_Type;
-       Buf    : out String;
-       Ptr    : in out Integer;
-       Loaded : out Boolean);
-    --  Loads a sequence of zero or more decimal digits. Loaded is set if
-    --  at least one digit is loaded.
- 
-    procedure Load_Digits
-      (File   : File_Type;
-       Buf    : out String;
-       Ptr    : in out Integer);
-    --  Same as above, but no indication if character is loaded
- 
-    procedure Load_Extended_Digits
-      (File   : File_Type;
-       Buf    : out String;
-       Ptr    : in out Integer;
-       Loaded : out Boolean);
-    --  Like Load_Digits, but also allows extended digits a-f and A-F
- 
-    procedure Load_Extended_Digits
-      (File   : File_Type;
-       Buf    : out String;
-       Ptr    : in out Integer);
-    --  Same as above, but no indication if character is loaded
- 
-    function Nextc (File : File_Type) return Integer;
-    --  Like Getc, but includes a call to Ungetc, so that the file
-    --  pointer is not moved by the call.
- 
-    procedure Put_Item (File : File_Type; Str : String);
-    --  This routine is like Text_IO.Put, except that it checks for overflow
-    --  of bounded lines, as described in (RM A.10.6(8)). It is used for
-    --  all output of numeric values and of enumeration values.
- 
-    procedure Store_Char
-      (File : File_Type;
-       ch   : Integer;
-       Buf  : in out String;
-       Ptr  : in out Integer);
-    --  Store a single character in buffer, checking for overflow and
-    --  adjusting the column number in the file to reflect the fact
-    --  that a character has been acquired from the input stream. If
-    --  the character will not fit in the buffer it is stored in the
-    --  last character position of the buffer and Ptr is unchanged.
-    --  No exception is raised in this case, it is the caller's job
-    --  to raise Data_Error if the buffer fills up, so typically the
-    --  caller will make the buffer one character longer than needed.
- 
-    procedure String_Skip (Str : String; Ptr : out Integer);
-    --  Used in the Get from string procedures to skip leading blanks in the
-    --  string. Ptr is set to the index of the first non-blank. If the string
-    --  is all blanks, then the exception End_Error is raised, Note that blank
-    --  is defined as a space or horizontal tab (RM A.10.6(5)).
- 
-    procedure Ungetc (ch : Integer; File : File_Type);
-    --  Pushes back character into stream, using ungetc. The caller has
-    --  checked that the file is in read status. Device_Error is raised
-    --  if the character cannot be pushed back. An attempt to push back
-    --  an end of file (EOF) is ignored.
- 
- private
-    pragma Inline (Is_Blank);
- 
- end Ada.Text_IO.Generic_Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-tigeli.adb gcc-8.1.0/gcc/ada/a-tigeli.adb
*** gcc-7.3.0/gcc/ada/a-tigeli.adb	Mon May  2 09:50:45 2016
--- gcc-8.1.0/gcc/ada/a-tigeli.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,241 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                 A D A . T E X T _ I O . G E T _ L I N E                  --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  The implementation of Ada.Text_IO.Get_Line is split into a subunit so that
- --  different implementations can be used on different systems. This is the
- --  standard implementation (it uses low level features not suitable for use
- --  on virtual machines).
- 
- with System;                  use System;
- with System.Storage_Elements; use System.Storage_Elements;
- 
- separate (Ada.Text_IO)
- procedure Get_Line
-   (File : File_Type;
-    Item : out String;
-    Last : out Natural)
- is
-    Chunk_Size : constant := 80;
-    --  We read into a fixed size auxiliary buffer. Because this buffer
-    --  needs to be pre-initialized, there is a trade-off between size and
-    --  speed. Experiments find returns are diminishing after 50 and this
-    --  size allows most lines to be processed with a single read.
- 
-    ch : int;
-    N  : Natural;
- 
-    procedure memcpy (s1, s2 : chars; n : size_t);
-    pragma Import (C, memcpy);
- 
-    function memchr (s : chars; ch : int; n : size_t) return chars;
-    pragma Import (C, memchr);
- 
-    procedure memset (b : chars; ch : int; n : size_t);
-    pragma Import (C, memset);
- 
-    function Get_Chunk (N : Positive) return Natural;
-    --  Reads at most N - 1 characters into Item (Last + 1 .. Item'Last),
-    --  updating Last. Raises End_Error if nothing was read (End_Of_File).
-    --  Returns number of characters still to read (either 0 or 1) in
-    --  case of success.
- 
-    ---------------
-    -- Get_Chunk --
-    ---------------
- 
-    function Get_Chunk (N : Positive) return Natural is
-       Buf : String (1 .. Chunk_Size);
-       S   : constant chars := Buf (1)'Address;
-       P   : chars;
- 
-    begin
-       if N = 1 then
-          return N;
-       end if;
- 
-       memset (S, 10, size_t (N));
- 
-       if fgets (S, N, File.Stream) = Null_Address then
-          if ferror (File.Stream) /= 0 then
-             raise Device_Error;
- 
-          --  If incomplete last line, pretend we found a LM
- 
-          elsif Last >= Item'First then
-             return 0;
- 
-          else
-             raise End_Error;
-          end if;
-       end if;
- 
-       P := memchr (S, LM, size_t (N));
- 
-       --  If no LM is found, the buffer got filled without reading a new
-       --  line. Otherwise, the LM is either one from the input, or else one
-       --  from the initialization, which means an incomplete end-of-line was
-       --  encountered. Only in first case the LM will be followed by a 0.
- 
-       if P = Null_Address then
-          pragma Assert (Buf (N) = ASCII.NUL);
-          memcpy (Item (Last + 1)'Address,
-                  Buf (1)'Address, size_t (N - 1));
-          Last := Last + N - 1;
- 
-          return 1;
- 
-       else
-          --  P points to the LM character. Set K so Buf (K) is the character
-          --  right before.
- 
-          declare
-             K : Natural := Natural (P - S);
- 
-          begin
-             --  If K + 2 is greater than N, then Buf (K + 1) cannot be a LM
-             --  character from the source file, as the call to fgets copied at
-             --  most N - 1 characters. Otherwise, either LM is a character from
-             --  the source file and then Buf (K + 2) should be 0, or LM is a
-             --  character put in Buf by memset and then Buf (K) is the 0 put in
-             --  by fgets. In both cases where LM does not come from the source
-             --  file, compensate.
- 
-             if K + 2 > N or else Buf (K + 2) /= ASCII.NUL then
- 
-                --  Incomplete last line, so remove the extra 0
- 
-                pragma Assert (Buf (K) = ASCII.NUL);
-                K := K - 1;
-             end if;
- 
-             memcpy (Item (Last + 1)'Address,
-                     Buf (1)'Address, size_t (K));
-             Last := Last + K;
-          end;
- 
-          return 0;
-       end if;
-    end Get_Chunk;
- 
- --  Start of processing for Get_Line
- 
- begin
-    FIO.Check_Read_Status (AP (File));
- 
-    --  Set Last to Item'First - 1 when no characters are read, as mandated by
-    --  Ada RM. In the case where Item'First is negative or null, this results
-    --  in Constraint_Error being raised.
- 
-    Last := Item'First - 1;
- 
-    --  Immediate exit for null string, this is a case in which we do not
-    --  need to test for end of file and we do not skip a line mark under
-    --  any circumstances.
- 
-    if Item'First > Item'Last then
-       return;
-    end if;
- 
-    N := Item'Last - Item'First + 1;
- 
-    --  Here we have at least one character, if we are immediately before
-    --  a line mark, then we will just skip past it storing no characters.
- 
-    if File.Before_LM then
-       File.Before_LM := False;
-       File.Before_LM_PM := False;
- 
-    --  Otherwise we need to read some characters
- 
-    else
-       while N >= Chunk_Size loop
-          if Get_Chunk (Chunk_Size) = 0 then
-             N := 0;
-          else
-             N := N - Chunk_Size + 1;
-          end if;
-       end loop;
- 
-       if N > 1 then
-          N := Get_Chunk (N);
-       end if;
- 
-       --  Almost there, only a little bit more to read
- 
-       if N = 1 then
-          ch := Getc (File);
- 
-          --  If we get EOF after already reading data, this is an incomplete
-          --  last line, in which case no End_Error should be raised.
- 
-          if ch = EOF then
-             if  Last < Item'First then
-                raise End_Error;
- 
-             else  --  All done
-                return;
-             end if;
- 
-          elsif ch /= LM then
- 
-             --  Buffer really is full without having seen LM, update col
- 
-             Last := Last + 1;
-             Item (Last) := Character'Val (ch);
-             File.Col := File.Col + Count (Last - Item'First + 1);
-             return;
-          end if;
-       end if;
-    end if;
- 
-    --  We have skipped past, but not stored, a line mark. Skip following
-    --  page mark if one follows, but do not do this for a non-regular file
-    --  (since otherwise we get annoying wait for an extra character)
- 
-    File.Line := File.Line + 1;
-    File.Col := 1;
- 
-    if File.Before_LM_PM then
-       File.Line := 1;
-       File.Before_LM_PM := False;
-       File.Page := File.Page + 1;
- 
-    elsif File.Is_Regular_File then
-       ch := Getc (File);
- 
-       if ch = PM and then File.Is_Regular_File then
-          File.Line := 1;
-          File.Page := File.Page + 1;
-       else
-          Ungetc (ch, File);
-       end if;
-    end if;
- end Get_Line;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-tiinau.adb gcc-8.1.0/gcc/ada/a-tiinau.adb
*** gcc-7.3.0/gcc/ada/a-tiinau.adb	Tue Jan  6 09:24:33 2015
--- gcc-8.1.0/gcc/ada/a-tiinau.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,297 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --              A D A . T E X T _ I O . I N T E G E R  _ A U X              --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Text_IO.Generic_Aux; use Ada.Text_IO.Generic_Aux;
- 
- with System.Img_BIU;   use System.Img_BIU;
- with System.Img_Int;   use System.Img_Int;
- with System.Img_LLB;   use System.Img_LLB;
- with System.Img_LLI;   use System.Img_LLI;
- with System.Img_LLW;   use System.Img_LLW;
- with System.Img_WIU;   use System.Img_WIU;
- with System.Val_Int;   use System.Val_Int;
- with System.Val_LLI;   use System.Val_LLI;
- 
- package body Ada.Text_IO.Integer_Aux is
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    procedure Load_Integer
-      (File : File_Type;
-       Buf  : out String;
-       Ptr  : in out Natural);
-    --  This is an auxiliary routine that is used to load a possibly signed
-    --  integer literal value from the input file into Buf, starting at Ptr + 1.
-    --  On return, Ptr is set to the last character stored.
- 
-    -------------
-    -- Get_Int --
-    -------------
- 
-    procedure Get_Int
-      (File  : File_Type;
-       Item  : out Integer;
-       Width : Field)
-    is
-       Buf  : String (1 .. Field'Last);
-       Ptr  : aliased Integer := 1;
-       Stop : Integer := 0;
- 
-    begin
-       if Width /= 0 then
-          Load_Width (File, Width, Buf, Stop);
-          String_Skip (Buf, Ptr);
-       else
-          Load_Integer (File, Buf, Stop);
-       end if;
- 
-       Item := Scan_Integer (Buf, Ptr'Access, Stop);
-       Check_End_Of_Field (Buf, Stop, Ptr, Width);
-    end Get_Int;
- 
-    -------------
-    -- Get_LLI --
-    -------------
- 
-    procedure Get_LLI
-      (File  : File_Type;
-       Item  : out Long_Long_Integer;
-       Width : Field)
-    is
-       Buf  : String (1 .. Field'Last);
-       Ptr  : aliased Integer := 1;
-       Stop : Integer := 0;
- 
-    begin
-       if Width /= 0 then
-          Load_Width (File, Width, Buf, Stop);
-          String_Skip (Buf, Ptr);
-       else
-          Load_Integer (File, Buf, Stop);
-       end if;
- 
-       Item := Scan_Long_Long_Integer (Buf, Ptr'Access, Stop);
-       Check_End_Of_Field (Buf, Stop, Ptr, Width);
-    end Get_LLI;
- 
-    --------------
-    -- Gets_Int --
-    --------------
- 
-    procedure Gets_Int
-      (From : String;
-       Item : out Integer;
-       Last : out Positive)
-    is
-       Pos : aliased Integer;
- 
-    begin
-       String_Skip (From, Pos);
-       Item := Scan_Integer (From, Pos'Access, From'Last);
-       Last := Pos - 1;
- 
-    exception
-       when Constraint_Error =>
-          raise Data_Error;
-    end Gets_Int;
- 
-    --------------
-    -- Gets_LLI --
-    --------------
- 
-    procedure Gets_LLI
-      (From : String;
-       Item : out Long_Long_Integer;
-       Last : out Positive)
-    is
-       Pos : aliased Integer;
- 
-    begin
-       String_Skip (From, Pos);
-       Item := Scan_Long_Long_Integer (From, Pos'Access, From'Last);
-       Last := Pos - 1;
- 
-    exception
-       when Constraint_Error =>
-          raise Data_Error;
-    end Gets_LLI;
- 
-    ------------------
-    -- Load_Integer --
-    ------------------
- 
-    procedure Load_Integer
-      (File : File_Type;
-       Buf  : out String;
-       Ptr  : in out Natural)
-    is
-       Hash_Loc : Natural;
-       Loaded   : Boolean;
- 
-    begin
-       Load_Skip (File);
-       Load (File, Buf, Ptr, '+', '-');
- 
-       Load_Digits (File, Buf, Ptr, Loaded);
- 
-       if Loaded then
- 
-          --  Deal with based literal. We recognize either the standard '#' or
-          --  the allowed alternative replacement ':' (see RM J.2(3)).
- 
-          Load (File, Buf, Ptr, '#', ':', Loaded);
- 
-          if Loaded then
-             Hash_Loc := Ptr;
-             Load_Extended_Digits (File, Buf, Ptr);
-             Load (File, Buf, Ptr, Buf (Hash_Loc));
-          end if;
- 
-          --  Deal with exponent
- 
-          Load (File, Buf, Ptr, 'E', 'e', Loaded);
- 
-          if Loaded then
- 
-             --  Note: it is strange to allow a minus sign, since the syntax
-             --  does not, but that is what ACVC test CE3704F, case (6) wants.
- 
-             Load (File, Buf, Ptr, '+', '-');
-             Load_Digits (File, Buf, Ptr);
-          end if;
-       end if;
-    end Load_Integer;
- 
-    -------------
-    -- Put_Int --
-    -------------
- 
-    procedure Put_Int
-      (File  : File_Type;
-       Item  : Integer;
-       Width : Field;
-       Base  : Number_Base)
-    is
-       Buf : String (1 .. Integer'Max (Field'Last, Width));
-       Ptr : Natural := 0;
- 
-    begin
-       if Base = 10 and then Width = 0 then
-          Set_Image_Integer (Item, Buf, Ptr);
-       elsif Base = 10 then
-          Set_Image_Width_Integer (Item, Width, Buf, Ptr);
-       else
-          Set_Image_Based_Integer (Item, Base, Width, Buf, Ptr);
-       end if;
- 
-       Put_Item (File, Buf (1 .. Ptr));
-    end Put_Int;
- 
-    -------------
-    -- Put_LLI --
-    -------------
- 
-    procedure Put_LLI
-      (File  : File_Type;
-       Item  : Long_Long_Integer;
-       Width : Field;
-       Base  : Number_Base)
-    is
-       Buf : String (1 .. Integer'Max (Field'Last, Width));
-       Ptr : Natural := 0;
- 
-    begin
-       if Base = 10 and then Width = 0 then
-          Set_Image_Long_Long_Integer (Item, Buf, Ptr);
-       elsif Base = 10 then
-          Set_Image_Width_Long_Long_Integer (Item, Width, Buf, Ptr);
-       else
-          Set_Image_Based_Long_Long_Integer (Item, Base, Width, Buf, Ptr);
-       end if;
- 
-       Put_Item (File, Buf (1 .. Ptr));
-    end Put_LLI;
- 
-    --------------
-    -- Puts_Int --
-    --------------
- 
-    procedure Puts_Int
-      (To   : out String;
-       Item : Integer;
-       Base : Number_Base)
-    is
-       Buf : String (1 .. Integer'Max (Field'Last, To'Length));
-       Ptr : Natural := 0;
- 
-    begin
-       if Base = 10 then
-          Set_Image_Width_Integer (Item, To'Length, Buf, Ptr);
-       else
-          Set_Image_Based_Integer (Item, Base, To'Length, Buf, Ptr);
-       end if;
- 
-       if Ptr > To'Length then
-          raise Layout_Error;
-       else
-          To (To'First .. To'First + Ptr - 1) := Buf (1 .. Ptr);
-       end if;
-    end Puts_Int;
- 
-    --------------
-    -- Puts_LLI --
-    --------------
- 
-    procedure Puts_LLI
-      (To   : out String;
-       Item : Long_Long_Integer;
-       Base : Number_Base)
-    is
-       Buf : String (1 .. Integer'Max (Field'Last, To'Length));
-       Ptr : Natural := 0;
- 
-    begin
-       if Base = 10 then
-          Set_Image_Width_Long_Long_Integer (Item, To'Length, Buf, Ptr);
-       else
-          Set_Image_Based_Long_Long_Integer (Item, Base, To'Length, Buf, Ptr);
-       end if;
- 
-       if Ptr > To'Length then
-          raise Layout_Error;
-       else
-          To (To'First .. To'First + Ptr - 1) := Buf (1 .. Ptr);
-       end if;
-    end Puts_LLI;
- 
- end Ada.Text_IO.Integer_Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-tiinau.ads gcc-8.1.0/gcc/ada/a-tiinau.ads
*** gcc-7.3.0/gcc/ada/a-tiinau.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-tiinau.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,83 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --              A D A . T E X T _ I O . I N T E G E R _ A U X               --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          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- --
- -- 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 routines for Ada.Text_IO.Integer_IO that are
- --  shared among separate instantiations of this package. The routines in
- --  this package are identical semantically to those in Integer_IO itself,
- --  except that the generic parameter Num has been replaced by Integer or
- --  Long_Long_Integer, and the default parameters have been removed because
- --  they are supplied explicitly by the calls from within the generic template.
- 
- private package Ada.Text_IO.Integer_Aux is
- 
-    procedure Get_Int
-      (File  : File_Type;
-       Item  : out Integer;
-       Width : Field);
- 
-    procedure Get_LLI
-      (File  : File_Type;
-       Item  : out Long_Long_Integer;
-       Width : Field);
- 
-    procedure Put_Int
-      (File  : File_Type;
-       Item  : Integer;
-       Width : Field;
-       Base  : Number_Base);
- 
-    procedure Put_LLI
-      (File  : File_Type;
-       Item  : Long_Long_Integer;
-       Width : Field;
-       Base  : Number_Base);
- 
-    procedure Gets_Int
-      (From : String;
-       Item : out Integer;
-       Last : out Positive);
- 
-    procedure Gets_LLI
-      (From : String;
-       Item : out Long_Long_Integer;
-       Last : out Positive);
- 
-    procedure Puts_Int
-      (To   : out String;
-       Item : Integer;
-       Base : Number_Base);
- 
-    procedure Puts_LLI
-      (To   : out String;
-       Item : Long_Long_Integer;
-       Base : Number_Base);
- 
- end Ada.Text_IO.Integer_Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-tiinio.adb gcc-8.1.0/gcc/ada/a-tiinio.adb
*** gcc-7.3.0/gcc/ada/a-tiinio.adb	Mon Nov 30 16:21:19 2009
--- gcc-8.1.0/gcc/ada/a-tiinio.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,154 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --               A D A . T E X T _ I O . I N T E G E R _ I O                --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          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- --
- -- 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.Text_IO.Integer_Aux;
- 
- package body Ada.Text_IO.Integer_IO is
- 
-    package Aux renames Ada.Text_IO.Integer_Aux;
- 
-    Need_LLI : constant Boolean := Num'Base'Size > Integer'Size;
-    --  Throughout this generic body, we distinguish between the case where type
-    --  Integer is acceptable, and where a Long_Long_Integer is needed. This
-    --  Boolean is used to test for these cases and since it is a constant, only
-    --  code for the relevant case will be included in the instance.
- 
-    ---------
-    -- Get --
-    ---------
- 
-    procedure Get
-      (File  : File_Type;
-       Item  : out Num;
-       Width : Field := 0)
-    is
-       --  We depend on a range check to get Data_Error
- 
-       pragma Unsuppress (Range_Check);
-       pragma Unsuppress (Overflow_Check);
- 
-    begin
-       if Need_LLI then
-          Aux.Get_LLI (File, Long_Long_Integer (Item), Width);
-       else
-          Aux.Get_Int (File, Integer (Item), Width);
-       end if;
- 
-    exception
-       when Constraint_Error => raise Data_Error;
-    end Get;
- 
-    procedure Get
-      (Item  : out Num;
-       Width : Field := 0)
-    is
-       --  We depend on a range check to get Data_Error
- 
-       pragma Unsuppress (Range_Check);
-       pragma Unsuppress (Overflow_Check);
- 
-    begin
-       if Need_LLI then
-          Aux.Get_LLI (Current_In, Long_Long_Integer (Item), Width);
-       else
-          Aux.Get_Int (Current_In, Integer (Item), Width);
-       end if;
- 
-    exception
-       when Constraint_Error => raise Data_Error;
-    end Get;
- 
-    procedure Get
-      (From : String;
-       Item : out Num;
-       Last : out Positive)
-    is
-       --  We depend on a range check to get Data_Error
- 
-       pragma Unsuppress (Range_Check);
-       pragma Unsuppress (Overflow_Check);
- 
-    begin
-       if Need_LLI then
-          Aux.Gets_LLI (From, Long_Long_Integer (Item), Last);
-       else
-          Aux.Gets_Int (From, Integer (Item), Last);
-       end if;
- 
-    exception
-       when Constraint_Error => raise Data_Error;
-    end Get;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put
-      (File  : File_Type;
-       Item  : Num;
-       Width : Field := Default_Width;
-       Base  : Number_Base := Default_Base)
-    is
-    begin
-       if Need_LLI then
-          Aux.Put_LLI (File, Long_Long_Integer (Item), Width, Base);
-       else
-          Aux.Put_Int (File, Integer (Item), Width, Base);
-       end if;
-    end Put;
- 
-    procedure Put
-      (Item  : Num;
-       Width : Field := Default_Width;
-       Base  : Number_Base := Default_Base)
-    is
-    begin
-       if Need_LLI then
-          Aux.Put_LLI (Current_Out, Long_Long_Integer (Item), Width, Base);
-       else
-          Aux.Put_Int (Current_Out, Integer (Item), Width, Base);
-       end if;
-    end Put;
- 
-    procedure Put
-      (To   : out String;
-       Item : Num;
-       Base : Number_Base := Default_Base)
-    is
-    begin
-       if Need_LLI then
-          Aux.Puts_LLI (To, Long_Long_Integer (Item), Base);
-       else
-          Aux.Puts_Int (To, Integer (Item), Base);
-       end if;
-    end Put;
- 
- end Ada.Text_IO.Integer_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-tiinio.ads gcc-8.1.0/gcc/ada/a-tiinio.ads
*** gcc-7.3.0/gcc/ada/a-tiinio.ads	Thu Jul 17 06:35:13 2014
--- gcc-8.1.0/gcc/ada/a-tiinio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,85 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --               A D A . T E X T _ I O . I N T E G E R _ I O                --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2014, Free Software Foundation, 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  In Ada 95, the package Ada.Text_IO.Integer_IO is a subpackage of Text_IO.
- --  This is for compatibility with Ada 83. In GNAT we make it a child package
- --  to avoid loading the necessary code if Integer_IO is not instantiated.
- --  See routine Rtsfind.Check_Text_IO_Special_Unit for a description of how
- --  we patch up the difference in semantics so that it is invisible to the
- --  Ada programmer.
- 
- private generic
-    type Num is range <>;
- 
- package Ada.Text_IO.Integer_IO is
- 
-    Default_Width : Field := Num'Width;
-    Default_Base  : Number_Base := 10;
- 
-    procedure Get
-      (File  : File_Type;
-       Item  : out Num;
-       Width : Field := 0);
- 
-    procedure Get
-      (Item  : out Num;
-       Width : Field := 0);
- 
-    procedure Put
-      (File  : File_Type;
-       Item  : Num;
-       Width : Field := Default_Width;
-       Base  : Number_Base := Default_Base);
- 
-    procedure Put
-      (Item  : Num;
-       Width : Field := Default_Width;
-       Base  : Number_Base := Default_Base);
- 
-    procedure Get
-      (From : String;
-       Item : out Num;
-       Last : out Positive);
- 
-    procedure Put
-      (To   : out String;
-       Item : Num;
-       Base : Number_Base := Default_Base);
- 
- private
-    pragma Inline (Get);
-    pragma Inline (Put);
- 
- end Ada.Text_IO.Integer_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-timoau.adb gcc-8.1.0/gcc/ada/a-timoau.adb
*** gcc-7.3.0/gcc/ada/a-timoau.adb	Tue Jan  6 09:24:33 2015
--- gcc-8.1.0/gcc/ada/a-timoau.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,305 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --              A D A . T E X T _ I O . M O D U L A R  _ A U X              --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Text_IO.Generic_Aux; use Ada.Text_IO.Generic_Aux;
- 
- with System.Img_BIU; use System.Img_BIU;
- with System.Img_Uns; use System.Img_Uns;
- with System.Img_LLB; use System.Img_LLB;
- with System.Img_LLU; use System.Img_LLU;
- with System.Img_LLW; use System.Img_LLW;
- with System.Img_WIU; use System.Img_WIU;
- with System.Val_Uns; use System.Val_Uns;
- with System.Val_LLU; use System.Val_LLU;
- 
- package body Ada.Text_IO.Modular_Aux is
- 
-    use System.Unsigned_Types;
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    procedure Load_Modular
-      (File : File_Type;
-       Buf  : out String;
-       Ptr  : in out Natural);
-    --  This is an auxiliary routine that is used to load an possibly signed
-    --  modular literal value from the input file into Buf, starting at Ptr + 1.
-    --  Ptr is left set to the last character stored.
- 
-    -------------
-    -- Get_LLU --
-    -------------
- 
-    procedure Get_LLU
-      (File  : File_Type;
-       Item  : out Long_Long_Unsigned;
-       Width : Field)
-    is
-       Buf  : String (1 .. Field'Last);
-       Stop : Integer := 0;
-       Ptr  : aliased Integer := 1;
- 
-    begin
-       if Width /= 0 then
-          Load_Width (File, Width, Buf, Stop);
-          String_Skip (Buf, Ptr);
-       else
-          Load_Modular (File, Buf, Stop);
-       end if;
- 
-       Item := Scan_Long_Long_Unsigned (Buf, Ptr'Access, Stop);
-       Check_End_Of_Field (Buf, Stop, Ptr, Width);
-    end Get_LLU;
- 
-    -------------
-    -- Get_Uns --
-    -------------
- 
-    procedure Get_Uns
-      (File  : File_Type;
-       Item  : out Unsigned;
-       Width : Field)
-    is
-       Buf  : String (1 .. Field'Last);
-       Stop : Integer := 0;
-       Ptr  : aliased Integer := 1;
- 
-    begin
-       if Width /= 0 then
-          Load_Width (File, Width, Buf, Stop);
-          String_Skip (Buf, Ptr);
-       else
-          Load_Modular (File, Buf, Stop);
-       end if;
- 
-       Item := Scan_Unsigned (Buf, Ptr'Access, Stop);
-       Check_End_Of_Field (Buf, Stop, Ptr, Width);
-    end Get_Uns;
- 
-    --------------
-    -- Gets_LLU --
-    --------------
- 
-    procedure Gets_LLU
-      (From : String;
-       Item : out Long_Long_Unsigned;
-       Last : out Positive)
-    is
-       Pos : aliased Integer;
- 
-    begin
-       String_Skip (From, Pos);
-       Item := Scan_Long_Long_Unsigned (From, Pos'Access, From'Last);
-       Last := Pos - 1;
- 
-    exception
-       when Constraint_Error =>
-          raise Data_Error;
-    end Gets_LLU;
- 
-    --------------
-    -- Gets_Uns --
-    --------------
- 
-    procedure Gets_Uns
-      (From : String;
-       Item : out Unsigned;
-       Last : out Positive)
-    is
-       Pos : aliased Integer;
- 
-    begin
-       String_Skip (From, Pos);
-       Item := Scan_Unsigned (From, Pos'Access, From'Last);
-       Last := Pos - 1;
- 
-    exception
-       when Constraint_Error =>
-          raise Data_Error;
-    end Gets_Uns;
- 
-    ------------------
-    -- Load_Modular --
-    ------------------
- 
-    procedure Load_Modular
-      (File : File_Type;
-       Buf  : out String;
-       Ptr  : in out Natural)
-    is
-       Hash_Loc : Natural;
-       Loaded   : Boolean;
- 
-    begin
-       Load_Skip (File);
- 
-       --  Note: it is a bit strange to allow a minus sign here, but it seems
-       --  consistent with the general behavior expected by the ACVC tests
-       --  which is to scan past junk and then signal data error, see ACVC
-       --  test CE3704F, case (6), which is for signed integer exponents,
-       --  which seems a similar case.
- 
-       Load (File, Buf, Ptr, '+', '-');
-       Load_Digits (File, Buf, Ptr, Loaded);
- 
-       if Loaded then
- 
-          --  Deal with based case. We recognize either the standard '#' or the
-          --  allowed alternative replacement ':' (see RM J.2(3)).
- 
-          Load (File, Buf, Ptr, '#', ':', Loaded);
- 
-          if Loaded then
-             Hash_Loc := Ptr;
-             Load_Extended_Digits (File, Buf, Ptr);
-             Load (File, Buf, Ptr, Buf (Hash_Loc));
-          end if;
- 
-          Load (File, Buf, Ptr, 'E', 'e', Loaded);
- 
-          if Loaded then
- 
-             --  Note: it is strange to allow a minus sign, since the syntax
-             --  does not, but that is what ACVC test CE3704F, case (6) wants
-             --  for the signed case, and there seems no good reason to treat
-             --  exponents differently for the signed and unsigned cases.
- 
-             Load (File, Buf, Ptr, '+', '-');
-             Load_Digits (File, Buf, Ptr);
-          end if;
-       end if;
-    end Load_Modular;
- 
-    -------------
-    -- Put_LLU --
-    -------------
- 
-    procedure Put_LLU
-      (File  : File_Type;
-       Item  : Long_Long_Unsigned;
-       Width : Field;
-       Base  : Number_Base)
-    is
-       Buf : String (1 .. Field'Last);
-       Ptr : Natural := 0;
- 
-    begin
-       if Base = 10 and then Width = 0 then
-          Set_Image_Long_Long_Unsigned (Item, Buf, Ptr);
-       elsif Base = 10 then
-          Set_Image_Width_Long_Long_Unsigned (Item, Width, Buf, Ptr);
-       else
-          Set_Image_Based_Long_Long_Unsigned (Item, Base, Width, Buf, Ptr);
-       end if;
- 
-       Put_Item (File, Buf (1 .. Ptr));
-    end Put_LLU;
- 
-    -------------
-    -- Put_Uns --
-    -------------
- 
-    procedure Put_Uns
-      (File  : File_Type;
-       Item  : Unsigned;
-       Width : Field;
-       Base  : Number_Base)
-    is
-       Buf : String (1 .. Field'Last);
-       Ptr : Natural := 0;
- 
-    begin
-       if Base = 10 and then Width = 0 then
-          Set_Image_Unsigned (Item, Buf, Ptr);
-       elsif Base = 10 then
-          Set_Image_Width_Unsigned (Item, Width, Buf, Ptr);
-       else
-          Set_Image_Based_Unsigned (Item, Base, Width, Buf, Ptr);
-       end if;
- 
-       Put_Item (File, Buf (1 .. Ptr));
-    end Put_Uns;
- 
-    --------------
-    -- Puts_LLU --
-    --------------
- 
-    procedure Puts_LLU
-      (To   : out String;
-       Item : Long_Long_Unsigned;
-       Base : Number_Base)
-    is
-       Buf : String (1 .. Field'Last);
-       Ptr : Natural := 0;
- 
-    begin
-       if Base = 10 then
-          Set_Image_Width_Long_Long_Unsigned (Item, To'Length, Buf, Ptr);
-       else
-          Set_Image_Based_Long_Long_Unsigned (Item, Base, To'Length, Buf, Ptr);
-       end if;
- 
-       if Ptr > To'Length then
-          raise Layout_Error;
-       else
-          To (To'First .. To'First + Ptr - 1) := Buf (1 .. Ptr);
-       end if;
-    end Puts_LLU;
- 
-    --------------
-    -- Puts_Uns --
-    --------------
- 
-    procedure Puts_Uns
-      (To   : out String;
-       Item : Unsigned;
-       Base : Number_Base)
-    is
-       Buf : String (1 .. Field'Last);
-       Ptr : Natural := 0;
- 
-    begin
-       if Base = 10 then
-          Set_Image_Width_Unsigned (Item, To'Length, Buf, Ptr);
-       else
-          Set_Image_Based_Unsigned (Item, Base, To'Length, Buf, Ptr);
-       end if;
- 
-       if Ptr > To'Length then
-          raise Layout_Error;
-       else
-          To (To'First .. To'First + Ptr - 1) := Buf (1 .. Ptr);
-       end if;
-    end Puts_Uns;
- 
- end Ada.Text_IO.Modular_Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-timoau.ads gcc-8.1.0/gcc/ada/a-timoau.ads
*** gcc-7.3.0/gcc/ada/a-timoau.ads	Fri Aug  1 08:32:27 2014
--- gcc-8.1.0/gcc/ada/a-timoau.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,87 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --              A D A . T E X T _ I O . M O D U L A R _ A U X               --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 routines for Ada.Text_IO.Modular_IO that are
- --  shared among separate instantiations of this package. The routines in
- --  this package are identical semantically to those in Modular_IO itself,
- --  except that the generic parameter Num has been replaced by Unsigned or
- --  Long_Long_Unsigned, and the default parameters have been removed because
- --  they are supplied explicitly by the calls from within the generic template.
- 
- with System.Unsigned_Types;
- 
- private package Ada.Text_IO.Modular_Aux is
- 
-    package U renames System.Unsigned_Types;
- 
-    procedure Get_Uns
-      (File  : File_Type;
-       Item  : out U.Unsigned;
-       Width : Field);
- 
-    procedure Get_LLU
-      (File  : File_Type;
-       Item  : out U.Long_Long_Unsigned;
-       Width : Field);
- 
-    procedure Put_Uns
-      (File  : File_Type;
-       Item  : U.Unsigned;
-       Width : Field;
-       Base  : Number_Base);
- 
-    procedure Put_LLU
-      (File  : File_Type;
-       Item  : U.Long_Long_Unsigned;
-       Width : Field;
-       Base  : Number_Base);
- 
-    procedure Gets_Uns
-      (From : String;
-       Item : out U.Unsigned;
-       Last : out Positive);
- 
-    procedure Gets_LLU
-      (From : String;
-       Item : out U.Long_Long_Unsigned;
-       Last : out Positive);
- 
-    procedure Puts_Uns
-      (To   : out String;
-       Item : U.Unsigned;
-       Base : Number_Base);
- 
-    procedure Puts_LLU
-      (To   : out String;
-       Item : U.Long_Long_Unsigned;
-       Base : Number_Base);
- 
- end Ada.Text_IO.Modular_Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-timoio.adb gcc-8.1.0/gcc/ada/a-timoio.adb
*** gcc-7.3.0/gcc/ada/a-timoio.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-timoio.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,141 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --               A D A . T E X T _ I O . M O D U L A R _ I O                --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          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- --
- -- 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.Text_IO.Modular_Aux;
- 
- with System.Unsigned_Types; use System.Unsigned_Types;
- 
- package body Ada.Text_IO.Modular_IO is
- 
-    package Aux renames Ada.Text_IO.Modular_Aux;
- 
-    ---------
-    -- Get --
-    ---------
- 
-    procedure Get
-      (File  : File_Type;
-       Item  : out Num;
-       Width : Field := 0)
-    is
-       pragma Unsuppress (Range_Check);
- 
-    begin
-       if Num'Size > Unsigned'Size then
-          Aux.Get_LLU (File, Long_Long_Unsigned (Item), Width);
-       else
-          Aux.Get_Uns (File, Unsigned (Item), Width);
-       end if;
- 
-    exception
-       when Constraint_Error => raise Data_Error;
-    end Get;
- 
-    procedure Get
-      (Item  : out Num;
-       Width : Field := 0)
-    is
-       pragma Unsuppress (Range_Check);
- 
-    begin
-       if Num'Size > Unsigned'Size then
-          Aux.Get_LLU (Current_In, Long_Long_Unsigned (Item), Width);
-       else
-          Aux.Get_Uns (Current_In, Unsigned (Item), Width);
-       end if;
- 
-    exception
-       when Constraint_Error => raise Data_Error;
-    end Get;
- 
-    procedure Get
-      (From : String;
-       Item : out Num;
-       Last : out Positive)
-    is
-       pragma Unsuppress (Range_Check);
- 
-    begin
-       if Num'Size > Unsigned'Size then
-          Aux.Gets_LLU (From, Long_Long_Unsigned (Item), Last);
-       else
-          Aux.Gets_Uns (From, Unsigned (Item), Last);
-       end if;
- 
-    exception
-       when Constraint_Error => raise Data_Error;
-    end Get;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put
-      (File  : File_Type;
-       Item  : Num;
-       Width : Field := Default_Width;
-       Base  : Number_Base := Default_Base)
-    is
-    begin
-       if Num'Size > Unsigned'Size then
-          Aux.Put_LLU (File, Long_Long_Unsigned (Item), Width, Base);
-       else
-          Aux.Put_Uns (File, Unsigned (Item), Width, Base);
-       end if;
-    end Put;
- 
-    procedure Put
-      (Item  : Num;
-       Width : Field := Default_Width;
-       Base  : Number_Base := Default_Base)
-    is
-    begin
-       if Num'Size > Unsigned'Size then
-          Aux.Put_LLU (Current_Out, Long_Long_Unsigned (Item), Width, Base);
-       else
-          Aux.Put_Uns (Current_Out, Unsigned (Item), Width, Base);
-       end if;
-    end Put;
- 
-    procedure Put
-      (To   : out String;
-       Item : Num;
-       Base : Number_Base := Default_Base)
-    is
-    begin
-       if Num'Size > Unsigned'Size then
-          Aux.Puts_LLU (To, Long_Long_Unsigned (Item), Base);
-       else
-          Aux.Puts_Uns (To, Unsigned (Item), Base);
-       end if;
-    end Put;
- 
- end Ada.Text_IO.Modular_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-timoio.ads gcc-8.1.0/gcc/ada/a-timoio.ads
*** gcc-7.3.0/gcc/ada/a-timoio.ads	Thu Jul 17 06:35:13 2014
--- gcc-8.1.0/gcc/ada/a-timoio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,85 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --               A D A . T E X T _ I O . M O D U L A R _ I O                --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1993-2014, Free Software Foundation, 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  In Ada 95, the package Ada.Text_IO.Modular_IO is a subpackage of Text_IO.
- --  This is for compatibility with Ada 83. In GNAT we make it a child package
- --  to avoid loading the necessary code if Modular_IO is not instantiated.
- --  See routine Rtsfind.Check_Text_IO_Special_Unit for a description of how
- --  we patch up the difference in semantics so that it is invisible to the
- --  Ada programmer.
- 
- private generic
-    type Num is mod <>;
- 
- package Ada.Text_IO.Modular_IO is
- 
-    Default_Width : Field := Num'Width;
-    Default_Base  : Number_Base := 10;
- 
-    procedure Get
-      (File  : File_Type;
-       Item  : out Num;
-       Width : Field := 0);
- 
-    procedure Get
-      (Item  : out Num;
-       Width : Field := 0);
- 
-    procedure Put
-      (File  : File_Type;
-       Item  : Num;
-       Width : Field := Default_Width;
-       Base  : Number_Base := Default_Base);
- 
-    procedure Put
-      (Item  : Num;
-       Width : Field := Default_Width;
-       Base  : Number_Base := Default_Base);
- 
-    procedure Get
-      (From : String;
-       Item : out Num;
-       Last : out Positive);
- 
-    procedure Put
-      (To   : out String;
-       Item : Num;
-       Base : Number_Base := Default_Base);
- 
- private
-    pragma Inline (Get);
-    pragma Inline (Put);
- 
- end Ada.Text_IO.Modular_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-tiocst.adb gcc-8.1.0/gcc/ada/a-tiocst.adb
*** gcc-7.3.0/gcc/ada/a-tiocst.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-tiocst.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,84 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                A D A . T E X T _ I O . C _ S T R E A M S                 --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          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- --
- -- 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 Interfaces.C_Streams; use Interfaces.C_Streams;
- with System.File_IO;
- with System.File_Control_Block;
- with Ada.Unchecked_Conversion;
- 
- package body Ada.Text_IO.C_Streams is
- 
-    package FIO renames System.File_IO;
-    package FCB renames System.File_Control_Block;
- 
-    subtype AP is FCB.AFCB_Ptr;
- 
-    function To_FCB is new Ada.Unchecked_Conversion (File_Mode, FCB.File_Mode);
- 
-    --------------
-    -- C_Stream --
-    --------------
- 
-    function C_Stream (F : File_Type) return FILEs is
-    begin
-       FIO.Check_File_Open (AP (F));
-       return F.Stream;
-    end C_Stream;
- 
-    ----------
-    -- Open --
-    ----------
- 
-    procedure Open
-      (File     : in out File_Type;
-       Mode     : File_Mode;
-       C_Stream : FILEs;
-       Form     : String := "";
-       Name     : String := "")
-    is
-       Dummy_File_Control_Block : Text_AFCB;
-       pragma Warnings (Off, Dummy_File_Control_Block);
-       --  Yes, we know this is never assigned a value, only the tag
-       --  is used for dispatching purposes, so that's expected.
- 
-    begin
-       FIO.Open (File_Ptr  => AP (File),
-                 Dummy_FCB => Dummy_File_Control_Block,
-                 Mode      => To_FCB (Mode),
-                 Name      => Name,
-                 Form      => Form,
-                 Amethod   => 'T',
-                 Creat     => False,
-                 Text      => True,
-                 C_Stream  => C_Stream);
-    end Open;
- 
- end Ada.Text_IO.C_Streams;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-tiocst.ads gcc-8.1.0/gcc/ada/a-tiocst.ads
*** gcc-7.3.0/gcc/ada/a-tiocst.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-tiocst.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,53 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                A D A . T E X T _ I O . C _ S T R E A M S                 --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          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- --
- -- 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 an interface between Ada.Text_IO and the
- --  C streams. This allows sharing of a stream between Ada and C or C++,
- --  as well as allowing the Ada program to operate directly on the stream.
- 
- with Interfaces.C_Streams;
- 
- package Ada.Text_IO.C_Streams is
- 
-    package ICS renames Interfaces.C_Streams;
- 
-    function C_Stream (F : File_Type) return ICS.FILEs;
-    --  Obtain stream from existing open file
- 
-    procedure Open
-      (File     : in out File_Type;
-       Mode     : File_Mode;
-       C_Stream : ICS.FILEs;
-       Form     : String := "";
-       Name     : String := "");
-    --  Create new file from existing stream
- 
- end Ada.Text_IO.C_Streams;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-tirsfi.adb gcc-8.1.0/gcc/ada/a-tirsfi.adb
*** gcc-7.3.0/gcc/ada/a-tirsfi.adb	Fri Jan  4 12:49:55 2013
--- gcc-8.1.0/gcc/ada/a-tirsfi.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,39 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --     A D A . T E X T _ I O . R E S E T _ S T A N D A R D _ F I L E S      --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --            Copyright (C) 2009-2012, Free Software Foundation, Inc.       --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --------------------------------------
- -- Ada.Text_IO.Reset_Standard_Files --
- --------------------------------------
- 
- procedure Ada.Text_IO.Reset_Standard_Files is
- begin
-    Ada.Text_IO.Initialize_Standard_Files;
- end Ada.Text_IO.Reset_Standard_Files;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-tirsfi.ads gcc-8.1.0/gcc/ada/a-tirsfi.ads
*** gcc-7.3.0/gcc/ada/a-tirsfi.ads	Fri Jan  4 12:49:55 2013
--- gcc-8.1.0/gcc/ada/a-tirsfi.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,40 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --     A D A . T E X T _ I O . R E S E T _ S T A N D A R D _ F I L E S      --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --            Copyright (C) 2009-2012, Free Software Foundation, Inc.       --
- --                                                                          --
- -- GNAT is 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 a reset routine that resets the standard files used
- --  by Text_IO. This is useful in systems such as VxWorks where Ada.Text_IO is
- --  elaborated at the program start, but a system restart may alter the status
- --  of these files, resulting in incorrect operation of Text_IO (in particular
- --  if the standard input file is changed to be interactive, then Get_Line may
- --  hang looking for an extra character after the end of the line.
- 
- procedure Ada.Text_IO.Reset_Standard_Files;
- --  Reset standard Text_IO files as described above
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-titest.adb gcc-8.1.0/gcc/ada/a-titest.adb
*** gcc-7.3.0/gcc/ada/a-titest.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-titest.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,46 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --             A D A . T E X T _ I O . T E X T _ S T R E A M S              --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          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- --
- -- 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 System.File_IO;
- 
- package body Ada.Text_IO.Text_Streams is
- 
-    ------------
-    -- Stream --
-    ------------
- 
-    function Stream (File : File_Type) return Stream_Access is
-    begin
-       System.File_IO.Check_File_Open (FCB.AFCB_Ptr (File));
-       return Stream_Access (File);
-    end Stream;
- 
- end Ada.Text_IO.Text_Streams;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-titest.ads gcc-8.1.0/gcc/ada/a-titest.ads
*** gcc-7.3.0/gcc/ada/a-titest.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-titest.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,23 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --             A D A . T E X T _ I O . T E X T _ S T R E A M S              --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Streams;
- package Ada.Text_IO.Text_Streams is
- 
-    type Stream_Access is access all Streams.Root_Stream_Type'Class;
- 
-    function Stream (File : File_Type) return Stream_Access;
- 
- end Ada.Text_IO.Text_Streams;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-tiunio.ads gcc-8.1.0/gcc/ada/a-tiunio.ads
*** gcc-7.3.0/gcc/ada/a-tiunio.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-tiunio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,61 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --              A D A . T E X T _ I O . U N B O U N D E D _ I O             --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Note: historically GNAT provided these subprograms as a child of the
- --  package Ada.Strings.Unbounded. So we implement this new Ada 2005 package
- --  by renaming the subprograms in that child. This is a more straightforward
- --  implementation anyway, since we need access to the internal representation
- --  of Ada.Strings.Unbounded.Unbounded_String.
- 
- with Ada.Strings.Unbounded;
- with Ada.Strings.Unbounded.Text_IO;
- 
- package Ada.Text_IO.Unbounded_IO is
- 
-    procedure Put
-      (File : File_Type;
-       Item : Strings.Unbounded.Unbounded_String)
-    renames Ada.Strings.Unbounded.Text_IO.Put;
- 
-    procedure Put
-      (Item : Strings.Unbounded.Unbounded_String)
-    renames Ada.Strings.Unbounded.Text_IO.Put;
- 
-    procedure Put_Line
-      (File : Text_IO.File_Type;
-       Item : Strings.Unbounded.Unbounded_String)
-    renames Ada.Strings.Unbounded.Text_IO.Put_Line;
- 
-    procedure Put_Line
-      (Item : Strings.Unbounded.Unbounded_String)
-    renames Ada.Strings.Unbounded.Text_IO.Put_Line;
- 
-    function Get_Line
-      (File : File_Type) return Strings.Unbounded.Unbounded_String
-    renames Ada.Strings.Unbounded.Text_IO.Get_Line;
- 
-    function Get_Line return Strings.Unbounded.Unbounded_String
-    renames Ada.Strings.Unbounded.Text_IO.Get_Line;
- 
-    procedure Get_Line
-       (File : File_Type;
-        Item : out Strings.Unbounded.Unbounded_String)
-    renames Ada.Strings.Unbounded.Text_IO.Get_Line;
- 
-    procedure Get_Line
-      (Item : out Strings.Unbounded.Unbounded_String)
-    renames Ada.Strings.Unbounded.Text_IO.Get_Line;
- 
- end Ada.Text_IO.Unbounded_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-unccon.ads gcc-8.1.0/gcc/ada/a-unccon.ads
*** gcc-7.3.0/gcc/ada/a-unccon.ads	Fri Jan  6 10:33:48 2017
--- gcc-8.1.0/gcc/ada/a-unccon.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,24 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --              A D A . U N C H E C K E D _ C O N V E R S I O N             --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- generic
-    type Source (<>) is limited private;
-    type Target (<>) is limited private;
- 
- function Ada.Unchecked_Conversion (S : Source) return Target;
- 
- pragma No_Elaboration_Code_All (Unchecked_Conversion);
- pragma Pure (Unchecked_Conversion);
- pragma Import (Intrinsic, Unchecked_Conversion);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-uncdea.ads gcc-8.1.0/gcc/ada/a-uncdea.ads
*** gcc-7.3.0/gcc/ada/a-uncdea.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-uncdea.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,23 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --           A D A . U N C H E C K E D _ D E A L L O C A T I O N            --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- generic
-    type Object (<>) is limited private;
-    type Name is access Object;
- 
- procedure Ada.Unchecked_Deallocation (X : in out Name);
- pragma Preelaborate (Unchecked_Deallocation);
- 
- pragma Import (Intrinsic, Unchecked_Deallocation);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-undesu.adb gcc-8.1.0/gcc/ada/a-undesu.adb
*** gcc-7.3.0/gcc/ada/a-undesu.adb	Mon Aug 29 12:21:49 2011
--- gcc-8.1.0/gcc/ada/a-undesu.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,43 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --     A D A . U N C H E C K E D _ D E A L L O C A T E _ S U B P O O L      --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --            Copyright (C) 2011, Free Software Foundation, Inc.            --
- --                                                                          --
- -- GNAT is 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 System.Storage_Pools.Subpools,
-      System.Storage_Pools.Subpools.Finalization;
- 
- use System.Storage_Pools.Subpools,
-     System.Storage_Pools.Subpools.Finalization;
- 
- procedure Ada.Unchecked_Deallocate_Subpool
-   (Subpool : in out System.Storage_Pools.Subpools.Subpool_Handle)
- is
- begin
-    Finalize_And_Deallocate (Subpool);
- end Ada.Unchecked_Deallocate_Subpool;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-undesu.ads gcc-8.1.0/gcc/ada/a-undesu.ads
*** gcc-7.3.0/gcc/ada/a-undesu.ads	Mon Aug 29 12:21:49 2011
--- gcc-8.1.0/gcc/ada/a-undesu.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,19 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --     A D A . U N C H E C K E D _ D E A L L O C A T E _ S U B P O O L      --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with System.Storage_Pools.Subpools;
- 
- procedure Ada.Unchecked_Deallocate_Subpool
-   (Subpool : in out System.Storage_Pools.Subpools.Subpool_Handle);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-wichha.adb gcc-8.1.0/gcc/ada/a-wichha.adb
*** gcc-7.3.0/gcc/ada/a-wichha.adb	Mon Jan 27 16:35:08 2014
--- gcc-8.1.0/gcc/ada/a-wichha.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,195 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --         A D A . W I D E _ C H A R A C T E R S . H A N D L I N G          --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2010-2013, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Wide_Characters.Unicode; use Ada.Wide_Characters.Unicode;
- 
- package body Ada.Wide_Characters.Handling is
- 
-    ---------------------------
-    -- Character_Set_Version --
-    ---------------------------
- 
-    function Character_Set_Version return String is
-    begin
-       return "Unicode 4.0";
-    end Character_Set_Version;
- 
-    ---------------------
-    -- Is_Alphanumeric --
-    ---------------------
- 
-    function Is_Alphanumeric (Item : Wide_Character) return Boolean is
-    begin
-       return Is_Letter (Item) or else Is_Digit (Item);
-    end Is_Alphanumeric;
- 
-    ----------------
-    -- Is_Control --
-    ----------------
- 
-    function Is_Control (Item : Wide_Character) return Boolean is
-    begin
-       return Get_Category (Item) = Cc;
-    end Is_Control;
- 
-    --------------
-    -- Is_Digit --
-    --------------
- 
-    function Is_Digit (Item : Wide_Character) return Boolean
-      renames Ada.Wide_Characters.Unicode.Is_Digit;
- 
-    ----------------
-    -- Is_Graphic --
-    ----------------
- 
-    function Is_Graphic (Item : Wide_Character) return Boolean is
-    begin
-       return not Is_Non_Graphic (Item);
-    end Is_Graphic;
- 
-    --------------------------
-    -- Is_Hexadecimal_Digit --
-    --------------------------
- 
-    function Is_Hexadecimal_Digit (Item : Wide_Character) return Boolean is
-    begin
-       return Is_Digit (Item)
-         or else Item in 'A' .. 'F'
-         or else Item in 'a' .. 'f';
-    end Is_Hexadecimal_Digit;
- 
-    ---------------
-    -- Is_Letter --
-    ---------------
- 
-    function Is_Letter (Item : Wide_Character) return Boolean
-      renames Ada.Wide_Characters.Unicode.Is_Letter;
- 
-    ------------------------
-    -- Is_Line_Terminator --
-    ------------------------
- 
-    function Is_Line_Terminator (Item : Wide_Character) return Boolean
-      renames Ada.Wide_Characters.Unicode.Is_Line_Terminator;
- 
-    --------------
-    -- Is_Lower --
-    --------------
- 
-    function Is_Lower (Item : Wide_Character) return Boolean is
-    begin
-       return Get_Category (Item) = Ll;
-    end Is_Lower;
- 
-    -------------
-    -- Is_Mark --
-    -------------
- 
-    function Is_Mark (Item : Wide_Character) return Boolean
-      renames Ada.Wide_Characters.Unicode.Is_Mark;
- 
-    ---------------------
-    -- Is_Other_Format --
-    ---------------------
- 
-    function Is_Other_Format (Item : Wide_Character) return Boolean
-      renames Ada.Wide_Characters.Unicode.Is_Other;
- 
-    ------------------------------
-    -- Is_Punctuation_Connector --
-    ------------------------------
- 
-    function Is_Punctuation_Connector (Item : Wide_Character) return Boolean
-      renames Ada.Wide_Characters.Unicode.Is_Punctuation;
- 
-    --------------
-    -- Is_Space --
-    --------------
- 
-    function Is_Space (Item : Wide_Character) return Boolean
-      renames Ada.Wide_Characters.Unicode.Is_Space;
- 
-    ----------------
-    -- Is_Special --
-    ----------------
- 
-    function Is_Special (Item : Wide_Character) return Boolean is
-    begin
-       return Is_Graphic (Item) and then not Is_Alphanumeric (Item);
-    end Is_Special;
- 
-    --------------
-    -- Is_Upper --
-    --------------
- 
-    function Is_Upper (Item : Wide_Character) return Boolean is
-    begin
-       return Get_Category (Item) = Lu;
-    end Is_Upper;
- 
-    --------------
-    -- To_Lower --
-    --------------
- 
-    function To_Lower (Item : Wide_Character) return Wide_Character
-      renames Ada.Wide_Characters.Unicode.To_Lower_Case;
- 
-    function To_Lower (Item : Wide_String) return Wide_String is
-       Result : Wide_String (Item'Range);
- 
-    begin
-       for J in Result'Range loop
-          Result (J) := To_Lower (Item (J));
-       end loop;
- 
-       return Result;
-    end To_Lower;
- 
-    --------------
-    -- To_Upper --
-    --------------
- 
-    function To_Upper (Item : Wide_Character) return Wide_Character
-      renames Ada.Wide_Characters.Unicode.To_Upper_Case;
- 
-    function To_Upper (Item : Wide_String) return Wide_String is
-       Result : Wide_String (Item'Range);
- 
-    begin
-       for J in Result'Range loop
-          Result (J) := To_Upper (Item (J));
-       end loop;
- 
-       return Result;
-    end To_Upper;
- 
- end Ada.Wide_Characters.Handling;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-wichha.ads gcc-8.1.0/gcc/ada/a-wichha.ads
*** gcc-7.3.0/gcc/ada/a-wichha.ads	Mon Oct 14 12:45:14 2013
--- gcc-8.1.0/gcc/ada/a-wichha.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,127 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --         A D A . W I D E _ C H A R A C T E R S . H A N D L I N G          --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- package Ada.Wide_Characters.Handling is
-    pragma Pure;
- 
-    function Character_Set_Version return String;
-    pragma Inline (Character_Set_Version);
-    --  Returns an implementation-defined identifier that identifies the version
-    --  of the character set standard that is used for categorizing characters
-    --  by the implementation. For GNAT this is "Unicode v.v".
- 
-    function Is_Control (Item : Wide_Character) return Boolean;
-    pragma Inline (Is_Control);
-    --  Returns True if the Wide_Character designated by Item is categorized as
-    --  other_control, otherwise returns false.
- 
-    function Is_Letter (Item : Wide_Character) return Boolean;
-    pragma Inline (Is_Letter);
-    --  Returns True if the Wide_Character designated by Item is categorized as
-    --  letter_uppercase, letter_lowercase, letter_titlecase, letter_modifier,
-    --  letter_other, or number_letter. Otherwise returns false.
- 
-    function Is_Lower (Item : Wide_Character) return Boolean;
-    pragma Inline (Is_Lower);
-    --  Returns True if the Wide_Character designated by Item is categorized as
-    --  letter_lowercase, otherwise returns false.
- 
-    function Is_Upper (Item : Wide_Character) return Boolean;
-    pragma Inline (Is_Upper);
-    --  Returns True if the Wide_Character designated by Item is categorized as
-    --  letter_uppercase, otherwise returns false.
- 
-    function Is_Digit (Item : Wide_Character) return Boolean;
-    pragma Inline (Is_Digit);
-    --  Returns True if the Wide_Character designated by Item is categorized as
-    --  number_decimal, otherwise returns false.
- 
-    function Is_Decimal_Digit (Item : Wide_Character) return Boolean
-      renames Is_Digit;
- 
-    function Is_Hexadecimal_Digit (Item : Wide_Character) return Boolean;
-    --  Returns True if the Wide_Character designated by Item is categorized as
-    --  number_decimal, or is in the range 'A' .. 'F' or 'a' .. 'f', otherwise
-    --  returns false.
- 
-    function Is_Alphanumeric (Item : Wide_Character) return Boolean;
-    pragma Inline (Is_Alphanumeric);
-    --  Returns True if the Wide_Character designated by Item is categorized as
-    --  number_decimal, or is in the range 'A' .. 'F' or 'a' .. 'f', otherwise
-    --  returns false.
- 
-    function Is_Special (Item : Wide_Character) return Boolean;
-    pragma Inline (Is_Special);
-    --  Returns True if the Wide_Character designated by Item is categorized
-    --  as graphic_character, but not categorized as letter_uppercase,
-    --  letter_lowercase, letter_titlecase, letter_modifier, letter_other,
-    --  number_letter, or number_decimal. Otherwise returns false.
- 
-    function Is_Line_Terminator (Item : Wide_Character) return Boolean;
-    pragma Inline (Is_Line_Terminator);
-    --  Returns True if the Wide_Character designated by Item is categorized as
-    --  separator_line or separator_paragraph, or if Item is a conventional line
-    --  terminator character (CR, LF, VT, or FF). Otherwise returns false.
- 
-    function Is_Mark (Item : Wide_Character) return Boolean;
-    pragma Inline (Is_Mark);
-    --  Returns True if the Wide_Character designated by Item is categorized as
-    --  mark_non_spacing or mark_spacing_combining, otherwise returns false.
- 
-    function Is_Other_Format (Item : Wide_Character) return Boolean;
-    pragma Inline (Is_Other_Format);
-    --  Returns True if the Wide_Character designated by Item is categorized as
-    --  other_format, otherwise returns false.
- 
-    function Is_Punctuation_Connector (Item : Wide_Character) return Boolean;
-    pragma Inline (Is_Punctuation_Connector);
-    --  Returns True if the Wide_Character designated by Item is categorized as
-    --  punctuation_connector, otherwise returns false.
- 
-    function Is_Space (Item : Wide_Character) return Boolean;
-    pragma Inline (Is_Space);
-    --  Returns True if the Wide_Character designated by Item is categorized as
-    --  separator_space, otherwise returns false.
- 
-    function Is_Graphic (Item : Wide_Character) return Boolean;
-    pragma Inline (Is_Graphic);
-    --  Returns True if the Wide_Character designated by Item is categorized as
-    --  graphic_character, otherwise returns false.
- 
-    function To_Lower (Item : Wide_Character) return Wide_Character;
-    pragma Inline (To_Lower);
-    --  Returns the Simple Lowercase Mapping of the Wide_Character designated by
-    --  Item. If the Simple Lowercase Mapping does not exist for the
-    --  Wide_Character designated by Item, then the value of Item is returned.
- 
-    function To_Lower (Item : Wide_String) return Wide_String;
-    --  Returns the result of applying the To_Lower Wide_Character to
-    --  Wide_Character conversion to each element of the Wide_String designated
-    --  by Item. The result is the null Wide_String if the value of the formal
-    --  parameter is the null Wide_String.
- 
-    function To_Upper (Item : Wide_Character) return Wide_Character;
-    pragma Inline (To_Upper);
-    --  Returns the Simple Uppercase Mapping of the Wide_Character designated by
-    --  Item. If the Simple Uppercase Mapping does not exist for the
-    --  Wide_Character designated by Item, then the value of Item is returned.
- 
-    function To_Upper (Item : Wide_String) return Wide_String;
-    --  Returns the result of applying the To_Upper Wide_Character to
-    --  Wide_Character conversion to each element of the Wide_String designated
-    --  by Item. The result is the null Wide_String if the value of the formal
-    --  parameter is the null Wide_String.
- 
- end Ada.Wide_Characters.Handling;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-wichun.adb gcc-8.1.0/gcc/ada/a-wichun.adb
*** gcc-7.3.0/gcc/ada/a-wichun.adb	Thu Oct  7 09:26:27 2010
--- gcc-8.1.0/gcc/ada/a-wichun.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,178 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --         A D A . W I D E _ C H A R A C T E R T S . U N I C O D E          --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2005-2010, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 Ada.Wide_Characters.Unicode is
- 
-    package G renames System.UTF_32;
- 
-    ------------------
-    -- Get_Category --
-    ------------------
- 
-    function Get_Category (U : Wide_Character) return Category is
-    begin
-       return Category (G.Get_Category (Wide_Character'Pos (U)));
-    end Get_Category;
- 
-    --------------
-    -- Is_Digit --
-    --------------
- 
-    function Is_Digit (U : Wide_Character) return Boolean is
-    begin
-       return G.Is_UTF_32_Digit (Wide_Character'Pos (U));
-    end Is_Digit;
- 
-    function Is_Digit (C : Category) return Boolean is
-    begin
-       return G.Is_UTF_32_Digit (G.Category (C));
-    end Is_Digit;
- 
-    ---------------
-    -- Is_Letter --
-    ---------------
- 
-    function Is_Letter (U : Wide_Character) return Boolean is
-    begin
-       return G.Is_UTF_32_Letter (Wide_Character'Pos (U));
-    end Is_Letter;
- 
-    function Is_Letter (C : Category) return Boolean is
-    begin
-       return G.Is_UTF_32_Letter (G.Category (C));
-    end Is_Letter;
- 
-    ------------------------
-    -- Is_Line_Terminator --
-    ------------------------
- 
-    function Is_Line_Terminator (U : Wide_Character) return Boolean is
-    begin
-       return G.Is_UTF_32_Line_Terminator (Wide_Character'Pos (U));
-    end Is_Line_Terminator;
- 
-    -------------
-    -- Is_Mark --
-    -------------
- 
-    function Is_Mark (U : Wide_Character) return Boolean is
-    begin
-       return G.Is_UTF_32_Mark (Wide_Character'Pos (U));
-    end Is_Mark;
- 
-    function Is_Mark (C : Category) return Boolean is
-    begin
-       return G.Is_UTF_32_Mark (G.Category (C));
-    end Is_Mark;
- 
-    --------------------
-    -- Is_Non_Graphic --
-    --------------------
- 
-    function Is_Non_Graphic (U : Wide_Character) return Boolean is
-    begin
-       return G.Is_UTF_32_Non_Graphic (Wide_Character'Pos (U));
-    end Is_Non_Graphic;
- 
-    function Is_Non_Graphic (C : Category) return Boolean is
-    begin
-       return G.Is_UTF_32_Non_Graphic (G.Category (C));
-    end Is_Non_Graphic;
- 
-    --------------
-    -- Is_Other --
-    --------------
- 
-    function Is_Other (U : Wide_Character) return Boolean is
-    begin
-       return G.Is_UTF_32_Other (Wide_Character'Pos (U));
-    end Is_Other;
- 
-    function Is_Other (C : Category) return Boolean is
-    begin
-       return G.Is_UTF_32_Other (G.Category (C));
-    end Is_Other;
- 
-    --------------------
-    -- Is_Punctuation --
-    --------------------
- 
-    function Is_Punctuation (U : Wide_Character) return Boolean is
-    begin
-       return G.Is_UTF_32_Punctuation (Wide_Character'Pos (U));
-    end Is_Punctuation;
- 
-    function Is_Punctuation (C : Category) return Boolean is
-    begin
-       return G.Is_UTF_32_Punctuation (G.Category (C));
-    end Is_Punctuation;
- 
-    --------------
-    -- Is_Space --
-    --------------
- 
-    function Is_Space (U : Wide_Character) return Boolean is
-    begin
-       return G.Is_UTF_32_Space (Wide_Character'Pos (U));
-    end Is_Space;
- 
-    function Is_Space (C : Category) return Boolean is
-    begin
-       return G.Is_UTF_32_Space (G.Category (C));
-    end Is_Space;
- 
-    -------------------
-    -- To_Lower_Case --
-    -------------------
- 
-    function To_Lower_Case
-      (U : Wide_Character) return Wide_Character
-    is
-    begin
-       return
-         Wide_Character'Val
-           (G.UTF_32_To_Lower_Case (Wide_Character'Pos (U)));
-    end To_Lower_Case;
- 
-    -------------------
-    -- To_Upper_Case --
-    -------------------
- 
-    function To_Upper_Case
-      (U : Wide_Character) return Wide_Character
-    is
-    begin
-       return
-         Wide_Character'Val
-           (G.UTF_32_To_Upper_Case (Wide_Character'Pos (U)));
-    end To_Upper_Case;
- 
- end Ada.Wide_Characters.Unicode;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-wichun.ads gcc-8.1.0/gcc/ada/a-wichun.ads
*** gcc-7.3.0/gcc/ada/a-wichun.ads	Fri Jan  4 12:49:55 2013
--- gcc-8.1.0/gcc/ada/a-wichun.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,197 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --          A D A . W I D E _ C H A R A C T E R S . U N I C O D E           --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2005-2012, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Unicode categorization routines for Wide_Character. Note that this
- --  package is strictly speaking Ada 2005 (since it is a child of an
- --  Ada 2005 unit), but we make it available in Ada 95 mode, since it
- --  only deals with wide characters.
- 
- with System.UTF_32;
- 
- package Ada.Wide_Characters.Unicode is
-    pragma Pure;
- 
-    --  The following type defines the categories from the unicode definitions.
-    --  The one addition we make is Fe, which represents the characters FFFE
-    --  and FFFF in any of the planes.
- 
-    type Category is new System.UTF_32.Category;
-    --  Cc   Other, Control
-    --  Cf   Other, Format
-    --  Cn   Other, Not Assigned
-    --  Co   Other, Private Use
-    --  Cs   Other, Surrogate
-    --  Ll   Letter, Lowercase
-    --  Lm   Letter, Modifier
-    --  Lo   Letter, Other
-    --  Lt   Letter, Titlecase
-    --  Lu   Letter, Uppercase
-    --  Mc   Mark, Spacing Combining
-    --  Me   Mark, Enclosing
-    --  Mn   Mark, Nonspacing
-    --  Nd   Number, Decimal Digit
-    --  Nl   Number, Letter
-    --  No   Number, Other
-    --  Pc   Punctuation, Connector
-    --  Pd   Punctuation, Dash
-    --  Pe   Punctuation, Close
-    --  Pf   Punctuation, Final quote
-    --  Pi   Punctuation, Initial quote
-    --  Po   Punctuation, Other
-    --  Ps   Punctuation, Open
-    --  Sc   Symbol, Currency
-    --  Sk   Symbol, Modifier
-    --  Sm   Symbol, Math
-    --  So   Symbol, Other
-    --  Zl   Separator, Line
-    --  Zp   Separator, Paragraph
-    --  Zs   Separator, Space
-    --  Fe   relative position FFFE/FFFF in plane
- 
-    function Get_Category (U : Wide_Character) return Category;
-    pragma Inline (Get_Category);
-    --  Given a Wide_Character, returns corresponding Category, or Cn if the
-    --  code does not have an assigned unicode category.
- 
-    --  The following functions perform category tests corresponding to lexical
-    --  classes defined in the Ada standard. There are two interfaces for each
-    --  function. The second takes a Category (e.g. returned by Get_Category).
-    --  The first takes a Wide_Character. The form taking the Wide_Character is
-    --  typically more efficient than calling Get_Category, but if several
-    --  different tests are to be performed on the same code, it is more
-    --  efficient to use Get_Category to get the category, then test the
-    --  resulting category.
- 
-    function Is_Letter (U : Wide_Character) return Boolean;
-    function Is_Letter (C : Category)       return Boolean;
-    pragma Inline (Is_Letter);
-    --  Returns true iff U is a letter that can be used to start an identifier,
-    --  or if C is one of the corresponding categories, which are the following:
-    --    Letter, Uppercase (Lu)
-    --    Letter, Lowercase (Ll)
-    --    Letter, Titlecase (Lt)
-    --    Letter, Modifier  (Lm)
-    --    Letter, Other     (Lo)
-    --    Number, Letter    (Nl)
- 
-    function Is_Digit (U : Wide_Character) return Boolean;
-    function Is_Digit (C : Category)       return Boolean;
-    pragma Inline (Is_Digit);
-    --  Returns true iff U is a digit that can be used to extend an identifer,
-    --  or if C is one of the corresponding categories, which are the following:
-    --    Number, Decimal_Digit (Nd)
- 
-    function Is_Line_Terminator (U : Wide_Character) return Boolean;
-    pragma Inline (Is_Line_Terminator);
-    --  Returns true iff U is an allowed line terminator for source programs,
-    --  if U is in the category Zp (Separator, Paragaph), or Zs (Separator,
-    --  Line), or if U is a conventional line terminator (CR, LF, VT, FF).
-    --  There is no category version for this function, since the set of
-    --  characters does not correspond to a set of Unicode categories.
- 
-    function Is_Mark (U : Wide_Character) return Boolean;
-    function Is_Mark (C : Category)       return Boolean;
-    pragma Inline (Is_Mark);
-    --  Returns true iff U is a mark character which can be used to extend an
-    --  identifier, or if C is one of the corresponding categories, which are
-    --  the following:
-    --    Mark, Non-Spacing (Mn)
-    --    Mark, Spacing Combining (Mc)
- 
-    function Is_Other (U : Wide_Character) return Boolean;
-    function Is_Other (C : Category)       return Boolean;
-    pragma Inline (Is_Other);
-    --  Returns true iff U is an other format character, which means that it
-    --  can be used to extend an identifier, but is ignored for the purposes of
-    --  matching of identiers, or if C is one of the corresponding categories,
-    --  which are the following:
-    --    Other, Format (Cf)
- 
-    function Is_Punctuation (U : Wide_Character) return Boolean;
-    function Is_Punctuation (C : Category)       return Boolean;
-    pragma Inline (Is_Punctuation);
-    --  Returns true iff U is a punctuation character that can be used to
-    --  separate pices of an identifier, or if C is one of the corresponding
-    --  categories, which are the following:
-    --    Punctuation, Connector (Pc)
- 
-    function Is_Space (U : Wide_Character) return Boolean;
-    function Is_Space (C : Category)       return Boolean;
-    pragma Inline (Is_Space);
-    --  Returns true iff U is considered a space to be ignored, or if C is one
-    --  of the corresponding categories, which are the following:
-    --    Separator, Space (Zs)
- 
-    function Is_Non_Graphic (U : Wide_Character) return Boolean;
-    function Is_Non_Graphic (C : Category)       return Boolean;
-    pragma Inline (Is_Non_Graphic);
-    --  Returns true iff U is considered to be a non-graphic character, or if C
-    --  is one of the corresponding categories, which are the following:
-    --    Other, Control (Cc)
-    --    Other, Private Use (Co)
-    --    Other, Surrogate (Cs)
-    --    Separator, Line (Zl)
-    --    Separator, Paragraph (Zp)
-    --    FFFE or FFFF positions in any plane (Fe)
-    --
-    --  Note that the Ada category format effector is subsumed by the above
-    --  list of Unicode categories.
-    --
-    --  Note that Other, Unassiged (Cn) is quite deliberately not included
-    --  in the list of categories above. This means that should any of these
-    --  code positions be defined in future with graphic characters they will
-    --  be allowed without a need to change implementations or the standard.
-    --
-    --  Note that Other, Format (Cf) is also quite deliberately not included
-    --  in the list of categories above. This means that these characters can
-    --  be included in character and string literals.
- 
-    --  The following function is used to fold to upper case, as required by
-    --  the Ada 2005 standard rules for identifier case folding. Two
-    --  identifiers are equivalent if they are identical after folding all
-    --  letters to upper case using this routine. A corresponding function to
-    --  fold to lower case is also provided.
- 
-    function To_Lower_Case (U : Wide_Character) return Wide_Character;
-    pragma Inline (To_Lower_Case);
-    --  If U represents an upper case letter, returns the corresponding lower
-    --  case letter, otherwise U is returned unchanged. The folding is locale
-    --  independent as defined by documents referenced in the note in section
-    --  1 of ISO/IEC 10646:2003
- 
-    function To_Upper_Case (U : Wide_Character) return Wide_Character;
-    pragma Inline (To_Upper_Case);
-    --  If U represents a lower case letter, returns the corresponding upper
-    --  case letter, otherwise U is returned unchanged. The folding is locale
-    --  independent as defined by documents referenced in the note in section
-    --  1 of ISO/IEC 10646:2003
- 
- end Ada.Wide_Characters.Unicode;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-widcha.ads gcc-8.1.0/gcc/ada/a-widcha.ads
*** gcc-7.3.0/gcc/ada/a-widcha.ads	Fri Oct 30 13:30:32 2009
--- gcc-8.1.0/gcc/ada/a-widcha.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,21 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                  A D A . W I D E _ C H A R A C T E R S                   --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Note: strictly this is an Ada 2005 package, but we make it freely
- --  available in Ada 95 mode, since it deals only with wide characters.
- 
- package Ada.Wide_Characters is
-    pragma Pure;
- end Ada.Wide_Characters;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-witeio.adb gcc-8.1.0/gcc/ada/a-witeio.adb
*** gcc-7.3.0/gcc/ada/a-witeio.adb	Fri Jul 18 11:00:59 2014
--- gcc-8.1.0/gcc/ada/a-witeio.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,1966 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                     A D A . W I D E _ T E X T _ I O                      --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Streams;          use Ada.Streams;
- with Interfaces.C_Streams; use Interfaces.C_Streams;
- 
- with System.CRTL;
- with System.File_IO;
- with System.WCh_Cnv;       use System.WCh_Cnv;
- with System.WCh_Con;       use System.WCh_Con;
- 
- with Ada.Unchecked_Conversion;
- with Ada.Unchecked_Deallocation;
- 
- pragma Elaborate_All (System.File_IO);
- --  Needed because of calls to Chain_File in package body elaboration
- 
- package body Ada.Wide_Text_IO is
- 
-    package FIO renames System.File_IO;
- 
-    subtype AP is FCB.AFCB_Ptr;
- 
-    function To_FCB is new Ada.Unchecked_Conversion (File_Mode, FCB.File_Mode);
-    function To_TIO is new Ada.Unchecked_Conversion (FCB.File_Mode, File_Mode);
-    use type FCB.File_Mode;
- 
-    use type System.CRTL.size_t;
- 
-    WC_Encoding : Character;
-    pragma Import (C, WC_Encoding, "__gl_wc_encoding");
-    --  Default wide character encoding
- 
-    Err_Name : aliased String := "*stderr" & ASCII.NUL;
-    In_Name  : aliased String := "*stdin" & ASCII.NUL;
-    Out_Name : aliased String := "*stdout" & ASCII.NUL;
-    --  Names of standard files
-    --
-    --  Use "preallocated" strings to avoid calling "new" during the elaboration
-    --  of the run time. This is needed in the tasking case to avoid calling
-    --  Task_Lock too early. A filename is expected to end with a null character
-    --  in the runtime, here the null characters are added just to have a
-    --  correct filename length.
-    --
-    --  Note: the names for these files are bogus, and probably it would be
-    --  better for these files to have no names, but the ACVC tests insist.
-    --  We use names that are bound to fail in open etc.
- 
-    Null_Str : aliased constant String := "";
-    --  Used as form string for standard files
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    function Get_Wide_Char_Immed
-      (C    : Character;
-       File : File_Type) return Wide_Character;
-    --  This routine is identical to Get_Wide_Char, except that the reads are
-    --  done in Get_Immediate mode (i.e. without waiting for a line return).
- 
-    function Getc_Immed (File : File_Type) return int;
-    --  This routine is identical to Getc, except that the read is done in
-    --  Get_Immediate mode (i.e. without waiting for a line return).
- 
-    procedure Putc (ch : int; File : File_Type);
-    --  Outputs the given character to the file, which has already been checked
-    --  for being in output status. Device_Error is raised if the character
-    --  cannot be written.
- 
-    procedure Set_WCEM (File : in out File_Type);
-    --  Called by Open and Create to set the wide character encoding method for
-    --  the file, processing a WCEM form parameter if one is present. File is
-    --  IN OUT because it may be closed in case of an error.
- 
-    procedure Terminate_Line (File : File_Type);
-    --  If the file is in Write_File or Append_File mode, and the current line
-    --  is not terminated, then a line terminator is written using New_Line.
-    --  Note that there is no Terminate_Page routine, because the page mark at
-    --  the end of the file is implied if necessary.
- 
-    procedure Ungetc (ch : int; File : File_Type);
-    --  Pushes back character into stream, using ungetc. The caller has checked
-    --  that the file is in read status. Device_Error is raised if the character
-    --  cannot be pushed back. An attempt to push back and end of file character
-    --  (EOF) is ignored.
- 
-    -------------------
-    -- AFCB_Allocate --
-    -------------------
- 
-    function AFCB_Allocate
-      (Control_Block : Wide_Text_AFCB) return FCB.AFCB_Ptr
-    is
-       pragma Unreferenced (Control_Block);
-    begin
-       return new Wide_Text_AFCB;
-    end AFCB_Allocate;
- 
-    ----------------
-    -- AFCB_Close --
-    ----------------
- 
-    procedure AFCB_Close (File : not null access Wide_Text_AFCB) is
-    begin
-       --  If the file being closed is one of the current files, then close
-       --  the corresponding current file. It is not clear that this action
-       --  is required (RM A.10.3(23)) but it seems reasonable, and besides
-       --  ACVC test CE3208A expects this behavior.
- 
-       if File_Type (File) = Current_In then
-          Current_In := null;
-       elsif File_Type (File) = Current_Out then
-          Current_Out := null;
-       elsif File_Type (File) = Current_Err then
-          Current_Err := null;
-       end if;
- 
-       Terminate_Line (File_Type (File));
-    end AFCB_Close;
- 
-    ---------------
-    -- AFCB_Free --
-    ---------------
- 
-    procedure AFCB_Free (File : not null access Wide_Text_AFCB) is
-       type FCB_Ptr is access all Wide_Text_AFCB;
-       FT : FCB_Ptr := FCB_Ptr (File);
- 
-       procedure Free is
-         new Ada.Unchecked_Deallocation (Wide_Text_AFCB, FCB_Ptr);
- 
-    begin
-       Free (FT);
-    end AFCB_Free;
- 
-    -----------
-    -- Close --
-    -----------
- 
-    procedure Close (File : in out File_Type) is
-    begin
-       FIO.Close (AP (File)'Unrestricted_Access);
-    end Close;
- 
-    ---------
-    -- Col --
-    ---------
- 
-    --  Note: we assume that it is impossible in practice for the column
-    --  to exceed the value of Count'Last, i.e. no check is required for
-    --  overflow raising layout error.
- 
-    function Col (File : File_Type) return Positive_Count is
-    begin
-       FIO.Check_File_Open (AP (File));
-       return File.Col;
-    end Col;
- 
-    function Col return Positive_Count is
-    begin
-       return Col (Current_Out);
-    end Col;
- 
-    ------------
-    -- Create --
-    ------------
- 
-    procedure Create
-      (File : in out File_Type;
-       Mode : File_Mode := Out_File;
-       Name : String := "";
-       Form : String := "")
-    is
-       Dummy_File_Control_Block : Wide_Text_AFCB;
-       pragma Warnings (Off, Dummy_File_Control_Block);
-       --  Yes, we know this is never assigned a value, only the tag
-       --  is used for dispatching purposes, so that's expected.
- 
-    begin
-       FIO.Open (File_Ptr  => AP (File),
-                 Dummy_FCB => Dummy_File_Control_Block,
-                 Mode      => To_FCB (Mode),
-                 Name      => Name,
-                 Form      => Form,
-                 Amethod   => 'W',
-                 Creat     => True,
-                 Text      => True);
- 
-       File.Self := File;
-       Set_WCEM (File);
-    end Create;
- 
-    -------------------
-    -- Current_Error --
-    -------------------
- 
-    function Current_Error return File_Type is
-    begin
-       return Current_Err;
-    end Current_Error;
- 
-    function Current_Error return File_Access is
-    begin
-       return Current_Err.Self'Access;
-    end Current_Error;
- 
-    -------------------
-    -- Current_Input --
-    -------------------
- 
-    function Current_Input return File_Type is
-    begin
-       return Current_In;
-    end Current_Input;
- 
-    function Current_Input return File_Access is
-    begin
-       return Current_In.Self'Access;
-    end Current_Input;
- 
-    --------------------
-    -- Current_Output --
-    --------------------
- 
-    function Current_Output return File_Type is
-    begin
-       return Current_Out;
-    end Current_Output;
- 
-    function Current_Output return File_Access is
-    begin
-       return Current_Out.Self'Access;
-    end Current_Output;
- 
-    ------------
-    -- Delete --
-    ------------
- 
-    procedure Delete (File : in out File_Type) is
-    begin
-       FIO.Delete (AP (File)'Unrestricted_Access);
-    end Delete;
- 
-    -----------------
-    -- End_Of_File --
-    -----------------
- 
-    function End_Of_File (File : File_Type) return Boolean is
-       ch  : int;
- 
-    begin
-       FIO.Check_Read_Status (AP (File));
- 
-       if File.Before_Wide_Character then
-          return False;
- 
-       elsif File.Before_LM then
-          if File.Before_LM_PM then
-             return Nextc (File) = EOF;
-          end if;
- 
-       else
-          ch := Getc (File);
- 
-          if ch = EOF then
-             return True;
- 
-          elsif ch /= LM then
-             Ungetc (ch, File);
-             return False;
- 
-          else -- ch = LM
-             File.Before_LM := True;
-          end if;
-       end if;
- 
-       --  Here we are just past the line mark with Before_LM set so that we
-       --  do not have to try to back up past the LM, thus avoiding the need
-       --  to back up more than one character.
- 
-       ch := Getc (File);
- 
-       if ch = EOF then
-          return True;
- 
-       elsif ch = PM and then File.Is_Regular_File then
-          File.Before_LM_PM := True;
-          return Nextc (File) = EOF;
- 
-       --  Here if neither EOF nor PM followed end of line
- 
-       else
-          Ungetc (ch, File);
-          return False;
-       end if;
- 
-    end End_Of_File;
- 
-    function End_Of_File return Boolean is
-    begin
-       return End_Of_File (Current_In);
-    end End_Of_File;
- 
-    -----------------
-    -- End_Of_Line --
-    -----------------
- 
-    function End_Of_Line (File : File_Type) return Boolean is
-       ch : int;
- 
-    begin
-       FIO.Check_Read_Status (AP (File));
- 
-       if File.Before_Wide_Character then
-          return False;
- 
-       elsif File.Before_LM then
-          return True;
- 
-       else
-          ch := Getc (File);
- 
-          if ch = EOF then
-             return True;
- 
-          else
-             Ungetc (ch, File);
-             return (ch = LM);
-          end if;
-       end if;
-    end End_Of_Line;
- 
-    function End_Of_Line return Boolean is
-    begin
-       return End_Of_Line (Current_In);
-    end End_Of_Line;
- 
-    -----------------
-    -- End_Of_Page --
-    -----------------
- 
-    function End_Of_Page (File : File_Type) return Boolean is
-       ch  : int;
- 
-    begin
-       FIO.Check_Read_Status (AP (File));
- 
-       if not File.Is_Regular_File then
-          return False;
- 
-       elsif File.Before_Wide_Character then
-          return False;
- 
-       elsif File.Before_LM then
-          if File.Before_LM_PM then
-             return True;
-          end if;
- 
-       else
-          ch := Getc (File);
- 
-          if ch = EOF then
-             return True;
- 
-          elsif ch /= LM then
-             Ungetc (ch, File);
-             return False;
- 
-          else -- ch = LM
-             File.Before_LM := True;
-          end if;
-       end if;
- 
-       --  Here we are just past the line mark with Before_LM set so that we
-       --  do not have to try to back up past the LM, thus avoiding the need
-       --  to back up more than one character.
- 
-       ch := Nextc (File);
- 
-       return ch = PM or else ch = EOF;
-    end End_Of_Page;
- 
-    function End_Of_Page return Boolean is
-    begin
-       return End_Of_Page (Current_In);
-    end End_Of_Page;
- 
-    -----------
-    -- Flush --
-    -----------
- 
-    procedure Flush (File : File_Type) is
-    begin
-       FIO.Flush (AP (File));
-    end Flush;
- 
-    procedure Flush is
-    begin
-       Flush (Current_Out);
-    end Flush;
- 
-    ----------
-    -- Form --
-    ----------
- 
-    function Form (File : File_Type) return String is
-    begin
-       return FIO.Form (AP (File));
-    end Form;
- 
-    ---------
-    -- Get --
-    ---------
- 
-    procedure Get
-      (File : File_Type;
-       Item : out Wide_Character)
-    is
-       C  : Character;
- 
-    begin
-       FIO.Check_Read_Status (AP (File));
- 
-       if File.Before_Wide_Character then
-          File.Before_Wide_Character := False;
-          Item := File.Saved_Wide_Character;
- 
-       --  Ada.Text_IO checks Before_LM_PM here, shouldn't we do the same???
- 
-       else
-          Get_Character (File, C);
-          Item := Get_Wide_Char (C, File);
-       end if;
-    end Get;
- 
-    procedure Get (Item : out Wide_Character) is
-    begin
-       Get (Current_In, Item);
-    end Get;
- 
-    procedure Get
-      (File : File_Type;
-       Item : out Wide_String)
-    is
-    begin
-       for J in Item'Range loop
-          Get (File, Item (J));
-       end loop;
-    end Get;
- 
-    procedure Get (Item : out Wide_String) is
-    begin
-       Get (Current_In, Item);
-    end Get;
- 
-    -------------------
-    -- Get_Character --
-    -------------------
- 
-    procedure Get_Character
-      (File : File_Type;
-       Item : out Character)
-    is
-       ch : int;
- 
-    begin
-       if File.Before_LM then
-          File.Before_LM := False;
-          File.Before_LM_PM := False;
-          File.Col := 1;
- 
-          if File.Before_LM_PM then
-             File.Line := 1;
-             File.Page := File.Page + 1;
-             File.Before_LM_PM := False;
- 
-          else
-             File.Line := File.Line + 1;
-          end if;
-       end if;
- 
-       loop
-          ch := Getc (File);
- 
-          if ch = EOF then
-             raise End_Error;
- 
-          elsif ch = LM then
-             File.Line := File.Line + 1;
-             File.Col := 1;
- 
-          elsif ch = PM and then File.Is_Regular_File then
-             File.Page := File.Page + 1;
-             File.Line := 1;
- 
-          else
-             Item := Character'Val (ch);
-             File.Col := File.Col + 1;
-             return;
-          end if;
-       end loop;
-    end Get_Character;
- 
-    -------------------
-    -- Get_Immediate --
-    -------------------
- 
-    procedure Get_Immediate
-      (File : File_Type;
-       Item : out Wide_Character)
-    is
-       ch : int;
- 
-    begin
-       FIO.Check_Read_Status (AP (File));
- 
-       if File.Before_Wide_Character then
-          File.Before_Wide_Character := False;
-          Item := File.Saved_Wide_Character;
- 
-       elsif File.Before_LM then
-          File.Before_LM := False;
-          File.Before_LM_PM := False;
-          Item := Wide_Character'Val (LM);
- 
-       else
-          ch := Getc_Immed (File);
- 
-          if ch = EOF then
-             raise End_Error;
-          else
-             Item := Get_Wide_Char_Immed (Character'Val (ch), File);
-          end if;
-       end if;
-    end Get_Immediate;
- 
-    procedure Get_Immediate
-      (Item : out Wide_Character)
-    is
-    begin
-       Get_Immediate (Current_In, Item);
-    end Get_Immediate;
- 
-    procedure Get_Immediate
-      (File      : File_Type;
-       Item      : out Wide_Character;
-       Available : out Boolean)
-    is
-       ch : int;
- 
-    begin
-       FIO.Check_Read_Status (AP (File));
-       Available := True;
- 
-       if File.Before_Wide_Character then
-          File.Before_Wide_Character := False;
-          Item := File.Saved_Wide_Character;
- 
-       elsif File.Before_LM then
-          File.Before_LM := False;
-          File.Before_LM_PM := False;
-          Item := Wide_Character'Val (LM);
- 
-       else
-          --  Shouldn't we use getc_immediate_nowait here, like Text_IO???
- 
-          ch := Getc_Immed (File);
- 
-          if ch = EOF then
-             raise End_Error;
-          else
-             Item := Get_Wide_Char_Immed (Character'Val (ch), File);
-          end if;
-       end if;
-    end Get_Immediate;
- 
-    procedure Get_Immediate
-      (Item      : out Wide_Character;
-       Available : out Boolean)
-    is
-    begin
-       Get_Immediate (Current_In, Item, Available);
-    end Get_Immediate;
- 
-    --------------
-    -- Get_Line --
-    --------------
- 
-    procedure Get_Line
-      (File : File_Type;
-       Item : out Wide_String;
-       Last : out Natural)
-    is
-    begin
-       FIO.Check_Read_Status (AP (File));
-       Last := Item'First - 1;
- 
-       --  Immediate exit for null string, this is a case in which we do not
-       --  need to test for end of file and we do not skip a line mark under
-       --  any circumstances.
- 
-       if Last >= Item'Last then
-          return;
-       end if;
- 
-       --  Here we have at least one character, if we are immediately before
-       --  a line mark, then we will just skip past it storing no characters.
- 
-       if File.Before_LM then
-          File.Before_LM := False;
-          File.Before_LM_PM := False;
- 
-       --  Otherwise we need to read some characters
- 
-       else
-          --  If we are at the end of file now, it means we are trying to
-          --  skip a file terminator and we raise End_Error (RM A.10.7(20))
- 
-          if Nextc (File) = EOF then
-             raise End_Error;
-          end if;
- 
-          --  Loop through characters in string
- 
-          loop
-             --  Exit the loop if read is terminated by encountering line mark
-             --  Note that the use of Skip_Line here ensures we properly deal
-             --  with setting the page and line numbers.
- 
-             if End_Of_Line (File) then
-                Skip_Line (File);
-                return;
-             end if;
- 
-             --  Otherwise store the character, note that we know that ch is
-             --  something other than LM or EOF. It could possibly be a page
-             --  mark if there is a stray page mark in the middle of a line, but
-             --  this is not an official page mark in any case, since official
-             --  page marks can only follow a line mark. The whole page business
-             --  is pretty much nonsense anyway, so we do not want to waste
-             --  time trying to make sense out of non-standard page marks in
-             --  the file. This means that the behavior of Get_Line is different
-             --  from repeated Get of a character, but that's too bad. We
-             --  only promise that page numbers etc make sense if the file
-             --  is formatted in a standard manner.
- 
-             --  Note: we do not adjust the column number because it is quicker
-             --  to adjust it once at the end of the operation than incrementing
-             --  it each time around the loop.
- 
-             Last := Last + 1;
-             Get (File, Item (Last));
- 
-             --  All done if the string is full, this is the case in which
-             --  we do not skip the following line mark. We need to adjust
-             --  the column number in this case.
- 
-             if Last = Item'Last then
-                File.Col := File.Col + Count (Item'Length);
-                return;
-             end if;
- 
-             --  Exit from the loop if we are at the end of file. This happens
-             --  if we have a last line that is not terminated with a line mark.
-             --  In this case we consider that there is an implied line mark;
-             --  this is a non-standard file, but we will treat it nicely.
- 
-             exit when Nextc (File) = EOF;
-          end loop;
-       end if;
-    end Get_Line;
- 
-    procedure Get_Line
-      (Item : out Wide_String;
-       Last : out Natural)
-    is
-    begin
-       Get_Line (Current_In, Item, Last);
-    end Get_Line;
- 
-    function Get_Line (File : File_Type) return Wide_String is
-       Buffer : Wide_String (1 .. 500);
-       Last   : Natural;
- 
-       function Get_Rest (S : Wide_String) return Wide_String;
-       --  This is a recursive function that reads the rest of the line and
-       --  returns it. S is the part read so far.
- 
-       --------------
-       -- Get_Rest --
-       --------------
- 
-       function Get_Rest (S : Wide_String) return Wide_String is
- 
-          --  Each time we allocate a buffer the same size as what we have
-          --  read so far. This limits us to a logarithmic number of calls
-          --  to Get_Rest and also ensures only a linear use of stack space.
- 
-          Buffer : Wide_String (1 .. S'Length);
-          Last   : Natural;
- 
-       begin
-          Get_Line (File, Buffer, Last);
- 
-          declare
-             R : constant Wide_String := S & Buffer (1 .. Last);
-          begin
-             if Last < Buffer'Last then
-                return R;
-             else
-                return Get_Rest (R);
-             end if;
-          end;
-       end Get_Rest;
- 
-    --  Start of processing for Get_Line
- 
-    begin
-       Get_Line (File, Buffer, Last);
- 
-       if Last < Buffer'Last then
-          return Buffer (1 .. Last);
-       else
-          return Get_Rest (Buffer (1 .. Last));
-       end if;
-    end Get_Line;
- 
-    function Get_Line return Wide_String is
-    begin
-       return Get_Line (Current_In);
-    end Get_Line;
- 
-    -------------------
-    -- Get_Wide_Char --
-    -------------------
- 
-    function Get_Wide_Char
-      (C    : Character;
-       File : File_Type) return Wide_Character
-    is
-       function In_Char return Character;
-       --  Function used to obtain additional characters it the wide character
-       --  sequence is more than one character long.
- 
-       function WC_In is new Char_Sequence_To_Wide_Char (In_Char);
- 
-       -------------
-       -- In_Char --
-       -------------
- 
-       function In_Char return Character is
-          ch : constant Integer := Getc (File);
-       begin
-          if ch = EOF then
-             raise End_Error;
-          else
-             return Character'Val (ch);
-          end if;
-       end In_Char;
- 
-    --  Start of processing for Get_Wide_Char
- 
-    begin
-       FIO.Check_Read_Status (AP (File));
-       return WC_In (C, File.WC_Method);
-    end Get_Wide_Char;
- 
-    -------------------------
-    -- Get_Wide_Char_Immed --
-    -------------------------
- 
-    function Get_Wide_Char_Immed
-      (C    : Character;
-       File : File_Type) return Wide_Character
-    is
-       function In_Char return Character;
-       --  Function used to obtain additional characters it the wide character
-       --  sequence is more than one character long.
- 
-       function WC_In is new Char_Sequence_To_Wide_Char (In_Char);
- 
-       -------------
-       -- In_Char --
-       -------------
- 
-       function In_Char return Character is
-          ch : constant Integer := Getc_Immed (File);
-       begin
-          if ch = EOF then
-             raise End_Error;
-          else
-             return Character'Val (ch);
-          end if;
-       end In_Char;
- 
-    --  Start of processing for Get_Wide_Char_Immed
- 
-    begin
-       FIO.Check_Read_Status (AP (File));
-       return WC_In (C, File.WC_Method);
-    end Get_Wide_Char_Immed;
- 
-    ----------
-    -- Getc --
-    ----------
- 
-    function Getc (File : File_Type) return int is
-       ch : int;
- 
-    begin
-       ch := fgetc (File.Stream);
- 
-       if ch = EOF and then ferror (File.Stream) /= 0 then
-          raise Device_Error;
-       else
-          return ch;
-       end if;
-    end Getc;
- 
-    ----------------
-    -- Getc_Immed --
-    ----------------
- 
-    function Getc_Immed (File : File_Type) return int is
-       ch          : int;
-       end_of_file : int;
- 
-       procedure getc_immediate
-         (stream : FILEs; ch : out int; end_of_file : out int);
-       pragma Import (C, getc_immediate, "getc_immediate");
- 
-    begin
-       FIO.Check_Read_Status (AP (File));
- 
-       if File.Before_LM then
-          File.Before_LM := False;
-          File.Before_LM_PM := False;
-          ch := LM;
- 
-       else
-          getc_immediate (File.Stream, ch, end_of_file);
- 
-          if ferror (File.Stream) /= 0 then
-             raise Device_Error;
-          elsif end_of_file /= 0 then
-             return EOF;
-          end if;
-       end if;
- 
-       return ch;
-    end Getc_Immed;
- 
-    -------------------------------
-    -- Initialize_Standard_Files --
-    -------------------------------
- 
-    procedure Initialize_Standard_Files is
-    begin
-       Standard_Err.Stream            := stderr;
-       Standard_Err.Name              := Err_Name'Access;
-       Standard_Err.Form              := Null_Str'Unrestricted_Access;
-       Standard_Err.Mode              := FCB.Out_File;
-       Standard_Err.Is_Regular_File   := is_regular_file (fileno (stderr)) /= 0;
-       Standard_Err.Is_Temporary_File := False;
-       Standard_Err.Is_System_File    := True;
-       Standard_Err.Text_Encoding     := Default_Text;
-       Standard_Err.Access_Method     := 'T';
-       Standard_Err.Self              := Standard_Err;
-       Standard_Err.WC_Method         := Default_WCEM;
- 
-       Standard_In.Stream             := stdin;
-       Standard_In.Name               := In_Name'Access;
-       Standard_In.Form               := Null_Str'Unrestricted_Access;
-       Standard_In.Mode               := FCB.In_File;
-       Standard_In.Is_Regular_File    := is_regular_file (fileno (stdin)) /= 0;
-       Standard_In.Is_Temporary_File  := False;
-       Standard_In.Is_System_File     := True;
-       Standard_In.Text_Encoding      := Default_Text;
-       Standard_In.Access_Method      := 'T';
-       Standard_In.Self               := Standard_In;
-       Standard_In.WC_Method          := Default_WCEM;
- 
-       Standard_Out.Stream            := stdout;
-       Standard_Out.Name              := Out_Name'Access;
-       Standard_Out.Form              := Null_Str'Unrestricted_Access;
-       Standard_Out.Mode              := FCB.Out_File;
-       Standard_Out.Is_Regular_File   := is_regular_file (fileno (stdout)) /= 0;
-       Standard_Out.Is_Temporary_File := False;
-       Standard_Out.Is_System_File    := True;
-       Standard_Out.Text_Encoding     := Default_Text;
-       Standard_Out.Access_Method     := 'T';
-       Standard_Out.Self              := Standard_Out;
-       Standard_Out.WC_Method         := Default_WCEM;
- 
-       FIO.Make_Unbuffered (AP (Standard_Out));
-       FIO.Make_Unbuffered (AP (Standard_Err));
-    end Initialize_Standard_Files;
- 
-    -------------
-    -- Is_Open --
-    -------------
- 
-    function Is_Open (File : File_Type) return Boolean is
-    begin
-       return FIO.Is_Open (AP (File));
-    end Is_Open;
- 
-    ----------
-    -- Line --
-    ----------
- 
-    --  Note: we assume that it is impossible in practice for the line to exceed
-    --  the value of Count'Last, i.e. no check is required for overflow raising
-    --  layout error.
- 
-    function Line (File : File_Type) return Positive_Count is
-    begin
-       FIO.Check_File_Open (AP (File));
-       return File.Line;
-    end Line;
- 
-    function Line return Positive_Count is
-    begin
-       return Line (Current_Out);
-    end Line;
- 
-    -----------------
-    -- Line_Length --
-    -----------------
- 
-    function Line_Length (File : File_Type) return Count is
-    begin
-       FIO.Check_Write_Status (AP (File));
-       return File.Line_Length;
-    end Line_Length;
- 
-    function Line_Length return Count is
-    begin
-       return Line_Length (Current_Out);
-    end Line_Length;
- 
-    ----------------
-    -- Look_Ahead --
-    ----------------
- 
-    procedure Look_Ahead
-      (File        : File_Type;
-       Item        : out Wide_Character;
-       End_Of_Line : out Boolean)
-    is
-       ch : int;
- 
-    --  Start of processing for Look_Ahead
- 
-    begin
-       FIO.Check_Read_Status (AP (File));
- 
-       --  If we are logically before a line mark, we can return immediately
- 
-       if File.Before_LM then
-          End_Of_Line := True;
-          Item := Wide_Character'Val (0);
- 
-       --  If we are before a wide character, just return it (this can happen
-       --  if there are two calls to Look_Ahead in a row).
- 
-       elsif File.Before_Wide_Character then
-          End_Of_Line := False;
-          Item := File.Saved_Wide_Character;
- 
-       --  otherwise we must read a character from the input stream
- 
-       else
-          ch := Getc (File);
- 
-          if ch = LM
-            or else ch = EOF
-            or else (ch = EOF and then File.Is_Regular_File)
-          then
-             End_Of_Line := True;
-             Ungetc (ch, File);
-             Item := Wide_Character'Val (0);
- 
-          --  Case where character obtained does not represent the start of an
-          --  encoded sequence so it stands for itself and we can unget it with
-          --  no difficulty.
- 
-          elsif not Is_Start_Of_Encoding
-                      (Character'Val (ch), File.WC_Method)
-          then
-             End_Of_Line := False;
-             Ungetc (ch, File);
-             Item := Wide_Character'Val (ch);
- 
-          --  For the start of an encoding, we read the character using the
-          --  Get_Wide_Char routine. It will occupy more than one byte so we
-          --  can't put it back with ungetc. Instead we save it in the control
-          --  block, setting a flag that everyone interested in reading
-          --  characters must test before reading the stream.
- 
-          else
-             Item := Get_Wide_Char (Character'Val (ch), File);
-             End_Of_Line := False;
-             File.Saved_Wide_Character := Item;
-             File.Before_Wide_Character := True;
-          end if;
-       end if;
-    end Look_Ahead;
- 
-    procedure Look_Ahead
-      (Item        : out Wide_Character;
-       End_Of_Line : out Boolean)
-    is
-    begin
-       Look_Ahead (Current_In, Item, End_Of_Line);
-    end Look_Ahead;
- 
-    ----------
-    -- Mode --
-    ----------
- 
-    function Mode (File : File_Type) return File_Mode is
-    begin
-       return To_TIO (FIO.Mode (AP (File)));
-    end Mode;
- 
-    ----------
-    -- Name --
-    ----------
- 
-    function Name (File : File_Type) return String is
-    begin
-       return FIO.Name (AP (File));
-    end Name;
- 
-    --------------
-    -- New_Line --
-    --------------
- 
-    procedure New_Line
-      (File    : File_Type;
-       Spacing : Positive_Count := 1)
-    is
-    begin
-       --  Raise Constraint_Error if out of range value. The reason for this
-       --  explicit test is that we don't want junk values around, even if
-       --  checks are off in the caller.
- 
-       if not Spacing'Valid then
-          raise Constraint_Error;
-       end if;
- 
-       FIO.Check_Write_Status (AP (File));
- 
-       for K in 1 .. Spacing loop
- 
-          --  We use Put here (rather than Putc) so that we get the proper
-          --  behavior on windows for output of Wide_String to the console.
- 
-          Put (File, Wide_Character'Val (LM));
- 
-          File.Line := File.Line + 1;
- 
-          if File.Page_Length /= 0 and then File.Line > File.Page_Length then
- 
-             --  Same situation as above, use Put instead of Putc
- 
-             Put (File, Wide_Character'Val (PM));
- 
-             File.Line := 1;
-             File.Page := File.Page + 1;
-          end if;
-       end loop;
- 
-       File.Col := 1;
-    end New_Line;
- 
-    procedure New_Line (Spacing : Positive_Count := 1) is
-    begin
-       New_Line (Current_Out, Spacing);
-    end New_Line;
- 
-    --------------
-    -- New_Page --
-    --------------
- 
-    procedure New_Page (File : File_Type) is
-    begin
-       FIO.Check_Write_Status (AP (File));
- 
-       if File.Col /= 1 or else File.Line = 1 then
-          Putc (LM, File);
-       end if;
- 
-       Putc (PM, File);
-       File.Page := File.Page + 1;
-       File.Line := 1;
-       File.Col := 1;
-    end New_Page;
- 
-    procedure New_Page is
-    begin
-       New_Page (Current_Out);
-    end New_Page;
- 
-    -----------
-    -- Nextc --
-    -----------
- 
-    function Nextc (File : File_Type) return int is
-       ch : int;
- 
-    begin
-       ch := fgetc (File.Stream);
- 
-       if ch = EOF then
-          if ferror (File.Stream) /= 0 then
-             raise Device_Error;
-          end if;
- 
-       else
-          if ungetc (ch, File.Stream) = EOF then
-             raise Device_Error;
-          end if;
-       end if;
- 
-       return ch;
-    end Nextc;
- 
-    ----------
-    -- Open --
-    ----------
- 
-    procedure Open
-      (File : in out File_Type;
-       Mode : File_Mode;
-       Name : String;
-       Form : String := "")
-    is
-       Dummy_File_Control_Block : Wide_Text_AFCB;
-       pragma Warnings (Off, Dummy_File_Control_Block);
-       --  Yes, we know this is never assigned a value, only the tag
-       --  is used for dispatching purposes, so that's expected.
- 
-    begin
-       FIO.Open (File_Ptr  => AP (File),
-                 Dummy_FCB => Dummy_File_Control_Block,
-                 Mode      => To_FCB (Mode),
-                 Name      => Name,
-                 Form      => Form,
-                 Amethod   => 'W',
-                 Creat     => False,
-                 Text      => True);
- 
-       File.Self := File;
-       Set_WCEM (File);
-    end Open;
- 
-    ----------
-    -- Page --
-    ----------
- 
-    --  Note: we assume that it is impossible in practice for the page
-    --  to exceed the value of Count'Last, i.e. no check is required for
-    --  overflow raising layout error.
- 
-    function Page (File : File_Type) return Positive_Count is
-    begin
-       FIO.Check_File_Open (AP (File));
-       return File.Page;
-    end Page;
- 
-    function Page return Positive_Count is
-    begin
-       return Page (Current_Out);
-    end Page;
- 
-    -----------------
-    -- Page_Length --
-    -----------------
- 
-    function Page_Length (File : File_Type) return Count is
-    begin
-       FIO.Check_Write_Status (AP (File));
-       return File.Page_Length;
-    end Page_Length;
- 
-    function Page_Length return Count is
-    begin
-       return Page_Length (Current_Out);
-    end Page_Length;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put
-      (File : File_Type;
-       Item : Wide_Character)
-    is
-       wide_text_translation_required : Integer;
-       pragma Import
-         (C, wide_text_translation_required,
-          "__gnat_wide_text_translation_required");
-       --  Text translation is required on Windows only. This means that the
-       --  console is doing translation and we do not want to do any encoding
-       --  here. If this variable is not 0 we output the character via fputwc.
- 
-       procedure Out_Char (C : Character);
-       --  Procedure to output one character of a wide character sequence
- 
-       procedure WC_Out is new Wide_Char_To_Char_Sequence (Out_Char);
- 
-       --------------
-       -- Out_Char --
-       --------------
- 
-       procedure Out_Char (C : Character) is
-       begin
-          Putc (Character'Pos (C), File);
-       end Out_Char;
- 
-       Discard : int;
- 
-    --  Start of processing for Put
- 
-    begin
-       FIO.Check_Write_Status (AP (File));
- 
-       if wide_text_translation_required /= 0
-         or else File.Text_Encoding in Non_Default_Text_Content_Encoding
-       then
-          set_mode (fileno (File.Stream), File.Text_Encoding);
-          Discard := fputwc (Wide_Character'Pos (Item), File.Stream);
-       else
-          WC_Out (Item, File.WC_Method);
-       end if;
- 
-       File.Col := File.Col + 1;
-    end Put;
- 
-    procedure Put (Item : Wide_Character) is
-    begin
-       Put (Current_Out, Item);
-    end Put;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put
-      (File : File_Type;
-       Item : Wide_String)
-    is
-    begin
-       for J in Item'Range loop
-          Put (File, Item (J));
-       end loop;
-    end Put;
- 
-    procedure Put (Item : Wide_String) is
-    begin
-       Put (Current_Out, Item);
-    end Put;
- 
-    --------------
-    -- Put_Line --
-    --------------
- 
-    procedure Put_Line
-      (File : File_Type;
-       Item : Wide_String)
-    is
-    begin
-       Put (File, Item);
-       New_Line (File);
-    end Put_Line;
- 
-    procedure Put_Line (Item : Wide_String) is
-    begin
-       Put (Current_Out, Item);
-       New_Line (Current_Out);
-    end Put_Line;
- 
-    ----------
-    -- Putc --
-    ----------
- 
-    procedure Putc (ch : int; File : File_Type) is
-    begin
-       if fputc (ch, File.Stream) = EOF then
-          raise Device_Error;
-       end if;
-    end Putc;
- 
-    ----------
-    -- Read --
-    ----------
- 
-    --  This is the primitive Stream Read routine, used when a Text_IO file
-    --  is treated directly as a stream using Text_IO.Streams.Stream.
- 
-    procedure Read
-      (File : in out Wide_Text_AFCB;
-       Item : out Stream_Element_Array;
-       Last : out Stream_Element_Offset)
-    is
-       Discard_ch : int;
-       pragma Unreferenced (Discard_ch);
- 
-    begin
-       --  Need to deal with Before_Wide_Character ???
- 
-       if File.Mode /= FCB.In_File then
-          raise Mode_Error;
-       end if;
- 
-       --  Deal with case where our logical and physical position do not match
-       --  because of being after an LM or LM-PM sequence when in fact we are
-       --  logically positioned before it.
- 
-       if File.Before_LM then
- 
-          --  If we are before a PM, then it is possible for a stream read
-          --  to leave us after the LM and before the PM, which is a bit
-          --  odd. The easiest way to deal with this is to unget the PM,
-          --  so we are indeed positioned between the characters. This way
-          --  further stream read operations will work correctly, and the
-          --  effect on text processing is a little weird, but what can
-          --  be expected if stream and text input are mixed this way?
- 
-          if File.Before_LM_PM then
-             Discard_ch := ungetc (PM, File.Stream);
-             File.Before_LM_PM := False;
-          end if;
- 
-          File.Before_LM := False;
- 
-          Item (Item'First) := Stream_Element (Character'Pos (ASCII.LF));
- 
-          if Item'Length = 1 then
-             Last := Item'Last;
- 
-          else
-             Last :=
-               Item'First +
-                 Stream_Element_Offset
-                   (fread (buffer => Item'Address,
-                           index  => size_t (Item'First + 1),
-                           size   => 1,
-                           count  => Item'Length - 1,
-                           stream => File.Stream));
-          end if;
- 
-          return;
-       end if;
- 
-       --  Now we do the read. Since this is a text file, it is normally in
-       --  text mode, but stream data must be read in binary mode, so we
-       --  temporarily set binary mode for the read, resetting it after.
-       --  These calls have no effect in a system (like Unix) where there is
-       --  no distinction between text and binary files.
- 
-       set_binary_mode (fileno (File.Stream));
- 
-       Last :=
-         Item'First +
-           Stream_Element_Offset
-             (fread (Item'Address, 1, Item'Length, File.Stream)) - 1;
- 
-       if Last < Item'Last then
-          if ferror (File.Stream) /= 0 then
-             raise Device_Error;
-          end if;
-       end if;
- 
-       set_text_mode (fileno (File.Stream));
-    end Read;
- 
-    -----------
-    -- Reset --
-    -----------
- 
-    procedure Reset
-      (File : in out File_Type;
-       Mode : File_Mode)
-    is
-    begin
-       --  Don't allow change of mode for current file (RM A.10.2(5))
- 
-       if (File = Current_In or else
-           File = Current_Out  or else
-           File = Current_Error)
-         and then To_FCB (Mode) /= File.Mode
-       then
-          raise Mode_Error;
-       end if;
- 
-       Terminate_Line (File);
-       FIO.Reset (AP (File)'Unrestricted_Access, To_FCB (Mode));
-       File.Page := 1;
-       File.Line := 1;
-       File.Col  := 1;
-       File.Line_Length := 0;
-       File.Page_Length := 0;
-       File.Before_LM := False;
-       File.Before_LM_PM := False;
-    end Reset;
- 
-    procedure Reset (File : in out File_Type) is
-    begin
-       Terminate_Line (File);
-       FIO.Reset (AP (File)'Unrestricted_Access);
-       File.Page := 1;
-       File.Line := 1;
-       File.Col  := 1;
-       File.Line_Length := 0;
-       File.Page_Length := 0;
-       File.Before_LM := False;
-       File.Before_LM_PM := False;
-    end Reset;
- 
-    -------------
-    -- Set_Col --
-    -------------
- 
-    procedure Set_Col
-      (File : File_Type;
-       To   : Positive_Count)
-    is
-       ch : int;
- 
-    begin
-       --  Raise Constraint_Error if out of range value. The reason for this
-       --  explicit test is that we don't want junk values around, even if
-       --  checks are off in the caller.
- 
-       if not To'Valid then
-          raise Constraint_Error;
-       end if;
- 
-       FIO.Check_File_Open (AP (File));
- 
-       if To = File.Col then
-          return;
-       end if;
- 
-       if Mode (File) >= Out_File then
-          if File.Line_Length /= 0 and then To > File.Line_Length then
-             raise Layout_Error;
-          end if;
- 
-          if To < File.Col then
-             New_Line (File);
-          end if;
- 
-          while File.Col < To loop
-             Put (File, ' ');
-          end loop;
- 
-       else
-          loop
-             ch := Getc (File);
- 
-             if ch = EOF then
-                raise End_Error;
- 
-             elsif ch = LM then
-                File.Line := File.Line + 1;
-                File.Col := 1;
- 
-             elsif ch = PM and then File.Is_Regular_File then
-                File.Page := File.Page + 1;
-                File.Line := 1;
-                File.Col := 1;
- 
-             elsif To = File.Col then
-                Ungetc (ch, File);
-                return;
- 
-             else
-                File.Col := File.Col + 1;
-             end if;
-          end loop;
-       end if;
-    end Set_Col;
- 
-    procedure Set_Col (To : Positive_Count) is
-    begin
-       Set_Col (Current_Out, To);
-    end Set_Col;
- 
-    ---------------
-    -- Set_Error --
-    ---------------
- 
-    procedure Set_Error (File : File_Type) is
-    begin
-       FIO.Check_Write_Status (AP (File));
-       Current_Err := File;
-    end Set_Error;
- 
-    ---------------
-    -- Set_Input --
-    ---------------
- 
-    procedure Set_Input (File : File_Type) is
-    begin
-       FIO.Check_Read_Status (AP (File));
-       Current_In := File;
-    end Set_Input;
- 
-    --------------
-    -- Set_Line --
-    --------------
- 
-    procedure Set_Line
-      (File : File_Type;
-       To   : Positive_Count)
-    is
-    begin
-       --  Raise Constraint_Error if out of range value. The reason for this
-       --  explicit test is that we don't want junk values around, even if
-       --  checks are off in the caller.
- 
-       if not To'Valid then
-          raise Constraint_Error;
-       end if;
- 
-       FIO.Check_File_Open (AP (File));
- 
-       if To = File.Line then
-          return;
-       end if;
- 
-       if Mode (File) >= Out_File then
-          if File.Page_Length /= 0 and then To > File.Page_Length then
-             raise Layout_Error;
-          end if;
- 
-          if To < File.Line then
-             New_Page (File);
-          end if;
- 
-          while File.Line < To loop
-             New_Line (File);
-          end loop;
- 
-       else
-          while To /= File.Line loop
-             Skip_Line (File);
-          end loop;
-       end if;
-    end Set_Line;
- 
-    procedure Set_Line (To : Positive_Count) is
-    begin
-       Set_Line (Current_Out, To);
-    end Set_Line;
- 
-    ---------------------
-    -- Set_Line_Length --
-    ---------------------
- 
-    procedure Set_Line_Length (File : File_Type; To : Count) is
-    begin
-       --  Raise Constraint_Error if out of range value. The reason for this
-       --  explicit test is that we don't want junk values around, even if
-       --  checks are off in the caller.
- 
-       if not To'Valid then
-          raise Constraint_Error;
-       end if;
- 
-       FIO.Check_Write_Status (AP (File));
-       File.Line_Length := To;
-    end Set_Line_Length;
- 
-    procedure Set_Line_Length (To : Count) is
-    begin
-       Set_Line_Length (Current_Out, To);
-    end Set_Line_Length;
- 
-    ----------------
-    -- Set_Output --
-    ----------------
- 
-    procedure Set_Output (File : File_Type) is
-    begin
-       FIO.Check_Write_Status (AP (File));
-       Current_Out := File;
-    end Set_Output;
- 
-    ---------------------
-    -- Set_Page_Length --
-    ---------------------
- 
-    procedure Set_Page_Length (File : File_Type; To : Count) is
-    begin
-       --  Raise Constraint_Error if out of range value. The reason for this
-       --  explicit test is that we don't want junk values around, even if
-       --  checks are off in the caller.
- 
-       if not To'Valid then
-          raise Constraint_Error;
-       end if;
- 
-       FIO.Check_Write_Status (AP (File));
-       File.Page_Length := To;
-    end Set_Page_Length;
- 
-    procedure Set_Page_Length (To : Count) is
-    begin
-       Set_Page_Length (Current_Out, To);
-    end Set_Page_Length;
- 
-    --------------
-    -- Set_WCEM --
-    --------------
- 
-    procedure Set_WCEM (File : in out File_Type) is
-       Start : Natural;
-       Stop  : Natural;
- 
-    begin
-       File.WC_Method := WCEM_Brackets;
-       FIO.Form_Parameter (File.Form.all, "wcem", Start, Stop);
- 
-       if Start = 0 then
-          File.WC_Method := WCEM_Brackets;
- 
-       else
-          if Stop = Start then
-             for J in WC_Encoding_Letters'Range loop
-                if File.Form (Start) = WC_Encoding_Letters (J) then
-                   File.WC_Method := J;
-                   return;
-                end if;
-             end loop;
-          end if;
- 
-          Close (File);
-          raise Use_Error with "invalid WCEM form parameter";
-       end if;
-    end Set_WCEM;
- 
-    ---------------
-    -- Skip_Line --
-    ---------------
- 
-    procedure Skip_Line
-      (File    : File_Type;
-       Spacing : Positive_Count := 1)
-    is
-       ch : int;
- 
-    begin
-       --  Raise Constraint_Error if out of range value. The reason for this
-       --  explicit test is that we don't want junk values around, even if
-       --  checks are off in the caller.
- 
-       if not Spacing'Valid then
-          raise Constraint_Error;
-       end if;
- 
-       FIO.Check_Read_Status (AP (File));
- 
-       for L in 1 .. Spacing loop
-          if File.Before_LM then
-             File.Before_LM := False;
-             File.Before_LM_PM := False;
- 
-          else
-             ch := Getc (File);
- 
-             --  If at end of file now, then immediately raise End_Error. Note
-             --  that we can never be positioned between a line mark and a page
-             --  mark, so if we are at the end of file, we cannot logically be
-             --  before the implicit page mark that is at the end of the file.
- 
-             --  For the same reason, we do not need an explicit check for a
-             --  page mark. If there is a FF in the middle of a line, the file
-             --  is not in canonical format and we do not care about the page
-             --  numbers for files other than ones in canonical format.
- 
-             if ch = EOF then
-                raise End_Error;
-             end if;
- 
-             --  If not at end of file, then loop till we get to an LM or EOF.
-             --  The latter case happens only in non-canonical files where the
-             --  last line is not terminated by LM, but we don't want to blow
-             --  up for such files, so we assume an implicit LM in this case.
- 
-             loop
-                exit when ch = LM or else ch = EOF;
-                ch := Getc (File);
-             end loop;
-          end if;
- 
-          --  We have got past a line mark, now, for a regular file only,
-          --  see if a page mark immediately follows this line mark and
-          --  if so, skip past the page mark as well. We do not do this
-          --  for non-regular files, since it would cause an undesirable
-          --  wait for an additional character.
- 
-          File.Col := 1;
-          File.Line := File.Line + 1;
- 
-          if File.Before_LM_PM then
-             File.Page := File.Page + 1;
-             File.Line := 1;
-             File.Before_LM_PM := False;
- 
-          elsif File.Is_Regular_File then
-             ch := Getc (File);
- 
-             --  Page mark can be explicit, or implied at the end of the file
- 
-             if (ch = PM or else ch = EOF)
-               and then File.Is_Regular_File
-             then
-                File.Page := File.Page + 1;
-                File.Line := 1;
-             else
-                Ungetc (ch, File);
-             end if;
-          end if;
-       end loop;
- 
-       File.Before_Wide_Character := False;
-    end Skip_Line;
- 
-    procedure Skip_Line (Spacing : Positive_Count := 1) is
-    begin
-       Skip_Line (Current_In, Spacing);
-    end Skip_Line;
- 
-    ---------------
-    -- Skip_Page --
-    ---------------
- 
-    procedure Skip_Page (File : File_Type) is
-       ch : int;
- 
-    begin
-       FIO.Check_Read_Status (AP (File));
- 
-       --  If at page mark already, just skip it
- 
-       if File.Before_LM_PM then
-          File.Before_LM := False;
-          File.Before_LM_PM := False;
-          File.Page := File.Page + 1;
-          File.Line := 1;
-          File.Col  := 1;
-          return;
-       end if;
- 
-       --  This is a bit tricky, if we are logically before an LM then
-       --  it is not an error if we are at an end of file now, since we
-       --  are not really at it.
- 
-       if File.Before_LM then
-          File.Before_LM := False;
-          File.Before_LM_PM := False;
-          ch := Getc (File);
- 
-       --  Otherwise we do raise End_Error if we are at the end of file now
- 
-       else
-          ch := Getc (File);
- 
-          if ch = EOF then
-             raise End_Error;
-          end if;
-       end if;
- 
-       --  Now we can just rumble along to the next page mark, or to the
-       --  end of file, if that comes first. The latter case happens when
-       --  the page mark is implied at the end of file.
- 
-       loop
-          exit when ch = EOF
-            or else (ch = PM and then File.Is_Regular_File);
-          ch := Getc (File);
-       end loop;
- 
-       File.Page := File.Page + 1;
-       File.Line := 1;
-       File.Col  := 1;
-       File.Before_Wide_Character := False;
-    end Skip_Page;
- 
-    procedure Skip_Page is
-    begin
-       Skip_Page (Current_In);
-    end Skip_Page;
- 
-    --------------------
-    -- Standard_Error --
-    --------------------
- 
-    function Standard_Error return File_Type is
-    begin
-       return Standard_Err;
-    end Standard_Error;
- 
-    function Standard_Error return File_Access is
-    begin
-       return Standard_Err'Access;
-    end Standard_Error;
- 
-    --------------------
-    -- Standard_Input --
-    --------------------
- 
-    function Standard_Input return File_Type is
-    begin
-       return Standard_In;
-    end Standard_Input;
- 
-    function Standard_Input return File_Access is
-    begin
-       return Standard_In'Access;
-    end Standard_Input;
- 
-    ---------------------
-    -- Standard_Output --
-    ---------------------
- 
-    function Standard_Output return File_Type is
-    begin
-       return Standard_Out;
-    end Standard_Output;
- 
-    function Standard_Output return File_Access is
-    begin
-       return Standard_Out'Access;
-    end Standard_Output;
- 
-    --------------------
-    -- Terminate_Line --
-    --------------------
- 
-    procedure Terminate_Line (File : File_Type) is
-    begin
-       FIO.Check_File_Open (AP (File));
- 
-       --  For file other than In_File, test for needing to terminate last line
- 
-       if Mode (File) /= In_File then
- 
-          --  If not at start of line definition need new line
- 
-          if File.Col /= 1 then
-             New_Line (File);
- 
-          --  For files other than standard error and standard output, we
-          --  make sure that an empty file has a single line feed, so that
-          --  it is properly formatted. We avoid this for the standard files
-          --  because it is too much of a nuisance to have these odd line
-          --  feeds when nothing has been written to the file.
- 
-          elsif (File /= Standard_Err and then File /= Standard_Out)
-            and then (File.Line = 1 and then File.Page = 1)
-          then
-             New_Line (File);
-          end if;
-       end if;
-    end Terminate_Line;
- 
-    ------------
-    -- Ungetc --
-    ------------
- 
-    procedure Ungetc (ch : int; File : File_Type) is
-    begin
-       if ch /= EOF then
-          if ungetc (ch, File.Stream) = EOF then
-             raise Device_Error;
-          end if;
-       end if;
-    end Ungetc;
- 
-    -----------
-    -- Write --
-    -----------
- 
-    --  This is the primitive Stream Write routine, used when a Text_IO file
-    --  is treated directly as a stream using Text_IO.Streams.Stream.
- 
-    procedure Write
-      (File : in out Wide_Text_AFCB;
-       Item : Stream_Element_Array)
-    is
-       pragma Warnings (Off, File);
-       --  Because in this implementation we don't need IN OUT, we only read
- 
-       Siz : constant size_t := Item'Length;
- 
-    begin
-       if File.Mode = FCB.In_File then
-          raise Mode_Error;
-       end if;
- 
-       --  Now we do the write. Since this is a text file, it is normally in
-       --  text mode, but stream data must be written in binary mode, so we
-       --  temporarily set binary mode for the write, resetting it after.
-       --  These calls have no effect in a system (like Unix) where there is
-       --  no distinction between text and binary files.
- 
-       set_binary_mode (fileno (File.Stream));
- 
-       if fwrite (Item'Address, 1, Siz, File.Stream) /= Siz then
-          raise Device_Error;
-       end if;
- 
-       set_text_mode (fileno (File.Stream));
-    end Write;
- 
- begin
-    --  Initialize Standard Files
- 
-    for J in WC_Encoding_Method loop
-       if WC_Encoding = WC_Encoding_Letters (J) then
-          Default_WCEM := J;
-       end if;
-    end loop;
- 
-    Initialize_Standard_Files;
- 
-    FIO.Chain_File (AP (Standard_In));
-    FIO.Chain_File (AP (Standard_Out));
-    FIO.Chain_File (AP (Standard_Err));
- 
- end Ada.Wide_Text_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-witeio.ads gcc-8.1.0/gcc/ada/a-witeio.ads
*** gcc-7.3.0/gcc/ada/a-witeio.ads	Thu Jul 17 06:37:45 2014
--- gcc-8.1.0/gcc/ada/a-witeio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,495 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                     A D A . W I D E _ T E X T _ I O                      --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2014, Free Software Foundation, 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Note: the generic subpackages of Wide_Text_IO (Integer_IO, Float_IO,
- --  Fixed_IO, Modular_IO, Decimal_IO and Enumeration_IO) appear as private
- --  children in GNAT. These children are with'ed automatically if they are
- --  referenced, so this rearrangement is invisible to user programs, but has
- --  the advantage that only the needed parts of Wide_Text_IO are processed
- --  and loaded.
- 
- with Ada.IO_Exceptions;
- with Ada.Streams;
- 
- with Interfaces.C_Streams;
- 
- with System;
- with System.File_Control_Block;
- with System.WCh_Con;
- 
- package Ada.Wide_Text_IO is
- 
-    type File_Type is limited private;
-    type File_Mode is (In_File, Out_File, Append_File);
- 
-    --  The following representation clause allows the use of unchecked
-    --  conversion for rapid translation between the File_Mode type
-    --  used in this package and System.File_IO.
- 
-    for File_Mode use
-      (In_File     => 0,  -- System.FIle_IO.File_Mode'Pos (In_File)
-       Out_File    => 2,  -- System.File_IO.File_Mode'Pos (Out_File)
-       Append_File => 3); -- System.File_IO.File_Mode'Pos (Append_File)
- 
-    type Count is range 0 .. Natural'Last;
-    --  The value of Count'Last must be large enough so that the assumption that
-    --  the Line, Column and Page counts can never exceed this value is valid.
- 
-    subtype Positive_Count is Count range 1 .. Count'Last;
- 
-    Unbounded : constant Count := 0;
-    --  Line and page length
- 
-    subtype Field is Integer range 0 .. 255;
-    --  Note: if for any reason, there is a need to increase this value, then it
-    --  will be necessary to change the corresponding value in System.Img_Real
-    --  in file s-imgrea.adb.
- 
-    subtype Number_Base is Integer range 2 .. 16;
- 
-    type Type_Set is (Lower_Case, Upper_Case);
- 
-    ---------------------
-    -- File Management --
-    ---------------------
- 
-    procedure Create
-      (File : in out File_Type;
-       Mode : File_Mode := Out_File;
-       Name : String := "";
-       Form : String := "");
- 
-    procedure Open
-      (File : in out File_Type;
-       Mode : File_Mode;
-       Name : String;
-       Form : String := "");
- 
-    procedure Close  (File : in out File_Type);
-    procedure Delete (File : in out File_Type);
-    procedure Reset  (File : in out File_Type; Mode : File_Mode);
-    procedure Reset  (File : in out File_Type);
- 
-    function Mode (File : File_Type) return File_Mode;
-    function Name (File : File_Type) return String;
-    function Form (File : File_Type) return String;
- 
-    function Is_Open (File : File_Type) return Boolean;
- 
-    ------------------------------------------------------
-    -- Control of default input, output and error files --
-    ------------------------------------------------------
- 
-    procedure Set_Input  (File : File_Type);
-    procedure Set_Output (File : File_Type);
-    procedure Set_Error  (File : File_Type);
- 
-    function Standard_Input  return File_Type;
-    function Standard_Output return File_Type;
-    function Standard_Error  return File_Type;
- 
-    function Current_Input  return File_Type;
-    function Current_Output return File_Type;
-    function Current_Error  return File_Type;
- 
-    type File_Access is access constant File_Type;
- 
-    function Standard_Input  return File_Access;
-    function Standard_Output return File_Access;
-    function Standard_Error  return File_Access;
- 
-    function Current_Input  return File_Access;
-    function Current_Output return File_Access;
-    function Current_Error  return File_Access;
- 
-    --------------------
-    -- Buffer control --
-    --------------------
- 
-    --  Note: The parameter file is in out in the RM, but as pointed out
-    --  in <<95-5166.a Tucker Taft 95-6-23>> this is clearly an oversight.
- 
-    procedure Flush (File : File_Type);
-    procedure Flush;
- 
-    --------------------------------------------
-    -- Specification of line and page lengths --
-    --------------------------------------------
- 
-    procedure Set_Line_Length (File : File_Type; To : Count);
-    procedure Set_Line_Length (To : Count);
- 
-    procedure Set_Page_Length (File : File_Type; To : Count);
-    procedure Set_Page_Length (To : Count);
- 
-    function Line_Length (File : File_Type) return Count;
-    function Line_Length return Count;
- 
-    function Page_Length (File : File_Type) return Count;
-    function Page_Length return Count;
- 
-    ------------------------------------
-    -- Column, Line, and Page Control --
-    ------------------------------------
- 
-    procedure New_Line (File : File_Type; Spacing : Positive_Count := 1);
-    procedure New_Line (Spacing : Positive_Count := 1);
- 
-    procedure Skip_Line (File : File_Type; Spacing : Positive_Count := 1);
-    procedure Skip_Line (Spacing : Positive_Count := 1);
- 
-    function End_Of_Line (File : File_Type) return Boolean;
-    function End_Of_Line return Boolean;
- 
-    procedure New_Page (File : File_Type);
-    procedure New_Page;
- 
-    procedure Skip_Page (File : File_Type);
-    procedure Skip_Page;
- 
-    function End_Of_Page (File : File_Type) return Boolean;
-    function End_Of_Page return Boolean;
- 
-    function End_Of_File (File : File_Type) return Boolean;
-    function End_Of_File return Boolean;
- 
-    procedure Set_Col (File : File_Type;  To : Positive_Count);
-    procedure Set_Col (To : Positive_Count);
- 
-    procedure Set_Line (File : File_Type; To : Positive_Count);
-    procedure Set_Line (To : Positive_Count);
- 
-    function Col (File : File_Type) return Positive_Count;
-    function Col return Positive_Count;
- 
-    function Line (File : File_Type) return Positive_Count;
-    function Line return Positive_Count;
- 
-    function Page (File : File_Type) return Positive_Count;
-    function Page return Positive_Count;
- 
-    ----------------------------
-    -- Character Input-Output --
-    ----------------------------
- 
-    procedure Get (File : File_Type; Item : out Wide_Character);
-    procedure Get (Item : out Wide_Character);
-    procedure Put (File : File_Type; Item : Wide_Character);
-    procedure Put (Item : Wide_Character);
- 
-    procedure Look_Ahead
-      (File        : File_Type;
-       Item        : out Wide_Character;
-       End_Of_Line : out Boolean);
- 
-    procedure Look_Ahead
-      (Item        : out Wide_Character;
-       End_Of_Line : out Boolean);
- 
-    procedure Get_Immediate
-      (File : File_Type;
-       Item : out Wide_Character);
- 
-    procedure Get_Immediate
-      (Item : out Wide_Character);
- 
-    procedure Get_Immediate
-      (File      : File_Type;
-       Item      : out Wide_Character;
-       Available : out Boolean);
- 
-    procedure Get_Immediate
-      (Item      : out Wide_Character;
-       Available : out Boolean);
- 
-    -------------------------
-    -- String Input-Output --
-    -------------------------
- 
-    procedure Get (File : File_Type; Item : out Wide_String);
-    procedure Get (Item : out Wide_String);
-    procedure Put (File : File_Type; Item : Wide_String);
-    procedure Put (Item : Wide_String);
- 
-    procedure Get_Line
-      (File : File_Type;
-       Item : out Wide_String;
-       Last : out Natural);
- 
-    procedure Get_Line
-      (Item : out Wide_String;
-       Last : out Natural);
- 
-    function Get_Line (File : File_Type) return Wide_String;
-    pragma Ada_05 (Get_Line);
- 
-    function Get_Line return Wide_String;
-    pragma Ada_05 (Get_Line);
- 
-    procedure Put_Line
-      (File : File_Type;
-       Item : Wide_String);
- 
-    procedure Put_Line
-      (Item : Wide_String);
- 
-    ---------------------------------------
-    -- Generic packages for Input-Output --
-    ---------------------------------------
- 
-    --  The generic packages:
- 
-    --    Ada.Wide_Text_IO.Integer_IO
-    --    Ada.Wide_Text_IO.Modular_IO
-    --    Ada.Wide_Text_IO.Float_IO
-    --    Ada.Wide_Text_IO.Fixed_IO
-    --    Ada.Wide_Text_IO.Decimal_IO
-    --    Ada.Wide_Text_IO.Enumeration_IO
- 
-    --  are implemented as separate child packages in GNAT, so the
-    --  spec and body of these packages are to be found in separate
-    --  child units. This implementation detail is hidden from the
-    --  Ada programmer by special circuitry in the compiler that
-    --  treats these child packages as though they were nested in
-    --  Text_IO. The advantage of this special processing is that
-    --  the subsidiary routines needed if these generics are used
-    --  are not loaded when they are not used.
- 
-    ----------------
-    -- Exceptions --
-    ----------------
- 
-    Status_Error : exception renames IO_Exceptions.Status_Error;
-    Mode_Error   : exception renames IO_Exceptions.Mode_Error;
-    Name_Error   : exception renames IO_Exceptions.Name_Error;
-    Use_Error    : exception renames IO_Exceptions.Use_Error;
-    Device_Error : exception renames IO_Exceptions.Device_Error;
-    End_Error    : exception renames IO_Exceptions.End_Error;
-    Data_Error   : exception renames IO_Exceptions.Data_Error;
-    Layout_Error : exception renames IO_Exceptions.Layout_Error;
- 
- private
- 
-    --  The following procedures have a File_Type formal of mode IN OUT because
-    --  they may close the original file. The Close operation may raise an
-    --  exception, but in that case we want any assignment to the formal to
-    --  be effective anyway, so it must be passed by reference (or the caller
-    --  will be left with a dangling pointer).
- 
-    pragma Export_Procedure
-      (Internal  => Close,
-       External  => "",
-       Mechanism => Reference);
-    pragma Export_Procedure
-      (Internal  => Delete,
-       External  => "",
-       Mechanism => Reference);
-    pragma Export_Procedure
-      (Internal        => Reset,
-       External        => "",
-       Parameter_Types => (File_Type),
-       Mechanism       => Reference);
-    pragma Export_Procedure
-      (Internal        => Reset,
-       External        => "",
-       Parameter_Types => (File_Type, File_Mode),
-       Mechanism       => (File => Reference));
- 
-    package WCh_Con renames System.WCh_Con;
- 
-    -----------------------------------
-    -- Handling of Format Characters --
-    -----------------------------------
- 
-    --  Line marks are represented by the single character ASCII.LF (16#0A#).
-    --  In DOS and similar systems, underlying file translation takes care
-    --  of translating this to and from the standard CR/LF sequences used in
-    --  these operating systems to mark the end of a line. On output there is
-    --  always a line mark at the end of the last line, but on input, this
-    --  line mark can be omitted, and is implied by the end of file.
- 
-    --  Page marks are represented by the single character ASCII.FF (16#0C#),
-    --  The page mark at the end of the file may be omitted, and is normally
-    --  omitted on output unless an explicit New_Page call is made before
-    --  closing the file. No page mark is added when a file is appended to,
-    --  so, in accordance with the permission in (RM A.10.2(4)), there may
-    --  or may not be a page mark separating preexisting text in the file
-    --  from the new text to be written.
- 
-    --  A file mark is marked by the physical end of file. In DOS translation
-    --  mode on input, an EOF character (SUB = 16#1A#) gets translated to the
-    --  physical end of file, so in effect this character is recognized as
-    --  marking the end of file in DOS and similar systems.
- 
-    LM : constant := Character'Pos (ASCII.LF);
-    --  Used as line mark
- 
-    PM : constant := Character'Pos (ASCII.FF);
-    --  Used as page mark, except at end of file where it is implied
- 
-    -------------------------------------
-    -- Wide_Text_IO File Control Block --
-    -------------------------------------
- 
-    Default_WCEM : WCh_Con.WC_Encoding_Method := WCh_Con.WCEM_UTF8;
-    --  This gets modified during initialization (see body) using
-    --  the default value established in the call to Set_Globals.
- 
-    package FCB renames System.File_Control_Block;
- 
-    type Wide_Text_AFCB is new FCB.AFCB with record
-       Page        : Count := 1;
-       Line        : Count := 1;
-       Col         : Count := 1;
-       Line_Length : Count := 0;
-       Page_Length : Count := 0;
- 
-       Self : aliased File_Type;
-       --  Set to point to the containing Text_AFCB block. This is used to
-       --  implement the Current_{Error,Input,Output} functions which return
-       --  a File_Access, the file access value returned is a pointer to
-       --  the Self field of the corresponding file.
- 
-       Before_LM : Boolean := False;
-       --  This flag is used to deal with the anomalies introduced by the
-       --  peculiar definition of End_Of_File and End_Of_Page in Ada. These
-       --  functions require looking ahead more than one character. Since
-       --  there is no convenient way of backing up more than one character,
-       --  what we do is to leave ourselves positioned past the LM, but set
-       --  this flag, so that we know that from an Ada point of view we are
-       --  in front of the LM, not after it. A bit odd, but it works.
- 
-       Before_LM_PM : Boolean := False;
-       --  This flag similarly handles the case of being physically positioned
-       --  after a LM-PM sequence when logically we are before the LM-PM. This
-       --  flag can only be set if Before_LM is also set.
- 
-       WC_Method : WCh_Con.WC_Encoding_Method := Default_WCEM;
-       --  Encoding method to be used for this file
- 
-       Before_Wide_Character : Boolean := False;
-       --  This flag is set to indicate that a wide character in the input has
-       --  been read by Wide_Text_IO.Look_Ahead. If it is set to True, then it
-       --  means that the stream is logically positioned before the character
-       --  but is physically positioned after it. The character involved must
-       --  not be in the range 16#00#-16#7F#, i.e. if the flag is set, then
-       --  we know the next character has a code greater than 16#7F#, and the
-       --  value of this character is saved in Saved_Wide_Character.
- 
-       Saved_Wide_Character : Wide_Character;
-       --  This field is valid only if Before_Wide_Character is set. It
-       --  contains a wide character read by Look_Ahead. If Look_Ahead
-       --  reads a character in the range 16#0000# to 16#007F#, then it
-       --  can use ungetc to put it back, but ungetc cannot be called
-       --  more than once, so for characters above this range, we don't
-       --  try to back up the file. Instead we save the character in this
-       --  field and set the flag Before_Wide_Character to indicate that
-       --  we are logically positioned before this character even though
-       --  the stream is physically positioned after it.
- 
-    end record;
- 
-    type File_Type is access all Wide_Text_AFCB;
- 
-    function AFCB_Allocate (Control_Block : Wide_Text_AFCB) return FCB.AFCB_Ptr;
- 
-    procedure AFCB_Close (File : not null access Wide_Text_AFCB);
-    procedure AFCB_Free  (File : not null access Wide_Text_AFCB);
- 
-    procedure Read
-      (File : in out Wide_Text_AFCB;
-       Item : out Ada.Streams.Stream_Element_Array;
-       Last : out Ada.Streams.Stream_Element_Offset);
-    --  Read operation used when Wide_Text_IO file is treated as a Stream
- 
-    procedure Write
-      (File : in out Wide_Text_AFCB;
-       Item : Ada.Streams.Stream_Element_Array);
-    --  Write operation used when Wide_Text_IO file is treated as a Stream
- 
-    ------------------------
-    -- The Standard Files --
-    ------------------------
- 
-    Standard_Err_AFCB : aliased Wide_Text_AFCB;
-    Standard_In_AFCB  : aliased Wide_Text_AFCB;
-    Standard_Out_AFCB : aliased Wide_Text_AFCB;
- 
-    Standard_Err : aliased File_Type := Standard_Err_AFCB'Access;
-    Standard_In  : aliased File_Type := Standard_In_AFCB'Access;
-    Standard_Out : aliased File_Type := Standard_Out_AFCB'Access;
-    --  Standard files
- 
-    Current_In   : aliased File_Type := Standard_In;
-    Current_Out  : aliased File_Type := Standard_Out;
-    Current_Err  : aliased File_Type := Standard_Err;
-    --  Current files
- 
-    procedure Initialize_Standard_Files;
-    --  Initializes the file control blocks for the standard files. Called from
-    --  the elaboration routine for this package, and from Reset_Standard_Files
-    --  in package Ada.Wide_Text_IO.Reset_Standard_Files.
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    --  These subprograms are in the private part of the spec so that they can
-    --  be shared by the children of Ada.Wide_Text_IO.
- 
-    function Getc (File : File_Type) return Interfaces.C_Streams.int;
-    --  Gets next character from file, which has already been checked for being
-    --  in read status, and returns the character read if no error occurs. The
-    --  result is EOF if the end of file was read.
- 
-    procedure Get_Character (File : File_Type; Item : out Character);
-    --  This is essentially a copy of the normal Get routine from Text_IO. It
-    --  obtains a single character from the input file File, and places it in
-    --  Item. This character may be the leading character of a Wide_Character
-    --  sequence, but that is up to the caller to deal with.
- 
-    function Get_Wide_Char
-      (C    : Character;
-       File : File_Type) return Wide_Character;
-    --  This function is shared by Get and Get_Immediate to extract a wide
-    --  character value from the given File. The first byte has already been
-    --  read and is passed in C. The wide character value is returned as the
-    --  result, and the file pointer is bumped past the character.
- 
-    function Nextc (File : File_Type) return Interfaces.C_Streams.int;
-    --  Returns next character from file without skipping past it (i.e. it is a
-    --  combination of Getc followed by an Ungetc).
- 
- end Ada.Wide_Text_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-wrstfi.adb gcc-8.1.0/gcc/ada/a-wrstfi.adb
*** gcc-7.3.0/gcc/ada/a-wrstfi.adb	Wed Oct 28 13:31:51 2009
--- gcc-8.1.0/gcc/ada/a-wrstfi.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,39 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                  ADA.WIDE_TEXT_IO.RESET_STANDARD_FILES                   --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --            Copyright (C) 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- --
- -- 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- -------------------------------------------
- -- Ada.Wide_Text_IO.Reset_Standard_Files --
- -------------------------------------------
- 
- procedure Ada.Wide_Text_IO.Reset_Standard_Files is
- begin
-    Ada.Wide_Text_IO.Initialize_Standard_Files;
- end Ada.Wide_Text_IO.Reset_Standard_Files;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-wrstfi.ads gcc-8.1.0/gcc/ada/a-wrstfi.ads
*** gcc-7.3.0/gcc/ada/a-wrstfi.ads	Wed Oct 28 13:31:51 2009
--- gcc-8.1.0/gcc/ada/a-wrstfi.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,41 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                  ADA.WIDE_TEXT_IO.RESET_STANDARD_FILES                   --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --            Copyright (C) 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- --
- -- 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 a reset routine that resets the standard files used
- --  by Ada.Wide_Text_IO. This is useful in systems such as VxWorks where
- --  Ada.Wide_Text_IO is elaborated at the program start, but a system restart
- --  may alter the status of these files, resulting in incorrect operation of
- --  Wide_Text_IO (in particular if the standard input file is changed to be
- --  interactive, then Get_Line may hang looking for an extra character after
- --  the end of the line.
- 
- procedure Ada.Wide_Text_IO.Reset_Standard_Files;
- --  Reset standard Wide_Text_IO files as described above
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-wtcoau.adb gcc-8.1.0/gcc/ada/a-wtcoau.adb
*** gcc-7.3.0/gcc/ada/a-wtcoau.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-wtcoau.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,202 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --         A D A . W I D E _ T E X T _ I O . C O M P L E X _ A U X          --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          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- --
- -- 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.Wide_Text_IO.Generic_Aux; use Ada.Wide_Text_IO.Generic_Aux;
- with Ada.Wide_Text_IO.Float_Aux;
- 
- with System.Img_Real; use System.Img_Real;
- 
- package body Ada.Wide_Text_IO.Complex_Aux is
- 
-    package Aux renames Ada.Wide_Text_IO.Float_Aux;
- 
-    ---------
-    -- Get --
-    ---------
- 
-    procedure Get
-      (File  : File_Type;
-       ItemR : out Long_Long_Float;
-       ItemI : out Long_Long_Float;
-       Width : Field)
-    is
-       Buf   : String (1 .. Field'Last);
-       Stop  : Integer := 0;
-       Ptr   : aliased Integer;
-       Paren : Boolean := False;
- 
-    begin
-       --  General note for following code, exceptions from the calls
-       --  to Get for components of the complex value are propagated.
- 
-       if Width /= 0 then
-          Load_Width (File, Width, Buf, Stop);
-          Gets (Buf (1 .. Stop), ItemR, ItemI, Ptr);
- 
-          for J in Ptr + 1 .. Stop loop
-             if not Is_Blank (Buf (J)) then
-                raise Data_Error;
-             end if;
-          end loop;
- 
-       --  Case of width = 0
- 
-       else
-          Load_Skip (File);
-          Ptr := 0;
-          Load (File, Buf, Ptr, '(', Paren);
-          Aux.Get (File, ItemR, 0);
-          Load_Skip (File);
-          Load (File, Buf, Ptr, ',');
-          Aux.Get (File, ItemI, 0);
- 
-          if Paren then
-             Load_Skip (File);
-             Load (File, Buf, Ptr, ')', Paren);
- 
-             if not Paren then
-                raise Data_Error;
-             end if;
-          end if;
-       end if;
-    end Get;
- 
-    ----------
-    -- Gets --
-    ----------
- 
-    procedure Gets
-      (From  : String;
-       ItemR : out Long_Long_Float;
-       ItemI : out Long_Long_Float;
-       Last  : out Positive)
-    is
-       Paren : Boolean;
-       Pos   : Integer;
- 
-    begin
-       String_Skip (From, Pos);
- 
-       if From (Pos) = '(' then
-          Pos := Pos + 1;
-          Paren := True;
-       else
-          Paren := False;
-       end if;
- 
-       Aux.Gets (From (Pos .. From'Last), ItemR, Pos);
- 
-       String_Skip (From (Pos + 1 .. From'Last), Pos);
- 
-       if From (Pos) = ',' then
-          Pos := Pos + 1;
-       end if;
- 
-       Aux.Gets (From (Pos .. From'Last), ItemI, Pos);
- 
-       if Paren then
-          String_Skip (From (Pos + 1 .. From'Last), Pos);
- 
-          if From (Pos) /= ')' then
-             raise Data_Error;
-          end if;
-       end if;
- 
-       Last := Pos;
-    end Gets;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put
-      (File  : File_Type;
-       ItemR : Long_Long_Float;
-       ItemI : Long_Long_Float;
-       Fore  : Field;
-       Aft   : Field;
-       Exp   : Field)
-    is
-    begin
-       Put (File, '(');
-       Aux.Put (File, ItemR, Fore, Aft, Exp);
-       Put (File, ',');
-       Aux.Put (File, ItemI, Fore, Aft, Exp);
-       Put (File, ')');
-    end Put;
- 
-    ----------
-    -- Puts --
-    ----------
- 
-    procedure Puts
-      (To    : out String;
-       ItemR : Long_Long_Float;
-       ItemI : Long_Long_Float;
-       Aft   :  Field;
-       Exp   :  Field)
-    is
-       I_String : String (1 .. 3 * Field'Last);
-       R_String : String (1 .. 3 * Field'Last);
- 
-       Iptr : Natural;
-       Rptr : Natural;
- 
-    begin
-       --  Both parts are initially converted with a Fore of 0
- 
-       Rptr := 0;
-       Set_Image_Real (ItemR, R_String, Rptr, 0, Aft, Exp);
-       Iptr := 0;
-       Set_Image_Real (ItemI, I_String, Iptr, 0, Aft, Exp);
- 
-       --  Check room for both parts plus parens plus comma (RM G.1.3(34))
- 
-       if Rptr + Iptr + 3 > To'Length then
-          raise Layout_Error;
-       end if;
- 
-       --  If there is room, layout result according to (RM G.1.3(31-33))
- 
-       To (To'First) := '(';
-       To (To'First + 1 .. To'First + Rptr) := R_String (1 .. Rptr);
-       To (To'First + Rptr + 1) := ',';
- 
-       To (To'Last) := ')';
- 
-       To (To'Last - Iptr .. To'Last - 1) := I_String (1 .. Iptr);
- 
-       for J in To'First + Rptr + 2 .. To'Last - Iptr - 1 loop
-          To (J) := ' ';
-       end loop;
-    end Puts;
- 
- end Ada.Wide_Text_IO.Complex_Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-wtcoau.ads gcc-8.1.0/gcc/ada/a-wtcoau.ads
*** gcc-7.3.0/gcc/ada/a-wtcoau.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-wtcoau.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,69 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --         A D A . W I D E _ T E X T _ I O . C O M P L E X _ A U X          --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          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- --
- -- 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 routines for Ada.Wide_Text_IO.Complex_IO that
- --  are shared among separate instantiations of this package. The routines
- --  in this package are identical semantically to those in Complex_IO itself,
- --  except that the generic parameter Complex has been replaced by separate
- --  real and imaginary values of type Long_Long_Float, and default parameters
- --  have been removed because they are supplied explicitly by the calls from
- --  within the generic template.
- 
- package Ada.Wide_Text_IO.Complex_Aux is
- 
-    procedure Get
-      (File  : File_Type;
-       ItemR : out Long_Long_Float;
-       ItemI : out Long_Long_Float;
-       Width : Field);
- 
-    procedure Gets
-      (From  : String;
-       ItemR : out Long_Long_Float;
-       ItemI : out Long_Long_Float;
-       Last  : out Positive);
- 
-    procedure Put
-      (File  : File_Type;
-       ItemR : Long_Long_Float;
-       ItemI : Long_Long_Float;
-       Fore  : Field;
-       Aft   : Field;
-       Exp   : Field);
- 
-    procedure Puts
-      (To    : out String;
-       ItemR : Long_Long_Float;
-       ItemI : Long_Long_Float;
-       Aft   : Field;
-       Exp   : Field);
- 
- end Ada.Wide_Text_IO.Complex_Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-wtcoio.adb gcc-8.1.0/gcc/ada/a-wtcoio.adb
*** gcc-7.3.0/gcc/ada/a-wtcoio.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-wtcoio.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,159 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --           A D A . W I D E _ T E X T _ IO . C O M P L E X _ I O           --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          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- --
- -- 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.Wide_Text_IO.Complex_Aux;
- 
- with System.WCh_Con; use System.WCh_Con;
- with System.WCh_WtS; use System.WCh_WtS;
- 
- with Ada.Unchecked_Conversion;
- 
- package body Ada.Wide_Text_IO.Complex_IO is
- 
-    package Aux renames Ada.Wide_Text_IO.Complex_Aux;
- 
-    subtype LLF is Long_Long_Float;
-    --  Type used for calls to routines in Aux
- 
-    function TFT is new
-      Ada.Unchecked_Conversion (File_Type, Ada.Wide_Text_IO.File_Type);
-    --  This unchecked conversion is to get around a visibility bug in
-    --  GNAT version 2.04w. It should be possible to simply use the
-    --  subtype declared above and do normal checked conversions.
- 
-    ---------
-    -- Get --
-    ---------
- 
-    procedure Get
-      (File  : File_Type;
-       Item  : out Complex;
-       Width : Field := 0)
-    is
-       Real_Item : Real'Base;
-       Imag_Item : Real'Base;
- 
-    begin
-       Aux.Get (TFT (File), LLF (Real_Item), LLF (Imag_Item), Width);
-       Item := (Real_Item, Imag_Item);
- 
-    exception
-       when Constraint_Error => raise Data_Error;
-    end Get;
- 
-    ---------
-    -- Get --
-    ---------
- 
-    procedure Get
-      (Item  : out Complex;
-       Width : Field := 0)
-    is
-    begin
-       Get (Current_Input, Item, Width);
-    end Get;
- 
-    ---------
-    -- Get --
-    ---------
- 
-    procedure Get
-      (From : Wide_String;
-       Item : out Complex;
-       Last : out Positive)
-    is
-       Real_Item : Real'Base;
-       Imag_Item : Real'Base;
- 
-       S : constant String := Wide_String_To_String (From, WCEM_Upper);
-       --  String on which we do the actual conversion. Note that the method
-       --  used for wide character encoding is irrelevant, since if there is
-       --  a character outside the Standard.Character range then the call to
-       --  Aux.Gets will raise Data_Error in any case.
- 
-    begin
-       Aux.Gets (S, LLF (Real_Item), LLF (Imag_Item), Last);
-       Item := (Real_Item, Imag_Item);
- 
-    exception
-       when Data_Error => raise Constraint_Error;
-    end Get;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put
-      (File : File_Type;
-       Item : Complex;
-       Fore : Field := Default_Fore;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp)
-    is
-    begin
-       Aux.Put (TFT (File), LLF (Re (Item)), LLF (Im (Item)), Fore, Aft, Exp);
-    end Put;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put
-      (Item : Complex;
-       Fore : Field := Default_Fore;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp)
-    is
-    begin
-       Put (Current_Output, Item, Fore, Aft, Exp);
-    end Put;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put
-      (To   : out Wide_String;
-       Item : Complex;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp)
-    is
-       S : String (To'First .. To'Last);
- 
-    begin
-       Aux.Puts (S, LLF (Re (Item)), LLF (Im (Item)), Aft, Exp);
- 
-       for J in S'Range loop
-          To (J) := Wide_Character'Val (Character'Pos (S (J)));
-       end loop;
-    end Put;
- 
- end Ada.Wide_Text_IO.Complex_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-wtcoio.ads gcc-8.1.0/gcc/ada/a-wtcoio.ads
*** gcc-7.3.0/gcc/ada/a-wtcoio.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-wtcoio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,62 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --           A D A . W I D E _ T E X T _ IO . C O M P L E X _ I O           --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Numerics.Generic_Complex_Types;
- 
- generic
-    with package Complex_Types is new Ada.Numerics.Generic_Complex_Types (<>);
- 
- package Ada.Wide_Text_IO.Complex_IO is
- 
-    use Complex_Types;
- 
-    Default_Fore : Field := 2;
-    Default_Aft  : Field := Real'Digits - 1;
-    Default_Exp  : Field := 3;
- 
-    procedure Get
-      (File  : File_Type;
-       Item  : out Complex;
-       Width : Field := 0);
- 
-    procedure Get
-      (Item  : out Complex;
-       Width : Field := 0);
- 
-    procedure Put
-      (File : File_Type;
-       Item : Complex;
-       Fore : Field := Default_Fore;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp);
- 
-    procedure Put
-      (Item : Complex;
-       Fore : Field := Default_Fore;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp);
- 
-    procedure Get
-      (From : Wide_String;
-       Item : out Complex;
-       Last : out Positive);
- 
-    procedure Put
-      (To   : out Wide_String;
-       Item : Complex;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp);
- 
- end Ada.Wide_Text_IO.Complex_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-wtcstr.adb gcc-8.1.0/gcc/ada/a-wtcstr.adb
*** gcc-7.3.0/gcc/ada/a-wtcstr.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-wtcstr.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,85 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                        GNAT RUN-TIME COMPONENTS                          --
- --                                                                          --
- --           A D A . W I D E _ T E X T _ I O . C _ S T R E A M S            --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          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- --
- -- 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 Interfaces.C_Streams; use Interfaces.C_Streams;
- with System.File_IO;
- with System.File_Control_Block;
- with Ada.Unchecked_Conversion;
- 
- package body Ada.Wide_Text_IO.C_Streams is
- 
-    package FIO renames System.File_IO;
-    package FCB renames System.File_Control_Block;
- 
-    subtype AP is FCB.AFCB_Ptr;
- 
-    function To_FCB is new Ada.Unchecked_Conversion (File_Mode, FCB.File_Mode);
- 
-    --------------
-    -- C_Stream --
-    --------------
- 
-    function C_Stream (F : File_Type) return FILEs is
-    begin
-       FIO.Check_File_Open (AP (F));
-       return F.Stream;
-    end C_Stream;
- 
-    ----------
-    -- Open --
-    ----------
- 
-    procedure Open
-      (File     : in out File_Type;
-       Mode     : File_Mode;
-       C_Stream : FILEs;
-       Form     : String := "";
-       Name     : String := "")
-    is
-       Dummy_File_Control_Block : Wide_Text_AFCB;
-       pragma Warnings (Off, Dummy_File_Control_Block);
-       --  Yes, we know this is never assigned a value, only the tag
-       --  is used for dispatching purposes, so that's expected.
- 
-    begin
-       FIO.Open (File_Ptr  => AP (File),
-                 Dummy_FCB => Dummy_File_Control_Block,
-                 Mode      => To_FCB (Mode),
-                 Name      => Name,
-                 Form      => Form,
-                 Amethod   => 'W',
-                 Creat     => False,
-                 Text      => True,
-                 C_Stream  => C_Stream);
- 
-    end Open;
- 
- end Ada.Wide_Text_IO.C_Streams;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-wtcstr.ads gcc-8.1.0/gcc/ada/a-wtcstr.ads
*** gcc-7.3.0/gcc/ada/a-wtcstr.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-wtcstr.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,53 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --           A D A . W I D E _ T E X T _ I O . C _ S T R E A M S            --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          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- --
- -- 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 an interface between Ada.Wide_Text_IO and the
- --  C streams. This allows sharing of a stream between Ada and C or C++,
- --  as well as allowing the Ada program to operate directly on the stream.
- 
- with Interfaces.C_Streams;
- 
- package Ada.Wide_Text_IO.C_Streams is
- 
-    package ICS renames Interfaces.C_Streams;
- 
-    function C_Stream (F : File_Type) return ICS.FILEs;
-    --  Obtain stream from existing open file
- 
-    procedure Open
-      (File     : in out File_Type;
-       Mode     : File_Mode;
-       C_Stream : ICS.FILEs;
-       Form     : String := "";
-       Name     : String := "");
-    --  Create new file from existing stream
- 
- end Ada.Wide_Text_IO.C_Streams;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-wtdeau.adb gcc-8.1.0/gcc/ada/a-wtdeau.adb
*** gcc-7.3.0/gcc/ada/a-wtdeau.adb	Mon Jul 13 08:39:28 2009
--- gcc-8.1.0/gcc/ada/a-wtdeau.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,265 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --         A D A . W I D E _ T E X T _ I O . D E C I M A L _ A U X          --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          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- --
- -- 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.Wide_Text_IO.Generic_Aux; use Ada.Wide_Text_IO.Generic_Aux;
- with Ada.Wide_Text_IO.Float_Aux;   use Ada.Wide_Text_IO.Float_Aux;
- 
- with System.Img_Dec; use System.Img_Dec;
- with System.Img_LLD; use System.Img_LLD;
- with System.Val_Dec; use System.Val_Dec;
- with System.Val_LLD; use System.Val_LLD;
- 
- package body Ada.Wide_Text_IO.Decimal_Aux is
- 
-    -------------
-    -- Get_Dec --
-    -------------
- 
-    function Get_Dec
-      (File  : File_Type;
-       Width : Field;
-       Scale : Integer) return Integer
-    is
-       Buf  : String (1 .. Field'Last);
-       Ptr  : aliased Integer;
-       Stop : Integer := 0;
-       Item : Integer;
- 
-    begin
-       if Width /= 0 then
-          Load_Width (File, Width, Buf, Stop);
-          String_Skip (Buf, Ptr);
-       else
-          Load_Real (File, Buf, Stop);
-          Ptr := 1;
-       end if;
- 
-       Item := Scan_Decimal (Buf, Ptr'Access, Stop, Scale);
-       Check_End_Of_Field (Buf, Stop, Ptr, Width);
-       return Item;
-    end Get_Dec;
- 
-    -------------
-    -- Get_LLD --
-    -------------
- 
-    function Get_LLD
-      (File  : File_Type;
-       Width : Field;
-       Scale : Integer) return Long_Long_Integer
-    is
-       Buf  : String (1 .. Field'Last);
-       Ptr  : aliased Integer;
-       Stop : Integer := 0;
-       Item : Long_Long_Integer;
- 
-    begin
-       if Width /= 0 then
-          Load_Width (File, Width, Buf, Stop);
-          String_Skip (Buf, Ptr);
-       else
-          Load_Real (File, Buf, Stop);
-          Ptr := 1;
-       end if;
- 
-       Item := Scan_Long_Long_Decimal (Buf, Ptr'Access, Stop, Scale);
-       Check_End_Of_Field (Buf, Stop, Ptr, Width);
-       return Item;
-    end Get_LLD;
- 
-    --------------
-    -- Gets_Dec --
-    --------------
- 
-    function Gets_Dec
-      (From  : String;
-       Last  : not null access Positive;
-       Scale : Integer) return Integer
-    is
-       Pos  : aliased Integer;
-       Item : Integer;
- 
-    begin
-       String_Skip (From, Pos);
-       Item := Scan_Decimal (From, Pos'Access, From'Last, Scale);
-       Last.all := Pos - 1;
-       return Item;
- 
-    exception
-       when Constraint_Error =>
-          Last.all := Pos - 1;
-          raise Data_Error;
- 
-    end Gets_Dec;
- 
-    --------------
-    -- Gets_LLD --
-    --------------
- 
-    function Gets_LLD
-      (From  : String;
-       Last  : not null access Positive;
-       Scale : Integer) return Long_Long_Integer
-    is
-       Pos  : aliased Integer;
-       Item : Long_Long_Integer;
- 
-    begin
-       String_Skip (From, Pos);
-       Item := Scan_Long_Long_Decimal (From, Pos'Access, From'Last, Scale);
-       Last.all := Pos - 1;
-       return Item;
- 
-    exception
-       when Constraint_Error =>
-          Last.all := Pos - 1;
-          raise Data_Error;
- 
-    end Gets_LLD;
- 
-    -------------
-    -- Put_Dec --
-    -------------
- 
-    procedure Put_Dec
-      (File  : File_Type;
-       Item  : Integer;
-       Fore  : Field;
-       Aft   : Field;
-       Exp   : Field;
-       Scale : Integer)
-    is
-       Buf : String (1 .. Field'Last);
-       Ptr : Natural := 0;
- 
-    begin
-       Set_Image_Decimal (Item, Buf, Ptr, Scale, Fore, Aft, Exp);
-       Put_Item (File, Buf (1 .. Ptr));
-    end Put_Dec;
- 
-    -------------
-    -- Put_LLD --
-    -------------
- 
-    procedure Put_LLD
-      (File  : File_Type;
-       Item  : Long_Long_Integer;
-       Fore  : Field;
-       Aft   : Field;
-       Exp   : Field;
-       Scale : Integer)
-    is
-       Buf : String (1 .. Field'Last);
-       Ptr : Natural := 0;
- 
-    begin
-       Set_Image_Long_Long_Decimal (Item, Buf, Ptr, Scale, Fore, Aft, Exp);
-       Put_Item (File, Buf (1 .. Ptr));
-    end Put_LLD;
- 
-    --------------
-    -- Puts_Dec --
-    --------------
- 
-    procedure Puts_Dec
-      (To    : out String;
-       Item  : Integer;
-       Aft   : Field;
-       Exp   : Field;
-       Scale : Integer)
-    is
-       Buf  : String (1 .. Field'Last);
-       Fore : Integer;
-       Ptr  : Natural := 0;
- 
-    begin
-       --  Compute Fore, allowing for Aft digits and the decimal dot
- 
-       Fore := To'Length - Field'Max (1, Aft) - 1;
- 
-       --  Allow for Exp and two more for E+ or E- if exponent present
- 
-       if Exp /= 0 then
-          Fore := Fore - 2 - Exp;
-       end if;
- 
-       --  Make sure we have enough room
- 
-       if Fore < 1 then
-          raise Layout_Error;
-       end if;
- 
-       --  Do the conversion and check length of result
- 
-       Set_Image_Decimal (Item, Buf, Ptr, Scale, Fore, Aft, Exp);
- 
-       if Ptr > To'Length then
-          raise Layout_Error;
-       else
-          To := Buf (1 .. Ptr);
-       end if;
-    end Puts_Dec;
- 
-    --------------
-    -- Puts_Dec --
-    --------------
- 
-    procedure Puts_LLD
-      (To    : out String;
-       Item  : Long_Long_Integer;
-       Aft   : Field;
-       Exp   : Field;
-       Scale : Integer)
-    is
-       Buf  : String (1 .. Field'Last);
-       Fore : Integer;
-       Ptr  : Natural := 0;
- 
-    begin
-       Fore :=
-         (if Exp = 0
-          then To'Length - 1 - Aft
-          else To'Length - 2 - Aft - Exp);
- 
-       if Fore < 1 then
-          raise Layout_Error;
-       end if;
- 
-       Set_Image_Long_Long_Decimal (Item, Buf, Ptr, Scale, Fore, Aft, Exp);
- 
-       if Ptr > To'Length then
-          raise Layout_Error;
-       else
-          To := Buf (1 .. Ptr);
-       end if;
-    end Puts_LLD;
- 
- end Ada.Wide_Text_IO.Decimal_Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-wtdeau.ads gcc-8.1.0/gcc/ada/a-wtdeau.ads
*** gcc-7.3.0/gcc/ada/a-wtdeau.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-wtdeau.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,93 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --         A D A . W I D E _ T E X T _ I O . D E C I M A L _ A U X          --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          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- --
- -- 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 routines for Ada.Wide_Text_IO.Decimal_IO
- --  that are shared among separate instantiations of this package. The
- --  routines in the package are identical semantically to those declared
- --  in Wide_Text_IO, except that default values have been supplied by the
- --  generic, and the Num parameter has been replaced by Integer or
- --  Long_Long_Integer, with an additional Scale parameter giving the
- --  value of Num'Scale. In addition the Get routines return the value
- --  rather than store it in an Out parameter.
- 
- private package Ada.Wide_Text_IO.Decimal_Aux is
- 
-    function Get_Dec
-      (File  : File_Type;
-       Width : Field;
-       Scale : Integer) return Integer;
- 
-    function Get_LLD
-      (File  : File_Type;
-       Width : Field;
-       Scale : Integer) return Long_Long_Integer;
- 
-    function Gets_Dec
-      (From  : String;
-       Last  : not null access Positive;
-       Scale : Integer) return Integer;
- 
-    function Gets_LLD
-      (From  : String;
-       Last  : not null access Positive;
-       Scale : Integer) return Long_Long_Integer;
- 
-    procedure Put_Dec
-      (File  : File_Type;
-       Item  : Integer;
-       Fore  : Field;
-       Aft   : Field;
-       Exp   : Field;
-       Scale : Integer);
- 
-    procedure Put_LLD
-      (File  : File_Type;
-       Item  : Long_Long_Integer;
-       Fore  : Field;
-       Aft   : Field;
-       Exp   : Field;
-       Scale : Integer);
- 
-    procedure Puts_Dec
-      (To    : out String;
-       Item  : Integer;
-       Aft   : Field;
-       Exp   : Field;
-       Scale : Integer);
- 
-    procedure Puts_LLD
-      (To    : out String;
-       Item  : Long_Long_Integer;
-       Aft   : Field;
-       Exp   : Field;
-       Scale : Integer);
- 
- end Ada.Wide_Text_IO.Decimal_Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-wtdeio.adb gcc-8.1.0/gcc/ada/a-wtdeio.adb
*** gcc-7.3.0/gcc/ada/a-wtdeio.adb	Fri Oct 30 13:27:40 2009
--- gcc-8.1.0/gcc/ada/a-wtdeio.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,164 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --           A D A . W I D E _ T E X T _ I O . D E C I M A L _ I O          --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          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- --
- -- 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.Wide_Text_IO.Decimal_Aux;
- 
- with System.WCh_Con; use System.WCh_Con;
- with System.WCh_WtS; use System.WCh_WtS;
- 
- package body Ada.Wide_Text_IO.Decimal_IO is
- 
-    subtype TFT is Ada.Wide_Text_IO.File_Type;
-    --  File type required for calls to routines in Aux
- 
-    package Aux renames Ada.Wide_Text_IO.Decimal_Aux;
- 
-    Scale : constant Integer := Num'Scale;
- 
-    ---------
-    -- Get --
-    ---------
- 
-    procedure Get
-      (File  : File_Type;
-       Item  : out Num;
-       Width : Field := 0)
-    is
-    begin
-       if Num'Size > Integer'Size then
-          Item := Num'Fixed_Value (Aux.Get_LLD (TFT (File), Width, Scale));
-       else
-          Item := Num'Fixed_Value (Aux.Get_Dec (TFT (File), Width, Scale));
-       end if;
-    exception
-       when Constraint_Error => raise Data_Error;
-    end Get;
- 
-    procedure Get
-      (Item  : out Num;
-       Width : Field := 0)
-    is
-    begin
-       Get (Current_Input, Item, Width);
-    end Get;
- 
-    procedure Get
-      (From : Wide_String;
-       Item : out Num;
-       Last : out Positive)
-    is
-       S : constant String := Wide_String_To_String (From, WCEM_Upper);
-       --  String on which we do the actual conversion. Note that the method
-       --  used for wide character encoding is irrelevant, since if there is
-       --  a character outside the Standard.Character range then the call to
-       --  Aux.Gets will raise Data_Error in any case.
- 
-    begin
-       if Num'Size > Integer'Size then
-          --  Item := Num'Fixed_Value
-          --  should write above, but gets assert error ???
-          Item := Num
-                    (Aux.Gets_LLD (S, Last'Unrestricted_Access, Scale));
-       else
-          --  Item := Num'Fixed_Value
-          --  should write above, but gets assert error ???
-          Item := Num
-                    (Aux.Gets_Dec (S, Last'Unrestricted_Access, Scale));
-       end if;
- 
-    exception
-       when Constraint_Error => raise Data_Error;
-    end Get;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put
-      (File : File_Type;
-       Item : Num;
-       Fore : Field := Default_Fore;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp)
-    is
-    begin
-       if Num'Size > Integer'Size then
-          Aux.Put_LLD
- --           (TFT (File), Long_Long_Integer'Integer_Value (Item),
- --  ???
-            (TFT (File), Long_Long_Integer (Item),
-             Fore, Aft, Exp, Scale);
-       else
-          Aux.Put_Dec
- --           (TFT (File), Integer'Integer_Value (Item), Fore, Aft, Exp, Scale);
- --  ???
-            (TFT (File), Integer (Item), Fore, Aft, Exp, Scale);
- 
-       end if;
-    end Put;
- 
-    procedure Put
-      (Item : Num;
-       Fore : Field := Default_Fore;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp)
-    is
-    begin
-       Put (Current_Output, Item, Fore, Aft, Exp);
-    end Put;
- 
-    procedure Put
-      (To   : out Wide_String;
-       Item : Num;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp)
-    is
-       S : String (To'First .. To'Last);
- 
-    begin
-       if Num'Size > Integer'Size then
- --       Aux.Puts_LLD
- --         (S, Long_Long_Integer'Integer_Value (Item), Aft, Exp, Scale);
- --  ???
-          Aux.Puts_LLD
-            (S, Long_Long_Integer (Item), Aft, Exp, Scale);
-       else
- --       Aux.Puts_Dec (S, Integer'Integer_Value (Item), Aft, Exp, Scale);
- --  ???
-          Aux.Puts_Dec (S, Integer (Item), Aft, Exp, Scale);
-       end if;
- 
-       for J in S'Range loop
-          To (J) := Wide_Character'Val (Character'Pos (S (J)));
-       end loop;
-    end Put;
- 
- end Ada.Wide_Text_IO.Decimal_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-wtdeio.ads gcc-8.1.0/gcc/ada/a-wtdeio.ads
*** gcc-7.3.0/gcc/ada/a-wtdeio.ads	Thu Jul 17 06:35:13 2014
--- gcc-8.1.0/gcc/ada/a-wtdeio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,64 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --           A D A . W I D E _ T E X T _ I O . D E C I M A L _ I O          --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  In Ada 95, the package Ada.Wide_Text_IO.Decimal_IO is a subpackage
- --  of Wide_Text_IO. In GNAT we make it a child package to avoid loading
- --  the necessary code if Decimal_IO is not instantiated. See the routine
- --  Rtsfind.Check_Text_IO_Special_Unit for a description of how we patch up
- --  the difference in semantics so that it is invisible to the Ada programmer.
- 
- private generic
-    type Num is delta <> digits <>;
- 
- package Ada.Wide_Text_IO.Decimal_IO is
- 
-    Default_Fore : Field := 2;
-    Default_Aft  : Field := Num'Digits - 1;
-    Default_Exp  : Field := 3;
- 
-    procedure Get
-      (File  : File_Type;
-       Item  : out Num;
-       Width : Field := 0);
- 
-    procedure Get
-      (Item  : out Num;
-       Width : Field := 0);
- 
-    procedure Put
-      (File : File_Type;
-       Item : Num;
-       Fore : Field := Default_Fore;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp);
- 
-    procedure Put
-      (Item : Num;
-       Fore : Field := Default_Fore;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp);
- 
-    procedure Get
-      (From : Wide_String;
-       Item : out Num;
-       Last : out Positive);
- 
-    procedure Put
-      (To   : out Wide_String;
-       Item : Num;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp);
- 
- end Ada.Wide_Text_IO.Decimal_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-wtedit.adb gcc-8.1.0/gcc/ada/a-wtedit.adb
*** gcc-7.3.0/gcc/ada/a-wtedit.adb	Fri Jan 13 10:19:19 2017
--- gcc-8.1.0/gcc/ada/a-wtedit.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,2716 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                        GNAT RUN-TIME COMPONENTS                          --
- --                                                                          --
- --             A D A . W I D E _ T E X T _ I O . E D I T I N G              --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Strings.Fixed;
- with Ada.Strings.Wide_Fixed;
- 
- package body Ada.Wide_Text_IO.Editing is
- 
-    package Strings            renames Ada.Strings;
-    package Strings_Fixed      renames Ada.Strings.Fixed;
-    package Strings_Wide_Fixed renames Ada.Strings.Wide_Fixed;
-    package Wide_Text_IO       renames Ada.Wide_Text_IO;
- 
-    -----------------------
-    -- Local_Subprograms --
-    -----------------------
- 
-    function To_Wide (C : Character) return Wide_Character;
-    pragma Inline (To_Wide);
-    --  Convert Character to corresponding Wide_Character
- 
-    ---------------------
-    -- Blank_When_Zero --
-    ---------------------
- 
-    function Blank_When_Zero (Pic : Picture) return Boolean is
-    begin
-       return Pic.Contents.Original_BWZ;
-    end Blank_When_Zero;
- 
-    --------------------
-    -- Decimal_Output --
-    --------------------
- 
-    package body Decimal_Output is
- 
-       -----------
-       -- Image --
-       -----------
- 
-       function Image
-         (Item       : Num;
-          Pic        : Picture;
-          Currency   : Wide_String    := Default_Currency;
-          Fill       : Wide_Character := Default_Fill;
-          Separator  : Wide_Character := Default_Separator;
-          Radix_Mark : Wide_Character := Default_Radix_Mark) return Wide_String
-       is
-       begin
-          return Format_Number
-             (Pic.Contents, Num'Image (Item),
-              Currency, Fill, Separator, Radix_Mark);
-       end Image;
- 
-       ------------
-       -- Length --
-       ------------
- 
-       function Length
-         (Pic      : Picture;
-          Currency : Wide_String := Default_Currency) return Natural
-       is
-          Picstr     : constant String := Pic_String (Pic);
-          V_Adjust   : Integer := 0;
-          Cur_Adjust : Integer := 0;
- 
-       begin
-          --  Check if Picstr has 'V' or '$'
- 
-          --  If 'V', then length is 1 less than otherwise
- 
-          --  If '$', then length is Currency'Length-1 more than otherwise
- 
-          --  This should use the string handling package ???
- 
-          for J in Picstr'Range loop
-             if Picstr (J) = 'V' then
-                V_Adjust := -1;
- 
-             elsif Picstr (J) = '$' then
-                Cur_Adjust := Currency'Length - 1;
-             end if;
-          end loop;
- 
-          return Picstr'Length - V_Adjust + Cur_Adjust;
-       end Length;
- 
-       ---------
-       -- Put --
-       ---------
- 
-       procedure Put
-         (File       : Wide_Text_IO.File_Type;
-          Item       : Num;
-          Pic        : Picture;
-          Currency   : Wide_String    := Default_Currency;
-          Fill       : Wide_Character := Default_Fill;
-          Separator  : Wide_Character := Default_Separator;
-          Radix_Mark : Wide_Character := Default_Radix_Mark)
-       is
-       begin
-          Wide_Text_IO.Put (File, Image (Item, Pic,
-                                    Currency, Fill, Separator, Radix_Mark));
-       end Put;
- 
-       procedure Put
-         (Item       : Num;
-          Pic        : Picture;
-          Currency   : Wide_String    := Default_Currency;
-          Fill       : Wide_Character := Default_Fill;
-          Separator  : Wide_Character := Default_Separator;
-          Radix_Mark : Wide_Character := Default_Radix_Mark)
-       is
-       begin
-          Wide_Text_IO.Put (Image (Item, Pic,
-                              Currency, Fill, Separator, Radix_Mark));
-       end Put;
- 
-       procedure Put
-         (To         : out Wide_String;
-          Item       : Num;
-          Pic        : Picture;
-          Currency   : Wide_String    := Default_Currency;
-          Fill       : Wide_Character := Default_Fill;
-          Separator  : Wide_Character := Default_Separator;
-          Radix_Mark : Wide_Character := Default_Radix_Mark)
-       is
-          Result : constant Wide_String :=
-            Image (Item, Pic, Currency, Fill, Separator, Radix_Mark);
- 
-       begin
-          if Result'Length > To'Length then
-             raise Wide_Text_IO.Layout_Error;
-          else
-             Strings_Wide_Fixed.Move (Source => Result, Target => To,
-                                      Justify => Strings.Right);
-          end if;
-       end Put;
- 
-       -----------
-       -- Valid --
-       -----------
- 
-       function Valid
-         (Item     : Num;
-          Pic      : Picture;
-          Currency : Wide_String := Default_Currency) return Boolean
-       is
-       begin
-          declare
-             Temp : constant Wide_String := Image (Item, Pic, Currency);
-             pragma Warnings (Off, Temp);
-          begin
-             return True;
-          end;
- 
-       exception
-          when Layout_Error => return False;
- 
-       end Valid;
-    end Decimal_Output;
- 
-    ------------
-    -- Expand --
-    ------------
- 
-    function Expand (Picture : String) return String is
-       Result        : String (1 .. MAX_PICSIZE);
-       Picture_Index : Integer := Picture'First;
-       Result_Index  : Integer := Result'First;
-       Count         : Natural;
-       Last          : Integer;
- 
-    begin
-       if Picture'Length < 1 then
-          raise Picture_Error;
-       end if;
- 
-       if Picture (Picture'First) = '(' then
-          raise Picture_Error;
-       end if;
- 
-       loop
-          case Picture (Picture_Index) is
-             when '(' =>
- 
-                --  We now need to scan out the count after a left paren. In
-                --  the non-wide version we used Integer_IO.Get, but that is
-                --  not convenient here, since we don't want to drag in normal
-                --  Text_IO just for this purpose. So we do the scan ourselves,
-                --  with the normal validity checks.
- 
-                Last := Picture_Index + 1;
-                Count := 0;
- 
-                if Picture (Last) not in '0' .. '9' then
-                   raise Picture_Error;
-                end if;
- 
-                Count := Character'Pos (Picture (Last)) - Character'Pos ('0');
-                Last := Last + 1;
- 
-                loop
-                   if Last > Picture'Last then
-                      raise Picture_Error;
-                   end if;
- 
-                   if Picture (Last) = '_' then
-                      if Picture (Last - 1) = '_' then
-                         raise Picture_Error;
-                      end if;
- 
-                   elsif Picture (Last) = ')' then
-                      exit;
- 
-                   elsif Picture (Last) not in '0' .. '9' then
-                      raise Picture_Error;
- 
-                   else
-                      Count := Count * 10
-                                 +  Character'Pos (Picture (Last)) -
-                                    Character'Pos ('0');
-                   end if;
- 
-                   Last := Last + 1;
-                end loop;
- 
-                --  In what follows note that one copy of the repeated
-                --  character has already been made, so a count of one is
-                --  no-op, and a count of zero erases a character.
- 
-                for J in 2 .. Count loop
-                   Result (Result_Index + J - 2) := Picture (Picture_Index - 1);
-                end loop;
- 
-                Result_Index := Result_Index + Count - 1;
- 
-                --  Last was a ')' throw it away too
- 
-                Picture_Index := Last + 1;
- 
-             when ')' =>
-                raise Picture_Error;
- 
-             when others =>
-                Result (Result_Index) := Picture (Picture_Index);
-                Picture_Index := Picture_Index + 1;
-                Result_Index := Result_Index + 1;
-          end case;
- 
-          exit when Picture_Index > Picture'Last;
-       end loop;
- 
-       return Result (1 .. Result_Index - 1);
- 
-    exception
-       when others =>
-          raise Picture_Error;
-    end Expand;
- 
-    -------------------
-    -- Format_Number --
-    -------------------
- 
-    function Format_Number
-      (Pic                 : Format_Record;
-       Number              : String;
-       Currency_Symbol     : Wide_String;
-       Fill_Character      : Wide_Character;
-       Separator_Character : Wide_Character;
-       Radix_Point         : Wide_Character) return Wide_String
-    is
-       Attrs    : Number_Attributes := Parse_Number_String (Number);
-       Position : Integer;
-       Rounded  : String := Number;
- 
-       Sign_Position : Integer := Pic.Sign_Position; --  may float.
- 
-       Answer       : Wide_String (1 .. Pic.Picture.Length);
-       Last         : Integer;
-       Currency_Pos : Integer := Pic.Start_Currency;
- 
-       Dollar : Boolean := False;
-       --  Overridden immediately if necessary
- 
-       Zero : Boolean := True;
-       --  Set to False when a non-zero digit is output
- 
-    begin
- 
-       --  If the picture has fewer decimal places than the number, the image
-       --  must be rounded according to the usual rules.
- 
-       if Attrs.Has_Fraction then
-          declare
-             R : constant Integer :=
-               (Attrs.End_Of_Fraction - Attrs.Start_Of_Fraction + 1)
-                 - Pic.Max_Trailing_Digits;
-             R_Pos : Integer;
- 
-          begin
-             if R > 0 then
-                R_Pos := Rounded'Length - R;
- 
-                if Rounded (R_Pos + 1) > '4' then
- 
-                   if Rounded (R_Pos) = '.' then
-                      R_Pos := R_Pos - 1;
-                   end if;
- 
-                   if Rounded (R_Pos) /= '9' then
-                      Rounded (R_Pos) := Character'Succ (Rounded (R_Pos));
-                   else
-                      Rounded (R_Pos) := '0';
-                      R_Pos := R_Pos - 1;
- 
-                      while R_Pos > 1 loop
-                         if Rounded (R_Pos) = '.' then
-                            R_Pos := R_Pos - 1;
-                         end if;
- 
-                         if Rounded (R_Pos) /= '9' then
-                            Rounded (R_Pos) := Character'Succ (Rounded (R_Pos));
-                            exit;
-                         else
-                            Rounded (R_Pos) := '0';
-                            R_Pos := R_Pos - 1;
-                         end if;
-                      end loop;
- 
-                      --  The rounding may add a digit in front. Either the
-                      --  leading blank or the sign (already captured) can be
-                      --  overwritten.
- 
-                      if R_Pos = 1 then
-                         Rounded (R_Pos) := '1';
-                         Attrs.Start_Of_Int := Attrs.Start_Of_Int - 1;
-                      end if;
-                   end if;
-                end if;
-             end if;
-          end;
-       end if;
- 
-       for J in Answer'Range loop
-          Answer (J) := To_Wide (Pic.Picture.Expanded (J));
-       end loop;
- 
-       if Pic.Start_Currency /= Invalid_Position then
-          Dollar := Answer (Pic.Start_Currency) = '$';
-       end if;
- 
-       --  Fix up "direct inserts" outside the playing field. Set up as one
-       --  loop to do the beginning, one (reverse) loop to do the end.
- 
-       Last := 1;
-       loop
-          exit when Last = Pic.Start_Float;
-          exit when Last = Pic.Radix_Position;
-          exit when Answer (Last) = '9';
- 
-          case Answer (Last) is
-             when '_' =>
-                Answer (Last) := Separator_Character;
- 
-             when 'b' =>
-                Answer (Last) := ' ';
- 
-             when others =>
-                null;
-          end case;
- 
-          exit when Last = Answer'Last;
- 
-          Last := Last + 1;
-       end loop;
- 
-       --  Now for the end...
- 
-       for J in reverse Last .. Answer'Last loop
-          exit when J = Pic.Radix_Position;
- 
-          --  Do this test First, Separator_Character can equal Pic.Floater
- 
-          if Answer (J) = Pic.Floater then
-             exit;
-          end if;
- 
-          case Answer (J) is
-             when '_' =>
-                Answer (J) := Separator_Character;
- 
-             when 'b' =>
-                Answer (J) := ' ';
- 
-             when '9' =>
-                exit;
- 
-             when others =>
-                null;
-          end case;
-       end loop;
- 
-       --  Non-floating sign
- 
-       if Pic.Start_Currency /= -1
-         and then Answer (Pic.Start_Currency) = '#'
-         and then Pic.Floater /= '#'
-       then
-          if Currency_Symbol'Length >
-             Pic.End_Currency - Pic.Start_Currency + 1
-          then
-             raise Picture_Error;
- 
-          elsif Currency_Symbol'Length =
-             Pic.End_Currency - Pic.Start_Currency + 1
-          then
-             Answer (Pic.Start_Currency .. Pic.End_Currency) :=
-               Currency_Symbol;
- 
-          elsif Pic.Radix_Position = Invalid_Position
-            or else Pic.Start_Currency < Pic.Radix_Position
-          then
-             Answer (Pic.Start_Currency .. Pic.End_Currency) :=
-                                                         (others => ' ');
-             Answer (Pic.End_Currency - Currency_Symbol'Length + 1 ..
-                     Pic.End_Currency) := Currency_Symbol;
- 
-          else
-             Answer (Pic.Start_Currency .. Pic.End_Currency) :=
-                                                         (others => ' ');
-             Answer (Pic.Start_Currency ..
-                     Pic.Start_Currency + Currency_Symbol'Length - 1) :=
-                                                         Currency_Symbol;
-          end if;
-       end if;
- 
-       --  Fill in leading digits
- 
-       if Attrs.End_Of_Int - Attrs.Start_Of_Int + 1 >
-                                                 Pic.Max_Leading_Digits
-       then
-          raise Layout_Error;
-       end if;
- 
-       Position :=
-         (if Pic.Radix_Position = Invalid_Position then Answer'Last
-          else Pic.Radix_Position - 1);
- 
-       for J in reverse Attrs.Start_Of_Int .. Attrs.End_Of_Int loop
-          while Answer (Position) /= '9'
-                  and then
-                Answer (Position) /= Pic.Floater
-          loop
-             if Answer (Position) = '_' then
-                Answer (Position) := Separator_Character;
-             elsif Answer (Position) = 'b' then
-                Answer (Position) := ' ';
-             end if;
- 
-             Position := Position - 1;
-          end loop;
- 
-          Answer (Position) := To_Wide (Rounded (J));
- 
-          if Rounded (J) /= '0' then
-             Zero := False;
-          end if;
- 
-          Position := Position - 1;
-       end loop;
- 
-       --  Do lead float
- 
-       if Pic.Start_Float = Invalid_Position then
- 
-          --  No leading floats, but need to change '9' to '0', '_' to
-          --  Separator_Character and 'b' to ' '.
- 
-          for J in Last .. Position loop
- 
-             --  Last set when fixing the "uninteresting" leaders above.
-             --  Don't duplicate the work.
- 
-             if Answer (J) = '9' then
-                Answer (J) := '0';
- 
-             elsif Answer (J) = '_' then
-                Answer (J) := Separator_Character;
- 
-             elsif Answer (J) = 'b' then
-                Answer (J) := ' ';
- 
-             end if;
- 
-          end loop;
- 
-       elsif Pic.Floater = '<'
-               or else
-             Pic.Floater = '+'
-               or else
-             Pic.Floater = '-'
-       then
-          for J in Pic.End_Float .. Position loop --  May be null range
-             if Answer (J) = '9' then
-                Answer (J) := '0';
- 
-             elsif Answer (J) = '_' then
-                Answer (J) := Separator_Character;
- 
-             elsif Answer (J) = 'b' then
-                Answer (J) := ' ';
- 
-             end if;
-          end loop;
- 
-          if Position > Pic.End_Float then
-             Position := Pic.End_Float;
-          end if;
- 
-          for J in Pic.Start_Float .. Position - 1 loop
-             Answer (J) := ' ';
-          end loop;
- 
-          Answer (Position) := Pic.Floater;
-          Sign_Position     := Position;
- 
-       elsif Pic.Floater = '$' then
- 
-          for J in Pic.End_Float .. Position loop --  May be null range
-             if Answer (J) = '9' then
-                Answer (J) := '0';
- 
-             elsif Answer (J) = '_' then
-                Answer (J) := ' ';   --  no separator before leftmost digit
- 
-             elsif Answer (J) = 'b' then
-                Answer (J) := ' ';
-             end if;
-          end loop;
- 
-          if Position > Pic.End_Float then
-             Position := Pic.End_Float;
-          end if;
- 
-          for J in Pic.Start_Float .. Position - 1 loop
-             Answer (J) := ' ';
-          end loop;
- 
-          Answer (Position) := Pic.Floater;
-          Currency_Pos      := Position;
- 
-       elsif Pic.Floater = '*' then
- 
-          for J in Pic.End_Float .. Position loop --  May be null range
-             if Answer (J) = '9' then
-                Answer (J) := '0';
- 
-             elsif Answer (J) = '_' then
-                Answer (J) := Separator_Character;
- 
-             elsif Answer (J) = 'b' then
-                Answer (J) := '*';
-             end if;
-          end loop;
- 
-          if Position > Pic.End_Float then
-             Position := Pic.End_Float;
-          end if;
- 
-          for J in Pic.Start_Float .. Position loop
-             Answer (J) := '*';
-          end loop;
- 
-       else
-          if Pic.Floater = '#' then
-             Currency_Pos := Currency_Symbol'Length;
-          end if;
- 
-          for J in reverse Pic.Start_Float .. Position loop
-             case Answer (J) is
-                when '*' =>
-                   Answer (J) := Fill_Character;
- 
-                when 'Z' | 'b' | '/' | '0' =>
-                   Answer (J) := ' ';
- 
-                when '9' =>
-                   Answer (J) := '0';
- 
-                when '.' | 'V' | 'v' | '<' | '$' | '+' | '-' =>
-                   null;
- 
-                when '#' =>
-                   if Currency_Pos = 0 then
-                      Answer (J) := ' ';
-                   else
-                      Answer (J)   := Currency_Symbol (Currency_Pos);
-                      Currency_Pos := Currency_Pos - 1;
-                   end if;
- 
-                when '_' =>
-                   case Pic.Floater is
-                      when '*' =>
-                         Answer (J) := Fill_Character;
- 
-                      when 'Z' | 'b' =>
-                         Answer (J) := ' ';
- 
-                      when '#' =>
-                         if Currency_Pos = 0 then
-                            Answer (J) := ' ';
- 
-                         else
-                            Answer (J)   := Currency_Symbol (Currency_Pos);
-                            Currency_Pos := Currency_Pos - 1;
-                         end if;
- 
-                      when others =>
-                         null;
-                   end case;
- 
-                when others =>
-                   null;
-             end case;
-          end loop;
- 
-          if Pic.Floater = '#' and then Currency_Pos /= 0 then
-             raise Layout_Error;
-          end if;
-       end if;
- 
-       --  Do sign
- 
-       if Sign_Position = Invalid_Position then
-          if Attrs.Negative then
-             raise Layout_Error;
-          end if;
- 
-       else
-          if Attrs.Negative then
-             case Answer (Sign_Position) is
-                when 'C' | 'D' | '-' =>
-                   null;
- 
-                when '+' =>
-                   Answer (Sign_Position) := '-';
- 
-                when '<' =>
-                   Answer (Sign_Position)   := '(';
-                   Answer (Pic.Second_Sign) := ')';
- 
-                when others =>
-                   raise Picture_Error;
-             end case;
- 
-          else --  positive
- 
-             case Answer (Sign_Position) is
-                when '-' =>
-                   Answer (Sign_Position) := ' ';
- 
-                when '<' | 'C' | 'D' =>
-                   Answer (Sign_Position)   := ' ';
-                   Answer (Pic.Second_Sign) := ' ';
- 
-                when '+' =>
-                   null;
- 
-                when others =>
-                   raise Picture_Error;
-             end case;
-          end if;
-       end if;
- 
-       --  Fill in trailing digits
- 
-       if Pic.Max_Trailing_Digits > 0 then
- 
-          if Attrs.Has_Fraction then
-             Position := Attrs.Start_Of_Fraction;
-             Last     := Pic.Radix_Position + 1;
- 
-             for J in Last .. Answer'Last loop
-                if Answer (J) = '9' or else Answer (J) = Pic.Floater then
-                   Answer (J) := To_Wide (Rounded (Position));
- 
-                   if Rounded (Position) /= '0' then
-                      Zero := False;
-                   end if;
- 
-                   Position := Position + 1;
-                   Last     := J + 1;
- 
-                   --  Used up fraction but remember place in Answer
- 
-                   exit when Position > Attrs.End_Of_Fraction;
- 
-                elsif Answer (J) = 'b' then
-                   Answer (J) := ' ';
- 
-                elsif Answer (J) = '_' then
-                   Answer (J) := Separator_Character;
- 
-                end if;
- 
-                Last := J + 1;
-             end loop;
- 
-             Position := Last;
- 
-          else
-             Position := Pic.Radix_Position + 1;
-          end if;
- 
-          --  Now fill remaining 9's with zeros and _ with separators
- 
-          Last := Answer'Last;
- 
-          for J in Position .. Last loop
-             if Answer (J) = '9' then
-                Answer (J) := '0';
- 
-             elsif Answer (J) = Pic.Floater then
-                Answer (J) := '0';
- 
-             elsif Answer (J) = '_' then
-                Answer (J) := Separator_Character;
- 
-             elsif Answer (J) = 'b' then
-                Answer (J) := ' ';
- 
-             end if;
-          end loop;
- 
-          Position := Last + 1;
- 
-       else
-          if Pic.Floater = '#' and then Currency_Pos /= 0 then
-             raise Layout_Error;
-          end if;
- 
-          --  No trailing digits, but now J may need to stick in a currency
-          --  symbol or sign.
- 
-          Position :=
-            (if Pic.Start_Currency = Invalid_Position then Answer'Last + 1
-             else Pic.Start_Currency);
-       end if;
- 
-       for J in Position .. Answer'Last loop
-          if Pic.Start_Currency /= Invalid_Position
-            and then Answer (Pic.Start_Currency) = '#'
-          then
-             Currency_Pos := 1;
-          end if;
- 
-          --  Note: There are some weird cases J can imagine with 'b' or '#' in
-          --  currency strings where the following code will cause glitches. The
-          --  trick is to tell when the character in the answer should be
-          --  checked, and when to look at the original string. Some other time.
-          --  RIE 11/26/96 ???
- 
-          case Answer (J) is
-             when '*' =>
-                Answer (J) := Fill_Character;
- 
-             when 'b' =>
-                Answer (J) := ' ';
- 
-             when '#' =>
-                if Currency_Pos > Currency_Symbol'Length then
-                   Answer (J) := ' ';
- 
-                else
-                   Answer (J)   := Currency_Symbol (Currency_Pos);
-                   Currency_Pos := Currency_Pos + 1;
-                end if;
- 
-             when '_' =>
-                case Pic.Floater is
- 
-                   when '*' =>
-                      Answer (J) := Fill_Character;
- 
-                   when 'Z' | 'z' =>
-                      Answer (J) := ' ';
- 
-                   when '#' =>
-                      if Currency_Pos > Currency_Symbol'Length then
-                         Answer (J) := ' ';
-                      else
-                         Answer (J)   := Currency_Symbol (Currency_Pos);
-                         Currency_Pos := Currency_Pos + 1;
-                      end if;
- 
-                   when others =>
-                      null;
-                end case;
- 
-             when others =>
-                exit;
-          end case;
-       end loop;
- 
-       --  Now get rid of Blank_when_Zero and complete Star fill
- 
-       if Zero and then Pic.Blank_When_Zero then
- 
-          --  Value is zero, and blank it
- 
-          Last := Answer'Last;
- 
-          if Dollar then
-             Last := Last - 1 + Currency_Symbol'Length;
-          end if;
- 
-          if Pic.Radix_Position /= Invalid_Position
-            and then Answer (Pic.Radix_Position) = 'V'
-          then
-             Last := Last - 1;
-          end if;
- 
-          return Wide_String'(1 .. Last => ' ');
- 
-       elsif Zero and then Pic.Star_Fill then
-          Last := Answer'Last;
- 
-          if Dollar then
-             Last := Last - 1 + Currency_Symbol'Length;
-          end if;
- 
-          if Pic.Radix_Position /= Invalid_Position then
- 
-             if Answer (Pic.Radix_Position) = 'V' then
-                Last := Last - 1;
- 
-             elsif Dollar then
-                if Pic.Radix_Position > Pic.Start_Currency then
-                   return Wide_String'(1 .. Pic.Radix_Position - 1 => '*') &
-                      Radix_Point &
-                      Wide_String'(Pic.Radix_Position + 1 .. Last => '*');
- 
-                else
-                   return
-                      Wide_String'
-                      (1 ..
-                       Pic.Radix_Position + Currency_Symbol'Length - 2
-                                              => '*') &
-                      Radix_Point &
-                      Wide_String'
-                        (Pic.Radix_Position + Currency_Symbol'Length .. Last
-                                              => '*');
-                end if;
- 
-             else
-                return
-                  Wide_String'(1 .. Pic.Radix_Position - 1 => '*') &
-                  Radix_Point &
-                  Wide_String'(Pic.Radix_Position + 1 .. Last => '*');
-             end if;
-          end if;
- 
-          return Wide_String'(1 .. Last => '*');
-       end if;
- 
-       --  This was once a simple return statement, now there are nine
-       --  different return cases. Not to mention the five above to deal
-       --  with zeros. Why not split things out?
- 
-       --  Processing the radix and sign expansion separately would require
-       --  lots of copying--the string and some of its indexes--without
-       --  really simplifying the logic. The cases are:
- 
-       --  1) Expand $, replace '.' with Radix_Point
-       --  2) No currency expansion, replace '.' with Radix_Point
-       --  3) Expand $, radix blanked
-       --  4) No currency expansion, radix blanked
-       --  5) Elide V
-       --  6) Expand $, Elide V
-       --  7) Elide V, Expand $ (Two cases depending on order.)
-       --  8) No radix, expand $
-       --  9) No radix, no currency expansion
- 
-       if Pic.Radix_Position /= Invalid_Position then
- 
-          if Answer (Pic.Radix_Position) = '.' then
-             Answer (Pic.Radix_Position) := Radix_Point;
- 
-             if Dollar then
- 
-                --  1) Expand $, replace '.' with Radix_Point
- 
-                return
-                  Answer (1 .. Currency_Pos - 1) & Currency_Symbol &
-                  Answer (Currency_Pos + 1 .. Answer'Last);
- 
-             else
-                --  2) No currency expansion, replace '.' with Radix_Point
- 
-                return Answer;
-             end if;
- 
-          elsif Answer (Pic.Radix_Position) = ' ' then --  blanked radix.
-             if Dollar then
- 
-                --  3) Expand $, radix blanked
- 
-                return Answer (1 .. Currency_Pos - 1) & Currency_Symbol &
-                  Answer (Currency_Pos + 1 .. Answer'Last);
- 
-             else
-                --  4) No expansion, radix blanked
- 
-                return Answer;
-             end if;
- 
-          --  V cases
- 
-          else
-             if not Dollar then
- 
-                --  5) Elide V
- 
-                return Answer (1 .. Pic.Radix_Position - 1) &
-                   Answer (Pic.Radix_Position + 1 .. Answer'Last);
- 
-             elsif Currency_Pos < Pic.Radix_Position then
- 
-                --  6) Expand $, Elide V
- 
-                return Answer (1 .. Currency_Pos - 1) & Currency_Symbol &
-                   Answer (Currency_Pos + 1 .. Pic.Radix_Position - 1) &
-                   Answer (Pic.Radix_Position + 1 .. Answer'Last);
- 
-             else
-                --  7) Elide V, Expand $
- 
-                return Answer (1 .. Pic.Radix_Position - 1) &
-                   Answer (Pic.Radix_Position + 1 .. Currency_Pos - 1) &
-                   Currency_Symbol &
-                   Answer (Currency_Pos + 1 .. Answer'Last);
-             end if;
-          end if;
- 
-       elsif Dollar then
- 
-          --  8) No radix, expand $
- 
-          return Answer (1 .. Currency_Pos - 1) & Currency_Symbol &
-             Answer (Currency_Pos + 1 .. Answer'Last);
- 
-       else
-          --  9) No radix, no currency expansion
- 
-          return Answer;
-       end if;
-    end Format_Number;
- 
-    -------------------------
-    -- Parse_Number_String --
-    -------------------------
- 
-    function Parse_Number_String (Str : String) return Number_Attributes is
-       Answer : Number_Attributes;
- 
-    begin
-       for J in Str'Range loop
-          case Str (J) is
-             when ' ' =>
-                null; --  ignore
- 
-             when '1' .. '9' =>
- 
-                --  Decide if this is the start of a number.
-                --  If so, figure out which one...
- 
-                if Answer.Has_Fraction then
-                   Answer.End_Of_Fraction := J;
-                else
-                   if Answer.Start_Of_Int = Invalid_Position then
-                      --  start integer
-                      Answer.Start_Of_Int := J;
-                   end if;
-                   Answer.End_Of_Int := J;
-                end if;
- 
-             when '0' =>
- 
-                --  Only count a zero before the decimal point if it follows a
-                --  non-zero digit. After the decimal point, zeros will be
-                --  counted if followed by a non-zero digit.
- 
-                if not Answer.Has_Fraction then
-                   if Answer.Start_Of_Int /= Invalid_Position then
-                      Answer.End_Of_Int := J;
-                   end if;
-                end if;
- 
-             when '-' =>
- 
-                --  Set negative
- 
-                Answer.Negative := True;
- 
-             when '.' =>
- 
-                --  Close integer, start fraction
- 
-                if Answer.Has_Fraction then
-                   raise Picture_Error;
-                end if;
- 
-                --  Two decimal points is a no-no
- 
-                Answer.Has_Fraction    := True;
-                Answer.End_Of_Fraction := J;
- 
-                --  Could leave this at Invalid_Position, but this seems the
-                --  right way to indicate a null range...
- 
-                Answer.Start_Of_Fraction := J + 1;
-                Answer.End_Of_Int        := J - 1;
- 
-             when others =>
-                raise Picture_Error; -- can this happen? probably not
-          end case;
-       end loop;
- 
-       if Answer.Start_Of_Int = Invalid_Position then
-          Answer.Start_Of_Int := Answer.End_Of_Int + 1;
-       end if;
- 
-       --  No significant (intger) digits needs a null range
- 
-       return Answer;
-    end Parse_Number_String;
- 
-    ----------------
-    -- Pic_String --
-    ----------------
- 
-    --  The following ensures that we return B and not b being careful not
-    --  to break things which expect lower case b for blank. See CXF3A02.
- 
-    function Pic_String (Pic : Picture) return String is
-       Temp : String (1 .. Pic.Contents.Picture.Length) :=
-         Pic.Contents.Picture.Expanded;
-    begin
-       for J in Temp'Range loop
-          if Temp (J) = 'b' then
-             Temp (J) := 'B';
-          end if;
-       end loop;
- 
-       return Temp;
-    end Pic_String;
- 
-    ------------------
-    -- Precalculate --
-    ------------------
- 
-    procedure Precalculate  (Pic : in out Format_Record) is
- 
-       Computed_BWZ : Boolean := True;
- 
-       type Legality is  (Okay, Reject);
-       State : Legality := Reject;
-       --  Start in reject, which will reject null strings
- 
-       Index : Pic_Index := Pic.Picture.Expanded'First;
- 
-       function At_End return Boolean;
-       pragma Inline (At_End);
- 
-       procedure Set_State (L : Legality);
-       pragma Inline (Set_State);
- 
-       function Look return Character;
-       pragma Inline (Look);
- 
-       function Is_Insert return Boolean;
-       pragma Inline (Is_Insert);
- 
-       procedure Skip;
-       pragma Inline (Skip);
- 
-       procedure Trailing_Currency;
-       procedure Trailing_Bracket;
-       procedure Number_Fraction;
-       procedure Number_Completion;
-       procedure Number_Fraction_Or_Bracket;
-       procedure Number_Fraction_Or_Z_Fill;
-       procedure Zero_Suppression;
-       procedure Floating_Bracket;
-       procedure Number_Fraction_Or_Star_Fill;
-       procedure Star_Suppression;
-       procedure Number_Fraction_Or_Dollar;
-       procedure Leading_Dollar;
-       procedure Number_Fraction_Or_Pound;
-       procedure Leading_Pound;
-       procedure Picture;
-       procedure Floating_Plus;
-       procedure Floating_Minus;
-       procedure Picture_Plus;
-       procedure Picture_Minus;
-       procedure Picture_Bracket;
-       procedure Number;
-       procedure Optional_RHS_Sign;
-       procedure Picture_String;
- 
-       ------------
-       -- At_End --
-       ------------
- 
-       function At_End return Boolean is
-       begin
-          return Index > Pic.Picture.Length;
-       end At_End;
- 
-       ----------------------
-       -- Floating_Bracket --
-       ----------------------
- 
-       --  Note that Floating_Bracket is only called with an acceptable
-       --  prefix. But we don't set Okay, because we must end with a '>'.
- 
-       procedure Floating_Bracket is
-       begin
-          Pic.Floater := '<';
-          Pic.End_Float := Index;
-          Pic.Max_Leading_Digits := Pic.Max_Leading_Digits + 1;
- 
-          --  First bracket wasn't counted...
- 
-          Skip; --  known '<'
- 
-          loop
-             if At_End then
-                return;
-             end if;
- 
-             case Look is
-                when '_' | '0' | '/' =>
-                   Pic.End_Float := Index;
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.End_Float := Index;
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when '<' =>
-                   Pic.End_Float := Index;
-                   Pic.Max_Leading_Digits := Pic.Max_Leading_Digits + 1;
-                   Skip;
- 
-                when '9' =>
-                   Number_Completion;
- 
-                when '$' =>
-                   Leading_Dollar;
- 
-                when '#' =>
-                   Leading_Pound;
- 
-                when 'V' | 'v' | '.' =>
-                   Pic.Radix_Position := Index;
-                   Skip;
-                   Number_Fraction_Or_Bracket;
-                   return;
- 
-                when others =>
-                   return;
-             end case;
-          end loop;
-       end Floating_Bracket;
- 
-       --------------------
-       -- Floating_Minus --
-       --------------------
- 
-       procedure Floating_Minus is
-       begin
-          loop
-             if At_End then
-                return;
-             end if;
- 
-             case Look is
-                when '_' | '0' | '/' =>
-                   Pic.End_Float := Index;
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.End_Float := Index;
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when '-' =>
-                   Pic.Max_Leading_Digits := Pic.Max_Leading_Digits + 1;
-                   Pic.End_Float := Index;
-                   Skip;
- 
-                when '9' =>
-                   Number_Completion;
-                   return;
- 
-                when '.' | 'V' | 'v' =>
-                   Pic.Radix_Position := Index;
-                   Skip; --  Radix
- 
-                   while Is_Insert loop
-                      Skip;
-                   end loop;
- 
-                   if At_End then
-                      return;
-                   end if;
- 
-                   if Look = '-' then
-                      loop
-                         if At_End then
-                            return;
-                         end if;
- 
-                         case Look is
-                            when '-' =>
-                               Pic.Max_Trailing_Digits :=
-                                 Pic.Max_Trailing_Digits + 1;
-                               Pic.End_Float := Index;
-                               Skip;
- 
-                            when '_' | '0' | '/' =>
-                               Skip;
- 
-                            when 'B' | 'b'  =>
-                               Pic.Picture.Expanded (Index) := 'b';
-                               Skip;
- 
-                            when others =>
-                               return;
-                         end case;
-                      end loop;
- 
-                   else
-                      Number_Completion;
-                   end if;
- 
-                   return;
- 
-                when others =>
-                   return;
-             end case;
-          end loop;
-       end Floating_Minus;
- 
-       -------------------
-       -- Floating_Plus --
-       -------------------
- 
-       procedure Floating_Plus is
-       begin
-          loop
-             if At_End then
-                return;
-             end if;
- 
-             case Look is
-                when '_' | '0' | '/' =>
-                   Pic.End_Float := Index;
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.End_Float := Index;
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when '+' =>
-                   Pic.Max_Leading_Digits := Pic.Max_Leading_Digits + 1;
-                   Pic.End_Float := Index;
-                   Skip;
- 
-                when '9' =>
-                   Number_Completion;
-                   return;
- 
-                when '.' | 'V' | 'v' =>
-                   Pic.Radix_Position := Index;
-                   Skip; --  Radix
- 
-                   while Is_Insert loop
-                      Skip;
-                   end loop;
- 
-                   if At_End then
-                      return;
-                   end if;
- 
-                   if Look = '+' then
-                      loop
-                         if At_End then
-                            return;
-                         end if;
- 
-                         case Look is
-                            when '+' =>
-                               Pic.Max_Trailing_Digits :=
-                                 Pic.Max_Trailing_Digits + 1;
-                               Pic.End_Float := Index;
-                               Skip;
- 
-                            when '_' | '0' | '/' =>
-                               Skip;
- 
-                            when 'B' | 'b'  =>
-                               Pic.Picture.Expanded (Index) := 'b';
-                               Skip;
- 
-                            when others =>
-                               return;
-                         end case;
-                      end loop;
- 
-                   else
-                      Number_Completion;
-                   end if;
- 
-                   return;
- 
-                when others =>
-                   return;
-             end case;
-          end loop;
-       end Floating_Plus;
- 
-       ---------------
-       -- Is_Insert --
-       ---------------
- 
-       function Is_Insert return Boolean is
-       begin
-          if At_End then
-             return False;
-          end if;
- 
-          case Pic.Picture.Expanded (Index) is
-             when '_' | '0' | '/' =>
-                return True;
- 
-             when 'B' | 'b' =>
-                Pic.Picture.Expanded (Index) := 'b'; --  canonical
-                return True;
- 
-             when others =>
-                return False;
-          end case;
-       end Is_Insert;
- 
-       --------------------
-       -- Leading_Dollar --
-       --------------------
- 
-       --  Note that Leading_Dollar can be called in either State.
-       --  It will set state to Okay only if a 9 or (second) $ is encountered.
- 
-       --  Also notice the tricky bit with State and Zero_Suppression.
-       --  Zero_Suppression is Picture_Error if a '$' or a '9' has been
-       --  encountered, exactly the cases where State has been set.
- 
-       procedure Leading_Dollar is
-       begin
-          --  Treat as a floating dollar, and unwind otherwise
- 
-          Pic.Floater := '$';
-          Pic.Start_Currency := Index;
-          Pic.End_Currency := Index;
-          Pic.Start_Float := Index;
-          Pic.End_Float := Index;
- 
-          --  Don't increment Pic.Max_Leading_Digits, we need one "real"
-          --  currency place.
- 
-          Skip; --  known '$'
- 
-          loop
-             if At_End then
-                return;
-             end if;
- 
-             case Look is
-                when '_' | '0' | '/' =>
-                   Pic.End_Float := Index;
-                   Skip;
- 
-                   --  A trailing insertion character is not part of the
-                   --  floating currency, so need to look ahead.
- 
-                   if Look /= '$' then
-                      Pic.End_Float := Pic.End_Float - 1;
-                   end if;
- 
-                when 'B' | 'b'  =>
-                   Pic.End_Float := Index;
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when 'Z' | 'z' =>
-                   Pic.Picture.Expanded (Index) := 'Z'; -- consistency
- 
-                   if State = Okay then
-                      raise Picture_Error;
-                   else
-                      --  Will overwrite Floater and Start_Float
- 
-                      Zero_Suppression;
-                   end if;
- 
-                when '*' =>
-                   if State = Okay then
-                      raise Picture_Error;
-                   else
-                      --  Will overwrite Floater and Start_Float
- 
-                      Star_Suppression;
-                   end if;
- 
-                when '$' =>
-                   Pic.Max_Leading_Digits := Pic.Max_Leading_Digits + 1;
-                   Pic.End_Float := Index;
-                   Pic.End_Currency := Index;
-                   Set_State (Okay); Skip;
- 
-                when '9' =>
-                   if State /= Okay then
-                      Pic.Floater := '!';
-                      Pic.Start_Float := Invalid_Position;
-                      Pic.End_Float := Invalid_Position;
-                   end if;
- 
-                   --  A single dollar does not a floating make
- 
-                   Number_Completion;
-                   return;
- 
-                when 'V' | 'v' | '.' =>
-                   if State /= Okay then
-                      Pic.Floater := '!';
-                      Pic.Start_Float := Invalid_Position;
-                      Pic.End_Float := Invalid_Position;
-                   end if;
- 
-                   --  Only one dollar before the sign is okay, but doesn't
-                   --  float.
- 
-                   Pic.Radix_Position := Index;
-                   Skip;
-                   Number_Fraction_Or_Dollar;
-                   return;
- 
-                when others =>
-                   return;
-             end case;
-          end loop;
-       end Leading_Dollar;
- 
-       -------------------
-       -- Leading_Pound --
-       -------------------
- 
-       --  This one is complex. A Leading_Pound can be fixed or floating,
-       --  but in some cases the decision has to be deferred until we leave
-       --  this procedure. Also note that Leading_Pound can be called in
-       --  either State.
- 
-       --  It will set state to Okay only if a 9 or  (second) # is
-       --  encountered.
- 
-       --  One Last note:  In ambiguous cases, the currency is treated as
-       --  floating unless there is only one '#'.
- 
-       procedure Leading_Pound is
- 
-          Inserts : Boolean := False;
-          --  Set to True if a '_', '0', '/', 'B', or 'b' is encountered
- 
-          Must_Float : Boolean := False;
-          --  Set to true if a '#' occurs after an insert
- 
-       begin
-          --  Treat as a floating currency. If it isn't, this will be
-          --  overwritten later.
- 
-          Pic.Floater := '#';
- 
-          Pic.Start_Currency := Index;
-          Pic.End_Currency := Index;
-          Pic.Start_Float := Index;
-          Pic.End_Float := Index;
- 
-          --  Don't increment Pic.Max_Leading_Digits, we need one "real"
-          --  currency place.
- 
-          Pic.Max_Currency_Digits := 1; --  we've seen one.
- 
-          Skip; --  known '#'
- 
-          loop
-             if At_End then
-                return;
-             end if;
- 
-             case Look is
-                when '_' | '0' | '/' =>
-                   Pic.End_Float := Index;
-                   Inserts := True;
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Pic.End_Float := Index;
-                   Inserts := True;
-                   Skip;
- 
-                when 'Z' | 'z' =>
-                   Pic.Picture.Expanded (Index) := 'Z'; -- consistency
- 
-                   if Must_Float then
-                      raise Picture_Error;
-                   else
-                      Pic.Max_Leading_Digits := 0;
- 
-                      --  Will overwrite Floater and Start_Float
- 
-                      Zero_Suppression;
-                   end if;
- 
-                when '*' =>
-                   if Must_Float then
-                      raise Picture_Error;
-                   else
-                      Pic.Max_Leading_Digits := 0;
- 
-                      --  Will overwrite Floater and Start_Float
- 
-                      Star_Suppression;
-                   end if;
- 
-                when '#' =>
-                   if Inserts then
-                      Must_Float := True;
-                   end if;
- 
-                   Pic.Max_Leading_Digits := Pic.Max_Leading_Digits + 1;
-                   Pic.End_Float := Index;
-                   Pic.End_Currency := Index;
-                   Set_State (Okay);
-                   Skip;
- 
-                when '9' =>
-                   if State /= Okay then
- 
-                      --  A single '#' doesn't float
- 
-                      Pic.Floater := '!';
-                      Pic.Start_Float := Invalid_Position;
-                      Pic.End_Float := Invalid_Position;
-                   end if;
- 
-                   Number_Completion;
-                   return;
- 
-                when 'V' | 'v' | '.' =>
-                   if State /= Okay then
-                      Pic.Floater := '!';
-                      Pic.Start_Float := Invalid_Position;
-                      Pic.End_Float := Invalid_Position;
-                   end if;
- 
-                   --  Only one pound before the sign is okay, but doesn't
-                   --  float.
- 
-                   Pic.Radix_Position := Index;
-                   Skip;
-                   Number_Fraction_Or_Pound;
-                   return;
- 
-                when others =>
-                   return;
-             end case;
-          end loop;
-       end Leading_Pound;
- 
-       ----------
-       -- Look --
-       ----------
- 
-       function Look return Character is
-       begin
-          if At_End then
-             raise Picture_Error;
-          end if;
- 
-          return Pic.Picture.Expanded (Index);
-       end Look;
- 
-       ------------
-       -- Number --
-       ------------
- 
-       procedure Number is
-       begin
-          loop
-             case Look is
-                when '_' | '0' | '/' =>
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when '9' =>
-                   Computed_BWZ := False;
-                   Pic.Max_Leading_Digits := Pic.Max_Leading_Digits + 1;
-                   Set_State (Okay);
-                   Skip;
- 
-                when '.' | 'V' | 'v' =>
-                   Pic.Radix_Position := Index;
-                   Skip;
-                   Number_Fraction;
-                   return;
- 
-                when others =>
-                   return;
-             end case;
- 
-             if At_End then
-                return;
-             end if;
- 
-             --  Will return in Okay state if a '9' was seen
- 
-          end loop;
-       end Number;
- 
-       -----------------------
-       -- Number_Completion --
-       -----------------------
- 
-       procedure Number_Completion is
-       begin
-          while not At_End loop
-             case Look is
-                when '_' | '0' | '/' =>
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when '9' =>
-                   Computed_BWZ := False;
-                   Pic.Max_Leading_Digits := Pic.Max_Leading_Digits + 1;
-                   Set_State (Okay);
-                   Skip;
- 
-                when 'V' | 'v' | '.' =>
-                   Pic.Radix_Position := Index;
-                   Skip;
-                   Number_Fraction;
-                   return;
- 
-                when others =>
-                   return;
-             end case;
-          end loop;
-       end Number_Completion;
- 
-       ---------------------
-       -- Number_Fraction --
-       ---------------------
- 
-       procedure Number_Fraction is
-       begin
-          --  Note that number fraction can be called in either State.
-          --  It will set state to Valid only if a 9 is encountered.
- 
-          loop
-             if At_End then
-                return;
-             end if;
- 
-             case Look is
-                when '_' | '0' | '/' =>
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when '9' =>
-                   Computed_BWZ := False;
-                   Pic.Max_Trailing_Digits := Pic.Max_Trailing_Digits + 1;
-                   Set_State (Okay); Skip;
- 
-                when others =>
-                   return;
-             end case;
-          end loop;
-       end Number_Fraction;
- 
-       --------------------------------
-       -- Number_Fraction_Or_Bracket --
-       --------------------------------
- 
-       procedure Number_Fraction_Or_Bracket is
-       begin
-          loop
-             if At_End then
-                return;
-             end if;
- 
-             case Look is
-                when '_' | '0' | '/' =>
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when '<' =>
-                   Pic.Max_Trailing_Digits := Pic.Max_Trailing_Digits + 1;
-                   Pic.End_Float := Index;
-                   Skip;
- 
-                   loop
-                      if At_End then
-                         return;
-                      end if;
- 
-                      case Look is
-                         when '_' | '0' | '/' =>
-                            Skip;
- 
-                         when 'B' | 'b'  =>
-                            Pic.Picture.Expanded (Index) := 'b';
-                            Skip;
- 
-                         when '<' =>
-                            Pic.Max_Trailing_Digits :=
-                              Pic.Max_Trailing_Digits + 1;
-                            Pic.End_Float := Index;
-                            Skip;
- 
-                         when others =>
-                            return;
-                      end case;
-                   end loop;
- 
-                when others =>
-                   Number_Fraction;
-                   return;
-             end case;
-          end loop;
-       end Number_Fraction_Or_Bracket;
- 
-       -------------------------------
-       -- Number_Fraction_Or_Dollar --
-       -------------------------------
- 
-       procedure Number_Fraction_Or_Dollar is
-       begin
-          loop
-             if At_End then
-                return;
-             end if;
- 
-             case Look is
-                when '_' | '0' | '/' =>
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when '$' =>
-                   Pic.Max_Trailing_Digits := Pic.Max_Trailing_Digits + 1;
-                   Pic.End_Float := Index;
-                   Skip;
- 
-                   loop
-                      if At_End then
-                         return;
-                      end if;
- 
-                      case Look is
-                         when '_' | '0' | '/' =>
-                            Skip;
- 
-                         when 'B' | 'b'  =>
-                            Pic.Picture.Expanded (Index) := 'b';
-                            Skip;
- 
-                         when '$' =>
-                            Pic.Max_Trailing_Digits :=
-                              Pic.Max_Trailing_Digits + 1;
-                            Pic.End_Float := Index;
-                            Skip;
- 
-                         when others =>
-                            return;
-                      end case;
-                   end loop;
- 
-                when others =>
-                   Number_Fraction;
-                   return;
-             end case;
-          end loop;
-       end Number_Fraction_Or_Dollar;
- 
-       ------------------------------
-       -- Number_Fraction_Or_Pound --
-       ------------------------------
- 
-       procedure Number_Fraction_Or_Pound is
-       begin
-          loop
-             if At_End then
-                return;
-             end if;
- 
-             case Look is
-                when '_' | '0' | '/' =>
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when '#' =>
-                   Pic.Max_Trailing_Digits := Pic.Max_Trailing_Digits + 1;
-                   Pic.End_Float := Index;
-                   Skip;
- 
-                   loop
-                      if At_End then
-                         return;
-                      end if;
- 
-                      case Look is
-                         when '_' | '0' | '/' =>
-                            Skip;
- 
-                         when 'B' | 'b'  =>
-                            Pic.Picture.Expanded (Index) := 'b';
-                            Skip;
- 
-                         when '#' =>
-                            Pic.Max_Trailing_Digits :=
-                              Pic.Max_Trailing_Digits + 1;
-                            Pic.End_Float := Index;
-                            Skip;
- 
-                         when others =>
-                            return;
-                      end case;
-                   end loop;
- 
-                when others =>
-                   Number_Fraction;
-                   return;
-             end case;
-          end loop;
-       end Number_Fraction_Or_Pound;
- 
-       ----------------------------------
-       -- Number_Fraction_Or_Star_Fill --
-       ----------------------------------
- 
-       procedure Number_Fraction_Or_Star_Fill is
-       begin
-          loop
-             if At_End then
-                return;
-             end if;
- 
-             case Look is
-                when '_' | '0' | '/' =>
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when '*' =>
-                   Pic.Star_Fill := True;
-                   Pic.Max_Trailing_Digits := Pic.Max_Trailing_Digits + 1;
-                   Pic.End_Float := Index;
-                   Skip;
- 
-                   loop
-                      if At_End then
-                         return;
-                      end if;
- 
-                      case Look is
-                         when '_' | '0' | '/' =>
-                            Skip;
- 
-                         when 'B' | 'b'  =>
-                            Pic.Picture.Expanded (Index) := 'b';
-                            Skip;
- 
-                         when '*' =>
-                            Pic.Star_Fill := True;
-                            Pic.Max_Trailing_Digits :=
-                              Pic.Max_Trailing_Digits + 1;
-                            Pic.End_Float := Index;
-                            Skip;
- 
-                         when others =>
-                            return;
-                      end case;
-                   end loop;
- 
-                when others =>
-                   Number_Fraction;
-                   return;
-             end case;
-          end loop;
-       end Number_Fraction_Or_Star_Fill;
- 
-       -------------------------------
-       -- Number_Fraction_Or_Z_Fill --
-       -------------------------------
- 
-       procedure Number_Fraction_Or_Z_Fill is
-       begin
-          loop
-             if At_End then
-                return;
-             end if;
- 
-             case Look is
-                when '_' | '0' | '/' =>
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when 'Z' | 'z' =>
-                   Pic.Max_Trailing_Digits := Pic.Max_Trailing_Digits + 1;
-                   Pic.End_Float := Index;
-                   Pic.Picture.Expanded (Index) := 'Z'; -- consistency
- 
-                   Skip;
- 
-                   loop
-                      if At_End then
-                         return;
-                      end if;
- 
-                      case Look is
-                         when '_' | '0' | '/' =>
-                            Skip;
- 
-                         when 'B' | 'b'  =>
-                            Pic.Picture.Expanded (Index) := 'b';
-                            Skip;
- 
-                         when 'Z' | 'z' =>
-                            Pic.Picture.Expanded (Index) := 'Z'; -- consistency
- 
-                            Pic.Max_Trailing_Digits :=
-                              Pic.Max_Trailing_Digits + 1;
-                            Pic.End_Float := Index;
-                            Skip;
- 
-                         when others =>
-                            return;
-                      end case;
-                   end loop;
- 
-                when others =>
-                   Number_Fraction;
-                   return;
-             end case;
-          end loop;
-       end Number_Fraction_Or_Z_Fill;
- 
-       -----------------------
-       -- Optional_RHS_Sign --
-       -----------------------
- 
-       procedure Optional_RHS_Sign is
-       begin
-          if At_End then
-             return;
-          end if;
- 
-          case Look is
-             when '+' | '-' =>
-                Pic.Sign_Position := Index;
-                Skip;
-                return;
- 
-             when 'C' | 'c' =>
-                Pic.Sign_Position := Index;
-                Pic.Picture.Expanded (Index) := 'C';
-                Skip;
- 
-                if Look = 'R' or else Look = 'r' then
-                   Pic.Second_Sign := Index;
-                   Pic.Picture.Expanded (Index) := 'R';
-                   Skip;
- 
-                else
-                   raise Picture_Error;
-                end if;
- 
-                return;
- 
-             when 'D' | 'd' =>
-                Pic.Sign_Position := Index;
-                Pic.Picture.Expanded (Index) := 'D';
-                Skip;
- 
-                if Look = 'B' or else Look = 'b' then
-                   Pic.Second_Sign := Index;
-                   Pic.Picture.Expanded (Index) := 'B';
-                   Skip;
- 
-                else
-                   raise Picture_Error;
-                end if;
- 
-                return;
- 
-             when '>' =>
-                if Pic.Picture.Expanded (Pic.Sign_Position) = '<' then
-                   Pic.Second_Sign := Index;
-                   Skip;
- 
-                else
-                   raise Picture_Error;
-                end if;
- 
-             when others =>
-                return;
-          end case;
-       end Optional_RHS_Sign;
- 
-       -------------
-       -- Picture --
-       -------------
- 
-       --  Note that Picture can be called in either State
- 
-       --  It will set state to Valid only if a 9 is encountered or floating
-       --  currency is called.
- 
-       procedure Picture is
-       begin
-          loop
-             if At_End then
-                return;
-             end if;
- 
-             case Look is
-                when '_' | '0' | '/' =>
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when '$' =>
-                   Leading_Dollar;
-                   return;
- 
-                when '#' =>
-                   Leading_Pound;
-                   return;
- 
-                when '9' =>
-                   Computed_BWZ := False;
-                   Set_State (Okay);
-                   Pic.Max_Leading_Digits := Pic.Max_Leading_Digits + 1;
-                   Skip;
- 
-                when 'V' | 'v' | '.' =>
-                   Pic.Radix_Position := Index;
-                   Skip;
-                   Number_Fraction;
-                   Trailing_Currency;
-                   return;
- 
-                when others =>
-                   return;
-             end case;
-          end loop;
-       end Picture;
- 
-       ---------------------
-       -- Picture_Bracket --
-       ---------------------
- 
-       procedure Picture_Bracket is
-       begin
-          Pic.Sign_Position := Index;
-          Pic.Sign_Position := Index;
- 
-          --  Treat as a floating sign, and unwind otherwise
- 
-          Pic.Floater := '<';
-          Pic.Start_Float := Index;
-          Pic.End_Float := Index;
- 
-          --  Don't increment Pic.Max_Leading_Digits, we need one "real"
-          --  sign place.
- 
-          Skip; --  Known Bracket
- 
-          loop
-             case Look is
-                when '_' | '0' | '/' =>
-                   Pic.End_Float := Index;
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.End_Float := Index;
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when '<' =>
-                   Set_State (Okay);  --  "<<>" is enough.
-                   Floating_Bracket;
-                   Trailing_Currency;
-                   Trailing_Bracket;
-                   return;
- 
-                when '$' | '#' | '9' | '*' =>
-                   if State /= Okay then
-                      Pic.Floater := '!';
-                      Pic.Start_Float := Invalid_Position;
-                      Pic.End_Float := Invalid_Position;
-                   end if;
- 
-                   Picture;
-                   Trailing_Bracket;
-                   Set_State (Okay);
-                   return;
- 
-                when '.' | 'V' | 'v' =>
-                   if State /= Okay then
-                      Pic.Floater := '!';
-                      Pic.Start_Float := Invalid_Position;
-                      Pic.End_Float := Invalid_Position;
-                   end if;
- 
-                   --  Don't assume that state is okay, haven't seen a digit
- 
-                   Picture;
-                   Trailing_Bracket;
-                   return;
- 
-                when others =>
-                   raise Picture_Error;
-             end case;
-          end loop;
-       end Picture_Bracket;
- 
-       -------------------
-       -- Picture_Minus --
-       -------------------
- 
-       procedure Picture_Minus is
-       begin
-          Pic.Sign_Position := Index;
- 
-          --  Treat as a floating sign, and unwind otherwise
- 
-          Pic.Floater := '-';
-          Pic.Start_Float := Index;
-          Pic.End_Float := Index;
- 
-          --  Don't increment Pic.Max_Leading_Digits, we need one "real"
-          --  sign place.
- 
-          Skip; --  Known Minus
- 
-          loop
-             case Look is
-                when '_' | '0' | '/' =>
-                   Pic.End_Float := Index;
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.End_Float := Index;
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when '-' =>
-                   Pic.Max_Leading_Digits := Pic.Max_Leading_Digits + 1;
-                   Pic.End_Float := Index;
-                   Skip;
-                   Set_State (Okay);  --  "-- " is enough
-                   Floating_Minus;
-                   Trailing_Currency;
-                   return;
- 
-                when '$' | '#' | '9' | '*' =>
-                   if State /= Okay then
-                      Pic.Floater := '!';
-                      Pic.Start_Float := Invalid_Position;
-                      Pic.End_Float := Invalid_Position;
-                   end if;
- 
-                   Picture;
-                   Set_State (Okay);
-                   return;
- 
-                when 'Z' | 'z' =>
- 
-                   --  Can't have Z and a floating sign
- 
-                   if State = Okay then
-                      Set_State (Reject);
-                   end if;
- 
-                   Pic.Picture.Expanded (Index) := 'Z'; -- consistency
-                   Zero_Suppression;
-                   Trailing_Currency;
-                   Optional_RHS_Sign;
-                   return;
- 
-                when '.' | 'V' | 'v' =>
-                   if State /= Okay then
-                      Pic.Floater := '!';
-                      Pic.Start_Float := Invalid_Position;
-                      Pic.End_Float := Invalid_Position;
-                   end if;
- 
-                   --  Don't assume that state is okay, haven't seen a digit
- 
-                   Picture;
-                   return;
- 
-                when others =>
-                   return;
-             end case;
-          end loop;
-       end Picture_Minus;
- 
-       ------------------
-       -- Picture_Plus --
-       ------------------
- 
-       procedure Picture_Plus is
-       begin
-          Pic.Sign_Position := Index;
- 
-          --  Treat as a floating sign, and unwind otherwise
- 
-          Pic.Floater := '+';
-          Pic.Start_Float := Index;
-          Pic.End_Float := Index;
- 
-          --  Don't increment Pic.Max_Leading_Digits, we need one "real"
-          --  sign place.
- 
-          Skip; --  Known Plus
- 
-          loop
-             case Look is
-                when '_' | '0' | '/' =>
-                   Pic.End_Float := Index;
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.End_Float := Index;
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when '+' =>
-                   Pic.Max_Leading_Digits := Pic.Max_Leading_Digits + 1;
-                   Pic.End_Float := Index;
-                   Skip;
-                   Set_State (Okay);  --  "++" is enough
-                   Floating_Plus;
-                   Trailing_Currency;
-                   return;
- 
-                when '$' | '#' | '9' | '*' =>
-                   if State /= Okay then
-                      Pic.Floater := '!';
-                      Pic.Start_Float := Invalid_Position;
-                      Pic.End_Float := Invalid_Position;
-                   end if;
- 
-                   Picture;
-                   Set_State (Okay);
-                   return;
- 
-                when 'Z' | 'z' =>
-                   if State = Okay then
-                      Set_State (Reject);
-                   end if;
- 
-                   --  Can't have Z and a floating sign
- 
-                   Pic.Picture.Expanded (Index) := 'Z'; -- consistency
- 
-                   --  '+Z' is acceptable
- 
-                   Set_State (Okay);
- 
-                   Zero_Suppression;
-                   Trailing_Currency;
-                   Optional_RHS_Sign;
-                   return;
- 
-                when '.' | 'V' | 'v' =>
-                   if State /= Okay then
-                      Pic.Floater := '!';
-                      Pic.Start_Float := Invalid_Position;
-                      Pic.End_Float := Invalid_Position;
-                   end if;
- 
-                   --  Don't assume that state is okay, haven't seen a digit
- 
-                   Picture;
-                   return;
- 
-                when others =>
-                   return;
-             end case;
-          end loop;
-       end Picture_Plus;
- 
-       --------------------
-       -- Picture_String --
-       --------------------
- 
-       procedure Picture_String is
-       begin
-          while Is_Insert loop
-             Skip;
-          end loop;
- 
-          case Look is
-             when '$' | '#' =>
-                Picture;
-                Optional_RHS_Sign;
- 
-             when '+' =>
-                Picture_Plus;
- 
-             when '-' =>
-                Picture_Minus;
- 
-             when '<' =>
-                Picture_Bracket;
- 
-             when 'Z' | 'z' =>
-                Pic.Picture.Expanded (Index) := 'Z'; -- consistency
-                Zero_Suppression;
-                Trailing_Currency;
-                Optional_RHS_Sign;
- 
-             when '*' =>
-                Star_Suppression;
-                Trailing_Currency;
-                Optional_RHS_Sign;
- 
-             when '9' | '.' | 'V' | 'v' =>
-                Number;
-                Trailing_Currency;
-                Optional_RHS_Sign;
- 
-             when others =>
-                raise Picture_Error;
-          end case;
- 
-          --  Blank when zero either if the PIC does not contain a '9' or if
-          --  requested by the user and no '*'.
- 
-          Pic.Blank_When_Zero :=
-            (Computed_BWZ or else Pic.Blank_When_Zero)
-              and then not Pic.Star_Fill;
- 
-          --  Star fill if '*' and no '9'
- 
-          Pic.Star_Fill := Pic.Star_Fill and then Computed_BWZ;
- 
-          if not At_End then
-             Set_State (Reject);
-          end if;
-       end Picture_String;
- 
-       ---------------
-       -- Set_State --
-       ---------------
- 
-       procedure Set_State (L : Legality) is
-       begin
-          State := L;
-       end Set_State;
- 
-       ----------
-       -- Skip --
-       ----------
- 
-       procedure Skip is
-       begin
-          Index := Index + 1;
-       end Skip;
- 
-       ----------------------
-       -- Star_Suppression --
-       ----------------------
- 
-       procedure Star_Suppression is
-       begin
-          Pic.Floater := '*';
-          Pic.Start_Float := Index;
-          Pic.End_Float := Index;
-          Pic.Max_Leading_Digits := Pic.Max_Leading_Digits + 1;
-          Set_State (Okay);
- 
-          --  Even a single * is a valid picture
- 
-          Pic.Star_Fill := True;
-          Skip; --  Known *
- 
-          loop
-             if At_End then
-                return;
-             end if;
- 
-             case Look is
-                when '_' | '0' | '/' =>
-                   Pic.End_Float := Index;
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.End_Float := Index;
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when '*' =>
-                   Pic.End_Float := Index;
-                   Pic.Max_Leading_Digits := Pic.Max_Leading_Digits + 1;
-                   Set_State (Okay); Skip;
- 
-                when '9' =>
-                   Set_State (Okay);
-                   Number_Completion;
-                   return;
- 
-                when '.' | 'V' | 'v' =>
-                   Pic.Radix_Position := Index;
-                   Skip;
-                   Number_Fraction_Or_Star_Fill;
-                   return;
- 
-                when '#' | '$' =>
-                   Trailing_Currency;
-                   Set_State (Okay);
-                   return;
- 
-                when others =>
-                   raise Picture_Error;
-             end case;
-          end loop;
-       end Star_Suppression;
- 
-       ----------------------
-       -- Trailing_Bracket --
-       ----------------------
- 
-       procedure Trailing_Bracket is
-       begin
-          if Look = '>' then
-             Pic.Second_Sign := Index;
-             Skip;
-          else
-             raise Picture_Error;
-          end if;
-       end Trailing_Bracket;
- 
-       -----------------------
-       -- Trailing_Currency --
-       -----------------------
- 
-       procedure Trailing_Currency is
-       begin
-          if At_End then
-             return;
-          end if;
- 
-          if Look = '$' then
-             Pic.Start_Currency := Index;
-             Pic.End_Currency := Index;
-             Skip;
- 
-          else
-             while not At_End and then Look = '#' loop
-                if Pic.Start_Currency = Invalid_Position then
-                   Pic.Start_Currency := Index;
-                end if;
- 
-                Pic.End_Currency := Index;
-                Skip;
-             end loop;
-          end if;
- 
-          loop
-             if At_End then
-                return;
-             end if;
- 
-             case Look is
-                when '_' | '0' | '/' =>
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when others =>
-                   return;
-             end case;
-          end loop;
-       end Trailing_Currency;
- 
-       ----------------------
-       -- Zero_Suppression --
-       ----------------------
- 
-       procedure Zero_Suppression is
-       begin
-          Pic.Floater := 'Z';
-          Pic.Start_Float := Index;
-          Pic.End_Float := Index;
-          Pic.Max_Leading_Digits := Pic.Max_Leading_Digits + 1;
-          Pic.Picture.Expanded (Index) := 'Z'; -- consistency
- 
-          Skip; --  Known Z
- 
-          loop
-             --  Even a single Z is a valid picture
- 
-             if At_End then
-                Set_State (Okay);
-                return;
-             end if;
- 
-             case Look is
-                when '_' | '0' | '/' =>
-                   Pic.End_Float := Index;
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.End_Float := Index;
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when 'Z' | 'z' =>
-                   Pic.Picture.Expanded (Index) := 'Z'; -- consistency
- 
-                   Pic.Max_Leading_Digits := Pic.Max_Leading_Digits + 1;
-                   Pic.End_Float := Index;
-                   Set_State (Okay);
-                   Skip;
- 
-                when '9' =>
-                   Set_State (Okay);
-                   Number_Completion;
-                   return;
- 
-                when '.' | 'V' | 'v' =>
-                   Pic.Radix_Position := Index;
-                   Skip;
-                   Number_Fraction_Or_Z_Fill;
-                   return;
- 
-                when '#' | '$' =>
-                   Trailing_Currency;
-                   Set_State (Okay);
-                   return;
- 
-                when others =>
-                   return;
-             end case;
-          end loop;
-       end Zero_Suppression;
- 
-    --  Start of processing for Precalculate
- 
-    begin
-       Picture_String;
- 
-       if State = Reject then
-          raise Picture_Error;
-       end if;
- 
-    exception
- 
-       when Constraint_Error =>
- 
-       --  To deal with special cases like null strings
- 
-       raise Picture_Error;
-    end Precalculate;
- 
-    ----------------
-    -- To_Picture --
-    ----------------
- 
-    function To_Picture
-      (Pic_String      : String;
-       Blank_When_Zero : Boolean := False) return Picture
-    is
-       Result : Picture;
- 
-    begin
-       declare
-          Item : constant String := Expand (Pic_String);
- 
-       begin
-          Result.Contents.Picture         := (Item'Length, Item);
-          Result.Contents.Original_BWZ := Blank_When_Zero;
-          Result.Contents.Blank_When_Zero := Blank_When_Zero;
-          Precalculate (Result.Contents);
-          return Result;
-       end;
- 
-    exception
-       when others =>
-          raise Picture_Error;
- 
-    end To_Picture;
- 
-    -------------
-    -- To_Wide --
-    -------------
- 
-    function To_Wide (C : Character) return Wide_Character is
-    begin
-       return Wide_Character'Val (Character'Pos (C));
-    end To_Wide;
- 
-    -----------
-    -- Valid --
-    -----------
- 
-    function Valid
-      (Pic_String      : String;
-       Blank_When_Zero : Boolean := False) return Boolean
-    is
-    begin
-       declare
-          Expanded_Pic : constant String := Expand (Pic_String);
-          --  Raises Picture_Error if Item not well-formed
- 
-          Format_Rec : Format_Record;
- 
-       begin
-          Format_Rec.Picture := (Expanded_Pic'Length, Expanded_Pic);
-          Format_Rec.Blank_When_Zero := Blank_When_Zero;
-          Format_Rec.Original_BWZ := Blank_When_Zero;
-          Precalculate (Format_Rec);
- 
-          --  False only if Blank_When_0 is True but the pic string has a '*'
- 
-          return not Blank_When_Zero
-            or else Strings_Fixed.Index (Expanded_Pic, "*") = 0;
-       end;
- 
-    exception
-       when others => return False;
-    end Valid;
- 
- end Ada.Wide_Text_IO.Editing;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-wtedit.ads gcc-8.1.0/gcc/ada/a-wtedit.ads
*** gcc-7.3.0/gcc/ada/a-wtedit.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-wtedit.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,197 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --             A D A . W I D E _ T E X T _ I O . E D I T I N G              --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2009, Free Software Foundation, 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 Ada.Wide_Text_IO.Editing is
- 
-    type Picture is private;
- 
-    function Valid
-      (Pic_String      : String;
-       Blank_When_Zero : Boolean := False) return Boolean;
- 
-    function To_Picture
-      (Pic_String      : String;
-       Blank_When_Zero : Boolean := False) return Picture;
- 
-    function Pic_String      (Pic : Picture) return String;
-    function Blank_When_Zero (Pic : Picture) return Boolean;
- 
-    Max_Picture_Length : constant := 64;
- 
-    Picture_Error : exception;
- 
-    Default_Currency   : constant Wide_String    := "$";
-    Default_Fill       : constant Wide_Character := ' ';
-    Default_Separator  : constant Wide_Character := ',';
-    Default_Radix_Mark : constant Wide_Character := '.';
- 
-    generic
-       type Num is delta <> digits <>;
-       Default_Currency   : Wide_String :=
-                                 Wide_Text_IO.Editing.Default_Currency;
-       Default_Fill       : Wide_Character :=
-                                 Wide_Text_IO.Editing.Default_Fill;
-       Default_Separator  : Wide_Character :=
-                                 Wide_Text_IO.Editing.Default_Separator;
-       Default_Radix_Mark : Wide_Character :=
-                                 Wide_Text_IO.Editing.Default_Radix_Mark;
- 
-    package Decimal_Output is
- 
-       function Length
-         (Pic      : Picture;
-          Currency : Wide_String := Default_Currency) return Natural;
- 
-       function Valid
-         (Item     : Num;
-          Pic      : Picture;
-          Currency : Wide_String := Default_Currency) return Boolean;
- 
-       function Image
-         (Item       : Num;
-          Pic        : Picture;
-          Currency   : Wide_String    := Default_Currency;
-          Fill       : Wide_Character := Default_Fill;
-          Separator  : Wide_Character := Default_Separator;
-          Radix_Mark : Wide_Character := Default_Radix_Mark) return Wide_String;
- 
-       procedure Put
-         (File       : File_Type;
-          Item       : Num;
-          Pic        : Picture;
-          Currency   : Wide_String    := Default_Currency;
-          Fill       : Wide_Character := Default_Fill;
-          Separator  : Wide_Character := Default_Separator;
-          Radix_Mark : Wide_Character := Default_Radix_Mark);
- 
-       procedure Put
-         (Item       : Num;
-          Pic        : Picture;
-          Currency   : Wide_String    := Default_Currency;
-          Fill       : Wide_Character := Default_Fill;
-          Separator  : Wide_Character := Default_Separator;
-          Radix_Mark : Wide_Character := Default_Radix_Mark);
- 
-       procedure Put
-         (To         : out Wide_String;
-          Item       : Num;
-          Pic        : Picture;
-          Currency   : Wide_String    := Default_Currency;
-          Fill       : Wide_Character := Default_Fill;
-          Separator  : Wide_Character := Default_Separator;
-          Radix_Mark : Wide_Character := Default_Radix_Mark);
- 
-    end Decimal_Output;
- 
- private
-    MAX_PICSIZE      : constant := 50;
-    MAX_MONEYSIZE    : constant := 10;
-    Invalid_Position : constant := -1;
- 
-    subtype Pic_Index is Natural range 0 .. MAX_PICSIZE;
- 
-    type Picture_Record (Length : Pic_Index := 0) is record
-       Expanded : String (1 .. Length);
-    end record;
- 
-    type Format_Record is record
-       Picture              : Picture_Record;
-       --  Read only
- 
-       Blank_When_Zero      : Boolean;
-       --  Read/write
- 
-       Original_BWZ         : Boolean;
- 
-       --  The following components get written
- 
-       Star_Fill            : Boolean := False;
- 
-       Radix_Position       : Integer := Invalid_Position;
- 
-       Sign_Position,
-       Second_Sign          : Integer := Invalid_Position;
- 
-       Start_Float,
-       End_Float            : Integer := Invalid_Position;
- 
-       Start_Currency,
-       End_Currency         : Integer := Invalid_Position;
- 
-       Max_Leading_Digits   : Integer := 0;
- 
-       Max_Trailing_Digits  : Integer := 0;
- 
-       Max_Currency_Digits  : Integer := 0;
- 
-       Floater              : Wide_Character := '!';
-       --  Initialized to illegal value
- 
-    end record;
- 
-    type Picture is record
-       Contents : Format_Record;
-    end record;
- 
-    type Number_Attributes is record
-       Negative     : Boolean := False;
- 
-       Has_Fraction : Boolean := False;
- 
-       Start_Of_Int,
-       End_Of_Int,
-       Start_Of_Fraction,
-       End_Of_Fraction : Integer := Invalid_Position;    -- invalid value
-    end record;
- 
-    function Parse_Number_String (Str : String) return Number_Attributes;
-    --  Assumed format is 'IMAGE or Fixed_IO.Put format (depends on no
-    --  trailing blanks...)
- 
-    procedure Precalculate (Pic : in out Format_Record);
-    --  Precalculates fields from the user supplied data
- 
-    function Format_Number
-      (Pic                 : Format_Record;
-       Number              : String;
-       Currency_Symbol     : Wide_String;
-       Fill_Character      : Wide_Character;
-       Separator_Character : Wide_Character;
-       Radix_Point         : Wide_Character) return Wide_String;
-    --  Formats number according to Pic
- 
-    function Expand (Picture : String) return String;
- 
- end Ada.Wide_Text_IO.Editing;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-wtenau.adb gcc-8.1.0/gcc/ada/a-wtenau.adb
*** gcc-7.3.0/gcc/ada/a-wtenau.adb	Mon Jan 23 11:17:23 2017
--- gcc-8.1.0/gcc/ada/a-wtenau.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,349 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --      A D A . W I D E _ T E X T _ I O . E N U M E R A T I O N _ A U X     --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Wide_Text_IO.Generic_Aux; use Ada.Wide_Text_IO.Generic_Aux;
- with Ada.Characters.Handling;      use Ada.Characters.Handling;
- with Interfaces.C_Streams;         use Interfaces.C_Streams;
- with System.WCh_Con;               use System.WCh_Con;
- 
- package body Ada.Wide_Text_IO.Enumeration_Aux is
- 
-    subtype TFT is Ada.Wide_Text_IO.File_Type;
-    --  File type required for calls to routines in Aux
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    procedure Store_Char
-      (WC  : Wide_Character;
-       Buf : out Wide_String;
-       Ptr : in out Integer);
-    --  Store a single character in buffer, checking for overflow
- 
-    --  These definitions replace the ones in Ada.Characters.Handling, which
-    --  do not seem to work for some strange not understood reason ??? at
-    --  least in the OS/2 version.
- 
-    function To_Lower (C : Character) return Character;
- 
-    ------------------
-    -- Get_Enum_Lit --
-    ------------------
- 
-    procedure Get_Enum_Lit
-      (File   : File_Type;
-       Buf    : out Wide_String;
-       Buflen : out Natural)
-    is
-       ch  : int;
-       WC  : Wide_Character;
- 
-    begin
-       Buflen := 0;
-       Load_Skip (TFT (File));
-       ch := Nextc (TFT (File));
- 
-       --  Character literal case. If the initial character is a quote, then
-       --  we read as far as we can without backup (see ACVC test CE3905L)
- 
-       if ch = Character'Pos (''') then
-          Get (File, WC);
-          Store_Char (WC, Buf, Buflen);
- 
-          ch := Nextc (TFT (File));
- 
-          if ch = LM or else ch = EOF then
-             return;
-          end if;
- 
-          Get (File, WC);
-          Store_Char (WC, Buf, Buflen);
- 
-          ch := Nextc (TFT (File));
- 
-          if ch /= Character'Pos (''') then
-             return;
-          end if;
- 
-          Get (File, WC);
-          Store_Char (WC, Buf, Buflen);
- 
-       --  Similarly for identifiers, read as far as we can, in particular,
-       --  do read a trailing underscore (again see ACVC test CE3905L to
-       --  understand why we do this, although it seems somewhat peculiar).
- 
-       else
-          --  Identifier must start with a letter. Any wide character value
-          --  outside the normal Latin-1 range counts as a letter for this.
- 
-          if ch < 255 and then not Is_Letter (Character'Val (ch)) then
-             return;
-          end if;
- 
-          --  If we do have a letter, loop through the characters quitting on
-          --  the first non-identifier character (note that this includes the
-          --  cases of hitting a line mark or page mark).
- 
-          loop
-             Get (File, WC);
-             Store_Char (WC, Buf, Buflen);
- 
-             ch := Nextc (TFT (File));
- 
-             exit when ch = EOF;
- 
-             if ch = Character'Pos ('_') then
-                exit when Buf (Buflen) = '_';
- 
-             elsif ch = Character'Pos (ASCII.ESC) then
-                null;
- 
-             elsif File.WC_Method in WC_Upper_Half_Encoding_Method
-               and then ch > 127
-             then
-                null;
- 
-             else
-                exit when not Is_Letter (Character'Val (ch))
-                            and then
-                          not Is_Digit (Character'Val (ch));
-             end if;
-          end loop;
-       end if;
-    end Get_Enum_Lit;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put
-      (File  : File_Type;
-       Item  : Wide_String;
-       Width : Field;
-       Set   : Type_Set)
-    is
-       Actual_Width : constant Integer :=
-         Integer'Max (Integer (Width), Item'Length);
- 
-    begin
-       Check_On_One_Line (TFT (File), Actual_Width);
- 
-       if Set = Lower_Case and then Item (Item'First) /= ''' then
-          declare
-             Iteml : Wide_String (Item'First .. Item'Last);
- 
-          begin
-             for J in Item'Range loop
-                if Is_Character (Item (J)) then
-                   Iteml (J) :=
-                     To_Wide_Character (To_Lower (To_Character (Item (J))));
-                else
-                   Iteml (J) := Item (J);
-                end if;
-             end loop;
- 
-             Put (File, Iteml);
-          end;
- 
-       else
-          Put (File, Item);
-       end if;
- 
-       for J in 1 .. Actual_Width - Item'Length loop
-          Put (File, ' ');
-       end loop;
-    end Put;
- 
-    ----------
-    -- Puts --
-    ----------
- 
-    procedure Puts
-      (To   : out Wide_String;
-       Item : Wide_String;
-       Set  : Type_Set)
-    is
-       Ptr : Natural;
- 
-    begin
-       if Item'Length > To'Length then
-          raise Layout_Error;
- 
-       else
-          Ptr := To'First;
-          for J in Item'Range loop
-             if Set = Lower_Case
-               and then Item (Item'First) /= '''
-               and then Is_Character (Item (J))
-             then
-                To (Ptr) :=
-                  To_Wide_Character (To_Lower (To_Character (Item (J))));
-             else
-                To (Ptr) := Item (J);
-             end if;
- 
-             Ptr := Ptr + 1;
-          end loop;
- 
-          while Ptr <= To'Last loop
-             To (Ptr) := ' ';
-             Ptr := Ptr + 1;
-          end loop;
-       end if;
-    end Puts;
- 
-    -------------------
-    -- Scan_Enum_Lit --
-    -------------------
- 
-    procedure Scan_Enum_Lit
-      (From  : Wide_String;
-       Start : out Natural;
-       Stop  : out Natural)
-    is
-       WC  : Wide_Character;
- 
-    --  Processing for Scan_Enum_Lit
- 
-    begin
-       Start := From'First;
- 
-       loop
-          if Start > From'Last then
-             raise End_Error;
- 
-          elsif Is_Character (From (Start))
-            and then not Is_Blank (To_Character (From (Start)))
-          then
-             exit;
- 
-          else
-             Start := Start + 1;
-          end if;
-       end loop;
- 
-       --  Character literal case. If the initial character is a quote, then
-       --  we read as far as we can without backup (see ACVC test CE3905L
-       --  which is for the analogous case for reading from a file).
- 
-       if From (Start) = ''' then
-          Stop := Start;
- 
-          if Stop = From'Last then
-             raise Data_Error;
-          else
-             Stop := Stop + 1;
-          end if;
- 
-          if From (Stop) in ' ' .. '~'
-            or else From (Stop) >= Wide_Character'Val (16#80#)
-          then
-             if Stop = From'Last then
-                raise Data_Error;
-             else
-                Stop := Stop + 1;
- 
-                if From (Stop) = ''' then
-                   return;
-                end if;
-             end if;
-          end if;
- 
-          raise Data_Error;
- 
-       --  Similarly for identifiers, read as far as we can, in particular,
-       --  do read a trailing underscore (again see ACVC test CE3905L to
-       --  understand why we do this, although it seems somewhat peculiar).
- 
-       else
-          --  Identifier must start with a letter, any wide character outside
-          --  the normal Latin-1 range is considered a letter for this test.
- 
-          if Is_Character (From (Start))
-            and then not Is_Letter (To_Character (From (Start)))
-          then
-             raise Data_Error;
-          end if;
- 
-          --  If we do have a letter, loop through the characters quitting on
-          --  the first non-identifier character (note that this includes the
-          --  cases of hitting a line mark or page mark).
- 
-          Stop := Start + 1;
-          while Stop < From'Last loop
-             WC := From (Stop + 1);
- 
-             exit when
-               Is_Character (WC)
-                 and then
-                   not Is_Letter (To_Character (WC))
-                 and then
-                   (WC /= '_' or else From (Stop - 1) = '_');
- 
-             Stop := Stop + 1;
-          end loop;
-       end if;
- 
-    end Scan_Enum_Lit;
- 
-    ----------------
-    -- Store_Char --
-    ----------------
- 
-    procedure Store_Char
-      (WC  : Wide_Character;
-       Buf : out Wide_String;
-       Ptr : in out Integer)
-    is
-    begin
-       if Ptr = Buf'Last then
-          raise Data_Error;
-       else
-          Ptr := Ptr + 1;
-          Buf (Ptr) := WC;
-       end if;
-    end Store_Char;
- 
-    --------------
-    -- To_Lower --
-    --------------
- 
-    function To_Lower (C : Character) return Character is
-    begin
-       if C in 'A' .. 'Z' then
-          return Character'Val (Character'Pos (C) + 32);
-       else
-          return C;
-       end if;
-    end To_Lower;
- 
- end Ada.Wide_Text_IO.Enumeration_Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-wtenau.ads gcc-8.1.0/gcc/ada/a-wtenau.ads
*** gcc-7.3.0/gcc/ada/a-wtenau.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-wtenau.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,69 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --      A D A . W I D E _ T E X T _ I O . E N U M E R A T I O N _ A U X     --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          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- --
- -- 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 routines for Ada.Wide_Text_IO.Enumeration_IO
- --  that are shared among separate instantiations.
- 
- private package Ada.Wide_Text_IO.Enumeration_Aux is
- 
-    procedure Get_Enum_Lit
-      (File   : File_Type;
-       Buf    : out Wide_String;
-       Buflen : out Natural);
-    --  Reads an enumeration literal value from the file, folds to upper case,
-    --  and stores the result in Buf, setting Buflen to the number of stored
-    --  characters (Buf has a lower bound of 1). If more than Buflen characters
-    --  are present in the literal, Data_Error is raised.
- 
-    procedure Scan_Enum_Lit
-      (From  : Wide_String;
-       Start : out Natural;
-       Stop  : out Natural);
-    --  Scans an enumeration literal at the start of From, skipping any leading
-    --  spaces. Sets Start to the first character, Stop to the last character.
-    --  Raises End_Error if no enumeration literal is found.
- 
-    procedure Put
-      (File  : File_Type;
-       Item  : Wide_String;
-       Width : Field;
-       Set   : Type_Set);
-    --  Outputs the enumeration literal image stored in Item to the given File,
-    --  using the given Width and Set parameters (Item is always in upper case).
- 
-    procedure Puts
-      (To   : out Wide_String;
-       Item : Wide_String;
-       Set  : Type_Set);
-    --  Stores the enumeration literal image stored in Item to the string To,
-    --  padding with trailing spaces if necessary to fill To. Set is used to
- 
- end Ada.Wide_Text_IO.Enumeration_Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-wtenio.adb gcc-8.1.0/gcc/ada/a-wtenio.adb
*** gcc-7.3.0/gcc/ada/a-wtenio.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-wtenio.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,104 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --       A D A . W I D E _ T E X T _ I O . E N U M E R A T I O N _ I O      --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          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- --
- -- 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.Wide_Text_IO.Enumeration_Aux;
- 
- package body Ada.Wide_Text_IO.Enumeration_IO is
- 
-    package Aux renames Ada.Wide_Text_IO.Enumeration_Aux;
- 
-    ---------
-    -- Get --
-    ---------
- 
-    procedure Get (File : File_Type; Item : out Enum) is
-       Buf    : Wide_String (1 .. Enum'Width);
-       Buflen : Natural;
-    begin
-       Aux.Get_Enum_Lit (File, Buf, Buflen);
-       Item := Enum'Wide_Value (Buf (1 .. Buflen));
-    exception
-       when Constraint_Error => raise Data_Error;
-    end Get;
- 
-    procedure Get (Item : out Enum) is
-    begin
-       Get (Current_Input, Item);
-    end Get;
- 
-    procedure Get
-      (From : Wide_String;
-       Item : out Enum;
-       Last : out Positive)
-    is
-       Start : Natural;
-    begin
-       Aux.Scan_Enum_Lit (From, Start, Last);
-       Item := Enum'Wide_Value (From (Start .. Last));
-    exception
-       when Constraint_Error => raise Data_Error;
-    end Get;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put
-      (File  : File_Type;
-       Item  : Enum;
-       Width : Field := Default_Width;
-       Set   : Type_Set := Default_Setting)
-    is
-       Image : constant Wide_String := Enum'Wide_Image (Item);
-    begin
-       Aux.Put (File, Image, Width, Set);
-    end Put;
- 
-    procedure Put
-      (Item  : Enum;
-       Width : Field := Default_Width;
-       Set   : Type_Set := Default_Setting)
-    is
-    begin
-       Put (Current_Output, Item, Width, Set);
-    end Put;
- 
-    procedure Put
-      (To   : out Wide_String;
-       Item : Enum;
-       Set  : Type_Set := Default_Setting)
-    is
-       Image : constant Wide_String := Enum'Wide_Image (Item);
-    begin
-       Aux.Puts (To, Image, Set);
-    end Put;
- 
- end Ada.Wide_Text_IO.Enumeration_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-wtenio.ads gcc-8.1.0/gcc/ada/a-wtenio.ads
*** gcc-7.3.0/gcc/ada/a-wtenio.ads	Thu Jul 17 06:35:13 2014
--- gcc-8.1.0/gcc/ada/a-wtenio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,54 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --       A D A . W I D E _ T E X T _ I O . E N U M E R A T I O N _ I O      --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  In Ada 95, the package Ada.Wide_Text_IO.Enumeration_IO is a subpackage
- --  of Wide_Text_IO. In GNAT we make it a child package to avoid loading the
- --  necessary code if Enumeration_IO is not instantiated. See the routine
- --  Rtsfind.Check_Text_IO_Special_Unit for a description of how we patch up
- --  the difference in semantics so that it is invisible to the Ada programmer.
- 
- private generic
-    type Enum is (<>);
- 
- package Ada.Wide_Text_IO.Enumeration_IO is
- 
-    Default_Width : Field := 0;
-    Default_Setting : Type_Set := Upper_Case;
- 
-    procedure Get (File : File_Type; Item : out Enum);
-    procedure Get (Item : out Enum);
- 
-    procedure Put
-      (File  : File_Type;
-       Item  : Enum;
-       Width : Field := Default_Width;
-       Set   : Type_Set := Default_Setting);
- 
-    procedure Put
-      (Item  : Enum;
-       Width : Field := Default_Width;
-       Set   : Type_Set := Default_Setting);
- 
-    procedure Get
-      (From : Wide_String;
-       Item : out Enum;
-       Last : out Positive);
- 
-    procedure Put
-      (To   : out Wide_String;
-       Item : Enum;
-       Set  : Type_Set := Default_Setting);
- 
- end Ada.Wide_Text_IO.Enumeration_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-wtfiio.adb gcc-8.1.0/gcc/ada/a-wtfiio.adb
*** gcc-7.3.0/gcc/ada/a-wtfiio.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-wtfiio.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,126 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --     A D A . T E X T _ I O . W I D E _ T E X T _ I O . F I X E D _ I O    --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          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- --
- -- 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.Wide_Text_IO.Float_Aux;
- with System.WCh_Con; use System.WCh_Con;
- with System.WCh_WtS; use System.WCh_WtS;
- 
- package body Ada.Wide_Text_IO.Fixed_IO is
- 
-    subtype TFT is Ada.Wide_Text_IO.File_Type;
-    --  File type required for calls to routines in Aux
- 
-    package Aux renames Ada.Wide_Text_IO.Float_Aux;
- 
-    ---------
-    -- Get --
-    ---------
- 
-    procedure Get
-      (File  : File_Type;
-       Item  : out Num;
-       Width : Field := 0)
-    is
-    begin
-       Aux.Get (TFT (File), Long_Long_Float (Item), Width);
- 
-    exception
-       when Constraint_Error => raise Data_Error;
-    end Get;
- 
-    procedure Get
-      (Item  : out Num;
-       Width : Field := 0)
-    is
-    begin
-       Get (Current_Input, Item, Width);
-    end Get;
- 
-    procedure Get
-      (From : Wide_String;
-       Item : out Num;
-       Last : out Positive)
-    is
-       S : constant String := Wide_String_To_String (From, WCEM_Upper);
-       --  String on which we do the actual conversion. Note that the method
-       --  used for wide character encoding is irrelevant, since if there is
-       --  a character outside the Standard.Character range then the call to
-       --  Aux.Gets will raise Data_Error in any case.
- 
-    begin
-       Aux.Gets (S, Long_Long_Float (Item), Last);
- 
-    exception
-       when Constraint_Error => raise Data_Error;
-    end Get;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put
-      (File : File_Type;
-       Item : Num;
-       Fore : Field := Default_Fore;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp)
-    is
-    begin
-       Aux.Put (TFT (File), Long_Long_Float (Item), Fore, Aft, Exp);
-    end Put;
- 
-    procedure Put
-      (Item : Num;
-       Fore : Field := Default_Fore;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp)
-    is
-    begin
-       Put (Current_Output, Item, Fore, Aft, Exp);
-    end Put;
- 
-    procedure Put
-      (To   : out Wide_String;
-       Item : Num;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp)
-    is
-       S : String (To'First .. To'Last);
- 
-    begin
-       Aux.Puts (S, Long_Long_Float (Item), Aft, Exp);
- 
-       for J in S'Range loop
-          To (J) := Wide_Character'Val (Character'Pos (S (J)));
-       end loop;
-    end Put;
- 
- end Ada.Wide_Text_IO.Fixed_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-wtfiio.ads gcc-8.1.0/gcc/ada/a-wtfiio.ads
*** gcc-7.3.0/gcc/ada/a-wtfiio.ads	Thu Jul 17 06:35:13 2014
--- gcc-8.1.0/gcc/ada/a-wtfiio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,64 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --             A D A . W I D E _ T E X T _ I O . F I X E D _ I O            --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  In Ada 95, the package Ada.Wide_Text_IO.Fixed_IO is a subpackage of
- --  Wide_Text_IO. In GNAT we make it a child package to avoid loading
- --  the necessary code if Fixed_IO is not instantiated. See the routine
- --  Rtsfind.Check_Text_IO_Special_Unit for a description of how we patch up
- --  the difference in semantics so that it is invisible to the Ada programmer.
- 
- private generic
-    type Num is delta <>;
- 
- package Ada.Wide_Text_IO.Fixed_IO is
- 
-    Default_Fore : Field := Num'Fore;
-    Default_Aft  : Field := Num'Aft;
-    Default_Exp  : Field := 0;
- 
-    procedure Get
-      (File  : File_Type;
-       Item  : out Num;
-       Width : Field := 0);
- 
-    procedure Get
-      (Item  : out Num;
-       Width : Field := 0);
- 
-    procedure Put
-      (File : File_Type;
-       Item : Num;
-       Fore : Field := Default_Fore;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp);
- 
-    procedure Put
-      (Item : Num;
-       Fore : Field := Default_Fore;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp);
- 
-    procedure Get
-      (From : Wide_String;
-       Item : out Num;
-       Last : out Positive);
- 
-    procedure Put
-      (To   : out Wide_String;
-       Item : Num;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp);
- 
- end Ada.Wide_Text_IO.Fixed_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-wtflau.adb gcc-8.1.0/gcc/ada/a-wtflau.adb
*** gcc-7.3.0/gcc/ada/a-wtflau.adb	Tue Jan  6 09:24:33 2015
--- gcc-8.1.0/gcc/ada/a-wtflau.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,235 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                        GNAT RUN-TIME COMPONENTS                          --
- --                                                                          --
- --           A D A . W I D E _ T E X T _ I O . F L O A T _ A U X            --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Wide_Text_IO.Generic_Aux; use Ada.Wide_Text_IO.Generic_Aux;
- 
- with System.Img_Real;  use System.Img_Real;
- with System.Val_Real;  use System.Val_Real;
- 
- package body Ada.Wide_Text_IO.Float_Aux is
- 
-    ---------
-    -- Get --
-    ---------
- 
-    procedure Get
-      (File  : File_Type;
-       Item  : out Long_Long_Float;
-       Width : Field)
-    is
-       Buf  : String (1 .. Field'Last);
-       Stop : Integer := 0;
-       Ptr  : aliased Integer := 1;
- 
-    begin
-       if Width /= 0 then
-          Load_Width (File, Width, Buf, Stop);
-          String_Skip (Buf, Ptr);
-       else
-          Load_Real (File, Buf, Stop);
-       end if;
- 
-       Item := Scan_Real (Buf, Ptr'Access, Stop);
- 
-       Check_End_Of_Field (Buf, Stop, Ptr, Width);
-    end Get;
- 
-    ----------
-    -- Gets --
-    ----------
- 
-    procedure Gets
-      (From : String;
-       Item : out Long_Long_Float;
-       Last : out Positive)
-    is
-       Pos : aliased Integer;
- 
-    begin
-       String_Skip (From, Pos);
-       Item := Scan_Real (From, Pos'Access, From'Last);
-       Last := Pos - 1;
- 
-    exception
-       when Constraint_Error =>
-          raise Data_Error;
-    end Gets;
- 
-    ---------------
-    -- Load_Real --
-    ---------------
- 
-    procedure Load_Real
-      (File : File_Type;
-       Buf  : out String;
-       Ptr  : in out Natural)
-    is
-       Loaded   : Boolean;
- 
-    begin
-       --  Skip initial blanks and load possible sign
- 
-       Load_Skip (File);
-       Load (File, Buf, Ptr, '+', '-');
- 
-       --  Case of .nnnn
- 
-       Load (File, Buf, Ptr, '.', Loaded);
- 
-       if Loaded then
-          Load_Digits (File, Buf, Ptr, Loaded);
- 
-          --  Hopeless junk if no digits loaded
- 
-          if not Loaded then
-             return;
-          end if;
- 
-       --  Otherwise must have digits to start
- 
-       else
-          Load_Digits (File, Buf, Ptr, Loaded);
- 
-          --  Hopeless junk if no digits loaded
- 
-          if not Loaded then
-             return;
-          end if;
- 
-          --  Deal with based case. We recognize either the standard '#' or the
-          --  allowed alternative replacement ':' (see RM J.2(3)).
- 
-          Load (File, Buf, Ptr, '#', ':', Loaded);
- 
-          if Loaded then
- 
-             --  Case of nnn#.xxx#
- 
-             Load (File, Buf, Ptr, '.', Loaded);
- 
-             if Loaded then
-                Load_Extended_Digits (File, Buf, Ptr);
-                Load (File, Buf, Ptr, '#', ':');
- 
-             --  Case of nnn#xxx.[xxx]# or nnn#xxx#
- 
-             else
-                Load_Extended_Digits (File, Buf, Ptr);
-                Load (File, Buf, Ptr, '.', Loaded);
- 
-                if Loaded then
-                   Load_Extended_Digits (File, Buf, Ptr);
-                end if;
- 
-                --  As usual, it seems strange to allow mixed base characters,
-                --  but that is what ACVC tests expect, see CE3804M, case (3).
- 
-                Load (File, Buf, Ptr, '#', ':');
-             end if;
- 
-          --  Case of nnn.[nnn] or nnn
- 
-          else
-             --  Prevent the potential processing of '.' in cases where the
-             --  initial digits have a trailing underscore.
- 
-             if Buf (Ptr) = '_' then
-                return;
-             end if;
- 
-             Load (File, Buf, Ptr, '.', Loaded);
- 
-             if Loaded then
-                Load_Digits (File, Buf, Ptr);
-             end if;
-          end if;
-       end if;
- 
-       --  Deal with exponent
- 
-       Load (File, Buf, Ptr, 'E', 'e', Loaded);
- 
-       if Loaded then
-          Load (File, Buf, Ptr, '+', '-');
-          Load_Digits (File, Buf, Ptr);
-       end if;
-    end Load_Real;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put
-      (File : File_Type;
-       Item : Long_Long_Float;
-       Fore : Field;
-       Aft  : Field;
-       Exp  : Field)
-    is
-       Buf : String (1 .. Field'Last);
-       Ptr : Natural := 0;
- 
-    begin
-       Set_Image_Real (Item, Buf, Ptr, Fore, Aft, Exp);
-       Put_Item (File, Buf (1 .. Ptr));
-    end Put;
- 
-    ----------
-    -- Puts --
-    ----------
- 
-    procedure Puts
-      (To   : out String;
-       Item : Long_Long_Float;
-       Aft  : Field;
-       Exp  : Field)
-    is
-       Buf : String (1 .. Field'Last);
-       Ptr : Natural := 0;
- 
-    begin
-       Set_Image_Real (Item, Buf, Ptr, Fore => 1, Aft => Aft, Exp => Exp);
- 
-       if Ptr > To'Length then
-          raise Layout_Error;
- 
-       else
-          for J in 1 .. Ptr loop
-             To (To'Last - Ptr + J) := Buf (J);
-          end loop;
- 
-          for J in To'First .. To'Last - Ptr loop
-             To (J) := ' ';
-          end loop;
-       end if;
-    end Puts;
- 
- end Ada.Wide_Text_IO.Float_Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-wtflau.ads gcc-8.1.0/gcc/ada/a-wtflau.ads
*** gcc-7.3.0/gcc/ada/a-wtflau.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-wtflau.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,72 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --           A D A . W I D E _ T E X T _ I O . F L O A T _ A U X            --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          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- --
- -- 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 routines for Ada.Wide_Text_IO.Float_IO that
- --  are shared among separate instantiations of this package. The routines
- --  in this package are identical semantically to those in Float_IO itself,
- --  except that generic parameter Num has been replaced by Long_Long_Float,
- --  and the default parameters have been removed because they are supplied
- --  explicitly by the calls from within the generic template. This package
- --  is also used by Ada.Wide_Text_IO.Fixed_IO, Ada.Wide_Text_IO.Decimal_IO.
- 
- private package Ada.Wide_Text_IO.Float_Aux is
- 
-    procedure Load_Real
-      (File : File_Type;
-       Buf  : out String;
-       Ptr  : in out Natural);
-    --  This is an auxiliary routine that is used to load a possibly signed
-    --  real literal value from the input file into Buf, starting at Ptr + 1.
- 
-    procedure Get
-      (File  : File_Type;
-       Item  : out Long_Long_Float;
-       Width : Field);
- 
-    procedure Gets
-      (From : String;
-       Item : out Long_Long_Float;
-       Last : out Positive);
- 
-    procedure Put
-      (File : File_Type;
-       Item : Long_Long_Float;
-       Fore : Field;
-       Aft  : Field;
-       Exp  : Field);
- 
-    procedure Puts
-      (To   : out String;
-       Item : Long_Long_Float;
-       Aft  : Field;
-       Exp  : Field);
- 
- end Ada.Wide_Text_IO.Float_Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-wtflio.adb gcc-8.1.0/gcc/ada/a-wtflio.adb
*** gcc-7.3.0/gcc/ada/a-wtflio.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-wtflio.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,127 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --             A D A . W I D E _ T E X T _ I O . F L O A T _ I O            --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          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- --
- -- 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.Wide_Text_IO.Float_Aux;
- 
- with System.WCh_Con; use System.WCh_Con;
- with System.WCh_WtS; use System.WCh_WtS;
- 
- package body Ada.Wide_Text_IO.Float_IO is
- 
-    subtype TFT is Ada.Wide_Text_IO.File_Type;
-    --  File type required for calls to routines in Aux
- 
-    package Aux renames Ada.Wide_Text_IO.Float_Aux;
- 
-    ---------
-    -- Get --
-    ---------
- 
-    procedure Get
-      (File  : File_Type;
-       Item  : out Num;
-       Width : Field := 0)
-    is
-    begin
-       Aux.Get (TFT (File), Long_Long_Float (Item), Width);
- 
-    exception
-       when Constraint_Error => raise Data_Error;
-    end Get;
- 
-    procedure Get
-      (Item  : out Num;
-       Width : Field := 0)
-    is
-    begin
-       Get (Current_Input, Item, Width);
-    end Get;
- 
-    procedure Get
-      (From : Wide_String;
-       Item : out Num;
-       Last : out Positive)
-    is
-       S : constant String := Wide_String_To_String (From, WCEM_Upper);
-       --  String on which we do the actual conversion. Note that the method
-       --  used for wide character encoding is irrelevant, since if there is
-       --  a character outside the Standard.Character range then the call to
-       --  Aux.Gets will raise Data_Error in any case.
- 
-    begin
-       Aux.Gets (S, Long_Long_Float (Item), Last);
- 
-    exception
-       when Constraint_Error => raise Data_Error;
-    end Get;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put
-      (File : File_Type;
-       Item : Num;
-       Fore : Field := Default_Fore;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp)
-    is
-    begin
-       Aux.Put (TFT (File), Long_Long_Float (Item), Fore, Aft, Exp);
-    end Put;
- 
-    procedure Put
-      (Item : Num;
-       Fore : Field := Default_Fore;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp)
-    is
-    begin
-       Put (Current_Output, Item, Fore, Aft, Exp);
-    end Put;
- 
-    procedure Put
-      (To   : out Wide_String;
-       Item : Num;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp)
-    is
-       S : String (To'First .. To'Last);
- 
-    begin
-       Aux.Puts (S, Long_Long_Float (Item), Aft, Exp);
- 
-       for J in S'Range loop
-          To (J) := Wide_Character'Val (Character'Pos (S (J)));
-       end loop;
-    end Put;
- 
- end Ada.Wide_Text_IO.Float_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-wtflio.ads gcc-8.1.0/gcc/ada/a-wtflio.ads
*** gcc-7.3.0/gcc/ada/a-wtflio.ads	Thu Jul 17 06:35:13 2014
--- gcc-8.1.0/gcc/ada/a-wtflio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,64 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --             A D A . W I D E _ T E X T _ I O . F L O A T _ I O            --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  In Ada 95, the package Ada.Wide_Text_IO.Float_IO is a subpackage of
- --  Wide_Text_IO. In GNAT we make it a child package to avoid loading
- --  the necessary code if Float_IO is not instantiated. See the routine
- --  Rtsfind.Check_Text_IO_Special_Unit for a description of how we patch up
- --  the difference in semantics so that it is invisible to the Ada programmer.
- 
- private generic
-    type Num is digits <>;
- 
- package Ada.Wide_Text_IO.Float_IO is
- 
-    Default_Fore : Field := 2;
-    Default_Aft  : Field := Num'Digits - 1;
-    Default_Exp  : Field := 3;
- 
-    procedure Get
-      (File  : File_Type;
-       Item  : out Num;
-       Width : Field := 0);
- 
-    procedure Get
-      (Item  : out Num;
-       Width : Field := 0);
- 
-    procedure Put
-      (File : File_Type;
-       Item : Num;
-       Fore : Field := Default_Fore;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp);
- 
-    procedure Put
-      (Item : Num;
-       Fore : Field := Default_Fore;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp);
- 
-    procedure Get
-      (From : Wide_String;
-       Item : out Num;
-       Last : out Positive);
- 
-    procedure Put
-      (To   : out Wide_String;
-       Item : Num;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp);
- 
- end Ada.Wide_Text_IO.Float_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-wtgeau.adb gcc-8.1.0/gcc/ada/a-wtgeau.adb
*** gcc-7.3.0/gcc/ada/a-wtgeau.adb	Tue Jan  6 10:08:52 2015
--- gcc-8.1.0/gcc/ada/a-wtgeau.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,528 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --         A D A . W I D E _ T E X T _ I O . G E N E R I C _ A U X          --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 Interfaces.C_Streams; use Interfaces.C_Streams;
- with System.File_IO;
- with System.File_Control_Block;
- 
- package body Ada.Wide_Text_IO.Generic_Aux is
- 
-    package FIO renames System.File_IO;
-    package FCB renames System.File_Control_Block;
-    subtype AP is FCB.AFCB_Ptr;
- 
-    ------------------------
-    -- Check_End_Of_Field --
-    ------------------------
- 
-    procedure Check_End_Of_Field
-      (Buf   : String;
-       Stop  : Integer;
-       Ptr   : Integer;
-       Width : Field)
-    is
-    begin
-       if Ptr > Stop then
-          return;
- 
-       elsif Width = 0 then
-          raise Data_Error;
- 
-       else
-          for J in Ptr .. Stop loop
-             if not Is_Blank (Buf (J)) then
-                raise Data_Error;
-             end if;
-          end loop;
-       end if;
-    end Check_End_Of_Field;
- 
-    -----------------------
-    -- Check_On_One_Line --
-    -----------------------
- 
-    procedure Check_On_One_Line
-      (File   : File_Type;
-       Length : Integer)
-    is
-    begin
-       FIO.Check_Write_Status (AP (File));
- 
-       if File.Line_Length /= 0 then
-          if Count (Length) > File.Line_Length then
-             raise Layout_Error;
-          elsif File.Col + Count (Length) > File.Line_Length + 1 then
-             New_Line (File);
-          end if;
-       end if;
-    end Check_On_One_Line;
- 
-    --------------
-    -- Is_Blank --
-    --------------
- 
-    function Is_Blank (C : Character) return Boolean is
-    begin
-       return C = ' ' or else C = ASCII.HT;
-    end Is_Blank;
- 
-    ----------
-    -- Load --
-    ----------
- 
-    procedure Load
-      (File   : File_Type;
-       Buf    : out String;
-       Ptr    : in out Integer;
-       Char   : Character;
-       Loaded : out Boolean)
-    is
-       ch : int;
- 
-    begin
-       if File.Before_Wide_Character then
-          Loaded := False;
-          return;
- 
-       else
-          ch := Getc (File);
- 
-          if ch = Character'Pos (Char) then
-             Store_Char (File, ch, Buf, Ptr);
-             Loaded := True;
-          else
-             Ungetc (ch, File);
-             Loaded := False;
-          end if;
-       end if;
-    end Load;
- 
-    procedure Load
-      (File   : File_Type;
-       Buf    : out String;
-       Ptr    : in out Integer;
-       Char   : Character)
-    is
-       ch : int;
- 
-    begin
-       if File.Before_Wide_Character then
-          null;
- 
-       else
-          ch := Getc (File);
- 
-          if ch = Character'Pos (Char) then
-             Store_Char (File, ch, Buf, Ptr);
-          else
-             Ungetc (ch, File);
-          end if;
-       end if;
-    end Load;
- 
-    procedure Load
-      (File   : File_Type;
-       Buf    : out String;
-       Ptr    : in out Integer;
-       Char1  : Character;
-       Char2  : Character;
-       Loaded : out Boolean)
-    is
-       ch : int;
- 
-    begin
-       if File.Before_Wide_Character then
-          Loaded := False;
-          return;
- 
-       else
-          ch := Getc (File);
- 
-          if ch = Character'Pos (Char1)
-            or else ch = Character'Pos (Char2)
-          then
-             Store_Char (File, ch, Buf, Ptr);
-             Loaded := True;
-          else
-             Ungetc (ch, File);
-             Loaded := False;
-          end if;
-       end if;
-    end Load;
- 
-    procedure Load
-      (File   : File_Type;
-       Buf    : out String;
-       Ptr    : in out Integer;
-       Char1  : Character;
-       Char2  : Character)
-    is
-       ch : int;
- 
-    begin
-       if File.Before_Wide_Character then
-          null;
- 
-       else
-          ch := Getc (File);
- 
-          if ch = Character'Pos (Char1)
-            or else ch = Character'Pos (Char2)
-          then
-             Store_Char (File, ch, Buf, Ptr);
-          else
-             Ungetc (ch, File);
-          end if;
-       end if;
-    end Load;
- 
-    -----------------
-    -- Load_Digits --
-    -----------------
- 
-    procedure Load_Digits
-      (File   : File_Type;
-       Buf    : out String;
-       Ptr    : in out Integer;
-       Loaded : out Boolean)
-    is
-       ch          : int;
-       After_Digit : Boolean;
- 
-    begin
-       if File.Before_Wide_Character then
-          Loaded := False;
-          return;
- 
-       else
-          ch := Getc (File);
- 
-          if ch not in Character'Pos ('0') .. Character'Pos ('9') then
-             Loaded := False;
- 
-          else
-             Loaded := True;
-             After_Digit := True;
- 
-             loop
-                Store_Char (File, ch, Buf, Ptr);
-                ch := Getc (File);
- 
-                if ch in Character'Pos ('0') .. Character'Pos ('9') then
-                   After_Digit := True;
- 
-                elsif ch = Character'Pos ('_') and then After_Digit then
-                   After_Digit := False;
- 
-                else
-                   exit;
-                end if;
-             end loop;
-          end if;
- 
-          Ungetc (ch, File);
-       end if;
-    end Load_Digits;
- 
-    procedure Load_Digits
-      (File   : File_Type;
-       Buf    : out String;
-       Ptr    : in out Integer)
-    is
-       ch          : int;
-       After_Digit : Boolean;
- 
-    begin
-       if File.Before_Wide_Character then
-          return;
- 
-       else
-          ch := Getc (File);
- 
-          if ch in Character'Pos ('0') .. Character'Pos ('9') then
-             After_Digit := True;
- 
-             loop
-                Store_Char (File, ch, Buf, Ptr);
-                ch := Getc (File);
- 
-                if ch in Character'Pos ('0') .. Character'Pos ('9') then
-                   After_Digit := True;
- 
-                elsif ch = Character'Pos ('_') and then After_Digit then
-                   After_Digit := False;
- 
-                else
-                   exit;
-                end if;
-             end loop;
-          end if;
- 
-          Ungetc (ch, File);
-       end if;
-    end Load_Digits;
- 
-    --------------------------
-    -- Load_Extended_Digits --
-    --------------------------
- 
-    procedure Load_Extended_Digits
-      (File   : File_Type;
-       Buf    : out String;
-       Ptr    : in out Integer;
-       Loaded : out Boolean)
-    is
-       ch          : int;
-       After_Digit : Boolean := False;
- 
-    begin
-       if File.Before_Wide_Character then
-          Loaded := False;
-          return;
- 
-       else
-          Loaded := False;
- 
-          loop
-             ch := Getc (File);
- 
-             if ch in Character'Pos ('0') .. Character'Pos ('9')
-                  or else
-                ch in Character'Pos ('a') .. Character'Pos ('f')
-                  or else
-                ch in Character'Pos ('A') .. Character'Pos ('F')
-             then
-                After_Digit := True;
- 
-             elsif ch = Character'Pos ('_') and then After_Digit then
-                After_Digit := False;
- 
-             else
-                exit;
-             end if;
- 
-             Store_Char (File, ch, Buf, Ptr);
-             Loaded := True;
-          end loop;
- 
-          Ungetc (ch, File);
-       end if;
-    end Load_Extended_Digits;
- 
-    procedure Load_Extended_Digits
-      (File   : File_Type;
-       Buf    : out String;
-       Ptr    : in out Integer)
-    is
-       Junk : Boolean;
-       pragma Unreferenced (Junk);
-    begin
-       Load_Extended_Digits (File, Buf, Ptr, Junk);
-    end Load_Extended_Digits;
- 
-    ---------------
-    -- Load_Skip --
-    ---------------
- 
-    procedure Load_Skip (File  : File_Type) is
-       C : Character;
- 
-    begin
-       FIO.Check_Read_Status (AP (File));
- 
-       --  We need to explicitly test for the case of being before a wide
-       --  character (greater than 16#7F#). Since no such character can
-       --  ever legitimately be a valid numeric character, we can
-       --  immediately signal Data_Error.
- 
-       if File.Before_Wide_Character then
-          raise Data_Error;
-       end if;
- 
-       --  Otherwise loop till we find a non-blank character (note that as
-       --  usual in Wide_Text_IO, blank includes horizontal tab). Note that
-       --  Get_Character deals with Before_LM/Before_LM_PM flags appropriately.
- 
-       loop
-          Get_Character (File, C);
-          exit when not Is_Blank (C);
-       end loop;
- 
-       Ungetc (Character'Pos (C), File);
-       File.Col := File.Col - 1;
-    end Load_Skip;
- 
-    ----------------
-    -- Load_Width --
-    ----------------
- 
-    procedure Load_Width
-      (File  : File_Type;
-       Width : Field;
-       Buf   : out String;
-       Ptr   : in out Integer)
-    is
-       ch : int;
-       WC : Wide_Character;
- 
-       Bad_Wide_C : Boolean := False;
-       --  Set True if one of the characters read is not in range of type
-       --  Character. This is always a Data_Error, but we do not signal it
-       --  right away, since we have to read the full number of characters.
- 
-    begin
-       FIO.Check_Read_Status (AP (File));
- 
-       --  If we are immediately before a line mark, then we have no characters.
-       --  This is always a data error, so we may as well raise it right away.
- 
-       if File.Before_LM then
-          raise Data_Error;
- 
-       else
-          for J in 1 .. Width loop
-             if File.Before_Wide_Character then
-                Bad_Wide_C := True;
-                Store_Char (File, 0, Buf, Ptr);
-                File.Before_Wide_Character := False;
- 
-             else
-                ch := Getc (File);
- 
-                if ch = EOF then
-                   exit;
- 
-                elsif ch = LM then
-                   Ungetc (ch, File);
-                   exit;
- 
-                else
-                   WC := Get_Wide_Char (Character'Val (ch), File);
-                   ch := Wide_Character'Pos (WC);
- 
-                   if ch > 255 then
-                      Bad_Wide_C := True;
-                      ch := 0;
-                   end if;
- 
-                   Store_Char (File, ch, Buf, Ptr);
-                end if;
-             end if;
-          end loop;
- 
-          if Bad_Wide_C then
-             raise Data_Error;
-          end if;
-       end if;
-    end Load_Width;
- 
-    --------------
-    -- Put_Item --
-    --------------
- 
-    procedure Put_Item (File : File_Type; Str : String) is
-    begin
-       Check_On_One_Line (File, Str'Length);
- 
-       for J in Str'Range loop
-          Put (File, Wide_Character'Val (Character'Pos (Str (J))));
-       end loop;
-    end Put_Item;
- 
-    ----------------
-    -- Store_Char --
-    ----------------
- 
-    procedure Store_Char
-      (File : File_Type;
-       ch   : Integer;
-       Buf  : out String;
-       Ptr  : in out Integer)
-    is
-    begin
-       File.Col := File.Col + 1;
- 
-       if Ptr = Buf'Last then
-          raise Data_Error;
-       else
-          Ptr := Ptr + 1;
-          Buf (Ptr) := Character'Val (ch);
-       end if;
-    end Store_Char;
- 
-    -----------------
-    -- String_Skip --
-    -----------------
- 
-    procedure String_Skip (Str : String; Ptr : out Integer) is
-    begin
-       --  Routines calling String_Skip malfunction if Str'Last = Positive'Last.
-       --  It's too much trouble to make this silly case work, so we just raise
-       --  Program_Error with an appropriate message. We raise Program_Error
-       --  rather than Constraint_Error because we don't want this case to be
-       --  converted to Data_Error.
- 
-       if Str'Last = Positive'Last then
-          raise Program_Error with
-            "string upper bound is Positive'Last, not supported";
-       end if;
- 
-       --  Normal case where Str'Last < Positive'Last
- 
-       Ptr := Str'First;
- 
-       loop
-          if Ptr > Str'Last then
-             raise End_Error;
- 
-          elsif not Is_Blank (Str (Ptr)) then
-             return;
- 
-          else
-             Ptr := Ptr + 1;
-          end if;
-       end loop;
-    end String_Skip;
- 
-    ------------
-    -- Ungetc --
-    ------------
- 
-    procedure Ungetc (ch : int; File : File_Type) is
-    begin
-       if ch /= EOF then
-          if ungetc (ch, File.Stream) = EOF then
-             raise Device_Error;
-          end if;
-       end if;
-    end Ungetc;
- 
- end Ada.Wide_Text_IO.Generic_Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-wtgeau.ads gcc-8.1.0/gcc/ada/a-wtgeau.ads
*** gcc-7.3.0/gcc/ada/a-wtgeau.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-wtgeau.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,184 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --         A D A . W I D E _ T E X T _ I O . G E N E R I C _ A U X          --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          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- --
- -- 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 a set of auxiliary routines used by Wide_Text_IO
- --  generic children, including for reading and writing numeric strings.
- 
- --  Note: although this is the Wide version of the package, the interface
- --  here is still in terms of Character and String rather than Wide_Character
- --  and Wide_String, since all numeric strings are composed entirely of
- --  characters in the range of type Standard.Character, and the basic
- --  conversion routines work with Character rather than Wide_Character.
- 
- package Ada.Wide_Text_IO.Generic_Aux is
- 
-    --  Note: for all the Load routines, File indicates the file to be read,
-    --  Buf is the string into which data is stored, Ptr is the index of the
-    --  last character stored so far, and is updated if additional characters
-    --  are stored. Data_Error is raised if the input overflows Buf. The only
-    --  Load routines that do a file status check are Load_Skip and Load_Width
-    --  so one of these two routines must be called first.
- 
-    procedure Check_End_Of_Field
-      (Buf   : String;
-       Stop  : Integer;
-       Ptr   : Integer;
-       Width : Field);
-    --  This routine is used after doing a get operations on a numeric value.
-    --  Buf is the string being scanned, and Stop is the last character of
-    --  the field being scanned. Ptr is as set by the call to the scan routine
-    --  that scanned out the numeric value, i.e. it points one past the last
-    --  character scanned, and Width is the width parameter from the Get call.
-    --
-    --  There are two cases, if Width is non-zero, then a check is made that
-    --  the remainder of the field is all blanks. If Width is zero, then it
-    --  means that the scan routine scanned out only part of the field. We
-    --  have already scanned out the field that the ACVC tests seem to expect
-    --  us to read (even if it does not follow the syntax of the type being
-    --  scanned, e.g. allowing negative exponents in integers, and underscores
-    --  at the end of the string), so we just raise Data_Error.
- 
-    procedure Check_On_One_Line (File : File_Type; Length : Integer);
-    --  Check to see if item of length Integer characters can fit on
-    --  current line. Call New_Line if not, first checking that the
-    --  line length can accommodate Length characters, raise Layout_Error
-    --  if item is too large for a single line.
- 
-    function Is_Blank (C : Character) return Boolean;
-    --  Determines if C is a blank (space or tab)
- 
-    procedure Load_Width
-      (File  : File_Type;
-       Width : Field;
-       Buf   : out String;
-       Ptr   : in out Integer);
-    --  Loads exactly Width characters, unless a line mark is encountered first
- 
-    procedure Load_Skip (File  : File_Type);
-    --  Skips leading blanks and line and page marks, if the end of file is
-    --  read without finding a non-blank character, then End_Error is raised.
-    --  Note: a blank is defined as a space or horizontal tab (RM A.10.6(5)).
- 
-    procedure Load
-      (File   : File_Type;
-       Buf    : out String;
-       Ptr    : in out Integer;
-       Char   : Character;
-       Loaded : out Boolean);
-    --  If next character is Char, loads it, otherwise no characters are loaded
-    --  Loaded is set to indicate whether or not the character was found.
- 
-    procedure Load
-      (File   : File_Type;
-       Buf    : out String;
-       Ptr    : in out Integer;
-       Char   : Character);
-    --  Same as above, but no indication if character is loaded
- 
-    procedure Load
-      (File   : File_Type;
-       Buf    : out String;
-       Ptr    : in out Integer;
-       Char1  : Character;
-       Char2  : Character;
-       Loaded : out Boolean);
-    --  If next character is Char1 or Char2, loads it, otherwise no characters
-    --  are loaded. Loaded is set to indicate whether or not one of the two
-    --  characters was found.
- 
-    procedure Load
-      (File   : File_Type;
-       Buf    : out String;
-       Ptr    : in out Integer;
-       Char1  : Character;
-       Char2  : Character);
-    --  Same as above, but no indication if character is loaded
- 
-    procedure Load_Digits
-      (File   : File_Type;
-       Buf    : out String;
-       Ptr    : in out Integer;
-       Loaded : out Boolean);
-    --  Loads a sequence of zero or more decimal digits. Loaded is set if
-    --  at least one digit is loaded.
- 
-    procedure Load_Digits
-      (File   : File_Type;
-       Buf    : out String;
-       Ptr    : in out Integer);
-    --  Same as above, but no indication if character is loaded
- 
-    procedure Load_Extended_Digits
-      (File   : File_Type;
-       Buf    : out String;
-       Ptr    : in out Integer;
-       Loaded : out Boolean);
-    --  Like Load_Digits, but also allows extended digits a-f and A-F
- 
-    procedure Load_Extended_Digits
-      (File   : File_Type;
-       Buf    : out String;
-       Ptr    : in out Integer);
-    --  Same as above, but no indication if character is loaded
- 
-    procedure Put_Item (File : File_Type; Str : String);
-    --  This routine is like Wide_Text_IO.Put, except that it checks for
-    --  overflow of bounded lines, as described in (RM A.10.6(8)). It is used
-    --  for all output of numeric values and of enumeration values. Note that
-    --  the buffer is of type String. Put_Item deals with converting this to
-    --  Wide_Characters as required.
- 
-    procedure Store_Char
-      (File : File_Type;
-       ch   : Integer;
-       Buf  : out String;
-       Ptr  : in out Integer);
-    --  Store a single character in buffer, checking for overflow and
-    --  adjusting the column number in the file to reflect the fact
-    --  that a character has been acquired from the input stream.
-    --  The pos value of the character to store is in ch on entry.
- 
-    procedure String_Skip (Str : String; Ptr : out Integer);
-    --  Used in the Get from string procedures to skip leading blanks in the
-    --  string. Ptr is set to the index of the first non-blank. If the string
-    --  is all blanks, then the excption End_Error is raised, Note that blank
-    --  is defined as a space or horizontal tab (RM A.10.6(5)).
- 
-    procedure Ungetc (ch : Integer; File : File_Type);
-    --  Pushes back character into stream, using ungetc. The caller has
-    --  checked that the file is in read status. Device_Error is raised
-    --  if the character cannot be pushed back. An attempt to push back
-    --  an end of file (EOF) is ignored.
- 
- private
-    pragma Inline (Is_Blank);
- 
- end Ada.Wide_Text_IO.Generic_Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-wtinau.adb gcc-8.1.0/gcc/ada/a-wtinau.adb
*** gcc-7.3.0/gcc/ada/a-wtinau.adb	Tue Jan  6 09:24:33 2015
--- gcc-8.1.0/gcc/ada/a-wtinau.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,295 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --         A D A . W I D E _ T E X T _ I O . I N T E G E R  _ A U X         --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Wide_Text_IO.Generic_Aux; use Ada.Wide_Text_IO.Generic_Aux;
- 
- with System.Img_BIU; use System.Img_BIU;
- with System.Img_Int; use System.Img_Int;
- with System.Img_LLB; use System.Img_LLB;
- with System.Img_LLI; use System.Img_LLI;
- with System.Img_LLW; use System.Img_LLW;
- with System.Img_WIU; use System.Img_WIU;
- with System.Val_Int; use System.Val_Int;
- with System.Val_LLI; use System.Val_LLI;
- 
- package body Ada.Wide_Text_IO.Integer_Aux is
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    procedure Load_Integer
-      (File : File_Type;
-       Buf  : out String;
-       Ptr  : in out Natural);
-    --  This is an auxiliary routine that is used to load an possibly signed
-    --  integer literal value from the input file into Buf, starting at Ptr + 1.
-    --  On return, Ptr is set to the last character stored.
- 
-    -------------
-    -- Get_Int --
-    -------------
- 
-    procedure Get_Int
-      (File  : File_Type;
-       Item  : out Integer;
-       Width : Field)
-    is
-       Buf  : String (1 .. Field'Last);
-       Ptr  : aliased Integer := 1;
-       Stop : Integer := 0;
- 
-    begin
-       if Width /= 0 then
-          Load_Width (File, Width, Buf, Stop);
-          String_Skip (Buf, Ptr);
-       else
-          Load_Integer (File, Buf, Stop);
-       end if;
- 
-       Item := Scan_Integer (Buf, Ptr'Access, Stop);
-       Check_End_Of_Field (Buf, Stop, Ptr, Width);
-    end Get_Int;
- 
-    -------------
-    -- Get_LLI --
-    -------------
- 
-    procedure Get_LLI
-      (File  : File_Type;
-       Item  : out Long_Long_Integer;
-       Width : Field)
-    is
-       Buf  : String (1 .. Field'Last);
-       Ptr  : aliased Integer := 1;
-       Stop : Integer := 0;
- 
-    begin
-       if Width /= 0 then
-          Load_Width (File, Width, Buf, Stop);
-          String_Skip (Buf, Ptr);
-       else
-          Load_Integer (File, Buf, Stop);
-       end if;
- 
-       Item := Scan_Long_Long_Integer (Buf, Ptr'Access, Stop);
-       Check_End_Of_Field (Buf, Stop, Ptr, Width);
-    end Get_LLI;
- 
-    --------------
-    -- Gets_Int --
-    --------------
- 
-    procedure Gets_Int
-      (From : String;
-       Item : out Integer;
-       Last : out Positive)
-    is
-       Pos : aliased Integer;
- 
-    begin
-       String_Skip (From, Pos);
-       Item := Scan_Integer (From, Pos'Access, From'Last);
-       Last := Pos - 1;
- 
-    exception
-       when Constraint_Error =>
-          raise Data_Error;
-    end Gets_Int;
- 
-    --------------
-    -- Gets_LLI --
-    --------------
- 
-    procedure Gets_LLI
-      (From : String;
-       Item : out Long_Long_Integer;
-       Last : out Positive)
-    is
-       Pos : aliased Integer;
- 
-    begin
-       String_Skip (From, Pos);
-       Item := Scan_Long_Long_Integer (From, Pos'Access, From'Last);
-       Last := Pos - 1;
- 
-    exception
-       when Constraint_Error =>
-          raise Data_Error;
-    end Gets_LLI;
- 
-    ------------------
-    -- Load_Integer --
-    ------------------
- 
-    procedure Load_Integer
-      (File : File_Type;
-       Buf  : out String;
-       Ptr  : in out Natural)
-    is
-       Hash_Loc : Natural;
-       Loaded   : Boolean;
- 
-    begin
-       Load_Skip (File);
-       Load (File, Buf, Ptr, '+', '-');
- 
-       Load_Digits (File, Buf, Ptr, Loaded);
- 
-       if Loaded then
- 
-          --  Deal with based case. We recognize either the standard '#' or the
-          --  allowed alternative replacement ':' (see RM J.2(3)).
- 
-          Load (File, Buf, Ptr, '#', ':', Loaded);
- 
-          if Loaded then
-             Hash_Loc := Ptr;
-             Load_Extended_Digits (File, Buf, Ptr);
-             Load (File, Buf, Ptr, Buf (Hash_Loc));
-          end if;
- 
-          Load (File, Buf, Ptr, 'E', 'e', Loaded);
- 
-          if Loaded then
- 
-             --  Note: it is strange to allow a minus sign, since the syntax
-             --  does not, but that is what ACVC test CE3704F, case (6) wants.
- 
-             Load (File, Buf, Ptr, '+', '-');
-             Load_Digits (File, Buf, Ptr);
-          end if;
-       end if;
-    end Load_Integer;
- 
-    -------------
-    -- Put_Int --
-    -------------
- 
-    procedure Put_Int
-      (File  : File_Type;
-       Item  : Integer;
-       Width : Field;
-       Base  : Number_Base)
-    is
-       Buf : String (1 .. Field'Last);
-       Ptr : Natural := 0;
- 
-    begin
-       if Base = 10 and then Width = 0 then
-          Set_Image_Integer (Item, Buf, Ptr);
-       elsif Base = 10 then
-          Set_Image_Width_Integer (Item, Width, Buf, Ptr);
-       else
-          Set_Image_Based_Integer (Item, Base, Width, Buf, Ptr);
-       end if;
- 
-       Put_Item (File, Buf (1 .. Ptr));
-    end Put_Int;
- 
-    -------------
-    -- Put_LLI --
-    -------------
- 
-    procedure Put_LLI
-      (File  : File_Type;
-       Item  : Long_Long_Integer;
-       Width : Field;
-       Base  : Number_Base)
-    is
-       Buf : String (1 .. Field'Last);
-       Ptr : Natural := 0;
- 
-    begin
-       if Base = 10 and then Width = 0 then
-          Set_Image_Long_Long_Integer (Item, Buf, Ptr);
-       elsif Base = 10 then
-          Set_Image_Width_Long_Long_Integer (Item, Width, Buf, Ptr);
-       else
-          Set_Image_Based_Long_Long_Integer (Item, Base, Width, Buf, Ptr);
-       end if;
- 
-       Put_Item (File, Buf (1 .. Ptr));
-    end Put_LLI;
- 
-    --------------
-    -- Puts_Int --
-    --------------
- 
-    procedure Puts_Int
-      (To   : out String;
-       Item : Integer;
-       Base : Number_Base)
-    is
-       Buf : String (1 .. Field'Last);
-       Ptr : Natural := 0;
- 
-    begin
-       if Base = 10 then
-          Set_Image_Width_Integer (Item, To'Length, Buf, Ptr);
-       else
-          Set_Image_Based_Integer (Item, Base, To'Length, Buf, Ptr);
-       end if;
- 
-       if Ptr > To'Length then
-          raise Layout_Error;
-       else
-          To (To'First .. To'First + Ptr - 1) := Buf (1 .. Ptr);
-       end if;
-    end Puts_Int;
- 
-    --------------
-    -- Puts_LLI --
-    --------------
- 
-    procedure Puts_LLI
-      (To   : out String;
-       Item : Long_Long_Integer;
-       Base : Number_Base)
-    is
-       Buf : String (1 .. Field'Last);
-       Ptr : Natural := 0;
- 
-    begin
-       if Base = 10 then
-          Set_Image_Width_Long_Long_Integer (Item, To'Length, Buf, Ptr);
-       else
-          Set_Image_Based_Long_Long_Integer (Item, Base, To'Length, Buf, Ptr);
-       end if;
- 
-       if Ptr > To'Length then
-          raise Layout_Error;
-       else
-          To (To'First .. To'First + Ptr - 1) := Buf (1 .. Ptr);
-       end if;
-    end Puts_LLI;
- 
- end Ada.Wide_Text_IO.Integer_Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-wtinau.ads gcc-8.1.0/gcc/ada/a-wtinau.ads
*** gcc-7.3.0/gcc/ada/a-wtinau.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-wtinau.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,83 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --         A D A . W I D E _ T E X T _ I O . I N T E G E R _ A U X          --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          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- --
- -- 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 routines for Ada.Wide_Text_IO.Integer_IO that
- --  are shared among separate instantiations of this package. The routines
- --  in this package are identical semantically to those in Integer_IO itself,
- --  except that the generic parameter Num has been replaced by Integer or
- --  Long_Long_Integer, and the default parameters have been removed because
- --  they are supplied explicitly by the calls from within the generic template.
- 
- private package Ada.Wide_Text_IO.Integer_Aux is
- 
-    procedure Get_Int
-      (File  : File_Type;
-       Item  : out Integer;
-       Width : Field);
- 
-    procedure Get_LLI
-      (File  : File_Type;
-       Item  : out Long_Long_Integer;
-       Width : Field);
- 
-    procedure Gets_Int
-      (From : String;
-       Item : out Integer;
-       Last : out Positive);
- 
-    procedure Gets_LLI
-      (From : String;
-       Item : out Long_Long_Integer;
-       Last : out Positive);
- 
-    procedure Put_Int
-      (File  : File_Type;
-       Item  : Integer;
-       Width : Field;
-       Base  : Number_Base);
- 
-    procedure Put_LLI
-      (File  : File_Type;
-       Item  : Long_Long_Integer;
-       Width : Field;
-       Base  : Number_Base);
- 
-    procedure Puts_Int
-      (To   : out String;
-       Item : Integer;
-       Base : Number_Base);
- 
-    procedure Puts_LLI
-      (To   : out String;
-       Item : Long_Long_Integer;
-       Base : Number_Base);
- 
- end Ada.Wide_Text_IO.Integer_Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-wtinio.adb gcc-8.1.0/gcc/ada/a-wtinio.adb
*** gcc-7.3.0/gcc/ada/a-wtinio.adb	Mon Nov 30 16:08:37 2009
--- gcc-8.1.0/gcc/ada/a-wtinio.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,145 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --           A D A . W I D E _ T E X T _ I O . I N T E G E R _ I O          --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          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- --
- -- 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.Wide_Text_IO.Integer_Aux;
- with System.WCh_Con; use System.WCh_Con;
- with System.WCh_WtS; use System.WCh_WtS;
- 
- package body Ada.Wide_Text_IO.Integer_IO is
- 
-    Need_LLI : constant Boolean := Num'Base'Size > Integer'Size;
-    --  Throughout this generic body, we distinguish between the case where type
-    --  Integer is acceptable, and where a Long_Long_Integer is needed. This
-    --  Boolean is used to test for these cases and since it is a constant, only
-    --  code for the relevant case will be included in the instance.
- 
-    subtype TFT is Ada.Wide_Text_IO.File_Type;
-    --  File type required for calls to routines in Aux
- 
-    package Aux renames Ada.Wide_Text_IO.Integer_Aux;
- 
-    ---------
-    -- Get --
-    ---------
- 
-    procedure Get
-      (File  : File_Type;
-       Item  : out Num;
-       Width : Field := 0)
-    is
-    begin
-       if Need_LLI then
-          Aux.Get_LLI (TFT (File), Long_Long_Integer (Item), Width);
-       else
-          Aux.Get_Int (TFT (File), Integer (Item), Width);
-       end if;
- 
-    exception
-       when Constraint_Error => raise Data_Error;
-    end Get;
- 
-    procedure Get
-      (Item  : out Num;
-       Width : Field := 0)
-    is
-    begin
-       Get (Current_Input, Item, Width);
-    end Get;
- 
-    procedure Get
-      (From : Wide_String;
-       Item : out Num;
-       Last : out Positive)
-    is
-       S : constant String := Wide_String_To_String (From, WCEM_Upper);
-       --  String on which we do the actual conversion. Note that the method
-       --  used for wide character encoding is irrelevant, since if there is
-       --  a character outside the Standard.Character range then the call to
-       --  Aux.Gets will raise Data_Error in any case.
- 
-    begin
-       if Need_LLI then
-          Aux.Gets_LLI (S, Long_Long_Integer (Item), Last);
-       else
-          Aux.Gets_Int (S, Integer (Item), Last);
-       end if;
- 
-    exception
-       when Constraint_Error => raise Data_Error;
-    end Get;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put
-      (File  : File_Type;
-       Item  : Num;
-       Width : Field := Default_Width;
-       Base  : Number_Base := Default_Base)
-    is
-    begin
-       if Need_LLI then
-          Aux.Put_LLI (TFT (File), Long_Long_Integer (Item), Width, Base);
-       else
-          Aux.Put_Int (TFT (File), Integer (Item), Width, Base);
-       end if;
-    end Put;
- 
-    procedure Put
-      (Item  : Num;
-       Width : Field := Default_Width;
-       Base  : Number_Base := Default_Base)
-    is
-    begin
-       Put (Current_Output, Item, Width, Base);
-    end Put;
- 
-    procedure Put
-      (To   : out Wide_String;
-       Item : Num;
-       Base : Number_Base := Default_Base)
-    is
-       S : String (To'First .. To'Last);
- 
-    begin
-       if Need_LLI then
-          Aux.Puts_LLI (S, Long_Long_Integer (Item), Base);
-       else
-          Aux.Puts_Int (S, Integer (Item), Base);
-       end if;
- 
-       for J in S'Range loop
-          To (J) := Wide_Character'Val (Character'Pos (S (J)));
-       end loop;
-    end Put;
- 
- end Ada.Wide_Text_IO.Integer_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-wtinio.ads gcc-8.1.0/gcc/ada/a-wtinio.ads
*** gcc-7.3.0/gcc/ada/a-wtinio.ads	Thu Jul 17 06:35:13 2014
--- gcc-8.1.0/gcc/ada/a-wtinio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,60 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --           A D A . W I D E _ T E X T _ I O . I N T E G E R _ I O          --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  In Ada 95, the package Ada.Wide_Text_IO.Integer_IO is a subpackage
- --  of Wide_Text_IO. In GNAT we make it a child package to avoid loading
- --  the necessary code if Integer_IO is not instantiated. See the routine
- --  Rtsfind.Check_Text_IO_Special_Unit for a description of how we patch up
- --  the difference in semantics so that it is invisible to the Ada programmer.
- 
- private generic
-    type Num is range <>;
- 
- package Ada.Wide_Text_IO.Integer_IO is
- 
-    Default_Width : Field := Num'Width;
-    Default_Base  : Number_Base := 10;
- 
-    procedure Get
-      (File  : File_Type;
-       Item  : out Num;
-       Width : Field := 0);
- 
-    procedure Get
-      (Item  : out Num;
-       Width : Field := 0);
- 
-    procedure Put
-      (File  : File_Type;
-       Item  : Num;
-       Width : Field := Default_Width;
-       Base  : Number_Base := Default_Base);
- 
-    procedure Put
-      (Item  : Num;
-       Width : Field := Default_Width;
-       Base  : Number_Base := Default_Base);
- 
-    procedure Get
-      (From : Wide_String;
-       Item : out Num;
-       Last : out Positive);
- 
-    procedure Put
-      (To   : out Wide_String;
-       Item : Num;
-       Base : Number_Base := Default_Base);
- 
- end Ada.Wide_Text_IO.Integer_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-wtmoau.adb gcc-8.1.0/gcc/ada/a-wtmoau.adb
*** gcc-7.3.0/gcc/ada/a-wtmoau.adb	Tue Jan  6 09:24:33 2015
--- gcc-8.1.0/gcc/ada/a-wtmoau.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,305 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --         A D A . W I D E _ T E X T _ I O . M O D U L A R  _ A U X         --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Wide_Text_IO.Generic_Aux; use Ada.Wide_Text_IO.Generic_Aux;
- 
- with System.Img_BIU; use System.Img_BIU;
- with System.Img_Uns; use System.Img_Uns;
- with System.Img_LLB; use System.Img_LLB;
- with System.Img_LLU; use System.Img_LLU;
- with System.Img_LLW; use System.Img_LLW;
- with System.Img_WIU; use System.Img_WIU;
- with System.Val_Uns; use System.Val_Uns;
- with System.Val_LLU; use System.Val_LLU;
- 
- package body Ada.Wide_Text_IO.Modular_Aux is
- 
-    use System.Unsigned_Types;
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    procedure Load_Modular
-      (File : File_Type;
-       Buf  : out String;
-       Ptr  : in out Natural);
-    --  This is an auxiliary routine that is used to load an possibly signed
-    --  modular literal value from the input file into Buf, starting at Ptr + 1.
-    --  Ptr is left set to the last character stored.
- 
-    -------------
-    -- Get_LLU --
-    -------------
- 
-    procedure Get_LLU
-      (File  : File_Type;
-       Item  : out Long_Long_Unsigned;
-       Width : Field)
-    is
-       Buf  : String (1 .. Field'Last);
-       Stop : Integer := 0;
-       Ptr  : aliased Integer := 1;
- 
-    begin
-       if Width /= 0 then
-          Load_Width (File, Width, Buf, Stop);
-          String_Skip (Buf, Ptr);
-       else
-          Load_Modular (File, Buf, Stop);
-       end if;
- 
-       Item := Scan_Long_Long_Unsigned (Buf, Ptr'Access, Stop);
-       Check_End_Of_Field (Buf, Stop, Ptr, Width);
-    end Get_LLU;
- 
-    -------------
-    -- Get_Uns --
-    -------------
- 
-    procedure Get_Uns
-      (File  : File_Type;
-       Item  : out Unsigned;
-       Width : Field)
-    is
-       Buf  : String (1 .. Field'Last);
-       Stop : Integer := 0;
-       Ptr  : aliased Integer := 1;
- 
-    begin
-       if Width /= 0 then
-          Load_Width (File, Width, Buf, Stop);
-          String_Skip (Buf, Ptr);
-       else
-          Load_Modular (File, Buf, Stop);
-       end if;
- 
-       Item := Scan_Unsigned (Buf, Ptr'Access, Stop);
-       Check_End_Of_Field (Buf, Stop, Ptr, Width);
-    end Get_Uns;
- 
-    --------------
-    -- Gets_LLU --
-    --------------
- 
-    procedure Gets_LLU
-      (From : String;
-       Item : out Long_Long_Unsigned;
-       Last : out Positive)
-    is
-       Pos : aliased Integer;
- 
-    begin
-       String_Skip (From, Pos);
-       Item := Scan_Long_Long_Unsigned (From, Pos'Access, From'Last);
-       Last := Pos - 1;
- 
-    exception
-       when Constraint_Error =>
-          raise Data_Error;
-    end Gets_LLU;
- 
-    --------------
-    -- Gets_Uns --
-    --------------
- 
-    procedure Gets_Uns
-      (From : String;
-       Item : out Unsigned;
-       Last : out Positive)
-    is
-       Pos : aliased Integer;
- 
-    begin
-       String_Skip (From, Pos);
-       Item := Scan_Unsigned (From, Pos'Access, From'Last);
-       Last := Pos - 1;
- 
-    exception
-       when Constraint_Error =>
-          raise Data_Error;
-    end Gets_Uns;
- 
-    ------------------
-    -- Load_Modular --
-    ------------------
- 
-    procedure Load_Modular
-      (File : File_Type;
-       Buf  : out String;
-       Ptr  : in out Natural)
-    is
-       Hash_Loc : Natural;
-       Loaded   : Boolean;
- 
-    begin
-       Load_Skip (File);
- 
-       --  Note: it is a bit strange to allow a minus sign here, but it seems
-       --  consistent with the general behavior expected by the ACVC tests
-       --  which is to scan past junk and then signal data error, see ACVC
-       --  test CE3704F, case (6), which is for signed integer exponents,
-       --  which seems a similar case.
- 
-       Load (File, Buf, Ptr, '+', '-');
-       Load_Digits (File, Buf, Ptr, Loaded);
- 
-       if Loaded then
- 
-          --  Deal with based case. We recognize either the standard '#' or the
-          --  allowed alternative replacement ':' (see RM J.2(3)).
- 
-          Load (File, Buf, Ptr, '#', ':', Loaded);
- 
-          if Loaded then
-             Hash_Loc := Ptr;
-             Load_Extended_Digits (File, Buf, Ptr);
-             Load (File, Buf, Ptr, Buf (Hash_Loc));
-          end if;
- 
-          Load (File, Buf, Ptr, 'E', 'e', Loaded);
- 
-          if Loaded then
- 
-             --  Note: it is strange to allow a minus sign, since the syntax
-             --  does not, but that is what ACVC test CE3704F, case (6) wants
-             --  for the signed case, and there seems no good reason to treat
-             --  exponents differently for the signed and unsigned cases.
- 
-             Load (File, Buf, Ptr, '+', '-');
-             Load_Digits (File, Buf, Ptr);
-          end if;
-       end if;
-    end Load_Modular;
- 
-    -------------
-    -- Put_LLU --
-    -------------
- 
-    procedure Put_LLU
-      (File  : File_Type;
-       Item  : Long_Long_Unsigned;
-       Width : Field;
-       Base  : Number_Base)
-    is
-       Buf : String (1 .. Field'Last);
-       Ptr : Natural := 0;
- 
-    begin
-       if Base = 10 and then Width = 0 then
-          Set_Image_Long_Long_Unsigned (Item, Buf, Ptr);
-       elsif Base = 10 then
-          Set_Image_Width_Long_Long_Unsigned (Item, Width, Buf, Ptr);
-       else
-          Set_Image_Based_Long_Long_Unsigned (Item, Base, Width, Buf, Ptr);
-       end if;
- 
-       Put_Item (File, Buf (1 .. Ptr));
-    end Put_LLU;
- 
-    -------------
-    -- Put_Uns --
-    -------------
- 
-    procedure Put_Uns
-      (File  : File_Type;
-       Item  : Unsigned;
-       Width : Field;
-       Base  : Number_Base)
-    is
-       Buf : String (1 .. Field'Last);
-       Ptr : Natural := 0;
- 
-    begin
-       if Base = 10 and then Width = 0 then
-          Set_Image_Unsigned (Item, Buf, Ptr);
-       elsif Base = 10 then
-          Set_Image_Width_Unsigned (Item, Width, Buf, Ptr);
-       else
-          Set_Image_Based_Unsigned (Item, Base, Width, Buf, Ptr);
-       end if;
- 
-       Put_Item (File, Buf (1 .. Ptr));
-    end Put_Uns;
- 
-    --------------
-    -- Puts_LLU --
-    --------------
- 
-    procedure Puts_LLU
-      (To   : out String;
-       Item : Long_Long_Unsigned;
-       Base : Number_Base)
-    is
-       Buf : String (1 .. Field'Last);
-       Ptr : Natural := 0;
- 
-    begin
-       if Base = 10 then
-          Set_Image_Width_Long_Long_Unsigned (Item, To'Length, Buf, Ptr);
-       else
-          Set_Image_Based_Long_Long_Unsigned (Item, Base, To'Length, Buf, Ptr);
-       end if;
- 
-       if Ptr > To'Length then
-          raise Layout_Error;
-       else
-          To (To'First .. To'First + Ptr - 1) := Buf (1 .. Ptr);
-       end if;
-    end Puts_LLU;
- 
-    --------------
-    -- Puts_Uns --
-    --------------
- 
-    procedure Puts_Uns
-      (To   : out String;
-       Item : Unsigned;
-       Base : Number_Base)
-    is
-       Buf : String (1 .. Field'Last);
-       Ptr : Natural := 0;
- 
-    begin
-       if Base = 10 then
-          Set_Image_Width_Unsigned (Item, To'Length, Buf, Ptr);
-       else
-          Set_Image_Based_Unsigned (Item, Base, To'Length, Buf, Ptr);
-       end if;
- 
-       if Ptr > To'Length then
-          raise Layout_Error;
-       else
-          To (To'First .. To'First + Ptr - 1) := Buf (1 .. Ptr);
-       end if;
-    end Puts_Uns;
- 
- end Ada.Wide_Text_IO.Modular_Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-wtmoau.ads gcc-8.1.0/gcc/ada/a-wtmoau.ads
*** gcc-7.3.0/gcc/ada/a-wtmoau.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-wtmoau.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,87 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --         A D A . W I D E _ T E X T _ I O . M O D U L A R _ A U X          --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          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- --
- -- 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 routines for Ada.Wide_Text_IO.Modular_IO that
- --  are shared among separate instantiations of this package. The routines
- --  in this package are identical semantically to those in Modular_IO itself,
- --  except that the generic parameter Num has been replaced by Unsigned or
- --  Long_Long_Unsigned, and the default parameters have been removed because
- --  they are supplied explicitly by the calls from within the generic template.
- 
- with System.Unsigned_Types;
- 
- private package Ada.Wide_Text_IO.Modular_Aux is
- 
-    package U renames System.Unsigned_Types;
- 
-    procedure Get_Uns
-      (File  : File_Type;
-       Item  : out U.Unsigned;
-       Width : Field);
- 
-    procedure Get_LLU
-      (File  : File_Type;
-       Item  : out U.Long_Long_Unsigned;
-       Width : Field);
- 
-    procedure Gets_Uns
-      (From : String;
-       Item : out U.Unsigned;
-       Last : out Positive);
- 
-    procedure Gets_LLU
-      (From : String;
-       Item : out U.Long_Long_Unsigned;
-       Last : out Positive);
- 
-    procedure Put_Uns
-      (File  : File_Type;
-       Item  : U.Unsigned;
-       Width : Field;
-       Base  : Number_Base);
- 
-    procedure Put_LLU
-      (File  : File_Type;
-       Item  : U.Long_Long_Unsigned;
-       Width : Field;
-       Base  : Number_Base);
- 
-    procedure Puts_Uns
-      (To   : out String;
-       Item : U.Unsigned;
-       Base : Number_Base);
- 
-    procedure Puts_LLU
-      (To   : out String;
-       Item : U.Long_Long_Unsigned;
-       Base : Number_Base);
- 
- end Ada.Wide_Text_IO.Modular_Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-wtmoio.adb gcc-8.1.0/gcc/ada/a-wtmoio.adb
*** gcc-7.3.0/gcc/ada/a-wtmoio.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-wtmoio.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,141 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --           A D A . W I D E _ T E X T _ I O . M O D U L A R _ I O          --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --           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- --
- -- 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.Wide_Text_IO.Modular_Aux;
- 
- with System.Unsigned_Types; use System.Unsigned_Types;
- with System.WCh_Con;        use System.WCh_Con;
- with System.WCh_WtS;        use System.WCh_WtS;
- 
- package body Ada.Wide_Text_IO.Modular_IO is
- 
-    subtype TFT is Ada.Wide_Text_IO.File_Type;
-    --  File type required for calls to routines in Aux
- 
-    package Aux renames Ada.Wide_Text_IO.Modular_Aux;
- 
-    ---------
-    -- Get --
-    ---------
- 
-    procedure Get
-      (File  : File_Type;
-       Item  : out Num;
-       Width : Field := 0)
-    is
-    begin
-       if Num'Size > Unsigned'Size then
-          Aux.Get_LLU (TFT (File), Long_Long_Unsigned (Item), Width);
-       else
-          Aux.Get_Uns (TFT (File), Unsigned (Item), Width);
-       end if;
- 
-    exception
-       when Constraint_Error => raise Data_Error;
-    end Get;
- 
-    procedure Get
-      (Item  : out Num;
-       Width : Field := 0)
-    is
-    begin
-       Get (Current_Input, Item, Width);
-    end Get;
- 
-    procedure Get
-      (From : Wide_String;
-       Item : out Num;
-       Last : out Positive)
-    is
-       S : constant String := Wide_String_To_String (From, WCEM_Upper);
-       --  String on which we do the actual conversion. Note that the method
-       --  used for wide character encoding is irrelevant, since if there is
-       --  a character outside the Standard.Character range then the call to
-       --  Aux.Gets will raise Data_Error in any case.
- 
-    begin
-       if Num'Size > Unsigned'Size then
-          Aux.Gets_LLU (S, Long_Long_Unsigned (Item), Last);
-       else
-          Aux.Gets_Uns (S, Unsigned (Item), Last);
-       end if;
- 
-    exception
-       when Constraint_Error => raise Data_Error;
-    end Get;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put
-      (File  : File_Type;
-       Item  : Num;
-       Width : Field := Default_Width;
-       Base  : Number_Base := Default_Base)
-    is
-    begin
-       if Num'Size > Unsigned'Size then
-          Aux.Put_LLU (TFT (File), Long_Long_Unsigned (Item), Width, Base);
-       else
-          Aux.Put_Uns (TFT (File), Unsigned (Item), Width, Base);
-       end if;
-    end Put;
- 
-    procedure Put
-      (Item  : Num;
-       Width : Field := Default_Width;
-       Base  : Number_Base := Default_Base)
-    is
-    begin
-       Put (Current_Output, Item, Width, Base);
-    end Put;
- 
-    procedure Put
-      (To   : out Wide_String;
-       Item : Num;
-       Base : Number_Base := Default_Base)
-    is
-       S : String (To'First .. To'Last);
- 
-    begin
-       if Num'Size > Unsigned'Size then
-          Aux.Puts_LLU (S, Long_Long_Unsigned (Item), Base);
-       else
-          Aux.Puts_Uns (S, Unsigned (Item), Base);
-       end if;
- 
-       for J in S'Range loop
-          To (J) := Wide_Character'Val (Character'Pos (S (J)));
-       end loop;
-    end Put;
- 
- end Ada.Wide_Text_IO.Modular_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-wtmoio.ads gcc-8.1.0/gcc/ada/a-wtmoio.ads
*** gcc-7.3.0/gcc/ada/a-wtmoio.ads	Thu Jul 17 06:35:13 2014
--- gcc-8.1.0/gcc/ada/a-wtmoio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,62 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --           A D A . W I D E _ T E X T _ I O . M O D U L A R _ I O          --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2014, 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 --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  In Ada 95, the package Ada.Wide_Text_IO.Modular_IO is a subpackage
- --  of Wide_Text_IO. In GNAT we make it a child package to avoid loading
- --  the necessary code if Modular_IO is not instantiated. See the routine
- --  Rtsfind.Check_Text_IO_Special_Unit for a description of how we patch up
- --  the difference in semantics so that it is invisible to the Ada programmer.
- 
- private generic
-    type Num is mod <>;
- 
- package Ada.Wide_Text_IO.Modular_IO is
- 
-    Default_Width : Field := Num'Width;
-    Default_Base  : Number_Base := 10;
- 
-    procedure Get
-      (File  : File_Type;
-       Item  : out Num;
-       Width : Field := 0);
- 
-    procedure Get
-      (Item  : out Num;
-       Width : Field := 0);
- 
-    procedure Put
-      (File  : File_Type;
-       Item  : Num;
-       Width : Field := Default_Width;
-       Base  : Number_Base := Default_Base);
- 
-    procedure Put
-      (Item  : Num;
-       Width : Field := Default_Width;
-       Base  : Number_Base := Default_Base);
- 
-    procedure Get
-      (From : Wide_String;
-       Item : out Num;
-       Last : out Positive);
- 
-    procedure Put
-      (To   : out Wide_String;
-       Item : Num;
-       Base : Number_Base := Default_Base);
- 
- end Ada.Wide_Text_IO.Modular_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-wttest.adb gcc-8.1.0/gcc/ada/a-wttest.adb
*** gcc-7.3.0/gcc/ada/a-wttest.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-wttest.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,46 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --         A D A . W I D E _ T E X T _ I O . T E X T _ S T R E A M S        --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          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- --
- -- 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 System.File_IO;
- 
- package body Ada.Wide_Text_IO.Text_Streams is
- 
-    ------------
-    -- Stream --
-    ------------
- 
-    function Stream (File : File_Type) return Stream_Access is
-    begin
-       System.File_IO.Check_File_Open (FCB.AFCB_Ptr (File));
-       return Stream_Access (File);
-    end Stream;
- 
- end Ada.Wide_Text_IO.Text_Streams;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-wttest.ads gcc-8.1.0/gcc/ada/a-wttest.ads
*** gcc-7.3.0/gcc/ada/a-wttest.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-wttest.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,24 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --         A D A . W I D E _ T E X T _ I O . T E X T _ S T R E A M S        --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Streams;
- 
- package Ada.Wide_Text_IO.Text_Streams is
- 
-    type Stream_Access is access all Streams.Root_Stream_Type'Class;
- 
-    function Stream (File : File_Type) return Stream_Access;
- 
- end Ada.Wide_Text_IO.Text_Streams;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-wwboio.adb gcc-8.1.0/gcc/ada/a-wwboio.adb
*** gcc-7.3.0/gcc/ada/a-wwboio.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-wwboio.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,179 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --     A D A . W I D E _ T E X T _ I O . W I D E _ B O U N D E D _ I O      --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1997-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- --
- -- 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.Wide_Text_IO; use Ada.Wide_Text_IO;
- with Ada.Unchecked_Deallocation;
- 
- package body Ada.Wide_Text_IO.Wide_Bounded_IO is
- 
-    type Wide_String_Access is access all Wide_String;
- 
-    procedure Free (WSA : in out Wide_String_Access);
-    --  Perform an unchecked deallocation of a non-null string
- 
-    ----------
-    -- Free --
-    ----------
- 
-    procedure Free (WSA : in out Wide_String_Access) is
-       Null_Wide_String : constant Wide_String := "";
- 
-       procedure Deallocate is
-         new Ada.Unchecked_Deallocation (Wide_String, Wide_String_Access);
- 
-    begin
-       --  Do not try to free statically allocated null string
- 
-       if WSA.all /= Null_Wide_String then
-          Deallocate (WSA);
-       end if;
-    end Free;
- 
-    --------------
-    -- Get_Line --
-    --------------
- 
-    function Get_Line return Wide_Bounded.Bounded_Wide_String is
-    begin
-       return Wide_Bounded.To_Bounded_Wide_String (Get_Line);
-    end Get_Line;
- 
-    --------------
-    -- Get_Line --
-    --------------
- 
-    function Get_Line
-      (File : File_Type) return Wide_Bounded.Bounded_Wide_String
-    is
-    begin
-       return Wide_Bounded.To_Bounded_Wide_String (Get_Line (File));
-    end Get_Line;
- 
-    --------------
-    -- Get_Line --
-    --------------
- 
-    procedure Get_Line
-      (Item : out Wide_Bounded.Bounded_Wide_String)
-    is
-       Buffer : Wide_String (1 .. 1000);
-       Last   : Natural;
-       Str1   : Wide_String_Access;
-       Str2   : Wide_String_Access;
- 
-    begin
-       Get_Line (Buffer, Last);
-       Str1 := new Wide_String'(Buffer (1 .. Last));
- 
-       while Last = Buffer'Last loop
-          Get_Line (Buffer, Last);
-          Str2 := new Wide_String'(Str1.all & Buffer (1 .. Last));
-          Free (Str1);
-          Str1 := Str2;
-       end loop;
- 
-       Item := Wide_Bounded.To_Bounded_Wide_String (Str1.all);
-    end Get_Line;
- 
-    --------------
-    -- Get_Line --
-    --------------
- 
-    procedure Get_Line
-      (File : File_Type;
-       Item : out Wide_Bounded.Bounded_Wide_String)
-    is
-       Buffer : Wide_String (1 .. 1000);
-       Last   : Natural;
-       Str1   : Wide_String_Access;
-       Str2   : Wide_String_Access;
- 
-    begin
-       Get_Line (File, Buffer, Last);
-       Str1 := new Wide_String'(Buffer (1 .. Last));
- 
-       while Last = Buffer'Last loop
-          Get_Line (File, Buffer, Last);
-          Str2 := new Wide_String'(Str1.all & Buffer (1 .. Last));
-          Free (Str1);
-          Str1 := Str2;
-       end loop;
- 
-       Item := Wide_Bounded.To_Bounded_Wide_String (Str1.all);
-    end Get_Line;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put
-      (Item : Wide_Bounded.Bounded_Wide_String)
-    is
-    begin
-       Put (Wide_Bounded.To_Wide_String (Item));
-    end Put;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put
-      (File : File_Type;
-       Item : Wide_Bounded.Bounded_Wide_String)
-    is
-    begin
-       Put (File, Wide_Bounded.To_Wide_String (Item));
-    end Put;
- 
-    --------------
-    -- Put_Line --
-    --------------
- 
-    procedure Put_Line
-      (Item : Wide_Bounded.Bounded_Wide_String)
-    is
-    begin
-       Put_Line (Wide_Bounded.To_Wide_String (Item));
-    end Put_Line;
- 
-    --------------
-    -- Put_Line --
-    --------------
- 
-    procedure Put_Line
-      (File : File_Type;
-       Item : Wide_Bounded.Bounded_Wide_String)
-    is
-    begin
-       Put_Line (File, Wide_Bounded.To_Wide_String (Item));
-    end Put_Line;
- 
- end Ada.Wide_Text_IO.Wide_Bounded_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-wwboio.ads gcc-8.1.0/gcc/ada/a-wwboio.ads
*** gcc-7.3.0/gcc/ada/a-wwboio.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-wwboio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,50 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --     A D A . W I D E _ T E X T _ I O . W I D E _ B O U N D E D _ I O      --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Strings.Wide_Bounded;
- 
- generic
-    with package Wide_Bounded is
-      new Ada.Strings.Wide_Bounded.Generic_Bounded_Length (<>);
- 
- package Ada.Wide_Text_IO.Wide_Bounded_IO is
- 
-    function Get_Line return Wide_Bounded.Bounded_Wide_String;
- 
-    function Get_Line
-      (File : File_Type) return Wide_Bounded.Bounded_Wide_String;
- 
-    procedure Get_Line
-      (Item : out Wide_Bounded.Bounded_Wide_String);
- 
-    procedure Get_Line
-      (File : File_Type;
-       Item : out Wide_Bounded.Bounded_Wide_String);
- 
-    procedure Put
-      (Item : Wide_Bounded.Bounded_Wide_String);
- 
-    procedure Put
-      (File : File_Type;
-       Item : Wide_Bounded.Bounded_Wide_String);
- 
-    procedure Put_Line
-      (Item : Wide_Bounded.Bounded_Wide_String);
- 
-    procedure Put_Line
-      (File : File_Type;
-       Item : Wide_Bounded.Bounded_Wide_String);
- 
- end Ada.Wide_Text_IO.Wide_Bounded_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-wwunio.ads gcc-8.1.0/gcc/ada/a-wwunio.ads
*** gcc-7.3.0/gcc/ada/a-wwunio.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-wwunio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,61 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --   A D A . W I D E _ T E X T _ I O . W I D E _ U N B O U N D E D _ I O    --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Note: historically GNAT provided these subprograms as a child of the
- --  package Ada.Strings.Wide_Unbounded. So we implement this new Ada 2005
- --  package by renaming the subprograms in that child. This is a more
- --  straightforward implementation anyway, since we need access to the
- --  internal representation of Unbounded_Wide_String.
- 
- with Ada.Strings.Wide_Unbounded;
- with Ada.Strings.Wide_Unbounded.Wide_Text_IO;
- 
- package Ada.Wide_Text_IO.Wide_Unbounded_IO is
- 
-    procedure Put
-      (File : File_Type;
-       Item : Strings.Wide_Unbounded.Unbounded_Wide_String)
-    renames Ada.Strings.Wide_Unbounded.Wide_Text_IO.Put;
- 
-    procedure Put
-      (Item : Strings.Wide_Unbounded.Unbounded_Wide_String)
-    renames Ada.Strings.Wide_Unbounded.Wide_Text_IO.Put;
- 
-    procedure Put_Line
-      (File : Wide_Text_IO.File_Type;
-       Item : Strings.Wide_Unbounded.Unbounded_Wide_String)
-    renames Ada.Strings.Wide_Unbounded.Wide_Text_IO.Put_Line;
- 
-    procedure Put_Line
-      (Item : Strings.Wide_Unbounded.Unbounded_Wide_String)
-    renames Ada.Strings.Wide_Unbounded.Wide_Text_IO.Put_Line;
- 
-    function Get_Line
-      (File : File_Type) return Strings.Wide_Unbounded.Unbounded_Wide_String
-    renames Ada.Strings.Wide_Unbounded.Wide_Text_IO.Get_Line;
- 
-    function Get_Line return Strings.Wide_Unbounded.Unbounded_Wide_String
-    renames Ada.Strings.Wide_Unbounded.Wide_Text_IO.Get_Line;
- 
-    procedure Get_Line
-       (File : File_Type;
-        Item : out Strings.Wide_Unbounded.Unbounded_Wide_String)
-    renames Ada.Strings.Wide_Unbounded.Wide_Text_IO.Get_Line;
- 
-    procedure Get_Line
-      (Item : out Strings.Wide_Unbounded.Unbounded_Wide_String)
-    renames Ada.Strings.Wide_Unbounded.Wide_Text_IO.Get_Line;
- 
- end Ada.Wide_Text_IO.Wide_Unbounded_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-zchara.ads gcc-8.1.0/gcc/ada/a-zchara.ads
*** gcc-7.3.0/gcc/ada/a-zchara.ads	Tue Apr 10 05:44:30 2012
--- gcc-8.1.0/gcc/ada/a-zchara.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,18 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --             A D A . W I D E _ W I D E _ C H A R A C T E R S              --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- package Ada.Wide_Wide_Characters is
-    pragma Pure;
- end Ada.Wide_Wide_Characters;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-zchhan.adb gcc-8.1.0/gcc/ada/a-zchhan.adb
*** gcc-7.3.0/gcc/ada/a-zchhan.adb	Thu Oct 10 12:38:44 2013
--- gcc-8.1.0/gcc/ada/a-zchhan.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,187 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --    A D A . W I D E _ W I D E _ C H A R A C T E R S . H A N D L I N G     --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2010-2013, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Wide_Wide_Characters.Unicode; use Ada.Wide_Wide_Characters.Unicode;
- 
- package body Ada.Wide_Wide_Characters.Handling is
- 
-    ---------------------
-    -- Is_Alphanumeric --
-    ---------------------
- 
-    function Is_Alphanumeric (Item : Wide_Wide_Character) return Boolean is
-    begin
-       return Is_Letter (Item) or else Is_Digit (Item);
-    end Is_Alphanumeric;
- 
-    ----------------
-    -- Is_Control --
-    ----------------
- 
-    function Is_Control (Item : Wide_Wide_Character) return Boolean is
-    begin
-       return Get_Category (Item) = Cc;
-    end Is_Control;
- 
-    --------------
-    -- Is_Digit --
-    --------------
- 
-    function Is_Digit (Item : Wide_Wide_Character) return Boolean
-      renames Ada.Wide_Wide_Characters.Unicode.Is_Digit;
- 
-    ----------------
-    -- Is_Graphic --
-    ----------------
- 
-    function Is_Graphic (Item : Wide_Wide_Character) return Boolean is
-    begin
-       return not Is_Non_Graphic (Item);
-    end Is_Graphic;
- 
-    --------------------------
-    -- Is_Hexadecimal_Digit --
-    --------------------------
- 
-    function Is_Hexadecimal_Digit (Item : Wide_Wide_Character) return Boolean is
-    begin
-       return Is_Digit (Item)
-         or else Item in 'A' .. 'F'
-         or else Item in 'a' .. 'f';
-    end Is_Hexadecimal_Digit;
- 
-    ---------------
-    -- Is_Letter --
-    ---------------
- 
-    function Is_Letter (Item : Wide_Wide_Character) return Boolean
-      renames Ada.Wide_Wide_Characters.Unicode.Is_Letter;
- 
-    ------------------------
-    -- Is_Line_Terminator --
-    ------------------------
- 
-    function Is_Line_Terminator (Item : Wide_Wide_Character) return Boolean
-      renames Ada.Wide_Wide_Characters.Unicode.Is_Line_Terminator;
- 
-    --------------
-    -- Is_Lower --
-    --------------
- 
-    function Is_Lower (Item : Wide_Wide_Character) return Boolean is
-    begin
-       return Get_Category (Item) = Ll;
-    end Is_Lower;
- 
-    -------------
-    -- Is_Mark --
-    -------------
- 
-    function Is_Mark (Item : Wide_Wide_Character) return Boolean
-      renames Ada.Wide_Wide_Characters.Unicode.Is_Mark;
- 
-    ---------------------
-    -- Is_Other_Format --
-    ---------------------
- 
-    function Is_Other_Format (Item : Wide_Wide_Character) return Boolean
-      renames Ada.Wide_Wide_Characters.Unicode.Is_Other;
- 
-    ------------------------------
-    -- Is_Punctuation_Connector --
-    ------------------------------
- 
-    function Is_Punctuation_Connector
-      (Item : Wide_Wide_Character) return Boolean
-      renames Ada.Wide_Wide_Characters.Unicode.Is_Punctuation;
- 
-    --------------
-    -- Is_Space --
-    --------------
- 
-    function Is_Space (Item : Wide_Wide_Character) return Boolean
-      renames Ada.Wide_Wide_Characters.Unicode.Is_Space;
- 
-    ----------------
-    -- Is_Special --
-    ----------------
- 
-    function Is_Special (Item : Wide_Wide_Character) return Boolean is
-    begin
-       return Is_Graphic (Item) and then not Is_Alphanumeric (Item);
-    end Is_Special;
- 
-    --------------
-    -- Is_Upper --
-    --------------
- 
-    function Is_Upper (Item : Wide_Wide_Character) return Boolean is
-    begin
-       return Get_Category (Item) = Lu;
-    end Is_Upper;
- 
-    --------------
-    -- To_Lower --
-    --------------
- 
-    function To_Lower (Item : Wide_Wide_Character) return Wide_Wide_Character
-      renames Ada.Wide_Wide_Characters.Unicode.To_Lower_Case;
- 
-    function To_Lower (Item : Wide_Wide_String) return Wide_Wide_String is
-       Result : Wide_Wide_String (Item'Range);
- 
-    begin
-       for J in Result'Range loop
-          Result (J) := To_Lower (Item (J));
-       end loop;
- 
-       return Result;
-    end To_Lower;
- 
-    --------------
-    -- To_Upper --
-    --------------
- 
-    function To_Upper (Item : Wide_Wide_Character) return Wide_Wide_Character
-      renames Ada.Wide_Wide_Characters.Unicode.To_Upper_Case;
- 
-    function To_Upper (Item : Wide_Wide_String) return Wide_Wide_String is
-       Result : Wide_Wide_String (Item'Range);
- 
-    begin
-       for J in Result'Range loop
-          Result (J) := To_Upper (Item (J));
-       end loop;
- 
-       return Result;
-    end To_Upper;
- 
- end Ada.Wide_Wide_Characters.Handling;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-zchhan.ads gcc-8.1.0/gcc/ada/a-zchhan.ads
*** gcc-7.3.0/gcc/ada/a-zchhan.ads	Thu Oct 10 12:38:44 2013
--- gcc-8.1.0/gcc/ada/a-zchhan.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,132 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --    A D A . W I D E _ W I D E _ C H A R A C T E R S . H A N D L I N G     --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- package Ada.Wide_Wide_Characters.Handling is
-    pragma Pure;
-    --  This package is clearly intended to be Pure, by analogy with the
-    --  base Ada.Characters.Handling package. The version in the RM does
-    --  not yet have this pragma, but that is a clear omission. This will
-    --  be fixed in a future version of AI05-0266-1.
- 
-    function Is_Control (Item : Wide_Wide_Character) return Boolean;
-    pragma Inline (Is_Control);
-    --  Returns True if the Wide_Wide_Character designated by Item is
-    --  categorized as other_control, otherwise returns false.
- 
-    function Is_Letter (Item : Wide_Wide_Character) return Boolean;
-    pragma Inline (Is_Letter);
-    --  Returns True if the Wide_Wide_Character designated by Item is
-    --  categorized as letter_uppercase, letter_lowercase, letter_titlecase,
-    --  letter_modifier, letter_other, or number_letter. Otherwise returns
-    --  false.
- 
-    function Is_Lower (Item : Wide_Wide_Character) return Boolean;
-    pragma Inline (Is_Lower);
-    --  Returns True if the Wide_Wide_Character designated by Item is
-    --  categorized as letter_lowercase, otherwise returns false.
- 
-    function Is_Upper (Item : Wide_Wide_Character) return Boolean;
-    pragma Inline (Is_Upper);
-    --  Returns True if the Wide_Wide_Character designated by Item is
-    --  categorized as letter_uppercase, otherwise returns false.
- 
-    function Is_Digit (Item : Wide_Wide_Character) return Boolean;
-    pragma Inline (Is_Digit);
-    --  Returns True if the Wide_Wide_Character designated by Item is
-    --  categorized as number_decimal, otherwise returns false.
- 
-    function Is_Decimal_Digit (Item : Wide_Wide_Character) return Boolean
-      renames Is_Digit;
- 
-    function Is_Hexadecimal_Digit (Item : Wide_Wide_Character) return Boolean;
-    --  Returns True if the Wide_Wide_Character designated by Item is
-    --  categorized as number_decimal, or is in the range 'A' .. 'F' or
-    --  'a' .. 'f', otherwise returns false.
- 
-    function Is_Alphanumeric (Item : Wide_Wide_Character) return Boolean;
-    pragma Inline (Is_Alphanumeric);
-    --  Returns True if the Wide_Wide_Character designated by Item is
-    --  categorized as letter_uppercase, letter_lowercase, letter_titlecase,
-    --  letter_modifier, letter_other, number_letter, or number_decimal.
-    --  Otherwise returns false.
- 
-    function Is_Special (Item : Wide_Wide_Character) return Boolean;
-    pragma Inline (Is_Special);
-    --  Returns True if the Wide_Wide_Character designated by Item
-    --  is categorized as graphic_character, but not categorized as
-    --  letter_uppercase, letter_lowercase, letter_titlecase, letter_modifier,
-    --  letter_other, number_letter, or number_decimal. Otherwise returns false.
- 
-    function Is_Line_Terminator (Item : Wide_Wide_Character) return Boolean;
-    pragma Inline (Is_Line_Terminator);
-    --  Returns True if the Wide_Wide_Character designated by Item is
-    --  categorized as separator_line or separator_paragraph, or if Item is a
-    --  conventional line terminator character (CR, LF, VT, or FF). Otherwise
-    --  returns false.
- 
-    function Is_Mark (Item : Wide_Wide_Character) return Boolean;
-    pragma Inline (Is_Mark);
-    --  Returns True if the Wide_Wide_Character designated by Item is
-    --  categorized as mark_non_spacing or mark_spacing_combining, otherwise
-    --  returns false.
- 
-    function Is_Other_Format (Item : Wide_Wide_Character) return Boolean;
-    pragma Inline (Is_Other_Format);
-    --  Returns True if the Wide_Wide_Character designated by Item is
-    --  categorized as other_format, otherwise returns false.
- 
-    function Is_Punctuation_Connector
-      (Item : Wide_Wide_Character) return Boolean;
-    pragma Inline (Is_Punctuation_Connector);
-    --  Returns True if the Wide_Wide_Character designated by Item is
-    --  categorized as punctuation_connector, otherwise returns false.
- 
-    function Is_Space (Item : Wide_Wide_Character) return Boolean;
-    pragma Inline (Is_Space);
-    --  Returns True if the Wide_Wide_Character designated by Item is
-    --  categorized as separator_space, otherwise returns false.
- 
-    function Is_Graphic (Item : Wide_Wide_Character) return Boolean;
-    pragma Inline (Is_Graphic);
-    --  Returns True if the Wide_Wide_Character designated by Item is
-    --  categorized as graphic_character, otherwise returns false.
- 
-    function To_Lower (Item : Wide_Wide_Character) return Wide_Wide_Character;
-    pragma Inline (To_Lower);
-    --  Returns the Simple Lowercase Mapping of the Wide_Wide_Character
-    --  designated by Item. If the Simple Lowercase Mapping does not exist for
-    --  the Wide_Wide_Character designated by Item, then the value of Item is
-    --  returned.
- 
-    function To_Lower (Item : Wide_Wide_String) return Wide_Wide_String;
-    --  Returns the result of applying the To_Lower Wide_Wide_Character to
-    --  Wide_Wide_Character conversion to each element of the Wide_Wide_String
-    --  designated by Item. The result is the null Wide_Wide_String if the value
-    --  of the formal parameter is the null Wide_Wide_String.
- 
-    function To_Upper (Item : Wide_Wide_Character) return Wide_Wide_Character;
-    pragma Inline (To_Upper);
-    --  Returns the Simple Uppercase Mapping of the Wide_Wide_Character
-    --  designated by Item. If the Simple Uppercase Mapping does not exist for
-    --  the Wide_Wide_Character designated by Item, then the value of Item is
-    --  returned.
- 
-    function To_Upper (Item : Wide_Wide_String) return Wide_Wide_String;
-    --  Returns the result of applying the To_Upper Wide_Wide_Character to
-    --  Wide_Wide_Character conversion to each element of the Wide_Wide_String
-    --  designated by Item. The result is the null Wide_Wide_String if the value
-    --  of the formal parameter is the null Wide_Wide_String.
- 
- end Ada.Wide_Wide_Characters.Handling;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-zchuni.adb gcc-8.1.0/gcc/ada/a-zchuni.adb
*** gcc-7.3.0/gcc/ada/a-zchuni.adb	Fri Jan  4 12:49:55 2013
--- gcc-8.1.0/gcc/ada/a-zchuni.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,178 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --    A D A . W I D E _ W I D E _ C H A R A C T E R T S . U N I C O D E     --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2005-2012, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 Ada.Wide_Wide_Characters.Unicode is
- 
-    package G renames System.UTF_32;
- 
-    ------------------
-    -- Get_Category --
-    ------------------
- 
-    function Get_Category (U : Wide_Wide_Character) return Category is
-    begin
-       return Category (G.Get_Category (Wide_Wide_Character'Pos (U)));
-    end Get_Category;
- 
-    --------------
-    -- Is_Digit --
-    --------------
- 
-    function Is_Digit (U : Wide_Wide_Character) return Boolean is
-    begin
-       return G.Is_UTF_32_Digit (Wide_Wide_Character'Pos (U));
-    end Is_Digit;
- 
-    function Is_Digit (C : Category) return Boolean is
-    begin
-       return G.Is_UTF_32_Digit (G.Category (C));
-    end Is_Digit;
- 
-    ---------------
-    -- Is_Letter --
-    ---------------
- 
-    function Is_Letter (U : Wide_Wide_Character) return Boolean is
-    begin
-       return G.Is_UTF_32_Letter (Wide_Wide_Character'Pos (U));
-    end Is_Letter;
- 
-    function Is_Letter (C : Category) return Boolean is
-    begin
-       return G.Is_UTF_32_Letter (G.Category (C));
-    end Is_Letter;
- 
-    ------------------------
-    -- Is_Line_Terminator --
-    ------------------------
- 
-    function Is_Line_Terminator (U : Wide_Wide_Character) return Boolean is
-    begin
-       return G.Is_UTF_32_Line_Terminator (Wide_Wide_Character'Pos (U));
-    end Is_Line_Terminator;
- 
-    -------------
-    -- Is_Mark --
-    -------------
- 
-    function Is_Mark (U : Wide_Wide_Character) return Boolean is
-    begin
-       return G.Is_UTF_32_Mark (Wide_Wide_Character'Pos (U));
-    end Is_Mark;
- 
-    function Is_Mark (C : Category) return Boolean is
-    begin
-       return G.Is_UTF_32_Mark (G.Category (C));
-    end Is_Mark;
- 
-    --------------------
-    -- Is_Non_Graphic --
-    --------------------
- 
-    function Is_Non_Graphic (U : Wide_Wide_Character) return Boolean is
-    begin
-       return G.Is_UTF_32_Non_Graphic (Wide_Wide_Character'Pos (U));
-    end Is_Non_Graphic;
- 
-    function Is_Non_Graphic (C : Category) return Boolean is
-    begin
-       return G.Is_UTF_32_Non_Graphic (G.Category (C));
-    end Is_Non_Graphic;
- 
-    --------------
-    -- Is_Other --
-    --------------
- 
-    function Is_Other (U : Wide_Wide_Character) return Boolean is
-    begin
-       return G.Is_UTF_32_Other (Wide_Wide_Character'Pos (U));
-    end Is_Other;
- 
-    function Is_Other (C : Category) return Boolean is
-    begin
-       return G.Is_UTF_32_Other (G.Category (C));
-    end Is_Other;
- 
-    --------------------
-    -- Is_Punctuation --
-    --------------------
- 
-    function Is_Punctuation (U : Wide_Wide_Character) return Boolean is
-    begin
-       return G.Is_UTF_32_Punctuation (Wide_Wide_Character'Pos (U));
-    end Is_Punctuation;
- 
-    function Is_Punctuation (C : Category) return Boolean is
-    begin
-       return G.Is_UTF_32_Punctuation (G.Category (C));
-    end Is_Punctuation;
- 
-    --------------
-    -- Is_Space --
-    --------------
- 
-    function Is_Space (U : Wide_Wide_Character) return Boolean is
-    begin
-       return G.Is_UTF_32_Space (Wide_Wide_Character'Pos (U));
-    end Is_Space;
- 
-    function Is_Space (C : Category) return Boolean is
-    begin
-       return G.Is_UTF_32_Space (G.Category (C));
-    end Is_Space;
- 
-    -------------------
-    -- To_Lower_Case --
-    -------------------
- 
-    function To_Lower_Case
-      (U : Wide_Wide_Character) return Wide_Wide_Character
-    is
-    begin
-       return
-         Wide_Wide_Character'Val
-           (G.UTF_32_To_Lower_Case (Wide_Wide_Character'Pos (U)));
-    end To_Lower_Case;
- 
-    -------------------
-    -- To_Upper_Case --
-    -------------------
- 
-    function To_Upper_Case
-      (U : Wide_Wide_Character) return Wide_Wide_Character
-    is
-    begin
-       return
-         Wide_Wide_Character'Val
-           (G.UTF_32_To_Upper_Case (Wide_Wide_Character'Pos (U)));
-    end To_Upper_Case;
- 
- end Ada.Wide_Wide_Characters.Unicode;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-zchuni.ads gcc-8.1.0/gcc/ada/a-zchuni.ads
*** gcc-7.3.0/gcc/ada/a-zchuni.ads	Fri Jan  4 12:49:55 2013
--- gcc-8.1.0/gcc/ada/a-zchuni.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,196 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --    A D A . W I D E _ W I D E _ C H A R A C T E R T S . U N I C O D E    --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2005-2012, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Unicode categorization routines for Wide_Wide_Character
- 
- with System.UTF_32;
- 
- package Ada.Wide_Wide_Characters.Unicode is
-    pragma Pure;
- 
-    --  The following type defines the categories from the unicode definitions.
-    --  The one addition we make is Fe, which represents the characters FFFE
-    --  and FFFF in any of the planes.
- 
-    type Category is new System.UTF_32.Category;
-    --  Cc   Other, Control
-    --  Cf   Other, Format
-    --  Cn   Other, Not Assigned
-    --  Co   Other, Private Use
-    --  Cs   Other, Surrogate
-    --  Ll   Letter, Lowercase
-    --  Lm   Letter, Modifier
-    --  Lo   Letter, Other
-    --  Lt   Letter, Titlecase
-    --  Lu   Letter, Uppercase
-    --  Mc   Mark, Spacing Combining
-    --  Me   Mark, Enclosing
-    --  Mn   Mark, Nonspacing
-    --  Nd   Number, Decimal Digit
-    --  Nl   Number, Letter
-    --  No   Number, Other
-    --  Pc   Punctuation, Connector
-    --  Pd   Punctuation, Dash
-    --  Pe   Punctuation, Close
-    --  Pf   Punctuation, Final quote
-    --  Pi   Punctuation, Initial quote
-    --  Po   Punctuation, Other
-    --  Ps   Punctuation, Open
-    --  Sc   Symbol, Currency
-    --  Sk   Symbol, Modifier
-    --  Sm   Symbol, Math
-    --  So   Symbol, Other
-    --  Zl   Separator, Line
-    --  Zp   Separator, Paragraph
-    --  Zs   Separator, Space
-    --  Fe   relative position FFFE/FFFF in plane
- 
-    function Get_Category (U : Wide_Wide_Character) return Category;
-    pragma Inline (Get_Category);
-    --  Given a Wide_Wide_Character, returns corresponding Category, or Cn if
-    --  the code does not have an assigned unicode category.
- 
-    --  The following functions perform category tests corresponding to lexical
-    --  classes defined in the Ada standard. There are two interfaces for each
-    --  function. The second takes a Category (e.g. returned by Get_Category).
-    --  The first takes a Wide_Wide_Character. The form taking the
-    --  Wide_Wide_Character is typically more efficient than calling
-    --  Get_Category, but if several different tests are to be performed on the
-    --  same code, it is more efficient to use Get_Category to get the category,
-    --  then test the resulting category.
- 
-    function Is_Letter (U : Wide_Wide_Character) return Boolean;
-    function Is_Letter (C : Category)            return Boolean;
-    pragma Inline (Is_Letter);
-    --  Returns true iff U is a letter that can be used to start an identifier,
-    --  or if C is one of the corresponding categories, which are the following:
-    --    Letter, Uppercase (Lu)
-    --    Letter, Lowercase (Ll)
-    --    Letter, Titlecase (Lt)
-    --    Letter, Modifier  (Lm)
-    --    Letter, Other     (Lo)
-    --    Number, Letter    (Nl)
- 
-    function Is_Digit (U : Wide_Wide_Character) return Boolean;
-    function Is_Digit (C : Category)            return Boolean;
-    pragma Inline (Is_Digit);
-    --  Returns true iff U is a digit that can be used to extend an identifer,
-    --  or if C is one of the corresponding categories, which are the following:
-    --    Number, Decimal_Digit (Nd)
- 
-    function Is_Line_Terminator (U : Wide_Wide_Character) return Boolean;
-    pragma Inline (Is_Line_Terminator);
-    --  Returns true iff U is an allowed line terminator for source programs,
-    --  if U is in the category Zp (Separator, Paragaph), or Zs (Separator,
-    --  Line), or if U is a conventional line terminator (CR, LF, VT, FF).
-    --  There is no category version for this function, since the set of
-    --  characters does not correspond to a set of Unicode categories.
- 
-    function Is_Mark (U : Wide_Wide_Character) return Boolean;
-    function Is_Mark (C : Category)            return Boolean;
-    pragma Inline (Is_Mark);
-    --  Returns true iff U is a mark character which can be used to extend an
-    --  identifier, or if C is one of the corresponding categories, which are
-    --  the following:
-    --    Mark, Non-Spacing (Mn)
-    --    Mark, Spacing Combining (Mc)
- 
-    function Is_Other (U : Wide_Wide_Character) return Boolean;
-    function Is_Other (C : Category)            return Boolean;
-    pragma Inline (Is_Other);
-    --  Returns true iff U is an other format character, which means that it
-    --  can be used to extend an identifier, but is ignored for the purposes of
-    --  matching of identiers, or if C is one of the corresponding categories,
-    --  which are the following:
-    --    Other, Format (Cf)
- 
-    function Is_Punctuation (U : Wide_Wide_Character) return Boolean;
-    function Is_Punctuation (C : Category)            return Boolean;
-    pragma Inline (Is_Punctuation);
-    --  Returns true iff U is a punctuation character that can be used to
-    --  separate pices of an identifier, or if C is one of the corresponding
-    --  categories, which are the following:
-    --    Punctuation, Connector (Pc)
- 
-    function Is_Space (U : Wide_Wide_Character) return Boolean;
-    function Is_Space (C : Category)            return Boolean;
-    pragma Inline (Is_Space);
-    --  Returns true iff U is considered a space to be ignored, or if C is one
-    --  of the corresponding categories, which are the following:
-    --    Separator, Space (Zs)
- 
-    function Is_Non_Graphic (U : Wide_Wide_Character) return Boolean;
-    function Is_Non_Graphic (C : Category)            return Boolean;
-    pragma Inline (Is_Non_Graphic);
-    --  Returns true iff U is considered to be a non-graphic character, or if C
-    --  is one of the corresponding categories, which are the following:
-    --    Other, Control (Cc)
-    --    Other, Private Use (Co)
-    --    Other, Surrogate (Cs)
-    --    Separator, Line (Zl)
-    --    Separator, Paragraph (Zp)
-    --    FFFE or FFFF positions in any plane (Fe)
-    --
-    --  Note that the Ada category format effector is subsumed by the above
-    --  list of Unicode categories.
-    --
-    --  Note that Other, Unassiged (Cn) is quite deliberately not included
-    --  in the list of categories above. This means that should any of these
-    --  code positions be defined in future with graphic characters they will
-    --  be allowed without a need to change implementations or the standard.
-    --
-    --  Note that Other, Format (Cf) is also quite deliberately not included
-    --  in the list of categories above. This means that these characters can
-    --  be included in character and string literals.
- 
-    --  The following function is used to fold to upper case, as required by
-    --  the Ada 2005 standard rules for identifier case folding. Two
-    --  identifiers are equivalent if they are identical after folding all
-    --  letters to upper case using this routine. A fold to lower routine is
-    --  also provided.
- 
-    function To_Lower_Case
-      (U : Wide_Wide_Character) return Wide_Wide_Character;
-    pragma Inline (To_Lower_Case);
-    --  If U represents an upper case letter, returns the corresponding lower
-    --  case letter, otherwise U is returned unchanged. The folding is locale
-    --  independent as defined by documents referenced in the note in section
-    --  1 of ISO/IEC 10646:2003
- 
-    function To_Upper_Case
-      (U : Wide_Wide_Character) return Wide_Wide_Character;
-    pragma Inline (To_Upper_Case);
-    --  If U represents a lower case letter, returns the corresponding upper
-    --  case letter, otherwise U is returned unchanged. The folding is locale
-    --  independent as defined by documents referenced in the note in section
-    --  1 of ISO/IEC 10646:2003
- 
- end Ada.Wide_Wide_Characters.Unicode;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-zrstfi.adb gcc-8.1.0/gcc/ada/a-zrstfi.adb
*** gcc-7.3.0/gcc/ada/a-zrstfi.adb	Fri Jan  4 12:49:55 2013
--- gcc-8.1.0/gcc/ada/a-zrstfi.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,39 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                ADA.WIDE_WIDE_TEXT_IO.RESET_STANDARD_FILES                --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --            Copyright (C) 2009-2012, Free Software Foundation, Inc.       --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- ------------------------------------------------
- -- Ada.Wide_Wide_Text_IO.Reset_Standard_Files --
- ------------------------------------------------
- 
- procedure Ada.Wide_Wide_Text_IO.Reset_Standard_Files is
- begin
-    Ada.Wide_Wide_Text_IO.Initialize_Standard_Files;
- end Ada.Wide_Wide_Text_IO.Reset_Standard_Files;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-zrstfi.ads gcc-8.1.0/gcc/ada/a-zrstfi.ads
*** gcc-7.3.0/gcc/ada/a-zrstfi.ads	Fri Jan  4 12:49:55 2013
--- gcc-8.1.0/gcc/ada/a-zrstfi.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,41 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                ADA.WIDE_WIDE_TEXT_IO.RESET_STANDARD_FILES                --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --            Copyright (C) 2009-2012, Free Software Foundation, Inc.       --
- --                                                                          --
- -- GNAT is 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 a reset routine that resets the standard files used
- --  by Ada.Wide_Wide_Text_IO. This is useful in systems such as VxWorks where
- --  Ada.Wide_Wide_Text_IO is elaborated at the program start, but a system
- --  restart may alter the status of these files, resulting in incorrect
- --  operation of Wide_Wide_Text_IO (in particular if the standard input file
- --  is changed to be interactive, then Get_Line may hang looking for an extra
- --  character after the end of the line.
- 
- procedure Ada.Wide_Wide_Text_IO.Reset_Standard_Files;
- --  Reset standard Wide_Wide_Text_IO files as described above
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ztcoau.adb gcc-8.1.0/gcc/ada/a-ztcoau.adb
*** gcc-7.3.0/gcc/ada/a-ztcoau.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-ztcoau.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,202 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --    A D A . W I D E _ W I D E _ T E X T _ I O . C O M P L E X _ A U X     --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          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- --
- -- 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.Wide_Wide_Text_IO.Generic_Aux; use Ada.Wide_Wide_Text_IO.Generic_Aux;
- with Ada.Wide_Wide_Text_IO.Float_Aux;
- 
- with System.Img_Real; use System.Img_Real;
- 
- package body Ada.Wide_Wide_Text_IO.Complex_Aux is
- 
-    package Aux renames Ada.Wide_Wide_Text_IO.Float_Aux;
- 
-    ---------
-    -- Get --
-    ---------
- 
-    procedure Get
-      (File  : File_Type;
-       ItemR : out Long_Long_Float;
-       ItemI : out Long_Long_Float;
-       Width : Field)
-    is
-       Buf   : String (1 .. Field'Last);
-       Stop  : Integer := 0;
-       Ptr   : aliased Integer;
-       Paren : Boolean := False;
- 
-    begin
-       --  General note for following code, exceptions from the calls
-       --  to Get for components of the complex value are propagated.
- 
-       if Width /= 0 then
-          Load_Width (File, Width, Buf, Stop);
-          Gets (Buf (1 .. Stop), ItemR, ItemI, Ptr);
- 
-          for J in Ptr + 1 .. Stop loop
-             if not Is_Blank (Buf (J)) then
-                raise Data_Error;
-             end if;
-          end loop;
- 
-       --  Case of width = 0
- 
-       else
-          Load_Skip (File);
-          Ptr := 0;
-          Load (File, Buf, Ptr, '(', Paren);
-          Aux.Get (File, ItemR, 0);
-          Load_Skip (File);
-          Load (File, Buf, Ptr, ',');
-          Aux.Get (File, ItemI, 0);
- 
-          if Paren then
-             Load_Skip (File);
-             Load (File, Buf, Ptr, ')', Paren);
- 
-             if not Paren then
-                raise Data_Error;
-             end if;
-          end if;
-       end if;
-    end Get;
- 
-    ----------
-    -- Gets --
-    ----------
- 
-    procedure Gets
-      (From  : String;
-       ItemR : out Long_Long_Float;
-       ItemI : out Long_Long_Float;
-       Last  : out Positive)
-    is
-       Paren : Boolean;
-       Pos   : Integer;
- 
-    begin
-       String_Skip (From, Pos);
- 
-       if From (Pos) = '(' then
-          Pos := Pos + 1;
-          Paren := True;
-       else
-          Paren := False;
-       end if;
- 
-       Aux.Gets (From (Pos .. From'Last), ItemR, Pos);
- 
-       String_Skip (From (Pos + 1 .. From'Last), Pos);
- 
-       if From (Pos) = ',' then
-          Pos := Pos + 1;
-       end if;
- 
-       Aux.Gets (From (Pos .. From'Last), ItemI, Pos);
- 
-       if Paren then
-          String_Skip (From (Pos + 1 .. From'Last), Pos);
- 
-          if From (Pos) /= ')' then
-             raise Data_Error;
-          end if;
-       end if;
- 
-       Last := Pos;
-    end Gets;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put
-      (File  : File_Type;
-       ItemR : Long_Long_Float;
-       ItemI : Long_Long_Float;
-       Fore  : Field;
-       Aft   : Field;
-       Exp   : Field)
-    is
-    begin
-       Put (File, '(');
-       Aux.Put (File, ItemR, Fore, Aft, Exp);
-       Put (File, ',');
-       Aux.Put (File, ItemI, Fore, Aft, Exp);
-       Put (File, ')');
-    end Put;
- 
-    ----------
-    -- Puts --
-    ----------
- 
-    procedure Puts
-      (To    : out String;
-       ItemR : Long_Long_Float;
-       ItemI : Long_Long_Float;
-       Aft   :  Field;
-       Exp   :  Field)
-    is
-       I_String : String (1 .. 3 * Field'Last);
-       R_String : String (1 .. 3 * Field'Last);
- 
-       Iptr : Natural;
-       Rptr : Natural;
- 
-    begin
-       --  Both parts are initially converted with a Fore of 0
- 
-       Rptr := 0;
-       Set_Image_Real (ItemR, R_String, Rptr, 0, Aft, Exp);
-       Iptr := 0;
-       Set_Image_Real (ItemI, I_String, Iptr, 0, Aft, Exp);
- 
-       --  Check room for both parts plus parens plus comma (RM G.1.3(34))
- 
-       if Rptr + Iptr + 3 > To'Length then
-          raise Layout_Error;
-       end if;
- 
-       --  If there is room, layout result according to (RM G.1.3(31-33))
- 
-       To (To'First) := '(';
-       To (To'First + 1 .. To'First + Rptr) := R_String (1 .. Rptr);
-       To (To'First + Rptr + 1) := ',';
- 
-       To (To'Last) := ')';
- 
-       To (To'Last - Iptr .. To'Last - 1) := I_String (1 .. Iptr);
- 
-       for J in To'First + Rptr + 2 .. To'Last - Iptr - 1 loop
-          To (J) := ' ';
-       end loop;
-    end Puts;
- 
- end Ada.Wide_Wide_Text_IO.Complex_Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ztcoau.ads gcc-8.1.0/gcc/ada/a-ztcoau.ads
*** gcc-7.3.0/gcc/ada/a-ztcoau.ads	Thu Jul 17 06:35:13 2014
--- gcc-8.1.0/gcc/ada/a-ztcoau.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,53 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --    A D A . W I D E _ W I D E _ T E X T _ I O . C O M P L E X _ A U X     --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This package contains the routines for Ada.Wide_Wide_Text_IO.Complex_IO
- --  that are shared among separate instantiations of this package. The routines
- --  in this package are identical semantically to those in Complex_IO itself,
- --  except that the generic parameter Complex has been replaced by separate
- --  real and imaginary values of type Long_Long_Float, and default parameters
- --  have been removed because they are supplied explicitly by the calls from
- --  within the generic template.
- 
- package Ada.Wide_Wide_Text_IO.Complex_Aux is
- 
-    procedure Get
-      (File  : File_Type;
-       ItemR : out Long_Long_Float;
-       ItemI : out Long_Long_Float;
-       Width : Field);
- 
-    procedure Gets
-      (From  : String;
-       ItemR : out Long_Long_Float;
-       ItemI : out Long_Long_Float;
-       Last  : out Positive);
- 
-    procedure Put
-      (File  : File_Type;
-       ItemR : Long_Long_Float;
-       ItemI : Long_Long_Float;
-       Fore  : Field;
-       Aft   : Field;
-       Exp   : Field);
- 
-    procedure Puts
-      (To    : out String;
-       ItemR : Long_Long_Float;
-       ItemI : Long_Long_Float;
-       Aft   : Field;
-       Exp   : Field);
- 
- end Ada.Wide_Wide_Text_IO.Complex_Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ztcoio.adb gcc-8.1.0/gcc/ada/a-ztcoio.adb
*** gcc-7.3.0/gcc/ada/a-ztcoio.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-ztcoio.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,159 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --      A D A . W I D E _ W I D E _ T E X T _ IO . C O M P L E X _ I O      --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          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- --
- -- 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.Wide_Wide_Text_IO.Complex_Aux;
- 
- with System.WCh_Con; use System.WCh_Con;
- with System.WCh_WtS; use System.WCh_WtS;
- 
- with Ada.Unchecked_Conversion;
- 
- package body Ada.Wide_Wide_Text_IO.Complex_IO is
- 
-    package Aux renames Ada.Wide_Wide_Text_IO.Complex_Aux;
- 
-    subtype LLF is Long_Long_Float;
-    --  Type used for calls to routines in Aux
- 
-    function TFT is new
-      Ada.Unchecked_Conversion (File_Type, Ada.Wide_Wide_Text_IO.File_Type);
-    --  This unchecked conversion is to get around a visibility bug in
-    --  GNAT version 2.04w. It should be possible to simply use the
-    --  subtype declared above and do normal checked conversions.
- 
-    ---------
-    -- Get --
-    ---------
- 
-    procedure Get
-      (File  : File_Type;
-       Item  : out Complex;
-       Width : Field := 0)
-    is
-       Real_Item : Real'Base;
-       Imag_Item : Real'Base;
- 
-    begin
-       Aux.Get (TFT (File), LLF (Real_Item), LLF (Imag_Item), Width);
-       Item := (Real_Item, Imag_Item);
- 
-    exception
-       when Constraint_Error => raise Data_Error;
-    end Get;
- 
-    ---------
-    -- Get --
-    ---------
- 
-    procedure Get
-      (Item  : out Complex;
-       Width : Field := 0)
-    is
-    begin
-       Get (Current_Input, Item, Width);
-    end Get;
- 
-    ---------
-    -- Get --
-    ---------
- 
-    procedure Get
-      (From : Wide_Wide_String;
-       Item : out Complex;
-       Last : out Positive)
-    is
-       Real_Item : Real'Base;
-       Imag_Item : Real'Base;
- 
-       S : constant String := Wide_Wide_String_To_String (From, WCEM_Upper);
-       --  String on which we do the actual conversion. Note that the method
-       --  used for wide character encoding is irrelevant, since if there is
-       --  a character outside the Standard.Character range then the call to
-       --  Aux.Gets will raise Data_Error in any case.
- 
-    begin
-       Aux.Gets (S, LLF (Real_Item), LLF (Imag_Item), Last);
-       Item := (Real_Item, Imag_Item);
- 
-    exception
-       when Data_Error => raise Constraint_Error;
-    end Get;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put
-      (File : File_Type;
-       Item : Complex;
-       Fore : Field := Default_Fore;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp)
-    is
-    begin
-       Aux.Put (TFT (File), LLF (Re (Item)), LLF (Im (Item)), Fore, Aft, Exp);
-    end Put;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put
-      (Item : Complex;
-       Fore : Field := Default_Fore;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp)
-    is
-    begin
-       Put (Current_Output, Item, Fore, Aft, Exp);
-    end Put;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put
-      (To   : out Wide_Wide_String;
-       Item : Complex;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp)
-    is
-       S : String (To'First .. To'Last);
- 
-    begin
-       Aux.Puts (S, LLF (Re (Item)), LLF (Im (Item)), Aft, Exp);
- 
-       for J in S'Range loop
-          To (J) := Wide_Wide_Character'Val (Character'Pos (S (J)));
-       end loop;
-    end Put;
- 
- end Ada.Wide_Wide_Text_IO.Complex_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ztcoio.ads gcc-8.1.0/gcc/ada/a-ztcoio.ads
*** gcc-7.3.0/gcc/ada/a-ztcoio.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-ztcoio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,62 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --      A D A . W I D E _ W I D E _ T E X T _ IO . C O M P L E X _ I O      --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Numerics.Generic_Complex_Types;
- 
- generic
-    with package Complex_Types is new Ada.Numerics.Generic_Complex_Types (<>);
- 
- package Ada.Wide_Wide_Text_IO.Complex_IO is
- 
-    use Complex_Types;
- 
-    Default_Fore : Field := 2;
-    Default_Aft  : Field := Real'Digits - 1;
-    Default_Exp  : Field := 3;
- 
-    procedure Get
-      (File  : File_Type;
-       Item  : out Complex;
-       Width : Field := 0);
- 
-    procedure Get
-      (Item  : out Complex;
-       Width : Field := 0);
- 
-    procedure Put
-      (File : File_Type;
-       Item : Complex;
-       Fore : Field := Default_Fore;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp);
- 
-    procedure Put
-      (Item : Complex;
-       Fore : Field := Default_Fore;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp);
- 
-    procedure Get
-      (From : Wide_Wide_String;
-       Item : out Complex;
-       Last : out Positive);
- 
-    procedure Put
-      (To   : out Wide_Wide_String;
-       Item : Complex;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp);
- 
- end Ada.Wide_Wide_Text_IO.Complex_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ztcstr.adb gcc-8.1.0/gcc/ada/a-ztcstr.adb
*** gcc-7.3.0/gcc/ada/a-ztcstr.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-ztcstr.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,85 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                        GNAT RUN-TIME COMPONENTS                          --
- --                                                                          --
- --      A D A . W I D E _ W I D E _ T E X T _ I O . C _ S T R E A M S       --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          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- --
- -- 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 Interfaces.C_Streams; use Interfaces.C_Streams;
- with System.File_IO;
- with System.File_Control_Block;
- with Ada.Unchecked_Conversion;
- 
- package body Ada.Wide_Wide_Text_IO.C_Streams is
- 
-    package FIO renames System.File_IO;
-    package FCB renames System.File_Control_Block;
- 
-    subtype AP is FCB.AFCB_Ptr;
- 
-    function To_FCB is new Ada.Unchecked_Conversion (File_Mode, FCB.File_Mode);
- 
-    --------------
-    -- C_Stream --
-    --------------
- 
-    function C_Stream (F : File_Type) return FILEs is
-    begin
-       FIO.Check_File_Open (AP (F));
-       return F.Stream;
-    end C_Stream;
- 
-    ----------
-    -- Open --
-    ----------
- 
-    procedure Open
-      (File     : in out File_Type;
-       Mode     : File_Mode;
-       C_Stream : FILEs;
-       Form     : String := "";
-       Name     : String := "")
-    is
-       Dummy_File_Control_Block : Wide_Wide_Text_AFCB;
-       pragma Warnings (Off, Dummy_File_Control_Block);
-       --  Yes, we know this is never assigned a value, only the tag
-       --  is used for dispatching purposes, so that's expected.
- 
-    begin
-       FIO.Open (File_Ptr  => AP (File),
-                 Dummy_FCB => Dummy_File_Control_Block,
-                 Mode      => To_FCB (Mode),
-                 Name      => Name,
-                 Form      => Form,
-                 Amethod   => 'W',
-                 Creat     => False,
-                 Text      => True,
-                 C_Stream  => C_Stream);
- 
-    end Open;
- 
- end Ada.Wide_Wide_Text_IO.C_Streams;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ztcstr.ads gcc-8.1.0/gcc/ada/a-ztcstr.ads
*** gcc-7.3.0/gcc/ada/a-ztcstr.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-ztcstr.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,53 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --      A D A . W I D E _ W I D E _ T E X T _ I O . C _ S T R E A M S       --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          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- --
- -- 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 an interface between Ada.Wide_Wide_Text_IO and the
- --  C streams. This allows sharing of a stream between Ada and C or C++,
- --  as well as allowing the Ada program to operate directly on the stream.
- 
- with Interfaces.C_Streams;
- 
- package Ada.Wide_Wide_Text_IO.C_Streams is
- 
-    package ICS renames Interfaces.C_Streams;
- 
-    function C_Stream (F : File_Type) return ICS.FILEs;
-    --  Obtain stream from existing open file
- 
-    procedure Open
-      (File     : in out File_Type;
-       Mode     : File_Mode;
-       C_Stream : ICS.FILEs;
-       Form     : String := "";
-       Name     : String := "");
-    --  Create new file from existing stream
- 
- end Ada.Wide_Wide_Text_IO.C_Streams;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ztdeau.adb gcc-8.1.0/gcc/ada/a-ztdeau.adb
*** gcc-7.3.0/gcc/ada/a-ztdeau.adb	Fri Oct 30 13:27:40 2009
--- gcc-8.1.0/gcc/ada/a-ztdeau.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,263 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --    A D A . W I D E _ W I D E _ T E X T _ I O . D E C I M A L _ A U X     --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          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- --
- -- 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.Wide_Wide_Text_IO.Generic_Aux; use Ada.Wide_Wide_Text_IO.Generic_Aux;
- with Ada.Wide_Wide_Text_IO.Float_Aux;   use Ada.Wide_Wide_Text_IO.Float_Aux;
- 
- with System.Img_Dec; use System.Img_Dec;
- with System.Img_LLD; use System.Img_LLD;
- with System.Val_Dec; use System.Val_Dec;
- with System.Val_LLD; use System.Val_LLD;
- 
- package body Ada.Wide_Wide_Text_IO.Decimal_Aux is
- 
-    -------------
-    -- Get_Dec --
-    -------------
- 
-    function Get_Dec
-      (File  : File_Type;
-       Width : Field;
-       Scale : Integer) return Integer
-    is
-       Buf  : String (1 .. Field'Last);
-       Ptr  : aliased Integer;
-       Stop : Integer := 0;
-       Item : Integer;
- 
-    begin
-       if Width /= 0 then
-          Load_Width (File, Width, Buf, Stop);
-          String_Skip (Buf, Ptr);
-       else
-          Load_Real (File, Buf, Stop);
-          Ptr := 1;
-       end if;
- 
-       Item := Scan_Decimal (Buf, Ptr'Access, Stop, Scale);
-       Check_End_Of_Field (Buf, Stop, Ptr, Width);
-       return Item;
-    end Get_Dec;
- 
-    -------------
-    -- Get_LLD --
-    -------------
- 
-    function Get_LLD
-      (File  : File_Type;
-       Width : Field;
-       Scale : Integer) return Long_Long_Integer
-    is
-       Buf  : String (1 .. Field'Last);
-       Ptr  : aliased Integer;
-       Stop : Integer := 0;
-       Item : Long_Long_Integer;
- 
-    begin
-       if Width /= 0 then
-          Load_Width (File, Width, Buf, Stop);
-          String_Skip (Buf, Ptr);
-       else
-          Load_Real (File, Buf, Stop);
-          Ptr := 1;
-       end if;
- 
-       Item := Scan_Long_Long_Decimal (Buf, Ptr'Access, Stop, Scale);
-       Check_End_Of_Field (Buf, Stop, Ptr, Width);
-       return Item;
-    end Get_LLD;
- 
-    --------------
-    -- Gets_Dec --
-    --------------
- 
-    function Gets_Dec
-      (From  : String;
-       Last  : not null access Positive;
-       Scale : Integer) return Integer
-    is
-       Pos  : aliased Integer;
-       Item : Integer;
- 
-    begin
-       String_Skip (From, Pos);
-       Item := Scan_Decimal (From, Pos'Access, From'Last, Scale);
-       Last.all := Pos - 1;
-       return Item;
- 
-    exception
-       when Constraint_Error =>
-          Last.all := Pos - 1;
-          raise Data_Error;
- 
-    end Gets_Dec;
- 
-    --------------
-    -- Gets_LLD --
-    --------------
- 
-    function Gets_LLD
-      (From  : String;
-       Last  : not null access Positive;
-       Scale : Integer) return Long_Long_Integer
-    is
-       Pos  : aliased Integer;
-       Item : Long_Long_Integer;
- 
-    begin
-       String_Skip (From, Pos);
-       Item := Scan_Long_Long_Decimal (From, Pos'Access, From'Last, Scale);
-       Last.all := Pos - 1;
-       return Item;
- 
-    exception
-       when Constraint_Error =>
-          Last.all := Pos - 1;
-          raise Data_Error;
- 
-    end Gets_LLD;
- 
-    -------------
-    -- Put_Dec --
-    -------------
- 
-    procedure Put_Dec
-      (File  : File_Type;
-       Item  : Integer;
-       Fore  : Field;
-       Aft   : Field;
-       Exp   : Field;
-       Scale : Integer)
-    is
-       Buf : String (1 .. Field'Last);
-       Ptr : Natural := 0;
- 
-    begin
-       Set_Image_Decimal (Item, Buf, Ptr, Scale, Fore, Aft, Exp);
-       Put_Item (File, Buf (1 .. Ptr));
-    end Put_Dec;
- 
-    -------------
-    -- Put_LLD --
-    -------------
- 
-    procedure Put_LLD
-      (File  : File_Type;
-       Item  : Long_Long_Integer;
-       Fore  : Field;
-       Aft   : Field;
-       Exp   : Field;
-       Scale : Integer)
-    is
-       Buf : String (1 .. Field'Last);
-       Ptr : Natural := 0;
- 
-    begin
-       Set_Image_Long_Long_Decimal (Item, Buf, Ptr, Scale, Fore, Aft, Exp);
-       Put_Item (File, Buf (1 .. Ptr));
-    end Put_LLD;
- 
-    --------------
-    -- Puts_Dec --
-    --------------
- 
-    procedure Puts_Dec
-      (To    : out String;
-       Item  : Integer;
-       Aft   : Field;
-       Exp   : Field;
-       Scale : Integer)
-    is
-       Buf  : String (1 .. Field'Last);
-       Fore : Integer;
-       Ptr  : Natural := 0;
- 
-    begin
-       --  Compute Fore, allowing for Aft digits and the decimal dot
- 
-       Fore := To'Length - Field'Max (1, Aft) - 1;
- 
-       --  Allow for Exp and two more for E+ or E- if exponent present
- 
-       if Exp /= 0 then
-          Fore := Fore - 2 - Exp;
-       end if;
- 
-       --  Make sure we have enough room
- 
-       if Fore < 1 then
-          raise Layout_Error;
-       end if;
- 
-       --  Do the conversion and check length of result
- 
-       Set_Image_Decimal (Item, Buf, Ptr, Scale, Fore, Aft, Exp);
- 
-       if Ptr > To'Length then
-          raise Layout_Error;
-       else
-          To := Buf (1 .. Ptr);
-       end if;
-    end Puts_Dec;
- 
-    --------------
-    -- Puts_Dec --
-    --------------
- 
-    procedure Puts_LLD
-      (To    : out String;
-       Item  : Long_Long_Integer;
-       Aft   : Field;
-       Exp   : Field;
-       Scale : Integer)
-    is
-       Buf  : String (1 .. Field'Last);
-       Fore : Integer;
-       Ptr  : Natural := 0;
- 
-    begin
-       Fore :=
-         (if Exp = 0 then To'Length - 1 - Aft else To'Length - 2 - Aft - Exp);
- 
-       if Fore < 1 then
-          raise Layout_Error;
-       end if;
- 
-       Set_Image_Long_Long_Decimal (Item, Buf, Ptr, Scale, Fore, Aft, Exp);
- 
-       if Ptr > To'Length then
-          raise Layout_Error;
-       else
-          To := Buf (1 .. Ptr);
-       end if;
-    end Puts_LLD;
- 
- end Ada.Wide_Wide_Text_IO.Decimal_Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ztdeau.ads gcc-8.1.0/gcc/ada/a-ztdeau.ads
*** gcc-7.3.0/gcc/ada/a-ztdeau.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-ztdeau.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,93 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --    A D A . W I D E _ W I D E _ T E X T _ I O . D E C I M A L _ A U X     --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          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- --
- -- 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 routines for Ada.Wide_Wide_Text_IO.Decimal_IO
- --  that are shared among separate instantiations of this package. The
- --  routines in the package are identical semantically to those declared
- --  in Wide_Wide_Text_IO, except that default values have been supplied by the
- --  generic, and the Num parameter has been replaced by Integer or
- --  Long_Long_Integer, with an additional Scale parameter giving the
- --  value of Num'Scale. In addition the Get routines return the value
- --  rather than store it in an Out parameter.
- 
- private package Ada.Wide_Wide_Text_IO.Decimal_Aux is
- 
-    function Get_Dec
-      (File  : File_Type;
-       Width : Field;
-       Scale : Integer) return Integer;
- 
-    function Get_LLD
-      (File  : File_Type;
-       Width : Field;
-       Scale : Integer) return Long_Long_Integer;
- 
-    function Gets_Dec
-      (From  : String;
-       Last  : not null access Positive;
-       Scale : Integer) return Integer;
- 
-    function Gets_LLD
-      (From  : String;
-       Last  : not null access Positive;
-       Scale : Integer) return Long_Long_Integer;
- 
-    procedure Put_Dec
-      (File  : File_Type;
-       Item  : Integer;
-       Fore  : Field;
-       Aft   : Field;
-       Exp   : Field;
-       Scale : Integer);
- 
-    procedure Put_LLD
-      (File  : File_Type;
-       Item  : Long_Long_Integer;
-       Fore  : Field;
-       Aft   : Field;
-       Exp   : Field;
-       Scale : Integer);
- 
-    procedure Puts_Dec
-      (To    : out String;
-       Item  : Integer;
-       Aft   : Field;
-       Exp   : Field;
-       Scale : Integer);
- 
-    procedure Puts_LLD
-      (To    : out String;
-       Item  : Long_Long_Integer;
-       Aft   : Field;
-       Exp   : Field;
-       Scale : Integer);
- 
- end Ada.Wide_Wide_Text_IO.Decimal_Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ztdeio.adb gcc-8.1.0/gcc/ada/a-ztdeio.adb
*** gcc-7.3.0/gcc/ada/a-ztdeio.adb	Fri Oct 30 13:27:40 2009
--- gcc-8.1.0/gcc/ada/a-ztdeio.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,164 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --      A D A . W I D E _ W I D E _ T E X T _ I O . D E C I M A L _ I O     --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          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- --
- -- 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.Wide_Wide_Text_IO.Decimal_Aux;
- 
- with System.WCh_Con; use System.WCh_Con;
- with System.WCh_WtS; use System.WCh_WtS;
- 
- package body Ada.Wide_Wide_Text_IO.Decimal_IO is
- 
-    subtype TFT is Ada.Wide_Wide_Text_IO.File_Type;
-    --  File type required for calls to routines in Aux
- 
-    package Aux renames Ada.Wide_Wide_Text_IO.Decimal_Aux;
- 
-    Scale : constant Integer := Num'Scale;
- 
-    ---------
-    -- Get --
-    ---------
- 
-    procedure Get
-      (File  : File_Type;
-       Item  : out Num;
-       Width : Field := 0)
-    is
-    begin
-       if Num'Size > Integer'Size then
-          Item := Num'Fixed_Value (Aux.Get_LLD (TFT (File), Width, Scale));
-       else
-          Item := Num'Fixed_Value (Aux.Get_Dec (TFT (File), Width, Scale));
-       end if;
-    exception
-       when Constraint_Error => raise Data_Error;
-    end Get;
- 
-    procedure Get
-      (Item  : out Num;
-       Width : Field := 0)
-    is
-    begin
-       Get (Current_Input, Item, Width);
-    end Get;
- 
-    procedure Get
-      (From : Wide_Wide_String;
-       Item : out Num;
-       Last : out Positive)
-    is
-       S : constant String := Wide_Wide_String_To_String (From, WCEM_Upper);
-       --  String on which we do the actual conversion. Note that the method
-       --  used for wide character encoding is irrelevant, since if there is
-       --  a character outside the Standard.Character range then the call to
-       --  Aux.Gets will raise Data_Error in any case.
- 
-    begin
-       if Num'Size > Integer'Size then
-          --  Item := Num'Fixed_Value
-          --  should write above, but gets assert error ???
-          Item := Num
-                    (Aux.Gets_LLD (S, Last'Unrestricted_Access, Scale));
-       else
-          --  Item := Num'Fixed_Value
-          --  should write above, but gets assert error ???
-          Item := Num
-                    (Aux.Gets_Dec (S, Last'Unrestricted_Access, Scale));
-       end if;
- 
-    exception
-       when Constraint_Error => raise Data_Error;
-    end Get;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put
-      (File : File_Type;
-       Item : Num;
-       Fore : Field := Default_Fore;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp)
-    is
-    begin
-       if Num'Size > Integer'Size then
-          Aux.Put_LLD
- --           (TFT (File), Long_Long_Integer'Integer_Value (Item),
- --  ???
-            (TFT (File), Long_Long_Integer (Item),
-             Fore, Aft, Exp, Scale);
-       else
-          Aux.Put_Dec
- --           (TFT (File), Integer'Integer_Value (Item), Fore, Aft, Exp, Scale);
- --  ???
-            (TFT (File), Integer (Item), Fore, Aft, Exp, Scale);
- 
-       end if;
-    end Put;
- 
-    procedure Put
-      (Item : Num;
-       Fore : Field := Default_Fore;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp)
-    is
-    begin
-       Put (Current_Output, Item, Fore, Aft, Exp);
-    end Put;
- 
-    procedure Put
-      (To   : out Wide_Wide_String;
-       Item : Num;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp)
-    is
-       S : String (To'First .. To'Last);
- 
-    begin
-       if Num'Size > Integer'Size then
- --       Aux.Puts_LLD
- --         (S, Long_Long_Integer'Integer_Value (Item), Aft, Exp, Scale);
- --  ???
-          Aux.Puts_LLD
-            (S, Long_Long_Integer (Item), Aft, Exp, Scale);
-       else
- --       Aux.Puts_Dec (S, Integer'Integer_Value (Item), Aft, Exp, Scale);
- --  ???
-          Aux.Puts_Dec (S, Integer (Item), Aft, Exp, Scale);
-       end if;
- 
-       for J in S'Range loop
-          To (J) := Wide_Wide_Character'Val (Character'Pos (S (J)));
-       end loop;
-    end Put;
- 
- end Ada.Wide_Wide_Text_IO.Decimal_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ztdeio.ads gcc-8.1.0/gcc/ada/a-ztdeio.ads
*** gcc-7.3.0/gcc/ada/a-ztdeio.ads	Thu Jul 17 06:35:13 2014
--- gcc-8.1.0/gcc/ada/a-ztdeio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,64 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --      A D A . W I D E _ W I D E _ T E X T _ I O . D E C I M A L _ I O     --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  In Ada 95, the package Ada.Wide_Wide_Text_IO.Decimal_IO is a subpackage
- --  of Wide_Wide_Text_IO. In GNAT we make it a child package to avoid loading
- --  the necessary code if Decimal_IO is not instantiated. See the routine
- --  Rtsfind.Check_Text_IO_Special_Unit for a description of how we patch up
- --  the difference in semantics so that it is invisible to the Ada programmer.
- 
- private generic
-    type Num is delta <> digits <>;
- 
- package Ada.Wide_Wide_Text_IO.Decimal_IO is
- 
-    Default_Fore : Field := 2;
-    Default_Aft  : Field := Num'Digits - 1;
-    Default_Exp  : Field := 3;
- 
-    procedure Get
-      (File  : File_Type;
-       Item  : out Num;
-       Width : Field := 0);
- 
-    procedure Get
-      (Item  : out Num;
-       Width : Field := 0);
- 
-    procedure Put
-      (File : File_Type;
-       Item : Num;
-       Fore : Field := Default_Fore;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp);
- 
-    procedure Put
-      (Item : Num;
-       Fore : Field := Default_Fore;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp);
- 
-    procedure Get
-      (From : Wide_Wide_String;
-       Item : out Num;
-       Last : out Positive);
- 
-    procedure Put
-      (To   : out Wide_Wide_String;
-       Item : Num;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp);
- 
- end Ada.Wide_Wide_Text_IO.Decimal_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ztedit.adb gcc-8.1.0/gcc/ada/a-ztedit.adb
*** gcc-7.3.0/gcc/ada/a-ztedit.adb	Fri Jan 13 10:19:19 2017
--- gcc-8.1.0/gcc/ada/a-ztedit.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,2712 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                        GNAT RUN-TIME COMPONENTS                          --
- --                                                                          --
- --        A D A . W I D E _ W I D E _ T E X T _ I O . E D I T I N G         --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Strings.Fixed;
- with Ada.Strings.Wide_Wide_Fixed;
- 
- package body Ada.Wide_Wide_Text_IO.Editing is
- 
-    package Strings            renames Ada.Strings;
-    package Strings_Fixed      renames Ada.Strings.Fixed;
-    package Strings_Wide_Wide_Fixed renames Ada.Strings.Wide_Wide_Fixed;
-    package Wide_Wide_Text_IO       renames Ada.Wide_Wide_Text_IO;
- 
-    -----------------------
-    -- Local_Subprograms --
-    -----------------------
- 
-    function To_Wide (C : Character) return Wide_Wide_Character;
-    pragma Inline (To_Wide);
-    --  Convert Character to corresponding Wide_Wide_Character
- 
-    ---------------------
-    -- Blank_When_Zero --
-    ---------------------
- 
-    function Blank_When_Zero (Pic : Picture) return Boolean is
-    begin
-       return Pic.Contents.Original_BWZ;
-    end Blank_When_Zero;
- 
-    --------------------
-    -- Decimal_Output --
-    --------------------
- 
-    package body Decimal_Output is
- 
-       -----------
-       -- Image --
-       -----------
- 
-       function Image
-         (Item       : Num;
-          Pic        : Picture;
-          Currency   : Wide_Wide_String    := Default_Currency;
-          Fill       : Wide_Wide_Character := Default_Fill;
-          Separator  : Wide_Wide_Character := Default_Separator;
-          Radix_Mark : Wide_Wide_Character := Default_Radix_Mark)
-          return Wide_Wide_String
-       is
-       begin
-          return Format_Number
-             (Pic.Contents, Num'Image (Item),
-              Currency, Fill, Separator, Radix_Mark);
-       end Image;
- 
-       ------------
-       -- Length --
-       ------------
- 
-       function Length
-         (Pic      : Picture;
-          Currency : Wide_Wide_String := Default_Currency) return Natural
-       is
-          Picstr     : constant String := Pic_String (Pic);
-          V_Adjust   : Integer := 0;
-          Cur_Adjust : Integer := 0;
- 
-       begin
-          --  Check if Picstr has 'V' or '$'
- 
-          --  If 'V', then length is 1 less than otherwise
- 
-          --  If '$', then length is Currency'Length-1 more than otherwise
- 
-          --  This should use the string handling package ???
- 
-          for J in Picstr'Range loop
-             if Picstr (J) = 'V' then
-                V_Adjust := -1;
- 
-             elsif Picstr (J) = '$' then
-                Cur_Adjust := Currency'Length - 1;
-             end if;
-          end loop;
- 
-          return Picstr'Length - V_Adjust + Cur_Adjust;
-       end Length;
- 
-       ---------
-       -- Put --
-       ---------
- 
-       procedure Put
-         (File       : Wide_Wide_Text_IO.File_Type;
-          Item       : Num;
-          Pic        : Picture;
-          Currency   : Wide_Wide_String    := Default_Currency;
-          Fill       : Wide_Wide_Character := Default_Fill;
-          Separator  : Wide_Wide_Character := Default_Separator;
-          Radix_Mark : Wide_Wide_Character := Default_Radix_Mark)
-       is
-       begin
-          Wide_Wide_Text_IO.Put (File, Image (Item, Pic,
-                                    Currency, Fill, Separator, Radix_Mark));
-       end Put;
- 
-       procedure Put
-         (Item       : Num;
-          Pic        : Picture;
-          Currency   : Wide_Wide_String    := Default_Currency;
-          Fill       : Wide_Wide_Character := Default_Fill;
-          Separator  : Wide_Wide_Character := Default_Separator;
-          Radix_Mark : Wide_Wide_Character := Default_Radix_Mark)
-       is
-       begin
-          Wide_Wide_Text_IO.Put (Image (Item, Pic,
-                              Currency, Fill, Separator, Radix_Mark));
-       end Put;
- 
-       procedure Put
-         (To         : out Wide_Wide_String;
-          Item       : Num;
-          Pic        : Picture;
-          Currency   : Wide_Wide_String    := Default_Currency;
-          Fill       : Wide_Wide_Character := Default_Fill;
-          Separator  : Wide_Wide_Character := Default_Separator;
-          Radix_Mark : Wide_Wide_Character := Default_Radix_Mark)
-       is
-          Result : constant Wide_Wide_String :=
-            Image (Item, Pic, Currency, Fill, Separator, Radix_Mark);
- 
-       begin
-          if Result'Length > To'Length then
-             raise Wide_Wide_Text_IO.Layout_Error;
-          else
-             Strings_Wide_Wide_Fixed.Move (Source => Result, Target => To,
-                                      Justify => Strings.Right);
-          end if;
-       end Put;
- 
-       -----------
-       -- Valid --
-       -----------
- 
-       function Valid
-         (Item     : Num;
-          Pic      : Picture;
-          Currency : Wide_Wide_String := Default_Currency) return Boolean
-       is
-       begin
-          declare
-             Temp : constant Wide_Wide_String := Image (Item, Pic, Currency);
-             pragma Warnings (Off, Temp);
-          begin
-             return True;
-          end;
- 
-       exception
-          when Layout_Error => return False;
- 
-       end Valid;
-    end Decimal_Output;
- 
-    ------------
-    -- Expand --
-    ------------
- 
-    function Expand (Picture : String) return String is
-       Result        : String (1 .. MAX_PICSIZE);
-       Picture_Index : Integer := Picture'First;
-       Result_Index  : Integer := Result'First;
-       Count         : Natural;
-       Last          : Integer;
- 
-    begin
-       if Picture'Length < 1 then
-          raise Picture_Error;
-       end if;
- 
-       if Picture (Picture'First) = '(' then
-          raise Picture_Error;
-       end if;
- 
-       loop
-          case Picture (Picture_Index) is
-             when '(' =>
- 
-                --  We now need to scan out the count after a left paren. In
-                --  the non-wide version we used Integer_IO.Get, but that is
-                --  not convenient here, since we don't want to drag in normal
-                --  Text_IO just for this purpose. So we do the scan ourselves,
-                --  with the normal validity checks.
- 
-                Last := Picture_Index + 1;
-                Count := 0;
- 
-                if Picture (Last) not in '0' .. '9' then
-                   raise Picture_Error;
-                end if;
- 
-                Count := Character'Pos (Picture (Last)) - Character'Pos ('0');
-                Last := Last + 1;
- 
-                loop
-                   if Last > Picture'Last then
-                      raise Picture_Error;
-                   end if;
- 
-                   if Picture (Last) = '_' then
-                      if Picture (Last - 1) = '_' then
-                         raise Picture_Error;
-                      end if;
- 
-                   elsif Picture (Last) = ')' then
-                      exit;
- 
-                   elsif Picture (Last) not in '0' .. '9' then
-                      raise Picture_Error;
- 
-                   else
-                      Count := Count * 10
-                                 +  Character'Pos (Picture (Last)) -
-                                    Character'Pos ('0');
-                   end if;
- 
-                   Last := Last + 1;
-                end loop;
- 
-                --  In what follows note that one copy of the repeated
-                --  character has already been made, so a count of one is
-                --  no-op, and a count of zero erases a character.
- 
-                for J in 2 .. Count loop
-                   Result (Result_Index + J - 2) := Picture (Picture_Index - 1);
-                end loop;
- 
-                Result_Index := Result_Index + Count - 1;
- 
-                --  Last was a ')' throw it away too
- 
-                Picture_Index := Last + 1;
- 
-             when ')' =>
-                raise Picture_Error;
- 
-             when others =>
-                Result (Result_Index) := Picture (Picture_Index);
-                Picture_Index := Picture_Index + 1;
-                Result_Index := Result_Index + 1;
-          end case;
- 
-          exit when Picture_Index > Picture'Last;
-       end loop;
- 
-       return Result (1 .. Result_Index - 1);
- 
-    exception
-       when others =>
-          raise Picture_Error;
-    end Expand;
- 
-    -------------------
-    -- Format_Number --
-    -------------------
- 
-    function Format_Number
-      (Pic                 : Format_Record;
-       Number              : String;
-       Currency_Symbol     : Wide_Wide_String;
-       Fill_Character      : Wide_Wide_Character;
-       Separator_Character : Wide_Wide_Character;
-       Radix_Point         : Wide_Wide_Character) return Wide_Wide_String
-    is
-       Attrs    : Number_Attributes := Parse_Number_String (Number);
-       Position : Integer;
-       Rounded  : String := Number;
- 
-       Sign_Position : Integer := Pic.Sign_Position; --  may float.
- 
-       Answer       : Wide_Wide_String (1 .. Pic.Picture.Length);
-       Last         : Integer;
-       Currency_Pos : Integer := Pic.Start_Currency;
- 
-       Dollar : Boolean := False;
-       --  Overridden immediately if necessary
- 
-       Zero : Boolean := True;
-       --  Set to False when a non-zero digit is output
- 
-    begin
- 
-       --  If the picture has fewer decimal places than the number, the image
-       --  must be rounded according to the usual rules.
- 
-       if Attrs.Has_Fraction then
-          declare
-             R : constant Integer :=
-               (Attrs.End_Of_Fraction - Attrs.Start_Of_Fraction + 1)
-                 - Pic.Max_Trailing_Digits;
-             R_Pos : Integer;
- 
-          begin
-             if R > 0 then
-                R_Pos := Rounded'Length - R;
- 
-                if Rounded (R_Pos + 1) > '4' then
- 
-                   if Rounded (R_Pos) = '.' then
-                      R_Pos := R_Pos - 1;
-                   end if;
- 
-                   if Rounded (R_Pos) /= '9' then
-                      Rounded (R_Pos) := Character'Succ (Rounded (R_Pos));
-                   else
-                      Rounded (R_Pos) := '0';
-                      R_Pos := R_Pos - 1;
- 
-                      while R_Pos > 1 loop
-                         if Rounded (R_Pos) = '.' then
-                            R_Pos := R_Pos - 1;
-                         end if;
- 
-                         if Rounded (R_Pos) /= '9' then
-                            Rounded (R_Pos) := Character'Succ (Rounded (R_Pos));
-                            exit;
-                         else
-                            Rounded (R_Pos) := '0';
-                            R_Pos := R_Pos - 1;
-                         end if;
-                      end loop;
- 
-                      --  The rounding may add a digit in front. Either the
-                      --  leading blank or the sign (already captured) can be
-                      --  overwritten.
- 
-                      if R_Pos = 1 then
-                         Rounded (R_Pos) := '1';
-                         Attrs.Start_Of_Int := Attrs.Start_Of_Int - 1;
-                      end if;
-                   end if;
-                end if;
-             end if;
-          end;
-       end if;
- 
-       for J in Answer'Range loop
-          Answer (J) := To_Wide (Pic.Picture.Expanded (J));
-       end loop;
- 
-       if Pic.Start_Currency /= Invalid_Position then
-          Dollar := Answer (Pic.Start_Currency) = '$';
-       end if;
- 
-       --  Fix up "direct inserts" outside the playing field. Set up as one
-       --  loop to do the beginning, one (reverse) loop to do the end.
- 
-       Last := 1;
-       loop
-          exit when Last = Pic.Start_Float;
-          exit when Last = Pic.Radix_Position;
-          exit when Answer (Last) = '9';
- 
-          case Answer (Last) is
-             when '_' =>
-                Answer (Last) := Separator_Character;
- 
-             when 'b' =>
-                Answer (Last) := ' ';
- 
-             when others =>
-                null;
-          end case;
- 
-          exit when Last = Answer'Last;
- 
-          Last := Last + 1;
-       end loop;
- 
-       --  Now for the end...
- 
-       for J in reverse Last .. Answer'Last loop
-          exit when J = Pic.Radix_Position;
- 
-          --  Do this test First, Separator_Character can equal Pic.Floater
- 
-          if Answer (J) = Pic.Floater then
-             exit;
-          end if;
- 
-          case Answer (J) is
-             when '_' =>
-                Answer (J) := Separator_Character;
- 
-             when 'b' =>
-                Answer (J) := ' ';
- 
-             when '9' =>
-                exit;
- 
-             when others =>
-                null;
-          end case;
-       end loop;
- 
-       --  Non-floating sign
- 
-       if Pic.Start_Currency /= -1
-         and then Answer (Pic.Start_Currency) = '#'
-         and then Pic.Floater /= '#'
-       then
-          if Currency_Symbol'Length >
-             Pic.End_Currency - Pic.Start_Currency + 1
-          then
-             raise Picture_Error;
- 
-          elsif Currency_Symbol'Length =
-             Pic.End_Currency - Pic.Start_Currency + 1
-          then
-             Answer (Pic.Start_Currency .. Pic.End_Currency) :=
-               Currency_Symbol;
- 
-          elsif Pic.Radix_Position = Invalid_Position
-            or else Pic.Start_Currency < Pic.Radix_Position
-          then
-             Answer (Pic.Start_Currency .. Pic.End_Currency) :=
-                                                         (others => ' ');
-             Answer (Pic.End_Currency - Currency_Symbol'Length + 1 ..
-                     Pic.End_Currency) := Currency_Symbol;
- 
-          else
-             Answer (Pic.Start_Currency .. Pic.End_Currency) :=
-                                                         (others => ' ');
-             Answer (Pic.Start_Currency ..
-                     Pic.Start_Currency + Currency_Symbol'Length - 1) :=
-                                                         Currency_Symbol;
-          end if;
-       end if;
- 
-       --  Fill in leading digits
- 
-       if Attrs.End_Of_Int - Attrs.Start_Of_Int + 1 >
-                                                 Pic.Max_Leading_Digits
-       then
-          raise Layout_Error;
-       end if;
- 
-       Position :=
-         (if Pic.Radix_Position = Invalid_Position then Answer'Last
-          else Pic.Radix_Position - 1);
- 
-       for J in reverse Attrs.Start_Of_Int .. Attrs.End_Of_Int loop
-          while Answer (Position) /= '9'
-                  and then
-                Answer (Position) /= Pic.Floater
-          loop
-             if Answer (Position) = '_' then
-                Answer (Position) := Separator_Character;
-             elsif Answer (Position) = 'b' then
-                Answer (Position) := ' ';
-             end if;
- 
-             Position := Position - 1;
-          end loop;
- 
-          Answer (Position) := To_Wide (Rounded (J));
- 
-          if Rounded (J) /= '0' then
-             Zero := False;
-          end if;
- 
-          Position := Position - 1;
-       end loop;
- 
-       --  Do lead float
- 
-       if Pic.Start_Float = Invalid_Position then
- 
-          --  No leading floats, but need to change '9' to '0', '_' to
-          --  Separator_Character and 'b' to ' '.
- 
-          for J in Last .. Position loop
- 
-             --  Last set when fixing the "uninteresting" leaders above.
-             --  Don't duplicate the work.
- 
-             if Answer (J) = '9' then
-                Answer (J) := '0';
- 
-             elsif Answer (J) = '_' then
-                Answer (J) := Separator_Character;
- 
-             elsif Answer (J) = 'b' then
-                Answer (J) := ' ';
- 
-             end if;
- 
-          end loop;
- 
-       elsif Pic.Floater = '<'
-               or else
-             Pic.Floater = '+'
-               or else
-             Pic.Floater = '-'
-       then
-          for J in Pic.End_Float .. Position loop --  May be null range
-             if Answer (J) = '9' then
-                Answer (J) := '0';
- 
-             elsif Answer (J) = '_' then
-                Answer (J) := Separator_Character;
- 
-             elsif Answer (J) = 'b' then
-                Answer (J) := ' ';
- 
-             end if;
-          end loop;
- 
-          if Position > Pic.End_Float then
-             Position := Pic.End_Float;
-          end if;
- 
-          for J in Pic.Start_Float .. Position - 1 loop
-             Answer (J) := ' ';
-          end loop;
- 
-          Answer (Position) := Pic.Floater;
-          Sign_Position     := Position;
- 
-       elsif Pic.Floater = '$' then
- 
-          for J in Pic.End_Float .. Position loop --  May be null range
-             if Answer (J) = '9' then
-                Answer (J) := '0';
- 
-             elsif Answer (J) = '_' then
-                Answer (J) := ' ';   --  no separator before leftmost digit
- 
-             elsif Answer (J) = 'b' then
-                Answer (J) := ' ';
-             end if;
-          end loop;
- 
-          if Position > Pic.End_Float then
-             Position := Pic.End_Float;
-          end if;
- 
-          for J in Pic.Start_Float .. Position - 1 loop
-             Answer (J) := ' ';
-          end loop;
- 
-          Answer (Position) := Pic.Floater;
-          Currency_Pos      := Position;
- 
-       elsif Pic.Floater = '*' then
- 
-          for J in Pic.End_Float .. Position loop --  May be null range
-             if Answer (J) = '9' then
-                Answer (J) := '0';
- 
-             elsif Answer (J) = '_' then
-                Answer (J) := Separator_Character;
- 
-             elsif Answer (J) = 'b' then
-                Answer (J) := '*';
-             end if;
-          end loop;
- 
-          if Position > Pic.End_Float then
-             Position := Pic.End_Float;
-          end if;
- 
-          for J in Pic.Start_Float .. Position loop
-             Answer (J) := '*';
-          end loop;
- 
-       else
-          if Pic.Floater = '#' then
-             Currency_Pos := Currency_Symbol'Length;
-          end if;
- 
-          for J in reverse Pic.Start_Float .. Position loop
-             case Answer (J) is
-                when '*' =>
-                   Answer (J) := Fill_Character;
- 
-                when 'Z' | 'b' | '/' | '0' =>
-                   Answer (J) := ' ';
- 
-                when '9' =>
-                   Answer (J) := '0';
- 
-                when '.' | 'V' | 'v' | '<' | '$' | '+' | '-' =>
-                   null;
- 
-                when '#' =>
-                   if Currency_Pos = 0 then
-                      Answer (J) := ' ';
-                   else
-                      Answer (J)   := Currency_Symbol (Currency_Pos);
-                      Currency_Pos := Currency_Pos - 1;
-                   end if;
- 
-                when '_' =>
-                   case Pic.Floater is
-                      when '*' =>
-                         Answer (J) := Fill_Character;
- 
-                      when 'Z' | 'b' =>
-                         Answer (J) := ' ';
- 
-                      when '#' =>
-                         if Currency_Pos = 0 then
-                            Answer (J) := ' ';
- 
-                         else
-                            Answer (J)   := Currency_Symbol (Currency_Pos);
-                            Currency_Pos := Currency_Pos - 1;
-                         end if;
- 
-                      when others =>
-                         null;
-                   end case;
- 
-                when others =>
-                   null;
-             end case;
-          end loop;
- 
-          if Pic.Floater = '#' and then Currency_Pos /= 0 then
-             raise Layout_Error;
-          end if;
-       end if;
- 
-       --  Do sign
- 
-       if Sign_Position = Invalid_Position then
-          if Attrs.Negative then
-             raise Layout_Error;
-          end if;
- 
-       else
-          if Attrs.Negative then
-             case Answer (Sign_Position) is
-                when 'C' | 'D' | '-' =>
-                   null;
- 
-                when '+' =>
-                   Answer (Sign_Position) := '-';
- 
-                when '<' =>
-                   Answer (Sign_Position)   := '(';
-                   Answer (Pic.Second_Sign) := ')';
- 
-                when others =>
-                   raise Picture_Error;
-             end case;
- 
-          else --  positive
- 
-             case Answer (Sign_Position) is
-                when '-' =>
-                   Answer (Sign_Position) := ' ';
- 
-                when '<' | 'C' | 'D' =>
-                   Answer (Sign_Position)   := ' ';
-                   Answer (Pic.Second_Sign) := ' ';
- 
-                when '+' =>
-                   null;
- 
-                when others =>
-                   raise Picture_Error;
-             end case;
-          end if;
-       end if;
- 
-       --  Fill in trailing digits
- 
-       if Pic.Max_Trailing_Digits > 0 then
-          if Attrs.Has_Fraction then
-             Position := Attrs.Start_Of_Fraction;
-             Last     := Pic.Radix_Position + 1;
- 
-             for J in Last .. Answer'Last loop
-                if Answer (J) = '9' or else Answer (J) = Pic.Floater then
-                   Answer (J) := To_Wide (Rounded (Position));
- 
-                   if Rounded (Position) /= '0' then
-                      Zero := False;
-                   end if;
- 
-                   Position := Position + 1;
-                   Last     := J + 1;
- 
-                   --  Used up fraction but remember place in Answer
- 
-                   exit when Position > Attrs.End_Of_Fraction;
- 
-                elsif Answer (J) = 'b' then
-                   Answer (J) := ' ';
- 
-                elsif Answer (J) = '_' then
-                   Answer (J) := Separator_Character;
-                end if;
- 
-                Last := J + 1;
-             end loop;
- 
-             Position := Last;
- 
-          else
-             Position := Pic.Radix_Position + 1;
-          end if;
- 
-          --  Now fill remaining 9's with zeros and _ with separators
- 
-          Last := Answer'Last;
- 
-          for J in Position .. Last loop
-             if Answer (J) = '9' then
-                Answer (J) := '0';
- 
-             elsif Answer (J) = Pic.Floater then
-                Answer (J) := '0';
- 
-             elsif Answer (J) = '_' then
-                Answer (J) := Separator_Character;
- 
-             elsif Answer (J) = 'b' then
-                Answer (J) := ' ';
-             end if;
-          end loop;
- 
-          Position := Last + 1;
- 
-       else
-          if Pic.Floater = '#' and then Currency_Pos /= 0 then
-             raise Layout_Error;
-          end if;
- 
-          --  No trailing digits, but now J may need to stick in a currency
-          --  symbol or sign.
- 
-          Position :=
-            (if Pic.Start_Currency = Invalid_Position then Answer'Last + 1
-             else Pic.Start_Currency);
-       end if;
- 
-       for J in Position .. Answer'Last loop
-          if Pic.Start_Currency /= Invalid_Position
-            and then Answer (Pic.Start_Currency) = '#'
-          then
-             Currency_Pos := 1;
-          end if;
- 
-          --  Note: There are some weird cases J can imagine with 'b' or '#'
-          --  in currency strings where the following code will cause
-          --  glitches. The trick is to tell when the character in the
-          --  answer should be checked, and when to look at the original
-          --  string. Some other time. RIE 11/26/96 ???
- 
-          case Answer (J) is
-             when '*' =>
-                Answer (J) := Fill_Character;
- 
-             when 'b' =>
-                Answer (J) := ' ';
- 
-             when '#' =>
-                if Currency_Pos > Currency_Symbol'Length then
-                   Answer (J) := ' ';
- 
-                else
-                   Answer (J)   := Currency_Symbol (Currency_Pos);
-                   Currency_Pos := Currency_Pos + 1;
-                end if;
- 
-             when '_' =>
-                case Pic.Floater is
-                   when '*' =>
-                      Answer (J) := Fill_Character;
- 
-                   when 'Z' | 'z' =>
-                      Answer (J) := ' ';
- 
-                   when '#' =>
-                      if Currency_Pos > Currency_Symbol'Length then
-                         Answer (J) := ' ';
-                      else
-                         Answer (J)   := Currency_Symbol (Currency_Pos);
-                         Currency_Pos := Currency_Pos + 1;
-                      end if;
- 
-                   when others =>
-                      null;
-                end case;
- 
-             when others =>
-                exit;
-          end case;
-       end loop;
- 
-       --  Now get rid of Blank_when_Zero and complete Star fill
- 
-       if Zero and then Pic.Blank_When_Zero then
- 
-          --  Value is zero, and blank it
- 
-          Last := Answer'Last;
- 
-          if Dollar then
-             Last := Last - 1 + Currency_Symbol'Length;
-          end if;
- 
-          if Pic.Radix_Position /= Invalid_Position
-            and then Answer (Pic.Radix_Position) = 'V'
-          then
-             Last := Last - 1;
-          end if;
- 
-          return Wide_Wide_String'(1 .. Last => ' ');
- 
-       elsif Zero and then Pic.Star_Fill then
-          Last := Answer'Last;
- 
-          if Dollar then
-             Last := Last - 1 + Currency_Symbol'Length;
-          end if;
- 
-          if Pic.Radix_Position /= Invalid_Position then
- 
-             if Answer (Pic.Radix_Position) = 'V' then
-                Last := Last - 1;
- 
-             elsif Dollar then
-                if Pic.Radix_Position > Pic.Start_Currency then
-                   return
-                      Wide_Wide_String'(1 .. Pic.Radix_Position - 1 => '*') &
-                      Radix_Point &
-                      Wide_Wide_String'(Pic.Radix_Position + 1 .. Last => '*');
- 
-                else
-                   return
-                      Wide_Wide_String'
-                      (1 ..
-                       Pic.Radix_Position + Currency_Symbol'Length - 2
-                                              => '*') &
-                      Radix_Point &
-                      Wide_Wide_String'
-                        (Pic.Radix_Position + Currency_Symbol'Length .. Last
-                                              => '*');
-                end if;
- 
-             else
-                return
-                  Wide_Wide_String'(1 .. Pic.Radix_Position - 1 => '*') &
-                  Radix_Point &
-                  Wide_Wide_String'(Pic.Radix_Position + 1 .. Last => '*');
-             end if;
-          end if;
- 
-          return Wide_Wide_String'(1 .. Last => '*');
-       end if;
- 
-       --  This was once a simple return statement, now there are nine different
-       --  return cases. Not to mention the five above to deal with zeros. Why
-       --  not split things out?
- 
-       --  Processing the radix and sign expansion separately would require
-       --  lots of copying--the string and some of its indexes--without
-       --  really simplifying the logic. The cases are:
- 
-       --  1) Expand $, replace '.' with Radix_Point
-       --  2) No currency expansion, replace '.' with Radix_Point
-       --  3) Expand $, radix blanked
-       --  4) No currency expansion, radix blanked
-       --  5) Elide V
-       --  6) Expand $, Elide V
-       --  7) Elide V, Expand $ (Two cases depending on order.)
-       --  8) No radix, expand $
-       --  9) No radix, no currency expansion
- 
-       if Pic.Radix_Position /= Invalid_Position then
-          if Answer (Pic.Radix_Position) = '.' then
-             Answer (Pic.Radix_Position) := Radix_Point;
- 
-             if Dollar then
- 
-                --  1) Expand $, replace '.' with Radix_Point
- 
-                return Answer (1 .. Currency_Pos - 1) & Currency_Symbol &
-                   Answer (Currency_Pos + 1 .. Answer'Last);
- 
-             else
-                --  2) No currency expansion, replace '.' with Radix_Point
- 
-                return Answer;
-             end if;
- 
-          elsif Answer (Pic.Radix_Position) = ' ' then --  blanked radix.
-             if Dollar then
- 
-                --  3) Expand $, radix blanked
- 
-                return Answer (1 .. Currency_Pos - 1) & Currency_Symbol &
-                  Answer (Currency_Pos + 1 .. Answer'Last);
- 
-             else
-                --  4) No expansion, radix blanked
- 
-                return Answer;
-             end if;
- 
-          --  V cases
- 
-          else
-             if not Dollar then
- 
-                --  5) Elide V
- 
-                return Answer (1 .. Pic.Radix_Position - 1) &
-                   Answer (Pic.Radix_Position + 1 .. Answer'Last);
- 
-             elsif Currency_Pos < Pic.Radix_Position then
- 
-                --  6) Expand $, Elide V
- 
-                return Answer (1 .. Currency_Pos - 1) & Currency_Symbol &
-                   Answer (Currency_Pos + 1 .. Pic.Radix_Position - 1) &
-                   Answer (Pic.Radix_Position + 1 .. Answer'Last);
- 
-             else
-                --  7) Elide V, Expand $
- 
-                return Answer (1 .. Pic.Radix_Position - 1) &
-                   Answer (Pic.Radix_Position + 1 .. Currency_Pos - 1) &
-                   Currency_Symbol &
-                   Answer (Currency_Pos + 1 .. Answer'Last);
-             end if;
-          end if;
- 
-       elsif Dollar then
- 
-          --  8) No radix, expand $
- 
-          return Answer (1 .. Currency_Pos - 1) & Currency_Symbol &
-             Answer (Currency_Pos + 1 .. Answer'Last);
- 
-       else
-          --  9) No radix, no currency expansion
- 
-          return Answer;
-       end if;
-    end Format_Number;
- 
-    -------------------------
-    -- Parse_Number_String --
-    -------------------------
- 
-    function Parse_Number_String (Str : String) return Number_Attributes is
-       Answer : Number_Attributes;
- 
-    begin
-       for J in Str'Range loop
-          case Str (J) is
-             when ' ' =>
-                null; --  ignore
- 
-             when '1' .. '9' =>
- 
-                --  Decide if this is the start of a number.
-                --  If so, figure out which one...
- 
-                if Answer.Has_Fraction then
-                   Answer.End_Of_Fraction := J;
-                else
-                   if Answer.Start_Of_Int = Invalid_Position then
-                      --  start integer
-                      Answer.Start_Of_Int := J;
-                   end if;
-                   Answer.End_Of_Int := J;
-                end if;
- 
-             when '0' =>
- 
-                --  Only count a zero before the decimal point if it follows a
-                --  non-zero digit. After the decimal point, zeros will be
-                --  counted if followed by a non-zero digit.
- 
-                if not Answer.Has_Fraction then
-                   if Answer.Start_Of_Int /= Invalid_Position then
-                      Answer.End_Of_Int := J;
-                   end if;
-                end if;
- 
-             when '-' =>
- 
-                --  Set negative
- 
-                Answer.Negative := True;
- 
-             when '.' =>
- 
-                --  Close integer, start fraction
- 
-                if Answer.Has_Fraction then
-                   raise Picture_Error;
-                end if;
- 
-                --  Two decimal points is a no-no
- 
-                Answer.Has_Fraction    := True;
-                Answer.End_Of_Fraction := J;
- 
-                --  Could leave this at Invalid_Position, but this seems the
-                --  right way to indicate a null range...
- 
-                Answer.Start_Of_Fraction := J + 1;
-                Answer.End_Of_Int        := J - 1;
- 
-             when others =>
-                raise Picture_Error; -- can this happen? probably not
-          end case;
-       end loop;
- 
-       if Answer.Start_Of_Int = Invalid_Position then
-          Answer.Start_Of_Int := Answer.End_Of_Int + 1;
-       end if;
- 
-       --  No significant (intger) digits needs a null range
- 
-       return Answer;
-    end Parse_Number_String;
- 
-    ----------------
-    -- Pic_String --
-    ----------------
- 
-    --  The following ensures that we return B and not b being careful not
-    --  to break things which expect lower case b for blank. See CXF3A02.
- 
-    function Pic_String (Pic : Picture) return String is
-       Temp : String (1 .. Pic.Contents.Picture.Length) :=
-         Pic.Contents.Picture.Expanded;
-    begin
-       for J in Temp'Range loop
-          if Temp (J) = 'b' then
-             Temp (J) := 'B';
-          end if;
-       end loop;
- 
-       return Temp;
-    end Pic_String;
- 
-    ------------------
-    -- Precalculate --
-    ------------------
- 
-    procedure Precalculate  (Pic : in out Format_Record) is
- 
-       Computed_BWZ : Boolean := True;
- 
-       type Legality is  (Okay, Reject);
-       State : Legality := Reject;
-       --  Start in reject, which will reject null strings
- 
-       Index : Pic_Index := Pic.Picture.Expanded'First;
- 
-       function At_End return Boolean;
-       pragma Inline (At_End);
- 
-       procedure Set_State (L : Legality);
-       pragma Inline (Set_State);
- 
-       function Look return Character;
-       pragma Inline (Look);
- 
-       function Is_Insert return Boolean;
-       pragma Inline (Is_Insert);
- 
-       procedure Skip;
-       pragma Inline (Skip);
- 
-       procedure Trailing_Currency;
-       procedure Trailing_Bracket;
-       procedure Number_Fraction;
-       procedure Number_Completion;
-       procedure Number_Fraction_Or_Bracket;
-       procedure Number_Fraction_Or_Z_Fill;
-       procedure Zero_Suppression;
-       procedure Floating_Bracket;
-       procedure Number_Fraction_Or_Star_Fill;
-       procedure Star_Suppression;
-       procedure Number_Fraction_Or_Dollar;
-       procedure Leading_Dollar;
-       procedure Number_Fraction_Or_Pound;
-       procedure Leading_Pound;
-       procedure Picture;
-       procedure Floating_Plus;
-       procedure Floating_Minus;
-       procedure Picture_Plus;
-       procedure Picture_Minus;
-       procedure Picture_Bracket;
-       procedure Number;
-       procedure Optional_RHS_Sign;
-       procedure Picture_String;
- 
-       ------------
-       -- At_End --
-       ------------
- 
-       function At_End return Boolean is
-       begin
-          return Index > Pic.Picture.Length;
-       end At_End;
- 
-       ----------------------
-       -- Floating_Bracket --
-       ----------------------
- 
-       --  Note that Floating_Bracket is only called with an acceptable
-       --  prefix. But we don't set Okay, because we must end with a '>'.
- 
-       procedure Floating_Bracket is
-       begin
-          Pic.Floater := '<';
-          Pic.End_Float := Index;
-          Pic.Max_Leading_Digits := Pic.Max_Leading_Digits + 1;
- 
-          --  First bracket wasn't counted...
- 
-          Skip; --  known '<'
- 
-          loop
-             if At_End then
-                return;
-             end if;
- 
-             case Look is
-                when '_' | '0' | '/' =>
-                   Pic.End_Float := Index;
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.End_Float := Index;
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when '<' =>
-                   Pic.End_Float := Index;
-                   Pic.Max_Leading_Digits := Pic.Max_Leading_Digits + 1;
-                   Skip;
- 
-                when '9' =>
-                   Number_Completion;
- 
-                when '$' =>
-                   Leading_Dollar;
- 
-                when '#' =>
-                   Leading_Pound;
- 
-                when 'V' | 'v' | '.' =>
-                   Pic.Radix_Position := Index;
-                   Skip;
-                   Number_Fraction_Or_Bracket;
-                   return;
- 
-                when others =>
-                   return;
-             end case;
-          end loop;
-       end Floating_Bracket;
- 
-       --------------------
-       -- Floating_Minus --
-       --------------------
- 
-       procedure Floating_Minus is
-       begin
-          loop
-             if At_End then
-                return;
-             end if;
- 
-             case Look is
-                when '_' | '0' | '/' =>
-                   Pic.End_Float := Index;
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.End_Float := Index;
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when '-' =>
-                   Pic.Max_Leading_Digits := Pic.Max_Leading_Digits + 1;
-                   Pic.End_Float := Index;
-                   Skip;
- 
-                when '9' =>
-                   Number_Completion;
-                   return;
- 
-                when '.' | 'V' | 'v' =>
-                   Pic.Radix_Position := Index;
-                   Skip; --  Radix
- 
-                   while Is_Insert loop
-                      Skip;
-                   end loop;
- 
-                   if At_End then
-                      return;
-                   end if;
- 
-                   if Look = '-' then
-                      loop
-                         if At_End then
-                            return;
-                         end if;
- 
-                         case Look is
-                            when '-' =>
-                               Pic.Max_Trailing_Digits :=
-                                 Pic.Max_Trailing_Digits + 1;
-                               Pic.End_Float := Index;
-                               Skip;
- 
-                            when '_' | '0' | '/' =>
-                               Skip;
- 
-                            when 'B' | 'b'  =>
-                               Pic.Picture.Expanded (Index) := 'b';
-                               Skip;
- 
-                            when others =>
-                               return;
-                         end case;
-                      end loop;
- 
-                   else
-                      Number_Completion;
-                   end if;
- 
-                   return;
- 
-                when others =>
-                   return;
-             end case;
-          end loop;
-       end Floating_Minus;
- 
-       -------------------
-       -- Floating_Plus --
-       -------------------
- 
-       procedure Floating_Plus is
-       begin
-          loop
-             if At_End then
-                return;
-             end if;
- 
-             case Look is
-                when '_' | '0' | '/' =>
-                   Pic.End_Float := Index;
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.End_Float := Index;
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when '+' =>
-                   Pic.Max_Leading_Digits := Pic.Max_Leading_Digits + 1;
-                   Pic.End_Float := Index;
-                   Skip;
- 
-                when '9' =>
-                   Number_Completion;
-                   return;
- 
-                when '.' | 'V' | 'v' =>
-                   Pic.Radix_Position := Index;
-                   Skip; --  Radix
- 
-                   while Is_Insert loop
-                      Skip;
-                   end loop;
- 
-                   if At_End then
-                      return;
-                   end if;
- 
-                   if Look = '+' then
-                      loop
-                         if At_End then
-                            return;
-                         end if;
- 
-                         case Look is
-                            when '+' =>
-                               Pic.Max_Trailing_Digits :=
-                                 Pic.Max_Trailing_Digits + 1;
-                               Pic.End_Float := Index;
-                               Skip;
- 
-                            when '_' | '0' | '/' =>
-                               Skip;
- 
-                            when 'B' | 'b'  =>
-                               Pic.Picture.Expanded (Index) := 'b';
-                               Skip;
- 
-                            when others =>
-                               return;
-                         end case;
-                      end loop;
- 
-                   else
-                      Number_Completion;
-                   end if;
- 
-                   return;
- 
-                when others =>
-                   return;
-             end case;
-          end loop;
-       end Floating_Plus;
- 
-       ---------------
-       -- Is_Insert --
-       ---------------
- 
-       function Is_Insert return Boolean is
-       begin
-          if At_End then
-             return False;
-          end if;
- 
-          case Pic.Picture.Expanded (Index) is
-             when '_' | '0' | '/' =>
-                return True;
- 
-             when 'B' | 'b' =>
-                Pic.Picture.Expanded (Index) := 'b'; --  canonical
-                return True;
- 
-             when others =>
-                return False;
-          end case;
-       end Is_Insert;
- 
-       --------------------
-       -- Leading_Dollar --
-       --------------------
- 
-       --  Note that Leading_Dollar can be called in either State. It will set
-       --  state to Okay only if a 9 or (second) is encountered.
- 
-       --  Also notice the tricky bit with State and Zero_Suppression.
-       --  Zero_Suppression is Picture_Error if a '$' or a '9' has been
-       --  encountered, exactly the cases where State has been set.
- 
-       procedure Leading_Dollar is
-       begin
-          --  Treat as a floating dollar, and unwind otherwise
- 
-          Pic.Floater := '$';
-          Pic.Start_Currency := Index;
-          Pic.End_Currency := Index;
-          Pic.Start_Float := Index;
-          Pic.End_Float := Index;
- 
-          --  Don't increment Pic.Max_Leading_Digits, we need one "real"
-          --  currency place.
- 
-          Skip; --  known '$'
- 
-          loop
-             if At_End then
-                return;
-             end if;
- 
-             case Look is
-                when '_' | '0' | '/' =>
-                   Pic.End_Float := Index;
-                   Skip;
- 
-                   --  A trailing insertion character is not part of the
-                   --  floating currency, so need to look ahead.
- 
-                   if Look /= '$' then
-                      Pic.End_Float := Pic.End_Float - 1;
-                   end if;
- 
-                when 'B' | 'b'  =>
-                   Pic.End_Float := Index;
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when 'Z' | 'z' =>
-                   Pic.Picture.Expanded (Index) := 'Z'; -- consistency
- 
-                   if State = Okay then
-                      raise Picture_Error;
-                   else
-                      --  Will overwrite Floater and Start_Float
- 
-                      Zero_Suppression;
-                   end if;
- 
-                when '*' =>
-                   if State = Okay then
-                      raise Picture_Error;
-                   else
-                      --  Will overwrite Floater and Start_Float
- 
-                      Star_Suppression;
-                   end if;
- 
-                when '$' =>
-                   Pic.Max_Leading_Digits := Pic.Max_Leading_Digits + 1;
-                   Pic.End_Float := Index;
-                   Pic.End_Currency := Index;
-                   Set_State (Okay); Skip;
- 
-                when '9' =>
-                   if State /= Okay then
-                      Pic.Floater := '!';
-                      Pic.Start_Float := Invalid_Position;
-                      Pic.End_Float := Invalid_Position;
-                   end if;
- 
-                   --  A single dollar does not a floating make
- 
-                   Number_Completion;
-                   return;
- 
-                when 'V' | 'v' | '.' =>
-                   if State /= Okay then
-                      Pic.Floater := '!';
-                      Pic.Start_Float := Invalid_Position;
-                      Pic.End_Float := Invalid_Position;
-                   end if;
- 
-                   --  Only one dollar before the sign is okay, but doesn't
-                   --  float.
- 
-                   Pic.Radix_Position := Index;
-                   Skip;
-                   Number_Fraction_Or_Dollar;
-                   return;
- 
-                when others =>
-                   return;
-             end case;
-          end loop;
-       end Leading_Dollar;
- 
-       -------------------
-       -- Leading_Pound --
-       -------------------
- 
-       --  This one is complex. A Leading_Pound can be fixed or floating, but
-       --  in some cases the decision has to be deferred until we leave this
-       --  procedure. Also note that Leading_Pound can be called in either
-       --  State.
- 
-       --  It will set state to Okay only if a 9 or (second) # is encountered
- 
-       --  One Last note:  In ambiguous cases, the currency is treated as
-       --  floating unless there is only one '#'.
- 
-       procedure Leading_Pound is
-          Inserts : Boolean := False;
-          --  Set to True if a '_', '0', '/', 'B', or 'b' is encountered
- 
-          Must_Float : Boolean := False;
-          --  Set to true if a '#' occurs after an insert
- 
-       begin
-          --  Treat as a floating currency. If it isn't, this will be
-          --  overwritten later.
- 
-          Pic.Floater := '#';
- 
-          Pic.Start_Currency := Index;
-          Pic.End_Currency := Index;
-          Pic.Start_Float := Index;
-          Pic.End_Float := Index;
- 
-          --  Don't increment Pic.Max_Leading_Digits, we need one "real"
-          --  currency place.
- 
-          Pic.Max_Currency_Digits := 1; --  we've seen one.
- 
-          Skip; --  known '#'
- 
-          loop
-             if At_End then
-                return;
-             end if;
- 
-             case Look is
-                when '_' | '0' | '/' =>
-                   Pic.End_Float := Index;
-                   Inserts := True;
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Pic.End_Float := Index;
-                   Inserts := True;
-                   Skip;
- 
-                when 'Z' | 'z' =>
-                   Pic.Picture.Expanded (Index) := 'Z'; -- consistency
- 
-                   if Must_Float then
-                      raise Picture_Error;
-                   else
-                      Pic.Max_Leading_Digits := 0;
- 
-                      --  Will overwrite Floater and Start_Float
- 
-                      Zero_Suppression;
-                   end if;
- 
-                when '*' =>
-                   if Must_Float then
-                      raise Picture_Error;
-                   else
-                      Pic.Max_Leading_Digits := 0;
- 
-                      --  Will overwrite Floater and Start_Float
- 
-                      Star_Suppression;
-                   end if;
- 
-                when '#' =>
-                   if Inserts then
-                      Must_Float := True;
-                   end if;
- 
-                   Pic.Max_Leading_Digits := Pic.Max_Leading_Digits + 1;
-                   Pic.End_Float := Index;
-                   Pic.End_Currency := Index;
-                   Set_State (Okay);
-                   Skip;
- 
-                when '9' =>
-                   if State /= Okay then
- 
-                      --  A single '#' doesn't float
- 
-                      Pic.Floater := '!';
-                      Pic.Start_Float := Invalid_Position;
-                      Pic.End_Float := Invalid_Position;
-                   end if;
- 
-                   Number_Completion;
-                   return;
- 
-                when 'V' | 'v' | '.' =>
-                   if State /= Okay then
-                      Pic.Floater := '!';
-                      Pic.Start_Float := Invalid_Position;
-                      Pic.End_Float := Invalid_Position;
-                   end if;
- 
-                   --  Only one pound before the sign is okay, but doesn't
-                   --  float.
- 
-                   Pic.Radix_Position := Index;
-                   Skip;
-                   Number_Fraction_Or_Pound;
-                   return;
- 
-                when others =>
-                   return;
-             end case;
-          end loop;
-       end Leading_Pound;
- 
-       ----------
-       -- Look --
-       ----------
- 
-       function Look return Character is
-       begin
-          if At_End then
-             raise Picture_Error;
-          end if;
- 
-          return Pic.Picture.Expanded (Index);
-       end Look;
- 
-       ------------
-       -- Number --
-       ------------
- 
-       procedure Number is
-       begin
-          loop
-             case Look is
-                when '_' | '0' | '/' =>
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when '9' =>
-                   Computed_BWZ := False;
-                   Pic.Max_Leading_Digits := Pic.Max_Leading_Digits + 1;
-                   Set_State (Okay);
-                   Skip;
- 
-                when '.' | 'V' | 'v' =>
-                   Pic.Radix_Position := Index;
-                   Skip;
-                   Number_Fraction;
-                   return;
- 
-                when others =>
-                   return;
- 
-             end case;
- 
-             if At_End then
-                return;
-             end if;
- 
-             --  Will return in Okay state if a '9' was seen
- 
-          end loop;
-       end Number;
- 
-       -----------------------
-       -- Number_Completion --
-       -----------------------
- 
-       procedure Number_Completion is
-       begin
-          while not At_End loop
-             case Look is
-                when '_' | '0' | '/' =>
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when '9' =>
-                   Computed_BWZ := False;
-                   Pic.Max_Leading_Digits := Pic.Max_Leading_Digits + 1;
-                   Set_State (Okay);
-                   Skip;
- 
-                when 'V' | 'v' | '.' =>
-                   Pic.Radix_Position := Index;
-                   Skip;
-                   Number_Fraction;
-                   return;
- 
-                when others =>
-                   return;
-             end case;
-          end loop;
-       end Number_Completion;
- 
-       ---------------------
-       -- Number_Fraction --
-       ---------------------
- 
-       procedure Number_Fraction is
-       begin
-          --  Note that number fraction can be called in either State.
-          --  It will set state to Valid only if a 9 is encountered.
- 
-          loop
-             if At_End then
-                return;
-             end if;
- 
-             case Look is
-                when '_' | '0' | '/' =>
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when '9' =>
-                   Computed_BWZ := False;
-                   Pic.Max_Trailing_Digits := Pic.Max_Trailing_Digits + 1;
-                   Set_State (Okay); Skip;
- 
-                when others =>
-                   return;
-             end case;
-          end loop;
-       end Number_Fraction;
- 
-       --------------------------------
-       -- Number_Fraction_Or_Bracket --
-       --------------------------------
- 
-       procedure Number_Fraction_Or_Bracket is
-       begin
-          loop
-             if At_End then
-                return;
-             end if;
- 
-             case Look is
-                when '_' | '0' | '/' =>
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when '<' =>
-                   Pic.Max_Trailing_Digits := Pic.Max_Trailing_Digits + 1;
-                   Pic.End_Float := Index;
-                   Skip;
- 
-                   loop
-                      if At_End then
-                         return;
-                      end if;
- 
-                      case Look is
-                         when '_' | '0' | '/' =>
-                            Skip;
- 
-                         when 'B' | 'b'  =>
-                            Pic.Picture.Expanded (Index) := 'b';
-                            Skip;
- 
-                         when '<' =>
-                            Pic.Max_Trailing_Digits :=
-                              Pic.Max_Trailing_Digits + 1;
-                            Pic.End_Float := Index;
-                            Skip;
- 
-                         when others =>
-                            return;
-                      end case;
-                   end loop;
- 
-                when others =>
-                   Number_Fraction;
-                   return;
-             end case;
-          end loop;
-       end Number_Fraction_Or_Bracket;
- 
-       -------------------------------
-       -- Number_Fraction_Or_Dollar --
-       -------------------------------
- 
-       procedure Number_Fraction_Or_Dollar is
-       begin
-          loop
-             if At_End then
-                return;
-             end if;
- 
-             case Look is
-                when '_' | '0' | '/' =>
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when '$' =>
-                   Pic.Max_Trailing_Digits := Pic.Max_Trailing_Digits + 1;
-                   Pic.End_Float := Index;
-                   Skip;
- 
-                   loop
-                      if At_End then
-                         return;
-                      end if;
- 
-                      case Look is
-                         when '_' | '0' | '/' =>
-                            Skip;
- 
-                         when 'B' | 'b'  =>
-                            Pic.Picture.Expanded (Index) := 'b';
-                            Skip;
- 
-                         when '$' =>
-                            Pic.Max_Trailing_Digits :=
-                              Pic.Max_Trailing_Digits + 1;
-                            Pic.End_Float := Index;
-                            Skip;
- 
-                         when others =>
-                            return;
-                      end case;
-                   end loop;
- 
-                when others =>
-                   Number_Fraction;
-                   return;
-             end case;
-          end loop;
-       end Number_Fraction_Or_Dollar;
- 
-       ------------------------------
-       -- Number_Fraction_Or_Pound --
-       ------------------------------
- 
-       procedure Number_Fraction_Or_Pound is
-       begin
-          loop
-             if At_End then
-                return;
-             end if;
- 
-             case Look is
-                when '_' | '0' | '/' =>
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when '#' =>
-                   Pic.Max_Trailing_Digits := Pic.Max_Trailing_Digits + 1;
-                   Pic.End_Float := Index;
-                   Skip;
- 
-                   loop
-                      if At_End then
-                         return;
-                      end if;
- 
-                      case Look is
-                         when '_' | '0' | '/' =>
-                            Skip;
- 
-                         when 'B' | 'b'  =>
-                            Pic.Picture.Expanded (Index) := 'b';
-                            Skip;
- 
-                         when '#' =>
-                            Pic.Max_Trailing_Digits :=
-                              Pic.Max_Trailing_Digits + 1;
-                            Pic.End_Float := Index;
-                            Skip;
- 
-                         when others =>
-                            return;
-                      end case;
-                   end loop;
- 
-                when others =>
-                   Number_Fraction;
-                   return;
-             end case;
-          end loop;
-       end Number_Fraction_Or_Pound;
- 
-       ----------------------------------
-       -- Number_Fraction_Or_Star_Fill --
-       ----------------------------------
- 
-       procedure Number_Fraction_Or_Star_Fill is
-       begin
-          loop
-             if At_End then
-                return;
-             end if;
- 
-             case Look is
-                when '_' | '0' | '/' =>
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when '*' =>
-                   Pic.Star_Fill := True;
-                   Pic.Max_Trailing_Digits := Pic.Max_Trailing_Digits + 1;
-                   Pic.End_Float := Index;
-                   Skip;
- 
-                   loop
-                      if At_End then
-                         return;
-                      end if;
- 
-                      case Look is
-                         when '_' | '0' | '/' =>
-                            Skip;
- 
-                         when 'B' | 'b'  =>
-                            Pic.Picture.Expanded (Index) := 'b';
-                            Skip;
- 
-                         when '*' =>
-                            Pic.Star_Fill := True;
-                            Pic.Max_Trailing_Digits :=
-                              Pic.Max_Trailing_Digits + 1;
-                            Pic.End_Float := Index;
-                            Skip;
- 
-                         when others =>
-                            return;
-                      end case;
-                   end loop;
- 
-                when others =>
-                   Number_Fraction;
-                   return;
-             end case;
-          end loop;
-       end Number_Fraction_Or_Star_Fill;
- 
-       -------------------------------
-       -- Number_Fraction_Or_Z_Fill --
-       -------------------------------
- 
-       procedure Number_Fraction_Or_Z_Fill is
-       begin
-          loop
-             if At_End then
-                return;
-             end if;
- 
-             case Look is
-                when '_' | '0' | '/' =>
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when 'Z' | 'z' =>
-                   Pic.Max_Trailing_Digits := Pic.Max_Trailing_Digits + 1;
-                   Pic.End_Float := Index;
-                   Pic.Picture.Expanded (Index) := 'Z'; -- consistency
- 
-                   Skip;
- 
-                   loop
-                      if At_End then
-                         return;
-                      end if;
- 
-                      case Look is
-                         when '_' | '0' | '/' =>
-                            Skip;
- 
-                         when 'B' | 'b'  =>
-                            Pic.Picture.Expanded (Index) := 'b';
-                            Skip;
- 
-                         when 'Z' | 'z' =>
-                            Pic.Picture.Expanded (Index) := 'Z'; -- consistency
- 
-                            Pic.Max_Trailing_Digits :=
-                              Pic.Max_Trailing_Digits + 1;
-                            Pic.End_Float := Index;
-                            Skip;
- 
-                         when others =>
-                            return;
-                      end case;
-                   end loop;
- 
-                when others =>
-                   Number_Fraction;
-                   return;
-             end case;
-          end loop;
-       end Number_Fraction_Or_Z_Fill;
- 
-       -----------------------
-       -- Optional_RHS_Sign --
-       -----------------------
- 
-       procedure Optional_RHS_Sign is
-       begin
-          if At_End then
-             return;
-          end if;
- 
-          case Look is
-             when '+' | '-' =>
-                Pic.Sign_Position := Index;
-                Skip;
-                return;
- 
-             when 'C' | 'c' =>
-                Pic.Sign_Position := Index;
-                Pic.Picture.Expanded (Index) := 'C';
-                Skip;
- 
-                if Look = 'R' or else Look = 'r' then
-                   Pic.Second_Sign := Index;
-                   Pic.Picture.Expanded (Index) := 'R';
-                   Skip;
- 
-                else
-                   raise Picture_Error;
-                end if;
- 
-                return;
- 
-             when 'D' | 'd' =>
-                Pic.Sign_Position := Index;
-                Pic.Picture.Expanded (Index) := 'D';
-                Skip;
- 
-                if Look = 'B' or else Look = 'b' then
-                   Pic.Second_Sign := Index;
-                   Pic.Picture.Expanded (Index) := 'B';
-                   Skip;
- 
-                else
-                   raise Picture_Error;
-                end if;
- 
-                return;
- 
-             when '>' =>
-                if Pic.Picture.Expanded (Pic.Sign_Position) = '<' then
-                   Pic.Second_Sign := Index;
-                   Skip;
- 
-                else
-                   raise Picture_Error;
-                end if;
- 
-             when others =>
-                return;
-          end case;
-       end Optional_RHS_Sign;
- 
-       -------------
-       -- Picture --
-       -------------
- 
-       --  Note that Picture can be called in either State
- 
-       --  It will set state to Valid only if a 9 is encountered or floating
-       --  currency is called.
- 
-       procedure Picture is
-       begin
-          loop
-             if At_End then
-                return;
-             end if;
- 
-             case Look is
-                when '_' | '0' | '/' =>
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when '$' =>
-                   Leading_Dollar;
-                   return;
- 
-                when '#' =>
-                   Leading_Pound;
-                   return;
- 
-                when '9' =>
-                   Computed_BWZ := False;
-                   Set_State (Okay);
-                   Pic.Max_Leading_Digits := Pic.Max_Leading_Digits + 1;
-                   Skip;
- 
-                when 'V' | 'v' | '.' =>
-                   Pic.Radix_Position := Index;
-                   Skip;
-                   Number_Fraction;
-                   Trailing_Currency;
-                   return;
- 
-                when others =>
-                   return;
-             end case;
-          end loop;
-       end Picture;
- 
-       ---------------------
-       -- Picture_Bracket --
-       ---------------------
- 
-       procedure Picture_Bracket is
-       begin
-          Pic.Sign_Position := Index;
-          Pic.Sign_Position := Index;
- 
-          --  Treat as a floating sign, and unwind otherwise
- 
-          Pic.Floater := '<';
-          Pic.Start_Float := Index;
-          Pic.End_Float := Index;
- 
-          --  Don't increment Pic.Max_Leading_Digits, we need one "real"
-          --  sign place.
- 
-          Skip; --  Known Bracket
- 
-          loop
-             case Look is
-                when '_' | '0' | '/' =>
-                   Pic.End_Float := Index;
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.End_Float := Index;
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when '<' =>
-                   Set_State (Okay);  --  "<<>" is enough.
-                   Floating_Bracket;
-                   Trailing_Currency;
-                   Trailing_Bracket;
-                   return;
- 
-                when '$' | '#' | '9' | '*' =>
-                   if State /= Okay then
-                      Pic.Floater := '!';
-                      Pic.Start_Float := Invalid_Position;
-                      Pic.End_Float := Invalid_Position;
-                   end if;
- 
-                   Picture;
-                   Trailing_Bracket;
-                   Set_State (Okay);
-                   return;
- 
-                when '.' | 'V' | 'v' =>
-                   if State /= Okay then
-                      Pic.Floater := '!';
-                      Pic.Start_Float := Invalid_Position;
-                      Pic.End_Float := Invalid_Position;
-                   end if;
- 
-                   --  Don't assume that state is okay, haven't seen a digit
- 
-                   Picture;
-                   Trailing_Bracket;
-                   return;
- 
-                when others =>
-                   raise Picture_Error;
-             end case;
-          end loop;
-       end Picture_Bracket;
- 
-       -------------------
-       -- Picture_Minus --
-       -------------------
- 
-       procedure Picture_Minus is
-       begin
-          Pic.Sign_Position := Index;
- 
-          --  Treat as a floating sign, and unwind otherwise
- 
-          Pic.Floater := '-';
-          Pic.Start_Float := Index;
-          Pic.End_Float := Index;
- 
-          --  Don't increment Pic.Max_Leading_Digits, we need one "real"
-          --  sign place.
- 
-          Skip; --  Known Minus
- 
-          loop
-             case Look is
-                when '_' | '0' | '/' =>
-                   Pic.End_Float := Index;
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.End_Float := Index;
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when '-' =>
-                   Pic.Max_Leading_Digits := Pic.Max_Leading_Digits + 1;
-                   Pic.End_Float := Index;
-                   Skip;
-                   Set_State (Okay);  --  "-- " is enough.
-                   Floating_Minus;
-                   Trailing_Currency;
-                   return;
- 
-                when '$' | '#' | '9' | '*' =>
-                   if State /= Okay then
-                      Pic.Floater := '!';
-                      Pic.Start_Float := Invalid_Position;
-                      Pic.End_Float := Invalid_Position;
-                   end if;
- 
-                   Picture;
-                   Set_State (Okay);
-                   return;
- 
-                when 'Z' | 'z' =>
- 
-                   --  Can't have Z and a floating sign
- 
-                   if State = Okay then
-                      Set_State (Reject);
-                   end if;
- 
-                   Pic.Picture.Expanded (Index) := 'Z'; -- consistency
-                   Zero_Suppression;
-                   Trailing_Currency;
-                   Optional_RHS_Sign;
-                   return;
- 
-                when '.' | 'V' | 'v' =>
-                   if State /= Okay then
-                      Pic.Floater := '!';
-                      Pic.Start_Float := Invalid_Position;
-                      Pic.End_Float := Invalid_Position;
-                   end if;
- 
-                   --  Don't assume that state is okay, haven't seen a digit
- 
-                   Picture;
-                   return;
- 
-                when others =>
-                   return;
-             end case;
-          end loop;
-       end Picture_Minus;
- 
-       ------------------
-       -- Picture_Plus --
-       ------------------
- 
-       procedure Picture_Plus is
-       begin
-          Pic.Sign_Position := Index;
- 
-          --  Treat as a floating sign, and unwind otherwise
- 
-          Pic.Floater := '+';
-          Pic.Start_Float := Index;
-          Pic.End_Float := Index;
- 
-          --  Don't increment Pic.Max_Leading_Digits, we need one "real"
-          --  sign place.
- 
-          Skip; --  Known Plus
- 
-          loop
-             case Look is
-                when '_' | '0' | '/' =>
-                   Pic.End_Float := Index;
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.End_Float := Index;
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when '+' =>
-                   Pic.Max_Leading_Digits := Pic.Max_Leading_Digits + 1;
-                   Pic.End_Float := Index;
-                   Skip;
-                   Set_State (Okay);  --  "++" is enough
-                   Floating_Plus;
-                   Trailing_Currency;
-                   return;
- 
-                when '$' | '#' | '9' | '*' =>
-                   if State /= Okay then
-                      Pic.Floater := '!';
-                      Pic.Start_Float := Invalid_Position;
-                      Pic.End_Float := Invalid_Position;
-                   end if;
- 
-                   Picture;
-                   Set_State (Okay);
-                   return;
- 
-                when 'Z' | 'z' =>
-                   if State = Okay then
-                      Set_State (Reject);
-                   end if;
- 
-                   --  Can't have Z and a floating sign
- 
-                   Pic.Picture.Expanded (Index) := 'Z'; -- consistency
- 
-                   --  '+Z' is acceptable
- 
-                   Set_State (Okay);
- 
-                   Zero_Suppression;
-                   Trailing_Currency;
-                   Optional_RHS_Sign;
-                   return;
- 
-                when '.' | 'V' | 'v' =>
-                   if State /= Okay then
-                      Pic.Floater := '!';
-                      Pic.Start_Float := Invalid_Position;
-                      Pic.End_Float := Invalid_Position;
-                   end if;
- 
-                   --  Don't assume that state is okay, haven't seen a digit
- 
-                   Picture;
-                   return;
- 
-                when others =>
-                   return;
-             end case;
-          end loop;
-       end Picture_Plus;
- 
-       --------------------
-       -- Picture_String --
-       --------------------
- 
-       procedure Picture_String is
-       begin
-          while Is_Insert loop
-             Skip;
-          end loop;
- 
-          case Look is
-             when '$' | '#' =>
-                Picture;
-                Optional_RHS_Sign;
- 
-             when '+' =>
-                Picture_Plus;
- 
-             when '-' =>
-                Picture_Minus;
- 
-             when '<' =>
-                Picture_Bracket;
- 
-             when 'Z' | 'z' =>
-                Pic.Picture.Expanded (Index) := 'Z'; -- consistency
-                Zero_Suppression;
-                Trailing_Currency;
-                Optional_RHS_Sign;
- 
-             when '*' =>
-                Star_Suppression;
-                Trailing_Currency;
-                Optional_RHS_Sign;
- 
-             when '9' | '.' | 'V' | 'v' =>
-                Number;
-                Trailing_Currency;
-                Optional_RHS_Sign;
- 
-             when others =>
-                raise Picture_Error;
-          end case;
- 
-          --  Blank when zero either if the PIC does not contain a '9' or if
-          --  requested by the user and no '*'.
- 
-          Pic.Blank_When_Zero :=
-            (Computed_BWZ or else Pic.Blank_When_Zero)
-              and then not Pic.Star_Fill;
- 
-          --  Star fill if '*' and no '9'
- 
-          Pic.Star_Fill := Pic.Star_Fill and then Computed_BWZ;
- 
-          if not At_End then
-             Set_State (Reject);
-          end if;
-       end Picture_String;
- 
-       ---------------
-       -- Set_State --
-       ---------------
- 
-       procedure Set_State (L : Legality) is
-       begin
-          State := L;
-       end Set_State;
- 
-       ----------
-       -- Skip --
-       ----------
- 
-       procedure Skip is
-       begin
-          Index := Index + 1;
-       end Skip;
- 
-       ----------------------
-       -- Star_Suppression --
-       ----------------------
- 
-       procedure Star_Suppression is
-       begin
-          Pic.Floater := '*';
-          Pic.Start_Float := Index;
-          Pic.End_Float := Index;
-          Pic.Max_Leading_Digits := Pic.Max_Leading_Digits + 1;
-          Set_State (Okay);
- 
-          --  Even a single * is a valid picture
- 
-          Pic.Star_Fill := True;
-          Skip; --  Known *
- 
-          loop
-             if At_End then
-                return;
-             end if;
- 
-             case Look is
-                when '_' | '0' | '/' =>
-                   Pic.End_Float := Index;
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.End_Float := Index;
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when '*' =>
-                   Pic.End_Float := Index;
-                   Pic.Max_Leading_Digits := Pic.Max_Leading_Digits + 1;
-                   Set_State (Okay); Skip;
- 
-                when '9' =>
-                   Set_State (Okay);
-                   Number_Completion;
-                   return;
- 
-                when '.' | 'V' | 'v' =>
-                   Pic.Radix_Position := Index;
-                   Skip;
-                   Number_Fraction_Or_Star_Fill;
-                   return;
- 
-                when '#' | '$' =>
-                   Trailing_Currency;
-                   Set_State (Okay);
-                   return;
- 
-                when others =>
-                   raise Picture_Error;
-             end case;
-          end loop;
-       end Star_Suppression;
- 
-       ----------------------
-       -- Trailing_Bracket --
-       ----------------------
- 
-       procedure Trailing_Bracket is
-       begin
-          if Look = '>' then
-             Pic.Second_Sign := Index;
-             Skip;
-          else
-             raise Picture_Error;
-          end if;
-       end Trailing_Bracket;
- 
-       -----------------------
-       -- Trailing_Currency --
-       -----------------------
- 
-       procedure Trailing_Currency is
-       begin
-          if At_End then
-             return;
-          end if;
- 
-          if Look = '$' then
-             Pic.Start_Currency := Index;
-             Pic.End_Currency := Index;
-             Skip;
- 
-          else
-             while not At_End and then Look = '#' loop
-                if Pic.Start_Currency = Invalid_Position then
-                   Pic.Start_Currency := Index;
-                end if;
- 
-                Pic.End_Currency := Index;
-                Skip;
-             end loop;
-          end if;
- 
-          loop
-             if At_End then
-                return;
-             end if;
- 
-             case Look is
-                when '_' | '0' | '/' =>
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when others =>
-                   return;
-             end case;
-          end loop;
-       end Trailing_Currency;
- 
-       ----------------------
-       -- Zero_Suppression --
-       ----------------------
- 
-       procedure Zero_Suppression is
-       begin
-          Pic.Floater := 'Z';
-          Pic.Start_Float := Index;
-          Pic.End_Float := Index;
-          Pic.Max_Leading_Digits := Pic.Max_Leading_Digits + 1;
-          Pic.Picture.Expanded (Index) := 'Z'; -- consistency
- 
-          Skip; --  Known Z
- 
-          loop
-             --  Even a single Z is a valid picture
- 
-             if At_End then
-                Set_State (Okay);
-                return;
-             end if;
- 
-             case Look is
-                when '_' | '0' | '/' =>
-                   Pic.End_Float := Index;
-                   Skip;
- 
-                when 'B' | 'b'  =>
-                   Pic.End_Float := Index;
-                   Pic.Picture.Expanded (Index) := 'b';
-                   Skip;
- 
-                when 'Z' | 'z' =>
-                   Pic.Picture.Expanded (Index) := 'Z'; -- consistency
- 
-                   Pic.Max_Leading_Digits := Pic.Max_Leading_Digits + 1;
-                   Pic.End_Float := Index;
-                   Set_State (Okay);
-                   Skip;
- 
-                when '9' =>
-                   Set_State (Okay);
-                   Number_Completion;
-                   return;
- 
-                when '.' | 'V' | 'v' =>
-                   Pic.Radix_Position := Index;
-                   Skip;
-                   Number_Fraction_Or_Z_Fill;
-                   return;
- 
-                when '#' | '$' =>
-                   Trailing_Currency;
-                   Set_State (Okay);
-                   return;
- 
-                when others =>
-                   return;
-             end case;
-          end loop;
-       end Zero_Suppression;
- 
-    --  Start of processing for Precalculate
- 
-    begin
-       Picture_String;
- 
-       if State = Reject then
-          raise Picture_Error;
-       end if;
- 
-    exception
- 
-       when Constraint_Error =>
- 
-          --  To deal with special cases like null strings
- 
-       raise Picture_Error;
- 
-    end Precalculate;
- 
-    ----------------
-    -- To_Picture --
-    ----------------
- 
-    function To_Picture
-      (Pic_String      : String;
-       Blank_When_Zero : Boolean := False) return Picture
-    is
-       Result : Picture;
- 
-    begin
-       declare
-          Item : constant String := Expand (Pic_String);
- 
-       begin
-          Result.Contents.Picture         := (Item'Length, Item);
-          Result.Contents.Original_BWZ := Blank_When_Zero;
-          Result.Contents.Blank_When_Zero := Blank_When_Zero;
-          Precalculate (Result.Contents);
-          return Result;
-       end;
- 
-    exception
-       when others =>
-          raise Picture_Error;
- 
-    end To_Picture;
- 
-    -------------
-    -- To_Wide --
-    -------------
- 
-    function To_Wide (C : Character) return Wide_Wide_Character is
-    begin
-       return Wide_Wide_Character'Val (Character'Pos (C));
-    end To_Wide;
- 
-    -----------
-    -- Valid --
-    -----------
- 
-    function Valid
-      (Pic_String      : String;
-       Blank_When_Zero : Boolean := False) return Boolean
-    is
-    begin
-       declare
-          Expanded_Pic : constant String := Expand (Pic_String);
-          --  Raises Picture_Error if Item not well-formed
- 
-          Format_Rec : Format_Record;
- 
-       begin
-          Format_Rec.Picture := (Expanded_Pic'Length, Expanded_Pic);
-          Format_Rec.Blank_When_Zero := Blank_When_Zero;
-          Format_Rec.Original_BWZ := Blank_When_Zero;
-          Precalculate (Format_Rec);
- 
-          --  False only if Blank_When_0 is True but the pic string has a '*'
- 
-          return not Blank_When_Zero
-            or else Strings_Fixed.Index (Expanded_Pic, "*") = 0;
-       end;
- 
-    exception
-       when others => return False;
-    end Valid;
- 
- end Ada.Wide_Wide_Text_IO.Editing;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ztedit.ads gcc-8.1.0/gcc/ada/a-ztedit.ads
*** gcc-7.3.0/gcc/ada/a-ztedit.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-ztedit.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,198 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --        A D A . W I D E _ W I D E _ T E X T _ I O . E D I T I N G         --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2009, Free Software Foundation, 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 Ada.Wide_Wide_Text_IO.Editing is
- 
-    type Picture is private;
- 
-    function Valid
-      (Pic_String      : String;
-       Blank_When_Zero : Boolean := False) return Boolean;
- 
-    function To_Picture
-      (Pic_String      : String;
-       Blank_When_Zero : Boolean := False) return Picture;
- 
-    function Pic_String      (Pic : Picture) return String;
-    function Blank_When_Zero (Pic : Picture) return Boolean;
- 
-    Max_Picture_Length : constant := 64;
- 
-    Picture_Error : exception;
- 
-    Default_Currency   : constant Wide_Wide_String    := "$";
-    Default_Fill       : constant Wide_Wide_Character := ' ';
-    Default_Separator  : constant Wide_Wide_Character := ',';
-    Default_Radix_Mark : constant Wide_Wide_Character := '.';
- 
-    generic
-       type Num is delta <> digits <>;
-       Default_Currency   : Wide_Wide_String :=
-                                 Wide_Wide_Text_IO.Editing.Default_Currency;
-       Default_Fill       : Wide_Wide_Character :=
-                                 Wide_Wide_Text_IO.Editing.Default_Fill;
-       Default_Separator  : Wide_Wide_Character :=
-                                 Wide_Wide_Text_IO.Editing.Default_Separator;
-       Default_Radix_Mark : Wide_Wide_Character :=
-                                 Wide_Wide_Text_IO.Editing.Default_Radix_Mark;
- 
-    package Decimal_Output is
- 
-       function Length
-         (Pic      : Picture;
-          Currency : Wide_Wide_String := Default_Currency) return Natural;
- 
-       function Valid
-         (Item     : Num;
-          Pic      : Picture;
-          Currency : Wide_Wide_String := Default_Currency) return Boolean;
- 
-       function Image
-         (Item       : Num;
-          Pic        : Picture;
-          Currency   : Wide_Wide_String    := Default_Currency;
-          Fill       : Wide_Wide_Character := Default_Fill;
-          Separator  : Wide_Wide_Character := Default_Separator;
-          Radix_Mark : Wide_Wide_Character := Default_Radix_Mark)
-          return Wide_Wide_String;
- 
-       procedure Put
-         (File       : File_Type;
-          Item       : Num;
-          Pic        : Picture;
-          Currency   : Wide_Wide_String    := Default_Currency;
-          Fill       : Wide_Wide_Character := Default_Fill;
-          Separator  : Wide_Wide_Character := Default_Separator;
-          Radix_Mark : Wide_Wide_Character := Default_Radix_Mark);
- 
-       procedure Put
-         (Item       : Num;
-          Pic        : Picture;
-          Currency   : Wide_Wide_String    := Default_Currency;
-          Fill       : Wide_Wide_Character := Default_Fill;
-          Separator  : Wide_Wide_Character := Default_Separator;
-          Radix_Mark : Wide_Wide_Character := Default_Radix_Mark);
- 
-       procedure Put
-         (To         : out Wide_Wide_String;
-          Item       : Num;
-          Pic        : Picture;
-          Currency   : Wide_Wide_String    := Default_Currency;
-          Fill       : Wide_Wide_Character := Default_Fill;
-          Separator  : Wide_Wide_Character := Default_Separator;
-          Radix_Mark : Wide_Wide_Character := Default_Radix_Mark);
- 
-    end Decimal_Output;
- 
- private
-    MAX_PICSIZE      : constant := 50;
-    MAX_MONEYSIZE    : constant := 10;
-    Invalid_Position : constant := -1;
- 
-    subtype Pic_Index is Natural range 0 .. MAX_PICSIZE;
- 
-    type Picture_Record (Length : Pic_Index := 0) is record
-       Expanded : String (1 .. Length);
-    end record;
- 
-    type Format_Record is record
-       Picture              : Picture_Record;
-       --  Read only
- 
-       Blank_When_Zero      : Boolean;
-       --  Read/write
- 
-       Original_BWZ         : Boolean;
- 
-       --  The following components get written
- 
-       Star_Fill            : Boolean := False;
- 
-       Radix_Position       : Integer := Invalid_Position;
- 
-       Sign_Position,
-       Second_Sign          : Integer := Invalid_Position;
- 
-       Start_Float,
-       End_Float            : Integer := Invalid_Position;
- 
-       Start_Currency,
-       End_Currency         : Integer := Invalid_Position;
- 
-       Max_Leading_Digits   : Integer := 0;
- 
-       Max_Trailing_Digits  : Integer := 0;
- 
-       Max_Currency_Digits  : Integer := 0;
- 
-       Floater              : Wide_Wide_Character := '!';
-       --  Initialized to illegal value
- 
-    end record;
- 
-    type Picture is record
-       Contents : Format_Record;
-    end record;
- 
-    type Number_Attributes is record
-       Negative     : Boolean := False;
- 
-       Has_Fraction : Boolean := False;
- 
-       Start_Of_Int,
-       End_Of_Int,
-       Start_Of_Fraction,
-       End_Of_Fraction : Integer := Invalid_Position;    -- invalid value
-    end record;
- 
-    function Parse_Number_String (Str : String) return Number_Attributes;
-    --  Assumed format is 'IMAGE or Fixed_IO.Put format (depends on no
-    --  trailing blanks...)
- 
-    procedure Precalculate (Pic : in out Format_Record);
-    --  Precalculates fields from the user supplied data
- 
-    function Format_Number
-      (Pic                 : Format_Record;
-       Number              : String;
-       Currency_Symbol     : Wide_Wide_String;
-       Fill_Character      : Wide_Wide_Character;
-       Separator_Character : Wide_Wide_Character;
-       Radix_Point         : Wide_Wide_Character) return Wide_Wide_String;
-    --  Formats number according to Pic
- 
-    function Expand (Picture : String) return String;
- 
- end Ada.Wide_Wide_Text_IO.Editing;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ztenau.adb gcc-8.1.0/gcc/ada/a-ztenau.adb
*** gcc-7.3.0/gcc/ada/a-ztenau.adb	Mon Oct  1 09:41:22 2012
--- gcc-8.1.0/gcc/ada/a-ztenau.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,353 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                  ADA.WIDE_WIDE_TEXT_IO.ENUMERATION_AUX                   --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2012, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Wide_Wide_Text_IO.Generic_Aux; use Ada.Wide_Wide_Text_IO.Generic_Aux;
- with Ada.Characters.Conversions;        use Ada.Characters.Conversions;
- with Ada.Characters.Handling;           use Ada.Characters.Handling;
- with Interfaces.C_Streams;              use Interfaces.C_Streams;
- with System.WCh_Con;                    use System.WCh_Con;
- 
- package body Ada.Wide_Wide_Text_IO.Enumeration_Aux is
- 
-    subtype TFT is Ada.Wide_Wide_Text_IO.File_Type;
-    --  File type required for calls to routines in Aux
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    procedure Store_Char
-      (WC  : Wide_Wide_Character;
-       Buf : out Wide_Wide_String;
-       Ptr : in out Integer);
-    --  Store a single character in buffer, checking for overflow
- 
-    --  These definitions replace the ones in Ada.Characters.Handling, which
-    --  do not seem to work for some strange not understood reason ??? at
-    --  least in the OS/2 version.
- 
-    function To_Lower (C : Character) return Character;
- 
-    ------------------
-    -- Get_Enum_Lit --
-    ------------------
- 
-    procedure Get_Enum_Lit
-      (File   : File_Type;
-       Buf    : out Wide_Wide_String;
-       Buflen : out Natural)
-    is
-       ch  : int;
-       WC  : Wide_Wide_Character;
- 
-    begin
-       Buflen := 0;
-       Load_Skip (TFT (File));
-       ch := Nextc (TFT (File));
- 
-       --  Character literal case. If the initial character is a quote, then
-       --  we read as far as we can without backup (see ACVC test CE3905L)
- 
-       if ch = Character'Pos (''') then
-          Get (File, WC);
-          Store_Char (WC, Buf, Buflen);
- 
-          ch := Nextc (TFT (File));
- 
-          if ch = LM or else ch = EOF then
-             return;
-          end if;
- 
-          Get (File, WC);
-          Store_Char (WC, Buf, Buflen);
- 
-          ch := Nextc (TFT (File));
- 
-          if ch /= Character'Pos (''') then
-             return;
-          end if;
- 
-          Get (File, WC);
-          Store_Char (WC, Buf, Buflen);
- 
-       --  Similarly for identifiers, read as far as we can, in particular,
-       --  do read a trailing underscore (again see ACVC test CE3905L to
-       --  understand why we do this, although it seems somewhat peculiar).
- 
-       else
-          --  Identifier must start with a letter. Any wide character value
-          --  outside the normal Latin-1 range counts as a letter for this.
- 
-          if ch < 255 and then not Is_Letter (Character'Val (ch)) then
-             return;
-          end if;
- 
-          --  If we do have a letter, loop through the characters quitting on
-          --  the first non-identifier character (note that this includes the
-          --  cases of hitting a line mark or page mark).
- 
-          loop
-             Get (File, WC);
-             Store_Char (WC, Buf, Buflen);
- 
-             ch := Nextc (TFT (File));
- 
-             exit when ch = EOF;
- 
-             if ch = Character'Pos ('_') then
-                exit when Buf (Buflen) = '_';
- 
-             elsif ch = Character'Pos (ASCII.ESC) then
-                null;
- 
-             elsif File.WC_Method in WC_Upper_Half_Encoding_Method
-               and then ch > 127
-             then
-                null;
- 
-             else
-                exit when not Is_Letter (Character'Val (ch))
-                            and then
-                          not Is_Digit (Character'Val (ch));
-             end if;
-          end loop;
-       end if;
-    end Get_Enum_Lit;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put
-      (File  : File_Type;
-       Item  : Wide_Wide_String;
-       Width : Field;
-       Set   : Type_Set)
-    is
-       Actual_Width : constant Integer :=
-         Integer'Max (Integer (Width), Item'Length);
- 
-    begin
-       Check_On_One_Line (TFT (File), Actual_Width);
- 
-       if Set = Lower_Case and then Item (Item'First) /= ''' then
-          declare
-             Iteml : Wide_Wide_String (Item'First .. Item'Last);
- 
-          begin
-             for J in Item'Range loop
-                if Is_Character (Item (J)) then
-                   Iteml (J) :=
-                     To_Wide_Wide_Character
-                       (To_Lower (To_Character (Item (J))));
-                else
-                   Iteml (J) := Item (J);
-                end if;
-             end loop;
- 
-             Put (File, Iteml);
-          end;
- 
-       else
-          Put (File, Item);
-       end if;
- 
-       for J in 1 .. Actual_Width - Item'Length loop
-          Put (File, ' ');
-       end loop;
-    end Put;
- 
-    ----------
-    -- Puts --
-    ----------
- 
-    procedure Puts
-      (To   : out Wide_Wide_String;
-       Item : Wide_Wide_String;
-       Set  : Type_Set)
-    is
-       Ptr : Natural;
- 
-    begin
-       if Item'Length > To'Length then
-          raise Layout_Error;
- 
-       else
-          Ptr := To'First;
-          for J in Item'Range loop
-             if Set = Lower_Case
-               and then Item (Item'First) /= '''
-               and then Is_Character (Item (J))
-             then
-                To (Ptr) :=
-                  To_Wide_Wide_Character (To_Lower (To_Character (Item (J))));
-             else
-                To (Ptr) := Item (J);
-             end if;
- 
-             Ptr := Ptr + 1;
-          end loop;
- 
-          while Ptr <= To'Last loop
-             To (Ptr) := ' ';
-             Ptr := Ptr + 1;
-          end loop;
-       end if;
-    end Puts;
- 
-    -------------------
-    -- Scan_Enum_Lit --
-    -------------------
- 
-    procedure Scan_Enum_Lit
-      (From  : Wide_Wide_String;
-       Start : out Natural;
-       Stop  : out Natural)
-    is
-       WC  : Wide_Wide_Character;
- 
-    --  Processing for Scan_Enum_Lit
- 
-    begin
-       Start := From'First;
- 
-       loop
-          if Start > From'Last then
-             raise End_Error;
- 
-          elsif Is_Character (From (Start))
-            and then not Is_Blank (To_Character (From (Start)))
-          then
-             exit;
- 
-          else
-             Start := Start + 1;
-          end if;
-       end loop;
- 
-       --  Character literal case. If the initial character is a quote, then
-       --  we read as far as we can without backup (see ACVC test CE3905L
-       --  which is for the analogous case for reading from a file).
- 
-       if From (Start) = ''' then
-          Stop := Start;
- 
-          if Stop = From'Last then
-             raise Data_Error;
-          else
-             Stop := Stop + 1;
-          end if;
- 
-          if From (Stop) in ' ' .. '~'
-            or else From (Stop) >= Wide_Wide_Character'Val (16#80#)
-          then
-             if Stop = From'Last then
-                raise Data_Error;
-             else
-                Stop := Stop + 1;
- 
-                if From (Stop) = ''' then
-                   return;
-                end if;
-             end if;
-          end if;
- 
-          raise Data_Error;
- 
-       --  Similarly for identifiers, read as far as we can, in particular,
-       --  do read a trailing underscore (again see ACVC test CE3905L to
-       --  understand why we do this, although it seems somewhat peculiar).
- 
-       else
-          --  Identifier must start with a letter, any wide character outside
-          --  the normal Latin-1 range is considered a letter for this test.
- 
-          if Is_Character (From (Start))
-            and then not Is_Letter (To_Character (From (Start)))
-          then
-             raise Data_Error;
-          end if;
- 
-          --  If we do have a letter, loop through the characters quitting on
-          --  the first non-identifier character (note that this includes the
-          --  cases of hitting a line mark or page mark).
- 
-          Stop := Start + 1;
-          while Stop < From'Last loop
-             WC := From (Stop + 1);
- 
-             exit when
-               Is_Character (WC)
-                 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;
-          end loop;
-       end if;
- 
-    end Scan_Enum_Lit;
- 
-    ----------------
-    -- Store_Char --
-    ----------------
- 
-    procedure Store_Char
-      (WC  : Wide_Wide_Character;
-       Buf : out Wide_Wide_String;
-       Ptr : in out Integer)
-    is
-    begin
-       if Ptr = Buf'Last then
-          raise Data_Error;
-       else
-          Ptr := Ptr + 1;
-          Buf (Ptr) := WC;
-       end if;
-    end Store_Char;
- 
-    --------------
-    -- To_Lower --
-    --------------
- 
-    function To_Lower (C : Character) return Character is
-    begin
-       if C in 'A' .. 'Z' then
-          return Character'Val (Character'Pos (C) + 32);
-       else
-          return C;
-       end if;
-    end To_Lower;
- 
- end Ada.Wide_Wide_Text_IO.Enumeration_Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ztenau.ads gcc-8.1.0/gcc/ada/a-ztenau.ads
*** gcc-7.3.0/gcc/ada/a-ztenau.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-ztenau.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,69 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                  ADA.WIDE_WIDE_TEXT_IO.ENUMERATION_AUX                   --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          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- --
- -- 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 routines for Ada.Wide_Wide_Text_IO.Enumeration_IO
- --  that are shared among separate instantiations.
- 
- private package Ada.Wide_Wide_Text_IO.Enumeration_Aux is
- 
-    procedure Get_Enum_Lit
-      (File   : File_Type;
-       Buf    : out Wide_Wide_String;
-       Buflen : out Natural);
-    --  Reads an enumeration literal value from the file, folds to upper case,
-    --  and stores the result in Buf, setting Buflen to the number of stored
-    --  characters (Buf has a lower bound of 1). If more than Buflen characters
-    --  are present in the literal, Data_Error is raised.
- 
-    procedure Scan_Enum_Lit
-      (From  : Wide_Wide_String;
-       Start : out Natural;
-       Stop  : out Natural);
-    --  Scans an enumeration literal at the start of From, skipping any leading
-    --  spaces. Sets Start to the first character, Stop to the last character.
-    --  Raises End_Error if no enumeration literal is found.
- 
-    procedure Put
-      (File  : File_Type;
-       Item  : Wide_Wide_String;
-       Width : Field;
-       Set   : Type_Set);
-    --  Outputs the enumeration literal image stored in Item to the given File,
-    --  using the given Width and Set parameters (Item is always in upper case).
- 
-    procedure Puts
-      (To   : out Wide_Wide_String;
-       Item : Wide_Wide_String;
-       Set  : Type_Set);
-    --  Stores the enumeration literal image stored in Item to the string To,
-    --  padding with trailing spaces if necessary to fill To. Set is used to
- 
- end Ada.Wide_Wide_Text_IO.Enumeration_Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ztenio.adb gcc-8.1.0/gcc/ada/a-ztenio.adb
*** gcc-7.3.0/gcc/ada/a-ztenio.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-ztenio.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,104 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --  A D A . W I D E _ W I D E _ T E X T _ I O . E N U M E R A T I O N _ I O --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          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- --
- -- 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.Wide_Wide_Text_IO.Enumeration_Aux;
- 
- package body Ada.Wide_Wide_Text_IO.Enumeration_IO is
- 
-    package Aux renames Ada.Wide_Wide_Text_IO.Enumeration_Aux;
- 
-    ---------
-    -- Get --
-    ---------
- 
-    procedure Get (File : File_Type; Item : out Enum) is
-       Buf    : Wide_Wide_String (1 .. Enum'Width);
-       Buflen : Natural;
-    begin
-       Aux.Get_Enum_Lit (File, Buf, Buflen);
-       Item := Enum'Wide_Wide_Value (Buf (1 .. Buflen));
-    exception
-       when Constraint_Error => raise Data_Error;
-    end Get;
- 
-    procedure Get (Item : out Enum) is
-    begin
-       Get (Current_Input, Item);
-    end Get;
- 
-    procedure Get
-      (From : Wide_Wide_String;
-       Item : out Enum;
-       Last : out Positive)
-    is
-       Start : Natural;
-    begin
-       Aux.Scan_Enum_Lit (From, Start, Last);
-       Item := Enum'Wide_Wide_Value (From (Start .. Last));
-    exception
-       when Constraint_Error => raise Data_Error;
-    end Get;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put
-      (File  : File_Type;
-       Item  : Enum;
-       Width : Field := Default_Width;
-       Set   : Type_Set := Default_Setting)
-    is
-       Image : constant Wide_Wide_String := Enum'Wide_Wide_Image (Item);
-    begin
-       Aux.Put (File, Image, Width, Set);
-    end Put;
- 
-    procedure Put
-      (Item  : Enum;
-       Width : Field := Default_Width;
-       Set   : Type_Set := Default_Setting)
-    is
-    begin
-       Put (Current_Output, Item, Width, Set);
-    end Put;
- 
-    procedure Put
-      (To   : out Wide_Wide_String;
-       Item : Enum;
-       Set  : Type_Set := Default_Setting)
-    is
-       Image : constant Wide_Wide_String := Enum'Wide_Wide_Image (Item);
-    begin
-       Aux.Puts (To, Image, Set);
-    end Put;
- 
- end Ada.Wide_Wide_Text_IO.Enumeration_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ztenio.ads gcc-8.1.0/gcc/ada/a-ztenio.ads
*** gcc-7.3.0/gcc/ada/a-ztenio.ads	Thu Jul 17 06:35:13 2014
--- gcc-8.1.0/gcc/ada/a-ztenio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,54 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --  A D A . W I D E _ W I D E _ T E X T _ I O . E N U M E R A T I O N _ I O --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  In Ada 95, the package Ada.Wide_Wide_Text_IO.Enumeration_IO is a subpackage
- --  of Wide_Wide_Text_IO. In GNAT we make it a child package to avoid loading
- --  the necessary code if Enumeration_IO is not instantiated. See the routine
- --  Rtsfind.Check_Text_IO_Special_Unit for a description of how we patch up the
- --  difference in semantics so that it is invisible to the Ada programmer.
- 
- private generic
-    type Enum is (<>);
- 
- package Ada.Wide_Wide_Text_IO.Enumeration_IO is
- 
-    Default_Width : Field := 0;
-    Default_Setting : Type_Set := Upper_Case;
- 
-    procedure Get (File : File_Type; Item : out Enum);
-    procedure Get (Item : out Enum);
- 
-    procedure Put
-      (File  : File_Type;
-       Item  : Enum;
-       Width : Field := Default_Width;
-       Set   : Type_Set := Default_Setting);
- 
-    procedure Put
-      (Item  : Enum;
-       Width : Field := Default_Width;
-       Set   : Type_Set := Default_Setting);
- 
-    procedure Get
-      (From : Wide_Wide_String;
-       Item : out Enum;
-       Last : out Positive);
- 
-    procedure Put
-      (To   : out Wide_Wide_String;
-       Item : Enum;
-       Set  : Type_Set := Default_Setting);
- 
- end Ada.Wide_Wide_Text_IO.Enumeration_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ztexio.adb gcc-8.1.0/gcc/ada/a-ztexio.adb
*** gcc-7.3.0/gcc/ada/a-ztexio.adb	Fri Jul 18 10:57:47 2014
--- gcc-8.1.0/gcc/ada/a-ztexio.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,1940 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                A D A . W I D E _ W I D E _ T E X T _ I O                 --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Streams;          use Ada.Streams;
- with Interfaces.C_Streams; use Interfaces.C_Streams;
- 
- with System.CRTL;
- with System.File_IO;
- with System.WCh_Cnv;       use System.WCh_Cnv;
- with System.WCh_Con;       use System.WCh_Con;
- 
- with Ada.Unchecked_Conversion;
- with Ada.Unchecked_Deallocation;
- 
- pragma Elaborate_All (System.File_IO);
- --  Needed because of calls to Chain_File in package body elaboration
- 
- package body Ada.Wide_Wide_Text_IO is
- 
-    package FIO renames System.File_IO;
- 
-    subtype AP is FCB.AFCB_Ptr;
- 
-    function To_FCB is new Ada.Unchecked_Conversion (File_Mode, FCB.File_Mode);
-    function To_TIO is new Ada.Unchecked_Conversion (FCB.File_Mode, File_Mode);
-    use type FCB.File_Mode;
- 
-    use type System.CRTL.size_t;
- 
-    WC_Encoding : Character;
-    pragma Import (C, WC_Encoding, "__gl_wc_encoding");
-    --  Default wide character encoding
- 
-    Err_Name : aliased String := "*stderr" & ASCII.NUL;
-    In_Name  : aliased String := "*stdin" & ASCII.NUL;
-    Out_Name : aliased String := "*stdout" & ASCII.NUL;
-    --  Names of standard files
-    --
-    --  Use "preallocated" strings to avoid calling "new" during the elaboration
-    --  of the run time. This is needed in the tasking case to avoid calling
-    --  Task_Lock too early. A filename is expected to end with a null character
-    --  in the runtime, here the null characters are added just to have a
-    --  correct filename length.
-    --
-    --  Note: the names for these files are bogus, and probably it would be
-    --  better for these files to have no names, but the ACVC tests insist.
-    --  We use names that are bound to fail in open etc.
- 
-    Null_Str : aliased constant String := "";
-    --  Used as form string for standard files
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    function Get_Wide_Wide_Char_Immed
-      (C    : Character;
-       File : File_Type) return Wide_Wide_Character;
-    --  This routine is identical to Get_Wide_Wide_Char, except that the reads
-    --  are done in Get_Immediate mode (i.e. without waiting for a line return).
- 
-    function Getc_Immed (File : File_Type) return int;
-    --  This routine is identical to Getc, except that the read is done in
-    --  Get_Immediate mode (i.e. without waiting for a line return).
- 
-    procedure Putc (ch : int; File : File_Type);
-    --  Outputs the given character to the file, which has already been checked
-    --  for being in output status. Device_Error is raised if the character
-    --  cannot be written.
- 
-    procedure Set_WCEM (File : in out File_Type);
-    --  Called by Open and Create to set the wide character encoding method for
-    --  the file, processing a WCEM form parameter if one is present. File is
-    --  IN OUT because it may be closed in case of an error.
- 
-    procedure Terminate_Line (File : File_Type);
-    --  If the file is in Write_File or Append_File mode, and the current line
-    --  is not terminated, then a line terminator is written using New_Line.
-    --  Note that there is no Terminate_Page routine, because the page mark at
-    --  the end of the file is implied if necessary.
- 
-    procedure Ungetc (ch : int; File : File_Type);
-    --  Pushes back character into stream, using ungetc. The caller has checked
-    --  that the file is in read status. Device_Error is raised if the character
-    --  cannot be pushed back. An attempt to push back and end of file character
-    --  (EOF) is ignored.
- 
-    -------------------
-    -- AFCB_Allocate --
-    -------------------
- 
-    function AFCB_Allocate
-      (Control_Block : Wide_Wide_Text_AFCB) return FCB.AFCB_Ptr
-    is
-       pragma Unreferenced (Control_Block);
-    begin
-       return new Wide_Wide_Text_AFCB;
-    end AFCB_Allocate;
- 
-    ----------------
-    -- AFCB_Close --
-    ----------------
- 
-    procedure AFCB_Close (File : not null access Wide_Wide_Text_AFCB) is
-    begin
-       --  If the file being closed is one of the current files, then close
-       --  the corresponding current file. It is not clear that this action
-       --  is required (RM A.10.3(23)) but it seems reasonable, and besides
-       --  ACVC test CE3208A expects this behavior.
- 
-       if File_Type (File) = Current_In then
-          Current_In := null;
-       elsif File_Type (File) = Current_Out then
-          Current_Out := null;
-       elsif File_Type (File) = Current_Err then
-          Current_Err := null;
-       end if;
- 
-       Terminate_Line (File_Type (File));
-    end AFCB_Close;
- 
-    ---------------
-    -- AFCB_Free --
-    ---------------
- 
-    procedure AFCB_Free (File : not null access Wide_Wide_Text_AFCB) is
-       type FCB_Ptr is access all Wide_Wide_Text_AFCB;
-       FT : FCB_Ptr := FCB_Ptr (File);
- 
-       procedure Free is new
-         Ada.Unchecked_Deallocation (Wide_Wide_Text_AFCB, FCB_Ptr);
- 
-    begin
-       Free (FT);
-    end AFCB_Free;
- 
-    -----------
-    -- Close --
-    -----------
- 
-    procedure Close (File : in out File_Type) is
-    begin
-       FIO.Close (AP (File)'Unrestricted_Access);
-    end Close;
- 
-    ---------
-    -- Col --
-    ---------
- 
-    --  Note: we assume that it is impossible in practice for the column
-    --  to exceed the value of Count'Last, i.e. no check is required for
-    --  overflow raising layout error.
- 
-    function Col (File : File_Type) return Positive_Count is
-    begin
-       FIO.Check_File_Open (AP (File));
-       return File.Col;
-    end Col;
- 
-    function Col return Positive_Count is
-    begin
-       return Col (Current_Out);
-    end Col;
- 
-    ------------
-    -- Create --
-    ------------
- 
-    procedure Create
-      (File : in out File_Type;
-       Mode : File_Mode := Out_File;
-       Name : String := "";
-       Form : String := "")
-    is
-       Dummy_File_Control_Block : Wide_Wide_Text_AFCB;
-       pragma Warnings (Off, Dummy_File_Control_Block);
-       --  Yes, we know this is never assigned a value, only the tag
-       --  is used for dispatching purposes, so that's expected.
- 
-    begin
-       FIO.Open (File_Ptr  => AP (File),
-                 Dummy_FCB => Dummy_File_Control_Block,
-                 Mode      => To_FCB (Mode),
-                 Name      => Name,
-                 Form      => Form,
-                 Amethod   => 'W',
-                 Creat     => True,
-                 Text      => True);
- 
-       File.Self := File;
-       Set_WCEM (File);
-    end Create;
- 
-    -------------------
-    -- Current_Error --
-    -------------------
- 
-    function Current_Error return File_Type is
-    begin
-       return Current_Err;
-    end Current_Error;
- 
-    function Current_Error return File_Access is
-    begin
-       return Current_Err.Self'Access;
-    end Current_Error;
- 
-    -------------------
-    -- Current_Input --
-    -------------------
- 
-    function Current_Input return File_Type is
-    begin
-       return Current_In;
-    end Current_Input;
- 
-    function Current_Input return File_Access is
-    begin
-       return Current_In.Self'Access;
-    end Current_Input;
- 
-    --------------------
-    -- Current_Output --
-    --------------------
- 
-    function Current_Output return File_Type is
-    begin
-       return Current_Out;
-    end Current_Output;
- 
-    function Current_Output return File_Access is
-    begin
-       return Current_Out.Self'Access;
-    end Current_Output;
- 
-    ------------
-    -- Delete --
-    ------------
- 
-    procedure Delete (File : in out File_Type) is
-    begin
-       FIO.Delete (AP (File)'Unrestricted_Access);
-    end Delete;
- 
-    -----------------
-    -- End_Of_File --
-    -----------------
- 
-    function End_Of_File (File : File_Type) return Boolean is
-       ch  : int;
- 
-    begin
-       FIO.Check_Read_Status (AP (File));
- 
-       if File.Before_Wide_Wide_Character then
-          return False;
- 
-       elsif File.Before_LM then
-          if File.Before_LM_PM then
-             return Nextc (File) = EOF;
-          end if;
- 
-       else
-          ch := Getc (File);
- 
-          if ch = EOF then
-             return True;
- 
-          elsif ch /= LM then
-             Ungetc (ch, File);
-             return False;
- 
-          else -- ch = LM
-             File.Before_LM := True;
-          end if;
-       end if;
- 
-       --  Here we are just past the line mark with Before_LM set so that we
-       --  do not have to try to back up past the LM, thus avoiding the need
-       --  to back up more than one character.
- 
-       ch := Getc (File);
- 
-       if ch = EOF then
-          return True;
- 
-       elsif ch = PM and then File.Is_Regular_File then
-          File.Before_LM_PM := True;
-          return Nextc (File) = EOF;
- 
-       --  Here if neither EOF nor PM followed end of line
- 
-       else
-          Ungetc (ch, File);
-          return False;
-       end if;
- 
-    end End_Of_File;
- 
-    function End_Of_File return Boolean is
-    begin
-       return End_Of_File (Current_In);
-    end End_Of_File;
- 
-    -----------------
-    -- End_Of_Line --
-    -----------------
- 
-    function End_Of_Line (File : File_Type) return Boolean is
-       ch : int;
- 
-    begin
-       FIO.Check_Read_Status (AP (File));
- 
-       if File.Before_Wide_Wide_Character then
-          return False;
- 
-       elsif File.Before_LM then
-          return True;
- 
-       else
-          ch := Getc (File);
- 
-          if ch = EOF then
-             return True;
- 
-          else
-             Ungetc (ch, File);
-             return (ch = LM);
-          end if;
-       end if;
-    end End_Of_Line;
- 
-    function End_Of_Line return Boolean is
-    begin
-       return End_Of_Line (Current_In);
-    end End_Of_Line;
- 
-    -----------------
-    -- End_Of_Page --
-    -----------------
- 
-    function End_Of_Page (File : File_Type) return Boolean is
-       ch  : int;
- 
-    begin
-       FIO.Check_Read_Status (AP (File));
- 
-       if not File.Is_Regular_File then
-          return False;
- 
-       elsif File.Before_Wide_Wide_Character then
-          return False;
- 
-       elsif File.Before_LM then
-          if File.Before_LM_PM then
-             return True;
-          end if;
- 
-       else
-          ch := Getc (File);
- 
-          if ch = EOF then
-             return True;
- 
-          elsif ch /= LM then
-             Ungetc (ch, File);
-             return False;
- 
-          else -- ch = LM
-             File.Before_LM := True;
-          end if;
-       end if;
- 
-       --  Here we are just past the line mark with Before_LM set so that we
-       --  do not have to try to back up past the LM, thus avoiding the need
-       --  to back up more than one character.
- 
-       ch := Nextc (File);
- 
-       return ch = PM or else ch = EOF;
-    end End_Of_Page;
- 
-    function End_Of_Page return Boolean is
-    begin
-       return End_Of_Page (Current_In);
-    end End_Of_Page;
- 
-    -----------
-    -- Flush --
-    -----------
- 
-    procedure Flush (File : File_Type) is
-    begin
-       FIO.Flush (AP (File));
-    end Flush;
- 
-    procedure Flush is
-    begin
-       Flush (Current_Out);
-    end Flush;
- 
-    ----------
-    -- Form --
-    ----------
- 
-    function Form (File : File_Type) return String is
-    begin
-       return FIO.Form (AP (File));
-    end Form;
- 
-    ---------
-    -- Get --
-    ---------
- 
-    procedure Get
-      (File : File_Type;
-       Item : out Wide_Wide_Character)
-    is
-       C  : Character;
- 
-    begin
-       FIO.Check_Read_Status (AP (File));
- 
-       if File.Before_Wide_Wide_Character then
-          File.Before_Wide_Wide_Character := False;
-          Item := File.Saved_Wide_Wide_Character;
- 
-       --  Ada.Text_IO checks Before_LM_PM here, shouldn't we do the same???
- 
-       else
-          Get_Character (File, C);
-          Item := Get_Wide_Wide_Char (C, File);
-       end if;
-    end Get;
- 
-    procedure Get (Item : out Wide_Wide_Character) is
-    begin
-       Get (Current_In, Item);
-    end Get;
- 
-    procedure Get
-      (File : File_Type;
-       Item : out Wide_Wide_String)
-    is
-    begin
-       for J in Item'Range loop
-          Get (File, Item (J));
-       end loop;
-    end Get;
- 
-    procedure Get (Item : out Wide_Wide_String) is
-    begin
-       Get (Current_In, Item);
-    end Get;
- 
-    -------------------
-    -- Get_Character --
-    -------------------
- 
-    procedure Get_Character
-      (File : File_Type;
-       Item : out Character)
-    is
-       ch : int;
- 
-    begin
-       if File.Before_LM then
-          File.Before_LM := False;
-          File.Before_LM_PM := False;
-          File.Col := 1;
- 
-          if File.Before_LM_PM then
-             File.Line := 1;
-             File.Page := File.Page + 1;
-             File.Before_LM_PM := False;
- 
-          else
-             File.Line := File.Line + 1;
-          end if;
-       end if;
- 
-       loop
-          ch := Getc (File);
- 
-          if ch = EOF then
-             raise End_Error;
- 
-          elsif ch = LM then
-             File.Line := File.Line + 1;
-             File.Col := 1;
- 
-          elsif ch = PM and then File.Is_Regular_File then
-             File.Page := File.Page + 1;
-             File.Line := 1;
- 
-          else
-             Item := Character'Val (ch);
-             File.Col := File.Col + 1;
-             return;
-          end if;
-       end loop;
-    end Get_Character;
- 
-    -------------------
-    -- Get_Immediate --
-    -------------------
- 
-    procedure Get_Immediate
-      (File : File_Type;
-       Item : out Wide_Wide_Character)
-    is
-       ch : int;
- 
-    begin
-       FIO.Check_Read_Status (AP (File));
- 
-       if File.Before_Wide_Wide_Character then
-          File.Before_Wide_Wide_Character := False;
-          Item := File.Saved_Wide_Wide_Character;
- 
-       elsif File.Before_LM then
-          File.Before_LM := False;
-          File.Before_LM_PM := False;
-          Item := Wide_Wide_Character'Val (LM);
- 
-       else
-          ch := Getc_Immed (File);
- 
-          if ch = EOF then
-             raise End_Error;
-          else
-             Item := Get_Wide_Wide_Char_Immed (Character'Val (ch), File);
-          end if;
-       end if;
-    end Get_Immediate;
- 
-    procedure Get_Immediate
-      (Item : out Wide_Wide_Character)
-    is
-    begin
-       Get_Immediate (Current_In, Item);
-    end Get_Immediate;
- 
-    procedure Get_Immediate
-      (File      : File_Type;
-       Item      : out Wide_Wide_Character;
-       Available : out Boolean)
-    is
-       ch : int;
- 
-    begin
-       FIO.Check_Read_Status (AP (File));
-       Available := True;
- 
-       if File.Before_Wide_Wide_Character then
-          File.Before_Wide_Wide_Character := False;
-          Item := File.Saved_Wide_Wide_Character;
- 
-       elsif File.Before_LM then
-          File.Before_LM := False;
-          File.Before_LM_PM := False;
-          Item := Wide_Wide_Character'Val (LM);
- 
-       else
-          --  Shouldn't we use getc_immediate_nowait here, like Text_IO???
- 
-          ch := Getc_Immed (File);
- 
-          if ch = EOF then
-             raise End_Error;
-          else
-             Item := Get_Wide_Wide_Char_Immed (Character'Val (ch), File);
-          end if;
-       end if;
-    end Get_Immediate;
- 
-    procedure Get_Immediate
-      (Item      : out Wide_Wide_Character;
-       Available : out Boolean)
-    is
-    begin
-       Get_Immediate (Current_In, Item, Available);
-    end Get_Immediate;
- 
-    --------------
-    -- Get_Line --
-    --------------
- 
-    procedure Get_Line
-      (File : File_Type;
-       Item : out Wide_Wide_String;
-       Last : out Natural)
-    is
-    begin
-       FIO.Check_Read_Status (AP (File));
-       Last := Item'First - 1;
- 
-       --  Immediate exit for null string, this is a case in which we do not
-       --  need to test for end of file and we do not skip a line mark under
-       --  any circumstances.
- 
-       if Last >= Item'Last then
-          return;
-       end if;
- 
-       --  Here we have at least one character, if we are immediately before
-       --  a line mark, then we will just skip past it storing no characters.
- 
-       if File.Before_LM then
-          File.Before_LM := False;
-          File.Before_LM_PM := False;
- 
-       --  Otherwise we need to read some characters
- 
-       else
-          --  If we are at the end of file now, it means we are trying to
-          --  skip a file terminator and we raise End_Error (RM A.10.7(20))
- 
-          if Nextc (File) = EOF then
-             raise End_Error;
-          end if;
- 
-          --  Loop through characters in string
- 
-          loop
-             --  Exit the loop if read is terminated by encountering line mark
-             --  Note that the use of Skip_Line here ensures we properly deal
-             --  with setting the page and line numbers.
- 
-             if End_Of_Line (File) then
-                Skip_Line (File);
-                return;
-             end if;
- 
-             --  Otherwise store the character, note that we know that ch is
-             --  something other than LM or EOF. It could possibly be a page
-             --  mark if there is a stray page mark in the middle of a line,
-             --  but this is not an official page mark in any case, since
-             --  official page marks can only follow a line mark. The whole
-             --  page business is pretty much nonsense anyway, so we do not
-             --  want to waste time trying to make sense out of non-standard
-             --  page marks in the file. This means that the behavior of
-             --  Get_Line is different from repeated Get of a character, but
-             --  that's too bad. We only promise that page numbers etc make
-             --  sense if the file is formatted in a standard manner.
- 
-             --  Note: we do not adjust the column number because it is quicker
-             --  to adjust it once at the end of the operation than incrementing
-             --  it each time around the loop.
- 
-             Last := Last + 1;
-             Get (File, Item (Last));
- 
-             --  All done if the string is full, this is the case in which
-             --  we do not skip the following line mark. We need to adjust
-             --  the column number in this case.
- 
-             if Last = Item'Last then
-                File.Col := File.Col + Count (Item'Length);
-                return;
-             end if;
- 
-             --  Exit from the loop if we are at the end of file. This happens
-             --  if we have a last line that is not terminated with a line mark.
-             --  In this case we consider that there is an implied line mark;
-             --  this is a non-standard file, but we will treat it nicely.
- 
-             exit when Nextc (File) = EOF;
-          end loop;
-       end if;
-    end Get_Line;
- 
-    procedure Get_Line
-      (Item : out Wide_Wide_String;
-       Last : out Natural)
-    is
-    begin
-       Get_Line (Current_In, Item, Last);
-    end Get_Line;
- 
-    function Get_Line (File : File_Type) return Wide_Wide_String is
-       Buffer : Wide_Wide_String (1 .. 500);
-       Last   : Natural;
- 
-       function Get_Rest (S : Wide_Wide_String) return Wide_Wide_String;
-       --  This is a recursive function that reads the rest of the line and
-       --  returns it. S is the part read so far.
- 
-       --------------
-       -- Get_Rest --
-       --------------
- 
-       function Get_Rest (S : Wide_Wide_String) return Wide_Wide_String is
- 
-          --  Each time we allocate a buffer the same size as what we have
-          --  read so far. This limits us to a logarithmic number of calls
-          --  to Get_Rest and also ensures only a linear use of stack space.
- 
-          Buffer : Wide_Wide_String (1 .. S'Length);
-          Last   : Natural;
- 
-       begin
-          Get_Line (File, Buffer, Last);
- 
-          declare
-             R : constant Wide_Wide_String := S & Buffer (1 .. Last);
-          begin
-             if Last < Buffer'Last then
-                return R;
-             else
-                return Get_Rest (R);
-             end if;
-          end;
-       end Get_Rest;
- 
-    --  Start of processing for Get_Line
- 
-    begin
-       Get_Line (File, Buffer, Last);
- 
-       if Last < Buffer'Last then
-          return Buffer (1 .. Last);
-       else
-          return Get_Rest (Buffer (1 .. Last));
-       end if;
-    end Get_Line;
- 
-    function Get_Line return Wide_Wide_String is
-    begin
-       return Get_Line (Current_In);
-    end Get_Line;
- 
-    ------------------------
-    -- Get_Wide_Wide_Char --
-    ------------------------
- 
-    function Get_Wide_Wide_Char
-      (C    : Character;
-       File : File_Type) return Wide_Wide_Character
-    is
-       function In_Char return Character;
-       --  Function used to obtain additional characters it the wide character
-       --  sequence is more than one character long.
- 
-       function WC_In is new Char_Sequence_To_UTF_32 (In_Char);
- 
-       -------------
-       -- In_Char --
-       -------------
- 
-       function In_Char return Character is
-          ch : constant Integer := Getc (File);
-       begin
-          if ch = EOF then
-             raise End_Error;
-          else
-             return Character'Val (ch);
-          end if;
-       end In_Char;
- 
-    --  Start of processing for Get_Wide_Wide_Char
- 
-    begin
-       FIO.Check_Read_Status (AP (File));
-       return Wide_Wide_Character'Val (WC_In (C, File.WC_Method));
-    end Get_Wide_Wide_Char;
- 
-    ------------------------------
-    -- Get_Wide_Wide_Char_Immed --
-    ------------------------------
- 
-    function Get_Wide_Wide_Char_Immed
-      (C    : Character;
-       File : File_Type) return Wide_Wide_Character
-    is
-       function In_Char return Character;
-       --  Function used to obtain additional characters it the wide character
-       --  sequence is more than one character long.
- 
-       function WC_In is new Char_Sequence_To_UTF_32 (In_Char);
- 
-       -------------
-       -- In_Char --
-       -------------
- 
-       function In_Char return Character is
-          ch : constant Integer := Getc_Immed (File);
-       begin
-          if ch = EOF then
-             raise End_Error;
-          else
-             return Character'Val (ch);
-          end if;
-       end In_Char;
- 
-    --  Start of processing for Get_Wide_Wide_Char_Immed
- 
-    begin
-       FIO.Check_Read_Status (AP (File));
-       return Wide_Wide_Character'Val (WC_In (C, File.WC_Method));
-    end Get_Wide_Wide_Char_Immed;
- 
-    ----------
-    -- Getc --
-    ----------
- 
-    function Getc (File : File_Type) return int is
-       ch : int;
- 
-    begin
-       ch := fgetc (File.Stream);
- 
-       if ch = EOF and then ferror (File.Stream) /= 0 then
-          raise Device_Error;
-       else
-          return ch;
-       end if;
-    end Getc;
- 
-    ----------------
-    -- Getc_Immed --
-    ----------------
- 
-    function Getc_Immed (File : File_Type) return int is
-       ch          : int;
-       end_of_file : int;
- 
-       procedure getc_immediate
-         (stream : FILEs; ch : out int; end_of_file : out int);
-       pragma Import (C, getc_immediate, "getc_immediate");
- 
-    begin
-       FIO.Check_Read_Status (AP (File));
- 
-       if File.Before_LM then
-          File.Before_LM := False;
-          File.Before_LM_PM := False;
-          ch := LM;
- 
-       else
-          getc_immediate (File.Stream, ch, end_of_file);
- 
-          if ferror (File.Stream) /= 0 then
-             raise Device_Error;
-          elsif end_of_file /= 0 then
-             return EOF;
-          end if;
-       end if;
- 
-       return ch;
-    end Getc_Immed;
- 
-    -------------------------------
-    -- Initialize_Standard_Files --
-    -------------------------------
- 
-    procedure Initialize_Standard_Files is
-    begin
-       Standard_Err.Stream            := stderr;
-       Standard_Err.Name              := Err_Name'Access;
-       Standard_Err.Form              := Null_Str'Unrestricted_Access;
-       Standard_Err.Mode              := FCB.Out_File;
-       Standard_Err.Is_Regular_File   := is_regular_file (fileno (stderr)) /= 0;
-       Standard_Err.Is_Temporary_File := False;
-       Standard_Err.Is_System_File    := True;
-       Standard_Err.Text_Encoding     := Default_Text;
-       Standard_Err.Access_Method     := 'T';
-       Standard_Err.Self              := Standard_Err;
-       Standard_Err.WC_Method         := Default_WCEM;
- 
-       Standard_In.Stream             := stdin;
-       Standard_In.Name               := In_Name'Access;
-       Standard_In.Form               := Null_Str'Unrestricted_Access;
-       Standard_In.Mode               := FCB.In_File;
-       Standard_In.Is_Regular_File    := is_regular_file (fileno (stdin)) /= 0;
-       Standard_In.Is_Temporary_File  := False;
-       Standard_In.Is_System_File     := True;
-       Standard_In.Text_Encoding      := Default_Text;
-       Standard_In.Access_Method      := 'T';
-       Standard_In.Self               := Standard_In;
-       Standard_In.WC_Method          := Default_WCEM;
- 
-       Standard_Out.Stream            := stdout;
-       Standard_Out.Name              := Out_Name'Access;
-       Standard_Out.Form              := Null_Str'Unrestricted_Access;
-       Standard_Out.Mode              := FCB.Out_File;
-       Standard_Out.Is_Regular_File   := is_regular_file (fileno (stdout)) /= 0;
-       Standard_Out.Is_Temporary_File := False;
-       Standard_Out.Is_System_File    := True;
-       Standard_Out.Text_Encoding     := Default_Text;
-       Standard_Out.Access_Method     := 'T';
-       Standard_Out.Self              := Standard_Out;
-       Standard_Out.WC_Method         := Default_WCEM;
- 
-       FIO.Make_Unbuffered (AP (Standard_Out));
-       FIO.Make_Unbuffered (AP (Standard_Err));
-    end Initialize_Standard_Files;
- 
-    -------------
-    -- Is_Open --
-    -------------
- 
-    function Is_Open (File : File_Type) return Boolean is
-    begin
-       return FIO.Is_Open (AP (File));
-    end Is_Open;
- 
-    ----------
-    -- Line --
-    ----------
- 
-    --  Note: we assume that it is impossible in practice for the line
-    --  to exceed the value of Count'Last, i.e. no check is required for
-    --  overflow raising layout error.
- 
-    function Line (File : File_Type) return Positive_Count is
-    begin
-       FIO.Check_File_Open (AP (File));
-       return File.Line;
-    end Line;
- 
-    function Line return Positive_Count is
-    begin
-       return Line (Current_Out);
-    end Line;
- 
-    -----------------
-    -- Line_Length --
-    -----------------
- 
-    function Line_Length (File : File_Type) return Count is
-    begin
-       FIO.Check_Write_Status (AP (File));
-       return File.Line_Length;
-    end Line_Length;
- 
-    function Line_Length return Count is
-    begin
-       return Line_Length (Current_Out);
-    end Line_Length;
- 
-    ----------------
-    -- Look_Ahead --
-    ----------------
- 
-    procedure Look_Ahead
-      (File        : File_Type;
-       Item        : out Wide_Wide_Character;
-       End_Of_Line : out Boolean)
-    is
-       ch : int;
- 
-    --  Start of processing for Look_Ahead
- 
-    begin
-       FIO.Check_Read_Status (AP (File));
- 
-       --  If we are logically before a line mark, we can return immediately
- 
-       if File.Before_LM then
-          End_Of_Line := True;
-          Item := Wide_Wide_Character'Val (0);
- 
-       --  If we are before a wide character, just return it (this can happen
-       --  if there are two calls to Look_Ahead in a row).
- 
-       elsif File.Before_Wide_Wide_Character then
-          End_Of_Line := False;
-          Item := File.Saved_Wide_Wide_Character;
- 
-       --  otherwise we must read a character from the input stream
- 
-       else
-          ch := Getc (File);
- 
-          if ch = LM
-            or else ch = EOF
-            or else (ch = EOF and then File.Is_Regular_File)
-          then
-             End_Of_Line := True;
-             Ungetc (ch, File);
-             Item := Wide_Wide_Character'Val (0);
- 
-          --  Case where character obtained does not represent the start of an
-          --  encoded sequence so it stands for itself and we can unget it with
-          --  no difficulty.
- 
-          elsif not Is_Start_Of_Encoding
-                      (Character'Val (ch), File.WC_Method)
-          then
-             End_Of_Line := False;
-             Ungetc (ch, File);
-             Item := Wide_Wide_Character'Val (ch);
- 
-          --  For the start of an encoding, we read the character using the
-          --  Get_Wide_Wide_Char routine. It will occupy more than one byte so
-          --  we can't put it back with ungetc. Instead we save it in the
-          --  control block, setting a flag that everyone interested in reading
-          --  characters must test before reading the stream.
- 
-          else
-             Item := Get_Wide_Wide_Char (Character'Val (ch), File);
-             End_Of_Line := False;
-             File.Saved_Wide_Wide_Character := Item;
-             File.Before_Wide_Wide_Character := True;
-          end if;
-       end if;
-    end Look_Ahead;
- 
-    procedure Look_Ahead
-      (Item        : out Wide_Wide_Character;
-       End_Of_Line : out Boolean)
-    is
-    begin
-       Look_Ahead (Current_In, Item, End_Of_Line);
-    end Look_Ahead;
- 
-    ----------
-    -- Mode --
-    ----------
- 
-    function Mode (File : File_Type) return File_Mode is
-    begin
-       return To_TIO (FIO.Mode (AP (File)));
-    end Mode;
- 
-    ----------
-    -- Name --
-    ----------
- 
-    function Name (File : File_Type) return String is
-    begin
-       return FIO.Name (AP (File));
-    end Name;
- 
-    --------------
-    -- New_Line --
-    --------------
- 
-    procedure New_Line
-      (File    : File_Type;
-       Spacing : Positive_Count := 1)
-    is
-    begin
-       --  Raise Constraint_Error if out of range value. The reason for this
-       --  explicit test is that we don't want junk values around, even if
-       --  checks are off in the caller.
- 
-       if not Spacing'Valid then
-          raise Constraint_Error;
-       end if;
- 
-       FIO.Check_Write_Status (AP (File));
- 
-       for K in 1 .. Spacing loop
-          Putc (LM, File);
-          File.Line := File.Line + 1;
- 
-          if File.Page_Length /= 0
-            and then File.Line > File.Page_Length
-          then
-             Putc (PM, File);
-             File.Line := 1;
-             File.Page := File.Page + 1;
-          end if;
-       end loop;
- 
-       File.Col := 1;
-    end New_Line;
- 
-    procedure New_Line (Spacing : Positive_Count := 1) is
-    begin
-       New_Line (Current_Out, Spacing);
-    end New_Line;
- 
-    --------------
-    -- New_Page --
-    --------------
- 
-    procedure New_Page (File : File_Type) is
-    begin
-       FIO.Check_Write_Status (AP (File));
- 
-       if File.Col /= 1 or else File.Line = 1 then
-          Putc (LM, File);
-       end if;
- 
-       Putc (PM, File);
-       File.Page := File.Page + 1;
-       File.Line := 1;
-       File.Col := 1;
-    end New_Page;
- 
-    procedure New_Page is
-    begin
-       New_Page (Current_Out);
-    end New_Page;
- 
-    -----------
-    -- Nextc --
-    -----------
- 
-    function Nextc (File : File_Type) return int is
-       ch : int;
- 
-    begin
-       ch := fgetc (File.Stream);
- 
-       if ch = EOF then
-          if ferror (File.Stream) /= 0 then
-             raise Device_Error;
-          end if;
- 
-       else
-          if ungetc (ch, File.Stream) = EOF then
-             raise Device_Error;
-          end if;
-       end if;
- 
-       return ch;
-    end Nextc;
- 
-    ----------
-    -- Open --
-    ----------
- 
-    procedure Open
-      (File : in out File_Type;
-       Mode : File_Mode;
-       Name : String;
-       Form : String := "")
-    is
-       Dummy_File_Control_Block : Wide_Wide_Text_AFCB;
-       pragma Warnings (Off, Dummy_File_Control_Block);
-       --  Yes, we know this is never assigned a value, only the tag
-       --  is used for dispatching purposes, so that's expected.
- 
-    begin
-       FIO.Open (File_Ptr  => AP (File),
-                 Dummy_FCB => Dummy_File_Control_Block,
-                 Mode      => To_FCB (Mode),
-                 Name      => Name,
-                 Form      => Form,
-                 Amethod   => 'W',
-                 Creat     => False,
-                 Text      => True);
- 
-       File.Self := File;
-       Set_WCEM (File);
-    end Open;
- 
-    ----------
-    -- Page --
-    ----------
- 
-    --  Note: we assume that it is impossible in practice for the page
-    --  to exceed the value of Count'Last, i.e. no check is required for
-    --  overflow raising layout error.
- 
-    function Page (File : File_Type) return Positive_Count is
-    begin
-       FIO.Check_File_Open (AP (File));
-       return File.Page;
-    end Page;
- 
-    function Page return Positive_Count is
-    begin
-       return Page (Current_Out);
-    end Page;
- 
-    -----------------
-    -- Page_Length --
-    -----------------
- 
-    function Page_Length (File : File_Type) return Count is
-    begin
-       FIO.Check_Write_Status (AP (File));
-       return File.Page_Length;
-    end Page_Length;
- 
-    function Page_Length return Count is
-    begin
-       return Page_Length (Current_Out);
-    end Page_Length;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put
-      (File : File_Type;
-       Item : Wide_Wide_Character)
-    is
-       procedure Out_Char (C : Character);
-       --  Procedure to output one character of a wide character sequence
- 
-       procedure WC_Out is new UTF_32_To_Char_Sequence (Out_Char);
- 
-       --------------
-       -- Out_Char --
-       --------------
- 
-       procedure Out_Char (C : Character) is
-       begin
-          Putc (Character'Pos (C), File);
-       end Out_Char;
- 
-    --  Start of processing for Put
- 
-    begin
-       FIO.Check_Write_Status (AP (File));
-       WC_Out (Wide_Wide_Character'Pos (Item), File.WC_Method);
-       File.Col := File.Col + 1;
-    end Put;
- 
-    procedure Put (Item : Wide_Wide_Character) is
-    begin
-       Put (Current_Out, Item);
-    end Put;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put
-      (File : File_Type;
-       Item : Wide_Wide_String)
-    is
-    begin
-       for J in Item'Range loop
-          Put (File, Item (J));
-       end loop;
-    end Put;
- 
-    procedure Put (Item : Wide_Wide_String) is
-    begin
-       Put (Current_Out, Item);
-    end Put;
- 
-    --------------
-    -- Put_Line --
-    --------------
- 
-    procedure Put_Line
-      (File : File_Type;
-       Item : Wide_Wide_String)
-    is
-    begin
-       Put (File, Item);
-       New_Line (File);
-    end Put_Line;
- 
-    procedure Put_Line (Item : Wide_Wide_String) is
-    begin
-       Put (Current_Out, Item);
-       New_Line (Current_Out);
-    end Put_Line;
- 
-    ----------
-    -- Putc --
-    ----------
- 
-    procedure Putc (ch : int; File : File_Type) is
-    begin
-       if fputc (ch, File.Stream) = EOF then
-          raise Device_Error;
-       end if;
-    end Putc;
- 
-    ----------
-    -- Read --
-    ----------
- 
-    --  This is the primitive Stream Read routine, used when a Text_IO file
-    --  is treated directly as a stream using Text_IO.Streams.Stream.
- 
-    procedure Read
-      (File : in out Wide_Wide_Text_AFCB;
-       Item : out Stream_Element_Array;
-       Last : out Stream_Element_Offset)
-    is
-       Discard_ch : int;
-       pragma Unreferenced (Discard_ch);
- 
-    begin
-       --  Need to deal with Before_Wide_Wide_Character ???
- 
-       if File.Mode /= FCB.In_File then
-          raise Mode_Error;
-       end if;
- 
-       --  Deal with case where our logical and physical position do not match
-       --  because of being after an LM or LM-PM sequence when in fact we are
-       --  logically positioned before it.
- 
-       if File.Before_LM then
- 
-          --  If we are before a PM, then it is possible for a stream read
-          --  to leave us after the LM and before the PM, which is a bit
-          --  odd. The easiest way to deal with this is to unget the PM,
-          --  so we are indeed positioned between the characters. This way
-          --  further stream read operations will work correctly, and the
-          --  effect on text processing is a little weird, but what can
-          --  be expected if stream and text input are mixed this way?
- 
-          if File.Before_LM_PM then
-             Discard_ch := ungetc (PM, File.Stream);
-             File.Before_LM_PM := False;
-          end if;
- 
-          File.Before_LM := False;
- 
-          Item (Item'First) := Stream_Element (Character'Pos (ASCII.LF));
- 
-          if Item'Length = 1 then
-             Last := Item'Last;
- 
-          else
-             Last :=
-               Item'First +
-                 Stream_Element_Offset
-                   (fread (buffer => Item'Address,
-                           index  => size_t (Item'First + 1),
-                           size   => 1,
-                           count  => Item'Length - 1,
-                           stream => File.Stream));
-          end if;
- 
-          return;
-       end if;
- 
-       --  Now we do the read. Since this is a text file, it is normally in
-       --  text mode, but stream data must be read in binary mode, so we
-       --  temporarily set binary mode for the read, resetting it after.
-       --  These calls have no effect in a system (like Unix) where there is
-       --  no distinction between text and binary files.
- 
-       set_binary_mode (fileno (File.Stream));
- 
-       Last :=
-         Item'First +
-           Stream_Element_Offset
-             (fread (Item'Address, 1, Item'Length, File.Stream)) - 1;
- 
-       if Last < Item'Last then
-          if ferror (File.Stream) /= 0 then
-             raise Device_Error;
-          end if;
-       end if;
- 
-       set_text_mode (fileno (File.Stream));
-    end Read;
- 
-    -----------
-    -- Reset --
-    -----------
- 
-    procedure Reset
-      (File : in out File_Type;
-       Mode : File_Mode)
-    is
-    begin
-       --  Don't allow change of mode for current file (RM A.10.2(5))
- 
-       if (File = Current_In or else
-           File = Current_Out  or else
-           File = Current_Error)
-         and then To_FCB (Mode) /= File.Mode
-       then
-          raise Mode_Error;
-       end if;
- 
-       Terminate_Line (File);
-       FIO.Reset (AP (File)'Unrestricted_Access, To_FCB (Mode));
-       File.Page := 1;
-       File.Line := 1;
-       File.Col  := 1;
-       File.Line_Length := 0;
-       File.Page_Length := 0;
-       File.Before_LM := False;
-       File.Before_LM_PM := False;
-    end Reset;
- 
-    procedure Reset (File : in out File_Type) is
-    begin
-       Terminate_Line (File);
-       FIO.Reset (AP (File)'Unrestricted_Access);
-       File.Page := 1;
-       File.Line := 1;
-       File.Col  := 1;
-       File.Line_Length := 0;
-       File.Page_Length := 0;
-       File.Before_LM := False;
-       File.Before_LM_PM := False;
-    end Reset;
- 
-    -------------
-    -- Set_Col --
-    -------------
- 
-    procedure Set_Col
-      (File : File_Type;
-       To   : Positive_Count)
-    is
-       ch : int;
- 
-    begin
-       --  Raise Constraint_Error if out of range value. The reason for this
-       --  explicit test is that we don't want junk values around, even if
-       --  checks are off in the caller.
- 
-       if not To'Valid then
-          raise Constraint_Error;
-       end if;
- 
-       FIO.Check_File_Open (AP (File));
- 
-       if To = File.Col then
-          return;
-       end if;
- 
-       if Mode (File) >= Out_File then
-          if File.Line_Length /= 0 and then To > File.Line_Length then
-             raise Layout_Error;
-          end if;
- 
-          if To < File.Col then
-             New_Line (File);
-          end if;
- 
-          while File.Col < To loop
-             Put (File, ' ');
-          end loop;
- 
-       else
-          loop
-             ch := Getc (File);
- 
-             if ch = EOF then
-                raise End_Error;
- 
-             elsif ch = LM then
-                File.Line := File.Line + 1;
-                File.Col := 1;
- 
-             elsif ch = PM and then File.Is_Regular_File then
-                File.Page := File.Page + 1;
-                File.Line := 1;
-                File.Col := 1;
- 
-             elsif To = File.Col then
-                Ungetc (ch, File);
-                return;
- 
-             else
-                File.Col := File.Col + 1;
-             end if;
-          end loop;
-       end if;
-    end Set_Col;
- 
-    procedure Set_Col (To : Positive_Count) is
-    begin
-       Set_Col (Current_Out, To);
-    end Set_Col;
- 
-    ---------------
-    -- Set_Error --
-    ---------------
- 
-    procedure Set_Error (File : File_Type) is
-    begin
-       FIO.Check_Write_Status (AP (File));
-       Current_Err := File;
-    end Set_Error;
- 
-    ---------------
-    -- Set_Input --
-    ---------------
- 
-    procedure Set_Input (File : File_Type) is
-    begin
-       FIO.Check_Read_Status (AP (File));
-       Current_In := File;
-    end Set_Input;
- 
-    --------------
-    -- Set_Line --
-    --------------
- 
-    procedure Set_Line
-      (File : File_Type;
-       To   : Positive_Count)
-    is
-    begin
-       --  Raise Constraint_Error if out of range value. The reason for this
-       --  explicit test is that we don't want junk values around, even if
-       --  checks are off in the caller.
- 
-       if not To'Valid then
-          raise Constraint_Error;
-       end if;
- 
-       FIO.Check_File_Open (AP (File));
- 
-       if To = File.Line then
-          return;
-       end if;
- 
-       if Mode (File) >= Out_File then
-          if File.Page_Length /= 0 and then To > File.Page_Length then
-             raise Layout_Error;
-          end if;
- 
-          if To < File.Line then
-             New_Page (File);
-          end if;
- 
-          while File.Line < To loop
-             New_Line (File);
-          end loop;
- 
-       else
-          while To /= File.Line loop
-             Skip_Line (File);
-          end loop;
-       end if;
-    end Set_Line;
- 
-    procedure Set_Line (To : Positive_Count) is
-    begin
-       Set_Line (Current_Out, To);
-    end Set_Line;
- 
-    ---------------------
-    -- Set_Line_Length --
-    ---------------------
- 
-    procedure Set_Line_Length (File : File_Type; To : Count) is
-    begin
-       --  Raise Constraint_Error if out of range value. The reason for this
-       --  explicit test is that we don't want junk values around, even if
-       --  checks are off in the caller.
- 
-       if not To'Valid then
-          raise Constraint_Error;
-       end if;
- 
-       FIO.Check_Write_Status (AP (File));
-       File.Line_Length := To;
-    end Set_Line_Length;
- 
-    procedure Set_Line_Length (To : Count) is
-    begin
-       Set_Line_Length (Current_Out, To);
-    end Set_Line_Length;
- 
-    ----------------
-    -- Set_Output --
-    ----------------
- 
-    procedure Set_Output (File : File_Type) is
-    begin
-       FIO.Check_Write_Status (AP (File));
-       Current_Out := File;
-    end Set_Output;
- 
-    ---------------------
-    -- Set_Page_Length --
-    ---------------------
- 
-    procedure Set_Page_Length (File : File_Type; To : Count) is
-    begin
-       --  Raise Constraint_Error if out of range value. The reason for this
-       --  explicit test is that we don't want junk values around, even if
-       --  checks are off in the caller.
- 
-       if not To'Valid then
-          raise Constraint_Error;
-       end if;
- 
-       FIO.Check_Write_Status (AP (File));
-       File.Page_Length := To;
-    end Set_Page_Length;
- 
-    procedure Set_Page_Length (To : Count) is
-    begin
-       Set_Page_Length (Current_Out, To);
-    end Set_Page_Length;
- 
-    --------------
-    -- Set_WCEM --
-    --------------
- 
-    procedure Set_WCEM (File : in out File_Type) is
-       Start : Natural;
-       Stop  : Natural;
- 
-    begin
-       File.WC_Method := WCEM_Brackets;
-       FIO.Form_Parameter (File.Form.all, "wcem", Start, Stop);
- 
-       if Start = 0 then
-          File.WC_Method := WCEM_Brackets;
- 
-       else
-          if Stop = Start then
-             for J in WC_Encoding_Letters'Range loop
-                if File.Form (Start) = WC_Encoding_Letters (J) then
-                   File.WC_Method := J;
-                   return;
-                end if;
-             end loop;
-          end if;
- 
-          Close (File);
-          raise Use_Error with "invalid WCEM form parameter";
-       end if;
-    end Set_WCEM;
- 
-    ---------------
-    -- Skip_Line --
-    ---------------
- 
-    procedure Skip_Line
-      (File    : File_Type;
-       Spacing : Positive_Count := 1)
-    is
-       ch : int;
- 
-    begin
-       --  Raise Constraint_Error if out of range value. The reason for this
-       --  explicit test is that we don't want junk values around, even if
-       --  checks are off in the caller.
- 
-       if not Spacing'Valid then
-          raise Constraint_Error;
-       end if;
- 
-       FIO.Check_Read_Status (AP (File));
- 
-       for L in 1 .. Spacing loop
-          if File.Before_LM then
-             File.Before_LM := False;
-             File.Before_LM_PM := False;
- 
-          else
-             ch := Getc (File);
- 
-             --  If at end of file now, then immediately raise End_Error. Note
-             --  that we can never be positioned between a line mark and a page
-             --  mark, so if we are at the end of file, we cannot logically be
-             --  before the implicit page mark that is at the end of the file.
- 
-             --  For the same reason, we do not need an explicit check for a
-             --  page mark. If there is a FF in the middle of a line, the file
-             --  is not in canonical format and we do not care about the page
-             --  numbers for files other than ones in canonical format.
- 
-             if ch = EOF then
-                raise End_Error;
-             end if;
- 
-             --  If not at end of file, then loop till we get to an LM or EOF.
-             --  The latter case happens only in non-canonical files where the
-             --  last line is not terminated by LM, but we don't want to blow
-             --  up for such files, so we assume an implicit LM in this case.
- 
-             loop
-                exit when ch = LM or else ch = EOF;
-                ch := Getc (File);
-             end loop;
-          end if;
- 
-          --  We have got past a line mark, now, for a regular file only,
-          --  see if a page mark immediately follows this line mark and
-          --  if so, skip past the page mark as well. We do not do this
-          --  for non-regular files, since it would cause an undesirable
-          --  wait for an additional character.
- 
-          File.Col := 1;
-          File.Line := File.Line + 1;
- 
-          if File.Before_LM_PM then
-             File.Page := File.Page + 1;
-             File.Line := 1;
-             File.Before_LM_PM := False;
- 
-          elsif File.Is_Regular_File then
-             ch := Getc (File);
- 
-             --  Page mark can be explicit, or implied at the end of the file
- 
-             if (ch = PM or else ch = EOF)
-               and then File.Is_Regular_File
-             then
-                File.Page := File.Page + 1;
-                File.Line := 1;
-             else
-                Ungetc (ch, File);
-             end if;
-          end if;
-       end loop;
- 
-       File.Before_Wide_Wide_Character := False;
-    end Skip_Line;
- 
-    procedure Skip_Line (Spacing : Positive_Count := 1) is
-    begin
-       Skip_Line (Current_In, Spacing);
-    end Skip_Line;
- 
-    ---------------
-    -- Skip_Page --
-    ---------------
- 
-    procedure Skip_Page (File : File_Type) is
-       ch : int;
- 
-    begin
-       FIO.Check_Read_Status (AP (File));
- 
-       --  If at page mark already, just skip it
- 
-       if File.Before_LM_PM then
-          File.Before_LM := False;
-          File.Before_LM_PM := False;
-          File.Page := File.Page + 1;
-          File.Line := 1;
-          File.Col  := 1;
-          return;
-       end if;
- 
-       --  This is a bit tricky, if we are logically before an LM then
-       --  it is not an error if we are at an end of file now, since we
-       --  are not really at it.
- 
-       if File.Before_LM then
-          File.Before_LM := False;
-          File.Before_LM_PM := False;
-          ch := Getc (File);
- 
-       --  Otherwise we do raise End_Error if we are at the end of file now
- 
-       else
-          ch := Getc (File);
- 
-          if ch = EOF then
-             raise End_Error;
-          end if;
-       end if;
- 
-       --  Now we can just rumble along to the next page mark, or to the
-       --  end of file, if that comes first. The latter case happens when
-       --  the page mark is implied at the end of file.
- 
-       loop
-          exit when ch = EOF
-            or else (ch = PM and then File.Is_Regular_File);
-          ch := Getc (File);
-       end loop;
- 
-       File.Page := File.Page + 1;
-       File.Line := 1;
-       File.Col  := 1;
-       File.Before_Wide_Wide_Character := False;
-    end Skip_Page;
- 
-    procedure Skip_Page is
-    begin
-       Skip_Page (Current_In);
-    end Skip_Page;
- 
-    --------------------
-    -- Standard_Error --
-    --------------------
- 
-    function Standard_Error return File_Type is
-    begin
-       return Standard_Err;
-    end Standard_Error;
- 
-    function Standard_Error return File_Access is
-    begin
-       return Standard_Err'Access;
-    end Standard_Error;
- 
-    --------------------
-    -- Standard_Input --
-    --------------------
- 
-    function Standard_Input return File_Type is
-    begin
-       return Standard_In;
-    end Standard_Input;
- 
-    function Standard_Input return File_Access is
-    begin
-       return Standard_In'Access;
-    end Standard_Input;
- 
-    ---------------------
-    -- Standard_Output --
-    ---------------------
- 
-    function Standard_Output return File_Type is
-    begin
-       return Standard_Out;
-    end Standard_Output;
- 
-    function Standard_Output return File_Access is
-    begin
-       return Standard_Out'Access;
-    end Standard_Output;
- 
-    --------------------
-    -- Terminate_Line --
-    --------------------
- 
-    procedure Terminate_Line (File : File_Type) is
-    begin
-       FIO.Check_File_Open (AP (File));
- 
-       --  For file other than In_File, test for needing to terminate last line
- 
-       if Mode (File) /= In_File then
- 
-          --  If not at start of line definition need new line
- 
-          if File.Col /= 1 then
-             New_Line (File);
- 
-          --  For files other than standard error and standard output, we
-          --  make sure that an empty file has a single line feed, so that
-          --  it is properly formatted. We avoid this for the standard files
-          --  because it is too much of a nuisance to have these odd line
-          --  feeds when nothing has been written to the file.
- 
-          elsif (File /= Standard_Err and then File /= Standard_Out)
-            and then (File.Line = 1 and then File.Page = 1)
-          then
-             New_Line (File);
-          end if;
-       end if;
-    end Terminate_Line;
- 
-    ------------
-    -- Ungetc --
-    ------------
- 
-    procedure Ungetc (ch : int; File : File_Type) is
-    begin
-       if ch /= EOF then
-          if ungetc (ch, File.Stream) = EOF then
-             raise Device_Error;
-          end if;
-       end if;
-    end Ungetc;
- 
-    -----------
-    -- Write --
-    -----------
- 
-    --  This is the primitive Stream Write routine, used when a Text_IO file
-    --  is treated directly as a stream using Text_IO.Streams.Stream.
- 
-    procedure Write
-      (File : in out Wide_Wide_Text_AFCB;
-       Item : Stream_Element_Array)
-    is
-       pragma Warnings (Off, File);
-       --  Because in this implementation we don't need IN OUT, we only read
- 
-       Siz : constant size_t := Item'Length;
- 
-    begin
-       if File.Mode = FCB.In_File then
-          raise Mode_Error;
-       end if;
- 
-       --  Now we do the write. Since this is a text file, it is normally in
-       --  text mode, but stream data must be written in binary mode, so we
-       --  temporarily set binary mode for the write, resetting it after.
-       --  These calls have no effect in a system (like Unix) where there is
-       --  no distinction between text and binary files.
- 
-       set_binary_mode (fileno (File.Stream));
- 
-       if fwrite (Item'Address, 1, Siz, File.Stream) /= Siz then
-          raise Device_Error;
-       end if;
- 
-       set_text_mode (fileno (File.Stream));
-    end Write;
- 
- begin
-    --  Initialize Standard Files
- 
-    for J in WC_Encoding_Method loop
-       if WC_Encoding = WC_Encoding_Letters (J) then
-          Default_WCEM := J;
-       end if;
-    end loop;
- 
-    Initialize_Standard_Files;
- 
-    FIO.Chain_File (AP (Standard_In));
-    FIO.Chain_File (AP (Standard_Out));
-    FIO.Chain_File (AP (Standard_Err));
- 
- end Ada.Wide_Wide_Text_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ztexio.ads gcc-8.1.0/gcc/ada/a-ztexio.ads
*** gcc-7.3.0/gcc/ada/a-ztexio.ads	Thu Jul 17 06:37:45 2014
--- gcc-8.1.0/gcc/ada/a-ztexio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,497 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                A D A . W I D E _ W I D E _ T E X T _ I O                 --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2014, Free Software Foundation, 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Note: the generic subpackages of Wide_Wide_Text_IO (Integer_IO, Float_IO,
- --  Fixed_IO, Modular_IO, Decimal_IO and Enumeration_IO) appear as private
- --  children in GNAT. These children are with'ed automatically if they are
- --  referenced, so this rearrangement is invisible to user programs, but has
- --  the advantage that only the needed parts of Wide_Wide_Text_IO are processed
- --  and loaded.
- 
- with Ada.IO_Exceptions;
- with Ada.Streams;
- 
- with Interfaces.C_Streams;
- 
- with System;
- with System.File_Control_Block;
- with System.WCh_Con;
- 
- package Ada.Wide_Wide_Text_IO is
- 
-    type File_Type is limited private;
-    type File_Mode is (In_File, Out_File, Append_File);
- 
-    --  The following representation clause allows the use of unchecked
-    --  conversion for rapid translation between the File_Mode type
-    --  used in this package and System.File_IO.
- 
-    for File_Mode use
-      (In_File     => 0,  -- System.FIle_IO.File_Mode'Pos (In_File)
-       Out_File    => 2,  -- System.File_IO.File_Mode'Pos (Out_File)
-       Append_File => 3); -- System.File_IO.File_Mode'Pos (Append_File)
- 
-    type Count is range 0 .. Natural'Last;
-    --  The value of Count'Last must be large enough so that the assumption that
-    --  the Line, Column and Page counts can never exceed this value is valid.
- 
-    subtype Positive_Count is Count range 1 .. Count'Last;
- 
-    Unbounded : constant Count := 0;
-    --  Line and page length
- 
-    subtype Field is Integer range 0 .. 255;
-    --  Note: if for any reason, there is a need to increase this value, then it
-    --  will be necessary to change the corresponding value in System.Img_Real
-    --  in file s-imgrea.adb.
- 
-    subtype Number_Base is Integer range 2 .. 16;
- 
-    type Type_Set is (Lower_Case, Upper_Case);
- 
-    ---------------------
-    -- File Management --
-    ---------------------
- 
-    procedure Create
-      (File : in out File_Type;
-       Mode : File_Mode := Out_File;
-       Name : String := "";
-       Form : String := "");
- 
-    procedure Open
-      (File : in out File_Type;
-       Mode : File_Mode;
-       Name : String;
-       Form : String := "");
- 
-    procedure Close  (File : in out File_Type);
-    procedure Delete (File : in out File_Type);
-    procedure Reset  (File : in out File_Type; Mode : File_Mode);
-    procedure Reset  (File : in out File_Type);
- 
-    function Mode (File : File_Type) return File_Mode;
-    function Name (File : File_Type) return String;
-    function Form (File : File_Type) return String;
- 
-    function Is_Open (File : File_Type) return Boolean;
- 
-    ------------------------------------------------------
-    -- Control of default input, output and error files --
-    ------------------------------------------------------
- 
-    procedure Set_Input  (File : File_Type);
-    procedure Set_Output (File : File_Type);
-    procedure Set_Error  (File : File_Type);
- 
-    function Standard_Input  return File_Type;
-    function Standard_Output return File_Type;
-    function Standard_Error  return File_Type;
- 
-    function Current_Input  return File_Type;
-    function Current_Output return File_Type;
-    function Current_Error  return File_Type;
- 
-    type File_Access is access constant File_Type;
- 
-    function Standard_Input  return File_Access;
-    function Standard_Output return File_Access;
-    function Standard_Error  return File_Access;
- 
-    function Current_Input  return File_Access;
-    function Current_Output return File_Access;
-    function Current_Error  return File_Access;
- 
-    --------------------
-    -- Buffer control --
-    --------------------
- 
-    --  Note: The parameter file is in out in the RM, but as pointed out
-    --  in <<95-5166.a Tucker Taft 95-6-23>> this is clearly an oversight.
- 
-    procedure Flush (File : File_Type);
-    procedure Flush;
- 
-    --------------------------------------------
-    -- Specification of line and page lengths --
-    --------------------------------------------
- 
-    procedure Set_Line_Length (File : File_Type; To : Count);
-    procedure Set_Line_Length (To : Count);
- 
-    procedure Set_Page_Length (File : File_Type; To : Count);
-    procedure Set_Page_Length (To : Count);
- 
-    function Line_Length (File : File_Type) return Count;
-    function Line_Length return Count;
- 
-    function Page_Length (File : File_Type) return Count;
-    function Page_Length return Count;
- 
-    ------------------------------------
-    -- Column, Line, and Page Control --
-    ------------------------------------
- 
-    procedure New_Line (File : File_Type; Spacing : Positive_Count := 1);
-    procedure New_Line (Spacing : Positive_Count := 1);
- 
-    procedure Skip_Line (File : File_Type; Spacing : Positive_Count := 1);
-    procedure Skip_Line (Spacing : Positive_Count := 1);
- 
-    function End_Of_Line (File : File_Type) return Boolean;
-    function End_Of_Line return Boolean;
- 
-    procedure New_Page (File : File_Type);
-    procedure New_Page;
- 
-    procedure Skip_Page (File : File_Type);
-    procedure Skip_Page;
- 
-    function End_Of_Page (File : File_Type) return Boolean;
-    function End_Of_Page return Boolean;
- 
-    function End_Of_File (File : File_Type) return Boolean;
-    function End_Of_File return Boolean;
- 
-    procedure Set_Col (File : File_Type;  To : Positive_Count);
-    procedure Set_Col (To : Positive_Count);
- 
-    procedure Set_Line (File : File_Type; To : Positive_Count);
-    procedure Set_Line (To : Positive_Count);
- 
-    function Col (File : File_Type) return Positive_Count;
-    function Col return Positive_Count;
- 
-    function Line (File : File_Type) return Positive_Count;
-    function Line return Positive_Count;
- 
-    function Page (File : File_Type) return Positive_Count;
-    function Page return Positive_Count;
- 
-    ----------------------------
-    -- Character Input-Output --
-    ----------------------------
- 
-    procedure Get (File : File_Type; Item : out Wide_Wide_Character);
-    procedure Get (Item : out Wide_Wide_Character);
-    procedure Put (File : File_Type; Item : Wide_Wide_Character);
-    procedure Put (Item : Wide_Wide_Character);
- 
-    procedure Look_Ahead
-      (File        : File_Type;
-       Item        : out Wide_Wide_Character;
-       End_Of_Line : out Boolean);
- 
-    procedure Look_Ahead
-      (Item        : out Wide_Wide_Character;
-       End_Of_Line : out Boolean);
- 
-    procedure Get_Immediate
-      (File : File_Type;
-       Item : out Wide_Wide_Character);
- 
-    procedure Get_Immediate
-      (Item : out Wide_Wide_Character);
- 
-    procedure Get_Immediate
-      (File      : File_Type;
-       Item      : out Wide_Wide_Character;
-       Available : out Boolean);
- 
-    procedure Get_Immediate
-      (Item      : out Wide_Wide_Character;
-       Available : out Boolean);
- 
-    -------------------------
-    -- String Input-Output --
-    -------------------------
- 
-    procedure Get (File : File_Type; Item : out Wide_Wide_String);
-    procedure Get (Item : out Wide_Wide_String);
-    procedure Put (File : File_Type; Item : Wide_Wide_String);
-    procedure Put (Item : Wide_Wide_String);
- 
-    procedure Get_Line
-      (File : File_Type;
-       Item : out Wide_Wide_String;
-       Last : out Natural);
- 
-    function Get_Line (File : File_Type) return Wide_Wide_String;
-    pragma Ada_05 (Get_Line);
- 
-    function Get_Line return Wide_Wide_String;
-    pragma Ada_05 (Get_Line);
- 
-    procedure Get_Line
-      (Item : out Wide_Wide_String;
-       Last : out Natural);
- 
-    procedure Put_Line
-      (File : File_Type;
-       Item : Wide_Wide_String);
- 
-    procedure Put_Line
-      (Item : Wide_Wide_String);
- 
-    ---------------------------------------
-    -- Generic packages for Input-Output --
-    ---------------------------------------
- 
-    --  The generic packages:
- 
-    --    Ada.Wide_Wide_Text_IO.Integer_IO
-    --    Ada.Wide_Wide_Text_IO.Modular_IO
-    --    Ada.Wide_Wide_Text_IO.Float_IO
-    --    Ada.Wide_Wide_Text_IO.Fixed_IO
-    --    Ada.Wide_Wide_Text_IO.Decimal_IO
-    --    Ada.Wide_Wide_Text_IO.Enumeration_IO
- 
-    --  are implemented as separate child packages in GNAT, so the
-    --  spec and body of these packages are to be found in separate
-    --  child units. This implementation detail is hidden from the
-    --  Ada programmer by special circuitry in the compiler that
-    --  treats these child packages as though they were nested in
-    --  Text_IO. The advantage of this special processing is that
-    --  the subsidiary routines needed if these generics are used
-    --  are not loaded when they are not used.
- 
-    ----------------
-    -- Exceptions --
-    ----------------
- 
-    Status_Error : exception renames IO_Exceptions.Status_Error;
-    Mode_Error   : exception renames IO_Exceptions.Mode_Error;
-    Name_Error   : exception renames IO_Exceptions.Name_Error;
-    Use_Error    : exception renames IO_Exceptions.Use_Error;
-    Device_Error : exception renames IO_Exceptions.Device_Error;
-    End_Error    : exception renames IO_Exceptions.End_Error;
-    Data_Error   : exception renames IO_Exceptions.Data_Error;
-    Layout_Error : exception renames IO_Exceptions.Layout_Error;
- 
- private
- 
-    --  The following procedures have a File_Type formal of mode IN OUT because
-    --  they may close the original file. The Close operation may raise an
-    --  exception, but in that case we want any assignment to the formal to
-    --  be effective anyway, so it must be passed by reference (or the caller
-    --  will be left with a dangling pointer).
- 
-    pragma Export_Procedure
-      (Internal  => Close,
-       External  => "",
-       Mechanism => Reference);
-    pragma Export_Procedure
-      (Internal  => Delete,
-       External  => "",
-       Mechanism => Reference);
-    pragma Export_Procedure
-      (Internal        => Reset,
-       External        => "",
-       Parameter_Types => (File_Type),
-       Mechanism       => Reference);
-    pragma Export_Procedure
-      (Internal        => Reset,
-       External        => "",
-       Parameter_Types => (File_Type, File_Mode),
-       Mechanism       => (File => Reference));
- 
-    package WCh_Con renames System.WCh_Con;
- 
-    -----------------------------------
-    -- Handling of Format Characters --
-    -----------------------------------
- 
-    --  Line marks are represented by the single character ASCII.LF (16#0A#).
-    --  In DOS and similar systems, underlying file translation takes care
-    --  of translating this to and from the standard CR/LF sequences used in
-    --  these operating systems to mark the end of a line. On output there is
-    --  always a line mark at the end of the last line, but on input, this
-    --  line mark can be omitted, and is implied by the end of file.
- 
-    --  Page marks are represented by the single character ASCII.FF (16#0C#),
-    --  The page mark at the end of the file may be omitted, and is normally
-    --  omitted on output unless an explicit New_Page call is made before
-    --  closing the file. No page mark is added when a file is appended to,
-    --  so, in accordance with the permission in (RM A.10.2(4)), there may
-    --  or may not be a page mark separating preexisting text in the file
-    --  from the new text to be written.
- 
-    --  A file mark is marked by the physical end of file. In DOS translation
-    --  mode on input, an EOF character (SUB = 16#1A#) gets translated to the
-    --  physical end of file, so in effect this character is recognized as
-    --  marking the end of file in DOS and similar systems.
- 
-    LM : constant := Character'Pos (ASCII.LF);
-    --  Used as line mark
- 
-    PM : constant := Character'Pos (ASCII.FF);
-    --  Used as page mark, except at end of file where it is implied
- 
-    ------------------------------------------
-    -- Wide_Wide_Text_IO File Control Block --
-    ------------------------------------------
- 
-    Default_WCEM : WCh_Con.WC_Encoding_Method := WCh_Con.WCEM_UTF8;
-    --  This gets modified during initialization (see body) using the default
-    --  value established in the call to Set_Globals.
- 
-    package FCB renames System.File_Control_Block;
- 
-    type Wide_Wide_Text_AFCB is new FCB.AFCB with record
-       Page        : Count := 1;
-       Line        : Count := 1;
-       Col         : Count := 1;
-       Line_Length : Count := 0;
-       Page_Length : Count := 0;
- 
-       Self : aliased File_Type;
-       --  Set to point to the containing Text_AFCB block. This is used to
-       --  implement the Current_{Error,Input,Output} functions which return
-       --  a File_Access, the file access value returned is a pointer to
-       --  the Self field of the corresponding file.
- 
-       Before_LM : Boolean := False;
-       --  This flag is used to deal with the anomalies introduced by the
-       --  peculiar definition of End_Of_File and End_Of_Page in Ada. These
-       --  functions require looking ahead more than one character. Since
-       --  there is no convenient way of backing up more than one character,
-       --  what we do is to leave ourselves positioned past the LM, but set
-       --  this flag, so that we know that from an Ada point of view we are
-       --  in front of the LM, not after it. A bit odd, but it works.
- 
-       Before_LM_PM : Boolean := False;
-       --  This flag similarly handles the case of being physically positioned
-       --  after a LM-PM sequence when logically we are before the LM-PM. This
-       --  flag can only be set if Before_LM is also set.
- 
-       WC_Method : WCh_Con.WC_Encoding_Method := Default_WCEM;
-       --  Encoding method to be used for this file
- 
-       Before_Wide_Wide_Character : Boolean := False;
-       --  This flag is set to indicate that a wide character in the input has
-       --  been read by Wide_Wide_Text_IO.Look_Ahead. If it is set to True,
-       --  then it means that the stream is logically positioned before the
-       --  character but is physically positioned after it. The character
-       --  involved must not be in the range 16#00#-16#7F#, i.e. if the flag is
-       --  set, then we know the next character has a code greater than 16#7F#,
-       --  and the value of this character is saved in
-       --  Saved_Wide_Wide_Character.
- 
-       Saved_Wide_Wide_Character : Wide_Wide_Character;
-       --  This field is valid only if Before_Wide_Wide_Character is set. It
-       --  contains a wide character read by Look_Ahead. If Look_Ahead
-       --  reads a character in the range 16#0000# to 16#007F#, then it
-       --  can use ungetc to put it back, but ungetc cannot be called
-       --  more than once, so for characters above this range, we don't
-       --  try to back up the file. Instead we save the character in this
-       --  field and set the flag Before_Wide_Wide_Character to indicate that
-       --  we are logically positioned before this character even though
-       --  the stream is physically positioned after it.
- 
-    end record;
- 
-    type File_Type is access all Wide_Wide_Text_AFCB;
- 
-    function AFCB_Allocate
-      (Control_Block : Wide_Wide_Text_AFCB) return FCB.AFCB_Ptr;
- 
-    procedure AFCB_Close (File : not null access Wide_Wide_Text_AFCB);
-    procedure AFCB_Free  (File : not null access Wide_Wide_Text_AFCB);
- 
-    procedure Read
-      (File : in out Wide_Wide_Text_AFCB;
-       Item : out Ada.Streams.Stream_Element_Array;
-       Last : out Ada.Streams.Stream_Element_Offset);
-    --  Read operation used when Wide_Wide_Text_IO file is treated as a Stream
- 
-    procedure Write
-      (File : in out Wide_Wide_Text_AFCB;
-       Item : Ada.Streams.Stream_Element_Array);
-    --  Write operation used when Wide_Wide_Text_IO file is treated as a Stream
- 
-    ------------------------
-    -- The Standard Files --
-    ------------------------
- 
-    Standard_Err_AFCB : aliased Wide_Wide_Text_AFCB;
-    Standard_In_AFCB  : aliased Wide_Wide_Text_AFCB;
-    Standard_Out_AFCB : aliased Wide_Wide_Text_AFCB;
- 
-    Standard_Err : aliased File_Type := Standard_Err_AFCB'Access;
-    Standard_In  : aliased File_Type := Standard_In_AFCB'Access;
-    Standard_Out : aliased File_Type := Standard_Out_AFCB'Access;
-    --  Standard files
- 
-    Current_In   : aliased File_Type := Standard_In;
-    Current_Out  : aliased File_Type := Standard_Out;
-    Current_Err  : aliased File_Type := Standard_Err;
-    --  Current files
- 
-    procedure Initialize_Standard_Files;
-    --  Initializes the file control blocks for the standard files. Called from
-    --  the elaboration routine for this package, and from Reset_Standard_Files
-    --  in package Ada.Wide_Wide_Text_IO.Reset_Standard_Files.
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    --  These subprograms are in the private part of the spec so that they can
-    --  be shared by the children of Ada.Text_IO.Wide_Wide_Text_IO.
- 
-    function Getc (File : File_Type) return Interfaces.C_Streams.int;
-    --  Gets next character from file, which has already been checked for being
-    --  in read status, and returns the character read if no error occurs. The
-    --  result is EOF if the end of file was read.
- 
-    procedure Get_Character (File : File_Type; Item : out Character);
-    --  This is essentially copy of Wide_Wide_Text_IO.Get. It obtains a single
-    --  obtains a single character from the input file File, and places it in
-    --  Item. This result may be the leading character of a Wide_Wide_Character
-    --  sequence, but that is up to the caller to deal with.
- 
-    function Get_Wide_Wide_Char
-      (C    : Character;
-       File : File_Type) return Wide_Wide_Character;
-    --  This function is shared by Get and Get_Immediate to extract a wide
-    --  character value from the given File. The first byte has already been
-    --  read and is passed in C. The wide character value is returned as the
-    --  result, and the file pointer is bumped past the character.
- 
-    function Nextc (File : File_Type) return Interfaces.C_Streams.int;
-    --  Returns next character from file without skipping past it (i.e. it is a
-    --  combination of Getc followed by an Ungetc).
- 
- end Ada.Wide_Wide_Text_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ztfiio.adb gcc-8.1.0/gcc/ada/a-ztfiio.adb
*** gcc-7.3.0/gcc/ada/a-ztfiio.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-ztfiio.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,126 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --     A D A . T E X T _ I O . W I D E _ T E X T _ I O . F I X E D _ I O    --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          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- --
- -- 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.Wide_Wide_Text_IO.Float_Aux;
- with System.WCh_Con; use System.WCh_Con;
- with System.WCh_WtS; use System.WCh_WtS;
- 
- package body Ada.Wide_Wide_Text_IO.Fixed_IO is
- 
-    subtype TFT is Ada.Wide_Wide_Text_IO.File_Type;
-    --  File type required for calls to routines in Aux
- 
-    package Aux renames Ada.Wide_Wide_Text_IO.Float_Aux;
- 
-    ---------
-    -- Get --
-    ---------
- 
-    procedure Get
-      (File  : File_Type;
-       Item  : out Num;
-       Width : Field := 0)
-    is
-    begin
-       Aux.Get (TFT (File), Long_Long_Float (Item), Width);
- 
-    exception
-       when Constraint_Error => raise Data_Error;
-    end Get;
- 
-    procedure Get
-      (Item  : out Num;
-       Width : Field := 0)
-    is
-    begin
-       Get (Current_Input, Item, Width);
-    end Get;
- 
-    procedure Get
-      (From : Wide_Wide_String;
-       Item : out Num;
-       Last : out Positive)
-    is
-       S : constant String := Wide_Wide_String_To_String (From, WCEM_Upper);
-       --  String on which we do the actual conversion. Note that the method
-       --  used for wide character encoding is irrelevant, since if there is
-       --  a character outside the Standard.Character range then the call to
-       --  Aux.Gets will raise Data_Error in any case.
- 
-    begin
-       Aux.Gets (S, Long_Long_Float (Item), Last);
- 
-    exception
-       when Constraint_Error => raise Data_Error;
-    end Get;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put
-      (File : File_Type;
-       Item : Num;
-       Fore : Field := Default_Fore;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp)
-    is
-    begin
-       Aux.Put (TFT (File), Long_Long_Float (Item), Fore, Aft, Exp);
-    end Put;
- 
-    procedure Put
-      (Item : Num;
-       Fore : Field := Default_Fore;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp)
-    is
-    begin
-       Put (Current_Output, Item, Fore, Aft, Exp);
-    end Put;
- 
-    procedure Put
-      (To   : out Wide_Wide_String;
-       Item : Num;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp)
-    is
-       S : String (To'First .. To'Last);
- 
-    begin
-       Aux.Puts (S, Long_Long_Float (Item), Aft, Exp);
- 
-       for J in S'Range loop
-          To (J) := Wide_Wide_Character'Val (Character'Pos (S (J)));
-       end loop;
-    end Put;
- 
- end Ada.Wide_Wide_Text_IO.Fixed_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ztfiio.ads gcc-8.1.0/gcc/ada/a-ztfiio.ads
*** gcc-7.3.0/gcc/ada/a-ztfiio.ads	Thu Jul 17 06:35:13 2014
--- gcc-8.1.0/gcc/ada/a-ztfiio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,64 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --        A D A . W I D E _ W I D E _ T E X T _ I O . F I X E D _ I O       --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  In Ada 95, the package Ada.Wide_Wide_Text_IO.Fixed_IO is a subpackage of
- --  Wide_Wide_Text_IO. In GNAT we make it a child package to avoid loading
- --  the necessary code if Fixed_IO is not instantiated. See the routine
- --  Rtsfind.Check_Text_IO_Special_Unit for a description of how we patch up
- --  the difference in semantics so that it is invisible to the Ada programmer.
- 
- private generic
-    type Num is delta <>;
- 
- package Ada.Wide_Wide_Text_IO.Fixed_IO is
- 
-    Default_Fore : Field := Num'Fore;
-    Default_Aft  : Field := Num'Aft;
-    Default_Exp  : Field := 0;
- 
-    procedure Get
-      (File  : File_Type;
-       Item  : out Num;
-       Width : Field := 0);
- 
-    procedure Get
-      (Item  : out Num;
-       Width : Field := 0);
- 
-    procedure Put
-      (File : File_Type;
-       Item : Num;
-       Fore : Field := Default_Fore;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp);
- 
-    procedure Put
-      (Item : Num;
-       Fore : Field := Default_Fore;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp);
- 
-    procedure Get
-      (From : Wide_Wide_String;
-       Item : out Num;
-       Last : out Positive);
- 
-    procedure Put
-      (To   : out Wide_Wide_String;
-       Item : Num;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp);
- 
- end Ada.Wide_Wide_Text_IO.Fixed_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ztflau.adb gcc-8.1.0/gcc/ada/a-ztflau.adb
*** gcc-7.3.0/gcc/ada/a-ztflau.adb	Tue Jan  6 09:24:33 2015
--- gcc-8.1.0/gcc/ada/a-ztflau.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,235 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                        GNAT RUN-TIME COMPONENTS                          --
- --                                                                          --
- --      A D A . W I D E _ W I D E _ T E X T _ I O . F L O A T _ A U X       --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Wide_Wide_Text_IO.Generic_Aux; use Ada.Wide_Wide_Text_IO.Generic_Aux;
- 
- with System.Img_Real;  use System.Img_Real;
- with System.Val_Real;  use System.Val_Real;
- 
- package body Ada.Wide_Wide_Text_IO.Float_Aux is
- 
-    ---------
-    -- Get --
-    ---------
- 
-    procedure Get
-      (File  : File_Type;
-       Item  : out Long_Long_Float;
-       Width : Field)
-    is
-       Buf  : String (1 .. Field'Last);
-       Stop : Integer := 0;
-       Ptr  : aliased Integer := 1;
- 
-    begin
-       if Width /= 0 then
-          Load_Width (File, Width, Buf, Stop);
-          String_Skip (Buf, Ptr);
-       else
-          Load_Real (File, Buf, Stop);
-       end if;
- 
-       Item := Scan_Real (Buf, Ptr'Access, Stop);
- 
-       Check_End_Of_Field (Buf, Stop, Ptr, Width);
-    end Get;
- 
-    ----------
-    -- Gets --
-    ----------
- 
-    procedure Gets
-      (From : String;
-       Item : out Long_Long_Float;
-       Last : out Positive)
-    is
-       Pos : aliased Integer;
- 
-    begin
-       String_Skip (From, Pos);
-       Item := Scan_Real (From, Pos'Access, From'Last);
-       Last := Pos - 1;
- 
-    exception
-       when Constraint_Error =>
-          raise Data_Error;
-    end Gets;
- 
-    ---------------
-    -- Load_Real --
-    ---------------
- 
-    procedure Load_Real
-      (File : File_Type;
-       Buf  : out String;
-       Ptr  : in out Natural)
-    is
-       Loaded   : Boolean;
- 
-    begin
-       --  Skip initial blanks and load possible sign
- 
-       Load_Skip (File);
-       Load (File, Buf, Ptr, '+', '-');
- 
-       --  Case of .nnnn
- 
-       Load (File, Buf, Ptr, '.', Loaded);
- 
-       if Loaded then
-          Load_Digits (File, Buf, Ptr, Loaded);
- 
-          --  Hopeless junk if no digits loaded
- 
-          if not Loaded then
-             return;
-          end if;
- 
-       --  Otherwise must have digits to start
- 
-       else
-          Load_Digits (File, Buf, Ptr, Loaded);
- 
-          --  Hopeless junk if no digits loaded
- 
-          if not Loaded then
-             return;
-          end if;
- 
-          --  Deal with based case. We recognize either the standard '#' or the
-          --  allowed alternative replacement ':' (see RM J.2(3)).
- 
-          Load (File, Buf, Ptr, '#', ':', Loaded);
- 
-          if Loaded then
- 
-             --  Case of nnn#.xxx#
- 
-             Load (File, Buf, Ptr, '.', Loaded);
- 
-             if Loaded then
-                Load_Extended_Digits (File, Buf, Ptr);
-                Load (File, Buf, Ptr, '#', ':');
- 
-             --  Case of nnn#xxx.[xxx]# or nnn#xxx#
- 
-             else
-                Load_Extended_Digits (File, Buf, Ptr);
-                Load (File, Buf, Ptr, '.', Loaded);
- 
-                if Loaded then
-                   Load_Extended_Digits (File, Buf, Ptr);
-                end if;
- 
-                --  As usual, it seems strange to allow mixed base characters,
-                --  but that is what ACVC tests expect, see CE3804M, case (3).
- 
-                Load (File, Buf, Ptr, '#', ':');
-             end if;
- 
-          --  Case of nnn.[nnn] or nnn
- 
-          else
-             --  Prevent the potential processing of '.' in cases where the
-             --  initial digits have a trailing underscore.
- 
-             if Buf (Ptr) = '_' then
-                return;
-             end if;
- 
-             Load (File, Buf, Ptr, '.', Loaded);
- 
-             if Loaded then
-                Load_Digits (File, Buf, Ptr);
-             end if;
-          end if;
-       end if;
- 
-       --  Deal with exponent
- 
-       Load (File, Buf, Ptr, 'E', 'e', Loaded);
- 
-       if Loaded then
-          Load (File, Buf, Ptr, '+', '-');
-          Load_Digits (File, Buf, Ptr);
-       end if;
-    end Load_Real;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put
-      (File : File_Type;
-       Item : Long_Long_Float;
-       Fore : Field;
-       Aft  : Field;
-       Exp  : Field)
-    is
-       Buf : String (1 .. Field'Last);
-       Ptr : Natural := 0;
- 
-    begin
-       Set_Image_Real (Item, Buf, Ptr, Fore, Aft, Exp);
-       Put_Item (File, Buf (1 .. Ptr));
-    end Put;
- 
-    ----------
-    -- Puts --
-    ----------
- 
-    procedure Puts
-      (To   : out String;
-       Item : Long_Long_Float;
-       Aft  : Field;
-       Exp  : Field)
-    is
-       Buf    : String (1 .. Field'Last);
-       Ptr    : Natural := 0;
- 
-    begin
-       Set_Image_Real (Item, Buf, Ptr, Fore => 1, Aft => Aft, Exp => Exp);
- 
-       if Ptr > To'Length then
-          raise Layout_Error;
- 
-       else
-          for J in 1 .. Ptr loop
-             To (To'Last - Ptr + J) := Buf (J);
-          end loop;
- 
-          for J in To'First .. To'Last - Ptr loop
-             To (J) := ' ';
-          end loop;
-       end if;
-    end Puts;
- 
- end Ada.Wide_Wide_Text_IO.Float_Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ztflau.ads gcc-8.1.0/gcc/ada/a-ztflau.ads
*** gcc-7.3.0/gcc/ada/a-ztflau.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-ztflau.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,72 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --      A D A . W I D E _ W I D E _ T E X T _ I O . F L O A T _ A U X       --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          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- --
- -- 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 routines for Ada.Wide_Wide_Text_IO.Float_IO that
- --  are shared among separate instantiations of this package. The routines
- --  in this package are identical semantically to those in Float_IO itself,
- --  except that generic parameter Num has been replaced by Long_Long_Float,
- --  and the default parameters have been removed because they are supplied
- --  explicitly by the calls from within the generic template. Also used by
- --  Ada.Wide_Wide_Text_IO.Fixed_IO, and by Ada.Wide_Wide_Text_IO.Decimal_IO.
- 
- private package Ada.Wide_Wide_Text_IO.Float_Aux is
- 
-    procedure Load_Real
-      (File : File_Type;
-       Buf  : out String;
-       Ptr  : in out Natural);
-    --  This is an auxiliary routine that is used to load a possibly signed
-    --  real literal value from the input file into Buf, starting at Ptr + 1.
- 
-    procedure Get
-      (File  : File_Type;
-       Item  : out Long_Long_Float;
-       Width : Field);
- 
-    procedure Gets
-      (From : String;
-       Item : out Long_Long_Float;
-       Last : out Positive);
- 
-    procedure Put
-      (File : File_Type;
-       Item : Long_Long_Float;
-       Fore : Field;
-       Aft  : Field;
-       Exp  : Field);
- 
-    procedure Puts
-      (To   : out String;
-       Item : Long_Long_Float;
-       Aft  : Field;
-       Exp  : Field);
- 
- end Ada.Wide_Wide_Text_IO.Float_Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ztflio.adb gcc-8.1.0/gcc/ada/a-ztflio.adb
*** gcc-7.3.0/gcc/ada/a-ztflio.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-ztflio.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,126 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --        A D A . W I D E _ W I D E _ T E X T _ I O . F L O A T _ I O       --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          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- --
- -- 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.Wide_Wide_Text_IO.Float_Aux;
- with System.WCh_Con; use System.WCh_Con;
- with System.WCh_WtS; use System.WCh_WtS;
- 
- package body Ada.Wide_Wide_Text_IO.Float_IO is
- 
-    subtype TFT is Ada.Wide_Wide_Text_IO.File_Type;
-    --  File type required for calls to routines in Aux
- 
-    package Aux renames Ada.Wide_Wide_Text_IO.Float_Aux;
- 
-    ---------
-    -- Get --
-    ---------
- 
-    procedure Get
-      (File  : File_Type;
-       Item  : out Num;
-       Width : Field := 0)
-    is
-    begin
-       Aux.Get (TFT (File), Long_Long_Float (Item), Width);
- 
-    exception
-       when Constraint_Error => raise Data_Error;
-    end Get;
- 
-    procedure Get
-      (Item  : out Num;
-       Width : Field := 0)
-    is
-    begin
-       Get (Current_Input, Item, Width);
-    end Get;
- 
-    procedure Get
-      (From : Wide_Wide_String;
-       Item : out Num;
-       Last : out Positive)
-    is
-       S : constant String := Wide_Wide_String_To_String (From, WCEM_Upper);
-       --  String on which we do the actual conversion. Note that the method
-       --  used for wide character encoding is irrelevant, since if there is
-       --  a character outside the Standard.Character range then the call to
-       --  Aux.Gets will raise Data_Error in any case.
- 
-    begin
-       Aux.Gets (S, Long_Long_Float (Item), Last);
- 
-    exception
-       when Constraint_Error => raise Data_Error;
-    end Get;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put
-      (File : File_Type;
-       Item : Num;
-       Fore : Field := Default_Fore;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp)
-    is
-    begin
-       Aux.Put (TFT (File), Long_Long_Float (Item), Fore, Aft, Exp);
-    end Put;
- 
-    procedure Put
-      (Item : Num;
-       Fore : Field := Default_Fore;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp)
-    is
-    begin
-       Put (Current_Output, Item, Fore, Aft, Exp);
-    end Put;
- 
-    procedure Put
-      (To   : out Wide_Wide_String;
-       Item : Num;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp)
-    is
-       S : String (To'First .. To'Last);
- 
-    begin
-       Aux.Puts (S, Long_Long_Float (Item), Aft, Exp);
- 
-       for J in S'Range loop
-          To (J) := Wide_Wide_Character'Val (Character'Pos (S (J)));
-       end loop;
-    end Put;
- 
- end Ada.Wide_Wide_Text_IO.Float_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ztflio.ads gcc-8.1.0/gcc/ada/a-ztflio.ads
*** gcc-7.3.0/gcc/ada/a-ztflio.ads	Thu Jul 17 06:35:13 2014
--- gcc-8.1.0/gcc/ada/a-ztflio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,64 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --        A D A . W I D E _ W I D E _ T E X T _ I O . F L O A T _ I O       --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  In Ada 95, the package Ada.Wide_Wide_Text_IO.Float_IO is a subpackage of
- --  Wide_Wide_Text_IO. In GNAT we make it a child package to avoid loading
- --  the necessary code if Float_IO is not instantiated. See the routine
- --  Rtsfind.Check_Text_IO_Special_Unit for a description of how we patch up
- --  the difference in semantics so that it is invisible to the Ada programmer.
- 
- private generic
-    type Num is digits <>;
- 
- package Ada.Wide_Wide_Text_IO.Float_IO is
- 
-    Default_Fore : Field := 2;
-    Default_Aft  : Field := Num'Digits - 1;
-    Default_Exp  : Field := 3;
- 
-    procedure Get
-      (File  : File_Type;
-       Item  : out Num;
-       Width : Field := 0);
- 
-    procedure Get
-      (Item  : out Num;
-       Width : Field := 0);
- 
-    procedure Put
-      (File : File_Type;
-       Item : Num;
-       Fore : Field := Default_Fore;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp);
- 
-    procedure Put
-      (Item : Num;
-       Fore : Field := Default_Fore;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp);
- 
-    procedure Get
-      (From : Wide_Wide_String;
-       Item : out Num;
-       Last : out Positive);
- 
-    procedure Put
-      (To   : out Wide_Wide_String;
-       Item : Num;
-       Aft  : Field := Default_Aft;
-       Exp  : Field := Default_Exp);
- 
- end Ada.Wide_Wide_Text_IO.Float_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ztgeau.adb gcc-8.1.0/gcc/ada/a-ztgeau.adb
*** gcc-7.3.0/gcc/ada/a-ztgeau.adb	Tue Jan  6 10:08:52 2015
--- gcc-8.1.0/gcc/ada/a-ztgeau.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,528 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --    A D A . W I D E _ W I D E _ T E X T _ I O . G E N E R I C _ A U X     --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 Interfaces.C_Streams; use Interfaces.C_Streams;
- with System.File_IO;
- with System.File_Control_Block;
- 
- package body Ada.Wide_Wide_Text_IO.Generic_Aux is
- 
-    package FIO renames System.File_IO;
-    package FCB renames System.File_Control_Block;
-    subtype AP is FCB.AFCB_Ptr;
- 
-    ------------------------
-    -- Check_End_Of_Field --
-    ------------------------
- 
-    procedure Check_End_Of_Field
-      (Buf   : String;
-       Stop  : Integer;
-       Ptr   : Integer;
-       Width : Field)
-    is
-    begin
-       if Ptr > Stop then
-          return;
- 
-       elsif Width = 0 then
-          raise Data_Error;
- 
-       else
-          for J in Ptr .. Stop loop
-             if not Is_Blank (Buf (J)) then
-                raise Data_Error;
-             end if;
-          end loop;
-       end if;
-    end Check_End_Of_Field;
- 
-    -----------------------
-    -- Check_On_One_Line --
-    -----------------------
- 
-    procedure Check_On_One_Line
-      (File   : File_Type;
-       Length : Integer)
-    is
-    begin
-       FIO.Check_Write_Status (AP (File));
- 
-       if File.Line_Length /= 0 then
-          if Count (Length) > File.Line_Length then
-             raise Layout_Error;
-          elsif File.Col + Count (Length) > File.Line_Length + 1 then
-             New_Line (File);
-          end if;
-       end if;
-    end Check_On_One_Line;
- 
-    --------------
-    -- Is_Blank --
-    --------------
- 
-    function Is_Blank (C : Character) return Boolean is
-    begin
-       return C = ' ' or else C = ASCII.HT;
-    end Is_Blank;
- 
-    ----------
-    -- Load --
-    ----------
- 
-    procedure Load
-      (File   : File_Type;
-       Buf    : out String;
-       Ptr    : in out Integer;
-       Char   : Character;
-       Loaded : out Boolean)
-    is
-       ch : int;
- 
-    begin
-       if File.Before_Wide_Wide_Character then
-          Loaded := False;
-          return;
- 
-       else
-          ch := Getc (File);
- 
-          if ch = Character'Pos (Char) then
-             Store_Char (File, ch, Buf, Ptr);
-             Loaded := True;
-          else
-             Ungetc (ch, File);
-             Loaded := False;
-          end if;
-       end if;
-    end Load;
- 
-    procedure Load
-      (File   : File_Type;
-       Buf    : out String;
-       Ptr    : in out Integer;
-       Char   : Character)
-    is
-       ch : int;
- 
-    begin
-       if File.Before_Wide_Wide_Character then
-          null;
- 
-       else
-          ch := Getc (File);
- 
-          if ch = Character'Pos (Char) then
-             Store_Char (File, ch, Buf, Ptr);
-          else
-             Ungetc (ch, File);
-          end if;
-       end if;
-    end Load;
- 
-    procedure Load
-      (File   : File_Type;
-       Buf    : out String;
-       Ptr    : in out Integer;
-       Char1  : Character;
-       Char2  : Character;
-       Loaded : out Boolean)
-    is
-       ch : int;
- 
-    begin
-       if File.Before_Wide_Wide_Character then
-          Loaded := False;
-          return;
- 
-       else
-          ch := Getc (File);
- 
-          if ch = Character'Pos (Char1)
-            or else ch = Character'Pos (Char2)
-          then
-             Store_Char (File, ch, Buf, Ptr);
-             Loaded := True;
-          else
-             Ungetc (ch, File);
-             Loaded := False;
-          end if;
-       end if;
-    end Load;
- 
-    procedure Load
-      (File   : File_Type;
-       Buf    : out String;
-       Ptr    : in out Integer;
-       Char1  : Character;
-       Char2  : Character)
-    is
-       ch : int;
- 
-    begin
-       if File.Before_Wide_Wide_Character then
-          null;
- 
-       else
-          ch := Getc (File);
- 
-          if ch = Character'Pos (Char1)
-            or else ch = Character'Pos (Char2)
-          then
-             Store_Char (File, ch, Buf, Ptr);
-          else
-             Ungetc (ch, File);
-          end if;
-       end if;
-    end Load;
- 
-    -----------------
-    -- Load_Digits --
-    -----------------
- 
-    procedure Load_Digits
-      (File   : File_Type;
-       Buf    : out String;
-       Ptr    : in out Integer;
-       Loaded : out Boolean)
-    is
-       ch          : int;
-       After_Digit : Boolean;
- 
-    begin
-       if File.Before_Wide_Wide_Character then
-          Loaded := False;
-          return;
- 
-       else
-          ch := Getc (File);
- 
-          if ch not in Character'Pos ('0') .. Character'Pos ('9') then
-             Loaded := False;
- 
-          else
-             Loaded := True;
-             After_Digit := True;
- 
-             loop
-                Store_Char (File, ch, Buf, Ptr);
-                ch := Getc (File);
- 
-                if ch in Character'Pos ('0') .. Character'Pos ('9') then
-                   After_Digit := True;
- 
-                elsif ch = Character'Pos ('_') and then After_Digit then
-                   After_Digit := False;
- 
-                else
-                   exit;
-                end if;
-             end loop;
-          end if;
- 
-          Ungetc (ch, File);
-       end if;
-    end Load_Digits;
- 
-    procedure Load_Digits
-      (File   : File_Type;
-       Buf    : out String;
-       Ptr    : in out Integer)
-    is
-       ch          : int;
-       After_Digit : Boolean;
- 
-    begin
-       if File.Before_Wide_Wide_Character then
-          return;
- 
-       else
-          ch := Getc (File);
- 
-          if ch in Character'Pos ('0') .. Character'Pos ('9') then
-             After_Digit := True;
- 
-             loop
-                Store_Char (File, ch, Buf, Ptr);
-                ch := Getc (File);
- 
-                if ch in Character'Pos ('0') .. Character'Pos ('9') then
-                   After_Digit := True;
- 
-                elsif ch = Character'Pos ('_') and then After_Digit then
-                   After_Digit := False;
- 
-                else
-                   exit;
-                end if;
-             end loop;
-          end if;
- 
-          Ungetc (ch, File);
-       end if;
-    end Load_Digits;
- 
-    --------------------------
-    -- Load_Extended_Digits --
-    --------------------------
- 
-    procedure Load_Extended_Digits
-      (File   : File_Type;
-       Buf    : out String;
-       Ptr    : in out Integer;
-       Loaded : out Boolean)
-    is
-       ch          : int;
-       After_Digit : Boolean := False;
- 
-    begin
-       if File.Before_Wide_Wide_Character then
-          Loaded := False;
-          return;
- 
-       else
-          Loaded := False;
- 
-          loop
-             ch := Getc (File);
- 
-             if ch in Character'Pos ('0') .. Character'Pos ('9')
-                  or else
-                ch in Character'Pos ('a') .. Character'Pos ('f')
-                  or else
-                ch in Character'Pos ('A') .. Character'Pos ('F')
-             then
-                After_Digit := True;
- 
-             elsif ch = Character'Pos ('_') and then After_Digit then
-                After_Digit := False;
- 
-             else
-                exit;
-             end if;
- 
-             Store_Char (File, ch, Buf, Ptr);
-             Loaded := True;
-          end loop;
- 
-          Ungetc (ch, File);
-       end if;
-    end Load_Extended_Digits;
- 
-    procedure Load_Extended_Digits
-      (File   : File_Type;
-       Buf    : out String;
-       Ptr    : in out Integer)
-    is
-       Junk : Boolean;
-       pragma Unreferenced (Junk);
-    begin
-       Load_Extended_Digits (File, Buf, Ptr, Junk);
-    end Load_Extended_Digits;
- 
-    ---------------
-    -- Load_Skip --
-    ---------------
- 
-    procedure Load_Skip (File  : File_Type) is
-       C : Character;
- 
-    begin
-       FIO.Check_Read_Status (AP (File));
- 
-       --  We need to explicitly test for the case of being before a wide
-       --  character (greater than 16#7F#). Since no such character can
-       --  ever legitimately be a valid numeric character, we can
-       --  immediately signal Data_Error.
- 
-       if File.Before_Wide_Wide_Character then
-          raise Data_Error;
-       end if;
- 
-       --  Otherwise loop till we find a non-blank character (note that as
-       --  usual in Wide_Wide_Text_IO, blank includes horizontal tab). Note that
-       --  Get_Character deals with Before_LM/Before_LM_PM flags appropriately.
- 
-       loop
-          Get_Character (File, C);
-          exit when not Is_Blank (C);
-       end loop;
- 
-       Ungetc (Character'Pos (C), File);
-       File.Col := File.Col - 1;
-    end Load_Skip;
- 
-    ----------------
-    -- Load_Width --
-    ----------------
- 
-    procedure Load_Width
-      (File  : File_Type;
-       Width : Field;
-       Buf   : out String;
-       Ptr   : in out Integer)
-    is
-       ch : int;
-       WC : Wide_Wide_Character;
- 
-       Bad_Wide_Wide_C : Boolean := False;
-       --  Set True if one of the characters read is not in range of type
-       --  Character. This is always a Data_Error, but we do not signal it
-       --  right away, since we have to read the full number of characters.
- 
-    begin
-       FIO.Check_Read_Status (AP (File));
- 
-       --  If we are immediately before a line mark, then we have no characters.
-       --  This is always a data error, so we may as well raise it right away.
- 
-       if File.Before_LM then
-          raise Data_Error;
- 
-       else
-          for J in 1 .. Width loop
-             if File.Before_Wide_Wide_Character then
-                Bad_Wide_Wide_C := True;
-                Store_Char (File, 0, Buf, Ptr);
-                File.Before_Wide_Wide_Character := False;
- 
-             else
-                ch := Getc (File);
- 
-                if ch = EOF then
-                   exit;
- 
-                elsif ch = LM then
-                   Ungetc (ch, File);
-                   exit;
- 
-                else
-                   WC := Get_Wide_Wide_Char (Character'Val (ch), File);
-                   ch := Wide_Wide_Character'Pos (WC);
- 
-                   if ch > 255 then
-                      Bad_Wide_Wide_C := True;
-                      ch := 0;
-                   end if;
- 
-                   Store_Char (File, ch, Buf, Ptr);
-                end if;
-             end if;
-          end loop;
- 
-          if Bad_Wide_Wide_C then
-             raise Data_Error;
-          end if;
-       end if;
-    end Load_Width;
- 
-    --------------
-    -- Put_Item --
-    --------------
- 
-    procedure Put_Item (File : File_Type; Str : String) is
-    begin
-       Check_On_One_Line (File, Str'Length);
- 
-       for J in Str'Range loop
-          Put (File, Wide_Wide_Character'Val (Character'Pos (Str (J))));
-       end loop;
-    end Put_Item;
- 
-    ----------------
-    -- Store_Char --
-    ----------------
- 
-    procedure Store_Char
-      (File : File_Type;
-       ch   : Integer;
-       Buf  : out String;
-       Ptr  : in out Integer)
-    is
-    begin
-       File.Col := File.Col + 1;
- 
-       if Ptr = Buf'Last then
-          raise Data_Error;
-       else
-          Ptr := Ptr + 1;
-          Buf (Ptr) := Character'Val (ch);
-       end if;
-    end Store_Char;
- 
-    -----------------
-    -- String_Skip --
-    -----------------
- 
-    procedure String_Skip (Str : String; Ptr : out Integer) is
-    begin
-       --  Routines calling String_Skip malfunction if Str'Last = Positive'Last.
-       --  It's too much trouble to make this silly case work, so we just raise
-       --  Program_Error with an appropriate message. We raise Program_Error
-       --  rather than Constraint_Error because we don't want this case to be
-       --  converted to Data_Error.
- 
-       if Str'Last = Positive'Last then
-          raise Program_Error with
-            "string upper bound is Positive'Last, not supported";
-       end if;
- 
-       --  Normal case where Str'Last < Positive'Last
- 
-       Ptr := Str'First;
- 
-       loop
-          if Ptr > Str'Last then
-             raise End_Error;
- 
-          elsif not Is_Blank (Str (Ptr)) then
-             return;
- 
-          else
-             Ptr := Ptr + 1;
-          end if;
-       end loop;
-    end String_Skip;
- 
-    ------------
-    -- Ungetc --
-    ------------
- 
-    procedure Ungetc (ch : int; File : File_Type) is
-    begin
-       if ch /= EOF then
-          if ungetc (ch, File.Stream) = EOF then
-             raise Device_Error;
-          end if;
-       end if;
-    end Ungetc;
- 
- end Ada.Wide_Wide_Text_IO.Generic_Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ztgeau.ads gcc-8.1.0/gcc/ada/a-ztgeau.ads
*** gcc-7.3.0/gcc/ada/a-ztgeau.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-ztgeau.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,184 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --    A D A . W I D E _ W I D E _ T E X T _ I O . G E N E R I C _ A U X     --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          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- --
- -- 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 a set of auxiliary routines used by Wide_Wide_Text_IO
- --  generic children, including for reading and writing numeric strings.
- 
- --  Note: although this is the Wide version of the package, the interface here
- --  is still in terms of Character and String rather than Wide_Wide_Character
- --  and Wide_Wide_String, since all numeric strings are composed entirely of
- --  characters in the range of type Standard.Character, and the basic
- --  conversion routines work with Character rather than Wide_Wide_Character.
- 
- package Ada.Wide_Wide_Text_IO.Generic_Aux is
- 
-    --  Note: for all the Load routines, File indicates the file to be read,
-    --  Buf is the string into which data is stored, Ptr is the index of the
-    --  last character stored so far, and is updated if additional characters
-    --  are stored. Data_Error is raised if the input overflows Buf. The only
-    --  Load routines that do a file status check are Load_Skip and Load_Width
-    --  so one of these two routines must be called first.
- 
-    procedure Check_End_Of_Field
-      (Buf   : String;
-       Stop  : Integer;
-       Ptr   : Integer;
-       Width : Field);
-    --  This routine is used after doing a get operations on a numeric value.
-    --  Buf is the string being scanned, and Stop is the last character of
-    --  the field being scanned. Ptr is as set by the call to the scan routine
-    --  that scanned out the numeric value, i.e. it points one past the last
-    --  character scanned, and Width is the width parameter from the Get call.
-    --
-    --  There are two cases, if Width is non-zero, then a check is made that
-    --  the remainder of the field is all blanks. If Width is zero, then it
-    --  means that the scan routine scanned out only part of the field. We
-    --  have already scanned out the field that the ACVC tests seem to expect
-    --  us to read (even if it does not follow the syntax of the type being
-    --  scanned, e.g. allowing negative exponents in integers, and underscores
-    --  at the end of the string), so we just raise Data_Error.
- 
-    procedure Check_On_One_Line (File : File_Type; Length : Integer);
-    --  Check to see if item of length Integer characters can fit on
-    --  current line. Call New_Line if not, first checking that the
-    --  line length can accommodate Length characters, raise Layout_Error
-    --  if item is too large for a single line.
- 
-    function Is_Blank (C : Character) return Boolean;
-    --  Determines if C is a blank (space or tab)
- 
-    procedure Load_Width
-      (File  : File_Type;
-       Width : Field;
-       Buf   : out String;
-       Ptr   : in out Integer);
-    --  Loads exactly Width characters, unless a line mark is encountered first
- 
-    procedure Load_Skip (File  : File_Type);
-    --  Skips leading blanks and line and page marks, if the end of file is
-    --  read without finding a non-blank character, then End_Error is raised.
-    --  Note: a blank is defined as a space or horizontal tab (RM A.10.6(5)).
- 
-    procedure Load
-      (File   : File_Type;
-       Buf    : out String;
-       Ptr    : in out Integer;
-       Char   : Character;
-       Loaded : out Boolean);
-    --  If next character is Char, loads it, otherwise no characters are loaded
-    --  Loaded is set to indicate whether or not the character was found.
- 
-    procedure Load
-      (File   : File_Type;
-       Buf    : out String;
-       Ptr    : in out Integer;
-       Char   : Character);
-    --  Same as above, but no indication if character is loaded
- 
-    procedure Load
-      (File   : File_Type;
-       Buf    : out String;
-       Ptr    : in out Integer;
-       Char1  : Character;
-       Char2  : Character;
-       Loaded : out Boolean);
-    --  If next character is Char1 or Char2, loads it, otherwise no characters
-    --  are loaded. Loaded is set to indicate whether or not one of the two
-    --  characters was found.
- 
-    procedure Load
-      (File   : File_Type;
-       Buf    : out String;
-       Ptr    : in out Integer;
-       Char1  : Character;
-       Char2  : Character);
-    --  Same as above, but no indication if character is loaded
- 
-    procedure Load_Digits
-      (File   : File_Type;
-       Buf    : out String;
-       Ptr    : in out Integer;
-       Loaded : out Boolean);
-    --  Loads a sequence of zero or more decimal digits. Loaded is set if
-    --  at least one digit is loaded.
- 
-    procedure Load_Digits
-      (File   : File_Type;
-       Buf    : out String;
-       Ptr    : in out Integer);
-    --  Same as above, but no indication if character is loaded
- 
-    procedure Load_Extended_Digits
-      (File   : File_Type;
-       Buf    : out String;
-       Ptr    : in out Integer;
-       Loaded : out Boolean);
-    --  Like Load_Digits, but also allows extended digits a-f and A-F
- 
-    procedure Load_Extended_Digits
-      (File   : File_Type;
-       Buf    : out String;
-       Ptr    : in out Integer);
-    --  Same as above, but no indication if character is loaded
- 
-    procedure Put_Item (File : File_Type; Str : String);
-    --  This routine is like Wide_Wide_Text_IO.Put, except that it checks for
-    --  overflow of bounded lines, as described in (RM A.10.6(8)). It is used
-    --  for all output of numeric values and of enumeration values. Note that
-    --  the buffer is of type String. Put_Item deals with converting this to
-    --  Wide_Wide_Characters as required.
- 
-    procedure Store_Char
-      (File : File_Type;
-       ch   : Integer;
-       Buf  : out String;
-       Ptr  : in out Integer);
-    --  Store a single character in buffer, checking for overflow and
-    --  adjusting the column number in the file to reflect the fact
-    --  that a character has been acquired from the input stream.
-    --  The pos value of the character to store is in ch on entry.
- 
-    procedure String_Skip (Str : String; Ptr : out Integer);
-    --  Used in the Get from string procedures to skip leading blanks in the
-    --  string. Ptr is set to the index of the first non-blank. If the string
-    --  is all blanks, then the excption End_Error is raised, Note that blank
-    --  is defined as a space or horizontal tab (RM A.10.6(5)).
- 
-    procedure Ungetc (ch : Integer; File : File_Type);
-    --  Pushes back character into stream, using ungetc. The caller has
-    --  checked that the file is in read status. Device_Error is raised
-    --  if the character cannot be pushed back. An attempt to push back
-    --  an end of file (EOF) is ignored.
- 
- private
-    pragma Inline (Is_Blank);
- 
- end Ada.Wide_Wide_Text_IO.Generic_Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ztinau.adb gcc-8.1.0/gcc/ada/a-ztinau.adb
*** gcc-7.3.0/gcc/ada/a-ztinau.adb	Tue Jan  6 09:24:33 2015
--- gcc-8.1.0/gcc/ada/a-ztinau.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,295 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --    A D A . W I D E _ W I D E _ T E X T _ I O . I N T E G E R  _ A U X    --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Wide_Wide_Text_IO.Generic_Aux; use Ada.Wide_Wide_Text_IO.Generic_Aux;
- 
- with System.Img_BIU;   use System.Img_BIU;
- with System.Img_Int;   use System.Img_Int;
- with System.Img_LLB;   use System.Img_LLB;
- with System.Img_LLI;   use System.Img_LLI;
- with System.Img_LLW;   use System.Img_LLW;
- with System.Img_WIU;   use System.Img_WIU;
- with System.Val_Int;   use System.Val_Int;
- with System.Val_LLI;   use System.Val_LLI;
- 
- package body Ada.Wide_Wide_Text_IO.Integer_Aux is
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    procedure Load_Integer
-      (File : File_Type;
-       Buf  : out String;
-       Ptr  : in out Natural);
-    --  This is an auxiliary routine that is used to load an possibly signed
-    --  integer literal value from the input file into Buf, starting at Ptr + 1.
-    --  On return, Ptr is set to the last character stored.
- 
-    -------------
-    -- Get_Int --
-    -------------
- 
-    procedure Get_Int
-      (File  : File_Type;
-       Item  : out Integer;
-       Width : Field)
-    is
-       Buf  : String (1 .. Field'Last);
-       Ptr  : aliased Integer := 1;
-       Stop : Integer := 0;
- 
-    begin
-       if Width /= 0 then
-          Load_Width (File, Width, Buf, Stop);
-          String_Skip (Buf, Ptr);
-       else
-          Load_Integer (File, Buf, Stop);
-       end if;
- 
-       Item := Scan_Integer (Buf, Ptr'Access, Stop);
-       Check_End_Of_Field (Buf, Stop, Ptr, Width);
-    end Get_Int;
- 
-    -------------
-    -- Get_LLI --
-    -------------
- 
-    procedure Get_LLI
-      (File  : File_Type;
-       Item  : out Long_Long_Integer;
-       Width : Field)
-    is
-       Buf  : String (1 .. Field'Last);
-       Ptr  : aliased Integer := 1;
-       Stop : Integer := 0;
- 
-    begin
-       if Width /= 0 then
-          Load_Width (File, Width, Buf, Stop);
-          String_Skip (Buf, Ptr);
-       else
-          Load_Integer (File, Buf, Stop);
-       end if;
- 
-       Item := Scan_Long_Long_Integer (Buf, Ptr'Access, Stop);
-       Check_End_Of_Field (Buf, Stop, Ptr, Width);
-    end Get_LLI;
- 
-    --------------
-    -- Gets_Int --
-    --------------
- 
-    procedure Gets_Int
-      (From : String;
-       Item : out Integer;
-       Last : out Positive)
-    is
-       Pos : aliased Integer;
- 
-    begin
-       String_Skip (From, Pos);
-       Item := Scan_Integer (From, Pos'Access, From'Last);
-       Last := Pos - 1;
- 
-    exception
-       when Constraint_Error =>
-          raise Data_Error;
-    end Gets_Int;
- 
-    --------------
-    -- Gets_LLI --
-    --------------
- 
-    procedure Gets_LLI
-      (From : String;
-       Item : out Long_Long_Integer;
-       Last : out Positive)
-    is
-       Pos : aliased Integer;
- 
-    begin
-       String_Skip (From, Pos);
-       Item := Scan_Long_Long_Integer (From, Pos'Access, From'Last);
-       Last := Pos - 1;
- 
-    exception
-       when Constraint_Error =>
-          raise Data_Error;
-    end Gets_LLI;
- 
-    ------------------
-    -- Load_Integer --
-    ------------------
- 
-    procedure Load_Integer
-      (File : File_Type;
-       Buf  : out String;
-       Ptr  : in out Natural)
-    is
-       Hash_Loc : Natural;
-       Loaded   : Boolean;
- 
-    begin
-       Load_Skip (File);
-       Load (File, Buf, Ptr, '+', '-');
- 
-       Load_Digits (File, Buf, Ptr, Loaded);
- 
-       if Loaded then
- 
-          --  Deal with based case. We recognize either the standard '#' or the
-          --  allowed alternative replacement ':' (see RM J.2(3)).
- 
-          Load (File, Buf, Ptr, '#', ':', Loaded);
- 
-          if Loaded then
-             Hash_Loc := Ptr;
-             Load_Extended_Digits (File, Buf, Ptr);
-             Load (File, Buf, Ptr, Buf (Hash_Loc));
-          end if;
- 
-          Load (File, Buf, Ptr, 'E', 'e', Loaded);
- 
-          if Loaded then
- 
-             --  Note: it is strange to allow a minus sign, since the syntax
-             --  does not, but that is what ACVC test CE3704F, case (6) wants.
- 
-             Load (File, Buf, Ptr, '+', '-');
-             Load_Digits (File, Buf, Ptr);
-          end if;
-       end if;
-    end Load_Integer;
- 
-    -------------
-    -- Put_Int --
-    -------------
- 
-    procedure Put_Int
-      (File  : File_Type;
-       Item  : Integer;
-       Width : Field;
-       Base  : Number_Base)
-    is
-       Buf : String (1 .. Field'Last);
-       Ptr : Natural := 0;
- 
-    begin
-       if Base = 10 and then Width = 0 then
-          Set_Image_Integer (Item, Buf, Ptr);
-       elsif Base = 10 then
-          Set_Image_Width_Integer (Item, Width, Buf, Ptr);
-       else
-          Set_Image_Based_Integer (Item, Base, Width, Buf, Ptr);
-       end if;
- 
-       Put_Item (File, Buf (1 .. Ptr));
-    end Put_Int;
- 
-    -------------
-    -- Put_LLI --
-    -------------
- 
-    procedure Put_LLI
-      (File  : File_Type;
-       Item  : Long_Long_Integer;
-       Width : Field;
-       Base  : Number_Base)
-    is
-       Buf : String (1 .. Field'Last);
-       Ptr : Natural := 0;
- 
-    begin
-       if Base = 10 and then Width = 0 then
-          Set_Image_Long_Long_Integer (Item, Buf, Ptr);
-       elsif Base = 10 then
-          Set_Image_Width_Long_Long_Integer (Item, Width, Buf, Ptr);
-       else
-          Set_Image_Based_Long_Long_Integer (Item, Base, Width, Buf, Ptr);
-       end if;
- 
-       Put_Item (File, Buf (1 .. Ptr));
-    end Put_LLI;
- 
-    --------------
-    -- Puts_Int --
-    --------------
- 
-    procedure Puts_Int
-      (To   : out String;
-       Item : Integer;
-       Base : Number_Base)
-    is
-       Buf : String (1 .. Field'Last);
-       Ptr : Natural := 0;
- 
-    begin
-       if Base = 10 then
-          Set_Image_Width_Integer (Item, To'Length, Buf, Ptr);
-       else
-          Set_Image_Based_Integer (Item, Base, To'Length, Buf, Ptr);
-       end if;
- 
-       if Ptr > To'Length then
-          raise Layout_Error;
-       else
-          To (To'First .. To'First + Ptr - 1) := Buf (1 .. Ptr);
-       end if;
-    end Puts_Int;
- 
-    --------------
-    -- Puts_LLI --
-    --------------
- 
-    procedure Puts_LLI
-      (To   : out String;
-       Item : Long_Long_Integer;
-       Base : Number_Base)
-    is
-       Buf : String (1 .. Field'Last);
-       Ptr : Natural := 0;
- 
-    begin
-       if Base = 10 then
-          Set_Image_Width_Long_Long_Integer (Item, To'Length, Buf, Ptr);
-       else
-          Set_Image_Based_Long_Long_Integer (Item, Base, To'Length, Buf, Ptr);
-       end if;
- 
-       if Ptr > To'Length then
-          raise Layout_Error;
-       else
-          To (To'First .. To'First + Ptr - 1) := Buf (1 .. Ptr);
-       end if;
-    end Puts_LLI;
- 
- end Ada.Wide_Wide_Text_IO.Integer_Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ztinau.ads gcc-8.1.0/gcc/ada/a-ztinau.ads
*** gcc-7.3.0/gcc/ada/a-ztinau.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-ztinau.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,83 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --    A D A . W I D E _ W I D E _ T E X T _ I O . I N T E G E R _ A U X     --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          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- --
- -- 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 routines for Ada.Wide_Wide_Text_IO.Integer_IO
- --  that are shared among separate instantiations of this package. The routines
- --  in this package are identical semantically to those in Integer_IO itself,
- --  except that the generic parameter Num has been replaced by Integer or
- --  Long_Long_Integer, and the default parameters have been removed because
- --  they are supplied explicitly by the calls from within the generic template.
- 
- private package Ada.Wide_Wide_Text_IO.Integer_Aux is
- 
-    procedure Get_Int
-      (File  : File_Type;
-       Item  : out Integer;
-       Width : Field);
- 
-    procedure Get_LLI
-      (File  : File_Type;
-       Item  : out Long_Long_Integer;
-       Width : Field);
- 
-    procedure Gets_Int
-      (From : String;
-       Item : out Integer;
-       Last : out Positive);
- 
-    procedure Gets_LLI
-      (From : String;
-       Item : out Long_Long_Integer;
-       Last : out Positive);
- 
-    procedure Put_Int
-      (File  : File_Type;
-       Item  : Integer;
-       Width : Field;
-       Base  : Number_Base);
- 
-    procedure Put_LLI
-      (File  : File_Type;
-       Item  : Long_Long_Integer;
-       Width : Field;
-       Base  : Number_Base);
- 
-    procedure Puts_Int
-      (To   : out String;
-       Item : Integer;
-       Base : Number_Base);
- 
-    procedure Puts_LLI
-      (To   : out String;
-       Item : Long_Long_Integer;
-       Base : Number_Base);
- 
- end Ada.Wide_Wide_Text_IO.Integer_Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ztinio.adb gcc-8.1.0/gcc/ada/a-ztinio.adb
*** gcc-7.3.0/gcc/ada/a-ztinio.adb	Mon Nov 30 16:08:37 2009
--- gcc-8.1.0/gcc/ada/a-ztinio.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,145 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --      A D A . W I D E _ W I D E _ T E X T _ I O . I N T E G E R _ I O     --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          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- --
- -- 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.Wide_Wide_Text_IO.Integer_Aux;
- with System.WCh_Con; use System.WCh_Con;
- with System.WCh_WtS; use System.WCh_WtS;
- 
- package body Ada.Wide_Wide_Text_IO.Integer_IO is
- 
-    Need_LLI : constant Boolean := Num'Base'Size > Integer'Size;
-    --  Throughout this generic body, we distinguish between the case where type
-    --  Integer is acceptable, and where a Long_Long_Integer is needed. This
-    --  Boolean is used to test for these cases and since it is a constant, only
-    --  code for the relevant case will be included in the instance.
- 
-    subtype TFT is Ada.Wide_Wide_Text_IO.File_Type;
-    --  File type required for calls to routines in Aux
- 
-    package Aux renames Ada.Wide_Wide_Text_IO.Integer_Aux;
- 
-    ---------
-    -- Get --
-    ---------
- 
-    procedure Get
-      (File  : File_Type;
-       Item  : out Num;
-       Width : Field := 0)
-    is
-    begin
-       if Need_LLI then
-          Aux.Get_LLI (TFT (File), Long_Long_Integer (Item), Width);
-       else
-          Aux.Get_Int (TFT (File), Integer (Item), Width);
-       end if;
- 
-    exception
-       when Constraint_Error => raise Data_Error;
-    end Get;
- 
-    procedure Get
-      (Item  : out Num;
-       Width : Field := 0)
-    is
-    begin
-       Get (Current_Input, Item, Width);
-    end Get;
- 
-    procedure Get
-      (From : Wide_Wide_String;
-       Item : out Num;
-       Last : out Positive)
-    is
-       S : constant String := Wide_Wide_String_To_String (From, WCEM_Upper);
-       --  String on which we do the actual conversion. Note that the method
-       --  used for wide character encoding is irrelevant, since if there is
-       --  a character outside the Standard.Character range then the call to
-       --  Aux.Gets will raise Data_Error in any case.
- 
-    begin
-       if Need_LLI then
-          Aux.Gets_LLI (S, Long_Long_Integer (Item), Last);
-       else
-          Aux.Gets_Int (S, Integer (Item), Last);
-       end if;
- 
-    exception
-       when Constraint_Error => raise Data_Error;
-    end Get;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put
-      (File  : File_Type;
-       Item  : Num;
-       Width : Field := Default_Width;
-       Base  : Number_Base := Default_Base)
-    is
-    begin
-       if Need_LLI then
-          Aux.Put_LLI (TFT (File), Long_Long_Integer (Item), Width, Base);
-       else
-          Aux.Put_Int (TFT (File), Integer (Item), Width, Base);
-       end if;
-    end Put;
- 
-    procedure Put
-      (Item  : Num;
-       Width : Field := Default_Width;
-       Base  : Number_Base := Default_Base)
-    is
-    begin
-       Put (Current_Output, Item, Width, Base);
-    end Put;
- 
-    procedure Put
-      (To   : out Wide_Wide_String;
-       Item : Num;
-       Base : Number_Base := Default_Base)
-    is
-       S : String (To'First .. To'Last);
- 
-    begin
-       if Need_LLI then
-          Aux.Puts_LLI (S, Long_Long_Integer (Item), Base);
-       else
-          Aux.Puts_Int (S, Integer (Item), Base);
-       end if;
- 
-       for J in S'Range loop
-          To (J) := Wide_Wide_Character'Val (Character'Pos (S (J)));
-       end loop;
-    end Put;
- 
- end Ada.Wide_Wide_Text_IO.Integer_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ztinio.ads gcc-8.1.0/gcc/ada/a-ztinio.ads
*** gcc-7.3.0/gcc/ada/a-ztinio.ads	Thu Jul 17 06:35:13 2014
--- gcc-8.1.0/gcc/ada/a-ztinio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,60 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --      A D A . W I D E _ W I D E _ T E X T _ I O . I N T E G E R _ I O     --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  In Ada 95, the package Ada.Wide_Wide_Text_IO.Integer_IO is a subpackage
- --  of Wide_Wide_Text_IO. In GNAT we make it a child package to avoid loading
- --  the necessary code if Integer_IO is not instantiated. See the routine
- --  Rtsfind.Check_Text_IO_Special_Unit for a description of how we patch up
- --  the difference in semantics so that it is invisible to the Ada programmer.
- 
- private generic
-    type Num is range <>;
- 
- package Ada.Wide_Wide_Text_IO.Integer_IO is
- 
-    Default_Width : Field := Num'Width;
-    Default_Base  : Number_Base := 10;
- 
-    procedure Get
-      (File  : File_Type;
-       Item  : out Num;
-       Width : Field := 0);
- 
-    procedure Get
-      (Item  : out Num;
-       Width : Field := 0);
- 
-    procedure Put
-      (File  : File_Type;
-       Item  : Num;
-       Width : Field := Default_Width;
-       Base  : Number_Base := Default_Base);
- 
-    procedure Put
-      (Item  : Num;
-       Width : Field := Default_Width;
-       Base  : Number_Base := Default_Base);
- 
-    procedure Get
-      (From : Wide_Wide_String;
-       Item : out Num;
-       Last : out Positive);
- 
-    procedure Put
-      (To   : out Wide_Wide_String;
-       Item : Num;
-       Base : Number_Base := Default_Base);
- 
- end Ada.Wide_Wide_Text_IO.Integer_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ztmoau.adb gcc-8.1.0/gcc/ada/a-ztmoau.adb
*** gcc-7.3.0/gcc/ada/a-ztmoau.adb	Tue Jan  6 09:24:33 2015
--- gcc-8.1.0/gcc/ada/a-ztmoau.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,305 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --    A D A . W I D E _ W I D E _ T E X T _ I O . M O D U L A R  _ A U X    --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Wide_Wide_Text_IO.Generic_Aux; use Ada.Wide_Wide_Text_IO.Generic_Aux;
- 
- with System.Img_BIU;   use System.Img_BIU;
- with System.Img_Uns;   use System.Img_Uns;
- with System.Img_LLB;   use System.Img_LLB;
- with System.Img_LLU;   use System.Img_LLU;
- with System.Img_LLW;   use System.Img_LLW;
- with System.Img_WIU;   use System.Img_WIU;
- with System.Val_Uns;   use System.Val_Uns;
- with System.Val_LLU;   use System.Val_LLU;
- 
- package body Ada.Wide_Wide_Text_IO.Modular_Aux is
- 
-    use System.Unsigned_Types;
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    procedure Load_Modular
-      (File : File_Type;
-       Buf  : out String;
-       Ptr  : in out Natural);
-    --  This is an auxiliary routine that is used to load an possibly signed
-    --  modular literal value from the input file into Buf, starting at Ptr + 1.
-    --  Ptr is left set to the last character stored.
- 
-    -------------
-    -- Get_LLU --
-    -------------
- 
-    procedure Get_LLU
-      (File  : File_Type;
-       Item  : out Long_Long_Unsigned;
-       Width : Field)
-    is
-       Buf  : String (1 .. Field'Last);
-       Stop : Integer := 0;
-       Ptr  : aliased Integer := 1;
- 
-    begin
-       if Width /= 0 then
-          Load_Width (File, Width, Buf, Stop);
-          String_Skip (Buf, Ptr);
-       else
-          Load_Modular (File, Buf, Stop);
-       end if;
- 
-       Item := Scan_Long_Long_Unsigned (Buf, Ptr'Access, Stop);
-       Check_End_Of_Field (Buf, Stop, Ptr, Width);
-    end Get_LLU;
- 
-    -------------
-    -- Get_Uns --
-    -------------
- 
-    procedure Get_Uns
-      (File  : File_Type;
-       Item  : out Unsigned;
-       Width : Field)
-    is
-       Buf  : String (1 .. Field'Last);
-       Stop : Integer := 0;
-       Ptr  : aliased Integer := 1;
- 
-    begin
-       if Width /= 0 then
-          Load_Width (File, Width, Buf, Stop);
-          String_Skip (Buf, Ptr);
-       else
-          Load_Modular (File, Buf, Stop);
-       end if;
- 
-       Item := Scan_Unsigned (Buf, Ptr'Access, Stop);
-       Check_End_Of_Field (Buf, Stop, Ptr, Width);
-    end Get_Uns;
- 
-    --------------
-    -- Gets_LLU --
-    --------------
- 
-    procedure Gets_LLU
-      (From : String;
-       Item : out Long_Long_Unsigned;
-       Last : out Positive)
-    is
-       Pos : aliased Integer;
- 
-    begin
-       String_Skip (From, Pos);
-       Item := Scan_Long_Long_Unsigned (From, Pos'Access, From'Last);
-       Last := Pos - 1;
- 
-    exception
-       when Constraint_Error =>
-          raise Data_Error;
-    end Gets_LLU;
- 
-    --------------
-    -- Gets_Uns --
-    --------------
- 
-    procedure Gets_Uns
-      (From : String;
-       Item : out Unsigned;
-       Last : out Positive)
-    is
-       Pos : aliased Integer;
- 
-    begin
-       String_Skip (From, Pos);
-       Item := Scan_Unsigned (From, Pos'Access, From'Last);
-       Last := Pos - 1;
- 
-    exception
-       when Constraint_Error =>
-          raise Data_Error;
-    end Gets_Uns;
- 
-    ------------------
-    -- Load_Modular --
-    ------------------
- 
-    procedure Load_Modular
-      (File : File_Type;
-       Buf  : out String;
-       Ptr  : in out Natural)
-    is
-       Hash_Loc : Natural;
-       Loaded   : Boolean;
- 
-    begin
-       Load_Skip (File);
- 
-       --  Note: it is a bit strange to allow a minus sign here, but it seems
-       --  consistent with the general behavior expected by the ACVC tests
-       --  which is to scan past junk and then signal data error, see ACVC
-       --  test CE3704F, case (6), which is for signed integer exponents,
-       --  which seems a similar case.
- 
-       Load (File, Buf, Ptr, '+', '-');
-       Load_Digits (File, Buf, Ptr, Loaded);
- 
-       if Loaded then
- 
-          --  Deal with based case. We recognize either the standard '#' or the
-          --  allowed alternative replacement ':' (see RM J.2(3)).
- 
-          Load (File, Buf, Ptr, '#', ':', Loaded);
- 
-          if Loaded then
-             Hash_Loc := Ptr;
-             Load_Extended_Digits (File, Buf, Ptr);
-             Load (File, Buf, Ptr, Buf (Hash_Loc));
-          end if;
- 
-          Load (File, Buf, Ptr, 'E', 'e', Loaded);
- 
-          if Loaded then
- 
-             --  Note: it is strange to allow a minus sign, since the syntax
-             --  does not, but that is what ACVC test CE3704F, case (6) wants
-             --  for the signed case, and there seems no good reason to treat
-             --  exponents differently for the signed and unsigned cases.
- 
-             Load (File, Buf, Ptr, '+', '-');
-             Load_Digits (File, Buf, Ptr);
-          end if;
-       end if;
-    end Load_Modular;
- 
-    -------------
-    -- Put_LLU --
-    -------------
- 
-    procedure Put_LLU
-      (File  : File_Type;
-       Item  : Long_Long_Unsigned;
-       Width : Field;
-       Base  : Number_Base)
-    is
-       Buf : String (1 .. Field'Last);
-       Ptr : Natural := 0;
- 
-    begin
-       if Base = 10 and then Width = 0 then
-          Set_Image_Long_Long_Unsigned (Item, Buf, Ptr);
-       elsif Base = 10 then
-          Set_Image_Width_Long_Long_Unsigned (Item, Width, Buf, Ptr);
-       else
-          Set_Image_Based_Long_Long_Unsigned (Item, Base, Width, Buf, Ptr);
-       end if;
- 
-       Put_Item (File, Buf (1 .. Ptr));
-    end Put_LLU;
- 
-    -------------
-    -- Put_Uns --
-    -------------
- 
-    procedure Put_Uns
-      (File  : File_Type;
-       Item  : Unsigned;
-       Width : Field;
-       Base  : Number_Base)
-    is
-       Buf : String (1 .. Field'Last);
-       Ptr : Natural := 0;
- 
-    begin
-       if Base = 10 and then Width = 0 then
-          Set_Image_Unsigned (Item, Buf, Ptr);
-       elsif Base = 10 then
-          Set_Image_Width_Unsigned (Item, Width, Buf, Ptr);
-       else
-          Set_Image_Based_Unsigned (Item, Base, Width, Buf, Ptr);
-       end if;
- 
-       Put_Item (File, Buf (1 .. Ptr));
-    end Put_Uns;
- 
-    --------------
-    -- Puts_LLU --
-    --------------
- 
-    procedure Puts_LLU
-      (To   : out String;
-       Item : Long_Long_Unsigned;
-       Base : Number_Base)
-    is
-       Buf : String (1 .. Field'Last);
-       Ptr : Natural := 0;
- 
-    begin
-       if Base = 10 then
-          Set_Image_Width_Long_Long_Unsigned (Item, To'Length, Buf, Ptr);
-       else
-          Set_Image_Based_Long_Long_Unsigned (Item, Base, To'Length, Buf, Ptr);
-       end if;
- 
-       if Ptr > To'Length then
-          raise Layout_Error;
-       else
-          To (To'First .. To'First + Ptr - 1) := Buf (1 .. Ptr);
-       end if;
-    end Puts_LLU;
- 
-    --------------
-    -- Puts_Uns --
-    --------------
- 
-    procedure Puts_Uns
-      (To   : out String;
-       Item : Unsigned;
-       Base : Number_Base)
-    is
-       Buf : String (1 .. Field'Last);
-       Ptr : Natural := 0;
- 
-    begin
-       if Base = 10 then
-          Set_Image_Width_Unsigned (Item, To'Length, Buf, Ptr);
-       else
-          Set_Image_Based_Unsigned (Item, Base, To'Length, Buf, Ptr);
-       end if;
- 
-       if Ptr > To'Length then
-          raise Layout_Error;
-       else
-          To (To'First .. To'First + Ptr - 1) := Buf (1 .. Ptr);
-       end if;
-    end Puts_Uns;
- 
- end Ada.Wide_Wide_Text_IO.Modular_Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ztmoau.ads gcc-8.1.0/gcc/ada/a-ztmoau.ads
*** gcc-7.3.0/gcc/ada/a-ztmoau.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-ztmoau.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,88 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --    A D A . W I D E _ W I D E _ T E X T _ I O . M O D U L A R _ A U X     --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          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- --
- -- 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 routines for Ada.Wide_Wide_Text_IO.Modular_IO
- --  that are shared among separate instantiations of this package. The
- --  routines in this package are identical semantically to those in Modular_IO
- --  itself, except that the generic parameter Num has been replaced by
- --  Unsigned or Long_Long_Unsigned, and the default parameters have been
- --  removed because they are supplied explicitly by the calls from within the
- --  generic template.
- 
- with System.Unsigned_Types;
- 
- private package Ada.Wide_Wide_Text_IO.Modular_Aux is
- 
-    package U renames System.Unsigned_Types;
- 
-    procedure Get_Uns
-      (File  : File_Type;
-       Item  : out U.Unsigned;
-       Width : Field);
- 
-    procedure Get_LLU
-      (File  : File_Type;
-       Item  : out U.Long_Long_Unsigned;
-       Width : Field);
- 
-    procedure Gets_Uns
-      (From : String;
-       Item : out U.Unsigned;
-       Last : out Positive);
- 
-    procedure Gets_LLU
-      (From : String;
-       Item : out U.Long_Long_Unsigned;
-       Last : out Positive);
- 
-    procedure Put_Uns
-      (File  : File_Type;
-       Item  : U.Unsigned;
-       Width : Field;
-       Base  : Number_Base);
- 
-    procedure Put_LLU
-      (File  : File_Type;
-       Item  : U.Long_Long_Unsigned;
-       Width : Field;
-       Base  : Number_Base);
- 
-    procedure Puts_Uns
-      (To   : out String;
-       Item : U.Unsigned;
-       Base : Number_Base);
- 
-    procedure Puts_LLU
-      (To   : out String;
-       Item : U.Long_Long_Unsigned;
-       Base : Number_Base);
- 
- end Ada.Wide_Wide_Text_IO.Modular_Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ztmoio.adb gcc-8.1.0/gcc/ada/a-ztmoio.adb
*** gcc-7.3.0/gcc/ada/a-ztmoio.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-ztmoio.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,141 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --      A D A . W I D E _ W I D E _ T E X T _ I O . M O D U L A R _ I O     --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          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- --
- -- 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.Wide_Wide_Text_IO.Modular_Aux;
- 
- with System.Unsigned_Types; use System.Unsigned_Types;
- with System.WCh_Con;        use System.WCh_Con;
- with System.WCh_WtS;        use System.WCh_WtS;
- 
- package body Ada.Wide_Wide_Text_IO.Modular_IO is
- 
-    subtype TFT is Ada.Wide_Wide_Text_IO.File_Type;
-    --  File type required for calls to routines in Aux
- 
-    package Aux renames Ada.Wide_Wide_Text_IO.Modular_Aux;
- 
-    ---------
-    -- Get --
-    ---------
- 
-    procedure Get
-      (File  : File_Type;
-       Item  : out Num;
-       Width : Field := 0)
-    is
-    begin
-       if Num'Size > Unsigned'Size then
-          Aux.Get_LLU (TFT (File), Long_Long_Unsigned (Item), Width);
-       else
-          Aux.Get_Uns (TFT (File), Unsigned (Item), Width);
-       end if;
- 
-    exception
-       when Constraint_Error => raise Data_Error;
-    end Get;
- 
-    procedure Get
-      (Item  : out Num;
-       Width : Field := 0)
-    is
-    begin
-       Get (Current_Input, Item, Width);
-    end Get;
- 
-    procedure Get
-      (From : Wide_Wide_String;
-       Item : out Num;
-       Last : out Positive)
-    is
-       S : constant String := Wide_Wide_String_To_String (From, WCEM_Upper);
-       --  String on which we do the actual conversion. Note that the method
-       --  used for wide character encoding is irrelevant, since if there is
-       --  a character outside the Standard.Character range then the call to
-       --  Aux.Gets will raise Data_Error in any case.
- 
-    begin
-       if Num'Size > Unsigned'Size then
-          Aux.Gets_LLU (S, Long_Long_Unsigned (Item), Last);
-       else
-          Aux.Gets_Uns (S, Unsigned (Item), Last);
-       end if;
- 
-    exception
-       when Constraint_Error => raise Data_Error;
-    end Get;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put
-      (File  : File_Type;
-       Item  : Num;
-       Width : Field := Default_Width;
-       Base  : Number_Base := Default_Base)
-    is
-    begin
-       if Num'Size > Unsigned'Size then
-          Aux.Put_LLU (TFT (File), Long_Long_Unsigned (Item), Width, Base);
-       else
-          Aux.Put_Uns (TFT (File), Unsigned (Item), Width, Base);
-       end if;
-    end Put;
- 
-    procedure Put
-      (Item  : Num;
-       Width : Field := Default_Width;
-       Base  : Number_Base := Default_Base)
-    is
-    begin
-       Put (Current_Output, Item, Width, Base);
-    end Put;
- 
-    procedure Put
-      (To   : out Wide_Wide_String;
-       Item : Num;
-       Base : Number_Base := Default_Base)
-    is
-       S : String (To'First .. To'Last);
- 
-    begin
-       if Num'Size > Unsigned'Size then
-          Aux.Puts_LLU (S, Long_Long_Unsigned (Item), Base);
-       else
-          Aux.Puts_Uns (S, Unsigned (Item), Base);
-       end if;
- 
-       for J in S'Range loop
-          To (J) := Wide_Wide_Character'Val (Character'Pos (S (J)));
-       end loop;
-    end Put;
- 
- end Ada.Wide_Wide_Text_IO.Modular_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-ztmoio.ads gcc-8.1.0/gcc/ada/a-ztmoio.ads
*** gcc-7.3.0/gcc/ada/a-ztmoio.ads	Thu Jul 17 06:35:13 2014
--- gcc-8.1.0/gcc/ada/a-ztmoio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,60 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --      A D A . W I D E _ W I D E _ T E X T _ I O . M O D U L A R _ I O     --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  In Ada 95, the package Ada.Wide_Wide_Text_IO.Modular_IO is a subpackage
- --  of Wide_Wide_Text_IO. In GNAT we make it a child package to avoid loading
- --  the necessary code if Modular_IO is not instantiated. See the routine
- --  Rtsfind.Check_Text_IO_Special_Unit for a description of how we patch up
- --  the difference in semantics so that it is invisible to the Ada programmer.
- 
- private generic
-    type Num is mod <>;
- 
- package Ada.Wide_Wide_Text_IO.Modular_IO is
- 
-    Default_Width : Field := Num'Width;
-    Default_Base  : Number_Base := 10;
- 
-    procedure Get
-      (File  : File_Type;
-       Item  : out Num;
-       Width : Field := 0);
- 
-    procedure Get
-      (Item  : out Num;
-       Width : Field := 0);
- 
-    procedure Put
-      (File  : File_Type;
-       Item  : Num;
-       Width : Field := Default_Width;
-       Base  : Number_Base := Default_Base);
- 
-    procedure Put
-      (Item  : Num;
-       Width : Field := Default_Width;
-       Base  : Number_Base := Default_Base);
- 
-    procedure Get
-      (From : Wide_Wide_String;
-       Item : out Num;
-       Last : out Positive);
- 
-    procedure Put
-      (To   : out Wide_Wide_String;
-       Item : Num;
-       Base : Number_Base := Default_Base);
- 
- end Ada.Wide_Wide_Text_IO.Modular_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-zttest.adb gcc-8.1.0/gcc/ada/a-zttest.adb
*** gcc-7.3.0/gcc/ada/a-zttest.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-zttest.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,46 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --    A D A . W I D E _ W I D E _ T E X T _ I O . T E X T _ S T R E A M S   --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          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- --
- -- 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 System.File_IO;
- 
- package body Ada.Wide_Wide_Text_IO.Text_Streams is
- 
-    ------------
-    -- Stream --
-    ------------
- 
-    function Stream (File : File_Type) return Stream_Access is
-    begin
-       System.File_IO.Check_File_Open (FCB.AFCB_Ptr (File));
-       return Stream_Access (File);
-    end Stream;
- 
- end Ada.Wide_Wide_Text_IO.Text_Streams;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-zttest.ads gcc-8.1.0/gcc/ada/a-zttest.ads
*** gcc-7.3.0/gcc/ada/a-zttest.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-zttest.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,24 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --    A D A . W I D E _ W I D E _ T E X T _ I O . T E X T _ S T R E A M S   --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Streams;
- 
- package Ada.Wide_Wide_Text_IO.Text_Streams is
- 
-    type Stream_Access is access all Streams.Root_Stream_Type'Class;
- 
-    function Stream (File : File_Type) return Stream_Access;
- 
- end Ada.Wide_Wide_Text_IO.Text_Streams;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-zzboio.adb gcc-8.1.0/gcc/ada/a-zzboio.adb
*** gcc-7.3.0/gcc/ada/a-zzboio.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/a-zzboio.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,180 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                 ADA.WIDE_WIDE_TEXT_IO.WIDE_WIDE_BOUNDED_IO               --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1997-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- --
- -- 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.Wide_Wide_Text_IO; use Ada.Wide_Wide_Text_IO;
- with Ada.Unchecked_Deallocation;
- 
- package body Ada.Wide_Wide_Text_IO.Wide_Wide_Bounded_IO is
- 
-    type Wide_Wide_String_Access is access all Wide_Wide_String;
- 
-    procedure Free (WWSA : in out Wide_Wide_String_Access);
-    --  Perform an unchecked deallocation of a non-null string
- 
-    ----------
-    -- Free --
-    ----------
- 
-    procedure Free (WWSA : in out Wide_Wide_String_Access) is
-       Null_Wide_Wide_String : constant Wide_Wide_String := "";
- 
-       procedure Deallocate is
-         new Ada.Unchecked_Deallocation (
-           Wide_Wide_String, Wide_Wide_String_Access);
- 
-    begin
-       --  Do not try to free statically allocated null string
- 
-       if WWSA.all /= Null_Wide_Wide_String then
-          Deallocate (WWSA);
-       end if;
-    end Free;
- 
-    --------------
-    -- Get_Line --
-    --------------
- 
-    function Get_Line return Wide_Wide_Bounded.Bounded_Wide_Wide_String is
-    begin
-       return Wide_Wide_Bounded.To_Bounded_Wide_Wide_String (Get_Line);
-    end Get_Line;
- 
-    --------------
-    -- Get_Line --
-    --------------
- 
-    function Get_Line
-      (File : File_Type) return Wide_Wide_Bounded.Bounded_Wide_Wide_String
-    is
-    begin
-       return Wide_Wide_Bounded.To_Bounded_Wide_Wide_String (Get_Line (File));
-    end Get_Line;
- 
-    --------------
-    -- Get_Line --
-    --------------
- 
-    procedure Get_Line
-      (Item : out Wide_Wide_Bounded.Bounded_Wide_Wide_String)
-    is
-       Buffer : Wide_Wide_String (1 .. 1000);
-       Last   : Natural;
-       Str1   : Wide_Wide_String_Access;
-       Str2   : Wide_Wide_String_Access;
- 
-    begin
-       Get_Line (Buffer, Last);
-       Str1 := new Wide_Wide_String'(Buffer (1 .. Last));
- 
-       while Last = Buffer'Last loop
-          Get_Line (Buffer, Last);
-          Str2 := new Wide_Wide_String'(Str1.all & Buffer (1 .. Last));
-          Free (Str1);
-          Str1 := Str2;
-       end loop;
- 
-       Item := Wide_Wide_Bounded.To_Bounded_Wide_Wide_String (Str1.all);
-    end Get_Line;
- 
-    --------------
-    -- Get_Line --
-    --------------
- 
-    procedure Get_Line
-      (File : File_Type;
-       Item : out Wide_Wide_Bounded.Bounded_Wide_Wide_String)
-    is
-       Buffer : Wide_Wide_String (1 .. 1000);
-       Last   : Natural;
-       Str1   : Wide_Wide_String_Access;
-       Str2   : Wide_Wide_String_Access;
- 
-    begin
-       Get_Line (File, Buffer, Last);
-       Str1 := new Wide_Wide_String'(Buffer (1 .. Last));
- 
-       while Last = Buffer'Last loop
-          Get_Line (File, Buffer, Last);
-          Str2 := new Wide_Wide_String'(Str1.all & Buffer (1 .. Last));
-          Free (Str1);
-          Str1 := Str2;
-       end loop;
- 
-       Item := Wide_Wide_Bounded.To_Bounded_Wide_Wide_String (Str1.all);
-    end Get_Line;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put
-      (Item : Wide_Wide_Bounded.Bounded_Wide_Wide_String)
-    is
-    begin
-       Put (Wide_Wide_Bounded.To_Wide_Wide_String (Item));
-    end Put;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put
-      (File : File_Type;
-       Item : Wide_Wide_Bounded.Bounded_Wide_Wide_String)
-    is
-    begin
-       Put (File, Wide_Wide_Bounded.To_Wide_Wide_String (Item));
-    end Put;
- 
-    --------------
-    -- Put_Line --
-    --------------
- 
-    procedure Put_Line
-      (Item : Wide_Wide_Bounded.Bounded_Wide_Wide_String)
-    is
-    begin
-       Put_Line (Wide_Wide_Bounded.To_Wide_Wide_String (Item));
-    end Put_Line;
- 
-    --------------
-    -- Put_Line --
-    --------------
- 
-    procedure Put_Line
-      (File : File_Type;
-       Item : Wide_Wide_Bounded.Bounded_Wide_Wide_String)
-    is
-    begin
-       Put_Line (File, Wide_Wide_Bounded.To_Wide_Wide_String (Item));
-    end Put_Line;
- 
- end Ada.Wide_Wide_Text_IO.Wide_Wide_Bounded_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-zzboio.ads gcc-8.1.0/gcc/ada/a-zzboio.ads
*** gcc-7.3.0/gcc/ada/a-zzboio.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-zzboio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,50 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                 ADA.WIDE_WIDE_TEXT_IO.WIDE_WIDE_BOUNDED_IO               --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Strings.Wide_Wide_Bounded;
- 
- generic
-    with package Wide_Wide_Bounded is
-      new Ada.Strings.Wide_Wide_Bounded.Generic_Bounded_Length (<>);
- 
- package Ada.Wide_Wide_Text_IO.Wide_Wide_Bounded_IO is
- 
-    function Get_Line return Wide_Wide_Bounded.Bounded_Wide_Wide_String;
- 
-    function Get_Line
-      (File : File_Type) return Wide_Wide_Bounded.Bounded_Wide_Wide_String;
- 
-    procedure Get_Line
-      (Item : out Wide_Wide_Bounded.Bounded_Wide_Wide_String);
- 
-    procedure Get_Line
-      (File : File_Type;
-       Item : out Wide_Wide_Bounded.Bounded_Wide_Wide_String);
- 
-    procedure Put
-      (Item : Wide_Wide_Bounded.Bounded_Wide_Wide_String);
- 
-    procedure Put
-      (File : File_Type;
-       Item : Wide_Wide_Bounded.Bounded_Wide_Wide_String);
- 
-    procedure Put_Line
-      (Item : Wide_Wide_Bounded.Bounded_Wide_Wide_String);
- 
-    procedure Put_Line
-      (File : File_Type;
-       Item : Wide_Wide_Bounded.Bounded_Wide_Wide_String);
- 
- end Ada.Wide_Wide_Text_IO.Wide_Wide_Bounded_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/a-zzunio.ads gcc-8.1.0/gcc/ada/a-zzunio.ads
*** gcc-7.3.0/gcc/ada/a-zzunio.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/a-zzunio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,63 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --               ADA.WIDE_WIDE_TEXT_IO.WIDE_WIDE_UNBOUNDED_IO               --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Note: historically GNAT provided these subprograms as a child of the
- --  package Ada.Strings.Wide_Wide_Unbounded. So we implement this new Ada 2005
- --  package by renaming the subprograms in that child. This is a more
- --  straightforward implementation anyway, since we need access to the
- --  internal representation of Unbounded_Wide_Wide_String.
- 
- with Ada.Strings.Wide_Wide_Unbounded;
- with Ada.Strings.Wide_Wide_Unbounded.Wide_Wide_Text_IO;
- 
- package Ada.Wide_Wide_Text_IO.Wide_Wide_Unbounded_IO is
- 
-    procedure Put
-      (File : File_Type;
-       Item : Strings.Wide_Wide_Unbounded.Unbounded_Wide_Wide_String)
-    renames Ada.Strings.Wide_Wide_Unbounded.Wide_Wide_Text_IO.Put;
- 
-    procedure Put
-      (Item : Strings.Wide_Wide_Unbounded.Unbounded_Wide_Wide_String)
-    renames Ada.Strings.Wide_Wide_Unbounded.Wide_Wide_Text_IO.Put;
- 
-    procedure Put_Line
-      (File : Wide_Wide_Text_IO.File_Type;
-       Item : Strings.Wide_Wide_Unbounded.Unbounded_Wide_Wide_String)
-    renames Ada.Strings.Wide_Wide_Unbounded.Wide_Wide_Text_IO.Put_Line;
- 
-    procedure Put_Line
-      (Item : Strings.Wide_Wide_Unbounded.Unbounded_Wide_Wide_String)
-    renames Ada.Strings.Wide_Wide_Unbounded.Wide_Wide_Text_IO.Put_Line;
- 
-    function Get_Line
-      (File : File_Type)
-       return Strings.Wide_Wide_Unbounded.Unbounded_Wide_Wide_String
-    renames Ada.Strings.Wide_Wide_Unbounded.Wide_Wide_Text_IO.Get_Line;
- 
-    function Get_Line
-      return Strings.Wide_Wide_Unbounded.Unbounded_Wide_Wide_String
-    renames Ada.Strings.Wide_Wide_Unbounded.Wide_Wide_Text_IO.Get_Line;
- 
-    procedure Get_Line
-       (File : File_Type;
-        Item : out Strings.Wide_Wide_Unbounded.Unbounded_Wide_Wide_String)
-    renames Ada.Strings.Wide_Wide_Unbounded.Wide_Wide_Text_IO.Get_Line;
- 
-    procedure Get_Line
-      (Item : out Strings.Wide_Wide_Unbounded.Unbounded_Wide_Wide_String)
-    renames Ada.Strings.Wide_Wide_Unbounded.Wide_Wide_Text_IO.Get_Line;
- 
- end Ada.Wide_Wide_Text_IO.Wide_Wide_Unbounded_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/ada.ads gcc-8.1.0/gcc/ada/ada.ads
*** gcc-7.3.0/gcc/ada/ada.ads	Fri Jan  6 10:33:48 2017
--- gcc-8.1.0/gcc/ada/ada.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,20 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                                  A D A                                   --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- package Ada is
-    pragma No_Elaboration_Code_All;
-    pragma Pure;
- 
- end Ada;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/ada_get_targ.adb gcc-8.1.0/gcc/ada/ada_get_targ.adb
*** gcc-7.3.0/gcc/ada/ada_get_targ.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/ada_get_targ.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,328 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                             G E T _ T A R G                              --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is 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.          --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Version shared by various Ada based back-ends (e.g. gnat2scil, gnat2why)
+ 
+ with System.OS_Lib; use System.OS_Lib;
+ 
+ with GNAT.Directory_Operations; use GNAT.Directory_Operations;
+ 
+ package body Get_Targ is
+ 
+    -----------------------
+    -- Get_Bits_Per_Unit --
+    -----------------------
+ 
+    function Get_Bits_Per_Unit return Pos is
+    begin
+       return 8;
+    end Get_Bits_Per_Unit;
+ 
+    -----------------------
+    -- Get_Bits_Per_Word --
+    -----------------------
+ 
+    function Get_Bits_Per_Word return Pos is
+    begin
+       return 32;
+    end Get_Bits_Per_Word;
+ 
+    -------------------
+    -- Get_Char_Size --
+    -------------------
+ 
+    function Get_Char_Size return Pos is
+    begin
+       return 8;
+    end Get_Char_Size;
+ 
+    -----------------
+    -- Get_Wchar_T --
+    -----------------
+ 
+    function Get_Wchar_T_Size return Pos is
+    begin
+       return 16;
+    end Get_Wchar_T_Size;
+ 
+    --------------------
+    -- Get_Short_Size --
+    --------------------
+ 
+    function Get_Short_Size return Pos is
+    begin
+       return 16;
+    end Get_Short_Size;
+ 
+    ------------------
+    -- Get_Int_Size --
+    ------------------
+ 
+    function Get_Int_Size return Pos is
+    begin
+       return 32;
+    end Get_Int_Size;
+ 
+    -------------------
+    -- Get_Long_Size --
+    -------------------
+ 
+    function Get_Long_Size return Pos is
+    begin
+       return 64;
+    end Get_Long_Size;
+ 
+    ------------------------
+    -- Get_Long_Long_Size --
+    ------------------------
+ 
+    function Get_Long_Long_Size return Pos is
+    begin
+       return 64;
+    end Get_Long_Long_Size;
+ 
+    ----------------------
+    -- Get_Pointer_Size --
+    ----------------------
+ 
+    function Get_Pointer_Size return Pos is
+    begin
+       return 64;
+    end Get_Pointer_Size;
+ 
+    ---------------------------
+    -- Get_Maximum_Alignment --
+    ---------------------------
+ 
+    function Get_Maximum_Alignment return Pos is
+    begin
+       return 4;
+    end Get_Maximum_Alignment;
+ 
+    ------------------------------------
+    -- Get_System_Allocator_Alignment --
+    ------------------------------------
+ 
+    function Get_System_Allocator_Alignment return Nat is
+    begin
+       return 1;
+    end Get_System_Allocator_Alignment;
+ 
+    ------------------------
+    -- Get_Float_Words_BE --
+    ------------------------
+ 
+    function Get_Float_Words_BE return Nat is
+    begin
+       return 1;
+    end Get_Float_Words_BE;
+ 
+    ------------------
+    -- Get_Words_BE --
+    ------------------
+ 
+    function Get_Words_BE return Nat is
+    begin
+       return 1;
+    end Get_Words_BE;
+ 
+    ------------------
+    -- Get_Bytes_BE --
+    ------------------
+ 
+    function Get_Bytes_BE return Nat is
+    begin
+       return 1;
+    end Get_Bytes_BE;
+ 
+    -----------------
+    -- Get_Bits_BE --
+    -----------------
+ 
+    function Get_Bits_BE return Nat is
+    begin
+       return 1;
+    end Get_Bits_BE;
+ 
+    ---------------------
+    -- Get_Short_Enums --
+    ---------------------
+ 
+    function Get_Short_Enums return Int is
+    begin
+       return 0;
+    end Get_Short_Enums;
+ 
+    --------------------------
+    -- Get_Strict_Alignment --
+    --------------------------
+ 
+    function Get_Strict_Alignment return Nat is
+    begin
+       return 1;
+    end Get_Strict_Alignment;
+ 
+    --------------------------------
+    -- Get_Double_Float_Alignment --
+    --------------------------------
+ 
+    function Get_Double_Float_Alignment return Nat is
+    begin
+       return 0;
+    end Get_Double_Float_Alignment;
+ 
+    ---------------------------------
+    -- Get_Double_Scalar_Alignment --
+    ---------------------------------
+ 
+    function Get_Double_Scalar_Alignment return Nat is
+    begin
+       return 0;
+    end Get_Double_Scalar_Alignment;
+ 
+    -----------------------------
+    -- Get_Max_Unaligned_Field --
+    -----------------------------
+ 
+    function Get_Max_Unaligned_Field return Pos is
+    begin
+       return 64;  -- Can be different on some targets (e.g., AAMP)
+    end Get_Max_Unaligned_Field;
+ 
+    ----------------------
+    -- Digits_From_Size --
+    ----------------------
+ 
+    function Digits_From_Size (Size : Pos) return Pos is
+    begin
+       case Size is
+          when  32    => return  6;
+          when  48    => return  9;
+          when  64    => return 15;
+          when  96    => return 18;
+          when 128    => return 18;
+          when others => raise Program_Error;
+       end case;
+    end Digits_From_Size;
+ 
+    -----------------------------
+    -- Register_Back_End_Types --
+    -----------------------------
+ 
+    procedure Register_Back_End_Types (Call_Back : Register_Type_Proc) is
+       Float_Str  : C_String := (others => ASCII.NUL);
+       Double_Str : C_String := (others => ASCII.NUL);
+ 
+    begin
+       Float_Str (Float_Str'First .. Float_Str'First + 4) := "float";
+       Call_Back
+         (C_Name => Float_Str, Digs => 6, Complex => False, Count  => 0,
+          Float_Rep => IEEE_Binary,
+          Precision => 32, Size => 32, Alignment => 32);
+ 
+       Double_Str (Double_Str'First .. Double_Str'First + 5) := "double";
+       Call_Back
+         (C_Name    => Double_Str,
+          Digs      => 15,
+          Complex   => False,
+          Count     => 0,
+          Float_Rep => IEEE_Binary,
+          Precision => 64,
+          Size      => 64,
+          Alignment => 64);
+    end Register_Back_End_Types;
+ 
+    ---------------------
+    -- Width_From_Size --
+    ---------------------
+ 
+    function Width_From_Size  (Size : Pos) return Pos is
+    begin
+       case Size is
+          when  8     => return  4;
+          when 16     => return  6;
+          when 32     => return 11;
+          when 64     => return 21;
+          when others => raise Program_Error;
+       end case;
+    end Width_From_Size;
+ 
+    ------------------------------
+    -- Get_Back_End_Config_File --
+    ------------------------------
+ 
+    function Get_Back_End_Config_File return String_Ptr is
+ 
+       function Exec_Name return String;
+       --  Return name of the current executable (from argv[0])
+ 
+       function Get_Target_File (Dir : String) return String_Ptr;
+       --  Return Dir & "target.atp" if found, null otherwise
+ 
+       ---------------
+       -- Exec_Name --
+       ---------------
+ 
+       function Exec_Name return String is
+          type Arg_Array is array (Nat) of Big_String_Ptr;
+          type Arg_Array_Ptr is access all Arg_Array;
+ 
+          gnat_argv : Arg_Array_Ptr;
+          pragma Import (C, gnat_argv);
+ 
+       begin
+          for J in 1 .. Natural'Last loop
+             if gnat_argv (0) (J) = ASCII.NUL then
+                return gnat_argv (0) (1 .. J - 1);
+             end if;
+          end loop;
+ 
+          raise Program_Error;
+       end Exec_Name;
+ 
+       ---------------------
+       -- Get_Target_File --
+       ---------------------
+ 
+       function Get_Target_File (Dir : String) return String_Ptr is
+          F : constant String := Dir & "target.atp";
+       begin
+          if Is_Regular_File (F) then
+             return new String'(F);
+          else
+             return null;
+          end if;
+       end Get_Target_File;
+ 
+       Exec : constant String := Exec_Name;
+ 
+    --  Start of processing for Get_Back_End_Config_File
+ 
+    begin
+       if Is_Absolute_Path (Exec) then
+          return Get_Target_File (Dir_Name (Exec));
+       else
+          return Get_Target_File (Dir_Name (Locate_Exec_On_Path (Exec).all));
+       end if;
+    end Get_Back_End_Config_File;
+ 
+ end Get_Targ;
diff -Nrcpad gcc-7.3.0/gcc/ada/adabkend.adb gcc-8.1.0/gcc/ada/adabkend.adb
*** gcc-7.3.0/gcc/ada/adabkend.adb	Thu Jul  7 13:05:08 2016
--- gcc-8.1.0/gcc/ada/adabkend.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2016, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or 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-2018, AdaCore                     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 22,27 ****
--- 22,28 ----
  
  --  This is the version of the Back_End package for back ends written in Ada
  
+ with Atree;    use Atree;
  with Debug;
  with Lib;
  with Opt;      use Opt;
*************** package body Adabkend is
*** 56,61 ****
--- 57,69 ----
           Write_Eol;
        end if;
  
+       --  The front end leaves the Current_Error_Node at a location that is
+       --  meaningless and confusing when emitting bug boxes from the back end.
+       --  Reset the global variable in order to emit "No source file position
+       --  information available" messages on back end crashes.
+ 
+       Current_Error_Node := Empty;
+ 
        Driver (Lib.Cunit (Types.Main_Unit));
     end Call_Back_End;
  
*************** package body Adabkend is
*** 83,89 ****
        --
        --  If the switch is not valid, control will not return. The switches
        --  must still be scanned to skip the "-o" arguments, or internal GCC
!       --  switches, which may be safely ignored by other back-ends.
  
        ----------------------------
        -- Scan_Back_End_Switches --
--- 91,97 ----
        --
        --  If the switch is not valid, control will not return. The switches
        --  must still be scanned to skip the "-o" arguments, or internal GCC
!       --  switches, which may be safely ignored by other back ends.
  
        ----------------------------
        -- Scan_Back_End_Switches --
*************** package body Adabkend is
*** 243,249 ****
                 else
                    Add_Src_Search_Dir (Argv);
  
!                   --  Add directory to lib search so that back-end can take as
                    --  input ALI files if needed. Otherwise this won't have any
                    --  impact on the compiler.
  
--- 251,257 ----
                 else
                    Add_Src_Search_Dir (Argv);
  
!                   --  Add directory to lib search so that back end can take as
                    --  input ALI files if needed. Otherwise this won't have any
                    --  impact on the compiler.
  
diff -Nrcpad gcc-7.3.0/gcc/ada/adabkend.ads gcc-8.1.0/gcc/ada/adabkend.ads
*** gcc-7.3.0/gcc/ada/adabkend.ads	Mon Oct 29 09:50:53 2012
--- gcc-8.1.0/gcc/ada/adabkend.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2012, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/adadecode.c gcc-8.1.0/gcc/ada/adadecode.c
*** gcc-7.3.0/gcc/ada/adadecode.c	Fri Oct 16 12:53:03 2015
--- gcc-8.1.0/gcc/ada/adadecode.c	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *           Copyright (C) 2001-2015, Free Software Foundation, Inc.        *
   *                                                                          *
   * GNAT is free software;  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-2018, Free Software Foundation, Inc.        *
   *                                                                          *
   * GNAT is 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_decode (const char *coded_name, c
*** 330,336 ****
  	      }
  
  	    /* Write symbol in the space.  */
! 	    strncpy (optoken, trans_table[k][1], oplen);
  	  }
  	else
  	  k++;
--- 330,336 ----
  	      }
  
  	    /* Write symbol in the space.  */
! 	    memcpy (optoken, trans_table[k][1], oplen);
  	  }
  	else
  	  k++;
diff -Nrcpad gcc-7.3.0/gcc/ada/adadecode.h gcc-8.1.0/gcc/ada/adadecode.h
*** gcc-7.3.0/gcc/ada/adadecode.h	Fri Oct 16 12:53:03 2015
--- gcc-8.1.0/gcc/ada/adadecode.h	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *           Copyright (C) 2001-2015, Free Software Foundation, Inc.        *
   *                                                                          *
   * GNAT is free software;  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-2018, Free Software Foundation, Inc.        *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-7.3.0/gcc/ada/adaint.c gcc-8.1.0/gcc/ada/adaint.c
*** gcc-7.3.0/gcc/ada/adaint.c	Wed Feb  1 21:36:09 2017
--- gcc-8.1.0/gcc/ada/adaint.c	Thu Jan 11 08:53:52 2018
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2015, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  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-2018, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
***************
*** 81,86 ****
--- 81,90 ----
  #define __BSD_VISIBLE 1
  #endif
  
+ #if defined (__QNX__)
+ #define _LARGEFILE64_SOURCE 1
+ #endif
+ 
  #ifdef IN_RTS
  #include "tconfig.h"
  #include "tsystem.h"
*************** __gnat_get_current_dir (char *dir, int *
*** 613,619 ****
    WS2SC (dir, wdir, GNAT_MAX_PATH_LEN);
  
  #else
!    getcwd (dir, *length);
  #endif
  
     *length = strlen (dir);
--- 617,632 ----
    WS2SC (dir, wdir, GNAT_MAX_PATH_LEN);
  
  #else
!    char* result = getcwd (dir, *length);
!    /* If the current directory does not exist, set length = 0
!       to indicate error. That can't happen on windows, where
!       you can't delete a directory if it is the current
!       directory of some process. */
!    if (!result)
!      {
!        *length = 0;
!        return;
!      }
  #endif
  
     *length = strlen (dir);
*************** __gnat_rmdir (char *path)
*** 764,770 ****
  }
  
  #if defined (_WIN32) || defined (__linux__) || defined (__sun__) \
!   || defined (__FreeBSD__) || defined(__DragonFly__)
  #define HAS_TARGET_WCHAR_T
  #endif
  
--- 777,783 ----
  }
  
  #if defined (_WIN32) || defined (__linux__) || defined (__sun__) \
!   || defined (__FreeBSD__) || defined(__DragonFly__) || defined (__QNX__)
  #define HAS_TARGET_WCHAR_T
  #endif
  
*************** __gnat_open_new_temp (char *path, int fm
*** 1003,1009 ****
  
  #if (defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__) \
    || defined (__linux__) || defined (__GLIBC__) || defined (__ANDROID__) \
!   || defined (__DragonFly__)) && !defined (__vxworks)
    return mkstemp (path);
  #elif defined (__Lynx__)
    mktemp (path);
--- 1016,1022 ----
  
  #if (defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__) \
    || defined (__linux__) || defined (__GLIBC__) || defined (__ANDROID__) \
!   || defined (__DragonFly__) || defined (__QNX__)) && !defined (__vxworks)
    return mkstemp (path);
  #elif defined (__Lynx__)
    mktemp (path);
*************** __gnat_tmp_name (char *tmp_filename)
*** 1176,1182 ****
  
  #elif defined (__linux__) || defined (__FreeBSD__) || defined (__NetBSD__) \
    || defined (__OpenBSD__) || defined (__GLIBC__) || defined (__ANDROID__) \
!   || defined (__DragonFly__)
  #define MAX_SAFE_PATH 1000
    char *tmpdir = getenv ("TMPDIR");
  
--- 1189,1195 ----
  
  #elif defined (__linux__) || defined (__FreeBSD__) || defined (__NetBSD__) \
    || defined (__OpenBSD__) || defined (__GLIBC__) || defined (__ANDROID__) \
!   || defined (__DragonFly__) || defined (__QNX__)
  #define MAX_SAFE_PATH 1000
    char *tmpdir = getenv ("TMPDIR");
  
*************** __gnat_tmp_name (char *tmp_filename)
*** 1212,1218 ****
  
        /* Fill up the name buffer from the last position.  */
        seed++;
!       for (t = seed; 0 <= --index; t >>= 3)
          *--pos = '0' + (t & 07);
  
        /* Check to see if its unique, if not bump the seed and try again.  */
--- 1225,1231 ----
  
        /* Fill up the name buffer from the last position.  */
        seed++;
!       for (t = seed; --index >= 0; t >>= 3)
          *--pos = '0' + (t & 07);
  
        /* Check to see if its unique, if not bump the seed and try again.  */
*************** __gnat_dup2 (int oldfd ATTRIBUTE_UNUSED,
*** 2315,2321 ****
       RTPs.  */
    return -1;
  #elif defined (__PikeOS__)
!   /* Not supported.  */
    return -1;
  #elif defined (_WIN32)
    /* Special case when oldfd and newfd are identical and are the standard
--- 2328,2334 ----
       RTPs.  */
    return -1;
  #elif defined (__PikeOS__)
!   /* Not supported. */
    return -1;
  #elif defined (_WIN32)
    /* Special case when oldfd and newfd are identical and are the standard
*************** __gnat_number_of_cpus (void)
*** 2337,2343 ****
  
  #if defined (__linux__) || defined (__sun__) || defined (_AIX) \
    || defined (__APPLE__) || defined (__FreeBSD__) || defined (__OpenBSD__) \
!   || defined (__DragonFly__) || defined (__NetBSD__)
    cores = (int) sysconf (_SC_NPROCESSORS_ONLN);
  
  #elif defined (__hpux__)
--- 2350,2356 ----
  
  #if defined (__linux__) || defined (__sun__) || defined (_AIX) \
    || defined (__APPLE__) || defined (__FreeBSD__) || defined (__OpenBSD__) \
!   || defined (__DragonFly__) || defined (__NetBSD__) || defined (__QNX__)
    cores = (int) sysconf (_SC_NPROCESSORS_ONLN);
  
  #elif defined (__hpux__)
*************** win32_wait (int *status)
*** 2542,2547 ****
--- 2555,2561 ----
    DWORD res;
    int hl_len;
    int found;
+   int pos;
  
   START_WAIT:
  
*************** win32_wait (int *status)
*** 2554,2560 ****
--- 2568,2582 ----
    /* -------------------- critical section -------------------- */
    EnterCS();
  
+   /* ??? We can't wait for more than MAXIMUM_WAIT_OBJECTS due to a Win32
+      limitation */
+   if (plist_length < MAXIMUM_WAIT_OBJECTS)
    hl_len = plist_length;
+   else
+     {
+       errno = EINVAL;
+       return -1;
+     }
  
  #ifdef CERT
    hl = (HANDLE *) xmalloc (sizeof (HANDLE) * hl_len);
*************** win32_wait (int *status)
*** 2577,2582 ****
--- 2599,2611 ----
  
    res = WaitForMultipleObjects (hl_len, hl, FALSE, INFINITE);
  
+   /* If there was an error, exit now */
+   if (res == WAIT_FAILED)
+     {
+       errno = EINVAL;
+       return -1;
+     }
+ 
    /* if the ProcListEvt has been signaled then the list of processes has been
       updated to add or remove a handle, just loop over */
  
*************** win32_wait (int *status)
*** 2587,2595 ****
        goto START_WAIT;
      }
  
!   h = hl[res - WAIT_OBJECT_0];
    GetExitCodeProcess (h, &exitcode);
!   pid = pidl [res - WAIT_OBJECT_0];
  
    found = __gnat_win32_remove_handle (h, -1);
  
--- 2616,2632 ----
        goto START_WAIT;
      }
  
!   /* Handle two distinct groups of return codes: finished waits and abandoned
!      waits */
! 
!   if (res < WAIT_ABANDONED_0)
!     pos = res - WAIT_OBJECT_0;
!   else
!     pos = res - WAIT_ABANDONED_0;
! 
!   h = hl[pos];
    GetExitCodeProcess (h, &exitcode);
!   pid = pidl [pos];
  
    found = __gnat_win32_remove_handle (h, -1);
  
*************** __gnat_portable_wait (int *process_statu
*** 2675,2680 ****
--- 2712,2737 ----
    status = status & 0xffff;
  #endif
  
+   *process_status = status;
+   return pid;
+ }
+ 
+ int
+ __gnat_portable_no_block_wait (int *process_status)
+ {
+   int status = 0;
+   int pid = 0;
+ 
+ #if defined (__vxworks) || defined (__PikeOS__) || defined (_WIN32)
+   /* Not supported. */
+   status = -1;
+ 
+ #else
+ 
+   pid = waitpid (-1, &status, WNOHANG);
+   status = status & 0xffff;
+ #endif
+ 
    *process_status = status;
    return pid;
  }
diff -Nrcpad gcc-7.3.0/gcc/ada/adaint.h gcc-8.1.0/gcc/ada/adaint.h
*** gcc-7.3.0/gcc/ada/adaint.h	Fri Jan 20 14:49:28 2017
--- gcc-8.1.0/gcc/ada/adaint.h	Thu Jan 11 08:53:52 2018
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 1992-2016, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  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-2018, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is 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" {
*** 51,57 ****
     determine at compile time what support the system offers for large files.
     For now we just list the platforms we have manually tested. */
  
! #if defined (__GLIBC__) || defined (__sun__)
  #define GNAT_FOPEN fopen64
  #define GNAT_OPEN open64
  #define GNAT_STAT stat64
--- 51,57 ----
     determine at compile time what support the system offers for large files.
     For now we just list the platforms we have manually tested. */
  
! #if defined (__GLIBC__) || defined (__sun__) || defined (__QNX__)
  #define GNAT_FOPEN fopen64
  #define GNAT_OPEN open64
  #define GNAT_STAT stat64
*************** extern int    __gnat_is_symbolic_link
*** 233,238 ****
--- 233,239 ----
  extern int    __gnat_portable_spawn                (char *[]);
  extern int    __gnat_portable_no_block_spawn       (char *[]);
  extern int    __gnat_portable_wait                 (int *);
+ extern int    __gnat_portable_no_block_wait        (int *);
  extern int    __gnat_current_process_id            (void);
  extern char  *__gnat_locate_exec                   (char *, char *);
  extern char  *__gnat_locate_exec_on_path           (char *);
diff -Nrcpad gcc-7.3.0/gcc/ada/affinity.c gcc-8.1.0/gcc/ada/affinity.c
*** gcc-7.3.0/gcc/ada/affinity.c	Mon Apr 18 09:22:50 2016
--- gcc-8.1.0/gcc/ada/affinity.c	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *            Copyright (C) 2005-2015, Free Software Foundation, Inc.       *
   *                                                                          *
   * GNAT is free software;  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-2018, Free Software Foundation, Inc.       *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-7.3.0/gcc/ada/ali-util.adb gcc-8.1.0/gcc/ada/ali-util.adb
*** gcc-7.3.0/gcc/ada/ali-util.adb	Tue Jan  6 09:14:09 2015
--- gcc-8.1.0/gcc/ada/ali-util.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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
*** 148,154 ****
  
        Source_Index := Sinput.C.Load_File (Get_Name_String (Full_Name));
  
!       if Source_Index = No_Source_File then
           return Checksum_Error;
        end if;
  
--- 148,154 ----
  
        Source_Index := Sinput.C.Load_File (Get_Name_String (Full_Name));
  
!       if Source_Index <= No_Source_File then
           return Checksum_Error;
        end if;
  
diff -Nrcpad gcc-7.3.0/gcc/ada/ali-util.ads gcc-8.1.0/gcc/ada/ali-util.ads
*** gcc-7.3.0/gcc/ada/ali-util.ads	Fri Jan  6 10:28:06 2017
--- gcc-8.1.0/gcc/ada/ali-util.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/ali.adb gcc-8.1.0/gcc/ada/ali.adb
*** gcc-7.3.0/gcc/ada/ali.adb	Fri Jan 13 10:54:43 2017
--- gcc-8.1.0/gcc/ada/ali.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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 is
*** 35,43 ****
     use ASCII;
     --  Make control characters visible
  
!    --  The following variable records which characters currently are
!    --  used as line type markers in the ALI file. This is used in
!    --  Scan_ALI to detect (or skip) invalid lines.
  
     Known_ALI_Lines : constant array (Character range 'A' .. 'Z') of Boolean :=
       ('V'    => True,   -- version
--- 35,45 ----
     use ASCII;
     --  Make control characters visible
  
!    --  The following variable records which characters currently are used as
!    --  line type markers in the ALI file. This is used in Scan_ALI to detect
!    --  (or skip) invalid lines. The following letters are still available:
!    --
!    --    B G H J K O Q Z
  
     Known_ALI_Lines : constant array (Character range 'A' .. 'Z') of Boolean :=
       ('V'    => True,   -- version
*************** package body ALI is
*** 58,63 ****
--- 60,66 ----
        'Z'    => True,   -- implicit with from instantiation
        'C'    => True,   -- SCO information
        'F'    => True,   -- SPARK cross-reference information
+       'T'    => True,   -- task stack information
        others => False);
  
     --------------------
*************** package body ALI is
*** 111,116 ****
--- 114,120 ----
        Locking_Policy_Specified               := ' ';
        No_Normalize_Scalars_Specified         := False;
        No_Object_Specified                    := False;
+       No_Component_Reordering_Specified      := False;
        GNATprove_Mode_Specified               := False;
        Normalize_Scalars_Specified            := False;
        Partition_Elaboration_Policy_Specified := ' ';
*************** package body ALI is
*** 841,847 ****
  
        if Read_Xref then
           Ignore :=
!            ('U' | 'W' | 'Y' | 'Z' | 'D' | 'X' => False, others => True);
  
        --  Read_Lines parameter given
  
--- 845,851 ----
  
        if Read_Xref then
           Ignore :=
!            ('T' | 'U' | 'W' | 'Y' | 'Z' | 'D' | 'X' => False, others => True);
  
        --  Read_Lines parameter given
  
*************** package body ALI is
*** 885,890 ****
--- 889,895 ----
          Main_Priority                => -1,
          Main_CPU                     => -1,
          Main_Program                 => None,
+         No_Component_Reordering      => False,
          No_Object                    => False,
          Normalize_Scalars            => False,
          Ofile_Full_Name              => Full_Object_File_Name,
*************** package body ALI is
*** 1122,1130 ****
              elsif C = 'N' then
                 C := Getc;
  
                 --  Processing for NO
  
!                if C = 'O' then
                    ALIs.Table (Id).No_Object := True;
                    No_Object_Specified := True;
  
--- 1127,1141 ----
              elsif C = 'N' then
                 C := Getc;
  
+                --  Processing for NC
+ 
+                if C = 'C' then
+                   ALIs.Table (Id).No_Component_Reordering := True;
+                   No_Component_Reordering_Specified := True;
+ 
                 --  Processing for NO
  
!                elsif C = 'O' then
                    ALIs.Table (Id).No_Object := True;
                    No_Object_Specified := True;
  
*************** package body ALI is
*** 1736,1741 ****
--- 1747,1754 ----
              UL.Elaborate_Body_Desirable := False;
              UL.Optimize_Alignment       := 'O';
              UL.Has_Finalizer            := False;
+             UL.Primary_Stack_Count      := 0;
+             UL.Sec_Stack_Count          := 0;
  
              if Debug_Flag_U then
                 Write_Str (" ----> reading unit ");
*************** package body ALI is
*** 2017,2024 ****
                 Withs.Table (Withs.Last).Elab_All_Desirable := False;
                 Withs.Table (Withs.Last).SAL_Interface      := False;
                 Withs.Table (Withs.Last).Limited_With       := (C = 'Y');
!                Withs.Table (Withs.Last).Implicit_With_From_Instantiation
!                                                            := (C = 'Z');
  
                 --  Generic case with no object file available
  
--- 2030,2036 ----
                 Withs.Table (Withs.Last).Elab_All_Desirable := False;
                 Withs.Table (Withs.Last).SAL_Interface      := False;
                 Withs.Table (Withs.Last).Limited_With       := (C = 'Y');
!                Withs.Table (Withs.Last).Implicit_With      := (C = 'Z');
  
                 --  Generic case with no object file available
  
*************** package body ALI is
*** 2088,2093 ****
--- 2100,2127 ----
           Units.Table (Units.Last).Last_With := Withs.Last;
           Units.Table (Units.Last).Last_Arg  := Args.Last;
  
+          --  Scan out task stack information for the unit if present
+ 
+          Check_Unknown_Line;
+ 
+          if C = 'T' then
+             if Ignore ('T') then
+                Skip_Line;
+ 
+             else
+                Checkc (' ');
+                Skip_Space;
+ 
+                Units.Table (Units.Last).Primary_Stack_Count := Get_Nat;
+                Skip_Space;
+                Units.Table (Units.Last).Sec_Stack_Count := Get_Nat;
+                Skip_Space;
+                Skip_Eol;
+             end if;
+ 
+             C := Getc;
+          end if;
+ 
           --  If there are linker options lines present, scan them
  
           Name_Len := 0;
diff -Nrcpad gcc-7.3.0/gcc/ada/ali.ads gcc-8.1.0/gcc/ada/ali.ads
*** gcc-7.3.0/gcc/ada/ali.ads	Fri Jan 13 10:54:43 2017
--- gcc-8.1.0/gcc/ada/ali.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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
*** 82,88 ****
     --  Indicator of whether unit can be used as main program
  
     type ALIs_Record is record
- 
        Afile : File_Name_Type;
        --  Name of ALI file
  
--- 82,87 ----
*************** package ALI is
*** 177,182 ****
--- 176,186 ----
        --  signalled by GP appearing on the P line. Not set if 'P' appears in
        --  Ignore_Lines.
  
+       No_Component_Reordering : Boolean;
+       --  Set to True if file was compiled with a configuration pragma file
+       --  containing pragma No_Component_Reordering.  Not set if 'P' appears
+       --  in Ignore_Lines.
+ 
        No_Object : Boolean;
        --  Set to True if no object file generated. Not set if 'P' appears in
        --  Ignore_Lines.
*************** package ALI is
*** 221,227 ****
        --  Last_Specific_Dispatching = First_Specific_Dispatching - 1. That
        --  is why the 'Base reference is there, it can be one less than the
        --  lower bound of the subtype. Not set if 'S' appears in Ignore_Lines.
- 
     end record;
  
     No_Main_Priority : constant Int := -1;
--- 225,230 ----
*************** package ALI is
*** 260,266 ****
     --  Version string, taken from unit record
  
     type Unit_Record is record
- 
        My_ALI : ALI_Id;
        --  Corresponding ALI entry
  
--- 263,268 ----
*************** package ALI is
*** 356,362 ****
        --  used for informational output, and also for constructing the main
        --  unit if it is being built in Ada.
  
!       Elab_Position : aliased Natural;
        --  Initialized to zero. Set non-zero when a unit is chosen and
        --  placed in the elaboration order. The value represents the
        --  ordinal position in the elaboration order.
--- 358,364 ----
        --  used for informational output, and also for constructing the main
        --  unit if it is being built in Ada.
  
!       Elab_Position : Nat;
        --  Initialized to zero. Set non-zero when a unit is chosen and
        --  placed in the elaboration order. The value represents the
        --  ordinal position in the elaboration order.
*************** package ALI is
*** 383,393 ****
        --  together as possible.
  
        Optimize_Alignment : Character;
!       --  Optimize_Alignment setting. Set to L/S/T/O for OL/OS/OT/OO present
  
        Has_Finalizer : Boolean;
        --  Indicates whether a package body or a spec has a library-level
        --  finalization routine.
     end record;
  
     package Units is new Table.Table (
--- 385,403 ----
        --  together as possible.
  
        Optimize_Alignment : Character;
!       --  Optimize_Alignment setting. Set to L/S/T/O for OL/OS/OT/OO present.
  
        Has_Finalizer : Boolean;
        --  Indicates whether a package body or a spec has a library-level
        --  finalization routine.
+ 
+       Primary_Stack_Count : Int;
+       --  Indicates the number of task objects declared in this unit that have
+       --  default sized primary stacks.
+ 
+       Sec_Stack_Count : Int;
+       --  Indicates the number of task objects declared in this unit that have
+       --  default sized secondary stacks.
     end record;
  
     package Units is new Table.Table (
*************** package ALI is
*** 492,497 ****
--- 502,511 ----
     --  Set to False by Initialize_ALI. Set to True if an ali file indicates
     --  that the file was compiled without normalize scalars.
  
+    No_Component_Reordering_Specified : Boolean := False;
+    --  Set to False by Initialize_ALI. Set to True if an ali file contains
+    --  the No_Component_Reordering flag.
+ 
     No_Object_Specified : Boolean := False;
     --  Set to False by Initialize_ALI. Set to True if an ali file contains
     --  the No_Object flag.
*************** package ALI is
*** 551,557 ****
     --  Id of first actual entry in table
  
     type With_Record is record
- 
        Uname : Unit_Name_Type;
        --  Name of Unit
  
--- 565,570 ----
*************** package ALI is
*** 570,586 ****
        Elab_All_Desirable : Boolean;
        --  Indicates presence of AD parameter
  
!       Elab_Desirable     : Boolean;
        --  Indicates presence of ED parameter
  
        SAL_Interface : Boolean := False;
        --  True if the Unit is an Interface of a Stand-Alone Library
  
!       Limited_With : Boolean := False;
!       --  True if unit is named in a limited_with_clause
  
!       Implicit_With_From_Instantiation : Boolean := False;
!       --  True if this is an implicit with from a generic instantiation
     end record;
  
     package Withs is new Table.Table (
--- 583,599 ----
        Elab_All_Desirable : Boolean;
        --  Indicates presence of AD parameter
  
!       Elab_Desirable : Boolean;
        --  Indicates presence of ED parameter
  
        SAL_Interface : Boolean := False;
        --  True if the Unit is an Interface of a Stand-Alone Library
  
!       Implicit_With : Boolean := False;
!       --  True if this is an implicit with generated by the compiler
  
!       Limited_With : Boolean := False;
!       --  True if this is a limited_with_clause
     end record;
  
     package Withs is new Table.Table (
*************** package ALI is
*** 761,767 ****
     --  successive ALI files are scanned.
  
     type Sdep_Record is record
- 
        Sfile : File_Name_Type;
        --  Name of source file
  
--- 774,779 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/alloc.ads gcc-8.1.0/gcc/ada/alloc.ads
*** gcc-7.3.0/gcc/ada/alloc.ads	Thu Oct 13 13:00:54 2016
--- gcc-8.1.0/gcc/ada/alloc.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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 Alloc is
*** 43,168 ****
  
     --  The comment shows the unit in which the table is defined
  
!    All_Interp_Initial               : constant := 1_000;   -- Sem_Type
     All_Interp_Increment             : constant := 100;
  
!    Branches_Initial                 : constant := 1_000;   -- Sem_Warn
     Branches_Increment               : constant := 100;
  
!    Conditionals_Initial             : constant := 1_000;   -- Sem_Warn
     Conditionals_Increment           : constant := 100;
  
!    Conditional_Stack_Initial        : constant := 50;      -- Sem_Warn
     Conditional_Stack_Increment      : constant := 100;
  
!    Elists_Initial                   : constant := 200;     -- Elists
     Elists_Increment                 : constant := 100;
  
!    Elmts_Initial                    : constant := 1_200;   -- Elists
     Elmts_Increment                  : constant := 100;
  
!    File_Name_Chars_Initial          : constant := 10_000;  -- Osint
     File_Name_Chars_Increment        : constant := 100;
  
!    In_Out_Warnings_Initial          : constant := 100;     -- Sem_Warn
     In_Out_Warnings_Increment        : constant := 100;
  
!    Ignored_Ghost_Units_Initial      : constant := 20;      -- Sem_Util
     Ignored_Ghost_Units_Increment    : constant := 50;
  
!    Inlined_Initial                  : constant := 100;     -- Inline
     Inlined_Increment                : constant := 100;
  
!    Inlined_Bodies_Initial           : constant := 50;      -- Inline
     Inlined_Bodies_Increment         : constant := 200;
  
!    Interp_Map_Initial               : constant := 200;     -- Sem_Type
     Interp_Map_Increment             : constant := 100;
  
!    Lines_Initial                    : constant := 500;     -- Sinput
     Lines_Increment                  : constant := 150;
  
!    Linker_Option_Lines_Initial      : constant := 5;       -- Lib
     Linker_Option_Lines_Increment    : constant := 200;
  
!    Lists_Initial                    : constant := 4_000;   -- Nlists
     Lists_Increment                  : constant := 200;
  
!    Load_Stack_Initial               : constant := 10;      -- Lib
     Load_Stack_Increment             : constant := 100;
  
!    Name_Chars_Initial               : constant := 50_000;  -- Namet
     Name_Chars_Increment             : constant := 100;
  
!    Name_Qualify_Units_Initial       : constant := 200;     -- Exp_Dbug
     Name_Qualify_Units_Increment     : constant := 300;
  
!    Names_Initial                    : constant := 6_000;   -- Namet
     Names_Increment                  : constant := 100;
  
!    Nodes_Initial                    : constant := 50_000;  -- Atree
     Nodes_Increment                  : constant := 100;
     Nodes_Release_Threshold          : constant := 100_000;
  
!    Notes_Initial                    : constant := 100;     -- Lib
     Notes_Increment                  : constant := 200;
  
!    Obsolescent_Warnings_Initial     : constant := 50;      -- Sem_Prag
     Obsolescent_Warnings_Increment   : constant := 200;
  
!    Orig_Nodes_Initial               : constant := 50_000;  -- Atree
!    Orig_Nodes_Increment             : constant := 100;
!    Orig_Nodes_Release_Threshold     : constant := 100_000;
! 
!    Pending_Instantiations_Initial   : constant := 10;      -- Inline
     Pending_Instantiations_Increment : constant := 100;
  
!    Rep_Table_Initial                : constant := 1000;    -- Repinfo
     Rep_Table_Increment              : constant := 200;
  
!    Scope_Stack_Initial              : constant := 10;      -- Sem
     Scope_Stack_Increment            : constant := 200;
  
!    SFN_Table_Initial                : constant := 10;      -- Fname
     SFN_Table_Increment              : constant := 200;
  
!    Source_File_Initial              : constant := 10;      -- Sinput
     Source_File_Increment            : constant := 200;
  
!    String_Chars_Initial             : constant := 2_500;   -- Stringt
     String_Chars_Increment           : constant := 150;
  
!    Strings_Initial                  : constant := 5_00;    -- Stringt
     Strings_Increment                : constant := 150;
  
!    Successors_Initial               : constant := 2_00;    -- Inline
     Successors_Increment             : constant := 100;
  
!    Udigits_Initial                  : constant := 10_000;  -- Uintp
     Udigits_Increment                : constant := 100;
  
!    Uints_Initial                    : constant := 5_000;   -- Uintp
     Uints_Increment                  : constant := 100;
  
!    Units_Initial                    : constant := 30;      -- Lib
     Units_Increment                  : constant := 100;
  
!    Ureals_Initial                   : constant := 200;     -- Urealp
     Ureals_Increment                 : constant := 100;
  
!    Unreferenced_Entities_Initial    : constant := 1_000;   -- Sem_Warn
     Unreferenced_Entities_Increment  : constant := 100;
  
!    Warnings_Off_Pragmas_Initial     : constant := 500;     -- Sem_Warn
     Warnings_Off_Pragmas_Increment   : constant := 100;
  
!    With_List_Initial                : constant := 10;      -- Features
     With_List_Increment              : constant := 300;
  
!    Xrefs_Initial                    : constant := 5_000;   -- Cross-refs
     Xrefs_Increment                  : constant := 300;
  
!    Drefs_Initial                    : constant := 5;       -- Dereferences
     Drefs_Increment                  : constant := 1_000;
  
  end Alloc;
--- 43,164 ----
  
     --  The comment shows the unit in which the table is defined
  
!    All_Interp_Initial               : constant := 1_000;      -- Sem_Type
     All_Interp_Increment             : constant := 100;
  
!    Branches_Initial                 : constant := 1_000;      -- Sem_Warn
     Branches_Increment               : constant := 100;
  
!    Conditionals_Initial             : constant := 1_000;      -- Sem_Warn
     Conditionals_Increment           : constant := 100;
  
!    Conditional_Stack_Initial        : constant := 50;         -- Sem_Warn
     Conditional_Stack_Increment      : constant := 100;
  
!    Elists_Initial                   : constant := 200;        -- Elists
     Elists_Increment                 : constant := 100;
  
!    Elmts_Initial                    : constant := 1_200;      -- Elists
     Elmts_Increment                  : constant := 100;
  
!    File_Name_Chars_Initial          : constant := 10_000;     -- Osint
     File_Name_Chars_Increment        : constant := 100;
  
!    In_Out_Warnings_Initial          : constant := 100;        -- Sem_Warn
     In_Out_Warnings_Increment        : constant := 100;
  
!    Ignored_Ghost_Units_Initial      : constant := 20;         -- Sem_Util
     Ignored_Ghost_Units_Increment    : constant := 50;
  
!    Inlined_Initial                  : constant := 100;        -- Inline
     Inlined_Increment                : constant := 100;
  
!    Inlined_Bodies_Initial           : constant := 50;         -- Inline
     Inlined_Bodies_Increment         : constant := 200;
  
!    Interp_Map_Initial               : constant := 200;        -- Sem_Type
     Interp_Map_Increment             : constant := 100;
  
!    Lines_Initial                    : constant := 500;        -- Sinput
     Lines_Increment                  : constant := 150;
  
!    Linker_Option_Lines_Initial      : constant := 5;          -- Lib
     Linker_Option_Lines_Increment    : constant := 200;
  
!    Lists_Initial                    : constant := 4_000;      -- Nlists
     Lists_Increment                  : constant := 200;
  
!    Load_Stack_Initial               : constant := 10;         -- Lib
     Load_Stack_Increment             : constant := 100;
  
!    Name_Chars_Initial               : constant := 50_000;     -- Namet
     Name_Chars_Increment             : constant := 100;
  
!    Name_Qualify_Units_Initial       : constant := 200;        -- Exp_Dbug
     Name_Qualify_Units_Increment     : constant := 300;
  
!    Names_Initial                    : constant := 6_000;      -- Namet
     Names_Increment                  : constant := 100;
  
!    Nodes_Initial                    : constant := 50_000;     -- Atree
     Nodes_Increment                  : constant := 100;
     Nodes_Release_Threshold          : constant := 100_000;
  
!    Notes_Initial                    : constant := 100;        -- Lib
     Notes_Increment                  : constant := 200;
  
!    Obsolescent_Warnings_Initial     : constant := 50;         -- Sem_Prag
     Obsolescent_Warnings_Increment   : constant := 200;
  
!    Pending_Instantiations_Initial   : constant := 10;         -- Inline
     Pending_Instantiations_Increment : constant := 100;
  
!    Rep_Table_Initial                : constant := 1000;       -- Repinfo
     Rep_Table_Increment              : constant := 200;
  
!    Scope_Stack_Initial              : constant := 10;         -- Sem
     Scope_Stack_Increment            : constant := 200;
  
!    SFN_Table_Initial                : constant := 10;         -- Fname
     SFN_Table_Increment              : constant := 200;
  
!    Source_File_Initial              : constant := 10;         -- Sinput
     Source_File_Increment            : constant := 200;
  
!    String_Chars_Initial             : constant := 2_500;      -- Stringt
     String_Chars_Increment           : constant := 150;
  
!    Strings_Initial                  : constant := 5_00;       -- Stringt
     Strings_Increment                : constant := 150;
  
!    Successors_Initial               : constant := 2_00;       -- Inline
     Successors_Increment             : constant := 100;
  
!    Udigits_Initial                  : constant := 10_000;     -- Uintp
     Udigits_Increment                : constant := 100;
  
!    Uints_Initial                    : constant := 5_000;      -- Uintp
     Uints_Increment                  : constant := 100;
  
!    Units_Initial                    : constant := 30;         -- Lib
     Units_Increment                  : constant := 100;
  
!    Ureals_Initial                   : constant := 200;        -- Urealp
     Ureals_Increment                 : constant := 100;
  
!    Unreferenced_Entities_Initial    : constant := 1_000;      -- Sem_Warn
     Unreferenced_Entities_Increment  : constant := 100;
  
!    Warnings_Off_Pragmas_Initial     : constant := 500;        -- Sem_Warn
     Warnings_Off_Pragmas_Increment   : constant := 100;
  
!    With_List_Initial                : constant := 10;         -- Features
     With_List_Increment              : constant := 300;
  
!    Xrefs_Initial                    : constant := 5_000;      -- Cross-refs
     Xrefs_Increment                  : constant := 300;
  
!    Drefs_Initial                    : constant := 5;          -- Dereferences
     Drefs_Increment                  : constant := 1_000;
  
  end Alloc;
diff -Nrcpad gcc-7.3.0/gcc/ada/argv.c gcc-8.1.0/gcc/ada/argv.c
*** gcc-7.3.0/gcc/ada/argv.c	Fri Dec 21 22:13:34 2012
--- gcc-8.1.0/gcc/ada/argv.c	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *         Copyright (C) 1992-2012, Free Software Foundation, Inc.          *
   *                                                                          *
   * GNAT is free software;  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-2018, Free Software Foundation, Inc.          *
   *                                                                          *
   * GNAT is 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
*** 92,98 ****
  __gnat_fill_arg (char *a, int i)
  {
    if (gnat_argv != NULL)
!     strncpy (a, gnat_argv[i], strlen(gnat_argv[i]));
  }
  
  int
--- 92,98 ----
  __gnat_fill_arg (char *a, int i)
  {
    if (gnat_argv != NULL)
!     memcpy (a, gnat_argv[i], strlen (gnat_argv[i]));
  }
  
  int
*************** void
*** 118,124 ****
  __gnat_fill_env (char *a, int i)
  {
    if (gnat_envp != NULL)
!     strncpy (a, gnat_envp[i], strlen (gnat_envp[i]));
  }
  
  #ifdef __cplusplus
--- 118,124 ----
  __gnat_fill_env (char *a, int i)
  {
    if (gnat_envp != NULL)
!     memcpy (a, gnat_envp[i], strlen (gnat_envp[i]));
  }
  
  #ifdef __cplusplus
diff -Nrcpad gcc-7.3.0/gcc/ada/aspects.adb gcc-8.1.0/gcc/ada/aspects.adb
*** gcc-7.3.0/gcc/ada/aspects.adb	Thu Jan 12 13:49:46 2017
--- gcc-8.1.0/gcc/ada/aspects.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or 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-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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 Nlists;   use Nlists;
*** 35,41 ****
  with Sinfo;    use Sinfo;
  with Tree_IO;  use Tree_IO;
  
! with GNAT.HTable;           use GNAT.HTable;
  
  package body Aspects is
  
--- 35,41 ----
  with Sinfo;    use Sinfo;
  with Tree_IO;  use Tree_IO;
  
! with GNAT.HTable;
  
  package body Aspects is
  
*************** package body Aspects is
*** 570,575 ****
--- 570,576 ----
      Aspect_Machine_Radix                => Aspect_Machine_Radix,
      Aspect_Max_Queue_Length             => Aspect_Max_Queue_Length,
      Aspect_No_Elaboration_Code_All      => Aspect_No_Elaboration_Code_All,
+     Aspect_No_Inline                    => Aspect_No_Inline,
      Aspect_No_Return                    => Aspect_No_Return,
      Aspect_No_Tagged_Streams            => Aspect_No_Tagged_Streams,
      Aspect_Obsolescent                  => Aspect_Obsolescent,
diff -Nrcpad gcc-7.3.0/gcc/ada/aspects.ads gcc-8.1.0/gcc/ada/aspects.ads
*** gcc-7.3.0/gcc/ada/aspects.ads	Thu Jan 12 13:49:46 2017
--- gcc-8.1.0/gcc/ada/aspects.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2010-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or 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-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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
*** 189,194 ****
--- 189,195 ----
        Aspect_Inline_Always,                 -- GNAT
        Aspect_Interrupt_Handler,
        Aspect_Lock_Free,                     -- GNAT
+       Aspect_No_Inline,                     -- GNAT
        Aspect_No_Return,
        Aspect_No_Tagged_Streams,             -- GNAT
        Aspect_Pack,
*************** package Aspects is
*** 468,473 ****
--- 469,475 ----
        Aspect_Machine_Radix                => Name_Machine_Radix,
        Aspect_Max_Queue_Length             => Name_Max_Queue_Length,
        Aspect_No_Elaboration_Code_All      => Name_No_Elaboration_Code_All,
+       Aspect_No_Inline                    => Name_No_Inline,
        Aspect_No_Return                    => Name_No_Return,
        Aspect_No_Tagged_Streams            => Name_No_Tagged_Streams,
        Aspect_Object_Size                  => Name_Object_Size,
*************** package Aspects is
*** 677,682 ****
--- 679,685 ----
        Aspect_Link_Name                    => Always_Delay,
        Aspect_Linker_Section               => Always_Delay,
        Aspect_Lock_Free                    => Always_Delay,
+       Aspect_No_Inline                    => Always_Delay,
        Aspect_No_Return                    => Always_Delay,
        Aspect_Output                       => Always_Delay,
        Aspect_Persistent_BSS               => Always_Delay,
diff -Nrcpad gcc-7.3.0/gcc/ada/atree.adb gcc-8.1.0/gcc/ada/atree.adb
*** gcc-7.3.0/gcc/ada/atree.adb	Fri Jan 20 10:38:41 2017
--- gcc-8.1.0/gcc/ada/atree.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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 Atree is
*** 56,61 ****
--- 56,64 ----
     Reporting_Proc : Report_Proc := null;
     --  Record argument to last call to Set_Reporting_Proc
  
+    Rewriting_Proc : Rewrite_Proc := null;
+    --  This soft link captures the procedure invoked during a node rewrite
+ 
     ---------------
     -- Debugging --
     ---------------
*************** package body Atree is
*** 73,83 ****
     --     ww := 12345
     --  and set a breakpoint on New_Node_Breakpoint (nickname "nn"). Continue.
  
!    --  Either way, gnat1 will stop when node 12345 is created
! 
!    --  The second method is much faster
  
!    --  Similarly, rr and rrd allow breaking on rewriting of a given node
  
     ww : Node_Id'Base := Node_Id'First - 1;
     pragma Export (Ada, ww); --  trick the optimizer
--- 76,87 ----
     --     ww := 12345
     --  and set a breakpoint on New_Node_Breakpoint (nickname "nn"). Continue.
  
!    --  Either way, gnat1 will stop when node 12345 is created, or certain other
!    --  interesting operations are performed, such as Rewrite. To see exactly
!    --  which operations, search for "pragma Debug" below.
  
!    --  The second method is much faster if the amount of Ada code being
!    --  compiled is large.
  
     ww : Node_Id'Base := Node_Id'First - 1;
     pragma Export (Ada, ww); --  trick the optimizer
*************** package body Atree is
*** 103,126 ****
     --  If Node = Watch_Node, this prints out the new node and calls
     --  New_Node_Breakpoint. Otherwise, does nothing.
  
-    procedure rr;
-    pragma Export (Ada, rr);
-    procedure Rewrite_Breakpoint renames rr;
-    --  This doesn't do anything interesting; it's just for setting breakpoint
-    --  on as explained above.
- 
-    procedure rrd (Old_Node, New_Node : Node_Id);
-    pragma Export (Ada, rrd);
-    procedure Rewrite_Debugging_Output
-      (Old_Node, New_Node : Node_Id) renames rrd;
-    --  For debugging. If debugging is turned on, Rewrite calls this. If debug
-    --  flag N is turned on, this prints out the new node.
-    --
-    --  If Old_Node = Watch_Node, this prints out the old and new nodes and
-    --  calls Rewrite_Breakpoint. Otherwise, does nothing.
- 
     procedure Node_Debug_Output (Op : String; N : Node_Id);
!    --  Common code for nnd and rrd, writes Op followed by information about N
  
     procedure Print_Statistics;
     pragma Export (Ada, Print_Statistics);
--- 107,114 ----
     --  If Node = Watch_Node, this prints out the new node and calls
     --  New_Node_Breakpoint. Otherwise, does nothing.
  
     procedure Node_Debug_Output (Op : String; N : Node_Id);
!    --  Called by nnd; writes Op followed by information about N
  
     procedure Print_Statistics;
     pragma Export (Ada, Print_Statistics);
*************** package body Atree is
*** 519,527 ****
        Table_Component_Type => Node_Id,
        Table_Index_Type     => Node_Id'Base,
        Table_Low_Bound      => First_Node_Id,
!       Table_Initial        => Alloc.Orig_Nodes_Initial,
!       Table_Increment      => Alloc.Orig_Nodes_Increment,
!       Release_Threshold    => Alloc.Orig_Nodes_Release_Threshold,
        Table_Name           => "Orig_Nodes");
  
     --------------------------
--- 507,515 ----
        Table_Component_Type => Node_Id,
        Table_Index_Type     => Node_Id'Base,
        Table_Low_Bound      => First_Node_Id,
!       Table_Initial        => Alloc.Nodes_Initial,
!       Table_Increment      => Alloc.Nodes_Increment,
!       Release_Threshold    => Alloc.Nodes_Release_Threshold,
        Table_Name           => "Orig_Nodes");
  
     --------------------------
*************** package body Atree is
*** 751,756 ****
--- 739,747 ----
        Save_Link    : constant Union_Id := Nodes.Table (Destination).Link;
  
     begin
+       pragma Debug (New_Node_Debugging_Output (Source));
+       pragma Debug (New_Node_Debugging_Output (Destination));
+ 
        Nodes.Table (Destination)         := Nodes.Table (Source);
        Nodes.Table (Destination).In_List := Save_In_List;
        Nodes.Table (Destination).Link    := Save_Link;
*************** package body Atree is
*** 767,782 ****
        --  Deal with copying extension nodes if present. No need to copy flags
        --  table entries, since they are always zero for extending components.
  
!       if Has_Extension (Source) then
!          pragma Assert (Has_Extension (Destination));
  
           for J in 1 .. Num_Extension_Nodes loop
              Nodes.Table (Destination + J) := Nodes.Table (Source + J);
           end loop;
- 
-       else
-          pragma Assert (not Has_Extension (Source));
-          null;
        end if;
     end Copy_Node;
  
--- 758,769 ----
        --  Deal with copying extension nodes if present. No need to copy flags
        --  table entries, since they are always zero for extending components.
  
!       pragma Assert (Has_Extension (Source) = Has_Extension (Destination));
  
+       if Has_Extension (Source) then
           for J in 1 .. Num_Extension_Nodes loop
              Nodes.Table (Destination + J) := Nodes.Table (Source + J);
           end loop;
        end if;
     end Copy_Node;
  
*************** package body Atree is
*** 1323,1338 ****
          Ekind_In (Ekind (E), V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11);
     end Ekind_In;
  
-    ------------------------
-    -- Set_Reporting_Proc --
-    ------------------------
- 
-    procedure Set_Reporting_Proc (P : Report_Proc) is
-    begin
-       pragma Assert (Reporting_Proc = null);
-       Reporting_Proc := P;
-    end Set_Reporting_Proc;
- 
     ------------------
     -- Error_Posted --
     ------------------
--- 1310,1315 ----
*************** package body Atree is
*** 1352,1357 ****
--- 1329,1337 ----
        Temp_Flg : Flags_Byte;
  
     begin
+       pragma Debug (New_Node_Debugging_Output (E1));
+       pragma Debug (New_Node_Debugging_Output (E2));
+ 
        pragma Assert (True
          and then Has_Extension (E1)
          and then Has_Extension (E2)
*************** package body Atree is
*** 1424,1431 ****
--- 1404,1413 ----
  
     begin
        pragma Assert (not (Has_Extension (Node)));
+ 
        Result := Allocate_Initialize_Node (Node, With_Extension => True);
        pragma Debug (Debug_Extend_Node);
+ 
        return Result;
     end Extend_Node;
  
*************** package body Atree is
*** 1583,1594 ****
  
     procedure Lock is
     begin
        Nodes.Locked := True;
        Flags.Locked := True;
        Orig_Nodes.Locked := True;
-       Nodes.Release;
-       Flags.Release;
-       Orig_Nodes.Release;
     end Lock;
  
     ----------------
--- 1565,1580 ----
  
     procedure Lock is
     begin
+       --  We used to Release the tables, as in the comments below, but that is
+       --  a waste of time. We're only wasting virtual memory here, and the
+       --  release calls copy large amounts of data.
+ 
+       --  Nodes.Release;
        Nodes.Locked := True;
+       --  Flags.Release;
        Flags.Locked := True;
+       --  Orig_Nodes.Release;
        Orig_Nodes.Locked := True;
     end Lock;
  
     ----------------
*************** package body Atree is
*** 1695,1702 ****
           Current_Error_Node := Ent;
        end if;
  
!       Nodes.Table (Ent).Nkind  := New_Node_Kind;
!       Nodes.Table (Ent).Sloc   := New_Sloc;
        pragma Debug (New_Node_Debugging_Output (Ent));
  
        --  Mark the new entity as Ghost depending on the current Ghost region
--- 1681,1688 ----
           Current_Error_Node := Ent;
        end if;
  
!       Nodes.Table (Ent).Nkind := New_Node_Kind;
!       Nodes.Table (Ent).Sloc  := New_Sloc;
        pragma Debug (New_Node_Debugging_Output (Ent));
  
        --  Mark the new entity as Ghost depending on the current Ghost region
*************** package body Atree is
*** 1718,1723 ****
--- 1704,1710 ----
  
     begin
        pragma Assert (New_Node_Kind not in N_Entity);
+ 
        Nod := Allocate_Initialize_Node (Empty, With_Extension => False);
        Nodes.Table (Nod).Nkind := New_Node_Kind;
        Nodes.Table (Nod).Sloc  := New_Sloc;
*************** package body Atree is
*** 1746,1752 ****
     begin
        Write_Str ("Watched node ");
        Write_Int (Int (Watch_Node));
-       Write_Str (" created");
        Write_Eol;
     end nn;
  
--- 1733,1738 ----
*************** package body Atree is
*** 1759,1765 ****
  
     begin
        if Debug_Flag_N or else Node_Is_Watched then
!          Node_Debug_Output ("Allocate", N);
  
           if Node_Is_Watched then
              New_Node_Breakpoint;
--- 1745,1751 ----
  
     begin
        if Debug_Flag_N or else Node_Is_Watched then
!          Node_Debug_Output ("Node", N);
  
           if Node_Is_Watched then
              New_Node_Breakpoint;
*************** package body Atree is
*** 1880,1885 ****
--- 1866,1907 ----
        return Nkind_In (Nkind (N), V1, V2, V3, V4, V5, V6, V7, V8, V9);
     end Nkind_In;
  
+    function Nkind_In
+      (N   : Node_Id;
+       V1  : Node_Kind;
+       V2  : Node_Kind;
+       V3  : Node_Kind;
+       V4  : Node_Kind;
+       V5  : Node_Kind;
+       V6  : Node_Kind;
+       V7  : Node_Kind;
+       V8  : Node_Kind;
+       V9  : Node_Kind;
+       V10 : Node_Kind) return Boolean
+    is
+    begin
+       return Nkind_In (Nkind (N), V1, V2, V3, V4, V5, V6, V7, V8, V9, V10);
+    end Nkind_In;
+ 
+    function Nkind_In
+      (N   : Node_Id;
+       V1  : Node_Kind;
+       V2  : Node_Kind;
+       V3  : Node_Kind;
+       V4  : Node_Kind;
+       V5  : Node_Kind;
+       V6  : Node_Kind;
+       V7  : Node_Kind;
+       V8  : Node_Kind;
+       V9  : Node_Kind;
+       V10 : Node_Kind;
+       V11 : Node_Kind) return Boolean
+    is
+    begin
+       return Nkind_In (Nkind (N), V1, V2, V3, V4, V5, V6, V7, V8, V9, V10,
+                                   V11);
+    end Nkind_In;
+ 
     --------
     -- No --
     --------
*************** package body Atree is
*** 2164,2169 ****
--- 2186,2194 ----
            and not Has_Extension (New_Node)
            and not Nodes.Table (New_Node).In_List);
  
+       pragma Debug (New_Node_Debugging_Output (Old_Node));
+       pragma Debug (New_Node_Debugging_Output (New_Node));
+ 
        --  Do copy, preserving link and in list status and required flags
  
        Copy_Node (Source => New_Node, Destination => Old_Node);
*************** package body Atree is
*** 2214,2220 ****
          (not Has_Extension (Old_Node)
            and not Has_Extension (New_Node)
            and not Nodes.Table (New_Node).In_List);
!       pragma Debug (Rewrite_Debugging_Output (Old_Node, New_Node));
  
        if Nkind (Old_Node) in N_Subexpr then
           Old_Paren_Count     := Paren_Count (Old_Node);
--- 2239,2247 ----
          (not Has_Extension (Old_Node)
            and not Has_Extension (New_Node)
            and not Nodes.Table (New_Node).In_List);
! 
!       pragma Debug (New_Node_Debugging_Output (Old_Node));
!       pragma Debug (New_Node_Debugging_Output (New_Node));
  
        if Nkind (Old_Node) in N_Subexpr then
           Old_Paren_Count     := Paren_Count (Old_Node);
*************** package body Atree is
*** 2262,2298 ****
        if Reporting_Proc /= null then
           Reporting_Proc.all (Target => Old_Node, Source => New_Node);
        end if;
-    end Rewrite;
- 
-    -------------------------
-    -- Rewrite_Breakpoint --
-    -------------------------
- 
-    procedure rr is
-    begin
-       Write_Str ("Watched node ");
-       Write_Int (Int (Watch_Node));
-       Write_Str (" rewritten");
-       Write_Eol;
-    end rr;
- 
-    ------------------------------
-    -- Rewrite_Debugging_Output --
-    ------------------------------
- 
-    procedure rrd (Old_Node, New_Node : Node_Id) is
-       Node_Is_Watched : constant Boolean := Old_Node = Watch_Node;
  
!    begin
!       if Debug_Flag_N or else Node_Is_Watched then
!          Node_Debug_Output ("Rewrite", Old_Node);
!          Node_Debug_Output ("into",    New_Node);
  
!          if Node_Is_Watched then
!             Rewrite_Breakpoint;
!          end if;
        end if;
!    end rrd;
  
     ------------------
     -- Set_Analyzed --
--- 2289,2301 ----
        if Reporting_Proc /= null then
           Reporting_Proc.all (Target => Old_Node, Source => New_Node);
        end if;
  
!       --  Invoke the rewriting procedure (if available)
  
!       if Rewriting_Proc /= null then
!          Rewriting_Proc.all (Target => Old_Node, Source => New_Node);
        end if;
!    end Rewrite;
  
     ------------------
     -- Set_Analyzed --
*************** package body Atree is
*** 2429,2434 ****
--- 2432,2447 ----
        Nodes.Table (N).Link := Union_Id (Val);
     end Set_Parent;
  
+    ------------------------
+    -- Set_Reporting_Proc --
+    ------------------------
+ 
+    procedure Set_Reporting_Proc (Proc : Report_Proc) is
+    begin
+       pragma Assert (Reporting_Proc = null);
+       Reporting_Proc := Proc;
+    end Set_Reporting_Proc;
+ 
     --------------
     -- Set_Sloc --
     --------------
*************** package body Atree is
*** 2439,2444 ****
--- 2452,2467 ----
        Nodes.Table (N).Sloc := Val;
     end Set_Sloc;
  
+    ------------------------
+    -- Set_Rewriting_Proc --
+    ------------------------
+ 
+    procedure Set_Rewriting_Proc (Proc : Rewrite_Proc) is
+    begin
+       pragma Assert (Rewriting_Proc = null);
+       Rewriting_Proc := Proc;
+    end Set_Rewriting_Proc;
+ 
     ----------
     -- Sloc --
     ----------
diff -Nrcpad gcc-7.3.0/gcc/ada/atree.ads gcc-8.1.0/gcc/ada/atree.ads
*** gcc-7.3.0/gcc/ada/atree.ads	Fri Jan 20 10:38:41 2017
--- gcc-8.1.0/gcc/ada/atree.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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 Atree is
*** 320,328 ****
     --  compilation. Initialized for -gnatVa use, see comment above. This
     --  count includes the count of style and info messages.
  
!    Info_Messages : Nat := 0;
!    --  Number of info messages generated. Info messages are neved treated as
!    --  errors (whether from use of the pragma, or the compiler switch -gnatwe).
  
     Check_Messages : Nat := 0;
     --  Number of check messages generated. Check messages are neither warnings
--- 320,334 ----
     --  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
!    --  treated as errors (whether from use of the pragma, or the compiler
!    --  switch -gnatwe).
! 
!    Report_Info_Messages : Nat := 0;
!    --  Number of info messages generated as reports. Info messages are never
!    --  treated as errors (whether from use of the pragma, or the compiler
!    --  switch -gnatwe). Used under Spark_Mode to report proved checks.
  
     Check_Messages : Nat := 0;
     --  Number of check messages generated. Check messages are neither warnings
*************** package Atree is
*** 566,575 ****
  
     type Report_Proc is access procedure (Target : Node_Id; Source : Node_Id);
  
!    procedure Set_Reporting_Proc (P : Report_Proc);
     --  Register a procedure that is invoked when a node is allocated, replaced
     --  or rewritten.
  
     type Traverse_Result is (Abandon, OK, OK_Orig, Skip);
     --  This is the type of the result returned by the Process function passed
     --  to Traverse_Func and Traverse_Proc. See below for details.
--- 572,586 ----
  
     type Report_Proc is access procedure (Target : Node_Id; Source : Node_Id);
  
!    procedure Set_Reporting_Proc (Proc : Report_Proc);
     --  Register a procedure that is invoked when a node is allocated, replaced
     --  or rewritten.
  
+    type Rewrite_Proc is access procedure (Target : Node_Id; Source : Node_Id);
+ 
+    procedure Set_Rewriting_Proc (Proc : Rewrite_Proc);
+    --  Register a procedure that is invoked when a node is rewritten
+ 
     type Traverse_Result is (Abandon, OK, OK_Orig, Skip);
     --  This is the type of the result returned by the Process function passed
     --  to Traverse_Func and Traverse_Proc. See below for details.
*************** package Atree is
*** 735,740 ****
--- 746,778 ----
        V8 : Node_Kind;
        V9 : Node_Kind) return Boolean;
  
+    function Nkind_In
+      (N   : Node_Id;
+       V1  : Node_Kind;
+       V2  : Node_Kind;
+       V3  : Node_Kind;
+       V4  : Node_Kind;
+       V5  : Node_Kind;
+       V6  : Node_Kind;
+       V7  : Node_Kind;
+       V8  : Node_Kind;
+       V9  : Node_Kind;
+       V10 : Node_Kind) return Boolean;
+ 
+    function Nkind_In
+      (N   : Node_Id;
+       V1  : Node_Kind;
+       V2  : Node_Kind;
+       V3  : Node_Kind;
+       V4  : Node_Kind;
+       V5  : Node_Kind;
+       V6  : Node_Kind;
+       V7  : Node_Kind;
+       V8  : Node_Kind;
+       V9  : Node_Kind;
+       V10 : Node_Kind;
+       V11 : Node_Kind) return Boolean;
+ 
     pragma Inline (Nkind_In);
     --  Inline all above functions
  
*************** package Atree is
*** 3931,3937 ****
        --  The nodes of the tree are stored in a table (i.e. an array). In the
        --  case of extended nodes six consecutive components in the array are
        --  used. There are thus two formats for array components. One is used
!       --  for non-extended nodes, and for the first component of extended
        --  nodes. The other is used for the extension parts (second, third,
        --  fourth, fifth, and sixth components) of an extended node. A variant
        --  record structure is used to distinguish the two formats.
--- 3969,3975 ----
        --  The nodes of the tree are stored in a table (i.e. an array). In the
        --  case of extended nodes six consecutive components in the array are
        --  used. There are thus two formats for array components. One is used
!       --  for nonextended nodes, and for the first component of extended
        --  nodes. The other is used for the extension parts (second, third,
        --  fourth, fifth, and sixth components) of an extended node. A variant
        --  record structure is used to distinguish the two formats.
*************** package Atree is
*** 4021,4027 ****
           --    Pflag2            used as Flag63,Flag64,Flag151,Flag238,Flag309
  
           Nkind : Node_Kind;
!          --  For a non-extended node, or the initial section of an extended
           --  node, this field holds the Node_Kind value. For an extended node,
           --  The Nkind field is used as follows:
           --
--- 4059,4065 ----
           --    Pflag2            used as Flag63,Flag64,Flag151,Flag238,Flag309
  
           Nkind : Node_Kind;
!          --  For a nonextended node, or the initial section of an extended
           --  node, this field holds the Node_Kind value. For an extended node,
           --  The Nkind field is used as follows:
           --
*************** package Atree is
*** 4032,4042 ****
           --     Sixth entry:   holds 8 additional flags (Flag310-317)
           --     Seventh entry: currently unused
  
!          --  Now finally (on an 32-bit boundary) comes the variant part
  
           case Is_Extension is
  
!             --  Non-extended node, or first component of extended node
  
              when False =>
  
--- 4070,4080 ----
           --     Sixth entry:   holds 8 additional flags (Flag310-317)
           --     Seventh entry: currently unused
  
!          --  Now finally (on a 32-bit boundary) comes the variant part
  
           case Is_Extension is
  
!             --  Nonextended node, or first component of extended node
  
              when False =>
  
*************** package Atree is
*** 4070,4076 ****
                 Field10 : Union_Id;
                 Field11 : Union_Id;
                 Field12 : Union_Id;
!                --  Seven additional general fields available only for entities
                 --  See package Einfo for details of their use (which depends
                 --  on the value in the Ekind field).
  
--- 4108,4114 ----
                 Field10 : Union_Id;
                 Field11 : Union_Id;
                 Field12 : Union_Id;
!                --  Seven additional general fields available only for entities.
                 --  See package Einfo for details of their use (which depends
                 --  on the value in the Ekind field).
  
*************** package Atree is
*** 4225,4249 ****
        --  for extending components are completely unused.
  
        type Flags_Byte is record
!          Flag0  : Boolean;
           --  Note: we don't use Flag0 at the moment. To put Flag0 into use
           --  requires some awkward work in Treeprs (treeprs.adt), so for the
           --  moment we don't use it.
  
!          Flag1  : Boolean;
!          Flag2  : Boolean;
!          Flag3  : Boolean;
           --  These flags are used in the usual manner in Sinfo and Einfo
  
!          Is_Ignored_Ghost_Node : Boolean;
!          --  Flag denoting whether the node is subject to pragma Ghost with
!          --  policy Ignore. The name of the flag should be Flag4, however this
!          --  requires changing the names of all remaining 300+ flags.
  
           Check_Actuals : Boolean;
           --  Flag set to indicate that the marked node is subject to the check
!          --  for writable actuals. See xxx for more details. Again it would be
!          --  more uniform to use some Flagx here, but that would be disruptive.
  
           Spare2 : Boolean;
           Spare3 : Boolean;
--- 4263,4288 ----
        --  for extending components are completely unused.
  
        type Flags_Byte is record
!          Flag0 : Boolean;
           --  Note: we don't use Flag0 at the moment. To put Flag0 into use
           --  requires some awkward work in Treeprs (treeprs.adt), so for the
           --  moment we don't use it.
  
!          Flag1 : Boolean;
!          Flag2 : Boolean;
!          Flag3 : Boolean;
           --  These flags are used in the usual manner in Sinfo and Einfo
  
!          --  The flags listed below use explicit names because following the
!          --  FlagXXX convention would mean reshuffling of over 300+ flags.
  
           Check_Actuals : Boolean;
           --  Flag set to indicate that the marked node is subject to the check
!          --  for writable actuals.
! 
!          Is_Ignored_Ghost_Node : Boolean;
!          --  Flag denoting whether the node is subject to pragma Ghost with
!          --  policy Ignore.
  
           Spare2 : Boolean;
           Spare3 : Boolean;
diff -Nrcpad gcc-7.3.0/gcc/ada/atree.h gcc-8.1.0/gcc/ada/atree.h
*** gcc-7.3.0/gcc/ada/atree.h	Mon Jun 20 12:22:09 2016
--- gcc-8.1.0/gcc/ada/atree.h	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 1992-2016, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  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-2018, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is 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 struct Node *Nodes_Ptr;
*** 359,364 ****
--- 359,367 ----
  #define Parent atree__parent
  extern Node_Id Parent (Node_Id);
  
+ #define Original_Node atree__original_node
+ extern Node_Id Original_Node (Node_Id);
+ 
  /* The auxiliary flags array which is allocated in parallel to Nodes */
  
  struct Flags
*************** extern Node_Id Current_Error_Node;
*** 866,872 ****
  #define Flag287(N)     (Nodes_Ptr[(N) - First_Node_Id + 5].U.K.in_list)
  #define Flag288(N)     (Nodes_Ptr[(N) - First_Node_Id + 5].U.K.has_aspects)
  #define Flag289(N)     (Nodes_Ptr[(N) - First_Node_Id + 5].U.K.rewrite_ins)
! #define Flag290(N)     (Nodes_Ptr[(N) - First_Node_Id + 5].U.K.analyzed
  #define Flag291(N)     (Nodes_Ptr[(N) - First_Node_Id + 5].U.K.c_f_s)
  #define Flag292(N)     (Nodes_Ptr[(N) - First_Node_Id + 5].U.K.error_posted)
  #define Flag293(N)     (Nodes_Ptr[(N) - First_Node_Id + 5].U.K.flag4)
--- 869,875 ----
  #define Flag287(N)     (Nodes_Ptr[(N) - First_Node_Id + 5].U.K.in_list)
  #define Flag288(N)     (Nodes_Ptr[(N) - First_Node_Id + 5].U.K.has_aspects)
  #define Flag289(N)     (Nodes_Ptr[(N) - First_Node_Id + 5].U.K.rewrite_ins)
! #define Flag290(N)     (Nodes_Ptr[(N) - First_Node_Id + 5].U.K.analyzed)
  #define Flag291(N)     (Nodes_Ptr[(N) - First_Node_Id + 5].U.K.c_f_s)
  #define Flag292(N)     (Nodes_Ptr[(N) - First_Node_Id + 5].U.K.error_posted)
  #define Flag293(N)     (Nodes_Ptr[(N) - First_Node_Id + 5].U.K.flag4)
diff -Nrcpad gcc-7.3.0/gcc/ada/aux-io.c gcc-8.1.0/gcc/ada/aux-io.c
*** gcc-7.3.0/gcc/ada/aux-io.c	Thu Sep  1 10:59:58 2011
--- gcc-8.1.0/gcc/ada/aux-io.c	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *           Copyright (C) 1992-2011, Free Software Foundation, Inc.        *
   *                                                                          *
   * GNAT is free software;  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-2018, Free Software Foundation, Inc.        *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-7.3.0/gcc/ada/back_end.adb gcc-8.1.0/gcc/ada/back_end.adb
*** gcc-7.3.0/gcc/ada/back_end.adb	Thu Nov 12 11:59:18 2015
--- gcc-8.1.0/gcc/ada/back_end.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/back_end.ads gcc-8.1.0/gcc/ada/back_end.ads
*** gcc-7.3.0/gcc/ada/back_end.ads	Fri Oct 16 12:25:58 2015
--- gcc-8.1.0/gcc/ada/back_end.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/bcheck.adb gcc-8.1.0/gcc/ada/bcheck.adb
*** gcc-7.3.0/gcc/ada/bcheck.adb	Thu Jan 19 11:46:14 2017
--- gcc-8.1.0/gcc/ada/bcheck.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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
*** 49,54 ****
--- 49,55 ----
     procedure Check_Consistent_Dynamic_Elaboration_Checking;
     procedure Check_Consistent_Interrupt_States;
     procedure Check_Consistent_Locking_Policy;
+    procedure Check_Consistent_No_Component_Reordering;
     procedure Check_Consistent_Normalize_Scalars;
     procedure Check_Consistent_Optimize_Alignment;
     procedure Check_Consistent_Partition_Elaboration_Policy;
*************** package body Bcheck is
*** 80,85 ****
--- 81,90 ----
           Check_Consistent_Locking_Policy;
        end if;
  
+       if No_Component_Reordering_Specified then
+          Check_Consistent_No_Component_Reordering;
+       end if;
+ 
        if Partition_Elaboration_Policy_Specified /= ' ' then
           Check_Consistent_Partition_Elaboration_Policy;
        end if;
*************** package body Bcheck is
*** 643,648 ****
--- 648,716 ----
        end loop Find_Policy;
     end Check_Consistent_Locking_Policy;
  
+    ----------------------------------------------
+    -- Check_Consistent_No_Component_Reordering --
+    ----------------------------------------------
+ 
+    --  This routine checks for a consistent No_Component_Reordering setting.
+    --  Note that internal units are excluded from this check, since we don't
+    --  in any case allow the pragma to affect types in internal units, and
+    --  there is thus no requirement to recompile the run-time with the setting.
+ 
+    procedure Check_Consistent_No_Component_Reordering is
+       OK : Boolean := True;
+    begin
+       --  Check that all entries have No_Component_Reordering set
+ 
+       for A1 in ALIs.First .. ALIs.Last loop
+          if not Is_Internal_File_Name (ALIs.Table (A1).Sfile)
+            and then not ALIs.Table (A1).No_Component_Reordering
+          then
+             OK := False;
+             exit;
+          end if;
+       end loop;
+ 
+       --  All do, return
+ 
+       if OK then
+          return;
+       end if;
+ 
+       --  Here we have an inconsistency
+ 
+       Consistency_Error_Msg
+         ("some but not all files compiled with No_Component_Reordering");
+ 
+       Write_Eol;
+       Write_Str ("files compiled with No_Component_Reordering");
+       Write_Eol;
+ 
+       for A1 in ALIs.First .. ALIs.Last loop
+          if not Is_Internal_File_Name (ALIs.Table (A1).Sfile)
+            and then ALIs.Table (A1).No_Component_Reordering
+          then
+             Write_Str ("  ");
+             Write_Name (ALIs.Table (A1).Sfile);
+             Write_Eol;
+          end if;
+       end loop;
+ 
+       Write_Eol;
+       Write_Str ("files compiled without No_Component_Reordering");
+       Write_Eol;
+ 
+       for A1 in ALIs.First .. ALIs.Last loop
+          if not Is_Internal_File_Name (ALIs.Table (A1).Sfile)
+            and then not ALIs.Table (A1).No_Component_Reordering
+          then
+             Write_Str ("  ");
+             Write_Name (ALIs.Table (A1).Sfile);
+             Write_Eol;
+          end if;
+       end loop;
+    end Check_Consistent_No_Component_Reordering;
+ 
     ----------------------------------------
     -- Check_Consistent_Normalize_Scalars --
     ----------------------------------------
diff -Nrcpad gcc-7.3.0/gcc/ada/bcheck.ads gcc-8.1.0/gcc/ada/bcheck.ads
*** gcc-7.3.0/gcc/ada/bcheck.ads	Mon Sep 10 12:47:10 2007
--- gcc-8.1.0/gcc/ada/bcheck.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2007, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/binde.adb gcc-8.1.0/gcc/ada/binde.adb
*** gcc-7.3.0/gcc/ada/binde.adb	Thu Jan 19 12:04:13 2017
--- gcc-8.1.0/gcc/ada/binde.adb	Thu Jan 11 08:54:39 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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;
*** 33,38 ****
--- 33,39 ----
  with Table;
  
  with System.Case_Util; use System.Case_Util;
+ with System.HTable;
  with System.OS_Lib;
  
  package body Binde is
*************** package body Binde is
*** 229,235 ****
        --  Used in computing transitive closure for Elaborate_All and also in
        --  locating cycles and paths in the diagnose routines.
  
!       Elab_Position : Natural;
        --  Initialized to zero. Set non-zero when a unit is chosen and placed in
        --  the elaboration order. The value represents the ordinal position in
        --  the elaboration order.
--- 230,236 ----
        --  Used in computing transitive closure for Elaborate_All and also in
        --  locating cycles and paths in the diagnose routines.
  
!       Elab_Position : Nat;
        --  Initialized to zero. Set non-zero when a unit is chosen and placed in
        --  the elaboration order. The value represents the ordinal position in
        --  the elaboration order.
*************** package body Binde is
*** 279,287 ****
     --  Current unit, set by Gather_Dependencies, and picked up in Build_Link to
     --  set the Reason_Unit field of the created dependency link.
  
!    Num_Chosen : Natural;
     --  Number of units chosen in the elaboration order so far
  
     -----------------------
     -- Local Subprograms --
     -----------------------
--- 280,291 ----
     --  Current unit, set by Gather_Dependencies, and picked up in Build_Link to
     --  set the Reason_Unit field of the created dependency link.
  
!    Num_Chosen : Nat;
     --  Number of units chosen in the elaboration order so far
  
+    Diagnose_Elaboration_Problem_Called : Boolean := False;
+    --  True if Diagnose_Elaboration_Problem was called. Used in an assertion.
+ 
     -----------------------
     -- Local Subprograms --
     -----------------------
*************** package body Binde is
*** 329,335 ****
     --  the reason for the link is R. Ea_Id is the contents to be placed in the
     --  Elab_All_Link of the entry.
  
!    procedure Choose (Elab_Order : in out Unit_Id_Table; Chosen : Unit_Id);
     --  Chosen is the next entry chosen in the elaboration order. This procedure
     --  updates all data structures appropriately.
  
--- 333,342 ----
     --  the reason for the link is R. Ea_Id is the contents to be placed in the
     --  Elab_All_Link of the entry.
  
!    procedure Choose
!      (Elab_Order : in out Unit_Id_Table;
!       Chosen     : Unit_Id;
!       Msg        : String);
     --  Chosen is the next entry chosen in the elaboration order. This procedure
     --  updates all data structures appropriately.
  
*************** package body Binde is
*** 347,352 ****
--- 354,360 ----
  
     procedure Diagnose_Elaboration_Problem
       (Elab_Order : in out Unit_Id_Table);
+    pragma No_Return (Diagnose_Elaboration_Problem);
     --  Called when no elaboration order can be found. Outputs an appropriate
     --  diagnosis of the problem, and then abandons the bind.
  
*************** package body Binde is
*** 426,434 ****
  
        procedure Find_Elab_Order (Elab_Order : out Unit_Id_Table);
  
!       Illegal_Elab_All : Boolean := False;
!       --  Set true if Find_Elab_Order found an illegal pragma Elaborate_All
!       --  (explicit or implicit).
  
        function SCC (U : Unit_Id) return Unit_Id;
        --  The root of the strongly connected component containing U
--- 434,442 ----
  
        procedure Find_Elab_Order (Elab_Order : out Unit_Id_Table);
  
!       Elab_Cycle_Found : Boolean := False;
!       --  Set True if Find_Elab_Order found a cycle (usually an illegal pragma
!       --  Elaborate_All, explicit or implicit).
  
        function SCC (U : Unit_Id) return Unit_Id;
        --  The root of the strongly connected component containing U
*************** package body Binde is
*** 984,990 ****
     -- Choose --
     ------------
  
!    procedure Choose (Elab_Order : in out Unit_Id_Table; Chosen : Unit_Id) is
        pragma Assert (Chosen /= No_Unit_Id);
        S : Successor_Id;
        U : Unit_Id;
--- 992,1002 ----
     -- Choose --
     ------------
  
!    procedure Choose
!      (Elab_Order : in out Unit_Id_Table;
!       Chosen     : Unit_Id;
!       Msg        : String)
!    is
        pragma Assert (Chosen /= No_Unit_Id);
        S : Successor_Id;
        U : Unit_Id;
*************** package body Binde is
*** 993,999 ****
        if Debug_Flag_C then
           Write_Str ("Choosing Unit ");
           Write_Unit_Name (Units.Table (Chosen).Uname);
!          Write_Eol;
        end if;
  
        --  We shouldn't be choosing something with unelaborated predecessors,
--- 1005,1011 ----
        if Debug_Flag_C then
           Write_Str ("Choosing Unit ");
           Write_Unit_Name (Units.Table (Chosen).Uname);
!          Write_Str (Msg);
        end if;
  
        --  We shouldn't be choosing something with unelaborated predecessors,
*************** package body Binde is
*** 1020,1041 ****
  
        if No_Pred = Chosen then
           No_Pred := UNR.Table (Chosen).Nextnp;
- 
        else
-          --  Note that we just ignore the situation where it does not
-          --  appear in the No_Pred list, this happens in calls from the
-          --  Diagnose_Elaboration_Problem routine, where cycles are being
-          --  removed arbitrarily from the graph.
- 
           U := No_Pred;
           while U /= No_Unit_Id loop
              if UNR.Table (U).Nextnp = Chosen then
                 UNR.Table (U).Nextnp := UNR.Table (Chosen).Nextnp;
!                exit;
              end if;
  
              U := UNR.Table (U).Nextnp;
           end loop;
        end if;
  
        --  For all successors, decrement the number of predecessors, and if it
--- 1032,1054 ----
  
        if No_Pred = Chosen then
           No_Pred := UNR.Table (Chosen).Nextnp;
        else
           U := No_Pred;
           while U /= No_Unit_Id loop
              if UNR.Table (U).Nextnp = Chosen then
                 UNR.Table (U).Nextnp := UNR.Table (Chosen).Nextnp;
!                goto Done_Removal;
              end if;
  
              U := UNR.Table (U).Nextnp;
           end loop;
+ 
+          --  Here if we didn't find it on the No_Pred list. This can happen
+          --  only in calls from the Diagnose_Elaboration_Problem routine,
+          --  where cycles are being removed arbitrarily from the graph.
+ 
+          pragma Assert (Errors_Detected > 0);
+          <<Done_Removal>> null;
        end if;
  
        --  For all successors, decrement the number of predecessors, and if it
*************** package body Binde is
*** 1081,1087 ****
        Num_Chosen := Num_Chosen + 1;
  
        pragma Assert
!         (Errors_Detected > 0 or else Num_Chosen = Natural (Last (Elab_Order)));
  
        UNR.Table (Chosen).Elab_Position := Num_Chosen;
  
--- 1094,1112 ----
        Num_Chosen := Num_Chosen + 1;
  
        pragma Assert
!         (Errors_Detected > 0 or else Num_Chosen = Last (Elab_Order));
!       pragma Assert (Units.Last = UNR.Last);
!       pragma Assert (Num_Chosen + Num_Left = Int (UNR.Last));
! 
!       if Debug_Flag_C then
!          Write_Str (" ");
!          Write_Int (Int (Num_Chosen));
!          Write_Str ("+");
!          Write_Int (Num_Left);
!          Write_Str ("=");
!          Write_Int (Int (UNR.Last));
!          Write_Eol;
!       end if;
  
        UNR.Table (Chosen).Elab_Position := Num_Chosen;
  
*************** package body Binde is
*** 1099,1105 ****
           then
              null;
           else
!             Choose (Elab_Order, Corresponding_Body (Chosen));
           end if;
        end if;
     end Choose;
--- 1124,1133 ----
           then
              null;
           else
!             Choose
!               (Elab_Order => Elab_Order,
!                Chosen     => Corresponding_Body (Chosen),
!                Msg        => " [Elaborate_Body]");
           end if;
        end if;
     end Choose;
*************** package body Binde is
*** 1138,1144 ****
  
     function Debug_Flag_Old return Boolean is
     begin
!       return Debug_Flag_P;
     end Debug_Flag_Old;
  
     ----------------------
--- 1166,1175 ----
  
     function Debug_Flag_Old return Boolean is
     begin
!       --  If the user specified both flags, we want to use the older algorithm,
!       --  rather than some confusing mix of the two.
! 
!       return Debug_Flag_P and not Debug_Flag_O;
     end Debug_Flag_Old;
  
     ----------------------
*************** package body Binde is
*** 1196,1202 ****
              --  sufficiently long, generate error message and return True.
  
              if U = Uto and then PL >= ML then
!                Choose (Elab_Order, U);
                 return True;
  
              --  All done if already visited
--- 1227,1233 ----
              --  sufficiently long, generate error message and return True.
  
              if U = Uto and then PL >= ML then
!                Choose (Elab_Order, U, " [Find_Link: base]");
                 return True;
  
              --  All done if already visited
*************** package body Binde is
*** 1213,1219 ****
                 while S /= No_Successor loop
                    if Find_Link (Succ.Table (S).After, PL + 1) then
                       Elab_Error_Msg (S);
!                      Choose (Elab_Order, U);
                       return True;
                    end if;
  
--- 1244,1250 ----
                 while S /= No_Successor loop
                    if Find_Link (Succ.Table (S).After, PL + 1) then
                       Elab_Error_Msg (S);
!                      Choose (Elab_Order, U, " [Find_Link: recursive]");
                       return True;
                    end if;
  
*************** package body Binde is
*** 1243,1248 ****
--- 1274,1280 ----
     --  Start of processing for Diagnose_Elaboration_Problem
  
     begin
+       Diagnose_Elaboration_Problem_Called := True;
        Set_Standard_Error;
  
        --  Output state of things if debug flag N set
*************** package body Binde is
*** 1254,1263 ****
           begin
              Write_Eol;
              Write_Eol;
!             Write_Str ("Diagnose_Elaboration_Problem called");
!             Write_Eol;
!             Write_Str ("List of remaining unchosen units and predecessors");
!             Write_Eol;
  
              for U in Units.First .. Units.Last loop
                 if UNR.Table (U).Elab_Position = 0 then
--- 1286,1293 ----
           begin
              Write_Eol;
              Write_Eol;
!             Write_Line ("Diagnose_Elaboration_Problem called");
!             Write_Line ("List of remaining unchosen units and predecessors");
  
              for U in Units.First .. Units.Last loop
                 if UNR.Table (U).Elab_Position = 0 then
*************** package body Binde is
*** 1269,1285 ****
                    Write_Unit_Name (Units.Table (U).Uname);
                    Write_Str (" (Num_Pred = ");
                    Write_Int (NP);
!                   Write_Char (')');
!                   Write_Eol;
  
                    if NP = 0 then
                       if Units.Table (U).Elaborate_Body then
!                         Write_Str
                            ("    (not chosen because of Elaborate_Body)");
-                         Write_Eol;
                       else
!                         Write_Str ("  ****************** why not chosen?");
!                         Write_Eol;
                       end if;
                    end if;
  
--- 1299,1312 ----
                    Write_Unit_Name (Units.Table (U).Uname);
                    Write_Str (" (Num_Pred = ");
                    Write_Int (NP);
!                   Write_Line (")");
  
                    if NP = 0 then
                       if Units.Table (U).Elaborate_Body then
!                         Write_Line
                            ("    (not chosen because of Elaborate_Body)");
                       else
!                         Write_Line ("  ****************** why not chosen?");
                       end if;
                    end if;
  
*************** package body Binde is
*** 1304,1311 ****
                    end loop;
  
                    if NP /= 0 then
!                      Write_Str ("  **************** Num_Pred value wrong!");
!                      Write_Eol;
                    end if;
                 end if;
              end loop;
--- 1331,1337 ----
                    end loop;
  
                    if NP /= 0 then
!                      Write_Line ("  **************** Num_Pred value wrong!");
                    end if;
                 end if;
              end loop;
*************** package body Binde is
*** 1591,1597 ****
           Error_Msg ("?since all units compiled with static elaboration model");
        end if;
  
!       if Do_New then
           if Debug_Flag_V then
              Write_Line ("Doing new...");
           end if;
--- 1617,1623 ----
           Error_Msg ("?since all units compiled with static elaboration model");
        end if;
  
!       if Do_New and not Debug_Flag_Old and not Debug_Flag_Older then
           if Debug_Flag_V then
              Write_Line ("Doing new...");
           end if;
*************** package body Binde is
*** 1602,1615 ****
        end if;
  
        --  Elab_New does not support the pessimistic order, so if that was
!       --  requested, use the old results. Use Elab_Old if -dp was selected.
!       --  Elab_New does not yet give proper error messages for illegal
!       --  Elaborate_Alls, so if there is one, run Elab_Old.
  
        if Do_Old
          or Pessimistic_Elab_Order
          or Debug_Flag_Old
!         or Illegal_Elab_All
        then
           if Debug_Flag_V then
              Write_Line ("Doing old...");
--- 1628,1642 ----
        end if;
  
        --  Elab_New does not support the pessimistic order, so if that was
!       --  requested, use the old results. Use Elab_Old if -dp or -do was
!       --  selected. Elab_New does not yet give proper error messages for
!       --  illegal Elaborate_Alls, so if there is one, run Elab_Old.
  
        if Do_Old
          or Pessimistic_Elab_Order
          or Debug_Flag_Old
!         or Debug_Flag_Older
!         or Elab_Cycle_Found
        then
           if Debug_Flag_V then
              Write_Line ("Doing old...");
*************** package body Binde is
*** 1620,1741 ****
           Elab_Old.Find_Elab_Order (Old_Elab_Order);
        end if;
  
        declare
           Old_Order : Unit_Id_Array renames
                         Old_Elab_Order.Table (1 .. Last (Old_Elab_Order));
-          New_Order : Unit_Id_Array renames
-                        Elab_Order.Table (1 .. Last (Elab_Order));
-          Old_Pairs : constant Nat := Num_Spec_Body_Pairs (Old_Order);
-          New_Pairs : constant Nat := Num_Spec_Body_Pairs (New_Order);
- 
        begin
           if Do_Old and Do_New then
!             Write_Line (Get_Name_String (First_Main_Lib_File));
! 
!             pragma Assert (Old_Order'Length = New_Order'Length);
!             pragma Debug (Validate (Old_Order, Doing_New => False));
!             pragma Debug (Validate (New_Order, Doing_New => True));
  
!             --  Misc debug printouts that can be used for experimentation by
!             --  changing the 'if's below.
  
!             if True then
!                if New_Order = Old_Order then
!                   Write_Line ("Elab_New: same order.");
!                else
!                   Write_Line ("Elab_New: diff order.");
!                end if;
!             end if;
  
!             if New_Order /= Old_Order and then False then
!                Write_Line ("Elaboration orders differ:");
!                Write_Elab_Order
!                  (Old_Order, Title => "OLD ELABORATION ORDER");
!                Write_Elab_Order
!                  (New_Order, Title => "NEW ELABORATION ORDER");
!             end if;
  
!             if True then
!                Write_Str ("Pairs: ");
!                Write_Int (Old_Pairs);
  
!                if Old_Pairs = New_Pairs then
!                   Write_Str (" = ");
!                elsif Old_Pairs < New_Pairs then
!                   Write_Str (" < ");
!                else
!                   Write_Str (" > ");
                 end if;
  
!                Write_Int (New_Pairs);
!                Write_Eol;
!             end if;
  
!             if Old_Pairs /= New_Pairs and then False then
!                Write_Str ("Pairs: ");
!                Write_Int (Old_Pairs);
  
!                if Old_Pairs < New_Pairs then
!                   Write_Str (" < ");
!                else
!                   Write_Str (" > ");
                 end if;
  
!                Write_Int (New_Pairs);
!                Write_Eol;
  
!                if Old_Pairs /= New_Pairs and then Debug_Flag_V then
!                   Write_Elab_Order
!                     (Old_Order, Title => "OLD ELABORATION ORDER");
!                   Write_Elab_Order
!                     (New_Order, Title => "NEW ELABORATION ORDER");
!                   pragma Assert (New_Pairs >= Old_Pairs);
                 end if;
!             end if;
           end if;
  
           --  The Elab_New algorithm doesn't implement the -p switch, so if that
!          --  was used, use the results from the old algorithm.
  
!          if Pessimistic_Elab_Order or Debug_Flag_Old then
!             New_Order := Old_Order;
           end if;
  
           --  Now set the Elab_Positions in the Units table. It is important to
           --  do this late, in case we're running both Elab_New and Elab_Old.
  
           declare
              Units_Array : Units.Table_Type renames
                              Units.Table (Units.First .. Units.Last);
- 
           begin
              for J in New_Order'Range loop
                 pragma Assert
!                  (UNR.Table (New_Order (J)).Elab_Position = Positive (J));
!                Units_Array  (New_Order (J)).Elab_Position := Positive (J);
              end loop;
-          end;
  
!          if Errors_Detected = 0 then
  
!             --  Display elaboration order if -l was specified
  
!             if Elab_Order_Output then
!                if Zero_Formatting then
!                   Write_Elab_Order (New_Order, Title => "");
!                else
!                   Write_Elab_Order (New_Order, Title => "ELABORATION ORDER");
                 end if;
-             end if;
  
!             --  Display list of sources in the closure (except predefined
!             --  sources) if -R was used. Include predefined sources if -Ra
!             --  was used.
  
!             if List_Closure then
!                Write_Closure (New_Order);
              end if;
!          end if;
        end;
     end Find_Elab_Order;
  
--- 1647,1782 ----
           Elab_Old.Find_Elab_Order (Old_Elab_Order);
        end if;
  
+       pragma Assert (Elab_Cycle_Found <= -- implies
+                        Diagnose_Elaboration_Problem_Called);
+ 
        declare
           Old_Order : Unit_Id_Array renames
                         Old_Elab_Order.Table (1 .. Last (Old_Elab_Order));
        begin
           if Do_Old and Do_New then
!             declare
!                New_Order : Unit_Id_Array renames
!                              Elab_Order.Table (1 .. Last (Elab_Order));
!                Old_Pairs : constant Nat := Num_Spec_Body_Pairs (Old_Order);
!                New_Pairs : constant Nat := Num_Spec_Body_Pairs (New_Order);
  
!             begin
!                Write_Line (Get_Name_String (First_Main_Lib_File));
  
!                pragma Assert (Old_Order'Length = New_Order'Length);
!                pragma Debug (Validate (Old_Order, Doing_New => False));
!                pragma Debug (Validate (New_Order, Doing_New => True));
  
!                --  Misc debug printouts that can be used for experimentation by
!                --  changing the 'if's below.
  
!                if True then
!                   if New_Order = Old_Order then
!                      Write_Line ("Elab_New: same order.");
!                   else
!                      Write_Line ("Elab_New: diff order.");
!                   end if;
!                end if;
  
!                if New_Order /= Old_Order and then False then
!                   Write_Line ("Elaboration orders differ:");
!                   Write_Elab_Order
!                     (Old_Order, Title => "OLD ELABORATION ORDER");
!                   Write_Elab_Order
!                     (New_Order, Title => "NEW ELABORATION ORDER");
                 end if;
  
!                if True then
!                   Write_Str ("Pairs: ");
!                   Write_Int (Old_Pairs);
  
!                   if Old_Pairs = New_Pairs then
!                      Write_Str (" = ");
!                   elsif Old_Pairs < New_Pairs then
!                      Write_Str (" < ");
!                   else
!                      Write_Str (" > ");
!                   end if;
  
!                   Write_Int (New_Pairs);
!                   Write_Eol;
                 end if;
  
!                if Old_Pairs /= New_Pairs and then False then
!                   Write_Str ("Pairs: ");
!                   Write_Int (Old_Pairs);
  
!                   if Old_Pairs < New_Pairs then
!                      Write_Str (" < ");
!                   else
!                      Write_Str (" > ");
!                   end if;
! 
!                   Write_Int (New_Pairs);
!                   Write_Eol;
! 
!                   if Old_Pairs /= New_Pairs and then Debug_Flag_V then
!                      Write_Elab_Order
!                        (Old_Order, Title => "OLD ELABORATION ORDER");
!                      Write_Elab_Order
!                        (New_Order, Title => "NEW ELABORATION ORDER");
!                      pragma Assert (New_Pairs >= Old_Pairs);
!                   end if;
                 end if;
!             end;
           end if;
  
           --  The Elab_New algorithm doesn't implement the -p switch, so if that
!          --  was used, use the results from the old algorithm. Likewise if the
!          --  user has requested the old algorithm.
  
!          if Pessimistic_Elab_Order or Debug_Flag_Old or Debug_Flag_Older then
!             pragma Assert
!               (Last (Elab_Order) = 0
!                 or else Last (Elab_Order) = Old_Order'Last);
! 
!             Init (Elab_Order);
!             Append_All (Elab_Order, Old_Order);
           end if;
  
           --  Now set the Elab_Positions in the Units table. It is important to
           --  do this late, in case we're running both Elab_New and Elab_Old.
  
           declare
+             New_Order : Unit_Id_Array renames
+                           Elab_Order.Table (1 .. Last (Elab_Order));
              Units_Array : Units.Table_Type renames
                              Units.Table (Units.First .. Units.Last);
           begin
              for J in New_Order'Range loop
                 pragma Assert
!                  (UNR.Table (New_Order (J)).Elab_Position = J);
!                Units_Array  (New_Order (J)).Elab_Position := J;
              end loop;
  
!             if Errors_Detected = 0 then
  
!                --  Display elaboration order if -l was specified
  
!                if Elab_Order_Output then
!                   if Zero_Formatting then
!                      Write_Elab_Order (New_Order, Title => "");
!                   else
!                      Write_Elab_Order
!                        (New_Order, Title => "ELABORATION ORDER");
!                   end if;
                 end if;
  
!                --  Display list of sources in the closure (except predefined
!                --  sources) if -R was used. Include predefined sources if -Ra
!                --  was used.
  
!                if List_Closure then
!                   Write_Closure (New_Order);
!                end if;
              end if;
!          end;
        end;
     end Find_Elab_Order;
  
*************** package body Binde is
*** 1756,1761 ****
--- 1797,1834 ----
        function Read_File (Name : String) return String_Ptr;
        --  Read the entire contents of the named file
  
+       subtype Header_Num is Unit_Name_Type'Base range 0 .. 2**16 - 1;
+       type Line_Number is new Nat;
+       No_Line_Number  : constant Line_Number := 0;
+       Cur_Line_Number : Line_Number := 0;
+       --  Current line number in the Force_Elab_Order_File.
+       --  Incremented by Get_Line. Used in error messages.
+ 
+       function Hash (N : Unit_Name_Type) return Header_Num;
+ 
+       package Name_Map is new System.HTable.Simple_HTable
+         (Header_Num => Header_Num,
+          Element    => Line_Number,
+          No_Element => No_Line_Number,
+          Key        => Unit_Name_Type,
+          Hash       => Hash,
+          Equal      => "=");
+       --  Name_Map contains an entry for each file name seen, mapped to the
+       --  line number where we saw it first. This is used to give an error for
+       --  duplicates.
+ 
+       ----------
+       -- Hash --
+       ----------
+ 
+       function Hash (N : Unit_Name_Type) return Header_Num is
+          --  Name_Ids are already widely dispersed; no need for any actual
+          --  hashing. Just subtract to make it zero based, and "mod" to
+          --  bring it in range.
+       begin
+          return (N - Unit_Name_Type'First) mod (Header_Num'Last + 1);
+       end Hash;
+ 
        ---------------
        -- Read_File --
        ---------------
*************** package body Binde is
*** 1808,1813 ****
--- 1881,1888 ----
           Last  : Natural;
  
        begin
+          Cur_Line_Number := Cur_Line_Number + 1;
+ 
           --  Skip to end of line
  
           while Cur <= S'Last
*************** package body Binde is
*** 1903,1952 ****
        while Cur <= S'Last loop
           declare
              Uname : constant Unit_Name_Type := Name_Find (Get_Line);
  
           begin
              if Uname = Empty_Name then
                 null; -- silently skip blank lines
- 
-             elsif Get_Name_Table_Int (Uname) = 0
-               or else Unit_Id (Get_Name_Table_Int (Uname)) = No_Unit_Id
-             then
-                if Doing_New then
-                   Write_Line
-                     ("""" & Get_Name_String (Uname)
-                      & """: not present; ignored");
-                end if;
- 
              else
                 declare
!                   Cur_Unit : constant Unit_Id := Unit_Id_Of (Uname);
! 
                 begin
!                   if Is_Internal_File_Name (Units.Table (Cur_Unit).Sfile) then
!                      if Doing_New then
!                         Write_Line
!                           ("""" & Get_Name_String (Uname) &
!                              """: predefined unit ignored");
!                      end if;
  
!                   else
!                      if Prev_Unit /= No_Unit_Id then
                          if Doing_New then
!                            Write_Unit_Name (Units.Table (Prev_Unit).Uname);
!                            Write_Str (" <-- ");
!                            Write_Unit_Name (Units.Table (Cur_Unit).Uname);
!                            Write_Eol;
                          end if;
- 
-                         Build_Link
-                           (Before => Prev_Unit,
-                            After => Cur_Unit,
-                            R => Forced);
                       end if;
  
!                      Prev_Unit := Cur_Unit;
                    end if;
                 end;
              end if;
           end;
        end loop;
--- 1978,2057 ----
        while Cur <= S'Last loop
           declare
              Uname : constant Unit_Name_Type := Name_Find (Get_Line);
+             Error : Boolean := False;
  
           begin
              if Uname = Empty_Name then
                 null; -- silently skip blank lines
              else
                 declare
!                   Dup : constant Line_Number := Name_Map.Get (Uname);
                 begin
!                   if Dup = No_Line_Number then
!                      Name_Map.Set (Uname, Cur_Line_Number);
  
!                      --  We don't need to give the "not present" message in
!                      --  the case of "duplicate unit", because we would have
!                      --  already given the "not present" message on the
!                      --  first occurrence.
! 
!                      if Get_Name_Table_Int (Uname) = 0
!                        or else Unit_Id (Get_Name_Table_Int (Uname)) =
!                                  No_Unit_Id
!                      then
!                         Error := True;
                          if Doing_New then
!                            Write_Line
!                              ("""" & Get_Name_String (Uname)
!                               & """: not present; ignored");
                          end if;
                       end if;
  
!                   else
!                      Error := True;
!                      if Doing_New then
!                         Error_Msg_Nat_1  := Nat (Cur_Line_Number);
!                         Error_Msg_Unit_1 := Uname;
!                         Error_Msg_Nat_2  := Nat (Dup);
!                         Error_Msg
!                           (Force_Elab_Order_File.all
!                            & ":#: duplicate unit name $ from line #");
!                      end if;
                    end if;
                 end;
+ 
+                if not Error then
+                   declare
+                      Cur_Unit : constant Unit_Id := Unit_Id_Of (Uname);
+                   begin
+                      if Is_Internal_File_Name
+                           (Units.Table (Cur_Unit).Sfile)
+                      then
+                         if Doing_New then
+                            Write_Line
+                              ("""" & Get_Name_String (Uname)
+                               & """: predefined unit ignored");
+                         end if;
+ 
+                      else
+                         if Prev_Unit /= No_Unit_Id then
+                            if Doing_New then
+                               Write_Unit_Name (Units.Table (Prev_Unit).Uname);
+                               Write_Str (" <-- ");
+                               Write_Unit_Name (Units.Table (Cur_Unit).Uname);
+                               Write_Eol;
+                            end if;
+ 
+                            Build_Link
+                              (Before => Prev_Unit,
+                               After  => Cur_Unit,
+                               R      => Forced);
+                         end if;
+ 
+                         Prev_Unit := Cur_Unit;
+                      end if;
+                   end;
+                end if;
              end if;
           end;
        end loop;
*************** package body Binde is
*** 2234,2243 ****
  
           begin
              while S /= No_Successor loop
!                pragma Assert
!                  (UNR.Table (Succ.Table (S).After).Elab_Position >
!                   UNR.Table (U).Elab_Position,
!                   Msg & " elab order failed");
                 S := Succ.Table (S).Next;
              end loop;
           end;
--- 2339,2351 ----
  
           begin
              while S /= No_Successor loop
!                if UNR.Table (Succ.Table (S).After).Elab_Position <=
!                     UNR.Table (U).Elab_Position
!                then
!                   OK := False;
!                   Write_Line (Msg & " elab order failed");
!                end if;
! 
                 S := Succ.Table (S).Next;
              end loop;
           end;
*************** package body Binde is
*** 2346,2353 ****
  
        if not Zero_Formatting then
           Write_Eol;
!          Write_Str ("REFERENCED SOURCES");
!          Write_Eol;
        end if;
  
        for J in reverse Order'Range loop
--- 2454,2460 ----
  
        if not Zero_Formatting then
           Write_Eol;
!          Write_Line ("REFERENCED SOURCES");
        end if;
  
        for J in reverse Order'Range loop
*************** package body Binde is
*** 2366,2373 ****
                 Write_Str ("   ");
              end if;
  
!             Write_Str (Get_Name_String (Source));
!             Write_Eol;
           end if;
        end loop;
  
--- 2473,2479 ----
                 Write_Str ("   ");
              end if;
  
!             Write_Line (Get_Name_String (Source));
           end if;
        end loop;
  
*************** package body Binde is
*** 2390,2397 ****
                 Write_Str ("   ");
              end if;
  
!             Write_Str (Get_Name_String (Source));
!             Write_Eol;
           end if;
        end loop;
  
--- 2496,2502 ----
                 Write_Str ("   ");
              end if;
  
!             Write_Line (Get_Name_String (Source));
           end if;
        end loop;
  
*************** package body Binde is
*** 2408,2415 ****
     begin
        if not Zero_Formatting then
           Write_Eol;
!          Write_Str ("                 ELABORATION ORDER DEPENDENCIES");
!          Write_Eol;
           Write_Eol;
        end if;
  
--- 2513,2519 ----
     begin
        if not Zero_Formatting then
           Write_Eol;
!          Write_Line ("                 ELABORATION ORDER DEPENDENCIES");
           Write_Eol;
        end if;
  
*************** package body Binde is
*** 2495,2502 ****
     begin
        if Title /= "" then
           Write_Eol;
!          Write_Str (Title);
!          Write_Eol;
        end if;
  
        for J in Order'Range loop
--- 2599,2605 ----
     begin
        if Title /= "" then
           Write_Eol;
!          Write_Line (Title);
        end if;
  
        for J in Order'Range loop
*************** package body Binde is
*** 2711,2718 ****
                 Write_Unit_Name (Units.Table (Root).Uname);
                 Write_Str (" -- ");
                 Write_Int (Nodes'Length);
!                Write_Str (" units:");
!                Write_Eol;
  
                 for J in Nodes'Range loop
                    Write_Str ("   ");
--- 2814,2820 ----
                 Write_Unit_Name (Units.Table (Root).Uname);
                 Write_Str (" -- ");
                 Write_Int (Nodes'Length);
!                Write_Line (" units:");
  
                 for J in Nodes'Range loop
                    Write_Str ("   ");
*************** package body Binde is
*** 2861,2872 ****
                         or else Withs.Table (W).Elab_All_Desirable
                       then
                          if SCC (U) = SCC (Withed_Unit) then
!                            Illegal_Elab_All := True; -- ????
  
                             --  We could probably give better error messages
                             --  than Elab_Old here, but for now, to avoid
                             --  disruption, we don't give any error here.
!                            --  Instead, we set the Illegal_Elab_All flag above,
                             --  and then run the Elab_Old algorithm to issue the
                             --  error message. Ideally, we would like to print
                             --  multiple errors rather than stopping after the
--- 2963,2974 ----
                         or else Withs.Table (W).Elab_All_Desirable
                       then
                          if SCC (U) = SCC (Withed_Unit) then
!                            Elab_Cycle_Found := True; -- ???
  
                             --  We could probably give better error messages
                             --  than Elab_Old here, but for now, to avoid
                             --  disruption, we don't give any error here.
!                            --  Instead, we set the Elab_Cycle_Found flag above,
                             --  and then run the Elab_Old algorithm to issue the
                             --  error message. Ideally, we would like to print
                             --  multiple errors rather than stopping after the
*************** package body Binde is
*** 2918,2930 ****
           --  nodes have been chosen.
  
           Outer : loop
  
              --  If there are no nodes with predecessors, then either we are
              --  done, as indicated by Num_Left being set to zero, or we have
              --  a circularity. In the latter case, diagnose the circularity,
              --  removing it from the graph and continue.
              --  ????But Diagnose_Elaboration_Problem always raises an
!             --  exception.
  
              Get_No_Pred : while No_Pred = No_Unit_Id loop
                 exit Outer when Num_Left < 1;
--- 3020,3035 ----
           --  nodes have been chosen.
  
           Outer : loop
+             if Debug_Flag_N then
+                Write_Line ("Outer loop");
+             end if;
  
              --  If there are no nodes with predecessors, then either we are
              --  done, as indicated by Num_Left being set to zero, or we have
              --  a circularity. In the latter case, diagnose the circularity,
              --  removing it from the graph and continue.
              --  ????But Diagnose_Elaboration_Problem always raises an
!             --  exception, so the loop never goes around more than once.
  
              Get_No_Pred : while No_Pred = No_Unit_Id loop
                 exit Outer when Num_Left < 1;
*************** package body Binde is
*** 2963,2982 ****
                   and then Better_Choice (U, Best_So_Far)
                 then
                    if Debug_Flag_N then
!                      Write_Str ("    tentatively chosen (best so far)");
!                      Write_Eol;
                    end if;
  
                    Best_So_Far := U;
                 end if;
  
                 U := UNR.Table (U).Nextnp;
                 exit No_Pred_Search when U = No_Unit_Id;
              end loop No_Pred_Search;
  
              --  Choose the best candidate found
  
!             Choose (Elab_Order, Best_So_Far);
  
              --  If it's a spec with a body, and the body is not yet chosen,
              --  choose the body if possible. The case where the body is
--- 3068,3099 ----
                   and then Better_Choice (U, Best_So_Far)
                 then
                    if Debug_Flag_N then
!                      Write_Line ("    tentatively chosen (best so far)");
                    end if;
  
                    Best_So_Far := U;
+                else
+                   if Debug_Flag_N then
+                      Write_Line ("    SCC not ready");
+                   end if;
                 end if;
  
                 U := UNR.Table (U).Nextnp;
                 exit No_Pred_Search when U = No_Unit_Id;
              end loop No_Pred_Search;
  
+             --  If there are no units on the No_Pred list whose SCC is ready,
+             --  there must be a cycle. Defer to Elab_Old to print an error
+             --  message.
+ 
+             if Best_So_Far = No_Unit_Id then
+                Elab_Cycle_Found := True;
+                return;
+             end if;
+ 
              --  Choose the best candidate found
  
!             Choose (Elab_Order, Best_So_Far, " [Best_So_Far]");
  
              --  If it's a spec with a body, and the body is not yet chosen,
              --  choose the body if possible. The case where the body is
*************** package body Binde is
*** 3004,3010 ****
                    end if;
  
                    if Choose_The_Body then
!                      Choose (Elab_Order, Corresponding_Body (Best_So_Far));
                    end if;
                 end;
              end if;
--- 3121,3130 ----
                    end if;
  
                    if Choose_The_Body then
!                      Choose
!                        (Elab_Order => Elab_Order,
!                         Chosen     => Corresponding_Body (Best_So_Far),
!                         Msg        => " [body]");
                    end if;
                 end;
              end if;
*************** package body Binde is
*** 3024,3030 ****
                         and then UNR.Table (SCC (J)).Num_Pred = 0
                       then
                          Chose_One_Or_More := True;
!                         Choose (Elab_Order, SCC (J));
                       end if;
                    end loop;
  
--- 3144,3150 ----
                         and then UNR.Table (SCC (J)).Num_Pred = 0
                       then
                          Chose_One_Or_More := True;
!                         Choose (Elab_Order, SCC (J), " [same SCC]");
                       end if;
                    end loop;
  
*************** package body Binde is
*** 3071,3077 ****
           pragma Assert (SCC (U) = U);
        begin
           for J in Nodes (U)'Range loop
!             Write_Int (Int (UNR.Table (Nodes (U) (J)).Elab_Position));
              Write_Str (". ");
              Write_Unit_Name (Units.Table (Nodes (U) (J)).Uname);
              Write_Eol;
--- 3191,3197 ----
           pragma Assert (SCC (U) = U);
        begin
           for J in Nodes (U)'Range loop
!             Write_Int (UNR.Table (Nodes (U) (J)).Elab_Position);
              Write_Str (". ");
              Write_Unit_Name (Units.Table (Nodes (U) (J)).Uname);
              Write_Eol;
*************** package body Binde is
*** 3122,3128 ****
              --  a circularity. In the latter case, diagnose the circularity,
              --  removing it from the graph and continue.
              --  ????But Diagnose_Elaboration_Problem always raises an
!             --  exception.
  
              Get_No_Pred : while No_Pred = No_Unit_Id loop
                 exit Outer when Num_Left < 1;
--- 3242,3248 ----
              --  a circularity. In the latter case, diagnose the circularity,
              --  removing it from the graph and continue.
              --  ????But Diagnose_Elaboration_Problem always raises an
!             --  exception, so the loop never goes around more than once.
  
              Get_No_Pred : while No_Pred = No_Unit_Id loop
                 exit Outer when Num_Left < 1;
*************** package body Binde is
*** 3157,3164 ****
  
                 if Better_Choice (U, Best_So_Far) then
                    if Debug_Flag_N then
!                      Write_Str ("    tentatively chosen (best so far)");
!                      Write_Eol;
                    end if;
  
                    Best_So_Far := U;
--- 3277,3283 ----
  
                 if Better_Choice (U, Best_So_Far) then
                    if Debug_Flag_N then
!                      Write_Line ("    tentatively chosen (best so far)");
                    end if;
  
                    Best_So_Far := U;
*************** package body Binde is
*** 3170,3176 ****
  
              --  Choose the best candidate found
  
!             Choose (Elab_Order, Best_So_Far);
           end loop Outer;
        end Find_Elab_Order;
  
--- 3289,3295 ----
  
              --  Choose the best candidate found
  
!             Choose (Elab_Order, Best_So_Far, " [Elab_Old Best_So_Far]");
           end loop Outer;
        end Find_Elab_Order;
  
diff -Nrcpad gcc-7.3.0/gcc/ada/binde.ads gcc-8.1.0/gcc/ada/binde.ads
*** gcc-7.3.0/gcc/ada/binde.ads	Fri Jan 13 10:54:43 2017
--- gcc-8.1.0/gcc/ada/binde.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/binderr.adb gcc-8.1.0/gcc/ada/binderr.adb
*** gcc-7.3.0/gcc/ada/binderr.adb	Thu Apr  9 10:38:54 2009
--- gcc-8.1.0/gcc/ada/binderr.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2008, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/binderr.ads gcc-8.1.0/gcc/ada/binderr.ads
*** gcc-7.3.0/gcc/ada/binderr.ads	Thu Jan 19 11:46:14 2017
--- gcc-8.1.0/gcc/ada/binderr.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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 Binderr is
*** 107,113 ****
     procedure Error_Msg (Msg : String);
     --  Output specified error message to standard error or standard output
     --  as governed by the brief and verbose switches, and update error
!    --  counts appropriately
  
     procedure Error_Msg_Info (Msg : String);
     --  Output information line. Indentical in effect to Error_Msg, except
--- 107,113 ----
     procedure Error_Msg (Msg : String);
     --  Output specified error message to standard error or standard output
     --  as governed by the brief and verbose switches, and update error
!    --  counts appropriately.
  
     procedure Error_Msg_Info (Msg : String);
     --  Output information line. Indentical in effect to Error_Msg, except
diff -Nrcpad gcc-7.3.0/gcc/ada/bindgen.adb gcc-8.1.0/gcc/ada/bindgen.adb
*** gcc-7.3.0/gcc/ada/bindgen.adb	Fri Jan 13 10:56:14 2017
--- gcc-8.1.0/gcc/ada/bindgen.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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.B;  use Osint.B;
*** 35,53 ****
  with Output;   use Output;
  with Rident;   use Rident;
  with Stringt;  use Stringt;
! with Table;    use Table;
  with Targparm; use Targparm;
  with Types;    use Types;
  
! with System.OS_Lib;  use System.OS_Lib;
  with System.WCh_Con; use System.WCh_Con;
  
  with GNAT.Heap_Sort_A; use GNAT.Heap_Sort_A;
  with GNAT.HTable;
  
  package body Bindgen is
-    use Binde.Unit_Id_Tables;
- 
     Statement_Buffer : String (1 .. 1000);
     --  Buffer used for constructing output statements
  
--- 35,51 ----
  with Output;   use Output;
  with Rident;   use Rident;
  with Stringt;  use Stringt;
! with Table;
  with Targparm; use Targparm;
  with Types;    use Types;
  
! with System.OS_Lib;
  with System.WCh_Con; use System.WCh_Con;
  
  with GNAT.Heap_Sort_A; use GNAT.Heap_Sort_A;
  with GNAT.HTable;
  
  package body Bindgen is
     Statement_Buffer : String (1 .. 1000);
     --  Buffer used for constructing output statements
  
*************** package body Bindgen is
*** 61,66 ****
--- 59,72 ----
     Num_Elab_Calls : Nat := 0;
     --  Number of generated calls to elaboration routines
  
+    Num_Primary_Stacks : Int := 0;
+    --  Number of default-sized primary stacks the binder needs to allocate for
+    --  task objects declared in the program.
+ 
+    Num_Sec_Stacks : Int := 0;
+    --  Number of default-sized primary stacks the binder needs to allocate for
+    --  task objects declared in the program.
+ 
     System_Restrictions_Used : Boolean := False;
     --  Flag indicating whether the unit System.Restrictions is in the closure
     --  of the partition. This is set by Resolve_Binder_Options, and is used
*************** package body Bindgen is
*** 76,81 ****
--- 82,93 ----
     --  domains just before calling the main procedure from the environment
     --  task.
  
+    System_Secondary_Stack_Used : 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,
*************** package body Bindgen is
*** 94,99 ****
--- 106,117 ----
     --  Resolve_Binder_Options, and it is used to call a procedure that starts
     --  slave processors.
  
+    System_Version_Control_Used : Boolean := False;
+    --  Flag indicating whether unit System.Version_Control is in the closure.
+    --  This unit is implicitly withed by the compiler when Version or
+    --  Body_Version attributes are used. If the package is not in the closure,
+    --  the version definitions can be removed.
+ 
     Lib_Final_Built : Boolean := False;
     --  Flag indicating whether the finalize_library rountine has been built
  
*************** package body Bindgen is
*** 175,182 ****
--- 193,203 ----
     --     Exception_Tracebacks_Symbolic : Integer;
     --     Detect_Blocking               : Integer;
     --     Default_Stack_Size            : Integer;
+    --     Default_Secondary_Stack_Size  : System.Parameters.Size_Type;
     --     Leap_Seconds_Support          : Integer;
     --     Main_CPU                      : Integer;
+    --     Default_Sized_SS_Pool         : System.Address;
+    --     Binder_Sec_Stacks_Count       : Natural;
  
     --  Main_Priority is the priority value set by pragma Priority in the main
     --  program. If no such pragma is present, the value is -1.
*************** package body Bindgen is
*** 257,262 ****
--- 278,286 ----
     --  Default_Stack_Size is the default stack size used when creating an Ada
     --  task with no explicit Storage_Size clause.
  
+    --  Default_Secondary_Stack_Size is the default secondary stack size used
+    --  when creating an Ada task with no explicit Secondary_Stack_Size clause.
+ 
     --  Leap_Seconds_Support denotes whether leap seconds have been enabled or
     --  disabled. A value of zero indicates that leap seconds are turned "off",
     --  while a value of one signifies "on" status.
*************** package body Bindgen is
*** 264,269 ****
--- 288,301 ----
     --  Main_CPU is the processor set by pragma CPU in the main program. If no
     --  such pragma is present, the value is -1.
  
+    --  Default_Sized_SS_Pool is set to the address of the default-sized
+    --  secondary stacks array generated by the binder. This pool of stacks is
+    --  generated when either the restriction No_Implicit_Heap_Allocations
+    --  or No_Implicit_Task_Allocations is active.
+ 
+    --  Binder_Sec_Stacks_Count is the number of generated secondary stacks in
+    --  the Default_Sized_SS_Pool.
+ 
     procedure WBI (Info : String) renames Osint.B.Write_Binder_Info;
     --  Convenient shorthand used throughout
  
*************** package body Bindgen is
*** 550,555 ****
--- 582,613 ----
              WBI ("      procedure Start_Slave_CPUs;");
              WBI ("      pragma Import (C, Start_Slave_CPUs," &
                   " ""__gnat_start_slave_cpus"");");
+             WBI ("");
+          end if;
+ 
+          --  A restricted run-time may attempt to initialize the main task's
+          --  secondary stack even if the stack is not used. Consequently,
+          --  the binder needs to initialize Binder_Sec_Stacks_Count anytime
+          --  System.Secondary_Stack is in the enclosure of the partition.
+ 
+          if System_Secondary_Stack_Used then
+             WBI ("      Binder_Sec_Stacks_Count : Natural;");
+             WBI ("      pragma Import (Ada, Binder_Sec_Stacks_Count, " &
+                  """__gnat_binder_ss_count"");");
+             WBI ("");
+          end if;
+ 
+          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
*** 584,589 ****
--- 642,691 ----
              WBI ("      null;");
           end if;
  
+          --  Generate default-sized secondary stack pool and set secondary
+          --  stack globals.
+ 
+          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 ("");
+ 
+          --  When a restricted run-time initializes the main task's secondary
+          --  stack but the program does not use it, no secondary stack is
+          --  generated. Binder_Sec_Stacks_Count is set to zero so the run-time
+          --  is aware that the lack of pre-allocated secondary stack is
+          --  expected.
+ 
+          elsif System_Secondary_Stack_Used then
+             WBI ("      Binder_Sec_Stacks_Count := 0;");
+          end if;
+ 
        --  Normal case (standard library not suppressed). Set all global values
        --  used by the run time.
  
*************** package body Bindgen is
*** 643,648 ****
--- 745,754 ----
           WBI ("      Default_Stack_Size : Integer;");
           WBI ("      pragma Import (C, Default_Stack_Size, " &
                """__gl_default_stack_size"");");
+          WBI ("      Default_Secondary_Stack_Size : " &
+               "System.Parameters.Size_Type;");
+          WBI ("      pragma Import (C, Default_Secondary_Stack_Size, " &
+               """__gnat_default_ss_size"");");
           WBI ("      Leap_Seconds_Support : Integer;");
           WBI ("      pragma Import (C, Leap_Seconds_Support, " &
                """__gl_leap_seconds_support"");");
*************** package body Bindgen is
*** 726,731 ****
--- 832,849 ----
                   & """__gnat_freeze_dispatching_domains"");");
           end if;
  
+          --  Secondary stack global variables
+ 
+          WBI ("      Binder_Sec_Stacks_Count : Natural;");
+          WBI ("      pragma Import (Ada, Binder_Sec_Stacks_Count, " &
+               """__gnat_binder_ss_count"");");
+ 
+          WBI ("      Default_Sized_SS_Pool : System.Address;");
+          WBI ("      pragma Import (Ada, Default_Sized_SS_Pool, " &
+               """__gnat_default_ss_pool"");");
+ 
+          WBI ("");
+ 
           --  Start of processing for Adainit
  
           WBI ("   begin");
*************** package body Bindgen is
*** 866,874 ****
              WBI ("      Bind_Env_Addr := Bind_Env'Address;");
           end if;
  
-          --  Generate call to Install_Handler
- 
           WBI ("");
           WBI ("      Runtime_Initialize (1);");
        end if;
  
--- 984,1034 ----
              WBI ("      Bind_Env_Addr := Bind_Env'Address;");
           end if;
  
           WBI ("");
+ 
+          --  Generate default-sized secondary stack pool and set secondary
+          --  stack globals.
+ 
+          if Sec_Stack_Used then
+ 
+             --  Elaborate the body of the binder to initialize the default-
+             --  sized secondary stack pool.
+ 
+             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;
+ 
+             Set_String ("      Default_Sized_SS_Pool := ");
+ 
+             if Num_Sec_Stacks > 0 then
+                Set_String ("Sec_Default_Sized_Stacks'Address;");
+             else
+                Set_String ("System.Null_Address;");
+             end if;
+ 
+             Write_Statement_Buffer;
+             WBI ("");
+          end if;
+ 
+          --  Generate call to Runtime_Initialize
+ 
           WBI ("      Runtime_Initialize (1);");
        end if;
  
*************** package body Bindgen is
*** 884,900 ****
           Write_Statement_Buffer;
        end if;
  
-       --  Generate assignment of default secondary stack size if set
- 
-       if Sec_Stack_Used and then Default_Sec_Stack_Size /= -1 then
-          WBI ("");
-          Set_String ("      System.Secondary_Stack.");
-          Set_String ("Default_Secondary_Stack_Size := ");
-          Set_Int (Opt.Default_Sec_Stack_Size);
-          Set_Char (';');
-          Write_Statement_Buffer;
-       end if;
- 
        --  Initialize stack limit variable of the environment task if the stack
        --  check method is stack limit and stack check is enabled.
  
--- 1044,1049 ----
*************** package body Bindgen is
*** 1117,1125 ****
              then
                 --  In the case of a body with a separate spec, where the
                 --  separate spec has an elaboration entity defined, this is
!                --  where we increment the elaboration entity if one exists
  
!                if U.Utype = Is_Body
                   and then Units.Table (Unum_Spec).Set_Elab_Entity
                   and then not CodePeer_Mode
                 then
--- 1266,1278 ----
              then
                 --  In the case of a body with a separate spec, where the
                 --  separate spec has an elaboration entity defined, this is
!                --  where we increment the elaboration entity if one exists.
  
!                --  Likewise for lone specs with an elaboration entity defined
!                --  despite No_Elaboration_Code, e.g. when requested to preserve
!                --  control flow.
! 
!                if (U.Utype = Is_Body or else U.Utype = Is_Spec_Only)
                   and then Units.Table (Unum_Spec).Set_Elab_Entity
                   and then not CodePeer_Mode
                 then
*************** package body Bindgen is
*** 1275,1280 ****
--- 1428,1434 ----
                  (No_Run_Time_Mode
                    and then Is_Predefined_File_Name (U.Sfile))
              then
+                Get_Name_String (U.Sfile);
                 Set_String ("   ");
                 Set_String ("E");
                 Set_Unit_Number (Unum);
*************** package body Bindgen is
*** 1298,1303 ****
--- 1452,1458 ----
  
     procedure Gen_Elab_Order (Elab_Order : Unit_Id_Array) is
     begin
+       WBI ("");
        WBI ("   --  BEGIN ELABORATION ORDER");
  
        for J in Elab_Order'Range loop
*************** package body Bindgen is
*** 1308,1314 ****
        end loop;
  
        WBI ("   --  END ELABORATION ORDER");
-       WBI ("");
     end Gen_Elab_Order;
  
     --------------------------
--- 1463,1468 ----
*************** package body Bindgen is
*** 2035,2040 ****
--- 2189,2214 ----
           end if;
        end loop;
  
+       --  Count the number of statically allocated stacks to be generated by
+       --  the binder. If the user has specified the number of default-sized
+       --  secondary stacks, use that number. Otherwise start the count at one
+       --  as the binder is responsible for creating a secondary stack for the
+       --  main task.
+ 
+       if Opt.Quantity_Of_Default_Size_Sec_Stacks /= -1 then
+          Num_Sec_Stacks := Quantity_Of_Default_Size_Sec_Stacks;
+       elsif Sec_Stack_Used then
+          Num_Sec_Stacks := 1;
+       end if;
+ 
+       for J in Units.First .. Units.Last loop
+          Num_Primary_Stacks :=
+            Num_Primary_Stacks + Units.Table (J).Primary_Stack_Count;
+ 
+          Num_Sec_Stacks :=
+            Num_Sec_Stacks + Units.Table (J).Sec_Stack_Count;
+       end loop;
+ 
        --  Generate output file in appropriate language
  
        Gen_Output_File_Ada (Filename, Elab_Order);
*************** package body Bindgen is
*** 2072,2079 ****
        --  handle use of Ada 2005 keywords as identifiers in Ada 95 mode. None
        --  of the Ada 2005 or Ada 2012 constructs are needed by the binder file.
  
-       WBI ("pragma Ada_95;");
        WBI ("pragma Warnings (Off);");
  
        --  If we are operating in Restrictions (No_Exception_Handlers) mode,
        --  then we need to make sure that the binder program is compiled with
--- 2246,2253 ----
        --  handle use of Ada 2005 keywords as identifiers in Ada 95 mode. None
        --  of the Ada 2005 or Ada 2012 constructs are needed by the binder file.
  
        WBI ("pragma Warnings (Off);");
+       WBI ("pragma Ada_95;");
  
        --  If we are operating in Restrictions (No_Exception_Handlers) mode,
        --  then we need to make sure that the binder program is compiled with
*************** package body Bindgen is
*** 2105,2113 ****
           WBI ("with System.Scalar_Values;");
        end if;
  
!       --  Generate with of System.Secondary_Stack if active
  
!       if Sec_Stack_Used and then Default_Sec_Stack_Size /= -1 then
           WBI ("with System.Secondary_Stack;");
        end if;
  
--- 2279,2289 ----
           WBI ("with System.Scalar_Values;");
        end if;
  
!       --  Generate withs of System.Secondary_Stack and System.Parameters to
!       --  allow the generation of the default-sized secondary stack pool.
  
!       if Sec_Stack_Used then
!          WBI ("with System.Parameters;");
           WBI ("with System.Secondary_Stack;");
        end if;
  
*************** package body Bindgen is
*** 2147,2156 ****
              end if;
           end if;
  
!          --  Define exit status. Again in normal mode, this is in the
!          --  run-time library, and is initialized there, but in the
!          --  configurable runtime case, the variable is declared and
!          --  initialized in this file.
  
           WBI ("");
  
--- 2323,2332 ----
              end if;
           end if;
  
!          --  Define exit status. Again in normal mode, this is in the run-time
!          --  library, and is initialized there, but in the configurable
!          --  run-time case, the variable is declared and initialized in this
!          --  file.
  
           WBI ("");
  
*************** package body Bindgen is
*** 2254,2260 ****
             Get_Main_Name & """);");
        end if;
  
!       Gen_Versions;
        Gen_Elab_Order (Elab_Order);
  
        --  Spec is complete
--- 2430,2445 ----
             Get_Main_Name & """);");
        end if;
  
!       --  Generate version numbers for units, only if needed. Be very safe on
!       --  the condition.
! 
!       if not Configurable_Run_Time_On_Target
!         or else System_Version_Control_Used
!         or else not Bind_Main_Program
!       then
!          Gen_Versions;
!       end if;
! 
        Gen_Elab_Order (Elab_Order);
  
        --  Spec is complete
*************** package body Bindgen is
*** 2271,2278 ****
        --  handle use of Ada 2005 keywords as identifiers in Ada 95 mode. None
        --  of the Ada 2005/2012 constructs are needed by the binder file.
  
-       WBI ("pragma Ada_95;");
        WBI ("pragma Warnings (Off);");
  
        --  Output Source_File_Name pragmas which look like
  
--- 2456,2463 ----
        --  handle use of Ada 2005 keywords as identifiers in Ada 95 mode. None
        --  of the Ada 2005/2012 constructs are needed by the binder file.
  
        WBI ("pragma Warnings (Off);");
+       WBI ("pragma Ada_95;");
  
        --  Output Source_File_Name pragmas which look like
  
*************** package body Bindgen is
*** 2340,2345 ****
--- 2525,2553 ----
  
        Gen_Elab_Externals (Elab_Order);
  
+       --  Generate default-sized secondary stacks pool. At least one stack is
+       --  created and assigned to the environment task if secondary stacks are
+       --  used by the program.
+ 
+       if Sec_Stack_Used then
+          Set_String ("   Sec_Default_Sized_Stacks");
+          Set_String (" : array (1 .. ");
+          Set_Int (Num_Sec_Stacks);
+          Set_String (") of aliased System.Secondary_Stack.SS_Stack (");
+ 
+          if Opt.Default_Sec_Stack_Size /= No_Stack_Size then
+             Set_Int (Opt.Default_Sec_Stack_Size);
+          else
+             Set_String ("System.Parameters.Runtime_Default_Sec_Stack_Size");
+          end if;
+ 
+          Set_String (");");
+          Write_Statement_Buffer;
+          WBI ("");
+       end if;
+ 
+       --  Generate reference
+ 
        if not CodePeer_Mode then
           if not Suppress_Standard_Library_On_Target then
  
*************** package body Bindgen is
*** 2371,2378 ****
  
           if not Suppress_Standard_Library_On_Target then
  
!             --  The B.1(39) implementation advice says that the adainit
!             --  and adafinal routines should be idempotent. Generate a flag to
              --  ensure that. This is not needed if we are suppressing the
              --  standard library since it would never be referenced.
  
--- 2579,2586 ----
  
           if not Suppress_Standard_Library_On_Target then
  
!             --  The B.1(39) implementation advice says that the adainit and
!             --  adafinal routines should be idempotent. Generate a flag to
              --  ensure that. This is not needed if we are suppressing the
              --  standard library since it would never be referenced.
  
*************** package body Bindgen is
*** 2712,2718 ****
        --  every file, then we could use the encoding of the initial specified
        --  file, but this information is passed only for potential main
        --  programs. We could fix this sometime, but it is a very minor point
!       --  (wide character default encoding for [Wide_[Wide_]Text_IO when there
        --  is no main program).
  
        elsif No_Main_Subprogram then
--- 2920,2926 ----
        --  every file, then we could use the encoding of the initial specified
        --  file, but this information is passed only for potential main
        --  programs. We could fix this sometime, but it is a very minor point
!       --  (wide character default encoding for [Wide_[Wide_]]Text_IO when there
        --  is no main program).
  
        elsif No_Main_Subprogram then
*************** package body Bindgen is
*** 2855,2865 ****
--- 3063,3083 ----
  
           Check_Package (System_Restrictions_Used, "system.restrictions%s");
  
+          --  Ditto for the use of System.Secondary_Stack
+ 
+          Check_Package
+            (System_Secondary_Stack_Used, "system.secondary_stack%s");
+ 
           --  Ditto for use of an SMP bareboard runtime
  
           Check_Package (System_BB_CPU_Primitives_Multiprocessors_Used,
                          "system.bb.cpu_primitives.multiprocessors%s");
  
+          --  Ditto for System.Version_Control, which is used for Version and
+          --  Body_Version attributes.
+ 
+          Check_Package (System_Version_Control_Used,
+                         "system.version_control%s");
        end loop;
     end Resolve_Binder_Options;
  
diff -Nrcpad gcc-7.3.0/gcc/ada/bindgen.ads gcc-8.1.0/gcc/ada/bindgen.ads
*** gcc-7.3.0/gcc/ada/bindgen.ads	Fri Jan 13 10:54:43 2017
--- gcc-8.1.0/gcc/ada/bindgen.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/bindusg.adb gcc-8.1.0/gcc/ada/bindusg.adb
*** gcc-7.3.0/gcc/ada/bindusg.adb	Fri Jan 13 10:05:22 2017
--- gcc-8.1.0/gcc/ada/bindusg.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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
*** 60,195 ****
  
        --  Line for @response_file
  
!       Write_Line ("  @<resp_file> Get arguments from response file");
        Write_Eol;
  
        --  Line for -aO switch
  
!       Write_Line ("  -aOdir    Specify library files search path");
  
        --  Line for -aI switch
  
!       Write_Line ("  -aIdir    Specify source files search path");
  
        --  Line for a switch
  
!       Write_Line ("  -a        Automatically initialize elaboration " &
!                   "procedure");
  
        --  Lines for -A switch
  
!       Write_Line ("  -A        Give list of ALI files in partition");
!       Write_Line ("  -A=file   Write ALI file list to named file");
  
        --  Line for -b switch
  
!       Write_Line ("  -b        Generate brief messages to stderr " &
!                   "even if verbose mode set");
  
        --  Line for -c switch
  
!       Write_Line ("  -c        Check only, no generation of " &
!                   "binder output file");
  
        --  Line for -d switch
  
!       Write_Line ("  -dnn[k|m] Default primary stack " &
!                   "size = nn [kilo|mega] bytes");
  
        --  Line for D switch
  
!       Write_Line ("  -Dnn[k|m] Default secondary stack " &
!                   "size = nn [kilo|mega] bytes");
  
        --  Line for -e switch
  
!       Write_Line ("  -e        Output complete list of elaboration " &
!                   "order dependencies");
  
        --  Line for -E switch
  
!       Write_Line ("  -Ea       Store tracebacks in exception occurrences");
!       Write_Line ("  -Es       Store tracebacks in exception occurrences,");
!       Write_Line ("            and enable symbolic tracebacks");
!       Write_Line ("  -E        Same as -Ea");
  
        --  Line for -f switch
  
!       Write_Line ("  -ffile    Force elaboration order from given file");
  
        --  Line for -F switch
  
!       Write_Line ("  -F        Force checking of elaboration Flags");
  
        --  Line for -h switch
  
!       Write_Line ("  -h        Output this usage (help) information");
  
        --  Lines for -I switch
  
!       Write_Line ("  -Idir     Specify library and source files search path");
!       Write_Line ("  -I-       Don't look for sources & library files " &
!                   "in default directory");
  
        --  Line for -K switch
  
!       Write_Line ("  -K        Give list of linker options specified " &
!                   "for link");
  
        --  Line for -l switch
  
!       Write_Line ("  -l        Output chosen elaboration order");
  
        --  Line of -L switch
  
!       Write_Line ("  -Lxyz     Library build: adainit/final " &
!                   "renamed to xyzinit/final, implies -n");
  
        --  Line for -m switch
  
!       Write_Line ("  -mnnn     Limit number of detected errors/warnings " &
!                   "to nnn (1-999999)");
  
        --  Line for -M switch
  
!       Write_Line ("  -Mxyz     Rename generated main program from " &
!                   "main to xyz");
  
        --  Line for -n switch
  
!       Write_Line ("  -n        No Ada main program (foreign main routine)");
  
        --  Line for -nostdinc
  
!       Write_Line ("  -nostdinc Don't look for source files " &
!                   "in the system default directory");
  
        --  Line for -nostdlib
  
!       Write_Line ("  -nostdlib Don't look for library files " &
!                   "in the system default directory");
  
        --  Line for -o switch
  
!       Write_Line ("  -o file   Give the output file name " &
!                   "(default is b~xxx.adb)");
  
        --  Line for -O switch
  
!       Write_Line ("  -O        Give list of objects required for link");
  
        --  Line for -p switch
  
!       Write_Line ("  -p        Pessimistic (worst-case) elaboration order");
  
        --  Line for -P switch
  
!       Write_Line ("  -P        Generate binder file suitable for CodePeer");
  
        --  Line for -r switch
  
!       Write_Line ("  -r        List restrictions that could be applied " &
!                   "to this partition");
  
        --  Line for -R switch
  
--- 60,225 ----
  
        --  Line for @response_file
  
!       Write_Line
!         ("  @<resp_file> Get arguments from response file");
        Write_Eol;
  
        --  Line for -aO switch
  
!       Write_Line
!         ("  -aOdir    Specify library files search path");
  
        --  Line for -aI switch
  
!       Write_Line
!         ("  -aIdir    Specify source files search path");
  
        --  Line for a switch
  
!       Write_Line
!         ("  -a        Automatically initialize elaboration procedure");
  
        --  Lines for -A switch
  
!       Write_Line
!         ("  -A        Give list of ALI files in partition");
!       Write_Line
!         ("  -A=file   Write ALI file list to named file");
  
        --  Line for -b switch
  
!       Write_Line
!         ("  -b        Generate brief messages to stderr even if verbose mode "
!          & "set");
  
        --  Line for -c switch
  
!       Write_Line
!         ("  -c        Check only, no generation of binder output file");
  
        --  Line for -d switch
  
!       Write_Line
!         ("  -dnn[k|m] Default primary stack size = nn [kilo|mega] bytes");
  
        --  Line for D switch
  
!       Write_Line
!         ("  -Dnn[k|m] Default secondary stack size = nn [kilo|mega] bytes");
  
        --  Line for -e switch
  
!       Write_Line
!         ("  -e        Output complete list of elaboration order dependencies");
  
        --  Line for -E switch
  
!       Write_Line
!         ("  -Ea       Store tracebacks in exception occurrences");
!       Write_Line
!         ("  -Es       Store tracebacks in exception occurrences,");
!       Write_Line
!         ("            and enable symbolic tracebacks");
!       Write_Line
!         ("  -E        Same as -Ea");
  
        --  Line for -f switch
  
!       Write_Line
!         ("  -ffile    Force elaboration order from given file");
  
        --  Line for -F switch
  
!       Write_Line
!         ("  -F        Force checking of elaboration Flags");
  
        --  Line for -h switch
  
!       Write_Line
!         ("  -h        Output this usage (help) information");
  
        --  Lines for -I switch
  
!       Write_Line
!         ("  -Idir     Specify library and source files search path");
!       Write_Line
!         ("  -I-       Don't look for sources & library files in default "
!          & "directory");
  
        --  Line for -K switch
  
!       Write_Line
!         ("  -K        Give list of linker options specified for link");
  
        --  Line for -l switch
  
!       Write_Line
!         ("  -l        Output chosen elaboration order");
  
        --  Line of -L switch
  
!       Write_Line
!         ("  -Lxyz     Library build: adainit/final renamed to xyzinit/final, "
!          & "implies -n");
  
        --  Line for -m switch
  
!       Write_Line
!         ("  -mnnn     Limit number of detected errors/warnings to nnn "
!          & "(1-999999)");
  
        --  Line for -M switch
  
!       Write_Line
!         ("  -Mxyz     Rename generated main program from main to xyz");
  
        --  Line for -n switch
  
!       Write_Line
!         ("  -n        No Ada main program (foreign main routine)");
  
        --  Line for -nostdinc
  
!       Write_Line
!         ("  -nostdinc Don't look for source files in the system default "
!          & "directory");
  
        --  Line for -nostdlib
  
!       Write_Line
!         ("  -nostdlib Don't look for library files in the system default "
!          & "directory");
  
        --  Line for -o switch
  
!       Write_Line
!         ("  -o file   Give the output file name (default is b~xxx.adb)");
  
        --  Line for -O switch
  
!       Write_Line
!         ("  -O        Give list of objects required for link");
  
        --  Line for -p switch
  
!       Write_Line
!         ("  -p        Pessimistic (worst-case) elaboration order");
  
        --  Line for -P switch
  
!       Write_Line
!         ("  -P        Generate binder file suitable for CodePeer");
! 
!       --  Line for Q switch
! 
!       Write_Line
!         ("  -Qnnn     Generate nnn default-sized secondary stacks");
  
        --  Line for -r switch
  
!       Write_Line
!         ("  -r        List restrictions that could be applied to this "
!          & "partition");
  
        --  Line for -R switch
  
*************** package body Bindusg is
*** 198,250 ****
  
        --  Line for -s switch
  
!       Write_Line ("  -s        Require all source files to be present");
  
        --  Line for -S?? switch
  
!       Write_Line ("  -S??      Sin/lo/hi/xx/ev Initialize_Scalars " &
!                   "invalid/low/high/hex/env var");
  
        --  Line for -static
  
!       Write_Line ("  -static   Link against a static GNAT run time");
  
        --  Line for -shared
  
!       Write_Line ("  -shared   Link against a shared GNAT run time");
  
        --  Line for -t switch
  
!       Write_Line ("  -t        Tolerate time stamp and other " &
!                   "consistency errors");
  
        --  Line for -T switch
  
!       Write_Line ("  -Tn       Set time slice value to n " &
!                   "milliseconds (n >= 0)");
  
        --  Line for -u switch
  
!       Write_Line ("  -un       Enable dynamic stack analysis, with " &
!                   "n results stored");
  
        --  Line for -v switch
  
!       Write_Line ("  -v        Verbose mode. Error messages, " &
!                   "header, summary output to stdout");
  
        --  Line for -V switch
  
!       Write_Line ("  -Vkey=val Record bind-time variable key " &
!                   "with value val");
        --  Line for -w switch
  
!       Write_Line ("  -wx       Warning mode. (x=s/e for " &
!                   "suppress/treat as error)");
  
        --  Line for -W switch
  
!       Write_Str  ("  -W?       Wide character encoding method (");
  
        for J in WC_Encoding_Method loop
           Write_Char (WC_Encoding_Letters (J));
--- 228,286 ----
  
        --  Line for -s switch
  
!       Write_Line
!         ("  -s        Require all source files to be present");
  
        --  Line for -S?? switch
  
!       Write_Line
!         ("  -S??      Sin/lo/hi/xx/ev Initialize_Scalars "
!          & "invalid/low/high/hex/env var");
  
        --  Line for -static
  
!       Write_Line
!         ("  -static   Link against a static GNAT run time");
  
        --  Line for -shared
  
!       Write_Line
!         ("  -shared   Link against a shared GNAT run time");
  
        --  Line for -t switch
  
!       Write_Line
!         ("  -t        Tolerate time stamp and other consistency errors");
  
        --  Line for -T switch
  
!       Write_Line
!         ("  -Tn       Set time slice value to n milliseconds (n >= 0)");
  
        --  Line for -u switch
  
!       Write_Line
!         ("  -un       Enable dynamic stack analysis, with n results stored");
  
        --  Line for -v switch
  
!       Write_Line
!         ("  -v        Verbose mode. Error messages, header, summary output to "
!          & "stdout");
  
        --  Line for -V switch
  
!       Write_Line
!         ("  -Vkey=val Record bind-time variable key with value val");
        --  Line for -w switch
  
!       Write_Line
!         ("  -wx       Warning mode. (x=s/e for suppress/treat as error)");
  
        --  Line for -W switch
  
!       Write_Str
!         ("  -W?       Wide character encoding method (");
  
        for J in WC_Encoding_Method loop
           Write_Char (WC_Encoding_Letters (J));
*************** package body Bindusg is
*** 260,295 ****
  
        --  Line for -x switch
  
!       Write_Line ("  -x        Exclude source files (check object " &
!                   "consistency only)");
  
        --  Line for -X switch
  
!       Write_Line ("  -Xnnn     Default exit status value = nnn");
  
        --  Line for -y switch
  
!       Write_Line ("  -y        Enable leap seconds");
  
        --  Line for -z switch
  
!       Write_Line ("  -z        No main subprogram (zero main)");
! 
!       --  Line for --RTS
  
        --  Line for -Z switch
  
!       Write_Line ("  -Z        " &
!                   "Zero formatting in auxiliary outputs (-e, -K, -l, -R)");
  
        --  Line for --RTS
  
!       Write_Line ("  --RTS=dir Specify the default source and " &
!                   "object search path");
  
        --  Line for sfile
  
!       Write_Line ("  lfile     Library file names");
     end Display;
  
  end Bindusg;
--- 296,333 ----
  
        --  Line for -x switch
  
!       Write_Line
!         ("  -x        Exclude source files (check object consistency only)");
  
        --  Line for -X switch
  
!       Write_Line
!         ("  -Xnnn     Default exit status value = nnn");
  
        --  Line for -y switch
  
!       Write_Line
!         ("  -y        Enable leap seconds");
  
        --  Line for -z switch
  
!       Write_Line
!         ("  -z        No main subprogram (zero main)");
  
        --  Line for -Z switch
  
!       Write_Line
!         ("  -Z        Zero formatting in auxiliary outputs (-e, -K, -l, -R)");
  
        --  Line for --RTS
  
!       Write_Line
!         ("  --RTS=dir Specify the default source and object search path");
  
        --  Line for sfile
  
!       Write_Line
!         ("  lfile     Library file names");
     end Display;
  
  end Bindusg;
diff -Nrcpad gcc-7.3.0/gcc/ada/bindusg.ads gcc-8.1.0/gcc/ada/bindusg.ads
*** gcc-7.3.0/gcc/ada/bindusg.ads	Mon Sep 10 12:47:10 2007
--- gcc-8.1.0/gcc/ada/bindusg.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2007, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/butil.adb gcc-8.1.0/gcc/ada/butil.adb
*** gcc-7.3.0/gcc/ada/butil.adb	Fri Aug  1 08:17:20 2014
--- gcc-8.1.0/gcc/ada/butil.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/butil.ads gcc-8.1.0/gcc/ada/butil.ads
*** gcc-7.3.0/gcc/ada/butil.ads	Fri Oct 10 14:36:07 2014
--- gcc-8.1.0/gcc/ada/butil.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/cal.c gcc-8.1.0/gcc/ada/cal.c
*** gcc-7.3.0/gcc/ada/cal.c	Mon Aug  4 13:16:24 2014
--- gcc-8.1.0/gcc/ada/cal.c	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2014, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  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-2018, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is 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 ****
   *                                                                          *
   ****************************************************************************/
  
! /*  This file contains those routines named by Import pragmas in package    */
  /*  GNAT.Calendar. It is used to do Duration to timeval conversion.         */
! /*  These are simple wrappers function to abstract the fact that the C      */
! /*  struct timeval fields type are not normalized (they are generally       */
  /*  defined as int or long values).                                         */
  
  #if defined (__vxworks)
--- 29,38 ----
   *                                                                          *
   ****************************************************************************/
  
! /*  This file contains routines marked with pragmas Import in package       */
  /*  GNAT.Calendar. It is used to do Duration to timeval conversion.         */
! /*  These are simple wrapper functions to abstract the fact that the C      */
! /*  struct timeval fields are not normalized (they are generally            */
  /*  defined as int or long values).                                         */
  
  #if defined (__vxworks)
diff -Nrcpad gcc-7.3.0/gcc/ada/calendar.ads gcc-8.1.0/gcc/ada/calendar.ads
*** gcc-7.3.0/gcc/ada/calendar.ads	Fri Apr  6 09:13:42 2007
--- gcc-8.1.0/gcc/ada/calendar.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,18 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                             C A L E N D A R                              --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Calendar;
- 
- package Calendar renames Ada.Calendar;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/casing.adb gcc-8.1.0/gcc/ada/casing.adb
*** gcc-7.3.0/gcc/ada/casing.adb	Mon Apr 18 10:53:32 2016
--- gcc-8.1.0/gcc/ada/casing.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/casing.ads gcc-8.1.0/gcc/ada/casing.ads
*** gcc-7.3.0/gcc/ada/casing.ads	Mon Apr 18 10:53:32 2016
--- gcc-8.1.0/gcc/ada/casing.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/ceinfo.adb gcc-8.1.0/gcc/ada/ceinfo.adb
*** gcc-7.3.0/gcc/ada/ceinfo.adb	Wed May 21 10:48:37 2014
--- gcc-8.1.0/gcc/ada/ceinfo.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1998-2014, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or 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-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/checks.adb gcc-8.1.0/gcc/ada/checks.adb
*** gcc-7.3.0/gcc/ada/checks.adb	Mon Jan 23 13:24:47 2017
--- gcc-8.1.0/gcc/ada/checks.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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;
*** 48,53 ****
--- 48,54 ----
  with Sem_Aux;  use Sem_Aux;
  with Sem_Ch3;  use Sem_Ch3;
  with Sem_Ch8;  use Sem_Ch8;
+ with Sem_Disp; use Sem_Disp;
  with Sem_Eval; use Sem_Eval;
  with Sem_Res;  use Sem_Res;
  with Sem_Util; use Sem_Util;
*************** package body Checks is
*** 489,505 ****
        Static_Sloc  : Source_Ptr;
        Flag_Node    : Node_Id)
     is
        Internal_Flag_Node   : constant Node_Id    := Flag_Node;
        Internal_Static_Sloc : constant Source_Ptr := Static_Sloc;
  
-       Checks_On : constant Boolean :=
-         (not Index_Checks_Suppressed (Suppress_Typ))
-          or else (not Range_Checks_Suppressed (Suppress_Typ));
- 
     begin
!       --  For now we just return if Checks_On is false, however this should
!       --  be enhanced to check for an always True value in the condition
!       --  and to generate a compilation warning???
  
        if not Checks_On then
           return;
--- 490,507 ----
        Static_Sloc  : Source_Ptr;
        Flag_Node    : Node_Id)
     is
+       Checks_On : constant Boolean :=
+                     not Index_Checks_Suppressed (Suppress_Typ)
+                       or else
+                     not Range_Checks_Suppressed (Suppress_Typ);
+ 
        Internal_Flag_Node   : constant Node_Id    := Flag_Node;
        Internal_Static_Sloc : constant Source_Ptr := Static_Sloc;
  
     begin
!       --  For now we just return if Checks_On is false, however this should be
!       --  enhanced to check for an always True value in the condition and to
!       --  generate a compilation warning???
  
        if not Checks_On then
           return;
*************** package body Checks is
*** 1353,1360 ****
  
              Apply_Range_Check (N, Typ);
  
           elsif Has_Discriminants (Base_Type (Desig_Typ))
!             and then Is_Constrained (Desig_Typ)
           then
              Apply_Discriminant_Check (N, Typ);
           end if;
--- 1355,1367 ----
  
              Apply_Range_Check (N, Typ);
  
+          --  Do not install a discriminant check for a constrained subtype
+          --  created for an unconstrained nominal type because the subtype
+          --  has the correct constraints by construction.
+ 
           elsif Has_Discriminants (Base_Type (Desig_Typ))
!            and then Is_Constrained (Desig_Typ)
!            and then not Is_Constr_Subt_For_U_Nominal (Desig_Typ)
           then
              Apply_Discriminant_Check (N, Typ);
           end if;
*************** package body Checks is
*** 1811,1816 ****
--- 1818,1830 ----
                       and then
                    ((not LOK) or else (Llo = LLB))
                 then
+                   --  Ensure that expressions are not evaluated twice (once
+                   --  for their runtime checks and once for their regular
+                   --  computation).
+ 
+                   Force_Evaluation (Left, Mode => Strict);
+                   Force_Evaluation (Right, Mode => Strict);
+ 
                    Insert_Action (N,
                      Make_Raise_Constraint_Error (Loc,
                        Condition =>
*************** package body Checks is
*** 2697,2702 ****
--- 2711,2730 ----
              --  it. We disable checks during its analysis, to prevent an
              --  infinite recursion.
  
+             --  If the prefix is an aggregate in an assignment, apply the
+             --  check to the LHS after assignment, rather than create a
+             --  redundant temporary. This is only necessary in rare cases
+             --  of array types (including strings) initialized with an
+             --  aggregate with an "others" clause, either coming from source
+             --  or generated by an Initialize_Scalars pragma.
+ 
+             elsif Nkind (N) = N_Aggregate
+               and then Nkind (Parent (N)) = N_Assignment_Statement
+             then
+                Insert_Action_After (Parent (N),
+                  Make_Predicate_Check
+                    (Typ, Duplicate_Subexpr (Name (Parent (N)))));
+ 
              else
                 Insert_Action (N,
                   Make_Predicate_Check
*************** package body Checks is
*** 2737,2743 ****
        S_Typ   : Entity_Id;
        Arr     : Node_Id   := Empty;  -- initialize to prevent warning
        Arr_Typ : Entity_Id := Empty;  -- initialize to prevent warning
-       OK      : Boolean;
  
        Is_Subscr_Ref : Boolean;
        --  Set true if Expr is a subscript
--- 2765,2770 ----
*************** package body Checks is
*** 2943,2975 ****
  
        --  The additional less-precise tests below catch these cases
  
        --  Note: skip this if we are given a source_typ, since the point of
        --  supplying a Source_Typ is to stop us looking at the expression.
        --  We could sharpen this test to be out parameters only ???
  
        if Is_Discrete_Type (Target_Typ)
!         and then Is_Discrete_Type (Etype (Expr))
          and then not Is_Unconstrained_Subscr_Ref
          and then No (Source_Typ)
        then
           declare
-             Tlo : constant Node_Id := Type_Low_Bound  (Target_Typ);
              Thi : constant Node_Id := Type_High_Bound (Target_Typ);
!             Lo  : Uint;
!             Hi  : Uint;
  
           begin
              if Compile_Time_Known_Value (Tlo)
                and then Compile_Time_Known_Value (Thi)
              then
                 declare
!                   Lov : constant Uint := Expr_Value (Tlo);
                    Hiv : constant Uint := Expr_Value (Thi);
  
                 begin
!                   --  If range is null, we for sure have a constraint error
!                   --  (we don't even need to look at the value involved,
!                   --  since all possible values will raise CE).
  
                    if Lov > Hiv then
  
--- 2970,3009 ----
  
        --  The additional less-precise tests below catch these cases
  
+       --  In GNATprove_Mode, also deal with the case of a conversion from
+       --  floating-point to integer. It is only possible because analysis
+       --  in GNATprove rules out the possibility of a NaN or infinite value.
+ 
        --  Note: skip this if we are given a source_typ, since the point of
        --  supplying a Source_Typ is to stop us looking at the expression.
        --  We could sharpen this test to be out parameters only ???
  
        if Is_Discrete_Type (Target_Typ)
!         and then (Is_Discrete_Type (Etype (Expr))
!                    or else (GNATprove_Mode
!                              and then Is_Floating_Point_Type (Etype (Expr))))
          and then not Is_Unconstrained_Subscr_Ref
          and then No (Source_Typ)
        then
           declare
              Thi : constant Node_Id := Type_High_Bound (Target_Typ);
!             Tlo : constant Node_Id := Type_Low_Bound  (Target_Typ);
  
           begin
              if Compile_Time_Known_Value (Tlo)
                and then Compile_Time_Known_Value (Thi)
              then
                 declare
!                   OK  : Boolean := False;  -- initialize to prevent warning
                    Hiv : constant Uint := Expr_Value (Thi);
+                   Lov : constant Uint := Expr_Value (Tlo);
+                   Hi  : Uint := No_Uint;
+                   Lo  : Uint := No_Uint;
  
                 begin
!                   --  If range is null, we for sure have a constraint error (we
!                   --  don't even need to look at the value involved, since all
!                   --  possible values will raise CE).
  
                    if Lov > Hiv then
  
*************** package body Checks is
*** 2991,2997 ****
  
                    --  Otherwise determine range of value
  
!                   Determine_Range (Expr, OK, Lo, Hi, Assume_Valid => True);
  
                    if OK then
  
--- 3025,3059 ----
  
                    --  Otherwise determine range of value
  
!                   if Is_Discrete_Type (Etype (Expr)) then
!                      Determine_Range
!                        (Expr, OK, Lo, Hi, Assume_Valid => True);
! 
!                   --  When converting a float to an integer type, determine the
!                   --  range in real first, and then convert the bounds using
!                   --  UR_To_Uint which correctly rounds away from zero when
!                   --  half way between two integers, as required by normal
!                   --  Ada 95 rounding semantics. It is only possible because
!                   --  analysis in GNATprove rules out the possibility of a NaN
!                   --  or infinite value.
! 
!                   elsif GNATprove_Mode
!                     and then Is_Floating_Point_Type (Etype (Expr))
!                   then
!                      declare
!                         Hir : Ureal;
!                         Lor : Ureal;
! 
!                      begin
!                         Determine_Range_R
!                           (Expr, OK, Lor, Hir, Assume_Valid => True);
! 
!                         if OK then
!                            Lo := UR_To_Uint (Lor);
!                            Hi := UR_To_Uint (Hir);
!                         end if;
!                      end;
!                   end if;
  
                    if OK then
  
*************** package body Checks is
*** 3082,3095 ****
        Source_Typ : Entity_Id;
        Do_Static  : Boolean)
     is
        Cond     : Node_Id;
-       R_Result : Check_Result;
        R_Cno    : Node_Id;
! 
!       Loc         : constant Source_Ptr := Sloc (Ck_Node);
!       Checks_On   : constant Boolean :=
!         (not Index_Checks_Suppressed (Target_Typ))
!           or else (not Length_Checks_Suppressed (Target_Typ));
  
     begin
        --  Only apply checks when generating code
--- 3144,3159 ----
        Source_Typ : Entity_Id;
        Do_Static  : Boolean)
     is
+       Checks_On : constant Boolean :=
+                     not Index_Checks_Suppressed (Target_Typ)
+                       or else
+                     not Length_Checks_Suppressed (Target_Typ);
+ 
+       Loc : constant Source_Ptr := Sloc (Ck_Node);
+ 
        Cond     : Node_Id;
        R_Cno    : Node_Id;
!       R_Result : Check_Result;
  
     begin
        --  Only apply checks when generating code
*************** package body Checks is
*** 3194,3205 ****
        Source_Typ : Entity_Id;
        Do_Static  : Boolean)
     is
-       Loc       : constant Source_Ptr := Sloc (Ck_Node);
        Checks_On : constant Boolean :=
                      not Index_Checks_Suppressed (Target_Typ)
                        or else
                      not Range_Checks_Suppressed (Target_Typ);
  
        Cond     : Node_Id;
        R_Cno    : Node_Id;
        R_Result : Check_Result;
--- 3258,3270 ----
        Source_Typ : Entity_Id;
        Do_Static  : Boolean)
     is
        Checks_On : constant Boolean :=
                      not Index_Checks_Suppressed (Target_Typ)
                        or else
                      not Range_Checks_Suppressed (Target_Typ);
  
+       Loc : constant Source_Ptr := Sloc (Ck_Node);
+ 
        Cond     : Node_Id;
        R_Cno    : Node_Id;
        R_Result : Check_Result;
*************** package body Checks is
*** 3449,3455 ****
              if not Range_Checks_Suppressed (Target_Type)
                and then not Range_Checks_Suppressed (Expr_Type)
              then
!                if Float_To_Int then
                    Apply_Float_Conversion_Check (Expr, Target_Type);
                 else
                    Apply_Scalar_Range_Check
--- 3514,3522 ----
              if not Range_Checks_Suppressed (Target_Type)
                and then not Range_Checks_Suppressed (Expr_Type)
              then
!                if Float_To_Int
!                  and then not GNATprove_Mode
!                then
                    Apply_Float_Conversion_Check (Expr, Target_Type);
                 else
                    Apply_Scalar_Range_Check
*************** package body Checks is
*** 3996,4041 ****
     -- Null_Exclusion_Static_Checks --
     ----------------------------------
  
!    procedure Null_Exclusion_Static_Checks (N : Node_Id) is
!       Error_Node : Node_Id;
!       Expr       : Node_Id;
!       Has_Null   : constant Boolean := Has_Null_Exclusion (N);
!       K          : constant Node_Kind := Nkind (N);
!       Typ        : Entity_Id;
  
     begin
        pragma Assert
!         (Nkind_In (K, N_Component_Declaration,
!                       N_Discriminant_Specification,
!                       N_Function_Specification,
!                       N_Object_Declaration,
!                       N_Parameter_Specification));
  
!       if K = N_Function_Specification then
           Typ := Etype (Defining_Entity (N));
        else
           Typ := Etype (Defining_Identifier (N));
        end if;
  
!       case K is
           when N_Component_Declaration =>
              if Present (Access_Definition (Component_Definition (N))) then
!                Error_Node := Component_Definition (N);
              else
!                Error_Node := Subtype_Indication (Component_Definition (N));
              end if;
  
           when N_Discriminant_Specification =>
!             Error_Node    := Discriminant_Type (N);
  
           when N_Function_Specification =>
!             Error_Node    := Result_Definition (N);
  
           when N_Object_Declaration =>
!             Error_Node    := Object_Definition (N);
  
           when N_Parameter_Specification =>
!             Error_Node    := Parameter_Type (N);
  
           when others =>
              raise Program_Error;
--- 4063,4112 ----
     -- Null_Exclusion_Static_Checks --
     ----------------------------------
  
!    procedure Null_Exclusion_Static_Checks
!      (N          : Node_Id;
!       Comp       : Node_Id := Empty;
!       Array_Comp : Boolean := False)
!    is
!       Has_Null  : constant Boolean   := Has_Null_Exclusion (N);
!       Kind      : constant Node_Kind := Nkind (N);
!       Error_Nod : Node_Id;
!       Expr      : Node_Id;
!       Typ       : Entity_Id;
  
     begin
        pragma Assert
!         (Nkind_In (Kind, N_Component_Declaration,
!                          N_Discriminant_Specification,
!                          N_Function_Specification,
!                          N_Object_Declaration,
!                          N_Parameter_Specification));
  
!       if Kind = N_Function_Specification then
           Typ := Etype (Defining_Entity (N));
        else
           Typ := Etype (Defining_Identifier (N));
        end if;
  
!       case Kind is
           when N_Component_Declaration =>
              if Present (Access_Definition (Component_Definition (N))) then
!                Error_Nod := Component_Definition (N);
              else
!                Error_Nod := Subtype_Indication (Component_Definition (N));
              end if;
  
           when N_Discriminant_Specification =>
!             Error_Nod := Discriminant_Type (N);
  
           when N_Function_Specification =>
!             Error_Nod := Result_Definition (N);
  
           when N_Object_Declaration =>
!             Error_Nod := Object_Definition (N);
  
           when N_Parameter_Specification =>
!             Error_Nod := Parameter_Type (N);
  
           when others =>
              raise Program_Error;
*************** package body Checks is
*** 4048,4064 ****
  
           if not Is_Access_Type (Typ) then
              Error_Msg_N
!               ("`NOT NULL` allowed only for an access type", Error_Node);
  
           --  Enforce legality rule RM 3.10(14/1): A null exclusion can only
           --  be applied to a [sub]type that does not exclude null already.
  
!          elsif Can_Never_Be_Null (Typ)
!            and then Comes_From_Source (Typ)
!          then
              Error_Msg_NE
                ("`NOT NULL` not allowed (& already excludes null)",
!                Error_Node, Typ);
           end if;
        end if;
  
--- 4119,4133 ----
  
           if not Is_Access_Type (Typ) then
              Error_Msg_N
!               ("`NOT NULL` allowed only for an access type", Error_Nod);
  
           --  Enforce legality rule RM 3.10(14/1): A null exclusion can only
           --  be applied to a [sub]type that does not exclude null already.
  
!          elsif Can_Never_Be_Null (Typ) and then Comes_From_Source (Typ) then
              Error_Msg_NE
                ("`NOT NULL` not allowed (& already excludes null)",
!                Error_Nod, Typ);
           end if;
        end if;
  
*************** package body Checks is
*** 4066,4099 ****
        --  deferred constants, for which the expression will appear in the full
        --  declaration.
  
!       if K = N_Object_Declaration
          and then No (Expression (N))
          and then not Constant_Present (N)
          and then not No_Initialization (N)
        then
!          --  Add an expression that assigns null. This node is needed by
!          --  Apply_Compile_Time_Constraint_Error, which will replace this with
!          --  a Constraint_Error node.
  
!          Set_Expression (N, Make_Null (Sloc (N)));
!          Set_Etype (Expression (N), Etype (Defining_Identifier (N)));
  
!          Apply_Compile_Time_Constraint_Error
!            (N      => Expression (N),
!             Msg    =>
!               "(Ada 2005) null-excluding objects must be initialized??",
!             Reason => CE_Null_Not_Allowed);
        end if;
  
        --  Check that a null-excluding component, formal or object is not being
        --  assigned a null value. Otherwise generate a warning message and
        --  replace Expression (N) by an N_Constraint_Error node.
  
!       if K /= N_Function_Specification then
           Expr := Expression (N);
  
           if Present (Expr) and then Known_Null (Expr) then
!             case K is
                 when N_Component_Declaration
                    | N_Discriminant_Specification
                 =>
--- 4135,4201 ----
        --  deferred constants, for which the expression will appear in the full
        --  declaration.
  
!       if Kind = N_Object_Declaration
          and then No (Expression (N))
          and then not Constant_Present (N)
          and then not No_Initialization (N)
        then
!          if Present (Comp) then
  
!             --  Specialize the warning message to indicate that we are dealing
!             --  with an uninitialized composite object that has a defaulted
!             --  null-excluding component.
  
!             Error_Msg_Name_1 := Chars (Defining_Identifier (Comp));
!             Error_Msg_Name_2 := Chars (Defining_Identifier (N));
! 
!             Discard_Node
!               (Compile_Time_Constraint_Error
!                  (N      => N,
!                   Msg    =>
!                     "(Ada 2005) null-excluding component % of object % must "
!                     & "be initialized??",
!                   Ent => Defining_Identifier (Comp)));
! 
!          --  This is a case of an array with null-excluding components, so
!          --  indicate that in the warning.
! 
!          elsif Array_Comp then
!             Discard_Node
!               (Compile_Time_Constraint_Error
!                  (N      => N,
!                   Msg    =>
!                     "(Ada 2005) null-excluding array components must "
!                     & "be initialized??",
!                   Ent => Defining_Identifier (N)));
! 
!          --  Normal case of object of a null-excluding access type
! 
!          else
!             --  Add an expression that assigns null. This node is needed by
!             --  Apply_Compile_Time_Constraint_Error, which will replace this
!             --  with a Constraint_Error node.
! 
!             Set_Expression (N, Make_Null (Sloc (N)));
!             Set_Etype (Expression (N), Etype (Defining_Identifier (N)));
! 
!             Apply_Compile_Time_Constraint_Error
!               (N      => Expression (N),
!                Msg    =>
!                  "(Ada 2005) null-excluding objects must be initialized??",
!                Reason => CE_Null_Not_Allowed);
!          end if;
        end if;
  
        --  Check that a null-excluding component, formal or object is not being
        --  assigned a null value. Otherwise generate a warning message and
        --  replace Expression (N) by an N_Constraint_Error node.
  
!       if Kind /= N_Function_Specification then
           Expr := Expression (N);
  
           if Present (Expr) and then Known_Null (Expr) then
!             case Kind is
                 when N_Component_Declaration
                    | N_Discriminant_Specification
                 =>
*************** package body Checks is
*** 4268,4275 ****
        Hi_Left : Uint;
        --  Lo and Hi bounds of left operand
  
!       Lo_Right : Uint;
!       Hi_Right : Uint;
        --  Lo and Hi bounds of right (or only) operand
  
        Bound : Node_Id;
--- 4370,4377 ----
        Hi_Left : Uint;
        --  Lo and Hi bounds of left operand
  
!       Lo_Right : Uint := No_Uint;
!       Hi_Right : Uint := No_Uint;
        --  Lo and Hi bounds of right (or only) operand
  
        Bound : Node_Id;
*************** package body Checks is
*** 4688,4698 ****
  
              end case;
  
-          --  For type conversion from one discrete type to another, we can
-          --  refine the range using the converted value.
- 
           when N_Type_Conversion =>
!             Determine_Range (Expression (N), OK1, Lor, Hir, Assume_Valid);
  
           --  Nothing special to do for all other expression kinds
  
--- 4790,4828 ----
  
              end case;
  
           when N_Type_Conversion =>
! 
!             --  For type conversion from one discrete type to another, we can
!             --  refine the range using the converted value.
! 
!             if Is_Discrete_Type (Etype (Expression (N))) then
!                Determine_Range (Expression (N), OK1, Lor, Hir, Assume_Valid);
! 
!             --  When converting a float to an integer type, determine the range
!             --  in real first, and then convert the bounds using UR_To_Uint
!             --  which correctly rounds away from zero when half way between two
!             --  integers, as required by normal Ada 95 rounding semantics. It
!             --  is only possible because analysis in GNATprove rules out the
!             --  possibility of a NaN or infinite value.
! 
!             elsif GNATprove_Mode
!               and then Is_Floating_Point_Type (Etype (Expression (N)))
!             then
!                declare
!                   Lor_Real, Hir_Real : Ureal;
!                begin
!                   Determine_Range_R (Expression (N), OK1, Lor_Real, Hir_Real,
!                                      Assume_Valid);
! 
!                   if OK1 then
!                      Lor := UR_To_Uint (Lor_Real);
!                      Hir := UR_To_Uint (Hir_Real);
!                   end if;
!                end;
! 
!             else
!                OK1 := False;
!             end if;
  
           --  Nothing special to do for all other expression kinds
  
*************** package body Checks is
*** 4779,4786 ****
        Hi_Left : Ureal;
        --  Lo and Hi bounds of left operand
  
!       Lo_Right : Ureal;
!       Hi_Right : Ureal;
        --  Lo and Hi bounds of right (or only) operand
  
        Bound : Node_Id;
--- 4909,4916 ----
        Hi_Left : Ureal;
        --  Lo and Hi bounds of left operand
  
!       Lo_Right : Ureal := No_Ureal;
!       Hi_Right : Ureal := No_Ureal;
        --  Lo and Hi bounds of right (or only) operand
  
        Bound : Node_Id;
*************** package body Checks is
*** 5048,5053 ****
--- 5178,5184 ----
                    M2 : constant Ureal := Round_Machine (Lo_Left * Hi_Right);
                    M3 : constant Ureal := Round_Machine (Hi_Left * Lo_Right);
                    M4 : constant Ureal := Round_Machine (Hi_Left * Hi_Right);
+ 
                 begin
                    Lor := UR_Min (UR_Min (M1, M2), UR_Min (M3, M4));
                    Hir := UR_Max (UR_Max (M1, M2), UR_Max (M3, M4));
*************** package body Checks is
*** 5119,5129 ****
                 end if;
              end if;
  
-          --  For type conversion from one floating-point type to another, we
-          --  can refine the range using the converted value.
- 
           when N_Type_Conversion =>
!             Determine_Range_R (Expression (N), OK1, Lor, Hir, Assume_Valid);
  
           --  Nothing special to do for all other expression kinds
  
--- 5250,5284 ----
                 end if;
              end if;
  
           when N_Type_Conversion =>
! 
!             --  For type conversion from one floating-point type to another, we
!             --  can refine the range using the converted value.
! 
!             if Is_Floating_Point_Type (Etype (Expression (N))) then
!                Determine_Range_R (Expression (N), OK1, Lor, Hir, Assume_Valid);
! 
!             --  When converting an integer to a floating-point type, determine
!             --  the range in integer first, and then convert the bounds.
! 
!             elsif Is_Discrete_Type (Etype (Expression (N))) then
!                declare
!                   Hir_Int : Uint;
!                   Lor_Int : Uint;
! 
!                begin
!                   Determine_Range
!                     (Expression (N), OK1, Lor_Int, Hir_Int, Assume_Valid);
! 
!                   if OK1 then
!                      Lor := Round_Machine (UR_From_Uint (Lor_Int));
!                      Hir := Round_Machine (UR_From_Uint (Hir_Int));
!                   end if;
!                end;
! 
!             else
!                OK1 := False;
!             end if;
  
           --  Nothing special to do for all other expression kinds
  
*************** package body Checks is
*** 5243,5250 ****
--- 5398,5407 ----
           elsif Checks_May_Be_Suppressed (E) then
              if Is_Check_Suppressed (E, Elaboration_Check) then
                 return True;
+ 
              elsif Dynamic_Elaboration_Checks then
                 return Is_Check_Suppressed (E, All_Checks);
+ 
              else
                 return False;
              end if;
*************** package body Checks is
*** 5253,5260 ****
--- 5410,5419 ----
  
        if Scope_Suppress.Suppress (Elaboration_Check) then
           return True;
+ 
        elsif Dynamic_Elaboration_Checks then
           return Scope_Suppress.Suppress (All_Checks);
+ 
        else
           return False;
        end if;
*************** package body Checks is
*** 5781,5786 ****
--- 5940,5949 ----
        --  In addition, we force a check if Force_Validity_Checks is set
  
        elsif not Comes_From_Source (Expr)
+         and then not
+           (Nkind (Expr) = N_Identifier
+             and then Present (Renamed_Object (Entity (Expr)))
+             and then Comes_From_Source (Renamed_Object (Entity (Expr))))
          and then not Force_Validity_Checks
          and then (Nkind (Expr) /= N_Unchecked_Type_Conversion
                      or else Kill_Range_Check (Expr))
*************** package body Checks is
*** 6649,6656 ****
        --  evaluation is always a potential source of inefficiency, and is
        --  functionally incorrect in the volatile case.
  
!       if not Is_Entity_Name (N) or else Treat_As_Volatile (Entity (N)) then
!          Force_Evaluation (N);
        end if;
  
        --  The easiest case is when Source_Base_Type and Target_Base_Type are
--- 6812,6827 ----
        --  evaluation is always a potential source of inefficiency, and is
        --  functionally incorrect in the volatile case.
  
!       --  We skip the evaluation of attribute references because, after these
!       --  runtime checks are generated, the expander may need to rewrite this
!       --  node (for example, see Attribute_Max_Size_In_Storage_Elements in
!       --  Expand_N_Attribute_Reference).
! 
!       if Nkind (N) /= N_Attribute_Reference
!         and then (not Is_Entity_Name (N)
!                    or else Treat_As_Volatile (Entity (N)))
!       then
!          Force_Evaluation (N, Mode => Strict);
        end if;
  
        --  The easiest case is when Source_Base_Type and Target_Base_Type are
*************** package body Checks is
*** 7066,7079 ****
        Flag_Node    : Node_Id    := Empty;
        Do_Before    : Boolean    := False)
     is
        Internal_Flag_Node   : Node_Id    := Flag_Node;
        Internal_Static_Sloc : Source_Ptr := Static_Sloc;
  
-       Check_Node : Node_Id;
-       Checks_On  : constant Boolean :=
-         (not Index_Checks_Suppressed (Suppress_Typ))
-          or else (not Range_Checks_Suppressed (Suppress_Typ));
- 
     begin
        --  For now we just return if Checks_On is false, however this should be
        --  enhanced to check for an always True value in the condition and to
--- 7237,7251 ----
        Flag_Node    : Node_Id    := Empty;
        Do_Before    : Boolean    := False)
     is
+       Checks_On  : constant Boolean :=
+                      not Index_Checks_Suppressed (Suppress_Typ)
+                        or else
+                      not Range_Checks_Suppressed (Suppress_Typ);
+ 
+       Check_Node           : Node_Id;
        Internal_Flag_Node   : Node_Id    := Flag_Node;
        Internal_Static_Sloc : Source_Ptr := Static_Sloc;
  
     begin
        --  For now we just return if Checks_On is false, however this should be
        --  enhanced to check for an always True value in the condition and to
*************** package body Checks is
*** 7148,7174 ****
          or else Expr_Known_Valid (Expr)
        then
           return;
-       end if;
  
        --  Do not insert checks within a predicate function. This will arise
        --  if the current unit and the predicate function are being compiled
        --  with validity checks enabled.
  
!       if Present (Predicate_Function (Typ))
          and then Current_Scope = Predicate_Function (Typ)
        then
           return;
-       end if;
  
        --  If the expression is a packed component of a modular type of the
        --  right size, the data is always valid.
  
!       if Nkind (Expr) = N_Selected_Component
          and then Present (Component_Clause (Entity (Selector_Name (Expr))))
          and then Is_Modular_Integer_Type (Typ)
          and then Modulus (Typ) = 2 ** Esize (Entity (Selector_Name (Expr)))
        then
           return;
        end if;
  
        --  If we have a checked conversion, then validity check applies to
--- 7320,7350 ----
          or else Expr_Known_Valid (Expr)
        then
           return;
  
        --  Do not insert checks within a predicate function. This will arise
        --  if the current unit and the predicate function are being compiled
        --  with validity checks enabled.
  
!       elsif Present (Predicate_Function (Typ))
          and then Current_Scope = Predicate_Function (Typ)
        then
           return;
  
        --  If the expression is a packed component of a modular type of the
        --  right size, the data is always valid.
  
!       elsif Nkind (Expr) = N_Selected_Component
          and then Present (Component_Clause (Entity (Selector_Name (Expr))))
          and then Is_Modular_Integer_Type (Typ)
          and then Modulus (Typ) = 2 ** Esize (Entity (Selector_Name (Expr)))
        then
           return;
+ 
+       --  Do not generate a validity check when inside a generic unit as this
+       --  is an expansion activity.
+ 
+       elsif Inside_A_Generic then
+          return;
        end if;
  
        --  If we have a checked conversion, then validity check applies to
*************** package body Checks is
*** 7180,7229 ****
           Exp := Expression (Exp);
        end loop;
  
!       --  We are about to insert the validity check for Exp. We save and
!       --  reset the Do_Range_Check flag over this validity check, and then
!       --  put it back for the final original reference (Exp may be rewritten).
  
        declare
!          DRC : constant Boolean := Do_Range_Check (Exp);
!          PV  : Node_Id;
!          CE  : Node_Id;
  
        begin
!          Set_Do_Range_Check (Exp, False);
  
!          --  Force evaluation to avoid multiple reads for atomic/volatile
  
!          --  Note: we set Name_Req to False. We used to set it to True, with
!          --  the thinking that a name is required as the prefix of the 'Valid
!          --  call, but in fact the check that the prefix of an attribute is
!          --  a name is in the parser, and we just don't require it here.
!          --  Moreover, when we set Name_Req to True, that interfered with the
!          --  checking for Volatile, since we couldn't just capture the value.
  
!          if Is_Entity_Name (Exp)
!            and then Is_Volatile (Entity (Exp))
!          then
!             --  Same reasoning as above for setting Name_Req to False
  
!             Force_Evaluation (Exp, Name_Req => False);
!          end if;
  
!          --  Build the prefix for the 'Valid call. If the expression denotes
!          --  a name, use a renaming to alias it, otherwise use a constant to
!          --  capture the value of the expression.
  
!          --    Temp : ... renames Expr;      --  reference to a name
!          --    Temp : constant ... := Expr;  --  all other cases
  
!          PV :=
!            Duplicate_Subexpr_No_Checks
!              (Exp           => Exp,
!               Name_Req      => False,
!               Renaming_Req  => Is_Name_Reference (Exp),
!               Related_Id    => Related_Id,
!               Is_Low_Bound  => Is_Low_Bound,
!               Is_High_Bound => Is_High_Bound);
  
           --  A rather specialized test. If PV is an analyzed expression which
           --  is an indexed component of a packed array that has not been
--- 7356,7453 ----
           Exp := Expression (Exp);
        end loop;
  
!       --  Do not generate a check for a variable which already validates the
!       --  value of an assignable object.
! 
!       if Is_Validation_Variable_Reference (Exp) then
!          return;
!       end if;
  
        declare
!          CE     : Node_Id;
!          PV     : Node_Id;
!          Var_Id : Entity_Id;
  
        begin
!          --  If the expression denotes an assignable object, capture its value
!          --  in a variable and replace the original expression by the variable.
!          --  This approach has several effects:
  
!          --    1) The evaluation of the object results in only one read in the
!          --       case where the object is atomic or volatile.
  
!          --         Var ... := Object;  --  read
  
!          --    2) The captured value is the one verified by attribute 'Valid.
!          --       As a result the object is not evaluated again, which would
!          --       result in an unwanted read in the case where the object is
!          --       atomic or volatile.
  
!          --         if not Var'Valid then     --  OK, no read of Object
  
!          --         if not Object'Valid then  --  Wrong, extra read of Object
  
!          --    3) The captured value replaces the original object reference.
!          --       As a result the object is not evaluated again, in the same
!          --       vein as 2).
  
!          --         ... Var ...     --  OK, no read of Object
! 
!          --         ... Object ...  --  Wrong, extra read of Object
! 
!          --    4) The use of a variable to capture the value of the object
!          --       allows the propagation of any changes back to the original
!          --       object.
! 
!          --         procedure Call (Val : in out ...);
! 
!          --         Var : ... := Object;   --  read Object
!          --         if not Var'Valid then  --  validity check
!          --         Call (Var);            --  modify Var
!          --         Object := Var;         --  update Object
! 
!          if Is_Variable (Exp) then
!             Var_Id := Make_Temporary (Loc, 'T', Exp);
! 
!             --  Because we could be dealing with a transient scope which would
!             --  cause our object declaration to remain unanalyzed we must do
!             --  some manual decoration.
! 
!             Set_Ekind (Var_Id, E_Variable);
!             Set_Etype (Var_Id, Typ);
! 
!             Insert_Action (Exp,
!               Make_Object_Declaration (Loc,
!                 Defining_Identifier => Var_Id,
!                 Object_Definition   => New_Occurrence_Of (Typ, Loc),
!                 Expression          => New_Copy_Tree (Exp)),
!               Suppress => Validity_Check);
! 
!             Set_Validated_Object (Var_Id, New_Copy_Tree (Exp));
!             Rewrite (Exp, New_Occurrence_Of (Var_Id, Loc));
!             PV := New_Occurrence_Of (Var_Id, Loc);
! 
!             --  Copy the Do_Range_Check flag over to the new Exp, so it doesn't
!             --  get lost. Floating point types are handled elsewhere.
! 
!             if not Is_Floating_Point_Type (Typ) then
!                Set_Do_Range_Check (Exp, Do_Range_Check (Original_Node (Exp)));
!             end if;
! 
!          --  Otherwise the expression does not denote a variable. Force its
!          --  evaluation by capturing its value in a constant. Generate:
! 
!          --    Temp : constant ... := Exp;
! 
!          else
!             Force_Evaluation
!               (Exp           => Exp,
!                Related_Id    => Related_Id,
!                Is_Low_Bound  => Is_Low_Bound,
!                Is_High_Bound => Is_High_Bound);
! 
!             PV := New_Copy_Tree (Exp);
!          end if;
  
           --  A rather specialized test. If PV is an analyzed expression which
           --  is an indexed component of a packed array that has not been
*************** package body Checks is
*** 7285,7304 ****
                 end if;
              end;
           end if;
- 
-          --  Put back the Do_Range_Check flag on the resulting (possibly
-          --  rewritten) expression.
- 
-          --  Note: it might be thought that a validity check is not required
-          --  when a range check is present, but that's not the case, because
-          --  the back end is allowed to assume for the range check that the
-          --  operand is within its declared range (an assumption that validity
-          --  checking is all about NOT assuming).
- 
-          --  Note: no need to worry about Possible_Local_Raise here, it will
-          --  already have been called if original node has Do_Range_Check set.
- 
-          Set_Do_Range_Check (Exp, DRC);
        end;
     end Insert_Valid_Check;
  
--- 7509,7514 ----
*************** package body Checks is
*** 7593,7598 ****
--- 7803,8024 ----
        Mark_Non_Null;
     end Install_Null_Excluding_Check;
  
+    -----------------------------------------
+    -- Install_Primitive_Elaboration_Check --
+    -----------------------------------------
+ 
+    procedure Install_Primitive_Elaboration_Check (Subp_Body : Node_Id) is
+       function Within_Compilation_Unit_Instance
+         (Subp_Id : Entity_Id) return Boolean;
+       --  Determine whether subprogram Subp_Id appears within an instance which
+       --  acts as a compilation unit.
+ 
+       --------------------------------------
+       -- Within_Compilation_Unit_Instance --
+       --------------------------------------
+ 
+       function Within_Compilation_Unit_Instance
+         (Subp_Id : Entity_Id) return Boolean
+       is
+          Pack : Entity_Id;
+ 
+       begin
+          --  Examine the scope chain looking for a compilation-unit-level
+          --  instance.
+ 
+          Pack := Scope (Subp_Id);
+          while Present (Pack) and then Pack /= Standard_Standard loop
+             if Ekind (Pack) = E_Package
+               and then Is_Generic_Instance (Pack)
+               and then Nkind (Parent (Unit_Declaration_Node (Pack))) =
+                          N_Compilation_Unit
+             then
+                return True;
+             end if;
+ 
+             Pack := Scope (Pack);
+          end loop;
+ 
+          return False;
+       end Within_Compilation_Unit_Instance;
+ 
+       --  Local declarations
+ 
+       Context   : constant Node_Id    := Parent (Subp_Body);
+       Loc       : constant Source_Ptr := Sloc (Subp_Body);
+       Subp_Id   : constant Entity_Id  := Unique_Defining_Entity (Subp_Body);
+       Subp_Decl : constant Node_Id    := Unit_Declaration_Node (Subp_Id);
+ 
+       Decls    : List_Id;
+       Flag_Id  : Entity_Id;
+       Set_Ins  : Node_Id;
+       Set_Stmt : Node_Id;
+       Tag_Typ  : Entity_Id;
+ 
+    --  Start of processing for Install_Primitive_Elaboration_Check
+ 
+    begin
+       --  Do not generate an elaboration check in compilation modes where
+       --  expansion is not desirable.
+ 
+       if ASIS_Mode or GNATprove_Mode then
+          return;
+ 
+       --  Do not generate an elaboration check if all checks have been
+       --  suppressed.
+ 
+       elsif Suppress_Checks then
+          return;
+ 
+       --  Do not generate an elaboration check if the related subprogram is
+       --  not subjected to accessibility checks.
+ 
+       elsif Elaboration_Checks_Suppressed (Subp_Id) then
+          return;
+ 
+       --  Do not generate an elaboration check if such code is not desirable
+ 
+       elsif Restriction_Active (No_Elaboration_Code) then
+          return;
+ 
+       --  Do not consider subprograms which act as compilation units, because
+       --  they cannot be the target of a dispatching call.
+ 
+       elsif Nkind (Context) = N_Compilation_Unit then
+          return;
+ 
+       --  Do not consider anything other than nonabstract library-level source
+       --  primitives.
+ 
+       elsif not
+         (Comes_From_Source (Subp_Id)
+           and then Is_Library_Level_Entity (Subp_Id)
+           and then Is_Primitive (Subp_Id)
+           and then not Is_Abstract_Subprogram (Subp_Id))
+       then
+          return;
+ 
+       --  Do not consider inlined primitives, because once the body is inlined
+       --  the reference to the elaboration flag will be out of place and will
+       --  result in an undefined symbol.
+ 
+       elsif Is_Inlined (Subp_Id) or else Has_Pragma_Inline (Subp_Id) then
+          return;
+ 
+       --  Do not generate a duplicate elaboration check. This happens only in
+       --  the case of primitives completed by an expression function, as the
+       --  corresponding body is apparently analyzed and expanded twice.
+ 
+       elsif Analyzed (Subp_Body) then
+          return;
+ 
+       --  Do not consider primitives which occur within an instance that acts
+       --  as a compilation unit. Such an instance defines its spec and body out
+       --  of order (body is first) within the tree, which causes the reference
+       --  to the elaboration flag to appear as an undefined symbol.
+ 
+       elsif Within_Compilation_Unit_Instance (Subp_Id) then
+          return;
+       end if;
+ 
+       Tag_Typ := Find_Dispatching_Type (Subp_Id);
+ 
+       --  Only tagged primitives may be the target of a dispatching call
+ 
+       if No (Tag_Typ) then
+          return;
+ 
+       --  Do not consider finalization-related primitives, because they may
+       --  need to be called while elaboration is taking place.
+ 
+       elsif Is_Controlled (Tag_Typ)
+         and then Nam_In (Chars (Subp_Id), Name_Adjust,
+                                           Name_Finalize,
+                                           Name_Initialize)
+       then
+          return;
+       end if;
+ 
+       --  Create the declaration of the elaboration flag. The name carries a
+       --  unique counter in case of name overloading.
+ 
+       Flag_Id :=
+         Make_Defining_Identifier (Loc,
+           Chars => New_External_Name (Chars (Subp_Id), 'E', -1));
+       Set_Is_Frozen (Flag_Id);
+ 
+       --  Insert the declaration of the elaboration flag in front of the
+       --  primitive spec and analyze it in the proper context.
+ 
+       Push_Scope (Scope (Subp_Id));
+ 
+       --  Generate:
+       --    E : Boolean := False;
+ 
+       Insert_Action (Subp_Decl,
+         Make_Object_Declaration (Loc,
+           Defining_Identifier => Flag_Id,
+           Object_Definition   => New_Occurrence_Of (Standard_Boolean, Loc),
+           Expression          => New_Occurrence_Of (Standard_False, Loc)));
+       Pop_Scope;
+ 
+       --  Prevent the compiler from optimizing the elaboration check by killing
+       --  the current value of the flag and the associated assignment.
+ 
+       Set_Current_Value   (Flag_Id, Empty);
+       Set_Last_Assignment (Flag_Id, Empty);
+ 
+       --  Add a check at the top of the body declarations to ensure that the
+       --  elaboration flag has been set.
+ 
+       Decls := Declarations (Subp_Body);
+ 
+       if No (Decls) then
+          Decls := New_List;
+          Set_Declarations (Subp_Body, Decls);
+       end if;
+ 
+       --  Generate:
+       --    if not F then
+       --       raise Program_Error with "access before elaboration";
+       --    end if;
+ 
+       Prepend_To (Decls,
+         Make_Raise_Program_Error (Loc,
+           Condition =>
+             Make_Op_Not (Loc,
+               Right_Opnd => New_Occurrence_Of (Flag_Id, Loc)),
+           Reason    => PE_Access_Before_Elaboration));
+ 
+       Analyze (First (Decls));
+ 
+       --  Set the elaboration flag once the body has been elaborated. Insert
+       --  the statement after the subprogram stub when the primitive body is
+       --  a subunit.
+ 
+       if Nkind (Context) = N_Subunit then
+          Set_Ins := Corresponding_Stub (Context);
+       else
+          Set_Ins := Subp_Body;
+       end if;
+ 
+       --  Generate:
+       --    E := True;
+ 
+       Set_Stmt :=
+         Make_Assignment_Statement (Loc,
+           Name       => New_Occurrence_Of (Flag_Id, Loc),
+           Expression => New_Occurrence_Of (Standard_True, Loc));
+ 
+       --  Mark the assignment statement as elaboration code. This allows the
+       --  early call region mechanism (see Sem_Elab) to properly ignore such
+       --  assignments even though they are non-preelaborable code.
+ 
+       Set_Is_Elaboration_Code (Set_Stmt);
+ 
+       Insert_After_And_Analyze (Set_Ins, Set_Stmt);
+    end Install_Primitive_Elaboration_Check;
+ 
     --------------------------
     -- Install_Static_Check --
     --------------------------
*************** package body Checks is
*** 7659,7670 ****
        --  since it clearly was not overridden at any point). For a predefined
        --  check, we test the specific flag. For a user defined check, we check
        --  the All_Checks flag. The Overflow flag requires special handling to
!       --  deal with the General vs Assertion case
  
        if C = Overflow_Check then
           return Overflow_Checks_Suppressed (Empty);
        elsif C in Predefined_Check_Id then
           return Scope_Suppress.Suppress (C);
        else
           return Scope_Suppress.Suppress (All_Checks);
        end if;
--- 8085,8098 ----
        --  since it clearly was not overridden at any point). For a predefined
        --  check, we test the specific flag. For a user defined check, we check
        --  the All_Checks flag. The Overflow flag requires special handling to
!       --  deal with the General vs Assertion case.
  
        if C = Overflow_Check then
           return Overflow_Checks_Suppressed (Empty);
+ 
        elsif C in Predefined_Check_Id then
           return Scope_Suppress.Suppress (C);
+ 
        else
           return Scope_Suppress.Suppress (All_Checks);
        end if;
*************** package body Checks is
*** 7795,7801 ****
        Rlo, Rhi : Uint;
        --  Ranges of values for right operand (operator case)
  
!       Llo, Lhi : Uint;
        --  Ranges of values for left operand (operator case)
  
        LLIB : constant Entity_Id := Base_Type (Standard_Long_Long_Integer);
--- 8223,8230 ----
        Rlo, Rhi : Uint;
        --  Ranges of values for right operand (operator case)
  
!       Llo : Uint := No_Uint;  -- initialize to prevent warning
!       Lhi : Uint := No_Uint;  -- initialize to prevent warning
        --  Ranges of values for left operand (operator case)
  
        LLIB : constant Entity_Id := Base_Type (Standard_Long_Long_Integer);
*************** package body Checks is
*** 8097,8102 ****
--- 8526,8532 ----
              else
                 declare
                    Rtype    : Entity_Id;
+                   pragma Warnings (Off, Rtype);
                    New_Alts : List_Id;
                    New_Exp  : Node_Id;
  
*************** package body Checks is
*** 9401,9407 ****
        Do_Access   : Boolean := False;
        Wnode       : Node_Id  := Warn_Node;
        Ret_Result  : Check_Result := (Empty, Empty);
!       Num_Checks  : Integer := 0;
  
        procedure Add_Check (N : Node_Id);
        --  Adds the action given to Ret_Result if N is non-Empty
--- 9831,9837 ----
        Do_Access   : Boolean := False;
        Wnode       : Node_Id  := Warn_Node;
        Ret_Result  : Check_Result := (Empty, Empty);
!       Num_Checks  : Natural := 0;
  
        procedure Add_Check (N : Node_Id);
        --  Adds the action given to Ret_Result if N is non-Empty
diff -Nrcpad gcc-7.3.0/gcc/ada/checks.ads gcc-8.1.0/gcc/ada/checks.ads
*** gcc-7.3.0/gcc/ada/checks.ads	Fri Jan  6 11:03:36 2017
--- gcc-8.1.0/gcc/ada/checks.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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
*** 337,342 ****
--- 337,348 ----
     --  Determines whether an access node requires a runtime access check and
     --  if so inserts the appropriate run-time check.
  
+    procedure Install_Primitive_Elaboration_Check (Subp_Body : Node_Id);
+    --  Insert a check which ensures that subprogram body Subp_Body has been
+    --  properly elaborated. The check is installed only when Subp_Body is the
+    --  body of a nonabstract library-level primitive of a tagged type. Further
+    --  restrictions may apply, see the body for details.
+ 
     function Make_Bignum_Block (Loc : Source_Ptr) return Node_Id;
     --  This function is used by top level overflow checking routines to do a
     --  mark/release operation on the secondary stack around bignum operations.
*************** package Checks is
*** 909,916 ****
     --  Chars (Related_Id)_FIRST/_LAST. For suggested use of these parameters
     --  see the warning in the body of Sem_Ch3.Process_Range_Expr_In_Decl.
  
!    procedure Null_Exclusion_Static_Checks (N : Node_Id);
!    --  Ada 2005 (AI-231): Check bad usages of the null-exclusion issue
  
     procedure Remove_Checks (Expr : Node_Id);
     --  Remove all checks from Expr except those that are only executed
--- 915,932 ----
     --  Chars (Related_Id)_FIRST/_LAST. For suggested use of these parameters
     --  see the warning in the body of Sem_Ch3.Process_Range_Expr_In_Decl.
  
!    procedure Null_Exclusion_Static_Checks
!      (N          : Node_Id;
!       Comp       : Node_Id := Empty;
!       Array_Comp : Boolean := False);
!    --  Ada 2005 (AI-231): Test for and warn on null-excluding objects or
!    --  components that will raise an exception due to initialization by null.
!    --
!    --  When a value for Comp is supplied (as in the case of an uninitialized
!    --  null-excluding component within a composite object), a reported warning
!    --  will indicate the offending component instead of the object itself.
!    --  Array_Comp being True indicates an array object with null-excluding
!    --  components, and any reported warning will indicate that.
  
     procedure Remove_Checks (Expr : Node_Id);
     --  Remove all checks from Expr except those that are only executed
diff -Nrcpad gcc-7.3.0/gcc/ada/cio.c gcc-8.1.0/gcc/ada/cio.c
*** gcc-7.3.0/gcc/ada/cio.c	Sat May 30 21:23:24 2015
--- gcc-8.1.0/gcc/ada/cio.c	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2015, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  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-2018, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-7.3.0/gcc/ada/clean.adb gcc-8.1.0/gcc/ada/clean.adb
*** gcc-7.3.0/gcc/ada/clean.adb	Wed Apr 20 10:40:48 2016
--- gcc-8.1.0/gcc/ada/clean.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2003-2015, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or 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-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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,49 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with ALI;      use ALI;
! with Csets;
! with Makeutl;  use Makeutl;
! with MLib.Tgt; use MLib.Tgt;
! with Namet;    use Namet;
! with Opt;      use Opt;
! with Osint;    use Osint;
! with Osint.M;  use Osint.M;
! with Prj;      use Prj;
! with Prj.Env;
! with Prj.Ext;
! with Prj.Pars;
! with Prj.Tree; use Prj.Tree;
! with Prj.Util; use Prj.Util;
! with Sdefault;
! with Snames;
! with Stringt;
! with Switch;   use Switch;
  with Table;
! with Targparm; use Targparm;
! with Types;    use Types;
  
  with Ada.Command_Line;          use Ada.Command_Line;
  
--- 23,38 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with ALI;       use ALI;
! with Make_Util; use Make_Util;
! with Namet;     use Namet;
! with Opt;       use Opt;
! with Osint;     use Osint;
! with Osint.M;   use Osint.M;
! with Switch;    use Switch;
  with Table;
! with Targparm;
! with Types;     use Types;
  
  with Ada.Command_Line;          use Ada.Command_Line;
  
*************** with GNAT.OS_Lib;               use GNAT
*** 54,67 ****
  
  package body Clean is
  
-    Initialized : Boolean := False;
-    --  Set to True by the first call to Initialize to avoid reinitialization
-    --  of some packages.
- 
     --  Suffixes of various files
  
     Assembly_Suffix : constant String := ".s";
-    ALI_Suffix      : constant String := ".ali";
     Tree_Suffix     : constant String := ".adt";
     Object_Suffix   : constant String := Get_Target_Object_Suffix.all;
     Debug_Suffix    : constant String := ".dg";
--- 43,51 ----
*************** package body Clean is
*** 71,80 ****
     B_Start : constant String := "b~";
     --  Prefix of binder generated file, and number of actual characters used
  
-    Project_Tree : constant Project_Tree_Ref :=
-      new Project_Tree_Data (Is_Root_Tree => True);
-    --  The project tree
- 
     Object_Directory_Path : String_Access := null;
     --  The path name of the object directory, set with switch -D
  
--- 55,60 ----
*************** package body Clean is
*** 95,134 ****
  
     Project_File_Name : String_Access := null;
  
-    Project_Node_Tree : Project_Node_Tree_Ref;
- 
-    Main_Project : Prj.Project_Id := Prj.No_Project;
- 
-    All_Projects : Boolean := False;
- 
-    --  Packages of project files where unknown attributes are errors
- 
-    Naming_String   : aliased String := "naming";
-    Builder_String  : aliased String := "builder";
-    Compiler_String : aliased String := "compiler";
-    Binder_String   : aliased String := "binder";
-    Linker_String   : aliased String := "linker";
- 
-    Gnatmake_Packages : aliased String_List :=
-      (Naming_String   'Access,
-       Builder_String  'Access,
-       Compiler_String 'Access,
-       Binder_String   'Access,
-       Linker_String   'Access);
- 
-    Packages_To_Check_By_Gnatmake : constant String_List_Access :=
-      Gnatmake_Packages'Access;
- 
-    package Processed_Projects is new Table.Table
-      (Table_Component_Type => Project_Id,
-       Table_Index_Type     => Natural,
-       Table_Low_Bound      => 0,
-       Table_Initial        => 10,
-       Table_Increment      => 100,
-       Table_Name           => "Clean.Processed_Projects");
-    --  Table to keep track of what project files have been processed, when
-    --  switch -r is specified.
- 
     package Sources is new Table.Table
       (Table_Component_Type => File_Name_Type,
        Table_Index_Type     => Natural,
--- 75,80 ----
*************** package body Clean is
*** 143,186 ****
     -- Other local subprograms --
     -----------------------------
  
-    procedure Add_Source_Dir (N : String);
-    --  Call Add_Src_Search_Dir and output one line when in verbose mode
- 
-    procedure Add_Source_Directories is
-      new Prj.Env.For_All_Source_Dirs (Action => Add_Source_Dir);
- 
-    procedure Add_Object_Dir (N : String);
-    --  Call Add_Lib_Search_Dir and output one line when in verbose mode
- 
-    procedure Add_Object_Directories is
-      new Prj.Env.For_All_Object_Dirs (Action => Add_Object_Dir);
- 
-    function ALI_File_Name (Source : File_Name_Type) return String;
-    --  Returns the name of the ALI file corresponding to Source
- 
     function Assembly_File_Name (Source : File_Name_Type) return String;
     --  Returns the assembly file name corresponding to Source
  
-    procedure Clean_Archive (Project : Project_Id; Global : Boolean);
-    --  Delete a global archive or library project archive and the dependency
-    --  file, if they exist.
- 
     procedure Clean_Executables;
     --  Do the cleaning work when no project file is specified
  
-    procedure Clean_Interface_Copy_Directory (Project : Project_Id);
-    --  Delete files in an interface copy directory: any file that is a copy of
-    --  a source of the project.
- 
-    procedure Clean_Library_Directory (Project : Project_Id);
-    --  Delete the library file in a library directory and any ALI file of a
-    --  source of the project in a library ALI directory.
- 
-    procedure Clean_Project (Project : Project_Id);
-    --  Do the cleaning work when a project file is specified. This procedure
-    --  calls itself recursively when there are several project files in the
-    --  tree rooted at the main project file and switch -r has been specified.
- 
     function Debug_File_Name (Source : File_Name_Type) return String;
     --  Name of the expanded source file corresponding to Source
  
--- 89,100 ----
*************** package body Clean is
*** 213,283 ****
     function Tree_File_Name (Source : File_Name_Type) return String;
     --  Returns the tree file name corresponding to Source
  
-    function In_Extension_Chain
-      (Of_Project : Project_Id;
-       Prj        : Project_Id) return Boolean;
-    --  Returns True iff Prj is an extension of Of_Project or if Of_Project is
-    --  an extension of Prj.
- 
     procedure Usage;
     --  Display the usage. If called several times, the usage is displayed only
     --  the first time.
  
-    --------------------
-    -- Add_Object_Dir --
-    --------------------
- 
-    procedure Add_Object_Dir (N : String) is
-    begin
-       Add_Lib_Search_Dir (N);
- 
-       if Opt.Verbose_Mode then
-          Put ("Adding object directory """);
-          Put (N);
-          Put (""".");
-          New_Line;
-       end if;
-    end Add_Object_Dir;
- 
-    --------------------
-    -- Add_Source_Dir --
-    --------------------
- 
-    procedure Add_Source_Dir (N : String) is
-    begin
-       Add_Src_Search_Dir (N);
- 
-       if Opt.Verbose_Mode then
-          Put ("Adding source directory """);
-          Put (N);
-          Put (""".");
-          New_Line;
-       end if;
-    end Add_Source_Dir;
- 
-    -------------------
-    -- ALI_File_Name --
-    -------------------
- 
-    function ALI_File_Name (Source : File_Name_Type) return String is
-       Src : constant String := Get_Name_String (Source);
- 
-    begin
-       --  If the source name has an extension, then replace it with
-       --  the ALI suffix.
- 
-       for Index in reverse Src'First + 1 .. Src'Last loop
-          if Src (Index) = '.' then
-             return Src (Src'First .. Index - 1) & ALI_Suffix;
-          end if;
-       end loop;
- 
-       --  If there is no dot, or if it is the first character, just add the
-       --  ALI suffix.
- 
-       return Src & ALI_Suffix;
-    end ALI_File_Name;
- 
     ------------------------
     -- Assembly_File_Name --
     ------------------------
--- 127,136 ----
*************** package body Clean is
*** 301,354 ****
        return Src & Assembly_Suffix;
     end Assembly_File_Name;
  
-    -------------------
-    -- Clean_Archive --
-    -------------------
- 
-    procedure Clean_Archive (Project : Project_Id; Global : Boolean) is
-       Current_Dir : constant Dir_Name_Str := Get_Current_Dir;
- 
-       Lib_Prefix : String_Access;
-       Archive_Name : String_Access;
-       --  The name of the archive file for this project
- 
-       Archive_Dep_Name : String_Access;
-       --  The name of the archive dependency file for this project
- 
-       Obj_Dir : constant String :=
-         Get_Name_String (Project.Object_Directory.Display_Name);
- 
-    begin
-       Change_Dir (Obj_Dir);
- 
-       --  First, get the lib prefix, the archive file name and the archive
-       --  dependency file name.
- 
-       if Global then
-          Lib_Prefix :=
-            new String'("lib" & Get_Name_String (Project.Display_Name));
-       else
-          Lib_Prefix :=
-            new String'("lib" & Get_Name_String (Project.Library_Name));
-       end if;
- 
-       Archive_Name := new String'(Lib_Prefix.all & '.' & Archive_Ext);
-       Archive_Dep_Name := new String'(Lib_Prefix.all & ".deps");
- 
-       --  Delete the archive file and the archive dependency file, if they
-       --  exist.
- 
-       if Is_Regular_File (Archive_Name.all) then
-          Delete (Obj_Dir, Archive_Name.all);
-       end if;
- 
-       if Is_Regular_File (Archive_Dep_Name.all) then
-          Delete (Obj_Dir, Archive_Dep_Name.all);
-       end if;
- 
-       Change_Dir (Current_Dir);
-    end Clean_Archive;
- 
     -----------------------
     -- Clean_Executables --
     -----------------------
--- 154,159 ----
*************** package body Clean is
*** 372,378 ****
        Source  : Queue.Source_Info;
  
     begin
!       Queue.Initialize (Queue_Per_Obj_Dir => False);
  
        --  It does not really matter if there is or not an object file
        --  corresponding to an ALI file: if there is one, it will be deleted.
--- 177,183 ----
        Source  : Queue.Source_Info;
  
     begin
!       Queue.Initialize;
  
        --  It does not really matter if there is or not an object file
        --  corresponding to an ALI file: if there is one, it will be deleted.
*************** package body Clean is
*** 390,401 ****
  
           if Main_Lib_File /= No_File then
              Queue.Insert
!               ((Format  => Format_Gnatmake,
!                 File    => Main_Lib_File,
                  Unit    => No_Unit_Name,
!                 Index   => 0,
!                 Project => No_Project,
!                 Sid     => No_Source));
           end if;
  
           while not Queue.Is_Empty loop
--- 195,203 ----
  
           if Main_Lib_File /= No_File then
              Queue.Insert
!               ((File    => Main_Lib_File,
                  Unit    => No_Unit_Name,
!                 Index   => 0));
           end if;
  
           while not Queue.Is_Empty loop
*************** package body Clean is
*** 434,445 ****
                          loop
                             if Withs.Table (K).Afile /= No_File then
                                Queue.Insert
!                                 ((Format  => Format_Gnatmake,
!                                   File    => Withs.Table (K).Afile,
                                    Unit    => No_Unit_Name,
!                                   Index   => 0,
!                                   Project => No_Project,
!                                   Sid     => No_Source));
                             end if;
                          end loop;
                       end loop;
--- 236,244 ----
                          loop
                             if Withs.Table (K).Afile /= No_File then
                                Queue.Insert
!                                 ((File    => Withs.Table (K).Afile,
                                    Unit    => No_Unit_Name,
!                                   Index   => 0));
                             end if;
                          end loop;
                       end loop;
*************** package body Clean is
*** 526,1220 ****
        end loop;
     end Clean_Executables;
  
-    ------------------------------------
-    -- Clean_Interface_Copy_Directory --
-    ------------------------------------
- 
-    procedure Clean_Interface_Copy_Directory (Project : Project_Id) is
-       Current : constant String := Get_Current_Dir;
- 
-       Direc : Dir_Type;
- 
-       Name : String (1 .. 200);
-       Last : Natural;
- 
-       Delete_File : Boolean;
-       Unit        : Unit_Index;
- 
-    begin
-       if Project.Library
-         and then Project.Library_Src_Dir /= No_Path_Information
-       then
-          declare
-             Directory : constant String :=
-               Get_Name_String (Project.Library_Src_Dir.Display_Name);
- 
-          begin
-             Change_Dir (Directory);
-             Open (Direc, ".");
- 
-             --  For each regular file in the directory, if switch -n has not
-             --  been specified, make it writable and delete the file if it is
-             --  a copy of a source of the project.
- 
-             loop
-                Read (Direc, Name, Last);
-                exit when Last = 0;
- 
-                declare
-                   Filename : constant String := Name (1 .. Last);
- 
-                begin
-                   if Is_Regular_File (Filename) then
-                      Canonical_Case_File_Name (Name (1 .. Last));
-                      Delete_File := False;
- 
-                      Unit := Units_Htable.Get_First (Project_Tree.Units_HT);
- 
-                      --  Compare with source file names of the project
- 
-                      while Unit /= No_Unit_Index loop
-                         if Unit.File_Names (Impl) /= null
-                           and then Ultimate_Extending_Project_Of
-                                      (Unit.File_Names (Impl).Project) = Project
-                           and then
-                             Get_Name_String (Unit.File_Names (Impl).File) =
-                                                               Name (1 .. Last)
-                         then
-                            Delete_File := True;
-                            exit;
-                         end if;
- 
-                         if Unit.File_Names (Spec) /= null
-                           and then Ultimate_Extending_Project_Of
-                                      (Unit.File_Names (Spec).Project) = Project
-                           and then
-                             Get_Name_String
-                               (Unit.File_Names (Spec).File) = Name (1 .. Last)
-                         then
-                            Delete_File := True;
-                            exit;
-                         end if;
- 
-                         Unit := Units_Htable.Get_Next (Project_Tree.Units_HT);
-                      end loop;
- 
-                      if Delete_File then
-                         if not Do_Nothing then
-                            Set_Writable (Filename);
-                         end if;
- 
-                         Delete (Directory, Filename);
-                      end if;
-                   end if;
-                end;
-             end loop;
- 
-             Close (Direc);
- 
-             --  Restore the initial working directory
- 
-             Change_Dir (Current);
-          end;
-       end if;
-    end Clean_Interface_Copy_Directory;
- 
-    -----------------------------
-    -- Clean_Library_Directory --
-    -----------------------------
- 
-    Empty_String : aliased String := "";
- 
-    procedure Clean_Library_Directory (Project : Project_Id) is
-       Current : constant String := Get_Current_Dir;
- 
-       Lib_Filename : constant String := Get_Name_String (Project.Library_Name);
-       DLL_Name     : String :=
-         DLL_Prefix & Lib_Filename & "." & DLL_Ext;
-       Archive_Name : String :=
-         "lib" & Lib_Filename & "." & Archive_Ext;
-       Direc        : Dir_Type;
- 
-       Name : String (1 .. 200);
-       Last : Natural;
- 
-       Delete_File : Boolean;
- 
-       Minor : String_Access := Empty_String'Access;
-       Major : String_Access := Empty_String'Access;
- 
-    begin
-       if Project.Library then
-          if Project.Library_Kind /= Static
-            and then MLib.Tgt.Library_Major_Minor_Id_Supported
-            and then Project.Lib_Internal_Name /= No_Name
-          then
-             Minor := new String'(Get_Name_String (Project.Lib_Internal_Name));
-             Major := new String'(MLib.Major_Id_Name (DLL_Name, Minor.all));
-          end if;
- 
-          declare
-             Lib_Directory     : constant String :=
-               Get_Name_String (Project.Library_Dir.Display_Name);
-             Lib_ALI_Directory : constant String :=
-               Get_Name_String (Project.Library_ALI_Dir.Display_Name);
- 
-          begin
-             Canonical_Case_File_Name (Archive_Name);
-             Canonical_Case_File_Name (DLL_Name);
- 
-             if Is_Directory (Lib_Directory) then
-                Change_Dir (Lib_Directory);
-                Open (Direc, ".");
- 
-                --  For each regular file in the directory, if switch -n has not
-                --  not been specified, make it writable and delete the file if
-                --  it is the library file.
- 
-                loop
-                   Read (Direc, Name, Last);
-                   exit when Last = 0;
- 
-                   declare
-                      Filename : constant String := Name (1 .. Last);
- 
-                   begin
-                      if Is_Regular_File (Filename)
-                        or else Is_Symbolic_Link (Filename)
-                      then
-                         Canonical_Case_File_Name (Name (1 .. Last));
-                         Delete_File := False;
- 
-                         if (Project.Library_Kind = Static
-                              and then Name (1 .. Last) = Archive_Name)
-                           or else
-                             ((Project.Library_Kind = Dynamic
-                                 or else
-                               Project.Library_Kind = Relocatable)
-                              and then
-                                (Name (1 .. Last) = DLL_Name
-                                   or else
-                                 Name (1 .. Last) = Minor.all
-                                   or else
-                                 Name (1 .. Last) = Major.all))
-                         then
-                            if not Do_Nothing then
-                               Set_Writable (Filename);
-                            end if;
- 
-                            Delete (Lib_Directory, Filename);
-                         end if;
-                      end if;
-                   end;
-                end loop;
- 
-                Close (Direc);
-             end if;
- 
-             if not Is_Directory (Lib_ALI_Directory) then
-                --  Nothing more to do, return now
-                return;
-             end if;
- 
-             Change_Dir (Lib_ALI_Directory);
-             Open (Direc, ".");
- 
-             --  For each regular file in the directory, if switch -n has not
-             --  been specified, make it writable and delete the file if it is
-             --  any ALI file of a source of the project.
- 
-             loop
-                Read (Direc, Name, Last);
-                exit when Last = 0;
- 
-                declare
-                   Filename : constant String := Name (1 .. Last);
-                begin
-                   if Is_Regular_File (Filename) then
-                      Canonical_Case_File_Name (Name (1 .. Last));
-                      Delete_File := False;
- 
-                      if Last > 4 and then Name (Last - 3 .. Last) = ".ali" then
-                         declare
-                            Unit : Unit_Index;
- 
-                         begin
-                            --  Compare with ALI file names of the project
- 
-                            Unit :=
-                              Units_Htable.Get_First (Project_Tree.Units_HT);
-                            while Unit /= No_Unit_Index loop
-                               if Unit.File_Names (Impl) /= null
-                                 and then Unit.File_Names (Impl).Project /=
-                                                                    No_Project
-                               then
-                                  if Ultimate_Extending_Project_Of
-                                       (Unit.File_Names (Impl).Project) =
-                                                                    Project
-                                  then
-                                     Get_Name_String
-                                       (Unit.File_Names (Impl).File);
-                                     Name_Len :=
-                                       Name_Len -
-                                         File_Extension
-                                           (Name (1 .. Name_Len))'Length;
-                                     if Name_Buffer (1 .. Name_Len) =
-                                          Name (1 .. Last - 4)
-                                     then
-                                        Delete_File := True;
-                                        exit;
-                                     end if;
-                                  end if;
- 
-                               elsif Unit.File_Names (Spec) /= null
-                                 and then Ultimate_Extending_Project_Of
-                                            (Unit.File_Names (Spec).Project) =
-                                                                     Project
-                               then
-                                  Get_Name_String (Unit.File_Names (Spec).File);
-                                  Name_Len :=
-                                    Name_Len -
-                                      File_Extension
-                                        (Name (1 .. Name_Len))'Length;
- 
-                                  if Name_Buffer (1 .. Name_Len) =
-                                       Name (1 .. Last - 4)
-                                  then
-                                     Delete_File := True;
-                                     exit;
-                                  end if;
-                               end if;
- 
-                               Unit :=
-                                 Units_Htable.Get_Next (Project_Tree.Units_HT);
-                            end loop;
-                         end;
-                      end if;
- 
-                      if Delete_File then
-                         if not Do_Nothing then
-                            Set_Writable (Filename);
-                         end if;
- 
-                         Delete (Lib_ALI_Directory, Filename);
-                      end if;
-                   end if;
-                end;
-             end loop;
- 
-             Close (Direc);
- 
-             --  Restore the initial working directory
- 
-             Change_Dir (Current);
-          end;
-       end if;
-    end Clean_Library_Directory;
- 
-    -------------------
-    -- Clean_Project --
-    -------------------
- 
-    procedure Clean_Project (Project : Project_Id) is
-       Main_Source_File : File_Name_Type;
-       --  Name of executable on the command line without directory info
- 
-       Executable : File_Name_Type;
-       --  Name of the executable file
- 
-       Current_Dir : constant Dir_Name_Str := Get_Current_Dir;
-       Unit        : Unit_Index;
-       File_Name1  : File_Name_Type;
-       Index1      : Int;
-       File_Name2  : File_Name_Type;
-       Index2      : Int;
-       Lib_File    : File_Name_Type;
- 
-       Global_Archive : Boolean := False;
- 
-    begin
-       --  Check that we don't specify executable on the command line for
-       --  a main library project.
- 
-       if Project = Main_Project
-         and then Osint.Number_Of_Files /= 0
-         and then Project.Library
-       then
-          Osint.Fail
-            ("Cannot specify executable(s) for a Library Project File");
-       end if;
- 
-       --  Nothing to clean in an externally built project
- 
-       if Project.Externally_Built then
-          if Verbose_Mode then
-             Put ("Nothing to do to clean externally built project """);
-             Put (Get_Name_String (Project.Name));
-             Put_Line ("""");
-          end if;
- 
-       else
-          if Verbose_Mode then
-             Put ("Cleaning project """);
-             Put (Get_Name_String (Project.Name));
-             Put_Line ("""");
-          end if;
- 
-          --  Add project to the list of processed projects
- 
-          Processed_Projects.Increment_Last;
-          Processed_Projects.Table (Processed_Projects.Last) := Project;
- 
-          if Project.Object_Directory /= No_Path_Information
-            and then Is_Directory
-                       (Get_Name_String (Project.Object_Directory.Display_Name))
-          then
-             declare
-                Obj_Dir : constant String :=
-                  Get_Name_String (Project.Object_Directory.Display_Name);
- 
-             begin
-                Change_Dir (Obj_Dir);
- 
-                --  First, deal with Ada
- 
-                --  Look through the units to find those that are either
-                --  immediate sources or inherited sources of the project.
-                --  Extending projects may have no language specified, if
-                --  Source_Dirs or Source_Files is specified as an empty list,
-                --  so always look for Ada units in extending projects.
- 
-                if Has_Ada_Sources (Project)
-                  or else Project.Extends /= No_Project
-                then
-                   Unit := Units_Htable.Get_First (Project_Tree.Units_HT);
-                   while Unit /= No_Unit_Index loop
-                      File_Name1 := No_File;
-                      File_Name2 := No_File;
- 
-                      --  If either the spec or the body is a source of the
-                      --  project, check for the corresponding ALI file in the
-                      --  object directory.
- 
-                      if (Unit.File_Names (Impl) /= null
-                           and then
-                             In_Extension_Chain
-                               (Unit.File_Names (Impl).Project, Project))
-                        or else
-                          (Unit.File_Names (Spec) /= null
-                            and then
-                              In_Extension_Chain
-                                (Unit.File_Names (Spec).Project, Project))
-                      then
-                         if Unit.File_Names (Impl) /= null then
-                            File_Name1 := Unit.File_Names (Impl).File;
-                            Index1     := Unit.File_Names (Impl).Index;
-                         else
-                            File_Name1 := No_File;
-                            Index1     := 0;
-                         end if;
- 
-                         if Unit.File_Names (Spec) /= null then
-                            File_Name2 := Unit.File_Names (Spec).File;
-                            Index2     := Unit.File_Names (Spec).Index;
-                         else
-                            File_Name2 := No_File;
-                            Index2     := 0;
-                         end if;
- 
-                         --  If there is no body file name, then there may be
-                         --  only a spec.
- 
-                         if File_Name1 = No_File then
-                            File_Name1 := File_Name2;
-                            Index1     := Index2;
-                            File_Name2 := No_File;
-                            Index2     := 0;
-                         end if;
-                      end if;
- 
-                      --  If there is either a spec or a body, look for files
-                      --  in the object directory.
- 
-                      if File_Name1 /= No_File then
-                         Lib_File := Osint.Lib_File_Name (File_Name1, Index1);
- 
-                         declare
-                            Asm : constant String :=
-                                    Assembly_File_Name (Lib_File);
-                            ALI : constant String :=
-                                    ALI_File_Name      (Lib_File);
-                            Obj : constant String :=
-                                    Object_File_Name   (Lib_File);
-                            Adt : constant String :=
-                                    Tree_File_Name     (Lib_File);
-                            Deb : constant String :=
-                                    Debug_File_Name    (File_Name1);
-                            Rep : constant String :=
-                                    Repinfo_File_Name  (File_Name1);
-                            Del : Boolean := True;
- 
-                         begin
-                            --  If the ALI file exists and is read-only, no file
-                            --  is deleted.
- 
-                            if Is_Regular_File (ALI) then
-                               if Is_Writable_File (ALI) then
-                                  Delete (Obj_Dir, ALI);
- 
-                               else
-                                  Del := False;
- 
-                                  if Verbose_Mode then
-                                     Put ('"');
-                                     Put (Obj_Dir);
- 
-                                     if Obj_Dir (Obj_Dir'Last) /=
-                                       Dir_Separator
-                                     then
-                                        Put (Dir_Separator);
-                                     end if;
- 
-                                     Put (ALI);
-                                     Put_Line (""" is read-only");
-                                  end if;
-                               end if;
-                            end if;
- 
-                            if Del then
- 
-                               --  Object file
- 
-                               if Is_Regular_File (Obj) then
-                                  Delete (Obj_Dir, Obj);
-                               end if;
- 
-                               --  Assembly file
- 
-                               if Is_Regular_File (Asm) then
-                                  Delete (Obj_Dir, Asm);
-                               end if;
- 
-                               --  Tree file
- 
-                               if Is_Regular_File (Adt) then
-                                  Delete (Obj_Dir, Adt);
-                               end if;
- 
-                               --  First expanded source file
- 
-                               if Is_Regular_File (Deb) then
-                                  Delete (Obj_Dir, Deb);
-                               end if;
- 
-                               --  Repinfo file
- 
-                               if Is_Regular_File (Rep) then
-                                  Delete (Obj_Dir, Rep);
-                               end if;
- 
-                               --  Second expanded source file
- 
-                               if File_Name2 /= No_File then
-                                  declare
-                                     Deb : constant String :=
-                                       Debug_File_Name (File_Name2);
-                                     Rep : constant String :=
-                                       Repinfo_File_Name (File_Name2);
- 
-                                  begin
-                                     if Is_Regular_File (Deb) then
-                                        Delete (Obj_Dir, Deb);
-                                     end if;
- 
-                                     if Is_Regular_File (Rep) then
-                                        Delete (Obj_Dir, Rep);
-                                     end if;
-                                  end;
-                               end if;
-                            end if;
-                         end;
-                      end if;
- 
-                      Unit := Units_Htable.Get_Next (Project_Tree.Units_HT);
-                   end loop;
-                end if;
- 
-                --  Check if a global archive and it dependency file could have
-                --  been created and, if they exist, delete them.
- 
-                if Project = Main_Project and then not Project.Library then
-                   Global_Archive := False;
- 
-                   declare
-                      Proj : Project_List;
- 
-                   begin
-                      Proj := Project_Tree.Projects;
-                      while Proj /= null loop
- 
-                         --  For gnatmake, when the project specifies more than
-                         --  just Ada as a language (even if course we could not
-                         --  find any source file for the other languages), we
-                         --  will take all the object files found in the object
-                         --  directories. Since we know the project supports at
-                         --  least Ada, we just have to test whether it has at
-                         --  least two languages, and we do not care about the
-                         --  sources.
- 
-                         if Proj.Project.Languages /= null
-                           and then Proj.Project.Languages.Next /= null
-                         then
-                            Global_Archive := True;
-                            exit;
-                         end if;
- 
-                         Proj := Proj.Next;
-                      end loop;
-                   end;
- 
-                   if Global_Archive then
-                      Clean_Archive (Project, Global => True);
-                   end if;
-                end if;
- 
-             end;
-          end if;
- 
-          --  If this is a library project, clean the library directory, the
-          --  interface copy dir and, for a Stand-Alone Library, the binder
-          --  generated files of the library.
- 
-          --  The directories are cleaned only if switch -c is not specified
- 
-          if Project.Library then
-             if not Compile_Only then
-                Clean_Library_Directory (Project);
- 
-                if Project.Library_Src_Dir /= No_Path_Information then
-                   Clean_Interface_Copy_Directory (Project);
-                end if;
-             end if;
- 
-             if Project.Standalone_Library /= No
-               and then Project.Object_Directory /= No_Path_Information
-             then
-                Delete_Binder_Generated_Files
-                  (Get_Name_String (Project.Object_Directory.Display_Name),
-                   File_Name_Type (Project.Library_Name));
-             end if;
-          end if;
- 
-          if Verbose_Mode then
-             New_Line;
-          end if;
-       end if;
- 
-       --  If switch -r is specified, call Clean_Project recursively for the
-       --  imported projects and the project being extended.
- 
-       if All_Projects then
-          declare
-             Imported : Project_List;
-             Process  : Boolean;
- 
-          begin
-             --  For each imported project, call Clean_Project if the project
-             --  has not been processed already.
- 
-             Imported := Project.Imported_Projects;
-             while Imported /= null loop
-                Process := True;
- 
-                for
-                  J in Processed_Projects.First .. Processed_Projects.Last
-                loop
-                   if Imported.Project = Processed_Projects.Table (J) then
-                      Process := False;
-                      exit;
-                   end if;
-                end loop;
- 
-                if Process then
-                   Clean_Project (Imported.Project);
-                end if;
- 
-                Imported := Imported.Next;
-             end loop;
- 
-             --  If this project extends another project, call Clean_Project for
-             --  the project being extended. It is guaranteed that it has not
-             --  called before, because no other project may import or extend
-             --  this project.
- 
-             if Project.Extends /= No_Project then
-                Clean_Project (Project.Extends);
-             end if;
-          end;
-       end if;
- 
-          --  For the main project, delete the executables and the binder
-          --  generated files.
- 
-          --  The executables are deleted only if switch -c is not specified
- 
-       if Project = Main_Project
-         and then Project.Exec_Directory /= No_Path_Information
-       then
-          declare
-             Exec_Dir : constant String :=
-               Get_Name_String (Project.Exec_Directory.Display_Name);
- 
-          begin
-             Change_Dir (Exec_Dir);
- 
-             for N_File in 1 .. Osint.Number_Of_Files loop
-                Main_Source_File := Next_Main_Source;
- 
-                if not Compile_Only then
-                   Executable :=
-                     Executable_Of
-                       (Main_Project,
-                        Project_Tree.Shared,
-                        Main_Source_File,
-                        Current_File_Index);
- 
-                   declare
-                      Exec_File_Name : constant String :=
-                        Get_Name_String (Executable);
- 
-                   begin
-                      if Is_Absolute_Path (Name => Exec_File_Name) then
-                         if Is_Regular_File (Exec_File_Name) then
-                            Delete ("", Exec_File_Name);
-                         end if;
- 
-                      else
-                         if Is_Regular_File (Exec_File_Name) then
-                            Delete (Exec_Dir, Exec_File_Name);
-                         end if;
-                      end if;
-                   end;
-                end if;
- 
-                if Project.Object_Directory /= No_Path_Information
-                  and then
-                    Is_Directory
-                      (Get_Name_String (Project.Object_Directory.Display_Name))
-                then
-                   Delete_Binder_Generated_Files
-                     (Get_Name_String (Project.Object_Directory.Display_Name),
-                      Strip_Suffix (Main_Source_File));
-                end if;
-             end loop;
-          end;
-       end if;
- 
-       --  Change back to previous directory
- 
-       Change_Dir (Current_Dir);
-    end Clean_Project;
- 
     ---------------------
     -- Debug_File_Name --
     ---------------------
--- 325,330 ----
*************** package body Clean is
*** 1370,1471 ****
  
        Parse_Cmd_Line;
  
-       --  Add the default project search directories now, after the directories
-       --  that have been specified by switches -aP<dir>.
- 
-       Prj.Env.Initialize_Default_Project_Path
-         (Root_Environment.Project_Path,
-          Target_Name => Sdefault.Target_Name.all);
- 
        if Verbose_Mode then
           Display_Copyright;
        end if;
  
-       if Project_File_Name /= null then
- 
-          --  Warn about 'gnatclean -P'
- 
-          if Project_File_Name /= null then
-             Put_Line
-               ("warning: gnatclean -P is obsolete and will not be available" &
-                " in the next release; use gprclean instead.");
-          end if;
- 
-          --  A project file was specified by a -P switch
- 
-          if Opt.Verbose_Mode then
-             New_Line;
-             Put ("Parsing Project File """);
-             Put (Project_File_Name.all);
-             Put_Line (""".");
-             New_Line;
-          end if;
- 
-          --  Set the project parsing verbosity to whatever was specified
-          --  by a possible -vP switch.
- 
-          Prj.Pars.Set_Verbosity (To => Current_Verbosity);
- 
-          --  Parse the project file. If there is an error, Main_Project
-          --  will still be No_Project.
- 
-          Prj.Pars.Parse
-            (Project           => Main_Project,
-             In_Tree           => Project_Tree,
-             In_Node_Tree      => Project_Node_Tree,
-             Project_File_Name => Project_File_Name.all,
-             Env               => Root_Environment,
-             Packages_To_Check => Packages_To_Check_By_Gnatmake);
- 
-          if Main_Project = No_Project then
-             Fail ("""" & Project_File_Name.all & """ processing failed");
- 
-          elsif Main_Project.Qualifier = Aggregate then
-             Fail ("aggregate projects are not supported");
- 
-          elsif Aggregate_Libraries_In (Project_Tree) then
-             Fail ("aggregate library projects are not supported");
-          end if;
- 
-          if Opt.Verbose_Mode then
-             New_Line;
-             Put ("Parsing of Project File """);
-             Put (Project_File_Name.all);
-             Put (""" is finished.");
-             New_Line;
-          end if;
- 
-          --  Add source directories and object directories to the search paths
- 
-          Add_Source_Directories (Main_Project, Project_Tree);
-          Add_Object_Directories (Main_Project, Project_Tree);
-       end if;
- 
        Osint.Add_Default_Search_Dirs;
  
!       --  If a project file was specified, but no executable name, put all
!       --  the mains of the project file (if any) as if there were on the
!       --  command line.
! 
!       if Main_Project /= No_Project and then Osint.Number_Of_Files = 0 then
!          declare
!             Main  : String_Element;
!             Value : String_List_Id := Main_Project.Mains;
!          begin
!             while Value /= Prj.Nil_String loop
!                Main := Project_Tree.Shared.String_Elements.Table (Value);
!                Osint.Add_File
!                  (File_Name => Get_Name_String (Main.Value),
!                   Index     => Main.Index);
!                Value := Main.Next;
!             end loop;
!          end;
!       end if;
! 
!       --  If neither a project file nor an executable were specified, exit
!       --  displaying the usage if there were no arguments on the command line.
! 
!       if Main_Project = No_Project and then Osint.Number_Of_Files = 0 then
           if Argument_Count = 0 then
              Usage;
           else
--- 480,493 ----
  
        Parse_Cmd_Line;
  
        if Verbose_Mode then
           Display_Copyright;
        end if;
  
        Osint.Add_Default_Search_Dirs;
+       Targparm.Get_Target_Parameters;
  
!       if Osint.Number_Of_Files = 0 then
           if Argument_Count = 0 then
              Usage;
           else
*************** package body Clean is
*** 1479,1500 ****
           New_Line;
        end if;
  
!       if Main_Project /= No_Project then
  
!          --  If a project file has been specified, call Clean_Project with the
!          --  project id of this project file, after resetting the list of
!          --  processed projects.
  
!          Processed_Projects.Init;
!          Clean_Project (Main_Project);
  
!       else
!          --  If no project file has been specified, the work is done in
!          --  Clean_Executables.
  
!          Clean_Executables;
        end if;
  
        --  In verbose mode, if Delete has not been called, indicate that no file
        --  needs to be deleted.
  
--- 501,556 ----
           New_Line;
        end if;
  
!       if Project_File_Name /= null then
!          declare
!             Gprclean_Path : constant String_Access :=
!               Locate_Exec_On_Path ("gprclean");
!             Arg_Len : Natural       := Argument_Count;
!             Pos     : Natural       := 0;
!             Target  : String_Access := null;
!             Success : Boolean       := False;
!          begin
!             if Gprclean_Path = null then
!                Fail_Program
!                  ("project files are no longer supported by gnatclean;" &
!                     " use gprclean instead");
!             end if;
  
!             Find_Program_Name;
  
!             if Name_Len > 10
!               and then Name_Buffer (Name_Len - 8 .. Name_Len) = "gnatclean"
!             then
!                Target  := new String'(Name_Buffer (1 .. Name_Len - 9));
!                Arg_Len := Arg_Len + 1;
!             end if;
  
!             declare
!                Args : Argument_List (1 .. Arg_Len);
!             begin
!                if Target /= null then
!                   Args (1) := new String'("--target=" & Target.all);
!                   Pos := 1;
!                end if;
  
!                for J in 1 .. Argument_Count loop
!                   Pos := Pos + 1;
!                   Args (Pos) := new String'(Argument (J));
!                end loop;
! 
!                Spawn (Gprclean_Path.all, Args, Success);
! 
!                if Success then
!                   Exit_Program (E_Success);
!                else
!                   Exit_Program (E_Errors);
!                end if;
!             end;
!          end;
        end if;
  
+       Clean_Executables;
+ 
        --  In verbose mode, if Delete has not been called, indicate that no file
        --  needs to be deleted.
  
*************** package body Clean is
*** 1509,1583 ****
        end if;
     end Gnatclean;
  
-    ------------------------
-    -- In_Extension_Chain --
-    ------------------------
- 
-    function In_Extension_Chain
-      (Of_Project : Project_Id;
-       Prj        : Project_Id) return Boolean
-    is
-       Proj : Project_Id;
- 
-    begin
-       if Prj = No_Project or else Of_Project = No_Project then
-          return False;
-       end if;
- 
-       if Of_Project = Prj then
-          return True;
-       end if;
- 
-       Proj := Of_Project;
-       while Proj.Extends /= No_Project loop
-          if Proj.Extends = Prj then
-             return True;
-          end if;
- 
-          Proj := Proj.Extends;
-       end loop;
- 
-       Proj := Prj;
-       while Proj.Extends /= No_Project loop
-          if Proj.Extends = Of_Project then
-             return True;
-          end if;
- 
-          Proj := Proj.Extends;
-       end loop;
- 
-       return False;
-    end In_Extension_Chain;
- 
     ----------------
     -- Initialize --
     ----------------
  
     procedure Initialize is
     begin
-       if not Initialized then
-          Initialized := True;
- 
-          --  Get default search directories to locate system.ads when calling
-          --  Targparm.Get_Target_Parameters.
- 
-          Osint.Add_Default_Search_Dirs;
- 
-          --  Initialize some packages
- 
-          Csets.Initialize;
-          Snames.Initialize;
-          Stringt.Initialize;
- 
-          Prj.Tree.Initialize (Root_Environment, Gnatmake_Flags);
- 
-          Project_Node_Tree := new Project_Node_Tree_Data;
-          Prj.Tree.Initialize (Project_Node_Tree);
- 
-          Prj.Initialize (Project_Tree);
-          Targparm.Get_Target_Parameters;
-       end if;
- 
        --  Reset global variables
  
        Free (Object_Directory_Path);
--- 565,576 ----
*************** package body Clean is
*** 1585,1593 ****
        File_Deleted := False;
        Copyright_Displayed := False;
        Usage_Displayed := False;
-       Free (Project_File_Name);
-       Main_Project := Prj.No_Project;
-       All_Projects := False;
     end Initialize;
  
     ----------------------
--- 578,583 ----
*************** package body Clean is
*** 1688,1693 ****
--- 678,686 ----
  
                       if Success then
                          Exit_Program (E_Success);
+ 
+                      else
+                         Exit_Program (E_Fatal);
                       end if;
                    end;
                 end if;
*************** package body Clean is
*** 1725,1735 ****
                            and then
                              Arg (1 .. Subdirs_Option'Length) = Subdirs_Option
                          then
!                            Subdirs :=
!                              new String'
!                                (Arg (Subdirs_Option'Length + 1 .. Arg'Last));
  
!                         elsif Arg = Makeutl.Unchecked_Shared_Lib_Imports then
                             Opt.Unchecked_Shared_Lib_Imports := True;
  
                          else
--- 718,727 ----
                            and then
                              Arg (1 .. Subdirs_Option'Length) = Subdirs_Option
                          then
!                            null;
!                            --  Subdirs are only used in gprclean
  
!                         elsif Arg = Make_Util.Unchecked_Shared_Lib_Imports then
                             Opt.Unchecked_Shared_Lib_Imports := True;
  
                          else
*************** package body Clean is
*** 1745,1753 ****
                             Add_Lib_Search_Dir (Arg (4 .. Arg'Last));
  
                          elsif Arg (3) = 'P' then
!                            Prj.Env.Add_Directories
!                              (Root_Environment.Project_Path,
!                               Arg (4 .. Arg'Last));
  
                          else
                             Bad_Argument;
--- 737,744 ----
                             Add_Lib_Search_Dir (Arg (4 .. Arg'Last));
  
                          elsif Arg (3) = 'P' then
!                            null;
!                            --  This is only for gprclean
  
                          else
                             Bad_Argument;
*************** package body Clean is
*** 1881,1900 ****
                          Quiet_Output := True;
  
                       when 'r' =>
!                         All_Projects := True;
  
                       when 'v' =>
                          if Arg = "-v" then
                             Verbose_Mode := True;
  
!                         elsif Arg = "-vP0" then
!                            Current_Verbosity := Prj.Default;
! 
!                         elsif Arg = "-vP1" then
!                            Current_Verbosity := Prj.Medium;
! 
!                         elsif Arg = "-vP2" then
!                            Current_Verbosity := Prj.High;
  
                          else
                             Bad_Argument;
--- 872,890 ----
                          Quiet_Output := True;
  
                       when 'r' =>
!                         null;
!                         --  This is only for gprclean
  
                       when 'v' =>
                          if Arg = "-v" then
                             Verbose_Mode := True;
  
!                         elsif Arg = "-vP0"
!                           or else Arg = "-vP1"
!                           or else Arg = "-vP2"
!                         then
!                            null;
!                            --  This is only for gprclean
  
                          else
                             Bad_Argument;
*************** package body Clean is
*** 1905,1939 ****
                             Bad_Argument;
                          end if;
  
-                         declare
-                            Ext_Asgn  : constant String := Arg (3 .. Arg'Last);
-                            Start     : Positive := Ext_Asgn'First;
-                            Stop      : Natural  := Ext_Asgn'Last;
-                            OK        : Boolean  := True;
- 
-                         begin
-                            if Ext_Asgn (Start) = '"' then
-                               if Ext_Asgn (Stop) = '"' then
-                                  Start := Start + 1;
-                                  Stop  := Stop - 1;
- 
-                               else
-                                  OK := False;
-                               end if;
-                            end if;
- 
-                            if not OK
-                              or else not
-                                Prj.Ext.Check (Root_Environment.External,
-                                               Ext_Asgn (Start .. Stop))
-                            then
-                               Fail
-                                 ("illegal external assignment '"
-                                  & Ext_Asgn
-                                  & "'");
-                            end if;
-                         end;
- 
                       when others =>
                          Bad_Argument;
                    end case;
--- 895,900 ----
*************** package body Clean is
*** 1999,2005 ****
           New_Line;
  
           Put_Line ("  --subdirs=dir real obj/lib/exec dirs are subdirs");
!          Put_Line ("  " & Makeutl.Unchecked_Shared_Lib_Imports);
           Put_Line ("       Allow shared libraries to import static libraries");
           New_Line;
  
--- 960,966 ----
           New_Line;
  
           Put_Line ("  --subdirs=dir real obj/lib/exec dirs are subdirs");
!          Put_Line ("  " & Make_Util.Unchecked_Shared_Lib_Imports);
           Put_Line ("       Allow shared libraries to import static libraries");
           New_Line;
  
diff -Nrcpad gcc-7.3.0/gcc/ada/clean.ads gcc-8.1.0/gcc/ada/clean.ads
*** gcc-7.3.0/gcc/ada/clean.ads	Mon Sep 10 12:47:10 2007
--- gcc-8.1.0/gcc/ada/clean.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2003-2007, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or 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-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/comperr.adb gcc-8.1.0/gcc/ada/comperr.adb
*** gcc-7.3.0/gcc/ada/comperr.adb	Thu Feb  9 08:36:38 2017
--- gcc-8.1.0/gcc/ada/comperr.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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 Comperr is
*** 253,258 ****
--- 253,259 ----
           --  we use the contents of this file at this point.
  
           declare
+             FD  : File_Descriptor;
              Lo  : Source_Ptr;
              Hi  : Source_Ptr;
              Src : Source_Buffer_Ptr;
*************** package body Comperr is
*** 261,271 ****
              Namet.Unlock;
              Name_Buffer (1 .. 12) := "gnat_bug.box";
              Name_Len := 12;
!             Read_Source_File (Name_Enter, 0, Hi, Src);
  
              --  If we get a Src file, we use it
  
!             if Src /= null then
                 Lo := 0;
  
                 Outer : while Lo < Hi loop
--- 262,272 ----
              Namet.Unlock;
              Name_Buffer (1 .. 12) := "gnat_bug.box";
              Name_Len := 12;
!             Read_Source_File (Name_Enter, 0, Hi, Src, FD);
  
              --  If we get a Src file, we use it
  
!             if not Null_Source_Buffer_Ptr (Src) then
                 Lo := 0;
  
                 Outer : while Lo < Hi loop
*************** package body Comperr is
*** 457,463 ****
        --  If parsing was not successful, no Main_Unit is available, so return
        --  immediately.
  
!       if Main_Source_File = No_Source_File then
           return;
        end if;
  
--- 458,464 ----
        --  If parsing was not successful, no Main_Unit is available, so return
        --  immediately.
  
!       if Main_Source_File <= No_Source_File then
           return;
        end if;
  
*************** package body Comperr is
*** 476,482 ****
           when N_Package_Body =>
              Unit_Name := Corresponding_Spec (Main);
  
!          when N_Package_Renaming_Declaration =>
              Unit_Name := Defining_Unit_Name (Main);
  
           --  No SCIL file generated for generic package declarations
--- 477,485 ----
           when N_Package_Body =>
              Unit_Name := Corresponding_Spec (Main);
  
!          when N_Package_Instantiation
!             | N_Package_Renaming_Declaration
!          =>
              Unit_Name := Defining_Unit_Name (Main);
  
           --  No SCIL file generated for generic package declarations
diff -Nrcpad gcc-7.3.0/gcc/ada/comperr.ads gcc-8.1.0/gcc/ada/comperr.ads
*** gcc-7.3.0/gcc/ada/comperr.ads	Mon Apr 28 14:58:28 2014
--- gcc-8.1.0/gcc/ada/comperr.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/contracts.adb gcc-8.1.0/gcc/ada/contracts.adb
*** gcc-7.3.0/gcc/ada/contracts.adb	Thu Jan 19 13:14:04 2017
--- gcc-8.1.0/gcc/ada/contracts.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2015-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or 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-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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 Tbuild;   use Tbuild;
*** 53,68 ****
  
  package body Contracts is
  
-    procedure Analyze_Contracts
-      (L          : List_Id;
-       Freeze_Nod : Node_Id;
-       Freeze_Id  : Entity_Id);
-    --  Subsidiary to the one parameter version of Analyze_Contracts and routine
-    --  Analyze_Previous_Constracts. Analyze the contracts of all constructs in
-    --  the list L. If Freeze_Nod is set, then the analysis stops when the node
-    --  is reached. Freeze_Id is the entity of some related context which caused
-    --  freezing up to node Freeze_Nod.
- 
     procedure Build_And_Analyze_Contract_Only_Subprograms (L : List_Id);
     --  (CodePeer): Subsidiary procedure to Analyze_Contracts which builds the
     --  contract-only subprogram body of eligible subprograms found in L, adds
--- 53,58 ----
*************** package body Contracts is
*** 351,382 ****
     -----------------------
  
     procedure Analyze_Contracts (L : List_Id) is
     begin
        if CodePeer_Mode and then Debug_Flag_Dot_KK then
           Build_And_Analyze_Contract_Only_Subprograms (L);
        end if;
  
-       Analyze_Contracts (L, Freeze_Nod => Empty, Freeze_Id => Empty);
-    end Analyze_Contracts;
- 
-    procedure Analyze_Contracts
-      (L          : List_Id;
-       Freeze_Nod : Node_Id;
-       Freeze_Id  : Entity_Id)
-    is
-       Decl : Node_Id;
- 
-    begin
        Decl := First (L);
        while Present (Decl) loop
  
-          --  The caller requests that the traversal stops at a particular node
-          --  that causes contract "freezing".
- 
-          if Present (Freeze_Nod) and then Decl = Freeze_Nod then
-             exit;
-          end if;
- 
           --  Entry or subprogram declarations
  
           if Nkind_In (Decl, N_Abstract_Subprogram_Declaration,
--- 341,356 ----
     -----------------------
  
     procedure Analyze_Contracts (L : List_Id) is
+       Decl : Node_Id;
+ 
     begin
        if CodePeer_Mode and then Debug_Flag_Dot_KK then
           Build_And_Analyze_Contract_Only_Subprograms (L);
        end if;
  
        Decl := First (L);
        while Present (Decl) loop
  
           --  Entry or subprogram declarations
  
           if Nkind_In (Decl, N_Abstract_Subprogram_Declaration,
*************** package body Contracts is
*** 384,392 ****
                              N_Generic_Subprogram_Declaration,
                              N_Subprogram_Declaration)
           then
!             Analyze_Entry_Or_Subprogram_Contract
!               (Subp_Id   => Defining_Entity (Decl),
!                Freeze_Id => Freeze_Id);
  
           --  Entry or subprogram bodies
  
--- 358,380 ----
                              N_Generic_Subprogram_Declaration,
                              N_Subprogram_Declaration)
           then
!             declare
!                Subp_Id : constant Entity_Id := Defining_Entity (Decl);
! 
!             begin
!                Analyze_Entry_Or_Subprogram_Contract (Subp_Id);
! 
!                --  If analysis of a class-wide pre/postcondition indicates
!                --  that a class-wide clone is needed, analyze its declaration
!                --  now. Its body is created when the body of the original
!                --  operation is analyzed (and rewritten).
! 
!                if Is_Subprogram (Subp_Id)
!                  and then Present (Class_Wide_Clone (Subp_Id))
!                then
!                   Analyze (Unit_Declaration_Node (Class_Wide_Clone (Subp_Id)));
!                end if;
!             end;
  
           --  Entry or subprogram bodies
  
*************** package body Contracts is
*** 396,404 ****
           --  Objects
  
           elsif Nkind (Decl) = N_Object_Declaration then
!             Analyze_Object_Contract
!               (Obj_Id    => Defining_Entity (Decl),
!                Freeze_Id => Freeze_Id);
  
           --  Protected units
  
--- 384,390 ----
           --  Objects
  
           elsif Nkind (Decl) = N_Object_Declaration then
!             Analyze_Object_Contract (Defining_Entity (Decl));
  
           --  Protected units
  
*************** package body Contracts is
*** 419,426 ****
           then
              Analyze_Task_Contract (Defining_Entity (Decl));
  
!          --  For type declarations, we need to do the pre-analysis of
!          --  Iterable aspect specifications.
           --  Other type aspects need to be resolved here???
  
           elsif Nkind (Decl) = N_Private_Type_Declaration
--- 405,413 ----
           then
              Analyze_Task_Contract (Defining_Entity (Decl));
  
!          --  For type declarations, we need to do the pre-analysis of Iterable
!          --  aspect specifications.
! 
           --  Other type aspects need to be resolved here???
  
           elsif Nkind (Decl) = N_Private_Type_Declaration
*************** package body Contracts is
*** 429,434 ****
--- 416,422 ----
              declare
                 E  : constant Entity_Id := Defining_Identifier (Decl);
                 It : constant Node_Id   := Find_Aspect (E, Aspect_Iterable);
+ 
              begin
                 if Present (It) then
                    Validate_Iterable_Aspect (E, It);
*************** package body Contracts is
*** 444,454 ****
     -- Analyze_Entry_Or_Subprogram_Body_Contract --
     -----------------------------------------------
  
     procedure Analyze_Entry_Or_Subprogram_Body_Contract (Body_Id : Entity_Id) is
        Body_Decl : constant Node_Id   := Unit_Declaration_Node (Body_Id);
        Items     : constant Node_Id   := Contract (Body_Id);
        Spec_Id   : constant Entity_Id := Unique_Defining_Entity (Body_Decl);
!       Mode      : SPARK_Mode_Type;
  
     begin
        --  When a subprogram body declaration is illegal, its defining entity is
--- 432,449 ----
     -- Analyze_Entry_Or_Subprogram_Body_Contract --
     -----------------------------------------------
  
+    --  WARNING: This routine manages SPARK regions. Return statements must be
+    --  replaced by gotos which jump to the end of the routine and restore the
+    --  SPARK mode.
+ 
     procedure Analyze_Entry_Or_Subprogram_Body_Contract (Body_Id : Entity_Id) is
        Body_Decl : constant Node_Id   := Unit_Declaration_Node (Body_Id);
        Items     : constant Node_Id   := Contract (Body_Id);
        Spec_Id   : constant Entity_Id := Unique_Defining_Entity (Body_Decl);
! 
!       Saved_SM  : constant SPARK_Mode_Type := SPARK_Mode;
!       Saved_SMP : constant Node_Id         := SPARK_Mode_Pragma;
!       --  Save the SPARK_Mode-related data to restore on exit
  
     begin
        --  When a subprogram body declaration is illegal, its defining entity is
*************** package body Contracts is
*** 473,479 ****
        --  context. To remedy this, restore the original SPARK_Mode of the
        --  related subprogram body.
  
!       Save_SPARK_Mode_And_Set (Body_Id, Mode);
  
        --  Ensure that the contract cases or postconditions mention 'Result or
        --  define a post-state.
--- 468,474 ----
        --  context. To remedy this, restore the original SPARK_Mode of the
        --  related subprogram body.
  
!       Set_SPARK_Mode (Body_Id);
  
        --  Ensure that the contract cases or postconditions mention 'Result or
        --  define a post-state.
*************** package body Contracts is
*** 499,505 ****
        --  Restore the SPARK_Mode of the enclosing context after all delayed
        --  pragmas have been analyzed.
  
!       Restore_SPARK_Mode (Mode);
  
        --  Capture all global references in a generic subprogram body now that
        --  the contract has been analyzed.
--- 494,500 ----
        --  Restore the SPARK_Mode of the enclosing context after all delayed
        --  pragmas have been analyzed.
  
!       Restore_SPARK_Mode (Saved_SM, Saved_SMP);
  
        --  Capture all global references in a generic subprogram body now that
        --  the contract has been analyzed.
*************** package body Contracts is
*** 523,528 ****
--- 518,527 ----
     -- Analyze_Entry_Or_Subprogram_Contract --
     ------------------------------------------
  
+    --  WARNING: This routine manages SPARK regions. Return statements must be
+    --  replaced by gotos which jump to the end of the routine and restore the
+    --  SPARK mode.
+ 
     procedure Analyze_Entry_Or_Subprogram_Contract
       (Subp_Id   : Entity_Id;
        Freeze_Id : Entity_Id := Empty)
*************** package body Contracts is
*** 530,535 ****
--- 529,538 ----
        Items     : constant Node_Id := Contract (Subp_Id);
        Subp_Decl : constant Node_Id := Unit_Declaration_Node (Subp_Id);
  
+       Saved_SM  : constant SPARK_Mode_Type := SPARK_Mode;
+       Saved_SMP : constant Node_Id         := SPARK_Mode_Pragma;
+       --  Save the SPARK_Mode-related data to restore on exit
+ 
        Skip_Assert_Exprs : constant Boolean :=
                              Ekind_In (Subp_Id, E_Entry, E_Entry_Family)
                                and then not ASIS_Mode
*************** package body Contracts is
*** 537,543 ****
  
        Depends  : Node_Id := Empty;
        Global   : Node_Id := Empty;
-       Mode     : SPARK_Mode_Type;
        Prag     : Node_Id;
        Prag_Nam : Name_Id;
  
--- 540,545 ----
*************** package body Contracts is
*** 557,563 ****
        --  context. To remedy this, restore the original SPARK_Mode of the
        --  related subprogram body.
  
!       Save_SPARK_Mode_And_Set (Subp_Id, Mode);
  
        --  All subprograms carry a contract, but for some it is not significant
        --  and should not be processed.
--- 559,565 ----
        --  context. To remedy this, restore the original SPARK_Mode of the
        --  related subprogram body.
  
!       Set_SPARK_Mode (Subp_Id);
  
        --  All subprograms carry a contract, but for some it is not significant
        --  and should not be processed.
*************** package body Contracts is
*** 658,663 ****
--- 660,666 ----
  
        if SPARK_Mode = On
          and then Ekind_In (Subp_Id, E_Function, E_Generic_Function)
+         and then Comes_From_Source (Subp_Id)
          and then not Is_Volatile_Function (Subp_Id)
        then
           Check_Nonvolatile_Function_Profile (Subp_Id);
*************** package body Contracts is
*** 666,672 ****
        --  Restore the SPARK_Mode of the enclosing context after all delayed
        --  pragmas have been analyzed.
  
!       Restore_SPARK_Mode (Mode);
  
        --  Capture all global references in a generic subprogram now that the
        --  contract has been analyzed.
--- 669,675 ----
        --  Restore the SPARK_Mode of the enclosing context after all delayed
        --  pragmas have been analyzed.
  
!       Restore_SPARK_Mode (Saved_SM, Saved_SMP);
  
        --  Capture all global references in a generic subprogram now that the
        --  contract has been analyzed.
*************** package body Contracts is
*** 682,702 ****
     -- Analyze_Object_Contract --
     -----------------------------
  
     procedure Analyze_Object_Contract
       (Obj_Id    : Entity_Id;
        Freeze_Id : Entity_Id := Empty)
     is
!       Obj_Typ      : constant Entity_Id := Etype (Obj_Id);
!       AR_Val       : Boolean := False;
!       AW_Val       : Boolean := False;
!       ER_Val       : Boolean := False;
!       EW_Val       : Boolean := False;
!       Items        : Node_Id;
!       Mode         : SPARK_Mode_Type;
!       Prag         : Node_Id;
!       Ref_Elmt     : Elmt_Id;
!       Restore_Mode : Boolean := False;
!       Seen         : Boolean := False;
  
     begin
        --  The loop parameter in an element iterator over a formal container
--- 685,712 ----
     -- Analyze_Object_Contract --
     -----------------------------
  
+    --  WARNING: This routine manages SPARK regions. Return statements must be
+    --  replaced by gotos which jump to the end of the routine and restore the
+    --  SPARK mode.
+ 
     procedure Analyze_Object_Contract
       (Obj_Id    : Entity_Id;
        Freeze_Id : Entity_Id := Empty)
     is
!       Obj_Typ : constant Entity_Id := Etype (Obj_Id);
! 
!       Saved_SM  : constant SPARK_Mode_Type := SPARK_Mode;
!       Saved_SMP : constant Node_Id         := SPARK_Mode_Pragma;
!       --  Save the SPARK_Mode-related data to restore on exit
! 
!       AR_Val   : Boolean := False;
!       AW_Val   : Boolean := False;
!       ER_Val   : Boolean := False;
!       EW_Val   : Boolean := False;
!       Items    : Node_Id;
!       Prag     : Node_Id;
!       Ref_Elmt : Elmt_Id;
!       Seen     : Boolean := False;
  
     begin
        --  The loop parameter in an element iterator over a formal container
*************** package body Contracts is
*** 727,734 ****
        if Is_Single_Concurrent_Object (Obj_Id)
          and then Present (SPARK_Pragma (Obj_Id))
        then
!          Restore_Mode := True;
!          Save_SPARK_Mode_And_Set (Obj_Id, Mode);
        end if;
  
        --  Constant-related checks
--- 737,743 ----
        if Is_Single_Concurrent_Object (Obj_Id)
          and then Present (SPARK_Pragma (Obj_Id))
        then
!          Set_SPARK_Mode (Obj_Id);
        end if;
  
        --  Constant-related checks
*************** package body Contracts is
*** 878,889 ****
                 then
                    Error_Msg_N
                      ("discriminated object & cannot be volatile", Obj_Id);
- 
-                --  An object of a tagged type cannot be effectively volatile
-                --  (SPARK RM C.6(5)).
- 
-                elsif Is_Tagged_Type (Obj_Typ) then
-                   Error_Msg_N ("tagged object & cannot be volatile", Obj_Id);
                 end if;
  
              --  The object is not effectively volatile
--- 887,892 ----
*************** package body Contracts is
*** 934,948 ****
        --  Restore the SPARK_Mode of the enclosing context after all delayed
        --  pragmas have been analyzed.
  
!       if Restore_Mode then
!          Restore_SPARK_Mode (Mode);
!       end if;
     end Analyze_Object_Contract;
  
     -----------------------------------
     -- Analyze_Package_Body_Contract --
     -----------------------------------
  
     procedure Analyze_Package_Body_Contract
       (Body_Id   : Entity_Id;
        Freeze_Id : Entity_Id := Empty)
--- 937,953 ----
        --  Restore the SPARK_Mode of the enclosing context after all delayed
        --  pragmas have been analyzed.
  
!       Restore_SPARK_Mode (Saved_SM, Saved_SMP);
     end Analyze_Object_Contract;
  
     -----------------------------------
     -- Analyze_Package_Body_Contract --
     -----------------------------------
  
+    --  WARNING: This routine manages SPARK regions. Return statements must be
+    --  replaced by gotos which jump to the end of the routine and restore the
+    --  SPARK mode.
+ 
     procedure Analyze_Package_Body_Contract
       (Body_Id   : Entity_Id;
        Freeze_Id : Entity_Id := Empty)
*************** package body Contracts is
*** 950,956 ****
        Body_Decl : constant Node_Id   := Unit_Declaration_Node (Body_Id);
        Items     : constant Node_Id   := Contract (Body_Id);
        Spec_Id   : constant Entity_Id := Spec_Entity (Body_Id);
!       Mode      : SPARK_Mode_Type;
        Ref_State : Node_Id;
  
     begin
--- 955,965 ----
        Body_Decl : constant Node_Id   := Unit_Declaration_Node (Body_Id);
        Items     : constant Node_Id   := Contract (Body_Id);
        Spec_Id   : constant Entity_Id := Spec_Entity (Body_Id);
! 
!       Saved_SM  : constant SPARK_Mode_Type := SPARK_Mode;
!       Saved_SMP : constant Node_Id         := SPARK_Mode_Pragma;
!       --  Save the SPARK_Mode-related data to restore on exit
! 
        Ref_State : Node_Id;
  
     begin
*************** package body Contracts is
*** 969,975 ****
        --  context. To remedy this, restore the original SPARK_Mode of the
        --  related package body.
  
!       Save_SPARK_Mode_And_Set (Body_Id, Mode);
  
        Ref_State := Get_Pragma (Body_Id, Pragma_Refined_State);
  
--- 978,984 ----
        --  context. To remedy this, restore the original SPARK_Mode of the
        --  related package body.
  
!       Set_SPARK_Mode (Body_Id);
  
        Ref_State := Get_Pragma (Body_Id, Pragma_Refined_State);
  
*************** package body Contracts is
*** 983,989 ****
        --  Restore the SPARK_Mode of the enclosing context after all delayed
        --  pragmas have been analyzed.
  
!       Restore_SPARK_Mode (Mode);
  
        --  Capture all global references in a generic package body now that the
        --  contract has been analyzed.
--- 992,998 ----
        --  Restore the SPARK_Mode of the enclosing context after all delayed
        --  pragmas have been analyzed.
  
!       Restore_SPARK_Mode (Saved_SM, Saved_SMP);
  
        --  Capture all global references in a generic package body now that the
        --  contract has been analyzed.
*************** package body Contracts is
*** 999,1010 ****
     -- Analyze_Package_Contract --
     ------------------------------
  
     procedure Analyze_Package_Contract (Pack_Id : Entity_Id) is
        Items     : constant Node_Id := Contract (Pack_Id);
        Pack_Decl : constant Node_Id := Unit_Declaration_Node (Pack_Id);
        Init      : Node_Id := Empty;
        Init_Cond : Node_Id := Empty;
-       Mode      : SPARK_Mode_Type;
        Prag      : Node_Id;
        Prag_Nam  : Name_Id;
  
--- 1008,1027 ----
     -- Analyze_Package_Contract --
     ------------------------------
  
+    --  WARNING: This routine manages SPARK regions. Return statements must be
+    --  replaced by gotos which jump to the end of the routine and restore the
+    --  SPARK mode.
+ 
     procedure Analyze_Package_Contract (Pack_Id : Entity_Id) is
        Items     : constant Node_Id := Contract (Pack_Id);
        Pack_Decl : constant Node_Id := Unit_Declaration_Node (Pack_Id);
+ 
+       Saved_SM  : constant SPARK_Mode_Type := SPARK_Mode;
+       Saved_SMP : constant Node_Id         := SPARK_Mode_Pragma;
+       --  Save the SPARK_Mode-related data to restore on exit
+ 
        Init      : Node_Id := Empty;
        Init_Cond : Node_Id := Empty;
        Prag      : Node_Id;
        Prag_Nam  : Name_Id;
  
*************** package body Contracts is
*** 1024,1030 ****
        --  context. To remedy this, restore the original SPARK_Mode of the
        --  related package.
  
!       Save_SPARK_Mode_And_Set (Pack_Id, Mode);
  
        if Present (Items) then
  
--- 1041,1047 ----
        --  context. To remedy this, restore the original SPARK_Mode of the
        --  related package.
  
!       Set_SPARK_Mode (Pack_Id);
  
        if Present (Items) then
  
*************** package body Contracts is
*** 1071,1077 ****
        --  Restore the SPARK_Mode of the enclosing context after all delayed
        --  pragmas have been analyzed.
  
!       Restore_SPARK_Mode (Mode);
  
        --  Capture all global references in a generic package now that the
        --  contract has been analyzed.
--- 1088,1094 ----
        --  Restore the SPARK_Mode of the enclosing context after all delayed
        --  pragmas have been analyzed.
  
!       Restore_SPARK_Mode (Saved_SM, Saved_SMP);
  
        --  Capture all global references in a generic package now that the
        --  contract has been analyzed.
*************** package body Contracts is
*** 1084,1159 ****
     end Analyze_Package_Contract;
  
     --------------------------------
-    -- Analyze_Previous_Contracts --
-    --------------------------------
- 
-    procedure Analyze_Previous_Contracts (Body_Decl : Node_Id) is
-       Body_Id   : constant Entity_Id := Defining_Entity (Body_Decl);
-       Orig_Decl : constant Node_Id   := Original_Node (Body_Decl);
- 
-       Par : Node_Id;
- 
-    begin
-       --  A body that is in the process of being inlined appears from source,
-       --  but carries name _parent. Such a body does not cause "freezing" of
-       --  contracts.
- 
-       if Chars (Body_Id) = Name_uParent then
-          return;
-       end if;
- 
-       --  Climb the parent chain looking for an enclosing package body. Do not
-       --  use the scope stack, as a body uses the entity of its corresponding
-       --  spec.
- 
-       Par := Parent (Body_Decl);
-       while Present (Par) loop
-          if Nkind (Par) = N_Package_Body then
-             Analyze_Package_Body_Contract
-               (Body_Id   => Defining_Entity (Par),
-                Freeze_Id => Defining_Entity (Body_Decl));
- 
-             exit;
- 
-          --  Do not look for an enclosing package body when the construct which
-          --  causes freezing is a body generated for an expression function and
-          --  it appears within a package spec. This ensures that the traversal
-          --  will not reach too far up the parent chain and attempt to freeze a
-          --  package body which should not be frozen.
- 
-          --    package body Enclosing_Body
-          --      with Refined_State => (State => Var)
-          --    is
-          --       package Nested is
-          --          type Some_Type is ...;
-          --          function Cause_Freezing return ...;
-          --       private
-          --          function Cause_Freezing is (...);
-          --       end Nested;
-          --
-          --       Var : Nested.Some_Type;
- 
-          elsif Nkind (Par) = N_Package_Declaration
-            and then Nkind (Orig_Decl) = N_Expression_Function
-          then
-             exit;
-          end if;
- 
-          Par := Parent (Par);
-       end loop;
- 
-       --  Analyze the contracts of all eligible construct up to the body which
-       --  caused the "freezing".
- 
-       if Is_List_Member (Body_Decl) then
-          Analyze_Contracts
-            (L          => List_Containing (Body_Decl),
-             Freeze_Nod => Body_Decl,
-             Freeze_Id  => Body_Id);
-       end if;
-    end Analyze_Previous_Contracts;
- 
-    --------------------------------
     -- Analyze_Protected_Contract --
     --------------------------------
  
--- 1101,1106 ----
*************** package body Contracts is
*** 1209,1218 ****
     -- Analyze_Task_Contract --
     ---------------------------
  
     procedure Analyze_Task_Contract (Task_Id : Entity_Id) is
        Items : constant Node_Id := Contract (Task_Id);
!       Mode  : SPARK_Mode_Type;
!       Prag  : Node_Id;
  
     begin
        --  Do not analyze a contract multiple times
--- 1156,1173 ----
     -- Analyze_Task_Contract --
     ---------------------------
  
+    --  WARNING: This routine manages SPARK regions. Return statements must be
+    --  replaced by gotos which jump to the end of the routine and restore the
+    --  SPARK mode.
+ 
     procedure Analyze_Task_Contract (Task_Id : Entity_Id) is
        Items : constant Node_Id := Contract (Task_Id);
! 
!       Saved_SM  : constant SPARK_Mode_Type := SPARK_Mode;
!       Saved_SMP : constant Node_Id         := SPARK_Mode_Pragma;
!       --  Save the SPARK_Mode-related data to restore on exit
! 
!       Prag : Node_Id;
  
     begin
        --  Do not analyze a contract multiple times
*************** package body Contracts is
*** 1230,1236 ****
        --  context. To remedy this, restore the original SPARK_Mode of the
        --  related task unit.
  
!       Save_SPARK_Mode_And_Set (Task_Id, Mode);
  
        --  Analyze Global first, as Depends may mention items classified in the
        --  global categorization.
--- 1185,1191 ----
        --  context. To remedy this, restore the original SPARK_Mode of the
        --  related task unit.
  
!       Set_SPARK_Mode (Task_Id);
  
        --  Analyze Global first, as Depends may mention items classified in the
        --  global categorization.
*************** package body Contracts is
*** 1253,1259 ****
        --  Restore the SPARK_Mode of the enclosing context after all delayed
        --  pragmas have been analyzed.
  
!       Restore_SPARK_Mode (Mode);
     end Analyze_Task_Contract;
  
     -------------------------------------------------
--- 1208,1214 ----
        --  Restore the SPARK_Mode of the enclosing context after all delayed
        --  pragmas have been analyzed.
  
!       Restore_SPARK_Mode (Saved_SM, Saved_SMP);
     end Analyze_Task_Contract;
  
     -------------------------------------------------
*************** package body Contracts is
*** 2025,2036 ****
                    return False;
  
                 --  Determine whether the subprogram is declared in the visible
!                --  declarations of the package containing the type.
  
                 else
!                   return List_Containing (Subp_Decl) =
!                     Visible_Declarations
!                       (Specification (Unit_Declaration_Node (Scope (Typ))));
                 end if;
              end Has_Public_Visibility_Of_Subprogram;
  
--- 1980,2012 ----
                    return False;
  
                 --  Determine whether the subprogram is declared in the visible
!                --  declarations of the package containing the type, or in the
!                --  visible declaration of a child unit of that package.
  
                 else
!                   declare
!                      Decls      : constant List_Id   :=
!                                     List_Containing (Subp_Decl);
!                      Subp_Scope : constant Entity_Id :=
!                                     Scope (Defining_Entity (Subp_Decl));
!                      Typ_Scope  : constant Entity_Id := Scope (Typ);
! 
!                   begin
!                      return
!                        Decls = Visible_Declarations
!                            (Specification (Unit_Declaration_Node (Typ_Scope)))
! 
!                          or else
!                            (Ekind (Subp_Scope) = E_Package
!                              and then Typ_Scope /= Subp_Scope
!                              and then Is_Child_Unit (Subp_Scope)
!                              and then
!                                Is_Ancestor_Package (Typ_Scope, Subp_Scope)
!                              and then
!                                Decls = Visible_Declarations
!                                  (Specification
!                                    (Unit_Declaration_Node (Subp_Scope))));
!                   end;
                 end if;
              end Has_Public_Visibility_Of_Subprogram;
  
*************** package body Contracts is
*** 2321,2326 ****
--- 2297,2307 ----
              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
*************** package body Contracts is
*** 2463,2468 ****
--- 2444,2454 ----
              end loop;
           end Process_Spec_Postconditions;
  
+          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_Postconditions
  
        begin
*************** package body Contracts is
*** 3015,3020 ****
--- 3001,3187 ----
        end if;
     end Expand_Subprogram_Contract;
  
+    -------------------------------
+    -- Freeze_Previous_Contracts --
+    -------------------------------
+ 
+    procedure Freeze_Previous_Contracts (Body_Decl : Node_Id) is
+       function Causes_Contract_Freezing (N : Node_Id) return Boolean;
+       pragma Inline (Causes_Contract_Freezing);
+       --  Determine whether arbitrary node N causes contract freezing
+ 
+       procedure Freeze_Contracts;
+       pragma Inline (Freeze_Contracts);
+       --  Freeze the contracts of all eligible constructs which precede body
+       --  Body_Decl.
+ 
+       procedure Freeze_Enclosing_Package_Body;
+       pragma Inline (Freeze_Enclosing_Package_Body);
+       --  Freeze the contract of the nearest package body (if any) which
+       --  encloses body Body_Decl.
+ 
+       ------------------------------
+       -- Causes_Contract_Freezing --
+       ------------------------------
+ 
+       function Causes_Contract_Freezing (N : Node_Id) return Boolean is
+       begin
+          return Nkind_In (N, N_Entry_Body,
+                              N_Package_Body,
+                              N_Protected_Body,
+                              N_Subprogram_Body,
+                              N_Subprogram_Body_Stub,
+                              N_Task_Body);
+       end Causes_Contract_Freezing;
+ 
+       ----------------------
+       -- Freeze_Contracts --
+       ----------------------
+ 
+       procedure Freeze_Contracts is
+          Body_Id : constant Entity_Id := Defining_Entity (Body_Decl);
+          Decl    : Node_Id;
+ 
+       begin
+          --  Nothing to do when the body which causes freezing does not appear
+          --  in a declarative list because there cannot possibly be constructs
+          --  with contracts.
+ 
+          if not Is_List_Member (Body_Decl) then
+             return;
+          end if;
+ 
+          --  Inspect the declarations preceding the body, and freeze individual
+          --  contracts of eligible constructs.
+ 
+          Decl := Prev (Body_Decl);
+          while Present (Decl) loop
+ 
+             --  Stop the traversal when a preceding construct that causes
+             --  freezing is encountered as there is no point in refreezing
+             --  the already frozen constructs.
+ 
+             if Causes_Contract_Freezing (Decl) then
+                exit;
+ 
+             --  Entry or subprogram declarations
+ 
+             elsif Nkind_In (Decl, N_Abstract_Subprogram_Declaration,
+                                   N_Entry_Declaration,
+                                   N_Generic_Subprogram_Declaration,
+                                   N_Subprogram_Declaration)
+             then
+                Analyze_Entry_Or_Subprogram_Contract
+                  (Subp_Id   => Defining_Entity (Decl),
+                   Freeze_Id => Body_Id);
+ 
+             --  Objects
+ 
+             elsif Nkind (Decl) = N_Object_Declaration then
+                Analyze_Object_Contract
+                  (Obj_Id    => Defining_Entity (Decl),
+                   Freeze_Id => Body_Id);
+ 
+             --  Protected units
+ 
+             elsif Nkind_In (Decl, N_Protected_Type_Declaration,
+                                   N_Single_Protected_Declaration)
+             then
+                Analyze_Protected_Contract (Defining_Entity (Decl));
+ 
+             --  Subprogram body stubs
+ 
+             elsif Nkind (Decl) = N_Subprogram_Body_Stub then
+                Analyze_Subprogram_Body_Stub_Contract (Defining_Entity (Decl));
+ 
+             --  Task units
+ 
+             elsif Nkind_In (Decl, N_Single_Task_Declaration,
+                                   N_Task_Type_Declaration)
+             then
+                Analyze_Task_Contract (Defining_Entity (Decl));
+             end if;
+ 
+             Prev (Decl);
+          end loop;
+       end Freeze_Contracts;
+ 
+       -----------------------------------
+       -- Freeze_Enclosing_Package_Body --
+       -----------------------------------
+ 
+       procedure Freeze_Enclosing_Package_Body is
+          Orig_Decl : constant Node_Id := Original_Node (Body_Decl);
+          Par       : Node_Id;
+ 
+       begin
+          --  Climb the parent chain looking for an enclosing package body. Do
+          --  not use the scope stack, because a body utilizes the entity of its
+          --  corresponding spec.
+ 
+          Par := Parent (Body_Decl);
+          while Present (Par) loop
+             if Nkind (Par) = N_Package_Body then
+                Analyze_Package_Body_Contract
+                  (Body_Id   => Defining_Entity (Par),
+                   Freeze_Id => Defining_Entity (Body_Decl));
+ 
+                exit;
+ 
+             --  Do not look for an enclosing package body when the construct
+             --  which causes freezing is a body generated for an expression
+             --  function and it appears within a package spec. This ensures
+             --  that the traversal will not reach too far up the parent chain
+             --  and attempt to freeze a package body which must not be frozen.
+ 
+             --    package body Enclosing_Body
+             --      with Refined_State => (State => Var)
+             --    is
+             --       package Nested is
+             --          type Some_Type is ...;
+             --          function Cause_Freezing return ...;
+             --       private
+             --          function Cause_Freezing is (...);
+             --       end Nested;
+             --
+             --       Var : Nested.Some_Type;
+ 
+             elsif Nkind (Par) = N_Package_Declaration
+               and then Nkind (Orig_Decl) = N_Expression_Function
+             then
+                exit;
+ 
+             --  Prevent the search from going too far
+ 
+             elsif Is_Body_Or_Package_Declaration (Par) then
+                exit;
+             end if;
+ 
+             Par := Parent (Par);
+          end loop;
+       end Freeze_Enclosing_Package_Body;
+ 
+       --  Local variables
+ 
+       Body_Id : constant Entity_Id := Defining_Entity (Body_Decl);
+ 
+    --  Start of processing for Freeze_Previous_Contracts
+ 
+    begin
+       pragma Assert (Causes_Contract_Freezing (Body_Decl));
+ 
+       --  A body that is in the process of being inlined appears from source,
+       --  but carries name _parent. Such a body does not cause freezing of
+       --  contracts.
+ 
+       if Chars (Body_Id) = Name_uParent then
+          return;
+       end if;
+ 
+       Freeze_Enclosing_Package_Body;
+       Freeze_Contracts;
+    end Freeze_Previous_Contracts;
+ 
     ---------------------------------
     -- Inherit_Subprogram_Contract --
     ---------------------------------
diff -Nrcpad gcc-7.3.0/gcc/ada/contracts.ads gcc-8.1.0/gcc/ada/contracts.ads
*** gcc-7.3.0/gcc/ada/contracts.ads	Fri Jan 13 10:39:38 2017
--- gcc-8.1.0/gcc/ada/contracts.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2015-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or 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-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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
*** 128,139 ****
     --    Initializes
     --    Part_Of
  
-    procedure Analyze_Previous_Contracts (Body_Decl : Node_Id);
-    --  Analyze the contracts of all source constructs found in the declarative
-    --  list which contains entry, package, protected, subprogram, or task body
-    --  denoted by Body_Decl. The analysis stops once Body_Decl is reached. In
-    --  addition, analyze the contract of the nearest enclosing package body.
- 
     procedure Analyze_Protected_Contract (Prot_Id : Entity_Id);
     --  Analyze all delayed pragmas chained on the contract of protected unit
     --  Prot_Id if they appeared at the end of a declarative region. Currently
--- 128,133 ----
*************** package Contracts is
*** 165,170 ****
--- 159,170 ----
     --  generic body denoted by Unit by collecting all source contract-related
     --  pragmas in the contract of the unit.
  
+    procedure Freeze_Previous_Contracts (Body_Decl : Node_Id);
+    --  Freeze the contracts of all source constructs found in the declarative
+    --  list which contains entry, package, protected, subprogram, or task body
+    --  denoted by Body_Decl. In addition, freeze the contract of the nearest
+    --  enclosing package body.
+ 
     procedure Inherit_Subprogram_Contract
       (Subp      : Entity_Id;
        From_Subp : Entity_Id);
diff -Nrcpad gcc-7.3.0/gcc/ada/csets.adb gcc-8.1.0/gcc/ada/csets.adb
*** gcc-7.3.0/gcc/ada/csets.adb	Wed Jan 22 16:53:24 2014
--- gcc-8.1.0/gcc/ada/csets.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2013, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/csets.ads gcc-8.1.0/gcc/ada/csets.ads
*** gcc-7.3.0/gcc/ada/csets.ads	Wed Jan 22 16:53:24 2014
--- gcc-8.1.0/gcc/ada/csets.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2013, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/csinfo.adb gcc-8.1.0/gcc/ada/csinfo.adb
*** gcc-7.3.0/gcc/ada/csinfo.adb	Wed Apr 25 15:14:44 2012
--- gcc-8.1.0/gcc/ada/csinfo.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2012, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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
*** 218,224 ****
     Set (Special, "Has_Dynamic_Range_Check",          True);
     Set (Special, "Has_Dynamic_Length_Check",         True);
     Set (Special, "Has_Private_View",                 True);
-    Set (Special, "Implicit_With_From_Instantiation", True);
     Set (Special, "Is_Controlling_Actual",            True);
     Set (Special, "Is_Overloaded",                    True);
     Set (Special, "Is_Static_Expression",             True);
--- 218,223 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/cstand.adb gcc-8.1.0/gcc/ada/cstand.adb
*** gcc-7.3.0/gcc/ada/cstand.adb	Tue Oct 20 10:00:15 2015
--- gcc-8.1.0/gcc/ada/cstand.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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 Set_Targ; use Set_Targ;
*** 38,44 ****
  with Targparm; use Targparm;
  with Tbuild;   use Tbuild;
  with Ttypes;   use Ttypes;
- with Scn;
  with Sem_Mech; use Sem_Mech;
  with Sem_Util; use Sem_Util;
  with Sinfo;    use Sinfo;
--- 38,43 ----
*************** package body CStand is
*** 63,77 ****
     -----------------------
  
     procedure Build_Float_Type
!      (E    : Entity_Id;
!       Siz  : Int;
!       Rep  : Float_Rep_Kind;
!       Digs : Int);
     --  Procedure to build standard predefined float base type. The first
!    --  parameter is the entity for the type, and the second parameter is the
!    --  size in bits. The third parameter indicates the kind of representation
!    --  to be used. The fourth parameter is the digits value. Each type
     --  is added to the list of predefined floating point types.
  
     procedure Build_Signed_Integer_Type (E : Entity_Id; Siz : Nat);
     --  Procedure to build standard predefined signed integer subtype. The
--- 62,83 ----
     -----------------------
  
     procedure Build_Float_Type
!      (E     : Entity_Id;
!       Digs  : Int;
!       Rep   : Float_Rep_Kind;
!       Siz   : Int;
!       Align : Int);
     --  Procedure to build standard predefined float base type. The first
!    --  parameter is the entity for the type. The second parameter is the
!    --  digits value. The third parameter indicates the representation to
!    --  be used for the type. The fourth parameter is the size in bits.
!    --  The fifth parameter is the alignment in storage units. Each type
     --  is added to the list of predefined floating point types.
+    --
+    --  Note that both RM_Size and Esize are set to the specified size, i.e.
+    --  we do not set the RM_Size to the precision passed by the back end.
+    --  This is consistent with the semantics of 'Size specified in the RM
+    --  because we cannot pack components of the type tighter than this size.
  
     procedure Build_Signed_Integer_Type (E : Entity_Id; Siz : Nat);
     --  Procedure to build standard predefined signed integer subtype. The
*************** package body CStand is
*** 190,199 ****
     ----------------------
  
     procedure Build_Float_Type
!      (E    : Entity_Id;
!       Siz  : Int;
!       Rep  : Float_Rep_Kind;
!       Digs : Int)
     is
     begin
        Set_Type_Definition (Parent (E),
--- 196,206 ----
     ----------------------
  
     procedure Build_Float_Type
!      (E     : Entity_Id;
!       Digs  : Int;
!       Rep   : Float_Rep_Kind;
!       Siz   : Int;
!       Align : Int)
     is
     begin
        Set_Type_Definition (Parent (E),
*************** package body CStand is
*** 202,211 ****
  
        Set_Ekind                      (E, E_Floating_Point_Type);
        Set_Etype                      (E, E);
-       Set_Float_Rep (E, Rep);
-       Init_Size                      (E, Siz);
-       Set_Elem_Alignment             (E);
        Init_Digits_Value              (E, Digs);
        Set_Float_Bounds               (E);
        Set_Is_Frozen                  (E);
        Set_Is_Public                  (E);
--- 209,218 ----
  
        Set_Ekind                      (E, E_Floating_Point_Type);
        Set_Etype                      (E, E);
        Init_Digits_Value              (E, Digs);
+       Set_Float_Rep                  (E, Rep);
+       Init_Size                      (E, Siz);
+       Set_Elem_Alignment             (E, Align);
        Set_Float_Bounds               (E);
        Set_Is_Frozen                  (E);
        Set_Is_Public                  (E);
*************** package body CStand is
*** 296,303 ****
  
     procedure Copy_Float_Type (To : Entity_Id; From : Entity_Id) is
     begin
!       Build_Float_Type (To, UI_To_Int (Esize (From)), Float_Rep (From),
!                         UI_To_Int (Digits_Value (From)));
     end Copy_Float_Type;
  
     ----------------------
--- 303,311 ----
  
     procedure Copy_Float_Type (To : Entity_Id; From : Entity_Id) is
     begin
!       Build_Float_Type
!         (To, UI_To_Int (Digits_Value (From)), Float_Rep (From),
!          UI_To_Int (Esize (From)), UI_To_Int (Alignment (From)));
     end Copy_Float_Type;
  
     ----------------------
*************** package body CStand is
*** 582,591 ****
     --  Start of processing for Create_Standard
  
     begin
-       --  Initialize scanner for internal scans of literals
- 
-       Scn.Initialize_Scanner (No_Unit, Internal_Source_File);
- 
        --  First step is to create defining identifiers for each entity
  
        for S in Standard_Entity_Type loop
--- 590,595 ----
*************** package body CStand is
*** 1181,1187 ****
        --  Any_Integer is given reasonable and consistent type and size values)
  
        Any_Type := New_Standard_Entity ("any type");
!       Decl := New_Node (N_Full_Type_Declaration, Stloc);
        Set_Defining_Identifier (Decl, Any_Type);
        Set_Scope (Any_Type, Standard_Standard);
        Build_Signed_Integer_Type (Any_Type, Standard_Integer_Size);
--- 1185,1191 ----
        --  Any_Integer is given reasonable and consistent type and size values)
  
        Any_Type := New_Standard_Entity ("any type");
!       Decl     := New_Node (N_Full_Type_Declaration, Stloc);
        Set_Defining_Identifier (Decl, Any_Type);
        Set_Scope (Any_Type, Standard_Standard);
        Build_Signed_Integer_Type (Any_Type, Standard_Integer_Size);
*************** package body CStand is
*** 1199,1204 ****
--- 1203,1210 ----
        Set_Etype             (Any_Access, Any_Access);
        Init_Size             (Any_Access, System_Address_Size);
        Set_Elem_Alignment    (Any_Access);
+       Set_Directly_Designated_Type
+                             (Any_Access, Any_Type);
  
        Any_Character := New_Standard_Entity ("a character type");
        Set_Ekind             (Any_Character, E_Enumeration_Type);
*************** package body CStand is
*** 2068,2082 ****
        Size      : Positive;
        Alignment : Natural)
     is
        Ent : constant Entity_Id := New_Standard_Entity;
  
     begin
        Set_Defining_Identifier (New_Node (N_Full_Type_Declaration, Stloc), Ent);
        Make_Name (Ent, Name);
        Set_Scope (Ent, Standard_Standard);
!       Build_Float_Type (Ent, Int (Size), Float_Rep, Pos (Digs));
!       Set_RM_Size (Ent, UI_From_Int (Int (Precision)));
!       Set_Alignment (Ent, UI_From_Int (Int (Alignment / 8)));
  
        if No (Back_End_Float_Types) then
           Back_End_Float_Types := New_Elmt_List;
--- 2074,2090 ----
        Size      : Positive;
        Alignment : Natural)
     is
+       pragma Unreferenced (Precision);
+       --  See Build_Float_Type for the rationale
+ 
        Ent : constant Entity_Id := New_Standard_Entity;
  
     begin
        Set_Defining_Identifier (New_Node (N_Full_Type_Declaration, Stloc), Ent);
        Make_Name (Ent, Name);
        Set_Scope (Ent, Standard_Standard);
!       Build_Float_Type
!         (Ent, Pos (Digs), Float_Rep, Int (Size), Int (Alignment / 8));
  
        if No (Back_End_Float_Types) then
           Back_End_Float_Types := New_Elmt_List;
diff -Nrcpad gcc-7.3.0/gcc/ada/cstand.ads gcc-8.1.0/gcc/ada/cstand.ads
*** gcc-7.3.0/gcc/ada/cstand.ads	Mon Sep 10 12:47:10 2007
--- gcc-8.1.0/gcc/ada/cstand.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2007, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/cstreams.c gcc-8.1.0/gcc/ada/cstreams.c
*** gcc-7.3.0/gcc/ada/cstreams.c	Mon Apr 18 12:27:10 2016
--- gcc-8.1.0/gcc/ada/cstreams.c	Thu Jan 11 08:53:52 2018
***************
*** 6,12 ****
   *                                                                          *
   *              Auxiliary C functions for Interfaces.C.Streams              *
   *                                                                          *
!  *          Copyright (C) 1992-2015, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  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-2018, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
***************
*** 67,76 ****
  extern "C" {
  #endif
  
- #ifdef VMS
- #include <unixlib.h>
- #endif
- 
  #ifdef __linux__
  /* Don't use macros on GNU/Linux since they cause incompatible changes between
     glibc 2.0 and 2.1 */
--- 67,72 ----
*************** __gnat_full_name (char *nam, char *buffe
*** 202,222 ****
       getcwd approach instead. */
    realpath (nam, buffer);
  
! #elif defined (VMS)
!   strncpy (buffer, __gnat_to_canonical_file_spec (nam), __gnat_max_path_len);
  
!   if (buffer[0] == '/' || strchr (buffer, '!'))  /* '!' means decnet node */
!     strncpy (buffer, __gnat_to_host_file_spec (buffer), __gnat_max_path_len);
    else
      {
!       char *nambuffer = alloca (__gnat_max_path_len);
! 
!       strncpy (nambuffer, buffer, __gnat_max_path_len);
!       strncpy
! 	(buffer, getcwd (buffer, __gnat_max_path_len, 0), __gnat_max_path_len);
!       strncat (buffer, "/", __gnat_max_path_len);
!       strncat (buffer, nambuffer, __gnat_max_path_len);
!       strncpy (buffer, __gnat_to_host_file_spec (buffer), __gnat_max_path_len);
      }
  
  #elif defined (__vxworks)
--- 198,214 ----
       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)
diff -Nrcpad gcc-7.3.0/gcc/ada/ctrl_c.c gcc-8.1.0/gcc/ada/ctrl_c.c
*** gcc-7.3.0/gcc/ada/ctrl_c.c	Tue Oct 11 18:12:52 2016
--- gcc-8.1.0/gcc/ada/ctrl_c.c	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *        Copyright (C) 2002-2013, Free Software Foundation, Inc.           *
   *                                                                          *
   * GNAT is free software;  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-2018, Free Software Foundation, Inc.           *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-7.3.0/gcc/ada/debug.adb gcc-8.1.0/gcc/ada/debug.adb
*** gcc-7.3.0/gcc/ada/debug.adb	Mon Jan 23 11:51:26 2017
--- gcc-8.1.0/gcc/ada/debug.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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
*** 49,55 ****
     --  dj   Suppress "junk null check" for access parameter values
     --  dk   Generate GNATBUG message on abort, even if previous errors
     --  dl   Generate unit load trace messages
!    --  dm
     --  dn   Generate messages for node/list allocation
     --  do   Print source from tree (original code only)
     --  dp   Generate messages for parser scope stack push/pops
--- 49,55 ----
     --  dj   Suppress "junk null check" for access parameter values
     --  dk   Generate GNATBUG message on abort, even if previous errors
     --  dl   Generate unit load trace messages
!    --  dm   Prevent special frontend inlining in GNATprove mode
     --  dn   Generate messages for node/list allocation
     --  do   Print source from tree (original code only)
     --  dp   Generate messages for parser scope stack push/pops
*************** package body Debug is
*** 69,81 ****
     --  dC   Output debugging information on check suppression
     --  dD   Delete elaboration checks in inner level routines
     --  dE   Apply elaboration checks to predefined units
!    --  dF   Front end data layout enabled
     --  dG   Generate all warnings including those normally suppressed
     --  dH   Hold (kill) call to gigi
     --  dI   Inhibit internal name numbering in gnatG listing
!    --  dJ
     --  dK   Kill all error messages
!    --  dL   Output trace information on elaboration checking
     --  dM   Assume all variables are modified (no current values)
     --  dN   No file name information in exception messages
     --  dO   Output immediate error messages
--- 69,81 ----
     --  dC   Output debugging information on check suppression
     --  dD   Delete elaboration checks in inner level routines
     --  dE   Apply elaboration checks to predefined units
!    --  dF   Perform the new SPARK checking rules for pointer aliasing
     --  dG   Generate all warnings including those normally suppressed
     --  dH   Hold (kill) call to gigi
     --  dI   Inhibit internal name numbering in gnatG listing
!    --  dJ   Prepend subprogram name in messages
     --  dK   Kill all error messages
!    --  dL   Ignore external calls from instances for elaboration
     --  dM   Assume all variables are modified (no current values)
     --  dN   No file name information in exception messages
     --  dO   Output immediate error messages
*************** package body Debug is
*** 107,121 ****
     --  d.n  Print source file names
     --  d.o  Conservative elaboration order for indirect calls
     --  d.p  Use original Ada 95 semantics for Bit_Order (disable AI95-0133)
!    --  d.q
!    --  d.r  Enable OK_To_Reorder_Components in non-variant records
!    --  d.s
     --  d.t  Disable static allocation of library level dispatch tables
     --  d.u  Enable Modify_Tree_For_C (update tree for c)
!    --  d.v  Enable OK_To_Reorder_Components in variant records
     --  d.w  Do not check for infinite loops
     --  d.x  No exception handlers
!    --  d.y
     --  d.z  Restore previous support for frontend handling of Inline_Always
  
     --  d.A  Read/write Aspect_Specifications hash table to tree
--- 107,121 ----
     --  d.n  Print source file names
     --  d.o  Conservative elaboration order for indirect calls
     --  d.p  Use original Ada 95 semantics for Bit_Order (disable AI95-0133)
!    --  d.q  Suppress optimizations on imported 'in'
!    --  d.r  Disable reordering of components in record types
!    --  d.s  Strict secondary stack management
     --  d.t  Disable static allocation of library level dispatch tables
     --  d.u  Enable Modify_Tree_For_C (update tree for c)
!    --  d.v  Enforce SPARK elaboration rules in SPARK code
     --  d.w  Do not check for infinite loops
     --  d.x  No exception handlers
!    --  d.y  Disable implicit pragma Elaborate_All on task bodies
     --  d.z  Restore previous support for frontend handling of Inline_Always
  
     --  d.A  Read/write Aspect_Specifications hash table to tree
*************** package body Debug is
*** 127,133 ****
     --  d.G  Ignore calls through generic formal parameters for elaboration
     --  d.H  GNSA mode for ASIS
     --  d.I  Do not ignore enum representation clauses in CodePeer mode
!    --  d.J
     --  d.K  Enable generation of contract-only procedures in CodePeer mode
     --  d.L  Depend on back end for limited types in if and case expressions
     --  d.M  Relaxed RM semantics
--- 127,133 ----
     --  d.G  Ignore calls through generic formal parameters for elaboration
     --  d.H  GNSA mode for ASIS
     --  d.I  Do not ignore enum representation clauses in CodePeer mode
!    --  d.J  Relaxed rules for pragma No_Return
     --  d.K  Enable generation of contract-only procedures in CodePeer mode
     --  d.L  Depend on back end for limited types in if and case expressions
     --  d.M  Relaxed RM semantics
*************** package body Debug is
*** 145,150 ****
--- 145,204 ----
     --  d.Y
     --  d.Z  Do not enable expansion in configurable run-time mode
  
+    --  d_a  Stop elaboration checks on accept or select statement
+    --  d_b
+    --  d_c
+    --  d_d
+    --  d_e  Ignore entry calls and requeue statements for elaboration
+    --  d_f
+    --  d_g
+    --  d_h
+    --  d_i  Ignore activations and calls to instances for elaboration
+    --  d_j
+    --  d_k
+    --  d_l
+    --  d_m
+    --  d_n
+    --  d_o
+    --  d_p  Ignore assertion pragmas for elaboration
+    --  d_q
+    --  d_r
+    --  d_s
+    --  d_t
+    --  d_u
+    --  d_v
+    --  d_w
+    --  d_x
+    --  d_y
+    --  d_z
+ 
+    --  d_A
+    --  d_B
+    --  d_C
+    --  d_D
+    --  d_E
+    --  d_F
+    --  d_G
+    --  d_H
+    --  d_I
+    --  d_J
+    --  d_K
+    --  d_L  Output trace information on elaboration checking
+    --  d_M
+    --  d_N
+    --  d_O
+    --  d_P
+    --  d_Q
+    --  d_R
+    --  d_S
+    --  d_T
+    --  d_U
+    --  d_V
+    --  d_W
+    --  d_X
+    --  d_Y
+    --  d_Z
+ 
     --  d1   Error msgs have node numbers where possible
     --  d2   Eliminate error flags in verbose form error messages
     --  d3   Dump bad node in Comperr on an abort
*************** package body Debug is
*** 160,169 ****
     --  d.3  Output debugging information from Exp_Unst
     --  d.4  Do not delete generated C file in case of errors
     --  d.5  Do not generate imported subprogram definitions in C code
!    --  d.6  Do not avoid declaring unreferenced itypes in C code
!    --  d.7
     --  d.8
!    --  d.9
  
     --  Debug flags for binder (GNATBIND)
  
--- 214,233 ----
     --  d.3  Output debugging information from Exp_Unst
     --  d.4  Do not delete generated C file in case of errors
     --  d.5  Do not generate imported subprogram definitions in C code
!    --  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
!    --  d.9  Disable build-in-place for nonlimited types
! 
!    --  d_1
!    --  d_2
!    --  d_3
!    --  d_4
!    --  d_5
!    --  d_6
!    --  d_7
!    --  d_8
!    --  d_9
  
     --  Debug flags for binder (GNATBIND)
  
*************** package body Debug is
*** 281,286 ****
--- 345,355 ----
     --       generated each time a request is made to the library manager to
     --       load a new unit.
  
+    --  dm   Prevent special frontend inlining in GNATprove mode. In some cases,
+    --       some subprogram calls are inlined in GNATprove mode in order to
+    --       facilitate formal verification. This debug switch prevents that
+    --       inlining to happen.
+ 
     --  dn   Generate messages for node/list allocation. Each time a node or
     --       list header is allocated, a line of output is generated. Certain
     --       other basic tree operations also cause a line of output to be
*************** package body Debug is
*** 352,358 ****
     --       information for all internal type and object entities, as well
     --       as all user defined type and object entities including private
     --       and incomplete types. This debug switch also automatically sets
!    --       the equivalent of -gnatR3m.
  
     --  dB   Output debug encodings for types and variants. See Exp_Dbug for
     --       exact form of the generated output.
--- 421,427 ----
     --       information for all internal type and object entities, as well
     --       as all user defined type and object entities including private
     --       and incomplete types. This debug switch also automatically sets
!    --       the equivalent of -gnatRm.
  
     --  dB   Output debug encodings for types and variants. See Exp_Dbug for
     --       exact form of the generated output.
*************** package body Debug is
*** 378,386 ****
     --  dE   Apply compile time elaboration checking for with relations between
     --       predefined units. Normally no checks are made.
  
!    --  dF   Front end data layout enabled. Normally front end data layout
!    --       is only enabled if the target parameter Backend_Layout is False.
!    --       This debugging switch enables it unconditionally.
  
     --  dG   Generate all warnings. Normally Errout suppresses warnings on
     --       units that are not part of the main extended source, and also
--- 447,456 ----
     --  dE   Apply compile time elaboration checking for with relations between
     --       predefined units. Normally no checks are made.
  
!    --  dF   Perform the new SPARK checking rules for pointer aliasing. This is
!    --       only activated in GNATprove mode and on SPARK code. These rules are
!    --       not yet part of the official SPARK language, but are expected to be
!    --       included in a future version of SPARK.
  
     --  dG   Generate all warnings. Normally Errout suppresses warnings on
     --       units that are not part of the main extended source, and also
*************** package body Debug is
*** 399,412 ****
     --       is used in the fixed bugs run to minimize system and version
     --       dependency in filed -gnatD or -gnatG output.
  
     --  dK   Kill all error messages. This debug flag suppresses the output
     --       of all error messages. It is used in regression tests where the
     --       error messages are target dependent and irrelevant.
  
!    --  dL   Output trace information on elaboration checking. This debug
!    --       switch causes output to be generated showing each call or
!    --       instantiation as it is checked, and the progress of the recursive
!    --       trace through elaboration calls at compile time.
  
     --  dM   Assume all variables have been modified, and ignore current value
     --       indications. This debug flag disconnects the tracking of constant
--- 469,486 ----
     --       is used in the fixed bugs run to minimize system and version
     --       dependency in filed -gnatD or -gnatG output.
  
+    --  dJ   Prepend the name of the enclosing subprogram in compiler messages
+    --       (errors, warnings, style checks). This is useful in particular to
+    --       integrate compiler warnings in static analysis tools such as
+    --       CodePeer.
+ 
     --  dK   Kill all error messages. This debug flag suppresses the output
     --       of all error messages. It is used in regression tests where the
     --       error messages are target dependent and irrelevant.
  
!    --  dL   The compiler ignores calls in instances and invoke subprograms
!    --       which are external to the instance for both the static and dynamic
!    --       elaboration models.
  
     --  dM   Assume all variables have been modified, and ignore current value
     --       indications. This debug flag disconnects the tracking of constant
*************** package body Debug is
*** 543,549 ****
  
     --  d.l  Use Ada 95 semantics for limited function returns. This may be
     --       used to work around the incompatibility introduced by AI-318-2.
!    --       It is useful only in -gnat05 mode.
  
     --  d.m  When -gnatl is used, the normal output includes full listings of
     --       all files in the extended main source (body/spec/subunits). If this
--- 617,623 ----
  
     --  d.l  Use Ada 95 semantics for limited function returns. This may be
     --       used to work around the incompatibility introduced by AI-318-2.
!    --       It is useful only in Ada 2005 and later.
  
     --  d.m  When -gnatl is used, the normal output includes full listings of
     --       all files in the extended main source (body/spec/subunits). If this
*************** package body Debug is
*** 562,569 ****
     --       interpretation of component clauses crossing byte boundaries when
     --       using the non-default bit order (i.e. ignore AI95-0133).
  
!    --  d.r  Forces the flag OK_To_Reorder_Components to be set in all record
!    --       base types that have no discriminants.
  
     --  d.t  The compiler has been modified (a fairly extensive modification)
     --       to generate static dispatch tables for library level tagged types.
--- 636,659 ----
     --       interpretation of component clauses crossing byte boundaries when
     --       using the non-default bit order (i.e. ignore AI95-0133).
  
!    --  d.q  If an array variable or constant is not modified in Ada code, and
!    --       is passed to an 'in' parameter of a foreign-convention subprogram,
!    --       and that subprogram modifies the array, the Ada compiler normally
!    --       assumes that the array is not modified. This option suppresses such
!    --       optimizations. This option should not be used; the correct solution
!    --       is to declare the parameter 'in out'.
! 
!    --  d.r  Do not reorder components in record types.
! 
!    --  d.s  The compiler no longer attempts to optimize the calls to secondary
!    --       stack management routines SS_Mark and SS_Release. As a result, each
!    --       transient block tasked with secondary stack management will fulfill
!    --       its role unconditionally.
! 
!    --  d.s  The compiler does not generate calls to secondary stack management
!    --       routines SS_Mark and SS_Release for a transient block when there is
!    --       an enclosing scoping construct which already manages the secondary
!    --       stack.
  
     --  d.t  The compiler has been modified (a fairly extensive modification)
     --       to generate static dispatch tables for library level tagged types.
*************** package body Debug is
*** 574,581 ****
     --  d.u  Sets Modify_Tree_For_C mode in which tree is modified to make it
     --       easier to generate code using a C compiler.
  
!    --  d.v  Forces the flag OK_To_Reorder_Components to be set in all record
!    --       base types that have at least one discriminant (v = variant).
  
     --  d.w  This flag turns off the scanning of loops to detect possible
     --       infinite loops.
--- 664,675 ----
     --  d.u  Sets Modify_Tree_For_C mode in which tree is modified to make it
     --       easier to generate code using a C compiler.
  
!    --  d.v  This flag enforces the elaboration rules defined in the SPARK
!    --       Reference Manual, chapter 7.7, to all SPARK code within a unit. As
!    --       a result, constructs which violate the rules in chapter 7.7 are no
!    --       longer accepted, even if the implementation is able to statically
!    --       ensure that accepting these constructs does not introduce the
!    --       possibility of failing an elaboration check.
  
     --  d.w  This flag turns off the scanning of loops to detect possible
     --       infinite loops.
*************** package body Debug is
*** 585,590 ****
--- 679,690 ----
     --       fully compiled and analyzed, they just get eliminated from the
     --       code generation step.
  
+    --  d.y  Disable implicit pragma Elaborate_All on task bodies. When a task
+    --       body calls a procedure in the same package, and that procedure
+    --       calls a procedure in another package, the static elaboration
+    --       machinery adds an implicit Elaborate_All on the other package. This
+    --       switch disables the addition of the implicit pragma in such cases.
+ 
     --  d.z  Restore previous front-end support for Inline_Always. In default
     --       mode, for targets that use the GCC back end, Inline_Always is
     --       handled by the back end. Use of this switch restores the previous
*************** package body Debug is
*** 645,650 ****
--- 745,755 ----
     --       cases being able to change this default might be useful to remove
     --       some false positives.
  
+    --  d.J  Relaxed rules for pragma No_Return. A pragma No_Return is illegal
+    --       if it applies to a body. This switch disables the legality check
+    --       for that. If the procedure does in fact return normally, execution
+    --       is erroneous, and therefore unpredictable.
+ 
     --  d.K  Enable generation of contract-only procedures in CodePeer mode and
     --       report a warning on subprograms for which the contract-only body
     --       cannot be built. Currently reported on subprograms defined in
*************** package body Debug is
*** 717,722 ****
--- 822,849 ----
     --       case if debug flag -gnatd.Z is used. This is to deal with the case
     --       where we discover difficulties in this new processing.
  
+    --  d_a  The compiler stops the examination of a task body once it reaches
+    --       an accept or select statement for the static elaboration model. The
+    --       behavior is similar to that of No_Entry_Calls_In_Elaboration_Code,
+    --       but does not penalize actual entry calls in elaboration code.
+ 
+    --  d_e  The compiler ignores simple entry calls, asynchronous transfer of
+    --       control, conditional entry calls, timed entry calls, and requeue
+    --       statements in both the static and dynamic elaboration models.
+ 
+    --  d_i  The compiler ignores calls and task activations when they target a
+    --       subprogram or task type defined in an external instance for both
+    --       the static and dynamic elaboration models.
+ 
+    --  d_p  The compiler ignores calls to subprograms which verify the run-time
+    --       semantics of invariants and postconditions in both the static and
+    --       dynamic elaboration models.
+ 
+    --  d_L  Output trace information on elaboration checking. This debug switch
+    --       causes output to be generated showing each call or instantiation as
+    --       it is checked, and the progress of the recursive trace through
+    --       elaboration calls at compile time.
+ 
     --  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
*** 781,789 ****
     --       This debug flag disables this generation when generating C code,
     --       assuming a proper #include will be used instead.
  
!    --  d.6  By default the C back-end avoids declaring itypes that are not
     --       referenced by the generated C code. This debug flag restores the
!    --       output of all the itypes.
  
     ------------------------------------------
     -- Documentation for Binder Debug Flags --
--- 908,925 ----
     --       This debug flag disables this generation when generating C code,
     --       assuming a proper #include will be used instead.
  
!    --  d.6  By default the C back-end avoids declaring types that are not
     --       referenced by the generated C code. This debug flag restores the
!    --       output of all the types.
! 
!    --  d.7  Indicates (to gnat2scil) that CodePeer is being invoked as a
!    --       prover by the SPARK tools and that therefore gnat2scil should
!    --       avoid SCIL generation strategies which can introduce soundness
!    --       issues (e.g., assuming that a low bound of an array parameter
!    --       of an unconstrained subtype belongs to the index subtype).
! 
!    --  d.9  Enable build-in-place for function calls returning some nonlimited
!    --       types.
  
     ------------------------------------------
     -- Documentation for Binder Debug Flags --
*************** package body Debug is
*** 821,828 ****
     --      prefer specs with no bodies to specs with bodies, and between two
     --      specs with bodies, prefers the one whose body is closer to being
     --      able to be elaborated. This is a clear improvement, but we provide
!    --      this debug flag in case of regressions. Note: -do is even older than
!    --      -dp.
  
     --  dp  Use old elaboration order preference. The new preference rules
     --      elaborate all units within a strongly connected component together,
--- 957,964 ----
     --      prefer specs with no bodies to specs with bodies, and between two
     --      specs with bodies, prefers the one whose body is closer to being
     --      able to be elaborated. This is a clear improvement, but we provide
!    --      this debug flag in case of regressions. Note: -do is even older
!    --      than -dp.
  
     --  dp  Use old elaboration order preference. The new preference rules
     --      elaborate all units within a strongly connected component together,
*************** package body Debug is
*** 893,899 ****
     --------------------
  
     procedure Set_Debug_Flag (C : Character; Val : Boolean := True) is
!       subtype Dig is Character range '1' .. '9';
        subtype LLet is Character range 'a' .. 'z';
        subtype ULet is Character range 'A' .. 'Z';
  
--- 1029,1035 ----
     --------------------
  
     procedure Set_Debug_Flag (C : Character; Val : Boolean := True) is
!       subtype Dig  is Character range '1' .. '9';
        subtype LLet is Character range 'a' .. 'z';
        subtype ULet is Character range 'A' .. 'Z';
  
*************** package body Debug is
*** 1039,1045 ****
     ---------------------------
  
     procedure Set_Dotted_Debug_Flag (C : Character; Val : Boolean := True) is
!       subtype Dig is Character range '1' .. '9';
        subtype LLet is Character range 'a' .. 'z';
        subtype ULet is Character range 'A' .. 'Z';
  
--- 1175,1181 ----
     ---------------------------
  
     procedure Set_Dotted_Debug_Flag (C : Character; Val : Boolean := True) is
!       subtype Dig  is Character range '1' .. '9';
        subtype LLet is Character range 'a' .. 'z';
        subtype ULet is Character range 'A' .. 'Z';
  
*************** package body Debug is
*** 1180,1183 ****
--- 1316,1468 ----
        end if;
     end Set_Dotted_Debug_Flag;
  
+    --------------------------------
+    -- Set_Underscored_Debug_Flag --
+    --------------------------------
+ 
+    procedure Set_Underscored_Debug_Flag
+      (C   : Character;
+       Val : Boolean := True)
+    is
+       subtype Dig  is Character range '1' .. '9';
+       subtype LLet is Character range 'a' .. 'z';
+       subtype ULet is Character range 'A' .. 'Z';
+ 
+    begin
+       if C in Dig then
+          case Dig (C) is
+             when '1' =>
+                Debug_Flag_Underscore_1 := Val;
+             when '2' =>
+                Debug_Flag_Underscore_2 := Val;
+             when '3' =>
+                Debug_Flag_Underscore_3 := Val;
+             when '4' =>
+                Debug_Flag_Underscore_4 := Val;
+             when '5' =>
+                Debug_Flag_Underscore_5 := Val;
+             when '6' =>
+                Debug_Flag_Underscore_6 := Val;
+             when '7' =>
+                Debug_Flag_Underscore_7 := Val;
+             when '8' =>
+                Debug_Flag_Underscore_8 := Val;
+             when '9' =>
+                Debug_Flag_Underscore_9 := Val;
+          end case;
+ 
+       elsif C in ULet then
+          case ULet (C) is
+             when 'A' =>
+                Debug_Flag_Underscore_AA := Val;
+             when 'B' =>
+                Debug_Flag_Underscore_BB := Val;
+             when 'C' =>
+                Debug_Flag_Underscore_CC := Val;
+             when 'D' =>
+                Debug_Flag_Underscore_DD := Val;
+             when 'E' =>
+                Debug_Flag_Underscore_EE := Val;
+             when 'F' =>
+                Debug_Flag_Underscore_FF := Val;
+             when 'G' =>
+                Debug_Flag_Underscore_GG := Val;
+             when 'H' =>
+                Debug_Flag_Underscore_HH := Val;
+             when 'I' =>
+                Debug_Flag_Underscore_II := Val;
+             when 'J' =>
+                Debug_Flag_Underscore_JJ := Val;
+             when 'K' =>
+                Debug_Flag_Underscore_KK := Val;
+             when 'L' =>
+                Debug_Flag_Underscore_LL := Val;
+             when 'M' =>
+                Debug_Flag_Underscore_MM := Val;
+             when 'N' =>
+                Debug_Flag_Underscore_NN := Val;
+             when 'O' =>
+                Debug_Flag_Underscore_OO := Val;
+             when 'P' =>
+                Debug_Flag_Underscore_PP := Val;
+             when 'Q' =>
+                Debug_Flag_Underscore_QQ := Val;
+             when 'R' =>
+                Debug_Flag_Underscore_RR := Val;
+             when 'S' =>
+                Debug_Flag_Underscore_SS := Val;
+             when 'T' =>
+                Debug_Flag_Underscore_TT := Val;
+             when 'U' =>
+                Debug_Flag_Underscore_UU := Val;
+             when 'V' =>
+                Debug_Flag_Underscore_VV := Val;
+             when 'W' =>
+                Debug_Flag_Underscore_WW := Val;
+             when 'X' =>
+                Debug_Flag_Underscore_XX := Val;
+             when 'Y' =>
+                Debug_Flag_Underscore_YY := Val;
+             when 'Z' =>
+                Debug_Flag_Underscore_ZZ := Val;
+          end case;
+ 
+       else
+          case LLet (C) is
+             when 'a' =>
+                Debug_Flag_Underscore_A := Val;
+             when 'b' =>
+                Debug_Flag_Underscore_B := Val;
+             when 'c' =>
+                Debug_Flag_Underscore_C := Val;
+             when 'd' =>
+                Debug_Flag_Underscore_D := Val;
+             when 'e' =>
+                Debug_Flag_Underscore_E := Val;
+             when 'f' =>
+                Debug_Flag_Underscore_F := Val;
+             when 'g' =>
+                Debug_Flag_Underscore_G := Val;
+             when 'h' =>
+                Debug_Flag_Underscore_H := Val;
+             when 'i' =>
+                Debug_Flag_Underscore_I := Val;
+             when 'j' =>
+                Debug_Flag_Underscore_J := Val;
+             when 'k' =>
+                Debug_Flag_Underscore_K := Val;
+             when 'l' =>
+                Debug_Flag_Underscore_L := Val;
+             when 'm' =>
+                Debug_Flag_Underscore_M := Val;
+             when 'n' =>
+                Debug_Flag_Underscore_N := Val;
+             when 'o' =>
+                Debug_Flag_Underscore_O := Val;
+             when 'p' =>
+                Debug_Flag_Underscore_P := Val;
+             when 'q' =>
+                Debug_Flag_Underscore_Q := Val;
+             when 'r' =>
+                Debug_Flag_Underscore_R := Val;
+             when 's' =>
+                Debug_Flag_Underscore_S := Val;
+             when 't' =>
+                Debug_Flag_Underscore_T := Val;
+             when 'u' =>
+                Debug_Flag_Underscore_U := Val;
+             when 'v' =>
+                Debug_Flag_Underscore_V := Val;
+             when 'w' =>
+                Debug_Flag_Underscore_W := Val;
+             when 'x' =>
+                Debug_Flag_Underscore_X := Val;
+             when 'y' =>
+                Debug_Flag_Underscore_Y := Val;
+             when 'z' =>
+                Debug_Flag_Underscore_Z := Val;
+          end case;
+       end if;
+    end Set_Underscored_Debug_Flag;
+ 
  end Debug;
diff -Nrcpad gcc-7.3.0/gcc/ada/debug.ads gcc-8.1.0/gcc/ada/debug.ads
*** gcc-7.3.0/gcc/ada/debug.ads	Thu Nov 12 11:59:18 2015
--- gcc-8.1.0/gcc/ada/debug.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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 Debug is
*** 176,181 ****
--- 176,245 ----
     Debug_Flag_Dot_8 : Boolean := False;
     Debug_Flag_Dot_9 : Boolean := False;
  
+    Debug_Flag_Underscore_A : Boolean := False;
+    Debug_Flag_Underscore_B : Boolean := False;
+    Debug_Flag_Underscore_C : Boolean := False;
+    Debug_Flag_Underscore_D : Boolean := False;
+    Debug_Flag_Underscore_E : Boolean := False;
+    Debug_Flag_Underscore_F : Boolean := False;
+    Debug_Flag_Underscore_G : Boolean := False;
+    Debug_Flag_Underscore_H : Boolean := False;
+    Debug_Flag_Underscore_I : Boolean := False;
+    Debug_Flag_Underscore_J : Boolean := False;
+    Debug_Flag_Underscore_K : Boolean := False;
+    Debug_Flag_Underscore_L : Boolean := False;
+    Debug_Flag_Underscore_M : Boolean := False;
+    Debug_Flag_Underscore_N : Boolean := False;
+    Debug_Flag_Underscore_O : Boolean := False;
+    Debug_Flag_Underscore_P : Boolean := False;
+    Debug_Flag_Underscore_Q : Boolean := False;
+    Debug_Flag_Underscore_R : Boolean := False;
+    Debug_Flag_Underscore_S : Boolean := False;
+    Debug_Flag_Underscore_T : Boolean := False;
+    Debug_Flag_Underscore_U : Boolean := False;
+    Debug_Flag_Underscore_V : Boolean := False;
+    Debug_Flag_Underscore_W : Boolean := False;
+    Debug_Flag_Underscore_X : Boolean := False;
+    Debug_Flag_Underscore_Y : Boolean := False;
+    Debug_Flag_Underscore_Z : Boolean := False;
+ 
+    Debug_Flag_Underscore_AA : Boolean := False;
+    Debug_Flag_Underscore_BB : Boolean := False;
+    Debug_Flag_Underscore_CC : Boolean := False;
+    Debug_Flag_Underscore_DD : Boolean := False;
+    Debug_Flag_Underscore_EE : Boolean := False;
+    Debug_Flag_Underscore_FF : Boolean := False;
+    Debug_Flag_Underscore_GG : Boolean := False;
+    Debug_Flag_Underscore_HH : Boolean := False;
+    Debug_Flag_Underscore_II : Boolean := False;
+    Debug_Flag_Underscore_JJ : Boolean := False;
+    Debug_Flag_Underscore_KK : Boolean := False;
+    Debug_Flag_Underscore_LL : Boolean := False;
+    Debug_Flag_Underscore_MM : Boolean := False;
+    Debug_Flag_Underscore_NN : Boolean := False;
+    Debug_Flag_Underscore_OO : Boolean := False;
+    Debug_Flag_Underscore_PP : Boolean := False;
+    Debug_Flag_Underscore_QQ : Boolean := False;
+    Debug_Flag_Underscore_RR : Boolean := False;
+    Debug_Flag_Underscore_SS : Boolean := False;
+    Debug_Flag_Underscore_TT : Boolean := False;
+    Debug_Flag_Underscore_UU : Boolean := False;
+    Debug_Flag_Underscore_VV : Boolean := False;
+    Debug_Flag_Underscore_WW : Boolean := False;
+    Debug_Flag_Underscore_XX : Boolean := False;
+    Debug_Flag_Underscore_YY : Boolean := False;
+    Debug_Flag_Underscore_ZZ : Boolean := False;
+ 
+    Debug_Flag_Underscore_1 : Boolean := False;
+    Debug_Flag_Underscore_2 : Boolean := False;
+    Debug_Flag_Underscore_3 : Boolean := False;
+    Debug_Flag_Underscore_4 : Boolean := False;
+    Debug_Flag_Underscore_5 : Boolean := False;
+    Debug_Flag_Underscore_6 : Boolean := False;
+    Debug_Flag_Underscore_7 : Boolean := False;
+    Debug_Flag_Underscore_8 : Boolean := False;
+    Debug_Flag_Underscore_9 : Boolean := False;
+ 
     procedure Set_Debug_Flag (C : Character; Val : Boolean := True);
     --  Where C is 0-9, A-Z, or a-z, sets the corresponding debug flag to
     --  the given value. In the checks off version of debug, the call to
*************** package Debug is
*** 185,188 ****
--- 249,256 ----
     --  Where C is 0-9, A-Z, or a-z, sets the corresponding dotted debug
     --  flag (e.g. call with C = 'a' for the .a flag).
  
+    procedure Set_Underscored_Debug_Flag (C : Character; Val : Boolean := True);
+    --  Where C is 0-9, A-Z, or a-z, sets the corresponding underscored debug
+    --  flag (e.g. call with C = 'a' for the _a flag).
+ 
  end Debug;
diff -Nrcpad gcc-7.3.0/gcc/ada/debug_a.adb gcc-8.1.0/gcc/ada/debug_a.adb
*** gcc-7.3.0/gcc/ada/debug_a.adb	Wed Jan 29 15:53:48 2014
--- gcc-8.1.0/gcc/ada/debug_a.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2013, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/debug_a.ads gcc-8.1.0/gcc/ada/debug_a.ads
*** gcc-7.3.0/gcc/ada/debug_a.ads	Mon Sep 10 12:47:10 2007
--- gcc-8.1.0/gcc/ada/debug_a.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2007, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/dec.ads gcc-8.1.0/gcc/ada/dec.ads
*** gcc-7.3.0/gcc/ada/dec.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/dec.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,38 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                                  D E C                                   --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1996-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- --
- -- 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 an AlphaVMS package, which is imported by every package in
- --  DECLib and tested for in gnatbind, in order to add "-ldecgnat" to
- --  the bind. It is also a convenient parent for all DEC IO child packages.
- 
- package DEC is
-    pragma Pure;
- end DEC;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/directio.ads gcc-8.1.0/gcc/ada/directio.ads
*** gcc-7.3.0/gcc/ada/directio.ads	Fri Aug  1 10:33:45 2008
--- gcc-8.1.0/gcc/ada/directio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,24 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                            D I R E C T _ I O                             --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- pragma Ada_2005;
- --  Explicit setting of Ada 2005 mode is required here, since we want to with a
- --  child unit (not possible in Ada 83 mode), and Direct_IO is not considered
- --  to be an internal unit that is automatically compiled in Ada 2005 mode
- --  (since a user is allowed to redeclare Direct_IO).
- 
- with Ada.Direct_IO;
- 
- generic package Direct_IO renames Ada.Direct_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/doc/Makefile gcc-8.1.0/gcc/ada/doc/Makefile
*** gcc-7.3.0/gcc/ada/doc/Makefile	Thu Apr 21 10:06:40 2016
--- gcc-8.1.0/gcc/ada/doc/Makefile	Thu Jan 11 08:52:59 2018
***************
*** 1,7 ****
  # Makefile for Sphinx documentation
  
  # You can set these variables from the command line.
! SPHINXOPTS    =
  SPHINXBUILD   = DOC_NAME=$* sphinx-build
  PAPER         =
  BUILDDIR      = build
--- 1,7 ----
  # Makefile for Sphinx documentation
  
  # You can set these variables from the command line.
! SPHINXOPTS    = -W
  SPHINXBUILD   = DOC_NAME=$* sphinx-build
  PAPER         =
  BUILDDIR      = build
*************** clean:
*** 47,53 ****
  
  %.pdf:
  	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/$*/pdf
- 	cp $(SOURCEDIR)/share/sphinx.sty $(BUILDDIR)/$*/pdf
  	$(MAKE) -C $(BUILDDIR)/$*/pdf all-pdf LATEXOPTS="-interaction=nonstopmode"
  
  %.txt:
--- 47,52 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/doc/gnat_rm/about_this_guide.rst gcc-8.1.0/gcc/ada/doc/gnat_rm/about_this_guide.rst
*** gcc-7.3.0/gcc/ada/doc/gnat_rm/about_this_guide.rst	Fri Jan 13 11:23:42 2017
--- gcc-8.1.0/gcc/ada/doc/gnat_rm/about_this_guide.rst	Fri Sep  8 12:34:54 2017
*************** Conventions
*** 130,143 ****
  Following are examples of the typographical and graphic conventions used
  in this guide:
  
! * `Functions`, `utility program names`, `standard names`,
!   and `classes`.
  
! * `Option flags`
  
  * :file:`File names`
  
! * `Variables`
  
  * *Emphasis*
  
--- 130,143 ----
  Following are examples of the typographical and graphic conventions used
  in this guide:
  
! * ``Functions``, ``utility program names``, ``standard names``,
!   and ``classes``.
  
! * ``Option flags``
  
  * :file:`File names`
  
! * ``Variables``
  
  * *Emphasis*
  
diff -Nrcpad gcc-7.3.0/gcc/ada/doc/gnat_rm/compatibility_and_porting_guide.rst gcc-8.1.0/gcc/ada/doc/gnat_rm/compatibility_and_porting_guide.rst
*** gcc-7.3.0/gcc/ada/doc/gnat_rm/compatibility_and_porting_guide.rst	Fri Jan 13 11:23:42 2017
--- gcc-8.1.0/gcc/ada/doc/gnat_rm/compatibility_and_porting_guide.rst	Fri Sep  8 12:34:54 2017
*************** Writing Portable Fixed-Point Declaration
*** 16,22 ****
  =========================================
  
  The Ada Reference Manual gives an implementation freedom to choose bounds
! that are narrower by `Small` from the given bounds.
  For example, if we write
  
  .. code-block:: ada
--- 16,22 ----
  =========================================
  
  The Ada Reference Manual gives an implementation freedom to choose bounds
! that are narrower by ``Small`` from the given bounds.
  For example, if we write
  
  .. code-block:: ada
*************** look at this, and figure out how to avoi
*** 31,37 ****
  
  First, why does this freedom exist, and why would an implementation
  take advantage of it? To answer this, take a closer look at the type
! declaration for `F1` above. If the compiler uses the given bounds,
  it would need 9 bits to hold the largest positive value (and typically
  that means 16 bits on all machines). But if the implementation chooses
  the +127.0 bound then it can fit values of the type in 8 bits.
--- 31,37 ----
  
  First, why does this freedom exist, and why would an implementation
  take advantage of it? To answer this, take a closer look at the type
! declaration for ``F1`` above. If the compiler uses the given bounds,
  it would need 9 bits to hold the largest positive value (and typically
  that means 16 bits on all machines). But if the implementation chooses
  the +127.0 bound then it can fit values of the type in 8 bits.
*************** We could imagine three types of implemen
*** 67,73 ****
  (a) those that narrow the range automatically if they can figure
      out that the narrower range will allow storage in a smaller machine unit,
  
! (b) those that will narrow only if forced to by a `'Size` clause, and
  
  (c) those that will never narrow.
  
--- 67,73 ----
  (a) those that narrow the range automatically if they can figure
      out that the narrower range will allow storage in a smaller machine unit,
  
! (b) those that will narrow only if forced to by a ``'Size`` clause, and
  
  (c) those that will never narrow.
  
*************** and no real compiler would do this. All
*** 90,98 ****
  the categories (a), (b) or (c) above.
  
  So, how do you get the compiler to do what you want? The answer is give the
! actual bounds you want, and then use a `'Small` clause and a
! `'Size` clause to absolutely pin down what the compiler does.
! E.g., for `F2` above, we will write:
  
  .. code-block:: ada
  
--- 90,98 ----
  the categories (a), (b) or (c) above.
  
  So, how do you get the compiler to do what you want? The answer is give the
! actual bounds you want, and then use a ``'Small`` clause and a
! ``'Size`` clause to absolutely pin down what the compiler does.
! E.g., for ``F2`` above, we will write:
  
  .. code-block:: ada
  
*************** Ada 95 and later versions of the standar
*** 161,167 ****
  * *Character literals*
  
    Some uses of character literals are ambiguous.  Since Ada 95 has introduced
!   `Wide_Character` as a new predefined character type, some uses of
    character literals that were legal in Ada 83 are illegal in Ada 95.
    For example:
  
--- 161,167 ----
  * *Character literals*
  
    Some uses of character literals are ambiguous.  Since Ada 95 has introduced
!   ``Wide_Character`` as a new predefined character type, some uses of
    character literals that were legal in Ada 83 are illegal in Ada 95.
    For example:
  
*************** Ada 95 and later versions of the standar
*** 170,176 ****
         for Char in 'A' .. 'Z' loop ... end loop;
  
    The problem is that 'A' and 'Z' could be from either
!   `Character` or `Wide_Character`.  The simplest correction
    is to make the type explicit; e.g.:
  
    .. code-block:: ada
--- 170,176 ----
         for Char in 'A' .. 'Z' loop ... end loop;
  
    The problem is that 'A' and 'Z' could be from either
!   ``Character`` or ``Wide_Character``.  The simplest correction
    is to make the type explicit; e.g.:
  
    .. code-block:: ada
*************** Ada 95 and later versions of the standar
*** 179,186 ****
  
  * *New reserved words*
  
!   The identifiers `abstract`, `aliased`, `protected`,
!   `requeue`, `tagged`, and `until` are reserved in Ada 95.
    Existing Ada 83 code using any of these identifiers must be edited to
    use some alternative name.
  
--- 179,186 ----
  
  * *New reserved words*
  
!   The identifiers ``abstract``, ``aliased``, ``protected``,
!   ``requeue``, ``tagged``, and ``until`` are reserved in Ada 95.
    Existing Ada 83 code using any of these identifiers must be edited to
    use some alternative name.
  
*************** Ada 95 and later versions of the standar
*** 207,244 ****
    body if it is empty, or, if it is non-empty, introduce a dummy declaration
    into the spec that makes the body required.  One approach is to add a private
    part to the package declaration (if necessary), and define a parameterless
!   procedure called `Requires_Body`, which must then be given a dummy
    procedure body in the package body, which then becomes required.
    Another approach (assuming that this does not introduce elaboration
!   circularities) is to add an `Elaborate_Body` pragma to the package spec,
    since one effect of this pragma is to require the presence of a package body.
  
  * *Numeric_Error is the same exception as Constraint_Error*
  
!   In Ada 95, the exception `Numeric_Error` is a renaming of `Constraint_Error`.
    This means that it is illegal to have separate exception handlers for
    the two exceptions.  The fix is simply to remove the handler for the
!   `Numeric_Error` case (since even in Ada 83, a compiler was free to raise
!   `Constraint_Error` in place of `Numeric_Error` in all cases).
  
  * *Indefinite subtypes in generics*
  
!   In Ada 83, it was permissible to pass an indefinite type (e.g, `String`)
    as the actual for a generic formal private type, but then the instantiation
    would be illegal if there were any instances of declarations of variables
    of this type in the generic body.  In Ada 95, to avoid this clear violation
    of the methodological principle known as the 'contract model',
    the generic declaration explicitly indicates whether
    or not such instantiations are permitted.  If a generic formal parameter
!   has explicit unknown discriminants, indicated by using `(<>)` after the
    subtype name, then it can be instantiated with indefinite types, but no
    stand-alone variables can be declared of this type.  Any attempt to declare
    such a variable will result in an illegality at the time the generic is
!   declared.  If the `(<>)` notation is not used, then it is illegal
    to instantiate the generic with an indefinite type.
    This is the potential incompatibility issue when porting Ada 83 code to Ada 95.
    It will show up as a compile time error, and
!   the fix is usually simply to add the `(<>)` to the generic declaration.
  
  
  .. _More_deterministic_semantics:
--- 207,244 ----
    body if it is empty, or, if it is non-empty, introduce a dummy declaration
    into the spec that makes the body required.  One approach is to add a private
    part to the package declaration (if necessary), and define a parameterless
!   procedure called ``Requires_Body``, which must then be given a dummy
    procedure body in the package body, which then becomes required.
    Another approach (assuming that this does not introduce elaboration
!   circularities) is to add an ``Elaborate_Body`` pragma to the package spec,
    since one effect of this pragma is to require the presence of a package body.
  
  * *Numeric_Error is the same exception as Constraint_Error*
  
!   In Ada 95, the exception ``Numeric_Error`` is a renaming of ``Constraint_Error``.
    This means that it is illegal to have separate exception handlers for
    the two exceptions.  The fix is simply to remove the handler for the
!   ``Numeric_Error`` case (since even in Ada 83, a compiler was free to raise
!   ``Constraint_Error`` in place of ``Numeric_Error`` in all cases).
  
  * *Indefinite subtypes in generics*
  
!   In Ada 83, it was permissible to pass an indefinite type (e.g, ``String``)
    as the actual for a generic formal private type, but then the instantiation
    would be illegal if there were any instances of declarations of variables
    of this type in the generic body.  In Ada 95, to avoid this clear violation
    of the methodological principle known as the 'contract model',
    the generic declaration explicitly indicates whether
    or not such instantiations are permitted.  If a generic formal parameter
!   has explicit unknown discriminants, indicated by using ``(<>)`` after the
    subtype name, then it can be instantiated with indefinite types, but no
    stand-alone variables can be declared of this type.  Any attempt to declare
    such a variable will result in an illegality at the time the generic is
!   declared.  If the ``(<>)`` notation is not used, then it is illegal
    to instantiate the generic with an indefinite type.
    This is the potential incompatibility issue when porting Ada 83 code to Ada 95.
    It will show up as a compile time error, and
!   the fix is usually simply to add the ``(<>)`` to the generic declaration.
  
  
  .. _More_deterministic_semantics:
*************** The worst kind of incompatibility is one
*** 273,293 ****
  Ada 83 is also legal in Ada 95 but can have an effect in Ada 95 that was not
  possible in Ada 83.  Fortunately this is extremely rare, but the one
  situation that you should be alert to is the change in the predefined type
! `Character` from 7-bit ASCII to 8-bit Latin-1.
  
      .. index:: Latin-1
  
! * *Range of type `Character`*
  
!   The range of `Standard.Character` is now the full 256 characters
    of Latin-1, whereas in most Ada 83 implementations it was restricted
    to 128 characters. Although some of the effects of
    this change will be manifest in compile-time rejection of legal
    Ada 83 programs it is possible for a working Ada 83 program to have
    a different effect in Ada 95, one that was not permitted in Ada 83.
    As an example, the expression
!   `Character'Pos(Character'Last)` returned `127` in Ada 83 and now
!   delivers `255` as its value.
    In general, you should look at the logic of any
    character-processing Ada 83 program and see whether it needs to be adapted
    to work correctly with Latin-1.  Note that the predefined Ada 95 API has a
--- 273,293 ----
  Ada 83 is also legal in Ada 95 but can have an effect in Ada 95 that was not
  possible in Ada 83.  Fortunately this is extremely rare, but the one
  situation that you should be alert to is the change in the predefined type
! ``Character`` from 7-bit ASCII to 8-bit Latin-1.
  
      .. index:: Latin-1
  
! * *Range of type ``Character``*
  
!   The range of ``Standard.Character`` is now the full 256 characters
    of Latin-1, whereas in most Ada 83 implementations it was restricted
    to 128 characters. Although some of the effects of
    this change will be manifest in compile-time rejection of legal
    Ada 83 programs it is possible for a working Ada 83 program to have
    a different effect in Ada 95, one that was not permitted in Ada 83.
    As an example, the expression
!   ``Character'Pos(Character'Last)`` returned ``127`` in Ada 83 and now
!   delivers ``255`` as its value.
    In general, you should look at the logic of any
    character-processing Ada 83 program and see whether it needs to be adapted
    to work correctly with Latin-1.  Note that the predefined Ada 95 API has a
*************** Other language compatibility issues
*** 313,319 ****
    as identifiers as in Ada 83.  However,
    in practice, it is usually advisable to make the necessary modifications
    to the program to remove the need for using this switch.
!   See the `Compiling Different Versions of Ada` section in
    the :title:`GNAT User's Guide`.
  
  
--- 313,319 ----
    as identifiers as in Ada 83.  However,
    in practice, it is usually advisable to make the necessary modifications
    to the program to remove the need for using this switch.
!   See the ``Compiling Different Versions of Ada`` section in
    the :title:`GNAT User's Guide`.
  
  
*************** Other language compatibility issues
*** 324,331 ****
    compilers are allowed, but not required, to implement these missing
    elements.  In contrast with some other compilers, GNAT implements all
    such pragmas and attributes, eliminating this compatibility concern.  These
!   include `pragma Interface` and the floating point type attributes
!   (`Emax`, `Mantissa`, etc.), among other items.
  
  
  .. _Compatibility_between_Ada_95_and_Ada_2005:
--- 324,331 ----
    compilers are allowed, but not required, to implement these missing
    elements.  In contrast with some other compilers, GNAT implements all
    such pragmas and attributes, eliminating this compatibility concern.  These
!   include ``pragma Interface`` and the floating point type attributes
!   (``Emax``, ``Mantissa``, etc.), among other items.
  
  
  .. _Compatibility_between_Ada_95_and_Ada_2005:
*************** for a complete description please see th
*** 343,349 ****
  
  * *New reserved words.*
  
!   The words `interface`, `overriding` and `synchronized` are
    reserved in Ada 2005.
    A pre-Ada 2005 program that uses any of these as an identifier will be
    illegal.
--- 343,349 ----
  
  * *New reserved words.*
  
!   The words ``interface``, ``overriding`` and ``synchronized`` are
    reserved in Ada 2005.
    A pre-Ada 2005 program that uses any of these as an identifier will be
    illegal.
*************** for a complete description please see th
*** 351,362 ****
  * *New declarations in predefined packages.*
  
    A number of packages in the predefined environment contain new declarations:
!   `Ada.Exceptions`, `Ada.Real_Time`, `Ada.Strings`,
!   `Ada.Strings.Fixed`, `Ada.Strings.Bounded`,
!   `Ada.Strings.Unbounded`, `Ada.Strings.Wide_Fixed`,
!   `Ada.Strings.Wide_Bounded`, `Ada.Strings.Wide_Unbounded`,
!   `Ada.Tags`, `Ada.Text_IO`, and `Interfaces.C`.
!   If an Ada 95 program does a `with` and `use` of any of these
    packages, the new declarations may cause name clashes.
  
  * *Access parameters.*
--- 351,362 ----
  * *New declarations in predefined packages.*
  
    A number of packages in the predefined environment contain new declarations:
!   ``Ada.Exceptions``, ``Ada.Real_Time``, ``Ada.Strings``,
!   ``Ada.Strings.Fixed``, ``Ada.Strings.Bounded``,
!   ``Ada.Strings.Unbounded``, ``Ada.Strings.Wide_Fixed``,
!   ``Ada.Strings.Wide_Bounded``, ``Ada.Strings.Wide_Unbounded``,
!   ``Ada.Tags``, ``Ada.Text_IO``, and ``Interfaces.C``.
!   If an Ada 95 program does a ``with`` and ``use`` of any of these
    packages, the new declarations may cause name clashes.
  
  * *Access parameters.*
*************** for a complete description please see th
*** 382,388 ****
    are now ambiguous.
    The ambiguity may be resolved either by applying a type conversion to the
    expression, or by explicitly invoking the operation from package
!   `Standard`.
  
  * *Return-by-reference types.*
  
--- 382,388 ----
    are now ambiguous.
    The ambiguity may be resolved either by applying a type conversion to the
    expression, or by explicitly invoking the operation from package
!   ``Standard``.
  
  * *Return-by-reference types.*
  
*************** Implementation-defined pragmas
*** 411,427 ****
  
  Ada compilers are allowed to supplement the language-defined pragmas, and
  these are a potential source of non-portability.  All GNAT-defined pragmas
! are described in the `Implementation Defined Pragmas` chapter of the
! :title:`GNAT Reference Manual`, and these include several that are specifically
  intended to correspond to other vendors' Ada 83 pragmas.
! For migrating from VADS, the pragma `Use_VADS_Size` may be useful.
  For compatibility with HP Ada 83, GNAT supplies the pragmas
! `Extend_System`, `Ident`, `Inline_Generic`,
! `Interface_Name`, `Passive`, `Suppress_All`,
! and `Volatile`.
! Other relevant pragmas include `External` and `Link_With`.
  Some vendor-specific
! Ada 83 pragmas (`Share_Generic`, `Subtitle`, and `Title`) are
  recognized, thus
  avoiding compiler rejection of units that contain such pragmas; they are not
  relevant in a GNAT context and hence are not otherwise implemented.
--- 411,427 ----
  
  Ada compilers are allowed to supplement the language-defined pragmas, and
  these are a potential source of non-portability.  All GNAT-defined pragmas
! are described in :ref:`Implementation_Defined_Pragmas`,
! and these include several that are specifically
  intended to correspond to other vendors' Ada 83 pragmas.
! For migrating from VADS, the pragma ``Use_VADS_Size`` may be useful.
  For compatibility with HP Ada 83, GNAT supplies the pragmas
! ``Extend_System``, ``Ident``, ``Inline_Generic``,
! ``Interface_Name``, ``Passive``, ``Suppress_All``,
! and ``Volatile``.
! Other relevant pragmas include ``External`` and ``Link_With``.
  Some vendor-specific
! Ada 83 pragmas (``Share_Generic``, ``Subtitle``, and ``Title``) are
  recognized, thus
  avoiding compiler rejection of units that contain such pragmas; they are not
  relevant in a GNAT context and hence are not otherwise implemented.
*************** Implementation-defined attributes
*** 434,445 ****
  
  Analogous to pragmas, the set of attributes may be extended by an
  implementation.  All GNAT-defined attributes are described in
! `Implementation Defined Attributes` section of the
! :title:`GNAT Reference Manual`, and these include several that are specifically intended
  to correspond to other vendors' Ada 83 attributes.  For migrating from VADS,
! the attribute `VADS_Size` may be useful.  For compatibility with HP
! Ada 83, GNAT supplies the attributes `Bit`, `Machine_Size` and
! `Type_Class`.
  
  .. _Libraries:
  
--- 434,445 ----
  
  Analogous to pragmas, the set of attributes may be extended by an
  implementation.  All GNAT-defined attributes are described in
! :ref:`Implementation_Defined_Attributes`,
! and these include several that are specifically intended
  to correspond to other vendors' Ada 83 attributes.  For migrating from VADS,
! the attribute ``VADS_Size`` may be useful.  For compatibility with HP
! Ada 83, GNAT supplies the attributes ``Bit``, ``Machine_Size`` and
! ``Type_Class``.
  
  .. _Libraries:
  
*************** Program_Error being raised due to an 'Ac
*** 474,484 ****
  to invoke a subprogram before its body has been elaborated, or to instantiate
  a generic before the generic body has been elaborated.  By default GNAT
  attempts to choose a safe order (one that will not encounter access before
! elaboration problems) by implicitly inserting `Elaborate` or
! `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 :title:`GNAT User's Guide`.
  In brief, there are several
  ways to deal with this situation:
--- 474,484 ----
  to invoke a subprogram before its body has been elaborated, or to instantiate
  a generic before the generic body has been elaborated.  By default GNAT
  attempts to choose a safe order (one that will not encounter access before
! elaboration problems) by implicitly inserting ``Elaborate`` or
! ``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 :title:`GNAT User's Guide`.
  In brief, there are several
  ways to deal with this situation:
*************** ways to deal with this situation:
*** 486,497 ****
  * Modify the program to eliminate the circularities, e.g., by moving
    elaboration-time code into explicitly-invoked procedures
  
! * Constrain the elaboration order by including explicit `Elaborate_Body` or
!   `Elaborate` pragmas, and then inhibit the generation of implicit
!   `Elaborate_All`
    pragmas either globally (as an effect of the *-gnatE* switch) or locally
    (by selectively suppressing elaboration checks via pragma
!   `Suppress(Elaboration_Check)` when it is safe to do so).
  
  
  .. _Target-specific_aspects:
--- 486,497 ----
  * Modify the program to eliminate the circularities, e.g., by moving
    elaboration-time code into explicitly-invoked procedures
  
! * Constrain the elaboration order by including explicit ``Elaborate_Body`` or
!   ``Elaborate`` pragmas, and then inhibit the generation of implicit
!   ``Elaborate_All``
    pragmas either globally (as an effect of the *-gnatE* switch) or locally
    (by selectively suppressing elaboration checks via pragma
!   ``Suppress(Elaboration_Check)`` when it is safe to do so).
  
  
  .. _Target-specific_aspects:
*************** the cases most likely to arise in existi
*** 581,594 ****
    Reference Manuals as implementation advice that is followed by GNAT.
    The problem will show up as an error
    message rejecting the size clause.  The fix is simply to provide
!   the explicit pragma `Pack`, or for more fine tuned control, provide
    a Component_Size clause.
  
  * *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,
!   on a 32-bit machine, the size of `Natural` will typically be 31 and not
    32 (since no sign bit is required).  Some Ada 83 compilers gave 31, and
    some 32 in this situation.  This problem will usually show up as a compile
    time error, but not always.  It is a good idea to check all uses of the
--- 581,594 ----
    Reference Manuals as implementation advice that is followed by GNAT.
    The problem will show up as an error
    message rejecting the size clause.  The fix is simply to provide
!   the explicit pragma ``Pack``, or for more fine tuned control, provide
    a Component_Size clause.
  
  * *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,
!   on a 32-bit machine, the size of ``Natural`` will typically be 31 and not
    32 (since no sign bit is required).  Some Ada 83 compilers gave 31, and
    some 32 in this situation.  This problem will usually show up as a compile
    time error, but not always.  It is a good idea to check all uses of the
diff -Nrcpad gcc-7.3.0/gcc/ada/doc/gnat_rm/implementation_advice.rst gcc-8.1.0/gcc/ada/doc/gnat_rm/implementation_advice.rst
*** gcc-7.3.0/gcc/ada/doc/gnat_rm/implementation_advice.rst	Fri Oct 23 13:10:35 2015
--- gcc-8.1.0/gcc/ada/doc/gnat_rm/implementation_advice.rst	Fri Sep  8 12:34:54 2017
*************** RM 1.1.3(20): Error Detection
*** 32,38 ****
  =============================
  
    "If an implementation detects the use of an unsupported Specialized Needs
!   Annex feature at run time, it should raise `Program_Error` if
    feasible."
  
  Not relevant.  All specialized needs annex features are either supported,
--- 32,38 ----
  =============================
  
    "If an implementation detects the use of an unsupported Specialized Needs
!   Annex feature at run time, it should raise ``Program_Error`` if
    feasible."
  
  Not relevant.  All specialized needs annex features are either supported,
*************** RM 1.1.5(12): Bounded Errors
*** 56,62 ****
  ============================
  
    "If an implementation detects a bounded error or erroneous
!   execution, it should raise `Program_Error`."
  
  Followed in all cases in which the implementation detects a bounded
  error or erroneous execution.  Not all such situations are detected at
--- 56,62 ----
  ============================
  
    "If an implementation detects a bounded error or erroneous
!   execution, it should raise ``Program_Error``."
  
  Followed in all cases in which the implementation detects a bounded
  error or erroneous execution.  Not all such situations are detected at
*************** RM 2.8(17-19): Pragmas
*** 111,120 ****
    "Normally, an implementation should not define pragmas that can
    make an illegal program legal, except as follows:
  
!   * A pragma used to complete a declaration, such as a pragma `Import`;
  
    * A pragma used to configure the environment by adding, removing, or
!     replacing `library_items`."
  
  See :ref:`RM_2_8_16_Pragmas`.
  
--- 111,120 ----
    "Normally, an implementation should not define pragmas that can
    make an illegal program legal, except as follows:
  
!   * A pragma used to complete a declaration, such as a pragma ``Import``;
  
    * A pragma used to configure the environment by adding, removing, or
!     replacing ``library_items``."
  
  See :ref:`RM_2_8_16_Pragmas`.
  
*************** RM 3.5.2(5): Alternative Character Sets
*** 126,140 ****
  =======================================
  
    "If an implementation supports a mode with alternative interpretations
!   for `Character` and `Wide_Character`, the set of graphic
!   characters of `Character` should nevertheless remain a proper
!   subset of the set of graphic characters of `Wide_Character`.  Any
    character set 'localizations' should be reflected in the results of
    the subprograms defined in the language-defined package
!   `Characters.Handling` (see A.3) available in such a mode.  In a mode with
!   an alternative interpretation of `Character`, the implementation should
    also support a corresponding change in what is a legal
!   `identifier_letter`."
  
  Not all wide character modes follow this advice, in particular the JIS
  and IEC modes reflect standard usage in Japan, and in these encoding,
--- 126,140 ----
  =======================================
  
    "If an implementation supports a mode with alternative interpretations
!   for ``Character`` and ``Wide_Character``, the set of graphic
!   characters of ``Character`` should nevertheless remain a proper
!   subset of the set of graphic characters of ``Wide_Character``.  Any
    character set 'localizations' should be reflected in the results of
    the subprograms defined in the language-defined package
!   ``Characters.Handling`` (see A.3) available in such a mode.  In a mode with
!   an alternative interpretation of ``Character``, the implementation should
    also support a corresponding change in what is a legal
!   ``identifier_letter``."
  
  Not all wide character modes follow this advice, in particular the JIS
  and IEC modes reflect standard usage in Japan, and in these encoding,
*************** there is no such restriction.
*** 148,160 ****
  RM 3.5.4(28): Integer Types
  ===========================
  
!   "An implementation should support `Long_Integer` in addition to
!   `Integer` if the target machine supports 32-bit (or longer)
    arithmetic.  No other named integer subtypes are recommended for package
!   `Standard`.  Instead, appropriate named integer subtypes should be
!   provided in the library package `Interfaces` (see B.2)."
  
! `Long_Integer` is supported.  Other standard integer types are supported
  so this advice is not fully followed.  These types
  are supported for convenient interface to C, and so that all hardware
  types of the machine are easily available.
--- 148,160 ----
  RM 3.5.4(28): Integer Types
  ===========================
  
!   "An implementation should support ``Long_Integer`` in addition to
!   ``Integer`` if the target machine supports 32-bit (or longer)
    arithmetic.  No other named integer subtypes are recommended for package
!   ``Standard``.  Instead, appropriate named integer subtypes should be
!   provided in the library package ``Interfaces`` (see B.2)."
  
! ``Long_Integer`` is supported.  Other standard integer types are supported
  so this advice is not fully followed.  These types
  are supported for convenient interface to C, and so that all hardware
  types of the machine are easily available.
*************** RM 3.5.4(29): Integer Types
*** 164,170 ****
  
    "An implementation for a two's complement machine should support
    modular types with a binary modulus up to ``System.Max_Int*2+2``.  An
!   implementation should support a non-binary modules up to `Integer'Last`."
  
  Followed.
  
--- 164,170 ----
  
    "An implementation for a two's complement machine should support
    modular types with a binary modulus up to ``System.Max_Int*2+2``.  An
!   implementation should support a non-binary modules up to ``Integer'Last``."
  
  Followed.
  
*************** RM 3.5.5(8): Enumeration Values
*** 177,183 ****
    subtype, if the value of the operand does not correspond to the internal
    code for any enumeration literal of its type (perhaps due to an
    un-initialized variable), then the implementation should raise
!   `Program_Error`.  This is particularly important for enumeration
    types with noncontiguous internal codes specified by an
    enumeration_representation_clause."
  
--- 177,183 ----
    subtype, if the value of the operand does not correspond to the internal
    code for any enumeration literal of its type (perhaps due to an
    un-initialized variable), then the implementation should raise
!   ``Program_Error``.  This is particularly important for enumeration
    types with noncontiguous internal codes specified by an
    enumeration_representation_clause."
  
*************** Followed.
*** 188,206 ****
  RM 3.5.7(17): Float Types
  =========================
  
!   "An implementation should support `Long_Float` in addition to
!   `Float` if the target machine supports 11 or more digits of
    precision.  No other named floating point subtypes are recommended for
!   package `Standard`.  Instead, appropriate named floating point subtypes
!   should be provided in the library package `Interfaces` (see B.2)."
  
! `Short_Float` and `Long_Long_Float` are also provided.  The
  former provides improved compatibility with other implementations
  supporting this type.  The latter corresponds to the highest precision
  floating-point type supported by the hardware.  On most machines, this
! will be the same as `Long_Float`, but on some machines, it will
  correspond to the IEEE extended form.  The notable case is all ia32
! (x86) implementations, where `Long_Long_Float` corresponds to
  the 80-bit extended precision format supported in hardware on this
  processor.  Note that the 128-bit format on SPARC is not supported,
  since this is a software rather than a hardware format.
--- 188,206 ----
  RM 3.5.7(17): Float Types
  =========================
  
!   "An implementation should support ``Long_Float`` in addition to
!   ``Float`` if the target machine supports 11 or more digits of
    precision.  No other named floating point subtypes are recommended for
!   package ``Standard``.  Instead, appropriate named floating point subtypes
!   should be provided in the library package ``Interfaces`` (see B.2)."
  
! ``Short_Float`` and ``Long_Long_Float`` are also provided.  The
  former provides improved compatibility with other implementations
  supporting this type.  The latter corresponds to the highest precision
  floating-point type supported by the hardware.  On most machines, this
! will be the same as ``Long_Float``, but on some machines, it will
  correspond to the IEEE extended form.  The notable case is all ia32
! (x86) implementations, where ``Long_Long_Float`` corresponds to
  the 80-bit extended precision format supported in hardware on this
  processor.  Note that the 128-bit format on SPARC is not supported,
  since this is a software rather than a hardware format.
*************** RM 3.6.2(11): Multidimensional Arrays
*** 214,222 ****
  
    "An implementation should normally represent multidimensional arrays in
    row-major order, consistent with the notation used for multidimensional
!   array aggregates (see 4.3.3).  However, if a pragma `Convention`
!   (`Fortran`, ...) applies to a multidimensional array type, then
!   column-major order should be used instead (see B.5, `Interfacing with Fortran`)."
  
  Followed.
  
--- 214,222 ----
  
    "An implementation should normally represent multidimensional arrays in
    row-major order, consistent with the notation used for multidimensional
!   array aggregates (see 4.3.3).  However, if a pragma ``Convention``
!   (``Fortran``, ...) applies to a multidimensional array type, then
!   column-major order should be used instead (see B.5, *Interfacing with Fortran*)."
  
  Followed.
  
*************** Followed.
*** 225,237 ****
  RM 9.6(30-31): Duration'Small
  =============================
  
!   "Whenever possible in an implementation, the value of `Duration'Small`
    should be no greater than 100 microseconds."
  
! Followed.  (`Duration'Small` = 10**(-9)).
  
!   "The time base for `delay_relative_statements` should be monotonic;
!   it need not be the same time base as used for `Calendar.Clock`."
  
  Followed.
  
--- 225,237 ----
  RM 9.6(30-31): Duration'Small
  =============================
  
!   "Whenever possible in an implementation, the value of ``Duration'Small``
    should be no greater than 100 microseconds."
  
! Followed.  (``Duration'Small`` = 10**(-9)).
  
!   "The time base for ``delay_relative_statements`` should be monotonic;
!   it need not be the same time base as used for ``Calendar.Clock``."
  
  Followed.
  
*************** advice without severely impacting effici
*** 255,277 ****
  RM 11.4.1(19): Exception Information
  ====================================
  
!   "`Exception_Message` by default and `Exception_Information`
    should produce information useful for
!   debugging.  `Exception_Message` should be short, about one
!   line.  `Exception_Information` can be long.  `Exception_Message`
    should not include the
!   `Exception_Name`.  `Exception_Information` should include both
!   the `Exception_Name` and the `Exception_Message`."
  
  Followed.  For each exception that doesn't have a specified
! `Exception_Message`, the compiler generates one containing the location
  of the raise statement.  This location has the form 'file_name:line', where
  file_name is the short file name (without path information) and line is the line
  number in the file.  Note that in the case of the Zero Cost Exception
  mechanism, these messages become redundant with the Exception_Information that
  contains a full backtrace of the calling sequence, so they are disabled.
  To disable explicitly the generation of the source location message, use the
! Pragma `Discard_Names`.
  
  .. index:: Suppression of checks
  
--- 255,277 ----
  RM 11.4.1(19): Exception Information
  ====================================
  
!   "``Exception_Message`` by default and ``Exception_Information``
    should produce information useful for
!   debugging.  ``Exception_Message`` should be short, about one
!   line.  ``Exception_Information`` can be long.  ``Exception_Message``
    should not include the
!   ``Exception_Name``.  ``Exception_Information`` should include both
!   the ``Exception_Name`` and the ``Exception_Message``."
  
  Followed.  For each exception that doesn't have a specified
! ``Exception_Message``, the compiler generates one containing the location
  of the raise statement.  This location has the form 'file_name:line', where
  file_name is the short file name (without path information) and line is the line
  number in the file.  Note that in the case of the Zero Cost Exception
  mechanism, these messages become redundant with the Exception_Information that
  contains a full backtrace of the calling sequence, so they are disabled.
  To disable explicitly the generation of the source location message, use the
! Pragma ``Discard_Names``.
  
  .. index:: Suppression of checks
  
*************** For example:
*** 312,318 ****
      for Y'Address use X'Address;>>
  
  
!   "An implementation need not support a specification for the `Size`
    for a given composite subtype, nor the size or storage place for an
    object (including a component) of a given composite subtype, unless the
    constraints on the subtype and its composite subcomponents (if any) are
--- 312,318 ----
      for Y'Address use X'Address;>>
  
  
!   "An implementation need not support a specification for the ``Size``
    for a given composite subtype, nor the size or storage place for an
    object (including a component) of a given composite subtype, unless the
    constraints on the subtype and its composite subcomponents (if any) are
*************** RM 13.2(6-8): Packed Types
*** 337,349 ****
    speed of accessing components, subject to reasonable complexity in
    addressing calculations.
  
!   The recommended level of support pragma `Pack` is:
  
    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 `Size` is
    greater than the word size may be allocated an integral number of words."
  
  Followed.  Tight packing of arrays is supported for all component sizes
--- 337,349 ----
    speed of accessing components, subject to reasonable complexity in
    addressing calculations.
  
!   The recommended level of support pragma ``Pack`` is:
  
    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 ``Size`` is
    greater than the word size may be allocated an integral number of words."
  
  Followed.  Tight packing of arrays is supported for all component sizes
*************** Followed.
*** 364,385 ****
  RM 13.3(14-19): Address Clauses
  ===============================
  
!   "For an array `X`, ``X'Address`` should point at the first
    component of the array, and not at the array bounds."
  
  Followed.
  
!   "The recommended level of support for the `Address` attribute is:
  
!   ``X'Address`` should produce a useful result if `X` is an
    object that is aliased or of a by-reference type, or is an entity whose
!   `Address` has been specified."
  
  Followed.  A valid address will be produced even if none of those
  conditions have been met.  If necessary, the object is forced into
  memory to ensure the address is valid.
  
!   "An implementation should support `Address` clauses for imported
    subprograms."
  
  Followed.
--- 364,385 ----
  RM 13.3(14-19): Address Clauses
  ===============================
  
!   "For an array ``X``, ``X'Address`` should point at the first
    component of the array, and not at the array bounds."
  
  Followed.
  
!   "The recommended level of support for the ``Address`` attribute is:
  
!   ``X'Address`` should produce a useful result if ``X`` is an
    object that is aliased or of a by-reference type, or is an entity whose
!   ``Address`` has been specified."
  
  Followed.  A valid address will be produced even if none of those
  conditions have been met.  If necessary, the object is forced into
  memory to ensure the address is valid.
  
!   "An implementation should support ``Address`` clauses for imported
    subprograms."
  
  Followed.
*************** Followed.
*** 389,395 ****
  
  Followed.
  
!   "If the `Address` of an object is specified, or it is imported or exported,
    then the implementation should not perform optimizations based on
    assumptions of no aliases."
  
--- 389,395 ----
  
  Followed.
  
!   "If the ``Address`` of an object is specified, or it is imported or exported,
    then the implementation should not perform optimizations based on
    assumptions of no aliases."
  
*************** Followed.
*** 400,406 ****
  RM 13.3(29-35): Alignment Clauses
  =================================
  
!   "The recommended level of support for the `Alignment` attribute for
    subtypes is:
  
    An implementation should support specified Alignments that are factors
--- 400,406 ----
  RM 13.3(29-35): Alignment Clauses
  =================================
  
!   "The recommended level of support for the ``Alignment`` attribute for
    subtypes is:
  
    An implementation should support specified Alignments that are factors
*************** Followed.
*** 416,427 ****
  Followed.
  
    "An implementation need not support specified Alignments that are
!   greater than the maximum `Alignment` the implementation ever returns by
    default."
  
  Followed.
  
!   "The recommended level of support for the `Alignment` attribute for
    objects is:
  
    Same as above, for subtypes, but in addition:"
--- 416,427 ----
  Followed.
  
    "An implementation need not support specified Alignments that are
!   greater than the maximum ``Alignment`` the implementation ever returns by
    default."
  
  Followed.
  
!   "The recommended level of support for the ``Alignment`` attribute for
    objects is:
  
    Same as above, for subtypes, but in addition:"
*************** Followed.
*** 440,462 ****
  RM 13.3(42-43): Size Clauses
  ============================
  
!   "The recommended level of support for the `Size` attribute of
    objects is:
  
!   A `Size` clause should be supported for an object if the specified
!   `Size` is at least as large as its subtype's `Size`, and
    corresponds to a size in storage elements that is a multiple of the
!   object's `Alignment` (if the `Alignment` is nonzero)."
  
  Followed.
  
  RM 13.3(50-56): Size Clauses
  ============================
  
!   "If the `Size` of a subtype is specified, and allows for efficient
    independent addressability (see 9.10) on the target architecture, then
!   the `Size` of the following objects of the subtype should equal the
!   `Size` of the subtype:
  
    Aliased objects (including components)."
  
--- 440,462 ----
  RM 13.3(42-43): Size Clauses
  ============================
  
!   "The recommended level of support for the ``Size`` attribute of
    objects is:
  
!   A ``Size`` clause should be supported for an object if the specified
!   ``Size`` is at least as large as its subtype's ``Size``, and
    corresponds to a size in storage elements that is a multiple of the
!   object's ``Alignment`` (if the ``Alignment`` is nonzero)."
  
  Followed.
  
  RM 13.3(50-56): Size Clauses
  ============================
  
!   "If the ``Size`` of a subtype is specified, and allows for efficient
    independent addressability (see 9.10) on the target architecture, then
!   the ``Size`` of the following objects of the subtype should equal the
!   ``Size`` of the subtype:
  
    Aliased objects (including components)."
  
*************** Followed.
*** 468,485 ****
  Followed. But note that this can be overridden by use of the implementation
  pragma Implicit_Packing in the case of packed arrays.
  
!   "The recommended level of support for the `Size` attribute of subtypes is:
  
!   The `Size` (if not specified) of a static discrete or fixed point
    subtype should be the number of bits needed to represent each value
    belonging to the subtype using an unbiased representation, leaving space
    for a sign bit only if the subtype contains negative values.  If such a
    subtype is a first subtype, then an implementation should support a
!   specified `Size` for it that reflects this representation."
  
  Followed.
  
!   "For a subtype implemented with levels of indirection, the `Size`
    should include the size of the pointers, but not the size of what they
    point at."
  
--- 468,485 ----
  Followed. But note that this can be overridden by use of the implementation
  pragma Implicit_Packing in the case of packed arrays.
  
!   "The recommended level of support for the ``Size`` attribute of subtypes is:
  
!   The ``Size`` (if not specified) of a static discrete or fixed point
    subtype should be the number of bits needed to represent each value
    belonging to the subtype using an unbiased representation, leaving space
    for a sign bit only if the subtype contains negative values.  If such a
    subtype is a first subtype, then an implementation should support a
!   specified ``Size`` for it that reflects this representation."
  
  Followed.
  
!   "For a subtype implemented with levels of indirection, the ``Size``
    should include the size of the pointers, but not the size of what they
    point at."
  
*************** Followed.
*** 490,500 ****
  RM 13.3(71-73): Component Size Clauses
  ======================================
  
!   "The recommended level of support for the `Component_Size`
    attribute is:
  
!   An implementation need not support specified `Component_Sizes` that are
!   less than the `Size` of the component subtype."
  
  Followed.
  
--- 490,500 ----
  RM 13.3(71-73): Component Size Clauses
  ======================================
  
!   "The recommended level of support for the ``Component_Size``
    attribute is:
  
!   An implementation need not support specified ``Component_Sizes`` that are
!   less than the ``Size`` of the component subtype."
  
  Followed.
  
*************** RM 13.4(9-10): Enumeration Representatio
*** 520,526 ****
  
    An implementation need not support enumeration representation clauses
    for boolean types, but should at minimum support the internal codes in
!   the range `System.Min_Int .. System.Max_Int`."
  
  Followed.
  
--- 520,526 ----
  
    An implementation need not support enumeration representation clauses
    for boolean types, but should at minimum support the internal codes in
!   the range ``System.Min_Int .. System.Max_Int``."
  
  Followed.
  
*************** RM 13.5.1(17-22): Record Representation
*** 532,538 ****
  ===============================================
  
    "The recommended level of support for
!   `record_representation_clauses` 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,
--- 532,538 ----
  ===============================================
  
    "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,
*************** RM 13.5.1(17-22): Record Representation
*** 542,554 ****
  Followed.
  
    "A storage place should be supported if its size is equal to the
!   `Size` of the component subtype, and it starts and ends on a
!   boundary that obeys the `Alignment` of the component subtype."
  
  Followed.
  
    "If the default bit ordering applies to the declaration of a given type,
!   then for a component whose subtype's `Size` is less than the word
    size, any storage place that does not cross an aligned word boundary
    should be supported."
  
--- 542,554 ----
  Followed.
  
    "A storage place should be supported if its size is equal to the
!   ``Size`` of the component subtype, and it starts and ends on a
!   boundary that obeys the ``Alignment`` of the component subtype."
  
  Followed.
  
    "If the default bit ordering applies to the declaration of a given type,
!   then for a component whose subtype's ``Size`` is less than the word
    size, any storage place that does not cross an aligned word boundary
    should be supported."
  
*************** Followed.  The storage place for the tag
*** 561,567 ****
  record, and its size is Address'Size.  GNAT will reject an explicit component
  clause for the tag field.
  
!   "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."
--- 561,567 ----
  record, and its size is Address'Size.  GNAT will reject an explicit component
  clause for the tag field.
  
!   "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."
*************** RM 13.5.3(7-8): Bit Ordering
*** 591,597 ****
  
    "The recommended level of support for the non-default bit ordering is:
  
!   If `Word_Size` = `Storage_Unit`, then the implementation
    should support the non-default bit ordering in addition to the default
    bit ordering."
  
--- 591,597 ----
  
    "The recommended level of support for the non-default bit ordering is:
  
!   If ``Word_Size`` = ``Storage_Unit``, then the implementation
    should support the non-default bit ordering in addition to the default
    bit ordering."
  
*************** RM 13.7(37): Address as Private
*** 607,639 ****
  
  Followed.
  
! .. index:: Operations, on `Address`
  
  .. index:: Address, operations of
  
  RM 13.7.1(16): Address Operations
  =================================
  
!   "Operations in `System` and its children should reflect the target
    environment semantics as closely as is reasonable.  For example, on most
    machines, it makes sense for address arithmetic to 'wrap around'.
!   Operations that do not make sense should raise `Program_Error`."
  
  Followed.  Address arithmetic is modular arithmetic that wraps around.  No
! operation raises `Program_Error`, since all operations make sense.
  
  .. index:: Unchecked conversion
  
  RM 13.9(14-17): Unchecked Conversion
  ====================================
  
!   "The `Size` of an array object should not include its bounds; hence,
    the bounds should not be part of the converted data."
  
  Followed.
  
    "The implementation should not generate unnecessary run-time checks to
!   ensure that the representation of `S` is a representation of the
    target type.  It should take advantage of the permission to return by
    reference when possible.  Restrictions on unchecked conversions should be
    avoided unless required by the target environment."
--- 607,639 ----
  
  Followed.
  
! .. index:: Operations, on ``Address``
  
  .. index:: Address, operations of
  
  RM 13.7.1(16): Address Operations
  =================================
  
!   "Operations in ``System`` and its children should reflect the target
    environment semantics as closely as is reasonable.  For example, on most
    machines, it makes sense for address arithmetic to 'wrap around'.
!   Operations that do not make sense should raise ``Program_Error``."
  
  Followed.  Address arithmetic is modular arithmetic that wraps around.  No
! operation raises ``Program_Error``, since all operations make sense.
  
  .. index:: Unchecked conversion
  
  RM 13.9(14-17): Unchecked Conversion
  ====================================
  
!   "The ``Size`` of an array object should not include its bounds; hence,
    the bounds should not be part of the converted data."
  
  Followed.
  
    "The implementation should not generate unnecessary run-time checks to
!   ensure that the representation of ``S`` is a representation of the
    target type.  It should take advantage of the permission to return by
    reference when possible.  Restrictions on unchecked conversions should be
    avoided unless required by the target environment."
*************** Followed.
*** 696,702 ****
  RM 13.11.2(17): Unchecked Deallocation
  ======================================
  
!   "For a standard storage pool, `Free` should actually reclaim the
    storage."
  
  Followed.
--- 696,702 ----
  RM 13.11.2(17): Unchecked Deallocation
  ======================================
  
!   "For a standard storage pool, ``Free`` should actually reclaim the
    storage."
  
  Followed.
*************** RM 13.13.2(17): Stream Oriented Attribut
*** 707,714 ****
  ==========================================
  
    "If a stream element is the same size as a storage element, then the
!   normal in-memory representation should be used by `Read` and
!   `Write` for scalar objects.  Otherwise, `Read` and `Write`
    should use the smallest number of stream elements needed to represent
    all values in the base range of the scalar type."
  
--- 707,714 ----
  ==========================================
  
    "If a stream element is the same size as a storage element, then the
!   normal in-memory representation should be used by ``Read`` and
!   ``Write`` for scalar objects.  Otherwise, ``Read`` and ``Write``
    should use the smallest number of stream elements needed to represent
    all values in the base range of the scalar type."
  
*************** which specifies using the size of the fi
*** 717,723 ****
  However, such an implementation is based on direct binary
  representations and is therefore target- and endianness-dependent.
  To address this issue, GNAT also supplies an alternate implementation
! of the stream attributes `Read` and `Write`,
  which uses the target-independent XDR standard representation
  for scalar types.
  
--- 717,723 ----
  However, such an implementation is based on direct binary
  representations and is therefore target- and endianness-dependent.
  To address this issue, GNAT also supplies an alternate implementation
! of the stream attributes ``Read`` and ``Write``,
  which uses the target-independent XDR standard representation
  for scalar types.
  
*************** for scalar types.
*** 730,742 ****
  .. index:: Stream oriented attributes
  
  The XDR implementation is provided as an alternative body of the
! `System.Stream_Attributes` package, in the file
  :file:`s-stratt-xdr.adb` in the GNAT library.
  There is no :file:`s-stratt-xdr.ads` file.
  In order to install the XDR implementation, do the following:
  
  * Replace the default implementation of the
!   `System.Stream_Attributes` package with the XDR implementation.
    For example on a Unix platform issue the commands:
  
    .. code-block:: sh
--- 730,742 ----
  .. index:: Stream oriented attributes
  
  The XDR implementation is provided as an alternative body of the
! ``System.Stream_Attributes`` package, in the file
  :file:`s-stratt-xdr.adb` in the GNAT library.
  There is no :file:`s-stratt-xdr.ads` file.
  In order to install the XDR implementation, do the following:
  
  * Replace the default implementation of the
!   ``System.Stream_Attributes`` package with the XDR implementation.
    For example on a Unix platform issue the commands:
  
    .. code-block:: sh
*************** In order to install the XDR implementati
*** 747,753 ****
  
  *
    Rebuild the GNAT run-time library as documented in
!   the `GNAT and Libraries` section of the :title:`GNAT User's Guide`.
  
  RM A.1(52): Names of Predefined Numeric Types
  =============================================
--- 747,753 ----
  
  *
    Rebuild the GNAT run-time library as documented in
!   the *GNAT and Libraries* section of the :title:`GNAT User's Guide`.
  
  RM A.1(52): Names of Predefined Numeric Types
  =============================================
*************** Followed.
*** 762,773 ****
  
  .. index:: Ada.Characters.Handling
  
! RM A.3.2(49): `Ada.Characters.Handling`
! =======================================
  
!   "If an implementation provides a localized definition of `Character`
!   or `Wide_Character`, then the effects of the subprograms in
!   `Characters.Handling` should reflect the localizations.
    See also 3.5.2."
  
  Followed.  GNAT provides no such localized definitions.
--- 762,773 ----
  
  .. index:: Ada.Characters.Handling
  
! RM A.3.2(49): ``Ada.Characters.Handling``
! =========================================
  
!   "If an implementation provides a localized definition of ``Character``
!   or ``Wide_Character``, then the effects of the subprograms in
!   ``Characters.Handling`` should reflect the localizations.
    See also 3.5.2."
  
  Followed.  GNAT provides no such localized definitions.
*************** Followed.  No implicit pointers or dynam
*** 787,800 ****
  RM A.5.2(46-47): Random Number Generation
  =========================================
  
!   "Any storage associated with an object of type `Generator` should be
    reclaimed on exit from the scope of the object."
  
  Followed.
  
    "If the generator period is sufficiently long in relation to the number
    of distinct initiator values, then each possible value of
!   `Initiator` passed to `Reset` should initiate a sequence of
    random numbers that does not, in a practical sense, overlap the sequence
    initiated by any other value.  If this is not possible, then the mapping
    between initiator values and generator states should be a rapidly
--- 787,800 ----
  RM A.5.2(46-47): Random Number Generation
  =========================================
  
!   "Any storage associated with an object of type ``Generator`` should be
    reclaimed on exit from the scope of the object."
  
  Followed.
  
    "If the generator period is sufficiently long in relation to the number
    of distinct initiator values, then each possible value of
!   ``Initiator`` passed to ``Reset`` should initiate a sequence of
    random numbers that does not, in a practical sense, overlap the sequence
    initiated by any other value.  If this is not possible, then the mapping
    between initiator values and generator states should be a rapidly
*************** condition here to hold true.
*** 805,859 ****
  
  .. index:: Get_Immediate
  
! RM A.10.7(23): `Get_Immediate`
! ==============================
  
!   "The `Get_Immediate` procedures should be implemented with
    unbuffered input.  For a device such as a keyboard, input should be
    available if a key has already been typed, whereas for a disk
    file, input should always be available except at end of file.  For a file
    associated with a keyboard-like device, any line-editing features of the
    underlying operating system should be disabled during the execution of
!   `Get_Immediate`."
  
  Followed on all targets except VxWorks. For VxWorks, there is no way to
  provide this functionality that does not result in the input buffer being
! flushed before the `Get_Immediate` call. A special unit
! `Interfaces.Vxworks.IO` is provided that contains routines to enable
  this functionality.
  
  .. index:: Export
  
! RM B.1(39-41): Pragma `Export`
! ==============================
  
!   "If an implementation supports pragma `Export` to a given language,
    then it should also allow the main subprogram to be written in that
    language.  It should support some mechanism for invoking the elaboration
    of the Ada library units included in the system, and for invoking the
    finalization of the environment task.  On typical systems, the
    recommended mechanism is to provide two subprograms whose link names are
!   `adainit` and `adafinal`.  `adainit` should contain the
!   elaboration code for library units.  `adafinal` should contain the
    finalization code.  These subprograms should have no effect the second
    and subsequent time they are called."
  
  Followed.
  
    "Automatic elaboration of pre-elaborated packages should be
!   provided when pragma `Export` is supported."
  
  Followed when the main program is in Ada.  If the main program is in a
  foreign language, then
! `adainit` must be called to elaborate pre-elaborated
  packages.
  
!   "For each supported convention `L` other than `Intrinsic`, an
!   implementation should support `Import` and `Export` pragmas
!   for objects of `L`-compatible types and for subprograms, and pragma
!   `Convention` for `L`-eligible types and for subprograms,
    presuming the other language has corresponding features.  Pragma
!   `Convention` need not be supported for scalar types."
  
  Followed.
  
--- 805,859 ----
  
  .. index:: Get_Immediate
  
! RM A.10.7(23): ``Get_Immediate``
! ================================
  
!   "The ``Get_Immediate`` procedures should be implemented with
    unbuffered input.  For a device such as a keyboard, input should be
    available if a key has already been typed, whereas for a disk
    file, input should always be available except at end of file.  For a file
    associated with a keyboard-like device, any line-editing features of the
    underlying operating system should be disabled during the execution of
!   ``Get_Immediate``."
  
  Followed on all targets except VxWorks. For VxWorks, there is no way to
  provide this functionality that does not result in the input buffer being
! flushed before the ``Get_Immediate`` call. A special unit
! ``Interfaces.Vxworks.IO`` is provided that contains routines to enable
  this functionality.
  
  .. index:: Export
  
! RM B.1(39-41): Pragma ``Export``
! ================================
  
!   "If an implementation supports pragma ``Export`` to a given language,
    then it should also allow the main subprogram to be written in that
    language.  It should support some mechanism for invoking the elaboration
    of the Ada library units included in the system, and for invoking the
    finalization of the environment task.  On typical systems, the
    recommended mechanism is to provide two subprograms whose link names are
!   ``adainit`` and ``adafinal``.  ``adainit`` should contain the
!   elaboration code for library units.  ``adafinal`` should contain the
    finalization code.  These subprograms should have no effect the second
    and subsequent time they are called."
  
  Followed.
  
    "Automatic elaboration of pre-elaborated packages should be
!   provided when pragma ``Export`` is supported."
  
  Followed when the main program is in Ada.  If the main program is in a
  foreign language, then
! ``adainit`` must be called to elaborate pre-elaborated
  packages.
  
!   "For each supported convention *L* other than ``Intrinsic``, an
!   implementation should support ``Import`` and ``Export`` pragmas
!   for objects of *L*\ -compatible types and for subprograms, and pragma
!   `Convention` for *L*\ -eligible types and for subprograms,
    presuming the other language has corresponding features.  Pragma
!   ``Convention`` need not be supported for scalar types."
  
  Followed.
  
*************** Followed.
*** 861,868 ****
  
  .. index:: Interfaces
  
! RM B.2(12-13): Package `Interfaces`
! ===================================
  
    "For each implementation-defined convention identifier, there should be a
    child package of package Interfaces with the corresponding name.  This
--- 861,868 ----
  
  .. index:: Interfaces
  
! RM B.2(12-13): Package ``Interfaces``
! =====================================
  
    "For each implementation-defined convention identifier, there should be a
    child package of package Interfaces with the corresponding name.  This
*************** RM B.2(12-13): Package `Interfaces`
*** 870,876 ****
    interfacing to the language (implementation) represented by the
    convention.  Any declarations useful for interfacing to any language on
    the given hardware architecture should be provided directly in
!   `Interfaces`."
  
  Followed.
  
--- 870,876 ----
    interfacing to the language (implementation) represented by the
    convention.  Any declarations useful for interfacing to any language on
    the given hardware architecture should be provided directly in
!   ``Interfaces``."
  
  Followed.
  
*************** Followed.
*** 898,934 ****
  
  Followed.
  
!   "An Ada `in` scalar parameter is passed as a scalar argument to a C
    function."
  
  Followed.
  
!   "An Ada `in` parameter of an access-to-object type with designated
!   type `T` is passed as a ``t*`` argument to a C function,
!   where ``t`` is the C type corresponding to the Ada type `T`."
  
  Followed.
  
!   "An Ada access `T` parameter, or an Ada `out` or `in out`
!   parameter of an elementary type `T`, is passed as a ``t*``
    argument to a C function, where ``t`` is the C type corresponding to
!   the Ada type `T`.  In the case of an elementary `out` or
!   `in out` parameter, a pointer to a temporary copy is used to
    preserve by-copy semantics."
  
  Followed.
  
!   "An Ada parameter of a record type `T`, of any mode, is passed as a
    ``t*`` argument to a C function, where ``t`` is the C
!   structure corresponding to the Ada type `T`."
  
  Followed.  This convention may be overridden by the use of the C_Pass_By_Copy
  pragma, or Convention, or by explicitly specifying the mechanism for a given
  call using an extended import or export pragma.
  
!   "An Ada parameter of an array type with component type `T`, of any
    mode, is passed as a ``t*`` argument to a C function, where
!   ``t`` is the C type corresponding to the Ada type `T`."
  
  Followed.
  
--- 898,934 ----
  
  Followed.
  
!   "An Ada ``in`` scalar parameter is passed as a scalar argument to a C
    function."
  
  Followed.
  
!   "An Ada ``in`` parameter of an access-to-object type with designated
!   type ``T`` is passed as a ``t*`` argument to a C function,
!   where ``t`` is the C type corresponding to the Ada type ``T``."
  
  Followed.
  
!   "An Ada access ``T`` parameter, or an Ada ``out`` or ``in out``
!   parameter of an elementary type ``T``, is passed as a ``t*``
    argument to a C function, where ``t`` is the C type corresponding to
!   the Ada type ``T``.  In the case of an elementary ``out`` or
!   ``in out`` parameter, a pointer to a temporary copy is used to
    preserve by-copy semantics."
  
  Followed.
  
!   "An Ada parameter of a record type ``T``, of any mode, is passed as a
    ``t*`` argument to a C function, where ``t`` is the C
!   structure corresponding to the Ada type ``T``."
  
  Followed.  This convention may be overridden by the use of the C_Pass_By_Copy
  pragma, or Convention, or by explicitly specifying the mechanism for a given
  call using an extended import or export pragma.
  
!   "An Ada parameter of an array type with component type ``T``, of any
    mode, is passed as a ``t*`` argument to a C function, where
!   ``t`` is the C type corresponding to the Ada type ``T``."
  
  Followed.
  
*************** RM B.4(95-98): Interfacing with COBOL
*** 948,955 ****
  
  Followed.
  
!   "An Ada access `T` parameter is passed as a ``BY REFERENCE`` data item of
!   the COBOL type corresponding to `T`."
  
  Followed.
  
--- 948,955 ----
  
  Followed.
  
!   "An Ada access ``T`` parameter is passed as a ``BY REFERENCE`` data item of
!   the COBOL type corresponding to ``T``."
  
  Followed.
  
*************** Followed.
*** 982,990 ****
  
  Followed.
  
!   "An Ada parameter of an elementary, array, or record type `T` is
!   passed as a `T` argument to a Fortran procedure, where `T` is
!   the Fortran type corresponding to the Ada type `T`, and where the
    INTENT attribute of the corresponding dummy argument matches the Ada
    formal parameter mode; the Fortran implementation's parameter passing
    conventions are used.  For elementary types, a local copy is used if
--- 982,990 ----
  
  Followed.
  
!   "An Ada parameter of an elementary, array, or record type ``T`` is
!   passed as a ``T`` argument to a Fortran procedure, where ``T`` is
!   the Fortran type corresponding to the Ada type ``T``, and where the
    INTENT attribute of the corresponding dummy argument matches the Ada
    formal parameter mode; the Fortran implementation's parameter passing
    conventions are used.  For elementary types, a local copy is used if
*************** Followed.
*** 1011,1017 ****
  
    "The interfacing pragmas (see Annex B) should support interface to
    assembler; the default assembler should be associated with the
!   convention identifier `Assembler`."
  
  Followed.
  
--- 1011,1017 ----
  
    "The interfacing pragmas (see Annex B) should support interface to
    assembler; the default assembler should be associated with the
!   convention identifier ``Assembler``."
  
  Followed.
  
*************** Followed on any target supporting such o
*** 1065,1071 ****
  RM C.3(28): Interrupt Support
  =============================
  
!   "If the `Ceiling_Locking` policy is not in effect, the
    implementation should provide means for the application to specify which
    interrupts are to be blocked during protected actions, if the underlying
    system allows for a finer-grain control of interrupt blocking."
--- 1065,1071 ----
  RM C.3(28): Interrupt Support
  =============================
  
!   "If the ``Ceiling_Locking`` policy is not in effect, the
    implementation should provide means for the application to specify which
    interrupts are to be blocked during protected actions, if the underlying
    system allows for a finer-grain control of interrupt blocking."
*************** such direct calls.
*** 1089,1105 ****
  
  Followed.  Compile time warnings are given when possible.
  
! .. index:: Package `Interrupts`
  
  .. index:: Interrupts
  
! RM C.3.2(25): Package `Interrupts`
! ==================================
  
    "If implementation-defined forms of interrupt handler procedures are
    supported, such as protected procedures with parameters, then for each
!   such form of a handler, a type analogous to `Parameterless_Handler`
!   should be specified in a child package of `Interrupts`, with the
    same operations as in the predefined package Interrupts."
  
  Followed.
--- 1089,1105 ----
  
  Followed.  Compile time warnings are given when possible.
  
! .. index:: Package ``Interrupts``
  
  .. index:: Interrupts
  
! RM C.3.2(25): Package ``Interrupts``
! ====================================
  
    "If implementation-defined forms of interrupt handler procedures are
    supported, such as protected procedures with parameters, then for each
!   such form of a handler, a type analogous to ``Parameterless_Handler``
!   should be specified in a child package of ``Interrupts``, with the
    same operations as in the predefined package Interrupts."
  
  Followed.
*************** RM C.4(14): Pre-elaboration Requirements
*** 1117,1124 ****
  Followed.  Executable code is generated in some cases, e.g., loops
  to initialize large arrays.
  
! RM C.5(8): Pragma `Discard_Names`
! =================================
  
    "If the pragma applies to an entity, then the implementation should
    reduce the amount of storage used for storing names associated with that
--- 1117,1124 ----
  Followed.  Executable code is generated in some cases, e.g., loops
  to initialize large arrays.
  
! RM C.5(8): Pragma ``Discard_Names``
! ===================================
  
    "If the pragma applies to an entity, then the implementation should
    reduce the amount of storage used for storing names associated with that
*************** RM C.7.2(30): The Package Task_Attribute
*** 1138,1146 ****
    recommended that the storage for task attributes will be pre-allocated
    statically and not from the heap.  This can be accomplished by either
    placing restrictions on the number and the size of the task's
!   attributes, or by using the pre-allocated storage for the first `N`
    attribute objects, and the heap for the others.  In the latter case,
!   `N` should be documented."
  
  Not followed.  This implementation is not targeted to such a domain.
  
--- 1138,1146 ----
    recommended that the storage for task attributes will be pre-allocated
    statically and not from the heap.  This can be accomplished by either
    placing restrictions on the number and the size of the task's
!   attributes, or by using the pre-allocated storage for the first ``N``
    attribute objects, and the heap for the others.  In the latter case,
!   ``N`` should be documented."
  
  Not followed.  This implementation is not targeted to such a domain.
  
*************** RM D.3(17): Locking Policies
*** 1153,1160 ****
    locking policies defined by the implementation."
  
  Followed.  Two implementation-defined locking policies are defined,
! whose names (`Inheritance_Locking` and
! `Concurrent_Readers_Locking`) follow this suggestion.
  
  .. index:: Entry queuing policies
  
--- 1153,1160 ----
    locking policies defined by the implementation."
  
  Followed.  Two implementation-defined locking policies are defined,
! whose names (``Inheritance_Locking`` and
! ``Concurrent_Readers_Locking``) follow this suggestion.
  
  .. index:: Entry queuing policies
  
*************** Followed.  No such implementation-define
*** 1171,1180 ****
  RM D.6(9-10): Preemptive Abort
  ==============================
  
!   "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."
  
  Followed.
  
--- 1171,1180 ----
  RM D.6(9-10): Preemptive Abort
  ==============================
  
!   "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."
  
  Followed.
  
*************** RM D.7(21): Tasking Restrictions
*** 1194,1201 ****
  
  GNAT currently takes advantage of these restrictions by providing an optimized
  run time when the Ravenscar profile and the GNAT restricted run time set
! of restrictions are specified.  See pragma `Profile (Ravenscar)` and
! pragma `Profile (Restricted)` for more details.
  
  .. index:: Time, monotonic
  
--- 1194,1201 ----
  
  GNAT currently takes advantage of these restrictions by providing an optimized
  run time when the Ravenscar profile and the GNAT restricted run time set
! of restrictions are specified.  See pragma ``Profile (Ravenscar)`` and
! pragma ``Profile (Restricted)`` for more details.
  
  .. index:: Time, monotonic
  
*************** RM D.8(47-49): Monotonic Time
*** 1203,1214 ****
  =============================
  
    "When appropriate, implementations should provide configuration
!   mechanisms to change the value of `Tick`."
  
  Such configuration mechanisms are not appropriate to this implementation
  and are thus not supported.
  
!   "It is recommended that `Calendar.Clock` and `Real_Time.Clock`
    be implemented as transformations of the same time base."
  
  Followed.
--- 1203,1214 ----
  =============================
  
    "When appropriate, implementations should provide configuration
!   mechanisms to change the value of ``Tick``."
  
  Such configuration mechanisms are not appropriate to this implementation
  and are thus not supported.
  
!   "It is recommended that ``Calendar.Clock`` and ``Real_Time.Clock``
    be implemented as transformations of the same time base."
  
  Followed.
*************** Followed.
*** 1216,1222 ****
  
    "It is recommended that the best time base which exists in
    the underlying system be available to the application through
!   `Clock`.  `Best` may mean highest accuracy or largest range."
  
  Followed.
  
--- 1216,1222 ----
  
    "It is recommended that the best time base which exists in
    the underlying system be available to the application through
!   ``Clock``.  `Best` may mean highest accuracy or largest range."
  
  Followed.
  
*************** RM E.5(28-29): Partition Communication S
*** 1235,1243 ****
  Followed by GLADE, a separately supplied PCS that can be used with
  GNAT.
  
!   "The `Write` operation on a stream of type `Params_Stream_Type`
!   should raise `Storage_Error` if it runs out of space trying to
!   write the `Item` into the stream."
  
  Followed by GLADE, a separately supplied PCS that can be used with
  GNAT.
--- 1235,1243 ----
  Followed by GLADE, a separately supplied PCS that can be used with
  GNAT.
  
!   "The ``Write`` operation on a stream of type ``Params_Stream_Type``
!   should raise ``Storage_Error`` if it runs out of space trying to
!   write the ``Item`` into the stream."
  
  Followed by GLADE, a separately supplied PCS that can be used with
  GNAT.
*************** RM F(7): COBOL Support
*** 1249,1257 ****
  
    "If COBOL (respectively, C) is widely supported in the target
    environment, implementations supporting the Information Systems Annex
!   should provide the child package `Interfaces.COBOL` (respectively,
!   `Interfaces.C`) specified in Annex B and should support a
!   `convention_identifier` of COBOL (respectively, C) in the interfacing
    pragmas (see Annex B), thus allowing Ada programs to interface with
    programs written in that language."
  
--- 1249,1257 ----
  
    "If COBOL (respectively, C) is widely supported in the target
    environment, implementations supporting the Information Systems Annex
!   should provide the child package ``Interfaces.COBOL`` (respectively,
!   ``Interfaces.C``) specified in Annex B and should support a
!   ``convention_identifier`` of COBOL (respectively, C) in the interfacing
    pragmas (see Annex B), thus allowing Ada programs to interface with
    programs written in that language."
  
*************** RM F.1(2): Decimal Radix Support
*** 1263,1271 ****
  ================================
  
    "Packed decimal should be used as the internal representation for objects
!   of subtype `S` when `S`'Machine_Radix = 10."
  
! Not followed.  GNAT ignores `S`'Machine_Radix and always uses binary
  representations.
  
  .. index:: Numerics
--- 1263,1271 ----
  ================================
  
    "Packed decimal should be used as the internal representation for objects
!   of subtype ``S`` when ``S``'Machine_Radix = 10."
  
! Not followed.  GNAT ignores ``S``'Machine_Radix and always uses binary
  representations.
  
  .. index:: Numerics
*************** RM G: Numerics
*** 1275,1283 ****
  
    "If Fortran (respectively, C) is widely supported in the target
    environment, implementations supporting the Numerics Annex
!   should provide the child package `Interfaces.Fortran` (respectively,
!   `Interfaces.C`) specified in Annex B and should support a
!   `convention_identifier` of Fortran (respectively, C) in the interfacing
    pragmas (see Annex B), thus allowing Ada programs to interface with
    programs written in that language."
  
--- 1275,1283 ----
  
    "If Fortran (respectively, C) is widely supported in the target
    environment, implementations supporting the Numerics Annex
!   should provide the child package ``Interfaces.Fortran`` (respectively,
!   ``Interfaces.C``) specified in Annex B and should support a
!   ``convention_identifier`` of Fortran (respectively, C) in the interfacing
    pragmas (see Annex B), thus allowing Ada programs to interface with
    programs written in that language."
  
*************** Not followed.
*** 1308,1315 ****
    complex operand and a real operand is that the imaginary operand remains
    unchanged, an implementation should not perform this operation by first
    promoting the real operand to complex type and then performing a full
!   complex addition.  In implementations in which the `Signed_Zeros`
!   attribute of the component type is `True` (and which therefore
    conform to IEC 559:1989 in regard to the handling of the sign of zero in
    predefined arithmetic operations), the latter technique will not
    generate the required result when the imaginary component of the complex
--- 1308,1315 ----
    complex operand and a real operand is that the imaginary operand remains
    unchanged, an implementation should not perform this operation by first
    promoting the real operand to complex type and then performing a full
!   complex addition.  In implementations in which the ``Signed_Zeros``
!   attribute of the component type is ``True`` (and which therefore
    conform to IEC 559:1989 in regard to the handling of the sign of zero in
    predefined arithmetic operations), the latter technique will not
    generate the required result when the imaginary component of the complex
*************** Not followed.
*** 1321,1335 ****
  
  Not followed.
  
!   "Implementations in which `Real'Signed_Zeros` is `True` should
    attempt to provide a rational treatment of the signs of zero results and
!   result components.  As one example, the result of the `Argument`
    function should have the sign of the imaginary component of the
!   parameter `X` when the point represented by that parameter lies on
    the positive real axis; as another, the sign of the imaginary component
!   of the `Compose_From_Polar` function should be the same as
!   (respectively, the opposite of) that of the `Argument` parameter when that
!   parameter has a value of zero and the `Modulus` parameter has a
    nonnegative (respectively, negative) value."
  
  Followed.
--- 1321,1335 ----
  
  Not followed.
  
!   "Implementations in which ``Real'Signed_Zeros`` is ``True`` should
    attempt to provide a rational treatment of the signs of zero results and
!   result components.  As one example, the result of the ``Argument``
    function should have the sign of the imaginary component of the
!   parameter ``X`` when the point represented by that parameter lies on
    the positive real axis; as another, the sign of the imaginary component
!   of the ``Compose_From_Polar`` function should be the same as
!   (respectively, the opposite of) that of the ``Argument`` parameter when that
!   parameter has a value of zero and the ``Modulus`` parameter has a
    nonnegative (respectively, negative) value."
  
  Followed.
*************** Followed.
*** 1339,1346 ****
  RM G.1.2(49): Complex Elementary Functions
  ==========================================
  
!   "Implementations in which `Complex_Types.Real'Signed_Zeros` is
!   `True` should attempt to provide a rational treatment of the signs
    of zero results and result components.  For example, many of the complex
    elementary functions have components that are odd functions of one of
    the parameter components; in these cases, the result component should
--- 1339,1346 ----
  RM G.1.2(49): Complex Elementary Functions
  ==========================================
  
!   "Implementations in which ``Complex_Types.Real'Signed_Zeros`` is
!   ``True`` should attempt to provide a rational treatment of the signs
    of zero results and result components.  For example, many of the complex
    elementary functions have components that are odd functions of one of
    the parameter components; in these cases, the result component should
*************** RM G.2.4(19): Accuracy Requirements
*** 1357,1369 ****
  ===================================
  
    "The versions of the forward trigonometric functions without a
!   `Cycle` parameter should not be implemented by calling the
!   corresponding version with a `Cycle` parameter of
!   `2.0*Numerics.Pi`, since this will not provide the required
    accuracy in some portions of the domain.  For the same reason, the
!   version of `Log` without a `Base` parameter should not be
!   implemented by calling the corresponding version with a `Base`
!   parameter of `Numerics.e`."
  
  Followed.
  
--- 1357,1369 ----
  ===================================
  
    "The versions of the forward trigonometric functions without a
!   ``Cycle`` parameter should not be implemented by calling the
!   corresponding version with a ``Cycle`` parameter of
!   ``2.0*Numerics.Pi``, since this will not provide the required
    accuracy in some portions of the domain.  For the same reason, the
!   version of ``Log`` without a ``Base`` parameter should not be
!   implemented by calling the corresponding version with a ``Base``
!   parameter of ``Numerics.e``."
  
  Followed.
  
*************** Followed.
*** 1374,1383 ****
  RM G.2.6(15): Complex Arithmetic Accuracy
  =========================================
  
!   "The version of the `Compose_From_Polar` function without a
!   `Cycle` parameter should not be implemented by calling the
!   corresponding version with a `Cycle` parameter of
!   `2.0*Numerics.Pi`, since this will not provide the required
    accuracy in some portions of the domain."
  
  Followed.
--- 1374,1383 ----
  RM G.2.6(15): Complex Arithmetic Accuracy
  =========================================
  
!   "The version of the ``Compose_From_Polar`` function without a
!   ``Cycle`` parameter should not be implemented by calling the
!   corresponding version with a ``Cycle`` parameter of
!   ``2.0*Numerics.Pi``, since this will not provide the required
    accuracy in some portions of the domain."
  
  Followed.
*************** Followed.
*** 1387,1393 ****
  RM H.6(15/2): Pragma Partition_Elaboration_Policy
  =================================================
  
!   "If the partition elaboration policy is `Sequential` and the
    Environment task becomes permanently blocked during elaboration then the
    partition is deadlocked and it is recommended that the partition be
    immediately terminated."
--- 1387,1393 ----
  RM H.6(15/2): Pragma Partition_Elaboration_Policy
  =================================================
  
!   "If the partition elaboration policy is ``Sequential`` and the
    Environment task becomes permanently blocked during elaboration then the
    partition is deadlocked and it is recommended that the partition be
    immediately terminated."
diff -Nrcpad gcc-7.3.0/gcc/ada/doc/gnat_rm/implementation_defined_aspects.rst gcc-8.1.0/gcc/ada/doc/gnat_rm/implementation_defined_aspects.rst
*** gcc-7.3.0/gcc/ada/doc/gnat_rm/implementation_defined_aspects.rst	Fri Jan 13 11:23:42 2017
--- gcc-8.1.0/gcc/ada/doc/gnat_rm/implementation_defined_aspects.rst	Thu Jan 11 08:52:55 2018
*************** Aspect Abstract_State
*** 66,73 ****
  
  This aspect is equivalent to :ref:`pragma Abstract_State<Pragma-Abstract_State>`.
  
! Annotate
! ========
  .. index:: Annotate
  
  There are three forms of this aspect (where ID is an identifier,
--- 66,74 ----
  
  This aspect is equivalent to :ref:`pragma Abstract_State<Pragma-Abstract_State>`.
  
! Aspect Annotate
! ===============
! 
  .. index:: Annotate
  
  There are three forms of this aspect (where ID is an identifier,
*************** corresponding to :ref:`pragma Annotate<P
*** 77,91 ****
  
  
  *Annotate => ID*
!   Equivalent to `pragma Annotate (ID, Entity => Name);`
  
  
  *Annotate => (ID)*
!   Equivalent to `pragma Annotate (ID, Entity => Name);`
  
  
  *Annotate => (ID ,ID {, ARG})*
!   Equivalent to `pragma Annotate (ID, ID {, ARG}, Entity => Name);`
  
  Aspect Async_Readers
  ====================
--- 78,92 ----
  
  
  *Annotate => ID*
!   Equivalent to ``pragma Annotate (ID, Entity => Name);``
  
  
  *Annotate => (ID)*
!   Equivalent to ``pragma Annotate (ID, Entity => Name);``
  
  
  *Annotate => (ID ,ID {, ARG})*
!   Equivalent to ``pragma Annotate (ID, ID {, ARG}, Entity => Name);``
  
  Aspect Async_Readers
  ====================
*************** Aspect Dimension
*** 129,135 ****
  ================
  .. index:: Dimension
  
! The `Dimension` aspect is used to specify the dimensions of a given
  subtype of a dimensioned numeric type. The aspect also specifies a symbol
  used when doing formatted output of dimensioned quantities. The syntax is::
  
--- 130,136 ----
  ================
  .. index:: Dimension
  
! The ``Dimension`` aspect is used to specify the dimensions of a given
  subtype of a dimensioned numeric type. The aspect also specifies a symbol
  used when doing formatted output of dimensioned quantities. The syntax is::
  
*************** used when doing formatted output of dime
*** 147,159 ****
  
  
  This aspect can only be applied to a subtype whose parent type has
! a `Dimension_Systen` aspect. The aspect must specify values for
  all dimensions of the system. The rational values are the powers of the
  corresponding dimensions that are used by the compiler to verify that
  physical (numeric) computations are dimensionally consistent. For example,
  the computation of a force must result in dimensions (L => 1, M => 1, T => -2).
  For further examples of the usage
! of this aspect, see package `System.Dim.Mks`.
  Note that when the dimensioned type is an integer type, then any
  dimension value must be an integer literal.
  
--- 148,160 ----
  
  
  This aspect can only be applied to a subtype whose parent type has
! a ``Dimension_System`` aspect. The aspect must specify values for
  all dimensions of the system. The rational values are the powers of the
  corresponding dimensions that are used by the compiler to verify that
  physical (numeric) computations are dimensionally consistent. For example,
  the computation of a force must result in dimensions (L => 1, M => 1, T => -2).
  For further examples of the usage
! of this aspect, see package ``System.Dim.Mks``.
  Note that when the dimensioned type is an integer type, then any
  dimension value must be an integer literal.
  
*************** Aspect Dimension_System
*** 161,169 ****
  =======================
  .. index:: Dimension_System
  
! The `Dimension_System` aspect is used to define a system of
  dimensions that will be used in subsequent subtype declarations with
! `Dimension` aspects that reference this system. The syntax is::
  
    with Dimension_System => (DIMENSION {, DIMENSION});
  
--- 162,170 ----
  =======================
  .. index:: Dimension_System
  
! The ``Dimension_System`` aspect is used to define a system of
  dimensions that will be used in subsequent subtype declarations with
! ``Dimension`` aspects that reference this system. The syntax is::
  
    with Dimension_System => (DIMENSION {, DIMENSION});
  
*************** dimensions that will be used in subseque
*** 176,195 ****
  
  This aspect is applied to a type, which must be a numeric derived type
  (typically a floating-point type), that
! will represent values within the dimension system. Each `DIMENSION`
  corresponds to one particular dimension. A maximum of 7 dimensions may
! be specified. `Unit_Name` is the name of the dimension (for example
! `Meter`). `Unit_Symbol` is the shorthand used for quantities
! of this dimension (for example `m` for `Meter`).
! `Dim_Symbol` gives
  the identification within the dimension system (typically this is a
! single letter, e.g. `L` standing for length for unit name `Meter`).
! The `Unit_Symbol` is used in formatted output of dimensioned quantities.
! The `Dim_Symbol` is used in error messages when numeric operations have
  inconsistent dimensions.
  
  GNAT provides the standard definition of the International MKS system in
! the run-time package `System.Dim.Mks`. You can easily define
  similar packages for cgs units or British units, and define conversion factors
  between values in different systems. The MKS system is characterized by the
  following aspect:
--- 177,196 ----
  
  This aspect is applied to a type, which must be a numeric derived type
  (typically a floating-point type), that
! will represent values within the dimension system. Each ``DIMENSION``
  corresponds to one particular dimension. A maximum of 7 dimensions may
! be specified. ``Unit_Name`` is the name of the dimension (for example
! ``Meter``). ``Unit_Symbol`` is the shorthand used for quantities
! of this dimension (for example ``m`` for ``Meter``).
! ``Dim_Symbol`` gives
  the identification within the dimension system (typically this is a
! single letter, e.g. ``L`` standing for length for unit name ``Meter``).
! The ``Unit_Symbol`` is used in formatted output of dimensioned quantities.
! The ``Dim_Symbol`` is used in error messages when numeric operations have
  inconsistent dimensions.
  
  GNAT provides the standard definition of the International MKS system in
! the run-time package ``System.Dim.Mks``. You can easily define
  similar packages for cgs units or British units, and define conversion factors
  between values in different systems. The MKS system is characterized by the
  following aspect:
*************** following aspect:
*** 207,213 ****
           (Unit_Name => Candela,  Unit_Symbol => "cd",  Dim_Symbol => 'J'));
  
  
! Note that in the above type definition, we use the `at` symbol (``@``) to
  represent a theta character (avoiding the use of extended Latin-1
  characters in this context).
  
--- 208,214 ----
           (Unit_Name => Candela,  Unit_Symbol => "cd",  Dim_Symbol => 'J'));
  
  
! Note that in the above type definition, we use the ``at`` symbol (``@``) to
  represent a theta character (avoiding the use of extended Latin-1
  characters in this context).
  
*************** Aspect Disable_Controlled
*** 218,226 ****
  =========================
  .. index:: Disable_Controlled
  
! The aspect  `Disable_Controlled` is defined for controlled record types. If
! active, this aspect causes suppression of all related calls to `Initialize`,
! `Adjust`, and `Finalize`. The intended use is for conditional compilation,
  where for example you might want a record to be controlled or not depending on
  whether some run-time check is enabled or suppressed.
  
--- 219,227 ----
  =========================
  .. index:: Disable_Controlled
  
! The aspect  ``Disable_Controlled`` is defined for controlled record types. If
! active, this aspect causes suppression of all related calls to ``Initialize``,
! ``Adjust``, and ``Finalize``. The intended use is for conditional compilation,
  where for example you might want a record to be controlled or not depending on
  whether some run-time check is enabled or suppressed.
  
*************** Aspect Invariant
*** 283,298 ****
  .. index:: Invariant
  
  This aspect is equivalent to :ref:`pragma Invariant<Pragma-Invariant>`. It is a
! synonym for the language defined aspect `Type_Invariant` except
! that it is separately controllable using pragma `Assertion_Policy`.
  
  Aspect Invariant'Class
  ======================
  .. index:: Invariant'Class
  
  This aspect is equivalent to :ref:`pragma Type_Invariant_Class<Pragma-Type_Invariant_Class>`. It is a
! synonym for the language defined aspect `Type_Invariant'Class` except
! that it is separately controllable using pragma `Assertion_Policy`.
  
  Aspect Iterable
  ===============
--- 284,299 ----
  .. index:: Invariant
  
  This aspect is equivalent to :ref:`pragma Invariant<Pragma-Invariant>`. It is a
! synonym for the language defined aspect ``Type_Invariant`` except
! that it is separately controllable using pragma ``Assertion_Policy``.
  
  Aspect Invariant'Class
  ======================
  .. index:: Invariant'Class
  
  This aspect is equivalent to :ref:`pragma Type_Invariant_Class<Pragma-Type_Invariant_Class>`. It is a
! synonym for the language defined aspect ``Type_Invariant'Class`` except
! that it is separately controllable using pragma ``Assertion_Policy``.
  
  Aspect Iterable
  ===============
*************** Aspect Iterable
*** 301,311 ****
  This aspect provides a light-weight mechanism for loops and quantified
  expressions over container types, without the overhead imposed by the tampering
  checks of standard Ada 2012 iterators. The value of the aspect is an aggregate
! with four named components: `First`, `Next`, `Has_Element`, and `Element` (the
! last one being optional). When only 3 components are specified, only the
! `for .. in` form of iteration over cursors is available. When all 4 components
! are specified, both this form and the `for .. of` form of iteration over
! elements are available. The following is a typical example of use:
  
  .. code-block:: ada
  
--- 302,316 ----
  This aspect provides a light-weight mechanism for loops and quantified
  expressions over container types, without the overhead imposed by the tampering
  checks of standard Ada 2012 iterators. The value of the aspect is an aggregate
! with six named components, of which the last three are optional: ``First``,
! ``Next``, ``Has_Element``, ``Element``, ``Last``, and ``Previous``.
! When only the first three components are specified, only the
! ``for .. in`` form of iteration over cursors is available. When ``Element``
! is specified, both this form and the ``for .. of`` form of iteration over
! elements are available. If the last two components are specified, reverse
! iterations over the container can be specified (analogous to what can be done
! over predefined containers that support the ``Reverse_Iterator`` interface).
! The following is a typical example of use:
  
  .. code-block:: ada
  
*************** elements are available. The following is
*** 315,344 ****
                     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:
  
  .. code-block:: ada
  
    function Cursor_Has_Element (Cont : Container; Position : Cursor) return Boolean;
  
! * The value of `Element` is a primitive operation of the container type that
!   takes both a container and a cursor and yields an `Element_Type`, which must
    be a type declared in the container package or visible from it. For example:
  
  .. code-block:: ada
--- 320,349 ----
                     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:
  
  .. code-block:: ada
  
    function Cursor_Has_Element (Cont : Container; Position : Cursor) return Boolean;
  
! * The value of ``Element`` is a primitive operation of the container type that
!   takes both a container and a cursor and yields an ``Element_Type``, which must
    be a type declared in the container package or visible from it. For example:
  
  .. code-block:: ada
*************** This boolean aspect is equivalent to :re
*** 361,367 ****
  
  Aspect Max_Queue_Length
  =======================
- 
  .. index:: Max_Queue_Length
  
  This aspect is equivalent to :ref:`pragma Max_Queue_Length<Pragma-Max_Queue_Length>`.
--- 366,371 ----
*************** Aspect No_Elaboration_Code_All
*** 373,378 ****
--- 377,388 ----
  This aspect is equivalent to :ref:`pragma No_Elaboration_Code_All<Pragma-No_Elaboration_Code_All>`
  for a program unit.
  
+ Aspect No_Inline
+ ================
+ .. index:: No_Inline
+ 
+ This boolean aspect is equivalent to :ref:`pragma No_Inline<Pragma-No_Inline>`.
+ 
  Aspect No_Tagged_Streams
  ========================
  .. index:: No_Tagged_Streams
*************** Aspect Predicate
*** 412,422 ****
  .. index:: Predicate
  
  This aspect is equivalent to :ref:`pragma Predicate<Pragma-Predicate>`. It is thus
! similar to the language defined aspects `Dynamic_Predicate`
! and `Static_Predicate` except that whether the resulting
  predicate is static or dynamic is controlled by the form of the
  expression. It is also separately controllable using pragma
! `Assertion_Policy`.
  
  Aspect Pure_Function
  ====================
--- 422,432 ----
  .. index:: Predicate
  
  This aspect is equivalent to :ref:`pragma Predicate<Pragma-Predicate>`. It is thus
! similar to the language defined aspects ``Dynamic_Predicate``
! and ``Static_Predicate`` except that whether the resulting
  predicate is static or dynamic is controlled by the form of the
  expression. It is also separately controllable using pragma
! ``Assertion_Policy``.
  
  Aspect Pure_Function
  ====================
*************** Aspect Shared
*** 473,479 ****
  .. index:: Shared
  
  This boolean aspect is equivalent to :ref:`pragma Shared<Pragma-Shared>`
! and is thus a synonym for aspect `Atomic`.
  
  Aspect Simple_Storage_Pool
  ==========================
--- 483,489 ----
  .. index:: Shared
  
  This boolean aspect is equivalent to :ref:`pragma Shared<Pragma-Shared>`
! and is thus a synonym for aspect ``Atomic``.
  
  Aspect Simple_Storage_Pool
  ==========================
*************** Aspect Warnings
*** 574,578 ****
  .. index:: Warnings
  
  This aspect is equivalent to the two argument form of :ref:`pragma Warnings<Pragma_Warnings>`,
! where the first argument is `ON` or `OFF` and the second argument
  is the entity.
--- 584,588 ----
  .. index:: Warnings
  
  This aspect is equivalent to the two argument form of :ref:`pragma Warnings<Pragma_Warnings>`,
! where the first argument is ``ON`` or ``OFF`` and the second argument
  is the entity.
diff -Nrcpad gcc-7.3.0/gcc/ada/doc/gnat_rm/implementation_defined_attributes.rst gcc-8.1.0/gcc/ada/doc/gnat_rm/implementation_defined_attributes.rst
*** gcc-7.3.0/gcc/ada/doc/gnat_rm/implementation_defined_attributes.rst	Fri Jan 13 11:23:42 2017
--- gcc-8.1.0/gcc/ada/doc/gnat_rm/implementation_defined_attributes.rst	Fri Sep  8 12:34:54 2017
*************** Attribute Abort_Signal
*** 27,33 ****
  ======================
  .. index:: Abort_Signal
  
! `Standard'Abort_Signal` (`Standard` is the only allowed
  prefix) provides the entity for the special exception used to signal
  task abort or asynchronous transfer of control.  Normally this attribute
  should only be used in the tasking runtime (it is highly peculiar, and
--- 27,33 ----
  ======================
  .. index:: Abort_Signal
  
! ``Standard'Abort_Signal`` (``Standard`` is the only allowed
  prefix) provides the entity for the special exception used to signal
  task abort or asynchronous transfer of control.  Normally this attribute
  should only be used in the tasking runtime (it is highly peculiar, and
*************** intercept the abort exception).
*** 36,48 ****
  
  Attribute Address_Size
  ======================
! .. index:: Size of `Address`
  
  .. index:: Address_Size
  
! `Standard'Address_Size` (`Standard` is the only allowed
  prefix) is a static constant giving the number of bits in an
! `Address`. It is the same value as System.Address'Size,
  but has the advantage of being static, while a direct
  reference to System.Address'Size is nonstatic because Address
  is a private type.
--- 36,48 ----
  
  Attribute Address_Size
  ======================
! .. index:: Size of ``Address``
  
  .. index:: Address_Size
  
! ``Standard'Address_Size`` (``Standard`` is the only allowed
  prefix) is a static constant giving the number of bits in an
! ``Address``. It is the same value as System.Address'Size,
  but has the advantage of being static, while a direct
  reference to System.Address'Size is nonstatic because Address
  is a private type.
*************** Attribute Asm_Input
*** 51,57 ****
  ===================
  .. index:: Asm_Input
  
! The `Asm_Input` attribute denotes a function that takes two
  parameters.  The first is a string, the second is an expression of the
  type designated by the prefix.  The first (string) argument is required
  to be a static expression, and is the constraint for the parameter,
--- 51,57 ----
  ===================
  .. index:: Asm_Input
  
! The ``Asm_Input`` attribute denotes a function that takes two
  parameters.  The first is a string, the second is an expression of the
  type designated by the prefix.  The first (string) argument is required
  to be a static expression, and is the constraint for the parameter,
*************** Attribute Asm_Output
*** 65,71 ****
  ====================
  .. index:: Asm_Output
  
! The `Asm_Output` attribute denotes a function that takes two
  parameters.  The first is a string, the second is the name of a variable
  of the type designated by the attribute prefix.  The first (string)
  argument is required to be a static expression and designates the
--- 65,71 ----
  ====================
  .. index:: Asm_Output
  
! The ``Asm_Output`` attribute denotes a function that takes two
  parameters.  The first is a string, the second is the name of a variable
  of the type designated by the attribute prefix.  The first (string)
  argument is required to be a static expression and designates the
*************** required).  The second argument is the v
*** 74,87 ****
  result.  The possible values for constraint are the same as those used in
  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 `No_Output_Operands`.
  :ref:`Machine_Code_Insertions`
  
  Attribute Atomic_Always_Lock_Free
  =================================
  .. index:: Atomic_Always_Lock_Free
  
! The prefix of the `Atomic_Always_Lock_Free` attribute is a type.
  The result is a Boolean value which is True if the type has discriminants,
  and False otherwise.  The result indicate whether atomic operations are
  supported by the target for the given type.
--- 74,87 ----
  result.  The possible values for constraint are the same as those used in
  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 ``No_Output_Operands``.
  :ref:`Machine_Code_Insertions`
  
  Attribute Atomic_Always_Lock_Free
  =================================
  .. index:: Atomic_Always_Lock_Free
  
! The prefix of the ``Atomic_Always_Lock_Free`` attribute is a type.
  The result is a Boolean value which is True if the type has discriminants,
  and False otherwise.  The result indicate whether atomic operations are
  supported by the target for the given type.
*************** Attribute Bit
*** 90,100 ****
  =============
  .. index:: Bit
  
! ``obj'Bit``, where `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 non-negative number not
! exceeding the value of `System.Storage_Unit`.
  
  For an object that is a variable or a constant allocated in a register,
  the value is zero.  (The use of this attribute does not force the
--- 90,100 ----
  =============
  .. index:: Bit
  
! ``obj'Bit``, where ``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 non-negative number not
! exceeding the value of ``System.Storage_Unit``.
  
  For an object that is a variable or a constant allocated in a register,
  the value is zero.  (The use of this attribute does not force the
*************** to either the matching actual parameter
*** 105,130 ****
  matching actual parameter.
  
  For an access object the value is zero.  Note that
! ``obj.all'Bit`` is subject to an `Access_Check` for the
  designated object.  Similarly for a record component
  ``X.C'Bit`` is subject to a discriminant check and
  ``X(I).Bit`` and ``X(I1..I2)'Bit``
  are subject to index checks.
  
  This attribute is designed to be compatible with the DEC Ada 83 definition
! and implementation of the `Bit` attribute.
  
  Attribute Bit_Position
  ======================
  .. index:: Bit_Position
  
! ``R.C'Bit_Position``, where `R` is a record object and `C` is one
  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
! `C` and is independent of the alignment of
! the containing record `R`.
  
  Attribute Code_Address
  ======================
--- 105,130 ----
  matching actual parameter.
  
  For an access object the value is zero.  Note that
! ``obj.all'Bit`` is subject to an ``Access_Check`` for the
  designated object.  Similarly for a record component
  ``X.C'Bit`` is subject to a discriminant check and
  ``X(I).Bit`` and ``X(I1..I2)'Bit``
  are subject to index checks.
  
  This attribute is designed to be compatible with the DEC Ada 83 definition
! and implementation of the ``Bit`` attribute.
  
  Attribute Bit_Position
  ======================
  .. index:: Bit_Position
  
! ``R.C'Bit_Position``, where ``R`` is a record object and ``C`` is one
  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
! ``C`` and is independent of the alignment of
! the containing record ``R``.
  
  Attribute Code_Address
  ======================
*************** Attribute Code_Address
*** 133,139 ****
  
  .. index:: Address of subprogram code
  
! The `'Address`
  attribute may be applied to subprograms in Ada 95 and Ada 2005, but the
  intended effect seems to be to provide
  an address value which can be used to call the subprogram by means of
--- 133,139 ----
  
  .. index:: Address of subprogram code
  
! The ``'Address``
  attribute may be applied to subprograms in Ada 95 and Ada 2005, but the
  intended effect seems to be to provide
  an address value which can be used to call the subprogram by means of
*************** an address clause as in the following ex
*** 148,176 ****
    pragma Import (Ada, L);
  
  
! A call to `L` is then expected to result in a call to `K`.
  In Ada 83, where there were no access-to-subprogram values, this was
  a common work-around for getting the effect of an indirect call.
! GNAT implements the above use of `Address` and the technique
  illustrated by the example code works correctly.
  
  However, for some purposes, it is useful to have the address of the start
  of the generated code for the subprogram.  On some architectures, this is
! not necessarily the same as the `Address` value described above.
! For example, the `Address` value may reference a subprogram
  descriptor rather than the subprogram itself.
  
! The `'Code_Address` attribute, which can only be applied to
  subprogram entities, always returns the address of the start of the
  generated code of the specified subprogram, which may or may not be
! the same value as is returned by the corresponding `'Address`
  attribute.
  
  Attribute Compiler_Version
  ==========================
  .. index:: Compiler_Version
  
! `Standard'Compiler_Version` (`Standard` is the only allowed
  prefix) yields a static string identifying the version of the compiler
  being used to compile the unit containing the attribute reference.
  
--- 148,176 ----
    pragma Import (Ada, L);
  
  
! A call to ``L`` is then expected to result in a call to ``K``.
  In Ada 83, where there were no access-to-subprogram values, this was
  a common work-around for getting the effect of an indirect call.
! GNAT implements the above use of ``Address`` and the technique
  illustrated by the example code works correctly.
  
  However, for some purposes, it is useful to have the address of the start
  of the generated code for the subprogram.  On some architectures, this is
! not necessarily the same as the ``Address`` value described above.
! For example, the ``Address`` value may reference a subprogram
  descriptor rather than the subprogram itself.
  
! The ``'Code_Address`` attribute, which can only be applied to
  subprogram entities, always returns the address of the start of the
  generated code of the specified subprogram, which may or may not be
! the same value as is returned by the corresponding ``'Address``
  attribute.
  
  Attribute Compiler_Version
  ==========================
  .. index:: Compiler_Version
  
! ``Standard'Compiler_Version`` (``Standard`` is the only allowed
  prefix) yields a static string identifying the version of the compiler
  being used to compile the unit containing the attribute reference.
  
*************** Attribute Constrained
*** 178,189 ****
  =====================
  .. index:: Constrained
  
! In addition to the usage of this attribute in the Ada RM, `GNAT`
! also permits the use of the `'Constrained` attribute
  in a generic template
  for any type, including types without discriminants. The value of this
  attribute in the generic instance when applied to a scalar type or a
! record type without discriminants is always `True`. This usage is
  compatible with older Ada compilers, including notably DEC Ada.
  
  
--- 178,189 ----
  =====================
  .. index:: Constrained
  
! In addition to the usage of this attribute in the Ada RM, GNAT
! also permits the use of the ``'Constrained`` attribute
  in a generic template
  for any type, including types without discriminants. The value of this
  attribute in the generic instance when applied to a scalar type or a
! record type without discriminants is always ``True``. This usage is
  compatible with older Ada compilers, including notably DEC Ada.
  
  
*************** Attribute Default_Bit_Order
*** 195,205 ****
  
  .. index:: Default_Bit_Order
  
! `Standard'Default_Bit_Order` (`Standard` is the only
! permissible prefix), provides the value `System.Default_Bit_Order`
! as a `Pos` value (0 for `High_Order_First`, 1 for
! `Low_Order_First`).  This is used to construct the definition of
! `Default_Bit_Order` in package `System`.
  
  Attribute Default_Scalar_Storage_Order
  ======================================
--- 195,205 ----
  
  .. index:: Default_Bit_Order
  
! ``Standard'Default_Bit_Order`` (``Standard`` is the only
! permissible prefix), provides the value ``System.Default_Bit_Order``
! as a ``Pos`` value (0 for ``High_Order_First``, 1 for
! ``Low_Order_First``).  This is used to construct the definition of
! ``Default_Bit_Order`` in package ``System``.
  
  Attribute Default_Scalar_Storage_Order
  ======================================
*************** Attribute Default_Scalar_Storage_Order
*** 209,227 ****
  
  .. index:: Default_Scalar_Storage_Order
  
! `Standard'Default_Scalar_Storage_Order` (`Standard` is the only
  permissible prefix), provides the current value of the default scalar storage
! order (as specified using pragma `Default_Scalar_Storage_Order`, or
! equal to `Default_Bit_Order` if unspecified) as a
! `System.Bit_Order` value. This is a static attribute.
  
  Attribute Deref
  ===============
  .. index:: Deref
  
! The attribute `typ'Deref(expr)` where `expr` is of type `System.Address` yields
! the variable of type `typ` that is located at the given address. It is similar
! to `(totyp (expr).all)`, where `totyp` is an unchecked conversion from address to
  a named access-to-`typ` type, except that it yields a variable, so it can be
  used on the left side of an assignment.
  
--- 209,227 ----
  
  .. index:: Default_Scalar_Storage_Order
  
! ``Standard'Default_Scalar_Storage_Order`` (``Standard`` is the only
  permissible prefix), provides the current value of the default scalar storage
! order (as specified using pragma ``Default_Scalar_Storage_Order``, or
! equal to ``Default_Bit_Order`` if unspecified) as a
! ``System.Bit_Order`` value. This is a static attribute.
  
  Attribute Deref
  ===============
  .. index:: Deref
  
! The attribute ``typ'Deref(expr)`` where ``expr`` is of type ``System.Address`` yields
! the variable of type ``typ`` that is located at the given address. It is similar
! to ``(totyp (expr).all)``, where ``totyp`` is an unchecked conversion from address to
  a named access-to-`typ` type, except that it yields a variable, so it can be
  used on the left side of an assignment.
  
*************** Attribute Descriptor_Size
*** 233,239 ****
  
  .. index:: Descriptor_Size
  
! Nonstatic attribute `Descriptor_Size` returns the size in bits of the
  descriptor allocated for a type.  The result is non-zero only for unconstrained
  array types and the returned value is of type universal integer.  In GNAT, an
  array descriptor contains bounds information and is located immediately before
--- 233,239 ----
  
  .. index:: Descriptor_Size
  
! Nonstatic attribute ``Descriptor_Size`` returns the size in bits of the
  descriptor allocated for a type.  The result is non-zero only for unconstrained
  array types and the returned value is of type universal integer.  In GNAT, an
  array descriptor contains bounds information and is located immediately before
*************** the first element of the array.
*** 247,260 ****
  
  The attribute takes into account any additional padding due to type alignment.
  In the example above, the descriptor contains two values of type
! `Positive` representing the low and high bound.  Since `Positive` has
! a size of 31 bits and an alignment of 4, the descriptor size is `2 * Positive'Size + 2` or 64 bits.
  
  Attribute Elaborated
  ====================
  .. index:: Elaborated
  
! The prefix of the `'Elaborated` attribute must be a unit name.  The
  value is a Boolean which indicates whether or not the given unit has been
  elaborated.  This attribute is primarily intended for internal use by the
  generated code for dynamic elaboration checking, but it can also be used
--- 247,260 ----
  
  The attribute takes into account any additional padding due to type alignment.
  In the example above, the descriptor contains two values of type
! ``Positive`` representing the low and high bound.  Since ``Positive`` has
! a size of 31 bits and an alignment of 4, the descriptor size is ``2 * Positive'Size + 2`` or 64 bits.
  
  Attribute Elaborated
  ====================
  .. index:: Elaborated
  
! The prefix of the ``'Elaborated`` attribute must be a unit name.  The
  value is a Boolean which indicates whether or not the given unit has been
  elaborated.  This attribute is primarily intended for internal use by the
  generated code for dynamic elaboration checking, but it can also be used
*************** Attribute Emax
*** 305,311 ****
  
  .. index:: Emax
  
! The `Emax` attribute is provided for compatibility with Ada 83.  See
  the Ada 83 reference manual for an exact description of the semantics of
  this attribute.
  
--- 305,311 ----
  
  .. index:: Emax
  
! The ``Emax`` attribute is provided for compatibility with Ada 83.  See
  the Ada 83 reference manual for an exact description of the semantics of
  this attribute.
  
*************** Attribute Enabled
*** 313,333 ****
  =================
  .. index:: Enabled
  
! The `Enabled` attribute allows an application program to check at compile
  time to see if the designated check is currently enabled. The prefix is a
  simple identifier, referencing any predefined check name (other than
! `All_Checks`) or a check name introduced by pragma Check_Name. If
  no argument is given for the attribute, the check is for the general state
  of the check, if an argument is given, then it is an entity name, and the
! check indicates whether an `Suppress` or `Unsuppress` has been
  given naming the entity (if not, then the argument is ignored).
  
  Note that instantiations inherit the check status at the point of the
  instantiation, so a useful idiom is to have a library package that
! introduces a check name with `pragma Check_Name`, and then contains
! generic packages or subprograms which use the `Enabled` attribute
  to see if the check is enabled. A user of this package can then issue
! a `pragma Suppress` or `pragma Unsuppress` before instantiating
  the package or subprogram, controlling whether the check will be present.
  
  Attribute Enum_Rep
--- 313,333 ----
  =================
  .. index:: Enabled
  
! The ``Enabled`` attribute allows an application program to check at compile
  time to see if the designated check is currently enabled. The prefix is a
  simple identifier, referencing any predefined check name (other than
! ``All_Checks``) or a check name introduced by pragma Check_Name. If
  no argument is given for the attribute, the check is for the general state
  of the check, if an argument is given, then it is an entity name, and the
! check indicates whether an ``Suppress`` or ``Unsuppress`` has been
  given naming the entity (if not, then the argument is ignored).
  
  Note that instantiations inherit the check status at the point of the
  instantiation, so a useful idiom is to have a library package that
! introduces a check name with ``pragma Check_Name``, and then contains
! generic packages or subprograms which use the ``Enabled`` attribute
  to see if the check is enabled. A user of this package can then issue
! a ``pragma Suppress`` or ``pragma Unsuppress`` before instantiating
  the package or subprogram, controlling whether the check will be present.
  
  Attribute Enum_Rep
*************** Attribute Enum_Rep
*** 336,342 ****
  
  .. index:: Enum_Rep
  
! For every enumeration subtype `S`, ``S'Enum_Rep`` denotes a
  function with the following spec:
  
  .. code-block:: ada
--- 336,342 ----
  
  .. index:: Enum_Rep
  
! For every enumeration subtype ``S``, ``S'Enum_Rep`` denotes a
  function with the following spec:
  
  .. code-block:: ada
*************** function with the following spec:
*** 344,369 ****
    function S'Enum_Rep (Arg : S'Base) return <Universal_Integer>;
  
  
! It is also allowable to apply `Enum_Rep` directly to an object of an
  enumeration type or to a non-overloaded enumeration
  literal.  In this case ``S'Enum_Rep`` is equivalent to
! ``typ'Enum_Rep(S)`` where `typ` is the type of the
  enumeration literal or object.
  
  The function returns the representation value for the given enumeration
! value.  This will be equal to value of the `Pos` attribute in the
  absence of an enumeration representation clause.  This is a static
  attribute (i.e.,:the result is static if the argument is static).
  
  ``S'Enum_Rep`` can also be used with integer types and objects,
  in which case it simply returns the integer value.  The reason for this
! is to allow it to be used for `(<>)` discrete formal arguments in
  a generic unit that can be instantiated with either enumeration types
! or integer types.  Note that if `Enum_Rep` is used on a modular
  type whose upper bound exceeds the upper bound of the largest signed
  integer type, and the argument is a variable, so that the universal
! integer calculation is done at run time, then the call to `Enum_Rep`
! may raise `Constraint_Error`.
  
  Attribute Enum_Val
  ==================
--- 344,369 ----
    function S'Enum_Rep (Arg : S'Base) return <Universal_Integer>;
  
  
! It is also allowable to apply ``Enum_Rep`` directly to an object of an
  enumeration type or to a non-overloaded enumeration
  literal.  In this case ``S'Enum_Rep`` is equivalent to
! ``typ'Enum_Rep(S)`` where ``typ`` is the type of the
  enumeration literal or object.
  
  The function returns the representation value for the given enumeration
! value.  This will be equal to value of the ``Pos`` attribute in the
  absence of an enumeration representation clause.  This is a static
  attribute (i.e.,:the result is static if the argument is static).
  
  ``S'Enum_Rep`` can also be used with integer types and objects,
  in which case it simply returns the integer value.  The reason for this
! is to allow it to be used for ``(<>)`` discrete formal arguments in
  a generic unit that can be instantiated with either enumeration types
! or integer types.  Note that if ``Enum_Rep`` is used on a modular
  type whose upper bound exceeds the upper bound of the largest signed
  integer type, and the argument is a variable, so that the universal
! integer calculation is done at run time, then the call to ``Enum_Rep``
! may raise ``Constraint_Error``.
  
  Attribute Enum_Val
  ==================
*************** Attribute Enum_Val
*** 371,377 ****
  
  .. index:: Enum_Val
  
! For every enumeration subtype `S`, ``S'Enum_Val`` denotes a
  function with the following spec:
  
  .. code-block:: ada
--- 371,377 ----
  
  .. index:: Enum_Val
  
! For every enumeration subtype ``S``, ``S'Enum_Val`` denotes a
  function with the following spec:
  
  .. code-block:: ada
*************** function with the following spec:
*** 382,388 ****
  The function returns the enumeration value whose representation matches the
  argument, or raises Constraint_Error if no enumeration literal of the type
  has the matching value.
! This will be equal to value of the `Val` attribute in the
  absence of an enumeration representation clause.  This is a static
  attribute (i.e., the result is static if the argument is static).
  
--- 382,388 ----
  The function returns the enumeration value whose representation matches the
  argument, or raises Constraint_Error if no enumeration literal of the type
  has the matching value.
! This will be equal to value of the ``Val`` attribute in the
  absence of an enumeration representation clause.  This is a static
  attribute (i.e., the result is static if the argument is static).
  
*************** Attribute Epsilon
*** 392,398 ****
  
  .. index:: Epsilon
  
! The `Epsilon` attribute is provided for compatibility with Ada 83.  See
  the Ada 83 reference manual for an exact description of the semantics of
  this attribute.
  
--- 392,398 ----
  
  .. index:: Epsilon
  
! The ``Epsilon`` attribute is provided for compatibility with Ada 83.  See
  the Ada 83 reference manual for an exact description of the semantics of
  this attribute.
  
*************** Attribute Fast_Math
*** 400,419 ****
  ===================
  .. index:: Fast_Math
  
! `Standard'Fast_Math` (`Standard` is the only allowed
  prefix) yields a static Boolean value that is True if pragma
! `Fast_Math` is active, and False otherwise.
  
  Attribute Finalization_Size
  ===========================
  .. index:: Finalization_Size
  
! The prefix of attribute `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`.
  
! `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 with no controlled parts.
  
--- 400,419 ----
  ===================
  .. index:: Fast_Math
  
! ``Standard'Fast_Math`` (``Standard`` is the only allowed
  prefix) yields a static Boolean value that is True if pragma
! ``Fast_Math`` is active, and False otherwise.
  
  Attribute Finalization_Size
  ===========================
  .. index:: Finalization_Size
  
! The prefix of attribute ``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*.
  
! ``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 with no controlled parts.
  
*************** Attribute Fixed_Value
*** 423,442 ****
  =====================
  .. index:: Fixed_Value
  
! For every fixed-point type `S`, ``S'Fixed_Value`` denotes a
  function with the following specification:
  
  .. code-block:: ada
  
    function S'Fixed_Value (Arg : <Universal_Integer>) return S;
  
! The value returned is the fixed-point value `V` such that::
  
    V = Arg * S'Small
  
  
  The effect is thus similar to first converting the argument to the
! integer type used to represent `S`, and then doing an unchecked
  conversion to the fixed-point type.  The difference is
  that there are full range checks, to ensure that the result is in range.
  This attribute is primarily intended for use in implementation of the
--- 423,442 ----
  =====================
  .. index:: Fixed_Value
  
! For every fixed-point type ``S``, ``S'Fixed_Value`` denotes a
  function with the following specification:
  
  .. code-block:: ada
  
    function S'Fixed_Value (Arg : <Universal_Integer>) return S;
  
! The value returned is the fixed-point value ``V`` such that::
  
    V = Arg * S'Small
  
  
  The effect is thus similar to first converting the argument to the
! integer type used to represent ``S``, and then doing an unchecked
  conversion to the fixed-point type.  The difference is
  that there are full range checks, to ensure that the result is in range.
  This attribute is primarily intended for use in implementation of the
*************** Attribute Has_Access_Values
*** 455,461 ****
  
  .. index:: Has_Access_Values
  
! The prefix of the `Has_Access_Values` attribute is a type.  The result
  is a Boolean value which is True if the is an access type, or is a composite
  type with a component (at any nesting depth) that is an access type, and is
  False otherwise.
--- 455,461 ----
  
  .. index:: Has_Access_Values
  
! The prefix of the ``Has_Access_Values`` attribute is a type.  The result
  is a Boolean value which is True if the is an access type, or is a composite
  type with a component (at any nesting depth) that is an access type, and is
  False otherwise.
*************** Attribute Has_Discriminants
*** 469,475 ****
  
  .. index:: Has_Discriminants
  
! The prefix of the `Has_Discriminants` attribute is a type.  The result
  is a Boolean value which is True if the type has discriminants, and False
  otherwise.  The intended use of this attribute is in conjunction with generic
  definitions.  If the attribute is applied to a generic private type, it
--- 469,475 ----
  
  .. index:: Has_Discriminants
  
! The prefix of the ``Has_Discriminants`` attribute is a type.  The result
  is a Boolean value which is True if the type has discriminants, and False
  otherwise.  The intended use of this attribute is in conjunction with generic
  definitions.  If the attribute is applied to a generic private type, it
*************** Attribute Img
*** 479,487 ****
  =============
  .. index:: Img
  
! The `Img` attribute differs from `Image` in that it is applied
  directly to an object, and yields the same result as
! `Image` for the subtype of the object.  This is convenient for
  debugging:
  
  .. code-block:: ada
--- 479,487 ----
  =============
  .. index:: Img
  
! The ``Img`` attribute differs from ``Image`` in that it is applied
  directly to an object, and yields the same result as
! ``Image`` for the subtype of the object.  This is convenient for
  debugging:
  
  .. code-block:: ada
*************** has the same meaning as the more verbose
*** 495,525 ****
  
    Put_Line ("X = " & T'Image (X));
  
! where `T` is the (sub)type of the object `X`.
  
! Note that technically, in analogy to `Image`,
! `X'Img` returns a parameterless function
  that returns the appropriate string when called. This means that
! `X'Img` can be renamed as a function-returning-string, or used
  in an instantiation as a function parameter.
  
  Attribute Integer_Value
  =======================
  .. index:: Integer_Value
  
! For every integer type `S`, ``S'Integer_Value`` denotes a
  function with the following spec:
  
  .. code-block:: ada
  
    function S'Integer_Value (Arg : <Universal_Fixed>) return S;
  
! The value returned is the integer value `V`, such that::
  
    Arg = V * T'Small
  
  
! where `T` is the type of `Arg`.
  The effect is thus similar to first doing an unchecked conversion from
  the fixed-point type to its corresponding implementation type, and then
  converting the result to the target integer type.  The difference is
--- 495,525 ----
  
    Put_Line ("X = " & T'Image (X));
  
! where ``T`` is the (sub)type of the object ``X``.
  
! Note that technically, in analogy to ``Image``,
! ``X'Img`` returns a parameterless function
  that returns the appropriate string when called. This means that
! ``X'Img`` can be renamed as a function-returning-string, or used
  in an instantiation as a function parameter.
  
  Attribute Integer_Value
  =======================
  .. index:: Integer_Value
  
! For every integer type ``S``, ``S'Integer_Value`` denotes a
  function with the following spec:
  
  .. code-block:: ada
  
    function S'Integer_Value (Arg : <Universal_Fixed>) return S;
  
! The value returned is the integer value ``V``, such that::
  
    Arg = V * T'Small
  
  
! where ``T`` is the type of ``Arg``.
  The effect is thus similar to first doing an unchecked conversion from
  the fixed-point type to its corresponding implementation type, and then
  converting the result to the target integer type.  The difference is
*************** Attribute Large
*** 550,556 ****
  
  .. index:: Large
  
! The `Large` attribute is provided for compatibility with Ada 83.  See
  the Ada 83 reference manual for an exact description of the semantics of
  this attribute.
  
--- 550,556 ----
  
  .. index:: Large
  
! The ``Large`` attribute is provided for compatibility with Ada 83.  See
  the Ada 83 reference manual for an exact description of the semantics of
  this attribute.
  
*************** Attribute Library_Level
*** 558,564 ****
  =======================
  .. index:: Library_Level
  
! `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
--- 558,564 ----
  =======================
  .. index:: Library_Level
  
! ``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
*************** Attribute Lock_Free
*** 582,589 ****
  ===================
  .. 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
  ====================
--- 582,589 ----
  ===================
  .. 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
  ====================
*************** Syntax::
*** 594,613 ****
    X'Loop_Entry [(loop_name)]
  
  
! The `Loop_Entry` attribute is used to refer to the value that an
  expression had upon entry to a given loop in much the same way that the
! `Old` attribute in a subprogram postcondition can be used to refer
  to the value an expression had upon entry to the subprogram. The
  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
  entry. This copy is not performed if the loop is not entered, or if the
  corresponding pragmas are ignored or disabled.
  
--- 594,613 ----
    X'Loop_Entry [(loop_name)]
  
  
! The ``Loop_Entry`` attribute is used to refer to the value that an
  expression had upon entry to a given loop in much the same way that the
! ``Old`` attribute in a subprogram postcondition can be used to refer
  to the value an expression had upon entry to the subprogram. The
  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
  entry. This copy is not performed if the loop is not entered, or if the
  corresponding pragmas are ignored or disabled.
  
*************** Attribute Machine_Size
*** 615,621 ****
  ======================
  .. index:: Machine_Size
  
! This attribute is identical to the `Object_Size` attribute.  It is
  provided for compatibility with the DEC Ada 83 attribute of this name.
  
  Attribute Mantissa
--- 615,621 ----
  ======================
  .. index:: Machine_Size
  
! This attribute is identical to the ``Object_Size`` attribute.  It is
  provided for compatibility with the DEC Ada 83 attribute of this name.
  
  Attribute Mantissa
*************** Attribute Mantissa
*** 624,630 ****
  
  .. index:: Mantissa
  
! The `Mantissa` attribute is provided for compatibility with Ada 83.  See
  the Ada 83 reference manual for an exact description of the semantics of
  this attribute.
  
--- 624,630 ----
  
  .. index:: Mantissa
  
! The ``Mantissa`` attribute is provided for compatibility with Ada 83.  See
  the Ada 83 reference manual for an exact description of the semantics of
  this attribute.
  
*************** Attribute Maximum_Alignment
*** 636,642 ****
  
  .. index:: Maximum_Alignment
  
! `Standard'Maximum_Alignment` (`Standard` is the only
  permissible prefix) provides the maximum useful alignment value for the
  target.  This is a static value that can be used to specify the alignment
  for an object, guaranteeing that it is properly aligned in all
--- 636,642 ----
  
  .. index:: Maximum_Alignment
  
! ``Standard'Maximum_Alignment`` (``Standard`` is the only
  permissible prefix) provides the maximum useful alignment value for the
  target.  This is a static value that can be used to specify the alignment
  for an object, guaranteeing that it is properly aligned in all
*************** Attribute Mechanism_Code
*** 650,660 ****
  
  .. index:: Mechanism_Code
  
! ``function'Mechanism_Code`` yields an integer code for the
! mechanism used for the result of function, and
! ``subprogram'Mechanism_Code (n)`` yields the mechanism
! used for formal parameter number `n` (a static integer value with 1
! meaning the first parameter) of `subprogram`.  The code returned is:
  
  
  
--- 650,660 ----
  
  .. index:: Mechanism_Code
  
! ``func'Mechanism_Code`` yields an integer code for the
! mechanism used for the result of function ``func``, and
! ``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 ``subprog``.  The code returned is:
  
  
  
*************** Attribute Null_Parameter
*** 671,677 ****
  .. index:: Null_Parameter
  
  A reference ``T'Null_Parameter`` denotes an imaginary object of
! type or subtype `T` allocated at machine address zero.  The attribute
  is allowed only as the default expression of a formal parameter, or as
  an actual expression of a subprogram call.  In either case, the
  subprogram must be imported.
--- 671,677 ----
  .. index:: Null_Parameter
  
  A reference ``T'Null_Parameter`` denotes an imaginary object of
! type or subtype ``T`` allocated at machine address zero.  The attribute
  is allowed only as the default expression of a formal parameter, or as
  an actual expression of a subprogram call.  In either case, the
  subprogram must be imported.
*************** default).
*** 682,688 ****
  
  This capability is needed to specify that a zero address should be
  passed for a record or other composite object passed by reference.
! There is no way of indicating this without the `Null_Parameter`
  attribute.
  
  .. _Attribute-Object_Size:
--- 682,688 ----
  
  This capability is needed to specify that a zero address should be
  passed for a record or other composite object passed by reference.
! There is no way of indicating this without the ``Null_Parameter``
  attribute.
  
  .. _Attribute-Object_Size:
*************** Attribute Object_Size
*** 696,703 ****
  The size of an object is not necessarily the same as the size of the type
  of an object.  This is because by default object sizes are increased to be
  a multiple of the alignment of the object.  For example,
! `Natural'Size` is
! 31, but by default objects of type `Natural` will have a size of 32 bits.
  Similarly, a record containing an integer and a character:
  
  .. code-block:: ada
--- 696,703 ----
  The size of an object is not necessarily the same as the size of the type
  of an object.  This is because by default object sizes are increased to be
  a multiple of the alignment of the object.  For example,
! ``Natural'Size`` is
! 31, but by default objects of type ``Natural`` will have a size of 32 bits.
  Similarly, a record containing an integer and a character:
  
  .. code-block:: ada
*************** Similarly, a record containing an intege
*** 708,714 ****
    end record;
  
  
! will have a size of 40 (that is `Rec'Size` will be 40).  The
  alignment will be 4, because of the
  integer field, and so the default size of record objects for this type
  will be 64 (8 bytes).
--- 708,714 ----
    end record;
  
  
! will have a size of 40 (that is ``Rec'Size`` will be 40).  The
  alignment will be 4, because of the
  integer field, and so the default size of record objects for this type
  will be 64 (8 bytes).
*************** an object size of 40 can be explicitly s
*** 720,726 ****
  A consequence of this capability is that different object sizes can be
  given to subtypes that would otherwise be considered in Ada to be
  statically matching.  But it makes no sense to consider such subtypes
! as statically matching.  Consequently, in `GNAT` we add a rule
  to the static matching rules that requires object sizes to match.
  Consider this example:
  
--- 720,726 ----
  A consequence of this capability is that different object sizes can be
  given to subtypes that would otherwise be considered in Ada to be
  statically matching.  But it makes no sense to consider such subtypes
! as statically matching.  Consequently, GNAT adds a rule
  to the static matching rules that requires object sizes to match.
  Consider this example:
  
*************** Consider this example:
*** 746,755 ****
  
  
  In the absence of lines 5 and 6,
! types `R1` and `R2` statically match and
  hence the conversion on line 12 is legal. But since lines 5 and 6
! cause the object sizes to differ, `GNAT` considers that types
! `R1` and `R2` are not statically matching, and line 12
  generates the diagnostic shown above.
  
  Similar additional checks are performed in other contexts requiring
--- 746,755 ----
  
  
  In the absence of lines 5 and 6,
! types ``R1`` and ``R2`` statically match and
  hence the conversion on line 12 is legal. But since lines 5 and 6
! cause the object sizes to differ, GNAT considers that types
! ``R1`` and ``R2`` are not statically matching, and line 12
  generates the diagnostic shown above.
  
  Similar additional checks are performed in other contexts requiring
*************** Attribute Old
*** 759,771 ****
  =============
  .. index:: Old
  
! In addition to the usage of `Old` defined in the Ada 2012 RM (usage
! within `Post` aspect), GNAT also permits the use of this attribute
! in implementation defined pragmas `Postcondition`,
! `Contract_Cases` and `Test_Case`. Also usages of
! `Old` which would be illegal according to the Ada 2012 RM
  definition are allowed under control of
! implementation defined pragma `Unevaluated_Use_Of_Old`.
  
  Attribute Passed_By_Reference
  =============================
--- 759,771 ----
  =============
  .. index:: Old
  
! In addition to the usage of ``Old`` defined in the Ada 2012 RM (usage
! within ``Post`` aspect), GNAT also permits the use of this attribute
! in implementation defined pragmas ``Postcondition``,
! ``Contract_Cases`` and ``Test_Case``. Also usages of
! ``Old`` which would be illegal according to the Ada 2012 RM
  definition are allowed under control of
! implementation defined pragma ``Unevaluated_Use_Of_Old``.
  
  Attribute Passed_By_Reference
  =============================
*************** Attribute Passed_By_Reference
*** 773,782 ****
  
  .. index:: Passed_By_Reference
  
! ``type'Passed_By_Reference`` for any subtype `type` returns
! a value of type `Boolean` value that is `True` if the type is
! normally passed by reference and `False` if the type is normally
! passed by copy in calls.  For scalar types, the result is always `False`
  and is static.  For non-scalar types, the result is nonstatic.
  
  Attribute Pool_Address
--- 773,782 ----
  
  .. index:: Passed_By_Reference
  
! ``typ'Passed_By_Reference`` for any subtype `typ` returns
! a value of type ``Boolean`` value that is ``True`` if the type is
! normally passed by reference and ``False`` if the type is normally
! passed by copy in calls.  For scalar types, the result is always ``False``
  and is static.  For non-scalar types, the result is nonstatic.
  
  Attribute Pool_Address
*************** Attribute Pool_Address
*** 785,791 ****
  
  .. index:: Pool_Address
  
! ``X'Pool_Address`` for any object `X` returns the address
  of X within its storage pool. This is the same as
  ``X'Address``, except that for an unconstrained array whose
  bounds are allocated just before the first component,
--- 785,791 ----
  
  .. index:: Pool_Address
  
! ``X'Pool_Address`` for any object ``X`` returns the address
  of X within its storage pool. This is the same as
  ``X'Address``, except that for an unconstrained array whose
  bounds are allocated just before the first component,
*************** Here, we are interpreting 'storage pool'
*** 797,814 ****
  ``wherever the object is allocated``, which could be a
  user-defined storage pool,
  the global heap, on the stack, or in a static memory area.
! For an object created by `new`, ``Ptr.all'Pool_Address`` is
! what is passed to `Allocate` and returned from `Deallocate`.
  
  Attribute Range_Length
  ======================
  .. index:: Range_Length
  
! ``type'Range_Length`` for any discrete type `type` yields
  the number of values represented by the subtype (zero for a null
! range).  The result is static for static subtypes.  `Range_Length`
  applied to the index subtype of a one dimensional array always gives the
! same result as `Length` applied to the array itself.
  
  Attribute Restriction_Set
  =========================
--- 797,814 ----
  ``wherever the object is allocated``, which could be a
  user-defined storage pool,
  the global heap, on the stack, or in a static memory area.
! For an object created by ``new``, ``Ptr.all'Pool_Address`` is
! what is passed to ``Allocate`` and returned from ``Deallocate``.
  
  Attribute Range_Length
  ======================
  .. index:: Range_Length
  
! ``typ'Range_Length`` for any discrete type `typ` yields
  the number of values represented by the subtype (zero for a null
! range).  The result is static for static subtypes.  ``Range_Length``
  applied to the index subtype of a one dimensional array always gives the
! same result as ``Length`` applied to the array itself.
  
  Attribute Restriction_Set
  =========================
*************** There are two forms:
*** 832,838 ****
  In the case of the first form, the only restriction names
  allowed are parameterless restrictions that are checked
  for consistency at bind time. For a complete list see the
! subtype `System.Rident.Partition_Boolean_Restrictions`.
  
  The result returned is True if the restriction is known to
  be in effect, and False if the restriction is known not to
--- 832,838 ----
  In the case of the first form, the only restriction names
  allowed are parameterless restrictions that are checked
  for consistency at bind time. For a complete list see the
! subtype ``System.Rident.Partition_Boolean_Restrictions``.
  
  The result returned is True if the restriction is known to
  be in effect, and False if the restriction is known not to
*************** Attribute Safe_Emax
*** 894,900 ****
  
  .. index:: Safe_Emax
  
! The `Safe_Emax` attribute is provided for compatibility with Ada 83.  See
  the Ada 83 reference manual for an exact description of the semantics of
  this attribute.
  
--- 894,900 ----
  
  .. index:: Safe_Emax
  
! The ``Safe_Emax`` attribute is provided for compatibility with Ada 83.  See
  the Ada 83 reference manual for an exact description of the semantics of
  this attribute.
  
*************** Attribute Safe_Large
*** 904,910 ****
  
  .. index:: Safe_Large
  
! The `Safe_Large` attribute is provided for compatibility with Ada 83.  See
  the Ada 83 reference manual for an exact description of the semantics of
  this attribute.
  
--- 904,910 ----
  
  .. index:: Safe_Large
  
! The ``Safe_Large`` attribute is provided for compatibility with Ada 83.  See
  the Ada 83 reference manual for an exact description of the semantics of
  this attribute.
  
*************** Attribute Safe_Small
*** 914,920 ****
  
  .. index:: Safe_Small
  
! The `Safe_Small` attribute is provided for compatibility with Ada 83.  See
  the Ada 83 reference manual for an exact description of the semantics of
  this attribute.
  
--- 914,920 ----
  
  .. index:: Safe_Small
  
! The ``Safe_Small`` attribute is provided for compatibility with Ada 83.  See
  the Ada 83 reference manual for an exact description of the semantics of
  this attribute.
  
*************** Attribute Scalar_Storage_Order
*** 928,935 ****
  
  .. index:: Scalar_Storage_Order
  
! For every array or record type `S`, the representation attribute
! `Scalar_Storage_Order` denotes the order in which storage elements
  that make up scalar components are ordered within S. The value given must
  be a static expression of type System.Bit_Order. The following is an example
  of the use of this feature:
--- 928,935 ----
  
  .. index:: Scalar_Storage_Order
  
! For every array or record type ``S``, the representation attribute
! ``Scalar_Storage_Order`` denotes the order in which storage elements
  that make up scalar components are ordered within S. The value given must
  be a static expression of type System.Bit_Order. The following is an example
  of the use of this feature:
*************** of the use of this feature:
*** 967,979 ****
       --  the former is used.
  
  
! Other properties are as for standard representation attribute `Bit_Order`,
! as defined by Ada RM 13.5.3(4). The default is `System.Default_Bit_Order`.
  
! For a record type `T`, if ``T'Scalar_Storage_Order`` is
  specified explicitly, it shall be equal to ``T'Bit_Order``. Note:
! this means that if a `Scalar_Storage_Order` attribute definition
! clause is not confirming, then the type's `Bit_Order` shall be
  specified explicitly and set to the same value.
  
  Derived types inherit an explicitly set scalar storage order from their parent
--- 967,979 ----
       --  the former is used.
  
  
! Other properties are as for standard representation attribute ``Bit_Order``,
! as defined by Ada RM 13.5.3(4). The default is ``System.Default_Bit_Order``.
  
! For a record type ``T``, if ``T'Scalar_Storage_Order`` is
  specified explicitly, it shall be equal to ``T'Bit_Order``. Note:
! this means that if a ``Scalar_Storage_Order`` attribute definition
! clause is not confirming, then the type's ``Bit_Order`` shall be
  specified explicitly and set to the same value.
  
  Derived types inherit an explicitly set scalar storage order from their parent
*************** types. This may be overridden for the de
*** 981,998 ****
  storage order for the derived type. For a record extension, the derived type
  must have the same scalar storage order as the parent type.
  
! A component of a record or array type that is a bit-packed array, or that
! does not start on a byte boundary, must have the same scalar storage order
! as the enclosing record or array type.
  
! No component of a type that has an explicit `Scalar_Storage_Order`
  attribute definition may be aliased.
  
! A confirming `Scalar_Storage_Order` attribute definition clause (i.e.
! with a value equal to `System.Default_Bit_Order`) has no effect.
  
  If the opposite storage order is specified, then whenever the value of
! a scalar component of an object of type `S` is read, the storage
  elements of the enclosing machine scalar are first reversed (before
  retrieving the component value, possibly applying some shift and mask
  operatings on the enclosing machine scalar), and the opposite operation
--- 981,999 ----
  storage order for the derived type. For a record extension, the derived type
  must have the same scalar storage order as the parent type.
  
! A component of a record type that is itself a record or an array and that does
! not start and end on a byte boundary must have have the same scalar storage
! order as the record type. A component of a bit-packed array type that is itself
! a record or an array must have the same scalar storage order as the array type.
  
! No component of a type that has an explicit ``Scalar_Storage_Order``
  attribute definition may be aliased.
  
! A confirming ``Scalar_Storage_Order`` attribute definition clause (i.e.
! with a value equal to ``System.Default_Bit_Order``) has no effect.
  
  If the opposite storage order is specified, then whenever the value of
! a scalar component of an object of type ``S`` is read, the storage
  elements of the enclosing machine scalar are first reversed (before
  retrieving the component value, possibly applying some shift and mask
  operatings on the enclosing machine scalar), and the opposite operation
*************** In that case, the restrictions set forth
*** 1002,1024 ****
  are relaxed. Instead, the following rules apply:
  
  * the underlying storage elements are those at positions
!   `(position + first_bit / storage_element_size) ..         (position + (last_bit + storage_element_size - 1) /                     storage_element_size)`
  * the sequence of underlying storage elements shall have
    a size no greater than the largest machine scalar
  * 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.
  
  If no scalar storage order is specified for a type (either directly, or by
  inheritance in the case of a derived type), then the default is normally
  the native ordering of the target, but this default can be overridden using
! pragma `Default_Scalar_Storage_Order`.
  
! Note that if a component of `T` is itself of a record or array type,
! the specfied `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.
  
--- 1003,1025 ----
  are relaxed. Instead, the following rules apply:
  
  * the underlying storage elements are those at positions
!   ``(position + first_bit / storage_element_size) .. (position + (last_bit + storage_element_size - 1) / storage_element_size)``
  * the sequence of underlying storage elements shall have
    a size no greater than the largest machine scalar
  * 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.
  
  If no scalar storage order is specified for a type (either directly, or by
  inheritance in the case of a derived type), then the default is normally
  the native ordering of the target, but this default can be overridden using
! pragma ``Default_Scalar_Storage_Order``.
  
! Note that if a component of ``T`` is itself of a record or array type,
! the specfied ``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.
  
*************** Attribute Simple_Storage_Pool
*** 1036,1043 ****
  
  .. index:: Simple_Storage_Pool
  
! For every nonformal, nonderived access-to-object type `Acc`, the
! representation attribute `Simple_Storage_Pool` may be specified
  via an attribute_definition_clause (or by specifying the equivalent aspect):
  
  .. code-block:: ada
--- 1037,1044 ----
  
  .. index:: Simple_Storage_Pool
  
! For every nonformal, nonderived access-to-object type ``Acc``, the
! representation attribute ``Simple_Storage_Pool`` may be specified
  via an attribute_definition_clause (or by specifying the equivalent aspect):
  
  .. code-block:: ada
*************** via an attribute_definition_clause (or b
*** 1051,1057 ****
  
  
  The name given in an attribute_definition_clause for the
! `Simple_Storage_Pool` attribute shall denote a variable of
  a 'simple storage pool type' (see pragma `Simple_Storage_Pool_Type`).
  
  The use of this attribute is only allowed for a prefix denoting a type
--- 1052,1058 ----
  
  
  The name given in an attribute_definition_clause for the
! ``Simple_Storage_Pool`` attribute shall denote a variable of
  a 'simple storage pool type' (see pragma `Simple_Storage_Pool_Type`).
  
  The use of this attribute is only allowed for a prefix denoting a type
*************** for which it has been specified. The typ
*** 1059,1093 ****
  of the variable specified as the simple storage pool of the access type,
  and the attribute denotes that variable.
  
! It is illegal to specify both `Storage_Pool` and `Simple_Storage_Pool`
  for the same access type.
  
! If the `Simple_Storage_Pool` attribute has been specified for an access
! type, then applying the `Storage_Pool` attribute to the type is flagged
! with a warning and its evaluation raises the exception `Program_Error`.
  
  If the Simple_Storage_Pool attribute has been specified for an access
! type `S`, then the evaluation of the attribute ``S'Storage_Size``
  returns the result of calling ``Storage_Size (S'Simple_Storage_Pool)``,
  which is intended to indicate the number of storage elements reserved for
  the simple storage pool. If the Storage_Size function has not been defined
  for the simple storage pool type, then this attribute returns zero.
  
! If an access type `S` has a specified simple storage pool of type
! `SSP`, then the evaluation of an allocator for that access type calls
! the primitive `Allocate` procedure for type `SSP`, passing
  ``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 :title:`Ada Reference Manual`, with the term
! `simple storage pool` substituted for `storage pool`.
  
! If an access type `S` has a specified simple storage pool of type
! `SSP`, then a call to an instance of the `Ada.Unchecked_Deallocation`
! for that access type invokes the primitive `Deallocate` procedure
! for type `SSP`, passing ``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'.
  
  Attribute Small
  ===============
--- 1060,1094 ----
  of the variable specified as the simple storage pool of the access type,
  and the attribute denotes that variable.
  
! It is illegal to specify both ``Storage_Pool`` and ``Simple_Storage_Pool``
  for the same access type.
  
! If the ``Simple_Storage_Pool`` attribute has been specified for an access
! type, then applying the ``Storage_Pool`` attribute to the type is flagged
! with a warning and its evaluation raises the exception ``Program_Error``.
  
  If the Simple_Storage_Pool attribute has been specified for an access
! type ``S``, then the evaluation of the attribute ``S'Storage_Size``
  returns the result of calling ``Storage_Size (S'Simple_Storage_Pool)``,
  which is intended to indicate the number of storage elements reserved for
  the simple storage pool. If the Storage_Size function has not been defined
  for the simple storage pool type, then this attribute returns zero.
  
! If an access type ``S`` has a specified simple storage pool of type
! ``SSP``, then the evaluation of an allocator for that access type calls
! the primitive ``Allocate`` procedure for type ``SSP``, passing
  ``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 :title:`Ada Reference Manual`, with the term
! *simple storage pool* substituted for *storage pool*.
  
! If an access type ``S`` has a specified simple storage pool of type
! ``SSP``, then a call to an instance of the ``Ada.Unchecked_Deallocation``
! for that access type invokes the primitive ``Deallocate`` procedure
! for type ``SSP``, passing ``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*.
  
  Attribute Small
  ===============
*************** Attribute Small
*** 1095,1101 ****
  
  .. index:: Small
  
! The `Small` attribute is defined in Ada 95 (and Ada 2005) only for
  fixed-point types.
  GNAT also allows this attribute to be applied to floating-point types
  for compatibility with Ada 83.  See
--- 1096,1102 ----
  
  .. index:: Small
  
! The ``Small`` attribute is defined in Ada 95 (and Ada 2005) only for
  fixed-point types.
  GNAT also allows this attribute to be applied to floating-point types
  for compatibility with Ada 83.  See
*************** Attribute Storage_Unit
*** 1106,1113 ****
  ======================
  .. index:: Storage_Unit
  
! `Standard'Storage_Unit` (`Standard` is the only permissible
! prefix) provides the same value as `System.Storage_Unit`.
  
  Attribute Stub_Type
  ===================
--- 1107,1114 ----
  ======================
  .. index:: Storage_Unit
  
! ``Standard'Storage_Unit`` (``Standard`` is the only permissible
! prefix) provides the same value as ``System.Storage_Unit``.
  
  Attribute Stub_Type
  ===================
*************** call on any dispatching operation of suc
*** 1122,1133 ****
  remote call, if necessary, using the information in the stub object
  to locate the target partition, etc.
  
! For a prefix `T` that denotes a remote access-to-classwide type,
! `T'Stub_Type` denotes the type of the corresponding stub objects.
  
! By construction, the layout of `T'Stub_Type` is identical to that of
! type `RACW_Stub_Type` declared in the internal implementation-defined
! unit `System.Partition_Interface`. Use of this attribute will create
  an implicit dependency on this unit.
  
  Attribute System_Allocator_Alignment
--- 1123,1134 ----
  remote call, if necessary, using the information in the stub object
  to locate the target partition, etc.
  
! For a prefix ``T`` that denotes a remote access-to-classwide type,
! ``T'Stub_Type`` denotes the type of the corresponding stub objects.
  
! By construction, the layout of ``T'Stub_Type`` is identical to that of
! type ``RACW_Stub_Type`` declared in the internal implementation-defined
! unit ``System.Partition_Interface``. Use of this attribute will create
  an implicit dependency on this unit.
  
  Attribute System_Allocator_Alignment
*************** Attribute System_Allocator_Alignment
*** 1136,1142 ****
  
  .. index:: System_Allocator_Alignment
  
! `Standard'System_Allocator_Alignment` (`Standard` is the only
  permissible 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
--- 1137,1143 ----
  
  .. index:: System_Allocator_Alignment
  
! ``Standard'System_Allocator_Alignment`` (``Standard`` is the only
  permissible 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
*************** Attribute Target_Name
*** 1147,1153 ****
  =====================
  .. index:: Target_Name
  
! `Standard'Target_Name` (`Standard` is the only permissible
  prefix) provides a static string value that identifies the target
  for the current compilation. For GCC implementations, this is the
  standard gcc target name without the terminating slash (for
--- 1148,1154 ----
  =====================
  .. index:: Target_Name
  
! ``Standard'Target_Name`` (``Standard`` is the only permissible
  prefix) provides a static string value that identifies the target
  for the current compilation. For GCC implementations, this is the
  standard gcc target name without the terminating slash (for
*************** Attribute To_Address
*** 1157,1166 ****
  ====================
  .. index:: To_Address
  
! The `System'To_Address`
! (`System` is the only permissible prefix)
  denotes a function identical to
! `System.Storage_Elements.To_Address` except that
  it is a static attribute.  This means that if its argument is
  a static expression, then the result of the attribute is a
  static expression.  This means that such an expression can be
--- 1158,1167 ----
  ====================
  .. index:: To_Address
  
! The ``System'To_Address``
! (``System`` is the only permissible prefix)
  denotes a function identical to
! ``System.Storage_Elements.To_Address`` except that
  it is a static attribute.  This means that if its argument is
  a static expression, then the result of the attribute is a
  static expression.  This means that such an expression can be
*************** used in contexts (e.g., preelaborable pa
*** 1168,1174 ****
  static expression and where the function call could not be used
  (since the function call is always nonstatic, even if its
  argument is static). The argument must be in the range
! -(2**(m-1) .. 2**m-1, where m is the memory size
  (typically 32 or 64). Negative values are intepreted in a
  modular manner (e.g., -1 means the same as 16#FFFF_FFFF# on
  a 32 bits machine).
--- 1169,1175 ----
  static expression and where the function call could not be used
  (since the function call is always nonstatic, even if its
  argument is static). The argument must be in the range
! -(2**(m-1)) .. 2**m-1, where m is the memory size
  (typically 32 or 64). Negative values are intepreted in a
  modular manner (e.g., -1 means the same as 16#FFFF_FFFF# on
  a 32 bits machine).
*************** Attribute Type_Class
*** 1184,1192 ****
  ====================
  .. index:: Type_Class
  
! ``type'Type_Class`` for any type or subtype `type` yields
! the value of the type class for the full type of `type`.  If
! `type` is a generic formal type, the value is the value for the
  corresponding actual subtype.  The value of this attribute is of type
  ``System.Aux_DEC.Type_Class``, which has the following definition:
  
--- 1185,1193 ----
  ====================
  .. index:: Type_Class
  
! ``typ'Type_Class`` for any type or subtype `typ` yields
! the value of the type class for the full type of `typ`.  If
! `typ` is a generic formal type, the value is the value for the
  corresponding actual subtype.  The value of this attribute is of type
  ``System.Aux_DEC.Type_Class``, which has the following definition:
  
*************** corresponding actual subtype.  The value
*** 1204,1210 ****
       Type_Class_Address);
  
  
! Protected types yield the value `Type_Class_Task`, which thus
  applies to all concurrent types.  This attribute is designed to
  be compatible with the DEC Ada 83 attribute of the same name.
  
--- 1205,1211 ----
       Type_Class_Address);
  
  
! Protected types yield the value ``Type_Class_Task``, which thus
  applies to all concurrent types.  This attribute is designed to
  be compatible with the DEC Ada 83 attribute of the same name.
  
*************** Attribute Type_Key
*** 1212,1218 ****
  ==================
  .. index:: Type_Key
  
! The `Type_Key` attribute is applicable to a type or subtype and
  yields a value of type Standard.String containing encoded information
  about the type or subtype. This provides improved compatibility with
  other implementations that support this attribute.
--- 1213,1219 ----
  ==================
  .. index:: Type_Key
  
! The ``Type_Key`` attribute is applicable to a type or subtype and
  yields a value of type Standard.String containing encoded information
  about the type or subtype. This provides improved compatibility with
  other implementations that support this attribute.
*************** Attribute Unconstrained_Array
*** 1228,1237 ****
  =============================
  .. index:: Unconstrained_Array
  
! The `Unconstrained_Array` attribute can be used with a prefix that
  denotes any type or subtype. It is a static attribute that yields
! `True` if the prefix designates an unconstrained array,
! and `False` otherwise. In a generic instance, the result is
  still static, and yields the result of applying this test to the
  generic actual.
  
--- 1229,1238 ----
  =============================
  .. index:: Unconstrained_Array
  
! The ``Unconstrained_Array`` attribute can be used with a prefix that
  denotes any type or subtype. It is a static attribute that yields
! ``True`` if the prefix designates an unconstrained array,
! and ``False`` otherwise. In a generic instance, the result is
  still static, and yields the result of applying this test to the
  generic actual.
  
*************** Attribute Universal_Literal_String
*** 1241,1247 ****
  
  .. index:: Universal_Literal_String
  
! The prefix of `Universal_Literal_String` must be a named
  number.  The static result is the string consisting of the characters of
  the number as defined in the original source.  This allows the user
  program to access the actual text of named numbers without intermediate
--- 1242,1248 ----
  
  .. index:: Universal_Literal_String
  
! The prefix of ``Universal_Literal_String`` must be a named
  number.  The static result is the string consisting of the characters of
  the number as defined in the original source.  This allows the user
  program to access the actual text of named numbers without intermediate
*************** Attribute Unrestricted_Access
*** 1266,1283 ****
  
  .. index:: Unrestricted_Access
  
! The `Unrestricted_Access` attribute is similar to `Access`
  except that all accessibility and aliased view checks are omitted.  This
  is a user-beware attribute.
  
! For objects, it is similar to `Address`, for which it is a
  desirable replacement where the value desired is an access type.
  In other words, its effect is similar to first applying the
! `Address` attribute and then doing an unchecked conversion to a
  desired access type.
  
! For subprograms, `P'Unrestricted_Access` may be used where
! `P'Access` would be illegal, to construct a value of a
  less-nested named access type that designates a more-nested
  subprogram. This value may be used in indirect calls, so long as the
  more-nested subprogram still exists; once the subprogram containing it
--- 1267,1284 ----
  
  .. index:: Unrestricted_Access
  
! The ``Unrestricted_Access`` attribute is similar to ``Access``
  except that all accessibility and aliased view checks are omitted.  This
  is a user-beware attribute.
  
! For objects, it is similar to ``Address``, for which it is a
  desirable replacement where the value desired is an access type.
  In other words, its effect is similar to first applying the
! ``Address`` attribute and then doing an unchecked conversion to a
  desired access type.
  
! For subprograms, ``P'Unrestricted_Access`` may be used where
! ``P'Access`` would be illegal, to construct a value of a
  less-nested named access type that designates a more-nested
  subprogram. This value may be used in indirect calls, so long as the
  more-nested subprogram still exists; once the subprogram containing it
*************** When P1 is called from P2, the call via
*** 1314,1324 ****
  called after P2 returns, it would be an erroneous use of a dangling
  pointer.
  
! For objects, it is possible to use `Unrestricted_Access` for any
  type. However, if the result is of an access-to-unconstrained array
  subtype, then the resulting pointer has the same scope as the context
  of the attribute, and must not be returned to some enclosing scope.
! For instance, if a function uses `Unrestricted_Access` to create
  an access-to-unconstrained-array and returns that value to the caller,
  the result will involve dangling pointers. In addition, it is only
  valid to create pointers to unconstrained arrays using this attribute
--- 1315,1325 ----
  called after P2 returns, it would be an erroneous use of a dangling
  pointer.
  
! For objects, it is possible to use ``Unrestricted_Access`` for any
  type. However, if the result is of an access-to-unconstrained array
  subtype, then the resulting pointer has the same scope as the context
  of the attribute, and must not be returned to some enclosing scope.
! For instance, if a function uses ``Unrestricted_Access`` to create
  an access-to-unconstrained-array and returns that value to the caller,
  the result will involve dangling pointers. In addition, it is only
  valid to create pointers to unconstrained arrays using this attribute
*************** considered to be erroneous. Consider the
*** 1398,1414 ****
  A normal unconstrained array value
  or a constrained array object marked as aliased has the bounds in memory
  just before the array, so a thin pointer can retrieve both the data and
! the bounds.  But in this case, the non-aliased object `X` does not have the
! bounds before the string.  If the size clause for type `A`
  were not present, then the pointer
  would be a fat pointer, where one component is a pointer to the bounds,
  and all would be well.  But with the size clause present, the conversion from
  fat pointer to thin pointer in the call loses the bounds, and so this
! is erroneous, and the program likely raises a `Program_Error` exception.
  
  In general, it is advisable to completely
  avoid mixing the use of thin pointers and the use of
! `Unrestricted_Access` where the designated type is an
  unconstrained array.  The use of thin pointers should be restricted to
  cases of porting legacy code that implicitly assumes the size of pointers,
  and such code should not in any case be using this attribute.
--- 1399,1415 ----
  A normal unconstrained array value
  or a constrained array object marked as aliased has the bounds in memory
  just before the array, so a thin pointer can retrieve both the data and
! the bounds.  But in this case, the non-aliased object ``X`` does not have the
! bounds before the string.  If the size clause for type ``A``
  were not present, then the pointer
  would be a fat pointer, where one component is a pointer to the bounds,
  and all would be well.  But with the size clause present, the conversion from
  fat pointer to thin pointer in the call loses the bounds, and so this
! is erroneous, and the program likely raises a ``Program_Error`` exception.
  
  In general, it is advisable to completely
  avoid mixing the use of thin pointers and the use of
! ``Unrestricted_Access`` where the designated type is an
  unconstrained array.  The use of thin pointers should be restricted to
  cases of porting legacy code that implicitly assumes the size of pointers,
  and such code should not in any case be using this attribute.
*************** Here we attempt to modify the constant P
*** 1431,1438 ****
  or may not notice this attempt, and subsequent references to P may yield
  either the value 3 or the value 4 or the assignment may blow up if the
  compiler decides to put P in read-only memory. One particular case where
! `Unrestricted_Access` can be used in this way is to modify the
! value of an `IN` parameter:
  
  .. code-block:: ada
  
--- 1432,1439 ----
  or may not notice this attempt, and subsequent references to P may yield
  either the value 3 or the value 4 or the assignment may blow up if the
  compiler decides to put P in read-only memory. One particular case where
! ``Unrestricted_Access`` can be used in this way is to modify the
! value of an ``in`` parameter:
  
  .. code-block:: ada
  
*************** value of an `IN` parameter:
*** 1445,1458 ****
  
  
  In general this is a risky approach. It may appear to "work" but such uses of
! `Unrestricted_Access` are potentially non-portable, even from one version
! of `GNAT` to another, so are best avoided if possible.
  
  Attribute Update
  ================
  .. index:: Update
  
! The `Update` attribute creates a copy of an array or record value
  with one or more modified components. The syntax is::
  
    PREFIX'Update ( RECORD_COMPONENT_ASSOCIATION_LIST )
--- 1446,1459 ----
  
  
  In general this is a risky approach. It may appear to "work" but such uses of
! ``Unrestricted_Access`` are potentially non-portable, even from one version
! of GNAT to another, so are best avoided if possible.
  
  Attribute Update
  ================
  .. index:: Update
  
! The ``Update`` attribute creates a copy of an array or record value
  with one or more modified components. The syntax is::
  
    PREFIX'Update ( RECORD_COMPONENT_ASSOCIATION_LIST )
*************** with one or more modified components. Th
*** 1465,1473 ****
    INDEX_EXPRESSION_LIST                        ::= ( EXPRESSION {, EXPRESSION } )
  
  
! where `PREFIX` is the name of an array or record object, the
! association list in parentheses does not contain an `others`
! choice and the box symbol `<>` may not appear in any
  expression. The effect is to yield a copy of the array or record value
  which is unchanged apart from the components mentioned in the
  association list, which are changed to the indicated value. The
--- 1466,1474 ----
    INDEX_EXPRESSION_LIST                        ::= ( EXPRESSION {, EXPRESSION } )
  
  
! where ``PREFIX`` is the name of an array or record object, the
! association list in parentheses does not contain an ``others``
! choice and the box symbol ``<>`` may not appear in any
  expression. The effect is to yield a copy of the array or record value
  which is unchanged apart from the components mentioned in the
  association list, which are changed to the indicated value. The
*************** example:
*** 1482,1488 ****
    Avar2 : Arr := Avar1'Update (2 => 10, 3 .. 4 => 20);
  
  
! yields a value for `Avar2` of 1,10,20,20,5 with `Avar1`
  begin unmodified. Similarly:
  
  .. code-block:: ada
--- 1483,1489 ----
    Avar2 : Arr := Avar1'Update (2 => 10, 3 .. 4 => 20);
  
  
! yields a value for ``Avar2`` of 1,10,20,20,5 with ``Avar1``
  begin unmodified. Similarly:
  
  .. code-block:: ada
*************** begin unmodified. Similarly:
*** 1493,1500 ****
    Rvar2 : Rec := Rvar1'Update (B => 20);
  
  
! yields a value for `Rvar2` of (A => 1, B => 20, C => 3),
! with `Rvar1` being unmodifed.
  Note that the value of the attribute reference is computed
  completely before it is used. This means that if you write:
  
--- 1494,1501 ----
    Rvar2 : Rec := Rvar1'Update (B => 20);
  
  
! yields a value for ``Rvar2`` of (A => 1, B => 20, C => 3),
! with ``Rvar1`` being unmodifed.
  Note that the value of the attribute reference is computed
  completely before it is used. This means that if you write:
  
*************** completely before it is used. This means
*** 1503,1515 ****
    Avar1 := Avar1'Update (1 => 10, 2 => Function_Call);
  
  
! then the value of `Avar1` is not modified if `Function_Call`
  raises an exception, unlike the effect of a series of direct assignments
! to elements of `Avar1`. In general this requires that
  two extra complete copies of the object are required, which should be
  kept in mind when considering efficiency.
  
! The `Update` attribute cannot be applied to prefixes of a limited
  type, and cannot reference discriminants in the case of a record type.
  The accessibility level of an Update attribute result object is defined
  as for an aggregate.
--- 1504,1516 ----
    Avar1 := Avar1'Update (1 => 10, 2 => Function_Call);
  
  
! then the value of ``Avar1`` is not modified if ``Function_Call``
  raises an exception, unlike the effect of a series of direct assignments
! to elements of ``Avar1``. In general this requires that
  two extra complete copies of the object are required, which should be
  kept in mind when considering efficiency.
  
! The ``Update`` attribute cannot be applied to prefixes of a limited
  type, and cannot reference discriminants in the case of a record type.
  The accessibility level of an Update attribute result object is defined
  as for an aggregate.
*************** Attribute Valid_Scalars
*** 1533,1561 ****
  =======================
  .. index:: Valid_Scalars
  
! The `'Valid_Scalars` attribute is intended to make it easier to
  check the validity of scalar subcomponents of composite objects. It
! is defined for any prefix `X` that denotes an object.
  The value of this attribute is of the predefined type Boolean.
! `X'Valid_Scalars` yields True if and only if evaluation of
! `P'Valid` yields True for every scalar part P of X or if X has
  no scalar parts. It is not specified in what order the scalar parts
  are checked, nor whether any more are checked after any one of them
! is determined to be invalid. If the prefix `X` is of a class-wide
! type `T'Class` (where `T` is the associated specific type),
! or if the prefix `X` is of a specific tagged type `T`, then
! only the scalar parts of components of `T` are traversed; in other
! words, components of extensions of `T` are not traversed even if
! `T'Class (X)'Tag /= T'Tag` . The compiler will issue a warning if it can
  be determined at compile time that the prefix of the attribute has no
  scalar parts (e.g., if the prefix is of an access type, an interface type,
  an undiscriminated task type, or an undiscriminated protected type).
  
! For scalar types, `Valid_Scalars` is equivalent to `Valid`. The use
! of this attribute is not permitted for `Unchecked_Union` types for which
  in general it is not possible to determine the values of the discriminants.
  
! Note: `Valid_Scalars` can generate a lot of code, especially in the case
  of a large variant record. If the attribute is called in many places in the
  same program applied to objects of the same type, it can reduce program size
  to write a function with a single use of the attribute, and then call that
--- 1534,1562 ----
  =======================
  .. index:: Valid_Scalars
  
! The ``'Valid_Scalars`` attribute is intended to make it easier to
  check the validity of scalar subcomponents of composite objects. It
! is defined for any prefix ``X`` that denotes an object.
  The value of this attribute is of the predefined type Boolean.
! ``X'Valid_Scalars`` yields True if and only if evaluation of
! ``P'Valid`` yields True for every scalar part P of X or if X has
  no scalar parts. It is not specified in what order the scalar parts
  are checked, nor whether any more are checked after any one of them
! is determined to be invalid. If the prefix ``X`` is of a class-wide
! type ``T'Class`` (where ``T`` is the associated specific type),
! or if the prefix ``X`` is of a specific tagged type ``T``, then
! only the scalar parts of components of ``T`` are traversed; in other
! words, components of extensions of ``T`` are not traversed even if
! ``T'Class (X)'Tag /= T'Tag`` . The compiler will issue a warning if it can
  be determined at compile time that the prefix of the attribute has no
  scalar parts (e.g., if the prefix is of an access type, an interface type,
  an undiscriminated task type, or an undiscriminated protected type).
  
! For scalar types, ``Valid_Scalars`` is equivalent to ``Valid``. The use
! of this attribute is not permitted for ``Unchecked_Union`` types for which
  in general it is not possible to determine the values of the discriminants.
  
! Note: ``Valid_Scalars`` can generate a lot of code, especially in the case
  of a large variant record. If the attribute is called in many places in the
  same program applied to objects of the same type, it can reduce program size
  to write a function with a single use of the attribute, and then call that
*************** Attribute VADS_Size
*** 1567,1579 ****
  
  .. index:: VADS_Size
  
! The `'VADS_Size` attribute is intended to make it easier to port
! legacy code which relies on the semantics of `'Size` as implemented
  by the VADS Ada 83 compiler.  GNAT makes a best effort at duplicating the
! same semantic interpretation.  In particular, `'VADS_Size` applied
  to a predefined or other primitive type with no Size clause yields the
! Object_Size (for example, `Natural'Size` is 32 rather than 31 on
! typical machines).  In addition `'VADS_Size` applied to an object
  gives the result that would be obtained by applying the attribute to
  the corresponding type.
  
--- 1568,1580 ----
  
  .. index:: VADS_Size
  
! The ``'VADS_Size`` attribute is intended to make it easier to port
! legacy code which relies on the semantics of ``'Size`` as implemented
  by the VADS Ada 83 compiler.  GNAT makes a best effort at duplicating the
! same semantic interpretation.  In particular, ``'VADS_Size`` applied
  to a predefined or other primitive type with no Size clause yields the
! Object_Size (for example, ``Natural'Size`` is 32 rather than 31 on
! typical machines).  In addition ``'VADS_Size`` applied to an object
  gives the result that would be obtained by applying the attribute to
  the corresponding type.
  
*************** Attribute Value_Size
*** 1587,1608 ****
  
  ``type'Value_Size`` is the number of bits required to represent
  a value of the given subtype.  It is the same as ``type'Size``,
! but, unlike `Size`, may be set for non-first subtypes.
  
  Attribute Wchar_T_Size
  ======================
  .. index:: Wchar_T_Size
  
! `Standard'Wchar_T_Size` (`Standard` is the only permissible
! prefix) provides the size in bits of the C `wchar_t` type
  primarily for constructing the definition of this type in
! package `Interfaces.C`. The result is a static constant.
  
  Attribute Word_Size
  ===================
  .. index:: Word_Size
  
! `Standard'Word_Size` (`Standard` is the only permissible
! prefix) provides the value `System.Word_Size`. The result is
  a static constant.
  
--- 1588,1609 ----
  
  ``type'Value_Size`` is the number of bits required to represent
  a value of the given subtype.  It is the same as ``type'Size``,
! but, unlike ``Size``, may be set for non-first subtypes.
  
  Attribute Wchar_T_Size
  ======================
  .. index:: Wchar_T_Size
  
! ``Standard'Wchar_T_Size`` (``Standard`` is the only permissible
! prefix) provides the size in bits of the C ``wchar_t`` type
  primarily for constructing the definition of this type in
! package ``Interfaces.C``. The result is a static constant.
  
  Attribute Word_Size
  ===================
  .. index:: Word_Size
  
! ``Standard'Word_Size`` (``Standard`` is the only permissible
! prefix) provides the value ``System.Word_Size``. The result is
  a static constant.
  
diff -Nrcpad gcc-7.3.0/gcc/ada/doc/gnat_rm/implementation_defined_characteristics.rst gcc-8.1.0/gcc/ada/doc/gnat_rm/implementation_defined_characteristics.rst
*** gcc-7.3.0/gcc/ada/doc/gnat_rm/implementation_defined_characteristics.rst	Tue Oct 20 10:41:38 2015
--- gcc-8.1.0/gcc/ada/doc/gnat_rm/implementation_defined_characteristics.rst	Fri Sep  8 12:34:54 2017
*************** There are no variations from the standar
*** 45,51 ****
    "Which code_statements cause external
    interactions.  See 1.1.3(10)."
  
! Any `code_statement` can potentially cause external interactions.
  
  *
    "The coded representation for the text of an Ada
--- 45,51 ----
    "Which code_statements cause external
    interactions.  See 1.1.3(10)."
  
! Any *code_statement* can potentially cause external interactions.
  
  *
    "The coded representation for the text of an Ada
*************** length of a lexical element is the same
*** 80,95 ****
  See :ref:`Implementation_Defined_Pragmas`.
  
  *
!   "Effect of pragma `Optimize`.  See 2.8(27)."
  
! Pragma `Optimize`, if given with a `Time` or `Space`
  parameter, checks that the optimization flag is set, and aborts if it is
  not.
  
  *
    "The sequence of characters of the value returned by
    ``S'Image`` when some of the graphic characters of
!   ``S'Wide_Image`` are not defined in `Character`.  See
    3.5(37)."
  
  The sequence of characters is as defined by the wide character encoding
--- 80,95 ----
  See :ref:`Implementation_Defined_Pragmas`.
  
  *
!   "Effect of pragma ``Optimize``.  See 2.8(27)."
  
! Pragma ``Optimize``, if given with a ``Time`` or ``Space``
  parameter, checks that the optimization flag is set, and aborts if it is
  not.
  
  *
    "The sequence of characters of the value returned by
    ``S'Image`` when some of the graphic characters of
!   ``S'Wide_Image`` are not defined in ``Character``.  See
    3.5(37)."
  
  The sequence of characters is as defined by the wide character encoding
*************** further details.
*** 98,104 ****
  
  *
    "The predefined integer types declared in
!   `Standard`.  See 3.5.4(25)."
  
  ====================== =======================================
  Type                   Representation
--- 98,104 ----
  
  *
    "The predefined integer types declared in
!   ``Standard``.  See 3.5.4(25)."
  
  ====================== =======================================
  Type                   Representation
*************** The precision and range is as defined by
*** 132,138 ****
  
  *
    "The predefined floating point types declared in
!   `Standard`.  See 3.5.7(16)."
  
  ====================== ====================================================
  Type                   Representation
--- 132,138 ----
  
  *
    "The predefined floating point types declared in
!   ``Standard``.  See 3.5.7(16)."
  
  ====================== ====================================================
  Type                   Representation
*************** Type                   Representation
*** 146,159 ****
  *
    "The small of an ordinary fixed point type.  See 3.5.9(8)."
  
! `Fine_Delta` is 2**(-63)
  
  *
    "What combinations of small, range, and digits are
    supported for fixed point types.  See 3.5.9(10)."
  
  Any combinations are permitted that do not result in a small less than
! `Fine_Delta` and do not result in a mantissa larger than 63 bits.
  If the mantissa is larger than 53 bits on machines where Long_Long_Float
  is 64 bits (true of all architectures except ia32), then the output from
  Text_IO is accurate to only 53 bits, rather than the full mantissa.  This
--- 146,159 ----
  *
    "The small of an ordinary fixed point type.  See 3.5.9(8)."
  
! ``Fine_Delta`` is 2**(-63)
  
  *
    "What combinations of small, range, and digits are
    supported for fixed point types.  See 3.5.9(10)."
  
  Any combinations are permitted that do not result in a small less than
! ``Fine_Delta`` and do not result in a mantissa larger than 63 bits.
  If the mantissa is larger than 53 bits on machines where Long_Long_Float
  is 64 bits (true of all architectures except ia32), then the output from
  Text_IO is accurate to only 53 bits, rather than the full mantissa.  This
*************** is because floating-point conversions ar
*** 161,170 ****
  
  
  *
!   "The result of `Tags.Expanded_Name` for types declared
!   within an unnamed `block_statement`.  See 3.9(10)."
  
! Block numbers of the form `B`nnn``, where `nnn` is a
  decimal integer are allocated.
  
  *
--- 161,170 ----
  
  
  *
!   "The result of ``Tags.Expanded_Name`` for types declared
!   within an unnamed *block_statement*.  See 3.9(10)."
  
! Block numbers of the form :samp:`B{nnn}`, where *nnn* is a
  decimal integer are allocated.
  
  *
*************** There are no implementation-defined time
*** 181,213 ****
    "The time base associated with relative delays."
  
  See 9.6(20).  The time base used is that provided by the C library
! function `gettimeofday`.
  
  *
!   "The time base of the type `Calendar.Time`.  See
    9.6(23)."
  
  The time base used is that provided by the C library function
! `gettimeofday`.
  
  *
!   "The time zone used for package `Calendar`
    operations.  See 9.6(24)."
  
! The time zone used by package `Calendar` is the current system time zone
  setting for local time, as accessed by the C library function
! `localtime`.
  
  *
!   "Any limit on `delay_until_statements` of
!   `select_statements`.  See 9.6(29)."
  
  There are no such limits.
  
  *
    "Whether or not two non-overlapping parts of a composite
    object are independently addressable, in the case where packing, record
!   layout, or `Component_Size` is specified for the object.  See
    9.10(1)."
  
  Separate components are independently addressable if they do not share
--- 181,213 ----
    "The time base associated with relative delays."
  
  See 9.6(20).  The time base used is that provided by the C library
! function ``gettimeofday``.
  
  *
!   "The time base of the type ``Calendar.Time``.  See
    9.6(23)."
  
  The time base used is that provided by the C library function
! ``gettimeofday``.
  
  *
!   "The time zone used for package ``Calendar``
    operations.  See 9.6(24)."
  
! The time zone used by package ``Calendar`` is the current system time zone
  setting for local time, as accessed by the C library function
! ``localtime``.
  
  *
!   "Any limit on *delay_until_statements* of
!   *select_statements*.  See 9.6(29)."
  
  There are no such limits.
  
  *
    "Whether or not two non-overlapping parts of a composite
    object are independently addressable, in the case where packing, record
!   layout, or ``Component_Size`` is specified for the object.  See
    9.10(1)."
  
  Separate components are independently addressable if they do not share
*************** provides the binder options *-z* and *-n
*** 253,259 ****
  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 the `GNAT Make Program gnatmake` in the
  :title:`GNAT User's Guide`.
  
  *
--- 253,259 ----
  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
  :title:`GNAT User's Guide`.
  
  *
*************** The main program is designated by provid
*** 274,280 ****
  corresponding :file:`ALI` file as the input parameter to the binder.
  
  *
!   "The order of elaboration of `library_items`.  See
    10.2(18)."
  
  The first constraint on ordering is that it meets the requirements of
--- 274,280 ----
  corresponding :file:`ALI` file as the input parameter to the binder.
  
  *
!   "The order of elaboration of *library_items*.  See
    10.2(18)."
  
  The first constraint on ordering is that it meets the requirements of
*************** where a choice still remains.
*** 293,299 ****
  The main program has no parameters.  It may be a procedure, or a function
  returning an integer type.  In the latter case, the returned integer
  value is the return code of the program (overriding any value that
! may have been set by a call to `Ada.Command_Line.Set_Exit_Status`).
  
  *
    "The mechanisms for building and running partitions.  See
--- 293,299 ----
  The main program has no parameters.  It may be a procedure, or a function
  returning an integer type.  In the latter case, the returned integer
  value is the return code of the program (overriding any value that
! may have been set by a call to ``Ada.Command_Line.Set_Exit_Status``).
  
  *
    "The mechanisms for building and running partitions.  See
*************** provided by the operating system.  See t
*** 320,343 ****
  further details.
  
  *
!   "The information returned by `Exception_Message`.  See
    11.4.1(10)."
  
  Exception message returns the null string unless a specific message has
  been passed by the program.
  
  *
!   "The result of `Exceptions.Exception_Name` for types
!   declared within an unnamed `block_statement`.  See 11.4.1(12)."
  
! Blocks have implementation defined names of the form `B`nnn``
! where `nnn` is an integer.
  
  *
    "The information returned by
!   `Exception_Information`.  See 11.4.1(13)."
  
! `Exception_Information` returns a string in the following format::
  
    *Exception_Name:* nnnnn
    *Message:* mmmmm
--- 320,343 ----
  further details.
  
  *
!   "The information returned by ``Exception_Message``.  See
    11.4.1(10)."
  
  Exception message returns the null string unless a specific message has
  been passed by the program.
  
  *
!   "The result of ``Exceptions.Exception_Name`` for types
!   declared within an unnamed *block_statement*.  See 11.4.1(12)."
  
! Blocks have implementation defined names of the form :samp:`B{nnn}`
! where *nnn* is an integer.
  
  *
    "The information returned by
!   ``Exception_Information``.  See 11.4.1(13)."
  
! ``Exception_Information`` returns a string in the following format::
  
    *Exception_Name:* nnnnn
    *Message:* mmmmm
*************** where `nnn` is an integer.
*** 348,359 ****
  
  where
  
!   *  `nnnn` is the fully qualified name of the exception in all upper
       case letters. This line is always present.
  
!   *  `mmmm` is the message (this line present only if message is non-null)
  
!   *  `ppp` is the Process Id value as a decimal integer (this line is
       present only if the Process Id is nonzero). Currently we are
       not making use of this field.
  
--- 348,359 ----
  
  where
  
!   *  ``nnnn`` is the fully qualified name of the exception in all upper
       case letters. This line is always present.
  
!   *  ``mmmm`` is the message (this line present only if message is non-null)
  
!   *  ``ppp`` is the Process Id value as a decimal integer (this line is
       present only if the Process Id is nonzero). Currently we are
       not making use of this field.
  
*************** where
*** 364,370 ****
       the main executable. The values are given in C style format, with lower case
       letters for a-f, and only as many digits present as are necessary.
       The line terminator sequence at the end of each line, including
!      the last line is a single `LF` character (`16#0A#`).
  
  *
    "Implementation-defined check names.  See 11.5(27)."
--- 364,370 ----
       the main executable. The values are given in C style format, with lower case
       letters for a-f, and only as many digits present as are necessary.
       The line terminator sequence at the end of each line, including
!      the last line is a single ``LF`` character (``16#0A#``).
  
  *
    "Implementation-defined check names.  See 11.5(27)."
*************** The implementation defined check names i
*** 373,379 ****
  Atomic_Synchronization, Duplicated_Tag_Check, Container_Checks,
  Tampering_Check, Predicate_Check, and Validity_Check. In addition, a user
  program can add implementation-defined check names by means of the pragma
! Check_Name. See the description of pragma `Suppress` for full details.
  
  *
    "The interpretation of each aspect of representation.  See
--- 373,379 ----
  Atomic_Synchronization, Duplicated_Tag_Check, Container_Checks,
  Tampering_Check, Predicate_Check, and Validity_Check. In addition, a user
  program can add implementation-defined check names by means of the pragma
! Check_Name. See the description of pragma ``Suppress`` for full details.
  
  *
    "The interpretation of each aspect of representation.  See
*************** See separate section on data representat
*** 388,394 ****
  See separate section on data representations.
  
  *
!   "The meaning of `Size` for indefinite subtypes.  See
    13.3(48)."
  
  Size for an indefinite subtype is the maximum possible size, except that
--- 388,394 ----
  See separate section on data representations.
  
  *
!   "The meaning of ``Size`` for indefinite subtypes.  See
    13.3(48)."
  
  Size for an indefinite subtype is the maximum possible size, except that
*************** The only implementation defined componen
*** 416,430 ****
  which contains a pointer to the dispatching table.
  
  *
!   "If `Word_Size` = `Storage_Unit`, the default bit
    ordering.  See 13.5.3(5)."
  
! `Word_Size` (32) is not the same as `Storage_Unit` (8) for this
  implementation, so no non-default bit ordering is supported.  The default
  bit ordering corresponds to the natural endianness of the target architecture.
  
  *
!   "The contents of the visible part of package `System`
    and its language-defined children.  See 13.7(2)."
  
  See the definition of these packages in files :file:`system.ads` and
--- 416,430 ----
  which contains a pointer to the dispatching table.
  
  *
!   "If ``Word_Size`` = ``Storage_Unit``, the default bit
    ordering.  See 13.5.3(5)."
  
! ``Word_Size`` (32) is not the same as ``Storage_Unit`` (8) for this
  implementation, so no non-default bit ordering is supported.  The default
  bit ordering corresponds to the natural endianness of the target architecture.
  
  *
!   "The contents of the visible part of package ``System``
    and its language-defined children.  See 13.7(2)."
  
  See the definition of these packages in files :file:`system.ads` and
*************** System.
*** 438,445 ****
  
  *
    "The contents of the visible part of package
!   `System.Machine_Code`, and the meaning of
!   `code_statements`.  See 13.8(7)."
  
  See the definition and documentation in file :file:`s-maccod.ads`.
  
--- 438,445 ----
  
  *
    "The contents of the visible part of package
!   ``System.Machine_Code``, and the meaning of
!   *code_statements*.  See 13.8(7)."
  
  See the definition and documentation in file :file:`s-maccod.ads`.
  
*************** on the simple assignment of the invalid
*** 487,500 ****
  
  *
    "The manner of choosing a storage pool for an access type
!   when `Storage_Pool` is not specified for the type.  See 13.11(17)."
  
  There are 3 different standard pools used by the compiler when
! `Storage_Pool` is not specified depending whether the type is local
  to a subprogram or defined at the library level and whether
! `Storage_Size`is specified or not.  See documentation in the runtime
! library units `System.Pool_Global`, `System.Pool_Size` and
! `System.Pool_Local` in files :file:`s-poosiz.ads`,
  :file:`s-pooglo.ads` and :file:`s-pooloc.ads` for full details on the
  default pools used.
  
--- 487,500 ----
  
  *
    "The manner of choosing a storage pool for an access type
!   when ``Storage_Pool`` is not specified for the type.  See 13.11(17)."
  
  There are 3 different standard pools used by the compiler when
! ``Storage_Pool`` is not specified depending whether the type is local
  to a subprogram or defined at the library level and whether
! ``Storage_Size``is specified or not.  See documentation in the runtime
! library units ``System.Pool_Global``, ``System.Pool_Size`` and
! ``System.Pool_Local`` in files :file:`s-poosiz.ads`,
  :file:`s-pooglo.ads` and :file:`s-pooloc.ads` for full details on the
  default pools used.
  
*************** default pools used.
*** 503,515 ****
    names for the standard pool type(s).  See 13.11(17)."
  
  See documentation in the sources of the run time mentioned in the previous
! paragraph.  All these pools are accessible by means of `with`'ing
  these units.
  
  *
!   "The meaning of `Storage_Size`.  See 13.11(18)."
  
! `Storage_Size` is measured in storage units, and refers to the
  total space available for an access type collection, or to the primary
  stack space for a task.
  
--- 503,515 ----
    names for the standard pool type(s).  See 13.11(17)."
  
  See documentation in the sources of the run time mentioned in the previous
! paragraph.  All these pools are accessible by means of `with`\ ing
  these units.
  
  *
!   "The meaning of ``Storage_Size``.  See 13.11(18)."
  
! ``Storage_Size`` is measured in storage units, and refers to the
  total space available for an access type collection, or to the primary
  stack space for a task.
  
*************** for details on GNAT-defined aspects of s
*** 523,543 ****
  
  *
    "The set of restrictions allowed in a pragma
!   `Restrictions`.  See 13.12(7)."
  
  See :ref:`Standard_and_Implementation_Defined_Restrictions`.
  
  *
    "The consequences of violating limitations on
!   `Restrictions` pragmas.  See 13.12(9)."
  
  Restrictions that can be checked at compile time result in illegalities
  if violated.  Currently there are no other consequences of violating
  restrictions.
  
  *
!   "The representation used by the `Read` and
!   `Write` attributes of elementary types in terms of stream
    elements.  See 13.13.2(9)."
  
  The representation is the in-memory representation of the base type of
--- 523,543 ----
  
  *
    "The set of restrictions allowed in a pragma
!   ``Restrictions``.  See 13.12(7)."
  
  See :ref:`Standard_and_Implementation_Defined_Restrictions`.
  
  *
    "The consequences of violating limitations on
!   ``Restrictions`` pragmas.  See 13.12(9)."
  
  Restrictions that can be checked at compile time result in illegalities
  if violated.  Currently there are no other consequences of violating
  restrictions.
  
  *
!   "The representation used by the ``Read`` and
!   ``Write`` attributes of elementary types in terms of stream
    elements.  See 13.13.2(9)."
  
  The representation is the in-memory representation of the base type of
*************** the type, using the number of bits corre
*** 546,560 ****
  
  *
    "The names and characteristics of the numeric subtypes
!   declared in the visible part of package `Standard`.  See A.1(3)."
  
  See items describing the integer and floating-point types supported.
  
  *
!   "The string returned by `Character_Set_Version`.
    See A.3.5(3)."
  
! `Ada.Wide_Characters.Handling.Character_Set_Version` returns
  the string "Unicode 4.0", referring to version 4.0 of the
  Unicode specification.
  
--- 546,560 ----
  
  *
    "The names and characteristics of the numeric subtypes
!   declared in the visible part of package ``Standard``.  See A.1(3)."
  
  See items describing the integer and floating-point types supported.
  
  *
!   "The string returned by ``Character_Set_Version``.
    See A.3.5(3)."
  
! ``Ada.Wide_Characters.Handling.Character_Set_Version`` returns
  the string "Unicode 4.0", referring to version 4.0 of the
  Unicode specification.
  
*************** library.  Only fast math mode is impleme
*** 567,587 ****
  
  *
    "The sign of a zero result from some of the operators or
!   functions in `Numerics.Generic_Elementary_Functions`, when
!   `Float_Type'Signed_Zeros` is `True`.  See A.5.1(46)."
  
  The sign of zeroes follows the requirements of the IEEE 754 standard on
  floating-point.
  
  *
    "The value of
!   `Numerics.Float_Random.Max_Image_Width`.  See A.5.2(27)."
  
  Maximum image width is 6864, see library file :file:`s-rannum.ads`.
  
  *
    "The value of
!   `Numerics.Discrete_Random.Max_Image_Width`.  See A.5.2(27)."
  
  Maximum image width is 6864, see library file :file:`s-rannum.ads`.
  
--- 567,587 ----
  
  *
    "The sign of a zero result from some of the operators or
!   functions in ``Numerics.Generic_Elementary_Functions``, when
!   ``Float_Type'Signed_Zeros`` is ``True``.  See A.5.1(46)."
  
  The sign of zeroes follows the requirements of the IEEE 754 standard on
  floating-point.
  
  *
    "The value of
!   ``Numerics.Float_Random.Max_Image_Width``.  See A.5.2(27)."
  
  Maximum image width is 6864, see library file :file:`s-rannum.ads`.
  
  *
    "The value of
!   ``Numerics.Discrete_Random.Max_Image_Width``.  See A.5.2(27)."
  
  Maximum image width is 6864, see library file :file:`s-rannum.ads`.
  
*************** The minimum period between reset calls t
*** 610,622 ****
  random numbers is one microsecond.
  
  *
!   "The values of the `Model_Mantissa`,
!   `Model_Emin`, `Model_Epsilon`, `Model`,
!   `Safe_First`, and `Safe_Last` attributes, if the Numerics
    Annex is not supported.  See A.5.3(72)."
  
  Run the compiler with *-gnatS* to produce a listing of package
! `Standard`, has the values of all numeric attributes.
  
  *
    "Any implementation-defined characteristics of the
--- 610,622 ----
  random numbers is one microsecond.
  
  *
!   "The values of the ``Model_Mantissa``,
!   ``Model_Emin``, ``Model_Epsilon``, ``Model``,
!   ``Safe_First``, and ``Safe_Last`` attributes, if the Numerics
    Annex is not supported.  See A.5.3(72)."
  
  Run the compiler with *-gnatS* to produce a listing of package
! ``Standard``, has the values of all numeric attributes.
  
  *
    "Any implementation-defined characteristics of the
*************** There are no special implementation defi
*** 626,635 ****
  packages.
  
  *
!   "The value of `Buffer_Size` in `Storage_IO`.  See
    A.9(10)."
  
! All type representations are contiguous, and the `Buffer_Size` is
  the value of ``type'Size`` rounded up to the next storage unit
  boundary.
  
--- 626,635 ----
  packages.
  
  *
!   "The value of ``Buffer_Size`` in ``Storage_IO``.  See
    A.9(10)."
  
! All type representations are contiguous, and the ``Buffer_Size`` is
  the value of ``type'Size`` rounded up to the next storage unit
  boundary.
  
*************** These files are mapped onto the files pr
*** 641,647 ****
  libraries.  See source file :file:`i-cstrea.ads` for further details.
  
  *
!   "The accuracy of the value produced by `Put`.  See
    A.10.9(36)."
  
  If more digits are requested in the output than are represented by the
--- 641,647 ----
  libraries.  See source file :file:`i-cstrea.ads` for further details.
  
  *
!   "The accuracy of the value produced by ``Put``.  See
    A.10.9(36)."
  
  If more digits are requested in the output than are represented by the
*************** precision of the value, zeroes are outpu
*** 649,678 ****
  significant digit positions.
  
  *
!   "The meaning of `Argument_Count`, `Argument`, and
!   `Command_Name`.  See A.15(1)."
  
! These are mapped onto the `argv` and `argc` parameters of the
  main program in the natural manner.
  
  *
!   "The interpretation of the `Form` parameter in procedure
!   `Create_Directory`.  See A.16(56)."
  
! The `Form` parameter is not used.
  
  *
!   "The interpretation of the `Form` parameter in procedure
!   `Create_Path`.  See A.16(60)."
  
! The `Form` parameter is not used.
  
  *
!   "The interpretation of the `Form` parameter in procedure
!   `Copy_File`.  See A.16(68)."
  
! The `Form` parameter is case-insensitive.
! Two fields are recognized in the `Form` parameter::
  
    *preserve=<value>*
    *mode=<value>*
--- 649,678 ----
  significant digit positions.
  
  *
!   "The meaning of ``Argument_Count``, ``Argument``, and
!   ``Command_Name``.  See A.15(1)."
  
! These are mapped onto the ``argv`` and ``argc`` parameters of the
  main program in the natural manner.
  
  *
!   "The interpretation of the ``Form`` parameter in procedure
!   ``Create_Directory``.  See A.16(56)."
  
! The ``Form`` parameter is not used.
  
  *
!   "The interpretation of the ``Form`` parameter in procedure
!   ``Create_Path``.  See A.16(60)."
  
! The ``Form`` parameter is not used.
  
  *
!   "The interpretation of the ``Form`` parameter in procedure
!   ``Copy_File``.  See A.16(68)."
  
! The ``Form`` parameter is case-insensitive.
! Two fields are recognized in the ``Form`` parameter::
  
    *preserve=<value>*
    *mode=<value>*
*************** Examples of incorrect Forms::
*** 721,733 ****
    Form => "mode=internal, preserve=timestamps"
  
  *
!   "The interpretation of the `Pattern` parameter, when not the null string,
!   in the `Start_Search` and `Search` procedures.
    See A.16(104) and A.16(112)."
  
! When the `Pattern` parameter is not the null string, it is interpreted
  according to the syntax of regular expressions as defined in the
! `GNAT.Regexp` package.
  
  See :ref:`GNAT.Regexp_(g-regexp.ads)`.
  
--- 721,733 ----
    Form => "mode=internal, preserve=timestamps"
  
  *
!   "The interpretation of the ``Pattern`` parameter, when not the null string,
!   in the ``Start_Search`` and ``Search`` procedures.
    See A.16(104) and A.16(112)."
  
! When the ``Pattern`` parameter is not the null string, it is interpreted
  according to the syntax of regular expressions as defined in the
! ``GNAT.Regexp`` package.
  
  See :ref:`GNAT.Regexp_(g-regexp.ads)`.
  
*************** Convention Name         Interpretation
*** 757,763 ****
  *Default*               Treated the same as C
  *External*              Treated the same as C
  *Fortran*               Fortran
! *Intrinsic*             For support of pragma `Import` with convention Intrinsic, see
                          separate section on Intrinsic Subprograms.
  *Stdcall*               Stdcall (used for Windows implementations only).  This convention correspond
                          to the WINAPI (previously called Pascal convention) C/C++ convention under
--- 757,763 ----
  *Default*               Treated the same as C
  *External*              Treated the same as C
  *Fortran*               Fortran
! *Intrinsic*             For support of pragma ``Import`` with convention Intrinsic, see
                          separate section on Intrinsic Subprograms.
  *Stdcall*               Stdcall (used for Windows implementations only).  This convention correspond
                          to the WINAPI (previously called Pascal convention) C/C++ convention under
*************** Convention Name         Interpretation
*** 767,774 ****
  *Win32*                 Synonym for Stdcall
  *Stubbed*               Stubbed is a special convention used to indicate that the body of the
                          subprogram will be entirely ignored.  Any call to the subprogram
!                         is converted into a raise of the `Program_Error` exception.  If a
!                         pragma `Import` specifies convention `stubbed` then no body need
                          be present at all.  This convention is useful during development for the
                          inclusion of subprograms whose body has not yet been written.
                          In addition, all otherwise unrecognized convention names are also
--- 767,774 ----
  *Win32*                 Synonym for Stdcall
  *Stubbed*               Stubbed is a special convention used to indicate that the body of the
                          subprogram will be entirely ignored.  Any call to the subprogram
!                         is converted into a raise of the ``Program_Error`` exception.  If a
!                         pragma ``Import`` specifies convention ``stubbed`` then no body need
                          be present at all.  This convention is useful during development for the
                          inclusion of subprograms whose body has not yet been written.
                          In addition, all otherwise unrecognized convention names are also
*************** external language, interpreting the Ada
*** 792,800 ****
  letters.
  
  *
!   "The effect of pragma `Linker_Options`.  See B.1(37)."
  
! The string passed to `Linker_Options` is presented uninterpreted as
  an argument to the link command, unless it contains ASCII.NUL characters.
  NUL characters if they appear act as argument separators, so for example
  
--- 792,800 ----
  letters.
  
  *
!   "The effect of pragma ``Linker_Options``.  See B.1(37)."
  
! The string passed to ``Linker_Options`` is presented uninterpreted as
  an argument to the link command, unless it contains ASCII.NUL characters.
  NUL characters if they appear act as argument separators, so for example
  
*************** NUL characters if they appear act as arg
*** 802,808 ****
  
    pragma Linker_Options ("-labc" & ASCII.NUL & "-ldef");
  
! causes two separate arguments `-labc` and `-ldef` to be passed to the
  linker. The order of linker options is preserved for a given unit. The final
  list of options passed to the linker is in reverse order of the elaboration
  order. For example, linker options for a body always appear before the options
--- 802,808 ----
  
    pragma Linker_Options ("-labc" & ASCII.NUL & "-ldef");
  
! causes two separate arguments ``-labc`` and ``-ldef`` to be passed to the
  linker. The order of linker options is preserved for a given unit. The final
  list of options passed to the linker is in reverse order of the elaboration
  order. For example, linker options for a body always appear before the options
*************** from the corresponding package spec.
*** 810,832 ****
  
  *
    "The contents of the visible part of package
!   `Interfaces` and its language-defined descendants.  See B.2(1)."
  
  See files with prefix :file:`i-` in the distributed library.
  
  *
    "Implementation-defined children of package
!   `Interfaces`.  The contents of the visible part of package
!   `Interfaces`.  See B.2(11)."
  
  See files with prefix :file:`i-` in the distributed library.
  
  *
!   "The types `Floating`, `Long_Floating`,
!   `Binary`, `Long_Binary`, `Decimal_ Element`, and
!   `COBOL_Character`; and the initialization of the variables
!   `Ada_To_COBOL` and `COBOL_To_Ada`, in
!   `Interfaces.COBOL`.  See B.4(50)."
  
  ===================== ====================================
  COBOL                 Ada
--- 810,832 ----
  
  *
    "The contents of the visible part of package
!   ``Interfaces`` and its language-defined descendants.  See B.2(1)."
  
  See files with prefix :file:`i-` in the distributed library.
  
  *
    "Implementation-defined children of package
!   ``Interfaces``.  The contents of the visible part of package
!   ``Interfaces``.  See B.2(11)."
  
  See files with prefix :file:`i-` in the distributed library.
  
  *
!   "The types ``Floating``, ``Long_Floating``,
!   ``Binary``, ``Long_Binary``, ``Decimal_ Element``, and
!   ``COBOL_Character``; and the initialization of the variables
!   ``Ada_To_COBOL`` and ``COBOL_To_Ada``, in
!   ``Interfaces.COBOL``.  See B.4(50)."
  
  ===================== ====================================
  COBOL                 Ada
*************** See documentation in file :file:`s-macco
*** 857,863 ****
  
  Interrupts are mapped to signals or conditions as appropriate.  See
  definition of unit
! `Ada.Interrupt_Names` in source file :file:`a-intnam.ads` for details
  on the interrupts supported on a particular target.
  
  *
--- 857,863 ----
  
  Interrupts are mapped to signals or conditions as appropriate.  See
  definition of unit
! ``Ada.Interrupt_Names`` in source file :file:`a-intnam.ads` for details
  on the interrupts supported on a particular target.
  
  *
*************** GNAT does not permit a partition to be r
*** 868,892 ****
  except under control of the debugger.
  
  *
!   "The semantics of pragma `Discard_Names`.  See C.5(7)."
  
! Pragma `Discard_Names` causes names of enumeration literals to
  be suppressed.  In the presence of this pragma, the Image attribute
  provides the image of the Pos of the literal, and Value accepts
  Pos values.
  
  *
!   "The result of the `Task_Identification.Image`
    attribute.  See C.7.1(7)."
  
  The result of this attribute is a string that identifies
! the object or component that denotes a given task. If a variable `Var`
! has a task type, the image for this task will have the form `Var_`XXXXXXXX``,
! where the suffix
  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., `Group(5)_`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
--- 868,892 ----
  except under control of the debugger.
  
  *
!   "The semantics of pragma ``Discard_Names``.  See C.5(7)."
  
! Pragma ``Discard_Names`` causes names of enumeration literals to
  be suppressed.  In the presence of this pragma, the Image attribute
  provides the image of the Pos of the literal, and Value accepts
  Pos values.
  
  *
!   "The result of the ``Task_Identification.Image``
    attribute.  See C.7.1(7)."
  
  The result of this attribute is a string that identifies
! the object or component that denotes a given task. If a variable ``Var``
! has a task type, the image for this task will have the form :samp:`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., :samp:`Group(5)_{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 numeric suffix, that is to say the h
*** 904,931 ****
  virtual address of the control block of the task.
  
  *
!   "The value of `Current_Task` when in a protected entry
    or interrupt handler.  See C.7.1(17)."
  
  Protected entries or interrupt handlers can be executed by any
! convenient thread, so the value of `Current_Task` is undefined.
  
  *
!   "The effect of calling `Current_Task` from an entry
    body or interrupt handler.  See C.7.1(19)."
  
! The effect of calling `Current_Task` from an entry body or
! interrupt handler is to return the identification of the task currently
! executing the code.
  
  *
    "Implementation-defined aspects of
!   `Task_Attributes`.  See C.7.2(19)."
  
! There are no implementation-defined aspects of `Task_Attributes`.
  
  *
!   "Values of all `Metrics`.  See D(2)."
  
  The metrics information for GNAT depends on the performance of the
  underlying operating system.  The sources of the run-time for tasking
--- 904,933 ----
  virtual address of the control block of the task.
  
  *
!   "The value of ``Current_Task`` when in a protected entry
    or interrupt handler.  See C.7.1(17)."
  
  Protected entries or interrupt handlers can be executed by any
! convenient thread, so the value of ``Current_Task`` is undefined.
  
  *
!   "The effect of calling ``Current_Task`` from an entry
    body or interrupt handler.  See C.7.1(19)."
  
! When GNAT can determine statically that ``Current_Task`` is called directly in
! the body of an entry (or barrier) then a warning is emitted and ``Program_Error``
! is raised at run time. Otherwise, the effect of calling ``Current_Task`` from an
! entry body or interrupt handler is to return the identification of the task
! currently executing the code.
  
  *
    "Implementation-defined aspects of
!   ``Task_Attributes``.  See C.7.2(19)."
  
! There are no implementation-defined aspects of ``Task_Attributes``.
  
  *
!   "Values of all ``Metrics``.  See D(2)."
  
  The metrics information for GNAT depends on the performance of the
  underlying operating system.  The sources of the run-time for tasking
*************** on the exact target in use, this informa
*** 937,944 ****
  the required metrics.
  
  *
!   "The declarations of `Any_Priority` and
!   `Priority`.  See D.1(11)."
  
  See declarations in file :file:`system.ads`.
  
--- 939,946 ----
  the required metrics.
  
  *
!   "The declarations of ``Any_Priority`` and
!   ``Priority``.  See D.1(11)."
  
  See declarations in file :file:`system.ads`.
  
*************** and appropriate, these threads correspon
*** 963,970 ****
  underlying operating system.
  
  *
!   "Implementation-defined `policy_identifiers` allowed
!   in a pragma `Task_Dispatching_Policy`.  See D.2.2(3)."
  
  There are no implementation-defined policy-identifiers allowed in this
  pragma.
--- 965,972 ----
  underlying operating system.
  
  *
!   "Implementation-defined *policy_identifiers* allowed
!   in a pragma ``Task_Dispatching_Policy``.  See D.2.2(3)."
  
  There are no implementation-defined policy-identifiers allowed in this
  pragma.
*************** of delay expirations for lower priority
*** 982,1005 ****
  The policy is the same as that of the underlying threads implementation.
  
  *
!   "Implementation-defined `policy_identifiers` allowed
!   in a pragma `Locking_Policy`.  See D.3(4)."
  
  The two implementation defined policies permitted in GNAT are
! `Inheritance_Locking` and  `Conccurent_Readers_Locking`.  On
! targets that support the `Inheritance_Locking` policy, locking is
  implemented by inheritance, i.e., the task owning the lock operates
  at a priority equal to the highest priority of any task currently
! requesting the lock.  On targets that support the
! `Conccurent_Readers_Locking` policy, locking is implemented with a
! read/write lock allowing multiple propected object functions to enter
  concurrently.
  
  *
    "Default ceiling priorities.  See D.3(10)."
  
  The ceiling priority of protected objects of the type
! `System.Interrupt_Priority'Last` as described in the Ada
  Reference Manual D.3(10),
  
  *
--- 984,1007 ----
  The policy is the same as that of the underlying threads implementation.
  
  *
!   "Implementation-defined *policy_identifiers* allowed
!   in a pragma ``Locking_Policy``.  See D.3(4)."
  
  The two implementation defined policies permitted in GNAT are
! ``Inheritance_Locking`` and  ``Concurrent_Readers_Locking``. On
! targets that support the ``Inheritance_Locking`` policy, locking is
  implemented by inheritance, i.e., the task owning the lock operates
  at a priority equal to the highest priority of any task currently
! requesting the lock. On targets that support the
! ``Concurrent_Readers_Locking`` policy, locking is implemented with a
! read/write lock allowing multiple protected object functions to enter
  concurrently.
  
  *
    "Default ceiling priorities.  See D.3(10)."
  
  The ceiling priority of protected objects of the type
! ``System.Interrupt_Priority'Last`` as described in the Ada
  Reference Manual D.3(10),
  
  *
*************** Reference Manual D.3(10),
*** 1007,1013 ****
    the implementation.  See D.3(16)."
  
  The ceiling priority of internal protected objects is
! `System.Priority'Last`.
  
  *
    "Implementation-defined queuing policies.  See D.4(1)."
--- 1009,1015 ----
    the implementation.  See D.3(16)."
  
  The ceiling priority of internal protected objects is
! ``System.Priority'Last``.
  
  *
    "Implementation-defined queuing policies.  See D.4(1)."
*************** task creation.
*** 1031,1055 ****
  
  *
    "What happens when a task terminates in the presence of
!   pragma `No_Task_Termination`. See D.7(15)."
  
  Execution is erroneous in that case.
  
  *
    "Implementation-defined aspects of pragma
!   `Restrictions`.  See D.7(20)."
  
  There are no such implementation-defined aspects.
  
  *
    "Implementation-defined aspects of package
!   `Real_Time`.  See D.8(17)."
  
! There are no implementation defined aspects of package `Real_Time`.
  
  *
    "Implementation-defined aspects of
!   `delay_statements`.  See D.9(8)."
  
  Any difference greater than one microsecond will cause the task to be
  delayed (see D.9(7)).
--- 1033,1057 ----
  
  *
    "What happens when a task terminates in the presence of
!   pragma ``No_Task_Termination``. See D.7(15)."
  
  Execution is erroneous in that case.
  
  *
    "Implementation-defined aspects of pragma
!   ``Restrictions``.  See D.7(20)."
  
  There are no such implementation-defined aspects.
  
  *
    "Implementation-defined aspects of package
!   ``Real_Time``.  See D.8(17)."
  
! There are no implementation defined aspects of package ``Real_Time``.
  
  *
    "Implementation-defined aspects of
!   *delay_statements*.  See D.9(8)."
  
  Any difference greater than one microsecond will cause the task to be
  delayed (see D.9(7)).
*************** implementation defined interfaces.
*** 1114,1120 ****
  
  *
    "The values of named numbers in the package
!   `Decimal`.  See F.2(7)."
  
  ==================== ==========
  Named Number         Value
--- 1116,1122 ----
  
  *
    "The values of named numbers in the package
!   ``Decimal``.  See F.2(7)."
  
  ==================== ==========
  Named Number         Value
*************** Named Number         Value
*** 1127,1140 ****
  ==================== ==========
  
  *
!   "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
  
--- 1129,1142 ----
  ==================== ==========
  
  *
!   "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
  
*************** operations.  Only fast math mode is curr
*** 1147,1154 ****
  
  *
    "The sign of a zero result (or a component thereof) from
!   any operator or function in `Numerics.Generic_Complex_Types`, when
!   `Real'Signed_Zeros` is True.  See G.1.1(53)."
  
  The signs of zero values are as recommended by the relevant
  implementation advice.
--- 1149,1156 ----
  
  *
    "The sign of a zero result (or a component thereof) from
!   any operator or function in ``Numerics.Generic_Complex_Types``, when
!   ``Real'Signed_Zeros`` is True.  See G.1.1(53)."
  
  The signs of zero values are as recommended by the relevant
  implementation advice.
*************** implementation advice.
*** 1156,1163 ****
  *
    "The sign of a zero result (or a component thereof) from
    any operator or function in
!   `Numerics.Generic_Complex_Elementary_Functions`, when
!   `Real'Signed_Zeros` is `True`.  See G.1.2(45)."
  
  The signs of zero values are as recommended by the relevant
  implementation advice.
--- 1158,1165 ----
  *
    "The sign of a zero result (or a component thereof) from
    any operator or function in
!   ``Numerics.Generic_Complex_Elementary_Functions``, when
!   ``Real'Signed_Zeros`` is ``True``.  See G.1.2(45)."
  
  The signs of zero values are as recommended by the relevant
  implementation advice.
*************** floating-point format.
*** 1179,1186 ****
  
  *
    "The result of a floating point arithmetic operation in
!   overflow situations, when the `Machine_Overflows` attribute of the
!   result type is `False`.  See G.2.1(13)."
  
  Infinite and NaN values are produced as dictated by the IEEE
  floating-point standard.
--- 1181,1188 ----
  
  *
    "The result of a floating point arithmetic operation in
!   overflow situations, when the ``Machine_Overflows`` attribute of the
!   result type is ``False``.  See G.2.1(13)."
  
  Infinite and NaN values are produced as dictated by the IEEE
  floating-point standard.
*************** floating-point, the operation is done in
*** 1208,1214 ****
  is converted to the target type.
  
  *
!   "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)."
  
--- 1210,1216 ----
  is converted to the target type.
  
  *
!   "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)."
  
*************** representable in 64-bits.
*** 1218,1233 ****
  
  *
    "The result of a fixed point arithmetic operation in
!   overflow situations, when the `Machine_Overflows` attribute of the
!   result type is `False`.  See G.2.3(27)."
  
! Not relevant, `Machine_Overflows` is `True` for fixed-point
  types.
  
  *
    "The result of an elementary function reference in
!   overflow situations, when the `Machine_Overflows` attribute of the
!   result type is `False`.  See G.2.4(4)."
  
  IEEE infinite and Nan values are produced as appropriate.
  
--- 1220,1235 ----
  
  *
    "The result of a fixed point arithmetic operation in
!   overflow situations, when the ``Machine_Overflows`` attribute of the
!   result type is ``False``.  See G.2.3(27)."
  
! Not relevant, ``Machine_Overflows`` is ``True`` for fixed-point
  types.
  
  *
    "The result of an elementary function reference in
!   overflow situations, when the ``Machine_Overflows`` attribute of the
!   result type is ``False``.  See G.2.4(4)."
  
  IEEE infinite and Nan values are produced as appropriate.
  
*************** Information on this subject is not yet a
*** 1248,1255 ****
  *
    "The result of a complex arithmetic operation or complex
    elementary function reference in overflow situations, when the
!   `Machine_Overflows` attribute of the corresponding real type is
!   `False`.  See G.2.6(5)."
  
  IEEE infinite and Nan values are produced as appropriate.
  
--- 1250,1257 ----
  *
    "The result of a complex arithmetic operation or complex
    elementary function reference in overflow situations, when the
!   ``Machine_Overflows`` attribute of the corresponding real type is
!   ``False``.  See G.2.6(5)."
  
  IEEE infinite and Nan values are produced as appropriate.
  
*************** Information on this subject is not yet a
*** 1268,1288 ****
  
  *
    "Implementation-defined aspects of pragma
!   `Inspection_Point`.  See H.3.2(8)."
  
! Pragma `Inspection_Point` ensures that the variable is live and can
  be examined by the debugger at the inspection point.
  
  *
    "Implementation-defined aspects of pragma
!   `Restrictions`.  See H.4(25)."
  
! There are no implementation-defined aspects of pragma `Restrictions`.  The
! use of pragma `Restrictions [No_Exceptions]` has no effect on the
! generated code.  Checks must suppressed by use of pragma `Suppress`.
  
  *
!   "Any restrictions on pragma `Restrictions`.  See
    H.4(27)."
  
! There are no restrictions on pragma `Restrictions`.
--- 1270,1290 ----
  
  *
    "Implementation-defined aspects of pragma
!   ``Inspection_Point``.  See H.3.2(8)."
  
! Pragma ``Inspection_Point`` ensures that the variable is live and can
  be examined by the debugger at the inspection point.
  
  *
    "Implementation-defined aspects of pragma
!   ``Restrictions``.  See H.4(25)."
  
! There are no implementation-defined aspects of pragma ``Restrictions``.  The
! use of pragma ``Restrictions [No_Exceptions]`` has no effect on the
! generated code.  Checks must suppressed by use of pragma ``Suppress``.
  
  *
!   "Any restrictions on pragma ``Restrictions``.  See
    H.4(27)."
  
! There are no restrictions on pragma ``Restrictions``.
diff -Nrcpad gcc-7.3.0/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst gcc-8.1.0/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst
*** gcc-7.3.0/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst	Fri Jan 13 11:23:42 2017
--- gcc-8.1.0/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst	Fri Dec 15 14:09:02 2017
***************
*** 1,3 ****
--- 1,5 ----
+ .. role:: switch(samp)
+ 
  .. _Implementation_Defined_Pragmas:
  
  ******************************
*************** Syntax:
*** 32,38 ****
  
  
  This pragma must appear at the start of the statement sequence of a
! handled sequence of statements (right after the `begin`).  It has
  the effect of deferring aborts for the sequence of statements (but not
  for the declarations or handlers, if any, associated with this statement
  sequence).
--- 34,40 ----
  
  
  This pragma must appear at the start of the statement sequence of a
! handled sequence of statements (right after the ``begin``).  It has
  the effect of deferring aborts for the sequence of statements (but not
  for the declarations or handlers, if any, associated with this statement
  sequence).
*************** Syntax:
*** 84,90 ****
  
    ABSTRACT_STATE ::= name
  
! For the semantics of this pragma, see the entry for aspect `Abstract_State` in
  the SPARK 2014 Reference Manual, section 7.1.4.
  
  Pragma Ada_83
--- 86,92 ----
  
    ABSTRACT_STATE ::= name
  
! For the semantics of this pragma, see the entry for aspect ``Abstract_State`` in
  the SPARK 2014 Reference Manual, section 7.1.4.
  
  Pragma Ada_83
*************** the syntax and semantics of Ada 83, as d
*** 104,110 ****
  83 Reference Manual as possible.  In particular, the keywords added by Ada 95
  and Ada 2005 are not recognized, optional package bodies are allowed,
  and generics may name types with unknown discriminants without using
! the `(<>)` notation.  In addition, some but not all of the additional
  restrictions of Ada 83 are enforced.
  
  Ada 83 mode is intended for two purposes.  Firstly, it allows existing
--- 106,112 ----
  83 Reference Manual as possible.  In particular, the keywords added by Ada 95
  and Ada 2005 are not recognized, optional package bodies are allowed,
  and generics may name types with unknown discriminants without using
! the ``(<>)`` notation.  In addition, some but not all of the additional
  restrictions of Ada 83 are enforced.
  
  Ada 83 mode is intended for two purposes.  Firstly, it allows existing
*************** Syntax:
*** 127,133 ****
  
  A configuration pragma that establishes Ada 95 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 95 features, but which is intended to be usable from
--- 129,135 ----
  
  A configuration pragma that establishes Ada 95 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 95 features, but which is intended to be usable from
*************** Syntax:
*** 187,193 ****
  
  A configuration pragma that establishes Ada 2012 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 2012 features, but which is intended to be usable from
--- 189,195 ----
  
  A configuration pragma that establishes Ada 2012 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 2012 features, but which is intended to be usable from
*************** Syntax:
*** 227,241 ****
    pragma Allow_Integer_Address;
  
  
! In almost all versions of GNAT, `System.Address` is a private
  type in accordance with the implementation advice in the RM. This
  means that integer values,
  in particular integer literals, are not allowed as address values.
  If the configuration pragma
! `Allow_Integer_Address` is given, then integer expressions may
! be used anywhere a value of type `System.Address` is required.
  The effect is to introduce an implicit unchecked conversion from the
! integer value to type `System.Address`. The reverse case of using
  an address where an integer type is required is handled analogously.
  The following example compiles without errors:
  
--- 229,243 ----
    pragma Allow_Integer_Address;
  
  
! In almost all versions of GNAT, ``System.Address`` is a private
  type in accordance with the implementation advice in the RM. This
  means that integer values,
  in particular integer literals, are not allowed as address values.
  If the configuration pragma
! ``Allow_Integer_Address`` is given, then integer expressions may
! be used anywhere a value of type ``System.Address`` is required.
  The effect is to introduce an implicit unchecked conversion from the
! integer value to type ``System.Address``. The reverse case of using
  an address where an integer type is required is handled analogously.
  The following example compiles without errors:
  
*************** The following example compiles without e
*** 261,268 ****
    end AddrAsInt;
  
  
! Note that pragma `Allow_Integer_Address` is ignored if `System.Address`
! is not a private type. In implementations of `GNAT` where
  System.Address is a visible integer type,
  this pragma serves no purpose but is ignored
  rather than rejected to allow common sets of sources to be used
--- 263,270 ----
    end AddrAsInt;
  
  
! Note that pragma ``Allow_Integer_Address`` is ignored if ``System.Address``
! is not a private type. In implementations of ``GNAT`` where
  System.Address is a visible integer type,
  this pragma serves no purpose but is ignored
  rather than rejected to allow common sets of sources to be used
*************** Syntax::
*** 280,297 ****
    ARG ::= NAME | EXPRESSION
  
  
! This pragma is used to annotate programs.  `identifier` identifies
  the type of annotation.  GNAT verifies that it is an identifier, but does
  not otherwise analyze it. The second optional identifier is also left
  unanalyzed, and by convention is used to control the action of the tool to
! which the annotation is addressed.  The remaining `arg` arguments
  can be either string literals or more generally expressions.
  String literals are assumed to be either of type
! `Standard.String` or else `Wide_String` or `Wide_Wide_String`
  depending on the character literals they contain.
  All other kinds of arguments are analyzed as expressions, and must be
  unambiguous. The last argument if present must have the identifier
! `Entity` and GNAT verifies that a local name is given.
  
  The analyzed pragma is retained in the tree, but not otherwise processed
  by any part of the GNAT compiler, except to generate corresponding note
--- 282,299 ----
    ARG ::= NAME | EXPRESSION
  
  
! This pragma is used to annotate programs.  IDENTIFIER identifies
  the type of annotation.  GNAT verifies that it is an identifier, but does
  not otherwise analyze it. The second optional identifier is also left
  unanalyzed, and by convention is used to control the action of the tool to
! which the annotation is addressed.  The remaining ARG arguments
  can be either string literals or more generally expressions.
  String literals are assumed to be either of type
! ``Standard.String`` or else ``Wide_String`` or ``Wide_Wide_String``
  depending on the character literals they contain.
  All other kinds of arguments are analyzed as expressions, and must be
  unambiguous. The last argument if present must have the identifier
! ``Entity`` and GNAT verifies that a local name is given.
  
  The analyzed pragma is retained in the tree, but not otherwise processed
  by any part of the GNAT compiler, except to generate corresponding note
*************** equivalent to the following:
*** 327,344 ****
  
  The string argument, if given, is the message that will be associated
  with the exception occurrence if the exception is raised.  If no second
! argument is given, the default message is `file`:`nnn`,
! where `file` is the name of the source file containing the assert,
! and `nnn` is the line number of the assert.
  
! Note that, as with the `if` statement to which it is equivalent, the
! type of the expression is either `Standard.Boolean`, or any type derived
  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 `Assertion_Policy` or `Check_Policy` pragma is used
! to enable `Assert_Checks`.
  
  If assertions are ignored, then there
  is no run-time effect (and in particular, any side effects from the
--- 329,346 ----
  
  The string argument, if given, is the message that will be associated
  with the exception occurrence if the exception is raised.  If no second
! argument is given, the default message is ``file``:``nnn``,
! where ``file`` is the name of the source file containing the assert,
! and ``nnn`` is the line number of the assert.
  
! Note that, as with the ``if`` statement to which it is equivalent, the
! type of the expression is either ``Standard.Boolean``, or any type derived
  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 ``Assertion_Policy`` or ``Check_Policy`` pragma is used
! to enable ``Assert_Checks``.
  
  If assertions are ignored, then there
  is no run-time effect (and in particular, any side effects from the
*************** analyzed at compile time, and may cause
*** 347,354 ****
  mentioned here for the first time).
  
  If assertions are checked, then the given expression is tested, and if
! it is `False` then `System.Assertions.Raise_Assert_Failure` is called
! which results in the raising of `Assert_Failure` with the given message.
  
  You should generally avoid side effects in the expression arguments of
  this pragma, because these side effects will turn on and off with the
--- 349,356 ----
  mentioned here for the first time).
  
  If assertions are checked, then the given expression is tested, and if
! it is ``False`` then ``System.Assertions.Raise_Assert_Failure`` is called
! which results in the raising of ``Assert_Failure`` with the given message.
  
  You should generally avoid side effects in the expression arguments of
  this pragma, because these side effects will turn on and off with the
*************** effect on the program.  However, the exp
*** 357,364 ****
  semantic correctness whether or not assertions are enabled, so turning
  assertions on and off cannot affect the legality of a program.
  
! Note that the implementation defined policy `DISABLE`, given in a
! pragma `Assertion_Policy`, can be used to suppress this semantic analysis.
  
  Note: this is a standard language-defined pragma in versions
  of Ada from 2005 on. In GNAT, it is implemented in all versions
--- 359,366 ----
  semantic correctness whether or not assertions are enabled, so turning
  assertions on and off cannot affect the legality of a program.
  
! Note that the implementation defined policy ``DISABLE``, given in a
! pragma ``Assertion_Policy``, can be used to suppress this semantic analysis.
  
  Note: this is a standard language-defined pragma in versions
  of Ada from 2005 on. In GNAT, it is implemented in all versions
*************** Syntax::
*** 375,383 ****
      [, string_EXPRESSION]);
  
  
! The effect of this pragma is identical to that of pragma `Assert`,
! except that in an `Assertion_Policy` pragma, the identifier
! `Assert_And_Cut` is used to control whether it is ignored or checked
  (or disabled).
  
  The intention is that this be used within a subprogram when the
--- 377,385 ----
      [, string_EXPRESSION]);
  
  
! The effect of this pragma is identical to that of pragma ``Assert``,
! except that in an ``Assertion_Policy`` pragma, the identifier
! ``Assert_And_Cut`` is used to control whether it is ignored or checked
  (or disabled).
  
  The intention is that this be used within a subprogram when the
*************** Syntax::
*** 417,422 ****
--- 419,425 ----
                          Assume               |
                          Contract_Cases       |
                          Debug                |
+                         Ghost                |
                          Invariant            |
                          Invariant'Class      |
                          Loop_Invariant       |
*************** Syntax::
*** 432,473 ****
  
  This is a standard Ada 2012 pragma that is available as an
  implementation-defined pragma in earlier versions of Ada.
! The assertion kinds `RM_ASSERTION_KIND` are those defined in
! the Ada standard. The assertion kinds `ID_ASSERTION_KIND`
  are implementation defined additions recognized by the GNAT compiler.
  
  The pragma applies in both cases to pragmas and aspects with matching
! names, e.g. `Pre` applies to the Pre aspect, and `Precondition`
! applies to both the `Precondition` pragma
! 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.
! If the policy is `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 `SUPPRESSIBLE`, then assertions are enabled by default,
  however, if the *-gnatp* switch is specified all assertions are ignored.
  
! The implementation defined policy `DISABLE` is like
! `IGNORE` except that it completely disables semantic
  checking of the corresponding pragma or aspect. This is
  useful when the pragma or aspect argument references subprograms
  in a with'ed package which is replaced by a dummy package
  for the final build.
  
! The implementation defined assertion kind `Assertions` applies to all
  assertion kinds. The form with no assertion kind given implies this
  choice, so it applies to all assertion kinds (RM defined, and
  implementation defined).
  
! The implementation defined assertion kind `Statement_Assertions`
! applies to `Assert`, `Assert_And_Cut`,
! `Assume`, `Loop_Invariant`, and `Loop_Variant`.
  
  Pragma Assume
  =============
--- 435,476 ----
  
  This is a standard Ada 2012 pragma that is available as an
  implementation-defined pragma in earlier versions of Ada.
! The assertion kinds ``RM_ASSERTION_KIND`` are those defined in
! the Ada standard. The assertion kinds ``ID_ASSERTION_KIND``
  are implementation defined additions recognized by the GNAT compiler.
  
  The pragma applies in both cases to pragmas and aspects with matching
! names, e.g. ``Pre`` applies to the Pre aspect, and ``Precondition``
! applies to both the ``Precondition`` pragma
! 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.
! If the policy is ``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 ``SUPPRESSIBLE``, then assertions are enabled by default,
  however, if the *-gnatp* switch is specified all assertions are ignored.
  
! The implementation defined policy ``DISABLE`` is like
! ``IGNORE`` except that it completely disables semantic
  checking of the corresponding pragma or aspect. This is
  useful when the pragma or aspect argument references subprograms
  in a with'ed package which is replaced by a dummy package
  for the final build.
  
! The implementation defined assertion kind ``Assertions`` applies to all
  assertion kinds. The form with no assertion kind given implies this
  choice, so it applies to all assertion kinds (RM defined, and
  implementation defined).
  
! The implementation defined assertion kind ``Statement_Assertions``
! applies to ``Assert``, ``Assert_And_Cut``,
! ``Assume``, ``Loop_Invariant``, and ``Loop_Variant``.
  
  Pragma Assume
  =============
*************** Syntax:
*** 481,489 ****
      [, string_EXPRESSION]);
  
  
! The effect of this pragma is identical to that of pragma `Assert`,
! except that in an `Assertion_Policy` pragma, the identifier
! `Assume` is used to control whether it is ignored or checked
  (or disabled).
  
  The intention is that this be used for assumptions about the
--- 484,492 ----
      [, string_EXPRESSION]);
  
  
! The effect of this pragma is identical to that of pragma ``Assert``,
! except that in an ``Assertion_Policy`` pragma, the identifier
! ``Assume`` is used to control whether it is ignored or checked
  (or disabled).
  
  The intention is that this be used for assumptions about the
*************** external environment. So you cannot expe
*** 491,497 ****
  or informally that the condition is met, this must be
  established by examining things outside the program itself.
  For example, we may have code that depends on the size of
! `Long_Long_Integer` being at least 64. So we could write:
  
  .. code-block:: ada
  
--- 494,500 ----
  or informally that the condition is met, this must be
  established by examining things outside the program itself.
  For example, we may have code that depends on the size of
! ``Long_Long_Integer`` being at least 64. So we could write:
  
  .. code-block:: ada
  
*************** prove they are valid. Consider the follo
*** 537,548 ****
  if V1 and V2 have valid values, then the loop is known at compile
  time not to execute since the lower bound must be greater than the
  upper bound. However in default mode, no such assumption is made,
! and the loop may execute. If `Assume_No_Invalid_Values (On)`
  is given, the compiler will assume that any occurrence of a variable
! other than in an explicit `'Valid` test always has a valid
  value, and the loop above will be optimized away.
  
! The use of `Assume_No_Invalid_Values (On)` is appropriate if
  you know your code is free of uninitialized variables and other
  possible sources of invalid representations, and may result in
  more efficient code. A program that accesses an invalid representation
--- 540,551 ----
  if V1 and V2 have valid values, then the loop is known at compile
  time not to execute since the lower bound must be greater than the
  upper bound. However in default mode, no such assumption is made,
! and the loop may execute. If ``Assume_No_Invalid_Values (On)``
  is given, the compiler will assume that any occurrence of a variable
! other than in an explicit ``'Valid`` test always has a valid
  value, and the loop above will be optimized away.
  
! The use of ``Assume_No_Invalid_Values (On)`` is appropriate if
  you know your code is free of uninitialized variables and other
  possible sources of invalid representations, and may result in
  more efficient code. A program that accesses an invalid representation
*************** Syntax:
*** 564,572 ****
  
  .. code-block:: ada
  
!   pragma Asynch_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.
  
  .. _Pragma-Async_Writers:
--- 567,575 ----
  
  .. code-block:: ada
  
!   pragma Asynch_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.
  
  .. _Pragma-Async_Writers:
*************** Syntax:
*** 578,586 ****
  
  .. code-block:: ada
  
!   pragma Asynch_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.
  
  Pragma Attribute_Definition
--- 581,589 ----
  
  .. code-block:: ada
  
!   pragma Asynch_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.
  
  Pragma Attribute_Definition
*************** Syntax:
*** 596,602 ****
       [Expression =>] EXPRESSION | NAME);
  
  
! If `Attribute` is a known attribute name, this pragma is equivalent to
  the attribute definition clause:
  
  
--- 599,605 ----
       [Expression =>] EXPRESSION | NAME);
  
  
! If ``Attribute`` is a known attribute name, this pragma is equivalent to
  the attribute definition clause:
  
  
*************** the attribute definition clause:
*** 605,611 ****
      for Entity'Attribute use Expression;
  
  
! If `Attribute` is not a recognized attribute name, the pragma is
  ignored, and a warning is emitted. This allows source
  code to be written that takes advantage of some new attribute, while remaining
  compilable with earlier compilers.
--- 608,614 ----
      for Entity'Attribute use Expression;
  
  
! If ``Attribute`` is not a recognized attribute name, the pragma is
  ignored, and a warning is emitted. This allows source
  code to be written that takes advantage of some new attribute, while remaining
  compilable with earlier compilers.
*************** Syntax:
*** 625,639 ****
  
  Normally the default mechanism for passing C convention records to C
  convention subprograms is to pass them by reference, as suggested by RM
! B.3(69).  Use the configuration pragma `C_Pass_By_Copy` to change
  this default, by requiring that record formal parameters be passed by
  copy if all of the following conditions are met:
  
  *
    The size of the record type does not exceed the value specified for
!   `Max_Size`.
  *
!   The record type has `Convention C`.
  *
    The formal parameter has this record type, and the subprogram has a
    foreign (non-Ada) convention.
--- 628,642 ----
  
  Normally the default mechanism for passing C convention records to C
  convention subprograms is to pass them by reference, as suggested by RM
! B.3(69).  Use the configuration pragma ``C_Pass_By_Copy`` to change
  this default, by requiring that record formal parameters be passed by
  copy if all of the following conditions are met:
  
  *
    The size of the record type does not exceed the value specified for
!   ``Max_Size``.
  *
!   The record type has ``Convention C``.
  *
    The formal parameter has this record type, and the subprogram has a
    foreign (non-Ada) convention.
*************** manner consistent with what C expects if
*** 643,650 ****
  C prototype is a struct (rather than a pointer to a struct).
  
  You can also pass records by copy by specifying the convention
! `C_Pass_By_Copy` for the record type, or by using the extended
! `Import` and `Export` pragmas, which allow specification of
  passing mechanisms on a parameter by parameter basis.
  
  Pragma Check
--- 646,653 ----
  C prototype is a struct (rather than a pointer to a struct).
  
  You can also pass records by copy by specifying the convention
! ``C_Pass_By_Copy`` for the record type, or by using the extended
! ``Import`` and ``Export`` pragmas, which allow specification of
  passing mechanisms on a parameter by parameter basis.
  
  Pragma Check
*************** Syntax:
*** 670,688 ****
                   Invariant'Class
  
  
! This pragma is similar to the predefined pragma `Assert` except that an
  extra identifier argument is present. In conjunction with pragma
! `Check_Policy`, this can be used to define groups of assertions that can
! be independently controlled. The identifier `Assertion` is special, it
! refers to the normal set of pragma `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 `Check_Policy`.
  
! The identifiers `Assertions` and `Statement_Assertions` are not
  permitted as check kinds, since this would cause confusion with the use
! of these identifiers in `Assertion_Policy` and `Check_Policy`
  pragmas, where they are used to refer to sets of assertions.
  
  Pragma Check_Float_Overflow
--- 673,691 ----
                   Invariant'Class
  
  
! This pragma is similar to the predefined pragma ``Assert`` except that an
  extra identifier argument is present. In conjunction with pragma
! ``Check_Policy``, this can be used to define groups of assertions that can
! be independently controlled. The identifier ``Assertion`` is special, it
! refers to the normal set of pragma ``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 ``Check_Policy``.
  
! The identifiers ``Assertions`` and ``Statement_Assertions`` are not
  permitted as check kinds, since this would cause confusion with the use
! of these identifiers in ``Assertion_Policy`` and ``Check_Policy``
  pragmas, where they are used to refer to sets of assertions.
  
  Pragma Check_Float_Overflow
*************** Syntax:
*** 697,704 ****
    pragma Check_Float_Overflow;
  
  
! In Ada, the predefined floating-point types (`Short_Float`,
! `Float`, `Long_Float`, `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.
--- 700,707 ----
    pragma Check_Float_Overflow;
  
  
! In Ada, the predefined floating-point types (``Short_Float``,
! ``Float``, ``Long_Float``, ``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.
*************** can have the same base range as its base
*** 721,742 ****
    subtype My_Float is Float range Float'Range;
  
  
! Here `My_Float` has the same range as
! `Float` but is constrained, so operations on
! `My_Float` values will be checked for overflow
  against this range.
  
  This style will achieve the desired goal, but
  it is often more convenient to be able to simply use
  the standard predefined floating-point types as long
  as overflow checking could be guaranteed.
! The `Check_Float_Overflow`
  configuration pragma achieves this effect. If a unit is compiled
  subject to this configuration pragma, then all operations
  on predefined floating-point types including operations on
  base types of these floating-point types will be treated as
  though those types were constrained, and overflow checks
! will be generated. The `Constraint_Error`
  exception is raised if the result is out of range.
  
  This mode can also be set by use of the compiler
--- 724,745 ----
    subtype My_Float is Float range Float'Range;
  
  
! Here ``My_Float`` has the same range as
! ``Float`` but is constrained, so operations on
! ``My_Float`` values will be checked for overflow
  against this range.
  
  This style will achieve the desired goal, but
  it is often more convenient to be able to simply use
  the standard predefined floating-point types as long
  as overflow checking could be guaranteed.
! The ``Check_Float_Overflow``
  configuration pragma achieves this effect. If a unit is compiled
  subject to this configuration pragma, then all operations
  on predefined floating-point types including operations on
  base types of these floating-point types will be treated as
  though those types were constrained, and overflow checks
! will be generated. The ``Constraint_Error``
  exception is raised if the result is out of range.
  
  This mode can also be set by use of the compiler
*************** are present in a partition mentioning th
*** 764,777 ****
  check name is introduced.
  
  An implementation defined check name introduced with this pragma may
! be used in only three contexts: `pragma Suppress`,
! `pragma Unsuppress`,
! and as the prefix of a `Check_Name'Enabled` attribute reference. For
  any of these three cases, the check name must be visible. A check
  name is visible if it is in the configuration pragmas applying to
  the current unit, or if it appears at the start of any unit that
  is part of the dependency set of the current unit (e.g., units that
! are mentioned in `with` clauses).
  
  Check names introduced by this pragma are subject to control by compiler
  switches (in particular -gnatp) in the usual manner.
--- 767,780 ----
  check name is introduced.
  
  An implementation defined check name introduced with this pragma may
! be used in only three contexts: ``pragma Suppress``,
! ``pragma Unsuppress``,
! and as the prefix of a ``Check_Name'Enabled`` attribute reference. For
  any of these three cases, the check name must be visible. A check
  name is visible if it is in the configuration pragmas applying to
  the current unit, or if it appears at the start of any unit that
  is part of the dependency set of the current unit (e.g., units that
! are mentioned in ``with`` clauses).
  
  Check names introduced by this pragma are subject to control by compiler
  switches (in particular -gnatp) in the usual manner.
*************** Syntax:
*** 814,840 ****
  
  
  This pragma is used to set the checking policy for assertions (specified
! by aspects or pragmas), the `Debug` pragma, or additional checks
! to be checked using the `Check` pragma. It may appear either as
  a configuration pragma, or within a declarative part of package. In the
  latter case, it applies from the point where it appears to the end of
! the declarative region (like pragma `Suppress`).
  
! The `Check_Policy` pragma is similar to the
! predefined `Assertion_Policy` pragma,
  and if the check kind corresponds to one of the assertion kinds that
! are allowed by `Assertion_Policy`, then the effect is identical.
  
  If the first argument is Debug, then the policy applies to Debug pragmas,
! disabling their effect if the policy is `OFF`, `DISABLE`, or
! `IGNORE`, and allowing them to execute with normal semantics if
! the policy is `ON` or `CHECK`. In addition if the policy is
! `DISABLE`, then the procedure call in `Debug` pragmas will
  be totally ignored and not analyzed semantically.
  
  Finally the first argument may be some other identifier than the above
  possibilities, in which case it controls a set of named assertions
! that can be checked using pragma `Check`. For example, if the pragma:
  
  
  .. code-block:: ada
--- 817,843 ----
  
  
  This pragma is used to set the checking policy for assertions (specified
! by aspects or pragmas), the ``Debug`` pragma, or additional checks
! to be checked using the ``Check`` pragma. It may appear either as
  a configuration pragma, or within a declarative part of package. In the
  latter case, it applies from the point where it appears to the end of
! the declarative region (like pragma ``Suppress``).
  
! The ``Check_Policy`` pragma is similar to the
! predefined ``Assertion_Policy`` pragma,
  and if the check kind corresponds to one of the assertion kinds that
! are allowed by ``Assertion_Policy``, then the effect is identical.
  
  If the first argument is Debug, then the policy applies to Debug pragmas,
! disabling their effect if the policy is ``OFF``, ``DISABLE``, or
! ``IGNORE``, and allowing them to execute with normal semantics if
! the policy is ``ON`` or ``CHECK``. In addition if the policy is
! ``DISABLE``, then the procedure call in ``Debug`` pragmas will
  be totally ignored and not analyzed semantically.
  
  Finally the first argument may be some other identifier than the above
  possibilities, in which case it controls a set of named assertions
! that can be checked using pragma ``Check``. For example, if the pragma:
  
  
  .. code-block:: ada
*************** that can be checked using pragma `Check`
*** 842,860 ****
    pragma Check_Policy (Critical_Error, OFF);
  
  
! is given, then subsequent `Check` pragmas whose first argument is also
! `Critical_Error` will be disabled.
  
! The check policy is `OFF` to turn off corresponding checks, and `ON`
  to turn on corresponding checks. The default for a set of checks for which no
! `Check_Policy` is given is `OFF` unless the compiler switch
  *-gnata* is given, which turns on all checks by default.
  
! The check policy settings `CHECK` and `IGNORE` are recognized
! as synonyms for `ON` and `OFF`. These synonyms are provided for
! compatibility with the standard `Assertion_Policy` pragma. The check
! policy setting `DISABLE` causes the second argument of a corresponding
! `Check` pragma to be completely ignored and not analyzed.
  
  Pragma Comment
  ==============
--- 845,863 ----
    pragma Check_Policy (Critical_Error, OFF);
  
  
! is given, then subsequent ``Check`` pragmas whose first argument is also
! ``Critical_Error`` will be disabled.
  
! The check policy is ``OFF`` to turn off corresponding checks, and ``ON``
  to turn on corresponding checks. The default for a set of checks for which no
! ``Check_Policy`` is given is ``OFF`` unless the compiler switch
  *-gnata* is given, which turns on all checks by default.
  
! The check policy settings ``CHECK`` and ``IGNORE`` are recognized
! as synonyms for ``ON`` and ``OFF``. These synonyms are provided for
! compatibility with the standard ``Assertion_Policy`` pragma. The check
! policy setting ``DISABLE`` causes the second argument of a corresponding
! ``Check`` pragma to be completely ignored and not analyzed.
  
  Pragma Comment
  ==============
*************** Syntax:
*** 867,876 ****
    pragma Comment (static_string_EXPRESSION);
  
  
! This is almost identical in effect to pragma `Ident`.  It allows the
  placement of a comment into the object file and hence into the
  executable file if the operating system permits such usage.  The
! difference is that `Comment`, unlike `Ident`, has
  no limitations on placement of the pragma (it can be placed
  anywhere in the main source unit), and if more than one pragma
  is used, all comments are retained.
--- 870,879 ----
    pragma Comment (static_string_EXPRESSION);
  
  
! This is almost identical in effect to pragma ``Ident``.  It allows the
  placement of a comment into the object file and hence into the
  executable file if the operating system permits such usage.  The
! difference is that ``Comment``, unlike ``Ident``, has
  no limitations on placement of the pragma (it can be placed
  anywhere in the main source unit), and if more than one pragma
  is used, all comments are retained.
*************** Syntax:
*** 894,908 ****
  
  
  This pragma enables the shared use of variables stored in overlaid
! linker areas corresponding to the use of `COMMON`
  in Fortran.  The single
! object `LOCAL_NAME` is assigned to the area designated by
! the `External` argument.
  You may define a record to correspond to a series
! of fields.  The `Size` argument
  is syntax checked in GNAT, but otherwise ignored.
  
! `Common_Object` is not supported on all platforms.  If no
  support is available, then the code generator will issue a message
  indicating that the necessary attribute for implementation of this
  pragma is not available.
--- 897,911 ----
  
  
  This pragma enables the shared use of variables stored in overlaid
! linker areas corresponding to the use of ``COMMON``
  in Fortran.  The single
! object ``LOCAL_NAME`` is assigned to the area designated by
! the ``External`` argument.
  You may define a record to correspond to a series
! of fields.  The ``Size`` argument
  is syntax checked in GNAT, but otherwise ignored.
  
! ``Common_Object`` is not supported on all platforms.  If no
  support is available, then the code generator will issue a message
  indicating that the necessary attribute for implementation of this
  pragma is not available.
*************** Syntax:
*** 1021,1027 ****
            ([Entity =>] LOCAL_NAME);
  
  
! The `Entity` argument must be the name of a record type which has
  two fields of the same floating-point type.  The effect of this pragma is
  to force gcc to use the special internal complex representation form for
  this record, which may be more efficient.  Note that this may result in
--- 1024,1030 ----
            ([Entity =>] LOCAL_NAME);
  
  
! The ``Entity`` argument must be the name of a record type which has
  two fields of the same floating-point type.  The effect of this pragma is
  to force gcc to use the special internal complex representation form for
  this record, which may be more efficient.  Note that this may result in
*************** Syntax:
*** 1053,1059 ****
  
  
  Specifies the alignment of components in array or record types.
! The meaning of the `Form` argument is as follows:
  
  
    .. index:: Component_Size (in pragma Component_Alignment)
--- 1056,1062 ----
  
  
  Specifies the alignment of components in array or record types.
! The meaning of the ``Form`` argument is as follows:
  
  
    .. index:: Component_Size (in pragma Component_Alignment)
*************** The meaning of the `Form` argument is as
*** 1079,1103 ****
  *Storage_Unit*
    Specifies that array or record components are byte aligned, i.e.,
    aligned on boundaries determined by the value of the constant
!   `System.Storage_Unit`.
  
    .. index:: Default (in pragma Component_Alignment)
  
  *Default*
    Specifies that array or record components are aligned on default
    boundaries, appropriate to the underlying hardware or operating system or
!   both. The `Default` choice is the same as `Component_Size` (natural
    alignment).
  
! If the `Name` parameter is present, `type_LOCAL_NAME` must
  refer to a local record or array type, and the specified alignment
  choice applies to the specified type.  The use of
! `Component_Alignment` together with a pragma `Pack` causes the
! `Component_Alignment` pragma to be ignored.  The use of
! `Component_Alignment` together with a record representation clause
  is only effective for fields not specified by the representation clause.
  
! If the `Name` parameter is absent, the pragma can be used as either
  a configuration pragma, in which case it applies to one or more units in
  accordance with the normal rules for configuration pragmas, or it can be
  used within a declarative part, in which case it applies to types that
--- 1082,1106 ----
  *Storage_Unit*
    Specifies that array or record components are byte aligned, i.e.,
    aligned on boundaries determined by the value of the constant
!   ``System.Storage_Unit``.
  
    .. index:: Default (in pragma Component_Alignment)
  
  *Default*
    Specifies that array or record components are aligned on default
    boundaries, appropriate to the underlying hardware or operating system or
!   both. The ``Default`` choice is the same as ``Component_Size`` (natural
    alignment).
  
! If the ``Name`` parameter is present, ``type_LOCAL_NAME`` must
  refer to a local record or array type, and the specified alignment
  choice applies to the specified type.  The use of
! ``Component_Alignment`` together with a pragma ``Pack`` causes the
! ``Component_Alignment`` pragma to be ignored.  The use of
! ``Component_Alignment`` together with a record representation clause
  is only effective for fields not specified by the representation clause.
  
! If the ``Name`` parameter is absent, the pragma can be used as either
  a configuration pragma, in which case it applies to one or more units in
  accordance with the normal rules for configuration pragmas, or it can be
  used within a declarative part, in which case it applies to types that
*************** to be applied to any record or array typ
*** 1107,1113 ****
  representation.
  
  If the alignment for a record or array type is not specified (using
! pragma `Pack`, pragma `Component_Alignment`, or a record rep
  clause), the GNAT uses the default alignment as described previously.
  
  .. _Pragma-Constant_After_Elaboration:
--- 1110,1116 ----
  representation.
  
  If the alignment for a record or array type is not specified (using
! pragma ``Pack``, pragma ``Component_Alignment``, or a record rep
  clause), the GNAT uses the default alignment as described previously.
  
  .. _Pragma-Constant_After_Elaboration:
*************** Syntax:
*** 1122,1128 ****
    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.
  
  .. _Pragma-Contract_Cases:
  
--- 1125,1131 ----
    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.
  
  .. _Pragma-Contract_Cases:
  
*************** Syntax:
*** 1142,1150 ****
  
    CONSEQUENCE ::= boolean_EXPRESSION
  
! The `Contract_Cases` pragma allows defining fine-grain specifications
  that can complement or replace the contract given by a precondition and a
! postcondition. Additionally, the `Contract_Cases` pragma can be used
  by testing and formal verification tools. The compiler checks its validity and,
  depending on the assertion policy at the point of declaration of the pragma,
  it may insert a check in the executable. For code generation, the contract
--- 1145,1153 ----
  
    CONSEQUENCE ::= boolean_EXPRESSION
  
! The ``Contract_Cases`` pragma allows defining fine-grain specifications
  that can complement or replace the contract given by a precondition and a
! postcondition. Additionally, the ``Contract_Cases`` pragma can be used
  by testing and formal verification tools. The compiler checks its validity and,
  depending on the assertion policy at the point of declaration of the pragma,
  it may insert a check in the executable. For code generation, the contract
*************** The postcondition ensures that for the c
*** 1176,1182 ****
  the corrresponding consequence is True on exit. Other consequence expressions
  are not evaluated.
  
! A precondition `P` and postcondition `Q` can also be
  expressed as contract cases:
  
  .. code-block:: ada
--- 1179,1185 ----
  the corrresponding consequence is True on exit. Other consequence expressions
  are not evaluated.
  
! A precondition ``P`` and postcondition ``Q`` can also be
  expressed as contract cases:
  
  .. code-block:: ada
*************** expressed as contract cases:
*** 1184,1199 ****
    pragma Contract_Cases (P => Q);
  
  
! The placement and visibility rules for `Contract_Cases` pragmas are
  identical to those described for preconditions and postconditions.
  
  The compiler checks that boolean expressions given in conditions and
  consequences are valid, where the rules for conditions are the same as
! the rule for an expression in `Precondition` and the rules for
  consequences are the same as the rule for an expression in
! `Postcondition`. In particular, attributes `'Old` and
! `'Result` can only be used within consequence expressions.
! The condition for the last contract case may be `others`, to denote
  any case not captured by the previous cases. The
  following is an example of use within a package spec:
  
--- 1187,1202 ----
    pragma Contract_Cases (P => Q);
  
  
! The placement and visibility rules for ``Contract_Cases`` pragmas are
  identical to those described for preconditions and postconditions.
  
  The compiler checks that boolean expressions given in conditions and
  consequences are valid, where the rules for conditions are the same as
! the rule for an expression in ``Precondition`` and the rules for
  consequences are the same as the rule for an expression in
! ``Postcondition``. In particular, attributes ``'Old`` and
! ``'Result`` can only be used within consequence expressions.
! The condition for the last contract case may be ``others``, to denote
  any case not captured by the previous cases. The
  following is an example of use within a package spec:
  
*************** following is an example of use within a
*** 1203,1211 ****
    package Math_Functions is
       ...
       function Sqrt (Arg : Float) return Float;
!      pragma Contract_Cases ((Arg in 0 .. 99) => Sqrt'Result < 10,
!                             Arg >= 100       => Sqrt'Result >= 10,
!                             others           => Sqrt'Result = 0);
       ...
    end Math_Functions;
  
--- 1206,1214 ----
    package Math_Functions is
       ...
       function Sqrt (Arg : Float) return Float;
!      pragma Contract_Cases (((Arg in 0.0 .. 99.0) => Sqrt'Result < 10.0,
!                              Arg >= 100.0         => Sqrt'Result >= 10.0,
!                              others               => Sqrt'Result = 0.0));
       ...
    end Math_Functions;
  
*************** Syntax:
*** 1230,1238 ****
  
  
  This pragma provides a mechanism for supplying synonyms for existing
! convention identifiers. The `Name` identifier can subsequently
  be used as a synonym for the given convention in other pragmas (including
! for example pragma `Import` or another `Convention_Identifier`
  pragma). As an example of the use of this, suppose you had legacy code
  which used Fortran77 as the identifier for Fortran. Then the pragma:
  
--- 1233,1241 ----
  
  
  This pragma provides a mechanism for supplying synonyms for existing
! convention identifiers. The ``Name`` identifier can subsequently
  be used as a synonym for the given convention in other pragmas (including
! for example pragma ``Import`` or another ``Convention_Identifier``
  pragma). As an example of the use of this, suppose you had legacy code
  which used Fortran77 as the identifier for Fortran. Then the pragma:
  
*************** which used Fortran77 as the identifier f
*** 1242,1254 ****
    pragma Convention_Identifier (Fortran77, Fortran);
  
  
! would allow the use of the convention identifier `Fortran77` in
  subsequent code, avoiding the need to modify the sources. As another
  example, you could use this to parameterize convention requirements
! according to systems. Suppose you needed to use `Stdcall` on
! windows systems, and `C` on some other system, then you could
! define a convention identifier `Library` and use a single
! `Convention_Identifier` pragma to specify which convention
  would be used system-wide.
  
  Pragma CPP_Class
--- 1245,1257 ----
    pragma Convention_Identifier (Fortran77, Fortran);
  
  
! would allow the use of the convention identifier ``Fortran77`` in
  subsequent code, avoiding the need to modify the sources. As another
  example, you could use this to parameterize convention requirements
! according to systems. Suppose you needed to use ``Stdcall`` on
! windows systems, and ``C`` on some other system, then you could
! define a convention identifier ``Library`` and use a single
! ``Convention_Identifier`` pragma to specify which convention
  would be used system-wide.
  
  Pragma CPP_Class
*************** externally declared C++ class type, and
*** 1269,1286 ****
  that C++ would lay out the type. If the C++ class has virtual primitives
  then the record must be declared as a tagged record type.
  
! Types for which `CPP_Class` is specified do not have assignment or
  equality operators defined (such operations can be imported or declared
  as subprograms as required). Initialization is allowed only by constructor
! functions (see pragma `CPP_Constructor`). Such types are implicitly
  limited if not explicitly declared as limited or derived from a limited
  type, and an error is issued in that case.
  
  See :ref:`Interfacing_to_C++` for related information.
  
! Note: Pragma `CPP_Class` is currently obsolete. It is supported
  for backward compatibility but its functionality is available
! using pragma `Import` with `Convention` = `CPP`.
  
  Pragma CPP_Constructor
  ======================
--- 1272,1289 ----
  that C++ would lay out the type. If the C++ class has virtual primitives
  then the record must be declared as a tagged record type.
  
! Types for which ``CPP_Class`` is specified do not have assignment or
  equality operators defined (such operations can be imported or declared
  as subprograms as required). Initialization is allowed only by constructor
! functions (see pragma ``CPP_Constructor``). Such types are implicitly
  limited if not explicitly declared as limited or derived from a limited
  type, and an error is issued in that case.
  
  See :ref:`Interfacing_to_C++` for related information.
  
! Note: Pragma ``CPP_Class`` is currently obsolete. It is supported
  for backward compatibility but its functionality is available
! using pragma ``Import`` with ``Convention`` = ``CPP``.
  
  Pragma CPP_Constructor
  ======================
*************** Syntax:
*** 1298,1334 ****
  
  
  This pragma identifies an imported function (imported in the usual way
! with pragma `Import`) as corresponding to a C++ constructor. If
! `External_Name` and `Link_Name` are not specified then the
! `Entity` argument is a name that must have been previously mentioned
! in a pragma `Import` with `Convention` = `CPP`. Such name
  must be of one of the following forms:
  
  *
!   **function** `Fname` **return** T`
  
  *
!   **function** `Fname` **return** T'Class
  
  *
!   **function** `Fname` (...) **return** T`
  
  *
!   **function** `Fname` (...) **return** T'Class
  
! where `T` is a limited record type imported from C++ with pragma
! `Import` and `Convention` = `CPP`.
  
  The first two forms import the default constructor, used when an object
! of type `T` is created on the Ada side with no explicit constructor.
  The latter two forms cover all the non-default constructors of the type.
  See the GNAT User's Guide for details.
  
  If no constructors are imported, it is impossible to create any objects
  on the Ada side and the type is implicitly declared abstract.
  
! Pragma `CPP_Constructor` is intended primarily for automatic generation
! using an automatic binding generator tool (such as the `-fdump-ada-spec`
  GCC switch).
  See :ref:`Interfacing_to_C++` for more related information.
  
--- 1301,1337 ----
  
  
  This pragma identifies an imported function (imported in the usual way
! with pragma ``Import``) as corresponding to a C++ constructor. If
! ``External_Name`` and ``Link_Name`` are not specified then the
! ``Entity`` argument is a name that must have been previously mentioned
! in a pragma ``Import`` with ``Convention`` = ``CPP``. Such name
  must be of one of the following forms:
  
  *
!   **function** ``Fname`` **return** T`
  
  *
!   **function** ``Fname`` **return** T'Class
  
  *
!   **function** ``Fname`` (...) **return** T`
  
  *
!   **function** ``Fname`` (...) **return** T'Class
  
! where ``T`` is a limited record type imported from C++ with pragma
! ``Import`` and ``Convention`` = ``CPP``.
  
  The first two forms import the default constructor, used when an object
! of type ``T`` is created on the Ada side with no explicit constructor.
  The latter two forms cover all the non-default constructors of the type.
  See the GNAT User's Guide for details.
  
  If no constructors are imported, it is impossible to create any objects
  on the Ada side and the type is implicitly declared abstract.
  
! Pragma ``CPP_Constructor`` is intended primarily for automatic generation
! using an automatic binding generator tool (such as the :switch:`-fdump-ada-spec`
  GCC switch).
  See :ref:`Interfacing_to_C++` for more related information.
  
*************** This pragma is standard in Ada 2012, but
*** 1380,1385 ****
--- 1383,1403 ----
  versions of Ada as an implementation-defined pragma.
  See Ada 2012 Reference Manual for details.
  
+ Pragma Deadline_Floor
+ =====================
+ 
+ Syntax:
+ 
+ 
+ .. code-block:: ada
+ 
+   pragma Deadline_Floor (time_span_EXPRESSION);
+ 
+ 
+ This pragma applies only to protected types and specifies the floor
+ 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:
*** 1392,1398 ****
    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
  ============
--- 1410,1416 ----
    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
  ============
*************** If debug pragmas are not enabled or if t
*** 1416,1426 ****
  to False, this pragma has no effect. If debug pragmas are enabled, the
  semantics of the pragma is exactly equivalent to the procedure call statement
  corresponding to the argument with a terminating semicolon. Pragmas are
! permitted in sequences of declarations, so you can use pragma `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 `Check_Policy` with a first argument of
! `Debug`.
  
  Pragma Debug_Policy
  ===================
--- 1434,1444 ----
  to False, this pragma has no effect. If debug pragmas are enabled, the
  semantics of the pragma is exactly equivalent to the procedure call statement
  corresponding to the argument with a terminating semicolon. Pragmas are
! permitted in sequences of declarations, so you can use pragma ``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 ``Check_Policy`` with a first argument of
! ``Debug``.
  
  Pragma Debug_Policy
  ===================
*************** Syntax:
*** 1433,1440 ****
    pragma Debug_Policy (CHECK | DISABLE | IGNORE | ON | OFF);
  
  
! This pragma is equivalent to a corresponding `Check_Policy` pragma
! with a first argument of `Debug`. It is retained for historical
  compatibility reasons.
  
  Pragma Default_Scalar_Storage_Order
--- 1451,1458 ----
    pragma Debug_Policy (CHECK | DISABLE | IGNORE | ON | OFF);
  
  
! This pragma is equivalent to a corresponding ``Check_Policy`` pragma
! with a first argument of ``Debug``. It is retained for historical
  compatibility reasons.
  
  Pragma Default_Scalar_Storage_Order
*************** Syntax:
*** 1452,1458 ****
    pragma Default_Scalar_Storage_Order (High_Order_First | Low_Order_First);
  
  
! Normally if no explicit `Scalar_Storage_Order` is given for a record
  type or array type, then the scalar storage order defaults to the ordinary
  default for the target. But this default may be overridden using this pragma.
  The pragma may appear as a configuration pragma, or locally within a package
--- 1470,1476 ----
    pragma Default_Scalar_Storage_Order (High_Order_First | Low_Order_First);
  
  
! Normally if no explicit ``Scalar_Storage_Order`` is given for a record
  type or array type, then the scalar storage order defaults to the ordinary
  default for the target. But this default may be overridden using this pragma.
  The pragma may appear as a configuration pragma, or locally within a package
*************** The following example shows the use of t
*** 1498,1507 ****
    end DSSO1;
  
  
! In this example record types L.. have `Low_Order_First` scalar
! storage order, and record types H.. have `High_Order_First`.
! Note that in the case of `H4a`, the order is not inherited
! from the parent type. Only an explicitly set `Scalar_Storage_Order`
  gets inherited on type derivation.
  
  If this pragma is used as a configuration pragma which appears within a
--- 1516,1525 ----
    end DSSO1;
  
  
! In this example record types with names starting with *L* have `Low_Order_First` scalar
! storage order, and record types with names starting with *H* have ``High_Order_First``.
! Note that in the case of ``H4a``, the order is not inherited
! from the parent type. Only an explicitly set ``Scalar_Storage_Order``
  gets inherited on type derivation.
  
  If this pragma is used as a configuration pragma which appears within a
*************** Syntax:
*** 1559,1565 ****
  
    where FUNCTION_RESULT is a function Result attribute_reference
  
! For the semantics of this pragma, see the entry for aspect `Depends` in the
  SPARK 2014 Reference Manual, section 6.1.5.
  
  Pragma Detect_Blocking
--- 1577,1583 ----
  
    where FUNCTION_RESULT is a function Result attribute_reference
  
! For the semantics of this pragma, see the entry for aspect ``Depends`` in the
  SPARK 2014 Reference Manual, section 6.1.5.
  
  Pragma Detect_Blocking
*************** be turned off using this pragma in cases
*** 1599,1607 ****
  required.
  
  The placement and scope rules for this pragma are the same as those
! for `pragma Suppress`. In particular it can be used as a
  configuration  pragma, or in a declaration sequence where it applies
! till the end of the scope. If an `Entity` argument is present,
  the action applies only to that entity.
  
  Pragma Dispatching_Domain
--- 1617,1625 ----
  required.
  
  The placement and scope rules for this pragma are the same as those
! for ``pragma Suppress``. In particular it can be used as a
  configuration  pragma, or in a declaration sequence where it applies
! till the end of the scope. If an ``Entity`` argument is present,
  the action applies only to that entity.
  
  Pragma Dispatching_Domain
*************** Syntax:
*** 1628,1636 ****
  
  .. 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.
  
  .. _Pragma-Effective_Writes:
--- 1646,1654 ----
  
  .. 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.
  
  .. _Pragma-Effective_Writes:
*************** Syntax:
*** 1644,1650 ****
  
    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.
  
  Pragma Elaboration_Checks
--- 1662,1668 ----
  
    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.
  
  Pragma Elaboration_Checks
*************** Syntax:
*** 1662,1677 ****
  
  This is a configuration pragma that provides control over the
  elaboration model used by the compilation affected by the
! pragma.  If the parameter is `Dynamic`,
  then the dynamic elaboration
  model described in the Ada Reference Manual is used, as though
  the *-gnatE* switch had been specified on the command
! line.  If the parameter is `Static`, then the default GNAT static
  model is used.  This configuration pragma overrides the setting
  of the command line.  For full details on the elaboration models
  used by the GNAT compiler, see the chapter on elaboration order handling
  in the *GNAT User's Guide*.
  
  Pragma Eliminate
  ================
  .. index:: Elimination of unused subprograms
--- 1680,1696 ----
  
  This is a configuration pragma that provides control over the
  elaboration model used by the compilation affected by the
! pragma.  If the parameter is ``Dynamic``,
  then the dynamic elaboration
  model described in the Ada Reference Manual is used, as though
  the *-gnatE* switch had been specified on the command
! line.  If the parameter is ``Static``, then the default GNAT static
  model is used.  This configuration pragma overrides the setting
  of the command line.  For full details on the elaboration models
  used by the GNAT compiler, see the chapter on elaboration order handling
  in the *GNAT User's Guide*.
  
+ 
  Pragma Eliminate
  ================
  .. index:: Elimination of unused subprograms
*************** Syntax:
*** 1682,1757 ****
  
  ::
  
!   pragma Eliminate ([Entity          =>] DEFINING_DESIGNATOR,
!                     [Source_Location =>] STRING_LITERAL);
! 
! 
! The string literal given for the source location is a string which
! specifies the line number of the occurrence of the entity, using
! the syntax for SOURCE_TRACE given below:
  
  
- ::
  
!    SOURCE_TRACE     ::= SOURCE_REFERENCE [LBRACKET SOURCE_TRACE RBRACKET]
  
!    LBRACKET         ::= [
!    RBRACKET         ::= ]
  
!    SOURCE_REFERENCE ::= FILE_NAME : LINE_NUMBER
  
!    LINE_NUMBER      ::= DIGIT {DIGIT}
  
  
! Spaces around the colon in a `Source_Reference` are optional.
  
! The `DEFINING_DESIGNATOR` matches the defining designator used in an
! explicit subprogram declaration, where the `entity` name in this
! designator appears on the source line specified by the source location.
  
! The source trace that is given as the `Source_Location` shall obey the
! following rules. The `FILE_NAME` is the short name (with no directory
! information) of an Ada source file, given using exactly the required syntax
! for the underlying file system (e.g. case is important if the underlying
! operating system is case sensitive). `LINE_NUMBER` gives the line
! number of the occurrence of the `entity`
! as a decimal literal without an exponent or point. If an `entity` is not
! declared in a generic instantiation (this includes generic subprogram
! instances), the source trace includes only one source reference. If an entity
! is declared inside a generic instantiation, its source trace (when parsing
! from left to right) starts with the source location of the declaration of the
! entity in the generic unit and ends with the source location of the
! instantiation (it is given in square brackets). This approach is recursively
! used in case of nested instantiations: the rightmost (nested most deeply in
! square brackets) element of the source trace is the location of the outermost
! instantiation, the next to left element is the location of the next (first
! nested) instantiation in the code of the corresponding generic unit, and so
! on, and the leftmost element (that is out of any square brackets) is the
! location of the declaration of the entity to eliminate in a generic unit.
  
! Note that the `Source_Location` argument specifies which of a set of
! similarly named entities is being eliminated, dealing both with overloading,
! and also appearance of the same entity name in different scopes.
  
! This pragma indicates that the given entity is not used in the program to be
! compiled and built. The effect of the pragma is to allow the compiler to
! eliminate the code or data associated with the named entity. Any reference to
! an eliminated entity causes a compile-time or link-time error.
  
! The intention of pragma `Eliminate` is to allow a program to be compiled
! in a system-independent manner, with unused entities eliminated, without
  needing to modify the source text. Normally the required set of
! `Eliminate` pragmas is constructed automatically using the gnatelim tool.
  
  Any source file change that removes, splits, or
! adds lines may make the set of Eliminate pragmas invalid because their
! `Source_Location` argument values may get out of date.
  
! Pragma `Eliminate` may be used where the referenced entity is a dispatching
  operation. In this case all the subprograms to which the given operation can
  dispatch are considered to be unused (are never called as a result of a direct
  or a dispatching call).
  
  Pragma Enable_Atomic_Synchronization
  ====================================
  .. index:: Atomic Synchronization
--- 1701,1841 ----
  
  ::
  
!    pragma Eliminate (
!                [  Unit_Name       => ] IDENTIFIER | SELECTED_COMPONENT ,
!                [  Entity          => ] IDENTIFIER |
!                                        SELECTED_COMPONENT |
!                                        STRING_LITERAL
!                [, Source_Location =>   SOURCE_TRACE ] );
  
+            SOURCE_TRACE    ::= STRING_LITERAL
  
  
! This pragma indicates that the given entity is not used in the program to be
! compiled and built, thus allowing the compiler to
! eliminate the code or data associated with the named entity. Any reference to
! an eliminated entity causes a compile-time or link-time error.
  
! The pragma has the following semantics, where ``U`` is the unit specified by
! 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
  needing to modify the source text. Normally the required set of
! ``Eliminate`` pragmas is constructed automatically using the ``gnatelim`` tool.
  
  Any source file change that removes, splits, or
! adds lines may make the set of ``Eliminate`` pragmas invalid because their
! ``Source_Location`` argument values may get out of date.
  
! Pragma ``Eliminate`` may be used where the referenced entity is a dispatching
  operation. In this case all the subprograms to which the given operation can
  dispatch are considered to be unused (are never called as a result of a direct
  or a dispatching call).
  
+ The string literal given for the source location specifies the line number
+ of the declaration of the entity, using the following syntax for ``SOURCE_TRACE``:
+ 
+ ::
+ 
+    SOURCE_TRACE     ::= SOURCE_REFERENCE [ LBRACKET SOURCE_TRACE RBRACKET ]
+ 
+    LBRACKET         ::= '['
+    RBRACKET         ::= ']'
+ 
+    SOURCE_REFERENCE ::= FILE_NAME : LINE_NUMBER
+ 
+    LINE_NUMBER      ::= DIGIT {DIGIT}
+ 
+ 
+ Spaces around the colon in a ``SOURCE_REFERENCE`` are optional.
+ 
+ The source trace that is given as the ``Source_Location`` must obey the
+ following rules (or else the pragma is ignored), where ``U`` is
+ the unit ``U`` specified by the ``Unit_Name`` argument and ``E`` is the
+ subprogram specified by the ``Entity`` argument:
+ 
+ *  ``FILE_NAME`` is the short name (with no directory
+    information) of the Ada source file for ``U``, using the required syntax
+    for the underlying file system (e.g. case is significant if the underlying
+    operating system is case sensitive).
+    If ``U`` is a package and ``E`` is a subprogram declared in the package
+    specification and its full declaration appears in the package body,
+    then the  relevant source file is the one for the package specification;
+    analogously if ``U`` is a generic package.
+ 
+ *  If ``E`` is not declared in a generic instantiation (this includes
+    generic subprogram instances), the source trace includes only one source
+    line reference. ``LINE_NUMBER`` gives the line number of the occurrence
+    of the declaration of ``E`` within the source file (as a decimal literal
+    without an exponent or point).
+ 
+ *  If ``E`` is declared by a generic instantiation, its source trace
+    (from left to right) starts with the source location of the
+    declaration of ``E`` in the generic unit and ends with the source
+    location of the instantiation, given in square brackets. This approach is
+    applied recursively with nested instantiations: the rightmost (nested
+    most deeply in square brackets) element of the source trace is the location
+    of the outermost instantiation, and the leftmost element (that is, outside
+    of any square brackets) is the location of the declaration of ``E`` in
+    the generic unit.
+ 
+ Examples:
+ 
+    .. code-block:: ada
+ 
+       pragma Eliminate (Pkg0, Proc);
+       -- Eliminate (all overloadings of) Proc in Pkg0
+ 
+       pragma Eliminate (Pkg1, Proc,
+                         Source_Location => "pkg1.ads:8");
+       -- Eliminate overloading of Proc at line 8 in pkg1.ads
+ 
+       -- Assume the following file contents:
+       --   gen_pkg.ads
+       --   1: generic
+       --   2:   type T is private;
+       --   3: package Gen_Pkg is
+       --   4:   procedure Proc(N : T);
+       --  ...   ...
+       --  ... end Gen_Pkg;
+       --
+       --    q.adb
+       --   1: with Gen_Pkg;
+       --   2: procedure Q is
+       --   3:   package Inst_Pkg is new Gen_Pkg(Integer);
+       --  ...   -- No calls on Inst_Pkg.Proc
+       --  ... end Q;
+ 
+       -- The following pragma eliminates Inst_Pkg.Proc from Q
+       pragma Eliminate (Q, Proc,
+                         Source_Location => "gen_pkg.ads:4[q.adb:3]");
+ 
+ 
+ 
  Pragma Enable_Atomic_Synchronization
  ====================================
  .. index:: Atomic Synchronization
*************** regarded as synchronization points in th
*** 1770,1783 ****
  Particularly in the case of multi-processors this may require special
  handling, e.g. the generation of memory barriers. This synchronization
  is performed by default, but can be turned off using
! `pragma Disable_Atomic_Synchronization`. The
! `Enable_Atomic_Synchronization` pragma can be used to turn
  it back on.
  
  The placement and scope rules for this pragma are the same as those
! for `pragma Unsuppress`. In particular it can be used as a
  configuration  pragma, or in a declaration sequence where it applies
! till the end of the scope. If an `Entity` argument is present,
  the action applies only to that entity.
  
  Pragma Export_Function
--- 1854,1867 ----
  Particularly in the case of multi-processors this may require special
  handling, e.g. the generation of memory barriers. This synchronization
  is performed by default, but can be turned off using
! ``pragma Disable_Atomic_Synchronization``. The
! ``Enable_Atomic_Synchronization`` pragma can be used to turn
  it back on.
  
  The placement and scope rules for this pragma are the same as those
! for ``pragma Unsuppress``. In particular it can be used as a
  configuration  pragma, or in a declaration sequence where it applies
! till the end of the scope. If an ``Entity`` argument is present,
  the action applies only to that entity.
  
  Pragma Export_Function
*************** Use this pragma to make a function exter
*** 1825,1848 ****
  provide information on mechanisms to be used for passing parameter and
  result values.  We recommend, for the purposes of improving portability,
  this pragma always be used in conjunction with a separate pragma
! `Export`, which must precede the pragma `Export_Function`.
! GNAT does not require a separate pragma `Export`, but if none is
! present, `Convention Ada` is assumed, which is usually
  not what is wanted, so it is usually appropriate to use this
! pragma in conjunction with a `Export` or `Convention`
  pragma that specifies the desired foreign convention.
! Pragma `Export_Function`
! (and `Export`, if present) must appear in the same declarative
  region as the function to which they apply.
  
! `internal_name` must uniquely designate the function to which the
  pragma applies.  If more than one function name exists of this name in
! the declarative part you must use the `Parameter_Types` and
! `Result_Type` parameters is mandatory to achieve the required
! unique designation.  `subtype_mark`s in these parameters must
  exactly match the subtypes in the corresponding function specification,
  using positional notation to match parameters with subtype marks.
! The form with an `'Access` attribute can be used to match an
  anonymous access parameter.
  
  .. index:: Suppressing external name
--- 1909,1932 ----
  provide information on mechanisms to be used for passing parameter and
  result values.  We recommend, for the purposes of improving portability,
  this pragma always be used in conjunction with a separate pragma
! ``Export``, which must precede the pragma ``Export_Function``.
! GNAT does not require a separate pragma ``Export``, but if none is
! present, ``Convention Ada`` is assumed, which is usually
  not what is wanted, so it is usually appropriate to use this
! pragma in conjunction with a ``Export`` or ``Convention``
  pragma that specifies the desired foreign convention.
! Pragma ``Export_Function``
! (and ``Export``, if present) must appear in the same declarative
  region as the function to which they apply.
  
! The ``internal_name`` must uniquely designate the function to which the
  pragma applies.  If more than one function name exists of this name in
! the declarative part you must use the ``Parameter_Types`` and
! ``Result_Type`` parameters to achieve the required
! unique designation.  The `subtype_mark`\ s in these parameters must
  exactly match the subtypes in the corresponding function specification,
  using positional notation to match parameters with subtype marks.
! The form with an ``'Access`` attribute can be used to match an
  anonymous access parameter.
  
  .. index:: Suppressing external name
*************** Syntax:
*** 1872,1880 ****
  
  This pragma designates an object as exported, and apart from the
  extended rules for external symbols, is identical in effect to the use of
! the normal `Export` pragma applied to an object.  You may use a
  separate Export pragma (and you probably should from the point of view
! of portability), but it is not required.  `Size` is syntax checked,
  but otherwise ignored by GNAT.
  
  Pragma Export_Procedure
--- 1956,1964 ----
  
  This pragma designates an object as exported, and apart from the
  extended rules for external symbols, is identical in effect to the use of
! the normal ``Export`` pragma applied to an object.  You may use a
  separate Export pragma (and you probably should from the point of view
! of portability), but it is not required.  ``Size`` is syntax checked,
  but otherwise ignored by GNAT.
  
  Pragma Export_Procedure
*************** Syntax:
*** 1914,1926 ****
    MECHANISM_NAME ::= Value | Reference
  
  
! This pragma is identical to `Export_Function` except that it
  applies to a procedure rather than a function and the parameters
! `Result_Type` and `Result_Mechanism` are not permitted.
! GNAT does not require a separate pragma `Export`, but if none is
! present, `Convention Ada` is assumed, which is usually
  not what is wanted, so it is usually appropriate to use this
! pragma in conjunction with a `Export` or `Convention`
  pragma that specifies the desired foreign convention.
  
  .. index:: Suppressing external name
--- 1998,2010 ----
    MECHANISM_NAME ::= Value | Reference
  
  
! This pragma is identical to ``Export_Function`` except that it
  applies to a procedure rather than a function and the parameters
! ``Result_Type`` and ``Result_Mechanism`` are not permitted.
! GNAT does not require a separate pragma ``Export``, but if none is
! present, ``Convention Ada`` is assumed, which is usually
  not what is wanted, so it is usually appropriate to use this
! pragma in conjunction with a ``Export`` or ``Convention``
  pragma that specifies the desired foreign convention.
  
  .. index:: Suppressing external name
*************** Syntax:
*** 1988,2005 ****
    MECHANISM_NAME ::= Value | Reference
  
  
! This pragma is identical to `Export_Procedure` except that the
! first parameter of `LOCAL_NAME`, which must be present, must be of
! mode `OUT`, and externally the subprogram is treated as a function
  with this parameter as the result of the function.  GNAT provides for
! this capability to allow the use of `OUT` and `IN OUT`
  parameters in interfacing to external functions (which are not permitted
  in Ada functions).
! GNAT does not require a separate pragma `Export`, but if none is
! present, `Convention Ada` is assumed, which is almost certainly
  not what is wanted since the whole point of this pragma is to interface
  with foreign language functions, so it is usually appropriate to use this
! pragma in conjunction with a `Export` or `Convention`
  pragma that specifies the desired foreign convention.
  
  .. index:: Suppressing external name
--- 2072,2089 ----
    MECHANISM_NAME ::= Value | Reference
  
  
! This pragma is identical to ``Export_Procedure`` except that the
! first parameter of ``LOCAL_NAME``, which must be present, must be of
! mode ``out``, and externally the subprogram is treated as a function
  with this parameter as the result of the function.  GNAT provides for
! this capability to allow the use of ``out`` and ``in out``
  parameters in interfacing to external functions (which are not permitted
  in Ada functions).
! GNAT does not require a separate pragma ``Export``, but if none is
! present, ``Convention Ada`` is assumed, which is almost certainly
  not what is wanted since the whole point of this pragma is to interface
  with foreign language functions, so it is usually appropriate to use this
! pragma in conjunction with a ``Export`` or ``Convention``
  pragma that specifies the desired foreign convention.
  
  .. index:: Suppressing external name
*************** Syntax:
*** 2025,2059 ****
  
  
  This pragma is used to provide backwards compatibility with other
! implementations that extend the facilities of package `System`.  In
! GNAT, `System` contains only the definitions that are present in
  the Ada RM.  However, other implementations, notably the DEC Ada 83
! implementation, provide many extensions to package `System`.
  
  For each such implementation accommodated by this pragma, GNAT provides a
! package `Aux_`xxx``, e.g., `Aux_DEC` for the DEC Ada 83
  implementation, which provides the required additional definitions.  You
! can use this package in two ways.  You can `with` it in the normal
! way and access entities either by selection or using a `use`
  clause.  In this case no special processing is required.
  
  However, if existing code contains references such as
! `System.`xxx`` where `xxx` is an entity in the extended
! definitions provided in package `System`, you may use this pragma
! to extend visibility in `System` in a non-standard way that
  provides greater compatibility with the existing code.  Pragma
! `Extend_System` is a configuration pragma whose single argument is
  the name of the package containing the extended definition
! (e.g., `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 `System.Aux_`xxx`` where
! `Aux_`xxx`` is the pragma argument for any entity referenced in
! package `System`, but not found in package `System`.
  
! You can use this pragma either to access a predefined `System`
! extension supplied with the compiler, for example `Aux_DEC` or
  you can construct your own extension unit following the above
! definition.  Note that such a package is a child of `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
--- 2109,2143 ----
  
  
  This pragma is used to provide backwards compatibility with other
! implementations that extend the facilities of package ``System``.  In
! GNAT, ``System`` contains only the definitions that are present in
  the Ada RM.  However, other implementations, notably the DEC Ada 83
! implementation, provide many extensions to package ``System``.
  
  For each such implementation accommodated by this pragma, GNAT provides a
! package :samp:`Aux_{xxx}`, e.g., ``Aux_DEC`` for the DEC Ada 83
  implementation, which provides the required additional definitions.  You
! can use this package in two ways.  You can ``with`` it in the normal
! way and access entities either by selection or using a ``use``
  clause.  In this case no special processing is required.
  
  However, if existing code contains references such as
! :samp:`System.{xxx}` where *xxx* is an entity in the extended
! definitions provided in package ``System``, you may use this pragma
! to extend visibility in ``System`` in a non-standard way that
  provides greater compatibility with the existing code.  Pragma
! ``Extend_System`` is a configuration pragma whose single argument is
  the name of the package containing the extended definition
! (e.g., ``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 :samp:`System.Aux_{xxx}` where
! :samp:`Aux_{xxx}` is the pragma argument for any entity referenced in
! package ``System``, but not found in package ``System``.
  
! You can use this pragma either to access a predefined ``System``
! extension supplied with the compiler, for example ``Aux_DEC`` or
  you can construct your own extension unit following the above
! definition.  Note that such a package is a child of ``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
*************** of GNAT specific extensions are recogniz
*** 2084,2090 ****
  
  
  *Constrained attribute for generic objects*
!   The `Constrained` attribute is permitted for objects of
    generic types. The result indicates if the corresponding actual
    is constrained.
  
--- 2168,2174 ----
  
  
  *Constrained attribute for generic objects*
!   The ``Constrained`` attribute is permitted for objects of
    generic types. The result indicates if the corresponding actual
    is constrained.
  
*************** Syntax:
*** 2099,2105 ****
  
    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.
  
  Pragma External
--- 2183,2189 ----
  
    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.
  
  Pragma External
*************** Syntax:
*** 2118,2127 ****
  
  
  This pragma is identical in syntax and semantics to pragma
! `Export` as defined in the Ada Reference Manual.  It is
  provided for compatibility with some Ada 83 compilers that
  used this pragma for exactly the same purposes as pragma
! `Export` before the latter was standardized.
  
  Pragma External_Name_Casing
  ===========================
--- 2202,2211 ----
  
  
  This pragma is identical in syntax and semantics to pragma
! ``Export`` as defined in the Ada Reference Manual.  It is
  provided for compatibility with some Ada 83 compilers that
  used this pragma for exactly the same purposes as pragma
! ``Export`` before the latter was standardized.
  
  Pragma External_Name_Casing
  ===========================
*************** with Import and Export pragmas.  There a
*** 2162,2170 ****
    casing of the external name, and so a convention is needed.  In GNAT the
    default treatment is that such names are converted to all lower case
    letters.  This corresponds to the normal C style in many environments.
!   The first argument of pragma `External_Name_Casing` can be used to
!   control this treatment.  If `Uppercase` is specified, then the name
!   will be forced to all uppercase letters.  If `Lowercase` is specified,
    then the normal default of all lower case letters will be used.
  
    This same implicit treatment is also used in the case of extended DEC Ada 83
--- 2246,2254 ----
    casing of the external name, and so a convention is needed.  In GNAT the
    default treatment is that such names are converted to all lower case
    letters.  This corresponds to the normal C style in many environments.
!   The first argument of pragma ``External_Name_Casing`` can be used to
!   control this treatment.  If ``Uppercase`` is specified, then the name
!   will be forced to all uppercase letters.  If ``Lowercase`` is specified,
    then the normal default of all lower case letters will be used.
  
    This same implicit treatment is also used in the case of extended DEC Ada 83
*************** with Import and Export pragmas.  There a
*** 2184,2194 ****
  
    In this case, the string literal normally provides the exact casing required
    for the external name.  The second argument of pragma
!   `External_Name_Casing` may be used to modify this behavior.
!   If `Uppercase` is specified, then the name
!   will be forced to all uppercase letters.  If `Lowercase` is specified,
    then the name will be forced to all lowercase letters.  A specification of
!   `As_Is` provides the normal default behavior in which the casing is
    taken from the string provided.
  
  This pragma may appear anywhere that a pragma is valid.  In particular, it
--- 2268,2278 ----
  
    In this case, the string literal normally provides the exact casing required
    for the external name.  The second argument of pragma
!   ``External_Name_Casing`` may be used to modify this behavior.
!   If ``Uppercase`` is specified, then the name
!   will be forced to all uppercase letters.  If ``Lowercase`` is specified,
    then the name will be forced to all lowercase letters.  A specification of
!   ``As_Is`` provides the normal default behavior in which the casing is
    taken from the string provided.
  
  This pragma may appear anywhere that a pragma is valid.  In particular, it
*************** following operations are affected:
*** 2232,2238 ****
    overflows for numbers near the end of the range. The Ada standard requires that
    this situation be detected and corrected by scaling, but in Fast_Math mode such
    cases will simply result in overflow. Note that to take advantage of this you
!   must instantiate your own version of `Ada.Numerics.Generic_Complex_Types`
    under control of the pragma, rather than use the preinstantiated versions.
  
  .. _Pragma-Favor_Top_Level:
--- 2316,2322 ----
    overflows for numbers near the end of the range. The Ada standard requires that
    this situation be detected and corrected by scaling, but in Fast_Math mode such
    cases will simply result in overflow. Note that to take advantage of this you
!   must instantiate your own version of ``Ada.Numerics.Generic_Complex_Types``
    under control of the pragma, rather than use the preinstantiated versions.
  
  .. _Pragma-Favor_Top_Level:
*************** Syntax:
*** 2248,2261 ****
    pragma Favor_Top_Level (type_NAME);
  
  
! The named type must be an access-to-subprogram type. This pragma is an
! efficiency hint to the compiler, regarding the use of 'Access or
! 'Unrestricted_Access on nested (non-library-level) subprograms. The
! pragma means that nested subprograms are not used with this type, or
! are rare, so that the generated code should be efficient in the
! top-level case. When this pragma is used, dynamically generated
! trampolines may be used on some targets for nested subprograms.
! See also the No_Implicit_Dynamic_Code restriction.
  
  Pragma Finalize_Storage_Only
  ============================
--- 2332,2344 ----
    pragma Favor_Top_Level (type_NAME);
  
  
! The argument of pragma ``Favor_Top_Level`` must be a named access-to-subprogram
! type. This pragma is an efficiency hint to the compiler, regarding the use of
! ``'Access`` or ``'Unrestricted_Access`` on nested (non-library-level) subprograms.
! The pragma means that nested subprograms are not used with this type, or are
! rare, so that the generated code should be efficient in the top-level case.
! When this pragma is used, dynamically generated trampolines may be used on some
! targets for nested subprograms. See restriction ``No_Implicit_Dynamic_Code``.
  
  Pragma Finalize_Storage_Only
  ============================
*************** Syntax:
*** 2268,2278 ****
    pragma Finalize_Storage_Only (first_subtype_LOCAL_NAME);
  
  
! This pragma allows the compiler not to emit a Finalize call for objects
! defined at the library level.  This is mostly useful for types where
! finalization is only used to deal with storage reclamation since in most
! environments it is not necessary to reclaim memory just before terminating
! execution, hence the name.
  
  Pragma Float_Representation
  ===========================
--- 2351,2364 ----
    pragma Finalize_Storage_Only (first_subtype_LOCAL_NAME);
  
  
! The argument of pragma ``Finalize_Storage_Only`` must denote a local type which
! is derived from ``Ada.Finalization.Controlled`` or ``Limited_Controlled``. The
! pragma suppresses the call to ``Finalize`` for declared library-level objects
! of the argument type. This is mostly useful for types where finalization is
! only used to deal with storage reclamation since in most environments it is
! not necessary to reclaim memory just before terminating execution, hence the
! name. Note that this pragma does not suppress Finalize calls for library-level
! heap-allocated objects (see pragma ``No_Heap_Finalization``).
  
  Pragma Float_Representation
  ===========================
*************** Syntax::
*** 2286,2297 ****
  
  In the one argument form, this pragma is a configuration pragma which
  allows control over the internal representation chosen for the predefined
! floating point types declared in the packages `Standard` and
! `System`. This pragma is only provided for compatibility and has no effect.
  
  The two argument form specifies the representation to be used for
  the specified floating-point type. The argument must
! be `IEEE_Float` to specify the use of IEEE format, as follows:
  
  *
    For a digits value of 6, 32-bit IEEE short format will be used.
--- 2372,2383 ----
  
  In the one argument form, this pragma is a configuration pragma which
  allows control over the internal representation chosen for the predefined
! floating point types declared in the packages ``Standard`` and
! ``System``. This pragma is only provided for compatibility and has no effect.
  
  The two argument form specifies the representation to be used for
  the specified floating-point type. The argument must
! be ``IEEE_Float`` to specify the use of IEEE format, as follows:
  
  *
    For a digits value of 6, 32-bit IEEE short format will be used.
*************** Syntax:
*** 2311,2317 ****
  
    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.
  
  .. _Pragma-Global:
--- 2397,2403 ----
  
    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.
  
  .. _Pragma-Global:
*************** Syntax:
*** 2336,2342 ****
    GLOBAL_LIST   ::= GLOBAL_ITEM | (GLOBAL_ITEM {, GLOBAL_ITEM})
    GLOBAL_ITEM   ::= NAME
  
! For the semantics of this pragma, see the entry for aspect `Global` in the
  SPARK 2014 Reference Manual, section 6.1.4.
  
  Pragma Ident
--- 2422,2428 ----
    GLOBAL_LIST   ::= GLOBAL_ITEM | (GLOBAL_ITEM {, GLOBAL_ITEM})
    GLOBAL_ITEM   ::= NAME
  
! For the semantics of this pragma, see the entry for aspect ``Global`` in the
  SPARK 2014 Reference Manual, section 6.1.4.
  
  Pragma Ident
*************** Syntax:
*** 2350,2356 ****
    pragma Ident (static_string_EXPRESSION);
  
  
! This pragma is identical in effect to pragma `Comment`. It is provided
  for compatibility with other Ada compilers providing this pragma.
  
  Pragma Ignore_Pragma
--- 2436,2442 ----
    pragma Ident (static_string_EXPRESSION);
  
  
! This pragma is identical in effect to pragma ``Comment``. It is provided
  for compatibility with other Ada compilers providing this pragma.
  
  Pragma Ignore_Pragma
*************** that takes a single argument that is a s
*** 2368,2375 ****
  use of a pragma whose pragma identifier matches this argument will be
  silently ignored. This may be useful when legacy code or code intended
  for compilation with some other compiler contains pragmas that match the
! name, but not the exact implementation, of a `GNAT` pragma. The use of this
! pragma allows such pragmas to be ignored, which may be useful in `CodePeer`
  mode, or during porting of legacy code.
  
  Pragma Implementation_Defined
--- 2454,2461 ----
  use of a pragma whose pragma identifier matches this argument will be
  silently ignored. This may be useful when legacy code or code intended
  for compilation with some other compiler contains pragmas that match the
! name, but not the exact implementation, of a GNAT pragma. The use of this
! pragma allows such pragmas to be ignored, which may be useful in CodePeer
  mode, or during porting of legacy code.
  
  Pragma Implementation_Defined
*************** Syntax:
*** 2546,2569 ****
    | Reference
  
  
! This pragma is used in conjunction with a pragma `Import` to
  specify additional information for an imported function.  The pragma
! `Import` (or equivalent pragma `Interface`) must precede the
! `Import_Function` pragma and both must appear in the same
  declarative part as the function specification.
  
! The `Internal` argument must uniquely designate
  the function to which the
  pragma applies.  If more than one function name exists of this name in
! the declarative part you must use the `Parameter_Types` and
! `Result_Type` parameters to achieve the required unique
  designation.  Subtype marks in these parameters must exactly match the
  subtypes in the corresponding function specification, using positional
  notation to match parameters with subtype marks.
! The form with an `'Access` attribute can be used to match an
  anonymous access parameter.
  
! You may optionally use the `Mechanism` and `Result_Mechanism`
  parameters to specify passing mechanisms for the
  parameters and result.  If you specify a single mechanism name, it
  applies to all parameters.  Otherwise you may specify a mechanism on a
--- 2632,2655 ----
    | Reference
  
  
! This pragma is used in conjunction with a pragma ``Import`` to
  specify additional information for an imported function.  The pragma
! ``Import`` (or equivalent pragma ``Interface``) must precede the
! ``Import_Function`` pragma and both must appear in the same
  declarative part as the function specification.
  
! The ``Internal`` argument must uniquely designate
  the function to which the
  pragma applies.  If more than one function name exists of this name in
! the declarative part you must use the ``Parameter_Types`` and
! ``Result_Type`` parameters to achieve the required unique
  designation.  Subtype marks in these parameters must exactly match the
  subtypes in the corresponding function specification, using positional
  notation to match parameters with subtype marks.
! The form with an ``'Access`` attribute can be used to match an
  anonymous access parameter.
  
! You may optionally use the ``Mechanism`` and ``Result_Mechanism``
  parameters to specify passing mechanisms for the
  parameters and result.  If you specify a single mechanism name, it
  applies to all parameters.  Otherwise you may specify a mechanism on a
*************** Syntax:
*** 2591,2600 ****
  
  This pragma designates an object as imported, and apart from the
  extended rules for external symbols, is identical in effect to the use of
! the normal `Import` pragma applied to an object.  Unlike the
! subprogram case, you need not use a separate `Import` pragma,
  although you may do so (and probably should do so from a portability
! point of view).  `size` is syntax checked, but otherwise ignored by
  GNAT.
  
  Pragma Import_Procedure
--- 2677,2686 ----
  
  This pragma designates an object as imported, and apart from the
  extended rules for external symbols, is identical in effect to the use of
! the normal ``Import`` pragma applied to an object.  Unlike the
! subprogram case, you need not use a separate ``Import`` pragma,
  although you may do so (and probably should do so from a portability
! point of view).  ``size`` is syntax checked, but otherwise ignored by
  GNAT.
  
  Pragma Import_Procedure
*************** Syntax:
*** 2633,2641 ****
    MECHANISM_NAME ::= Value | Reference
  
  
! This pragma is identical to `Import_Function` except that it
  applies to a procedure rather than a function and the parameters
! `Result_Type` and `Result_Mechanism` are not permitted.
  
  Pragma Import_Valued_Procedure
  ==============================
--- 2719,2727 ----
    MECHANISM_NAME ::= Value | Reference
  
  
! This pragma is identical to ``Import_Function`` except that it
  applies to a procedure rather than a function and the parameters
! ``Result_Type`` and ``Result_Mechanism`` are not permitted.
  
  Pragma Import_Valued_Procedure
  ==============================
*************** Syntax:
*** 2673,2685 ****
    MECHANISM_NAME ::= Value | Reference
  
  
! This pragma is identical to `Import_Procedure` except that the
! first parameter of `LOCAL_NAME`, which must be present, must be of
! mode `OUT`, and externally the subprogram is treated as a function
  with this parameter as the result of the function.  The purpose of this
! capability is to allow the use of `OUT` and `IN OUT`
  parameters in interfacing to external functions (which are not permitted
! in Ada functions).  You may optionally use the `Mechanism`
  parameters to specify passing mechanisms for the parameters.
  If you specify a single mechanism name, it applies to all parameters.
  Otherwise you may specify a mechanism on a parameter by parameter
--- 2759,2771 ----
    MECHANISM_NAME ::= Value | Reference
  
  
! This pragma is identical to ``Import_Procedure`` except that the
! first parameter of ``LOCAL_NAME``, which must be present, must be of
! mode ``out``, and externally the subprogram is treated as a function
  with this parameter as the result of the function.  The purpose of this
! capability is to allow the use of ``out`` and ``in out``
  parameters in interfacing to external functions (which are not permitted
! in Ada functions).  You may optionally use the ``Mechanism``
  parameters to specify passing mechanisms for the parameters.
  If you specify a single mechanism name, it applies to all parameters.
  Otherwise you may specify a mechanism on a parameter by parameter
*************** Syntax:
*** 2744,2750 ****
  
    pragma Initial_Condition (boolean_EXPRESSION);
  
! For the semantics of this pragma, see the entry for aspect `Initial_Condition`
  in the SPARK 2014 Reference Manual, section 7.1.6.
  
  Pragma Initialize_Scalars
--- 2830,2836 ----
  
    pragma Initial_Condition (boolean_EXPRESSION);
  
! For the semantics of this pragma, see the entry for aspect ``Initial_Condition``
  in the SPARK 2014 Reference Manual, section 7.1.6.
  
  Pragma Initialize_Scalars
*************** Syntax:
*** 2759,2765 ****
    pragma Initialize_Scalars;
  
  
! This pragma is similar to `Normalize_Scalars` conceptually but has
  two important differences.  First, there is no requirement for the pragma
  to be used uniformly in all units of a partition, in particular, it is fine
  to use this just for some or all of the application units of a partition,
--- 2845,2851 ----
    pragma Initialize_Scalars;
  
  
! This pragma is similar to ``Normalize_Scalars`` conceptually but has
  two important differences.  First, there is no requirement for the pragma
  to be used uniformly in all units of a partition, in particular, it is fine
  to use this just for some or all of the application units of a partition,
*************** It is even possible to change the value
*** 2793,2808 ****
  the need to rebind with a different switch using an environment variable.
  See the GNAT User's Guide for details.
  
! Note that pragma `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 `Initialize_Scalars`
  provides a powerful new tool to assist in the detection of problems
  caused by uninitialized variables.
  
! Note: the use of `Initialize_Scalars` has a fairly extensive
  effect on the generated code. This may cause your code to be
  substantially larger. It may also cause an increase in the amount
  of stack required, so it is probably a good idea to turn on stack
--- 2879,2894 ----
  the need to rebind with a different switch using an environment variable.
  See the GNAT User's Guide for details.
  
! Note that pragma ``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 ``Initialize_Scalars``
  provides a powerful new tool to assist in the detection of problems
  caused by uninitialized variables.
  
! Note: the use of ``Initialize_Scalars`` has a fairly extensive
  effect on the generated code. This may cause your code to be
  substantially larger. It may also cause an increase in the amount
  of stack required, so it is probably a good idea to turn on stack
*************** Syntax:
*** 2833,2839 ****
  
    INPUT ::= name
  
! For the semantics of this pragma, see the entry for aspect `Initializes` in the
  SPARK 2014 Reference Manual, section 7.1.5.
  
  .. _Pragma-Inline_Always:
--- 2919,2925 ----
  
    INPUT ::= name
  
! For the semantics of this pragma, see the entry for aspect ``Initializes`` in the
  SPARK 2014 Reference Manual, section 7.1.5.
  
  .. _Pragma-Inline_Always:
*************** Syntax:
*** 2849,2857 ****
    pragma Inline_Always (NAME [, NAME]);
  
  
! Similar to pragma `Inline` except that inlining is not subject to
! the use of option *-gnatn* or *-gnatN* and the inlining
! happens regardless of whether these options are used.
  
  Pragma Inline_Generic
  =====================
--- 2935,2947 ----
    pragma Inline_Always (NAME [, NAME]);
  
  
! Similar to pragma ``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 ``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 ``NAME``.
  
  Pragma Inline_Generic
  =====================
*************** Syntax:
*** 2867,2873 ****
  
  
  This pragma is provided for compatibility with Dec Ada 83. It has
! no effect in `GNAT` (which always inlines generics), other
  than to check that the given names are all names of generic units or
  generic instances.
  
--- 2957,2963 ----
  
  
  This pragma is provided for compatibility with Dec Ada 83. It has
! no effect in GNAT (which always inlines generics), other
  than to check that the given names are all names of generic units or
  generic instances.
  
*************** Syntax:
*** 2887,2900 ****
  
  
  This pragma is identical in syntax and semantics to
! the standard Ada pragma `Import`.  It is provided for compatibility
  with Ada 83.  The definition is upwards compatible both with pragma
! `Interface` as defined in the Ada 83 Reference Manual, and also
  with some extended implementations of this pragma in certain Ada 83
! 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.
  
--- 2977,2990 ----
  
  
  This pragma is identical in syntax and semantics to
! the standard Ada pragma ``Import``.  It is provided for compatibility
  with Ada 83.  The definition is upwards compatible both with pragma
! ``Interface`` as defined in the Ada 83 Reference Manual, and also
  with some extended implementations of this pragma in certain Ada 83
! 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.
  
*************** Syntax:
*** 2915,2921 ****
  This pragma provides an alternative way of specifying the interface name
  for an interfaced subprogram, and is provided for compatibility with Ada
  83 compilers that use the pragma for this purpose.  You must provide at
! least one of `External_Name` or `Link_Name`.
  
  Pragma Interrupt_Handler
  ========================
--- 3005,3011 ----
  This pragma provides an alternative way of specifying the interface name
  for an interfaced subprogram, and is provided for compatibility with Ada
  83 compilers that use the pragma for this purpose.  You must provide at
! least one of ``External_Name`` or ``Link_Name``.
  
  Pragma Interrupt_Handler
  ========================
*************** the pragma can also be specified for non
*** 2934,2940 ****
  that are declared at the library level (which includes procedures
  declared at the top level of a library package). In the case of AAMP,
  when this pragma is applied to a nonprotected procedure, the instruction
! `IERET` is generated for returns from the procedure, enabling
  maskable interrupts, in place of the normal return instruction.
  
  Pragma Interrupt_State
--- 3024,3030 ----
  that are declared at the library level (which includes procedures
  declared at the top level of a library package). In the case of AAMP,
  when this pragma is applied to a nonprotected procedure, the instruction
! ``IERET`` is generated for returns from the procedure, enabling
  maskable interrupts, in place of the normal return instruction.
  
  Pragma Interrupt_State
*************** Syntax:
*** 2952,2968 ****
  
  Normally certain interrupts are reserved to the implementation.  Any attempt
  to attach an interrupt causes Program_Error to be raised, as described in
! RM C.3.2(22).  A typical example is the `SIGINT` interrupt used in
  many systems for an :kbd:`Ctrl-C` interrupt.  Normally this interrupt is
  reserved to the implementation, so that :kbd:`Ctrl-C` can be used to
! interrupt execution.  Additionally, signals such as `SIGSEGV`,
! `SIGABRT`, `SIGFPE` and `SIGILL` are often mapped to specific
  Ada exceptions, or used to implement run-time functions such as the
! `abort` statement and stack overflow checking.
  
! Pragma `Interrupt_State` provides a general mechanism for overriding
  such uses of interrupts.  It subsumes the functionality of pragma
! `Unreserve_All_Interrupts`.  Pragma `Interrupt_State` is not
  available on Windows or VMS.  On all other platforms than VxWorks,
  it applies to signals; on VxWorks, it applies to vectored hardware interrupts
  and may be used to mark interrupts required by the board support package
--- 3042,3058 ----
  
  Normally certain interrupts are reserved to the implementation.  Any attempt
  to attach an interrupt causes Program_Error to be raised, as described in
! RM C.3.2(22).  A typical example is the ``SIGINT`` interrupt used in
  many systems for an :kbd:`Ctrl-C` interrupt.  Normally this interrupt is
  reserved to the implementation, so that :kbd:`Ctrl-C` can be used to
! interrupt execution.  Additionally, signals such as ``SIGSEGV``,
! ``SIGABRT``, ``SIGFPE`` and ``SIGILL`` are often mapped to specific
  Ada exceptions, or used to implement run-time functions such as the
! ``abort`` statement and stack overflow checking.
  
! Pragma ``Interrupt_State`` provides a general mechanism for overriding
  such uses of interrupts.  It subsumes the functionality of pragma
! ``Unreserve_All_Interrupts``.  Pragma ``Interrupt_State`` is not
  available on Windows or VMS.  On all other platforms than VxWorks,
  it applies to signals; on VxWorks, it applies to vectored hardware interrupts
  and may be used to mark interrupts required by the board support package
*************** Interrupts can be in one of three states
*** 2974,2980 ****
  
    The interrupt is reserved (no Ada handler can be installed), and the
    Ada run-time may not install a handler. As a result you are guaranteed
!   standard system default action if this interrupt is raised.
  
  * Runtime
  
--- 3064,3072 ----
  
    The interrupt is reserved (no Ada handler can be installed), and the
    Ada run-time may not install a handler. As a result you are guaranteed
!   standard system default action if this interrupt is raised. This also allows
!   installing a low level handler via C APIs such as sigaction(), outside
!   of Ada control.
  
  * Runtime
  
*************** Interrupts can be in one of three states
*** 2984,2996 ****
  
  * User
  
!   The interrupt is unreserved.  The user may install a handler to provide
    some other action.
  
! These states are the allowed values of the `State` parameter of the
! pragma.  The `Name` parameter is a value of the type
! `Ada.Interrupts.Interrupt_ID`.  Typically, it is a name declared in
! `Ada.Interrupts.Names`.
  
  This is a configuration pragma, and the binder will check that there
  are no inconsistencies between different units in a partition in how a
--- 3076,3089 ----
  
  * User
  
!   The interrupt is unreserved.  The user may install an Ada handler via
!   Ada.Interrupts and pragma Interrupt_Handler or Attach_Handler to provide
    some other action.
  
! These states are the allowed values of the ``State`` parameter of the
! pragma.  The ``Name`` parameter is a value of the type
! ``Ada.Interrupts.Interrupt_ID``.  Typically, it is a name declared in
! ``Ada.Interrupts.Names``.
  
  This is a configuration pragma, and the binder will check that there
  are no inconsistencies between different units in a partition in how a
*************** a handler.
*** 3006,3017 ****
  
  Note that certain signals on many operating systems cannot be caught and
  handled by applications.  In such cases, the pragma is ignored.  See the
! operating system documentation, or the value of the array `Reserved`
! declared in the spec of package `System.OS_Interface`.
  
  Overriding the default state of signals used by the Ada runtime may interfere
  with an application's runtime behavior in the cases of the synchronous signals,
! and in the case of the signal used to implement the `abort` statement.
  
  .. _Pragma-Invariant:
  
--- 3099,3110 ----
  
  Note that certain signals on many operating systems cannot be caught and
  handled by applications.  In such cases, the pragma is ignored.  See the
! operating system documentation, or the value of the array ``Reserved``
! declared in the spec of package ``System.OS_Interface``.
  
  Overriding the default state of signals used by the Ada runtime may interfere
  with an application's runtime behavior in the cases of the synchronous signals,
! and in the case of the signal used to implement the ``abort`` statement.
  
  .. _Pragma-Invariant:
  
*************** Syntax:
*** 3065,3077 ****
    pragma Keep_Names ([On =>] enumeration_first_subtype_LOCAL_NAME);
  
  
! The `LOCAL_NAME` argument
  must refer to an enumeration first subtype
  in the current declarative part. The effect is to retain the enumeration
! literal names for use by `Image` and `Value` even if a global
! `Discard_Names` pragma applies. This is useful when you want to
  generally suppress enumeration literal names and for example you therefore
! use a `Discard_Names` pragma in the :file:`gnat.adc` file, but you
  want to retain the names for specific enumeration types.
  
  Pragma License
--- 3158,3170 ----
    pragma Keep_Names ([On =>] enumeration_first_subtype_LOCAL_NAME);
  
  
! The ``LOCAL_NAME`` argument
  must refer to an enumeration first subtype
  in the current declarative part. The effect is to retain the enumeration
! literal names for use by ``Image`` and ``Value`` even if a global
! ``Discard_Names`` pragma applies. This is useful when you want to
  generally suppress enumeration literal names and for example you therefore
! use a ``Discard_Names`` pragma in the :file:`gnat.adc` file, but you
  want to retain the names for specific enumeration types.
  
  Pragma License
*************** Syntax:
*** 3088,3094 ****
  
  This pragma is provided to allow automated checking for appropriate license
  conditions with respect to the standard and modified GPL.  A pragma
! `License`, which is a configuration pragma that typically appears at
  the start of a source file or in a separate :file:`gnat.adc` file, specifies
  the licensing conditions of a unit as follows:
  
--- 3181,3187 ----
  
  This pragma is provided to allow automated checking for appropriate license
  conditions with respect to the standard and modified GPL.  A pragma
! ``License``, which is a configuration pragma that typically appears at
  the start of a source file or in a separate :file:`gnat.adc` file, specifies
  the licensing conditions of a unit as follows:
  
*************** the licensing conditions of a unit as fo
*** 3099,3105 ****
  
  * GPL
    This is used for a unit that is licensed under the unmodified GPL, and which
!   therefore cannot be `with`'ed by a restricted unit.
  
  * Modified_GPL
    This is used for a unit licensed under the GNAT modified GPL that includes
--- 3192,3198 ----
  
  * GPL
    This is used for a unit that is licensed under the unmodified GPL, and which
!   therefore cannot be ``with``\ ed by a restricted unit.
  
  * Modified_GPL
    This is used for a unit licensed under the GNAT modified GPL that includes
*************** the licensing conditions of a unit as fo
*** 3111,3122 ****
    This is used for a unit that is restricted in that it is not permitted to
    depend on units that are licensed under the GPL.  Typical examples are
    proprietary code that is to be released under more restrictive license
!   conditions.  Note that restricted units are permitted to `with` units
    which are licensed under the modified GPL (this is the whole point of the
    modified GPL).
  
  
! Normally a unit with no `License` pragma is considered to have an
  unknown license, and no checking is done.  However, standard GNAT headers
  are recognized, and license information is derived from them as follows.
  
--- 3204,3215 ----
    This is used for a unit that is restricted in that it is not permitted to
    depend on units that are licensed under the GPL.  Typical examples are
    proprietary code that is to be released under more restrictive license
!   conditions.  Note that restricted units are permitted to ``with`` units
    which are licensed under the modified GPL (this is the whole point of the
    modified GPL).
  
  
! Normally a unit with no ``License`` pragma is considered to have an
  unknown license, and no checking is done.  However, standard GNAT headers
  are recognized, and license information is derived from them as follows.
  
*************** then the unit is assumed to be unrestric
*** 3134,3140 ****
  
  These default actions means that a program with a restricted license pragma
  will automatically get warnings if a GPL unit is inappropriately
! `with`'ed.  For example, the program:
  
  .. code-block:: ada
  
--- 3227,3233 ----
  
  These default actions means that a program with a restricted license pragma
  will automatically get warnings if a GPL unit is inappropriately
! ``with``\ ed.  For example, the program:
  
  .. code-block:: ada
  
*************** will automatically get warnings if a GPL
*** 3145,3151 ****
    end Secret_Stuff
  
  
! if compiled with pragma `License` (`Restricted`) in a
  :file:`gnat.adc` file will generate the warning::
  
    1.  with Sem_Ch3;
--- 3238,3244 ----
    end Secret_Stuff
  
  
! if compiled with pragma ``License`` (``Restricted``) in a
  :file:`gnat.adc` file will generate the warning::
  
    1.  with Sem_Ch3;
*************** if compiled with pragma `License` (`Rest
*** 3156,3164 ****
    3.  procedure Secret_Stuff is
  
  
! Here we get a warning on `Sem_Ch3` since it is part of the GNAT
  compiler and is licensed under the
! GPL, but no warning for `GNAT.Sockets` which is part of the GNAT
  run time, and is therefore licensed under the modified GPL.
  
  Pragma Link_With
--- 3249,3257 ----
    3.  procedure Secret_Stuff is
  
  
! Here we get a warning on ``Sem_Ch3`` since it is part of the GNAT
  compiler and is licensed under the
! GPL, but no warning for ``GNAT.Sockets`` which is part of the GNAT
  run time, and is therefore licensed under the modified GPL.
  
  Pragma Link_With
*************** Syntax:
*** 3173,3179 ****
  
  
  This pragma is provided for compatibility with certain Ada 83 compilers.
! It has exactly the same effect as pragma `Linker_Options` except
  that spaces occurring within one of the string expressions are treated
  as separators. For example, in the following case:
  
--- 3266,3272 ----
  
  
  This pragma is provided for compatibility with certain Ada 83 compilers.
! It has exactly the same effect as pragma ``Linker_Options`` except
  that spaces occurring within one of the string expressions are treated
  as separators. For example, in the following case:
  
*************** as separators. For example, in the follo
*** 3182,3188 ****
    pragma Link_With ("-labc -ldef");
  
  
! results in passing the strings `-labc` and `-ldef` as two
  separate arguments to the linker. In addition pragma Link_With allows
  multiple arguments, with the same effect as successive pragmas.
  
--- 3275,3281 ----
    pragma Link_With ("-labc -ldef");
  
  
! results in passing the strings ``-labc`` and ``-ldef`` as two
  separate arguments to the linker. In addition pragma Link_With allows
  multiple arguments, with the same effect as successive pragmas.
  
*************** Syntax:
*** 3199,3219 ****
      [Target =>] static_string_EXPRESSION);
  
  
! `LOCAL_NAME` must refer to an object that is declared at the library
  level. This pragma establishes the given entity as a linker alias for the
! given target. It is equivalent to `__attribute__((alias))` in GNU C
! and causes `LOCAL_NAME` to be emitted as an alias for the symbol
! `static_string_EXPRESSION` in the object file, that is to say no space
! is reserved for `LOCAL_NAME` by the assembler and it will be resolved
! to the same address as `static_string_EXPRESSION` by the linker.
  
  The actual linker name for the target must be used (e.g., the fully
  encoded name with qualification in Ada, or the mangled name in C++),
! or it must be declared using the C convention with `pragma Import`
! or `pragma Export`.
  
  Not all target machines support this pragma. On some of them it is accepted
! only if `pragma Weak_External` has been applied to `LOCAL_NAME`.
  
  
  .. code-block:: ada
--- 3292,3312 ----
      [Target =>] static_string_EXPRESSION);
  
  
! ``LOCAL_NAME`` must refer to an object that is declared at the library
  level. This pragma establishes the given entity as a linker alias for the
! given target. It is equivalent to ``__attribute__((alias))`` in GNU C
! and causes ``LOCAL_NAME`` to be emitted as an alias for the symbol
! ``static_string_EXPRESSION`` in the object file, that is to say no space
! is reserved for ``LOCAL_NAME`` by the assembler and it will be resolved
! to the same address as ``static_string_EXPRESSION`` by the linker.
  
  The actual linker name for the target must be used (e.g., the fully
  encoded name with qualification in Ada, or the mangled name in C++),
! or it must be declared using the C convention with ``pragma Import``
! or ``pragma Export``.
  
  Not all target machines support this pragma. On some of them it is accepted
! only if ``pragma Weak_External`` has been applied to ``LOCAL_NAME``.
  
  
  .. code-block:: ada
*************** Syntax:
*** 3240,3250 ****
    pragma Linker_Constructor (procedure_LOCAL_NAME);
  
  
! `procedure_LOCAL_NAME` must refer to a parameterless procedure that
  is declared at the library level. A procedure to which this pragma is
  applied will be treated as an initialization routine by the linker.
! It is equivalent to `__attribute__((constructor))` in GNU C and
! causes `procedure_LOCAL_NAME` to be invoked before the entry point
  of the executable is called (or immediately after the shared library is
  loaded if the procedure is linked in a shared library), in particular
  before the Ada run-time environment is set up.
--- 3333,3343 ----
    pragma Linker_Constructor (procedure_LOCAL_NAME);
  
  
! ``procedure_LOCAL_NAME`` must refer to a parameterless procedure that
  is declared at the library level. A procedure to which this pragma is
  applied will be treated as an initialization routine by the linker.
! It is equivalent to ``__attribute__((constructor))`` in GNU C and
! causes ``procedure_LOCAL_NAME`` to be invoked before the entry point
  of the executable is called (or immediately after the shared library is
  loaded if the procedure is linked in a shared library), in particular
  before the Ada run-time environment is set up.
*************** Syntax:
*** 3270,3285 ****
    pragma Linker_Destructor (procedure_LOCAL_NAME);
  
  
! `procedure_LOCAL_NAME` must refer to a parameterless procedure that
  is declared at the library level. A procedure to which this pragma is
  applied will be treated as a finalization routine by the linker.
! It is equivalent to `__attribute__((destructor))` in GNU C and
! causes `procedure_LOCAL_NAME` to be invoked after the entry point
  of the executable has exited (or immediately before the shared library
  is unloaded if the procedure is linked in a shared library), in particular
  after the Ada run-time environment is shut down.
  
! See `pragma Linker_Constructor` for the set of restrictions that apply
  because of these specific contexts.
  
  .. _Pragma-Linker_Section:
--- 3363,3378 ----
    pragma Linker_Destructor (procedure_LOCAL_NAME);
  
  
! ``procedure_LOCAL_NAME`` must refer to a parameterless procedure that
  is declared at the library level. A procedure to which this pragma is
  applied will be treated as a finalization routine by the linker.
! It is equivalent to ``__attribute__((destructor))`` in GNU C and
! causes ``procedure_LOCAL_NAME`` to be invoked after the entry point
  of the executable has exited (or immediately before the shared library
  is unloaded if the procedure is linked in a shared library), in particular
  after the Ada run-time environment is shut down.
  
! See ``pragma Linker_Constructor`` for the set of restrictions that apply
  because of these specific contexts.
  
  .. _Pragma-Linker_Section:
*************** Syntax:
*** 3297,3314 ****
      [Section =>] static_string_EXPRESSION);
  
  
! `LOCAL_NAME` must refer to an object, type, or subprogram that is
  declared at the library level. This pragma specifies the name of the
  linker section for the given entity. It is equivalent to
! `__attribute__((section))` in GNU C and causes `LOCAL_NAME` to
! be placed in the `static_string_EXPRESSION` section of the
  executable (assuming the linker doesn't rename the section).
  GNAT also provides an implementation defined aspect of the same name.
  
  In the case of specifying this aspect for a type, the effect is to
! specify the corresponding for all library level objects of the type which
! do not have an explicit linker section set. Note that this only applies to
! whole objects, not to components of composite objects.
  
  In the case of a subprogram, the linker section applies to all previously
  declared matching overloaded subprograms in the current declarative part
--- 3390,3407 ----
      [Section =>] static_string_EXPRESSION);
  
  
! ``LOCAL_NAME`` must refer to an object, type, or subprogram that is
  declared at the library level. This pragma specifies the name of the
  linker section for the given entity. It is equivalent to
! ``__attribute__((section))`` in GNU C and causes ``LOCAL_NAME`` to
! be placed in the ``static_string_EXPRESSION`` section of the
  executable (assuming the linker doesn't rename the section).
  GNAT also provides an implementation defined aspect of the same name.
  
  In the case of specifying this aspect for a type, the effect is to
! specify the corresponding section for all library-level objects of
! the type that do not have an explicit linker section set. Note that
! this only applies to whole objects, not to components of composite objects.
  
  In the case of a subprogram, the linker section applies to all previously
  declared matching overloaded subprograms in the current declarative part
*************** linker section is specified should has t
*** 3324,3331 ****
  
  The compiler normally places library-level entities in standard sections
  depending on the class: procedures and functions generally go in the
! `.text` section, initialized variables in the `.data` section
! and uninitialized variables in the `.bss` section.
  
  Other, special sections may exist on given target machines to map special
  hardware, for example I/O ports or flash memory. This pragma is a means to
--- 3417,3424 ----
  
  The compiler normally places library-level entities in standard sections
  depending on the class: procedures and functions generally go in the
! ``.text`` section, initialized variables in the ``.data`` section
! and uninitialized variables in the ``.bss`` section.
  
  Other, special sections may exist on given target machines to map special
  hardware, for example I/O ports or flash memory. This pragma is a means to
*************** at the symbolic level with the compiler.
*** 3335,3342 ****
  Some file formats do not support arbitrary sections so not all target
  machines support this pragma. The use of this pragma may cause a program
  execution to be erroneous if it is used to place an entity into an
! inappropriate section (e.g., a modified variable into the `.text`
! section). See also `pragma Persistent_BSS`.
  
  
  .. code-block:: ada
--- 3428,3435 ----
  Some file formats do not support arbitrary sections so not all target
  machines support this pragma. The use of this pragma may cause a program
  execution to be erroneous if it is used to place an entity into an
! inappropriate section (e.g., a modified variable into the ``.text``
! section). See also ``pragma Persistent_BSS``.
  
  
  .. code-block:: ada
*************** Syntax:
*** 3381,3392 ****
    pragma Loop_Invariant ( boolean_EXPRESSION );
  
  
! The effect of this pragma is similar to that of pragma `Assert`,
! except that in an `Assertion_Policy` pragma, the identifier
! `Loop_Invariant` is used to control whether it is ignored or checked
  (or disabled).
  
! `Loop_Invariant` can only appear as 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.
  The intention is that it be used to
--- 3474,3485 ----
    pragma Loop_Invariant ( boolean_EXPRESSION );
  
  
! The effect of this pragma is similar to that of pragma ``Assert``,
! except that in an ``Assertion_Policy`` pragma, the identifier
! ``Loop_Invariant`` is used to control whether it is ignored or checked
  (or disabled).
  
! ``Loop_Invariant`` can only appear as 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.
  The intention is that it be used to
*************** represent a "loop invariant" assertion,
*** 3394,3407 ****
  time through the loop, and which can be used to show that the loop is
  achieving its purpose.
  
! Multiple `Loop_Invariant` and `Loop_Variant` pragmas that
  apply to the same loop should be grouped in the same sequence of
  statements.
  
! To aid in writing such invariants, the special attribute `Loop_Entry`
  may be used to refer to the value of an expression on entry to the loop. This
! attribute can only be used within the expression of a `Loop_Invariant`
! pragma. For full details, see documentation of attribute `Loop_Entry`.
  
  Pragma Loop_Optimize
  ====================
--- 3487,3500 ----
  time through the loop, and which can be used to show that the loop is
  achieving its purpose.
  
! Multiple ``Loop_Invariant`` and ``Loop_Variant`` pragmas that
  apply to the same loop should be grouped in the same sequence of
  statements.
  
! To aid in writing such invariants, the special attribute ``Loop_Entry``
  may be used to refer to the value of an expression on entry to the loop. This
! attribute can only be used within the expression of a ``Loop_Invariant``
! pragma. For full details, see documentation of attribute ``Loop_Entry``.
  
  Pragma Loop_Optimize
  ====================
*************** Syntax:
*** 3470,3476 ****
    CHANGE_DIRECTION ::= Increases | Decreases
  
  
! `Loop_Variant` can only appear as 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.
  It allows the specification of quantities which must always
--- 3563,3569 ----
    CHANGE_DIRECTION ::= Increases | Decreases
  
  
! ``Loop_Variant`` can only appear as 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.
  It allows the specification of quantities which must always
*************** in a nesting lexicographic manner. For e
*** 3487,3509 ****
  
  
  specifies that each time through the loop either X increases, or X stays
! the same and Y decreases. A `Loop_Variant` pragma ensures that the
  loop is making progress. It can be useful in helping to show informally
  or prove formally that the loop always terminates.
  
! `Loop_Variant` is an assertion whose effect can be controlled using
! an `Assertion_Policy` with a check name of `Loop_Variant`. The
! policy can be `Check` to enable the loop variant check, `Ignore`
  to ignore the check (in which case the pragma has no effect on the program),
! or `Disable` in which case the pragma is not even checked for correct
  syntax.
  
! Multiple `Loop_Invariant` and `Loop_Variant` pragmas that
  apply to the same loop should be grouped in the same sequence of
  statements.
  
! The `Loop_Entry` attribute may be used within the expressions of the
! `Loop_Variant` pragma to refer to values on entry to the loop.
  
  Pragma Machine_Attribute
  ========================
--- 3580,3602 ----
  
  
  specifies that each time through the loop either X increases, or X stays
! the same and Y decreases. A ``Loop_Variant`` pragma ensures that the
  loop is making progress. It can be useful in helping to show informally
  or prove formally that the loop always terminates.
  
! ``Loop_Variant`` is an assertion whose effect can be controlled using
! an ``Assertion_Policy`` with a check name of ``Loop_Variant``. The
! policy can be ``Check`` to enable the loop variant check, ``Ignore``
  to ignore the check (in which case the pragma has no effect on the program),
! or ``Disable`` in which case the pragma is not even checked for correct
  syntax.
  
! Multiple ``Loop_Invariant`` and ``Loop_Variant`` pragmas that
  apply to the same loop should be grouped in the same sequence of
  statements.
  
! The ``Loop_Entry`` attribute may be used within the expressions of the
! ``Loop_Variant`` pragma to refer to values on entry to the loop.
  
  Pragma Machine_Attribute
  ========================
*************** Syntax:
*** 3521,3531 ****
  
  Machine-dependent attributes can be specified for types and/or
  declarations.  This pragma is semantically equivalent to
! `__attribute__((`attribute_name`))` (if `info` is not
! specified) or `__attribute__((`attribute_name`(`info`)))
! in GNU C, where ``attribute_name`` is recognized by the
! compiler middle-end or the `TARGET_ATTRIBUTE_TABLE` machine
! specific macro.  A string literal for the optional parameter `info`
  is transformed into an identifier, which may make this pragma unusable
  for some attributes.
  For further information see :title:`GNU Compiler Collection (GCC) Internals`.
--- 3614,3624 ----
  
  Machine-dependent attributes can be specified for types and/or
  declarations.  This pragma is semantically equivalent to
! :samp:`__attribute__(({attribute_name}))` (if ``info`` is not
! specified) or :samp:`__attribute__(({attribute_name(info})))`
! in GNU C, where *attribute_name* is recognized by the
! compiler middle-end or the ``TARGET_ATTRIBUTE_TABLE`` machine
! specific macro.  A string literal for the optional parameter ``info``
  is transformed into an identifier, which may make this pragma unusable
  for some attributes.
  For further information see :title:`GNU Compiler Collection (GCC) Internals`.
*************** Syntax::
*** 3563,3568 ****
--- 3656,3663 ----
  This pragma is provided for compatibility with OpenVMS VAX Systems.  It has
  no effect in GNAT, other than being syntax checked.
  
+ .. _Pragma-Max_Queue_Length:
+ 
  Pragma Max_Queue_Length
  =======================
  
*************** such a way that a body needed before is
*** 3599,3604 ****
--- 3694,3718 ----
  dummy body with a No_Body pragma ensures that there is no interference from
  earlier versions of the package body.
  
+ Pragma No_Component_Reordering
+ ==============================
+ 
+ Syntax:
+ 
+ 
+ ::
+ 
+   pragma No_Component_Reordering [([Entity =>] type_LOCAL_NAME)];
+ 
+ 
+ ``type_LOCAL_NAME`` must refer to a record type declaration in the current
+ declarative part. The effect is to preclude any reordering of components
+ for the layout of the record, i.e. the record is laid out by the compiler
+ in the order in which the components are declared textually. The form with
+ no argument is a configuration pragma which applies to all record types
+ declared in units to which the pragma applies and there is a requirement
+ that this pragma be used consistently within a partition.
+ 
  .. _Pragma-No_Elaboration_Code_All:
  
  Pragma No_Elaboration_Code_All
*************** Syntax:
*** 3613,3625 ****
  
  
  This is a program unit pragma (there is also an equivalent aspect of the
! same name) that establishes the restriction `No_Elaboration_Code` for
! the current unit and any extended main source units (body and subunits.
! It also has has the effect of enforcing a transitive application of this
! aspect, so that if any unit is implicitly or explicitly WITH'ed by the
  current unit, it must also have the No_Elaboration_Code_All aspect set.
  It may be applied to package or subprogram specs or their generic versions.
  
  Pragma No_Inline
  ================
  
--- 3727,3773 ----
  
  
  This is a program unit pragma (there is also an equivalent aspect of the
! same name) that establishes the restriction ``No_Elaboration_Code`` for
! the current unit and any extended main source units (body and subunits).
! It also has the effect of enforcing a transitive application of this
! aspect, so that if any unit is implicitly or explicitly with'ed by the
  current unit, it must also have the No_Elaboration_Code_All aspect set.
  It may be applied to package or subprogram specs or their generic versions.
  
+ Pragma No_Heap_Finalization
+ ===========================
+ 
+ Syntax:
+ 
+ 
+ ::
+ 
+   pragma No_Heap_Finalization [ (first_subtype_LOCAL_NAME) ];
+ 
+ 
+ Pragma ``No_Heap_Finalization`` may be used as a configuration pragma or as a
+ type-specific pragma.
+ 
+ In its configuration form, the pragma must appear within a configuration file
+ such as gnat.adc, without an argument. The pragma suppresses the call to
+ ``Finalize`` for heap-allocated objects created through library-level named
+ access-to-object types in cases where the designated type requires finalization
+ actions.
+ 
+ In its type-specific form, the argument of the pragma must denote a
+ library-level named access-to-object type. The pragma suppresses the call to
+ ``Finalize`` for heap-allocated objects created through the specific access type
+ in cases where the designated type requires finalization actions.
+ 
+ It is still possible to finalize such heap-allocated objects by explicitly
+ deallocating them.
+ 
+ A library-level named access-to-object type declared within a generic unit will
+ lose its ``No_Heap_Finalization`` pragma when the corresponding instance does not
+ appear at the library level.
+ 
+ .. _Pragma-No_Inline:
+ 
  Pragma No_Inline
  ================
  
*************** Syntax:
*** 3632,3642 ****
  
  
  This pragma suppresses inlining for the callable entity or the instances of
! the generic subprogram designated by `NAME`, including inlining that
! results from the use of pragma `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 `No_Inline` and
! pragma `Inline_Always` for the same `NAME`.
  
  Pragma No_Return
  ================
--- 3780,3790 ----
  
  
  This pragma suppresses inlining for the callable entity or the instances of
! the generic subprogram designated by ``NAME``, including inlining that
! results from the use of pragma ``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 ``No_Inline`` and
! pragma ``Inline_Always`` for the same ``NAME``.
  
  Pragma No_Return
  ================
*************** Syntax:
*** 3649,3657 ****
    pragma No_Return (procedure_LOCAL_NAME {, procedure_LOCAL_NAME});
  
  
! Each `procedure_LOCAL_NAME` argument must refer to one or more procedure
  declarations in the current declarative part.  A procedure to which this
! pragma is applied may not contain any explicit `return` statements.
  In addition, if the procedure contains any implicit returns from falling
  off the end of a statement sequence, then execution of that implicit
  return will cause Program_Error to be raised.
--- 3797,3805 ----
    pragma No_Return (procedure_LOCAL_NAME {, procedure_LOCAL_NAME});
  
  
! Each ``procedure_LOCAL_NAME`` argument must refer to one or more procedure
  declarations in the current declarative part.  A procedure to which this
! pragma is applied may not contain any explicit ``return`` statements.
  In addition, if the procedure contains any implicit returns from falling
  off the end of a statement sequence, then execution of that implicit
  return will cause Program_Error to be raised.
*************** Syntax:
*** 3679,3685 ****
  This is an obsolete configuration pragma that historically was used to
  set up a runtime library with no object code. It is now used only for
  internal testing. The pragma has been superseded by the reconfigurable
! runtime capability of `GNAT`.
  
  Pragma No_Strict_Aliasing
  =========================
--- 3827,3833 ----
  This is an obsolete configuration pragma that historically was used to
  set up a runtime library with no object code. It is now used only for
  internal testing. The pragma has been superseded by the reconfigurable
! runtime capability of GNAT.
  
  Pragma No_Strict_Aliasing
  =========================
*************** Syntax:
*** 3692,3698 ****
    pragma No_Strict_Aliasing [([Entity =>] type_LOCAL_NAME)];
  
  
! `type_LOCAL_NAME` must refer to an access type
  declaration in the current declarative part.  The effect is to inhibit
  strict aliasing optimization for the given type.  The form with no
  arguments is a configuration pragma which applies to all access types
--- 3840,3846 ----
    pragma No_Strict_Aliasing [([Entity =>] type_LOCAL_NAME)];
  
  
! ``type_LOCAL_NAME`` must refer to an access type
  declaration in the current declarative part.  The effect is to inhibit
  strict aliasing optimization for the given type.  The form with no
  arguments is a configuration pragma which applies to all access types
*************** Syntax:
*** 3713,3719 ****
  
  ::
  
-   pragma No_Tagged_Streams;
    pragma No_Tagged_Streams [([Entity =>] tagged_type_LOCAL_NAME)];
  
  
--- 3861,3866 ----
*************** or derived types). This can involve the
*** 3724,3730 ****
  of code which is wasted space if stream routines are not needed for the
  type in question.
  
! The `No_Tagged_Streams` pragma causes the generation of these stream
  routines to be skipped, and any attempt to use stream operations on
  types subject to this pragma will be statically rejected as illegal.
  
--- 3871,3877 ----
  of code which is wasted space if stream routines are not needed for the
  type in question.
  
! The ``No_Tagged_Streams`` pragma causes the generation of these stream
  routines to be skipped, and any attempt to use stream operations on
  types subject to this pragma will be statically rejected as illegal.
  
*************** are as follows:
*** 3815,3821 ****
  
  *Enumeration types*
    Objects of an enumeration type are initialized to all one-bits, i.e., to
!   the value `2 ** typ'Size - 1` unless the subtype excludes the literal
    whose Pos value is zero, in which case a code of zero is used. This choice
    will always generate an invalid value if one exists.
  
--- 3962,3968 ----
  
  *Enumeration types*
    Objects of an enumeration type are initialized to all one-bits, i.e., to
!   the value ``2 ** typ'Size - 1`` unless the subtype excludes the literal
    whose Pos value is zero, in which case a code of zero is used. This choice
    will always generate an invalid value if one exists.
  
*************** removed later.
*** 3858,3882 ****
  
  The effect of this pragma is to output a warning message on a reference to
  an entity thus marked that the subprogram is obsolescent if the appropriate
! warning option in the compiler is activated. If the Message parameter is
  present, then a second warning message is given containing this text. In
  addition, a reference to the entity is considered to be a violation of pragma
! Restrictions (No_Obsolescent_Features).
  
  This pragma can also be used as a program unit pragma for a package,
  in which case the entity name is the name of the package, and the
  pragma indicates that the entire package is considered
! obsolescent. In this case a client `with`'ing such a package
! violates the restriction, and the `with` statement is
  flagged with warnings if the warning option is set.
  
! If the Version parameter is present (which must be exactly
! the identifier Ada_05, no other argument is allowed), then the
  indication of obsolescence applies only when compiling in Ada 2005
  mode. This is primarily intended for dealing with the situations
  in the predefined library where subprograms or packages
  have become defined as obsolescent in Ada 2005
! (e.g., in Ada.Characters.Handling), but may be used anywhere.
  
  The following examples show typical uses of this pragma:
  
--- 4005,4029 ----
  
  The effect of this pragma is to output a warning message on a reference to
  an entity thus marked that the subprogram is obsolescent if the appropriate
! warning option in the compiler is activated. If the ``Message`` parameter is
  present, then a second warning message is given containing this text. In
  addition, a reference to the entity is considered to be a violation of pragma
! ``Restrictions (No_Obsolescent_Features)``.
  
  This pragma can also be used as a program unit pragma for a package,
  in which case the entity name is the name of the package, and the
  pragma indicates that the entire package is considered
! obsolescent. In this case a client ``with``\ ing such a package
! violates the restriction, and the ``with`` clause is
  flagged with warnings if the warning option is set.
  
! If the ``Version`` parameter is present (which must be exactly
! the identifier ``Ada_05``, no other argument is allowed), then the
  indication of obsolescence applies only when compiling in Ada 2005
  mode. This is primarily intended for dealing with the situations
  in the predefined library where subprograms or packages
  have become defined as obsolescent in Ada 2005
! (e.g., in ``Ada.Characters.Handling``), but may be used anywhere.
  
  The following examples show typical uses of this pragma:
  
*************** The following examples show typical uses
*** 3916,3923 ****
  
  Note that, as for all pragmas, if you use a pragma argument identifier,
  then all subsequent parameters must also use a pragma argument identifier.
! So if you specify "Entity =>" for the Entity argument, and a Message
! argument is present, it must be preceded by "Message =>".
  
  Pragma Optimize_Alignment
  =========================
--- 4063,4070 ----
  
  Note that, as for all pragmas, if you use a pragma argument identifier,
  then all subsequent parameters must also use a pragma argument identifier.
! So if you specify ``Entity =>`` for the ``Entity`` argument, and a ``Message``
! argument is present, it must be preceded by ``Message =>``.
  
  Pragma Optimize_Alignment
  =========================
*************** Integer field X are efficient. But this
*** 3962,3968 ****
  with a size of 8 bytes. This is a valid choice, since sizes of objects are
  allowed to be bigger than the size of the type, but it can waste space if for
  example fields of type R appear in an enclosing record. If the above type is
! compiled in `Optimize_Alignment (Space)` mode, the alignment is set to 1.
  
  However, there is one case in which SPACE is ignored. If a variable length
  record (that is a discriminated record with a component which is an array
--- 4109,4115 ----
  with a size of 8 bytes. This is a valid choice, since sizes of objects are
  allowed to be bigger than the size of the type, but it can waste space if for
  example fields of type R appear in an enclosing record. If the above type is
! compiled in ``Optimize_Alignment (Space)`` mode, the alignment is set to 1.
  
  However, there is one case in which SPACE is ignored. If a variable length
  record (that is a discriminated record with a component which is an array
*************** Specifying SPACE also disables alignment
*** 3974,3979 ****
--- 4121,4129 ----
  which occur when the compiler increases the alignment of a specific object
  without changing the alignment of its type.
  
+ Specifying SPACE also disables component reordering in unpacked record types,
+ which can result in larger sizes in order to meet alignment requirements.
+ 
  Specifying TIME causes larger default alignments to be chosen in the case of
  small types with sizes that are not a power of 2. For example, consider:
  
*************** small types with sizes that are not a po
*** 3991,3997 ****
  
  
  The default alignment for this record is normally 1, but if this type is
! compiled in `Optimize_Alignment (Time)` mode, then the alignment is set
  to 4, which wastes space for objects of the type, since they are now 4 bytes
  long, but results in more efficient access when the whole record is referenced.
  
--- 4141,4147 ----
  
  
  The default alignment for this record is normally 1, but if this type is
! compiled in ``Optimize_Alignment (Time)`` mode, then the alignment is set
  to 4, which wastes space for objects of the type, since they are now 4 bytes
  long, but results in more efficient access when the whole record is referenced.
  
*************** For example, consider:
*** 4024,4030 ****
    type Color is (Red, Blue, Green, Yellow);
  
  
! By Ada semantics `Blue > Red` and `Green > Blue`,
  but really these relations make no sense; the enumeration type merely
  specifies a set of possible colors, and the order is unimportant.
  
--- 4174,4180 ----
    type Color is (Red, Blue, Green, Yellow);
  
  
! By Ada semantics ``Blue > Red`` and ``Green > Blue``,
  but really these relations make no sense; the enumeration type merely
  specifies a set of possible colors, and the order is unimportant.
  
*************** entries have to be added to the enumerat
*** 4047,4053 ****
  the code in the client should list the possibilities, or an
  appropriate subtype should be declared in the unit that declares
  the original enumeration type. E.g., the following subtype could
! be declared along with the type `Color`:
  
  
  .. code-block:: ada
--- 4197,4203 ----
  the code in the client should list the possibilities, or an
  appropriate subtype should be declared in the unit that declares
  the original enumeration type. E.g., the following subtype could
! be declared along with the type ``Color``:
  
  
  .. code-block:: ada
*************** on the ordering. GNAT provides a pragma
*** 4089,4104 ****
  rather than one to mark them as unordered, since in our experience,
  the great majority of enumeration types are conceptually unordered.
  
! The types `Boolean`, `Character`, `Wide_Character`,
! and `Wide_Wide_Character`
  are considered to be ordered types, so each is declared with a
! pragma `Ordered` in package `Standard`.
  
! Normally pragma `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 `Ordered` will be considered
  as unordered, and will generate warnings for inappropriate uses.
  
  Note that generic types are not considered ordered or unordered (since the
--- 4239,4254 ----
  rather than one to mark them as unordered, since in our experience,
  the great majority of enumeration types are conceptually unordered.
  
! The types ``Boolean``, ``Character``, ``Wide_Character``,
! and ``Wide_Wide_Character``
  are considered to be ordered types, so each is declared with a
! pragma ``Ordered`` in package ``Standard``.
  
! Normally pragma ``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 ``Ordered`` will be considered
  as unordered, and will generate warnings for inappropriate uses.
  
  Note that generic types are not considered ordered or unordered (since the
*************** Syntax:
*** 4126,4150 ****
  This pragma sets the current overflow mode to the given setting. For details
  of the meaning of these modes, please refer to the
  'Overflow Check Handling in GNAT' appendix in the
! GNAT User's Guide. If only the `General` parameter is present,
  the given mode applies to all expressions. If both parameters are present,
! the `General` mode applies to expressions outside assertions, and
! the `Eliminated` mode applies to expressions within assertions.
  
! The case of the `MODE` parameter is ignored,
! so `MINIMIZED`, `Minimized` and
! `minimized` all have the same effect.
  
! The `Overflow_Mode` pragma has the same scoping and placement
! rules as pragma `Suppress`, so it can occur either as a
  configuration pragma, specifying a default for the whole
  program, or in a declarative scope, where it applies to the
  remaining declarations and statements in that scope.
  
! The pragma `Suppress (Overflow_Check)` suppresses
  overflow checking, but does not affect the overflow mode.
  
! The pragma `Unsuppress (Overflow_Check)` unsuppresses (enables)
  overflow checking, but does not affect the overflow mode.
  
  Pragma Overriding_Renamings
--- 4276,4300 ----
  This pragma sets the current overflow mode to the given setting. For details
  of the meaning of these modes, please refer to the
  'Overflow Check Handling in GNAT' appendix in the
! GNAT User's Guide. If only the ``General`` parameter is present,
  the given mode applies to all expressions. If both parameters are present,
! the ``General`` mode applies to expressions outside assertions, and
! the ``Eliminated`` mode applies to expressions within assertions.
  
! The case of the ``MODE`` parameter is ignored,
! so ``MINIMIZED``, ``Minimized`` and
! ``minimized`` all have the same effect.
  
! The ``Overflow_Mode`` pragma has the same scoping and placement
! rules as pragma ``Suppress``, so it can occur either as a
  configuration pragma, specifying a default for the whole
  program, or in a declarative scope, where it applies to the
  remaining declarations and statements in that scope.
  
! The pragma ``Suppress (Overflow_Check)`` suppresses
  overflow checking, but does not affect the overflow mode.
  
! The pragma ``Unsuppress (Overflow_Check)`` unsuppresses (enables)
  overflow checking, but does not affect the overflow mode.
  
  Pragma Overriding_Renamings
*************** Syntax:
*** 4213,4219 ****
  
    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
--- 4363,4369 ----
  
    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
*************** Syntax:
*** 4230,4239 ****
  Syntax checked, but otherwise ignored by GNAT.  This is recognized for
  compatibility with DEC Ada 83 implementations, where it is used within a
  task definition to request that a task be made passive.  If the argument
! `Semaphore` is present, or the argument is omitted, then DEC Ada 83
  treats the pragma as an assertion that the containing task is passive
  and that optimization of context switch with this task is permitted and
! desired.  If the argument `No` is present, the task must not be
  optimized.  GNAT does not attempt to optimize any tasks in this manner
  (since protected objects are available in place of passive tasks).
  
--- 4380,4389 ----
  Syntax checked, but otherwise ignored by GNAT.  This is recognized for
  compatibility with DEC Ada 83 implementations, where it is used within a
  task definition to request that a task be made passive.  If the argument
! ``Semaphore`` is present, or the argument is omitted, then DEC Ada 83
  treats the pragma as an assertion that the containing task is passive
  and that optimization of context switch with this task is permitted and
! desired.  If the argument ``No`` is present, the task must not be
  optimized.  GNAT does not attempt to optimize any tasks in this manner
  (since protected objects are available in place of passive tasks).
  
*************** Syntax:
*** 4253,4267 ****
    pragma Persistent_BSS [(LOCAL_NAME)]
  
  
! This pragma allows selected objects to be placed in the `.persistent_bss`
  section. On some targets the linker and loader provide for special
  treatment of this section, allowing a program to be reloaded without
  affecting the contents of this data (hence the name persistent).
  
  There are two forms of usage. If an argument is given, it must be the
! local name of a library level object, with no explicit initialization
  and whose type is potentially persistent. If no argument is given, then
! the pragma is a configuration pragma, and applies to all library level
  objects with no explicit initialization of potentially persistent types.
  
  A potentially persistent type is a scalar type, or an untagged,
--- 4403,4417 ----
    pragma Persistent_BSS [(LOCAL_NAME)]
  
  
! This pragma allows selected objects to be placed in the ``.persistent_bss``
  section. On some targets the linker and loader provide for special
  treatment of this section, allowing a program to be reloaded without
  affecting the contents of this data (hence the name persistent).
  
  There are two forms of usage. If an argument is given, it must be the
! local name of a library-level object, with no explicit initialization
  and whose type is potentially persistent. If no argument is given, then
! the pragma is a configuration pragma, and applies to all library-level
  objects with no explicit initialization of potentially persistent types.
  
  A potentially persistent type is a scalar type, or an untagged,
*************** or an array, all of whose constraints ar
*** 4271,4277 ****
  type is potentially persistent.
  
  If this pragma is used on a target where this feature is not supported,
! then the pragma will be ignored. See also `pragma Linker_Section`.
  
  Pragma Polling
  ==============
--- 4421,4427 ----
  type is potentially persistent.
  
  If this pragma is used on a target where this feature is not supported,
! then the pragma will be ignored. See also ``pragma Linker_Section``.
  
  Pragma Polling
  ==============
*************** Syntax:
*** 4285,4315 ****
  
  
  This pragma controls the generation of polling code.  This is normally off.
! If `pragma Polling (ON)` is used then periodic calls are generated to
! the routine `Ada.Exceptions.Poll`.  This routine is a separate unit in the
  runtime library, and can be found in file :file:`a-excpol.adb`.
  
! Pragma `Polling` can appear as a configuration pragma (for example it
  can be placed in the :file:`gnat.adc` file) to enable polling globally, or it
  can be used in the statement or declaration sequence to control polling
  more locally.
  
  A call to the polling routine is generated at the start of every loop and
! at the start of every subprogram call.  This guarantees that the `Poll`
  routine is called frequently, and places an upper bound (determined by
! the complexity of the code) on the period between two `Poll` calls.
  
  The primary purpose of the polling interface is to enable asynchronous
  aborts on targets that cannot otherwise support it (for example Windows
  NT), but it may be used for any other purpose requiring periodic polling.
  The standard version is null, and can be replaced by a user program.  This
! will require re-compilation of the `Ada.Exceptions` package that can
  be found in files :file:`a-except.ads` and :file:`a-except.adb`.
  
  A standard alternative unit (in file :file:`4wexcpol.adb` in the standard GNAT
  distribution) is used to enable the asynchronous abort capability on
  targets that do not normally support the capability.  The version of
! `Poll` in this file makes a call to the appropriate runtime routine
  to test for an abort condition.
  
  Note that polling can also be enabled by use of the *-gnatP* switch.
--- 4435,4465 ----
  
  
  This pragma controls the generation of polling code.  This is normally off.
! If ``pragma Polling (ON)`` is used then periodic calls are generated to
! the routine ``Ada.Exceptions.Poll``.  This routine is a separate unit in the
  runtime library, and can be found in file :file:`a-excpol.adb`.
  
! Pragma ``Polling`` can appear as a configuration pragma (for example it
  can be placed in the :file:`gnat.adc` file) to enable polling globally, or it
  can be used in the statement or declaration sequence to control polling
  more locally.
  
  A call to the polling routine is generated at the start of every loop and
! at the start of every subprogram call.  This guarantees that the ``Poll``
  routine is called frequently, and places an upper bound (determined by
! the complexity of the code) on the period between two ``Poll`` calls.
  
  The primary purpose of the polling interface is to enable asynchronous
  aborts on targets that cannot otherwise support it (for example Windows
  NT), but it may be used for any other purpose requiring periodic polling.
  The standard version is null, and can be replaced by a user program.  This
! will require re-compilation of the ``Ada.Exceptions`` package that can
  be found in files :file:`a-except.ads` and :file:`a-except.adb`.
  
  A standard alternative unit (in file :file:`4wexcpol.adb` in the standard GNAT
  distribution) is used to enable the asynchronous abort capability on
  targets that do not normally support the capability.  The version of
! ``Poll`` in this file makes a call to the appropriate runtime routine
  to test for an abort condition.
  
  Note that polling can also be enabled by use of the *-gnatP* switch.
*************** Syntax:
*** 4330,4338 ****
    pragma Post (Boolean_Expression);
  
  
! The `Post` pragma is intended to be an exact replacement for
  the language-defined
! `Post` aspect, and shares its restrictions and semantics.
  It must appear either immediately following the corresponding
  subprogram declaration (only other pragmas may intervene), or
  if there is no separate subprogram declaration, then it can
--- 4480,4488 ----
    pragma Post (Boolean_Expression);
  
  
! The ``Post`` pragma is intended to be an exact replacement for
  the language-defined
! ``Post`` aspect, and shares its restrictions and semantics.
  It must appear either immediately following the corresponding
  subprogram declaration (only other pragmas may intervene), or
  if there is no separate subprogram declaration, then it can
*************** Syntax:
*** 4356,4362 ****
     [,[Message =>] String_Expression]);
  
  
! The `Postcondition` pragma allows specification of automatic
  postcondition checks for subprograms. These checks are similar to
  assertions, but are automatically inserted just prior to the return
  statements of the subprogram with which they are associated (including
--- 4506,4512 ----
     [,[Message =>] String_Expression]);
  
  
! The ``Postcondition`` pragma allows specification of automatic
  postcondition checks for subprograms. These checks are similar to
  assertions, but are automatically inserted just prior to the return
  statements of the subprogram with which they are associated (including
*************** In addition, the boolean expression whic
*** 4367,4373 ****
  must be true may contain references to function'Result in the case
  of a function to refer to the returned value.
  
! `Postcondition` pragmas may appear either immediately following the
  (separate) declaration of a subprogram, or at the start of the
  declarations of a subprogram body. Only other pragmas may intervene
  (that is appear between the subprogram declaration and its
--- 4517,4523 ----
  must be true may contain references to function'Result in the case
  of a function to refer to the returned value.
  
! ``Postcondition`` pragmas may appear either immediately following the
  (separate) declaration of a subprogram, or at the start of the
  declarations of a subprogram body. Only other pragmas may intervene
  (that is appear between the subprogram declaration and its
*************** The postconditions are collected and aut
*** 4381,4388 ****
  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 `Check_Policy`
! with an identifier of `Postcondition` can also be used to
  control whether postconditions are active.
  
  The general approach is that postconditions are placed in the spec
--- 4531,4538 ----
  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 ``Check_Policy``
! with an identifier of ``Postcondition`` can also be used to
  control whether postconditions are active.
  
  The general approach is that postconditions are placed in the spec
*************** might have the following postcondition:
*** 4422,4428 ****
       end Sqrt
  
  
! As this example, shows, the use of the `Old` attribute
  is often useful in postconditions to refer to the state on
  entry to the subprogram.
  
--- 4572,4578 ----
       end Sqrt
  
  
! As this example, shows, the use of the ``Old`` attribute
  is often useful in postconditions to refer to the state on
  entry to the subprogram.
  
*************** from the subprogram. If an abnormal retu
*** 4431,4437 ****
  raising an exception, then the postconditions are not checked.
  
  If a postcondition fails, then the exception
! `System.Assertions.Assert_Failure` is raised. If
  a message argument was supplied, then the given string
  will be used as the exception message. If no message
  argument was supplied, then the default message has
--- 4581,4587 ----
  raising an exception, then the postconditions are not checked.
  
  If a postcondition fails, then the exception
! ``System.Assertions.Assert_Failure`` is raised. If
  a message argument was supplied, then the given string
  will be used as the exception message. If no message
  argument was supplied, then the default message has
*************** mutually recursive postconditions as in:
*** 4473,4479 ****
  
  
  There are no restrictions on the complexity or form of
! conditions used within `Postcondition` pragmas.
  The following example shows that it is even possible
  to verify performance behavior.
  
--- 4623,4629 ----
  
  
  There are no restrictions on the complexity or form of
! conditions used within ``Postcondition`` pragmas.
  The following example shows that it is even possible
  to verify performance behavior.
  
*************** inlining (-gnatN option set) are accepte
*** 4502,4513 ****
  by the compiler, but are ignored at run-time even if postcondition
  checking is enabled.
  
! Note that pragma `Postcondition` differs from the language-defined
! `Post` aspect (and corresponding `Post` pragma) in allowing
  multiple occurrences, allowing occurences in the body even if there
  is a separate spec, and allowing a second string parameter, and the
! use of the pragma identifier `Check`. Historically, pragma
! `Postcondition` was implemented prior to the development of
  Ada 2012, and has been retained in its original form for
  compatibility purposes.
  
--- 4652,4663 ----
  by the compiler, but are ignored at run-time even if postcondition
  checking is enabled.
  
! Note that pragma ``Postcondition`` differs from the language-defined
! ``Post`` aspect (and corresponding ``Post`` pragma) in allowing
  multiple occurrences, allowing occurences in the body even if there
  is a separate spec, and allowing a second string parameter, and the
! use of the pragma identifier ``Check``. Historically, pragma
! ``Postcondition`` was implemented prior to the development of
  Ada 2012, and has been retained in its original form for
  compatibility purposes.
  
*************** Syntax:
*** 4526,4549 ****
    pragma Post_Class (Boolean_Expression);
  
  
! The `Post_Class` pragma is intended to be an exact replacement for
  the language-defined
! `Post'Class` aspect, and shares its restrictions and semantics.
  It must appear either immediately following the corresponding
  subprogram declaration (only other pragmas may intervene), or
  if there is no separate subprogram declaration, then it can
  appear at the start of the declarations in a subprogram body
  (preceded only by other pragmas).
  
! 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
! policy that controls this pragma is `Post'Class`, not
! `Post_Class`.
  
  Pragma Rename_Pragma
  ============================
--- 4676,4699 ----
    pragma Post_Class (Boolean_Expression);
  
  
! The ``Post_Class`` pragma is intended to be an exact replacement for
  the language-defined
! ``Post'Class`` aspect, and shares its restrictions and semantics.
  It must appear either immediately following the corresponding
  subprogram declaration (only other pragmas may intervene), or
  if there is no separate subprogram declaration, then it can
  appear at the start of the declarations in a subprogram body
  (preceded only by other pragmas).
  
! 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
! policy that controls this pragma is ``Post'Class``, not
! ``Post_Class``.
  
  Pragma Rename_Pragma
  ============================
*************** Syntax:
*** 4559,4565 ****
             [Renamed  =>] pragma_IDENTIFIER);
  
  This pragma provides a mechanism for supplying new names for existing
! pragmas. The `New_Name` identifier can subsequently be used as a synonym for
  the Renamed pragma. For example, suppose you have code that was originally
  developed on a compiler that supports Inline_Only as an implementation defined
  pragma. And suppose the semantics of pragma Inline_Only are identical to (or at
--- 4709,4715 ----
             [Renamed  =>] pragma_IDENTIFIER);
  
  This pragma provides a mechanism for supplying new names for existing
! pragmas. The ``New_Name`` identifier can subsequently be used as a synonym for
  the Renamed pragma. For example, suppose you have code that was originally
  developed on a compiler that supports Inline_Only as an implementation defined
  pragma. And suppose the semantics of pragma Inline_Only are identical to (or at
*************** Syntax:
*** 4597,4605 ****
    pragma Pre (Boolean_Expression);
  
  
! The `Pre` pragma is intended to be an exact replacement for
  the language-defined
! `Pre` aspect, and shares its restrictions and semantics.
  It must appear either immediately following the corresponding
  subprogram declaration (only other pragmas may intervene), or
  if there is no separate subprogram declaration, then it can
--- 4747,4755 ----
    pragma Pre (Boolean_Expression);
  
  
! The ``Pre`` pragma is intended to be an exact replacement for
  the language-defined
! ``Pre`` aspect, and shares its restrictions and semantics.
  It must appear either immediately following the corresponding
  subprogram declaration (only other pragmas may intervene), or
  if there is no separate subprogram declaration, then it can
*************** Syntax:
*** 4623,4629 ****
     [,[Message =>] String_Expression]);
  
  
! The `Precondition` pragma is similar to `Postcondition`
  except that the corresponding checks take place immediately upon
  entry to the subprogram, and if a precondition fails, the exception
  is raised in the context of the caller, and the attribute 'Result
--- 4773,4779 ----
     [,[Message =>] String_Expression]);
  
  
! The ``Precondition`` pragma is similar to ``Postcondition``
  except that the corresponding checks take place immediately upon
  entry to the subprogram, and if a precondition fails, the exception
  is raised in the context of the caller, and the attribute 'Result
*************** within a package spec:
*** 4644,4650 ****
    end Math_Functions;
  
  
! `Precondition` pragmas may appear either immediately following the
  (separate) declaration of a subprogram, or at the start of the
  declarations of a subprogram body. Only other pragmas may intervene
  (that is appear between the subprogram declaration and its
--- 4794,4800 ----
    end Math_Functions;
  
  
! ``Precondition`` pragmas may appear either immediately following the
  (separate) declaration of a subprogram, or at the start of the
  declarations of a subprogram body. Only other pragmas may intervene
  (that is appear between the subprogram declaration and its
*************** inlining (-gnatN option set) are accepte
*** 4657,4668 ****
  by the compiler, but are ignored at run-time even if precondition
  checking is enabled.
  
! Note that pragma `Precondition` differs from the language-defined
! `Pre` aspect (and corresponding `Pre` pragma) in allowing
  multiple occurrences, allowing occurences in the body even if there
  is a separate spec, and allowing a second string parameter, and the
! use of the pragma identifier `Check`. Historically, pragma
! `Precondition` was implemented prior to the development of
  Ada 2012, and has been retained in its original form for
  compatibility purposes.
  
--- 4807,4818 ----
  by the compiler, but are ignored at run-time even if precondition
  checking is enabled.
  
! Note that pragma ``Precondition`` differs from the language-defined
! ``Pre`` aspect (and corresponding ``Pre`` pragma) in allowing
  multiple occurrences, allowing occurences in the body even if there
  is a separate spec, and allowing a second string parameter, and the
! use of the pragma identifier ``Check``. Historically, pragma
! ``Precondition`` was implemented prior to the development of
  Ada 2012, and has been retained in its original form for
  compatibility purposes.
  
*************** Syntax:
*** 4682,4691 ****
  
  
  This pragma (available in all versions of Ada in GNAT) encompasses both
! the `Static_Predicate` and `Dynamic_Predicate` aspects in
  Ada 2012. A predicate is regarded as static if it has an allowed form
! for `Static_Predicate` and is otherwise treated as a
! `Dynamic_Predicate`. Otherwise, predicates specified by this
  pragma behave exactly as described in the Ada 2012 reference manual.
  For example, if we have
  
--- 4832,4841 ----
  
  
  This pragma (available in all versions of Ada in GNAT) encompasses both
! the ``Static_Predicate`` and ``Dynamic_Predicate`` aspects in
  Ada 2012. A predicate is regarded as static if it has an allowed form
! for ``Static_Predicate`` and is otherwise treated as a
! ``Dynamic_Predicate``. Otherwise, predicates specified by this
  pragma behave exactly as described in the Ada 2012 reference manual.
  For example, if we have
  
*************** the effect is identical to the following
*** 4711,4718 ****
      Dynamic_Predicate => F(Q) or G(Q);
  
  
! Note that there are no pragmas `Dynamic_Predicate`
! or `Static_Predicate`. That is
  because these pragmas would affect legality and semantics of
  the program and thus do not have a neutral effect if ignored.
  The motivation behind providing pragmas equivalent to
--- 4861,4868 ----
      Dynamic_Predicate => F(Q) or G(Q);
  
  
! Note that there are no pragmas ``Dynamic_Predicate``
! or ``Static_Predicate``. That is
  because these pragmas would affect legality and semantics of
  the program and thus do not have a neutral effect if ignored.
  The motivation behind providing pragmas equivalent to
*************** will ignore the pragmas. That doesn't wo
*** 4722,4728 ****
  static and dynamic predicates, since if the corresponding
  pragmas are ignored, then the behavior of the program is
  fundamentally changed (for example a membership test
! `A in B` would not take into account a predicate
  defined for subtype B). When following this approach, the
  use of predicates should be avoided.
  
--- 4872,4878 ----
  static and dynamic predicates, since if the corresponding
  pragmas are ignored, then the behavior of the program is
  fundamentally changed (for example a membership test
! ``A in B`` would not take into account a predicate
  defined for subtype B). When following this approach, the
  use of predicates should be avoided.
  
*************** Syntax:
*** 4739,4747 ****
       [Message =>] String_Expression);
  
  
! The `Predicate_Failure` pragma is intended to be an exact replacement for
  the language-defined
! `Predicate_Failure` aspect, and shares its restrictions and semantics.
  
  Pragma Preelaborable_Initialization
  ===================================
--- 4889,4897 ----
       [Message =>] String_Expression);
  
  
! The ``Predicate_Failure`` pragma is intended to be an exact replacement for
  the language-defined
! ``Predicate_Failure`` aspect, and shares its restrictions and semantics.
  
  Pragma Preelaborable_Initialization
  ===================================
*************** The pragma has no effect if the message
*** 4787,4793 ****
  than a static string constant, since the assumption in this case is that
  the program computes exactly the string it wants. If you still want the
  prefixing in this case, you can always call
! `GNAT.Source_Info.Enclosing_Entity` and prepend the string manually.
  
  Pragma Pre_Class
  ================
--- 4937,4943 ----
  than a static string constant, since the assumption in this case is that
  the program computes exactly the string it wants. If you still want the
  prefixing in this case, you can always call
! ``GNAT.Source_Info.Enclosing_Entity`` and prepend the string manually.
  
  Pragma Pre_Class
  ================
*************** Syntax:
*** 4804,4827 ****
    pragma Pre_Class (Boolean_Expression);
  
  
! The `Pre_Class` pragma is intended to be an exact replacement for
  the language-defined
! `Pre'Class` aspect, and shares its restrictions and semantics.
  It must appear either immediately following the corresponding
  subprogram declaration (only other pragmas may intervene), or
  if there is no separate subprogram declaration, then it can
  appear at the start of the declarations in a subprogram body
  (preceded only by other pragmas).
  
! Note: This pragma is called `Pre_Class` rather than
! `Pre'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 `Pre'Class`, not
! `Pre_Class`.
  
  Pragma Priority_Specific_Dispatching
  ====================================
--- 4954,4977 ----
    pragma Pre_Class (Boolean_Expression);
  
  
! The ``Pre_Class`` pragma is intended to be an exact replacement for
  the language-defined
! ``Pre'Class`` aspect, and shares its restrictions and semantics.
  It must appear either immediately following the corresponding
  subprogram declaration (only other pragmas may intervene), or
  if there is no separate subprogram declaration, then it can
  appear at the start of the declarations in a subprogram body
  (preceded only by other pragmas).
  
! Note: This pragma is called ``Pre_Class`` rather than
! ``Pre'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 ``Pre'Class``, not
! ``Pre_Class``.
  
  Pragma Priority_Specific_Dispatching
  ====================================
*************** Syntax:
*** 4855,4875 ****
  
  .. code-block:: ada
  
!   pragma Profile (Ravenscar | Restricted | Rational | GNAT_Extended_Ravenscar);
  
  
  This pragma is standard in Ada 2005, but is available in all earlier
  versions of Ada as an implementation-defined pragma. This is a
  configuration pragma that establishes a set of configuration pragmas
! that depend on the argument. `Ravenscar` is standard in Ada 2005.
! The other possibilities (`Restricted`, `Rational`, `GNAT_Extended_Ravenscar`)
  are implementation-defined. The set of configuration pragmas
  is defined in the following sections.
  
  
  * Pragma Profile (Ravenscar)
  
!   The `Ravenscar` profile is standard in Ada 2005,
    but is available in all earlier
    versions of Ada as an implementation-defined pragma. This profile
    establishes the following set of configuration pragmas:
--- 5005,5027 ----
  
  .. code-block:: ada
  
!   pragma Profile (Ravenscar | Restricted | Rational |
!                   GNAT_Extended_Ravenscar | GNAT_Ravenscar_EDF );
  
  
  This pragma is standard in Ada 2005, but is available in all earlier
  versions of Ada as an implementation-defined pragma. This is a
  configuration pragma that establishes a set of configuration pragmas
! that depend on the argument. ``Ravenscar`` is standard in Ada 2005.
! The other possibilities (``Restricted``, ``Rational``,
! ``GNAT_Extended_Ravenscar``, ``GNAT_Ravenscar_EDF``)
  are implementation-defined. The set of configuration pragmas
  is defined in the following sections.
  
  
  * Pragma Profile (Ravenscar)
  
!   The ``Ravenscar`` profile is standard in Ada 2005,
    but is available in all earlier
    versions of Ada as an implementation-defined pragma. This profile
    establishes the following set of configuration pragmas:
*************** is defined in the following sections.
*** 4992,4997 ****
--- 5144,5154 ----
    The ``Max_Protected_Entries``, ``Max_Entry_Queue_Length``, and
    ``No_Relative_Delay`` restrictions have been removed.
  
+ * Pragma Profile (GNAT_Ravenscar_EDF)
+ 
+   This profile corresponds to the Ravenscar profile but using
+   EDF_Across_Priority as the Task_Scheduling_Policy.
+ 
  * Pragma Profile (Restricted)
  
    This profile corresponds to the GNAT restricted run time. It
*************** Syntax:
*** 5040,5048 ****
  
  
  This is an implementation-defined pragma that is similar in
! effect to `pragma Profile` except that instead of
! generating `Restrictions` pragmas, it generates
! `Restriction_Warnings` pragmas. The result is that
  violations of the profile generate warning messages instead
  of error messages.
  
--- 5197,5205 ----
  
  
  This is an implementation-defined pragma that is similar in
! effect to ``pragma Profile`` except that instead of
! generating ``Restrictions`` pragmas, it generates
! ``Restriction_Warnings`` pragmas. The result is that
  violations of the profile generate warning messages instead
  of error messages.
  
*************** Syntax:
*** 5103,5109 ****
    | static_string_EXPRESSION
  
  
! This pragma is identical in effect to pragma `Common_Object`.
  
  .. _Pragma-Pure_Function:
  
--- 5260,5266 ----
    | static_string_EXPRESSION
  
  
! This pragma is identical in effect to pragma ``Common_Object``.
  
  .. _Pragma-Pure_Function:
  
*************** Syntax:
*** 5121,5127 ****
  This pragma appears in the same declarative part as a function
  declaration (or a set of function declarations if more than one
  overloaded declaration exists, in which case the pragma applies
! 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
--- 5278,5284 ----
  This pragma appears in the same declarative part as a function
  declaration (or a set of function declarations if more than one
  overloaded declaration exists, in which case the pragma applies
! 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 fun
*** 5129,5135 ****
  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
  with functions that are conceptually pure, even if they do modify
  global variables.  For example, a square root function that is
  instrumented to count the number of times it is called is still
--- 5286,5292 ----
  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
  with functions that are conceptually pure, even if they do modify
  global variables.  For example, a square root function that is
  instrumented to count the number of times it is called is still
*************** the compiler may optimize away calls wit
*** 5146,5173 ****
  if that results in unexpected behavior, the proper action is not to
  use the pragma for subprograms that are not (conceptually) pure.
  
! Note: Most functions in a `Pure` package are automatically pure, and
! there is no need to use pragma `Pure_Function` for such functions.  One
  exception is any function that has at least one formal of type
! `System.Address` or a type derived from it.  Such functions are not
  considered pure by default, since the compiler assumes that the
! `Address` parameter may be functioning as a pointer and that the
  referenced data may change even if the address value does not.
  Similarly, imported functions are not considered to be pure by default,
  since there is no way of checking that they are in fact pure.  The use
! of pragma `Pure_Function` for such a function will override these default
  assumption, and cause the compiler to treat a designated subprogram as pure
  in these cases.
  
! Note: If pragma `Pure_Function` is applied to a renamed function, it
  applies to the underlying renamed function.  This can be used to
  disambiguate cases of overloading where some but not all functions
  in a set of overloaded functions are to be designated as pure.
  
! If pragma `Pure_Function` is applied to a library level function, the
  function is also considered pure from an optimization point of view, but the
  unit is not a Pure unit in the categorization sense. So for example, a function
! thus marked is free to `with` non-pure units.
  
  Pragma Rational
  ===============
--- 5303,5330 ----
  if that results in unexpected behavior, the proper action is not to
  use the pragma for subprograms that are not (conceptually) pure.
  
! Note: Most functions in a ``Pure`` package are automatically pure, and
! there is no need to use pragma ``Pure_Function`` for such functions.  One
  exception is any function that has at least one formal of type
! ``System.Address`` or a type derived from it.  Such functions are not
  considered pure by default, since the compiler assumes that the
! ``Address`` parameter may be functioning as a pointer and that the
  referenced data may change even if the address value does not.
  Similarly, imported functions are not considered to be pure by default,
  since there is no way of checking that they are in fact pure.  The use
! of pragma ``Pure_Function`` for such a function will override these default
  assumption, and cause the compiler to treat a designated subprogram as pure
  in these cases.
  
! Note: If pragma ``Pure_Function`` is applied to a renamed function, it
  applies to the underlying renamed function.  This can be used to
  disambiguate cases of overloading where some but not all functions
  in a set of overloaded functions are to be designated as pure.
  
! If pragma ``Pure_Function`` is applied to a library-level function, the
  function is also considered pure from an optimization point of view, but the
  unit is not a Pure unit in the categorization sense. So for example, a function
! thus marked is free to ``with`` non-pure units.
  
  Pragma Rational
  ===============
*************** compatibility purposes. It is equivalent
*** 5209,5215 ****
    pragma Profile (Ravenscar);
  
  
! which is the preferred method of setting the `Ravenscar` profile.
  
  .. _Pragma-Refined_Depends:
  
--- 5366,5372 ----
    pragma Profile (Ravenscar);
  
  
! which is the preferred method of setting the ``Ravenscar`` profile.
  
  .. _Pragma-Refined_Depends:
  
*************** Syntax:
*** 5241,5247 ****
  
    where FUNCTION_RESULT is a function Result attribute_reference
  
! For the semantics of this pragma, see the entry for aspect `Refined_Depends` in
  the SPARK 2014 Reference Manual, section 6.1.5.
  
  .. _Pragma-Refined_Global:
--- 5398,5404 ----
  
    where FUNCTION_RESULT is a function Result attribute_reference
  
! For the semantics of this pragma, see the entry for aspect ``Refined_Depends`` in
  the SPARK 2014 Reference Manual, section 6.1.5.
  
  .. _Pragma-Refined_Global:
*************** Syntax:
*** 5266,5272 ****
    GLOBAL_LIST   ::= GLOBAL_ITEM | (GLOBAL_ITEM {, GLOBAL_ITEM})
    GLOBAL_ITEM   ::= NAME
  
! For the semantics of this pragma, see the entry for aspect `Refined_Global` in
  the SPARK 2014 Reference Manual, section 6.1.4.
  
  .. _Pragma-Refined_Post:
--- 5423,5429 ----
    GLOBAL_LIST   ::= GLOBAL_ITEM | (GLOBAL_ITEM {, GLOBAL_ITEM})
    GLOBAL_ITEM   ::= NAME
  
! For the semantics of this pragma, see the entry for aspect ``Refined_Global`` in
  the SPARK 2014 Reference Manual, section 6.1.4.
  
  .. _Pragma-Refined_Post:
*************** Syntax:
*** 5280,5286 ****
  
    pragma Refined_Post (boolean_EXPRESSION);
  
! For the semantics of this pragma, see the entry for aspect `Refined_Post` in
  the SPARK 2014 Reference Manual, section 7.2.7.
  
  .. _Pragma-Refined_State:
--- 5437,5443 ----
  
    pragma Refined_Post (boolean_EXPRESSION);
  
! For the semantics of this pragma, see the entry for aspect ``Refined_Post`` in
  the SPARK 2014 Reference Manual, section 7.2.7.
  
  .. _Pragma-Refined_State:
*************** Syntax:
*** 5306,5312 ****
  
    CONSTITUENT ::= object_NAME | state_NAME
  
! For the semantics of this pragma, see the entry for aspect `Refined_State` in
  the SPARK 2014 Reference Manual, section 7.2.2.
  
  Pragma Relative_Deadline
--- 5463,5469 ----
  
    CONSTITUENT ::= object_NAME | state_NAME
  
! For the semantics of this pragma, see the entry for aspect ``Refined_State`` in
  the SPARK 2014 Reference Manual, section 7.2.2.
  
  Pragma Relative_Deadline
*************** It specifies an exception to the RM rule
*** 5342,5348 ****
  the use of a remote access to class-wide type as actual for a formal
  access type.
  
! When this pragma applies to a formal access type `Entity`, that
  type is treated as a remote access to class-wide type in the generic.
  It must be a formal general access type, and its designated type must
  be the class-wide type of a formal tagged limited private type from the
--- 5499,5505 ----
  the use of a remote access to class-wide type as actual for a formal
  access type.
  
! When this pragma applies to a formal access type ``Entity``, that
  type is treated as a remote access to class-wide type in the generic.
  It must be a formal general access type, and its designated type must
  be the class-wide type of a formal tagged limited private type from the
*************** Syntax:
*** 5389,5395 ****
  
  This pragma allows a series of restriction identifiers to be
  specified (the list of allowed identifiers is the same as for
! pragma `Restrictions`). For each of these identifiers
  the compiler checks for violations of the restriction, but
  generates a warning message rather than an error message
  if the restriction is violated.
--- 5546,5552 ----
  
  This pragma allows a series of restriction identifiers to be
  specified (the list of allowed identifiers is the same as for
! pragma ``Restrictions``). For each of these identifiers
  the compiler checks for violations of the restriction, but
  generates a warning message rather than an error message
  if the restriction is violated.
*************** Syntax:
*** 5536,5564 ****
  
    pragma Secondary_Stack_Size (integer_EXPRESSION);
  
! This pragma appears within the task definition of a single task declaration 
! or a task type declaration (like pragma `Storage_Size`) and applies to all 
! task objects of that type. The argument specifies the size of the secondary 
  stack to be used by these task objects, and must be of an integer type. The
! secondary stack is used to handle functions that return a variable-sized 
  result, for example a function returning an unconstrained String.
  
  Note this pragma only applies to targets using fixed secondary stacks, like
! VxWorks 653 and bare board targets, where a fixed block for the 
  secondary stack is allocated from the primary stack of the task. By default,
  these targets assign a percentage of the primary stack for the secondary stack,
! as defined by `System.Parameter.Sec_Stack_Percentage`. With this pragma, 
! an `integer_EXPRESSION` of bytes is assigned from the primary stack instead.
  
! For most targets, the pragma does not apply as the secondary stack grows on 
! demand: allocated as a chain of blocks in the heap. The default size of these 
! blocks can be modified via the `-D` binder option as described in 
  :title:`GNAT User's Guide`.
  
! Note that no check is made to see if the secondary stack can fit inside the 
  primary stack.
  
! Note the pragma cannot appear when the restriction `No_Secondary_Stack`
  is in effect.
  
  Pragma Share_Generic
--- 5693,5721 ----
  
    pragma Secondary_Stack_Size (integer_EXPRESSION);
  
! This pragma appears within the task definition of a single task declaration
! or a task type declaration (like pragma ``Storage_Size``) and applies to all
! task objects of that type. The argument specifies the size of the secondary
  stack to be used by these task objects, and must be of an integer type. The
! secondary stack is used to handle functions that return a variable-sized
  result, for example a function returning an unconstrained String.
  
  Note this pragma only applies to targets using fixed secondary stacks, like
! VxWorks 653 and bare board targets, where a fixed block for the
  secondary stack is allocated from the primary stack of the task. By default,
  these targets assign a percentage of the primary stack for the secondary stack,
! as defined by ``System.Parameter.Sec_Stack_Percentage``. With this pragma,
! an ``integer_EXPRESSION`` of bytes is assigned from the primary stack instead.
  
! For most targets, the pragma does not apply as the secondary stack grows on
! demand: allocated as a chain of blocks in the heap. The default size of these
! blocks can be modified via the :switch:`-D` binder option as described in
  :title:`GNAT User's Guide`.
  
! Note that no check is made to see if the secondary stack can fit inside the
  primary stack.
  
! Note the pragma cannot appear when the restriction ``No_Secondary_Stack``
  is in effect.
  
  Pragma Share_Generic
*************** Syntax:
*** 5575,5581 ****
  
  
  This pragma is provided for compatibility with Dec Ada 83. It has
! no effect in `GNAT` (which does not implement shared generics), other
  than to check that the given names are all names of generic units or
  generic instances.
  
--- 5732,5738 ----
  
  
  This pragma is provided for compatibility with Dec Ada 83. It has
! no effect in GNAT (which does not implement shared generics), other
  than to check that the given names are all names of generic units or
  generic instances.
  
*************** Syntax:
*** 5637,5650 ****
  
  
  A type can be established as a 'simple storage pool type' by applying
! the representation pragma `Simple_Storage_Pool_Type` to the type.
  A type named in the pragma must be a library-level immutably limited record
  type or limited tagged type declared immediately within a package declaration.
  The type can also be a limited private type whose full type is allowed as
  a simple storage pool type.
  
! For a simple storage pool type `SSP`, nonabstract primitive subprograms
! `Allocate`, `Deallocate`, and `Storage_Size` can be declared that
  are subtype conformant with the following subprogram declarations:
  
  
--- 5794,5807 ----
  
  
  A type can be established as a 'simple storage pool type' by applying
! the representation pragma ``Simple_Storage_Pool_Type`` to the type.
  A type named in the pragma must be a library-level immutably limited record
  type or limited tagged type declared immediately within a package declaration.
  The type can also be a limited private type whose full type is allowed as
  a simple storage pool type.
  
! For a simple storage pool type ``SSP``, nonabstract primitive subprograms
! ``Allocate``, ``Deallocate``, and ``Storage_Size`` can be declared that
  are subtype conformant with the following subprogram declarations:
  
  
*************** are subtype conformant with the followin
*** 5666,5676 ****
      return System.Storage_Elements.Storage_Count;
  
  
! Procedure `Allocate` must be declared, whereas `Deallocate` and
! `Storage_Size` are optional. If `Deallocate` is not declared, then
  applying an unchecked deallocation has no effect other than to set its actual
! parameter to null. If `Storage_Size` is not declared, then the
! `Storage_Size` attribute applied to an access type associated with
  a pool object of type SSP returns zero. Additional operations can be declared
  for a simple storage pool type (such as for supporting a mark/release
  storage-management discipline).
--- 5823,5833 ----
      return System.Storage_Elements.Storage_Count;
  
  
! Procedure ``Allocate`` must be declared, whereas ``Deallocate`` and
! ``Storage_Size`` are optional. If ``Deallocate`` is not declared, then
  applying an unchecked deallocation has no effect other than to set its actual
! parameter to null. If ``Storage_Size`` is not declared, then the
! ``Storage_Size`` attribute applied to an access type associated with
  a pool object of type SSP returns zero. Additional operations can be declared
  for a simple storage pool type (such as for supporting a mark/release
  storage-management discipline).
*************** Use this to override the normal naming c
*** 5718,5729 ****
  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.
  
  The optional Index argument should be used when a file contains multiple
! units, and when you do not want to use `gnatchop` to separate then
  into multiple files (which is the recommended procedure to limit the
  number of recompilations that are needed when some sources change).
  For instance, if the source file :file:`source.ada` contains
--- 5875,5886 ----
  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.
  
  The optional Index argument should be used when a file contains multiple
! units, and when you do not want to use ``gnatchop`` to separate then
  into multiple files (which is the recommended procedure to limit the
  number of recompilations that are needed when some sources change).
  For instance, if the source file :file:`source.ada` contains
*************** you could use the following configuratio
*** 5753,5762 ****
      (A, Body_File_Name => "source.ada", Index => 2);
  
  
! Note that the `gnatname` utility can also be used to generate those
  configuration pragmas.
  
! Another form of the `Source_File_Name` pragma allows
  the specification of patterns defining alternative file naming schemes
  to apply to all files.
  
--- 5910,5919 ----
      (A, Body_File_Name => "source.ada", Index => 2);
  
  
! Note that the ``gnatname`` utility can also be used to generate those
  configuration pragmas.
  
! Another form of the ``Source_File_Name`` pragma allows
  the specification of patterns defining alternative file naming schemes
  to apply to all files.
  
*************** file naming is controlled by Source_File
*** 5796,5803 ****
  usually supplied automatically by the project manager. A pragma
  Source_File_Name cannot appear after a :ref:`Pragma_Source_File_Name_Project`.
  
! For more details on the use of the `Source_File_Name` pragma, see the
! sections on `Using Other File Names` and `Alternative File Naming Schemes'
  in the :title:`GNAT User's Guide`.
  
  ..  _Pragma_Source_File_Name_Project:
--- 5953,5960 ----
  usually supplied automatically by the project manager. A pragma
  Source_File_Name cannot appear after a :ref:`Pragma_Source_File_Name_Project`.
  
! For more details on the use of the ``Source_File_Name`` pragma, see the
! sections on ``Using Other File Names`` and `Alternative File Naming Schemes'
  in the :title:`GNAT User's Guide`.
  
  ..  _Pragma_Source_File_Name_Project:
*************** Syntax:
*** 5830,5840 ****
  
  
  This pragma must appear as the first line of a source file.
! `integer_literal` is the logical line number of the line following
  the pragma line (for use in error messages and debugging
! information).  `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 `gnatchop`
  with the *-r* switch, to make sure that the original unchopped
  source file is the one referred to.
  
--- 5987,5997 ----
  
  
  This pragma must appear as the first line of a source file.
! ``integer_literal`` is the logical line number of the line following
  the pragma line (for use in error messages and debugging
! information).  ``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 ``gnatchop``
  with the *-r* switch, to make sure that the original unchopped
  source file is the one referred to.
  
*************** be used in the following places:
*** 5875,5885 ****
    Immediately within a library-level package body
  
  *
!   Immediately following the `private` keyword of a library-level
    package spec
  
  *
!   Immediately following the `begin` keyword of a library-level
    package body
  
  *
--- 6032,6042 ----
    Immediately within a library-level package body
  
  *
!   Immediately following the ``private`` keyword of a library-level
    package spec
  
  *
!   Immediately following the ``begin`` keyword of a library-level
    package body
  
  *
*************** that is active at the point it is declar
*** 5891,5901 ****
  by pragma within the spec or body as above.
  
  The basic consistency rule is that you can't turn SPARK_Mode back
! `On`, once you have explicitly (with a pragma) turned if
! `Off`. So the following rules apply:
  
! If a subprogram spec has SPARK_Mode `Off`, then the body must
! also have SPARK_Mode `Off`.
  
  For a package, we have four parts:
  
--- 6048,6058 ----
  by pragma within the spec or body as above.
  
  The basic consistency rule is that you can't turn SPARK_Mode back
! ``On``, once you have explicitly (with a pragma) turned if
! ``Off``. So the following rules apply:
  
! If a subprogram spec has SPARK_Mode ``Off``, then the body must
! also have SPARK_Mode ``Off``.
  
  For a package, we have four parts:
  
*************** For a package, we have four parts:
*** 5906,5920 ****
  *
    the body of the package
  *
!   the elaboration code after `begin`
  
  For a package, the rule is that if you explicitly turn SPARK_Mode
! `Off` for any part, then all the following parts must have
! SPARK_Mode `Off`. Note that this may require repeating a pragma
! SPARK_Mode (`Off`) in the body. For example, if we have a
! configuration pragma SPARK_Mode (`On`) that turns the mode on by
  default everywhere, and one particular package spec has pragma
! SPARK_Mode (`Off`), then that pragma will need to be repeated in
  the package body.
  
  Pragma Static_Elaboration_Desired
--- 6063,6077 ----
  *
    the body of the package
  *
!   the elaboration code after ``begin``
  
  For a package, the rule is that if you explicitly turn SPARK_Mode
! ``Off`` for any part, then all the following parts must have
! SPARK_Mode ``Off``. Note that this may require repeating a pragma
! SPARK_Mode (``Off``) in the body. For example, if we have a
! configuration pragma SPARK_Mode (``On``) that turns the mode on by
  default everywhere, and one particular package spec has pragma
! SPARK_Mode (``Off``), then that pragma will need to be repeated in
  the package body.
  
  Pragma Static_Elaboration_Desired
*************** of this type.  It must name a function w
*** 5969,5981 ****
  subtype, and whose returned type must be the type given as the first
  argument to the pragma.
  
! The meaning of the `Read` parameter is that if a stream attribute directly
  or indirectly specifies reading of the type given as the first parameter,
  then a value of the type given as the argument to the Read function is
  read from the stream, and then the Read function is used to convert this
  to the required target type.
  
! Similarly the `Write` parameter specifies how to treat write attributes
  that directly or indirectly apply to the type given as the first parameter.
  It must have an input parameter of the type specified by the first parameter,
  and the return type must be the same as the input type of the Read function.
--- 6126,6138 ----
  subtype, and whose returned type must be the type given as the first
  argument to the pragma.
  
! The meaning of the ``Read`` parameter is that if a stream attribute directly
  or indirectly specifies reading of the type given as the first parameter,
  then a value of the type given as the argument to the Read function is
  read from the stream, and then the Read function is used to convert this
  to the required target type.
  
! Similarly the ``Write`` parameter specifies how to treat write attributes
  that directly or indirectly apply to the type given as the first parameter.
  It must have an input parameter of the type specified by the first parameter,
  and the return type must be the same as the input type of the Read function.
*************** Reference Manual are:
*** 6012,6023 ****
  
  The effect is that if the value of an unbounded string is written to a stream,
  then the representation of the item in the stream is in the same format that
! would be used for `Standard.String'Output`, and this same representation
  is expected when a value of this type is read from the stream. Note that the
  value written always includes the bounds, even for Unbounded_String'Write,
  since Unbounded_String is not an array type.
  
! Note that the `Stream_Convert` pragma is not effective in the case of
  a derived type of a non-limited tagged type. If such a type is specified then
  the pragma is silently ignored, and the default implementation of the stream
  attributes is used instead.
--- 6169,6180 ----
  
  The effect is that if the value of an unbounded string is written to a stream,
  then the representation of the item in the stream is in the same format that
! would be used for ``Standard.String'Output``, and this same representation
  is expected when a value of this type is read from the stream. Note that the
  value written always includes the bounds, even for Unbounded_String'Write,
  since Unbounded_String is not an array type.
  
! Note that the ``Stream_Convert`` pragma is not effective in the case of
  a derived type of a non-limited tagged type. If such a type is specified then
  the pragma is silently ignored, and the default implementation of the stream
  attributes is used instead.
*************** layout checking:
*** 6063,6077 ****
      gcc -c -gnatyl ...
  
  
! The form ALL_CHECKS activates all standard checks (its use is equivalent
! to the use of the `gnaty` switch with no options.
  See the :title:`GNAT User's Guide` for details.)
  
! Note: the behavior is slightly different in GNAT mode (*-gnatg* used).
! In this case, ALL_CHECKS implies the standard set of GNAT mode style check
! options (i.e. equivalent to *-gnatyg*).
  
! The forms with `Off` and `On`
  can be used to temporarily disable style checks
  as shown in the following example:
  
--- 6220,6234 ----
      gcc -c -gnatyl ...
  
  
! The form ``ALL_CHECKS`` activates all standard checks (its use is equivalent
! to the use of the :switch:`gnaty` switch with no options.
  See the :title:`GNAT User's Guide` for details.)
  
! Note: the behavior is slightly different in GNAT mode (:switch:`-gnatg` used).
! In this case, ``ALL_CHECKS`` implies the standard set of GNAT mode style check
! options (i.e. equivalent to :switch:`-gnatyg`).
  
! The forms with ``Off`` and ``On``
  can be used to temporarily disable style checks
  as shown in the following example:
  
*************** as shown in the following example:
*** 6086,6092 ****
  
  
  Finally the two argument form is allowed only if the first argument is
! `On` or `Off`.  The effect is to turn of semantic style checks
  for the specified entity, as shown in the following example:
  
  
--- 6243,6249 ----
  
  
  Finally the two argument form is allowed only if the first argument is
! ``On`` or ``Off``.  The effect is to turn of semantic style checks
  for the specified entity, as shown in the following example:
  
  
*************** names that are implementation defined (a
*** 6130,6175 ****
  
  
  *
!   `Alignment_Check` can be used to suppress alignment checks
    on addresses used in address clauses. Such checks can also be suppressed
!   by suppressing range checks, but the specific use of `Alignment_Check`
    allows suppression of alignment checks without suppressing other range checks.
!   Note that `Alignment_Check` is suppressed by default on machines (such as
    the x86) with non-strict alignment.
  
  *
!   `Atomic_Synchronization` can be used to suppress the special memory
    synchronization instructions that are normally generated for access to
!   `Atomic` variables to ensure correct synchronization between tasks
    that use such variables for synchronization purposes.
  
  *
!   `Duplicated_Tag_Check` Can be used to suppress the check that is generated
    for a duplicated tag value when a tagged type is declared.
  
  *
!   `Container_Checks` Can be used to suppress all checks within Ada.Containers
    and instances of its children, including Tampering_Check.
  
  *
!   `Tampering_Check` Can be used to suppress tampering check in the containers.
  
  *
!   `Predicate_Check` can be used to control whether predicate checks are
    active. It is applicable only to predicates for which the policy is
!   `Check`. Unlike `Assertion_Policy`, which determines if a given
    predicate is ignored or checked for the whole program, the use of
!   `Suppress` and `Unsuppress` with this check name allows a given
    predicate to be turned on and off at specific points in the program.
  
  *
!   `Validity_Check` can be used specifically to control validity checks.
!   If `Suppress` is used to suppress validity checks, then no validity
    checks are performed, including those specified by the appropriate compiler
!   switch or the `Validity_Checks` pragma.
  
  *
!   Additional check names previously introduced by use of the `Check_Name`
    pragma are also allowed.
  
  
--- 6287,6332 ----
  
  
  *
!   ``Alignment_Check`` can be used to suppress alignment checks
    on addresses used in address clauses. Such checks can also be suppressed
!   by suppressing range checks, but the specific use of ``Alignment_Check``
    allows suppression of alignment checks without suppressing other range checks.
!   Note that ``Alignment_Check`` is suppressed by default on machines (such as
    the x86) with non-strict alignment.
  
  *
!   ``Atomic_Synchronization`` can be used to suppress the special memory
    synchronization instructions that are normally generated for access to
!   ``Atomic`` variables to ensure correct synchronization between tasks
    that use such variables for synchronization purposes.
  
  *
!   ``Duplicated_Tag_Check`` Can be used to suppress the check that is generated
    for a duplicated tag value when a tagged type is declared.
  
  *
!   ``Container_Checks`` Can be used to suppress all checks within Ada.Containers
    and instances of its children, including Tampering_Check.
  
  *
!   ``Tampering_Check`` Can be used to suppress tampering check in the containers.
  
  *
!   ``Predicate_Check`` can be used to control whether predicate checks are
    active. It is applicable only to predicates for which the policy is
!   ``Check``. Unlike ``Assertion_Policy``, which determines if a given
    predicate is ignored or checked for the whole program, the use of
!   ``Suppress`` and ``Unsuppress`` with this check name allows a given
    predicate to be turned on and off at specific points in the program.
  
  *
!   ``Validity_Check`` can be used specifically to control validity checks.
!   If ``Suppress`` is used to suppress validity checks, then no validity
    checks are performed, including those specified by the appropriate compiler
!   switch or the ``Validity_Checks`` pragma.
  
  *
!   Additional check names previously introduced by use of the ``Check_Name``
    pragma are also allowed.
  
  
*************** Syntax:
*** 6196,6206 ****
  
  
  This pragma can appear anywhere within a unit.
! The effect is to apply `Suppress (All_Checks)` to the unit
  in which it appears.  This pragma is implemented for compatibility with DEC
  Ada 83 usage where it appears at the end of a unit, and for compatibility
  with Rational Ada, where it appears as a program unit pragma.
! The use of the standard Ada pragma `Suppress (All_Checks)`
  as a normal configuration pragma is the preferred usage in GNAT.
  
  .. _Pragma-Suppress_Debug_Info:
--- 6353,6363 ----
  
  
  This pragma can appear anywhere within a unit.
! The effect is to apply ``Suppress (All_Checks)`` to the unit
  in which it appears.  This pragma is implemented for compatibility with DEC
  Ada 83 usage where it appears at the end of a unit, and for compatibility
  with Rational Ada, where it appears as a program unit pragma.
! The use of the standard Ada pragma ``Suppress (All_Checks)``
  as a normal configuration pragma is the preferred usage in GNAT.
  
  .. _Pragma-Suppress_Debug_Info:
*************** In normal mode, a raise statement for an
*** 6235,6241 ****
  an exception message giving the file name and line number for the location
  of the raise. This is useful for debugging and logging purposes, but this
  entails extra space for the strings for the messages. The configuration
! pragma `Suppress_Exception_Locations` can be used to suppress the
  generation of these strings, with the result that space is saved, but the
  exception message for such raises is null. This configuration pragma may
  appear in a global configuration pragma file, or in a specific unit as
--- 6392,6398 ----
  an exception message giving the file name and line number for the location
  of the raise. This is useful for debugging and logging purposes, but this
  entails extra space for the strings for the messages. The configuration
! pragma ``Suppress_Exception_Locations`` can be used to suppress the
  generation of these strings, with the result that space is saved, but the
  exception message for such raises is null. This configuration pragma may
  appear in a global configuration pragma file, or in a specific unit as
*************** Syntax
*** 6300,6306 ****
  
  
  This pragma appears within a task definition (like pragma
! `Priority`) and applies to the task in which it appears.  The
  argument must be of type String, and provides a name to be used for
  the task instance when the task is created.  Note that this expression
  is not required to be static, and in particular, it can contain
--- 6457,6463 ----
  
  
  This pragma appears within a task definition (like pragma
! ``Priority``) and applies to the task in which it appears.  The
  argument must be of type String, and provides a name to be used for
  the task instance when the task is created.  Note that this expression
  is not required to be static, and in particular, it can contain
*************** as illustrated in the example below.
*** 6310,6316 ****
  
  The task name is recorded internally in the run-time structures
  and is accessible to tools like the debugger.  In addition the
! routine `Ada.Task_Identification.Image` will return this
  string, with a unique task address appended.
  
  
--- 6467,6473 ----
  
  The task name is recorded internally in the run-time structures
  and is accessible to tools like the debugger.  In addition the
! routine ``Ada.Task_Identification.Image`` will return this
  string, with a unique task address appended.
  
  
*************** This pragma specifies the length of the
*** 6362,6368 ****
  area is an additional storage area allocated to a task.  A value of zero
  means that either no guard area is created or a minimal guard area is
  created, depending on the target.  This pragma can appear anywhere a
! `Storage_Size` attribute definition clause is allowed for a task
  type.
  
  .. _Pragma-Test_Case:
--- 6519,6525 ----
  area is an additional storage area allocated to a task.  A value of zero
  means that either no guard area is created or a minimal guard area is
  created, depending on the target.  This pragma can appear anywhere a
! ``Storage_Size`` attribute definition clause is allowed for a task
  type.
  
  .. _Pragma-Test_Case:
*************** Syntax:
*** 6384,6406 ****
     [, Ensures  =>  Boolean_Expression]);
  
  
! The `Test_Case` pragma allows defining fine-grain specifications
  for use by testing tools.
! The compiler checks the validity of the `Test_Case` pragma, but its
  presence does not lead to any modification of the code generated by the
  compiler.
  
! `Test_Case` pragmas may only appear immediately following the
  (separate) declaration of a subprogram in a package declaration, inside
  a package spec unit. Only other pragmas may intervene (that is appear
  between the subprogram declaration and a test case).
  
! The compiler checks that boolean expressions given in `Requires` and
! `Ensures` are valid, where the rules for `Requires` are the
! same as the rule for an expression in `Precondition` and the rules
! for `Ensures` are the same as the rule for an expression in
! `Postcondition`. In particular, attributes `'Old` and
! `'Result` can only be used within the `Ensures`
  expression. The following is an example of use within a package spec:
  
  
--- 6541,6563 ----
     [, Ensures  =>  Boolean_Expression]);
  
  
! The ``Test_Case`` pragma allows defining fine-grain specifications
  for use by testing tools.
! The compiler checks the validity of the ``Test_Case`` pragma, but its
  presence does not lead to any modification of the code generated by the
  compiler.
  
! ``Test_Case`` pragmas may only appear immediately following the
  (separate) declaration of a subprogram in a package declaration, inside
  a package spec unit. Only other pragmas may intervene (that is appear
  between the subprogram declaration and a test case).
  
! The compiler checks that boolean expressions given in ``Requires`` and
! ``Ensures`` are valid, where the rules for ``Requires`` are the
! same as the rule for an expression in ``Precondition`` and the rules
! for ``Ensures`` are the same as the rule for an expression in
! ``Postcondition``. In particular, attributes ``'Old`` and
! ``'Result`` can only be used within the ``Ensures``
  expression. The following is an example of use within a package spec:
  
  
*************** expression. The following is an example
*** 6418,6428 ****
  
  
  The meaning of a test case is that there is at least one context where
! `Requires` holds such that, if the associated subprogram is executed in
! that context, then `Ensures` holds when the subprogram returns.
! Mode `Nominal` indicates that the input context should also satisfy the
  precondition of the subprogram, and the output context should also satisfy its
! postcondition. Mode `Robustness` indicates that the precondition and
  postcondition of the subprogram should be ignored for this test case.
  
  .. _Pragma-Thread_Local_Storage:
--- 6575,6585 ----
  
  
  The meaning of a test case is that there is at least one context where
! ``Requires`` holds such that, if the associated subprogram is executed in
! that context, then ``Ensures`` holds when the subprogram returns.
! Mode ``Nominal`` indicates that the input context should also satisfy the
  precondition of the subprogram, and the output context should also satisfy its
! postcondition. Mode ``Robustness`` indicates that the precondition and
  postcondition of the subprogram should be ignored for this test case.
  
  .. _Pragma-Thread_Local_Storage:
*************** Syntax:
*** 6444,6463 ****
  
  
  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 may not have default initialization, and if there is
! an explicit initialization, it must be either `null` for an
  access variable, or a static expression for a scalar variable.
  This provides a low level mechanism similar to that provided by
! the `Ada.Task_Attributes` package, but much more efficient
  and is also useful in writing interface code that will interact
  with foreign threads.
  
! If this pragma is used on a system where `TLS` is not supported,
  then an error message will be generated and the program will be rejected.
  
  Pragma Time_Slice
--- 6601,6620 ----
  
  
  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 may not have default initialization, and if there is
! an explicit initialization, it must be either ``null`` for an
  access variable, or a static expression for a scalar variable.
  This provides a low level mechanism similar to that provided by
! the ``Ada.Task_Attributes`` package, but much more efficient
  and is also useful in writing interface code that will interact
  with foreign threads.
  
! If this pragma is used on a system where ``TLS`` is not supported,
  then an error message will be generated and the program will be rejected.
  
  Pragma Time_Slice
*************** Syntax:
*** 6514,6526 ****
       [Check  =>] EXPRESSION);
  
  
! The `Type_Invariant` pragma is intended to be an exact
! replacement for the language-defined `Type_Invariant`
  aspect, and shares its restrictions and semantics. It differs
! from the language defined `Invariant` pragma in that it
  does not permit a string parameter, and it is
! controlled by the assertion identifier `Type_Invariant`
! rather than `Invariant`.
  
  .. _Pragma-Type_Invariant_Class:
  
--- 6671,6683 ----
       [Check  =>] EXPRESSION);
  
  
! The ``Type_Invariant`` pragma is intended to be an exact
! replacement for the language-defined ``Type_Invariant``
  aspect, and shares its restrictions and semantics. It differs
! from the language defined ``Invariant`` pragma in that it
  does not permit a string parameter, and it is
! controlled by the assertion identifier ``Type_Invariant``
! rather than ``Invariant``.
  
  .. _Pragma-Type_Invariant_Class:
  
*************** Syntax:
*** 6537,6555 ****
       [Check  =>] EXPRESSION);
  
  
! The `Type_Invariant_Class` pragma is intended to be an exact
! replacement for the language-defined `Type_Invariant'Class`
  aspect, and shares its restrictions and semantics.
  
! Note: This pragma is called `Type_Invariant_Class` rather than
! `Type_Invariant'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 `Type_Invariant'Class`,
! not `Type_Invariant_Class`.
  
  Pragma Unchecked_Union
  ======================
--- 6694,6712 ----
       [Check  =>] EXPRESSION);
  
  
! The ``Type_Invariant_Class`` pragma is intended to be an exact
! replacement for the language-defined ``Type_Invariant'Class``
  aspect, and shares its restrictions and semantics.
  
! Note: This pragma is called ``Type_Invariant_Class`` rather than
! ``Type_Invariant'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 ``Type_Invariant'Class``,
! not ``Type_Invariant_Class``.
  
  Pragma Unchecked_Union
  ======================
*************** on entry even though the value would not
*** 6616,6626 ****
  Although the rule guarantees against this possibility, it is sometimes
  too restrictive. For example if we know that the string has a lower
  bound of 1, then we will never raise an exception.
! The pragma `Unevaluated_Use_Of_Old` can be
! used to modify this behavior. If the argument is `Error` then an
  error is given (this is the default RM behavior). If the argument is
! `Warn` then the usage is allowed as legal but with a warning
! that an exception might be raised. If the argument is `Allow`
  then the usage is allowed as legal without generating a warning.
  
  This pragma may appear as a configuration pragma, or in a declarative
--- 6773,6783 ----
  Although the rule guarantees against this possibility, it is sometimes
  too restrictive. For example if we know that the string has a lower
  bound of 1, then we will never raise an exception.
! The pragma ``Unevaluated_Use_Of_Old`` can be
! used to modify this behavior. If the argument is ``Error`` then an
  error is given (this is the default RM behavior). If the argument is
! ``Warn`` then the usage is allowed as legal but with a warning
! that an exception might be raised. If the argument is ``Allow``
  then the usage is allowed as legal without generating a warning.
  
  This pragma may appear as a configuration pragma, or in a declarative
*************** Syntax:
*** 6641,6647 ****
  
  If this pragma occurs in a unit that is processed by the compiler, GNAT
  aborts with the message :samp:`xxx not implemented`, where
! `xxx` is the name of the current compilation unit.  This pragma is
  intended to allow the compiler to handle unimplemented library units in
  a clean manner.
  
--- 6798,6804 ----
  
  If this pragma occurs in a unit that is processed by the compiler, GNAT
  aborts with the message :samp:`xxx not implemented`, where
! ``xxx`` is the name of the current compilation unit.  This pragma is
  intended to allow the compiler to handle unimplemented library units in
  a clean manner.
  
*************** Syntax:
*** 6661,6673 ****
    pragma Universal_Aliasing [([Entity =>] type_LOCAL_NAME)];
  
  
! `type_LOCAL_NAME` must refer to a type declaration in the current
  declarative part.  The effect is to inhibit strict type-based aliasing
  optimization for the given type.  In other words, the effect is as though
  access types designating this type were subject to pragma No_Strict_Aliasing.
  For a detailed description of the strict aliasing optimization, and the
  situations in which it must be suppressed, see the section on
! `Optimization and Strict Aliasing` in the :title:`GNAT User's Guide`.
  
  .. _Pragma-Universal_Data:
  
--- 6818,6830 ----
    pragma Universal_Aliasing [([Entity =>] type_LOCAL_NAME)];
  
  
! ``type_LOCAL_NAME`` must refer to a type declaration in the current
  declarative part.  The effect is to inhibit strict type-based aliasing
  optimization for the given type.  In other words, the effect is as though
  access types designating this type were subject to pragma No_Strict_Aliasing.
  For a detailed description of the strict aliasing optimization, and the
  situations in which it must be suppressed, see the section on
! ``Optimization and Strict Aliasing`` in the :title:`GNAT User's Guide`.
  
  .. _Pragma-Universal_Data:
  
*************** Syntax:
*** 6710,6716 ****
  
  
  This pragma signals that the assignable entities (variables,
! `out` parameters, `in out` parameters) whose names are listed are
  deliberately not assigned in the current source unit. This
  suppresses warnings about the
  entities being referenced but not assigned, and in addition a warning will be
--- 6867,6873 ----
  
  
  This pragma signals that the assignable entities (variables,
! ``out`` parameters, ``in out`` parameters) whose names are listed are
  deliberately not assigned in the current source unit. This
  suppresses warnings about the
  entities being referenced but not assigned, and in addition a warning will be
*************** be.
*** 6724,6732 ****
  
  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.
  
  .. _Pragma-Unreferenced:
--- 6881,6889 ----
  
  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.
  
  .. _Pragma-Unreferenced:
*************** and that this is deliberate. It can also
*** 6759,6768 ****
  objects declared only for their initialization or finalization side
  effects.
  
! If `LOCAL_NAME` identifies more than one matching homonym in the
  current scope, then the entity most recently declared is the one to which
  the pragma applies. Note that in the case of accept formals, the pragma
! Unreferenced may appear immediately after the keyword `do` which
  allows the indication of whether or not accept formals are referenced
  or not to be given individually for each accept statement.
  
--- 6916,6925 ----
  objects declared only for their initialization or finalization side
  effects.
  
! If ``LOCAL_NAME`` identifies more than one matching homonym in the
  current scope, then the entity most recently declared is the one to which
  the pragma applies. Note that in the case of accept formals, the pragma
! Unreferenced may appear immediately after the keyword ``do`` which
  allows the indication of whether or not accept formals are referenced
  or not to be given individually for each accept statement.
  
*************** declaration, then this pragma should not
*** 6776,6792 ****
  unit would not be flagged); pragma Obsolescent can be used instead
  for this purpose, see :ref:`Pragma_Obsolescent`.
  
! 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
  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 Unreferenced` for such
  variables, though it is harmless to do so.
  
  .. _Pragma-Unreferenced_Objects:
--- 6933,6949 ----
  unit would not be flagged); pragma Obsolescent can be used instead
  for this purpose, see :ref:`Pragma_Obsolescent`.
  
! 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
  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 Unreferenced`` for such
  variables, though it is harmless to do so.
  
  .. _Pragma-Unreferenced_Objects:
*************** Syntax:
*** 6827,6854 ****
  
  Normally certain interrupts are reserved to the implementation.  Any attempt
  to attach an interrupt causes Program_Error to be raised, as described in
! RM C.3.2(22).  A typical example is the `SIGINT` interrupt used in
  many systems for a :kbd:`Ctrl-C` interrupt.  Normally this interrupt is
  reserved to the implementation, so that :kbd:`Ctrl-C` can be used to
  interrupt execution.
  
! If the pragma `Unreserve_All_Interrupts` appears anywhere in any unit in
  a program, then all such interrupts are unreserved.  This allows the
  program to handle these interrupts, but disables their standard
  functions.  For example, if this pragma is used, then pressing
  :kbd:`Ctrl-C` will not automatically interrupt execution.  However,
! a program can then handle the `SIGINT` interrupt as it chooses.
  
  For a full list of the interrupts handled in a specific implementation,
! see the source code for the spec of `Ada.Interrupts.Names` in
  file :file:`a-intnam.ads`.  This is a target dependent file that contains the
  list of interrupts recognized for a given target.  The documentation in
  this file also specifies what interrupts are affected by the use of
! the `Unreserve_All_Interrupts` pragma.
  
  For a more general facility for controlling what interrupts can be
! handled, see pragma `Interrupt_State`, which subsumes the functionality
! of the `Unreserve_All_Interrupts` pragma.
  
  Pragma Unsuppress
  =================
--- 6984,7011 ----
  
  Normally certain interrupts are reserved to the implementation.  Any attempt
  to attach an interrupt causes Program_Error to be raised, as described in
! RM C.3.2(22).  A typical example is the ``SIGINT`` interrupt used in
  many systems for a :kbd:`Ctrl-C` interrupt.  Normally this interrupt is
  reserved to the implementation, so that :kbd:`Ctrl-C` can be used to
  interrupt execution.
  
! If the pragma ``Unreserve_All_Interrupts`` appears anywhere in any unit in
  a program, then all such interrupts are unreserved.  This allows the
  program to handle these interrupts, but disables their standard
  functions.  For example, if this pragma is used, then pressing
  :kbd:`Ctrl-C` will not automatically interrupt execution.  However,
! a program can then handle the ``SIGINT`` interrupt as it chooses.
  
  For a full list of the interrupts handled in a specific implementation,
! see the source code for the spec of ``Ada.Interrupts.Names`` in
  file :file:`a-intnam.ads`.  This is a target dependent file that contains the
  list of interrupts recognized for a given target.  The documentation in
  this file also specifies what interrupts are affected by the use of
! the ``Unreserve_All_Interrupts`` pragma.
  
  For a more general facility for controlling what interrupts can be
! handled, see pragma ``Interrupt_State``, which subsumes the functionality
! of the ``Unreserve_All_Interrupts`` pragma.
  
  Pragma Unsuppress
  =================
*************** Syntax:
*** 6861,6871 ****
    pragma Unsuppress (IDENTIFIER [, [On =>] NAME]);
  
  
! This pragma undoes the effect of a previous pragma `Suppress`.  If
! there is no corresponding pragma `Suppress` in effect, it has no
  effect.  The range of the effect is the same as for pragma
! `Suppress`.  The meaning of the arguments is identical to that used
! in pragma `Suppress`.
  
  One important application is to ensure that checks are on in cases where
  code depends on the checks for its correct functioning, so that the code
--- 7018,7028 ----
    pragma Unsuppress (IDENTIFIER [, [On =>] NAME]);
  
  
! This pragma undoes the effect of a previous pragma ``Suppress``.  If
! there is no corresponding pragma ``Suppress`` in effect, it has no
  effect.  The range of the effect is the same as for pragma
! ``Suppress``.  The meaning of the arguments is identical to that used
! in pragma ``Suppress``.
  
  One important application is to ensure that checks are on in cases where
  code depends on the checks for its correct functioning, so that the code
*************** of Ada as an implementation-defined prag
*** 6886,6892 ****
  
  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
  ====================
--- 7043,7049 ----
  
  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
  ====================
*************** Syntax:
*** 6926,6932 ****
  
  
  This pragma signals that the assignable entities (variables,
! `out` parameters, and `in out` parameters) whose names are listed
  deliberately do not get assigned or referenced in the current source unit
  after the occurrence of the pragma in the current source unit. This
  suppresses warnings about the entities that are unreferenced and/or not
--- 7083,7089 ----
  
  
  This pragma signals that the assignable entities (variables,
! ``out`` parameters, and ``in out`` parameters) whose names are listed
  deliberately do not get assigned or referenced in the current source unit
  after the occurrence of the pragma in the current source unit. This
  suppresses warnings about the entities that are unreferenced and/or not
*************** that it might be.
*** 6940,6948 ****
  
  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.
  
  Pragma Validity_Checks
--- 7097,7105 ----
  
  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.
  
  Pragma Validity_Checks
*************** reference manual settings, and then a st
*** 6970,6977 ****
  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 `in` and
! `in out` subprogram parameters:
  
  *
  
--- 7127,7134 ----
  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 ``in`` and
! ``in out`` subprogram parameters:
  
  *
  
*************** methods can be used to enable validity c
*** 6988,6996 ****
  
  
  The form ALL_CHECKS activates all standard checks (its use is equivalent
! to the use of the `gnatva` switch.
  
! The forms with `Off` and `On`
  can be used to temporarily disable validity checks
  as shown in the following example:
  
--- 7145,7153 ----
  
  
  The form ALL_CHECKS activates all standard checks (its use is equivalent
! to the use of the :switch:`gnatva` switch.
  
! The forms with ``Off`` and ``On``
  can be used to temporarily disable validity checks
  as shown in the following example:
  
*************** write all the bits of the object.
*** 7043,7060 ****
  
  The intention is that this be suitable for use with memory-mapped I/O devices
  on some machines. Note that there are two important respects in which this is
! different from `pragma Atomic`. First a reference to a `Volatile_Full_Access`
  object is not a sequential action in the RM 9.10 sense and, therefore, does
! not create a synchronization point. Second, in the case of `pragma Atomic`,
  there is no guarantee that all the bits will be accessed if the reference
  is not to the whole object; the compiler is allowed (and generally will)
  access only part of the object in this case.
  
! It is not permissible to specify `Atomic` and `Volatile_Full_Access` for
  the same object.
  
! It is not permissible to specify `Volatile_Full_Access` for a composite
! (record or array) type or object that has at least one `Aliased` component.
  
  .. _Pragma-Volatile_Function:
  
--- 7200,7217 ----
  
  The intention is that this be suitable for use with memory-mapped I/O devices
  on some machines. Note that there are two important respects in which this is
! different from ``pragma Atomic``. First a reference to a ``Volatile_Full_Access``
  object is not a sequential action in the RM 9.10 sense and, therefore, does
! not create a synchronization point. Second, in the case of ``pragma Atomic``,
  there is no guarantee that all the bits will be accessed if the reference
  is not to the whole object; the compiler is allowed (and generally will)
  access only part of the object in this case.
  
! It is not permissible to specify ``Atomic`` and ``Volatile_Full_Access`` for
  the same object.
  
! It is not permissible to specify ``Volatile_Full_Access`` for a composite
! (record or array) type or object that has at least one ``Aliased`` component.
  
  .. _Pragma-Volatile_Function:
  
*************** Syntax:
*** 7067,7073 ****
  
    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.
  
  Pragma Warning_As_Error
--- 7224,7230 ----
  
    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.
  
  Pragma Warning_As_Error
*************** which treats all warnings as errors.
*** 7089,7096 ****
  
  The pattern may contain asterisks, which match zero or more characters in
  the message. For example, you can use
! `pragma Warning_As_Error ("bits of*unused")` to treat the warning
! message `warning: 960 bits of "a" unused` as an error. No other regular
  expression notations are permitted. All characters other than asterisk in
  these three specific cases are treated as literal characters in the match.
  The match is case insensitive, for example XYZ matches xyz.
--- 7246,7253 ----
  
  The pattern may contain asterisks, which match zero or more characters in
  the message. For example, you can use
! ``pragma Warning_As_Error ("bits of*unused")`` to treat the warning
! message ``warning: 960 bits of "a" unused`` as an error. No other regular
  expression notations are permitted. All characters other than asterisk in
  these three specific cases are treated as literal characters in the match.
  The match is case insensitive, for example XYZ matches xyz.
*************** Syntax:
*** 7183,7223 ****
  Note: in Ada 83 mode, a string literal may be used in place of a static string
  expression (which does not exist in Ada 83).
  
! 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
  of SPARK and GNATprove, see last part of this section for details.
  
  Normally warnings are enabled, with the output being controlled by
! the command line switch.  Warnings (`Off`) turns off generation of
! warnings until a Warnings (`On`) is encountered or the end of the
  current unit.  If generation of warnings is turned off using this
  pragma, then some or all of the warning messages are suppressed,
  regardless of the setting of the command line switches.
  
! The `Reason` parameter may optionally appear as the last argument
  in any of the forms of this pragma. It is intended purely for the
! purposes of documenting the reason for the `Warnings` pragma.
  The compiler will check that the argument is a static string but
  otherwise ignore this argument. Other tools may provide specialized
  processing for this string.
  
  The form with a single argument (or two arguments if Reason present),
! where the first argument is `ON` or `OFF`
  may be used as a configuration pragma.
  
! If the `LOCAL_NAME` parameter is present, warnings are suppressed for
  the specified entity.  This suppression is effective from the point where
  it occurs till the end of the extended scope of the variable (similar to
! the scope of `Suppress`). This form cannot be used as a configuration
  pragma.
  
! In the case where the first argument is other than `ON` or
! `OFF`,
  the third form with a single static_string_EXPRESSION argument (and possible
  reason) provides more precise
  control over which warnings are active. The string is a list of letters
--- 7340,7380 ----
  Note: in Ada 83 mode, a string literal may be used in place of a static string
  expression (which does not exist in Ada 83).
  
! 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
  of SPARK and GNATprove, see last part of this section for details.
  
  Normally warnings are enabled, with the output being controlled by
! the command line switch.  Warnings (``Off``) turns off generation of
! warnings until a Warnings (``On``) is encountered or the end of the
  current unit.  If generation of warnings is turned off using this
  pragma, then some or all of the warning messages are suppressed,
  regardless of the setting of the command line switches.
  
! The ``Reason`` parameter may optionally appear as the last argument
  in any of the forms of this pragma. It is intended purely for the
! purposes of documenting the reason for the ``Warnings`` pragma.
  The compiler will check that the argument is a static string but
  otherwise ignore this argument. Other tools may provide specialized
  processing for this string.
  
  The form with a single argument (or two arguments if Reason present),
! where the first argument is ``ON`` or ``OFF``
  may be used as a configuration pragma.
  
! If the ``LOCAL_NAME`` parameter is present, warnings are suppressed for
  the specified entity.  This suppression is effective from the point where
  it occurs till the end of the extended scope of the variable (similar to
! the scope of ``Suppress``). This form cannot be used as a configuration
  pragma.
  
! In the case where the first argument is other than ``ON`` or
! ``OFF``,
  the third form with a single static_string_EXPRESSION argument (and possible
  reason) provides more precise
  control over which warnings are active. The string is a list of letters
*************** code for these letters is the same as th
*** 7226,7260 ****
  line switch controlling warnings. For a brief summary, use the gnatmake
  command with no arguments, which will generate usage information containing
  the list of warnings switches supported. For
! full details see the section on `Warning Message Control` in the
  :title:`GNAT User's Guide`.
  This form can also be used as a configuration pragma.
  
! The warnings controlled by the *-gnatw* switch are generated by the
  front end of the compiler. The GCC back end can provide additional warnings
! and they are controlled by the *-W* switch. Such warnings can be
! identified by the appearance of a string of the form `[-Wxxx]` in the
! message which designates the *-Wxxx* 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 *-Wxxx* 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
! or another pragma Warnings is encountered. The effect of the pragma is
  cumulative. Initially the set of warnings is the standard default set
  as possibly modified by compiler switches. Then each pragma Warning
  modifies this set of warnings as specified. This form of the pragma may
  also be used as a configuration pragma.
  
! The fourth form, with an `On|Off` parameter and a string, is used to
  control individual messages, based on their text. The string argument
  is a pattern that is used to match against the text of individual
  warning messages (not including the initial "warning: " tag).
  
  The pattern may contain asterisks, which match zero or more characters in
  the message. For example, you can use
! `pragma Warnings (Off, "bits of*unused")` to suppress the warning
! message `warning: 960 bits of "a" unused`. No other regular
  expression notations are permitted. All characters other than asterisk in
  these three specific cases are treated as literal characters in the match.
  The match is case insensitive, for example XYZ matches xyz.
--- 7383,7417 ----
  line switch controlling warnings. For a brief summary, use the gnatmake
  command with no arguments, which will generate usage information containing
  the list of warnings switches supported. For
! full details see the section on ``Warning Message Control`` in the
  :title:`GNAT User's Guide`.
  This form can also be used as a configuration pragma.
  
! The warnings controlled by the :switch:`-gnatw` switch are generated by the
  front end of the compiler. The GCC back end can provide additional warnings
! and they are controlled by the :switch:`-W` switch. Such warnings can be
! identified by the appearance of a string of the form ``[-W{xxx}]`` in the
! message which designates the :switch:`-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 :switch:`-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
! or another pragma ``Warnings`` is encountered. The effect of the pragma is
  cumulative. Initially the set of warnings is the standard default set
  as possibly modified by compiler switches. Then each pragma Warning
  modifies this set of warnings as specified. This form of the pragma may
  also be used as a configuration pragma.
  
! The fourth form, with an ``On|Off`` parameter and a string, is used to
  control individual messages, based on their text. The string argument
  is a pattern that is used to match against the text of individual
  warning messages (not including the initial "warning: " tag).
  
  The pattern may contain asterisks, which match zero or more characters in
  the message. For example, you can use
! ``pragma Warnings (Off, "bits of*unused")`` to suppress the warning
! message ``warning: 960 bits of "a" unused``. No other regular
  expression notations are permitted. All characters other than asterisk in
  these three specific cases are treated as literal characters in the match.
  The match is case insensitive, for example XYZ matches xyz.
*************** the end of the message, since this is im
*** 7266,7272 ****
  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 *-Wxxx* 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
--- 7423,7429 ----
  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 :switch:`-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
*************** pragmas, and (if *-gnatw.w* is given) at
*** 7290,7302 ****
  warning must be suppressed.
  
  Note: to write a string that will match any warning, use the string
! `"***"`. It will not work to use a single asterisk or two
  asterisks since this looks like an operator name. This form with three
! asterisks is similar in effect to specifying `pragma Warnings (Off)` except (if *-gnatw.w* is given) that a matching
! `pragma Warnings (On, "***")` will be required. This can be
  helpful in avoiding forgetting to turn warnings back on.
  
! Note: the debug flag -gnatd.i (`/NOWARNINGS_PRAGMAS` in VMS) can be
  used to cause the compiler to entirely ignore all WARNINGS pragmas. This can
  be useful in checking whether obsolete pragmas in existing programs are hiding
  real problems.
--- 7447,7459 ----
  warning must be suppressed.
  
  Note: to write a string that will match any warning, use the string
! ``"***"``. It will not work to use a single asterisk or two
  asterisks since this looks like an operator name. This form with three
! asterisks is similar in effect to specifying ``pragma Warnings (Off)`` except (if :switch:`-gnatw.w` is given) that a matching
! ``pragma Warnings (On, "***")`` will be required. This can be
  helpful in avoiding forgetting to turn warnings back on.
  
! Note: the debug flag :switch:`-gnatd.i` (``/NOWARNINGS_PRAGMAS`` in VMS) can be
  used to cause the compiler to entirely ignore all WARNINGS pragmas. This can
  be useful in checking whether obsolete pragmas in existing programs are hiding
  real problems.
*************** Note: pragma Warnings does not affect th
*** 7305,7318 ****
  separate entry for pragma Style_Checks for control of style messages.
  
  Users of the formal verification tool GNATprove for the SPARK subset of Ada may
! use the version of the pragma with a `TOOL_NAME` parameter.
  
! If present, `TOOL_NAME` is the name of a tool, currently either `GNAT` for the
! compiler or `GNATprove` for the formal verification tool. A given tool only
  takes into account pragma Warnings that do not specify a tool name, or that
  specify the matching tool name. This makes it possible to disable warnings
  selectively for each tool, and as a consequence to detect useless pragma
! Warnings with switch `-gnatw.w`.
  
  Pragma Weak_External
  ====================
--- 7462,7475 ----
  separate entry for pragma Style_Checks for control of style messages.
  
  Users of the formal verification tool GNATprove for the SPARK subset of Ada may
! use the version of the pragma with a ``TOOL_NAME`` parameter.
  
! If present, ``TOOL_NAME`` is the name of a tool, currently either ``GNAT`` for the
! compiler or ``GNATprove`` for the formal verification tool. A given tool only
  takes into account pragma Warnings that do not specify a tool name, or that
  specify the matching tool name. This makes it possible to disable warnings
  selectively for each tool, and as a consequence to detect useless pragma
! Warnings with switch :switch:`-gnatw.w`.
  
  Pragma Weak_External
  ====================
*************** Syntax:
*** 7325,7334 ****
    pragma Weak_External ([Entity =>] LOCAL_NAME);
  
  
! `LOCAL_NAME` must refer to an object that is declared at the library
  level. This pragma specifies that the given entity should be marked as a
! weak symbol for the linker. It is equivalent to `__attribute__((weak))`
! in GNU C and causes `LOCAL_NAME` to be emitted as a weak symbol instead
  of a regular symbol, that is to say a symbol that does not have to be
  resolved by the linker if used in conjunction with a pragma Import.
  
--- 7482,7491 ----
    pragma Weak_External ([Entity =>] LOCAL_NAME);
  
  
! ``LOCAL_NAME`` must refer to an object that is declared at the library
  level. This pragma specifies that the given entity should be marked as a
! weak symbol for the linker. It is equivalent to ``__attribute__((weak))``
! in GNU C and causes ``LOCAL_NAME`` to be emitted as a weak symbol instead
  of a regular symbol, that is to say a symbol that does not have to be
  resolved by the linker if used in conjunction with a pragma Import.
  
*************** also be used at any point that a pragma
*** 7384,7392 ****
  to have more than one such pragma in a file, allowing multiple encodings
  to appear within the same file.
  
  The argument can be an identifier or a character literal. In the identifier
! case, it is one of `HEX`, `UPPER`, `SHIFT_JIS`,
! `EUC`, `UTF8`, or `BRACKETS`. In the character literal
  case it is correspondingly one of the characters :kbd:`h`, :kbd:`u`,
  :kbd:`s`, :kbd:`e`, :kbd:`8`, or :kbd:`b`.
  
--- 7541,7553 ----
  to have more than one such pragma in a file, allowing multiple encodings
  to appear within the same file.
  
+ However, note that the pragma cannot immediately precede the relevant
+ wide character, because then the previous encoding will still be in
+ effect, causing "illegal character" errors.
+ 
  The argument can be an identifier or a character literal. In the identifier
! case, it is one of ``HEX``, ``UPPER``, ``SHIFT_JIS``,
! ``EUC``, ``UTF8``, or ``BRACKETS``. In the character literal
  case it is correspondingly one of the characters :kbd:`h`, :kbd:`u`,
  :kbd:`s`, :kbd:`e`, :kbd:`8`, or :kbd:`b`.
  
diff -Nrcpad gcc-7.3.0/gcc/ada/doc/gnat_rm/implementation_of_ada_2012_features.rst gcc-8.1.0/gcc/ada/doc/gnat_rm/implementation_of_ada_2012_features.rst
*** gcc-7.3.0/gcc/ada/doc/gnat_rm/implementation_of_ada_2012_features.rst	Fri Jan 13 11:23:42 2017
--- gcc-8.1.0/gcc/ada/doc/gnat_rm/implementation_of_ada_2012_features.rst	Fri Sep  8 12:34:54 2017
*************** implemented.
*** 19,25 ****
  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 `Ada_2012` is used.
  
  However, new pragmas, attributes, and restrictions are
  unconditionally available, since the Ada 95 standard allows the addition of
--- 19,25 ----
  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 ``Ada_2012`` is used.
  
  However, new pragmas, attributes, and restrictions are
  unconditionally available, since the Ada 95 standard allows the addition of
*************** http://www.ada-auth.org/ai05-summary.htm
*** 88,94 ****
  * *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 `null` statement to make the sequence legal.
  
    RM References:  2.08 (7)   2.08 (16)
  
--- 88,94 ----
  * *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 ``null`` statement to make the sequence legal.
  
    RM References:  2.08 (7)   2.08 (16)
  
*************** http://www.ada-auth.org/ai05-summary.htm
*** 109,166 ****
    forms of declarations listed in the AI are supported. The following is a
    list of the aspects supported (with GNAT implementation aspects marked)
  
! ================================== ===========
! Supported Aspect                    Source
! ================================== ===========
!   `Ada_2005`                           -- GNAT
!   `Ada_2012`                           -- GNAT
!   `Address`
!   `Alignment`
!   `Atomic`
!   `Atomic_Components`
!   `Bit_Order`
!   `Component_Size`
!   `Contract_Cases`                     -- GNAT
!   `Discard_Names`
!   `External_Tag`
!   `Favor_Top_Level`                    -- GNAT
!   `Inline`
!   `Inline_Always`                      -- GNAT
!   `Invariant`                          -- GNAT
!   `Machine_Radix`
!   `No_Return`
!   `Object_Size`                        -- GNAT
!   `Pack`
!   `Persistent_BSS`                     -- GNAT
!   `Post`
!   `Pre`
!   `Predicate`
!   `Preelaborable_Initialization`
!   `Pure_Function`                      -- GNAT
!   `Remote_Access_Type`                 -- GNAT
!   `Shared`                             -- GNAT
!   `Size`
!   `Storage_Pool`
!   `Storage_Size`
!   `Stream_Size`
!   `Suppress`
!   `Suppress_Debug_Info`                -- GNAT
!   `Test_Case`                          -- GNAT
!   `Thread_Local_Storage`               -- GNAT
!   `Type_Invariant`
!   `Unchecked_Union`
!   `Universal_Aliasing`                 -- GNAT
!   `Unmodified`                         -- GNAT
!   `Unreferenced`                       -- GNAT
!   `Unreferenced_Objects`               -- GNAT
!   `Unsuppress`
!   `Value_Size`                         -- GNAT
!   `Volatile`
!   `Volatile_Components`
!   `Warnings`                           -- GNAT
! ================================== ===========
  
!   Note that for aspects with an expression, e.g. `Size`, the expression is
    treated like a default expression (visibility is analyzed at the point of
    occurrence of the aspect, but evaluation of the expression occurs at the
    freeze point of the entity involved).
--- 109,166 ----
    forms of declarations listed in the AI are supported. The following is a
    list of the aspects supported (with GNAT implementation aspects marked)
  
! ==================================== ===========
! Supported Aspect                     Source
! ==================================== ===========
!   ``Ada_2005``                           -- GNAT
!   ``Ada_2012``                           -- GNAT
!   ``Address``
!   ``Alignment``
!   ``Atomic``
!   ``Atomic_Components``
!   ``Bit_Order``
!   ``Component_Size``
!   ``Contract_Cases``                     -- GNAT
!   ``Discard_Names``
!   ``External_Tag``
!   ``Favor_Top_Level``                    -- GNAT
!   ``Inline``
!   ``Inline_Always``                      -- GNAT
!   ``Invariant``                          -- GNAT
!   ``Machine_Radix``
!   ``No_Return``
!   ``Object_Size``                        -- GNAT
!   ``Pack``
!   ``Persistent_BSS``                     -- GNAT
!   ``Post``
!   ``Pre``
!   ``Predicate``
!   ``Preelaborable_Initialization``
!   ``Pure_Function``                      -- GNAT
!   ``Remote_Access_Type``                 -- GNAT
!   ``Shared``                             -- GNAT
!   ``Size``
!   ``Storage_Pool``
!   ``Storage_Size``
!   ``Stream_Size``
!   ``Suppress``
!   ``Suppress_Debug_Info``                -- GNAT
!   ``Test_Case``                          -- GNAT
!   ``Thread_Local_Storage``               -- GNAT
!   ``Type_Invariant``
!   ``Unchecked_Union``
!   ``Universal_Aliasing``                 -- GNAT
!   ``Unmodified``                         -- GNAT
!   ``Unreferenced``                       -- GNAT
!   ``Unreferenced_Objects``               -- GNAT
!   ``Unsuppress``
!   ``Value_Size``                         -- GNAT
!   ``Volatile``
!   ``Volatile_Components``
!   ``Warnings``                           -- GNAT
! ==================================== ===========
  
!   Note that for aspects with an expression, e.g. ``Size``, the expression is
    treated like a default expression (visibility is analyzed at the point of
    occurrence of the aspect, but evaluation of the expression occurs at the
    freeze point of the entity involved).
*************** Supported Aspect                    Sour
*** 188,194 ****
  * *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 `A'(F(X)).B` are now legal. This is
    useful in disambiguating some cases of overloading.
  
    RM References:  3.03 (11)   3.03 (21)   4.01 (2)   4.04 (7)   4.07 (3)
--- 188,194 ----
  * *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 ``A'(F(X)).B`` are now legal. This is
    useful in disambiguating some cases of overloading.
  
    RM References:  3.03 (11)   3.03 (21)   4.01 (2)   4.04 (7)   4.07 (3)
*************** Supported Aspect                    Sour
*** 211,217 ****
  
    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
!   obviously not intended. `Constraint_Error` should be raised, and GNAT
    has always done so in this situation.
  
    RM References:  3.03 (23)   3.10.02 (26/2)   4.01 (9)   6.04.01 (17)   8.05.01 (5/2)
--- 211,217 ----
  
    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
!   obviously not intended. ``Constraint_Error`` should be raised, and GNAT
    has always done so in this situation.
  
    RM References:  3.03 (23)   3.10.02 (26/2)   4.01 (9)   6.04.01 (17)   8.05.01 (5/2)
*************** Supported Aspect                    Sour
*** 242,249 ****
  * *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 (`SOFT_HYPHEN`) in conjunction with the
!   `Image` and `Value` attributes for the character types. Strictly
    speaking this is an inconsistency with Ada 95, but in practice the use of
    these attributes is so obscure that it will not cause problems.
  
--- 242,249 ----
  * *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 (``SOFT_HYPHEN``) in conjunction with the
!   ``Image`` and ``Value`` attributes for the character types. Strictly
    speaking this is an inconsistency with Ada 95, but in practice the use of
    these attributes is so obscure that it will not cause problems.
  
*************** Supported Aspect                    Sour
*** 251,263 ****
  
  .. index:: AI-0182 (Ada 2012 feature)
  
! * *AI-0182 Additional forms for `Character'Value* (0000-00-00)`
  
!   This AI allows `Character'Value` to accept the string `'?'` where
!   `?` is any character including non-graphic control characters. GNAT has
    always accepted such strings. It also allows strings such as
!   `HEX_00000041` to be accepted, but GNAT does not take advantage of this
!   permission and raises `Constraint_Error`, as is certainly still
    permitted.
  
    RM References:  3.05 (56/2)
--- 251,263 ----
  
  .. index:: AI-0182 (Ada 2012 feature)
  
! * *AI-0182 Additional forms for* ``Character'Value`` *(0000-00-00)*
  
!   This AI allows ``Character'Value`` to accept the string ``'?'`` where
!   ``?`` is any character including non-graphic control characters. GNAT has
    always accepted such strings. It also allows strings such as
!   ``HEX_00000041`` to be accepted, but GNAT does not take advantage of this
!   permission and raises ``Constraint_Error``, as is certainly still
    permitted.
  
    RM References:  3.05 (56/2)
*************** Supported Aspect                    Sour
*** 298,305 ****
  
  * *AI-0173 Testing if tags represent abstract types (2010-07-03)*
  
!   The function `Ada.Tags.Type_Is_Abstract` returns `True` if invoked
!   with the tag of an abstract type, and `False` otherwise.
  
    RM References:  3.09 (7.4/2)   3.09 (12.4/2)
  
--- 298,305 ----
  
  * *AI-0173 Testing if tags represent abstract types (2010-07-03)*
  
!   The function ``Ada.Tags.Type_Is_Abstract`` returns ``True`` if invoked
!   with the tag of an abstract type, and ``False`` otherwise.
  
    RM References:  3.09 (7.4/2)   3.09 (12.4/2)
  
*************** Supported Aspect                    Sour
*** 450,457 ****
  
  * *AI-0037 Out-of-range box associations in aggregate (0000-00-00)*
  
!   This AI confirms that an association of the form `Indx => <>` in an
!   array aggregate must raise `Constraint_Error` if `Indx`
    is out of range. The RM specified a range check on other associations, but
    not when the value of the association was defaulted. GNAT has always inserted
    a constraint check on the index value.
--- 450,457 ----
  
  * *AI-0037 Out-of-range box associations in aggregate (0000-00-00)*
  
!   This AI confirms that an association of the form ``Indx => <>`` in an
!   array aggregate must raise ``Constraint_Error`` if ``Indx``
    is out of range. The RM specified a range check on other associations, but
    not when the value of the association was defaulted. GNAT has always inserted
    a constraint check on the index value.
*************** Supported Aspect                    Sour
*** 464,470 ****
  
    Equality of untagged record composes, so that the predefined equality for a
    composite type that includes a component of some untagged record type
!   `R` uses the equality operation of `R` (which may be user-defined
    or predefined). This makes the behavior of untagged records identical to that
    of tagged types in this respect.
  
--- 464,470 ----
  
    Equality of untagged record composes, so that the predefined equality for a
    composite type that includes a component of some untagged record type
!   ``R`` uses the equality operation of ``R`` (which may be user-defined
    or predefined). This makes the behavior of untagged records identical to that
    of tagged types in this respect.
  
*************** Supported Aspect                    Sour
*** 541,547 ****
  
    The new syntax for iterating over arrays and containers is now implemented.
    Iteration over containers is for now limited to read-only iterators. Only
!   default iterators are supported, with the syntax:  `for Elem of C`.
  
    RM References:  5.05
  
--- 541,547 ----
  
    The new syntax for iterating over arrays and containers is now implemented.
    Iteration over containers is for now limited to read-only iterators. Only
!   default iterators are supported, with the syntax:  ``for Elem of C``.
  
    RM References:  5.05
  
*************** Supported Aspect                    Sour
*** 586,592 ****
  
  * *AI-0196 Null exclusion tests for out parameters (0000-00-00)*
  
!   Null exclusion checks are not made for `**out**` parameters when
    evaluating the actual parameters. GNAT has never generated these checks.
  
    RM References:  6.04.01 (13)
--- 586,592 ----
  
  * *AI-0196 Null exclusion tests for out parameters (0000-00-00)*
  
!   Null exclusion checks are not made for ``out`` parameters when
    evaluating the actual parameters. GNAT has never generated these checks.
  
    RM References:  6.04.01 (13)
*************** Supported Aspect                    Sour
*** 638,644 ****
  
  * *AI-0050 Raising Constraint_Error early for function call (0000-00-00)*
  
!   The implementation permissions for raising `Constraint_Error` early on a function call
    when it was clear an exception would be raised were over-permissive and allowed
    mishandling of discriminants in some cases. GNAT did
    not take advantage of these incorrect permissions in any case.
--- 638,644 ----
  
  * *AI-0050 Raising Constraint_Error early for function call (0000-00-00)*
  
!   The implementation permissions for raising ``Constraint_Error`` early on a function call
    when it was clear an exception would be raised were over-permissive and allowed
    mishandling of discriminants in some cases. GNAT did
    not take advantage of these incorrect permissions in any case.
*************** Supported Aspect                    Sour
*** 745,751 ****
    Requeue is permitted to a protected, synchronized or task interface primitive
    providing it is known that the overriding operation is an entry. Otherwise
    the requeue statement has the same effect as a procedure call. Use of pragma
!   `Implemented` provides a way to impose a static requirement on the
    overriding operation by adhering to one of the implementation kinds: entry,
    protected procedure or any of the above.
  
--- 745,751 ----
    Requeue is permitted to a protected, synchronized or task interface primitive
    providing it is known that the overriding operation is an entry. Otherwise
    the requeue statement has the same effect as a procedure call. Use of pragma
!   ``Implemented`` provides a way to impose a static requirement on the
    overriding operation by adhering to one of the implementation kinds: entry,
    protected procedure or any of the above.
  
*************** Supported Aspect                    Sour
*** 756,762 ****
  
  * *AI-0201 Independence of atomic object components (2010-07-22)*
  
!   If an Atomic object has a pragma `Pack` or a `Component_Size`
    attribute, then individual components may not be addressable by independent
    tasks. However, if the representation clause has no effect (is confirming),
    then independence is not compromised. Furthermore, in GNAT, specification of
--- 756,762 ----
  
  * *AI-0201 Independence of atomic object components (2010-07-22)*
  
!   If an Atomic object has a pragma ``Pack`` or a ``Component_Size``
    attribute, then individual components may not be addressable by independent
    tasks. However, if the representation clause has no effect (is confirming),
    then independence is not compromised. Furthermore, in GNAT, specification of
*************** Supported Aspect                    Sour
*** 770,777 ****
  
  * *AI-0009 Pragma Independent[_Components] (2010-07-23)*
  
!   This AI introduces the new pragmas `Independent` and
!   `Independent_Components`,
    which control guaranteeing independence of access to objects and components.
    The AI also requires independence not unaffected by confirming rep clauses.
  
--- 770,777 ----
  
  * *AI-0009 Pragma Independent[_Components] (2010-07-23)*
  
!   This AI introduces the new pragmas ``Independent`` and
!   ``Independent_Components``,
    which control guaranteeing independence of access to objects and components.
    The AI also requires independence not unaffected by confirming rep clauses.
  
*************** Supported Aspect                    Sour
*** 782,788 ****
  
  * *AI-0072 Task signalling using 'Terminated (0000-00-00)*
  
!   This AI clarifies that task signalling for reading `'Terminated` only
    occurs if the result is True. GNAT semantics has always been consistent with
    this notion of task signalling.
  
--- 782,788 ----
  
  * *AI-0072 Task signalling using 'Terminated (0000-00-00)*
  
!   This AI clarifies that task signalling for reading ``'Terminated`` only
    occurs if the result is True. GNAT semantics has always been consistent with
    this notion of task signalling.
  
*************** Supported Aspect                    Sour
*** 904,912 ****
  
    This AI concerns giving names to various representation aspects, but the
    practical effect is simply to make the use of duplicate
!   `Atomic[_Components]`,
!   `Volatile[_Components]`, and
!   `Independent[_Components]` pragmas illegal, and GNAT
    now performs this required check.
  
    RM References:  13.01 (8)
--- 904,912 ----
  
    This AI concerns giving names to various representation aspects, but the
    practical effect is simply to make the use of duplicate
!   ``Atomic[_Components]``,
!   ``Volatile[_Components]``, and
!   ``Independent[_Components]`` pragmas illegal, and GNAT
    now performs this required check.
  
    RM References:  13.01 (8)
*************** Supported Aspect                    Sour
*** 925,931 ****
  * *AI-0012 Pack/Component_Size for aliased/atomic (2010-07-15)*
  
    It is now illegal to give an inappropriate component size or a pragma
!   `Pack` that attempts to change the component size in the case of atomic
    or aliased components. Previously GNAT ignored such an attempt with a
    warning.
  
--- 925,931 ----
  * *AI-0012 Pack/Component_Size for aliased/atomic (2010-07-15)*
  
    It is now illegal to give an inappropriate component size or a pragma
!   ``Pack`` that attempts to change the component size in the case of atomic
    or aliased components. Previously GNAT ignored such an attempt with a
    warning.
  
*************** Supported Aspect                    Sour
*** 945,954 ****
  
  * *AI-0095 Address of intrinsic subprograms (0000-00-00)*
  
!   The prefix of `'Address` cannot statically denote a subprogram with
!   convention `Intrinsic`. The use of the `Address` attribute raises
!   `Program_Error` if the prefix denotes a subprogram with convention
!   `Intrinsic`.
  
    RM References:  13.03 (11/1)
  
--- 945,954 ----
  
  * *AI-0095 Address of intrinsic subprograms (0000-00-00)*
  
!   The prefix of ``'Address`` cannot statically denote a subprogram with
!   convention ``Intrinsic``. The use of the ``Address`` attribute raises
!   ``Program_Error`` if the prefix denotes a subprogram with convention
!   ``Intrinsic``.
  
    RM References:  13.03 (11/1)
  
*************** Supported Aspect                    Sour
*** 967,974 ****
  * *AI-0146 Type invariants (2009-09-21)*
  
    Type invariants may be specified for private types using the aspect notation.
!   Aspect `Type_Invariant` may be specified for any private type,
!   `Type_Invariant'Class` can
    only be specified for tagged types, and is inherited by any descendent of the
    tagged types. The invariant is a boolean expression that is tested for being
    true in the following situations: conversions to the private type, object
--- 967,974 ----
  * *AI-0146 Type invariants (2009-09-21)*
  
    Type invariants may be specified for private types using the aspect notation.
!   Aspect ``Type_Invariant`` may be specified for any private type,
!   ``Type_Invariant'Class`` can
    only be specified for tagged types, and is inherited by any descendent of the
    tagged types. The invariant is a boolean expression that is tested for being
    true in the following situations: conversions to the private type, object
*************** Supported Aspect                    Sour
*** 976,983 ****
    [**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 `Invariant` for `Type_Invariant` and
!   `Invariant'Class` for `Type_Invariant'Class`.
  
    RM References:  13.03.03 (00)
  
--- 976,983 ----
    [**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 ``Invariant`` for ``Type_Invariant`` and
!   ``Invariant'Class`` for ``Type_Invariant'Class``.
  
    RM References:  13.03.03 (00)
  
*************** Supported Aspect                    Sour
*** 1011,1018 ****
  
  * *AI-0193 Alignment of allocators (2010-09-16)*
  
!   This AI introduces a new attribute `Max_Alignment_For_Allocation`,
!   analogous to `Max_Size_In_Storage_Elements`, but for alignment instead
    of size.
  
    RM References:  13.11 (16)   13.11 (21)   13.11.01 (0)   13.11.01 (1)
--- 1011,1018 ----
  
  * *AI-0193 Alignment of allocators (2010-09-16)*
  
!   This AI introduces a new attribute ``Max_Alignment_For_Allocation``,
!   analogous to ``Max_Size_In_Storage_Elements``, but for alignment instead
    of size.
  
    RM References:  13.11 (16)   13.11 (21)   13.11.01 (0)   13.11.01 (1)
*************** Supported Aspect                    Sour
*** 1048,1054 ****
  
  * *AI-0161 Restriction No_Default_Stream_Attributes (2010-09-11)*
  
!   A new restriction `No_Default_Stream_Attributes` prevents the use of any
    of the default stream attributes for elementary types. If this restriction is
    in force, then it is necessary to provide explicit subprograms for any
    stream attributes used.
--- 1048,1054 ----
  
  * *AI-0161 Restriction No_Default_Stream_Attributes (2010-09-11)*
  
!   A new restriction ``No_Default_Stream_Attributes`` prevents the use of any
    of the default stream attributes for elementary types. If this restriction is
    in force, then it is necessary to provide explicit subprograms for any
    stream attributes used.
*************** Supported Aspect                    Sour
*** 1059,1065 ****
  
  * *AI-0194 Value of Stream_Size attribute (0000-00-00)*
  
!   The `Stream_Size` attribute returns the default number of bits in the
    stream representation of the given type.
    This value is not affected by the presence
    of stream subprogram attributes for the type. GNAT has always implemented
--- 1059,1065 ----
  
  * *AI-0194 Value of Stream_Size attribute (0000-00-00)*
  
!   The ``Stream_Size`` attribute returns the default number of bits in the
    stream representation of the given type.
    This value is not affected by the presence
    of stream subprogram attributes for the type. GNAT has always implemented
*************** Supported Aspect                    Sour
*** 1131,1142 ****
  
  * *AI-0114 Classification of letters (0000-00-00)*
  
!   The code points 170 (`FEMININE ORDINAL INDICATOR`),
!   181 (`MICRO SIGN`), and
!   186 (`MASCULINE ORDINAL INDICATOR`) are technically considered
    lower case letters by Unicode.
    However, they are not allowed in identifiers, and they
!   return `False` to `Ada.Characters.Handling.Is_Letter/Is_Lower`.
    This behavior is consistent with that defined in Ada 95.
  
    RM References:  A.03.02 (59)   A.04.06 (7)
--- 1131,1142 ----
  
  * *AI-0114 Classification of letters (0000-00-00)*
  
!   The code points 170 (``FEMININE ORDINAL INDICATOR``),
!   181 (``MICRO SIGN``), and
!   186 (``MASCULINE ORDINAL INDICATOR``) are technically considered
    lower case letters by Unicode.
    However, they are not allowed in identifiers, and they
!   return ``False`` to ``Ada.Characters.Handling.Is_Letter/Is_Lower``.
    This behavior is consistent with that defined in Ada 95.
  
    RM References:  A.03.02 (59)   A.04.06 (7)
*************** Supported Aspect                    Sour
*** 1145,1155 ****
  
  * *AI-0185 Ada.Wide_[Wide_]Characters.Handling (2010-07-06)*
  
!   Two new packages `Ada.Wide_[Wide_]Characters.Handling` provide
!   classification functions for `Wide_Character` and
!   `Wide_Wide_Character`, as well as providing
!   case folding routines for `Wide_[Wide_]Character` and
!   `Wide_[Wide_]String`.
  
    RM References:  A.03.05 (0)   A.03.06 (0)
  
--- 1145,1155 ----
  
  * *AI-0185 Ada.Wide_[Wide_]Characters.Handling (2010-07-06)*
  
!   Two new packages ``Ada.Wide_[Wide_]Characters.Handling`` provide
!   classification functions for ``Wide_Character`` and
!   ``Wide_Wide_Character``, as well as providing
!   case folding routines for ``Wide_[Wide_]Character`` and
!   ``Wide_[Wide_]String``.
  
    RM References:  A.03.05 (0)   A.03.06 (0)
  
*************** Supported Aspect                    Sour
*** 1157,1166 ****
  
  * *AI-0031 Add From parameter to Find_Token (2010-07-25)*
  
!   A new version of `Find_Token` is added to all relevant string packages,
!   with an extra parameter `From`. Instead of starting at the first
    character of the string, the search for a matching Token starts at the
!   character indexed by the value of `From`.
    These procedures are available in all versions of Ada
    but if used in versions earlier than Ada 2012 they will generate a warning
    that an Ada 2012 subprogram is being used.
--- 1157,1166 ----
  
  * *AI-0031 Add From parameter to Find_Token (2010-07-25)*
  
!   A new version of ``Find_Token`` is added to all relevant string packages,
!   with an extra parameter ``From``. Instead of starting at the first
    character of the string, the search for a matching Token starts at the
!   character indexed by the value of ``From``.
    These procedures are available in all versions of Ada
    but if used in versions earlier than Ada 2012 they will generate a warning
    that an Ada 2012 subprogram is being used.
*************** Supported Aspect                    Sour
*** 1173,1179 ****
  * *AI-0056 Index on null string returns zero (0000-00-00)*
  
    The wording in the Ada 2005 RM implied an incompatible handling of the
!   `Index` functions, resulting in raising an exception instead of
    returning zero in some situations.
    This was not intended and has been corrected.
    GNAT always returned zero, and is thus consistent with this AI.
--- 1173,1179 ----
  * *AI-0056 Index on null string returns zero (0000-00-00)*
  
    The wording in the Ada 2005 RM implied an incompatible handling of the
!   ``Index`` functions, resulting in raising an exception instead of
    returning zero in some situations.
    This was not intended and has been corrected.
    GNAT always returned zero, and is thus consistent with this AI.
*************** Supported Aspect                    Sour
*** 1184,1203 ****
  
  * *AI-0137 String encoding package (2010-03-25)*
  
!   The packages `Ada.Strings.UTF_Encoding`, together with its child
!   packages, `Conversions`, `Strings`, `Wide_Strings`,
!   and `Wide_Wide_Strings` have been
    implemented. These packages (whose documentation can be found in the spec
    files :file:`a-stuten.ads`, :file:`a-suenco.ads`, :file:`a-suenst.ads`,
    :file:`a-suewst.ads`, :file:`a-suezst.ads`) allow encoding and decoding of
!   `String`, `Wide_String`, and `Wide_Wide_String`
    values using UTF coding schemes (including UTF-8, UTF-16LE, UTF-16BE, and
    UTF-16), as well as conversions between the different UTF encodings. With
!   the exception of `Wide_Wide_Strings`, these packages are available in
    Ada 95 and Ada 2005 mode as well as Ada 2012 mode.
!   The `Wide_Wide_Strings package`
    is available in Ada 2005 mode as well as Ada 2012 mode (but not in Ada 95
!   mode since it uses `Wide_Wide_Character`).
  
    RM References:  A.04.11
  
--- 1184,1203 ----
  
  * *AI-0137 String encoding package (2010-03-25)*
  
!   The packages ``Ada.Strings.UTF_Encoding``, together with its child
!   packages, ``Conversions``, ``Strings``, ``Wide_Strings``,
!   and ``Wide_Wide_Strings`` have been
    implemented. These packages (whose documentation can be found in the spec
    files :file:`a-stuten.ads`, :file:`a-suenco.ads`, :file:`a-suenst.ads`,
    :file:`a-suewst.ads`, :file:`a-suezst.ads`) allow encoding and decoding of
!   ``String``, ``Wide_String``, and ``Wide_Wide_String``
    values using UTF coding schemes (including UTF-8, UTF-16LE, UTF-16BE, and
    UTF-16), as well as conversions between the different UTF encodings. With
!   the exception of ``Wide_Wide_Strings``, these packages are available in
    Ada 95 and Ada 2005 mode as well as Ada 2012 mode.
!   The ``Wide_Wide_Strings`` package
    is available in Ada 2005 mode as well as Ada 2012 mode (but not in Ada 95
!   mode since it uses ``Wide_Wide_Character``).
  
    RM References:  A.04.11
  
*************** Supported Aspect                    Sour
*** 1236,1242 ****
  
    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
!   array type (such as `String`). GNAT allows such declarations but
    generates warnings. It is possible, but complicated, to write the
    corresponding C code and certainly such code would be specific to GNAT and
    non-portable.
--- 1236,1242 ----
  
    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
!   array type (such as ``String``). GNAT allows such declarations but
    generates warnings. It is possible, but complicated, to write the
    corresponding C code and certainly such code would be specific to GNAT and
    non-portable.
*************** Supported Aspect                    Sour
*** 1247,1253 ****
  
  * *AI-0216 No_Task_Hierarchy forbids local tasks (0000-00-00)*
  
!   It is clearly the intention that `No_Task_Hierarchy` is intended to
    forbid tasks declared locally within subprograms, or functions returning task
    objects, and that is the implementation that GNAT has always provided.
    However the language in the RM was not sufficiently clear on this point.
--- 1247,1253 ----
  
  * *AI-0216 No_Task_Hierarchy forbids local tasks (0000-00-00)*
  
!   It is clearly the intention that ``No_Task_Hierarchy`` is intended to
    forbid tasks declared locally within subprograms, or functions returning task
    objects, and that is the implementation that GNAT has always provided.
    However the language in the RM was not sufficiently clear on this point.
*************** Supported Aspect                    Sour
*** 1259,1266 ****
  
  * *AI-0211 No_Relative_Delays forbids Set_Handler use (2010-07-09)*
  
!   The restriction `No_Relative_Delays` forbids any calls to the subprogram
!   `Ada.Real_Time.Timing_Events.Set_Handler`.
  
    RM References:  D.07 (5)   D.07 (10/2)   D.07 (10.4/2)   D.07 (10.7/2)
  
--- 1259,1266 ----
  
  * *AI-0211 No_Relative_Delays forbids Set_Handler use (2010-07-09)*
  
!   The restriction ``No_Relative_Delays`` forbids any calls to the subprogram
!   ``Ada.Real_Time.Timing_Events.Set_Handler``.
  
    RM References:  D.07 (5)   D.07 (10/2)   D.07 (10.4/2)   D.07 (10.7/2)
  
*************** Supported Aspect                    Sour
*** 1268,1274 ****
  
  * *AI-0190 pragma Default_Storage_Pool (2010-09-15)*
  
!   This AI introduces a new pragma `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,
--- 1268,1274 ----
  
  * *AI-0190 pragma Default_Storage_Pool (2010-09-15)*
  
!   This AI introduces a new pragma ``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,
*************** Supported Aspect                    Sour
*** 1281,1287 ****
  
  * *AI-0189 No_Allocators_After_Elaboration (2010-01-23)*
  
!   This AI introduces a new restriction `No_Allocators_After_Elaboration`,
    which says that no dynamic allocation will occur once elaboration is
    completed.
    In general this requires a run-time check, which is not required, and which
--- 1281,1287 ----
  
  * *AI-0189 No_Allocators_After_Elaboration (2010-01-23)*
  
!   This AI introduces a new restriction ``No_Allocators_After_Elaboration``,
    which says that no dynamic allocation will occur once elaboration is
    completed.
    In general this requires a run-time check, which is not required, and which
*************** Supported Aspect                    Sour
*** 1295,1303 ****
  
  * *AI-0171 Pragma CPU and Ravenscar Profile (2010-09-24)*
  
!   A new package `System.Multiprocessors` is added, together with the
!   definition of pragma `CPU` for controlling task affinity. A new no
!   dependence restriction, on `System.Multiprocessors.Dispatching_Domains`,
    is added to the Ravenscar profile.
  
    RM References:  D.13.01 (4/2)   D.16
--- 1295,1303 ----
  
  * *AI-0171 Pragma CPU and Ravenscar Profile (2010-09-24)*
  
!   A new package ``System.Multiprocessors`` is added, together with the
!   definition of pragma ``CPU`` for controlling task affinity. A new no
!   dependence restriction, on ``System.Multiprocessors.Dispatching_Domains``,
    is added to the Ravenscar profile.
  
    RM References:  D.13.01 (4/2)   D.16
*************** Supported Aspect                    Sour
*** 1324,1330 ****
  
  * *AI-0152 Restriction No_Anonymous_Allocators (2010-09-08)*
  
!   Restriction `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)
--- 1324,1330 ----
  
  * *AI-0152 Restriction No_Anonymous_Allocators (2010-09-08)*
  
!   Restriction ``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)
diff -Nrcpad gcc-7.3.0/gcc/ada/doc/gnat_rm/implementation_of_specific_ada_features.rst gcc-8.1.0/gcc/ada/doc/gnat_rm/implementation_of_specific_ada_features.rst
*** gcc-7.3.0/gcc/ada/doc/gnat_rm/implementation_of_specific_ada_features.rst	Fri Oct 23 13:10:35 2015
--- gcc-8.1.0/gcc/ada/doc/gnat_rm/implementation_of_specific_ada_features.rst	Fri Sep  8 12:34:54 2017
*************** Machine Code Insertions
*** 14,20 ****
  
  .. index:: Machine Code insertions
  
! Package `Machine_Code` provides machine code support as described
  in the Ada Reference Manual in two separate forms:
  
  *
--- 14,20 ----
  
  .. index:: Machine Code insertions
  
! Package ``Machine_Code`` provides machine code support as described
  in the Ada Reference Manual in two separate forms:
  
  *
*************** and use of the facilities in this packag
*** 30,41 ****
  instruction, see the section on Extended Asm in
  :title:`Using_the_GNU_Compiler_Collection_(GCC)`.
  
! Calls to the function `Asm` and the procedure `Asm` have identical
  semantic restrictions and effects as described below.  Both are provided so
  that the procedure call can be used as a statement, and the function call
  can be used to form a code_statement.
  
! Consider this C `asm` instruction:
  
  ::
  
--- 30,41 ----
  instruction, see the section on Extended Asm in
  :title:`Using_the_GNU_Compiler_Collection_(GCC)`.
  
! Calls to the function ``Asm`` and the procedure ``Asm`` have identical
  semantic restrictions and effects as described below.  Both are provided so
  that the procedure call can be used as a statement, and the function call
  can be used to form a code_statement.
  
! Consider this C ``asm`` instruction:
  
  ::
  
*************** The equivalent can be written for GNAT a
*** 51,64 ****
         My_Float'Asm_Input  ("f",  angle));
  
  
! The first argument to `Asm` is the assembler template, and is
  identical to what is used in GNU C.  This string must be a static
  expression.  The second argument is the output operand list.  It is
! either a single `Asm_Output` attribute reference, or a list of such
  references enclosed in parentheses (technically an array aggregate of
  such references).
  
! The `Asm_Output` attribute denotes a function that takes two
  parameters.  The first is a string, the second is the name of a variable
  of the type designated by the attribute prefix.  The first (string)
  argument is required to be a static expression and designates the
--- 51,64 ----
         My_Float'Asm_Input  ("f",  angle));
  
  
! The first argument to ``Asm`` is the assembler template, and is
  identical to what is used in GNU C.  This string must be a static
  expression.  The second argument is the output operand list.  It is
! either a single ``Asm_Output`` attribute reference, or a list of such
  references enclosed in parentheses (technically an array aggregate of
  such references).
  
! The ``Asm_Output`` attribute denotes a function that takes two
  parameters.  The first is a string, the second is the name of a variable
  of the type designated by the attribute prefix.  The first (string)
  argument is required to be a static expression and designates the
*************** argument is the variable to be written o
*** 69,87 ****
  result.  The possible values for constraint are the same as those used in
  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 `No_Output_Operands`.
  No support is provided for GNU C's symbolic names for output parameters.
  
  The second argument of ``my_float'Asm_Output`` functions as
! though it were an `out` parameter, which is a little curious, but
  all names have the form of expressions, so there is no syntactic
  irregularity, even though normally functions would not be permitted
! `out` parameters.  The third argument is the list of input
! operands.  It is either a single `Asm_Input` attribute reference, or
  a list of such references enclosed in parentheses (technically an array
  aggregate of such references).
  
! The `Asm_Input` attribute denotes a function that takes two
  parameters.  The first is a string, the second is an expression of the
  type designated by the prefix.  The first (string) argument is required
  to be a static expression, and is the constraint for the parameter,
--- 69,87 ----
  result.  The possible values for constraint are the same as those used in
  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 ``No_Output_Operands``.
  No support is provided for GNU C's symbolic names for output parameters.
  
  The second argument of ``my_float'Asm_Output`` functions as
! though it were an ``out`` parameter, which is a little curious, but
  all names have the form of expressions, so there is no syntactic
  irregularity, even though normally functions would not be permitted
! ``out`` parameters.  The third argument is the list of input
! operands.  It is either a single ``Asm_Input`` attribute reference, or
  a list of such references enclosed in parentheses (technically an array
  aggregate of such references).
  
! The ``Asm_Input`` attribute denotes a function that takes two
  parameters.  The first is a string, the second is an expression of the
  type designated by the prefix.  The first (string) argument is required
  to be a static expression, and is the constraint for the parameter,
*************** the configuration file used to built the
*** 92,110 ****
  No support is provided for GNU C's symbolic names for input parameters.
  
  If there are no input operands, this argument may either be omitted, or
! explicitly given as `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 `Asm` call.  If
  this argument is the null string (the default value), then the code
  generator assumes that no additional registers are destroyed.
! In addition to registers, the special clobbers `memory` and
! `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 `False`.  It can be set to
! the literal value `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
  will still be generated, even if none of the outputs are
--- 92,110 ----
  No support is provided for GNU C's symbolic names for input parameters.
  
  If there are no input operands, this argument may either be omitted, or
! explicitly given as ``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 ``Asm`` call.  If
  this argument is the null string (the default value), then the code
  generator assumes that no additional registers are destroyed.
! In addition to registers, the special clobbers ``memory`` and
! ``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 ``False``.  It can be set to
! the literal value ``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
  will still be generated, even if none of the outputs are
*************** Generally it is strongly advisable to us
*** 114,127 ****
  that is missing either input or output operands or to avoid unwanted
  optimizations. A warning is generated if this advice is not followed.
  
! No support is provided for GNU C's `asm goto` feature.
  
! The `Asm` subprograms may be used in two ways.  First the procedure
  forms can be used anywhere a procedure call would be valid, and
  correspond to what the RM calls 'intrinsic' routines.  Such calls can
  be used to intersperse machine instructions with other Ada statements.
  Second, the function forms, which return a dummy value of the limited
! private type `Asm_Insn`, can be used in code statements, and indeed
  this is the only context where such calls are allowed.  Code statements
  appear as aggregates of the form:
  
--- 114,127 ----
  that is missing either input or output operands or to avoid unwanted
  optimizations. A warning is generated if this advice is not followed.
  
! No support is provided for GNU C's ``asm goto`` feature.
  
! The ``Asm`` subprograms may be used in two ways.  First the procedure
  forms can be used anywhere a procedure call would be valid, and
  correspond to what the RM calls 'intrinsic' routines.  Such calls can
  be used to intersperse machine instructions with other Ada statements.
  Second, the function forms, which return a dummy value of the limited
! private type ``Asm_Insn``, can be used in code statements, and indeed
  this is the only context where such calls are allowed.  Code statements
  appear as aggregates of the form:
  
*************** not permissible to intermix such stateme
*** 137,143 ****
  Typically the form using intrinsic procedure calls is more convenient
  and more flexible.  The code statement form is provided to meet the RM
  suggestion that such a facility should be made available.  The following
! is the exact syntax of the call to `Asm`. As usual, if named notation
  is used, the arguments may be given in arbitrary order, following the
  normal rules for use of positional and named arguments:
  
--- 137,143 ----
  Typically the form using intrinsic procedure calls is more convenient
  and more flexible.  The code statement form is provided to meet the RM
  suggestion that such a facility should be made available.  The following
! is the exact syntax of the call to ``Asm``. As usual, if named notation
  is used, the arguments may be given in arbitrary order, following the
  normal rules for use of positional and named arguments:
  
*************** normal rules for use of positional and n
*** 166,175 ****
    INPUT_OPERAND_ATTRIBUTE ::=
      SUBTYPE_MARK'Asm_Input (static_string_EXPRESSION, EXPRESSION)
  
! The identifiers `No_Input_Operands` and `No_Output_Operands`
! are declared in the package `Machine_Code` and must be referenced
  according to normal visibility rules. In particular if there is no
! `use` clause for this package, then appropriate package name
  qualification is required.
  
  .. _GNAT_Implementation_of_Tasking:
--- 166,175 ----
    INPUT_OPERAND_ATTRIBUTE ::=
      SUBTYPE_MARK'Asm_Input (static_string_EXPRESSION, EXPRESSION)
  
! The identifiers ``No_Input_Operands`` and ``No_Output_Operands``
! are declared in the package ``Machine_Code`` and must be referenced
  according to normal visibility rules. In particular if there is no
! ``use`` clause for this package, then appropriate package name
  qualification is required.
  
  .. _GNAT_Implementation_of_Tasking:
*************** the underlying threads has significant a
*** 251,257 ****
  complications when it comes to respecting the scheduling semantics
  specified in the real-time annex (Annex D).
  
! For instance the Annex D requirement for the `FIFO_Within_Priorities`
  scheduling policy states:
  
    *When the active priority of a ready task that is not running
--- 251,257 ----
  complications when it comes to respecting the scheduling semantics
  specified in the real-time annex (Annex D).
  
! For instance the Annex D requirement for the ``FIFO_Within_Priorities``
  scheduling policy states:
  
    *When the active priority of a ready task that is not running
*************** Note that this simple scheme preserves t
*** 285,290 ****
--- 285,324 ----
  that were ready to execute in the priority queue where R has been
  placed at the end.
  
+ .. Support_for_Locking_Policies
+ 
+ Support for Locking Policies
+ ----------------------------
+ 
+ This section specifies which policies specified by pragma Locking_Policy
+ are supported on which platforms.
+ 
+ GNAT supports the standard ``Ceiling_Locking`` policy, and the
+ implementation defined ``Inheritance_Locking`` and
+ ``Concurrent_Readers_Locking`` policies.
+ 
+ ``Ceiling_Locking`` is supported on all platforms if the operating system
+ supports it. In particular, ``Ceiling_Locking`` is not supported on
+ VxWorks.
+ ``Inheritance_Locking`` is supported on
+ Linux,
+ Darwin (Mac OS X),
+ LynxOS 178,
+ and VxWorks.
+ ``Concurrent_Readers_Locking`` is supported on Linux.
+ 
+ Notes about ``Ceiling_Locking`` on Linux:
+ If the process is running as 'root', ceiling locking is used.
+ If the capabilities facility is installed
+ ("sudo apt-get --assume-yes install libcap-dev" on Ubuntu,
+ for example),
+ and the program is linked against that library
+ ("-largs -lcap"),
+ and the executable file has the cap_sys_nice capability
+ ("sudo /sbin/setcap cap_sys_nice=ep executable_file_name"),
+ then ceiling locking is used.
+ Otherwise, the ``Ceiling_Locking`` policy is ignored.
+ 
  .. _GNAT_Implementation_of_Shared_Passive_Packages:
  
  GNAT Implementation of Shared Passive Packages
*************** GNAT Implementation of Shared Passive Pa
*** 293,299 ****
  .. index:: Shared passive packages
  
  GNAT fully implements the :index:`pragma <pragma Shared_Passive>`
! `Shared_Passive` for
  the purpose of designating shared passive packages.
  This allows the use of passive partitions in the
  context described in the Ada Reference Manual; i.e., for communication
--- 327,333 ----
  .. index:: Shared passive packages
  
  GNAT fully implements the :index:`pragma <pragma Shared_Passive>`
! ``Shared_Passive`` for
  the purpose of designating shared passive packages.
  This allows the use of passive partitions in the
  context described in the Ada Reference Manual; i.e., for communication
*************** written.
*** 328,334 ****
  
  .. index:: SHARED_MEMORY_DIRECTORY environment variable
  
! The environment variable `SHARED_MEMORY_DIRECTORY` should be
  set to the directory to be used for these files.
  The files in this directory
  have names that correspond to their fully qualified names. For
--- 362,368 ----
  
  .. index:: SHARED_MEMORY_DIRECTORY environment variable
  
! The environment variable ``SHARED_MEMORY_DIRECTORY`` should be
  set to the directory to be used for these files.
  The files in this directory
  have names that correspond to their fully qualified names. For
*************** example, if we have the package
*** 342,348 ****
      Z : Float;
    end X;
  
! and the environment variable is set to `/stemp/`, then the files created
  will have the names:
  
  ::
--- 376,382 ----
      Z : Float;
    end X;
  
! and the environment variable is set to ``/stemp/``, then the files created
  will have the names:
  
  ::
*************** will be used. This model ensures that th
*** 359,365 ****
  the elaboration process, since elaboration of passive packages elaborates the
  initial values, but does not create the files.
  
! The files are written using normal `Stream_IO` access.
  If you want to be able
  to communicate between programs or partitions running on different
  architectures, then you should use the XDR versions of the stream attribute
--- 393,399 ----
  the elaboration process, since elaboration of passive packages elaborates the
  initial values, but does not create the files.
  
! The files are written using normal ``Stream_IO`` access.
  If you want to be able
  to communicate between programs or partitions running on different
  architectures, then you should use the XDR versions of the stream attribute
*************** Constant aggregates with unconstrained n
*** 462,468 ****
  ----------------------------------------------------
  
  In such cases the aggregate itself establishes the subtype, so that
! associations with `others` cannot be used.  GNAT determines the
  bounds for the actual subtype of the aggregate, and allocates the
  aggregate statically as well.  No code is generated for the following:
  
--- 496,502 ----
  ----------------------------------------------------
  
  In such cases the aggregate itself establishes the subtype, so that
! associations with ``others`` cannot be used.  GNAT determines the
  bounds for the actual subtype of the aggregate, and allocates the
  aggregate statically as well.  No code is generated for the following:
  
*************** that temporary will be copied onto the t
*** 562,568 ****
  The Size of Discriminated Records with Default Discriminants
  ============================================================
  
! If a discriminated type `T` has discriminants with default values, it is
  possible to declare an object of this type without providing an explicit
  constraint:
  
--- 596,602 ----
  The Size of Discriminated Records with Default Discriminants
  ============================================================
  
! If a discriminated type ``T`` has discriminants with default values, it is
  possible to declare an object of this type without providing an explicit
  constraint:
  
*************** that depend on it:
*** 595,606 ****
  
  In order to support this behavior efficiently, an unconstrained object is
  given the maximum size that any value of the type requires. In the case
! above, `Word` has storage for the discriminant and for
! a `String` of length 100.
  It is important to note that unconstrained objects do not require dynamic
  allocation. It would be an improper implementation to place on the heap those
  components whose size depends on discriminants. (This improper implementation
! was used by some Ada83 compilers, where the `Name` component above
  would have
  been stored as a pointer to a dynamic string). Following the principle that
  dynamic storage management should never be introduced implicitly,
--- 629,640 ----
  
  In order to support this behavior efficiently, an unconstrained object is
  given the maximum size that any value of the type requires. In the case
! above, ``Word`` has storage for the discriminant and for
! a ``String`` of length 100.
  It is important to note that unconstrained objects do not require dynamic
  allocation. It would be an improper implementation to place on the heap those
  components whose size depends on discriminants. (This improper implementation
! was used by some Ada83 compilers, where the ``Name`` component above
  would have
  been stored as a pointer to a dynamic string). Following the principle that
  dynamic storage management should never be introduced implicitly,
*************** declaration:
*** 626,638 ****
    Too_Large : Rec;
  
  is flagged by the compiler with a warning:
! an attempt to create `Too_Large` will raise `Storage_Error`,
! because the required size includes `Positive'Last`
  bytes. As the first example indicates, the proper approach is to declare an
  index type of 'reasonable' range so that unconstrained objects are not too
  large.
  
! One final wrinkle: if the object is declared to be `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
--- 660,672 ----
    Too_Large : Rec;
  
  is flagged by the compiler with a warning:
! an attempt to create ``Too_Large`` will raise ``Storage_Error``,
! because the required size includes ``Positive'Last``
  bytes. As the first example indicates, the proper approach is to declare an
  index type of 'reasonable' range so that unconstrained objects are not too
  large.
  
! One final wrinkle: if the object is declared to be ``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
*************** calls and generic instantiations (*-gnat
*** 660,667 ****
  (*-fstack-check*).
  
  Note that the result of a floating point arithmetic operation in overflow and
! invalid situations, when the `Machine_Overflows` attribute of the result
! type is `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
--- 694,701 ----
  (*-fstack-check*).
  
  Note that the result of a floating point arithmetic operation in overflow and
! invalid situations, when the ``Machine_Overflows`` attribute of the result
! type is ``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
diff -Nrcpad gcc-7.3.0/gcc/ada/doc/gnat_rm/interfacing_to_other_languages.rst gcc-8.1.0/gcc/ada/doc/gnat_rm/interfacing_to_other_languages.rst
*** gcc-7.3.0/gcc/ada/doc/gnat_rm/interfacing_to_other_languages.rst	Fri Jan 13 11:23:42 2017
--- gcc-8.1.0/gcc/ada/doc/gnat_rm/interfacing_to_other_languages.rst	Fri Sep  8 12:34:54 2017
*************** Interfacing to C
*** 16,28 ****
  Interfacing to C with GNAT can use one of two approaches:
  
  *
!   The types in the package `Interfaces.C` may be used.
  *
    Standard Ada types may be used directly.  This may be less portable to
    other compilers, but will work on all GNAT compilers, which guarantee
    correspondence between the C and Ada types.
  
! Pragma `Convention C` may be applied to Ada types, but mostly has no
  effect, since this is the default.  The following table shows the
  correspondence between Ada scalar types and the corresponding C types.
  
--- 16,28 ----
  Interfacing to C with GNAT can use one of two approaches:
  
  *
!   The types in the package ``Interfaces.C`` may be used.
  *
    Standard Ada types may be used directly.  This may be less portable to
    other compilers, but will work on all GNAT compilers, which guarantee
    correspondence between the C and Ada types.
  
! Pragma ``Convention C`` may be applied to Ada types, but mostly has no
  effect, since this is the default.  The following table shows the
  correspondence between Ada scalar types and the corresponding C types.
  
*************** and C types:
*** 46,56 ****
  
  *
    Ada enumeration types map to C enumeration types directly if pragma
!   `Convention C` is specified, which causes them to have int
!   length.  Without pragma `Convention C`, Ada enumeration types map to
!   8, 16, or 32 bits (i.e., C types `signed char`, `short`,
!   `int`, respectively) depending on the number of values passed.
!   This is the only case in which pragma `Convention C` affects the
    representation of an Ada type.
  
  *
--- 46,56 ----
  
  *
    Ada enumeration types map to C enumeration types directly if pragma
!   ``Convention C`` is specified, which causes them to have int
!   length.  Without pragma ``Convention C``, Ada enumeration types map to
!   8, 16, or 32 bits (i.e., C types ``signed char``, ``short``,
!   ``int``, respectively) depending on the number of values passed.
!   This is the only case in which pragma ``Convention C`` affects the
    representation of an Ada type.
  
  *
*************** Using these pragmas it is possible to ac
*** 80,108 ****
  inter-operability between Ada tagged types and C++ class definitions.
  See :ref:`Implementation_Defined_Pragmas`, for more details.
  
! *pragma CPP_Class ([Entity =>] `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
    corresponds to an externally declared C++ class type, and is to be laid
    out the same way that C++ would lay out the type.
  
!   Note: Pragma `CPP_Class` is currently obsolete. It is supported
    for backward compatibility but its functionality is available
!   using pragma `Import` with `Convention` = `CPP`.
  
  
! *pragma CPP_Constructor ([Entity =>] `LOCAL_NAME`)*
    This pragma identifies an imported function (imported in the usual way
!   with pragma `Import`) as corresponding to a C++ constructor.
  
! A few restrictions are placed on the use of the `Access` attribute
! in conjunction with subprograms subject to convention `CPP`: the
  attribute may be used neither on primitive operations of a tagged
! record type with convention `CPP`, imported or not, nor on
! subprograms imported with pragma `CPP_Constructor`.
  
  In addition, C++ exceptions are propagated and can be handled in an
! `others` choice of an exception handler. The corresponding Ada
  occurrence has no message, and the simple name of the exception identity
  contains ``Foreign_Exception``. Finalization and awaiting dependent
  tasks works properly when such foreign exceptions are propagated.
--- 80,108 ----
  inter-operability between Ada tagged types and C++ class definitions.
  See :ref:`Implementation_Defined_Pragmas`, for more details.
  
! :samp:`pragma CPP_Class ([Entity =>] {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
    corresponds to an externally declared C++ class type, and is to be laid
    out the same way that C++ would lay out the type.
  
!   Note: Pragma ``CPP_Class`` is currently obsolete. It is supported
    for backward compatibility but its functionality is available
!   using pragma ``Import`` with ``Convention`` = ``CPP``.
  
  
! :samp:`pragma CPP_Constructor ([Entity =>] {LOCAL_NAME})`
    This pragma identifies an imported function (imported in the usual way
!   with pragma ``Import``) as corresponding to a C++ constructor.
  
! A few restrictions are placed on the use of the ``Access`` attribute
! in conjunction with subprograms subject to convention ``CPP``: the
  attribute may be used neither on primitive operations of a tagged
! record type with convention ``CPP``, imported or not, nor on
! subprograms imported with pragma ``CPP_Constructor``.
  
  In addition, C++ exceptions are propagated and can be handled in an
! ``others`` choice of an exception handler. The corresponding Ada
  occurrence has no message, and the simple name of the exception identity
  contains ``Foreign_Exception``. Finalization and awaiting dependent
  tasks works properly when such foreign exceptions are propagated.
*************** It is also possible to import a C++ exce
*** 118,124 ****
      [External_Name =>] static_string_EXPRESSION);
  
  
! The `External_Name` is the name of the C++ RTTI symbol. You can then
  cover a specific C++ exception in an exception handler.
  
  .. _Interfacing_to_COBOL:
--- 118,124 ----
      [External_Name =>] static_string_EXPRESSION);
  
  
! The ``External_Name`` is the name of the C++ RTTI symbol. You can then
  cover a specific C++ exception in an exception handler.
  
  .. _Interfacing_to_COBOL:
*************** Interfacing to Fortran
*** 135,141 ****
  ======================
  
  Interfacing to Fortran is achieved as described in section B.5 of the
! Ada Reference Manual.  The pragma `Convention Fortran`, applied to a
  multi-dimensional array causes the array to be stored in column-major
  order as required for convenient interface to Fortran.
  
--- 135,141 ----
  ======================
  
  Interfacing to Fortran is achieved as described in section B.5 of the
! Ada Reference Manual.  The pragma ``Convention Fortran``, applied to a
  multi-dimensional array causes the array to be stored in column-major
  order as required for convenient interface to Fortran.
  
*************** order as required for convenient interfa
*** 144,151 ****
  Interfacing to non-GNAT Ada code
  ================================
  
! It is possible to specify the convention `Ada` in a pragma
! `Import` or pragma `Export`.  However this refers to
  the calling conventions used by GNAT, which may or may not be
  similar enough to those used by some other Ada 83 / Ada 95 / Ada 2005
  compiler to allow interoperation.
--- 144,151 ----
  Interfacing to non-GNAT Ada code
  ================================
  
! It is possible to specify the convention ``Ada`` in a pragma
! ``Import`` or pragma ``Export``.  However this refers to
  the calling conventions used by GNAT, which may or may not be
  similar enough to those used by some other Ada 83 / Ada 95 / Ada 2005
  compiler to allow interoperation.
diff -Nrcpad gcc-7.3.0/gcc/ada/doc/gnat_rm/intrinsic_subprograms.rst gcc-8.1.0/gcc/ada/doc/gnat_rm/intrinsic_subprograms.rst
*** gcc-7.3.0/gcc/ada/doc/gnat_rm/intrinsic_subprograms.rst	Fri Feb 20 09:11:44 2015
--- gcc-8.1.0/gcc/ada/doc/gnat_rm/intrinsic_subprograms.rst	Wed Sep 13 07:50:02 2017
*************** GNAT allows a user application program t
*** 12,18 ****
  .. code-block:: ada
  
       pragma Import (Intrinsic, name);
!   
  
  providing that the name corresponds to one of the implemented intrinsic
  subprograms in GNAT, and that the parameter profile of the referenced
--- 12,18 ----
  .. code-block:: ada
  
       pragma Import (Intrinsic, name);
! 
  
  providing that the name corresponds to one of the implemented intrinsic
  subprograms in GNAT, and that the parameter profile of the referenced
*************** Intrinsic Operators
*** 31,43 ****
  .. index:: Intrinsic operator
  
  All the predefined numeric operators in package Standard
! in `pragma Import (Intrinsic,..)`
  declarations.  In the binary operator case, the operands must have the same
  size.  The operand or operands must also be appropriate for
  the operator.  For example, for addition, the operands must
  both be floating-point or both be fixed-point, and the
! right operand for `"**"` must have a root type of
! `Standard.Integer'Base`.
  You can use an intrinsic operator declaration as in the following example:
  
  
--- 31,43 ----
  .. index:: Intrinsic operator
  
  All the predefined numeric operators in package Standard
! in ``pragma Import (Intrinsic,..)``
  declarations.  In the binary operator case, the operands must have the same
  size.  The operand or operands must also be appropriate for
  the operator.  For example, for addition, the operands must
  both be floating-point or both be fixed-point, and the
! right operand for ``"**"`` must have a root type of
! ``Standard.Integer'Base``.
  You can use an intrinsic operator declaration as in the following example:
  
  
*************** You can use an intrinsic operator declar
*** 49,61 ****
       function "+" (X1 : Int1; X2 : Int2) return Int1;
       function "+" (X1 : Int1; X2 : Int2) return Int2;
       pragma Import (Intrinsic, "+");
!   
  
  This declaration would permit 'mixed mode' arithmetic on items
! of the differing types `Int1` and `Int2`.
  It is also possible to specify such operators for private types, if the
  full views are appropriate arithmetic types.
  
  .. _Compilation_Date:
  
  Compilation_Date
--- 49,75 ----
       function "+" (X1 : Int1; X2 : Int2) return Int1;
       function "+" (X1 : Int1; X2 : Int2) return Int2;
       pragma Import (Intrinsic, "+");
! 
  
  This declaration would permit 'mixed mode' arithmetic on items
! of the differing types ``Int1`` and ``Int2``.
  It is also possible to specify such operators for private types, if the
  full views are appropriate arithmetic types.
  
+ .. _Compilation_ISO_Date:
+ 
+ Compilation_ISO_Date
+ ====================
+ 
+ .. index:: Compilation_ISO_Date
+ 
+ This intrinsic subprogram is used in the implementation of the
+ library package ``GNAT.Source_Info``.  The only useful use of the
+ intrinsic import in this case is the one in this unit, so an
+ application program should simply call the function
+ ``GNAT.Source_Info.Compilation_ISO_Date`` to obtain the date of
+ the current compilation (in local time format YYYY-MM-DD).
+ 
  .. _Compilation_Date:
  
  Compilation_Date
*************** Compilation_Date
*** 63,74 ****
  
  .. index:: Compilation_Date
  
! This intrinsic subprogram is used in the implementation of the
! library package `GNAT.Source_Info`.  The only useful use of the
! intrinsic import in this case is the one in this unit, so an
! application program should simply call the function
! `GNAT.Source_Info.Compilation_Date` to obtain the date of
! the current compilation (in local time format MMM DD YYYY).
  
  .. _Compilation_Time:
  
--- 77,84 ----
  
  .. index:: Compilation_Date
  
! Same as Compilation_ISO_Date, except the string is in the form
! MMM DD YYYY.
  
  .. _Compilation_Time:
  
*************** Compilation_Time
*** 78,87 ****
  .. index:: Compilation_Time
  
  This intrinsic subprogram is used in the implementation of the
! library package `GNAT.Source_Info`.  The only useful use of the
  intrinsic import in this case is the one in this unit, so an
  application program should simply call the function
! `GNAT.Source_Info.Compilation_Time` to obtain the time of
  the current compilation (in local time format HH:MM:SS).
  
  .. _Enclosing_Entity:
--- 88,97 ----
  .. index:: Compilation_Time
  
  This intrinsic subprogram is used in the implementation of the
! library package ``GNAT.Source_Info``.  The only useful use of the
  intrinsic import in this case is the one in this unit, so an
  application program should simply call the function
! ``GNAT.Source_Info.Compilation_Time`` to obtain the time of
  the current compilation (in local time format HH:MM:SS).
  
  .. _Enclosing_Entity:
*************** Enclosing_Entity
*** 92,101 ****
  .. index:: Enclosing_Entity
  
  This intrinsic subprogram is used in the implementation of the
! library package `GNAT.Source_Info`.  The only useful use of the
  intrinsic import in this case is the one in this unit, so an
  application program should simply call the function
! `GNAT.Source_Info.Enclosing_Entity` to obtain the name of
  the current subprogram, package, task, entry, or protected subprogram.
  
  .. _Exception_Information:
--- 102,111 ----
  .. index:: Enclosing_Entity
  
  This intrinsic subprogram is used in the implementation of the
! library package ``GNAT.Source_Info``.  The only useful use of the
  intrinsic import in this case is the one in this unit, so an
  application program should simply call the function
! ``GNAT.Source_Info.Enclosing_Entity`` to obtain the name of
  the current subprogram, package, task, entry, or protected subprogram.
  
  .. _Exception_Information:
*************** Exception_Information
*** 106,115 ****
  .. index:: Exception_Information'
  
  This intrinsic subprogram is used in the implementation of the
! library package `GNAT.Current_Exception`.  The only useful
  use of the intrinsic import in this case is the one in this unit,
  so an application program should simply call the function
! `GNAT.Current_Exception.Exception_Information` to obtain
  the exception information associated with the current exception.
  
  .. _Exception_Message:
--- 116,125 ----
  .. index:: Exception_Information'
  
  This intrinsic subprogram is used in the implementation of the
! library package ``GNAT.Current_Exception``.  The only useful
  use of the intrinsic import in this case is the one in this unit,
  so an application program should simply call the function
! ``GNAT.Current_Exception.Exception_Information`` to obtain
  the exception information associated with the current exception.
  
  .. _Exception_Message:
*************** Exception_Message
*** 120,129 ****
  .. index:: Exception_Message
  
  This intrinsic subprogram is used in the implementation of the
! library package `GNAT.Current_Exception`.  The only useful
  use of the intrinsic import in this case is the one in this unit,
  so an application program should simply call the function
! `GNAT.Current_Exception.Exception_Message` to obtain
  the message associated with the current exception.
  
  .. _Exception_Name:
--- 130,139 ----
  .. index:: Exception_Message
  
  This intrinsic subprogram is used in the implementation of the
! library package ``GNAT.Current_Exception``.  The only useful
  use of the intrinsic import in this case is the one in this unit,
  so an application program should simply call the function
! ``GNAT.Current_Exception.Exception_Message`` to obtain
  the message associated with the current exception.
  
  .. _Exception_Name:
*************** Exception_Name
*** 134,143 ****
  .. index:: Exception_Name
  
  This intrinsic subprogram is used in the implementation of the
! library package `GNAT.Current_Exception`.  The only useful
  use of the intrinsic import in this case is the one in this unit,
  so an application program should simply call the function
! `GNAT.Current_Exception.Exception_Name` to obtain
  the name of the current exception.
  
  .. _File:
--- 144,153 ----
  .. index:: Exception_Name
  
  This intrinsic subprogram is used in the implementation of the
! library package ``GNAT.Current_Exception``.  The only useful
  use of the intrinsic import in this case is the one in this unit,
  so an application program should simply call the function
! ``GNAT.Current_Exception.Exception_Name`` to obtain
  the name of the current exception.
  
  .. _File:
*************** File
*** 148,157 ****
  .. index:: File
  
  This intrinsic subprogram is used in the implementation of the
! library package `GNAT.Source_Info`.  The only useful use of the
  intrinsic import in this case is the one in this unit, so an
  application program should simply call the function
! `GNAT.Source_Info.File` to obtain the name of the current
  file.
  
  .. _Line:
--- 158,167 ----
  .. index:: File
  
  This intrinsic subprogram is used in the implementation of the
! library package ``GNAT.Source_Info``.  The only useful use of the
  intrinsic import in this case is the one in this unit, so an
  application program should simply call the function
! ``GNAT.Source_Info.File`` to obtain the name of the current
  file.
  
  .. _Line:
*************** Line
*** 162,171 ****
  .. index:: Line
  
  This intrinsic subprogram is used in the implementation of the
! library package `GNAT.Source_Info`.  The only useful use of the
  intrinsic import in this case is the one in this unit, so an
  application program should simply call the function
! `GNAT.Source_Info.Line` to obtain the number of the current
  source line.
  
  .. _Shifts_and_Rotates:
--- 172,181 ----
  .. index:: Line
  
  This intrinsic subprogram is used in the implementation of the
! library package ``GNAT.Source_Info``.  The only useful use of the
  intrinsic import in this case is the one in this unit, so an
  application program should simply call the function
! ``GNAT.Source_Info.Line`` to obtain the number of the current
  source line.
  
  .. _Shifts_and_Rotates:
*************** Shifts and Rotates
*** 184,190 ****
  .. index:: Rotate_Right
  
  In standard Ada, the shift and rotate functions are available only
! for the predefined modular types in package `Interfaces`.  However, in
  GNAT it is possible to define these functions for any integer
  type (signed or modular), as in this example:
  
--- 194,200 ----
  .. index:: Rotate_Right
  
  In standard Ada, the shift and rotate functions are available only
! for the predefined modular types in package ``Interfaces``.  However, in
  GNAT it is possible to define these functions for any integer
  type (signed or modular), as in this example:
  
*************** type (signed or modular), as in this exa
*** 194,207 ****
       function Shift_Left
         (Value  : T;
          Amount : Natural) return T;
!   
  
  The function name must be one of
  Shift_Left, Shift_Right, Shift_Right_Arithmetic, Rotate_Left, or
  Rotate_Right. T must be an integer type. T'Size must be
  8, 16, 32 or 64 bits; if T is modular, the modulus
  must be 2**8, 2**16, 2**32 or 2**64.
! The result type must be the same as the type of `Value`.
  The shift amount must be Natural.
  The formal parameter names can be anything.
  
--- 204,217 ----
       function Shift_Left
         (Value  : T;
          Amount : Natural) return T;
! 
  
  The function name must be one of
  Shift_Left, Shift_Right, Shift_Right_Arithmetic, Rotate_Left, or
  Rotate_Right. T must be an integer type. T'Size must be
  8, 16, 32 or 64 bits; if T is modular, the modulus
  must be 2**8, 2**16, 2**32 or 2**64.
! The result type must be the same as the type of ``Value``.
  The shift amount must be Natural.
  The formal parameter names can be anything.
  
*************** Source_Location
*** 217,225 ****
  .. index:: Source_Location
  
  This intrinsic subprogram is used in the implementation of the
! library routine `GNAT.Source_Info`.  The only useful use of the
  intrinsic import in this case is the one in this unit, so an
  application program should simply call the function
! `GNAT.Source_Info.Source_Location` to obtain the current
  source file location.
- 
--- 227,234 ----
  .. index:: Source_Location
  
  This intrinsic subprogram is used in the implementation of the
! library routine ``GNAT.Source_Info``.  The only useful use of the
  intrinsic import in this case is the one in this unit, so an
  application program should simply call the function
! ``GNAT.Source_Info.Source_Location`` to obtain the current
  source file location.
diff -Nrcpad gcc-7.3.0/gcc/ada/doc/gnat_rm/obsolescent_features.rst gcc-8.1.0/gcc/ada/doc/gnat_rm/obsolescent_features.rst
*** gcc-7.3.0/gcc/ada/doc/gnat_rm/obsolescent_features.rst	Fri Jan 13 11:23:42 2017
--- gcc-8.1.0/gcc/ada/doc/gnat_rm/obsolescent_features.rst	Fri Sep  8 12:34:54 2017
*************** compatibility purposes.
*** 14,20 ****
  pragma No_Run_Time
  ==================
  
! The pragma `No_Run_Time` is used to achieve an affect similar
  to the use of the "Zero Foot Print" configurable run time, but without
  requiring a specially configured run time. The result of using this
  pragma, which must be used for all units in a partition, is to restrict
--- 14,20 ----
  pragma No_Run_Time
  ==================
  
! The pragma ``No_Run_Time`` is used to achieve an affect similar
  to the use of the "Zero Foot Print" configurable run time, but without
  requiring a specially configured run time. The result of using this
  pragma, which must be used for all units in a partition, is to restrict
*************** includes just those features that are to
*** 27,34 ****
  pragma Ravenscar
  ================
  
! The pragma `Ravenscar` has exactly the same effect as pragma
! `Profile (Ravenscar)`. The latter usage is preferred since it
  is part of the new Ada 2005 standard.
  
  .. _pragma_Restricted_Run_Time:
--- 27,34 ----
  pragma Ravenscar
  ================
  
! The pragma ``Ravenscar`` has exactly the same effect as pragma
! ``Profile (Ravenscar)``. The latter usage is preferred since it
  is part of the new Ada 2005 standard.
  
  .. _pragma_Restricted_Run_Time:
*************** is part of the new Ada 2005 standard.
*** 36,44 ****
  pragma Restricted_Run_Time
  ==========================
  
! The pragma `Restricted_Run_Time` has exactly the same effect as
! pragma `Profile (Restricted)`. The latter usage is
! preferred since the Ada 2005 pragma `Profile` is intended for
  this kind of implementation dependent addition.
  
  .. _pragma_Task_Info:
--- 36,44 ----
  pragma Restricted_Run_Time
  ==========================
  
! The pragma ``Restricted_Run_Time`` has exactly the same effect as
! pragma ``Profile (Restricted)``. The latter usage is
! preferred since the Ada 2005 pragma ``Profile`` is intended for
  this kind of implementation dependent addition.
  
  .. _pragma_Task_Info:
*************** this kind of implementation dependent ad
*** 46,54 ****
  pragma Task_Info
  ================
  
! The functionality provided by pragma `Task_Info` is now part of the
! Ada language. The `CPU` aspect and the package
! `System.Multiprocessors` offer a less system-dependent way to specify
  task affinity or to query the number of processsors.
  
  Syntax
--- 46,54 ----
  pragma Task_Info
  ================
  
! The functionality provided by pragma ``Task_Info`` is now part of the
! Ada language. The ``CPU`` aspect and the package
! ``System.Multiprocessors`` offer a less system-dependent way to specify
  task affinity or to query the number of processsors.
  
  Syntax
*************** Syntax
*** 58,66 ****
    pragma Task_Info (EXPRESSION);
  
  This pragma appears within a task definition (like pragma
! `Priority`) and applies to the task in which it appears.  The
! argument must be of type `System.Task_Info.Task_Info_Type`.
! The `Task_Info` pragma provides system dependent control over
  aspects of tasking implementation, for example, the ability to map
  tasks to specific processors.  For details on the facilities available
  for the version of GNAT that you are using, see the documentation
--- 58,66 ----
    pragma Task_Info (EXPRESSION);
  
  This pragma appears within a task definition (like pragma
! ``Priority``) and applies to the task in which it appears.  The
! argument must be of type ``System.Task_Info.Task_Info_Type``.
! The ``Task_Info`` pragma provides system dependent control over
  aspects of tasking implementation, for example, the ability to map
  tasks to specific processors.  For details on the facilities available
  for the version of GNAT that you are using, see the documentation
*************** package System.Task_Info (:file:`s-tasin
*** 73,81 ****
  ===============================================
  
  This package provides target dependent functionality that is used
! to support the `Task_Info` pragma. The predefined Ada package
! `System.Multiprocessors` and the `CPU` aspect now provide a
! standard replacement for GNAT's `Task_Info` functionality.
  
  .. raw:: latex
  
--- 73,81 ----
  ===============================================
  
  This package provides target dependent functionality that is used
! to support the ``Task_Info`` pragma. The predefined Ada package
! ``System.Multiprocessors`` and the ``CPU`` aspect now provide a
! standard replacement for GNAT's ``Task_Info`` functionality.
  
  .. raw:: latex
  
diff -Nrcpad gcc-7.3.0/gcc/ada/doc/gnat_rm/representation_clauses_and_pragmas.rst gcc-8.1.0/gcc/ada/doc/gnat_rm/representation_clauses_and_pragmas.rst
*** gcc-7.3.0/gcc/ada/doc/gnat_rm/representation_clauses_and_pragmas.rst	Mon Jul  4 12:57:30 2016
--- gcc-8.1.0/gcc/ada/doc/gnat_rm/representation_clauses_and_pragmas.rst	Fri Sep 29 12:53:24 2017
***************
*** 1,3 ****
--- 1,5 ----
+ .. role:: switch(samp)
+ 
  .. _Representation_Clauses_and_Pragmas:
  
  **********************************
*************** values are as follows:
*** 35,51 ****
  * *Elementary Types*.
  
    For elementary types, the alignment is the minimum of the actual size of
!   objects of the type divided by `Storage_Unit`,
    and the maximum alignment supported by the target.
    (This maximum alignment is given by the GNAT-specific attribute
!   `Standard'Maximum_Alignment`; see :ref:`Attribute_Maximum_Alignment`.)
  
    .. index:: Maximum_Alignment attribute
  
!   For example, for type `Long_Float`, the object size is 8 bytes, and the
    default alignment will be 8 on any target that supports alignments
    this large, but on some targets, the maximum alignment may be smaller
!   than 8, in which case objects of type `Long_Float` will be maximally
    aligned.
  
  * *Arrays*.
--- 37,53 ----
  * *Elementary Types*.
  
    For elementary types, the alignment is the minimum of the actual size of
!   objects of the type divided by ``Storage_Unit``,
    and the maximum alignment supported by the target.
    (This maximum alignment is given by the GNAT-specific attribute
!   ``Standard'Maximum_Alignment``; see :ref:`Attribute_Maximum_Alignment`.)
  
    .. index:: Maximum_Alignment attribute
  
!   For example, for type ``Long_Float``, the object size is 8 bytes, and the
    default alignment will be 8 on any target that supports alignments
    this large, but on some targets, the maximum alignment may be smaller
!   than 8, in which case objects of type ``Long_Float`` will be maximally
    aligned.
  
  * *Arrays*.
*************** values are as follows:
*** 62,72 ****
  
  * *Records*.
  
!   For the normal non-packed case, the alignment of a record is equal to
    the maximum alignment of any of its components.  For tagged records, this
!   includes the implicit access type used for the tag.  If a pragma `Pack`
    is used and all components are packable (see separate section on pragma
!   `Pack`), then the resulting alignment is 1, unless the layout of the
    record makes it profitable to increase it.
  
    A special case is when:
--- 64,74 ----
  
  * *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
!   includes the implicit access type used for the tag.  If a pragma ``Pack``
    is used and all components are packable (see separate section on pragma
!   ``Pack``), then the resulting alignment is 1, unless the layout of the
    record makes it profitable to increase it.
  
    A special case is when:
*************** values are as follows:
*** 86,99 ****
         end record;
         for Small'Size use 16;
  
!   then the default alignment of the record type `Small` is 2, not 1. This
    leads to more efficient code when the record is treated as a unit, and also
!   allows the type to specified as `Atomic` on architectures requiring
    strict alignment.
  
  An alignment clause may specify a larger alignment than the default value
  up to some maximum value dependent on the target (obtainable by using the
! attribute reference `Standard'Maximum_Alignment`). It may also specify
  a smaller alignment than the default value for enumeration, integer and
  fixed point types, as well as for record types, for example
  
--- 88,101 ----
         end record;
         for Small'Size use 16;
  
!   then the default alignment of the record type ``Small`` is 2, not 1. This
    leads to more efficient code when the record is treated as a unit, and also
!   allows the type to specified as ``Atomic`` on architectures requiring
    strict alignment.
  
  An alignment clause may specify a larger alignment than the default value
  up to some maximum value dependent on the target (obtainable by using the
! attribute reference ``Standard'Maximum_Alignment``). It may also specify
  a smaller alignment than the default value for enumeration, integer and
  fixed point types, as well as for record types, for example
  
*************** fixed point types, as well as for record
*** 107,113 ****
  
  .. index:: Alignment, default
  
! The default alignment for the type `V` is 4, as a result of the
  Integer field in the record, but it is permissible, as shown, to
  override the default alignment of the record with a smaller value.
  
--- 109,115 ----
  
  .. index:: Alignment, default
  
! The default alignment for the type ``V`` is 4, as a result of the
  Integer field in the record, but it is permissible, as shown, to
  override the default alignment of the record with a smaller value.
  
*************** to control this choice. Consider:
*** 125,139 ****
       subtype RS is R range 1 .. 1000;
  
  The alignment clause specifies an alignment of 1 for the first named subtype
! `R` but this does not necessarily apply to `RS`. When writing
  portable Ada code, you should avoid writing code that explicitly or
  implicitly relies on the alignment of such subtypes.
  
  For the GNAT compiler, if an explicit alignment clause is given, this
  value is also used for any subsequent subtypes. So for GNAT, in the
! above example, you can count on the alignment of `RS` being 1. But this
  assumption is non-portable, and other compilers may choose different
! alignments for the subtype `RS`.
  
  .. _Size_Clauses:
  
--- 127,141 ----
       subtype RS is R range 1 .. 1000;
  
  The alignment clause specifies an alignment of 1 for the first named subtype
! ``R`` but this does not necessarily apply to ``RS``. When writing
  portable Ada code, you should avoid writing code that explicitly or
  implicitly relies on the alignment of such subtypes.
  
  For the GNAT compiler, if an explicit alignment clause is given, this
  value is also used for any subsequent subtypes. So for GNAT, in the
! above example, you can count on the alignment of ``RS`` being 1. But this
  assumption is non-portable, and other compilers may choose different
! alignments for the subtype ``RS``.
  
  .. _Size_Clauses:
  
*************** Size Clauses
*** 142,154 ****
  
  .. index:: Size Clause
  
! The default size for a type `T` is obtainable through the
! language-defined attribute `T'Size` and also through the
! equivalent GNAT-defined attribute `T'Value_Size`.
! For objects of type `T`, GNAT will generally increase the type size
  so that the object size (obtainable through the GNAT-defined attribute
! `T'Object_Size`)
! is a multiple of `T'Alignment * Storage_Unit`.
  
  For example:
  
--- 144,156 ----
  
  .. index:: Size Clause
  
! The default size for a type ``T`` is obtainable through the
! language-defined attribute ``T'Size`` and also through the
! equivalent GNAT-defined attribute ``T'Value_Size``.
! For objects of type ``T``, GNAT will generally increase the type size
  so that the object size (obtainable through the GNAT-defined attribute
! ``T'Object_Size``)
! is a multiple of ``T'Alignment * Storage_Unit``.
  
  For example:
  
*************** For example:
*** 161,187 ****
          Y2 : boolean;
       end record;
  
! In this example, `Smallint'Size` = `Smallint'Value_Size` = 3,
  as specified by the RM rules,
  but objects of this type will have a size of 8
! (`Smallint'Object_Size` = 8),
  since objects by default occupy an integral number
  of storage units.  On some targets, notably older
  versions of the Digital Alpha, the size of stand
  alone objects of this type may be 32, reflecting
  the inability of the hardware to do byte load/stores.
  
! Similarly, the size of type `Rec` is 40 bits
! (`Rec'Size` = `Rec'Value_Size` = 40), but
  the alignment is 4, so objects of this type will have
  their size increased to 64 bits so that it is a multiple
  of the alignment (in bits).  This decision is
  in accordance with the specific Implementation Advice in RM 13.3(43):
  
!    "A `Size` clause should be supported for an object if the specified
!    `Size` is at least as large as its subtype's `Size`, and corresponds
     to a size in storage elements that is a multiple of the object's
!    `Alignment` (if the `Alignment` is nonzero)."
  
  An explicit size clause may be used to override the default size by
  increasing it.  For example, if we have:
--- 163,189 ----
          Y2 : boolean;
       end record;
  
! In this example, ``Smallint'Size`` = ``Smallint'Value_Size`` = 3,
  as specified by the RM rules,
  but objects of this type will have a size of 8
! (``Smallint'Object_Size`` = 8),
  since objects by default occupy an integral number
  of storage units.  On some targets, notably older
  versions of the Digital Alpha, the size of stand
  alone objects of this type may be 32, reflecting
  the inability of the hardware to do byte load/stores.
  
! Similarly, the size of type ``Rec`` is 40 bits
! (``Rec'Size`` = ``Rec'Value_Size`` = 40), but
  the alignment is 4, so objects of this type will have
  their size increased to 64 bits so that it is a multiple
  of the alignment (in bits).  This decision is
  in accordance with the specific Implementation Advice in RM 13.3(43):
  
!    "A ``Size`` clause should be supported for an object if the specified
!    ``Size`` is at least as large as its subtype's ``Size``, and corresponds
     to a size in storage elements that is a multiple of the object's
!    ``Alignment`` (if the ``Alignment`` is nonzero)."
  
  An explicit size clause may be used to override the default size by
  increasing it.  For example, if we have:
*************** Storage_Size Clauses
*** 217,227 ****
  
  .. index:: Storage_Size Clause
  
! For tasks, the `Storage_Size` clause specifies the amount of space
  to be allocated for the task stack.  This cannot be extended, and if the
! stack is exhausted, then `Storage_Error` will be raised (if stack
! checking is enabled).  Use a `Storage_Size` attribute definition clause,
! or a `Storage_Size` pragma in the task definition to set the
  appropriate required size.  A useful technique is to include in every
  task definition a pragma of the form:
  
--- 219,229 ----
  
  .. index:: Storage_Size Clause
  
! For tasks, the ``Storage_Size`` clause specifies the amount of space
  to be allocated for the task stack.  This cannot be extended, and if the
! stack is exhausted, then ``Storage_Error`` will be raised (if stack
! checking is enabled).  Use a ``Storage_Size`` attribute definition clause,
! or a ``Storage_Size`` pragma in the task definition to set the
  appropriate required size.  A useful technique is to include in every
  task definition a pragma of the form:
  
*************** task definition a pragma of the form:
*** 229,252 ****
  
       pragma Storage_Size (Default_Stack_Size);
  
! Then `Default_Stack_Size` can be defined in a global package, and
  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 `Storage_Size` clause specifies the maximum
  space available for allocation of objects of the type.  If this space is
! exceeded then `Storage_Error` will be raised by an allocation attempt.
  In the case where the access type is declared local to a subprogram, the
! use of a `Storage_Size` clause triggers automatic use of a special
! predefined storage pool (`System.Pool_Size`) that ensures that all
  space for the pool is automatically reclaimed on exit from the scope in
  which the type is declared.
  
  A special case recognized by the compiler is the specification of a
! `Storage_Size` of zero for an access type.  This means that no
  items can be allocated from the pool, and this is recognized at compile
  time, and all the overhead normally associated with maintaining a fixed
  size storage pool is eliminated.  Consider the following example:
--- 231,254 ----
  
       pragma Storage_Size (Default_Stack_Size);
  
! Then ``Default_Stack_Size`` can be defined in a global package, and
  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 ``Storage_Size`` clause specifies the maximum
  space available for allocation of objects of the type.  If this space is
! exceeded then ``Storage_Error`` will be raised by an allocation attempt.
  In the case where the access type is declared local to a subprogram, the
! use of a ``Storage_Size`` clause triggers automatic use of a special
! predefined storage pool (``System.Pool_Size``) that ensures that all
  space for the pool is automatically reclaimed on exit from the scope in
  which the type is declared.
  
  A special case recognized by the compiler is the specification of a
! ``Storage_Size`` of zero for an access type.  This means that no
  items can be allocated from the pool, and this is recognized at compile
  time, and all the overhead normally associated with maintaining a fixed
  size storage pool is eliminated.  Consider the following example:
*************** variant value to V2, therefore 16 bits m
*** 336,342 ****
  in the general case, even fewer bits may be needed at any particular
  point during the program execution.
  
! As can be seen from the output of this program, the `'Size`
  attribute applied to such an object in GNAT gives the actual allocated
  size of the variable, which is the largest size of any of the variants.
  The Ada Reference Manual is not completely clear on what choice should
--- 338,344 ----
  in the general case, even fewer bits may be needed at any particular
  point during the program execution.
  
! As can be seen from the output of this program, the ``'Size``
  attribute applied to such an object in GNAT gives the actual allocated
  size of the variable, which is the largest size of any of the variants.
  The Ada Reference Manual is not completely clear on what choice should
*************** The output from this program is
*** 387,395 ****
    16
    16
  
! Here we see that while the `'Size` attribute always returns
  the maximum size, regardless of the current variant value, the
! `Size` function does indeed return the size of the current
  variant value.
  
  
--- 389,397 ----
    16
    16
  
! Here we see that while the ``'Size`` attribute always returns
  the maximum size, regardless of the current variant value, the
! ``Size`` function does indeed return the size of the current
  variant value.
  
  
*************** For example, suppose we have the declara
*** 415,421 ****
       type Small is range -7 .. -4;
       for Small'Size use 2;
  
! Although the default size of type `Small` is 4, the `Size`
  clause is accepted by GNAT and results in the following representation
  scheme:
  
--- 417,423 ----
       type Small is range -7 .. -4;
       for Small'Size use 2;
  
! Although the default size of type ``Small`` is 4, the ``Size``
  clause is accepted by GNAT and results in the following representation
  scheme:
  
*************** scheme:
*** 426,432 ****
      -5 is represented as 2#10#
      -4 is represented as 2#11#
  
! Biased representation is only used if the specified `Size` clause
  cannot be accepted in any other manner.  These reduced sizes that force
  biased representation can be used for all discrete types except for
  enumeration types for which a representation clause is given.
--- 428,434 ----
      -5 is represented as 2#10#
      -4 is represented as 2#11#
  
! Biased representation is only used if the specified ``Size`` clause
  cannot be accepted in any other manner.  These reduced sizes that force
  biased representation can be used for all discrete types except for
  enumeration types for which a representation clause is given.
*************** Value_Size and Object_Size Clauses
*** 441,453 ****
  .. index:: Object_Size
  .. index:: Size, of objects
  
! In Ada 95 and Ada 2005, `T'Size` for a type `T` is the minimum
! number of bits required to hold values of type `T`.
  Although this interpretation was allowed in Ada 83, it was not required,
  and this requirement in practice can cause some significant difficulties.
! For example, in most Ada 83 compilers, `Natural'Size` was 32.
  However, in Ada 95 and Ada 2005,
! `Natural'Size` is
  typically 31.  This means that code may change in behavior when moving
  from Ada 83 to Ada 95 or Ada 2005.  For example, consider:
  
--- 443,455 ----
  .. index:: Object_Size
  .. index:: Size, of objects
  
! In Ada 95 and Ada 2005, ``T'Size`` for a type ``T`` is the minimum
! number of bits required to hold values of type ``T``.
  Although this interpretation was allowed in Ada 83, it was not required,
  and this requirement in practice can cause some significant difficulties.
! For example, in most Ada 83 compilers, ``Natural'Size`` was 32.
  However, in Ada 95 and Ada 2005,
! ``Natural'Size`` is
  typically 31.  This means that code may change in behavior when moving
  from Ada 83 to Ada 95 or Ada 2005.  For example, consider:
  
*************** from Ada 83 to Ada 95 or Ada 2005.  For
*** 463,561 ****
          at 0  range Natural'Size .. 2 * Natural'Size - 1;
       end record;
  
! In the above code, since the typical size of `Natural` objects
! is 32 bits and `Natural'Size` is 31, the above code can cause
  unexpected inefficient packing in Ada 95 and Ada 2005, and in general
  there are cases where the fact that the object size can exceed the
  size of the type causes surprises.
  
  To help get around this problem GNAT provides two implementation
! defined attributes, `Value_Size` and `Object_Size`.  When
  applied to a type, these attributes yield the size of the type
  (corresponding to the RM defined size attribute), and the size of
  objects of the type respectively.
  
! The `Object_Size` is used for determining the default size of
  objects and components.  This size value can be referred to using the
! `Object_Size` attribute.  The phrase 'is used' here means that it is
  the basis of the determination of the size.  The backend is free to
  pad this up if necessary for efficiency, e.g., an 8-bit stand-alone
  character might be stored in 32 bits on a machine with no efficient
  byte access instructions such as the Alpha.
  
! The default rules for the value of `Object_Size` for
  discrete types are as follows:
  
  *
!   The `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.
  
  *
!   The `Object_Size` of a subtype is the same as the
!   `Object_Size` of
    the type from which it is obtained.
  
  *
!   The `Object_Size` of a derived base type is copied from the parent
!   base type, and the `Object_Size` of a derived first subtype is copied
    from the parent first subtype.
  
! The `Value_Size` attribute
  is the (minimum) number of bits required to store a value
  of the type.
  This value is used to determine how tightly to pack
  records or arrays with components of this type, and also affects
  the semantics of unchecked conversion (unchecked conversions where
! the `Value_Size` values differ generate a warning, and are potentially
  target dependent).
  
! The default rules for the value of `Value_Size` are as follows:
  
  *
!   The `Value_Size` for a base subtype is the minimum number of bits
    required to store all values of the type (including the sign bit
    only if negative values are possible).
  
  *
    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".)
  
  *
!   All other subtypes have a `Value_Size` corresponding to the minimum
    number of bits required to store all values of the subtype.  For
    dynamic bounds, it is assumed that the value can range down or up
    to the corresponding bound of the ancestor
  
! The RM defined attribute `Size` corresponds to the
! `Value_Size` attribute.
  
! The `Size` attribute may be defined for a first-named subtype.  This sets
! the `Value_Size` of
  the first-named subtype to the given value, and the
! `Object_Size` of this first-named subtype to the given value padded up
  to an appropriate boundary.  It is a consequence of the default rules
! above that this `Object_Size` will apply to all further subtypes.  On the
! other hand, `Value_Size` is affected only for the first subtype, any
  dynamic subtypes obtained from it directly, and any statically matching
! subtypes.  The `Value_Size` of any other static subtypes is not affected.
  
! `Value_Size` and
! `Object_Size` may be explicitly set for any subtype using
  an attribute definition clause.  Note that the use of these attributes
  can cause the RM 13.1(14) rule to be violated.  If two access types
! reference aliased objects whose subtypes have differing `Object_Size`
  values as a result of explicit attribute definition clauses, then it
  is illegal to convert from one access subtype to the other. For a more
  complete description of this additional legality rule, see the
! description of the `Object_Size` attribute.
  
  To get a feel for the difference, consider the following examples (note
! that in each case the base is `Short_Short_Integer` with a size of 8):
  
  +---------------------------------------------+-------------+-------------+
  |Type or subtype declaration                  | Object_Size |   Value_Size|
--- 465,563 ----
          at 0  range Natural'Size .. 2 * Natural'Size - 1;
       end record;
  
! In the above code, since the typical size of ``Natural`` objects
! is 32 bits and ``Natural'Size`` is 31, the above code can cause
  unexpected inefficient packing in Ada 95 and Ada 2005, and in general
  there are cases where the fact that the object size can exceed the
  size of the type causes surprises.
  
  To help get around this problem GNAT provides two implementation
! defined attributes, ``Value_Size`` and ``Object_Size``.  When
  applied to a type, these attributes yield the size of the type
  (corresponding to the RM defined size attribute), and the size of
  objects of the type respectively.
  
! The ``Object_Size`` is used for determining the default size of
  objects and components.  This size value can be referred to using the
! ``Object_Size`` attribute.  The phrase 'is used' here means that it is
  the basis of the determination of the size.  The backend is free to
  pad this up if necessary for efficiency, e.g., an 8-bit stand-alone
  character might be stored in 32 bits on a machine with no efficient
  byte access instructions such as the Alpha.
  
! The default rules for the value of ``Object_Size`` for
  discrete types are as follows:
  
  *
!   The ``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.
  
  *
!   The ``Object_Size`` of a subtype is the same as the
!   ``Object_Size`` of
    the type from which it is obtained.
  
  *
!   The ``Object_Size`` of a derived base type is copied from the parent
!   base type, and the ``Object_Size`` of a derived first subtype is copied
    from the parent first subtype.
  
! The ``Value_Size`` attribute
  is the (minimum) number of bits required to store a value
  of the type.
  This value is used to determine how tightly to pack
  records or arrays with components of this type, and also affects
  the semantics of unchecked conversion (unchecked conversions where
! the ``Value_Size`` values differ generate a warning, and are potentially
  target dependent).
  
! The default rules for the value of ``Value_Size`` are as follows:
  
  *
!   The ``Value_Size`` for a base subtype is the minimum number of bits
    required to store all values of the type (including the sign bit
    only if negative values are possible).
  
  *
    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".)
  
  *
!   All other subtypes have a ``Value_Size`` corresponding to the minimum
    number of bits required to store all values of the subtype.  For
    dynamic bounds, it is assumed that the value can range down or up
    to the corresponding bound of the ancestor
  
! The RM defined attribute ``Size`` corresponds to the
! ``Value_Size`` attribute.
  
! The ``Size`` attribute may be defined for a first-named subtype.  This sets
! the ``Value_Size`` of
  the first-named subtype to the given value, and the
! ``Object_Size`` of this first-named subtype to the given value padded up
  to an appropriate boundary.  It is a consequence of the default rules
! above that this ``Object_Size`` will apply to all further subtypes.  On the
! other hand, ``Value_Size`` is affected only for the first subtype, any
  dynamic subtypes obtained from it directly, and any statically matching
! subtypes.  The ``Value_Size`` of any other static subtypes is not affected.
  
! ``Value_Size`` and
! ``Object_Size`` may be explicitly set for any subtype using
  an attribute definition clause.  Note that the use of these attributes
  can cause the RM 13.1(14) rule to be violated.  If two access types
! reference aliased objects whose subtypes have differing ``Object_Size``
  values as a result of explicit attribute definition clauses, then it
  is illegal to convert from one access subtype to the other. For a more
  complete description of this additional legality rule, see the
! description of the ``Object_Size`` attribute.
  
  To get a feel for the difference, consider the following examples (note
! that in each case the base is ``Short_Short_Integer`` with a size of 8):
  
  +---------------------------------------------+-------------+-------------+
  |Type or subtype declaration                  | Object_Size |   Value_Size|
*************** case. What GNAT does is to allocate suff
*** 582,603 ****
  possible dynamic values for the bounds at run-time.
  
  So far, so good, but GNAT has to obey the RM rules, so the question is
! under what conditions must the RM `Size` be used.
  The following is a list
! of the occasions on which the RM `Size` must be used:
  
  *
    Component size for packed arrays or records
  
  *
!   Value of the attribute `Size` for a type
  
  *
    Warning about sizes not matching for unchecked conversion
  
! For record types, the `Object_Size` is always a multiple of the
  alignment of the type (this is true for all types). In some cases the
! `Value_Size` can be smaller. Consider:
  
  
  .. code-block:: ada
--- 584,605 ----
  possible dynamic values for the bounds at run-time.
  
  So far, so good, but GNAT has to obey the RM rules, so the question is
! under what conditions must the RM ``Size`` be used.
  The following is a list
! of the occasions on which the RM ``Size`` must be used:
  
  *
    Component size for packed arrays or records
  
  *
!   Value of the attribute ``Size`` for a type
  
  *
    Warning about sizes not matching for unchecked conversion
  
! For record types, the ``Object_Size`` is always a multiple of the
  alignment of the type (this is true for all types). In some cases the
! ``Value_Size`` can be smaller. Consider:
  
  
  .. code-block:: ada
*************** alignment of the type (this is true for
*** 610,627 ****
  
  On a typical 32-bit architecture, the X component will be four bytes, and
  require four-byte alignment, and the Y component will be one byte. In this
! case `R'Value_Size` will be 40 (bits) since this is the minimum size
  required to store a value of this type, and for example, it is permissible
  to have a component of type R in an outer array whose component size is
! specified to be 48 bits. However, `R'Object_Size` will be 64 (bits),
  since it must be rounded up so that this value is a multiple of the
  alignment (4 bytes = 32 bits).
  
! For all other types, the `Object_Size`
! and `Value_Size` are the same (and equivalent to the RM attribute `Size`).
! Only `Size` may be specified for such types.
  
! Note that `Value_Size` can be used to force biased representation
  for a particular subtype. Consider this example:
  
  
--- 612,629 ----
  
  On a typical 32-bit architecture, the X component will be four bytes, and
  require four-byte alignment, and the Y component will be one byte. In this
! case ``R'Value_Size`` will be 40 (bits) since this is the minimum size
  required to store a value of this type, and for example, it is permissible
  to have a component of type R in an outer array whose component size is
! specified to be 48 bits. However, ``R'Object_Size`` will be 64 (bits),
  since it must be rounded up so that this value is a multiple of the
  alignment (4 bytes = 32 bits).
  
! For all other types, the ``Object_Size``
! and ``Value_Size`` are the same (and equivalent to the RM attribute ``Size``).
! Only ``Size`` may be specified for such types.
  
! Note that ``Value_Size`` can be used to force biased representation
  for a particular subtype. Consider this example:
  
  
*************** for a particular subtype. Consider this
*** 632,643 ****
       subtype REF is R range E .. F;
  
  
! By default, `RAB`
  has a size of 1 (sufficient to accommodate the representation
! of `A` and `B`, 0 and 1), and `REF`
  has a size of 3 (sufficient to accommodate the representation
! of `E` and `F`, 4 and 5). But if we add the
! following `Value_Size` attribute definition clause:
  
  
  .. code-block:: ada
--- 634,645 ----
       subtype REF is R range E .. F;
  
  
! By default, ``RAB``
  has a size of 1 (sufficient to accommodate the representation
! of ``A`` and ``B``, 0 and 1), and ``REF``
  has a size of 3 (sufficient to accommodate the representation
! of ``E`` and ``F``, 4 and 5). But if we add the
! following ``Value_Size`` attribute definition clause:
  
  
  .. code-block:: ada
*************** following `Value_Size` attribute definit
*** 645,655 ****
       for REF'Value_Size use 1;
  
  
! then biased representation is forced for `REF`,
! and 0 will represent `E` and 1 will represent `F`.
! A warning is issued when a `Value_Size` attribute
  definition clause forces biased representation. This
! warning can be turned off using `-gnatw.B`.
  
  .. _Component_Size_Clauses:
  
--- 647,657 ----
       for REF'Value_Size use 1;
  
  
! then biased representation is forced for ``REF``,
! and 0 will represent ``E`` and 1 will represent ``F``.
! A warning is issued when a ``Value_Size`` attribute
  definition clause forces biased representation. This
! warning can be turned off using :switch:`-gnatw.B`.
  
  .. _Component_Size_Clauses:
  
*************** Bit_Order Clauses
*** 713,719 ****
  
  .. index:: ordering, of bits
  
! For record subtypes, GNAT permits the specification of the `Bit_Order`
  attribute.  The specification may either correspond to the default bit
  order for the target, in which case the specification has no effect and
  places no additional restrictions, or it may be for the non-standard
--- 715,721 ----
  
  .. index:: ordering, of bits
  
! For record subtypes, GNAT permits the specification of the ``Bit_Order``
  attribute.  The specification may either correspond to the default bit
  order for the target, in which case the specification has no effect and
  places no additional restrictions, or it may be for the non-standard
*************** restrictions placed on component clauses
*** 728,734 ****
  * Components fitting within a single storage unit.
  
    These are unrestricted, and the effect is merely to renumber bits.  For
!   example if we are on a little-endian machine with `Low_Order_First`
    being the default, then the following two declarations have exactly
    the same effect:
  
--- 730,736 ----
  * Components fitting within a single storage unit.
  
    These are unrestricted, and the effect is merely to renumber bits.  For
!   example if we are on a little-endian machine with ``Low_Order_First``
    being the default, then the following two declarations have exactly
    the same effect:
  
*************** restrictions placed on component clauses
*** 759,772 ****
  
  
    The useful application here is to write the second declaration with the
!   `Bit_Order` attribute definition clause, and know that it will be treated
    the same, regardless of whether the target is little-endian or big-endian.
  
  * Components occupying an integral number of bytes.
  
    These are components that exactly fit in two or more bytes.  Such component
    declarations are allowed, but have no effect, since it is important to realize
!   that the `Bit_Order` specification does not affect the ordering of bytes.
    In particular, the following attempt at getting an endian-independent integer
    does not work:
  
--- 761,774 ----
  
  
    The useful application here is to write the second declaration with the
!   ``Bit_Order`` attribute definition clause, and know that it will be treated
    the same, regardless of whether the target is little-endian or big-endian.
  
  * Components occupying an integral number of bytes.
  
    These are components that exactly fit in two or more bytes.  Such component
    declarations are allowed, but have no effect, since it is important to realize
!   that the ``Bit_Order`` specification does not affect the ordering of bytes.
    In particular, the following attempt at getting an endian-independent integer
    does not work:
  
*************** restrictions placed on component clauses
*** 788,794 ****
    little-endian machine, and a big-endian integer on a big-endian machine.
    If byte flipping is required for interoperability between big- and
    little-endian machines, this must be explicitly programmed.  This capability
!   is not provided by `Bit_Order`.
  
  * Components that are positioned across byte boundaries.
  
--- 790,796 ----
    little-endian machine, and a big-endian integer on a big-endian machine.
    If byte flipping is required for interoperability between big- and
    little-endian machines, this must be explicitly programmed.  This capability
!   is not provided by ``Bit_Order``.
  
  * Components that are positioned across byte boundaries.
  
*************** restrictions placed on component clauses
*** 802,808 ****
  Since the misconception that Bit_Order automatically deals with all
  endian-related incompatibilities is a common one, the specification of
  a component field that is an integral number of bytes will always
! generate a warning.  This warning may be suppressed using `pragma Warnings (Off)`
  if desired.  The following section contains additional
  details regarding the issue of byte ordering.
  
--- 804,810 ----
  Since the misconception that Bit_Order automatically deals with all
  endian-related incompatibilities is a common one, the specification of
  a component field that is an integral number of bytes will always
! generate a warning.  This warning may be suppressed using ``pragma Warnings (Off)``
  if desired.  The following section contains additional
  details regarding the issue of byte ordering.
  
*************** Effect of Bit_Order on Byte Ordering
*** 815,825 ****
  
  .. index:: ordering, of bytes
  
! In this section we will review the effect of the `Bit_Order` attribute
  definition clause on byte ordering.  Briefly, it has no effect at all, but
  a detailed example will be helpful.  Before giving this
  example, let us review the precise
! definition of the effect of defining `Bit_Order`.  The effect of a
  non-standard bit order is described in section 13.5.3 of the Ada
  Reference Manual:
  
--- 817,827 ----
  
  .. index:: ordering, of bytes
  
! In this section we will review the effect of the ``Bit_Order`` attribute
  definition clause on byte ordering.  Briefly, it has no effect at all, but
  a detailed example will be helpful.  Before giving this
  example, let us review the precise
! definition of the effect of defining ``Bit_Order``.  The effect of a
  non-standard bit order is described in section 13.5.3 of the Ada
  Reference Manual:
  
*************** this context, we visit section 13.5.1 of
*** 836,842 ****
     less than Storage_Unit."
  
  The critical point here is that storage places are taken from
! the values after normalization, not before.  So the `Bit_Order`
  interpretation applies to normalized values.  The interpretation
  is described in the later part of the 13.5.3 paragraph:
  
--- 838,844 ----
     less than Storage_Unit."
  
  The critical point here is that storage places are taken from
! the values after normalization, not before.  So the ``Bit_Order``
  interpretation applies to normalized values.  The interpretation
  is described in the later part of the 13.5.3 paragraph:
  
*************** the byte is backwards, so we have to rew
*** 936,942 ****
  It is a nuisance to have to rewrite the clause, especially if
  the code has to be maintained on both machines.  However,
  this is a case that we can handle with the
! `Bit_Order` attribute if it is implemented.
  Note that the implementation is not required on byte addressed
  machines, but it is indeed implemented in GNAT.
  This means that we can simply use the
--- 938,944 ----
  It is a nuisance to have to rewrite the clause, especially if
  the code has to be maintained on both machines.  However,
  this is a case that we can handle with the
! ``Bit_Order`` attribute if it is implemented.
  Note that the implementation is not required on byte addressed
  machines, but it is indeed implemented in GNAT.
  This means that we can simply use the
*************** independent of whether the code is compi
*** 953,959 ****
  machine.
  
  The important point to understand is that byte ordering is not affected.
! A `Bit_Order` attribute definition never affects which byte a field
  ends up in, only where it ends up in that byte.
  To make this clear, let us rewrite the record rep clause of the previous
  example as:
--- 955,961 ----
  machine.
  
  The important point to understand is that byte ordering is not affected.
! A ``Bit_Order`` attribute definition never affects which byte a field
  ends up in, only where it ends up in that byte.
  To make this clear, let us rewrite the record rep clause of the previous
  example as:
*************** This is exactly equivalent to saying (a
*** 1008,1020 ****
       end record;
  
  
! Why are they equivalent? Well take a specific field, the `Slave_V2`
  field.  The storage place attributes are obtained by normalizing the
! values given so that the `First_Bit` value is less than 8.  After
  normalizing the values (0,10,10) we get (1,2,2) which is exactly what
  we specified in the other case.
  
! Now one might expect that the `Bit_Order` attribute might affect
  bit numbering within the entire record component (two bytes in this
  case, thus affecting which byte fields end up in), but that is not
  the way this feature is defined, it only affects numbering of bits,
--- 1010,1022 ----
       end record;
  
  
! Why are they equivalent? Well take a specific field, the ``Slave_V2``
  field.  The storage place attributes are obtained by normalizing the
! values given so that the ``First_Bit`` value is less than 8.  After
  normalizing the values (0,10,10) we get (1,2,2) which is exactly what
  we specified in the other case.
  
! Now one might expect that the ``Bit_Order`` attribute might affect
  bit numbering within the entire record component (two bytes in this
  case, thus affecting which byte fields end up in), but that is not
  the way this feature is defined, it only affects numbering of bits,
*************** not which byte they end up in.
*** 1022,1028 ****
  
  Consequently it never makes sense to specify a starting bit number
  greater than 7 (for a byte addressable field) if an attribute
! definition for `Bit_Order` has been given, and indeed it
  may be actively confusing to specify such a value, so the compiler
  generates a warning for such usage.
  
--- 1024,1030 ----
  
  Consequently it never makes sense to specify a starting bit number
  greater than 7 (for a byte addressable field) if an attribute
! definition for ``Bit_Order`` has been given, and indeed it
  may be actively confusing to specify such a value, so the compiler
  generates a warning for such usage.
  
*************** some machines we might write:
*** 1060,1066 ****
       end record;
  
  Now to switch between machines, all that is necessary is
! to set the boolean constant `Master_Byte_First` in
  an appropriate manner.
  
  .. _Pragma_Pack_for_Arrays:
--- 1062,1068 ----
       end record;
  
  Now to switch between machines, all that is necessary is
! to set the boolean constant ``Master_Byte_First`` in
  an appropriate manner.
  
  .. _Pragma_Pack_for_Arrays:
*************** Pragma Pack for Arrays
*** 1070,1076 ****
  
  .. index:: Pragma Pack (for arrays)
  
! Pragma `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:
  
--- 1072,1078 ----
  
  .. index:: Pragma Pack (for arrays)
  
! Pragma ``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:
  
*************** be one of the following cases:
*** 1081,1087 ****
  * Any small simple record type with a static size.
  
  For all these cases, if the component subtype size is in the range
! 1 through 64, then the effect of the pragma `Pack` is exactly as though a
  component size were specified giving the component subtype size.
  
  All other types are non-packable, they occupy an integral number of storage
--- 1083,1089 ----
  * Any small simple record type with a static size.
  
  For all these cases, if the component subtype size is in the range
! 1 through 64, then the effect of the pragma ``Pack`` is exactly as though a
  component size were specified giving the component subtype size.
  
  All other types are non-packable, they occupy an integral number of storage
*************** For example if we have:
*** 1096,1113 ****
       type ar is array (1 .. 8) of r;
       pragma Pack (ar);
  
! Then the component size of `ar` will be set to 5 (i.e., to `r'size`,
! and the size of the array `ar` will be exactly 40 bits).
  
  Note that in some cases this rather fierce approach to packing can produce
  unexpected effects.  For example, in Ada 95 and Ada 2005,
! subtype `Natural` typically has a size of 31, meaning that if you
! pack an array of `Natural`, you get 31-bit
  close packing, which saves a few bits, but results in far less efficient
  access.  Since many other Ada compilers will ignore such a packing request,
! GNAT will generate a warning on some uses of pragma `Pack` that it guesses
  might not be what is intended.  You can easily remove this warning by
! using an explicit `Component_Size` setting instead, which never generates
  a warning, since the intention of the programmer is clear in this case.
  
  GNAT treats packed arrays in one of two ways.  If the size of the array is
--- 1098,1115 ----
       type ar is array (1 .. 8) of r;
       pragma Pack (ar);
  
! Then the component size of ``ar`` will be set to 5 (i.e., to ``r'size``,
! and the size of the array ``ar`` will be exactly 40 bits).
  
  Note that in some cases this rather fierce approach to packing can produce
  unexpected effects.  For example, in Ada 95 and Ada 2005,
! subtype ``Natural`` typically has a size of 31, meaning that if you
! pack an array of ``Natural``, you get 31-bit
  close packing, which saves a few bits, but results in far less efficient
  access.  Since many other Ada compilers will ignore such a packing request,
! GNAT will generate a warning on some uses of pragma ``Pack`` that it guesses
  might not be what is intended.  You can easily remove this warning by
! using an explicit ``Component_Size`` setting instead, which never generates
  a warning, since the intention of the programmer is clear in this case.
  
  GNAT treats packed arrays in one of two ways.  If the size of the array is
*************** rejecting the size clause and noting tha
*** 1147,1153 ****
  
  One special case that is worth noting occurs when the base type of the
  component size is 8/16/32 and the subtype is one bit less. Notably this
! occurs with subtype `Natural`. Consider:
  
  .. code-block:: ada
  
--- 1149,1155 ----
  
  One special case that is worth noting occurs when the base type of the
  component size is 8/16/32 and the subtype is one bit less. Notably this
! occurs with subtype ``Natural``. Consider:
  
  .. code-block:: ada
  
*************** occurs with subtype `Natural`. Consider:
*** 1155,1164 ****
       pragma Pack (Arr);
  
  In all commonly used Ada 83 compilers, this pragma Pack would be ignored,
! since typically `Natural'Size` is 32 in Ada 83, and in any case most
  Ada 83 compilers did not attempt 31 bit packing.
  
! In Ada 95 and Ada 2005, `Natural'Size` is required to be 31. Furthermore,
  GNAT really does pack 31-bit subtype to 31 bits. This may result in a
  substantial unintended performance penalty when porting legacy Ada 83 code.
  To help prevent this, GNAT generates a warning in such cases. If you really
--- 1157,1166 ----
       pragma Pack (Arr);
  
  In all commonly used Ada 83 compilers, this pragma Pack would be ignored,
! since typically ``Natural'Size`` is 32 in Ada 83, and in any case most
  Ada 83 compilers did not attempt 31 bit packing.
  
! In Ada 95 and Ada 2005, ``Natural'Size`` is required to be 31. Furthermore,
  GNAT really does pack 31-bit subtype to 31 bits. This may result in a
  substantial unintended performance penalty when porting legacy Ada 83 code.
  To help prevent this, GNAT generates a warning in such cases. If you really
*************** Pragma Pack for Records
*** 1180,1186 ****
  
  .. index:: Pragma Pack (for records)
  
! Pragma `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.
--- 1182,1188 ----
  
  .. index:: Pragma Pack (for records)
  
! Pragma ``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 co
*** 1194,1206 ****
  
  * Small simple records, where the size is statically known, are also packable.
  
! For all these cases, if the 'Size value is in the range 1 through 64, the
  components occupy the exact number of bits corresponding to this value
  and are packed with no padding bits, i.e. they can start on an arbitrary
  bit boundary.
  
  All other types are non-packable, they occupy an integral number of storage
! units and the only effect of pragma Pack is to remove alignment gaps.
  
  For example, consider the record
  
--- 1196,1208 ----
  
  * Small simple records, where the size is statically known, are also packable.
  
! For all these cases, if the ``'Size`` value is in the range 1 through 64, the
  components occupy the exact number of bits corresponding to this value
  and are packed with no padding bits, i.e. they can start on an arbitrary
  bit boundary.
  
  All other types are non-packable, they occupy an integral number of storage
! units and the only effect of pragma ``Pack`` is to remove alignment gaps.
  
  For example, consider the record
  
*************** For example, consider the record
*** 1224,1230 ****
       end record;
       pragma Pack (X2);
  
! The representation for the record X2 is as follows:
  
  .. code-block:: ada
  
--- 1226,1232 ----
       end record;
       pragma Pack (X2);
  
! The representation for the record ``X2`` is as follows:
  
  .. code-block:: ada
  
*************** The representation for the record X2 is
*** 1238,1254 ****
       L6 at 18 range  0 .. 71;
    end record;
  
! Studying this example, we see that the packable fields `L1`
! and `L2` are
  of length equal to their sizes, and placed at specific bit boundaries (and
  not byte boundaries) to
! eliminate padding.  But `L3` is of a non-packable float type (because
  it is aliased), so it is on the next appropriate alignment boundary.
  
! The next two fields are fully packable, so `L4` and `L5` are
! minimally packed with no gaps.  However, type `Rb2` is a packed
  array that is longer than 64 bits, so it is itself non-packable.  Thus
! the `L6` field is aligned to the next byte boundary, and takes an
  integral number of bytes, i.e., 72 bits.
  
  .. _Record_Representation_Clauses:
--- 1240,1256 ----
       L6 at 18 range  0 .. 71;
    end record;
  
! Studying this example, we see that the packable fields ``L1``
! and ``L2`` are
  of length equal to their sizes, and placed at specific bit boundaries (and
  not byte boundaries) to
! eliminate padding.  But ``L3`` is of a non-packable float type (because
  it is aliased), so it is on the next appropriate alignment boundary.
  
! The next two fields are fully packable, so ``L4`` and ``L5`` are
! minimally packed with no gaps.  However, type ``Rb2`` is a packed
  array that is longer than 64 bits, so it is itself non-packable.  Thus
! the ``L6`` field is aligned to the next byte boundary, and takes an
  integral number of bytes, i.e., 72 bits.
  
  .. _Record_Representation_Clauses:
*************** of the component.
*** 1266,1272 ****
  .. index:: Component Clause
  
  For all components of an elementary type, the only restriction on component
! clauses is that the size must be at least the 'Size value of the type
  (actually the Value_Size).  There are no restrictions due to alignment,
  and such components may freely cross storage boundaries.
  
--- 1268,1274 ----
  .. index:: Component Clause
  
  For all components of an elementary type, the only restriction on component
! clauses is that the size must be at least the ``'Size`` value of the type
  (actually the Value_Size).  There are no restrictions due to alignment,
  and such components may freely cross storage boundaries.
  
*************** thus the same lack of restriction applie
*** 1280,1286 ****
       pragma Pack (R);
       for R'Size use 49;
  
! then a component clause for a component of type R may start on any
  specified bit boundary, and may specify a value of 49 bits or greater.
  
  For packed bit arrays that are longer than 64 bits, there are two
--- 1282,1288 ----
       pragma Pack (R);
       for R'Size use 49;
  
! then a component clause for a component of type ``R`` may start on any
  specified bit boundary, and may specify a value of 49 bits or greater.
  
  For packed bit arrays that are longer than 64 bits, there are two
*************** the start of the record.  No component c
*** 1304,1312 ****
  tag. When a tagged type appears as a component, the tag field must have
  proper alignment
  
! In the case of a record extension T1, of a type T, no component clause applied
! to the type T1 can specify a storage location that would overlap the first
! T'Size bytes of the record.
  
  For all other component types, including non-bit-packed arrays,
  the component can be placed at an arbitrary bit boundary,
--- 1306,1314 ----
  tag. When a tagged type appears as a component, the tag field must have
  proper alignment
  
! In the case of a record extension ``T1``, of a type ``T``, no component clause applied
! to the type ``T1`` can specify a storage location that would overlap the first
! ``T'Size`` bytes of the record.
  
  For all other component types, including non-bit-packed arrays,
  the component can be placed at an arbitrary bit boundary,
*************** so for example, the following is permitt
*** 1329,1341 ****
          R at 0 range 82 .. 161;
       end record;
  
- Note: the above rules apply to recent releases of GNAT 5.
- In GNAT 3, there are more severe restrictions on larger components.
- For composite types, including packed arrays with a size greater than
- 64 bits, component clauses must respect the alignment requirement of the
- type, in particular, always starting on a byte boundary, and the length
- must be a multiple of the storage unit.
- 
  .. _Handling_of_Records_with_Holes:
  
  Handling of Records with Holes
--- 1331,1336 ----
*************** manner.  Consider the declarations:
*** 1454,1463 ****
       type t is array (r) of Character;
  
  The array type t corresponds to a vector with exactly three elements and
! has a default size equal to `3*Character'Size`.  This ensures efficient
  use of space, but means that accesses to elements of the array will incur
  the overhead of converting representation values to the corresponding
! positional values, (i.e., the value delivered by the `Pos` attribute).
  
  
  .. _Address_Clauses:
--- 1449,1458 ----
       type t is array (r) of Character;
  
  The array type t corresponds to a vector with exactly three elements and
! has a default size equal to ``3*Character'Size``.  This ensures efficient
  use of space, but means that accesses to elements of the array will incur
  the overhead of converting representation values to the corresponding
! positional values, (i.e., the value delivered by the ``Pos`` attribute).
  
  
  .. _Address_Clauses:
*************** thus when used as an address clause valu
*** 1557,1563 ****
  Additionally, GNAT treats as static an address clause that is an
  unchecked_conversion of a static integer value.  This simplifies the porting
  of legacy code, and provides a portable equivalent to the GNAT attribute
! `To_Address`.
  
  Another issue with address clauses is the interaction with alignment
  requirements.  When an address clause is given for an object, the address
--- 1552,1558 ----
  Additionally, GNAT treats as static an address clause that is an
  unchecked_conversion of a static integer value.  This simplifies the porting
  of legacy code, and provides a portable equivalent to the GNAT attribute
! ``To_Address``.
  
  Another issue with address clauses is the interaction with alignment
  requirements.  When an address clause is given for an object, the address
*************** Since this source of erroneous behavior
*** 1570,1585 ****
  machines with strict alignment requirements, GNAT
  checks (at compile time if possible, generating a warning, or at execution
  time with a run-time check) that the alignment is appropriate.  If the
! run-time check fails, then `Program_Error` is raised.  This run-time
  check is suppressed if range checks are suppressed, or if the special GNAT
  check Alignment_Check is suppressed, or if
! `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 controlled types or
! composite types containing a controlled component. 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
  
--- 1565,1579 ----
  machines with strict alignment requirements, GNAT
  checks (at compile time if possible, generating a warning, or at execution
  time with a run-time check) that the alignment is appropriate.  If the
! run-time check fails, then ``Program_Error`` is raised.  This run-time
  check is suppressed if range checks are suppressed, or if the special GNAT
  check Alignment_Check is suppressed, or if
! ``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
  
*************** or alternatively, using the form recomme
*** 1662,1674 ****
      for B'Address use Addr;
  
  
! In both of these cases, `A` and `B` become aliased to one another
  via the address clause. This use of address clauses to overlay
  variables, achieving an effect similar to unchecked conversion
  was erroneous in Ada 83, but in Ada 95 and Ada 2005
  the effect is implementation defined. Furthermore, the
  Ada RM specifically recommends that in a situation
! like this, `B` should be subject to the following
  implementation advice (RM 13.3(19)):
  
     "19  If the Address of an object is specified, or it is imported
--- 1656,1668 ----
      for B'Address use Addr;
  
  
! In both of these cases, ``A`` and ``B`` become aliased to one another
  via the address clause. This use of address clauses to overlay
  variables, achieving an effect similar to unchecked conversion
  was erroneous in Ada 83, but in Ada 95 and Ada 2005
  the effect is implementation defined. Furthermore, the
  Ada RM specifically recommends that in a situation
! like this, ``B`` should be subject to the following
  implementation advice (RM 13.3(19)):
  
     "19  If the Address of an object is specified, or it is imported
*************** implementation advice (RM 13.3(19)):
*** 1676,1688 ****
     optimizations based on assumptions of no aliases."
  
  GNAT follows this recommendation, and goes further by also applying
! this recommendation to the overlaid variable (`A` in the above example)
  in this case. This means that the overlay works "as expected", in that
  a modification to one of the variables will affect the value of the other.
  
  More generally, GNAT interprets this recommendation conservatively for
  address clauses: in the cases other than overlays, it considers that the
! object is effectively subject to pragma `Volatile` and implements the
  associated semantics.
  
  Note that when address clause overlays are used in this way, there is an
--- 1670,1682 ----
     optimizations based on assumptions of no aliases."
  
  GNAT follows this recommendation, and goes further by also applying
! this recommendation to the overlaid variable (``A`` in the above example)
  in this case. This means that the overlay works "as expected", in that
  a modification to one of the variables will affect the value of the other.
  
  More generally, GNAT interprets this recommendation conservatively for
  address clauses: in the cases other than overlays, it considers that the
! object is effectively subject to pragma ``Volatile`` and implements the
  associated semantics.
  
  Note that when address clause overlays are used in this way, there is an
*************** issue of unintentional initialization, a
*** 1705,1713 ****
  
    end Overwrite_Record;
  
! Here the default initialization of `Y` will clobber the value
! of `X`, which justifies the warning. The warning notes that
! this effect can be eliminated by adding a `pragma Import`
  which suppresses the initialization:
  
  .. code-block:: ada
--- 1699,1707 ----
  
    end Overwrite_Record;
  
! Here the default initialization of ``Y`` will clobber the value
! of ``X``, which justifies the warning. The warning notes that
! this effect can be eliminated by adding a ``pragma Import``
  which suppresses the initialization:
  
  .. code-block:: ada
*************** which suppresses the initialization:
*** 1724,1735 ****
    end Overwrite_Record;
  
  
! Note that the use of `pragma Initialize_Scalars` may cause variables to
  be initialized when they would not otherwise have been in the absence
  of the use of this pragma. This may cause an overlay to have this
  unintended clobbering effect. The compiler avoids this for scalar
  types, but not for composite objects (where in general the effect
! of `Initialize_Scalars` is part of the initialization routine
  for the composite object:
  
  ::
--- 1718,1729 ----
    end Overwrite_Record;
  
  
! Note that the use of ``pragma Initialize_Scalars`` may cause variables to
  be initialized when they would not otherwise have been in the absence
  of the use of this pragma. This may cause an overlay to have this
  unintended clobbering effect. The compiler avoids this for scalar
  types, but not for composite objects (where in general the effect
! of ``Initialize_Scalars`` is part of the initialization routine
  for the composite object:
  
  ::
*************** for the composite object:
*** 1755,1761 ****
    end Overwrite_Array;
  
  The above program generates the warning as shown, and at execution
! time, prints `X was clobbered`. If the `pragma Import` is
  added as suggested:
  
  .. code-block:: ada
--- 1749,1755 ----
    end Overwrite_Array;
  
  The above program generates the warning as shown, and at execution
! time, prints ``X was clobbered``. If the ``pragma Import`` is
  added as suggested:
  
  .. code-block:: ada
*************** added as suggested:
*** 1777,1783 ****
    end Overwrite_Array;
  
  then the program compiles without the warning and when run will generate
! the output `X was not clobbered`.
  
  
  .. _Use_of_Address_Clauses_for_Memory-Mapped_I/O:
--- 1771,1777 ----
    end Overwrite_Array;
  
  then the program compiles without the warning and when run will generate
! the output ``X was not clobbered``.
  
  
  .. _Use_of_Address_Clauses_for_Memory-Mapped_I/O:
*************** It is best to be explicit in this situat
*** 1835,1842 ****
  components to be atomic if you want the byte store, or explicitly writing
  the full word access sequence if that is what the hardware requires.
  Alternatively, if the full word access sequence is required, GNAT also
! provides the pragma `Volatile_Full_Access` which can be used in lieu of
! pragma `Atomic` and will give the additional guarantee.
  
  
  .. _Effect_of_Convention_on_Representation:
--- 1829,1836 ----
  components to be atomic if you want the byte store, or explicitly writing
  the full word access sequence if that is what the hardware requires.
  Alternatively, if the full word access sequence is required, GNAT also
! provides the pragma ``Volatile_Full_Access`` which can be used in lieu of
! pragma ``Atomic`` and will give the additional guarantee.
  
  
  .. _Effect_of_Convention_on_Representation:
*************** There are four exceptions to this genera
*** 1873,1881 ****
         type Color is (Red, Green, Blue);
  
    8 bits is sufficient to store all values of the type, so by default, objects
!   of type `Color` will be represented using 8 bits.  However, normal C
    convention is to use 32 bits for all enum values in C, since enum values
!   are essentially of type int.  If pragma `Convention C` is specified for an
    Ada enumeration type, then the size is modified as necessary (usually to
    32 bits) to be consistent with the C convention for enum values.
  
--- 1867,1875 ----
         type Color is (Red, Green, Blue);
  
    8 bits is sufficient to store all values of the type, so by default, objects
!   of type ``Color`` will be represented using 8 bits.  However, normal C
    convention is to use 32 bits for all enum values in C, since enum values
!   are essentially of type int.  If pragma ``Convention C`` is specified for an
    Ada enumeration type, then the size is modified as necessary (usually to
    32 bits) to be consistent with the C convention for enum values.
  
*************** There are four exceptions to this genera
*** 1894,1900 ****
    true.  In Ada, the normal convention is that two specific values, typically
    0/1, are used to represent false/true respectively.
  
!   Fortran has a similar convention for `LOGICAL` values (any nonzero
    value represents true).
  
    To accommodate the Fortran and C conventions, if a pragma Convention specifies
--- 1888,1894 ----
    true.  In Ada, the normal convention is that two specific values, typically
    0/1, are used to represent false/true respectively.
  
!   Fortran has a similar convention for ``LOGICAL`` values (any nonzero
    value represents true).
  
    To accommodate the Fortran and C conventions, if a pragma Convention specifies
*************** representation clause or pragma is accep
*** 2007,2014 ****
  of what the compiler actually does.  For example, if a partial record
  representation clause specifies the location of some components and not
  others, then where are the non-specified components placed? Or if pragma
! `Pack` is used on a record, then exactly where are the resulting
! fields placed? The section on pragma `Pack` in this chapter can be
  used to answer the second question, but it is often easier to just see
  what the compiler does.
  
--- 2001,2008 ----
  of what the compiler actually does.  For example, if a partial record
  representation clause specifies the location of some components and not
  others, then where are the non-specified components placed? Or if pragma
! ``Pack`` is used on a record, then exactly where are the resulting
! fields placed? The section on pragma ``Pack`` in this chapter can be
  used to answer the second question, but it is often easier to just see
  what the compiler does.
  
*************** fields present, including the parent fie
*** 2131,2137 ****
  of the parent type of r2, i.e., r1.
  
  The component size and size clauses for types rb1 and rb2 show
! the exact effect of pragma `Pack` on these arrays, and the record
  representation clause for type x2 shows how pragma `Pack` affects
  this record type.
  
--- 2125,2131 ----
  of the parent type of r2, i.e., r1.
  
  The component size and size clauses for types rb1 and rb2 show
! the exact effect of pragma ``Pack`` on these arrays, and the record
  representation clause for type x2 shows how pragma `Pack` affects
  this record type.
  
diff -Nrcpad gcc-7.3.0/gcc/ada/doc/gnat_rm/standard_and_implementation_defined_restrictions.rst gcc-8.1.0/gcc/ada/doc/gnat_rm/standard_and_implementation_defined_restrictions.rst
*** gcc-7.3.0/gcc/ada/doc/gnat_rm/standard_and_implementation_defined_restrictions.rst	Fri Jan 13 11:23:42 2017
--- gcc-8.1.0/gcc/ada/doc/gnat_rm/standard_and_implementation_defined_restrictions.rst	Thu Jan 11 08:52:12 2018
*************** the call.
*** 54,61 ****
  
  .. index:: Max_Entry_Queue_Depth
  
! The restriction `Max_Entry_Queue_Depth` is recognized as a
! synonym for `Max_Entry_Queue_Length`. This is retained for historical
  compatibility purposes (and a warning will be generated for its use if
  warnings on obsolescent features are activated).
  
--- 54,61 ----
  
  .. index:: Max_Entry_Queue_Depth
  
! The restriction ``Max_Entry_Queue_Depth`` is recognized as a
! synonym for ``Max_Entry_Queue_Length``. This is retained for historical
  compatibility purposes (and a warning will be generated for its use if
  warnings on obsolescent features are activated).
  
*************** No_Dispatch
*** 201,207 ****
  .. index:: No_Dispatch
  
  [RM H.4] This restriction ensures at compile time that there are no
! occurrences of `T'Class`, for any (tagged) subtype `T`.
  
  No_Dispatching_Calls
  --------------------
--- 201,207 ----
  .. index:: No_Dispatch
  
  [RM H.4] This restriction ensures at compile time that there are no
! occurrences of ``T'Class``, for any (tagged) subtype ``T``.
  
  No_Dispatching_Calls
  --------------------
*************** in the implementation of class-wide obje
*** 217,223 ****
  membership test is allowed in the presence of this restriction, because its
  implementation requires no dispatching.
  This restriction is comparable to the official Ada restriction
! `No_Dispatch` except that it is a bit less restrictive in that it allows
  all classwide constructs that do not imply dispatching.
  The following example indicates constructs that violate this restriction.
  
--- 217,223 ----
  membership test is allowed in the presence of this restriction, because its
  implementation requires no dispatching.
  This restriction is comparable to the official Ada restriction
! ``No_Dispatch`` except that it is a bit less restrictive in that it allows
  all classwide constructs that do not imply dispatching.
  The following example indicates constructs that violate this restriction.
  
*************** Detach_Handler, and Reference).
*** 274,281 ****
  
  .. index:: No_Dynamic_Interrupts
  
! The restriction `No_Dynamic_Interrupts` is recognized as a
! synonym for `No_Dynamic_Attachment`. This is retained for historical
  compatibility purposes (and a warning will be generated for its use if
  warnings on obsolescent features are activated).
  
--- 274,281 ----
  
  .. index:: No_Dynamic_Interrupts
  
! The restriction ``No_Dynamic_Interrupts`` is recognized as a
! synonym for ``No_Dynamic_Attachment``. This is retained for historical
  compatibility purposes (and a warning will be generated for its use if
  warnings on obsolescent features are activated).
  
*************** performed by the compiler to support the
*** 368,378 ****
  are no longer considered controlled when this restriction is in effect:
  
  *
!   `Ada.Finalization.Controlled`
  *
!   `Ada.Finalization.Limited_Controlled`
  *
!   Derivations from `Controlled` or `Limited_Controlled`
  *
    Class-wide types
  *
--- 368,378 ----
  are no longer considered controlled when this restriction is in effect:
  
  *
!   ``Ada.Finalization.Controlled``
  *
!   ``Ada.Finalization.Limited_Controlled``
  *
!   Derivations from ``Controlled`` or ``Limited_Controlled``
  *
    Class-wide types
  *
*************** No_Implicit_Dynamic_Code
*** 421,428 ****
  [GNAT] This restriction prevents the compiler from building 'trampolines'.
  This is a structure that is built on the stack and contains dynamic
  code to be executed at run time. On some targets, a trampoline is
! built for the following features: `Access`,
! `Unrestricted_Access`, or `Address` of a nested subprogram;
  nested task bodies; primitive operations of nested tagged types.
  Trampolines do not work on machines that prevent execution of stack
  data. For example, on windows systems, enabling DEP (data execution
--- 421,428 ----
  [GNAT] This restriction prevents the compiler from building 'trampolines'.
  This is a structure that is built on the stack and contains dynamic
  code to be executed at run time. On some targets, a trampoline is
! built for the following features: ``Access``,
! ``Unrestricted_Access``, or ``Address`` of a nested subprogram;
  nested task bodies; primitive operations of nested tagged types.
  Trampolines do not work on machines that prevent execution of stack
  data. For example, on windows systems, enabling DEP (data execution
*************** On many targets, trampolines have been l
*** 433,440 ****
  version of system.ads for your target --- if it has
  Always_Compatible_Rep equal to False, then trampolines are largely
  eliminated. In particular, a trampoline is built for the following
! features: `Address` of a nested subprogram;
! `Access` or `Unrestricted_Access` of a nested subprogram,
  but only if pragma Favor_Top_Level applies, or the access type has a
  foreign-language convention; primitive operations of nested tagged
  types.
--- 433,440 ----
  version of system.ads for your target --- if it has
  Always_Compatible_Rep equal to False, then trampolines are largely
  eliminated. In particular, a trampoline is built for the following
! features: ``Address`` of a nested subprogram;
! ``Access`` or ``Unrestricted_Access`` of a nested subprogram,
  but only if pragma Favor_Top_Level applies, or the access type has a
  foreign-language convention; primitive operations of nested tagged
  types.
*************** No_Relative_Delay
*** 559,565 ****
  .. index:: No_Relative_Delay
  
  [RM D.7] This restriction ensures at compile time that there are no delay
! relative statements and prevents expressions such as `delay 1.23;` from
  appearing in source code.
  
  No_Requeue_Statements
--- 559,565 ----
  .. index:: No_Relative_Delay
  
  [RM D.7] This restriction ensures at compile time that there are no delay
! relative statements and prevents expressions such as ``delay 1.23;`` from
  appearing in source code.
  
  No_Requeue_Statements
*************** No_Requeue_Statements
*** 567,579 ****
  .. index:: No_Requeue_Statements
  
  [RM D.7] This restriction ensures at compile time that no requeue statements
! are permitted and prevents keyword `requeue` from being used in source
  code.
  
  .. index:: No_Requeue
  
! The restriction `No_Requeue` is recognized as a
! synonym for `No_Requeue_Statements`. This is retained for historical
  compatibility purposes (and a warning will be generated for its use if
  warnings on oNobsolescent features are activated).
  
--- 567,579 ----
  .. index:: No_Requeue_Statements
  
  [RM D.7] This restriction ensures at compile time that no requeue statements
! are permitted and prevents keyword ``requeue`` from being used in source
  code.
  
  .. index:: No_Requeue
  
! The restriction ``No_Requeue`` is recognized as a
! synonym for ``No_Requeue_Statements``. This is retained for historical
  compatibility purposes (and a warning will be generated for its use if
  warnings on oNobsolescent features are activated).
  
*************** No_Secondary_Stack
*** 584,590 ****
  [GNAT] This restriction ensures at compile time that the generated code
  does not contain any reference to the secondary stack.  The secondary
  stack is used to implement functions returning unconstrained objects
! (arrays or records) on some targets. Suppresses the allocation of 
  secondary stacks for tasks (excluding the environment task) at run time.
  
  No_Select_Statements
--- 584,590 ----
  [GNAT] This restriction ensures at compile time that the generated code
  does not contain any reference to the secondary stack.  The secondary
  stack is used to implement functions returning unconstrained objects
! (arrays or records) on some targets. Suppresses the allocation of
  secondary stacks for tasks (excluding the environment task) at run time.
  
  No_Select_Statements
*************** No_Select_Statements
*** 592,598 ****
  .. index:: No_Select_Statements
  
  [RM D.7] This restriction ensures at compile time no select statements of any
! kind are permitted, that is the keyword `select` may not appear.
  
  No_Specific_Termination_Handlers
  --------------------------------
--- 592,598 ----
  .. index:: No_Select_Statements
  
  [RM D.7] This restriction ensures at compile time no select statements of any
! kind are permitted, that is the keyword ``select`` may not appear.
  
  No_Specific_Termination_Handlers
  --------------------------------
*************** No_Stream_Optimizations
*** 632,639 ****
  .. index:: No_Stream_Optimizations
  
  [GNAT] This restriction affects the performance of stream operations on types
! `String`, `Wide_String` and `Wide_Wide_String`. By default, the
! compiler uses block reads and writes when manipulating `String` objects
  due to their supperior performance. When this restriction is in effect, the
  compiler performs all IO operations on a per-character basis.
  
--- 632,639 ----
  .. index:: No_Stream_Optimizations
  
  [GNAT] This restriction affects the performance of stream operations on types
! ``String``, ``Wide_String`` and ``Wide_Wide_String``. By default, the
! compiler uses block reads and writes when manipulating ``String`` objects
  due to their supperior performance. When this restriction is in effect, the
  compiler performs all IO operations on a per-character basis.
  
*************** No_Streams
*** 644,651 ****
  [GNAT] This restriction ensures at compile/bind time that there are no
  stream objects created and no use of stream attributes.
  This restriction does not forbid dependences on the package
! `Ada.Streams`. So it is permissible to with
! `Ada.Streams` (or another package that does so itself)
  as long as no actual stream objects are created and no
  stream attributes are used.
  
--- 644,651 ----
  [GNAT] This restriction ensures at compile/bind time that there are no
  stream objects created and no use of stream attributes.
  This restriction does not forbid dependences on the package
! ``Ada.Streams``. So it is permissible to with
! ``Ada.Streams`` (or another package that does so itself)
  as long as no actual stream objects are created and no
  stream attributes are used.
  
*************** No_Task_Attributes_Package
*** 676,687 ****
  .. index:: No_Task_Attributes_Package
  
  [GNAT] This restriction ensures at compile time that there are no implicit or
! explicit dependencies on the package `Ada.Task_Attributes`.
  
  .. index:: No_Task_Attributes
  
! The restriction `No_Task_Attributes` is recognized as a synonym
! for `No_Task_Attributes_Package`. This is retained for historical
  compatibility purposes (and a warning will be generated for its use if
  warnings on obsolescent features are activated).
  
--- 676,687 ----
  .. index:: No_Task_Attributes_Package
  
  [GNAT] This restriction ensures at compile time that there are no implicit or
! explicit dependencies on the package ``Ada.Task_Attributes``.
  
  .. index:: No_Task_Attributes
  
! The restriction ``No_Task_Attributes`` is recognized as a synonym
! for ``No_Task_Attributes_Package``. This is retained for historical
  compatibility purposes (and a warning will be generated for its use if
  warnings on obsolescent features are activated).
  
*************** No_Tasking
*** 704,710 ****
  
  [GNAT] This restriction prevents the declaration of tasks or task types
  throughout the partition.  It is similar in effect to the use of
! `Max_Tasks => 0` except that violations are caught at compile time
  and cause an error message to be output either by the compiler or
  binder.
  
--- 704,710 ----
  
  [GNAT] This restriction prevents the declaration of tasks or task types
  throughout the partition.  It is similar in effect to the use of
! ``Max_Tasks => 0`` except that violations are caught at compile time
  and cause an error message to be output either by the compiler or
  binder.
  
*************** Pure_Barriers
*** 755,762 ****
  [GNAT] This restriction ensures at compile time that protected entry
  barriers are restricted to:
  
! * simple variables defined in the private part of the
!   protected type/object,
  * constant declarations,
  * named numbers,
  * enumeration literals,
--- 755,761 ----
  [GNAT] This restriction ensures at compile time that protected entry
  barriers are restricted to:
  
! * components of the protected object (excluding selection from dereferences),
  * constant declarations,
  * named numbers,
  * enumeration literals,
*************** barriers are restricted to:
*** 765,771 ****
  * character literals,
  * implicitly defined comparison operators,
  * uses of the Standard."not" operator,
! * short-circuit operator
  
  This restriction is a relaxation of the Simple_Barriers restriction,
  but still ensures absence of side effects, exceptions, and recursion
--- 764,771 ----
  * character literals,
  * implicitly defined comparison operators,
  * uses of the Standard."not" operator,
! * short-circuit operator,
! * the Count attribute
  
  This restriction is a relaxation of the Simple_Barriers restriction,
  but still ensures absence of side effects, exceptions, and recursion
*************** part of the protected type.  No other fo
*** 782,789 ****
  
  .. index:: Boolean_Entry_Barriers
  
! The restriction `Boolean_Entry_Barriers` is recognized as a
! synonym for `Simple_Barriers`. This is retained for historical
  compatibility purposes (and a warning will be generated for its use if
  warnings on obsolescent features are activated).
  
--- 782,789 ----
  
  .. index:: Boolean_Entry_Barriers
  
! The restriction ``Boolean_Entry_Barriers`` is recognized as a
! synonym for ``Simple_Barriers``. This is retained for historical
  compatibility purposes (and a warning will be generated for its use if
  warnings on obsolescent features are activated).
  
*************** Static_Priorities
*** 793,799 ****
  
  [GNAT] This restriction ensures at compile time that all priority expressions
  are static, and that there are no dependences on the package
! `Ada.Dynamic_Priorities`.
  
  Static_Storage_Size
  -------------------
--- 793,799 ----
  
  [GNAT] This restriction ensures at compile time that all priority expressions
  are static, and that there are no dependences on the package
! ``Ada.Dynamic_Priorities``.
  
  Static_Storage_Size
  -------------------
*************** No_Elaboration_Code
*** 820,829 ****
  
  [GNAT] This restriction ensures at compile time that no elaboration code is
  generated.  Note that this is not the same condition as is enforced
! by pragma `Preelaborate`.  There are cases in which pragma
! `Preelaborate` still permits code to be generated (e.g., code
  to initialize a large array to all zeroes), and there are cases of units
! which do not meet the requirements for pragma `Preelaborate`,
  but for which no elaboration code is generated.  Generally, it is
  the case that preelaborable units will meet the restrictions, with
  the exception of large aggregates initialized with an others_clause,
--- 820,829 ----
  
  [GNAT] This restriction ensures at compile time that no elaboration code is
  generated.  Note that this is not the same condition as is enforced
! by pragma ``Preelaborate``.  There are cases in which pragma
! ``Preelaborate`` still permits code to be generated (e.g., code
  to initialize a large array to all zeroes), and there are cases of units
! which do not meet the requirements for pragma ``Preelaborate``,
  but for which no elaboration code is generated.  Generally, it is
  the case that preelaborable units will meet the restrictions, with
  the exception of large aggregates initialized with an others_clause,
*************** throughout a partition.
*** 834,840 ****
  
  In the case of aggregates with others, if the aggregate has a dynamic
  size, there is no way to eliminate the elaboration code (such dynamic
! bounds would be incompatible with `Preelaborate` in any case). If
  the bounds are static, then use of this restriction actually modifies
  the code choice of the compiler to avoid generating a loop, and instead
  generate the aggregate statically if possible, no matter how many times
--- 834,840 ----
  
  In the case of aggregates with others, if the aggregate has a dynamic
  size, there is no way to eliminate the elaboration code (such dynamic
! bounds would be incompatible with ``Preelaborate`` in any case). If
  the bounds are static, then use of this restriction actually modifies
  the code choice of the compiler to avoid generating a loop, and instead
  generate the aggregate statically if possible, no matter how many times
*************** No_Implementation_Restrictions
*** 932,938 ****
  .. index:: No_Implementation_Restrictions
  
  [GNAT] This restriction checks at compile time that no GNAT-defined restriction
! identifiers (other than `No_Implementation_Restrictions` itself)
  are present.  With this restriction, the only other restriction identifiers
  that can be used are those defined in the Ada Reference Manual.
  
--- 932,938 ----
  .. index:: No_Implementation_Restrictions
  
  [GNAT] This restriction checks at compile time that no GNAT-defined restriction
! identifiers (other than ``No_Implementation_Restrictions`` itself)
  are present.  With this restriction, the only other restriction identifiers
  that can be used are those defined in the Ada Reference Manual.
  
*************** No_Implicit_Loops
*** 961,969 ****
  .. index:: No_Implicit_Loops
  
  [GNAT] This restriction ensures that the generated code of the unit marked
! with this restriction does not contain any implicit `for` loops, either by
  modifying the generated code where possible, or by rejecting any construct
! that would otherwise generate an implicit `for` loop. If this restriction is
  active, it is possible to build large array aggregates with all static
  components without generating an intermediate temporary, and without generating
  a loop to initialize individual components. Otherwise, a loop is created for
--- 961,969 ----
  .. index:: No_Implicit_Loops
  
  [GNAT] This restriction ensures that the generated code of the unit marked
! with this restriction does not contain any implicit ``for`` loops, either by
  modifying the generated code where possible, or by rejecting any construct
! that would otherwise generate an implicit ``for`` loop. If this restriction is
  active, it is possible to build large array aggregates with all static
  components without generating an intermediate temporary, and without generating
  a loop to initialize individual components. Otherwise, a loop is created for
*************** No_Wide_Characters
*** 982,1014 ****
  .. index:: No_Wide_Characters
  
  [GNAT] This restriction ensures at compile time that no uses of the types
! `Wide_Character` or `Wide_String` or corresponding wide
  wide types
  appear, and that no wide or wide wide string or character literals
  appear in the program (that is literals representing characters not in
! type `Character`).
  
  SPARK_05
  --------
  .. index:: SPARK_05
  
! [GNAT] This restriction checks at compile time that some constructs
! forbidden in SPARK 2005 are not present. Error messages related to
! SPARK restriction have the form:
  
  
  ::
  
    violation of restriction "SPARK_05" at <source-location>
     <error message>
  
- 
  .. index:: SPARK
  
! The restriction `SPARK` is recognized as a
! synonym for `SPARK_05`. This is retained for historical
! compatibility purposes (and an unconditional warning will be generated
! for its use, advising replacement by `SPARK`).
  
  This is not a replacement for the semantic checks performed by the
  SPARK Examiner tool, as the compiler currently only deals with code,
--- 982,1030 ----
  .. index:: No_Wide_Characters
  
  [GNAT] This restriction ensures at compile time that no uses of the types
! ``Wide_Character`` or ``Wide_String`` or corresponding wide
  wide types
  appear, and that no wide or wide wide string or character literals
  appear in the program (that is literals representing characters not in
! type ``Character``).
! 
! Static_Dispatch_Tables
! ----------------------
! .. index:: Static_Dispatch_Tables
! 
! [GNAT] This restriction checks at compile time that all the artifacts
! associated with dispatch tables can be placed in read-only memory.
  
  SPARK_05
  --------
  .. index:: SPARK_05
  
! [GNAT] This restriction checks at compile time that some constructs forbidden
! in SPARK 2005 are not present. Note that SPARK 2005 has been superseded by
! SPARK 2014, whose restrictions are checked by the tool GNATprove. To check that
! a codebase respects SPARK 2014 restrictions, mark the code with pragma or
! aspect ``SPARK_Mode``, and run the tool GNATprove at Stone assurance level, as
! follows::
! 
!   gnatprove -P project.gpr --mode=stone
! 
! or equivalently::
! 
!   gnatprove -P project.gpr --mode=check_all
  
+ With restriction ``SPARK_05``, error messages related to SPARK 2005 restriction
+ have the form:
  
  ::
  
    violation of restriction "SPARK_05" at <source-location>
     <error message>
  
  .. index:: SPARK
  
! The restriction ``SPARK`` is recognized as a synonym for ``SPARK_05``. This is
! retained for historical compatibility purposes (and an unconditional warning
! will be generated for its use, advising replacement by ``SPARK_05``).
  
  This is not a replacement for the semantic checks performed by the
  SPARK Examiner tool, as the compiler currently only deals with code,
*************** not SPARK 2005 annotations, and does not
*** 1016,1028 ****
  cases of constructs forbidden by SPARK 2005.
  
  Thus it may well be the case that code which passes the compiler with
! the SPARK restriction is rejected by the SPARK Examiner, e.g. due to
  the different visibility rules of the Examiner based on SPARK 2005
! `inherit` annotations.
  
  This restriction can be useful in providing an initial filter for code
  developed using SPARK 2005, or in examining legacy code to see how far
! it is from meeting SPARK restrictions.
  
  The list below summarizes the checks that are performed when this
  restriction is in force:
--- 1032,1044 ----
  cases of constructs forbidden by SPARK 2005.
  
  Thus it may well be the case that code which passes the compiler with
! the SPARK 2005 restriction is rejected by the SPARK Examiner, e.g. due to
  the different visibility rules of the Examiner based on SPARK 2005
! ``inherit`` annotations.
  
  This restriction can be useful in providing an initial filter for code
  developed using SPARK 2005, or in examining legacy code to see how far
! it is from meeting SPARK 2005 restrictions.
  
  The list below summarizes the checks that are performed when this
  restriction is in force:
*************** restriction is in force:
*** 1077,1083 ****
  * Subprogram declaration only allowed in package spec (unless followed by import)
  * Access types not allowed
  * Incomplete type declaration not allowed
! * Object and subtype declarations must respect SPARK restrictions
  * Digits or delta constraint not allowed
  * Decimal fixed point type not allowed
  * Aliasing of objects not allowed
--- 1093,1099 ----
  * Subprogram declaration only allowed in package spec (unless followed by import)
  * Access types not allowed
  * Incomplete type declaration not allowed
! * Object and subtype declarations must respect SPARK 2005 restrictions
  * Digits or delta constraint not allowed
  * Decimal fixed point type not allowed
  * Aliasing of objects not allowed
*************** restriction is in force:
*** 1086,1092 ****
  * Unary operators not allowed on modular types (except not)
  * Untagged record cannot be null
  * No class-wide operations
! * Initialization expressions must respect SPARK restrictions
  * Nonstatic ranges not allowed except in iteration schemes
  * String subtypes must have lower bound of 1
  * Subtype of Boolean cannot have constraint
--- 1102,1108 ----
  * Unary operators not allowed on modular types (except not)
  * Untagged record cannot be null
  * No class-wide operations
! * Initialization expressions must respect SPARK 2005 restrictions
  * Nonstatic ranges not allowed except in iteration schemes
  * String subtypes must have lower bound of 1
  * Subtype of Boolean cannot have constraint
*************** strict that the latest SPARK 2005 langua
*** 1110,1116 ****
  This list summarises the main SPARK 2005 language rules that are not
  currently checked by the SPARK_05 restriction:
  
! * SPARK annotations are treated as comments so are not checked at all
  * Based real literals not allowed
  * Objects cannot be initialized at declaration by calls to user-defined functions
  * Objects cannot be initialized at declaration by assignments from variables
--- 1126,1132 ----
  This list summarises the main SPARK 2005 language rules that are not
  currently checked by the SPARK_05 restriction:
  
! * SPARK 2005 annotations are treated as comments so are not checked at all
  * Based real literals not allowed
  * Objects cannot be initialized at declaration by calls to user-defined functions
  * Objects cannot be initialized at declaration by assignments from variables
*************** currently checked by the SPARK_05 restri
*** 1135,1140 ****
  * Pragma import must be immediately after entity it names
  * No mutual recursion between multiple units (this can be checked with gnatcheck)
  
! Note that if a unit is compiled in Ada 95 mode with the SPARK restriction,
  violations will be reported for constructs forbidden in SPARK 95,
  instead of SPARK 2005.
--- 1151,1156 ----
  * Pragma import must be immediately after entity it names
  * No mutual recursion between multiple units (this can be checked with gnatcheck)
  
! Note that if a unit is compiled in Ada 95 mode with the SPARK 2005 restriction,
  violations will be reported for constructs forbidden in SPARK 95,
  instead of SPARK 2005.
diff -Nrcpad gcc-7.3.0/gcc/ada/doc/gnat_rm/standard_library_routines.rst gcc-8.1.0/gcc/ada/doc/gnat_rm/standard_library_routines.rst
*** gcc-7.3.0/gcc/ada/doc/gnat_rm/standard_library_routines.rst	Fri Jan 13 11:23:42 2017
--- gcc-8.1.0/gcc/ada/doc/gnat_rm/standard_library_routines.rst	Wed Sep 13 07:50:02 2017
*************** the unit is not implemented.
*** 37,67 ****
  
  
  ``Ada.Assertions`` *(11.4.2)*
!   `Assertions` provides the `Assert` subprograms, and also
!   the declaration of the `Assertion_Error` exception.
  
  
  ``Ada.Asynchronous_Task_Control`` *(D.11)*
!   `Asynchronous_Task_Control` provides low level facilities for task
    synchronization. It is typically not implemented. See package spec for details.
  
  
  ``Ada.Calendar`` *(9.6)*
!   `Calendar` provides time of day access, and routines for
    manipulating times and durations.
  
  
  ``Ada.Calendar.Arithmetic`` *(9.6.1)*
    This package provides additional arithmetic
!   operations for `Calendar`.
  
  
  ``Ada.Calendar.Formatting`` *(9.6.1)*
!   This package provides formatting operations for `Calendar`.
  
  
  ``Ada.Calendar.Time_Zones`` *(9.6.1)*
!   This package provides additional `Calendar` facilities
    for handling time zones.
  
  
--- 37,67 ----
  
  
  ``Ada.Assertions`` *(11.4.2)*
!   ``Assertions`` provides the ``Assert`` subprograms, and also
!   the declaration of the ``Assertion_Error`` exception.
  
  
  ``Ada.Asynchronous_Task_Control`` *(D.11)*
!   ``Asynchronous_Task_Control`` provides low level facilities for task
    synchronization. It is typically not implemented. See package spec for details.
  
  
  ``Ada.Calendar`` *(9.6)*
!   ``Calendar`` provides time of day access, and routines for
    manipulating times and durations.
  
  
  ``Ada.Calendar.Arithmetic`` *(9.6.1)*
    This package provides additional arithmetic
!   operations for ``Calendar``.
  
  
  ``Ada.Calendar.Formatting`` *(9.6.1)*
!   This package provides formatting operations for ``Calendar``.
  
  
  ``Ada.Calendar.Time_Zones`` *(9.6.1)*
!   This package provides additional ``Calendar`` facilities
    for handling time zones.
  
  
*************** the unit is not implemented.
*** 84,97 ****
    that appear in type CHARACTER.  It is useful for writing programs that
    will run in international environments.  For example, if you want an
    upper case E with an acute accent in a string, it is often better to use
!   the definition of `UC_E_Acute` in this package.  Then your program
    will print in an understandable manner even if your environment does not
    support these extended characters.
  
  
  ``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 `argc` and `argv`
    in C), and also allows the exit status for the program to be set in a
    system-independent manner.
  
--- 84,97 ----
    that appear in type CHARACTER.  It is useful for writing programs that
    will run in international environments.  For example, if you want an
    upper case E with an acute accent in a string, it is often better to use
!   the definition of ``UC_E_Acute`` in this package.  Then your program
    will print in an understandable manner even if your environment does not
    support these extended characters.
  
  
  ``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 ``argc`` and ``argv``
    in C), and also allows the exit status for the program to be set in a
    system-independent manner.
  
*************** the unit is not implemented.
*** 209,215 ****
  
  
  ``Ada.Execution_Time`` *(D.14)*
!   Not implemented in GNAT.
  
  
  ``Ada.Execution_Time.Group_Budgets`` *(D.14.2)*
--- 209,216 ----
  
  
  ``Ada.Execution_Time`` *(D.14)*
!   This package provides CPU clock functionalities. It is not implemented on
!   all targets (see package spec for details).
  
  
  ``Ada.Execution_Time.Group_Budgets`` *(D.14.2)*
*************** the unit is not implemented.
*** 272,278 ****
  
  ``Ada.Locales`` *(A.19)*
    This package provides declarations providing information (Language
!   and Country) about the current locale.
  
  
  ``Ada.Numerics``
--- 273,281 ----
  
  ``Ada.Locales`` *(A.19)*
    This package provides declarations providing information (Language
!   and Country) about the current locale. This package is currently not
!   implemented other than by providing stubs which will always return
!   Language_Unknown/Country_Unknown.
  
  
  ``Ada.Numerics``
*************** the unit is not implemented.
*** 289,302 ****
  ``Ada.Numerics.Complex_Elementary_Functions``
    Provides the implementation of standard elementary functions (such as
    log and trigonometric functions) operating on complex numbers using the
!   standard `Float` and the `Complex` and `Imaginary` types
!   created by the package `Numerics.Complex_Types`.
  
  
  ``Ada.Numerics.Complex_Types``
    This is a predefined instantiation of
!   `Numerics.Generic_Complex_Types` using `Standard.Float` to
!   build the type `Complex` and `Imaginary`.
  
  
  ``Ada.Numerics.Discrete_Random``
--- 292,305 ----
  ``Ada.Numerics.Complex_Elementary_Functions``
    Provides the implementation of standard elementary functions (such as
    log and trigonometric functions) operating on complex numbers using the
!   standard ``Float`` and the ``Complex`` and ``Imaginary`` types
!   created by the package ``Numerics.Complex_Types``.
  
  
  ``Ada.Numerics.Complex_Types``
    This is a predefined instantiation of
!   ``Numerics.Generic_Complex_Types`` using ``Standard.Float`` to
!   build the type ``Complex`` and ``Imaginary``.
  
  
  ``Ada.Numerics.Discrete_Random``
*************** the unit is not implemented.
*** 318,332 ****
  
    * ``Short_Float``
  
!     `Ada.Numerics.Short_Complex_Elementary_Functions`
  
    * ``Float``
  
!     `Ada.Numerics.Complex_Elementary_Functions`
  
    * ``Long_Float``
  
!     `Ada.Numerics.Long_Complex_Elementary_Functions`
  
  ``Ada.Numerics.Generic_Complex_Types``
    This is a generic package that allows the creation of complex types,
--- 321,335 ----
  
    * ``Short_Float``
  
!     ``Ada.Numerics.Short_Complex_Elementary_Functions``
  
    * ``Float``
  
!     ``Ada.Numerics.Complex_Elementary_Functions``
  
    * ``Long_Float``
  
!     ``Ada.Numerics.Long_Complex_Elementary_Functions``
  
  ``Ada.Numerics.Generic_Complex_Types``
    This is a generic package that allows the creation of complex types,
*************** the unit is not implemented.
*** 336,350 ****
  
    * ``Short_Float``
  
!     `Ada.Numerics.Short_Complex_Complex_Types`
  
    * ``Float``
  
!     `Ada.Numerics.Complex_Complex_Types`
  
    * ``Long_Float``
  
!     `Ada.Numerics.Long_Complex_Complex_Types`
  
  ``Ada.Numerics.Generic_Elementary_Functions``
    This is a generic package that provides the implementation of standard
--- 339,353 ----
  
    * ``Short_Float``
  
!     ``Ada.Numerics.Short_Complex_Complex_Types``
  
    * ``Float``
  
!     ``Ada.Numerics.Complex_Complex_Types``
  
    * ``Long_Float``
  
!     ``Ada.Numerics.Long_Complex_Complex_Types``
  
  ``Ada.Numerics.Generic_Elementary_Functions``
    This is a generic package that provides the implementation of standard
*************** the unit is not implemented.
*** 355,369 ****
  
    * ``Short_Float``
  
!     `Ada.Numerics.Short_Elementary_Functions`
  
    * ``Float``
  
!     `Ada.Numerics.Elementary_Functions`
  
    * ``Long_Float``
  
!     `Ada.Numerics.Long_Elementary_Functions`
  
  ``Ada.Numerics.Generic_Real_Arrays`` *(G.3.1)*
    Generic operations on arrays of reals
--- 358,372 ----
  
    * ``Short_Float``
  
!     ``Ada.Numerics.Short_Elementary_Functions``
  
    * ``Float``
  
!     ``Ada.Numerics.Elementary_Functions``
  
    * ``Long_Float``
  
!     ``Ada.Numerics.Long_Elementary_Functions``
  
  ``Ada.Numerics.Generic_Real_Arrays`` *(G.3.1)*
    Generic operations on arrays of reals
*************** the unit is not implemented.
*** 372,378 ****
    Preinstantiation of Ada.Numerics.Generic_Real_Arrays (Float).
  
  ``Ada.Real_Time`` *(D.8)*
!   This package provides facilities similar to those of `Calendar`, but
    operating with a finer clock suitable for real time control. Note that
    annex D requires that there be no backward clock jumps, and GNAT generally
    guarantees this behavior, but of course if the external clock on which
--- 375,381 ----
    Preinstantiation of Ada.Numerics.Generic_Real_Arrays (Float).
  
  ``Ada.Real_Time`` *(D.8)*
!   This package provides facilities similar to those of ``Calendar``, but
    operating with a finer clock suitable for real time control. Note that
    annex D requires that there be no backward clock jumps, and GNAT generally
    guarantees this behavior, but of course if the external clock on which
*************** the unit is not implemented.
*** 394,405 ****
  
  ``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 (`Input`,
!   `Output`, `Read` and `Write`).
  
  ``Ada.Streams.Stream_IO`` *(A.12.1)*
!   This package is a specialization of the type `Streams` defined in
!   package `Streams` together with a set of operations providing
    Stream_IO capability.  The Stream_IO model permits both random and
    sequential access to a file which can contain an arbitrary set of values
    of one or more Ada types.
--- 397,408 ----
  
  ``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 (``Input``,
!   ``Output``, ``Read`` and ``Write``).
  
  ``Ada.Streams.Stream_IO`` *(A.12.1)*
!   This package is a specialization of the type ``Streams`` defined in
!   package ``Streams`` together with a set of operations providing
    Stream_IO capability.  The Stream_IO model permits both random and
    sequential access to a file which can contain an arbitrary set of values
    of one or more Ada types.
*************** the unit is not implemented.
*** 511,518 ****
  ``Ada.Strings.Wide_Unbounded`` *(A.4.7)*
    These packages provide analogous capabilities to the corresponding
    packages without ``Wide_`` in the name, but operate with the types
!   `Wide_String` and `Wide_Character` instead of `String`
!   and `Character`. Versions of all the child packages are available.
  
  ``Ada.Strings.Wide_Wide_Bounded`` *(A.4.7)*
  
--- 514,521 ----
  ``Ada.Strings.Wide_Unbounded`` *(A.4.7)*
    These packages provide analogous capabilities to the corresponding
    packages without ``Wide_`` in the name, but operate with the types
!   ``Wide_String`` and ``Wide_Character`` instead of ``String``
!   and ``Character``. Versions of all the child packages are available.
  
  ``Ada.Strings.Wide_Wide_Bounded`` *(A.4.7)*
  
*************** the unit is not implemented.
*** 523,530 ****
  ``Ada.Strings.Wide_Wide_Unbounded`` *(A.4.7)*
    These packages provide analogous capabilities to the corresponding
    packages without ``Wide_`` in the name, but operate with the types
!   `Wide_Wide_String` and `Wide_Wide_Character` instead
!   of `String` and `Character`.
  
  ``Ada.Synchronous_Barriers`` *(D.10.1)*
    This package provides facilities for synchronizing tasks at a low level
--- 526,533 ----
  ``Ada.Strings.Wide_Wide_Unbounded`` *(A.4.7)*
    These packages provide analogous capabilities to the corresponding
    packages without ``Wide_`` in the name, but operate with the types
!   ``Wide_Wide_String`` and ``Wide_Wide_Character`` instead
!   of ``String`` and ``Character``.
  
  ``Ada.Synchronous_Barriers`` *(D.10.1)*
    This package provides facilities for synchronizing tasks at a low level
*************** the unit is not implemented.
*** 578,592 ****
  
    * ``Short_Float``
  
!     `Short_Float_Text_IO`
  
    * ``Float``
  
!     `Float_Text_IO`
  
    * ``Long_Float``
  
!     `Long_Float_Text_IO`
  
  ``Ada.Text_IO.Integer_IO``
    Provides input-output facilities for integer types.  The following
--- 581,595 ----
  
    * ``Short_Float``
  
!     ``Short_Float_Text_IO``
  
    * ``Float``
  
!     ``Float_Text_IO``
  
    * ``Long_Float``
  
!     ``Long_Float_Text_IO``
  
  ``Ada.Text_IO.Integer_IO``
    Provides input-output facilities for integer types.  The following
*************** the unit is not implemented.
*** 594,616 ****
  
    * ``Short_Short_Integer``
  
!     `Ada.Short_Short_Integer_Text_IO`
  
    * ``Short_Integer``
  
!     `Ada.Short_Integer_Text_IO`
  
    * ``Integer``
  
!     `Ada.Integer_Text_IO`
  
    * ``Long_Integer``
  
!     `Ada.Long_Integer_Text_IO`
  
    * ``Long_Long_Integer``
  
!     `Ada.Long_Long_Integer_Text_IO`
  
  ``Ada.Text_IO.Modular_IO``
    Provides input-output facilities for modular (unsigned) types.
--- 597,619 ----
  
    * ``Short_Short_Integer``
  
!     ``Ada.Short_Short_Integer_Text_IO``
  
    * ``Short_Integer``
  
!     ``Ada.Short_Integer_Text_IO``
  
    * ``Integer``
  
!     ``Ada.Integer_Text_IO``
  
    * ``Long_Integer``
  
!     ``Ada.Long_Integer_Text_IO``
  
    * ``Long_Long_Integer``
  
!     ``Ada.Long_Long_Integer_Text_IO``
  
  ``Ada.Text_IO.Modular_IO``
    Provides input-output facilities for modular (unsigned) types.
*************** the unit is not implemented.
*** 691,707 ****
    allocated by use of an allocator.
  
  ``Ada.Wide_Text_IO`` *(A.11)*
!   This package is similar to `Ada.Text_IO`, except that the external
    file supports wide character representations, and the internal types are
!   `Wide_Character` and `Wide_String` instead of `Character`
!   and `String`. The corresponding set of nested packages and child
    packages are defined.
  
  ``Ada.Wide_Wide_Text_IO`` *(A.11)*
!   This package is similar to `Ada.Text_IO`, except that the external
    file supports wide character representations, and the internal types are
!   `Wide_Character` and `Wide_String` instead of `Character`
!   and `String`. The corresponding set of nested packages and child
    packages are defined.
  
  For packages in Interfaces and System, all the RM defined packages are
--- 694,710 ----
    allocated by use of an allocator.
  
  ``Ada.Wide_Text_IO`` *(A.11)*
!   This package is similar to ``Ada.Text_IO``, except that the external
    file supports wide character representations, and the internal types are
!   ``Wide_Character`` and ``Wide_String`` instead of ``Character``
!   and ``String``. The corresponding set of nested packages and child
    packages are defined.
  
  ``Ada.Wide_Wide_Text_IO`` *(A.11)*
!   This package is similar to ``Ada.Text_IO``, except that the external
    file supports wide character representations, and the internal types are
!   ``Wide_Character`` and ``Wide_String`` instead of ``Character``
!   and ``String``. The corresponding set of nested packages and child
    packages are defined.
  
  For packages in Interfaces and System, all the RM defined packages are
diff -Nrcpad gcc-7.3.0/gcc/ada/doc/gnat_rm/the_gnat_library.rst gcc-8.1.0/gcc/ada/doc/gnat_rm/the_gnat_library.rst
*** gcc-7.3.0/gcc/ada/doc/gnat_rm/the_gnat_library.rst	Fri Jan 13 11:23:42 2017
--- gcc-8.1.0/gcc/ada/doc/gnat_rm/the_gnat_library.rst	Fri Sep  8 12:34:54 2017
***************
*** 1,3 ****
--- 1,5 ----
+ .. role:: switch(samp)
+ 
  .. _The_GNAT_Library:
  
  ****************
*************** with all GNAT releases.  For example, to
*** 18,133 ****
  the SPITBOL pattern matching capability, including a full tutorial and
  extensive examples, look in the :file:`g-spipat.ads` file in the library.
  
! For each entry here, the package name (as it would appear in a `with`
  clause) is given, followed by the name of the corresponding spec file in
! parentheses.  The packages are children in four hierarchies, `Ada`,
! `Interfaces`, `System`, and `GNAT`, the latter being a
  GNAT-specific hierarchy.
  
  Note that an application program should only use packages in one of these
  four hierarchies if the package is defined in the Ada Reference Manual,
  or is listed in this section of the GNAT Programmers Reference Manual.
  All other units should be considered internal implementation units and
! should not be directly `with`'ed by application code.  The use of
! a `with` statement that references one of these internal implementation
  units makes an application potentially dependent on changes in versions
  of GNAT, and will generate a warning message.
  
  .. _`Ada.Characters.Latin_9_(a-chlat9.ads)`:
  
! `Ada.Characters.Latin_9` (:file:`a-chlat9.ads`)
! ===============================================
  
  .. index:: Ada.Characters.Latin_9 (a-chlat9.ads)
  
  .. index:: Latin_9 constants for Character
  
! 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)).
  
  .. _`Ada.Characters.Wide_Latin_1_(a-cwila1.ads)`:
  
! `Ada.Characters.Wide_Latin_1` (:file:`a-cwila1.ads`)
! ====================================================
  
  .. index:: Ada.Characters.Wide_Latin_1 (a-cwila1.ads)
  
  .. index:: Latin_1 constants for Wide_Character
  
! 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
! types of the constants being `Wide_Character`
! instead of `Character`.  The provision of such a package
  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
  
! This child of `Ada.Characters`
  provides a set of definitions corresponding to those in the
! GNAT defined package `Ada.Characters.Latin_9` but with the
! types of the constants being `Wide_Character`
! instead of `Character`.  The provision of such a package
  is specifically authorized by the Ada Reference Manual
  (RM A.3.3(27)).
  
  .. _`Ada.Characters.Wide_Wide_Latin_1_(a-chzla1.ads)`:
  
! `Ada.Characters.Wide_Wide_Latin_1` (:file:`a-chzla1.ads`)
! =========================================================
  
  .. index:: Ada.Characters.Wide_Wide_Latin_1 (a-chzla1.ads)
  
  .. index:: Latin_1 constants for Wide_Wide_Character
  
! 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
! types of the constants being `Wide_Wide_Character`
! instead of `Character`.  The provision of such a package
  is specifically authorized by the Ada Reference Manual
  (RM A.3.3(27)).
  
  .. _`Ada.Characters.Wide_Wide_Latin_9_(a-chzla9.ads)`:
  
! `Ada.Characters.Wide_Wide_Latin_9` (:file:`a-chzla9.ads`)
! =========================================================
  
  .. index:: Ada.Characters.Wide_Wide_Latin_9 (a-chzla9.ads)
  
  .. index:: Latin_9 constants for Wide_Wide_Character
  
! This child of `Ada.Characters`
  provides a set of definitions corresponding to those in the
! GNAT defined package `Ada.Characters.Latin_9` but with the
! types of the constants being `Wide_Wide_Character`
! instead of `Character`.  The provision of such a package
  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.
--- 20,135 ----
  the SPITBOL pattern matching capability, including a full tutorial and
  extensive examples, look in the :file:`g-spipat.ads` file in the library.
  
! For each entry here, the package name (as it would appear in a ``with``
  clause) is given, followed by the name of the corresponding spec file in
! parentheses.  The packages are children in four hierarchies, ``Ada``,
! ``Interfaces``, ``System``, and ``GNAT``, the latter being a
  GNAT-specific hierarchy.
  
  Note that an application program should only use packages in one of these
  four hierarchies if the package is defined in the Ada Reference Manual,
  or is listed in this section of the GNAT Programmers Reference Manual.
  All other units should be considered internal implementation units and
! should not be directly ``with``\ ed by application code.  The use of
! a ``with`` clause that references one of these internal implementation
  units makes an application potentially dependent on changes in versions
  of GNAT, and will generate a warning message.
  
  .. _`Ada.Characters.Latin_9_(a-chlat9.ads)`:
  
! ``Ada.Characters.Latin_9`` (:file:`a-chlat9.ads`)
! =================================================
  
  .. index:: Ada.Characters.Latin_9 (a-chlat9.ads)
  
  .. index:: Latin_9 constants for Character
  
! 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)).
  
  .. _`Ada.Characters.Wide_Latin_1_(a-cwila1.ads)`:
  
! ``Ada.Characters.Wide_Latin_1`` (:file:`a-cwila1.ads`)
! ======================================================
  
  .. index:: Ada.Characters.Wide_Latin_1 (a-cwila1.ads)
  
  .. index:: Latin_1 constants for Wide_Character
  
! 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
! types of the constants being ``Wide_Character``
! instead of ``Character``.  The provision of such a package
  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
  
! This child of ``Ada.Characters``
  provides a set of definitions corresponding to those in the
! GNAT defined package ``Ada.Characters.Latin_9`` but with the
! types of the constants being ``Wide_Character``
! instead of ``Character``.  The provision of such a package
  is specifically authorized by the Ada Reference Manual
  (RM A.3.3(27)).
  
  .. _`Ada.Characters.Wide_Wide_Latin_1_(a-chzla1.ads)`:
  
! ``Ada.Characters.Wide_Wide_Latin_1`` (:file:`a-chzla1.ads`)
! ===========================================================
  
  .. index:: Ada.Characters.Wide_Wide_Latin_1 (a-chzla1.ads)
  
  .. index:: Latin_1 constants for Wide_Wide_Character
  
! 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
! types of the constants being ``Wide_Wide_Character``
! instead of ``Character``.  The provision of such a package
  is specifically authorized by the Ada Reference Manual
  (RM A.3.3(27)).
  
  .. _`Ada.Characters.Wide_Wide_Latin_9_(a-chzla9.ads)`:
  
! ``Ada.Characters.Wide_Wide_Latin_9`` (:file:`a-chzla9.ads`)
! ===========================================================
  
  .. index:: Ada.Characters.Wide_Wide_Latin_9 (a-chzla9.ads)
  
  .. index:: Latin_9 constants for Wide_Wide_Character
  
! This child of ``Ada.Characters``
  provides a set of definitions corresponding to those in the
! GNAT defined package ``Ada.Characters.Latin_9`` but with the
! types of the constants being ``Wide_Wide_Character``
! instead of ``Character``.  The provision of such a package
  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.
*************** does not have the complex overhead requi
*** 139,152 ****
  
  .. _`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.
--- 141,154 ----
  
  .. _`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.
*************** does not have the complex overhead requi
*** 158,171 ****
  
  .. _`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.
--- 160,173 ----
  
  .. _`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.
*************** does not have the complex overhead requi
*** 177,190 ****
  
  .. _`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.
--- 179,192 ----
  
  .. _`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.
*************** does not have the complex overhead requi
*** 196,209 ****
  
  .. _`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.
--- 198,211 ----
  
  .. _`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.
*************** does not have the complex overhead requi
*** 215,228 ****
  
  .. _`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.
--- 217,230 ----
  
  .. _`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.
*************** does not have the complex overhead requi
*** 234,247 ****
  
  .. _`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.
--- 236,249 ----
  
  .. _`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.
*************** in mind, it may well be generally useful
*** 251,285 ****
  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.Bounded_Holders_(a-coboho.ads)`:
  
! `Ada.Containers.Bounded_Holders` (:file:`a-coboho.ads`)
! =======================================================
  
  .. index:: Ada.Containers.Bounded_Holders (a-coboho.ads)
  
  .. index:: Formal container for vectors
  
! This child of `Ada.Containers` defines a modified version of
  Indefinite_Holders that avoids heap allocation.
  
  .. _`Ada.Command_Line.Environment_(a-colien.ads)`:
  
! `Ada.Command_Line.Environment` (:file:`a-colien.ads`)
! =====================================================
  
  .. index:: Ada.Command_Line.Environment (a-colien.ads)
  
  .. index:: Environment entries
  
! This child of `Ada.Command_Line`
  provides a mechanism for obtaining environment values on systems
  where this concept makes sense.
  
  .. _`Ada.Command_Line.Remove_(a-colire.ads)`:
  
! `Ada.Command_Line.Remove` (:file:`a-colire.ads`)
! ================================================
  
  .. index:: Ada.Command_Line.Remove (a-colire.ads)
  
--- 253,353 ----
  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`)
! =========================================================
  
  .. index:: Ada.Containers.Bounded_Holders (a-coboho.ads)
  
  .. index:: Formal container for vectors
  
! This child of ``Ada.Containers`` defines a modified version of
  Indefinite_Holders that avoids heap allocation.
  
  .. _`Ada.Command_Line.Environment_(a-colien.ads)`:
  
! ``Ada.Command_Line.Environment`` (:file:`a-colien.ads`)
! =======================================================
  
  .. index:: Ada.Command_Line.Environment (a-colien.ads)
  
  .. index:: Environment entries
  
! This child of ``Ada.Command_Line``
  provides a mechanism for obtaining environment values on systems
  where this concept makes sense.
  
  .. _`Ada.Command_Line.Remove_(a-colire.ads)`:
  
! ``Ada.Command_Line.Remove`` (:file:`a-colire.ads`)
! ==================================================
  
  .. index:: Ada.Command_Line.Remove (a-colire.ads)
  
*************** where this concept makes sense.
*** 287,302 ****
  
  .. index:: Command line, argument removal
  
! 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)`:
  
! `Ada.Command_Line.Response_File` (:file:`a-clrefi.ads`)
! =======================================================
  
  .. index:: Ada.Command_Line.Response_File (a-clrefi.ads)
  
--- 355,370 ----
  
  .. index:: Command line, argument removal
  
! 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)`:
  
! ``Ada.Command_Line.Response_File`` (:file:`a-clrefi.ads`)
! =========================================================
  
  .. index:: Ada.Command_Line.Response_File (a-clrefi.ads)
  
*************** see the removed argument.
*** 306,347 ****
  
  .. index:: Command line, handling long command lines
  
! This child of `Ada.Command_Line` provides a mechanism facilities for
  getting command line arguments from a text file, called a "response file".
  Using a response file allow passing a set of arguments to an executable longer
  than the maximum allowed by the system on the command line.
  
  .. _`Ada.Direct_IO.C_Streams_(a-diocst.ads)`:
  
! `Ada.Direct_IO.C_Streams` (:file:`a-diocst.ads`)
! ================================================
  
  .. index:: Ada.Direct_IO.C_Streams (a-diocst.ads)
  
  .. index:: C Streams, Interfacing with Direct_IO
  
  This package provides subprograms that allow interfacing between
! C streams and `Direct_IO`.  The stream identifier can be
  extracted from a file opened on the Ada side, and an Ada file
  can be constructed from a stream opened on the C side.
  
  .. _`Ada.Exceptions.Is_Null_Occurrence_(a-einuoc.ads)`:
  
! `Ada.Exceptions.Is_Null_Occurrence` (:file:`a-einuoc.ads`)
! ==========================================================
  
  .. index:: Ada.Exceptions.Is_Null_Occurrence (a-einuoc.ads)
  
  .. index:: Null_Occurrence, testing for
  
  This child subprogram provides a way of testing for the null
! exception occurrence (`Null_Occurrence`) without raising
  an exception.
  
  .. _`Ada.Exceptions.Last_Chance_Handler_(a-elchha.ads)`:
  
! `Ada.Exceptions.Last_Chance_Handler` (:file:`a-elchha.ads`)
! ===========================================================
  
  .. index:: Ada.Exceptions.Last_Chance_Handler (a-elchha.ads)
  
--- 374,415 ----
  
  .. index:: Command line, handling long command lines
  
! This child of ``Ada.Command_Line`` provides a mechanism facilities for
  getting command line arguments from a text file, called a "response file".
  Using a response file allow passing a set of arguments to an executable longer
  than the maximum allowed by the system on the command line.
  
  .. _`Ada.Direct_IO.C_Streams_(a-diocst.ads)`:
  
! ``Ada.Direct_IO.C_Streams`` (:file:`a-diocst.ads`)
! ==================================================
  
  .. index:: Ada.Direct_IO.C_Streams (a-diocst.ads)
  
  .. index:: C Streams, Interfacing with Direct_IO
  
  This package provides subprograms that allow interfacing between
! C streams and ``Direct_IO``.  The stream identifier can be
  extracted from a file opened on the Ada side, and an Ada file
  can be constructed from a stream opened on the C side.
  
  .. _`Ada.Exceptions.Is_Null_Occurrence_(a-einuoc.ads)`:
  
! ``Ada.Exceptions.Is_Null_Occurrence`` (:file:`a-einuoc.ads`)
! ============================================================
  
  .. index:: Ada.Exceptions.Is_Null_Occurrence (a-einuoc.ads)
  
  .. index:: Null_Occurrence, testing for
  
  This child subprogram provides a way of testing for the null
! exception occurrence (``Null_Occurrence``) without raising
  an exception.
  
  .. _`Ada.Exceptions.Last_Chance_Handler_(a-elchha.ads)`:
  
! ``Ada.Exceptions.Last_Chance_Handler`` (:file:`a-elchha.ads`)
! =============================================================
  
  .. index:: Ada.Exceptions.Last_Chance_Handler (a-elchha.ads)
  
*************** terminating the program. Note that this
*** 353,401 ****
  
  .. _`Ada.Exceptions.Traceback_(a-exctra.ads)`:
  
! `Ada.Exceptions.Traceback` (:file:`a-exctra.ads`)
! =================================================
  
  .. index:: Ada.Exceptions.Traceback (a-exctra.ads)
  
  .. index:: Traceback for Exception Occurrence
  
! This child package provides the subprogram (`Tracebacks`) to
  give a traceback array of addresses based on an exception
  occurrence.
  
  .. _`Ada.Sequential_IO.C_Streams_(a-siocst.ads)`:
  
! `Ada.Sequential_IO.C_Streams` (:file:`a-siocst.ads`)
! ====================================================
  
  .. index:: Ada.Sequential_IO.C_Streams (a-siocst.ads)
  
  .. index:: C Streams, Interfacing with Sequential_IO
  
  This package provides subprograms that allow interfacing between
! C streams and `Sequential_IO`.  The stream identifier can be
  extracted from a file opened on the Ada side, and an Ada file
  can be constructed from a stream opened on the C side.
  
  .. _`Ada.Streams.Stream_IO.C_Streams_(a-ssicst.ads)`:
  
! `Ada.Streams.Stream_IO.C_Streams` (:file:`a-ssicst.ads`)
! ========================================================
  
  .. index:: Ada.Streams.Stream_IO.C_Streams (a-ssicst.ads)
  
  .. index:: C Streams, Interfacing with Stream_IO
  
  This package provides subprograms that allow interfacing between
! C streams and `Stream_IO`.  The stream identifier can be
  extracted from a file opened on the Ada side, and an Ada file
  can be constructed from a stream opened on the C side.
  
  .. _`Ada.Strings.Unbounded.Text_IO_(a-suteio.ads)`:
  
! `Ada.Strings.Unbounded.Text_IO` (:file:`a-suteio.ads`)
! ======================================================
  
  .. index:: Ada.Strings.Unbounded.Text_IO (a-suteio.ads)
  
--- 421,469 ----
  
  .. _`Ada.Exceptions.Traceback_(a-exctra.ads)`:
  
! ``Ada.Exceptions.Traceback`` (:file:`a-exctra.ads`)
! ===================================================
  
  .. index:: Ada.Exceptions.Traceback (a-exctra.ads)
  
  .. index:: Traceback for Exception Occurrence
  
! This child package provides the subprogram (``Tracebacks``) to
  give a traceback array of addresses based on an exception
  occurrence.
  
  .. _`Ada.Sequential_IO.C_Streams_(a-siocst.ads)`:
  
! ``Ada.Sequential_IO.C_Streams`` (:file:`a-siocst.ads`)
! ======================================================
  
  .. index:: Ada.Sequential_IO.C_Streams (a-siocst.ads)
  
  .. index:: C Streams, Interfacing with Sequential_IO
  
  This package provides subprograms that allow interfacing between
! C streams and ``Sequential_IO``.  The stream identifier can be
  extracted from a file opened on the Ada side, and an Ada file
  can be constructed from a stream opened on the C side.
  
  .. _`Ada.Streams.Stream_IO.C_Streams_(a-ssicst.ads)`:
  
! ``Ada.Streams.Stream_IO.C_Streams`` (:file:`a-ssicst.ads`)
! ==========================================================
  
  .. index:: Ada.Streams.Stream_IO.C_Streams (a-ssicst.ads)
  
  .. index:: C Streams, Interfacing with Stream_IO
  
  This package provides subprograms that allow interfacing between
! C streams and ``Stream_IO``.  The stream identifier can be
  extracted from a file opened on the Ada side, and an Ada file
  can be constructed from a stream opened on the C side.
  
  .. _`Ada.Strings.Unbounded.Text_IO_(a-suteio.ads)`:
  
! ``Ada.Strings.Unbounded.Text_IO`` (:file:`a-suteio.ads`)
! ========================================================
  
  .. index:: Ada.Strings.Unbounded.Text_IO (a-suteio.ads)
  
*************** with ordinary strings.
*** 409,416 ****
  
  .. _`Ada.Strings.Wide_Unbounded.Wide_Text_IO_(a-swuwti.ads)`:
  
! `Ada.Strings.Wide_Unbounded.Wide_Text_IO` (:file:`a-swuwti.ads`)
! ================================================================
  
  .. index:: Ada.Strings.Wide_Unbounded.Wide_Text_IO (a-swuwti.ads)
  
--- 477,484 ----
  
  .. _`Ada.Strings.Wide_Unbounded.Wide_Text_IO_(a-swuwti.ads)`:
  
! ``Ada.Strings.Wide_Unbounded.Wide_Text_IO`` (:file:`a-swuwti.ads`)
! ==================================================================
  
  .. index:: Ada.Strings.Wide_Unbounded.Wide_Text_IO (a-swuwti.ads)
  
*************** with ordinary wide strings.
*** 424,431 ****
  
  .. _`Ada.Strings.Wide_Wide_Unbounded.Wide_Wide_Text_IO_(a-szuzti.ads)`:
  
! `Ada.Strings.Wide_Wide_Unbounded.Wide_Wide_Text_IO` (:file:`a-szuzti.ads`)
! ==========================================================================
  
  .. index:: Ada.Strings.Wide_Wide_Unbounded.Wide_Wide_Text_IO (a-szuzti.ads)
  
--- 492,499 ----
  
  .. _`Ada.Strings.Wide_Wide_Unbounded.Wide_Wide_Text_IO_(a-szuzti.ads)`:
  
! ``Ada.Strings.Wide_Wide_Unbounded.Wide_Wide_Text_IO`` (:file:`a-szuzti.ads`)
! ============================================================================
  
  .. index:: Ada.Strings.Wide_Wide_Unbounded.Wide_Wide_Text_IO (a-szuzti.ads)
  
*************** with ordinary wide wide strings.
*** 439,460 ****
  
  .. _`Ada.Text_IO.C_Streams_(a-tiocst.ads)`:
  
! `Ada.Text_IO.C_Streams` (:file:`a-tiocst.ads`)
! ==============================================
  
  .. index:: Ada.Text_IO.C_Streams (a-tiocst.ads)
  
! .. index:: C Streams, Interfacing with `Text_IO`
  
  This package provides subprograms that allow interfacing between
! C streams and `Text_IO`.  The stream identifier can be
  extracted from a file opened on the Ada side, and an Ada file
  can be constructed from a stream opened on the C side.
  
  .. _`Ada.Text_IO.Reset_Standard_Files_(a-tirsfi.ads)`:
  
! `Ada.Text_IO.Reset_Standard_Files` (:file:`a-tirsfi.ads`)
! =========================================================
  
  .. index:: Ada.Text_IO.Reset_Standard_Files (a-tirsfi.ads)
  
--- 507,528 ----
  
  .. _`Ada.Text_IO.C_Streams_(a-tiocst.ads)`:
  
! ``Ada.Text_IO.C_Streams`` (:file:`a-tiocst.ads`)
! ================================================
  
  .. index:: Ada.Text_IO.C_Streams (a-tiocst.ads)
  
! .. index:: C Streams, Interfacing with ``Text_IO``
  
  This package provides subprograms that allow interfacing between
! C streams and ``Text_IO``.  The stream identifier can be
  extracted from a file opened on the Ada side, and an Ada file
  can be constructed from a stream opened on the C side.
  
  .. _`Ada.Text_IO.Reset_Standard_Files_(a-tirsfi.ads)`:
  
! ``Ada.Text_IO.Reset_Standard_Files`` (:file:`a-tirsfi.ads`)
! ===========================================================
  
  .. index:: Ada.Text_IO.Reset_Standard_Files (a-tirsfi.ads)
  
*************** interactive).
*** 468,475 ****
  
  .. _`Ada.Wide_Characters.Unicode_(a-wichun.ads)`:
  
! `Ada.Wide_Characters.Unicode` (:file:`a-wichun.ads`)
! ====================================================
  
  .. index:: Ada.Wide_Characters.Unicode (a-wichun.ads)
  
--- 536,543 ----
  
  .. _`Ada.Wide_Characters.Unicode_(a-wichun.ads)`:
  
! ``Ada.Wide_Characters.Unicode`` (:file:`a-wichun.ads`)
! ======================================================
  
  .. index:: Ada.Wide_Characters.Unicode (a-wichun.ads)
  
*************** Wide_Character values according to Unico
*** 480,501 ****
  
  .. _`Ada.Wide_Text_IO.C_Streams_(a-wtcstr.ads)`:
  
! `Ada.Wide_Text_IO.C_Streams` (:file:`a-wtcstr.ads`)
! ===================================================
  
  .. index:: Ada.Wide_Text_IO.C_Streams (a-wtcstr.ads)
  
! .. index:: C Streams, Interfacing with `Wide_Text_IO`
  
  This package provides subprograms that allow interfacing between
! C streams and `Wide_Text_IO`.  The stream identifier can be
  extracted from a file opened on the Ada side, and an Ada file
  can be constructed from a stream opened on the C side.
  
  .. _`Ada.Wide_Text_IO.Reset_Standard_Files_(a-wrstfi.ads)`:
  
! `Ada.Wide_Text_IO.Reset_Standard_Files` (:file:`a-wrstfi.ads`)
! ==============================================================
  
  .. index:: Ada.Wide_Text_IO.Reset_Standard_Files (a-wrstfi.ads)
  
--- 548,569 ----
  
  .. _`Ada.Wide_Text_IO.C_Streams_(a-wtcstr.ads)`:
  
! ``Ada.Wide_Text_IO.C_Streams`` (:file:`a-wtcstr.ads`)
! =====================================================
  
  .. index:: Ada.Wide_Text_IO.C_Streams (a-wtcstr.ads)
  
! .. index:: C Streams, Interfacing with ``Wide_Text_IO``
  
  This package provides subprograms that allow interfacing between
! C streams and ``Wide_Text_IO``.  The stream identifier can be
  extracted from a file opened on the Ada side, and an Ada file
  can be constructed from a stream opened on the C side.
  
  .. _`Ada.Wide_Text_IO.Reset_Standard_Files_(a-wrstfi.ads)`:
  
! ``Ada.Wide_Text_IO.Reset_Standard_Files`` (:file:`a-wrstfi.ads`)
! ================================================================
  
  .. index:: Ada.Wide_Text_IO.Reset_Standard_Files (a-wrstfi.ads)
  
*************** interactive).
*** 509,516 ****
  
  .. _`Ada.Wide_Wide_Characters.Unicode_(a-zchuni.ads)`:
  
! `Ada.Wide_Wide_Characters.Unicode` (:file:`a-zchuni.ads`)
! =========================================================
  
  .. index:: Ada.Wide_Wide_Characters.Unicode (a-zchuni.ads)
  
--- 577,584 ----
  
  .. _`Ada.Wide_Wide_Characters.Unicode_(a-zchuni.ads)`:
  
! ``Ada.Wide_Wide_Characters.Unicode`` (:file:`a-zchuni.ads`)
! ===========================================================
  
  .. index:: Ada.Wide_Wide_Characters.Unicode (a-zchuni.ads)
  
*************** Wide_Wide_Character values according to
*** 521,542 ****
  
  .. _`Ada.Wide_Wide_Text_IO.C_Streams_(a-ztcstr.ads)`:
  
! `Ada.Wide_Wide_Text_IO.C_Streams` (:file:`a-ztcstr.ads`)
! ========================================================
  
  .. index:: Ada.Wide_Wide_Text_IO.C_Streams (a-ztcstr.ads)
  
! .. index:: C Streams, Interfacing with `Wide_Wide_Text_IO`
  
  This package provides subprograms that allow interfacing between
! C streams and `Wide_Wide_Text_IO`.  The stream identifier can be
  extracted from a file opened on the Ada side, and an Ada file
  can be constructed from a stream opened on the C side.
  
  .. _`Ada.Wide_Wide_Text_IO.Reset_Standard_Files_(a-zrstfi.ads)`:
  
! `Ada.Wide_Wide_Text_IO.Reset_Standard_Files` (:file:`a-zrstfi.ads`)
! ===================================================================
  
  .. index:: Ada.Wide_Wide_Text_IO.Reset_Standard_Files (a-zrstfi.ads)
  
--- 589,610 ----
  
  .. _`Ada.Wide_Wide_Text_IO.C_Streams_(a-ztcstr.ads)`:
  
! ``Ada.Wide_Wide_Text_IO.C_Streams`` (:file:`a-ztcstr.ads`)
! ==========================================================
  
  .. index:: Ada.Wide_Wide_Text_IO.C_Streams (a-ztcstr.ads)
  
! .. index:: C Streams, Interfacing with ``Wide_Wide_Text_IO``
  
  This package provides subprograms that allow interfacing between
! C streams and ``Wide_Wide_Text_IO``.  The stream identifier can be
  extracted from a file opened on the Ada side, and an Ada file
  can be constructed from a stream opened on the C side.
  
  .. _`Ada.Wide_Wide_Text_IO.Reset_Standard_Files_(a-zrstfi.ads)`:
  
! ``Ada.Wide_Wide_Text_IO.Reset_Standard_Files`` (:file:`a-zrstfi.ads`)
! =====================================================================
  
  .. index:: Ada.Wide_Wide_Text_IO.Reset_Standard_Files (a-zrstfi.ads)
  
*************** redefined to be interactive).
*** 550,557 ****
  
  .. _`GNAT.Altivec_(g-altive.ads)`:
  
! `GNAT.Altivec` (:file:`g-altive.ads`)
! =====================================
  
  .. index:: GNAT.Altivec (g-altive.ads)
  
--- 618,625 ----
  
  .. _`GNAT.Altivec_(g-altive.ads)`:
  
! ``GNAT.Altivec`` (:file:`g-altive.ads`)
! =======================================
  
  .. index:: GNAT.Altivec (g-altive.ads)
  
*************** binding.
*** 563,570 ****
  
  .. _`GNAT.Altivec.Conversions_(g-altcon.ads)`:
  
! `GNAT.Altivec.Conversions` (:file:`g-altcon.ads`)
! =================================================
  
  .. index:: GNAT.Altivec.Conversions (g-altcon.ads)
  
--- 631,638 ----
  
  .. _`GNAT.Altivec.Conversions_(g-altcon.ads)`:
  
! ``GNAT.Altivec.Conversions`` (:file:`g-altcon.ads`)
! ===================================================
  
  .. index:: GNAT.Altivec.Conversions (g-altcon.ads)
  
*************** This package provides the Vector/View co
*** 574,581 ****
  
  .. _`GNAT.Altivec.Vector_Operations_(g-alveop.ads)`:
  
! `GNAT.Altivec.Vector_Operations` (:file:`g-alveop.ads`)
! =======================================================
  
  .. index:: GNAT.Altivec.Vector_Operations (g-alveop.ads)
  
--- 642,649 ----
  
  .. _`GNAT.Altivec.Vector_Operations_(g-alveop.ads)`:
  
! ``GNAT.Altivec.Vector_Operations`` (:file:`g-alveop.ads`)
! =========================================================
  
  .. index:: GNAT.Altivec.Vector_Operations (g-alveop.ads)
  
*************** is common to both bindings.
*** 588,595 ****
  
  .. _`GNAT.Altivec.Vector_Types_(g-alvety.ads)`:
  
! `GNAT.Altivec.Vector_Types` (:file:`g-alvety.ads`)
! ==================================================
  
  .. index:: GNAT.Altivec.Vector_Types (g-alvety.ads)
  
--- 656,663 ----
  
  .. _`GNAT.Altivec.Vector_Types_(g-alvety.ads)`:
  
! ``GNAT.Altivec.Vector_Types`` (:file:`g-alvety.ads`)
! ====================================================
  
  .. index:: GNAT.Altivec.Vector_Types (g-alvety.ads)
  
*************** to AltiVec facilities.
*** 600,607 ****
  
  .. _`GNAT.Altivec.Vector_Views_(g-alvevi.ads)`:
  
! `GNAT.Altivec.Vector_Views` (:file:`g-alvevi.ads`)
! ==================================================
  
  .. index:: GNAT.Altivec.Vector_Views (g-alvevi.ads)
  
--- 668,675 ----
  
  .. _`GNAT.Altivec.Vector_Views_(g-alvevi.ads)`:
  
! ``GNAT.Altivec.Vector_Views`` (:file:`g-alvevi.ads`)
! ====================================================
  
  .. index:: GNAT.Altivec.Vector_Views (g-alvevi.ads)
  
*************** objects.
*** 615,622 ****
  
  .. _`GNAT.Array_Split_(g-arrspl.ads)`:
  
! `GNAT.Array_Split` (:file:`g-arrspl.ads`)
! =========================================
  
  .. index:: GNAT.Array_Split (g-arrspl.ads)
  
--- 683,690 ----
  
  .. _`GNAT.Array_Split_(g-arrspl.ads)`:
  
! ``GNAT.Array_Split`` (:file:`g-arrspl.ads`)
! ===========================================
  
  .. index:: GNAT.Array_Split (g-arrspl.ads)
  
*************** to the resulting slices.
*** 628,635 ****
  
  .. _`GNAT.AWK_(g-awk.ads)`:
  
! `GNAT.AWK` (:file:`g-awk.ads`)
! ==============================
  
  .. index:: GNAT.AWK (g-awk.ads)
  
--- 696,703 ----
  
  .. _`GNAT.AWK_(g-awk.ads)`:
  
! ``GNAT.AWK`` (:file:`g-awk.ads`)
! ================================
  
  .. index:: GNAT.AWK (g-awk.ads)
  
*************** where each record is a line and a field
*** 643,663 ****
  
  .. _`GNAT.Bind_Environment_(g-binenv.ads)`:
  
! `GNAT.Bind_Environment` (:file:`g-binenv.ads`)
! ==============================================
  
  .. index:: GNAT.Bind_Environment (g-binenv.ads)
  
  .. index:: Bind environment
  
  Provides access to key=value associations captured at bind time.
! These associations can be specified using the `-V` binder command
  line switch.
  
  .. _`GNAT.Bounded_Buffers_(g-boubuf.ads)`:
  
! `GNAT.Bounded_Buffers` (:file:`g-boubuf.ads`)
! =============================================
  
  .. index:: GNAT.Bounded_Buffers (g-boubuf.ads)
  
--- 711,731 ----
  
  .. _`GNAT.Bind_Environment_(g-binenv.ads)`:
  
! ``GNAT.Bind_Environment`` (:file:`g-binenv.ads`)
! ================================================
  
  .. index:: GNAT.Bind_Environment (g-binenv.ads)
  
  .. index:: Bind environment
  
  Provides access to key=value associations captured at bind time.
! These associations can be specified using the :switch:`-V` binder command
  line switch.
  
  .. _`GNAT.Bounded_Buffers_(g-boubuf.ads)`:
  
! ``GNAT.Bounded_Buffers`` (:file:`g-boubuf.ads`)
! ===============================================
  
  .. index:: GNAT.Bounded_Buffers (g-boubuf.ads)
  
*************** such as mailboxes.
*** 671,678 ****
  
  .. _`GNAT.Bounded_Mailboxes_(g-boumai.ads)`:
  
! `GNAT.Bounded_Mailboxes` (:file:`g-boumai.ads`)
! ===============================================
  
  .. index:: GNAT.Bounded_Mailboxes (g-boumai.ads)
  
--- 739,746 ----
  
  .. _`GNAT.Bounded_Mailboxes_(g-boumai.ads)`:
  
! ``GNAT.Bounded_Mailboxes`` (:file:`g-boumai.ads`)
! =================================================
  
  .. index:: GNAT.Bounded_Mailboxes (g-boumai.ads)
  
*************** Provides a thread-safe asynchronous inte
*** 684,691 ****
  
  .. _`GNAT.Bubble_Sort_(g-bubsor.ads)`:
  
! `GNAT.Bubble_Sort` (:file:`g-bubsor.ads`)
! =========================================
  
  .. index:: GNAT.Bubble_Sort (g-bubsor.ads)
  
--- 752,759 ----
  
  .. _`GNAT.Bubble_Sort_(g-bubsor.ads)`:
  
! ``GNAT.Bubble_Sort`` (:file:`g-bubsor.ads`)
! ===========================================
  
  .. index:: GNAT.Bubble_Sort (g-bubsor.ads)
  
*************** access-to-procedure values.
*** 699,706 ****
  
  .. _`GNAT.Bubble_Sort_A_(g-busora.ads)`:
  
! `GNAT.Bubble_Sort_A` (:file:`g-busora.ads`)
! ===========================================
  
  .. index:: GNAT.Bubble_Sort_A (g-busora.ads)
  
--- 767,774 ----
  
  .. _`GNAT.Bubble_Sort_A_(g-busora.ads)`:
  
! ``GNAT.Bubble_Sort_A`` (:file:`g-busora.ads`)
! =============================================
  
  .. index:: GNAT.Bubble_Sort_A (g-busora.ads)
  
*************** access-to-procedure values.
*** 711,722 ****
  Provides a general implementation of bubble sort usable for sorting arbitrary
  data items.  Move and comparison procedures are provided by passing
  access-to-procedure values. This is an older version, retained for
! compatibility. Usually `GNAT.Bubble_Sort` will be preferable.
  
  .. _`GNAT.Bubble_Sort_G_(g-busorg.ads)`:
  
! `GNAT.Bubble_Sort_G` (:file:`g-busorg.ads`)
! ===========================================
  
  .. index:: GNAT.Bubble_Sort_G (g-busorg.ads)
  
--- 779,790 ----
  Provides a general implementation of bubble sort usable for sorting arbitrary
  data items.  Move and comparison procedures are provided by passing
  access-to-procedure values. This is an older version, retained for
! compatibility. Usually ``GNAT.Bubble_Sort`` will be preferable.
  
  .. _`GNAT.Bubble_Sort_G_(g-busorg.ads)`:
  
! ``GNAT.Bubble_Sort_G`` (:file:`g-busorg.ads`)
! =============================================
  
  .. index:: GNAT.Bubble_Sort_G (g-busorg.ads)
  
*************** compatibility. Usually `GNAT.Bubble_Sort
*** 724,738 ****
  
  .. index:: Bubble sort
  
! Similar to `Bubble_Sort_A` except that the move and sorting procedures
  are provided as generic parameters, this improves efficiency, especially
  if the procedures can be inlined, at the expense of duplicating code for
  multiple instantiations.
  
  .. _`GNAT.Byte_Order_Mark_(g-byorma.ads)`:
  
! `GNAT.Byte_Order_Mark` (:file:`g-byorma.ads`)
! =============================================
  
  .. index:: GNAT.Byte_Order_Mark (g-byorma.ads)
  
--- 792,806 ----
  
  .. index:: Bubble sort
  
! Similar to ``Bubble_Sort_A`` except that the move and sorting procedures
  are provided as generic parameters, this improves efficiency, especially
  if the procedures can be inlined, at the expense of duplicating code for
  multiple instantiations.
  
  .. _`GNAT.Byte_Order_Mark_(g-byorma.ads)`:
  
! ``GNAT.Byte_Order_Mark`` (:file:`g-byorma.ads`)
! ===============================================
  
  .. index:: GNAT.Byte_Order_Mark (g-byorma.ads)
  
*************** sequences for various UCS input formats.
*** 747,754 ****
  
  .. _`GNAT.Byte_Swapping_(g-bytswa.ads)`:
  
! `GNAT.Byte_Swapping` (:file:`g-bytswa.ads`)
! ===========================================
  
  .. index:: GNAT.Byte_Swapping (g-bytswa.ads)
  
--- 815,822 ----
  
  .. _`GNAT.Byte_Swapping_(g-bytswa.ads)`:
  
! ``GNAT.Byte_Swapping`` (:file:`g-bytswa.ads`)
! =============================================
  
  .. index:: GNAT.Byte_Swapping (g-bytswa.ads)
  
*************** Machine-specific implementations are ava
*** 761,782 ****
  
  .. _`GNAT.Calendar_(g-calend.ads)`:
  
! `GNAT.Calendar` (:file:`g-calend.ads`)
! ======================================
  
  .. index:: GNAT.Calendar (g-calend.ads)
  
  .. index:: Calendar
  
! Extends the facilities provided by `Ada.Calendar` to include handling
! of days of the week, an extended `Split` and `Time_Of` capability.
! Also provides conversion of `Ada.Calendar.Time` values to and from the
! C `timeval` format.
  
  .. _`GNAT.Calendar.Time_IO_(g-catiio.ads)`:
  
! `GNAT.Calendar.Time_IO` (:file:`g-catiio.ads`)
! ==============================================
  
  .. index:: Calendar
  
--- 829,850 ----
  
  .. _`GNAT.Calendar_(g-calend.ads)`:
  
! ``GNAT.Calendar`` (:file:`g-calend.ads`)
! ========================================
  
  .. index:: GNAT.Calendar (g-calend.ads)
  
  .. index:: Calendar
  
! Extends the facilities provided by ``Ada.Calendar`` to include handling
! of days of the week, an extended ``Split`` and ``Time_Of`` capability.
! Also provides conversion of ``Ada.Calendar.Time`` values to and from the
! C ``timeval`` format.
  
  .. _`GNAT.Calendar.Time_IO_(g-catiio.ads)`:
  
! ``GNAT.Calendar.Time_IO`` (:file:`g-catiio.ads`)
! ================================================
  
  .. index:: Calendar
  
*************** C `timeval` format.
*** 786,793 ****
  
  .. _`GNAT.CRC32_(g-crc32.ads)`:
  
! `GNAT.CRC32` (:file:`g-crc32.ads`)
! ==================================
  
  .. index:: GNAT.CRC32 (g-crc32.ads)
  
--- 854,861 ----
  
  .. _`GNAT.CRC32_(g-crc32.ads)`:
  
! ``GNAT.CRC32`` (:file:`g-crc32.ads`)
! ====================================
  
  .. index:: GNAT.CRC32 (g-crc32.ads)
  
*************** Aug. 1988.  Sarwate, D.V.
*** 803,825 ****
  
  .. _`GNAT.Case_Util_(g-casuti.ads)`:
  
! `GNAT.Case_Util` (:file:`g-casuti.ads`)
! =======================================
  
  .. index:: GNAT.Case_Util (g-casuti.ads)
  
  .. index:: Casing utilities
  
! .. index:: Character handling (`GNAT.Case_Util`)
  
  A set of simple routines for handling upper and lower casing of strings
  without the overhead of the full casing tables
! in `Ada.Characters.Handling`.
  
  .. _`GNAT.CGI_(g-cgi.ads)`:
  
! `GNAT.CGI` (:file:`g-cgi.ads`)
! ==============================
  
  .. index:: GNAT.CGI (g-cgi.ads)
  
--- 871,893 ----
  
  .. _`GNAT.Case_Util_(g-casuti.ads)`:
  
! ``GNAT.Case_Util`` (:file:`g-casuti.ads`)
! =========================================
  
  .. index:: GNAT.Case_Util (g-casuti.ads)
  
  .. index:: Casing utilities
  
! .. index:: Character handling (``GNAT.Case_Util``)
  
  A set of simple routines for handling upper and lower casing of strings
  without the overhead of the full casing tables
! in ``Ada.Characters.Handling``.
  
  .. _`GNAT.CGI_(g-cgi.ads)`:
  
! ``GNAT.CGI`` (:file:`g-cgi.ads`)
! ================================
  
  .. index:: GNAT.CGI (g-cgi.ads)
  
*************** with this table.
*** 833,840 ****
  
  .. _`GNAT.CGI.Cookie_(g-cgicoo.ads)`:
  
! `GNAT.CGI.Cookie` (:file:`g-cgicoo.ads`)
! ========================================
  
  .. index:: GNAT.CGI.Cookie (g-cgicoo.ads)
  
--- 901,908 ----
  
  .. _`GNAT.CGI.Cookie_(g-cgicoo.ads)`:
  
! ``GNAT.CGI.Cookie`` (:file:`g-cgicoo.ads`)
! ==========================================
  
  .. index:: GNAT.CGI.Cookie (g-cgicoo.ads)
  
*************** cookies (piece of information kept in th
*** 848,855 ****
  
  .. _`GNAT.CGI.Debug_(g-cgideb.ads)`:
  
! `GNAT.CGI.Debug` (:file:`g-cgideb.ads`)
! =======================================
  
  .. index:: GNAT.CGI.Debug (g-cgideb.ads)
  
--- 916,923 ----
  
  .. _`GNAT.CGI.Debug_(g-cgideb.ads)`:
  
! ``GNAT.CGI.Debug`` (:file:`g-cgideb.ads`)
! =========================================
  
  .. index:: GNAT.CGI.Debug (g-cgideb.ads)
  
*************** programs written in Ada.
*** 860,880 ****
  
  .. _`GNAT.Command_Line_(g-comlin.ads)`:
  
! `GNAT.Command_Line` (:file:`g-comlin.ads`)
! ==========================================
  
  .. index:: GNAT.Command_Line (g-comlin.ads)
  
  .. index:: Command line
  
! Provides a high level interface to `Ada.Command_Line` facilities,
  including the ability to scan for named switches with optional parameters
  and expand file names using wild card notations.
  
  .. _`GNAT.Compiler_Version_(g-comver.ads)`:
  
! `GNAT.Compiler_Version` (:file:`g-comver.ads`)
! ==============================================
  
  .. index:: GNAT.Compiler_Version (g-comver.ads)
  
--- 928,948 ----
  
  .. _`GNAT.Command_Line_(g-comlin.ads)`:
  
! ``GNAT.Command_Line`` (:file:`g-comlin.ads`)
! ============================================
  
  .. index:: GNAT.Command_Line (g-comlin.ads)
  
  .. index:: Command line
  
! Provides a high level interface to ``Ada.Command_Line`` facilities,
  including the ability to scan for named switches with optional parameters
  and expand file names using wild card notations.
  
  .. _`GNAT.Compiler_Version_(g-comver.ads)`:
  
! ``GNAT.Compiler_Version`` (:file:`g-comver.ads`)
! ================================================
  
  .. index:: GNAT.Compiler_Version (g-comver.ads)
  
*************** of a partition).
*** 890,897 ****
  
  .. _`GNAT.Ctrl_C_(g-ctrl_c.ads)`:
  
! `GNAT.Ctrl_C` (:file:`g-ctrl_c.ads`)
! ====================================
  
  .. index:: GNAT.Ctrl_C (g-ctrl_c.ads)
  
--- 958,965 ----
  
  .. _`GNAT.Ctrl_C_(g-ctrl_c.ads)`:
  
! ``GNAT.Ctrl_C`` (:file:`g-ctrl_c.ads`)
! ======================================
  
  .. index:: GNAT.Ctrl_C (g-ctrl_c.ads)
  
*************** Provides a simple interface to handle Ct
*** 901,908 ****
  
  .. _`GNAT.Current_Exception_(g-curexc.ads)`:
  
! `GNAT.Current_Exception` (:file:`g-curexc.ads`)
! ===============================================
  
  .. index:: GNAT.Current_Exception (g-curexc.ads)
  
--- 969,976 ----
  
  .. _`GNAT.Current_Exception_(g-curexc.ads)`:
  
! ``GNAT.Current_Exception`` (:file:`g-curexc.ads`)
! =================================================
  
  .. index:: GNAT.Current_Exception (g-curexc.ads)
  
*************** obtaining information about exceptions p
*** 918,925 ****
  
  .. _`GNAT.Debug_Pools_(g-debpoo.ads)`:
  
! `GNAT.Debug_Pools` (:file:`g-debpoo.ads`)
! =========================================
  
  .. index:: GNAT.Debug_Pools (g-debpoo.ads)
  
--- 986,993 ----
  
  .. _`GNAT.Debug_Pools_(g-debpoo.ads)`:
  
! ``GNAT.Debug_Pools`` (:file:`g-debpoo.ads`)
! ===========================================
  
  .. index:: GNAT.Debug_Pools (g-debpoo.ads)
  
*************** obtaining information about exceptions p
*** 931,942 ****
  
  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`.
  
  .. _`GNAT.Debug_Utilities_(g-debuti.ads)`:
  
! `GNAT.Debug_Utilities` (:file:`g-debuti.ads`)
! =============================================
  
  .. index:: GNAT.Debug_Utilities (g-debuti.ads)
  
--- 999,1010 ----
  
  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`.
  
  .. _`GNAT.Debug_Utilities_(g-debuti.ads)`:
  
! ``GNAT.Debug_Utilities`` (:file:`g-debuti.ads`)
! ===============================================
  
  .. index:: GNAT.Debug_Utilities (g-debuti.ads)
  
*************** for hexadecimal literals.
*** 948,955 ****
  
  .. _`GNAT.Decode_String_(g-decstr.ads)`:
  
! `GNAT.Decode_String` (:file:`g-decstr.ads`)
! ===========================================
  
  .. index:: GNAT.Decode_String (g-decstr.ads)
  
--- 1016,1023 ----
  
  .. _`GNAT.Decode_String_(g-decstr.ads)`:
  
! ``GNAT.Decode_String`` (:file:`g-decstr.ads`)
! =============================================
  
  .. index:: GNAT.Decode_String (g-decstr.ads)
  
*************** preinstantiation for UTF-8. See next ent
*** 972,979 ****
  
  .. _`GNAT.Decode_UTF8_String_(g-deutst.ads)`:
  
! `GNAT.Decode_UTF8_String` (:file:`g-deutst.ads`)
! ================================================
  
  .. index:: GNAT.Decode_UTF8_String (g-deutst.ads)
  
--- 1040,1047 ----
  
  .. _`GNAT.Decode_UTF8_String_(g-deutst.ads)`:
  
! ``GNAT.Decode_UTF8_String`` (:file:`g-deutst.ads`)
! ==================================================
  
  .. index:: GNAT.Decode_UTF8_String (g-deutst.ads)
  
*************** A preinstantiation of GNAT.Decode_String
*** 993,1000 ****
  
  .. _`GNAT.Directory_Operations_(g-dirope.ads)`:
  
! `GNAT.Directory_Operations` (:file:`g-dirope.ads`)
! ==================================================
  
  .. index:: GNAT.Directory_Operations (g-dirope.ads)
  
--- 1061,1068 ----
  
  .. _`GNAT.Directory_Operations_(g-dirope.ads)`:
  
! ``GNAT.Directory_Operations`` (:file:`g-dirope.ads`)
! ====================================================
  
  .. index:: GNAT.Directory_Operations (g-dirope.ads)
  
*************** directory.
*** 1006,1013 ****
  
  .. _`GNAT.Directory_Operations.Iteration_(g-diopit.ads)`:
  
! `GNAT.Directory_Operations.Iteration` (:file:`g-diopit.ads`)
! ============================================================
  
  .. index:: GNAT.Directory_Operations.Iteration (g-diopit.ads)
  
--- 1074,1081 ----
  
  .. _`GNAT.Directory_Operations.Iteration_(g-diopit.ads)`:
  
! ``GNAT.Directory_Operations.Iteration`` (:file:`g-diopit.ads`)
! ==============================================================
  
  .. index:: GNAT.Directory_Operations.Iteration (g-diopit.ads)
  
*************** for iterating through directories.
*** 1018,1025 ****
  
  .. _`GNAT.Dynamic_HTables_(g-dynhta.ads)`:
  
! `GNAT.Dynamic_HTables` (:file:`g-dynhta.ads`)
! =============================================
  
  .. index:: GNAT.Dynamic_HTables (g-dynhta.ads)
  
--- 1086,1093 ----
  
  .. _`GNAT.Dynamic_HTables_(g-dynhta.ads)`:
  
! ``GNAT.Dynamic_HTables`` (:file:`g-dynhta.ads`)
! ===============================================
  
  .. index:: GNAT.Dynamic_HTables (g-dynhta.ads)
  
*************** A generic implementation of hash tables
*** 1029,1043 ****
  data.  Provided in two forms, a simple form with built in hash functions,
  and a more complex form in which the hash function is supplied.
  
! This package provides a facility similar to that of `GNAT.HTable`,
  except that this package declares a type that can be used to define
  dynamic instances of the hash table, while an instantiation of
! `GNAT.HTable` creates a single instance of the hash table.
  
  .. _`GNAT.Dynamic_Tables_(g-dyntab.ads)`:
  
! `GNAT.Dynamic_Tables` (:file:`g-dyntab.ads`)
! ============================================
  
  .. index:: GNAT.Dynamic_Tables (g-dyntab.ads)
  
--- 1097,1111 ----
  data.  Provided in two forms, a simple form with built in hash functions,
  and a more complex form in which the hash function is supplied.
  
! This package provides a facility similar to that of ``GNAT.HTable``,
  except that this package declares a type that can be used to define
  dynamic instances of the hash table, while an instantiation of
! ``GNAT.HTable`` creates a single instance of the hash table.
  
  .. _`GNAT.Dynamic_Tables_(g-dyntab.ads)`:
  
! ``GNAT.Dynamic_Tables`` (:file:`g-dyntab.ads`)
! ==============================================
  
  .. index:: GNAT.Dynamic_Tables (g-dyntab.ads)
  
*************** dynamic instances of the hash table, whi
*** 1048,1062 ****
  A generic package providing a single dimension array abstraction where the
  length of the array can be dynamically modified.
  
! This package provides a facility similar to that of `GNAT.Table`,
  except that this package declares a type that can be used to define
  dynamic instances of the table, while an instantiation of
! `GNAT.Table` creates a single instance of the table type.
  
  .. _`GNAT.Encode_String_(g-encstr.ads)`:
  
! `GNAT.Encode_String` (:file:`g-encstr.ads`)
! ===========================================
  
  .. index:: GNAT.Encode_String (g-encstr.ads)
  
--- 1116,1130 ----
  A generic package providing a single dimension array abstraction where the
  length of the array can be dynamically modified.
  
! This package provides a facility similar to that of ``GNAT.Table``,
  except that this package declares a type that can be used to define
  dynamic instances of the table, while an instantiation of
! ``GNAT.Table`` creates a single instance of the table type.
  
  .. _`GNAT.Encode_String_(g-encstr.ads)`:
  
! ``GNAT.Encode_String`` (:file:`g-encstr.ads`)
! =============================================
  
  .. index:: GNAT.Encode_String (g-encstr.ads)
  
*************** Note there is a preinstantiation for UTF
*** 1077,1084 ****
  
  .. _`GNAT.Encode_UTF8_String_(g-enutst.ads)`:
  
! `GNAT.Encode_UTF8_String` (:file:`g-enutst.ads`)
! ================================================
  
  .. index:: GNAT.Encode_UTF8_String (g-enutst.ads)
  
--- 1145,1152 ----
  
  .. _`GNAT.Encode_UTF8_String_(g-enutst.ads)`:
  
! ``GNAT.Encode_UTF8_String`` (:file:`g-enutst.ads`)
! ==================================================
  
  .. index:: GNAT.Encode_UTF8_String (g-enutst.ads)
  
*************** A preinstantiation of GNAT.Encode_String
*** 1098,1105 ****
  
  .. _`GNAT.Exception_Actions_(g-excact.ads)`:
  
! `GNAT.Exception_Actions` (:file:`g-excact.ads`)
! ===============================================
  
  .. index:: GNAT.Exception_Actions (g-excact.ads)
  
--- 1166,1173 ----
  
  .. _`GNAT.Exception_Actions_(g-excact.ads)`:
  
! ``GNAT.Exception_Actions`` (:file:`g-excact.ads`)
! =================================================
  
  .. index:: GNAT.Exception_Actions (g-excact.ads)
  
*************** can be used for instance to force a core
*** 1111,1118 ****
  
  .. _`GNAT.Exception_Traces_(g-exctra.ads)`:
  
! `GNAT.Exception_Traces` (:file:`g-exctra.ads`)
! ==============================================
  
  .. index:: GNAT.Exception_Traces (g-exctra.ads)
  
--- 1179,1186 ----
  
  .. _`GNAT.Exception_Traces_(g-exctra.ads)`:
  
! ``GNAT.Exception_Traces`` (:file:`g-exctra.ads`)
! ================================================
  
  .. index:: GNAT.Exception_Traces (g-exctra.ads)
  
*************** occurrences.
*** 1125,1132 ****
  
  .. _`GNAT.Exceptions_(g-expect.ads)`:
  
! `GNAT.Exceptions` (:file:`g-expect.ads`)
! ========================================
  
  .. index:: GNAT.Exceptions (g-expect.ads)
  
--- 1193,1200 ----
  
  .. _`GNAT.Exceptions_(g-expect.ads)`:
  
! ``GNAT.Exceptions`` (:file:`g-expect.ads`)
! ==========================================
  
  .. index:: GNAT.Exceptions (g-expect.ads)
  
*************** occurrences.
*** 1136,1151 ****
  
  Normally it is not possible to raise an exception with
  a message from a subprogram in a pure package, since the
! 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)`:
  
! `GNAT.Expect` (:file:`g-expect.ads`)
! ====================================
  
  .. index:: GNAT.Expect (g-expect.ads)
  
--- 1204,1219 ----
  
  Normally it is not possible to raise an exception with
  a message from a subprogram in a pure package, since the
! 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)`:
  
! ``GNAT.Expect`` (:file:`g-expect.ads`)
! ======================================
  
  .. index:: GNAT.Expect (g-expect.ads)
  
*************** Provides a set of subprograms similar to
*** 1153,1179 ****
  with the standard Tcl Expect tool.
  It allows you to easily spawn and communicate with an external process.
  You can send commands or inputs to the process, and compare the output
! with some expected regular expression. Currently `GNAT.Expect`
  is implemented on all native GNAT ports.
  It is not implemented for cross ports, and in particular is not
  implemented for VxWorks or LynxOS.
  
  .. _`GNAT.Expect.TTY_(g-exptty.ads)`:
  
! `GNAT.Expect.TTY` (:file:`g-exptty.ads`)
! ========================================
  
  .. index:: GNAT.Expect.TTY (g-exptty.ads)
  
  As GNAT.Expect but using pseudo-terminal.
! Currently `GNAT.Expect.TTY` is implemented on all native GNAT
  ports. It is not implemented for cross ports, and
  in particular is not implemented for VxWorks or LynxOS.
  
  .. _`GNAT.Float_Control_(g-flocon.ads)`:
  
! `GNAT.Float_Control` (:file:`g-flocon.ads`)
! ===========================================
  
  .. index:: GNAT.Float_Control (g-flocon.ads)
  
--- 1221,1247 ----
  with the standard Tcl Expect tool.
  It allows you to easily spawn and communicate with an external process.
  You can send commands or inputs to the process, and compare the output
! with some expected regular expression. Currently ``GNAT.Expect``
  is implemented on all native GNAT ports.
  It is not implemented for cross ports, and in particular is not
  implemented for VxWorks or LynxOS.
  
  .. _`GNAT.Expect.TTY_(g-exptty.ads)`:
  
! ``GNAT.Expect.TTY`` (:file:`g-exptty.ads`)
! ==========================================
  
  .. index:: GNAT.Expect.TTY (g-exptty.ads)
  
  As GNAT.Expect but using pseudo-terminal.
! Currently ``GNAT.Expect.TTY`` is implemented on all native GNAT
  ports. It is not implemented for cross ports, and
  in particular is not implemented for VxWorks or LynxOS.
  
  .. _`GNAT.Float_Control_(g-flocon.ads)`:
  
! ``GNAT.Float_Control`` (:file:`g-flocon.ads`)
! =============================================
  
  .. index:: GNAT.Float_Control (g-flocon.ads)
  
*************** in this package can be used to reestabli
*** 1186,1193 ****
  
  .. _`GNAT.Formatted_String_(g-forstr.ads)`:
  
! `GNAT.Formatted_String` (:file:`g-forstr.ads`)
! ==============================================
  
  .. index:: GNAT.Formatted_String (g-forstr.ads)
  
--- 1254,1261 ----
  
  .. _`GNAT.Formatted_String_(g-forstr.ads)`:
  
! ``GNAT.Formatted_String`` (:file:`g-forstr.ads`)
! ================================================
  
  .. index:: GNAT.Formatted_String (g-forstr.ads)
  
*************** formatted string.
*** 1201,1208 ****
  
  .. _`GNAT.Heap_Sort_(g-heasor.ads)`:
  
! `GNAT.Heap_Sort` (:file:`g-heasor.ads`)
! =======================================
  
  .. index:: GNAT.Heap_Sort (g-heasor.ads)
  
--- 1269,1276 ----
  
  .. _`GNAT.Heap_Sort_(g-heasor.ads)`:
  
! ``GNAT.Heap_Sort`` (:file:`g-heasor.ads`)
! =========================================
  
  .. index:: GNAT.Heap_Sort (g-heasor.ads)
  
*************** that performs approximately N*log(N) com
*** 1215,1222 ****
  
  .. _`GNAT.Heap_Sort_A_(g-hesora.ads)`:
  
! `GNAT.Heap_Sort_A` (:file:`g-hesora.ads`)
! =========================================
  
  .. index:: GNAT.Heap_Sort_A (g-hesora.ads)
  
--- 1283,1290 ----
  
  .. _`GNAT.Heap_Sort_A_(g-hesora.ads)`:
  
! ``GNAT.Heap_Sort_A`` (:file:`g-hesora.ads`)
! ===========================================
  
  .. index:: GNAT.Heap_Sort_A (g-hesora.ads)
  
*************** Provides a general implementation of hea
*** 1226,1252 ****
  data items. Move and comparison procedures are provided by passing
  access-to-procedure values.  The algorithm used is a modified heap sort
  that performs approximately N*log(N) comparisons in the worst case.
! This differs from `GNAT.Heap_Sort` in having a less convenient
  interface, but may be slightly more efficient.
  
  .. _`GNAT.Heap_Sort_G_(g-hesorg.ads)`:
  
! `GNAT.Heap_Sort_G` (:file:`g-hesorg.ads`)
! =========================================
  
  .. index:: GNAT.Heap_Sort_G (g-hesorg.ads)
  
  .. index:: Sorting
  
! Similar to `Heap_Sort_A` except that the move and sorting procedures
  are provided as generic parameters, this improves efficiency, especially
  if the procedures can be inlined, at the expense of duplicating code for
  multiple instantiations.
  
  .. _`GNAT.HTable_(g-htable.ads)`:
  
! `GNAT.HTable` (:file:`g-htable.ads`)
! ====================================
  
  .. index:: GNAT.HTable (g-htable.ads)
  
--- 1294,1320 ----
  data items. Move and comparison procedures are provided by passing
  access-to-procedure values.  The algorithm used is a modified heap sort
  that performs approximately N*log(N) comparisons in the worst case.
! This differs from ``GNAT.Heap_Sort`` in having a less convenient
  interface, but may be slightly more efficient.
  
  .. _`GNAT.Heap_Sort_G_(g-hesorg.ads)`:
  
! ``GNAT.Heap_Sort_G`` (:file:`g-hesorg.ads`)
! ===========================================
  
  .. index:: GNAT.Heap_Sort_G (g-hesorg.ads)
  
  .. index:: Sorting
  
! Similar to ``Heap_Sort_A`` except that the move and sorting procedures
  are provided as generic parameters, this improves efficiency, especially
  if the procedures can be inlined, at the expense of duplicating code for
  multiple instantiations.
  
  .. _`GNAT.HTable_(g-htable.ads)`:
  
! ``GNAT.HTable`` (:file:`g-htable.ads`)
! ======================================
  
  .. index:: GNAT.HTable (g-htable.ads)
  
*************** allowing arbitrary dynamic hash tables.
*** 1258,1265 ****
  
  .. _`GNAT.IO_(g-io.ads)`:
  
! `GNAT.IO` (:file:`g-io.ads`)
! ============================
  
  .. index:: GNAT.IO (g-io.ads)
  
--- 1326,1333 ----
  
  .. _`GNAT.IO_(g-io.ads)`:
  
! ``GNAT.IO`` (:file:`g-io.ads`)
! ==============================
  
  .. index:: GNAT.IO (g-io.ads)
  
*************** Standard_Output or Standard_Error.
*** 1274,1281 ****
  
  .. _`GNAT.IO_Aux_(g-io_aux.ads)`:
  
! `GNAT.IO_Aux` (:file:`g-io_aux.ads`)
! ====================================
  
  .. index:: GNAT.IO_Aux (g-io_aux.ads)
  
--- 1342,1349 ----
  
  .. _`GNAT.IO_Aux_(g-io_aux.ads)`:
  
! ``GNAT.IO_Aux`` (:file:`g-io_aux.ads`)
! ======================================
  
  .. index:: GNAT.IO_Aux (g-io_aux.ads)
  
*************** for whether a file exists, and functions
*** 1288,1295 ****
  
  .. _`GNAT.Lock_Files_(g-locfil.ads)`:
  
! `GNAT.Lock_Files` (:file:`g-locfil.ads`)
! ========================================
  
  .. index:: GNAT.Lock_Files (g-locfil.ads)
  
--- 1356,1363 ----
  
  .. _`GNAT.Lock_Files_(g-locfil.ads)`:
  
! ``GNAT.Lock_Files`` (:file:`g-locfil.ads`)
! ==========================================
  
  .. index:: GNAT.Lock_Files (g-locfil.ads)
  
*************** providing program level synchronization.
*** 1302,1333 ****
  
  .. _`GNAT.MBBS_Discrete_Random_(g-mbdira.ads)`:
  
! `GNAT.MBBS_Discrete_Random` (:file:`g-mbdira.ads`)
! ==================================================
  
  .. index:: GNAT.MBBS_Discrete_Random (g-mbdira.ads)
  
  .. index:: Random number generation
  
! The original implementation of `Ada.Numerics.Discrete_Random`.  Uses
  a modified version of the Blum-Blum-Shub generator.
  
  .. _`GNAT.MBBS_Float_Random_(g-mbflra.ads)`:
  
! `GNAT.MBBS_Float_Random` (:file:`g-mbflra.ads`)
! ===============================================
  
  .. index:: GNAT.MBBS_Float_Random (g-mbflra.ads)
  
  .. index:: Random number generation
  
! The original implementation of `Ada.Numerics.Float_Random`.  Uses
  a modified version of the Blum-Blum-Shub generator.
  
  .. _`GNAT.MD5_(g-md5.ads)`:
  
! `GNAT.MD5` (:file:`g-md5.ads`)
! ==============================
  
  .. index:: GNAT.MD5 (g-md5.ads)
  
--- 1370,1401 ----
  
  .. _`GNAT.MBBS_Discrete_Random_(g-mbdira.ads)`:
  
! ``GNAT.MBBS_Discrete_Random`` (:file:`g-mbdira.ads`)
! ====================================================
  
  .. index:: GNAT.MBBS_Discrete_Random (g-mbdira.ads)
  
  .. index:: Random number generation
  
! The original implementation of ``Ada.Numerics.Discrete_Random``.  Uses
  a modified version of the Blum-Blum-Shub generator.
  
  .. _`GNAT.MBBS_Float_Random_(g-mbflra.ads)`:
  
! ``GNAT.MBBS_Float_Random`` (:file:`g-mbflra.ads`)
! =================================================
  
  .. index:: GNAT.MBBS_Float_Random (g-mbflra.ads)
  
  .. index:: Random number generation
  
! The original implementation of ``Ada.Numerics.Float_Random``.  Uses
  a modified version of the Blum-Blum-Shub generator.
  
  .. _`GNAT.MD5_(g-md5.ads)`:
  
! ``GNAT.MD5`` (:file:`g-md5.ads`)
! ================================
  
  .. index:: GNAT.MD5 (g-md5.ads)
  
*************** FIPS PUB 198.
*** 1339,1346 ****
  
  .. _`GNAT.Memory_Dump_(g-memdum.ads)`:
  
! `GNAT.Memory_Dump` (:file:`g-memdum.ads`)
! =========================================
  
  .. index:: GNAT.Memory_Dump (g-memdum.ads)
  
--- 1407,1414 ----
  
  .. _`GNAT.Memory_Dump_(g-memdum.ads)`:
  
! ``GNAT.Memory_Dump`` (:file:`g-memdum.ads`)
! ===========================================
  
  .. index:: GNAT.Memory_Dump (g-memdum.ads)
  
*************** output.
*** 1352,1359 ****
  
  .. _`GNAT.Most_Recent_Exception_(g-moreex.ads)`:
  
! `GNAT.Most_Recent_Exception` (:file:`g-moreex.ads`)
! ===================================================
  
  .. index:: GNAT.Most_Recent_Exception (g-moreex.ads)
  
--- 1420,1427 ----
  
  .. _`GNAT.Most_Recent_Exception_(g-moreex.ads)`:
  
! ``GNAT.Most_Recent_Exception`` (:file:`g-moreex.ads`)
! =====================================================
  
  .. index:: GNAT.Most_Recent_Exception (g-moreex.ads)
  
*************** Ada 83 implementation dependent extensio
*** 1365,1372 ****
  
  .. _`GNAT.OS_Lib_(g-os_lib.ads)`:
  
! `GNAT.OS_Lib` (:file:`g-os_lib.ads`)
! ====================================
  
  .. index:: GNAT.OS_Lib (g-os_lib.ads)
  
--- 1433,1440 ----
  
  .. _`GNAT.OS_Lib_(g-os_lib.ads)`:
  
! ``GNAT.OS_Lib`` (:file:`g-os_lib.ads`)
! ======================================
  
  .. index:: GNAT.OS_Lib (g-os_lib.ads)
  
*************** and error return codes.
*** 1381,1388 ****
  
  .. _`GNAT.Perfect_Hash_Generators_(g-pehage.ads)`:
  
! `GNAT.Perfect_Hash_Generators` (:file:`g-pehage.ads`)
! =====================================================
  
  .. index:: GNAT.Perfect_Hash_Generators (g-pehage.ads)
  
--- 1449,1456 ----
  
  .. _`GNAT.Perfect_Hash_Generators_(g-pehage.ads)`:
  
! ``GNAT.Perfect_Hash_Generators`` (:file:`g-pehage.ads`)
! =======================================================
  
  .. index:: GNAT.Perfect_Hash_Generators (g-pehage.ads)
  
*************** convenient for use with realtime applica
*** 1399,1406 ****
  
  .. _`GNAT.Random_Numbers_(g-rannum.ads)`:
  
! `GNAT.Random_Numbers` (:file:`g-rannum.ads`)
! ============================================
  
  .. index:: GNAT.Random_Numbers (g-rannum.ads)
  
--- 1467,1474 ----
  
  .. _`GNAT.Random_Numbers_(g-rannum.ads)`:
  
! ``GNAT.Random_Numbers`` (:file:`g-rannum.ads`)
! ==============================================
  
  .. index:: GNAT.Random_Numbers (g-rannum.ads)
  
*************** standard Ada library and are more conven
*** 1411,1418 ****
  
  .. _`GNAT.Regexp_(g-regexp.ads)`:
  
! `GNAT.Regexp` (:file:`g-regexp.ads`)
! ====================================
  
  .. index:: GNAT.Regexp (g-regexp.ads)
  
--- 1479,1486 ----
  
  .. _`GNAT.Regexp_(g-regexp.ads)`:
  
! ``GNAT.Regexp`` (:file:`g-regexp.ads`)
! ======================================
  
  .. index:: GNAT.Regexp (g-regexp.ads)
  
*************** suitable for 'file globbing' application
*** 1427,1434 ****
  
  .. _`GNAT.Registry_(g-regist.ads)`:
  
! `GNAT.Registry` (:file:`g-regist.ads`)
! ======================================
  
  .. index:: GNAT.Registry (g-regist.ads)
  
--- 1495,1502 ----
  
  .. _`GNAT.Registry_(g-regist.ads)`:
  
! ``GNAT.Registry`` (:file:`g-regist.ads`)
! ========================================
  
  .. index:: GNAT.Registry (g-regist.ads)
  
*************** package provided with the Win32Ada bindi
*** 1441,1448 ****
  
  .. _`GNAT.Regpat_(g-regpat.ads)`:
  
! `GNAT.Regpat` (:file:`g-regpat.ads`)
! ====================================
  
  .. index:: GNAT.Regpat (g-regpat.ads)
  
--- 1509,1516 ----
  
  .. _`GNAT.Regpat_(g-regpat.ads)`:
  
! ``GNAT.Regpat`` (:file:`g-regpat.ads`)
! ======================================
  
  .. index:: GNAT.Regpat (g-regpat.ads)
  
*************** Henry Spencer (and binary compatible wit
*** 1456,1463 ****
  
  .. _`GNAT.Rewrite_Data_(g-rewdat.ads)`:
  
! `GNAT.Rewrite_Data` (:file:`g-rewdat.ads`)
! ==========================================
  
  .. index:: GNAT.Rewrite_Data (g-rewdat.ads)
  
--- 1524,1531 ----
  
  .. _`GNAT.Rewrite_Data_(g-rewdat.ads)`:
  
! ``GNAT.Rewrite_Data`` (:file:`g-rewdat.ads`)
! ============================================
  
  .. index:: GNAT.Rewrite_Data (g-rewdat.ads)
  
*************** this interface usable for large files or
*** 1470,1477 ****
  
  .. _`GNAT.Secondary_Stack_Info_(g-sestin.ads)`:
  
! `GNAT.Secondary_Stack_Info` (:file:`g-sestin.ads`)
! ==================================================
  
  .. index:: GNAT.Secondary_Stack_Info (g-sestin.ads)
  
--- 1538,1545 ----
  
  .. _`GNAT.Secondary_Stack_Info_(g-sestin.ads)`:
  
! ``GNAT.Secondary_Stack_Info`` (:file:`g-sestin.ads`)
! ====================================================
  
  .. index:: GNAT.Secondary_Stack_Info (g-sestin.ads)
  
*************** secondary stack.
*** 1482,1489 ****
  
  .. _`GNAT.Semaphores_(g-semaph.ads)`:
  
! `GNAT.Semaphores` (:file:`g-semaph.ads`)
! ========================================
  
  .. index:: GNAT.Semaphores (g-semaph.ads)
  
--- 1550,1557 ----
  
  .. _`GNAT.Semaphores_(g-semaph.ads)`:
  
! ``GNAT.Semaphores`` (:file:`g-semaph.ads`)
! ==========================================
  
  .. index:: GNAT.Semaphores (g-semaph.ads)
  
*************** Provides classic counting and binary sem
*** 1493,1500 ****
  
  .. _`GNAT.Serial_Communications_(g-sercom.ads)`:
  
! `GNAT.Serial_Communications` (:file:`g-sercom.ads`)
! ===================================================
  
  .. index:: GNAT.Serial_Communications (g-sercom.ads)
  
--- 1561,1568 ----
  
  .. _`GNAT.Serial_Communications_(g-sercom.ads)`:
  
! ``GNAT.Serial_Communications`` (:file:`g-sercom.ads`)
! =====================================================
  
  .. index:: GNAT.Serial_Communications (g-sercom.ads)
  
*************** port. This is only supported on GNU/Linu
*** 1505,1512 ****
  
  .. _`GNAT.SHA1_(g-sha1.ads)`:
  
! `GNAT.SHA1` (:file:`g-sha1.ads`)
! ================================
  
  .. index:: GNAT.SHA1 (g-sha1.ads)
  
--- 1573,1580 ----
  
  .. _`GNAT.SHA1_(g-sha1.ads)`:
  
! ``GNAT.SHA1`` (:file:`g-sha1.ads`)
! ==================================
  
  .. index:: GNAT.SHA1 (g-sha1.ads)
  
*************** in RFC 2104 and FIPS PUB 198.
*** 1518,1525 ****
  
  .. _`GNAT.SHA224_(g-sha224.ads)`:
  
! `GNAT.SHA224` (:file:`g-sha224.ads`)
! ====================================
  
  .. index:: GNAT.SHA224 (g-sha224.ads)
  
--- 1586,1593 ----
  
  .. _`GNAT.SHA224_(g-sha224.ads)`:
  
! ``GNAT.SHA224`` (:file:`g-sha224.ads`)
! ======================================
  
  .. index:: GNAT.SHA224 (g-sha224.ads)
  
*************** in RFC 2104 and FIPS PUB 198.
*** 1531,1538 ****
  
  .. _`GNAT.SHA256_(g-sha256.ads)`:
  
! `GNAT.SHA256` (:file:`g-sha256.ads`)
! ====================================
  
  .. index:: GNAT.SHA256 (g-sha256.ads)
  
--- 1599,1606 ----
  
  .. _`GNAT.SHA256_(g-sha256.ads)`:
  
! ``GNAT.SHA256`` (:file:`g-sha256.ads`)
! ======================================
  
  .. index:: GNAT.SHA256 (g-sha256.ads)
  
*************** in RFC 2104 and FIPS PUB 198.
*** 1544,1551 ****
  
  .. _`GNAT.SHA384_(g-sha384.ads)`:
  
! `GNAT.SHA384` (:file:`g-sha384.ads`)
! ====================================
  
  .. index:: GNAT.SHA384 (g-sha384.ads)
  
--- 1612,1619 ----
  
  .. _`GNAT.SHA384_(g-sha384.ads)`:
  
! ``GNAT.SHA384`` (:file:`g-sha384.ads`)
! ======================================
  
  .. index:: GNAT.SHA384 (g-sha384.ads)
  
*************** in RFC 2104 and FIPS PUB 198.
*** 1557,1564 ****
  
  .. _`GNAT.SHA512_(g-sha512.ads)`:
  
! `GNAT.SHA512` (:file:`g-sha512.ads`)
! ====================================
  
  .. index:: GNAT.SHA512 (g-sha512.ads)
  
--- 1625,1632 ----
  
  .. _`GNAT.SHA512_(g-sha512.ads)`:
  
! ``GNAT.SHA512`` (:file:`g-sha512.ads`)
! ======================================
  
  .. index:: GNAT.SHA512 (g-sha512.ads)
  
*************** in RFC 2104 and FIPS PUB 198.
*** 1570,1577 ****
  
  .. _`GNAT.Signals_(g-signal.ads)`:
  
! `GNAT.Signals` (:file:`g-signal.ads`)
! =====================================
  
  .. index:: GNAT.Signals (g-signal.ads)
  
--- 1638,1645 ----
  
  .. _`GNAT.Signals_(g-signal.ads)`:
  
! ``GNAT.Signals`` (:file:`g-signal.ads`)
! =======================================
  
  .. index:: GNAT.Signals (g-signal.ads)
  
*************** targets.
*** 1582,1589 ****
  
  .. _`GNAT.Sockets_(g-socket.ads)`:
  
! `GNAT.Sockets` (:file:`g-socket.ads`)
! =====================================
  
  .. index:: GNAT.Sockets (g-socket.ads)
  
--- 1650,1657 ----
  
  .. _`GNAT.Sockets_(g-socket.ads)`:
  
! ``GNAT.Sockets`` (:file:`g-socket.ads`)
! =======================================
  
  .. index:: GNAT.Sockets (g-socket.ads)
  
*************** targets.
*** 1591,1604 ****
  
  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)`:
  
! `GNAT.Source_Info` (:file:`g-souinf.ads`)
! =========================================
  
  .. index:: GNAT.Source_Info (g-souinf.ads)
  
--- 1659,1672 ----
  
  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)`:
  
! ``GNAT.Source_Info`` (:file:`g-souinf.ads`)
! ===========================================
  
  .. index:: GNAT.Source_Info (g-souinf.ads)
  
*************** the LynxOS cross port.
*** 1607,1618 ****
  Provides subprograms that give access to source code information known at
  compile time, such as the current file name and line number. Also provides
  subprograms yielding the date and time of the current compilation (like the
! C macros `__DATE__` and `__TIME__`)
  
  .. _`GNAT.Spelling_Checker_(g-speche.ads)`:
  
! `GNAT.Spelling_Checker` (:file:`g-speche.ads`)
! ==============================================
  
  .. index:: GNAT.Spelling_Checker (g-speche.ads)
  
--- 1675,1686 ----
  Provides subprograms that give access to source code information known at
  compile time, such as the current file name and line number. Also provides
  subprograms yielding the date and time of the current compilation (like the
! C macros ``__DATE__`` and ``__TIME__``)
  
  .. _`GNAT.Spelling_Checker_(g-speche.ads)`:
  
! ``GNAT.Spelling_Checker`` (:file:`g-speche.ads`)
! ================================================
  
  .. index:: GNAT.Spelling_Checker (g-speche.ads)
  
*************** near misspelling of another string.
*** 1623,1630 ****
  
  .. _`GNAT.Spelling_Checker_Generic_(g-spchge.ads)`:
  
! `GNAT.Spelling_Checker_Generic` (:file:`g-spchge.ads`)
! ======================================================
  
  .. index:: GNAT.Spelling_Checker_Generic (g-spchge.ads)
  
--- 1691,1698 ----
  
  .. _`GNAT.Spelling_Checker_Generic_(g-spchge.ads)`:
  
! ``GNAT.Spelling_Checker_Generic`` (:file:`g-spchge.ads`)
! ========================================================
  
  .. index:: GNAT.Spelling_Checker_Generic (g-spchge.ads)
  
*************** string.
*** 1636,1643 ****
  
  .. _`GNAT.Spitbol.Patterns_(g-spipat.ads)`:
  
! `GNAT.Spitbol.Patterns` (:file:`g-spipat.ads`)
! ==============================================
  
  .. index:: GNAT.Spitbol.Patterns (g-spipat.ads)
  
--- 1704,1711 ----
  
  .. _`GNAT.Spitbol.Patterns_(g-spipat.ads)`:
  
! ``GNAT.Spitbol.Patterns`` (:file:`g-spipat.ads`)
! ================================================
  
  .. index:: GNAT.Spitbol.Patterns (g-spipat.ads)
  
*************** efficient algorithm developed by Robert
*** 1652,1659 ****
  
  .. _`GNAT.Spitbol_(g-spitbo.ads)`:
  
! `GNAT.Spitbol` (:file:`g-spitbo.ads`)
! =====================================
  
  .. index:: GNAT.Spitbol (g-spitbo.ads)
  
--- 1720,1727 ----
  
  .. _`GNAT.Spitbol_(g-spitbo.ads)`:
  
! ``GNAT.Spitbol`` (:file:`g-spitbo.ads`)
! =======================================
  
  .. index:: GNAT.Spitbol (g-spitbo.ads)
  
*************** the SNOBOL4 TABLE function.
*** 1667,1674 ****
  
  .. _`GNAT.Spitbol.Table_Boolean_(g-sptabo.ads)`:
  
! `GNAT.Spitbol.Table_Boolean` (:file:`g-sptabo.ads`)
! ===================================================
  
  .. index:: GNAT.Spitbol.Table_Boolean (g-sptabo.ads)
  
--- 1735,1742 ----
  
  .. _`GNAT.Spitbol.Table_Boolean_(g-sptabo.ads)`:
  
! ``GNAT.Spitbol.Table_Boolean`` (:file:`g-sptabo.ads`)
! =====================================================
  
  .. index:: GNAT.Spitbol.Table_Boolean (g-sptabo.ads)
  
*************** the SNOBOL4 TABLE function.
*** 1676,1689 ****
  
  .. index:: SPITBOL Tables
  
! A library level of instantiation of `GNAT.Spitbol.Patterns.Table`
! for type `Standard.Boolean`, giving an implementation of sets of
  string values.
  
  .. _`GNAT.Spitbol.Table_Integer_(g-sptain.ads)`:
  
! `GNAT.Spitbol.Table_Integer` (:file:`g-sptain.ads`)
! ===================================================
  
  .. index:: GNAT.Spitbol.Table_Integer (g-sptain.ads)
  
--- 1744,1757 ----
  
  .. index:: SPITBOL Tables
  
! A library level of instantiation of ``GNAT.Spitbol.Patterns.Table``
! for type ``Standard.Boolean``, giving an implementation of sets of
  string values.
  
  .. _`GNAT.Spitbol.Table_Integer_(g-sptain.ads)`:
  
! ``GNAT.Spitbol.Table_Integer`` (:file:`g-sptain.ads`)
! =====================================================
  
  .. index:: GNAT.Spitbol.Table_Integer (g-sptain.ads)
  
*************** string values.
*** 1693,1706 ****
  
  .. index:: SPITBOL Tables
  
! A library level of instantiation of `GNAT.Spitbol.Patterns.Table`
! for type `Standard.Integer`, giving an implementation of maps
  from string to integer values.
  
  .. _`GNAT.Spitbol.Table_VString_(g-sptavs.ads)`:
  
! `GNAT.Spitbol.Table_VString` (:file:`g-sptavs.ads`)
! ===================================================
  
  .. index:: GNAT.Spitbol.Table_VString (g-sptavs.ads)
  
--- 1761,1774 ----
  
  .. index:: SPITBOL Tables
  
! A library level of instantiation of ``GNAT.Spitbol.Patterns.Table``
! for type ``Standard.Integer``, giving an implementation of maps
  from string to integer values.
  
  .. _`GNAT.Spitbol.Table_VString_(g-sptavs.ads)`:
  
! ``GNAT.Spitbol.Table_VString`` (:file:`g-sptavs.ads`)
! =====================================================
  
  .. index:: GNAT.Spitbol.Table_VString (g-sptavs.ads)
  
*************** from string to integer values.
*** 1710,1723 ****
  
  .. index:: SPITBOL Tables
  
! A library level of instantiation of `GNAT.Spitbol.Patterns.Table` for
  a variable length string type, giving an implementation of general
  maps from strings to strings.
  
  .. _`GNAT.SSE_(g-sse.ads)`:
  
! `GNAT.SSE` (:file:`g-sse.ads`)
! ==============================
  
  .. index:: GNAT.SSE (g-sse.ads)
  
--- 1778,1791 ----
  
  .. index:: SPITBOL Tables
  
! A library level of instantiation of ``GNAT.Spitbol.Patterns.Table`` for
  a variable length string type, giving an implementation of general
  maps from strings to strings.
  
  .. _`GNAT.SSE_(g-sse.ads)`:
  
! ``GNAT.SSE`` (:file:`g-sse.ads`)
! ================================
  
  .. index:: GNAT.SSE (g-sse.ads)
  
*************** introduction to the binding contents and
*** 1728,1735 ****
  
  .. _`GNAT.SSE.Vector_Types_(g-ssvety.ads)`:
  
! `GNAT.SSE.Vector_Types` (:file:`g-ssvety.ads`)
! ==============================================
  
  .. index:: GNAT.SSE.Vector_Types (g-ssvety.ads)
  
--- 1796,1803 ----
  
  .. _`GNAT.SSE.Vector_Types_(g-ssvety.ads)`:
  
! ``GNAT.SSE.Vector_Types`` (:file:`g-ssvety.ads`)
! ================================================
  
  .. index:: GNAT.SSE.Vector_Types (g-ssvety.ads)
  
*************** SSE vector types for use with SSE relate
*** 1737,1744 ****
  
  .. _`GNAT.String_Hash(g-strhas.ads)`:
  
! `GNAT.String_Hash` (:file:`g-strhas.ads`)
! =========================================
  
  .. index:: GNAT.String_Hash (g-strhas.ads)
  
--- 1805,1812 ----
  
  .. _`GNAT.String_Hash(g-strhas.ads)`:
  
! ``GNAT.String_Hash`` (:file:`g-strhas.ads`)
! ===========================================
  
  .. index:: GNAT.String_Hash (g-strhas.ads)
  
*************** type and the hash result type are parame
*** 1749,1756 ****
  
  .. _`GNAT.Strings_(g-string.ads)`:
  
! `GNAT.Strings` (:file:`g-string.ads`)
! =====================================
  
  .. index:: GNAT.Strings (g-string.ads)
  
--- 1817,1824 ----
  
  .. _`GNAT.Strings_(g-string.ads)`:
  
! ``GNAT.Strings`` (:file:`g-string.ads`)
! =======================================
  
  .. index:: GNAT.Strings (g-string.ads)
  
*************** defines a string access and an array of
*** 1759,1766 ****
  
  .. _`GNAT.String_Split_(g-strspl.ads)`:
  
! `GNAT.String_Split` (:file:`g-strspl.ads`)
! ==========================================
  
  .. index:: GNAT.String_Split (g-strspl.ads)
  
--- 1827,1834 ----
  
  .. _`GNAT.String_Split_(g-strspl.ads)`:
  
! ``GNAT.String_Split`` (:file:`g-strspl.ads`)
! ============================================
  
  .. index:: GNAT.String_Split (g-strspl.ads)
  
*************** defines a string access and an array of
*** 1769,1780 ****
  Useful string manipulation routines: given a set of separators, split
  a string wherever the separators appear, and provide direct access
  to the resulting slices. This package is instantiated from
! `GNAT.Array_Split`.
  
  .. _`GNAT.Table_(g-table.ads)`:
  
! `GNAT.Table` (:file:`g-table.ads`)
! ==================================
  
  .. index:: GNAT.Table (g-table.ads)
  
--- 1837,1848 ----
  Useful string manipulation routines: given a set of separators, split
  a string wherever the separators appear, and provide direct access
  to the resulting slices. This package is instantiated from
! ``GNAT.Array_Split``.
  
  .. _`GNAT.Table_(g-table.ads)`:
  
! ``GNAT.Table`` (:file:`g-table.ads`)
! ====================================
  
  .. index:: GNAT.Table (g-table.ads)
  
*************** to the resulting slices. This package is
*** 1785,1799 ****
  A generic package providing a single dimension array abstraction where the
  length of the array can be dynamically modified.
  
! This package provides a facility similar to that of `GNAT.Dynamic_Tables`,
  except that this package declares a single instance of the table type,
! while an instantiation of `GNAT.Dynamic_Tables` creates a type that can be
  used to define dynamic instances of the table.
  
  .. _`GNAT.Task_Lock_(g-tasloc.ads)`:
  
! `GNAT.Task_Lock` (:file:`g-tasloc.ads`)
! =======================================
  
  .. index:: GNAT.Task_Lock (g-tasloc.ads)
  
--- 1853,1867 ----
  A generic package providing a single dimension array abstraction where the
  length of the array can be dynamically modified.
  
! This package provides a facility similar to that of ``GNAT.Dynamic_Tables``,
  except that this package declares a single instance of the table type,
! while an instantiation of ``GNAT.Dynamic_Tables`` creates a type that can be
  used to define dynamic instances of the table.
  
  .. _`GNAT.Task_Lock_(g-tasloc.ads)`:
  
! ``GNAT.Task_Lock`` (:file:`g-tasloc.ads`)
! =========================================
  
  .. index:: GNAT.Task_Lock (g-tasloc.ads)
  
*************** between tasks is very rarely expected.
*** 1809,1816 ****
  
  .. _`GNAT.Time_Stamp_(g-timsta.ads)`:
  
! `GNAT.Time_Stamp` (:file:`g-timsta.ads`)
! ========================================
  
  .. index:: GNAT.Time_Stamp (g-timsta.ads)
  
--- 1877,1884 ----
  
  .. _`GNAT.Time_Stamp_(g-timsta.ads)`:
  
! ``GNAT.Time_Stamp`` (:file:`g-timsta.ads`)
! ==========================================
  
  .. index:: GNAT.Time_Stamp (g-timsta.ads)
  
*************** routine with minimal code and there are
*** 1824,1831 ****
  
  .. _`GNAT.Threads_(g-thread.ads)`:
  
! `GNAT.Threads` (:file:`g-thread.ads`)
! =====================================
  
  .. index:: GNAT.Threads (g-thread.ads)
  
--- 1892,1899 ----
  
  .. _`GNAT.Threads_(g-thread.ads)`:
  
! ``GNAT.Threads`` (:file:`g-thread.ads`)
! =======================================
  
  .. index:: GNAT.Threads (g-thread.ads)
  
*************** environment which then accesses Ada code
*** 1840,1847 ****
  
  .. _`GNAT.Traceback_(g-traceb.ads)`:
  
! `GNAT.Traceback` (:file:`g-traceb.ads`)
! =======================================
  
  .. index:: GNAT.Traceback (g-traceb.ads)
  
--- 1908,1915 ----
  
  .. _`GNAT.Traceback_(g-traceb.ads)`:
  
! ``GNAT.Traceback`` (:file:`g-traceb.ads`)
! =========================================
  
  .. index:: GNAT.Traceback (g-traceb.ads)
  
*************** in various debugging situations.
*** 1852,1859 ****
  
  .. _`GNAT.Traceback.Symbolic_(g-trasym.ads)`:
  
! `GNAT.Traceback.Symbolic` (:file:`g-trasym.ads`)
! ================================================
  
  .. index:: GNAT.Traceback.Symbolic (g-trasym.ads)
  
--- 1920,1927 ----
  
  .. _`GNAT.Traceback.Symbolic_(g-trasym.ads)`:
  
! ``GNAT.Traceback.Symbolic`` (:file:`g-trasym.ads`)
! ==================================================
  
  .. index:: GNAT.Traceback.Symbolic (g-trasym.ads)
  
*************** in various debugging situations.
*** 1861,1877 ****
  
  .. _`GNAT.UTF_32_(g-table.ads)`:
  
! `GNAT.UTF_32` (:file:`g-table.ads`)
! ===================================
  
  .. index:: GNAT.UTF_32 (g-table.ads)
  
  .. index:: Wide character codes
  
  This is a package intended to be used in conjunction with the
! `Wide_Character` type in Ada 95 and the
! `Wide_Wide_Character` type in Ada 2005 (available
! in `GNAT` in Ada 2005 mode). This package contains
  Unicode categorization routines, as well as lexical
  categorization routines corresponding to the Ada 2005
  lexical rules for identifiers and strings, and also a
--- 1929,1945 ----
  
  .. _`GNAT.UTF_32_(g-table.ads)`:
  
! ``GNAT.UTF_32`` (:file:`g-table.ads`)
! =====================================
  
  .. index:: GNAT.UTF_32 (g-table.ads)
  
  .. index:: Wide character codes
  
  This is a package intended to be used in conjunction with the
! ``Wide_Character`` type in Ada 95 and the
! ``Wide_Wide_Character`` type in Ada 2005 (available
! in ``GNAT`` in Ada 2005 mode). This package contains
  Unicode categorization routines, as well as lexical
  categorization routines corresponding to the Ada 2005
  lexical rules for identifiers and strings, and also a
*************** the Ada 2005 rules for identifier equiva
*** 1880,1887 ****
  
  .. _`GNAT.Wide_Spelling_Checker_(g-u3spch.ads)`:
  
! `GNAT.Wide_Spelling_Checker` (:file:`g-u3spch.ads`)
! ===================================================
  
  .. index:: GNAT.Wide_Spelling_Checker (g-u3spch.ads)
  
--- 1948,1955 ----
  
  .. _`GNAT.Wide_Spelling_Checker_(g-u3spch.ads)`:
  
! ``GNAT.Wide_Spelling_Checker`` (:file:`g-u3spch.ads`)
! =====================================================
  
  .. index:: GNAT.Wide_Spelling_Checker (g-u3spch.ads)
  
*************** using the UTF_32_String type defined in
*** 1893,1900 ****
  
  .. _`GNAT.Wide_Spelling_Checker_(g-wispch.ads)`:
  
! `GNAT.Wide_Spelling_Checker` (:file:`g-wispch.ads`)
! ===================================================
  
  .. index:: GNAT.Wide_Spelling_Checker (g-wispch.ads)
  
--- 1961,1968 ----
  
  .. _`GNAT.Wide_Spelling_Checker_(g-wispch.ads)`:
  
! ``GNAT.Wide_Spelling_Checker`` (:file:`g-wispch.ads`)
! =====================================================
  
  .. index:: GNAT.Wide_Spelling_Checker (g-wispch.ads)
  
*************** near misspelling of another wide string.
*** 1905,1912 ****
  
  .. _`GNAT.Wide_String_Split_(g-wistsp.ads)`:
  
! `GNAT.Wide_String_Split` (:file:`g-wistsp.ads`)
! ===============================================
  
  .. index:: GNAT.Wide_String_Split (g-wistsp.ads)
  
--- 1973,1980 ----
  
  .. _`GNAT.Wide_String_Split_(g-wistsp.ads)`:
  
! ``GNAT.Wide_String_Split`` (:file:`g-wistsp.ads`)
! =================================================
  
  .. index:: GNAT.Wide_String_Split (g-wistsp.ads)
  
*************** near misspelling of another wide string.
*** 1915,1926 ****
  Useful wide string manipulation routines: given a set of separators, split
  a wide string wherever the separators appear, and provide direct access
  to the resulting slices. This package is instantiated from
! `GNAT.Array_Split`.
  
  .. _`GNAT.Wide_Wide_Spelling_Checker_(g-zspche.ads)`:
  
! `GNAT.Wide_Wide_Spelling_Checker` (:file:`g-zspche.ads`)
! ========================================================
  
  .. index:: GNAT.Wide_Wide_Spelling_Checker (g-zspche.ads)
  
--- 1983,1994 ----
  Useful wide string manipulation routines: given a set of separators, split
  a wide string wherever the separators appear, and provide direct access
  to the resulting slices. This package is instantiated from
! ``GNAT.Array_Split``.
  
  .. _`GNAT.Wide_Wide_Spelling_Checker_(g-zspche.ads)`:
  
! ``GNAT.Wide_Wide_Spelling_Checker`` (:file:`g-zspche.ads`)
! ==========================================================
  
  .. index:: GNAT.Wide_Wide_Spelling_Checker (g-zspche.ads)
  
*************** near misspelling of another wide wide st
*** 1931,1938 ****
  
  .. _`GNAT.Wide_Wide_String_Split_(g-zistsp.ads)`:
  
! `GNAT.Wide_Wide_String_Split` (:file:`g-zistsp.ads`)
! ====================================================
  
  .. index:: GNAT.Wide_Wide_String_Split (g-zistsp.ads)
  
--- 1999,2006 ----
  
  .. _`GNAT.Wide_Wide_String_Split_(g-zistsp.ads)`:
  
! ``GNAT.Wide_Wide_String_Split`` (:file:`g-zistsp.ads`)
! ======================================================
  
  .. index:: GNAT.Wide_Wide_String_Split (g-zistsp.ads)
  
*************** near misspelling of another wide wide st
*** 1941,1952 ****
  Useful wide wide string manipulation routines: given a set of separators, split
  a wide wide string wherever the separators appear, and provide direct access
  to the resulting slices. This package is instantiated from
! `GNAT.Array_Split`.
  
  .. _`Interfaces.C.Extensions_(i-cexten.ads)`:
  
! `Interfaces.C.Extensions` (:file:`i-cexten.ads`)
! ================================================
  
  .. index:: Interfaces.C.Extensions (i-cexten.ads)
  
--- 2009,2020 ----
  Useful wide wide string manipulation routines: given a set of separators, split
  a wide wide string wherever the separators appear, and provide direct access
  to the resulting slices. This package is instantiated from
! ``GNAT.Array_Split``.
  
  .. _`Interfaces.C.Extensions_(i-cexten.ads)`:
  
! ``Interfaces.C.Extensions`` (:file:`i-cexten.ads`)
! ==================================================
  
  .. index:: Interfaces.C.Extensions (i-cexten.ads)
  
*************** to C libraries.
*** 1956,1963 ****
  
  .. _`Interfaces.C.Streams_(i-cstrea.ads)`:
  
! `Interfaces.C.Streams` (:file:`i-cstrea.ads`)
! =============================================
  
  .. index:: Interfaces.C.Streams (i-cstrea.ads)
  
--- 2024,2031 ----
  
  .. _`Interfaces.C.Streams_(i-cstrea.ads)`:
  
! ``Interfaces.C.Streams`` (:file:`i-cstrea.ads`)
! ===============================================
  
  .. index:: Interfaces.C.Streams (i-cstrea.ads)
  
*************** on C streams.
*** 1968,1975 ****
  
  .. _`Interfaces.Packed_Decimal_(i-pacdec.ads)`:
  
! `Interfaces.Packed_Decimal` (:file:`i-pacdec.ads`)
! ==================================================
  
  .. index:: Interfaces.Packed_Decimal (i-pacdec.ads)
  
--- 2036,2043 ----
  
  .. _`Interfaces.Packed_Decimal_(i-pacdec.ads)`:
  
! ``Interfaces.Packed_Decimal`` (:file:`i-pacdec.ads`)
! ====================================================
  
  .. index:: Interfaces.Packed_Decimal (i-pacdec.ads)
  
*************** mainframes.
*** 1983,1990 ****
  
  .. _`Interfaces.VxWorks_(i-vxwork.ads)`:
  
! `Interfaces.VxWorks` (:file:`i-vxwork.ads`)
! ===========================================
  
  .. index:: Interfaces.VxWorks (i-vxwork.ads)
  
--- 2051,2058 ----
  
  .. _`Interfaces.VxWorks_(i-vxwork.ads)`:
  
! ``Interfaces.VxWorks`` (:file:`i-vxwork.ads`)
! =============================================
  
  .. index:: Interfaces.VxWorks (i-vxwork.ads)
  
*************** VxWorks hardware interrupt facilities.
*** 1998,2005 ****
  
  .. _`Interfaces.VxWorks.Int_Connection_(i-vxinco.ads)`:
  
! `Interfaces.VxWorks.Int_Connection` (:file:`i-vxinco.ads`)
! ==========================================================
  
  .. index:: Interfaces.VxWorks.Int_Connection (i-vxinco.ads)
  
--- 2066,2073 ----
  
  .. _`Interfaces.VxWorks.Int_Connection_(i-vxinco.ads)`:
  
! ``Interfaces.VxWorks.Int_Connection`` (:file:`i-vxinco.ads`)
! ============================================================
  
  .. index:: Interfaces.VxWorks.Int_Connection (i-vxinco.ads)
  
*************** handlers.
*** 2013,2020 ****
  
  .. _`Interfaces.VxWorks.IO_(i-vxwoio.ads)`:
  
! `Interfaces.VxWorks.IO` (:file:`i-vxwoio.ads`)
! ==============================================
  
  .. index:: Interfaces.VxWorks.IO (i-vxwoio.ads)
  
--- 2081,2088 ----
  
  .. _`Interfaces.VxWorks.IO_(i-vxwoio.ads)`:
  
! ``Interfaces.VxWorks.IO`` (:file:`i-vxwoio.ads`)
! ================================================
  
  .. index:: Interfaces.VxWorks.IO (i-vxwoio.ads)
  
*************** to enable the use of Get_Immediate under
*** 2033,2040 ****
  
  .. _`System.Address_Image_(s-addima.ads)`:
  
! `System.Address_Image` (:file:`s-addima.ads`)
! =============================================
  
  .. index:: System.Address_Image (s-addima.ads)
  
--- 2101,2108 ----
  
  .. _`System.Address_Image_(s-addima.ads)`:
  
! ``System.Address_Image`` (:file:`s-addima.ads`)
! ===============================================
  
  .. index:: System.Address_Image (s-addima.ads)
  
*************** string which identifies an address.
*** 2048,2055 ****
  
  .. _`System.Assertions_(s-assert.ads)`:
  
! `System.Assertions` (:file:`s-assert.ads`)
! ==========================================
  
  .. index:: System.Assertions (s-assert.ads)
  
--- 2116,2123 ----
  
  .. _`System.Assertions_(s-assert.ads)`:
  
! ``System.Assertions`` (:file:`s-assert.ads`)
! ============================================
  
  .. index:: System.Assertions (s-assert.ads)
  
*************** is used internally to raise this asserti
*** 2063,2070 ****
  
  .. _`System.Atomic_Counters_(s-atocou.ads)`:
  
! `System.Atomic_Counters` (:file:`s-atocou.ads`)
! ===============================================
  
  .. index:: System.Atomic_Counters (s-atocou.ads)
  
--- 2131,2138 ----
  
  .. _`System.Atomic_Counters_(s-atocou.ads)`:
  
! ``System.Atomic_Counters`` (:file:`s-atocou.ads`)
! =================================================
  
  .. index:: System.Atomic_Counters (s-atocou.ads)
  
*************** x86, and x86_64 platforms.
*** 2077,2084 ****
  
  .. _`System.Memory_(s-memory.ads)`:
  
! `System.Memory` (:file:`s-memory.ads`)
! ======================================
  
  .. index:: System.Memory (s-memory.ads)
  
--- 2145,2152 ----
  
  .. _`System.Memory_(s-memory.ads)`:
  
! ``System.Memory`` (:file:`s-memory.ads`)
! ========================================
  
  .. index:: System.Memory (s-memory.ads)
  
*************** It also provides a reallocation interfac
*** 2091,2102 ****
  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 level allocation uses (for
! example see the body of `GNAT.Tables`).
  
  .. _`System.Multiprocessors_(s-multip.ads)`:
  
! `System.Multiprocessors` (:file:`s-multip.ads`)
! ===============================================
  
  .. index:: System.Multiprocessors (s-multip.ads)
  
--- 2159,2170 ----
  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 level allocation uses (for
! example see the body of ``GNAT.Tables``).
  
  .. _`System.Multiprocessors_(s-multip.ads)`:
  
! ``System.Multiprocessors`` (:file:`s-multip.ads`)
! =================================================
  
  .. index:: System.Multiprocessors (s-multip.ads)
  
*************** technically an implementation-defined ad
*** 2108,2115 ****
  
  .. _`System.Multiprocessors.Dispatching_Domains_(s-mudido.ads)`:
  
! `System.Multiprocessors.Dispatching_Domains` (:file:`s-mudido.ads`)
! ===================================================================
  
  .. index:: System.Multiprocessors.Dispatching_Domains (s-mudido.ads)
  
--- 2176,2183 ----
  
  .. _`System.Multiprocessors.Dispatching_Domains_(s-mudido.ads)`:
  
! ``System.Multiprocessors.Dispatching_Domains`` (:file:`s-mudido.ads`)
! =====================================================================
  
  .. index:: System.Multiprocessors.Dispatching_Domains (s-mudido.ads)
  
*************** technically an implementation-defined ad
*** 2121,2128 ****
  
  .. _`System.Partition_Interface_(s-parint.ads)`:
  
! `System.Partition_Interface` (:file:`s-parint.ads`)
! ===================================================
  
  .. index:: System.Partition_Interface (s-parint.ads)
  
--- 2189,2196 ----
  
  .. _`System.Partition_Interface_(s-parint.ads)`:
  
! ``System.Partition_Interface`` (:file:`s-parint.ads`)
! =====================================================
  
  .. index:: System.Partition_Interface (s-parint.ads)
  
*************** technically an implementation-defined ad
*** 2130,2141 ****
  
  This package provides facilities for partition interfacing.  It
  is used primarily in a distribution context when using Annex E
! with `GLADE`.
  
  .. _`System.Pool_Global_(s-pooglo.ads)`:
  
! `System.Pool_Global` (:file:`s-pooglo.ads`)
! ===========================================
  
  .. index:: System.Pool_Global (s-pooglo.ads)
  
--- 2198,2209 ----
  
  This package provides facilities for partition interfacing.  It
  is used primarily in a distribution context when using Annex E
! with ``GLADE``.
  
  .. _`System.Pool_Global_(s-pooglo.ads)`:
  
! ``System.Pool_Global`` (:file:`s-pooglo.ads`)
! =============================================
  
  .. index:: System.Pool_Global (s-pooglo.ads)
  
*************** do any automatic reclamation.
*** 2150,2157 ****
  
  .. _`System.Pool_Local_(s-pooloc.ads)`:
  
! `System.Pool_Local` (:file:`s-pooloc.ads`)
! ==========================================
  
  .. index:: System.Pool_Local (s-pooloc.ads)
  
--- 2218,2225 ----
  
  .. _`System.Pool_Local_(s-pooloc.ads)`:
  
! ``System.Pool_Local`` (:file:`s-pooloc.ads`)
! ============================================
  
  .. index:: System.Pool_Local (s-pooloc.ads)
  
*************** be freed automatically when the pool is
*** 2166,2173 ****
  
  .. _`System.Restrictions_(s-restri.ads)`:
  
! `System.Restrictions` (:file:`s-restri.ads`)
! ============================================
  
  .. index:: System.Restrictions (s-restri.ads)
  
--- 2234,2241 ----
  
  .. _`System.Restrictions_(s-restri.ads)`:
  
! ``System.Restrictions`` (:file:`s-restri.ads`)
! ==============================================
  
  .. index:: System.Restrictions (s-restri.ads)
  
*************** are violated by one or more packages in
*** 2182,2189 ****
  
  .. _`System.Rident_(s-rident.ads)`:
  
! `System.Rident` (:file:`s-rident.ads`)
! ======================================
  
  .. index:: System.Rident (s-rident.ads)
  
--- 2250,2257 ----
  
  .. _`System.Rident_(s-rident.ads)`:
  
! ``System.Rident`` (:file:`s-rident.ads`)
! ========================================
  
  .. index:: System.Rident (s-rident.ads)
  
*************** are violated by one or more packages in
*** 2192,2205 ****
  This package provides definitions of the restrictions
  identifiers supported by GNAT, and also the format of
  the restrictions provided in package System.Restrictions.
! It is not normally necessary to `with` this generic package
  since the necessary instantiation is included in
  package System.Restrictions.
  
  .. _`System.Strings.Stream_Ops_(s-ststop.ads)`:
  
! `System.Strings.Stream_Ops` (:file:`s-ststop.ads`)
! ==================================================
  
  .. index:: System.Strings.Stream_Ops (s-ststop.ads)
  
--- 2260,2273 ----
  This package provides definitions of the restrictions
  identifiers supported by GNAT, and also the format of
  the restrictions provided in package System.Restrictions.
! It is not normally necessary to ``with`` this generic package
  since the necessary instantiation is included in
  package System.Restrictions.
  
  .. _`System.Strings.Stream_Ops_(s-ststop.ads)`:
  
! ``System.Strings.Stream_Ops`` (:file:`s-ststop.ads`)
! ====================================================
  
  .. index:: System.Strings.Stream_Ops (s-ststop.ads)
  
*************** package can be used directly by applicat
*** 2214,2221 ****
  
  .. _`System.Unsigned_Types_(s-unstyp.ads)`:
  
! `System.Unsigned_Types` (:file:`s-unstyp.ads`)
! ==============================================
  
  .. index:: System.Unsigned_Types (s-unstyp.ads)
  
--- 2282,2289 ----
  
  .. _`System.Unsigned_Types_(s-unstyp.ads)`:
  
! ``System.Unsigned_Types`` (:file:`s-unstyp.ads`)
! ================================================
  
  .. index:: System.Unsigned_Types (s-unstyp.ads)
  
*************** used by the compiler in connection with
*** 2227,2234 ****
  
  .. _`System.Wch_Cnv_(s-wchcnv.ads)`:
  
! `System.Wch_Cnv` (:file:`s-wchcnv.ads`)
! =======================================
  
  .. index:: System.Wch_Cnv (s-wchcnv.ads)
  
--- 2295,2302 ----
  
  .. _`System.Wch_Cnv_(s-wchcnv.ads)`:
  
! ``System.Wch_Cnv`` (:file:`s-wchcnv.ads`)
! =========================================
  
  .. index:: System.Wch_Cnv (s-wchcnv.ads)
  
*************** used by the compiler in connection with
*** 2240,2257 ****
  
  This package provides routines for converting between
  wide and wide wide characters and a representation as a value of type
! `Standard.String`, using a specified wide character
  encoding method.  It uses definitions in
! package `System.Wch_Con`.
  
  .. _`System.Wch_Con_(s-wchcon.ads)`:
  
! `System.Wch_Con` (:file:`s-wchcon.ads`)
! =======================================
  
  .. index:: System.Wch_Con (s-wchcon.ads)
  
  This package provides definitions and descriptions of
  the various methods used for encoding wide characters
  in ordinary strings.  These definitions are used by
! the package `System.Wch_Cnv`.
--- 2308,2325 ----
  
  This package provides routines for converting between
  wide and wide wide characters and a representation as a value of type
! ``Standard.String``, using a specified wide character
  encoding method.  It uses definitions in
! package ``System.Wch_Con``.
  
  .. _`System.Wch_Con_(s-wchcon.ads)`:
  
! ``System.Wch_Con`` (:file:`s-wchcon.ads`)
! =========================================
  
  .. index:: System.Wch_Con (s-wchcon.ads)
  
  This package provides definitions and descriptions of
  the various methods used for encoding wide characters
  in ordinary strings.  These definitions are used by
! the package ``System.Wch_Cnv``.
diff -Nrcpad gcc-7.3.0/gcc/ada/doc/gnat_rm/the_implementation_of_standard_i_o.rst gcc-8.1.0/gcc/ada/doc/gnat_rm/the_implementation_of_standard_i_o.rst
*** gcc-7.3.0/gcc/ada/doc/gnat_rm/the_implementation_of_standard_i_o.rst	Fri Jan 13 11:23:42 2017
--- gcc-8.1.0/gcc/ada/doc/gnat_rm/the_implementation_of_standard_i_o.rst	Fri Sep  8 12:34:54 2017
*************** are implemented using the C
*** 68,76 ****
  library streams facility; where
  
  *
!   All files are opened using `fopen`.
  *
!   All input/output operations use `fread`/`fwrite`.
  
  There is no internal buffering of any kind at the Ada library level. The only
  buffering is that provided at the system level in the implementation of the
--- 68,76 ----
  library streams facility; where
  
  *
!   All files are opened using ``fopen``.
  *
!   All input/output operations use ``fread``/`fwrite`.
  
  There is no internal buffering of any kind at the Ada library level. The only
  buffering is that provided at the system level in the implementation of the
*************** The records of a Direct_IO file are simp
*** 127,134 ****
  sequence, with the first record starting at offset zero, and subsequent
  records following.  There is no control information of any kind.  For
  example, if 32-bit integers are being written, each record takes
! 4-bytes, so the record at index `K` starts at offset
! (`K`-1)*4.
  
  There is no limit on the size of Direct_IO files, they are expanded as
  necessary to accommodate whatever records are written to the file.
--- 127,134 ----
  sequence, with the first record starting at offset zero, and subsequent
  records following.  There is no control information of any kind.  For
  example, if 32-bit integers are being written, each record takes
! 4-bytes, so the record at index ``K`` starts at offset
! (``K``-1)*4.
  
  There is no limit on the size of Direct_IO files, they are expanded as
  necessary to accommodate whatever records are written to the file.
*************** checking is performed on input.
*** 148,164 ****
  
  For the indefinite type case, the elements written consist of two
  parts.  First is the size of the data item, written as the memory image
! of a `Interfaces.C.size_t` value, followed by the memory image of
  the data value.  The resulting file can only be read using the same
  (unconstrained) type.  Normal assignment checks are performed on these
! read operations, and if these checks fail, `Data_Error` is
  raised.  In particular, in the array case, the lengths must match, and in
  the variant record case, if the variable for a particular read operation
  is constrained, the discriminants must match.
  
  Note that it is not possible to use Sequential_IO to write variable
  length array items, and then read the data back into different length
! arrays.  For example, the following will raise `Data_Error`:
  
  
  .. code-block:: ada
--- 148,164 ----
  
  For the indefinite type case, the elements written consist of two
  parts.  First is the size of the data item, written as the memory image
! of a ``Interfaces.C.size_t`` value, followed by the memory image of
  the data value.  The resulting file can only be read using the same
  (unconstrained) type.  Normal assignment checks are performed on these
! read operations, and if these checks fail, ``Data_Error`` is
  raised.  In particular, in the array case, the lengths must match, and in
  the variant record case, if the variable for a particular read operation
  is constrained, the discriminants must match.
  
  Note that it is not possible to use Sequential_IO to write variable
  length array items, and then read the data back into different length
! arrays.  For example, the following will raise ``Data_Error``:
  
  
  .. code-block:: ada
*************** arrays.  For example, the following will
*** 175,183 ****
  
  
  
! On some Ada implementations, this will print `hell`, but the program is
  clearly incorrect, since there is only one element in the file, and that
! element is the string `hello!`.
  
  In Ada 95 and Ada 2005, this kind of behavior can be legitimately achieved
  using Stream_IO, and this is the preferred mechanism.  In particular, the
--- 175,183 ----
  
  
  
! On some Ada implementations, this will print ``hell``, but the program is
  clearly incorrect, since there is only one element in the file, and that
! element is the string ``hello!``.
  
  In Ada 95 and Ada 2005, this kind of behavior can be legitimately achieved
  using Stream_IO, and this is the preferred mechanism.  In particular, the
*************** A canonical Text_IO file is defined as o
*** 202,224 ****
  conditions are met:
  
  *
!   The character `LF` is used only as a line mark, i.e., to mark the end
    of the line.
  
  *
!   The character `FF` is used only as a page mark, i.e., to mark the
    end of a page and consequently can appear only immediately following a
!   `LF` (line mark) character.
  
  *
!   The file ends with either `LF` (line mark) or `LF`-`FF`
    (line mark, page mark).  In the former case, the page mark is implicitly
    assumed to be present.
  
  A file written using Text_IO will be in canonical form provided that no
! explicit `LF` or `FF` characters are written using `Put`
! or `Put_Line`.  There will be no `FF` character at the end of
! the file unless an explicit `New_Page` operation was performed
  before closing the file.
  
  A canonical Text_IO file that is a regular file (i.e., not a device or a
--- 202,224 ----
  conditions are met:
  
  *
!   The character ``LF`` is used only as a line mark, i.e., to mark the end
    of the line.
  
  *
!   The character ``FF`` is used only as a page mark, i.e., to mark the
    end of a page and consequently can appear only immediately following a
!   ``LF`` (line mark) character.
  
  *
!   The file ends with either ``LF`` (line mark) or ``LF``-`FF`
    (line mark, page mark).  In the former case, the page mark is implicitly
    assumed to be present.
  
  A file written using Text_IO will be in canonical form provided that no
! explicit ``LF`` or ``FF`` characters are written using ``Put``
! or ``Put_Line``.  There will be no ``FF`` character at the end of
! the file unless an explicit ``New_Page`` operation was performed
  before closing the file.
  
  A canonical Text_IO file that is a regular file (i.e., not a device or a
*************** A text file that does not meet the requi
*** 230,253 ****
  file has one of the following:
  
  *
!   The file contains `FF` characters not immediately following a
!   `LF` character.
  
  *
!   The file contains `LF` or `FF` characters written by
!   `Put` or `Put_Line`, which are not logically considered to be
    line marks or page marks.
  
  *
!   The file ends in a character other than `LF` or `FF`,
    i.e., there is no explicit line mark or page mark at the end of the file.
  
  Text_IO can be used to read such non-standard text files but subprograms
  to do with line or page numbers do not have defined meanings.  In
! particular, a `FF` character that does not follow a `LF`
  character may or may not be treated as a page mark from the point of
! view of page and line numbering.  Every `LF` character is considered
! to end a line, and there is an implied `LF` character at the end of
  the file.
  
  .. _Stream_Pointer_Positioning:
--- 230,253 ----
  file has one of the following:
  
  *
!   The file contains ``FF`` characters not immediately following a
!   ``LF`` character.
  
  *
!   The file contains ``LF`` or ``FF`` characters written by
!   ``Put`` or ``Put_Line``, which are not logically considered to be
    line marks or page marks.
  
  *
!   The file ends in a character other than ``LF`` or ``FF``,
    i.e., there is no explicit line mark or page mark at the end of the file.
  
  Text_IO can be used to read such non-standard text files but subprograms
  to do with line or page numbers do not have defined meanings.  In
! particular, a ``FF`` character that does not follow a ``LF``
  character may or may not be treated as a page mark from the point of
! view of page and line numbering.  Every ``LF`` character is considered
! to end a line, and there is an implied ``LF`` character at the end of
  the file.
  
  .. _Stream_Pointer_Positioning:
*************** the file.
*** 255,274 ****
  Stream Pointer Positioning
  --------------------------
  
! `Ada.Text_IO` has a definition of current position for a file that
  is being read.  No internal buffering occurs in Text_IO, and usually the
  physical position in the stream used to implement the file corresponds
  to this logical position defined by Text_IO.  There are two exceptions:
  
  *
!   After a call to `End_Of_Page` that returns `True`, the stream
!   is positioned past the `LF` (line mark) that precedes the page
    mark.  Text_IO maintains an internal flag so that subsequent read
    operations properly handle the logical position which is unchanged by
!   the `End_Of_Page` call.
  
  *
!   After a call to `End_Of_File` that returns `True`, if the
    Text_IO file was positioned before the line mark at the end of file
    before the call, then the logical position is unchanged, but the stream
    is physically positioned right at the end of file (past the line mark,
--- 255,274 ----
  Stream Pointer Positioning
  --------------------------
  
! ``Ada.Text_IO`` has a definition of current position for a file that
  is being read.  No internal buffering occurs in Text_IO, and usually the
  physical position in the stream used to implement the file corresponds
  to this logical position defined by Text_IO.  There are two exceptions:
  
  *
!   After a call to ``End_Of_Page`` that returns ``True``, the stream
!   is positioned past the ``LF`` (line mark) that precedes the page
    mark.  Text_IO maintains an internal flag so that subsequent read
    operations properly handle the logical position which is unchanged by
!   the ``End_Of_Page`` call.
  
  *
!   After a call to ``End_Of_File`` that returns ``True``, if the
    Text_IO file was positioned before the line mark at the end of file
    before the call, then the logical position is unchanged, but the stream
    is physically positioned right at the end of file (past the line mark,
*************** for reading, the behavior of Text_IO is
*** 294,305 ****
  look-ahead as follows:
  
  An input file that is not a regular file is considered to have no page
! marks.  Any `Ascii.FF` characters (the character normally used for a
  page mark) appearing in the file are considered to be data
  characters.  In particular:
  
  *
!   `Get_Line` and `Skip_Line` do not test for a page mark
    following a line mark.  If a page mark appears, it will be treated as a
    data character.
  
--- 294,305 ----
  look-ahead as follows:
  
  An input file that is not a regular file is considered to have no page
! marks.  Any ``Ascii.FF`` characters (the character normally used for a
  page mark) appearing in the file are considered to be data
  characters.  In particular:
  
  *
!   ``Get_Line`` and ``Skip_Line`` do not test for a page mark
    following a line mark.  If a page mark appears, it will be treated as a
    data character.
  
*************** characters.  In particular:
*** 308,321 ****
    entered from the pipe to complete one of these operations.
  
  *
!   `End_Of_Page` always returns `False`
  
  *
!   `End_Of_File` will return `False` if there is a page mark at
    the end of the file.
  
  Output to non-regular files is the same as for regular files.  Page marks
! may be written to non-regular files using `New_Page`, but as noted
  above they will not be treated as page marks on input if the output is
  piped to another Ada program.
  
--- 308,321 ----
    entered from the pipe to complete one of these operations.
  
  *
!   ``End_Of_Page`` always returns ``False``
  
  *
!   ``End_Of_File`` will return ``False`` if there is a page mark at
    the end of the file.
  
  Output to non-regular files is the same as for regular files.  Page marks
! may be written to non-regular files using ``New_Page``, but as noted
  above they will not be treated as page marks on input if the output is
  piped to another Ada program.
  
*************** Another important discrepancy when readi
*** 323,331 ****
  of file indication is not 'sticky'.  If an end of file is entered, e.g., by
  pressing the :kbd:`EOT` key,
  then end of file
! is signaled once (i.e., the test `End_Of_File`
! will yield `True`, or a read will
! raise `End_Error`), but then reading can resume
  to read data past that end of
  file indication, until another end of file indication is entered.
  
--- 323,331 ----
  of file indication is not 'sticky'.  If an end of file is entered, e.g., by
  pressing the :kbd:`EOT` key,
  then end of file
! is signaled once (i.e., the test ``End_Of_File``
! will yield ``True``, or a read will
! raise ``End_Error``), but then reading can resume
  to read data past that end of
  file indication, until another end of file indication is entered.
  
*************** Treating Text_IO Files as Streams
*** 354,367 ****
  
  .. index:: Stream files
  
! The package `Text_IO.Streams` allows a Text_IO file to be treated
! as a stream.  Data written to a Text_IO file in this stream mode is
! binary data.  If this binary data contains bytes 16#0A# (`LF`) or
! 16#0C# (`FF`), the resulting file may have non-standard
  format.  Similarly if read operations are used to read from a Text_IO
! file treated as a stream, then `LF` and `FF` characters may be
  skipped and the effect is similar to that described above for
! `Get_Immediate`.
  
  .. _Text_IO_Extensions:
  
--- 354,367 ----
  
  .. index:: Stream files
  
! The package ``Text_IO.Streams`` allows a ``Text_IO`` file to be treated
! as a stream.  Data written to a ``Text_IO`` file in this stream mode is
! binary data.  If this binary data contains bytes 16#0A# (``LF``) or
! 16#0C# (``FF``), the resulting file may have non-standard
  format.  Similarly if read operations are used to read from a Text_IO
! file treated as a stream, then ``LF`` and ``FF`` characters may be
  skipped and the effect is similar to that described above for
! ``Get_Immediate``.
  
  .. _Text_IO_Extensions:
  
*************** Text_IO Extensions
*** 371,377 ****
  .. index:: Text_IO extensions
  
  A package GNAT.IO_Aux in the GNAT library provides some useful extensions
! to the standard `Text_IO` package:
  
  * function File_Exists (Name : String) return Boolean;
    Determines if a file of the given name exists.
--- 371,377 ----
  .. index:: Text_IO extensions
  
  A package GNAT.IO_Aux in the GNAT library provides some useful extensions
! to the standard ``Text_IO`` package:
  
  * function File_Exists (Name : String) return Boolean;
    Determines if a file of the given name exists.
*************** Text_IO Facilities for Unbounded Strings
*** 394,401 ****
  
  .. index:: Unbounded_String, Text_IO operations
  
! The package `Ada.Strings.Unbounded.Text_IO`
! in library files `a-suteio.ads/adb` contains some GNAT-specific
  subprograms useful for Text_IO operations on unbounded strings:
  
  
--- 394,401 ----
  
  .. index:: Unbounded_String, Text_IO operations
  
! The package ``Ada.Strings.Unbounded.Text_IO``
! in library files :file:`a-suteio.ads/adb` contains some GNAT-specific
  subprograms useful for Text_IO operations on unbounded strings:
  
  
*************** subprograms useful for Text_IO operation
*** 406,437 ****
  * procedure Put (File : File_Type; U : Unbounded_String);
    Writes the value of the given unbounded string to the specified file
    Similar to the effect of
!   `Put (To_String (U))` except that an extra copy is avoided.
  
  * procedure Put_Line (File : File_Type; U : Unbounded_String);
    Writes the value of the given unbounded string to the specified file,
!   followed by a `New_Line`.
!   Similar to the effect of `Put_Line (To_String (U))` except
    that an extra copy is avoided.
  
! In the above procedures, `File` is of type `Ada.Text_IO.File_Type`
  and is optional.  If the parameter is omitted, then the standard input or
  output file is referenced as appropriate.
  
! The package `Ada.Strings.Wide_Unbounded.Wide_Text_IO` in library
  files :file:`a-swuwti.ads` and :file:`a-swuwti.adb` provides similar extended
! `Wide_Text_IO` functionality for unbounded wide strings.
  
! The package `Ada.Strings.Wide_Wide_Unbounded.Wide_Wide_Text_IO` in library
  files :file:`a-szuzti.ads` and :file:`a-szuzti.adb` provides similar extended
! `Wide_Wide_Text_IO` functionality for unbounded wide wide strings.
  
  .. _Wide_Text_IO:
  
  Wide_Text_IO
  ============
  
! `Wide_Text_IO` is similar in most respects to Text_IO, except that
  both input and output files may contain special sequences that represent
  wide character values.  The encoding scheme for a given file may be
  specified using a FORM parameter:
--- 406,437 ----
  * procedure Put (File : File_Type; U : Unbounded_String);
    Writes the value of the given unbounded string to the specified file
    Similar to the effect of
!   ``Put (To_String (U))`` except that an extra copy is avoided.
  
  * procedure Put_Line (File : File_Type; U : Unbounded_String);
    Writes the value of the given unbounded string to the specified file,
!   followed by a ``New_Line``.
!   Similar to the effect of ``Put_Line (To_String (U))`` except
    that an extra copy is avoided.
  
! In the above procedures, ``File`` is of type ``Ada.Text_IO.File_Type``
  and is optional.  If the parameter is omitted, then the standard input or
  output file is referenced as appropriate.
  
! The package ``Ada.Strings.Wide_Unbounded.Wide_Text_IO`` in library
  files :file:`a-swuwti.ads` and :file:`a-swuwti.adb` provides similar extended
! ``Wide_Text_IO`` functionality for unbounded wide strings.
  
! The package ``Ada.Strings.Wide_Wide_Unbounded.Wide_Wide_Text_IO`` in library
  files :file:`a-szuzti.ads` and :file:`a-szuzti.adb` provides similar extended
! ``Wide_Wide_Text_IO`` functionality for unbounded wide wide strings.
  
  .. _Wide_Text_IO:
  
  Wide_Text_IO
  ============
  
! ``Wide_Text_IO`` is similar in most respects to Text_IO, except that
  both input and output files may contain special sequences that represent
  wide character values.  The encoding scheme for a given file may be
  specified using a FORM parameter:
*************** specified using a FORM parameter:
*** 443,449 ****
  
  
  as part of the FORM string (WCEM = wide character encoding method),
! where `x` is one of the following characters
  
  ========== ====================
  Character  Encoding
--- 443,449 ----
  
  
  as part of the FORM string (WCEM = wide character encoding method),
! where ``x`` is one of the following characters
  
  ========== ====================
  Character  Encoding
*************** being brackets encoding if no coding met
*** 480,490 ****
  
  ..
  
!   where `a`, `b`, `c`, `d` are the four hexadecimal
    characters (using upper case letters) of the wide character code.  For
    example, ESC A345 is used to represent the wide character with code
    16#A345#.  This scheme is compatible with use of the full
!   `Wide_Character` set.
  
  
  *Upper Half Coding*
--- 480,490 ----
  
  ..
  
!   where ``a``, ``b``, ``c``, ``d`` are the four hexadecimal
    characters (using upper case letters) of the wide character code.  For
    example, ESC A345 is used to represent the wide character with code
    16#A345#.  This scheme is compatible with use of the full
!   ``Wide_Character`` set.
  
  
  *Upper Half Coding*
*************** being brackets encoding if no coding met
*** 527,533 ****
  
  ..
  
!   where the `xxx` bits correspond to the left-padded bits of the
    16-bit character value.  Note that all lower half ASCII characters
    are represented as ASCII bytes and all upper half characters and
    other wide characters are represented as sequences of upper-half
--- 527,533 ----
  
  ..
  
!   where the ``xxx`` bits correspond to the left-padded bits of the
    16-bit character value.  Note that all lower half ASCII characters
    are represented as ASCII bytes and all upper half characters and
    other wide characters are represented as sequences of upper-half
*************** being brackets encoding if no coding met
*** 548,561 ****
  
  ..
  
!   where `a`, `b`, `c`, `d` are the four hexadecimal
    characters (using uppercase letters) of the wide character code.  For
!   example, `["A345"]` is used to represent the wide character with code
!   `16#A345#`.
    This scheme is compatible with use of the full Wide_Character set.
    On input, brackets coding can also be used for upper half characters,
!   e.g., `["C1"]` for lower case a.  However, on output, brackets notation
!   is only used for wide characters with a code greater than `16#FF#`.
  
    Note that brackets coding is not normally used in the context of
    Wide_Text_IO or Wide_Wide_Text_IO, since it is really just designed as
--- 548,561 ----
  
  ..
  
!   where ``a``, ``b``, ``c``, ``d`` are the four hexadecimal
    characters (using uppercase letters) of the wide character code.  For
!   example, ``["A345"]`` is used to represent the wide character with code
!   ``16#A345#``.
    This scheme is compatible with use of the full Wide_Character set.
    On input, brackets coding can also be used for upper half characters,
!   e.g., ``["C1"]`` for lower case a.  However, on output, brackets notation
!   is only used for wide characters with a code greater than ``16#FF#``.
  
    Note that brackets coding is not normally used in the context of
    Wide_Text_IO or Wide_Wide_Text_IO, since it is really just designed as
*************** input also causes Constraint_Error to be
*** 612,622 ****
  Stream Pointer Positioning
  --------------------------
  
! `Ada.Wide_Text_IO` is similar to `Ada.Text_IO` in its handling
  of stream pointer positioning (:ref:`Text_IO`).  There is one additional
  case:
  
! If `Ada.Wide_Text_IO.Look_Ahead` reads a character outside the
  normal lower ASCII set (i.e., a character in the range:
  
  
--- 612,622 ----
  Stream Pointer Positioning
  --------------------------
  
! ``Ada.Wide_Text_IO`` is similar to ``Ada.Text_IO`` in its handling
  of stream pointer positioning (:ref:`Text_IO`).  There is one additional
  case:
  
! If ``Ada.Wide_Text_IO.Look_Ahead`` reads a character outside the
  normal lower ASCII set (i.e., a character in the range:
  
  
*************** normal lower ASCII set (i.e., a characte
*** 626,636 ****
  
  
  then although the logical position of the file pointer is unchanged by
! the `Look_Ahead` call, the stream is physically positioned past the
  wide character sequence.  Again this is to avoid the need for buffering
! or backup, and all `Wide_Text_IO` routines check the internal
  indication that this situation has occurred so that this is not visible
! to a normal program using `Wide_Text_IO`.  However, this discrepancy
  can be observed if the wide text file shares a stream with another file.
  
  .. _Reading_and_Writing_Non-Regular_Files_1:
--- 626,636 ----
  
  
  then although the logical position of the file pointer is unchanged by
! the ``Look_Ahead`` call, the stream is physically positioned past the
  wide character sequence.  Again this is to avoid the need for buffering
! or backup, and all ``Wide_Text_IO`` routines check the internal
  indication that this situation has occurred so that this is not visible
! to a normal program using ``Wide_Text_IO``.  However, this discrepancy
  can be observed if the wide text file shares a stream with another file.
  
  .. _Reading_and_Writing_Non-Regular_Files_1:
*************** Reading and Writing Non-Regular Files
*** 640,647 ****
  
  As in the case of Text_IO, when a non-regular file is read, it is
  assumed that the file contains no page marks (any form characters are
! treated as data characters), and `End_Of_Page` always returns
! `False`.  Similarly, the end of file indication is not sticky, so
  it is possible to read beyond an end of file.
  
  .. _Wide_Wide_Text_IO:
--- 640,647 ----
  
  As in the case of Text_IO, when a non-regular file is read, it is
  assumed that the file contains no page marks (any form characters are
! treated as data characters), and ``End_Of_Page`` always returns
! ``False``.  Similarly, the end of file indication is not sticky, so
  it is possible to read beyond an end of file.
  
  .. _Wide_Wide_Text_IO:
*************** it is possible to read beyond an end of
*** 649,655 ****
  Wide_Wide_Text_IO
  =================
  
! `Wide_Wide_Text_IO` is similar in most respects to Text_IO, except that
  both input and output files may contain special sequences that represent
  wide wide character values.  The encoding scheme for a given file may be
  specified using a FORM parameter:
--- 649,655 ----
  Wide_Wide_Text_IO
  =================
  
! ``Wide_Wide_Text_IO`` is similar in most respects to Text_IO, except that
  both input and output files may contain special sequences that represent
  wide wide character values.  The encoding scheme for a given file may be
  specified using a FORM parameter:
*************** specified using a FORM parameter:
*** 661,667 ****
  
  
  as part of the FORM string (WCEM = wide character encoding method),
! where `x` is one of the following characters
  
  ========== ====================
  Character  Encoding
--- 661,667 ----
  
  
  as part of the FORM string (WCEM = wide character encoding method),
! where ``x`` is one of the following characters
  
  ========== ====================
  Character  Encoding
*************** being brackets encoding if no coding met
*** 704,710 ****
  
  ..
  
!   where the `xxx` bits correspond to the left-padded bits of the
    21-bit character value.  Note that all lower half ASCII characters
    are represented as ASCII bytes and all upper half characters and
    other wide characters are represented as sequences of upper-half
--- 704,710 ----
  
  ..
  
!   where the ``xxx`` bits correspond to the left-padded bits of the
    21-bit character value.  Note that all lower half ASCII characters
    are represented as ASCII bytes and all upper half characters and
    other wide characters are represented as sequences of upper-half
*************** being brackets encoding if no coding met
*** 731,746 ****
  
  ..
  
!   where `a`, `b`, `c`, `d`, `e`, and `f`
    are the four or six hexadecimal
    characters (using uppercase letters) of the wide wide character code.  For
!   example, `["01A345"]` is used to represent the wide wide character
!   with code `16#01A345#`.
  
    This scheme is compatible with use of the full Wide_Wide_Character set.
    On input, brackets coding can also be used for upper half characters,
!   e.g., `["C1"]` for lower case a.  However, on output, brackets notation
!   is only used for wide characters with a code greater than `16#FF#`.
  
  
  If is also possible to use the other Wide_Character encoding methods,
--- 731,746 ----
  
  ..
  
!   where ``a``, ``b``, ``c``, ``d``, ``e``, and ``f``
    are the four or six hexadecimal
    characters (using uppercase letters) of the wide wide character code.  For
!   example, ``["01A345"]`` is used to represent the wide wide character
!   with code ``16#01A345#``.
  
    This scheme is compatible with use of the full Wide_Wide_Character set.
    On input, brackets coding can also be used for upper half characters,
!   e.g., ``["C1"]`` for lower case a.  However, on output, brackets notation
!   is only used for wide characters with a code greater than ``16#FF#``.
  
  
  If is also possible to use the other Wide_Character encoding methods,
*************** input also causes Constraint_Error to be
*** 756,766 ****
  Stream Pointer Positioning
  --------------------------
  
! `Ada.Wide_Wide_Text_IO` is similar to `Ada.Text_IO` in its handling
  of stream pointer positioning (:ref:`Text_IO`).  There is one additional
  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:
  
  
--- 756,766 ----
  Stream Pointer Positioning
  --------------------------
  
! ``Ada.Wide_Wide_Text_IO`` is similar to ``Ada.Text_IO`` in its handling
  of stream pointer positioning (:ref:`Text_IO`).  There is one additional
  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:
  
  
*************** normal lower ASCII set (i.e., a characte
*** 770,780 ****
  
  
  then although the logical position of the file pointer is unchanged by
! the `Look_Ahead` call, the stream is physically positioned past the
  wide character sequence.  Again this is to avoid the need for buffering
! or backup, and all `Wide_Wide_Text_IO` routines check the internal
  indication that this situation has occurred so that this is not visible
! to a normal program using `Wide_Wide_Text_IO`.  However, this discrepancy
  can be observed if the wide text file shares a stream with another file.
  
  .. _Reading_and_Writing_Non-Regular_Files_2:
--- 770,780 ----
  
  
  then although the logical position of the file pointer is unchanged by
! the ``Look_Ahead`` call, the stream is physically positioned past the
  wide character sequence.  Again this is to avoid the need for buffering
! or backup, and all ``Wide_Wide_Text_IO`` routines check the internal
  indication that this situation has occurred so that this is not visible
! to a normal program using ``Wide_Wide_Text_IO``.  However, this discrepancy
  can be observed if the wide text file shares a stream with another file.
  
  .. _Reading_and_Writing_Non-Regular_Files_2:
*************** Reading and Writing Non-Regular Files
*** 784,791 ****
  
  As in the case of Text_IO, when a non-regular file is read, it is
  assumed that the file contains no page marks (any form characters are
! treated as data characters), and `End_Of_Page` always returns
! `False`.  Similarly, the end of file indication is not sticky, so
  it is possible to read beyond an end of file.
  
  .. _Stream_IO:
--- 784,791 ----
  
  As in the case of Text_IO, when a non-regular file is read, it is
  assumed that the file contains no page marks (any form characters are
! treated as data characters), and ``End_Of_Page`` always returns
! ``False``.  Similarly, the end of file indication is not sticky, so
  it is possible to read beyond an end of file.
  
  .. _Stream_IO:
*************** Stream_IO
*** 795,805 ****
  
  A stream file is a sequence of bytes, where individual elements are
  written to the file as described in the Ada Reference Manual.  The type
! `Stream_Element` is simply a byte.  There are two ways to read or
  write a stream file.
  
  *
!   The operations `Read` and `Write` directly read or write a
    sequence of stream elements with no control information.
  
  *
--- 795,805 ----
  
  A stream file is a sequence of bytes, where individual elements are
  written to the file as described in the Ada Reference Manual.  The type
! ``Stream_Element`` is simply a byte.  There are two ways to read or
  write a stream file.
  
  *
!   The operations ``Read`` and ``Write`` directly read or write a
    sequence of stream elements with no control information.
  
  *
*************** dependence, GNAT handles file sharing as
*** 854,860 ****
  *
    In the absence of a ``shared=xxx`` form parameter, an attempt
    to open two or more files with the same full name is considered an error
!   and is not supported.  The exception `Use_Error` will be
    raised.  Note that a file that is not explicitly closed by the program
    remains open until the program terminates.
  
--- 854,860 ----
  *
    In the absence of a ``shared=xxx`` form parameter, an attempt
    to open two or more files with the same full name is considered an error
!   and is not supported.  The exception ``Use_Error`` will be
    raised.  Note that a file that is not explicitly closed by the program
    remains open until the program terminates.
  
*************** dependence, GNAT handles file sharing as
*** 873,884 ****
  
  When a program that opens multiple files with the same name is ported
  from another Ada compiler to GNAT, the effect will be that
! `Use_Error` is raised.
  
  The documentation of the original compiler and the documentation of the
  program should then be examined to determine if file sharing was
! expected, and ``shared=xxx`` parameters added to `Open`
! and `Create` calls as required.
  
  When a program is ported from GNAT to some other Ada compiler, no
  special attention is required unless the ``shared=xxx`` form
--- 873,884 ----
  
  When a program that opens multiple files with the same name is ported
  from another Ada compiler to GNAT, the effect will be that
! ``Use_Error`` is raised.
  
  The documentation of the original compiler and the documentation of the
  program should then be examined to determine if file sharing was
! expected, and ``shared=xxx`` parameters added to ``Open``
! and ``Create`` calls as required.
  
  When a program is ported from GNAT to some other Ada compiler, no
  special attention is required unless the ``shared=xxx`` form
*************** This encoding is only supported on the W
*** 961,971 ****
  Open Modes
  ==========
  
! `Open` and `Create` calls result in a call to `fopen`
  using the mode shown in the following table:
  
  +----------------------------+---------------+------------------+
! |           `Open` and `Create` Call Modes                      |
  +----------------------------+---------------+------------------+
  |                            |   **OPEN**    |     **CREATE**   |
  +============================+===============+==================+
--- 961,971 ----
  Open Modes
  ==========
  
! ``Open`` and ``Create`` calls result in a call to ``fopen``
  using the mode shown in the following table:
  
  +----------------------------+---------------+------------------+
! |           ``Open`` and ``Create`` Call Modes                  |
  +----------------------------+---------------+------------------+
  |                            |   **OPEN**    |     **CREATE**   |
  +============================+===============+==================+
*************** DOS-like systems, and is not relevant to
*** 989,995 ****
  
  A special case occurs with Stream_IO.  As shown in the above table, the
  file is initially opened in ``r`` or ``w`` mode for the
! `In_File` and `Out_File` cases.  If a `Set_Mode` operation
  subsequently requires switching from reading to writing or vice-versa,
  then the file is reopened in ``r+`` mode to permit the required operation.
  
--- 989,995 ----
  
  A special case occurs with Stream_IO.  As shown in the above table, the
  file is initially opened in ``r`` or ``w`` mode for the
! ``In_File`` and ``Out_File`` cases.  If a ``Set_Mode`` operation
  subsequently requires switching from reading to writing or vice-versa,
  then the file is reopened in ``r+`` mode to permit the required operation.
  
*************** then the file is reopened in ``r+`` mode
*** 998,1004 ****
  Operations on C Streams
  =======================
  
! The package `Interfaces.C_Streams` provides an Ada program with direct
  access to the C library functions for operations on C streams:
  
  
--- 998,1004 ----
  Operations on C Streams
  =======================
  
! The package ``Interfaces.C_Streams`` provides an Ada program with direct
  access to the C library functions for operations on C streams:
  
  
*************** operations.
*** 1233,1251 ****
     end Ada.Stream_IO.C_Streams;
  
  
! In each of these six packages, the `C_Stream` function obtains the
! `FILE` pointer from a currently opened Ada file.  It is then
! possible to use the `Interfaces.C_Streams` package to operate on
  this stream, or the stream can be passed to a C program which can
  operate on it directly.  Of course the program is responsible for
  ensuring that only appropriate sequences of operations are executed.
  
  One particular use of relevance to an Ada program is that the
! `setvbuf` function can be used to control the buffering of the
  stream used by an Ada file.  In the absence of such a call the standard
  default buffering is used.
  
! The `Open` procedures in these packages open a file giving an
  existing C Stream instead of a file name.  Typically this stream is
  imported from a C program, allowing an Ada file to operate on an
  existing C file.
--- 1233,1251 ----
     end Ada.Stream_IO.C_Streams;
  
  
! In each of these six packages, the ``C_Stream`` function obtains the
! ``FILE`` pointer from a currently opened Ada file.  It is then
! possible to use the ``Interfaces.C_Streams`` package to operate on
  this stream, or the stream can be passed to a C program which can
  operate on it directly.  Of course the program is responsible for
  ensuring that only appropriate sequences of operations are executed.
  
  One particular use of relevance to an Ada program is that the
! ``setvbuf`` function can be used to control the buffering of the
  stream used by an Ada file.  In the absence of such a call the standard
  default buffering is used.
  
! The ``Open`` procedures in these packages open a file giving an
  existing C Stream instead of a file name.  Typically this stream is
  imported from a C program, allowing an Ada file to operate on an
  existing C file.
diff -Nrcpad gcc-7.3.0/gcc/ada/doc/gnat_rm.rst gcc-8.1.0/gcc/ada/doc/gnat_rm.rst
*** gcc-7.3.0/gcc/ada/doc/gnat_rm.rst	Fri Jan 13 11:23:42 2017
--- gcc-8.1.0/gcc/ada/doc/gnat_rm.rst	Fri Sep  8 12:34:54 2017
***************
*** 1,37 ****
  GNAT Reference Manual
  =====================
  
! *GNAT, The GNU Ada Development Environment*
  
! .. only:: PRO
  
!    *GNAT Pro Edition*
  
!    | Version |version|
!    | Date: |today|
  
! .. only:: GPL
  
!    *GNAT GPL Edition*
  
!    | Version |version|
!    | Date: |today|
  
! .. only:: FSF
  
!    .. raw:: texinfo
  
!       @include gcc-common.texi
!       GCC version @value{version-GCC}@*
  
! AdaCore
  
! 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; with no
! Invariant Sections, with the Front-Cover Texts being "GNAT Reference
! Manual", and with no Back-Cover Texts.  A copy of the license is
! included in the section entitled :ref:`gnu_fdl`.
  
  .. toctree::
     :numbered:
--- 1,39 ----
  GNAT Reference Manual
  =====================
  
! .. only:: not latex
  
!     *GNAT, The GNU Ada Development Environment*
  
!     .. only:: PRO
  
!        *GNAT Pro Edition*
  
!        | Version |version|
!        | Date: |today|
  
!     .. only:: GPL
  
!        *GNAT GPL Edition*
  
!        | Version |version|
!        | Date: |today|
  
!     .. only:: FSF
  
!        .. raw:: texinfo
  
!           @include gcc-common.texi
!           GCC version @value{version-GCC}@*
  
!     AdaCore
! 
!     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; with no
!     Invariant Sections, with the Front-Cover Texts being "GNAT Reference
!     Manual", and with no Back-Cover Texts.  A copy of the license is
!     included in the section entitled :ref:`gnu_fdl`.
  
  .. toctree::
     :numbered:
diff -Nrcpad gcc-7.3.0/gcc/ada/doc/gnat_ugn/about_this_guide.rst gcc-8.1.0/gcc/ada/doc/gnat_ugn/about_this_guide.rst
*** gcc-7.3.0/gcc/ada/doc/gnat_ugn/about_this_guide.rst	Fri Jan 13 11:23:42 2017
--- gcc-8.1.0/gcc/ada/doc/gnat_ugn/about_this_guide.rst	Thu Jan 11 08:52:20 2018
*************** the new document structure.
*** 117,123 ****
  * :ref:`The_GNAT_Compilation_Model` has been extended so that it now covers
    the following material:
  
!   - The `gnatname`, `gnatkr`, and `gnatchop` tools
    - :ref:`Configuration_Pragmas`
    - :ref:`GNAT_and_Libraries`
    - :ref:`Conditional_Compilation` including :ref:`Preprocessing_with_gnatprep`
--- 117,123 ----
  * :ref:`The_GNAT_Compilation_Model` has been extended so that it now covers
    the following material:
  
!   - The ``gnatname``, ``gnatkr``, and ``gnatchop`` tools
    - :ref:`Configuration_Pragmas`
    - :ref:`GNAT_and_Libraries`
    - :ref:`Conditional_Compilation` including :ref:`Preprocessing_with_gnatprep`
*************** the new document structure.
*** 144,152 ****
      - :ref:`The_Cross-Referencing_Tools_gnatxref_and_gnatfind`
      - :ref:`The_Ada_to_HTML_Converter_gnathtml`
      - :ref:`The_Ada-to-XML_Converter_gnat2xml`
!     - :ref:`The_Program_Property_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`
  
--- 144,152 ----
      - :ref:`The_Cross-Referencing_Tools_gnatxref_and_gnatfind`
      - :ref:`The_Ada_to_HTML_Converter_gnathtml`
      - :ref:`The_Ada-to-XML_Converter_gnat2xml`
!     - :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`
  
*************** the new document structure.
*** 173,181 ****
    - :ref:`Microsoft_Windows_Topics`
    - :ref:`Mac_OS_Topics`
  
! * The `Compatibility and Porting Guide` appendix has been moved to the
    :title:`GNAT Reference Manual`. It now includes a section
!   `Writing Portable Fixed-Point Declarations` which was previously
    a separate chapter in the :title:`GNAT User's Guide`.
  
  
--- 173,181 ----
    - :ref:`Microsoft_Windows_Topics`
    - :ref:`Mac_OS_Topics`
  
! * The *Compatibility and Porting Guide* appendix has been moved to the
    :title:`GNAT Reference Manual`. It now includes a section
!   *Writing Portable Fixed-Point Declarations* which was previously
    a separate chapter in the :title:`GNAT User's Guide`.
  
  
*************** Conventions
*** 188,201 ****
  Following are examples of the typographical and graphic conventions used
  in this guide:
  
! * `Functions`, `utility program names`, `standard names`,
!   and `classes`.
  
! * `Option flags`
  
  * :file:`File names`
  
! * `Variables`
  
  * *Emphasis*
  
--- 188,201 ----
  Following are examples of the typographical and graphic conventions used
  in this guide:
  
! * ``Functions``, ``utility program names``, ``standard names``,
!   and ``classes``.
  
! * ``Option flags``
  
  * :file:`File names`
  
! * ``Variables``
  
  * *Emphasis*
  
diff -Nrcpad gcc-7.3.0/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst gcc-8.1.0/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst
*** gcc-7.3.0/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst	Fri Jan 13 11:23:42 2017
--- gcc-8.1.0/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst	Fri Mar 23 23:20:59 2018
***************
*** 5,11 ****
  
  .. -- Example: A |withing| unit has a |with| clause, it |withs| a |withed| unit
  
! 
  
  .. _Building_Executable_Programs_With_GNAT:
  
--- 5,11 ----
  
  .. -- Example: A |withing| unit has a |with| clause, it |withs| a |withed| unit
  
! .. role:: switch(samp)
  
  .. _Building_Executable_Programs_With_GNAT:
  
*************** in a GNAT context (see :ref:`Using_the_G
*** 39,46 ****
  
  .. _The_GNAT_Make_Program_gnatmake:
  
! Building with *gnatmake*
! ========================
  
  .. index:: gnatmake
  
--- 39,46 ----
  
  .. _The_GNAT_Make_Program_gnatmake:
  
! Building with ``gnatmake``
! ==========================
  
  .. index:: gnatmake
  
*************** the following steps:
*** 62,71 ****
  The third step in particular can be tricky, because not only do the modified
  files have to be compiled, but any files depending on these files must also be
  recompiled. The dependency rules in Ada can be quite complex, especially
! in the presence of overloading, `use` clauses, generics and inlined
  subprograms.
  
! *gnatmake* automatically takes care of the third and fourth steps
  of this process. It determines which sources need to be compiled,
  compiles them, and binds and links the resulting object files.
  
--- 62,71 ----
  The third step in particular can be tricky, because not only do the modified
  files have to be compiled, but any files depending on these files must also be
  recompiled. The dependency rules in Ada can be quite complex, especially
! in the presence of overloading, ``use`` clauses, generics and inlined
  subprograms.
  
! ``gnatmake`` automatically takes care of the third and fourth steps
  of this process. It determines which sources need to be compiled,
  compiles them, and binds and links the resulting object files.
  
*************** accurately recomputed from the new sourc
*** 74,158 ****
  the GNAT compilation model makes this possible. This means that if
  changes to the source program cause corresponding changes in
  dependencies, they will always be tracked exactly correctly by
! *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
! *gprbuild* tool which supports building with project files and works similarly
! to *gnatmake*.
  
  .. _Running_gnatmake:
  
! Running *gnatmake*
! ------------------
  
! The usual form of the *gnatmake* command is
  
  .. code-block:: sh
  
       $ gnatmake [<switches>] <file_name> [<file_names>] [<mode_switches>]
  
! The only required argument is one `file_name`, which specifies
! a compilation unit that is a main program. Several `file_names` can be
  specified: this will result in several executables being built.
! If `switches` are present, they can be placed before the first
! `file_name`, between `file_names` or after the last `file_name`.
! If `mode_switches` are present, they must always be placed after
! the last `file_name` and all `switches`.
  
  If you are using standard file extensions (:file:`.adb` and
  :file:`.ads`), then the
! extension may be omitted from the `file_name` arguments. However, if
  you are using non-standard extensions, then it is required that the
  extension be given. A relative or absolute directory path can be
! specified in a `file_name`, in which case, the input source file will
  be searched for in the specified directory only. Otherwise, the input
  source file will first be searched in the directory where
! *gnatmake* was invoked and if it is not found, it will be search on
  the source path of the compiler as described in
  :ref:`Search_Paths_and_the_Run-Time_Library_RTL`.
  
! All *gnatmake* output (except when you specify *-M*) is sent to
  :file:`stderr`. The output produced by the
! *-M* switch is sent to :file:`stdout`.
  
  
  .. _Switches_for_gnatmake:
  
! Switches for *gnatmake*
! -----------------------
  
! You may specify any of the following switches to *gnatmake*:
  
  
  .. index:: --version  (gnatmake)
  
! :samp:`--version`
    Display Copyright and version, then exit disregarding all other options.
  
  
  .. index:: --help  (gnatmake)
  
! :samp:`--help`
    If ``--version`` was not used, display usage, then exit disregarding
    all other options.
  
  
  .. index:: --GCC=compiler_name  (gnatmake)
  
! :samp:`--GCC={compiler_name}`
    Program used for compiling. The default is ``gcc``. You need to use
!   quotes around `compiler_name` if `compiler_name` contains
    spaces or other separator characters.
    As an example ``--GCC="foo -x  -y"``
!   will instruct *gnatmake* to use ``foo -x -y`` as your
    compiler. A limitation of this syntax is that the name and path name of
    the executable itself must not include any embedded spaces. Note that
!   switch ``-c`` is always inserted after your command name. Thus in the
!   above example the compiler command that will be used by *gnatmake*
    will be ``foo -c -x -y``. If several ``--GCC=compiler_name`` are
!   used, only the last `compiler_name` is taken into account. However,
    all the additional switches are also taken into account. Thus,
    ``--GCC="foo -x -y" --GCC="bar -z -t"`` is equivalent to
    ``--GCC="bar -x -y -z -t"``.
--- 74,158 ----
  the GNAT compilation model makes this possible. This means that if
  changes to the source program cause corresponding changes in
  dependencies, they will always be tracked exactly correctly by
! ``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
! ``gprbuild`` tool which supports building with project files and works similarly
! to ``gnatmake``.
  
  .. _Running_gnatmake:
  
! Running ``gnatmake``
! --------------------
  
! The usual form of the ``gnatmake`` command is
  
  .. code-block:: sh
  
       $ gnatmake [<switches>] <file_name> [<file_names>] [<mode_switches>]
  
! The only required argument is one ``file_name``, which specifies
! a compilation unit that is a main program. Several ``file_names`` can be
  specified: this will result in several executables being built.
! If ``switches`` are present, they can be placed before the first
! ``file_name``, between ``file_names`` or after the last ``file_name``.
! If ``mode_switches`` are present, they must always be placed after
! the last ``file_name`` and all ``switches``.
  
  If you are using standard file extensions (:file:`.adb` and
  :file:`.ads`), then the
! extension may be omitted from the ``file_name`` arguments. However, if
  you are using non-standard extensions, then it is required that the
  extension be given. A relative or absolute directory path can be
! specified in a ``file_name``, in which case, the input source file will
  be searched for in the specified directory only. Otherwise, the input
  source file will first be searched in the directory where
! ``gnatmake`` was invoked and if it is not found, it will be search on
  the source path of the compiler as described in
  :ref:`Search_Paths_and_the_Run-Time_Library_RTL`.
  
! All ``gnatmake`` output (except when you specify :switch:`-M`) is sent to
  :file:`stderr`. The output produced by the
! :switch:`-M` switch is sent to :file:`stdout`.
  
  
  .. _Switches_for_gnatmake:
  
! Switches for ``gnatmake``
! -------------------------
  
! You may specify any of the following switches to ``gnatmake``:
  
  
  .. index:: --version  (gnatmake)
  
! :switch:`--version`
    Display Copyright and version, then exit disregarding all other options.
  
  
  .. index:: --help  (gnatmake)
  
! :switch:`--help`
    If ``--version`` was not used, display usage, then exit disregarding
    all other options.
  
  
  .. index:: --GCC=compiler_name  (gnatmake)
  
! :switch:`--GCC={compiler_name}`
    Program used for compiling. The default is ``gcc``. You need to use
!   quotes around ``compiler_name`` if ``compiler_name`` contains
    spaces or other separator characters.
    As an example ``--GCC="foo -x  -y"``
!   will instruct ``gnatmake`` to use ``foo -x -y`` as your
    compiler. A limitation of this syntax is that the name and path name of
    the executable itself must not include any embedded spaces. Note that
!   switch :switch:`-c` is always inserted after your command name. Thus in the
!   above example the compiler command that will be used by ``gnatmake``
    will be ``foo -c -x -y``. If several ``--GCC=compiler_name`` are
!   used, only the last ``compiler_name`` is taken into account. However,
    all the additional switches are also taken into account. Thus,
    ``--GCC="foo -x -y" --GCC="bar -z -t"`` is equivalent to
    ``--GCC="bar -x -y -z -t"``.
*************** You may specify any of the following swi
*** 160,217 ****
  
  .. index:: --GNATBIND=binder_name  (gnatmake)
  
! :samp:`--GNATBIND={binder_name}`
    Program used for binding. The default is ``gnatbind``. You need to
!   use quotes around `binder_name` if `binder_name` contains spaces
    or other separator characters.
    As an example ``--GNATBIND="bar -x  -y"``
!   will instruct *gnatmake* to use `bar -x -y` as your
!   binder. Binder switches that are normally appended by *gnatmake*
!   to ``gnatbind`` are now appended to the end of `bar -x -y`.
    A limitation of this syntax is that the name and path name of the executable
    itself must not include any embedded spaces.
  
  .. index:: --GNATLINK=linker_name  (gnatmake)
  
! :samp:`--GNATLINK={linker_name}`
    Program used for linking. The default is ``gnatlink``. You need to
!   use quotes around `linker_name` if `linker_name` contains spaces
    or other separator characters.
    As an example ``--GNATLINK="lan -x  -y"``
!   will instruct *gnatmake* to use ``lan -x -y`` as your
    linker. Linker switches that are normally appended by ``gnatmake`` to
    ``gnatlink`` are now appended to the end of ``lan -x -y``.
    A limitation of this syntax is that the name and path name of the executable
    itself must not include any embedded spaces.
  
! :samp:`--create-map-file`
    When linking an executable, create a map file. The name of the map file
    has the same name as the executable with extension ".map".
  
! :samp:`--create-map-file={mapfile}`
    When linking an executable, create a map file with the specified name.
  
  .. index:: --create-missing-dirs  (gnatmake)
  
! :samp:`--create-missing-dirs`
!   When using project files (:samp:`-P{project}`), automatically create
    missing object directories, library directories and exec
    directories.
  
! :samp:`--single-compile-per-obj-dir`
    Disallow simultaneous compilations in the same object directory when
    project files are used.
  
! :samp:`--subdirs={subdir}`
    Actual object directory of each project file is the subdirectory subdir of the
    object directory specified or defaulted in the project file.
  
! :samp:`--unchecked-shared-lib-imports`
    By default, shared library projects are not allowed to import static library
    projects. When this switch is used on the command line, this restriction is
    relaxed.
  
! :samp:`--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
    relative to the object directory of the main project. If the source info file
--- 160,217 ----
  
  .. index:: --GNATBIND=binder_name  (gnatmake)
  
! :switch:`--GNATBIND={binder_name}`
    Program used for binding. The default is ``gnatbind``. You need to
!   use quotes around ``binder_name`` if ``binder_name`` contains spaces
    or other separator characters.
    As an example ``--GNATBIND="bar -x  -y"``
!   will instruct ``gnatmake`` to use ``bar -x -y`` as your
!   binder. Binder switches that are normally appended by ``gnatmake``
!   to ``gnatbind`` are now appended to the end of ``bar -x -y``.
    A limitation of this syntax is that the name and path name of the executable
    itself must not include any embedded spaces.
  
  .. index:: --GNATLINK=linker_name  (gnatmake)
  
! :switch:`--GNATLINK={linker_name}`
    Program used for linking. The default is ``gnatlink``. You need to
!   use quotes around ``linker_name`` if ``linker_name`` contains spaces
    or other separator characters.
    As an example ``--GNATLINK="lan -x  -y"``
!   will instruct ``gnatmake`` to use ``lan -x -y`` as your
    linker. Linker switches that are normally appended by ``gnatmake`` to
    ``gnatlink`` are now appended to the end of ``lan -x -y``.
    A limitation of this syntax is that the name and path name of the executable
    itself must not include any embedded spaces.
  
! :switch:`--create-map-file`
    When linking an executable, create a map file. The name of the map file
    has the same name as the executable with extension ".map".
  
! :switch:`--create-map-file={mapfile}`
    When linking an executable, create a map file with the specified name.
  
  .. index:: --create-missing-dirs  (gnatmake)
  
! :switch:`--create-missing-dirs`
!   When using project files (:switch:`-P{project}`), automatically create
    missing object directories, library directories and exec
    directories.
  
! :switch:`--single-compile-per-obj-dir`
    Disallow simultaneous compilations in the same object directory when
    project files are used.
  
! :switch:`--subdirs={subdir}`
    Actual object directory of each project file is the subdirectory subdir of the
    object directory specified or defaulted in the project file.
  
! :switch:`--unchecked-shared-lib-imports`
    By default, shared library projects are not allowed to import static library
    projects. When this switch is used on the command line, this restriction is
    relaxed.
  
! :switch:`--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
    relative to the object directory of the main project. If the source info file
*************** You may specify any of the following swi
*** 224,242 ****
    long time. If the source info file exists but cannot be parsed successfully,
    the Project Manager will attempt to recreate it. If the Project Manager fails
    to create the source info file, a message is issued, but gnatmake does not
!   fail. *gnatmake* "trusts" the source info file. This means that
    if the source files have changed (addition, deletion, moving to a different
    source directory), then the source info file need to be deleted and recreated.
  
  
  .. index:: -a  (gnatmake)
  
! :samp:`-a`
    Consider all files in the make process, even the GNAT internal system
    files (for example, the predefined Ada library files), as well as any
    locked files. Locked files are files whose ALI file is write-protected.
    By default,
!   *gnatmake* does not check these files,
    because the assumption is that the GNAT internal files are properly up
    to date, and also that any write protected ALI files have been properly
    installed. Note that if there is an installation problem, such that one
--- 224,242 ----
    long time. If the source info file exists but cannot be parsed successfully,
    the Project Manager will attempt to recreate it. If the Project Manager fails
    to create the source info file, a message is issued, but gnatmake does not
!   fail. ``gnatmake`` "trusts" the source info file. This means that
    if the source files have changed (addition, deletion, moving to a different
    source directory), then the source info file need to be deleted and recreated.
  
  
  .. index:: -a  (gnatmake)
  
! :switch:`-a`
    Consider all files in the make process, even the GNAT internal system
    files (for example, the predefined Ada library files), as well as any
    locked files. Locked files are files whose ALI file is write-protected.
    By default,
!   ``gnatmake`` does not check these files,
    because the assumption is that the GNAT internal files are properly up
    to date, and also that any write protected ALI files have been properly
    installed. Note that if there is an installation problem, such that one
*************** You may specify any of the following swi
*** 247,253 ****
    in conjunction with ``-f``
    if you need to recompile an entire application,
    including run-time files, using special configuration pragmas,
!   such as a `Normalize_Scalars` pragma.
  
    By default
    ``gnatmake -a`` compiles all GNAT
--- 247,253 ----
    in conjunction with ``-f``
    if you need to recompile an entire application,
    including run-time files, using special configuration pragmas,
!   such as a ``Normalize_Scalars`` pragma.
  
    By default
    ``gnatmake -a`` compiles all GNAT
*************** You may specify any of the following swi
*** 257,308 ****
  
  .. index:: -b  (gnatmake)
  
! :samp:`-b`
!   Bind only. Can be combined with *-c* to do
    compilation and binding, but no link.
!   Can be combined with *-l*
    to do binding and linking. When not combined with
!   *-c*
    all the units in the closure of the main program must have been previously
!   compiled and must be up to date. The root unit specified by `file_name`
    may be given without extension, with the source extension or, if no GNAT
    Project File is specified, with the ALI file extension.
  
  
  .. index:: -c  (gnatmake)
  
! :samp:`-c`
!   Compile only. Do not perform binding, except when *-b*
    is also specified. Do not perform linking, except if both
!   *-b* and
!   *-l* are also specified.
!   If the root unit specified by `file_name` is not a main unit, this is the
!   default. Otherwise *gnatmake* will attempt binding and linking
    unless all objects are up to date and the executable is more recent than
    the objects.
  
  
  .. index:: -C  (gnatmake)
  
! :samp:`-C`
    Use a temporary mapping file. 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 file names to path names (with
    full directory information). A mapping file can make the compiler's
    file searches faster, especially if there are many source directories,
    or the sources are read over a slow network connection. If
!   *-P* is used, a mapping file is always used, so
!   *-C* is unnecessary; in this case the mapping file
    is initially populated based on the project file. If
!   *-C* is used without
!   *-P*,
    the mapping file is initially empty. Each invocation of the compiler
    will add any newly accessed sources to the mapping file.
  
  
  .. index:: -C=  (gnatmake)
  
! :samp:`-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
    ineffective. The specified mapping file will be communicated to the compiler.
--- 257,308 ----
  
  .. index:: -b  (gnatmake)
  
! :switch:`-b`
!   Bind only. Can be combined with :switch:`-c` to do
    compilation and binding, but no link.
!   Can be combined with :switch:`-l`
    to do binding and linking. When not combined with
!   :switch:`-c`
    all the units in the closure of the main program must have been previously
!   compiled and must be up to date. The root unit specified by ``file_name``
    may be given without extension, with the source extension or, if no GNAT
    Project File is specified, with the ALI file extension.
  
  
  .. index:: -c  (gnatmake)
  
! :switch:`-c`
!   Compile only. Do not perform binding, except when :switch:`-b`
    is also specified. Do not perform linking, except if both
!   :switch:`-b` and
!   :switch:`-l` are also specified.
!   If the root unit specified by ``file_name`` is not a main unit, this is the
!   default. Otherwise ``gnatmake`` will attempt binding and linking
    unless all objects are up to date and the executable is more recent than
    the objects.
  
  
  .. index:: -C  (gnatmake)
  
! :switch:`-C`
    Use a temporary mapping file. 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 file names to path names (with
    full directory information). A mapping file can make the compiler's
    file searches faster, especially if there are many source directories,
    or the sources are read over a slow network connection. If
!   :switch:`-P` is used, a mapping file is always used, so
!   :switch:`-C` is unnecessary; in this case the mapping file
    is initially populated based on the project file. If
!   :switch:`-C` is used without
!   :switch:`-P`,
    the mapping file is initially empty. Each invocation of the compiler
    will add any newly accessed sources to the mapping file.
  
  
  .. index:: -C=  (gnatmake)
  
! :switch:`-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
    ineffective. The specified mapping file will be communicated to the compiler.
*************** You may specify any of the following swi
*** 313,319 ****
  
  .. index:: -d  (gnatmake)
  
! :samp:`-d`
    Display progress for each source, up to date or not, as a single line:
  
    ::
--- 313,319 ----
  
  .. index:: -d  (gnatmake)
  
! :switch:`-d`
    Display progress for each source, up to date or not, as a single line:
  
    ::
*************** You may specify any of the following swi
*** 326,334 ****
  
  .. index:: -D  (gnatmake)
  
! :samp:`-D {dir}`
!   Put all object files and ALI file in directory `dir`.
!   If the *-D* switch is not used, all object files
    and ALI files go in the current working directory.
  
    This switch cannot be used when using a project file.
--- 326,334 ----
  
  .. index:: -D  (gnatmake)
  
! :switch:`-D {dir}`
!   Put all object files and ALI file in directory ``dir``.
!   If the :switch:`-D` switch is not used, all object files
    and ALI files go in the current working directory.
  
    This switch cannot be used when using a project file.
*************** You may specify any of the following swi
*** 336,352 ****
  
  .. index:: -eI  (gnatmake)
  
! :samp:`-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
!   index in the source. This switch cannot be used when *gnatmake* is
    invoked for several mains.
  
  
  .. index:: -eL  (gnatmake)
  .. index:: symbolic links
  
! :samp:`-eL`
    Follow all symbolic links when processing project files.
    This should be used if your project uses symbolic links for files or
    directories, but is not needed in other cases.
--- 336,352 ----
  
  .. index:: -eI  (gnatmake)
  
! :switch:`-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
!   index in the source. This switch cannot be used when ``gnatmake`` is
    invoked for several mains.
  
  
  .. index:: -eL  (gnatmake)
  .. index:: symbolic links
  
! :switch:`-eL`
    Follow all symbolic links when processing project files.
    This should be used if your project uses symbolic links for files or
    directories, but is not needed in other cases.
*************** You may specify any of the following swi
*** 365,371 ****
  
  .. index:: -eS  (gnatmake)
  
! :samp:`-eS`
    Output the commands for the compiler, the binder and the linker
    on standard output,
    instead of standard error.
--- 365,371 ----
  
  .. index:: -eS  (gnatmake)
  
! :switch:`-eS`
    Output the commands for the compiler, the binder and the linker
    on standard output,
    instead of standard error.
*************** You may specify any of the following swi
*** 373,388 ****
  
  .. index:: -f  (gnatmake)
  
! :samp:`-f`
    Force recompilations. Recompile all sources, even though some object
    files may be up to date, but don't recompile predefined or GNAT internal
    files or locked files (files with a write-protected ALI file),
!   unless the *-a* switch is also specified.
  
  
  .. index:: -F  (gnatmake)
  
! :samp:`-F`
    When using project files, if some errors or warnings are detected during
    parsing and verbose mode is not in effect (no use of switch
    -v), then error lines start with the full path name of the project
--- 373,388 ----
  
  .. index:: -f  (gnatmake)
  
! :switch:`-f`
    Force recompilations. Recompile all sources, even though some object
    files may be up to date, but don't recompile predefined or GNAT internal
    files or locked files (files with a write-protected ALI file),
!   unless the :switch:`-a` switch is also specified.
  
  
  .. index:: -F  (gnatmake)
  
! :switch:`-F`
    When using project files, if some errors or warnings are detected during
    parsing and verbose mode is not in effect (no use of switch
    -v), then error lines start with the full path name of the project
*************** You may specify any of the following swi
*** 391,416 ****
  
  .. index:: -g  (gnatmake)
  
! :samp:`-g`
    Enable debugging. This switch is simply passed to the compiler and to the
    linker.
  
  
  .. index:: -i  (gnatmake)
  
! :samp:`-i`
!   In normal mode, *gnatmake* compiles all object files and ALI files
!   into the current directory. If the *-i* switch is used,
    then instead object files and ALI files that already exist are overwritten
    in place. This means that once a large project is organized into separate
!   directories in the desired manner, then *gnatmake* will automatically
    maintain and update this organization. If no ALI files are found on the
    Ada object path (see :ref:`Search_Paths_and_the_Run-Time_Library_RTL`),
    the new object and ALI files are created in the
    directory containing the source being compiled. If another organization
    is desired, where objects and sources are kept in different directories,
    a useful technique is to create dummy ALI files in the desired directories.
!   When detecting such a dummy file, *gnatmake* will be forced to
    recompile the corresponding source file, and it will be put the resulting
    object and ALI files in the directory where it found the dummy file.
  
--- 391,416 ----
  
  .. index:: -g  (gnatmake)
  
! :switch:`-g`
    Enable debugging. This switch is simply passed to the compiler and to the
    linker.
  
  
  .. index:: -i  (gnatmake)
  
! :switch:`-i`
!   In normal mode, ``gnatmake`` compiles all object files and ALI files
!   into the current directory. If the :switch:`-i` switch is used,
    then instead object files and ALI files that already exist are overwritten
    in place. This means that once a large project is organized into separate
!   directories in the desired manner, then ``gnatmake`` will automatically
    maintain and update this organization. If no ALI files are found on the
    Ada object path (see :ref:`Search_Paths_and_the_Run-Time_Library_RTL`),
    the new object and ALI files are created in the
    directory containing the source being compiled. If another organization
    is desired, where objects and sources are kept in different directories,
    a useful technique is to create dummy ALI files in the desired directories.
!   When detecting such a dummy file, ``gnatmake`` will be forced to
    recompile the corresponding source file, and it will be put the resulting
    object and ALI files in the directory where it found the dummy file.
  
*************** You may specify any of the following swi
*** 418,474 ****
  .. index:: -j  (gnatmake)
  .. index:: Parallel make
  
! :samp:`-j{n}`
!   Use `n` processes to carry out the (re)compilations. On a multiprocessor
!   machine compilations will occur in parallel. If `n` is 0, then the
    maximum number of parallel compilations is the number of core processors
    on the platform. In the event of compilation errors, messages from various
!   compilations might get interspersed (but *gnatmake* will give you the
    full ordered list of failing compiles at the end). If this is problematic,
    rerun the make process with n set to 1 to get a clean list of messages.
  
  
  .. index:: -k  (gnatmake)
  
! :samp:`-k`
    Keep going. Continue as much as possible after a compilation error. To
    ease the programmer's task in case of compilation errors, the list of
!   sources for which the compile fails is given when *gnatmake*
    terminates.
  
!   If *gnatmake* is invoked with several :file:`file_names` and with this
    switch, if there are compilation errors when building an executable,
!   *gnatmake* will not attempt to build the following executables.
  
  
  .. index:: -l  (gnatmake)
  
! :samp:`-l`
!   Link only. Can be combined with *-b* to binding
    and linking. Linking will not be performed if combined with
!   *-c*
!   but not with *-b*.
!   When not combined with *-b*
    all the units in the closure of the main program must have been previously
    compiled and must be up to date, and the main program needs to have been bound.
!   The root unit specified by `file_name`
    may be given without extension, with the source extension or, if no GNAT
    Project File is specified, with the ALI file extension.
  
  
  .. index:: -m  (gnatmake)
  
! :samp:`-m`
    Specify that the minimum necessary amount of recompilations
!   be performed. In this mode *gnatmake* ignores time
    stamp differences when the only
    modifications to a source file consist in adding/removing comments,
    empty lines, spaces or tabs. This means that if you have changed the
    comments in a source file or have simply reformatted it, using this
!   switch will tell *gnatmake* not to recompile files that depend on it
    (provided other sources on which these files depend have undergone no
    semantic modifications). Note that the debugging information may be
!   out of date with respect to the sources if the *-m* switch causes
    a compilation to be switched, so the use of this switch represents a
    trade-off between compilation time and accurate debugging information.
  
--- 418,474 ----
  .. index:: -j  (gnatmake)
  .. index:: Parallel make
  
! :switch:`-j{n}`
!   Use ``n`` processes to carry out the (re)compilations. On a multiprocessor
!   machine compilations will occur in parallel. If ``n`` is 0, then the
    maximum number of parallel compilations is the number of core processors
    on the platform. In the event of compilation errors, messages from various
!   compilations might get interspersed (but ``gnatmake`` will give you the
    full ordered list of failing compiles at the end). If this is problematic,
    rerun the make process with n set to 1 to get a clean list of messages.
  
  
  .. index:: -k  (gnatmake)
  
! :switch:`-k`
    Keep going. Continue as much as possible after a compilation error. To
    ease the programmer's task in case of compilation errors, the list of
!   sources for which the compile fails is given when ``gnatmake``
    terminates.
  
!   If ``gnatmake`` is invoked with several :file:`file_names` and with this
    switch, if there are compilation errors when building an executable,
!   ``gnatmake`` will not attempt to build the following executables.
  
  
  .. index:: -l  (gnatmake)
  
! :switch:`-l`
!   Link only. Can be combined with :switch:`-b` to binding
    and linking. Linking will not be performed if combined with
!   :switch:`-c`
!   but not with :switch:`-b`.
!   When not combined with :switch:`-b`
    all the units in the closure of the main program must have been previously
    compiled and must be up to date, and the main program needs to have been bound.
!   The root unit specified by ``file_name``
    may be given without extension, with the source extension or, if no GNAT
    Project File is specified, with the ALI file extension.
  
  
  .. index:: -m  (gnatmake)
  
! :switch:`-m`
    Specify that the minimum necessary amount of recompilations
!   be performed. In this mode ``gnatmake`` ignores time
    stamp differences when the only
    modifications to a source file consist in adding/removing comments,
    empty lines, spaces or tabs. This means that if you have changed the
    comments in a source file or have simply reformatted it, using this
!   switch will tell ``gnatmake`` not to recompile files that depend on it
    (provided other sources on which these files depend have undergone no
    semantic modifications). Note that the debugging information may be
!   out of date with respect to the sources if the :switch:`-m` switch causes
    a compilation to be switched, so the use of this switch represents a
    trade-off between compilation time and accurate debugging information.
  
*************** You may specify any of the following swi
*** 476,503 ****
  .. index:: Dependencies, producing list
  .. index:: -M  (gnatmake)
  
! :samp:`-M`
    Check if all objects are up to date. If they are, output the object
    dependences to :file:`stdout` in a form that can be directly exploited in
    a :file:`Makefile`. By default, each source file is prefixed with its
    (relative or absolute) directory name. This name is whatever you
!   specified in the various *-aI*
!   and *-I* switches. If you use
!   `gnatmake -M`  *-q*
    (see below), only the source file names,
!   without relative paths, are output. If you just specify the  *-M*
    switch, dependencies of the GNAT internal system files are omitted. This
    is typically what you want. If you also specify
!   the *-a* switch,
    dependencies of the GNAT internal files are also listed. Note that
    dependencies of the objects in external Ada libraries (see
!   switch  :samp:`-aL{dir}` in the following list)
    are never reported.
  
  
  .. index:: -n  (gnatmake)
  
! :samp:`-n`
    Don't compile, bind, or link. Checks if all objects are up to date.
    If they are not, the full name of the first file that needs to be
    recompiled is printed.
--- 476,503 ----
  .. index:: Dependencies, producing list
  .. index:: -M  (gnatmake)
  
! :switch:`-M`
    Check if all objects are up to date. If they are, output the object
    dependences to :file:`stdout` in a form that can be directly exploited in
    a :file:`Makefile`. By default, each source file is prefixed with its
    (relative or absolute) directory name. This name is whatever you
!   specified in the various :switch:`-aI`
!   and :switch:`-I` switches. If you use
!   ``gnatmake -M``  :switch:`-q`
    (see below), only the source file names,
!   without relative paths, are output. If you just specify the  :switch:`-M`
    switch, dependencies of the GNAT internal system files are omitted. This
    is typically what you want. If you also specify
!   the :switch:`-a` switch,
    dependencies of the GNAT internal files are also listed. Note that
    dependencies of the objects in external Ada libraries (see
!   switch  :switch:`-aL{dir}` in the following list)
    are never reported.
  
  
  .. index:: -n  (gnatmake)
  
! :switch:`-n`
    Don't compile, bind, or link. Checks if all objects are up to date.
    If they are not, the full name of the first file that needs to be
    recompiled is printed.
*************** You may specify any of the following swi
*** 507,531 ****
  
  .. index:: -o  (gnatmake)
  
! :samp:`-o {exec_name}`
    Output executable name. The name of the final executable program will be
!   `exec_name`. If the *-o* switch is omitted the default
    name for the executable will be the name of the input file in appropriate form
    for an executable file on the host system.
  
!   This switch cannot be used when invoking *gnatmake* with several
    :file:`file_names`.
  
  
  .. index:: -p  (gnatmake)
  
! :samp:`-p`
!   Same as :samp:`--create-missing-dirs`
  
  .. index:: -P  (gnatmake)
  
! :samp:`-P{project}`
!   Use project file `project`. Only one such switch can be used.
  
  .. -- Comment:
    :ref:`gnatmake_and_Project_Files`.
--- 507,531 ----
  
  .. index:: -o  (gnatmake)
  
! :switch:`-o {exec_name}`
    Output executable name. The name of the final executable program will be
!   ``exec_name``. If the :switch:`-o` switch is omitted the default
    name for the executable will be the name of the input file in appropriate form
    for an executable file on the host system.
  
!   This switch cannot be used when invoking ``gnatmake`` with several
    :file:`file_names`.
  
  
  .. index:: -p  (gnatmake)
  
! :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`.
*************** You may specify any of the following swi
*** 533,571 ****
  
  .. index:: -q  (gnatmake)
  
! :samp:`-q`
    Quiet. When this flag is not set, the commands carried out by
!   *gnatmake* are displayed.
  
  
  .. index:: -s  (gnatmake)
  
! :samp:`-s`
    Recompile if compiler switches have changed since last compilation.
    All compiler switches but -I and -o are taken into account in the
    following way:
    orders between different 'first letter' switches are ignored, but
    orders between same switches are taken into account. For example,
!   *-O -O2* is different than *-O2 -O*, but *-g -O*
!   is equivalent to *-O -g*.
  
    This switch is recommended when Integrated Preprocessing is used.
  
  
  .. index:: -u  (gnatmake)
  
! :samp:`-u`
    Unique. Recompile at most the main files. It implies -c. Combined with
    -f, it is equivalent to calling the compiler directly. Note that using
    -u with a project file and no main has a special meaning.
  
! .. --Comment:
    (See :ref:`Project_Files_and_Main_Subprograms`.)
  
  
  .. index:: -U  (gnatmake)
  
! :samp:`-U`
    When used without a project file or with one or several mains on the command
    line, is equivalent to -u. When used with a project file and no main
    on the command line, all sources of all project files are checked and compiled
--- 533,571 ----
  
  .. index:: -q  (gnatmake)
  
! :switch:`-q`
    Quiet. When this flag is not set, the commands carried out by
!   ``gnatmake`` are displayed.
  
  
  .. index:: -s  (gnatmake)
  
! :switch:`-s`
    Recompile if compiler switches have changed since last compilation.
    All compiler switches but -I and -o are taken into account in the
    following way:
    orders between different 'first letter' switches are ignored, but
    orders between same switches are taken into account. For example,
!   :switch:`-O -O2` is different than :switch:`-O2 -O`, but :switch:`-g -O`
!   is equivalent to :switch:`-O -g`.
  
    This switch is recommended when Integrated Preprocessing is used.
  
  
  .. index:: -u  (gnatmake)
  
! :switch:`-u`
    Unique. Recompile at most the main files. It implies -c. Combined with
    -f, it is equivalent to calling the compiler directly. Note that using
    -u with a project file and no main has a special meaning.
  
! .. --Comment
    (See :ref:`Project_Files_and_Main_Subprograms`.)
  
  
  .. index:: -U  (gnatmake)
  
! :switch:`-U`
    When used without a project file or with one or several mains on the command
    line, is equivalent to -u. When used with a project file and no main
    on the command line, all sources of all project files are checked and compiled
*************** You may specify any of the following swi
*** 574,630 ****
  
  .. index:: -v  (gnatmake)
  
! :samp:`-v`
!   Verbose. Display the reason for all recompilations *gnatmake*
    decides are necessary, with the highest verbosity level.
  
  
  .. index:: -vl  (gnatmake)
  
! :samp:`-vl`
    Verbosity level Low. Display fewer lines than in verbosity Medium.
  
  
  .. index:: -vm  (gnatmake)
  
! :samp:`-vm`
    Verbosity level Medium. Potentially display fewer lines than in verbosity High.
  
  
  .. index:: -vm  (gnatmake)
  
! :samp:`-vh`
    Verbosity level High. Equivalent to -v.
  
  
! :samp:`-vP{x}`
    Indicate the verbosity of the parsing of GNAT project files.
    See :ref:`Switches_Related_to_Project_Files`.
  
  
  .. index:: -x  (gnatmake)
  
! :samp:`-x`
    Indicate that sources that are not part of any Project File may be compiled.
    Normally, when using Project Files, only sources that are part of a Project
    File may be compile. When this switch is used, a source outside of all Project
    Files may be compiled. The ALI file and the object file will be put in the
    object directory of the main Project. The compilation switches used will only
    be those specified on the command line. Even when
!   *-x* is used, mains specified on the
    command line need to be sources of a project file.
  
  
! :samp:`-X{name}={value}`
!   Indicate that external variable `name` has the value `value`.
    The Project Manager will use this value for occurrences of
!   `external(name)` when parsing the project file.
    :ref:`Switches_Related_to_Project_Files`.
  
  
  .. index:: -z  (gnatmake)
  
! :samp:`-z`
    No main subprogram. Bind and link the program even if the unit name
    given on the command line is a package name. The resulting executable
    will execute the elaboration routines of the package and its closure,
--- 574,630 ----
  
  .. index:: -v  (gnatmake)
  
! :switch:`-v`
!   Verbose. Display the reason for all recompilations ``gnatmake``
    decides are necessary, with the highest verbosity level.
  
  
  .. index:: -vl  (gnatmake)
  
! :switch:`-vl`
    Verbosity level Low. Display fewer lines than in verbosity Medium.
  
  
  .. index:: -vm  (gnatmake)
  
! :switch:`-vm`
    Verbosity level Medium. Potentially display fewer lines than in verbosity High.
  
  
  .. index:: -vm  (gnatmake)
  
! :switch:`-vh`
    Verbosity level High. Equivalent to -v.
  
  
! :switch:`-vP{x}`
    Indicate the verbosity of the parsing of GNAT project files.
    See :ref:`Switches_Related_to_Project_Files`.
  
  
  .. index:: -x  (gnatmake)
  
! :switch:`-x`
    Indicate that sources that are not part of any Project File may be compiled.
    Normally, when using Project Files, only sources that are part of a Project
    File may be compile. When this switch is used, a source outside of all Project
    Files may be compiled. The ALI file and the object file will be put in the
    object directory of the main Project. The compilation switches used will only
    be those specified on the command line. Even when
!   :switch:`-x` is used, mains specified on the
    command line need to be sources of a project file.
  
  
! :switch:`-X{name}={value}`
!   Indicate that external variable ``name`` has the value ``value``.
    The Project Manager will use this value for occurrences of
!   ``external(name)`` when parsing the project file.
    :ref:`Switches_Related_to_Project_Files`.
  
  
  .. index:: -z  (gnatmake)
  
! :switch:`-z`
    No main subprogram. Bind and link the program even if the unit name
    given on the command line is a package name. The resulting executable
    will execute the elaboration routines of the package and its closure,
*************** You may specify any of the following swi
*** 633,725 ****
  
  .. rubric:: GCC switches
  
! Any uppercase or multi-character switch that is not a *gnatmake* switch
! is passed to *gcc* (e.g., *-O*, *-gnato,* etc.)
  
  
  .. rubric:: Source and library search path switches
  
  .. index:: -aI  (gnatmake)
  
! :samp:`-aI{dir}`
!   When looking for source files also look in directory `dir`.
    The order in which source files search is undertaken is
    described in :ref:`Search_Paths_and_the_Run-Time_Library_RTL`.
  
  
  .. index:: -aL  (gnatmake)
  
! :samp:`-aL{dir}`
!   Consider `dir` as being an externally provided Ada library.
!   Instructs *gnatmake* to skip compilation units whose :file:`.ALI`
!   files have been located in directory `dir`. This allows you to have
!   missing bodies for the units in `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
!   :samp:`-aI{dir}`  or :samp:`-I{dir}`.
    Note: this switch is provided for compatibility with previous versions
!   of *gnatmake*. The easier method of causing standard libraries
    to be excluded from consideration is to write-protect the corresponding
    ALI files.
  
  
  .. index:: -aO  (gnatmake)
  
! :samp:`-aO{dir}`
    When searching for library and object files, look in directory
!   `dir`. The order in which library files are searched is described in
    :ref:`Search_Paths_for_gnatbind`.
  
  
  .. index:: Search paths, for gnatmake
  .. index:: -A  (gnatmake)
  
! :samp:`-A{dir}`
!   Equivalent to :samp:`-aL{dir}` :samp:`-aI{dir}`.
  
  
    .. index:: -I  (gnatmake)
  
! :samp:`-I{dir}`
!   Equivalent to :samp:`-aO{dir} -aI{dir}`.
  
  
  .. index:: -I-  (gnatmake)
  .. index:: Source files, suppressing search
  
! :samp:`-I-`
    Do not look for source files in the directory containing the source
    file named in the command line.
    Do not look for ALI or object files in the directory
!   where *gnatmake* was invoked.
  
  
  .. index:: -L  (gnatmake)
  .. index:: Linker libraries
  
! :samp:`-L{dir}`
!   Add directory `dir` to the list of directories in which the linker
    will search for libraries. This is equivalent to
!   :samp:`-largs` :samp:`-L{dir}`.
    Furthermore, under Windows, the sources pointed to by the libraries path
    set in the registry are not searched for.
  
  
  .. index:: -nostdinc  (gnatmake)
  
! :samp:`-nostdinc`
    Do not look for source files in the system default directory.
  
  
  .. index:: -nostdlib  (gnatmake)
  
! :samp:`-nostdlib`
    Do not look for library files in the system default directory.
  
  
  .. index:: --RTS  (gnatmake)
  
! :samp:`--RTS={rts-path}`
    Specifies the default location of the runtime library. GNAT looks for the
    runtime
    in the following directories, and stops as soon as a valid runtime is found
--- 633,725 ----
  
  .. rubric:: GCC switches
  
! Any uppercase or multi-character switch that is not a ``gnatmake`` switch
! is passed to ``gcc`` (e.g., :switch:`-O`, :switch:`-gnato,` etc.)
  
  
  .. rubric:: Source and library search path switches
  
  .. index:: -aI  (gnatmake)
  
! :switch:`-aI{dir}`
!   When looking for source files also look in directory ``dir``.
    The order in which source files search is undertaken is
    described in :ref:`Search_Paths_and_the_Run-Time_Library_RTL`.
  
  
  .. index:: -aL  (gnatmake)
  
! :switch:`-aL{dir}`
!   Consider ``dir`` as being an externally provided Ada library.
!   Instructs ``gnatmake`` to skip compilation units whose :file:`.ALI`
!   files have been located in directory ``dir``. This allows you to have
!   missing bodies for the units in ``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
!   :switch:`-aI{dir}`  or :switch:`-I{dir}`.
    Note: this switch is provided for compatibility with previous versions
!   of ``gnatmake``. The easier method of causing standard libraries
    to be excluded from consideration is to write-protect the corresponding
    ALI files.
  
  
  .. index:: -aO  (gnatmake)
  
! :switch:`-aO{dir}`
    When searching for library and object files, look in directory
!   ``dir``. The order in which library files are searched is described in
    :ref:`Search_Paths_for_gnatbind`.
  
  
  .. index:: Search paths, for gnatmake
  .. index:: -A  (gnatmake)
  
! :switch:`-A{dir}`
!   Equivalent to :switch:`-aL{dir}` :switch:`-aI{dir}`.
  
  
    .. index:: -I  (gnatmake)
  
! :switch:`-I{dir}`
!   Equivalent to :switch:`-aO{dir} -aI{dir}`.
  
  
  .. index:: -I-  (gnatmake)
  .. index:: Source files, suppressing search
  
! :switch:`-I-`
    Do not look for source files in the directory containing the source
    file named in the command line.
    Do not look for ALI or object files in the directory
!   where ``gnatmake`` was invoked.
  
  
  .. index:: -L  (gnatmake)
  .. index:: Linker libraries
  
! :switch:`-L{dir}`
!   Add directory ``dir`` to the list of directories in which the linker
    will search for libraries. This is equivalent to
!   :switch:`-largs` :switch:`-L{dir}`.
    Furthermore, under Windows, the sources pointed to by the libraries path
    set in the registry are not searched for.
  
  
  .. index:: -nostdinc  (gnatmake)
  
! :switch:`-nostdinc`
    Do not look for source files in the system default directory.
  
  
  .. index:: -nostdlib  (gnatmake)
  
! :switch:`-nostdlib`
    Do not look for library files in the system default directory.
  
  
  .. index:: --RTS  (gnatmake)
  
! :switch:`--RTS={rts-path}`
    Specifies the default location of the runtime library. GNAT looks for the
    runtime
    in the following directories, and stops as soon as a valid runtime is found
*************** is passed to *gcc* (e.g., *-O*, *-gnato,
*** 737,746 ****
  
  .. _Mode_Switches_for_gnatmake:
  
! Mode Switches for *gnatmake*
! ----------------------------
  
! The mode switches (referred to as `mode_switches`) allow the
  inclusion of switches that are to be passed to the compiler itself, the
  binder or the linker. The effect of a mode switch is to cause all
  subsequent switches up to the end of the switch list, or up to the next
--- 737,746 ----
  
  .. _Mode_Switches_for_gnatmake:
  
! Mode Switches for ``gnatmake``
! ------------------------------
  
! The mode switches (referred to as ``mode_switches``) allow the
  inclusion of switches that are to be passed to the compiler itself, the
  binder or the linker. The effect of a mode switch is to cause all
  subsequent switches up to the end of the switch list, or up to the next
*************** designated component of GNAT.
*** 749,782 ****
  
  .. index:: -cargs  (gnatmake)
  
! :samp:`-cargs {switches}`
!   Compiler switches. Here `switches` is a list of switches
!   that are valid switches for *gcc*. They will be passed on to
!   all compile steps performed by *gnatmake*.
  
  
  .. index:: -bargs  (gnatmake)
  
! :samp:`-bargs {switches}`
!   Binder switches. Here `switches` is a list of switches
!   that are valid switches for `gnatbind`. They will be passed on to
!   all bind steps performed by *gnatmake*.
  
  
  .. index:: -largs  (gnatmake)
  
! :samp:`-largs {switches}`
!   Linker switches. Here `switches` is a list of switches
!   that are valid switches for *gnatlink*. They will be passed on to
!   all link steps performed by *gnatmake*.
  
  
  .. index:: -margs  (gnatmake)
  
! :samp:`-margs {switches}`
!   Make switches. The switches are directly interpreted by *gnatmake*,
!   regardless of any previous occurrence of *-cargs*, *-bargs*
!   or *-largs*.
  
  
  .. _Notes_on_the_Command_Line:
--- 749,782 ----
  
  .. index:: -cargs  (gnatmake)
  
! :switch:`-cargs {switches}`
!   Compiler switches. Here ``switches`` is a list of switches
!   that are valid switches for ``gcc``. They will be passed on to
!   all compile steps performed by ``gnatmake``.
  
  
  .. index:: -bargs  (gnatmake)
  
! :switch:`-bargs {switches}`
!   Binder switches. Here ``switches`` is a list of switches
!   that are valid switches for ``gnatbind``. They will be passed on to
!   all bind steps performed by ``gnatmake``.
  
  
  .. index:: -largs  (gnatmake)
  
! :switch:`-largs {switches}`
!   Linker switches. Here ``switches`` is a list of switches
!   that are valid switches for ``gnatlink``. They will be passed on to
!   all link steps performed by ``gnatmake``.
  
  
  .. index:: -margs  (gnatmake)
  
! :switch:`-margs {switches}`
!   Make switches. The switches are directly interpreted by ``gnatmake``,
!   regardless of any previous occurrence of :switch:`-cargs`, :switch:`-bargs`
!   or :switch:`-largs`.
  
  
  .. _Notes_on_the_Command_Line:
*************** Notes on the Command Line
*** 785,832 ****
  -------------------------
  
  This section contains some additional useful notes on the operation
! of the *gnatmake* command.
  
  .. index:: Recompilation (by gnatmake)
  
! * If *gnatmake* finds no ALI files, it recompiles the main program
    and all other units required by the main program.
!   This means that *gnatmake*
    can be used for the initial compile, as well as during subsequent steps of
    the development cycle.
  
  * If you enter ``gnatmake foo.adb``, where ``foo``
!   is a subunit or body of a generic unit, *gnatmake* recompiles
    :file:`foo.adb` (because it finds no ALI) and stops, issuing a
    warning.
  
! * In *gnatmake* the switch *-I*
    is used to specify both source and
!   library file paths. Use *-aI*
    instead if you just want to specify
!   source paths only and *-aO*
    if you want to specify library paths
    only.
  
! * *gnatmake* will ignore any files whose ALI file is write-protected.
    This may conveniently be used to exclude standard libraries from
    consideration and in particular it means that the use of the
!   *-f* switch will not recompile these files
!   unless *-a* is also specified.
  
! * *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 `main.adb`, which uses this Ada library you would just type:
  
    .. code-block:: sh
  
        $ gnatmake -aI`include-dir`  -aL`obj-dir`  main
  
! * Using *gnatmake* along with the *-m (minimal recompilation)*
    switch provides a mechanism for avoiding unnecessary recompilations. Using
    this switch,
    you can update the comments/format of your
--- 785,832 ----
  -------------------------
  
  This section contains some additional useful notes on the operation
! of the ``gnatmake`` command.
  
  .. index:: Recompilation (by gnatmake)
  
! * If ``gnatmake`` finds no ALI files, it recompiles the main program
    and all other units required by the main program.
!   This means that ``gnatmake``
    can be used for the initial compile, as well as during subsequent steps of
    the development cycle.
  
  * If you enter ``gnatmake foo.adb``, where ``foo``
!   is a subunit or body of a generic unit, ``gnatmake`` recompiles
    :file:`foo.adb` (because it finds no ALI) and stops, issuing a
    warning.
  
! * In ``gnatmake`` the switch :switch:`-I`
    is used to specify both source and
!   library file paths. Use :switch:`-aI`
    instead if you just want to specify
!   source paths only and :switch:`-aO`
    if you want to specify library paths
    only.
  
! * ``gnatmake`` will ignore any files whose ALI file is write-protected.
    This may conveniently be used to exclude standard libraries from
    consideration and in particular it means that the use of the
!   :switch:`-f` switch will not recompile these files
!   unless :switch:`-a` is also specified.
  
! * ``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 ``main.adb``, which uses this Ada library you would just type:
  
    .. code-block:: sh
  
        $ gnatmake -aI`include-dir`  -aL`obj-dir`  main
  
! * Using ``gnatmake`` along with the :switch:`-m (minimal recompilation)`
    switch provides a mechanism for avoiding unnecessary recompilations. Using
    this switch,
    you can update the comments/format of your
*************** of the *gnatmake* command.
*** 842,853 ****
  
  .. _How_gnatmake_Works:
  
! How *gnatmake* Works
! --------------------
  
! Generally *gnatmake* automatically performs all necessary
  recompilations and you don't need to worry about how it works. However,
! it may be useful to have some basic understanding of the *gnatmake*
  approach and in particular to understand how it uses the results of
  previous compilations without incorrectly depending on them.
  
--- 842,853 ----
  
  .. _How_gnatmake_Works:
  
! How ``gnatmake`` Works
! ----------------------
  
! Generally ``gnatmake`` automatically performs all necessary
  recompilations and you don't need to worry about how it works. However,
! it may be useful to have some basic understanding of the ``gnatmake``
  approach and in particular to understand how it uses the results of
  previous compilations without incorrectly depending on them.
  
*************** the ALI file. This means that neither th
*** 858,872 ****
  files that it depends on have been modified, and hence there is no need
  to recompile this file.
  
! *gnatmake* works by first checking if the specified main unit is up
  to date. If so, no compilations are required for the main unit. If not,
! *gnatmake* compiles the main program to build a new ALI file that
  reflects the latest sources. Then the ALI file of the main unit is
  examined to find all the source files on which the main program depends,
! and *gnatmake* recursively applies the above procedure on all these
  files.
  
! This process ensures that *gnatmake* only trusts the dependencies
  in an existing ALI file if they are known to be correct. Otherwise it
  always recompiles to determine a new, guaranteed accurate set of
  dependencies. As a result the program is compiled 'upside down' from what may
--- 858,872 ----
  files that it depends on have been modified, and hence there is no need
  to recompile this file.
  
! ``gnatmake`` works by first checking if the specified main unit is up
  to date. If so, no compilations are required for the main unit. If not,
! ``gnatmake`` compiles the main program to build a new ALI file that
  reflects the latest sources. Then the ALI file of the main unit is
  examined to find all the source files on which the main program depends,
! and ``gnatmake`` recursively applies the above procedure on all these
  files.
  
! This process ensures that ``gnatmake`` only trusts the dependencies
  in an existing ALI file if they are known to be correct. Otherwise it
  always recompiles to determine a new, guaranteed accurate set of
  dependencies. As a result the program is compiled 'upside down' from what may
*************** be more familiar as the required order o
*** 874,925 ****
  systems. In particular, clients are compiled before the units on which
  they depend. The ability of GNAT to compile in any order is critical in
  allowing an order of compilation to be chosen that guarantees that
! *gnatmake* will recompute a correct set of new dependencies if
  necessary.
  
! When invoking *gnatmake* with several `file_names`, if a unit is
  imported by several of the executables, it will be recompiled at most once.
  
  Note: when using non-standard naming conventions
  (:ref:`Using_Other_File_Names`), changing through a configuration pragmas
! file the version of a source and invoking *gnatmake* to recompile may
  have no effect, if the previous version of the source is still accessible
! by *gnatmake*. It may be necessary to use the switch
  -f.
  
  
  .. _Examples_of_gnatmake_Usage:
  
! Examples of *gnatmake* Usage
! ----------------------------
  
  *gnatmake hello.adb*
    Compile all files necessary to bind and link the main program
!   :file:`hello.adb` (containing unit `Hello`) and bind and link the
    resulting object files to generate an executable file :file:`hello`.
  
  *gnatmake main1 main2 main3*
    Compile all files necessary to bind and link the main programs
!   :file:`main1.adb` (containing unit `Main1`), :file:`main2.adb`
!   (containing unit `Main2`) and :file:`main3.adb`
!   (containing unit `Main3`) and bind and link the resulting object files
    to generate three executable files :file:`main1`,
    :file:`main2`  and :file:`main3`.
  
  *gnatmake -q Main_Unit -cargs -O2 -bargs -l*
    Compile all files necessary to bind and link the main program unit
!   `Main_Unit` (from file :file:`main_unit.adb`). All compilations will
    be done with optimization level 2 and the order of elaboration will be
!   listed by the binder. *gnatmake* will operate in quiet mode, not
    displaying commands it is executing.
  
  
  .. _Compiling_with_gcc:
  
! Compiling with *gcc*
! ====================
  
! This section discusses how to compile Ada programs using the *gcc*
  command. It also describes the set of switches
  that can be used to control the behavior of the compiler.
  
--- 874,925 ----
  systems. In particular, clients are compiled before the units on which
  they depend. The ability of GNAT to compile in any order is critical in
  allowing an order of compilation to be chosen that guarantees that
! ``gnatmake`` will recompute a correct set of new dependencies if
  necessary.
  
! When invoking ``gnatmake`` with several ``file_names``, if a unit is
  imported by several of the executables, it will be recompiled at most once.
  
  Note: when using non-standard naming conventions
  (:ref:`Using_Other_File_Names`), changing through a configuration pragmas
! file the version of a source and invoking ``gnatmake`` to recompile may
  have no effect, if the previous version of the source is still accessible
! by ``gnatmake``. It may be necessary to use the switch
  -f.
  
  
  .. _Examples_of_gnatmake_Usage:
  
! Examples of ``gnatmake`` Usage
! ------------------------------
  
  *gnatmake hello.adb*
    Compile all files necessary to bind and link the main program
!   :file:`hello.adb` (containing unit ``Hello``) and bind and link the
    resulting object files to generate an executable file :file:`hello`.
  
  *gnatmake main1 main2 main3*
    Compile all files necessary to bind and link the main programs
!   :file:`main1.adb` (containing unit ``Main1``), :file:`main2.adb`
!   (containing unit ``Main2``) and :file:`main3.adb`
!   (containing unit ``Main3``) and bind and link the resulting object files
    to generate three executable files :file:`main1`,
    :file:`main2`  and :file:`main3`.
  
  *gnatmake -q Main_Unit -cargs -O2 -bargs -l*
    Compile all files necessary to bind and link the main program unit
!   ``Main_Unit`` (from file :file:`main_unit.adb`). All compilations will
    be done with optimization level 2 and the order of elaboration will be
!   listed by the binder. ``gnatmake`` will operate in quiet mode, not
    displaying commands it is executing.
  
  
  .. _Compiling_with_gcc:
  
! Compiling with ``gcc``
! ======================
  
! This section discusses how to compile Ada programs using the ``gcc``
  command. It also describes the set of switches
  that can be used to control the behavior of the compiler.
  
*************** Compiling Programs
*** 929,935 ****
  ------------------
  
  The first step in creating an executable program is to compile the units
! of the program using the *gcc* command. You must compile the
  following files:
  
  * the body file (:file:`.adb`) for a library level subprogram or generic
--- 929,935 ----
  ------------------
  
  The first step in creating an executable program is to compile the units
! of the program using the ``gcc`` command. You must compile the
  following files:
  
  * the body file (:file:`.adb`) for a library level subprogram or generic
*************** compiled.
*** 955,981 ****
  .. index:: cannot generate code
  
  If you attempt to compile any of these files, you will get one of the
! following error messages (where `fff` is the name of the file you
  compiled):
  
    ::
  
!     cannot generate code for file `fff` (package spec)
      to check package spec, use -gnatc
  
!     cannot generate code for file `fff` (missing subunits)
      to check parent unit, use -gnatc
  
!     cannot generate code for file `fff` (subprogram spec)
      to check subprogram spec, use -gnatc
  
!     cannot generate code for file `fff` (subunit)
      to check subunit, use -gnatc
  
  
  As indicated by the above error messages, if you want to submit
  one of these files to the compiler to check for correct semantics
! without generating code, then use the *-gnatc* switch.
  
  The basic command for compiling a file containing an Ada unit is:
  
--- 955,981 ----
  .. index:: cannot generate code
  
  If you attempt to compile any of these files, you will get one of the
! following error messages (where ``fff`` is the name of the file you
  compiled):
  
    ::
  
!     cannot generate code for file ``fff`` (package spec)
      to check package spec, use -gnatc
  
!     cannot generate code for file ``fff`` (missing subunits)
      to check parent unit, use -gnatc
  
!     cannot generate code for file ``fff`` (subprogram spec)
      to check subprogram spec, use -gnatc
  
!     cannot generate code for file ``fff`` (subunit)
      to check subunit, use -gnatc
  
  
  As indicated by the above error messages, if you want to submit
  one of these files to the compiler to check for correct semantics
! without generating code, then use the :switch:`-gnatc` switch.
  
  The basic command for compiling a file containing an Ada unit is:
  
*************** The basic command for compiling a file c
*** 983,992 ****
  
    $ gcc -c [switches] <file name>
  
! where `file name` is the name of the Ada file (usually
  having an extension :file:`.ads` for a spec or :file:`.adb` for a body).
  You specify the
! :option:`-c` switch to tell *gcc* to compile, but not link, the file.
  The result of a successful compilation is an object file, which has the
  same name as the source file but an extension of :file:`.o` and an Ada
  Library Information (ALI) file, which also has the same name as the
--- 983,992 ----
  
    $ gcc -c [switches] <file name>
  
! where ``file name`` is the name of the Ada file (usually
  having an extension :file:`.ads` for a spec or :file:`.adb` for a body).
  You specify the
! :switch:`-c` switch to tell ``gcc`` to compile, but not link, the file.
  The result of a successful compilation is an object file, which has the
  same name as the source file but an extension of :file:`.o` and an Ada
  Library Information (ALI) file, which also has the same name as the
*************** two output files in the current director
*** 995,1013 ****
  file in any directory using an absolute or relative path specification
  containing the directory information.
  
  .. index::  gnat1
  
! *gcc* is actually a driver program that looks at the extensions of
  the file arguments and loads the appropriate compiler. For example, the
  GNU C compiler is :file:`cc1`, and the Ada compiler is :file:`gnat1`.
  These programs are in directories known to the driver program (in some
  configurations via environment variables you set), but need not be in
! your path. The *gcc* driver also calls the assembler and any other
  utilities needed to complete the generation of the required object
  files.
  
! It is possible to supply several file names on the same *gcc*
! command. This causes *gcc* to call the appropriate compiler for
  each file. For example, the following command lists two separate
  files to be compiled:
  
--- 995,1015 ----
  file in any directory using an absolute or relative path specification
  containing the directory information.
  
+ TESTING: the :switch:`--foobar{NN}` switch
+ 
  .. index::  gnat1
  
! ``gcc`` is actually a driver program that looks at the extensions of
  the file arguments and loads the appropriate compiler. For example, the
  GNU C compiler is :file:`cc1`, and the Ada compiler is :file:`gnat1`.
  These programs are in directories known to the driver program (in some
  configurations via environment variables you set), but need not be in
! your path. The ``gcc`` driver also calls the assembler and any other
  utilities needed to complete the generation of the required object
  files.
  
! It is possible to supply several file names on the same ``gcc``
! command. This causes ``gcc`` to call the appropriate compiler for
  each file. For example, the following command lists two separate
  files to be compiled:
  
*************** files to be compiled:
*** 1016,1028 ****
    $ gcc -c x.adb y.adb
  
  
! calls `gnat1` (the Ada compiler) twice to compile :file:`x.adb` and
  :file:`y.adb`.
  The compiler generates two object files :file:`x.o` and :file:`y.o`
  and the two ALI files :file:`x.ali` and :file:`y.ali`.
  
  Any switches apply to all the files listed, see :ref:`Switches_for_gcc` for a
! list of available *gcc* switches.
  
  .. _Search_Paths_and_the_Run-Time_Library_RTL:
  
--- 1018,1030 ----
    $ gcc -c x.adb y.adb
  
  
! calls ``gnat1`` (the Ada compiler) twice to compile :file:`x.adb` and
  :file:`y.adb`.
  The compiler generates two object files :file:`x.o` and :file:`y.o`
  and the two ALI files :file:`x.ali` and :file:`y.ali`.
  
  Any switches apply to all the files listed, see :ref:`Switches_for_gcc` for a
! list of available ``gcc`` switches.
  
  .. _Search_Paths_and_the_Run-Time_Library_RTL:
  
*************** directories, in the following order:
*** 1042,1048 ****
  * The directory containing the source file of the main unit being compiled
    (the file name on the command line).
  
! * Each directory named by an *-I* switch given on the *gcc*
    command line, in the order given.
  
    .. index:: ADA_PRJ_INCLUDE_FILE
--- 1044,1050 ----
  * The directory containing the source file of the main unit being compiled
    (the file name on the command line).
  
! * Each directory named by an :switch:`-I` switch given on the ``gcc``
    command line, in the order given.
  
    .. index:: ADA_PRJ_INCLUDE_FILE
*************** directories, in the following order:
*** 1066,1102 ****
    GNAT Run Time Library (RTL) source files.
    :ref:`Installing_a_library`
  
! Specifying the switch *-I-*
  inhibits the use of the directory
  containing the source file named in the command line. You can still
  have this directory on your search path, but in this case it must be
! explicitly requested with a *-I* switch.
  
! Specifying the switch *-nostdinc*
  inhibits the search of the default location for the GNAT Run Time
  Library (RTL) source files.
  
  The compiler outputs its object files and ALI files in the current
  working directory.
! Caution: The object file can be redirected with the *-o* switch;
! however, *gcc* and `gnat1` have not been coordinated on this
  so the :file:`ALI` file will not go to the right place. Therefore, you should
! avoid using the *-o* switch.
  
  .. index:: System.IO
  
! The packages `Ada`, `System`, and `Interfaces` and their
! children make up the GNAT RTL, together with the simple `System.IO`
! package used in the `"Hello World"` example. The sources for these units
  are needed by the compiler and are kept together in one directory. Not
  all of the bodies are needed, but all of the sources are kept together
  anyway. In a normal installation, you need not specify these directory
  names when compiling or binding. Either the environment variables or
  the built-in defaults cause these files to be found.
  
! In addition to the language-defined hierarchies (`System`, `Ada` and
! `Interfaces`), the GNAT distribution provides a fourth hierarchy,
! consisting of child units of `GNAT`. This is a collection of generally
  useful types, subprograms, etc. See the :title:`GNAT_Reference_Manual`
  for further details.
  
--- 1068,1104 ----
    GNAT Run Time Library (RTL) source files.
    :ref:`Installing_a_library`
  
! Specifying the switch :switch:`-I-`
  inhibits the use of the directory
  containing the source file named in the command line. You can still
  have this directory on your search path, but in this case it must be
! explicitly requested with a :switch:`-I` switch.
  
! Specifying the switch :switch:`-nostdinc`
  inhibits the search of the default location for the GNAT Run Time
  Library (RTL) source files.
  
  The compiler outputs its object files and ALI files in the current
  working directory.
! Caution: The object file can be redirected with the :switch:`-o` switch;
! however, ``gcc`` and ``gnat1`` have not been coordinated on this
  so the :file:`ALI` file will not go to the right place. Therefore, you should
! avoid using the :switch:`-o` switch.
  
  .. index:: System.IO
  
! The packages ``Ada``, ``System``, and ``Interfaces`` and their
! children make up the GNAT RTL, together with the simple ``System.IO``
! package used in the ``"Hello World"`` example. The sources for these units
  are needed by the compiler and are kept together in one directory. Not
  all of the bodies are needed, but all of the sources are kept together
  anyway. In a normal installation, you need not specify these directory
  names when compiling or binding. Either the environment variables or
  the built-in defaults cause these files to be found.
  
! In addition to the language-defined hierarchies (``System``, ``Ada`` and
! ``Interfaces``), the GNAT distribution provides a fourth hierarchy,
! consisting of child units of ``GNAT``. This is a collection of generally
  useful types, subprograms, etc. See the :title:`GNAT_Reference_Manual`
  for further details.
  
*************** development environments much more flexi
*** 1109,1115 ****
  Order of Compilation Issues
  ---------------------------
  
! If, in our earlier example, there was a spec for the `hello`
  procedure, it would be contained in the file :file:`hello.ads`; yet this
  file would not have to be explicitly compiled. This is the result of the
  model we chose to implement library management. Some of the consequences
--- 1111,1117 ----
  Order of Compilation Issues
  ---------------------------
  
! If, in our earlier example, there was a spec for the ``hello``
  procedure, it would be contained in the file :file:`hello.ads`; yet this
  file would not have to be explicitly compiled. This is the result of the
  model we chose to implement library management. Some of the consequences
*************** Compile body in file :file:`xyz.adb` wit
*** 1155,1161 ****
      $ gcc -c -O2 -gnata xyz-def.adb
  
  Compile the child unit package in file :file:`xyz-def.adb` with extensive
! optimizations, and pragma `Assert`/`Debug` statements
  enabled.
  
  .. code-block:: sh
--- 1157,1163 ----
      $ gcc -c -O2 -gnata xyz-def.adb
  
  Compile the child unit package in file :file:`xyz-def.adb` with extensive
! optimizations, and pragma ``Assert``/`Debug` statements
  enabled.
  
  .. code-block:: sh
*************** mode.
*** 1171,1177 ****
  Compiler Switches
  =================
  
! The *gcc* command accepts switches that control the
  compilation process. These switches are fully described in this section:
  first an alphabetical listing of all switches with a brief description,
  and then functionally grouped sets of switches with more detailed
--- 1173,1179 ----
  Compiler Switches
  =================
  
! The ``gcc`` command accepts switches that control the
  compilation process. These switches are fully described in this section:
  first an alphabetical listing of all switches with a brief description,
  and then functionally grouped sets of switches with more detailed
*************** Alphabetical List of All Switches
*** 1190,1311 ****
  
  .. index:: -b  (gcc)
  
! :samp:`-b {target}`
!   Compile your program to run on `target`, which is the name of a
    system configuration. You must have a GNAT cross-compiler built if
!   `target` is not the same as your host system.
  
  
  .. index:: -B  (gcc)
  
! :samp:`-B{dir}`
!   Load compiler executables (for example, `gnat1`, the Ada compiler)
!   from `dir` instead of the default location. Only use this switch
    when multiple versions of the GNAT compiler are available.
    See the "Options for Directory Search" section in the
    :title:`Using the GNU Compiler Collection (GCC)` manual for further details.
!   You would normally use the *-b* or *-V* switch instead.
  
  .. index:: -c  (gcc)
  
! :samp:`-c`
    Compile. Always use this switch when compiling Ada programs.
  
!   Note: for some other languages when using *gcc*, notably in
    the case of C and C++, it is possible to use
!   use *gcc* without a *-c* switch to
    compile and link in one step. In the case of GNAT, you
    cannot use this approach, because the binder must be run
!   and *gcc* cannot be used to run the GNAT binder.
  
  
  .. index:: -fcallgraph-info  (gcc)
  
! :samp:`-fcallgraph-info[=su,da]`
    Makes the compiler output callgraph information for the program, on a
    per-file basis. The information is generated in the VCG format.  It can
    be decorated with additional, per-node and/or per-edge information, if a
    list of comma-separated markers is additionally specified. When the
!   `su` marker is specified, the callgraph is decorated with stack usage
!   information; it is equivalent to *-fstack-usage*. When the `da`
    marker is specified, the callgraph is decorated with information about
    dynamically allocated objects.
  
  
  .. index:: -fdump-scos  (gcc)
  
! :samp:`-fdump-scos`
    Generates SCO (Source Coverage Obligation) information in the ALI file.
    This information is used by advanced coverage tools. See unit :file:`SCOs`
    in the compiler sources for details in files :file:`scos.ads` and
    :file:`scos.adb`.
  
  
- .. index:: -fdump-xref  (gcc)
- 
- :samp:`-fdump-xref`
-   Generates cross reference information in GLI files for C and C++ sources.
-   The GLI files have the same syntax as the ALI files for Ada, and can be used
-   for source navigation in IDEs and on the command line using e.g. gnatxref
-   and the *--ext=gli* switch.
- 
- 
  .. index:: -flto  (gcc)
  
! :samp:`-flto[={n}]`
    Enables Link Time Optimization. This switch must be used in conjunction
!   with the traditional *-Ox* switches and instructs the compiler to
!   defer most optimizations until the link stage. The advantage of this
    approach is that the compiler can do a whole-program analysis and choose
    the best interprocedural optimization strategy based on a complete view
    of the program, instead of a fragmentary view with the usual approach.
    This can also speed up the compilation of big programs and reduce the
    size of the executable, compared with a traditional per-unit compilation
!   with inlining across modules enabled by the *-gnatn* switch.
    The drawback of this approach is that it may require more memory and that
    the debugging information generated by -g with it might be hardly usable.
!   The switch, as well as the accompanying *-Ox* switches, must be
    specified both for the compilation and the link phases.
!   If the `n` parameter is specified, the optimization and final code
!   generation at link time are executed using `n` parallel jobs by
!   means of an installed *make* program.
  
  
  .. index:: -fno-inline  (gcc)
  
! :samp:`-fno-inline`
!   Suppresses all inlining, unless requested with pragma `Inline_Always`. The
    effect is enforced regardless of other optimization or inlining switches.
    Note that inlining can also be suppressed on a finer-grained basis with
!   pragma `No_Inline`.
  
  
  .. index:: -fno-inline-functions  (gcc)
  
! :samp:`-fno-inline-functions`
    Suppresses automatic inlining of subprograms, which is enabled
!   if *-O3* is used.
  
  
  .. index:: -fno-inline-small-functions  (gcc)
  
! :samp:`-fno-inline-small-functions`
    Suppresses automatic inlining of small subprograms, which is enabled
!   if *-O2* is used.
  
  
  .. index:: -fno-inline-functions-called-once  (gcc)
  
! :samp:`-fno-inline-functions-called-once`
    Suppresses inlining of subprograms local to the unit and called once
!   from within it, which is enabled if *-O1* is used.
  
  
  .. index:: -fno-ivopts  (gcc)
  
! :samp:`-fno-ivopts`
    Suppresses high-level loop induction variable optimizations, which are
!   enabled if *-O1* is used. These optimizations are generally
    profitable but, for some specific cases of loops with numerous uses
    of the iteration variable that follow a common pattern, they may end
    up destroying the regularity that could be exploited at a lower level
--- 1192,1305 ----
  
  .. index:: -b  (gcc)
  
! :switch:`-b {target}`
!   Compile your program to run on ``target``, which is the name of a
    system configuration. You must have a GNAT cross-compiler built if
!   ``target`` is not the same as your host system.
  
  
  .. index:: -B  (gcc)
  
! :switch:`-B{dir}`
!   Load compiler executables (for example, ``gnat1``, the Ada compiler)
!   from ``dir`` instead of the default location. Only use this switch
    when multiple versions of the GNAT compiler are available.
    See the "Options for Directory Search" section in the
    :title:`Using the GNU Compiler Collection (GCC)` manual for further details.
!   You would normally use the :switch:`-b` or :switch:`-V` switch instead.
  
  .. index:: -c  (gcc)
  
! :switch:`-c`
    Compile. Always use this switch when compiling Ada programs.
  
!   Note: for some other languages when using ``gcc``, notably in
    the case of C and C++, it is possible to use
!   use ``gcc`` without a :switch:`-c` switch to
    compile and link in one step. In the case of GNAT, you
    cannot use this approach, because the binder must be run
!   and ``gcc`` cannot be used to run the GNAT binder.
  
  
  .. index:: -fcallgraph-info  (gcc)
  
! :switch:`-fcallgraph-info[=su,da]`
    Makes the compiler output callgraph information for the program, on a
    per-file basis. The information is generated in the VCG format.  It can
    be decorated with additional, per-node and/or per-edge information, if a
    list of comma-separated markers is additionally specified. When the
!   ``su`` marker is specified, the callgraph is decorated with stack usage
!   information; it is equivalent to :switch:`-fstack-usage`. When the ``da``
    marker is specified, the callgraph is decorated with information about
    dynamically allocated objects.
  
  
  .. index:: -fdump-scos  (gcc)
  
! :switch:`-fdump-scos`
    Generates SCO (Source Coverage Obligation) information in the ALI file.
    This information is used by advanced coverage tools. See unit :file:`SCOs`
    in the compiler sources for details in files :file:`scos.ads` and
    :file:`scos.adb`.
  
  
  .. index:: -flto  (gcc)
  
! :switch:`-flto[={n}]`
    Enables Link Time Optimization. This switch must be used in conjunction
!   with the :switch:`-Ox` switches (but not with the :switch:`-gnatn` switch
!   since it is a full replacement for the latter) and instructs the compiler
!   to defer most optimizations until the link stage. The advantage of this
    approach is that the compiler can do a whole-program analysis and choose
    the best interprocedural optimization strategy based on a complete view
    of the program, instead of a fragmentary view with the usual approach.
    This can also speed up the compilation of big programs and reduce the
    size of the executable, compared with a traditional per-unit compilation
!   with inlining across modules enabled by the :switch:`-gnatn` switch.
    The drawback of this approach is that it may require more memory and that
    the debugging information generated by -g with it might be hardly usable.
!   The switch, as well as the accompanying :switch:`-Ox` switches, must be
    specified both for the compilation and the link phases.
!   If the ``n`` parameter is specified, the optimization and final code
!   generation at link time are executed using ``n`` parallel jobs by
!   means of an installed ``make`` program.
  
  
  .. index:: -fno-inline  (gcc)
  
! :switch:`-fno-inline`
!   Suppresses all inlining, unless requested with pragma ``Inline_Always``. The
    effect is enforced regardless of other optimization or inlining switches.
    Note that inlining can also be suppressed on a finer-grained basis with
!   pragma ``No_Inline``.
  
  
  .. index:: -fno-inline-functions  (gcc)
  
! :switch:`-fno-inline-functions`
    Suppresses automatic inlining of subprograms, which is enabled
!   if :switch:`-O3` is used.
  
  
  .. index:: -fno-inline-small-functions  (gcc)
  
! :switch:`-fno-inline-small-functions`
    Suppresses automatic inlining of small subprograms, which is enabled
!   if :switch:`-O2` is used.
  
  
  .. index:: -fno-inline-functions-called-once  (gcc)
  
! :switch:`-fno-inline-functions-called-once`
    Suppresses inlining of subprograms local to the unit and called once
!   from within it, which is enabled if :switch:`-O1` is used.
  
  
  .. index:: -fno-ivopts  (gcc)
  
! :switch:`-fno-ivopts`
    Suppresses high-level loop induction variable optimizations, which are
!   enabled if :switch:`-O1` is used. These optimizations are generally
    profitable but, for some specific cases of loops with numerous uses
    of the iteration variable that follow a common pattern, they may end
    up destroying the regularity that could be exploited at a lower level
*************** Alphabetical List of All Switches
*** 1314,1320 ****
  
  .. index:: -fno-strict-aliasing  (gcc)
  
! :samp:`-fno-strict-aliasing`
    Causes the compiler to avoid assumptions regarding non-aliasing
    of objects of different types. See
    :ref:`Optimization_and_Strict_Aliasing` for details.
--- 1308,1314 ----
  
  .. index:: -fno-strict-aliasing  (gcc)
  
! :switch:`-fno-strict-aliasing`
    Causes the compiler to avoid assumptions regarding non-aliasing
    of objects of different types. See
    :ref:`Optimization_and_Strict_Aliasing` for details.
*************** Alphabetical List of All Switches
*** 1322,1410 ****
  
  .. index:: -fno-strict-overflow  (gcc)
  
! :samp:`-fno-strict-overflow`
    Causes the compiler to avoid assumptions regarding the rules of signed
    integer overflow. These rules specify that signed integer overflow will
    result in a Constraint_Error exception at run time and are enforced in
    default mode by the compiler, so this switch should not be necessary in
!   normal operating mode. It might be useful in conjunction with *-gnato0*
    for very peculiar cases of low-level programming.
  
  
  .. index:: -fstack-check  (gcc)
  
! :samp:`-fstack-check`
    Activates stack checking.
    See :ref:`Stack_Overflow_Checking` for details.
  
  
  .. index:: -fstack-usage  (gcc)
  
! :samp:`-fstack-usage`
    Makes the compiler output stack usage information for the program, on a
    per-subprogram basis. See :ref:`Static_Stack_Usage_Analysis` for details.
  
  
  .. index:: -g  (gcc)
  
! :samp:`-g`
    Generate debugging information. This information is stored in the object
    file and copied from there to the final executable file by the linker,
    where it can be read by the debugger. You must use the
!   *-g* switch if you plan on using the debugger.
  
  
  .. index:: -gnat05  (gcc)
  
! :samp:`-gnat05`
    Allow full Ada 2005 features.
  
  
  .. index:: -gnat12  (gcc)
  
! :samp:`-gnat12`
    Allow full Ada 2012 features.
  
  .. index:: -gnat83  (gcc)
  
  .. index:: -gnat2005  (gcc)
  
! :samp:`-gnat2005`
!   Allow full Ada 2005 features (same as *-gnat05*)
  
  
  .. index:: -gnat2012  (gcc)
  
! :samp:`-gnat2012`
!   Allow full Ada 2012 features (same as *-gnat12*)
  
  
! :samp:`-gnat83`
    Enforce Ada 83 restrictions.
  
  
  .. index:: -gnat95  (gcc)
  
! :samp:`-gnat95`
    Enforce Ada 95 restrictions.
  
    Note: for compatibility with some Ada 95 compilers which support only
!   the `overriding` keyword of Ada 2005, the *-gnatd.D* switch can
!   be used along with *-gnat95* to achieve a similar effect with GNAT.
  
!   *-gnatd.D* instructs GNAT to consider `overriding` as a keyword
    and handle its associated semantic checks, even in Ada 95 mode.
  
  
  .. index:: -gnata  (gcc)
  
! :samp:`-gnata`
!   Assertions enabled. `Pragma Assert` and `pragma Debug` to be
    activated. Note that these pragmas can also be controlled using the
!   configuration pragmas `Assertion_Policy` and `Debug_Policy`.
!   It also activates pragmas `Check`, `Precondition`, and
!   `Postcondition`. Note that these pragmas can also be controlled
!   using the configuration pragma `Check_Policy`. In Ada 2012, it
    also activates all assertions defined in the RM as aspects: preconditions,
    postconditions, type invariants and (sub)type predicates. In all Ada modes,
    corresponding pragmas for type invariants and (sub)type predicates are
--- 1316,1404 ----
  
  .. index:: -fno-strict-overflow  (gcc)
  
! :switch:`-fno-strict-overflow`
    Causes the compiler to avoid assumptions regarding the rules of signed
    integer overflow. These rules specify that signed integer overflow will
    result in a Constraint_Error exception at run time and are enforced in
    default mode by the compiler, so this switch should not be necessary in
!   normal operating mode. It might be useful in conjunction with :switch:`-gnato0`
    for very peculiar cases of low-level programming.
  
  
  .. index:: -fstack-check  (gcc)
  
! :switch:`-fstack-check`
    Activates stack checking.
    See :ref:`Stack_Overflow_Checking` for details.
  
  
  .. index:: -fstack-usage  (gcc)
  
! :switch:`-fstack-usage`
    Makes the compiler output stack usage information for the program, on a
    per-subprogram basis. See :ref:`Static_Stack_Usage_Analysis` for details.
  
  
  .. index:: -g  (gcc)
  
! :switch:`-g`
    Generate debugging information. This information is stored in the object
    file and copied from there to the final executable file by the linker,
    where it can be read by the debugger. You must use the
!   :switch:`-g` switch if you plan on using the debugger.
  
  
  .. index:: -gnat05  (gcc)
  
! :switch:`-gnat05`
    Allow full Ada 2005 features.
  
  
  .. index:: -gnat12  (gcc)
  
! :switch:`-gnat12`
    Allow full Ada 2012 features.
  
  .. index:: -gnat83  (gcc)
  
  .. index:: -gnat2005  (gcc)
  
! :switch:`-gnat2005`
!   Allow full Ada 2005 features (same as :switch:`-gnat05`)
  
  
  .. index:: -gnat2012  (gcc)
  
! :switch:`-gnat2012`
!   Allow full Ada 2012 features (same as :switch:`-gnat12`)
  
  
! :switch:`-gnat83`
    Enforce Ada 83 restrictions.
  
  
  .. index:: -gnat95  (gcc)
  
! :switch:`-gnat95`
    Enforce Ada 95 restrictions.
  
    Note: for compatibility with some Ada 95 compilers which support only
!   the ``overriding`` keyword of Ada 2005, the :switch:`-gnatd.D` switch can
!   be used along with :switch:`-gnat95` to achieve a similar effect with GNAT.
  
!   :switch:`-gnatd.D` instructs GNAT to consider ``overriding`` as a keyword
    and handle its associated semantic checks, even in Ada 95 mode.
  
  
  .. index:: -gnata  (gcc)
  
! :switch:`-gnata`
!   Assertions enabled. ``Pragma Assert`` and ``pragma Debug`` to be
    activated. Note that these pragmas can also be controlled using the
!   configuration pragmas ``Assertion_Policy`` and ``Debug_Policy``.
!   It also activates pragmas ``Check``, ``Precondition``, and
!   ``Postcondition``. Note that these pragmas can also be controlled
!   using the configuration pragma ``Check_Policy``. In Ada 2012, it
    also activates all assertions defined in the RM as aspects: preconditions,
    postconditions, type invariants and (sub)type predicates. In all Ada modes,
    corresponding pragmas for type invariants and (sub)type predicates are
*************** Alphabetical List of All Switches
*** 1416,1456 ****
  
  .. index:: -gnatA  (gcc)
  
! :samp:`-gnatA`
    Avoid processing :file:`gnat.adc`. If a :file:`gnat.adc` file is present,
    it will be ignored.
  
  
  .. index:: -gnatb  (gcc)
  
! :samp:`-gnatb`
    Generate brief messages to :file:`stderr` even if verbose mode set.
  
  
  .. index:: -gnatB  (gcc)
  
! :samp:`-gnatB`
    Assume no invalid (bad) values except for 'Valid attribute use
    (:ref:`Validity_Checking`).
  
  
  .. index:: -gnatc  (gcc)
  
! :samp:`-gnatc`
    Check syntax and semantics only (no code generation attempted). When the
!   compiler is invoked by *gnatmake*, if the switch *-gnatc* is
!   only given to the compiler (after *-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
!   *-gnatc* as a builder switch (before *-cargs* or in package
!   Builder of the project file) then *gnatmake* will not fail because
    it will not look for the object files after compilation, and it will not try
    to build and link.
  
  
  .. index:: -gnatC  (gcc)
  
! :samp:`-gnatC`
    Generate CodePeer intermediate format (no code generation attempted).
    This switch will generate an intermediate representation suitable for
    use by CodePeer (:file:`.scil` files). This switch is not compatible with
--- 1410,1450 ----
  
  .. index:: -gnatA  (gcc)
  
! :switch:`-gnatA`
    Avoid processing :file:`gnat.adc`. If a :file:`gnat.adc` file is present,
    it will be ignored.
  
  
  .. index:: -gnatb  (gcc)
  
! :switch:`-gnatb`
    Generate brief messages to :file:`stderr` even if verbose mode set.
  
  
  .. index:: -gnatB  (gcc)
  
! :switch:`-gnatB`
    Assume no invalid (bad) values except for 'Valid attribute use
    (:ref:`Validity_Checking`).
  
  
  .. index:: -gnatc  (gcc)
  
! :switch:`-gnatc`
    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
    it will not look for the object files after compilation, and it will not try
    to build and link.
  
  
  .. index:: -gnatC  (gcc)
  
! :switch:`-gnatC`
    Generate CodePeer intermediate format (no code generation attempted).
    This switch will generate an intermediate representation suitable for
    use by CodePeer (:file:`.scil` files). This switch is not compatible with
*************** Alphabetical List of All Switches
*** 1460,1468 ****
  
  .. index:: -gnatd  (gcc)
  
! :samp:`-gnatd`
    Specify debug options for the compiler. The string of characters after
!   the *-gnatd* specify the specific debug options. The possible
    characters are 0-9, a-z, A-Z, optionally preceded by a dot. See
    compiler source file :file:`debug.adb` for details of the implemented
    debug options. Certain debug options are relevant to applications
--- 1454,1462 ----
  
  .. index:: -gnatd  (gcc)
  
! :switch:`-gnatd`
    Specify debug options for the compiler. The string of characters after
!   the :switch:`-gnatd` specify the specific debug options. The possible
    characters are 0-9, a-z, A-Z, optionally preceded by a dot. See
    compiler source file :file:`debug.adb` for details of the implemented
    debug options. Certain debug options are relevant to applications
*************** Alphabetical List of All Switches
*** 1472,1487 ****
  
  .. index:: -gnatD[nn]  (gcc)
  
! :samp:`-gnatD`
    Create expanded source files for source level debugging. This switch
    also suppresses generation of cross-reference information
!   (see *-gnatx*). Note that this switch is not allowed if a previous
    -gnatR switch has been given, since these two switches are not compatible.
  
  
  .. index:: -gnateA  (gcc)
  
! :samp:`-gnateA`
    Check that the actual parameters of a subprogram call are not aliases of one
    another. To qualify as aliasing, the actuals must denote objects of a composite
    type, their memory locations must be identical or overlapping, and at least one
--- 1466,1481 ----
  
  .. index:: -gnatD[nn]  (gcc)
  
! :switch:`-gnatD`
    Create expanded source files for source level debugging. This switch
    also suppresses generation of cross-reference information
!   (see :switch:`-gnatx`). Note that this switch is not allowed if a previous
    -gnatR switch has been given, since these two switches are not compatible.
  
  
  .. index:: -gnateA  (gcc)
  
! :switch:`-gnateA`
    Check that the actual parameters of a subprogram call are not aliases of one
    another. To qualify as aliasing, the actuals must denote objects of a composite
    type, their memory locations must be identical or overlapping, and at least one
*************** Alphabetical List of All Switches
*** 1510,1525 ****
        Detect_Aliasing (Obj, Self (Obj));
  
  
!   In the example above, the first call to `Detect_Aliasing` fails with a
!   `Program_Error` at runtime because the actuals for `Val_1` and
!   `Val_2` denote the same object. The second call executes without raising
!   an exception because `Self(Obj)` produces an anonymous object which does
!   not share the memory location of `Obj`.
  
  
  .. index:: -gnatec  (gcc)
  
! :samp:`-gnatec={path}`
    Specify a configuration pragma file
    (the equal sign is optional)
    (:ref:`The_Configuration_Pragmas_Files`).
--- 1504,1519 ----
        Detect_Aliasing (Obj, Self (Obj));
  
  
!   In the example above, the first call to ``Detect_Aliasing`` fails with a
!   ``Program_Error`` at runtime because the actuals for ``Val_1`` and
!   ``Val_2`` denote the same object. The second call executes without raising
!   an exception because ``Self(Obj)`` produces an anonymous object which does
!   not share the memory location of ``Obj``.
  
  
  .. index:: -gnatec  (gcc)
  
! :switch:`-gnatec={path}`
    Specify a configuration pragma file
    (the equal sign is optional)
    (:ref:`The_Configuration_Pragmas_Files`).
*************** Alphabetical List of All Switches
*** 1527,1554 ****
  
  .. index:: -gnateC  (gcc)
  
! :samp:`-gnateC`
    Generate CodePeer messages in a compiler-like format. This switch is only
!   effective if *-gnatcC* is also specified and requires an installation
    of CodePeer.
  
  
  .. index:: -gnated  (gcc)
  
! :samp:`-gnated`
    Disable atomic synchronization
  
  
  .. index:: -gnateD  (gcc)
  
! :samp:`-gnateDsymbol[={value}]`
!   Defines a symbol, associated with `value`, for preprocessing.
    (:ref:`Integrated_Preprocessing`).
  
  
  .. index:: -gnateE  (gcc)
  
! :samp:`-gnateE`
    Generate extra information in exception messages. In particular, display
    extra column information and the value and range associated with index and
    range check failures, and extra column information for access checks.
--- 1521,1548 ----
  
  .. index:: -gnateC  (gcc)
  
! :switch:`-gnateC`
    Generate CodePeer messages in a compiler-like format. This switch is only
!   effective if :switch:`-gnatcC` is also specified and requires an installation
    of CodePeer.
  
  
  .. index:: -gnated  (gcc)
  
! :switch:`-gnated`
    Disable atomic synchronization
  
  
  .. index:: -gnateD  (gcc)
  
! :switch:`-gnateDsymbol[={value}]`
!   Defines a symbol, associated with ``value``, for preprocessing.
    (:ref:`Integrated_Preprocessing`).
  
  
  .. index:: -gnateE  (gcc)
  
! :switch:`-gnateE`
    Generate extra information in exception messages. In particular, display
    extra column information and the value and range associated with index and
    range check failures, and extra column information for access checks.
*************** Alphabetical List of All Switches
*** 1559,1615 ****
  
  .. index:: -gnatef  (gcc)
  
! :samp:`-gnatef`
    Display full source path name in brief error messages.
  
  
  .. index:: -gnateF  (gcc)
  
! :samp:`-gnateF`
    Check for overflow on all floating-point operations, including those
    for unconstrained predefined types. See description of pragma
!   `Check_Float_Overflow` in GNAT RM.
  
  
  .. index:: -gnateg  (gcc)
  
! :samp:`-gnateg`
! :samp:`-gnatceg`
  
!   The `-gnatc` switch must always be specified before this switch, e.g.
!   `-gnatceg`. Generate a C header from the Ada input file. See
    :ref:`Generating_C_Headers_for_Ada_Specifications` for more
    information.
  
  
  .. index:: -gnateG  (gcc)
  
! :samp:`-gnateG`
    Save result of preprocessing in a text file.
  
  
  .. index:: -gnatei  (gcc)
  
! :samp:`-gnatei{nnn}`
    Set maximum number of instantiations during compilation of a single unit to
!   `nnn`. This may be useful in increasing the default maximum of 8000 for
    the rare case when a single unit legitimately exceeds this limit.
  
  
  .. index:: -gnateI  (gcc)
  
! :samp:`-gnateI{nnn}`
    Indicates that the source is a multi-unit source and that the index of the
!   unit to compile is `nnn`. `nnn` needs to be a positive number and need
    to be a valid index in the multi-unit source.
  
  
  .. index:: -gnatel  (gcc)
  
! :samp:`-gnatel`
    This switch can be used with the static elaboration model to issue info
    messages showing
!   where implicit `pragma Elaborate` and `pragma Elaborate_All`
    are generated. This is useful in diagnosing elaboration circularities
    caused by these implicit pragmas when using the static elaboration
    model. See See the section in this guide on elaboration checking for
--- 1553,1609 ----
  
  .. index:: -gnatef  (gcc)
  
! :switch:`-gnatef`
    Display full source path name in brief error messages.
  
  
  .. index:: -gnateF  (gcc)
  
! :switch:`-gnateF`
    Check for overflow on all floating-point operations, including those
    for unconstrained predefined types. See description of pragma
!   ``Check_Float_Overflow`` in GNAT RM.
  
  
  .. index:: -gnateg  (gcc)
  
! :switch:`-gnateg`
! :switch:`-gnatceg`
  
!   The :switch:`-gnatc` switch must always be specified before this switch, e.g.
!   :switch:`-gnatceg`. Generate a C header from the Ada input file. See
    :ref:`Generating_C_Headers_for_Ada_Specifications` for more
    information.
  
  
  .. index:: -gnateG  (gcc)
  
! :switch:`-gnateG`
    Save result of preprocessing in a text file.
  
  
  .. index:: -gnatei  (gcc)
  
! :switch:`-gnatei{nnn}`
    Set maximum number of instantiations during compilation of a single unit to
!   ``nnn``. This may be useful in increasing the default maximum of 8000 for
    the rare case when a single unit legitimately exceeds this limit.
  
  
  .. index:: -gnateI  (gcc)
  
! :switch:`-gnateI{nnn}`
    Indicates that the source is a multi-unit source and that the index of the
!   unit to compile is ``nnn``. ``nnn`` needs to be a positive number and need
    to be a valid index in the multi-unit source.
  
  
  .. index:: -gnatel  (gcc)
  
! :switch:`-gnatel`
    This switch can be used with the static elaboration model to issue info
    messages showing
!   where implicit ``pragma Elaborate`` and ``pragma Elaborate_All``
    are generated. This is useful in diagnosing elaboration circularities
    caused by these implicit pragmas when using the static elaboration
    model. See See the section in this guide on elaboration checking for
*************** Alphabetical List of All Switches
*** 1619,1631 ****
  
  .. index:: -gnatel  (gcc)
  
! :samp:`-gnateL`
    This switch turns off the info messages about implicit elaboration pragmas.
  
  
  .. index:: -gnatem  (gcc)
  
! :samp:`-gnatem={path}`
    Specify a mapping file
    (the equal sign is optional)
    (:ref:`Units_to_Sources_Mapping_Files`).
--- 1613,1625 ----
  
  .. index:: -gnatel  (gcc)
  
! :switch:`-gnateL`
    This switch turns off the info messages about implicit elaboration pragmas.
  
  
  .. index:: -gnatem  (gcc)
  
! :switch:`-gnatem={path}`
    Specify a mapping file
    (the equal sign is optional)
    (:ref:`Units_to_Sources_Mapping_Files`).
*************** Alphabetical List of All Switches
*** 1633,1639 ****
  
  .. index:: -gnatep  (gcc)
  
! :samp:`-gnatep={file}`
    Specify a preprocessing data file
    (the equal sign is optional)
    (:ref:`Integrated_Preprocessing`).
--- 1627,1633 ----
  
  .. index:: -gnatep  (gcc)
  
! :switch:`-gnatep={file}`
    Specify a preprocessing data file
    (the equal sign is optional)
    (:ref:`Integrated_Preprocessing`).
*************** Alphabetical List of All Switches
*** 1641,1647 ****
  
  .. index:: -gnateP  (gcc)
  
! :samp:`-gnateP`
    Turn categorization dependency errors into warnings.
    Ada requires that units that WITH one another have compatible categories, for
    example a Pure unit cannot WITH a Preelaborate unit. If this switch is used,
--- 1635,1641 ----
  
  .. index:: -gnateP  (gcc)
  
! :switch:`-gnateP`
    Turn categorization dependency errors into warnings.
    Ada requires that units that WITH one another have compatible categories, for
    example a Pure unit cannot WITH a Preelaborate unit. If this switch is used,
*************** Alphabetical List of All Switches
*** 1652,1671 ****
  
  .. index:: -gnateS  (gcc)
  
! :samp:`-gnateS`
!   Synonym of *-fdump-scos*, kept for backwards compatibility.
  
  
  .. index:: -gnatet=file  (gcc)
  
! :samp:`-gnatet={path}`
    Generate target dependent information. The format of the output file is
!   described in the section about switch *-gnateT*.
  
  
  .. index:: -gnateT  (gcc)
  
! :samp:`-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
    information of the compiler is replaced by the one read from the input file.
--- 1646,1665 ----
  
  .. index:: -gnateS  (gcc)
  
! :switch:`-gnateS`
!   Synonym of :switch:`-fdump-scos`, kept for backwards compatibility.
  
  
  .. index:: -gnatet=file  (gcc)
  
! :switch:`-gnatet={path}`
    Generate target dependent information. The format of the output file is
!   described in the section about switch :switch:`-gnateT`.
  
  
  .. index:: -gnateT  (gcc)
  
! :switch:`-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
    information of the compiler is replaced by the one read from the input file.
*************** Alphabetical List of All Switches
*** 1674,1680 ****
    the machine on which the tool is run.
  
    The following target dependent values should be defined,
!   where `Nat` denotes a natural integer value, `Pos` denotes a
    positive integer value, and fields marked with a question mark are
    boolean fields, where a value of 0 is False, and a value of 1 is True:
  
--- 1668,1674 ----
    the machine on which the tool is run.
  
    The following target dependent values should be defined,
!   where ``Nat`` denotes a natural integer value, ``Pos`` denotes a
    positive integer value, and fields marked with a question mark are
    boolean fields, where a value of 0 is False, and a value of 1 is True:
  
*************** Alphabetical List of All Switches
*** 1714,1721 ****
  
      name  value
  
!   where `name` is the name of the parameter, spelled out in full,
!   and cased as in the above list, and `value` is an unsigned decimal
    integer. Two or more blanks separates the name from the value.
  
    All the variables must be present, in alphabetical order (i.e. the
--- 1708,1715 ----
  
      name  value
  
!   where ``name`` is the name of the parameter, spelled out in full,
!   and cased as in the above list, and ``value`` is an unsigned decimal
    integer. Two or more blanks separates the name from the value.
  
    All the variables must be present, in alphabetical order (i.e. the
*************** Alphabetical List of All Switches
*** 1731,1741 ****
      name  digs float_rep size alignment
  
  
!   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/V/A for IEEE-754-Binary, Vax_Native,
!   AAMP), `size` is the size in bits, `alignment` is the
    alignment in bits. The name is followed by at least two blanks, fields
    are separated by at least one blank, and a LF character immediately
    follows the alignment field.
--- 1725,1735 ----
      name  digs float_rep size alignment
  
  
!   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/V/A for IEEE-754-Binary, Vax_Native,
!   AAMP), ``size`` is the size in bits, ``alignment`` is the
    alignment in bits. The name is followed by at least two blanks, fields
    are separated by at least one blank, and a LF character immediately
    follows the alignment field.
*************** Alphabetical List of All Switches
*** 1777,1783 ****
  
  .. index:: -gnateu  (gcc)
  
! :samp:`-gnateu`
    Ignore unrecognized validity, warning, and style switches that
    appear after this switch is given. This may be useful when
    compiling sources developed on a later version of the compiler
--- 1771,1777 ----
  
  .. index:: -gnateu  (gcc)
  
! :switch:`-gnateu`
    Ignore unrecognized validity, warning, and style switches that
    appear after this switch is given. This may be useful when
    compiling sources developed on a later version of the compiler
*************** Alphabetical List of All Switches
*** 1787,1800 ****
  
  .. index:: -gnateV  (gcc)
  
! :samp:`-gnateV`
    Check that all actual parameters of a subprogram call are valid according to
    the rules of validity checking (:ref:`Validity_Checking`).
  
  
  .. index:: -gnateY  (gcc)
  
! :samp:`-gnateY`
    Ignore all STYLE_CHECKS pragmas. Full legality checks
    are still carried out, but the pragmas have no effect
    on what style checks are active. This allows all style
--- 1781,1794 ----
  
  .. index:: -gnateV  (gcc)
  
! :switch:`-gnateV`
    Check that all actual parameters of a subprogram call are valid according to
    the rules of validity checking (:ref:`Validity_Checking`).
  
  
  .. index:: -gnateY  (gcc)
  
! :switch:`-gnateY`
    Ignore all STYLE_CHECKS pragmas. Full legality checks
    are still carried out, but the pragmas have no effect
    on what style checks are active. This allows all style
*************** Alphabetical List of All Switches
*** 1803,1861 ****
  
  .. index:: -gnatE  (gcc)
  
! :samp:`-gnatE`
    Full dynamic elaboration checks.
  
  
  .. index:: -gnatf  (gcc)
  
! :samp:`-gnatf`
    Full errors. Multiple errors per line, all undefined references, do not
    attempt to suppress cascaded errors.
  
  
  .. index:: -gnatF  (gcc)
  
! :samp:`-gnatF`
    Externals names are folded to all uppercase.
  
  
  .. index:: -gnatg  (gcc)
  
! :samp:`-gnatg`
    Internal GNAT implementation mode. This should not be used for
    applications programs, it is intended only for use by the compiler
    and its run-time library. For documentation, see the GNAT sources.
!   Note that *-gnatg* implies
!   *-gnatw.ge* and
!   *-gnatyg*
    so that all standard warnings and all standard style options are turned on.
    All warnings and style messages are treated as errors.
  
  
  .. index:: -gnatG[nn]  (gcc)
  
! :samp:`-gnatG=nn`
    List generated expanded code in source form.
  
  
  .. index:: -gnath  (gcc)
  
! :samp:`-gnath`
    Output usage information. The output is written to :file:`stdout`.
  
  
  .. index:: -gnati  (gcc)
  
! :samp:`-gnati{c}`
!   Identifier character set (`c` = 1/2/3/4/8/9/p/f/n/w).
!   For details of the possible selections for `c`,
    see :ref:`Character_Set_Control`.
  
  
  .. index:: -gnatI  (gcc)
  
! :samp:`-gnatI`
    Ignore representation clauses. When this switch is used,
    representation clauses are treated as comments. This is useful
    when initially porting code where you want to ignore rep clause
--- 1797,1855 ----
  
  .. index:: -gnatE  (gcc)
  
! :switch:`-gnatE`
    Full dynamic elaboration checks.
  
  
  .. index:: -gnatf  (gcc)
  
! :switch:`-gnatf`
    Full errors. Multiple errors per line, all undefined references, do not
    attempt to suppress cascaded errors.
  
  
  .. index:: -gnatF  (gcc)
  
! :switch:`-gnatF`
    Externals names are folded to all uppercase.
  
  
  .. index:: -gnatg  (gcc)
  
! :switch:`-gnatg`
    Internal GNAT implementation mode. This should not be used for
    applications programs, it is intended only for use by the compiler
    and its run-time library. For documentation, see the GNAT sources.
!   Note that :switch:`-gnatg` implies
!   :switch:`-gnatw.ge` and
!   :switch:`-gnatyg`
    so that all standard warnings and all standard style options are turned on.
    All warnings and style messages are treated as errors.
  
  
  .. index:: -gnatG[nn]  (gcc)
  
! :switch:`-gnatG=nn`
    List generated expanded code in source form.
  
  
  .. index:: -gnath  (gcc)
  
! :switch:`-gnath`
    Output usage information. The output is written to :file:`stdout`.
  
  
  .. index:: -gnati  (gcc)
  
! :switch:`-gnati{c}`
!   Identifier character set (``c`` = 1/2/3/4/8/9/p/f/n/w).
!   For details of the possible selections for ``c``,
    see :ref:`Character_Set_Control`.
  
  
  .. index:: -gnatI  (gcc)
  
! :switch:`-gnatI`
    Ignore representation clauses. When this switch is used,
    representation clauses are treated as comments. This is useful
    when initially porting code where you want to ignore rep clause
*************** Alphabetical List of All Switches
*** 1864,1899 ****
    are: enumeration_representation_clause, record_representation_clause,
    and attribute_definition_clause for the following attributes:
    Address, Alignment, Bit_Order, Component_Size, Machine_Radix,
!   Object_Size, Size, Small, Stream_Size, and Value_Size.
    Note that this option should be used only for compiling -- the
    code is likely to malfunction at run time.
  
!   Note that when `-gnatct` is used to generate trees for input
!   into `ASIS` tools, these representation clauses are removed
    from the tree and ignored. This means that the tool will not see them.
  
  
  .. index:: -gnatjnn  (gcc)
  
! :samp:`-gnatj{nn}`
!   Reformat error messages to fit on `nn` character lines
  
  
  .. index:: -gnatk  (gcc)
  
! :samp:`-gnatk={n}`
!   Limit file names to `n` (1-999) characters (`k` = krunch).
  
  
  .. index:: -gnatl  (gcc)
  
! :samp:`-gnatl`
    Output full source listing with embedded error messages.
  
  
  .. index:: -gnatL  (gcc)
  
! :samp:`-gnatL`
    Used in conjunction with -gnatG or -gnatD to intersperse original
    source lines (as comment lines with line numbers) in the expanded
    source output.
--- 1858,1894 ----
    are: enumeration_representation_clause, record_representation_clause,
    and attribute_definition_clause for the following attributes:
    Address, Alignment, Bit_Order, Component_Size, Machine_Radix,
!   Object_Size, Scalar_Storage_Order, Size, Small, Stream_Size,
!   and Value_Size. Pragma Default_Scalar_Storage_Order is also ignored.
    Note that this option should be used only for compiling -- the
    code is likely to malfunction at run time.
  
!   Note that when :switch:`-gnatct` is used to generate trees for input
!   into ASIS tools, these representation clauses are removed
    from the tree and ignored. This means that the tool will not see them.
  
  
  .. index:: -gnatjnn  (gcc)
  
! :switch:`-gnatj{nn}`
!   Reformat error messages to fit on ``nn`` character lines
  
  
  .. index:: -gnatk  (gcc)
  
! :switch:`-gnatk={n}`
!   Limit file names to ``n`` (1-999) characters (``k`` = krunch).
  
  
  .. index:: -gnatl  (gcc)
  
! :switch:`-gnatl`
    Output full source listing with embedded error messages.
  
  
  .. index:: -gnatL  (gcc)
  
! :switch:`-gnatL`
    Used in conjunction with -gnatG or -gnatD to intersperse original
    source lines (as comment lines with line numbers) in the expanded
    source output.
*************** Alphabetical List of All Switches
*** 1901,1909 ****
  
  .. index:: -gnatm  (gcc)
  
! :samp:`-gnatm={n}`
!   Limit number of detected error or warning messages to `n`
!   where `n` is in the range 1..999999. The default setting if
    no switch is given is 9999. If the number of warnings reaches this
    limit, then a message is output and further warnings are suppressed,
    but the compilation is continued. If the number of error messages
--- 1896,1904 ----
  
  .. index:: -gnatm  (gcc)
  
! :switch:`-gnatm={n}`
!   Limit number of detected error or warning messages to ``n``
!   where ``n`` is in the range 1..999999. The default setting if
    no switch is given is 9999. If the number of warnings reaches this
    limit, then a message is output and further warnings are suppressed,
    but the compilation is continued. If the number of error messages
*************** Alphabetical List of All Switches
*** 1914,1921 ****
  
  .. index:: -gnatn  (gcc)
  
! :samp:`-gnatn[12]`
!   Activate inlining across modules for subprograms for which pragma `Inline`
    is specified. This inlining is performed by the GCC back-end. An optional
    digit sets the inlining level: 1 for moderate inlining across modules
    or 2 for full inlining across modules. If no inlining level is specified,
--- 1909,1916 ----
  
  .. index:: -gnatn  (gcc)
  
! :switch:`-gnatn[12]`
!   Activate inlining across modules for subprograms for which pragma ``Inline``
    is specified. This inlining is performed by the GCC back-end. An optional
    digit sets the inlining level: 1 for moderate inlining across modules
    or 2 for full inlining across modules. If no inlining level is specified,
*************** Alphabetical List of All Switches
*** 1924,1965 ****
  
  .. index:: -gnatN  (gcc)
  
! :samp:`-gnatN`
    Activate front end inlining for subprograms for which
!   pragma `Inline` is specified. This inlining is performed
    by the front end and will be visible in the
!   *-gnatG* output.
  
    When using a gcc-based back end (in practice this means using any version
    of GNAT other than the JGNAT, .NET or GNAAMP versions), then the use of
!   *-gnatN* is deprecated, and the use of *-gnatn* is preferred.
    Historically front end inlining was more extensive than the gcc back end
    inlining, but that is no longer the case.
  
  
  .. index:: -gnato0  (gcc)
  
! :samp:`-gnato0`
    Suppresses overflow checking. This causes the behavior of the compiler to
    match the default for older versions where overflow checking was suppressed
    by default. This is equivalent to having
!   `pragma Suppress (Overflow_Mode)` in a configuration pragma file.
  
  
  .. index:: -gnato??  (gcc)
  
! :samp:`-gnato??`
    Set default mode for handling generation of code to avoid intermediate
!   arithmetic overflow. Here `??` is two digits, a
!   single digit, or nothing. Each digit is one of the digits `1`
!   through `3`:
  
    ===== ===============================================================
    Digit Interpretation
    ----- ---------------------------------------------------------------
!   *1*   All intermediate overflows checked against base type (`STRICT`)
!   *2*   Minimize intermediate overflows (`MINIMIZED`)
!   *3*   Eliminate intermediate overflows (`ELIMINATED`)
    ===== ===============================================================
  
    If only one digit appears, then it applies to all
--- 1919,1960 ----
  
  .. index:: -gnatN  (gcc)
  
! :switch:`-gnatN`
    Activate front end inlining for subprograms for which
!   pragma ``Inline`` is specified. This inlining is performed
    by the front end and will be visible in the
!   :switch:`-gnatG` output.
  
    When using a gcc-based back end (in practice this means using any version
    of GNAT other than the JGNAT, .NET or GNAAMP versions), then the use of
!   :switch:`-gnatN` is deprecated, and the use of :switch:`-gnatn` is preferred.
    Historically front end inlining was more extensive than the gcc back end
    inlining, but that is no longer the case.
  
  
  .. index:: -gnato0  (gcc)
  
! :switch:`-gnato0`
    Suppresses overflow checking. This causes the behavior of the compiler to
    match the default for older versions where overflow checking was suppressed
    by default. This is equivalent to having
!   ``pragma Suppress (Overflow_Check)`` in a configuration pragma file.
  
  
  .. index:: -gnato??  (gcc)
  
! :switch:`-gnato??`
    Set default mode for handling generation of code to avoid intermediate
!   arithmetic overflow. Here ``??`` is two digits, a
!   single digit, or nothing. Each digit is one of the digits ``1``
!   through ``3``:
  
    ===== ===============================================================
    Digit Interpretation
    ----- ---------------------------------------------------------------
!   *1*   All intermediate overflows checked against base type (``STRICT``)
!   *2*   Minimize intermediate overflows (``MINIMIZED``)
!   *3*   Eliminate intermediate overflows (``ELIMINATED``)
    ===== ===============================================================
  
    If only one digit appears, then it applies to all
*************** Alphabetical List of All Switches
*** 1967,1982 ****
    assertions, pre/postconditions, and type invariants, and the second
    applies within assertions, pre/postconditions, and type invariants.
  
!   If no digits follow the *-gnato*, then it is equivalent to
!   *-gnato11*,
    causing all intermediate overflows to be handled in strict
    mode.
  
    This switch also causes arithmetic overflow checking to be performed
!   (as though `pragma Unsuppress (Overflow_Mode)` had been specified).
  
!   The default if no option *-gnato* is given is that overflow handling
!   is in `STRICT` mode (computations done using the base type), and that
    overflow checking is enabled.
  
    Note that division by zero is a separate check that is not
--- 1962,1977 ----
    assertions, pre/postconditions, and type invariants, and the second
    applies within assertions, pre/postconditions, and type invariants.
  
!   If no digits follow the :switch:`-gnato`, then it is equivalent to
!   :switch:`-gnato11`,
    causing all intermediate overflows to be handled in strict
    mode.
  
    This switch also causes arithmetic overflow checking to be performed
!   (as though ``pragma Unsuppress (Overflow_Check)`` had been specified).
  
!   The default if no option :switch:`-gnato` is given is that overflow handling
!   is in ``STRICT`` mode (computations done using the base type), and that
    overflow checking is enabled.
  
    Note that division by zero is a separate check that is not
*************** Alphabetical List of All Switches
*** 1987,2146 ****
  
  .. index:: -gnatp  (gcc)
  
! :samp:`-gnatp`
    Suppress all checks. See :ref:`Run-Time_Checks` for details. This switch
!   has no effect if cancelled by a subsequent *-gnat-p* switch.
  
  
  .. index:: -gnat-p  (gcc)
  
! :samp:`-gnat-p`
!   Cancel effect of previous *-gnatp* switch.
  
  
  .. index:: -gnatP  (gcc)
  
! :samp:`-gnatP`
    Enable polling. This is required on some systems (notably Windows NT) to
    obtain asynchronous abort and asynchronous transfer of control capability.
!   See `Pragma_Polling` in the :title:`GNAT_Reference_Manual` for full
    details.
  
  
  .. index:: -gnatq  (gcc)
  
! :samp:`-gnatq`
    Don't quit. Try semantics, even if parse errors.
  
  
  .. index:: -gnatQ  (gcc)
  
! :samp:`-gnatQ`
    Don't quit. Generate :file:`ALI` and tree files even if illegalities.
    Note that code generation is still suppressed in the presence of any
!   errors, so even with *-gnatQ* no object file is generated.
  
  
  .. index:: -gnatr  (gcc)
  
! :samp:`-gnatr`
    Treat pragma Restrictions as Restriction_Warnings.
  
  
  .. index:: -gnatR  (gcc)
  
! :samp:`-gnatR[0/1/2/3[s]]`
!   Output representation information for declared types and objects.
!   Note that this switch is not allowed if a previous `-gnatD` switch has
!   been given, since these two switches are not compatible.
! 
! 
! :samp:`-gnatRm[s]`
!   Output convention and parameter passing mechanisms for all subprograms.
  
  
  .. index:: -gnats  (gcc)
  
! :samp:`-gnats`
    Syntax check only.
  
  
  .. index:: -gnatS  (gcc)
  
! :samp:`-gnatS`
    Print package Standard.
  
  
  .. index:: -gnatt  (gcc)
  
! :samp:`-gnatt`
    Generate tree output file.
  
  
  .. index:: -gnatT  (gcc)
  
! :samp:`-gnatT{nnn}`
!   All compiler tables start at `nnn` times usual starting size.
  
  
  .. index:: -gnatu  (gcc)
  
! :samp:`-gnatu`
    List units for this compilation.
  
  
  .. index:: -gnatU  (gcc)
  
! :samp:`-gnatU`
    Tag all error messages with the unique string 'error:'
  
  
  .. index:: -gnatv  (gcc)
  
! :samp:`-gnatv`
    Verbose mode. Full error output with source lines to :file:`stdout`.
  
  
  .. index:: -gnatV  (gcc)
  
! :samp:`-gnatV`
    Control level of validity checking (:ref:`Validity_Checking`).
  
  
  .. index:: -gnatw  (gcc)
  
! :samp:`-gnatw{xxx}`
    Warning mode where
!   `xxx` is a string of option letters that denotes
    the exact warnings that
    are enabled or disabled (:ref:`Warning_Message_Control`).
  
  
  .. index:: -gnatW  (gcc)
  
! :samp:`-gnatW{e}`
    Wide character encoding method
!   (`e`\ =n/h/u/s/e/8).
  
  
  .. index:: -gnatx  (gcc)
  
! :samp:`-gnatx`
    Suppress generation of cross-reference information.
  
  
  .. index:: -gnatX  (gcc)
  
! :samp:`-gnatX`
    Enable GNAT implementation extensions and latest Ada version.
  
  
  .. index:: -gnaty  (gcc)
  
! :samp:`-gnaty`
    Enable built-in style checks (:ref:`Style_Checking`).
  
  
  .. index:: -gnatz  (gcc)
  
! :samp:`-gnatz{m}`
    Distribution stub generation and compilation
!   (`m`\ =r/c for receiver/caller stubs).
  
  
  .. index:: -I  (gcc)
  
! :samp:`-I{dir}`
    .. index:: RTL
  
!   Direct GNAT to search the `dir` directory for source files needed by
    the current compilation
    (see :ref:`Search_Paths_and_the_Run-Time_Library_RTL`).
  
  
  .. index:: -I-  (gcc)
  
! :samp:`-I-`
    .. index:: RTL
  
    Except for the source file named in the command line, do not look for source
--- 1982,2138 ----
  
  .. index:: -gnatp  (gcc)
  
! :switch:`-gnatp`
    Suppress all checks. See :ref:`Run-Time_Checks` for details. This switch
!   has no effect if cancelled by a subsequent :switch:`-gnat-p` switch.
  
  
  .. index:: -gnat-p  (gcc)
  
! :switch:`-gnat-p`
!   Cancel effect of previous :switch:`-gnatp` switch.
  
  
  .. index:: -gnatP  (gcc)
  
! :switch:`-gnatP`
    Enable polling. This is required on some systems (notably Windows NT) to
    obtain asynchronous abort and asynchronous transfer of control capability.
!   See ``Pragma_Polling`` in the :title:`GNAT_Reference_Manual` for full
    details.
  
  
  .. index:: -gnatq  (gcc)
  
! :switch:`-gnatq`
    Don't quit. Try semantics, even if parse errors.
  
  
  .. index:: -gnatQ  (gcc)
  
! :switch:`-gnatQ`
    Don't quit. Generate :file:`ALI` and tree files even if illegalities.
    Note that code generation is still suppressed in the presence of any
!   errors, so even with :switch:`-gnatQ` no object file is generated.
  
  
  .. index:: -gnatr  (gcc)
  
! :switch:`-gnatr`
    Treat pragma Restrictions as Restriction_Warnings.
  
  
  .. index:: -gnatR  (gcc)
  
! :switch:`-gnatR[0/1/2/3][e][m][s]`
!   Output representation information for declared types, objects and
!   subprograms. Note that this switch is not allowed if a previous
!   :switch:`-gnatD` switch has been given, since these two switches
!   are not compatible.
  
  
  .. index:: -gnats  (gcc)
  
! :switch:`-gnats`
    Syntax check only.
  
  
  .. index:: -gnatS  (gcc)
  
! :switch:`-gnatS`
    Print package Standard.
  
  
  .. index:: -gnatt  (gcc)
  
! :switch:`-gnatt`
    Generate tree output file.
  
  
  .. index:: -gnatT  (gcc)
  
! :switch:`-gnatT{nnn}`
!   All compiler tables start at ``nnn`` times usual starting size.
  
  
  .. index:: -gnatu  (gcc)
  
! :switch:`-gnatu`
    List units for this compilation.
  
  
  .. index:: -gnatU  (gcc)
  
! :switch:`-gnatU`
    Tag all error messages with the unique string 'error:'
  
  
  .. index:: -gnatv  (gcc)
  
! :switch:`-gnatv`
    Verbose mode. Full error output with source lines to :file:`stdout`.
  
  
  .. index:: -gnatV  (gcc)
  
! :switch:`-gnatV`
    Control level of validity checking (:ref:`Validity_Checking`).
  
  
  .. index:: -gnatw  (gcc)
  
! :switch:`-gnatw{xxx}`
    Warning mode where
!   ``xxx`` is a string of option letters that denotes
    the exact warnings that
    are enabled or disabled (:ref:`Warning_Message_Control`).
  
  
  .. index:: -gnatW  (gcc)
  
! :switch:`-gnatW{e}`
    Wide character encoding method
!   (``e``\ =n/h/u/s/e/8).
  
  
  .. index:: -gnatx  (gcc)
  
! :switch:`-gnatx`
    Suppress generation of cross-reference information.
  
  
  .. index:: -gnatX  (gcc)
  
! :switch:`-gnatX`
    Enable GNAT implementation extensions and latest Ada version.
  
  
  .. index:: -gnaty  (gcc)
  
! :switch:`-gnaty`
    Enable built-in style checks (:ref:`Style_Checking`).
  
  
  .. index:: -gnatz  (gcc)
  
! :switch:`-gnatz{m}`
    Distribution stub generation and compilation
!   (``m``\ =r/c for receiver/caller stubs).
  
  
  .. index:: -I  (gcc)
  
! :switch:`-I{dir}`
    .. index:: RTL
  
!   Direct GNAT to search the ``dir`` directory for source files needed by
    the current compilation
    (see :ref:`Search_Paths_and_the_Run-Time_Library_RTL`).
  
  
  .. index:: -I-  (gcc)
  
! :switch:`-I-`
    .. index:: RTL
  
    Except for the source file named in the command line, do not look for source
*************** Alphabetical List of All Switches
*** 2150,2157 ****
  
  .. index:: -o  (gcc)
  
! :samp:`-o {file}`
!   This switch is used in *gcc* to redirect the generated object file
    and its associated ALI file. Beware of this switch with GNAT, because it may
    cause the object file and ALI file to have different names which in turn
    may confuse the binder and the linker.
--- 2142,2149 ----
  
  .. index:: -o  (gcc)
  
! :switch:`-o {file}`
!   This switch is used in ``gcc`` to redirect the generated object file
    and its associated ALI file. Beware of this switch with GNAT, because it may
    cause the object file and ALI file to have different names which in turn
    may confuse the binder and the linker.
*************** Alphabetical List of All Switches
*** 2159,2191 ****
  
  .. index:: -nostdinc  (gcc)
  
! :samp:`-nostdinc`
    Inhibit the search of the default location for the GNAT Run Time
    Library (RTL) source files.
  
  
  .. index:: -nostdlib  (gcc)
  
! :samp:`-nostdlib`
    Inhibit the search of the default location for the GNAT Run Time
    Library (RTL) ALI files.
  
  
  .. index:: -O  (gcc)
  
! :samp:`-O[{n}]`
!   `n` controls the optimization level:
  
    ======= ==================================================================
     *n*     Effect
    ------- ------------------------------------------------------------------
!   *0*      No optimization, the default setting if no *-O* appears
!   *1*      Normal optimization, the default if you specify *-O* without an
             operand. A good compromise between code quality and compilation
             time.
    *2*      Extensive optimization, may improve execution time, possibly at
             the cost of substantially increased compilation time.
!   *3*      Same as *-O2*, and also includes inline expansion for small
             subprograms in the same unit.
    *s*      Optimize space usage
    ======= ==================================================================
--- 2151,2183 ----
  
  .. index:: -nostdinc  (gcc)
  
! :switch:`-nostdinc`
    Inhibit the search of the default location for the GNAT Run Time
    Library (RTL) source files.
  
  
  .. index:: -nostdlib  (gcc)
  
! :switch:`-nostdlib`
    Inhibit the search of the default location for the GNAT Run Time
    Library (RTL) ALI files.
  
  
  .. index:: -O  (gcc)
  
! :switch:`-O[{n}]`
!   ``n`` controls the optimization level:
  
    ======= ==================================================================
     *n*     Effect
    ------- ------------------------------------------------------------------
!   *0*      No optimization, the default setting if no :switch:`-O` appears
!   *1*      Normal optimization, the default if you specify :switch:`-O` without an
             operand. A good compromise between code quality and compilation
             time.
    *2*      Extensive optimization, may improve execution time, possibly at
             the cost of substantially increased compilation time.
!   *3*      Same as :switch:`-O2`, and also includes inline expansion for small
             subprograms in the same unit.
    *s*      Optimize space usage
    ======= ==================================================================
*************** Alphabetical List of All Switches
*** 2195,2216 ****
  
  .. index:: -pass-exit-codes  (gcc)
  
! :samp:`-pass-exit-codes`
    Catch exit codes from the compiler and use the most meaningful as
    exit status.
  
  
  .. index:: --RTS  (gcc)
  
! :samp:`--RTS={rts-path}`
    Specifies the default location of the runtime library. Same meaning as the
!   equivalent *gnatmake* flag (:ref:`Switches_for_gnatmake`).
  
  
  .. index:: -S  (gcc)
  
! :samp:`-S`
!   Used in place of *-c* to
    cause the assembler source file to be
    generated, using :file:`.s` as the extension,
    instead of the object file.
--- 2187,2208 ----
  
  .. index:: -pass-exit-codes  (gcc)
  
! :switch:`-pass-exit-codes`
    Catch exit codes from the compiler and use the most meaningful as
    exit status.
  
  
  .. index:: --RTS  (gcc)
  
! :switch:`--RTS={rts-path}`
    Specifies the default location of the runtime library. Same meaning as the
!   equivalent ``gnatmake`` flag (:ref:`Switches_for_gnatmake`).
  
  
  .. index:: -S  (gcc)
  
! :switch:`-S`
!   Used in place of :switch:`-c` to
    cause the assembler source file to be
    generated, using :file:`.s` as the extension,
    instead of the object file.
*************** Alphabetical List of All Switches
*** 2219,2251 ****
  
  .. index:: -fverbose-asm  (gcc)
  
! :samp:`-fverbose-asm`
!   Used in conjunction with *-S*
    to cause the generated assembly code file to be annotated with variable
    names, making it significantly easier to follow.
  
  
  .. index:: -v  (gcc)
  
! :samp:`-v`
!   Show commands generated by the *gcc* driver. Normally used only for
    debugging purposes or if you need to be sure what version of the
    compiler you are executing.
  
  
  .. index:: -V  (gcc)
  
! :samp:`-V {ver}`
!   Execute `ver` version of the compiler. This is the *gcc*
    version, not the GNAT version.
  
  
  .. index:: -w  (gcc)
  
! :samp:`-w`
    Turn off warnings generated by the back end of the compiler. Use of
    this switch also causes the default for front end warnings to be set
!   to suppress (as though *-gnatws* had appeared at the start of
    the options).
  
  
--- 2211,2243 ----
  
  .. index:: -fverbose-asm  (gcc)
  
! :switch:`-fverbose-asm`
!   Used in conjunction with :switch:`-S`
    to cause the generated assembly code file to be annotated with variable
    names, making it significantly easier to follow.
  
  
  .. index:: -v  (gcc)
  
! :switch:`-v`
!   Show commands generated by the ``gcc`` driver. Normally used only for
    debugging purposes or if you need to be sure what version of the
    compiler you are executing.
  
  
  .. index:: -V  (gcc)
  
! :switch:`-V {ver}`
!   Execute ``ver`` version of the compiler. This is the ``gcc``
    version, not the GNAT version.
  
  
  .. index:: -w  (gcc)
  
! :switch:`-w`
    Turn off warnings generated by the back end of the compiler. Use of
    this switch also causes the default for front end warnings to be set
!   to suppress (as though :switch:`-gnatws` had appeared at the start of
    the options).
  
  
*************** is equivalent to specifying the followin
*** 2267,2297 ****
  The following restrictions apply to the combination of switches
  in this manner:
  
! * The switch *-gnatc* if combined with other switches must come
    first in the string.
  
! * The switch *-gnats* if combined with other switches must come
    first in the string.
  
  * The switches
!   *-gnatzc* and *-gnatzr* may not be combined with any other
    switches, and only one of them may appear in the command line.
  
! * The switch *-gnat-p* may not be combined with any other switch.
  
! * Once a 'y' appears in the string (that is a use of the *-gnaty*
    switch), then all further characters in the switch are interpreted
!   as style modifiers (see description of *-gnaty*).
  
! * Once a 'd' appears in the string (that is a use of the *-gnatd*
    switch), then all further characters in the switch are interpreted
!   as debug flags (see description of *-gnatd*).
  
! * Once a 'w' appears in the string (that is a use of the *-gnatw*
    switch), then all further characters in the switch are interpreted
!   as warning mode modifiers (see description of *-gnatw*).
  
! * Once a 'V' appears in the string (that is a use of the *-gnatV*
    switch), then all further characters in the switch are interpreted
    as validity checking options (:ref:`Validity_Checking`).
  
--- 2259,2289 ----
  The following restrictions apply to the combination of switches
  in this manner:
  
! * The switch :switch:`-gnatc` if combined with other switches must come
    first in the string.
  
! * The switch :switch:`-gnats` if combined with other switches must come
    first in the string.
  
  * The switches
!   :switch:`-gnatzc` and :switch:`-gnatzr` may not be combined with any other
    switches, and only one of them may appear in the command line.
  
! * The switch :switch:`-gnat-p` may not be combined with any other switch.
  
! * Once a 'y' appears in the string (that is a use of the :switch:`-gnaty`
    switch), then all further characters in the switch are interpreted
!   as style modifiers (see description of :switch:`-gnaty`).
  
! * Once a 'd' appears in the string (that is a use of the :switch:`-gnatd`
    switch), then all further characters in the switch are interpreted
!   as debug flags (see description of :switch:`-gnatd`).
  
! * Once a 'w' appears in the string (that is a use of the :switch:`-gnatw`
    switch), then all further characters in the switch are interpreted
!   as warning mode modifiers (see description of :switch:`-gnatw`).
  
! * Once a 'V' appears in the string (that is a use of the :switch:`-gnatV`
    switch), then all further characters in the switch are interpreted
    as validity checking options (:ref:`Validity_Checking`).
  
*************** file) and have the following form:
*** 2316,2322 ****
  
  The first integer after the file name is the line number in the file,
  and the second integer is the column number within the line.
! `GPS` can parse the error messages
  and point to the referenced character.
  The following switches provide control over the error message
  format:
--- 2308,2314 ----
  
  The first integer after the file name is the line number in the file,
  and the second integer is the column number within the line.
! ``GPS`` can parse the error messages
  and point to the referenced character.
  The following switches provide control over the error message
  format:
*************** format:
*** 2324,2335 ****
  
  .. index:: -gnatv  (gcc)
  
! :samp:`-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
!   *-gnatv* switch would generate:
  
    ::
  
--- 2316,2327 ----
  
  .. index:: -gnatv  (gcc)
  
! :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:
*** 2341,2355 ****
      >>> ";" should be "is"
  
  
!   The vertical bar indicates the location of the error, and the :samp:`>>>`
    prefix can be used to search for error messages. When this switch is
    used the only source lines output are those with errors.
  
  
  .. index:: -gnatl  (gcc)
  
! :samp:`-gnatl`
!   The `l` stands for list.
    This switch causes a full listing of
    the file to be generated. In the case where a body is
    compiled, the corresponding spec is also listed, along
--- 2333,2347 ----
      >>> ";" should be "is"
  
  
!   The vertical bar indicates the location of the error, and the ``>>>``
    prefix can be used to search for error messages. When this switch is
    used the only source lines output are those with errors.
  
  
  .. index:: -gnatl  (gcc)
  
! :switch:`-gnatl`
!   The ``l`` stands for list.
    This switch causes a full listing of
    the file to be generated. In the case where a body is
    compiled, the corresponding spec is also listed, along
*************** format:
*** 2392,2398 ****
           5. end;
  
  
!   When you specify the *-gnatv* or *-gnatl* switches and
    standard output is redirected, a brief summary is written to
    :file:`stderr` (standard error) giving the number of error messages and
    warning messages generated.
--- 2384,2390 ----
           5. end;
  
  
!   When you specify the :switch:`-gnatv` or :switch:`-gnatl` switches and
    standard output is redirected, a brief summary is written to
    :file:`stderr` (standard error) giving the number of error messages and
    warning messages generated.
*************** format:
*** 2400,2418 ****
  
  .. index:: -gnatl=fname  (gcc)
  
! :samp:`-gnatl={fname}`
!   This has the same effect as *-gnatl* except that the output is
    written to a file instead of to standard output. If the given name
    :file:`fname` does not start with a period, then it is the full name
    of the file to be written. If :file:`fname` is an extension, it is
    appended to the name of the file being compiled. For example, if
!   file :file:`xyz.adb` is compiled with *-gnatl=.lst*,
    then the output is written to file xyz.adb.lst.
  
  
  .. index:: -gnatU  (gcc)
  
! :samp:`-gnatU`
    This switch forces all error messages to be preceded by the unique
    string 'error:'. This means that error messages take a few more
    characters in space, but allows easy searching for and identification
--- 2392,2410 ----
  
  .. index:: -gnatl=fname  (gcc)
  
! :switch:`-gnatl={fname}`
!   This has the same effect as :switch:`-gnatl` except that the output is
    written to a file instead of to standard output. If the given name
    :file:`fname` does not start with a period, then it is the full name
    of the file to be written. If :file:`fname` is an extension, it is
    appended to the name of the file being compiled. For example, if
!   file :file:`xyz.adb` is compiled with :switch:`-gnatl=.lst`,
    then the output is written to file xyz.adb.lst.
  
  
  .. index:: -gnatU  (gcc)
  
! :switch:`-gnatU`
    This switch forces all error messages to be preceded by the unique
    string 'error:'. This means that error messages take a few more
    characters in space, but allows easy searching for and identification
*************** format:
*** 2421,2428 ****
  
  .. index:: -gnatb  (gcc)
  
! :samp:`-gnatb`
!   The `b` stands for brief.
    This switch causes GNAT to generate the
    brief format error messages to :file:`stderr` (the standard error
    file) as well as the verbose
--- 2413,2420 ----
  
  .. index:: -gnatb  (gcc)
  
! :switch:`-gnatb`
!   The ``b`` stands for brief.
    This switch causes GNAT to generate the
    brief format error messages to :file:`stderr` (the standard error
    file) as well as the verbose
*************** format:
*** 2432,2443 ****
  
  .. index:: -gnatm  (gcc)
  
! :samp:`-gnatm={n}`
!   The `m` stands for maximum.
!   `n` is a decimal integer in the
    range of 1 to 999999 and limits the number of error or warning
    messages to be generated. For example, using
!   *-gnatm2* might yield
  
    ::
  
--- 2424,2435 ----
  
  .. index:: -gnatm  (gcc)
  
! :switch:`-gnatm={n}`
!   The ``m`` stands for maximum.
!   ``n`` is a decimal integer in the
    range of 1 to 999999 and limits the number of error or warning
    messages to be generated. For example, using
!   :switch:`-gnatm2` might yield
  
    ::
  
*************** format:
*** 2455,2469 ****
    is abandoned. A value of zero means that no limit applies.
  
    Note that the equal sign is optional, so the switches
!   *-gnatm2* and *-gnatm=2* are equivalent.
  
  
  .. index:: -gnatf  (gcc)
  
! :samp:`-gnatf`
    .. index:: Error messages, suppressing
  
!   The `f` stands for full.
    Normally, the compiler suppresses error messages that are likely to be
    redundant. This switch causes all error
    messages to be generated. In particular, in the case of
--- 2447,2461 ----
    is abandoned. A value of zero means that no limit applies.
  
    Note that the equal sign is optional, so the switches
!   :switch:`-gnatm2` and :switch:`-gnatm=2` are equivalent.
  
  
  .. index:: -gnatf  (gcc)
  
! :switch:`-gnatf`
    .. index:: Error messages, suppressing
  
!   The ``f`` stands for full.
    Normally, the compiler suppresses error messages that are likely to be
    redundant. This switch causes all error
    messages to be generated. In particular, in the case of
*************** format:
*** 2475,2482 ****
      e.adb:7:07: "V" is undefined (more references follow)
  
    where the parenthetical comment warns that there are additional
!   references to the variable `V`. Compiling the same program with the
!   *-gnatf* switch yields
  
    ::
  
--- 2467,2474 ----
      e.adb:7:07: "V" is undefined (more references follow)
  
    where the parenthetical comment warns that there are additional
!   references to the variable ``V``. Compiling the same program with the
!   :switch:`-gnatf` switch yields
  
    ::
  
*************** format:
*** 2487,2493 ****
      e.adb:9:07: "V" is undefined
      e.adb:9:12: "V" is undefined
  
!   The *-gnatf* switch also generates additional information for
    some error messages.  Some examples are:
  
    * Details on possibly non-portable unchecked conversion
--- 2479,2485 ----
      e.adb:9:07: "V" is undefined
      e.adb:9:12: "V" is undefined
  
!   The :switch:`-gnatf` switch also generates additional information for
    some error messages.  Some examples are:
  
    * Details on possibly non-portable unchecked conversion
*************** format:
*** 2499,2511 ****
  
  .. index:: -gnatjnn  (gcc)
  
! :samp:`-gnatjnn`
!   In normal operation mode (or if *-gnatj0* is used), then error messages
    with continuation lines are treated as though the continuation lines were
    separate messages (and so a warning with two continuation lines counts as
    three warnings, and is listed as three separate messages).
  
!   If the *-gnatjnn* switch is used with a positive value for nn, then
    messages are output in a different manner. A message and all its continuation
    lines are treated as a unit, and count as only one warning or message in the
    statistics totals. Furthermore, the message is reformatted so that no line
--- 2491,2503 ----
  
  .. index:: -gnatjnn  (gcc)
  
! :switch:`-gnatjnn`
!   In normal operation mode (or if :switch:`-gnatj0` is used), then error messages
    with continuation lines are treated as though the continuation lines were
    separate messages (and so a warning with two continuation lines counts as
    three warnings, and is listed as three separate messages).
  
!   If the :switch:`-gnatjnn` switch is used with a positive value for nn, then
    messages are output in a different manner. A message and all its continuation
    lines are treated as a unit, and count as only one warning or message in the
    statistics totals. Furthermore, the message is reformatted so that no line
*************** format:
*** 2514,2521 ****
  
  .. index:: -gnatq  (gcc)
  
! :samp:`-gnatq`
!   The `q` stands for quit (really 'don't quit').
    In normal operation mode, the compiler first parses the program and
    determines if there are any syntax errors. If there are, appropriate
    error messages are generated and compilation is immediately terminated.
--- 2506,2513 ----
  
  .. index:: -gnatq  (gcc)
  
! :switch:`-gnatq`
!   The ``q`` stands for quit (really 'don't quit').
    In normal operation mode, the compiler first parses the program and
    determines if there are any syntax errors. If there are, appropriate
    error messages are generated and compilation is immediately terminated.
*************** format:
*** 2528,2558 ****
  
  .. index:: -gnatQ  (gcc)
  
! :samp:`-gnatQ`
    In normal operation mode, the :file:`ALI` file is not generated if any
!   illegalities are detected in the program. The use of *-gnatQ* forces
    generation of the :file:`ALI` file. This file is marked as being in
    error, so it cannot be used for binding purposes, but it does contain
    reasonably complete cross-reference information, and thus may be useful
    for use by tools (e.g., semantic browsing tools or integrated development
    environments) that are driven from the :file:`ALI` file. This switch
!   implies *-gnatq*, since the semantic phase must be run to get a
    meaningful ALI file.
  
!   In addition, if *-gnatt* is also specified, then the tree file is
    generated even if there are illegalities. It may be useful in this case
!   to also specify *-gnatq* to ensure that full semantic processing
    occurs. The resulting tree file can be processed by ASIS, for the purpose
    of providing partial information about illegal units, but if the error
    causes the tree to be badly malformed, then ASIS may crash during the
    analysis.
  
!   When *-gnatQ* is used and the generated :file:`ALI` file is marked as
!   being in error, *gnatmake* will attempt to recompile the source when it
!   finds such an :file:`ALI` file, including with switch *-gnatc*.
  
!   Note that *-gnatQ* has no effect if *-gnats* is specified,
!   since ALI files are never generated if *-gnats* is set.
  
  
  .. _Warning_Message_Control:
--- 2520,2550 ----
  
  .. index:: -gnatQ  (gcc)
  
! :switch:`-gnatQ`
    In normal operation mode, the :file:`ALI` file is not generated if any
!   illegalities are detected in the program. The use of :switch:`-gnatQ` forces
    generation of the :file:`ALI` file. This file is marked as being in
    error, so it cannot be used for binding purposes, but it does contain
    reasonably complete cross-reference information, and thus may be useful
    for use by tools (e.g., semantic browsing tools or integrated development
    environments) that are driven from the :file:`ALI` file. This switch
!   implies :switch:`-gnatq`, since the semantic phase must be run to get a
    meaningful ALI file.
  
!   In addition, if :switch:`-gnatt` is also specified, then the tree file is
    generated even if there are illegalities. It may be useful in this case
!   to also specify :switch:`-gnatq` to ensure that full semantic processing
    occurs. The resulting tree file can be processed by ASIS, for the purpose
    of providing partial information about illegal units, but if the error
    causes the tree to be badly malformed, then ASIS may crash during the
    analysis.
  
!   When :switch:`-gnatQ` is used and the generated :file:`ALI` file is marked as
!   being in error, ``gnatmake`` will attempt to recompile the source when it
!   finds such an :file:`ALI` file, including with switch :switch:`-gnatc`.
  
!   Note that :switch:`-gnatQ` has no effect if :switch:`-gnats` is specified,
!   since ALI files are never generated if :switch:`-gnats` is set.
  
  
  .. _Warning_Message_Control:
*************** GNAT considers a large number of situati
*** 2583,2589 ****
  for the generation of warning messages. As always, warnings are not
  definite indications of errors. For example, if you do an out-of-range
  assignment with the deliberate intention of raising a
! `Constraint_Error` exception, then the warning that may be
  issued does not indicate an error. Some of the situations for which GNAT
  issues warnings (at least some of the time) are given in the following
  list. This list is not complete, and new warnings are often added to
--- 2575,2581 ----
  for the generation of warning messages. As always, warnings are not
  definite indications of errors. For example, if you do an out-of-range
  assignment with the deliberate intention of raising a
! ``Constraint_Error`` exception, then the warning that may be
  issued does not indicate an error. Some of the situations for which GNAT
  issues warnings (at least some of the time) are given in the following
  list. This list is not complete, and new warnings are often added to
*************** of the kinds of warnings that are genera
*** 2613,2627 ****
  
  * Variables that are referenced before being initialized
  
! * Task entries with no corresponding `accept` statement
  
! * Duplicate accepts for the same task entry in a `select`
  
  * Objects that take too much storage
  
  * Unchecked conversion between types of differing sizes
  
! * Missing `return` statement along some execution path in a function
  
  * Incorrect (unrecognized) pragmas
  
--- 2605,2619 ----
  
  * Variables that are referenced before being initialized
  
! * Task entries with no corresponding ``accept`` statement
  
! * Duplicate accepts for the same task entry in a ``select``
  
  * Objects that take too much storage
  
  * Unchecked conversion between types of differing sizes
  
! * Missing ``return`` statement along some execution path in a function
  
  * Incorrect (unrecognized) pragmas
  
*************** of the kinds of warnings that are genera
*** 2649,2657 ****
  
  * Unused |with| clauses
  
! * `Bit_Order` usage that does not have any effect
  
! * `Standard.Duration` used to resolve universal fixed expression
  
  * Dereference of possibly null value
  
--- 2641,2649 ----
  
  * Unused |with| clauses
  
! * ``Bit_Order`` usage that does not have any effect
  
! * ``Standard.Duration`` used to resolve universal fixed expression
  
  * Dereference of possibly null value
  
*************** of the kinds of warnings that are genera
*** 2663,2669 ****
  
  * Unreferenced or unmodified variables. Note that a special
    exemption applies to variables which contain any of the substrings
!   `DISCARD, DUMMY, IGNORE, JUNK, UNUSED`, in any casing. Such variables
    are considered likely to be intentionally used in a situation where
    otherwise a warning would be given, so warnings of this kind are
    always suppressed for such variables.
--- 2655,2661 ----
  
  * Unreferenced or unmodified variables. Note that a special
    exemption applies to variables which contain any of the substrings
!   ``DISCARD, DUMMY, IGNORE, JUNK, UNUSED``, in any casing. Such variables
    are considered likely to be intentionally used in a situation where
    otherwise a warning would be given, so warnings of this kind are
    always suppressed for such variables.
*************** of the kinds of warnings that are genera
*** 2684,2690 ****
  
  * Access before elaboration detected at compile time
  
! * A range in a `for` loop that is known to be null or might be null
  
  
  The following section lists compiler switches that are available
--- 2676,2682 ----
  
  * Access before elaboration detected at compile time
  
! * A range in a ``for`` loop that is known to be null or might be null
  
  
  The following section lists compiler switches that are available
*************** of the pragma in the :title:`GNAT_Refere
*** 2696,2702 ****
  
  .. index:: -gnatwa  (gcc)
  
! :samp:`-gnatwa`
    *Activate most optional warnings.*
  
    This switch activates most optional warning messages.  See the remaining list
--- 2688,2694 ----
  
  .. index:: -gnatwa  (gcc)
  
! :switch:`-gnatwa`
    *Activate most optional warnings.*
  
    This switch activates most optional warning messages.  See the remaining list
*************** of the pragma in the :title:`GNAT_Refere
*** 2705,2763 ****
    switch are:
  
  
!   * :samp:`-gnatwd` (implicit dereferencing)
  
!   * :samp:`-gnatw.d` (tag warnings with -gnatw switch)
  
!   * :samp:`-gnatwh` (hiding)
  
!   * :samp:`-gnatw.h` (holes in record layouts)
  
!   * :samp:`-gnatw.k` (redefinition of names in standard)
  
!   * :samp:`-gnatwl` (elaboration warnings)
  
!   * :samp:`-gnatw.l` (inherited aspects)
  
!   * :samp:`-gnatw.n` (atomic synchronization)
  
!   * :samp:`-gnatwo` (address clause overlay)
  
!   * :samp:`-gnatw.o` (values set by out parameters ignored)
  
!   * :samp:`-gnatw.s` (overridden size clause)
  
!   * :samp:`-gnatwt` (tracking of deleted conditional code)
  
!   * :samp:`-gnatw.u` (unordered enumeration)
  
!   * :samp:`-gnatw.w` (use of Warnings Off)
  
!   * :samp:`-gnatw.y` (reasons for package needing body)
  
    All other optional warnings are turned on.
  
  
  .. index:: -gnatwA  (gcc)
  
! :samp:`-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
!   individually controlled. Note that unlike switch *-gnatws*, the
!   use of switch *-gnatwA* does not suppress warnings that are
    normally given unconditionally and cannot be individually controlled
    (for example, the warning about a missing exit path in a function).
!   Also, again unlike switch *-gnatws*, warnings suppressed by
!   the use of switch *-gnatwA* can be individually turned back
!   on. For example the use of switch *-gnatwA* followed by
!   switch *-gnatwd* will suppress all optional warnings except
    the warnings for implicit dereferencing.
  
  .. index:: -gnatw.a  (gcc)
  
! :samp:`-gnatw.a`
    *Activate warnings on failing assertions.*
  
    .. index:: Assert failures
--- 2697,2759 ----
    switch are:
  
  
!   * :switch:`-gnatwd` (implicit dereferencing)
  
!   * :switch:`-gnatw.d` (tag warnings with -gnatw switch)
  
!   * :switch:`-gnatwh` (hiding)
  
!   * :switch:`-gnatw.h` (holes in record layouts)
  
!   * :switch:`-gnatw.j` (late primitives of tagged types)
  
!   * :switch:`-gnatw.k` (redefinition of names in standard)
  
!   * :switch:`-gnatwl` (elaboration warnings)
  
!   * :switch:`-gnatw.l` (inherited aspects)
  
!   * :switch:`-gnatw.n` (atomic synchronization)
  
!   * :switch:`-gnatwo` (address clause overlay)
  
!   * :switch:`-gnatw.o` (values set by out parameters ignored)
  
!   * :switch:`-gnatw.q` (questionable layout of record types)
  
!   * :switch:`-gnatw.s` (overridden size clause)
  
!   * :switch:`-gnatwt` (tracking of deleted conditional code)
  
!   * :switch:`-gnatw.u` (unordered enumeration)
! 
!   * :switch:`-gnatw.w` (use of Warnings Off)
! 
!   * :switch:`-gnatw.y` (reasons for package needing body)
  
    All other optional warnings are turned on.
  
  
  .. index:: -gnatwA  (gcc)
  
! :switch:`-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
!   individually controlled. Note that unlike switch :switch:`-gnatws`, the
!   use of switch :switch:`-gnatwA` does not suppress warnings that are
    normally given unconditionally and cannot be individually controlled
    (for example, the warning about a missing exit path in a function).
!   Also, again unlike switch :switch:`-gnatws`, warnings suppressed by
!   the use of switch :switch:`-gnatwA` can be individually turned back
!   on. For example the use of switch :switch:`-gnatwA` followed by
!   switch :switch:`-gnatwd` will suppress all optional warnings except
    the warnings for implicit dereferencing.
  
  .. index:: -gnatw.a  (gcc)
  
! :switch:`-gnatw.a`
    *Activate warnings on failing assertions.*
  
    .. index:: Assert failures
*************** of the pragma in the :title:`GNAT_Refere
*** 2770,2776 ****
  
  .. index:: -gnatw.A  (gcc)
  
! :samp:`-gnatw.A`
    *Suppress warnings on failing assertions.*
  
    .. index:: Assert failures
--- 2766,2772 ----
  
  .. index:: -gnatw.A  (gcc)
  
! :switch:`-gnatw.A`
    *Suppress warnings on failing assertions.*
  
    .. index:: Assert failures
*************** of the pragma in the :title:`GNAT_Refere
*** 2781,2787 ****
  
  .. index:: -gnatwb  (gcc)
  
! :samp:`-gnatwb`
    *Activate warnings on bad fixed values.*
  
    .. index:: Bad fixed values
--- 2777,2783 ----
  
  .. index:: -gnatwb  (gcc)
  
! :switch:`-gnatwb`
    *Activate warnings on bad fixed values.*
  
    .. index:: Bad fixed values
*************** of the pragma in the :title:`GNAT_Refere
*** 2801,2807 ****
  
  .. index:: -gnatwB  (gcc)
  
! :samp:`-gnatwB`
    *Suppress warnings on bad fixed values.*
  
    This switch suppresses warnings for static fixed-point expressions whose
--- 2797,2803 ----
  
  .. index:: -gnatwB  (gcc)
  
! :switch:`-gnatwB`
    *Suppress warnings on bad fixed values.*
  
    This switch suppresses warnings for static fixed-point expressions whose
*************** of the pragma in the :title:`GNAT_Refere
*** 2810,2816 ****
  
  .. index:: -gnatw.b  (gcc)
  
! :samp:`-gnatw.b`
    *Activate warnings on biased representation.*
  
    .. index:: Biased representation
--- 2806,2812 ----
  
  .. index:: -gnatw.b  (gcc)
  
! :switch:`-gnatw.b`
    *Activate warnings on biased representation.*
  
    .. index:: Biased representation
*************** of the pragma in the :title:`GNAT_Refere
*** 2823,2829 ****
  
  .. index:: -gnatwB  (gcc)
  
! :samp:`-gnatw.B`
    *Suppress warnings on biased representation.*
  
    This switch suppresses warnings for representation clauses that force the use
--- 2819,2825 ----
  
  .. index:: -gnatwB  (gcc)
  
! :switch:`-gnatw.B`
    *Suppress warnings on biased representation.*
  
    This switch suppresses warnings for representation clauses that force the use
*************** of the pragma in the :title:`GNAT_Refere
*** 2832,2838 ****
  
  .. index:: -gnatwc  (gcc)
  
! :samp:`-gnatwc`
    *Activate warnings on conditionals.*
  
    .. index:: Conditionals, constant
--- 2828,2834 ----
  
  .. index:: -gnatwc  (gcc)
  
! :switch:`-gnatwc`
    *Activate warnings on conditionals.*
  
    .. index:: Conditionals, constant
*************** of the pragma in the :title:`GNAT_Refere
*** 2851,2857 ****
    If the compiler can tell that only the equality condition is possible,
    then it will warn that the '>' or '<' part of the test
    is useless and that the operator could be replaced by '='.
!   An example would be comparing a `Natural` variable <= 0.
  
    This warning option also generates warnings if
    one or both tests is optimized away in a membership test for integer
--- 2847,2853 ----
    If the compiler can tell that only the equality condition is possible,
    then it will warn that the '>' or '<' part of the test
    is useless and that the operator could be replaced by '='.
!   An example would be comparing a ``Natural`` variable <= 0.
  
    This warning option also generates warnings if
    one or both tests is optimized away in a membership test for integer
*************** of the pragma in the :title:`GNAT_Refere
*** 2859,2870 ****
    enumeration types are not included, since it is common for such tests
    to include an end point.
  
!   This warning can also be turned on using *-gnatwa*.
  
  
  .. index:: -gnatwC  (gcc)
  
! :samp:`-gnatwC`
    *Suppress warnings on conditionals.*
  
    This switch suppresses warnings for conditional expressions used in
--- 2855,2866 ----
    enumeration types are not included, since it is common for such tests
    to include an end point.
  
!   This warning can also be turned on using :switch:`-gnatwa`.
  
  
  .. index:: -gnatwC  (gcc)
  
! :switch:`-gnatwC`
    *Suppress warnings on conditionals.*
  
    This switch suppresses warnings for conditional expressions used in
*************** of the pragma in the :title:`GNAT_Refere
*** 2873,2879 ****
  
  .. index:: -gnatw.c  (gcc)
  
! :samp:`-gnatw.c`
    *Activate warnings on missing component clauses.*
  
    .. index:: Component clause, missing
--- 2869,2875 ----
  
  .. index:: -gnatw.c  (gcc)
  
! :switch:`-gnatw.c`
    *Activate warnings on missing component clauses.*
  
    .. index:: Component clause, missing
*************** of the pragma in the :title:`GNAT_Refere
*** 2886,2892 ****
  
  .. index:: -gnatwC  (gcc)
  
! :samp:`-gnatw.C`
    *Suppress warnings on missing component clauses.*
  
    This switch suppresses warnings for record components that are
--- 2882,2888 ----
  
  .. index:: -gnatwC  (gcc)
  
! :switch:`-gnatw.C`
    *Suppress warnings on missing component clauses.*
  
    This switch suppresses warnings for record components that are
*************** of the pragma in the :title:`GNAT_Refere
*** 2895,2915 ****
  
  .. index:: -gnatwd  (gcc)
  
! :samp:`-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
!   explicit `.all` will generate a warning. With this warning
    enabled, access checks occur only at points where an explicit
!   `.all` appears in the source code (assuming no warnings are
    generated as a result of this switch). The default is that such
    warnings are not generated.
  
  
  .. index:: -gnatwD  (gcc)
  
! :samp:`-gnatwD`
    *Suppress warnings on implicit dereferencing.*
  
    .. index:: Implicit dereferencing
--- 2891,2911 ----
  
  .. index:: -gnatwd  (gcc)
  
! :switch:`-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
!   explicit ``.all`` will generate a warning. With this warning
    enabled, access checks occur only at points where an explicit
!   ``.all`` appears in the source code (assuming no warnings are
    generated as a result of this switch). The default is that such
    warnings are not generated.
  
  
  .. index:: -gnatwD  (gcc)
  
! :switch:`-gnatwD`
    *Suppress warnings on implicit dereferencing.*
  
    .. index:: Implicit dereferencing
*************** of the pragma in the :title:`GNAT_Refere
*** 2922,2951 ****
  
  .. index:: -gnatw.d  (gcc)
  
! :samp:`-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:
  
      - *[-gnatw?]*
!       Used to tag warnings controlled by the switch *-gnatwx* where x
        is a letter a-z.
  
  
      - *[-gnatw.?]*
!       Used to tag warnings controlled by the switch *-gnatw.x* where x
        is a letter a-z.
  
  
      - *[-gnatel]*
        Used to tag elaboration information (info) messages generated when the
!       static model of elaboration is used and the *-gnatel* switch is set.
  
  
      - *[restriction warning]*
        Used to tag warning messages for restriction violations, activated by use
!       of the pragma *Restriction_Warnings*.
  
  
      - *[warning-as-error]*
--- 2918,2947 ----
  
  .. index:: -gnatw.d  (gcc)
  
! :switch:`-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:
  
      - *[-gnatw?]*
!       Used to tag warnings controlled by the switch :switch:`-gnatwx` where x
        is a letter a-z.
  
  
      - *[-gnatw.?]*
!       Used to tag warnings controlled by the switch :switch:`-gnatw.x` where x
        is a letter a-z.
  
  
      - *[-gnatel]*
        Used to tag elaboration information (info) messages generated when the
!       static model of elaboration is used and the :switch:`-gnatel` switch is set.
  
  
      - *[restriction warning]*
        Used to tag warning messages for restriction violations, activated by use
!       of the pragma ``Restriction_Warnings``.
  
  
      - *[warning-as-error]*
*************** of the pragma in the :title:`GNAT_Refere
*** 2957,2980 ****
      - *[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 *-gnatws*.
  
  
  
  .. index:: -gnatw.d  (gcc)
  
! :samp:`-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
!   `-gnatw.d`.
  
  
  .. index:: -gnatwe  (gcc)
  .. index:: Warnings, treat as error
  
! :samp:`-gnatwe`
    *Treat warnings and style checks as errors.*
  
    This switch causes warning messages and style check messages to be
--- 2953,2976 ----
      - *[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 :switch:`-gnatws`.
  
  
  
  .. index:: -gnatw.d  (gcc)
  
! :switch:`-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
!   :switch:`-gnatw.d`.
  
  
  .. index:: -gnatwe  (gcc)
  .. index:: Warnings, treat as error
  
! :switch:`-gnatwe`
    *Treat warnings and style checks as errors.*
  
    This switch causes warning messages and style check messages to be
*************** of the pragma in the :title:`GNAT_Refere
*** 2988,3035 ****
  
  .. index:: -gnatw.e  (gcc)
  
! :samp:`-gnatw.e`
    *Activate every optional warning.*
  
    .. index:: Warnings, activate every optional warning
  
    This switch activates all optional warnings, including those which
!   are not activated by `-gnatwa`. The use of this switch is not
    recommended for normal use. If you turn this switch on, it is almost
    certain that you will get large numbers of useless warnings. The
!   warnings that are excluded from `-gnatwa` are typically highly
    specialized warnings that are suitable for use only in code that has
    been specifically designed according to specialized coding rules.
  
  
  .. index:: -gnatwf  (gcc)
  
! :samp:`-gnatwf`
    *Activate warnings on unreferenced formals.*
  
    .. index:: Formals, unreferenced
  
    This switch causes a warning to be generated if a formal parameter
    is not referenced in the body of the subprogram. This warning can
!   also be turned on using *-gnatwu*. The
    default is that these warnings are not generated.
  
  
  .. index:: -gnatwF  (gcc)
  
! :samp:`-gnatwF`
    *Suppress warnings on unreferenced formals.*
  
    This switch suppresses warnings for unreferenced formal
    parameters. Note that the
!   combination *-gnatwu* followed by *-gnatwF* has the
    effect of warning on unreferenced entities other than subprogram
    formals.
  
  
  .. index:: -gnatwg  (gcc)
  
! :samp:`-gnatwg`
    *Activate warnings on unrecognized pragmas.*
  
    .. index:: Pragmas, unrecognized
--- 2984,3041 ----
  
  .. index:: -gnatw.e  (gcc)
  
! :switch:`-gnatw.e`
    *Activate every optional warning.*
  
    .. index:: Warnings, activate every optional warning
  
    This switch activates all optional warnings, including those which
!   are not activated by :switch:`-gnatwa`. The use of this switch is not
    recommended for normal use. If you turn this switch on, it is almost
    certain that you will get large numbers of useless warnings. The
!   warnings that are excluded from :switch:`-gnatwa` are typically highly
    specialized warnings that are suitable for use only in code that has
    been specifically designed according to specialized coding rules.
  
  
+ .. index:: -gnatwE  (gcc)
+ .. index:: Warnings, treat as error
+ 
+ :switch:`-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.
+ 
+ 
  .. index:: -gnatwf  (gcc)
  
! :switch:`-gnatwf`
    *Activate warnings on unreferenced formals.*
  
    .. index:: Formals, unreferenced
  
    This switch causes a warning to be generated if a formal parameter
    is not referenced in the body of the subprogram. This warning can
!   also be turned on using :switch:`-gnatwu`. The
    default is that these warnings are not generated.
  
  
  .. index:: -gnatwF  (gcc)
  
! :switch:`-gnatwF`
    *Suppress warnings on unreferenced formals.*
  
    This switch suppresses warnings for unreferenced formal
    parameters. Note that the
!   combination :switch:`-gnatwu` followed by :switch:`-gnatwF` has the
    effect of warning on unreferenced entities other than subprogram
    formals.
  
  
  .. index:: -gnatwg  (gcc)
  
! :switch:`-gnatwg`
    *Activate warnings on unrecognized pragmas.*
  
    .. index:: Pragmas, unrecognized
*************** of the pragma in the :title:`GNAT_Refere
*** 3043,3049 ****
  
  .. index:: -gnatwG  (gcc)
  
! :samp:`-gnatwG`
    *Suppress warnings on unrecognized pragmas.*
  
    This switch suppresses warnings for unrecognized pragmas.
--- 3049,3055 ----
  
  .. index:: -gnatwG  (gcc)
  
! :switch:`-gnatwG`
    *Suppress warnings on unrecognized pragmas.*
  
    This switch suppresses warnings for unrecognized pragmas.
*************** of the pragma in the :title:`GNAT_Refere
*** 3051,3068 ****
  
  .. index:: -gnatw.g  (gcc)
  
! :samp:`-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
!   *-gnatwAao.sI.C.V.X*
    but more warnings may be added in the future without advanced notice.
  
  
  .. index:: -gnatwh  (gcc)
  
! :samp:`-gnatwh`
    *Activate warnings on hiding.*
  
    .. index:: Hiding of Declarations
--- 3057,3074 ----
  
  .. index:: -gnatw.g  (gcc)
  
! :switch:`-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
!   :switch:`-gnatwAao.q.s.CI.V.X.Z`
    but more warnings may be added in the future without advanced notice.
  
  
  .. index:: -gnatwh  (gcc)
  
! :switch:`-gnatwh`
    *Activate warnings on hiding.*
  
    .. index:: Hiding of Declarations
*************** of the pragma in the :title:`GNAT_Refere
*** 3075,3081 ****
  
  .. index:: -gnatwH  (gcc)
  
! :samp:`-gnatwH`
    *Suppress warnings on hiding.*
  
    This switch suppresses warnings on hiding declarations.
--- 3081,3087 ----
  
  .. index:: -gnatwH  (gcc)
  
! :switch:`-gnatwH`
    *Suppress warnings on hiding.*
  
    This switch suppresses warnings on hiding declarations.
*************** of the pragma in the :title:`GNAT_Refere
*** 3083,3089 ****
  
  .. index:: -gnatw.h  (gcc)
  
! :samp:`-gnatw.h`
    *Activate warnings on holes/gaps in records.*
  
    .. index:: Record Representation (gaps)
--- 3089,3095 ----
  
  .. index:: -gnatw.h  (gcc)
  
! :switch:`-gnatw.h`
    *Activate warnings on holes/gaps in records.*
  
    .. index:: Record Representation (gaps)
*************** of the pragma in the :title:`GNAT_Refere
*** 3096,3102 ****
  
  .. index:: -gnatw.H  (gcc)
  
! :samp:`-gnatw.H`
    *Suppress warnings on holes/gaps in records.*
  
    This switch suppresses warnings on component clauses in record
--- 3102,3108 ----
  
  .. index:: -gnatw.H  (gcc)
  
! :switch:`-gnatw.H`
    *Suppress warnings on holes/gaps in records.*
  
    This switch suppresses warnings on component clauses in record
*************** of the pragma in the :title:`GNAT_Refere
*** 3105,3117 ****
  
  .. index:: -gnatwi  (gcc)
  
! :samp:`-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 `Ada`,
!   `Interfaces`, `GNAT`,
!   or `System`
    hierarchies that is not
    documented in either the Ada Reference Manual or the GNAT
    Programmer's Reference Manual. Such units are intended only
--- 3111,3123 ----
  
  .. index:: -gnatwi  (gcc)
  
! :switch:`-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 ``Ada``,
!   ``Interfaces``, ``GNAT``,
!   or ``System``
    hierarchies that is not
    documented in either the Ada Reference Manual or the GNAT
    Programmer's Reference Manual. Such units are intended only
*************** of the pragma in the :title:`GNAT_Refere
*** 3121,3127 ****
  
  .. index:: -gnatwI  (gcc)
  
! :samp:`-gnatwI`
    *Disable warnings on implementation units.*
  
    This switch disables warnings for a |with| of an internal GNAT
--- 3127,3133 ----
  
  .. index:: -gnatwI  (gcc)
  
! :switch:`-gnatwI`
    *Disable warnings on implementation units.*
  
    This switch disables warnings for a |with| of an internal GNAT
*************** of the pragma in the :title:`GNAT_Refere
*** 3130,3136 ****
  
  .. index:: -gnatw.i  (gcc)
  
! :samp:`-gnatw.i`
    *Activate warnings on overlapping actuals.*
  
    This switch enables a warning on statically detectable overlapping actuals in
--- 3136,3142 ----
  
  .. index:: -gnatw.i  (gcc)
  
! :switch:`-gnatw.i`
    *Activate warnings on overlapping actuals.*
  
    This switch enables a warning on statically detectable overlapping actuals in
*************** of the pragma in the :title:`GNAT_Refere
*** 3140,3146 ****
  
  .. index:: -gnatw.I  (gcc)
  
! :samp:`-gnatw.I`
    *Disable warnings on overlapping actuals.*
  
    This switch disables warnings on overlapping actuals in a call..
--- 3146,3152 ----
  
  .. index:: -gnatw.I  (gcc)
  
! :switch:`-gnatw.I`
    *Disable warnings on overlapping actuals.*
  
    This switch disables warnings on overlapping actuals in a call..
*************** of the pragma in the :title:`GNAT_Refere
*** 3148,3154 ****
  
  .. index:: -gnatwj  (gcc)
  
! :samp:`-gnatwj`
    *Activate warnings on obsolescent features (Annex J).*
  
    .. index:: Features, obsolescent
--- 3154,3160 ----
  
  .. index:: -gnatwj  (gcc)
  
! :switch:`-gnatwj`
    *Activate warnings on obsolescent features (Annex J).*
  
    .. index:: Features, obsolescent
*************** of the pragma in the :title:`GNAT_Refere
*** 3156,3194 ****
    .. index:: Obsolescent features
  
    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.
  
    In addition to the above cases, warnings are also generated for
    GNAT features that have been provided in past versions but which
    have been superseded (typically by features in the new Ada standard).
!   For example, `pragma Ravenscar` will be flagged since its
!   function is replaced by `pragma Profile(Ravenscar)`, and
!   `pragma Interface_Name` will be flagged since its function
!   is replaced by `pragma Import`.
  
    Note that this warning option functions differently from the
!   restriction `No_Obsolescent_Features` in two respects.
    First, the restriction applies only to annex J features.
!   Second, the restriction does flag uses of package `ASCII`.
  
  
  .. index:: -gnatwJ  (gcc)
  
! :samp:`-gnatwJ`
    *Suppress warnings on obsolescent features (Annex J).*
  
    This switch disables warnings on use of obsolescent features.
  
  
  .. index:: -gnatwk  (gcc)
  
! :samp:`-gnatwk`
    *Activate warnings on variables that could be constants.*
  
    This switch activates warnings for variables that are initialized but
--- 3162,3218 ----
    .. index:: Obsolescent features
  
    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.
  
    In addition to the above cases, warnings are also generated for
    GNAT features that have been provided in past versions but which
    have been superseded (typically by features in the new Ada standard).
!   For example, ``pragma Ravenscar`` will be flagged since its
!   function is replaced by ``pragma Profile(Ravenscar)``, and
!   ``pragma Interface_Name`` will be flagged since its function
!   is replaced by ``pragma Import``.
  
    Note that this warning option functions differently from the
!   restriction ``No_Obsolescent_Features`` in two respects.
    First, the restriction applies only to annex J features.
!   Second, the restriction does flag uses of package ``ASCII``.
  
  
  .. index:: -gnatwJ  (gcc)
  
! :switch:`-gnatwJ`
    *Suppress warnings on obsolescent features (Annex J).*
  
    This switch disables warnings on use of obsolescent features.
  
  
+ .. index:: -gnatw.j  (gcc)
+ 
+ :switch:`-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.
+ 
+ 
+ .. index:: -gnatw.J  (gcc)
+ 
+ :switch:`-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.
+ 
+ 
  .. index:: -gnatwk  (gcc)
  
! :switch:`-gnatwk`
    *Activate warnings on variables that could be constants.*
  
    This switch activates warnings for variables that are initialized but
*************** of the pragma in the :title:`GNAT_Refere
*** 3198,3204 ****
  
  .. index:: -gnatwK  (gcc)
  
! :samp:`-gnatwK`
    *Suppress warnings on variables that could be constants.*
  
    This switch disables warnings on variables that could be declared constants.
--- 3222,3228 ----
  
  .. index:: -gnatwK  (gcc)
  
! :switch:`-gnatwK`
    *Suppress warnings on variables that could be constants.*
  
    This switch disables warnings on variables that could be declared constants.
*************** of the pragma in the :title:`GNAT_Refere
*** 3206,3212 ****
  
  .. index:: -gnatw.k  (gcc)
  
! :samp:`-gnatw.k`
    *Activate warnings on redefinition of names in standard.*
  
    This switch activates warnings for declarations that declare a name that
--- 3230,3236 ----
  
  .. index:: -gnatw.k  (gcc)
  
! :switch:`-gnatw.k`
    *Activate warnings on redefinition of names in standard.*
  
    This switch activates warnings for declarations that declare a name that
*************** of the pragma in the :title:`GNAT_Refere
*** 3219,3225 ****
  
  .. index:: -gnatwK  (gcc)
  
! :samp:`-gnatw.K`
    *Suppress warnings on redefinition of names in standard.*
  
    This switch activates warnings for declarations that declare a name that
--- 3243,3249 ----
  
  .. index:: -gnatwK  (gcc)
  
! :switch:`-gnatw.K`
    *Suppress warnings on redefinition of names in standard.*
  
    This switch activates warnings for declarations that declare a name that
*************** of the pragma in the :title:`GNAT_Refere
*** 3228,3242 ****
  
  .. index:: -gnatwl  (gcc)
  
! :samp:`-gnatwl`
    *Activate warnings for elaboration pragmas.*
  
    .. index:: Elaboration, warnings
  
    This switch activates warnings for possible elaboration problems,
    including suspicious use
!   of `Elaborate` pragmas, when using the static elaboration model, and
!   possible situations that may raise `Program_Error` when using the
    dynamic elaboration model.
    See the section in this guide on elaboration checking for further details.
    The default is that such warnings
--- 3252,3266 ----
  
  .. index:: -gnatwl  (gcc)
  
! :switch:`-gnatwl`
    *Activate warnings for elaboration pragmas.*
  
    .. index:: Elaboration, warnings
  
    This switch activates warnings for possible elaboration problems,
    including suspicious use
!   of ``Elaborate`` pragmas, when using the static elaboration model, and
!   possible situations that may raise ``Program_Error`` when using the
    dynamic elaboration model.
    See the section in this guide on elaboration checking for further details.
    The default is that such warnings
*************** of the pragma in the :title:`GNAT_Refere
*** 3245,3251 ****
  
  .. index:: -gnatwL  (gcc)
  
! :samp:`-gnatwL`
    *Suppress warnings for elaboration pragmas.*
  
    This switch suppresses warnings for possible elaboration problems.
--- 3269,3275 ----
  
  .. index:: -gnatwL  (gcc)
  
! :switch:`-gnatwL`
    *Suppress warnings for elaboration pragmas.*
  
    This switch suppresses warnings for possible elaboration problems.
*************** of the pragma in the :title:`GNAT_Refere
*** 3253,3259 ****
  
  .. index:: -gnatw.l  (gcc)
  
! :samp:`-gnatw.l`
    *List inherited aspects.*
  
    This switch causes the compiler to list inherited invariants,
--- 3277,3283 ----
  
  .. index:: -gnatw.l  (gcc)
  
! :switch:`-gnatw.l`
    *List inherited aspects.*
  
    This switch causes the compiler to list inherited invariants,
*************** of the pragma in the :title:`GNAT_Refere
*** 3263,3269 ****
  
  .. index:: -gnatw.L  (gcc)
  
! :samp:`-gnatw.L`
    *Suppress listing of inherited aspects.*
  
    This switch suppresses listing of inherited aspects.
--- 3287,3293 ----
  
  .. index:: -gnatw.L  (gcc)
  
! :switch:`-gnatw.L`
    *Suppress listing of inherited aspects.*
  
    This switch suppresses listing of inherited aspects.
*************** of the pragma in the :title:`GNAT_Refere
*** 3271,3277 ****
  
  .. index:: -gnatwm  (gcc)
  
! :samp:`-gnatwm`
    *Activate warnings on modified but unreferenced variables.*
  
    This switch activates warnings for variables that are assigned (using
--- 3295,3301 ----
  
  .. index:: -gnatwm  (gcc)
  
! :switch:`-gnatwm`
    *Activate warnings on modified but unreferenced variables.*
  
    This switch activates warnings for variables that are assigned (using
*************** of the pragma in the :title:`GNAT_Refere
*** 3284,3290 ****
  
  .. index:: -gnatwM  (gcc)
  
! :samp:`-gnatwM`
    *Disable warnings on modified but unreferenced variables.*
  
    This switch disables warnings for variables that are assigned or
--- 3308,3314 ----
  
  .. index:: -gnatwM  (gcc)
  
! :switch:`-gnatwM`
    *Disable warnings on modified but unreferenced variables.*
  
    This switch disables warnings for variables that are assigned or
*************** of the pragma in the :title:`GNAT_Refere
*** 3293,3299 ****
  
  .. index:: -gnatw.m  (gcc)
  
! :samp:`-gnatw.m`
    *Activate warnings on suspicious modulus values.*
  
    This switch activates warnings for modulus values that seem suspicious.
--- 3317,3323 ----
  
  .. index:: -gnatw.m  (gcc)
  
! :switch:`-gnatw.m`
    *Activate warnings on suspicious modulus values.*
  
    This switch activates warnings for modulus values that seem suspicious.
*************** of the pragma in the :title:`GNAT_Refere
*** 3307,3313 ****
  
  .. index:: -gnatw.M  (gcc)
  
! :samp:`-gnatw.M`
    *Disable warnings on suspicious modulus values.*
  
    This switch disables warnings for suspicious modulus values.
--- 3331,3337 ----
  
  .. index:: -gnatw.M  (gcc)
  
! :switch:`-gnatw.M`
    *Disable warnings on suspicious modulus values.*
  
    This switch disables warnings for suspicious modulus values.
*************** of the pragma in the :title:`GNAT_Refere
*** 3315,3336 ****
  
  .. index:: -gnatwn  (gcc)
  
! :samp:`-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
!   mode. the switch *-gnatwn* can be used to cancel the effect of
!   an explicit *-gnatws* or
!   *-gnatwe*. It also cancels the effect of the
!   implicit *-gnatwe* that is activated by the
!   use of *-gnatg*.
  
  
  .. index:: -gnatw.n  (gcc)
  .. index:: Atomic Synchronization, warnings
  
! :samp:`-gnatw.n`
    *Activate warnings on atomic synchronization.*
  
    This switch actives warnings when an access to an atomic variable
--- 3339,3360 ----
  
  .. index:: -gnatwn  (gcc)
  
! :switch:`-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
!   mode. the switch :switch:`-gnatwn` can be used to cancel the effect of
!   an explicit :switch:`-gnatws` or
!   :switch:`-gnatwe`. It also cancels the effect of the
!   implicit :switch:`-gnatwe` that is activated by the
!   use of :switch:`-gnatg`.
  
  
  .. index:: -gnatw.n  (gcc)
  .. index:: Atomic Synchronization, warnings
  
! :switch:`-gnatw.n`
    *Activate warnings on atomic synchronization.*
  
    This switch actives warnings when an access to an atomic variable
*************** of the pragma in the :title:`GNAT_Refere
*** 3339,3345 ****
  
  .. index:: -gnatw.N  (gcc)
  
! :samp:`-gnatw.N`
    *Suppress warnings on atomic synchronization.*
  
    .. index:: Atomic Synchronization, warnings
--- 3363,3369 ----
  
  .. index:: -gnatw.N  (gcc)
  
! :switch:`-gnatw.N`
    *Suppress warnings on atomic synchronization.*
  
    .. index:: Atomic Synchronization, warnings
*************** of the pragma in the :title:`GNAT_Refere
*** 3351,3357 ****
  .. index:: -gnatwo  (gcc)
  .. index:: Address Clauses, warnings
  
! :samp:`-gnatwo`
    *Activate warnings on address clause overlays.*
  
    This switch activates warnings for possibly unintended initialization
--- 3375,3381 ----
  .. index:: -gnatwo  (gcc)
  .. index:: Address Clauses, warnings
  
! :switch:`-gnatwo`
    *Activate warnings on address clause overlays.*
  
    This switch activates warnings for possibly unintended initialization
*************** of the pragma in the :title:`GNAT_Refere
*** 3361,3367 ****
  
  .. index:: -gnatwO  (gcc)
  
! :samp:`-gnatwO`
    *Suppress warnings on address clause overlays.*
  
    This switch suppresses warnings on possibly unintended initialization
--- 3385,3391 ----
  
  .. index:: -gnatwO  (gcc)
  
! :switch:`-gnatwO`
    *Suppress warnings on address clause overlays.*
  
    This switch suppresses warnings on possibly unintended initialization
*************** of the pragma in the :title:`GNAT_Refere
*** 3371,3377 ****
  
  .. index:: -gnatw.o  (gcc)
  
! :samp:`-gnatw.o`
    *Activate warnings on modified but unreferenced out parameters.*
  
    This switch activates warnings for variables that are modified by using
--- 3395,3401 ----
  
  .. index:: -gnatw.o  (gcc)
  
! :switch:`-gnatw.o`
    *Activate warnings on modified but unreferenced out parameters.*
  
    This switch activates warnings for variables that are modified by using
*************** of the pragma in the :title:`GNAT_Refere
*** 3387,3393 ****
  
  .. index:: -gnatw.O  (gcc)
  
! :samp:`-gnatw.O`
    *Disable warnings on modified but unreferenced out parameters.*
  
    This switch suppresses warnings for variables that are modified by using
--- 3411,3417 ----
  
  .. index:: -gnatw.O  (gcc)
  
! :switch:`-gnatw.O`
    *Disable warnings on modified but unreferenced out parameters.*
  
    This switch suppresses warnings for variables that are modified by using
*************** of the pragma in the :title:`GNAT_Refere
*** 3398,3408 ****
  .. index:: -gnatwp  (gcc)
  .. index:: Inlining, warnings
  
! :samp:`-gnatwp`
    *Activate warnings on ineffective pragma Inlines.*
  
    This switch activates warnings for failure of front end inlining
!   (activated by *-gnatN*) to inline a particular call. There are
    many reasons for not being able to inline a call, including most
    commonly that the call is too complex to inline. The default is
    that such warnings are not given.
--- 3422,3432 ----
  .. index:: -gnatwp  (gcc)
  .. index:: Inlining, warnings
  
! :switch:`-gnatwp`
    *Activate warnings on ineffective pragma Inlines.*
  
    This switch activates warnings for failure of front end inlining
!   (activated by :switch:`-gnatN`) to inline a particular call. There are
    many reasons for not being able to inline a call, including most
    commonly that the call is too complex to inline. The default is
    that such warnings are not given.
*************** of the pragma in the :title:`GNAT_Refere
*** 3412,3418 ****
  
  .. index:: -gnatwP  (gcc)
  
! :samp:`-gnatwP`
    *Suppress warnings on ineffective pragma Inlines.*
  
    This switch suppresses warnings on ineffective pragma Inlines. If the
--- 3436,3442 ----
  
  .. index:: -gnatwP  (gcc)
  
! :switch:`-gnatwP`
    *Suppress warnings on ineffective pragma Inlines.*
  
    This switch suppresses warnings on ineffective pragma Inlines. If the
*************** of the pragma in the :title:`GNAT_Refere
*** 3423,3429 ****
  .. index:: -gnatw.p  (gcc)
  .. index:: Parameter order, warnings
  
! :samp:`-gnatw.p`
    *Activate warnings on parameter ordering.*
  
    This switch activates warnings for cases of suspicious parameter
--- 3447,3453 ----
  .. index:: -gnatw.p  (gcc)
  .. index:: Parameter order, warnings
  
! :switch:`-gnatw.p`
    *Activate warnings on parameter ordering.*
  
    This switch activates warnings for cases of suspicious parameter
*************** of the pragma in the :title:`GNAT_Refere
*** 3437,3443 ****
  
  .. index:: -gnatw.P  (gcc)
  
! :samp:`-gnatw.P`
    *Suppress warnings on parameter ordering.*
  
    This switch suppresses warnings on cases of suspicious parameter
--- 3461,3467 ----
  
  .. index:: -gnatw.P  (gcc)
  
! :switch:`-gnatw.P`
    *Suppress warnings on parameter ordering.*
  
    This switch suppresses warnings on cases of suspicious parameter
*************** of the pragma in the :title:`GNAT_Refere
*** 3447,3453 ****
  .. index:: -gnatwq  (gcc)
  .. index:: Parentheses, warnings
  
! :samp:`-gnatwq`
    *Activate warnings on questionable missing parentheses.*
  
    This switch activates warnings for cases where parentheses are not used and
--- 3471,3477 ----
  .. index:: -gnatwq  (gcc)
  .. index:: Parentheses, warnings
  
! :switch:`-gnatwq`
    *Activate warnings on questionable missing parentheses.*
  
    This switch activates warnings for cases where parentheses are not used and
*************** of the pragma in the :title:`GNAT_Refere
*** 3462,3477 ****
  
  .. index:: -gnatwQ  (gcc)
  
! :samp:`-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.
  
  
  .. index:: -gnatwr  (gcc)
  
! :samp:`-gnatwr`
    *Activate warnings on redundant constructs.*
  
    This switch activates warnings for redundant constructs. The following
--- 3486,3551 ----
  
  .. index:: -gnatwQ  (gcc)
  
! :switch:`-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.
  
  
+ .. index:: -gnatw.q  (gcc)
+ .. index:: Layout, warnings
+ 
+ :switch:`-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
+   order of the source code, would very likely cause inefficiencies in
+   the code generated by the compiler, both in terms of space and speed
+   during execution. One warning is issued for each problematic component
+   without representation clause in the nonvariant part and then in each
+   variant recursively, if any.
+ 
+   The purpose of these warnings is neither to prescribe an optimal layout
+   nor to force the use of representation clauses, but rather to get rid of
+   the most blatant inefficiencies in the layout. Therefore, the default
+   layout is matched against the following synthetic ordered layout and
+   the deviations are flagged on a component-by-component basis:
+ 
+   * first all components or groups of components whose length is fixed
+     and a multiple of the storage unit,
+ 
+   * then the remaining components whose length is fixed and not a multiple
+     of the storage unit,
+ 
+   * then the remaining components whose length doesn't depend on discriminants
+     (that is to say, with variable but uniform length for all objects),
+ 
+   * then all components whose length depends on discriminants,
+ 
+   * finally the variant part (if any),
+ 
+   for the nonvariant part and for each variant recursively, if any.
+ 
+   The exact wording of the warning depends on whether the compiler is allowed
+   to reorder the components in the record type or precluded from doing it by
+   means of pragma ``No_Component_Reordering``.
+ 
+   The default is that these warnings are not given.
+ 
+ .. index:: -gnatw.Q  (gcc)
+ 
+ :switch:`-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.
+ 
+ 
  .. index:: -gnatwr  (gcc)
  
! :switch:`-gnatwr`
    *Activate warnings on redundant constructs.*
  
    This switch activates warnings for redundant constructs. The following
*************** of the pragma in the :title:`GNAT_Refere
*** 3481,3490 ****
  
    * Type conversion that converts an expression to its own type.
  
!   * Use of the attribute `Base` where `typ'Base` is the same
!     as `typ`.
  
!   * Use of pragma `Pack` when all components are placed by a record
      representation clause.
  
    * Exception handler containing only a reraise statement (raise with no
--- 3555,3564 ----
  
    * Type conversion that converts an expression to its own type.
  
!   * Use of the attribute ``Base`` where ``typ'Base`` is the same
!     as ``typ``.
  
!   * Use of pragma ``Pack`` when all components are placed by a record
      representation clause.
  
    * Exception handler containing only a reraise statement (raise with no
*************** of the pragma in the :title:`GNAT_Refere
*** 3493,3506 ****
    * Use of the operator abs on an operand that is known at compile time
      to be non-negative
  
!   * Comparison of boolean expressions to an explicit True value.
  
    The default is that warnings for redundant constructs are not given.
  
  
  .. index:: -gnatwR  (gcc)
  
! :samp:`-gnatwR`
    *Suppress warnings on redundant constructs.*
  
    This switch suppresses warnings for redundant constructs.
--- 3567,3581 ----
    * Use of the operator abs on an operand that is known at compile time
      to be non-negative
  
!   * Comparison of an object or (unary or binary) operation of boolean type to
!     an explicit True value.
  
    The default is that warnings for redundant constructs are not given.
  
  
  .. index:: -gnatwR  (gcc)
  
! :switch:`-gnatwR`
    *Suppress warnings on redundant constructs.*
  
    This switch suppresses warnings for redundant constructs.
*************** of the pragma in the :title:`GNAT_Refere
*** 3508,3514 ****
  
  .. index:: -gnatw.r  (gcc)
  
! :samp:`-gnatw.r`
    *Activate warnings for object renaming function.*
  
    This switch activates warnings for an object renaming that renames a
--- 3583,3589 ----
  
  .. index:: -gnatw.r  (gcc)
  
! :switch:`-gnatw.r`
    *Activate warnings for object renaming function.*
  
    This switch activates warnings for an object renaming that renames a
*************** of the pragma in the :title:`GNAT_Refere
*** 3519,3525 ****
  
  .. index:: -gnatwT  (gcc)
  
! :samp:`-gnatw.R`
    *Suppress warnings for object renaming function.*
  
    This switch suppresses warnings for object renaming function.
--- 3594,3600 ----
  
  .. index:: -gnatwT  (gcc)
  
! :switch:`-gnatw.R`
    *Suppress warnings for object renaming function.*
  
    This switch suppresses warnings for object renaming function.
*************** of the pragma in the :title:`GNAT_Refere
*** 3527,3533 ****
  
  .. index:: -gnatws  (gcc)
  
! :samp:`-gnatws`
    *Suppress all warnings.*
  
    This switch completely suppresses the
--- 3602,3608 ----
  
  .. index:: -gnatws  (gcc)
  
! :switch:`-gnatws`
    *Suppress all warnings.*
  
    This switch completely suppresses the
*************** of the pragma in the :title:`GNAT_Refere
*** 3535,3553 ****
    both warnings that can be controlled by switches described in this
    section, and those that are normally given unconditionally. The
    effect of this suppress action can only be cancelled by a subsequent
!   use of the switch *-gnatwn*.
  
!   Note that switch *-gnatws* does not suppress
!   warnings from the *gcc* back end.
!   To suppress these back end warnings as well, use the switch *-w*
!   in addition to *-gnatws*. Also this switch has no effect on the
    handling of style check messages.
  
  
  .. index:: -gnatw.s  (gcc)
  .. index:: Record Representation (component sizes)
  
! :samp:`-gnatw.s`
    *Activate warnings on overridden size clauses.*
  
    This switch activates warnings on component clauses in record
--- 3610,3628 ----
    both warnings that can be controlled by switches described in this
    section, and those that are normally given unconditionally. The
    effect of this suppress action can only be cancelled by a subsequent
!   use of the switch :switch:`-gnatwn`.
  
!   Note that switch :switch:`-gnatws` does not suppress
!   warnings from the ``gcc`` back end.
!   To suppress these back end warnings as well, use the switch :switch:`-w`
!   in addition to :switch:`-gnatws`. Also this switch has no effect on the
    handling of style check messages.
  
  
  .. index:: -gnatw.s  (gcc)
  .. index:: Record Representation (component sizes)
  
! :switch:`-gnatw.s`
    *Activate warnings on overridden size clauses.*
  
    This switch activates warnings on component clauses in record
*************** of the pragma in the :title:`GNAT_Refere
*** 3560,3566 ****
  
  .. index:: -gnatw.S  (gcc)
  
! :samp:`-gnatw.S`
    *Suppress warnings on overridden size clauses.*
  
    This switch suppresses warnings on component clauses in record
--- 3635,3641 ----
  
  .. index:: -gnatw.S  (gcc)
  
! :switch:`-gnatw.S`
    *Suppress warnings on overridden size clauses.*
  
    This switch suppresses warnings on component clauses in record
*************** of the pragma in the :title:`GNAT_Refere
*** 3572,3578 ****
  .. index:: Deactivated code, warnings
  .. index:: Deleted code, warnings
  
! :samp:`-gnatwt`
    *Activate warnings for tracking of deleted conditional code.*
  
    This switch activates warnings for tracking of code in conditionals (IF and
--- 3647,3653 ----
  .. index:: Deactivated code, warnings
  .. index:: Deleted code, warnings
  
! :switch:`-gnatwt`
    *Activate warnings for tracking of deleted conditional code.*
  
    This switch activates warnings for tracking of code in conditionals (IF and
*************** of the pragma in the :title:`GNAT_Refere
*** 3583,3589 ****
  
  .. index:: -gnatwT  (gcc)
  
! :samp:`-gnatwT`
    *Suppress warnings for tracking of deleted conditional code.*
  
    This switch suppresses warnings for tracking of deleted conditional code.
--- 3658,3664 ----
  
  .. index:: -gnatwT  (gcc)
  
! :switch:`-gnatwT`
    *Suppress warnings for tracking of deleted conditional code.*
  
    This switch suppresses warnings for tracking of deleted conditional code.
*************** of the pragma in the :title:`GNAT_Refere
*** 3591,3603 ****
  
  .. index:: -gnatw.t  (gcc)
  
! :samp:`-gnatw.t`
    *Activate warnings on suspicious contracts.*
  
    This switch activates warnings on suspicious contracts. This includes
!   warnings on suspicious postconditions (whether a pragma `Postcondition` or a
!   `Post` aspect in Ada 2012) and suspicious contract cases (pragma or aspect
!   `Contract_Cases`). A function postcondition or contract case is suspicious
    when no postcondition or contract case for this function mentions the result
    of the function.  A procedure postcondition or contract case is suspicious
    when it only refers to the pre-state of the procedure, because in that case
--- 3666,3678 ----
  
  .. index:: -gnatw.t  (gcc)
  
! :switch:`-gnatw.t`
    *Activate warnings on suspicious contracts.*
  
    This switch activates warnings on suspicious contracts. This includes
!   warnings on suspicious postconditions (whether a pragma ``Postcondition`` or a
!   ``Post`` aspect in Ada 2012) and suspicious contract cases (pragma or aspect
!   ``Contract_Cases``). A function postcondition or contract case is suspicious
    when no postcondition or contract case for this function mentions the result
    of the function.  A procedure postcondition or contract case is suspicious
    when it only refers to the pre-state of the procedure, because in that case
*************** of the pragma in the :title:`GNAT_Refere
*** 3609,3615 ****
  
  .. index:: -gnatw.T  (gcc)
  
! :samp:`-gnatw.T`
    *Suppress warnings on suspicious contracts.*
  
    This switch suppresses warnings on suspicious contracts.
--- 3684,3690 ----
  
  .. index:: -gnatw.T  (gcc)
  
! :switch:`-gnatw.T`
    *Suppress warnings on suspicious contracts.*
  
    This switch suppresses warnings on suspicious contracts.
*************** of the pragma in the :title:`GNAT_Refere
*** 3617,3623 ****
  
  .. index:: -gnatwu  (gcc)
  
! :samp:`-gnatwu`
    *Activate warnings on unused entities.*
  
    This switch activates warnings to be generated for entities that
--- 3692,3698 ----
  
  .. index:: -gnatwu  (gcc)
  
! :switch:`-gnatwu`
    *Activate warnings on unused entities.*
  
    This switch activates warnings to be generated for entities that
*************** of the pragma in the :title:`GNAT_Refere
*** 3625,3632 ****
    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 `use`
!   clauses or `renames`
    declarations, a warning is still generated. A warning is also generated
    for a generic package that is |withed| but never instantiated.
    In the case where a package or subprogram body is compiled, and there
--- 3700,3707 ----
    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 ``use``
!   clauses or ``renames``
    declarations, a warning is still generated. A warning is also generated
    for a generic package that is |withed| but never instantiated.
    In the case where a package or subprogram body is compiled, and there
*************** of the pragma in the :title:`GNAT_Refere
*** 3636,3673 ****
    |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 *-gnatwf*).
  
  
  .. index:: -gnatwU  (gcc)
  
! :samp:`-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 *-gnatwF*).
  
  
  .. index:: -gnatw.u  (gcc)
  
! :samp:`-gnatw.u`
    *Activate warnings on unordered enumeration types.*
  
    This switch causes enumeration types to be considered as conceptually
!   unordered, unless an explicit pragma `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 `Ordered` in the
    :title:`GNAT Reference Manual` for further details.
    The default is that such warnings are not generated.
  
  
  .. index:: -gnatw.U  (gcc)
  
! :samp:`-gnatw.U`
    *Deactivate warnings on unordered enumeration types.*
  
    This switch causes all enumeration types to be considered as ordered, so
--- 3711,3748 ----
    |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 :switch:`-gnatwf`).
  
  
  .. index:: -gnatwU  (gcc)
  
! :switch:`-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 :switch:`-gnatwF`).
  
  
  .. index:: -gnatw.u  (gcc)
  
! :switch:`-gnatw.u`
    *Activate warnings on unordered enumeration types.*
  
    This switch causes enumeration types to be considered as conceptually
!   unordered, unless an explicit pragma ``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 ``Ordered`` in the
    :title:`GNAT Reference Manual` for further details.
    The default is that such warnings are not generated.
  
  
  .. index:: -gnatw.U  (gcc)
  
! :switch:`-gnatw.U`
    *Deactivate warnings on unordered enumeration types.*
  
    This switch causes all enumeration types to be considered as ordered, so
*************** of the pragma in the :title:`GNAT_Refere
*** 3677,3683 ****
  .. index:: -gnatwv  (gcc)
  .. index:: Unassigned variable warnings
  
! :samp:`-gnatwv`
    *Activate warnings on unassigned variables.*
  
    This switch activates warnings for access to variables which
--- 3752,3758 ----
  .. index:: -gnatwv  (gcc)
  .. index:: Unassigned variable warnings
  
! :switch:`-gnatwv`
    *Activate warnings on unassigned variables.*
  
    This switch activates warnings for access to variables which
*************** of the pragma in the :title:`GNAT_Refere
*** 3687,3693 ****
  
  .. index:: -gnatwV  (gcc)
  
! :samp:`-gnatwV`
    *Suppress warnings on unassigned variables.*
  
    This switch suppresses warnings for access to variables which
--- 3762,3768 ----
  
  .. index:: -gnatwV  (gcc)
  
! :switch:`-gnatwV`
    *Suppress warnings on unassigned variables.*
  
    This switch suppresses warnings for access to variables which
*************** of the pragma in the :title:`GNAT_Refere
*** 3708,3714 ****
  .. index:: -gnatw.v  (gcc)
  .. index:: bit order warnings
  
! :samp:`-gnatw.v`
    *Activate info messages for non-default bit order.*
  
    This switch activates messages (labeled "info", they are not warnings,
--- 3783,3789 ----
  .. index:: -gnatw.v  (gcc)
  .. index:: bit order warnings
  
! :switch:`-gnatw.v`
    *Activate info messages for non-default bit order.*
  
    This switch activates messages (labeled "info", they are not warnings,
*************** of the pragma in the :title:`GNAT_Refere
*** 3721,3727 ****
  
  .. index:: -gnatw.V  (gcc)
  
! :samp:`-gnatw.V`
    *Suppress info messages for non-default bit order.*
  
    This switch suppresses information messages for the effects of specifying
--- 3796,3802 ----
  
  .. index:: -gnatw.V  (gcc)
  
! :switch:`-gnatw.V`
    *Suppress info messages for non-default bit order.*
  
    This switch suppresses information messages for the effects of specifying
*************** of the pragma in the :title:`GNAT_Refere
*** 3731,3737 ****
  .. index:: -gnatww  (gcc)
  .. index:: String indexing warnings
  
! :samp:`-gnatww`
    *Activate warnings on wrong low bound assumption.*
  
    This switch activates warnings for indexing an unconstrained string parameter
--- 3806,3812 ----
  .. index:: -gnatww  (gcc)
  .. index:: String indexing warnings
  
! :switch:`-gnatww`
    *Activate warnings on wrong low bound assumption.*
  
    This switch activates warnings for indexing an unconstrained string parameter
*************** of the pragma in the :title:`GNAT_Refere
*** 3742,3748 ****
  
  .. index:: -gnatwW  (gcc)
  
! :samp:`-gnatwW`
    *Suppress warnings on wrong low bound assumption.*
  
    This switch suppresses warnings for indexing an unconstrained string parameter
--- 3817,3823 ----
  
  .. index:: -gnatwW  (gcc)
  
! :switch:`-gnatwW`
    *Suppress warnings on wrong low bound assumption.*
  
    This switch suppresses warnings for indexing an unconstrained string parameter
*************** of the pragma in the :title:`GNAT_Refere
*** 3760,3772 ****
  .. index:: -gnatw.w  (gcc)
  .. index:: Warnings Off control
  
! :samp:`-gnatw.w`
    *Activate warnings on Warnings Off pragmas.*
  
!   This switch activates warnings for use of `pragma Warnings (Off, entity)`
    where either the pragma is entirely useless (because it suppresses no
!   warnings), or it could be replaced by `pragma Unreferenced` or
!   `pragma Unmodified`.
    Also activates warnings for the case of
    Warnings (Off, String), where either there is no matching
    Warnings (On, String), or the Warnings (Off) did not suppress any warning.
--- 3835,3847 ----
  .. index:: -gnatw.w  (gcc)
  .. index:: Warnings Off control
  
! :switch:`-gnatw.w`
    *Activate warnings on Warnings Off pragmas.*
  
!   This switch activates warnings for use of ``pragma Warnings (Off, entity)``
    where either the pragma is entirely useless (because it suppresses no
!   warnings), or it could be replaced by ``pragma Unreferenced`` or
!   ``pragma Unmodified``.
    Also activates warnings for the case of
    Warnings (Off, String), where either there is no matching
    Warnings (On, String), or the Warnings (Off) did not suppress any warning.
*************** of the pragma in the :title:`GNAT_Refere
*** 3775,3790 ****
  
  .. index:: -gnatw.W  (gcc)
  
! :samp:`-gnatw.W`
    *Suppress warnings on unnecessary Warnings Off pragmas.*
  
!   This switch suppresses warnings for use of `pragma Warnings (Off, ...)`.
  
  
  .. index:: -gnatwx  (gcc)
  .. index:: Export/Import pragma warnings
  
! :samp:`-gnatwx`
    *Activate warnings on Export/Import pragmas.*
  
    This switch activates warnings on Export/Import pragmas when
--- 3850,3865 ----
  
  .. index:: -gnatw.W  (gcc)
  
! :switch:`-gnatw.W`
    *Suppress warnings on unnecessary Warnings Off pragmas.*
  
!   This switch suppresses warnings for use of ``pragma Warnings (Off, ...)``.
  
  
  .. index:: -gnatwx  (gcc)
  .. index:: Export/Import pragma warnings
  
! :switch:`-gnatwx`
    *Activate warnings on Export/Import pragmas.*
  
    This switch activates warnings on Export/Import pragmas when
*************** of the pragma in the :title:`GNAT_Refere
*** 3798,3804 ****
  
  .. index:: -gnatwX  (gcc)
  
! :samp:`-gnatwX`
    *Suppress warnings on Export/Import pragmas.*
  
    This switch suppresses warnings on Export/Import pragmas.
--- 3873,3879 ----
  
  .. index:: -gnatwX  (gcc)
  
! :switch:`-gnatwX`
    *Suppress warnings on Export/Import pragmas.*
  
    This switch suppresses warnings on Export/Import pragmas.
*************** of the pragma in the :title:`GNAT_Refere
*** 3809,3825 ****
  
  .. index:: -gnatwm  (gcc)
  
! :samp:`-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
    explicit exception raises which are not covered by a local handler, and for
!   exception handlers which do not cover a local raise. The default is that these
!   warnings are not given.
  
  
! :samp:`-gnatw.X`
    *Disable warnings for No_Exception_Propagation mode.*
  
    This switch disables warnings for exception usage when pragma Restrictions
--- 3884,3900 ----
  
  .. index:: -gnatwm  (gcc)
  
! :switch:`-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
    explicit exception raises which are not covered by a local handler, and for
!   exception handlers which do not cover a local raise. The default is that
!   these warnings are given for units that contain exception handlers.
  
  
! :switch:`-gnatw.X`
    *Disable warnings for No_Exception_Propagation mode.*
  
    This switch disables warnings for exception usage when pragma Restrictions
*************** of the pragma in the :title:`GNAT_Refere
*** 3829,3842 ****
  .. index:: -gnatwy  (gcc)
  .. index:: Ada compatibility issues warnings
  
! :samp:`-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
    always work when compiled as Ada 2012.
    However there are some exceptions (for example the fact that
!   `some` is now a reserved word in Ada 2012). This
    switch activates several warnings to help in identifying
    and correcting such incompatibilities. The default is that
    these warnings are generated. Note that at one point Ada 2005
--- 3904,3917 ----
  .. index:: -gnatwy  (gcc)
  .. index:: Ada compatibility issues warnings
  
! :switch:`-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
    always work when compiled as Ada 2012.
    However there are some exceptions (for example the fact that
!   ``some`` is now a reserved word in Ada 2012). This
    switch activates several warnings to help in identifying
    and correcting such incompatibilities. The default is that
    these warnings are generated. Note that at one point Ada 2005
*************** of the pragma in the :title:`GNAT_Refere
*** 3846,3852 ****
  .. index:: -gnatwY  (gcc)
  .. index:: Ada compatibility issues warnings
  
! :samp:`-gnatwY`
    *Disable warnings for Ada compatibility issues.*
  
    This switch suppresses the warnings intended to help in identifying
--- 3921,3927 ----
  .. index:: -gnatwY  (gcc)
  .. index:: Ada compatibility issues warnings
  
! :switch:`-gnatwY`
    *Disable warnings for Ada compatibility issues.*
  
    This switch suppresses the warnings intended to help in identifying
*************** of the pragma in the :title:`GNAT_Refere
*** 3856,3862 ****
  .. index:: -gnatw.y  (gcc)
  .. index:: Package spec needing body
  
! :samp:`-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.
--- 3931,3937 ----
  .. index:: -gnatw.y  (gcc)
  .. index:: Package spec needing body
  
! :switch:`-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.
*************** of the pragma in the :title:`GNAT_Refere
*** 3871,3877 ****
  .. index:: -gnatw.Y  (gcc)
  .. index:: No information messages for why package spec needs body
  
! :samp:`-gnatw.Y`
    *Disable information messages for why package spec needs body.*
  
    This switch suppresses the output of information messages showing why
--- 3946,3952 ----
  .. index:: -gnatw.Y  (gcc)
  .. index:: No information messages for why package spec needs body
  
! :switch:`-gnatw.Y`
    *Disable information messages for why package spec needs body.*
  
    This switch suppresses the output of information messages showing why
*************** of the pragma in the :title:`GNAT_Refere
*** 3881,3887 ****
  .. index:: -gnatwz  (gcc)
  .. index:: Unchecked_Conversion warnings
  
! :samp:`-gnatwz`
    *Activate warnings on unchecked conversions.*
  
    This switch activates warnings for unchecked conversions
--- 3956,3962 ----
  .. index:: -gnatwz  (gcc)
  .. index:: Unchecked_Conversion warnings
  
! :switch:`-gnatwz`
    *Activate warnings on unchecked conversions.*
  
    This switch activates warnings for unchecked conversions
*************** of the pragma in the :title:`GNAT_Refere
*** 3892,3898 ****
  
  .. index:: -gnatwZ  (gcc)
  
! :samp:`-gnatwZ`
    *Suppress warnings on unchecked conversions.*
  
    This switch suppresses warnings for unchecked conversions
--- 3967,3973 ----
  
  .. index:: -gnatwZ  (gcc)
  
! :switch:`-gnatwZ`
    *Suppress warnings on unchecked conversions.*
  
    This switch suppresses warnings for unchecked conversions
*************** of the pragma in the :title:`GNAT_Refere
*** 3903,3913 ****
  .. index:: -gnatw.z  (gcc)
  .. index:: Size/Alignment warnings
  
! :samp:`-gnatw.z`
    *Activate warnings for size not a multiple of alignment.*
  
    This switch activates warnings for cases of record types with
!   specified `Size` and `Alignment` attributes where the
    size is not a multiple of the alignment, resulting in an object
    size that is greater than the specified size. The default
    is that such warnings are generated.
--- 3978,3988 ----
  .. index:: -gnatw.z  (gcc)
  .. index:: Size/Alignment warnings
  
! :switch:`-gnatw.z`
    *Activate warnings for size not a multiple of alignment.*
  
    This switch activates warnings for cases of record types with
!   specified ``Size`` and ``Alignment`` attributes where the
    size is not a multiple of the alignment, resulting in an object
    size that is greater than the specified size. The default
    is that such warnings are generated.
*************** of the pragma in the :title:`GNAT_Refere
*** 3916,3979 ****
  .. index:: -gnatw.Z  (gcc)
  .. index:: Size/Alignment warnings
  
! :samp:`-gnatw.Z`
    *Suppress warnings for size not a multiple of alignment.*
  
    This switch suppresses warnings for cases of record types with
!   specified `Size` and `Alignment` attributes where the
    size is not a multiple of the alignment, resulting in an object
    size that is greater than the specified size.
    The warning can also be
!   suppressed by giving an explicit `Object_Size` value.
  
  
  .. index:: -Wunused (gcc)
  
! :samp:`-Wunused`
!   The warnings controlled by the *-gnatw* switch are generated by
!   the front end of the compiler. The *GCC* back end can provide
!   additional warnings and they are controlled by the *-W* switch.
!   For example, *-Wunused* activates back end
    warnings for entities that are declared but not referenced.
  
  
  .. index:: -Wuninitialized (gcc)
  
! :samp:`-Wuninitialized`
!   Similarly, *-Wuninitialized* activates
    the back end warning for uninitialized variables. This switch must be
    used in conjunction with an optimization level greater than zero.
  
  
  .. index:: -Wstack-usage (gcc)
  
! :samp:`-Wstack-usage={len}`
!   Warn if the stack usage of a subprogram might be larger than `len` bytes.
    See :ref:`Static_Stack_Usage_Analysis` for details.
  
  
  .. index:: -Wall (gcc)
  
! :samp:`-Wall`
!   This switch enables most warnings from the *GCC* back end.
    The code generator detects a number of warning situations that are missed
!   by the *GNAT* front end, and this switch can be used to activate them.
    The use of this switch also sets the default front end warning mode to
!   *-gnatwa*, that is, most front end warnings activated as well.
  
  
  .. index:: -w (gcc)
  
! :samp:`-w`
!   Conversely, this switch suppresses warnings from the *GCC* back end.
    The use of this switch also sets the default front end warning mode to
!   *-gnatws*, that is, front end warnings suppressed as well.
  
  
  .. index:: -Werror (gcc)
  
! :samp:`-Werror`
!   This switch causes warnings from the *GCC* back end to be treated as
    errors.  The warning string still appears, but the warning messages are
    counted as errors, and prevent the generation of an object file.
  
--- 3991,4054 ----
  .. index:: -gnatw.Z  (gcc)
  .. index:: Size/Alignment warnings
  
! :switch:`-gnatw.Z`
    *Suppress warnings for size not a multiple of alignment.*
  
    This switch suppresses warnings for cases of record types with
!   specified ``Size`` and ``Alignment`` attributes where the
    size is not a multiple of the alignment, resulting in an object
    size that is greater than the specified size.
    The warning can also be
!   suppressed by giving an explicit ``Object_Size`` value.
  
  
  .. index:: -Wunused (gcc)
  
! :switch:`-Wunused`
!   The warnings controlled by the :switch:`-gnatw` switch are generated by
!   the front end of the compiler. The GCC back end can provide
!   additional warnings and they are controlled by the :switch:`-W` switch.
!   For example, :switch:`-Wunused` activates back end
    warnings for entities that are declared but not referenced.
  
  
  .. index:: -Wuninitialized (gcc)
  
! :switch:`-Wuninitialized`
!   Similarly, :switch:`-Wuninitialized` activates
    the back end warning for uninitialized variables. This switch must be
    used in conjunction with an optimization level greater than zero.
  
  
  .. index:: -Wstack-usage (gcc)
  
! :switch:`-Wstack-usage={len}`
!   Warn if the stack usage of a subprogram might be larger than ``len`` bytes.
    See :ref:`Static_Stack_Usage_Analysis` for details.
  
  
  .. index:: -Wall (gcc)
  
! :switch:`-Wall`
!   This switch enables most warnings from the GCC back end.
    The code generator detects a number of warning situations that are missed
!   by the GNAT front end, and this switch can be used to activate them.
    The use of this switch also sets the default front end warning mode to
!   :switch:`-gnatwa`, that is, most front end warnings activated as well.
  
  
  .. index:: -w (gcc)
  
! :switch:`-w`
!   Conversely, this switch suppresses warnings from the GCC back end.
    The use of this switch also sets the default front end warning mode to
!   :switch:`-gnatws`, that is, front end warnings suppressed as well.
  
  
  .. index:: -Werror (gcc)
  
! :switch:`-Werror`
!   This switch causes warnings from the GCC back end to be treated as
    errors.  The warning string still appears, but the warning messages are
    counted as errors, and prevent the generation of an object file.
  
*************** A string of warning parameters can be us
*** 3986,4064 ****
  will turn on all optional warnings except for unrecognized pragma warnings,
  and also specify that warnings should be treated as errors.
  
! When no switch *-gnatw* is used, this is equivalent to:
  
!   * :samp:`-gnatw.a`
  
!   * :samp:`-gnatwB`
  
!   * :samp:`-gnatw.b`
  
!   * :samp:`-gnatwC`
  
!   * :samp:`-gnatw.C`
  
!   * :samp:`-gnatwD`
  
!   * :samp:`-gnatwF`
  
!   * :samp:`-gnatwg`
  
!   * :samp:`-gnatwH`
  
!   * :samp:`-gnatwi`
  
!   * :samp:`-gnatw.I`
  
!   * :samp:`-gnatwJ`
  
!   * :samp:`-gnatwK`
  
!   * :samp:`-gnatwL`
  
!   * :samp:`-gnatw.L`
  
!   * :samp:`-gnatwM`
  
!   * :samp:`-gnatw.m`
  
!   * :samp:`-gnatwn`
  
!   * :samp:`-gnatwo`
  
!   * :samp:`-gnatw.O`
  
!   * :samp:`-gnatwP`
  
!   * :samp:`-gnatw.P`
  
!   * :samp:`-gnatwq`
  
!   * :samp:`-gnatwR`
  
!   * :samp:`-gnatw.R`
  
!   * :samp:`-gnatw.S`
  
!   * :samp:`-gnatwT`
  
!   * :samp:`-gnatw.T`
  
!   * :samp:`-gnatwU`
  
!   * :samp:`-gnatwv`
  
!   * :samp:`-gnatww`
  
!   * :samp:`-gnatw.W`
  
!   * :samp:`-gnatwx`
  
!   * :samp:`-gnatw.X`
  
!   * :samp:`-gnatwy`
  
!   * :samp:`-gnatwz`
  
  .. _Debugging_and_Assertion_Control:
  
--- 4061,4159 ----
  will turn on all optional warnings except for unrecognized pragma warnings,
  and also specify that warnings should be treated as errors.
  
! When no switch :switch:`-gnatw` is used, this is equivalent to:
  
!   * :switch:`-gnatw.a`
  
!   * :switch:`-gnatwB`
  
!   * :switch:`-gnatw.b`
  
!   * :switch:`-gnatwC`
  
!   * :switch:`-gnatw.C`
  
!   * :switch:`-gnatwD`
  
!   * :switch:`-gnatw.D`
  
!   * :switch:`-gnatwF`
  
!   * :switch:`-gnatw.F`
  
!   * :switch:`-gnatwg`
  
!   * :switch:`-gnatwH`
  
!   * :switch:`-gnatw.H`
  
!   * :switch:`-gnatwi`
  
!   * :switch:`-gnatwJ`
  
!   * :switch:`-gnatw.J`
  
!   * :switch:`-gnatwK`
  
!   * :switch:`-gnatw.K`
  
!   * :switch:`-gnatwL`
  
!   * :switch:`-gnatw.L`
  
!   * :switch:`-gnatwM`
  
!   * :switch:`-gnatw.m`
  
!   * :switch:`-gnatwn`
  
!   * :switch:`-gnatw.N`
  
!   * :switch:`-gnatwo`
  
!   * :switch:`-gnatw.O`
  
!   * :switch:`-gnatwP`
  
!   * :switch:`-gnatw.P`
  
!   * :switch:`-gnatwq`
  
!   * :switch:`-gnatw.Q`
  
!   * :switch:`-gnatwR`
  
!   * :switch:`-gnatw.R`
  
!   * :switch:`-gnatw.S`
  
!   * :switch:`-gnatwT`
  
!   * :switch:`-gnatw.t`
  
!   * :switch:`-gnatwU`
  
!   * :switch:`-gnatw.U`
! 
!   * :switch:`-gnatwv`
! 
!   * :switch:`-gnatw.v`
! 
!   * :switch:`-gnatww`
! 
!   * :switch:`-gnatw.W`
! 
!   * :switch:`-gnatwx`
! 
!   * :switch:`-gnatw.X`
! 
!   * :switch:`-gnatwy`
! 
!   * :switch:`-gnatw.Y`
! 
!   * :switch:`-gnatwz`
! 
!   * :switch:`-gnatw.z`
  
  .. _Debugging_and_Assertion_Control:
  
*************** Debugging and Assertion Control
*** 4069,4075 ****
  
  .. index:: -gnata  (gcc)
  
! :samp:`-gnata`
    .. index:: Assert
    .. index:: Debug
    .. index:: Assertions
--- 4164,4170 ----
  
  .. index:: -gnata  (gcc)
  
! :switch:`-gnata`
    .. index:: Assert
    .. index:: Debug
    .. index:: Assertions
*************** Debugging and Assertion Control
*** 4078,4084 ****
    .. index:: Type invariants
    .. index:: Subtype predicates
  
!   The `-gnata` option is equivalent to the following Assertion_Policy pragma::
  
         pragma Assertion_Policy (Check);
  
--- 4173,4179 ----
    .. index:: Type invariants
    .. index:: Subtype predicates
  
!   The :switch:`-gnata` option is equivalent to the following ``Assertion_Policy`` pragma::
  
         pragma Assertion_Policy (Check);
  
*************** Debugging and Assertion Control
*** 4095,4103 ****
            Type_Invariant       => Check,
            Type_Invariant'Class => Check);
  
!   The pragmas `Assert` and `Debug` normally have no effect and
!   are ignored. This switch, where :samp:`a` stands for assert, causes
!   pragmas `Assert` and `Debug` to be activated. This switch also
    causes preconditions, postconditions, subtype predicates, and
    type invariants to be activated.
  
--- 4190,4198 ----
            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
!   pragmas ``Assert`` and ``Debug`` to be activated. This switch also
    causes preconditions, postconditions, subtype predicates, and
    type invariants to be activated.
  
*************** Debugging and Assertion Control
*** 4115,4136 ****
         with [Pre|Post|Type_Invariant|Dynamic_Predicate|Static_Predicate]
           => <Boolean-expression>;
  
!   The `Assert` pragma causes `Boolean-expression` to be tested.
!   If the result is `True`, the pragma has no effect (other than
    possible side effects from evaluating the expression). If the result is
!   `False`, the exception `Assert_Failure` declared in the package
!   `System.Assertions` is raised (passing `static-string-expression`, if
    present, as the message associated with the exception). If no string
    expression is given, the default is a string containing the file name and
    line number of the pragma.
  
!   The `Debug` pragma causes `procedure` to be called. Note that
!   `pragma Debug` may appear within a declaration sequence, allowing
    debugging procedures to be called between declarations.
  
!   For the aspect specification, the `<Boolean-expression>` is evaluated.
!   If the result is `True`, the aspect has no effect. If the result
!   is `False`, the exception `Assert_Failure` is raised.
  
  .. _Validity_Checking:
  
--- 4210,4231 ----
         with [Pre|Post|Type_Invariant|Dynamic_Predicate|Static_Predicate]
           => <Boolean-expression>;
  
!   The ``Assert`` pragma causes ``Boolean-expression`` to be tested.
!   If the result is ``True``, the pragma has no effect (other than
    possible side effects from evaluating the expression). If the result is
!   ``False``, the exception ``Assert_Failure`` declared in the package
!   ``System.Assertions`` is raised (passing ``static-string-expression``, if
    present, as the message associated with the exception). If no string
    expression is given, the default is a string containing the file name and
    line number of the pragma.
  
!   The ``Debug`` pragma causes ``procedure`` to be called. Note that
!   ``pragma Debug`` may appear within a declaration sequence, allowing
    debugging procedures to be called between declarations.
  
!   For the aspect specification, the ``Boolean-expression`` is evaluated.
!   If the result is ``True``, the aspect has no effect. If the result
!   is ``False``, the exception ``Assert_Failure`` is raised.
  
  .. _Validity_Checking:
  
*************** composite types.
*** 4148,4161 ****
  It is an error to read an invalid value, but the RM does not require
  run-time checks to detect such errors, except for some minimal
  checking to prevent erroneous execution (i.e. unpredictable
! behavior). This corresponds to the *-gnatVd* switch below,
  which is the default. For example, by default, if the expression of a
  case statement is invalid, it will raise Constraint_Error rather than
  causing a wild jump, and if an array index on the left-hand side of an
  assignment is invalid, it will raise Constraint_Error rather than
  overwriting an arbitrary memory location.
  
! The *-gnatVa* may be used to enable additional validity checks,
  which are not required by the RM. These checks are often very
  expensive (which is why the RM does not require them). These checks
  are useful in tracking down uninitialized variables, but they are
--- 4243,4256 ----
  It is an error to read an invalid value, but the RM does not require
  run-time checks to detect such errors, except for some minimal
  checking to prevent erroneous execution (i.e. unpredictable
! behavior). This corresponds to the :switch:`-gnatVd` switch below,
  which is the default. For example, by default, if the expression of a
  case statement is invalid, it will raise Constraint_Error rather than
  causing a wild jump, and if an array index on the left-hand side of an
  assignment is invalid, it will raise Constraint_Error rather than
  overwriting an arbitrary memory location.
  
! The :switch:`-gnatVa` may be used to enable additional validity checks,
  which are not required by the RM. These checks are often very
  expensive (which is why the RM does not require them). These checks
  are useful in tracking down uninitialized variables, but they are
*************** combination with optimization, since thi
*** 4165,4184 ****
  If performance is a consideration, leading to the need to optimize,
  then the validity checking options should not be used.
  
! The other *-gnatV*\ ``x`` switches below allow finer-grained
  control; you can enable whichever validity checks you desire. However,
! for most debugging purposes, *-gnatVa* is sufficient, and the
! default *-gnatVd* (i.e. standard Ada behavior) is usually
  sufficient for non-debugging use.
  
! The *-gnatB* switch tells the compiler to assume that all
  values are valid (that is, within their declared subtype range)
  except in the context of a use of the Valid attribute. This means
  the compiler can generate more efficient code, since the range
  of values is better known at compile time. However, an uninitialized
  variable can cause wild jumps and memory corruption in this mode.
  
! The *-gnatV*\ ``x`` switch allows control over the validity
  checking mode as described below.
  The ``x`` argument is a string of letters that
  indicate validity checks that are performed or not performed in addition
--- 4260,4279 ----
  If performance is a consideration, leading to the need to optimize,
  then the validity checking options should not be used.
  
! The other :switch:`-gnatV{x}` switches below allow finer-grained
  control; you can enable whichever validity checks you desire. However,
! for most debugging purposes, :switch:`-gnatVa` is sufficient, and the
! default :switch:`-gnatVd` (i.e. standard Ada behavior) is usually
  sufficient for non-debugging use.
  
! The :switch:`-gnatB` switch tells the compiler to assume that all
  values are valid (that is, within their declared subtype range)
  except in the context of a use of the Valid attribute. This means
  the compiler can generate more efficient code, since the range
  of values is better known at compile time. However, an uninitialized
  variable can cause wild jumps and memory corruption in this mode.
  
! The :switch:`-gnatV{x}` switch allows control over the validity
  checking mode as described below.
  The ``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
*** 4187,4203 ****
  
  .. index:: -gnatVa  (gcc)
  
! :samp:`-gnatVa`
    *All validity checks.*
  
    All validity checks are turned on.
!   That is, *-gnatVa* is
!   equivalent to *gnatVcdfimorst*.
  
  
  .. index:: -gnatVc  (gcc)
  
! :samp:`-gnatVc`
    *Validity checks for copies.*
  
    The right hand side of assignments, and the initializing values of
--- 4282,4298 ----
  
  .. index:: -gnatVa  (gcc)
  
! :switch:`-gnatVa`
    *All validity checks.*
  
    All validity checks are turned on.
!   That is, :switch:`-gnatVa` is
!   equivalent to ``gnatVcdfimorst``.
  
  
  .. index:: -gnatVc  (gcc)
  
! :switch:`-gnatVc`
    *Validity checks for copies.*
  
    The right hand side of assignments, and the initializing values of
*************** to the default checks required by Ada as
*** 4206,4212 ****
  
  .. index:: -gnatVd  (gcc)
  
! :samp:`-gnatVd`
    *Default (RM) validity checks.*
  
    Some validity checks are done by default following normal Ada semantics
--- 4301,4307 ----
  
  .. index:: -gnatVd  (gcc)
  
! :switch:`-gnatVd`
    *Default (RM) validity checks.*
  
    Some validity checks are done by default following normal Ada semantics
*************** to the default checks required by Ada as
*** 4215,4224 ****
    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 *-gnatVD*.
!   They are turned on by default. If *-gnatVD* is specified, a subsequent
!   switch *-gnatVd* will leave the checks turned on.
!   Switch *-gnatVD* should be used only if you are sure that all such
    expressions have valid values. If you use this switch and invalid values
    are present, then the program is erroneous, and wild jumps or memory
    overwriting may occur.
--- 4310,4319 ----
    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.
!   Switch :switch:`-gnatVD` should be used only if you are sure that all such
    expressions have valid values. If you use this switch and invalid values
    are present, then the program is erroneous, and wild jumps or memory
    overwriting may occur.
*************** to the default checks required by Ada as
*** 4226,4237 ****
  
  .. index:: -gnatVe  (gcc)
  
! :samp:`-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
!   (*-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
--- 4321,4332 ----
  
  .. 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
*************** to the default checks required by Ada as
*** 4241,4278 ****
  
  .. index:: -gnatVf  (gcc)
  
! :samp:`-gnatVf`
    *Validity checks for floating-point values.*
  
    In the absence of this switch, validity checking occurs only for discrete
!   values. If *-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, *-gnatVif* or *-gnatVfi*
    (the order does not matter) specifies that floating-point parameters of mode
!   `in` should be validity checked.
  
  
  .. index:: -gnatVi  (gcc)
  
! :samp:`-gnatVi`
!   *Validity checks for `in` mode parameters.*
  
!   Arguments for parameters of mode `in` are validity checked in function
    and procedure calls at the point of call.
  
  
  .. index:: -gnatVm  (gcc)
  
! :samp:`-gnatVm`
!   *Validity checks for `in out` mode parameters.*
  
!   Arguments for parameters of mode `in out` are validity checked in
!   procedure calls at the point of call. The `'m'` here stands for
    modify, since this concerns parameters that can be modified by the call.
!   Note that there is no specific option to test `out` parameters,
    but any reference within the subprogram will be tested in the usual
    manner, and if an invalid value is copied back, any reference to it
    will be subject to validity checking.
--- 4336,4373 ----
  
  .. 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
!   ``in`` should be validity checked.
  
  
  .. index:: -gnatVi  (gcc)
  
! :switch:`-gnatVi`
!   *Validity checks for ``in`` mode parameters.*
  
!   Arguments for parameters of mode ``in`` are validity checked in function
    and procedure calls at the point of call.
  
  
  .. index:: -gnatVm  (gcc)
  
! :switch:`-gnatVm`
!   *Validity checks for ``in out`` mode parameters.*
  
!   Arguments for parameters of mode ``in out`` are validity checked in
!   procedure calls at the point of call. The ``'m'`` here stands for
    modify, since this concerns parameters that can be modified by the call.
!   Note that there is no specific option to test ``out`` parameters,
    but any reference within the subprogram will be tested in the usual
    manner, and if an invalid value is copied back, any reference to it
    will be subject to validity checking.
*************** to the default checks required by Ada as
*** 4280,4304 ****
  
  .. index:: -gnatVn  (gcc)
  
! :samp:`-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
!   the switch *-gnatp* suppresses all run-time checks, including
!   validity checks, and thus implies *-gnatVn*. When this switch
!   is used, it cancels any other *-gnatV* previously issued.
  
  
  .. index:: -gnatVo  (gcc)
  
! :samp:`-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
    on individual component values for composite comparisons, and on the
    expressions in type conversions and qualified expressions. Checks are
    also made on explicit ranges using :samp:`..` (e.g., slices, loops etc).
--- 4375,4399 ----
  
  .. index:: -gnatVn  (gcc)
  
! :switch:`-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
!   the switch :switch:`-gnatp` suppresses all run-time checks, including
!   validity checks, and thus implies :switch:`-gnatVn`. When this switch
!   is used, it cancels any other :switch:`-gnatV` previously issued.
  
  
  .. index:: -gnatVo  (gcc)
  
! :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
    on individual component values for composite comparisons, and on the
    expressions in type conversions and qualified expressions. Checks are
    also made on explicit ranges using :samp:`..` (e.g., slices, loops etc).
*************** to the default checks required by Ada as
*** 4306,4336 ****
  
  .. index:: -gnatVp  (gcc)
  
! :samp:`-gnatVp`
    *Validity checks for parameters.*
  
    This controls the treatment of parameters within a subprogram (as opposed
!   to *-gnatVi* and *-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 *-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)
  
! :samp:`-gnatVr`
    *Validity checks for function returns.*
  
!   The expression in `return` statements in functions is validity
    checked.
  
  
  .. index:: -gnatVs  (gcc)
  
! :samp:`-gnatVs`
    *Validity checks for subscripts.*
  
    All subscripts expressions are checked for validity, whether they appear
--- 4401,4431 ----
  
  .. index:: -gnatVp  (gcc)
  
! :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.
  
  
  .. index:: -gnatVs  (gcc)
  
! :switch:`-gnatVs`
    *Validity checks for subscripts.*
  
    All subscripts expressions are checked for validity, whether they appear
*************** to the default checks required by Ada as
*** 4340,4372 ****
  
  .. index:: -gnatVt  (gcc)
  
! :samp:`-gnatVt`
    *Validity checks for tests.*
  
!   Expressions used as conditions in `if`, `while` or `exit`
    statements are checked, as well as guard expressions in entry calls.
  
  
! The *-gnatV* switch may be followed by a string of letters
  to turn on a series of validity checking options.
! For example, :samp:`-gnatVcr`
  specifies that in addition to the default validity checking, copies and
  function return expressions are to be validity checked.
  In order to make it easier to specify the desired combination of effects,
! the upper case letters `CDFIMORST` may
  be used to turn off the corresponding lower case option.
! Thus :samp:`-gnatVaM` turns on all validity checking options except for
! checking of `**in out**` procedure arguments.
  
  The specification of additional validity checking generates extra code (and
! in the case of *-gnatVa* the code expansion can be substantial).
  However, these additional checks can be very useful in detecting
  uninitialized variables, incorrect use of unchecked conversion, and other
! errors leading to invalid values. The use of pragma `Initialize_Scalars`
  is useful in conjunction with the extra validity checking, since this
  ensures that wherever possible uninitialized variables have invalid values.
  
! See also the pragma `Validity_Checks` which allows modification of
  the validity checking mode at the program source level, and also allows for
  temporary disabling of validity checks.
  
--- 4435,4467 ----
  
  .. index:: -gnatVt  (gcc)
  
! :switch:`-gnatVt`
    *Validity checks for tests.*
  
!   Expressions used as conditions in ``if``, ``while`` or ``exit``
    statements are checked, as well as guard expressions in entry calls.
  
  
! The :switch:`-gnatV` switch may be followed by a string of letters
  to turn on a series of validity checking options.
! For example, :switch:`-gnatVcr`
  specifies that in addition to the default validity checking, copies and
  function return expressions are to be validity checked.
  In order to make it easier to specify the desired combination of effects,
! the upper case letters ``CDFIMORST`` may
  be used to turn off the corresponding lower case option.
! Thus :switch:`-gnatVaM` turns on all validity checking options except for
! checking of ``in out`` parameters.
  
  The specification of additional validity checking generates extra code (and
! in the case of :switch:`-gnatVa` the code expansion can be substantial).
  However, these additional checks can be very useful in detecting
  uninitialized variables, incorrect use of unchecked conversion, and other
! errors leading to invalid values. The use of pragma ``Initialize_Scalars``
  is useful in conjunction with the extra validity checking, since this
  ensures that wherever possible uninitialized variables have invalid values.
  
! See also the pragma ``Validity_Checks`` which allows modification of
  the validity checking mode at the program source level, and also allows for
  temporary disabling of validity checks.
  
*************** Style Checking
*** 4379,4391 ****
  
  .. index:: -gnaty  (gcc)
  
! The *-gnatyx* switch causes the compiler to
  enforce specified style rules. A limited set of style rules has been used
  in writing the GNAT sources themselves. This switch allows user programs
  to activate all or some of these checks. If the source program fails a
  specified style check, an appropriate message is given, preceded by
  the character sequence '(style)'. This message does not prevent
! successful compilation (unless the *-gnatwe* switch is used).
  
  Note that this is by no means intended to be a general facility for
  checking arbitrary coding standards. It is simply an embedding of the
--- 4474,4486 ----
  
  .. index:: -gnaty  (gcc)
  
! The :switch:`-gnatyx` switch causes the compiler to
  enforce specified style rules. A limited set of style rules has been used
  in writing the GNAT sources themselves. This switch allows user programs
  to activate all or some of these checks. If the source program fails a
  specified style check, an appropriate message is given, preceded by
  the character sequence '(style)'. This message does not prevent
! successful compilation (unless the :switch:`-gnatwe` switch is used).
  
  Note that this is by no means intended to be a general facility for
  checking arbitrary coding standards. It is simply an embedding of the
*************** some subset of them.
*** 4402,4424 ****
    of an existing set of coding rules, you should look to the gnatcheck
    tool, which is designed for that purpose.
  
! The string `x` is a sequence of letters or digits
  indicating the particular style
  checks to be performed. The following checks are defined:
  
  
  .. index:: -gnaty[0-9]   (gcc)
  
! :samp:`-gnaty0`
    *Specify indentation level.*
  
    If a digit from 1-9 appears
!   in the string after *-gnaty*
    then proper indentation is checked, with the digit indicating the
    indentation level required. A value of zero turns off this style check.
    The general style of required indentation is as specified by
    the examples in the Ada Reference Manual. Full line comments must be
!   aligned with the `--` starting on a column that is a multiple of
    the alignment level, or they may be aligned the same way as the following
    non-blank line (this is useful when full line comments appear in the middle
    of a statement, or they may be aligned with the source line on the previous
--- 4497,4519 ----
    of an existing set of coding rules, you should look to the gnatcheck
    tool, which is designed for that purpose.
  
! The string ``x`` is a sequence of letters or digits
  indicating the particular style
  checks to be performed. The following checks are defined:
  
  
  .. index:: -gnaty[0-9]   (gcc)
  
! :switch:`-gnaty0`
    *Specify indentation level.*
  
    If a digit from 1-9 appears
!   in the string after :switch:`-gnaty`
    then proper indentation is checked, with the digit indicating the
    indentation level required. A value of zero turns off this style check.
    The general style of required indentation is as specified by
    the examples in the Ada Reference Manual. Full line comments must be
!   aligned with the ``--`` starting on a column that is a multiple of
    the alignment level, or they may be aligned the same way as the following
    non-blank line (this is useful when full line comments appear in the middle
    of a statement, or they may be aligned with the source line on the previous
*************** checks to be performed. The following ch
*** 4426,4435 ****
  
  .. index:: -gnatya   (gcc)
  
! :samp:`-gnatya`
    *Check attribute casing.*
  
!   Attribute names, including the case of keywords such as `digits`
    used as attributes names, must be written in mixed case, that is, the
    initial letter and any letter following an underscore must be uppercase.
    All other letters must be lowercase.
--- 4521,4530 ----
  
  .. index:: -gnatya   (gcc)
  
! :switch:`-gnatya`
    *Check attribute casing.*
  
!   Attribute names, including the case of keywords such as ``digits``
    used as attributes names, must be written in mixed case, that is, the
    initial letter and any letter following an underscore must be uppercase.
    All other letters must be lowercase.
*************** checks to be performed. The following ch
*** 4437,4443 ****
  
  .. index:: -gnatyA (gcc)
  
! :samp:`-gnatyA`
    *Use of array index numbers in array attributes.*
  
    When using the array attributes First, Last, Range,
--- 4532,4538 ----
  
  .. index:: -gnatyA (gcc)
  
! :switch:`-gnatyA`
    *Use of array index numbers in array attributes.*
  
    When using the array attributes First, Last, Range,
*************** checks to be performed. The following ch
*** 4447,4453 ****
  
  .. index:: -gnatyb (gcc)
  
! :samp:`-gnatyb`
    *Blanks not allowed at statement end.*
  
    Trailing blanks are not allowed at the end of statements. The purpose of this
--- 4542,4548 ----
  
  .. index:: -gnatyb (gcc)
  
! :switch:`-gnatyb`
    *Blanks not allowed at statement end.*
  
    Trailing blanks are not allowed at the end of statements. The purpose of this
*************** checks to be performed. The following ch
*** 4457,4507 ****
  
  .. index:: -gnatyB (gcc)
  
! :samp:`-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
!   boolean constants. In all other cases `and then`/`or else` are
    required.
  
  
  .. index:: -gnatyc (gcc)
  
! :samp:`-gnatyc`
    *Check comments, double space.*
  
    Comments must meet the following set of rules:
  
!   * The '`--`' that starts the column must either start in column one,
      or else at least one blank must precede this sequence.
  
    * Comments that follow other tokens on a line must have at least one blank
!     following the '`--`' at the start of the comment.
  
    * Full line comments must have at least two blanks following the
!     '`--`' that starts the comment, with the following exceptions.
  
!   * A line consisting only of the '`--`' characters, possibly preceded
      by blanks is permitted.
  
!   * A comment starting with '`--x`' where `x` is a special character
      is permitted.
!     This allows proper processing of the output generated by specialized tools
!     including *gnatprep* (where '`--!`' is used) and the SPARK
      annotation
!     language (where '`--#`' is used). For the purposes of this rule, a
      special character is defined as being in one of the ASCII ranges
!     `16#21#...16#2F#` or `16#3A#...16#3F#`.
      Note that this usage is not permitted
!     in GNAT implementation units (i.e., when *-gnatg* is used).
  
    * A line consisting entirely of minus signs, possibly preceded by blanks, is
      permitted. This allows the construction of box comments where lines of minus
      signs are used to form the top and bottom of the box.
  
!   * A comment that starts and ends with '`--`' is permitted as long as at
!     least one blank follows the initial '`--`'. Together with the preceding
      rule, this allows the construction of box comments, as shown in the following
      example:
  
--- 4552,4602 ----
  
  .. index:: -gnatyB (gcc)
  
! :switch:`-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
!   boolean constants. In all other cases ``and then``/`or else` are
    required.
  
  
  .. index:: -gnatyc (gcc)
  
! :switch:`-gnatyc`
    *Check comments, double space.*
  
    Comments must meet the following set of rules:
  
!   * The ``--`` that starts the column must either start in column one,
      or else at least one blank must precede this sequence.
  
    * Comments that follow other tokens on a line must have at least one blank
!     following the ``--`` at the start of the comment.
  
    * Full line comments must have at least two blanks following the
!     ``--`` that starts the comment, with the following exceptions.
  
!   * A line consisting only of the ``--`` characters, possibly preceded
      by blanks is permitted.
  
!   * A comment starting with ``--x`` where ``x`` is a special character
      is permitted.
!     This allows proper processing of the output from specialized tools
!     such as ``gnatprep`` (where ``--!`` is used) and in earlier versions of the SPARK
      annotation
!     language (where ``--#`` is used). For the purposes of this rule, a
      special character is defined as being in one of the ASCII ranges
!     ``16#21#...16#2F#`` or ``16#3A#...16#3F#``.
      Note that this usage is not permitted
!     in GNAT implementation units (i.e., when :switch:`-gnatg` is used).
  
    * A line consisting entirely of minus signs, possibly preceded by blanks, is
      permitted. This allows the construction of box comments where lines of minus
      signs are used to form the top and bottom of the box.
  
!   * A comment that starts and ends with ``--`` is permitted as long as at
!     least one blank follows the initial ``--``. Together with the preceding
      rule, this allows the construction of box comments, as shown in the following
      example:
  
*************** checks to be performed. The following ch
*** 4515,4530 ****
  
  .. index:: -gnatyC (gcc)
  
! :samp:`-gnatyC`
    *Check comments, single space.*
  
!   This is identical to `c` except that only one space
!   is required following the `--` of a comment instead of two.
  
  
  .. index:: -gnatyd (gcc)
  
! :samp:`-gnatyd`
    *Check no DOS line terminators present.*
  
    All lines must be terminated by a single ASCII.LF
--- 4610,4625 ----
  
  .. index:: -gnatyC (gcc)
  
! :switch:`-gnatyC`
    *Check comments, single space.*
  
!   This is identical to ``c`` except that only one space
!   is required following the ``--`` of a comment instead of two.
  
  
  .. index:: -gnatyd (gcc)
  
! :switch:`-gnatyd`
    *Check no DOS line terminators present.*
  
    All lines must be terminated by a single ASCII.LF
*************** checks to be performed. The following ch
*** 4534,4549 ****
  
  .. index:: -gnatye (gcc)
  
! :samp:`-gnatye`
    *Check end/exit labels.*
  
!   Optional labels on `end` statements ending subprograms and on
!   `exit` statements exiting named loops, are required to be present.
  
  
  .. index:: -gnatyf (gcc)
  
! :samp:`-gnatyf`
    *No form feeds or vertical tabs.*
  
    Neither form feeds nor vertical tab characters are permitted
--- 4629,4644 ----
  
  .. index:: -gnatye (gcc)
  
! :switch:`-gnatye`
    *Check end/exit labels.*
  
!   Optional labels on ``end`` statements ending subprograms and on
!   ``exit`` statements exiting named loops, are required to be present.
  
  
  .. index:: -gnatyf (gcc)
  
! :switch:`-gnatyf`
    *No form feeds or vertical tabs.*
  
    Neither form feeds nor vertical tab characters are permitted
*************** checks to be performed. The following ch
*** 4552,4570 ****
  
  .. index:: -gnatyg (gcc)
  
! :samp:`-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
!   incorporated into GNAT. Currently this is equivalent to *-gnatwydISux*)
    but additional style switches may be added to this set in the future without
    advance notice.
  
  
  .. index:: -gnatyh (gcc)
  
! :samp:`-gnatyh`
    *No horizontal tabs.*
  
    Horizontal tab characters are not permitted in the source text.
--- 4647,4665 ----
  
  .. index:: -gnatyg (gcc)
  
! :switch:`-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
!   incorporated into GNAT. Currently this is equivalent to :switch:`-gnatwydISux`)
    but additional style switches may be added to this set in the future without
    advance notice.
  
  
  .. index:: -gnatyh (gcc)
  
! :switch:`-gnatyh`
    *No horizontal tabs.*
  
    Horizontal tab characters are not permitted in the source text.
*************** checks to be performed. The following ch
*** 4575,4623 ****
  
  .. index:: -gnatyi (gcc)
  
! :samp:`-gnatyi`
    *Check if-then layout.*
  
!   The keyword `then` must appear either on the same
!   line as corresponding `if`, or on a line on its own, lined
!   up under the `if`.
  
  
  .. index:: -gnatyI (gcc)
  
! :samp:`-gnatyI`
    *check mode IN keywords.*
  
!   Mode `in` (the default mode) is not
!   allowed to be given explicitly. `in out` is fine,
!   but not `in` on its own.
  
  
  .. index:: -gnatyk (gcc)
  
! :samp:`-gnatyk`
    *Check keyword casing.*
  
    All keywords must be in lower case (with the exception of keywords
!   such as `digits` used as attribute names to which this check
    does not apply).
  
  
  .. index:: -gnatyl (gcc)
  
! :samp:`-gnatyl`
    *Check layout.*
  
    Layout of statement and declaration constructs must follow the
    recommendations in the Ada Reference Manual, as indicated by the
!   form of the syntax rules. For example an `else` keyword must
!   be lined up with the corresponding `if` keyword.
  
    There are two respects in which the style rule enforced by this check
    option are more liberal than those in the Ada Reference Manual. First
    in the case of record declarations, it is permissible to put the
!   `record` keyword on the same line as the `type` keyword, and
!   then the `end` in `end record` must line up under `type`.
    This is also permitted when the type declaration is split on two lines.
    For example, any of the following three layouts is acceptable:
  
--- 4670,4718 ----
  
  .. index:: -gnatyi (gcc)
  
! :switch:`-gnatyi`
    *Check if-then layout.*
  
!   The keyword ``then`` must appear either on the same
!   line as corresponding ``if``, or on a line on its own, lined
!   up under the ``if``.
  
  
  .. index:: -gnatyI (gcc)
  
! :switch:`-gnatyI`
    *check mode IN keywords.*
  
!   Mode ``in`` (the default mode) is not
!   allowed to be given explicitly. ``in out`` is fine,
!   but not ``in`` on its own.
  
  
  .. index:: -gnatyk (gcc)
  
! :switch:`-gnatyk`
    *Check keyword casing.*
  
    All keywords must be in lower case (with the exception of keywords
!   such as ``digits`` used as attribute names to which this check
    does not apply).
  
  
  .. index:: -gnatyl (gcc)
  
! :switch:`-gnatyl`
    *Check layout.*
  
    Layout of statement and declaration constructs must follow the
    recommendations in the Ada Reference Manual, as indicated by the
!   form of the syntax rules. For example an ``else`` keyword must
!   be lined up with the corresponding ``if`` keyword.
  
    There are two respects in which the style rule enforced by this check
    option are more liberal than those in the Ada Reference Manual. First
    in the case of record declarations, it is permissible to put the
!   ``record`` keyword on the same line as the ``type`` keyword, and
!   then the ``end`` in ``end record`` must line up under ``type``.
    This is also permitted when the type declaration is split on two lines.
    For example, any of the following three layouts is acceptable:
  
*************** checks to be performed. The following ch
*** 4641,4648 ****
      end record;
  
    Second, in the case of a block statement, a permitted alternative
!   is to put the block label on the same line as the `declare` or
!   `begin` keyword, and then line the `end` keyword up under
    the block label. For example both the following are permitted:
  
    .. code-block:: ada
--- 4736,4743 ----
      end record;
  
    Second, in the case of a block statement, a permitted alternative
!   is to put the block label on the same line as the ``declare`` or
!   ``begin`` keyword, and then line the ``end`` keyword up under
    the block label. For example both the following are permitted:
  
    .. code-block:: ada
*************** checks to be performed. The following ch
*** 4677,4683 ****
  
  .. index:: -gnatyLnnn (gcc)
  
! :samp:`-gnatyL`
    *Set maximum nesting level.*
  
    The maximum level of nesting of constructs (including subprograms, loops,
--- 4772,4778 ----
  
  .. index:: -gnatyLnnn (gcc)
  
! :switch:`-gnatyL`
    *Set maximum nesting level.*
  
    The maximum level of nesting of constructs (including subprograms, loops,
*************** checks to be performed. The following ch
*** 4687,4693 ****
  
  .. index:: -gnatym (gcc)
  
! :samp:`-gnatym`
    *Check maximum line length.*
  
    The length of source lines must not exceed 79 characters, including
--- 4782,4788 ----
  
  .. index:: -gnatym (gcc)
  
! :switch:`-gnatym`
    *Check maximum line length.*
  
    The length of source lines must not exceed 79 characters, including
*************** checks to be performed. The following ch
*** 4701,4707 ****
  
  .. index:: -gnatyMnnn (gcc)
  
! :samp:`-gnatyM`
    *Set maximum line length.*
  
    The length of lines must not exceed the
--- 4796,4802 ----
  
  .. index:: -gnatyMnnn (gcc)
  
! :switch:`-gnatyM`
    *Set maximum line length.*
  
    The length of lines must not exceed the
*************** checks to be performed. The following ch
*** 4713,4729 ****
  
  .. index:: -gnatyn (gcc)
  
! :samp:`-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,
!   `Integer` and `ASCII.NUL`).
  
  
  .. index:: -gnatyN (gcc)
  
! :samp:`-gnatyN`
    *Turn off all style checks.*
  
    All style check options are turned off.
--- 4808,4824 ----
  
  .. index:: -gnatyn (gcc)
  
! :switch:`-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,
!   ``Integer`` and ``ASCII.NUL``).
  
  
  .. index:: -gnatyN (gcc)
  
! :switch:`-gnatyN`
    *Turn off all style checks.*
  
    All style check options are turned off.
*************** checks to be performed. The following ch
*** 4731,4737 ****
  
  .. index:: -gnatyo (gcc)
  
! :samp:`-gnatyo`
    *Check order of subprogram bodies.*
  
    All subprogram bodies in a given scope
--- 4826,4832 ----
  
  .. index:: -gnatyo (gcc)
  
! :switch:`-gnatyo`
    *Check order of subprogram bodies.*
  
    All subprogram bodies in a given scope
*************** checks to be performed. The following ch
*** 4744,4750 ****
  
  .. index:: -gnatyO (gcc)
  
! :samp:`-gnatyO`
    *Check that overriding subprograms are explicitly marked as such.*
  
    This applies to all subprograms of a derived type that override a primitive
--- 4839,4845 ----
  
  .. index:: -gnatyO (gcc)
  
! :switch:`-gnatyO`
    *Check that overriding subprograms are explicitly marked as such.*
  
    This applies to all subprograms of a derived type that override a primitive
*************** checks to be performed. The following ch
*** 4757,4763 ****
  
  .. index:: -gnatyp (gcc)
  
! :samp:`-gnatyp`
    *Check pragma casing.*
  
    Pragma names must be written in mixed case, that is, the
--- 4852,4858 ----
  
  .. index:: -gnatyp (gcc)
  
! :switch:`-gnatyp`
    *Check pragma casing.*
  
    Pragma names must be written in mixed case, that is, the
*************** checks to be performed. The following ch
*** 4768,4774 ****
  
  .. index:: -gnatyr (gcc)
  
! :samp:`-gnatyr`
    *Check references.*
  
    All identifier references must be cased in the same way as the
--- 4863,4869 ----
  
  .. index:: -gnatyr (gcc)
  
! :switch:`-gnatyr`
    *Check references.*
  
    All identifier references must be cased in the same way as the
*************** checks to be performed. The following ch
*** 4779,4785 ****
  
  .. index:: -gnatys (gcc)
  
! :samp:`-gnatys`
    *Check separate specs.*
  
    Separate declarations ('specs') are required for subprograms (a
--- 4874,4880 ----
  
  .. index:: -gnatys (gcc)
  
! :switch:`-gnatys`
    *Check separate specs.*
  
    Separate declarations ('specs') are required for subprograms (a
*************** checks to be performed. The following ch
*** 4791,4820 ****
  
  .. index:: -gnatyS (gcc)
  
! :samp:`-gnatyS`
    *Check no statements after then/else.*
  
    No statements are allowed
!   on the same line as a `then` or `else` keyword following the
!   keyword in an `if` statement. `or else` and `and then` are not
!   affected, and a special exception allows a pragma to appear after `else`.
  
  
  .. index:: -gnatyt (gcc)
  
! :samp:`-gnatyt`
    *Check token spacing.*
  
    The following token spacing rules are enforced:
  
!   * The keywords `abs` and `not` must be followed by a space.
  
!   * The token `=>` must be surrounded by spaces.
  
!   * The token `<>` must be preceded by a space or a left parenthesis.
  
!   * Binary operators other than `**` must be surrounded by spaces.
!     There is no restriction on the layout of the `**` binary operator.
  
    * Colon must be surrounded by spaces.
  
--- 4886,4915 ----
  
  .. index:: -gnatyS (gcc)
  
! :switch:`-gnatyS`
    *Check no statements after then/else.*
  
    No statements are allowed
!   on the same line as a ``then`` or ``else`` keyword following the
!   keyword in an ``if`` statement. ``or else`` and ``and then`` are not
!   affected, and a special exception allows a pragma to appear after ``else``.
  
  
  .. index:: -gnatyt (gcc)
  
! :switch:`-gnatyt`
    *Check token spacing.*
  
    The following token spacing rules are enforced:
  
!   * The keywords ``abs`` and ``not`` must be followed by a space.
  
!   * The token ``=>`` must be surrounded by spaces.
  
!   * The token ``<>`` must be preceded by a space or a left parenthesis.
  
!   * Binary operators other than ``**`` must be surrounded by spaces.
!     There is no restriction on the layout of the ``**`` binary operator.
  
    * Colon must be surrounded by spaces.
  
*************** checks to be performed. The following ch
*** 4841,4852 ****
    * A vertical bar must be surrounded by spaces.
  
    Exactly one blank (and no other white space) must appear between
!   a `not` token and a following `in` token.
  
  
  .. index:: -gnatyu (gcc)
  
! :samp:`-gnatyu`
    *Check unnecessary blank lines.*
  
    Unnecessary blank lines are not allowed. A blank line is considered
--- 4936,4947 ----
    * A vertical bar must be surrounded by spaces.
  
    Exactly one blank (and no other white space) must appear between
!   a ``not`` token and a following ``in`` token.
  
  
  .. index:: -gnatyu (gcc)
  
! :switch:`-gnatyu`
    *Check unnecessary blank lines.*
  
    Unnecessary blank lines are not allowed. A blank line is considered
*************** checks to be performed. The following ch
*** 4856,4897 ****
  
  .. index:: -gnatyx (gcc)
  
! :samp:`-gnatyx`
    *Check extra parentheses.*
  
    Unnecessary extra level of parentheses (C-style) are not allowed
!   around conditions in `if` statements, `while` statements and
!   `exit` statements.
  
  
  .. index:: -gnatyy (gcc)
  
! :samp:`-gnatyy`
    *Set all standard style check options.*
  
!   This is equivalent to `gnaty3aAbcefhiklmnprst`, that is all checking
!   options enabled with the exception of *-gnatyB*, *-gnatyd*,
!   *-gnatyI*, *-gnatyLnnn*, *-gnatyo*, *-gnatyO*,
!   *-gnatyS*, *-gnatyu*, and *-gnatyx*.
  
  
  .. index:: -gnaty- (gcc)
  
! :samp:`-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 *L* parameter witout any integer value after that, because any
!   digit following *-* in the parameter string of the *-gnaty*
!   option will be threated as canceling indentation check. The same is true
!   for *M* parameter. *y* and *N* parameters are not
    allowed after *-*.
  
  
  .. index:: -gnaty+ (gcc)
  
! :samp:`-gnaty+`
    *Enable style check options.*
  
    This causes any subsequent options in the string to enable the corresponding
--- 4951,4992 ----
  
  .. index:: -gnatyx (gcc)
  
! :switch:`-gnatyx`
    *Check extra parentheses.*
  
    Unnecessary extra level of parentheses (C-style) are not allowed
!   around conditions in ``if`` statements, ``while`` statements and
!   ``exit`` statements.
  
  
  .. index:: -gnatyy (gcc)
  
! :switch:`-gnatyy`
    *Set all standard style check options.*
  
!   This is equivalent to ``gnaty3aAbcefhiklmnprst``, that is all checking
!   options enabled with the exception of :switch:`-gnatyB`, :switch:`-gnatyd`,
!   :switch:`-gnatyI`, :switch:`-gnatyLnnn`, :switch:`-gnatyo`, :switch:`-gnatyO`,
!   :switch:`-gnatyS`, :switch:`-gnatyu`, and :switch:`-gnatyx`.
  
  
  .. index:: -gnaty- (gcc)
  
! :switch:`-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 ``L`` parameter without any integer value after that, because any
!   digit following *-* in the parameter string of the :switch:`-gnaty`
!   option will be treated as canceling the indentation check. The same is true
!   for the ``M`` parameter. ``y`` and ``N`` parameters are not
    allowed after *-*.
  
  
  .. index:: -gnaty+ (gcc)
  
! :switch:`-gnaty+`
    *Enable style check options.*
  
    This causes any subsequent options in the string to enable the corresponding
*************** If any of these style rules is violated,
*** 4914,4928 ****
  details on the violation. The initial characters of such messages are
  always '`(style)`'. Note that these messages are treated as warning
  messages, so they normally do not prevent the generation of an object
! file. The *-gnatwe* switch can be used to treat warning messages,
  including style messages, as fatal errors.
  
! The switch :samp:`-gnaty` on its own (that is not
  followed by any letters or digits) is equivalent
! to the use of *-gnatyy* as described above, that is all
  built-in standard style check options are enabled.
  
! The switch :samp:`-gnatyN` clears any previously set style checks.
  
  .. _Run-Time_Checks:
  
--- 5009,5023 ----
  details on the violation. The initial characters of such messages are
  always '`(style)`'. Note that these messages are treated as warning
  messages, so they normally do not prevent the generation of an object
! file. The :switch:`-gnatwe` switch can be used to treat warning messages,
  including style messages, as fatal errors.
  
! The switch :switch:`-gnaty` on its own (that is not
  followed by any letters or digits) is equivalent
! to the use of :switch:`-gnatyy` as described above, that is all
  built-in standard style check options are enabled.
  
! The switch :switch:`-gnatyN` clears any previously set style checks.
  
  .. _Run-Time_Checks:
  
*************** Run-Time Checks
*** 4942,4961 ****
  By default, the following checks are suppressed: stack overflow
  checks, and checks for access before elaboration on subprogram
  calls. All other checks, including overflow checks, range checks and
! array bounds checks, are turned on by default. The following *gcc*
  switches refine this default behavior.
  
  .. index:: -gnatp  (gcc)
  
! :samp:`-gnatp`
    .. index:: Suppressing checks
  
    .. index:: Checks, suppressing
  
    This switch causes the unit to be compiled
!   as though `pragma Suppress (All_checks)`
    had been present in the source. Validity checks are also eliminated (in
!   other words *-gnatp* also implies *-gnatVn*.
    Use this switch to improve the performance
    of the code at the expense of safety in the presence of invalid data or
    program bugs.
--- 5037,5056 ----
  By default, the following checks are suppressed: stack overflow
  checks, and checks for access before elaboration on subprogram
  calls. All other checks, including overflow checks, range checks and
! array bounds checks, are turned on by default. The following ``gcc``
  switches refine this default behavior.
  
  .. index:: -gnatp  (gcc)
  
! :switch:`-gnatp`
    .. index:: Suppressing checks
  
    .. index:: Checks, suppressing
  
    This switch causes the unit to be compiled
!   as though ``pragma Suppress (All_checks)``
    had been present in the source. Validity checks are also eliminated (in
!   other words :switch:`-gnatp` also implies :switch:`-gnatVn`.
    Use this switch to improve the performance
    of the code at the expense of safety in the presence of invalid data or
    program bugs.
*************** switches refine this default behavior.
*** 4983,5001 ****
    execution if that assumption is wrong.
  
    The checks subject to suppression include all the checks defined by the Ada
!   standard, the additional implementation defined checks `Alignment_Check`,
!   `Duplicated_Tag_Check`, `Predicate_Check`, Container_Checks, Tampering_Check,
!   and `Validity_Check`, as well as any checks introduced using `pragma
!   Check_Name`. Note that `Atomic_Synchronization` is not automatically
!   suppressed by use of this option.
  
    If the code depends on certain checks being active, you can use
!   pragma `Unsuppress` either as a configuration pragma or as
    a local pragma to make sure that a specified check is performed
!   even if *gnatp* is specified.
  
!   The *-gnatp* switch has no effect if a subsequent
!   *-gnat-p* switch appears.
  
  
  .. index:: -gnat-p  (gcc)
--- 5078,5095 ----
    execution if that assumption is wrong.
  
    The checks subject to suppression include all the checks defined by the Ada
!   standard, the additional implementation defined checks ``Alignment_Check``,
!   ``Duplicated_Tag_Check``, ``Predicate_Check``, ``Container_Checks``, ``Tampering_Check``,
!   and ``Validity_Check``, as well as any checks introduced using ``pragma Check_Name``.
!   Note that ``Atomic_Synchronization`` is not automatically suppressed by use of this option.
  
    If the code depends on certain checks being active, you can use
!   pragma ``Unsuppress`` either as a configuration pragma or as
    a local pragma to make sure that a specified check is performed
!   even if ``gnatp`` is specified.
  
!   The :switch:`-gnatp` switch has no effect if a subsequent
!   :switch:`-gnat-p` switch appears.
  
  
  .. index:: -gnat-p  (gcc)
*************** switches refine this default behavior.
*** 5003,5010 ****
  .. index:: Checks, suppressing
  .. index:: Suppress
  
! :samp:`-gnat-p`
!   This switch cancels the effect of a previous *gnatp* switch.
  
  
  .. index:: -gnato??  (gcc)
--- 5097,5104 ----
  .. index:: Checks, suppressing
  .. index:: Suppress
  
! :switch:`-gnat-p`
!   This switch cancels the effect of a previous ``gnatp`` switch.
  
  
  .. index:: -gnato??  (gcc)
*************** switches refine this default behavior.
*** 5012,5018 ****
  .. index:: Overflow mode
  .. index:: Check, overflow
  
! :samp:`-gnato??`
    This switch controls the mode used for computing intermediate
    arithmetic integer operations, and also enables overflow checking.
    For a full description of overflow mode and checking control, see
--- 5106,5112 ----
  .. index:: Overflow mode
  .. index:: Check, overflow
  
! :switch:`-gnato??`
    This switch controls the mode used for computing intermediate
    arithmetic integer operations, and also enables overflow checking.
    For a full description of overflow mode and checking control, see
*************** switches refine this default behavior.
*** 5032,5038 ****
    *2 = MINIMIZED*
      In MINIMIZED mode, overflows in intermediate operations are avoided
      where possible by using a larger integer type for the computation
!     (typically `Long_Long_Integer`). Overflow checking ensures that
      the result fits in this larger integer type.
  
  
--- 5126,5132 ----
    *2 = MINIMIZED*
      In MINIMIZED mode, overflows in intermediate operations are avoided
      where possible by using a larger integer type for the computation
!     (typically ``Long_Long_Integer``). Overflow checking ensures that
      the result fits in this larger integer type.
  
  
*************** switches refine this default behavior.
*** 5041,5047 ****
      by using multi-precision arithmetic. In this case, overflow checking
      has no effect on intermediate operations (since overflow is impossible).
  
!   If two digits are present after *-gnato* then the first digit
    sets the mode for expressions outside assertions, and the second digit
    sets the mode for expressions within assertions. Here assertions is used
    in the technical sense (which includes for example precondition and
--- 5135,5141 ----
      by using multi-precision arithmetic. In this case, overflow checking
      has no effect on intermediate operations (since overflow is impossible).
  
!   If two digits are present after :switch:`-gnato` then the first digit
    sets the mode for expressions outside assertions, and the second digit
    sets the mode for expressions within assertions. Here assertions is used
    in the technical sense (which includes for example precondition and
*************** switches refine this default behavior.
*** 5052,5065 ****
  
    If no digits are present, the default is to enable overflow checks
    and set STRICT mode for both kinds of expressions. This is compatible
!   with the use of *-gnato* in previous versions of GNAT.
  
    .. index:: Machine_Overflows
  
!   Note that the *-gnato??* switch does not affect the code generated
    for any floating-point operations; it applies only to integer semantics.
!   For floating-point, GNAT has the `Machine_Overflows`
!   attribute set to `False` and the normal mode of operation is to
    generate IEEE NaN and infinite values on overflow or invalid operations
    (such as dividing 0.0 by 0.0).
  
--- 5146,5159 ----
  
    If no digits are present, the default is to enable overflow checks
    and set STRICT mode for both kinds of expressions. This is compatible
!   with the use of :switch:`-gnato` in previous versions of GNAT.
  
    .. index:: Machine_Overflows
  
!   Note that the :switch:`-gnato??` switch does not affect the code generated
    for any floating-point operations; it applies only to integer semantics.
!   For floating-point, GNAT has the ``Machine_Overflows``
!   attribute set to ``False`` and the normal mode of operation is to
    generate IEEE NaN and infinite values on overflow or invalid operations
    (such as dividing 0.0 by 0.0).
  
*************** switches refine this default behavior.
*** 5071,5077 ****
    checking is also quite expensive in time and space, since in general it
    requires the use of double length arithmetic.
  
!   Note again that the default is *-gnato11* (equivalent to *-gnato1*),
    so overflow checking is performed in STRICT mode by default.
  
  
--- 5165,5171 ----
    checking is also quite expensive in time and space, since in general it
    requires the use of double length arithmetic.
  
!   Note again that the default is :switch:`-gnato11` (equivalent to :switch:`-gnato1`),
    so overflow checking is performed in STRICT mode by default.
  
  
*************** switches refine this default behavior.
*** 5079,5088 ****
  .. index:: Elaboration checks
  .. index:: Check, elaboration
  
! :samp:`-gnatE`
    Enables dynamic checks for access-before-elaboration
    on subprogram calls and generic instantiations.
!   Note that *-gnatE* is not necessary for safety, because in the
    default mode, GNAT ensures statically that the checks would not fail.
    For full details of the effect and use of this switch,
    :ref:`Compiling_with_gcc`.
--- 5173,5182 ----
  .. index:: Elaboration checks
  .. index:: Check, elaboration
  
! :switch:`-gnatE`
    Enables dynamic checks for access-before-elaboration
    on subprogram calls and generic instantiations.
!   Note that :switch:`-gnatE` is not necessary for safety, because in the
    default mode, GNAT ensures statically that the checks would not fail.
    For full details of the effect and use of this switch,
    :ref:`Compiling_with_gcc`.
*************** switches refine this default behavior.
*** 5092,5118 ****
  .. index:: Stack Overflow Checking
  .. index:: Checks, stack overflow checking
  
! :samp:`-fstack-check`
    Activates stack overflow checking. For full details of the effect and use of
    this switch see :ref:`Stack_Overflow_Checking`.
  
  .. index:: Unsuppress
  
  The setting of these switches only controls the default setting of the
! checks. You may modify them using either `Suppress` (to remove
! checks) or `Unsuppress` (to add back suppressed checks) pragmas in
  the program source.
  
  
  .. _Using_gcc_for_Syntax_Checking:
  
! Using *gcc* for Syntax Checking
! -------------------------------
  
  .. index:: -gnats  (gcc)
  
! :samp:`-gnats`
!   The `s` stands for 'syntax'.
  
    Run GNAT in syntax checking only mode. For
    example, the command
--- 5186,5212 ----
  .. index:: Stack Overflow Checking
  .. index:: Checks, stack overflow checking
  
! :switch:`-fstack-check`
    Activates stack overflow checking. For full details of the effect and use of
    this switch see :ref:`Stack_Overflow_Checking`.
  
  .. index:: Unsuppress
  
  The setting of these switches only controls the default setting of the
! checks. You may modify them using either ``Suppress`` (to remove
! checks) or ``Unsuppress`` (to add back suppressed checks) pragmas in
  the program source.
  
  
  .. _Using_gcc_for_Syntax_Checking:
  
! Using ``gcc`` for Syntax Checking
! ---------------------------------
  
  .. index:: -gnats  (gcc)
  
! :switch:`-gnats`
!   The ``s`` stands for 'syntax'.
  
    Run GNAT in syntax checking only mode. For
    example, the command
*************** Using *gcc* for Syntax Checking
*** 5124,5134 ****
    compiles file :file:`x.adb` in syntax-check-only mode. You can check a
    series of files in a single command
    , and can use wild cards to specify such a group of files.
!   Note that you must specify the *-c* (compile
!   only) flag in addition to the *-gnats* flag.
  
!   You may use other switches in conjunction with *-gnats*. In
!   particular, *-gnatl* and *-gnatv* are useful to control the
    format of any generated error messages.
  
    When the source file is empty or contains only empty lines and/or comments,
--- 5218,5228 ----
    compiles file :file:`x.adb` in syntax-check-only mode. You can check a
    series of files in a single command
    , and can use wild cards to specify such a group of files.
!   Note that you must specify the :switch:`-c` (compile
!   only) flag in addition to the :switch:`-gnats` flag.
  
!   You may use other switches in conjunction with :switch:`-gnats`. In
!   particular, :switch:`-gnatl` and :switch:`-gnatv` are useful to control the
    format of any generated error messages.
  
    When the source file is empty or contains only empty lines and/or comments,
*************** Using *gcc* for Syntax Checking
*** 5144,5173 ****
  
    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 `X`
!   |withs| a unit `Y`, compiling unit `X` in syntax
    check only mode does not access the source file containing unit
!   `Y`.
  
    .. index:: Multiple units, syntax checking
  
    Normally, GNAT allows only a single unit in a source file. However, this
    restriction does not apply in syntax-check-only mode, and it is possible
    to check a file containing multiple compilation units concatenated
!   together. This is primarily used by the `gnatchop` utility
    (:ref:`Renaming_Files_with_gnatchop`).
  
  .. _Using_gcc_for_Semantic_Checking:
  
! Using *gcc* for Semantic Checking
! ---------------------------------
  
  
  
  .. index:: -gnatc  (gcc)
  
! :samp:`-gnatc`
!   The `c` stands for 'check'.
    Causes the compiler to operate in semantic check mode,
    with full checking for all illegalities specified in the
    Ada Reference Manual, but without generation of any object code
--- 5238,5267 ----
  
    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 ``X``
!   |withs| a unit ``Y``, compiling unit ``X`` in syntax
    check only mode does not access the source file containing unit
!   ``Y``.
  
    .. index:: Multiple units, syntax checking
  
    Normally, GNAT allows only a single unit in a source file. However, this
    restriction does not apply in syntax-check-only mode, and it is possible
    to check a file containing multiple compilation units concatenated
!   together. This is primarily used by the ``gnatchop`` utility
    (:ref:`Renaming_Files_with_gnatchop`).
  
  .. _Using_gcc_for_Semantic_Checking:
  
! Using ``gcc`` for Semantic Checking
! -----------------------------------
  
  
  
  .. index:: -gnatc  (gcc)
  
! :switch:`-gnatc`
!   The ``c`` stands for 'check'.
    Causes the compiler to operate in semantic check mode,
    with full checking for all illegalities specified in the
    Ada Reference Manual, but without generation of any object code
*************** indicate Ada 83 compatibility mode.
*** 5211,5220 ****
  .. index:: ACVC, Ada 83 tests
  .. index:: Ada 83 mode
  
! :samp:`-gnat83` (Ada 83 Compatibility Mode)
    Although GNAT is primarily an Ada 95 / Ada 2005 compiler, this switch
    specifies that the program is to be compiled in Ada 83 mode. With
!   *-gnat83*, GNAT rejects most post-Ada 83 extensions and applies Ada 83
    semantics where this can be done easily.
    It is not possible to guarantee this switch does a perfect
    job; some subtle tests, such as are
--- 5305,5314 ----
  .. index:: ACVC, Ada 83 tests
  .. index:: Ada 83 mode
  
! :switch:`-gnat83` (Ada 83 Compatibility Mode)
    Although GNAT is primarily an Ada 95 / Ada 2005 compiler, this switch
    specifies that the program is to be compiled in Ada 83 mode. With
!   :switch:`-gnat83`, GNAT rejects most post-Ada 83 extensions and applies Ada 83
    semantics where this can be done easily.
    It is not possible to guarantee this switch does a perfect
    job; some subtle tests, such as are
*************** indicate Ada 83 compatibility mode.
*** 5224,5258 ****
    where, due to contractual reasons, existing code needs to be maintained
    using only Ada 83 features.
  
!   With few exceptions (most notably the need to use `<>` on
    unconstrained :index:`generic formal parameters <Generic formal parameters>`,
    the use of the new Ada 95 / Ada 2005
    reserved words, and the use of packages
    with optional bodies), it is not necessary to specify the
!   *-gnat83* switch when compiling Ada 83 programs, because, with rare
    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
    :title:`GNAT Reference Manual`.
  
  
  .. index:: -gnat95  (gcc)
  .. index:: Ada 95 mode
  
! :samp:`-gnat95` (Ada 95 mode)
    This switch directs the compiler to implement the Ada 95 version of the
    language.
    Since Ada 95 is almost completely upwards
    compatible with Ada 83, Ada 83 programs may generally be compiled using
!   this switch (see the description of the *-gnat83* switch for further
    information about Ada 83 mode).
    If an Ada 2005 program is compiled in Ada 95 mode,
    uses of the new Ada 2005 features will cause error
    messages or warnings.
  
    This switch also can be used to cancel the effect of a previous
!   *-gnat83*, *-gnat05/2005*, or *-gnat12/2012*
    switch earlier in the command line.
  
  
--- 5318,5352 ----
    where, due to contractual reasons, existing code needs to be maintained
    using only Ada 83 features.
  
!   With few exceptions (most notably the need to use ``<>`` on
    unconstrained :index:`generic formal parameters <Generic formal parameters>`,
    the use of the new Ada 95 / Ada 2005
    reserved words, and the use of packages
    with optional bodies), it is not necessary to specify the
!   :switch:`-gnat83` switch when compiling Ada 83 programs, because, with rare
    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
    :title:`GNAT Reference Manual`.
  
  
  .. index:: -gnat95  (gcc)
  .. index:: Ada 95 mode
  
! :switch:`-gnat95` (Ada 95 mode)
    This switch directs the compiler to implement the Ada 95 version of the
    language.
    Since Ada 95 is almost completely upwards
    compatible with Ada 83, Ada 83 programs may generally be compiled using
!   this switch (see the description of the :switch:`-gnat83` switch for further
    information about Ada 83 mode).
    If an Ada 2005 program is compiled in Ada 95 mode,
    uses of the new Ada 2005 features will cause error
    messages or warnings.
  
    This switch also can be used to cancel the effect of a previous
!   :switch:`-gnat83`, :switch:`-gnat05/2005`, or :switch:`-gnat12/2012`
    switch earlier in the command line.
  
  
*************** indicate Ada 83 compatibility mode.
*** 5260,5272 ****
  .. index:: -gnat2005  (gcc)
  .. index:: Ada 2005 mode
  
! :samp:`-gnat05` or :samp:`-gnat2005` (Ada 2005 mode)
    This switch directs the compiler to implement the Ada 2005 version of the
    language, as documented in the official Ada standards document.
    Since Ada 2005 is almost completely upwards
    compatible with Ada 95 (and thus also with Ada 83), Ada 83 and Ada 95 programs
    may generally be compiled using this switch (see the description of the
!   *-gnat83* and *-gnat95* switches for further
    information).
  
  
--- 5354,5366 ----
  .. index:: -gnat2005  (gcc)
  .. index:: Ada 2005 mode
  
! :switch:`-gnat05` or :switch:`-gnat2005` (Ada 2005 mode)
    This switch directs the compiler to implement the Ada 2005 version of the
    language, as documented in the official Ada standards document.
    Since Ada 2005 is almost completely upwards
    compatible with Ada 95 (and thus also with Ada 83), Ada 83 and Ada 95 programs
    may generally be compiled using this switch (see the description of the
!   :switch:`-gnat83` and :switch:`-gnat95` switches for further
    information).
  
  
*************** indicate Ada 83 compatibility mode.
*** 5274,5287 ****
  .. index:: -gnat2012  (gcc)
  .. index:: Ada 2012 mode
  
! :samp:`-gnat12` or :samp:`-gnat2012` (Ada 2012 mode)
    This switch directs the compiler to implement the Ada 2012 version of the
    language (also the default).
    Since Ada 2012 is almost completely upwards
    compatible with Ada 2005 (and thus also with Ada 83, and Ada 95),
    Ada 83 and Ada 95 programs
    may generally be compiled using this switch (see the description of the
!   *-gnat83*, *-gnat95*, and *-gnat05/2005* switches
    for further information).
  
  
--- 5368,5381 ----
  .. index:: -gnat2012  (gcc)
  .. index:: Ada 2012 mode
  
! :switch:`-gnat12` or :switch:`-gnat2012` (Ada 2012 mode)
    This switch directs the compiler to implement the Ada 2012 version of the
    language (also the default).
    Since Ada 2012 is almost completely upwards
    compatible with Ada 2005 (and thus also with Ada 83, and Ada 95),
    Ada 83 and Ada 95 programs
    may generally be compiled using this switch (see the description of the
!   :switch:`-gnat83`, :switch:`-gnat95`, and :switch:`-gnat05/2005` switches
    for further information).
  
  
*************** indicate Ada 83 compatibility mode.
*** 5289,5295 ****
  .. index:: Ada language extensions
  .. index:: GNAT extensions
  
! :samp:`-gnatX` (Enable GNAT Extensions)
    This switch directs the compiler to implement the latest version of the
    language (currently Ada 2012) and also to enable certain GNAT implementation
    extensions that are not part of any Ada standard. For a full list of these
--- 5383,5389 ----
  .. 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 2012) and also to enable certain GNAT implementation
    extensions that are not part of any Ada standard. For a full list of these
*************** Character Set Control
*** 5303,5313 ****
  
  .. index:: -gnati  (gcc)
  
! :samp:`-gnati{c}`
    Normally GNAT recognizes the Latin-1 character set in source program
    identifiers, as described in the Ada Reference Manual.
    This switch causes
!   GNAT to recognize alternate character sets in identifiers. `c` is a
    single character  indicating the character set, as follows:
  
    ========== ======================================================
--- 5397,5407 ----
  
  .. index:: -gnati  (gcc)
  
! :switch:`-gnati{c}`
    Normally GNAT recognizes the Latin-1 character set in source program
    identifiers, as described in the Ada Reference Manual.
    This switch causes
!   GNAT to recognize alternate character sets in identifiers. ``c`` is a
    single character  indicating the character set, as follows:
  
    ========== ======================================================
*************** Character Set Control
*** 5331,5339 ****
  
  .. index:: -gnatW  (gcc)
  
! :samp:`-gnatW{e}`
    Specify the method of encoding for wide characters.
!   `e` is one of the following:
  
    ========== ======================================================
    *h*        Hex encoding (brackets coding also recognized)
--- 5425,5433 ----
  
  .. index:: -gnatW  (gcc)
  
! :switch:`-gnatW{e}`
    Specify the method of encoding for wide characters.
!   ``e`` is one of the following:
  
    ========== ======================================================
    *h*        Hex encoding (brackets coding also recognized)
*************** Character Set Control
*** 5347,5353 ****
    For full details on these encoding
    methods see :ref:`Wide_Character_Encodings`.
    Note that brackets coding is always accepted, even if one of the other
!   options is specified, so for example *-gnatW8* specifies that both
    brackets and UTF-8 encodings will be recognized. The units that are
    with'ed directly or indirectly will be scanned using the specified
    representation scheme, and so if one of the non-brackets scheme is
--- 5441,5447 ----
    For full details on these encoding
    methods see :ref:`Wide_Character_Encodings`.
    Note that brackets coding is always accepted, even if one of the other
!   options is specified, so for example :switch:`-gnatW8` specifies that both
    brackets and UTF-8 encodings will be recognized. The units that are
    with'ed directly or indirectly will be scanned using the specified
    representation scheme, and so if one of the non-brackets scheme is
*************** Character Set Control
*** 5360,5366 ****
    brackets are considered to be normal graphic characters, and bracket sequences
    are never recognized as wide characters.
  
!   If no *-gnatW?* parameter is present, then the default
    representation is normally Brackets encoding only. However, if the
    first three characters of the file are 16#EF# 16#BB# 16#BF# (the standard
    byte order mark or BOM for UTF-8), then these three characters are
--- 5454,5460 ----
    brackets are considered to be normal graphic characters, and bracket sequences
    are never recognized as wide characters.
  
!   If no :switch:`-gnatW?` parameter is present, then the default
    representation is normally Brackets encoding only. However, if the
    first three characters of the file are 16#EF# 16#BB# 16#BF# (the standard
    byte order mark or BOM for UTF-8), then these three characters are
*************** Character Set Control
*** 5372,5378 ****
    parameter.
  
  
! When no *-gnatW?* is specified, then characters (other than wide
  characters represented using brackets notation) are treated as 8-bit
  Latin-1 codes. The codes recognized are the Latin-1 graphic characters,
  and ASCII format effectors (CR, LF, HT, VT). Other lower half control
--- 5466,5472 ----
    parameter.
  
  
! When no :switch:`-gnatW?` is specified, then characters (other than wide
  characters represented using brackets notation) are treated as 8-bit
  Latin-1 codes. The codes recognized are the Latin-1 graphic characters,
  and ASCII format effectors (CR, LF, HT, VT). Other lower half control
*************** File Naming Control
*** 5399,5406 ****
  
  .. index:: -gnatk  (gcc)
  
! :samp:`-gnatk{n}`
!   Activates file name 'krunching'. `n`, a decimal integer in the range
    1-999, indicates the maximum allowable length of a file name (not
    including the :file:`.ads` or :file:`.adb` extension). The default is not
    to enable file name krunching.
--- 5493,5500 ----
  
  .. index:: -gnatk  (gcc)
  
! :switch:`-gnatk{n}`
!   Activates file name 'krunching'. ``n``, a decimal integer in the range
    1-999, indicates the maximum allowable length of a file name (not
    including the :file:`.ads` or :file:`.adb` extension). The default is not
    to enable file name krunching.
*************** Subprogram Inlining Control
*** 5414,5437 ****
  
  .. index:: -gnatn  (gcc)
  
! :samp:`-gnatn[12]`
!   The `n` here is intended to suggest the first syllable of the word 'inline'.
!   GNAT recognizes and processes `Inline` pragmas. However, for inlining to
    actually occur, optimization must be enabled and, by default, inlining of
    subprograms across modules is not performed. If you want to additionally
!   enable inlining of subprograms specified by pragma `Inline` across modules,
    you must also specify this switch.
  
    In the absence of this switch, GNAT does not attempt inlining across modules
!   and does not access the bodies of subprograms for which `pragma Inline` is
    specified if they are not in the current unit.
  
    You can optionally specify the inlining level: 1 for moderate inlining across
    modules, which is a good compromise between compilation times and performances
    at run time, or 2 for full inlining across modules, which may bring about
    longer compilation times. If no inlining level is specified, the compiler will
!   pick it based on the optimization level: 1 for *-O1*, *-O2* or
!   *-Os* and 2 for *-O3*.
  
    If you specify this switch the compiler will access these bodies,
    creating an extra source dependency for the resulting object file, and
--- 5508,5531 ----
  
  .. index:: -gnatn  (gcc)
  
! :switch:`-gnatn[12]`
!   The ``n`` here is intended to suggest the first syllable of the word 'inline'.
!   GNAT recognizes and processes ``Inline`` pragmas. However, for inlining to
    actually occur, optimization must be enabled and, by default, inlining of
    subprograms across modules is not performed. If you want to additionally
!   enable inlining of subprograms specified by pragma ``Inline`` across modules,
    you must also specify this switch.
  
    In the absence of this switch, GNAT does not attempt inlining across modules
!   and does not access the bodies of subprograms for which ``pragma Inline`` is
    specified if they are not in the current unit.
  
    You can optionally specify the inlining level: 1 for moderate inlining across
    modules, which is a good compromise between compilation times and performances
    at run time, or 2 for full inlining across modules, which may bring about
    longer compilation times. If no inlining level is specified, the compiler will
!   pick it based on the optimization level: 1 for :switch:`-O1`, :switch:`-O2` or
!   :switch:`-Os` and 2 for :switch:`-O3`.
  
    If you specify this switch the compiler will access these bodies,
    creating an extra source dependency for the resulting object file, and
*************** Subprogram Inlining Control
*** 5442,5454 ****
  
  .. index:: -gnatN  (gcc)
  
! :samp:`-gnatN`
    This switch activates front-end inlining which also
    generates additional dependencies.
  
    When using a gcc-based back end (in practice this means using any version
    of GNAT other than the JGNAT, .NET or GNAAMP versions), then the use of
!   *-gnatN* is deprecated, and the use of *-gnatn* is preferred.
    Historically front end inlining was more extensive than the gcc back end
    inlining, but that is no longer the case.
  
--- 5536,5548 ----
  
  .. index:: -gnatN  (gcc)
  
! :switch:`-gnatN`
    This switch activates front-end inlining which also
    generates additional dependencies.
  
    When using a gcc-based back end (in practice this means using any version
    of GNAT other than the JGNAT, .NET or GNAAMP versions), then the use of
!   :switch:`-gnatN` is deprecated, and the use of :switch:`-gnatn` is preferred.
    Historically front end inlining was more extensive than the gcc back end
    inlining, but that is no longer the case.
  
*************** Auxiliary Output Control
*** 5461,5480 ****
  .. index:: Writing internal trees
  .. index:: Internal trees, writing to file
  
! :samp:`-gnatt`
    Causes GNAT to write the internal tree for a unit to a file (with the
    extension :file:`.adt`.
    This not normally required, but is used by separate analysis tools.
    Typically
    these tools do the necessary compilations automatically, so you should
    not have to specify this switch in normal operation.
!   Note that the combination of switches *-gnatct*
    generates a tree in the form required by ASIS applications.
  
  
  .. index:: -gnatu  (gcc)
  
! :samp:`-gnatu`
    Print a list of units required by this compilation on :file:`stdout`.
    The listing includes all units on which the unit being compiled depends
    either directly or indirectly.
--- 5555,5574 ----
  .. index:: Writing internal trees
  .. index:: Internal trees, writing to file
  
! :switch:`-gnatt`
    Causes GNAT to write the internal tree for a unit to a file (with the
    extension :file:`.adt`.
    This not normally required, but is used by separate analysis tools.
    Typically
    these tools do the necessary compilations automatically, so you should
    not have to specify this switch in normal operation.
!   Note that the combination of switches :switch:`-gnatct`
    generates a tree in the form required by ASIS applications.
  
  
  .. index:: -gnatu  (gcc)
  
! :switch:`-gnatu`
    Print a list of units required by this compilation on :file:`stdout`.
    The listing includes all units on which the unit being compiled depends
    either directly or indirectly.
*************** Auxiliary Output Control
*** 5482,5493 ****
  
  .. index:: -pass-exit-codes  (gcc)
  
! :samp:`-pass-exit-codes`
!   If this switch is not used, the exit code returned by *gcc* when
    compiling multiple files indicates whether all source files have
    been successfully used to generate object files or not.
  
!   When *-pass-exit-codes* is used, *gcc* exits with an extended
    exit status and allows an integrated development environment to better
    react to a compilation failure. Those exit status are:
  
--- 5576,5587 ----
  
  .. index:: -pass-exit-codes  (gcc)
  
! :switch:`-pass-exit-codes`
!   If this switch is not used, the exit code returned by ``gcc`` when
    compiling multiple files indicates whether all source files have
    been successfully used to generate object files or not.
  
!   When :switch:`-pass-exit-codes` is used, ``gcc`` exits with an extended
    exit status and allows an integrated development environment to better
    react to a compilation failure. Those exit status are:
  
*************** Debugging Control
*** 5508,5525 ****
  
  .. index:: -gnatd  (gcc)
  
! :samp:`-gnatd{x}`
!   Activate internal debugging switches. `x` is a letter or digit, or
    string of letters or digits, which specifies the type of debugging
    outputs desired. Normally these are used only for internal development
    or system debugging purposes. You can find full documentation for these
!   switches in the body of the `Debug` unit in the compiler source
    file :file:`debug.adb`.
  
  
  .. index:: -gnatG  (gcc)
  
! :samp:`-gnatG[={nn}]`
    This switch causes the compiler to generate auxiliary output containing
    a pseudo-source listing of the generated expanded code. Like most Ada
    compilers, GNAT works by first transforming the high level Ada code into
--- 5602,5619 ----
  
  .. index:: -gnatd  (gcc)
  
! :switch:`-gnatd{x}`
!   Activate internal debugging switches. ``x`` is a letter or digit, or
    string of letters or digits, which specifies the type of debugging
    outputs desired. Normally these are used only for internal development
    or system debugging purposes. You can find full documentation for these
!   switches in the body of the ``Debug`` unit in the compiler source
    file :file:`debug.adb`.
  
  
  .. index:: -gnatG  (gcc)
  
! :switch:`-gnatG[={nn}]`
    This switch causes the compiler to generate auxiliary output containing
    a pseudo-source listing of the generated expanded code. Like most Ada
    compilers, GNAT works by first transforming the high level Ada code into
*************** Debugging Control
*** 5529,5539 ****
    This is very useful in understanding the implications of various Ada
    usage on the efficiency of the generated code. There are many cases in
    Ada (e.g., the use of controlled types), where simple Ada statements can
!   generate a lot of run-time code. By using *-gnatG* you can identify
    these cases, and consider whether it may be desirable to modify the coding
    approach to improve efficiency.
  
!   The optional parameter `nn` if present after -gnatG specifies an
    alternative maximum line length that overrides the normal default of 72.
    This value is in the range 40-999999, values less than 40 being silently
    reset to 40. The equal sign is optional.
--- 5623,5633 ----
    This is very useful in understanding the implications of various Ada
    usage on the efficiency of the generated code. There are many cases in
    Ada (e.g., the use of controlled types), where simple Ada statements can
!   generate a lot of run-time code. By using :switch:`-gnatG` you can identify
    these cases, and consider whether it may be desirable to modify the coding
    approach to improve efficiency.
  
!   The optional parameter ``nn`` if present after -gnatG specifies an
    alternative maximum line length that overrides the normal default of 72.
    This value is in the range 40-999999, values less than 40 being silently
    reset to 40. The equal sign is optional.
*************** Debugging Control
*** 5543,5554 ****
    additions correspond to low level features used in the generated code that
    do not have any exact analogies in pure Ada source form. The following
    is a partial list of these special constructions. See the spec
!   of package `Sprint` in file :file:`sprint.ads` for a full list.
  
    .. index:: -gnatL  (gcc)
  
!   If the switch *-gnatL* is used in conjunction with
!   *-gnatG*, then the original source lines are interspersed
    in the expanded source (as comment lines with the original line number).
  
    :samp:`new {xxx} [storage_pool = {yyy}]`
--- 5637,5648 ----
    additions correspond to low level features used in the generated code that
    do not have any exact analogies in pure Ada source form. The following
    is a partial list of these special constructions. See the spec
!   of package ``Sprint`` in file :file:`sprint.ads` for a full list.
  
    .. index:: -gnatL  (gcc)
  
!   If the switch :switch:`-gnatL` is used in conjunction with
!   :switch:`-gnatG`, then the original source lines are interspersed
    in the expanded source (as comment lines with the original line number).
  
    :samp:`new {xxx} [storage_pool = {yyy}]`
*************** Debugging Control
*** 5560,5566 ****
  
  
    :samp:`(if {expr} then {expr} else {expr})`
!     Conditional expression equivalent to the `x?y:z` construction in C.
  
  
    :samp:`{target}^({source})`
--- 5654,5660 ----
  
  
    :samp:`(if {expr} then {expr} else {expr})`
!     Conditional expression equivalent to the ``x?y:z`` construction in C.
  
  
    :samp:`{target}^({source})`
*************** Debugging Control
*** 5588,5594 ****
  
  
    :samp:`free {expr} [storage_pool = {xxx}]`
!     Shows the storage pool associated with a `free` statement.
  
  
    :samp:`[subtype or type declaration]`
--- 5682,5688 ----
  
  
    :samp:`free {expr} [storage_pool = {xxx}]`
!     Shows the storage pool associated with a ``free`` statement.
  
  
    :samp:`[subtype or type declaration]`
*************** Debugging Control
*** 5597,5608 ****
  
  
    :samp:`freeze {type-name} [{actions}]`
!     Shows the point at which `type-name` is frozen, with possible
      associated actions to be performed at the freeze point.
  
  
    :samp:`reference {itype}`
!     Reference (and hence definition) to internal type `itype`.
  
  
    :samp:`{function-name}! ({arg}, {arg}, {arg})`
--- 5691,5702 ----
  
  
    :samp:`freeze {type-name} [{actions}]`
!     Shows the point at which ``type-name`` is frozen, with possible
      associated actions to be performed at the freeze point.
  
  
    :samp:`reference {itype}`
!     Reference (and hence definition) to internal type ``itype``.
  
  
    :samp:`{function-name}! ({arg}, {arg}, {arg})`
*************** Debugging Control
*** 5610,5616 ****
  
  
    :samp:`{label-name} : label`
!     Declaration of label `labelname`.
  
  
    :samp:`#$ {subprogram-name}`
--- 5704,5710 ----
  
  
    :samp:`{label-name} : label`
!     Declaration of label ``labelname``.
  
  
    :samp:`#$ {subprogram-name}`
*************** Debugging Control
*** 5620,5631 ****
  
  
    :samp:`{expr} && {expr} && {expr} ... && {expr}`
!     A multiple concatenation (same effect as `expr` & `expr` &
!     `expr`, but handled more efficiently).
  
  
    :samp:`[constraint_error]`
!     Raise the `Constraint_Error` exception.
  
  
    :samp:`{expression}'reference`
--- 5714,5725 ----
  
  
    :samp:`{expr} && {expr} && {expr} ... && {expr}`
!     A multiple concatenation (same effect as ``expr`` & ``expr`` &
!     ``expr``, but handled more efficiently).
  
  
    :samp:`[constraint_error]`
!     Raise the ``Constraint_Error`` exception.
  
  
    :samp:`{expression}'reference`
*************** Debugging Control
*** 5633,5639 ****
  
  
    :samp:`{target-type}!({source-expression})`
!     An unchecked conversion of `source-expression` to `target-type`.
  
  
    :samp:`[{numerator}/{denominator}]`
--- 5727,5733 ----
  
  
    :samp:`{target-type}!({source-expression})`
!     An unchecked conversion of ``source-expression`` to ``target-type``.
  
  
    :samp:`[{numerator}/{denominator}]`
*************** Debugging Control
*** 5644,5678 ****
  
  .. index:: -gnatD  (gcc)
  
! :samp:`-gnatD[=nn]`
!   When used in conjunction with *-gnatG*, this switch causes
    the expanded source, as described above for
!   *-gnatG* to be written to files with names
    :file:`xxx.dg`, where :file:`xxx` is the normal file name,
    instead of to the standard output file. For
    example, if the source file name is :file:`hello.adb`, then a file
    :file:`hello.adb.dg` will be written.  The debugging
!   information generated by the *gcc* *-g* switch
    will refer to the generated :file:`xxx.dg` file. This allows
    you to do source level debugging using the generated code which is
    sometimes useful for complex code, for example to find out exactly
    which part of a complex construction raised an exception. This switch
    also suppresses generation of cross-reference information (see
!   *-gnatx*) since otherwise the cross-reference information
    would refer to the :file:`.dg` file, which would cause
    confusion since this is not the original source file.
  
!   Note that *-gnatD* actually implies *-gnatG*
    automatically, so it is not necessary to give both options.
!   In other words *-gnatD* is equivalent to *-gnatDG*).
  
    .. index:: -gnatL  (gcc)
  
!   If the switch *-gnatL* is used in conjunction with
!   *-gnatDG*, then the original source lines are interspersed
    in the expanded source (as comment lines with the original line number).
  
!   The optional parameter `nn` if present after -gnatD specifies an
    alternative maximum line length that overrides the normal default of 72.
    This value is in the range 40-999999, values less than 40 being silently
    reset to 40. The equal sign is optional.
--- 5738,5772 ----
  
  .. index:: -gnatD  (gcc)
  
! :switch:`-gnatD[=nn]`
!   When used in conjunction with :switch:`-gnatG`, this switch causes
    the expanded source, as described above for
!   :switch:`-gnatG` to be written to files with names
    :file:`xxx.dg`, where :file:`xxx` is the normal file name,
    instead of to the standard output file. For
    example, if the source file name is :file:`hello.adb`, then a file
    :file:`hello.adb.dg` will be written.  The debugging
!   information generated by the ``gcc`` :switch:`-g` switch
    will refer to the generated :file:`xxx.dg` file. This allows
    you to do source level debugging using the generated code which is
    sometimes useful for complex code, for example to find out exactly
    which part of a complex construction raised an exception. This switch
    also suppresses generation of cross-reference information (see
!   :switch:`-gnatx`) since otherwise the cross-reference information
    would refer to the :file:`.dg` file, which would cause
    confusion since this is not the original source file.
  
!   Note that :switch:`-gnatD` actually implies :switch:`-gnatG`
    automatically, so it is not necessary to give both options.
!   In other words :switch:`-gnatD` is equivalent to :switch:`-gnatDG`).
  
    .. index:: -gnatL  (gcc)
  
!   If the switch :switch:`-gnatL` is used in conjunction with
!   :switch:`-gnatDG`, then the original source lines are interspersed
    in the expanded source (as comment lines with the original line number).
  
!   The optional parameter ``nn`` if present after -gnatD specifies an
    alternative maximum line length that overrides the normal default of 72.
    This value is in the range 40-999999, values less than 40 being silently
    reset to 40. The equal sign is optional.
*************** Debugging Control
*** 5681,5687 ****
  .. index:: -gnatr  (gcc)
  .. index:: pragma Restrictions
  
! :samp:`-gnatr`
    This switch causes pragma Restrictions to be treated as Restriction_Warnings
    so that violation of restrictions causes warnings rather than illegalities.
    This is useful during the development process when new restrictions are added
--- 5775,5781 ----
  .. index:: -gnatr  (gcc)
  .. index:: pragma Restrictions
  
! :switch:`-gnatr`
    This switch causes pragma Restrictions to be treated as Restriction_Warnings
    so that violation of restrictions causes warnings rather than illegalities.
    This is useful during the development process when new restrictions are added
*************** Debugging Control
*** 5692,5735 ****
  
  .. index:: -gnatR  (gcc)
  
! :samp:`-gnatR[0|1|2|3[s]]`
    This switch controls output from the compiler of a listing showing
!   representation information for declared types and objects. For
!   *-gnatR0*, no information is output (equivalent to omitting
!   the *-gnatR* switch). For *-gnatR1* (which is the default,
!   so *-gnatR* with no parameter has the same effect), size and alignment
!   information is listed for declared array and record types. For
!   *-gnatR2*, size and alignment information is listed for all
!   declared types and objects. The `Linker_Section` is also listed for any
!   entity for which the `Linker_Section` is set explicitly or implicitly (the
!   latter case occurs for objects of a type for which a `Linker_Section`
    is set).
  
!   Finally *-gnatR3* includes symbolic
!   expressions for values that are computed at run time for
!   variant records. These symbolic expressions have a mostly obvious
!   format with #n being used to represent the value of the n'th
!   discriminant. See source files :file:`repinfo.ads/adb` in the
!   `GNAT` sources for full details on the format of *-gnatR3*
!   output. If the switch is followed by an s (e.g., *-gnatR2s*), then
!   the output is to a file with the name :file:`file.rep` where
!   file is the name of the corresponding source file.
  
  
! :samp:`-gnatRm[s]`
!   This form of the switch controls output of subprogram conventions
!   and parameter passing mechanisms for all subprograms. A following
!   `s` means output to a file as described above.
  
    Note that it is possible for record components to have zero size. In
    this case, the component clause uses an obvious extension of permitted
!   Ada syntax, for example `at 0 range 0 .. -1`.
  
  
  .. index:: -gnatS  (gcc)
  
! :samp:`-gnatS`
!   The use of the switch *-gnatS* for an
    Ada compilation will cause the compiler to output a
    representation of package Standard in a form very
    close to standard Ada. It is not quite possible to
--- 5786,5831 ----
  
  .. index:: -gnatR  (gcc)
  
! :switch:`-gnatR[0|1|2|3][e][m][s]`
    This switch controls output from the compiler of a listing showing
!   representation information for declared types, objects and subprograms.
!   For :switch:`-gnatR0`, no information is output (equivalent to omitting
!   the :switch:`-gnatR` switch). For :switch:`-gnatR1` (which is the default,
!   so :switch:`-gnatR` with no parameter has the same effect), size and
!   alignment information is listed for declared array and record types.
!   For :switch:`-gnatR2`, size and alignment information is listed for all
!   declared types and objects. The ``Linker_Section`` is also listed for any
!   entity for which the ``Linker_Section`` is set explicitly or implicitly (the
!   latter case occurs for objects of a type for which a ``Linker_Section``
    is set).
  
!   For :switch:`-gnatR3`, symbolic expressions for values that are computed
!   at run time for records are included. These symbolic expressions have
!   a mostly obvious format with #n being used to represent the value of the
!   n'th discriminant. See source files :file:`repinfo.ads/adb` in the
!   GNAT sources for full details on the format of :switch:`-gnatR3` output.
  
+   If the switch is followed by an ``e`` (e.g. :switch:`-gnatR2e`), then
+   extended representation information for record sub-components of records
+   are included.
  
!   If the switch is followed by an ``m`` (e.g. :switch:`-gnatRm`), then
!   subprogram conventions and parameter passing mechanisms for all the
!   subprograms are included.
! 
!   If the switch is followed by an ``s`` (e.g., :switch:`-gnatR3s`), then
!   the output is to a file with the name :file:`file.rep` where file is
!   the name of the corresponding source file.
  
    Note that it is possible for record components to have zero size. In
    this case, the component clause uses an obvious extension of permitted
!   Ada syntax, for example ``at 0 range 0 .. -1``.
  
  
  .. index:: -gnatS  (gcc)
  
! :switch:`-gnatS`
!   The use of the switch :switch:`-gnatS` for an
    Ada compilation will cause the compiler to output a
    representation of package Standard in a form very
    close to standard Ada. It is not quite possible to
*************** Debugging Control
*** 5743,5752 ****
  
  .. index:: -gnatx  (gcc)
  
! :samp:`-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 *-gnatx* switch
    suppresses this information. This saves some space and may slightly
    speed up compilation, but means that these tools cannot be used.
  
--- 5839,5848 ----
  
  .. index:: -gnatx  (gcc)
  
! :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.
  
*************** Exception Handling Control
*** 5756,5762 ****
  --------------------------
  
  GNAT uses two methods for handling exceptions at run-time. The
! `setjmp/longjmp` method saves the context when entering
  a frame with an exception handler. Then when an exception is
  raised, the context can be restored immediately, without the
  need for tracing stack frames. This method provides very fast
--- 5852,5858 ----
  --------------------------
  
  GNAT uses two methods for handling exceptions at run-time. The
! ``setjmp/longjmp`` method saves the context when entering
  a frame with an exception handler. Then when an exception is
  raised, the context can be restored immediately, without the
  need for tracing stack frames. This method provides very fast
*************** the propagation of exceptions, but there
*** 5774,5780 ****
  exception handlers if no exception is raised. Note that in this
  mode and in the context of mixed Ada and C/C++ programming,
  to propagate an exception through a C/C++ code, the C/C++ code
! must be compiled with the *-funwind-tables* GCC's
  option.
  
  The following switches may be used to control which of the
--- 5870,5876 ----
  exception handlers if no exception is raised. Note that in this
  mode and in the context of mixed Ada and C/C++ programming,
  to propagate an exception through a C/C++ code, the C/C++ code
! must be compiled with the :switch:`-funwind-tables` GCC's
  option.
  
  The following switches may be used to control which of the
*************** two exception handling methods is used.
*** 5784,5790 ****
  
  .. index:: --RTS=sjlj  (gnatmake)
  
! :samp:`--RTS=sjlj`
    This switch causes the setjmp/longjmp run-time (when available) to be used
    for exception handling. If the default
    mechanism for the target is zero cost exceptions, then
--- 5880,5886 ----
  
  .. index:: --RTS=sjlj  (gnatmake)
  
! :switch:`--RTS=sjlj`
    This switch causes the setjmp/longjmp run-time (when available) to be used
    for exception handling. If the default
    mechanism for the target is zero cost exceptions, then
*************** two exception handling methods is used.
*** 5799,5805 ****
  .. index:: --RTS=zcx  (gnatmake)
  .. index:: Zero Cost Exceptions
  
! :samp:`--RTS=zcx`
    This switch causes the zero cost approach to be used
    for exception handling. If this is the default mechanism for the
    target (see below), then this switch is unneeded. If the default
--- 5895,5901 ----
  .. index:: --RTS=zcx  (gnatmake)
  .. index:: Zero Cost Exceptions
  
! :switch:`--RTS=zcx`
    This switch causes the zero cost approach to be used
    for exception handling. If this is the default mechanism for the
    target (see below), then this switch is unneeded. If the default
*************** two exception handling methods is used.
*** 5809,5816 ****
    This option can only be used if the zero cost approach
    is available for the target in use, otherwise it will generate an error.
  
! The same option *--RTS* must be used both for *gcc*
! and *gnatbind*. Passing this option to *gnatmake*
  (:ref:`Switches_for_gnatmake`) will ensure the required consistency
  through the compilation and binding steps.
  
--- 5905,5912 ----
    This option can only be used if the zero cost approach
    is available for the target in use, otherwise it will generate an error.
  
! The same option :switch:`--RTS` must be used both for ``gcc``
! and ``gnatbind``. Passing this option to ``gnatmake``
  (:ref:`Switches_for_gnatmake`) will ensure the required consistency
  through the compilation and binding steps.
  
*************** Units to Sources Mapping Files
*** 5823,5829 ****
  
  .. index:: -gnatem  (gcc)
  
! :samp:`-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
    file names to path names (with full directory information). These mappings
--- 5919,5925 ----
  
  .. index:: -gnatem  (gcc)
  
! :switch:`-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
    file names to path names (with full directory information). These mappings
*************** Units to Sources Mapping Files
*** 5833,5847 ****
    compiler, but mapping files can improve efficiency, particularly when
    sources are read over a slow network connection. In normal operation,
    you need not be concerned with the format or use of mapping files,
!   and the *-gnatem* switch is not a switch that you would use
    explicitly. It is intended primarily for use by automatic tools such as
!   *gnatmake* running under the project file facility. The
    description here of the format of mapping files is provided
    for completeness and for possible use by other tools.
  
    A mapping file is a sequence of sets of three lines. In each set, the
!   first line is the unit name, in lower case, with `%s` appended
!   for specs and `%b` appended for bodies; the second line is the
    file name; and the third line is the path name.
  
    Example::
--- 5929,5943 ----
    compiler, but mapping files can improve efficiency, particularly when
    sources are read over a slow network connection. In normal operation,
    you need not be concerned with the format or use of mapping files,
!   and the :switch:`-gnatem` switch is not a switch that you would use
    explicitly. It is intended primarily for use by automatic tools such as
!   ``gnatmake`` running under the project file facility. The
    description here of the format of mapping files is provided
    for completeness and for possible use by other tools.
  
    A mapping file is a sequence of sets of three lines. In each set, the
!   first line is the unit name, in lower case, with ``%s`` appended
!   for specs and ``%b`` appended for bodies; the second line is the
    file name; and the third line is the path name.
  
    Example::
*************** Units to Sources Mapping Files
*** 5851,5865 ****
         /gnat/project1/sources/main.2.ada
  
  
!   When the switch *-gnatem* is specified, the compiler will
    create in memory the two mappings from the specified file. If there is
    any problem (nonexistent file, truncated file or duplicate entries),
    no mapping will be created.
  
!   Several *-gnatem* switches may be specified; however, only the
    last one on the command line will be taken into account.
  
!   When using a project file, *gnatmake* creates a temporary
    mapping file and communicates it to the compiler using this switch.
  
  
--- 5947,5961 ----
         /gnat/project1/sources/main.2.ada
  
  
!   When the switch :switch:`-gnatem` is specified, the compiler will
    create in memory the two mappings from the specified file. If there is
    any problem (nonexistent file, truncated file or duplicate entries),
    no mapping will be created.
  
!   Several :switch:`-gnatem` switches may be specified; however, only the
    last one on the command line will be taken into account.
  
!   When using a project file, ``gnatmake`` creates a temporary
    mapping file and communicates it to the compiler using this switch.
  
  
*************** Code Generation Control
*** 5869,5895 ****
  -----------------------
  
  The GCC technology provides a wide range of target dependent
! :samp:`-m` switches for controlling
  details of code generation with respect to different versions of
  architectures. This includes variations in instruction sets (e.g.,
  different members of the power pc family), and different requirements
  for optimal arrangement of instructions (e.g., different members of
! the x86 family). The list of available *-m* switches may be
  found in the GCC documentation.
  
! Use of these *-m* switches may in some cases result in improved
  code performance.
  
  The GNAT technology is tested and qualified without any
! :samp:`-m` switches,
  so generally the most reliable approach is to avoid the use of these
  switches. However, we generally expect most of these switches to work
  successfully with GNAT, and many customers have reported successful
  use of these options.
  
! Our general advice is to avoid the use of *-m* switches unless
  special needs lead to requirements in this area. In particular,
! there is no point in using *-m* switches to improve performance
  unless you actually see a performance improvement.
  
  
--- 5965,5991 ----
  -----------------------
  
  The GCC technology provides a wide range of target dependent
! :switch:`-m` switches for controlling
  details of code generation with respect to different versions of
  architectures. This includes variations in instruction sets (e.g.,
  different members of the power pc family), and different requirements
  for optimal arrangement of instructions (e.g., different members of
! the x86 family). The list of available :switch:`-m` switches may be
  found in the GCC documentation.
  
! Use of these :switch:`-m` switches may in some cases result in improved
  code performance.
  
  The GNAT technology is tested and qualified without any
! :switch:`-m` switches,
  so generally the most reliable approach is to avoid the use of these
  switches. However, we generally expect most of these switches to work
  successfully with GNAT, and many customers have reported successful
  use of these options.
  
! Our general advice is to avoid the use of :switch:`-m` switches unless
  special needs lead to requirements in this area. In particular,
! there is no point in using :switch:`-m` switches to improve performance
  unless you actually see a performance improvement.
  
  
*************** unless you actually see a performance im
*** 5898,5908 ****
  Linker Switches
  ===============
  
! Linker switches can be specified after :samp:`-largs` builder switch.
  
  .. index:: -fuse-ld=name
  
! :samp:`-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
--- 5994,6004 ----
  Linker Switches
  ===============
  
! Linker switches can be specified after :switch:`-largs` builder switch.
  
  .. 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
*************** Linker switches can be specified after :
*** 5910,5927 ****
  
  .. _Binding_with_gnatbind:
  
! Binding with `gnatbind`
! =======================
  
  .. index:: ! gnatbind
  
! This chapter describes the GNAT binder, `gnatbind`, which is used
  to bind compiled GNAT objects.
  
! Note: to invoke `gnatbind` with a project file, use the `gnat`
! driver (see :ref:`The_GNAT_Driver_and_Project_Files`).
! 
! The `gnatbind` program performs four separate functions:
  
  * Checks that a program is consistent, in accordance with the rules in
    Chapter 10 of the Ada Reference Manual. In particular, error
--- 6006,6020 ----
  
  .. _Binding_with_gnatbind:
  
! Binding with ``gnatbind``
! =========================
  
  .. index:: ! gnatbind
  
! This chapter describes the GNAT binder, ``gnatbind``, which is used
  to bind compiled GNAT objects.
  
! The ``gnatbind`` program performs four separate functions:
  
  * Checks that a program is consistent, in accordance with the rules in
    Chapter 10 of the Ada Reference Manual. In particular, error
*************** The `gnatbind` program performs four sep
*** 5936,5964 ****
    This program is a small Ada package (body and spec) that
    must be subsequently compiled
    using the GNAT compiler. The necessary compilation step is usually
!   performed automatically by *gnatlink*. The two most important
    functions of this program
    are to call the elaboration routines of units in an appropriate order
    and to call the main program.
  
  * Determines the set of object files required by the given main program.
    This information is output in the forms of comments in the generated program,
!   to be read by the *gnatlink* utility used to link the Ada application.
  
  .. _Running_gnatbind:
  
! Running `gnatbind`
! ------------------
  
! The form of the `gnatbind` command is
  
  .. code-block:: sh
  
!   $ gnatbind [`switches`] `mainprog`[.ali] [`switches`]
  
  
  where :file:`mainprog.adb` is the Ada file containing the main program
! unit body. `gnatbind` constructs an Ada
  package in two files whose names are
  :file:`b~mainprog.ads`, and :file:`b~mainprog.adb`.
  For example, if given the
--- 6029,6057 ----
    This program is a small Ada package (body and spec) that
    must be subsequently compiled
    using the GNAT compiler. The necessary compilation step is usually
!   performed automatically by ``gnatlink``. The two most important
    functions of this program
    are to call the elaboration routines of units in an appropriate order
    and to call the main program.
  
  * Determines the set of object files required by the given main program.
    This information is output in the forms of comments in the generated program,
!   to be read by the ``gnatlink`` utility used to link the Ada application.
  
  .. _Running_gnatbind:
  
! Running ``gnatbind``
! --------------------
  
! The form of the ``gnatbind`` command is
  
  .. code-block:: sh
  
!   $ gnatbind [ switches ] mainprog[.ali] [ switches ]
  
  
  where :file:`mainprog.adb` is the Ada file containing the main program
! unit body. ``gnatbind`` constructs an Ada
  package in two files whose names are
  :file:`b~mainprog.ads`, and :file:`b~mainprog.adb`.
  For example, if given the
*************** and :file:`b~hello.adb`.
*** 5968,5979 ****
  
  When doing consistency checking, the binder takes into consideration
  any source files it can locate. For example, if the binder determines
! that the given main program requires the package `Pack`, whose
  :file:`.ALI`
  file is :file:`pack.ali` and whose corresponding source spec file is
  :file:`pack.ads`, it attempts to locate the source file :file:`pack.ads`
  (using the same search path conventions as previously described for the
! *gcc* command). If it can locate this source file, it checks that
  the time stamps
  or source checksums of the source and its references to in :file:`ALI` files
  match. In other words, any :file:`ALI` files that mentions this spec must have
--- 6061,6072 ----
  
  When doing consistency checking, the binder takes into consideration
  any source files it can locate. For example, if the binder determines
! that the given main program requires the package ``Pack``, whose
  :file:`.ALI`
  file is :file:`pack.ali` and whose corresponding source spec file is
  :file:`pack.ads`, it attempts to locate the source file :file:`pack.ads`
  (using the same search path conventions as previously described for the
! ``gcc`` command). If it can locate this source file, it checks that
  the time stamps
  or source checksums of the source and its references to in :file:`ALI` files
  match. In other words, any :file:`ALI` files that mentions this spec must have
*************** source file without compiling files that
*** 5990,6005 ****
  error messages to be generated by the binder.
  
  For example, suppose you have a main program :file:`hello.adb` and a
! package `P`, from file :file:`p.ads` and you perform the following
  steps:
  
! * Enter `gcc -c hello.adb` to compile the main program.
  
! * Enter `gcc -c p.ads` to compile package `P`.
  
  * Edit file :file:`p.ads`.
  
! * Enter `gnatbind hello`.
  
  At this point, the file :file:`p.ali` contains an out-of-date time stamp
  because the file :file:`p.ads` has been edited. The attempt at binding
--- 6083,6098 ----
  error messages to be generated by the binder.
  
  For example, suppose you have a main program :file:`hello.adb` and a
! package ``P``, from file :file:`p.ads` and you perform the following
  steps:
  
! * Enter ``gcc -c hello.adb`` to compile the main program.
  
! * Enter ``gcc -c p.ads`` to compile package ``P``.
  
  * Edit file :file:`p.ads`.
  
! * Enter ``gnatbind hello``.
  
  At this point, the file :file:`p.ali` contains an out-of-date time stamp
  because the file :file:`p.ads` has been edited. The attempt at binding
*************** succeed, generating a main program. You
*** 6017,6054 ****
  with the contents of this file, but for reference purposes a sample
  binder output file is given in :ref:`Example_of_Binder_Output_File`.
  
! In most normal usage, the default mode of *gnatbind* which is to
  generate the main package in Ada, as described in the previous section.
  In particular, this means that any Ada programmer can read and understand
  the generated main program. It can also be debugged just like any other
! Ada code provided the *-g* switch is used for
! *gnatbind* and *gnatlink*.
  
  .. _Switches_for_gnatbind:
  
! Switches for *gnatbind*
! -----------------------
  
! The following switches are available with `gnatbind`; details will
  be presented in subsequent sections.
  
  
  .. index:: --version  (gnatbind)
  
! :samp:`--version`
    Display Copyright and version, then exit disregarding all other options.
  
  
  .. index:: --help  (gnatbind)
  
! :samp:`--help`
!   If *--version* was not used, display usage, then exit disregarding
    all other options.
  
  
  .. index:: -a  (gnatbind)
  
! :samp:`-a`
    Indicates that, if supported by the platform, the adainit procedure should
    be treated as an initialisation routine by the linker (a constructor). This
    is intended to be used by the Project Manager to automatically initialize
--- 6110,6147 ----
  with the contents of this file, but for reference purposes a sample
  binder output file is given in :ref:`Example_of_Binder_Output_File`.
  
! In most normal usage, the default mode of ``gnatbind`` which is to
  generate the main package in Ada, as described in the previous section.
  In particular, this means that any Ada programmer can read and understand
  the generated main program. It can also be debugged just like any other
! Ada code provided the :switch:`-g` switch is used for
! ``gnatbind`` and ``gnatlink``.
  
  .. _Switches_for_gnatbind:
  
! Switches for ``gnatbind``
! -------------------------
  
! The following switches are available with ``gnatbind``; details will
  be presented in subsequent sections.
  
  
  .. index:: --version  (gnatbind)
  
! :switch:`--version`
    Display Copyright and version, then exit disregarding all other options.
  
  
  .. index:: --help  (gnatbind)
  
! :switch:`--help`
!   If :switch:`--version` was not used, display usage, then exit disregarding
    all other options.
  
  
  .. index:: -a  (gnatbind)
  
! :switch:`-a`
    Indicates that, if supported by the platform, the adainit procedure should
    be treated as an initialisation routine by the linker (a constructor). This
    is intended to be used by the Project Manager to automatically initialize
*************** be presented in subsequent sections.
*** 6057,6097 ****
  
  .. index:: -aO  (gnatbind)
  
! :samp:`-aO`
    Specify directory to be searched for ALI files.
  
  
  .. index:: -aI  (gnatbind)
  
! :samp:`-aI`
    Specify directory to be searched for source file.
  
  
  .. index:: -A  (gnatbind)
  
! :samp:`-A[={filename}]`
    Output ALI list (to standard output or to the named file).
  
  
  .. index:: -b  (gnatbind)
  
! :samp:`-b`
    Generate brief messages to :file:`stderr` even if verbose mode set.
  
  
  .. index:: -c  (gnatbind)
  
! :samp:`-c`
    Check only, no generation of binder output file.
  
  
  .. index:: -dnn[k|m] (gnatbind)
  
! :samp:`-d{nn}[k|m]`
    This switch can be used to change the default task stack size value
!   to a specified size `nn`, which is expressed in bytes by default, or
!   in kilobytes when suffixed with `k` or in megabytes when suffixed
!   with `m`.
    In the absence of a :samp:`[k|m]` suffix, this switch is equivalent,
    in effect, to completing all task specs with
  
--- 6150,6190 ----
  
  .. index:: -aO  (gnatbind)
  
! :switch:`-aO`
    Specify directory to be searched for ALI files.
  
  
  .. index:: -aI  (gnatbind)
  
! :switch:`-aI`
    Specify directory to be searched for source file.
  
  
  .. index:: -A  (gnatbind)
  
! :switch:`-A[={filename}]`
    Output ALI list (to standard output or to the named file).
  
  
  .. index:: -b  (gnatbind)
  
! :switch:`-b`
    Generate brief messages to :file:`stderr` even if verbose mode set.
  
  
  .. index:: -c  (gnatbind)
  
! :switch:`-c`
    Check only, no generation of binder output file.
  
  
  .. index:: -dnn[k|m] (gnatbind)
  
! :switch:`-d{nn}[k|m]`
    This switch can be used to change the default task stack size value
!   to a specified size ``nn``, which is expressed in bytes by default, or
!   in kilobytes when suffixed with ``k`` or in megabytes when suffixed
!   with ``m``.
    In the absence of a :samp:`[k|m]` suffix, this switch is equivalent,
    in effect, to completing all task specs with
  
*************** be presented in subsequent sections.
*** 6104,6174 ****
  
  .. index:: -D  (gnatbind)
  
! :samp:`-D{nn}[k|m]`
    This switch can be used to change the default secondary stack size value
!   to a specified size `nn`, which is expressed in bytes by default, or
!   in kilobytes when suffixed with `k` or in megabytes when suffixed
!   with `m`.
  
    The secondary stack is used to deal with functions that return a variable
    sized result, for example a function returning an unconstrained
    String. There are two ways in which this secondary stack is allocated.
  
!   For most targets, the secondary stack is growing on demand and is allocated
    as a chain of blocks in the heap. The -D option is not very
    relevant. It only give some control over the size of the allocated
    blocks (whose size is the minimum of the default secondary stack size value,
    and the actual size needed for the current allocation request).
  
    For certain targets, notably VxWorks 653 and bare board targets,
!   the secondary stack is allocated by carving off a chunk of the primary task 
    stack. By default this is a fixed percentage of the primary task stack as
!   defined by System.Parameter.Sec_Stack_Percentage. This can be overridden per 
    task using the Secondary_Stack_Size pragma/aspect. The -D option is used to
    define the size of the environment task's secondary stack.
  
  
  .. index:: -e  (gnatbind)
  
! :samp:`-e`
    Output complete list of elaboration-order dependencies.
  
  
  .. index:: -Ea  (gnatbind)
  
! :samp:`-Ea`
    Store tracebacks in exception occurrences when the target supports it.
    The "a" is for "address"; tracebacks will contain hexadecimal addresses,
    unless symbolic tracebacks are enabled.
  
!   See also the packages `GNAT.Traceback` and
!   `GNAT.Traceback.Symbolic` for more information.
!   Note that on x86 ports, you must not use *-fomit-frame-pointer*
!   *gcc* option.
  
  
  .. index:: -Es  (gnatbind)
  
! :samp:`-Es`
    Store tracebacks in exception occurrences when the target supports it.
    The "s" is for "symbolic"; symbolic tracebacks are enabled.
  
  
  .. index:: -E  (gnatbind)
  
! :samp:`-E`
!   Currently the same as `-Ea`.
  
  
  .. index:: -f  (gnatbind)
  
! :samp:`-f{elab-order}`
    Force elaboration order.
  
  .. index:: -F  (gnatbind)
  
! :samp:`-F`
!   Force the checks of elaboration flags. *gnatbind* does not normally
    generate checks of elaboration flags for the main executable, except when
    a Stand-Alone Library is used. However, there are cases when this cannot be
    detected by gnatbind. An example is importing an interface of a Stand-Alone
--- 6197,6267 ----
  
  .. index:: -D  (gnatbind)
  
! :switch:`-D{nn}[k|m]`
    This switch can be used to change the default secondary stack size value
!   to a specified size ``nn``, which is expressed in bytes by default, or
!   in kilobytes when suffixed with ``k`` or in megabytes when suffixed
!   with ``m``.
  
    The secondary stack is used to deal with functions that return a variable
    sized result, for example a function returning an unconstrained
    String. There are two ways in which this secondary stack is allocated.
  
!   For most targets, the secondary stack grows on demand and is allocated
    as a chain of blocks in the heap. The -D option is not very
    relevant. It only give some control over the size of the allocated
    blocks (whose size is the minimum of the default secondary stack size value,
    and the actual size needed for the current allocation request).
  
    For certain targets, notably VxWorks 653 and bare board targets,
!   the secondary stack is allocated by carving off a chunk of the primary task
    stack. By default this is a fixed percentage of the primary task stack as
!   defined by System.Parameter.Sec_Stack_Percentage. This can be overridden per
    task using the Secondary_Stack_Size pragma/aspect. The -D option is used to
    define the size of the environment task's secondary stack.
  
  
  .. index:: -e  (gnatbind)
  
! :switch:`-e`
    Output complete list of elaboration-order dependencies.
  
  
  .. index:: -Ea  (gnatbind)
  
! :switch:`-Ea`
    Store tracebacks in exception occurrences when the target supports it.
    The "a" is for "address"; tracebacks will contain hexadecimal addresses,
    unless symbolic tracebacks are enabled.
  
!   See also the packages ``GNAT.Traceback`` and
!   ``GNAT.Traceback.Symbolic`` for more information.
!   Note that on x86 ports, you must not use :switch:`-fomit-frame-pointer`
!   ``gcc`` option.
  
  
  .. index:: -Es  (gnatbind)
  
! :switch:`-Es`
    Store tracebacks in exception occurrences when the target supports it.
    The "s" is for "symbolic"; symbolic tracebacks are enabled.
  
  
  .. index:: -E  (gnatbind)
  
! :switch:`-E`
!   Currently the same as ``-Ea``.
  
  
  .. index:: -f  (gnatbind)
  
! :switch:`-f{elab-order}`
    Force elaboration order.
  
  .. index:: -F  (gnatbind)
  
! :switch:`-F`
!   Force the checks of elaboration flags. ``gnatbind`` does not normally
    generate checks of elaboration flags for the main executable, except when
    a Stand-Alone Library is used. However, there are cases when this cannot be
    detected by gnatbind. An example is importing an interface of a Stand-Alone
*************** be presented in subsequent sections.
*** 6179,6245 ****
  
  .. index:: -h  (gnatbind)
  
! :samp:`-h`
    Output usage (help) information.
  
  
    .. index:: -H32  (gnatbind)
  
! :samp:`-H32`
!   Use 32-bit allocations for `__gnat_malloc` (and thus for access types).
    For further details see :ref:`Dynamic_Allocation_Control`.
  
  
    .. index:: -H64  (gnatbind)
    .. index:: __gnat_malloc
  
! :samp:`-H64`
!   Use 64-bit allocations for `__gnat_malloc` (and thus for access types).
    For further details see :ref:`Dynamic_Allocation_Control`.
  
  
    .. index:: -I  (gnatbind)
  
! :samp:`-I`
    Specify directory to be searched for source and ALI files.
  
  
    .. index:: -I-  (gnatbind)
  
! :samp:`-I-`
!   Do not look for sources in the current directory where `gnatbind` was
    invoked, and do not look for ALI files in the directory containing the
!   ALI file named in the `gnatbind` command line.
  
  
    .. index:: -l  (gnatbind)
  
! :samp:`-l`
    Output chosen elaboration order.
  
  
    .. index:: -L  (gnatbind)
  
! :samp:`-L{xxx}`
!   Bind the units for library building. In this case the adainit and
!   adafinal procedures (:ref:`Binding_with_Non-Ada_Main_Programs`)
!   are renamed to `xxx`init and
!   `xxx`final.
    Implies -n.
    (:ref:`GNAT_and_Libraries`, for more details.)
  
  
    .. index:: -M  (gnatbind)
  
! :samp:`-M{xyz}`
    Rename generated main program from main to xyz. This option is
    supported on cross environments only.
  
  
    .. index:: -m  (gnatbind)
  
! :samp:`-m{n}`
!   Limit number of detected errors or warnings to `n`, where `n` is
    in the range 1..999999. The default value if no switch is
    given is 9999. If the number of warnings reaches this limit, then a
    message is output and further warnings are suppressed, the bind
--- 6272,6338 ----
  
  .. index:: -h  (gnatbind)
  
! :switch:`-h`
    Output usage (help) information.
  
  
    .. index:: -H32  (gnatbind)
  
! :switch:`-H32`
!   Use 32-bit allocations for ``__gnat_malloc`` (and thus for access types).
    For further details see :ref:`Dynamic_Allocation_Control`.
  
  
    .. index:: -H64  (gnatbind)
    .. index:: __gnat_malloc
  
! :switch:`-H64`
!   Use 64-bit allocations for ``__gnat_malloc`` (and thus for access types).
    For further details see :ref:`Dynamic_Allocation_Control`.
  
  
    .. index:: -I  (gnatbind)
  
! :switch:`-I`
    Specify directory to be searched for source and ALI files.
  
  
    .. index:: -I-  (gnatbind)
  
! :switch:`-I-`
!   Do not look for sources in the current directory where ``gnatbind`` was
    invoked, and do not look for ALI files in the directory containing the
!   ALI file named in the ``gnatbind`` command line.
  
  
    .. index:: -l  (gnatbind)
  
! :switch:`-l`
    Output chosen elaboration order.
  
  
    .. index:: -L  (gnatbind)
  
! :switch:`-L{xxx}`
!   Bind the units for library building. In this case the ``adainit`` and
!   ``adafinal`` procedures (:ref:`Binding_with_Non-Ada_Main_Programs`)
!   are renamed to :samp:`{xxx}init` and
!   :samp:`{xxx}final`.
    Implies -n.
    (:ref:`GNAT_and_Libraries`, for more details.)
  
  
    .. index:: -M  (gnatbind)
  
! :switch:`-M{xyz}`
    Rename generated main program from main to xyz. This option is
    supported on cross environments only.
  
  
    .. index:: -m  (gnatbind)
  
! :switch:`-m{n}`
!   Limit number of detected errors or warnings to ``n``, where ``n`` is
    in the range 1..999999. The default value if no switch is
    given is 9999. If the number of warnings reaches this limit, then a
    message is output and further warnings are suppressed, the bind
*************** be presented in subsequent sections.
*** 6251,6329 ****
  
    .. index:: -n  (gnatbind)
  
! :samp:`-n`
    No main program.
  
  
    .. index:: -nostdinc  (gnatbind)
  
! :samp:`-nostdinc`
    Do not look for sources in the system default directory.
  
  
    .. index:: -nostdlib  (gnatbind)
  
! :samp:`-nostdlib`
    Do not look for library files in the system default directory.
  
  
    .. index:: --RTS  (gnatbind)
  
! :samp:`--RTS={rts-path}`
    Specifies the default location of the runtime library. Same meaning as the
!   equivalent *gnatmake* flag (:ref:`Switches_for_gnatmake`).
  
    .. index:: -o   (gnatbind)
  
! :samp:`-o {file}`
!   Name the output file `file` (default is :file:`b~`xxx`.adb`).
    Note that if this option is used, then linking must be done manually,
    gnatlink cannot be used.
  
  
    .. index:: -O  (gnatbind)
  
! :samp:`-O[={filename}]`
    Output object list (to standard output or to the named file).
  
  
    .. index:: -p  (gnatbind)
  
! :samp:`-p`
    Pessimistic (worst-case) elaboration order.
  
  
    .. index:: -P  (gnatbind)
  
! :samp:`-P`
    Generate binder file suitable for CodePeer.
  
  
    .. index:: -R  (gnatbind)
  
! :samp:`-R`
    Output closure source list, which includes all non-run-time units that are
    included in the bind.
  
  
    .. index:: -Ra  (gnatbind)
  
! :samp:`-Ra`
!   Like *-R* but the list includes run-time units.
  
  
    .. index:: -s  (gnatbind)
  
! :samp:`-s`
    Require all source files to be present.
  
  
    .. index:: -S  (gnatbind)
  
! :samp:`-S{xxx}`
    Specifies the value to be used when detecting uninitialized scalar
    objects with pragma Initialize_Scalars.
!   The `xxx` string specified with the switch is one of:
  
    * ``in`` for an invalid value.
  
--- 6344,6422 ----
  
    .. index:: -n  (gnatbind)
  
! :switch:`-n`
    No main program.
  
  
    .. index:: -nostdinc  (gnatbind)
  
! :switch:`-nostdinc`
    Do not look for sources in the system default directory.
  
  
    .. index:: -nostdlib  (gnatbind)
  
! :switch:`-nostdlib`
    Do not look for library files in the system default directory.
  
  
    .. index:: --RTS  (gnatbind)
  
! :switch:`--RTS={rts-path}`
    Specifies the default location of the runtime library. Same meaning as the
!   equivalent ``gnatmake`` flag (:ref:`Switches_for_gnatmake`).
  
    .. index:: -o   (gnatbind)
  
! :switch:`-o {file}`
!   Name the output file ``file`` (default is :file:`b~`xxx`.adb`).
    Note that if this option is used, then linking must be done manually,
    gnatlink cannot be used.
  
  
    .. index:: -O  (gnatbind)
  
! :switch:`-O[={filename}]`
    Output object list (to standard output or to the named file).
  
  
    .. index:: -p  (gnatbind)
  
! :switch:`-p`
    Pessimistic (worst-case) elaboration order.
  
  
    .. index:: -P  (gnatbind)
  
! :switch:`-P`
    Generate binder file suitable for CodePeer.
  
  
    .. index:: -R  (gnatbind)
  
! :switch:`-R`
    Output closure source list, which includes all non-run-time units that are
    included in the bind.
  
  
    .. index:: -Ra  (gnatbind)
  
! :switch:`-Ra`
!   Like :switch:`-R` but the list includes run-time units.
  
  
    .. index:: -s  (gnatbind)
  
! :switch:`-s`
    Require all source files to be present.
  
  
    .. index:: -S  (gnatbind)
  
! :switch:`-S{xxx}`
    Specifies the value to be used when detecting uninitialized scalar
    objects with pragma Initialize_Scalars.
!   The ``xxx`` string specified with the switch is one of:
  
    * ``in`` for an invalid value.
  
*************** be presented in subsequent sections.
*** 6355,6361 ****
      one bits. For floating-point, a large value is set
      (see body of package System.Scalar_Values for exact values).
  
!   * `xx` for hex value (two hex digits).
  
      The underlying scalar is set to a value consisting of repeated bytes, whose
      value corresponds to the given value. For example if ``BF`` is given,
--- 6448,6454 ----
      one bits. For floating-point, a large value is set
      (see body of package System.Scalar_Values for exact values).
  
!   * ``xx`` for hex value (two hex digits).
  
      The underlying scalar is set to a value consisting of repeated bytes, whose
      value corresponds to the given value. For example if ``BF`` is given,
*************** be presented in subsequent sections.
*** 6363,6397 ****
  
    .. index:: GNAT_INIT_SCALARS
  
!   In addition, you can specify *-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 :samp:`GNAT_INIT_SCALARS={yy}`, where `yy` is one
!   of *in/lo/hi/`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 *in* (invalid values).
  
  .. index:: -static  (gnatbind)
  
! :samp:`-static`
    Link against a static GNAT run time.
  
  
    .. index:: -shared  (gnatbind)
  
! :samp:`-shared`
    Link against a shared GNAT run time when available.
  
  
    .. index:: -t  (gnatbind)
  
! :samp:`-t`
    Tolerate time stamp and other consistency errors.
  
  
    .. index:: -T  (gnatbind)
  
! :samp:`-T{n}`
!   Set the time slice value to `n` milliseconds. If the system supports
    the specification of a specific time slice value, then the indicated value
    is used. If the system does not support specific time slice values, but
    does support some general notion of round-robin scheduling, then any
--- 6456,6490 ----
  
    .. index:: GNAT_INIT_SCALARS
  
!   In addition, you can specify :switch:`-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 :samp:`GNAT_INIT_SCALARS={yy}`, where ``yy`` is one
!   of :samp:`in/lo/hi/{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 ``in`` (invalid values).
  
  .. index:: -static  (gnatbind)
  
! :switch:`-static`
    Link against a static GNAT run time.
  
  
    .. index:: -shared  (gnatbind)
  
! :switch:`-shared`
    Link against a shared GNAT run time when available.
  
  
    .. index:: -t  (gnatbind)
  
! :switch:`-t`
    Tolerate time stamp and other consistency errors.
  
  
    .. index:: -T  (gnatbind)
  
! :switch:`-T{n}`
!   Set the time slice value to ``n`` milliseconds. If the system supports
    the specification of a specific time slice value, then the indicated value
    is used. If the system does not support specific time slice values, but
    does support some general notion of round-robin scheduling, then any
*************** be presented in subsequent sections.
*** 6401,6413 ****
    slicing, and in addition, indicates to the tasking run time that the
    semantics should match as closely as possible the Annex D
    requirements of the Ada RM, and in particular sets the default
!   scheduling policy to `FIFO_Within_Priorities`.
  
  
    .. index:: -u  (gnatbind)
  
! :samp:`-u{n}`
!   Enable dynamic stack usage, with `n` results stored and displayed
    at program termination. A result is generated when a task
    terminates. Results that can't be stored are displayed on the fly, at
    task termination. This option is currently not supported on Itanium
--- 6494,6506 ----
    slicing, and in addition, indicates to the tasking run time that the
    semantics should match as closely as possible the Annex D
    requirements of the Ada RM, and in particular sets the default
!   scheduling policy to ``FIFO_Within_Priorities``.
  
  
    .. index:: -u  (gnatbind)
  
! :switch:`-u{n}`
!   Enable dynamic stack usage, with ``n`` results stored and displayed
    at program termination. A result is generated when a task
    terminates. Results that can't be stored are displayed on the fly, at
    task termination. This option is currently not supported on Itanium
*************** be presented in subsequent sections.
*** 6416,6470 ****
  
    .. index:: -v  (gnatbind)
  
! :samp:`-v`
    Verbose mode. Write error messages, header, summary output to
    :file:`stdout`.
  
  
    .. index:: -V  (gnatbind)
  
! :samp:`-V{key}={value}`
!   Store the given association of `key` to `value` in the bind environment.
    Values stored this way can be retrieved at run time using
!   `GNAT.Bind_Environment`.
  
  
    .. index:: -w  (gnatbind)
  
! :samp:`-w{x}`
!   Warning mode; `x` = s/e for suppress/treat as error.
  
  
    .. index:: -Wx  (gnatbind)
  
! :samp:`-Wx{e}`
    Override default wide character encoding for standard Text_IO files.
  
  
    .. index:: -x  (gnatbind)
  
! :samp:`-x`
    Exclude source files (check object consistency only).
  
  
    .. index:: -Xnnn  (gnatbind)
  
! :samp:`-X{nnn}`
    Set default exit status value, normally 0 for POSIX compliance.
  
  
    .. index:: -y  (gnatbind)
  
! :samp:`-y`
!   Enable leap seconds support in `Ada.Calendar` and its children.
  
  
    .. index:: -z  (gnatbind)
  
! :samp:`-z`
    No main subprogram.
  
! You may obtain this listing of switches by running `gnatbind` with
  no arguments.
  
  
--- 6509,6563 ----
  
    .. index:: -v  (gnatbind)
  
! :switch:`-v`
    Verbose mode. Write error messages, header, summary output to
    :file:`stdout`.
  
  
    .. index:: -V  (gnatbind)
  
! :switch:`-V{key}={value}`
!   Store the given association of ``key`` to ``value`` in the bind environment.
    Values stored this way can be retrieved at run time using
!   ``GNAT.Bind_Environment``.
  
  
    .. index:: -w  (gnatbind)
  
! :switch:`-w{x}`
!   Warning mode; ``x`` = s/e for suppress/treat as error.
  
  
    .. index:: -Wx  (gnatbind)
  
! :switch:`-Wx{e}`
    Override default wide character encoding for standard Text_IO files.
  
  
    .. index:: -x  (gnatbind)
  
! :switch:`-x`
    Exclude source files (check object consistency only).
  
  
    .. index:: -Xnnn  (gnatbind)
  
! :switch:`-X{nnn}`
    Set default exit status value, normally 0 for POSIX compliance.
  
  
    .. index:: -y  (gnatbind)
  
! :switch:`-y`
!   Enable leap seconds support in ``Ada.Calendar`` and its children.
  
  
    .. index:: -z  (gnatbind)
  
! :switch:`-z`
    No main subprogram.
  
! You may obtain this listing of switches by running ``gnatbind`` with
  no arguments.
  
  
*************** no arguments.
*** 6473,6479 ****
  Consistency-Checking Modes
  ^^^^^^^^^^^^^^^^^^^^^^^^^^
  
! As described earlier, by default `gnatbind` checks
  that object files are consistent with one another and are consistent
  with any source files it can locate. The following switches control binder
  access to sources.
--- 6566,6572 ----
  Consistency-Checking Modes
  ^^^^^^^^^^^^^^^^^^^^^^^^^^
  
! As described earlier, by default ``gnatbind`` checks
  that object files are consistent with one another and are consistent
  with any source files it can locate. The following switches control binder
  access to sources.
*************** access to sources.
*** 6481,6487 ****
  
    .. index:: -s  (gnatbind)
  
! :samp:`-s`
    Require source files to be present. In this mode, the binder must be
    able to locate all source files that are referenced, in order to check
    their consistency. In normal mode, if a source file cannot be located it
--- 6574,6580 ----
  
    .. index:: -s  (gnatbind)
  
! :switch:`-s`
    Require source files to be present. In this mode, the binder must be
    able to locate all source files that are referenced, in order to check
    their consistency. In normal mode, if a source file cannot be located it
*************** access to sources.
*** 6491,6509 ****
  
    .. index:: -Wx  (gnatbind)
  
! :samp:`-Wx{e}`
    Override default wide character encoding for standard Text_IO files.
    Normally the default wide character encoding method used for standard
    [Wide\_[Wide\_]]Text_IO files is taken from the encoding specified for
    the main source input (see description of switch
!   *-gnatWx* for the compiler). The
    use of this switch for the binder (which has the same set of
    possible arguments) overrides this default as specified.
  
  
    .. index:: -x  (gnatbind)
  
! :samp:`-x`
    Exclude source files. In this mode, the binder only checks that ALI
    files are consistent with one another. Source files are not accessed.
    The binder runs faster in this mode, and there is still a guarantee that
--- 6584,6602 ----
  
    .. index:: -Wx  (gnatbind)
  
! :switch:`-Wx{e}`
    Override default wide character encoding for standard Text_IO files.
    Normally the default wide character encoding method used for standard
    [Wide\_[Wide\_]]Text_IO files is taken from the encoding specified for
    the main source input (see description of switch
!   :switch:`-gnatWx` for the compiler). The
    use of this switch for the binder (which has the same set of
    possible arguments) overrides this default as specified.
  
  
    .. index:: -x  (gnatbind)
  
! :switch:`-x`
    Exclude source files. In this mode, the binder only checks that ALI
    files are consistent with one another. Source files are not accessed.
    The binder runs faster in this mode, and there is still a guarantee that
*************** access to sources.
*** 6511,6519 ****
    If a source file has been edited since it was last compiled, and you
    specify this switch, the binder will not detect that the object
    file is out of date with respect to the source file. Note that this is the
!   mode that is automatically used by *gnatmake* because in this
    case the checking against sources has already been performed by
!   *gnatmake* in the course of compilation (i.e., before binding).
  
  
  .. _Binder_Error_Message_Control:
--- 6604,6612 ----
    If a source file has been edited since it was last compiled, and you
    specify this switch, the binder will not detect that the object
    file is out of date with respect to the source file. Note that this is the
!   mode that is automatically used by ``gnatmake`` because in this
    case the checking against sources has already been performed by
!   ``gnatmake`` in the course of compilation (i.e., before binding).
  
  
  .. _Binder_Error_Message_Control:
*************** messages from the binder:
*** 6528,6534 ****
  
    .. index:: -v  (gnatbind)
  
! :samp:`-v`
    Verbose mode. In the normal mode, brief error messages are generated to
    :file:`stderr`. If this switch is present, a header is written
    to :file:`stdout` and any error messages are directed to :file:`stdout`.
--- 6621,6627 ----
  
    .. index:: -v  (gnatbind)
  
! :switch:`-v`
    Verbose mode. In the normal mode, brief error messages are generated to
    :file:`stderr`. If this switch is present, a header is written
    to :file:`stdout` and any error messages are directed to :file:`stdout`.
*************** messages from the binder:
*** 6537,6574 ****
  
    .. index:: -b  (gnatbind)
  
! :samp:`-b`
    Generate brief error messages to :file:`stderr` even if verbose mode is
    specified. This is relevant only when used with the
!   *-v* switch.
  
  
    .. index:: -m  (gnatbind)
  
! :samp:`-m{n}`
!   Limits the number of error messages to `n`, a decimal integer in the
    range 1-999. The binder terminates immediately if this limit is reached.
  
  
    .. index:: -M  (gnatbind)
  
! :samp:`-M{xxx}`
!   Renames the generated main program from `main` to `xxx`.
    This is useful in the case of some cross-building environments, where
    the actual main program is separate from the one generated
!   by `gnatbind`.
  
  
    .. index:: -ws  (gnatbind)
    .. index:: Warnings
  
! :samp:`-ws`
    Suppress all warning messages.
  
  
    .. index:: -we  (gnatbind)
  
! :samp:`-we`
    Treat any warning messages as fatal errors.
  
  
--- 6630,6667 ----
  
    .. index:: -b  (gnatbind)
  
! :switch:`-b`
    Generate brief error messages to :file:`stderr` even if verbose mode is
    specified. This is relevant only when used with the
!   :switch:`-v` switch.
  
  
    .. index:: -m  (gnatbind)
  
! :switch:`-m{n}`
!   Limits the number of error messages to ``n``, a decimal integer in the
    range 1-999. The binder terminates immediately if this limit is reached.
  
  
    .. index:: -M  (gnatbind)
  
! :switch:`-M{xxx}`
!   Renames the generated main program from ``main`` to ``xxx``.
    This is useful in the case of some cross-building environments, where
    the actual main program is separate from the one generated
!   by ``gnatbind``.
  
  
    .. index:: -ws  (gnatbind)
    .. index:: Warnings
  
! :switch:`-ws`
    Suppress all warning messages.
  
  
    .. index:: -we  (gnatbind)
  
! :switch:`-we`
    Treat any warning messages as fatal errors.
  
  
*************** messages from the binder:
*** 6577,6583 ****
    .. index:: Binder consistency checks
    .. index:: Consistency checks, in binder
  
! :samp:`-t`
    The binder performs a number of consistency checks including:
  
  
--- 6670,6676 ----
    .. index:: Binder consistency checks
    .. index:: Consistency checks, in binder
  
! :switch:`-t`
    The binder performs a number of consistency checks including:
  
  
*************** messages from the binder:
*** 6585,6591 ****
  
    * Check that checksums of a given source unit are consistent
  
!   * Check that consistent versions of `GNAT` were used for compilation
  
    * Check consistency of configuration pragmas as required
  
--- 6678,6684 ----
  
    * Check that checksums of a given source unit are consistent
  
!   * Check that consistent versions of ``GNAT`` were used for compilation
  
    * Check consistency of configuration pragmas as required
  
*************** messages from the binder:
*** 6594,6600 ****
    generated which abort the binder and prevent the output of a binder
    file and subsequent link to obtain an executable.
  
!   The *-t* switch converts these error messages
    into warnings, so that
    binding and linking can continue to completion even in the presence of such
    errors. The result may be a failed link (due to missing symbols), or a
--- 6687,6693 ----
    generated which abort the binder and prevent the output of a binder
    file and subsequent link to obtain an executable.
  
!   The :switch:`-t` switch converts these error messages
    into warnings, so that
    binding and linking can continue to completion even in the presence of such
    errors. The result may be a failed link (due to missing symbols), or a
*************** messages from the binder:
*** 6602,6608 ****
  
    .. note::
  
!      This means that *-t* should be used only in unusual situations,
       with extreme care.
  
  .. _Elaboration_Control:
--- 6695,6701 ----
  
    .. note::
  
!      This means that :switch:`-t` should be used only in unusual situations,
       with extreme care.
  
  .. _Elaboration_Control:
*************** order. For full details see :ref:`Elabor
*** 6616,6625 ****
  
  .. index:: -f  (gnatbind)
  
! :samp:`-f{elab-order}`
    Force elaboration order.
  
!   `elab-order` should be the name of a "forced elaboration order file", that
    is, a text file containing library item names, one per line. A name of the
    form "some.unit%s" or "some.unit (spec)" denotes the spec of Some.Unit. A
    name of the form "some.unit%b" or "some.unit (body)" denotes the body of
--- 6709,6718 ----
  
  .. index:: -f  (gnatbind)
  
! :switch:`-f{elab-order}`
    Force elaboration order.
  
!   ``elab-order`` should be the name of a "forced elaboration order file", that
    is, a text file containing library item names, one per line. A name of the
    form "some.unit%s" or "some.unit (spec)" denotes the spec of Some.Unit. A
    name of the form "some.unit%b" or "some.unit (body)" denotes the body of
*************** order. For full details see :ref:`Elabor
*** 6640,6646 ****
    dependences are already required by Ada rules, so this file is really just
    forcing the body of This to be elaborated before the spec of That.
  
!   The given order must be consistent with Ada rules, or else `gnatbind` will
    give elaboration cycle errors. For example, if you say x (body) should be
    elaborated before x (spec), there will be a cycle, because Ada rules require
    x (spec) to be elaborated before x (body); you can't have the spec and body
--- 6733,6739 ----
    dependences are already required by Ada rules, so this file is really just
    forcing the body of This to be elaborated before the spec of That.
  
!   The given order must be consistent with Ada rules, or else ``gnatbind`` will
    give elaboration cycle errors. For example, if you say x (body) should be
    elaborated before x (spec), there will be a cycle, because Ada rules require
    x (spec) to be elaborated before x (body); you can't have the spec and body
*************** order. For full details see :ref:`Elabor
*** 6657,6681 ****
  
    .. index:: -p  (gnatbind)
  
! :samp:`-p`
    Normally the binder attempts to choose an elaboration order that is
    likely to minimize the likelihood of an elaboration order error resulting
!   in raising a `Program_Error` exception. This switch reverses the
    action of the binder, and requests that it deliberately choose an order
    that is likely to maximize the likelihood of an elaboration error.
    This is useful in ensuring portability and avoiding dependence on
    accidental fortuitous elaboration ordering.
  
!   Normally it only makes sense to use the *-p*
    switch if dynamic
!   elaboration checking is used (*-gnatE* switch used for compilation).
    This is because in the default static elaboration mode, all necessary
!   `Elaborate` and `Elaborate_All` pragmas are implicitly inserted.
    These implicit pragmas are still respected by the binder in
!   *-p* mode, so a
    safe elaboration order is assured.
  
!   Note that *-p* is not intended for
    production use; it is more for debugging/experimental use.
  
  .. _Output_Control:
--- 6750,6774 ----
  
    .. index:: -p  (gnatbind)
  
! :switch:`-p`
    Normally the binder attempts to choose an elaboration order that is
    likely to minimize the likelihood of an elaboration order error resulting
!   in raising a ``Program_Error`` exception. This switch reverses the
    action of the binder, and requests that it deliberately choose an order
    that is likely to maximize the likelihood of an elaboration error.
    This is useful in ensuring portability and avoiding dependence on
    accidental fortuitous elaboration ordering.
  
!   Normally it only makes sense to use the :switch:`-p`
    switch if dynamic
!   elaboration checking is used (:switch:`-gnatE` switch used for compilation).
    This is because in the default static elaboration mode, all necessary
!   ``Elaborate`` and ``Elaborate_All`` pragmas are implicitly inserted.
    These implicit pragmas are still respected by the binder in
!   :switch:`-p` mode, so a
    safe elaboration order is assured.
  
!   Note that :switch:`-p` is not intended for
    production use; it is more for debugging/experimental use.
  
  .. _Output_Control:
*************** generated by the binder.
*** 6689,6702 ****
  
    .. index:: -c  (gnatbind)
  
! :samp:`-c`
    Check only. Do not generate the binder output file. In this mode the
    binder performs all error checks but does not generate an output file.
  
  
    .. index:: -e  (gnatbind)
  
! :samp:`-e`
    Output complete list of elaboration-order dependencies, showing the
    reason for each dependency. This output can be rather extensive but may
    be useful in diagnosing problems with elaboration order. The output is
--- 6782,6795 ----
  
    .. index:: -c  (gnatbind)
  
! :switch:`-c`
    Check only. Do not generate the binder output file. In this mode the
    binder performs all error checks but does not generate an output file.
  
  
    .. index:: -e  (gnatbind)
  
! :switch:`-e`
    Output complete list of elaboration-order dependencies, showing the
    reason for each dependency. This output can be rather extensive but may
    be useful in diagnosing problems with elaboration order. The output is
*************** generated by the binder.
*** 6705,6731 ****
  
    .. index:: -h  (gnatbind)
  
! :samp:`-h`
    Output usage information. The output is written to :file:`stdout`.
  
  
    .. index:: -K  (gnatbind)
  
! :samp:`-K`
    Output linker options to :file:`stdout`. Includes library search paths,
    contents of pragmas Ident and Linker_Options, and libraries added
!   by `gnatbind`.
  
  
    .. index:: -l  (gnatbind)
  
! :samp:`-l`
    Output chosen elaboration order. The output is written to :file:`stdout`.
  
  
    .. index:: -O  (gnatbind)
  
! :samp:`-O`
    Output full names of all the object files that must be linked to provide
    the Ada component of the program. The output is written to :file:`stdout`.
    This list includes the files explicitly supplied and referenced by the user
--- 6798,6824 ----
  
    .. index:: -h  (gnatbind)
  
! :switch:`-h`
    Output usage information. The output is written to :file:`stdout`.
  
  
    .. index:: -K  (gnatbind)
  
! :switch:`-K`
    Output linker options to :file:`stdout`. Includes library search paths,
    contents of pragmas Ident and Linker_Options, and libraries added
!   by ``gnatbind``.
  
  
    .. index:: -l  (gnatbind)
  
! :switch:`-l`
    Output chosen elaboration order. The output is written to :file:`stdout`.
  
  
    .. index:: -O  (gnatbind)
  
! :switch:`-O`
    Output full names of all the object files that must be linked to provide
    the Ada component of the program. The output is written to :file:`stdout`.
    This list includes the files explicitly supplied and referenced by the user
*************** generated by the binder.
*** 6736,6744 ****
  
    .. index:: -o  (gnatbind)
  
! :samp:`-o {file}`
!   Set name of output file to `file` instead of the normal
!   :file:`b~`mainprog`.adb` default. Note that `file` denote the Ada
    binder generated body filename.
    Note that if this option is used, then linking must be done manually.
    It is not possible to use gnatlink in this case, since it cannot locate
--- 6829,6837 ----
  
    .. index:: -o  (gnatbind)
  
! :switch:`-o {file}`
!   Set name of output file to ``file`` instead of the normal
!   :file:`b~`mainprog`.adb` default. Note that ``file`` denote the Ada
    binder generated body filename.
    Note that if this option is used, then linking must be done manually.
    It is not possible to use gnatlink in this case, since it cannot locate
*************** generated by the binder.
*** 6747,6754 ****
  
    .. index:: -r  (gnatbind)
  
! :samp:`-r`
!   Generate list of `pragma Restrictions` that could be applied to
    the current unit. This is useful for code audit purposes, and also may
    be used to improve code generation in some cases.
  
--- 6840,6847 ----
  
    .. index:: -r  (gnatbind)
  
! :switch:`-r`
!   Generate list of ``pragma Restrictions`` that could be applied to
    the current unit. This is useful for code audit purposes, and also may
    be used to improve code generation in some cases.
  
*************** generated by the binder.
*** 6758,6776 ****
  Dynamic Allocation Control
  ^^^^^^^^^^^^^^^^^^^^^^^^^^
  
! The heap control switches -- *-H32* and *-H64* --
  determine whether dynamic allocation uses 32-bit or 64-bit memory.
! They only affect compiler-generated allocations via `__gnat_malloc`;
! explicit calls to `malloc` and related functions from the C
  run-time library are unaffected.
  
! :samp:`-H32`
    Allocate memory on 32-bit heap
  
  
! :samp:`-H64`
    Allocate memory on 64-bit heap.  This is the default
!   unless explicitly overridden by a `'Size` clause on the access type.
  
  These switches are only effective on VMS platforms.
  
--- 6851,6869 ----
  Dynamic Allocation Control
  ^^^^^^^^^^^^^^^^^^^^^^^^^^
  
! The heap control switches -- :switch:`-H32` and :switch:`-H64` --
  determine whether dynamic allocation uses 32-bit or 64-bit memory.
! They only affect compiler-generated allocations via ``__gnat_malloc``;
! explicit calls to ``malloc`` and related functions from the C
  run-time library are unaffected.
  
! :switch:`-H32`
    Allocate memory on 32-bit heap
  
  
! :switch:`-H64`
    Allocate memory on 64-bit heap.  This is the default
!   unless explicitly overridden by a ``'Size`` clause on the access type.
  
  These switches are only effective on VMS platforms.
  
*************** Binding with Non-Ada Main Programs
*** 6782,6788 ****
  
  The description so far has assumed that the main
  program is in Ada, and that the task of the binder is to generate a
! corresponding function `main` that invokes this Ada main
  program. GNAT also supports the building of executable programs where
  the main program is not in Ada, but some of the called routines are
  written in Ada and compiled using GNAT (:ref:`Mixed_Language_Programming`).
--- 6875,6881 ----
  
  The description so far has assumed that the main
  program is in Ada, and that the task of the binder is to generate a
! corresponding function ``main`` that invokes this Ada main
  program. GNAT also supports the building of executable programs where
  the main program is not in Ada, but some of the called routines are
  written in Ada and compiled using GNAT (:ref:`Mixed_Language_Programming`).
*************** The following switch is used in this sit
*** 6791,6797 ****
  
    .. index:: -n  (gnatbind)
  
! :samp:`-n`
    No main program. The main program is not in Ada.
  
  In this case, most of the functions of the binder are still required,
--- 6884,6890 ----
  
    .. index:: -n  (gnatbind)
  
! :switch:`-n`
    No main program. The main program is not in Ada.
  
  In this case, most of the functions of the binder are still required,
*************** containing the following callable routin
*** 6800,6808 ****
  
    .. index:: adainit
  
!   *adainit*
      You must call this routine to initialize the Ada part of the program by
!     calling the necessary elaboration routines. A call to `adainit` is
      required before the first call to an Ada subprogram.
  
      Note that it is assumed that the basic execution environment must be setup
--- 6893,6901 ----
  
    .. index:: adainit
  
!   ``adainit``
      You must call this routine to initialize the Ada part of the program by
!     calling the necessary elaboration routines. A call to ``adainit`` is
      required before the first call to an Ada subprogram.
  
      Note that it is assumed that the basic execution environment must be setup
*************** containing the following callable routin
*** 6815,6832 ****
  
    .. index:: adafinal
  
!   *adafinal*
      You must call this routine to perform any library-level finalization
!     required by the Ada subprograms. A call to `adafinal` is required
      after the last call to an Ada subprogram, and before the program
      terminates.
  
  .. index:: -n  (gnatbind)
  .. index:: Binder, multiple input files
  
! If the *-n* switch
  is given, more than one ALI file may appear on
! the command line for `gnatbind`. The normal *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
--- 6908,6925 ----
  
    .. index:: adafinal
  
!   ``adafinal``
      You must call this routine to perform any library-level finalization
!     required by the Ada subprograms. A call to ``adafinal`` is required
      after the last call to an Ada subprogram, and before the program
      terminates.
  
  .. index:: -n  (gnatbind)
  .. index:: Binder, multiple input files
  
! If the :switch:`-n` switch
  is given, more than one ALI file may appear on
! the command line for ``gnatbind``. The normal ``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
*** 6834,6845 ****
  more quite separate groups of Ada units.
  
  The binder takes the name of its output file from the last specified ALI
! file, unless overridden by the use of the *-o file*.
  
  .. index:: -o  (gnatbind)
  
  The output is an Ada unit in source form that can be compiled with GNAT.
! This compilation occurs automatically as part of the *gnatlink*
  processing.
  
  Currently the GNAT run time requires a FPU using 80 bits mode
--- 6927,6938 ----
  more quite separate groups of Ada units.
  
  The binder takes the name of its output file from the last specified ALI
! file, unless overridden by the use of the :switch:`-o file`.
  
  .. index:: -o  (gnatbind)
  
  The output is an Ada unit in source form that can be compiled with GNAT.
! This compilation occurs automatically as part of the ``gnatlink``
  processing.
  
  Currently the GNAT run time requires a FPU using 80 bits mode
*************** The following switch is used to bind pro
*** 6863,6869 ****
  
    .. index:: -z  (gnatbind)
  
! :samp:`-z`
    Normally the binder checks that the unit name given on the command line
    corresponds to a suitable main subprogram. When this switch is used,
    a list of ALI files can be given, and the execution of the program
--- 6956,6962 ----
  
    .. index:: -z  (gnatbind)
  
! :switch:`-z`
    Normally the binder checks that the unit name given on the command line
    corresponds to a suitable main subprogram. When this switch is used,
    a list of ALI files can be given, and the execution of the program
*************** The following switch is used to bind pro
*** 6871,6877 ****
    that the default wide character encoding method for standard Text_IO
    files is always set to Brackets if this switch is set (you can use
    the binder switch
!   *-Wx* to override this default).
  
  
  .. _Command-Line_Access:
--- 6964,6970 ----
    that the default wide character encoding method for standard Text_IO
    files is always set to Brackets if this switch is set (you can use
    the binder switch
!   :switch:`-Wx` to override this default).
  
  
  .. _Command-Line_Access:
*************** The following switch is used to bind pro
*** 6879,6885 ****
  Command-Line Access
  -------------------
  
! The package `Ada.Command_Line` provides access to the command-line
  arguments and program name. In order for this interface to operate
  correctly, the two variables
  
--- 6972,6978 ----
  Command-Line Access
  -------------------
  
! The package ``Ada.Command_Line`` provides access to the command-line
  arguments and program name. In order for this interface to operate
  correctly, the two variables
  
*************** correctly, the two variables
*** 6892,6926 ****
  .. index:: gnat_argc
  
  are declared in one of the GNAT library routines. These variables must
! be set from the actual `argc` and `argv` values passed to the
! main program. With no *n* present, `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
! `Ada.Command_Line` will not be available, and any attempt to use
! them will raise `Constraint_Error`. If command line access is
! required, your main program must set `gnat_argc` and
! `gnat_argv` from the `argc` and `argv` values passed to
  it.
  
  
  .. _Search_Paths_for_gnatbind:
  
! Search Paths for `gnatbind`
! ---------------------------
  
  The binder takes the name of an ALI file as its argument and needs to
  locate source files as well as other ALI files to verify object consistency.
  
! For source files, it follows exactly the same search rules as *gcc*
  (see :ref:`Search_Paths_and_the_Run-Time_Library_RTL`). For ALI files the
  directories searched are:
  
  * The directory containing the ALI file named in the command line, unless
!   the switch *-I-* is specified.
  
! * All directories specified by *-I*
!   switches on the `gnatbind`
    command line, in the order given.
  
    .. index:: ADA_PRJ_OBJECTS_FILE
--- 6985,7019 ----
  .. index:: gnat_argc
  
  are declared in one of the GNAT library routines. These variables must
! be set from the actual ``argc`` and ``argv`` values passed to the
! main program. With no *n* present, ``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
! ``Ada.Command_Line`` will not be available, and any attempt to use
! them will raise ``Constraint_Error``. If command line access is
! required, your main program must set ``gnat_argc`` and
! ``gnat_argv`` from the ``argc`` and ``argv`` values passed to
  it.
  
  
  .. _Search_Paths_for_gnatbind:
  
! Search Paths for ``gnatbind``
! -----------------------------
  
  The binder takes the name of an ALI file as its argument and needs to
  locate source files as well as other ALI files to verify object consistency.
  
! For source files, it follows exactly the same search rules as ``gcc``
  (see :ref:`Search_Paths_and_the_Run-Time_Library_RTL`). For ALI files the
  directories searched are:
  
  * The directory containing the ALI file named in the command line, unless
!   the switch :switch:`-I-` is specified.
  
! * All directories specified by :switch:`-I`
!   switches on the ``gnatbind``
    command line, in the order given.
  
    .. index:: ADA_PRJ_OBJECTS_FILE
*************** directories searched are:
*** 6943,6965 ****
  
  * The content of the :file:`ada_object_path` file which is part of the GNAT
    installation tree and is used to store standard libraries such as the
!   GNAT Run Time Library (RTL) unless the switch *-nostdlib* is
    specified. See :ref:`Installing_a_library`
  
  .. index:: -I  (gnatbind)
  .. index:: -aI  (gnatbind)
  .. index:: -aO  (gnatbind)
  
! In the binder the switch *-I*
  is used to specify both source and
! library file paths. Use *-aI*
  instead if you want to specify
! source paths only, and *-aO*
  if you want to specify library paths
  only. This means that for the binder
! :samp:`-I{dir}` is equivalent to
! :samp:`-aI{dir}`
! :samp:`-aO`{dir}`.
  The binder generates the bind file (a C language source file) in the
  current working directory.
  
--- 7036,7058 ----
  
  * The content of the :file:`ada_object_path` file which is part of the GNAT
    installation tree and is used to store standard libraries such as the
!   GNAT Run Time Library (RTL) unless the switch :switch:`-nostdlib` is
    specified. See :ref:`Installing_a_library`
  
  .. index:: -I  (gnatbind)
  .. index:: -aI  (gnatbind)
  .. index:: -aO  (gnatbind)
  
! In the binder the switch :switch:`-I`
  is used to specify both source and
! library file paths. Use :switch:`-aI`
  instead if you want to specify
! source paths only, and :switch:`-aO`
  if you want to specify library paths
  only. This means that for the binder
! :switch:`-I{dir}` is equivalent to
! :switch:`-aI{dir}`
! :switch:`-aO`{dir}`.
  The binder generates the bind file (a C language source file) in the
  current working directory.
  
*************** current working directory.
*** 6968,6974 ****
  .. index:: Interfaces
  .. index:: GNAT
  
! The packages `Ada`, `System`, and `Interfaces` and their
  children make up the GNAT Run-Time Library, together with the package
  GNAT and its children, which contain a set of useful additional
  library functions provided by GNAT. The sources for these units are
--- 7061,7067 ----
  .. index:: Interfaces
  .. index:: GNAT
  
! The packages ``Ada``, ``System``, and ``Interfaces`` and their
  children make up the GNAT Run-Time Library, together with the package
  GNAT and its children, which contain a set of useful additional
  library functions provided by GNAT. The sources for these units are
*************** development environments much more flexi
*** 6987,7002 ****
  
  .. _Examples_of_gnatbind_Usage:
  
! Examples of `gnatbind` Usage
! ----------------------------
  
! Here are some examples of `gnatbind` invovations:
  
    ::
  
       gnatbind hello
  
!   The main program `Hello` (source program in :file:`hello.adb`) is
    bound using the standard switch settings. The generated main program is
    :file:`b~hello.adb`. This is the normal, default use of the binder.
  
--- 7080,7095 ----
  
  .. _Examples_of_gnatbind_Usage:
  
! Examples of ``gnatbind`` Usage
! ------------------------------
  
! Here are some examples of ``gnatbind`` invovations:
  
    ::
  
       gnatbind hello
  
!   The main program ``Hello`` (source program in :file:`hello.adb`) is
    bound using the standard switch settings. The generated main program is
    :file:`b~hello.adb`. This is the normal, default use of the binder.
  
*************** Here are some examples of `gnatbind` inv
*** 7004,7010 ****
  
       gnatbind hello -o mainprog.adb
  
!   The main program `Hello` (source program in :file:`hello.adb`) is
    bound using the standard switch settings. The generated main program is
    :file:`mainprog.adb` with the associated spec in
    :file:`mainprog.ads`. Note that you must specify the body here not the
--- 7097,7103 ----
  
       gnatbind hello -o mainprog.adb
  
!   The main program ``Hello`` (source program in :file:`hello.adb`) is
    bound using the standard switch settings. The generated main program is
    :file:`mainprog.adb` with the associated spec in
    :file:`mainprog.ads`. Note that you must specify the body here not the
*************** Here are some examples of `gnatbind` inv
*** 7014,7051 ****
  
  .. _Linking_with_gnatlink:
  
! Linking with *gnatlink*
! =======================
  
  .. index:: ! gnatlink
  
! This chapter discusses *gnatlink*, a tool that links
  an Ada program and builds an executable file. This utility
! invokes the system linker (via the *gcc* command)
  with a correct list of object files and library references.
! *gnatlink* automatically determines the list of files and
  references for the Ada part of a program. It uses the binder file
! generated by the *gnatbind* to determine this list.
! 
! Note: to invoke `gnatlink` with a project file, use the `gnat`
! driver (see :ref:`The_GNAT_Driver_and_Project_Files`).
  
  .. _Running_gnatlink:
  
! Running *gnatlink*
! ------------------
  
! The form of the *gnatlink* command is
  
  
  .. code-block:: sh
  
!     $ gnatlink [`switches`] `mainprog`[.ali]
!                [`non-Ada objects`] [`linker options`]
  
  
  
! The arguments of *gnatlink* (switches, main :file:`ALI` file,
  non-Ada objects
  or linker options) may be in any order, provided that no non-Ada object may
  be mistaken for a main :file:`ALI` file.
--- 7107,7141 ----
  
  .. _Linking_with_gnatlink:
  
! Linking with ``gnatlink``
! =========================
  
  .. index:: ! gnatlink
  
! This chapter discusses ``gnatlink``, a tool that links
  an Ada program and builds an executable file. This utility
! invokes the system linker (via the ``gcc`` command)
  with a correct list of object files and library references.
! ``gnatlink`` automatically determines the list of files and
  references for the Ada part of a program. It uses the binder file
! generated by the ``gnatbind`` to determine this list.
  
  .. _Running_gnatlink:
  
! Running ``gnatlink``
! --------------------
  
! The form of the ``gnatlink`` command is
  
  
  .. code-block:: sh
  
!     $ gnatlink [ switches ] mainprog [.ali]
!                [ non-Ada objects ] [ linker options ]
  
  
  
! The arguments of ``gnatlink`` (switches, main ``ALI`` file,
  non-Ada objects
  or linker options) may be in any order, provided that no non-Ada object may
  be mistaken for a main :file:`ALI` file.
*************** whose name is the concatenation of :file
*** 7055,7086 ****
  
  :file:`mainprog.ali` references the ALI file of the main program.
  The :file:`.ali` extension of this file can be omitted. From this
! reference, *gnatlink* locates the corresponding binder file
  :file:`b~mainprog.adb` and, using the information in this file along
  with the list of non-Ada objects and linker options, constructs a
  linker command file to create the executable.
  
! The arguments other than the *gnatlink* switches and the main
  :file:`ALI` file are passed to the linker uninterpreted.
  They typically include the names of
  object files for units written in other languages than Ada and any library
  references required to resolve references in any of these foreign language
! units, or in `Import` pragmas in any Ada units.
  
! `linker options` is an optional list of linker specific
  switches.
! The default linker called by gnatlink is *gcc* which in
  turn calls the appropriate system linker.
  
! One useful option for the linker is *-s*: it reduces the size of the
  executable by removing all symbol table and relocation information from the
  executable.
  
! Standard options for the linker such as *-lmy_lib* or
! *-Ldir* can be added as is.
  For options that are not recognized by
! *gcc* as linker options, use the *gcc* switches
! *-Xlinker* or *-Wl,*.
  
  Refer to the GCC documentation for
  details.
--- 7145,7176 ----
  
  :file:`mainprog.ali` references the ALI file of the main program.
  The :file:`.ali` extension of this file can be omitted. From this
! reference, ``gnatlink`` locates the corresponding binder file
  :file:`b~mainprog.adb` and, using the information in this file along
  with the list of non-Ada objects and linker options, constructs a
  linker command file to create the executable.
  
! The arguments other than the ``gnatlink`` switches and the main
  :file:`ALI` file are passed to the linker uninterpreted.
  They typically include the names of
  object files for units written in other languages than Ada and any library
  references required to resolve references in any of these foreign language
! units, or in ``Import`` pragmas in any Ada units.
  
! ``linker options`` is an optional list of linker specific
  switches.
! The default linker called by gnatlink is ``gcc`` which in
  turn calls the appropriate system linker.
  
! One useful option for the linker is :switch:`-s`: it reduces the size of the
  executable by removing all symbol table and relocation information from the
  executable.
  
! Standard options for the linker such as :switch:`-lmy_lib` or
! :switch:`-Ldir` can be added as is.
  For options that are not recognized by
! ``gcc`` as linker options, use the ``gcc`` switches
! :switch:`-Xlinker` or :switch:`-Wl,`.
  
  Refer to the GCC documentation for
  details.
*************** Here is an example showing how to genera
*** 7092,7137 ****
       $ gnatlink my_prog -Wl,-Map,MAPFILE
  
  
! Using `linker options` it is possible to set the program stack and
  heap size.
  See :ref:`Setting_Stack_Size_from_gnatlink` and
  :ref:`Setting_Heap_Size_from_gnatlink`.
  
! *gnatlink* determines the list of objects required by the Ada
  program and prepends them to the list of objects passed to the linker.
! *gnatlink* also gathers any arguments set by the use of
! `pragma Linker_Options` and adds them to the list of arguments
  presented to the linker.
  
  
  .. _Switches_for_gnatlink:
  
! Switches for *gnatlink*
! -----------------------
  
! The following switches are available with the *gnatlink* utility:
  
  .. index:: --version  (gnatlink)
  
! :samp:`--version`
    Display Copyright and version, then exit disregarding all other options.
  
  
  .. index:: --help  (gnatlink)
  
! :samp:`--help`
!   If *--version* was not used, display usage, then exit disregarding
    all other options.
  
  
  .. index:: Command line length
  .. index:: -f  (gnatlink)
  
! :samp:`-f`
!   On some targets, the command line length is limited, and *gnatlink*
    will generate a separate file for the linker if the list of object files
    is too long.
!   The *-f* switch forces this file
    to be generated even if
    the limit is not exceeded. This is useful in some cases to deal with
    special situations where the command line length is exceeded.
--- 7182,7227 ----
       $ gnatlink my_prog -Wl,-Map,MAPFILE
  
  
! Using ``linker options`` it is possible to set the program stack and
  heap size.
  See :ref:`Setting_Stack_Size_from_gnatlink` and
  :ref:`Setting_Heap_Size_from_gnatlink`.
  
! ``gnatlink`` determines the list of objects required by the Ada
  program and prepends them to the list of objects passed to the linker.
! ``gnatlink`` also gathers any arguments set by the use of
! ``pragma Linker_Options`` and adds them to the list of arguments
  presented to the linker.
  
  
  .. _Switches_for_gnatlink:
  
! Switches for ``gnatlink``
! -------------------------
  
! The following switches are available with the ``gnatlink`` utility:
  
  .. index:: --version  (gnatlink)
  
! :switch:`--version`
    Display Copyright and version, then exit disregarding all other options.
  
  
  .. index:: --help  (gnatlink)
  
! :switch:`--help`
!   If :switch:`--version` was not used, display usage, then exit disregarding
    all other options.
  
  
  .. index:: Command line length
  .. index:: -f  (gnatlink)
  
! :switch:`-f`
!   On some targets, the command line length is limited, and ``gnatlink``
    will generate a separate file for the linker if the list of object files
    is too long.
!   The :switch:`-f` switch forces this file
    to be generated even if
    the limit is not exceeded. This is useful in some cases to deal with
    special situations where the command line length is exceeded.
*************** The following switches are available wit
*** 7140,7155 ****
  .. index:: Debugging information, including
  .. index:: -g  (gnatlink)
  
! :samp:`-g`
    The option to include debugging information causes the Ada bind file (in
!   other words, :file:`b~mainprog.adb`) to be compiled with *-g*.
    In addition, the binder does not delete the :file:`b~mainprog.adb`,
    :file:`b~mainprog.o` and :file:`b~mainprog.ali` files.
!   Without *-g*, the binder removes these files by default.
  
  .. index:: -n  (gnatlink)
  
! :samp:`-n`
    Do not compile the file generated by the binder. This may be used when
    a link is rerun with different options, but there is no need to recompile
    the binder file.
--- 7230,7245 ----
  .. index:: Debugging information, including
  .. index:: -g  (gnatlink)
  
! :switch:`-g`
    The option to include debugging information causes the Ada bind file (in
!   other words, :file:`b~mainprog.adb`) to be compiled with :switch:`-g`.
    In addition, the binder does not delete the :file:`b~mainprog.adb`,
    :file:`b~mainprog.o` and :file:`b~mainprog.ali` files.
!   Without :switch:`-g`, the binder removes these files by default.
  
  .. index:: -n  (gnatlink)
  
! :switch:`-n`
    Do not compile the file generated by the binder. This may be used when
    a link is rerun with different options, but there is no need to recompile
    the binder file.
*************** The following switches are available wit
*** 7157,7163 ****
  
  .. index:: -v  (gnatlink)
  
! :samp:`-v`
    Verbose mode. Causes additional information to be output, including a full
    list of the included object files.
    This switch option is most useful when you want
--- 7247,7253 ----
  
  .. index:: -v  (gnatlink)
  
! :switch:`-v`
    Verbose mode. Causes additional information to be output, including a full
    list of the included object files.
    This switch option is most useful when you want
*************** The following switches are available wit
*** 7166,7235 ****
  
  .. index:: -v -v  (gnatlink)
  
! :samp:`-v -v`
    Very verbose mode. Requests that the compiler operate in verbose mode when
    it compiles the binder file, and that the system linker run in verbose mode.
  
  
  .. index:: -o  (gnatlink)
  
! :samp:`-o {exec-name}`
!   `exec-name` specifies an alternate name for the generated
    executable program. If this switch is omitted, the executable has the same
!   name as the main unit. For example, `gnatlink try.ali` creates
    an executable called :file:`try`.
  
  
- .. index:: -b  (gnatlink)
- 
- :samp:`-b {target}`
-   Compile your program to run on `target`, which is the name of a
-   system configuration. You must have a GNAT cross-compiler built if
-   `target` is not the same as your host system.
- 
- 
  .. index:: -B  (gnatlink)
  
! :samp:`-B{dir}`
!   Load compiler executables (for example, `gnat1`, the Ada compiler)
!   from `dir` instead of the default location. Only use this switch
    when multiple versions of the GNAT compiler are available.
!   See the `Directory Options` section in :title:`The_GNU_Compiler_Collection`
!   for further details. You would normally use the *-b* or
!   *-V* switch instead.
  
  
  .. index:: -M  (gnatlink)
  
! :samp:`-M`
    When linking an executable, create a map file. The name of the map file
    has the same name as the executable with extension ".map".
  
  
  .. index:: -M=  (gnatlink)
  
! :samp:`-M={mapfile}`
    When linking an executable, create a map file. The name of the map file is
!   `mapfile`.
  
  
  .. index:: --GCC=compiler_name  (gnatlink)
  
! :samp:`--GCC={compiler_name}`
    Program used for compiling the binder file. The default is
!   ``gcc``. You need to use quotes around `compiler_name` if
!   `compiler_name` contains spaces or other separator characters.
!   As an example ``--GCC="foo -x -y"`` will instruct *gnatlink* to
    use ``foo -x -y`` as your compiler. Note that switch ``-c`` is always
    inserted after your command name. Thus in the above example the compiler
!   command that will be used by *gnatlink* will be ``foo -c -x -y``.
    A limitation of this syntax is that the name and path name of the executable
    itself must not include any embedded spaces. If the compiler executable is
    different from the default one (gcc or <prefix>-gcc), then the back-end
    switches in the ALI file are not used to compile the binder generated source.
    For example, this is the case with ``--GCC="foo -x -y"``. But the back end
    switches will be used for ``--GCC="gcc -gnatv"``. If several
!   ``--GCC=compiler_name`` are used, only the last `compiler_name`
    is taken into account. However, all the additional switches are also taken
    into account. Thus,
    ``--GCC="foo -x -y" --GCC="bar -z -t"`` is equivalent to
--- 7256,7317 ----
  
  .. index:: -v -v  (gnatlink)
  
! :switch:`-v -v`
    Very verbose mode. Requests that the compiler operate in verbose mode when
    it compiles the binder file, and that the system linker run in verbose mode.
  
  
  .. index:: -o  (gnatlink)
  
! :switch:`-o {exec-name}`
!   ``exec-name`` specifies an alternate name for the generated
    executable program. If this switch is omitted, the executable has the same
!   name as the main unit. For example, ``gnatlink try.ali`` creates
    an executable called :file:`try`.
  
  
  .. index:: -B  (gnatlink)
  
! :switch:`-B{dir}`
!   Load compiler executables (for example, ``gnat1``, the Ada compiler)
!   from ``dir`` instead of the default location. Only use this switch
    when multiple versions of the GNAT compiler are available.
!   See the ``Directory Options`` section in :title:`The_GNU_Compiler_Collection`
!   for further details. You would normally use the :switch:`-b` or
!   :switch:`-V` switch instead.
  
  
  .. index:: -M  (gnatlink)
  
! :switch:`-M`
    When linking an executable, create a map file. The name of the map file
    has the same name as the executable with extension ".map".
  
  
  .. index:: -M=  (gnatlink)
  
! :switch:`-M={mapfile}`
    When linking an executable, create a map file. The name of the map file is
!   ``mapfile``.
  
  
  .. index:: --GCC=compiler_name  (gnatlink)
  
! :switch:`--GCC={compiler_name}`
    Program used for compiling the binder file. The default is
!   ``gcc``. You need to use quotes around ``compiler_name`` if
!   ``compiler_name`` contains spaces or other separator characters.
!   As an example ``--GCC="foo -x -y"`` will instruct ``gnatlink`` to
    use ``foo -x -y`` as your compiler. Note that switch ``-c`` is always
    inserted after your command name. Thus in the above example the compiler
!   command that will be used by ``gnatlink`` will be ``foo -c -x -y``.
    A limitation of this syntax is that the name and path name of the executable
    itself must not include any embedded spaces. If the compiler executable is
    different from the default one (gcc or <prefix>-gcc), then the back-end
    switches in the ALI file are not used to compile the binder generated source.
    For example, this is the case with ``--GCC="foo -x -y"``. But the back end
    switches will be used for ``--GCC="gcc -gnatv"``. If several
!   ``--GCC=compiler_name`` are used, only the last ``compiler_name``
    is taken into account. However, all the additional switches are also taken
    into account. Thus,
    ``--GCC="foo -x -y" --GCC="bar -z -t"`` is equivalent to
*************** The following switches are available wit
*** 7238,7250 ****
  
  .. index:: --LINK=  (gnatlink)
  
! :samp:`--LINK={name}`
!   `name` is the name of the linker to be invoked. This is especially
    useful in mixed language programs since languages such as C++ require
    their own linker to be used. When this switch is omitted, the default
!   name for the linker is *gcc*. When this switch is used, the
!   specified linker is called instead of *gcc* with exactly the same
!   parameters that would have been passed to *gcc* so if the desired
    linker requires different parameters it is necessary to use a wrapper
    script that massages the parameters before invoking the real linker. It
    may be useful to control the exact invocation by using the verbose
--- 7320,7332 ----
  
  .. index:: --LINK=  (gnatlink)
  
! :switch:`--LINK={name}`
!   ``name`` is the name of the linker to be invoked. This is especially
    useful in mixed language programs since languages such as C++ require
    their own linker to be used. When this switch is omitted, the default
!   name for the linker is ``gcc``. When this switch is used, the
!   specified linker is called instead of ``gcc`` with exactly the same
!   parameters that would have been passed to ``gcc`` so if the desired
    linker requires different parameters it is necessary to use a wrapper
    script that massages the parameters before invoking the real linker. It
    may be useful to control the exact invocation by using the verbose
*************** The following switches are available wit
*** 7253,7271 ****
  
  .. _Using_the_GNU_make_Utility:
  
! Using the GNU `make` Utility
! ============================
  
  .. index:: make (GNU), GNU make
  
  This chapter offers some examples of makefiles that solve specific
  problems. It does not explain how to write a makefile, nor does it try to replace the
! *gnatmake* utility (:ref:`The_GNAT_Make_Program_gnatmake`).
  
  All the examples in this section are specific to the GNU version of
! make. Although *make* is a standard utility, and the basic language
  is the same, these examples use some advanced features found only in
! `GNU make`.
  
  .. _Using_gnatmake_in_a_Makefile:
  
--- 7335,7353 ----
  
  .. _Using_the_GNU_make_Utility:
  
! Using the GNU ``make`` Utility
! ==============================
  
  .. index:: make (GNU), GNU make
  
  This chapter offers some examples of makefiles that solve specific
  problems. It does not explain how to write a makefile, nor does it try to replace the
! ``gnatmake`` utility (:ref:`The_GNAT_Make_Program_gnatmake`).
  
  All the examples in this section are specific to the GNU version of
! make. Although ``make`` is a standard utility, and the basic language
  is the same, these examples use some advanced features found only in
! ``GNU make``.
  
  .. _Using_gnatmake_in_a_Makefile:
  
*************** time of very big applications while main
*** 7282,7288 ****
  each step of the build process.
  
  The list of dependencies are handled automatically by
! *gnatmake*. The Makefile is simply used to call gnatmake in each of
  the appropriate directories.
  
  Note that you should also read the example on how to automatically
--- 7364,7370 ----
  each step of the build process.
  
  The list of dependencies are handled automatically by
! ``gnatmake``. The Makefile is simply used to call gnatmake in each of
  the appropriate directories.
  
  Note that you should also read the example on how to automatically
*************** automatically.
*** 7385,7397 ****
  
  The example below presents two methods. The first one, although less
  general, gives you more control over the list. It involves wildcard
! characters, that are automatically expanded by *make*. Its
  shortcoming is that you need to explicitly specify some of the
  organization of your project, such as for instance the directory tree
  depth, whether some directories are found in a separate tree, etc.
  
  The second method is the most general one. It requires an external
! program, called *find*, which is standard on all Unix systems. All
  the directories found under a given root directory will be added to the
  list.
  
--- 7467,7479 ----
  
  The example below presents two methods. The first one, although less
  general, gives you more control over the list. It involves wildcard
! characters, that are automatically expanded by ``make``. Its
  shortcoming is that you need to explicitly specify some of the
  organization of your project, such as for instance the directory tree
  depth, whether some directories are found in a separate tree, etc.
  
  The second method is the most general one. It requires an external
! program, called ``find``, which is standard on all Unix systems. All
  the directories found under a given root directory will be added to the
  list.
  
*************** list.
*** 7423,7429 ****
    # Note that the argument(s) to wildcard below should end with a '/'.
    # Since wildcards also return file names, we have to filter them out
    # to avoid duplicate directory names.
!   # We thus use make's `dir` and `sort` functions.
    # It sets DIRs to the following value (note that the directories aaa and baa
    # are not given, unless you change the arguments to wildcard).
    # DIRS= ./a/a/ ./b/ ./a/aa/ ./a/ab/ ./a/ac/ ./b/ba/ ./b/bb/ ./b/bc/
--- 7505,7511 ----
    # Note that the argument(s) to wildcard below should end with a '/'.
    # Since wildcards also return file names, we have to filter them out
    # to avoid duplicate directory names.
!   # We thus use make's ``dir`` and ``sort`` functions.
    # It sets DIRs to the following value (note that the directories aaa and baa
    # are not given, unless you change the arguments to wildcard).
    # DIRS= ./a/a/ ./b/ ./a/aa/ ./a/ab/ ./a/ac/ ./b/ba/ ./b/bb/ ./b/bc/
*************** operating systems limit the length of th
*** 7480,7486 ****
  gnatmake the list of source and object directories.
  
  This example shows how you can set up environment variables, which will
! make *gnatmake* behave exactly as if the directories had been
  specified on the command line, but have a much higher length limit (or
  even none on most systems).
  
--- 7562,7568 ----
  gnatmake the list of source and object directories.
  
  This example shows how you can set up environment variables, which will
! make ``gnatmake`` behave exactly as if the directories had been
  specified on the command line, but have a much higher length limit (or
  even none on most systems).
  
*************** path (where the ALI files are found) is
*** 7492,7498 ****
  
  Note a small trick in the Makefile below: for efficiency reasons, we
  create two temporary variables (SOURCE_LIST and OBJECT_LIST), that are
! expanded immediately by `make`. This way we overcome the standard
  make behavior which is to expand the variables only when they are
  actually used.
  
--- 7574,7580 ----
  
  Note a small trick in the Makefile below: for efficiency reasons, we
  create two temporary variables (SOURCE_LIST and OBJECT_LIST), that are
! expanded immediately by ``make``. This way we overcome the standard
  make behavior which is to expand the variables only when they are
  actually used.
  
diff -Nrcpad gcc-7.3.0/gcc/ada/doc/gnat_ugn/elaboration_order_handling_in_gnat.rst gcc-8.1.0/gcc/ada/doc/gnat_ugn/elaboration_order_handling_in_gnat.rst
*** gcc-7.3.0/gcc/ada/doc/gnat_ugn/elaboration_order_handling_in_gnat.rst	Fri Jan 13 11:23:42 2017
--- gcc-8.1.0/gcc/ada/doc/gnat_ugn/elaboration_order_handling_in_gnat.rst	Tue Dec  5 12:22:46 2017
***************
*** 1,3 ****
--- 1,5 ----
+ .. role:: switch(samp)
+ 
  .. |with| replace:: *with*
  .. |withs| replace:: *with*\ s
  .. |withed| replace:: *with*\ ed
*************** Elaboration Order Handling in GNAT
*** 15,1869 ****
  .. index:: Order of elaboration
  .. index:: Elaboration control
  
! This appendix describes the handling of elaboration code in Ada and
! in GNAT, and discusses how the order of elaboration of program units can
! be controlled in GNAT, either automatically or with explicit programming
! features.
  
  .. _Elaboration_Code:
  
  Elaboration Code
  ================
  
! Ada provides rather general mechanisms for executing code at elaboration
! time, that is to say before the main program starts executing. Such code arises
! in three contexts:
  
! * *Initializers for variables*
  
!   Variables declared at the library level, in package specs or bodies, can
!   require initialization that is performed at elaboration time, as in:
  
!   .. code-block:: ada
  
!        Sqrt_Half : Float := Sqrt (0.5);
  
! * *Package initialization code*
  
!   Code in a `BEGIN-END` section at the outer level of a package body is
!   executed as part of the package body elaboration code.
  
! * *Library level task allocators*
  
!   Tasks that are declared using task allocators at the library level
!   start executing immediately and hence can execute at elaboration time.
  
! Subprogram calls are possible in any of these contexts, which means that
! any arbitrary part of the program may be executed as part of the elaboration
! code. It is even possible to write a program which does all its work at
! elaboration time, with a null main program, although stylistically this
! would usually be considered an inappropriate way to structure
! a program.
  
! An important concern arises in the context of elaboration code:
! we have to be sure that it is executed in an appropriate order. What we
! have is a series of elaboration code sections, potentially one section
! for each unit in the program. It is important that these execute
! in the correct order. Correctness here means that, taking the above
! example of the declaration of `Sqrt_Half`,
! if some other piece of
! elaboration code references `Sqrt_Half`,
! then it must run after the
! section of elaboration code that contains the declaration of
! `Sqrt_Half`.
  
! There would never be any order of elaboration problem if we made a rule
! that whenever you |with| a unit, you must elaborate both the spec and body
! of that unit before elaborating the unit doing the |withing|:
  
! .. code-block:: ada
  
!      with Unit_1;
!      package Unit_2 is ...
  
! would require that both the body and spec of `Unit_1` be elaborated
! before the spec of `Unit_2`. However, a rule like that would be far too
! restrictive. In particular, it would make it impossible to have routines
! in separate packages that were mutually recursive.
  
! You might think that a clever enough compiler could look at the actual
! elaboration code and determine an appropriate correct order of elaboration,
! but in the general case, this is not possible. Consider the following
! example.
  
! In the body of `Unit_1`, we have a procedure `Func_1`
! that references
! the variable `Sqrt_1`, which is declared in the elaboration code
! of the body of `Unit_1`:
  
! .. code-block:: ada
  
!      Sqrt_1 : Float := Sqrt (0.1);
  
! The elaboration code of the body of `Unit_1` also contains:
  
! .. code-block:: ada
  
!      if expression_1 = 1 then
!         Q := Unit_2.Func_2;
!      end if;
  
! `Unit_2` is exactly parallel,
! it has a procedure `Func_2` that references
! the variable `Sqrt_2`, which is declared in the elaboration code of
! the body `Unit_2`:
  
! .. code-block:: ada
  
!       Sqrt_2 : Float := Sqrt (0.1);
  
! The elaboration code of the body of `Unit_2` also contains:
  
! .. code-block:: ada
  
!      if expression_2 = 2 then
!         Q := Unit_1.Func_1;
!      end if;
  
! Now the question is, which of the following orders of elaboration is
! acceptable:
  
  ::
  
!      Spec of Unit_1
!      Spec of Unit_2
!      Body of Unit_1
!      Body of Unit_2
  
! or
  
  ::
  
!      Spec of Unit_2
!      Spec of Unit_1
!      Body of Unit_2
!      Body of Unit_1
  
! If you carefully analyze the flow here, you will see that you cannot tell
! at compile time the answer to this question.
! If `expression_1` is not equal to 1,
! and `expression_2` is not equal to 2,
! then either order is acceptable, because neither of the function calls is
! executed. If both tests evaluate to true, then neither order is acceptable
! and in fact there is no correct order.
  
! If one of the two expressions is true, and the other is false, then one
! of the above orders is correct, and the other is incorrect. For example,
! if `expression_1` /= 1 and `expression_2` = 2,
! then the call to `Func_1`
! will occur, but not the call to `Func_2.`
! This means that it is essential
! to elaborate the body of `Unit_1` before
! the body of `Unit_2`, so the first
! order of elaboration is correct and the second is wrong.
  
! By making `expression_1` and `expression_2`
! depend on input data, or perhaps
! the time of day, we can make it impossible for the compiler or binder
! to figure out which of these expressions will be true, and hence it
! is impossible to guarantee a safe order of elaboration at run time.
  
  .. _Checking_the_Elaboration_Order:
  
  Checking the Elaboration Order
  ==============================
  
! In some languages that involve the same kind of elaboration problems,
! e.g., Java and C++, the programmer needs to take these
! ordering problems into account, and it is common to
! write a program in which an incorrect elaboration order  gives
! surprising results, because it references variables before they
! are initialized.
! Ada is designed to be a safe language, and a programmer-beware approach is
! clearly not sufficient. Consequently, the language provides three lines
! of defense:
! 
! * *Standard rules*
! 
!   Some standard rules restrict the possible choice of elaboration
!   order. In particular, if you |with| a unit, then its spec is always
!   elaborated before the unit doing the |with|. Similarly, a parent
!   spec is always elaborated before the child spec, and finally
!   a spec is always elaborated before its corresponding body.
  
! .. index:: Elaboration checks
! .. index:: Checks, elaboration
  
! * *Dynamic elaboration checks*
  
!   Dynamic checks are made at run time, so that if some entity is accessed
!   before it is elaborated (typically  by means of a subprogram call)
!   then the exception (`Program_Error`) is raised.
  
! * *Elaboration control*
  
!   Facilities are provided for the programmer to specify the desired order
!   of elaboration.
  
! Let's look at these facilities in more detail. First, the rules for
! dynamic checking. One possible rule would be simply to say that the
! exception is raised if you access a variable which has not yet been
! elaborated. The trouble with this approach is that it could require
! expensive checks on every variable reference. Instead Ada has two
! rules which are a little more restrictive, but easier to check, and
! easier to state:
  
! * *Restrictions on calls*
  
!   A subprogram can only be called at elaboration time if its body
!   has been elaborated. The rules for elaboration given above guarantee
!   that the spec of the subprogram has been elaborated before the
!   call, but not the body. If this rule is violated, then the
!   exception `Program_Error` is raised.
  
! * *Restrictions on instantiations*
  
!   A generic unit can only be instantiated if the body of the generic
!   unit has been elaborated. Again, the rules for elaboration given above
!   guarantee that the spec of the generic unit has been elaborated
!   before the instantiation, but not the body. If this rule is
!   violated, then the exception `Program_Error` is raised.
  
! The idea is that if the body has been elaborated, then any variables
! it references must have been elaborated; by checking for the body being
! elaborated we guarantee that none of its references causes any
! trouble. As we noted above, this is a little too restrictive, because a
! subprogram that has no non-local references in its body may in fact be safe
! to call. However, it really would be unsafe to rely on this, because
! it would mean that the caller was aware of details of the implementation
! in the body. This goes against the basic tenets of Ada.
  
! A plausible implementation can be described as follows.
! A Boolean variable is associated with each subprogram
! and each generic unit. This variable is initialized to False, and is set to
! True at the point body is elaborated. Every call or instantiation checks the
! variable, and raises `Program_Error` if the variable is False.
  
! Note that one might think that it would be good enough to have one Boolean
! variable for each package, but that would not deal with cases of trying
! to call a body in the same package as the call
! that has not been elaborated yet.
! Of course a compiler may be able to do enough analysis to optimize away
! some of the Boolean variables as unnecessary, and `GNAT` indeed
! does such optimizations, but still the easiest conceptual model is to
! think of there being one variable per subprogram.
  
! .. _Controlling_the_Elaboration_Order:
  
! Controlling the Elaboration Order
! =================================
  
! In the previous section we discussed the rules in Ada which ensure
! that `Program_Error` is raised if an incorrect elaboration order is
! chosen. This prevents erroneous executions, but we need mechanisms to
! specify a correct execution and avoid the exception altogether.
! To achieve this, Ada provides a number of features for controlling
! the order of elaboration. We discuss these features in this section.
  
! First, there are several ways of indicating to the compiler that a given
! unit has no elaboration problems:
  
! * *packages that do not require a body*
  
!   A library package that does not require a body does not permit
!   a body (this rule was introduced in Ada 95).
!   Thus if we have a such a package, as in:
  
!   .. code-block:: ada
  
!        package Definitions is
!           generic
!              type m is new integer;
!           package Subp is
!              type a is array (1 .. 10) of m;
!              type b is array (1 .. 20) of m;
!           end Subp;
!        end Definitions;
  
!   A package that |withs| `Definitions` may safely instantiate
!   `Definitions.Subp` because the compiler can determine that there
!   definitely is no package body to worry about in this case
  
  .. index:: pragma Pure
  
  * *pragma Pure*
  
!   This pragma places sufficient restrictions on a unit to guarantee that
!   no call to any subprogram in the unit can result in an
!   elaboration problem. This means that the compiler does not need
!   to worry about the point of elaboration of such units, and in
!   particular, does not need to check any calls to any subprograms
!   in this unit.
  
  .. index:: pragma Preelaborate
  
  * *pragma Preelaborate*
  
!   This pragma places slightly less stringent restrictions on a unit than
!   does pragma Pure,
!   but these restrictions are still sufficient to ensure that there
!   are no elaboration problems with any calls to the unit.
  
  .. index:: pragma Elaborate_Body
  
  * *pragma Elaborate_Body*
  
!   This pragma requires that the body of a unit be elaborated immediately
!   after its spec. Suppose a unit `A` has such a pragma,
!   and unit `B` does
!   a |with| of unit `A`. Recall that the standard rules require
!   the spec of unit `A`
!   to be elaborated before the |withing| unit; given the pragma in
!   `A`, we also know that the body of `A`
!   will be elaborated before `B`, so
!   that calls to `A` are safe and do not need a check.
  
!   Note that, unlike pragma `Pure` and pragma `Preelaborate`,
!   the use of `Elaborate_Body` does not guarantee that the program is
!   free of elaboration problems, because it may not be possible
!   to satisfy the requested elaboration order.
!   Let's go back to the example with `Unit_1` and `Unit_2`.
!   If a programmer marks `Unit_1` as `Elaborate_Body`,
!   and not `Unit_2,` then the order of
!   elaboration will be::
  
!        Spec of Unit_2
!        Spec of Unit_1
!        Body of Unit_1
!        Body of Unit_2
  
!   Now that means that the call to `Func_1` in `Unit_2`
!   need not be checked,
!   it must be safe. But the call to `Func_2` in
!   `Unit_1` may still fail if
!   `Expression_1` is equal to 1,
!   and the programmer must still take
!   responsibility for this not being the case.
  
!   If all units carry a pragma `Elaborate_Body`, then all problems are
!   eliminated, except for calls entirely within a body, which are
!   in any case fully under programmer control. However, using the pragma
!   everywhere is not always possible.
!   In particular, for our `Unit_1`/`Unit_2` example, if
!   we marked both of them as having pragma `Elaborate_Body`, then
!   clearly there would be no possible elaboration order.
  
! The above pragmas allow a server to guarantee safe use by clients, and
! clearly this is the preferable approach. Consequently a good rule
! is to mark units as `Pure` or `Preelaborate` if possible,
! and if this is not possible,
! mark them as `Elaborate_Body` if possible.
! As we have seen, there are situations where neither of these
! three pragmas can be used.
! So we also provide methods for clients to control the
! order of elaboration of the servers on which they depend:
  
! .. index:: pragma Elaborate
  
! * *pragma Elaborate (unit)*
  
!   This pragma is placed in the context clause, after a |with| clause,
!   and it requires that the body of the named unit be elaborated before
!   the unit in which the pragma occurs. The idea is to use this pragma
!   if the current unit calls at elaboration time, directly or indirectly,
!   some subprogram in the named unit.
  
  
! .. index:: pragma Elaborate_All
  
! * *pragma Elaborate_All (unit)*
  
!   This is a stronger version of the Elaborate pragma. Consider the
!   following example::
  
!         Unit A |withs| unit B and calls B.Func in elab code
!         Unit B |withs| unit C, and B.Func calls C.Func
  
  
!   Now if we put a pragma `Elaborate (B)`
!   in unit `A`, this ensures that the
!   body of `B` is elaborated before the call, but not the
!   body of `C`, so
!   the call to `C.Func` could still cause `Program_Error` to
!   be raised.
  
!   The effect of a pragma `Elaborate_All` is stronger, it requires
!   not only that the body of the named unit be elaborated before the
!   unit doing the |with|, but also the bodies of all units that the
!   named unit uses, following |with| links transitively. For example,
!   if we put a pragma `Elaborate_All (B)` in unit `A`,
!   then it requires not only that the body of `B` be elaborated before `A`,
!   but also the body of `C`, because `B` |withs| `C`.
  
! We are now in a position to give a usage rule in Ada for avoiding
! elaboration problems, at least if dynamic dispatching and access to
! subprogram values are not used. We will handle these cases separately
! later.
  
! The rule is simple:
  
! *If a unit has elaboration code that can directly or
! indirectly make a call to a subprogram in a |withed| unit, or instantiate
! a generic package in a |withed| unit,
! then if the |withed| unit does not have
! pragma `Pure` or `Preelaborate`, then the client should have
! a pragma `Elaborate_All`for the |withed| unit.**
  
! By following this rule a client is
! assured that calls can be made without risk of an exception.
  
! For generic subprogram instantiations, the rule can be relaxed to
! require only a pragma `Elaborate` since elaborating the body
! of a subprogram cannot cause any transitive elaboration (we are
! not calling the subprogram in this case, just elaborating its
! declaration).
  
! If this rule is not followed, then a program may be in one of four
! states:
  
! * *No order exists*
  
!   No order of elaboration exists which follows the rules, taking into
!   account any `Elaborate`, `Elaborate_All`,
!   or `Elaborate_Body` pragmas. In
!   this case, an Ada compiler must diagnose the situation at bind
!   time, and refuse to build an executable program.
  
! * *One or more orders exist, all incorrect*
  
!   One or more acceptable elaboration orders exist, and all of them
!   generate an elaboration order problem. In this case, the binder
!   can build an executable program, but `Program_Error` will be raised
!   when the program is run.
  
! * *Several orders exist, some right, some incorrect*
  
!   One or more acceptable elaboration orders exists, and some of them
!   work, and some do not. The programmer has not controlled
!   the order of elaboration, so the binder may or may not pick one of
!   the correct orders, and the program may or may not raise an
!   exception when it is run. This is the worst case, because it means
!   that the program may fail when moved to another compiler, or even
!   another version of the same compiler.
  
! * *One or more orders exists, all correct*
  
!   One ore more acceptable elaboration orders exist, and all of them
!   work. In this case the program runs successfully. This state of
!   affairs can be guaranteed by following the rule we gave above, but
!   may be true even if the rule is not followed.
  
! Note that one additional advantage of following our rules on the use
! of `Elaborate` and `Elaborate_All`
! is that the program continues to stay in the ideal (all orders OK) state
! even if maintenance
! changes some bodies of some units. Conversely, if a program that does
! not follow this rule happens to be safe at some point, this state of affairs
! may deteriorate silently as a result of maintenance changes.
  
! You may have noticed that the above discussion did not mention
! the use of `Elaborate_Body`. This was a deliberate omission. If you
! |with| an `Elaborate_Body` unit, it still may be the case that
! code in the body makes calls to some other unit, so it is still necessary
! to use `Elaborate_All` on such units.
  
  
! .. _Controlling_Elaboration_in_GNAT_-_Internal_Calls:
  
! Controlling Elaboration in GNAT - Internal Calls
! ================================================
  
! In the case of internal calls, i.e., calls within a single package, the
! programmer has full control over the order of elaboration, and it is up
! to the programmer to elaborate declarations in an appropriate order. For
! example writing:
  
! .. code-block:: ada
  
!      function One return Float;
  
!      Q : Float := One;
  
!      function One return Float is
!      begin
!           return 1.0;
!      end One;
  
! will obviously raise `Program_Error` at run time, because function
! One will be called before its body is elaborated. In this case GNAT will
! generate a warning that the call will raise `Program_Error`::
  
!      1. procedure y is
!      2.    function One return Float;
!      3.
!      4.    Q : Float := One;
!                         |
!         >>> warning: cannot call "One" before body is elaborated
!         >>> warning: Program_Error will be raised at run time
  
!      5.
!      6.    function One return Float is
!      7.    begin
!      8.         return 1.0;
!      9.    end One;
!     10.
!     11. begin
!     12.    null;
!     13. end;
  
  
! Note that in this particular case, it is likely that the call is safe, because
! the function `One` does not access any global variables.
! Nevertheless in Ada, we do not want the validity of the check to depend on
! the contents of the body (think about the separate compilation case), so this
! is still wrong, as we discussed in the previous sections.
  
! The error is easily corrected by rearranging the declarations so that the
! body of `One` appears before the declaration containing the call
! (note that in Ada 95 as well as later versions of the Ada standard,
! declarations can appear in any order, so there is no restriction that
! would prevent this reordering, and if we write:
  
! .. code-block:: ada
  
!      function One return Float;
  
!      function One return Float is
!      begin
!           return 1.0;
!      end One;
  
!      Q : Float := One;
  
! then all is well, no warning is generated, and no
! `Program_Error` exception
! will be raised.
! Things are more complicated when a chain of subprograms is executed:
  
! .. code-block:: ada
  
!      function A return Integer;
!      function B return Integer;
!      function C return Integer;
  
!      function B return Integer is begin return A; end;
!      function C return Integer is begin return B; end;
  
!      X : Integer := C;
  
!      function A return Integer is begin return 1; end;
  
! Now the call to `C`
! at elaboration time in the declaration of `X` is correct, because
! the body of `C` is already elaborated,
! and the call to `B` within the body of
! `C` is correct, but the call
! to `A` within the body of `B` is incorrect, because the body
! of `A` has not been elaborated, so `Program_Error`
! will be raised on the call to `A`.
! In this case GNAT will generate a
! warning that `Program_Error` may be
! raised at the point of the call. Let's look at the warning::
  
!      1. procedure x is
!      2.    function A return Integer;
!      3.    function B return Integer;
!      4.    function C return Integer;
!      5.
!      6.    function B return Integer is begin return A; end;
!                                                         |
!         >>> warning: call to "A" before body is elaborated may
!                      raise Program_Error
!         >>> warning: "B" called at line 7
!         >>> warning: "C" called at line 9
  
!      7.    function C return Integer is begin return B; end;
!      8.
!      9.    X : Integer := C;
!     10.
!     11.    function A return Integer is begin return 1; end;
!     12.
!     13. begin
!     14.    null;
!     15. end;
  
  
! Note that the message here says 'may raise', instead of the direct case,
! where the message says 'will be raised'. That's because whether
! `A` is
! actually called depends in general on run-time flow of control.
! For example, if the body of `B` said
  
! .. code-block:: ada
  
!      function B return Integer is
!      begin
!         if some-condition-depending-on-input-data then
!            return A;
!         else
!            return 1;
!         end if;
!      end B;
  
! then we could not know until run time whether the incorrect call to A would
! actually occur, so `Program_Error` might
! or might not be raised. It is possible for a compiler to
! do a better job of analyzing bodies, to
! determine whether or not `Program_Error`
! might be raised, but it certainly
! couldn't do a perfect job (that would require solving the halting problem
! and is provably impossible), and because this is a warning anyway, it does
! not seem worth the effort to do the analysis. Cases in which it
! would be relevant are rare.
  
! In practice, warnings of either of the forms given
! above will usually correspond to
! real errors, and should be examined carefully and eliminated.
! In the rare case where a warning is bogus, it can be suppressed by any of
! the following methods:
  
! * Compile with the *-gnatws* switch set
  
! * Suppress `Elaboration_Check` for the called subprogram
  
! * Use pragma `Warnings_Off` to turn warnings off for the call
  
! For the internal elaboration check case,
! GNAT by default generates the
! necessary run-time checks to ensure
! that `Program_Error` is raised if any
! call fails an elaboration check. Of course this can only happen if a
! warning has been issued as described above. The use of pragma
! `Suppress (Elaboration_Check)` may (but is not guaranteed to) suppress
! some of these checks, meaning that it may be possible (but is not
! guaranteed) for a program to be able to call a subprogram whose body
! is not yet elaborated, without raising a `Program_Error` exception.
  
  
! .. _Controlling_Elaboration_in_GNAT_-_External_Calls:
  
! Controlling Elaboration in GNAT - External Calls
! ================================================
  
! The previous section discussed the case in which the execution of a
! particular thread of elaboration code occurred entirely within a
! single unit. This is the easy case to handle, because a programmer
! has direct and total control over the order of elaboration, and
! furthermore, checks need only be generated in cases which are rare
! and which the compiler can easily detect.
! The situation is more complex when separate compilation is taken into account.
! Consider the following:
  
! .. code-block:: ada
  
!       package Math is
!          function Sqrt (Arg : Float) return Float;
!       end Math;
  
!       package body Math is
!          function Sqrt (Arg : Float) return Float is
!          begin
!                ...
!          end Sqrt;
!       end Math;
  
!       with Math;
!       package Stuff is
!          X : Float := Math.Sqrt (0.5);
!       end Stuff;
  
!       with Stuff;
!       procedure Main is
        begin
           ...
!       end Main;
  
! where `Main` is the main program. When this program is executed, the
! elaboration code must first be executed, and one of the jobs of the
! binder is to determine the order in which the units of a program are
! to be elaborated. In this case we have four units: the spec and body
! of `Math`,
! the spec of `Stuff` and the body of `Main`).
! In what order should the four separate sections of elaboration code
! be executed?
  
! There are some restrictions in the order of elaboration that the binder
! can choose. In particular, if unit U has a |with|
! for a package `X`, then you
! are assured that the spec of `X`
! is elaborated before U , but you are
! not assured that the body of `X`
! is elaborated before U.
! This means that in the above case, the binder is allowed to choose the
! order::
  
!      spec of Math
!      spec of Stuff
!      body of Math
!      body of Main
  
! but that's not good, because now the call to `Math.Sqrt`
! that happens during
! the elaboration of the `Stuff`
! spec happens before the body of `Math.Sqrt` is
! elaborated, and hence causes `Program_Error` exception to be raised.
! At first glance, one might say that the binder is misbehaving, because
! obviously you want to elaborate the body of something you |with| first, but
! that is not a general rule that can be followed in all cases. Consider
  
! .. code-block:: ada
  
!       package X is ...
  
!       package Y is ...
  
!       with X;
!       package body Y is ...
  
!       with Y;
!       package body X is ...
  
! This is a common arrangement, and, apart from the order of elaboration
! problems that might arise in connection with elaboration code, this works fine.
! A rule that says that you must first elaborate the body of anything you
! |with| cannot work in this case:
! the body of `X` |withs| `Y`,
! which means you would have to
! elaborate the body of `Y` first, but that |withs| `X`,
! which means
! you have to elaborate the body of `X` first, but ... and we have a
! loop that cannot be broken.
  
! It is true that the binder can in many cases guess an order of elaboration
! that is unlikely to cause a `Program_Error`
! exception to be raised, and it tries to do so (in the
! above example of `Math/Stuff/Spec`, the GNAT binder will
! by default
! elaborate the body of `Math` right after its spec, so all will be well).
  
! However, a program that blindly relies on the binder to be helpful can
! get into trouble, as we discussed in the previous sections, so GNAT
! provides a number of facilities for assisting the programmer in
! developing programs that are robust with respect to elaboration order.
  
  
! .. _Default_Behavior_in_GNAT_-_Ensuring_Safety:
  
! Default Behavior in GNAT - Ensuring Safety
! ==========================================
  
! The default behavior in GNAT ensures elaboration safety. In its
! default mode GNAT implements the
! rule we previously described as the right approach. Let's restate it:
  
! *If a unit has elaboration code that can directly or indirectly make a
! call to a subprogram in a |withed| unit, or instantiate a generic
! package in a |withed| unit, then if the |withed| unit
! does not have pragma `Pure` or `Preelaborate`, then the client should have an
! `Elaborate_All` pragma for the |withed| unit.*
  
! *In the case of instantiating a generic subprogram, it is always
! sufficient to have only an `Elaborate` pragma for the
! |withed| unit.*
  
! By following this rule a client is assured that calls and instantiations
! can be made without risk of an exception.
  
! In this mode GNAT traces all calls that are potentially made from
! elaboration code, and puts in any missing implicit `Elaborate`
! and `Elaborate_All` pragmas.
! The advantage of this approach is that no elaboration problems
! are possible if the binder can find an elaboration order that is
! consistent with these implicit `Elaborate` and
! `Elaborate_All` pragmas. The
! disadvantage of this approach is that no such order may exist.
  
! If the binder does not generate any diagnostics, then it means that it has
! found an elaboration order that is guaranteed to be safe. However, the binder
! may still be relying on implicitly generated `Elaborate` and
! `Elaborate_All` pragmas so portability to other compilers than GNAT is not
! guaranteed.
  
! If it is important to guarantee portability, then the compilations should
! use the *-gnatel*
! (info messages for elaboration pragmas) switch. This will cause info messages
! to be generated indicating the missing `Elaborate` and
! `Elaborate_All` pragmas.
! Consider the following source program:
  
! .. code-block:: ada
  
!      with k;
!      package j is
!        m : integer := k.r;
!      end;
  
! where it is clear that there
! should be a pragma `Elaborate_All`
! for unit `k`. An implicit pragma will be generated, and it is
! likely that the binder will be able to honor it. However, if you want
! to port this program to some other Ada compiler than GNAT.
! it is safer to include the pragma explicitly in the source. If this
! unit is compiled with the *-gnatel*
! switch, then the compiler outputs an information message::
  
!      1. with k;
!      2. package j is
!      3.   m : integer := k.r;
!                           |
!         >>> info: call to "r" may raise Program_Error
!         >>> info: missing pragma Elaborate_All for "k"
  
!      4. end;
  
! and these messages can be used as a guide for supplying manually
! the missing pragmas. It is usually a bad idea to use this
! option during development. That's because it will tell you when
! you need to put in a pragma, but cannot tell you when it is time
! to take it out. So the use of pragma `Elaborate_All` may lead to
! unnecessary dependencies and even false circularities.
  
! This default mode is more restrictive than the Ada Reference
! Manual, and it is possible to construct programs which will compile
! using the dynamic model described there, but will run into a
! circularity using the safer static model we have described.
  
! Of course any Ada compiler must be able to operate in a mode
! consistent with the requirements of the Ada Reference Manual,
! and in particular must have the capability of implementing the
! standard dynamic model of elaboration with run-time checks.
  
! In GNAT, this standard mode can be achieved either by the use of
! the *-gnatE* switch on the compiler (*gcc* or
! *gnatmake*) command, or by the use of the configuration pragma:
  
! .. code-block:: ada
  
!       pragma Elaboration_Checks (DYNAMIC);
  
! Either approach will cause the unit affected to be compiled using the
! standard dynamic run-time elaboration checks described in the Ada
! Reference Manual. The static model is generally preferable, since it
! is clearly safer to rely on compile and link time checks rather than
! run-time checks. However, in the case of legacy code, it may be
! difficult to meet the requirements of the static model. This
! issue is further discussed in
! :ref:`What_to_Do_If_the_Default_Elaboration_Behavior_Fails`.
  
! Note that the static model provides a strict subset of the allowed
! behavior and programs of the Ada Reference Manual, so if you do
! adhere to the static model and no circularities exist,
! then you are assured that your program will
! work using the dynamic model, providing that you remove any
! pragma Elaborate statements from the source.
  
  
! .. _Treatment_of_Pragma_Elaborate:
  
! Treatment of Pragma Elaborate
! =============================
  
! .. index:: Pragma Elaborate
  
! The use of `pragma Elaborate`
! should generally be avoided in Ada 95 and Ada 2005 programs,
! since there is no guarantee that transitive calls
! will be properly handled. Indeed at one point, this pragma was placed
! in Annex J (Obsolescent Features), on the grounds that it is never useful.
  
! Now that's a bit restrictive. In practice, the case in which
! `pragma Elaborate` is useful is when the caller knows that there
! are no transitive calls, or that the called unit contains all necessary
! transitive `pragma Elaborate` statements, and legacy code often
! contains such uses.
  
! Strictly speaking the static mode in GNAT should ignore such pragmas,
! since there is no assurance at compile time that the necessary safety
! conditions are met. In practice, this would cause GNAT to be incompatible
! with correctly written Ada 83 code that had all necessary
! `pragma Elaborate` statements in place. Consequently, we made the
! decision that GNAT in its default mode will believe that if it encounters
! a `pragma Elaborate` then the programmer knows what they are doing,
! and it will trust that no elaboration errors can occur.
  
! The result of this decision is two-fold. First to be safe using the
! static mode, you should remove all `pragma Elaborate` statements.
! Second, when fixing circularities in existing code, you can selectively
! use `pragma Elaborate` statements to convince the static mode of
! GNAT that it need not generate an implicit `pragma Elaborate_All`
! statement.
  
! When using the static mode with *-gnatwl*, any use of
! `pragma Elaborate` will generate a warning about possible
! problems.
  
  
! .. _Elaboration_Issues_for_Library_Tasks:
  
! Elaboration Issues for Library Tasks
! ====================================
  
! .. index:: Library tasks, elaboration issues
  
! .. index:: Elaboration of library tasks
  
! In this section we examine special elaboration issues that arise for
! programs that declare library level tasks.
  
! Generally the model of execution of an Ada program is that all units are
! elaborated, and then execution of the program starts. However, the
! declaration of library tasks definitely does not fit this model. The
! reason for this is that library tasks start as soon as they are declared
! (more precisely, as soon as the statement part of the enclosing package
! body is reached), that is to say before elaboration
! of the program is complete. This means that if such a task calls a
! subprogram, or an entry in another task, the callee may or may not be
! elaborated yet, and in the standard
! Reference Manual model of dynamic elaboration checks, you can even
! get timing dependent Program_Error exceptions, since there can be
! a race between the elaboration code and the task code.
  
! The static model of elaboration in GNAT seeks to avoid all such
! dynamic behavior, by being conservative, and the conservative
! approach in this particular case is to assume that all the code
! in a task body is potentially executed at elaboration time if
! a task is declared at the library level.
  
! This can definitely result in unexpected circularities. Consider
! the following example
  
! .. code-block:: ada
  
!       package Decls is
!         task Lib_Task is
!            entry Start;
!         end Lib_Task;
  
!         type My_Int is new Integer;
  
!         function Ident (M : My_Int) return My_Int;
!       end Decls;
  
!       with Utils;
!       package body Decls is
!         task body Lib_Task is
!         begin
!            accept Start;
!            Utils.Put_Val (2);
!         end Lib_Task;
  
!         function Ident (M : My_Int) return My_Int is
!         begin
!            return M;
!         end Ident;
!       end Decls;
  
!       with Decls;
!       package Utils is
!         procedure Put_Val (Arg : Decls.My_Int);
!       end Utils;
  
!       with Text_IO;
!       package body Utils is
!         procedure Put_Val (Arg : Decls.My_Int) is
!         begin
!            Text_IO.Put_Line (Decls.My_Int'Image (Decls.Ident (Arg)));
!         end Put_Val;
!       end Utils;
  
!       with Decls;
!       procedure Main is
!       begin
!          Decls.Lib_Task.Start;
!       end;
  
! If the above example is compiled in the default static elaboration
! mode, then a circularity occurs. The circularity comes from the call
! `Utils.Put_Val` in the task body of `Decls.Lib_Task`. Since
! this call occurs in elaboration code, we need an implicit pragma
! `Elaborate_All` for `Utils`. This means that not only must
! the spec and body of `Utils` be elaborated before the body
! of `Decls`, but also the spec and body of any unit that is
! |withed| by the body of `Utils` must also be elaborated before
! the body of `Decls`. This is the transitive implication of
! pragma `Elaborate_All` and it makes sense, because in general
! the body of `Put_Val` might have a call to something in a
! |withed| unit.
  
! In this case, the body of Utils (actually its spec) |withs|
! `Decls`. Unfortunately this means that the body of `Decls`
! must be elaborated before itself, in case there is a call from the
! body of `Utils`.
  
! Here is the exact chain of events we are worrying about:
  
! * In the body of `Decls` a call is made from within the body of a library
!   task to a subprogram in the package `Utils`. Since this call may
!   occur at elaboration time (given that the task is activated at elaboration
!   time), we have to assume the worst, i.e., that the
!   call does happen at elaboration time.
  
! * This means that the body and spec of `Util` must be elaborated before
!   the body of `Decls` so that this call does not cause an access before
!   elaboration.
  
! * Within the body of `Util`, specifically within the body of
!   `Util.Put_Val` there may be calls to any unit |withed|
!   by this package.
  
! * One such |withed| package is package `Decls`, so there
!   might be a call to a subprogram in `Decls` in `Put_Val`.
!   In fact there is such a call in this example, but we would have to
!   assume that there was such a call even if it were not there, since
!   we are not supposed to write the body of `Decls` knowing what
!   is in the body of `Utils`; certainly in the case of the
!   static elaboration model, the compiler does not know what is in
!   other bodies and must assume the worst.
  
! * This means that the spec and body of `Decls` must also be
!   elaborated before we elaborate the unit containing the call, but
!   that unit is `Decls`! This means that the body of `Decls`
!   must be elaborated before itself, and that's a circularity.
  
! Indeed, if you add an explicit pragma `Elaborate_All` for `Utils` in
! the body of `Decls` you will get a true Ada Reference Manual
! circularity that makes the program illegal.
  
! In practice, we have found that problems with the static model of
! elaboration in existing code often arise from library tasks, so
! we must address this particular situation.
  
! Note that if we compile and run the program above, using the dynamic model of
! elaboration (that is to say use the *-gnatE* switch),
! then it compiles, binds,
! links, and runs, printing the expected result of 2. Therefore in some sense
! the circularity here is only apparent, and we need to capture
! the properties of this program that  distinguish it from other library-level
! tasks that have real elaboration problems.
  
! We have four possible answers to this question:
  
  
! * Use the dynamic model of elaboration.
  
!   If we use the *-gnatE* switch, then as noted above, the program works.
!   Why is this? If we examine the task body, it is apparent that the task cannot
!   proceed past the
!   `accept` statement until after elaboration has been completed, because
!   the corresponding entry call comes from the main program, not earlier.
!   This is why the dynamic model works here. But that's really giving
!   up on a precise analysis, and we prefer to take this approach only if we cannot
!   solve the
!   problem in any other manner. So let us examine two ways to reorganize
!   the program to avoid the potential elaboration problem.
  
! * Split library tasks into separate packages.
  
!   Write separate packages, so that library tasks are isolated from
!   other declarations as much as possible. Let us look at a variation on
!   the above program.
  
  
!   .. code-block:: ada
  
!       package Decls1 is
!         task Lib_Task is
!            entry Start;
!         end Lib_Task;
!       end Decls1;
  
!       with Utils;
!       package body Decls1 is
!         task body Lib_Task is
!         begin
!            accept Start;
!            Utils.Put_Val (2);
!         end Lib_Task;
!       end Decls1;
  
!       package Decls2 is
!         type My_Int is new Integer;
!         function Ident (M : My_Int) return My_Int;
!       end Decls2;
  
!       with Utils;
!       package body Decls2 is
!         function Ident (M : My_Int) return My_Int is
!         begin
!            return M;
!         end Ident;
!       end Decls2;
  
!       with Decls2;
!       package Utils is
!         procedure Put_Val (Arg : Decls2.My_Int);
!       end Utils;
  
!       with Text_IO;
!       package body Utils is
!         procedure Put_Val (Arg : Decls2.My_Int) is
!         begin
!            Text_IO.Put_Line (Decls2.My_Int'Image (Decls2.Ident (Arg)));
!         end Put_Val;
!       end Utils;
  
!       with Decls1;
!       procedure Main is
!       begin
!          Decls1.Lib_Task.Start;
!       end;
  
  
!   All we have done is to split `Decls` into two packages, one
!   containing the library task, and one containing everything else. Now
!   there is no cycle, and the program compiles, binds, links and executes
!   using the default static model of elaboration.
  
! * Declare separate task types.
  
!   A significant part of the problem arises because of the use of the
!   single task declaration form. This means that the elaboration of
!   the task type, and the elaboration of the task itself (i.e., the
!   creation of the task) happen at the same time. A good rule
!   of style in Ada is to always create explicit task types. By
!   following the additional step of placing task objects in separate
!   packages from the task type declaration, many elaboration problems
!   are avoided. Here is another modified example of the example program:
  
!   .. code-block:: ada
  
!       package Decls is
!         task type Lib_Task_Type is
!            entry Start;
!         end Lib_Task_Type;
  
!         type My_Int is new Integer;
  
!         function Ident (M : My_Int) return My_Int;
!       end Decls;
  
!       with Utils;
!       package body Decls is
!         task body Lib_Task_Type is
!         begin
!            accept Start;
!            Utils.Put_Val (2);
!         end Lib_Task_Type;
  
!         function Ident (M : My_Int) return My_Int is
!         begin
!            return M;
!         end Ident;
!       end Decls;
  
!       with Decls;
!       package Utils is
!         procedure Put_Val (Arg : Decls.My_Int);
!       end Utils;
  
!       with Text_IO;
!       package body Utils is
!         procedure Put_Val (Arg : Decls.My_Int) is
!         begin
!            Text_IO.Put_Line (Decls.My_Int'Image (Decls.Ident (Arg)));
!         end Put_Val;
!       end Utils;
  
!       with Decls;
!       package Declst is
!          Lib_Task : Decls.Lib_Task_Type;
!       end Declst;
  
!       with Declst;
!       procedure Main is
!       begin
!          Declst.Lib_Task.Start;
!       end;
  
  
!   What we have done here is to replace the `task` declaration in
!   package `Decls` with a `task type` declaration. Then we
!   introduce a separate package `Declst` to contain the actual
!   task object. This separates the elaboration issues for
!   the `task type`
!   declaration, which causes no trouble, from the elaboration issues
!   of the task object, which is also unproblematic, since it is now independent
!   of the elaboration of  `Utils`.
!   This separation of concerns also corresponds to
!   a generally sound engineering principle of separating declarations
!   from instances. This version of the program also compiles, binds, links,
!   and executes, generating the expected output.
  
! .. index:: No_Entry_Calls_In_Elaboration_Code restriction
  
! * Use No_Entry_Calls_In_Elaboration_Code restriction.
  
!   The previous two approaches described how a program can be restructured
!   to avoid the special problems caused by library task bodies. in practice,
!   however, such restructuring may be difficult to apply to existing legacy code,
!   so we must consider solutions that do not require massive rewriting.
  
!   Let us consider more carefully why our original sample program works
!   under the dynamic model of elaboration. The reason is that the code
!   in the task body blocks immediately on the `accept`
!   statement. Now of course there is nothing to prohibit elaboration
!   code from making entry calls (for example from another library level task),
!   so we cannot tell in isolation that
!   the task will not execute the accept statement  during elaboration.
  
!   However, in practice it is very unusual to see elaboration code
!   make any entry calls, and the pattern of tasks starting
!   at elaboration time and then immediately blocking on `accept` or
!   `select` statements is very common. What this means is that
!   the compiler is being too pessimistic when it analyzes the
!   whole package body as though it might be executed at elaboration
!   time.
  
!   If we know that the elaboration code contains no entry calls, (a very safe
!   assumption most of the time, that could almost be made the default
!   behavior), then we can compile all units of the program under control
!   of the following configuration pragma:
  
!   .. code-block:: ada
  
!       pragma Restrictions (No_Entry_Calls_In_Elaboration_Code);
  
!   This pragma can be placed in the :file:`gnat.adc` file in the usual
!   manner. If we take our original unmodified program and compile it
!   in the presence of a :file:`gnat.adc` containing the above pragma,
!   then once again, we can compile, bind, link, and execute, obtaining
!   the expected result. In the presence of this pragma, the compiler does
!   not trace calls in a task body, that appear after the first `accept`
!   or `select` statement, and therefore does not report a potential
!   circularity in the original program.
  
!   The compiler will check to the extent it can that the above
!   restriction is not violated, but it is not always possible to do a
!   complete check at compile time, so it is important to use this
!   pragma only if the stated restriction is in fact met, that is to say
!   no task receives an entry call before elaboration of all units is completed.
  
  
! .. _Mixing_Elaboration_Models:
  
! Mixing Elaboration Models
! =========================
  
! So far, we have assumed that the entire program is either compiled
! using the dynamic model or static model, ensuring consistency. It
! is possible to mix the two models, but rules have to be followed
! if this mixing is done to ensure that elaboration checks are not
! omitted.
  
! The basic rule is that
! **a unit compiled with the static model cannot
! be |withed| by a unit compiled with the dynamic model**.
! The reason for this is that in the static model, a unit assumes that
! its clients guarantee to use (the equivalent of) pragma
! `Elaborate_All` so that no elaboration checks are required
! in inner subprograms, and this assumption is violated if the
! client is compiled with dynamic checks.
  
! The precise rule is as follows. A unit that is compiled with dynamic
! checks can only |with| a unit that meets at least one of the
! following criteria:
  
  
! * The |withed| unit is itself compiled with dynamic elaboration
!   checks (that is with the *-gnatE* switch.
  
! * The |withed| unit is an internal GNAT implementation unit from
!   the System, Interfaces, Ada, or GNAT hierarchies.
  
! * The |withed| unit has pragma Preelaborate or pragma Pure.
  
! * The |withing| unit (that is the client) has an explicit pragma
!   `Elaborate_All` for the |withed| unit.
  
  
! If this rule is violated, that is if a unit with dynamic elaboration
! checks |withs| a unit that does not meet one of the above four
! criteria, then the binder (`gnatbind`) will issue a warning
! similar to that in the following example::
  
!      warning: "x.ads" has dynamic elaboration checks and with's
!      warning:   "y.ads" which has static elaboration checks
  
! These warnings indicate that the rule has been violated, and that as a result
! elaboration checks may be missed in the resulting executable file.
! This warning may be suppressed using the *-ws* binder switch
! in the usual manner.
  
! One useful application of this mixing rule is in the case of a subsystem
! which does not itself |with| units from the remainder of the
! application. In this case, the entire subsystem can be compiled with
! dynamic checks to resolve a circularity in the subsystem, while
! allowing the main application that uses this subsystem to be compiled
! using the more reliable default static model.
  
  
! .. _What_to_Do_If_the_Default_Elaboration_Behavior_Fails:
  
! What to Do If the Default Elaboration Behavior Fails
! ====================================================
  
! If the binder cannot find an acceptable order, it outputs detailed
! diagnostics. For example::
  
!      error: elaboration circularity detected
!      info:   "proc (body)" must be elaborated before "pack (body)"
!      info:     reason: Elaborate_All probably needed in unit "pack (body)"
!      info:     recompile "pack (body)" with -gnatel
!      info:                             for full details
!      info:       "proc (body)"
!      info:         is needed by its spec:
!      info:       "proc (spec)"
!      info:         which is withed by:
!      info:       "pack (body)"
!      info:  "pack (body)" must be elaborated before "proc (body)"
!      info:     reason: pragma Elaborate in unit "proc (body)"
  
! In this case we have a cycle that the binder cannot break. On the one
! hand, there is an explicit pragma Elaborate in `proc` for
! `pack`. This means that the body of `pack` must be elaborated
! before the body of `proc`. On the other hand, there is elaboration
! code in `pack` that calls a subprogram in `proc`. This means
! that for maximum safety, there should really be a pragma
! Elaborate_All in `pack` for `proc` which would require that
! the body of `proc` be elaborated before the body of
! `pack`. Clearly both requirements cannot be satisfied.
! Faced with a circularity of this kind, you have three different options.
  
  
! * *Fix the program*
  
!   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 called 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.
  
! * *Perform dynamic checks*
  
!   If the compilations are done using the *-gnatE*
!   (dynamic elaboration check) switch, then GNAT behaves in a quite different
!   manner. Dynamic checks are generated for all calls that could possibly result
!   in raising an exception. With this switch, the compiler does not generate
!   implicit `Elaborate` or `Elaborate_All` pragmas. The behavior then is
!   exactly as specified in the :title:`Ada Reference Manual`.
!   The binder will generate
!   an executable program that may or may not raise `Program_Error`, and then
!   it is the programmer's job to ensure that it does not raise an exception. Note
!   that it is important to compile all units with the switch, it cannot be used
!   selectively.
  
! * *Suppress checks*
  
!   The drawback of dynamic checks is that they generate a
!   significant overhead at run time, both in space and time. If you
!   are absolutely sure that your program cannot raise any elaboration
!   exceptions, and you still want to use the dynamic elaboration model,
!   then you can use the configuration pragma
!   `Suppress (Elaboration_Check)` to suppress all such checks. For
!   example this pragma could be placed in the :file:`gnat.adc` file.
  
! * *Suppress checks selectively*
  
!   When you know that certain calls or instantiations in elaboration code cannot
!   possibly lead to an elaboration error, and the binder nevertheless complains
!   about implicit `Elaborate` and `Elaborate_All` pragmas that lead to
!   elaboration circularities, it is possible to remove those warnings locally and
!   obtain a program that will bind. Clearly this can be unsafe, and it is the
!   responsibility of the programmer to make sure that the resulting program has no
!   elaboration anomalies. The pragma `Suppress (Elaboration_Check)` can be
!   used with different granularity to suppress warnings and break elaboration
!   circularities:
  
!   * Place the pragma that names the called subprogram in the declarative part
!     that contains the call.
  
!   * Place the pragma in the declarative part, without naming an entity. This
!     disables warnings on all calls in the corresponding  declarative region.
  
!   * Place the pragma in the package spec that declares the called subprogram,
!     and name the subprogram. This disables warnings on all elaboration calls to
!     that subprogram.
  
!   * Place the pragma in the package spec that declares the called subprogram,
!     without naming any entity. This disables warnings on all elaboration calls to
!     all subprograms declared in this spec.
  
!   * Use Pragma Elaborate.
  
!     As previously described in section :ref:`Treatment_of_Pragma_Elaborate`,
!     GNAT in static mode assumes that a `pragma` Elaborate indicates correctly
!     that no elaboration checks are required on calls to the designated unit.
!     There may be cases in which the caller knows that no transitive calls
!     can occur, so that a `pragma Elaborate` will be sufficient in a
!     case where `pragma Elaborate_All` would cause a circularity.
  
!   These five cases are listed in order of decreasing safety, and therefore
!   require increasing programmer care in their application. Consider the
!   following program:
  
!   .. code-block:: ada
  
!         package Pack1 is
!           function F1 return Integer;
!           X1 : Integer;
!         end Pack1;
  
!         package Pack2 is
!           function F2 return Integer;
!           function Pure (x : integer) return integer;
!           --  pragma Suppress (Elaboration_Check, On => Pure);  -- (3)
!           --  pragma Suppress (Elaboration_Check);              -- (4)
!         end Pack2;
  
!         with Pack2;
!         package body Pack1 is
!           function F1 return Integer is
!           begin
!             return 100;
!           end F1;
!           Val : integer := Pack2.Pure (11);    --  Elab. call (1)
          begin
!           declare
!             --  pragma Suppress(Elaboration_Check, Pack2.F2);   -- (1)
!             --  pragma Suppress(Elaboration_Check);             -- (2)
!           begin
!             X1 := Pack2.F2 + 1;                --  Elab. call (2)
!           end;
!         end Pack1;
  
!         with Pack1;
!         package body Pack2 is
!           function F2 return Integer is
!           begin
!              return Pack1.F1;
!           end F2;
!           function Pure (x : integer) return integer is
!           begin
!              return x ** 3 - 3 * x;
!           end;
!         end Pack2;
  
!         with Pack1, Ada.Text_IO;
!         procedure Proc3 is
          begin
!           Ada.Text_IO.Put_Line(Pack1.X1'Img); -- 101
!         end Proc3;
  
!   In the absence of any pragmas, an attempt to bind this program produces
!   the following diagnostics::
  
!        error: elaboration circularity detected
!        info:    "pack1 (body)" must be elaborated before "pack1 (body)"
!        info:       reason: Elaborate_All probably needed in unit "pack1 (body)"
!        info:       recompile "pack1 (body)" with -gnatel for full details
!        info:          "pack1 (body)"
!        info:             must be elaborated along with its spec:
!        info:          "pack1 (spec)"
!        info:             which is withed by:
!        info:          "pack2 (body)"
!        info:             which must be elaborated along with its spec:
!        info:          "pack2 (spec)"
!        info:             which is withed by:
!        info:          "pack1 (body)"
  
!   The sources of the circularity are the two calls to `Pack2.Pure` and
!   `Pack2.F2` in the body of `Pack1`. We can see that the call to
!   F2 is safe, even though F2 calls F1, because the call appears after the
!   elaboration of the body of F1. Therefore the pragma (1) is safe, and will
!   remove the warning on the call. It is also possible to use pragma (2)
!   because there are no other potentially unsafe calls in the block.
  
!   The call to `Pure` is safe because this function does not depend on the
!   state of `Pack2`. Therefore any call to this function is safe, and it
!   is correct to place pragma (3) in the corresponding package spec.
  
!   Finally, we could place pragma (4) in the spec of `Pack2` to disable
!   warnings on all calls to functions declared therein. Note that this is not
!   necessarily safe, and requires more detailed examination of the subprogram
!   bodies involved. In particular, a call to `F2` requires that `F1`
!   be already elaborated.
  
! It is hard to generalize on which of these four approaches should be
! taken. Obviously if it is possible to fix the program so that the default
! treatment works, this is preferable, but this may not always be practical.
! It is certainly simple enough to use *-gnatE*
! but the danger in this case is that, even if the GNAT binder
! finds a correct elaboration order, it may not always do so,
! and certainly a binder from another Ada compiler might not. A
! combination of testing and analysis (for which the
! information messages generated with the *-gnatel*
! switch can be useful) must be used to ensure that the program is free
! of errors. One switch that is useful in this testing is the
! *-p (pessimistic elaboration order)* switch for `gnatbind`.
! Normally the binder tries to find an order that has the best chance
! of avoiding elaboration problems. However, if this switch is used, the binder
! plays a devil's advocate role, and tries to choose the order that
! has the best chance of failing. If your program works even with this
! switch, then it has a better chance of being error free, but this is still
! not a guarantee.
  
! For an example of this approach in action, consider the C-tests (executable
! tests) from the ACATS suite. If these are compiled and run with the default
! treatment, then all but one of them succeed without generating any error
! diagnostics from the binder. However, there is one test that fails, and
! this is not surprising, because the whole point of this test is to ensure
! that the compiler can handle cases where it is impossible to determine
! a correct order statically, and it checks that an exception is indeed
! raised at run time.
  
! This one test must be compiled and run using the *-gnatE*
! switch, and then it passes. Alternatively, the entire suite can
! be run using this switch. It is never wrong to run with the dynamic
! elaboration switch if your code is correct, and we assume that the
! C-tests are indeed correct (it is less efficient, but efficiency is
! not a factor in running the ACATS tests.)
  
  
! .. _Elaboration_for_Indirect_Calls:
  
! Elaboration for Indirect Calls
! ==============================
  
! .. index:: Dispatching calls
! .. index:: Indirect calls
  
! In rare cases, the static elaboration model fails to prevent
! dispatching calls to not-yet-elaborated subprograms. In such cases, we
! fall back to run-time checks; premature calls to any primitive
! operation of a tagged type before the body of the operation has been
! elaborated will raise `Program_Error`.
  
! Access-to-subprogram types, however, are handled conservatively in many
! cases. This was not true in earlier versions of the compiler; you can use
! the *-gnatd.U* debug switch to revert to the old behavior if the new
! conservative behavior causes elaboration cycles. Here, 'conservative' means
! that if you do `P'Access` during elaboration, the compiler will normally
! assume that you might call `P` indirectly during elaboration, so it adds an
! implicit `pragma Elaborate_All` on the library unit containing `P`. The
! *-gnatd.U* switch is safe if you know there are no such calls. If the
! program worked before, it will continue to work with *-gnatd.U*. But beware
! that code modifications such as adding an indirect call can cause erroneous
! behavior in the presence of *-gnatd.U*.
  
! These implicit Elaborate_All pragmas are not added in all cases, because
! they cause elaboration cycles in certain common code patterns. If you want
! even more conservative handling of P'Access, you can use the *-gnatd.o*
! switch.
  
! See `debug.adb` for documentation on the *-gnatd...* debug switches.
  
  
! .. _Summary_of_Procedures_for_Elaboration_Control:
  
! Summary of Procedures for Elaboration Control
! =============================================
  
! .. index:: Elaboration control
  
! First, compile your program with the default options, using none of
! the special elaboration-control switches. If the binder successfully
! binds your program, then you can be confident that, apart from issues
! raised by the use of access-to-subprogram types and dynamic dispatching,
! the program is free of elaboration errors. If it is important that the
! program be portable to other compilers than GNAT, then use the
! *-gnatel*
! switch to generate messages about missing `Elaborate` or
! `Elaborate_All` pragmas, and supply the missing pragmas.
  
! If the program fails to bind using the default static elaboration
! handling, then you can fix the program to eliminate the binder
! message, or recompile the entire program with the
! *-gnatE* switch to generate dynamic elaboration checks,
! and, if you are sure there really are no elaboration problems,
! use a global pragma `Suppress (Elaboration_Check)`.
  
  
! .. _Other_Elaboration_Order_Considerations:
  
! Other Elaboration Order Considerations
! ======================================
  
! This section has been entirely concerned with the issue of finding a valid
! elaboration order, as defined by the Ada Reference Manual. In a case
! where several elaboration orders are valid, the task is to find one
! of the possible valid elaboration orders (and the static model in GNAT
! will ensure that this is achieved).
  
! The purpose of the elaboration rules in the Ada Reference Manual is to
! make sure that no entity is accessed before it has been elaborated. For
! a subprogram, this means that the spec and body must have been elaborated
! before the subprogram is called. For an object, this means that the object
! must have been elaborated before its value is read or written. A violation
! of either of these two requirements is an access before elaboration order,
! and this section has been all about avoiding such errors.
  
! In the case where more than one order of elaboration is possible, in the
! sense that access before elaboration errors are avoided, then any one of
! the orders is 'correct' in the sense that it meets the requirements of
! the Ada Reference Manual, and no such error occurs.
  
! However, it may be the case for a given program, that there are
! constraints on the order of elaboration that come not from consideration
! of avoiding elaboration errors, but rather from extra-lingual logic
! requirements. Consider this example:
  
! .. code-block:: ada
  
!      with Init_Constants;
!      package Constants is
!         X : Integer := 0;
!         Y : Integer := 0;
!      end Constants;
  
!      package Init_Constants is
!         procedure P; --* require a body*
!      end Init_Constants;
  
!      with Constants;
!      package body Init_Constants is
!         procedure P is begin null; end;
!      begin
!         Constants.X := 3;
!         Constants.Y := 4;
!      end Init_Constants;
  
!      with Constants;
!      package Calc is
!         Z : Integer := Constants.X + Constants.Y;
!      end Calc;
  
!      with Calc;
!      with Text_IO; use Text_IO;
!      procedure Main is
!      begin
!         Put_Line (Calc.Z'Img);
!      end Main;
  
! In this example, there is more than one valid order of elaboration. For
! example both the following are correct orders::
  
!      Init_Constants spec
!      Constants spec
!      Calc spec
!      Init_Constants body
!      Main body
  
! and
  
! ::
  
!     Init_Constants spec
!     Constants spec
!     Init_Constants body
!     Calc spec
!     Main body
  
! There is no language rule to prefer one or the other, both are correct
! from an order of elaboration point of view. But the programmatic effects
! of the two orders are very different. In the first, the elaboration routine
! of `Calc` initializes `Z` to zero, and then the main program
! runs with this value of zero. But in the second order, the elaboration
! routine of `Calc` runs after the body of Init_Constants has set
! `X` and `Y` and thus `Z` is set to 7 before `Main` runs.
  
! One could perhaps by applying pretty clever non-artificial intelligence
! to the situation guess that it is more likely that the second order of
! elaboration is the one desired, but there is no formal linguistic reason
! to prefer one over the other. In fact in this particular case, GNAT will
! prefer the second order, because of the rule that bodies are elaborated
! as soon as possible, but it's just luck that this is what was wanted
! (if indeed the second order was preferred).
  
! If the program cares about the order of elaboration routines in a case like
! this, it is important to specify the order required. In this particular
! case, that could have been achieved by adding to the spec of Calc:
  
! .. code-block:: ada
  
!      pragma Elaborate_All (Constants);
  
! which requires that the body (if any) and spec of `Constants`,
! as well as the body and spec of any unit |withed| by
! `Constants` be elaborated before `Calc` is elaborated.
  
! Clearly no automatic method can always guess which alternative you require,
! and if you are working with legacy code that had constraints of this kind
! which were not properly specified by adding `Elaborate` or
! `Elaborate_All` pragmas, then indeed it is possible that two different
! compilers can choose different orders.
  
! However, GNAT does attempt to diagnose the common situation where there
! are uninitialized variables in the visible part of a package spec, and the
! corresponding package body has an elaboration block that directly or
! indirectly initializes one or more of these variables. This is the situation
! in which a pragma Elaborate_Body is usually desirable, and GNAT will generate
! a warning that suggests this addition if it detects this situation.
  
! The `gnatbind` *-p* switch may be useful in smoking
! out problems. This switch causes bodies to be elaborated as late as possible
! instead of as early as possible. In the example above, it would have forced
! the choice of the first elaboration order. If you get different results
! when using this switch, and particularly if one set of results is right,
! and one is wrong as far as you are concerned, it shows that you have some
! missing `Elaborate` pragmas. For the example above, we have the
! following output:
  
! .. code-block:: sh
  
!      $ gnatmake -f -q main
!      $ main
!       7
!      $ gnatmake -f -q main -bargs -p
!      $ main
!       0
  
! It is of course quite unlikely that both these results are correct, so
! it is up to you in a case like this to investigate the source of the
! difference, by looking at the two elaboration orders that are chosen,
! and figuring out which is correct, and then adding the necessary
! `Elaborate` or `Elaborate_All` pragmas to ensure the desired order.
  
  
! .. _Determining_the_Chosen_Elaboration_Order:
  
! Determining the Chosen Elaboration Order
! ========================================
  
! To see the elaboration order that the binder chooses, you can look at
! the last part of the file:`b~xxx.adb` binder output file. Here is an example::
  
!      System.Soft_Links'Elab_Body;
!      E14 := True;
!      System.Secondary_Stack'Elab_Body;
!      E18 := True;
!      System.Exception_Table'Elab_Body;
!      E24 := True;
!      Ada.Io_Exceptions'Elab_Spec;
!      E67 := True;
!      Ada.Tags'Elab_Spec;
!      Ada.Streams'Elab_Spec;
!      E43 := True;
!      Interfaces.C'Elab_Spec;
!      E69 := True;
!      System.Finalization_Root'Elab_Spec;
!      E60 := True;
!      System.Os_Lib'Elab_Body;
!      E71 := True;
!      System.Finalization_Implementation'Elab_Spec;
!      System.Finalization_Implementation'Elab_Body;
!      E62 := True;
!      Ada.Finalization'Elab_Spec;
!      E58 := True;
!      Ada.Finalization.List_Controller'Elab_Spec;
!      E76 := True;
!      System.File_Control_Block'Elab_Spec;
!      E74 := True;
!      System.File_Io'Elab_Body;
!      E56 := True;
!      Ada.Tags'Elab_Body;
!      E45 := True;
!      Ada.Text_Io'Elab_Spec;
!      Ada.Text_Io'Elab_Body;
!      E07 := True;
  
! Here Elab_Spec elaborates the spec
! and Elab_Body elaborates the body. The assignments to the :samp:`E{xx}` flags
! flag that the corresponding body is now elaborated.
  
! You can also ask the binder to generate a more
! readable list of the elaboration order using the
! `-l` switch when invoking the binder. Here is
! an example of the output generated by this switch::
  
!      ada (spec)
!      interfaces (spec)
!      system (spec)
!      system.case_util (spec)
!      system.case_util (body)
!      system.concat_2 (spec)
!      system.concat_2 (body)
!      system.concat_3 (spec)
!      system.concat_3 (body)
!      system.htable (spec)
!      system.parameters (spec)
!      system.parameters (body)
!      system.crtl (spec)
!      interfaces.c_streams (spec)
!      interfaces.c_streams (body)
!      system.restrictions (spec)
!      system.restrictions (body)
!      system.standard_library (spec)
!      system.exceptions (spec)
!      system.exceptions (body)
!      system.storage_elements (spec)
!      system.storage_elements (body)
!      system.secondary_stack (spec)
!      system.stack_checking (spec)
!      system.stack_checking (body)
!      system.string_hash (spec)
!      system.string_hash (body)
!      system.htable (body)
!      system.strings (spec)
!      system.strings (body)
!      system.traceback (spec)
!      system.traceback (body)
!      system.traceback_entries (spec)
!      system.traceback_entries (body)
!      ada.exceptions (spec)
!      ada.exceptions.last_chance_handler (spec)
!      system.soft_links (spec)
!      system.soft_links (body)
!      ada.exceptions.last_chance_handler (body)
!      system.secondary_stack (body)
!      system.exception_table (spec)
!      system.exception_table (body)
!      ada.io_exceptions (spec)
!      ada.tags (spec)
!      ada.streams (spec)
!      interfaces.c (spec)
!      interfaces.c (body)
!      system.finalization_root (spec)
!      system.finalization_root (body)
!      system.memory (spec)
!      system.memory (body)
!      system.standard_library (body)
!      system.os_lib (spec)
!      system.os_lib (body)
!      system.unsigned_types (spec)
!      system.stream_attributes (spec)
!      system.stream_attributes (body)
!      system.finalization_implementation (spec)
!      system.finalization_implementation (body)
!      ada.finalization (spec)
!      ada.finalization (body)
!      ada.finalization.list_controller (spec)
!      ada.finalization.list_controller (body)
!      system.file_control_block (spec)
!      system.file_io (spec)
!      system.file_io (body)
!      system.val_uns (spec)
!      system.val_util (spec)
!      system.val_util (body)
!      system.val_uns (body)
!      system.wch_con (spec)
!      system.wch_con (body)
!      system.wch_cnv (spec)
!      system.wch_jis (spec)
!      system.wch_jis (body)
!      system.wch_cnv (body)
!      system.wch_stw (spec)
!      system.wch_stw (body)
!      ada.tags (body)
!      ada.exceptions (body)
!      ada.text_io (spec)
!      ada.text_io (body)
!      text_io (spec)
!      gdbstr (body)
--- 17,1777 ----
  .. index:: Order of elaboration
  .. index:: Elaboration control
  
! This appendix describes the handling of elaboration code in Ada and GNAT, and
! discusses how the order of elaboration of program units can be controlled in
! GNAT, either automatically or with explicit programming features.
  
  .. _Elaboration_Code:
  
  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:
  
! * All partitions of an Ada program are executed in parallel with one another,
!   possibly in a separate address space, and possibly on a separate computer.
  
! * The execution of a partition involves running the environment task for that
!   partition.
  
! * 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**.
  
! * The environment task executes the Ada program (if available) for that
!   partition.
  
! In addition to the Ada terminology, this appendix defines the following terms:
  
! * *Scenario*
  
!   A construct that is elaborated or executed by elaboration code is referred to
!   as an *elaboration scenario* or simply a **scenario**. GNAT recognizes the
!   following scenarios:
  
!   - ``'Access`` of entries, operators, and subprograms
  
!   - Activation of tasks
  
!   - Calls to entries, operators, and subprograms
  
!   - Instantiations of generic templates
  
! * *Target*
  
!   A construct elaborated by a scenario is referred to as *elaboration target*
!   or simply **target**. GNAT recognizes the following targets:
  
!   - For ``'Access`` of entries, operators, and subprograms, the target is the
!     entry, operator, or subprogram being aliased.
  
!   - For activation of tasks, the target is the task body
  
!   - For calls to entries, operators, and subprograms, the target is the entry,
!     operator, or subprogram being invoked.
  
!   - For instantiations of generic templates, the target is the generic template
!     being instantiated.
  
! Elaboration code may appear in two distinct contexts:
  
! * *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
!   between.
  
!   ::
  
!      with Server;
!      package Client is
!         procedure Proc;
  
!         package Nested is
!            Val : ... := Server.Func;
!         end Nested;
!      end Client;
  
!   In the example above, the call to ``Server.Func`` is an elaboration scenario
!   because it appears at the library level of package ``Client``. Note that the
!   declaration of package ``Nested`` is ignored according to the definition
!   given above. As a result, the call to ``Server.Func`` will be executed when
!   the spec of unit ``Client`` is elaborated.
  
! * *Package body statements*
  
!   A scenario appears within the statement sequence of a package body when it is
!   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
!         begin
!            ...
!         end Proc;
!      begin
!         Proc;
!      end Client;
! 
!   In the example above, the call to ``Proc`` is an elaboration scenario because
!   it appears within the statement sequence of package body ``Client``. As a
!   result, the call to ``Proc`` will be executed when the body of ``Client`` is
!   elaborated.
! 
! .. _Elaboration_Order:
! 
! Elaboration Order
! =================
! 
! 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.
  
  ::
  
!    package body Client is
!       Result : ... := Server.Func;
  
!       procedure Proc is
!          package Inst is new Server.Gen;
!       begin
!          Inst.Eval (Result);
!       end Proc;
!    begin
!       Proc;
!    end Client;
! 
! In the example above, the elaboration order within package body ``Client`` is
! as follows:
! 
! 1. The object declaration of ``Result`` is elaborated.
! 
!    * Function ``Server.Func`` is invoked.
! 
! 2. The subprogram body of ``Proc`` is elaborated.
! 
! 3. Procedure ``Proc`` is invoked.
! 
!    * Generic unit ``Server.Gen`` is instantiated as ``Inst``.
! 
!    * Instance ``Inst`` is elaborated.
! 
!    * Procedure ``Inst.Eval`` is invoked.
! 
! The elaboration order of all units within a partition depends on the following
! factors:
! 
! * |withed| units
! 
! * purity of units
! 
! * preelaborability of units
! 
! * presence of elaboration control pragmas
! 
! 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);
  
!       function Func (Index : Integer) return Integer is
!       begin
!          return Results (Index);
!       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;
! 
! The following elaboration order exhibits a fundamental problem referred to as
! *access-before-elaboration* or simply **ABE**.
! 
! ::
! 
!    spec of Server
!    spec of Client
!    body of Server
!    body of Main
! 
! The elaboration of ``Server``'s spec materializes function ``Func``, making it
! callable. The elaboration of ``Client``'s spec elaborates the declaration of
! ``Val``. This invokes function ``Server.Func``, however the body of
! ``Server.Func`` has not been elaborated yet because ``Server``'s body comes
! after ``Client``'s spec in the elaboration order. As a result, the value of
! constant ``Val`` is now undefined.
! 
! Without any guarantees from the language, an undetected ABE problem may hinder
! proper initialization of data, which in turn may lead to undefined behavior at
! run time. To prevent such ABE problems, Ada employs dynamic checks in the same
! vein as index or null exclusion checks. A failed ABE check raises exception
! ``Program_Error``.
! 
! The following elaboration order avoids the ABE problem and the program can be
! successfully elaborated.
! 
! ::
! 
!    spec of Server
!    body of Server
!    spec of Client
!    body of Main
! 
! 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, and elaboration control pragmas. Ideally an order which
! avoids ABE problems should be chosen, however a compiler may not always find
! such an order due to complications with respect to control and data flow.
  
  .. _Checking_the_Elaboration_Order:
  
  Checking the Elaboration Order
  ==============================
  
! To avoid placing the entire elaboration order burden on the programmer, Ada 
! provides three lines of defense:
  
! * *Static semantics*
  
!   Static semantic rules restrict the possible choice of elaboration order. For
!   instance, if unit Client |withs| 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.
  
! * *Dynamic semantics*
  
!   Dynamic checks are performed at run time, to ensure that a target is
!   elaborated prior to a scenario that executes it, thus avoiding ABE problems.
!   A failed run-time check raises exception ``Program_Error``. The following
!   restrictions apply:
  
!   - *Restrictions on calls*
  
!     An entry, operator, or subprogram can be called from elaboration code only
!     when the corresponding body has been elaborated.
  
!   - *Restrictions on instantiations*
  
!     A generic unit can be instantiated by elaboration code only when the
!     corresponding body has been elaborated.
  
!   - *Restrictions on task activation*
  
!     A task can be activated by elaboration code only when the body of the
!     associated task type has been elaborated.
  
!   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
!   execution of the scenario that invokes, instantiates, or activates the
!   target.*
  
! * *Elaboration control*
  
!   Pragmas are provided for the programmer to specify the desired elaboration
!   order.
  
! .. _Controlling_the_Elaboration_Order_in_Ada:
  
! Controlling the Elaboration Order in Ada
! ========================================
  
! Ada provides several idioms and pragmas to aid the programmer with specifying
! the desired elaboration order and avoiding ABE problems altogether.
  
! * *Packages without a body*
  
!   A library package which does not require a completing body does not suffer
!   from ABE problems.
  
!   ::
  
!      package Pack is
!         generic
!            type Element is private;
!         package Containers is
!            type Element_Array is array (1 .. 10) of Element;
!         end Containers;
!      end Pack;
  
!   In the example above, package ``Pack`` does not require a body because it
!   does not contain any constructs which require completion in a body. As a
!   result, generic ``Pack.Containers`` can be instantiated without encountering
!   any ABE problems.
  
  .. index:: pragma Pure
  
  * *pragma Pure*
  
!   Pragma ``Pure`` places sufficient restrictions on a unit to guarantee that no
!   scenario within the unit can result in an ABE problem.
  
  .. index:: pragma Preelaborate
  
  * *pragma Preelaborate*
  
!   Pragma ``Preelaborate`` is slightly less restrictive than pragma ``Pure``,
!   but still strong enough to prevent ABE problems within a unit.
  
  .. index:: pragma Elaborate_Body
  
  * *pragma Elaborate_Body*
  
!   Pragma ``Elaborate_Body`` requires that the body of a unit is elaborated
!   immediately after its spec. This restriction guarantees that no client
!   scenario can execute 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;
  
!         function Func return Integer;
!      end Server;
  
!   ::
  
!      package body Server is
!         function Func return Integer is
!         begin
!            ...
!         end Func;
!      end Server;
  
!   ::
  
!      with Server;
!      package Client is
!         Val : constant Integer := Server.Func;
!      end Client;
  
!   In the example above, pragma ``Elaborate_Body`` guarantees the following
!   elaboration order:
  
+   ::
  
!      spec of Server
!      body of Server
!      spec of Client
  
!   because the spec of ``Server`` must be elaborated prior to ``Client`` by
!   virtue of the |with| clause, and in addition the body of ``Server`` must be
!   elaborated immediately after the spec of ``Server``.
  
!   Removing pragma ``Elaborate_Body`` could result in the following incorrect
!   elaboration order:
  
!   ::
  
+      spec of Server
+      spec of Client
+      body of Server
  
!   where ``Client`` invokes ``Server.Func``, but the body of ``Server.Func`` has
!   not been elaborated yet.
  
! The pragmas outlined above allow a server unit to guarantee safe elaboration
! use by client units. Thus it is a good rule to mark units as ``Pure`` or
! ``Preelaborate``, and if this is not possible, mark them as ``Elaborate_Body``.
  
! There are however situations where ``Pure``, ``Preelaborate``, and
! ``Elaborate_Body`` are not applicable. Ada provides another set of pragmas for
! use by client units to help ensure the elaboration safety of server units they
! depend on.
  
! .. index:: pragma Elaborate (Unit)
  
! * *pragma Elaborate (Unit)*
  
!   Pragma ``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.
  
!   ::
  
!      package Server is
!         function Func return Integer;
!      end Server;
  
!   ::
  
!      package body Server is
!         function Func return Integer is
!         begin
!            ...
!         end Func;
!      end Server;
  
!   ::
  
!      with Server;
!      pragma Elaborate (Server);
!      package Client is
!         Val : constant Integer := Server.Func;
!      end Client;
  
!   In the example above, pragma ``Elaborate`` guarantees the following
!   elaboration order:
  
!   ::
  
!      spec of Server
!      body of Server
!      spec of Client
  
!   Removing pragma ``Elaborate`` could result in the following incorrect
!   elaboration order:
  
!   ::
  
!      spec of Server
!      spec of Client
!      body of Server
  
+   where ``Client`` invokes ``Server.Func``, but the body of ``Server.Func``
+   has not been elaborated yet.
  
! .. index:: pragma Elaborate_All (Unit)
  
! * *pragma Elaborate_All (Unit)*
  
!   Pragma ``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
!   |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
!         begin
!            ...;
!         end Factorial;
!      end Math;
  
!   ::
  
!      package Computer is
!         type Operation_Kind is (None, Op_Factorial);
  
!         function Compute
!           (Val : Natural;
!            Op  : Operation_Kind) return Natural;
!      end Computer;
  
+   ::
  
!      with Math;
!      package body Computer is
!         function Compute
!           (Val : Natural;
!            Op  : Operation_Kind) return Natural
!         is
!            if Op = Op_Factorial then
!               return Math.Factorial (Val);
!            end if;
  
!            return 0;
!         end Compute;
!      end Computer;
  
!   ::
  
!      with Computer;
!      pragma Elaborate_All (Computer);
!      package Client is
!         Val : constant Natural :=
!                 Computer.Compute (123, Computer.Op_Factorial);
!      end Client;
  
!   In the example above, pragma ``Elaborate_All`` can result in the following
!   elaboration order:
  
!   ::
  
!      spec of Math
!      body of Math
!      spec of Computer
!      body of Computer
!      spec of Client
  
!   Note that there are several allowable suborders for the specs and bodies of
!   ``Math`` and ``Computer``, but the point is that these specs and bodies will
!   be elaborated prior to ``Client``.
  
!   Removing pragma ``Elaborate_All`` could result in the following incorrect
!   elaboration order
  
!   ::
  
!      spec of Math
!      spec of Computer
!      body of Computer
!      spec of Client
!      body of Math
  
!   where ``Client`` invokes ``Computer.Compute``, which in turn invokes
!   ``Math.Factorial``, but the body of ``Math.Factorial`` has not been
!   elaborated yet.
  
! 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:
  
+ * *No elaboration order exists*
  
!   In this case a compiler must diagnose the situation, and refuse to build an
!   executable program.
  
! * *One or more incorrect elaboration orders exist*
  
!   In this case a compiler can build an executable program, but
!   ``Program_Error`` will be raised when the program is run.
  
! * *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
!   program may or may not raise ``Program_Error`` when it is run. This is the
!   worst possible state because the program may fail on another compiler, or
!   even another version of the same compiler.
  
! * *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
!   rules, or may be the result of good program architecture.
  
! Note that one additional advantage of using ``Elaborate`` and ``Elaborate_All``
! is that the program continues to stay in the last state (one or more correct
! orders exist) even if maintenance changes the bodies of targets.
  
! .. _Controlling_the_Elaboration_Order_in_GNAT:
  
+ Controlling the Elaboration Order in GNAT
+ =========================================
  
! In addition to Ada semantics and rules synthesized from them, GNAT offers
! three elaboration models to aid the programmer with specifying the correct
! elaboration order and to diagnose elaboration problems.
  
! .. index:: Dynamic elaboration model
  
! * *Dynamic elaboration model*
  
!   This is the most permissive of the three elaboration models. When the
!   dynamic model is in effect, GNAT assumes that all code within all units in
!   a partition is elaboration code. GNAT performs very few diagnostics and
!   generates run-time checks to verify the elaboration order of a program. This
!   behavior is identical to that specified by the Ada Reference Manual. The
!   dynamic model is enabled with compiler switch :switch:`-gnatE`.
  
! .. index:: Static elaboration model
  
! * *Static elaboration model*
  
!   This is the middle ground of the three models. When the static model is in
!   effect, GNAT performs extensive diagnostics on a unit-by-unit basis for all
!   scenarios that elaborate or execute internal targets. GNAT also generates
!   run-time checks for all external targets and for all scenarios that may
!   exhibit ABE problems. Finally, GNAT installs implicit ``Elaborate`` and
!   ``Elaborate_All`` pragmas for server units based on the dependencies of
!   client units. The static model is the default model in GNAT.
  
! .. index:: SPARK elaboration model
! 
! * *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 in effect only when a scenario and a target reside in a
!   region subject to SPARK_Mode On, otherwise the dynamic or static model is in
!   effect.
! 
! .. index:: Legacy elaboration model
! 
! * *Legacy elaboration model*
! 
!   In addition to the three elaboration models outlined above, GNAT provides the
!   elaboration model of pre-18.x versions referred to as `legacy elaboration
!   model`. The legacy elaboration model is enabled with compiler switch
!   :switch:`-gnatH`.
! 
! .. index:: Relaxed elaboration mode
! 
! The dynamic, legacy, and static models can be relaxed using compiler switch
! :switch:`-gnatJ`, making them more permissive. Note that in this mode, GNAT
! may not diagnose certain elaboration issues or install run-time checks.
! 
! .. _Common_Elaboration_Model_Traits":
! 
! Common Elaboration-model Traits
! ===============================
! 
! All three GNAT models are able to detect elaboration problems related to
! dispatching calls and a particular kind of ABE referred to as *guaranteed ABE*.
! 
! * *Dispatching calls*
! 
!   GNAT installs run-time checks for each primitive subprogram of each tagged
!   type defined in a partition on the assumption that a dispatching call
!   invoked at elaboration time will execute one of these primitives. As a
!   result, a dispatching call that executes a primitive whose body has not
!   been elaborated yet will raise exception ``Program_Error`` at run time. The
!   checks can be suppressed using pragma ``Suppress (Elaboration_Check)``.
! 
! * *Guaranteed ABE*
! 
!   A guaranteed ABE arises when the body of a target is not elaborated early
!   enough, and causes all scenarios that directly execute the target to fail.
! 
!   ::
! 
!      package body Guaranteed_ABE is
!         function ABE return Integer;
! 
!         Val : constant Integer := ABE;
! 
!         function ABE return Integer is
!         begin
!            ...
!         end ABE;
!      end Guaranteed_ABE;
! 
!   In the example above, the elaboration of ``Guaranteed_ABE``'s body elaborates
!   the declaration of ``Val``. This invokes function ``ABE``, however the body
!   of ``ABE`` has not been elaborated yet. GNAT emits similar diagnostics in all
!   three models:
! 
!   ::
! 
!       1. package body Guaranteed_ABE is
!       2.    function ABE return Integer;
!       3.
!       4.    Val : constant Integer := ABE;
!                                       |
!          >>> warning: cannot call "ABE" before body seen
!          >>> warning: Program_Error will be raised at run time
! 
!       5.
!       6.    function ABE return Integer is
!       7.    begin
!       8.       ...
!       9.    end ABE;
!       10. end Guaranteed_ABE;
! 
! Note that GNAT emits warnings rather than hard errors whenever it encounters an
! elaboration problem. This is because the elaboration model in effect may be too
! conservative, or a particular scenario may not be elaborated or executed due to
! data and control flow. The warnings can be suppressed selectively with ``pragma
! Warnigns (Off)`` or globally with compiler switch :switch:`-gnatwL`.
! 
! .. _Dynamic_Elaboration_Model_in_GNAT:
! 
! Dynamic Elaboration Model in GNAT
! =================================
! 
! The dynamic model assumes that all code within all units in a partition is
! elaboration code. As a result, run-time checks are installed for each scenario
! regardless of whether the target is internal or external. The checks can be
! suppressed using pragma ``Suppress (Elaboration_Check)``. This behavior is
! identical to that specified by the Ada Reference Manual. The following example
! showcases run-time checks installed by GNAT to verify the elaboration state of
! package ``Dynamic_Model``.
! 
! ::
! 
!    with Server;
!    package body Dynamic_Model is
!       procedure API is
        begin
           ...
!       end API;
  
!       <check that the body of Server.Gen is elaborated>
!       package Inst is new Server.Gen;
  
!       T : Server.Task_Type;
  
!    begin
!       <check that the body of Server.Task_Type is elaborated>
  
!       <check that the body of Server.Proc is elaborated>
!       Server.Proc;
!    end Dynamic_Model;
  
! The checks verify that the body of a target has been successfully elaborated
! before a scenario activates, calls, or instantiates a target.
  
! Note that no scenario within package ``Dynamic_Model`` calls procedure ``API``.
! In fact, procedure ``API`` may not be invoked by elaboration code within the
! partition, however the dynamic model assumes that this can happen.
  
! The dynamic model emits very few diagnostics, but can make suggestions on
! missing ``Elaborate`` and ``Elaborate_All`` pragmas for library-level
! scenarios. This information is available when compiler switch :switch:`-gnatel`
! is in effect.
  
! ::
  
!    1. with Server;
!    2. package body Dynamic_Model is
!    3.    Val : constant Integer := Server.Func;
!                                          |
!       >>> info: call to "Func" during elaboration
!       >>> info: missing pragma "Elaborate_All" for unit "Server"
  
!    4. end Dynamic_Model;
  
! .. _Static_Elaboration_Model_in_GNAT:
  
! Static Elaboration Model in GNAT
! ================================
  
+ In contrast to the dynamic model, the static model is more precise in its
+ analysis of elaboration code. The model makes a clear distinction between
+ internal and external targets, and resorts to different diagnostics and
+ run-time checks based on the nature of the target.
  
! * *Internal targets*
  
!   The static model performs extensive diagnostics on scenarios which elaborate
!   or execute internal targets. The warnings resulting from these diagnostics
!   are enabled by default, but can be suppressed selectively with ``pragma
!   Warnings (Off)`` or globally with compiler switch :switch:`-gnatwL`.
  
!   ::
  
!       1. package body Static_Model is
!       2.    generic
!       3.       with function Func return Integer;
!       4.    package Gen is
!       5.       Val : constant Integer := Func;
!       6.    end Gen;
!       7.
!       8.    function ABE return Integer;
!       9.
!      10.    function Cause_ABE return Boolean is
!      11.       package Inst is new Gen (ABE);
!                |
!          >>> warning: in instantiation at line 5
!          >>> warning: cannot call "ABE" before body seen
!          >>> warning: Program_Error may be raised at run time
!          >>> warning:   body of unit "Static_Model" elaborated
!          >>> warning:   function "Cause_ABE" called at line 16
!          >>> warning:   function "ABE" called at line 5, instance at line 11
  
!      12.    begin
!      13.       ...
!      14.    end Cause_ABE;
!      15.
!      16.    Val : constant Boolean := Cause_ABE;
!      17.
!      18.    function ABE return Integer is
!      19.    begin
!      20.       ...
!      21.    end ABE;
!      22. end Static_Model;
  
!   The example above illustrates an ABE problem within package ``Static_Model``,
!   which is hidden by several layers of indirection. The elaboration of package
!   body ``Static_Model`` elaborates the declaration of ``Val``. This invokes
!   function ``Cause_ABE``, which instantiates generic unit ``Gen`` as ``Inst``.
!   The elaboration of ``Inst`` invokes function ``ABE``, however the body of
!   ``ABE`` has not been elaborated yet.
  
! * *External targets*
  
!   The static model installs run-time checks to verify the elaboration status
!   of server targets only when the scenario that elaborates or executes that
!   target is part of the elaboration code of the client unit. The checks can be
!   suppressed using pragma ``Suppress (Elaboration_Check)``.
  
!   ::
  
!      with Server;
!      package body Static_Model is
!         generic
!            with function Func return Integer;
!         package Gen is
!            Val : constant Integer := Func;
!         end Gen;
  
!         function Call_Func return Boolean is
!            <check that the body of Server.Func is elaborated>
!            package Inst is new Gen (Server.Func);
!         begin
!            ...
!         end Call_Func;
  
!         Val : constant Boolean := Call_Func;
!      end Static_Model;
  
!   In the example above, the elaboration of package body ``Static_Model``
!   elaborates the declaration of ``Val``. This invokes function ``Call_Func``,
!   which instantiates generic unit ``Gen`` as ``Inst``. The elaboration of
!   ``Inst`` invokes function ``Server.Func``. Since ``Server.Func`` is an
!   external target, GNAT installs a run-time check to verify that its body has
!   been elaborated.
  
!   In addition to checks, the static model installs implicit ``Elaborate`` and
!   ``Elaborate_All`` pragmas to guarantee safe elaboration use of server units.
!   This information is available when compiler switch :switch:`-gnatel` is in
!   effect.
  
!   ::
  
!       1. with Server;
!       2. package body Static_Model is
!       3.    generic
!       4.       with function Func return Integer;
!       5.    package Gen is
!       6.       Val : constant Integer := Func;
!       7.    end Gen;
!       8.
!       9.    function Call_Func return Boolean is
!      10.       package Inst is new Gen (Server.Func);
!                |
!          >>> info: instantiation of "Gen" during elaboration
!          >>> info: in instantiation at line 6
!          >>> info: call to "Func" during elaboration
!          >>> info: in instantiation at line 6
!          >>> info: implicit pragma "Elaborate_All" generated for unit "Server"
!          >>> info:   body of unit "Static_Model" elaborated
!          >>> info:   function "Call_Func" called at line 15
!          >>> info:   function "Func" called at line 6, instance at line 10
  
!      11.    begin
!      12.       ...
!      13.    end Call_Func;
!      14.
!      15.    Val : constant Boolean := Call_Func;
!                                       |
!          >>> info: call to "Call_Func" during elaboration
  
!      16. end Static_Model;
  
!   In the example above, the elaboration of package body ``Static_Model``
!   elaborates the declaration of ``Val``. This invokes function ``Call_Func``,
!   which instantiates generic unit ``Gen`` as ``Inst``. The elaboration of
!   ``Inst`` invokes function ``Server.Func``. Since ``Server.Func`` is an
!   external target, GNAT installs an implicit ``Elaborate_All`` pragma for unit
!   ``Server``. The pragma guarantees that both the spec and body of ``Server``,
!   along with any additional dependencies that ``Server`` may require, are
!   elaborated prior to the body of ``Static_Model``.
  
! .. _SPARK_Elaboration_Model_in_GNAT:
  
! SPARK Elaboration Model in GNAT
! ===============================
  
! The SPARK model is identical to the static model in its handling of internal
! targets. The SPARK model, however, requires explicit ``Elaborate`` or
! ``Elaborate_All`` pragmas to be present in the program when a target is
! external, and compiler switch :switch:`-gnatd.v` is in effect.
  
+ ::
  
!    1. with Server;
!    2. package body SPARK_Model with SPARK_Mode is
!    3.    Val : constant Integer := Server.Func;
!                                          |
!       >>> call to "Func" during elaboration in SPARK
!       >>> unit "SPARK_Model" requires pragma "Elaborate_All" for "Server"
!       >>>   body of unit "SPARK_Model" elaborated
!       >>>   function "Func" called at line 3
  
!    4. end SPARK_Model;
  
! Legacy Elaboration Model in GNAT
! ================================
  
! The legacy elaboration model is provided for compatibility with code bases
! developed with pre-18.x versions of GNAT. It is similar in functionality to
! the dynamic and static models of post-18.x version of GNAT, but may differ
! in terms of diagnostics and run-time checks. The legacy elaboration model is
! enabled with compiler switch :switch:`-gnatH`.
  
! .. _Mixing_Elaboration_Models:
  
! Mixing Elaboration Models
! =========================
  
! It is possible to mix units compiled with a different elaboration model,
! however the following rules must be observed:
  
! * A client unit compiled with the dynamic model can only |with| a server unit
!   that meets at least one of the following criteria:
  
+   - The server unit is compiled with the dynamic model.
  
!   - The server unit is a GNAT implementation unit from the Ada, GNAT,
!     Interfaces, or System hierarchies.
  
!   - The server unit has pragma ``Pure`` or ``Preelaborate``.
  
!   - The client unit has an explicit ``Elaborate_All`` pragma for the server
!     unit.
  
! These rules ensure that elaboration checks are not omitted. If the rules are
! violated, the binder emits a warning:
  
! ::
  
!    warning: "x.ads" has dynamic elaboration checks and with's
!    warning:   "y.ads" which has static elaboration checks
  
! The warnings can be suppressed by binder switch :switch:`-ws`.
  
! .. _Elaboration_Circularities:
  
! Elaboration Circularities
! =========================
  
! If the binder cannot find an acceptable elaboration order, it outputs detailed
! diagnostics describing an **elaboration circularity**.
  
! ::
  
!    package Server is
!       function Func return Integer;
!    end Server;
  
! ::
  
!    with Client;
!    package body Server is
!       function Func return Integer is
!       begin
!          ...
!       end Func;
!    end Server;
  
! ::
  
!    with Server;
!    package Client is
!       Val : constant Integer := Server.Func;
!    end Client;
  
! ::
  
!    with Client;
!    procedure Main is begin null; end Main;
  
! ::
  
!    error: elaboration circularity detected
!    info:    "server (body)" must be elaborated before "client (spec)"
!    info:       reason: implicit Elaborate_All in unit "client (spec)"
!    info:       recompile "client (spec)" with -gnatel for full details
!    info:          "server (body)"
!    info:             must be elaborated along with its spec:
!    info:          "server (spec)"
!    info:             which is withed by:
!    info:          "client (spec)"
!    info:    "client (spec)" must be elaborated before "server (body)"
!    info:       reason: with clause
  
! In the example above, ``Client`` must be elaborated prior to ``Main`` by virtue
! of a |with| clause. The elaboration of ``Client`` invokes ``Server.Func``, and
! static model generates an implicit ``Elaborate_All`` pragma for ``Server``. The
! pragma implies that both the spec and body of ``Server``, along with any units
! they |with|, must be elaborated prior to ``Client``. However, ``Server``'s body
! |withs| ``Client``, implying that ``Client`` must be elaborated prior to
! ``Server``. The end result is that ``Client`` must be elaborated prior to
! ``Client``, and this leads to a circularity.
  
! .. _Resolving_Elaboration_Circularities:
  
! Resolving Elaboration Circularities
! ===================================
  
! When faced with an elaboration circularity, a programmer has several options
! available.
  
! * *Fix the program*
  
!   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.
  
! * *Switch to more permissive elaboration model*
  
!   If the compilation was performed using the static model, enable the dynamic
!   model with compiler switch :switch:`-gnatE`. GNAT will no longer generate
!   implicit ``Elaborate`` and ``Elaborate_All`` pragmas, resulting in a behavior
!   identical to that specified by the Ada Reference Manual. The binder will
!   generate an executable program that may or may not raise ``Program_Error``,
!   and it is the programmer's responsibility to ensure that it does not raise
!   ``Program_Error``.
  
!   If the compilation was performed using a post-18.x version of GNAT, consider
!   using the legacy elaboration model, in the following order:
  
+   - Use the legacy static elaboration model, with compiler switch
+     :switch:`-gnatH`.
  
!   - Use the legacy dynamic elaboration model, with compiler switches
!     :switch:`-gnatH` :switch:`-gnatE`.
  
!   - Use the relaxed legacy static elaboration model, with compiler switches
!     :switch:`-gnatH` :switch:`-gnatJ`.
  
!   - Use the relaxed legacy dynamic elaboration model, with compiler switches
!     :switch:`-gnatH` :switch:`-gnatJ` :switch:`-gnatE`.
  
! * *Suppress all elaboration checks*
  
+   The drawback of run-time checks is that they generate overhead at run time,
+   both in space and time. If the programmer is absolutely sure that a program
+   will not raise an elaboration-related ``Program_Error``, then using the
+   pragma ``Suppress (Elaboration_Check)`` globally (as a configuration pragma)
+   will eliminate all run-time checks.
  
! * *Suppress elaboration checks selectively*
  
!   If a scenario cannot possibly lead to an elaboration ``Program_Error``,
!   and the binder nevertheless complains about implicit ``Elaborate`` and
!   ``Elaborate_All`` pragmas that lead to elaboration circularities, it
!   is possible to suppress the generation of implicit ``Elaborate`` and
!   ``Elaborate_All`` pragmas, as well as run-time checks. Clearly this can
!   be unsafe, and it is the responsibility of the programmer to make sure
!   that the resulting program has no elaboration anomalies. Pragma
!   ``Suppress (Elaboration_Check)`` can be used with different levels of
!   granularity to achieve these effects.
  
!   - *Target suppression*
  
!     When the pragma is placed in a declarative part, without a second argument
!     naming an entity, it will suppress implicit ``Elaborate`` and
!     ``Elaborate_All`` pragma generation, as well as run-time checks, on all
!     targets within the region.
  
!     ::
  
!        package Range_Suppress is
!           pragma Suppress (Elaboration_Check);
  
!           function Func return Integer;
  
!           generic
!           procedure Gen;
  
+           pragma Unsuppress (Elaboration_Check);
  
!           task type Tsk;
!        end Range_Suppress;
  
!     In the example above, a pair of Suppress/Unsuppress pragmas define a region
!     of suppression within package ``Range_Suppress``. As a result, no implicit
!     ``Elaborate`` and ``Elaborate_All`` pragmas, nor any run-time checks, will
!     be generated by callers of ``Func`` and instantiators of ``Gen``. Note that
!     task type ``Tsk`` is not within this region.
  
!     An alternative to the region-based suppression is to use multiple
!     ``Suppress`` pragmas with arguments naming specific entities for which
!     elaboration checks should be suppressed:
  
!     ::
  
!        package Range_Suppress is
!           function Func return Integer;
!           pragma Suppress (Elaboration_Check, Func);
  
!           generic
!           procedure Gen;
!           pragma Suppress (Elaboration_Check, Gen);
  
!           task type Tsk;
!        end Range_Suppress;
  
!   - *Scenario suppression*
  
!     When the pragma ``Suppress`` is placed in a declarative or statement
!     part, without an entity argument, it will suppress implicit ``Elaborate``
!     and ``Elaborate_All`` pragma generation, as well as run-time checks, on
!     all scenarios within the region.
  
!     ::
  
!        with Server;
!        package body Range_Suppress is
!           pragma Suppress (Elaboration_Check);
  
!           function Func return Integer is
!           begin
!              return Server.Func;
!           end Func;
  
!           procedure Gen is
!           begin
!              Server.Proc;
!           end Gen;
  
+           pragma Unsuppress (Elaboration_Check);
  
!           task body Tsk is
!           begin
!              Server.Proc;
!           end Tsk;
!        end Range_Suppress;
  
!     In the example above, a pair of Suppress/Unsuppress pragmas define a region
!     of suppression within package body ``Range_Suppress``. As a result, the
!     calls to ``Server.Func`` in ``Func`` and ``Server.Proc`` in ``Gen`` will
!     not generate any implicit ``Elaborate`` and ``Elaborate_All`` pragmas or
!     run-time checks.
  
! .. _Resolving_Task_Issues:
  
! Resolving Task Issues
! =====================
  
! The model of execution in Ada dictates that elaboration must first take place,
! and only then can the main program be started. Tasks which are activated during
! elaboration violate this model and may lead to serious concurrent problems at
! elaboration time.
  
! A task can be activated in two different ways:
  
! * The task is created by an allocator in which case it is activated immediately
!   after the allocator is evaluated.
  
! * The task is declared at the library level or within some nested master in
!   which case it is activated before starting execution of the statement
!   sequence of the master defining the task.
  
! Since the elaboration of a partition is performed by the environment task
! servicing that partition, any tasks activated during elaboration may be in
! a race with the environment task, and lead to unpredictable state and behavior.
! The static model seeks to avoid such interactions by assuming that all code in
! the task body is executed at elaboration time, if the task was activated by
! elaboration code.
  
! ::
  
!    package Decls is
!       task Lib_Task is
!          entry Start;
!       end Lib_Task;
  
+       type My_Int is new Integer;
  
!       function Ident (M : My_Int) return My_Int;
!    end Decls;
  
! ::
  
!    with Utils;
!    package body Decls is
!       task body Lib_Task is
!       begin
!          accept Start;
!          Utils.Put_Val (2);
!       end Lib_Task;
  
!       function Ident (M : My_Int) return My_Int is
!       begin
!          return M;
!       end Ident;
!    end Decls;
  
! ::
  
+    with Decls;
+    package Utils is
+       procedure Put_Val (Arg : Decls.My_Int);
+    end Utils;
  
! ::
  
!    with Ada.Text_IO; use Ada.Text_IO;
!    package body Utils is
!       procedure Put_Val (Arg : Decls.My_Int) is
!       begin
!          Put_Line (Arg'Img);
!       end Put_Val;
!    end Utils;
  
! ::
  
!    with Decls;
!    procedure Main is
!    begin
!       Decls.Lib_Task.Start;
!    end Main;
  
+ When the above example is compiled with the static model, an elaboration
+ circularity arises:
  
! ::
  
!    error: elaboration circularity detected
!    info:    "decls (body)" must be elaborated before "decls (body)"
!    info:       reason: implicit Elaborate_All in unit "decls (body)"
!    info:       recompile "decls (body)" with -gnatel for full details
!    info:          "decls (body)"
!    info:             must be elaborated along with its spec:
!    info:          "decls (spec)"
!    info:             which is withed by:
!    info:          "utils (spec)"
!    info:             which is withed by:
!    info:          "decls (body)"
  
! In the above example, ``Decls`` must be elaborated prior to ``Main`` by virtue
! of a with clause. The elaboration of ``Decls`` activates task ``Lib_Task``. The
! static model conservatibely assumes that all code within the body of
! ``Lib_Task`` is executed, and generates an implicit ``Elaborate_All`` pragma
! for ``Units`` due to the call to ``Utils.Put_Val``. The pragma implies that
! both the spec and body of ``Utils``, along with any units they |with|,
! must be elaborated prior to ``Decls``. However, ``Utils``'s spec |withs|
! ``Decls``, implying that ``Decls`` must be elaborated before ``Utils``. The end
! result is that ``Utils`` must be elaborated prior to ``Utils``, and this
! leads to a circularity.
  
! In reality, the example above will not exhibit an ABE problem at run time.
! When the body of task ``Lib_Task`` is activated, execution will wait for entry
! ``Start`` to be accepted, and the call to ``Utils.Put_Val`` will not take place
! at elaboration time. Task ``Lib_Task`` will resume its execution after the main
! program is executed because ``Main`` performs a rendezvous with
! ``Lib_Task.Start``, and at that point all units have already been elaborated.
! As a result, the static model may seem overly conservative, partly because it
! does not take control and data flow into account.
  
+ When faced with a task elaboration circularity, a programmer has several
+ options available:
  
! * *Use the dynamic model*
  
!   The dynamic model does not generate implicit ``Elaborate`` and
!   ``Elaborate_All`` pragmas. Instead, it will install checks prior to every
!   call in the example above, thus verifying the successful elaboration of
!   ``Utils.Put_Val`` in case the call to it takes place at elaboration time.
!   The dynamic model is enabled with compiler switch :switch:`-gnatE`.
  
! * *Isolate the tasks*
  
!   Relocating tasks in their own separate package could decouple them from
!   dependencies that would otherwise cause an elaboration circularity. The
!   example above can be rewritten as follows:
  
!   ::
  
+      package Decls1 is                --  new
+         task Lib_Task is
+            entry Start;
+         end Lib_Task;
+      end Decls1;
  
!   ::
  
!      with Utils;
!      package body Decls1 is           --  new
!         task body Lib_Task is
!         begin
!            accept Start;
!            Utils.Put_Val (2);
!         end Lib_Task;
!      end Decls1;
  
!   ::
  
!      package Decls2 is                --  new
!         type My_Int is new Integer;
!         function Ident (M : My_Int) return My_Int;
!      end Decls2;
  
!   ::
  
!      with Utils;
!      package body Decls2 is           --  new
!         function Ident (M : My_Int) return My_Int is
!         begin
!            return M;
!         end Ident;
!      end Decls2;
  
!   ::
  
!      with Decls2;
!      package Utils is
!         procedure Put_Val (Arg : Decls2.My_Int);
!      end Utils;
  
!   ::
  
!      with Ada.Text_IO; use Ada.Text_IO;
!      package body Utils is
!         procedure Put_Val (Arg : Decls2.My_Int) is
!         begin
!            Put_Line (Arg'Img);
!         end Put_Val;
!      end Utils;
  
!   ::
  
!      with Decls1;
!      procedure Main is
!      begin
!         Decls1.Lib_Task.Start;
!      end Main;
!    
! * *Declare the tasks*
  
!   The original example uses a single task declaration for ``Lib_Task``. An
!   explicit task type declaration and a properly placed task object could avoid
!   the dependencies that would otherwise cause an elaboration circularity. The
!   example can be rewritten as follows:
  
!   ::
  
!      package Decls is
!         task type Lib_Task is         --  new
!            entry Start;
!         end Lib_Task;
  
!         type My_Int is new Integer;
  
!         function Ident (M : My_Int) return My_Int;
!      end Decls;
  
!   ::
  
!      with Utils;
!      package body Decls is
!         task body Lib_Task is
          begin
!            accept Start;
!            Utils.Put_Val (2);
!         end Lib_Task;
  
!         function Ident (M : My_Int) return My_Int is
!         begin
!            return M;
!         end Ident;
!      end Decls;
  
!   ::
! 
!      with Decls;
!      package Utils is
!         procedure Put_Val (Arg : Decls.My_Int);
!      end Utils;
! 
!   ::
! 
!      with Ada.Text_IO; use Ada.Text_IO;
!      package body Utils is
!         procedure Put_Val (Arg : Decls.My_Int) is
          begin
!            Put_Line (Arg'Img);
!         end Put_Val;
!      end Utils;
  
!   ::
  
!      with Decls;
!      package Obj_Decls is             --  new
!         Task_Obj : Decls.Lib_Task;
!      end Obj_Decls;
  
!   ::
  
!      with Obj_Decls;
!      procedure Main is
!      begin
!         Obj_Decls.Task_Obj.Start;     --  new
!      end Main;
  
! * *Use restriction No_Entry_Calls_In_Elaboration_Code*
  
!   The issue exhibited in the original example under this section revolves
!   around the body of ``Lib_Task`` blocking on an accept statement. There is
!   no rule to prevent elaboration code from performing entry calls, however in
!   practice this is highly unusual. In addition, the pattern of starting tasks
!   at elaboration time and then immediately blocking on accept or select
!   statements is quite common.
  
!   If a programmer knows that elaboration code will not perform any entry
!   calls, then the programmer can indicate that the static model should not
!   process the remainder of a task body once an accept or select statement has
!   been encountered. This behavior can be specified by a configuration pragma:
  
!   ::
  
+      pragma Restrictions (No_Entry_Calls_In_Elaboration_Code);
  
!   In addition to the change in behavior with respect to task bodies, the
!   static model will verify that no entry calls take place at elaboration time.
  
! .. _Elaboration_Related_Compiler_Switches:
  
! Elaboration-related Compiler Switches
! =====================================
  
! GNAT has several switches that affect the elaboration model and consequently
! the elaboration order chosen by the binder.
  
! .. index:: -gnatE  (gnat)
  
! :switch:`-gnatE`
!   Dynamic elaboration checking mode enabled
  
!   When this switch is in effect, GNAT activates the dynamic elaboration model.
  
+ .. index:: -gnatel  (gnat)
  
! :switch:`-gnatel`
!   Turn on info messages on generated Elaborate[_All] pragmas
  
!   When this switch is in effect, GNAT will emit the following supplementary
!   information depending on the elaboration model in effect.
  
!   - *Dynamic model*
  
!     GNAT will indicate missing ``Elaborate`` and ``Elaborate_All`` pragmas for
!     all library-level scenarios within the partition.
  
!   - *Static model*
  
+     GNAT will indicate all scenarios executed during elaboration. In addition,
+     it will provide detailed traceback when an implicit ``Elaborate`` or
+     ``Elaborate_All`` pragma is generated.
  
!   - *SPARK model*
  
!     GNAT will indicate how an elaboration requirement is met by the context of
!     a unit. This diagnostic requires compiler switch :switch:`-gnatd.v`.
  
!     ::
  
!        1. with Server; pragma Elaborate_All (Server);
!        2. package Client with SPARK_Mode is
!        3.    Val : constant Integer := Server.Func;
!                                              |
!           >>> info: call to "Func" during elaboration in SPARK
!           >>> info: "Elaborate_All" requirement for unit "Server" met by pragma at line 1
  
!        4. end Client;
  
! .. index:: -gnatH  (gnat)
  
! :switch:`-gnatH`
!   Legacy elaboration checking mode enabled
  
!   When this switch is in effect, GNAT will utilize the pre-18.x elaboration
!   model.
  
! .. index:: -gnatJ  (gnat)
  
! :switch:`-gnatJ`
!   Relaxed elaboration checking mode enabled
  
!   When this switch is in effect, GNAT will not process certain scenarios,
!   resulting in a more permissive elaboration model. Note that this may
!   eliminate some diagnostics and run-time checks.
  
! .. index:: -gnatw.f  (gnat)
  
! :switch:`-gnatw.f`
!   Turn on warnings for suspicious Subp'Access
  
!   When this switch is in effect, GNAT will treat ``'Access`` of an entry,
!   operator, or subprogram as a potential call to the target and issue warnings:
  
!   ::
  
!      1. package body Attribute_Call is
!      2.    function Func return Integer;
!      3.    type Func_Ptr is access function return Integer;
!      4.
!      5.    Ptr : constant Func_Ptr := Func'Access;
!                                           |
!         >>> warning: "Access" attribute of "Func" before body seen
!         >>> warning: possible Program_Error on later references
!         >>> warning:   body of unit "Attribute_Call" elaborated
!         >>> warning:   "Access" of "Func" taken at line 5
  
!      6.
!      7.    function Func return Integer is
!      8.    begin
!      9.       ...
!     10.    end Func;
!     11. end Attribute_Call;
  
!   In the example above, the elaboration of declaration ``Ptr`` is assigned
!   ``Func'Access`` before the body of ``Func`` has been elaborated.
  
! .. index:: -gnatwl  (gnat)
  
! :switch:`-gnatwl`
!   Turn on warnings for elaboration problems
  
!   When this switch is in effect, GNAT emits diagnostics in the form of warnings
!   concerning various elaboration problems. The warnings are enabled by default.
!   The switch is provided in case all warnings are suppressed, but elaboration
!   warnings are still desired.
  
! :switch:`-gnatwL`
!   Turn off warnings for elaboration problems
  
!   When this switch is in effect, GNAT no longer emits any diagnostics in the
!   form of warnings. Selective suppression of elaboration problems is possible
!   using ``pragma Warnings (Off)``.
  
!   ::
  
!      1. package body Selective_Suppression is
!      2.    function ABE return Integer;
!      3.
!      4.    Val_1 : constant Integer := ABE;
!                                        |
!         >>> warning: cannot call "ABE" before body seen
!         >>> warning: Program_Error will be raised at run time
  
!      5.
!      6.    pragma Warnings (Off);
!      7.    Val_2 : constant Integer := ABE;
!      8.    pragma Warnings (On);
!      9.
!     10.    function ABE return Integer is
!     11.    begin
!     12.       ...
!     13.    end ABE;
!     14. end Selective_Suppression;
  
!   Note that suppressing elaboration warnings does not eliminate run-time
!   checks. The example above will still fail at run time with an ABE.
  
! .. _Summary_of_Procedures_for_Elaboration_Control:
  
! Summary of Procedures for Elaboration Control
! =============================================
  
+ 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,
! then the programmer should use compiler switch :switch:`-gnatel` and consider
! the messages about missing or implicitly created ``Elaborate`` and
! ``Elaborate_All`` pragmas.
  
! If the binder reports an elaboration circularity, the programmer has several
! options:
  
! * Ensure that elaboration warnings are enabled. This will allow the static
!   model to output trace information of elaboration issues. The trace
!   information could shed light on previously unforeseen dependencies, as well
!   as their origins. Elaboration warnings are enabled with compiler switch
!   :switch:`-gnatwl`.
  
! * Use switch :switch:`-gnatel` to obtain messages on generated implicit
!   ``Elaborate`` and ``Elaborate_All`` pragmas. The trace information could
!   indicate why a server unit must be elaborated prior to a client unit.
  
! * If the warnings produced by the static model indicate that a task is
!   involved, consider the options in section `Resolving Task Issues`_.
  
! * If none of the steps outlined above resolve the circularity, use a more
!   permissive elaboration model, in the following order:
  
!   - Use the dynamic elaboration model, with compiler switch :switch:`-gnatE`.
! 
!   - Use the legacy static elaboration model, with compiler switch
!     :switch:`-gnatH`.
! 
!   - Use the legacy dynamic elaboration model, with compiler switches
!     :switch:`-gnatH` :switch:`-gnatE`.
! 
!   - Use the relaxed legacy static elaboration model, with compiler switches
!     :switch:`-gnatH` :switch:`-gnatJ`.
! 
!   - Use the relaxed legacy dynamic elaboration model, with compiler switches
!     :switch:`-gnatH` :switch:`-gnatJ` :switch:`-gnatE`.
! 
! .. _Inspecting_the_Chosen_Elaboration_Order:
! 
! Inspecting the Chosen Elaboration Order
! =======================================
! 
! To see the elaboration order chosen by the binder, inspect the contents of file
! `b~xxx.adb`. On certain targets, this file appears as `b_xxx.adb`. The
! elaboration order appears as a sequence of calls to ``Elab_Body`` and
! ``Elab_Spec``, interspersed with assignments to `Exxx` which indicates that a
! particular unit is elaborated. For example:
! 
! ::
! 
!    System.Soft_Links'Elab_Body;
!    E14 := True;
!    System.Secondary_Stack'Elab_Body;
!    E18 := True;
!    System.Exception_Table'Elab_Body;
!    E24 := True;
!    Ada.Io_Exceptions'Elab_Spec;
!    E67 := True;
!    Ada.Tags'Elab_Spec;
!    Ada.Streams'Elab_Spec;
!    E43 := True;
!    Interfaces.C'Elab_Spec;
!    E69 := True;
!    System.Finalization_Root'Elab_Spec;
!    E60 := True;
!    System.Os_Lib'Elab_Body;
!    E71 := True;
!    System.Finalization_Implementation'Elab_Spec;
!    System.Finalization_Implementation'Elab_Body;
!    E62 := True;
!    Ada.Finalization'Elab_Spec;
!    E58 := True;
!    Ada.Finalization.List_Controller'Elab_Spec;
!    E76 := True;
!    System.File_Control_Block'Elab_Spec;
!    E74 := True;
!    System.File_Io'Elab_Body;
!    E56 := True;
!    Ada.Tags'Elab_Body;
!    E45 := True;
!    Ada.Text_Io'Elab_Spec;
!    Ada.Text_Io'Elab_Body;
!    E07 := True;
! 
! Note also binder switch :switch:`-l`, which outputs the chosen elaboration
! order and provides a more readable form of the above:
! 
! ::
! 
!    ada (spec)
!    interfaces (spec)
!    system (spec)
!    system.case_util (spec)
!    system.case_util (body)
!    system.concat_2 (spec)
!    system.concat_2 (body)
!    system.concat_3 (spec)
!    system.concat_3 (body)
!    system.htable (spec)
!    system.parameters (spec)
!    system.parameters (body)
!    system.crtl (spec)
!    interfaces.c_streams (spec)
!    interfaces.c_streams (body)
!    system.restrictions (spec)
!    system.restrictions (body)
!    system.standard_library (spec)
!    system.exceptions (spec)
!    system.exceptions (body)
!    system.storage_elements (spec)
!    system.storage_elements (body)
!    system.secondary_stack (spec)
!    system.stack_checking (spec)
!    system.stack_checking (body)
!    system.string_hash (spec)
!    system.string_hash (body)
!    system.htable (body)
!    system.strings (spec)
!    system.strings (body)
!    system.traceback (spec)
!    system.traceback (body)
!    system.traceback_entries (spec)
!    system.traceback_entries (body)
!    ada.exceptions (spec)
!    ada.exceptions.last_chance_handler (spec)
!    system.soft_links (spec)
!    system.soft_links (body)
!    ada.exceptions.last_chance_handler (body)
!    system.secondary_stack (body)
!    system.exception_table (spec)
!    system.exception_table (body)
!    ada.io_exceptions (spec)
!    ada.tags (spec)
!    ada.streams (spec)
!    interfaces.c (spec)
!    interfaces.c (body)
!    system.finalization_root (spec)
!    system.finalization_root (body)
!    system.memory (spec)
!    system.memory (body)
!    system.standard_library (body)
!    system.os_lib (spec)
!    system.os_lib (body)
!    system.unsigned_types (spec)
!    system.stream_attributes (spec)
!    system.stream_attributes (body)
!    system.finalization_implementation (spec)
!    system.finalization_implementation (body)
!    ada.finalization (spec)
!    ada.finalization (body)
!    ada.finalization.list_controller (spec)
!    ada.finalization.list_controller (body)
!    system.file_control_block (spec)
!    system.file_io (spec)
!    system.file_io (body)
!    system.val_uns (spec)
!    system.val_util (spec)
!    system.val_util (body)
!    system.val_uns (body)
!    system.wch_con (spec)
!    system.wch_con (body)
!    system.wch_cnv (spec)
!    system.wch_jis (spec)
!    system.wch_jis (body)
!    system.wch_cnv (body)
!    system.wch_stw (spec)
!    system.wch_stw (body)
!    ada.tags (body)
!    ada.exceptions (body)
!    ada.text_io (spec)
!    ada.text_io (body)
!    text_io (spec)
!    gdbstr (body)
diff -Nrcpad gcc-7.3.0/gcc/ada/doc/gnat_ugn/example_of_binder_output.rst gcc-8.1.0/gcc/ada/doc/gnat_ugn/example_of_binder_output.rst
*** gcc-7.3.0/gcc/ada/doc/gnat_ugn/example_of_binder_output.rst	Fri Jan 13 11:23:42 2017
--- gcc-8.1.0/gcc/ada/doc/gnat_ugn/example_of_binder_output.rst	Fri Sep  8 12:34:54 2017
*************** Comments have been added for clarificati
*** 731,743 ****
  
  The Ada code in the above example is exactly what is generated by the
  binder. We have added comments to more clearly indicate the function
! of each part of the generated `Ada_Main` package.
  
  The code is standard Ada in all respects, and can be processed by any
  tools that handle Ada. In particular, it is possible to use the debugger
! in Ada mode to debug the generated `Ada_Main` package. For example,
  suppose that for reasons that you do not understand, your program is crashing
! during elaboration of the body of `Ada.Text_IO`. To locate this bug,
  you can place a breakpoint on the call:
  
    .. code-block:: ada
--- 731,743 ----
  
  The Ada code in the above example is exactly what is generated by the
  binder. We have added comments to more clearly indicate the function
! of each part of the generated ``Ada_Main`` package.
  
  The code is standard Ada in all respects, and can be processed by any
  tools that handle Ada. In particular, it is possible to use the debugger
! in Ada mode to debug the generated ``Ada_Main`` package. For example,
  suppose that for reasons that you do not understand, your program is crashing
! during elaboration of the body of ``Ada.Text_IO``. To locate this bug,
  you can place a breakpoint on the call:
  
    .. code-block:: ada
diff -Nrcpad gcc-7.3.0/gcc/ada/doc/gnat_ugn/getting_started_with_gnat.rst gcc-8.1.0/gcc/ada/doc/gnat_ugn/getting_started_with_gnat.rst
*** gcc-7.3.0/gcc/ada/doc/gnat_ugn/getting_started_with_gnat.rst	Fri Jan 13 11:23:42 2017
--- gcc-8.1.0/gcc/ada/doc/gnat_ugn/getting_started_with_gnat.rst	Fri Sep  8 12:34:54 2017
***************
*** 1,3 ****
--- 1,5 ----
+ .. role:: switch(samp)
+ 
  .. _Getting_Started_with_GNAT:
  
  *************************
*************** file:
*** 27,33 ****
  *   The file(s) must be bound using the GNAT binder.
  *   All appropriate object files must be linked to produce an executable.
  
! All three steps are most commonly handled by using the *gnatmake*
  utility program that, given the name of the main program, automatically
  performs the necessary compilation, binding and linking steps.
  
--- 29,35 ----
  *   The file(s) must be bound using the GNAT binder.
  *   All appropriate object files must be linked to produce an executable.
  
! All three steps are most commonly handled by using the ``gnatmake``
  utility program that, given the name of the main program, automatically
  performs the necessary compilation, binding and linking steps.
  
*************** with periods replaced by hyphens; the
*** 61,75 ****
  extension is :file:`ads` for a
  spec and :file:`adb` for a body.
  You can override this default file naming convention by use of the
! special pragma `Source_File_Name` (for further information please
  see :ref:`Using_Other_File_Names`).
  Alternatively, if you want to rename your files according to this default
  convention, which is probably more convenient if you will be using GNAT
! for all your compilations, then the `gnatchop` utility
  can be used to generate correctly-named source files
  (see :ref:`Renaming_Files_with_gnatchop`).
  
! You can compile the program using the following command (`$` is used
  as the command prompt in the examples in this document):
  
  .. code-block:: sh
--- 63,77 ----
  extension is :file:`ads` for a
  spec and :file:`adb` for a body.
  You can override this default file naming convention by use of the
! special pragma ``Source_File_Name`` (for further information please
  see :ref:`Using_Other_File_Names`).
  Alternatively, if you want to rename your files according to this default
  convention, which is probably more convenient if you will be using GNAT
! for all your compilations, then the ``gnatchop`` utility
  can be used to generate correctly-named source files
  (see :ref:`Renaming_Files_with_gnatchop`).
  
! You can compile the program using the following command (``$`` is used
  as the command prompt in the examples in this document):
  
  .. code-block:: sh
*************** as the command prompt in the examples in
*** 77,91 ****
    $ gcc -c hello.adb
  
  
! *gcc* is the command used to run the compiler. This compiler is
  capable of compiling programs in several languages, including Ada and
  C. It assumes that you have given it an Ada program if the file extension is
  either :file:`.ads` or :file:`.adb`, and it will then call
  the GNAT compiler to compile the specified file.
  
! The :option:`-c` switch is required. It tells *gcc* to only do a
! compilation. (For C programs, *gcc* can also do linking, but this
! capability is not used directly for Ada programs, so the :option:`-c`
  switch must always be present.)
  
  This compile command generates a file
--- 79,93 ----
    $ gcc -c hello.adb
  
  
! ``gcc`` is the command used to run the compiler. This compiler is
  capable of compiling programs in several languages, including Ada and
  C. It assumes that you have given it an Ada program if the file extension is
  either :file:`.ads` or :file:`.adb`, and it will then call
  the GNAT compiler to compile the specified file.
  
! The :switch:`-c` switch is required. It tells ``gcc`` to only do a
! compilation. (For C programs, ``gcc`` can also do linking, but this
! capability is not used directly for Ada programs, so the :switch:`-c`
  switch must always be present.)
  
  This compile command generates a file
*************** an 'Ada Library Information' file :file:
*** 95,103 ****
  which contains additional information used to check
  that an Ada program is consistent.
  To build an executable file,
! use `gnatbind` to bind the program
! and *gnatlink* to link it. The
! argument to both `gnatbind` and *gnatlink* is the name of the
  :file:`ALI` file, but the default extension of :file:`.ali` can
  be omitted. This means that in the most common case, the argument
  is simply the name of the main program:
--- 97,105 ----
  which contains additional information used to check
  that an Ada program is consistent.
  To build an executable file,
! use ``gnatbind`` to bind the program
! and ``gnatlink`` to link it. The
! argument to both ``gnatbind`` and ``gnatlink`` is the name of the
  :file:`ALI` file, but the default extension of :file:`.ali` can
  be omitted. This means that in the most common case, the argument
  is simply the name of the main program:
*************** is simply the name of the main program:
*** 107,120 ****
    $ gnatbind hello
    $ gnatlink hello
  
! A simpler method of carrying out these steps is to use *gnatmake*,
  a master program that invokes all the required
  compilation, binding and linking tools in the correct order. In particular,
! *gnatmake* automatically recompiles any sources that have been
  modified since they were last compiled, or sources that depend
  on such modified sources, so that 'version skew' is avoided.
  
! .. index:: Version skew (avoided by *gnatmake*)
  
  .. code-block:: sh
  
--- 109,122 ----
    $ gnatbind hello
    $ gnatlink hello
  
! A simpler method of carrying out these steps is to use ``gnatmake``,
  a master program that invokes all the required
  compilation, binding and linking tools in the correct order. In particular,
! ``gnatmake`` automatically recompiles any sources that have been
  modified since they were last compiled, or sources that depend
  on such modified sources, so that 'version skew' is avoided.
  
! .. index:: Version skew (avoided by ``gnatmake``)
  
  .. code-block:: sh
  
*************** following three separate files:
*** 178,188 ****
  
  
  *greetings.ads*
!   spec of package `Greetings`
  
  
  *greetings.adb*
!   body of package `Greetings`
  
  
  *gmain.adb*
--- 180,190 ----
  
  
  *greetings.ads*
!   spec of package ``Greetings``
  
  
  *greetings.adb*
!   body of package ``Greetings``
  
  
  *gmain.adb*
*************** In particular it is perfectly fine to co
*** 204,210 ****
  Also, it is not necessary to compile package specs in the case where
  there is an accompanying body; you only need to compile the body. If you want
  to submit these files to the compiler for semantic checking and not code
! generation, then use the :option:`-gnatc` switch:
  
  .. code-block:: sh
  
--- 206,212 ----
  Also, it is not necessary to compile package specs in the case where
  there is an accompanying body; you only need to compile the body. If you want
  to submit these files to the compiler for semantic checking and not code
! generation, then use the :switch:`-gnatc` switch:
  
  .. code-block:: sh
  
*************** generation, then use the :option:`-gnatc
*** 212,218 ****
  
  Although the compilation can be done in separate steps as in the
  above example, in practice it is almost always more convenient
! to use the *gnatmake* tool. All you need to know in this case
  is the name of the main program's source file. The effect of the above four
  commands can be achieved with a single one:
  
--- 214,220 ----
  
  Although the compilation can be done in separate steps as in the
  above example, in practice it is almost always more convenient
! to use the ``gnatmake`` tool. All you need to know in this case
  is the name of the main program's source file. The effect of the above four
  commands can be achieved with a single one:
  
*************** commands can be achieved with a single o
*** 220,235 ****
  
    $ gnatmake gmain.adb
  
! In the next section we discuss the advantages of using *gnatmake* in
  more detail.
  
  .. _Using_the_gnatmake_Utility:
  
! Using the *gnatmake* Utility
! ============================
  
  If you work on a program by compiling single components at a time using
! *gcc*, you typically keep track of the units you modify. In order to
  build a consistent system, you compile not only these units, but also any
  units that depend on the units you have modified.
  For example, in the preceding case,
--- 222,237 ----
  
    $ gnatmake gmain.adb
  
! In the next section we discuss the advantages of using ``gnatmake`` in
  more detail.
  
  .. _Using_the_gnatmake_Utility:
  
! Using the ``gnatmake`` Utility
! ==============================
  
  If you work on a program by compiling single components at a time using
! ``gcc``, you typically keep track of the units you modify. In order to
  build a consistent system, you compile not only these units, but also any
  units that depend on the units you have modified.
  For example, in the preceding case,
*************** you edit :file:`greetings.ads`, you must
*** 238,244 ****
  :file:`greetings.adb` and :file:`gmain.adb`, because both files contain
  units that depend on :file:`greetings.ads`.
  
! *gnatbind* will warn you if you forget one of these compilation
  steps, so that it is impossible to generate an inconsistent program as a
  result of forgetting to do a compilation. Nevertheless it is tedious and
  error-prone to keep track of dependencies among units.
--- 240,246 ----
  :file:`greetings.adb` and :file:`gmain.adb`, because both files contain
  units that depend on :file:`greetings.ads`.
  
! ``gnatbind`` will warn you if you forget one of these compilation
  steps, so that it is impossible to generate an inconsistent program as a
  result of forgetting to do a compilation. Nevertheless it is tedious and
  error-prone to keep track of dependencies among units.
*************** if the dependencies change as you change
*** 248,254 ****
  sure that the makefile is kept up-to-date manually, which is also an
  error-prone process.
  
! The *gnatmake* utility takes care of these details automatically.
  Invoke it using either one of the following forms:
  
  .. code-block:: sh
--- 250,256 ----
  sure that the makefile is kept up-to-date manually, which is also an
  error-prone process.
  
! The ``gnatmake`` utility takes care of these details automatically.
  Invoke it using either one of the following forms:
  
  .. code-block:: sh
*************** Invoke it using either one of the follow
*** 257,275 ****
    $ gnatmake gmain
  
  The argument is the name of the file containing the main program;
! you may omit the extension. *gnatmake*
  examines the environment, automatically recompiles any files that need
  recompiling, and binds and links the resulting set of object files,
  generating the executable file, :file:`gmain`.
  In a large program, it
! can be extremely helpful to use *gnatmake*, because working out by hand
  what needs to be recompiled can be difficult.
  
! Note that *gnatmake* takes into account all the Ada rules that
  establish dependencies among units. These include dependencies that result
  from inlining subprogram bodies, and from
  generic instantiation. Unlike some other
! Ada make tools, *gnatmake* does not rely on the dependencies that were
  found by the compiler on a previous compilation, which may possibly
! be wrong when sources change. *gnatmake* determines the exact set of
  dependencies from scratch each time it is run.
--- 259,277 ----
    $ gnatmake gmain
  
  The argument is the name of the file containing the main program;
! you may omit the extension. ``gnatmake``
  examines the environment, automatically recompiles any files that need
  recompiling, and binds and links the resulting set of object files,
  generating the executable file, :file:`gmain`.
  In a large program, it
! can be extremely helpful to use ``gnatmake``, because working out by hand
  what needs to be recompiled can be difficult.
  
! Note that ``gnatmake`` takes into account all the Ada rules that
  establish dependencies among units. These include dependencies that result
  from inlining subprogram bodies, and from
  generic instantiation. Unlike some other
! Ada make tools, ``gnatmake`` does not rely on the dependencies that were
  found by the compiler on a previous compilation, which may possibly
! be wrong when sources change. ``gnatmake`` determines the exact set of
  dependencies from scratch each time it is run.
diff -Nrcpad gcc-7.3.0/gcc/ada/doc/gnat_ugn/gnat_and_program_execution.rst gcc-8.1.0/gcc/ada/doc/gnat_ugn/gnat_and_program_execution.rst
*** gcc-7.3.0/gcc/ada/doc/gnat_ugn/gnat_and_program_execution.rst	Mon Apr  3 22:30:56 2017
--- gcc-8.1.0/gcc/ada/doc/gnat_ugn/gnat_and_program_execution.rst	Fri Dec 15 11:16:14 2017
***************
*** 1,3 ****
--- 1,5 ----
+ .. role:: switch(samp)
+ 
  .. |with| replace:: *with*
  .. |withs| replace:: *with*\ s
  .. |withed| replace:: *with*\ ed
*************** An incorrect Ada program may be handled
*** 55,71 ****
  The GNAT Debugger GDB
  ---------------------
  
! `GDB` is a general purpose, platform-independent debugger that
! can be used to debug mixed-language programs compiled with *gcc*,
  and in particular is capable of debugging Ada programs compiled with
! GNAT. The latest versions of `GDB` are Ada-aware and can handle
  complex Ada data structures.
  
  See :title:`Debugging with GDB`,
! for full details on the usage of `GDB`, including a section on
  its usage on programs. This manual should be consulted for full
  details. The section that follows is a brief introduction to the
! philosophy and use of `GDB`.
  
  When GNAT programs are compiled, the compiler optionally writes debugging
  information into the generated object file, including information on
--- 57,73 ----
  The GNAT Debugger GDB
  ---------------------
  
! ``GDB`` is a general purpose, platform-independent debugger that
! can be used to debug mixed-language programs compiled with ``gcc``,
  and in particular is capable of debugging Ada programs compiled with
! GNAT. The latest versions of ``GDB`` are Ada-aware and can handle
  complex Ada data structures.
  
  See :title:`Debugging with GDB`,
! for full details on the usage of ``GDB``, including a section on
  its usage on programs. This manual should be consulted for full
  details. The section that follows is a brief introduction to the
! philosophy and use of ``GDB``.
  
  When GNAT programs are compiled, the compiler optionally writes debugging
  information into the generated object file, including information on
*************** separate from the generated code. It mak
*** 74,80 ****
  larger, but it does not add to the size of the actual executable that
  will be loaded into memory, and has no impact on run-time performance. The
  generation of debug information is triggered by the use of the
! -g switch in the *gcc* or *gnatmake* command
  used to carry out the compilations. It is important to emphasize that
  the use of these options does not change the generated code.
  
--- 76,82 ----
  larger, but it does not add to the size of the actual executable that
  will be loaded into memory, and has no impact on run-time performance. The
  generation of debug information is triggered by the use of the
! :switch:`-g` switch in the ``gcc`` or ``gnatmake`` command
  used to carry out the compilations. It is important to emphasize that
  the use of these options does not change the generated code.
  
*************** details about Ada types and variables to
*** 86,92 ****
  standard C formats. Details of this encoding scheme may be found in
  the file exp_dbug.ads in the GNAT source distribution. However, the
  details of this encoding are, in general, of no interest to a user,
! since `GDB` automatically performs the necessary decoding.
  
  When a program is bound and linked, the debugging information is
  collected from the object files, and stored in the executable image of
--- 88,94 ----
  standard C formats. Details of this encoding scheme may be found in
  the file exp_dbug.ads in the GNAT source distribution. However, the
  details of this encoding are, in general, of no interest to a user,
! since ``GDB`` automatically performs the necessary decoding.
  
  When a program is bound and linked, the debugging information is
  collected from the object files, and stored in the executable image of
*************** the executable program itself. Furthermo
*** 96,109 ****
  the normal manner, it runs exactly as if the debug information were
  not present, and takes no more actual memory.
  
! However, if the program is run under control of `GDB`, the
  debugger is activated.  The image of the program is loaded, at which
  point it is ready to run.  If a run command is given, then the program
! will run exactly as it would have if `GDB` were not present. This
! is a crucial part of the `GDB` design philosophy.  `GDB` is
  entirely non-intrusive until a breakpoint is encountered.  If no
  breakpoint is ever hit, the program will run exactly as it would if no
! debugger were present. When a breakpoint is hit, `GDB` accesses
  the debugging information and can respond to user commands to inspect
  variables, and more generally to report on the state of execution.
  
--- 98,111 ----
  the normal manner, it runs exactly as if the debug information were
  not present, and takes no more actual memory.
  
! However, if the program is run under control of ``GDB``, the
  debugger is activated.  The image of the program is loaded, at which
  point it is ready to run.  If a run command is given, then the program
! will run exactly as it would have if ``GDB`` were not present. This
! is a crucial part of the ``GDB`` design philosophy.  ``GDB`` is
  entirely non-intrusive until a breakpoint is encountered.  If no
  breakpoint is ever hit, the program will run exactly as it would if no
! debugger were present. When a breakpoint is hit, ``GDB`` accesses
  the debugging information and can respond to user commands to inspect
  variables, and more generally to report on the state of execution.
  
*************** Running GDB
*** 114,135 ****
  
  This section describes how to initiate the debugger.
  
! The debugger can be launched from a `GPS` menu or
  directly from the command line. The description below covers the latter use.
! All the commands shown can be used in the `GPS` debug console window,
  but there are usually more GUI-based ways to achieve the same effect.
  
! The command to run `GDB` is
  
    ::
  
       $ gdb program
  
! where `program` is the name of the executable file. This
  activates the debugger and results in a prompt for debugger commands.
! The simplest command is simply `run`, which causes the program to run
  exactly as if the debugger were not present. The following section
! describes some of the additional commands that can be given to `GDB`.
  
  
  .. _Introduction_to_GDB_Commands:
--- 116,137 ----
  
  This section describes how to initiate the debugger.
  
! The debugger can be launched from a ``GPS`` menu or
  directly from the command line. The description below covers the latter use.
! All the commands shown can be used in the ``GPS`` debug console window,
  but there are usually more GUI-based ways to achieve the same effect.
  
! The command to run ``GDB`` is
  
    ::
  
       $ gdb program
  
! where ``program`` is the name of the executable file. This
  activates the debugger and results in a prompt for debugger commands.
! The simplest command is simply ``run``, which causes the program to run
  exactly as if the debugger were not present. The following section
! describes some of the additional commands that can be given to ``GDB``.
  
  
  .. _Introduction_to_GDB_Commands:
*************** describes some of the additional command
*** 137,211 ****
  Introduction to GDB Commands
  ----------------------------
  
! `GDB` contains a large repertoire of commands.
  See :title:`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 `GDB` is about. You should create
  a simple program with debugging information and experiment with the use of
! these `GDB` commands on the program as you read through the
  following section.
  
! * *set args `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 `set args`
      command is not needed if the program does not require arguments.
  
  
! * *run*
!     The `run` command causes execution of the program to start from
      the beginning. If the program is already running, that is to say if
      you are currently positioned at a breakpoint, then a prompt will ask
      for confirmation that you want to abandon the current execution and
      restart.
  
  
! * *breakpoint `location`*
      The breakpoint command sets a breakpoint, that is to say a point at which
!     execution will halt and `GDB` will await further
!     commands. `location` is
!     either a line number within a file, given in the format `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
      those subprograms you want to breakpoint. You can also
      specify that all of them should be breakpointed. If the program is run
      and execution encounters the breakpoint, then the program
!     stops and `GDB` signals that the breakpoint was encountered by
      printing the line of code before which the program is halted.
  
  
! * *catch exception `name`*
      This command causes the program execution to stop whenever exception
!     `name` is raised.  If `name` is omitted, then the execution is
      suspended when any exception is raised.
  
  
! * *print `expression`*
      This will print the value of the given expression. Most simple
!     Ada expression formats are properly handled by `GDB`, so the expression
      can contain function calls, variables, operators, and attribute references.
  
  
! * *continue*
      Continues execution following a breakpoint, until the next breakpoint or the
      termination of the program.
  
  
! * *step*
      Executes a single line after a breakpoint. If the next statement
      is a subprogram call, execution continues into (the first statement of)
      the called subprogram.
  
  
! * *next*
      Executes a single line. If this line is a subprogram call, executes and
      returns from the call.
  
  
! * *list*
      Lists a few lines around the current source location. In practice, it
      is usually more convenient to have a separate edit window open with the
      relevant source file displayed. Successive applications of this command
--- 139,213 ----
  Introduction to GDB Commands
  ----------------------------
  
! ``GDB`` contains a large repertoire of commands.
  See :title:`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 ``GDB`` is about. You should create
  a simple program with debugging information and experiment with the use of
! these ``GDB`` commands on the program as you read through the
  following section.
  
! * :samp:`set args {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 ``set args``
      command is not needed if the program does not require arguments.
  
  
! * :samp:`run`
!     The ``run`` command causes execution of the program to start from
      the beginning. If the program is already running, that is to say if
      you are currently positioned at a breakpoint, then a prompt will ask
      for confirmation that you want to abandon the current execution and
      restart.
  
  
! * :samp:`breakpoint {location}`
      The breakpoint command sets a breakpoint, that is to say a point at which
!     execution will halt and ``GDB`` will await further
!     commands. *location* is
!     either a line number within a file, given in the format ``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
      those subprograms you want to breakpoint. You can also
      specify that all of them should be breakpointed. If the program is run
      and execution encounters the breakpoint, then the program
!     stops and ``GDB`` signals that the breakpoint was encountered by
      printing the line of code before which the program is halted.
  
  
! * :samp:`catch exception {name}`
      This command causes the program execution to stop whenever exception
!     ``name`` is raised.  If ``name`` is omitted, then the execution is
      suspended when any exception is raised.
  
  
! * :samp:`print {expression}`
      This will print the value of the given expression. Most simple
!     Ada expression formats are properly handled by ``GDB``, so the expression
      can contain function calls, variables, operators, and attribute references.
  
  
! * :samp:`continue`
      Continues execution following a breakpoint, until the next breakpoint or the
      termination of the program.
  
  
! * :samp:`step`
      Executes a single line after a breakpoint. If the next statement
      is a subprogram call, execution continues into (the first statement of)
      the called subprogram.
  
  
! * :samp:`next`
      Executes a single line. If this line is a subprogram call, executes and
      returns from the call.
  
  
! * :samp:`list`
      Lists a few lines around the current source location. In practice, it
      is usually more convenient to have a separate edit window open with the
      relevant source file displayed. Successive applications of this command
*************** following section.
*** 213,243 ****
      line number, in which case it displays a few lines around the specified one.
  
  
! * *backtrace*
      Displays a backtrace of the call chain. This command is typically
      used after a breakpoint has occurred, to examine the sequence of calls that
      leads to the current breakpoint. The display includes one line for each
      activation record (frame) corresponding to an active subprogram.
  
  
! * *up*
!     At a breakpoint, `GDB` can display the values of variables local
!     to the current frame. The command `up` can be used to
      examine the contents of other active frames, by moving the focus up
      the stack, that is to say from callee to caller, one frame at a time.
  
  
! * *down*
!     Moves the focus of `GDB` down from the frame currently being
      examined to the frame of its callee (the reverse of the previous command),
  
  
! * *frame `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.
  
  
! * *kill*
      Kills the child process in which the program is running under GDB.
      This may be useful for several purposes:
  
--- 215,245 ----
      line number, in which case it displays a few lines around the specified one.
  
  
! * :samp:`backtrace`
      Displays a backtrace of the call chain. This command is typically
      used after a breakpoint has occurred, to examine the sequence of calls that
      leads to the current breakpoint. The display includes one line for each
      activation record (frame) corresponding to an active subprogram.
  
  
! * :samp:`up`
!     At a breakpoint, ``GDB`` can display the values of variables local
!     to the current frame. The command ``up`` can be used to
      examine the contents of other active frames, by moving the focus up
      the stack, that is to say from callee to caller, one frame at a time.
  
  
! * :samp:`down`
!     Moves the focus of ``GDB`` down from the frame currently being
      examined to the frame of its callee (the reverse of the previous command),
  
  
! * :samp:`frame {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.
  
  
! * :samp:`kill`
      Kills the child process in which the program is running under GDB.
      This may be useful for several purposes:
  
*************** following section.
*** 251,257 ****
      * It allows you to debug a core dump rather than a running process.
  
  The above list is a very short introduction to the commands that
! `GDB` provides. Important additional capabilities, including conditional
  breakpoints, the ability to execute command sequences on a breakpoint,
  the ability to debug at the machine instruction level and many other
  features are described in detail in :title:`Debugging with GDB`.
--- 253,259 ----
      * It allows you to debug a core dump rather than a running process.
  
  The above list is a very short introduction to the commands that
! ``GDB`` provides. Important additional capabilities, including conditional
  breakpoints, the ability to execute command sequences on a breakpoint,
  the ability to debug at the machine instruction level and many other
  features are described in detail in :title:`Debugging with GDB`.
*************** Using Ada Expressions
*** 266,289 ****
  
  .. index:: Ada expressions (in gdb)
  
! `GDB` supports a fairly large subset of Ada expression syntax, with some
  extensions. The philosophy behind the design of this subset is
  
!   * That `GDB` should provide basic literals and access to operations for
      arithmetic, dereferencing, field selection, indexing, and subprogram calls,
      leaving more sophisticated computations to subprograms written into the
!     program (which therefore may be called from `GDB`).
  
    * That type safety and strict adherence to Ada language restrictions
      are not particularly relevant in a debugging context.
  
!   * That brevity is important to the `GDB` user.
  
  Thus, for brevity, the debugger acts as if there were
! implicit `with` and `use` clauses in effect for all user-written
  packages, thus making it unnecessary to fully qualify most names with
  their packages, regardless of context. Where this causes ambiguity,
! `GDB` asks the user's intent.
  
  For details on the supported Ada syntax, see :title:`Debugging with GDB`.
  
--- 268,291 ----
  
  .. index:: Ada expressions (in gdb)
  
! ``GDB`` supports a fairly large subset of Ada expression syntax, with some
  extensions. The philosophy behind the design of this subset is
  
!   * That ``GDB`` should provide basic literals and access to operations for
      arithmetic, dereferencing, field selection, indexing, and subprogram calls,
      leaving more sophisticated computations to subprograms written into the
!     program (which therefore may be called from ``GDB``).
  
    * That type safety and strict adherence to Ada language restrictions
      are not particularly relevant in a debugging context.
  
!   * That brevity is important to the ``GDB`` user.
  
  Thus, for brevity, the debugger acts as if there were
! implicit ``with`` and ``use`` clauses in effect for all user-written
  packages, thus making it unnecessary to fully qualify most names with
  their packages, regardless of context. Where this causes ambiguity,
! ``GDB`` asks the user's intent.
  
  For details on the supported Ada syntax, see :title:`Debugging with GDB`.
  
*************** For details on the supported Ada syntax,
*** 293,299 ****
  Calling User-Defined Subprograms
  --------------------------------
  
! An important capability of `GDB` is the ability to call user-defined
  subprograms while debugging. This is achieved simply by entering
  a subprogram call statement in the form:
  
--- 295,301 ----
  Calling User-Defined Subprograms
  --------------------------------
  
! An important capability of ``GDB`` is the ability to call user-defined
  subprograms while debugging. This is achieved simply by entering
  a subprogram call statement in the form:
  
*************** a subprogram call statement in the form:
*** 301,315 ****
  
       call subprogram-name (parameters)
  
! The keyword `call` can be omitted in the normal case where the
! `subprogram-name` does not coincide with any of the predefined
! `GDB` commands.
  
  The effect is to invoke the given subprogram, passing it the
  list of parameters that is supplied. The parameters can be expressions and
  can include variables from the program being debugged. The
  subprogram must be defined
! at the library level within your program, and `GDB` will call the
  subprogram within the environment of your program execution (which
  means that the subprogram is free to access or even modify variables
  within your program).
--- 303,317 ----
  
       call subprogram-name (parameters)
  
! The keyword ``call`` can be omitted in the normal case where the
! ``subprogram-name`` does not coincide with any of the predefined
! ``GDB`` commands.
  
  The effect is to invoke the given subprogram, passing it the
  list of parameters that is supplied. The parameters can be expressions and
  can include variables from the program being debugged. The
  subprogram must be defined
! at the library level within your program, and ``GDB`` will call the
  subprogram within the environment of your program execution (which
  means that the subprogram is free to access or even modify variables
  within your program).
*************** debugging routines that are tailored to
*** 319,325 ****
  in your program. Such debugging routines can be written to provide a suitably
  high-level description of an abstract type, rather than a low-level dump
  of its physical layout. After all, the standard
! `GDB print` command only knows the physical layout of your
  types, not their abstract meaning. Debugging routines can provide information
  at the desired semantic level and are thus enormously useful.
  
--- 321,327 ----
  in your program. Such debugging routines can be written to provide a suitably
  high-level description of an abstract type, rather than a low-level dump
  of its physical layout. After all, the standard
! ``GDB print`` command only knows the physical layout of your
  types, not their abstract meaning. Debugging routines can provide information
  at the desired semantic level and are thus enormously useful.
  
*************** For example, when debugging GNAT itself,
*** 327,333 ****
  the contents of the tree nodes used to represent the program internally.
  But tree nodes are represented simply by an integer value (which in turn
  is an index into a table of nodes).
! Using the `print` command on a tree node would simply print this integer
  value, which is not very useful. But the PN routine (defined in file
  treepr.adb in the GNAT sources) takes a tree node as input, and displays
  a useful high level representation of the tree node, which includes the
--- 329,335 ----
  the contents of the tree nodes used to represent the program internally.
  But tree nodes are represented simply by an integer value (which in turn
  is an index into a table of nodes).
! Using the ``print`` command on a tree node would simply print this integer
  value, which is not very useful. But the PN routine (defined in file
  treepr.adb in the GNAT sources) takes a tree node as input, and displays
  a useful high level representation of the tree node, which includes the
*************** the elements in the desired format.
*** 350,358 ****
  Using the *next* Command in a Function
  --------------------------------------
  
! When you use the `next` command in a function, the current source
  location will advance to the next statement as usual. A special case
! arises in the case of a `return` statement.
  
  Part of the code for a return statement is the 'epilogue' of the function.
  This is the code that returns to the caller. There is only one copy of
--- 352,360 ----
  Using the *next* Command in a Function
  --------------------------------------
  
! When you use the ``next`` command in a function, the current source
  location will advance to the next statement as usual. A special case
! arises in the case of a ``return`` statement.
  
  Part of the code for a return statement is the 'epilogue' of the function.
  This is the code that returns to the caller. There is only one copy of
*************** statement in the function if there is mo
*** 361,367 ****
  implementations, this epilogue is associated with the first statement
  of the function.
  
! The result is that if you use the `next` command from a return
  statement that is not the last return statement of the function you
  may see a strange apparent jump to the last return statement or to
  the start of the function. You should simply ignore this odd jump.
--- 363,369 ----
  implementations, this epilogue is associated with the first statement
  of the function.
  
! The result is that if you use the ``next`` command from a return
  statement that is not the last return statement of the function you
  may see a strange apparent jump to the last return statement or to
  the start of the function. You should simply ignore this odd jump.
*************** You can set catchpoints that stop the pr
*** 380,404 ****
  raises selected exceptions.
  
  
! * *catch exception*
      Set a catchpoint that stops execution whenever (any task in the) program
      raises any exception.
  
  
! * *catch exception `name`*
      Set a catchpoint that stops execution whenever (any task in the) program
!     raises the exception `name`.
  
  
! * *catch exception unhandled*
      Set a catchpoint that stops executing whenever (any task in the) program
      raises an exception for which there is no handler.
  
  
! * *info exceptions*, *info exceptions `regexp`*
!     The `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`.
  
  
  .. index:: Tasks (in gdb)
--- 382,406 ----
  raises selected exceptions.
  
  
! * :samp:`catch exception`
      Set a catchpoint that stops execution whenever (any task in the) program
      raises any exception.
  
  
! * :samp:`catch exception {name}`
      Set a catchpoint that stops execution whenever (any task in the) program
!     raises the exception *name*.
  
  
! * :samp:`catch exception unhandled`
      Set a catchpoint that stops executing whenever (any task in the) program
      raises an exception for which there is no handler.
  
  
! * :samp:`info exceptions`, :samp:`info exceptions {regexp}`
!     The ``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*.
  
  
  .. index:: Tasks (in gdb)
*************** raises selected exceptions.
*** 408,417 ****
  Ada Tasks
  ---------
  
! `GDB` allows the following task-related commands:
  
  
! * *info tasks*
      This command shows a list of current Ada tasks, as in the following example:
  
      ::
--- 410,419 ----
  Ada Tasks
  ---------
  
! ``GDB`` allows the following task-related commands:
  
  
! * :samp:`info tasks`
      This command shows a list of current Ada tasks, as in the following example:
  
      ::
*************** Ada Tasks
*** 431,460 ****
  
  .. index:: Breakpoints and tasks
  
! * *break `linespec` task `taskid`*, *break `linespec` task `taskid` if ...*
  
!     These commands are like the `break ... thread ...`.
!     `linespec` specifies source lines.
  
      Use the qualifier :samp:`task {taskid}` with a breakpoint command
!     to specify that you only want `GDB` to stop the program when a
!     particular Ada task reaches this breakpoint. `taskid` is one of the
!     numeric task identifiers assigned by `GDB`, shown in the first
      column of the ``info tasks`` display.
  
      If you do not specify :samp:`task {taskid}` when you set a
      breakpoint, the breakpoint applies to *all* tasks of your
      program.
  
!     You can use the `task` qualifier on conditional breakpoints as
      well; in this case, place :samp:`task {taskid}` before the
!     breakpoint condition (before the `if`).
  
  .. index:: Task switching (in gdb)
  
! * *task `taskno`*
  
!     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
--- 433,462 ----
  
  .. index:: Breakpoints and tasks
  
! * ``break``*linespec* ``task`` *taskid*, ``break`` *linespec* ``task`` *taskid* ``if`` ...
  
!     These commands are like the ``break ... thread ...``.
!     *linespec* specifies source lines.
  
      Use the qualifier :samp:`task {taskid}` with a breakpoint command
!     to specify that you only want ``GDB`` to stop the program when a
!     particular Ada task reaches this breakpoint. *taskid* is one of the
!     numeric task identifiers assigned by ``GDB``, shown in the first
      column of the ``info tasks`` display.
  
      If you do not specify :samp:`task {taskid}` when you set a
      breakpoint, the breakpoint applies to *all* tasks of your
      program.
  
!     You can use the ``task`` qualifier on conditional breakpoints as
      well; in this case, place :samp:`task {taskid}` before the
!     breakpoint condition (before the ``if``).
  
  .. index:: Task switching (in gdb)
  
! * :samp:`task {taskno}`
  
!     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
*************** each time an instantiation occurs, a com
*** 477,483 ****
  made, with appropriate substitutions of formals by actuals.
  
  It is not possible to refer to the original generic entities in
! `GDB`, but it is always possible to debug a particular instance of
  a generic, by using the appropriate expanded names. For example, if we have
  
    .. code-block:: ada
--- 479,485 ----
  made, with appropriate substitutions of formals by actuals.
  
  It is not possible to refer to the original generic entities in
! ``GDB``, but it is always possible to debug a particular instance of
  a generic, by using the appropriate expanded names. For example, if we have
  
    .. code-block:: ada
*************** The following strategies are presented i
*** 594,630 ****
  difficulty, corresponding to your experience in using GNAT and your
  familiarity with compiler internals.
  
! * Run *gcc* with the *-gnatf*. This first
    switch causes all errors on a given line to be reported. In its absence,
    only the first error on a line is displayed.
  
!   The *-gnatdO* switch causes errors to be displayed as soon as they
    are encountered, rather than after compilation is terminated. If GNAT
    terminates prematurely or goes into an infinite loop, the last error
    message displayed may help to pinpoint the culprit.
  
! * Run *gcc* with the *-v (verbose)* switch. In this
!   mode, *gcc* produces ongoing information about the progress of the
    compilation and provides the name of each procedure as code is
    generated. This switch allows you to find which Ada procedure was being
    compiled when it encountered a code generation problem.
  
  .. index:: -gnatdc switch
  
! * Run *gcc* with the *-gnatdc* switch. This is a GNAT specific
!   switch that does for the front-end what *-v* does
    for the back end. The system prints the name of each unit,
    either a compilation unit or nested unit, as it is being analyzed.
  
  * Finally, you can start
!   `gdb` directly on the `gnat1` executable. `gnat1` is the
    front-end of GNAT, and can be run independently (normally it is just
!   called from *gcc*). You can use `gdb` on `gnat1` as you
    would on a C program (but :ref:`The_GNAT_Debugger_GDB` for caveats). The
!   `where` command is the first line of attack; the variable
!   `lineno` (seen by `print lineno`), used by the second phase of
!   `gnat1` and by the *gcc* backend, indicates the source line at
!   which the execution stopped, and `input_file name` indicates the name of
    the source file.
  
  
--- 596,632 ----
  difficulty, corresponding to your experience in using GNAT and your
  familiarity with compiler internals.
  
! * Run ``gcc`` with the :switch:`-gnatf`. This first
    switch causes all errors on a given line to be reported. In its absence,
    only the first error on a line is displayed.
  
!   The :switch:`-gnatdO` switch causes errors to be displayed as soon as they
    are encountered, rather than after compilation is terminated. If GNAT
    terminates prematurely or goes into an infinite loop, the last error
    message displayed may help to pinpoint the culprit.
  
! * Run ``gcc`` with the :switch:`-v` (verbose) switch. In this
!   mode, ``gcc`` produces ongoing information about the progress of the
    compilation and provides the name of each procedure as code is
    generated. This switch allows you to find which Ada procedure was being
    compiled when it encountered a code generation problem.
  
  .. index:: -gnatdc switch
  
! * Run ``gcc`` with the :switch:`-gnatdc` switch. This is a GNAT specific
!   switch that does for the front-end what :switch:`-v` does
    for the back end. The system prints the name of each unit,
    either a compilation unit or nested unit, as it is being analyzed.
  
  * Finally, you can start
!   ``gdb`` directly on the ``gnat1`` executable. ``gnat1`` is the
    front-end of GNAT, and can be run independently (normally it is just
!   called from ``gcc``). You can use ``gdb`` on ``gnat1`` as you
    would on a C program (but :ref:`The_GNAT_Debugger_GDB` for caveats). The
!   ``where`` command is the first line of attack; the variable
!   ``lineno`` (seen by ``print lineno``), used by the second phase of
!   ``gnat1`` and by the ``gcc`` backend, indicates the source line at
!   which the execution stopped, and ``input_file name`` indicates the name of
    the source file.
  
  
*************** brief description of its organization ma
*** 673,696 ****
  
    .. index:: Annex A (in Ada Reference Manual)
  
! * Ada files with the prefix :file:`a-` are children of `Ada`, as
    defined in Annex A.
  
    .. index:: Annex B (in Ada reference Manual)
  
! * Files with prefix :file:`i-` are children of `Interfaces`, as
    defined in Annex B.
  
    .. index::  System (package in Ada Reference Manual)
  
! * Files with prefix :file:`s-` are children of `System`. This includes
    both language-defined children and GNAT run-time routines.
  
    .. index:: GNAT (package)
  
! * Files with prefix :file:`g-` are children of `GNAT`. These are useful
    general-purpose packages, fully documented in their specs. All
!   the other :file:`.c` files are modifications of common *gcc* files.
  
  
  .. _Getting_Internal_Debugging_Information:
--- 675,698 ----
  
    .. index:: Annex A (in Ada Reference Manual)
  
! * Ada files with the prefix :file:`a-` are children of ``Ada``, as
    defined in Annex A.
  
    .. index:: Annex B (in Ada reference Manual)
  
! * Files with prefix :file:`i-` are children of ``Interfaces``, as
    defined in Annex B.
  
    .. index::  System (package in Ada Reference Manual)
  
! * Files with prefix :file:`s-` are children of ``System``. This includes
    both language-defined children and GNAT run-time routines.
  
    .. index:: GNAT (package)
  
! * Files with prefix :file:`g-` are children of ``GNAT``. These are useful
    general-purpose packages, fully documented in their specs. All
!   the other :file:`.c` files are modifications of common ``gcc`` files.
  
  
  .. _Getting_Internal_Debugging_Information:
*************** for a complete list of supported platfor
*** 754,763 ****
  .. 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 *-E*
! `gnatbind`'s 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:
  
--- 756,765 ----
  .. 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:
  
*************** Here is a simple example:
*** 791,800 ****
       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.
  
    ::
--- 793,802 ----
       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.
  
    ::
*************** requires the program to be compiled with
*** 819,825 ****
       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
--- 821,827 ----
       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
*************** which contains the call to the main prog
*** 847,853 ****
  :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:
  
--- 849,855 ----
  :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:
  
*************** of calls with the same program compiled
*** 873,882 ****
  
  .. rubric:: Tracebacks From Exception Occurrences
  
! Non-symbolic tracebacks are obtained by using the *-E* binder argument.
  The stack traceback is attached to the exception information string, and can
  be retrieved in an exception handler within the Ada program, by means of the
! Ada facilities defined in `Ada.Exceptions`. Here is a simple example:
  
    .. code-block:: ada
  
--- 875,884 ----
  
  .. rubric:: Tracebacks From Exception Occurrences
  
! Non-symbolic tracebacks are obtained by using the :switch:`-E` binder argument.
  The stack traceback is attached to the exception information string, and can
  be retrieved in an exception handler within the Ada program, by means of the
! Ada facilities defined in ``Ada.Exceptions``. Here is a simple example:
  
    .. code-block:: ada
  
*************** This program will output:
*** 922,935 ****
  
  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
! *-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:
  
  
--- 924,937 ----
  
  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:
  
  
*************** convert addresses to strings:
*** 981,987 ****
       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').
  
--- 983,989 ----
       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').
  
*************** Here is an example:
*** 1051,1063 ****
        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 *-largs* section is for Windows platforms. By contrast,
! under Unix there is no need for the *-largs* section.
  Differences across platforms are due to details of linker implementation.
  
  
--- 1053,1065 ----
        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.
  
  
*************** Differences across platforms are due to
*** 1066,1072 ****
  It is possible to get a symbolic stack traceback
  from anywhere in a program, just as for non-symbolic tracebacks.
  The first step is to obtain a non-symbolic
! traceback, and then call `Symbolic_Traceback` to compute the symbolic
  information. Here is an example:
  
    .. code-block:: ada
--- 1068,1074 ----
  It is possible to get a symbolic stack traceback
  from anywhere in a program, just as for non-symbolic tracebacks.
  The first step is to obtain a non-symbolic
! traceback, and then call ``Symbolic_Traceback`` to compute the symbolic
  information. Here is an example:
  
    .. code-block:: ada
*************** information. Here is an example:
*** 1104,1115 ****
  .. rubric:: Automatic Symbolic Tracebacks
  
  Symbolic tracebacks may also be enabled by using the -Es switch to gnatbind (as
! in `gprbuild -g ... -bargs -Es`).
  This will cause the Exception_Information to contain a symbolic traceback,
  which will also be printed if an unhandled exception terminates the
  program.
  
  
  .. index:: Code Coverage
  .. index:: Profiling
  
--- 1106,1211 ----
  .. rubric:: Automatic Symbolic Tracebacks
  
  Symbolic tracebacks may also be enabled by using the -Es switch to gnatbind (as
! in ``gprbuild -g ... -bargs -Es``).
  This will cause the Exception_Information to contain a symbolic traceback,
  which will also be printed if an unhandled exception terminates the
  program.
  
  
+ .. _Pretty-Printers_For_The_GNAT_Runtime:
+ 
+ Pretty-Printers for the GNAT runtime
+ ------------------------------------
+ 
+ As discussed in :title:`Calling User-Defined Subprograms`, GDB's
+ ``print`` command only knows about the physical layout of program data
+ structures and therefore normally displays only low-level dumps, which
+ are often hard to understand.
+ 
+ An example of this is when trying to display the contents of an Ada
+ standard container, such as ``Ada.Containers.Ordered_Maps.Map``:
+ 
+   .. code-block:: ada
+ 
+       with Ada.Containers.Ordered_Maps;
+ 
+       procedure PP is
+          package Int_To_Nat is
+             new Ada.Containers.Ordered_Maps (Integer, Natural);
+ 
+          Map : Int_To_Nat.Map;
+       begin
+          Map.Insert (1, 10);
+          Map.Insert (2, 20);
+          Map.Insert (3, 30);
+ 
+          Map.Clear; --  BREAK HERE
+       end PP;
+ 
+ When this program is built with debugging information and run under
+ GDB up to the ``Map.Clear`` statement, trying to print ``Map`` will
+ yield information that is only relevant to the developers of our standard
+ containers:
+ 
+   ::
+ 
+       (gdb) print map
+       $1 = (
+         tree => (
+           first => 0x64e010,
+           last => 0x64e070,
+           root => 0x64e040,
+           length => 3,
+           tc => (
+             busy => 0,
+             lock => 0
+           )
+         )
+       )
+ 
+ Fortunately, GDB has a feature called `pretty-printers
+ <http://docs.adacore.com/gdb-docs/html/gdb.html#Pretty_002dPrinter-Introduction>`_,
+ which allows customizing how GDB displays data structures. The GDB
+ shipped with GNAT embeds such pretty-printers for the most common
+ containers in the standard library.  To enable them, either run the
+ following command manually under GDB or add it to your ``.gdbinit`` file:
+ 
+   ::
+ 
+       python import gnatdbg; gnatdbg.setup()
+ 
+ Once this is done, GDB's ``print`` command will automatically use
+ these pretty-printers when appropriate. Using the previous example:
+ 
+   ::
+ 
+       (gdb) print map
+       $1 = pp.int_to_nat.map of length 3 = {
+         [1] = 10,
+         [2] = 20,
+         [3] = 30
+       }
+ 
+ Pretty-printers are invoked each time GDB tries to display a value,
+ including when displaying the arguments of a called subprogram (in
+ GDB's ``backtrace`` command) or when printing the value returned by a
+ function (in GDB's ``finish`` command).
+ 
+ To display a value without involving pretty-printers, ``print`` can be
+ invoked with its ``/r`` option:
+ 
+   ::
+ 
+       (gdb) print/r map
+       $1 = (
+         tree => (...
+ 
+ Finer control of pretty-printers is also possible: see `GDB's online
+ documentation
+ <http://docs.adacore.com/gdb-docs/html/gdb.html#Pretty_002dPrinter-Commands>`_
+ for more information.
+ 
+ 
  .. index:: Code Coverage
  .. index:: Profiling
  
*************** program.
*** 1119,1126 ****
  Code Coverage and Profiling
  ===========================
  
! This section describes how to use the `gcov` coverage testing tool and
! the `gprof` profiler tool on Ada programs.
  
  .. index:: !  gcov
  
--- 1215,1222 ----
  Code Coverage and Profiling
  ===========================
  
! This section describes how to use the ``gcov`` coverage testing tool and
! the ``gprof`` profiler tool on Ada programs.
  
  .. index:: !  gcov
  
*************** the `gprof` profiler tool on Ada program
*** 1129,1139 ****
  Code Coverage of Ada Programs with gcov
  ---------------------------------------
  
! `gcov` is a test coverage program: it analyzes the execution of a given
  program on selected tests, to help you determine the portions of the program
  that are still untested.
  
! `gcov` is part of the GCC suite, and is described in detail in the GCC
  User's Guide. You can refer to this documentation for a more complete
  description.
  
--- 1225,1235 ----
  Code Coverage of Ada Programs with gcov
  ---------------------------------------
  
! ``gcov`` is a test coverage program: it analyzes the execution of a given
  program on selected tests, to help you determine the portions of the program
  that are still untested.
  
! ``gcov`` is part of the GCC suite, and is described in detail in the GCC
  User's Guide. You can refer to this documentation for a more complete
  description.
  
*************** details some GNAT-specific features.
*** 1145,1156 ****
  Quick startup guide
  ^^^^^^^^^^^^^^^^^^^
  
! In order to perform coverage analysis of a program using `gcov`, several
  steps are needed:
  
  #. Instrument the code during the compilation process,
  #. Execute the instrumented program, and
! #. Invoke the `gcov` tool to generate the coverage results.
  
  .. index:: -fprofile-arcs (gcc)
  .. index:: -ftest-coverage (gcc
--- 1241,1252 ----
  Quick startup guide
  ^^^^^^^^^^^^^^^^^^^
  
! In order to perform coverage analysis of a program using ``gcov``, several
  steps are needed:
  
  #. Instrument the code during the compilation process,
  #. Execute the instrumented program, and
! #. Invoke the ``gcov`` tool to generate the coverage results.
  
  .. index:: -fprofile-arcs (gcc)
  .. index:: -ftest-coverage (gcc
*************** The source code is not modified in any w
*** 1161,1168 ****
  inserted by gcc during the compilation process. To compile your code with code
  coverage activated, you need to recompile your whole project using the
  switches
! `-fprofile-arcs` and `-ftest-coverage`, and link it using
! `-fprofile-arcs`.
  
    ::
  
--- 1257,1264 ----
  inserted by gcc during the compilation process. To compile your code with code
  coverage activated, you need to recompile your whole project using the
  switches
! :switch:`-fprofile-arcs` and :switch:`-ftest-coverage`, and link it using
! :switch:`-fprofile-arcs`.
  
    ::
  
*************** same location as the :file:`.gcno` files
*** 1179,1186 ****
  will update those files, so that a cumulative result of the covered
  portions of the program is generated.
  
! Finally, you need to call the `gcov` tool. The different options of
! `gcov` are described in the GCC User's Guide, section 'Invoking gcov'.
  
  This will create annotated source files with a :file:`.gcov` extension:
  :file:`my_main.adb` file will be analyzed in :file:`my_main.adb.gcov`.
--- 1275,1282 ----
  will update those files, so that a cumulative result of the covered
  portions of the program is generated.
  
! Finally, you need to call the ``gcov`` tool. The different options of
! ``gcov`` are described in the GCC User's Guide, section *Invoking gcov*.
  
  This will create annotated source files with a :file:`.gcov` extension:
  :file:`my_main.adb` file will be analyzed in :file:`my_main.adb.gcov`.
*************** Because of Ada semantics, portions of th
*** 1195,1210 ****
  several object files. This is the case for example when generics are
  involved, when inlining is active  or when declarations generate  initialisation
  calls. In order to take
! into account this shared code, you need to call `gcov` on all
  source files of the tested program at once.
  
  The list of source files might exceed the system's maximum command line
  length. In order to bypass this limitation, a new mechanism has been
! implemented in `gcov`: you can now list all your project's files into a
  text file, and provide this file to gcov as a parameter,  preceded by a ``@``
  (e.g. :samp:`gcov @mysrclist.txt`).
  
! Note that on AIX compiling a static library with `-fprofile-arcs` is
  not supported as there can be unresolved symbols during the final link.
  
  
--- 1291,1306 ----
  several object files. This is the case for example when generics are
  involved, when inlining is active  or when declarations generate  initialisation
  calls. In order to take
! into account this shared code, you need to call ``gcov`` on all
  source files of the tested program at once.
  
  The list of source files might exceed the system's maximum command line
  length. In order to bypass this limitation, a new mechanism has been
! implemented in ``gcov``: you can now list all your project's files into a
  text file, and provide this file to gcov as a parameter,  preceded by a ``@``
  (e.g. :samp:`gcov @mysrclist.txt`).
  
! Note that on AIX compiling a static library with :switch:`-fprofile-arcs` is
  not supported as there can be unresolved symbols during the final link.
  
  
*************** not supported as there can be unresolved
*** 1216,1229 ****
  Profiling an Ada Program with gprof
  -----------------------------------
  
! This section is not meant to be an exhaustive documentation of `gprof`.
  Full documentation for it can be found in the :title:`GNU Profiler User's Guide`
  documentation that is part of this GNAT distribution.
  
  Profiling a program helps determine the parts of a program that are executed
  most often, and are therefore the most time-consuming.
  
! `gprof` is the standard GNU profiling tool; it has been enhanced to
  better handle Ada programs and multitasking.
  It is currently supported on the following platforms
  
--- 1312,1325 ----
  Profiling an Ada Program with gprof
  -----------------------------------
  
! This section is not meant to be an exhaustive documentation of ``gprof``.
  Full documentation for it can be found in the :title:`GNU Profiler User's Guide`
  documentation that is part of this GNAT distribution.
  
  Profiling a program helps determine the parts of a program that are executed
  most often, and are therefore the most time-consuming.
  
! ``gprof`` is the standard GNU profiling tool; it has been enhanced to
  better handle Ada programs and multitasking.
  It is currently supported on the following platforms
  
*************** It is currently supported on the followi
*** 1231,1237 ****
  * solaris sparc/sparc64/x86
  * windows x86
  
! In order to profile a program using `gprof`, several steps are needed:
  
  #. Instrument the code, which requires a full recompilation of the project with the
     proper switches.
--- 1327,1333 ----
  * solaris sparc/sparc64/x86
  * windows x86
  
! In order to profile a program using ``gprof``, several steps are needed:
  
  #. Instrument the code, which requires a full recompilation of the project with the
     proper switches.
*************** In order to profile a program using `gpr
*** 1239,1245 ****
  #. Execute the program under the analysis conditions, i.e. with the desired
     input.
  
! #. Analyze the results using the `gprof` tool.
  
  The following sections detail the different steps, and indicate how
  to interpret the results.
--- 1335,1341 ----
  #. Execute the program under the analysis conditions, i.e. with the desired
     input.
  
! #. Analyze the results using the ``gprof`` tool.
  
  The following sections detail the different steps, and indicate how
  to interpret the results.
*************** already exists, it will be overwritten.
*** 1289,1295 ****
  Running gprof
  ^^^^^^^^^^^^^
  
! The `gprof` tool is called as follow:
  
    ::
  
--- 1385,1391 ----
  Running gprof
  ^^^^^^^^^^^^^
  
! The ``gprof`` tool is called as follow:
  
    ::
  
*************** The complete form of the gprof command l
*** 1307,1313 ****
  
       $ gprof [switches] [executable [data-file]]
  
! `gprof` supports numerous switches. The order of these
  switch does not matter. The full list of options can be found in
  the GNU Profiler User's Guide documentation that comes with this documentation.
  
--- 1403,1409 ----
  
       $ gprof [switches] [executable [data-file]]
  
! ``gprof`` supports numerous switches. The order of these
  switch does not matter. The full list of options can be found in
  the GNU Profiler User's Guide documentation that comes with this documentation.
  
*************** The following is the subset of those swi
*** 1328,1339 ****
  .. index:: -e (gprof)
  
  :samp:`-e {function_name}`
!   The :samp:`-e {function}` option tells `gprof` not to print
!   information about the function `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
    shown as ``[not printed]``.  More than one ``-e`` option may be
!   given; only one `function_name` may be indicated with each ``-e``
    option.
  
  
--- 1424,1435 ----
  .. index:: -e (gprof)
  
  :samp:`-e {function_name}`
!   The :samp:`-e {function}` option tells ``gprof`` not to print
!   information about the function ``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
    shown as ``[not printed]``.  More than one ``-e`` option may be
!   given; only one ``function_name`` may be indicated with each ``-e``
    option.
  
  
*************** The following is the subset of those swi
*** 1343,1359 ****
    The :samp:`-E {function}` option works like the ``-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 ``-E`` option may be given; only one
!   `function_name` may be indicated with each ``-E`` option.
  
  
  .. index:: -f (gprof)
  
  :samp:`-f {function_name}`
!   The :samp:`-f {function}` option causes `gprof` to limit the
!   call graph to the function `function_name` and its children (and
    their children...).  More than one ``-f`` option may be given;
!   only one `function_name` may be indicated with each ``-f``
    option.
  
  
--- 1439,1455 ----
    The :samp:`-E {function}` option works like the ``-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 :switch:`-E` option may be given; only one
!   ``function_name`` may be indicated with each :switch:`-E`` option.
  
  
  .. index:: -f (gprof)
  
  :samp:`-f {function_name}`
!   The :samp:`-f {function}` option causes ``gprof`` to limit the
!   call graph to the function ``function_name`` and its children (and
    their children...).  More than one ``-f`` option may be given;
!   only one ``function_name`` may be indicated with each ``-f``
    option.
  
  
*************** The following is the subset of those swi
*** 1364,1370 ****
    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 ``-F`` option
!   may be given; only one `function_name` may be indicated with each
    ``-F`` option.  The ``-F`` option overrides the ``-E`` option.
  
  
--- 1460,1466 ----
    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 ``-F`` option
!   may be given; only one ``function_name`` may be indicated with each
    ``-F`` option.  The ``-F`` option overrides the ``-E`` option.
  
  
*************** and some of the techniques for making yo
*** 1401,1407 ****
  .. only:: PRO or GPL
  
     It then documents the unused subprogram/data elimination feature
!    and the *gnatelim* tool,
     which can reduce the size of program executables.
  
  
--- 1497,1503 ----
  .. only:: PRO or GPL
  
     It then documents the unused subprogram/data elimination feature
!    and the ``gnatelim`` tool,
     which can reduce the size of program executables.
  
  
*************** necessary checking is done at compile ti
*** 1455,1461 ****
  .. index:: -gnatp (gcc)
  .. index:: -gnato (gcc)
  
! The gnat switch, *-gnatp* allows this default to be modified. See
  :ref:`Run-Time_Checks`.
  
  Our experience is that the default is suitable for most development
--- 1551,1557 ----
  .. index:: -gnatp (gcc)
  .. index:: -gnato (gcc)
  
! The gnat switch, :switch:`-gnatp` allows this default to be modified. See
  :ref:`Run-Time_Checks`.
  
  Our experience is that the default is suitable for most development
*************** you should read this chapter.
*** 1469,1479 ****
  
  For validity checks, the minimal checks required by the Ada Reference
  Manual (for case statements and assignments to array elements) are on
! by default. These can be suppressed by use of the *-gnatVn* switch.
  Note that in Ada 83, there were no validity checks, so if the Ada 83 mode
  is acceptable (or when comparing GNAT performance with an Ada 83 compiler),
! it may be reasonable to routinely use *-gnatVn*. Validity checks
! are also suppressed entirely if *-gnatp* is used.
  
  .. index:: Overflow checks
  .. index:: Checks, overflow
--- 1565,1575 ----
  
  For validity checks, the minimal checks required by the Ada Reference
  Manual (for case statements and assignments to array elements) are on
! by default. These can be suppressed by use of the :switch:`-gnatVn` switch.
  Note that in Ada 83, there were no validity checks, so if the Ada 83 mode
  is acceptable (or when comparing GNAT performance with an Ada 83 compiler),
! it may be reasonable to routinely use :switch:`-gnatVn`. Validity checks
! are also suppressed entirely if :switch:`-gnatp` is used.
  
  .. index:: Overflow checks
  .. index:: Checks, overflow
*************** are also suppressed entirely if *-gnatp*
*** 1484,1491 ****
  .. index:: pragma Unsuppress
  
  Note that the setting of the switches controls the default setting of
! the checks. They may be modified using either `pragma Suppress` (to
! remove checks) or `pragma Unsuppress` (to add back suppressed
  checks) in the program source.
  
  
--- 1580,1587 ----
  .. index:: pragma Unsuppress
  
  Note that the setting of the switches controls the default setting of
! the checks. They may be modified using either ``pragma Suppress`` (to
! remove checks) or ``pragma Unsuppress`` (to add back suppressed
  checks) in the program source.
  
  
*************** results in some distributed overhead, pa
*** 1505,1512 ****
  exception handlers are used. The reason is that certain sections of code
  have to be marked as non-abortable.
  
! If you use neither the `abort` statement, nor asynchronous transfer
! of control (`select ... then abort`), then this distributed overhead
  is removed, which may have a general positive effect in improving
  overall performance.  Especially code involving frequent use of tasking
  constructs and controlled types will show much improved performance.
--- 1601,1608 ----
  exception handlers are used. The reason is that certain sections of code
  have to be marked as non-abortable.
  
! If you use neither the ``abort`` statement, nor asynchronous transfer
! of control (``select ... then abort``), then this distributed overhead
  is removed, which may have a general positive effect in improving
  overall performance.  Especially code involving frequent use of tasking
  constructs and controlled types will show much improved performance.
*************** The default is optimization off. This re
*** 1549,1589 ****
  times, but GNAT makes absolutely no attempt to optimize, and the
  generated programs are considerably larger and slower than when
  optimization is enabled. You can use the
! *-O* switch (the permitted forms are *-O0*, *-O1*
! *-O2*, *-O3*, and *-Os*)
! to *gcc* to control the optimization level:
  
  
! * *-O0*
      No optimization (the default);
      generates unoptimized code but has
      the fastest compilation time.
  
!     Note that many other compilers do fairly extensive optimization
!     even if 'no optimization' is specified. With gcc, it is
!     very unusual to use -O0 for production if
!     execution time is of any concern, since -O0
!     really does mean no optimization at all. This difference between
!     gcc and other compilers should be kept in mind when doing
!     performance comparisons.
  
! * *-O1*
      Moderate optimization;
      optimizes reasonably well but does not
      degrade compilation time significantly.
  
! * *-O2*
      Full optimization;
      generates highly optimized code and has
      the slowest compilation time.
  
! * *-O3*
!     Full optimization as in *-O2*;
      also uses more aggressive automatic inlining of subprograms within a unit
      (:ref:`Inlining_of_Subprograms`) and attempts to vectorize loops.
  
  
! * *-Os*
      Optimize space usage (code and data) of resulting program.
  
  Higher optimization levels perform more global transformations on the
--- 1645,1684 ----
  times, but GNAT makes absolutely no attempt to optimize, and the
  generated programs are considerably larger and slower than when
  optimization is enabled. You can use the
! :switch:`-O` switch (the permitted forms are :switch:`-O0`, :switch:`-O1`
! :switch:`-O2`, :switch:`-O3`, and :switch:`-Os`)
! to ``gcc`` to control the optimization level:
  
  
! * :switch:`-O0`
      No optimization (the default);
      generates unoptimized code but has
      the fastest compilation time.
  
!     Note that many other compilers do substantial optimization even
!     if 'no optimization' is specified. With gcc, it is very unusual
!     to use :switch:`-O0` for production if execution time is of any concern,
!     since :switch:`-O0` means (almost) no optimization. This difference
!     between gcc and other compilers should be kept in mind when
!     doing performance comparisons.
  
! * :switch:`-O1`
      Moderate optimization;
      optimizes reasonably well but does not
      degrade compilation time significantly.
  
! * :switch:`-O2`
      Full optimization;
      generates highly optimized code and has
      the slowest compilation time.
  
! * :switch:`-O3`
!     Full optimization as in :switch:`-O2`;
      also uses more aggressive automatic inlining of subprograms within a unit
      (:ref:`Inlining_of_Subprograms`) and attempts to vectorize loops.
  
  
! * :switch:`-Os`
      Optimize space usage (code and data) of resulting program.
  
  Higher optimization levels perform more global transformations on the
*************** of the optimization settings in general
*** 1599,1608 ****
  See the *Options That Control Optimization* section in
  :title:`Using the GNU Compiler Collection (GCC)`
  for details about
! the *-O* settings and a number of *-f* options that
  individually enable or disable specific optimizations.
  
! Unlike some other compilation systems, *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
--- 1694,1703 ----
  See the *Options That Control Optimization* section in
  :title:`Using the GNU Compiler Collection (GCC)`
  for details about
! the :switch:`-O` settings and a number of :switch:`-f` options that
  individually enable or disable specific optimizations.
  
! Unlike some other compilation systems, ``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 t
*** 1610,1619 ****
  generator, which in practice is highly reliable at all optimization
  levels.
  
! Note regarding the use of *-O3*: The use of this optimization level
! is generally discouraged with GNAT, since it often results in larger
! executables which may run more slowly. See further discussion of this point
! in :ref:`Inlining_of_Subprograms`.
  
  
  .. _Debugging_Optimized_Code:
--- 1705,1714 ----
  generator, which in practice is highly reliable at all optimization
  levels.
  
! Note regarding the use of :switch:`-O3`: The use of this optimization level
! ought not to be automatically preferred over that of level :switch:`-O2`,
! since it often results in larger executables which may run more slowly.
! See further discussion of this point in :ref:`Inlining_of_Subprograms`.
  
  
  .. _Debugging_Optimized_Code:
*************** source-level constructs will have been e
*** 1631,1643 ****
  For example, if a loop is strength-reduced, the loop
  control variable may be completely eliminated and thus cannot be
  displayed in the debugger.
! This can only happen at *-O2* or *-O3*.
  Explicit temporary variables that you code might be eliminated at
! level *-O1* or higher.
  
  .. index:: -g (gcc)
  
! The use of the *-g* switch,
  which is needed for source-level debugging,
  affects the size of the program executable on disk,
  and indeed the debugging information can be quite large.
--- 1726,1738 ----
  For example, if a loop is strength-reduced, the loop
  control variable may be completely eliminated and thus cannot be
  displayed in the debugger.
! This can only happen at :switch:`-O2` or :switch:`-O3`.
  Explicit temporary variables that you code might be eliminated at
! level :switch:`-O1` or higher.
  
  .. index:: -g (gcc)
  
! The use of the :switch:`-g` switch,
  which is needed for source-level debugging,
  affects the size of the program executable on disk,
  and indeed the debugging information can be quite large.
*************** of the debugging data.  You therefore ne
*** 1650,1656 ****
  anomalous situations that may arise while debugging optimized code.
  These are the most common cases:
  
! * *The 'hopping Program Counter':*  Repeated `step` or `next`
    commands show
    the PC bouncing back and forth in the code.  This may result from any of
    the following optimizations:
--- 1745,1751 ----
  anomalous situations that may arise while debugging optimized code.
  These are the most common cases:
  
! * *The 'hopping Program Counter':*  Repeated ``step`` or ``next``
    commands show
    the PC bouncing back and forth in the code.  This may result from any of
    the following optimizations:
*************** These are the most common cases:
*** 1676,1683 ****
    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 `goto`, a `return`, or
!   a `break` in a C `switch` statement.
  
  * *The 'roving variable':* The symptom is an unexpected value in a variable.
    There are various reasons for this effect:
--- 1771,1778 ----
    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 ``goto``, a ``return``, or
!   a ``break`` in a C ``switch`` statement.
  
  * *The 'roving variable':* The symptom is an unexpected value in a variable.
    There are various reasons for this effect:
*************** These are the most common cases:
*** 1711,1723 ****
    strange value to see if code motion had simply moved the variable's
    assignments later.
  
! In light of such anomalies, a recommended technique is to use *-O0*
  early in the software development cycle, when extensive debugging capabilities
! are most needed, and then move to *-O1* and later *-O2* as
  the debugger becomes less critical.
! Whether to use the *-g* switch in the release version is
  a release management issue.
! Note that if you use *-g* you can then use the *strip* program
  on the resulting executable,
  which removes both debugging information and global symbols.
  
--- 1806,1818 ----
    strange value to see if code motion had simply moved the variable's
    assignments later.
  
! In light of such anomalies, a recommended technique is to use :switch:`-O0`
  early in the software development cycle, when extensive debugging capabilities
! are most needed, and then move to :switch:`-O1` and later :switch:`-O2` as
  the debugger becomes less critical.
! Whether to use the :switch:`-g` switch in the release version is
  a release management issue.
! Note that if you use :switch:`-g` you can then use the ``strip`` program
  on the resulting executable,
  which removes both debugging information and global symbols.
  
*************** Inlining of Subprograms
*** 1730,1769 ****
  A call to a subprogram in the current unit is inlined if all the
  following conditions are met:
  
! * The optimization level is at least *-O1*.
  
  * The called subprogram is suitable for inlining: It must be small enough
!   and not contain something that *gcc* cannot support in inlined
    subprograms.
  
    .. index:: pragma Inline
    .. index:: Inline
  
! * Any one of the following applies: `pragma Inline` is applied to the
    subprogram; the subprogram is local to the unit and called once from
!   within it; the subprogram is small and optimization level *-O2* is
!   specified; optimization level *-O3* is specified.
  
  Calls to subprograms in |withed| 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:
  
! * The optimization level is at least *-O1*.
  
  * The called subprogram is suitable for inlining: It must be small enough
!   and not contain something that *gcc* cannot support in inlined
    subprograms.
  
! * There is a `pragma Inline` for the subprogram.
  
! * The *-gnatn* switch is used on the command line.
  
  Even if all these conditions are met, it may not be possible for
  the compiler to inline the call, due to the length of the body,
  or features in the body that make it impossible for the compiler
  to do the inlining.
  
! Note that specifying the *-gnatn* switch causes additional
  compilation dependencies. Consider the following:
  
    .. code-block:: ada
--- 1825,1864 ----
  A call to a subprogram in the current unit is inlined if all the
  following conditions are met:
  
! * The optimization level is at least :switch:`-O1`.
  
  * The called subprogram is suitable for inlining: It must be small enough
!   and not contain something that ``gcc`` cannot support in inlined
    subprograms.
  
    .. index:: pragma Inline
    .. index:: Inline
  
! * Any one of the following applies: ``pragma Inline`` is applied to the
    subprogram; the subprogram is local to the unit and called once from
!   within it; the subprogram is small and optimization level :switch:`-O2` is
!   specified; optimization level :switch:`-O3` is specified.
  
  Calls to subprograms in |withed| 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:
  
! * The optimization level is at least :switch:`-O1`.
  
  * The called subprogram is suitable for inlining: It must be small enough
!   and not contain something that ``gcc`` cannot support in inlined
    subprograms.
  
! * There is a ``pragma Inline`` for the subprogram.
  
! * The :switch:`-gnatn` switch is used on the command line.
  
  Even if all these conditions are met, it may not be possible for
  the compiler to inline the call, due to the length of the body,
  or features in the body that make it impossible for the compiler
  to do the inlining.
  
! Note that specifying the :switch:`-gnatn` switch causes additional
  compilation dependencies. Consider the following:
  
    .. code-block:: ada
*************** compilation dependencies. Consider the f
*** 1783,1845 ****
           R.Q;
        end Main;
  
! With the default behavior (no *-gnatn* switch specified), the
! compilation of the `Main` procedure depends only on its own source,
  :file:`main.adb`, and the spec of the package in file :file:`r.ads`. This
! means that editing the body of `R` does not require recompiling
! `Main`.
  
! On the other hand, the call `R.Q` is not inlined under these
! circumstances. If the *-gnatn* switch is present when `Main`
! is compiled, the call will be inlined if the body of `Q` is small
! enough, but now `Main` depends on the body of `R` in
  :file:`r.adb` as well as on the spec. This means that if this body is edited,
  the main program must be recompiled. Note that this extra dependency
! occurs whether or not the call is in fact inlined by *gcc*.
  
! The use of front end inlining with *-gnatN* generates similar
  additional dependencies.
  
  .. index:: -fno-inline (gcc)
  
! Note: The *-fno-inline* switch overrides all other conditions and ensures that
! no inlining occurs, unless requested with pragma Inline_Always for *gcc*
! back-ends. The extra dependences resulting from *-gnatn* will still be active,
  even if this switch is used to suppress the resulting inlining actions.
  
  .. index:: -fno-inline-functions (gcc)
  
! Note: The *-fno-inline-functions* switch can be used to prevent
! automatic inlining of subprograms if *-O3* is used.
  
  .. index:: -fno-inline-small-functions (gcc)
  
! Note: The *-fno-inline-small-functions* switch can be used to prevent
! automatic inlining of small subprograms if *-O2* is used.
  
  .. index:: -fno-inline-functions-called-once (gcc)
  
! Note: The *-fno-inline-functions-called-once* switch
  can be used to prevent inlining of subprograms local to the unit
! and called once from within it if *-O1* is used.
  
! Note regarding the use of *-O3*: *-gnatn* is made up of two
! sub-switches *-gnatn1* and *-gnatn2* that can be directly
! specified in lieu of it, *-gnatn* being translated into one of them
! based on the optimization level. With *-O2* or below, *-gnatn*
! is equivalent to *-gnatn1* which activates pragma `Inline` with
! moderate inlining across modules. With *-O3*, *-gnatn* is
! equivalent to *-gnatn2* which activates pragma `Inline` with
! full inlining across modules. If you have used pragma `Inline` in
! appropriate cases, then it is usually much better to use *-O2*
! and *-gnatn* and avoid the use of *-O3* which has the additional
  effect of inlining subprograms you did not think should be inlined. We have
! found that the use of *-O3* may slow down the compilation and increase
  the code size by performing excessive inlining, leading to increased
  instruction cache pressure from the increased code size and thus minor
  performance improvements. So the bottom line here is that you should not
! automatically assume that *-O3* is better than *-O2*, and
! indeed you should use *-O3* only if tests show that it actually
  improves performance for your program.
  
  .. _Floating_Point_Operations:
--- 1878,1940 ----
           R.Q;
        end Main;
  
! With the default behavior (no :switch:`-gnatn` switch specified), the
! compilation of the ``Main`` procedure depends only on its own source,
  :file:`main.adb`, and the spec of the package in file :file:`r.ads`. This
! means that editing the body of ``R`` does not require recompiling
! ``Main``.
  
! On the other hand, the call ``R.Q`` is not inlined under these
! circumstances. If the :switch:`-gnatn` switch is present when ``Main``
! is compiled, the call will be inlined if the body of ``Q`` is small
! enough, but now ``Main`` depends on the body of ``R`` in
  :file:`r.adb` as well as on the spec. This means that if this body is edited,
  the main program must be recompiled. Note that this extra dependency
! occurs whether or not the call is in fact inlined by ``gcc``.
  
! The use of front end inlining with :switch:`-gnatN` generates similar
  additional dependencies.
  
  .. index:: -fno-inline (gcc)
  
! Note: The :switch:`-fno-inline` switch overrides all other conditions and ensures that
! no inlining occurs, unless requested with pragma Inline_Always for ``gcc``
! back-ends. The extra dependences resulting from :switch:`-gnatn` will still be active,
  even if this switch is used to suppress the resulting inlining actions.
  
  .. index:: -fno-inline-functions (gcc)
  
! Note: The :switch:`-fno-inline-functions` switch can be used to prevent
! automatic inlining of subprograms if :switch:`-O3` is used.
  
  .. index:: -fno-inline-small-functions (gcc)
  
! Note: The :switch:`-fno-inline-small-functions` switch can be used to prevent
! automatic inlining of small subprograms if :switch:`-O2` is used.
  
  .. index:: -fno-inline-functions-called-once (gcc)
  
! Note: The :switch:`-fno-inline-functions-called-once` switch
  can be used to prevent inlining of subprograms local to the unit
! and called once from within it if :switch:`-O1` is used.
  
! Note regarding the use of :switch:`-O3`: :switch:`-gnatn` is made up of two
! sub-switches :switch:`-gnatn1` and :switch:`-gnatn2` that can be directly
! specified in lieu of it, :switch:`-gnatn` being translated into one of them
! based on the optimization level. With :switch:`-O2` or below, :switch:`-gnatn`
! is equivalent to :switch:`-gnatn1` which activates pragma ``Inline`` with
! moderate inlining across modules. With :switch:`-O3`, :switch:`-gnatn` is
! equivalent to :switch:`-gnatn2` which activates pragma ``Inline`` with
! full inlining across modules. If you have used pragma ``Inline`` in
! appropriate cases, then it is usually much better to use :switch:`-O2`
! and :switch:`-gnatn` and avoid the use of :switch:`-O3` which has the additional
  effect of inlining subprograms you did not think should be inlined. We have
! found that the use of :switch:`-O3` may slow down the compilation and increase
  the code size by performing excessive inlining, leading to increased
  instruction cache pressure from the increased code size and thus minor
  performance improvements. So the bottom line here is that you should not
! automatically assume that :switch:`-O3` is better than :switch:`-O2`, and
! indeed you should use :switch:`-O3` only if tests show that it actually
  improves performance for your program.
  
  .. _Floating_Point_Operations:
*************** Vectorization of loops
*** 1898,1920 ****
  
  .. index:: Optimization Switches
  
! You can take advantage of the auto-vectorizer present in the *gcc*
  back end to vectorize loops with GNAT.  The corresponding command line switch
! is *-ftree-vectorize* but, as it is enabled by default at *-O3*
  and other aggressive optimizations helpful for vectorization also are enabled
! by default at this level, using *-O3* directly is recommended.
  
  You also need to make sure that the target architecture features a supported
  SIMD instruction set.  For example, for the x86 architecture, you should at
! least specify *-msse2* to get significant vectorization (but you don't
  need to specify it for x86-64 as it is part of the base 64-bit architecture).
! Similarly, for the PowerPC architecture, you should specify *-maltivec*.
  
! The preferred loop form for vectorization is the `for` iteration scheme.
! Loops with a `while` iteration scheme can also be vectorized if they are
  very simple, but the vectorizer will quickly give up otherwise.  With either
  iteration scheme, the flow of control must be straight, in particular no
! `exit` statement may appear in the loop body.  The loop may however
  contain a single nested loop, if it can be vectorized when considered alone:
  
    .. code-block:: ada
--- 1993,2015 ----
  
  .. index:: Optimization Switches
  
! You can take advantage of the auto-vectorizer present in the ``gcc``
  back end to vectorize loops with GNAT.  The corresponding command line switch
! is :switch:`-ftree-vectorize` but, as it is enabled by default at :switch:`-O3`
  and other aggressive optimizations helpful for vectorization also are enabled
! by default at this level, using :switch:`-O3` directly is recommended.
  
  You also need to make sure that the target architecture features a supported
  SIMD instruction set.  For example, for the x86 architecture, you should at
! least specify :switch:`-msse2` to get significant vectorization (but you don't
  need to specify it for x86-64 as it is part of the base 64-bit architecture).
! Similarly, for the PowerPC architecture, you should specify :switch:`-maltivec`.
  
! The preferred loop form for vectorization is the ``for`` iteration scheme.
! Loops with a ``while`` iteration scheme can also be vectorized if they are
  very simple, but the vectorizer will quickly give up otherwise.  With either
  iteration scheme, the flow of control must be straight, in particular no
! ``exit`` statement may appear in the loop body.  The loop may however
  contain a single nested loop, if it can be vectorized when considered alone:
  
    .. code-block:: ada
*************** contain a single nested loop, if it can
*** 1934,1940 ****
  The vectorizable operations depend on the targeted SIMD instruction set, but
  the adding and some of the multiplying operators are generally supported, as
  well as the logical operators for modular types. Note that compiling
! with *-gnatp* might well reveal cases where some checks do thwart
  vectorization.
  
  Type conversions may also prevent vectorization if they involve semantics that
--- 2029,2035 ----
  The vectorizable operations depend on the targeted SIMD instruction set, but
  the adding and some of the multiplying operators are generally supported, as
  well as the logical operators for modular types. Note that compiling
! with :switch:`-gnatp` might well reveal cases where some checks do thwart
  vectorization.
  
  Type conversions may also prevent vectorization if they involve semantics that
*************** The solution in this case is to use the
*** 1946,1952 ****
  
         Integer (S'Truncation (F))
  
! if `S` is the subtype of floating-point object `F`.
  
  In most cases, the vectorizable loops are loops that iterate over arrays.
  All kinds of array types are supported, i.e. constrained array types with
--- 2041,2047 ----
  
         Integer (S'Truncation (F))
  
! if ``S`` is the subtype of floating-point object ``F``.
  
  In most cases, the vectorizable loops are loops that iterate over arrays.
  All kinds of array types are supported, i.e. constrained array types with
*************** bounds of the array, the more fallback c
*** 1980,1986 ****
  fix things up at run time.
  
  It is possible to specify that a given loop should be subject to vectorization
! preferably to other optimizations by means of pragma `Loop_Optimize`:
  
    .. code-block:: ada
  
--- 2075,2081 ----
  fix things up at run time.
  
  It is possible to specify that a given loop should be subject to vectorization
! preferably to other optimizations by means of pragma ``Loop_Optimize``:
  
    .. code-block:: ada
  
*************** Other Optimization Switches
*** 2027,2040 ****
  
  .. index:: Optimization Switches
  
! Since `GNAT` uses the *gcc* back end, all the specialized
! *gcc* optimization switches are potentially usable. These switches
  have not been extensively tested with GNAT but can generally be expected
! to work. Examples of switches in this category are *-funroll-loops*
! and the various target-specific *-m* options (in particular, it has
! been observed that *-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 :title:`Using the GNU Compiler Collection (GCC)`.
  
  
--- 2122,2135 ----
  
  .. index:: Optimization Switches
  
! Since GNAT uses the ``gcc`` back end, all the specialized
! ``gcc`` optimization switches are potentially usable. These switches
  have not been extensively tested with GNAT but can generally be expected
! to work. Examples of switches in this category are :switch:`-funroll-loops`
! and the various target-specific :switch:`-m` options (in particular, it has
! been observed that :switch:`-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 :title:`Using the GNU Compiler Collection (GCC)`.
  
  
*************** the following example:
*** 2073,2094 ****
          ...
       end R;
  
! In this example, since the variable `Int1V` can only access objects
! of type `Int1`, and `Int2V` can only access objects of type
! `Int2`, there is no possibility that the assignment to
! `Int2V.all` affects the value of `Int1V.all`. This means that
! the compiler optimizer can "know" that the value `Int1V.all` is constant
  for all iterations of the loop and avoid the extra memory reference
  required to dereference it each time through the loop.
  
  This kind of optimization, called strict aliasing analysis, is
! triggered by specifying an optimization level of *-O2* or
! higher or *-Os* and allows `GNAT` to generate more efficient code
  when access values are involved.
  
  However, although this optimization is always correct in terms of
  the formal semantics of the Ada Reference Manual, difficulties can
! arise if features like `Unchecked_Conversion` are used to break
  the typing system. Consider the following complete program example:
  
    .. code-block:: ada
--- 2168,2189 ----
          ...
       end R;
  
! In this example, since the variable ``Int1V`` can only access objects
! of type ``Int1``, and ``Int2V`` can only access objects of type
! ``Int2``, there is no possibility that the assignment to
! ``Int2V.all`` affects the value of ``Int1V.all``. This means that
! the compiler optimizer can "know" that the value ``Int1V.all`` is constant
  for all iterations of the loop and avoid the extra memory reference
  required to dereference it each time through the loop.
  
  This kind of optimization, called strict aliasing analysis, is
! triggered by specifying an optimization level of :switch:`-O2` or
! higher or :switch:`-Os` and allows GNAT to generate more efficient code
  when access values are involved.
  
  However, although this optimization is always correct in terms of
  the formal semantics of the Ada Reference Manual, difficulties can
! arise if features like ``Unchecked_Conversion`` are used to break
  the typing system. Consider the following complete program example:
  
    .. code-block:: ada
*************** the typing system. Consider the followin
*** 2127,2137 ****
           put_line (int1'image (v1.all));
        end;
  
! This program prints out 0 in *-O0* or *-O1*
! mode, but it prints out 1 in *-O2* mode. That's
  because in strict aliasing mode, the compiler can and
! does assume that the assignment to `v2.all` could not
! affect the value of `v1.all`, since different types
  are involved.
  
  This behavior is not a case of non-conformance with the standard, since
--- 2222,2232 ----
           put_line (int1'image (v1.all));
        end;
  
! This program prints out 0 in :switch:`-O0` or :switch:`-O1`
! mode, but it prints out 1 in :switch:`-O2` mode. That's
  because in strict aliasing mode, the compiler can and
! does assume that the assignment to ``v2.all`` could not
! affect the value of ``v1.all``, since different types
  are involved.
  
  This behavior is not a case of non-conformance with the standard, since
*************** the Ada RM specifies that an unchecked c
*** 2139,2145 ****
  bit pattern is not a correct value of the target type can result in an
  abnormal value and attempting to reference an abnormal value makes the
  execution of a program erroneous.  That's the case here since the result
! does not point to an object of type `int2`.  This means that the
  effect is entirely unpredictable.
  
  However, although that explanation may satisfy a language
--- 2234,2240 ----
  bit pattern is not a correct value of the target type can result in an
  abnormal value and attempting to reference an abnormal value makes the
  execution of a program erroneous.  That's the case here since the result
! does not point to an object of type ``int2``.  This means that the
  effect is entirely unpredictable.
  
  However, although that explanation may satisfy a language
*************** unchecked conversion generates a warning
*** 2158,2189 ****
       p2.adb:5:07: warning:  or use "pragma No_Strict_Aliasing (a2);"
  
  Unfortunately the problem is recognized when compiling the body of
! package `p2`, but the actual "bad" code is generated while
! compiling the body of `m` and this latter compilation does not see
! the suspicious `Unchecked_Conversion`.
  
  As implied by the warning message, there are approaches you can use to
  avoid the unwanted strict aliasing optimization in a case like this.
  
! One possibility is to simply avoid the use of *-O2*, but
  that is a bit drastic, since it throws away a number of useful
  optimizations that do not involve strict aliasing assumptions.
  
  A less drastic approach is to compile the program using the
! option *-fno-strict-aliasing*. Actually it is only the
  unit containing the dereferencing of the suspicious pointer
  that needs to be compiled. So in this case, if we compile
! unit `m` with this switch, then we get the expected
  value of zero printed. Analyzing which units might need
  the switch can be painful, so a more reasonable approach
! is to compile the entire program with options *-O2*
! and *-fno-strict-aliasing*. If the performance is
  satisfactory with this combination of options, then the
  advantage is that the entire issue of possible "wrong"
  optimization due to strict aliasing is avoided.
  
  To avoid the use of compiler switches, the configuration
! pragma `No_Strict_Aliasing` with no parameters may be
  used to specify that for all access types, the strict
  aliasing optimization should be suppressed.
  
--- 2253,2284 ----
       p2.adb:5:07: warning:  or use "pragma No_Strict_Aliasing (a2);"
  
  Unfortunately the problem is recognized when compiling the body of
! package ``p2``, but the actual "bad" code is generated while
! compiling the body of ``m`` and this latter compilation does not see
! the suspicious ``Unchecked_Conversion``.
  
  As implied by the warning message, there are approaches you can use to
  avoid the unwanted strict aliasing optimization in a case like this.
  
! One possibility is to simply avoid the use of :switch:`-O2`, but
  that is a bit drastic, since it throws away a number of useful
  optimizations that do not involve strict aliasing assumptions.
  
  A less drastic approach is to compile the program using the
! option :switch:`-fno-strict-aliasing`. Actually it is only the
  unit containing the dereferencing of the suspicious pointer
  that needs to be compiled. So in this case, if we compile
! unit ``m`` with this switch, then we get the expected
  value of zero printed. Analyzing which units might need
  the switch can be painful, so a more reasonable approach
! is to compile the entire program with options :switch:`-O2`
! and :switch:`-fno-strict-aliasing`. If the performance is
  satisfactory with this combination of options, then the
  advantage is that the entire issue of possible "wrong"
  optimization due to strict aliasing is avoided.
  
  To avoid the use of compiler switches, the configuration
! pragma ``No_Strict_Aliasing`` with no parameters may be
  used to specify that for all access types, the strict
  aliasing optimization should be suppressed.
  
*************** access type identified as problematic.
*** 2195,2201 ****
  First, if a careful analysis of uses of the pointer shows
  that there are no possible problematic references, then
  the warning can be suppressed by bracketing the
! instantiation of `Unchecked_Conversion` to turn
  the warning off:
  
    .. code-block:: ada
--- 2290,2296 ----
  First, if a careful analysis of uses of the pointer shows
  that there are no possible problematic references, then
  the warning can be suppressed by bracketing the
! instantiation of ``Unchecked_Conversion`` to turn
  the warning off:
  
    .. code-block:: ada
*************** case we can take one of two other approa
*** 2212,2219 ****
  The first possibility is to move the instantiation of unchecked
  conversion to the unit in which the type is declared. In
  this example, we would move the instantiation of
! `Unchecked_Conversion` from the body of package
! `p2` to the spec of package `p1`. Now the
  warning disappears. That's because any use of the
  access type knows there is a suspicious unchecked
  conversion, and the strict aliasing optimization
--- 2307,2314 ----
  The first possibility is to move the instantiation of unchecked
  conversion to the unit in which the type is declared. In
  this example, we would move the instantiation of
! ``Unchecked_Conversion`` from the body of package
! ``p2`` to the spec of package ``p1``. Now the
  warning disappears. That's because any use of the
  access type knows there is a suspicious unchecked
  conversion, and the strict aliasing optimization
*************** is automatically suppressed for the type
*** 2222,2228 ****
  If it is not practical to move the unchecked conversion to the same unit
  in which the destination access type is declared (perhaps because the
  source type is not visible in that unit), you may use pragma
! `No_Strict_Aliasing` for the type. This pragma must occur in the
  same declarative sequence as the declaration of the access type:
  
    .. code-block:: ada
--- 2317,2323 ----
  If it is not practical to move the unchecked conversion to the same unit
  in which the destination access type is declared (perhaps because the
  source type is not visible in that unit), you may use pragma
! ``No_Strict_Aliasing`` for the type. This pragma must occur in the
  same declarative sequence as the declaration of the access type:
  
    .. code-block:: ada
*************** same declarative sequence as the declara
*** 2231,2237 ****
       pragma No_Strict_Aliasing (a2);
  
  Here again, the compiler now knows that the strict aliasing optimization
! should be suppressed for any reference to type `a2` and the
  expected behavior is obtained.
  
  Finally, note that although the compiler can generate warnings for
--- 2326,2332 ----
       pragma No_Strict_Aliasing (a2);
  
  Here again, the compiler now knows that the strict aliasing optimization
! should be suppressed for any reference to type ``a2`` and the
  expected behavior is obtained.
  
  Finally, note that although the compiler can generate warnings for
*************** have significant benefits. We have seen
*** 2251,2263 ****
  application code where the time is increased by up to 5% by turning
  this optimization off. If you have code that includes significant
  usage of unchecked conversion, you might want to just stick with
! *-O1* and avoid the entire issue. If you get adequate
  performance at this level of optimization level, that's probably
  the safest approach. If tests show that you really need higher
! levels of optimization, then you can experiment with *-O2*
! and *-O2 -fno-strict-aliasing* to see how much effect this
  has on size and speed of the code. If you really need to use
! *-O2* with strict aliasing in effect, then you should
  review any uses of unchecked conversion of access types,
  particularly if you are getting the warnings described above.
  
--- 2346,2358 ----
  application code where the time is increased by up to 5% by turning
  this optimization off. If you have code that includes significant
  usage of unchecked conversion, you might want to just stick with
! :switch:`-O1` and avoid the entire issue. If you get adequate
  performance at this level of optimization level, that's probably
  the safest approach. If tests show that you really need higher
! levels of optimization, then you can experiment with :switch:`-O2`
! and :switch:`-O2 -fno-strict-aliasing` to see how much effect this
  has on size and speed of the code. If you really need to use
! :switch:`-O2` with strict aliasing in effect, then you should
  review any uses of unchecked conversion of access types,
  particularly if you are getting the warnings described above.
  
*************** Consider the following example:
*** 2302,2310 ****
       end;
  
  where Get_String is a C function that uses the address in Temp to
! modify the variable `Name`. This code is dubious, and arguably
  erroneous, and the compiler would be entitled to assume that
! `Name` is never modified, and generate code accordingly.
  
  However, in practice, this would cause some existing code that
  seems to work with no optimization to start failing at high
--- 2397,2405 ----
       end;
  
  where Get_String is a C function that uses the address in Temp to
! modify the variable ``Name``. This code is dubious, and arguably
  erroneous, and the compiler would be entitled to assume that
! ``Name`` is never modified, and generate code accordingly.
  
  However, in practice, this would cause some existing code that
  seems to work with no optimization to start failing at high
*************** this example:
*** 2354,2360 ****
       ...
       X := RV.B;
  
! You cannot assume that the reference to `RV.B`
  will read the entire 32-bit
  variable with a single load instruction. It is perfectly legitimate if
  the hardware allows it to do a byte read of just the B field. This read
--- 2449,2455 ----
       ...
       X := RV.B;
  
! You cannot assume that the reference to ``RV.B``
  will read the entire 32-bit
  variable with a single load instruction. It is perfectly legitimate if
  the hardware allows it to do a byte read of just the B field. This read
*************** Any assumption to the contrary is non-po
*** 2364,2370 ****
  examine the assembly language and see a full 32-bit load, this might
  change in a future version of the compiler.
  
! If your application requires that all accesses to `RV` in this
  example be full 32-bit loads, you need to make a copy for the access
  as in:
  
--- 2459,2465 ----
  examine the assembly language and see a full 32-bit load, this might
  change in a future version of the compiler.
  
! If your application requires that all accesses to ``RV`` in this
  example be full 32-bit loads, you need to make a copy for the access
  as in:
  
*************** to be modified, only the task definition
*** 2442,2467 ****
  
  .. _Text_IO_Suggestions:
  
! `Text_IO` Suggestions
! ---------------------
  
  .. index:: Text_IO and performance
  
! The `Ada.Text_IO` package has fairly high overheads due in part to
  the requirement of maintaining page and line counts. If performance
! is critical, a recommendation is to use `Stream_IO` instead of
! `Text_IO` for volume output, since this package has less overhead.
  
! If `Text_IO` must be used, note that by default output to the standard
  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
  of the standard output file, or change the standard output file to
! be buffered using `Interfaces.C_Streams.setvbuf`.
  
  
  .. _Reducing_Size_of_Executables_with_Unused_Subprogram/Data_Elimination:
--- 2537,2562 ----
  
  .. _Text_IO_Suggestions:
  
! ``Text_IO`` Suggestions
! -----------------------
  
  .. index:: Text_IO and performance
  
! The ``Ada.Text_IO`` package has fairly high overheads due in part to
  the requirement of maintaining page and line counts. If performance
! is critical, a recommendation is to use ``Stream_IO`` instead of
! ``Text_IO`` for volume output, since this package has less overhead.
  
! If ``Text_IO`` must be used, note that by default output to the standard
  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
  of the standard output file, or change the standard output file to
! be buffered using ``Interfaces.C_Streams.setvbuf``.
  
  
  .. _Reducing_Size_of_Executables_with_Unused_Subprogram/Data_Elimination:
*************** is directly performed by the linker.
*** 2503,2509 ****
  
  In order to do this, it has to work with objects compiled with the
  following options:
! *-ffunction-sections* *-fdata-sections*.
  
  These options are usable with C and Ada files.
  They will place respectively each
--- 2598,2604 ----
  
  In order to do this, it has to work with objects compiled with the
  following options:
! :switch:`-ffunction-sections` :switch:`-fdata-sections`.
  
  These options are usable with C and Ada files.
  They will place respectively each
*************** function or data in a separate section i
*** 2511,2526 ****
  
  Once the objects and static libraries are created with these options, the
  linker can perform the dead code elimination. You can do this by setting
! the *-Wl,--gc-sections* option to gcc command or in the
! *-largs* section of *gnatmake*. This will perform a
  garbage collection of code and data never referenced.
  
! If the linker performs a partial link (*-r* linker option), then you
! will need to provide the entry point using the *-e* / *--entry*
  linker option.
  
! Note that objects compiled without the *-ffunction-sections* and
! *-fdata-sections* options can still be linked with the executable.
  However, no dead code elimination will be performed on those objects (they will
  be linked as is).
  
--- 2606,2621 ----
  
  Once the objects and static libraries are created with these options, the
  linker can perform the dead code elimination. You can do this by setting
! the :switch:`-Wl,--gc-sections` option to gcc command or in the
! :switch:`-largs` section of ``gnatmake``. This will perform a
  garbage collection of code and data never referenced.
  
! If the linker performs a partial link (:switch:`-r` linker option), then you
! will need to provide the entry point using the :switch:`-e` / :switch:`--entry`
  linker option.
  
! Note that objects compiled without the :switch:`-ffunction-sections` and
! :switch:`-fdata-sections` options can still be linked with the executable.
  However, no dead code elimination will be performed on those objects (they will
  be linked as is).
  
*************** Here is a simple example:
*** 2565,2571 ****
          end Unused;
       end Aux;
  
! `Unused` and `Unused_Data` are never referenced in this code
  excerpt, and hence they may be safely removed from the final executable.
  
    ::
--- 2660,2666 ----
          end Unused;
       end Aux;
  
! ``Unused`` and ``Unused_Data`` are never referenced in this code
  excerpt, and hence they may be safely removed from the final executable.
  
    ::
*************** excerpt, and hence they may be safely re
*** 2585,2688 ****
       02005350 T aux__used
       0201ffe0 B aux__used_data
  
! It can be observed that the procedure `Unused` and the object
! `Unused_Data` are removed by the linker when using the
  appropriate options.
  
  .. only:: PRO or GPL
  
    .. _Reducing_Size_of_Ada_Executables_with_gnatelim:
  
!   Reducing Size of Ada Executables with `gnatelim`
!   ------------------------------------------------
  
    .. index:: gnatelim
  
!   This section describes *gnatelim*, a tool which detects unused
    subprograms and helps the compiler to create a smaller executable for your
    program.
  
!   *gnatelim* is a project-aware tool.
    (See :ref:`Using_Project_Files_with_GNAT_Tools` for a description of
!   the project-related switches but note that *gnatelim* does not support
    the :samp:`-U`, :samp:`-U {main_unit}`, :samp:`--subdirs={dir}`, or
    :samp:`--no_objects_dir` switches.)
    The project file package that can specify
!   *gnatelim* switches is named ``Eliminate``.
  
    .. _About_gnatelim:
  
!   About `gnatelim`
!   ^^^^^^^^^^^^^^^^
  
    When a program shares a set of Ada
    packages with other programs, it may happen that this program uses
    only a fraction of the subprograms defined in these packages. The code
    created for these unused subprograms increases the size of the executable.
  
!   `gnatelim` tracks unused subprograms in an Ada program and
!   outputs a list of GNAT-specific pragmas `Eliminate` marking all the
    subprograms that are declared but never called. By placing the list of
!   `Eliminate` pragmas in the GNAT configuration file :file:`gnat.adc` and
    recompiling your program, you may decrease the size of its executable,
    because the compiler will not generate the code for 'eliminated' subprograms.
!   See `Pragma_Eliminate` in the :title:`GNAT_Reference_Manual` for more
    information about this pragma.
  
!   `gnatelim` needs as its input data the name of the main subprogram.
  
!   If a set of source files is specified as `gnatelim` arguments, it
    treats these files as a complete set of sources making up a program to
    analyse, and analyses only these sources.
  
!   After a full successful build of the main subprogram `gnatelim` can be
    called without  specifying sources to analyse, in this case it computes
    the source closure of the main unit from the :file:`ALI` files.
  
!   If the set of sources to be processed by `gnatelim` contains sources with
    preprocessing directives
    then the needed options should be provided to run preprocessor as a part of
!   the *gnatelim* call, and the generated set of pragmas `Eliminate`
    will correspond to preprocessed sources.
  
    The following command will create the set of :file:`ALI` files needed for
!   `gnatelim`:
  
      ::
  
         $ gnatmake -c Main_Prog
  
!   Note that `gnatelim` does not need object files.
  
  
    .. _Running_gnatelim:
  
!   Running `gnatelim`
!   ^^^^^^^^^^^^^^^^^^
  
!   `gnatelim` has the following command-line interface:
  
  
      ::
  
!         $ gnatelim [`switches`] -main=`main_unit_name` {`filename`} [-cargs `gcc_switches`]
  
!   `main_unit_name` should be a name of a source file that contains the main
    subprogram of a program (partition).
  
!   Each `filename` is the name (including the extension) of a source
    file to process. 'Wildcards' are allowed, and
    the file name may contain path information.
  
!   `gcc_switches` is a list of switches for
!   *gcc*. They will be passed on to all compiler invocations made by
!   *gnatelim* to generate the ASIS trees. Here you can provide
!   *-I* switches to form the source search path,
!   use the *-gnatec* switch to set the configuration file,
!   use the *-gnat05* switch if sources should be compiled in
    Ada 2005 mode etc.
  
!   `gnatelim` has the following switches:
  
  
    .. index:: --version (gnatelim)
--- 2680,2783 ----
       02005350 T aux__used
       0201ffe0 B aux__used_data
  
! It can be observed that the procedure ``Unused`` and the object
! ``Unused_Data`` are removed by the linker when using the
  appropriate options.
  
  .. only:: PRO or GPL
  
    .. _Reducing_Size_of_Ada_Executables_with_gnatelim:
  
!   Reducing Size of Ada Executables with ``gnatelim``
!   --------------------------------------------------
  
    .. index:: gnatelim
  
!   This section describes ``gnatelim``, a tool which detects unused
    subprograms and helps the compiler to create a smaller executable for your
    program.
  
!   ``gnatelim`` is a project-aware tool.
    (See :ref:`Using_Project_Files_with_GNAT_Tools` for a description of
!   the project-related switches but note that ``gnatelim`` does not support
    the :samp:`-U`, :samp:`-U {main_unit}`, :samp:`--subdirs={dir}`, or
    :samp:`--no_objects_dir` switches.)
    The project file package that can specify
!   ``gnatelim`` switches is named ``Eliminate``.
  
    .. _About_gnatelim:
  
!   About ``gnatelim``
!   ^^^^^^^^^^^^^^^^^^
  
    When a program shares a set of Ada
    packages with other programs, it may happen that this program uses
    only a fraction of the subprograms defined in these packages. The code
    created for these unused subprograms increases the size of the executable.
  
!   ``gnatelim`` tracks unused subprograms in an Ada program and
!   outputs a list of GNAT-specific pragmas ``Eliminate`` marking all the
    subprograms that are declared but never called. By placing the list of
!   ``Eliminate`` pragmas in the GNAT configuration file :file:`gnat.adc` and
    recompiling your program, you may decrease the size of its executable,
    because the compiler will not generate the code for 'eliminated' subprograms.
!   See ``Pragma_Eliminate`` in the :title:`GNAT_Reference_Manual` for more
    information about this pragma.
  
!   ``gnatelim`` needs as its input data the name of the main subprogram.
  
!   If a set of source files is specified as ``gnatelim`` arguments, it
    treats these files as a complete set of sources making up a program to
    analyse, and analyses only these sources.
  
!   After a full successful build of the main subprogram ``gnatelim`` can be
    called without  specifying sources to analyse, in this case it computes
    the source closure of the main unit from the :file:`ALI` files.
  
!   If the set of sources to be processed by ``gnatelim`` contains sources with
    preprocessing directives
    then the needed options should be provided to run preprocessor as a part of
!   the ``gnatelim`` call, and the generated set of pragmas ``Eliminate``
    will correspond to preprocessed sources.
  
    The following command will create the set of :file:`ALI` files needed for
!   ``gnatelim``:
  
      ::
  
         $ gnatmake -c Main_Prog
  
!   Note that ``gnatelim`` does not need object files.
  
  
    .. _Running_gnatelim:
  
!   Running ``gnatelim``
!   ^^^^^^^^^^^^^^^^^^^^
  
!   ``gnatelim`` has the following command-line interface:
  
  
      ::
  
!         $ gnatelim [switches] -main=`main_unit_name {filename} [-cargs gcc_switches]
  
!   ``main_unit_name`` should be a name of a source file that contains the main
    subprogram of a program (partition).
  
!   Each ``filename`` is the name (including the extension) of a source
    file to process. 'Wildcards' are allowed, and
    the file name may contain path information.
  
!   ``gcc_switches`` is a list of switches for
!   ``gcc``. They will be passed on to all compiler invocations made by
!   ``gnatelim`` to generate the ASIS trees. Here you can provide
!   :switch:`-I` switches to form the source search path,
!   use the :switch:`-gnatec` switch to set the configuration file,
!   use the :switch:`-gnat05` switch if sources should be compiled in
    Ada 2005 mode etc.
  
!   ``gnatelim`` has the following switches:
  
  
    .. index:: --version (gnatelim)
*************** appropriate options.
*** 2707,2714 ****
    .. index:: -X (gnatelim)
  
    :samp:`-X{name}={value}`
!     Indicates that external variable `name` in the argument project
!     has the value `value`. Has no effect if no project is specified as
      tool argument.
  
  
--- 2802,2809 ----
    .. index:: -X (gnatelim)
  
    :samp:`-X{name}={value}`
!     Indicates that external variable ``name`` in the argument project
!     has the value ``value``. Has no effect if no project is specified as
      tool argument.
  
  
*************** appropriate options.
*** 2716,2722 ****
  
    :samp:`--RTS={rts-path}`
      Specifies the default location of the runtime library. Same meaning as the
!     equivalent *gnatmake* flag (:ref:`Switches_for_gnatmake`).
  
  
    .. index:: -files (gnatelim)
--- 2811,2817 ----
  
    :samp:`--RTS={rts-path}`
      Specifies the default location of the runtime library. Same meaning as the
!     equivalent ``gnatmake`` flag (:ref:`Switches_for_gnatmake`).
  
  
    .. index:: -files (gnatelim)
*************** appropriate options.
*** 2725,2731 ****
      Take the argument source files from the specified file. This file should be an
      ordinary text file containing file names separated by spaces or
      line breaks. You can use this switch more than once in the same call to
!     *gnatelim*. You also can combine this switch with
      an explicit list of files.
  
  
--- 2820,2826 ----
      Take the argument source files from the specified file. This file should be an
      ordinary text file containing file names separated by spaces or
      line breaks. You can use this switch more than once in the same call to
!     ``gnatelim``. You also can combine this switch with
      an explicit list of files.
  
  
*************** appropriate options.
*** 2751,2774 ****
  
  
    :samp:`-o={report_file}`
!     Put *gnatelim* output into a specified file. If this file already exists,
!     it is overridden. If this switch is not used, *gnatelim* outputs its results
      into :file:`stderr`
  
  
    .. index:: -j (gnatelim)
  
    :samp:`-j{n}`
!     Use `n` processes to carry out the tree creations (internal representations
      of the argument sources). On a multiprocessor machine this speeds up processing
!     of big sets of argument sources. If `n` is 0, then the maximum number of
      parallel tree creations is the number of core processors on the platform.
  
  
    .. index:: -q (gnatelim)
  
    :samp:`-q`
!     Quiet mode: by default `gnatelim` outputs to the standard error
      stream the number of program units left to be processed. This option turns
      this trace off.
  
--- 2846,2869 ----
  
  
    :samp:`-o={report_file}`
!     Put ``gnatelim`` output into a specified file. If this file already exists,
!     it is overridden. If this switch is not used, ``gnatelim`` outputs its results
      into :file:`stderr`
  
  
    .. index:: -j (gnatelim)
  
    :samp:`-j{n}`
!     Use ``n`` processes to carry out the tree creations (internal representations
      of the argument sources). On a multiprocessor machine this speeds up processing
!     of big sets of argument sources. If ``n`` is 0, then the maximum number of
      parallel tree creations is the number of core processors on the platform.
  
  
    .. index:: -q (gnatelim)
  
    :samp:`-q`
!     Quiet mode: by default ``gnatelim`` outputs to the standard error
      stream the number of program units left to be processed. This option turns
      this trace off.
  
*************** appropriate options.
*** 2782,2790 ****
    .. index:: -v (gnatelim)
  
    :samp:`-v`
!     Verbose mode: `gnatelim` version information is printed as Ada
      comments to the standard output stream. Also, in addition to the number of
!     program units left `gnatelim` will output the name of the current unit
      being processed.
  
  
--- 2877,2885 ----
    .. index:: -v (gnatelim)
  
    :samp:`-v`
!     Verbose mode: ``gnatelim`` version information is printed as Ada
      comments to the standard output stream. Also, in addition to the number of
!     program units left ``gnatelim`` will output the name of the current unit
      being processed.
  
  
*************** appropriate options.
*** 2803,2812 ****
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  
    If some program uses a precompiled Ada library, it can be processed by
!   `gnatelim` in a usual way. `gnatelim` will newer generate an
    Eliminate pragma for a subprogram if the body of this subprogram has not
    been analysed, this is a typical case for subprograms from precompiled
!   libraries. Switch *-wq* may be used to suppress
    warnings about missing source files and non-analyzed subprogram bodies
    that can be generated when processing precompiled Ada libraries.
  
--- 2898,2907 ----
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  
    If some program uses a precompiled Ada library, it can be processed by
!   ``gnatelim`` in a usual way. ``gnatelim`` will newer generate an
    Eliminate pragma for a subprogram if the body of this subprogram has not
    been analysed, this is a typical case for subprograms from precompiled
!   libraries. Switch :switch:`-wq` may be used to suppress
    warnings about missing source files and non-analyzed subprogram bodies
    that can be generated when processing precompiled Ada libraries.
  
*************** appropriate options.
*** 2816,2822 ****
    Correcting the List of Eliminate Pragmas
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  
!   In some rare cases `gnatelim` may try to eliminate
    subprograms that are actually called in the program. In this case, the
    compiler will generate an error message of the form:
  
--- 2911,2917 ----
    Correcting the List of Eliminate Pragmas
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  
!   In some rare cases ``gnatelim`` may try to eliminate
    subprograms that are actually called in the program. In this case, the
    compiler will generate an error message of the form:
  
*************** appropriate options.
*** 2824,2830 ****
  
          main.adb:4:08: cannot reference subprogram "P" eliminated at elim.out:5
  
!   You will need to manually remove the wrong `Eliminate` pragmas from
    the configuration file indicated in the error message. You should recompile
    your program from scratch after that, because you need a consistent
    configuration file(s) during the entire compilation.
--- 2919,2925 ----
  
          main.adb:4:08: cannot reference subprogram "P" eliminated at elim.out:5
  
!   You will need to manually remove the wrong ``Eliminate`` pragmas from
    the configuration file indicated in the error message. You should recompile
    your program from scratch after that, because you need a consistent
    configuration file(s) during the entire compilation.
*************** appropriate options.
*** 2844,2866 ****
  
         $ gnatmake -f main_prog
  
!   (Use the *-f* option for *gnatmake* to
    recompile everything
!   with the set of pragmas `Eliminate` that you have obtained with
!   *gnatelim*).
  
!   Be aware that the set of `Eliminate` pragmas is specific to each
!   program. It is not recommended to merge sets of `Eliminate`
    pragmas created for different programs in one configuration file.
  
  
    .. _Summary_of_the_gnatelim_Usage_Cycle:
  
!   Summary of the `gnatelim` Usage Cycle
!   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  
    Here is a quick summary of the steps to be taken in order to reduce
!   the size of your executables with `gnatelim`. You may use
    other GNAT options to control the optimization level,
    to produce the debugging information, to set search path, etc.
  
--- 2939,2961 ----
  
         $ gnatmake -f main_prog
  
!   (Use the :switch:`-f` option for ``gnatmake`` to
    recompile everything
!   with the set of pragmas ``Eliminate`` that you have obtained with
!   ``gnatelim``).
  
!   Be aware that the set of ``Eliminate`` pragmas is specific to each
!   program. It is not recommended to merge sets of ``Eliminate``
    pragmas created for different programs in one configuration file.
  
  
    .. _Summary_of_the_gnatelim_Usage_Cycle:
  
!   Summary of the ``gnatelim`` Usage Cycle
!   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  
    Here is a quick summary of the steps to be taken in order to reduce
!   the size of your executables with ``gnatelim``. You may use
    other GNAT options to control the optimization level,
    to produce the debugging information, to set search path, etc.
  
*************** appropriate options.
*** 2871,2877 ****
  
          $ gnatmake -c main_prog
  
!   * Generate a list of `Eliminate` pragmas in default configuration file
      :file:`gnat.adc` in the current directory
  
      ::
--- 2966,2972 ----
  
          $ gnatmake -c main_prog
  
!   * Generate a list of ``Eliminate`` pragmas in default configuration file
      :file:`gnat.adc` in the current directory
  
      ::
*************** that intermediate results are not out of
*** 2910,2918 ****
       ...
       A := A + 1;
  
! If `A` has the value `Integer'Last`, then the addition may cause
! overflow since the result is out of range of the type `Integer`.
! In this case `Constraint_Error` will be raised if checks are
  enabled.
  
  A trickier situation arises in examples like the following:
--- 3005,3013 ----
       ...
       A := A + 1;
  
! If ``A`` has the value ``Integer'Last``, then the addition may cause
! overflow since the result is out of range of the type ``Integer``.
! In this case ``Constraint_Error`` will be raised if checks are
  enabled.
  
  A trickier situation arises in examples like the following:
*************** A trickier situation arises in examples
*** 2923,2945 ****
       ...
       A := (A + 1) + C;
  
! where `A` is `Integer'Last` and `C` is `-1`.
  Now the final result of the expression on the right hand side is
! `Integer'Last` which is in range, but the question arises whether the
! intermediate addition of `(A + 1)` raises an overflow error.
  
  The (perhaps surprising) answer is that the Ada language
  definition does not answer this question. Instead it leaves
  it up to the implementation to do one of two things if overflow
  checks are enabled.
  
! * raise an exception (`Constraint_Error`), or
  
  * yield the correct mathematical result which is then used in
    subsequent operations.
  
  If the compiler chooses the first approach, then the assignment of this
! example will indeed raise `Constraint_Error` if overflow checking is
  enabled, or result in erroneous execution if overflow checks are suppressed.
  
  But if the compiler
--- 3018,3040 ----
       ...
       A := (A + 1) + C;
  
! where ``A`` is ``Integer'Last`` and ``C`` is ``-1``.
  Now the final result of the expression on the right hand side is
! ``Integer'Last`` which is in range, but the question arises whether the
! intermediate addition of ``(A + 1)`` raises an overflow error.
  
  The (perhaps surprising) answer is that the Ada language
  definition does not answer this question. Instead it leaves
  it up to the implementation to do one of two things if overflow
  checks are enabled.
  
! * raise an exception (``Constraint_Error``), or
  
  * yield the correct mathematical result which is then used in
    subsequent operations.
  
  If the compiler chooses the first approach, then the assignment of this
! example will indeed raise ``Constraint_Error`` if overflow checking is
  enabled, or result in erroneous execution if overflow checks are suppressed.
  
  But if the compiler
*************** assertion forms, another issue arises. C
*** 2972,2986 ****
  
  One often wants to regard arithmetic in a context like this from
  a mathematical point of view. So for example, if the two actual parameters
! for a call to `P` are both `Integer'Last`, then
  the precondition should be regarded as False. If we are executing
  in a mode with run-time checks enabled for preconditions, then we would
  like this precondition to fail, rather than raising an exception
  because of the intermediate overflow.
  
  However, the language definition leaves the specification of
! whether the above condition fails (raising `Assert_Error`) or
! causes an intermediate overflow (raising `Constraint_Error`)
  up to the implementation.
  
  The situation is worse in a case such as the following:
--- 3067,3081 ----
  
  One often wants to regard arithmetic in a context like this from
  a mathematical point of view. So for example, if the two actual parameters
! for a call to ``P`` are both ``Integer'Last``, then
  the precondition should be regarded as False. If we are executing
  in a mode with run-time checks enabled for preconditions, then we would
  like this precondition to fail, rather than raising an exception
  because of the intermediate overflow.
  
  However, the language definition leaves the specification of
! whether the above condition fails (raising ``Assert_Error``) or
! causes an intermediate overflow (raising ``Constraint_Error``)
  up to the implementation.
  
  The situation is worse in a case such as the following:
*************** and for expressions appearing outside as
*** 3018,3024 ****
  
  The three modes are:
  
! * *Use base type for intermediate operations* (`STRICT`)
  
    In this mode, all intermediate results for predefined arithmetic
    operators are computed using the base type, and the result must
--- 3113,3119 ----
  
  The three modes are:
  
! * *Use base type for intermediate operations* (``STRICT``)
  
    In this mode, all intermediate results for predefined arithmetic
    operators are computed using the base type, and the result must
*************** The three modes are:
*** 3027,3036 ****
    enabled) or the execution is erroneous (if overflow checks are suppressed).
    This is the normal default mode.
  
! * *Most intermediate overflows avoided* (`MINIMIZED`)
  
    In this mode, the compiler attempts to avoid intermediate overflows by
!   using a larger integer type, typically `Long_Long_Integer`,
    as the type in which arithmetic is
    performed for predefined arithmetic operators. This may be slightly more
    expensive at
--- 3122,3131 ----
    enabled) or the execution is erroneous (if overflow checks are suppressed).
    This is the normal default mode.
  
! * *Most intermediate overflows avoided* (``MINIMIZED``)
  
    In this mode, the compiler attempts to avoid intermediate overflows by
!   using a larger integer type, typically ``Long_Long_Integer``,
    as the type in which arithmetic is
    performed for predefined arithmetic operators. This may be slightly more
    expensive at
*************** The three modes are:
*** 3038,3049 ****
    the cost is negligible on modern 64-bit machines. For the examples given
    earlier, no intermediate overflows would have resulted in exceptions,
    since the intermediate results are all in the range of
!   `Long_Long_Integer` (typically 64-bits on nearly all implementations
    of GNAT). In addition, if checks are enabled, this reduces the number of
    checks that must be made, so this choice may actually result in an
    improvement in space and time behavior.
  
!   However, there are cases where `Long_Long_Integer` is not large
    enough, consider the following example:
  
      .. code-block:: ada
--- 3133,3144 ----
    the cost is negligible on modern 64-bit machines. For the examples given
    earlier, no intermediate overflows would have resulted in exceptions,
    since the intermediate results are all in the range of
!   ``Long_Long_Integer`` (typically 64-bits on nearly all implementations
    of GNAT). In addition, if checks are enabled, this reduces the number of
    checks that must be made, so this choice may actually result in an
    improvement in space and time behavior.
  
!   However, there are cases where ``Long_Long_Integer`` is not large
    enough, consider the following example:
  
      .. code-block:: ada
*************** The three modes are:
*** 3051,3059 ****
             procedure R (A, B, C, D : Integer) with
               Pre => (A**2 * B**2) / (C**2 * D**2) <= 10;
  
!   where `A` = `B` = `C` = `D` = `Integer'Last`.
    Now the intermediate results are
!   out of the range of `Long_Long_Integer` even though the final result
    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
--- 3146,3154 ----
             procedure R (A, B, C, D : Integer) with
               Pre => (A**2 * B**2) / (C**2 * D**2) <= 10;
  
!   where ``A`` = ``B`` = ``C`` = ``D`` = ``Integer'Last``.
    Now the intermediate results are
!   out of the range of ``Long_Long_Integer`` even though the final result
    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
*************** The three modes are:
*** 3061,3071 ****
    an exception is raised if overflow checks are enabled, and the
    execution is erroneous if overflow checks are suppressed.
  
! * *All intermediate overflows avoided* (`ELIMINATED`)
  
    In this mode, the compiler  avoids all intermediate overflows
    by using arbitrary precision arithmetic as required. In this
!   mode, the above example with `A**2 * B**2` would
    not cause intermediate overflow, because the intermediate result
    would be evaluated using sufficient precision, and the result
    of evaluating the precondition would be True.
--- 3156,3166 ----
    an exception is raised if overflow checks are enabled, and the
    execution is erroneous if overflow checks are suppressed.
  
! * *All intermediate overflows avoided* (``ELIMINATED``)
  
    In this mode, the compiler  avoids all intermediate overflows
    by using arbitrary precision arithmetic as required. In this
!   mode, the above example with ``A**2 * B**2`` would
    not cause intermediate overflow, because the intermediate result
    would be evaluated using sufficient precision, and the result
    of evaluating the precondition would be True.
*************** The three modes are:
*** 3084,3091 ****
    Note that in this mode, the behavior is unaffected by whether or
    not overflow checks are suppressed, since overflow does not occur.
    It is possible for gigantic intermediate expressions to raise
!   `Storage_Error` as a result of attempting to compute the
!   results of such expressions (e.g. `Integer'Last ** Integer'Last`)
    but overflow is impossible.
  
  
--- 3179,3186 ----
    Note that in this mode, the behavior is unaffected by whether or
    not overflow checks are suppressed, since overflow does not occur.
    It is possible for gigantic intermediate expressions to raise
!   ``Storage_Error`` as a result of attempting to compute the
!   results of such expressions (e.g. ``Integer'Last ** Integer'Last``)
    but overflow is impossible.
  
  
*************** For fixed-point arithmetic, checks can b
*** 3097,3105 ****
  are enabled
  then fixed-point values are always checked for overflow against the
  base type for intermediate expressions (that is such checks always
! operate in the equivalent of `STRICT` mode).
  
! For floating-point, on nearly all architectures, `Machine_Overflows`
  is False, and IEEE infinities are generated, so overflow exceptions
  are never raised. If you want to avoid infinities, and check that
  final results of expressions are in range, then you can declare a
--- 3192,3200 ----
  are enabled
  then fixed-point values are always checked for overflow against the
  base type for intermediate expressions (that is such checks always
! operate in the equivalent of ``STRICT`` mode).
  
! For floating-point, on nearly all architectures, ``Machine_Overflows``
  is False, and IEEE infinities are generated, so overflow exceptions
  are never raised. If you want to avoid infinities, and check that
  final results of expressions are in range, then you can declare a
*************** Specifying the Desired Mode
*** 3116,3142 ****
  .. index:: pragma Overflow_Mode
  
  The desired mode of for handling intermediate overflow can be specified using
! either the `Overflow_Mode` pragma or an equivalent compiler switch.
  The pragma has the form
  
    .. code-block:: ada
  
        pragma Overflow_Mode ([General =>] MODE [, [Assertions =>] MODE]);
  
! where `MODE` is one of
  
! * `STRICT`:  intermediate overflows checked (using base type)
! * `MINIMIZED`: minimize intermediate overflows
! * `ELIMINATED`: eliminate intermediate overflows
  
! The case is ignored, so `MINIMIZED`, `Minimized` and
! `minimized` all have the same effect.
  
! If only the `General` parameter is present, then the given `MODE`
! applies
  to expressions both within and outside assertions. If both arguments
! are present, then `General` applies to expressions outside assertions,
! and `Assertions` applies to expressions within assertions. For example:
  
    .. code-block:: ada
  
--- 3211,3236 ----
  .. index:: pragma Overflow_Mode
  
  The desired mode of for handling intermediate overflow can be specified using
! either the ``Overflow_Mode`` pragma or an equivalent compiler switch.
  The pragma has the form
  
    .. code-block:: ada
  
        pragma Overflow_Mode ([General =>] MODE [, [Assertions =>] MODE]);
  
! where ``MODE`` is one of
  
! * ``STRICT``:  intermediate overflows checked (using base type)
! * ``MINIMIZED``: minimize intermediate overflows
! * ``ELIMINATED``: eliminate intermediate overflows
  
! The case is ignored, so ``MINIMIZED``, ``Minimized`` and
! ``minimized`` all have the same effect.
  
! If only the ``General`` parameter is present, then the given ``MODE`` applies
  to expressions both within and outside assertions. If both arguments
! are present, then ``General`` applies to expressions outside assertions,
! and ``Assertions`` applies to expressions within assertions. For example:
  
    .. code-block:: ada
  
*************** the extra overhead for assertion express
*** 3153,3196 ****
  the behavior at run time matches the expected mathematical
  behavior.
  
! The `Overflow_Mode` pragma has the same scoping and placement
! rules as pragma `Suppress`, so it can occur either as a
  configuration pragma, specifying a default for the whole
  program, or in a declarative scope, where it applies to the
  remaining declarations and statements in that scope.
  
! Note that pragma `Overflow_Mode` does not affect whether
  overflow checks are enabled or suppressed. It only controls the
  method used to compute intermediate values. To control whether
! overflow checking is enabled or suppressed, use pragma `Suppress`
! or `Unsuppress` in the usual manner
  
  
  .. index:: -gnato? (gcc)
  .. index:: -gnato?? (gcc)
  
! Additionally, a compiler switch *-gnato?* or *-gnato??*
  can be used to control the checking mode default (which can be subsequently
  overridden using pragmas).
  
  Here ``?`` is one of the digits ``1`` through ``3``:
  
!   ====== =====================================================
!   ``1``  use base type for intermediate operations (`STRICT`)
!   ``2``  minimize intermediate overflows (`MINIMIZED`)
!   ``3``  eliminate intermediate overflows (`ELIMINATED`)
!   ====== =====================================================
  
  As with the pragma, if only one digit appears then it applies to all
  cases; if two digits are given, then the first applies outside
  assertions, and the second within assertions. Thus the equivalent
  of the example pragma above would be
! *-gnato23*.
  
! If no digits follow the *-gnato*, then it is equivalent to
! *-gnato11*,
  causing all intermediate operations to be computed using the base
! type (`STRICT` mode).
  
  
  .. _Default_Settings:
--- 3247,3290 ----
  the behavior at run time matches the expected mathematical
  behavior.
  
! The ``Overflow_Mode`` pragma has the same scoping and placement
! rules as pragma ``Suppress``, so it can occur either as a
  configuration pragma, specifying a default for the whole
  program, or in a declarative scope, where it applies to the
  remaining declarations and statements in that scope.
  
! Note that pragma ``Overflow_Mode`` does not affect whether
  overflow checks are enabled or suppressed. It only controls the
  method used to compute intermediate values. To control whether
! overflow checking is enabled or suppressed, use pragma ``Suppress``
! or ``Unsuppress`` in the usual manner.
  
  
  .. index:: -gnato? (gcc)
  .. index:: -gnato?? (gcc)
  
! Additionally, a compiler switch :switch:`-gnato?` or :switch:`-gnato??`
  can be used to control the checking mode default (which can be subsequently
  overridden using pragmas).
  
  Here ``?`` is one of the digits ``1`` through ``3``:
  
!   ====== ======================================================
!   ``1``  use base type for intermediate operations (``STRICT``)
!   ``2``  minimize intermediate overflows (``MINIMIZED``)
!   ``3``  eliminate intermediate overflows (``ELIMINATED``)
!   ====== ======================================================
  
  As with the pragma, if only one digit appears then it applies to all
  cases; if two digits are given, then the first applies outside
  assertions, and the second within assertions. Thus the equivalent
  of the example pragma above would be
! :switch:`-gnato23`.
  
! If no digits follow the :switch:`-gnato`, then it is equivalent to
! :switch:`-gnato11`,
  causing all intermediate operations to be computed using the base
! type (``STRICT`` mode).
  
  
  .. _Default_Settings:
*************** used the base type for computation of in
*** 3214,3220 ****
  .. Sphinx allows no emphasis within :index: role. As a workaround we
     point the index to "switch" and use emphasis for "-gnato".
  
! The :index:`switch <-gnato (gcc)>` *-gnato* (with no digits following)
  is equivalent to
  
    ::
--- 3308,3314 ----
  .. Sphinx allows no emphasis within :index: role. As a workaround we
     point the index to "switch" and use emphasis for "-gnato".
  
! The :index:`switch <-gnato (gcc)>` :switch:`-gnato` (with no digits following)
  is equivalent to
  
    ::
*************** is equivalent to
*** 3224,3234 ****
  which causes overflow checking of all intermediate overflows
  both inside and outside assertions against the base type.
  
! The pragma `Suppress (Overflow_Check)` disables overflow
  checking, but it has no effect on the method used for computing
  intermediate results.
  
! The pragma `Unsuppress (Overflow_Check)` enables overflow
  checking, but it has no effect on the method used for computing
  intermediate results.
  
--- 3318,3328 ----
  which causes overflow checking of all intermediate overflows
  both inside and outside assertions against the base type.
  
! The pragma ``Suppress (Overflow_Check)`` disables overflow
  checking, but it has no effect on the method used for computing
  intermediate results.
  
! The pragma ``Unsuppress (Overflow_Check)`` enables overflow
  checking, but it has no effect on the method used for computing
  intermediate results.
  
*************** intermediate results.
*** 3238,3249 ****
  Implementation Notes
  --------------------
  
! In practice on typical 64-bit machines, the `MINIMIZED` mode is
  reasonably efficient, and can be generally used. It also helps
  to ensure compatibility with code imported from some other
  compiler to GNAT.
  
! Setting all intermediate overflows checking (`CHECKED` mode)
  makes sense if you want to
  make sure that your code is compatible with any other possible
  Ada implementation. This may be useful in ensuring portability
--- 3332,3343 ----
  Implementation Notes
  --------------------
  
! In practice on typical 64-bit machines, the ``MINIMIZED`` mode is
  reasonably efficient, and can be generally used. It also helps
  to ensure compatibility with code imported from some other
  compiler to GNAT.
  
! Setting all intermediate overflows checking (``CHECKED`` mode)
  makes sense if you want to
  make sure that your code is compatible with any other possible
  Ada implementation. This may be useful in ensuring portability
*************** for code that is to be exported to some
*** 3251,3284 ****
  
  The Ada standard allows the reassociation of expressions at
  the same precedence level if no parentheses are present. For
! example, `A+B+C` parses as though it were `(A+B)+C`, but
! the compiler can reintepret this as `A+(B+C)`, possibly
  introducing or eliminating an overflow exception. The GNAT
  compiler never takes advantage of this freedom, and the
! expression `A+B+C` will be evaluated as `(A+B)+C`.
  If you need the other order, you can write the parentheses
! explicitly `A+(B+C)` and GNAT will respect this order.
  
! The use of `ELIMINATED` mode will cause the compiler to
  automatically include an appropriate arbitrary precision
  integer arithmetic package. The compiler will make calls
  to this package, though only in cases where it cannot be
! sure that `Long_Long_Integer` is sufficient to guard against
  intermediate overflows. This package does not use dynamic
  alllocation, but it does use the secondary stack, so an
  appropriate secondary stack package must be present (this
  is always true for standard full Ada, but may require
  specific steps for restricted run times such as ZFP).
  
! Although `ELIMINATED` mode causes expressions to use arbitrary
  precision arithmetic, avoiding overflow, the final result
  must be in an appropriate range. This is true even if the
! final result is of type `[Long_[Long_]]Integer'Base`, which
  still has the same bounds as its associated constrained
  type at run-time.
  
! Currently, the `ELIMINATED` mode is only available on target
! platforms for which `Long_Long_Integer` is 64-bits (nearly all GNAT
  platforms).
  
  
--- 3345,3378 ----
  
  The Ada standard allows the reassociation of expressions at
  the same precedence level if no parentheses are present. For
! example, ``A+B+C`` parses as though it were ``(A+B)+C``, but
! the compiler can reintepret this as ``A+(B+C)``, possibly
  introducing or eliminating an overflow exception. The GNAT
  compiler never takes advantage of this freedom, and the
! expression ``A+B+C`` will be evaluated as ``(A+B)+C``.
  If you need the other order, you can write the parentheses
! explicitly ``A+(B+C)`` and GNAT will respect this order.
  
! The use of ``ELIMINATED`` mode will cause the compiler to
  automatically include an appropriate arbitrary precision
  integer arithmetic package. The compiler will make calls
  to this package, though only in cases where it cannot be
! sure that ``Long_Long_Integer`` is sufficient to guard against
  intermediate overflows. This package does not use dynamic
  alllocation, but it does use the secondary stack, so an
  appropriate secondary stack package must be present (this
  is always true for standard full Ada, but may require
  specific steps for restricted run times such as ZFP).
  
! Although ``ELIMINATED`` mode causes expressions to use arbitrary
  precision arithmetic, avoiding overflow, the final result
  must be in an appropriate range. This is true even if the
! final result is of type ``[Long_[Long_]]Integer'Base``, which
  still has the same bounds as its associated constrained
  type at run-time.
  
! Currently, the ``ELIMINATED`` mode is only available on target
! platforms for which ``Long_Long_Integer`` is 64-bits (nearly all GNAT
  platforms).
  
  
*************** familiar to engineering practice. The di
*** 3301,3308 ****
  
  This feature depends on Ada 2012 aspect specifications, and is available from
  version 7.0.1 of GNAT onwards.
! The GNAT-specific aspect `Dimension_System`
! allows you to define a system of units; the aspect `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*).
--- 3395,3402 ----
  
  This feature depends on Ada 2012 aspect specifications, and is available from
  version 7.0.1 of GNAT onwards.
! The GNAT-specific aspect ``Dimension_System``
! allows you to define a system of units; the aspect ``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*).
*************** to use the proper subtypes in object dec
*** 3315,3323 ****
  .. index:: MKS_Type type
  
  The simplest way to impose dimensionality checking on a computation is to make
! use of the package `System.Dim.Mks`,
  which is part of the GNAT library. This
! package defines a floating-point type `MKS_Type`,
  for which a sequence of
  dimension names are specified, together with their conventional abbreviations.
  The following should be read together with the full specification of the
--- 3409,3417 ----
  .. index:: MKS_Type type
  
  The simplest way to impose dimensionality checking on a computation is to make
! use of the package ``System.Dim.Mks``,
  which is part of the GNAT library. This
! package defines a floating-point type ``MKS_Type``,
  for which a sequence of
  dimension names are specified, together with their conventional abbreviations.
  The following should be read together with the full specification of the
*************** conventional units. For example:
*** 3347,3360 ****
         with
          Dimension => (Symbol => 'm', Meter  => 1, others => 0);
  
! and similarly for `Mass`, `Time`, `Electric_Current`,
! `Thermodynamic_Temperature`, `Amount_Of_Substance`, and
! `Luminous_Intensity` (the standard set of units of the SI system).
  
  The package also defines conventional names for values of each unit, for
  example:
  
!   .. code-block":: ada
  
       m   : constant Length           := 1.0;
       kg  : constant Mass             := 1.0;
--- 3441,3454 ----
         with
          Dimension => (Symbol => 'm', Meter  => 1, others => 0);
  
! and similarly for ``Mass``, ``Time``, ``Electric_Current``,
! ``Thermodynamic_Temperature``, ``Amount_Of_Substance``, and
! ``Luminous_Intensity`` (the standard set of units of the SI system).
  
  The package also defines conventional names for values of each unit, for
  example:
  
!   .. code-block:: ada
  
       m   : constant Length           := 1.0;
       kg  : constant Mass             := 1.0;
*************** However, incorrect assignments such as:
*** 3419,3425 ****
    .. code-block:: ada
  
         Distance := 5.0;
!        Distance := 5.0 * kg:
  
  are rejected with the following diagnoses:
  
--- 3513,3519 ----
    .. code-block:: ada
  
         Distance := 5.0;
!        Distance := 5.0 * kg;
  
  are rejected with the following diagnoses:
  
*************** then the output includes:
*** 3451,3456 ****
--- 3545,3684 ----
         Final velocity: 98.10 m.s**(-1)
  
  
+   .. index:: Dimensionable type
+   .. index:: Dimensioned subtype
+ 
+ The type ``Mks_Type`` is said to be a *dimensionable type* since it has a
+ ``Dimension_System`` aspect, and the subtypes ``Length``, ``Mass``, etc.,
+ are said to be *dimensioned subtypes* since each one has a ``Dimension``
+ aspect.
+ 
+   .. index:: Dimension Vector (for a dimensioned subtype)
+   .. index:: Dimension aspect
+   .. index:: Dimension_System aspect
+ 
+ The ``Dimension`` aspect of a dimensioned subtype ``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 ``DV(S)``, and thus for each
+ object of that subtype. Intuitively, the value specified for each
+ ``Unit_Name`` is the exponent associated with that unit; a zero value
+ means that the unit is not used. For example:
+ 
+    .. code-block:: ada
+ 
+       declare
+          Acc : Acceleration;
+          ...
+       begin
+          ...
+       end;
+ 
+ Here ``DV(Acc)`` = ``DV(Acceleration)`` =
+ ``(Meter=>1, Kilogram=>0, Second=>-2, Ampere=>0, Kelvin=>0, Mole=>0, Candela=>0)``.
+ Symbolically, we can express this as ``Meter / Second**2``.
+ 
+ The dimension vector of an arithmetic expression is synthesized from the
+ dimension vectors of its components, with compile-time dimensionality checks
+ that help prevent mismatches such as using an ``Acceleration`` where a
+ ``Length`` is required.
+ 
+ The dimension vector of the result of an arithmetic expression *expr*, or
+ :samp:`DV({expr})`, is defined as follows, assuming conventional
+ mathematical definitions for the vector operations that are used:
+ 
+ * If *expr* is of the type *universal_real*, or is not of a dimensioned subtype,
+   then *expr* is dimensionless; :samp:`DV({expr})` is the empty vector.
+ 
+ * :samp:`DV({op expr})`, where *op* is a unary operator, is :samp:`DV({expr})`
+ 
+ * :samp:`DV({expr1 op expr2})` where *op* is "+" or "-" is :samp:`DV({expr1})`
+   provided that :samp:`DV({expr1})` = :samp:`DV({expr2})`.
+   If this condition is not met then the construct is illegal.
+ 
+ * :samp:`DV({expr1} * {expr2})` is :samp:`DV({expr1})` + :samp:`DV({expr2})`,
+   and :samp:`DV({expr1} / {expr2})` = :samp:`DV({expr1})` - :samp:`DV({expr2})`.
+   In this context if one of the *expr*\ s is dimensionless then its empty
+   dimension vector is treated as ``(others => 0)``.
+ 
+ * :samp:`DV({expr} ** {power})` is *power* * :samp:`DV({expr})`,
+   provided that *power* is a static rational value. If this condition is not
+   met then the construct is illegal.
+ 
+ Note that, by the above rules, it is illegal to use binary "+" or "-" to
+ combine a dimensioned and dimensionless value.  Thus an expression such as
+ ``acc-10.0`` is illegal, where ``acc`` is an object of subtype
+ ``Acceleration``.
+ 
+ The dimensionality checks for relationals use the same rules as
+ for "+" and "-", except when comparing to a literal; thus
+ 
+   .. code-block:: ada
+ 
+         acc > len
+ 
+ is equivalent to
+ 
+   .. code-block:: ada
+ 
+        acc-len > 0.0
+ 
+ and is thus illegal, but
+ 
+   .. code-block:: ada
+ 
+         acc > 10.0
+ 
+ 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 :samp:`T({expr})` is defined
+ as follows, based on the nature of ``T``:
+ 
+ * If ``T`` is a dimensioned subtype then :samp:`DV(T({expr}))` is ``DV(T)``
+   provided that either *expr* is dimensionless or
+   :samp:`DV(T)` = :samp:`DV({expr})`. The conversion is illegal
+   if *expr* is dimensioned and :samp:`DV({expr})` /= ``DV(T)``.
+   Note that vector equality does not require that the corresponding
+   Unit_Names be the same.
+ 
+   As a consequence of the above rule, it is possible to convert between
+   different dimension systems that follow the same international system
+   of units, with the seven physical components given in the standard order
+   (length, mass, time, etc.). Thus a length in meters can be converted to
+   a length in inches (with a suitable conversion factor) but cannot be
+   converted, for example, to a mass in pounds.
+ 
+ * If ``T`` is the base type for *expr* (and the dimensionless root type of
+   the dimension system), then :samp:`DV(T({expr}))` is ``DV(expr)``.
+   Thus, if *expr* is of a dimensioned subtype of ``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
+   with compatible dimensioned subtypes.  The generic unit will contain
+   conversions that will consequently be present in instantiations, but
+   conversions to the base type will preserve dimensionality and make it
+   possible to write generic code that is correct with respect to
+   dimensionality.
+ 
+ * Otherwise (i.e., ``T`` is neither a dimensioned subtype nor a dimensionable
+   base type), :samp:`DV(T({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.
+ 
+ The dimension vector for a type qualification :samp:`T'({expr})` is the same
+ as for the type conversion :samp:`T({expr})`.
+ 
+ An assignment statement
+ 
+    .. code-block:: ada
+ 
+          Source := Target;
+ 
+ requires ``DV(Source)`` = ``DV(Target)``, and analogously for parameter
+ passing (the dimension vector for the actual parameter must be equal to the
+ dimension vector for the formal parameter).
+ 
  
  .. _Stack_Related_Facilities:
  
*************** Stack Overflow Checking
*** 3470,3476 ****
  
  .. index:: -fstack-check (gcc)
  
! For most operating systems, *gcc* does not perform stack overflow
  checking by default. This means that if the main environment task or
  some other task exceeds the available stack space, then unpredictable
  behavior will occur. Most native systems offer some level of protection by
--- 3698,3704 ----
  
  .. index:: -fstack-check (gcc)
  
! For most operating systems, ``gcc`` does not perform stack overflow
  checking by default. This means that if the main environment task or
  some other task exceeds the available stack space, then unpredictable
  behavior will occur. Most native systems offer some level of protection by
*************** guard page is hit, there may not be any
*** 3482,3489 ****
  the exception propagation code. Enabling stack checking avoids
  such situations.
  
! To activate stack checking, compile all units with the gcc option
! `-fstack-check`. For example:
  
    ::
  
--- 3710,3717 ----
  the exception propagation code. Enabling stack checking avoids
  such situations.
  
! To activate stack checking, compile all units with the ``gcc`` option
! :switch:`-fstack-check`. For example:
  
    ::
  
*************** To activate stack checking, compile all
*** 3492,3526 ****
  Units compiled with this option will generate extra instructions to check
  that any use of the stack (for procedure calls or for declaring local
  variables in declare blocks) does not exceed the available stack space.
! If the space is exceeded, then a `Storage_Error` exception is raised.
! 
! For declared tasks, the stack size is controlled by the size
! given in an applicable `Storage_Size` pragma or by the value specified
! at bind time with ``-d`` (:ref:`Switches_for_gnatbind`) or is set to
! the default size as defined in the GNAT runtime otherwise.
! 
! .. index:: GNAT_STACK_LIMIT
! 
! For the environment task, the stack size depends on
! system defaults and is unknown to the compiler. Stack checking
! may still work correctly if a fixed
! size stack is allocated, but this cannot be guaranteed.
! To ensure that a clean exception is signalled for stack
! overflow, set the environment variable
! :envvar:`GNAT_STACK_LIMIT` to indicate the maximum
! stack area that can be used, as in:
! 
!   ::
  
!      $ SET GNAT_STACK_LIMIT 1600
  
! The limit is given in kilobytes, so the above declaration would
! set the stack limit of the environment task to 1.6 megabytes.
! Note that the only purpose of this usage is to limit the amount
! of stack used by the environment task. If it is necessary to
! increase the amount of stack for the environment task, then this
! is an operating systems issue, and must be addressed with the
! appropriate operating systems commands.
  
  
  .. _Static_Stack_Usage_Analysis:
--- 3720,3735 ----
  Units compiled with this option will generate extra instructions to check
  that any use of the stack (for procedure calls or for declaring local
  variables in declare blocks) does not exceed the available stack space.
! If the space is exceeded, then a ``Storage_Error`` exception is raised.
  
! For declared tasks, the default stack size is defined by the GNAT runtime,
! whose size may be modified at bind time through the ``-d`` bind switch
! (:ref:`Switches_for_gnatbind`). Task specific stack sizes may be set using the
! ``Storage_Size`` pragma.
  
! For the environment task, the stack size is determined by the operating system.
! Consequently, to modify the size of the environment task please refer to your
! operating system documentation.
  
  
  .. _Static_Stack_Usage_Analysis:
*************** Each line of this file is made up of thr
*** 3541,3561 ****
  
  * The name of the function.
  * A number of bytes.
! * One or more qualifiers: `static`, `dynamic`, `bounded`.
  
  The second field corresponds to the size of the known part of the function
  frame.
  
! The qualifier `static` means that the function frame size
  is purely static.
  It usually means that all local variables have a static size.
  In this case, the second field is a reliable measure of the function stack
  utilization.
  
! The qualifier `dynamic` means that the function frame size is not static.
  It happens mainly when some local variables have a dynamic size. When this
  qualifier appears alone, the second field is not a reliable measure
! of the function stack analysis. When it is qualified with  `bounded`, it
  means that the second field is a reliable maximum of the function stack
  utilization.
  
--- 3750,3770 ----
  
  * The name of the function.
  * A number of bytes.
! * One or more qualifiers: ``static``, ``dynamic``, ``bounded``.
  
  The second field corresponds to the size of the known part of the function
  frame.
  
! The qualifier ``static`` means that the function frame size
  is purely static.
  It usually means that all local variables have a static size.
  In this case, the second field is a reliable measure of the function stack
  utilization.
  
! The qualifier ``dynamic`` means that the function frame size is not static.
  It happens mainly when some local variables have a dynamic size. When this
  qualifier appears alone, the second field is not a reliable measure
! of the function stack analysis. When it is qualified with  ``bounded``, it
  means that the second field is a reliable maximum of the function stack
  utilization.
  
*************** Dynamic Stack Usage Analysis
*** 3570,3576 ****
  ----------------------------
  
  It is possible to measure the maximum amount of stack used by a task, by
! adding a switch to *gnatbind*, as:
  
    ::
  
--- 3779,3785 ----
  ----------------------------
  
  It is possible to measure the maximum amount of stack used by a task, by
! adding a switch to ``gnatbind``, as:
  
    ::
  
*************** where:
*** 3608,3618 ****
    is not entirely analyzed, and it's not possible to know exactly how
    much has actually been used.
  
! The environment task stack, e.g., the stack that contains the main unit, is
! only processed when the environment variable GNAT_STACK_LIMIT is set.
  
! The package `GNAT.Task_Stack_Usage` provides facilities to get
! stack usage reports at run-time. See its body for the details.
  
  
  
--- 3817,3836 ----
    is not entirely analyzed, and it's not possible to know exactly how
    much has actually been used.
  
! By default the environment task stack, the stack that contains the main unit,
! is not processed. To enable processing of the environment task stack, the
! environment variable GNAT_STACK_LIMIT needs to be set to the maximum size of
! the environment task stack. This amount is given in kilobytes. For example:
  
!   ::
! 
!      $ set GNAT_STACK_LIMIT 1600
! 
! would specify to the analyzer that the environment task stack has a limit
! of 1.6 megabytes. Any stack usage beyond this will be ignored by the analysis.
! 
! The package ``GNAT.Task_Stack_Usage`` provides facilities to get
! stack-usage reports at run time. See its body for the details.
  
  
  
*************** incorrect uses of access values (includi
*** 3627,3633 ****
  
  .. only:: PRO or GPL
  
!   It also describes the *gnatmem* tool, which can be used to track down
    "memory leaks".
  
  .. _Some_Useful_Memory_Pools:
--- 3845,3851 ----
  
  .. only:: PRO or GPL
  
!   It also describes the ``gnatmem`` tool, which can be used to track down
    "memory leaks".
  
  .. _Some_Useful_Memory_Pools:
*************** Some Useful Memory Pools
*** 3638,3646 ****
  .. index:: Memory Pool
  .. index:: storage, pool
  
! The `System.Pool_Global` package offers the Unbounded_No_Reclaim_Pool
! storage pool. Allocations use the standard system call `malloc` while
! deallocations use the standard system call `free`. No reclamation is
  performed when the pool goes out of scope. For performance reasons, the
  standard default Ada allocators/deallocators do not use any explicit storage
  pools but if they did, they could use this storage pool without any change in
--- 3856,3864 ----
  .. index:: Memory Pool
  .. index:: storage, pool
  
! The ``System.Pool_Global`` package offers the Unbounded_No_Reclaim_Pool
! storage pool. Allocations use the standard system call ``malloc`` while
! deallocations use the standard system call ``free``. No reclamation is
  performed when the pool goes out of scope. For performance reasons, the
  standard default Ada allocators/deallocators do not use any explicit storage
  pools but if they did, they could use this storage pool without any change in
*************** manages to make the default implicit all
*** 3657,3664 ****
         -- the above is equivalent to
         for T2'Storage_Pool use System.Pool_Global.Global_Pool_Object;
  
! The `System.Pool_Local` package offers the Unbounded_Reclaim_Pool storage
! pool. The allocation strategy is similar to `Pool_Local`'s
  except that the all
  storage allocated with this pool is reclaimed when the pool object goes out of
  scope. This pool provides a explicit mechanism similar to the implicit one
--- 3875,3882 ----
         -- the above is equivalent to
         for T2'Storage_Pool use System.Pool_Global.Global_Pool_Object;
  
! The ``System.Pool_Local`` package offers the ``Unbounded_Reclaim_Pool`` storage
! pool. The allocation strategy is similar to ``Pool_Local``
  except that the all
  storage allocated with this pool is reclaimed when the pool object goes out of
  scope. This pool provides a explicit mechanism similar to the implicit one
*************** leak memory even though it does not perf
*** 3687,3694 ****
          end loop;
       end Pooloc1;
  
! The `System.Pool_Size` package implements the Stack_Bounded_Pool used when
! `Storage_Size` is specified for an access type.
  The whole storage for the pool is
  allocated at once, usually on the stack at the point where the access type is
  elaborated. It is automatically reclaimed when exiting the scope where the
--- 3905,3912 ----
          end loop;
       end Pooloc1;
  
! The ``System.Pool_Size`` package implements the ``Stack_Bounded_Pool`` used when
! ``Storage_Size`` is specified for an access type.
  The whole storage for the pool is
  allocated at once, usually on the stack at the point where the access type is
  elaborated. It is automatically reclaimed when exiting the scope where the
*************** lead to incorrect memory references. The
*** 3714,3720 ****
  references are usually difficult to tackle because the symptoms can be
  very remote from the origin of the problem. In such cases, it is
  very helpful to detect the problem as early as possible. This is the
! purpose of the Storage Pool provided by `GNAT.Debug_Pools`.
  
  In order to use the GNAT specific debugging pool, the user must
  associate a debug pool object with each of the access types that may be
--- 3932,3938 ----
  references are usually difficult to tackle because the symptoms can be
  very remote from the origin of the problem. In such cases, it is
  very helpful to detect the problem as early as possible. This is the
! purpose of the Storage Pool provided by ``GNAT.Debug_Pools``.
  
  In order to use the GNAT specific debugging pool, the user must
  associate a debug pool object with each of the access types that may be
*************** related to suspected memory problems. Se
*** 3726,3746 ****
       Pool : GNAT.Debug_Pools.Debug_Pool;
       for Ptr'Storage_Pool use Pool;
  
! `GNAT.Debug_Pools` is derived from a GNAT-specific kind of
! pool: the `Checked_Pool`. Such pools, like standard Ada storage pools,
  allow the user to redefine allocation and deallocation strategies. They
  also provide a checkpoint for each dereference, through the use of
! the primitive operation `Dereference` which is implicitly called at
  each dereference of an access value.
  
  Once an access type has been associated with a debug pool, operations on
  values of the type may raise four distinct exceptions,
  which correspond to four potential kinds of memory corruption:
  
! * `GNAT.Debug_Pools.Accessing_Not_Allocated_Storage`
! * `GNAT.Debug_Pools.Accessing_Deallocated_Storage`
! * `GNAT.Debug_Pools.Freeing_Not_Allocated_Storage`
! * `GNAT.Debug_Pools.Freeing_Deallocated_Storage`
  
  For types associated with a Debug_Pool, dynamic allocation is performed using
  the standard GNAT allocation routine. References to all allocated chunks of
--- 3944,3964 ----
       Pool : GNAT.Debug_Pools.Debug_Pool;
       for Ptr'Storage_Pool use Pool;
  
! ``GNAT.Debug_Pools`` is derived from a GNAT-specific kind of
! pool: the ``Checked_Pool``. Such pools, like standard Ada storage pools,
  allow the user to redefine allocation and deallocation strategies. They
  also provide a checkpoint for each dereference, through the use of
! the primitive operation ``Dereference`` which is implicitly called at
  each dereference of an access value.
  
  Once an access type has been associated with a debug pool, operations on
  values of the type may raise four distinct exceptions,
  which correspond to four potential kinds of memory corruption:
  
! * ``GNAT.Debug_Pools.Accessing_Not_Allocated_Storage``
! * ``GNAT.Debug_Pools.Accessing_Deallocated_Storage``
! * ``GNAT.Debug_Pools.Freeing_Not_Allocated_Storage``
! * ``GNAT.Debug_Pools.Freeing_Deallocated_Storage``
  
  For types associated with a Debug_Pool, dynamic allocation is performed using
  the standard GNAT allocation routine. References to all allocated chunks of
*************** memory are kept in an internal dictionar
*** 3748,3761 ****
  provided, whereupon the user can choose to release the memory to the system,
  keep it allocated for further invalid access checks, or fill it with an easily
  recognizable pattern for debug sessions. The memory pattern is the old IBM
! hexadecimal convention: `16#DEADBEEF#`.
  
  See the documentation in the file g-debpoo.ads for more information on the
  various strategies.
  
  Upon each dereference, a check is made that the access value denotes a
  properly allocated memory location. Here is a complete example of use of
! `Debug_Pools`, that includes typical instances of  memory corruption:
  
    .. code-block:: ada
  
--- 3966,3979 ----
  provided, whereupon the user can choose to release the memory to the system,
  keep it allocated for further invalid access checks, or fill it with an easily
  recognizable pattern for debug sessions. The memory pattern is the old IBM
! hexadecimal convention: ``16#DEADBEEF#``.
  
  See the documentation in the file g-debpoo.ads for more information on the
  various strategies.
  
  Upon each dereference, a check is made that the access value denotes a
  properly allocated memory location. Here is a complete example of use of
! ``Debug_Pools``, that includes typical instances of  memory corruption:
  
    .. code-block:: ada
  
*************** execution of this erroneous program:
*** 3841,3852 ****
  
    .. _The_gnatmem_Tool:
  
!   The *gnatmem* Tool
!   ------------------
  
    .. index:: ! gnatmem
  
!   The `gnatmem` utility monitors dynamic allocation and
    deallocation activity in a program, and displays information about
    incorrect deallocations and possible sources of memory leaks.
    It is designed to work in association with a static runtime library
--- 4059,4070 ----
  
    .. _The_gnatmem_Tool:
  
!   The ``gnatmem`` Tool
!   --------------------
  
    .. index:: ! gnatmem
  
!   The ``gnatmem`` utility monitors dynamic allocation and
    deallocation activity in a program, and displays information about
    incorrect deallocations and possible sources of memory leaks.
    It is designed to work in association with a static runtime library
*************** execution of this erroneous program:
*** 3865,3885 ****
  
    .. _Running_gnatmem:
  
!   Running `gnatmem`
!   ^^^^^^^^^^^^^^^^^
  
!   `gnatmem` makes use of the output created by the special version of
    allocation and deallocation routines that record call information. This allows
    it to obtain accurate dynamic memory usage history at a minimal cost to the
!   execution speed. Note however, that `gnatmem` is not supported on all
!   platforms (currently, it is supported on AIX, HP-UX, GNU/Linux, Solaris and
!   Windows).
  
!   The `gnatmem` command has the form
  
      ::
  
!        $ gnatmem [`switches`] `user_program`
  
    The program must have been linked with the instrumented version of the
    allocation and deallocation routines. This is done by linking with the
--- 4083,4102 ----
  
    .. _Running_gnatmem:
  
!   Running ``gnatmem``
!   ^^^^^^^^^^^^^^^^^^^
  
!   ``gnatmem`` makes use of the output created by the special version of
    allocation and deallocation routines that record call information. This allows
    it to obtain accurate dynamic memory usage history at a minimal cost to the
!   execution speed. Note however, that ``gnatmem`` is only supported on
!   GNU/Linux and Windows.
  
!   The ``gnatmem`` command has the form
  
      ::
  
!        $ gnatmem [ switches ] user_program
  
    The program must have been linked with the instrumented version of the
    allocation and deallocation routines. This is done by linking with the
*************** execution of this erroneous program:
*** 3892,3916 ****
         $ gnatmake -g my_program -largs -lgmem
  
    As library :file:`libgmem.a` contains an alternate body for package
!   `System.Memory`, :file:`s-memory.adb` should not be compiled and linked
    when an executable is linked with library :file:`libgmem.a`. It is then not
!   recommended to use *gnatmake* with switch *-a*.
  
    When :file:`my_program` is executed, the file :file:`gmem.out` is produced.
    This file contains information about all allocations and deallocations
    performed by the program. It is produced by the instrumented allocations and
!   deallocations routines and will be used by `gnatmem`.
  
    In order to produce symbolic backtrace information for allocations and
    deallocations performed by the GNAT run-time library, you need to use a
!   version of that library that has been compiled with the *-g* switch
    (see :ref:`Rebuilding_the_GNAT_Run-Time_Library`).
  
!   *gnatmem* must be supplied with the :file:`gmem.out` file and the executable to
    examine. If the location of :file:`gmem.out` file was not explicitly supplied by
!   *-i* switch, gnatmem will assume that this file can be found in the
    current directory. For example, after you have executed :file:`my_program`,
!   :file:`gmem.out` can be analyzed by `gnatmem` using the command:
  
      ::
  
--- 4109,4133 ----
         $ gnatmake -g my_program -largs -lgmem
  
    As library :file:`libgmem.a` contains an alternate body for package
!   ``System.Memory``, :file:`s-memory.adb` should not be compiled and linked
    when an executable is linked with library :file:`libgmem.a`. It is then not
!   recommended to use ``gnatmake`` with switch :switch:`-a`.
  
    When :file:`my_program` is executed, the file :file:`gmem.out` is produced.
    This file contains information about all allocations and deallocations
    performed by the program. It is produced by the instrumented allocations and
!   deallocations routines and will be used by ``gnatmem``.
  
    In order to produce symbolic backtrace information for allocations and
    deallocations performed by the GNAT run-time library, you need to use a
!   version of that library that has been compiled with the :switch:`-g` switch
    (see :ref:`Rebuilding_the_GNAT_Run-Time_Library`).
  
!   ``gnatmem`` must be supplied with the :file:`gmem.out` file and the executable to
    examine. If the location of :file:`gmem.out` file was not explicitly supplied by
!   :switch:`-i` switch, gnatmem will assume that this file can be found in the
    current directory. For example, after you have executed :file:`my_program`,
!   :file:`gmem.out` can be analyzed by ``gnatmem`` using the command:
  
      ::
  
*************** execution of this erroneous program:
*** 3944,3955 ****
          .
  
    The first block of output gives general information. In this case, the
!   Ada construct **new** was executed 45 times, and only 6 calls to an
    Unchecked_Deallocation routine occurred.
  
    Subsequent paragraphs display  information on all allocation roots.
    An allocation root is a specific point in the execution of the program
!   that generates some dynamic allocation, such as a **new**
    construct. This root is represented by an execution backtrace (or subprogram
    call stack). By default the backtrace depth for allocations roots is 1, so
    that a root corresponds exactly to a source location. The backtrace can
--- 4161,4172 ----
          .
  
    The first block of output gives general information. In this case, the
!   Ada construct ``new`` was executed 45 times, and only 6 calls to an
    Unchecked_Deallocation routine occurred.
  
    Subsequent paragraphs display  information on all allocation roots.
    An allocation root is a specific point in the execution of the program
!   that generates some dynamic allocation, such as a ``new``
    construct. This root is represented by an execution backtrace (or subprogram
    call stack). By default the backtrace depth for allocations roots is 1, so
    that a root corresponds exactly to a source location. The backtrace can
*************** execution of this erroneous program:
*** 3957,3966 ****
  
    .. _Switches_for_gnatmem:
  
!   Switches for `gnatmem`
!   ^^^^^^^^^^^^^^^^^^^^^^
  
!   `gnatmem` recognizes the following switches:
  
    .. index:: -q (gnatmem)
  
--- 4174,4183 ----
  
    .. _Switches_for_gnatmem:
  
!   Switches for ``gnatmem``
!   ^^^^^^^^^^^^^^^^^^^^^^^^
  
!   ``gnatmem`` recognizes the following switches:
  
    .. index:: -q (gnatmem)
  
*************** execution of this erroneous program:
*** 3972,3978 ****
    .. index:: N switch (gnatmem)
  
    :samp:`{N}`
!     `N` is an integer literal (usually between 1 and 10) which controls the
      depth of the backtraces defining allocation root. The default value for
      N is 1. The deeper the backtrace, the more precise the localization of
      the root. Note that the total number of roots can depend on this
--- 4189,4195 ----
    .. index:: N switch (gnatmem)
  
    :samp:`{N}`
!     ``N`` is an integer literal (usually between 1 and 10) which controls the
      depth of the backtraces defining allocation root. The default value for
      N is 1. The deeper the backtrace, the more precise the localization of
      the root. Note that the total number of roots can depend on this
*************** execution of this erroneous program:
*** 3983,4002 ****
    .. index:: -b (gnatmem)
  
    :samp:`-b {N}`
!     This switch has the same effect as just a depth parameter `N`.
  
  
    .. index:: -i (gnatmem)
  
    :samp:`-i {file}`
!     Do the `gnatmem` processing starting from :file:`file`, rather than
      :file:`gmem.out` in the current directory.
  
  
    .. index:: -m (gnatmem)
  
    :samp:`-m {n}`
!     This switch causes `gnatmem` to mask the allocation roots that have less
      than n leaks.  The default value is 1. Specifying the value of 0 will allow
      examination of even the roots that did not result in leaks.
  
--- 4200,4219 ----
    .. index:: -b (gnatmem)
  
    :samp:`-b {N}`
!     This switch has the same effect as just a depth parameter ``N``.
  
  
    .. index:: -i (gnatmem)
  
    :samp:`-i {file}`
!     Do the ``gnatmem`` processing starting from :file:`file`, rather than
      :file:`gmem.out` in the current directory.
  
  
    .. index:: -m (gnatmem)
  
    :samp:`-m {n}`
!     This switch causes ``gnatmem`` to mask the allocation roots that have less
      than n leaks.  The default value is 1. Specifying the value of 0 will allow
      examination of even the roots that did not result in leaks.
  
*************** execution of this erroneous program:
*** 4004,4031 ****
    .. index:: -s (gnatmem)
  
    :samp:`-s {order}`
!     This switch causes `gnatmem` to sort the allocation roots according to the
      specified order of sort criteria, each identified by a single letter. The
!     currently supported criteria are `n`, `h`, and `w` standing respectively for
      number of unfreed allocations, high watermark, and final watermark
!     corresponding to a specific root. The default order is `nwh`.
  
  
    .. index:: -t (gnatmem)
  
    :samp:`-t`
      This switch causes memory allocated size to be always output in bytes.
!     Default `gnatmem` behavior is to show memory sizes less then 1 kilobyte
      in bytes, from 1 kilobyte till 1 megabyte in kilobytes and the rest in
      megabytes.
  
  
    .. _Example_of_gnatmem_Usage:
  
!   Example of `gnatmem` Usage
!   ^^^^^^^^^^^^^^^^^^^^^^^^^^
  
!   The following example shows the use of `gnatmem`
    on a simple memory-leaking program.
    Suppose that we have the following Ada program:
  
--- 4221,4248 ----
    .. index:: -s (gnatmem)
  
    :samp:`-s {order}`
!     This switch causes ``gnatmem`` to sort the allocation roots according to the
      specified order of sort criteria, each identified by a single letter. The
!     currently supported criteria are ``n``, ``h``, and ``w`` standing respectively for
      number of unfreed allocations, high watermark, and final watermark
!     corresponding to a specific root. The default order is ``nwh``.
  
  
    .. index:: -t (gnatmem)
  
    :samp:`-t`
      This switch causes memory allocated size to be always output in bytes.
!     Default ``gnatmem`` behavior is to show memory sizes less then 1 kilobyte
      in bytes, from 1 kilobyte till 1 megabyte in kilobytes and the rest in
      megabytes.
  
  
    .. _Example_of_gnatmem_Usage:
  
!   Example of ``gnatmem`` Usage
!   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  
!   The following example shows the use of ``gnatmem``
    on a simple memory-leaking program.
    Suppose that we have the following Ada program:
  
*************** execution of this erroneous program:
*** 4061,4067 ****
         end;
  
    The program needs to be compiled with the debugging option and linked with
!   the `gmem` library:
  
      ::
  
--- 4278,4284 ----
         end;
  
    The program needs to be compiled with the debugging option and linked with
!   the ``gmem`` library:
  
      ::
  
*************** execution of this erroneous program:
*** 4073,4079 ****
  
         $ test_gm
  
!   Then `gnatmem` is invoked simply with
  
      ::
  
--- 4290,4296 ----
  
         $ test_gm
  
!   Then ``gnatmem`` is invoked simply with
  
      ::
  
diff -Nrcpad gcc-7.3.0/gcc/ada/doc/gnat_ugn/gnat_utility_programs.rst gcc-8.1.0/gcc/ada/doc/gnat_ugn/gnat_utility_programs.rst
*** gcc-7.3.0/gcc/ada/doc/gnat_ugn/gnat_utility_programs.rst	Fri Jan 13 11:23:42 2017
--- gcc-8.1.0/gcc/ada/doc/gnat_ugn/gnat_utility_programs.rst	Thu Jan 11 08:53:32 2018
***************
*** 1,3 ****
--- 1,7 ----
+ .. role:: switch(samp)
+ 
+ .. |rightarrow| unicode:: 0x2192
+ 
  .. _GNAT_Utility_Programs:
  
  *********************
*************** This chapter describes a number of utili
*** 13,23 ****
    * :ref:`The_Cross-Referencing_Tools_gnatxref_and_gnatfind`
    * :ref:`The_Ada_to_HTML_Converter_gnathtml`
    * :ref:`The_Ada-to-XML_Converter_gnat2xml`
!   * :ref:`The_Program_Property_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`
  
    It also describes how several of these tools can be used in conjunction
    with project files: :ref:`Using_Project_Files_with_GNAT_Tools`
--- 17,28 ----
    * :ref:`The_Cross-Referencing_Tools_gnatxref_and_gnatfind`
    * :ref:`The_Ada_to_HTML_Converter_gnathtml`
    * :ref:`The_Ada-to-XML_Converter_gnat2xml`
!   * :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
    with project files: :ref:`Using_Project_Files_with_GNAT_Tools`
*************** Other GNAT utilities are described elsew
*** 39,119 ****
  
  .. _The_File_Cleanup_Utility_gnatclean:
  
! The File Cleanup Utility *gnatclean*
! ====================================
  
  .. index:: File cleanup tool
  .. index:: gnatclean
  
! `gnatclean` is a tool that allows the deletion of files produced by the
  compiler, binder and linker, including ALI files, object files, tree files,
  expanded source files, library files, interface copy source files, binder
  generated files and executable files.
  
  .. _Running_gnatclean:
  
! Running `gnatclean`
! -------------------
  
! The `gnatclean` command has the form:
  
    ::
  
!       $ gnatclean switches `names`
  
! where `names` is a list of source file names. Suffixes :file:`.ads` and
  :file:`adb` may be omitted. If a project file is specified using switch
! :samp:`-P`, then `names` may be completely omitted.
  
! In normal mode, `gnatclean` delete the files produced by the compiler and,
! if switch `-c` is not specified, by the binder and
  the linker. In informative-only mode, specified by switch
! `-n`, the list of files that would have been deleted in
  normal mode is listed, but no file is actually deleted.
  
  
  .. _Switches_for_gnatclean:
  
! Switches for `gnatclean`
! ------------------------
  
! `gnatclean` recognizes the following switches:
  
  .. index:: --version (gnatclean)
  
! :samp:`--version`
    Display Copyright and version, then exit disregarding all other options.
  
  .. index:: --help (gnatclean)
  
! :samp:`--help`
!   If *--version* was not used, display usage, then exit disregarding
    all other options.
  
! :samp:`--subdirs={subdir}`
    Actual object directory of each project file is the subdirectory subdir of the
    object directory specified or defaulted in the project file.
  
! :samp:`--unchecked-shared-lib-imports`
    By default, shared library projects are not allowed to import static library
    projects. When this switch is used on the command line, this restriction is
    relaxed.
  
  .. index:: -c (gnatclean)
  
! :samp:`-c`
    Only attempt to delete the files produced by the compiler, not those produced
    by the binder or the linker. The files that are not to be deleted are library
    files, interface copy files, binder generated files and executable files.
  
  .. index:: -D (gnatclean)
  
! :samp:`-D {dir}`
!   Indicate that ALI and object files should normally be found in directory `dir`.
  
  .. index:: -F (gnatclean)
  
! :samp:`-F`
    When using project files, if some errors or warnings are detected during
    parsing and verbose mode is not in effect (no use of switch
    -v), then error lines start with the full path name of the project
--- 44,124 ----
  
  .. _The_File_Cleanup_Utility_gnatclean:
  
! The File Cleanup Utility ``gnatclean``
! ======================================
  
  .. index:: File cleanup tool
  .. index:: gnatclean
  
! ``gnatclean`` is a tool that allows the deletion of files produced by the
  compiler, binder and linker, including ALI files, object files, tree files,
  expanded source files, library files, interface copy source files, binder
  generated files and executable files.
  
  .. _Running_gnatclean:
  
! Running ``gnatclean``
! ---------------------
  
! The ``gnatclean`` command has the form:
  
    ::
  
!       $ gnatclean switches names
  
! where ``names`` is a list of source file names. Suffixes :file:`.ads` and
  :file:`adb` may be omitted. If a project file is specified using switch
! :switch:`-P`, then ``names`` may be completely omitted.
  
! In normal mode, ``gnatclean`` delete the files produced by the compiler and,
! if switch :switch:`-c` is not specified, by the binder and
  the linker. In informative-only mode, specified by switch
! :switch:`-n`, the list of files that would have been deleted in
  normal mode is listed, but no file is actually deleted.
  
  
  .. _Switches_for_gnatclean:
  
! Switches for ``gnatclean``
! --------------------------
  
! ``gnatclean`` recognizes the following switches:
  
  .. index:: --version (gnatclean)
  
! :switch:`--version`
    Display Copyright and version, then exit disregarding all other options.
  
  .. index:: --help (gnatclean)
  
! :switch:`--help`
!   If :switch:`--version` was not used, display usage, then exit disregarding
    all other options.
  
! :switch:`--subdirs={subdir}`
    Actual object directory of each project file is the subdirectory subdir of the
    object directory specified or defaulted in the project file.
  
! :switch:`--unchecked-shared-lib-imports`
    By default, shared library projects are not allowed to import static library
    projects. When this switch is used on the command line, this restriction is
    relaxed.
  
  .. index:: -c (gnatclean)
  
! :switch:`-c`
    Only attempt to delete the files produced by the compiler, not those produced
    by the binder or the linker. The files that are not to be deleted are library
    files, interface copy files, binder generated files and executable files.
  
  .. index:: -D (gnatclean)
  
! :switch:`-D {dir}`
!   Indicate that ALI and object files should normally be found in directory ``dir``.
  
  .. index:: -F (gnatclean)
  
! :switch:`-F`
    When using project files, if some errors or warnings are detected during
    parsing and verbose mode is not in effect (no use of switch
    -v), then error lines start with the full path name of the project
*************** Switches for `gnatclean`
*** 121,139 ****
  
  .. index:: -h (gnatclean)
  
! :samp:`-h`
!   Output a message explaining the usage of `gnatclean`.
  
  .. index:: -n (gnatclean)
  
! :samp:`-n`
    Informative-only mode. Do not delete any files. Output the list of the files
    that would have been deleted if this switch was not specified.
  
  .. index:: -P (gnatclean)
  
! :samp:`-P{project}`
!   Use project file `project`. Only one such switch can be used.
    When cleaning a project file, the files produced by the compilation of the
    immediate sources or inherited sources of the project files are to be
    deleted. This is not depending on the presence or not of executable names
--- 126,144 ----
  
  .. index:: -h (gnatclean)
  
! :switch:`-h`
!   Output a message explaining the usage of ``gnatclean``.
  
  .. index:: -n (gnatclean)
  
! :switch:`-n`
    Informative-only mode. Do not delete any files. Output the list of the files
    that would have been deleted if this switch was not specified.
  
  .. index:: -P (gnatclean)
  
! :switch:`-P{project}`
!   Use project file ``project``. Only one such switch can be used.
    When cleaning a project file, the files produced by the compilation of the
    immediate sources or inherited sources of the project files are to be
    deleted. This is not depending on the presence or not of executable names
*************** Switches for `gnatclean`
*** 141,154 ****
  
  .. index:: -q (gnatclean)
  
! :samp:`-q`
    Quiet output. If there are no errors, do not output anything, except in
    verbose mode (switch -v) or in informative-only mode
    (switch -n).
  
  .. index:: -r (gnatclean)
  
! :samp:`-r`
    When a project file is specified (using switch -P),
    clean all imported and extended project files, recursively. If this switch
    is not specified, only the files related to the main project file are to be
--- 146,159 ----
  
  .. index:: -q (gnatclean)
  
! :switch:`-q`
    Quiet output. If there are no errors, do not output anything, except in
    verbose mode (switch -v) or in informative-only mode
    (switch -n).
  
  .. index:: -r (gnatclean)
  
! :switch:`-r`
    When a project file is specified (using switch -P),
    clean all imported and extended project files, recursively. If this switch
    is not specified, only the files related to the main project file are to be
*************** Switches for `gnatclean`
*** 156,230 ****
  
  .. index:: -v (gnatclean)
  
! :samp:`-v`
    Verbose mode.
  
  .. index:: -vP (gnatclean)
  
! :samp:`-vP{x}`
    Indicates the verbosity of the parsing of GNAT project files.
    :ref:`Switches_Related_to_Project_Files`.
  
  .. index:: -X (gnatclean)
  
! :samp:`-X{name}={value}`
!   Indicates that external variable `name` has the value `value`.
    The Project Manager will use this value for occurrences of
!   `external(name)` when parsing the project file.
!   :ref:`Switches_Related_to_Project_Files`.
  
  .. index:: -aO (gnatclean)
  
! :samp:`-aO{dir}`
!   When searching for ALI and object files, look in directory `dir`.
  
  .. index:: -I (gnatclean)
  
! :samp:`-I{dir}`
!   Equivalent to :samp:`-aO{dir}`.
  
  .. index:: -I- (gnatclean)
  
  .. index:: Source files, suppressing search
  
! :samp:`-I-`
    Do not look for ALI or object files in the directory
!   where `gnatclean` was invoked.
  
  
  
  .. _The_GNAT_Library_Browser_gnatls:
  
! The GNAT Library Browser `gnatls`
! =================================
  
  .. index:: Library browser
  .. index:: ! gnatls
  
! `gnatls` is a tool that outputs information about compiled
  units. It gives the relationship between objects, unit names and source
  files. It can also be used to check the source dependencies of a unit
  as well as various characteristics.
  
- Note: to invoke `gnatls` with a project file, use the `gnat`
- driver (see :ref:`The_GNAT_Driver_and_Project_Files`).
- 
  .. _Running_gnatls:
  
! Running `gnatls`
! ----------------
  
! The `gnatls` command has the form
  
    ::
  
!       $ gnatls switches `object_or_ali_file`
  
  The main argument is the list of object or :file:`ali` files
  (see :ref:`The_Ada_Library_Information_Files`)
  for which information is requested.
  
! In normal mode, without additional option, `gnatls` produces a
  four-column listing. Each line represents information for a specific
  object. The first column gives the full path of the object, the second
  column gives the name of the principal unit in this object, the third
--- 161,232 ----
  
  .. index:: -v (gnatclean)
  
! :switch:`-v`
    Verbose mode.
  
  .. index:: -vP (gnatclean)
  
! :switch:`-vP{x}`
    Indicates the verbosity of the parsing of GNAT project files.
    :ref:`Switches_Related_to_Project_Files`.
  
  .. index:: -X (gnatclean)
  
! :switch:`-X{name}={value}`
!   Indicates that external variable ``name`` has the value ``value``.
    The Project Manager will use this value for occurrences of
!   ``external(name)`` when parsing the project file.
!   See :ref:`Switches_Related_to_Project_Files`.
  
  .. index:: -aO (gnatclean)
  
! :switch:`-aO{dir}`
!   When searching for ALI and object files, look in directory ``dir``.
  
  .. index:: -I (gnatclean)
  
! :switch:`-I{dir}`
!   Equivalent to :switch:`-aO{dir}`.
  
  .. index:: -I- (gnatclean)
  
  .. index:: Source files, suppressing search
  
! :switch:`-I-`
    Do not look for ALI or object files in the directory
!   where ``gnatclean`` was invoked.
  
  
  
  .. _The_GNAT_Library_Browser_gnatls:
  
! The GNAT Library Browser ``gnatls``
! ===================================
  
  .. index:: Library browser
  .. index:: ! gnatls
  
! ``gnatls`` is a tool that outputs information about compiled
  units. It gives the relationship between objects, unit names and source
  files. It can also be used to check the source dependencies of a unit
  as well as various characteristics.
  
  .. _Running_gnatls:
  
! Running ``gnatls``
! ------------------
  
! The ``gnatls`` command has the form
  
    ::
  
!       $ gnatls switches object_or_ali_file
  
  The main argument is the list of object or :file:`ali` files
  (see :ref:`The_Ada_Library_Information_Files`)
  for which information is requested.
  
! In normal mode, without additional option, ``gnatls`` produces a
  four-column listing. Each line represents information for a specific
  object. The first column gives the full path of the object, the second
  column gives the name of the principal unit in this object, the third
*************** qualifier which can be:
*** 259,266 ****
  *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 gnatmake with the qualifier
!   *-m (minimal recompilation)*, a file marked
    MOK will not be recompiled.
  
  *DIF (modified)*
--- 261,268 ----
  *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 gnatmake with the option
!   :switch:`-m` (minimal recompilation), a file marked
    MOK will not be recompiled.
  
  *DIF (modified)*
*************** qualifier which can be:
*** 278,344 ****
  
  .. _Switches_for_gnatls:
  
! Switches for `gnatls`
! ---------------------
  
! `gnatls` recognizes the following switches:
  
  
  .. index:: --version (gnatls)
  
! :samp:`--version`
    Display Copyright and version, then exit disregarding all other options.
  
  
  .. index:: --help (gnatls)
  
! :samp:`*--help`
!   If *--version* was not used, display usage, then exit disregarding
    all other options.
  
  
  .. index:: -a (gnatls)
  
! :samp:`-a`
    Consider all units, including those of the predefined Ada library.
!   Especially useful with *-d*.
  
  
  .. index:: -d (gnatls)
  
! :samp:`-d`
    List sources from which specified units depend on.
  
  
  .. index:: -h (gnatls)
  
! :samp:`-h`
    Output the list of options.
  
  
  .. index:: -o (gnatls)
  
! :samp:`-o`
    Only output information about object files.
  
  
  .. index:: -s (gnatls)
  
! :samp:`-s`
    Only output information about source files.
  
  
  .. index:: -u (gnatls)
  
! :samp:`-u`
    Only output information about compilation units.
  
  
  .. index:: -files (gnatls)
  
! :samp:`-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.
  
--- 280,346 ----
  
  .. _Switches_for_gnatls:
  
! Switches for ``gnatls``
! -----------------------
  
! ``gnatls`` recognizes the following switches:
  
  
  .. index:: --version (gnatls)
  
! :switch:`--version`
    Display Copyright and version, then exit disregarding all other options.
  
  
  .. index:: --help (gnatls)
  
! :switch:`--help`
!   If :switch:`--version` was not used, display usage, then exit disregarding
    all other options.
  
  
  .. index:: -a (gnatls)
  
! :switch:`-a`
    Consider all units, including those of the predefined Ada library.
!   Especially useful with :switch:`-d`.
  
  
  .. index:: -d (gnatls)
  
! :switch:`-d`
    List sources from which specified units depend on.
  
  
  .. index:: -h (gnatls)
  
! :switch:`-h`
    Output the list of options.
  
  
  .. index:: -o (gnatls)
  
! :switch:`-o`
    Only output information about object files.
  
  
  .. index:: -s (gnatls)
  
! :switch:`-s`
    Only output information about source files.
  
  
  .. index:: -u (gnatls)
  
! :switch:`-u`
    Only output information about compilation units.
  
  
  .. index:: -files (gnatls)
  
! :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.
  
*************** Switches for `gnatls`
*** 351,377 ****
  
  .. index:: -I- (gnatls)
  
! :samp:`-aO{dir}`, :samp:`-aI{dir}`, :samp:`-I{dir}`, :samp:`-I-`, :samp:`-nostdinc`
!   Source path manipulation. Same meaning as the equivalent *gnatmake*
    flags (:ref:`Switches_for_gnatmake`).
  
  
  .. index:: -aP (gnatls)
  
! :samp:`-aP{dir}`
!   Add `dir` at the beginning of the project search dir.
  
  
  .. index:: --RTS (gnatls)
  
! :samp:`--RTS={rts-path}``
    Specifies the default location of the runtime library. Same meaning as the
!   equivalent *gnatmake* flag (:ref:`Switches_for_gnatmake`).
  
  
  .. index:: -v (gnatls)
  
! :samp:`-v`
    Verbose mode. Output the complete source, object and project paths. Do not use
    the default column layout but instead use long format giving as much as
    information possible on each requested units, including special
--- 353,379 ----
  
  .. index:: -I- (gnatls)
  
! :switch:`-aO{dir}`, :switch:`-aI{dir}`, :switch:`-I{dir}`, :switch:`-I-`, :switch:`-nostdinc`
!   Source path manipulation. Same meaning as the equivalent ``gnatmake``
    flags (:ref:`Switches_for_gnatmake`).
  
  
  .. index:: -aP (gnatls)
  
! :switch:`-aP{dir}`
!   Add ``dir`` at the beginning of the project search dir.
  
  
  .. index:: --RTS (gnatls)
  
! :switch:`--RTS={rts-path}`
    Specifies the default location of the runtime library. Same meaning as the
!   equivalent ``gnatmake`` flag (:ref:`Switches_for_gnatmake`).
  
  
  .. index:: -v (gnatls)
  
! :switch:`-v`
    Verbose mode. Output the complete source, object and project paths. Do not use
    the default column layout but instead use long format giving as much as
    information possible on each requested units, including special
*************** Switches for `gnatls`
*** 397,404 ****
  
  .. _Example_of_gnatls_Usage:
  
! Example of `gnatls` Usage
! -------------------------
  
  Example of using the verbose switch. Note how the source and
  object paths are affected by the -I switch.
--- 399,406 ----
  
  .. _Example_of_gnatls_Usage:
  
! Example of ``gnatls`` Usage
! ---------------------------
  
  Example of using the verbose switch. Note how the source and
  object paths are affected by the -I switch.
*************** building specialized scripts.
*** 472,485 ****
  
  .. _The_Cross-Referencing_Tools_gnatxref_and_gnatfind:
  
! The Cross-Referencing Tools `gnatxref` and `gnatfind`
! =====================================================
  
  .. index:: ! gnatxref
  .. index:: ! gnatfind
  
  The compiler generates cross-referencing information (unless
! you set the :samp:`-gnatx` switch), which are saved in the :file:`.ali` files.
  This information indicates where in the source each entity is declared and
  referenced. Note that entities in package Standard are not included, but
  entities in all other predefined units are included in the output.
--- 474,487 ----
  
  .. _The_Cross-Referencing_Tools_gnatxref_and_gnatfind:
  
! The Cross-Referencing Tools ``gnatxref`` and ``gnatfind``
! =========================================================
  
  .. index:: ! gnatxref
  .. index:: ! gnatfind
  
  The compiler generates cross-referencing information (unless
! you set the :switch:`-gnatx` switch), which are saved in the :file:`.ali` files.
  This information indicates where in the source each entity is declared and
  referenced. Note that entities in package Standard are not included, but
  entities in all other predefined units are included in the output.
*************** Before using any of these two tools, you
*** 488,615 ****
  application, so that GNAT gets a chance to generate the cross-referencing
  information.
  
! The two tools `gnatxref` and `gnatfind` take advantage of this
  information to provide the user with the capability to easily locate the
  declaration and references to an entity. These tools are quite similar,
! the difference being that `gnatfind` is intended for locating
  definitions and/or references to a specified entity or entities, whereas
! `gnatxref` is oriented to generating a full report of all
  cross-references.
  
  To use these tools, you must not compile your application using the
! *-gnatx* switch on the *gnatmake* command line
  (see :ref:`The_GNAT_Make_Program_gnatmake`). Otherwise, cross-referencing
  information will not be generated.
  
- Note: to invoke `gnatxref` or `gnatfind` with a project file,
- use the `gnat` driver (see :ref:`The_GNAT_Driver_and_Project_Files`).
- 
  .. _gnatxref_Switches:
  
! `gnatxref` Switches
! -------------------
  
! The command invocation for `gnatxref` is:
  
    ::
  
!       $ gnatxref [`switches`] `sourcefile1` [`sourcefile2` ...]
  
  where
  
! *sourcefile1* [, *sourcefile2* ...]
    identify the source files for which a report is to be generated. The
!   'with'ed units will be processed too. You must provide at least one file.
  
    These file names are considered to be regular expressions, so for instance
    specifying :file:`source\*.adb` is the same as giving every file in the current
    directory whose name starts with :file:`source` and whose extension is
    :file:`adb`.
  
!   You shouldn't specify any directory name, just base names. *gnatxref*
!   and *gnatfind* will be able to locate these files by themselves using
    the source path. If you specify directories, no result is produced.
  
! The following switches are available for *gnatxref*:
  
  
  .. index:: --version (gnatxref)
  
! :samp:`-version`
    Display Copyright and version, then exit disregarding all other options.
  
  
  .. index:: --help (gnatxref)
  
! :samp:`-help`
!   If *--version* was not used, display usage, then exit disregarding
    all other options.
  
  
  .. index:: -a (gnatxref)
  
! :samp:`a`
!   If this switch is present, `gnatfind` and `gnatxref` will parse
    the read-only files found in the library search path. Otherwise, these files
    will be ignored. This option can be used to protect Gnat sources or your own
!   libraries from being parsed, thus making `gnatfind` and `gnatxref`
    much faster, and their output much smaller. Read-only here refers to access
    or permissions status in the file system for the current user.
  
  
  .. index:: -aIDIR (gnatxref)
  
! :samp:`aI{DIR}`
    When looking for source files also look in directory DIR. The order in which
!   source file search is undertaken is the same as for *gnatmake*.
  
  
  .. index:: -aODIR (gnatxref)
  
! :samp:`aO{DIR}`
!   When searching for library and object files, look in directory
    DIR. The order in which library files are searched is the same as for
!   *gnatmake*.
  
  
  .. index:: -nostdinc (gnatxref)
  
! :samp:`nostdinc`
    Do not look for sources in the system default directory.
  
  
  .. index:: -nostdlib (gnatxref)
  
! :samp:`nostdlib`
    Do not look for library files in the system default directory.
  
  
  .. index:: --ext (gnatxref)
  
! :samp:`-ext={extension}`
!   Specify an alternate ali file extension. The default is `ali` and other
!   extensions (e.g. `gli` for C/C++ sources when using *-fdump-xref*)
!   may be specified via this switch. Note that if this switch overrides the
!   default, which means that only the new extension will be considered.
  
  
  .. index:: --RTS (gnatxref)
  
! :samp:`-RTS={rts-path}`
    Specifies the default location of the runtime library. Same meaning as the
!   equivalent *gnatmake* flag (:ref:`Switches_for_gnatmake`).
  
  
  .. index:: -d (gnatxref)
  
! :samp:`d`
!   If this switch is set `gnatxref` will output the parent type
    reference for each matching derived types.
  
  
  .. index:: -f (gnatxref)
  
! :samp:`f`
    If this switch is set, the output file names will be preceded by their
    directory (if the file was found in the search path). If this switch is
    not set, the directory will not be printed.
--- 490,614 ----
  application, so that GNAT gets a chance to generate the cross-referencing
  information.
  
! The two tools ``gnatxref`` and ``gnatfind`` take advantage of this
  information to provide the user with the capability to easily locate the
  declaration and references to an entity. These tools are quite similar,
! the difference being that ``gnatfind`` is intended for locating
  definitions and/or references to a specified entity or entities, whereas
! ``gnatxref`` is oriented to generating a full report of all
  cross-references.
  
  To use these tools, you must not compile your application using the
! :switch:`-gnatx` switch on the ``gnatmake`` command line
  (see :ref:`The_GNAT_Make_Program_gnatmake`). Otherwise, cross-referencing
  information will not be generated.
  
  .. _gnatxref_Switches:
  
! ``gnatxref`` Switches
! ---------------------
  
! The command invocation for ``gnatxref`` is:
  
    ::
  
!       $ gnatxref [ switches ] sourcefile1 [ sourcefile2 ... ]
  
  where
  
! ``sourcefile1`` [, ``sourcefile2`` ...]
    identify the source files for which a report is to be generated. The
!   ``with``\ ed units will be processed too. You must provide at least one file.
  
    These file names are considered to be regular expressions, so for instance
    specifying :file:`source\*.adb` is the same as giving every file in the current
    directory whose name starts with :file:`source` and whose extension is
    :file:`adb`.
  
!   You shouldn't specify any directory name, just base names. ``gnatxref``
!   and ``gnatfind`` will be able to locate these files by themselves using
    the source path. If you specify directories, no result is produced.
  
! The following switches are available for ``gnatxref``:
  
  
  .. index:: --version (gnatxref)
  
! :switch:`--version`
    Display Copyright and version, then exit disregarding all other options.
  
  
  .. index:: --help (gnatxref)
  
! :switch:`--help`
!   If :switch:`--version` was not used, display usage, then exit disregarding
    all other options.
  
  
  .. index:: -a (gnatxref)
  
! :switch:`-a`
!   If this switch is present, ``gnatfind`` and ``gnatxref`` will parse
    the read-only files found in the library search path. Otherwise, these files
    will be ignored. This option can be used to protect Gnat sources or your own
!   libraries from being parsed, thus making ``gnatfind`` and ``gnatxref``
    much faster, and their output much smaller. Read-only here refers to access
    or permissions status in the file system for the current user.
  
  
  .. index:: -aIDIR (gnatxref)
  
! :switch:`-aI{DIR}`
    When looking for source files also look in directory DIR. The order in which
!   source file search is undertaken is the same as for ``gnatmake``.
  
  
  .. index:: -aODIR (gnatxref)
  
! :switch:`aO{DIR}`
!   When -searching for library and object files, look in directory
    DIR. The order in which library files are searched is the same as for
!   ``gnatmake``.
  
  
  .. index:: -nostdinc (gnatxref)
  
! :switch:`-nostdinc`
    Do not look for sources in the system default directory.
  
  
  .. index:: -nostdlib (gnatxref)
  
! :switch:`-nostdlib`
    Do not look for library files in the system default directory.
  
  
  .. index:: --ext (gnatxref)
  
! :switch:`--ext={extension}`
!   Specify an alternate ali file extension. The default is ``ali`` and other
!   extensions (e.g. ``gli`` for C/C++ sources) may be specified via this switch.
!   Note that if this switch overrides the default, only the new extension will
!   be considered.
  
  
  .. index:: --RTS (gnatxref)
  
! :switch:`--RTS={rts-path}`
    Specifies the default location of the runtime library. Same meaning as the
!   equivalent ``gnatmake`` flag (:ref:`Switches_for_gnatmake`).
  
  
  .. index:: -d (gnatxref)
  
! :switch:`-d`
!   If this switch is set ``gnatxref`` will output the parent type
    reference for each matching derived types.
  
  
  .. index:: -f (gnatxref)
  
! :switch:`-f`
    If this switch is set, the output file names will be preceded by their
    directory (if the file was found in the search path). If this switch is
    not set, the directory will not be printed.
*************** The following switches are available for
*** 617,680 ****
  
  .. index:: -g (gnatxref)
  
! :samp:`g`
    If this switch is set, information is output only for library-level
    entities, ignoring local entities. The use of this switch may accelerate
!   `gnatfind` and `gnatxref`.
  
  
  .. index:: -IDIR (gnatxref)
  
! :samp:`I{DIR}`
!   Equivalent to :samp:`-aODIR -aIDIR`.
  
  
  .. index:: -pFILE (gnatxref)
  
! :samp:`p{FILE}`
!   Specify a project file to use.
  
!   By default, `gnatxref` and `gnatfind` will try to locate a
!   project file in the current directory.
  
!   If a project file is either specified or found by the tools, then the content
!   of the source directory and object directory lines are added as if they
!   had been specified respectively by :samp:`-aI`
!   and :samp:`-aO`.
  
! :samp:`u`
    Output only unused symbols. This may be really useful if you give your
!   main compilation unit on the command line, as `gnatxref` will then
    display every unused entity and 'with'ed package.
  
! 
! :samp:`v`
!   Instead of producing the default output, `gnatxref` will generate a
    :file:`tags` file that can be used by vi. For examples how to use this
    feature, see :ref:`Examples_of_gnatxref_Usage`. The tags file is output
    to the standard output, thus you will have to redirect it to a file.
  
  All these switches may be in any order on the command line, and may even
  appear after the file names. They need not be separated by spaces, thus
! you can say :samp:`gnatxref -ag` instead of :samp:`gnatxref -a -g`.
  
  .. _gnatfind_Switches:
  
! `gnatfind` Switches
! -------------------
  
! The command invocation for `gnatfind` is:
  
    ::
  
!     $ gnatfind [`switches`] `pattern`[:`sourcefile`[:`line`[:`column`]]]
!           [`file1` `file2` ...]
  
  with the following iterpretation of the command arguments:
  
  *pattern*
    An entity will be output only if it matches the regular expression found
!   in `pattern`, see :ref:`Regular_Expressions_in_gnatfind_and_gnatxref`.
  
    Omitting the pattern is equivalent to specifying ``*``, which
    will match any entity. Note that if you do not provide a pattern, you
--- 616,677 ----
  
  .. index:: -g (gnatxref)
  
! :switch:`-g`
    If this switch is set, information is output only for library-level
    entities, ignoring local entities. The use of this switch may accelerate
!   ``gnatfind`` and ``gnatxref``.
  
  
  .. index:: -IDIR (gnatxref)
  
! :switch:`-I{DIR}`
!   Equivalent to :switch:`-aODIR -aIDIR`.
  
  
  .. index:: -pFILE (gnatxref)
  
! :switch:`-p{FILE}`
!   Specify a configuration file to use to list the source and object directories.
  
!   If a file is specified, then the content of the source directory and object
!   directory lines are added as if they had been specified respectively
!   by :switch:`-aI` and :switch:`-aO`.
  
!   See :ref:`Configuration_Files_for_gnatxref_and_gnatfind` for the syntax
!   of this configuration file.
  
! :switch:`-u`
    Output only unused symbols. This may be really useful if you give your
!   main compilation unit on the command line, as ``gnatxref`` will then
    display every unused entity and 'with'ed package.
  
! :switch:`-v`
!   Instead of producing the default output, ``gnatxref`` will generate a
    :file:`tags` file that can be used by vi. For examples how to use this
    feature, see :ref:`Examples_of_gnatxref_Usage`. The tags file is output
    to the standard output, thus you will have to redirect it to a file.
  
  All these switches may be in any order on the command line, and may even
  appear after the file names. They need not be separated by spaces, thus
! you can say ``gnatxref -ag`` instead of ``gnatxref -a -g``.
  
  .. _gnatfind_Switches:
  
! ``gnatfind`` Switches
! ---------------------
  
! The command invocation for ``gnatfind`` is:
  
    ::
  
!     $ gnatfind [ switches ]  pattern[:sourcefile[:line[:column]]]
!           [file1 file2 ...]
  
  with the following iterpretation of the command arguments:
  
  *pattern*
    An entity will be output only if it matches the regular expression found
!   in *pattern*, see :ref:`Regular_Expressions_in_gnatfind_and_gnatxref`.
  
    Omitting the pattern is equivalent to specifying ``*``, which
    will match any entity. Note that if you do not provide a pattern, you
*************** with the following iterpretation of the
*** 685,693 ****
    8-bit codes other than Latin-1, or for wide characters in identifiers.
  
  *sourcefile*
!   `gnatfind` will look for references, bodies or declarations
!   of symbols referenced in :file:`sourcefile`, at line `line`
!   and column `column`. See :ref:`Examples_of_gnatfind_Usage`
    for syntax examples.
  
  *line*
--- 682,690 ----
    8-bit codes other than Latin-1, or for wide characters in identifiers.
  
  *sourcefile*
!   ``gnatfind`` will look for references, bodies or declarations
!   of symbols referenced in :file:`sourcefile`, at line ``line``
!   and column ``column``. See :ref:`Examples_of_gnatfind_Usage`
    for syntax examples.
  
  *line*
*************** with the following iterpretation of the
*** 716,725 ****
    occurrences of the entity in the separate units of the ones given on the
    command line will also be displayed.
  
!   Note that if you specify at least one file in this part, `gnatfind` may
    sometimes not be able to find the body of the subprograms.
  
- 
  At least one of 'sourcefile' or 'pattern' has to be present on
  the command line.
  
--- 713,721 ----
    occurrences of the entity in the separate units of the ones given on the
    command line will also be displayed.
  
!   Note that if you specify at least one file in this part, ``gnatfind`` may
    sometimes not be able to find the body of the subprograms.
  
  At least one of 'sourcefile' or 'pattern' has to be present on
  the command line.
  
*************** The following switches are available:
*** 727,815 ****
  
  .. index:: --version (gnatfind)
  
! :samp:`--version`
    Display Copyright and version, then exit disregarding all other options.
  
  
  .. index:: --help (gnatfind)
  
! :samp:`-help`
!   If *--version* was not used, display usage, then exit disregarding
    all other options.
  
  
  .. index:: -a (gnatfind)
  
! :samp:`a`
!   If this switch is present, `gnatfind` and `gnatxref` will parse
    the read-only files found in the library search path. Otherwise, these files
    will be ignored. This option can be used to protect Gnat sources or your own
!   libraries from being parsed, thus making `gnatfind` and `gnatxref`
    much faster, and their output much smaller. Read-only here refers to access
    or permission status in the file system for the current user.
  
  
  .. index:: -aIDIR (gnatfind)
  
! :samp:`aI{DIR}`
    When looking for source files also look in directory DIR. The order in which
!   source file search is undertaken is the same as for *gnatmake*.
  
  
  .. index:: -aODIR (gnatfind)
  
! :samp:`aO{DIR}`
    When searching for library and object files, look in directory
    DIR. The order in which library files are searched is the same as for
!   *gnatmake*.
  
  
  .. index:: -nostdinc (gnatfind)
  
! :samp:`nostdinc`
    Do not look for sources in the system default directory.
  
  
  .. index:: -nostdlib (gnatfind)
  
! :samp:`nostdlib`
    Do not look for library files in the system default directory.
  
  
  .. index:: --ext (gnatfind)
  
! :samp:`-ext={extension}`
!   Specify an alternate ali file extension. The default is `ali` and other
!   extensions (e.g. `gli` for C/C++ sources when using *-fdump-xref*)
!   may be specified via this switch. Note that if this switch overrides the
!   default, which means that only the new extension will be considered.
  
  
  .. index:: --RTS (gnatfind)
  
! :samp:`-RTS={rts-path}`
    Specifies the default location of the runtime library. Same meaning as the
!   equivalent *gnatmake* flag (:ref:`Switches_for_gnatmake`).
  
  
  .. index:: -d (gnatfind)
  
! :samp:`d`
!   If this switch is set, then `gnatfind` will output the parent type
    reference for each matching derived types.
  
  
  .. index:: -e (gnatfind)
  
! :samp:`e`
!   By default, `gnatfind` accept the simple regular expression set for
!   `pattern`. If this switch is set, then the pattern will be
    considered as full Unix-style regular expression.
  
  
  .. index:: -f (gnatfind)
  
! :samp:`f`
    If this switch is set, the output file names will be preceded by their
    directory (if the file was found in the search path). If this switch is
    not set, the directory will not be printed.
--- 723,810 ----
  
  .. index:: --version (gnatfind)
  
! :switch:`--version`
    Display Copyright and version, then exit disregarding all other options.
  
  
  .. index:: --help (gnatfind)
  
! :switch:`--help`
!   If :switch:`--version` was not used, display usage, then exit disregarding
    all other options.
  
  
  .. index:: -a (gnatfind)
  
! :switch:`-a`
!   If this switch is present, ``gnatfind`` and ``gnatxref`` will parse
    the read-only files found in the library search path. Otherwise, these files
    will be ignored. This option can be used to protect Gnat sources or your own
!   libraries from being parsed, thus making ``gnatfind`` and ``gnatxref``
    much faster, and their output much smaller. Read-only here refers to access
    or permission status in the file system for the current user.
  
  
  .. index:: -aIDIR (gnatfind)
  
! :switch:`-aI{DIR}`
    When looking for source files also look in directory DIR. The order in which
!   source file search is undertaken is the same as for ``gnatmake``.
  
  
  .. index:: -aODIR (gnatfind)
  
! :switch:`-aO{DIR}`
    When searching for library and object files, look in directory
    DIR. The order in which library files are searched is the same as for
!   ``gnatmake``.
  
  
  .. index:: -nostdinc (gnatfind)
  
! :switch:`-nostdinc`
    Do not look for sources in the system default directory.
  
  
  .. index:: -nostdlib (gnatfind)
  
! :switch:`-nostdlib`
    Do not look for library files in the system default directory.
  
  
  .. index:: --ext (gnatfind)
  
! :switch:`--ext={extension}`
!   Specify an alternate ali file extension. The default is ``ali`` and other
!   extensions may be specified via this switch. Note that if this switch
!   overrides the default, only the new extension will be considered.
  
  
  .. index:: --RTS (gnatfind)
  
! :switch:`--RTS={rts-path}`
    Specifies the default location of the runtime library. Same meaning as the
!   equivalent ``gnatmake`` flag (:ref:`Switches_for_gnatmake`).
  
  
  .. index:: -d (gnatfind)
  
! :switch:`-d`
!   If this switch is set, then ``gnatfind`` will output the parent type
    reference for each matching derived types.
  
  
  .. index:: -e (gnatfind)
  
! :switch:`-e`
!   By default, ``gnatfind`` accept the simple regular expression set for
!   ``pattern``. If this switch is set, then the pattern will be
    considered as full Unix-style regular expression.
  
  
  .. index:: -f (gnatfind)
  
! :switch:`-f`
    If this switch is set, the output file names will be preceded by their
    directory (if the file was found in the search path). If this switch is
    not set, the directory will not be printed.
*************** The following switches are available:
*** 817,868 ****
  
  .. index:: -g (gnatfind)
  
! :samp:`g`
    If this switch is set, information is output only for library-level
    entities, ignoring local entities. The use of this switch may accelerate
!   `gnatfind` and `gnatxref`.
  
  
  .. index:: -IDIR (gnatfind)
  
! :samp:`I{DIR}`
!   Equivalent to :samp:`-aODIR -aIDIR`.
  
  
  .. index:: -pFILE (gnatfind)
  
! :samp:`p{FILE}`
!   Specify a project file.
!   By default, `gnatxref` and `gnatfind` will try to locate a
!   project file in the current directory.
  
!   If a project file is either specified or found by the tools, then the content
!   of the source directory and object directory lines are added as if they
!   had been specified respectively by :samp:`-aI` and
!   :samp:`-aO`.
  
  
  .. index:: -r (gnatfind)
  
! :samp:`r`
!   By default, `gnatfind` will output only the information about the
    declaration, body or type completion of the entities. If this switch is
!   set, the `gnatfind` will locate every reference to the entities in
    the files specified on the command line (or in every file in the search
    path if no file is given on the command line).
  
  
  .. index:: -s (gnatfind)
  
! :samp:`s`
!   If this switch is set, then `gnatfind` will output the content
    of the Ada source file lines were the entity was found.
  
  
  .. index:: -t (gnatfind)
  
! :samp:`t`
!   If this switch is set, then `gnatfind` will output the type hierarchy for
    the specified type. It act like -d option but recursively from parent
    type to parent type. When this switch is set it is not possible to
    specify more than one file.
--- 812,862 ----
  
  .. index:: -g (gnatfind)
  
! :switch:`-g`
    If this switch is set, information is output only for library-level
    entities, ignoring local entities. The use of this switch may accelerate
!   ``gnatfind`` and ``gnatxref``.
  
  
  .. index:: -IDIR (gnatfind)
  
! :switch:`-I{DIR}`
!   Equivalent to :switch:`-aODIR -aIDIR`.
  
  
  .. index:: -pFILE (gnatfind)
  
! :switch:`-p{FILE}`
!   Specify a configuration file to use to list the source and object directories.
  
!   If a file is specified, then the content of the source directory and object
!   directory lines are added as if they had been specified respectively
!   by :switch:`-aI` and :switch:`-aO`.
  
+   See :ref:`Configuration_Files_for_gnatxref_and_gnatfind` for the syntax
+   of this configuration file.
  
  .. index:: -r (gnatfind)
  
! :switch:`-r`
!   By default, ``gnatfind`` will output only the information about the
    declaration, body or type completion of the entities. If this switch is
!   set, the ``gnatfind`` will locate every reference to the entities in
    the files specified on the command line (or in every file in the search
    path if no file is given on the command line).
  
  
  .. index:: -s (gnatfind)
  
! :switch:`-s`
!   If this switch is set, then ``gnatfind`` will output the content
    of the Ada source file lines were the entity was found.
  
  
  .. index:: -t (gnatfind)
  
! :switch:`-t`
!   If this switch is set, then ``gnatfind`` will output the type hierarchy for
    the specified type. It act like -d option but recursively from parent
    type to parent type. When this switch is set it is not possible to
    specify more than one file.
*************** The following switches are available:
*** 870,978 ****
  
  All these switches may be in any order on the command line, and may even
  appear after the file names. They need not be separated by spaces, thus
! you can say :samp:`gnatxref -ag` instead of
! :samp:`gnatxref -a -g`.
  
! As stated previously, gnatfind will search in every directory in the
  search path. You can force it to look only in the current directory if
! you specify `*` at the end of the command line.
! 
! .. _Project_Files_for_gnatxref_and_gnatfind:
  
! Project Files for *gnatxref* and *gnatfind*
! -------------------------------------------
  
! Project files allow a programmer to specify how to compile its
! application, where to find sources, etc.  These files are used
! primarily by GPS, but they can also be used
! by the two tools `gnatxref` and `gnatfind`.
  
! A project file name must end with :file:`.gpr`. If a single one is
! present in the current directory, then `gnatxref` and `gnatfind` will
! extract the information from it. If multiple project files are found, none of
! them is read, and you have to use the :samp:`-p` switch to specify the one
! you want to use.
  
! The following lines can be included, even though most of them have default
! values which can be used in most cases.
! The lines can be entered in any order in the file.
! Except for :file:`src_dir` and :file:`obj_dir`, you can only have one instance of
! each line. If you have multiple instances, only the last one is taken into
! account.
  
  * *src_dir=DIR*
!     [default: `"./"`].
!     Specifies a directory where to look for source files. Multiple `src_dir`
      lines can be specified and they will be searched in the order they
      are specified.
  
- 
  * *obj_dir=DIR*
!     [default: `"./"`].
      Specifies a directory where to look for object and library files. Multiple
!     `obj_dir` lines can be specified, and they will be searched in the order
      they are specified
  
! 
! * *comp_opt=SWITCHES*
!     [default: `""`].
!     Creates a variable which can be referred to subsequently by using
!     the `${comp_opt}` notation. This is intended to store the default
!     switches given to *gnatmake* and *gcc*.
! 
! 
! * *bind_opt=SWITCHES*
!     [default: `""`].
!     Creates a variable which can be referred to subsequently by using
!     the :samp:`${bind_opt}` notation. This is intended to store the default
!     switches given to *gnatbind*.
! 
! 
! * *link_opt=SWITCHES*
!     [default: `""`].
!     Creates a variable which can be referred to subsequently by using
!     the :samp:`${link_opt}` notation. This is intended to store the default
!     switches given to *gnatlink*.
! 
! 
! * *main=EXECUTABLE*
!     [default: `""`].
!     Specifies the name of the executable for the application. This variable can
!     be referred to in the following lines by using the :samp:`{${main}` notation.
! 
! 
! * *comp_cmd=COMMAND*
!     [default: `"gcc -c -I${src_dir} -g -gnatq"`].
!     Specifies the command used to compile a single file in the application.
! 
! 
! * *make_cmd=COMMAND*
!     [default: `"gnatmake ${main} -aI${src_dir}
!     -aO${obj_dir} -g -gnatq -cargs ${comp_opt}
!     -bargs ${bind_opt} -largs ${link_opt}"`].
!     Specifies the command used to recompile the whole application.
! 
! 
! * *run_cmd=COMMAND*
!     [default: `"${main}"`].
!     Specifies the command used to run the application.
! 
! 
! * *debug_cmd=COMMAND*
!     [default: `"gdb ${main}"`].
!     Specifies the command used to debug the application
! 
! 
! *gnatxref* and *gnatfind* only take into account the
! `src_dir` and `obj_dir` lines, and ignore the others.
! 
  
  .. _Regular_Expressions_in_gnatfind_and_gnatxref:
  
! Regular Expressions in `gnatfind` and `gnatxref`
! ------------------------------------------------
  
! As specified in the section about *gnatfind*, the pattern can be a
  regular expression. Two kinds of regular expressions
  are recognized:
  
--- 864,907 ----
  
  All these switches may be in any order on the command line, and may even
  appear after the file names. They need not be separated by spaces, thus
! you can say ``gnatxref -ag`` instead of
! ``gnatxref -a -g``.
  
! As stated previously, ``gnatfind`` will search in every directory in the
  search path. You can force it to look only in the current directory if
! you specify ``*`` at the end of the command line.
  
! .. _Configuration_Files_for_gnatxref_and_gnatfind:
  
! Configuration Files for ``gnatxref`` and ``gnatfind``
! -----------------------------------------------------
  
! Configuration files are used by ``gnatxref`` and ``gnatfind`` to specify
! the list of source and object directories to consider. They can be
! specified via the :switch:`-p` switch.
  
! The following lines can be included, in any order in the file:
  
  * *src_dir=DIR*
!     [default: ``"./"``].
!     Specifies a directory where to look for source files. Multiple ``src_dir``
      lines can be specified and they will be searched in the order they
      are specified.
  
  * *obj_dir=DIR*
!     [default: ``"./"``].
      Specifies a directory where to look for object and library files. Multiple
!     ``obj_dir`` lines can be specified, and they will be searched in the order
      they are specified
  
! Any other line will be silently ignored.
  
  .. _Regular_Expressions_in_gnatfind_and_gnatxref:
  
! Regular Expressions in ``gnatfind`` and ``gnatxref``
! ----------------------------------------------------
  
! As specified in the section about ``gnatfind``, the pattern can be a
  regular expression. Two kinds of regular expressions
  are recognized:
  
*************** are recognized:
*** 994,1000 ****
  
  * *Full regular expression*
      The second set of regular expressions is much more powerful. This is the
!     type of regular expressions recognized by utilities such as :samp:`grep`.
  
      The following is the form of a regular expression, expressed in same BNF
      style as is found in the Ada Reference Manual:
--- 923,929 ----
  
  * *Full regular expression*
      The second set of regular expressions is much more powerful. This is the
!     type of regular expressions recognized by utilities such as ``grep``.
  
      The following is the form of a regular expression, expressed in same BNF
      style as is found in the Ada Reference Manual:
*************** are recognized:
*** 1024,1030 ****
      Here are a few examples:
  
        ``abcde|fghi``
!           will match any of the two strings :samp:`abcde` and :samp:`fghi`,
  
        ``abc*d``
            will match any string like ``abd``, ``abcd``, ``abccd``,
--- 953,959 ----
      Here are a few examples:
  
        ``abcde|fghi``
!           will match any of the two strings ``abcde`` and ``fghi``,
  
        ``abc*d``
            will match any string like ``abd``, ``abcd``, ``abccd``,
*************** are recognized:
*** 1037,1044 ****
  
  .. _Examples_of_gnatxref_Usage:
  
! Examples of `gnatxref` Usage
! ----------------------------
  
  General Usage
  ^^^^^^^^^^^^^
--- 966,973 ----
  
  .. _Examples_of_gnatxref_Usage:
  
! Examples of ``gnatxref`` Usage
! ------------------------------
  
  General Usage
  ^^^^^^^^^^^^^
*************** the cross-referencing information.
*** 1078,1084 ****
  You can then issue any of the following commands:
  
    * ``gnatxref main.adb``
!     `gnatxref` generates cross-reference information for main.adb
      and every unit 'with'ed by main.adb.
  
      The output would be:
--- 1007,1013 ----
  You can then issue any of the following commands:
  
    * ``gnatxref main.adb``
!     ``gnatxref`` generates cross-reference information for main.adb
      and every unit 'with'ed by main.adb.
  
      The output would be:
*************** You can then issue any of the following
*** 1113,1160 ****
              Ref:  main.adb          6:12     7:12
  
  
!     This shows that the entity `Main` is declared in main.ads, line 2, column 9,
      its body is in main.adb, line 1, column 14 and is not referenced any where.
  
!     The entity `Print` is declared in bar.ads, line 2, column 15 and it
!     is referenced in main.adb, line 6 column 12 and line 7 column 12.
  
  
    * ``gnatxref package1.adb package2.ads``
!     `gnatxref` will generates cross-reference information for
!     package1.adb, package2.ads and any other package 'with'ed by any
      of these.
  
  
! Using gnatxref with vi
! ^^^^^^^^^^^^^^^^^^^^^^
  
! `gnatxref` can generate a tags file output, which can be used
! directly from *vi*. Note that the standard version of *vi*
  will not work properly with overloaded symbols. Consider using another
! free implementation of *vi*, such as *vim*.
  
    ::
  
       $ gnatxref -v gnatfind.adb > tags
  
  
! The following command will generate the tags file for `gnatfind` itself
  (if the sources are in the search path!):
  
    ::
  
       $ gnatxref -v gnatfind.adb > tags
  
! From *vi*, you can then use the command :samp:`:tag {entity}`
! (replacing `entity` by whatever you are looking for), and vi will
  display a new file with the corresponding declaration of entity.
  
  
  .. _Examples_of_gnatfind_Usage:
  
! Examples of `gnatfind` Usage
! ----------------------------
  
  * ``gnatfind -f xyz:main.adb``
    Find declarations for all entities xyz referenced at least once in
--- 1042,1089 ----
              Ref:  main.adb          6:12     7:12
  
  
!     This shows that the entity ``Main`` is declared in main.ads, line 2, column 9,
      its body is in main.adb, line 1, column 14 and is not referenced any where.
  
!     The entity ``Print`` is declared in :file:`bar.ads`, line 2, column 15 and it
!     is referenced in :file:`main.adb`, line 6 column 12 and line 7 column 12.
  
  
    * ``gnatxref package1.adb package2.ads``
!     ``gnatxref`` will generates cross-reference information for
!     :file:`package1.adb`, :file:`package2.ads` and any other package ``with``\ ed by any
      of these.
  
  
! Using ``gnatxref`` with ``vi``
! ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  
! ``gnatxref`` can generate a tags file output, which can be used
! directly from ``vi``. Note that the standard version of ``vi``
  will not work properly with overloaded symbols. Consider using another
! free implementation of ``vi``, such as ``vim``.
  
    ::
  
       $ gnatxref -v gnatfind.adb > tags
  
  
! The following command will generate the tags file for ``gnatfind`` itself
  (if the sources are in the search path!):
  
    ::
  
       $ gnatxref -v gnatfind.adb > tags
  
! From ``vi``, you can then use the command :samp:`:tag {entity}`
! (replacing ``entity`` by whatever you are looking for), and vi will
  display a new file with the corresponding declaration of entity.
  
  
  .. _Examples_of_gnatfind_Usage:
  
! Examples of ``gnatfind`` Usage
! ------------------------------
  
  * ``gnatfind -f xyz:main.adb``
    Find declarations for all entities xyz referenced at least once in
*************** Examples of `gnatfind` Usage
*** 1177,1183 ****
    declared at line 45 of foo.ads
  
  * ``gnatfind -fs xyz:main.adb``
!   This is the same command as the previous one, but `gnatfind` will
    display the content of the Ada source file lines.
  
    The output will look like:
--- 1106,1112 ----
    declared at line 45 of foo.ads
  
  * ``gnatfind -fs xyz:main.adb``
!   This is the same command as the previous one, but ``gnatfind`` will
    display the content of the Ada source file lines.
  
    The output will look like:
*************** Examples of `gnatfind` Usage
*** 1219,1250 ****
  
  .. _The_Ada_to_HTML_Converter_gnathtml:
  
! The Ada to HTML Converter `gnathtml`
! ====================================
  
  .. index:: ! gnathtml
  
! *gnathtml* is a Perl script that allows Ada source files to be browsed using
  standard Web browsers. For installation information, see :ref:`Installing_gnathtml`.
  
  Ada reserved keywords are highlighted in a bold font and Ada comments in
! a blue font. Unless your program was compiled with the gcc *-gnatx*
  switch to suppress the generation of cross-referencing information, user
  defined variables and types will appear in a different color; you will
  be able to click on any identifier and go to its declaration.
  
  .. _Invoking_gnathtml:
  
! Invoking *gnathtml*
! -------------------
  
  The command line is as follows:
  
    ::
  
!       $ perl gnathtml.pl [`switches`] `ada-files`
  
! You can specify as many Ada files as you want. `gnathtml` will generate
  an html file for every ada file, and a global file called :file:`index.htm`.
  This file is an index of every identifier defined in the files.
  
--- 1148,1179 ----
  
  .. _The_Ada_to_HTML_Converter_gnathtml:
  
! The Ada to HTML Converter ``gnathtml``
! ======================================
  
  .. index:: ! gnathtml
  
! ``gnathtml`` is a Perl script that allows Ada source files to be browsed using
  standard Web browsers. For installation information, see :ref:`Installing_gnathtml`.
  
  Ada reserved keywords are highlighted in a bold font and Ada comments in
! a blue font. Unless your program was compiled with the gcc :switch:`-gnatx`
  switch to suppress the generation of cross-referencing information, user
  defined variables and types will appear in a different color; you will
  be able to click on any identifier and go to its declaration.
  
  .. _Invoking_gnathtml:
  
! Invoking ``gnathtml``
! ---------------------
  
  The command line is as follows:
  
    ::
  
!       $ perl gnathtml.pl [ switches ] ada-files
  
! You can specify as many Ada files as you want. ``gnathtml`` will generate
  an html file for every ada file, and a global file called :file:`index.htm`.
  This file is an index of every identifier defined in the files.
  
*************** The following switches are available:
*** 1265,1278 ****
  
  :samp:`d`
    If the Ada files depend on some other files (for instance through
!   `with` clauses, the latter files will also be converted to html.
    Only the files in the user project will be converted to html, not the files
    in the run-time library itself.
  
  .. index:: -D (gnathtml)
  
  :samp:`D`
!   This command is the same as *-d* above, but *gnathtml* will
    also look for files in the run-time library, and generate html files for them.
  
  .. index:: -ext (gnathtml)
--- 1194,1207 ----
  
  :samp:`d`
    If the Ada files depend on some other files (for instance through
!   ``with`` clauses, the latter files will also be converted to html.
    Only the files in the user project will be converted to html, not the files
    in the run-time library itself.
  
  .. index:: -D (gnathtml)
  
  :samp:`D`
!   This command is the same as :switch:`-d` above, but ``gnathtml`` will
    also look for files in the run-time library, and generate html files for them.
  
  .. index:: -ext (gnathtml)
*************** The following switches are available:
*** 1286,1299 ****
  :samp:`f`
    By default, gnathtml will generate html links only for global entities
    ('with'ed units, global variables and types,...).  If you specify
!   *-f* on the command line, then links will be generated for local
    entities too.
  
  .. index:: -l (gnathtml)
  
  :samp:`l {number}`
!   If this switch is provided and `number` is not 0, then
!   `gnathtml` will number the html files every `number` line.
  
  .. index:: -I (gnathtml)
  
--- 1215,1228 ----
  :samp:`f`
    By default, gnathtml will generate html links only for global entities
    ('with'ed units, global variables and types,...).  If you specify
!   :switch:`-f` on the command line, then links will be generated for local
    entities too.
  
  .. index:: -l (gnathtml)
  
  :samp:`l {number}`
!   If this switch is provided and ``number`` is not 0, then
!   ``gnathtml`` will number the html files every ``number`` line.
  
  .. index:: -I (gnathtml)
  
*************** The following switches are available:
*** 1338,1352 ****
  
  .. _Installing_gnathtml:
  
! Installing `gnathtml`
! ---------------------
  
! `Perl` needs to be installed on your machine to run this script.
! `Perl` is freely available for almost every architecture and
  operating system via the Internet.
  
  On Unix systems, you  may want to modify  the  first line of  the script
! `gnathtml`,  to explicitly  specify  where Perl
  is located. The syntax of this line is:
  
    ::
--- 1267,1281 ----
  
  .. _Installing_gnathtml:
  
! Installing ``gnathtml``
! -----------------------
  
! ``Perl`` needs to be installed on your machine to run this script.
! ``Perl`` is freely available for almost every architecture and
  operating system via the Internet.
  
  On Unix systems, you  may want to modify  the  first line of  the script
! ``gnathtml``,  to explicitly  specify  where Perl
  is located. The syntax of this line is:
  
    ::
*************** Alternatively, you may run the script us
*** 1357,1363 ****
  
    ::
  
!      $ perl gnathtml.pl [`switches`] `files`
  
  
  
--- 1286,1292 ----
  
    ::
  
!      $ perl gnathtml.pl [ switches ] files
  
  
  
*************** Alternatively, you may run the script us
*** 1370,1395 ****
  
    .. _The_Ada-to-XML_converter_gnat2xml:
  
!   The Ada-to-XML converter *gnat2xml*
!   ===================================
  
    .. index:: ! gnat2xml
    .. index:: XML generation
  
!   The *gnat2xml* tool is an ASIS-based utility that converts
    Ada source code into XML.
  
!   *gnat2xml* 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
!   *gnat2xml* switches is named ``gnat2xml``.
  
!   .. _Switches_for_*gnat2xml*:
  
!   Switches for *gnat2xml*
!   -----------------------
  
!   *gnat2xml* takes Ada source code as input, and produces XML
    that conforms to the schema.
  
    Usage:
--- 1299,1324 ----
  
    .. _The_Ada-to-XML_converter_gnat2xml:
  
!   The Ada-to-XML converter ``gnat2xml``
!   =====================================
  
    .. index:: ! gnat2xml
    .. index:: XML generation
  
!   The ``gnat2xml`` tool is an ASIS-based utility that converts
    Ada source code into XML.
  
!   ``gnat2xml`` 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
!   ``gnat2xml`` switches is named ``gnat2xml``.
  
!   .. _Switches_for_``gnat2xml``:
  
!   Switches for ``gnat2xml``
!   -------------------------
  
!   ``gnat2xml`` takes Ada source code as input, and produces XML
    that conforms to the schema.
  
    Usage:
*************** Alternatively, you may run the script us
*** 1400,1484 ****
  
    Options:
  
!      :samp:`--help`
            Generate usage information and quit, ignoring all other options
  
!      :samp:`-h`
            Same as ``--help``
  
!      :samp:`--version`
            Print version and quit, ignoring all other options
  
!      :samp:`-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.
  
!      :samp:`-U`
            If a project file is specified and no argument source is explicitly
            specified, process all the units of the closure of the argument project.
            Otherwise this option has no effect.
  
!      :samp:`-U {main_unit}`
            If a project file is specified and no argument source
!           is explicitly specified (either directly or by means of *-files*
!           option), process the closure of units rooted at `main_unit`.
            Otherwise this option has no effect.
  
!      :samp:`-X{name}={value}`
!           Indicates that external variable `name` in
!           the argument project has the value `value`. Has no effect if no
            project is specified as tool argument.
  
!      :samp:`--RTS={rts-path}`
            Specifies the default location of the runtime
!           library. Same meaning as the equivalent *gnatmake* flag
            (:ref:`Switches_for_gnatmake`).
  
!      :samp:`--incremental`
            Incremental processing on a per-file basis. Source files are
            only processed if they have been modified, or if files they depend
            on have been modified. This is similar to the way gnatmake/gprbuild
            only compiles files that need to be recompiled. A project file
            is required in this mode.
  
!      :samp:`-j{n}`
!            In *--incremental* mode, use `n` *gnat2xml*
!            processes to perform XML generation in parallel. If `n` is 0, then
             the maximum number of parallel tree creations is the number of core
             processors on the platform.
  
!      :samp:`--output-dir={dir}`
            Generate one .xml file for each Ada source file, in
            directory :file:`dir`. (Default is to generate the XML to standard
            output.)
  
!      :samp:`-I{include-dir}`
            Directories to search for dependencies.
            You can also set the ADA_INCLUDE_PATH environment variable for this.
  
!      :samp:`--compact`
            Debugging version, with interspersed source, and a more
            compact representation of "sloc". This version does not conform
            to any schema.
  
!      :samp:`--rep-clauses`
            generate representation clauses (see :ref:`Generating_Representation_Clauses`).
  
!      :samp:`-files={filename}`
!          The name of a text file containing a list of Ada source files to process
  
!      :samp:`-q`
           Quiet
  
!      :samp:`-v`
           Verbose
  
!      :samp:`-cargs` ...
           Options to pass to gcc
  
    If a project file is specified and no argument source is explicitly
!   specified, and no *-U* is specified, then the set of processed
    sources is all the immediate units of the argument project.
  
    Example:
--- 1329,1420 ----
  
    Options:
  
!      :switch:`--help`
            Generate usage information and quit, ignoring all other options
  
!      :switch:`-h`
            Same as ``--help``
  
!      :switch:`--version`
            Print version and quit, ignoring all other options
  
!      :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.
  
!      :switch:`-U`
            If a project file is specified and no argument source is explicitly
            specified, 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.
  
!      :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 as tool argument.
  
!      :switch:`--RTS={rts-path}`
            Specifies the default location of the runtime
!           library. Same meaning as the equivalent ``gnatmake`` flag
            (:ref:`Switches_for_gnatmake`).
  
!      :switch:`--incremental`
            Incremental processing on a per-file basis. Source files are
            only processed if they have been modified, or if files they depend
            on have been modified. This is similar to the way gnatmake/gprbuild
            only compiles files that need to be recompiled. A project file
            is required in this mode.
  
!      :switch:`-j{n}`
!            In :switch:`--incremental` mode, use ``n`` ``gnat2xml``
!            processes to perform XML generation in parallel. If ``n`` is 0, then
             the maximum number of parallel tree creations is the number of core
             processors on the platform.
  
!      :switch:`--output-dir={dir}`
            Generate one .xml file for each Ada source file, in
            directory :file:`dir`. (Default is to generate the XML to standard
            output.)
  
!      :switch:`-I{include-dir}`
            Directories to search for dependencies.
            You can also set the ADA_INCLUDE_PATH environment variable for this.
  
!      :switch:`--compact`
            Debugging version, with interspersed source, and a more
            compact representation of "sloc". This version does not conform
            to any schema.
  
!      :switch:`--rep-clauses`
            generate representation clauses (see :ref:`Generating_Representation_Clauses`).
  
!      :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.
  
!      :switch:`--ignore={filename}`
!          Do not process the sources listed in a specified file. This option cannot
!          be used in incremental mode.
! 
!      :switch:`-q`
           Quiet
  
!      :switch:`-v`
           Verbose
  
!      :switch:`-cargs` ...
           Options to pass to gcc
  
    If a project file is specified and no argument source is explicitly
!   specified, and no :switch:`-U` is specified, then the set of processed
    sources is all the immediate units of the argument project.
  
    Example:
*************** Alternatively, you may run the script us
*** 1499,1510 ****
    --------------
  
    The distribution includes two other programs that are related to
!   *gnat2xml*:
  
!   *gnat2xsd* is the schema generator, which generates the schema
    to standard output, based on the structure of Ada as encoded by
!   ASIS. You don't need to run *gnat2xsd* in order to use
!   *gnat2xml*. To generate the schema, type:
  
  
      ::
--- 1435,1446 ----
    --------------
  
    The distribution includes two other programs that are related to
!   ``gnat2xml``:
  
!   ``gnat2xsd`` is the schema generator, which generates the schema
    to standard output, based on the structure of Ada as encoded by
!   ASIS. You don't need to run ``gnat2xsd`` in order to use
!   ``gnat2xml``. To generate the schema, type:
  
  
      ::
*************** Alternatively, you may run the script us
*** 1512,1525 ****
          $ gnat2xsd > ada-schema.xsd
  
  
!   *gnat2xml* generates XML files that will validate against
    :file:`ada-schema.xsd`.
  
!   *xml2gnat* is a back-translator that translates the XML back
!   into Ada source code. The Ada generated by *xml2gnat* has
!   identical semantics to the original Ada code passed to
!   *gnat2xml*. It is not textually identical, however --- for
!   example, no attempt is made to preserve the original indentation.
  
    .. _Structure_of_the_XML:
  
--- 1448,1475 ----
          $ gnat2xsd > ada-schema.xsd
  
  
!   ``gnat2xml`` generates XML files that will validate against
    :file:`ada-schema.xsd`.
  
!   ``xml2gnat`` is a back-translator that translates the XML back into
!   Ada source code. This is primarily for the purpose of testing
!   ``gnat2xml``, rather than for users. The Ada generated by ``xml2gnat``
!   has identical semantics to the original Ada code passed to
!   ``gnat2xml``. It is not textually identical, however --- for example,
!   no attempt is made to preserve the original indentation.
! 
!   The ``xml2gnat`` command line contains a list of the same Ada files
!   passed to gnat2xml (not the names of xml files). The xml files are
!   assumed to be in an 'xml' subdirectory of the directory in which the
!   Ada source files are. So for example, if the Ada source file is
!   some/dir/mumble.adb, then the xml file is found in
!   some/dir/xml/mumble.adb.xml. You should use the :switch:`--output-dir`
!   switch of ``gnat2xml`` to tell it to generate the output in the xml
!   subdirectory, so ``xml2gnat`` can find it.
! 
!   Output goes into subdirectories "generated_ada" and "self_rep" of the
!   output directory, which is the current directory by default, but can
!   be overridden with --output-dir=dir on the command line.
  
    .. _Structure_of_the_XML:
  
*************** Alternatively, you may run the script us
*** 1527,1533 ****
    --------------------
  
    The primary documentation for the structure of the XML generated by
!   *gnat2xml* is the schema (see *gnat2xsd* above). The
    following documentation gives additional details needed to understand
    the schema and therefore the XML.
  
--- 1477,1483 ----
    --------------------
  
    The primary documentation for the structure of the XML generated by
!   ``gnat2xml`` is the schema (see ``gnat2xsd`` above). The
    following documentation gives additional details needed to understand
    the schema and therefore the XML.
  
*************** Alternatively, you may run the script us
*** 1603,1609 ****
  
    Some subelements are 'Boolean'. For example, Private_Type_Definition
    has has_abstract_q and has_limited_q, to indicate whether those
!   keywords are present, as in `type T is abstract limited private;`.
    False is represented by a Nil_Element. True is represented
    by an element type specific to that query (for example, Abstract and
    Limited).
--- 1553,1559 ----
  
    Some subelements are 'Boolean'. For example, Private_Type_Definition
    has has_abstract_q and has_limited_q, to indicate whether those
!   keywords are present, as in ``type T is abstract limited private;``.
    False is represented by a Nil_Element. True is represented
    by an element type specific to that query (for example, Abstract and
    Limited).
*************** Alternatively, you may run the script us
*** 1615,1628 ****
      in package Asis.
  
    * unit_full_name is the full expanded name of the unit, starting from a
!     root library unit. So for `package P.Q.R is ...`,
!     `unit_full_name="P.Q.R"`. Same for `separate (P.Q) package R is ...`.
  
    * def_name is the same as unit_full_name for library units; for subunits,
      it is just the simple name.
  
    * source_file is the name of the Ada source file. For example, for
!     the spec of `P.Q.R`, `source_file="p-q-r.ads"`. This allows one to
      interpret the source locations --- the 'sloc' of all elements
      within this Compilation_Unit refers to line and column numbers
      within the named file.
--- 1565,1578 ----
      in package Asis.
  
    * unit_full_name is the full expanded name of the unit, starting from a
!     root library unit. So for ``package P.Q.R is ...``,
!     ``unit_full_name="P.Q.R"``. Same for ``separate (P.Q) package R is ...``.
  
    * def_name is the same as unit_full_name for library units; for subunits,
      it is just the simple name.
  
    * source_file is the name of the Ada source file. For example, for
!     the spec of ``P.Q.R``, ``source_file="p-q-r.ads"``. This allows one to
      interpret the source locations --- the 'sloc' of all elements
      within this Compilation_Unit refers to line and column numbers
      within the named file.
*************** Alternatively, you may run the script us
*** 1648,1654 ****
        algorithm, which is subject to change; we just guarantee that the
        names are unique in the face of overloading.
  
!     * type is the type of the declared object, or `null` for
        declarations of things other than objects.
  
    Usage occurrences have these attributes:
--- 1598,1604 ----
        algorithm, which is subject to change; we just guarantee that the
        names are unique in the face of overloading.
  
!     * type is the type of the declared object, or ``null`` for
        declarations of things other than objects.
  
    Usage occurrences have these attributes:
*************** Alternatively, you may run the script us
*** 1660,1673 ****
    * ref is the same as the def of the corresponding defining
      occurrence.
  
!   In summary, `def_name` and `ref_name` are as in the source
!   code of the declaration, possibly overloaded, whereas `def` and
!   `ref` are unique-ified.
  
    Literal elements have this attribute:
  
    * lit_val is the value of the literal as written in the source text,
!     appropriately escaped (e.g. `"` ---> `&quot;`). This applies
      only to numeric and string literals. Enumeration literals in Ada are
      not really "literals" in the usual sense; they are usage occurrences,
      and have ref_name and ref as described above. Note also that string
--- 1610,1623 ----
    * ref is the same as the def of the corresponding defining
      occurrence.
  
!   In summary, ``def_name`` and ``ref_name`` are as in the source
!   code of the declaration, possibly overloaded, whereas ``def`` and
!   ``ref`` are unique-ified.
  
    Literal elements have this attribute:
  
    * lit_val is the value of the literal as written in the source text,
!     appropriately escaped (e.g. ``"`` |rightarrow| ``&quot;``). This applies
      only to numeric and string literals. Enumeration literals in Ada are
      not really "literals" in the usual sense; they are usage occurrences,
      and have ref_name and ref as described above. Note also that string
*************** Alternatively, you may run the script us
*** 1785,1802 ****
    Generating Representation Clauses
    ---------------------------------
  
!   If the *--rep-clauses* switch is given, *gnat2xml* will
    generate representation clauses for certain types showing the
    representation chosen by the compiler. The information is produced by
    the ASIS 'Data Decomposition' facility --- see the
!   `Asis.Data_Decomposition` package for details.
  
!   Not all types are supported. For example, `Type_Model_Kind` must
!   be `A_Simple_Static_Model`. Types declared within generic units
    have no representation. The clauses that are generated include
!   `attribute_definition_clauses` for `Size` and
!   `Component_Size`, as well as
!   `record_representation_clauses`.
  
    There is no guarantee that the generated representation clauses could
    have actually come from legal Ada code; Ada has some restrictions that
--- 1735,1752 ----
    Generating Representation Clauses
    ---------------------------------
  
!   If the :switch:`--rep-clauses` switch is given, ``gnat2xml`` will
    generate representation clauses for certain types showing the
    representation chosen by the compiler. The information is produced by
    the ASIS 'Data Decomposition' facility --- see the
!   ``Asis.Data_Decomposition`` package for details.
  
!   Not all types are supported. For example, ``Type_Model_Kind`` must
!   be ``A_Simple_Static_Model``. Types declared within generic units
    have no representation. The clauses that are generated include
!   ``attribute_definition_clauses`` for ``Size`` and
!   ``Component_Size``, as well as
!   ``record_representation_clauses``.
  
    There is no guarantee that the generated representation clauses could
    have actually come from legal Ada code; Ada has some restrictions that
*************** Alternatively, you may run the script us
*** 1817,1837 ****
  
  .. only:: PRO or GPL
  
!   .. _The_Program_Property_Verifier_gnatcheck:
  
!   The Program Property Verifier *gnatcheck*
!   =========================================
  
    .. index:: ! gnatcheck
    .. index:: ASIS
  
!   The *gnatcheck* tool is an ASIS-based utility that checks properties
!   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`.
  
--- 1767,1787 ----
  
  .. 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`.
  
*************** Alternatively, you may run the script us
*** 1841,1910 ****
  
    .. _The_GNAT_Metrics_Tool_gnatmetric:
  
!   The GNAT Metrics Tool *gnatmetric*
!   ==================================
  
    .. index:: ! gnatmetric
    .. index:: Metric tool
  
!   The *gnatmetric* tool is an ASIS-based 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 computed and output.
  
!   *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``.
  
!   To compute program metrics, *gnatmetric* invokes the Ada
    compiler and generates and uses the ASIS tree for the input source;
    thus the input must be legal Ada code, and the tool should have all the
    information needed to compile the input source. To provide this information,
!   you may specify as a tool parameter the project file the input source belongs to
!   (or you may call *gnatmetric*
!   through the *gnat* driver (see :ref:`The_GNAT_Driver_and_Project_Files`).
    Another possibility is to specify the source search
!   path and needed configuration files in *-cargs* section of *gnatmetric*
!   call, see the description of the *gnatmetric* switches below.
  
!   If the set of sources to be processed by `gnatmetric` contains sources with
    preprocessing directives
    then the needed options should be provided to run preprocessor as a part of
!   the *gnatmetric* call, and the computed metrics
    will correspond to preprocessed sources.
  
!   The *gnatmetric* command has the form
  
      ::
  
!        $ gnatmetric [`switches`] {`filename`} [-cargs `gcc_switches`]
  
    where:
  
!   * `switches` specify the metrics to compute and define the destination for
      the output
  
!   * Each `filename` is the name (including the extension) 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
!     *-files* switch (see :ref:`Other_gnatmetric_Switches`).
!     Including both a *-files* switch and one or more
!     `filename` arguments is permitted.
  
!   * `gcc_switches` is a list of switches for
!     *gcc*. They will be passed on to all compiler invocations made by
!     *gnatmetric* to generate the ASIS trees. Here you can provide
!     *-I* switches to form the source search path,
!     and use the *-gnatec* switch to set the configuration file,
!     use the *-gnat05* switch if sources should be compiled in
      Ada 2005 mode etc.
  
    The following subsections describe the various switches accepted by
!   *gnatmetric*, organized by category.
  
    .. _Output_File_Control-gnatmetric:
  
--- 1791,1858 ----
  
    .. _The_GNAT_Metrics_Tool_gnatmetric:
  
!   The GNAT Metrics Tool ``gnatmetric``
!   ====================================
  
    .. index:: ! gnatmetric
    .. index:: Metric tool
  
!   The ``gnatmetric`` tool is an ASIS-based 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 computed and output.
  
!   ``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``.
  
!   To compute program metrics, ``gnatmetric`` invokes the Ada
    compiler and generates and uses the ASIS tree for the input source;
    thus the input must be legal Ada code, and the tool should have all the
    information needed to compile the input source. To provide this information,
!   you may specify as a tool parameter the project file the input source belongs to.
    Another possibility is to specify the source search
!   path and needed configuration files in :switch:`-cargs` section of ``gnatmetric``
!   call, see the description of the ``gnatmetric`` switches below.
  
!   If the set of sources to be processed by ``gnatmetric`` contains sources with
    preprocessing directives
    then the needed options should be provided to run preprocessor as a part of
!   the ``gnatmetric`` call, and the computed metrics
    will correspond to preprocessed sources.
  
!   The ``gnatmetric`` command has the form
  
      ::
  
!        $ gnatmetric [ switches ] { filename } [ -cargs gcc_switches ]
  
    where:
  
!   * ``switches`` specify the metrics to compute and define the destination for
      the output
  
!   * Each ``filename`` is the name (including the extension) 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.
  
!   * ``gcc_switches`` is a list of switches for
!     ``gcc``. They will be passed on to all compiler invocations made by
!     ``gnatmetric`` to generate the ASIS trees. Here you can provide
!     :switch:`-I` switches to form the source search path,
!     and use the :switch:`-gnatec` switch to set the configuration file,
!     use the :switch:`-gnat05` switch if sources should be compiled in
      Ada 2005 mode etc.
  
    The following subsections describe the various switches accepted by
!   ``gnatmetric``, organized by category.
  
    .. _Output_File_Control-gnatmetric:
  
*************** Alternatively, you may run the script us
*** 1913,1923 ****
  
    .. 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
--- 1861,1871 ----
  
    .. 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
*************** Alternatively, you may run the script us
*** 1925,1959 ****
    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 objects directory), if *--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 *-og* switch.
  
!   The following switches control the *gnatmetric* output:
  
    .. index:: -x (gnatmetric)
  
!   :samp:`-x`
      Generate the XML output
  
    .. index:: -xs (gnatmetric)
  
!   :samp:`-xs`
      Generate the XML output and the 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
--- 1873,1907 ----
    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 objects 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:`-og` switch.
  
!   The following switches control the ``gnatmetric`` output:
  
    .. index:: -x (gnatmetric)
  
!   :switch:`-x`
      Generate the XML output
  
    .. index:: -xs (gnatmetric)
  
!   :switch:`-xs`
      Generate the XML output and the 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
*************** Alternatively, you may run the script us
*** 1962,2003 ****
    .. index:: -nt (gnatmetric)
  
  
!   :samp:`-nt`
!     Do not generate the output in text form (implies *-x*)
  
    .. index:: -d (gnatmetric)
  
  
!   :samp:`-d {output_dir}`
!     Put text files with detailed metrics into `output_dir`
  
    .. index:: -o (gnatmetric)
  
  
!   :samp:`-o {file_suffix}`
!     Use `file_suffix`, instead of :file:`.metrix`
      in the name of the output file.
  
    .. index:: -og (gnatmetric)
  
  
!   :samp:`-og {file_name}`
!     Put global metrics into `file_name`
  
    .. index:: -ox (gnatmetric)
  
  
!   :samp:`-ox {file_name}`
!     Put the XML output into `file_name` (also implies *-x*)
  
    .. index:: -sfn (gnatmetric)
  
  
!   :samp:`-sfn`
!     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
!     *-sfn* switch causes *gnatmetric*
      to exclude all directory information from the file names that are output.)
  
  
--- 1910,1951 ----
    .. index:: -nt (gnatmetric)
  
  
!   :switch:`-nt`
!     Do not generate the output in text form (implies :switch:`-x`)
  
    .. index:: -d (gnatmetric)
  
  
!   :switch:`-d {output_dir}`
!     Put text files with detailed metrics into ``output_dir``
  
    .. index:: -o (gnatmetric)
  
  
!   :switch:`-o {file_suffix}`
!     Use ``file_suffix``, instead of :file:`.metrix`
      in the name of the output file.
  
    .. index:: -og (gnatmetric)
  
  
!   :switch:`-og {file_name}`
!     Put global metrics into ``file_name``
  
    .. index:: -ox (gnatmetric)
  
  
!   :switch:`-ox {file_name}`
!     Put the XML output into ``file_name`` (also implies :switch:`-x`)
  
    .. index:: -sfn (gnatmetric)
  
  
!   :switch:`-sfn`
!     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:`-sfn` switch causes ``gnatmetric``
      to exclude all directory information from the file names that are output.)
  
  
*************** Alternatively, you may run the script us
*** 2008,2020 ****
    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;
--- 1956,1968 ----
    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;
*************** Alternatively, you may run the script us
*** 2043,2049 ****
    .. index:: -nolocal (gnatmetric)
  
  
!   :samp:`-nolocal`
      Do not compute detailed metrics for eligible local program units
  
  
--- 1991,1997 ----
    .. index:: -nolocal (gnatmetric)
  
  
!   :switch:`-nolocal`
      Do not compute detailed metrics for eligible local program units
  
  
*************** Alternatively, you may run the script us
*** 2068,2074 ****
    .. index:: Line metrics control in gnatmetric
  
    For any (legal) source file, and for each of its
!   eligible local program units, *gnatmetric* computes the following
    metrics:
  
    * the total number of lines;
--- 2016,2022 ----
    .. index:: Line metrics control in gnatmetric
  
    For any (legal) source file, and for each of its
!   eligible local program units, ``gnatmetric`` computes the following
    metrics:
  
    * the total number of lines;
*************** Alternatively, you may run the script us
*** 2089,2095 ****
      bodies and statement sequences in package bodies (this metric is only computed
      across the whole set of the analyzed units)
  
!   *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.
--- 2037,2043 ----
      bodies and statement sequences in package bodies (this metric is only computed
      across the whole set of the analyzed units)
  
!   ``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.
*************** Alternatively, you may run the script us
*** 2102,2172 ****
    .. index:: --no-lines (gnatmetric)
  
  
!   :samp:`--lines-all`
      Report all the line metrics
  
  
!   :samp:`--no-lines-all`
      Do not report any of line metrics
  
  
!   :samp:`--lines`
      Report the number of all lines
  
  
!   :samp:`--no-lines`
      Do not report the number of all lines
  
  
!   :samp:`--lines-code`
      Report the number of code lines
  
  
!   :samp:`--no-lines-code`
      Do not report the number of code lines
  
  
!   :samp:`--lines-comment`
      Report the number of comment lines
  
  
!   :samp:`--no-lines-comment`
      Do not report the number of comment lines
  
  
!   :samp:`--lines-eol-comment`
      Report the number of code lines containing
      end-of-line comments
  
  
!   :samp:`--no-lines-eol-comment`
      Do not report the number of code lines containing
      end-of-line comments
  
  
!   :samp:`--lines-ratio`
      Report the comment percentage in the program text
  
  
!   :samp:`--no-lines-ratio`
      Do not report the comment percentage in the program text
  
  
!   :samp:`--lines-blank`
      Report the number of blank lines
  
  
!   :samp:`--no-lines-blank`
      Do not report the number of blank lines
  
  
!   :samp:`--lines-average`
      Report the average number of code lines in subprogram bodies, task bodies,
      entry bodies and statement sequences in package bodies. The metric is computed
      and reported for the whole set of processed Ada sources only.
  
  
!   :samp:`--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.
  
--- 2050,2120 ----
    .. 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. The metric is computed
      and reported for the whole set of processed Ada sources only.
  
  
!   :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.
  
*************** Alternatively, you may run the script us
*** 2178,2184 ****
  
    .. 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')*
--- 2126,2132 ----
  
    .. 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')*
*************** Alternatively, you may run the script us
*** 2220,2226 ****
        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*
--- 2168,2174 ----
        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*
*************** Alternatively, you may run the script us
*** 2279,2360 ****
    .. index:: --no-syntax (gnatmetric)
  
  
!   :samp:`--syntax-all`
      Report all the syntax metrics
  
  
!   :samp:`--no-syntax-all`
      Do not report any of syntax metrics
  
  
!   :samp:`--declarations`
      Report the total number of declarations
  
  
!   :samp:`--no-declarations`
      Do not report the total number of declarations
  
  
!   :samp:`--statements`
      Report the total number of statements
  
  
!   :samp:`--no-statements`
      Do not report the total number of statements
  
  
!   :samp:`--public-subprograms`
      Report the number of public subprograms in a compilation unit
  
  
!   :samp:`--no-public-subprograms`
      Do not report the number of public subprograms in a compilation unit
  
  
!   :samp:`--all-subprograms`
      Report the number of all the subprograms in a compilation unit
  
  
!   :samp:`--no-all-subprograms`
      Do not report the number of all the subprograms in a compilation unit
  
  
!   :samp:`--public-types`
      Report the number of public types in a compilation unit
  
  
!   :samp:`--no-public-types`
      Do not report the number of public types in a compilation unit
  
  
!   :samp:`--all-types`
      Report the number of all the types in a compilation unit
  
  
!   :samp:`--no-all-types`
      Do not report the number of all the types in a compilation unit
  
  
!   :samp:`--unit-nesting`
      Report the maximal program unit nesting level
  
  
!   :samp:`--no-unit-nesting`
      Do not report the maximal program unit nesting level
  
  
!   :samp:`--construct-nesting`
      Report the maximal construct nesting level
  
  
!   :samp:`--no-construct-nesting`
      Do not report the maximal construct nesting level
  
!   :samp:`--param-number`
      Report the number of subprogram parameters
  
  
!   :samp:`--no-param-number`
      Do not report the number of subprogram parameters
  
  
--- 2227,2308 ----
    .. 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
  
  
*************** Alternatively, you may run the script us
*** 2367,2373 ****
  
    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;
--- 2315,2321 ----
  
    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;
*************** Alternatively, you may run the script us
*** 2388,2401 ****
  
    * 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
--- 2336,2349 ----
  
    * 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
*************** Alternatively, you may run the script us
*** 2404,2425 ****
    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
!   *--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 `terminate` alternative
!   is considered as non-structural statement. When computing this metric,
!   `exit` statements are treated in the same way as `goto`
!   statements unless *-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
--- 2352,2373 ----
    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
*************** Alternatively, you may run the script us
*** 2429,2435 ****
    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.
--- 2377,2383 ----
    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.
*************** Alternatively, you may run the script us
*** 2443,2514 ****
    .. index:: --no-complexity (gnatmetric)
  
  
!   :samp:`--complexity-all`
      Report all the complexity metrics
  
  
!   :samp:`--no-complexity-all`
      Do not report any of complexity metrics
  
  
!   :samp:`--complexity-cyclomatic`
      Report the McCabe Cyclomatic Complexity
  
  
!   :samp:`--no-complexity-cyclomatic`
      Do not report the McCabe Cyclomatic Complexity
  
  
!   :samp:`--complexity-essential`
      Report the Essential Complexity
  
  
!   :samp:`--no-complexity-essential`
      Do not report the Essential Complexity
  
  
!   :samp:`--loop-nesting`
      Report maximal loop nesting level
  
  
!   :samp:`-no-loop-nesting`
      Do not report maximal loop nesting level
  
  
!   :samp:`--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 computed and reported for whole set of processed Ada sources
      only.
  
  
!   :samp:`--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:: -ne (gnatmetric)
  
  
!   :samp:`-ne`
!     Do not consider `exit` statements as `goto`\ s when
      computing Essential Complexity
  
    .. index:: --no-static-loop (gnatmetric)
  
  
!   :samp:`--no-static-loop`
      Do not consider static loops when computing cyclomatic complexity
  
  
!   :samp:`--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.
  
  
!   :samp:`--no-extra-exit-points`
      Do not report the extra exit points for subprogram bodies
  
  
--- 2391,2462 ----
    .. index:: --no-complexity (gnatmetric)
  
  
!   :switch:`--complexity-all`
      Report all the complexity metrics
  
  
!   :switch:`--no-complexity-all`
      Do not report any of 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 computed and 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:: -ne (gnatmetric)
  
  
!   :switch:`-ne`
!     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
  
  
*************** Alternatively, you may run the script us
*** 2525,2531 ****
    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
--- 2473,2479 ----
    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
*************** Alternatively, you may run the script us
*** 2561,2573 ****
    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.
  
--- 2509,2521 ----
    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.
  
*************** Alternatively, you may run the script us
*** 2597,2603 ****
    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
--- 2545,2551 ----
    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
*************** Alternatively, you may run the script us
*** 2643,2649 ****
               end Fun;
           end Pack;
  
!   If we apply *gnatmetric* with the *--coupling-all* option to
    these units, the result will be:
  
      ::
--- 2591,2597 ----
               end Fun;
           end Pack;
  
!   If we apply ``gnatmetric`` with the :switch:`--coupling-all` option to
    these units, the result will be:
  
      ::
*************** Alternatively, you may run the script us
*** 2671,2697 ****
    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 *-U* option.
  
    By default, all the coupling metrics are disabled. You can use the following
    switches to specify the coupling metrics to be computed and reported:
--- 2619,2645 ----
    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 disabled. You can use the following
    switches to specify the coupling metrics to be computed and reported:
*************** Alternatively, you may run the script us
*** 2701,2765 ****
    .. index:: --unit-coupling (gnatmetric)
    .. index:: --control-coupling (gnatmetric)
  
!   :samp:`--coupling-all`
      Report all the coupling metrics
  
  
!   :samp:`--tagged-coupling-out`
      Report tagged (class) fan-out coupling
  
  
!   :samp:`--tagged-coupling-in`
      Report tagged (class) fan-in coupling
  
  
!   :samp:`--hierarchy-coupling-out`
      Report hierarchy (category) fan-out coupling
  
  
!   :samp:`--hierarchy-coupling-in`
      Report hierarchy (category) fan-in coupling
  
  
!   :samp:`--unit-coupling-out`
      Report unit fan-out coupling
  
  
!   :samp:`--unit-coupling-in`
      Report unit fan-in coupling
  
  
!   :samp:`--control-coupling-out`
      Report control fan-out coupling
  
  
!   :samp:`--control-coupling-in`
      Report control fan-in coupling
  
  
    .. _Other_gnatmetric_Switches:
  
!   Other `gnatmetric` Switches
!   ---------------------------
  
!   Additional *gnatmetric* switches are as follows:
  
  
    .. index:: --version (gnatmetric)
  
!   :samp:`--version`
      Display Copyright and version, then exit disregarding all other options.
  
  
    .. index:: --help (gnatmetric)
  
!   :samp:`--help`
      Display usage, then exit disregarding all other options.
  
  
    .. index:: -P (gnatmetric)
  
!   :samp:`-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.
--- 2649,2713 ----
    .. 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.
*************** Alternatively, you may run the script us
*** 2767,2929 ****
  
    .. index:: -U (gnatmetric)
  
!   :samp:`-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.
  
  
!   :samp:`-U {main_unit}`
      If a project file is specified and no argument source is explicitly
!     specified (either directly or by means of *-files* option), process
!     the closure of units rooted at `main_unit`. Otherwise this option
      has no effect.
  
  
    .. index:: -X (gnatmetric)
  
!   :samp:`-X{name}={value}`
!     Indicates that external variable `name` in the argument project
!     has the value `value`. Has no effect if no project is specified as
      tool argument.
  
  
    .. index:: --RTS (gnatmetric)
  
!   :samp:`--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)
  
!   :samp:`--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 *--no_objects_dir* is specified.
  
  
    .. index:: --no_objects_dir (gnatmetric)
  
!   :samp:`--no_objects_dir`
      Place all the result files into the current directory instead of
!     project objects directory. This corresponds to the *gnatcheck*
      behavior when it is called with the project file from the
      GNAT driver. Has no effect if no project is specified.
  
  
    .. index:: -files (gnatmetric)
  
!   :samp:`-files {filename}`
!     Take the argument source files from the specified file. This file should be an
!     ordinary text file containing file names separated by spaces or
!     line breaks. You can use this switch more than once in the same call to
!     *gnatmetric*. You also can combine this switch with
!     an explicit list of files.
  
  
    .. index:: -j (gnatmetric)
  
!   :samp:`-j{n}`
!     Use `n` processes to carry out the tree creations (internal representations
      of the argument sources). On a multiprocessor machine this speeds up processing
!     of big sets of argument sources. If `n` is 0, then the maximum number of
      parallel tree creations is the number of core processors on the platform.
  
    .. index:: -t (gnatmetric)
  
  
!   :samp:`-t`
      Print out execution time.
  
  
    .. index:: -v (gnatmetric)
  
!   :samp:`-v`
      Verbose mode;
!     *gnatmetric* generates version information and then
      a trace of sources being processed.
  
  
    .. index:: -q (gnatmetric)
  
!   :samp:`-q`
      Quiet mode.
  
    If a project file is specified and no argument source is explicitly
!   specified (either directly or by means of *-files* option), and no
!   *-U* is specified, then the set of processed sources is
    all the immediate units of the argument project.
  
  
  .. only:: PRO or GPL
  
!    .. _The_GNAT_Pretty-Printer_gnatpp:
  
!    The GNAT Pretty-Printer *gnatpp*
!    ================================
  
     .. index:: ! gnatpp
!    .. index:: Pretty-Printer
  
!    The *gnatpp* tool is an ASIS-based utility
!    for source reformatting / pretty-printing.
!    It takes an Ada source file as input and generates a reformatted
!    version as output.
!    You can specify various style directives via switches; e.g.,
!    identifier case conventions, rules of indentation, and comment layout.
  
!    *gnatpp* 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
!    *gnatpp* switches is named ``Pretty_Printer``.
! 
!    To produce a reformatted file, *gnatpp* invokes the Ada
!    compiler and generates and uses the ASIS tree for the input source;
!    thus the input must be legal Ada code, and the tool should have all the
!    information needed to compile the input source. To provide this information,
!    you may specify as a tool parameter the project file the input source belongs to
!    (or you may call *gnatpp*
!    through the *gnat* driver (see :ref:`The_GNAT_Driver_and_Project_Files`).
!    Another possibility is to specify the source search
!    path and needed configuration files in ``-cargs`` section of *gnatpp*
!    call, see the description of the *gnatpp* switches below.
  
!    *gnatpp* cannot process sources that contain preprocessing directives.
  
!    The *gnatpp* command has the form
  
       ::
  
!         $ gnatpp [`switches`] `filename` [-cargs `gcc_switches`]
  
     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 (including the extension) 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
! 
!    * `gcc_switches` is a list of switches for
!      *gcc*. They will be passed on to all compiler invocations made by
!      *gnatpp* to generate the ASIS trees. Here you can provide
!      ``-I`` switches to form the source search path,
!      use the ``-gnatec`` switch to set the configuration file, etc.
  
  
     .. _Switches_for_gnatpp:
  
!    Switches for *gnatpp*
!    ---------------------
  
     The following subsections describe the various switches accepted by
!    *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
--- 2715,2867 ----
  
    .. 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 as
      tool argument.
  
  
    .. 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:: --no_objects_dir (gnatmetric)
  
!   :switch:`--no_objects_dir`
      Place all the result files into the current directory instead of
!     project objects directory. This corresponds to the ``gnatcheck``
      behavior when it is called with the project file from the
      GNAT driver. Has no effect if no project is specified.
  
  
    .. index:: -files (gnatmetric)
  
!   :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 (gnatmetric)
+ 
+   :switch:`--ignore={filename}`
+     Do not process the sources listed in a specified file.
+ 
    .. index:: -j (gnatmetric)
  
!   :switch:`-j{n}`
!     Use ``n`` processes to carry out the tree creations (internal representations
      of the argument sources). On a multiprocessor machine this speeds up processing
!     of big sets of argument sources. If ``n`` is 0, then the maximum number of
      parallel tree creations is the number of core processors on the platform.
  
    .. index:: -t (gnatmetric)
  
  
!   :switch:`-t`
      Print out execution time.
  
  
    .. index:: -v (gnatmetric)
  
!   :switch:`-v`
      Verbose mode;
!     ``gnatmetric`` generates version information and then
      a trace of sources being processed.
  
  
    .. index:: -q (gnatmetric)
  
!   :switch:`-q`
      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.
  
  
  .. only:: PRO or GPL
  
!    .. _The_GNAT_Pretty_Printer_gnatpp:
  
!    The GNAT Pretty Printer ``gnatpp``
!    ==================================
  
     .. index:: ! gnatpp
!    .. index:: pretty printer
  
!    This documentation is for the new libadalang-based version
!    of ``gnatpp``, which replaces the ASIS-based version.
  
!    The ``gnatpp`` tool is a utility for source reformatting / pretty
!    printing.  It takes an Ada source file as input and generates a
!    reformatted version as output.  You can specify various style
!    directives via switches; e.g., identifier case conventions, rules of
!    indentation, and comment layout.
! 
!    ``gnatpp`` 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
!    ``gnatpp`` switches is named ``Pretty_Printer``.
  
!    ``gnatpp`` cannot process sources that contain preprocessing
!    directives.
  
!    The ``gnatpp`` command has the form
  
       ::
  
!         $ gnatpp [ switches ] filename
  
     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
  
  
     .. _Switches_for_gnatpp:
  
!    Switches for ``gnatpp``
!    -----------------------
  
     The following subsections describe the various switches accepted by
!    ``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
*************** Alternatively, you may run the script us
*** 2931,2940 ****
     (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
!    invocation of *gnatpp*.
     If more than one is supplied, the last one is used.
     However, some values for the same switch are mutually compatible.
!    You may supply several such switches to *gnatpp*, but then
     each must be specified in full, with both the name and the value.
     Abbreviated forms (the name appearing once, followed by each value) are
     not permitted.
--- 2869,2878 ----
     (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
!    invocation of ``gnatpp``.
     If more than one is supplied, the last one is used.
     However, some values for the same switch are mutually compatible.
!    You may supply several such switches to ``gnatpp``, but then
     each must be specified in full, with both the name and the value.
     Abbreviated forms (the name appearing once, followed by each value) are
     not permitted.
*************** Alternatively, you may run the script us
*** 2956,2970 ****
       * ``at`` keywords in the component clauses in record representation clauses.
  
  
!    .. index:: -A0 (gnatpp)
!    .. index:: -A1 (gnatpp)
  
  
!    :samp:`-A0`
       Set alignment to OFF
  
  
!    :samp:`-A1`
       Set alignment to ON
  
     .. _Casing_Control:
--- 2894,2908 ----
       * ``at`` keywords in the component clauses in record representation clauses.
  
  
!    .. index:: --no-alignment (gnatpp)
!    .. index:: --alignment (gnatpp)
  
  
!    :switch:`--no-alignment`
       Set alignment to OFF
  
  
!    :switch:`--alignment`
       Set alignment to ON
  
     .. _Casing_Control:
*************** Alternatively, you may run the script us
*** 2975,2981 ****
  
     .. 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
--- 2913,2919 ----
  
     .. 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
*************** Alternatively, you may run the script us
*** 2986,3129 ****
     following an underscore, are converted to their uppercase forms;
     all the other letters are converted to their lowercase forms.
  
!    .. index:: -a (gnatpp)
! 
! 
!    :samp:`-aL`
!      Attribute designators are lower case
! 
  
!    :samp:`-aU`
!      Attribute designators are upper case
  
  
!    :samp:`-aM`
!      Attribute designators are mixed case (this is the default)
  
!    .. index:: -k (gnatpp)
  
  
!    :samp:`-kL`
!      Keywords (technically, these are known in Ada as *reserved words*) are
!      lower case (this is the default)
  
  
!    :samp:`-kU`
!      Keywords are upper case
  
!    .. index:: -n (gnatpp)
  
  
!    :samp:`-nD`
!      Name casing for defining occurrences are as they appear in the source file
!      (this is the default)
  
  
!    :samp:`-nU`
!      Names are in upper case
  
  
!    :samp:`-nL`
!      Names are in lower case
  
  
!    :samp:`-nM`
!      Names are in mixed case
  
!    .. index:: -ne (gnatpp)
  
  
!    :samp:`-neD`
       Enumeration literal casing for defining occurrences are as they appear in the
       source file. Overrides -n casing setting.
  
  
!    :samp:`-neU`
       Enumeration literals are in upper case.  Overrides -n casing
       setting.
  
  
!    :samp:`-neL`
       Enumeration literals are in lower case. Overrides -n casing
       setting.
  
  
!    :samp:`-neM`
       Enumeration literals are in mixed case. Overrides -n casing
       setting.
  
!    .. index:: -nt (gnatpp)
! 
  
!    :samp:`-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.
  
  
!    :samp:`-ntU`
       Names introduced by type and subtype declarations are always in
       upper case. Overrides -n casing setting.
  
  
!    :samp:`-ntL`
       Names introduced by type and subtype declarations are always in
       lower case. Overrides -n casing setting.
  
  
!    :samp:`-ntM`
       Names introduced by type and subtype declarations are always in
       mixed case. Overrides -n casing setting.
  
  
!    :samp:`-nnU`
       Names introduced by number declarations are always in
       upper case. Overrides -n casing setting.
  
  
!    :samp:`-nnL`
       Names introduced by number declarations are always in
       lower case. Overrides -n casing setting.
  
  
!    :samp:`-nnM`
       Names introduced by number declarations are always in
       mixed case. Overrides -n casing setting.
  
!    .. index:: -p (gnatpp)
! 
  
!    :samp:`-pL`
       Pragma names are lower case
  
  
!    :samp:`-pU`
       Pragma names are upper case
  
  
!    :samp:`-pM`
       Pragma names are mixed case (this is the default)
  
  
!    .. index:: -D (gnatpp)
  
!    :samp:`-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
       any explicit or implicit
       -n switch.
       To supply more than one dictionary file,
!      use several ``-D`` switches.
  
!      *gnatpp* implicitly uses a *default dictionary file*
       to define the casing for the Ada predefined names and
       the names declared in the GNAT libraries.
  
  
!    .. index:: -D- (gnatpp)
  
!    :samp:`-D-`
       Do not use the default dictionary file;
       instead, use the casing
       defined by a ``-n`` switch and any explicit
--- 2924,3081 ----
     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:: --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
       any explicit or implicit
       -n switch.
       To supply more than one dictionary file,
!      use several ``--dictionary`` switches.
  
!      ``gnatpp`` implicitly uses a *default dictionary file*
       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
*************** Alternatively, you may run the script us
*** 3132,3142 ****
     The structure of a dictionary file, and details on the conventions
     used in the default dictionary file, are defined in :ref:`Name_Casing`.
  
!    The ``-D-`` and
!    ``-D-``\ `file` switches are mutually
     compatible.
  
!    This group of *gnatpp* switches controls the layout of comments and
     complex syntactic constructs.  See :ref:`Formatting_Comments` for details
     on their effect.
  
--- 3084,3094 ----
     The structure of a dictionary file, and details on the conventions
     used in the default dictionary file, are defined in :ref:`Name_Casing`.
  
!    The :switch:`--dictionary=-` and
!    :switch:`--dictionary={file}` switches are mutually
     compatible.
  
!    This group of ``gnatpp`` switches controls the layout of comments and
     complex syntactic constructs.  See :ref:`Formatting_Comments` for details
     on their effect.
  
*************** Alternatively, you may run the script us
*** 3144,3229 ****
     .. index:: -c (gnatpp)
  
  
!    :samp:`-c0`
       All comments remain unchanged.
  
  
!    :samp:`-c1`
       GNAT-style comment line indentation.
       This is the default.
  
  
!    :samp:`-c3`
       GNAT-style comment beginning.
  
  
!    :samp:`-c4`
       Fill comment blocks.
  
  
!    :samp:`-c5`
       Keep unchanged special form comments.
       This is the default.
  
  
     .. index:: --comments-only (gnatpp)
  
!    :samp:`--comments-only`
       Format just the comments.
  
     .. index:: --no-end-id (gnatpp)
  
  
!    :samp:`--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)
  
  
!    :samp:`--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:: --separate-loop-then (gnatpp)
  
  
!    :samp:`--separate-loop-then`
!      Place the keyword `loop` in FOR and WHILE loop statements and the
!      keyword `then` in IF statements on a separate line.
  
     .. index:: --no-separate-loop-then (gnatpp)
  
  
!    :samp:`--no-separate-loop-then`
!      Do not place the keyword `loop` in FOR and WHILE loop statements and the
!      keyword `then` in IF statements on a separate line. This option is
!      incompatible with ``--separate-loop-then`` option.
  
     .. index:: --use-on-new-line (gnatpp)
  
  
!    :samp:`--use-on-new-line`
       Start each USE clause in a context clause from a separate line.
  
     .. index:: --insert-blank-lines (gnatpp)
  
  
!    :samp:`--insert-blank-lines`
       Insert blank lines where appropriate (between bodies and other large
       constructs).
  
     .. index:: --preserve-blank-lines (gnatpp)
  
  
!    :samp:`--preserve-blank-lines`
       Preserve blank lines in the input. By default, gnatpp will squeeze
       multiple blank lines down to one.
  
  
!    The ``-c`` switches are compatible with one another, except that
!    the ``-c0`` switch disables all other comment formatting
!    switches.
  
  
     .. _General_Text_Layout_Control:
--- 3096,3186 ----
     .. 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.
  
  
!    :switch:`--comments-special`
       Keep unchanged special form comments.
       This is the default.
  
  
     .. 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:: --separate-loop-then (gnatpp)
  
  
!    :switch:`--separate-loop-then`
!      Place the keyword ``loop`` in FOR and WHILE loop statements and the
!      keyword ``then`` in IF statements on a separate line.
  
     .. index:: --no-separate-loop-then (gnatpp)
  
  
!    :switch:`--no-separate-loop-then`
!      Do not place the keyword ``loop`` in FOR and WHILE loop statements and the
!      keyword ``then`` in IF statements on a separate line. This option is
!      incompatible with the :switch:`--separate-loop-then` option.
  
     .. 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.
! 
!    The ``--comments`` switches are compatible with one another, except
!    that the ``--comments-unchanged`` switch disables all other comment
!    formatting switches.
  
  
     .. _General_Text_Layout_Control:
*************** Alternatively, you may run the script us
*** 3233,3255 ****
  
     These switches allow control over line length and indentation.
  
!    .. index:: -M (gnatpp)
  
!    :samp:`-M{nnn}`
!      Maximum line length, `nnn` from 32...256, the default value is 79
  
  
!    .. index:: -i (gnatpp)
  
!    :samp:`-i{nnn}`
!      Indentation level, `nnn` from 1...9, the default value is 3
  
  
!    .. index:: -cl (gnatpp)
  
!    :samp:`-cl{nnn}`
       Indentation level for continuation lines (relative to the line being
!      continued), `nnn` from 1...9.
       The default
       value is one less than the (normal) indentation level, unless the
       indentation is set to 1 (in which case the default value for continuation
--- 3190,3212 ----
  
     These switches allow control over line length and indentation.
  
!    .. 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
       value is one less than the (normal) indentation level, unless the
       indentation is set to 1 (in which case the default value for continuation
*************** Alternatively, you may run the script us
*** 3265,3289 ****
  
     .. index:: --decimal-grouping  (gnatpp)
  
!    :samp:`--decimal-grouping={n}`
       Put underscores in decimal literals (numeric literals without a base)
!      every `n` characters. If a literal already has one or more
       underscores, it is not modified. For example, with
!      `--decimal-grouping=3`, `1000000` will be changed to
!      `1_000_000`.
  
  
     .. index:: --based-grouping  (gnatpp)
  
!    :samp:`--based-grouping={n}`
!      Same as `--decimal-grouping`, but for based literals. For
!      example, with `--based-grouping=4`, `16#0001FFFE#` will be
!      changed to `16#0001_FFFE#`.
  
  
     .. index:: --split-line-before-op (gnatpp)
  
!    :samp:`--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.
--- 3222,3246 ----
  
     .. index:: --decimal-grouping  (gnatpp)
  
!    :switch:`--decimal-grouping={n}`
       Put underscores in decimal literals (numeric literals without a base)
!      every ``n`` characters. If a literal already has one or more
       underscores, it is not modified. For example, with
!      ``--decimal-grouping=3``, ``1000000`` will be changed to
!      ``1_000_000``.
  
  
     .. index:: --based-grouping  (gnatpp)
  
!    :switch:`--based-grouping={n}`
!      Same as ``--decimal-grouping``, but for based literals. For
!      example, with ``--based-grouping=4``, ``16#0001FFFE#`` will be
!      changed to ``16#0001_FFFE#``.
  
  
     .. 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.
*************** Alternatively, you may run the script us
*** 3291,3322 ****
  
     .. index:: --RM-style-spacing (gnatpp)
  
!    :samp:`--RM-style-spacing`
       Do not insert an extra blank before various occurrences of
       '(' and ':'. This also turns off alignment.
  
  
!    .. index:: -ff (gnatpp)
  
!    :samp:`-ff`
       Insert a Form Feed character after a pragma Page.
  
  
     .. index:: --call_threshold (gnatpp)
  
!    :samp:`--call_threshold={nnn}`
!      If the number of parameter associations is greater than `nnn` and if at
       least one association uses named notation, start each association from
!      a new line. If `nnn` is 0, no check for the number of associations
       is made; this is the default.
  
  
     .. index:: --par_threshold (gnatpp)
  
!    :samp:`--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. This feature is disabled by default.
  
  
     .. _Setting_the_Source_Search_Path:
--- 3248,3306 ----
  
     .. index:: --RM-style-spacing (gnatpp)
  
!    :switch:`--RM-style-spacing`
       Do not insert an extra blank before various occurrences of
       '(' and ':'. This also turns off alignment.
  
  
!    .. index:: --ff-after-pragma-page (gnatpp)
  
!    :switch:`--ff-after-pragma-page`
       Insert a Form Feed character after a pragma Page.
  
  
     .. index:: --call_threshold (gnatpp)
  
!    :switch:`--call_threshold={nnn}`
!      If the number of parameter associations is greater than ``nnn`` and if at
       least one association uses named notation, start each association from
!      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:
*************** Alternatively, you may run the script us
*** 3324,3344 ****
     Setting the Source Search Path
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  
!    To define the search path for the input source file, *gnatpp*
     uses the same switches as the GNAT compiler, with the same effects:
  
     .. index:: -I (gnatpp)
  
  
!    :samp:`-I{dir}`
  
     .. index:: -I- (gnatpp)
  
!    :samp:`-I-`
  
     .. index:: -gnatec (gnatpp)
  
!    :samp:`-gnatec={path}`
  
  
     .. _Output_File_Control-gnatpp:
--- 3308,3328 ----
     Setting the Source Search Path
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  
!    To define the search path for the input source file, ``gnatpp``
     uses the same switches as the GNAT compiler, with the same effects:
  
     .. index:: -I (gnatpp)
  
  
!    :switch:`-I{dir}`
  
     .. index:: -I- (gnatpp)
  
!    :switch:`-I-`
  
     .. index:: -gnatec (gnatpp)
  
!    :switch:`-gnatec={path}`
  
  
     .. _Output_File_Control-gnatpp:
*************** Alternatively, you may run the script us
*** 3346,3473 ****
     Output File Control
     ^^^^^^^^^^^^^^^^^^^
  
!    By default the output is sent to a file whose name is obtained by appending
!    the :file:`.pp` suffix to the name of the input file.
!    If the file with this name already exists, it is overwritten.
!    Thus if the input file is :file:`my_ada_proc.adb` then
!    *gnatpp* will produce :file:`my_ada_proc.adb.pp`
!    as output file.
     The output may be redirected by the following switches:
  
  
     .. index:: --output-dir (gnatpp)
  
!    :samp:`--output-dir={dir}`
!      Generate output file in directory :file:`dir` with the same name as the input
!      file. If :file:`dir` is the same as the directory containing the input file,
!      the input file is not processed; use ``-rnb``
!      if you want to update the input file in place.
  
  
!    .. index:: -pipe (gnatpp)
  
!    :samp:`-pipe`
!      Send the output to `Standard_Output`
  
  
!    .. index:: -o (gnatpp)
  
!    :samp:`-o {output_file}`
!      Write the output into `output_file`.
!      If `output_file` already exists, *gnatpp* terminates without
       reading or processing the input file.
  
  
!    .. index:: -of (gnatpp)
  
!    :samp:`-of {output_file}`
!      Write the output into `output_file`, overwriting the existing file
       (if one is present).
  
  
!    .. index:: -r (gnatpp)
  
!    :samp:`-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:: -rf (gnatpp)
  
!    :samp:`-rf`
!      Like ``-r`` except that if the file with the specified name
       already exists, it is overwritten.
  
  
!    .. index:: -rnb (gnatpp)
! 
!    :samp:`-rnb`
!      Replace the input source file with the reformatted output without
!      creating any backup copy of the input source.
! 
! 
!    .. index:: --eol (gnatpp)
  
!    :samp:`--eol={xxx}`
!      Specifies the line-ending style of the reformatted output file. The `xxx`
!      string specified with the switch may be:
  
       * *dos* - MS DOS style, lines end with CR LF characters*
       * *crlf*  - the same as *dos*
       * *unix* - UNIX style, lines end with LF character*
       * *lf* -  the same as *unix*
  
!    .. index:: -W (gnatpp)
! 
!    :samp:`-W{e}`
!      Specify the wide character encoding method for the input and output files.
!      `e` is one of the following:
! 
!      * *h* - Hex encoding
! 
!      * *u* - Upper half encoding
! 
!      * *s* - Shift/JIS encoding
  
!      * *e* - EUC encoding
  
       * *8* - UTF-8 encoding
  
       * *b* - Brackets encoding (default value)
  
!    Options ``-o`` and ``-of`` are allowed only if the call to gnatpp
!    contains only one file to reformat.
  
!    Option ``--eol`` and ``-W`` cannot be used together
!    with the ``-pipe`` option.
  
  
     .. _Other_gnatpp_Switches:
  
!    Other `gnatpp` Switches
!    ^^^^^^^^^^^^^^^^^^^^^^^
  
!    The additional *gnatpp* switches are defined in this subsection.
  
  
     .. index:: --version  (gnatpp)
  
!    :samp:`--version`
       Display copyright and version, then exit disregarding all other options.
  
  
     .. index:: --help  (gnatpp)
  
!    :samp:`--help`
       Display usage, then exit disregarding all other options.
  
  
     .. index:: -P  (gnatpp)
  
!    :samp:`-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.
--- 3330,3446 ----
     Output File Control
     ^^^^^^^^^^^^^^^^^^^
  
!    By default the output overwrites the input file.
     The output may be redirected by the following switches:
  
  
+    .. 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.
+ 
+ 
     .. index:: --output-dir (gnatpp)
  
!    :switch:`--output-dir={dir}`
!      Generate output file in directory :file:`dir` with the same name as
!      the input file. If :file:`dir` is the same as the directory
!      containing the input file, the input file is not processed; use
!      ``--replace`` if you want to update the input file in
!      place.
  
  
!    .. 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.
  
  
!    .. 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.
  
  
!    .. index:: --end-of-line (gnatpp)
  
!    :switch:`--end-of-line={xxx}`
!      Specifies the line-ending style of the reformatted output file. The
!      ``xxx`` string specified with the switch may be:
  
       * *dos* - MS DOS style, lines end with CR LF characters*
       * *crlf*  - the same as *dos*
       * *unix* - UNIX style, lines end with LF character*
       * *lf* -  the same as *unix*
  
!    .. 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:
  
       * *8* - UTF-8 encoding
  
       * *b* - Brackets encoding (default value)
  
!    Options ``--output-file`` and ``--output-force`` are allowed only if
!    the call to gnatpp contains only one file to reformat.
  
!    Option ``--end-of-line`` and ``--wide-character-encoding`` cannot be used together
!    with the ``--pipe`` option.
  
  
     .. _Other_gnatpp_Switches:
  
!    Other ``gnatpp`` Switches
!    ^^^^^^^^^^^^^^^^^^^^^^^^^
  
!    The additional ``gnatpp`` switches are defined in this subsection.
  
  
     .. index:: --version  (gnatpp)
  
!    :switch:`--version`
       Display copyright and version, then exit disregarding all other options.
  
  
     .. index:: --help  (gnatpp)
  
!    :switch:`--help`
       Display usage, then exit disregarding all other options.
  
  
     .. index:: -P  (gnatpp)
  
!    :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.
*************** Alternatively, you may run the script us
*** 3475,3582 ****
  
     .. index:: -U  (gnatpp)
  
!    :samp:`-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.
  
  
!    :samp:`-U {main_unit}`
       If a project file is specified and no argument source is explicitly
!      specified (either directly or by means of ``-files`` option), process
!      the closure of units rooted at `main_unit`. Otherwise this option
       has no effect.
  
  
     .. index:: -X  (gnatpp)
  
!    :samp:`-X{name}={value}`
!      Indicates that external variable `name` in the argument project
!      has the value `value`. Has no effect if no project is specified as
       tool argument.
  
  
     .. index:: --RTS (gnatpp)
  
!    :samp:`--RTS={rts-path}`
       Specifies the default location of the runtime library. Same meaning as the
!      equivalent *gnatmake* flag (:ref:`Switches_for_gnatmake`).
  
  
     .. index:: --incremental  (gnatpp)
  
!    :samp:`--incremental`
       Incremental processing on a per-file basis. Source files are only
       processed if they have been modified, or if files they depend on have
       been modified. This is similar to the way gnatmake/gprbuild only
       compiles files that need to be recompiled. A project file is required
       in this mode, and the gnat driver (as in *gnat pretty*) is not
       supported.
  
  
     .. index:: --pp-off  (gnatpp)
  
!    :samp:`--pp-off={xxx}`
!      Use `--xxx` as the command to turn off pretty printing, instead
!      of the default `--!pp off`.
  
  
     .. index:: --pp-on  (gnatpp)
  
!    :samp:`--pp-on={xxx}`
!      Use `--xxx` as the command to turn pretty printing back on, instead
!      of the default `--!pp on`.
! 
  
-    .. index:: -files (gnatpp)
- 
-    :samp:`-files {filename}`
-      Take the argument source files from the specified file. This file should be an
-      ordinary text file containing file names separated by spaces or
-      line breaks. You can use this switch more than once in the same call to
-      *gnatpp*. You also can combine this switch with an explicit list of
-      files.
  
  
!    .. index:: -j (gnatpp)
  
-    :samp:`-j{n}`
-      Without ``--incremental``, use `n` processes to carry out the
-      tree creations (internal representations of the argument sources). On
-      a multiprocessor machine this speeds up processing of big sets of
-      argument sources. If `n` is 0, then the maximum number of parallel
-      tree creations is the number of core processors on the platform. This
-      option cannot be used together with ``-r``,
-      ``-rf`` or
-      ``-rnb`` option.
  
!      With ``--incremental``, use `n` *gnatpp* processes to
!      perform pretty-printing in parallel. `n` = 0 means the same as
!      above. In this case, ``-r``,
!      ``-rf`` or
!      ``-rnb`` options are allowed.
  
!    .. index:: -t (gnatpp)
  
  
!    :samp:`-t`
!      Print out execution time.
  
  
!    .. index:: -v (gnatpp)
  
!    :samp:`-v`
       Verbose mode
  
  
!    .. index:: -q (gnatpp)
  
!    :samp:`-q`
       Quiet mode
  
     If a project file is specified and no argument source is explicitly
!    specified (either directly or by means of ``-files`` option), and no
     ``-U`` is specified, then the set of processed sources is
     all the immediate units of the argument project.
  
--- 3448,3545 ----
  
     .. index:: -U  (gnatpp)
  
!    :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
!      specified (either directly or by means of ``--files`` option), process
!      the closure of units rooted at ``main_unit``. Otherwise this option
       has no effect.
  
  
     .. index:: -X  (gnatpp)
  
!    :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 as
       tool argument.
  
  
     .. index:: --RTS (gnatpp)
  
!    :switch:`--RTS={rts-path}`
       Specifies the default location of the runtime library. Same meaning as the
!      equivalent ``gnatmake`` flag (:ref:`Switches_for_gnatmake`).
  
  
     .. index:: --incremental  (gnatpp)
  
!    :switch:`--incremental`
       Incremental processing on a per-file basis. Source files are only
       processed if they have been modified, or if files they depend on have
       been modified. This is similar to the way gnatmake/gprbuild only
       compiles files that need to be recompiled. A project file is required
       in this mode, and the gnat driver (as in *gnat pretty*) is not
       supported.
+      (Note: this switch is not yet supported in the libadalang-based
+      version of gnatpp.)
  
  
     .. index:: --pp-off  (gnatpp)
  
!    :switch:`--pp-off={xxx}`
!      Use :switch:`--xxx` as the command to turn off pretty printing, instead
!      of the default ``--!pp off``.
  
  
     .. 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.
!      Several such switches may be specified simultaneously.
  
  
!    .. index:: --ignore (gnatpp)
  
!    :switch:`--ignore={filename}`
!      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.
  
  
!    .. 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
!    specified (either directly or by means of ``--files`` option), and no
     ``-U`` is specified, then the set of processed sources is
     all the immediate units of the argument project.
  
*************** Alternatively, you may run the script us
*** 3586,3592 ****
     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.
  
--- 3549,3555 ----
     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.
  
*************** Alternatively, you may run the script us
*** 3640,3646 ****
     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.
--- 3603,3609 ----
     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.
*************** Alternatively, you may run the script us
*** 3670,3711 ****
       the same line.
  
     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 ``-c0`` 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 ``-c3`` 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 ``-c4`` 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 -c3 and -c4 switches; other
!    formatting switches are ignored. For example,
!    ``--comments-only -c4`` means to fill comment paragraphs, and do nothing else.
!    Likewise,
!    ``--comments-only -c3`` ensures comments start with at least two
!    spaces after `--`, and ``--comments-only -c3 -c4`` does
!    both. If ``--comments-only`` is given without ``-c3`` or
!    ``-c4``, then gnatpp doesn't format anything.
  
  
     .. _Name_Casing:
--- 3633,3672 ----
       the same line.
  
     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:
*************** Alternatively, you may run the script us
*** 3713,3781 ****
     Name Casing
     ^^^^^^^^^^^
  
!    *gnatpp* always converts the usage occurrence of a (simple) name to
     the same casing as the corresponding defining identifier.
  
!    You control the casing for defining occurrences via the
!    ``-n`` switch.
!    With ``-nD`` ('as declared', which is the default),
!    defining occurrences appear exactly as in the source file
!    where they are declared.
!    The other values for this switch --
!    ``-nU``,
!    ``-nL``,
!    ``-nM`` --
!    result in
!    upper, lower, or mixed case, respectively.
!    If *gnatpp* changes the casing of a defining
!    occurrence, it analogously changes the casing of all the
!    usage occurrences of this name.
  
!    If the defining occurrence of a name is not in the source compilation unit
!    currently being processed by *gnatpp*, the casing of each reference to
!    this name is changed according to the value of the ``-n``
!    switch (subject to the dictionary file mechanism described below).
!    Thus *gnatpp* acts as though the ``-n`` switch
!    had affected the
!    casing for the defining occurrence of the name.
  
     The options
!    :samp:`-a{x}`,
!    :samp:`-k{x}`,
!    :samp:`-ne{x}`,
!    :samp:`-nt{x}`,
!    :samp:`-nn{x}`, and
!    :samp:`-p{x}`
     allow finer-grained control over casing for
     attributes, keywords, enumeration literals,
     types, named numbers and pragmas, respectively.
!    :samp:`-nt{x}` covers subtypes and
!    task and protected bodies as well.
  
     Some names may need to be spelled with casing conventions that are not
     covered by the upper-, lower-, and mixed-case transformations.
     You can arrange correct casing by placing such names in a
     *dictionary file*,
!    and then supplying a ``-D`` switch.
     The casing of names from dictionary files overrides
!    any ``-n`` switch.
  
     To handle the casing of Ada predefined names and the names from GNAT libraries,
!    *gnatpp* assumes a default dictionary file.
     The name of each predefined entity is spelled with the same casing as is used
     for the entity in the :title:`Ada Reference Manual` (usually mixed case).
     The name of each entity in the GNAT libraries is spelled with the same casing
     as is used in the declaration of that entity.
  
!    The ``-D-`` switch suppresses the use of
     the default dictionary file. Instead, the casing for predefined and
     GNAT-defined names will be established by the
     ``-n`` switch or explicit dictionary files. For
!    example, by default the names `Ada.Text_IO` and
!    `GNAT.OS_Lib` will appear as just shown, even in the presence of
!    a ``-nU`` switch.  To ensure that even
     such names are rendered in uppercase, additionally supply the
!    -D- switch (or else place these names
     in upper case in a dictionary file).
  
     A dictionary file is a plain text file; each line in this file can be
--- 3674,3735 ----
     Name Casing
     ^^^^^^^^^^^
  
!    ``gnatpp`` always converts the usage occurrence of a (simple) name to
     the same casing as the corresponding defining identifier.
  
!    You control the casing for defining occurrences via the ``--name...``
!    switches.  With ``--name-case-as-declared``, which is the default,
!    defining occurrences appear exactly as in the source file where they
!    are declared.  The other values for this switch --
!    ``--name-upper-case``, ``--name-lower-case``, ``--name-mixed-case``
!    -- result in upper, lower, or mixed case, respectively.  If
!    ``gnatpp`` changes the casing of a defining occurrence, it
!    analogously changes the casing of all the usage occurrences of this
!    name.
  
!    If the defining occurrence of a name is not in the source compilation
!    unit currently being processed by ``gnatpp``, the casing of each
!    reference to this name is changed according to the switch (subject to
!    the dictionary file mechanism described below).  Thus ``gnatpp`` acts
!    as though the switch had affected the casing for the defining
!    occurrence of the name.
  
     The options
!    :switch:`--attribute...`,
!    :switch:`--keyword...`,
!    :switch:`--enum...`,
!    :switch:`--type...`,
!    :switch:`--number...`, and
!    :switch:`--pragma...`
     allow finer-grained control over casing for
     attributes, keywords, enumeration literals,
     types, named numbers and pragmas, respectively.
!    :switch:`--type...` cover subtypes as well.
  
     Some names may need to be spelled with casing conventions that are not
     covered by the upper-, lower-, and mixed-case transformations.
     You can arrange correct casing by placing such names in a
     *dictionary file*,
!    and then supplying a ``--dictionary`` switch.
     The casing of names from dictionary files overrides
!    any ``--name...`` switch.
  
     To handle the casing of Ada predefined names and the names from GNAT libraries,
!    ``gnatpp`` assumes a default dictionary file.
     The name of each predefined entity is spelled with the same casing as is used
     for the entity in the :title:`Ada Reference Manual` (usually mixed case).
     The name of each entity in the GNAT libraries is spelled with the same casing
     as is used in the declaration of that entity.
  
!    The ``--dictionary=-`` switch suppresses the use of
     the default dictionary file. Instead, the casing for predefined and
     GNAT-defined names will be established by the
     ``-n`` switch or explicit dictionary files. For
!    example, by default the names ``Ada.Text_IO`` and
!    ``GNAT.OS_Lib`` will appear as just shown, even in the presence of
!    a ``--name-upper-case`` switch.  To ensure that even
     such names are rendered in uppercase, additionally supply the
!    --dictionary=- switch (or else place these names
     in upper case in a dictionary file).
  
     A dictionary file is a plain text file; each line in this file can be
*************** Alternatively, you may run the script us
*** 3786,3828 ****
  
       ::
  
!         `casing_schema` ::= `identifier` | `simple_identifier`
  
!         `simple_identifier` ::= `letter`{`letter_or_digit`}
  
  
     (See :title:`Ada Reference Manual`, Section 2.3) for the definition of the
!    `identifier` lexical element and the `letter_or_digit` category.)
  
     The casing schema string can be followed by white space and/or an Ada-style
     comment; any amount of white space is allowed before the string.
  
     If a dictionary file is passed as
!    the value of a :samp:`-D{file}` switch
     then for every
!    simple name and every identifier, *gnatpp* checks if the dictionary
     defines the casing for the name or for some of its parts (the term 'subword'
     is used below to denote the part of a name which is delimited by '_' or by
     the beginning or end of the word and which does not contain any '_' inside):
  
!    * if the whole name is in the dictionary, *gnatpp* uses for this name
       the casing defined by the dictionary; no subwords are checked for this word
  
!    * for every subword *gnatpp* checks if the dictionary contains the
!      corresponding string of the form `*`simple_identifier`*`,
!      and if it does, the casing of this `simple_identifier` is used
       for this subword
  
     * if the whole name does not contain any '_' inside, and if for this name
!      the dictionary contains two entries - one of the form `identifier`,
!      and another - of the form *`simple_identifier`*, then the first one
       is applied to define the casing of this name
  
!    * if more than one dictionary file is passed as *gnatpp* switches, each
       dictionary adds new casing exceptions and overrides all the existing casing
       exceptions set by the previous dictionaries
  
!    * when *gnatpp* checks if the word or subword is in the dictionary,
       this check is not case sensitive
  
     For example, suppose we have the following source to reformat:
--- 3740,3782 ----
  
       ::
  
!         casing_schema ::= identifier | simple_identifier
  
!         simple_identifier ::= letter{letter_or_digit}
  
  
     (See :title:`Ada Reference Manual`, Section 2.3) for the definition of the
!    ``identifier`` lexical element and the ``letter_or_digit`` category.)
  
     The casing schema string can be followed by white space and/or an Ada-style
     comment; any amount of white space is allowed before the string.
  
     If a dictionary file is passed as
!    the value of a :switch:`--dictionary={file}` switch
     then for every
!    simple name and every identifier, ``gnatpp`` checks if the dictionary
     defines the casing for the name or for some of its parts (the term 'subword'
     is used below to denote the part of a name which is delimited by '_' or by
     the beginning or end of the word and which does not contain any '_' inside):
  
!    * if the whole name is in the dictionary, ``gnatpp`` uses for this name
       the casing defined by the dictionary; no subwords are checked for this word
  
!    * for every subword ``gnatpp`` checks if the dictionary contains the
!      corresponding string of the form ``simple_identifier``,
!      and if it does, the casing of this ``simple_identifier`` is used
       for this subword
  
     * if the whole name does not contain any '_' inside, and if for this name
!      the dictionary contains two entries -- one of the form ``identifier``,
!      and another of the form ``simple_identifier`` -- then the first one
       is applied to define the casing of this name
  
!    * if more than one dictionary file is passed as ``gnatpp`` switches, each
       dictionary adds new casing exceptions and overrides all the existing casing
       exceptions set by the previous dictionaries
  
!    * when ``gnatpp`` checks if the word or subword is in the dictionary,
       this check is not case sensitive
  
     For example, suppose we have the following source to reformat:
*************** Alternatively, you may run the script us
*** 3850,3862 ****
          *dict2:*
            *NAME3*
  
!    If *gnatpp* is called with the following switches:
  
       ::
  
!         $ gnatpp -nM -D dict1 -D dict2 test.adb
  
!    then we will get the following name casing in the *gnatpp* output:
  
  
       .. code-block:: ada
--- 3804,3816 ----
          *dict2:*
            *NAME3*
  
!    If ``gnatpp`` is called with the following switches:
  
       ::
  
!         $ gnatpp --name-mixed-case --dictionary=dict1 --dictionary=dict2 test.adb
  
!    then we will get the following name casing in the ``gnatpp`` output:
  
  
       .. code-block:: ada
*************** Alternatively, you may run the script us
*** 3870,3875 ****
--- 3824,4023 ----
             Name2_NAME3_Name4 := Name4_NAME3_Name2 > NAME1;
          end Test;
  
+    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:: -ff (gnatpp)
+ 
+    :switch:`-ff`
+      :switch:`--ff-after-pragma-page`
+ 
+    .. 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)
+ 
+    :switch:`--eol={xxx}`
+      :switch:`--end-of-line={xxx}`
+ 
+    .. 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
  
*************** Alternatively, you may run the script us
*** 3880,3929 ****
  
    .. index:: ! gnatstub
  
!   *gnatstub* creates empty but compilable bodies
    for library unit declarations, and empty but compilable
    subunit for body stubs.
  
!   *gnatstub* is a project-aware tool.
    (See :ref:`Using_Project_Files_with_GNAT_Tools` for a description of
!   the project-related switches but note that *gnatstub* does not support
!   the :samp:`-U`, :samp:`-U {main_unit}`, :samp:`--subdirs={dir}`, or
!   :samp:`--no_objects_dir` switches.)
    The project file package that can specify
!   *gnatstub* switches is named ``gnatstub``.
  
  
!   To create a body or a subunit, *gnatstub* invokes the Ada
    compiler and generates and uses the ASIS tree for the input source;
    thus the input must be legal Ada code, and the tool should have all the
    information needed to compile the input source. To provide this information,
!   you may specify as a tool parameter the project file the input source belongs to
!   (or you may call *gnatstub*
!   through the *gnat* driver (see :ref:`The_GNAT_Driver_and_Project_Files`).
    Another possibility is to specify the source search
!   path and needed configuration files in ``-cargs`` section of *gnatstub*
!   call, see the description of the *gnatstub* switches below.
  
!   If the *gnatstub* argument source contains preprocessing directives
    then the needed options should be provided to run preprocessor as a part of
!   the *gnatstub* call, and the generated body stub will correspond to
    the preprocessed source.
  
!   By default, all the program unit bodies generated by `gnatstub`
!   raise the predefined `Program_Error` exception, which will catch
    accidental calls of generated stubs. This behavior can be changed with
    option ``--no-exception`` (see below).
  
    .. _Running_gnatstub:
  
!   Running *gnatstub*
!   ------------------
  
!   *gnatstub* invocation has the following form:
  
      ::
  
!        $ gnatstub [`switches`] `filename` [-cargs `gcc_switches`]
  
    where
  
--- 4028,4075 ----
  
    .. index:: ! gnatstub
  
!   ``gnatstub`` creates empty but compilable bodies
    for library unit declarations, and empty but compilable
    subunit for body stubs.
  
!   ``gnatstub`` is a project-aware tool.
    (See :ref:`Using_Project_Files_with_GNAT_Tools` for a description of
!   the project-related switches but note that ``gnatstub`` does not support
!   the :switch:`-U`, :switch:`-U {main_unit}`, :switch:`--subdirs={dir}`, or
!   :switch:`--no_objects_dir` switches.)
    The project file package that can specify
!   ``gnatstub`` switches is named ``gnatstub``.
  
  
!   To create a body or a subunit, ``gnatstub`` invokes the Ada
    compiler and generates and uses the ASIS tree for the input source;
    thus the input must be legal Ada code, and the tool should have all the
    information needed to compile the input source. To provide this information,
!   you may specify as a tool parameter the project file the input source belongs to.
    Another possibility is to specify the source search
!   path and needed configuration files in ``-cargs`` section of ``gnatstub``
!   call, see the description of the ``gnatstub`` switches below.
  
!   If the ``gnatstub`` argument source contains preprocessing directives
    then the needed options should be provided to run preprocessor as a part of
!   the ``gnatstub`` call, and the generated body stub will correspond to
    the preprocessed source.
  
!   By default, all the program unit bodies generated by ``gnatstub``
!   raise the predefined ``Program_Error`` exception, which will catch
    accidental calls of generated stubs. This behavior can be changed with
    option ``--no-exception`` (see below).
  
    .. _Running_gnatstub:
  
!   Running ``gnatstub``
!   --------------------
  
!   ``gnatstub`` invocation has the following form:
  
      ::
  
!        $ gnatstub [ switches ] filename [ -cargs gcc_switches ]
  
    where
  
*************** Alternatively, you may run the script us
*** 3936,3945 ****
        of seitches does not contain a project file that defines naming
        conventions, the name of the body file must
        be provided
!       explicitly as the value of the :samp:`-o{body-name}` option.
        If the file name follows the GNAT file naming
        conventions and the name of the body file is not provided,
!       *gnatstub*
        takes the naming conventions for the generated source from the
        project file provided as a parameter of ``-P`` switch if any,
        or creates the name file to generate using the standard GNAT
--- 4082,4091 ----
        of seitches does not contain a project file that defines naming
        conventions, the name of the body file must
        be provided
!       explicitly as the value of the :switch:`-o{body-name}` option.
        If the file name follows the GNAT file naming
        conventions and the name of the body file is not provided,
!       ``gnatstub``
        takes the naming conventions for the generated source from the
        project file provided as a parameter of ``-P`` switch if any,
        or creates the name file to generate using the standard GNAT
*************** Alternatively, you may run the script us
*** 3947,3953 ****
  
    * *gcc_switches* is a list of switches for *gcc*.
        They will be passed on to all compiler invocations made by
!       *gnatstub* to generate the ASIS trees. Here you can provide
        ``-I`` switches to form the source search path,
        use the ``-gnatec`` switch to set the configuration file,
        use the ``-gnat05`` switch if sources should be compiled in
--- 4093,4099 ----
  
    * *gcc_switches* is a list of switches for *gcc*.
        They will be passed on to all compiler invocations made by
!       ``gnatstub`` to generate the ASIS trees. Here you can provide
        ``-I`` switches to form the source search path,
        use the ``-gnatec`` switch to set the configuration file,
        use the ``-gnat05`` switch if sources should be compiled in
*************** Alternatively, you may run the script us
*** 3959,4014 ****
  
    .. _Switches_for_gnatstub:
  
!   Switches for *gnatstub*
!   -----------------------
  
    .. index:: --version (gnatstub)
  
!   :samp:`--version`
      Display Copyright and version, then exit disregarding all other options.
  
  
    .. index:: --help (gnatstub)
  
!   :samp:`--help`
      Display usage, then exit disregarding all other options.
  
  
    .. index:: -P (gnatstub)
  
!   :samp:`-P {file}`
      Indicates the name of the project file that describes the set of sources
      to be processed.
  
  
    .. index:: -X (gnatstub)
  
!   :samp:`-X{name}={value}`
!     Indicates that external variable `name` in the argument project
!     has the value `value`. Has no effect if no project is specified as
      tool argument.
  
  
    .. index:: --RTS (gnatstub)
  
!   :samp:`--RTS={rts-path}`
      Specifies the default location of the runtime library. Same meaning as the
!     equivalent *gnatmake* flag (:ref:`Switches_for_gnatmake`).
  
  
    .. index:: --subunits (gnatstub)
  
!   :samp:`--subunits`
      Generate subunits for body stubs. If this switch is specified,
!     *gnatstub* expects a library unit body as an agrument file,
      otherwise a library unit declaration is expected. If a body stub
!     already has a corresponding subunit, *gnatstub* does not
      generate anything for it.
  
  
    .. index:: -f (gnatstub)
  
!   :samp:`-f`
      If the destination directory already contains a file with the name of the
      body file
      for the argument spec file, replace it with the generated body stub.
--- 4105,4160 ----
  
    .. _Switches_for_gnatstub:
  
!   Switches for ``gnatstub``
!   -------------------------
  
    .. index:: --version (gnatstub)
  
!   :switch:`--version`
      Display Copyright and version, then exit disregarding all other options.
  
  
    .. index:: --help (gnatstub)
  
!   :switch:`--help`
      Display usage, then exit disregarding all other options.
  
  
    .. index:: -P (gnatstub)
  
!   :switch:`-P {file}`
      Indicates the name of the project file that describes the set of sources
      to be processed.
  
  
    .. index:: -X (gnatstub)
  
!   :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 as
      tool argument.
  
  
    .. index:: --RTS (gnatstub)
  
!   :switch:`--RTS={rts-path}`
      Specifies the default location of the runtime library. Same meaning as the
!     equivalent ``gnatmake`` flag (:ref:`Switches_for_gnatmake`).
  
  
    .. index:: --subunits (gnatstub)
  
!   :switch:`--subunits`
      Generate subunits for body stubs. If this switch is specified,
!     ``gnatstub`` expects a library unit body as an agrument file,
      otherwise a library unit declaration is expected. If a body stub
!     already has a corresponding subunit, ``gnatstub`` does not
      generate anything for it.
  
  
    .. index:: -f (gnatstub)
  
!   :switch:`-f`
      If the destination directory already contains a file with the name of the
      body file
      for the argument spec file, replace it with the generated body stub.
*************** Alternatively, you may run the script us
*** 4017,4023 ****
  
    .. index:: -hs (gnatstub)
  
!   :samp:`-hs`
      Put the comment header (i.e., all the comments preceding the
      compilation unit) from the source of the library unit declaration
      into the body stub.
--- 4163,4169 ----
  
    .. index:: -hs (gnatstub)
  
!   :switch:`-hs`
      Put the comment header (i.e., all the comments preceding the
      compilation unit) from the source of the library unit declaration
      into the body stub.
*************** Alternatively, you may run the script us
*** 4025,4064 ****
  
    .. index:: -hg (gnatstub)
  
!   :samp:`-hg`
      Put a sample comment header into the body stub.
  
  
    .. index:: --header-file (gnatstub)
  
!   :samp:`--header-file={filename}`
      Use the content of the file as the comment header for a generated body stub.
  
  
    .. index:: -IDIR (gnatstub)
    .. index:: -I- (gnatstub)
  
!   :samp:`-I{DIR}`, :samp:`-I-`
      These switches have  the same meaning as in calls to
!     *gcc*.
      They define  the source search path in the call to
!     *gcc* issued
!     by *gnatstub* to compile an argument source file.
  
  
    .. index:: -gnatec (gnatstub)
  
!   :samp:`-gnatec{PATH}`
!     This switch has the same meaning as in calls to *gcc*.
      It defines the additional configuration file to be passed to the call to
!     *gcc* issued
!     by *gnatstub* to compile an argument source file.
  
  
    .. index:: -gnatyM (gnatstub)
  
!   :samp:`-gnatyM{n}`
!     (`n` is a non-negative integer). Set the maximum line length that is
      allowed in a source file. The default is 79. The maximum value that can be
      specified is 32767. Note that in the special case of configuration
      pragma files, the maximum is always 32767 regardless of whether or
--- 4171,4210 ----
  
    .. index:: -hg (gnatstub)
  
!   :switch:`-hg`
      Put a sample comment header into the body stub.
  
  
    .. index:: --header-file (gnatstub)
  
!   :switch:`--header-file={filename}`
      Use the content of the file as the comment header for a generated body stub.
  
  
    .. index:: -IDIR (gnatstub)
    .. index:: -I- (gnatstub)
  
!   :switch:`-I{DIR}`, :switch:`-I-`
      These switches have  the same meaning as in calls to
!     ``gcc``.
      They define  the source search path in the call to
!     ``gcc`` issued
!     by ``gnatstub`` to compile an argument source file.
  
  
    .. index:: -gnatec (gnatstub)
  
!   :switch:`-gnatec{PATH}`
!     This switch has the same meaning as in calls to ``gcc``.
      It defines the additional configuration file to be passed to the call to
!     ``gcc`` issued
!     by ``gnatstub`` to compile an argument source file.
  
  
    .. index:: -gnatyM (gnatstub)
  
!   :switch:`-gnatyM{n}`
!     (``n`` is a non-negative integer). Set the maximum line length that is
      allowed in a source file. The default is 79. The maximum value that can be
      specified is 32767. Note that in the special case of configuration
      pragma files, the maximum is always 32767 regardless of whether or
*************** Alternatively, you may run the script us
*** 4067,4121 ****
  
    .. index:: -gnaty (gnatstub)
  
!   :samp:`-gnaty{n}`
!     (`n` is a non-negative integer from 1 to 9). Set the indentation level in
!     the generated body sample to `n`.
      The default indentation is 3.
  
  
    .. index:: -gnatyo (gnatstub)
  
!   :samp:`-gnatyo`
      Order local bodies alphabetically. (By default local bodies are ordered
      in the same way as the corresponding local specs in the argument spec file.)
  
  
    .. index:: -i (gnatstub)
  
!   :samp:`-i{n}`
!     Same as :samp:`-gnaty{n}``
  
  
    .. index:: -k (gnatstub)
  
!   :samp:`-k`
      Do not remove the tree file (i.e., the snapshot of the compiler internal
!     structures used by *gnatstub*) after creating the body stub.
  
  
    .. index:: -l (gnatstub)
  
!   :samp:`-l{n}`
      Same as ``-gnatyM`n```
  
  
    .. index:: --no-exception (gnatstub)
  
!   :samp:`--no-exception`
      Avoid raising PROGRAM_ERROR in the generated bodies of program unit stubs.
      This is not always possible for function stubs.
  
  
    .. index:: --no-local-header (gnatstub)
  
!   :samp:`--no-local-header`
      Do not place local comment header with unit name before body stub for a
      unit.
  
  
    .. index:: -o (gnatstub)
  
!   :samp:`-o {body-name}`
      Body file name.  This should be set if the argument file name does not
      follow
      the GNAT file naming
--- 4213,4267 ----
  
    .. index:: -gnaty (gnatstub)
  
!   :switch:`-gnaty{n}`
!     (``n`` is a non-negative integer from 1 to 9). Set the indentation level in
!     the generated body sample to ``n``.
      The default indentation is 3.
  
  
    .. index:: -gnatyo (gnatstub)
  
!   :switch:`-gnatyo`
      Order local bodies alphabetically. (By default local bodies are ordered
      in the same way as the corresponding local specs in the argument spec file.)
  
  
    .. index:: -i (gnatstub)
  
!   :switch:`-i{n}`
!     Same as :switch:`-gnaty{n}``
  
  
    .. index:: -k (gnatstub)
  
!   :switch:`-k`
      Do not remove the tree file (i.e., the snapshot of the compiler internal
!     structures used by ``gnatstub``) after creating the body stub.
  
  
    .. index:: -l (gnatstub)
  
!   :switch:`-l{n}`
      Same as ``-gnatyM`n```
  
  
    .. index:: --no-exception (gnatstub)
  
!   :switch:`--no-exception`
      Avoid raising PROGRAM_ERROR in the generated bodies of program unit stubs.
      This is not always possible for function stubs.
  
  
    .. index:: --no-local-header (gnatstub)
  
!   :switch:`--no-local-header`
      Do not place local comment header with unit name before body stub for a
      unit.
  
  
    .. index:: -o (gnatstub)
  
!   :switch:`-o {body-name}`
      Body file name.  This should be set if the argument file name does not
      follow
      the GNAT file naming
*************** Alternatively, you may run the script us
*** 4126,4132 ****
  
    .. index:: --dir (gnatstub)
  
!   :samp:`--dir={dir-name}`
      The path to the directory to place the generated files into.
      If this switch is not set, the generated library unit body is
      placed in the current directory, and generated sununits -
--- 4272,4278 ----
  
    .. index:: --dir (gnatstub)
  
!   :switch:`--dir={dir-name}`
      The path to the directory to place the generated files into.
      If this switch is not set, the generated library unit body is
      placed in the current directory, and generated sununits -
*************** Alternatively, you may run the script us
*** 4135,4143 ****
  
    .. index:: -W (gnatstub)
  
!   :samp:`-W{e}`
      Specify the wide character encoding method for the output body file.
!     `e` is one of the following:
  
      ==== ==================================
      *h*  Hex encoding
--- 4281,4289 ----
  
    .. index:: -W (gnatstub)
  
!   :switch:`-W{e}`
      Specify the wide character encoding method for the output body file.
!     ``e`` is one of the following:
  
      ==== ==================================
      *h*  Hex encoding
*************** Alternatively, you may run the script us
*** 4151,4157 ****
  
    .. index:: -q (gnatstub)
  
!   :samp:`-q`
      Quiet mode: do not generate a confirmation when a body is
      successfully created, and do not generate a message when a body is not
      required for an
--- 4297,4303 ----
  
    .. index:: -q (gnatstub)
  
!   :switch:`-q`
      Quiet mode: do not generate a confirmation when a body is
      successfully created, and do not generate a message when a body is not
      required for an
*************** Alternatively, you may run the script us
*** 4160,4168 ****
  
    .. index:: -r (gnatstub)
  
!   :samp:`-r`
      Reuse the tree file (if it exists) instead of creating it.  Instead of
!     creating the tree file for the library unit declaration, *gnatstub*
      tries to find it in the current directory and use it for creating
      a body. If the tree file is not found, no body is created. This option
      also implies ``-k``, whether or not
--- 4306,4314 ----
  
    .. index:: -r (gnatstub)
  
!   :switch:`-r`
      Reuse the tree file (if it exists) instead of creating it.  Instead of
!     creating the tree file for the library unit declaration, ``gnatstub``
      tries to find it in the current directory and use it for creating
      a body. If the tree file is not found, no body is created. This option
      also implies ``-k``, whether or not
*************** Alternatively, you may run the script us
*** 4171,4188 ****
  
    .. index:: -t (gnatstub)
  
!   :samp:`-t`
      Overwrite the existing tree file.  If the current directory already
      contains the file which, according to the GNAT file naming rules should
      be considered as a tree file for the argument source file,
!     *gnatstub*
      will refuse to create the tree file needed to create a sample body
      unless this option is set.
  
  
    .. index:: -v (gnatstub)
  
!   :samp:`-v`
      Verbose mode: generate version information.
  
  
--- 4317,4334 ----
  
    .. index:: -t (gnatstub)
  
!   :switch:`-t`
      Overwrite the existing tree file.  If the current directory already
      contains the file which, according to the GNAT file naming rules should
      be considered as a tree file for the argument source file,
!     ``gnatstub``
      will refuse to create the tree file needed to create a sample body
      unless this option is set.
  
  
    .. index:: -v (gnatstub)
  
!   :switch:`-v`
      Verbose mode: generate version information.
  
  
*************** Alternatively, you may run the script us
*** 4191,4213 ****
  
    .. _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 :samp:`-U`, :samp:`-eL`, :samp:`--subdirs={dir}`, or
!   :samp:`--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
--- 4337,4359 ----
  
    .. _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
*************** Alternatively, you may run the script us
*** 4215,4227 ****
    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
--- 4361,4373 ----
    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
*************** Alternatively, you may run the script us
*** 4230,4281 ****
    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
  
!   * :samp:`-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.
  
!   * :samp:`{filename}`
!       is the name of the source file containing the library unit package declaration
!       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
--- 4376,4427 ----
    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
*************** Alternatively, you may run the script us
*** 4284,4290 ****
        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:
--- 4430,4436 ----
        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:
*************** Alternatively, you may run the script us
*** 4315,4325 ****
    Test Execution Mode
    ^^^^^^^^^^^^^^^^^^^
  
!   In this  mode *gnattest* has a the following command-line interface:
  
      ::
  
!         $ gnattest `test_drivers.list` [`switches`]
  
    where
  
--- 4461,4471 ----
    Test Execution Mode
    ^^^^^^^^^^^^^^^^^^^
  
!   In this  mode ``gnattest`` has a the following command-line interface:
  
      ::
  
!         $ gnattest test_drivers.list [ switches ]
  
    where
  
*************** Alternatively, you may run the script us
*** 4335,4434 ****
  
    .. _Switches_for_gnattest_in_framework_generation_mode:
  
!   Switches for *gnattest* in framework generation mode
!   ----------------------------------------------------
  
      .. index:: -q (gnattest)
  
!   :samp:`-q`
      Quiet mode: suppresses noncritical output messages.
  
  
      .. index:: -v (gnattest)
  
!   :samp:`-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)
  
!   :samp:`-r`
      Recursively considers all sources from all projects.
  
  
      .. index:: --RTS (gnattest)
  
!   :samp:`--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)
  
!   :samp:`--additional-tests={projname}`
!     Sources described in `projname` are considered potential additional
      manual tests to be added to the test suite.
  
  
      .. index:: --harness-only (gnattest)
  
!   :samp:`--harness-only`
!     When this option is given, *gnattest* creates a harness for all
!     sources, treating them as test packages.
  
  
      .. index:: --separate-drivers (gnattest)
  
!   :samp:`--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)
  
!   :samp:`--stub`
      Generates the testing framework that uses subsystem stubbing to isolate the
      code under test.
  
  
      .. index:: --harness-dir (gnattest)
  
!   :samp:`--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)
  
!   :samp:`--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)
  
!   :samp:`--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)
  
!   :samp:`--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
--- 4481,4598 ----
  
    .. _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
*************** Alternatively, you may run the script us
*** 4437,4447 ****
  
      .. index:: --stubs-dir (gnattest)
  
!   :samp:`--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
--- 4601,4611 ----
  
      .. 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
*************** Alternatively, you may run the script us
*** 4450,4511 ****
  
      .. index:: --exclude-from-stubbing (gnattest)
  
!   :samp:`--exclude-from-stubbing={filename}`
!     Disables stubbing of units listed in `filename`. The file should contain
      corresponding spec files, one per line.
  
!   :samp:`--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)
  
!   :samp:`--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:: --skeleton-default (gnattest)
  
!   :samp:`--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)
  
!   :samp:`--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)
  
!   :samp:`--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)
  
!   :samp:`--omit-sloc`
      Suppresses comment line containing file name and line number of corresponding
      subprograms in test skeletons.
  
  
      .. index:: --no-command-line (gnattest)
  
!   :samp:`--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)
  
!   :samp:`--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
--- 4614,4690 ----
  
      .. 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
*************** Alternatively, you may run the script us
*** 4516,4522 ****
  
      .. index:: --transition (gnattest)
  
!   :samp:`--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
--- 4695,4701 ----
  
      .. 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
*************** Alternatively, you may run the script us
*** 4526,4566 ****
  
      .. index:: --test-duration (gnattest)
  
!   :samp:`--test-duration`
      Adds time measurements for each test in generated test driver.
  
  
!   :samp:`--tests_root`, ``--subdir`` and ``--tests-dir`` switches are mutually exclusive.
  
  
    .. _Switches_for_gnattest_in_test_execution_mode:
  
!   Switches for *gnattest* in test execution mode
!   ----------------------------------------------
  
  
      .. index:: --passed-tests (gnattest)
  
!   :samp:`--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)
  
!   :samp:`--queues={n}`, :samp:`-j{n}`
!     Runs `n` tests in parallel (default is 1).
  
  
    .. _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``
--- 4705,4745 ----
  
      .. 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).
  
  
    .. _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``
*************** Alternatively, you may run the script us
*** 4584,4590 ****
         ``--additional-tests`` switch.
  
    * ``Skeletons_Default``
!        is used to specify the default behavior of test skeletons, otherwise
         specified by ``--skeleton-default`` option. The value of this attribute
         should be either ``pass`` or ``fail``.
  
--- 4763,4769 ----
         ``--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``.
  
*************** Alternatively, you may run the script us
*** 4598,4605 ****
         ``--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:
--- 4777,4784 ----
         ``--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:
*************** Alternatively, you may run the script us
*** 4607,4620 ****
    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*:
  
      ::
  
--- 4786,4799 ----
    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``:
  
      ::
  
*************** Alternatively, you may run the script us
*** 4625,4631 ****
      ::
  
         $ cd obj/driver
!        $ gnatmake -Ptest_driver
         $ test_runner
  
    One failed test with the diagnosis "test not implemented" is reported.
--- 4804,4810 ----
      ::
  
         $ cd obj/driver
!        $ gprbuild -Ptest_driver
         $ test_runner
  
    One failed test with the diagnosis "test not implemented" is reported.
*************** Alternatively, you may run the script us
*** 4644,4656 ****
    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 ``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:
  
      ::
  
--- 4823,4835 ----
    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:
  
      ::
  
*************** Alternatively, you may run the script us
*** 4666,4678 ****
    ---------------------------------------------------
  
    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:
--- 4845,4857 ----
    ---------------------------------------------------
  
    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:
*************** Alternatively, you may run the script us
*** 4680,4686 ****
    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
--- 4859,4865 ----
    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
*************** Alternatively, you may run the script us
*** 4688,4694 ****
  
    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:
  
      ::
  
--- 4867,4873 ----
  
    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:
  
      ::
  
*************** Alternatively, you may run the script us
*** 4698,4704 ****
          $ 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.
--- 4877,4883 ----
          $ 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.
*************** Alternatively, you may run the script us
*** 4715,4725 ****
    actually failing).
  
    The test driver accepts a switch to specify this behavior:
!   :samp:`--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:
  
--- 4894,4904 ----
    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:
  
*************** Alternatively, you may run the script us
*** 4738,4747 ****
    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):
  
--- 4917,4926 ----
    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):
  
*************** Alternatively, you may run the script us
*** 4763,4778 ****
    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.
  
--- 4942,4957 ----
    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.
  
*************** Alternatively, you may run the script us
*** 4808,4816 ****
  
    *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
--- 4987,4995 ----
  
    *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
*************** Alternatively, you may run the script us
*** 4826,4835 ****
    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:
  
      ::
--- 5005,5014 ----
    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:
  
      ::
*************** Alternatively, you may run the script us
*** 4839,4845 ****
          $ 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
--- 5018,5024 ----
          $ 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
*************** Alternatively, you may run the script us
*** 4852,4864 ****
    Testing with Contracts
    ----------------------
  
!   *gnattest* supports pragmas *Precondition*, *Postcondition*, 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:
  
--- 5031,5043 ----
    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:
  
*************** Alternatively, you may run the script us
*** 4901,4915 ****
    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.
  
      ::
--- 5080,5094 ----
    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.
  
      ::
*************** Alternatively, you may run the script us
*** 4941,4947 ****
    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
--- 5120,5126 ----
    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
*************** Alternatively, you may run the script us
*** 4950,4956 ****
    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
--- 5129,5135 ----
    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
*************** Alternatively, you may run the script us
*** 4972,4978 ****
  
    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
--- 5151,5157 ----
  
    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
*************** Alternatively, you may run the script us
*** 4995,5013 ****
    .. 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.
  
  
    .. _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.
--- 5174,5215 ----
    .. 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.
*************** Alternatively, you may run the script us
*** 5028,5041 ****
    * 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
  
     .. _Using_Project_Files_with_GNAT_Tools:
--- 5230,5383 ----
    * 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``
+   =======================================================================
+ 
+   .. index:: ! gnatsymbolize
+ 
+   ``gnatsymbolize`` is a program which translates addresses into
+   their corresponding filename, line number, and function names.
+ 
+   Running ``gnatsymbolize``
+   -------------------------
+ 
+   ::
+ 
+        $ gnatsymbolize [ switches ] filename [ addresses ]
+ 
+   For instance, consider the following Ada program:
+ 
+      .. code-block:: ada
+ 
+         package Pck is
+            Global_Val : Integer := 0;
+            procedure Call_Me_First;
+         end Pck;
+ 
+         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);
+               TB_len : Natural;
+            begin
+               Global_Val := Global_Val + 1;
+ 
+               Call_Chain (TB, TB_Len);
+               for K in 1 .. TB_Len loop
+                  Put_Line (GNAT.Debug_Utilities.Image_C (TB (K)));
+               end loop;
+            end Call_Me_Third;
+ 
+            procedure Call_Me_Second is
+            begin
+               Call_Me_Third;
+            end Call_Me_Second;
+ 
+            procedure Call_Me_First is
+            begin
+               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``
+   ------------------------------
+ 
+   ``gnatsymbolize`` recognizes the following switches:
+ 
+   .. index:: --help (gnatsymbolize)
+ 
+   :switch:`--help`
+     Display the program's usage, and then exit, disregarding all other
+     options.
+ 
+   :switch:`--cache`
+     Read the symbolic information from the executable and cache them
+     in memory in order to accelerate the translation of each address
+     into a symbolic location.
+ 
+     Depending on the size of the executable and the number of addresses
+     to translate, this may not always make ``gnatsymbolize`` faster
+     overall.
+ 
+   :switch:`--dump`
+     If :switch:`--cache` is used, dump the contents of the cache on
+     Standard Output. Has no effect otherwise.
+ 
+   :switch:`--count={N}`
+     If specified, compute the symbolic traceback ``N`` times in a row.
+     This option is mostly useful for measuring the performance of
+     ``gnatsymbolize``, particularly in the case where the cache is
+     being used.
+ 
+   Requirements for Correct Operation
+   ----------------------------------
+ 
+   The translation is performed by reading the DWARF debugging
+   information produced by the compiler for each unit. All units
+   for which the translation is to be done must therefore be compiled
+   such that DWARF debugging information is produced. In most cases,
+   this is done by simply compiling with ``-g``.
+ 
+   This program provides a functionality similar to ``addr2line``.
+   It has fewer options to tailor its output, but has been designed
+   to require fewer of the DWARF sections to be present in the
+   executable. In particular, the following sections can be
+   stripped from the executable without impact to ``gnatsymbolize``'s
+   functionality:
+ 
+     * ``.debug_str``
+     * ``.debug_ranges``
+ 
+ 
  .. only:: PRO or GPL
  
     .. _Using_Project_Files_with_GNAT_Tools:
*************** Alternatively, you may run the script us
*** 5062,5073 ****
  
     The following switches are used by the project-aware GNAT tools:
  
!    :samp:`-P{project_file}`
        Indicates the name of the project file whose source files are to
        be processed. The exact set of sources depends on other options
        specified, see below.
  
!    :samp:`-U`
        If a project file is supplied, say for project ``proj``,
        but no sources are specified for ``proj`` (either by a
        project attribute or through a tool option that provides a list
--- 5404,5415 ----
  
     The following switches are used by the project-aware GNAT tools:
  
!    :switch:`-P{project_file}`
        Indicates the name of the project file whose source files are to
        be processed. The exact set of sources depends on other options
        specified, see below.
  
!    :switch:`-U`
        If a project file is supplied, say for project ``proj``,
        but no sources are specified for ``proj`` (either by a
        project attribute or through a tool option that provides a list
*************** Alternatively, you may run the script us
*** 5075,5105 ****
        from projects imported either directly or indirectly by ``proj``.
        Otherwise this option has no effect.
  
!    :samp:`-U {main_unit}`
!       Similar to :samp:`-U`, but if no sources are specified then
        process only those source files for units in the closure of
!       `main_unit`.
  
!    :samp:`-X{name}={val}`
        Indicates that the external variable ``name`` in the project has the
        value ``val``. Has no effect if no project has been specified.
  
!    :samp:`--subdirs={dir}`
!       Use the `dir` subdirectory of the project's object directory (or the `dir`
        subdirectory of the project file directory if the project does not specify
        an object directory) for tool output files. Has no effect if no project
!       has been specified or if :samp:`--no_objects_dir` is specified.
  
!    :samp:`--no_objects_dir`
        Place all the result files into the current directory (i.e., the directory
        from which the tool invocation command is issued) instead of the project's
        object directory. Has no effect if no project has been specified.
  
!    :samp:`-eL`
        Follow all symbolic links when processing project files.
  
!    If a project file is specified and there is neither a :samp:`-U` option,
!    nor a :samp:`-U {main_unit}` option, nor some other explicit option to
     specify the source files, then the sources to be processed are the
     immediate sources of the specified project (i.e., the source files directly
     defined by that project, either implicitly by residing in the project
--- 5417,5449 ----
        from projects imported either directly or indirectly by ``proj``.
        Otherwise this option has no effect.
  
!    :switch:`-U {source_file}`
!       Similar to :switch:`-U`, but if no sources are specified then
        process only those source files for units in the closure of
!       the Ada source contained in ``source_file``. Note that this option
!       expects the source file name but not the Ada unit name as its
!       parameter.
  
!    :switch:`-X{name}={val}`
        Indicates that the external variable ``name`` in the project has the
        value ``val``. Has no effect if no project has been specified.
  
!    :switch:`--subdirs={dir}`
!       Use the ``dir`` subdirectory of the project's object directory (or the ``dir``
        subdirectory of the project file directory if the project does not specify
        an object directory) for tool output files. Has no effect if no project
!       has been specified or if :switch:`--no_objects_dir` is specified.
  
!    :switch:`--no_objects_dir`
        Place all the result files into the current directory (i.e., the directory
        from which the tool invocation command is issued) instead of the project's
        object directory. Has no effect if no project has been specified.
  
!    :switch:`-eL`
        Follow all symbolic links when processing project files.
  
!    If a project file is specified and there is neither a :switch:`-U` option,
!    nor a :switch:`-U {main_unit}` option, nor some other explicit option to
     specify the source files, then the sources to be processed are the
     immediate sources of the specified project (i.e., the source files directly
     defined by that project, either implicitly by residing in the project
diff -Nrcpad gcc-7.3.0/gcc/ada/doc/gnat_ugn/inline_assembler.rst gcc-8.1.0/gcc/ada/doc/gnat_ugn/inline_assembler.rst
*** gcc-7.3.0/gcc/ada/doc/gnat_ugn/inline_assembler.rst	Fri Jan 13 11:23:42 2017
--- gcc-8.1.0/gcc/ada/doc/gnat_ugn/inline_assembler.rst	Fri Sep  8 12:34:54 2017
***************
*** 1,3 ****
--- 1,5 ----
+ .. role:: switch(samp)
+ 
  .. _Inline_Assembler:
  
  ****************
*************** external routines written in assembly la
*** 13,19 ****
  supported by GNAT.  However, for small sections of code it may be simpler
  or more efficient to include assembly language statements directly
  in your Ada source program, using the facilities of the implementation-defined
! package `System.Machine_Code`, which incorporates the gcc
  Inline Assembler.  The Inline Assembler approach offers a number of advantages,
  including the following:
  
--- 15,21 ----
  supported by GNAT.  However, for small sections of code it may be simpler
  or more efficient to include assembly language statements directly
  in your Ada source program, using the facilities of the implementation-defined
! package ``System.Machine_Code``, which incorporates the gcc
  Inline Assembler.  The Inline Assembler approach offers a number of advantages,
  including the following:
  
*************** Basic Assembler Syntax
*** 38,95 ****
  
  The assembler used by GNAT and gcc is based not on the Intel assembly
  language, but rather on a language that descends from the AT&T Unix
! assembler *as* (and which is often referred to as 'AT&T syntax').
! The following table summarizes the main features of *as* syntax
  and points out the differences from the Intel conventions.
! See the gcc *as* and *gas* (an *as* macro
  pre-processor) documentation for further information.
  
  
  | *Register names*
! |   gcc / *as*: Prefix with '%'; for example `%eax`
! |   Intel: No extra punctuation; for example `eax`
  
  
  | *Immediate operand*
! |   gcc / *as*: Prefix with '$'; for example `$4`
! |   Intel: No extra punctuation; for example `4`
  
  
  | *Address*
! |   gcc / *as*: Prefix with '$'; for example `$loc`
! |   Intel: No extra punctuation; for example `loc`
  
  
  | *Memory contents*
! |   gcc / *as*: No extra punctuation; for example `loc`
! |   Intel: Square brackets; for example `[loc]`
  
  
  | *Register contents*
! |   gcc / *as*: Parentheses; for example `(%eax)`
! |   Intel: Square brackets; for example `[eax]`
  
  
  | *Hexadecimal numbers*
! |   gcc / *as*: Leading '0x' (C language syntax); for example `0xA0`
! |   Intel: Trailing 'h'; for example `A0h`
  
  
  | *Operand size*
! |   gcc / *as*: Explicit in op code; for example `movw` to move a 16-bit word
! |   Intel: Implicit, deduced by assembler; for example `mov`
  
  
  | *Instruction repetition*
! |   gcc / *as*: Split into two lines; for example
! |     `rep`
! |     `stosl`
! |   Intel: Keep on one line; for example `rep stosl`
  
  
  | *Order of operands*
! |   gcc / *as*: Source first; for example `movw $4, %eax`
! |   Intel: Destination first; for example `mov eax, 4`
  
  
  .. _A_Simple_Example_of_Inline_Assembler:
--- 40,97 ----
  
  The assembler used by GNAT and gcc is based not on the Intel assembly
  language, but rather on a language that descends from the AT&T Unix
! assembler ``as`` (and which is often referred to as 'AT&T syntax').
! The following table summarizes the main features of ``as`` syntax
  and points out the differences from the Intel conventions.
! See the gcc ``as`` and ``gas`` (an ``as`` macro
  pre-processor) documentation for further information.
  
  
  | *Register names*
! |   gcc / ``as``: Prefix with '%'; for example ``%eax``
! |   Intel: No extra punctuation; for example ``eax``
  
  
  | *Immediate operand*
! |   gcc / ``as``: Prefix with '$'; for example ``$4``
! |   Intel: No extra punctuation; for example ``4``
  
  
  | *Address*
! |   gcc / ``as``: Prefix with '$'; for example ``$loc``
! |   Intel: No extra punctuation; for example ``loc``
  
  
  | *Memory contents*
! |   gcc / ``as``: No extra punctuation; for example ``loc``
! |   Intel: Square brackets; for example ``[loc]``
  
  
  | *Register contents*
! |   gcc / ``as``: Parentheses; for example ``(%eax)``
! |   Intel: Square brackets; for example ``[eax]``
  
  
  | *Hexadecimal numbers*
! |   gcc / ``as``: Leading '0x' (C language syntax); for example ``0xA0``
! |   Intel: Trailing 'h'; for example ``A0h``
  
  
  | *Operand size*
! |   gcc / ``as``: Explicit in op code; for example ``movw`` to move a 16-bit word
! |   Intel: Implicit, deduced by assembler; for example ``mov``
  
  
  | *Instruction repetition*
! |   gcc / ``as``: Split into two lines; for example
! |     ``rep``
! |     ``stosl``
! |   Intel: Keep on one line; for example ``rep stosl``
  
  
  | *Order of operands*
! |   gcc / ``as``: Source first; for example ``movw $4, %eax``
! |   Intel: Destination first; for example ``mov eax, 4``
  
  
  .. _A_Simple_Example_of_Inline_Assembler:
*************** A Simple Example of Inline Assembler
*** 98,104 ****
  ====================================
  
  The following example will generate a single assembly language statement,
! `nop`, which does nothing.  Despite its lack of run-time effect,
  the example will be useful in illustrating the basics of
  the Inline Assembler facility.
  
--- 100,106 ----
  ====================================
  
  The following example will generate a single assembly language statement,
! ``nop``, which does nothing.  Despite its lack of run-time effect,
  the example will be useful in illustrating the basics of
  the Inline Assembler facility.
  
*************** the Inline Assembler facility.
*** 110,128 ****
          Asm ("nop");
       end Nothing;
  
! `Asm` is a procedure declared in package `System.Machine_Code`;
  here it takes one parameter, a *template string* that must be a static
  expression and that will form the generated instruction.
! `Asm` may be regarded as a compile-time procedure that parses
  the template string and additional parameters (none here),
  from which it generates a sequence of assembly language instructions.
  
  The examples in this chapter will illustrate several of the forms
! for invoking `Asm`; a complete specification of the syntax
! is found in the `Machine_Code_Insertions` section of the
  :title:`GNAT Reference Manual`.
  
! Under the standard GNAT conventions, the `Nothing` procedure
  should be in a file named :file:`nothing.adb`.
  You can build the executable in the usual way:
  
--- 112,130 ----
          Asm ("nop");
       end Nothing;
  
! ``Asm`` is a procedure declared in package ``System.Machine_Code``;
  here it takes one parameter, a *template string* that must be a static
  expression and that will form the generated instruction.
! ``Asm`` may be regarded as a compile-time procedure that parses
  the template string and additional parameters (none here),
  from which it generates a sequence of assembly language instructions.
  
  The examples in this chapter will illustrate several of the forms
! for invoking ``Asm``; a complete specification of the syntax
! is found in the ``Machine_Code_Insertions`` section of the
  :title:`GNAT Reference Manual`.
  
! Under the standard GNAT conventions, the ``Nothing`` procedure
  should be in a file named :file:`nothing.adb`.
  You can build the executable in the usual way:
  
*************** To see this output, invoke the compiler
*** 140,159 ****
  
  where the options are:
  
! * :samp:`-c`
      compile only (no bind or link)
  
! * :samp:`-S`
      generate assembler listing
  
! * :samp:`-fomit-frame-pointer`
      do not set up separate stack frames
  
! * :samp:`-gnatp`
      do not add runtime checks
  
  This gives a human-readable assembler version of the code. The resulting
! file will have the same name as the Ada source file, but with a `.s`
  extension. In our example, the file :file:`nothing.s` has the following
  contents:
  
--- 142,161 ----
  
  where the options are:
  
! * :switch:`-c`
      compile only (no bind or link)
  
! * :switch:`-S`
      generate assembler listing
  
! * :switch:`-fomit-frame-pointer`
      do not set up separate stack frames
  
! * :switch:`-gnatp`
      do not add runtime checks
  
  This gives a human-readable assembler version of the code. The resulting
! file will have the same name as the Ada source file, but with a ``.s``
  extension. In our example, the file :file:`nothing.s` has the following
  contents:
  
*************** contents:
*** 175,181 ****
          ret
  
  The assembly code you included is clearly indicated by
! the compiler, between the `#APP` and `#NO_APP`
  delimiters. The character before the 'APP' and 'NOAPP'
  can differ on different targets. For example, GNU/Linux uses '#APP' while
  on NT you will see '/APP'.
--- 177,183 ----
          ret
  
  The assembly code you included is clearly indicated by
! the compiler, between the ``#APP`` and ``#NO_APP``
  delimiters. The character before the 'APP' and 'NOAPP'
  can differ on different targets. For example, GNU/Linux uses '#APP' while
  on NT you will see '/APP'.
*************** wrong size modifier, or using a wrong op
*** 185,191 ****
  will report this error in a temporary file, which will be deleted when
  the compilation is finished.  Generating an assembler file will help
  in such cases, since you can assemble this file separately using the
! *as* assembler that comes with gcc.
  
  Assembling the file using the command
  
--- 187,193 ----
  will report this error in a temporary file, which will be deleted when
  the compilation is finished.  Generating an assembler file will help
  in such cases, since you can assemble this file separately using the
! ``as`` assembler that comes with gcc.
  
  Assembling the file using the command
  
*************** Assembling the file using the command
*** 195,201 ****
  
  will give you error messages whose lines correspond to the assembler
  input file, so you can easily find and correct any mistakes you made.
! If there are no errors, *as* will generate an object file
  :file:`nothing.out`.
  
  
--- 197,203 ----
  
  will give you error messages whose lines correspond to the assembler
  input file, so you can easily find and correct any mistakes you made.
! If there are no errors, ``as`` will generate an object file
  :file:`nothing.out`.
  
  
*************** actually do.  This is a useful conventio
*** 261,272 ****
  When writing Inline Assembler instructions, you need to precede each register
  and variable name with a percent sign.  Since the assembler already requires
  a percent sign at the beginning of a register name, you need two consecutive
! percent signs for such names in the Asm template string, thus `%%eax`.
  In the generated assembly code, one of the percent signs will be stripped off.
  
! Names such as `%0`, `%1`, `%2`, etc., denote input or output
! variables: operands you later define using `Input` or `Output`
! parameters to `Asm`.
  An output variable is illustrated in
  the third statement in the Asm template string:
  
--- 263,274 ----
  When writing Inline Assembler instructions, you need to precede each register
  and variable name with a percent sign.  Since the assembler already requires
  a percent sign at the beginning of a register name, you need two consecutive
! percent signs for such names in the Asm template string, thus ``%%eax``.
  In the generated assembly code, one of the percent signs will be stripped off.
  
! Names such as ``%0``, ``%1``, ``%2``, etc., denote input or output
! variables: operands you later define using ``Input`` or ``Output``
! parameters to ``Asm``.
  An output variable is illustrated in
  the third statement in the Asm template string:
  
*************** the third statement in the Asm template
*** 275,295 ****
       movl %%eax, %0
  
  The intent is to store the contents of the eax register in a variable that can
! be accessed in Ada.  Simply writing `movl %%eax, Flags` would not
  necessarily work, since the compiler might optimize by using a register
! to hold Flags, and the expansion of the `movl` instruction would not be
  aware of this optimization.  The solution is not to store the result directly
  but rather to advise the compiler to choose the correct operand form;
! that is the purpose of the `%0` output variable.
  
! Information about the output variable is supplied in the `Outputs`
! parameter to `Asm`:
  
    .. code-block:: ada
  
       Outputs => Unsigned_32'Asm_Output ("=g", Flags));
  
! The output is defined by the `Asm_Output` attribute of the target type;
  the general format is
  
    .. code-block:: ada
--- 277,297 ----
       movl %%eax, %0
  
  The intent is to store the contents of the eax register in a variable that can
! be accessed in Ada.  Simply writing ``movl %%eax, Flags`` would not
  necessarily work, since the compiler might optimize by using a register
! to hold Flags, and the expansion of the ``movl`` instruction would not be
  aware of this optimization.  The solution is not to store the result directly
  but rather to advise the compiler to choose the correct operand form;
! that is the purpose of the ``%0`` output variable.
  
! Information about the output variable is supplied in the ``Outputs``
! parameter to ``Asm``:
  
    .. code-block:: ada
  
       Outputs => Unsigned_32'Asm_Output ("=g", Flags));
  
! The output is defined by the ``Asm_Output`` attribute of the target type;
  the general format is
  
    .. code-block:: ada
*************** to store/access the associated variable.
*** 303,323 ****
  
       Unsigned_32'Asm_Output ("=m", Flags);
  
! the `"m"` (memory) constraint tells the compiler that the variable
! `Flags` should be stored in a memory variable, thus preventing
  the optimizer from keeping it in a register.  In contrast,
  
    .. code-block:: ada
  
       Unsigned_32'Asm_Output ("=r", Flags);
  
! uses the `"r"` (register) constraint, telling the compiler to
  store the variable in a register.
  
  If the constraint is preceded by the equal character '=', it tells
  the compiler that the variable will be used to store data into it.
  
! In the `Get_Flags` example, we used the `"g"` (global) constraint,
  allowing the optimizer to choose whatever it deems best.
  
  There are a fairly large number of constraints, but the ones that are
--- 305,325 ----
  
       Unsigned_32'Asm_Output ("=m", Flags);
  
! the ``"m"`` (memory) constraint tells the compiler that the variable
! ``Flags`` should be stored in a memory variable, thus preventing
  the optimizer from keeping it in a register.  In contrast,
  
    .. code-block:: ada
  
       Unsigned_32'Asm_Output ("=r", Flags);
  
! uses the ``"r"`` (register) constraint, telling the compiler to
  store the variable in a register.
  
  If the constraint is preceded by the equal character '=', it tells
  the compiler that the variable will be used to store data into it.
  
! In the ``Get_Flags`` example, we used the ``"g"`` (global) constraint,
  allowing the optimizer to choose whatever it deems best.
  
  There are a fairly large number of constraints, but the ones that are
*************** most useful (for the Intel x86 processor
*** 338,344 ****
   *q*    use one of eax, ebx, ecx, edx, esi or edi
   ====== ==========================================
  
! The full set of constraints is described in the gcc and *as*
  documentation; note that it is possible to combine certain constraints
  in one constraint string.
  
--- 340,346 ----
   *q*    use one of eax, ebx, ecx, edx, esi or edi
   ====== ==========================================
  
! The full set of constraints is described in the gcc and ``as``
  documentation; note that it is possible to combine certain constraints
  in one constraint string.
  
*************** integer.  Thus in
*** 354,369 ****
            Outputs => Unsigned_32'Asm_Output ("=g", Flags));
  
  
! `%0` will be replaced in the expanded code by the appropriate operand,
  whatever
! the compiler decided for the `Flags` variable.
  
  In general, you may have any number of output variables:
  
! * Count the operands starting at 0; thus `%0`, `%1`, etc.
  
! * Specify the `Outputs` parameter as a parenthesized comma-separated list
!   of `Asm_Output` attributes
  
  For example:
  
--- 356,371 ----
            Outputs => Unsigned_32'Asm_Output ("=g", Flags));
  
  
! ``%0`` will be replaced in the expanded code by the appropriate operand,
  whatever
! the compiler decided for the ``Flags`` variable.
  
  In general, you may have any number of output variables:
  
! * Count the operands starting at 0; thus ``%0``, ``%1``, etc.
  
! * Specify the ``Outputs`` parameter as a parenthesized comma-separated list
!   of ``Asm_Output`` attributes
  
  For example:
  
*************** For example:
*** 376,388 ****
                        Unsigned_32'Asm_Output ("=g", Var_B),   --  %1 = Var_B
                        Unsigned_32'Asm_Output ("=g", Var_C))); --  %2 = Var_C
  
! where `Var_A`, `Var_B`, and `Var_C` are variables
  in the Ada program.
  
! As a variation on the `Get_Flags` example, we can use the constraints
! string to direct the compiler to store the eax register into the `Flags`
  variable, instead of including the store instruction explicitly in the
! `Asm` template string:
  
    .. code-block:: ada
  
--- 378,390 ----
                        Unsigned_32'Asm_Output ("=g", Var_B),   --  %1 = Var_B
                        Unsigned_32'Asm_Output ("=g", Var_C))); --  %2 = Var_C
  
! where ``Var_A``, ``Var_B``, and ``Var_C`` are variables
  in the Ada program.
  
! As a variation on the ``Get_Flags`` example, we can use the constraints
! string to direct the compiler to store the eax register into the ``Flags``
  variable, instead of including the store instruction explicitly in the
! ``Asm`` template string:
  
    .. code-block:: ada
  
*************** variable, instead of including the store
*** 399,405 ****
          Put_Line ("Flags register:" & Flags'Img);
       end Get_Flags_2;
  
! The `"a"` constraint tells the compiler that the `Flags`
  variable will come from the eax register. Here is the resulting code:
  
    ::
--- 401,407 ----
          Put_Line ("Flags register:" & Flags'Img);
       end Get_Flags_2;
  
! The ``"a"`` constraint tells the compiler that the ``Flags``
  variable will come from the eax register. Here is the resulting code:
  
    ::
*************** The program simply increments its input
*** 466,478 ****
         Put_Line ("Value after is" & Value'Img);
       end Increment;
  
! The `Outputs` parameter to `Asm` specifies
  that the result will be in the eax register and that it is to be stored
! in the `Result` variable.
  
! The `Inputs` parameter looks much like the `Outputs` parameter,
! but with an `Asm_Input` attribute.
! The `"="` constraint, indicating an output value, is not present.
  
  You can have multiple input variables, in the same way that you can have more
  than one output variable.
--- 468,480 ----
         Put_Line ("Value after is" & Value'Img);
       end Increment;
  
! The ``Outputs`` parameter to ``Asm`` specifies
  that the result will be in the eax register and that it is to be stored
! in the ``Result`` variable.
  
! The ``Inputs`` parameter looks much like the ``Outputs`` parameter,
! but with an ``Asm_Input`` attribute.
! The ``"="`` constraint, indicating an output value, is not present.
  
  You can have multiple input variables, in the same way that you can have more
  than one output variable.
*************** than one output variable.
*** 480,497 ****
  The parameter count (%0, %1) etc, still starts at the first output statement,
  and continues with the input statements.
  
! Just as the `Outputs` parameter causes the register to be stored into the
  target variable after execution of the assembler statements, so does the
! `Inputs` parameter cause its variable to be loaded into the register
  before execution of the assembler statements.
  
! Thus the effect of the `Asm` invocation is:
  
! * load the 32-bit value of `Value` into eax
! * execute the `incl %eax` instruction
! * store the contents of eax into the `Result` variable
  
! The resulting assembler file (with *-O2* optimization) contains:
  
    ::
  
--- 482,499 ----
  The parameter count (%0, %1) etc, still starts at the first output statement,
  and continues with the input statements.
  
! Just as the ``Outputs`` parameter causes the register to be stored into the
  target variable after execution of the assembler statements, so does the
! ``Inputs`` parameter cause its variable to be loaded into the register
  before execution of the assembler statements.
  
! Thus the effect of the ``Asm`` invocation is:
  
! * load the 32-bit value of ``Value`` into eax
! * execute the ``incl %eax`` instruction
! * store the contents of eax into the ``Result`` variable
  
! The resulting assembler file (with :switch:`-O2` optimization) contains:
  
    ::
  
*************** The resulting assembler file (with *-O2*
*** 512,521 ****
  Inlining Inline Assembler Code
  ==============================
  
! For a short subprogram such as the `Incr` function in the previous
  section, the overhead of the call and return (creating / deleting the stack
  frame) can be significant, compared to the amount of code in the subprogram
! body.  A solution is to apply Ada's `Inline` pragma to the subprogram,
  which directs the compiler to expand invocations of the subprogram at the
  point(s) of call, instead of setting up a stack frame for out-of-line calls.
  Here is the resulting program:
--- 514,523 ----
  Inlining Inline Assembler Code
  ==============================
  
! For a short subprogram such as the ``Incr`` function in the previous
  section, the overhead of the call and return (creating / deleting the stack
  frame) can be significant, compared to the amount of code in the subprogram
! body.  A solution is to apply Ada's ``Inline`` pragma to the subprogram,
  which directs the compiler to expand invocations of the subprogram at the
  point(s) of call, instead of setting up a stack frame for out-of-line calls.
  Here is the resulting program:
*************** Here is the resulting program:
*** 546,556 ****
          Put_Line ("Value after is" & Value'Img);
       end Increment_2;
  
! Compile the program with both optimization (*-O2*) and inlining
! (*-gnatn*) enabled.
  
! The `Incr` function is still compiled as usual, but at the
! point in `Increment` where our function used to be called:
  
  
    ::
--- 548,558 ----
          Put_Line ("Value after is" & Value'Img);
       end Increment_2;
  
! Compile the program with both optimization (:switch:`-O2`) and inlining
! (:switch:`-gnatn`) enabled.
  
! The ``Incr`` function is still compiled as usual, but at the
! point in ``Increment`` where our function used to be called:
  
  
    ::
*************** the code for the function body directly
*** 572,602 ****
  thus saving the overhead of stack frame setup and an out-of-line call.
  
  
! .. _Other_`Asm`_Functionality:
  
! Other `Asm` Functionality
! =========================
  
! This section describes two important parameters to the `Asm`
! procedure: `Clobber`, which identifies register usage;
! and `Volatile`, which inhibits unwanted optimizations.
  
! .. _The_`Clobber`_Parameter:
  
! The `Clobber` Parameter
! -----------------------
  
  One of the dangers of intermixing assembly language and a compiled language
  such as Ada is that the compiler needs to be aware of which registers are
  being used by the assembly code.  In some cases, such as the earlier examples,
  the constraint string is sufficient to indicate register usage (e.g.,
! `"a"` for
  the eax register).  But more generally, the compiler needs an explicit
  identification of the registers that are used by the Inline Assembly
  statements.
  
  Using a register that the compiler doesn't know about
! could be a side effect of an instruction (like `mull`
  storing its result in both eax and edx).
  It can also arise from explicit register usage in your
  assembly code; for example:
--- 574,604 ----
  thus saving the overhead of stack frame setup and an out-of-line call.
  
  
! .. _Other_Asm_Functionality:
  
! Other ``Asm`` Functionality
! ===========================
  
! This section describes two important parameters to the ``Asm``
! procedure: ``Clobber``, which identifies register usage;
! and ``Volatile``, which inhibits unwanted optimizations.
  
! .. _The_Clobber_Parameter:
  
! The ``Clobber`` Parameter
! -------------------------
  
  One of the dangers of intermixing assembly language and a compiled language
  such as Ada is that the compiler needs to be aware of which registers are
  being used by the assembly code.  In some cases, such as the earlier examples,
  the constraint string is sufficient to indicate register usage (e.g.,
! ``"a"`` for
  the eax register).  But more generally, the compiler needs an explicit
  identification of the registers that are used by the Inline Assembly
  statements.
  
  Using a register that the compiler doesn't know about
! could be a side effect of an instruction (like ``mull``
  storing its result in both eax and edx).
  It can also arise from explicit register usage in your
  assembly code; for example:
*************** assembly code; for example:
*** 608,617 ****
            Outputs => Unsigned_32'Asm_Output ("=g", Var_Out),
            Inputs  => Unsigned_32'Asm_Input  ("g", Var_In));
  
! where the compiler (since it does not analyze the `Asm` template string)
  does not know you are using the ebx register.
  
! In such cases you need to supply the `Clobber` parameter to `Asm`,
  to identify the registers that will be used by your assembly code:
  
  
--- 610,619 ----
            Outputs => Unsigned_32'Asm_Output ("=g", Var_Out),
            Inputs  => Unsigned_32'Asm_Input  ("g", Var_In));
  
! where the compiler (since it does not analyze the ``Asm`` template string)
  does not know you are using the ebx register.
  
! In such cases you need to supply the ``Clobber`` parameter to ``Asm``,
  to identify the registers that will be used by your assembly code:
  
  
*************** to identify the registers that will be u
*** 626,653 ****
  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., `"eax, ebx"`
  
! The `Clobber` parameter has several additional uses:
  
! * Use 'register' name `cc` to indicate that flags might have changed
! * Use 'register' name `memory` if you changed a memory location
  
  
! .. _The_`Volatile`_Parameter:
  
! The `Volatile` Parameter
! ------------------------
  
  .. index:: Volatile parameter
  
  Compiler optimizations in the presence of Inline Assembler may sometimes have
! unwanted effects.  For example, when an `Asm` invocation with an input
  variable is inside a loop, the compiler might move the loading of the input
  variable outside the loop, regarding it as a one-time initialization.
  
  If this effect is not desired, you can disable such optimizations by setting
! the `Volatile` parameter to `True`; for example:
  
    .. code-block:: ada
  
--- 628,655 ----
  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., ``"eax, ebx"``
  
! The ``Clobber`` parameter has several additional uses:
  
! * Use 'register' name ``cc`` to indicate that flags might have changed
! * Use 'register' name ``memory`` if you changed a memory location
  
  
! .. _The_Volatile_Parameter:
  
! The ``Volatile`` Parameter
! --------------------------
  
  .. index:: Volatile parameter
  
  Compiler optimizations in the presence of Inline Assembler may sometimes have
! unwanted effects.  For example, when an ``Asm`` invocation with an input
  variable is inside a loop, the compiler might move the loading of the input
  variable outside the loop, regarding it as a one-time initialization.
  
  If this effect is not desired, you can disable such optimizations by setting
! the ``Volatile`` parameter to ``True``; for example:
  
    .. code-block:: ada
  
*************** the `Volatile` parameter to `True`; for
*** 658,668 ****
            Clobber  => "ebx",
            Volatile => True);
  
! By default, `Volatile` is set to `False` unless there is no
! `Outputs` parameter.
  
! Although setting `Volatile` to `True` prevents unwanted
  optimizations, it will also disable other optimizations that might be
! important for efficiency. In general, you should set `Volatile`
! to `True` only if the compiler's optimizations have created
  problems.
--- 660,670 ----
            Clobber  => "ebx",
            Volatile => True);
  
! By default, ``Volatile`` is set to ``False`` unless there is no
! ``Outputs`` parameter.
  
! Although setting ``Volatile`` to ``True`` prevents unwanted
  optimizations, it will also disable other optimizations that might be
! important for efficiency. In general, you should set ``Volatile``
! to ``True`` only if the compiler's optimizations have created
  problems.
diff -Nrcpad gcc-7.3.0/gcc/ada/doc/gnat_ugn/platform_specific_information.rst gcc-8.1.0/gcc/ada/doc/gnat_ugn/platform_specific_information.rst
*** gcc-7.3.0/gcc/ada/doc/gnat_ugn/platform_specific_information.rst	Fri Jan 13 11:23:42 2017
--- gcc-8.1.0/gcc/ada/doc/gnat_ugn/platform_specific_information.rst	Tue Dec  5 12:12:22 2017
***************
*** 1,3 ****
--- 1,5 ----
+ .. role:: switch(samp)
+ 
  .. -- Non-breaking space in running text
     -- E.g. Ada |nbsp| 95
  
*************** Run-Time Libraries
*** 24,37 ****
  .. index:: Run-time libraries (platform-specific information)
  
  The GNAT run-time implementation may vary with respect to both the
! underlying threads library and the exception handling scheme.
! For threads support, one or more of the following are supplied:
! 
! * **native threads library**, a binding to the thread package from
!   the underlying operating system
! 
! * **pthreads library** (Sparc Solaris only), a binding to the Solaris
!   POSIX thread package
  
  For exception handling, either or both of two models are supplied:
  
--- 26,34 ----
  .. index:: Run-time libraries (platform-specific information)
  
  The GNAT run-time implementation may vary with respect to both the
! underlying threads library and the exception-handling scheme.
! For threads support, the default run-time will bind to the thread
! package of the underlying operating system.
  
  For exception handling, either or both of two models are supplied:
  
*************** Summary of Run-Time Configurations
*** 70,114 ****
  +-----------------+--------------+-------------------------+------------+
  | Platform        | Run-Time     | Tasking                 | Exceptions |
  +=================+==============+=========================+============+
! | ppc-aix         | rts-native   | native AIX threads      | ZCX        |
! |                 | (default)    |                         |            |
! |                 +--------------+-------------------------+------------+
! |                 | rts-sjlj     | native AIX threads      | SJLJ       |
! +-----------------+--------------+-------------------------+------------+
! | sparc-solaris   | rts-native   | native Solaris          | ZCX        |
! |                 | (default)    | threads library         |            |
! |                 +--------------+-------------------------+------------+
! |                 | rts-pthread  | pthread library         | ZCX        |
! |                 +--------------+-------------------------+------------+
! |                 | rts-sjlj     | native Solaris          | SJLJ       |
! |                 |              | threads library         |            |
! +-----------------+--------------+-------------------------+------------+
! | sparc64-solaris | rts-native   | native Solaris          | ZCX        |
! |                 | (default)    | threads library         |            |
! +-----------------+--------------+-------------------------+------------+
! | x86-linux       | rts-native   | pthread library         | ZCX        |
  |                 | (default)    |                         |            |
  |                 +--------------+-------------------------+------------+
  |                 | rts-sjlj     | pthread library         | SJLJ       |
  +-----------------+--------------+-------------------------+------------+
! | x86-lynx        | rts-native   | native LynxOS threads   | SJLJ       |
! |                 | (default)    |                         |            |
! +-----------------+--------------+-------------------------+------------+
! | x86-solaris     | rts-native   | native Solaris          | ZCX        |
! |                 | (default)    | threads library         |            |
! |                 +--------------+-------------------------+------------+
! |                 | rts-sjlj     | native Solaris          | SJLJ       |
! |                 |              | threads library         |            |
! +-----------------+--------------+-------------------------+------------+
! | x86-windows     | rts-native   | native Win32 threads    | ZCX        |
  |                 | (default)    |                         |            |
  |                 +--------------+-------------------------+------------+
  |                 | rts-sjlj     | native Win32 threads    | SJLJ       |
  +-----------------+--------------+-------------------------+------------+
! | x86_64-linux    | rts-native   | pthread library         | ZCX        |
! |                 | (default)    |                         |            |
! |                 +--------------+-------------------------+------------+
! |                 | rts-sjlj     | pthread library         | SJLJ       |
  +-----------------+--------------+-------------------------+------------+
  
  
--- 67,83 ----
  +-----------------+--------------+-------------------------+------------+
  | Platform        | Run-Time     | Tasking                 | Exceptions |
  +=================+==============+=========================+============+
! | GNU/Linux       | rts-native   | pthread library         | ZCX        |
  |                 | (default)    |                         |            |
  |                 +--------------+-------------------------+------------+
  |                 | rts-sjlj     | pthread library         | SJLJ       |
  +-----------------+--------------+-------------------------+------------+
! | Windows         | rts-native   | native Win32 threads    | ZCX        |
  |                 | (default)    |                         |            |
  |                 +--------------+-------------------------+------------+
  |                 | rts-sjlj     | native Win32 threads    | SJLJ       |
  +-----------------+--------------+-------------------------+------------+
! | Mac OS          | rts-native   | pthread library         | ZCX        |
  +-----------------+--------------+-------------------------+------------+
  
  
*************** below explains the differences between t
*** 134,143 ****
  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::
  
!    --
     --  $(target-dir)
     --      |
     --      +--- adainclude----------+
--- 103,112 ----
  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:
  
! .. --
     --  $(target-dir)
     --      |
     --      +--- adainclude----------+
*************** Alternatively, you can specify :file:`rt
*** 199,205 ****
  .. index:: --RTS option
  
  Selecting another run-time library temporarily can be
! achieved by using the *--RTS* switch, e.g., *--RTS=sjlj*
  
  
  .. _Choosing_the_Scheduling_Policy:
--- 168,174 ----
  .. index:: --RTS option
  
  Selecting another run-time library temporarily can be
! achieved by using the :switch:`--RTS` switch, e.g., :switch:`--RTS=sjlj`
  
  
  .. _Choosing_the_Scheduling_Policy:
*************** Choosing the Scheduling Policy
*** 212,330 ****
  ------------------------------
  
  When using a POSIX threads implementation, you have a choice of several
! scheduling policies: `SCHED_FIFO`, `SCHED_RR` and `SCHED_OTHER`.
  
! Typically, the default is `SCHED_OTHER`, while using `SCHED_FIFO`
! or `SCHED_RR` requires special (e.g., root) privileges.
  
  .. index:: pragma Time_Slice
  .. index:: -T0 option
  .. index:: pragma Task_Dispatching_Policy
  
  
! By default, GNAT uses the `SCHED_OTHER` policy. To specify
! `SCHED_FIFO`,
  you can use one of the following:
  
! * `pragma Time_Slice (0.0)`
! * the corresponding binder option *-T0*
! * `pragma Task_Dispatching_Policy (FIFO_Within_Priorities)`
  
  
! To specify `SCHED_RR`,
! you should use `pragma Time_Slice` with a
! value greater than 0.0, or else use the corresponding *-T*
  binder option.
  
  
! .. index:: Solaris Sparc threads libraries
! 
! .. _Solaris-Specific_Considerations:
! 
! Solaris-Specific Considerations
! -------------------------------
! 
! This section addresses some topics related to the various threads libraries
! on Sparc Solaris.
! 
! .. index:: rts-pthread threads library
! 
! .. _Solaris_Threads_Issues:
! 
! Solaris Threads Issues
! ----------------------
  
! GNAT under Solaris/Sparc 32 bits comes with an alternate tasking run-time
! library based on POSIX threads --- *rts-pthread*.
  
! .. index:: PTHREAD_PRIO_INHERIT policy (under rts-pthread)
! .. index:: PTHREAD_PRIO_PROTECT policy (under rts-pthread)
! .. index:: pragma Locking_Policy (under rts-pthread)
! .. index:: Inheritance_Locking (under rts-pthread)
! .. index:: Ceiling_Locking (under rts-pthread)
  
! This run-time library has the advantage of being mostly shared across all
! POSIX-compliant thread implementations, and it also provides under
! Solaris |nbsp| 8 the `PTHREAD_PRIO_INHERIT`
! and `PTHREAD_PRIO_PROTECT`
! semantics that can be selected using the predefined pragma
! `Locking_Policy`
! with respectively
! `Inheritance_Locking` and `Ceiling_Locking` as the policy.
  
! As explained above, the native run-time library is based on the Solaris thread
! library (`libthread`) and is the default library.
  
! .. index:: GNAT_PROCESSOR environment variable (on Sparc Solaris)
  
! When the Solaris threads library is used (this is the default), programs
! compiled with GNAT can automatically take advantage of
! and can thus execute on multiple processors.
! The user can alternatively specify a processor on which the program should run
! to emulate a single-processor system. The multiprocessor / uniprocessor choice
! is made by
! setting the environment variable :envvar:`GNAT_PROCESSOR`
! to one of the following:
  
!   ========================= ===================================================================
!   ``GNAT_PROCESSOR`` Value             Effect
!   ========================= ===================================================================
!   *-2*                      Use the default configuration (run the program on all
!                             available processors) - this is the same as having `GNAT_PROCESSOR`
!                             unset
!   *-1*                      Let the run-time implementation choose one processor and run the
!                             program on that processor
!   *0 .. Last_Proc*          Run the program on the specified processor.
!                             `Last_Proc` is equal to `_SC_NPROCESSORS_CONF - 1`
!                             (where `_SC_NPROCESSORS_CONF` is a system variable).
!   ========================= ===================================================================
  
  
! .. _AIX-Specific_Considerations:
  
! AIX-Specific Considerations
! ---------------------------
  
! .. index:: AIX resolver library
  
! On AIX, the resolver library initializes some internal structure on
! the first call to `get*by*` functions, which are used to implement
! `GNAT.Sockets.Get_Host_By_Name` and
! `GNAT.Sockets.Get_Host_By_Address`.
! If such initialization occurs within an Ada task, and the stack size for
! the task is the default size, a stack overflow may occur.
  
! To avoid this overflow, the user should either ensure that the first call
! to `GNAT.Sockets.Get_Host_By_Name` or
! `GNAT.Sockets.Get_Host_By_Addrss`
! occurs in the environment task, or use `pragma Storage_Size` to
! specify a sufficiently large size for the stack of the task that contains
! this call.
  
  
! .. index:: Windows NT
! .. index:: Windows 95
! .. index:: Windows 98
  
  .. _Microsoft_Windows_Topics:
  
--- 181,255 ----
  ------------------------------
  
  When using a POSIX threads implementation, you have a choice of several
! scheduling policies: ``SCHED_FIFO``, ``SCHED_RR`` and ``SCHED_OTHER``.
  
! Typically, the default is ``SCHED_OTHER``, while using ``SCHED_FIFO``
! or ``SCHED_RR`` requires special (e.g., root) privileges.
  
  .. index:: pragma Time_Slice
  .. index:: -T0 option
  .. index:: pragma Task_Dispatching_Policy
  
  
! By default, GNAT uses the ``SCHED_OTHER`` policy. To specify
! ``SCHED_FIFO``,
  you can use one of the following:
  
! * ``pragma Time_Slice (0.0)``
! * the corresponding binder option :switch:`-T0`
! * ``pragma Task_Dispatching_Policy (FIFO_Within_Priorities)``
  
  
! To specify ``SCHED_RR``,
! you should use ``pragma Time_Slice`` with a
! value greater than 0.0, or else use the corresponding :switch:`-T`
  binder option.
  
  
! To make sure a program is running as root, you can put something like
! this in a library package body in your application:
  
!   .. code-block:: ada
  
!      function geteuid return Integer;
!      pragma Import (C, geteuid, "geteuid");
!      Ignore : constant Boolean :=
!        (if geteuid = 0 then True else raise Program_Error with "must be root");
  
! It gets the effective user id, and if it's not 0 (i.e. root), it raises
! Program_Error.
  
! .. index:: Linux
! .. index:: GNU/Linux
  
! .. _GNU_Linux_Topics:
  
! GNU/Linux Topics
! ================
  
! This section describes topics that are specific to GNU/Linux platforms.
  
+ .. _Required_packages_on_GNU_Linux:
  
! Required Packages on GNU/Linux
! ------------------------------
  
! GNAT requires the C library developer's package to be installed.
! The name of of that package depends on your GNU/Linux distribution:
  
! * RedHat, SUSE: ``glibc-devel``;
! * Debian, Ubuntu: ``libc6-dev`` (normally installed by default).
  
! If using the 32-bit version of GNAT on a 64-bit version of GNU/Linux,
! you'll need the 32-bit version of the glibc and glibc-devel packages:
  
! * RedHat, SUSE: ``glibc.i686``, ``glibc-devel.i686``
! * Debian, Ubuntu: ``libc6:i386``, ``libc6-dev:i386``
  
+ Other GNU/Linux distributions might be choosing a different name
+ for that package.
  
! .. index:: Windows
  
  .. _Microsoft_Windows_Topics:
  
*************** platforms.
*** 345,364 ****
    using the command-line interface.
  
    In order to install one of the GNAT installers from the command
!   line you should pass parameter `/S` (and, optionally,
!   `/D=<directory>`) as command-line arguments.
  
  .. only:: PRO
  
     For example, for an unattended installation of
     GNAT 7.0.2 into the default directory
!    `C:\\GNATPRO\\7.0.2` you would run:
  
       ::
  
          gnatpro-7.0.2-i686-pc-mingw32-bin.exe /S
  
!    To install into a custom directory, say, `C:\\TOOLS\\GNATPRO\\7.0.2`:
  
       ::
  
--- 270,289 ----
    using the command-line interface.
  
    In order to install one of the GNAT installers from the command
!   line you should pass parameter :switch:`/S` (and, optionally,
!   :switch:`/D=<directory>`) as command-line arguments.
  
  .. only:: PRO
  
     For example, for an unattended installation of
     GNAT 7.0.2 into the default directory
!    ``C:\\GNATPRO\\7.0.2`` you would run:
  
       ::
  
          gnatpro-7.0.2-i686-pc-mingw32-bin.exe /S
  
!    To install into a custom directory, say, ``C:\\TOOLS\\GNATPRO\\7.0.2``:
  
       ::
  
*************** platforms.
*** 367,373 ****
  .. only:: GPL
  
     For example, for an unattended installation of
!    GNAT 2012 into `C:\\GNAT\\2012`:
  
       ::
  
--- 292,298 ----
  .. only:: GPL
  
     For example, for an unattended installation of
!    GNAT 2012 into ``C:\\GNAT\\2012``:
  
       ::
  
*************** Using GNAT on Windows
*** 388,395 ****
  ---------------------
  
  One of the strengths of the GNAT technology is that its tool set
! (*gcc*, *gnatbind*, *gnatlink*, *gnatmake*, the
! `gdb` debugger, etc.) is used in the same way regardless of the
  platform.
  
  On Windows this tool set is complemented by a number of Microsoft-specific
--- 313,320 ----
  ---------------------
  
  One of the strengths of the GNAT technology is that its tool set
! (``gcc``, ``gnatbind``, ``gnatlink``, ``gnatmake``, the
! ``gdb`` debugger, etc.) is used in the same way regardless of the
  platform.
  
  On Windows this tool set is complemented by a number of Microsoft-specific
*************** tools that have been provided to facilit
*** 397,403 ****
  when this is required. With these tools:
  
  
! * You can build applications using the `CONSOLE` or `WINDOWS`
    subsystems.
  
  * You can use any Dynamically Linked Library (DLL) in your Ada code (both
--- 322,328 ----
  when this is required. With these tools:
  
  
! * You can build applications using the ``CONSOLE`` or ``WINDOWS``
    subsystems.
  
  * You can use any Dynamically Linked Library (DLL) in your Ada code (both
*************** Other restrictions about specific featur
*** 416,427 ****
  are listed in separate sections below.
  
  
! * It is not possible to use `GetLastError` and `SetLastError`
    when tasking, protected records, or exceptions are used. In these
    cases, in order to implement Ada semantics, the GNAT run-time system
    calls certain Win32 routines that set the last error variable to 0 upon
!   success. It should be possible to use `GetLastError` and
!   `SetLastError` when tasking, protected record, and exception
    features are not used, but it is not guaranteed to work.
  
  * It is not possible to link against Microsoft C++ libraries except for
--- 341,352 ----
  are listed in separate sections below.
  
  
! * It is not possible to use ``GetLastError`` and ``SetLastError``
    when tasking, protected records, or exceptions are used. In these
    cases, in order to implement Ada semantics, the GNAT run-time system
    calls certain Win32 routines that set the last error variable to 0 upon
!   success. It should be possible to use ``GetLastError`` and
!   ``SetLastError`` when tasking, protected record, and exception
    features are not used, but it is not guaranteed to work.
  
  * It is not possible to link against Microsoft C++ libraries except for
*************** Using a network installation of GNAT
*** 452,458 ****
  Make sure the system on which GNAT is installed is accessible from the
  current machine, i.e., the install location is shared over the network.
  Shared resources are accessed on Windows by means of UNC paths, which
! have the format `\\\\server\\sharename\\path`
  
  In order to use such a network installation, simply add the UNC path of the
  :file:`bin` directory of your GNAT installation in front of your PATH. For
--- 377,383 ----
  Make sure the system on which GNAT is installed is accessible from the
  current machine, i.e., the install location is shared over the network.
  Shared resources are accessed on Windows by means of UNC paths, which
! have the format ``\\\\server\\sharename\\path``
  
  In order to use such a network installation, simply add the UNC path of the
  :file:`bin` directory of your GNAT installation in front of your PATH. For
*************** CONSOLE and WINDOWS subsystems
*** 477,488 ****
  .. index:: WINDOWS Subsystem
  .. index:: -mwindows
  
! There are two main subsystems under Windows. The `CONSOLE` subsystem
  (which is the default subsystem) will always create a console when
  launching the application. This is not something desirable when the
  application has a Windows GUI. To get rid of this console the
! application must be using the `WINDOWS` subsystem. To do so
! the *-mwindows* linker option must be specified.
  
     ::
  
--- 402,413 ----
  .. index:: WINDOWS Subsystem
  .. index:: -mwindows
  
! There are two main subsystems under Windows. The ``CONSOLE`` subsystem
  (which is the default subsystem) will always create a console when
  launching the application. This is not something desirable when the
  application has a Windows GUI. To get rid of this console the
! application must be using the ``WINDOWS`` subsystem. To do so
! the :switch:`-mwindows` linker option must be specified.
  
     ::
  
*************** Disabling Command Line Argument Expansio
*** 516,522 ****
  
  .. index:: Command Line Argument Expansion
  
! By default, an executable compiled for the **Windows** platform will do
  the following postprocessing on the arguments passed on the command
  line:
  
--- 441,447 ----
  
  .. index:: Command Line Argument Expansion
  
! By default, an executable compiled for the Windows platform will do
  the following postprocessing on the arguments passed on the command
  line:
  
*************** line:
*** 541,553 ****
  
        Ada.Command_Line.Argument (1) -> "*.txt"
  
! Note that if the program is launched from a shell such as **Cygwin** **Bash**
  then quote removal might be performed by the shell.
  
  In some contexts it might be useful to disable this feature (for example if
  the program performs its own argument expansion). In order to do this, a C
  symbol needs to be defined and set to ``0``. You can do this by
! adding the following code fragment in one of your **Ada** units:
  
  .. code-block:: ada
  
--- 466,478 ----
  
        Ada.Command_Line.Argument (1) -> "*.txt"
  
! Note that if the program is launched from a shell such as Cygwin Bash
  then quote removal might be performed by the shell.
  
  In some contexts it might be useful to disable this feature (for example if
  the program performs its own argument expansion). In order to do this, a C
  symbol needs to be defined and set to ``0``. You can do this by
! adding the following code fragment in one of your Ada units:
  
  .. code-block:: ada
  
*************** application that contains a mix of Ada a
*** 574,580 ****
  Windows C/C++ development environment conditions your overall
  interoperability strategy.
  
! If you use *gcc* or Microsoft C to compile the non-Ada part of
  your application, there are no Windows-specific restrictions that
  affect the overall interoperability with your Ada code. If you do want
  to use the Microsoft tools for your C++ code, you have two choices:
--- 499,505 ----
  Windows C/C++ development environment conditions your overall
  interoperability strategy.
  
! If you use ``gcc`` or Microsoft C to compile the non-Ada part of
  your application, there are no Windows-specific restrictions that
  affect the overall interoperability with your Ada code. If you do want
  to use the Microsoft tools for your C++ code, you have two choices:
*************** This section pertain only to Win32. On W
*** 635,672 ****
  calling convention. All convention specifiers are ignored on this
  platform.
  
! When a subprogram `F` (caller) calls a subprogram `G`
! (callee), there are several ways to push `G`'s parameters on the
  stack and there are several possible scenarios to clean up the stack
! upon `G`'s return. A calling convention is an agreed upon software
! protocol whereby the responsibilities between the caller (`F`) and
! the callee (`G`) are clearly defined. Several calling conventions
  are available for Windows:
  
! * `C` (Microsoft defined)
  
! * `Stdcall` (Microsoft defined)
  
! * `Win32` (GNAT specific)
  
! * `DLL` (GNAT specific)
  
  
  .. _C_Calling_Convention:
  
! `C` Calling Convention
! """"""""""""""""""""""
  
  This is the default calling convention used when interfacing to C/C++
! routines compiled with either *gcc* or Microsoft Visual C++.
  
! In the `C` calling convention subprogram parameters are pushed on the
  stack by the caller from right to left. The caller itself is in charge of
  cleaning up the stack after the call. In addition, the name of a routine
! with `C` calling convention is mangled by adding a leading underscore.
  
  The name to use on the Ada side when importing (or exporting) a routine
! with `C` calling convention is the name of the routine. For
  instance the C function:
  
     ::
--- 560,597 ----
  calling convention. All convention specifiers are ignored on this
  platform.
  
! When a subprogram ``F`` (caller) calls a subprogram ``G``
! (callee), there are several ways to push ``G``\ 's parameters on the
  stack and there are several possible scenarios to clean up the stack
! upon ``G``\ 's return. A calling convention is an agreed upon software
! protocol whereby the responsibilities between the caller (``F``) and
! the callee (``G``) are clearly defined. Several calling conventions
  are available for Windows:
  
! * ``C`` (Microsoft defined)
  
! * ``Stdcall`` (Microsoft defined)
  
! * ``Win32`` (GNAT specific)
  
! * ``DLL`` (GNAT specific)
  
  
  .. _C_Calling_Convention:
  
! ``C`` Calling Convention
! """"""""""""""""""""""""
  
  This is the default calling convention used when interfacing to C/C++
! routines compiled with either ``gcc`` or Microsoft Visual C++.
  
! In the ``C`` calling convention subprogram parameters are pushed on the
  stack by the caller from right to left. The caller itself is in charge of
  cleaning up the stack after the call. In addition, the name of a routine
! with ``C`` calling convention is mangled by adding a leading underscore.
  
  The name to use on the Ada side when importing (or exporting) a routine
! with ``C`` calling convention is the name of the routine. For
  instance the C function:
  
     ::
*************** should be imported from Ada as follows:
*** 680,717 ****
       function Get_Val (V : Interfaces.C.long) return Interfaces.C.int;
       pragma Import (C, Get_Val, External_Name => "get_val");
  
! Note that in this particular case the `External_Name` parameter could
  have been omitted since, when missing, this parameter is taken to be the
! name of the Ada entity in lower case. When the `Link_Name` parameter
  is missing, as in the above example, this parameter is set to be the
! `External_Name` with a leading underscore.
  
! When importing a variable defined in C, you should always use the `C`
  calling convention unless the object containing the variable is part of a
! DLL (in which case you should use the `Stdcall` calling
  convention, :ref:`Stdcall_Calling_Convention`).
  
  
  .. _Stdcall_Calling_Convention:
  
! `Stdcall` Calling Convention
! """"""""""""""""""""""""""""
  
  This convention, which was the calling convention used for Pascal
  programs, is used by Microsoft for all the routines in the Win32 API for
  efficiency reasons. It must be used to import any routine for which this
  convention was specified.
  
! In the `Stdcall` calling convention subprogram parameters are pushed
  on the stack by the caller from right to left. The callee (and not the
  caller) is in charge of cleaning the stack on routine exit. In addition,
! the name of a routine with `Stdcall` calling convention is mangled by
! adding a leading underscore (as for the `C` calling convention) and a
! trailing :samp:`@{nn}`, where `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
! `Stdcall` calling convention is the name of the C routine. The leading
  underscore and trailing :samp:`@{nn}` are added automatically by
  the compiler. For instance the Win32 function:
  
--- 605,642 ----
       function Get_Val (V : Interfaces.C.long) return Interfaces.C.int;
       pragma Import (C, Get_Val, External_Name => "get_val");
  
! Note that in this particular case the ``External_Name`` parameter could
  have been omitted since, when missing, this parameter is taken to be the
! name of the Ada entity in lower case. When the ``Link_Name`` parameter
  is missing, as in the above example, this parameter is set to be the
! ``External_Name`` with a leading underscore.
  
! When importing a variable defined in C, you should always use the ``C``
  calling convention unless the object containing the variable is part of a
! DLL (in which case you should use the ``Stdcall`` calling
  convention, :ref:`Stdcall_Calling_Convention`).
  
  
  .. _Stdcall_Calling_Convention:
  
! ``Stdcall`` Calling Convention
! """"""""""""""""""""""""""""""
  
  This convention, which was the calling convention used for Pascal
  programs, is used by Microsoft for all the routines in the Win32 API for
  efficiency reasons. It must be used to import any routine for which this
  convention was specified.
  
! In the ``Stdcall`` calling convention subprogram parameters are pushed
  on the stack by the caller from right to left. The callee (and not the
  caller) is in charge of cleaning the stack on routine exit. In addition,
! the name of a routine with ``Stdcall`` calling convention is mangled by
! adding a leading underscore (as for the ``C`` calling convention) and a
! trailing :samp:`@{nn}`, where ``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
! ``Stdcall`` calling convention is the name of the C routine. The leading
  underscore and trailing :samp:`@{nn}` are added automatically by
  the compiler. For instance the Win32 function:
  
*************** should be imported from Ada as follows:
*** 727,733 ****
       pragma Import (Stdcall, Get_Val);
       --  On the x86 a long is 4 bytes, so the Link_Name is "_get_val@4"
  
! As for the `C` calling convention, when the `External_Name`
  parameter is missing, it is taken to be the name of the Ada entity in lower
  case. If instead of writing the above import pragma you write:
  
--- 652,658 ----
       pragma Import (Stdcall, Get_Val);
       --  On the x86 a long is 4 bytes, so the Link_Name is "_get_val@4"
  
! As for the ``C`` calling convention, when the ``External_Name``
  parameter is missing, it is taken to be the name of the Ada entity in lower
  case. If instead of writing the above import pragma you write:
  
*************** case. If instead of writing the above im
*** 736,751 ****
       function Get_Val (V : Interfaces.C.long) return Interfaces.C.int;
       pragma Import (Stdcall, Get_Val, External_Name => "retrieve_val");
  
! then the imported routine is `_retrieve_val@4`. However, if instead
! of specifying the `External_Name` parameter you specify the
! `Link_Name` as in the following example:
  
    .. code-block:: ada
  
       function Get_Val (V : Interfaces.C.long) return Interfaces.C.int;
       pragma Import (Stdcall, Get_Val, Link_Name => "retrieve_val");
  
! then the imported routine is `retrieve_val`, that is, there is no
  decoration at all. No leading underscore and no Stdcall suffix
  :samp:`@{nn}`.
  
--- 661,676 ----
       function Get_Val (V : Interfaces.C.long) return Interfaces.C.int;
       pragma Import (Stdcall, Get_Val, External_Name => "retrieve_val");
  
! then the imported routine is ``_retrieve_val@4``. However, if instead
! of specifying the ``External_Name`` parameter you specify the
! ``Link_Name`` as in the following example:
  
    .. code-block:: ada
  
       function Get_Val (V : Interfaces.C.long) return Interfaces.C.int;
       pragma Import (Stdcall, Get_Val, Link_Name => "retrieve_val");
  
! then the imported routine is ``retrieve_val``, that is, there is no
  decoration at all. No leading underscore and no Stdcall suffix
  :samp:`@{nn}`.
  
*************** then, to access this variable from Ada y
*** 769,793 ****
        pragma Import (Stdcall, My_Var);
  
  Note that to ease building cross-platform bindings this convention
! will be handled as a `C` calling convention on non-Windows platforms.
  
  
  .. _Win32_Calling_Convention:
  
! `Win32` Calling Convention
! """"""""""""""""""""""""""
  
  This convention, which is GNAT-specific is fully equivalent to the
! `Stdcall` calling convention described above.
  
  
  .. _DLL_Calling_Convention:
  
! `DLL` Calling Convention
! """"""""""""""""""""""""
  
  This convention, which is GNAT-specific is fully equivalent to the
! `Stdcall` calling convention described above.
  
  
  .. _Introduction_to_Dynamic_Link_Libraries_DLLs:
--- 694,718 ----
        pragma Import (Stdcall, My_Var);
  
  Note that to ease building cross-platform bindings this convention
! will be handled as a ``C`` calling convention on non-Windows platforms.
  
  
  .. _Win32_Calling_Convention:
  
! ``Win32`` Calling Convention
! """"""""""""""""""""""""""""
  
  This convention, which is GNAT-specific is fully equivalent to the
! ``Stdcall`` calling convention described above.
  
  
  .. _DLL_Calling_Convention:
  
! ``DLL`` Calling Convention
! """"""""""""""""""""""""""
  
  This convention, which is GNAT-specific is fully equivalent to the
! ``Stdcall`` calling convention described above.
  
  
  .. _Introduction_to_Dynamic_Link_Libraries_DLLs:
*************** and you run your application, here is wh
*** 838,845 ****
    which is part of your application are initialized with the addresses
    of the routines and variables in :file:`API.dll`.
  
! * If present in :file:`API.dll`, routines `DllMain` or
!   `DllMainCRTStartup` are invoked. These routines typically contain
    the initialization code needed for the well-being of the routines and
    variables exported by the DLL.
  
--- 763,770 ----
    which is part of your application are initialized with the addresses
    of the routines and variables in :file:`API.dll`.
  
! * If present in :file:`API.dll`, routines ``DllMain`` or
!   ``DllMainCRTStartup`` are invoked. These routines typically contain
    the initialization code needed for the well-being of the routines and
    variables exported by the DLL.
  
*************** non-relocatable DLLs overlap and these h
*** 851,857 ****
  application, a conflict will occur and the application will run
  incorrectly. Hence, when possible, it is always preferable to use and
  build relocatable DLLs. Both relocatable and non-relocatable DLLs are
! supported by GNAT. Note that the *-s* linker option (see GNU Linker
  User's Guide) removes the debugging symbols from the DLL but the DLL can
  still be relocated.
  
--- 776,782 ----
  application, a conflict will occur and the application will run
  incorrectly. Hence, when possible, it is always preferable to use and
  build relocatable DLLs. Both relocatable and non-relocatable DLLs are
! supported by GNAT. Note that the :switch:`-s` linker option (see GNU Linker
  User's Guide) removes the debugging symbols from the DLL but the DLL can
  still be relocated.
  
*************** you must have:
*** 884,897 ****
  * The actual DLL, :file:`API.dll`.
  
  Once you have all the above, to compile an Ada application that uses the
! services of :file:`API.dll` and whose main subprogram is `My_Ada_App`,
  you simply issue the command
  
    ::
  
        $ gnatmake my_ada_app -largs -lAPI
  
! The argument *-largs -lAPI* at the end of the *gnatmake* command
  tells the GNAT linker to look for an import library. The linker will
  look for a library name in this specific order:
  
--- 809,822 ----
  * The actual DLL, :file:`API.dll`.
  
  Once you have all the above, to compile an Ada application that uses the
! services of :file:`API.dll` and whose main subprogram is ``My_Ada_App``,
  you simply issue the command
  
    ::
  
        $ gnatmake my_ada_app -largs -lAPI
  
! The argument :switch:`-largs -lAPI` at the end of the ``gnatmake`` command
  tells the GNAT linker to look for an import library. The linker will
  look for a library name in this specific order:
  
*************** following pragma
*** 912,919 ****
  
        pragma Linker_Options ("-lAPI");
  
! you do not have to add *-largs -lAPI* at the end of the
! *gnatmake* command.
  
  If any one of the items above is missing you will have to create it
  yourself. The following sections explain how to do so using as an
--- 837,844 ----
  
        pragma Linker_Options ("-lAPI");
  
! you do not have to add :switch:`-largs -lAPI` at the end of the
! ``gnatmake`` command.
  
  If any one of the items above is missing you will have to create it
  yourself. The following sections explain how to do so using as an
*************** DLL. Otherwise read on.
*** 979,1008 ****
  As previously mentioned, and unlike Unix systems, the list of symbols
  that are exported from a DLL must be provided explicitly in Windows.
  The main goal of a definition file is precisely that: list the symbols
! exported by a DLL. A definition file (usually a file with a `.def`
  suffix) has the following structure:
  
    ::
  
!       [LIBRARY `name`]
!       [DESCRIPTION `string`]
        EXPORTS
!          `symbol1`
!          `symbol2`
           ...
  
! *LIBRARY `name`*
    This section, which is optional, gives the name of the DLL.
  
  
! *DESCRIPTION `string`*
    This section, which is optional, gives a description string that will be
    embedded in the import library.
  
  
  *EXPORTS*
    This section gives the list of exported symbols (procedures, functions or
!   variables). For instance in the case of :file:`API.dll` the `EXPORTS`
    section of :file:`API.def` looks like:
  
    ::
--- 904,933 ----
  As previously mentioned, and unlike Unix systems, the list of symbols
  that are exported from a DLL must be provided explicitly in Windows.
  The main goal of a definition file is precisely that: list the symbols
! exported by a DLL. A definition file (usually a file with a ``.def``
  suffix) has the following structure:
  
    ::
  
!       [LIBRARY ``name``]
!       [DESCRIPTION ``string``]
        EXPORTS
!          ``symbol1``
!          ``symbol2``
           ...
  
! *LIBRARY name*
    This section, which is optional, gives the name of the DLL.
  
  
! *DESCRIPTION string*
    This section, which is optional, gives a description string that will be
    embedded in the import library.
  
  
  *EXPORTS*
    This section gives the list of exported symbols (procedures, functions or
!   variables). For instance in the case of :file:`API.dll` the ``EXPORTS``
    section of :file:`API.def` looks like:
  
    ::
*************** sections are not relevant to the discuss
*** 1025,1045 ****
  
  You can automatically create the definition file :file:`API.def`
  (see :ref:`The Definition File <The_Definition_File>`) from a DLL.
! For that use the `dlltool` program as follows:
  
    ::
  
        $ dlltool API.dll -z API.def --export-all-symbols
  
!   Note that if some routines in the DLL have the `Stdcall` convention
    (:ref:`Windows_Calling_Conventions`) with stripped :samp:`@{nn}`
    suffix then you'll have to edit :file:`api.def` to add it, and specify
!   *-k* to *gnatdll* when creating the import library.
  
    Here are some hints to find the right :samp:`@{nn}` suffix.
  
    - If you have the Microsoft import library (.lib), it is possible to get
!     the right symbols by using Microsoft `dumpbin` tool (see the
      corresponding Microsoft documentation for further details).
  
      ::
--- 950,970 ----
  
  You can automatically create the definition file :file:`API.def`
  (see :ref:`The Definition File <The_Definition_File>`) from a DLL.
! For that use the ``dlltool`` program as follows:
  
    ::
  
        $ dlltool API.dll -z API.def --export-all-symbols
  
!   Note that if some routines in the DLL have the ``Stdcall`` convention
    (:ref:`Windows_Calling_Conventions`) with stripped :samp:`@{nn}`
    suffix then you'll have to edit :file:`api.def` to add it, and specify
!   :switch:`-k` to ``gnatdll`` when creating the import library.
  
    Here are some hints to find the right :samp:`@{nn}` suffix.
  
    - If you have the Microsoft import library (.lib), it is possible to get
!     the right symbols by using Microsoft ``dumpbin`` tool (see the
      corresponding Microsoft documentation for further details).
  
      ::
*************** For that use the `dlltool` program as fo
*** 1056,1077 ****
  .. rubric:: GNAT-Style Import Library
  
  To create a static import library from :file:`API.dll` with the GNAT tools
! you should create the .def file, then use `gnatdll` tool
  (see :ref:`Using_gnatdll`) as follows:
  
    ::
  
        $ gnatdll -e API.def -d API.dll
  
!   `gnatdll` takes as input a definition file :file:`API.def` and the
    name of the DLL containing the services listed in the definition file
    :file:`API.dll`. The name of the static import library generated is
    computed from the name of the definition file as follows: if the
!   definition file name is `xyz``.def`, the import library name will
!   be `lib``xyz``.a`. Note that in the previous example option
!   *-e* could have been removed because the name of the definition
!   file (before the '`.def`' suffix) is the same as the name of the
!   DLL (:ref:`Using_gnatdll` for more information about `gnatdll`).
  
  
  .. _MSVS-Style_Import_Library:
--- 981,1002 ----
  .. rubric:: GNAT-Style Import Library
  
  To create a static import library from :file:`API.dll` with the GNAT tools
! you should create the .def file, then use ``gnatdll`` tool
  (see :ref:`Using_gnatdll`) as follows:
  
    ::
  
        $ gnatdll -e API.def -d API.dll
  
!   ``gnatdll`` takes as input a definition file :file:`API.def` and the
    name of the DLL containing the services listed in the definition file
    :file:`API.dll`. The name of the static import library generated is
    computed from the name of the definition file as follows: if the
!   definition file name is :file:`xyz.def`, the import library name will
!   be :file:`libxyz.a`. Note that in the previous example option
!   :switch:`-e` could have been removed because the name of the definition
!   file (before the ``.def`` suffix) is the same as the name of the
!   DLL (:ref:`Using_gnatdll` for more information about ``gnatdll``).
  
  
  .. _MSVS-Style_Import_Library:
*************** tools (:ref:`Mixed-Language_Programming_
*** 1084,1090 ****
  
  To create a Microsoft-style import library for :file:`API.dll` you
  should create the .def file, then build the actual import library using
! Microsoft's `lib` utility:
  
    ::
  
--- 1009,1015 ----
  
  To create a Microsoft-style import library for :file:`API.dll` you
  should create the .def file, then build the actual import library using
! Microsoft's ``lib`` utility:
  
    ::
  
*************** Microsoft's `lib` utility:
*** 1098,1104 ****
        LIBRARY      "API"
  
    See the Microsoft documentation for further details about the usage of
!   `lib`.
  
  
  .. _Building_DLLs_with_GNAT_Project_files:
--- 1023,1029 ----
        LIBRARY      "API"
  
    See the Microsoft documentation for further details about the usage of
!   ``lib``.
  
  
  .. _Building_DLLs_with_GNAT_Project_files:
*************** See the *Library Projects* section in th
*** 1113,1119 ****
  chapter of the *GPRbuild User's Guide*.
  
  Due to a system limitation, it is not possible under Windows to create threads
! when inside the `DllMain` routine which is used for auto-initialization
  of shared libraries, so it is not possible to have library level tasks in SALs.
  
  
--- 1038,1044 ----
  chapter of the *GPRbuild User's Guide*.
  
  Due to a system limitation, it is not possible under Windows to create threads
! when inside the ``DllMain`` routine which is used for auto-initialization
  of shared libraries, so it is not possible to have library level tasks in SALs.
  
  
*************** and use DLLs with GNAT.
*** 1131,1141 ****
  
  * Building object files.
    The first step is to build all objects files that are to be included
!   into the DLL. This is done by using the standard *gnatmake* tool.
  
  * Building the DLL.
!   To build the DLL you must use *gcc*'s *-shared* and
!   *-shared-libgcc* options. It is quite simple to use this method:
  
    ::
  
--- 1056,1066 ----
  
  * Building object files.
    The first step is to build all objects files that are to be included
!   into the DLL. This is done by using the standard ``gnatmake`` tool.
  
  * Building the DLL.
!   To build the DLL you must use the ``gcc`` :switch:`-shared` and
!   :switch:`-shared-libgcc` options. It is quite simple to use this method:
  
    ::
  
*************** and use DLLs with GNAT.
*** 1143,1149 ****
  
    It is important to note that in this case all symbols found in the
    object files are automatically exported. It is possible to restrict
!   the set of symbols to export by passing to *gcc* a definition
    file (see :ref:`The Definition File <The_Definition_File>`).
    For example:
  
--- 1068,1074 ----
  
    It is important to note that in this case all symbols found in the
    object files are automatically exported. It is possible to restrict
!   the set of symbols to export by passing to ``gcc`` a definition
    file (see :ref:`The Definition File <The_Definition_File>`).
    For example:
  
*************** and use DLLs with GNAT.
*** 1169,1175 ****
  
  At this point it is possible to use the DLL by directly linking
  against it. Note that you must use the GNAT shared runtime when using
! GNAT shared libraries. This is achieved by using *-shared* binder's
  option.
  
    ::
--- 1094,1100 ----
  
  At this point it is possible to use the DLL by directly linking
  against it. Note that you must use the GNAT shared runtime when using
! GNAT shared libraries. This is achieved by using the :switch:`-shared` binder
  option.
  
    ::
*************** Note that it is preferred to use GNAT Pr
*** 1189,1214 ****
  DLL support (:ref:`Building_DLLs_with_GNAT`) or to build DLLs.
  
  This section explains how to build DLLs containing Ada code using
! `gnatdll`. These DLLs will be referred to as Ada DLLs in the
  remainder of this section.
  
  The steps required to build an Ada DLL that is to be used by Ada as well as
  non-Ada applications are as follows:
  
! * You need to mark each Ada *entity* exported by the DLL with a `C` or
!   `Stdcall` calling convention to avoid any Ada name mangling for the
    entities exported by the DLL
    (see :ref:`Exporting Ada Entities <Exporting_Ada_Entities>`). You can
    skip this step if you plan to use the Ada DLL only from Ada applications.
  
  * Your Ada code must export an initialization routine which calls the routine
!   `adainit` generated by *gnatbind* to perform the elaboration of
    the Ada code in the DLL (:ref:`Ada_DLLs_and_Elaboration`). The initialization
    routine exported by the Ada DLL must be invoked by the clients of the DLL
    to initialize the DLL.
  
  * When useful, the DLL should also export a finalization routine which calls
!   routine `adafinal` generated by *gnatbind* to perform the
    finalization of the Ada code in the DLL (:ref:`Ada_DLLs_and_Finalization`).
    The finalization routine exported by the Ada DLL must be invoked by the
    clients of the DLL when the DLL services are no further needed.
--- 1114,1139 ----
  DLL support (:ref:`Building_DLLs_with_GNAT`) or to build DLLs.
  
  This section explains how to build DLLs containing Ada code using
! ``gnatdll``. These DLLs will be referred to as Ada DLLs in the
  remainder of this section.
  
  The steps required to build an Ada DLL that is to be used by Ada as well as
  non-Ada applications are as follows:
  
! * You need to mark each Ada entity exported by the DLL with a ``C`` or
!   ``Stdcall`` calling convention to avoid any Ada name mangling for the
    entities exported by the DLL
    (see :ref:`Exporting Ada Entities <Exporting_Ada_Entities>`). You can
    skip this step if you plan to use the Ada DLL only from Ada applications.
  
  * Your Ada code must export an initialization routine which calls the routine
!   ``adainit`` generated by ``gnatbind`` to perform the elaboration of
    the Ada code in the DLL (:ref:`Ada_DLLs_and_Elaboration`). The initialization
    routine exported by the Ada DLL must be invoked by the clients of the DLL
    to initialize the DLL.
  
  * When useful, the DLL should also export a finalization routine which calls
!   routine ``adafinal`` generated by ``gnatbind`` to perform the
    finalization of the Ada code in the DLL (:ref:`Ada_DLLs_and_Finalization`).
    The finalization routine exported by the Ada DLL must be invoked by the
    clients of the DLL when the DLL services are no further needed.
*************** non-Ada applications are as follows:
*** 1219,1230 ****
  * You must provide a definition file listing the exported entities
    (:ref:`The Definition File <The_Definition_File>`).
  
! * Finally you must use `gnatdll` to produce the DLL and the import
    library (:ref:`Using_gnatdll`).
  
! Note that a relocatable DLL stripped using the `strip`
  binutils tool will not be relocatable anymore. To build a DLL without
! debug information pass `-largs -s` to `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*.
--- 1144,1155 ----
  * You must provide a definition file listing the exported entities
    (:ref:`The Definition File <The_Definition_File>`).
  
! * Finally you must use ``gnatdll`` to produce the DLL and the import
    library (:ref:`Using_gnatdll`).
  
! Note that a relocatable DLL stripped using the ``strip``
  binutils tool will not be relocatable anymore. To build a DLL without
! debug information pass :switch:`-largs -s` to ``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*.
*************** Limitations When Using Ada DLLs from Ada
*** 1236,1251 ****
  """"""""""""""""""""""""""""""""""""""""
  
  When using Ada DLLs from Ada applications there is a limitation users
! should be aware of. Because on Windows the GNAT run time is not in a DLL of
! its own, each Ada DLL includes a part of the GNAT run time. Specifically,
! each Ada DLL includes the services of the GNAT run time that are necessary
  to the Ada code inside the DLL. As a result, when an Ada program uses an
! Ada DLL there are two independent GNAT run times: one in the Ada DLL and
  one in the main program.
  
  It is therefore not possible to exchange GNAT run-time objects between the
  Ada DLL and the main Ada program. Example of GNAT run-time objects are file
! handles (e.g., `Text_IO.File_Type`), tasks types, protected objects
  types, etc.
  
  It is completely safe to exchange plain elementary, array or record types,
--- 1161,1176 ----
  """"""""""""""""""""""""""""""""""""""""
  
  When using Ada DLLs from Ada applications there is a limitation users
! should be aware of. Because on Windows the GNAT run-time is not in a DLL of
! its own, each Ada DLL includes a part of the GNAT run-time. Specifically,
! each Ada DLL includes the services of the GNAT run-time that are necessary
  to the Ada code inside the DLL. As a result, when an Ada program uses an
! Ada DLL there are two independent GNAT run-times: one in the Ada DLL and
  one in the main program.
  
  It is therefore not possible to exchange GNAT run-time objects between the
  Ada DLL and the main Ada program. Example of GNAT run-time objects are file
! handles (e.g., ``Text_IO.File_Type``), tasks types, protected objects
  types, etc.
  
  It is completely safe to exchange plain elementary, array or record types,
*************** Exporting Ada Entities
*** 1261,1269 ****
  
  Building a DLL is a way to encapsulate a set of services usable from any
  application. As a result, the Ada entities exported by a DLL should be
! exported with the `C` or `Stdcall` calling conventions to avoid
  any Ada name mangling. As an example here is an Ada package
! `API`, spec and body, exporting two procedures, a function, and a
  variable:
  
  
--- 1186,1194 ----
  
  Building a DLL is a way to encapsulate a set of services usable from any
  application. As a result, the Ada entities exported by a DLL should be
! exported with the ``C`` or ``Stdcall`` calling conventions to avoid
  any Ada name mangling. As an example here is an Ada package
! ``API``, spec and body, exporting two procedures, a function, and a
  variable:
  
  
*************** variable:
*** 1313,1319 ****
       end API;
  
  If the Ada DLL you are building will only be used by Ada applications
! you do not have to export Ada entities with a `C` or `Stdcall`
  convention. As an example, the previous package could be written as
  follows:
  
--- 1238,1244 ----
       end API;
  
  If the Ada DLL you are building will only be used by Ada applications
! you do not have to export Ada entities with a ``C`` or ``Stdcall``
  convention. As an example, the previous package could be written as
  follows:
  
*************** follows:
*** 1345,1352 ****
          --  The remainder of this package body is unchanged.
       end API;
  
! Note that if you do not export the Ada entities with a `C` or
! `Stdcall` convention you will have to provide the mangled Ada names
  in the definition file of the Ada DLL
  (:ref:`Creating_the_Definition_File`).
  
--- 1270,1277 ----
          --  The remainder of this package body is unchanged.
       end API;
  
! Note that if you do not export the Ada entities with a ``C`` or
! ``Stdcall`` convention you will have to provide the mangled Ada names
  in the definition file of the Ada DLL
  (:ref:`Creating_the_Definition_File`).
  
*************** user of your DLL must do is elaborate th
*** 1364,1385 ****
  (:ref:`Elaboration_Order_Handling_in_GNAT`).
  
  To achieve this you must export an initialization routine
! (`Initialize_API` in the previous example), which must be invoked
  before using any of the DLL services. This elaboration routine must call
! the Ada elaboration routine `adainit` generated by the GNAT binder
  (:ref:`Binding_with_Non-Ada_Main_Programs`). See the body of
! `Initialize_Api` for an example. Note that the GNAT binder is
! automatically invoked during the DLL build process by the `gnatdll`
  tool (:ref:`Using_gnatdll`).
  
  When a DLL is loaded, Windows systematically invokes a routine called
! `DllMain`. It would therefore be possible to call `adainit`
! directly from `DllMain` without having to provide an explicit
  initialization routine. Unfortunately, it is not possible to call
! `adainit` from the `DllMain` if your program has library level
! tasks because access to the `DllMain` entry point is serialized by
  the system (that is, only a single thread can execute 'through' it at a
! time), which means that the GNAT run time will deadlock waiting for the
  newly created task to complete its initialization.
  
  
--- 1289,1310 ----
  (:ref:`Elaboration_Order_Handling_in_GNAT`).
  
  To achieve this you must export an initialization routine
! (``Initialize_API`` in the previous example), which must be invoked
  before using any of the DLL services. This elaboration routine must call
! the Ada elaboration routine ``adainit`` generated by the GNAT binder
  (:ref:`Binding_with_Non-Ada_Main_Programs`). See the body of
! ``Initialize_Api`` for an example. Note that the GNAT binder is
! automatically invoked during the DLL build process by the ``gnatdll``
  tool (:ref:`Using_gnatdll`).
  
  When a DLL is loaded, Windows systematically invokes a routine called
! ``DllMain``. It would therefore be possible to call ``adainit``
! directly from ``DllMain`` without having to provide an explicit
  initialization routine. Unfortunately, it is not possible to call
! ``adainit`` from the ``DllMain`` if your program has library level
! tasks because access to the ``DllMain`` entry point is serialized by
  the system (that is, only a single thread can execute 'through' it at a
! time), which means that the GNAT run-time will deadlock waiting for the
  newly created task to complete its initialization.
  
  
*************** When the services of an Ada DLL are no l
*** 1394,1404 ****
  invoke the DLL finalization routine, if available. The DLL finalization
  routine is in charge of releasing all resources acquired by the DLL. In the
  case of the Ada code contained in the DLL, this is achieved by calling
! routine `adafinal` generated by the GNAT binder
  (:ref:`Binding_with_Non-Ada_Main_Programs`).
! See the body of `Finalize_Api` for an
  example. As already pointed out the GNAT binder is automatically invoked
! during the DLL build process by the `gnatdll` tool
  (:ref:`Using_gnatdll`).
  
  
--- 1319,1329 ----
  invoke the DLL finalization routine, if available. The DLL finalization
  routine is in charge of releasing all resources acquired by the DLL. In the
  case of the Ada code contained in the DLL, this is achieved by calling
! routine ``adafinal`` generated by the GNAT binder
  (:ref:`Binding_with_Non-Ada_Main_Programs`).
! See the body of ``Finalize_Api`` for an
  example. As already pointed out the GNAT binder is automatically invoked
! during the DLL build process by the ``gnatdll`` tool
  (:ref:`Using_gnatdll`).
  
  
*************** Creating a Spec for Ada DLLs
*** 1409,1415 ****
  
  To use the services exported by the Ada DLL from another programming
  language (e.g., C), you have to translate the specs of the exported Ada
! entities in that language. For instance in the case of `API.dll`,
  the corresponding C header file could look like:
  
    .. code-block:: c
--- 1334,1340 ----
  
  To use the services exported by the Ada DLL from another programming
  language (e.g., C), you have to translate the specs of the exported Ada
! entities in that language. For instance in the case of ``API.dll``,
  the corresponding C header file could look like:
  
    .. code-block:: c
*************** the corresponding C header file could lo
*** 1421,1430 ****
  It is important to understand that when building an Ada DLL to be used by
  other Ada applications, you need two different specs for the packages
  contained in the DLL: one for building the DLL and the other for using
! the DLL. This is because the `DLL` calling convention is needed to
  use a variable defined in a DLL, but when building the DLL, the variable
! must have either the `Ada` or `C` calling convention. As an
! example consider a DLL comprising the following package `API`:
  
    .. code-block:: ada
  
--- 1346,1355 ----
  It is important to understand that when building an Ada DLL to be used by
  other Ada applications, you need two different specs for the packages
  contained in the DLL: one for building the DLL and the other for using
! the DLL. This is because the ``DLL`` calling convention is needed to
  use a variable defined in a DLL, but when building the DLL, the variable
! must have either the ``Ada`` or ``C`` calling convention. As an
! example consider a DLL comprising the following package ``API``:
  
    .. code-block:: ada
  
*************** example consider a DLL comprising the fo
*** 1434,1441 ****
          --  Remainder of the package omitted.
       end API;
  
! After producing a DLL containing package `API`, the spec that
! must be used to import `API.Count` from Ada code outside of the
  DLL is:
  
    .. code-block:: ada
--- 1359,1366 ----
          --  Remainder of the package omitted.
       end API;
  
! After producing a DLL containing package ``API``, the spec that
! must be used to import ``API.Count`` from Ada code outside of the
  DLL is:
  
    .. code-block:: ada
*************** Creating the Definition File
*** 1453,1460 ****
  
  The definition file is the last file needed to build the DLL. It lists
  the exported symbols. As an example, the definition file for a DLL
! containing only package `API` (where all the entities are exported
! with a `C` calling convention) is:
  
    ::
  
--- 1378,1385 ----
  
  The definition file is the last file needed to build the DLL. It lists
  the exported symbols. As an example, the definition file for a DLL
! containing only package ``API`` (where all the entities are exported
! with a ``C`` calling convention) is:
  
    ::
  
*************** with a `C` calling convention) is:
*** 1464,1470 ****
          finalize_api
          initialize_api
  
! If the `C` calling convention is missing from package `API`,
  then the definition file contains the mangled Ada names of the above
  entities, which in this case are:
  
--- 1389,1395 ----
          finalize_api
          initialize_api
  
! If the ``C`` calling convention is missing from package ``API``,
  then the definition file contains the mangled Ada names of the above
  entities, which in this case are:
  
*************** entities, which in this case are:
*** 1479,1619 ****
  
  .. _Using_gnatdll:
  
! Using `gnatdll`
! """""""""""""""
  
  .. index:: gnatdll
  
! `gnatdll` is a tool to automate the DLL build process once all the Ada
  and non-Ada sources that make up your DLL have been compiled.
! `gnatdll` is actually in charge of two distinct tasks: build the
  static import library for the DLL and the actual DLL. The form of the
! `gnatdll` command is
  
    ::
  
!       $ gnatdll [`switches`] `list-of-files` [-largs `opts`]
  
! where `list-of-files` is a list of ALI and object files. The object
  file list must be the exact list of objects corresponding to the non-Ada
  sources whose services are to be included in the DLL. The ALI file list
  must be the exact list of ALI files for the corresponding Ada sources
! whose services are to be included in the DLL. If `list-of-files` is
  missing, only the static import library is generated.
  
! You may specify any of the following switches to `gnatdll`:
  
  
    .. index:: -a (gnatdll)
  
! :samp:`-a[{address}]`
!   Build a non-relocatable DLL at `address`. If `address` is not
!   specified the default address `0x11000000` will be used. By default,
!   when this switch is missing, `gnatdll` builds relocatable DLL. We
    advise the reader to build relocatable DLL.
  
  
    .. index:: -b (gnatdll)
  
! :samp:`-b {address}`
    Set the relocatable DLL base address. By default the address is
!   `0x11000000`.
  
  
    .. index:: -bargs (gnatdll)
  
! :samp:`-bargs {opts}`
!   Binder options. Pass `opts` to the binder.
  
  
    .. index:: -d (gnatdll)
  
! :samp:`-d {dllfile}`
!   `dllfile` is the name of the DLL. This switch must be present for
!   `gnatdll` to do anything. The name of the generated import library is
!   obtained algorithmically from `dllfile` as shown in the following
!   example: if `dllfile` is `xyz.dll`, the import library name is
!   `libxyz.dll.a`. The name of the definition file to use (if not specified
!   by option *-e*) is obtained algorithmically from `dllfile`
    as shown in the following example:
!   if `dllfile` is `xyz.dll`, the definition
!   file used is `xyz.def`.
  
  
    .. index:: -e (gnatdll)
  
! :samp:`-e {deffile}`
!   `deffile` is the name of the definition file.
  
  
    .. index:: -g (gnatdll)
  
! :samp:`-g`
    Generate debugging information. This information is stored in the object
    file and copied from there to the final DLL file by the linker,
    where it can be read by the debugger. You must use the
!   *-g* switch if you plan on using the debugger or the symbolic
    stack traceback.
  
  
    .. index:: -h (gnatdll)
  
! :samp:`-h`
!   Help mode. Displays `gnatdll` switch usage information.
  
  
    .. index:: -I (gnatdll)
  
! :samp:`-I{dir}`
!   Direct `gnatdll` to search the `dir` directory for source and
    object files needed to build the DLL.
    (:ref:`Search_Paths_and_the_Run-Time_Library_RTL`).
  
  
    .. index:: -k (gnatdll)
  
! :samp:`-k`
    Removes the :samp:`@{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 `Stdcall` function in a DLL for which
    the :samp:`@{nn}` suffix has been removed. This is the case for most
    of the Windows NT DLL for example. This option has no effect when
!   *-n* option is specified.
  
  
    .. index:: -l (gnatdll)
  
! :samp:`-l {file}`
    The list of ALI and object files used to build the DLL are listed in
!   `file`, instead of being given in the command line. Each line in
!   `file` contains the name of an ALI or object file.
  
  
    .. index:: -n (gnatdll)
  
! :samp:`-n`
    No Import. Do not create the import library.
  
  
    .. index:: -q (gnatdll)
  
! :samp:`-q`
    Quiet mode. Do not display unnecessary messages.
  
  
    .. index:: -v (gnatdll)
  
! :samp:`-v`
    Verbose mode. Display extra information.
  
  
    .. index:: -largs (gnatdll)
  
! :samp:`-largs {opts}`
!   Linker options. Pass `opts` to the linker.
  
  
! .. rubric:: `gnatdll` Example
  
  As an example the command to build a relocatable DLL from :file:`api.adb`
  once :file:`api.adb` has been compiled and :file:`api.def` created is
--- 1404,1544 ----
  
  .. _Using_gnatdll:
  
! Using ``gnatdll``
! """""""""""""""""
  
  .. index:: gnatdll
  
! ``gnatdll`` is a tool to automate the DLL build process once all the Ada
  and non-Ada sources that make up your DLL have been compiled.
! ``gnatdll`` is actually in charge of two distinct tasks: build the
  static import library for the DLL and the actual DLL. The form of the
! ``gnatdll`` command is
  
    ::
  
!       $ gnatdll [ switches ] list-of-files [ -largs opts ]
  
! where ``list-of-files`` is a list of ALI and object files. The object
  file list must be the exact list of objects corresponding to the non-Ada
  sources whose services are to be included in the DLL. The ALI file list
  must be the exact list of ALI files for the corresponding Ada sources
! whose services are to be included in the DLL. If ``list-of-files`` is
  missing, only the static import library is generated.
  
! You may specify any of the following switches to ``gnatdll``:
  
  
    .. index:: -a (gnatdll)
  
! :switch:`-a[{address}]`
!   Build a non-relocatable DLL at ``address``. If ``address`` is not
!   specified the default address ``0x11000000`` will be used. By default,
!   when this switch is missing, ``gnatdll`` builds relocatable DLL. We
    advise the reader to build relocatable DLL.
  
  
    .. index:: -b (gnatdll)
  
! :switch:`-b {address}`
    Set the relocatable DLL base address. By default the address is
!   ``0x11000000``.
  
  
    .. index:: -bargs (gnatdll)
  
! :switch:`-bargs {opts}`
!   Binder options. Pass ``opts`` to the binder.
  
  
    .. index:: -d (gnatdll)
  
! :switch:`-d {dllfile}`
!   ``dllfile`` is the name of the DLL. This switch must be present for
!   ``gnatdll`` to do anything. The name of the generated import library is
!   obtained algorithmically from ``dllfile`` as shown in the following
!   example: if ``dllfile`` is :file:`xyz.dll`, the import library name is
!   :file:`libxyz.dll.a`. The name of the definition file to use (if not specified
!   by option :switch:`-e`) is obtained algorithmically from ``dllfile``
    as shown in the following example:
!   if ``dllfile`` is :file:`xyz.dll`, the definition
!   file used is :file:`xyz.def`.
  
  
    .. index:: -e (gnatdll)
  
! :switch:`-e {deffile}`
!   ``deffile`` is the name of the definition file.
  
  
    .. index:: -g (gnatdll)
  
! :switch:`-g`
    Generate debugging information. This information is stored in the object
    file and copied from there to the final DLL file by the linker,
    where it can be read by the debugger. You must use the
!   :switch:`-g` switch if you plan on using the debugger or the symbolic
    stack traceback.
  
  
    .. index:: -h (gnatdll)
  
! :switch:`-h`
!   Help mode. Displays ``gnatdll`` switch usage information.
  
  
    .. index:: -I (gnatdll)
  
! :switch:`-I{dir}`
!   Direct ``gnatdll`` to search the ``dir`` directory for source and
    object files needed to build the DLL.
    (:ref:`Search_Paths_and_the_Run-Time_Library_RTL`).
  
  
    .. index:: -k (gnatdll)
  
! :switch:`-k`
    Removes the :samp:`@{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 ``Stdcall`` function in a DLL for which
    the :samp:`@{nn}` suffix has been removed. This is the case for most
    of the Windows NT DLL for example. This option has no effect when
!   :switch:`-n` option is specified.
  
  
    .. index:: -l (gnatdll)
  
! :switch:`-l {file}`
    The list of ALI and object files used to build the DLL are listed in
!   ``file``, instead of being given in the command line. Each line in
!   ``file`` contains the name of an ALI or object file.
  
  
    .. index:: -n (gnatdll)
  
! :switch:`-n`
    No Import. Do not create the import library.
  
  
    .. index:: -q (gnatdll)
  
! :switch:`-q`
    Quiet mode. Do not display unnecessary messages.
  
  
    .. index:: -v (gnatdll)
  
! :switch:`-v`
    Verbose mode. Display extra information.
  
  
    .. index:: -largs (gnatdll)
  
! :switch:`-largs {opts}`
!   Linker options. Pass ``opts`` to the linker.
  
  
! .. rubric:: ``gnatdll`` Example
  
  As an example the command to build a relocatable DLL from :file:`api.adb`
  once :file:`api.adb` has been compiled and :file:`api.def` created is
*************** Alternatively if you want to create just
*** 1637,1656 ****
       $ gnatdll -d api.dll
  
  
! .. rubric:: `gnatdll` behind the Scenes
  
! This section details the steps involved in creating a DLL. `gnatdll`
  does these steps for you. Unless you are interested in understanding what
  goes on behind the scenes, you should skip this section.
  
! We use the previous example of a DLL containing the Ada package `API`,
  to illustrate the steps necessary to build a DLL. The starting point is a
  set of objects that will make up the DLL and the corresponding ALI
  files. In the case of this example this means that :file:`api.o` and
! :file:`api.ali` are available. To build a relocatable DLL, `gnatdll` does
  the following:
  
! * `gnatdll` builds the base file (:file:`api.base`). A base file gives
    the information necessary to generate relocation information for the
    DLL.
  
--- 1562,1581 ----
       $ gnatdll -d api.dll
  
  
! .. rubric:: ``gnatdll`` behind the Scenes
  
! This section details the steps involved in creating a DLL. ``gnatdll``
  does these steps for you. Unless you are interested in understanding what
  goes on behind the scenes, you should skip this section.
  
! We use the previous example of a DLL containing the Ada package ``API``,
  to illustrate the steps necessary to build a DLL. The starting point is a
  set of objects that will make up the DLL and the corresponding ALI
  files. In the case of this example this means that :file:`api.o` and
! :file:`api.ali` are available. To build a relocatable DLL, ``gnatdll`` does
  the following:
  
! * ``gnatdll`` builds the base file (:file:`api.base`). A base file gives
    the information necessary to generate relocation information for the
    DLL.
  
*************** the following:
*** 1659,1671 ****
        $ gnatbind -n api
        $ gnatlink api -o api.jnk -mdll -Wl,--base-file,api.base
  
!   In addition to the base file, the *gnatlink* command generates an
!   output file :file:`api.jnk` which can be discarded. The *-mdll* switch
!   asks *gnatlink* to generate the routines `DllMain` and
!   `DllMainCRTStartup` that are called by the Windows loader when the DLL
    is loaded into memory.
  
! * `gnatdll` uses `dlltool` (see :ref:`Using dlltool <Using_dlltool>`) to build the
    export table (:file:`api.exp`). The export table contains the relocation
    information in a form which can be used during the final link to ensure
    that the Windows loader is able to place the DLL anywhere in memory.
--- 1584,1596 ----
        $ gnatbind -n api
        $ gnatlink api -o api.jnk -mdll -Wl,--base-file,api.base
  
!   In addition to the base file, the ``gnatlink`` command generates an
!   output file :file:`api.jnk` which can be discarded. The :switch:`-mdll` switch
!   asks ``gnatlink`` to generate the routines ``DllMain`` and
!   ``DllMainCRTStartup`` that are called by the Windows loader when the DLL
    is loaded into memory.
  
! * ``gnatdll`` uses ``dlltool`` (see :ref:`Using dlltool <Using_dlltool>`) to build the
    export table (:file:`api.exp`). The export table contains the relocation
    information in a form which can be used during the final link to ensure
    that the Windows loader is able to place the DLL anywhere in memory.
*************** the following:
*** 1675,1683 ****
        $ dlltool --dllname api.dll --def api.def --base-file api.base \\
                  --output-exp api.exp
  
! * `gnatdll` builds the base file using the new export table. Note that
!   *gnatbind* must be called once again since the binder generated file
!   has been deleted during the previous call to *gnatlink*.
  
    ::
  
--- 1600,1608 ----
        $ dlltool --dllname api.dll --def api.def --base-file api.base \\
                  --output-exp api.exp
  
! * ``gnatdll`` builds the base file using the new export table. Note that
!   ``gnatbind`` must be called once again since the binder generated file
!   has been deleted during the previous call to ``gnatlink``.
  
    ::
  
*************** the following:
*** 1686,1692 ****
              -Wl,--base-file,api.base
  
  
! * `gnatdll` builds the new export table using the new base file and
    generates the DLL import library :file:`libAPI.dll.a`.
  
  
--- 1611,1617 ----
              -Wl,--base-file,api.base
  
  
! * ``gnatdll`` builds the new export table using the new base file and
    generates the DLL import library :file:`libAPI.dll.a`.
  
  
*************** the following:
*** 1695,1701 ****
        $ dlltool --dllname api.dll --def api.def --base-file api.base \\
                  --output-exp api.exp --output-lib libAPI.a
  
! * Finally `gnatdll` builds the relocatable DLL using the final export
    table.
  
    ::
--- 1620,1626 ----
        $ dlltool --dllname api.dll --def api.def --base-file api.base \\
                  --output-exp api.exp --output-lib libAPI.a
  
! * Finally ``gnatdll`` builds the relocatable DLL using the final export
    table.
  
    ::
*************** the following:
*** 1706,1783 ****
  
  .. _Using_dlltool:
  
! .. rubric:: Using `dlltool`
  
! `dlltool` is the low-level tool used by `gnatdll` to build
  DLLs and static import libraries. This section summarizes the most
! common `dlltool` switches. The form of the `dlltool` command
  is
  
    ::
  
      $ dlltool [`switches`]
  
! `dlltool` switches include:
  
  
  .. index:: --base-file (dlltool)
  
! :samp:`--base-file {basefile}`
!   Read the base file `basefile` generated by the linker. This switch
    is used to create a relocatable DLL.
  
  
  .. index:: --def (dlltool)
  
! :samp:`--def {deffile}`
    Read the definition file.
  
  
  .. index:: --dllname (dlltool)
  
! :samp:`--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 `dlltool` with switch
!   *--output-lib*.
  
  
  .. index:: -k (dlltool)
  
! :samp:`-k`
    Kill :samp:`@{nn}` from exported names
    (:ref:`Windows_Calling_Conventions`
!   for a discussion about `Stdcall`-style symbols.
  
  
  .. index:: --help (dlltool)
  
! :samp:`--help`
!   Prints the `dlltool` switches with a concise description.
  
  
  .. index:: --output-exp (dlltool)
  
! :samp:`--output-exp {exportfile}`
!   Generate an export file `exportfile`. The export file contains the
    export table (list of symbols in the DLL) and is used to create the DLL.
  
  
  .. index:: --output-lib (dlltool)
  
! :samp:`--output-lib {libfile}`
!   Generate a static import library `libfile`.
  
  
  .. index:: -v (dlltool)
  
! :samp:`-v`
    Verbose mode.
  
  
  .. index:: --as (dlltool)
  
! :samp:`--as {assembler-name}`
!   Use `assembler-name` as the assembler. The default is `as`.
  
  
  .. _GNAT_and_Windows_Resources:
--- 1631,1708 ----
  
  .. _Using_dlltool:
  
! .. rubric:: Using ``dlltool``
  
! ``dlltool`` is the low-level tool used by ``gnatdll`` to build
  DLLs and static import libraries. This section summarizes the most
! common ``dlltool`` switches. The form of the ``dlltool`` command
  is
  
    ::
  
      $ dlltool [`switches`]
  
! ``dlltool`` switches include:
  
  
  .. index:: --base-file (dlltool)
  
! :switch:`--base-file {basefile}`
!   Read the base file ``basefile`` generated by the linker. This switch
    is used to create a relocatable DLL.
  
  
  .. index:: --def (dlltool)
  
! :switch:`--def {deffile}`
    Read the definition file.
  
  
  .. index:: --dllname (dlltool)
  
! :switch:`--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 ``dlltool`` with switch
!   :switch:`--output-lib`.
  
  
  .. index:: -k (dlltool)
  
! :switch:`-k`
    Kill :samp:`@{nn}` from exported names
    (:ref:`Windows_Calling_Conventions`
!   for a discussion about ``Stdcall``-style symbols.
  
  
  .. index:: --help (dlltool)
  
! :switch:`--help`
!   Prints the ``dlltool`` switches with a concise description.
  
  
  .. index:: --output-exp (dlltool)
  
! :switch:`--output-exp {exportfile}`
!   Generate an export file ``exportfile``. The export file contains the
    export table (list of symbols in the DLL) and is used to create the DLL.
  
  
  .. index:: --output-lib (dlltool)
  
! :switch:`--output-lib {libfile}`
!   Generate a static import library ``libfile``.
  
  
  .. index:: -v (dlltool)
  
! :switch:`-v`
    Verbose mode.
  
  
  .. index:: --as (dlltool)
  
! :switch:`--as {assembler-name}`
!   Use ``assembler-name`` as the assembler. The default is ``as``.
  
  
  .. _GNAT_and_Windows_Resources:
*************** resource:
*** 1843,1850 ****
         END
       END
  
! The value `0809` (langID) is for the U.K English language and
! `04E4` (charsetID), which is equal to `1252` decimal, for
  multilingual.
  
  This section explains how to build, compile and use resources. Note that this
--- 1768,1775 ----
         END
       END
  
! The value ``0809`` (langID) is for the U.K English language and
! ``04E4`` (charsetID), which is equal to ``1252`` decimal, for
  multilingual.
  
  This section explains how to build, compile and use resources. Note that this
*************** Building Resources
*** 1862,1869 ****
  A resource file is an ASCII file. By convention resource files have an
  :file:`.rc` extension.
  The easiest way to build a resource file is to use Microsoft tools
! such as `imagedit.exe` to build bitmaps, icons and cursors and
! `dlgedit.exe` to build dialogs.
  It is always possible to build an :file:`.rc` file yourself by writing a
  resource script.
  
--- 1787,1794 ----
  A resource file is an ASCII file. By convention resource files have an
  :file:`.rc` extension.
  The easiest way to build a resource file is to use Microsoft tools
! such as ``imagedit.exe`` to build bitmaps, icons and cursors and
! ``dlgedit.exe`` to build dialogs.
  It is always possible to build an :file:`.rc` file yourself by writing a
  resource script.
  
*************** Compiling Resources
*** 1883,1904 ****
  
  This section describes how to build a GNAT-compatible (COFF) object file
  containing the resources. This is done using the Resource Compiler
! `windres` as follows:
  
    ::
  
       $ windres -i myres.rc -o myres.o
  
! By default `windres` will run *gcc* to preprocess the :file:`.rc`
  file. You can specify an alternate preprocessor (usually named
! :file:`cpp.exe`) using the `windres` *--preprocessor*
  parameter. A list of all possible options may be obtained by entering
! the command `windres` *--help*.
  
! It is also possible to use the Microsoft resource compiler `rc.exe`
  to produce a :file:`.res` file (binary resource file). See the
  corresponding Microsoft documentation for further details. In this case
! you need to use `windres` to translate the :file:`.res` file to a
  GNAT-compatible object file as follows:
  
    ::
--- 1808,1829 ----
  
  This section describes how to build a GNAT-compatible (COFF) object file
  containing the resources. This is done using the Resource Compiler
! ``windres`` as follows:
  
    ::
  
       $ windres -i myres.rc -o myres.o
  
! By default ``windres`` will run ``gcc`` to preprocess the :file:`.rc`
  file. You can specify an alternate preprocessor (usually named
! :file:`cpp.exe`) using the ``windres`` :switch:`--preprocessor`
  parameter. A list of all possible options may be obtained by entering
! the command ``windres`` :switch:`--help`.
  
! It is also possible to use the Microsoft resource compiler ``rc.exe``
  to produce a :file:`.res` file (binary resource file). See the
  corresponding Microsoft documentation for further details. In this case
! you need to use ``windres`` to translate the :file:`.res` file to a
  GNAT-compatible object file as follows:
  
    ::
*************** Using Resources
*** 1915,1921 ****
  
  To include the resource file in your program just add the
  GNAT-compatible object file for the resource(s) to the linker
! arguments. With *gnatmake* this is done by using the *-largs*
  option:
  
    ::
--- 1840,1846 ----
  
  To include the resource file in your program just add the
  GNAT-compatible object file for the resource(s) to the linker
! arguments. With ``gnatmake`` this is done by using the :switch:`-largs`
  option:
  
    ::
*************** be developed following the general guide
*** 1937,1943 ****
  cookbook-style sequence of steps to follow:
  
  1. First develop and build the GNAT shared library using a library project
!    (let's assume the project is `mylib.gpr`, producing the library `libmylib.dll`):
  
    ::
  
--- 1862,1868 ----
  cookbook-style sequence of steps to follow:
  
  1. First develop and build the GNAT shared library using a library project
!    (let's assume the project is :file:`mylib.gpr`, producing the library :file:`libmylib.dll`):
  
    ::
  
*************** Debugging a DLL is similar to debugging
*** 1986,2000 ****
  we have to deal with two different executable parts: the DLL and the
  program that uses it. We have the following four possibilities:
  
! * The program and the DLL are built with `GCC/GNAT`.
  * The program is built with foreign tools and the DLL is built with
!   `GCC/GNAT`.
! * The program is built with `GCC/GNAT` and the DLL is built with
    foreign tools.
  
  In this section we address only cases one and two above.
  There is no point in trying to debug
! a DLL with `GNU/GDB`, if there is no GDB-compatible debugging
  information in it. To do so you must use a debugger compatible with the
  tools suite used to build the DLL.
  
--- 1911,1925 ----
  we have to deal with two different executable parts: the DLL and the
  program that uses it. We have the following four possibilities:
  
! * The program and the DLL are built with GCC/GNAT.
  * The program is built with foreign tools and the DLL is built with
!   GCC/GNAT.
! * The program is built with GCC/GNAT and the DLL is built with
    foreign tools.
  
  In this section we address only cases one and two above.
  There is no point in trying to debug
! a DLL with GNU/GDB, if there is no GDB-compatible debugging
  information in it. To do so you must use a debugger compatible with the
  tools suite used to build the DLL.
  
*************** tools suite used to build the DLL.
*** 2003,2019 ****
  Program and DLL Both Built with GCC/GNAT
  """"""""""""""""""""""""""""""""""""""""
  
! This is the simplest case. Both the DLL and the program have `GDB`
  compatible debugging information. It is then possible to break anywhere in
  the process. Let's suppose here that the main procedure is named
! `ada_main` and that in the DLL there is an entry point named
! `ada_dll`.
  
  The DLL (:ref:`Introduction_to_Dynamic_Link_Libraries_DLLs`) and
  program must have been built with the debugging information (see GNAT -g
  switch). Here are the step-by-step instructions for debugging it:
  
! * Launch `GDB` on the main program.
  
    ::
  
--- 1928,1944 ----
  Program and DLL Both Built with GCC/GNAT
  """"""""""""""""""""""""""""""""""""""""
  
! This is the simplest case. Both the DLL and the program have ``GDB``
  compatible debugging information. It is then possible to break anywhere in
  the process. Let's suppose here that the main procedure is named
! ``ada_main`` and that in the DLL there is an entry point named
! ``ada_dll``.
  
  The DLL (:ref:`Introduction_to_Dynamic_Link_Libraries_DLLs`) and
  program must have been built with the debugging information (see GNAT -g
  switch). Here are the step-by-step instructions for debugging it:
  
! * Launch ``GDB`` on the main program.
  
    ::
  
*************** Program Built with Foreign Tools and DLL
*** 2050,2067 ****
  In this case things are slightly more complex because it is not possible to
  start the main program and then break at the beginning to load the DLL and the
  associated DLL debugging information. It is not possible to break at the
! beginning of the program because there is no `GDB` debugging information,
  and therefore there is no direct way of getting initial control. This
  section addresses this issue by describing some methods that can be used
  to break somewhere in the DLL to debug it.
  
! First suppose that the main procedure is named `main` (this is for
  example some C code built with Microsoft Visual C) and that there is a
! DLL named `test.dll` containing an Ada entry point named
! `ada_dll`.
  
  The DLL (see :ref:`Introduction_to_Dynamic_Link_Libraries_DLLs`) must have
! been built with debugging information (see GNAT `-g` option).
  
  
  .. rubric:: Debugging the DLL Directly
--- 1975,1992 ----
  In this case things are slightly more complex because it is not possible to
  start the main program and then break at the beginning to load the DLL and the
  associated DLL debugging information. It is not possible to break at the
! beginning of the program because there is no ``GDB`` debugging information,
  and therefore there is no direct way of getting initial control. This
  section addresses this issue by describing some methods that can be used
  to break somewhere in the DLL to debug it.
  
! First suppose that the main procedure is named ``main`` (this is for
  example some C code built with Microsoft Visual C) and that there is a
! DLL named ``test.dll`` containing an Ada entry point named
! ``ada_dll``.
  
  The DLL (see :ref:`Introduction_to_Dynamic_Link_Libraries_DLLs`) must have
! been built with debugging information (see the GNAT :switch:`-g` option).
  
  
  .. rubric:: Debugging the DLL Directly
*************** It is also possible to debug the DLL by
*** 2127,2133 ****
  
  .. index:: DLL debugging, attach to process
  
! With `GDB` it is always possible to debug a running process by
  attaching to it. It is possible to debug a DLL this way. The limitation
  of this approach is that the DLL must run long enough to perform the
  attach operation. It may be useful for instance to insert a time wasting
--- 2052,2058 ----
  
  .. index:: DLL debugging, attach to process
  
! With ``GDB`` it is always possible to debug a running process by
  attaching to it. It is possible to debug a DLL this way. The limitation
  of this approach is that the DLL must run long enough to perform the
  attach operation. It may be useful for instance to insert a time wasting
*************** approach to debug a program as described
*** 2180,2187 ****
  
  .. _Setting_Stack_Size_from_gnatlink:
  
! Setting Stack Size from *gnatlink*
! ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  
  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
--- 2105,2112 ----
  
  .. _Setting_Stack_Size_from_gnatlink:
  
! Setting Stack Size from ``gnatlink``
! ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  
  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
*************** tasks, and pragma Storage_Size has no ef
*** 2194,2203 ****
  In particular, Stack Overflow checks are made against this
  link-time specified size.
  
! This setting can be done with *gnatlink* using either of the following:
  
  
! * *-Xlinker* linker option
  
    ::
  
--- 2119,2128 ----
  In particular, Stack Overflow checks are made against this
  link-time specified size.
  
! This setting can be done with ``gnatlink`` using either of the following:
  
  
! * :switch:`-Xlinker` linker option
  
    ::
  
*************** This setting can be done with *gnatlink*
*** 2207,2232 ****
    This sets the stack reserve size to 0x10000 bytes and the stack commit
    size to 0x1000 bytes.
  
! * *-Wl* linker option
  
    ::
  
      $ gnatlink hello -Wl,--stack=0x1000000
  
    This sets the stack reserve size to 0x1000000 bytes. Note that with
!   *-Wl* option it is not possible to set the stack commit size
!   because the coma is a separator for this option.
  
  
  .. _Setting_Heap_Size_from_gnatlink:
  
! Setting Heap Size from *gnatlink*
! ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  
  Under Windows systems, it is possible to specify the program heap size from
! *gnatlink* using either of the following:
  
! * *-Xlinker* linker option
  
    ::
  
--- 2132,2157 ----
    This sets the stack reserve size to 0x10000 bytes and the stack commit
    size to 0x1000 bytes.
  
! * :switch:`-Wl` linker option
  
    ::
  
      $ gnatlink hello -Wl,--stack=0x1000000
  
    This sets the stack reserve size to 0x1000000 bytes. Note that with
!   :switch:`-Wl` option it is not possible to set the stack commit size
!   because the comma is a separator for this option.
  
  
  .. _Setting_Heap_Size_from_gnatlink:
  
! Setting Heap Size from ``gnatlink``
! ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  
  Under Windows systems, it is possible to specify the program heap size from
! ``gnatlink`` using either of the following:
  
! * :switch:`-Xlinker` linker option
  
    ::
  
*************** Under Windows systems, it is possible to
*** 2235,2241 ****
    This sets the heap reserve size to 0x10000 bytes and the heap commit
    size to 0x1000 bytes.
  
! * *-Wl* linker option
  
    ::
  
--- 2160,2166 ----
    This sets the heap reserve size to 0x10000 bytes and the heap commit
    size to 0x1000 bytes.
  
! * :switch:`-Wl` linker option
  
    ::
  
*************** Under Windows systems, it is possible to
*** 2243,2250 ****
  
  
    This sets the heap reserve size to 0x1000000 bytes. Note that with
!   *-Wl* option it is not possible to set the heap commit size
!   because the coma is a separator for this option.
  
  
  .. _Win32_Specific_Addons:
--- 2168,2175 ----
  
  
    This sets the heap reserve size to 0x1000000 bytes. Note that with
!   :switch:`-Wl` option it is not possible to set the heap commit size
!   because the comma is a separator for this option.
  
  
  .. _Win32_Specific_Addons:
diff -Nrcpad gcc-7.3.0/gcc/ada/doc/gnat_ugn/the_gnat_compilation_model.rst gcc-8.1.0/gcc/ada/doc/gnat_ugn/the_gnat_compilation_model.rst
*** gcc-7.3.0/gcc/ada/doc/gnat_ugn/the_gnat_compilation_model.rst	Fri Jan 13 11:23:42 2017
--- gcc-8.1.0/gcc/ada/doc/gnat_ugn/the_gnat_compilation_model.rst	Thu Nov  9 10:24:45 2017
***************
*** 1,3 ****
--- 1,5 ----
+ .. role:: switch(samp)
+ 
  .. |with| replace:: *with*
  .. |withs| replace:: *with*\ s
  .. |withed| replace:: *with*\ ed
*************** representing foreign languages (see :ref
*** 56,75 ****
  for support of non-USA character sets). The format effector characters
  are represented using their standard ASCII encodings, as follows:
  
!     =========== ======================= =========
       Character          Effect           Code
!     ----------- ----------------------- ---------
!     :kbd:`VT`    Vertical tab            `16#0B#`
!     :kbd:`HT`    Horizontal tab          `16#09#`
!     :kbd:`CR`    Carriage return         `16#0D#`
!     :kbd:`LF`    Line feed               `16#0A#`
!     :kbd:`FF`    Form feed               `16#0C#`
!     =========== ======================= =========
  
  Source files are in standard text file format. In addition, GNAT will
  recognize a wide variety of stream formats, in which the end of
  physical lines is marked by any of the following sequences:
! `LF`, `CR`, `CR-LF`, or `LF-CR`. This is useful
  in accommodating files that are imported from other operating systems.
  
  .. index:: pair: End of source file; Source file, end
--- 58,77 ----
  for support of non-USA character sets). The format effector characters
  are represented using their standard ASCII encodings, as follows:
  
!     =========== ======================= ===========
       Character          Effect           Code
!     ----------- ----------------------- -----------
!     :kbd:`VT`    Vertical tab            ``16#0B#``
!     :kbd:`HT`    Horizontal tab          ``16#09#``
!     :kbd:`CR`    Carriage return         ``16#0D#``
!     :kbd:`LF`    Line feed               ``16#0A#``
!     :kbd:`FF`    Form feed               ``16#0C#``
!     =========== ======================= ===========
  
  Source files are in standard text file format. In addition, GNAT will
  recognize a wide variety of stream formats, in which the end of
  physical lines is marked by any of the following sequences:
! ``LF``, ``CR``, ``CR-LF``, or ``LF-CR``. This is useful
  in accommodating files that are imported from other operating systems.
  
  .. index:: pair: End of source file; Source file, end
*************** in accommodating files that are imported
*** 77,83 ****
  .. index:: SUB (control character)
  
  The end of a source file is normally represented by the physical end of
! file. However, the control character `16#1A#` (:kbd:`SUB`) is also
  recognized as signalling the end of the source file. Again, this is
  provided for compatibility with other operating systems where this
  code is used to represent the end of file.
--- 79,85 ----
  .. index:: SUB (control character)
  
  The end of a source file is normally represented by the physical end of
! file. However, the control character ``16#1A#`` (:kbd:`SUB`) is also
  recognized as signalling the end of the source file. Again, this is
  provided for compatibility with other operating systems where this
  code is used to represent the end of file.
*************** code is used to represent the end of fil
*** 86,93 ****
  
  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.
  
--- 88,95 ----
  
  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.
  
*************** Latin-1
*** 108,115 ****
  .. index:: Latin-1
  
  The basic character set is Latin-1. This character set is defined by ISO
! standard 8859, part 1. The lower half (character codes `16#00#`
! ... `16#7F#)` is identical to standard ASCII coding, but the upper
  half is used to represent additional characters. These include extended letters
  used by European languages, such as French accents, the vowels with umlauts
  used in German, and the extra letter A-ring used in Swedish.
--- 110,117 ----
  .. index:: Latin-1
  
  The basic character set is Latin-1. This character set is defined by ISO
! standard 8859, part 1. The lower half (character codes ``16#00#``
! ... ``16#7F#)`` is identical to standard ASCII coding, but the upper
  half is used to represent additional characters. These include extended letters
  used by European languages, such as French accents, the vowels with umlauts
  used in German, and the extra letter A-ring used in Swedish.
*************** used in German, and the extra letter A-r
*** 117,123 ****
  .. index:: Ada.Characters.Latin_1
  
  For a complete list of Latin-1 codes and their encodings, see the source
! file of library unit `Ada.Characters.Latin_1` in file
  :file:`a-chlat1.ads`.
  You may use any of these extended characters freely in character or
  string literals. In addition, the extended characters that represent
--- 119,125 ----
  .. index:: Ada.Characters.Latin_1
  
  For a complete list of Latin-1 codes and their encodings, see the source
! file of library unit ``Ada.Characters.Latin_1`` in file
  :file:`a-chlat1.ads`.
  You may use any of these extended characters freely in character or
  string literals. In addition, the extended characters that represent
*************** possible encoding schemes:
*** 218,235 ****
  
      ESC a b c d
  
!   where `a`, `b`, `c`, `d` are the four hexadecimal
    characters (using uppercase letters) of the wide character code. For
    example, ESC A345 is used to represent the wide character with code
!   `16#A345#`.
    This scheme is compatible with use of the full Wide_Character set.
  
  *Upper-Half Coding*
    .. index:: Upper-Half Coding
  
!   The wide character with encoding `16#abcd#` where the upper bit is on
    (in other words, 'a' is in the range 8-F) is represented as two bytes,
!   `16#ab#` and `16#cd#`. The second byte cannot be a format control
    character, but is 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.
--- 220,237 ----
  
      ESC a b c d
  
!   where ``a``, ``b``, ``c``, ``d`` are the four hexadecimal
    characters (using uppercase letters) of the wide character code. For
    example, ESC A345 is used to represent the wide character with code
!   ``16#A345#``.
    This scheme is compatible with use of the full Wide_Character set.
  
  *Upper-Half Coding*
    .. index:: Upper-Half Coding
  
!   The wide character with encoding ``16#abcd#`` where the upper bit is on
    (in other words, 'a' is in the range 8-F) is represented as two bytes,
!   ``16#ab#`` and ``16#cd#``. The second byte cannot be a format control
    character, but is 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.
*************** possible encoding schemes:
*** 238,245 ****
    .. index:: 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
    described above. The internal character code is the corresponding JIS
    character according to the standard algorithm for Shift-JIS
    conversion. Only characters defined in the JIS code set table can be
--- 240,247 ----
    .. index:: 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
    described above. The internal character code is the corresponding JIS
    character according to the standard algorithm for Shift-JIS
    conversion. Only characters defined in the JIS code set table can be
*************** possible encoding schemes:
*** 250,257 ****
    .. index:: 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 character according to the EUC
    encoding algorithm. Only characters defined in the JIS code set table
    can be used with this encoding method.
--- 252,259 ----
    .. index:: 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 character according to the EUC
    encoding algorithm. Only characters defined in the JIS code set table
    can be used with this encoding method.
*************** possible encoding schemes:
*** 263,273 ****
    10646-1/Am.2. Depending on the character value, the representation
    is a one, two, or three byte sequence::
  
!     16#0000#-16#007f#: 2#0`xxxxxxx`#
!     16#0080#-16#07ff#: 2#110`xxxxx`# 2#10`xxxxxx`#
!     16#0800#-16#ffff#: 2#1110`xxxx`# 2#10`xxxxxx`# 2#10`xxxxxx`#
  
!   where the `xxx` bits correspond to the left-padded bits of the
    16-bit character value. Note that all lower half ASCII characters
    are represented as ASCII bytes and all upper half characters and
    other wide characters are represented as sequences of upper-half
--- 265,275 ----
    10646-1/Am.2. Depending on the character value, the representation
    is a one, two, or three byte sequence::
  
!     16#0000#-16#007f#: 2#0xxxxxxx#
!     16#0080#-16#07ff#: 2#110xxxxx# 2#10xxxxxx#
!     16#0800#-16#ffff#: 2#1110xxxx# 2#10xxxxxx# 2#10xxxxxx#
  
!   where the ``xxx`` bits correspond to the left-padded bits of the
    16-bit character value. Note that all lower half ASCII characters
    are represented as ASCII bytes and all upper half characters and
    other wide characters are represented as sequences of upper-half
*************** possible encoding schemes:
*** 282,293 ****
  
      [ " a b c d " ]
  
!   where `a`, `b`, `c`, `d` are the four hexadecimal
    characters (using uppercase letters) of the wide character code. For
    example, ['A345'] is used to represent the wide character with code
!   `16#A345#`. It is also possible (though not required) to use the
    Brackets coding for upper half characters. For example, the code
!   `16#A3#` can be represented as `['A3']`.
  
    This scheme is compatible with use of the full Wide_Character set,
    and is also the method used for wide character encoding in some standard
--- 284,295 ----
  
      [ " a b c d " ]
  
!   where ``a``, ``b``, ``c``, ``d`` are the four hexadecimal
    characters (using uppercase letters) of the wide character code. For
    example, ['A345'] is used to represent the wide character with code
!   ``16#A345#``. It is also possible (though not required) to use the
    Brackets coding for upper half characters. For example, the code
!   ``16#A3#`` can be represented as ``['A3']``.
  
    This scheme is compatible with use of the full Wide_Character set,
    and is also the method used for wide character encoding in some standard
*************** possible encoding schemes:
*** 323,329 ****
                                   10xxxxxx 10xxxxxx 10xxxxxx
  
  
!   where the `xxx` bits correspond to the left-padded bits of the
    32-bit character value.
  
  *Brackets Coding*
--- 325,331 ----
                                   10xxxxxx 10xxxxxx 10xxxxxx
  
  
!   where the ``xxx`` bits correspond to the left-padded bits of the
    32-bit character value.
  
  *Brackets Coding*
*************** possible encoding schemes:
*** 333,342 ****
      [ " a b c d e f " ]
      [ " a b c d e f g h " ]
  
!   where `a-h` are the six or eight hexadecimal
    characters (using uppercase letters) of the wide wide character code. For
    example, ["1F4567"] is used to represent the wide wide character with code
!   `16#001F_4567#`.
  
    This scheme is compatible with use of the full Wide_Wide_Character set,
    and is also the method used for wide wide character encoding in some standard
--- 335,344 ----
      [ " a b c d e f " ]
      [ " a b c d e f g h " ]
  
!   where ``a-h`` are the six or eight hexadecimal
    characters (using uppercase letters) of the wide wide character code. For
    example, ["1F4567"] is used to represent the wide wide character with code
!   ``16#001F_4567#``.
  
    This scheme is compatible with use of the full Wide_Wide_Character set,
    and is also the method used for wide wide character encoding in some standard
*************** lowercase for all letters.
*** 365,376 ****
  
  An exception arises if the file name generated by the above rules starts
  with one of the characters
! `a`, `g`, `i`, or `s`, and the second character is a
  minus. In this case, the character tilde is used in place
  of the minus. The reason for this special rule is to avoid clashes with
  the standard names for child units of the packages System, Ada,
  Interfaces, and GNAT, which use the prefixes
! `s-`, `a-`, `i-`, and `g-`,
  respectively.
  
  The file extension is :file:`.ads` for a spec and
--- 367,378 ----
  
  An exception arises if the file name generated by the above rules starts
  with one of the characters
! ``a``, ``g``, ``i``, or ``s``, and the second character is a
  minus. In this case, the character tilde is used in place
  of the minus. The reason for this special rule is to avoid clashes with
  the standard names for child units of the packages System, Ada,
  Interfaces, and GNAT, which use the prefixes
! ``s-``, ``a-``, ``i-``, and ``g-``,
  respectively.
  
  The file extension is :file:`.ads` for a spec and
*************** utility to produce source files that fol
*** 408,415 ****
  (For details see :ref:`Renaming_Files_with_gnatchop`.)
  
  Note: in the case of Windows or Mac OS operating systems, case is not
! significant. So for example on `Windows` if the canonical name is
! `main-sub.adb`, you can use the file name :file:`Main-Sub.adb` instead.
  However, case is significant for other operating systems, so for example,
  if you want to use other than canonically cased file names on a Unix system,
  you need to follow the procedures described in the next section.
--- 410,417 ----
  (For details see :ref:`Renaming_Files_with_gnatchop`.)
  
  Note: in the case of Windows or Mac OS operating systems, case is not
! significant. So for example on Windows if the canonical name is
! :file:`main-sub.adb`, you can use the file name :file:`Main-Sub.adb` instead.
  However, case is significant for other operating systems, so for example,
  if you want to use other than canonically cased file names on a Unix system,
  you need to follow the procedures described in the next section.
*************** GNAT allows completely arbitrary file na
*** 461,477 ****
  source file name pragma. However, if the file name specified has an
  extension other than :file:`.ads` or :file:`.adb` it is necessary to use
  a special syntax when compiling the file. The name in this case must be
! preceded by the special sequence *-x* followed by a space and the name
! of the language, here `ada`, as in:
  
  .. code-block:: sh
  
       $ gcc -c -x ada peculiar_file_name.sim
  
! `gnatmake` handles non-standard file names in the usual manner (the
  non-standard file name for the main program is simply used as the
  argument to gnatmake). Note that if the extension is also non-standard,
! then it must be included in the `gnatmake` command, it may not
  be omitted.
  
  .. _Alternative_File_Naming_Schemes:
--- 463,479 ----
  source file name pragma. However, if the file name specified has an
  extension other than :file:`.ads` or :file:`.adb` it is necessary to use
  a special syntax when compiling the file. The name in this case must be
! preceded by the special sequence ``-x`` followed by a space and the name
! of the language, here ``ada``, as in:
  
  .. code-block:: sh
  
       $ gcc -c -x ada peculiar_file_name.sim
  
! ``gnatmake`` handles non-standard file names in the usual manner (the
  non-standard file name for the main program is simply used as the
  argument to gnatmake). Note that if the extension is also non-standard,
! then it must be included in the ``gnatmake`` command, it may not
  be omitted.
  
  .. _Alternative_File_Naming_Schemes:
*************** Alternative File Naming Schemes
*** 483,489 ****
  
  .. index:: File names
  
! The previous section described the use of the `Source_File_Name`
  pragma to allow arbitrary names to be assigned to individual source files.
  However, this approach requires one pragma for each file, and especially in
  large systems can result in very long :file:`gnat.adc` files, and also create
--- 485,491 ----
  
  .. index:: File names
  
! The previous section described the use of the ``Source_File_Name``
  pragma to allow arbitrary names to be assigned to individual source files.
  However, this approach requires one pragma for each file, and especially in
  large systems can result in very long :file:`gnat.adc` files, and also create
*************** a maintenance problem.
*** 494,500 ****
  GNAT also provides a facility for specifying systematic file naming schemes
  other than the standard default naming scheme previously described. An
  alternative scheme for naming is specified by the use of
! `Source_File_Name` pragmas having the following format:
  
  .. code-block:: ada
  
--- 496,502 ----
  GNAT also provides a facility for specifying systematic file naming schemes
  other than the standard default naming scheme previously described. An
  alternative scheme for naming is specified by the use of
! ``Source_File_Name`` pragmas having the following format:
  
  .. code-block:: ada
  
*************** alternative scheme for naming is specifi
*** 516,544 ****
       FILE_NAME_PATTERN ::= STRING_LITERAL
       CASING_SPEC ::= Lowercase | Uppercase | Mixedcase
  
! The `FILE_NAME_PATTERN` string shows how the file name is constructed.
  It contains a single asterisk character, and the unit name is substituted
  systematically for this asterisk. The optional parameter
! `Casing` indicates
  whether the unit name is to be all upper-case letters, all lower-case letters,
  or mixed-case. If no
! `Casing` parameter is used, then the default is all
  lower-case.
  
! The optional `Dot_Replacement` string is used to replace any periods
! that occur in subunit or child unit names. If no `Dot_Replacement`
  argument is used then separating dots appear unchanged in the resulting
  file name.
  Although the above syntax indicates that the
! `Casing` argument must appear
! before the `Dot_Replacement` argument, but it
  is also permissible to write these arguments in the opposite order.
  
  As indicated, it is possible to specify different naming schemes for
  bodies, specs, and subunits. Quite often the rule for subunits is the
  same as the rule for bodies, in which case, there is no need to give
! a separate `Subunit_File_Name` rule, and in this case the
! `Body_File_name` rule is used for subunits as well.
  
  The separate rule for subunits can also be used to implement the rather
  unusual case of a compilation environment (e.g., a single directory) which
--- 518,546 ----
       FILE_NAME_PATTERN ::= STRING_LITERAL
       CASING_SPEC ::= Lowercase | Uppercase | Mixedcase
  
! The ``FILE_NAME_PATTERN`` string shows how the file name is constructed.
  It contains a single asterisk character, and the unit name is substituted
  systematically for this asterisk. The optional parameter
! ``Casing`` indicates
  whether the unit name is to be all upper-case letters, all lower-case letters,
  or mixed-case. If no
! ``Casing`` parameter is used, then the default is all
  lower-case.
  
! The optional ``Dot_Replacement`` string is used to replace any periods
! that occur in subunit or child unit names. If no ``Dot_Replacement``
  argument is used then separating dots appear unchanged in the resulting
  file name.
  Although the above syntax indicates that the
! ``Casing`` argument must appear
! before the ``Dot_Replacement`` argument, but it
  is also permissible to write these arguments in the opposite order.
  
  As indicated, it is possible to specify different naming schemes for
  bodies, specs, and subunits. Quite often the rule for subunits is the
  same as the rule for bodies, in which case, there is no need to give
! a separate ``Subunit_File_Name`` rule, and in this case the
! ``Body_File_name`` rule is used for subunits as well.
  
  The separate rule for subunits can also be used to implement the rather
  unusual case of a compilation environment (e.g., a single directory) which
*************** in the same environment.
*** 549,563 ****
  
  The file name translation works in the following steps:
  
! * If there is a specific `Source_File_Name` pragma for the given unit,
    then this is always used, and any general pattern rules are ignored.
  
! * If there is a pattern type `Source_File_Name` pragma that applies to
    the unit, then the resulting file name will be used if the file exists. If
    more than one pattern matches, the latest one will be tried first, and the
    first attempt resulting in a reference to a file that exists will be used.
  
! * If no pattern type `Source_File_Name` pragma that applies to the unit
    for which the corresponding file exists, then the standard GNAT default
    naming rules are used.
  
--- 551,565 ----
  
  The file name translation works in the following steps:
  
! * If there is a specific ``Source_File_Name`` pragma for the given unit,
    then this is always used, and any general pattern rules are ignored.
  
! * If there is a pattern type ``Source_File_Name`` pragma that applies to
    the unit, then the resulting file name will be used if the file exists. If
    more than one pattern matches, the latest one will be tried first, and the
    first attempt resulting in a reference to a file that exists will be used.
  
! * If no pattern type ``Source_File_Name`` pragma that applies to the unit
    for which the corresponding file exists, then the standard GNAT default
    naming rules are used.
  
*************** the same double underscore separator for
*** 613,620 ****
  
  .. _Handling_Arbitrary_File_Naming_Conventions_with_gnatname:
  
! Handling Arbitrary File Naming Conventions with `gnatname`
! ----------------------------------------------------------
  
  .. index:: File Naming Conventions
  
--- 615,622 ----
  
  .. _Handling_Arbitrary_File_Naming_Conventions_with_gnatname:
  
! Handling Arbitrary File Naming Conventions with ``gnatname``
! ------------------------------------------------------------
  
  .. index:: File Naming Conventions
  
*************** Arbitrary File Naming Conventions
*** 625,631 ****
  
  The GNAT compiler must be able to know the source file name of a compilation
  unit.  When using the standard GNAT default file naming conventions
! (`.ads` for specs, `.adb` for bodies), the GNAT compiler
  does not need additional information.
  
  When the source file names do not follow the standard GNAT default file naming
--- 627,633 ----
  
  The GNAT compiler must be able to know the source file name of a compilation
  unit.  When using the standard GNAT default file naming conventions
! (``.ads`` for specs, ``.adb`` for bodies), the GNAT compiler
  does not need additional information.
  
  When the source file names do not follow the standard GNAT default file naming
*************** conventions, the GNAT compiler must be g
*** 633,680 ****
  a configuration pragmas file (:ref:`Configuration_Pragmas`)
  or a project file.
  When the non-standard file naming conventions are well-defined,
! a small number of pragmas `Source_File_Name` specifying a naming pattern
  (:ref:`Alternative_File_Naming_Schemes`) may be sufficient. However,
  if the file naming conventions are irregular or arbitrary, a number
! of pragma `Source_File_Name` for individual compilation units
  must be defined.
  To help maintain the correspondence between compilation unit names and
  source file names within the compiler,
! GNAT provides a tool `gnatname` to generate the required pragmas for a
  set of files.
  
  .. _Running_gnatname:
  
! Running `gnatname`
! ^^^^^^^^^^^^^^^^^^
  
! The usual form of the `gnatname` command is:
  
  .. code-block:: sh
  
!       $ gnatname [`switches`] `naming_pattern` [`naming_patterns`]
!           [--and [`switches`] `naming_pattern` [`naming_patterns`]]
  
  
  All of the arguments are optional. If invoked without any argument,
! `gnatname` will display its usage.
  
! When used with at least one naming pattern, `gnatname` will attempt to
  find all the compilation units in files that follow at least one of the
  naming patterns. To find these compilation units,
! `gnatname` will use the GNAT compiler in syntax-check-only mode on all
  regular files.
  
! One or several Naming Patterns may be given as arguments to `gnatname`.
  Each Naming Pattern is enclosed between double quotes (or single
  quotes on Windows).
  A Naming Pattern is a regular expression similar to the wildcard patterns
  used in file names by the Unix shells or the DOS prompt.
  
! `gnatname` may be called with several sections of directories/patterns.
! Sections are separated by switch `--and`. In each section, there must be
  at least one pattern. If no directory is specified in a section, the current
! directory (or the project directory is `-P` is used) is implied.
  The options other that the directory switches and the patterns apply globally
  even if they are in different sections.
  
--- 635,682 ----
  a configuration pragmas file (:ref:`Configuration_Pragmas`)
  or a project file.
  When the non-standard file naming conventions are well-defined,
! a small number of pragmas ``Source_File_Name`` specifying a naming pattern
  (:ref:`Alternative_File_Naming_Schemes`) may be sufficient. However,
  if the file naming conventions are irregular or arbitrary, a number
! of pragma ``Source_File_Name`` for individual compilation units
  must be defined.
  To help maintain the correspondence between compilation unit names and
  source file names within the compiler,
! GNAT provides a tool ``gnatname`` to generate the required pragmas for a
  set of files.
  
  .. _Running_gnatname:
  
! Running ``gnatname``
! ^^^^^^^^^^^^^^^^^^^^
  
! The usual form of the ``gnatname`` command is:
  
  .. code-block:: sh
  
!       $ gnatname [ switches ]  naming_pattern  [ naming_patterns ]
!           [--and [ switches ]  naming_pattern  [ naming_patterns ]]
  
  
  All of the arguments are optional. If invoked without any argument,
! ``gnatname`` will display its usage.
  
! When used with at least one naming pattern, ``gnatname`` will attempt to
  find all the compilation units in files that follow at least one of the
  naming patterns. To find these compilation units,
! ``gnatname`` will use the GNAT compiler in syntax-check-only mode on all
  regular files.
  
! One or several Naming Patterns may be given as arguments to ``gnatname``.
  Each Naming Pattern is enclosed between double quotes (or single
  quotes on Windows).
  A Naming Pattern is a regular expression similar to the wildcard patterns
  used in file names by the Unix shells or the DOS prompt.
  
! ``gnatname`` may be called with several sections of directories/patterns.
! Sections are separated by the switch :switch:`--and`. In each section, there must be
  at least one pattern. If no directory is specified in a section, the current
! directory (or the project directory if :switch:`-P` is used) is implied.
  The options other that the directory switches and the patterns apply globally
  even if they are in different sections.
  
*************** For a more complete description of the s
*** 688,781 ****
  see the second kind of regular expressions described in :file:`g-regexp.ads`
  (the 'Glob' regular expressions).
  
! When invoked with no switch `-P`, `gnatname` will create a
  configuration pragmas file :file:`gnat.adc` in the current working directory,
! with pragmas `Source_File_Name` for each file that contains a valid Ada
  unit.
  
  .. _Switches_for_gnatname:
  
! Switches for `gnatname`
! ^^^^^^^^^^^^^^^^^^^^^^^
  
! Switches for `gnatname` must precede any specified Naming Pattern.
  
! You may specify any of the following switches to `gnatname`:
  
  .. index:: --version (gnatname)
  
! :samp:`--version`
    Display Copyright and version, then exit disregarding all other options.
  
  .. index:: --help (gnatname)
  
! :samp:`--help`
!   If *--version* was not used, display usage, then exit disregarding
    all other options.
  
! :samp:`--subdirs={dir}`
    Real object, library or exec directories are subdirectories <dir> of the
    specified ones.
  
! :samp:`--no-backup`
    Do not create a backup copy of an existing project file.
  
! :samp:`--and`
    Start another section of directories/patterns.
  
  .. index:: -c (gnatname)
  
! :samp:`-c{filename}`
    Create a configuration pragmas file :file:`filename` (instead of the default
    :file:`gnat.adc`).
!   There may be zero, one or more space between *-c* and
    :file:`filename`.
    :file:`filename` may include directory information. :file:`filename` must be
!   writable. There may be only one switch *-c*.
!   When a switch *-c* is
!   specified, no switch *-P* may be specified (see below).
  
  .. index:: -d (gnatname)
  
! :samp:`-d{dir}`
    Look for source files in directory :file:`dir`. There may be zero, one or more
!   spaces between *-d* and :file:`dir`.
!   :file:`dir` may end with `/**`, that is it may be of the form
!   `root_dir/**`. In this case, the directory `root_dir` and all of its
    subdirectories, recursively, have to be searched for sources.
!   When a switch *-d*
    is specified, the current working directory will not be searched for source
!   files, unless it is explicitly specified with a *-d*
!   or *-D* switch.
!   Several switches *-d* may be specified.
    If :file:`dir` is a relative path, it is relative to the directory of
    the configuration pragmas file specified with switch
!   *-c*,
    or to the directory of the project file specified with switch
!   *-P* or,
!   if neither switch *-c*
!   nor switch *-P* are specified, it is relative to the
    current working directory. The directory
!   specified with switch *-d* must exist and be readable.
  
  .. index:: -D (gnatname)
  
! :samp:`-D{filename}`
    Look for source files in all directories listed in text file :file:`filename`.
!   There may be zero, one or more spaces between *-D*
    and :file:`filename`.
    :file:`filename` must be an existing, readable text file.
    Each nonempty line in :file:`filename` must be a directory.
!   Specifying switch *-D* is equivalent to specifying as many
!   switches *-d* as there are nonempty lines in
    :file:`file`.
  
! :samp:`-eL`
    Follow symbolic links when processing project files.
  
    .. index:: -f (gnatname)
  
! :samp:`-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.
    It is only useful if a -P switch is used.
--- 690,783 ----
  see the second kind of regular expressions described in :file:`g-regexp.ads`
  (the 'Glob' regular expressions).
  
! When invoked without the switch :switch:`-P`, ``gnatname`` will create a
  configuration pragmas file :file:`gnat.adc` in the current working directory,
! with pragmas ``Source_File_Name`` for each file that contains a valid Ada
  unit.
  
  .. _Switches_for_gnatname:
  
! Switches for ``gnatname``
! ^^^^^^^^^^^^^^^^^^^^^^^^^
  
! Switches for ``gnatname`` must precede any specified Naming Pattern.
  
! You may specify any of the following switches to ``gnatname``:
  
  .. index:: --version (gnatname)
  
! :switch:`--version`
    Display Copyright and version, then exit disregarding all other options.
  
  .. index:: --help (gnatname)
  
! :switch:`--help`
!   If :switch:`--version` was not used, display usage, then exit disregarding
    all other options.
  
! :switch:`--subdirs={dir}`
    Real object, library or exec directories are subdirectories <dir> of the
    specified ones.
  
! :switch:`--no-backup`
    Do not create a backup copy of an existing project file.
  
! :switch:`--and`
    Start another section of directories/patterns.
  
  .. index:: -c (gnatname)
  
! :switch:`-c{filename}`
    Create a configuration pragmas file :file:`filename` (instead of the default
    :file:`gnat.adc`).
!   There may be zero, one or more space between :switch:`-c` and
    :file:`filename`.
    :file:`filename` may include directory information. :file:`filename` must be
!   writable. There may be only one switch :switch:`-c`.
!   When a switch :switch:`-c` is
!   specified, no switch :switch:`-P` may be specified (see below).
  
  .. index:: -d (gnatname)
  
! :switch:`-d{dir}`
    Look for source files in directory :file:`dir`. There may be zero, one or more
!   spaces between :switch:`-d` and :file:`dir`.
!   :file:`dir` may end with ``/**``, that is it may be of the form
!   ``root_dir/**``. In this case, the directory ``root_dir`` and all of its
    subdirectories, recursively, have to be searched for sources.
!   When a switch :switch:`-d`
    is specified, the current working directory will not be searched for source
!   files, unless it is explicitly specified with a :switch:`-d`
!   or :switch:`-D` switch.
!   Several switches :switch:`-d` may be specified.
    If :file:`dir` is a relative path, it is relative to the directory of
    the configuration pragmas file specified with switch
!   :switch:`-c`,
    or to the directory of the project file specified with switch
!   :switch:`-P` or,
!   if neither switch :switch:`-c`
!   nor switch :switch:`-P` are specified, it is relative to the
    current working directory. The directory
!   specified with switch :switch:`-d` must exist and be readable.
  
  .. index:: -D (gnatname)
  
! :switch:`-D{filename}`
    Look for source files in all directories listed in text file :file:`filename`.
!   There may be zero, one or more spaces between :switch:`-D`
    and :file:`filename`.
    :file:`filename` must be an existing, readable text file.
    Each nonempty line in :file:`filename` must be a directory.
!   Specifying switch :switch:`-D` is equivalent to specifying as many
!   switches :switch:`-d` as there are nonempty lines in
    :file:`file`.
  
! :switch:`-eL`
    Follow symbolic links when processing project files.
  
    .. index:: -f (gnatname)
  
! :switch:`-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.
    It is only useful if a -P switch is used.
*************** You may specify any of the following swi
*** 791,816 ****
  
    .. index:: -h (gnatname)
  
! :samp:`-h`
    Output usage (help) information. The output is written to :file:`stdout`.
  
    .. index:: -P (gnatname)
  
! :samp:`-P{proj}`
    Create or update project file :file:`proj`. There may be zero, one or more space
!   between *-P* and :file:`proj`. :file:`proj` may include directory
    information. :file:`proj` must be writable.
!   There may be only one switch *-P*.
!   When a switch *-P* is specified,
!   no switch *-c* may be specified.
!   On all platforms, except on VMS, when `gnatname` is invoked for an
    existing project file <proj>.gpr, a backup copy of the project file is created
    in the project directory with file name <proj>.gpr.saved_x. 'x' is the first
    non negative number that makes this backup copy a new file.
  
    .. index:: -v (gnatname)
  
! :samp:`-v`
    Verbose mode. Output detailed explanation of behavior to :file:`stdout`.
    This includes name of the file written, the name of the directories to search
    and, for each file in those directories whose name matches at least one of
--- 793,818 ----
  
    .. index:: -h (gnatname)
  
! :switch:`-h`
    Output usage (help) information. The output is written to :file:`stdout`.
  
    .. index:: -P (gnatname)
  
! :switch:`-P{proj}`
    Create or update project file :file:`proj`. There may be zero, one or more space
!   between :switch:`-P` and :file:`proj`. :file:`proj` may include directory
    information. :file:`proj` must be writable.
!   There may be only one switch :switch:`-P`.
!   When a switch :switch:`-P` is specified,
!   no switch :switch:`-c` may be specified.
!   On all platforms, except on VMS, when ``gnatname`` is invoked for an
    existing project file <proj>.gpr, a backup copy of the project file is created
    in the project directory with file name <proj>.gpr.saved_x. 'x' is the first
    non negative number that makes this backup copy a new file.
  
    .. index:: -v (gnatname)
  
! :switch:`-v`
    Verbose mode. Output detailed explanation of behavior to :file:`stdout`.
    This includes name of the file written, the name of the directories to search
    and, for each file in those directories whose name matches at least one of
*************** You may specify any of the following swi
*** 819,832 ****
  
  .. index:: -v -v (gnatname)
  
! :samp:`-v -v`
    Very Verbose mode. In addition to the output produced in verbose mode,
    for each file in the searched directories whose name matches none of
    the Naming Patterns, an indication is given that there is no match.
  
    .. index:: -x (gnatname)
  
! :samp:`-x{pattern}`
    Excluded patterns. Using this switch, it is possible to exclude some files
    that would match the name patterns. For example,
  
--- 821,834 ----
  
  .. index:: -v -v (gnatname)
  
! :switch:`-v -v`
    Very Verbose mode. In addition to the output produced in verbose mode,
    for each file in the searched directories whose name matches none of
    the Naming Patterns, an indication is given that there is no match.
  
    .. index:: -x (gnatname)
  
! :switch:`-x{pattern}`
    Excluded patterns. Using this switch, it is possible to exclude some files
    that would match the name patterns. For example,
  
*************** You may specify any of the following swi
*** 840,847 ****
  
  .. _Examples_of_gnatname_Usage:
  
! Examples of `gnatname` Usage
! ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  
  .. code-block:: sh
  
--- 842,849 ----
  
  .. _Examples_of_gnatname_Usage:
  
! Examples of ``gnatname`` Usage
! ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  
  .. code-block:: sh
  
*************** Examples of `gnatname` Usage
*** 850,887 ****
  In this example, the directory :file:`/home/me` must already exist
  and be writable. In addition, the directory
  :file:`/home/me/sources` (specified by
! *-d sources*) must exist and be readable.
  
! Note the optional spaces after *-c* and *-d*.
  
  .. code-block:: sh
  
       $ gnatname -P/home/me/proj -x "*_nt_body.ada"
       -dsources -dsources/plus -Dcommon_dirs.txt "body_*" "spec_*"
  
! Note that several switches *-d* may be used,
  even in conjunction with one or several switches
! *-D*. Several Naming Patterns and one excluded pattern
  are used in this example.
  
  
  .. _File_Name_Krunching_with_gnatkr:
  
! File Name Krunching with `gnatkr`
! ---------------------------------
  
  .. index:: ! gnatkr
  
  This section discusses the method used by the compiler to shorten
  the default file names chosen for Ada units so that they do not
  exceed the maximum length permitted. It also describes the
! `gnatkr` utility that can be used to determine the result of
  applying this shortening.
  
  .. _About_gnatkr:
  
! About `gnatkr`
! ^^^^^^^^^^^^^^
  
  The default file naming rule in GNAT
  is that the file name must be derived from
--- 852,889 ----
  In this example, the directory :file:`/home/me` must already exist
  and be writable. In addition, the directory
  :file:`/home/me/sources` (specified by
! :switch:`-d sources`) must exist and be readable.
  
! Note the optional spaces after :switch:`-c` and :switch:`-d`.
  
  .. code-block:: sh
  
       $ gnatname -P/home/me/proj -x "*_nt_body.ada"
       -dsources -dsources/plus -Dcommon_dirs.txt "body_*" "spec_*"
  
! Note that several switches :switch:`-d` may be used,
  even in conjunction with one or several switches
! :switch:`-D`. Several Naming Patterns and one excluded pattern
  are used in this example.
  
  
  .. _File_Name_Krunching_with_gnatkr:
  
! File Name Krunching with ``gnatkr``
! -----------------------------------
  
  .. index:: ! gnatkr
  
  This section discusses the method used by the compiler to shorten
  the default file names chosen for Ada units so that they do not
  exceed the maximum length permitted. It also describes the
! ``gnatkr`` utility that can be used to determine the result of
  applying this shortening.
  
  .. _About_gnatkr:
  
! About ``gnatkr``
! ^^^^^^^^^^^^^^^^
  
  The default file naming rule in GNAT
  is that the file name must be derived from
*************** the unit name. The exact default rule is
*** 902,927 ****
    :samp:`s-`, :samp:`a-`, :samp:`i-`, and :samp:`g-`,
    respectively.
  
! The :samp:`-gnatk{nn}`
  switch of the compiler activates a 'krunching'
  circuit that limits file names to nn characters (where nn is a decimal
  integer).
  
! The `gnatkr` utility can be used to determine the krunched name for
  a given file, when krunched to a specified maximum length.
  
  .. _Using_gnatkr:
  
! Using `gnatkr`
! ^^^^^^^^^^^^^^
  
! The `gnatkr` command has the form:
  
  .. code-block:: sh
  
!       $ gnatkr `name` [`length`]
  
! `name` is the uncrunched file name, derived from the name of the unit
  in the standard manner described in the previous section (i.e., in particular
  all dots are replaced by hyphens). The file name may or may not have an
  extension (defined as a suffix of the form period followed by arbitrary
--- 904,929 ----
    :samp:`s-`, :samp:`a-`, :samp:`i-`, and :samp:`g-`,
    respectively.
  
! The :switch:`-gnatk{nn}`
  switch of the compiler activates a 'krunching'
  circuit that limits file names to nn characters (where nn is a decimal
  integer).
  
! The ``gnatkr`` utility can be used to determine the krunched name for
  a given file, when krunched to a specified maximum length.
  
  .. _Using_gnatkr:
  
! Using ``gnatkr``
! ^^^^^^^^^^^^^^^^
  
! The ``gnatkr`` command has the form:
  
  .. code-block:: sh
  
!       $ gnatkr name [ length ]
  
! ``name`` is the uncrunched file name, derived from the name of the unit
  in the standard manner described in the previous section (i.e., in particular
  all dots are replaced by hyphens). The file name may or may not have an
  extension (defined as a suffix of the form period followed by arbitrary
*************** characters other than period). If an ext
*** 929,937 ****
  be preserved in the output. For example, when krunching :file:`hellofile.ads`
  to eight characters, the result will be hellofil.ads.
  
! Note: for compatibility with previous versions of `gnatkr` dots may
  appear in the name instead of hyphens, but the last dot will always be
! taken as the start of an extension. So if `gnatkr` is given an argument
  such as :file:`Hello.World.adb` it will be treated exactly as if the first
  period had been a hyphen, and for example krunching to eight characters
  gives the result :file:`hellworl.adb`.
--- 931,939 ----
  be preserved in the output. For example, when krunching :file:`hellofile.ads`
  to eight characters, the result will be hellofil.ads.
  
! Note: for compatibility with previous versions of ``gnatkr`` dots may
  appear in the name instead of hyphens, but the last dot will always be
! taken as the start of an extension. So if ``gnatkr`` is given an argument
  such as :file:`Hello.World.adb` it will be treated exactly as if the first
  period had been a hyphen, and for example krunching to eight characters
  gives the result :file:`hellworl.adb`.
*************** gives the result :file:`hellworl.adb`.
*** 939,945 ****
  Note that the result is always all lower case.
  Characters of the other case are folded as required.
  
! `length` represents the length of the krunched name. The default
  when no argument is given is 8 characters. A length of zero stands for
  unlimited, in other words do not chop except for system files where the
  implied crunching length is always eight characters.
--- 941,947 ----
  Note that the result is always all lower case.
  Characters of the other case are folded as required.
  
! ``length`` represents the length of the krunched name. The default
  when no argument is given is 8 characters. A length of zero stands for
  unlimited, in other words do not chop except for system files where the
  implied crunching length is always eight characters.
*************** using lowercase
*** 959,966 ****
  for all letters, except that a hyphen in the second character position is
  replaced by a tilde if the first character is
  :samp:`a`, :samp:`i`, :samp:`g`, or :samp:`s`.
! The extension is `.ads` for a
! spec and `.adb` for a body.
  Krunching does not affect the extension, but the file name is shortened to
  the specified length by following these rules:
  
--- 961,968 ----
  for all letters, except that a hyphen in the second character position is
  replaced by a tilde if the first character is
  :samp:`a`, :samp:`i`, :samp:`g`, or :samp:`s`.
! The extension is ``.ads`` for a
! spec and ``.adb`` for a body.
  Krunching does not affect the extension, but the file name is shortened to
  the specified length by following these rules:
  
*************** the specified length by following these
*** 1027,1039 ****
  Of course no file shortening algorithm can guarantee uniqueness over all
  possible unit names, and if file name krunching is used then it is your
  responsibility to ensure that no name clashes occur. The utility
! program `gnatkr` is supplied for conveniently determining the
  krunched name of a file.
  
  .. _Examples_of_gnatkr_Usage:
  
! Examples of `gnatkr` Usage
! ^^^^^^^^^^^^^^^^^^^^^^^^^^
  
  ::
  
--- 1029,1041 ----
  Of course no file shortening algorithm can guarantee uniqueness over all
  possible unit names, and if file name krunching is used then it is your
  responsibility to ensure that no name clashes occur. The utility
! program ``gnatkr`` is supplied for conveniently determining the
  krunched name of a file.
  
  .. _Examples_of_gnatkr_Usage:
  
! Examples of ``gnatkr`` Usage
! ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  
  ::
  
*************** Examples of `gnatkr` Usage
*** 1047,1059 ****
  
  .. _Renaming_Files_with_gnatchop:
  
! Renaming Files with `gnatchop`
! ------------------------------
  
  .. index:: ! gnatchop
  
  This section discusses how to handle files with multiple units by using
! the `gnatchop` utility. This utility is also useful in renaming
  files to meet the standard GNAT default file naming conventions.
  
  .. _Handling_Files_with_Multiple_Units:
--- 1049,1061 ----
  
  .. _Renaming_Files_with_gnatchop:
  
! Renaming Files with ``gnatchop``
! --------------------------------
  
  .. index:: ! gnatchop
  
  This section discusses how to handle files with multiple units by using
! the ``gnatchop`` utility. This utility is also useful in renaming
  files to meet the standard GNAT default file naming conventions.
  
  .. _Handling_Files_with_Multiple_Units:
*************** The basic compilation model of GNAT requ
*** 1065,1085 ****
  compiler have only one unit and there be a strict correspondence
  between the file name and the unit name.
  
! The `gnatchop` utility allows both of these rules to be relaxed,
  allowing GNAT to process files which contain multiple compilation units
! and files with arbitrary file names. `gnatchop`
  reads the specified file and generates one or more output files,
  containing one unit per file. The unit and the file name correspond,
  as required by GNAT.
  
  If you want to permanently restructure a set of 'foreign' files so that
  they match the GNAT rules, and do the remaining development using the
! GNAT structure, you can simply use *gnatchop* once, generate the
  new set of files and work with them from that point on.
  
  Alternatively, if you want to keep your files in the 'foreign' format,
  perhaps to maintain compatibility with some other Ada compilation
! system, you can set up a procedure where you use *gnatchop* each
  time you compile, regarding the source files that it writes as temporary
  files that you throw away.
  
--- 1067,1087 ----
  compiler have only one unit and there be a strict correspondence
  between the file name and the unit name.
  
! The ``gnatchop`` utility allows both of these rules to be relaxed,
  allowing GNAT to process files which contain multiple compilation units
! and files with arbitrary file names. ``gnatchop``
  reads the specified file and generates one or more output files,
  containing one unit per file. The unit and the file name correspond,
  as required by GNAT.
  
  If you want to permanently restructure a set of 'foreign' files so that
  they match the GNAT rules, and do the remaining development using the
! GNAT structure, you can simply use ``gnatchop`` once, generate the
  new set of files and work with them from that point on.
  
  Alternatively, if you want to keep your files in the 'foreign' format,
  perhaps to maintain compatibility with some other Ada compilation
! system, you can set up a procedure where you use ``gnatchop`` each
  time you compile, regarding the source files that it writes as temporary
  files that you throw away.
  
*************** automatically in UTF-8 mode without need
*** 1093,1099 ****
  Operating gnatchop in Compilation Mode
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  
! The basic function of `gnatchop` is to take a file with multiple units
  and split it into separate files. The boundary between files is reasonably
  clear, except for the issue of comments and pragmas. In default mode, the
  rule is that any pragmas between units belong to the previous unit, except
--- 1095,1101 ----
  Operating gnatchop in Compilation Mode
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  
! The basic function of ``gnatchop`` is to take a file with multiple units
  and split it into separate files. The boundary between files is reasonably
  clear, except for the issue of comments and pragmas. In default mode, the
  rule is that any pragmas between units belong to the previous unit, except
*************** almost always result in the right choice
*** 1103,1119 ****
  the split point without needing to mark it explicitly and most users will
  find this default to be what they want. In this default mode it is incorrect to
  submit a file containing only configuration pragmas, or one that ends in
! configuration pragmas, to `gnatchop`.
  
  However, using a special option to activate 'compilation mode',
! `gnatchop`
  can perform another function, which is to provide exactly the semantics
  required by the RM for handling of configuration pragmas in a compilation.
  In the absence of configuration pragmas (at the main file level), this
  option has no effect, but it causes such configuration pragmas to be handled
  in a quite different manner.
  
! First, in compilation mode, if `gnatchop` is given a file that consists of
  only configuration pragmas, then this file is appended to the
  :file:`gnat.adc` file in the current directory. This behavior provides
  the required behavior described in the RM for the actions to be taken
--- 1105,1121 ----
  the split point without needing to mark it explicitly and most users will
  find this default to be what they want. In this default mode it is incorrect to
  submit a file containing only configuration pragmas, or one that ends in
! configuration pragmas, to ``gnatchop``.
  
  However, using a special option to activate 'compilation mode',
! ``gnatchop``
  can perform another function, which is to provide exactly the semantics
  required by the RM for handling of configuration pragmas in a compilation.
  In the absence of configuration pragmas (at the main file level), this
  option has no effect, but it causes such configuration pragmas to be handled
  in a quite different manner.
  
! First, in compilation mode, if ``gnatchop`` is given a file that consists of
  only configuration pragmas, then this file is appended to the
  :file:`gnat.adc` file in the current directory. This behavior provides
  the required behavior described in the RM for the actions to be taken
*************** environment. Using GNAT, the current dir
*** 1124,1130 ****
  of a compilation environment. For more information on the
  :file:`gnat.adc` file, see :ref:`Handling_of_Configuration_Pragmas`.
  
! Second, in compilation mode, if `gnatchop`
  is given a file that starts with
  configuration pragmas, and contains one or more units, then these
  configuration pragmas are prepended to each of the chopped files. This
--- 1126,1132 ----
  of a compilation environment. For more information on the
  :file:`gnat.adc` file, see :ref:`Handling_of_Configuration_Pragmas`.
  
! Second, in compilation mode, if ``gnatchop``
  is given a file that starts with
  configuration pragmas, and contains one or more units, then these
  configuration pragmas are prepended to each of the chopped files. This
*************** a unit. This provides the required RM be
*** 1140,1160 ****
  pragmas other than those preceding the first compilation unit of a
  compilation.
  
! For most purposes, `gnatchop` will be used in default mode. The
  compilation mode described above is used only if you need exactly
  accurate behavior with respect to compilations, and you have files
  that contain multiple units and configuration pragmas. In this
! circumstance the use of `gnatchop` with the compilation mode
  switch provides the required behavior, and is for example the mode
  in which GNAT processes the ACVC tests.
  
  
  .. _Command_Line_for_gnatchop:
  
! Command Line for `gnatchop`
! ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  
! The `gnatchop` command has the form:
  
  .. code-block:: sh
  
--- 1142,1162 ----
  pragmas other than those preceding the first compilation unit of a
  compilation.
  
! For most purposes, ``gnatchop`` will be used in default mode. The
  compilation mode described above is used only if you need exactly
  accurate behavior with respect to compilations, and you have files
  that contain multiple units and configuration pragmas. In this
! circumstance the use of ``gnatchop`` with the compilation mode
  switch provides the required behavior, and is for example the mode
  in which GNAT processes the ACVC tests.
  
  
  .. _Command_Line_for_gnatchop:
  
! Command Line for ``gnatchop``
! ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  
! The ``gnatchop`` command has the form:
  
  .. code-block:: sh
  
*************** There are no restrictions on the form of
*** 1166,1175 ****
  contains one or more Ada units, in normal GNAT format, concatenated
  together. As shown, more than one file may be presented to be chopped.
  
! When run in default mode, `gnatchop` generates one output file in
  the current directory for each unit in each of the files.
  
! `directory`, if specified, gives the name of the directory to which
  the output files will be written. If it is not specified, all files are
  written to the current directory.
  
--- 1168,1177 ----
  contains one or more Ada units, in normal GNAT format, concatenated
  together. As shown, more than one file may be presented to be chopped.
  
! When run in default mode, ``gnatchop`` generates one output file in
  the current directory for each unit in each of the files.
  
! ``directory``, if specified, gives the name of the directory to which
  the output files will be written. If it is not specified, all files are
  written to the current directory.
  
*************** will not produce any new file and will r
*** 1224,1329 ****
  
  .. _Switches_for_gnatchop:
  
! Switches for `gnatchop`
! ^^^^^^^^^^^^^^^^^^^^^^^
  
! *gnatchop* recognizes the following switches:
  
  
  .. index:: --version (gnatchop)
  
! :samp:`--version`
    Display Copyright and version, then exit disregarding all other options.
  
  .. index:: --help (gnatchop)
  
! :samp:`--help`
!   If *--version* was not used, display usage, then exit disregarding
    all other options.
  
  .. index:: -c (gnatchop)
  
! :samp:`-c`
!   Causes `gnatchop` to operate in compilation mode, in which
    configuration pragmas are handled according to strict RM rules. See
    previous section for a full description of this mode.
  
! :samp:`-gnat{xxx}`
!   This passes the given *-gnat`xxx*` switch to `gnat` which is
!   used to parse the given file. Not all `xxx` options make sense,
!   but for example, the use of *-gnati2* allows `gnatchop` to
    process a source file that uses Latin-2 coding for identifiers.
  
! :samp:`-h`
!   Causes `gnatchop` to generate a brief help summary to the standard
    output file showing usage information.
  
  .. index:: -k (gnatchop)
  
! :samp:`-k{mm}`
!   Limit generated file names to the specified number `mm`
    of characters.
    This is useful if the
    resulting set of files is required to be interoperable with systems
    which limit the length of file names.
!   No space is allowed between the *-k* and the numeric value. The numeric
!   value may be omitted in which case a default of *-k8*,
    suitable for use
!   with DOS-like file systems, is used. If no *-k* switch
    is present then
    there is no limit on the length of file names.
  
  .. index:: -p (gnatchop)
  
! :samp:`-p`
    Causes the file modification time stamp of the input file to be
    preserved and used for the time stamp of the output file(s). This may be
    useful for preserving coherency of time stamps in an environment where
!   `gnatchop` is used as part of a standard build process.
  
  .. index:: -q (gnatchop)
  
! :samp:`-q`
    Causes output of informational messages indicating the set of generated
    files to be suppressed. Warnings and error messages are unaffected.
  
  .. index:: -r (gnatchop)
  .. index:: Source_Reference pragmas
  
! :samp:`-r`
!   Generate `Source_Reference` pragmas. Use this switch if the output
    files are regarded as temporary and development is to be done in terms
    of the original unchopped file. This switch causes
!   `Source_Reference` pragmas to be inserted into each of the
    generated files to refers back to the original file name and line number.
    The result is that all error messages refer back to the original
    unchopped file.
    In addition, the debugging information placed into the object file (when
!   the *-g* switch of *gcc* or *gnatmake* is
    specified)
    also refers back to this original file so that tools like profilers and
    debuggers will give information in terms of the original unchopped file.
  
    If the original file to be chopped itself contains
!   a `Source_Reference`
    pragma referencing a third file, then gnatchop respects
!   this pragma, and the generated `Source_Reference` pragmas
    in the chopped file refer to the original file, with appropriate
!   line numbers. This is particularly useful when `gnatchop`
!   is used in conjunction with `gnatprep` to compile files that
    contain preprocessing statements and multiple units.
  
  .. index:: -v (gnatchop)
  
! :samp:`-v`
!   Causes `gnatchop` to operate in verbose mode. The version
    number and copyright notice are output, as well as exact copies of
    the gnat1 commands spawned to obtain the chop control information.
  
  .. index:: -w (gnatchop)
  
! :samp:`-w`
!   Overwrite existing file names. Normally `gnatchop` regards it as a
    fatal error if there is already a file with the same name as a
    file it would otherwise output, in other words if the files to be
    chopped contain duplicated units. This switch bypasses this
--- 1226,1331 ----
  
  .. _Switches_for_gnatchop:
  
! Switches for ``gnatchop``
! ^^^^^^^^^^^^^^^^^^^^^^^^^
  
! ``gnatchop`` recognizes the following switches:
  
  
  .. index:: --version (gnatchop)
  
! :switch:`--version`
    Display Copyright and version, then exit disregarding all other options.
  
  .. index:: --help (gnatchop)
  
! :switch:`--help`
!   If :switch:`--version` was not used, display usage, then exit disregarding
    all other options.
  
  .. index:: -c (gnatchop)
  
! :switch:`-c`
!   Causes ``gnatchop`` to operate in compilation mode, in which
    configuration pragmas are handled according to strict RM rules. See
    previous section for a full description of this mode.
  
! :switch:`-gnat{xxx}`
!   This passes the given :switch:`-gnat{xxx}` switch to ``gnat`` which is
!   used to parse the given file. Not all *xxx* options make sense,
!   but for example, the use of :switch:`-gnati2` allows ``gnatchop`` to
    process a source file that uses Latin-2 coding for identifiers.
  
! :switch:`-h`
!   Causes ``gnatchop`` to generate a brief help summary to the standard
    output file showing usage information.
  
  .. index:: -k (gnatchop)
  
! :switch:`-k{mm}`
!   Limit generated file names to the specified number ``mm``
    of characters.
    This is useful if the
    resulting set of files is required to be interoperable with systems
    which limit the length of file names.
!   No space is allowed between the :switch:`-k` and the numeric value. The numeric
!   value may be omitted in which case a default of :switch:`-k8`,
    suitable for use
!   with DOS-like file systems, is used. If no :switch:`-k` switch
    is present then
    there is no limit on the length of file names.
  
  .. index:: -p (gnatchop)
  
! :switch:`-p`
    Causes the file modification time stamp of the input file to be
    preserved and used for the time stamp of the output file(s). This may be
    useful for preserving coherency of time stamps in an environment where
!   ``gnatchop`` is used as part of a standard build process.
  
  .. index:: -q (gnatchop)
  
! :switch:`-q`
    Causes output of informational messages indicating the set of generated
    files to be suppressed. Warnings and error messages are unaffected.
  
  .. index:: -r (gnatchop)
  .. index:: Source_Reference pragmas
  
! :switch:`-r`
!   Generate ``Source_Reference`` pragmas. Use this switch if the output
    files are regarded as temporary and development is to be done in terms
    of the original unchopped file. This switch causes
!   ``Source_Reference`` pragmas to be inserted into each of the
    generated files to refers back to the original file name and line number.
    The result is that all error messages refer back to the original
    unchopped file.
    In addition, the debugging information placed into the object file (when
!   the :switch:`-g` switch of ``gcc`` or ``gnatmake`` is
    specified)
    also refers back to this original file so that tools like profilers and
    debuggers will give information in terms of the original unchopped file.
  
    If the original file to be chopped itself contains
!   a ``Source_Reference``
    pragma referencing a third file, then gnatchop respects
!   this pragma, and the generated ``Source_Reference`` pragmas
    in the chopped file refer to the original file, with appropriate
!   line numbers. This is particularly useful when ``gnatchop``
!   is used in conjunction with ``gnatprep`` to compile files that
    contain preprocessing statements and multiple units.
  
  .. index:: -v (gnatchop)
  
! :switch:`-v`
!   Causes ``gnatchop`` to operate in verbose mode. The version
    number and copyright notice are output, as well as exact copies of
    the gnat1 commands spawned to obtain the chop control information.
  
  .. index:: -w (gnatchop)
  
! :switch:`-w`
!   Overwrite existing file names. Normally ``gnatchop`` regards it as a
    fatal error if there is already a file with the same name as a
    file it would otherwise output, in other words if the files to be
    chopped contain duplicated units. This switch bypasses this
*************** Switches for `gnatchop`
*** 1332,1346 ****
  
  .. index:: --GCC= (gnatchop)
  
! :samp:`--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.
  
  
  .. _Examples_of_gnatchop_Usage:
  
! Examples of `gnatchop` Usage
! ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  
  .. code-block:: sh
  
--- 1334,1348 ----
  
  .. index:: --GCC= (gnatchop)
  
! :switch:`--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.
  
  
  .. _Examples_of_gnatchop_Usage:
  
! Examples of ``gnatchop`` Usage
! ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  
  .. code-block:: sh
  
*************** directory are modified).
*** 1358,1368 ****
  
  Chops the source file :file:`archive`
  into the current directory. One
! useful application of `gnatchop` is in sending sets of sources
  around, for example in email messages. The required sources are simply
! concatenated (for example, using a Unix `cat`
  command), and then
! *gnatchop* is used at the other end to reconstitute the original
  file names.
  
  .. code-block:: sh
--- 1360,1370 ----
  
  Chops the source file :file:`archive`
  into the current directory. One
! useful application of ``gnatchop`` is in sending sets of sources
  around, for example in email messages. The required sources are simply
! concatenated (for example, using a Unix ``cat``
  command), and then
! ``gnatchop`` is used at the other end to reconstitute the original
  file names.
  
  .. code-block:: sh
*************** Chops all units in files :file:`file1`,
*** 1373,1379 ****
  the resulting files in the directory :file:`direc`. Note that if any units
  occur more than once anywhere within this set of files, an error message
  is generated, and no files are written. To override this check, use the
! *-w* switch,
  in which case the last occurrence in the last file will
  be the one that is output, and earlier duplicate occurrences for a given
  unit will be skipped.
--- 1375,1381 ----
  the resulting files in the directory :file:`direc`. Note that if any units
  occur more than once anywhere within this set of files, an error message
  is generated, and no files are written. To override this check, use the
! :switch:`-w` switch,
  in which case the last occurrence in the last file will
  be the one that is output, and earlier duplicate occurrences for a given
  unit will be skipped.
*************** Configuration Pragmas
*** 1390,1399 ****
  Configuration pragmas include those pragmas described as
  such in the Ada Reference Manual, as well as
  implementation-dependent pragmas that are configuration pragmas.
! See the `Implementation_Defined_Pragmas` chapter in the
  :title:`GNAT_Reference_Manual` for details on these
  additional GNAT-specific configuration pragmas.
! Most notably, the pragma `Source_File_Name`, which allows
  specifying non-default names for source files, is a configuration
  pragma. The following is a complete list of configuration pragmas
  recognized by GNAT::
--- 1392,1401 ----
  Configuration pragmas include those pragmas described as
  such in the Ada Reference Manual, as well as
  implementation-dependent pragmas that are configuration pragmas.
! See the ``Implementation_Defined_Pragmas`` chapter in the
  :title:`GNAT_Reference_Manual` for details on these
  additional GNAT-specific configuration pragmas.
! Most notably, the pragma ``Source_File_Name``, which allows
  specifying non-default names for source files, is a configuration
  pragma. The following is a complete list of configuration pragmas
  recognized by GNAT::
*************** recognized by GNAT::
*** 1409,1450 ****
       Assertion_Policy
       Assume_No_Invalid_Values
       C_Pass_By_Copy
       Check_Name
       Check_Policy
       Compile_Time_Error
       Compile_Time_Warning
       Compiler_Unit
       Component_Alignment
       Convention_Identifier
       Debug_Policy
       Detect_Blocking
       Default_Storage_Pool
       Discard_Names
       Elaboration_Checks
       Eliminate
       Extend_System
       Extensions_Allowed
       External_Name_Casing
       Fast_Math
       Favor_Top_Level
!      Float_Representation
       Implicit_Packing
       Initialize_Scalars
       Interrupt_State
       License
       Locking_Policy
!      Long_Float
       No_Run_Time
       No_Strict_Aliasing
       Normalize_Scalars
       Optimize_Alignment
       Persistent_BSS
       Polling
       Priority_Specific_Dispatching
       Profile
       Profile_Warnings
       Propagate_Exceptions
       Queuing_Policy
       Ravenscar
       Rename_Pragma
       Restricted_Run_Time
--- 1411,1463 ----
       Assertion_Policy
       Assume_No_Invalid_Values
       C_Pass_By_Copy
+      Check_Float_Overflow
       Check_Name
       Check_Policy
       Compile_Time_Error
       Compile_Time_Warning
       Compiler_Unit
+      Compiler_Unit_Warning
       Component_Alignment
       Convention_Identifier
       Debug_Policy
       Detect_Blocking
+      Default_Scalar_Storage_Order
       Default_Storage_Pool
+      Disable_Atomic_Synchronization
       Discard_Names
       Elaboration_Checks
       Eliminate
+      Enable_Atomic_Synchronization
       Extend_System
       Extensions_Allowed
       External_Name_Casing
       Fast_Math
       Favor_Top_Level
!      Ignore_Pragma
       Implicit_Packing
       Initialize_Scalars
       Interrupt_State
       License
       Locking_Policy
!      No_Component_Reordering
!      No_Heap_Finalization
       No_Run_Time
       No_Strict_Aliasing
       Normalize_Scalars
       Optimize_Alignment
+      Overflow_Mode
+      Overriding_Renamings
+      Partition_Elaboration_Policy
       Persistent_BSS
       Polling
+      Prefix_Exception_Messages
       Priority_Specific_Dispatching
       Profile
       Profile_Warnings
       Propagate_Exceptions
       Queuing_Policy
+      Rational
       Ravenscar
       Rename_Pragma
       Restricted_Run_Time
*************** recognized by GNAT::
*** 1452,1457 ****
--- 1465,1471 ----
       Restrictions_Warnings
       Reviewable
       Short_Circuit_And_Or
+      Short_Descriptors
       Source_File_Name
       Source_File_Name_Project
       SPARK_Mode
*************** recognized by GNAT::
*** 1459,1468 ****
--- 1473,1484 ----
       Suppress
       Suppress_Exception_Locations
       Task_Dispatching_Policy
+      Unevaluated_Use_Of_Old
       Universal_Data
       Unsuppress
       Use_VADS_Size
       Validity_Checks
+      Warning_As_Error
       Warnings
       Wide_Character_Encoding
  
*************** Configuration pragmas may either appear
*** 1476,1482 ****
  unit, or they can appear in a configuration pragma file to apply to
  all compilations performed in a given compilation environment.
  
! GNAT also provides the `gnatchop` utility to provide an automatic
  way to handle configuration pragmas following the semantics for
  compilations (that is, files with multiple units), described in the RM.
  See :ref:`Operating_gnatchop_in_Compilation_Mode` for details.
--- 1492,1498 ----
  unit, or they can appear in a configuration pragma file to apply to
  all compilations performed in a given compilation environment.
  
! GNAT also provides the ``gnatchop`` utility to provide an automatic
  way to handle configuration pragmas following the semantics for
  compilations (that is, files with multiple units), described in the RM.
  See :ref:`Operating_gnatchop_in_Compilation_Mode` for details.
*************** However, for most purposes, it will be m
*** 1484,1495 ****
  :file:`gnat.adc` file that contains configuration pragmas directly,
  as described in the following section.
  
! In the case of `Restrictions` pragmas appearing as configuration
  pragmas in individual compilation units, the exact handling depends on
  the type of restriction.
  
  Restrictions that require partition-wide consistency (like
! `No_Tasking`) are
  recognized wherever they appear
  and can be freely inherited, e.g. from a |withed| unit to the |withing|
  unit. This makes sense since the binder will in any case insist on seeing
--- 1500,1511 ----
  :file:`gnat.adc` file that contains configuration pragmas directly,
  as described in the following section.
  
! In the case of ``Restrictions`` pragmas appearing as configuration
  pragmas in individual compilation units, the exact handling depends on
  the type of restriction.
  
  Restrictions that require partition-wide consistency (like
! ``No_Tasking``) are
  recognized wherever they appear
  and can be freely inherited, e.g. from a |withed| unit to the |withing|
  unit. This makes sense since the binder will in any case insist on seeing
*************** directory at the time that a compile com
*** 1521,1559 ****
  directory is searched for a file whose name is :file:`gnat.adc`. If
  this file is present, it is expected to contain one or more
  configuration pragmas that will be applied to the current compilation.
! However, if the switch *-gnatA* is used, :file:`gnat.adc` is not
  considered. When taken into account, :file:`gnat.adc` is added to the
  dependencies, so that if :file:`gnat.adc` is modified later, an invocation of
! *gnatmake* will recompile the source.
  
  Configuration pragmas may be entered into the :file:`gnat.adc` file
! either by running `gnatchop` on a source file that consists only of
  configuration pragmas, or more conveniently by direct editing of the
  :file:`gnat.adc` file, which is a standard format source file.
  
  Besides :file:`gnat.adc`, additional files containing configuration
  pragmas may be applied to the current compilation using the switch
! :samp:`-gnatec={path}` where `path` must designate an existing file that
  contains only configuration pragmas. These configuration pragmas are
  in addition to those found in :file:`gnat.adc` (provided :file:`gnat.adc`
! is present and switch *-gnatA* is not used).
  
! It is allowable to specify several switches *-gnatec=*, all of which
  will be taken into account.
  
  Files containing configuration pragmas specified with switches
! *-gnatec=* are added to the dependencies, unless they are
  temporary files. A file is considered temporary if its name ends in
  :file:`.tmp` or :file:`.TMP`. Certain tools follow this naming
! convention because they pass information to *gcc* via
  temporary files that are immediately deleted; it doesn't make sense to
  depend on a file that no longer exists. Such tools include
! *gprbuild*, *gnatmake*, and *gnatcheck*.
  
  If you are using project file, a separate mechanism is provided using
  project attributes.
  
! .. --Comment:
     See :ref:`Specifying_Configuration_Pragmas` for more details.
  
  
--- 1537,1575 ----
  directory is searched for a file whose name is :file:`gnat.adc`. If
  this file is present, it is expected to contain one or more
  configuration pragmas that will be applied to the current compilation.
! However, if the switch :switch:`-gnatA` is used, :file:`gnat.adc` is not
  considered. When taken into account, :file:`gnat.adc` is added to the
  dependencies, so that if :file:`gnat.adc` is modified later, an invocation of
! ``gnatmake`` will recompile the source.
  
  Configuration pragmas may be entered into the :file:`gnat.adc` file
! either by running ``gnatchop`` on a source file that consists only of
  configuration pragmas, or more conveniently by direct editing of the
  :file:`gnat.adc` file, which is a standard format source file.
  
  Besides :file:`gnat.adc`, additional files containing configuration
  pragmas may be applied to the current compilation using the switch
! :switch:`-gnatec={path}` where ``path`` must designate an existing file that
  contains only configuration pragmas. These configuration pragmas are
  in addition to those found in :file:`gnat.adc` (provided :file:`gnat.adc`
! is present and switch :switch:`-gnatA` is not used).
  
! It is allowable to specify several switches :switch:`-gnatec=`, all of which
  will be taken into account.
  
  Files containing configuration pragmas specified with switches
! :switch:`-gnatec=` are added to the dependencies, unless they are
  temporary files. A file is considered temporary if its name ends in
  :file:`.tmp` or :file:`.TMP`. Certain tools follow this naming
! convention because they pass information to ``gcc`` via
  temporary files that are immediately deleted; it doesn't make sense to
  depend on a file that no longer exists. Such tools include
! ``gprbuild``, ``gnatmake``, and ``gnatcheck``.
  
  If you are using project file, a separate mechanism is provided using
  project attributes.
  
! .. --Comment
     See :ref:`Specifying_Configuration_Pragmas` for more details.
  
  
*************** compilations will fail if there is an er
*** 1612,1618 ****
  GNAT provides an option for compiling such files purely for the
  purposes of checking correctness; such compilations are not required as
  part of the process of building a program. To compile a file in this
! checking mode, use the *-gnatc* switch.
  
  .. _Source_Dependencies:
  
--- 1628,1634 ----
  GNAT provides an option for compiling such files purely for the
  purposes of checking correctness; such compilations are not required as
  part of the process of building a program. To compile a file in this
! checking mode, use the :switch:`-gnatc` switch.
  
  .. _Source_Dependencies:
  
*************** Source Dependencies
*** 1621,1634 ****
  
  A given object file clearly depends on the source file which is compiled
  to produce it. Here we are using "depends" in the sense of a typical
! `make` utility; in other words, an object file depends on a source
  file if changes to the source file require the object file to be
  recompiled.
  In addition to this basic dependency, a given object may depend on
  additional source files as follows:
  
! * If a file being compiled |withs| a unit `X`, the object file
!   depends on the file containing the spec of unit `X`. This includes
    files that are |withed| implicitly either because they are parents
    of |withed| child units or they are run-time units required by the
    language constructs used in a particular unit.
--- 1637,1650 ----
  
  A given object file clearly depends on the source file which is compiled
  to produce it. Here we are using "depends" in the sense of a typical
! ``make`` utility; in other words, an object file depends on a source
  file if changes to the source file require the object file to be
  recompiled.
  In addition to this basic dependency, a given object may depend on
  additional source files as follows:
  
! * If a file being compiled |withs| a unit ``X``, the object file
!   depends on the file containing the spec of unit ``X``. This includes
    files that are |withed| implicitly either because they are parents
    of |withed| child units or they are run-time units required by the
    language constructs used in a particular unit.
*************** additional source files as follows:
*** 1645,1666 ****
  .. index:: -gnatn switch
  
  * If a file being compiled contains a call to a subprogram for which
!   pragma `Inline` applies and inlining is activated with the
!   *-gnatn* switch, the object file depends on the file containing the
    body of this subprogram as well as on the file containing the spec. Note
    that for inlining to actually occur as a result of the use of this switch,
    it is necessary to compile in optimizing mode.
  
    .. index:: -gnatN switch
  
!   The use of *-gnatN* activates  inlining optimization
    that is performed by the front end of the compiler. This inlining does
!   not require that the code generation be optimized. Like *-gnatn*,
    the use of this switch generates additional dependencies.
  
    When using a gcc-based back end (in practice this means using any version
    of GNAT other than for the JVM, .NET or GNAAMP platforms), then the use of
!   *-gnatN* is deprecated, and the use of *-gnatn* is preferred.
    Historically front end inlining was more extensive than the gcc back end
    inlining, but that is no longer the case.
  
--- 1661,1682 ----
  .. index:: -gnatn switch
  
  * If a file being compiled contains a call to a subprogram for which
!   pragma ``Inline`` applies and inlining is activated with the
!   :switch:`-gnatn` switch, the object file depends on the file containing the
    body of this subprogram as well as on the file containing the spec. Note
    that for inlining to actually occur as a result of the use of this switch,
    it is necessary to compile in optimizing mode.
  
    .. index:: -gnatN switch
  
!   The use of :switch:`-gnatN` activates  inlining optimization
    that is performed by the front end of the compiler. This inlining does
!   not require that the code generation be optimized. Like :switch:`-gnatn`,
    the use of this switch generates additional dependencies.
  
    When using a gcc-based back end (in practice this means using any version
    of GNAT other than for the JVM, .NET or GNAAMP platforms), then the use of
!   :switch:`-gnatN` is deprecated, and the use of :switch:`-gnatn` is preferred.
    Historically front end inlining was more extensive than the gcc back end
    inlining, but that is no longer the case.
  
*************** additional source files as follows:
*** 1674,1683 ****
  * 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 `A` |withs|
!   unit `B`, whose elaboration calls an inlined procedure in package
!   `C`, the object file for unit `A` will depend on the body of
!   `C`, in file :file:`c.adb`.
  
    The set of dependent files described by these rules includes all the
    files on which the unit is semantically dependent, as dictated by the
--- 1690,1699 ----
  * 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 ``A`` |withs|
!   unit ``B``, whose elaboration calls an inlined procedure in package
!   ``C``, the object file for unit ``A`` will depend on the body of
!   ``C``, in file :file:`c.adb`.
  
    The set of dependent files described by these rules includes all the
    files on which the unit is semantically dependent, as dictated by the
*************** additional source files as follows:
*** 1687,1697 ****
  
    An object file must be recreated by recompiling the corresponding source
    file if any of the source files on which it depends are modified. For
!   example, if the `make` utility is used to control compilation,
    the rule for an Ada object file must mention all the source files on
    which the object file depends, according to the above definition.
    The determination of the necessary
!   recompilations is done automatically when one uses *gnatmake*.
  
  .. _The_Ada_Library_Information_Files:
  
--- 1703,1713 ----
  
    An object file must be recreated by recompiling the corresponding source
    file if any of the source files on which it depends are modified. For
!   example, if the ``make`` utility is used to control compilation,
    the rule for an Ada object file must mention all the source files on
    which the object file depends, according to the above definition.
    The determination of the necessary
!   recompilations is done automatically when one uses ``gnatmake``.
  
  .. _The_Ada_Library_Information_Files:
  
*************** The following information is contained i
*** 1715,1721 ****
  * Main program information (including priority and time slice settings,
    as well as the wide character encoding used during compilation).
  
! * List of arguments used in the *gcc* command for the compilation
  
  * Attributes of the unit, including configuration pragmas used, an indication
    of whether the compilation was successful, exception model used etc.
--- 1731,1737 ----
  * Main program information (including priority and time slice settings,
    as well as the wide character encoding used during compilation).
  
! * List of arguments used in the ``gcc`` command for the compilation
  
  * Attributes of the unit, including configuration pragmas used, an indication
    of whether the compilation was successful, exception model used etc.
*************** The following information is contained i
*** 1723,1736 ****
  * A list of relevant restrictions applying to the unit (used for consistency)
    checking.
  
! * Categorization information (e.g., use of pragma `Pure`).
  
  * Information on all |withed| units, including presence of
!   Elaborate` or `Elaborate_All` pragmas.
  
! * Information from any `Linker_Options` pragmas used in the unit
  
! * Information on the use of `Body_Version` or `Version`
    attributes in the unit.
  
  * Dependency information. This is a list of files, together with
--- 1739,1752 ----
  * A list of relevant restrictions applying to the unit (used for consistency)
    checking.
  
! * Categorization information (e.g., use of pragma ``Pure``).
  
  * Information on all |withed| units, including presence of
!   ``Elaborate`` or ``Elaborate_All`` pragmas.
  
! * Information from any ``Linker_Options`` pragmas used in the unit
  
! * Information on the use of ``Body_Version`` or ``Version``
    attributes in the unit.
  
  * Dependency information. This is a list of files, together with
*************** The following information is contained i
*** 1739,1749 ****
    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
  :file:`lib-writ.adb` in the GNAT compiler sources.
  
  
--- 1755,1765 ----
    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
  :file:`lib-writ.adb` in the GNAT compiler sources.
  
  
*************** compilation unit that require them, foll
*** 1776,1782 ****
  a call to the main program. This Ada program is compiled to generate the
  object file for the main program. The name of
  the Ada file is :file:`b~xxx`.adb` (with the corresponding spec
! :file:`b~xxx`.ads`) where `xxx` is the name of the
  main program unit.
  
  Finally, the linker is used to build the resulting executable program,
--- 1792,1798 ----
  a call to the main program. This Ada program is compiled to generate the
  object file for the main program. The name of
  the Ada file is :file:`b~xxx`.adb` (with the corresponding spec
! :file:`b~xxx`.ads`) where ``xxx`` is the name of the
  main program unit.
  
  Finally, the linker is used to build the resulting executable program,
*************** which supports a special type of project
*** 1856,1877 ****
  chapter of the *GPRbuild User's Guide*).
  
  A project is considered a library project, when two project-level attributes
! are defined in it: `Library_Name` and `Library_Dir`. In order to
  control different aspects of library configuration, additional optional
  project-level attributes can be specified:
  
! * *Library_Kind*
      This attribute controls whether the library is to be static or dynamic
  
  
! * *Library_Version*
      This attribute specifies the library version; this value is used
      during dynamic linking of shared libraries to determine if the currently
      installed versions of the binaries are compatible.
  
! * *Library_Options*
  
! * *Library_GCC*
      These attributes specify additional low-level options to be used during
      library generation, and redefine the actual application used to generate
      library.
--- 1872,1893 ----
  chapter of the *GPRbuild User's Guide*).
  
  A project is considered a library project, when two project-level attributes
! are defined in it: ``Library_Name`` and ``Library_Dir``. In order to
  control different aspects of library configuration, additional optional
  project-level attributes can be specified:
  
! * ``Library_Kind``
      This attribute controls whether the library is to be static or dynamic
  
  
! * ``Library_Version``
      This attribute specifies the library version; this value is used
      during dynamic linking of shared libraries to determine if the currently
      installed versions of the binaries are compatible.
  
! * ``Library_Options``
  
! * ``Library_GCC``
      These attributes specify additional low-level options to be used during
      library generation, and redefine the actual application used to generate
      library.
*************** library: for example with a Makefile (:r
*** 1910,1916 ****
  with a conventional script. For simple libraries, it is also possible to create
  a dummy main program which depends upon all the packages that comprise the
  interface of the library. This dummy main program can then be given to
! *gnatmake*, which will ensure that all necessary objects are built.
  
  After this task is accomplished, you should follow the standard procedure
  of the underlying operating system to produce the static or shared library.
--- 1926,1932 ----
  with a conventional script. For simple libraries, it is also possible to create
  a dummy main program which depends upon all the packages that comprise the
  interface of the library. This dummy main program can then be given to
! ``gnatmake``, which will ensure that all necessary objects are built.
  
  After this task is accomplished, you should follow the standard procedure
  of the underlying operating system to produce the static or shared library.
*************** Here are the generic commands that will
*** 1954,1960 ****
  
  Please note that the library must have a name of the form :file:`lib{xxx}.a`
  or :file:`lib{xxx}.so` (or :file:`lib{xxx}.dll` on Windows) in order to
! be accessed by the directive :samp:`-l{xxx}` at link time.
  
  .. _Installing_a_library:
  
--- 1970,1976 ----
  
  Please note that the library must have a name of the form :file:`lib{xxx}.a`
  or :file:`lib{xxx}.so` (or :file:`lib{xxx}.dll` on Windows) in order to
! be accessed by the directive :switch:`-l{xxx}` at link time.
  
  .. _Installing_a_library:
  
*************** contain the location for the GNAT run-ti
*** 2003,2012 ****
  be :file:`adalib`).
  
  You can also specify a new default path to the run-time library at compilation
! time with the 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
--- 2019,2028 ----
  be :file:`adalib`).
  
  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
*************** Using a library
*** 2021,2027 ****
  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 `My_Lib` shown in examples in earlier sections, you can
  write:
  
  .. code-block:: gpr
--- 2037,2043 ----
  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 ``My_Lib`` shown in examples in earlier sections, you can
  write:
  
  .. code-block:: gpr
*************** third-party library :file:`liba.a`:
*** 2046,2052 ****
            for Library_Kind use "static";
         end Liba;
  
! This is an alternative to the use of `pragma Linker_Options`. It is
  especially interesting in the context of systems with several interdependent
  static libraries where finding a proper linker order is not easy and best be
  left to the tools having visibility over project dependence information.
--- 2062,2068 ----
            for Library_Kind use "static";
         end Liba;
  
! This is an alternative to the use of ``pragma Linker_Options``. It is
  especially interesting in the context of systems with several interdependent
  static libraries where finding a proper linker order is not easy and best be
  left to the tools having visibility over project dependence information.
*************** when the following conditions are met:
*** 2082,2088 ****
    variable :envvar:`ADA_OBJECTS_PATH`, or by the administrator to the file
    :file:`ada_object_path`
  
! * a pragma `Linker_Options` has been added to one of the sources.
    For example:
  
    .. code-block:: ada
--- 2098,2104 ----
    variable :envvar:`ADA_OBJECTS_PATH`, or by the administrator to the file
    :file:`ada_object_path`
  
! * a pragma ``Linker_Options`` has been added to one of the sources.
    For example:
  
    .. code-block:: ada
*************** The main purpose of a SAL is to minimize
*** 2126,2132 ****
  applications when a new version of the library is installed. Specifically,
  if the interface sources have not changed, client applications do not need to
  be recompiled. If, furthermore, a SAL is provided in the shared form and its
! version, controlled by `Library_Version` attribute, is not changed,
  then the clients do not need to be relinked.
  
  SALs also allow the library providers to minimize the amount of library source
--- 2142,2148 ----
  applications when a new version of the library is installed. Specifically,
  if the interface sources have not changed, client applications do not need to
  be recompiled. If, furthermore, a SAL is provided in the shared form and its
! version, controlled by ``Library_Version`` attribute, is not changed,
  then the clients do not need to be relinked.
  
  SALs also allow the library providers to minimize the amount of library source
*************** GNAT's Project facility provides a simpl
*** 2145,2154 ****
  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 (`Library_Name` and
! `Library_Dir`; see the *Library Projects* section in the
  *GNAT Project Manager* chapter of the *GPRbuild User's Guide*),
! the attribute `Library_Interface` must be defined.  For example:
  
  .. code-block:: gpr
  
--- 2161,2170 ----
  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 (``Library_Name`` and
! ``Library_Dir``; see the *Library Projects* section in the
  *GNAT Project Manager* chapter of the *GPRbuild User's Guide*),
! the attribute ``Library_Interface`` must be defined.  For example:
  
  .. code-block:: gpr
  
*************** the attribute `Library_Interface` must b
*** 2156,2162 ****
         for Library_Name use "dummy";
         for Library_Interface use ("int1", "int1.child");
  
! Attribute `Library_Interface` has a non-empty string list value,
  each string in the list designating a unit contained in an immediate source
  of the project file.
  
--- 2172,2178 ----
         for Library_Name use "dummy";
         for Library_Interface use ("int1", "int1.child");
  
! Attribute ``Library_Interface`` has a non-empty string list value,
  each string in the list designating a unit contained in an immediate source
  of the project file.
  
*************** a package whose name depends on the libr
*** 2165,2182 ****
  (:file:`b~dummy.ads/b` in the example above).
  This binder-generated package includes initialization and
  finalization procedures whose
! names depend on the library name (`dummyinit` and `dummyfinal`
  in the example
  above). The object corresponding to this package is included in the library.
  
  You must ensure timely (e.g., prior to any use of interfaces in the SAL)
  calling of these procedures if a static SAL is built, or if a shared SAL
  is built
! with the project-level attribute `Library_Auto_Init` set to
! `"false"`.
  
  For a Stand-Alone Library, only the :file:`ALI` files of the Interface Units
! (those that are listed in attribute `Library_Interface`) are copied to
  the Library Directory. As a consequence, only the Interface Units may be
  imported from Ada units outside of the library. If other units are imported,
  the binding phase will fail.
--- 2181,2198 ----
  (:file:`b~dummy.ads/b` in the example above).
  This binder-generated package includes initialization and
  finalization procedures whose
! names depend on the library name (``dummyinit`` and ``dummyfinal``
  in the example
  above). The object corresponding to this package is included in the library.
  
  You must ensure timely (e.g., prior to any use of interfaces in the SAL)
  calling of these procedures if a static SAL is built, or if a shared SAL
  is built
! with the project-level attribute ``Library_Auto_Init`` set to
! ``"false"``.
  
  For a Stand-Alone Library, only the :file:`ALI` files of the Interface Units
! (those that are listed in attribute ``Library_Interface``) are copied to
  the Library Directory. As a consequence, only the Interface Units may be
  imported from Ada units outside of the library. If other units are imported,
  the binding phase will fail.
*************** ensuring that the library is linked only
*** 2187,2193 ****
  libraries. So an encapsulated library only depends on system
  libraries, all other code, including the GNAT runtime, is embedded. To
  build an encapsulated library the attribute
! `Library_Standalone` must be set to `encapsulated`:
  
  .. code-block:: gpr
  
--- 2203,2209 ----
  libraries. So an encapsulated library only depends on system
  libraries, all other code, including the GNAT runtime, is embedded. To
  build an encapsulated library the attribute
! ``Library_Standalone`` must be set to ``encapsulated``:
  
  .. code-block:: gpr
  
*************** build an encapsulated library the attrib
*** 2197,2207 ****
         for Library_Interface use ("int1", "int1.child");
         for Library_Standalone use "encapsulated";
  
! The default value for this attribute is `standard` in which case
  a stand-alone library is built.
  
! The attribute `Library_Src_Dir` may be specified for a
! Stand-Alone Library. `Library_Src_Dir` is a simple attribute that has a
  single string value. Its value must be the path (absolute or relative to the
  project directory) of an existing directory. This directory cannot be the
  object directory or one of the source directories, but it can be the same as
--- 2213,2223 ----
         for Library_Interface use ("int1", "int1.child");
         for Library_Standalone use "encapsulated";
  
! The default value for this attribute is ``standard`` in which case
  a stand-alone library is built.
  
! The attribute ``Library_Src_Dir`` may be specified for a
! Stand-Alone Library. ``Library_Src_Dir`` is a simple attribute that has a
  single string value. Its value must be the path (absolute or relative to the
  project directory) of an existing directory. This directory cannot be the
  object directory or one of the source directories, but it can be the same as
*************** the library directory. The sources of th
*** 2209,2215 ****
  Units of the library that are needed by an Ada client of the library will be
  copied to the designated directory, called the Interface Copy directory.
  These sources include the specs of the Interface Units, but they may also
! include bodies and subunits, when pragmas `Inline` or `Inline_Always`
  are used, or when there is a generic unit in the spec. Before the sources
  are copied to the Interface Copy directory, an attempt is made to delete all
  files in the Interface Copy directory.
--- 2225,2231 ----
  Units of the library that are needed by an Ada client of the library will be
  copied to the designated directory, called the Interface Copy directory.
  These sources include the specs of the Interface Units, but they may also
! include bodies and subunits, when pragmas ``Inline`` or ``Inline_Always``
  are used, or when there is a generic unit in the spec. Before the sources
  are copied to the Interface Copy directory, an attempt is made to delete all
  files in the Interface Copy directory.
*************** occasions when it is necessary here are
*** 2219,2228 ****
  
  * Compile all library sources.
  
! * Invoke the binder with the switch *-n* (No Ada main program),
    with all the :file:`ALI` files of the interfaces, and
!   with the switch *-L* to give specific names to the `init`
!   and `final` procedures.  For example:
  
    .. code-block:: sh
  
--- 2235,2244 ----
  
  * Compile all library sources.
  
! * Invoke the binder with the switch :switch:`-n` (No Ada main program),
    with all the :file:`ALI` files of the interfaces, and
!   with the switch :switch:`-L` to give specific names to the ``init``
!   and ``final`` procedures.  For example:
  
    .. code-block:: sh
  
*************** occasions when it is necessary here are
*** 2235,2248 ****
        $ gcc -c b~int2.adb
  
  * Link the dynamic library with all the necessary object files,
!   indicating to the linker the names of the `init` (and possibly
!   `final`) procedures for automatic initialization (and finalization).
    The built library should be placed in a directory different from
    the object directory.
  
! * Copy the `ALI` files of the interface to the library directory,
    add in this copy an indication that it is an interface to a SAL
!   (i.e., add a word *SL* on the line in the :file:`ALI` file that starts
    with letter 'P') and make the modified copy of the :file:`ALI` file
    read-only.
  
--- 2251,2264 ----
        $ gcc -c b~int2.adb
  
  * Link the dynamic library with all the necessary object files,
!   indicating to the linker the names of the ``init`` (and possibly
!   ``final``) procedures for automatic initialization (and finalization).
    The built library should be placed in a directory different from
    the object directory.
  
! * Copy the ``ALI`` files of the interface to the library directory,
    add in this copy an indication that it is an interface to a SAL
!   (i.e., add a word ``SL`` on the line in the :file:`ALI` file that starts
    with letter 'P') and make the modified copy of the :file:`ALI` file
    read-only.
  
*************** It is easy to adapt the SAL build proced
*** 2258,2265 ****
  a non-Ada context.
  
  The only extra step required is to ensure that library interface subprograms
! are compatible with the main program, by means of `pragma Export`
! or `pragma Convention`.
  
  Here is an example of simple library interface for use with C main program:
  
--- 2274,2281 ----
  a non-Ada context.
  
  The only extra step required is to ensure that library interface subprograms
! are compatible with the main program, by means of ``pragma Export``
! or ``pragma Convention``.
  
  Here is an example of simple library interface for use with C main program:
  
*************** On the foreign language side, you must p
*** 2279,2285 ****
  library interface; remember that it should contain elaboration routines in
  addition to interface subprograms.
  
! The example below shows the content of `mylib_interface.h` (note
  that there is no rule for the naming of this file, any name can be used)
  
  .. code-block:: c
--- 2295,2301 ----
  library interface; remember that it should contain elaboration routines in
  addition to interface subprograms.
  
! The example below shows the content of :file:`mylib_interface.h` (note
  that there is no rule for the naming of this file, any name can be used)
  
  .. code-block:: c
*************** that there is no rule for the naming of
*** 2295,2306 ****
         extern void do_something_else (void);
  
  Libraries built as explained above can be used from any program, provided
! that the elaboration procedures (named `mylibinit` in the previous
  example) are called before the library services are used. Any number of
  libraries can be used simultaneously, as long as the elaboration
  procedure of each library is called.
  
! Below is an example of a C program that uses the `mylib` library.
  
  .. code-block:: c
  
--- 2311,2322 ----
         extern void do_something_else (void);
  
  Libraries built as explained above can be used from any program, provided
! that the elaboration procedures (named ``mylibinit`` in the previous
  example) are called before the library services are used. Any number of
  libraries can be used simultaneously, as long as the elaboration
  procedure of each library is called.
  
! Below is an example of a C program that uses the ``mylib`` library.
  
  .. code-block:: c
  
*************** Below is an example of a C program that
*** 2322,2328 ****
         }
  
  Note that invoking any library finalization procedure generated by
! `gnatbind` shuts down the Ada run-time environment.
  Consequently, the
  finalization of all Ada libraries must be performed at the end of the program.
  No call to these libraries or to the Ada run-time library should be made
--- 2338,2344 ----
         }
  
  Note that invoking any library finalization procedure generated by
! ``gnatbind`` shuts down the Ada run-time environment.
  Consequently, the
  finalization of all Ada libraries must be performed at the end of the program.
  No call to these libraries or to the Ada run-time library should be made
*************** Restrictions in Stand-alone Libraries
*** 2342,2356 ****
  The pragmas listed below should be used with caution inside libraries,
  as they can create incompatibilities with other Ada libraries:
  
! * pragma `Locking_Policy`
! * pragma `Partition_Elaboration_Policy`
! * pragma `Queuing_Policy`
! * pragma `Task_Dispatching_Policy`
! * pragma `Unreserve_All_Interrupts`
  
  When using a library that contains such pragmas, the user must make sure
  that all libraries use the same pragmas with the same values. Otherwise,
! `Program_Error` will
  be raised during the elaboration of the conflicting
  libraries. The usage of these pragmas and its consequences for the user
  should therefore be well documented.
--- 2358,2372 ----
  The pragmas listed below should be used with caution inside libraries,
  as they can create incompatibilities with other Ada libraries:
  
! * pragma ``Locking_Policy``
! * pragma ``Partition_Elaboration_Policy``
! * pragma ``Queuing_Policy``
! * pragma ``Task_Dispatching_Policy``
! * pragma ``Unreserve_All_Interrupts``
  
  When using a library that contains such pragmas, the user must make sure
  that all libraries use the same pragmas with the same values. Otherwise,
! ``Program_Error`` will
  be raised during the elaboration of the conflicting
  libraries. The usage of these pragmas and its consequences for the user
  should therefore be well documented.
*************** enabled or disabled in a consistent mann
*** 2360,2368 ****
  Otherwise, Program_Error will be raised during the elaboration of the
  conflicting libraries.
  
! If the `Version` or `Body_Version`
  attributes are used inside a library, then you need to
! perform a `gnatbind` step that specifies all :file:`ALI` files in all
  libraries, so that version identifiers can be properly computed.
  In practice these attributes are rarely used, so this is unlikely
  to be a consideration.
--- 2376,2384 ----
  Otherwise, Program_Error will be raised during the elaboration of the
  conflicting libraries.
  
! If the ``Version`` or ``Body_Version``
  attributes are used inside a library, then you need to
! perform a ``gnatbind`` step that specifies all :file:`ALI` files in all
  libraries, so that version identifiers can be properly computed.
  In practice these attributes are rarely used, so this is unlikely
  to be a consideration.
*************** Rebuilding the GNAT Run-Time Library
*** 2379,2386 ****
  
  It may be useful to recompile the GNAT library in various contexts, the
  most important one being the use of partition-wide configuration pragmas
! such as `Normalize_Scalars`. A special Makefile called
! `Makefile.adalib` is provided to that effect and can be found in
  the directory containing the GNAT library. The location of this
  directory depends on the way the GNAT environment has been installed and can
  be determined by means of the command:
--- 2395,2402 ----
  
  It may be useful to recompile the GNAT library in various contexts, the
  most important one being the use of partition-wide configuration pragmas
! such as ``Normalize_Scalars``. A special Makefile called
! :file:`Makefile.adalib` is provided to that effect and can be found in
  the directory containing the GNAT library. The location of this
  directory depends on the way the GNAT environment has been installed and can
  be determined by means of the command:
*************** constants to control which code is execu
*** 2455,2464 ****
        ...
        end if;
  
! Not only will the code inside the `if` statement not be executed if
! the constant Boolean is `False`, but it will also be completely
  deleted from the program.
! However, the code is only deleted after the `if` statement
  has been checked for syntactic and semantic correctness.
  (In contrast, with preprocessors the code is deleted before the
  compiler ever gets to see it, so it is not checked until the switch
--- 2471,2480 ----
        ...
        end if;
  
! Not only will the code inside the ``if`` statement not be executed if
! the constant Boolean is ``False``, but it will also be completely
  deleted from the program.
! However, the code is only deleted after the ``if`` statement
  has been checked for syntactic and semantic correctness.
  (In contrast, with preprocessors the code is deleted before the
  compiler ever gets to see it, so it is not checked until the switch
*************** something like:
*** 2477,2486 ****
            ...
         end Config;
  
! The `Config` package exists in multiple forms for the various targets,
! with an appropriate script selecting the version of `Config` needed.
  Then any other unit requiring conditional compilation can do a |with|
! of `Config` to make the constants visible.
  
  .. _Debugging_-_A_Special_Case:
  
--- 2493,2502 ----
            ...
         end Config;
  
! The ``Config`` package exists in multiple forms for the various targets,
! with an appropriate script selecting the version of ``Config`` needed.
  Then any other unit requiring conditional compilation can do a |with|
! of ``Config`` to make the constants visible.
  
  .. _Debugging_-_A_Special_Case:
  
*************** or
*** 2511,2520 ****
  
  Since this is a common case, there are special features to deal with
  this in a convenient manner. For the case of tests, Ada 2005 has added
! a pragma `Assert` that can be used for such tests. This pragma is modeled
! on the `Assert` pragma that has always been available in GNAT, so this
  feature may be used with GNAT even if you are not using Ada 2005 features.
! The use of pragma `Assert` is described in the
  :title:`GNAT_Reference_Manual`, but as an
  example, the last test could be written:
  
--- 2527,2536 ----
  
  Since this is a common case, there are special features to deal with
  this in a convenient manner. For the case of tests, Ada 2005 has added
! a pragma ``Assert`` that can be used for such tests. This pragma is modeled
! on the ``Assert`` pragma that has always been available in GNAT, so this
  feature may be used with GNAT even if you are not using Ada 2005 features.
! The use of pragma ``Assert`` is described in the
  :title:`GNAT_Reference_Manual`, but as an
  example, the last test could be written:
  
*************** or simply
*** 2529,2590 ****
         pragma Assert (Temperature <= 999.0);
  
  In both cases, if assertions are active and the temperature is excessive,
! the exception `Assert_Failure` will be raised, with the given string in
  the first case or a string indicating the location of the pragma in the second
  case used as the exception message.
  
  .. index:: pragma Assertion_Policy
  
! You can turn assertions on and off by using the `Assertion_Policy`
  pragma.
  
  .. index:: -gnata switch
  
  This is an Ada 2005 pragma which is implemented in all modes by
! GNAT. Alternatively, you can use the *-gnata* switch
  to enable assertions from the command line, which applies to
  all versions of Ada.
  
  .. index:: pragma Debug
  
! For the example above with the `Put_Line`, the GNAT-specific pragma
! `Debug` can be used:
  
  .. code-block:: ada
  
         pragma Debug (Put_Line ("got to the first stage!"));
  
  If debug pragmas are enabled, the argument, which must be of the form of
! a procedure call, is executed (in this case, `Put_Line` will be called).
  Only one call can be present, but of course a special debugging procedure
  containing any code you like can be included in the program and then
! called in a pragma `Debug` argument as needed.
  
! One advantage of pragma `Debug` over the `if Debugging then`
! construct is that pragma `Debug` can appear in declarative contexts,
  such as at the very beginning of a procedure, before local declarations have
  been elaborated.
  
  .. index:: pragma Debug_Policy
  
! Debug pragmas are enabled using either the *-gnata* switch that also
  controls assertions, or with a separate Debug_Policy pragma.
  
  The latter pragma is new in the Ada 2005 versions of GNAT (but it can be used
  in Ada 95 and Ada 83 programs as well), and is analogous to
! pragma `Assertion_Policy` to control assertions.
  
! `Assertion_Policy` and `Debug_Policy` are configuration pragmas,
  and thus they can appear in :file:`gnat.adc` if you are not using a
  project file, or in the file designated to contain configuration pragmas
  in a project file.
  They then apply to all subsequent compilations. In practice the use of
! the *-gnata* switch is often the most convenient method of controlling
  the status of these pragmas.
  
  Note that a pragma is not a statement, so in contexts where a statement
  sequence is required, you can't just write a pragma on its own. You have
! to add a `null` statement.
  
  .. code-block:: ada
  
--- 2545,2606 ----
         pragma Assert (Temperature <= 999.0);
  
  In both cases, if assertions are active and the temperature is excessive,
! the exception ``Assert_Failure`` will be raised, with the given string in
  the first case or a string indicating the location of the pragma in the second
  case used as the exception message.
  
  .. index:: pragma Assertion_Policy
  
! You can turn assertions on and off by using the ``Assertion_Policy``
  pragma.
  
  .. index:: -gnata switch
  
  This is an Ada 2005 pragma which is implemented in all modes by
! GNAT. Alternatively, you can use the :switch:`-gnata` switch
  to enable assertions from the command line, which applies to
  all versions of Ada.
  
  .. index:: pragma Debug
  
! For the example above with the ``Put_Line``, the GNAT-specific pragma
! ``Debug`` can be used:
  
  .. code-block:: ada
  
         pragma Debug (Put_Line ("got to the first stage!"));
  
  If debug pragmas are enabled, the argument, which must be of the form of
! a procedure call, is executed (in this case, ``Put_Line`` will be called).
  Only one call can be present, but of course a special debugging procedure
  containing any code you like can be included in the program and then
! called in a pragma ``Debug`` argument as needed.
  
! One advantage of pragma ``Debug`` over the ``if Debugging then``
! construct is that pragma ``Debug`` can appear in declarative contexts,
  such as at the very beginning of a procedure, before local declarations have
  been elaborated.
  
  .. index:: pragma Debug_Policy
  
! Debug pragmas are enabled using either the :switch:`-gnata` switch that also
  controls assertions, or with a separate Debug_Policy pragma.
  
  The latter pragma is new in the Ada 2005 versions of GNAT (but it can be used
  in Ada 95 and Ada 83 programs as well), and is analogous to
! pragma ``Assertion_Policy`` to control assertions.
  
! ``Assertion_Policy`` and ``Debug_Policy`` are configuration pragmas,
  and thus they can appear in :file:`gnat.adc` if you are not using a
  project file, or in the file designated to contain configuration pragmas
  in a project file.
  They then apply to all subsequent compilations. In practice the use of
! the :switch:`-gnata` switch is often the most convenient method of controlling
  the status of these pragmas.
  
  Note that a pragma is not a statement, so in contexts where a statement
  sequence is required, you can't just write a pragma on its own. You have
! to add a ``null`` statement.
  
  .. code-block:: ada
  
*************** Note that in this approach, both declara
*** 2627,2634 ****
  compiler so this can only be used where both declarations are legal,
  even though one of them will not be used.
  
! Another approach is to define integer constants, e.g., `Bits_Per_Word`,
! or Boolean constants, e.g., `Little_Endian`, and then write declarations
  that are parameterized by these constants. For example
  
  .. code-block:: ada
--- 2643,2650 ----
  compiler so this can only be used where both declarations are legal,
  even though one of them will not be used.
  
! Another approach is to define integer constants, e.g., ``Bits_Per_Word``,
! or Boolean constants, e.g., ``Little_Endian``, and then write declarations
  that are parameterized by these constants. For example
  
  .. code-block:: ada
*************** that are parameterized by these constant
*** 2637,2643 ****
           Field1 at 0 range Boolean'Pos (Little_Endian) * 10 .. Bits_Per_Word;
         end record;
  
! If `Bits_Per_Word` is set to 32, this generates either
  
  .. code-block:: ada
  
--- 2653,2659 ----
           Field1 at 0 range Boolean'Pos (Little_Endian) * 10 .. Bits_Per_Word;
         end record;
  
! If ``Bits_Per_Word`` is set to 32, this generates either
  
  .. code-block:: ada
  
*************** for the little endian case. Since a powe
*** 2657,2663 ****
  notation is usable for creating static constants, clever use of this
  feature can often solve quite difficult problems in conditionalizing
  compilation (note incidentally that in Ada 95, the little endian
! constant was introduced as `System.Default_Bit_Order`, so you do not
  need to define this one yourself).
  
  .. _Use_of_Alternative_Implementations:
--- 2673,2679 ----
  notation is usable for creating static constants, clever use of this
  feature can often solve quite difficult problems in conditionalizing
  compilation (note incidentally that in Ada 95, the little endian
! constant was introduced as ``System.Default_Bit_Order``, so you do not
  need to define this one yourself).
  
  .. _Use_of_Alternative_Implementations:
*************** to compile with an Ada 95 compiler. Conc
*** 2693,2702 ****
            ... not quite as neat Ada 95 code
         end if;
  
! where `Ada_2005` is a Boolean constant.
  
! But this won't work when `Ada_2005` is set to `False`,
! since the `then` clause will be illegal for an Ada 95 compiler.
  (Recall that although such unreachable code would eventually be deleted
  by the compiler, it still needs to be legal.  If it uses features
  introduced in Ada 2005, it will be illegal in Ada 95.)
--- 2709,2718 ----
            ... not quite as neat Ada 95 code
         end if;
  
! where ``Ada_2005`` is a Boolean constant.
  
! But this won't work when ``Ada_2005`` is set to ``False``,
! since the ``then`` clause will be illegal for an Ada 95 compiler.
  (Recall that although such unreachable code would eventually be deleted
  by the compiler, it still needs to be legal.  If it uses features
  introduced in Ada 2005, it will be illegal in Ada 95.)
*************** So instead we write
*** 2707,2715 ****
  
         procedure Insert is separate;
  
! Then we have two files for the subunit `Insert`, with the two sets of
  code.
! If the package containing this is called `File_Queries`, then we might
  have two files
  
  * :file:`file_queries-insert-2005.adb`
--- 2723,2731 ----
  
         procedure Insert is separate;
  
! Then we have two files for the subunit ``Insert``, with the two sets of
  code.
! If the package containing this is called ``File_Queries``, then we might
  have two files
  
  * :file:`file_queries-insert-2005.adb`
*************** renaming it if necessary to :file:`s-ast
*** 2755,2765 ****
  Another style for arranging alternative implementations is through Ada's
  access-to-subprogram facility.
  In case some functionality is to be conditionally included,
! you can declare an access-to-procedure variable `Ref` that is initialized
! to designate a 'do nothing' procedure, and then invoke `Ref.all`
  when appropriate.
! In some library package, set `Ref` to `Proc'Access` for some
! procedure `Proc` that performs the relevant processing.
  The initialization only occurs if the library package is included in the
  program.
  The same idea can also be implemented using tagged types and dispatching
--- 2771,2781 ----
  Another style for arranging alternative implementations is through Ada's
  access-to-subprogram facility.
  In case some functionality is to be conditionally included,
! you can declare an access-to-procedure variable ``Ref`` that is initialized
! to designate a 'do nothing' procedure, and then invoke ``Ref.all``
  when appropriate.
! In some library package, set ``Ref`` to ``Proc'Access`` for some
! procedure ``Proc`` that performs the relevant processing.
  The initialization only occurs if the library package is included in the
  program.
  The same idea can also be implemented using tagged types and dispatching
*************** with legacy code on other compilers, to
*** 2788,2794 ****
  The preprocessor may be used in two separate modes. It can be used quite
  separately from the compiler, to generate a separate output source file
  that is then fed to the compiler as a separate step. This is the
! `gnatprep` utility, whose use is fully described in
  :ref:`Preprocessing_with_gnatprep`.
  
  The preprocessing language allows such constructs as
--- 2804,2810 ----
  The preprocessor may be used in two separate modes. It can be used quite
  separately from the compiler, to generate a separate output source file
  that is then fed to the compiler as a separate step. This is the
! ``gnatprep`` utility, whose use is fully described in
  :ref:`Preprocessing_with_gnatprep`.
  
  The preprocessing language allows such constructs as
*************** The preprocessing language allows such c
*** 2796,2827 ****
  .. code-block:: c
  
         #if DEBUG or else (PRIORITY > 4) then
!           bunch of declarations
         #else
!           completely different bunch of declarations
         #end if;
  
! The values of the symbols `DEBUG` and `PRIORITY` can be
  defined either on the command line or in a separate file.
  
  The other way of running the preprocessor is even closer to the C style and
  often more convenient. In this approach the preprocessing is integrated into
! the compilation process. The compiler is fed the preprocessor input which
! includes `#if` lines etc, and then the compiler carries out the
  preprocessing internally and processes the resulting output.
  For more details on this approach, see :ref:`Integrated_Preprocessing`.
  
  .. _Preprocessing_with_gnatprep:
  
! Preprocessing with `gnatprep`
! -----------------------------
  
  .. index:: ! gnatprep
  .. index:: Preprocessing (gnatprep)
  
! This section discusses how to use GNAT's `gnatprep` utility for simple
  preprocessing.
! Although designed for use with GNAT, `gnatprep` does not depend on any
  special GNAT features.
  For further discussion of conditional compilation in general, see
  :ref:`Conditional_Compilation`.
--- 2812,2843 ----
  .. code-block:: c
  
         #if DEBUG or else (PRIORITY > 4) then
!           sequence of declarations
         #else
!           completely different sequence of declarations
         #end if;
  
! The values of the symbols ``DEBUG`` and ``PRIORITY`` can be
  defined either on the command line or in a separate file.
  
  The other way of running the preprocessor is even closer to the C style and
  often more convenient. In this approach the preprocessing is integrated into
! the compilation process. The compiler is given the preprocessor input which
! includes ``#if`` lines etc, and then the compiler carries out the
  preprocessing internally and processes the resulting output.
  For more details on this approach, see :ref:`Integrated_Preprocessing`.
  
  .. _Preprocessing_with_gnatprep:
  
! Preprocessing with ``gnatprep``
! -------------------------------
  
  .. index:: ! gnatprep
  .. index:: Preprocessing (gnatprep)
  
! This section discusses how to use GNAT's ``gnatprep`` utility for simple
  preprocessing.
! Although designed for use with GNAT, ``gnatprep`` does not depend on any
  special GNAT features.
  For further discussion of conditional compilation in general, see
  :ref:`Conditional_Compilation`.
*************** For further discussion of conditional co
*** 2831,2851 ****
  Preprocessing Symbols
  ^^^^^^^^^^^^^^^^^^^^^
  
! Preprocessing symbols are defined in definition files and referred to in
! 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).
  
  .. _Using_gnatprep:
  
! Using `gnatprep`
! ^^^^^^^^^^^^^^^^
  
! To call `gnatprep` use:
  
  .. code-block:: sh
  
!     $ gnatprep [`switches`] `infile` `outfile` [`deffile`]
  
  where
  
--- 2847,2867 ----
  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).
  
  .. _Using_gnatprep:
  
! Using ``gnatprep``
! ^^^^^^^^^^^^^^^^^^
  
! To call ``gnatprep`` use:
  
  .. code-block:: sh
  
!     $ gnatprep [ switches ] infile outfile [ deffile ]
  
  where
  
*************** where
*** 2859,2965 ****
  * *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
!     normally have an ads or adb suffix.
  
! * *deffile*
      is the full name of a text file containing definitions of
      preprocessing symbols to be referenced by the preprocessor. This argument is
!     optional, and can be replaced by the use of the *-D* switch.
  
  
  .. _Switches_for_gnatprep:
  
! Switches for `gnatprep`
! ^^^^^^^^^^^^^^^^^^^^^^^
  
  .. index:: --version (gnatprep)
  
! :samp:`--version`
    Display Copyright and version, then exit disregarding all other options.
  
  .. index:: --help (gnatprep)
  
! :samp:`--help`
!   If *--version* was not used, display usage, then exit disregarding
    all other options.
  
  .. index:: -b (gnatprep)
  
! :samp:`-b`
    Causes both preprocessor lines and the lines deleted by
    preprocessing to be replaced by blank lines in the output source file,
    preserving line numbers in the output file.
  
  .. index:: -c (gnatprep)
  
! :samp:`-c`
    Causes both preprocessor lines and the lines deleted
    by preprocessing to be retained in the output source as comments marked
!   with the special string `"--! "`. This option will result in line numbers
    being preserved in the output file.
  
  .. index:: -C (gnatprep)
  
! :samp:`-C`
    Causes comments to be scanned. Normally comments are ignored by gnatprep.
    If this option is specified, then comments are scanned and any $symbol
    substitutions performed as in program text. This is particularly useful
!   when structured comments are used (e.g., when writing programs in the
!   SPARK dialect of Ada). Note that this switch is not available when
!   doing integrated preprocessing (it would be useless in this context
!   since comments are ignored by the compiler in any case).
  
  .. index:: -D (gnatprep)
  
! :samp:`-D{symbol}={value}`
!   Defines a new preprocessing symbol, associated with value. If no value is given
!   on the command line, then symbol is considered to be `True`. This switch
    can be used in place of a definition file.
  
  .. index:: -r (gnatprep)
  
! :samp:`-r`
!   Causes a `Source_Reference` pragma to be generated that
    references the original input file, so that error messages will use
    the file name of this original file. The use of this switch implies
    that preprocessor lines are not to be removed from the file, so its
!   use will force *-b* mode if *-c*
    has not been specified explicitly.
  
    Note that if the file to be preprocessed contains multiple units, then
!   it will be necessary to `gnatchop` the output file from
!   `gnatprep`. If a `Source_Reference` pragma is present
    in the preprocessed file, it will be respected by
!   `gnatchop -r`
    so that the final chopped files will correctly refer to the original
!   input source file for `gnatprep`.
  
  .. index:: -s (gnatprep)
  
! :samp:`-s`
    Causes a sorted list of symbol names and values to be
    listed on the standard output file.
  
  .. index:: -T (gnatprep)
  
! :samp:`-T`
    Use LF as line terminators when writing files. By default the line terminator
    of the host (LF under unix, CR/LF under Windows) is used.
  
  .. index:: -u (gnatprep)
  
! :samp:`-u`
    Causes undefined symbols to be treated as having the value FALSE in the context
    of a preprocessor test. In the absence of this option, an undefined symbol in
!   a `#if` or `#elsif` test will be treated as an error.
  
  .. index:: -v (gnatprep)
  
! :samp:`-v`
    Verbose mode: generates more output about work done.
  
  
! Note: if neither *-b* nor *-c* is present,
  then preprocessor lines and
  deleted lines are completely removed from the output, unless -r is
  specified, in which case -b is assumed.
--- 2875,2981 ----
  * *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
!     normally have an ``ads`` or ``adb`` suffix.
  
! * ``deffile``
      is the full name of a text file containing definitions of
      preprocessing symbols to be referenced by the preprocessor. This argument is
!     optional, and can be replaced by the use of the :switch:`-D` switch.
  
  
  .. _Switches_for_gnatprep:
  
! Switches for ``gnatprep``
! ^^^^^^^^^^^^^^^^^^^^^^^^^
  
  .. index:: --version (gnatprep)
  
! :switch:`--version`
    Display Copyright and version, then exit disregarding all other options.
  
  .. index:: --help (gnatprep)
  
! :switch:`--help`
!   If :switch:`--version` was not used, display usage and then exit disregarding
    all other options.
  
  .. index:: -b (gnatprep)
  
! :switch:`-b`
    Causes both preprocessor lines and the lines deleted by
    preprocessing to be replaced by blank lines in the output source file,
    preserving line numbers in the output file.
  
  .. index:: -c (gnatprep)
  
! :switch:`-c`
    Causes both preprocessor lines and the lines deleted
    by preprocessing to be retained in the output source as comments marked
!   with the special string ``"--! "``. This option will result in line numbers
    being preserved in the output file.
  
  .. index:: -C (gnatprep)
  
! :switch:`-C`
    Causes comments to be scanned. Normally comments are ignored by gnatprep.
    If this option is specified, then comments are scanned and any $symbol
    substitutions performed as in program text. This is particularly useful
!   when structured comments are used (e.g., for programs written in a
!   pre-2014 version of the SPARK Ada subset). Note that this switch is not
!   available when  doing integrated preprocessing (it would be useless in
!   this context since comments are ignored by the compiler in any case).
  
  .. index:: -D (gnatprep)
  
! :switch:`-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 ``True``. This switch
    can be used in place of a definition file.
  
  .. index:: -r (gnatprep)
  
! :switch:`-r`
!   Causes a ``Source_Reference`` pragma to be generated that
    references the original input file, so that error messages will use
    the file name of this original file. The use of this switch implies
    that preprocessor lines are not to be removed from the file, so its
!   use will force ``-b`` mode if ``-c``
    has not been specified explicitly.
  
    Note that if the file to be preprocessed contains multiple units, then
!   it will be necessary to ``gnatchop`` the output file from
!   ``gnatprep``. If a ``Source_Reference`` pragma is present
    in the preprocessed file, it will be respected by
!   ``gnatchop -r``
    so that the final chopped files will correctly refer to the original
!   input source file for ``gnatprep``.
  
  .. index:: -s (gnatprep)
  
! :switch:`-s`
    Causes a sorted list of symbol names and values to be
    listed on the standard output file.
  
  .. index:: -T (gnatprep)
  
! :switch:`-T`
    Use LF as line terminators when writing files. By default the line terminator
    of the host (LF under unix, CR/LF under Windows) is used.
  
  .. index:: -u (gnatprep)
  
! :switch:`-u`
    Causes undefined symbols to be treated as having the value FALSE in the context
    of a preprocessor test. In the absence of this option, an undefined symbol in
!   a ``#if`` or ``#elsif`` test will be treated as an error.
  
  .. index:: -v (gnatprep)
  
! :switch:`-v`
    Verbose mode: generates more output about work done.
  
  
! Note: if neither :switch:`-b` nor :switch:`-c` is present,
  then preprocessor lines and
  deleted lines are completely removed from the output, unless -r is
  specified, in which case -b is assumed.
*************** The definitions file contains lines of t
*** 2974,2980 ****
  
        symbol := value
  
! where `symbol` is a preprocessing symbol, and `value` is one of the following:
  
  *  Empty, corresponding to a null substitution,
  *  A string literal using normal Ada syntax, or
--- 2990,2996 ----
  
        symbol := value
  
! where ``symbol`` is a preprocessing symbol, and ``value`` is one of the following:
  
  *  Empty, corresponding to a null substitution,
  *  A string literal using normal Ada syntax, or
*************** and comments may be added to the definit
*** 2987,2994 ****
  
  .. _Form_of_Input_Text_for_gnatprep:
  
! Form of Input Text for `gnatprep`
! ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  
  The input text may contain preprocessor conditional inclusion lines,
  as well as general symbol substitution sequences.
--- 3003,3010 ----
  
  .. _Form_of_Input_Text_for_gnatprep:
  
! Form of Input Text for ``gnatprep``
! ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  
  The input text may contain preprocessor conditional inclusion lines,
  as well as general symbol substitution sequences.
*************** This can be expressed instead as one of
*** 3044,3050 ****
  For the first test (<expression> ::= <symbol>) the symbol must have
  either the value true or false, that is to say the right-hand of the
  symbol definition must be one of the (case-insensitive) literals
! `True` or `False`. If the value is true, then the
  corresponding lines are included, and if the value is false, they are
  excluded.
  
--- 3060,3066 ----
  For the first test (<expression> ::= <symbol>) the symbol must have
  either the value true or false, that is to say the right-hand of the
  symbol definition must be one of the (case-insensitive) literals
! ``True`` or ``False``. If the value is true, then the
  corresponding lines are included, and if the value is false, they are
  excluded.
  
*************** literal integer as defined in the Ada Re
*** 3054,3088 ****
  in the range 0 .. 2**31-1 are supported.
  
  The test (<expression> ::= <symbol>'Defined) is true only if
! the symbol has been defined in the definition file or by a *-D*
  switch on the command line. Otherwise, the test is false.
  
  The equality tests are case insensitive, as are all the preprocessor lines.
  
  If the symbol referenced is not defined in the symbol definitions file,
! then the effect depends on whether or not switch *-u*
  is specified. If so, then the symbol is treated as if it had the value
  false and the test fails. If this switch is not specified, then
  it is an error to reference an undefined symbol. It is also an error to
! reference a symbol that is defined with a value other than `True`
! or `False`.
  
! The use of the `not` operator inverts the sense of this logical test.
! The `not` operator cannot be combined with the `or` or `and`
  operators, without parentheses. For example, "if not X or Y then" is not
  allowed, but "if (not X) or Y then" and "if not (X or Y) then" are.
  
! The `then` keyword is optional as shown
  
! The `#` must be the first non-blank character on a line, but
  otherwise the format is free form. Spaces or tabs may appear between
! the `#` and the keyword. The keywords and the symbols are case
  insensitive as in normal Ada code. Comments may be used on a
  preprocessor line, but other than that, no other tokens may appear on a
! preprocessor line. Any number of `elsif` clauses can be present,
! including none at all. The `else` is optional, as in Ada.
  
! The `#` marking the start of a preprocessor line must be the first
  non-blank character on the line, i.e., it must be preceded only by
  spaces or horizontal tabs.
  
--- 3070,3104 ----
  in the range 0 .. 2**31-1 are supported.
  
  The test (<expression> ::= <symbol>'Defined) is true only if
! the symbol has been defined in the definition file or by a :switch:`-D`
  switch on the command line. Otherwise, the test is false.
  
  The equality tests are case insensitive, as are all the preprocessor lines.
  
  If the symbol referenced is not defined in the symbol definitions file,
! then the effect depends on whether or not switch :switch:`-u`
  is specified. If so, then the symbol is treated as if it had the value
  false and the test fails. If this switch is not specified, then
  it is an error to reference an undefined symbol. It is also an error to
! reference a symbol that is defined with a value other than ``True``
! or ``False``.
  
! The use of the ``not`` operator inverts the sense of this logical test.
! The ``not`` operator cannot be combined with the ``or`` or ``and``
  operators, without parentheses. For example, "if not X or Y then" is not
  allowed, but "if (not X) or Y then" and "if not (X or Y) then" are.
  
! The ``then`` keyword is optional as shown
  
! The ``#`` must be the first non-blank character on a line, but
  otherwise the format is free form. Spaces or tabs may appear between
! the ``#`` and the keyword. The keywords and the symbols are case
  insensitive as in normal Ada code. Comments may be used on a
  preprocessor line, but other than that, no other tokens may appear on a
! preprocessor line. Any number of ``elsif`` clauses can be present,
! including none at all. The ``else`` is optional, as in Ada.
  
! The ``#`` marking the start of a preprocessor line must be the first
  non-blank character on the line, i.e., it must be preceded only by
  spaces or horizontal tabs.
  
*************** the sequence::
*** 3093,3113 ****
  
  anywhere within a source line, except in a comment or within a
  string literal. The identifier
! following the `$` must match one of the symbols defined in the symbol
  definition file, and the result is to substitute the value of the
! symbol in place of `$symbol` in the output file.
  
  Note that although the substitution of strings within a string literal
  is not possible, it is possible to have a symbol whose defined value is
! a string literal. So instead of setting XYZ to `hello` and writing:
  
! .. code-block:: c
  
       Header : String := "$XYZ";
  
! you should set XYZ to `"hello"` and write:
  
! .. code-block:: c
  
       Header : String := $XYZ;
  
--- 3109,3129 ----
  
  anywhere within a source line, except in a comment or within a
  string literal. The identifier
! following the ``$`` must match one of the symbols defined in the symbol
  definition file, and the result is to substitute the value of the
! symbol in place of ``$symbol`` in the output file.
  
  Note that although the substitution of strings within a string literal
  is not possible, it is possible to have a symbol whose defined value is
! a string literal. So instead of setting XYZ to ``hello`` and writing:
  
! .. code-block:: ada
  
       Header : String := "$XYZ";
  
! you should set XYZ to ``"hello"`` and write:
  
! .. code-block:: ada
  
       Header : String := $XYZ;
  
*************** and then the substitution will occur as
*** 3119,3276 ****
  Integrated Preprocessing
  ------------------------
  
! GNAT sources may be preprocessed immediately before compilation.
! In this case, the actual
! text of the source is not the text of the source file, but is derived from it
! through a process called preprocessing. Integrated preprocessing is specified
! through switches *-gnatep* and/or *-gnateD*. *-gnatep*
! indicates, through a text file, the preprocessing data to be used.
! :samp:`-gnateD` specifies or modifies the values of preprocessing symbol.
! Note that integrated preprocessing applies only to Ada source files, it is
  not available for configuration pragma files.
  
! Note that when integrated preprocessing is used, the output from the
! preprocessor is not written to any external file. Instead it is passed
! internally to the compiler. If you need to preserve the result of
! preprocessing in a file, then you should use *gnatprep*
! to perform the desired preprocessing in stand-alone mode.
  
! It is recommended that *gnatmake* switch -s should be
! used when Integrated Preprocessing is used. The reason is that preprocessing
! with another Preprocessing Data file without changing the sources will
! not trigger recompilation without this switch.
  
! Note that *gnatmake* switch -m will almost
  always trigger recompilation for sources that are preprocessed,
! because *gnatmake* cannot compute the checksum of the source after
  preprocessing.
  
! The actual preprocessing function is described in detail in section
! :ref:`Preprocessing_with_gnatprep`. This section only describes how integrated
! preprocessing is triggered and parameterized.
! 
  
  .. index:: -gnatep (gcc)
  
! :samp:`-gnatep={file}`
!   This switch indicates to the compiler the file name (without directory
!   information) of the preprocessor data file to use. The preprocessor data file
!   should be found in the source directories. Alternatively when using project
!   files, you can reference to the project file's directory via the
!   ``project name'Project_Dir`` project attribute, e.g:
  
!   .. code-block:: gpr
  
!       project Prj is
!          package Compiler is
!             for Switches ("Ada") use
!               ("-gnatep=" & Prj'Project_Dir & "prep.def");
!          end Compiler;
!       end Prj;
  
!   A preprocessing data file is a text file with significant lines indicating
!   how should be preprocessed either a specific source or all sources not
!   mentioned in other lines. A significant line is a nonempty, non-comment line.
!   Comments are similar to Ada comments.
  
!   Each significant line starts with either a literal string or the character '*'.
!   A literal string is the file name (without directory information) of the source
!   to preprocess. A character '*' indicates the preprocessing for all the sources
!   that are not specified explicitly on other lines (order of the lines is not
!   significant). It is an error to have two lines with the same file name or two
    lines starting with the character '*'.
  
!   After the file name or the character '*', another optional literal string
!   indicating the file name of the definition file to be used for preprocessing
    (:ref:`Form_of_Definitions_File`). The definition files are found by the
    compiler in one of the source directories. In some cases, when compiling
    a source in a directory other than the current directory, if the definition
    file is in the current directory, it may be necessary to add the current
!   directory as a source directory through switch -I., otherwise
    the compiler would not find the definition file.
  
!   Then, optionally, switches similar to those of `gnatprep` may
!   be found. Those switches are:
  
!   :samp:`-b`
      Causes both preprocessor lines and the lines deleted by
      preprocessing to be replaced by blank lines, preserving the line number.
!     This switch is always implied; however, if specified after *-c*
!     it cancels the effect of *-c*.
  
  
!   :samp:`-c`
      Causes both preprocessor lines and the lines deleted
      by preprocessing to be retained as comments marked
      with the special string '`--!`'.
  
  
!   :samp:`-Dsymbol={value}`
!     Define or redefine a symbol, associated with value. A symbol is an Ada
!     identifier, or an Ada reserved word, with the exception of `if`,
!     `else`, `elsif`, `end`, `and`, `or` and `then`.
!     `value` is either a literal string, an Ada identifier or any Ada reserved
      word. A symbol declared with this switch replaces a symbol with the
      same name defined in a definition file.
  
  
!   :samp:`-s`
      Causes a sorted list of symbol names and values to be
      listed on the standard output file.
  
  
!   :samp:`-u`
!     Causes undefined symbols to be treated as having the value `FALSE`
      in the context
      of a preprocessor test. In the absence of this option, an undefined symbol in
!     a `#if` or `#elsif` test will be treated as an error.
! 
! 
!   Examples of valid lines in a preprocessor data file:
! 
!   .. code-block:: ada
! 
!       "toto.adb"  "prep.def" -u
!       --  preprocess "toto.adb", using definition file "prep.def",
!       --  undefined symbol are False.
! 
!       * -c -DVERSION=V101
!       --  preprocess all other sources without a definition file;
!       --  suppressed lined are commented; symbol VERSION has the value V101.
  
-       "titi.adb" "prep2.def" -s
-       --  preprocess "titi.adb", using definition file "prep2.def";
-       --  list all symbols with their values.
  
  .. index:: -gnateD (gcc)
  
! :samp:`-gnateDsymbol[=value]`
!   Define or redefine a preprocessing symbol, associated with value. If no value
!   is given on the command line, then the value of the symbol is `True`.
!   A symbol is an identifier, following normal Ada (case-insensitive)
!   rules for its syntax, and value is either an arbitrary string between double
    quotes or any sequence (including an empty sequence) of characters from the
    set (letters, digits, period, underline).
!   Ada reserved words may be used as symbols, with the exceptions of `if`,
!   `else`, `elsif`, `end`, `and`, `or` and `then`.
  
!   Examples::
  
!        -gnateDToto=Titi
!        -gnateDFoo
!        -gnateDFoo=\"Foo-Bar\"
  
    A symbol declared with this switch on the command line replaces a
    symbol with the same name either in a definition file or specified with a
!   switch -D in the preprocessor data file.
  
!   This switch is similar to switch *-D* of `gnatprep`.
  
  
! :samp:`-gnateG`
!   When integrated preprocessing is performed and the preprocessor modifies
!   the source text, write the result of this preprocessing into a file
!   <source>.prep.
  
  
  .. _Mixed_Language_Programming:
--- 3135,3336 ----
  Integrated Preprocessing
  ------------------------
  
! As noted above, a file to be preprocessed consists of Ada source code
! in which preprocessing lines have been inserted. However,
! instead of using ``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:
! 
!    *   :switch:`-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).
! 
!    *   :switch:`-gnateD`, which defines values for preprocessing symbols.
! 
! Integrated preprocessing applies only to Ada source files, it is
  not available for configuration pragma files.
  
! With integrated preprocessing, the output from the preprocessor is not,
! by default, written to any external file. Instead it is passed
! internally to the compiler. To preserve the result of
! preprocessing in a file, either run ``gnatprep``
! in standalone mode or else supply the :switch:`-gnateG` switch
! (described below) to the compiler.
  
! When using project files:
  
!    *    the builder switch :switch:`-x` should be used if any Ada source is
!         compiled with :switch:`gnatep=`, so that the compiler finds the
!         *preprocessor data file*.
! 
!    *    the preprocessing data file and the symbol definition files should be
!         located in the source directories of the project.
! 
! Note that the ``gnatmake`` switch :switch:`-m` will almost
  always trigger recompilation for sources that are preprocessed,
! because ``gnatmake`` cannot compute the checksum of the source after
  preprocessing.
  
! The actual preprocessing function is described in detail in
! :ref:`Preprocessing_with_gnatprep`. This section explains the switches
! that relate to integrated preprocessing.
  
  .. index:: -gnatep (gcc)
  
! :switch:`-gnatep={preprocessor_data_file}`
!   This switch specifies the file name (without directory
!   information) of the preprocessor data file. Either place this file
!   in one of the source directories, or, when using project
!   files, reference the project file's directory via the
!   ``project_name'Project_Dir`` project attribute; e.g:
  
!      .. code-block:: gpr
  
!          project Prj is
!             package Compiler is
!                for Switches ("Ada") use
!                  ("-gnatep=" & Prj'Project_Dir & "prep.def");
!             end Compiler;
!          end Prj;
  
!   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 ``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
!   semantic effect.
  
!   Here's an example of a preprocessor data file:
! 
!     .. code-block:: ada
! 
!         "toto.adb"  "prep.def" -u
!         --  Preprocess toto.adb, using definition file prep.def
!         --  Undefined symbols are treated as False
! 
!         * -c -DVERSION=V101
!         --  Preprocess all other sources without using a definition file
!         --  Suppressed lined are commented
!         --  Symbol VERSION has the value V101
! 
!         "tata.adb" "prep2.def" -s
!         --  Preprocess tata.adb, using definition file prep2.def
!         --  List all symbols with their values
! 
!   A preprocessor control line has the following syntax:
! 
!     ::
! 
!         <preprocessor_control_line> ::=
!            <preprocessor_input> [ <definition_file_name> ] { <switch> }
! 
!         <preprocessor_input> ::= <source_file_name> | '*'
! 
!         <definition_file_name> ::= <string_literal>
! 
!         <source_file_name> := <string_literal>
! 
!         <switch> := (See below for list)
! 
!   Thus  each preprocessor control line starts with either a literal string or
!   the character '*':
! 
!   *  A literal string is the file name (without directory information) of the source
!      file that will be input to the preprocessor.
! 
!   *  The character '*' is a wild-card indicator; the additional parameters on the line
!      indicate the preprocessing for all the sources
!      that are not specified explicitly on other lines (the order of the lines is not
!      significant).
! 
!   It is an error to have two lines with the same file name or two
    lines starting with the character '*'.
  
!   After the file name or '*', an optional literal string specifies the name of
!   the definition file to be used for preprocessing
    (:ref:`Form_of_Definitions_File`). The definition files are found by the
    compiler in one of the source directories. In some cases, when compiling
    a source in a directory other than the current directory, if the definition
    file is in the current directory, it may be necessary to add the current
!   directory as a source directory through the :switch:`-I` switch; otherwise
    the compiler would not find the definition file.
  
!   Finally, switches similar to those of ``gnatprep`` may optionally appear:
  
!   :switch:`-b`
      Causes both preprocessor lines and the lines deleted by
      preprocessing to be replaced by blank lines, preserving the line number.
!     This switch is always implied; however, if specified after :switch:`-c`
!     it cancels the effect of :switch:`-c`.
  
  
!   :switch:`-c`
      Causes both preprocessor lines and the lines deleted
      by preprocessing to be retained as comments marked
      with the special string '`--!`'.
  
  
!   :switch:`-D{symbol}={new_value}`
!     Define or redefine ``symbol`` to have ``new_value`` as its value.
!     The permitted form for ``symbol`` is either an Ada identifier, or any Ada reserved word
!     aside from ``if``,
!     ``else``, ``elsif``, ``end``, ``and``, ``or`` and ``then``.
!     The permitted form for ``new_value`` is a literal string, an Ada identifier or any Ada reserved
      word. A symbol declared with this switch replaces a symbol with the
      same name defined in a definition file.
  
  
!   :switch:`-s`
      Causes a sorted list of symbol names and values to be
      listed on the standard output file.
  
  
!   :switch:`-u`
!     Causes undefined symbols to be treated as having the value ``FALSE``
      in the context
      of a preprocessor test. In the absence of this option, an undefined symbol in
!     a ``#if`` or ``#elsif`` test will be treated as an error.
  
  
  .. index:: -gnateD (gcc)
  
! :switch:`-gnateD{symbol}[={new_value}]`
!   Define or redefine ``symbol`` to have ``new_value`` as its value. If no value
!   is supplied, then the value of ``symbol`` is ``True``.
!   The form of ``symbol`` is an identifier, following normal Ada (case-insensitive)
!   rules for its syntax, and ``new_value`` is either an arbitrary string between double
    quotes or any sequence (including an empty sequence) of characters from the
    set (letters, digits, period, underline).
!   Ada reserved words may be used as symbols, with the exceptions of ``if``,
!   ``else``, ``elsif``, ``end``, ``and``, ``or`` and ``then``.
  
!   Examples:
  
!     ::
! 
!         -gnateDToto=Tata
!         -gnateDFoo
!         -gnateDFoo=\"Foo-Bar\"
  
    A symbol declared with this switch on the command line replaces a
    symbol with the same name either in a definition file or specified with a
!   switch :switch:`-D` in the preprocessor data file.
  
!   This switch is similar to switch :switch:`-D` of ``gnatprep``.
  
  
! :switch:`-gnateG`
!   When integrated preprocessing is performed on source file :file:`filename.extension`,
!   create or overwrite :file:`filename.extension.prep` to contain
!   the result of the preprocessing.
!   For example if the source file is :file:`foo.adb` then
!   the output file will be :file:`foo.adb.prep`.
  
  
  .. _Mixed_Language_Programming:
*************** Interfacing to C
*** 3290,3297 ****
  
  Interfacing Ada with a foreign language such as C involves using
  compiler directives to import and/or export entity definitions in each
! language -- using `extern` statements in C, for instance, and the
! `Import`, `Export`, and `Convention` pragmas in Ada.
  A full treatment of these topics is provided in Appendix B, section 1
  of the Ada Reference Manual.
  
--- 3350,3357 ----
  
  Interfacing Ada with a foreign language such as C involves using
  compiler directives to import and/or export entity definitions in each
! language -- using ``extern`` statements in C, for instance, and the
! ``Import``, ``Export``, and ``Convention`` pragmas in Ada.
  A full treatment of these topics is provided in Appendix B, section 1
  of the Ada Reference Manual.
  
*************** the main subprogram in Ada:
*** 3340,3346 ****
         --  Declare an Ada procedure spec for Print_Num, then use
         --  C function print_num for the implementation.
         procedure Print_Num (Num : Integer);
!        pragma Import (C, Print_Num, "print_num";
  
      begin
         Print_Num (Get_Num);
--- 3400,3406 ----
         --  Declare an Ada procedure spec for Print_Num, then use
         --  C function print_num for the implementation.
         procedure Print_Num (Num : Integer);
!        pragma Import (C, Print_Num, "print_num");
  
      begin
         Print_Num (Get_Num);
*************** example's:
*** 3476,3482 ****
        $ gnatmake -c unit2.adb
  
  * Run the Ada binder on every generated ALI file.  Make sure to use the
!   :option:`-n` option to specify a foreign main program:
  
    .. code-block:: sh
  
--- 3536,3542 ----
        $ gnatmake -c unit2.adb
  
  * Run the Ada binder on every generated ALI file.  Make sure to use the
!   :switch:`-n` option to specify a foreign main program:
  
    .. code-block:: sh
  
*************** example's:
*** 3492,3500 ****
    This procedure yields a binary executable called :file:`exec_file`.
  
  Depending on the circumstances (for example when your non-Ada main object
! does not provide symbol `main`), you may also need to instruct the
  GNAT linker not to include the standard startup objects by passing the
! :option:`-nostartfiles` switch to `gnatlink`.
  
  .. _Calling_Conventions:
  
--- 3552,3560 ----
    This procedure yields a binary executable called :file:`exec_file`.
  
  Depending on the circumstances (for example when your non-Ada main object
! does not provide symbol ``main``), you may also need to instruct the
  GNAT linker not to include the standard startup objects by passing the
! :switch:`-nostartfiles` switch to ``gnatlink``.
  
  .. _Calling_Conventions:
  
*************** Convention identifiers are recognized by
*** 3516,3522 ****
  
  .. index:: Convention Ada
  
! *Ada*
    This indicates that the standard Ada calling sequence will be
    used and all Ada data items may be passed without any limitations in the
    case where GNAT is used to generate both the caller and callee. It is also
--- 3576,3582 ----
  
  .. index:: Convention Ada
  
! ``Ada``
    This indicates that the standard Ada calling sequence will be
    used and all Ada data items may be passed without any limitations in the
    case where GNAT is used to generate both the caller and callee. It is also
*************** Convention identifiers are recognized by
*** 3550,3556 ****
  .. index:: Convention Assembler
  
  
! *Assembler*
    Specifies assembler as the convention. In practice this has the
    same effect as convention Ada (but is not equivalent in the sense of being
    considered the same convention).
--- 3610,3616 ----
  .. index:: Convention Assembler
  
  
! ``Assembler``
    Specifies assembler as the convention. In practice this has the
    same effect as convention Ada (but is not equivalent in the sense of being
    considered the same convention).
*************** Convention identifiers are recognized by
*** 3559,3565 ****
  
  .. index:: Asm
  
! *Asm*
    Equivalent to Assembler.
  
    .. index:: Interfacing to COBOL
--- 3619,3625 ----
  
  .. index:: Asm
  
! ``Asm``
    Equivalent to Assembler.
  
    .. index:: Interfacing to COBOL
*************** Convention identifiers are recognized by
*** 3568,3574 ****
  
  .. index:: COBOL
  
! *COBOL*
    Data will be passed according to the conventions described
    in section B.4 of the Ada Reference Manual.
  
--- 3628,3634 ----
  
  .. index:: COBOL
  
! ``COBOL``
    Data will be passed according to the conventions described
    in section B.4 of the Ada Reference Manual.
  
*************** Convention identifiers are recognized by
*** 3578,3584 ****
  .. index:: Convention C
  
  
! *C*
    Data will be passed according to the conventions described
    in section B.3 of the Ada Reference Manual.
  
--- 3638,3644 ----
  .. index:: Convention C
  
  
! ``C``
    Data will be passed according to the conventions described
    in section B.3 of the Ada Reference Manual.
  
*************** Convention identifiers are recognized by
*** 3588,3623 ****
      .. index:: Interfacing to C varargs function
      .. index:: varargs function interfaces
  
!     In C, `varargs` allows a function to take a variable number of
      arguments. There is no direct equivalent in this to Ada. One
      approach that can be used is to create a C wrapper for each
      different profile and then interface to this C wrapper. For
!     example, to print an `int` value using `printf`,
!     create a C function `printfi` that takes two arguments, a
!     pointer to a string and an int, and calls `printf`.
!     Then in the Ada program, use pragma `Import` to
!     interface to `printfi`.
  
      It may work on some platforms to directly interface to
!     a `varargs` function by providing a specific Ada profile
      for a particular call. However, this does not work on
      all platforms, since there is no guarantee that the
      calling sequence for a two argument normal C function
!     is the same as for calling a `varargs` C function with
      the same two arguments.
  
  .. index:: Convention Default
  
  .. index:: Default
  
! *Default*
    Equivalent to C.
  
  .. index:: Convention External
  
  .. index:: External
  
! *External*
    Equivalent to C.
  
  .. index:: C++
--- 3648,3683 ----
      .. index:: Interfacing to C varargs function
      .. index:: varargs function interfaces
  
!     In C, ``varargs`` allows a function to take a variable number of
      arguments. There is no direct equivalent in this to Ada. One
      approach that can be used is to create a C wrapper for each
      different profile and then interface to this C wrapper. For
!     example, to print an ``int`` value using ``printf``,
!     create a C function ``printfi`` that takes two arguments, a
!     pointer to a string and an int, and calls ``printf``.
!     Then in the Ada program, use pragma ``Import`` to
!     interface to ``printfi``.
  
      It may work on some platforms to directly interface to
!     a ``varargs`` function by providing a specific Ada profile
      for a particular call. However, this does not work on
      all platforms, since there is no guarantee that the
      calling sequence for a two argument normal C function
!     is the same as for calling a ``varargs`` C function with
      the same two arguments.
  
  .. index:: Convention Default
  
  .. index:: Default
  
! ``Default``
    Equivalent to C.
  
  .. index:: Convention External
  
  .. index:: External
  
! ``External``
    Equivalent to C.
  
  .. index:: C++
*************** Convention identifiers are recognized by
*** 3626,3632 ****
  .. index:: Convention C++
  
  
! *C_Plus_Plus (or CPP)*
    This stands for C++. For most purposes this is identical to C.
    See the separate description of the specialized GNAT pragmas relating to
    C++ interfacing for further details.
--- 3686,3692 ----
  .. index:: Convention C++
  
  
! ``C_Plus_Plus`` (or ``CPP``)
    This stands for C++. For most purposes this is identical to C.
    See the separate description of the specialized GNAT pragmas relating to
    C++ interfacing for further details.
*************** Convention identifiers are recognized by
*** 3636,3647 ****
  .. index:: Convention Fortran
  
  
! *Fortran*
    Data will be passed according to the conventions described
    in section B.5 of the Ada Reference Manual.
  
  
! *Intrinsic*
    This applies to an intrinsic operation, as defined in the Ada
    Reference Manual. If a pragma Import (Intrinsic) applies to a subprogram,
    this means that the body of the subprogram is provided by the compiler itself,
--- 3696,3707 ----
  .. index:: Convention Fortran
  
  
! ``Fortran``
    Data will be passed according to the conventions described
    in section B.5 of the Ada Reference Manual.
  
  
! ``Intrinsic``
    This applies to an intrinsic operation, as defined in the Ada
    Reference Manual. If a pragma Import (Intrinsic) applies to a subprogram,
    this means that the body of the subprogram is provided by the compiler itself,
*************** Convention identifiers are recognized by
*** 3684,3690 ****
    * General subprogram entities. This is used  to bind an Ada subprogram
      declaration to
      a compiler builtin by name with back-ends where such interfaces are
!     available. A typical example is the set of `__builtin` functions
      exposed by the GCC back-end, as in the following example:
  
  
--- 3744,3750 ----
    * General subprogram entities. This is used  to bind an Ada subprogram
      declaration to
      a compiler builtin by name with back-ends where such interfaces are
!     available. A typical example is the set of ``__builtin`` functions
      exposed by the GCC back-end, as in the following example:
  
  
*************** Convention identifiers are recognized by
*** 3701,3736 ****
  .. index:: Stdcall
  .. index:: Convention Stdcall
  
! *Stdcall*
    This is relevant only to Windows implementations of GNAT,
!   and specifies that the `Stdcall` calling sequence will be used,
    as defined by the NT API. Nevertheless, to ease building
!   cross-platform bindings this convention will be handled as a `C` calling
    convention on non-Windows platforms.
  
  .. index:: DLL
  .. index:: Convention DLL
  
  
! *DLL*
!   This is equivalent to `Stdcall`.
  
  .. index:: Win32
  .. index:: Convention Win32
  
  
! *Win32*
!   This is equivalent to `Stdcall`.
  
  .. index:: Stubbed
  .. index:: Convention Stubbed
  
  
! *Stubbed*
    This is a special convention that indicates that the compiler
!   should provide a stub body that raises `Program_Error`.
  
! GNAT additionally provides a useful pragma `Convention_Identifier`
  that can be used to parameterize conventions and allow additional synonyms
  to be specified. For example if you have legacy code in which the convention
  identifier Fortran77 was used for Fortran, you can use the configuration
--- 3761,3796 ----
  .. index:: Stdcall
  .. index:: Convention Stdcall
  
! ``Stdcall``
    This is relevant only to Windows implementations of GNAT,
!   and specifies that the ``Stdcall`` calling sequence will be used,
    as defined by the NT API. Nevertheless, to ease building
!   cross-platform bindings this convention will be handled as a ``C`` calling
    convention on non-Windows platforms.
  
  .. index:: DLL
  .. index:: Convention DLL
  
  
! ``DLL``
!   This is equivalent to ``Stdcall``.
  
  .. index:: Win32
  .. index:: Convention Win32
  
  
! ``Win32``
!   This is equivalent to ``Stdcall``.
  
  .. index:: Stubbed
  .. index:: Convention Stubbed
  
  
! ``Stubbed``
    This is a special convention that indicates that the compiler
!   should provide a stub body that raises ``Program_Error``.
  
! GNAT additionally provides a useful pragma ``Convention_Identifier``
  that can be used to parameterize conventions and allow additional synonyms
  to be specified. For example if you have legacy code in which the convention
  identifier Fortran77 was used for Fortran, you can use the configuration
*************** pragma:
*** 3741,3747 ****
       pragma Convention_Identifier (Fortran77, Fortran);
  
  And from now on the identifier Fortran77 may be used as a convention
! identifier (for example in an `Import` pragma) with the same
  meaning as Fortran.
  
  
--- 3801,3807 ----
       pragma Convention_Identifier (Fortran77, Fortran);
  
  And from now on the identifier Fortran77 may be used as a convention
! identifier (for example in an ``Import`` pragma) with the same
  meaning as Fortran.
  
  
*************** generating code that is compatible with
*** 3764,3783 ****
  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`
! (or `CPP`) that behaves exactly like `Convention C`.
  Usually, C++ mangles the names of subprograms. To generate proper mangled
  names automatically, see :ref:`Generating_Ada_Bindings_for_C_and_C++_headers`).
  This problem can also be addressed manually in two ways:
  
  * by modifying the C++ code in order to force a C convention using
!   the `extern "C"` syntax.
  
! * by figuring out the mangled name (using e.g. *nm*) and using it as the
    Link_Name argument of the pragma import.
  
  Interfacing at the class level can be achieved by using the GNAT specific
! pragmas such as `CPP_Constructor`.  See the :title:`GNAT_Reference_Manual` for additional information.
  
  .. _Linking_a_Mixed_C++_and_Ada_Program:
  
--- 3824,3843 ----
  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``
! (or ``CPP``) that behaves exactly like ``Convention C``.
  Usually, C++ mangles the names of subprograms. To generate proper mangled
  names automatically, see :ref:`Generating_Ada_Bindings_for_C_and_C++_headers`).
  This problem can also be addressed manually in two ways:
  
  * by modifying the C++ code in order to force a C convention using
!   the ``extern "C"`` syntax.
  
! * by figuring out the mangled name (using e.g. ``nm``) and using it as the
    Link_Name argument of the pragma import.
  
  Interfacing at the class level can be achieved by using the GNAT specific
! pragmas such as ``CPP_Constructor``.  See the :title:`GNAT_Reference_Manual` for additional information.
  
  .. _Linking_a_Mixed_C++_and_Ada_Program:
  
*************** considered:
*** 3794,3803 ****
  
  * Using GNAT and G++ (GNU C++ compiler) from the same GCC installation:
    The C++ linker can simply be called by using the C++ specific driver
!   called `g++`.
  
    Note that if the C++ code uses inline functions, you will need to
!   compile your C++ code with the `-fkeep-inline-functions` switch in
    order to provide an existing function implementation that the Ada code can
    link with.
  
--- 3854,3863 ----
  
  * Using GNAT and G++ (GNU C++ compiler) from the same GCC installation:
    The C++ linker can simply be called by using the C++ specific driver
!   called ``g++``.
  
    Note that if the C++ code uses inline functions, you will need to
!   compile your C++ code with the :switch:`-fkeep-inline-functions` switch in
    order to provide an existing function implementation that the Ada code can
    link with.
  
*************** considered:
*** 3818,3824 ****
    improperly if set during invocation of the wrong compiler.  It is also
    very important that the linker uses the proper :file:`libgcc.a` GCC
    library -- that is, the one from the C++ compiler installation. The
!   implicit link command as suggested in the `gnatmake` command
    from the former example can be replaced by an explicit link command with
    the full-verbosity option in order to verify which library is used:
  
--- 3878,3884 ----
    improperly if set during invocation of the wrong compiler.  It is also
    very important that the linker uses the proper :file:`libgcc.a` GCC
    library -- that is, the one from the C++ compiler installation. The
!   implicit link command as suggested in the ``gnatmake`` command
    from the former example can be replaced by an explicit link command with
    the full-verbosity option in order to verify which library is used:
  
*************** considered:
*** 3847,3866 ****
    a few more parameters to the link command line, depending on the exception
    mechanism used.
  
!   If the `setjmp/longjmp` exception mechanism is used, only the paths
!   to the libgcc libraries are required:
  
    .. code-block:: sh
  
      $ cat ./my_script
      #!/bin/sh
!     CC $* `gcc -print-file-name=libgcc.a` `gcc -print-file-name=libgcc_eh.a`
      $ gnatlink ada_unit file1.o file2.o --LINK=./my_script
  
  
    where CC is the name of the non-GNU C++ compiler.
  
!   If the `zero cost` exception mechanism is used, and the platform
    supports automatic registration of exception tables (e.g., Solaris),
    paths to more objects are required:
  
--- 3907,3926 ----
    a few more parameters to the link command line, depending on the exception
    mechanism used.
  
!   If the ``setjmp`` / ``longjmp`` exception mechanism is used, only the paths
!   to the ``libgcc`` libraries are required:
  
    .. code-block:: sh
  
      $ cat ./my_script
      #!/bin/sh
!     CC $* gcc -print-file-name=libgcc.a gcc -print-file-name=libgcc_eh.a
      $ gnatlink ada_unit file1.o file2.o --LINK=./my_script
  
  
    where CC is the name of the non-GNU C++ compiler.
  
!   If the "zero cost" exception mechanism is used, and the platform
    supports automatic registration of exception tables (e.g., Solaris),
    paths to more objects are required:
  
*************** considered:
*** 3868,3876 ****
  
      $ cat ./my_script
      #!/bin/sh
!     CC `gcc -print-file-name=crtbegin.o` $* \\
!     `gcc -print-file-name=libgcc.a` `gcc -print-file-name=libgcc_eh.a` \\
!     `gcc -print-file-name=crtend.o`
      $ gnatlink ada_unit file1.o file2.o --LINK=./my_script
  
  
--- 3928,3936 ----
  
      $ cat ./my_script
      #!/bin/sh
!     CC gcc -print-file-name=crtbegin.o $* \\
!     gcc -print-file-name=libgcc.a gcc -print-file-name=libgcc_eh.a \\
!     gcc -print-file-name=crtend.o
      $ gnatlink ada_unit file1.o file2.o --LINK=./my_script
  
  
*************** Interfacing with C++ constructors
*** 4020,4026 ****
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  
  In order to interface with C++ constructors GNAT provides the
! `pragma CPP_Constructor` (see the :title:`GNAT_Reference_Manual`
  for additional information).
  In this section we present some common uses of C++ constructors
  in mixed-languages programs in GNAT.
--- 4080,4086 ----
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  
  In order to interface with C++ constructors GNAT provides the
! ``pragma CPP_Constructor`` (see the :title:`GNAT_Reference_Manual`
  for additional information).
  In this section we present some common uses of C++ constructors
  in mixed-languages programs in GNAT.
*************** properly initialized.
*** 4078,4085 ****
  
  Constructors can only appear in the following contexts:
  
! * On the right side of an initialization of an object of type `T`.
! * On the right side of an initialization of a record component of type `T`.
  * In an Ada 2005 limited aggregate.
  * In an Ada 2005 nested limited aggregate.
  * In an Ada 2005 limited aggregate that initializes an object built in
--- 4138,4145 ----
  
  Constructors can only appear in the following contexts:
  
! * On the right side of an initialization of an object of type ``T``.
! * On the right side of an initialization of a record component of type ``T``.
  * In an Ada 2005 limited aggregate.
  * In an Ada 2005 nested limited aggregate.
  * In an Ada 2005 limited aggregate that initializes an object built in
*************** expression that initializes the object.
*** 4100,4107 ****
  The first two declarations are equivalent: in both cases the default C++
  constructor is invoked (in the former case the call to the constructor is
  implicit, and in the latter case the call is explicit in the object
! declaration). `Obj3` is initialized by the C++ non-default constructor
! that takes an integer argument, and `Obj4` is initialized by the
  non-default C++ constructor that takes two integers.
  
  Let us derive the imported C++ class in the Ada side. For example:
--- 4160,4167 ----
  The first two declarations are equivalent: in both cases the default C++
  constructor is invoked (in the former case the call to the constructor is
  implicit, and in the latter case the call is explicit in the object
! declaration). ``Obj3`` is initialized by the C++ non-default constructor
! that takes an integer argument, and ``Obj4`` is initialized by the
  non-default C++ constructor that takes two integers.
  
  Let us derive the imported C++ class in the Ada side. For example:
*************** an aggregate of type DT, or by means of
*** 4124,4134 ****
       Obj6 : DT := Function_Returning_DT (50);
       Obj7 : DT := (Constructor (30,40) with C_Value => 50);
  
! The declaration of `Obj5` invokes the default constructors: the
  C++ default constructor of the parent type takes care of the initialization
  of the components inherited from Root, and GNAT takes care of the default
  initialization of the additional Ada components of type DT (that is,
! `C_Value` is initialized to value 2009). The order of invocation of
  the constructors is consistent with the order of elaboration required by
  Ada and C++. That is, the constructor of the parent type is always called
  before the constructor of the derived type.
--- 4184,4194 ----
       Obj6 : DT := Function_Returning_DT (50);
       Obj7 : DT := (Constructor (30,40) with C_Value => 50);
  
! The declaration of ``Obj5`` invokes the default constructors: the
  C++ default constructor of the parent type takes care of the initialization
  of the components inherited from Root, and GNAT takes care of the default
  initialization of the additional Ada components of type DT (that is,
! ``C_Value`` is initialized to value 2009). The order of invocation of
  the constructors is consistent with the order of elaboration required by
  Ada and C++. That is, the constructor of the parent type is always called
  before the constructor of the derived type.
*************** from C++. For example:
*** 4148,4154 ****
          Data2 : Root := Constructor (D, 30);
       end record;
  
! The initialization of an object of type `Rec2` will call the
  non-default C++ constructors specified for the imported components.
  For example:
  
--- 4208,4214 ----
          Data2 : Root := Constructor (D, 30);
       end record;
  
! The initialization of an object of type ``Rec2`` will call the
  non-default C++ constructors specified for the imported components.
  For example:
  
*************** declarations. For example:
*** 4167,4181 ****
                       others => <>);
  
  The above declaration uses an Ada 2005 limited aggregate to
! initialize `Obj9`, and the C++ constructor that has two integer
! arguments is invoked to initialize the `Data1` component instead
! of the constructor specified in the declaration of type `Rec1`. In
  Ada 2005 the box in the aggregate indicates that unspecified components
  are initialized using the expression (if any) available in the component
! declaration. That is, in this case discriminant `D` is initialized
! to value `20`, `Value` is initialized to value 1000, and the
  non-default C++ constructor that handles two integers takes care of
! initializing component `Data2` with values `20,30`.
  
  In Ada 2005 we can use the extended return statement to build the Ada
  equivalent to C++ non-default constructors. For example:
--- 4227,4241 ----
                       others => <>);
  
  The above declaration uses an Ada 2005 limited aggregate to
! initialize ``Obj9``, and the C++ constructor that has two integer
! arguments is invoked to initialize the ``Data1`` component instead
! of the constructor specified in the declaration of type ``Rec1``. In
  Ada 2005 the box in the aggregate indicates that unspecified components
  are initialized using the expression (if any) available in the component
! declaration. That is, in this case discriminant ``D`` is initialized
! to value ``20``, ``Value`` is initialized to value 1000, and the
  non-default C++ constructor that handles two integers takes care of
! initializing component ``Data2`` with values ``20,30``.
  
  In Ada 2005 we can use the extended return statement to build the Ada
  equivalent to C++ non-default constructors. For example:
*************** classifications. We first demonstrate a
*** 4212,4219 ****
  constructors are defined on the C++ side and imported from the Ada
  side, and latter the reverse case.
  
! The root of our derivation will be the `Animal` class, with a
! single private attribute (the `Age` of the animal), a constructor,
  and two public primitives to set and get the value of this attribute.
  
  .. code-block:: cpp
--- 4272,4279 ----
  constructors are defined on the C++ side and imported from the Ada
  side, and latter the reverse case.
  
! The root of our derivation will be the ``Animal`` class, with a
! single private attribute (the ``Age`` of the animal), a constructor,
  and two public primitives to set and get the value of this attribute.
  
  .. code-block:: cpp
*************** and two public primitives to set and get
*** 4229,4236 ****
  
  Abstract interface types are defined in C++ by means of classes with pure
  virtual functions and no data members. In our example we will use two
! interfaces that provide support for the common management of `Carnivore`
! and `Domestic` animals:
  
  .. code-block:: cpp
  
--- 4289,4296 ----
  
  Abstract interface types are defined in C++ by means of classes with pure
  virtual functions and no data members. In our example we will use two
! interfaces that provide support for the common management of ``Carnivore``
! and ``Domestic`` animals:
  
  .. code-block:: cpp
  
*************** and `Domestic` animals:
*** 4244,4250 ****
          virtual void Set_Owner (char* Name) = 0;
       };
  
! Using these declarations, we can now say that a `Dog` is an animal that is
  both Carnivore and Domestic, that is:
  
  .. code-block:: cpp
--- 4304,4310 ----
          virtual void Set_Owner (char* Name) = 0;
       };
  
! Using these declarations, we can now say that a ``Dog`` is an animal that is
  both Carnivore and Domestic, that is:
  
  .. code-block:: cpp
*************** both Carnivore and Domestic, that is:
*** 4261,4267 ****
       };
  
  In the following examples we will assume that the previous declarations are
! located in a file named `animals.h`. The following package demonstrates
  how to import these C++ declarations from the Ada side:
  
  .. code-block:: ada
--- 4321,4327 ----
       };
  
  In the following examples we will assume that the previous declarations are
! located in a file named :file:`animals.h`. The following package demonstrates
  how to import these C++ declarations from the Ada side:
  
  .. code-block:: ada
*************** how to import these C++ declarations fro
*** 4296,4302 ****
  
         type Dog is new Animal and Carnivore and Domestic with record
           Tooth_Count : Natural;
!          Owner       : String (1 .. 30);
         end record;
         pragma Import (C_Plus_Plus, Dog);
  
--- 4356,4362 ----
  
         type Dog is new Animal and Carnivore and Domestic with record
           Tooth_Count : Natural;
!          Owner       : Chars_Ptr;
         end record;
         pragma Import (C_Plus_Plus, Dog);
  
*************** the primitives and components must be de
*** 4317,4325 ****
  the two languages.
  
  Regarding the abstract interfaces, we must indicate to the GNAT compiler by
! means of a `pragma Convention (C_Plus_Plus)`, the convention used to pass
  the arguments to the called primitives will be the same as for C++. For the
! imported classes we use `pragma Import` with convention `C_Plus_Plus`
  to indicate that they have been defined on the C++ side; this is required
  because the dispatch table associated with these tagged types will be built
  in the C++ side and therefore will not contain the predefined Ada primitives
--- 4377,4385 ----
  the two languages.
  
  Regarding the abstract interfaces, we must indicate to the GNAT compiler by
! means of a ``pragma Convention (C_Plus_Plus)``, the convention used to pass
  the arguments to the called primitives will be the same as for C++. For the
! imported classes we use ``pragma Import`` with convention ``C_Plus_Plus``
  to indicate that they have been defined on the C++ side; this is required
  because the dispatch table associated with these tagged types will be built
  in the C++ side and therefore will not contain the predefined Ada primitives
*************** As the reader can see there is no need t
*** 4329,4335 ****
  associated with each subprogram because it is assumed that all the calls to
  these primitives will be dispatching calls. The only exception is the
  constructor, which must be registered with the compiler by means of
! `pragma CPP_Constructor` and needs to provide its associated C++
  mangled name because the Ada compiler generates direct calls to it.
  
  With the above packages we can now declare objects of type Dog on the Ada side
--- 4389,4395 ----
  associated with each subprogram because it is assumed that all the calls to
  these primitives will be dispatching calls. The only exception is the
  constructor, which must be registered with the compiler by means of
! ``pragma CPP_Constructor`` and needs to provide its associated C++
  mangled name because the Ada compiler generates direct calls to it.
  
  With the above packages we can now declare objects of type Dog on the Ada side
*************** them to C++, using the same hierarchy of
*** 4401,4414 ****
       end Animals;
  
  Compared with our previous example the only differences are the use of
! `pragma Convention` (instead of `pragma Import`), and the use of
! `pragma Export` to indicate to the GNAT compiler that the primitives will
  be available to C++. Thanks to the ABI compatibility, on the C++ side there is
  nothing else to be done; as explained above, the only requirement is that all
  the primitives and components are declared in exactly the same order.
  
  For completeness, let us see a brief C++ main program that uses the
! declarations available in `animals.h` (presented in our first example) to
  import and use the declarations from the Ada side, properly initializing and
  finalizing the Ada run-time system along the way:
  
--- 4461,4474 ----
       end Animals;
  
  Compared with our previous example the only differences are the use of
! ``pragma Convention`` (instead of ``pragma Import``), and the use of
! ``pragma Export`` to indicate to the GNAT compiler that the primitives will
  be available to C++. Thanks to the ABI compatibility, on the C++ side there is
  nothing else to be done; as explained above, the only requirement is that all
  the primitives and components are declared in exactly the same order.
  
  For completeness, let us see a brief C++ main program that uses the
! declarations available in :file:`animals.h` (presented in our first example) to
  import and use the declarations from the Ada side, properly initializing and
  finalizing the Ada run-time system along the way:
  
*************** Some of the known limitations include:
*** 4469,4475 ****
  * some extensions (e.g. vector types) are not supported
  * pointers to pointers or complex structures are mapped to System.Address
  * identifiers with identical name (except casing) will generate compilation
!   errors (e.g. `shm_get` vs `SHM_GET`).
  
  The code generated is using the Ada 2005 syntax, which makes it
  easier to interface with other languages than previous versions of Ada.
--- 4529,4535 ----
  * some extensions (e.g. vector types) are not supported
  * pointers to pointers or complex structures are mapped to System.Address
  * identifiers with identical name (except casing) will generate compilation
!   errors (e.g. ``shm_get`` vs ``SHM_GET``).
  
  The code generated is using the Ada 2005 syntax, which makes it
  easier to interface with other languages than previous versions of Ada.
*************** easier to interface with other languages
*** 4479,4486 ****
  Running the Binding Generator
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  
! The binding generator is part of the *gcc* compiler and can be
! invoked via the *-fdump-ada-spec* switch, which will generate Ada
  spec files for the header files specified on the command line, and all
  header files needed by these files transitively. For example:
  
--- 4539,4546 ----
  Running the Binding Generator
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  
! The binding generator is part of the ``gcc`` compiler and can be
! invoked via the :switch:`-fdump-ada-spec` switch, which will generate Ada
  spec files for the header files specified on the command line, and all
  header files needed by these files transitively. For example:
  
*************** header files needed by these files trans
*** 4492,4508 ****
  will generate, under GNU/Linux, the following files: :file:`time_h.ads`,
  :file:`bits_time_h.ads`, :file:`stddef_h.ads`, :file:`bits_types_h.ads` which
  correspond to the files :file:`/usr/include/time.h`,
! :file:`/usr/include/bits/time.h`, etc..., and will then compile in Ada 2005
! mode these Ada specs.
  
! The `-C` switch tells *gcc* to extract comments from headers,
  and will attempt to generate corresponding Ada comments.
  
  If you want to generate a single Ada file and not the transitive closure, you
! can use instead the *-fdump-ada-spec-slim* switch.
  
  You can optionally specify a parent unit, of which all generated units will
! be children, using `-fada-spec-parent=<unit>`.
  
  Note that we recommend when possible to use the *g++* driver to
  generate bindings, even for most C headers, since this will in general
--- 4552,4568 ----
  will generate, under GNU/Linux, the following files: :file:`time_h.ads`,
  :file:`bits_time_h.ads`, :file:`stddef_h.ads`, :file:`bits_types_h.ads` which
  correspond to the files :file:`/usr/include/time.h`,
! :file:`/usr/include/bits/time.h`, etc..., and will then compile these Ada specs
! in Ada 2005 mode.
  
! The :switch:`-C` switch tells ``gcc`` to extract comments from headers,
  and will attempt to generate corresponding Ada comments.
  
  If you want to generate a single Ada file and not the transitive closure, you
! can use instead the :switch:`-fdump-ada-spec-slim` switch.
  
  You can optionally specify a parent unit, of which all generated units will
! be children, using :switch:`-fada-spec-parent={unit}`.
  
  Note that we recommend when possible to use the *g++* driver to
  generate bindings, even for most C headers, since this will in general
*************** generate better Ada specs. For generatin
*** 4510,4516 ****
  mandatory to use the *g++* command, or *gcc -x c++* which
  is equivalent in this case. If *g++* cannot work on your C headers
  because of incompatibilities between C and C++, then you can fallback to
! *gcc* instead.
  
  For an example of better bindings generated from the C++ front-end,
  the name of the parameters (when available) are actually ignored by the C
--- 4570,4576 ----
  mandatory to use the *g++* command, or *gcc -x c++* which
  is equivalent in this case. If *g++* cannot work on your C headers
  because of incompatibilities between C and C++, then you can fallback to
! ``gcc`` instead.
  
  For an example of better bindings generated from the C++ front-end,
  the name of the parameters (when available) are actually ignored by the C
*************** front-end. Consider the following C head
*** 4520,4526 ****
  
       extern void foo (int variable);
  
! with the C front-end, `variable` is ignored, and the above is handled as:
  
  .. code-block:: c
  
--- 4580,4586 ----
  
       extern void foo (int variable);
  
! with the C front-end, ``variable`` is ignored, and the above is handled as:
  
  .. code-block:: c
  
*************** with the C++ front-end, the name is avai
*** 4539,4545 ****
       procedure foo (variable : int);
  
  In some cases, the generated bindings will be more complete or more meaningful
! when defining some macros, which you can do via the *-D* switch. This
  is for example the case with :file:`Xlib.h` under GNU/Linux:
  
  .. code-block:: sh
--- 4599,4605 ----
       procedure foo (variable : int);
  
  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
  is for example the case with :file:`Xlib.h` under GNU/Linux:
  
  .. code-block:: sh
*************** is for example the case with :file:`Xlib
*** 4547,4558 ****
        $ g++ -c -fdump-ada-spec -DXLIB_ILLEGAL_ACCESS -C /usr/include/X11/Xlib.h
  
  The above will generate more complete bindings than a straight call without
! the *-DXLIB_ILLEGAL_ACCESS* switch.
  
  In other cases, it is not possible to parse a header file in a stand-alone
  manner, because other include files need to be included first. In this
  case, the solution is to create a small header file including the needed
! `#include` and possible `#define` directives. For example, to
  generate Ada bindings for :file:`readline/readline.h`, you need to first
  include :file:`stdio.h`, so you can create a file with the following two
  lines in e.g. :file:`readline1.h`:
--- 4607,4618 ----
        $ g++ -c -fdump-ada-spec -DXLIB_ILLEGAL_ACCESS -C /usr/include/X11/Xlib.h
  
  The above will generate more complete bindings than a straight call without
! the :switch:`-DXLIB_ILLEGAL_ACCESS` switch.
  
  In other cases, it is not possible to parse a header file in a stand-alone
  manner, because other include files need to be included first. In this
  case, the solution is to create a small header file including the needed
! ``#include`` and possible ``#define`` directives. For example, to
  generate Ada bindings for :file:`readline/readline.h`, you need to first
  include :file:`stdio.h`, so you can create a file with the following two
  lines in e.g. :file:`readline1.h`:
*************** support for C headers. As a result, you
*** 4581,4587 ****
  bindings by hand more extensively when using C++ headers.
  
  In this mode, C++ classes will be mapped to Ada tagged types, constructors
! will be mapped using the `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 :title:`GNAT Reference Manual`
  for additional information on interfacing to C++).
--- 4641,4647 ----
  bindings by hand more extensively when using C++ headers.
  
  In this mode, C++ classes will be mapped to Ada tagged types, constructors
! will be mapped using the ``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 :title:`GNAT Reference Manual`
  for additional information on interfacing to C++).
*************** Switches
*** 4678,4702 ****
  
  .. index:: -fdump-ada-spec (gcc)
  
! :samp:`-fdump-ada-spec`
    Generate Ada spec files for the given header files transitively (including
    all header files that these headers depend upon).
  
  .. index:: -fdump-ada-spec-slim (gcc)
  
! :samp:`-fdump-ada-spec-slim`
    Generate Ada spec files for the header files specified on the command line
    only.
  
  .. index:: -fada-spec-parent (gcc)
  
! :samp:`-fada-spec-parent={unit}`
!   Specifies that all files generated by *-fdump-ada-spec** are
    to be child units of the specified parent unit.
  
  .. index:: -C (gcc)
  
! :samp:`-C`
    Extract comments from headers and generate Ada comments in the Ada spec files.
  
  .. _Generating_C_Headers_for_Ada_Specifications:
--- 4738,4762 ----
  
  .. index:: -fdump-ada-spec (gcc)
  
! :switch:`-fdump-ada-spec`
    Generate Ada spec files for the given header files transitively (including
    all header files that these headers depend upon).
  
  .. index:: -fdump-ada-spec-slim (gcc)
  
! :switch:`-fdump-ada-spec-slim`
    Generate Ada spec files for the header files specified on the command line
    only.
  
  .. index:: -fada-spec-parent (gcc)
  
! :switch:`-fada-spec-parent={unit}`
!   Specifies that all files generated by :switch:`-fdump-ada-spec` are
    to be child units of the specified parent unit.
  
  .. index:: -C (gcc)
  
! :switch:`-C`
    Extract comments from headers and generate Ada comments in the Ada spec files.
  
  .. _Generating_C_Headers_for_Ada_Specifications:
*************** Running the C Header Generator
*** 4723,4729 ****
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  
  The C header generator is part of the GNAT compiler and can be invoked via
! the *-gnatceg* combination of switches, which will generate a :file:`.h`
  file corresponding to the given input file (Ada spec or body). Note that
  only spec files are processed in any case, so giving a spec or a body file
  as input is equivalent. For example:
--- 4783,4789 ----
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  
  The C header generator is part of the GNAT compiler and can be invoked via
! the :switch:`-gnatceg` combination of switches, which will generate a :file:`.h`
  file corresponding to the given input file (Ada spec or body). Note that
  only spec files are processed in any case, so giving a spec or a body file
  as input is equivalent. For example:
*************** For instance, given the following Ada fi
*** 4760,4766 ****
        procedure Proc2 (R : in out Rec);
     end Pack1;
  
! The above `gcc` command will generate the following :file:`pack1.h` file:
  
  .. code-block:: c
  
--- 4820,4826 ----
        procedure Proc2 (R : in out Rec);
     end Pack1;
  
! The above ``gcc`` command will generate the following :file:`pack1.h` file:
  
  .. code-block:: c
  
*************** The above `gcc` command will generate th
*** 4782,4788 ****
     extern void pack1__proc2(pack1__rec *r);
     #endif /* PACK1_ADS */
  
! You can then `include` :file:`pack1.h` from a C source file and use the types,
  call subprograms, reference objects, and constants.
  
  .. _GNAT_and_Other_Compilation_Models:
--- 4842,4848 ----
     extern void pack1__proc2(pack1__rec *r);
     #endif /* PACK1_ADS */
  
! You can then ``include`` :file:`pack1.h` from a C source file and use the types,
  call subprograms, reference objects, and constants.
  
  .. _GNAT_and_Other_Compilation_Models:
*************** Comparison between GNAT and C/C++ Compil
*** 4803,4809 ****
  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 `#include` of a C
  header.
  
  One notable difference is that, in Ada, you may compile specs separately
--- 4863,4869 ----
  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 ``#include`` of a C
  header.
  
  One notable difference is that, in Ada, you may compile specs separately
*************** The other important function of the bind
*** 4825,4831 ****
  issues. There are also elaboration issues in C++ that are handled
  automatically. This automatic handling has the advantage of being
  simpler to use, but the C++ programmer has no control over elaboration.
! Where `gnatbind` might complain there was no valid order of
  elaboration, a C++ compiler would simply construct a program that
  malfunctioned at run time.
  
--- 4885,4891 ----
  issues. There are also elaboration issues in C++ that are handled
  automatically. This automatic handling has the advantage of being
  simpler to use, but the C++ programmer has no control over elaboration.
! Where ``gnatbind`` might complain there was no valid order of
  elaboration, a C++ compiler would simply construct a program that
  malfunctioned at run time.
  
*************** we have the following package spec:
*** 4932,4940 ****
  
  .. index:: pragma Export
  
! The variable `MN` has a full expanded Ada name of `QRS.MN`, so
! the corresponding link name is `qrs__mn`.
! Of course if a `pragma Export` is used this may be overridden:
  
  .. code-block:: ada
  
--- 4992,5000 ----
  
  .. index:: pragma Export
  
! The variable ``MN`` has a full expanded Ada name of ``QRS.MN``, so
! the corresponding link name is ``qrs__mn``.
! Of course if a ``pragma Export`` is used this may be overridden:
  
  .. code-block:: ada
  
*************** Of course if a `pragma Export` is used t
*** 4945,4967 ****
          pragma Export (Var2, C, Link_Name => "var2_link_name");
       end Exports;
  
! In this case, the link name for `Var1` is whatever link name the
! C compiler would assign for the C function `var1_name`. This typically
! would be either `var1_name` or `_var1_name`, depending on operating
  system conventions, but other possibilities exist. The link name for
! `Var2` is `var2_link_name`, and this is not operating system
  dependent.
  
  One exception occurs for library level procedures. A potential ambiguity
! arises between the required name `_main` for the C main program,
  and the name we would otherwise assign to an Ada library level procedure
! called `Main` (which might well not be the main program).
  
! To avoid this ambiguity, we attach the prefix `_ada_` to such
  names. So if we have a library level procedure such as:
  
  .. code-block:: ada
  
       procedure Hello (S : String);
  
! the external name of this procedure will be `_ada_hello`.
--- 5005,5027 ----
          pragma Export (Var2, C, Link_Name => "var2_link_name");
       end Exports;
  
! In this case, the link name for ``Var1`` is whatever link name the
! C compiler would assign for the C function ``var1_name``. This typically
! would be either ``var1_name`` or ``_var1_name``, depending on operating
  system conventions, but other possibilities exist. The link name for
! ``Var2`` is ``var2_link_name``, and this is not operating system
  dependent.
  
  One exception occurs for library level procedures. A potential ambiguity
! arises between the required name ``_main`` for the C main program,
  and the name we would otherwise assign to an Ada library level procedure
! called ``Main`` (which might well not be the main program).
  
! To avoid this ambiguity, we attach the prefix ``_ada_`` to such
  names. So if we have a library level procedure such as:
  
  .. code-block:: ada
  
       procedure Hello (S : String);
  
! the external name of this procedure will be ``_ada_hello``.
diff -Nrcpad gcc-7.3.0/gcc/ada/doc/gnat_ugn.rst gcc-8.1.0/gcc/ada/doc/gnat_ugn.rst
*** gcc-7.3.0/gcc/ada/doc/gnat_ugn.rst	Mon Jul  4 12:57:30 2016
--- gcc-8.1.0/gcc/ada/doc/gnat_ugn.rst	Fri Sep  8 12:34:54 2017
***************
*** 1,38 ****
  GNAT User's Guide for Native Platforms
  ======================================
  
! *GNAT, The GNU Ada Development Environment*
  
! .. only:: PRO
  
!    *GNAT Pro Edition*
  
!    | Version |version|
!    | Date: |today|
  
! .. only:: GPL
  
!    *GNAT GPL Edition*
  
!    | Version |version|
!    | Date: |today|
  
! .. only:: FSF
  
!    .. raw:: texinfo
  
!       @include gcc-common.texi
!       GCC version @value{version-GCC}@*
  
! AdaCore
  
! 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; with no
! Invariant Sections, with the Front-Cover Texts being
! "GNAT User's Guide for Native Platforms",
! and with no Back-Cover Texts.  A copy of the license is
! included in the section entitled :ref:`gnu_fdl`.
  
  .. toctree::
     :maxdepth: 3
--- 1,40 ----
  GNAT User's Guide for Native Platforms
  ======================================
  
! .. only:: not latex
  
!     *GNAT, The GNU Ada Development Environment*
  
!     .. only:: PRO
  
!        *GNAT Pro Edition*
  
!        | Version |version|
!        | Date: |today|
  
!     .. only:: GPL
  
!        *GNAT GPL Edition*
  
!        | Version |version|
!        | Date: |today|
  
!     .. only:: FSF
  
!        .. raw:: texinfo
  
!           @include gcc-common.texi
!           GCC version @value{version-GCC}@*
  
!     AdaCore
! 
!     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; with no
!     Invariant Sections, with the Front-Cover Texts being
!     "GNAT User's Guide for Native Platforms",
!     and with no Back-Cover Texts.  A copy of the license is
!     included in the section entitled :ref:`gnu_fdl`.
  
  .. toctree::
     :maxdepth: 3
diff -Nrcpad gcc-7.3.0/gcc/ada/doc/share/ada_pygments.py gcc-8.1.0/gcc/ada/doc/share/ada_pygments.py
*** gcc-7.3.0/gcc/ada/doc/share/ada_pygments.py	Fri Oct 23 13:10:35 2015
--- gcc-8.1.0/gcc/ada/doc/share/ada_pygments.py	Fri Sep  8 12:35:58 2017
***************
*** 1,4 ****
! """Alternate Ada and Project Files parsers for Sphinx/Rest"""
  
  import re
  from pygments.lexer import RegexLexer, bygroups
--- 1,4 ----
! """Alternate Ada and Project Files parsers for Sphinx/Rest."""
  
  import re
  from pygments.lexer import RegexLexer, bygroups
*************** from pygments.token import Text, Comment
*** 7,18 ****
  
  
  def get_lexer_tokens(tag_highlighting=False, project_support=False):
!     """Return the tokens needed for RegexLexer
  
      :param tag_highlighting: if True we support tag highlighting. See
          AdaLexerWithTags documentation
      :type tag_highlighting: bool
!     :param project_support: if True support additional keywors associated
          with project files.
      :type project_support:  bool
  
--- 7,18 ----
  
  
  def get_lexer_tokens(tag_highlighting=False, project_support=False):
!     """Return the tokens needed for RegexLexer.
  
      :param tag_highlighting: if True we support tag highlighting. See
          AdaLexerWithTags documentation
      :type tag_highlighting: bool
!     :param project_support: if True support additional keywords associated
          with project files.
      :type project_support:  bool
  
*************** def get_lexer_tokens(tag_highlighting=Fa
*** 21,27 ****
      """
      if project_support:
          project_pattern = r'project\s+|'
!         project_pattern2 = r'project|'
      else:
          project_pattern = r''
          project_pattern2 = r''
--- 21,28 ----
      """
      if project_support:
          project_pattern = r'project\s+|'
!         project_pattern2 = \
!             r'aggregate|extends|external|external_as_list|library|project|'
      else:
          project_pattern = r''
          project_pattern2 = r''
*************** def get_lexer_tokens(tag_highlighting=Fa
*** 46,52 ****
              # Match use and with statements
              # The first part of the pattern is be sure we don't match
              # for/use constructs.
!             (r'(\n\s*|;\s*)(with|use)(\s+[\w\.]+)',
               bygroups(Punctuation, Keyword.Reserved, Name.Namespace)),
              # Match procedure, package and function declarations
              (r'end\s+(if|loop|record)', Keyword),
--- 47,53 ----
              # Match use and with statements
              # The first part of the pattern is be sure we don't match
              # for/use constructs.
!             (r'(\n\s*|;\s*)(with|use)(\s+[\w\.]+\s*;)',
               bygroups(Punctuation, Keyword.Reserved, Name.Namespace)),
              # Match procedure, package and function declarations
              (r'end\s+(if|loop|record)', Keyword),
*************** def get_lexer_tokens(tag_highlighting=Fa
*** 62,68 ****
               r'Version|Value_Size|Value|Valid_Scalars|VADS_Size|Valid|Val|'
               r'Update|Unrestricted_Access|Universal_Literal_String|'
               r'Unconstrained_Array|Unchecked_Access|Unbiased_Rounding|'
!              r'Truncation|Type_Class|To_Address|Tick|Terminated|'
               r'Target_Name|Tag|System_Allocator_Alignment|Succ|Stub_Type|'
               r'Stream_Size|Storage_Unit|Storage_Size|Storage_Pool|Small|Size|'
               r'Simple_Storage_Pool|Signed_Zeros|Scaling|Scale|'
--- 63,69 ----
               r'Version|Value_Size|Value|Valid_Scalars|VADS_Size|Valid|Val|'
               r'Update|Unrestricted_Access|Universal_Literal_String|'
               r'Unconstrained_Array|Unchecked_Access|Unbiased_Rounding|'
!              r'UET_Address|Truncation|Type_Class|To_Address|Tick|Terminated|'
               r'Target_Name|Tag|System_Allocator_Alignment|Succ|Stub_Type|'
               r'Stream_Size|Storage_Unit|Storage_Size|Storage_Pool|Small|Size|'
               r'Simple_Storage_Pool|Signed_Zeros|Scaling|Scale|'
*************** def get_lexer_tokens(tag_highlighting=Fa
*** 112,118 ****
              # Builtin values
              (r'False|True', Keyword.Constant),
              # Identifiers
!             (r'[\w\.]+', Name)], }
  
      # Insert tag highlighting before identifiers
      if tag_highlighting:
--- 113,120 ----
              # Builtin values
              (r'False|True', Keyword.Constant),
              # Identifiers
!             (r'[\w\.]+', Name),
!             (r'.', Text)]}
  
      # Insert tag highlighting before identifiers
      if tag_highlighting:
*************** def get_lexer_tokens(tag_highlighting=Fa
*** 122,128 ****
  
  
  class AdaLexer(RegexLexer):
!     """Alternate Pygments lexer for Ada source code and project files
  
      The default pygments lexer always fails causing disabling of syntax
      highlighting in Sphinx. This lexer is simpler but safer.
--- 124,130 ----
  
  
  class AdaLexer(RegexLexer):
!     """Alternate Pygments lexer for Ada source code and project files.
  
      The default pygments lexer always fails causing disabling of syntax
      highlighting in Sphinx. This lexer is simpler but safer.
*************** class AdaLexer(RegexLexer):
*** 149,155 ****
  
  
  class TaggedAdaLexer(AdaLexer):
!     """Alternate Pygments lexer for Ada source code with tags
  
      A tag is a string of the form::
  
--- 151,157 ----
  
  
  class TaggedAdaLexer(AdaLexer):
!     """Alternate Pygments lexer for Ada source code with tags.
  
      A tag is a string of the form::
  
*************** class TaggedAdaLexer(AdaLexer):
*** 165,171 ****
  
  
  class GNATProjectLexer(RegexLexer):
!     """Pygment lexer for project files
  
      This is the same as the AdaLexer but with support of ``project``
      keyword.
--- 167,173 ----
  
  
  class GNATProjectLexer(RegexLexer):
!     """Pygment lexer for project files.
  
      This is the same as the AdaLexer but with support of ``project``
      keyword.
diff -Nrcpad gcc-7.3.0/gcc/ada/doc/share/conf.py gcc-8.1.0/gcc/ada/doc/share/conf.py
*** gcc-7.3.0/gcc/ada/doc/share/conf.py	Fri Feb 20 09:11:44 2015
--- gcc-8.1.0/gcc/ada/doc/share/conf.py	Mon Oct  9 20:47:26 2017
***************
*** 1,4 ****
--- 1,5 ----
  # -*- coding: utf-8 -*-
+ # Style_Check:Python_Fragment (meaning no pyflakes check)
  #
  # GNAT build configuration file
  
*************** if os.path.isfile('favicon.ico'):
*** 112,125 ****
  
  html_static_path = ['_static']
  
  latex_elements = {
!     'preamble': 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}
  
  latex_documents = [
      (master_doc, '%s.tex' % doc_name, project, u'AdaCore', 'manual')]
--- 113,137 ----
  
  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': u'GNU Ada',
+     'tool': u'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, u'AdaCore', 'manual')]
diff -Nrcpad gcc-7.3.0/gcc/ada/doc/share/copyright.tex gcc-8.1.0/gcc/ada/doc/share/copyright.tex
*** gcc-7.3.0/gcc/ada/doc/share/copyright.tex	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/doc/share/copyright.tex	Wed Sep 13 07:04:41 2017
***************
*** 0 ****
--- 1,18 ----
+ \emph{%(tool)s, The %(name)s Development Environment}
+ 
+ \emph{%(edition)s}
+ 
+ \begin{DUlineblock}{0em}
+ \item[] Version %(version)s
+ \item[] Date: %(date)s
+ \end{DUlineblock}
+ 
+ AdaCore
+ 
+ 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; with no
+ Invariant Sections, with the Front-Cover Texts being ``GNAT Reference
+ Manual'', and with no Back-Cover Texts.  A copy of the license is
+ included in the section entitled {\hyperref[share/gnu_free_documentation_license:gnu\string-fdl]{\sphinxcrossref{\DUrole{std,std-ref}{GNU Free Documentation License}}}}.
+ 
diff -Nrcpad gcc-7.3.0/gcc/ada/doc/share/latex_elements.py gcc-8.1.0/gcc/ada/doc/share/latex_elements.py
*** gcc-7.3.0/gcc/ada/doc/share/latex_elements.py	Fri Feb 20 09:11:44 2015
--- gcc-8.1.0/gcc/ada/doc/share/latex_elements.py	Fri Sep  8 12:35:58 2017
*************** TOC_CMD = r'''
*** 46,56 ****
  \makeatother
  '''
  
  TOC = r'''
  \cleardoublepage
  \tableofcontents
  \cleardoublepage\pagestyle{plain}
! '''
  
  LATEX_HYPHEN = r'''
  \hyphenpenalty=5000
--- 46,61 ----
  \makeatother
  '''
  
+ with open('copyright.tex', 'r') as fd:
+     copyright = fd.read()
+ 
  TOC = r'''
  \cleardoublepage
+ %s
+ \cleardoublepage
  \tableofcontents
  \cleardoublepage\pagestyle{plain}
! ''' % copyright
  
  LATEX_HYPHEN = r'''
  \hyphenpenalty=5000
diff -Nrcpad gcc-7.3.0/gcc/ada/einfo.adb gcc-8.1.0/gcc/ada/einfo.adb
*** gcc-7.3.0/gcc/ada/einfo.adb	Fri Jan 20 10:31:58 2017
--- gcc-8.1.0/gcc/ada/einfo.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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 Einfo is
*** 170,175 ****
--- 170,176 ----
     --    Extra_Accessibility_Of_Result   Node19
     --    Non_Limited_View                Node19
     --    Parent_Subtype                  Node19
+    --    Receiving_Entry                 Node19
     --    Size_Check_Code                 Node19
     --    Spec_Entity                     Node19
     --    Underlying_Full_View            Node19
*************** package body Einfo is
*** 185,190 ****
--- 186,192 ----
     --    Scalar_Range                    Node20
  
     --    Accept_Address                  Elist21
+    --    Corresponding_Record_Component  Node21
     --    Default_Expr_Function           Node21
     --    Discriminant_Constraint         Elist21
     --    Interface_Name                  Node21
*************** package body Einfo is
*** 248,253 ****
--- 250,256 ----
     --    BIP_Initialization_Call         Node29
     --    Subprograms_For_Type            Elist29
  
+    --    Access_Disp_Table_Elab_Flag     Node30
     --    Anonymous_Object                Node30
     --    Corresponding_Equality          Node30
     --    Last_Aggregate_Assignment       Node30
*************** package body Einfo is
*** 270,278 ****
     --    Entry_Max_Queue_Lengths_Array   Node35
     --    Import_Pragma                   Node35
  
!    --    Class_Wide_Preconds             List38
  
!    --    Class_Wide_Postconds            List39
  
     --    SPARK_Pragma                    Node40
  
--- 273,284 ----
     --    Entry_Max_Queue_Lengths_Array   Node35
     --    Import_Pragma                   Node35
  
!    --    Nested_Scenarios                Elist36
!    --    Validated_Object                Node36
  
!    --    Class_Wide_Clone                Node38
! 
!    --    Protected_Subprogram            Node39
  
     --    SPARK_Pragma                    Node40
  
*************** package body Einfo is
*** 333,339 ****
     --    Body_Needed_For_SAL             Flag40
  
     --    Treat_As_Volatile               Flag41
!    --    Is_Controlled                   Flag42
     --    Has_Controlled_Component        Flag43
     --    Is_Pure                         Flag44
     --    In_Private_Part                 Flag45
--- 339,345 ----
     --    Body_Needed_For_SAL             Flag40
  
     --    Treat_As_Volatile               Flag41
!    --    Is_Controlled_Active            Flag42
     --    Has_Controlled_Component        Flag43
     --    Is_Pure                         Flag44
     --    In_Private_Part                 Flag45
*************** package body Einfo is
*** 448,454 ****
     --    Strict_Alignment                Flag145
     --    Is_Abstract_Type                Flag146
     --    Needs_Debug_Info                Flag147
!    --    Suppress_Elaboration_Warnings   Flag148
     --    Is_Compilation_Unit             Flag149
     --    Has_Pragma_Elaborate_Body       Flag150
  
--- 454,460 ----
     --    Strict_Alignment                Flag145
     --    Is_Abstract_Type                Flag146
     --    Needs_Debug_Info                Flag147
!    --    Is_Elaboration_Checks_OK_Id     Flag148
     --    Is_Compilation_Unit             Flag149
     --    Has_Pragma_Elaborate_Body       Flag150
  
*************** package body Einfo is
*** 548,554 ****
     --    Warnings_Off_Used               Flag236
     --    Warnings_Off_Used_Unmodified    Flag237
     --    Warnings_Off_Used_Unreferenced  Flag238
!    --    OK_To_Reorder_Components        Flag239
     --    Has_Expanded_Contract           Flag240
  
     --    Optimize_Alignment_Space        Flag241
--- 554,560 ----
     --    Warnings_Off_Used               Flag236
     --    Warnings_Off_Used_Unmodified    Flag237
     --    Warnings_Off_Used_Unreferenced  Flag238
!    --    No_Reordering                   Flag239
     --    Has_Expanded_Contract           Flag240
  
     --    Optimize_Alignment_Space        Flag241
*************** package body Einfo is
*** 604,611 ****
     --    Rewritten_For_C                 Flag287
     --    Predicates_Ignored              Flag288
     --    Has_Timing_Event                Flag289
! 
!    --    (unused)                        Flag290  --  ??? flag breaks einfo.h
  
     --    Has_Inherited_Invariants        Flag291
     --    Is_Partial_Invariant_Procedure  Flag292
--- 610,616 ----
     --    Rewritten_For_C                 Flag287
     --    Predicates_Ignored              Flag288
     --    Has_Timing_Event                Flag289
!    --    Is_Class_Wide_Clone             Flag290
  
     --    Has_Inherited_Invariants        Flag291
     --    Is_Partial_Invariant_Procedure  Flag292
*************** package body Einfo is
*** 615,627 ****
     --    Has_Partial_Visible_Refinement  Flag296
     --    Is_Entry_Wrapper                Flag297
     --    Is_Underlying_Full_View         Flag298
  
!    --    (unused)                        Flag299
!    --    (unused)                        Flag300
  
-    --    (unused)                        Flag301
-    --    (unused)                        Flag302
-    --    (unused)                        Flag303
     --    (unused)                        Flag304
     --    (unused)                        Flag305
     --    (unused)                        Flag306
--- 620,632 ----
     --    Has_Partial_Visible_Refinement  Flag296
     --    Is_Entry_Wrapper                Flag297
     --    Is_Underlying_Full_View         Flag298
+    --    Body_Needed_For_Inlining        Flag299
+    --    Has_Private_Extension           Flag300
  
!    --    Ignore_SPARK_Mode_Pragmas       Flag301
!    --    Is_Initial_Condition_Procedure  Flag302
!    --    Suppress_Elaboration_Warnings   Flag303
  
     --    (unused)                        Flag304
     --    (unused)                        Flag305
     --    (unused)                        Flag306
*************** package body Einfo is
*** 720,734 ****
  
     function Access_Disp_Table (Id : E) return L is
     begin
!       pragma Assert (Ekind_In (Id, E_Record_Type,
!                                    E_Record_Type_With_Private,
!                                    E_Record_Subtype));
        return Elist16 (Implementation_Base_Type (Id));
     end Access_Disp_Table;
  
     function Activation_Record_Component (Id : E) return E is
     begin
        pragma Assert (Ekind_In (Id, E_Constant,
                                     E_In_Parameter,
                                     E_In_Out_Parameter,
                                     E_Loop_Parameter,
--- 725,748 ----
  
     function Access_Disp_Table (Id : E) return L is
     begin
!       pragma Assert (Ekind_In (Id, E_Record_Subtype,
!                                    E_Record_Type,
!                                    E_Record_Type_With_Private));
        return Elist16 (Implementation_Base_Type (Id));
     end Access_Disp_Table;
  
+    function Access_Disp_Table_Elab_Flag (Id : E) return E is
+    begin
+       pragma Assert (Ekind_In (Id, E_Record_Subtype,
+                                    E_Record_Type,
+                                    E_Record_Type_With_Private));
+       return Node30 (Implementation_Base_Type (Id));
+    end Access_Disp_Table_Elab_Flag;
+ 
     function Activation_Record_Component (Id : E) return E is
     begin
        pragma Assert (Ekind_In (Id, E_Constant,
+                                    E_Discriminant,
                                     E_In_Parameter,
                                     E_In_Out_Parameter,
                                     E_Loop_Parameter,
*************** package body Einfo is
*** 829,834 ****
--- 843,854 ----
        return Node19 (Id);
     end Body_Entity;
  
+    function Body_Needed_For_Inlining (Id : E) return B is
+    begin
+       pragma Assert (Ekind (Id) = E_Package);
+       return Flag299 (Id);
+    end Body_Needed_For_Inlining;
+ 
     function Body_Needed_For_SAL (Id : E) return B is
     begin
        pragma Assert
*************** package body Einfo is
*** 866,882 ****
        return Flag31 (Id);
     end Checks_May_Be_Suppressed;
  
!    function Class_Wide_Postconds (Id : E) return S is
!    begin
!       pragma Assert (Is_Subprogram (Id));
!       return List39 (Id);
!    end Class_Wide_Postconds;
! 
!    function Class_Wide_Preconds (Id : E) return S is
     begin
        pragma Assert (Is_Subprogram (Id));
!       return List38 (Id);
!    end Class_Wide_Preconds;
  
     function Class_Wide_Type (Id : E) return E is
     begin
--- 886,896 ----
        return Flag31 (Id);
     end Checks_May_Be_Suppressed;
  
!    function Class_Wide_Clone (Id : E) return E is
     begin
        pragma Assert (Is_Subprogram (Id));
!       return Node38 (Id);
!    end Class_Wide_Clone;
  
     function Class_Wide_Type (Id : E) return E is
     begin
*************** package body Einfo is
*** 953,958 ****
--- 967,978 ----
        return Node18 (Id);
     end Corresponding_Protected_Entry;
  
+    function Corresponding_Record_Component (Id : E) return E is
+    begin
+       pragma Assert (Ekind_In (Id, E_Component, E_Discriminant));
+       return Node21 (Id);
+    end Corresponding_Record_Component;
+ 
     function Corresponding_Record_Type (Id : E) return E is
     begin
        pragma Assert (Is_Concurrent_Type (Id));
*************** package body Einfo is
*** 1246,1259 ****
     function Contract (Id : E) return N is
     begin
        pragma Assert
!         (Ekind_In (Id, E_Protected_Type,   --  concurrent variants
                         E_Task_Body,
                         E_Task_Type)
             or else
!          Ekind_In (Id, E_Constant,         --  object variants
                         E_Variable)
             or else
!          Ekind_In (Id, E_Entry,            --  overloadable variants
                         E_Entry_Family,
                         E_Function,
                         E_Generic_Function,
--- 1266,1279 ----
     function Contract (Id : E) return N is
     begin
        pragma Assert
!         (Ekind_In (Id, E_Protected_Type,      --  concurrent types
                         E_Task_Body,
                         E_Task_Type)
             or else
!          Ekind_In (Id, E_Constant,            --  objects
                         E_Variable)
             or else
!          Ekind_In (Id, E_Entry,               --  overloadable
                         E_Entry_Family,
                         E_Function,
                         E_Generic_Function,
*************** package body Einfo is
*** 1262,1272 ****
                         E_Procedure,
                         E_Subprogram_Body)
             or else
!          Ekind_In (Id, E_Generic_Package,  --  package variants
                         E_Package,
                         E_Package_Body)
             or else
!          Ekind (Id) = E_Void);             --  special purpose
        return Node34 (Id);
     end Contract;
  
--- 1282,1292 ----
                         E_Procedure,
                         E_Subprogram_Body)
             or else
!          Ekind_In (Id, E_Generic_Package,     --  packages
                         E_Package,
                         E_Package_Body)
             or else
!          Ekind (Id) = E_Void);                --  special purpose
        return Node34 (Id);
     end Contract;
  
*************** package body Einfo is
*** 1486,1492 ****
  
     function Has_Complex_Representation (Id : E) return B is
     begin
!       pragma Assert (Is_Type (Id));
        return Flag140 (Implementation_Base_Type (Id));
     end Has_Complex_Representation;
  
--- 1506,1512 ----
  
     function Has_Complex_Representation (Id : E) return B is
     begin
!       pragma Assert (Is_Record_Type (Id));
        return Flag140 (Implementation_Base_Type (Id));
     end Has_Complex_Representation;
  
*************** package body Einfo is
*** 1811,1816 ****
--- 1831,1842 ----
        return Flag155 (Id);
     end Has_Private_Declaration;
  
+    function Has_Private_Extension (Id : E) return B is
+    begin
+       pragma Assert (Is_Tagged_Type (Id));
+       return Flag300 (Id);
+    end Has_Private_Extension;
+ 
     function Has_Protected (Id : E) return B is
     begin
        return Flag271 (Base_Type (Id));
*************** package body Einfo is
*** 1968,1973 ****
--- 1994,2022 ----
        return Node4 (Id);
     end Homonym;
  
+    function Ignore_SPARK_Mode_Pragmas (Id : E) return B is
+    begin
+       pragma Assert
+         (Ekind_In (Id, E_Protected_Body,      --  concurrent types
+                        E_Protected_Type,
+                        E_Task_Body,
+                        E_Task_Type)
+           or else
+          Ekind_In (Id, E_Entry,               --  overloadable
+                        E_Entry_Family,
+                        E_Function,
+                        E_Generic_Function,
+                        E_Generic_Procedure,
+                        E_Operator,
+                        E_Procedure,
+                        E_Subprogram_Body)
+            or else
+          Ekind_In (Id, E_Generic_Package,     --  packages
+                        E_Package,
+                        E_Package_Body));
+       return Flag301 (Id);
+    end Ignore_SPARK_Mode_Pragmas;
+ 
     function Import_Pragma (Id : E) return E is
     begin
        pragma Assert (Is_Subprogram (Id));
*************** package body Einfo is
*** 2105,2110 ****
--- 2154,2164 ----
        return Flag73 (Id);
     end Is_Child_Unit;
  
+    function Is_Class_Wide_Clone (Id : E) return B is
+    begin
+       return Flag290 (Id);
+    end Is_Class_Wide_Clone;
+ 
     function Is_Class_Wide_Equivalent_Type (Id : E) return B is
     begin
        return Flag35 (Id);
*************** package body Einfo is
*** 2142,2151 ****
        return Flag76 (Id);
     end Is_Constructor;
  
!    function Is_Controlled (Id : E) return B is
     begin
        return Flag42 (Base_Type (Id));
!    end Is_Controlled;
  
     function Is_Controlling_Formal (Id : E) return B is
     begin
--- 2196,2205 ----
        return Flag76 (Id);
     end Is_Constructor;
  
!    function Is_Controlled_Active (Id : E) return B is
     begin
        return Flag42 (Base_Type (Id));
!    end Is_Controlled_Active;
  
     function Is_Controlling_Formal (Id : E) return B is
     begin
*************** package body Einfo is
*** 2190,2195 ****
--- 2244,2260 ----
        return Flag6 (Id);
     end Is_Dispatching_Operation;
  
+    function Is_Elaboration_Checks_OK_Id (Id : E) return B is
+    begin
+       pragma Assert
+         (Ekind_In (Id, E_Constant, E_Variable)
+           or else Is_Entry (Id)
+           or else Is_Generic_Unit (Id)
+           or else Is_Subprogram (Id)
+           or else Is_Task_Type (Id));
+       return Flag148 (Id);
+    end Is_Elaboration_Checks_OK_Id;
+ 
     function Is_Eliminated (Id : E) return B is
     begin
        return Flag124 (Id);
*************** package body Einfo is
*** 2317,2322 ****
--- 2382,2393 ----
        return Flag268 (Id);
     end Is_Independent;
  
+    function Is_Initial_Condition_Procedure (Id : E) return B is
+    begin
+       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
+       return Flag302 (Id);
+    end Is_Initial_Condition_Procedure;
+ 
     function Is_Inlined (Id : E) return B is
     begin
        return Flag11 (Id);
*************** package body Einfo is
*** 2324,2330 ****
  
     function Is_Inlined_Always (Id : E) return B is
     begin
!       pragma Assert (Ekind (Id) = E_Function or else Ekind (Id) = E_Procedure);
        return Flag1 (Id);
     end Is_Inlined_Always;
  
--- 2395,2401 ----
  
     function Is_Inlined_Always (Id : E) return B is
     begin
!       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
        return Flag1 (Id);
     end Is_Inlined_Always;
  
*************** package body Einfo is
*** 2718,2724 ****
     function Linker_Section_Pragma (Id : E) return N is
     begin
        pragma Assert
!         (Is_Type (Id) or else Is_Object (Id) or else Is_Subprogram (Id));
        return Node33 (Id);
     end Linker_Section_Pragma;
  
--- 2789,2795 ----
     function Linker_Section_Pragma (Id : E) return N is
     begin
        pragma Assert
!         (Is_Object (Id) or else Is_Subprogram (Id) or else Is_Type (Id));
        return Node33 (Id);
     end Linker_Section_Pragma;
  
*************** package body Einfo is
*** 2798,2803 ****
--- 2869,2882 ----
        return Flag22 (Id);
     end Needs_No_Actuals;
  
+    function Nested_Scenarios (Id : E) return L is
+    begin
+       pragma Assert (Ekind_In (Id, E_Function,
+                                    E_Procedure,
+                                    E_Subprogram_Body));
+       return Elist36 (Id);
+    end Nested_Scenarios;
+ 
     function Never_Set_In_Source (Id : E) return B is
     begin
        return Flag115 (Id);
*************** package body Einfo is
*** 2826,2831 ****
--- 2905,2916 ----
        return Flag275 (Id);
     end No_Predicate_On_Actual;
  
+    function No_Reordering (Id : E) return B is
+    begin
+       pragma Assert (Is_Record_Type (Id));
+       return Flag239 (Implementation_Base_Type (Id));
+    end No_Reordering;
+ 
     function No_Return (Id : E) return B is
     begin
        return Flag113 (Id);
*************** package body Einfo is
*** 2890,2901 ****
        return Flag247 (Id);
     end OK_To_Rename;
  
-    function OK_To_Reorder_Components (Id : E) return B is
-    begin
-       pragma Assert (Is_Record_Type (Id));
-       return Flag239 (Base_Type (Id));
-    end OK_To_Reorder_Components;
- 
     function Optimize_Alignment_Space (Id : E) return B is
     begin
        pragma Assert
--- 2975,2980 ----
*************** package body Einfo is
*** 3037,3046 ****
        return Node22 (Id);
     end Protected_Formal;
  
     function Protection_Object (Id : E) return E is
     begin
!       pragma Assert
!         (Ekind_In (Id, E_Entry, E_Entry_Family, E_Function, E_Procedure));
        return Node23 (Id);
     end Protection_Object;
  
--- 3116,3133 ----
        return Node22 (Id);
     end Protected_Formal;
  
+    function Protected_Subprogram (Id : E) return N is
+    begin
+       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
+       return Node39 (Id);
+    end Protected_Subprogram;
+ 
     function Protection_Object (Id : E) return E is
     begin
!       pragma Assert (Ekind_In (Id, E_Entry,
!                                    E_Entry_Family,
!                                    E_Function,
!                                    E_Procedure));
        return Node23 (Id);
     end Protection_Object;
  
*************** package body Einfo is
*** 3049,3054 ****
--- 3136,3147 ----
        return Flag49 (Id);
     end Reachable;
  
+    function Receiving_Entry (Id : E) return E is
+    begin
+       pragma Assert (Ekind (Id) = E_Procedure);
+       return Node19 (Id);
+    end Receiving_Entry;
+ 
     function Referenced (Id : E) return B is
     begin
        return Flag156 (Id);
*************** package body Einfo is
*** 3230,3239 ****
     function SPARK_Aux_Pragma (Id : E) return N is
     begin
        pragma Assert
!         (Ekind_In (Id, E_Protected_Type,   --  concurrent variants
                         E_Task_Type)
             or else
!          Ekind_In (Id, E_Generic_Package,  --  package variants
                         E_Package,
                         E_Package_Body));
        return Node41 (Id);
--- 3323,3332 ----
     function SPARK_Aux_Pragma (Id : E) return N is
     begin
        pragma Assert
!         (Ekind_In (Id, E_Protected_Type,      --  concurrent types
                         E_Task_Type)
             or else
!          Ekind_In (Id, E_Generic_Package,     --  packages
                         E_Package,
                         E_Package_Body));
        return Node41 (Id);
*************** package body Einfo is
*** 3242,3251 ****
     function SPARK_Aux_Pragma_Inherited (Id : E) return B is
     begin
        pragma Assert
!         (Ekind_In (Id, E_Protected_Type,   --  concurrent variants
                         E_Task_Type)
             or else
!          Ekind_In (Id, E_Generic_Package,  --  package variants
                         E_Package,
                         E_Package_Body));
        return Flag266 (Id);
--- 3335,3344 ----
     function SPARK_Aux_Pragma_Inherited (Id : E) return B is
     begin
        pragma Assert
!         (Ekind_In (Id, E_Protected_Type,      --  concurrent types
                         E_Task_Type)
             or else
!          Ekind_In (Id, E_Generic_Package,     --  packages
                         E_Package,
                         E_Package_Body));
        return Flag266 (Id);
*************** package body Einfo is
*** 3254,3265 ****
     function SPARK_Pragma (Id : E) return N is
     begin
        pragma Assert
!         (Ekind_In (Id, E_Protected_Body,   --  concurrent variants
!                        E_Protected_Type,
!                        E_Task_Body,
!                        E_Task_Type)
            or else
!          Ekind_In (Id, E_Entry,            --  overloadable variants
                         E_Entry_Family,
                         E_Function,
                         E_Generic_Function,
--- 3347,3357 ----
     function SPARK_Pragma (Id : E) return N is
     begin
        pragma Assert
!         (Ekind_In (Id, E_Constant,            --  objects
!                        E_Variable)
            or else
!          Ekind_In (Id, E_Abstract_State,      --  overloadable
!                        E_Entry,
                         E_Entry_Family,
                         E_Function,
                         E_Generic_Function,
*************** package body Einfo is
*** 3268,3290 ****
                         E_Procedure,
                         E_Subprogram_Body)
             or else
!          Ekind_In (Id, E_Generic_Package,  --  package variants
                         E_Package,
                         E_Package_Body)
             or else
!          Ekind (Id) = E_Variable);         --  variable
        return Node40 (Id);
     end SPARK_Pragma;
  
     function SPARK_Pragma_Inherited (Id : E) return B is
     begin
        pragma Assert
!         (Ekind_In (Id, E_Protected_Body,   --  concurrent variants
!                        E_Protected_Type,
!                        E_Task_Body,
!                        E_Task_Type)
!            or else
!          Ekind_In (Id, E_Entry,            --  overloadable variants
                         E_Entry_Family,
                         E_Function,
                         E_Generic_Function,
--- 3360,3386 ----
                         E_Procedure,
                         E_Subprogram_Body)
             or else
!          Ekind_In (Id, E_Generic_Package,     --  packages
                         E_Package,
                         E_Package_Body)
             or else
!          Ekind (Id) = E_Void                  --  special purpose
!            or else
!          Ekind_In (Id, E_Protected_Body,      --  types
!                        E_Task_Body)
!            or else
!          Is_Type (Id));
        return Node40 (Id);
     end SPARK_Pragma;
  
     function SPARK_Pragma_Inherited (Id : E) return B is
     begin
        pragma Assert
!         (Ekind_In (Id, E_Constant,            --  objects
!                        E_Variable)
!           or else
!          Ekind_In (Id, E_Abstract_State,      --  overloadable
!                        E_Entry,
                         E_Entry_Family,
                         E_Function,
                         E_Generic_Function,
*************** package body Einfo is
*** 3293,3303 ****
                         E_Procedure,
                         E_Subprogram_Body)
             or else
!          Ekind_In (Id, E_Generic_Package,  --  package variants
                         E_Package,
                         E_Package_Body)
             or else
!          Ekind (Id) = E_Variable);         --  variable
        return Flag265 (Id);
     end SPARK_Pragma_Inherited;
  
--- 3389,3404 ----
                         E_Procedure,
                         E_Subprogram_Body)
             or else
!          Ekind_In (Id, E_Generic_Package,     --  packages
                         E_Package,
                         E_Package_Body)
             or else
!          Ekind (Id) = E_Void                  --  special purpose
!            or else
!          Ekind_In (Id, E_Protected_Body,      --  types
!                        E_Task_Body)
!            or else
!          Is_Type (Id));
        return Flag265 (Id);
     end SPARK_Pragma_Inherited;
  
*************** package body Einfo is
*** 3333,3339 ****
  
     function Status_Flag_Or_Transient_Decl (Id : E) return N is
     begin
!       pragma Assert (Ekind_In (Id, E_Constant, E_Variable));
        return Node15 (Id);
     end Status_Flag_Or_Transient_Decl;
  
--- 3434,3442 ----
  
     function Status_Flag_Or_Transient_Decl (Id : E) return N is
     begin
!       pragma Assert (Ekind_In (Id, E_Constant,
!                                    E_Loop_Parameter,
!                                    E_Variable));
        return Node15 (Id);
     end Status_Flag_Or_Transient_Decl;
  
*************** package body Einfo is
*** 3397,3403 ****
  
     function Suppress_Elaboration_Warnings (Id : E) return B is
     begin
!       return Flag148 (Id);
     end Suppress_Elaboration_Warnings;
  
     function Suppress_Initialization (Id : E) return B is
--- 3500,3506 ----
  
     function Suppress_Elaboration_Warnings (Id : E) return B is
     begin
!       return Flag303 (Id);
     end Suppress_Elaboration_Warnings;
  
     function Suppress_Initialization (Id : E) return B is
*************** package body Einfo is
*** 3472,3477 ****
--- 3575,3586 ----
        return Flag95 (Id);
     end Uses_Sec_Stack;
  
+    function Validated_Object (Id : E) return N is
+    begin
+       pragma Assert (Ekind (Id) = E_Variable);
+       return Node36 (Id);
+    end Validated_Object;
+ 
     function Warnings_Off (Id : E) return B is
     begin
        return Flag96 (Id);
*************** package body Einfo is
*** 3528,3533 ****
--- 3637,3647 ----
        return Ekind (Id) in Aggregate_Kind;
     end Is_Aggregate_Type;
  
+    function Is_Anonymous_Access_Type            (Id : E) return B is
+    begin
+       return Ekind (Id) in Anonymous_Access_Kind;
+    end Is_Anonymous_Access_Type;
+ 
     function Is_Array_Type                       (Id : E) return B is
     begin
        return Ekind (Id) in Array_Kind;
*************** package body Einfo is
*** 3713,3718 ****
--- 3827,3839 ----
        return Ekind (Id) in Subprogram_Kind;
     end Is_Subprogram;
  
+    function Is_Subprogram_Or_Entry              (Id : E) return B is
+    begin
+       return Ekind (Id) in Subprogram_Kind
+                or else
+              Ekind (Id) in Entry_Kind;
+    end Is_Subprogram_Or_Entry;
+ 
     function Is_Subprogram_Or_Generic_Subprogram (Id : E) return B is
     begin
        return Ekind (Id) in Subprogram_Kind
*************** package body Einfo is
*** 3759,3764 ****
--- 3880,3893 ----
        Set_Elist16 (Id, V);
     end Set_Access_Disp_Table;
  
+    procedure Set_Access_Disp_Table_Elab_Flag (Id : E; V : E) is
+    begin
+       pragma Assert (Ekind (Id) = E_Record_Type
+         and then Id = Implementation_Base_Type (Id));
+       pragma Assert (Is_Tagged_Type (Id));
+       Set_Node30 (Id, V);
+    end Set_Access_Disp_Table_Elab_Flag;
+ 
     procedure Set_Anonymous_Designated_Type (Id : E; V : E) is
     begin
        pragma Assert (Ekind (Id) = E_Variable);
*************** package body Einfo is
*** 3804,3809 ****
--- 3933,3939 ----
     procedure Set_Activation_Record_Component (Id : E; V : E) is
     begin
        pragma Assert (Ekind_In (Id, E_Constant,
+                                    E_Discriminant,
                                     E_In_Parameter,
                                     E_In_Out_Parameter,
                                     E_Loop_Parameter,
*************** package body Einfo is
*** 3861,3866 ****
--- 3991,4002 ----
        Set_Node19 (Id, V);
     end Set_Body_Entity;
  
+    procedure Set_Body_Needed_For_Inlining (Id : E; V : B := True) is
+    begin
+       pragma Assert (Ekind (Id) = E_Package);
+       Set_Flag299 (Id, V);
+    end Set_Body_Needed_For_Inlining;
+ 
     procedure Set_Body_Needed_For_SAL (Id : E; V : B := True) is
     begin
        pragma Assert
*************** package body Einfo is
*** 3905,3921 ****
        Set_Flag31 (Id, V);
     end Set_Checks_May_Be_Suppressed;
  
!    procedure Set_Class_Wide_Preconds (Id : E; V : S) is
!    begin
!       pragma Assert (Is_Subprogram (Id));
!       Set_List38 (Id, V);
!    end Set_Class_Wide_Preconds;
! 
!    procedure Set_Class_Wide_Postconds (Id : E; V : S) is
     begin
        pragma Assert (Is_Subprogram (Id));
!       Set_List39 (Id, V);
!    end Set_Class_Wide_Postconds;
  
     procedure Set_Class_Wide_Type (Id : E; V : E) is
     begin
--- 4041,4051 ----
        Set_Flag31 (Id, V);
     end Set_Checks_May_Be_Suppressed;
  
!    procedure Set_Class_Wide_Clone (Id : E; V : E) is
     begin
        pragma Assert (Is_Subprogram (Id));
!       Set_Node38 (Id, V);
!    end Set_Class_Wide_Clone;
  
     procedure Set_Class_Wide_Type (Id : E; V : E) is
     begin
*************** package body Einfo is
*** 3971,3984 ****
     procedure Set_Contract (Id : E; V : N) is
     begin
        pragma Assert
!         (Ekind_In (Id, E_Protected_Type,   --  concurrent variants
                         E_Task_Body,
                         E_Task_Type)
             or else
!          Ekind_In (Id, E_Constant,         --  object variants
                         E_Variable)
             or else
!          Ekind_In (Id, E_Entry,            --  overloadable variants
                         E_Entry_Family,
                         E_Function,
                         E_Generic_Function,
--- 4101,4114 ----
     procedure Set_Contract (Id : E; V : N) is
     begin
        pragma Assert
!         (Ekind_In (Id, E_Protected_Type,      --  concurrent types
                         E_Task_Body,
                         E_Task_Type)
             or else
!          Ekind_In (Id, E_Constant,            --  objects
                         E_Variable)
             or else
!          Ekind_In (Id, E_Entry,               --  overloadable
                         E_Entry_Family,
                         E_Function,
                         E_Generic_Function,
*************** package body Einfo is
*** 3987,3997 ****
                         E_Procedure,
                         E_Subprogram_Body)
             or else
!          Ekind_In (Id, E_Generic_Package,  --  package variants
                         E_Package,
                         E_Package_Body)
             or else
!          Ekind (Id) = E_Void);             --  special purpose
        Set_Node34 (Id, V);
     end Set_Contract;
  
--- 4117,4127 ----
                         E_Procedure,
                         E_Subprogram_Body)
             or else
!          Ekind_In (Id, E_Generic_Package,     --  packages
                         E_Package,
                         E_Package_Body)
             or else
!          Ekind (Id) = E_Void);                --  special purpose
        Set_Node34 (Id, V);
     end Set_Contract;
  
*************** package body Einfo is
*** 4041,4046 ****
--- 4171,4182 ----
        Set_Node18 (Id, V);
     end Set_Corresponding_Protected_Entry;
  
+    procedure Set_Corresponding_Record_Component (Id : E; V : E) is
+    begin
+       pragma Assert (Ekind_In (Id, E_Component, E_Discriminant));
+       Set_Node21 (Id, V);
+    end Set_Corresponding_Record_Component;
+ 
     procedure Set_Corresponding_Record_Type (Id : E; V : E) is
     begin
        pragma Assert (Is_Concurrent_Type (Id));
*************** package body Einfo is
*** 4529,4535 ****
  
     procedure Set_Has_Complex_Representation (Id : E; V : B := True) is
     begin
!       pragma Assert (Ekind (Id) = E_Record_Type);
        Set_Flag140 (Id, V);
     end Set_Has_Complex_Representation;
  
--- 4665,4671 ----
  
     procedure Set_Has_Complex_Representation (Id : E; V : B := True) is
     begin
!       pragma Assert (Is_Record_Type (Id) and then Is_Base_Type (Id));
        Set_Flag140 (Id, V);
     end Set_Has_Complex_Representation;
  
*************** package body Einfo is
*** 4867,4872 ****
--- 5003,5014 ----
        Set_Flag155 (Id, V);
     end Set_Has_Private_Declaration;
  
+    procedure Set_Has_Private_Extension (Id : E; V : B := True) is
+    begin
+       pragma Assert (Is_Tagged_Type (Id));
+       Set_Flag300 (Id, V);
+    end Set_Has_Private_Extension;
+ 
     procedure Set_Has_Protected (Id : E; V : B := True) is
     begin
        Set_Flag271 (Id, V);
*************** package body Einfo is
*** 5037,5042 ****
--- 5179,5207 ----
        Set_Elist24 (Id, V);
     end Set_Incomplete_Actuals;
  
+    procedure Set_Ignore_SPARK_Mode_Pragmas (Id : E; V : B := True) is
+    begin
+       pragma Assert
+         (Ekind_In (Id, E_Protected_Body,      --  concurrent types
+                        E_Protected_Type,
+                        E_Task_Body,
+                        E_Task_Type)
+           or else
+          Ekind_In (Id, E_Entry,               --  overloadable
+                        E_Entry_Family,
+                        E_Function,
+                        E_Generic_Function,
+                        E_Generic_Procedure,
+                        E_Operator,
+                        E_Procedure,
+                        E_Subprogram_Body)
+            or else
+          Ekind_In (Id, E_Generic_Package,     --  packages
+                        E_Package,
+                        E_Package_Body));
+       Set_Flag301 (Id, V);
+    end Set_Ignore_SPARK_Mode_Pragmas;
+ 
     procedure Set_Import_Pragma (Id : E; V : E) is
     begin
        pragma Assert (Is_Subprogram (Id));
*************** package body Einfo is
*** 5184,5189 ****
--- 5349,5359 ----
        Set_Flag73 (Id, V);
     end Set_Is_Child_Unit;
  
+    procedure Set_Is_Class_Wide_Clone (Id : E; V : B := True) is
+    begin
+       Set_Flag290 (Id, V);
+    end Set_Is_Class_Wide_Clone;
+ 
     procedure Set_Is_Class_Wide_Equivalent_Type (Id : E; V : B := True) is
     begin
        Set_Flag35 (Id, V);
*************** package body Einfo is
*** 5226,5236 ****
        Set_Flag76 (Id, V);
     end Set_Is_Constructor;
  
!    procedure Set_Is_Controlled (Id : E; V : B := True) is
     begin
        pragma Assert (Id = Base_Type (Id));
        Set_Flag42 (Id, V);
!    end Set_Is_Controlled;
  
     procedure Set_Is_Controlling_Formal (Id : E; V : B := True) is
     begin
--- 5396,5406 ----
        Set_Flag76 (Id, V);
     end Set_Is_Constructor;
  
!    procedure Set_Is_Controlled_Active (Id : E; V : B := True) is
     begin
        pragma Assert (Id = Base_Type (Id));
        Set_Flag42 (Id, V);
!    end Set_Is_Controlled_Active;
  
     procedure Set_Is_Controlling_Formal (Id : E; V : B := True) is
     begin
*************** package body Einfo is
*** 5282,5287 ****
--- 5452,5468 ----
        Set_Flag6 (Id, V);
     end Set_Is_Dispatching_Operation;
  
+    procedure Set_Is_Elaboration_Checks_OK_Id (Id : E; V : B := True) is
+    begin
+       pragma Assert
+         (Ekind_In (Id, E_Constant, E_Variable)
+           or else Is_Entry (Id)
+           or else Is_Generic_Unit (Id)
+           or else Is_Subprogram (Id)
+           or else Is_Task_Type (Id));
+       Set_Flag148 (Id, V);
+    end Set_Is_Elaboration_Checks_OK_Id;
+ 
     procedure Set_Is_Eliminated (Id : E; V : B := True) is
     begin
        Set_Flag124 (Id, V);
*************** package body Einfo is
*** 5411,5416 ****
--- 5592,5603 ----
        Set_Flag268 (Id, V);
     end Set_Is_Independent;
  
+    procedure Set_Is_Initial_Condition_Procedure (Id : E; V : B := True) is
+    begin
+       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
+       Set_Flag302 (Id, V);
+    end Set_Is_Initial_Condition_Procedure;
+ 
     procedure Set_Is_Inlined (Id : E; V : B := True) is
     begin
        Set_Flag11 (Id, V);
*************** package body Einfo is
*** 5418,5424 ****
  
     procedure Set_Is_Inlined_Always (Id : E; V : B := True) is
     begin
!       pragma Assert (Ekind (Id) = E_Function or else Ekind (Id) = E_Procedure);
        Set_Flag1 (Id, V);
     end Set_Is_Inlined_Always;
  
--- 5605,5611 ----
  
     procedure Set_Is_Inlined_Always (Id : E; V : B := True) is
     begin
!       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
        Set_Flag1 (Id, V);
     end Set_Is_Inlined_Always;
  
*************** package body Einfo is
*** 5740,5746 ****
     procedure Set_Is_Uplevel_Referenced_Entity (Id : E; V : B := True) is
     begin
        pragma Assert
!         (Ekind_In (Id, E_Constant, E_Variable)
            or else Is_Formal (Id)
            or else Is_Type (Id));
        Set_Flag283 (Id, V);
--- 5927,5933 ----
     procedure Set_Is_Uplevel_Referenced_Entity (Id : E; V : B := True) is
     begin
        pragma Assert
!         (Ekind_In (Id, E_Constant, E_Variable, E_Discriminant)
            or else Is_Formal (Id)
            or else Is_Type (Id));
        Set_Flag283 (Id, V);
*************** package body Einfo is
*** 5820,5828 ****
  
     procedure Set_Linker_Section_Pragma (Id : E; V : N) is
     begin
!       pragma Assert (Is_Type (Id)
!         or else Ekind_In (Id, E_Constant, E_Variable)
!         or else Is_Subprogram (Id));
        Set_Node33 (Id, V);
     end Set_Linker_Section_Pragma;
  
--- 6007,6014 ----
  
     procedure Set_Linker_Section_Pragma (Id : E; V : N) is
     begin
!       pragma Assert
!         (Is_Object (Id) or else Is_Subprogram (Id) or else Is_Type (Id));
        Set_Node33 (Id, V);
     end Set_Linker_Section_Pragma;
  
*************** package body Einfo is
*** 5903,5908 ****
--- 6089,6102 ----
        Set_Flag22 (Id, V);
     end Set_Needs_No_Actuals;
  
+    procedure Set_Nested_Scenarios (Id : E; V : L) is
+    begin
+       pragma Assert (Ekind_In (Id, E_Function,
+                                    E_Procedure,
+                                    E_Subprogram_Body));
+       Set_Elist36 (Id, V);
+    end Set_Nested_Scenarios;
+ 
     procedure Set_Never_Set_In_Source (Id : E; V : B := True) is
     begin
        Set_Flag115 (Id, V);
*************** package body Einfo is
*** 5931,5936 ****
--- 6125,6136 ----
        Set_Flag275 (Id, V);
     end Set_No_Predicate_On_Actual;
  
+    procedure Set_No_Reordering (Id : E; V : B := True) is
+    begin
+       pragma Assert (Is_Record_Type (Id) and then Is_Base_Type (Id));
+       Set_Flag239 (Id, V);
+    end Set_No_Reordering;
+ 
     procedure Set_No_Return (Id : E; V : B := True) is
     begin
        pragma Assert
*************** package body Einfo is
*** 5996,6008 ****
        Set_Flag247 (Id, V);
     end Set_OK_To_Rename;
  
-    procedure Set_OK_To_Reorder_Components (Id : E; V : B := True) is
-    begin
-       pragma Assert
-         (Is_Record_Type (Id) and then Is_Base_Type (Id));
-       Set_Flag239 (Id, V);
-    end Set_OK_To_Reorder_Components;
- 
     procedure Set_Optimize_Alignment_Space (Id : E; V : B := True) is
     begin
        pragma Assert
--- 6196,6201 ----
*************** package body Einfo is
*** 6151,6156 ****
--- 6344,6355 ----
        Set_Node22 (Id, V);
     end Set_Protected_Formal;
  
+    procedure Set_Protected_Subprogram (Id : E; V : E) is
+    begin
+       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
+       Set_Node39 (Id, V);
+    end Set_Protected_Subprogram;
+ 
     procedure Set_Protection_Object (Id : E; V : E) is
     begin
        pragma Assert (Ekind_In (Id, E_Entry,
*************** package body Einfo is
*** 6165,6170 ****
--- 6364,6375 ----
        Set_Flag49 (Id, V);
     end Set_Reachable;
  
+    procedure Set_Receiving_Entry (Id : E; V : E) is
+    begin
+       pragma Assert (Ekind (Id) = E_Procedure);
+       Set_Node19 (Id, V);
+    end Set_Receiving_Entry;
+ 
     procedure Set_Referenced (Id : E; V : B := True) is
     begin
        Set_Flag156 (Id, V);
*************** package body Einfo is
*** 6350,6359 ****
     procedure Set_SPARK_Aux_Pragma (Id : E; V : N) is
     begin
        pragma Assert
!         (Ekind_In (Id, E_Protected_Type,   --  concurrent variants
                         E_Task_Type)
             or else
!          Ekind_In (Id, E_Generic_Package,  --  package variants
                         E_Package,
                         E_Package_Body));
        Set_Node41 (Id, V);
--- 6555,6564 ----
     procedure Set_SPARK_Aux_Pragma (Id : E; V : N) is
     begin
        pragma Assert
!         (Ekind_In (Id, E_Protected_Type,      --  concurrent types
                         E_Task_Type)
             or else
!          Ekind_In (Id, E_Generic_Package,     --  packages
                         E_Package,
                         E_Package_Body));
        Set_Node41 (Id, V);
*************** package body Einfo is
*** 6362,6371 ****
     procedure Set_SPARK_Aux_Pragma_Inherited (Id : E; V : B := True) is
     begin
        pragma Assert
!         (Ekind_In (Id, E_Protected_Type,   --  concurrent variants
                         E_Task_Type)
             or else
!          Ekind_In (Id, E_Generic_Package,  --  package variants
                         E_Package,
                         E_Package_Body));
        Set_Flag266 (Id, V);
--- 6567,6576 ----
     procedure Set_SPARK_Aux_Pragma_Inherited (Id : E; V : B := True) is
     begin
        pragma Assert
!         (Ekind_In (Id, E_Protected_Type,      --  concurrent types
                         E_Task_Type)
             or else
!          Ekind_In (Id, E_Generic_Package,     --  packages
                         E_Package,
                         E_Package_Body));
        Set_Flag266 (Id, V);
*************** package body Einfo is
*** 6374,6385 ****
     procedure Set_SPARK_Pragma (Id : E; V : N) is
     begin
        pragma Assert
!         (Ekind_In (Id, E_Protected_Body,   --  concurrent variants
!                        E_Protected_Type,
!                        E_Task_Body,
!                        E_Task_Type)
!            or else
!          Ekind_In (Id, E_Entry,            --  overloadable variants
                         E_Entry_Family,
                         E_Function,
                         E_Generic_Function,
--- 6579,6589 ----
     procedure Set_SPARK_Pragma (Id : E; V : N) is
     begin
        pragma Assert
!         (Ekind_In (Id, E_Constant,            --  objects
!                        E_Variable)
!           or else
!          Ekind_In (Id, E_Abstract_State,      --  overloadable
!                        E_Entry,
                         E_Entry_Family,
                         E_Function,
                         E_Generic_Function,
*************** package body Einfo is
*** 6388,6410 ****
                         E_Procedure,
                         E_Subprogram_Body)
             or else
!          Ekind_In (Id, E_Generic_Package,  --  package variants
                         E_Package,
                         E_Package_Body)
             or else
!          Ekind (Id) = E_Variable);         --  variable
        Set_Node40 (Id, V);
     end Set_SPARK_Pragma;
  
     procedure Set_SPARK_Pragma_Inherited (Id : E; V : B := True) is
     begin
        pragma Assert
!         (Ekind_In (Id, E_Protected_Body,   --  concurrent variants
!                        E_Protected_Type,
!                        E_Task_Body,
!                        E_Task_Type)
!            or else
!          Ekind_In (Id, E_Entry,            --  overloadable variants
                         E_Entry_Family,
                         E_Function,
                         E_Generic_Function,
--- 6592,6618 ----
                         E_Procedure,
                         E_Subprogram_Body)
             or else
!          Ekind_In (Id, E_Generic_Package,     --  packages
                         E_Package,
                         E_Package_Body)
             or else
!          Ekind (Id) = E_Void                  --  special purpose
!            or else
!          Ekind_In (Id, E_Protected_Body,      --  types
!                        E_Task_Body)
!            or else
!          Is_Type (Id));
        Set_Node40 (Id, V);
     end Set_SPARK_Pragma;
  
     procedure Set_SPARK_Pragma_Inherited (Id : E; V : B := True) is
     begin
        pragma Assert
!         (Ekind_In (Id, E_Constant,            --  objects
!                        E_Variable)
!           or else
!          Ekind_In (Id, E_Abstract_State,      --  overloadable
!                        E_Entry,
                         E_Entry_Family,
                         E_Function,
                         E_Generic_Function,
*************** package body Einfo is
*** 6413,6423 ****
                         E_Procedure,
                         E_Subprogram_Body)
             or else
!          Ekind_In (Id, E_Generic_Package,  --  package variants
                         E_Package,
                         E_Package_Body)
             or else
!          Ekind (Id) = E_Variable);         --  variable
        Set_Flag265 (Id, V);
     end Set_SPARK_Pragma_Inherited;
  
--- 6621,6636 ----
                         E_Procedure,
                         E_Subprogram_Body)
             or else
!          Ekind_In (Id, E_Generic_Package,     --  packages
                         E_Package,
                         E_Package_Body)
             or else
!          Ekind (Id) = E_Void                  --  special purpose
!            or else
!          Ekind_In (Id, E_Protected_Body,      --  types
!                        E_Task_Body)
!            or else
!          Is_Type (Id));
        Set_Flag265 (Id, V);
     end Set_SPARK_Pragma_Inherited;
  
*************** package body Einfo is
*** 6458,6464 ****
  
     procedure Set_Status_Flag_Or_Transient_Decl (Id : E; V : E) is
     begin
!       pragma Assert (Ekind_In (Id, E_Constant, E_Variable));
        Set_Node15 (Id, V);
     end Set_Status_Flag_Or_Transient_Decl;
  
--- 6671,6679 ----
  
     procedure Set_Status_Flag_Or_Transient_Decl (Id : E; V : E) is
     begin
!       pragma Assert (Ekind_In (Id, E_Constant,
!                                    E_Loop_Parameter,
!                                    E_Variable));
        Set_Node15 (Id, V);
     end Set_Status_Flag_Or_Transient_Decl;
  
*************** package body Einfo is
*** 6526,6532 ****
  
     procedure Set_Suppress_Elaboration_Warnings (Id : E; V : B := True) is
     begin
!       Set_Flag148 (Id, V);
     end Set_Suppress_Elaboration_Warnings;
  
     procedure Set_Suppress_Initialization (Id : E; V : B := True) is
--- 6741,6747 ----
  
     procedure Set_Suppress_Elaboration_Warnings (Id : E; V : B := True) is
     begin
!       Set_Flag303 (Id, V);
     end Set_Suppress_Elaboration_Warnings;
  
     procedure Set_Suppress_Initialization (Id : E; V : B := True) is
*************** package body Einfo is
*** 6602,6607 ****
--- 6817,6828 ----
        Set_Flag95 (Id, V);
     end Set_Uses_Sec_Stack;
  
+    procedure Set_Validated_Object (Id : E; V : N) is
+    begin
+       pragma Assert (Ekind (Id) = E_Variable);
+       Set_Node36 (Id, V);
+    end Set_Validated_Object;
+ 
     procedure Set_Warnings_Off (Id : E; V : B := True) is
     begin
        Set_Flag96 (Id, V);
*************** package body Einfo is
*** 7035,7049 ****
        end if;
  
        loop
!          if Nkind (P) /= N_Selected_Component
!            and then Nkind (P) /= N_Expanded_Name
!            and then
!              not (Nkind (P) = N_Defining_Program_Unit_Name
!                    and then Is_Child_Unit (Id))
           then
-             return P;
-          else
              P := Parent (P);
           end if;
        end loop;
     end Declaration_Node;
--- 7256,7268 ----
        end if;
  
        loop
!          if Nkind_In (P, N_Selected_Component, N_Expanded_Name)
!            or else (Nkind (P) = N_Defining_Program_Unit_Name
!                      and then Is_Child_Unit (Id))
           then
              P := Parent (P);
+          else
+             return P;
           end if;
        end loop;
     end Declaration_Node;
*************** package body Einfo is
*** 7058,7070 ****
     begin
        Desig_Type := Directly_Designated_Type (Id);
  
!       if Ekind (Desig_Type) = E_Incomplete_Type
          and then Present (Full_View (Desig_Type))
        then
           return Full_View (Desig_Type);
  
        elsif Is_Class_Wide_Type (Desig_Type)
!         and then Ekind (Etype (Desig_Type)) = E_Incomplete_Type
          and then Present (Full_View (Etype (Desig_Type)))
          and then Present (Class_Wide_Type (Full_View (Etype (Desig_Type))))
        then
--- 7277,7289 ----
     begin
        Desig_Type := Directly_Designated_Type (Id);
  
!       if Is_Incomplete_Type (Desig_Type)
          and then Present (Full_View (Desig_Type))
        then
           return Full_View (Desig_Type);
  
        elsif Is_Class_Wide_Type (Desig_Type)
!         and then Is_Incomplete_Type (Etype (Desig_Type))
          and then Present (Full_View (Etype (Desig_Type)))
          and then Present (Class_Wide_Type (Full_View (Etype (Desig_Type))))
        then
*************** package body Einfo is
*** 7265,7281 ****
        return Empty;
     end Get_Attribute_Definition_Clause;
  
     -------------------
     -- Get_Full_View --
     -------------------
  
     function Get_Full_View (T : Entity_Id) return Entity_Id is
     begin
!       if Ekind (T) = E_Incomplete_Type and then Present (Full_View (T)) then
           return Full_View (T);
  
        elsif Is_Class_Wide_Type (T)
!         and then Ekind (Root_Type (T)) = E_Incomplete_Type
          and then Present (Full_View (Root_Type (T)))
        then
           return Class_Wide_Type (Full_View (Root_Type (T)));
--- 7484,7533 ----
        return Empty;
     end Get_Attribute_Definition_Clause;
  
+    ---------------------------
+    -- Get_Class_Wide_Pragma --
+    ---------------------------
+ 
+    function Get_Class_Wide_Pragma
+      (E  : Entity_Id;
+       Id : Pragma_Id) return Node_Id
+     is
+       Item  : Node_Id;
+       Items : Node_Id;
+ 
+    begin
+       Items := Contract (E);
+ 
+       if No (Items) then
+          return Empty;
+       end if;
+ 
+       Item := Pre_Post_Conditions (Items);
+       while Present (Item) loop
+          if Nkind (Item) = N_Pragma
+            and then Get_Pragma_Id (Pragma_Name_Unmapped (Item)) = Id
+            and then Class_Present (Item)
+          then
+             return Item;
+          end if;
+ 
+          Item := Next_Pragma (Item);
+       end loop;
+ 
+       return Empty;
+    end Get_Class_Wide_Pragma;
+ 
     -------------------
     -- Get_Full_View --
     -------------------
  
     function Get_Full_View (T : Entity_Id) return Entity_Id is
     begin
!       if Is_Incomplete_Type (T) and then Present (Full_View (T)) then
           return Full_View (T);
  
        elsif Is_Class_Wide_Type (T)
!         and then Is_Incomplete_Type (Root_Type (T))
          and then Present (Full_View (Root_Type (T)))
        then
           return Class_Wide_Type (Full_View (Root_Type (T)));
*************** package body Einfo is
*** 7555,7566 ****
     -----------------------------
  
     function Has_Null_Abstract_State (Id : E) return B is
-    begin
        pragma Assert (Ekind_In (Id, E_Generic_Package, E_Package));
  
        return
!         Present (Abstract_States (Id))
!           and then Is_Null_State (Node (First_Elmt (Abstract_States (Id))));
     end Has_Null_Abstract_State;
  
     ---------------------------------
--- 7807,7823 ----
     -----------------------------
  
     function Has_Null_Abstract_State (Id : E) return B is
        pragma Assert (Ekind_In (Id, E_Generic_Package, E_Package));
  
+       States : constant Elist_Id := Abstract_States (Id);
+ 
+    begin
+       --  Check first available state of related package. A null abstract
+       --  state always appears as the sole element of the state list.
+ 
        return
!         Present (States)
!           and then Is_Null_State (Node (First_Elmt (States)));
     end Has_Null_Abstract_State;
  
     ---------------------------------
*************** package body Einfo is
*** 7707,7713 ****
  
     Entity_Is_Base_Type : constant array (Entity_Kind) of Boolean :=
       (E_Enumeration_Subtype          |
!       E_Incomplete_Type              |
        E_Signed_Integer_Subtype       |
        E_Modular_Integer_Subtype      |
        E_Floating_Point_Subtype       |
--- 7964,7970 ----
  
     Entity_Is_Base_Type : constant array (Entity_Kind) of Boolean :=
       (E_Enumeration_Subtype          |
!       E_Incomplete_Subtype           |
        E_Signed_Integer_Subtype       |
        E_Modular_Integer_Subtype      |
        E_Floating_Point_Subtype       |
*************** package body Einfo is
*** 7750,7763 ****
          K = E_Constant or else K = E_In_Parameter or else K = E_Loop_Parameter;
     end Is_Constant_Object;
  
!    --------------------------
!    -- Is_Controlled_Active --
!    --------------------------
  
!    function Is_Controlled_Active (Id : E) return B is
     begin
!       return Is_Controlled (Id) and then not Disable_Controlled (Id);
!    end Is_Controlled_Active;
  
     --------------------
     -- Is_Discriminal --
--- 8007,8020 ----
          K = E_Constant or else K = E_In_Parameter or else K = E_Loop_Parameter;
     end Is_Constant_Object;
  
!    -------------------
!    -- Is_Controlled --
!    -------------------
  
!    function Is_Controlled (Id : E) return B is
     begin
!       return Is_Controlled_Active (Id) and then not Disable_Controlled (Id);
!    end Is_Controlled;
  
     --------------------
     -- Is_Discriminal --
*************** package body Einfo is
*** 9081,9086 ****
--- 9338,9346 ----
           when Enumeration_Kind =>
              Kind := E_Enumeration_Subtype;
  
+          when E_Incomplete_Type =>
+             Kind := E_Incomplete_Subtype;
+ 
           when Float_Kind =>
              Kind := E_Floating_Point_Subtype;
  
*************** package body Einfo is
*** 9138,9154 ****
  
     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
!       --  doesn't make sense.
  
        if Ekind (Id) = E_Record_Type_With_Private then
           return Full_View (Id);
  
        elsif Ekind (Id) in Incomplete_Or_Private_Kind then
  
!          --  If we have an incomplete or private type with a full view,
!          --  then we return the Underlying_Type of this full view.
  
           if Present (Full_View (Id)) then
              if Id = Full_View (Id) then
--- 9398,9423 ----
  
     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
!       --  sense.
  
        if Ekind (Id) = E_Record_Type_With_Private then
           return Full_View (Id);
  
+       --  If we have a class-wide type that comes from the limited view then we
+       --  return the Underlying_Type of its nonlimited view.
+ 
+       elsif Ekind (Id) = E_Class_Wide_Type
+         and then From_Limited_With (Id)
+         and then Present (Non_Limited_View (Id))
+       then
+          return Underlying_Type (Non_Limited_View (Id));
+ 
        elsif Ekind (Id) in Incomplete_Or_Private_Kind then
  
!          --  If we have an incomplete or private type with a full view, then we
!          --  return the Underlying_Type of this full view.
  
           if Present (Full_View (Id)) then
              if Id = Full_View (Id) then
*************** package body Einfo is
*** 9169,9177 ****
           then
              return Underlying_Type (Underlying_Full_View (Id));
  
!          --  If we have an incomplete entity that comes from the limited
!          --  view then we return the Underlying_Type of its non-limited
!          --  view.
  
           elsif From_Limited_With (Id)
             and then Present (Non_Limited_View (Id))
--- 9438,9445 ----
           then
              return Underlying_Type (Underlying_Full_View (Id));
  
!          --  If we have an incomplete entity that comes from the limited view
!          --  then we return the Underlying_Type of its nonlimited view.
  
           elsif From_Limited_With (Id)
             and then Present (Non_Limited_View (Id))
*************** package body Einfo is
*** 9184,9193 ****
           elsif Etype (Id) /= Id then
              return Underlying_Type (Etype (Id));
  
!          --  Otherwise we have an incomplete or private type that has
!          --  no full view, which means that we have not encountered the
!          --  completion, so return Empty to indicate the underlying type
!          --  is not yet known.
  
           else
              return Empty;
--- 9452,9460 ----
           elsif Etype (Id) /= Id then
              return Underlying_Type (Etype (Id));
  
!          --  Otherwise we have an incomplete or private type that has no full
!          --  view, which means that we have not encountered the completion, so
!          --  return Empty to indicate the underlying type is not yet known.
  
           else
              return Empty;
*************** package body Einfo is
*** 9251,9256 ****
--- 9518,9524 ----
        end if;
  
        W ("Address_Taken",                   Flag104 (Id));
+       W ("Body_Needed_For_Inlining",        Flag299 (Id));
        W ("Body_Needed_For_SAL",             Flag40  (Id));
        W ("C_Pass_By_Copy",                  Flag125 (Id));
        W ("Can_Never_Be_Null",               Flag38  (Id));
*************** package body Einfo is
*** 9332,9337 ****
--- 9600,9606 ----
        W ("Has_Primitive_Operations",        Flag120 (Id));
        W ("Has_Private_Ancestor",            Flag151 (Id));
        W ("Has_Private_Declaration",         Flag155 (Id));
+       W ("Has_Private_Extension",           Flag300 (Id));
        W ("Has_Protected",                   Flag271 (Id));
        W ("Has_Qualified_Name",              Flag161 (Id));
        W ("Has_RACW",                        Flag214 (Id));
*************** package body Einfo is
*** 9358,9363 ****
--- 9627,9633 ----
        W ("Has_Visible_Refinement",          Flag263 (Id));
        W ("Has_Volatile_Components",         Flag87  (Id));
        W ("Has_Xref_Entry",                  Flag182 (Id));
+       W ("Ignore_SPARK_Mode_Pragmas",       Flag301 (Id));
        W ("In_Package_Body",                 Flag48  (Id));
        W ("In_Private_Part",                 Flag45  (Id));
        W ("In_Use",                          Flag8   (Id));
*************** package body Einfo is
*** 9384,9390 ****
        W ("Is_Constr_Subt_For_U_Nominal",    Flag80  (Id));
        W ("Is_Constrained",                  Flag12  (Id));
        W ("Is_Constructor",                  Flag76  (Id));
!       W ("Is_Controlled",                   Flag42  (Id));
        W ("Is_Controlling_Formal",           Flag97  (Id));
        W ("Is_Descendant_Of_Address",        Flag223 (Id));
        W ("Is_DIC_Procedure",                Flag132 (Id));
--- 9654,9660 ----
        W ("Is_Constr_Subt_For_U_Nominal",    Flag80  (Id));
        W ("Is_Constrained",                  Flag12  (Id));
        W ("Is_Constructor",                  Flag76  (Id));
!       W ("Is_Controlled_Active",            Flag42  (Id));
        W ("Is_Controlling_Formal",           Flag97  (Id));
        W ("Is_Descendant_Of_Address",        Flag223 (Id));
        W ("Is_DIC_Procedure",                Flag132 (Id));
*************** package body Einfo is
*** 9392,9397 ****
--- 9662,9668 ----
        W ("Is_Discriminant_Check_Function",  Flag264 (Id));
        W ("Is_Dispatch_Table_Entity",        Flag234 (Id));
        W ("Is_Dispatching_Operation",        Flag6   (Id));
+       W ("Is_Elaboration_Checks_OK_Id",     Flag148 (Id));
        W ("Is_Eliminated",                   Flag124 (Id));
        W ("Is_Entry_Formal",                 Flag52  (Id));
        W ("Is_Exception_Handler",            Flag286 (Id));
*************** package body Einfo is
*** 9414,9419 ****
--- 9685,9691 ----
        W ("Is_Implementation_Defined",       Flag254 (Id));
        W ("Is_Imported",                     Flag24  (Id));
        W ("Is_Independent",                  Flag268 (Id));
+       W ("Is_Initial_Condition_Procedure",  Flag302 (Id));
        W ("Is_Inlined",                      Flag11  (Id));
        W ("Is_Inlined_Always",               Flag1   (Id));
        W ("Is_Instantiated",                 Flag126 (Id));
*************** package body Einfo is
*** 9494,9505 ****
        W ("No_Dynamic_Predicate_On_actual",  Flag276 (Id));
        W ("No_Pool_Assigned",                Flag131 (Id));
        W ("No_Predicate_On_actual",          Flag275 (Id));
        W ("No_Return",                       Flag113 (Id));
        W ("No_Strict_Aliasing",              Flag136 (Id));
        W ("Non_Binary_Modulus",              Flag58  (Id));
        W ("Nonzero_Is_True",                 Flag162 (Id));
        W ("OK_To_Rename",                    Flag247 (Id));
-       W ("OK_To_Reorder_Components",        Flag239 (Id));
        W ("Optimize_Alignment_Space",        Flag241 (Id));
        W ("Optimize_Alignment_Time",         Flag242 (Id));
        W ("Overlays_Constant",               Flag243 (Id));
--- 9766,9777 ----
        W ("No_Dynamic_Predicate_On_actual",  Flag276 (Id));
        W ("No_Pool_Assigned",                Flag131 (Id));
        W ("No_Predicate_On_actual",          Flag275 (Id));
+       W ("No_Reordering",                   Flag239 (Id));
        W ("No_Return",                       Flag113 (Id));
        W ("No_Strict_Aliasing",              Flag136 (Id));
        W ("Non_Binary_Modulus",              Flag58  (Id));
        W ("Nonzero_Is_True",                 Flag162 (Id));
        W ("OK_To_Rename",                    Flag247 (Id));
        W ("Optimize_Alignment_Space",        Flag241 (Id));
        W ("Optimize_Alignment_Time",         Flag242 (Id));
        W ("Overlays_Constant",               Flag243 (Id));
*************** package body Einfo is
*** 9526,9532 ****
        W ("Static_Elaboration_Desired",      Flag77  (Id));
        W ("Stores_Attribute_Old_Prefix",     Flag270 (Id));
        W ("Strict_Alignment",                Flag145 (Id));
!       W ("Suppress_Elaboration_Warnings",   Flag148 (Id));
        W ("Suppress_Initialization",         Flag105 (Id));
        W ("Suppress_Style_Checks",           Flag165 (Id));
        W ("Suppress_Value_Tracking_On_Call", Flag217 (Id));
--- 9798,9804 ----
        W ("Static_Elaboration_Desired",      Flag77  (Id));
        W ("Stores_Attribute_Old_Prefix",     Flag270 (Id));
        W ("Strict_Alignment",                Flag145 (Id));
!       W ("Suppress_Elaboration_Warnings",   Flag303 (Id));
        W ("Suppress_Initialization",         Flag105 (Id));
        W ("Suppress_Style_Checks",           Flag165 (Id));
        W ("Suppress_Value_Tracking_On_Call", Flag217 (Id));
*************** package body Einfo is
*** 9989,9994 ****
--- 10261,10267 ----
              Write_Str ("Related_Instance");
  
           when E_Constant
+             | E_Loop_Parameter
              | E_Variable
           =>
              Write_Str ("Status_Flag_Or_Transient_Decl");
*************** package body Einfo is
*** 10228,10233 ****
--- 10501,10509 ----
           when E_Record_Type =>
              Write_Str ("Parent_Subtype");
  
+          when E_Procedure =>
+             Write_Str ("Receiving_Entry");
+ 
           when E_Constant
              | E_Variable
           =>
*************** package body Einfo is
*** 10319,10324 ****
--- 10595,10605 ----
           when Entry_Kind =>
              Write_Str ("Accept_Address");
  
+          when E_Component
+             | E_Discriminant
+          =>
+             Write_Str ("Corresponding_Record_Component");
+ 
           when E_In_Parameter =>
              Write_Str ("Default_Expr_Function");
  
*************** package body Einfo is
*** 10708,10713 ****
--- 10989,10999 ----
     procedure Write_Field30_Name (Id : Entity_Id) is
     begin
        case Ekind (Id) is
+          when E_Record_Type
+             | E_Record_Type_With_Private
+          =>
+             Write_Str ("Access_Disp_Table_Elab_Flag");
+ 
           when E_Protected_Type
              | E_Task_Type
           =>
*************** package body Einfo is
*** 10864,10872 ****
     ------------------------
  
     procedure Write_Field36_Name (Id : Entity_Id) is
-       pragma Unreferenced (Id);
     begin
!       Write_Str ("Field36??");
     end Write_Field36_Name;
  
     ------------------------
--- 11150,11169 ----
     ------------------------
  
     procedure Write_Field36_Name (Id : Entity_Id) is
     begin
!       case Ekind (Id) is
!          when E_Function
!             | E_Procedure
!             | E_Subprogram_Body
!          =>
!             Write_Str ("Nested_Scenarios");
! 
!          when E_Variable =>
!             Write_Str ("Validated_Object");
! 
!          when others =>
!             Write_Str ("Field36??");
!       end case;
     end Write_Field36_Name;
  
     ------------------------
*************** package body Einfo is
*** 10889,10895 ****
           when E_Function
              | E_Procedure
           =>
!             Write_Str ("Class_Wide_Preconditions");
  
           when others =>
              Write_Str ("Field38??");
--- 11186,11192 ----
           when E_Function
              | E_Procedure
           =>
!             Write_Str ("class-wide clone");
  
           when others =>
              Write_Str ("Field38??");
*************** package body Einfo is
*** 10906,10912 ****
           when E_Function
              | E_Procedure
           =>
!             Write_Str ("Class_Wide_Postcondition");
  
           when others =>
              Write_Str ("Field39??");
--- 11203,11209 ----
           when E_Function
              | E_Procedure
           =>
!             Write_Str ("Protected_Subprogram");
  
           when others =>
              Write_Str ("Field39??");
*************** package body Einfo is
*** 10920,10926 ****
     procedure Write_Field40_Name (Id : Entity_Id) is
     begin
        case Ekind (Id) is
!          when E_Entry
              | E_Entry_Family
              | E_Function
              | E_Generic_Function
--- 11217,11225 ----
     procedure Write_Field40_Name (Id : Entity_Id) is
     begin
        case Ekind (Id) is
!          when E_Abstract_State
!             | E_Constant
!             | E_Entry
              | E_Entry_Family
              | E_Function
              | E_Generic_Function
*************** package body Einfo is
*** 10931,10941 ****
              | E_Package_Body
              | E_Procedure
              | E_Protected_Body
-             | E_Protected_Type
              | E_Subprogram_Body
              | E_Task_Body
-             | E_Task_Type
              | E_Variable
           =>
              Write_Str ("SPARK_Pragma");
  
--- 11230,11240 ----
              | E_Package_Body
              | E_Procedure
              | E_Protected_Body
              | E_Subprogram_Body
              | E_Task_Body
              | E_Variable
+             | E_Void
+             | Type_Kind
           =>
              Write_Str ("SPARK_Pragma");
  
diff -Nrcpad gcc-7.3.0/gcc/ada/einfo.ads gcc-8.1.0/gcc/ada/einfo.ads
*** gcc-7.3.0/gcc/ada/einfo.ads	Fri Jan 20 10:31:58 2017
--- gcc-8.1.0/gcc/ada/einfo.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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
*** 323,329 ****
  --  only].  These are representation attributes which must always apply to a
  --  full non-private type, and where the attributes are always on the full
  --  type. The attribute can be referenced on a subtype (and automatically
! --  retries the value from the implementation base type). However, it is an
  --  error to try to set the attribute on other than the implementation base
  --  type, and if assertions are enabled, an attempt to set the attribute on a
  --  subtype will raise an assert error.
--- 323,329 ----
  --  only].  These are representation attributes which must always apply to a
  --  full non-private type, and where the attributes are always on the full
  --  type. The attribute can be referenced on a subtype (and automatically
! --  retrieves the value from the implementation base type). However, it is an
  --  error to try to set the attribute on other than the implementation base
  --  type, and if assertions are enabled, an attempt to set the attribute on a
  --  subtype will raise an assert error.
*************** package Einfo is
*** 355,366 ****
  --       used to expand dispatching calls through the primary dispatch table.
  --       For an untagged record, contains No_Elist.
  
  --    Activation_Record_Component (Node31)
! --       Defined in E_Variable, E_Constant, E_Loop_Parameter, E_In_Parameter,
! --       E_Out_Parameter, E_In_Out_Parameter nodes. Used only if we are in
! --       Opt.Unnest_Subprogram_Mode, in which case for the case of an uplevel
! --       referenced entity, this field contains the entity for the component
! --       in the generated ARECnT activation record (Exp_Unst for details).
  
  --    Actual_Subtype (Node17)
  --       Defined in variables, constants, and formal parameters. This is the
--- 355,375 ----
  --       used to expand dispatching calls through the primary dispatch table.
  --       For an untagged record, contains No_Elist.
  
+ --    Access_Disp_Table_Elab_Flag (Node30) [implementation base type only]
+ --       Defined in E_Record_Type and E_Record_Subtype entities. Set in tagged
+ --       types whose dispatch table elaboration must be completed at run time
+ --       by the IP routine to point to its pending elaboration flag entity.
+ --       This flag is needed when the elaboration of the dispatch table relies
+ --       on attribute 'Position applied to an object of the type; it is used by
+ --       the IP routine to avoid performing this elaboration twice.
+ 
  --    Activation_Record_Component (Node31)
! --       Defined in E_Variable, E_Constant, E_Discriminant, E_Loop_Parameter,
! --       E_In_Parameter, E_Out_Parameter, E_In_Out_Parameter nodes. Used only
! --       if we are in Opt.Unnest_Subprogram_Mode, in which case for the case of
! --       an uplevel referenced entity, this field contains the entity for the
! --       component in the generated ARECnT activation record (Exp_Unst for
! --       details).
  
  --    Actual_Subtype (Node17)
  --       Defined in variables, constants, and formal parameters. This is the
*************** package Einfo is
*** 529,534 ****
--- 538,551 ----
  --       units. Indicates that the source for the body must be included
  --       when the unit is part of a standalone library.
  
+ --    Body_Needed_For_Inlining (Flag299)
+ --       Defined in package entities that are compilation units. Used to
+ --       determine whether the body unit needs to be compiled when the
+ --       package declaration appears in the list of units to inline. A body
+ --       is needed for inline processing if the unit declaration contains
+ --       functions that carry pragma Inline or Inline_Always, or if it
+ --       contains a generic unit that requires a body.
+ --
  --    Body_References (Elist16)
  --       Defined in abstract state entities. Contains an element list of
  --       references (identifiers) that appear in a package body whose spec
*************** package Einfo is
*** 617,632 ****
  --       tables must be consulted to determine if there actually is an active
  --       Suppress or Unsuppress pragma that applies to the entity.
  
! --    Class_Wide_Preconds (List38)
! --       Defined on subprograms. Holds the list of class-wide precondition
! --       functions inherited from ancestors. Each such function is an
! --       instantiation of the generic function generated from an explicit
! --       aspect specification for a class-wide precondition. A type is an
! --       ancestor of itself, and therefore a root type has such an instance
! --       on its own list.
! 
! --    Class_Wide_Postconds (List39)
! --       Ditto for class-wide postconditions.
  
  --    Class_Wide_Type (Node9)
  --       Defined in all type entities. For a tagged type or subtype, returns
--- 634,645 ----
  --       tables must be consulted to determine if there actually is an active
  --       Suppress or Unsuppress pragma that applies to the entity.
  
! --    Class_Wide_Clone (Node38)
! --       Defined on subprogram entities. Set if the subprogram has a class-wide
! --       ore- or postcondition, and the expression contains calls to other
! --       primitive funtions of the type. Used to implement properly the
! --       semantics of inherited operations whose class-wide condition may
! --       be different from that of the ancestor (See AI012-0195).
  
  --    Class_Wide_Type (Node9)
  --       Defined in all type entities. For a tagged type or subtype, returns
*************** package Einfo is
*** 637,643 ****
  --       Defined in E_Record_Subtype and E_Class_Wide_Subtype entities.
  --       Each such entity can either have a Discriminant_Constraint, in
  --       which case it represents a distinct type from the base type (and
! --       will have a list of components and discrimants in the list headed by
  --       First_Entity) or else no such constraint, in which case it will be a
  --       copy of the base type.
  --
--- 650,656 ----
  --       Defined in E_Record_Subtype and E_Class_Wide_Subtype entities.
  --       Each such entity can either have a Discriminant_Constraint, in
  --       which case it represents a distinct type from the base type (and
! --       will have a list of components and discriminants in the list headed by
  --       First_Entity) or else no such constraint, in which case it will be a
  --       copy of the base type.
  --
*************** package Einfo is
*** 758,763 ****
--- 771,784 ----
  --       Defined in subprogram bodies. Set for subprogram bodies that implement
  --       a protected type entry to point to the entity for the entry.
  
+ --    Corresponding_Record_Component (Node21)
+ --       Defined in components of a derived untagged record type, including
+ --       discriminants. For a regular component or a girder discriminant,
+ --       points to the corresponding component in the parent type. Set to
+ --       Empty for a non-girder discriminant. It is used by the back end to
+ --       ensure the layout of the derived type matches that of the parent
+ --       type when there is no representation clause on the derived type.
+ 
  --    Corresponding_Record_Type (Node18)
  --       Defined in protected and task types and subtypes. References the
  --       entity for the corresponding record type constructed by the expander
*************** package Einfo is
*** 960,967 ****
  --       incomplete type.
  
  --    Disable_Controlled (Flag253)
! --      Present in all entities. Set for a controlled type (Is_Controlled flag
! --      set) if the aspect Disable_Controlled is active for the type.
  
  --    Discard_Names (Flag88)
  --       Defined in types and exception entities. Set if pragma Discard_Names
--- 981,989 ----
  --       incomplete type.
  
  --    Disable_Controlled (Flag253)
! --      Present in all entities. Set for a controlled type subject to aspect
! --      Disable_Controlled which evaluates to True. This flag is taken into
! --      account in synthesized attribute Is_Controlled.
  
  --    Discard_Names (Flag88)
  --       Defined in types and exception entities. Set if pragma Discard_Names
*************** package Einfo is
*** 1291,1299 ****
  --       that represents an activation record pointer is an extra formal.
  
  --    Extra_Formals (Node28)
! --       Applies to subprograms and subprogram types, and also to entries
! --       and entry families. Returns first extra formal of the subprogram
! --       or entry. Returns Empty if there are no extra formals.
  
  --    Finalization_Master (Node23) [root type only]
  --       Defined in access-to-controlled or access-to-class-wide types. The
--- 1313,1321 ----
  --       that represents an activation record pointer is an extra formal.
  
  --    Extra_Formals (Node28)
! --       Applies to subprograms, subprogram types, entries, and entry
! --       families. Returns first extra formal of the subprogram or entry.
! --       Returns Empty if there are no extra formals.
  
  --    Finalization_Master (Node23) [root type only]
  --       Defined in access-to-controlled or access-to-class-wide types. The
*************** package Einfo is
*** 1527,1534 ****
  --       the package body).
  
  --    Has_Complex_Representation (Flag140) [implementation base type only]
! --       Defined in all type entities. Set only for a record base type to
! --       which a valid pragma Complex_Representation applies.
  
  --    Has_Component_Size_Clause (Flag68) [implementation base type only]
  --       Defined in all type entities. Set if a component size clause is
--- 1549,1556 ----
  --       the package body).
  
  --    Has_Complex_Representation (Flag140) [implementation base type only]
! --       Defined in record types. Set only for a base type to which a valid
! --       pragma Complex_Representation applies.
  
  --    Has_Component_Size_Clause (Flag68) [implementation base type only]
  --       Defined in all type entities. Set if a component size clause is
*************** package Einfo is
*** 1964,1969 ****
--- 1986,1996 ----
  --       indicate if a full type declaration is a completion. Used for semantic
  --       checks in E.4(18) and elsewhere.
  
+ --    Has_Private_Extension (Flag300)
+ --       Defined in tagged types. Set to indicate that the tagged type has some
+ --       private extension. Used to report a warning on public primitives added
+ --       after defining its private extensions.
+ 
  --    Has_Protected (Flag271) [base type only]
  --       Defined in all type entities. Set on protected types themselves, and
  --       also (recursively) on any composite type which has a component for
*************** package Einfo is
*** 2151,2156 ****
--- 2178,2190 ----
  --       scopes. Homonyms in the same scope are overloaded. Used for name
  --       resolution and for the generation of debugging information.
  
+ --    Ignore_SPARK_Mode_Pragmas (Flag301)
+ --       Present in concurrent type, entry, operator, [generic] package,
+ --       package body, [generic] subprogram, and subprogram body entities.
+ --       Set when the entity appears in an instance subject to SPARK_Mode
+ --       "off" and indicates that all SPARK_Mode pragmas found within must
+ --       be ignored.
+ 
  --    Implementation_Base_Type (synthesized)
  --       Applies to all entities. For types, similar to Base_Type, but never
  --       returns a private type when applied to a non-private type. Instead in
*************** package Einfo is
*** 2165,2177 ****
  --       Rep_Item chain mechanism, because a single pragma Import can apply
  --       to multiple subprogram entities).
  
- --    Incomplete_Actuals (Elist24)
- --       Defined on package entities that are instances. Indicates the actuals
- --       types in the instantiation that are limited views. If this list is
- --       not empty, the instantiation, which appears in a package declaration,
- --       is relocated to the corresponding package body, which must have a
- --       corresponding nonlimited with_clause.
- 
  --    In_Package_Body (Flag48)
  --       Defined in package entities. Set on the entity that denotes the
  --       package (the defining occurrence of the package declaration) while
--- 2199,2204 ----
*************** package Einfo is
*** 2185,2190 ****
--- 2212,2224 ----
  --       the end of the package declaration. For objects it indicates that the
  --       declaration of the object occurs in the private part of a package.
  
+ --    Incomplete_Actuals (Elist24)
+ --       Defined on package entities that are instances. Indicates the actuals
+ --       types in the instantiation that are limited views. If this list is
+ --       not empty, the instantiation, which appears in a package declaration,
+ --       is relocated to the corresponding package body, which must have a
+ --       corresponding nonlimited with_clause.
+ 
  --    Initialization_Statements (Node28)
  --       Defined in constants and variables. For a composite object initialized
  --       initialized with an aggregate that has been converted to a sequence
*************** package Einfo is
*** 2340,2345 ****
--- 2374,2385 ----
  --       Defined in all entities. Set only for defining entities of program
  --       units that are child units (but False for subunits).
  
+ --    Is_Class_Wide_Clone (Flag290)
+ --       Defined on subprogram entities. Set for subprograms built in order
+ --       to implement properly the inheritance of class-wide pre- or post-
+ --       conditions when the condition contains calls to other primitives
+ --       of the ancestor type. Used to implement AI12-0195.
+ 
  --    Is_Class_Wide_Equivalent_Type (Flag35)
  --       Defined in record types and subtypes. Set to True, if the type acts
  --       as a class-wide equivalent type, i.e. the Equivalent_Type field of
*************** package Einfo is
*** 2405,2418 ****
  --       Defined in function and procedure entities. Set if a pragma
  --       CPP_Constructor applies to the subprogram.
  
! --    Is_Controlled (Flag42) [base type only]
  --       Defined in all type entities. Indicates that the type is controlled,
  --       i.e. is either a descendant of Ada.Finalization.Controlled or of
  --       Ada.Finalization.Limited_Controlled.
  
! --    Is_Controlled_Active (synth) [base type only]
! --       Defined in all type entities. Set if Is_Controlled is set for the
! --       type, and Disable_Controlled is not set.
  
  --    Is_Controlling_Formal (Flag97)
  --       Defined in all Formal_Kind entities. Marks the controlling parameters
--- 2445,2458 ----
  --       Defined in function and procedure entities. Set if a pragma
  --       CPP_Constructor applies to the subprogram.
  
! --    Is_Controlled_Active (Flag42) [base type only]
  --       Defined in all type entities. Indicates that the type is controlled,
  --       i.e. is either a descendant of Ada.Finalization.Controlled or of
  --       Ada.Finalization.Limited_Controlled.
  
! --    Is_Controlled (synth) [base type only]
! --       Defined in all type entities. Set if Is_Controlled_Active is set for
! --       the type, and Disable_Controlled is not set.
  
  --    Is_Controlling_Formal (Flag97)
  --       Defined in all Formal_Kind entities. Marks the controlling parameters
*************** package Einfo is
*** 2465,2477 ****
  
  --    Is_Dynamic_Scope (synthesized)
  --       Applies to all Entities. Returns True if the entity is a dynamic
! --       scope (i.e. a block, subprogram, task_type, entry
! --       or extended return statement).
  
  --    Is_Elementary_Type (synthesized)
! --       Applies to all entities, true for all elementary types and
! --       subtypes. Either Is_Composite_Type or Is_Elementary_Type (but
! --       not both) is true of any type.
  
  --    Is_Eliminated (Flag124)
  --       Defined in type entities, subprogram entities, and object entities.
--- 2505,2523 ----
  
  --    Is_Dynamic_Scope (synthesized)
  --       Applies to all Entities. Returns True if the entity is a dynamic
! --       scope (i.e. a block, subprogram, task_type, entry or extended return
! --       statement).
! 
! --    Is_Elaboration_Checks_OK_Id (Flag148)
! --       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.
  
  --    Is_Elementary_Type (synthesized)
! --       Applies to all entities, true for all elementary types and subtypes.
! --       Either Is_Composite_Type or Is_Elementary_Type (but not both) is true
! --       of any type.
  
  --    Is_Eliminated (Flag124)
  --       Defined in type entities, subprogram entities, and object entities.
*************** package Einfo is
*** 2645,2653 ****
  
  --    Is_Imported (Flag24)
  --       Defined in all entities. Set if the entity is imported. For now we
! --       only allow the import of exceptions, functions, procedures, packages.
! --       and variables. Exceptions, packages and types can only be imported in
! --       the Java VM implementation, which is retired.
  
  --    Is_Incomplete_Or_Private_Type (synthesized)
  --       Applies to all entities, true for private and incomplete types
--- 2691,2699 ----
  
  --    Is_Imported (Flag24)
  --       Defined in all entities. Set if the entity is imported. For now we
! --       only allow the import of exceptions, functions, procedures, packages,
! --       constants, and variables. Exceptions, packages, and types can only be
! --       imported in the Java VM implementation, which is retired.
  
  --    Is_Incomplete_Or_Private_Type (synthesized)
  --       Applies to all entities, true for private and incomplete types
*************** package Einfo is
*** 2664,2669 ****
--- 2710,2719 ----
  --       and incomplete types, this flag is set in both the partial view and
  --       the full view.
  
+ --    Is_Initial_Condition_Procedure (Flag302)
+ --       Defined in functions and procedures. Set for a generated procedure
+ --       which verifies the assumption of pragma Initial_Condition at run time.
+ 
  --    Is_Inlined (Flag11)
  --       Defined in all entities. Set for functions and procedures which are
  --       to be inlined. For subprograms created during expansion, this flag
*************** package Einfo is
*** 2692,2699 ****
  
  --    Is_Interface (Flag186)
  --       Defined in record types and subtypes. Set to indicate that the current
! --       entity corresponds with an abstract interface. Because abstract
! --       interfaces are conceptually a special kind of abstract tagged types
  --       we represent them by means of tagged record types and subtypes
  --       marked with this attribute. This allows us to reuse most of the
  --       compiler support for abstract tagged types to implement interfaces
--- 2742,2749 ----
  
  --    Is_Interface (Flag186)
  --       Defined in record types and subtypes. Set to indicate that the current
! --       entity corresponds to an abstract interface. Because abstract
! --       interfaces are conceptually a special kind of abstract tagged type
  --       we represent them by means of tagged record types and subtypes
  --       marked with this attribute. This allows us to reuse most of the
  --       compiler support for abstract tagged types to implement interfaces
*************** package Einfo is
*** 2707,2713 ****
  --         1) Internal entities (such as temporaries generated for the result
  --         of an inlined function call or dummy variables generated for the
  --         debugger). Set to indicate that they need not be initialized, even
! --         when scalars are initialized or normalized;
  --
  --         2) Predefined primitives of tagged types. Set to mark that they
  --         have specific properties: first they are primitives even if they
--- 2757,2763 ----
  --         1) Internal entities (such as temporaries generated for the result
  --         of an inlined function call or dummy variables generated for the
  --         debugger). Set to indicate that they need not be initialized, even
! --         when scalars are initialized or normalized.
  --
  --         2) Predefined primitives of tagged types. Set to mark that they
  --         have specific properties: first they are primitives even if they
*************** package Einfo is
*** 3268,3278 ****
  --       Defined in all entities. Used when unnesting subprograms to indicate
  --       that an entity is locally defined within a subprogram P, and there is
  --       a reference to the entity within a subprogram nested within P (at any
! --       depth). Set for uplevel referenced objects (variables, constants and
! --       loop parameters), and also for upreferenced dynamic types, including
! --       the cases where the reference is implicit (e.g. the type of an array
! --       used for computing the location of an element in an array. This is
! --       used internally in Exp_Unst, see this package for further details.
  
  --    Is_Valued_Procedure (Flag127)
  --       Defined in procedure entities. Set if an Import_Valued_Procedure
--- 3318,3329 ----
  --       Defined in all entities. Used when unnesting subprograms to indicate
  --       that an entity is locally defined within a subprogram P, and there is
  --       a reference to the entity within a subprogram nested within P (at any
! --       depth). Set for uplevel referenced objects (variables, constants,
! --       discriminants and loop parameters), and also for upreferenced dynamic
! --       types, including the cases where the reference is implicit (e.g. the
! --       type of an array used for computing the location of an element in an
! --       array. This is used internally in Exp_Unst, see this package for
! --       further details.
  
  --    Is_Valued_Procedure (Flag127)
  --       Defined in procedure entities. Set if an Import_Valued_Procedure
*************** package Einfo is
*** 3482,3487 ****
--- 3533,3546 ----
  --       interpreted as an indexing of the result of the call. It is also
  --       used to resolve various cases of entry calls.
  
+ --    Nested_Scenarios (Elist36)
+ --       Present in [stand alone] subprogram bodies. The list contains all
+ --       nested scenarios (see the terminology in Sem_Elab) which appear within
+ --       the declarations, statements, and exception handlers of the subprogram
+ --       body. The list improves the performance of the ABE Processing phase by
+ --       avoiding a full tree traversal when the same subprogram body is part
+ --       of several distinct paths in the elaboration graph.
+ 
  --    Never_Set_In_Source (Flag115)
  --       Defined in all entities, but can be set only for variables and
  --       parameters. This flag is set if the object is never assigned a value
*************** package Einfo is
*** 3600,3605 ****
--- 3659,3668 ----
  --       in the spec of a generic package, in constructs that forbid discrete
  --       types with predicates.
  
+ --    No_Reordering (Flag239) [implementation base type only]
+ --       Defined in record types. Set only for a base type to which a valid
+ --       pragma No_Component_Reordering applies.
+ 
  --    No_Return (Flag113)
  --       Defined in all entities. Always false except in the case of procedures
  --       and generic procedures for which a pragma No_Return is given.
*************** package Einfo is
*** 3679,3690 ****
  --       is only worth setting this flag for composites, since for primitive
  --       types, it is cheaper to do the copy.
  
- --    OK_To_Reorder_Components (Flag239) [base type only]
- --       Defined in record types. Set if the backend is permitted to reorder
- --       the components. If not set, the record must be layed out in the order
- --       in which the components are declared textually. Currently this flag
- --       can only be set by debug switches.
- 
  --    Optimize_Alignment_Space (Flag241)
  --       Defined in type, subtype, variable, and constant entities. This
  --       flag records that the type or object is to be layed out in a manner
--- 3742,3747 ----
*************** package Einfo is
*** 3703,3710 ****
  
  --    Original_Access_Type (Node28)
  --       Defined in E_Access_Subprogram_Type entities. Set only if the access
! --       type was generated by the expander as part of processing an access
! --       to protected subprogram type. Points to the access to protected
  --       subprogram type.
  
  --    Original_Array_Type (Node21)
--- 3760,3767 ----
  
  --    Original_Access_Type (Node28)
  --       Defined in E_Access_Subprogram_Type entities. Set only if the access
! --       type was generated by the expander as part of processing an access-
! --       to-protected-subprogram type. Points to the access-to-protected-
  --       subprogram type.
  
  --    Original_Array_Type (Node21)
*************** package Einfo is
*** 3771,3777 ****
  --       non-contiguous enumeration index types). References the type used to
  --       represent the packed array, which is either a modular type for short
  --       static arrays or an array of System.Unsigned in the bit-packed case,
! --       or a regular array in the non-standard enumeration index case). Note
  --       that in some situations (internal types and references to fields of
  --       variant records), it is not always possible to construct this type in
  --       advance of its use. If this field is empty, then the necessary type
--- 3828,3834 ----
  --       non-contiguous enumeration index types). References the type used to
  --       represent the packed array, which is either a modular type for short
  --       static arrays or an array of System.Unsigned in the bit-packed case,
! --       or a regular array in the non-standard enumeration index case. Note
  --       that in some situations (internal types and references to fields of
  --       variant records), it is not always possible to construct this type in
  --       advance of its use. If this field is empty, then the necessary type
*************** package Einfo is
*** 3921,3926 ****
--- 3978,3988 ----
  --       formal parameter in the unprotected version of the operation that
  --       is created during expansion.
  
+ --    Protected_Subprogram (Node39)
+ --       Defined in functions and procedures. Set for the pair of subprograms
+ --       which emulate the runtime semantics of a protected subprogram. Denotes
+ --       the entity of the origial protected subprogram.
+ 
  --    Protection_Object (Node23)
  --       Applies to protected entries, entry families and subprograms. Denotes
  --       the entity which is used to rename the _object component of protected
*************** package Einfo is
*** 3930,3935 ****
--- 3992,4002 ----
  --       Defined in labels. The flag is set over the range of statements in
  --       which a goto to that label is legal.
  
+ --    Receiving_Entry (Node19)
+ --       Defined in procedures. Set for an internally generated procedure which
+ --       wraps the original statements of an accept alternative. Designates the
+ --       entity of the task entry being accepted.
+ 
  --    Referenced (Flag156)
  --       Defined in all entities. Set if the entity is referenced, except for
  --       the case of an appearance of a simple variable that is not a renaming
*************** package Einfo is
*** 4001,4010 ****
  --       in a Relative_Deadline pragma for a task type.
  
  --    Renamed_Entity (Node18)
! --       Defined in exceptions, packages, subprograms, and generic units. Set
! --       for entities that are defined by a renaming declaration. Denotes the
! --       renamed entity, or transitively the ultimate renamed entity if
! --       there is a chain of renaming declarations. Empty if no renaming.
  
  --    Renamed_In_Spec (Flag231)
  --       Defined in package entities. If a package renaming occurs within
--- 4068,4077 ----
  --       in a Relative_Deadline pragma for a task type.
  
  --    Renamed_Entity (Node18)
! --       Defined in exception, generic unit, package, and subprogram entities.
! --       Set when the entity is defined by a renaming declaration. Denotes the
! --       renamed entity, or transitively the ultimate renamed entity if there
! --       is a chain of renaming declarations. Empty if no renaming.
  
  --    Renamed_In_Spec (Flag231)
  --       Defined in package entities. If a package renaming occurs within
*************** package Einfo is
*** 4143,4152 ****
  --       needed, since returns an invalid value in this case.
  
  --    Sec_Stack_Needed_For_Return (Flag167)
! --       Defined in scope entities (blocks, functions, procedures, tasks,
! --       entries). Set to True when secondary stack is used to hold the
! --       returned value of a function and thus should not be released on
! --       scope exit.
  
  --    Shadow_Entities (List14)
  --       Defined in package and generic package entities. Points to a list
--- 4210,4219 ----
  --       needed, since returns an invalid value in this case.
  
  --    Sec_Stack_Needed_For_Return (Flag167)
! --       Defined in scope entities (blocks, entries, entry families, functions,
! --       and procedures). Set to True when secondary stack is used to hold the
! --       returned value of a function and thus should not be released on scope
! --       exit.
  
  --    Shadow_Entities (List14)
  --       Defined in package and generic package entities. Points to a list
*************** package Einfo is
*** 4219,4238 ****
  --       inherited, rather than a local one.
  
  --    SPARK_Pragma (Node40)
! --       Present in concurrent type, entry, operator, [generic] package,
! --       package body, [generic] subprogram, subprogram body and variable
! --       entities. Points to the N_Pragma node that applies to the initial
! --       declaration or body. This is either set by a local SPARK_Mode pragma
! --       or is inherited from the context (from an outer scope for the spec
! --       case or from the spec for the body case). In the case where it is
! --       inherited the flag SPARK_Pragma_Inherited is set. Empty if no
! --       SPARK_Mode pragma is applicable.
  
  --    SPARK_Pragma_Inherited (Flag265)
! --       Present in concurrent type, entry, operator, [generic] package,
! --       package body, [generic] subprogram, subprogram body and variable
! --       entities. Set if the SPARK_Pragma attribute points to a pragma that is
! --       inherited, rather than a local one.
  
  --    Spec_Entity (Node19)
  --       Defined in package body entities. Points to corresponding package
--- 4286,4327 ----
  --       inherited, rather than a local one.
  
  --    SPARK_Pragma (Node40)
! --       Present in the following entities:
! --
! --         abstract states
! --         constants
! --         entries
! --         operators
! --         [generic] packages
! --         package bodies
! --         [generic] subprograms
! --         subprogram bodies
! --         variables
! --         types
! --
! --       Points to the N_Pragma node that applies to the initial declaration or
! --       body. This is either set by a local SPARK_Mode pragma or is inherited
! --       from the context (from an outer scope for the spec case or from the
! --       spec for the body case). In the case where the attribute is inherited,
! --       flag SPARK_Pragma_Inherited is set. Empty if no SPARK_Mode pragma is
! --       applicable.
  
  --    SPARK_Pragma_Inherited (Flag265)
! --       Present in the following entities:
! --
! --         abstract states
! --         constants
! --         entries
! --         operators
! --         [generic] packages
! --         package bodies
! --         [generic] subprograms
! --         subprogram bodies
! --         variables
! --         types
! --
! --       Set if the SPARK_Pragma attribute points to an inherited pragma rather
! --       than a local one.
  
  --    Spec_Entity (Node19)
  --       Defined in package body entities. Points to corresponding package
*************** package Einfo is
*** 4297,4308 ****
  --       expression may consist of the above xxxPredicate call on its own.
  
  --    Status_Flag_Or_Transient_Decl (Node15)
! --       Defined in variables and constants. Applies to objects that require
! --       special treatment by the finalization machinery, such as extended
! --       return results, IF and CASE expression results, and objects inside
! --       N_Expression_With_Actions nodes. The attribute contains the entity
! --       of a flag which specifies particular behavior over a region of code
! --       or the declaration of a "hook" object.
  --       In which case is it a flag, or a hook object???
  
  --    Storage_Size_Variable (Node26) [implementation base type only]
--- 4386,4397 ----
  --       expression may consist of the above xxxPredicate call on its own.
  
  --    Status_Flag_Or_Transient_Decl (Node15)
! --       Defined in constant, loop, and variable entities. Applies to objects
! --       that require special treatment by the finalization machinery, such as
! --       extended return results, IF and CASE expression results, and objects
! --       inside N_Expression_With_Actions nodes. The attribute contains the
! --       entity of a flag which specifies particular behavior over a region of
! --       code or the declaration of a "hook" object.
  --       In which case is it a flag, or a hook object???
  
  --    Storage_Size_Variable (Node26) [implementation base type only]
*************** package Einfo is
*** 4358,4373 ****
  --       for the outer level subprogram, this is the starting index in the Subp
  --       table for the entries for this subprogram.
  
! --    Suppress_Elaboration_Warnings (Flag148)
  --       Defined in all entities, can be set only for subprogram entities and
  --       for variables. If this flag is set then Sem_Elab will not generate
  --       elaboration warnings for the subprogram or variable. Suppression of
  --       such warnings is automatic for subprograms for which elaboration
  --       checks are suppressed (without the need to set this flag), but the
  --       flag is also set for various internal entities (such as init procs)
! --       which are known not to generate any possible access before
! --       elaboration, and it is set on variables when a warning is given to
! --       avoid multiple elaboration warnings for the same variable.
  
  --    Suppress_Initialization (Flag105)
  --       Defined in all variable, type and subtype entities. If set for a base
--- 4447,4465 ----
  --       for the outer level subprogram, this is the starting index in the Subp
  --       table for the entries for this subprogram.
  
! --    Suppress_Elaboration_Warnings (Flag303)
! --       NOTE: this flag is relevant only for the legacy ABE mechanism and
! --       should not be used outside of that context.
! --
  --       Defined in all entities, can be set only for subprogram entities and
  --       for variables. If this flag is set then Sem_Elab will not generate
  --       elaboration warnings for the subprogram or variable. Suppression of
  --       such warnings is automatic for subprograms for which elaboration
  --       checks are suppressed (without the need to set this flag), but the
  --       flag is also set for various internal entities (such as init procs)
! --       which are known not to generate any possible access before elaboration
! --       and it is set on variables when a warning is given to avoid multiple
! --       elaboration warnings for the same variable.
  
  --    Suppress_Initialization (Flag105)
  --       Defined in all variable, type and subtype entities. If set for a base
*************** package Einfo is
*** 4493,4510 ****
  
  --    Used_As_Generic_Actual (Flag222)
  --       Defined in all entities, set if the entity is used as an argument to
! --       a generic instantiation. Used to tune certain warning messages.
  
  --    Uses_Lock_Free (Flag188)
  --       Defined in protected type entities. Set to True when the Lock Free
! --       implementation is used for the protected type. This implemenatation is
  --       based on atomic transactions and doesn't require anymore the use of
  --       Protection object (see System.Tasking.Protected_Objects).
  
  --    Uses_Sec_Stack (Flag95)
! --       Defined in scope entities (block, entry, function, loop, procedure,
! --       task). Set to True when secondary stack is used in this scope and must
! --       be released on exit unless Sec_Stack_Needed_For_Return is set.
  
  --    Warnings_Off (Flag96)
  --       Defined in all entities. Set if a pragma Warnings (Off, entity-name)
--- 4585,4609 ----
  
  --    Used_As_Generic_Actual (Flag222)
  --       Defined in all entities, set if the entity is used as an argument to
! --       a generic instantiation. Used to tune certain warning messages, and
! --       in checking type conformance within an instantiation that involves
! --       incomplete formal and actual types.
  
  --    Uses_Lock_Free (Flag188)
  --       Defined in protected type entities. Set to True when the Lock Free
! --       implementation is used for the protected type. This implementation is
  --       based on atomic transactions and doesn't require anymore the use of
  --       Protection object (see System.Tasking.Protected_Objects).
  
  --    Uses_Sec_Stack (Flag95)
! --       Defined in scope entities (blocks, entries, entry families, functions,
! --       loops, and procedures). Set to True when the secondary stack is used
! --       in this scope and must be released on exit unless flag
! --       Sec_Stack_Needed_For_Return is set.
! 
! --    Validated_Object (Node36)
! --       Defined in variables. Contains the object whose value is captured by
! --       the variable for validity check purposes.
  
  --    Warnings_Off (Flag96)
  --       Defined in all entities. Set if a pragma Warnings (Off, entity-name)
*************** package Einfo is
*** 4834,4857 ****
        --  keyword present.
  
        E_Access_Subprogram_Type,
!       --  An access to subprogram type, created by an access to subprogram
        --  declaration.
  
-       E_Anonymous_Access_Subprogram_Type,
-       --  An anonymous access to subprogram type, created by an access to
-       --  subprogram declaration, or generated for a current instance of
-       --  a type name appearing within a component definition that has an
-       --  anonymous access to subprogram type.
- 
        E_Access_Protected_Subprogram_Type,
        --  An access to a protected subprogram, created by the corresponding
        --  declaration. Values of such a type denote both a protected object
        --  and a protected operation within, and have different compile-time
!       --  and run-time properties than other access to subprograms.
  
        E_Anonymous_Access_Protected_Subprogram_Type,
!       --  An anonymous access to protected subprogram type, created by an
!       --  access to subprogram declaration.
  
        E_Anonymous_Access_Type,
        --  An anonymous access type created by an access parameter or access
--- 4933,4956 ----
        --  keyword present.
  
        E_Access_Subprogram_Type,
!       --  An access-to-subprogram type, created by an access-to-subprogram
        --  declaration.
  
        E_Access_Protected_Subprogram_Type,
        --  An access to a protected subprogram, created by the corresponding
        --  declaration. Values of such a type denote both a protected object
        --  and a protected operation within, and have different compile-time
!       --  and run-time properties than other access-to-subprogram values.
  
        E_Anonymous_Access_Protected_Subprogram_Type,
!       --  An anonymous access-to-protected-subprogram type, created by an
!       --  access-to-subprogram declaration.
! 
!       E_Anonymous_Access_Subprogram_Type,
!       --  An anonymous access-to-subprogram type, created by an access-to-
!       --  subprogram declaration, or generated for a current instance of
!       --  a type name appearing within a component definition that has an
!       --  anonymous access-to-subprogram type.
  
        E_Anonymous_Access_Type,
        --  An anonymous access type created by an access parameter or access
*************** package Einfo is
*** 5082,5097 ****
     --  E_Allocator_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;
  
     subtype Access_Subprogram_Kind      is Entity_Kind range
         E_Access_Subprogram_Type ..
-    --  E_Anonymous_Access_Subprogram_Type
     --  E_Access_Protected_Subprogram_Type
!        E_Anonymous_Access_Protected_Subprogram_Type;
  
     subtype Access_Protected_Kind       is Entity_Kind range
        E_Access_Protected_Subprogram_Type ..
--- 5181,5196 ----
     --  E_Allocator_Type
     --  E_General_Access_Type
     --  E_Access_Subprogram_Type
     --  E_Access_Protected_Subprogram_Type
     --  E_Anonymous_Access_Protected_Subprogram_Type
+    --  E_Anonymous_Access_Subprogram_Type
         E_Anonymous_Access_Type;
  
     subtype Access_Subprogram_Kind      is Entity_Kind range
         E_Access_Subprogram_Type ..
     --  E_Access_Protected_Subprogram_Type
!    --  E_Anonymous_Access_Protected_Subprogram_Type
!        E_Anonymous_Access_Subprogram_Type;
  
     subtype Access_Protected_Kind       is Entity_Kind range
        E_Access_Protected_Subprogram_Type ..
*************** package Einfo is
*** 5106,5111 ****
--- 5205,5215 ----
     --  E_Record_Type
         E_Record_Subtype;
  
+    subtype Anonymous_Access_Kind       is Entity_Kind range
+        E_Anonymous_Access_Protected_Subprogram_Type ..
+    --  E_Anonymous_Subprogram_Type
+        E_Anonymous_Access_Type;
+ 
     subtype Array_Kind                  is Entity_Kind range
         E_Array_Type ..
     --  E_Array_Subtype
*************** package Einfo is
*** 5201,5208 ****
     --  E_General_Access_Type
     --  E_Access_Subprogram_Type
     --  E_Access_Protected_Subprogram_Type
-    --  E_Anonymous_Access_Subprogram_Type
     --  E_Anonymous_Access_Protected_Subprogram_Type
         E_Anonymous_Access_Type;
  
     subtype Enumeration_Kind            is Entity_Kind range
--- 5305,5312 ----
     --  E_General_Access_Type
     --  E_Access_Subprogram_Type
     --  E_Access_Protected_Subprogram_Type
     --  E_Anonymous_Access_Protected_Subprogram_Type
+    --  E_Anonymous_Access_Subprogram_Type
         E_Anonymous_Access_Type;
  
     subtype Enumeration_Kind            is Entity_Kind range
*************** package Einfo is
*** 5380,5387 ****
     --  E_General_Access_Type
     --  E_Access_Subprogram_Type,
     --  E_Access_Protected_Subprogram_Type
-    --  E_Anonymous_Access_Subprogram_Type
     --  E_Anonymous_Access_Protected_Subprogram_Type
     --  E_Anonymous_Access_Type
     --  E_Array_Type
     --  E_Array_Subtype
--- 5484,5491 ----
     --  E_General_Access_Type
     --  E_Access_Subprogram_Type,
     --  E_Access_Protected_Subprogram_Type
     --  E_Anonymous_Access_Protected_Subprogram_Type
+    --  E_Anonymous_Access_Subprogram_Type
     --  E_Anonymous_Access_Type
     --  E_Array_Type
     --  E_Array_Subtype
*************** package Einfo is
*** 5518,5524 ****
     --    Referenced                          (Flag156)
     --    Referenced_As_LHS                   (Flag36)
     --    Referenced_As_Out_Parameter         (Flag227)
!    --    Suppress_Elaboration_Warnings       (Flag148)
     --    Suppress_Style_Checks               (Flag165)
     --    Suppress_Value_Tracking_On_Call     (Flag217)
     --    Used_As_Generic_Actual              (Flag222)
--- 5622,5628 ----
     --    Referenced                          (Flag156)
     --    Referenced_As_LHS                   (Flag36)
     --    Referenced_As_Out_Parameter         (Flag227)
!    --    Suppress_Elaboration_Warnings       (Flag303)
     --    Suppress_Style_Checks               (Flag165)
     --    Suppress_Value_Tracking_On_Call     (Flag217)
     --    Used_As_Generic_Actual              (Flag222)
*************** package Einfo is
*** 5554,5559 ****
--- 5658,5664 ----
     --    Derived_Type_Link                   (Node31)
     --    No_Tagged_Streams_Pragma            (Node32)
     --    Linker_Section_Pragma               (Node33)
+    --    SPARK_Pragma                        (Node40)
  
     --    Depends_On_Private                  (Flag14)
     --    Disable_Controlled                  (Flag253)
*************** package Einfo is
*** 5602,5608 ****
     --    Is_Atomic                           (Flag85)
     --    Is_Constr_Subt_For_U_Nominal        (Flag80)
     --    Is_Constr_Subt_For_UN_Aliased       (Flag141)
!    --    Is_Controlled                       (Flag42)   (base type only)
     --    Is_Eliminated                       (Flag124)
     --    Is_Frozen                           (Flag4)
     --    Is_Generic_Actual_Type              (Flag94)
--- 5707,5713 ----
     --    Is_Atomic                           (Flag85)
     --    Is_Constr_Subt_For_U_Nominal        (Flag80)
     --    Is_Constr_Subt_For_UN_Aliased       (Flag141)
!    --    Is_Controlled_Active                (Flag42)   (base type only)
     --    Is_Eliminated                       (Flag124)
     --    Is_Frozen                           (Flag4)
     --    Is_Generic_Actual_Type              (Flag94)
*************** package Einfo is
*** 5624,5629 ****
--- 5729,5735 ----
     --    Partial_View_Has_Unknown_Discr      (Flag280)
     --    Size_Depends_On_Discriminant        (Flag177)
     --    Size_Known_At_Compile_Time          (Flag92)
+    --    SPARK_Pragma_Inherited              (Flag265)
     --    Strict_Alignment                    (Flag145)  (base type only)
     --    Suppress_Initialization             (Flag105)
     --    Treat_As_Volatile                   (Flag41)
*************** package Einfo is
*** 5638,5644 ****
     --    Invariant_Procedure                 (synth)
     --    Is_Access_Protected_Subprogram_Type (synth)
     --    Is_Atomic_Or_VFA                    (synth)
!    --    Is_Controlled_Active                (synth)
     --    Partial_Invariant_Procedure         (synth)
     --    Predicate_Function                  (synth)
     --    Predicate_Function_M                (synth)
--- 5744,5750 ----
     --    Invariant_Procedure                 (synth)
     --    Is_Access_Protected_Subprogram_Type (synth)
     --    Is_Atomic_Or_VFA                    (synth)
!    --    Is_Controlled                       (synth)
     --    Partial_Invariant_Procedure         (synth)
     --    Predicate_Function                  (synth)
     --    Predicate_Function_M                (synth)
*************** package Einfo is
*** 5655,5663 ****
--- 5761,5771 ----
     --    Body_References                     (Elist16)
     --    Non_Limited_View                    (Node19)
     --    Encapsulating_State                 (Node32)
+    --    SPARK_Pragma                        (Node40)
     --    From_Limited_With                   (Flag159)
     --    Has_Partial_Visible_Refinement      (Flag296)
     --    Has_Visible_Refinement              (Flag263)
+    --    SPARK_Pragma_Inherited              (Flag265)
     --    Has_Non_Limited_View                (synth)
     --    Has_Non_Null_Visible_Refinement     (synth)
     --    Has_Null_Visible_Refinement         (synth)
*************** package Einfo is
*** 5783,5788 ****
--- 5891,5897 ----
     --    Prival                              (Node17)
     --    Renamed_Object                      (Node18)   (always Empty)
     --    Discriminant_Checking_Func          (Node20)
+    --    Corresponding_Record_Component      (Node21)
     --    Original_Record_Component           (Node22)
     --    DT_Offset_To_Top_Func               (Node25)
     --    Related_Type                        (Node27)
*************** package Einfo is
*** 5807,5813 ****
     --    Esize                               (Uint12)
     --    Extra_Accessibility                 (Node13)   (constants only)
     --    Alignment                           (Uint14)
!    --    Status_Flag_Or_Transient_Decl       (Node15)   (constants only)
     --    Actual_Subtype                      (Node17)
     --    Renamed_Object                      (Node18)
     --    Size_Check_Code                     (Node19)   (constants only)
--- 5916,5922 ----
     --    Esize                               (Uint12)
     --    Extra_Accessibility                 (Node13)   (constants only)
     --    Alignment                           (Uint14)
!    --    Status_Flag_Or_Transient_Decl       (Node15)
     --    Actual_Subtype                      (Node17)
     --    Renamed_Object                      (Node18)
     --    Size_Check_Code                     (Node19)   (constants only)
*************** package Einfo is
*** 5821,5826 ****
--- 5930,5936 ----
     --    Encapsulating_State                 (Node32)   (constants only)
     --    Linker_Section_Pragma               (Node33)
     --    Contract                            (Node34)   (constants only)
+    --    SPARK_Pragma                        (Node40)   (constants only)
     --    Has_Alignment_Clause                (Flag46)
     --    Has_Atomic_Components               (Flag86)
     --    Has_Biased_Representation           (Flag139)
*************** package Einfo is
*** 5830,5835 ****
--- 5940,5946 ----
     --    Has_Thunks                          (Flag228)  (constants only)
     --    Has_Volatile_Components             (Flag87)
     --    Is_Atomic                           (Flag85)
+    --    Is_Elaboration_Checks_OK_Id         (Flag148)  (constants only)
     --    Is_Eliminated                       (Flag124)
     --    Is_Finalized_Transient              (Flag252)
     --    Is_Ignored_Transient                (Flag295)
*************** package Einfo is
*** 5841,5846 ****
--- 5952,5958 ----
     --    Is_Volatile_Full_Access             (Flag285)
     --    Optimize_Alignment_Space            (Flag241)  (constants only)
     --    Optimize_Alignment_Time             (Flag242)  (constants only)
+    --    SPARK_Pragma_Inherited              (Flag265)  (constants only)
     --    Stores_Attribute_Old_Prefix         (Flag270)  (constants only)
     --    Treat_As_Volatile                   (Flag41)
     --    Address_Clause                      (synth)
*************** package Einfo is
*** 5876,5881 ****
--- 5988,5994 ----
     --    Renamed_Object                      (Node18)   (always Empty)
     --    Corresponding_Discriminant          (Node19)
     --    Discriminant_Default_Value          (Node20)
+    --    Corresponding_Record_Component      (Node21)
     --    Original_Record_Component           (Node22)
     --    CR_Discriminant                     (Node23)
     --    Is_Completely_Hidden                (Flag103)
*************** package Einfo is
*** 5900,5913 ****
     --    Extra_Formals                       (Node28)
     --    Contract                            (Node34)
     --    SPARK_Pragma                        (Node40)   (protected kind)
-    --    Needs_No_Actuals                    (Flag22)
-    --    Uses_Sec_Stack                      (Flag95)
     --    Default_Expressions_Processed       (Flag108)
     --    Entry_Accepted                      (Flag152)
-    --    Sec_Stack_Needed_For_Return         (Flag167)
     --    Has_Expanded_Contract               (Flag240)
!    --    SPARK_Pragma_Inherited              (Flag265)  (protected kind)
     --    Is_Entry_Wrapper                    (Flag297)
     --    Address_Clause                      (synth)
     --    Entry_Index_Type                    (synth)
     --    First_Formal                        (synth)
--- 6013,6028 ----
     --    Extra_Formals                       (Node28)
     --    Contract                            (Node34)
     --    SPARK_Pragma                        (Node40)   (protected kind)
     --    Default_Expressions_Processed       (Flag108)
     --    Entry_Accepted                      (Flag152)
     --    Has_Expanded_Contract               (Flag240)
!    --    Ignore_SPARK_Mode_Pragmas           (Flag301)
!    --    Is_Elaboration_Checks_OK_Id         (Flag148)
     --    Is_Entry_Wrapper                    (Flag297)
+    --    Needs_No_Actuals                    (Flag22)
+    --    Sec_Stack_Needed_For_Return         (Flag167)
+    --    SPARK_Pragma_Inherited              (Flag265)  (protected kind)
+    --    Uses_Sec_Stack                      (Flag95)
     --    Address_Clause                      (synth)
     --    Entry_Index_Type                    (synth)
     --    First_Formal                        (synth)
*************** package Einfo is
*** 6014,6021 ****
     --    Linker_Section_Pragma               (Node33)
     --    Contract                            (Node34)
     --    Import_Pragma                       (Node35)   (non-generic case only)
!    --    Class_Wide_Preconds                 (List38)
!    --    Class_Wide_Postconds                (List39)
     --    SPARK_Pragma                        (Node40)
     --    Original_Protected_Subprogram       (Node41)
     --    Body_Needed_For_SAL                 (Flag40)
--- 6129,6137 ----
     --    Linker_Section_Pragma               (Node33)
     --    Contract                            (Node34)
     --    Import_Pragma                       (Node35)   (non-generic case only)
!    --    Nested_Scenarios                    (Elist36)
!    --    Class_Wide_Clone                    (Node38)
!    --    Protected_Subprogram                (Node39)   (non-generic case only)
     --    SPARK_Pragma                        (Node40)
     --    Original_Protected_Subprogram       (Node41)
     --    Body_Needed_For_SAL                 (Flag40)
*************** package Einfo is
*** 6034,6048 ****
--- 6150,6167 ----
     --    Has_Nested_Subprogram               (Flag282)
     --    Has_Out_Or_In_Out_Parameter         (Flag110)
     --    Has_Recursive_Call                  (Flag143)
+    --    Ignore_SPARK_Mode_Pragmas           (Flag301)
     --    Is_Abstract_Subprogram              (Flag19)   (non-generic case only)
     --    Is_Called                           (Flag102)  (non-generic case only)
     --    Is_Constructor                      (Flag76)
     --    Is_DIC_Procedure                    (Flag132)  (non-generic case only)
     --    Is_Discrim_SO_Function              (Flag176)
     --    Is_Discriminant_Check_Function      (Flag264)
+    --    Is_Elaboration_Checks_OK_Id         (Flag148)
     --    Is_Eliminated                       (Flag124)
     --    Is_Generic_Actual_Subprogram        (Flag274)  (non-generic case only)
     --    Is_Hidden_Non_Overridden_Subpgm     (Flag2)    (non-generic case only)
+    --    Is_Initial_Condition_Procedure      (Flag302)  (non-generic case only)
     --    Is_Inlined_Always                   (Flag1)    (non-generic case only)
     --    Is_Instantiated                     (Flag126)  (generic case only)
     --    Is_Intrinsic_Subprogram             (Flag64)
*************** package Einfo is
*** 6187,6192 ****
--- 6306,6313 ----
     --    SPARK_Pragma                        (Node40)
     --    Default_Expressions_Processed       (Flag108)
     --    Has_Nested_Subprogram               (Flag282)
+    --    Ignore_SPARK_Mode_Pragmas           (Flag301)
+    --    Is_Elaboration_Checks_OK_Id         (Flag148)
     --    Is_Intrinsic_Subprogram             (Flag64)
     --    Is_Machine_Code_Subprogram          (Flag137)
     --    Is_Primitive                        (Flag218)
*************** package Einfo is
*** 6237,6256 ****
     --    Contract                            (Node34)
     --    SPARK_Pragma                        (Node40)
     --    SPARK_Aux_Pragma                    (Node41)
!    --    Delay_Subprogram_Descriptors        (Flag50)
     --    Body_Needed_For_SAL                 (Flag40)
     --    Contains_Ignored_Ghost_Code         (Flag279)
     --    Discard_Names                       (Flag88)
-    --    Elaboration_Entity_Required         (Flag174)
     --    Elaborate_Body_Desirable            (Flag210)  (non-generic case only)
     --    From_Limited_With                   (Flag159)
     --    Has_All_Calls_Remote                (Flag79)
     --    Has_Completion                      (Flag26)
     --    Has_Forward_Instantiation           (Flag175)
     --    Has_Master_Entity                   (Flag21)
     --    Has_RACW                            (Flag214)  (non-generic case only)
     --    In_Package_Body                     (Flag48)
     --    In_Use                              (Flag8)
     --    Is_Instantiated                     (Flag126)
     --    Is_Private_Descendant               (Flag53)
     --    Is_Visible_Lib_Unit                 (Flag116)
--- 6358,6380 ----
     --    Contract                            (Node34)
     --    SPARK_Pragma                        (Node40)
     --    SPARK_Aux_Pragma                    (Node41)
!    --    Body_Needed_For_Inlining            (Flag299)
     --    Body_Needed_For_SAL                 (Flag40)
     --    Contains_Ignored_Ghost_Code         (Flag279)
+    --    Delay_Subprogram_Descriptors        (Flag50)
     --    Discard_Names                       (Flag88)
     --    Elaborate_Body_Desirable            (Flag210)  (non-generic case only)
+    --    Elaboration_Entity_Required         (Flag174)
     --    From_Limited_With                   (Flag159)
     --    Has_All_Calls_Remote                (Flag79)
     --    Has_Completion                      (Flag26)
     --    Has_Forward_Instantiation           (Flag175)
     --    Has_Master_Entity                   (Flag21)
     --    Has_RACW                            (Flag214)  (non-generic case only)
+    --    Ignore_SPARK_Mode_Pragmas           (Flag301)
     --    In_Package_Body                     (Flag48)
     --    In_Use                              (Flag8)
+    --    Is_Elaboration_Checks_OK_Id         (Flag148)
     --    Is_Instantiated                     (Flag126)
     --    Is_Private_Descendant               (Flag53)
     --    Is_Visible_Lib_Unit                 (Flag116)
*************** package Einfo is
*** 6276,6281 ****
--- 6400,6406 ----
     --    SPARK_Aux_Pragma                    (Node41)
     --    Contains_Ignored_Ghost_Code         (Flag279)
     --    Delay_Subprogram_Descriptors        (Flag50)
+    --    Ignore_SPARK_Mode_Pragmas           (Flag301)
     --    SPARK_Aux_Pragma_Inherited          (Flag266)
     --    SPARK_Pragma_Inherited              (Flag265)
     --    Scope_Depth                         (synth)
*************** package Einfo is
*** 6291,6297 ****
     --    Private_View                        (Node22)
     --    Stored_Constraint                   (Elist23)
     --    Has_Completion                      (Flag26)
!    --    Is_Controlled                       (Flag42)   (base type only)
     --    Is_For_Access_Subtype               (Flag118)  (subtype only)
     --    (plus type attributes)
  
--- 6416,6422 ----
     --    Private_View                        (Node22)
     --    Stored_Constraint                   (Elist23)
     --    Has_Completion                      (Flag26)
!    --    Is_Controlled_Active                (Flag42)   (base type only)
     --    Is_For_Access_Subtype               (Flag118)  (subtype only)
     --    (plus type attributes)
  
*************** package Einfo is
*** 6308,6313 ****
--- 6433,6439 ----
     --    First_Entity                        (Node17)
     --    Alias                               (Node18)   (non-generic case only)
     --    Renamed_Entity                      (Node18)   (generic case only)
+    --    Receiving_Entry                     (Node19)   (non-generic case only)
     --    Last_Entity                         (Node20)
     --    Interface_Name                      (Node21)
     --    Scope_Depth_Value                   (Uint22)
*************** package Einfo is
*** 6326,6333 ****
     --    Linker_Section_Pragma               (Node33)
     --    Contract                            (Node34)
     --    Import_Pragma                       (Node35)   (non-generic case only)
!    --    Class_Wide_Preconds                 (List38)
!    --    Class_Wide_Postconds                (List39)
     --    SPARK_Pragma                        (Node40)
     --    Original_Protected_Subprogram       (Node41)
     --    Body_Needed_For_SAL                 (Flag40)
--- 6452,6460 ----
     --    Linker_Section_Pragma               (Node33)
     --    Contract                            (Node34)
     --    Import_Pragma                       (Node35)   (non-generic case only)
!    --    Nested_Scenarios                    (Elist36)
!    --    Class_Wide_Clone                    (Node38)
!    --    Protected_Subprogram                (Node39)   (non-generic case only)
     --    SPARK_Pragma                        (Node40)
     --    Original_Protected_Subprogram       (Node41)
     --    Body_Needed_For_SAL                 (Flag40)
*************** package Einfo is
*** 6344,6357 ****
--- 6471,6487 ----
     --    Has_Master_Entity                   (Flag21)
     --    Has_Nested_Block_With_Handler       (Flag101)
     --    Has_Nested_Subprogram               (Flag282)
+    --    Ignore_SPARK_Mode_Pragmas           (Flag301)
     --    Is_Abstract_Subprogram              (Flag19)   (non-generic case only)
     --    Is_Asynchronous                     (Flag81)
     --    Is_Called                           (Flag102)  (non-generic case only)
     --    Is_Constructor                      (Flag76)
     --    Is_DIC_Procedure                    (Flag132)  (non-generic case only)
+    --    Is_Elaboration_Checks_OK_Id         (Flag148)
     --    Is_Eliminated                       (Flag124)
     --    Is_Generic_Actual_Subprogram        (Flag274)  (non-generic case only)
     --    Is_Hidden_Non_Overridden_Subpgm     (Flag2)    (non-generic case only)
+    --    Is_Initial_Condition_Procedure      (Flag302)  (non-generic case only)
     --    Is_Inlined_Always                   (Flag1)    (non-generic case only)
     --    Is_Instantiated                     (Flag126)  (generic case only)
     --    Is_Interrupt_Handler                (Flag89)
*************** package Einfo is
*** 6383,6388 ****
--- 6513,6519 ----
  
     --  E_Protected_Body
     --    SPARK_Pragma                        (Node40)
+    --    Ignore_SPARK_Mode_Pragmas           (Flag301)
     --    SPARK_Pragma_Inherited              (Flag265)
     --    (any others??? First/Last Entity, Scope_Depth???)
  
*************** package Einfo is
*** 6402,6414 ****
     --    Anonymous_Object                    (Node30)
     --    Contract                            (Node34)
     --    Entry_Max_Queue_Lengths_Array       (Node35)
-    --    SPARK_Pragma                        (Node40)
     --    SPARK_Aux_Pragma                    (Node41)
!    --    Sec_Stack_Needed_For_Return         (Flag167)  ???
     --    SPARK_Aux_Pragma_Inherited          (Flag266)
-    --    SPARK_Pragma_Inherited              (Flag265)
     --    Uses_Lock_Free                      (Flag188)
-    --    Uses_Sec_Stack                      (Flag95)   ???
     --    First_Component                     (synth)
     --    First_Component_Or_Discriminant     (synth)
     --    Has_Entries                         (synth)
--- 6533,6542 ----
     --    Anonymous_Object                    (Node30)
     --    Contract                            (Node34)
     --    Entry_Max_Queue_Lengths_Array       (Node35)
     --    SPARK_Aux_Pragma                    (Node41)
!    --    Ignore_SPARK_Mode_Pragmas           (Flag301)
     --    SPARK_Aux_Pragma_Inherited          (Flag266)
     --    Uses_Lock_Free                      (Flag188)
     --    First_Component                     (synth)
     --    First_Component_Or_Discriminant     (synth)
     --    Has_Entries                         (synth)
*************** package Einfo is
*** 6432,6451 ****
     --    Interfaces                          (Elist25)
     --    Dispatch_Table_Wrappers             (Elist26)  (base type only)
     --    Underlying_Record_View              (Node28)   (base type only)
     --    Component_Alignment                 (special)  (base type only)
     --    C_Pass_By_Copy                      (Flag125)  (base type only)
     --    Has_Dispatch_Table                  (Flag220)  (base tagged type only)
     --    Has_Pragma_Pack                     (Flag121)  (impl base type only)
     --    Has_Private_Ancestor                (Flag151)
     --    Has_Record_Rep_Clause               (Flag65)   (base type only)
     --    Has_Static_Discriminants            (Flag211)  (subtype only)
     --    Is_Class_Wide_Equivalent_Type       (Flag35)
     --    Is_Concurrent_Record_Type           (Flag20)
     --    Is_Constrained                      (Flag12)
!    --    Is_Controlled                       (Flag42)   (base type only)
     --    Is_Interface                        (Flag186)
     --    Is_Limited_Interface                (Flag197)
!    --    OK_To_Reorder_Components            (Flag239)  (base type only)
     --    Reverse_Bit_Order                   (Flag164)  (base type only)
     --    Reverse_Storage_Order               (Flag93)   (base type only)
     --    SSO_Set_High_By_Default             (Flag273)  (base type only)
--- 6560,6581 ----
     --    Interfaces                          (Elist25)
     --    Dispatch_Table_Wrappers             (Elist26)  (base type only)
     --    Underlying_Record_View              (Node28)   (base type only)
+    --    Access_Disp_Table_Elab_Flag         (Node30)   (base type only)
     --    Component_Alignment                 (special)  (base type only)
     --    C_Pass_By_Copy                      (Flag125)  (base type only)
     --    Has_Dispatch_Table                  (Flag220)  (base tagged type only)
     --    Has_Pragma_Pack                     (Flag121)  (impl base type only)
     --    Has_Private_Ancestor                (Flag151)
+    --    Has_Private_Extension               (Flag300)
     --    Has_Record_Rep_Clause               (Flag65)   (base type only)
     --    Has_Static_Discriminants            (Flag211)  (subtype only)
     --    Is_Class_Wide_Equivalent_Type       (Flag35)
     --    Is_Concurrent_Record_Type           (Flag20)
     --    Is_Constrained                      (Flag12)
!    --    Is_Controlled_Active                (Flag42)   (base type only)
     --    Is_Interface                        (Flag186)
     --    Is_Limited_Interface                (Flag197)
!    --    No_Reordering                       (Flag239)  (base type only)
     --    Reverse_Bit_Order                   (Flag164)  (base type only)
     --    Reverse_Storage_Order               (Flag93)   (base type only)
     --    SSO_Set_High_By_Default             (Flag273)  (base type only)
*************** package Einfo is
*** 6467,6479 ****
     --    Interfaces                          (Elist25)
     --    Has_Completion                      (Flag26)
     --    Has_Private_Ancestor                (Flag151)
     --    Has_Record_Rep_Clause               (Flag65)   (base type only)
     --    Is_Concurrent_Record_Type           (Flag20)
     --    Is_Constrained                      (Flag12)
!    --    Is_Controlled                       (Flag42)   (base type only)
     --    Is_Interface                        (Flag186)
     --    Is_Limited_Interface                (Flag197)
!    --    OK_To_Reorder_Components            (Flag239)  (base type only)
     --    Reverse_Bit_Order                   (Flag164)  (base type only)
     --    Reverse_Storage_Order               (Flag93)   (base type only)
     --    SSO_Set_High_By_Default             (Flag273)  (base type only)
--- 6597,6610 ----
     --    Interfaces                          (Elist25)
     --    Has_Completion                      (Flag26)
     --    Has_Private_Ancestor                (Flag151)
+    --    Has_Private_Extension               (Flag300)
     --    Has_Record_Rep_Clause               (Flag65)   (base type only)
     --    Is_Concurrent_Record_Type           (Flag20)
     --    Is_Constrained                      (Flag12)
!    --    Is_Controlled_Active                (Flag42)   (base type only)
     --    Is_Interface                        (Flag186)
     --    Is_Limited_Interface                (Flag197)
!    --    No_Reordering                       (Flag239)  (base type only)
     --    Reverse_Bit_Order                   (Flag164)  (base type only)
     --    Reverse_Storage_Order               (Flag93)   (base type only)
     --    SSO_Set_High_By_Default             (Flag273)  (base type only)
*************** package Einfo is
*** 6514,6519 ****
--- 6645,6651 ----
     --    Extra_Formals                       (Node28)
     --    Anonymous_Masters                   (Elist29)
     --    Contract                            (Node34)
+    --    Nested_Scenarios                    (Elist36)
     --    SPARK_Pragma                        (Node40)
     --    Contains_Ignored_Ghost_Code         (Flag279)
     --    SPARK_Pragma_Inherited              (Flag265)
*************** package Einfo is
*** 6532,6537 ****
--- 6664,6670 ----
     --  E_Task_Body
     --    Contract                            (Node34)
     --    SPARK_Pragma                        (Node40)
+    --    Ignore_SPARK_Mode_Pragmas           (Flag301)
     --    SPARK_Pragma_Inherited              (Flag265)
     --    (any others??? First/Last Entity, Scope_Depth???)
  
*************** package Einfo is
*** 6550,6564 ****
     --    Relative_Deadline_Variable          (Node28)   (base type only)
     --    Anonymous_Object                    (Node30)
     --    Contract                            (Node34)
-    --    SPARK_Pragma                        (Node40)
     --    SPARK_Aux_Pragma                    (Node41)
     --    Delay_Cleanups                      (Flag114)
     --    Has_Master_Entity                   (Flag21)
     --    Has_Storage_Size_Clause             (Flag23)   (base type only)
!    --    Sec_Stack_Needed_For_Return         (Flag167)  ???
     --    SPARK_Aux_Pragma_Inherited          (Flag266)
-    --    SPARK_Pragma_Inherited              (Flag265)
-    --    Uses_Sec_Stack                      (Flag95)   ???
     --    First_Component                     (synth)
     --    First_Component_Or_Discriminant     (synth)
     --    Has_Entries                         (synth)
--- 6683,6695 ----
     --    Relative_Deadline_Variable          (Node28)   (base type only)
     --    Anonymous_Object                    (Node30)
     --    Contract                            (Node34)
     --    SPARK_Aux_Pragma                    (Node41)
     --    Delay_Cleanups                      (Flag114)
     --    Has_Master_Entity                   (Flag21)
     --    Has_Storage_Size_Clause             (Flag23)   (base type only)
!    --    Ignore_SPARK_Mode_Pragmas           (Flag301)
!    --    Is_Elaboration_Checks_OK_Id         (Flag148)
     --    SPARK_Aux_Pragma_Inherited          (Flag266)
     --    First_Component                     (synth)
     --    First_Component_Or_Discriminant     (synth)
     --    Has_Entries                         (synth)
*************** package Einfo is
*** 6595,6600 ****
--- 6726,6732 ----
     --    Linker_Section_Pragma               (Node33)
     --    Contract                            (Node34)
     --    Anonymous_Designated_Type           (Node35)
+    --    Validated_Object                    (Node36)
     --    SPARK_Pragma                        (Node40)
     --    Has_Alignment_Clause                (Flag46)
     --    Has_Atomic_Components               (Flag86)
*************** package Einfo is
*** 6604,6609 ****
--- 6736,6742 ----
     --    Has_Size_Clause                     (Flag29)
     --    Has_Volatile_Components             (Flag87)
     --    Is_Atomic                           (Flag85)
+    --    Is_Elaboration_Checks_OK_Id         (Flag148)
     --    Is_Eliminated                       (Flag124)
     --    Is_Finalized_Transient              (Flag252)
     --    Is_Ignored_Transient                (Flag295)
*************** package Einfo is
*** 6863,6868 ****
--- 6996,7002 ----
     function Abstract_States                     (Id : E) return L;
     function Accept_Address                      (Id : E) return L;
     function Access_Disp_Table                   (Id : E) return L;
+    function Access_Disp_Table_Elab_Flag         (Id : E) return E;
     function Activation_Record_Component         (Id : E) return E;
     function Actual_Subtype                      (Id : E) return E;
     function Address_Taken                       (Id : E) return B;
*************** package Einfo is
*** 6880,6892 ****
     function Block_Node                          (Id : E) return N;
     function Body_Entity                         (Id : E) return E;
     function Body_Needed_For_SAL                 (Id : E) return B;
     function Body_References                     (Id : E) return L;
     function C_Pass_By_Copy                      (Id : E) return B;
     function Can_Never_Be_Null                   (Id : E) return B;
     function Can_Use_Internal_Rep                (Id : E) return B;
     function Checks_May_Be_Suppressed            (Id : E) return B;
!    function Class_Wide_Postconds                (Id : E) return S;
!    function Class_Wide_Preconds                 (Id : E) return S;
     function Class_Wide_Type                     (Id : E) return E;
     function Cloned_Subtype                      (Id : E) return E;
     function Component_Alignment                 (Id : E) return C;
--- 7014,7026 ----
     function Block_Node                          (Id : E) return N;
     function Body_Entity                         (Id : E) return E;
     function Body_Needed_For_SAL                 (Id : E) return B;
+    function Body_Needed_For_Inlining            (Id : E) return B;
     function Body_References                     (Id : E) return L;
     function C_Pass_By_Copy                      (Id : E) return B;
     function Can_Never_Be_Null                   (Id : E) return B;
     function Can_Use_Internal_Rep                (Id : E) return B;
     function Checks_May_Be_Suppressed            (Id : E) return B;
!    function Class_Wide_Clone                     (Id : E) return E;
     function Class_Wide_Type                     (Id : E) return E;
     function Cloned_Subtype                      (Id : E) return E;
     function Component_Alignment                 (Id : E) return C;
*************** package Einfo is
*** 6903,6908 ****
--- 7037,7043 ----
     function Corresponding_Function              (Id : E) return E;
     function Corresponding_Procedure             (Id : E) return E;
     function Corresponding_Protected_Entry       (Id : E) return E;
+    function Corresponding_Record_Component      (Id : E) return E;
     function Corresponding_Record_Type           (Id : E) return E;
     function Corresponding_Remote_Type           (Id : E) return E;
     function CR_Discriminant                     (Id : E) return E;
*************** package Einfo is
*** 7047,7052 ****
--- 7182,7188 ----
     function Has_Primitive_Operations            (Id : E) return B;
     function Has_Private_Ancestor                (Id : E) return B;
     function Has_Private_Declaration             (Id : E) return B;
+    function Has_Private_Extension               (Id : E) return B;
     function Has_Protected                       (Id : E) return B;
     function Has_Qualified_Name                  (Id : E) return B;
     function Has_RACW                            (Id : E) return B;
*************** package Einfo is
*** 7075,7080 ****
--- 7211,7217 ----
     function Has_Xref_Entry                      (Id : E) return B;
     function Hiding_Loop_Variable                (Id : E) return E;
     function Homonym                             (Id : E) return E;
+    function Ignore_SPARK_Mode_Pragmas           (Id : E) return B;
     function Import_Pragma                       (Id : E) return E;
     function Incomplete_Actuals                  (Id : E) return L;
     function In_Package_Body                     (Id : E) return B;
*************** package Einfo is
*** 7100,7105 ****
--- 7237,7243 ----
     function Is_Character_Type                   (Id : E) return B;
     function Is_Checked_Ghost_Entity             (Id : E) return B;
     function Is_Child_Unit                       (Id : E) return B;
+    function Is_Class_Wide_Clone                 (Id : E) return B;
     function Is_Class_Wide_Equivalent_Type       (Id : E) return B;
     function Is_Compilation_Unit                 (Id : E) return B;
     function Is_Completely_Hidden                (Id : E) return B;
*************** package Einfo is
*** 7107,7113 ****
     function Is_Constr_Subt_For_UN_Aliased       (Id : E) return B;
     function Is_Constrained                      (Id : E) return B;
     function Is_Constructor                      (Id : E) return B;
!    function Is_Controlled                       (Id : E) return B;
     function Is_Controlling_Formal               (Id : E) return B;
     function Is_CPP_Class                        (Id : E) return B;
     function Is_Descendant_Of_Address            (Id : E) return B;
--- 7245,7251 ----
     function Is_Constr_Subt_For_UN_Aliased       (Id : E) return B;
     function Is_Constrained                      (Id : E) return B;
     function Is_Constructor                      (Id : E) return B;
!    function Is_Controlled_Active                (Id : E) return B;
     function Is_Controlling_Formal               (Id : E) return B;
     function Is_CPP_Class                        (Id : E) return B;
     function Is_Descendant_Of_Address            (Id : E) return B;
*************** package Einfo is
*** 7116,7121 ****
--- 7254,7260 ----
     function Is_Discriminant_Check_Function      (Id : E) return B;
     function Is_Dispatch_Table_Entity            (Id : E) return B;
     function Is_Dispatching_Operation            (Id : E) return B;
+    function Is_Elaboration_Checks_OK_Id         (Id : E) return B;
     function Is_Eliminated                       (Id : E) return B;
     function Is_Entry_Formal                     (Id : E) return B;
     function Is_Entry_Wrapper                    (Id : E) return B;
*************** package Einfo is
*** 7135,7140 ****
--- 7274,7280 ----
     function Is_Implementation_Defined           (Id : E) return B;
     function Is_Imported                         (Id : E) return B;
     function Is_Independent                      (Id : E) return B;
+    function Is_Initial_Condition_Procedure      (Id : E) return B;
     function Is_Inlined                          (Id : E) return B;
     function Is_Inlined_Always                   (Id : E) return B;
     function Is_Instantiated                     (Id : E) return B;
*************** package Einfo is
*** 7220,7230 ****
--- 7360,7372 ----
     function Must_Have_Preelab_Init              (Id : E) return B;
     function Needs_Debug_Info                    (Id : E) return B;
     function Needs_No_Actuals                    (Id : E) return B;
+    function Nested_Scenarios                    (Id : E) return L;
     function Never_Set_In_Source                 (Id : E) return B;
     function Next_Inlined_Subprogram             (Id : E) return E;
     function No_Dynamic_Predicate_On_Actual      (Id : E) return B;
     function No_Pool_Assigned                    (Id : E) return B;
     function No_Predicate_On_Actual              (Id : E) return B;
+    function No_Reordering                       (Id : E) return B;
     function No_Return                           (Id : E) return B;
     function No_Strict_Aliasing                  (Id : E) return B;
     function No_Tagged_Streams_Pragma            (Id : E) return N;
*************** package Einfo is
*** 7235,7241 ****
     function Normalized_Position                 (Id : E) return U;
     function Normalized_Position_Max             (Id : E) return U;
     function OK_To_Rename                        (Id : E) return B;
-    function OK_To_Reorder_Components            (Id : E) return B;
     function Optimize_Alignment_Space            (Id : E) return B;
     function Optimize_Alignment_Time             (Id : E) return B;
     function Original_Access_Type                (Id : E) return E;
--- 7377,7382 ----
*************** package Einfo is
*** 7259,7266 ****
--- 7400,7409 ----
     function Private_View                        (Id : E) return N;
     function Protected_Body_Subprogram           (Id : E) return E;
     function Protected_Formal                    (Id : E) return E;
+    function Protected_Subprogram                (Id : E) return N;
     function Protection_Object                   (Id : E) return E;
     function Reachable                           (Id : E) return B;
+    function Receiving_Entry                     (Id : E) return E;
     function Referenced                          (Id : E) return B;
     function Referenced_As_LHS                   (Id : E) return B;
     function Referenced_As_Out_Parameter         (Id : E) return B;
*************** package Einfo is
*** 7327,7332 ****
--- 7470,7476 ----
     function Used_As_Generic_Actual              (Id : E) return B;
     function Uses_Lock_Free                      (Id : E) return B;
     function Uses_Sec_Stack                      (Id : E) return B;
+    function Validated_Object                    (Id : E) return N;
     function Warnings_Off                        (Id : E) return B;
     function Warnings_Off_Used                   (Id : E) return B;
     function Warnings_Off_Used_Unmodified        (Id : E) return B;
*************** package Einfo is
*** 7349,7354 ****
--- 7493,7499 ----
     function Is_Access_Protected_Subprogram_Type (Id : E) return B;
     function Is_Access_Subprogram_Type           (Id : E) return B;
     function Is_Aggregate_Type                   (Id : E) return B;
+    function Is_Anonymous_Access_Type            (Id : E) return B;
     function Is_Array_Type                       (Id : E) return B;
     function Is_Assignable                       (Id : E) return B;
     function Is_Class_Wide_Type                  (Id : E) return B;
*************** package Einfo is
*** 7391,7396 ****
--- 7536,7542 ----
     function Is_Scalar_Type                      (Id : E) return B;
     function Is_Signed_Integer_Type              (Id : E) return B;
     function Is_Subprogram                       (Id : E) return B;
+    function Is_Subprogram_Or_Entry              (Id : E) return B;
     function Is_Subprogram_Or_Generic_Subprogram (Id : E) return B;
     function Is_Task_Type                        (Id : E) return B;
     function Is_Type                             (Id : E) return B;
*************** package Einfo is
*** 7424,7430 ****
     function Is_Base_Type                        (Id : E) return B;
     function Is_Boolean_Type                     (Id : E) return B;
     function Is_Constant_Object                  (Id : E) return B;
!    function Is_Controlled_Active                (Id : E) return B;
     function Is_Discriminal                      (Id : E) return B;
     function Is_Dynamic_Scope                    (Id : E) return B;
     function Is_External_State                   (Id : E) return B;
--- 7570,7576 ----
     function Is_Base_Type                        (Id : E) return B;
     function Is_Boolean_Type                     (Id : E) return B;
     function Is_Constant_Object                  (Id : E) return B;
!    function Is_Controlled                       (Id : E) return B;
     function Is_Discriminal                      (Id : E) return B;
     function Is_Dynamic_Scope                    (Id : E) return B;
     function Is_External_State                   (Id : E) return B;
*************** package Einfo is
*** 7547,7552 ****
--- 7693,7699 ----
     procedure Set_Abstract_States                 (Id : E; V : L);
     procedure Set_Accept_Address                  (Id : E; V : L);
     procedure Set_Access_Disp_Table               (Id : E; V : L);
+    procedure Set_Access_Disp_Table_Elab_Flag     (Id : E; V : E);
     procedure Set_Activation_Record_Component     (Id : E; V : E);
     procedure Set_Actual_Subtype                  (Id : E; V : E);
     procedure Set_Address_Taken                   (Id : E; V : B := True);
*************** package Einfo is
*** 7563,7576 ****
     procedure Set_BIP_Initialization_Call         (Id : E; V : N);
     procedure Set_Block_Node                      (Id : E; V : N);
     procedure Set_Body_Entity                     (Id : E; V : E);
     procedure Set_Body_Needed_For_SAL             (Id : E; V : B := True);
     procedure Set_Body_References                 (Id : E; V : L);
     procedure Set_C_Pass_By_Copy                  (Id : E; V : B := True);
     procedure Set_Can_Never_Be_Null               (Id : E; V : B := True);
     procedure Set_Can_Use_Internal_Rep            (Id : E; V : B := True);
     procedure Set_Checks_May_Be_Suppressed        (Id : E; V : B := True);
!    procedure Set_Class_Wide_Postconds            (Id : E; V : S);
!    procedure Set_Class_Wide_Preconds             (Id : E; V : S);
     procedure Set_Class_Wide_Type                 (Id : E; V : E);
     procedure Set_Cloned_Subtype                  (Id : E; V : E);
     procedure Set_Component_Alignment             (Id : E; V : C);
--- 7710,7723 ----
     procedure Set_BIP_Initialization_Call         (Id : E; V : N);
     procedure Set_Block_Node                      (Id : E; V : N);
     procedure Set_Body_Entity                     (Id : E; V : E);
+    procedure Set_Body_Needed_For_Inlining        (Id : E; V : B := True);
     procedure Set_Body_Needed_For_SAL             (Id : E; V : B := True);
     procedure Set_Body_References                 (Id : E; V : L);
     procedure Set_C_Pass_By_Copy                  (Id : E; V : B := True);
     procedure Set_Can_Never_Be_Null               (Id : E; V : B := True);
     procedure Set_Can_Use_Internal_Rep            (Id : E; V : B := True);
     procedure Set_Checks_May_Be_Suppressed        (Id : E; V : B := True);
!    procedure Set_Class_Wide_Clone                (Id : E; V : E);
     procedure Set_Class_Wide_Type                 (Id : E; V : E);
     procedure Set_Cloned_Subtype                  (Id : E; V : E);
     procedure Set_Component_Alignment             (Id : E; V : C);
*************** package Einfo is
*** 7587,7592 ****
--- 7734,7740 ----
     procedure Set_Corresponding_Function          (Id : E; V : E);
     procedure Set_Corresponding_Procedure         (Id : E; V : E);
     procedure Set_Corresponding_Protected_Entry   (Id : E; V : E);
+    procedure Set_Corresponding_Record_Component  (Id : E; V : E);
     procedure Set_Corresponding_Record_Type       (Id : E; V : E);
     procedure Set_Corresponding_Remote_Type       (Id : E; V : E);
     procedure Set_CR_Discriminant                 (Id : E; V : E);
*************** package Einfo is
*** 7728,7733 ****
--- 7876,7882 ----
     procedure Set_Has_Primitive_Operations        (Id : E; V : B := True);
     procedure Set_Has_Private_Ancestor            (Id : E; V : B := True);
     procedure Set_Has_Private_Declaration         (Id : E; V : B := True);
+    procedure Set_Has_Private_Extension           (Id : E; V : B := True);
     procedure Set_Has_Protected                   (Id : E; V : B := True);
     procedure Set_Has_Qualified_Name              (Id : E; V : B := True);
     procedure Set_Has_RACW                        (Id : E; V : B := True);
*************** package Einfo is
*** 7756,7761 ****
--- 7905,7911 ----
     procedure Set_Has_Xref_Entry                  (Id : E; V : B := True);
     procedure Set_Hiding_Loop_Variable            (Id : E; V : E);
     procedure Set_Homonym                         (Id : E; V : E);
+    procedure Set_Ignore_SPARK_Mode_Pragmas       (Id : E; V : B := True);
     procedure Set_Import_Pragma                   (Id : E; V : E);
     procedure Set_Incomplete_Actuals              (Id : E; V : L);
     procedure Set_In_Package_Body                 (Id : E; V : B := True);
*************** package Einfo is
*** 7780,7785 ****
--- 7930,7936 ----
     procedure Set_Is_Character_Type               (Id : E; V : B := True);
     procedure Set_Is_Checked_Ghost_Entity         (Id : E; V : B := True);
     procedure Set_Is_Child_Unit                   (Id : E; V : B := True);
+    procedure Set_Is_Class_Wide_Clone             (Id : E; V : B := True);
     procedure Set_Is_Class_Wide_Equivalent_Type   (Id : E; V : B := True);
     procedure Set_Is_Compilation_Unit             (Id : E; V : B := True);
     procedure Set_Is_Completely_Hidden            (Id : E; V : B := True);
*************** package Einfo is
*** 7788,7794 ****
     procedure Set_Is_Constr_Subt_For_UN_Aliased   (Id : E; V : B := True);
     procedure Set_Is_Constrained                  (Id : E; V : B := True);
     procedure Set_Is_Constructor                  (Id : E; V : B := True);
!    procedure Set_Is_Controlled                   (Id : E; V : B := True);
     procedure Set_Is_Controlling_Formal           (Id : E; V : B := True);
     procedure Set_Is_CPP_Class                    (Id : E; V : B := True);
     procedure Set_Is_Descendant_Of_Address        (Id : E; V : B := True);
--- 7939,7945 ----
     procedure Set_Is_Constr_Subt_For_UN_Aliased   (Id : E; V : B := True);
     procedure Set_Is_Constrained                  (Id : E; V : B := True);
     procedure Set_Is_Constructor                  (Id : E; V : B := True);
!    procedure Set_Is_Controlled_Active            (Id : E; V : B := True);
     procedure Set_Is_Controlling_Formal           (Id : E; V : B := True);
     procedure Set_Is_CPP_Class                    (Id : E; V : B := True);
     procedure Set_Is_Descendant_Of_Address        (Id : E; V : B := True);
*************** package Einfo is
*** 7797,7802 ****
--- 7948,7954 ----
     procedure Set_Is_Discriminant_Check_Function  (Id : E; V : B := True);
     procedure Set_Is_Dispatch_Table_Entity        (Id : E; V : B := True);
     procedure Set_Is_Dispatching_Operation        (Id : E; V : B := True);
+    procedure Set_Is_Elaboration_Checks_OK_Id     (Id : E; V : B := True);
     procedure Set_Is_Eliminated                   (Id : E; V : B := True);
     procedure Set_Is_Entry_Formal                 (Id : E; V : B := True);
     procedure Set_Is_Entry_Wrapper                (Id : E; V : B := True);
*************** package Einfo is
*** 7820,7825 ****
--- 7972,7978 ----
     procedure Set_Is_Implementation_Defined       (Id : E; V : B := True);
     procedure Set_Is_Imported                     (Id : E; V : B := True);
     procedure Set_Is_Independent                  (Id : E; V : B := True);
+    procedure Set_Is_Initial_Condition_Procedure  (Id : E; V : B := True);
     procedure Set_Is_Inlined                      (Id : E; V : B := True);
     procedure Set_Is_Inlined_Always               (Id : E; V : B := True);
     procedure Set_Is_Instantiated                 (Id : E; V : B := True);
*************** package Einfo is
*** 7906,7916 ****
--- 8059,8071 ----
     procedure Set_Must_Have_Preelab_Init          (Id : E; V : B := True);
     procedure Set_Needs_Debug_Info                (Id : E; V : B := True);
     procedure Set_Needs_No_Actuals                (Id : E; V : B := True);
+    procedure Set_Nested_Scenarios                (Id : E; V : L);
     procedure Set_Never_Set_In_Source             (Id : E; V : B := True);
     procedure Set_Next_Inlined_Subprogram         (Id : E; V : E);
     procedure Set_No_Dynamic_Predicate_On_Actual  (Id : E; V : B := True);
     procedure Set_No_Pool_Assigned                (Id : E; V : B := True);
     procedure Set_No_Predicate_On_Actual          (Id : E; V : B := True);
+    procedure Set_No_Reordering                   (Id : E; V : B := True);
     procedure Set_No_Return                       (Id : E; V : B := True);
     procedure Set_No_Strict_Aliasing              (Id : E; V : B := True);
     procedure Set_No_Tagged_Streams_Pragma        (Id : E; V : N);
*************** package Einfo is
*** 7921,7927 ****
     procedure Set_Normalized_Position             (Id : E; V : U);
     procedure Set_Normalized_Position_Max         (Id : E; V : U);
     procedure Set_OK_To_Rename                    (Id : E; V : B := True);
-    procedure Set_OK_To_Reorder_Components        (Id : E; V : B := True);
     procedure Set_Optimize_Alignment_Space        (Id : E; V : B := True);
     procedure Set_Optimize_Alignment_Time         (Id : E; V : B := True);
     procedure Set_Original_Access_Type            (Id : E; V : E);
--- 8076,8081 ----
*************** package Einfo is
*** 7944,7951 ****
--- 8098,8107 ----
     procedure Set_Private_View                    (Id : E; V : N);
     procedure Set_Protected_Body_Subprogram       (Id : E; V : E);
     procedure Set_Protected_Formal                (Id : E; V : E);
+    procedure Set_Protected_Subprogram            (Id : E; V : N);
     procedure Set_Protection_Object               (Id : E; V : E);
     procedure Set_Reachable                       (Id : E; V : B := True);
+    procedure Set_Receiving_Entry                 (Id : E; V : E);
     procedure Set_Referenced                      (Id : E; V : B := True);
     procedure Set_Referenced_As_LHS               (Id : E; V : B := True);
     procedure Set_Referenced_As_Out_Parameter     (Id : E; V : B := True);
*************** package Einfo is
*** 8012,8017 ****
--- 8168,8174 ----
     procedure Set_Used_As_Generic_Actual          (Id : E; V : B := True);
     procedure Set_Uses_Lock_Free                  (Id : E; V : B := True);
     procedure Set_Uses_Sec_Stack                  (Id : E; V : B := True);
+    procedure Set_Validated_Object                (Id : E; V : N);
     procedure Set_Warnings_Off                    (Id : E; V : B := True);
     procedure Set_Warnings_Off_Used               (Id : E; V : B := True);
     procedure Set_Warnings_Off_Used_Unmodified    (Id : E; V : B := True);
*************** package Einfo is
*** 8235,8240 ****
--- 8392,8403 ----
     --    Test_Case
     --    Volatile_Function
  
+    function Get_Class_Wide_Pragma
+      (E  : Entity_Id;
+       Id : Pragma_Id) return Node_Id;
+    --  Examine Rep_Item chain to locate a classwide pre- or postcondition of a
+    --  primitive operation. Returns Empty if not present.
+ 
     function Get_Record_Representation_Clause (E : Entity_Id) return Node_Id;
     --  Searches the Rep_Item chain for a given entity E, for a record
     --  representation clause, and if found, returns it. Returns Empty
*************** package Einfo is
*** 8349,8354 ****
--- 8512,8518 ----
     pragma Inline (Abstract_States);
     pragma Inline (Accept_Address);
     pragma Inline (Access_Disp_Table);
+    pragma Inline (Access_Disp_Table_Elab_Flag);
     pragma Inline (Activation_Record_Component);
     pragma Inline (Actual_Subtype);
     pragma Inline (Address_Taken);
*************** package Einfo is
*** 8365,8378 ****
     pragma Inline (BIP_Initialization_Call);
     pragma Inline (Block_Node);
     pragma Inline (Body_Entity);
     pragma Inline (Body_Needed_For_SAL);
     pragma Inline (Body_References);
     pragma Inline (C_Pass_By_Copy);
     pragma Inline (Can_Never_Be_Null);
     pragma Inline (Can_Use_Internal_Rep);
     pragma Inline (Checks_May_Be_Suppressed);
!    pragma Inline (Class_Wide_Preconds);
!    pragma Inline (Class_Wide_Postconds);
     pragma Inline (Class_Wide_Type);
     pragma Inline (Cloned_Subtype);
     pragma Inline (Component_Bit_Offset);
--- 8529,8542 ----
     pragma Inline (BIP_Initialization_Call);
     pragma Inline (Block_Node);
     pragma Inline (Body_Entity);
+    pragma Inline (Body_Needed_For_Inlining);
     pragma Inline (Body_Needed_For_SAL);
     pragma Inline (Body_References);
     pragma Inline (C_Pass_By_Copy);
     pragma Inline (Can_Never_Be_Null);
     pragma Inline (Can_Use_Internal_Rep);
     pragma Inline (Checks_May_Be_Suppressed);
!    pragma Inline (Class_Wide_Clone);
     pragma Inline (Class_Wide_Type);
     pragma Inline (Cloned_Subtype);
     pragma Inline (Component_Bit_Offset);
*************** package Einfo is
*** 8386,8391 ****
--- 8550,8556 ----
     pragma Inline (Corresponding_Discriminant);
     pragma Inline (Corresponding_Equality);
     pragma Inline (Corresponding_Protected_Entry);
+    pragma Inline (Corresponding_Record_Component);
     pragma Inline (Corresponding_Record_Type);
     pragma Inline (Corresponding_Remote_Type);
     pragma Inline (CR_Discriminant);
*************** package Einfo is
*** 8524,8529 ****
--- 8689,8695 ----
     pragma Inline (Has_Primitive_Operations);
     pragma Inline (Has_Private_Ancestor);
     pragma Inline (Has_Private_Declaration);
+    pragma Inline (Has_Private_Extension);
     pragma Inline (Has_Protected);
     pragma Inline (Has_Qualified_Name);
     pragma Inline (Has_RACW);
*************** package Einfo is
*** 8552,8557 ****
--- 8718,8724 ----
     pragma Inline (Has_Xref_Entry);
     pragma Inline (Hiding_Loop_Variable);
     pragma Inline (Homonym);
+    pragma Inline (Ignore_SPARK_Mode_Pragmas);
     pragma Inline (Import_Pragma);
     pragma Inline (Incomplete_Actuals);
     pragma Inline (In_Package_Body);
*************** package Einfo is
*** 8582,8587 ****
--- 8749,8755 ----
     pragma Inline (Is_Character_Type);
     pragma Inline (Is_Checked_Ghost_Entity);
     pragma Inline (Is_Child_Unit);
+    pragma Inline (Is_Class_Wide_Clone);
     pragma Inline (Is_Class_Wide_Equivalent_Type);
     pragma Inline (Is_Class_Wide_Type);
     pragma Inline (Is_Compilation_Unit);
*************** package Einfo is
*** 8594,8600 ****
     pragma Inline (Is_Constr_Subt_For_UN_Aliased);
     pragma Inline (Is_Constrained);
     pragma Inline (Is_Constructor);
!    pragma Inline (Is_Controlled);
     pragma Inline (Is_Controlling_Formal);
     pragma Inline (Is_CPP_Class);
     pragma Inline (Is_Decimal_Fixed_Point_Type);
--- 8762,8768 ----
     pragma Inline (Is_Constr_Subt_For_UN_Aliased);
     pragma Inline (Is_Constrained);
     pragma Inline (Is_Constructor);
!    pragma Inline (Is_Controlled_Active);
     pragma Inline (Is_Controlling_Formal);
     pragma Inline (Is_CPP_Class);
     pragma Inline (Is_Decimal_Fixed_Point_Type);
*************** package Einfo is
*** 8607,8612 ****
--- 8775,8781 ----
     pragma Inline (Is_Discriminant_Check_Function);
     pragma Inline (Is_Dispatch_Table_Entity);
     pragma Inline (Is_Dispatching_Operation);
+    pragma Inline (Is_Elaboration_Checks_OK_Id);
     pragma Inline (Is_Elementary_Type);
     pragma Inline (Is_Eliminated);
     pragma Inline (Is_Entry);
*************** package Einfo is
*** 8642,8647 ****
--- 8811,8817 ----
     pragma Inline (Is_Incomplete_Or_Private_Type);
     pragma Inline (Is_Incomplete_Type);
     pragma Inline (Is_Independent);
+    pragma Inline (Is_Initial_Condition_Procedure);
     pragma Inline (Is_Inlined);
     pragma Inline (Is_Inlined_Always);
     pragma Inline (Is_Instantiated);
*************** package Einfo is
*** 8743,8748 ****
--- 8913,8919 ----
     pragma Inline (Must_Have_Preelab_Init);
     pragma Inline (Needs_Debug_Info);
     pragma Inline (Needs_No_Actuals);
+    pragma Inline (Nested_Scenarios);
     pragma Inline (Never_Set_In_Source);
     pragma Inline (Next_Index);
     pragma Inline (Next_Inlined_Subprogram);
*************** package Einfo is
*** 8750,8755 ****
--- 8921,8927 ----
     pragma Inline (No_Dynamic_Predicate_On_Actual);
     pragma Inline (No_Pool_Assigned);
     pragma Inline (No_Predicate_On_Actual);
+    pragma Inline (No_Reordering);
     pragma Inline (No_Return);
     pragma Inline (No_Strict_Aliasing);
     pragma Inline (No_Tagged_Streams_Pragma);
*************** package Einfo is
*** 8760,8766 ****
     pragma Inline (Normalized_Position);
     pragma Inline (Normalized_Position_Max);
     pragma Inline (OK_To_Rename);
-    pragma Inline (OK_To_Reorder_Components);
     pragma Inline (Optimize_Alignment_Space);
     pragma Inline (Optimize_Alignment_Time);
     pragma Inline (Original_Access_Type);
--- 8932,8937 ----
*************** package Einfo is
*** 8785,8792 ****
--- 8956,8965 ----
     pragma Inline (Private_View);
     pragma Inline (Protected_Body_Subprogram);
     pragma Inline (Protected_Formal);
+    pragma Inline (Protected_Subprogram);
     pragma Inline (Protection_Object);
     pragma Inline (Reachable);
+    pragma Inline (Receiving_Entry);
     pragma Inline (Referenced);
     pragma Inline (Referenced_As_LHS);
     pragma Inline (Referenced_As_Out_Parameter);
*************** package Einfo is
*** 8853,8858 ****
--- 9026,9032 ----
     pragma Inline (Used_As_Generic_Actual);
     pragma Inline (Uses_Lock_Free);
     pragma Inline (Uses_Sec_Stack);
+    pragma Inline (Validated_Object);
     pragma Inline (Warnings_Off);
     pragma Inline (Warnings_Off_Used);
     pragma Inline (Warnings_Off_Used_Unmodified);
*************** package Einfo is
*** 8870,8875 ****
--- 9044,9050 ----
     pragma Inline (Set_Abstract_States);
     pragma Inline (Set_Accept_Address);
     pragma Inline (Set_Access_Disp_Table);
+    pragma Inline (Set_Access_Disp_Table_Elab_Flag);
     pragma Inline (Set_Activation_Record_Component);
     pragma Inline (Set_Actual_Subtype);
     pragma Inline (Set_Address_Taken);
*************** package Einfo is
*** 8886,8899 ****
     pragma Inline (Set_BIP_Initialization_Call);
     pragma Inline (Set_Block_Node);
     pragma Inline (Set_Body_Entity);
     pragma Inline (Set_Body_Needed_For_SAL);
     pragma Inline (Set_Body_References);
     pragma Inline (Set_C_Pass_By_Copy);
     pragma Inline (Set_Can_Never_Be_Null);
     pragma Inline (Set_Can_Use_Internal_Rep);
     pragma Inline (Set_Checks_May_Be_Suppressed);
!    pragma Inline (Set_Class_Wide_Postconds);
!    pragma Inline (Set_Class_Wide_Preconds);
     pragma Inline (Set_Class_Wide_Type);
     pragma Inline (Set_Cloned_Subtype);
     pragma Inline (Set_Component_Bit_Offset);
--- 9061,9074 ----
     pragma Inline (Set_BIP_Initialization_Call);
     pragma Inline (Set_Block_Node);
     pragma Inline (Set_Body_Entity);
+    pragma Inline (Set_Body_Needed_For_Inlining);
     pragma Inline (Set_Body_Needed_For_SAL);
     pragma Inline (Set_Body_References);
     pragma Inline (Set_C_Pass_By_Copy);
     pragma Inline (Set_Can_Never_Be_Null);
     pragma Inline (Set_Can_Use_Internal_Rep);
     pragma Inline (Set_Checks_May_Be_Suppressed);
!    pragma Inline (Set_Class_Wide_Clone);
     pragma Inline (Set_Class_Wide_Type);
     pragma Inline (Set_Cloned_Subtype);
     pragma Inline (Set_Component_Bit_Offset);
*************** package Einfo is
*** 8907,8912 ****
--- 9082,9088 ----
     pragma Inline (Set_Corresponding_Discriminant);
     pragma Inline (Set_Corresponding_Equality);
     pragma Inline (Set_Corresponding_Protected_Entry);
+    pragma Inline (Set_Corresponding_Record_Component);
     pragma Inline (Set_Corresponding_Record_Type);
     pragma Inline (Set_Corresponding_Remote_Type);
     pragma Inline (Set_CR_Discriminant);
*************** package Einfo is
*** 9043,9048 ****
--- 9219,9225 ----
     pragma Inline (Set_Has_Primitive_Operations);
     pragma Inline (Set_Has_Private_Ancestor);
     pragma Inline (Set_Has_Private_Declaration);
+    pragma Inline (Set_Has_Private_Extension);
     pragma Inline (Set_Has_Protected);
     pragma Inline (Set_Has_Qualified_Name);
     pragma Inline (Set_Has_RACW);
*************** package Einfo is
*** 9071,9076 ****
--- 9248,9254 ----
     pragma Inline (Set_Has_Xref_Entry);
     pragma Inline (Set_Hiding_Loop_Variable);
     pragma Inline (Set_Homonym);
+    pragma Inline (Set_Ignore_SPARK_Mode_Pragmas);
     pragma Inline (Set_Import_Pragma);
     pragma Inline (Set_Incomplete_Actuals);
     pragma Inline (Set_In_Package_Body);
*************** package Einfo is
*** 9094,9099 ****
--- 9272,9278 ----
     pragma Inline (Set_Is_Character_Type);
     pragma Inline (Set_Is_Checked_Ghost_Entity);
     pragma Inline (Set_Is_Child_Unit);
+    pragma Inline (Set_Is_Class_Wide_Clone);
     pragma Inline (Set_Is_Class_Wide_Equivalent_Type);
     pragma Inline (Set_Is_Compilation_Unit);
     pragma Inline (Set_Is_Completely_Hidden);
*************** package Einfo is
*** 9102,9108 ****
     pragma Inline (Set_Is_Constr_Subt_For_UN_Aliased);
     pragma Inline (Set_Is_Constrained);
     pragma Inline (Set_Is_Constructor);
!    pragma Inline (Set_Is_Controlled);
     pragma Inline (Set_Is_Controlling_Formal);
     pragma Inline (Set_Is_CPP_Class);
     pragma Inline (Set_Is_Descendant_Of_Address);
--- 9281,9287 ----
     pragma Inline (Set_Is_Constr_Subt_For_UN_Aliased);
     pragma Inline (Set_Is_Constrained);
     pragma Inline (Set_Is_Constructor);
!    pragma Inline (Set_Is_Controlled_Active);
     pragma Inline (Set_Is_Controlling_Formal);
     pragma Inline (Set_Is_CPP_Class);
     pragma Inline (Set_Is_Descendant_Of_Address);
*************** package Einfo is
*** 9111,9116 ****
--- 9290,9296 ----
     pragma Inline (Set_Is_Discriminant_Check_Function);
     pragma Inline (Set_Is_Dispatch_Table_Entity);
     pragma Inline (Set_Is_Dispatching_Operation);
+    pragma Inline (Set_Is_Elaboration_Checks_OK_Id);
     pragma Inline (Set_Is_Eliminated);
     pragma Inline (Set_Is_Entry_Formal);
     pragma Inline (Set_Is_Entry_Wrapper);
*************** package Einfo is
*** 9134,9139 ****
--- 9314,9320 ----
     pragma Inline (Set_Is_Implementation_Defined);
     pragma Inline (Set_Is_Imported);
     pragma Inline (Set_Is_Independent);
+    pragma Inline (Set_Is_Initial_Condition_Procedure);
     pragma Inline (Set_Is_Inlined);
     pragma Inline (Set_Is_Inlined_Always);
     pragma Inline (Set_Is_Instantiated);
*************** package Einfo is
*** 9220,9230 ****
--- 9401,9413 ----
     pragma Inline (Set_Must_Have_Preelab_Init);
     pragma Inline (Set_Needs_Debug_Info);
     pragma Inline (Set_Needs_No_Actuals);
+    pragma Inline (Set_Nested_Scenarios);
     pragma Inline (Set_Never_Set_In_Source);
     pragma Inline (Set_Next_Inlined_Subprogram);
     pragma Inline (Set_No_Dynamic_Predicate_On_Actual);
     pragma Inline (Set_No_Pool_Assigned);
     pragma Inline (Set_No_Predicate_On_Actual);
+    pragma Inline (Set_No_Reordering);
     pragma Inline (Set_No_Return);
     pragma Inline (Set_No_Strict_Aliasing);
     pragma Inline (Set_No_Tagged_Streams_Pragma);
*************** package Einfo is
*** 9235,9241 ****
     pragma Inline (Set_Normalized_Position);
     pragma Inline (Set_Normalized_Position_Max);
     pragma Inline (Set_OK_To_Rename);
-    pragma Inline (Set_OK_To_Reorder_Components);
     pragma Inline (Set_Optimize_Alignment_Space);
     pragma Inline (Set_Optimize_Alignment_Time);
     pragma Inline (Set_Original_Access_Type);
--- 9418,9423 ----
*************** package Einfo is
*** 9259,9266 ****
--- 9441,9450 ----
     pragma Inline (Set_Private_View);
     pragma Inline (Set_Protected_Body_Subprogram);
     pragma Inline (Set_Protected_Formal);
+    pragma Inline (Set_Protected_Subprogram);
     pragma Inline (Set_Protection_Object);
     pragma Inline (Set_Reachable);
+    pragma Inline (Set_Receiving_Entry);
     pragma Inline (Set_Referenced);
     pragma Inline (Set_Referenced_As_LHS);
     pragma Inline (Set_Referenced_As_Out_Parameter);
*************** package Einfo is
*** 9327,9332 ****
--- 9511,9517 ----
     pragma Inline (Set_Used_As_Generic_Actual);
     pragma Inline (Set_Uses_Lock_Free);
     pragma Inline (Set_Uses_Sec_Stack);
+    pragma Inline (Set_Validated_Object);
     pragma Inline (Set_Warnings_Off);
     pragma Inline (Set_Warnings_Off_Used);
     pragma Inline (Set_Warnings_Off_Used_Unmodified);
*************** package Einfo is
*** 9345,9353 ****
  
     pragma Inline (Base_Type);
     pragma Inline (Is_Base_Type);
!    pragma Inline (Is_Controlled_Active);
     pragma Inline (Is_Package_Or_Generic_Package);
     pragma Inline (Is_Packed_Array);
     pragma Inline (Is_Subprogram_Or_Generic_Subprogram);
     pragma Inline (Is_Volatile);
     pragma Inline (Is_Wrapper_Package);
--- 9530,9541 ----
  
     pragma Inline (Base_Type);
     pragma Inline (Is_Base_Type);
!    pragma Inline (Is_Boolean_Type);
!    pragma Inline (Is_Controlled);
!    pragma Inline (Is_Entity_Name);
     pragma Inline (Is_Package_Or_Generic_Package);
     pragma Inline (Is_Packed_Array);
+    pragma Inline (Is_String_Type);
     pragma Inline (Is_Subprogram_Or_Generic_Subprogram);
     pragma Inline (Is_Volatile);
     pragma Inline (Is_Wrapper_Package);
diff -Nrcpad gcc-7.3.0/gcc/ada/elists.adb gcc-8.1.0/gcc/ada/elists.adb
*** gcc-7.3.0/gcc/ada/elists.adb	Mon Mar  2 11:24:33 2015
--- gcc-8.1.0/gcc/ada/elists.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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 Elists is
*** 320,329 ****
  
     procedure Lock is
     begin
-       Elists.Locked := True;
-       Elmts.Locked := True;
        Elists.Release;
        Elmts.Release;
     end Lock;
  
     --------------------
--- 320,329 ----
  
     procedure Lock is
     begin
        Elists.Release;
+       Elists.Locked := True;
        Elmts.Release;
+       Elmts.Locked := True;
     end Lock;
  
     --------------------
*************** package body Elists is
*** 450,455 ****
--- 450,466 ----
        Elists.Table (To).First  := Elmts.Last;
     end Prepend_Elmt;
  
+    -------------------------
+    -- Prepend_Unique_Elmt --
+    -------------------------
+ 
+    procedure Prepend_Unique_Elmt (N : Node_Or_Entity_Id; To : Elist_Id) is
+    begin
+       if not Contains (To, N) then
+          Prepend_Elmt (N, To);
+       end if;
+    end Prepend_Unique_Elmt;
+ 
     -------------
     -- Present --
     -------------
diff -Nrcpad gcc-7.3.0/gcc/ada/elists.ads gcc-8.1.0/gcc/ada/elists.ads
*** gcc-7.3.0/gcc/ada/elists.ads	Mon Mar  2 11:24:33 2015
--- gcc-8.1.0/gcc/ada/elists.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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 Elists is
*** 141,146 ****
--- 141,150 ----
     procedure Prepend_Elmt (N : Node_Or_Entity_Id; To : Elist_Id);
     --  Appends N at the beginning of To, allocating a new element
  
+    procedure Prepend_Unique_Elmt (N : Node_Or_Entity_Id; To : Elist_Id);
+    --  Like Prepend_Elmt, except that a check is made to see if To already
+    --  contains N and if so the call has no effect.
+ 
     procedure Insert_Elmt_After (N : Node_Or_Entity_Id; Elmt : Elmt_Id);
     --  Add a new element (N) right after the pre-existing element Elmt
     --  It is invalid to call this subprogram with Elmt = No_Elmt.
diff -Nrcpad gcc-7.3.0/gcc/ada/elists.h gcc-8.1.0/gcc/ada/elists.h
*** gcc-7.3.0/gcc/ada/elists.h	Mon Sep 10 12:47:10 2007
--- gcc-8.1.0/gcc/ada/elists.h	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *            Copyright (C) 1992-2007, Free Software Foundation, Inc.       *
   *                                                                          *
   * GNAT is free software;  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-2018, Free Software Foundation, Inc.       *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-7.3.0/gcc/ada/env.c gcc-8.1.0/gcc/ada/env.c
*** gcc-7.3.0/gcc/ada/env.c	Tue Oct 11 18:12:52 2016
--- gcc-8.1.0/gcc/ada/env.c	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *            Copyright (C) 2005-2015, Free Software Foundation, Inc.       *
   *                                                                          *
   * GNAT is free software;  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-2018, Free Software Foundation, Inc.       *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-7.3.0/gcc/ada/env.h gcc-8.1.0/gcc/ada/env.h
*** gcc-7.3.0/gcc/ada/env.h	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/env.h	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 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 ----
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 2009-2018, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-7.3.0/gcc/ada/err_vars.ads gcc-8.1.0/gcc/ada/err_vars.ads
*** gcc-7.3.0/gcc/ada/err_vars.ads	Mon Oct 26 11:51:46 2015
--- gcc-8.1.0/gcc/ada/err_vars.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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 Err_Vars is
*** 39,48 ****
     --  from invalid values in such cases.
  
     --  Note on error counts (Serious_Errors_Detected, Total_Errors_Detected,
!    --  Warnings_Detected, Info_Messages). These counts might more logically
!    --  appear in this unit, but we place them instead in atree.ads, because of
!    --  licensing issues. We need to be able to access these counts from units
!    --  that have the more general licensing conditions.
  
     ----------------------------------
     -- Error Message Mode Variables --
--- 39,49 ----
     --  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
!    --  instead in atree.ads, because of licensing issues. We need to be able
!    --  to access these counts from units that have the more general licensing
!    --  conditions.
  
     ----------------------------------
     -- Error Message Mode Variables --
*************** package Err_Vars is
*** 80,86 ****
     Error_Msg_Exception : exception;
     --  Exception raised if Raise_Exception_On_Error is true
  
!    Current_Error_Source_File : Source_File_Index := Internal_Source_File;
     --  Id of current messages. Used to post file name when unit changes. This
     --  is initialized to Main_Source_File at the start of a compilation, which
     --  means that no file names will be output unless there are errors in units
--- 81,87 ----
     Error_Msg_Exception : exception;
     --  Exception raised if Raise_Exception_On_Error is true
  
!    Current_Error_Source_File : Source_File_Index := No_Source_File;
     --  Id of current messages. Used to post file name when unit changes. This
     --  is initialized to Main_Source_File at the start of a compilation, which
     --  means that no file names will be output unless there are errors in units
diff -Nrcpad gcc-7.3.0/gcc/ada/errno.c gcc-8.1.0/gcc/ada/errno.c
*** gcc-7.3.0/gcc/ada/errno.c	Tue Nov  6 09:41:56 2012
--- gcc-8.1.0/gcc/ada/errno.c	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *           Copyright (C) 1992-2012, Free Software Foundation, Inc.        *
   *                                                                          *
   * GNAT is free software;  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-2018, Free Software Foundation, Inc.        *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-7.3.0/gcc/ada/errout.adb gcc-8.1.0/gcc/ada/errout.adb
*** gcc-7.3.0/gcc/ada/errout.adb	Fri Jan 13 10:19:19 2017
--- gcc-8.1.0/gcc/ada/errout.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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 Csets;    use Csets;
*** 35,41 ****
  with Debug;    use Debug;
  with Einfo;    use Einfo;
  with Erroutc;  use Erroutc;
- with Fname;    use Fname;
  with Gnatvsn;  use Gnatvsn;
  with Lib;      use Lib;
  with Opt;      use Opt;
--- 35,40 ----
*************** package body Errout is
*** 101,107 ****
       (Msg      : String;
        Sptr     : Source_Ptr;
        Optr     : Source_Ptr;
!       Msg_Cont : Boolean);
     --  This is the low level routine used to post messages after dealing with
     --  the issue of messages placed on instantiations (which get broken up
     --  into separate calls in Error_Msg). Sptr is the location on which the
--- 100,107 ----
       (Msg      : String;
        Sptr     : Source_Ptr;
        Optr     : Source_Ptr;
!       Msg_Cont : Boolean;
!       Node     : Node_Id);
     --  This is the low level routine used to post messages after dealing with
     --  the issue of messages placed on instantiations (which get broken up
     --  into separate calls in Error_Msg). Sptr is the location on which the
*************** package body Errout is
*** 112,118 ****
     --  copy. So typically we can see Optr pointing to the template location
     --  in an instantiation copy when Sptr points to the source location of
     --  the actual instantiation (i.e the line with the new). Msg_Cont is
!    --  set true if this is a continuation message.
  
     function No_Warnings (N : Node_Or_Entity_Id) return Boolean;
     --  Determines if warnings should be suppressed for the given node
--- 112,120 ----
     --  copy. So typically we can see Optr pointing to the template location
     --  in an instantiation copy when Sptr points to the source location of
     --  the actual instantiation (i.e the line with the new). Msg_Cont is
!    --  set true if this is a continuation message. Node is the relevant
!    --  Node_Id for this message, to be used to compute the enclosing entity if
!    --  Opt.Include_Subprogram_In_Messages is set.
  
     function No_Warnings (N : Node_Or_Entity_Id) return Boolean;
     --  Determines if warnings should be suppressed for the given node
*************** package body Errout is
*** 278,284 ****
                 Warnings_Detected := Warnings_Detected - 1;
  
                 if M.Info then
!                   Info_Messages := Info_Messages - 1;
                 end if;
  
                 if M.Warn_Err then
--- 280,286 ----
                 Warnings_Detected := Warnings_Detected - 1;
  
                 if M.Info then
!                   Warning_Info_Messages := Warning_Info_Messages - 1;
                 end if;
  
                 if M.Warn_Err then
*************** package body Errout is
*** 304,309 ****
--- 306,320 ----
     --  referencing the generic declaration.
  
     procedure Error_Msg (Msg : String; Flag_Location : Source_Ptr) is
+    begin
+       Error_Msg (Msg, Flag_Location, Current_Node);
+    end Error_Msg;
+ 
+    procedure Error_Msg
+      (Msg           : String;
+       Flag_Location : Source_Ptr;
+       N             : Node_Id)
+    is
        Sindex : Source_File_Index;
        --  Source index for flag location
  
*************** package body Errout is
*** 312,322 ****
        --  template in instantiation case, otherwise unchanged).
  
     begin
-       --  It is a fatal error to issue an error message when scanning from the
-       --  internal source buffer (see Sinput for further documentation)
- 
-       pragma Assert (Sinput.Source /= Internal_Source_Ptr);
- 
        --  Return if all errors are to be ignored
  
        if Errors_Must_Be_Ignored then
--- 323,328 ----
*************** package body Errout is
*** 411,417 ****
        --  Error_Msg_Internal to place the message in the requested location.
  
        if Instantiation (Sindex) = No_Location then
!          Error_Msg_Internal (Msg, Flag_Location, Flag_Location, False);
           return;
        end if;
  
--- 417,423 ----
        --  Error_Msg_Internal to place the message in the requested location.
  
        if Instantiation (Sindex) = No_Location then
!          Error_Msg_Internal (Msg, Flag_Location, Flag_Location, False, N);
           return;
        end if;
  
*************** package body Errout is
*** 423,431 ****
  
        --  or
  
!       --     warning: in instantiation at
        --     warning: original warning message
  
        --  All these messages are posted at the location of the top level
        --  instantiation. If there are nested instantiations, then the
        --  instantiation error message can be repeated, pointing to each
--- 429,442 ----
  
        --  or
  
!       --     warning: in instantiation at ...
        --     warning: original warning message
  
+       --  or
+ 
+       --     info: in instantiation at ...
+       --     info: original info message
+ 
        --  All these messages are posted at the location of the top level
        --  instantiation. If there are nested instantiations, then the
        --  instantiation error message can be repeated, pointing to each
*************** package body Errout is
*** 440,448 ****
  
        --  or
  
!       --     warning: in inlined body at
        --     warning: original warning message
  
        --  OK, here we have an instantiation error, and we need to generate the
        --  error on the instantiation, rather than on the template.
  
--- 451,464 ----
  
        --  or
  
!       --     warning: in inlined body at ...
        --     warning: original warning message
  
+       --  or
+ 
+       --     info: in inlined body at ...
+       --     info: original info message
+ 
        --  OK, here we have an instantiation error, and we need to generate the
        --  error on the instantiation, rather than on the template.
  
*************** package body Errout is
*** 494,520 ****
                 --  Case of inlined body
  
                 if Inlined_Body (X) then
!                   if Is_Warning_Msg or Is_Style_Msg then
                       Error_Msg_Internal
!                        (Warn_Insertion & "in inlined body #",
!                         Actual_Error_Loc, Flag_Location, Msg_Cont_Status);
                    else
                       Error_Msg_Internal
!                        ("error in inlined body #",
!                         Actual_Error_Loc, Flag_Location, Msg_Cont_Status);
                    end if;
  
                 --  Case of generic instantiation
  
                 else
!                   if Is_Warning_Msg or else Is_Style_Msg then
                       Error_Msg_Internal
!                        (Warn_Insertion & "in instantiation #",
!                         Actual_Error_Loc, Flag_Location, Msg_Cont_Status);
                    else
                       Error_Msg_Internal
!                        ("instantiation error #",
!                         Actual_Error_Loc, Flag_Location, Msg_Cont_Status);
                    end if;
                 end if;
              end if;
--- 510,582 ----
                 --  Case of inlined body
  
                 if Inlined_Body (X) then
!                   if Is_Info_Msg then
                       Error_Msg_Internal
!                        (Msg      => "info: in inlined body #",
!                         Sptr     => Actual_Error_Loc,
!                         Optr     => Flag_Location,
!                         Msg_Cont => Msg_Cont_Status,
!                         Node     => N);
! 
!                   elsif Is_Warning_Msg then
!                      Error_Msg_Internal
!                        (Msg      => Warn_Insertion & "in inlined body #",
!                         Sptr     => Actual_Error_Loc,
!                         Optr     => Flag_Location,
!                         Msg_Cont => Msg_Cont_Status,
!                         Node     => N);
! 
!                   elsif Is_Style_Msg then
!                      Error_Msg_Internal
!                        (Msg      => "style: in inlined body #",
!                         Sptr     => Actual_Error_Loc,
!                         Optr     => Flag_Location,
!                         Msg_Cont => Msg_Cont_Status,
!                         Node     => N);
! 
                    else
                       Error_Msg_Internal
!                        (Msg      => "error in inlined body #",
!                         Sptr     => Actual_Error_Loc,
!                         Optr     => Flag_Location,
!                         Msg_Cont => Msg_Cont_Status,
!                         Node     => N);
                    end if;
  
                 --  Case of generic instantiation
  
                 else
!                   if Is_Info_Msg then
                       Error_Msg_Internal
!                        (Msg      => "info: in instantiation #",
!                         Sptr     => Actual_Error_Loc,
!                         Optr     => Flag_Location,
!                         Msg_Cont => Msg_Cont_Status,
!                         Node     => N);
! 
!                   elsif Is_Warning_Msg then
!                      Error_Msg_Internal
!                        (Msg      => Warn_Insertion & "in instantiation #",
!                         Sptr     => Actual_Error_Loc,
!                         Optr     => Flag_Location,
!                         Msg_Cont => Msg_Cont_Status,
!                         Node     => N);
! 
!                   elsif Is_Style_Msg then
!                      Error_Msg_Internal
!                        (Msg      => "style: in instantiation #",
!                         Sptr     => Actual_Error_Loc,
!                         Optr     => Flag_Location,
!                         Msg_Cont => Msg_Cont_Status,
!                         Node     => N);
! 
                    else
                       Error_Msg_Internal
!                        (Msg      => "instantiation error #",
!                         Sptr     => Actual_Error_Loc,
!                         Optr     => Flag_Location,
!                         Msg_Cont => Msg_Cont_Status,
!                         Node     => N);
                    end if;
                 end if;
              end if;
*************** package body Errout is
*** 530,536 ****
           --  Here we output the original message on the outer instantiation
  
           Error_Msg_Internal
!            (Msg, Actual_Error_Loc, Flag_Location, Msg_Cont_Status);
        end;
     end Error_Msg;
  
--- 592,602 ----
           --  Here we output the original message on the outer instantiation
  
           Error_Msg_Internal
!            (Msg      => Msg,
!             Sptr     => Actual_Error_Loc,
!             Optr     => Flag_Location,
!             Msg_Cont => Msg_Cont_Status,
!             Node     => N);
        end;
     end Error_Msg;
  
*************** package body Errout is
*** 744,750 ****
       (Msg      : String;
        Sptr     : Source_Ptr;
        Optr     : Source_Ptr;
!       Msg_Cont : Boolean)
     is
        Next_Msg : Error_Msg_Id;
        --  Pointer to next message at insertion point
--- 810,817 ----
       (Msg      : String;
        Sptr     : Source_Ptr;
        Optr     : Source_Ptr;
!       Msg_Cont : Boolean;
!       Node     : Node_Id)
     is
        Next_Msg : Error_Msg_Id;
        --  Pointer to next message at insertion point
*************** package body Errout is
*** 1026,1032 ****
            Serious  => Is_Serious_Error,
            Uncond   => Is_Unconditional_Msg,
            Msg_Cont => Continuation,
!           Deleted  => False));
        Cur_Msg := Errors.Last;
  
        --  Test if warning to be treated as error
--- 1093,1100 ----
            Serious  => Is_Serious_Error,
            Uncond   => Is_Unconditional_Msg,
            Msg_Cont => Continuation,
!           Deleted  => False,
!           Node     => Node));
        Cur_Msg := Errors.Last;
  
        --  Test if warning to be treated as error
*************** package body Errout is
*** 1170,1181 ****
        --  Bump appropriate statistics counts
  
        if Errors.Table (Cur_Msg).Info then
-          Info_Messages := Info_Messages + 1;
  
           --  Could be (usually is) both "info" and "warning"
  
           if Errors.Table (Cur_Msg).Warn then
!             Warnings_Detected := Warnings_Detected + 1;
           end if;
  
        elsif Errors.Table (Cur_Msg).Warn
--- 1238,1251 ----
        --  Bump appropriate statistics counts
  
        if Errors.Table (Cur_Msg).Info then
  
           --  Could be (usually is) both "info" and "warning"
  
           if Errors.Table (Cur_Msg).Warn then
!             Warning_Info_Messages := Warning_Info_Messages + 1;
!             Warnings_Detected     := Warnings_Detected + 1;
!          else
!             Report_Info_Messages := Report_Info_Messages + 1;
           end if;
  
        elsif Errors.Table (Cur_Msg).Warn
*************** package body Errout is
*** 1313,1319 ****
        then
           Debug_Output (N);
           Error_Msg_Node_1 := E;
!          Error_Msg (Msg, Flag_Location);
  
        else
           Last_Killed := True;
--- 1383,1389 ----
        then
           Debug_Output (N);
           Error_Msg_Node_1 := E;
!          Error_Msg (Msg, Flag_Location, N);
  
        else
           Last_Killed := True;
*************** package body Errout is
*** 1404,1414 ****
              Warnings_Detected := Warnings_Detected - 1;
  
              if Errors.Table (E).Info then
!                Info_Messages := Info_Messages - 1;
!             end if;
! 
!             if Errors.Table (E).Warn_Err then
!                Warnings_Treated_As_Errors := Warnings_Treated_As_Errors - 1;
              end if;
           end if;
        end Delete_Warning;
--- 1474,1480 ----
              Warnings_Detected := Warnings_Detected - 1;
  
              if Errors.Table (E).Info then
!                Warning_Info_Messages := Warning_Info_Messages - 1;
              end if;
           end if;
        end Delete_Warning;
*************** package body Errout is
*** 1747,1753 ****
           --  the Main_Source line is unknown (this happens in error situations,
           --  e.g. when integrated preprocessing fails).
  
!          if Main_Source_File /= No_Source_File then
              Write_Str (" ");
              Write_Int (Num_Source_Lines (Main_Source_File));
  
--- 1813,1819 ----
           --  the Main_Source line is unknown (this happens in error situations,
           --  e.g. when integrated preprocessing fails).
  
!          if Main_Source_File > No_Source_File then
              Write_Str (" ");
              Write_Int (Num_Source_Lines (Main_Source_File));
  
*************** package body Errout is
*** 1769,1780 ****
              Write_Str (" errors");
           end if;
  
!          if Warnings_Detected - Info_Messages /= 0 then
              Write_Str (", ");
              Write_Int (Warnings_Detected);
              Write_Str (" warning");
  
!             if Warnings_Detected - Info_Messages /= 1 then
                 Write_Char ('s');
              end if;
  
--- 1835,1846 ----
              Write_Str (" errors");
           end if;
  
!          if Warnings_Detected - Warning_Info_Messages /= 0 then
              Write_Str (", ");
              Write_Int (Warnings_Detected);
              Write_Str (" warning");
  
!             if Warnings_Detected - Warning_Info_Messages /= 1 then
                 Write_Char ('s');
              end if;
  
*************** package body Errout is
*** 1794,1805 ****
              end if;
           end if;
  
!          if Info_Messages /= 0 then
              Write_Str (", ");
!             Write_Int (Info_Messages);
              Write_Str (" info message");
  
!             if Info_Messages > 1 then
                 Write_Char ('s');
              end if;
           end if;
--- 1860,1871 ----
              end if;
           end if;
  
!          if Warning_Info_Messages + Report_Info_Messages /= 0 then
              Write_Str (", ");
!             Write_Int (Warning_Info_Messages + Report_Info_Messages);
              Write_Str (" info message");
  
!             if Warning_Info_Messages + Report_Info_Messages > 1 then
                 Write_Char ('s');
              end if;
           end if;
*************** package body Errout is
*** 1872,1878 ****
        --  Source_Reference. This ensures outputting the proper name of
        --  the source file in this situation.
  
!       if Main_Source_File = No_Source_File
          or else Num_SRef_Pragmas (Main_Source_File) /= 0
        then
           Current_Error_Source_File := No_Source_File;
--- 1938,1944 ----
        --  Source_Reference. This ensures outputting the proper name of
        --  the source file in this situation.
  
!       if Main_Source_File <= No_Source_File
          or else Num_SRef_Pragmas (Main_Source_File) /= 0
        then
           Current_Error_Source_File := No_Source_File;
*************** package body Errout is
*** 1979,1985 ****
  
                    --  Only write the header if Sfile is known
  
!                   if Sfile /= No_Source_File then
                       Write_Header (Sfile);
                       Write_Eol;
                    end if;
--- 2045,2051 ----
  
                    --  Only write the header if Sfile is known
  
!                   if Sfile > No_Source_File then
                       Write_Header (Sfile);
                       Write_Eol;
                    end if;
*************** package body Errout is
*** 2000,2006 ****
                    --  Only output the listing if Sfile is known, to avoid
                    --  crashing the compiler.
  
!                   if Sfile /= No_Source_File then
                       for N in 1 .. Last_Source_Line (Sfile) loop
                          while E /= No_Error_Msg
                            and then Errors.Table (E).Deleted
--- 2066,2072 ----
                    --  Only output the listing if Sfile is known, to avoid
                    --  crashing the compiler.
  
!                   if Sfile > No_Source_File then
                       for N in 1 .. Last_Source_Line (Sfile) loop
                          while E /= No_Error_Msg
                            and then Errors.Table (E).Deleted
*************** package body Errout is
*** 2075,2081 ****
  
           --  Output the header only when Main_Source_File is known
  
!          if Main_Source_File /= No_Source_File then
              Write_Header (Main_Source_File);
           end if;
  
--- 2141,2147 ----
  
           --  Output the header only when Main_Source_File is known
  
!          if Main_Source_File > No_Source_File then
              Write_Header (Main_Source_File);
           end if;
  
*************** package body Errout is
*** 2103,2112 ****
  
        Write_Max_Errors;
  
        if Warning_Mode = Treat_As_Error then
           Total_Errors_Detected :=
!            Total_Errors_Detected + Warnings_Detected - Info_Messages;
!          Warnings_Detected := Info_Messages;
        end if;
     end Output_Messages;
  
--- 2169,2181 ----
  
        Write_Max_Errors;
  
+       --  Even though Warning_Info_Messages are a subclass of warnings, they
+       --  must not be treated as errors when -gnatwe is in effect.
+ 
        if Warning_Mode = Treat_As_Error then
           Total_Errors_Detected :=
!            Total_Errors_Detected + Warnings_Detected - Warning_Info_Messages;
!          Warnings_Detected := Warning_Info_Messages;
        end if;
     end Output_Messages;
  
*************** package body Errout is
*** 2280,2286 ****
                 Warnings_Detected := Warnings_Detected - 1;
  
                 if Errors.Table (E).Info then
!                   Info_Messages := Info_Messages - 1;
                 end if;
  
                 return True;
--- 2349,2355 ----
                 Warnings_Detected := Warnings_Detected - 1;
  
                 if Errors.Table (E).Info then
!                   Warning_Info_Messages := Warning_Info_Messages - 1;
                 end if;
  
                 return True;
*************** package body Errout is
*** 2381,2387 ****
     begin
        Warnings_Treated_As_Errors := 0;
        Warnings_Detected := 0;
!       Info_Messages := 0;
        Warnings_As_Errors_Count := 0;
     end Reset_Warnings;
  
--- 2450,2456 ----
     begin
        Warnings_Treated_As_Errors := 0;
        Warnings_Detected := 0;
!       Warning_Info_Messages := 0;
        Warnings_As_Errors_Count := 0;
     end Reset_Warnings;
  
*************** package body Errout is
*** 2691,2699 ****
        --  Types in other language defined units are displayed as
        --  "package-name.type-name"
  
!       elsif
!         Is_Predefined_File_Name (Unit_File_Name (Get_Source_Unit (Ent)))
!       then
           Get_Unqualified_Decoded_Name_String
             (Unit_Name (Get_Source_Unit (Ent)));
           Name_Len := Name_Len - 2;
--- 2760,2766 ----
        --  Types in other language defined units are displayed as
        --  "package-name.type-name"
  
!       elsif Is_Predefined_Unit (Get_Source_Unit (Ent)) then
           Get_Unqualified_Decoded_Name_String
             (Unit_Name (Get_Source_Unit (Ent)));
           Name_Len := Name_Len - 2;
*************** package body Errout is
*** 2731,2739 ****
  
        if Sloc (Error_Msg_Node_1) > Standard_Location
          and then
!           not Is_Predefined_File_Name
!                 (Unit_File_Name (Get_Source_Unit (Error_Msg_Node_1)))
        then
           Set_Msg_Str (" defined");
           Set_Msg_Insertion_Line_Number (Sloc (Error_Msg_Node_1), Flag);
  
--- 2798,2806 ----
  
        if Sloc (Error_Msg_Node_1) > Standard_Location
          and then
!           not Is_Predefined_Unit (Get_Source_Unit (Error_Msg_Node_1))
        then
+          Get_Name_String (Unit_File_Name (Get_Source_Unit (Error_Msg_Node_1)));
           Set_Msg_Str (" defined");
           Set_Msg_Insertion_Line_Number (Sloc (Error_Msg_Node_1), Flag);
  
*************** package body Errout is
*** 3078,3083 ****
--- 3145,3161 ----
              --  '[' (will be/would have been raised at run time)
  
              when '[' =>
+ 
+                --  Switch the message from a warning to an error if the flag
+                --  -gnatwE is specified to treat run-time exception warnings
+                --  as errors.
+ 
+                if Is_Warning_Msg
+                  and then Warning_Mode = Treat_Run_Time_Warnings_As_Errors
+                then
+                   Is_Warning_Msg := False;
+                end if;
+ 
                 if Is_Warning_Msg then
                    Set_Msg_Str ("will be raised at run time");
                 else
diff -Nrcpad gcc-7.3.0/gcc/ada/errout.ads gcc-8.1.0/gcc/ada/errout.ads
*** gcc-7.3.0/gcc/ada/errout.ads	Thu Jan 12 16:01:16 2017
--- gcc-8.1.0/gcc/ada/errout.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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
*** 68,73 ****
--- 68,77 ----
     --  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.
+ 
     -----------------------------------
     -- Suppression of Error Messages --
     -----------------------------------
*************** package Errout is
*** 214,220 ****
     --    Insertion character } (Right brace: insert type reference)
     --      The character } is replaced by a string describing the type
     --      referenced by the entity whose Id is stored in Error_Msg_Node_1.
!    --      the string gives the name or description of the type, and also
     --      where appropriate the location of its declaration. Special cases
     --      like "some integer type" are handled appropriately. Only one } is
     --      allowed in a message, since there is not enough room for two (the
--- 218,224 ----
     --    Insertion character } (Right brace: insert type reference)
     --      The character } is replaced by a string describing the type
     --      referenced by the entity whose Id is stored in Error_Msg_Node_1.
!    --      The string gives the name or description of the type, and also
     --      where appropriate the location of its declaration. Special cases
     --      like "some integer type" are handled appropriately. Only one } is
     --      allowed in a message, since there is not enough room for two (the
*************** package Errout is
*** 686,694 ****
     --  Output list of messages, including messages giving number of detected
     --  errors and warnings.
  
!    procedure Error_Msg (Msg : String; Flag_Location : Source_Ptr);
     --  Output a message at specified location. Can be called from the parser
!    --  or the semantic analyzer.
  
     procedure Error_Msg_S (Msg : String);
     --  Output a message at current scan pointer location. This routine can be
--- 690,702 ----
     --  Output list of messages, including messages giving number of detected
     --  errors and warnings.
  
!    procedure Error_Msg
!      (Msg : String; Flag_Location : Source_Ptr);
!    procedure Error_Msg
!      (Msg : String; Flag_Location : Source_Ptr; N : Node_Id);
     --  Output a message at specified location. Can be called from the parser
!    --  or the semantic analyzer. If N is set, points to the relevant node for
!    --  this message.
  
     procedure Error_Msg_S (Msg : String);
     --  Output a message at current scan pointer location. This routine can be
diff -Nrcpad gcc-7.3.0/gcc/ada/erroutc.adb gcc-8.1.0/gcc/ada/erroutc.adb
*** gcc-7.3.0/gcc/ada/erroutc.adb	Wed Apr 27 13:09:13 2016
--- gcc-8.1.0/gcc/ada/erroutc.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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;
*** 41,47 ****
  with Sinput;   use Sinput;
  with Snames;   use Snames;
  with Stringt;  use Stringt;
! with Targparm; use Targparm;
  with Uintp;    use Uintp;
  with Widechar; use Widechar;
  
--- 41,47 ----
  with Sinput;   use Sinput;
  with Snames;   use Snames;
  with Stringt;  use Stringt;
! with Targparm;
  with Uintp;    use Uintp;
  with Widechar; use Widechar;
  
*************** package body Erroutc is
*** 139,151 ****
  
              --  Adjust error message count
  
!             if Errors.Table (D).Warn or else Errors.Table (D).Style then
!                Warnings_Detected := Warnings_Detected - 1;
  
!                if Errors.Table (D).Info then
!                   Info_Messages := Info_Messages - 1;
                 end if;
  
                 --  Note: we do not need to decrement Warnings_Treated_As_Errors
                 --  because this only gets incremented if we actually output the
                 --  message, which we won't do if we are deleting it here!
--- 139,156 ----
  
              --  Adjust error message count
  
!             if Errors.Table (D).Info then
  
!                if Errors.Table (D).Warn then
!                   Warning_Info_Messages := Warning_Info_Messages - 1;
!                   Warnings_Detected := Warnings_Detected - 1;
!                else
!                   Report_Info_Messages := Report_Info_Messages - 1;
                 end if;
  
+             elsif Errors.Table (D).Warn or else Errors.Table (D).Style then
+                Warnings_Detected := Warnings_Detected - 1;
+ 
                 --  Note: we do not need to decrement Warnings_Treated_As_Errors
                 --  because this only gets incremented if we actually output the
                 --  message, which we won't do if we are deleting it here!
*************** package body Erroutc is
*** 239,248 ****
  
     function Compilation_Errors return Boolean is
     begin
!       return Total_Errors_Detected /= 0
!         or else (Warnings_Detected - Info_Messages /= 0
!                   and then Warning_Mode = Treat_As_Error)
!         or else Warnings_Treated_As_Errors /= 0;
     end Compilation_Errors;
  
     ------------------
--- 244,254 ----
  
     function Compilation_Errors return Boolean is
     begin
!       return
!         Total_Errors_Detected /= 0
!           or else (Warnings_Detected - Warning_Info_Messages /= 0
!                     and then Warning_Mode = Treat_As_Error)
!           or else Warnings_Treated_As_Errors /= 0;
     end Compilation_Errors;
  
     ------------------
*************** package body Erroutc is
*** 293,298 ****
--- 299,305 ----
        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
*** 626,632 ****
           --  Postfix warning tag to message if needed
  
           if Tag /= "" and then Warning_Doc_Switch then
!             Txt := new String'(Text.all & ' ' & Tag);
           else
              Txt := Text;
           end if;
--- 633,654 ----
           --  Postfix warning tag to message if needed
  
           if Tag /= "" and then Warning_Doc_Switch then
!             if Include_Subprogram_In_Messages then
!                Txt :=
!                  new String'
!                    (Subprogram_Name_Ptr (Errors.Table (E).Node) &
!                     ": " & Text.all & ' ' & Tag);
!             else
!                Txt := new String'(Text.all & ' ' & Tag);
!             end if;
! 
!          elsif Include_Subprogram_In_Messages
!            and then (Errors.Table (E).Warn or else Errors.Table (E).Style)
!          then
!             Txt :=
!               new String'
!                 (Subprogram_Name_Ptr (Errors.Table (E).Node) &
!                  ": " & Text.all);
           else
              Txt := Text;
           end if;
*************** package body Erroutc is
*** 1444,1450 ****
        Specific_Warnings.Append
          ((Start      => Loc,
            Msg        => new String'(Msg),
!           Stop       => Source_Last (Current_Source_File),
            Reason     => Reason,
            Open       => True,
            Used       => Used,
--- 1466,1472 ----
        Specific_Warnings.Append
          ((Start      => Loc,
            Msg        => new String'(Msg),
!           Stop       => Source_Last (Get_Source_File_Index (Loc)),
            Reason     => Reason,
            Open       => True,
            Used       => Used,
*************** package body Erroutc is
*** 1528,1534 ****
  
        Warnings.Append
          ((Start  => Loc,
!           Stop   => Source_Last (Current_Source_File),
            Reason => Reason));
     end Set_Warnings_Mode_Off;
  
--- 1550,1556 ----
  
        Warnings.Append
          ((Start  => Loc,
!           Stop   => Source_Last (Get_Source_File_Index (Loc)),
            Reason => Reason));
     end Set_Warnings_Mode_Off;
  
diff -Nrcpad gcc-7.3.0/gcc/ada/erroutc.ads gcc-8.1.0/gcc/ada/erroutc.ads
*** gcc-7.3.0/gcc/ada/erroutc.ads	Wed May 27 13:26:16 2015
--- gcc-8.1.0/gcc/ada/erroutc.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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 Erroutc is
*** 132,137 ****
--- 132,142 ----
     --  output. This is used for internal processing for the case of an
     --  illegal instantiation. See Error_Msg routine for further details.
  
+    type Subprogram_Name_Type is access function (N : Node_Id) return String;
+    Subprogram_Name_Ptr : Subprogram_Name_Type;
+    --  Indirect call to Sem_Util.Subprogram_Name to break circular
+    --  dependency with the static elaboration model.
+ 
     ----------------------------
     -- Message ID Definitions --
     ----------------------------
*************** package Erroutc is
*** 192,204 ****
        --  have Sptr pointing to the instantiation point.
  
        Optr : Source_Ptr;
!       --  Flag location used in the call to post the error. This is normally
!       --  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 location of the instantiation itself, but
!       --  Optr will point to the template location (more accurately to the
!       --  template copy in the instantiation copy corresponding to the
!       --  instantiation referenced by Sptr).
  
        Line : Physical_Line_Number;
        --  Line number for error message
--- 197,209 ----
        --  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
!       --  location of the instantiation itself, but Optr will point to the
!       --  template location (more accurately to the template copy in the
!       --  instantiation copy corresponding to the instantiation referenced by
!       --  Sptr).
  
        Line : Physical_Line_Number;
        --  Line number for error message
*************** package Erroutc is
*** 251,256 ****
--- 256,266 ----
        Deleted : Boolean;
        --  If this flag is set, the message is not printed. This is used
        --  in the circuit for deleting duplicate/redundant error messages.
+ 
+       Node : Node_Id;
+       --  If set, points to the node relevant for this message which will be
+       --  used to compute the enclosing subprogram name if
+       --  Opt.Include_Subprogram_In_Messages is set.
     end record;
  
     package Errors is new Table.Table (
diff -Nrcpad gcc-7.3.0/gcc/ada/errutil.adb gcc-8.1.0/gcc/ada/errutil.adb
*** gcc-7.3.0/gcc/ada/errutil.adb	Wed Apr 27 13:25:54 2016
--- gcc-8.1.0/gcc/ada/errutil.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1991-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or 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-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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
*** 220,226 ****
              Serious  => Is_Serious_Error,
              Uncond   => Is_Unconditional_Msg,
              Msg_Cont => Continuation,
!             Deleted  => False));
  
        Cur_Msg  := Errors.Last;
        Prev_Msg := No_Error_Msg;
--- 220,227 ----
              Serious  => Is_Serious_Error,
              Uncond   => Is_Unconditional_Msg,
              Msg_Cont => Continuation,
!             Deleted  => False,
!             Node     => Empty));
  
        Cur_Msg  := Errors.Last;
        Prev_Msg := No_Error_Msg;
*************** package body Errutil is
*** 305,316 ****
        --  Bump appropriate statistics counts
  
        if Errors.Table (Cur_Msg).Info then
-          Info_Messages := Info_Messages + 1;
  
           --  Could be (usually is) both "info" and "warning"
  
           if Errors.Table (Cur_Msg).Warn then
              Warnings_Detected := Warnings_Detected + 1;
           end if;
  
        elsif Errors.Table (Cur_Msg).Warn
--- 306,319 ----
        --  Bump appropriate statistics counts
  
        if Errors.Table (Cur_Msg).Info then
  
           --  Could be (usually is) both "info" and "warning"
  
           if Errors.Table (Cur_Msg).Warn then
+             Warning_Info_Messages := Warning_Info_Messages + 1;
              Warnings_Detected := Warnings_Detected + 1;
+          else
+             Report_Info_Messages := Report_Info_Messages + 1;
           end if;
  
        elsif Errors.Table (Cur_Msg).Warn
*************** package body Errutil is
*** 548,566 ****
              Write_Str (" errors");
           end if;
  
!          if Warnings_Detected - Info_Messages  /= 0 then
              Write_Str (", ");
!             Write_Int (Warnings_Detected - Info_Messages);
              Write_Str (" warning");
  
!             if Warnings_Detected - Info_Messages /= 1 then
                 Write_Char ('s');
              end if;
  
              if Warning_Mode = Treat_As_Error then
                 Write_Str (" (treated as error");
  
!                if Warnings_Detected - Info_Messages /= 1 then
                    Write_Char ('s');
                 end if;
  
--- 551,569 ----
              Write_Str (" errors");
           end if;
  
!          if Warnings_Detected - Warning_Info_Messages /= 0 then
              Write_Str (", ");
!             Write_Int (Warnings_Detected - Warning_Info_Messages);
              Write_Str (" warning");
  
!             if Warnings_Detected - Warning_Info_Messages /= 1 then
                 Write_Char ('s');
              end if;
  
              if Warning_Mode = Treat_As_Error then
                 Write_Str (" (treated as error");
  
!                if Warnings_Detected - Warning_Info_Messages /= 1 then
                    Write_Char ('s');
                 end if;
  
*************** package body Errutil is
*** 586,595 ****
           end if;
        end if;
  
        if Warning_Mode = Treat_As_Error then
           Total_Errors_Detected :=
!            Total_Errors_Detected + Warnings_Detected - Info_Messages;
!          Warnings_Detected := Info_Messages;
        end if;
  
        --  Prevent displaying the same messages again in the future
--- 589,601 ----
           end if;
        end if;
  
+       --  Even though Warning_Info_Messages are a subclass of warnings, they
+       --  must not be treated as errors when -gnatwe is in effect.
+ 
        if Warning_Mode = Treat_As_Error then
           Total_Errors_Detected :=
!            Total_Errors_Detected + Warnings_Detected - Warning_Info_Messages;
!          Warnings_Detected := Warning_Info_Messages;
        end if;
  
        --  Prevent displaying the same messages again in the future
*************** package body Errutil is
*** 609,615 ****
        Serious_Errors_Detected := 0;
        Total_Errors_Detected := 0;
        Warnings_Detected := 0;
!       Info_Messages := 0;
        Cur_Msg := No_Error_Msg;
  
        --  Initialize warnings table, if all warnings are suppressed, supply
--- 615,622 ----
        Serious_Errors_Detected := 0;
        Total_Errors_Detected := 0;
        Warnings_Detected := 0;
!       Warning_Info_Messages := 0;
!       Report_Info_Messages := 0;
        Cur_Msg := No_Error_Msg;
  
        --  Initialize warnings table, if all warnings are suppressed, supply
diff -Nrcpad gcc-7.3.0/gcc/ada/errutil.ads gcc-8.1.0/gcc/ada/errutil.ads
*** gcc-7.3.0/gcc/ada/errutil.ads	Tue Nov  6 11:28:27 2012
--- gcc-8.1.0/gcc/ada/errutil.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2012, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or 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-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/eval_fat.adb gcc-8.1.0/gcc/ada/eval_fat.adb
*** gcc-7.3.0/gcc/ada/eval_fat.adb	Fri Jan 13 10:19:19 2017
--- gcc-8.1.0/gcc/ada/eval_fat.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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 Einfo;    use Einfo;
  with Errout;   use Errout;
+ with Opt;      use Opt;
  with Sem_Util; use Sem_Util;
  
  package body Eval_Fat is
*************** package body Eval_Fat is
*** 502,519 ****
  
        if X_Exp < Emin then
           declare
!             Emin_Den : constant UI := Machine_Emin_Value (RT)
!                                         - Machine_Mantissa_Value (RT) + Uint_1;
           begin
              if X_Exp < Emin_Den or not Has_Denormals (RT) then
                 if Has_Signed_Zeros (RT) and then UR_Is_Negative (X) then
!                   Error_Msg_N
!                     ("floating-point value underflows to -0.0??", Enode);
                    return Ureal_M_0;
  
                 else
!                   Error_Msg_N
!                     ("floating-point value underflows to 0.0??", Enode);
                    return Ureal_0;
                 end if;
  
--- 503,531 ----
  
        if X_Exp < Emin then
           declare
!             Emin_Den : constant UI := Machine_Emin_Value (RT) -
!                                         Machine_Mantissa_Value (RT) + Uint_1;
! 
           begin
+             --  Do not issue warnings about underflows in GNATprove mode,
+             --  as calling Machine as part of interval checking may lead
+             --  to spurious warnings.
+ 
              if X_Exp < Emin_Den or not Has_Denormals (RT) then
                 if Has_Signed_Zeros (RT) and then UR_Is_Negative (X) then
!                   if not GNATprove_Mode then
!                      Error_Msg_N
!                        ("floating-point value underflows to -0.0??", Enode);
!                   end if;
! 
                    return Ureal_M_0;
  
                 else
!                   if not GNATprove_Mode then
!                      Error_Msg_N
!                        ("floating-point value underflows to 0.0??", Enode);
!                   end if;
! 
                    return Ureal_0;
                 end if;
  
*************** package body Eval_Fat is
*** 543,552 ****
                       UR_Is_Negative (X));
  
                 begin
                    if X_Frac_Denorm /= X_Frac then
!                      Error_Msg_N
!                        ("gradual underflow causes loss of precision??",
!                         Enode);
                       X_Frac := X_Frac_Denorm;
                    end if;
                 end;
--- 555,570 ----
                       UR_Is_Negative (X));
  
                 begin
+                   --  Do not issue warnings about loss of precision in
+                   --  GNATprove mode, as calling Machine as part of interval
+                   --  checking may lead to spurious warnings.
+ 
                    if X_Frac_Denorm /= X_Frac then
!                      if not GNATprove_Mode then
!                         Error_Msg_N
!                           ("gradual underflow causes loss of precision??",
!                            Enode);
!                      end if;
                       X_Frac := X_Frac_Denorm;
                    end if;
                 end;
diff -Nrcpad gcc-7.3.0/gcc/ada/eval_fat.ads gcc-8.1.0/gcc/ada/eval_fat.ads
*** gcc-7.3.0/gcc/ada/eval_fat.ads	Tue Nov  6 10:11:20 2012
--- gcc-8.1.0/gcc/ada/eval_fat.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2012, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/exit.c gcc-8.1.0/gcc/ada/exit.c
*** gcc-7.3.0/gcc/ada/exit.c	Fri Dec 21 22:13:34 2012
--- gcc-8.1.0/gcc/ada/exit.c	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2012, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  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-2018, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_aggr.adb gcc-8.1.0/gcc/ada/exp_aggr.adb
*** gcc-7.3.0/gcc/ada/exp_aggr.adb	Mon Jan 23 13:24:47 2017
--- gcc-8.1.0/gcc/ada/exp_aggr.adb	Thu Jan 11 08:54:12 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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 Exp_Ch7;  use Exp_Ch7;
*** 37,43 ****
  with Exp_Ch9;  use Exp_Ch9;
  with Exp_Disp; use Exp_Disp;
  with Exp_Tss;  use Exp_Tss;
- with Fname;    use Fname;
  with Freeze;   use Freeze;
  with Itypes;   use Itypes;
  with Lib;      use Lib;
--- 37,42 ----
*************** with Sinfo;    use Sinfo;
*** 60,68 ****
  with Snames;   use Snames;
  with Stand;    use Stand;
  with Stringt;  use Stringt;
- with Targparm; use Targparm;
  with Tbuild;   use Tbuild;
  with Uintp;    use Uintp;
  
  package body Exp_Aggr is
  
--- 59,67 ----
  with Snames;   use Snames;
  with Stand;    use Stand;
  with Stringt;  use Stringt;
  with Tbuild;   use Tbuild;
  with Uintp;    use Uintp;
+ with Urealp;   use Urealp;
  
  package body Exp_Aggr is
  
*************** package body Exp_Aggr is
*** 176,181 ****
--- 175,184 ----
     -- Local subprograms for Record Aggregate Expansion --
     ------------------------------------------------------
  
+    function Is_Build_In_Place_Aggregate_Return (N : Node_Id) return Boolean;
+    --  True if N is an aggregate (possibly qualified or converted) that is
+    --  being returned from a build-in-place function.
+ 
     function Build_Record_Aggr_Code
       (N   : Node_Id;
        Typ : Entity_Id;
*************** package body Exp_Aggr is
*** 187,196 ****
     --  types.
  
     procedure Convert_To_Assignments (N : Node_Id; Typ : Entity_Id);
!    --  N is an N_Aggregate or an N_Extension_Aggregate. Typ is the type of the
!    --  aggregate (which can only be a record type, this procedure is only used
!    --  for record types). Transform the given aggregate into a sequence of
!    --  assignments performed component by component.
  
     procedure Expand_Record_Aggregate
       (N           : Node_Id;
--- 190,198 ----
     --  types.
  
     procedure Convert_To_Assignments (N : Node_Id; Typ : Entity_Id);
!    --  Transform a record aggregate into a sequence of assignments performed
!    --  component by component.  N is an N_Aggregate or N_Extension_Aggregate.
!    --  Typ is the type of the record aggregate.
  
     procedure Expand_Record_Aggregate
       (N           : Node_Id;
*************** package body Exp_Aggr is
*** 238,244 ****
     --  calling Flatten.
     --
     --  This function also detects and warns about one-component aggregates that
!    --  appear in a non-static context. Even if the component value is static,
     --  such an aggregate must be expanded into an assignment.
  
     function Backend_Processing_Possible (N : Node_Id) return Boolean;
--- 240,246 ----
     --  calling Flatten.
     --
     --  This function also detects and warns about one-component aggregates that
!    --  appear in a nonstatic context. Even if the component value is static,
     --  such an aggregate must be expanded into an assignment.
  
     function Backend_Processing_Possible (N : Node_Id) return Boolean;
*************** package body Exp_Aggr is
*** 352,358 ****
        --  which hit memory limits in the backend.
  
        function Component_Count (T : Entity_Id) return Nat;
!       --  The limit is applied to the total number of components that the
        --  aggregate will have, which is the number of static expressions
        --  that will appear in the flattened array. This requires a recursive
        --  computation of the number of scalar components of the structure.
--- 354,360 ----
        --  which hit memory limits in the backend.
  
        function Component_Count (T : Entity_Id) return Nat;
!       --  The limit is applied to the total number of subcomponents that the
        --  aggregate will have, which is the number of static expressions
        --  that will appear in the flattened array. This requires a recursive
        --  computation of the number of scalar components of the structure.
*************** package body Exp_Aggr is
*** 399,406 ****
                    return 0;
  
                 else
!                   return
!                     Siz * UI_To_Int (Expr_Value (Hi) - Expr_Value (Lo) + 1);
                 end if;
              end;
  
--- 401,420 ----
                    return 0;
  
                 else
!                   --  If the number of components is greater than Int'Last,
!                   --  then return Int'Last, so caller will return False (Aggr
!                   --  size is not OK). Otherwise, UI_To_Int will crash.
! 
!                   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;
!                   end;
                 end if;
              end;
  
*************** package body Exp_Aggr is
*** 414,420 ****
     --  Start of processing for Aggr_Size_OK
  
     begin
!       --  The normal aggregate limit is 50000, but we increase this limit to
        --  2**24 (about 16 million) if Restrictions (No_Elaboration_Code) or
        --  Restrictions (No_Implicit_Loops) is specified, since in either case
        --  we are at risk of declaring the program illegal because of this
--- 428,434 ----
     --  Start of processing for Aggr_Size_OK
  
     begin
!       --  The normal aggregate limit is 500000, but we increase this limit to
        --  2**24 (about 16 million) if Restrictions (No_Elaboration_Code) or
        --  Restrictions (No_Implicit_Loops) is specified, since in either case
        --  we are at risk of declaring the program illegal because of this
*************** package body Exp_Aggr is
*** 434,440 ****
        --  Finally, we use a small limit in CodePeer mode where we favor loops
        --  instead of thousands of single assignments (from large aggregates).
  
!       Max_Aggr_Size := 50000;
  
        if CodePeer_Mode then
           Max_Aggr_Size := 100;
--- 448,454 ----
        --  Finally, we use a small limit in CodePeer mode where we favor loops
        --  instead of thousands of single assignments (from large aggregates).
  
!       Max_Aggr_Size := 500000;
  
        if CodePeer_Mode then
           Max_Aggr_Size := 100;
*************** package body Exp_Aggr is
*** 478,484 ****
           end if;
  
           --  One-component aggregates are suspicious, and if the context type
!          --  is an object declaration with non-static bounds it will trip gcc;
           --  such an aggregate must be expanded into a single assignment.
  
           if Hiv = Lov and then Nkind (Parent (N)) = N_Object_Declaration then
--- 492,498 ----
           end if;
  
           --  One-component aggregates are suspicious, and if the context type
!          --  is an object declaration with nonstatic bounds it will trip gcc;
           --  such an aggregate must be expanded into a single assignment.
  
           if Hiv = Lov and then Nkind (Parent (N)) = N_Object_Declaration then
*************** package body Exp_Aggr is
*** 633,654 ****
              return False;
           end if;
  
!          --  Checks 11: (part of an object declaration)
  
!          if Modify_Tree_For_C
!            and then Nkind (Parent (N)) /= N_Object_Declaration
!            and then
!              (Nkind (Parent (N)) /= N_Qualified_Expression
!                or else Nkind (Parent (Parent (N))) /= N_Object_Declaration)
!          then
!             return False;
           end if;
  
           --  Checks on components
  
           --  Recurse to check subaggregates, which may appear in qualified
           --  expressions. If delayed, the front-end will have to expand.
!          --  If the component is a discriminated record, treat as non-static,
           --  as the back-end cannot handle this properly.
  
           Expr := First (Expressions (N));
--- 647,680 ----
              return False;
           end if;
  
!          --  Checks 11: The C code generator cannot handle aggregates that are
!          --  not part of an object declaration.
  
!          if Modify_Tree_For_C then
!             declare
!                Par : Node_Id := Parent (N);
! 
!             begin
!                --  Skip enclosing nested aggregates and their qualified
!                --  expressions.
! 
!                while Nkind (Par) = N_Aggregate
!                  or else Nkind (Par) = N_Qualified_Expression
!                loop
!                   Par := Parent (Par);
!                end loop;
! 
!                if Nkind (Par) /= N_Object_Declaration then
!                   return False;
!                end if;
!             end;
           end if;
  
           --  Checks on components
  
           --  Recurse to check subaggregates, which may appear in qualified
           --  expressions. If delayed, the front-end will have to expand.
!          --  If the component is a discriminated record, treat as nonstatic,
           --  as the back-end cannot handle this properly.
  
           Expr := First (Expressions (N));
*************** package body Exp_Aggr is
*** 739,748 ****
        --  Checks 5 (if the component type is tagged, then we may need to do
        --  tag adjustments. Perhaps this should be refined to check for any
        --  component associations that actually need tag adjustment, similar
!       --  to the test in Component_Not_OK_For_Backend for record aggregates
!       --  with tagged components, but not clear whether it's worthwhile ???;
!       --  in the case of virtual machines (no Tagged_Type_Expansion), object
!       --  tags are handled implicitly).
  
        if Is_Tagged_Type (Component_Type (Typ))
          and then Tagged_Type_Expansion
--- 765,774 ----
        --  Checks 5 (if the component type is tagged, then we may need to do
        --  tag adjustments. Perhaps this should be refined to check for any
        --  component associations that actually need tag adjustment, similar
!       --  to the test in Component_OK_For_Backend for record aggregates with
!       --  tagged components, but not clear whether it's worthwhile ???; in the
!       --  case of virtual machines (no Tagged_Type_Expansion), object tags are
!       --  handled implicitly).
  
        if Is_Tagged_Type (Component_Type (Typ))
          and then Tagged_Type_Expansion
*************** package body Exp_Aggr is
*** 1225,1230 ****
--- 1251,1257 ----
  
              if Finalization_OK
                and then not Is_Limited_Type (Comp_Typ)
+               and then not Is_Build_In_Place_Function_Call (Init_Expr)
                and then not
                  (Is_Array_Type (Comp_Typ)
                    and then Is_Controlled (Component_Type (Comp_Typ))
*************** package body Exp_Aggr is
*** 1324,1330 ****
  
              In_Place_Expansion :=
                Nkind (Expr) = N_Function_Call
!                 and then not Is_Limited_Type (Comp_Typ);
  
              --  The initialization expression is a controlled function call.
              --  Perform in-place removal of side effects to avoid creating a
--- 1351,1357 ----
  
              In_Place_Expansion :=
                Nkind (Expr) = N_Function_Call
!                 and then not Is_Build_In_Place_Result_Type (Comp_Typ);
  
              --  The initialization expression is a controlled function call.
              --  Perform in-place removal of side effects to avoid creating a
*************** package body Exp_Aggr is
*** 1506,1513 ****
              --  the analysis of non-array aggregates now in order to get the
              --  value of Expansion_Delayed flag for the inner aggregate ???
  
              if Present (Comp_Typ) and then not Is_Array_Type (Comp_Typ) then
!                Analyze_And_Resolve (Expr_Q, Comp_Typ);
              end if;
  
              if Is_Delayed_Aggregate (Expr_Q) then
--- 1533,1551 ----
              --  the analysis of non-array aggregates now in order to get the
              --  value of Expansion_Delayed flag for the inner aggregate ???
  
+             --  In the case of an iterated component association, the analysis
+             --  of the generated loop will analyze the expression in the
+             --  proper context, in which the loop parameter is visible.
+ 
              if Present (Comp_Typ) and then not Is_Array_Type (Comp_Typ) then
!                if Nkind (Parent (Expr_Q)) = N_Iterated_Component_Association
!                  or else Nkind (Parent (Parent ((Expr_Q)))) =
!                            N_Iterated_Component_Association
!                then
!                   null;
!                else
!                   Analyze_And_Resolve (Expr_Q, Comp_Typ);
!                end if;
              end if;
  
              if Is_Delayed_Aggregate (Expr_Q) then
*************** package body Exp_Aggr is
*** 2702,2708 ****
                            Selector_Name => New_Occurrence_Of (Discr, Loc)),
                        Expression => New_Copy_Tree (Discr_Val));
  
-                   Set_No_Ctrl_Actions (Discr_Init);
                    Append_To (List, Discr_Init);
                 end if;
  
--- 2740,2745 ----
*************** package body Exp_Aggr is
*** 2740,2746 ****
                  Name       => Comp_Expr,
                  Expression => New_Copy_Tree (Discriminant_Value));
  
-             Set_No_Ctrl_Actions (Instr);
              Append_To (L, Instr);
  
              Next_Discriminant (Discriminant);
--- 2777,2782 ----
*************** package body Exp_Aggr is
*** 2772,2778 ****
                  Name       => Comp_Expr,
                  Expression => New_Copy_Tree (Discriminant_Value));
  
-             Set_No_Ctrl_Actions (Instr);
              Append_To (L, Instr);
  
              Next_Stored_Discriminant (Discriminant);
--- 2808,2813 ----
*************** package body Exp_Aggr is
*** 2811,2817 ****
  
           In_Place_Expansion :=
             Nkind (Init_Expr) = N_Function_Call
!              and then not Is_Limited_Type (Comp_Typ);
  
           --  The initialization expression is a controlled function call.
           --  Perform in-place removal of side effects to avoid creating a
--- 2846,2852 ----
  
           In_Place_Expansion :=
             Nkind (Init_Expr) = N_Function_Call
!                 and then not Is_Build_In_Place_Result_Type (Comp_Typ);
  
           --  The initialization expression is a controlled function call.
           --  Perform in-place removal of side effects to avoid creating a
*************** package body Exp_Aggr is
*** 2947,2953 ****
  
           --    [Deep_]Adjust (Rec_Comp);
  
!          if Finalization_OK and then not Is_Limited_Type (Comp_Typ) then
              Adj_Call :=
                Make_Adjust_Call
                  (Obj_Ref => New_Copy_Tree (Rec_Comp),
--- 2982,2991 ----
  
           --    [Deep_]Adjust (Rec_Comp);
  
!          if Finalization_OK
!            and then not Is_Limited_Type (Comp_Typ)
!            and then not Is_Build_In_Place_Function_Call (Init_Expr)
!          then
              Adj_Call :=
                Make_Adjust_Call
                  (Obj_Ref => New_Copy_Tree (Rec_Comp),
*************** package body Exp_Aggr is
*** 3030,3044 ****
             and then Root_Type (Etype (N)) = Root_Type (Entity (Prefix (Expr)))
           then
              if Is_Entity_Name (Lhs) then
!                Rewrite (Prefix (Expr),
!                  New_Occurrence_Of (Entity (Lhs), Loc));
! 
!             elsif Nkind (Lhs) = N_Selected_Component then
!                Rewrite (Expr,
!                  Make_Attribute_Reference (Loc,
!                    Attribute_Name => Name_Unrestricted_Access,
!                    Prefix         => New_Copy_Tree (Lhs)));
!                Set_Analyzed (Parent (Expr), False);
  
              else
                 Rewrite (Expr,
--- 3068,3074 ----
             and then Root_Type (Etype (N)) = Root_Type (Entity (Prefix (Expr)))
           then
              if Is_Entity_Name (Lhs) then
!                Rewrite (Prefix (Expr), New_Occurrence_Of (Entity (Lhs), Loc));
  
              else
                 Rewrite (Expr,
*************** package body Exp_Aggr is
*** 3217,3228 ****
              --  Ada 2005 (AI-287): If the ancestor part is an aggregate of
              --  limited type, a recursive call expands the ancestor. Note that
              --  in the limited case, the ancestor part must be either a
!             --  function call (possibly qualified, or wrapped in an unchecked
!             --  conversion) or aggregate (definitely qualified).
! 
!             --  The ancestor part can also be a function call (that may be
!             --  transformed into an explicit dereference) or a qualification
!             --  of one such.
  
              elsif Is_Limited_Type (Etype (Ancestor))
                and then Nkind_In (Unqualify (Ancestor), N_Aggregate,
--- 3247,3254 ----
              --  Ada 2005 (AI-287): If the ancestor part is an aggregate of
              --  limited type, a recursive call expands the ancestor. Note that
              --  in the limited case, the ancestor part must be either a
!             --  function call (possibly qualified) or aggregate (definitely
!             --  qualified).
  
              elsif Is_Limited_Type (Etype (Ancestor))
                and then Nkind_In (Unqualify (Ancestor), N_Aggregate,
*************** package body Exp_Aggr is
*** 3307,3315 ****
  
                    if Has_Interfaces (Base_Type (Typ)) then
                       Init_Secondary_Tags
!                        (Typ        => Base_Type (Typ),
!                         Target     => Target,
!                         Stmts_List => Assign);
                    end if;
                 end if;
  
--- 3333,3342 ----
  
                    if Has_Interfaces (Base_Type (Typ)) then
                       Init_Secondary_Tags
!                        (Typ            => Base_Type (Typ),
!                         Target         => Target,
!                         Stmts_List     => Assign,
!                         Init_Tags_List => Assign);
                    end if;
                 end if;
  
*************** package body Exp_Aggr is
*** 3317,3322 ****
--- 3344,3350 ----
  
                 if Needs_Finalization (Etype (Ancestor))
                   and then not Is_Limited_Type (Etype (Ancestor))
+                  and then not Is_Build_In_Place_Function_Call (Ancestor)
                 then
                    Adj_Call :=
                      Make_Adjust_Call
*************** package body Exp_Aggr is
*** 3338,3343 ****
--- 3366,3375 ----
                    Check_Ancestor_Discriminants (Init_Typ);
                 end if;
              end if;
+ 
+             pragma Assert (Nkind (N) = N_Extension_Aggregate);
+             pragma Assert
+               (not (Ancestor_Is_Expression and Ancestor_Is_Subtype_Mark));
           end;
  
           --  Generate assignments of hidden discriminants. If the base type is
*************** package body Exp_Aggr is
*** 3842,3850 ****
  
           if Has_Interfaces (Base_Type (Typ)) then
              Init_Secondary_Tags
!               (Typ        => Base_Type (Typ),
!                Target     => Target,
!                Stmts_List => L);
           end if;
        end if;
  
--- 3874,3883 ----
  
           if Has_Interfaces (Base_Type (Typ)) then
              Init_Secondary_Tags
!               (Typ            => Base_Type (Typ),
!                Target         => Target,
!                Stmts_List     => L,
!                Init_Tags_List => L);
           end if;
        end if;
  
*************** package body Exp_Aggr is
*** 4016,4022 ****
              Next_Elmt (Disc2);
           end loop;
  
!          --  If any discriminant constraint is non-static, emit a check
  
           if Present (Cond) then
              Insert_Action (N,
--- 4049,4055 ----
              Next_Elmt (Disc2);
           end loop;
  
!          --  If any discriminant constraint is nonstatic, emit a check
  
           if Present (Cond) then
              Insert_Action (N,
*************** package body Exp_Aggr is
*** 4059,4076 ****
          and then Ekind (Current_Scope) /= E_Return_Statement
          and then not Is_Limited_Type (Typ)
        then
!          Establish_Transient_Scope
!            (Aggr,
!             Sec_Stack =>
!               Is_Controlled (Typ) or else Has_Controlled_Component (Typ));
        end if;
  
        declare
!          Node_After   : constant Node_Id := Next (N);
        begin
           Insert_Actions_After (N, Late_Expansion (Aggr, Typ, Occ));
           Collect_Initialization_Statements (Obj, N, Node_After);
        end;
        Set_No_Initialization (N);
        Initialize_Discriminants (N, Typ);
     end Convert_Aggr_In_Object_Decl;
--- 4092,4107 ----
          and then Ekind (Current_Scope) /= E_Return_Statement
          and then not Is_Limited_Type (Typ)
        then
!          Establish_Transient_Scope (Aggr, Manage_Sec_Stack => False);
        end if;
  
        declare
!          Node_After : constant Node_Id := Next (N);
        begin
           Insert_Actions_After (N, Late_Expansion (Aggr, Typ, Occ));
           Collect_Initialization_Statements (Obj, N, Node_After);
        end;
+ 
        Set_No_Initialization (N);
        Initialize_Discriminants (N, Typ);
     end Convert_Aggr_In_Object_Decl;
*************** package body Exp_Aggr is
*** 4120,4125 ****
--- 4151,4157 ----
        Parent_Node : Node_Id;
  
     begin
+       pragma Assert (Nkind_In (N, N_Aggregate, N_Extension_Aggregate));
        pragma Assert (not Is_Static_Dispatch_Table_Aggregate (N));
        pragma Assert (Is_Record_Type (Typ));
  
*************** package body Exp_Aggr is
*** 4127,4136 ****
        Parent_Kind := Nkind (Parent_Node);
  
        if Parent_Kind = N_Qualified_Expression then
! 
!          --  Check if we are in a unconstrained declaration because in this
           --  case the current delayed expansion mechanism doesn't work when
!          --  the declared object size depend on the initializing expr.
  
           Parent_Node := Parent (Parent_Node);
           Parent_Kind := Nkind (Parent_Node);
--- 4159,4167 ----
        Parent_Kind := Nkind (Parent_Node);
  
        if Parent_Kind = N_Qualified_Expression then
!          --  Check if we are in an unconstrained declaration because in this
           --  case the current delayed expansion mechanism doesn't work when
!          --  the declared object size depends on the initializing expr.
  
           Parent_Node := Parent (Parent_Node);
           Parent_Kind := Nkind (Parent_Node);
*************** package body Exp_Aggr is
*** 4138,4145 ****
           if Parent_Kind = N_Object_Declaration then
              Unc_Decl :=
                not Is_Entity_Name (Object_Definition (Parent_Node))
!                 or else Has_Discriminants
!                           (Entity (Object_Definition (Parent_Node)))
                  or else Is_Class_Wide_Type
                            (Entity (Object_Definition (Parent_Node)));
           end if;
--- 4169,4178 ----
           if Parent_Kind = N_Object_Declaration then
              Unc_Decl :=
                not Is_Entity_Name (Object_Definition (Parent_Node))
!                 or else (Nkind (N) = N_Aggregate
!                           and then
!                             Has_Discriminants
!                               (Entity (Object_Definition (Parent_Node))))
                  or else Is_Class_Wide_Type
                            (Entity (Object_Definition (Parent_Node)));
           end if;
*************** package body Exp_Aggr is
*** 4181,4191 ****
           --  finalization of the return object (which is built in place
           --  within the caller's scope).
  
!          or else
!            (Is_Limited_View (Typ)
!              and then
!                (Nkind (Parent (Parent_Node)) = N_Extended_Return_Statement
!                  or else Nkind (Parent_Node) = N_Simple_Return_Statement))
        then
           Set_Expansion_Delayed (N);
           return;
--- 4214,4220 ----
           --  finalization of the return object (which is built in place
           --  within the caller's scope).
  
!          or else Is_Build_In_Place_Aggregate_Return (N)
        then
           Set_Expansion_Delayed (N);
           return;
*************** package body Exp_Aggr is
*** 4200,4206 ****
        --  Should the condition be more restrictive ???
  
        if Requires_Transient_Scope (Typ) and then not Inside_Init_Proc then
!          Establish_Transient_Scope (N, Sec_Stack => Needs_Finalization (Typ));
        end if;
  
        --  If the aggregate is nonlimited, create a temporary. If it is limited
--- 4229,4235 ----
        --  Should the condition be more restrictive ???
  
        if Requires_Transient_Scope (Typ) and then not Inside_Init_Proc then
!          Establish_Transient_Scope (N, Manage_Sec_Stack => False);
        end if;
  
        --  If the aggregate is nonlimited, create a temporary. If it is limited
*************** package body Exp_Aggr is
*** 4274,4280 ****
        --  Check whether all components of the aggregate are compile-time known
        --  values, and can be passed as is to the back-end without further
        --  expansion.
!       --  An Iterated_component_Association is treated as non-static, but there
        --  are possibilities for optimization here.
  
        function Flatten
--- 4303,4309 ----
        --  Check whether all components of the aggregate are compile-time known
        --  values, and can be passed as is to the back-end without further
        --  expansion.
!       --  An Iterated_Component_Association is treated as nonstatic, but there
        --  are possibilities for optimization here.
  
        function Flatten
*************** package body Exp_Aggr is
*** 4528,4535 ****
                                            and then
                                              Is_Preelaborated (Spec_Entity (P)))
                                  or else
!                                   Is_Predefined_File_Name
!                                     (Unit_File_Name (Get_Source_Unit (P)))
                                then
                                   null;
  
--- 4557,4563 ----
                                            and then
                                              Is_Preelaborated (Spec_Entity (P)))
                                  or else
!                                   Is_Predefined_Unit (Get_Source_Unit (P))
                                then
                                   null;
  
*************** package body Exp_Aggr is
*** 4872,4885 ****
  
        --    1. N consists of a single OTHERS choice, possibly recursively
  
!       --    2. The array type is not packed
  
        --    3. The array type has no atomic components
  
!       --    4. The array type has no null ranges (the purpose of this is to
!       --       avoid a bogus warning for an out-of-range value).
  
!       --    5. The component type is discrete
  
        --    6. The component size is Storage_Unit or the value is of the form
        --       M * (1 + A**1 + A**2 + .. A**(K-1)) where A = 2**(Storage_Unit)
--- 4900,4913 ----
  
        --    1. N consists of a single OTHERS choice, possibly recursively
  
!       --    2. The array type has no null ranges (the purpose of this is to
!       --       avoid a bogus warning for an out-of-range value).
  
        --    3. The array type has no atomic components
  
!       --    4. The component type is elementary
  
!       --    5. The component size is a multiple of Storage_Unit
  
        --    6. The component size is Storage_Unit or the value is of the form
        --       M * (1 + A**1 + A**2 + .. A**(K-1)) where A = 2**(Storage_Unit)
*************** package body Exp_Aggr is
*** 4895,4900 ****
--- 4923,4929 ----
           Expr      : Node_Id := N;
           Low       : Node_Id;
           High      : Node_Id;
+          Csiz      : Uint;
           Remainder : Uint;
           Value     : Uint;
           Nunits    : Nat;
*************** package body Exp_Aggr is
*** 4910,4923 ****
                 return False;
              end if;
  
-             if Present (Packed_Array_Impl_Type (Ctyp)) then
-                return False;
-             end if;
- 
-             if Has_Atomic_Components (Ctyp) then
-                return False;
-             end if;
- 
              Index := First_Index (Ctyp);
              while Present (Index) loop
                 Get_Index_Bounds (Index, Low, High);
--- 4939,4944 ----
*************** package body Exp_Aggr is
*** 4941,4946 ****
--- 4962,4972 ----
                 Expr := Expression (First (Component_Associations (Expr)));
              end loop;
  
+             if Has_Atomic_Components (Ctyp) then
+                return False;
+             end if;
+ 
+             Csiz := Component_Size (Ctyp);
              Ctyp := Component_Type (Ctyp);
  
              if Is_Atomic_Or_VFA (Ctyp) then
*************** package body Exp_Aggr is
*** 4955,4961 ****
              return False;
           end if;
  
!          if not Is_Discrete_Type (Ctyp) then
              return False;
           end if;
  
--- 4981,5020 ----
              return False;
           end if;
  
!          --  Access types need to be dealt with specially
! 
!          if Is_Access_Type (Ctyp) then
! 
!             --  Component_Size is not set by Layout_Type if the component
!             --  type is an access type ???
! 
!             Csiz := Esize (Ctyp);
! 
!             --  Fat pointers are rejected as they are not really elementary
!             --  for the backend.
! 
!             if Csiz /= System_Address_Size then
!                return False;
!             end if;
! 
!             --  The supported expressions are NULL and constants, others are
!             --  rejected upfront to avoid being analyzed below, which can be
!             --  problematic for some of them, for example allocators.
! 
!             if Nkind (Expr) /= N_Null and then not Is_Entity_Name (Expr) then
!                return False;
!             end if;
! 
!          --  Scalar types are OK if their size is a multiple of Storage_Unit
! 
!          elsif Is_Scalar_Type (Ctyp) then
!             if Csiz mod System_Storage_Unit /= 0 then
!                return False;
!             end if;
! 
!          --  Composite types are rejected
! 
!          else
              return False;
           end if;
  
*************** package body Exp_Aggr is
*** 4963,4971 ****
  
           Analyze_And_Resolve (Expr, Ctyp);
  
!          --  The back end uses the Esize as the precision of the type
! 
!          Nunits := UI_To_Int (Esize (Ctyp)) / System_Storage_Unit;
  
           if Nunits = 1 then
              return True;
--- 5022,5028 ----
  
           Analyze_And_Resolve (Expr, Ctyp);
  
!          Nunits := UI_To_Int (Csiz) / System_Storage_Unit;
  
           if Nunits = 1 then
              return True;
*************** package body Exp_Aggr is
*** 4975,4980 ****
--- 5032,5045 ----
              return False;
           end if;
  
+          --  The only supported value for floating point is 0.0
+ 
+          if Is_Floating_Point_Type (Ctyp) then
+             return Expr_Value_R (Expr) = Ureal_0;
+          end if;
+ 
+          --  For other types, we can look into the value as an integer
+ 
           Value := Expr_Value (Expr);
  
           if Has_Biased_Representation (Ctyp) then
*************** package body Exp_Aggr is
*** 5320,5325 ****
--- 5385,5394 ----
              Expr : Node_Id;
  
           begin
+             if Nkind (Parent (Aggr)) = N_Iterated_Component_Association then
+                return False;
+             end if;
+ 
              if Present (Expressions (Aggr)) then
                 Expr := First (Expressions (Aggr));
                 while Present (Expr) loop
*************** package body Exp_Aggr is
*** 5428,5433 ****
--- 5497,5511 ----
                    --  For now, too complex to analyze
  
                    return False;
+ 
+                elsif Nkind (Parent (Expr)) =
+                        N_Iterated_Component_Association
+                then
+                   --  Ditto for iterated component associations, which in
+                   --  general require an enclosing loop and involve nonstatic
+                   --  expressions.
+ 
+                   return False;
                 end if;
  
                 Comp := New_Copy_Tree (Expr);
*************** package body Exp_Aggr is
*** 5480,5492 ****
                 Get_Index_Bounds (Obj_In, Obj_Lo, Obj_Hi);
  
                 if not Compile_Time_Known_Value (Aggr_Lo)
-                  or else not Compile_Time_Known_Value (Aggr_Hi)
                   or else not Compile_Time_Known_Value (Obj_Lo)
                   or else not Compile_Time_Known_Value (Obj_Hi)
                   or else Expr_Value (Aggr_Lo) /= Expr_Value (Obj_Lo)
-                  or else Expr_Value (Aggr_Hi) /= Expr_Value (Obj_Hi)
                 then
                    return False;
                 end if;
  
                 Next_Index (Aggr_In);
--- 5558,5586 ----
                 Get_Index_Bounds (Obj_In, Obj_Lo, Obj_Hi);
  
                 if not Compile_Time_Known_Value (Aggr_Lo)
                   or else not Compile_Time_Known_Value (Obj_Lo)
                   or else not Compile_Time_Known_Value (Obj_Hi)
                   or else Expr_Value (Aggr_Lo) /= Expr_Value (Obj_Lo)
                 then
                    return False;
+ 
+                --  For an assignment statement we require static matching of
+                --  bounds. Ditto for an allocator whose qualified expression
+                --  is a constrained type. If the expression in the allocator
+                --  is an unconstrained array, we accept an upper bound that
+                --  is not static, to allow for nonstatic expressions of the
+                --  base type. Clearly there are further possibilities (with
+                --  diminishing returns) for safely building arrays in place
+                --  here.
+ 
+                elsif Nkind (Parent (N)) = N_Assignment_Statement
+                  or else Is_Constrained (Etype (Parent (N)))
+                then
+                   if not Compile_Time_Known_Value (Aggr_Hi)
+                     or else Expr_Value (Aggr_Hi) /= Expr_Value (Obj_Hi)
+                   then
+                      return False;
+                   end if;
                 end if;
  
                 Next_Index (Aggr_In);
*************** package body Exp_Aggr is
*** 6068,6075 ****
        --  for default initialization, e.g. with Initialize_Scalars.
  
        if Requires_Transient_Scope (Typ) then
!          Establish_Transient_Scope
!            (N, Sec_Stack => Has_Controlled_Component (Typ));
        end if;
  
        if Has_Default_Init_Comps (N) then
--- 6162,6168 ----
        --  for default initialization, e.g. with Initialize_Scalars.
  
        if Requires_Transient_Scope (Typ) then
!          Establish_Transient_Scope (N, Manage_Sec_Stack => False);
        end if;
  
        if Has_Default_Init_Comps (N) then
*************** package body Exp_Aggr is
*** 6200,6214 ****
           Set_No_Initialization (Tmp_Decl, True);
  
           --  If we are within a loop, the temporary will be pushed on the
!          --  stack at each iteration. If the aggregate is the expression for an
!          --  allocator, it will be immediately copied to the heap and can
!          --  be reclaimed at once. We create a transient scope around the
!          --  aggregate for this purpose.
  
           if Ekind (Current_Scope) = E_Loop
             and then Nkind (Parent (Parent (N))) = N_Allocator
           then
!             Establish_Transient_Scope (N, False);
           end if;
  
           Insert_Action (N, Tmp_Decl);
--- 6293,6307 ----
           Set_No_Initialization (Tmp_Decl, True);
  
           --  If we are within a loop, the temporary will be pushed on the
!          --  stack at each iteration. If the aggregate is the expression
!          --  for an allocator, it will be immediately copied to the heap
!          --  and can be reclaimed at once. We create a transient scope
!          --  around the aggregate for this purpose.
  
           if Ekind (Current_Scope) = E_Loop
             and then Nkind (Parent (Parent (N))) = N_Allocator
           then
!             Establish_Transient_Scope (N, Manage_Sec_Stack => False);
           end if;
  
           Insert_Action (N, Tmp_Decl);
*************** package body Exp_Aggr is
*** 6246,6252 ****
           --  then we could go into an infinite recursion.
  
           if (In_Place_Assign_OK_For_Declaration or else Maybe_In_Place_OK)
-            and then not AAMP_On_Target
             and then not CodePeer_Mode
             and then not Modify_Tree_For_C
             and then not Possible_Bit_Aligned_Component (Target)
--- 6339,6344 ----
*************** package body Exp_Aggr is
*** 6261,6267 ****
                New_List (
                  Make_Assignment_Statement (Loc,
                    Name       => Target,
!                   Expression => New_Copy (N)));
  
           else
              Aggr_Code :=
--- 6353,6359 ----
                New_List (
                  Make_Assignment_Statement (Loc,
                    Name       => Target,
!                   Expression => New_Copy_Tree (N)));
  
           else
              Aggr_Code :=
*************** package body Exp_Aggr is
*** 6604,6617 ****
  
     --  If the ancestor part is an expression, add a component association for
     --  the parent field. If the type of the ancestor part is not the direct
!    --  parent of the expected type,  build recursively the needed ancestors.
!    --  If the ancestor part is a subtype_mark, replace aggregate with a decla-
!    --  ration for a temporary of the expected type, followed by individual
!    --  assignments to the given components.
  
     procedure Expand_N_Extension_Aggregate (N : Node_Id) is
-       Loc : constant Source_Ptr := Sloc  (N);
        A   : constant Node_Id    := Ancestor_Part (N);
        Typ : constant Entity_Id  := Etype (N);
  
     begin
--- 6696,6709 ----
  
     --  If the ancestor part is an expression, add a component association for
     --  the parent field. If the type of the ancestor part is not the direct
!    --  parent of the expected type, build recursively the needed ancestors.
!    --  If the ancestor part is a subtype_mark, replace aggregate with a
!    --  declaration for a temporary of the expected type, followed by
!    --  individual assignments to the given components.
  
     procedure Expand_N_Extension_Aggregate (N : Node_Id) is
        A   : constant Node_Id    := Ancestor_Part (N);
+       Loc : constant Source_Ptr := Sloc (N);
        Typ : constant Entity_Id  := Etype (N);
  
     begin
*************** package body Exp_Aggr is
*** 6667,6673 ****
        Static_Components : Boolean := True;
        --  Flag to indicate whether all components are compile-time known,
        --  and the aggregate can be constructed statically and handled by
!       --  the back-end.
  
        procedure Build_Back_End_Aggregate;
        --  Build a proper aggregate to be handled by the back-end
--- 6759,6765 ----
        Static_Components : Boolean := True;
        --  Flag to indicate whether all components are compile-time known,
        --  and the aggregate can be constructed statically and handled by
!       --  the back-end. Set to False by Component_OK_For_Backend.
  
        procedure Build_Back_End_Aggregate;
        --  Build a proper aggregate to be handled by the back-end
*************** package body Exp_Aggr is
*** 6680,6686 ****
        --  This returns true for N_Aggregate with Compile_Time_Known_Aggregate
        --  set and constants whose expression is such an aggregate, recursively.
  
!       function Component_Not_OK_For_Backend return Boolean;
        --  Check for presence of a component which makes it impossible for the
        --  backend to process the aggregate, thus requiring the use of a series
        --  of assignment statements. Cases checked for are a nested aggregate
--- 6772,6778 ----
        --  This returns true for N_Aggregate with Compile_Time_Known_Aggregate
        --  set and constants whose expression is such an aggregate, recursively.
  
!       function Component_OK_For_Backend return Boolean;
        --  Check for presence of a component which makes it impossible for the
        --  backend to process the aggregate, thus requiring the use of a series
        --  of assignment statements. Cases checked for are a nested aggregate
*************** package body Exp_Aggr is
*** 6699,6704 ****
--- 6791,6799 ----
        --  in order to minimize elaboration code. This is one case where the
        --  semantics of Ada complicate the analysis and lead to anomalies in
        --  the gcc back-end if the aggregate is not expanded into assignments.
+       --
+       --  NOTE: This sets the global Static_Components to False in most, but
+       --  not all, cases when it returns False.
  
        function Has_Per_Object_Constraint (L : List_Id) return Boolean;
        --  Return True if any element of L has Has_Per_Object_Constraint set.
*************** package body Exp_Aggr is
*** 7001,7007 ****
                    --  The ancestor part may be a nested aggregate that has
                    --  delayed expansion: recheck now.
  
!                   if Component_Not_OK_For_Backend then
                       Convert_To_Assignments (N, Typ);
                    end if;
                 end;
--- 7096,7102 ----
                    --  The ancestor part may be a nested aggregate that has
                    --  delayed expansion: recheck now.
  
!                   if not Component_OK_For_Backend then
                       Convert_To_Assignments (N, Typ);
                    end if;
                 end;
*************** package body Exp_Aggr is
*** 7068,7084 ****
  
        end Compile_Time_Known_Composite_Value;
  
!       ----------------------------------
!       -- Component_Not_OK_For_Backend --
!       ----------------------------------
  
!       function Component_Not_OK_For_Backend return Boolean is
           C      : Node_Id;
           Expr_Q : Node_Id;
  
        begin
           if No (Comps) then
!             return False;
           end if;
  
           C := First (Comps);
--- 7163,7179 ----
  
        end Compile_Time_Known_Composite_Value;
  
!       ------------------------------
!       -- Component_OK_For_Backend --
!       ------------------------------
  
!       function Component_OK_For_Backend return Boolean is
           C      : Node_Id;
           Expr_Q : Node_Id;
  
        begin
           if No (Comps) then
!             return True;
           end if;
  
           C := First (Comps);
*************** package body Exp_Aggr is
*** 7088,7094 ****
              --  and component is not ready for backend.
  
              if Box_Present (C) then
!                return True;
              end if;
  
              if Nkind (Expression (C)) = N_Qualified_Expression then
--- 7183,7189 ----
              --  and component is not ready for backend.
  
              if Box_Present (C) then
!                return False;
              end if;
  
              if Nkind (Expression (C)) = N_Qualified_Expression then
*************** package body Exp_Aggr is
*** 7097,7103 ****
                 Expr_Q := Expression (C);
              end if;
  
!             --  Return true if the aggregate has any associations for tagged
              --  components that may require tag adjustment.
  
              --  These are cases where the source expression may have a tag that
--- 7192,7198 ----
                 Expr_Q := Expression (C);
              end if;
  
!             --  Return False if the aggregate has any associations for tagged
              --  components that may require tag adjustment.
  
              --  These are cases where the source expression may have a tag that
*************** package body Exp_Aggr is
*** 7114,7142 ****
                and then Tagged_Type_Expansion
              then
                 Static_Components := False;
!                return True;
  
              elsif Is_Delayed_Aggregate (Expr_Q) then
                 Static_Components := False;
!                return True;
  
              elsif Possible_Bit_Aligned_Component (Expr_Q) then
                 Static_Components := False;
!                return True;
  
              elsif Modify_Tree_For_C
                and then Nkind (C) = N_Component_Association
                and then Has_Per_Object_Constraint (Choices (C))
              then
                 Static_Components := False;
!                return True;
  
              elsif Modify_Tree_For_C
                and then Nkind (Expr_Q) = N_Identifier
                and then Is_Array_Type (Etype (Expr_Q))
              then
                 Static_Components := False;
!                return True;
              end if;
  
              if Is_Elementary_Type (Etype (Expr_Q)) then
--- 7209,7244 ----
                and then Tagged_Type_Expansion
              then
                 Static_Components := False;
!                return False;
  
              elsif Is_Delayed_Aggregate (Expr_Q) then
                 Static_Components := False;
!                return False;
  
              elsif Possible_Bit_Aligned_Component (Expr_Q) then
                 Static_Components := False;
!                return False;
  
              elsif Modify_Tree_For_C
                and then Nkind (C) = N_Component_Association
                and then Has_Per_Object_Constraint (Choices (C))
              then
                 Static_Components := False;
!                return False;
  
              elsif Modify_Tree_For_C
                and then Nkind (Expr_Q) = N_Identifier
                and then Is_Array_Type (Etype (Expr_Q))
              then
                 Static_Components := False;
!                return False;
! 
!             elsif Modify_Tree_For_C
!               and then Nkind (Expr_Q) = N_Type_Conversion
!               and then Is_Array_Type (Etype (Expr_Q))
!             then
!                Static_Components := False;
!                return False;
              end if;
  
              if Is_Elementary_Type (Etype (Expr_Q)) then
*************** package body Exp_Aggr is
*** 7150,7164 ****
                 if Is_Private_Type (Etype (Expr_Q))
                   and then Has_Discriminants (Etype (Expr_Q))
                 then
!                   return True;
                 end if;
              end if;
  
              Next (C);
           end loop;
  
!          return False;
!       end Component_Not_OK_For_Backend;
  
        -------------------------------
        -- Has_Per_Object_Constraint --
--- 7252,7266 ----
                 if Is_Private_Type (Etype (Expr_Q))
                   and then Has_Discriminants (Etype (Expr_Q))
                 then
!                   return False;
                 end if;
              end if;
  
              Next (C);
           end loop;
  
!          return True;
!       end Component_OK_For_Backend;
  
        -------------------------------
        -- Has_Per_Object_Constraint --
*************** package body Exp_Aggr is
*** 7248,7254 ****
        --  Ada 2005 (AI-318-2): We need to convert to assignments if components
        --  are build-in-place function calls. The assignments will each turn
        --  into a build-in-place function call. If components are all static,
!       --  we can pass the aggregate to the backend regardless of limitedness.
  
        --  Extension aggregates, aggregates in extended return statements, and
        --  aggregates for C++ imported types must be expanded.
--- 7350,7356 ----
        --  Ada 2005 (AI-318-2): We need to convert to assignments if components
        --  are build-in-place function calls. The assignments will each turn
        --  into a build-in-place function call. If components are all static,
!       --  we can pass the aggregate to the back end regardless of limitedness.
  
        --  Extension aggregates, aggregates in extended return statements, and
        --  aggregates for C++ imported types must be expanded.
*************** package body Exp_Aggr is
*** 7265,7271 ****
              Convert_To_Assignments (N, Typ);
  
           elsif not Size_Known_At_Compile_Time (Typ)
!            or else Component_Not_OK_For_Backend
             or else not Static_Components
           then
              Convert_To_Assignments (N, Typ);
--- 7367,7373 ----
              Convert_To_Assignments (N, Typ);
  
           elsif not Size_Known_At_Compile_Time (Typ)
!            or else not Component_OK_For_Backend
             or else not Static_Components
           then
              Convert_To_Assignments (N, Typ);
*************** package body Exp_Aggr is
*** 7300,7306 ****
  
        --  Check components
  
!       elsif Component_Not_OK_For_Backend then
           Convert_To_Assignments (N, Typ);
  
        --  If an ancestor is private, some components are not inherited and we
--- 7402,7408 ----
  
        --  Check components
  
!       elsif not Component_OK_For_Backend then
           Convert_To_Assignments (N, Typ);
  
        --  If an ancestor is private, some components are not inherited and we
*************** package body Exp_Aggr is
*** 7405,7410 ****
--- 7507,7539 ----
        return False;
     end Has_Default_Init_Comps;
  
+    ----------------------------------------
+    -- Is_Build_In_Place_Aggregate_Return --
+    ----------------------------------------
+ 
+    function Is_Build_In_Place_Aggregate_Return (N : Node_Id) return Boolean is
+       P : Node_Id := Parent (N);
+ 
+    begin
+       while Nkind (P) = N_Qualified_Expression loop
+          P := Parent (P);
+       end loop;
+ 
+       if Nkind (P) = N_Simple_Return_Statement then
+          null;
+ 
+       elsif Nkind (Parent (P)) = N_Extended_Return_Statement then
+          P := Parent (P);
+ 
+       else
+          return False;
+       end if;
+ 
+       return
+         Is_Build_In_Place_Function
+           (Return_Applies_To (Return_Statement_Entity (P)));
+    end Is_Build_In_Place_Aggregate_Return;
+ 
     --------------------------
     -- Is_Delayed_Aggregate --
     --------------------------
*************** package body Exp_Aggr is
*** 7452,7458 ****
        Typ : constant Entity_Id := Base_Type (Etype (N));
  
     begin
!       return Static_Dispatch_Tables
          and then Tagged_Type_Expansion
          and then RTU_Loaded (Ada_Tags)
  
--- 7581,7587 ----
        Typ : constant Entity_Id := Base_Type (Etype (N));
  
     begin
!       return Building_Static_Dispatch_Tables
          and then Tagged_Type_Expansion
          and then RTU_Loaded (Ada_Tags)
  
*************** package body Exp_Aggr is
*** 7643,7649 ****
           function Get_Component_Val (N : Node_Id) return Uint;
           --  Given a expression value N of the component type Ctyp, returns a
           --  value of Csiz (component size) bits representing this value. If
!          --  the value is non-static or any other reason exists why the value
           --  cannot be returned, then Not_Handled is raised.
  
           -----------------------
--- 7772,7778 ----
           function Get_Component_Val (N : Node_Id) return Uint;
           --  Given a expression value N of the component type Ctyp, returns a
           --  value of Csiz (component size) bits representing this value. If
!          --  the value is nonstatic or any other reason exists why the value
           --  cannot be returned, then Not_Handled is raised.
  
           -----------------------
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_aggr.ads gcc-8.1.0/gcc/ada/exp_aggr.ads
*** gcc-7.3.0/gcc/ada/exp_aggr.ads	Mon Jan 23 12:07:34 2017
--- gcc-8.1.0/gcc/ada/exp_aggr.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_atag.adb gcc-8.1.0/gcc/ada/exp_atag.adb
*** gcc-7.3.0/gcc/ada/exp_atag.adb	Fri Aug  1 09:57:04 2014
--- gcc-8.1.0/gcc/ada/exp_atag.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2006-2014, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or 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-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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
*** 178,184 ****
        --    Typ_TSD  : constant Type_Specific_Data_Ptr
        --                          := Build_TSD (Address!(Typ_Tag));
        --    Index    : constant Integer := Obj_TSD.Idepth - Typ_TSD.Idepth
!       --    Index > 0 and then Obj_TSD.Tags_Table (Index) = Typ'Tag
  
        Insert_Action (Related_Nod,
          Make_Object_Declaration (Loc,
--- 178,184 ----
        --    Typ_TSD  : constant Type_Specific_Data_Ptr
        --                          := Build_TSD (Address!(Typ_Tag));
        --    Index    : constant Integer := Obj_TSD.Idepth - Typ_TSD.Idepth
!       --    Index >= 0 and then Obj_TSD.Tags_Table (Index) = Typ'Tag
  
        Insert_Action (Related_Nod,
          Make_Object_Declaration (Loc,
*************** package body Exp_Atag is
*** 197,215 ****
          Make_Object_Declaration (Loc,
            Defining_Identifier => Obj_TSD,
            Constant_Present    => True,
!           Object_Definition   => New_Occurrence_Of
!                                    (RTE (RE_Type_Specific_Data_Ptr), Loc),
!           Expression => Build_TSD (Loc, New_Occurrence_Of (Tag_Addr, Loc))));
  
        Insert_Action (Related_Nod,
          Make_Object_Declaration (Loc,
            Defining_Identifier => Typ_TSD,
            Constant_Present    => True,
!           Object_Definition   => New_Occurrence_Of
!                                    (RTE (RE_Type_Specific_Data_Ptr), Loc),
!           Expression => Build_TSD (Loc,
!                           Unchecked_Convert_To (RTE (RE_Address),
!                             Typ_Tag_Node))));
  
        Insert_Action (Related_Nod,
          Make_Object_Declaration (Loc,
--- 197,218 ----
          Make_Object_Declaration (Loc,
            Defining_Identifier => Obj_TSD,
            Constant_Present    => True,
!           Object_Definition   =>
!             New_Occurrence_Of (RTE (RE_Type_Specific_Data_Ptr), Loc),
!           Expression          =>
!             Build_TSD (Loc, New_Occurrence_Of (Tag_Addr, Loc))),
!         Suppress => All_Checks);
  
        Insert_Action (Related_Nod,
          Make_Object_Declaration (Loc,
            Defining_Identifier => Typ_TSD,
            Constant_Present    => True,
!           Object_Definition   =>
!             New_Occurrence_Of (RTE (RE_Type_Specific_Data_Ptr), Loc),
!           Expression          =>
!             Build_TSD (Loc,
!               Unchecked_Convert_To (RTE (RE_Address), Typ_Tag_Node))),
!         Suppress => All_Checks);
  
        Insert_Action (Related_Nod,
          Make_Object_Declaration (Loc,
*************** package body Exp_Atag is
*** 230,236 ****
                     Prefix        => New_Occurrence_Of (Typ_TSD, Loc),
                     Selector_Name =>
                       New_Occurrence_Of
!                        (RTE_Record_Component (RE_Idepth), Loc)))));
  
        New_Node :=
          Make_And_Then (Loc,
--- 233,240 ----
                     Prefix        => New_Occurrence_Of (Typ_TSD, Loc),
                     Selector_Name =>
                       New_Occurrence_Of
!                        (RTE_Record_Component (RE_Idepth), Loc)))),
!         Suppress => All_Checks);
  
        New_Node :=
          Make_And_Then (Loc,
*************** package body Exp_Atag is
*** 243,249 ****
              Make_Op_Eq (Loc,
                Left_Opnd =>
                  Make_Indexed_Component (Loc,
!                   Prefix =>
                      Make_Selected_Component (Loc,
                        Prefix        => New_Occurrence_Of (Obj_TSD, Loc),
                        Selector_Name =>
--- 247,253 ----
              Make_Op_Eq (Loc,
                Left_Opnd =>
                  Make_Indexed_Component (Loc,
!                   Prefix      =>
                      Make_Selected_Component (Loc,
                        Prefix        => New_Occurrence_Of (Obj_TSD, Loc),
                        Selector_Name =>
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_atag.ads gcc-8.1.0/gcc/ada/exp_atag.ads
*** gcc-7.3.0/gcc/ada/exp_atag.ads	Mon Dec 12 12:03:35 2011
--- gcc-8.1.0/gcc/ada/exp_atag.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2006-2011, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or 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-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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_Atag is
*** 54,60 ****
     --  computed in constant time by the formula:
     --
     --   Index := TSD (Obj'Tag).Idepth - TSD (Typ'Tag).Idepth;
!    --   Index > 0 and then TSD (Obj'Tag).Tags_Table (Index) = Typ'Tag
     --
     --  Related_Nod is the node where the implicit declaration of variable Index
     --  is inserted. Obj_Tag_Node is relocated.
--- 54,60 ----
     --  computed in constant time by the formula:
     --
     --   Index := TSD (Obj'Tag).Idepth - TSD (Typ'Tag).Idepth;
!    --   Index >= 0 and then TSD (Obj'Tag).Tags_Table (Index) = Typ'Tag
     --
     --  Related_Nod is the node where the implicit declaration of variable Index
     --  is inserted. Obj_Tag_Node is relocated.
*************** package Exp_Atag is
*** 147,153 ****
     --
     --  Generates:
     --    Offset_To_Top_Ptr
!    --      (Address!(Tag_Ptr!(This).all) - Offset_To_Top_Offset)
  
     function Build_Set_Predefined_Prim_Op_Address
       (Loc          : Source_Ptr;
--- 147,153 ----
     --
     --  Generates:
     --    Offset_To_Top_Ptr
!    --      (Address!(Tag_Ptr!(This).all) - Offset_To_Top_Offset).all
  
     function Build_Set_Predefined_Prim_Op_Address
       (Loc          : Source_Ptr;
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_attr.adb gcc-8.1.0/gcc/ada/exp_attr.adb
*** gcc-7.3.0/gcc/ada/exp_attr.adb	Mon Jan 23 13:20:22 2017
--- gcc-8.1.0/gcc/ada/exp_attr.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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 Exp_Pakd; use Exp_Pakd;
*** 39,45 ****
  with Exp_Strm; use Exp_Strm;
  with Exp_Tss;  use Exp_Tss;
  with Exp_Util; use Exp_Util;
- with Fname;    use Fname;
  with Freeze;   use Freeze;
  with Gnatvsn;  use Gnatvsn;
  with Itypes;   use Itypes;
--- 39,44 ----
*************** with Sinfo;    use Sinfo;
*** 63,69 ****
  with Snames;   use Snames;
  with Stand;    use Stand;
  with Stringt;  use Stringt;
- with Targparm; use Targparm;
  with Tbuild;   use Tbuild;
  with Ttypes;   use Ttypes;
  with Uintp;    use Uintp;
--- 62,67 ----
*************** package body Exp_Attr is
*** 84,89 ****
--- 82,90 ----
     --  value returned is the entity of the constructed function body. We do not
     --  bother to generate a separate spec for this subprogram.
  
+    function Build_Disp_Get_Task_Id_Call (Actual : Node_Id) return Node_Id;
+    --  Build a call to Disp_Get_Task_Id, passing Actual as actual parameter
+ 
     function Build_Record_VS_Func
       (R_Type : Entity_Id;
        Nod    : Node_Id) return Entity_Id;
*************** package body Exp_Attr is
*** 355,360 ****
--- 356,380 ----
        return Func_Id;
     end Build_Array_VS_Func;
  
+    ---------------------------------
+    -- Build_Disp_Get_Task_Id_Call --
+    ---------------------------------
+ 
+    function Build_Disp_Get_Task_Id_Call (Actual : Node_Id) return Node_Id is
+       Loc  : constant Source_Ptr := Sloc (Actual);
+       Typ  : constant Entity_Id  := Etype (Actual);
+       Subp : constant Entity_Id  := Find_Prim_Op (Typ, Name_uDisp_Get_Task_Id);
+ 
+    begin
+       --  Generate:
+       --    _Disp_Get_Task_Id (Actual)
+ 
+       return
+         Make_Function_Call (Loc,
+           Name                   => New_Occurrence_Of (Subp, Loc),
+           Parameter_Associations => New_List (Actual));
+    end Build_Disp_Get_Task_Id_Call;
+ 
     --------------------------
     -- Build_Record_VS_Func --
     --------------------------
*************** package body Exp_Attr is
*** 403,408 ****
--- 423,432 ----
     --       return True;
     --    end _Valid_Scalars;
  
+    --  If the record type is an unchecked union, we can only check components
+    --  in the invariant part, given that there are no discriminant values to
+    --  select a variant.
+ 
     function Build_Record_VS_Func
       (R_Type : Entity_Id;
        Nod    : Node_Id) return Entity_Id
*************** package body Exp_Attr is
*** 455,461 ****
        begin
           Append_To (Result, Make_VS_If (E, Component_Items (CL)));
  
!          if No (Variant_Part (CL)) then
              return Result;
           end if;
  
--- 479,487 ----
        begin
           Append_To (Result, Make_VS_If (E, Component_Items (CL)));
  
!          if No (Variant_Part (CL))
!            or else Is_Unchecked_Union (R_Type)
!          then
              return Result;
           end if;
  
*************** package body Exp_Attr is
*** 544,549 ****
--- 570,580 ----
                 elsif Field_Name = Name_uTag then
                    null;
  
+                elsif Ekind (Def_Id) = E_Discriminant
+                  and then Is_Unchecked_Union (R_Type)
+                then
+                   null;
+ 
                 --  Don't bother with component with no scalar components
  
                 elsif not Scalar_Part_Present (Etype (Def_Id)) then
*************** package body Exp_Attr is
*** 1023,1035 ****
        Base_Typ  : constant Entity_Id := Base_Type (Etype (Pref));
        Exprs     : constant List_Id   := Expressions (N);
        Aux_Decl  : Node_Id;
!       Blk       : Node_Id;
        Decls     : List_Id;
        Installed : Boolean;
        Loc       : Source_Ptr;
        Loop_Id   : Entity_Id;
        Loop_Stmt : Node_Id;
!       Result    : Node_Id;
        Scheme    : Node_Id;
        Temp_Decl : Node_Id;
        Temp_Id   : Entity_Id;
--- 1054,1066 ----
        Base_Typ  : constant Entity_Id := Base_Type (Etype (Pref));
        Exprs     : constant List_Id   := Expressions (N);
        Aux_Decl  : Node_Id;
!       Blk       : Node_Id := Empty;
        Decls     : List_Id;
        Installed : Boolean;
        Loc       : Source_Ptr;
        Loop_Id   : Entity_Id;
        Loop_Stmt : Node_Id;
!       Result    : Node_Id := Empty;
        Scheme    : Node_Id;
        Temp_Decl : Node_Id;
        Temp_Id   : Entity_Id;
*************** package body Exp_Attr is
*** 1055,1061 ****
           Loop_Stmt := N;
           while Present (Loop_Stmt) loop
              if Nkind (Loop_Stmt) = N_Loop_Statement
!               and then Comes_From_Source (Loop_Stmt)
              then
                 exit;
              end if;
--- 1086,1093 ----
           Loop_Stmt := N;
           while Present (Loop_Stmt) loop
              if Nkind (Loop_Stmt) = N_Loop_Statement
!               and then Nkind (Original_Node (Loop_Stmt)) = N_Loop_Statement
!               and then Comes_From_Source (Original_Node (Loop_Stmt))
              then
                 exit;
              end if;
*************** package body Exp_Attr is
*** 1094,1101 ****
              Decls := Declarations (Parent (Parent (Loop_Stmt)));
           end if;
  
-          Result := Empty;
- 
        --  Transform the loop into a conditional block
  
        else
--- 1126,1131 ----
*************** package body Exp_Attr is
*** 1650,1657 ****
              --  Perform a view conversion when either the argument or the
              --  formal parameter are of a private type.
  
!             if Is_Private_Type (Formal_Typ)
!               or else Is_Private_Type (Item_Typ)
              then
                 Rewrite (Item,
                   Unchecked_Convert_To (Formal_Typ, Relocate_Node (Item)));
--- 1680,1687 ----
              --  Perform a view conversion when either the argument or the
              --  formal parameter are of a private type.
  
!             if Is_Private_Type (Base_Type (Formal_Typ))
!               or else Is_Private_Type (Base_Type (Item_Typ))
              then
                 Rewrite (Item,
                   Unchecked_Convert_To (Formal_Typ, Relocate_Node (Item)));
*************** package body Exp_Attr is
*** 1723,1737 ****
  
        --  Ada 2005 (AI-318-02): If attribute prefix is a call to a build-in-
        --  place function, then a temporary return object needs to be created
!       --  and access to it must be passed to the function. Currently we limit
!       --  such functions to those with inherently limited result subtypes, but
!       --  eventually we plan to expand the functions that are treated as
!       --  build-in-place to include other composite result types.
  
!       if Ada_Version >= Ada_2005
!         and then Is_Build_In_Place_Function_Call (Pref)
!       then
!          Make_Build_In_Place_Call_In_Anonymous_Context (Pref);
        end if;
  
        --  If prefix is a protected type name, this is a reference to the
--- 1753,1780 ----
  
        --  Ada 2005 (AI-318-02): If attribute prefix is a call to a build-in-
        --  place function, then a temporary return object needs to be created
!       --  and access to it must be passed to the function.
  
!       if Is_Build_In_Place_Function_Call (Pref) then
! 
!          --  If attribute is 'Old, the context is a postcondition, and
!          --  the temporary must go in the corresponding subprogram, not
!          --  the postcondition function or any created blocks, as when
!          --  the attribute appears in a quantified expression. This is
!          --  handled below in the expansion of the attribute.
! 
!          if Attribute_Name (Parent (Pref)) = Name_Old then
!             null;
!          else
!             Make_Build_In_Place_Call_In_Anonymous_Context (Pref);
!          end if;
! 
!       --  Ada 2005 (AI-318-02): Specialization of the previous case for prefix
!       --  containing build-in-place function calls whose returned object covers
!       --  interface types.
! 
!       elsif Present (Unqual_BIP_Iface_Function_Call (Pref)) then
!          Make_Build_In_Place_Iface_Call_In_Anonymous_Context (Pref);
        end if;
  
        --  If prefix is a protected type name, this is a reference to the
*************** package body Exp_Attr is
*** 2114,2123 ****
                                       (Etype (Prefix (Ref_Object))));
                    begin
                       --  No implicit conversion required if designated types
!                      --  match, or if we have an unrestricted access.
  
                       if Obj_DDT /= Btyp_DDT
-                        and then Id /= Attribute_Unrestricted_Access
                         and then not (Is_Class_Wide_Type (Obj_DDT)
                                        and then Etype (Obj_DDT) = Btyp_DDT)
                       then
--- 2157,2165 ----
                                       (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
*************** package body Exp_Attr is
*** 2217,2223 ****
           --  issues are taken care of by the virtual machine.
  
           elsif Is_Class_Wide_Type (Ptyp)
!            and then Is_Interface (Ptyp)
             and then Tagged_Type_Expansion
             and then not (Nkind (Pref) in N_Has_Entity
                            and then Is_Subprogram (Entity (Pref)))
--- 2259,2265 ----
           --  issues are taken care of by the virtual machine.
  
           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)))
*************** package body Exp_Attr is
*** 2473,2478 ****
--- 2515,2521 ----
        --  Transforms 'Callable attribute into a call to the Callable function
  
        when Attribute_Callable =>
+ 
           --  We have an object of a task interface class-wide type as a prefix
           --  to Callable. Generate:
           --    callable (Task_Id (Pref._disp_get_task_id));
*************** package body Exp_Attr is
*** 2490,2505 ****
                    Make_Unchecked_Type_Conversion (Loc,
                      Subtype_Mark =>
                        New_Occurrence_Of (RTE (RO_ST_Task_Id), Loc),
!                     Expression   =>
!                       Make_Selected_Component (Loc,
!                         Prefix        =>
!                           New_Copy_Tree (Pref),
!                         Selector_Name =>
!                           Make_Identifier (Loc, Name_uDisp_Get_Task_Id))))));
  
           else
!             Rewrite (N,
!               Build_Call_With_Task (Pref, RTE (RE_Callable)));
           end if;
  
           Analyze_And_Resolve (N, Standard_Boolean);
--- 2533,2542 ----
                    Make_Unchecked_Type_Conversion (Loc,
                      Subtype_Mark =>
                        New_Occurrence_Of (RTE (RO_ST_Task_Id), Loc),
!                     Expression   => Build_Disp_Get_Task_Id_Call (Pref)))));
  
           else
!             Rewrite (N, Build_Call_With_Task (Pref, RTE (RE_Callable)));
           end if;
  
           Analyze_And_Resolve (N, Standard_Boolean);
*************** package body Exp_Attr is
*** 2658,2663 ****
--- 2695,2712 ----
                New_Occurrence_Of
                  (Extra_Constrained (Formal_Ent), Sloc (N)));
  
+          --  If the prefix is an access to object, the attribute applies to
+          --  the designated object, so rewrite with an explicit dereference.
+ 
+          elsif Is_Access_Type (Etype (Pref))
+            and then
+              (not Is_Entity_Name (Pref) or else Is_Object (Entity (Pref)))
+          then
+             Rewrite (Pref,
+               Make_Explicit_Dereference (Loc, Relocate_Node (Pref)));
+             Analyze_And_Resolve (N, Standard_Boolean);
+             return;
+ 
           --  For variables with a Extra_Constrained field, we use the
           --  corresponding entity.
  
*************** package body Exp_Attr is
*** 3026,3041 ****
        --  Note: The Elaborated attribute is never passed to the back end
  
        when Attribute_Elaborated => Elaborated : declare
!          Ent : constant Entity_Id := Entity (Pref);
  
        begin
!          if Present (Elaboration_Entity (Ent)) then
              Rewrite (N,
                Make_Op_Ne (Loc,
!                 Left_Opnd =>
!                   New_Occurrence_Of (Elaboration_Entity (Ent), Loc),
!                 Right_Opnd =>
!                   Make_Integer_Literal (Loc, Uint_0)));
              Analyze_And_Resolve (N, Typ);
           else
              Rewrite (N, New_Occurrence_Of (Standard_True, Loc));
--- 3075,3089 ----
        --  Note: The Elaborated attribute is never passed to the back end
  
        when Attribute_Elaborated => Elaborated : declare
!          Elab_Id : constant Entity_Id := Elaboration_Entity (Entity (Pref));
  
        begin
!          if Present (Elab_Id) then
              Rewrite (N,
                Make_Op_Ne (Loc,
!                 Left_Opnd  => New_Occurrence_Of (Elab_Id, Loc),
!                 Right_Opnd => Make_Integer_Literal (Loc, Uint_0)));
! 
              Analyze_And_Resolve (N, Typ);
           else
              Rewrite (N, New_Occurrence_Of (Standard_True, Loc));
*************** package body Exp_Attr is
*** 3362,3385 ****
           end if;
        end First_Bit_Attr;
  
!       -----------------
!       -- Fixed_Value --
!       -----------------
  
!       --  We transform:
  
        --     fixtype'Fixed_Value (integer-value)
  
        --  into
  
!       --     fixtype(integer-value)
  
        --  We do all the required analysis of the conversion here, because we do
        --  not want this to go through the fixed-point conversion circuits. Note
        --  that the back end always treats fixed-point as equivalent to the
        --  corresponding integer type anyway.
  
!       when Attribute_Fixed_Value =>
           Rewrite (N,
             Make_Type_Conversion (Loc,
               Subtype_Mark => New_Occurrence_Of (Entity (Pref), Loc),
--- 3410,3439 ----
           end if;
        end First_Bit_Attr;
  
!       --------------------------------
!       -- Fixed_Value, Integer_Value --
!       --------------------------------
  
!       --  We transform
  
        --     fixtype'Fixed_Value (integer-value)
+       --     inttype'Fixed_Value (fixed-value)
  
        --  into
  
!       --     fixtype (integer-value)
!       --     inttype (fixed-value)
! 
!       --  respectively.
  
        --  We do all the required analysis of the conversion here, because we do
        --  not want this to go through the fixed-point conversion circuits. Note
        --  that the back end always treats fixed-point as equivalent to the
        --  corresponding integer type anyway.
  
!       when Attribute_Fixed_Value
!          | Attribute_Integer_Value
!       =>
           Rewrite (N,
             Make_Type_Conversion (Loc,
               Subtype_Mark => New_Occurrence_Of (Entity (Pref), Loc),
*************** package body Exp_Attr is
*** 3576,3587 ****
                and then Is_Task_Interface (Ptyp)
              then
                 Rewrite (N,
!                  Unchecked_Convert_To (Id_Kind,
!                    Make_Selected_Component (Loc,
!                      Prefix =>
!                        New_Copy_Tree (Pref),
!                      Selector_Name =>
!                        Make_Identifier (Loc, Name_uDisp_Get_Task_Id))));
  
              else
                 Rewrite (N,
--- 3630,3637 ----
                and then Is_Task_Interface (Ptyp)
              then
                 Rewrite (N,
!                  Unchecked_Convert_To
!                    (Id_Kind, Build_Disp_Get_Task_Id_Call (Pref)));
  
              else
                 Rewrite (N,
*************** package body Exp_Attr is
*** 3599,3605 ****
        --  Image attribute is handled in separate unit Exp_Imgv
  
        when Attribute_Image =>
!          Exp_Imgv.Expand_Image_Attribute (N);
  
        ---------
        -- Img --
--- 3649,3663 ----
        --  Image attribute is handled in separate unit Exp_Imgv
  
        when Attribute_Image =>
! 
!          --  Leave attribute unexpanded in CodePeer mode: the gnat2scil
!          --  back-end knows how to handle this attribute directly.
! 
!          if CodePeer_Mode then
!             return;
!          end if;
! 
!          Expand_Image_Attribute (N);
  
        ---------
        -- Img --
*************** package body Exp_Attr is
*** 3608,3620 ****
        --  X'Img is expanded to typ'Image (X), where typ is the type of X
  
        when Attribute_Img =>
!          Rewrite (N,
!            Make_Attribute_Reference (Loc,
!              Prefix         => New_Occurrence_Of (Ptyp, Loc),
!              Attribute_Name => Name_Image,
!              Expressions    => New_List (Relocate_Node (Pref))));
! 
!          Analyze_And_Resolve (N, Standard_String);
  
        -----------
        -- Input --
--- 3666,3672 ----
        --  X'Img is expanded to typ'Image (X), where typ is the type of X
  
        when Attribute_Img =>
!          Expand_Image_Attribute (N);
  
        -----------
        -- Input --
*************** package body Exp_Attr is
*** 3789,3798 ****
  
                 begin
                    --  Read the internal tag (RM 13.13.2(34)) and use it to
!                   --  initialize a dummy tag value:
! 
                    --     Descendant_Tag (String'Input (Strm), P_Type);
! 
                    --  This value is used only to provide a controlling
                    --  argument for the eventual _Input call. Descendant_Tag is
                    --  called rather than Internal_Tag to ensure that we have a
--- 3841,3857 ----
  
                 begin
                    --  Read the internal tag (RM 13.13.2(34)) and use it to
!                   --  initialize a dummy tag value. We used to generate:
!                   --
                    --     Descendant_Tag (String'Input (Strm), P_Type);
!                   --
!                   --  which turns into a call to String_Input_Blk_IO. However,
!                   --  if the input is malformed, that could try to read an
!                   --  enormous String, causing chaos. So instead we call
!                   --  String_Input_Tag, which does the same thing as
!                   --  String_Input_Blk_IO, except that if the String is
!                   --  absurdly long, it raises an exception.
!                   --
                    --  This value is used only to provide a controlling
                    --  argument for the eventual _Input call. Descendant_Tag is
                    --  called rather than Internal_Tag to ensure that we have a
*************** package body Exp_Attr is
*** 3812,3826 ****
                        Name                   =>
                          New_Occurrence_Of (RTE (RE_Descendant_Tag), Loc),
                        Parameter_Associations => New_List (
!                         Make_Attribute_Reference (Loc,
!                           Prefix         =>
!                             New_Occurrence_Of (Standard_String, Loc),
!                           Attribute_Name => Name_Input,
!                           Expressions    => New_List (
                              Relocate_Node (Duplicate_Subexpr (Strm)))),
                          Make_Attribute_Reference (Loc,
                            Prefix         => New_Occurrence_Of (P_Type, Loc),
                            Attribute_Name => Name_Tag)));
                    Set_Etype (Expr, RTE (RE_Tag));
  
                    --  Now we need to get the entity for the call, and construct
--- 3871,3887 ----
                        Name                   =>
                          New_Occurrence_Of (RTE (RE_Descendant_Tag), Loc),
                        Parameter_Associations => New_List (
!                         Make_Function_Call (Loc,
!                           Name                   =>
!                             New_Occurrence_Of
!                               (RTE (RE_String_Input_Tag), Loc),
!                           Parameter_Associations => New_List (
                              Relocate_Node (Duplicate_Subexpr (Strm)))),
+ 
                          Make_Attribute_Reference (Loc,
                            Prefix         => New_Occurrence_Of (P_Type, Loc),
                            Attribute_Name => Name_Tag)));
+ 
                    Set_Etype (Expr, RTE (RE_Tag));
  
                    --  Now we need to get the entity for the call, and construct
*************** package body Exp_Attr is
*** 3918,3954 ****
        end Input;
  
        -------------------
-       -- Integer_Value --
-       -------------------
- 
-       --  We transform
- 
-       --    inttype'Fixed_Value (fixed-value)
- 
-       --  into
- 
-       --    inttype(integer-value))
- 
-       --  we do all the required analysis of the conversion here, because we do
-       --  not want this to go through the fixed-point conversion circuits. Note
-       --  that the back end always treats fixed-point as equivalent to the
-       --  corresponding integer type anyway.
- 
-       when Attribute_Integer_Value =>
-          Rewrite (N,
-            Make_Type_Conversion (Loc,
-              Subtype_Mark => New_Occurrence_Of (Entity (Pref), Loc),
-              Expression   => Relocate_Node (First (Exprs))));
-          Set_Etype (N, Entity (Pref));
-          Set_Analyzed (N);
- 
-          --  Note: it might appear that a properly analyzed unchecked
-          --  conversion would be just fine here, but that's not the case, since
-          --  the full range check performed by the following call is critical.
- 
-          Apply_Type_Conversion_Checks (N);
- 
-       -------------------
        -- Invalid_Value --
        -------------------
  
--- 3979,3984 ----
*************** package body Exp_Attr is
*** 5516,5527 ****
  
                 --  Ada 2005 (AI-216): Program_Error is raised when executing
                 --  the default implementation of the Read attribute of an
!                --  Unchecked_Union type.
  
                 if Is_Unchecked_Union (Base_Type (U_Type)) then
!                   Insert_Action (N,
                      Make_Raise_Program_Error (Loc,
                        Reason => PE_Unchecked_Union_Restriction));
                 end if;
  
                 if Has_Discriminants (U_Type)
--- 5546,5562 ----
  
                 --  Ada 2005 (AI-216): Program_Error is raised when executing
                 --  the default implementation of the Read attribute of an
!                --  Unchecked_Union type. We replace the attribute with a
!                --  raise statement (rather than inserting it before) to handle
!                --  properly the case of an unchecked union that is a record
!                --  component.
  
                 if Is_Unchecked_Union (Base_Type (U_Type)) then
!                   Rewrite (N,
                      Make_Raise_Program_Error (Loc,
                        Reason => PE_Unchecked_Union_Restriction));
+                   Set_Etype (N, B_Type);
+                   return;
                 end if;
  
                 if Has_Discriminants (U_Type)
*************** package body Exp_Attr is
*** 6239,6245 ****
  
           elsif Comes_From_Source (N)
              and then Is_Class_Wide_Type (Etype (Prefix (N)))
!             and then Is_Interface (Etype (Prefix (N)))
           then
              --  Generate:
              --    (To_Tag_Ptr (Prefix'Address)).all
--- 6274,6280 ----
  
           elsif Comes_From_Source (N)
              and then Is_Class_Wide_Type (Etype (Prefix (N)))
!             and then Is_Interface (Underlying_Type (Etype (Prefix (N))))
           then
              --  Generate:
              --    (To_Tag_Ptr (Prefix'Address)).all
*************** package body Exp_Attr is
*** 6279,6285 ****
  
           --  The prefix of Terminated is of a task interface class-wide type.
           --  Generate:
!          --    terminated (Task_Id (Pref._disp_get_task_id));
  
           if Ada_Version >= Ada_2005
             and then Ekind (Ptyp) = E_Class_Wide_Type
--- 6314,6320 ----
  
           --  The prefix of Terminated is of a task interface class-wide type.
           --  Generate:
!          --    terminated (Task_Id (_disp_get_task_id (Pref)));
  
           if Ada_Version >= Ada_2005
             and then Ekind (Ptyp) = E_Class_Wide_Type
*************** package body Exp_Attr is
*** 6288,6305 ****
           then
              Rewrite (N,
                Make_Function_Call (Loc,
!                 Name =>
                    New_Occurrence_Of (RTE (RE_Terminated), Loc),
                  Parameter_Associations => New_List (
                    Make_Unchecked_Type_Conversion (Loc,
                      Subtype_Mark =>
                        New_Occurrence_Of (RTE (RO_ST_Task_Id), Loc),
!                     Expression =>
!                       Make_Selected_Component (Loc,
!                         Prefix =>
!                           New_Copy_Tree (Pref),
!                         Selector_Name =>
!                           Make_Identifier (Loc, Name_uDisp_Get_Task_Id))))));
  
           elsif Restricted_Profile then
              Rewrite (N,
--- 6323,6335 ----
           then
              Rewrite (N,
                Make_Function_Call (Loc,
!                 Name                   =>
                    New_Occurrence_Of (RTE (RE_Terminated), Loc),
                  Parameter_Associations => New_List (
                    Make_Unchecked_Type_Conversion (Loc,
                      Subtype_Mark =>
                        New_Occurrence_Of (RTE (RO_ST_Task_Id), Loc),
!                     Expression   => Build_Disp_Get_Task_Id_Call (Pref)))));
  
           elsif Restricted_Profile then
              Rewrite (N,
*************** package body Exp_Attr is
*** 6488,6519 ****
           ---------------------
  
           function Make_Range_Test return Node_Id is
!             Temp : constant Node_Id := Duplicate_Subexpr (Pref);
  
           begin
!             --  The value whose validity is being checked has been captured in
!             --  an object declaration. We certainly don't want this object to
!             --  appear valid because the declaration initializes it.
  
!             if Is_Entity_Name (Temp) then
!                Set_Is_Known_Valid (Entity (Temp), False);
              end if;
  
              return
                Make_In (Loc,
!                 Left_Opnd  =>
!                   Unchecked_Convert_To (Btyp, Temp),
                  Right_Opnd =>
                    Make_Range (Loc,
!                     Low_Bound =>
                        Unchecked_Convert_To (Btyp,
                          Make_Attribute_Reference (Loc,
!                           Prefix => New_Occurrence_Of (Ptyp, Loc),
                            Attribute_Name => Name_First)),
                      High_Bound =>
                        Unchecked_Convert_To (Btyp,
                          Make_Attribute_Reference (Loc,
!                           Prefix => New_Occurrence_Of (Ptyp, Loc),
                            Attribute_Name => Name_Last))));
           end Make_Range_Test;
  
--- 6518,6567 ----
           ---------------------
  
           function Make_Range_Test return Node_Id is
!             Temp : Node_Id;
  
           begin
!             --  The prefix of attribute 'Valid should always denote an object
!             --  reference. The reference is either coming directly from source
!             --  or is produced by validity check expansion. The object may be
!             --  wrapped in a conversion in which case the call to Unqual_Conv
!             --  will yield it.
  
!             --  If the prefix denotes a variable which captures the value of
!             --  an object for validation purposes, use the variable in the
!             --  range test. This ensures that no extra copies or extra reads
!             --  are produced as part of the test. Generate:
! 
!             --    Temp : ... := Object;
!             --    if not Temp in ... then
! 
!             if Is_Validation_Variable_Reference (Pref) then
!                Temp := New_Occurrence_Of (Entity (Unqual_Conv (Pref)), Loc);
! 
!             --  Otherwise the prefix is either a source object or a constant
!             --  produced by validity check expansion. Generate:
! 
!             --    Temp : constant ... := Pref;
!             --    if not Temp in ... then
! 
!             else
!                Temp := Duplicate_Subexpr (Pref);
              end if;
  
              return
                Make_In (Loc,
!                 Left_Opnd  => Unchecked_Convert_To (Btyp, Temp),
                  Right_Opnd =>
                    Make_Range (Loc,
!                     Low_Bound  =>
                        Unchecked_Convert_To (Btyp,
                          Make_Attribute_Reference (Loc,
!                           Prefix         => New_Occurrence_Of (Ptyp, Loc),
                            Attribute_Name => Name_First)),
                      High_Bound =>
                        Unchecked_Convert_To (Btyp,
                          Make_Attribute_Reference (Loc,
!                           Prefix         => New_Occurrence_Of (Ptyp, Loc),
                            Attribute_Name => Name_Last))));
           end Make_Range_Test;
  
*************** package body Exp_Attr is
*** 6884,6897 ****
           --  are any non-valid scalar subcomponents, and call the function.
  
           elsif Is_Record_Type (Ftyp)
!             and then Nkind (Type_Definition (Declaration_Node (Ftyp))) =
!                                                         N_Record_Definition
           then
              Rewrite (N,
                Make_Function_Call (Loc,
                  Name                   =>
                    New_Occurrence_Of (Build_Record_VS_Func (Ftyp, N), Loc),
!               Parameter_Associations => New_List (Pref)));
  
           --  Other record types or types with discriminants
  
--- 6932,6946 ----
           --  are any non-valid scalar subcomponents, and call the function.
  
           elsif Is_Record_Type (Ftyp)
!            and then Present (Declaration_Node (Ftyp))
!            and then Nkind (Type_Definition (Declaration_Node (Ftyp))) =
!                       N_Record_Definition
           then
              Rewrite (N,
                Make_Function_Call (Loc,
                  Name                   =>
                    New_Occurrence_Of (Build_Record_VS_Func (Ftyp, N), Loc),
!                 Parameter_Associations => New_List (Pref)));
  
           --  Other record types or types with discriminants
  
*************** package body Exp_Attr is
*** 6975,6980 ****
--- 7024,7036 ----
        --  Wide_Image attribute is handled in separate unit Exp_Imgv
  
        when Attribute_Wide_Image =>
+          --  Leave attribute unexpanded in CodePeer mode: the gnat2scil
+          --  back-end knows how to handle this attribute directly.
+ 
+          if CodePeer_Mode then
+             return;
+          end if;
+ 
           Exp_Imgv.Expand_Wide_Image_Attribute (N);
  
        ---------------------
*************** package body Exp_Attr is
*** 6984,6989 ****
--- 7040,7052 ----
        --  Wide_Wide_Image attribute is handled in separate unit Exp_Imgv
  
        when Attribute_Wide_Wide_Image =>
+          --  Leave attribute unexpanded in CodePeer mode: the gnat2scil
+          --  back-end knows how to handle this attribute directly.
+ 
+          if CodePeer_Mode then
+             return;
+          end if;
+ 
           Exp_Imgv.Expand_Wide_Wide_Image_Attribute (N);
  
        ----------------
*************** package body Exp_Attr is
*** 7200,7213 ****
                 --  Unchecked_Union type. However, if the 'Write reference is
                 --  within the generated Output stream procedure, Write outputs
                 --  the components, and the default values of the discriminant
!                --  are streamed by the Output procedure itself.
  
!                if Is_Unchecked_Union (Base_Type (U_Type))
!                  and not Is_TSS (Current_Scope, TSS_Stream_Output)
!                then
!                   Insert_Action (N,
!                     Make_Raise_Program_Error (Loc,
!                       Reason => PE_Unchecked_Union_Restriction));
                 end if;
  
                 if Has_Discriminants (U_Type)
--- 7263,7283 ----
                 --  Unchecked_Union type. However, if the 'Write reference is
                 --  within the generated Output stream procedure, Write outputs
                 --  the components, and the default values of the discriminant
!                --  are streamed by the Output procedure itself. If there are
!                --  no default values this is also erroneous.
  
!                if Is_Unchecked_Union (Base_Type (U_Type)) then
!                   if (not Is_TSS (Current_Scope, TSS_Stream_Output)
!                        and not Is_TSS (Current_Scope, TSS_Stream_Write))
!                     or else No (Discriminant_Default_Value
!                                  (First_Discriminant (U_Type)))
!                   then
!                      Rewrite (N,
!                        Make_Raise_Program_Error (Loc,
!                          Reason => PE_Unchecked_Union_Restriction));
!                      Set_Etype (N, U_Type);
!                      return;
!                   end if;
                 end if;
  
                 if Has_Discriminants (U_Type)
*************** package body Exp_Attr is
*** 7724,7730 ****
        --  instead. That is why we include the test Is_Available when dealing
        --  with these cases.
  
!       if not Is_Predefined_File_Name (Unit_File_Name (Current_Sem_Unit)) then
           --  Storage_Array as defined in package System.Storage_Elements
  
           if Is_RTE (Base_Typ, RE_Storage_Array) then
--- 7794,7800 ----
        --  instead. That is why we include the test Is_Available when dealing
        --  with these cases.
  
!       if not Is_Predefined_Unit (Current_Sem_Unit) then
           --  Storage_Array as defined in package System.Storage_Elements
  
           if Is_RTE (Base_Typ, RE_Storage_Array) then
*************** package body Exp_Attr is
*** 8198,8214 ****
        function Is_GCC_Target return Boolean is
        begin
           return not CodePeer_Mode
-            and then not AAMP_On_Target
             and then not Modify_Tree_For_C;
        end Is_GCC_Target;
  
     --  Start of processing for Is_Inline_Floating_Point_Attribute
  
     begin
!       --  Machine and Model can be expanded by the GCC and AAMP back ends only
  
        if Id = Attribute_Machine or else Id = Attribute_Model then
!          return Is_GCC_Target or else AAMP_On_Target;
  
        --  Remaining cases handled by all back ends are Rounding and Truncation
        --  when appearing as the operand of a conversion to some integer type.
--- 8268,8283 ----
        function Is_GCC_Target return Boolean is
        begin
           return not CodePeer_Mode
             and then not Modify_Tree_For_C;
        end Is_GCC_Target;
  
     --  Start of processing for Is_Inline_Floating_Point_Attribute
  
     begin
!       --  Machine and Model can be expanded by the GCC back end only
  
        if Id = Attribute_Machine or else Id = Attribute_Model then
!          return Is_GCC_Target;
  
        --  Remaining cases handled by all back ends are Rounding and Truncation
        --  when appearing as the operand of a conversion to some integer type.
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_attr.ads gcc-8.1.0/gcc/ada/exp_attr.ads
*** gcc-7.3.0/gcc/ada/exp_attr.ads	Mon Sep 10 12:47:10 2007
--- gcc-8.1.0/gcc/ada/exp_attr.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2007, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_cg.adb gcc-8.1.0/gcc/ada/exp_cg.adb
*** gcc-7.3.0/gcc/ada/exp_cg.adb	Mon Apr 28 14:58:28 2014
--- gcc-8.1.0/gcc/ada/exp_cg.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2014, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or 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-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_cg.ads gcc-8.1.0/gcc/ada/exp_cg.ads
*** gcc-7.3.0/gcc/ada/exp_cg.ads	Fri Jun 18 15:03:14 2010
--- gcc-8.1.0/gcc/ada/exp_cg.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2010, Free Software Foundation, Inc.           --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or 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-2018, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_ch10.ads gcc-8.1.0/gcc/ada/exp_ch10.ads
*** gcc-7.3.0/gcc/ada/exp_ch10.ads	Mon Sep 10 12:47:10 2007
--- gcc-8.1.0/gcc/ada/exp_ch10.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2007, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_ch11.adb gcc-8.1.0/gcc/ada/exp_ch11.adb
*** gcc-7.3.0/gcc/ada/exp_ch11.adb	Mon Jan 23 12:07:34 2017
--- gcc-8.1.0/gcc/ada/exp_ch11.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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_Ch11 is
*** 64,70 ****
  
     procedure Warn_If_No_Propagation (N : Node_Id);
     --  Called for an exception raise that is not a local raise (and thus can
!    --  not be optimized to a goto. Issues warning if No_Exception_Propagation
     --  restriction is set. N is the node for the raise or equivalent call.
  
     ---------------------------
--- 64,70 ----
  
     procedure Warn_If_No_Propagation (N : Node_Id);
     --  Called for an exception raise that is not a local raise (and thus can
!    --  not be optimized to a goto). Issues warning if No_Exception_Propagation
     --  restriction is set. N is the node for the raise or equivalent call.
  
     ---------------------------
*************** package body Exp_Ch11 is
*** 998,1012 ****
           --  if a source generated handler was not the target of a local raise.
  
           else
!             if Restriction_Active (No_Exception_Propagation)
!               and then not Has_Local_Raise (Handler)
                and then Comes_From_Source (Handler)
-               and then Warn_On_Non_Local_Exception
              then
!                Warn_No_Exception_Propagation_Active (Handler);
!                Error_Msg_N
!                  ("\?X?this handler can never be entered, "
!                   & "and has been removed", Handler);
              end if;
  
              if No_Exception_Propagation_Active then
--- 998,1007 ----
           --  if a source generated handler was not the target of a local raise.
  
           else
!             if not Has_Local_Raise (Handler)
                and then Comes_From_Source (Handler)
              then
!                Warn_If_No_Local_Raise (Handler);
              end if;
  
              if No_Exception_Propagation_Active then
*************** package body Exp_Ch11 is
*** 1424,1442 ****
           return;
        end if;
  
!       --  Add clean up actions if required
  
!       if not Nkind_In (Parent (N), N_Package_Body,
!                                    N_Accept_Statement,
!                                    N_Extended_Return_Statement)
          and then not Delay_Cleanups (Current_Scope)
- 
-         --  No cleanup action needed in thunks associated with interfaces
-         --  because they only displace the pointer to the object.
- 
          and then not Is_Thunk (Current_Scope)
        then
           Expand_Cleanup_Actions (Parent (N));
        else
           Set_First_Real_Statement (N, First (Statements (N)));
        end if;
--- 1419,1446 ----
           return;
        end if;
  
!       --  Add cleanup actions if required. No cleanup actions are needed in
!       --  thunks associated with interfaces, because they only displace the
!       --  pointer to the object. For extended return statements, we need
!       --  cleanup actions if the Handled_Statement_Sequence contains generated
!       --  objects of controlled types, for example. We do not want to clean up
!       --  the return object.
  
!       if not Nkind_In (Parent (N), N_Accept_Statement,
!                                    N_Extended_Return_Statement,
!                                    N_Package_Body)
          and then not Delay_Cleanups (Current_Scope)
          and then not Is_Thunk (Current_Scope)
        then
           Expand_Cleanup_Actions (Parent (N));
+ 
+       elsif Nkind (Parent (N)) = N_Extended_Return_Statement
+         and then Handled_Statement_Sequence (Parent (N)) = N
+         and then not Delay_Cleanups (Current_Scope)
+       then
+          pragma Assert (not Is_Thunk (Current_Scope));
+          Expand_Cleanup_Actions (Parent (N));
+ 
        else
           Set_First_Real_Statement (N, First (Statements (N)));
        end if;
*************** package body Exp_Ch11 is
*** 1859,1866 ****
--- 1863,1876 ----
           --  Otherwise, if the No_Exception_Propagation restriction is active
           --  and the warning is enabled, generate the appropriate warnings.
  
+          --  ??? Do not do it for the Call_Marker nodes inserted by the ABE
+          --  mechanism because this generates too many false positives, or
+          --  for generic instantiations for the same reason.
+ 
           elsif Warn_On_Non_Local_Exception
             and then Restriction_Active (No_Exception_Propagation)
+            and then Nkind (N) /= N_Call_Marker
+            and then Nkind (N) not in N_Generic_Instantiation
           then
              Warn_No_Exception_Propagation_Active (N);
  
*************** package body Exp_Ch11 is
*** 2116,2121 ****
--- 2126,2133 ----
              Add_Str_To_Name_Buffer ("PE_All_Guards_Closed");
           when PE_Bad_Predicated_Generic_Type =>
              Add_Str_To_Name_Buffer ("PE_Bad_Predicated_Generic_Type");
+          when PE_Build_In_Place_Mismatch =>
+             Add_Str_To_Name_Buffer ("PE_Build_In_Place_Mismatch");
           when PE_Current_Task_In_Entry_Body =>
              Add_Str_To_Name_Buffer ("PE_Current_Task_In_Entry_Body");
           when PE_Duplicated_Entry_Address =>
*************** package body Exp_Ch11 is
*** 2155,2160 ****
--- 2167,2188 ----
     end Get_RT_Exception_Name;
  
     ----------------------------
+    -- Warn_If_No_Local_Raise --
+    ----------------------------
+ 
+    procedure Warn_If_No_Local_Raise (N : Node_Id) is
+    begin
+       if Restriction_Active (No_Exception_Propagation)
+         and then Warn_On_Non_Local_Exception
+       then
+          Warn_No_Exception_Propagation_Active (N);
+ 
+          Error_Msg_N
+            ("\?X?this handler can never be entered, and has been removed", N);
+       end if;
+    end Warn_If_No_Local_Raise;
+ 
+    ----------------------------
     -- Warn_If_No_Propagation --
     ----------------------------
  
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_ch11.ads gcc-8.1.0/gcc/ada/exp_ch11.ads
*** gcc-7.3.0/gcc/ada/exp_ch11.ads	Fri Oct 23 10:43:30 2015
--- gcc-8.1.0/gcc/ada/exp_ch11.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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_Ch11 is
*** 90,93 ****
--- 90,98 ----
     --  is a local handler marking that it has a local raise. E is the entity
     --  of the corresponding exception.
  
+    procedure Warn_If_No_Local_Raise (N : Node_Id);
+    --  Called for an exception handler that is not the target of a local raise.
+    --  Issues warning if No_Exception_Propagation restriction is set. N is the
+    --  node for the handler.
+ 
  end Exp_Ch11;
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_ch12.adb gcc-8.1.0/gcc/ada/exp_ch12.adb
*** gcc-7.3.0/gcc/ada/exp_ch12.adb	Thu Aug  4 07:51:08 2011
--- gcc-8.1.0/gcc/ada/exp_ch12.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2011, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or 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-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_ch12.ads gcc-8.1.0/gcc/ada/exp_ch12.ads
*** gcc-7.3.0/gcc/ada/exp_ch12.ads	Mon Sep 10 12:47:10 2007
--- gcc-8.1.0/gcc/ada/exp_ch12.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2007, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_ch13.adb gcc-8.1.0/gcc/ada/exp_ch13.adb
*** gcc-7.3.0/gcc/ada/exp_ch13.adb	Fri Jan 13 10:19:19 2017
--- gcc-8.1.0/gcc/ada/exp_ch13.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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,33 ****
  with Checks;   use Checks;
  with Einfo;    use Einfo;
  with Exp_Ch3;  use Exp_Ch3;
! with Exp_Ch6;  use Exp_Ch6;
  with Exp_Imgv; use Exp_Imgv;
  with Exp_Tss;  use Exp_Tss;
  with Exp_Util; use Exp_Util;
--- 27,33 ----
  with Checks;   use Checks;
  with Einfo;    use Einfo;
  with Exp_Ch3;  use Exp_Ch3;
! with Exp_Ch6;
  with Exp_Imgv; use Exp_Imgv;
  with Exp_Tss;  use Exp_Tss;
  with Exp_Util; use Exp_Util;
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_ch13.ads gcc-8.1.0/gcc/ada/exp_ch13.ads
*** gcc-7.3.0/gcc/ada/exp_ch13.ads	Wed Aug  3 14:36:26 2011
--- gcc-8.1.0/gcc/ada/exp_ch13.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2011, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_ch2.adb gcc-8.1.0/gcc/ada/exp_ch2.adb
*** gcc-7.3.0/gcc/ada/exp_ch2.adb	Wed Apr 27 11:01:35 2016
--- gcc-8.1.0/gcc/ada/exp_ch2.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_ch2.ads gcc-8.1.0/gcc/ada/exp_ch2.ads
*** gcc-7.3.0/gcc/ada/exp_ch2.ads	Mon Sep 10 12:47:10 2007
--- gcc-8.1.0/gcc/ada/exp_ch2.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2007, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_ch3.adb gcc-8.1.0/gcc/ada/exp_ch3.adb
*** gcc-7.3.0/gcc/ada/exp_ch3.adb	Wed May 17 12:51:00 2017
--- gcc-8.1.0/gcc/ada/exp_ch3.adb	Thu Jan 11 08:56:18 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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 Exp_Tss;  use Exp_Tss;
*** 43,48 ****
--- 43,49 ----
  with Exp_Util; use Exp_Util;
  with Freeze;   use Freeze;
  with Ghost;    use Ghost;
+ with Lib;      use Lib;
  with Namet;    use Namet;
  with Nlists;   use Nlists;
  with Nmake;    use Nmake;
*************** with Sem_Util; use Sem_Util;
*** 67,73 ****
  with Sinfo;    use Sinfo;
  with Stand;    use Stand;
  with Snames;   use Snames;
- with Targparm; use Targparm;
  with Tbuild;   use Tbuild;
  with Ttypes;   use Ttypes;
  with Validsw;  use Validsw;
--- 68,73 ----
*************** package body Exp_Ch3 is
*** 517,523 ****
     ---------------------------
  
     procedure Build_Array_Init_Proc (A_Type : Entity_Id; Nod : Node_Id) is
!       Comp_Type        : constant Entity_Id  := Component_Type (A_Type);
        Body_Stmts       : List_Id;
        Has_Default_Init : Boolean;
        Index_List       : List_Id;
--- 517,534 ----
     ---------------------------
  
     procedure Build_Array_Init_Proc (A_Type : Entity_Id; Nod : Node_Id) is
!       Comp_Type        : constant Entity_Id := Component_Type (A_Type);
!       Comp_Simple_Init : constant Boolean   :=
!         Needs_Simple_Initialization
!           (T           => Comp_Type,
!            Consider_IS =>
!              not (Validity_Check_Copies and Is_Bit_Packed_Array (A_Type)));
!       --  True if the component needs simple initialization, based on its type,
!       --  plus the fact that we do not do simple initialization for components
!       --  of bit-packed arrays when validity checks are enabled, because the
!       --  initialization with deliberately out-of-range values would raise
!       --  Constraint_Error.
! 
        Body_Stmts       : List_Id;
        Has_Default_Init : Boolean;
        Index_List       : List_Id;
*************** package body Exp_Ch3 is
*** 558,564 ****
                    Convert_To (Comp_Type,
                      Default_Aspect_Component_Value (First_Subtype (A_Type)))));
  
!          elsif Needs_Simple_Initialization (Comp_Type) then
              Set_Assignment_OK (Comp);
              return New_List (
                Make_Assignment_Statement (Loc,
--- 569,575 ----
                    Convert_To (Comp_Type,
                      Default_Aspect_Component_Value (First_Subtype (A_Type)))));
  
!          elsif Comp_Simple_Init then
              Set_Assignment_OK (Comp);
              return New_List (
                Make_Assignment_Statement (Loc,
*************** package body Exp_Ch3 is
*** 590,596 ****
           --  the dummy Init_Proc needed for Initialize_Scalars processing.
  
           if not Has_Non_Null_Base_Init_Proc (Comp_Type)
!            and then not Needs_Simple_Initialization (Comp_Type)
             and then not Has_Task (Comp_Type)
             and then not Has_Default_Aspect (A_Type)
           then
--- 601,607 ----
           --  the dummy Init_Proc needed for Initialize_Scalars processing.
  
           if not Has_Non_Null_Base_Init_Proc (Comp_Type)
!            and then not Comp_Simple_Init
             and then not Has_Task (Comp_Type)
             and then not Has_Default_Aspect (A_Type)
           then
*************** package body Exp_Ch3 is
*** 680,686 ****
        --  init_proc.
  
        Has_Default_Init := Has_Non_Null_Base_Init_Proc (Comp_Type)
!                             or else Needs_Simple_Initialization (Comp_Type)
                              or else Has_Task (Comp_Type)
                              or else Has_Default_Aspect (A_Type);
  
--- 691,697 ----
        --  init_proc.
  
        Has_Default_Init := Has_Non_Null_Base_Init_Proc (Comp_Type)
!                             or else Comp_Simple_Init
                              or else Has_Task (Comp_Type)
                              or else Has_Default_Aspect (A_Type);
  
*************** package body Exp_Ch3 is
*** 957,966 ****
           --  label all components of that variant with the function's name.
           --  We only Generate a discriminant-checking function when the
           --  variant is not empty, to prevent the creation of dead code.
-          --  The exception to that is when Frontend_Layout_On_Target is set,
-          --  because the variant record size function generated in package
-          --  Layout needs to generate calls to all discriminant-checking
-          --  functions, including those for empty variants.
  
           Discr_Name := Entity (Name (Variant_Part_Node));
           Variant := First_Non_Pragma (Variants (Variant_Part_Node));
--- 968,973 ----
*************** package body Exp_Ch3 is
*** 968,976 ****
           while Present (Variant) loop
              Component_List_Node := Component_List (Variant);
  
!             if not Null_Present (Component_List_Node)
!               or else Frontend_Layout_On_Target
!             then
                 Func_Id := Build_Dcheck_Function (Discr_Name, Variant);
  
                 Decl :=
--- 975,981 ----
           while Present (Variant) loop
              Component_List_Node := Component_List (Variant);
  
!             if not Null_Present (Component_List_Node) then
                 Func_Id := Build_Dcheck_Function (Discr_Name, Variant);
  
                 Decl :=
*************** package body Exp_Ch3 is
*** 1431,1436 ****
--- 1436,1450 ----
  
        if Is_Null_Init_Proc (Proc) and then not Init_Or_Norm_Scalars then
           return Empty_List;
+ 
+       --  Nothing to do for an array of controlled components that have only
+       --  the inherited Initialize primitive. This is a useful optimization
+       --  for CodePeer.
+ 
+       elsif Is_Trivial_Subprogram (Proc)
+         and then Is_Array_Type (Full_Init_Type)
+       then
+          return New_List (Make_Null_Statement (Loc));
        end if;
  
        --  Use the [underlying] full view when dealing with a private type. This
*************** package body Exp_Ch3 is
*** 1451,1456 ****
--- 1465,1476 ----
              elsif Is_Generic_Actual_Type (Full_Type) then
                 Full_Type := Base_Type (Full_Type);
  
+             elsif Ekind (Full_Type) = E_Private_Subtype
+               and then (not Has_Discriminants (Full_Type)
+                          or else No (Discriminant_Constraint (Full_Type)))
+             then
+                Full_Type := Etype (Full_Type);
+ 
              --  The loop has recovered the [underlying] full view, stop the
              --  traversal.
  
*************** package body Exp_Ch3 is
*** 1692,1701 ****
        Rec_Type  : Entity_Id;
        Set_Tag   : Entity_Id := Empty;
  
!       function Build_Assignment (Id : Entity_Id; N : Node_Id) return List_Id;
!       --  Build an assignment statement which assigns the default expression
!       --  to its corresponding record component if defined. The left hand side
!       --  of the assignment is marked Assignment_OK so that initialization of
        --  limited private records works correctly. This routine may also build
        --  an adjustment call if the component is controlled.
  
--- 1712,1723 ----
        Rec_Type  : Entity_Id;
        Set_Tag   : Entity_Id := Empty;
  
!       function Build_Assignment
!         (Id      : Entity_Id;
!          Default : Node_Id) return List_Id;
!       --  Build an assignment statement that assigns the default expression to
!       --  its corresponding record component if defined. The left-hand side of
!       --  the assignment is marked Assignment_OK so that initialization of
        --  limited private records works correctly. This routine may also build
        --  an adjustment call if the component is controlled.
  
*************** package body Exp_Ch3 is
*** 1764,1786 ****
        -- Build_Assignment --
        ----------------------
  
!       function Build_Assignment (Id : Entity_Id; N : Node_Id) return List_Id is
!          N_Loc : constant Source_Ptr := Sloc (N);
!          Typ   : constant Entity_Id := Underlying_Type (Etype (Id));
  
           Adj_Call : Node_Id;
!          Exp      : Node_Id   := N;
!          Kind     : Node_Kind := Nkind (N);
           Lhs      : Node_Id;
           Res      : List_Id;
  
        begin
           Lhs :=
!            Make_Selected_Component (N_Loc,
               Prefix        => Make_Identifier (Loc, Name_uInit),
!              Selector_Name => New_Occurrence_Of (Id, N_Loc));
           Set_Assignment_OK (Lhs);
  
           --  Case of an access attribute applied to the current instance.
           --  Replace the reference to the type by a reference to the actual
           --  object. (Note that this handles the case of the top level of
--- 1786,1868 ----
        -- Build_Assignment --
        ----------------------
  
!       function Build_Assignment
!         (Id      : Entity_Id;
!          Default : Node_Id) return List_Id
!       is
!          Default_Loc : constant Source_Ptr := Sloc (Default);
!          Typ         : constant Entity_Id  := Underlying_Type (Etype (Id));
  
           Adj_Call : Node_Id;
!          Exp      : Node_Id   := Default;
!          Kind     : Node_Kind := Nkind (Default);
           Lhs      : Node_Id;
           Res      : List_Id;
  
+          function Replace_Discr_Ref (N : Node_Id) return Traverse_Result;
+          --  Analysis of the aggregate has replaced discriminants by their
+          --  corresponding discriminals, but these are irrelevant when the
+          --  component has a mutable type and is initialized with an aggregate.
+          --  Instead, they must be replaced by the values supplied in the
+          --  aggregate, that will be assigned during the expansion of the
+          --  assignment.
+ 
+          -----------------------
+          -- Replace_Discr_Ref --
+          -----------------------
+ 
+          function Replace_Discr_Ref (N : Node_Id) return Traverse_Result is
+             Val : Node_Id;
+ 
+          begin
+             if Is_Entity_Name (N)
+               and then Present (Entity (N))
+               and then Is_Formal (Entity (N))
+               and then Present (Discriminal_Link (Entity (N)))
+             then
+                Val :=
+                  Make_Selected_Component (Default_Loc,
+                    Prefix        => New_Copy_Tree (Lhs),
+                    Selector_Name =>
+                      New_Occurrence_Of
+                        (Discriminal_Link (Entity (N)), Default_Loc));
+ 
+                if Present (Val) then
+                   Rewrite (N, New_Copy_Tree (Val));
+                end if;
+             end if;
+ 
+             return OK;
+          end Replace_Discr_Ref;
+ 
+          procedure Replace_Discriminant_References is
+            new Traverse_Proc (Replace_Discr_Ref);
+ 
+       --  Start of processing for Build_Assignment
+ 
        begin
           Lhs :=
!            Make_Selected_Component (Default_Loc,
               Prefix        => Make_Identifier (Loc, Name_uInit),
!              Selector_Name => New_Occurrence_Of (Id, Default_Loc));
           Set_Assignment_OK (Lhs);
  
+          if Nkind (Exp) = N_Aggregate
+            and then Has_Discriminants (Typ)
+            and then not Is_Constrained (Base_Type (Typ))
+          then
+             --  The aggregate may provide new values for the discriminants
+             --  of the component, and other components may depend on those
+             --  discriminants. Previous analysis of those expressions have
+             --  replaced the discriminants by the formals of the initialization
+             --  procedure for the type, but these are irrelevant in the
+             --  enclosing initialization procedure: those discriminant
+             --  references must be replaced by the values provided in the
+             --  aggregate.
+ 
+             Replace_Discriminant_References (Exp);
+          end if;
+ 
           --  Case of an access attribute applied to the current instance.
           --  Replace the reference to the type by a reference to the actual
           --  object. (Note that this handles the case of the top level of
*************** package body Exp_Ch3 is
*** 1791,1806 ****
           --  traversing the expression. ???
  
           if Kind = N_Attribute_Reference
!            and then Nam_In (Attribute_Name (N), Name_Unchecked_Access,
!                                                 Name_Unrestricted_Access)
!            and then Is_Entity_Name (Prefix (N))
!            and then Is_Type (Entity (Prefix (N)))
!            and then Entity (Prefix (N)) = Rec_Type
           then
              Exp :=
!               Make_Attribute_Reference (N_Loc,
                  Prefix         =>
!                   Make_Identifier (N_Loc, Name_uInit),
                  Attribute_Name => Name_Unrestricted_Access);
           end if;
  
--- 1873,1888 ----
           --  traversing the expression. ???
  
           if Kind = N_Attribute_Reference
!            and then Nam_In (Attribute_Name (Default), Name_Unchecked_Access,
!                                                       Name_Unrestricted_Access)
!            and then Is_Entity_Name (Prefix (Default))
!            and then Is_Type (Entity (Prefix (Default)))
!            and then Entity (Prefix (Default)) = Rec_Type
           then
              Exp :=
!               Make_Attribute_Reference (Default_Loc,
                  Prefix         =>
!                   Make_Identifier (Default_Loc, Name_uInit),
                  Attribute_Name => Name_Unrestricted_Access);
           end if;
  
*************** package body Exp_Ch3 is
*** 1824,1856 ****
  
           if Is_Tagged_Type (Typ) and then Tagged_Type_Expansion then
              Append_To (Res,
!               Make_Assignment_Statement (N_Loc,
                  Name       =>
!                   Make_Selected_Component (N_Loc,
                      Prefix        =>
                        New_Copy_Tree (Lhs, New_Scope => Proc_Id),
                      Selector_Name =>
!                       New_Occurrence_Of (First_Tag_Component (Typ), N_Loc)),
  
                  Expression =>
                    Unchecked_Convert_To (RTE (RE_Tag),
                      New_Occurrence_Of
!                       (Node
!                         (First_Elmt
!                           (Access_Disp_Table (Underlying_Type (Typ)))),
!                        N_Loc))));
           end if;
  
           --  Adjust the component if controlled except if it is an aggregate
           --  that will be expanded inline.
  
           if Kind = N_Qualified_Expression then
!             Kind := Nkind (Expression (N));
           end if;
  
           if Needs_Finalization (Typ)
             and then not (Nkind_In (Kind, N_Aggregate, N_Extension_Aggregate))
!            and then not Is_Limited_View (Typ)
           then
              Adj_Call :=
                Make_Adjust_Call
--- 1906,1938 ----
  
           if Is_Tagged_Type (Typ) and then Tagged_Type_Expansion then
              Append_To (Res,
!               Make_Assignment_Statement (Default_Loc,
                  Name       =>
!                   Make_Selected_Component (Default_Loc,
                      Prefix        =>
                        New_Copy_Tree (Lhs, New_Scope => Proc_Id),
                      Selector_Name =>
!                       New_Occurrence_Of
!                         (First_Tag_Component (Typ), Default_Loc)),
  
                  Expression =>
                    Unchecked_Convert_To (RTE (RE_Tag),
                      New_Occurrence_Of
!                       (Node (First_Elmt (Access_Disp_Table (Underlying_Type
!                          (Typ)))),
!                        Default_Loc))));
           end if;
  
           --  Adjust the component if controlled except if it is an aggregate
           --  that will be expanded inline.
  
           if Kind = N_Qualified_Expression then
!             Kind := Nkind (Expression (Default));
           end if;
  
           if Needs_Finalization (Typ)
             and then not (Nkind_In (Kind, N_Aggregate, N_Extension_Aggregate))
!            and then not Is_Build_In_Place_Function_Call (Exp)
           then
              Adj_Call :=
                Make_Adjust_Call
*************** package body Exp_Ch3 is
*** 2094,2100 ****
              --  Generate
              --    function Fxx (O : in Rec_Typ) return Storage_Offset is
              --    begin
!             --       return O.Iface_Comp'Position;
              --    end Fxx;
  
              Body_Node := New_Node (N_Subprogram_Body, Loc);
--- 2176,2182 ----
              --  Generate
              --    function Fxx (O : in Rec_Typ) return Storage_Offset is
              --    begin
!             --       return -O.Iface_Comp'Position;
              --    end Fxx;
  
              Body_Node := New_Node (N_Subprogram_Body, Loc);
*************** package body Exp_Ch3 is
*** 2117,2131 ****
                  Statements     => New_List (
                    Make_Simple_Return_Statement (Loc,
                      Expression =>
!                       Make_Attribute_Reference (Loc,
!                         Prefix         =>
!                           Make_Selected_Component (Loc,
!                             Prefix        =>
!                               Unchecked_Convert_To (Acc_Type,
!                                 Make_Identifier (Loc, Name_uO)),
!                             Selector_Name =>
!                               New_Occurrence_Of (Iface_Comp, Loc)),
!                         Attribute_Name => Name_Position)))));
  
              Set_Ekind       (Func_Id, E_Function);
              Set_Mechanism   (Func_Id, Default_Mechanism);
--- 2199,2214 ----
                  Statements     => New_List (
                    Make_Simple_Return_Statement (Loc,
                      Expression =>
!                       Make_Op_Minus (Loc,
!                         Make_Attribute_Reference (Loc,
!                           Prefix         =>
!                             Make_Selected_Component (Loc,
!                               Prefix        =>
!                                 Unchecked_Convert_To (Acc_Type,
!                                   Make_Identifier (Loc, Name_uO)),
!                               Selector_Name =>
!                                 New_Occurrence_Of (Iface_Comp, Loc)),
!                           Attribute_Name => Name_Position))))));
  
              Set_Ekind       (Func_Id, E_Function);
              Set_Mechanism   (Func_Id, Default_Mechanism);
*************** package body Exp_Ch3 is
*** 2460,2477 ****
                   and then not Is_Interface (Rec_Type)
                   and then Has_Interfaces (Rec_Type)
                 then
!                   Init_Secondary_Tags
!                     (Typ            => Rec_Type,
!                      Target         => Make_Identifier (Loc, Name_uInit),
!                      Stmts_List     => Init_Tags_List,
!                      Fixed_Comps    => True,
!                      Variable_Comps => False);
!                end if;
  
!                Prepend_To (Body_Stmts,
!                  Make_If_Statement (Loc,
!                    Condition => New_Occurrence_Of (Set_Tag, Loc),
!                    Then_Statements => Init_Tags_List));
  
              --  Case 2: CPP type. The imported C++ constructor takes care of
              --  tags initialization. No action needed here because the IP
--- 2543,2592 ----
                   and then not Is_Interface (Rec_Type)
                   and then Has_Interfaces (Rec_Type)
                 then
!                   declare
!                      Elab_Sec_DT_Stmts_List : constant List_Id := New_List;
!                      Elab_List              : List_Id          := New_List;
  
!                   begin
!                      Init_Secondary_Tags
!                        (Typ            => Rec_Type,
!                         Target         => Make_Identifier (Loc, Name_uInit),
!                         Init_Tags_List => Init_Tags_List,
!                         Stmts_List     => Elab_Sec_DT_Stmts_List,
!                         Fixed_Comps    => True,
!                         Variable_Comps => False);
! 
!                      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
!                         Append_To (Elab_Sec_DT_Stmts_List,
!                           Make_Assignment_Statement (Loc,
!                             Name       =>
!                               New_Occurrence_Of
!                                 (Access_Disp_Table_Elab_Flag (Rec_Type),
!                                  Loc),
!                             Expression =>
!                               New_Occurrence_Of (Standard_False, Loc)));
! 
!                         Append_To (Elab_List,
!                           Make_If_Statement (Loc,
!                             Condition       =>
!                               New_Occurrence_Of
!                                 (Access_Disp_Table_Elab_Flag (Rec_Type), Loc),
!                             Then_Statements => Elab_Sec_DT_Stmts_List));
!                      end if;
! 
!                      Prepend_List_To (Body_Stmts, Elab_List);
!                   end;
!                else
!                   Prepend_To (Body_Stmts,
!                     Make_If_Statement (Loc,
!                       Condition       => New_Occurrence_Of (Set_Tag, Loc),
!                       Then_Statements => Init_Tags_List));
!                end if;
  
              --  Case 2: CPP type. The imported C++ constructor takes care of
              --  tags initialization. No action needed here because the IP
*************** package body Exp_Ch3 is
*** 2518,2523 ****
--- 2633,2639 ----
                    Init_Secondary_Tags
                      (Typ            => Rec_Type,
                       Target         => Make_Identifier (Loc, Name_uInit),
+                      Init_Tags_List => Init_Tags_List,
                       Stmts_List     => Init_Tags_List,
                       Fixed_Comps    => True,
                       Variable_Comps => False);
*************** package body Exp_Ch3 is
*** 2591,2596 ****
--- 2707,2713 ----
                 Init_Secondary_Tags
                   (Typ            => Rec_Type,
                    Target         => Make_Identifier (Loc, Name_uInit),
+                   Init_Tags_List => Init_Tags_List,
                    Stmts_List     => Init_Tags_List,
                    Fixed_Comps    => False,
                    Variable_Comps => True);
*************** package body Exp_Ch3 is
*** 2621,2627 ****
                 --  Create a local version of Deep_Finalize which has indication
                 --  of partial initialization state.
  
!                DF_Id := Make_Temporary (Loc, 'F');
  
                 Append_To (Decls, Make_Local_Deep_Finalize (Rec_Type, DF_Id));
  
--- 2738,2746 ----
                 --  Create a local version of Deep_Finalize which has indication
                 --  of partial initialization state.
  
!                DF_Id :=
!                  Make_Defining_Identifier (Loc,
!                    Chars => New_External_Name (Name_uFinalizer));
  
                 Append_To (Decls, Make_Local_Deep_Finalize (Rec_Type, DF_Id));
  
*************** package body Exp_Ch3 is
*** 2636,2642 ****
                 --  controlled object is declared before the body of Finalize is
                 --  seen.
  
!                Set_No_Elaboration_Check (DF_Call);
  
                 Set_Exception_Handlers (Handled_Stmt_Node, New_List (
                   Make_Exception_Handler (Loc,
--- 2755,2763 ----
                 --  controlled object is declared before the body of Finalize is
                 --  seen.
  
!                if Legacy_Elaboration_Checks then
!                   Set_No_Elaboration_Check (DF_Call);
!                end if;
  
                 Set_Exception_Handlers (Handled_Stmt_Node, New_List (
                   Make_Exception_Handler (Loc,
*************** package body Exp_Ch3 is
*** 2869,2874 ****
--- 2990,2996 ----
                    declare
                       Exp   : Node_Id;
                       Nam   : Name_Id;
+                      pragma Warnings (Off, Nam);
                       Ritem : Node_Id;
  
                    begin
*************** package body Exp_Ch3 is
*** 2944,2949 ****
--- 3066,3076 ----
                             Exp :=
                               Unchecked_Convert_To
                                 (RTE (RE_Dispatching_Domain_Access), Exp);
+ 
+                         --  Conversion for Secondary_Stack_Size value
+ 
+                         elsif Nam = Name_Secondary_Stack_Size then
+                            Exp := Convert_To (RTE (RE_Size_Type), Exp);
                          end if;
  
                          Actions := Build_Assignment (Id, Exp);
*************** package body Exp_Ch3 is
*** 3163,3169 ****
           if Present (Variant_Part (Comp_List)) then
              declare
                 Variant_Alts : constant List_Id := New_List;
!                Var_Loc      : Source_Ptr;
                 Variant      : Node_Id;
  
              begin
--- 3290,3296 ----
           if Present (Variant_Part (Comp_List)) then
              declare
                 Variant_Alts : constant List_Id := New_List;
!                Var_Loc      : Source_Ptr := No_Location;
                 Variant      : Node_Id;
  
              begin
*************** package body Exp_Ch3 is
*** 4910,4916 ****
             and then
               (Has_Controlled_Component (Comp_Typ)
                 or else (Chars (Comp) /= Name_uParent
!                          and then (Is_Controlled_Active (Comp_Typ))))
           then
              Set_Has_Controlled_Component (Typ);
           end if;
--- 5037,5043 ----
             and then
               (Has_Controlled_Component (Comp_Typ)
                 or else (Chars (Comp) /= Name_uParent
!                          and then Is_Controlled (Comp_Typ)))
           then
              Set_Has_Controlled_Component (Typ);
           end if;
*************** package body Exp_Ch3 is
*** 5472,5477 ****
--- 5599,5613 ----
        --  arithmetic might yield a meaningless value for the length of the
        --  array, or its corresponding attribute.
  
+       procedure Count_Default_Sized_Task_Stacks
+         (Typ         : Entity_Id;
+          Pri_Stacks  : out Int;
+          Sec_Stacks  : out Int);
+       --  Count the number of default-sized primary and secondary task stacks
+       --  required for task objects contained within type Typ. If the number of
+       --  task objects contained within the type is not known at compile time
+       --  the procedure will return the stack counts of zero.
+ 
        procedure Default_Initialize_Object (After : Node_Id);
        --  Generate all default initialization actions for object Def_Id. Any
        --  new code is inserted after node After.
*************** package body Exp_Ch3 is
*** 5664,5669 ****
--- 5800,5918 ----
           end if;
        end Check_Large_Modular_Array;
  
+       -------------------------------------
+       -- Count_Default_Sized_Task_Stacks --
+       -------------------------------------
+ 
+       procedure Count_Default_Sized_Task_Stacks
+         (Typ         : Entity_Id;
+          Pri_Stacks  : out Int;
+          Sec_Stacks  : out Int)
+       is
+          Component : Entity_Id;
+ 
+       begin
+          --  To calculate the number of default-sized task stacks required for
+          --  an object of Typ, a depth-first recursive traversal of the AST
+          --  from the Typ entity node is undertaken. Only type nodes containing
+          --  task objects are visited.
+ 
+          Pri_Stacks := 0;
+          Sec_Stacks := 0;
+ 
+          if not Has_Task (Typ) then
+             return;
+          end if;
+ 
+          case Ekind (Typ) is
+             when E_Task_Subtype
+                | E_Task_Type
+             =>
+                --  A task type is found marking the bottom of the descent. If
+                --  the type has no representation aspect for the corresponding
+                --  stack then that stack is using the default size.
+ 
+                if Present (Get_Rep_Item (Typ, Name_Storage_Size)) then
+                   Pri_Stacks := 0;
+                else
+                   Pri_Stacks := 1;
+                end if;
+ 
+                if Present (Get_Rep_Item (Typ, Name_Secondary_Stack_Size)) then
+                   Sec_Stacks := 0;
+                else
+                   Sec_Stacks := 1;
+                end if;
+ 
+             when E_Array_Subtype
+                | E_Array_Type
+             =>
+                --  First find the number of default stacks contained within an
+                --  array component.
+ 
+                Count_Default_Sized_Task_Stacks
+                  (Component_Type (Typ),
+                   Pri_Stacks,
+                   Sec_Stacks);
+ 
+                --  Then multiply the result by the size of the array
+ 
+                declare
+                   Quantity : constant Int := Number_Of_Elements_In_Array (Typ);
+                   --  Number_Of_Elements_In_Array is non-trival, consequently
+                   --  its result is captured as an optimization.
+ 
+                begin
+                   Pri_Stacks := Pri_Stacks * Quantity;
+                   Sec_Stacks := Sec_Stacks * Quantity;
+                end;
+ 
+             when E_Protected_Subtype
+                | E_Protected_Type
+                | E_Record_Subtype
+                | E_Record_Type
+             =>
+                Component := First_Component_Or_Discriminant (Typ);
+ 
+                --  Recursively descend each component of the composite type
+                --  looking for tasks, but only if the component is marked as
+                --  having a task.
+ 
+                while Present (Component) loop
+                   if Has_Task (Etype (Component)) then
+                      declare
+                         P : Int;
+                         S : Int;
+ 
+                      begin
+                         Count_Default_Sized_Task_Stacks
+                           (Etype (Component), P, S);
+                         Pri_Stacks := Pri_Stacks + P;
+                         Sec_Stacks := Sec_Stacks + S;
+                      end;
+                   end if;
+ 
+                   Next_Component_Or_Discriminant (Component);
+                end loop;
+ 
+             when E_Limited_Private_Subtype
+                | E_Limited_Private_Type
+                | E_Record_Subtype_With_Private
+                | E_Record_Type_With_Private
+             =>
+                --  Switch to the full view of the private type to continue
+                --  search.
+ 
+                Count_Default_Sized_Task_Stacks
+                  (Full_View (Typ), Pri_Stacks, Sec_Stacks);
+ 
+             --  Other types should not contain tasks
+ 
+             when others =>
+                raise Program_Error;
+          end case;
+       end Count_Default_Sized_Task_Stacks;
+ 
        -------------------------------
        -- Default_Initialize_Object --
        -------------------------------
*************** package body Exp_Ch3 is
*** 5701,5706 ****
--- 5950,5956 ----
  
           Aggr_Init  : Node_Id;
           Comp_Init  : List_Id := No_List;
+          Fin_Block  : Node_Id;
           Fin_Call   : Node_Id;
           Init_Stmts : List_Id := No_List;
           Obj_Init   : Node_Id := Empty;
*************** package body Exp_Ch3 is
*** 5802,5808 ****
             and then not Has_Init_Expression (N)
           then
              Set_No_Initialization (N, False);
!             Set_Expression (N, Get_Simple_Init_Val (Typ, N, Esize (Def_Id)));
              Analyze_And_Resolve (Expression (N), Typ);
           end if;
  
--- 6052,6061 ----
             and then not Has_Init_Expression (N)
           then
              Set_No_Initialization (N, False);
!             Set_Expression
!               (N, New_Copy_Tree
!                     (Get_Simple_Init_Val (Typ, N, Esize (Def_Id)),
!                      New_Sloc => Sloc (Obj_Def)));
              Analyze_And_Resolve (Expression (N), Typ);
           end if;
  
*************** package body Exp_Ch3 is
*** 5848,5856 ****
                 --  controlled object is declared before the body of Finalize is
                 --  seen.
  
!                Set_No_Elaboration_Check (Fin_Call);
  
!                Append_To (Init_Stmts,
                   Make_Block_Statement (Loc,
                     Declarations               => No_List,
  
--- 6101,6111 ----
                 --  controlled object is declared before the body of Finalize is
                 --  seen.
  
!                if Legacy_Elaboration_Checks then
!                   Set_No_Elaboration_Check (Fin_Call);
!                end if;
  
!                Fin_Block :=
                   Make_Block_Statement (Loc,
                     Declarations               => No_List,
  
*************** package body Exp_Ch3 is
*** 5865,5871 ****
  
                             Statements        => New_List (
                               Fin_Call,
!                              Make_Raise_Statement (Loc)))))));
              end if;
  
           --  Otherwise finalization is not required, the initialization calls
--- 6120,6133 ----
  
                             Statements        => New_List (
                               Fin_Call,
!                              Make_Raise_Statement (Loc))))));
! 
!                --  Signal the ABE mechanism that the block carries out
!                --  initialization actions.
! 
!                Set_Is_Initialization_Block (Fin_Block);
! 
!                Append_To (Init_Stmts, Fin_Block);
              end if;
  
           --  Otherwise finalization is not required, the initialization calls
*************** package body Exp_Ch3 is
*** 6025,6030 ****
--- 6287,6305 ----
           return;
        end if;
  
+       --  No action needed for the internal imported dummy object added by
+       --  Make_DT to compute the offset of the components that reference
+       --  secondary dispatch tables; required to avoid never-ending loop
+       --  processing this internal object declaration.
+ 
+       if Tagged_Type_Expansion
+         and then Is_Internal (Def_Id)
+         and then Is_Imported (Def_Id)
+         and then Related_Type (Def_Id) = Implementation_Base_Type (Typ)
+       then
+          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
*************** package body Exp_Ch3 is
*** 6034,6040 ****
        --  Force construction of dispatch tables of library level tagged types
  
        if Tagged_Type_Expansion
!         and then Static_Dispatch_Tables
          and then Is_Library_Level_Entity (Def_Id)
          and then Is_Library_Level_Tagged_Type (Base_Typ)
          and then Ekind_In (Base_Typ, E_Record_Type,
--- 6309,6315 ----
        --  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_In (Base_Typ, E_Record_Type,
*************** package body Exp_Ch3 is
*** 6076,6081 ****
--- 6351,6387 ----
  
        Check_Large_Modular_Array;
  
+       --  If No_Implicit_Heap_Allocations or No_Implicit_Task_Allocations
+       --  restrictions are active then default-sized secondary stacks are
+       --  generated by the binder and allocated by SS_Init. To provide the
+       --  binder the number of stacks to generate, the number of default-sized
+       --  stacks required for task objects contained within the object
+       --  declaration N is calculated here as it is at this point where
+       --  unconstrained types become constrained. The result is stored in the
+       --  enclosing unit's Unit_Record.
+ 
+       --  Note if N is an array object declaration that has an initialization
+       --  expression, a second object declaration for the initialization
+       --  expression is created by the compiler. To prevent double counting
+       --  of the stacks in this scenario, the stacks of the first array are
+       --  not counted.
+ 
+       if Has_Task (Typ)
+         and then not Restriction_Active (No_Secondary_Stack)
+         and then (Restriction_Active (No_Implicit_Heap_Allocations)
+           or else Restriction_Active (No_Implicit_Task_Allocations))
+         and then not (Ekind_In (Ekind (Typ), E_Array_Type, E_Array_Subtype)
+                       and then (Has_Init_Expression (N)))
+       then
+          declare
+             PS_Count, SS_Count : Int := 0;
+          begin
+             Count_Default_Sized_Task_Stacks (Typ, PS_Count, SS_Count);
+             Increment_Primary_Stack_Count (PS_Count);
+             Increment_Sec_Stack_Count (SS_Count);
+          end;
+       end if;
+ 
        --  Default initialization required, and no expression present
  
        if No (Expr) then
*************** package body Exp_Ch3 is
*** 6191,6199 ****
           --  plan to expand the allowed forms of functions that are treated as
           --  build-in-place.
  
!          elsif Ada_Version >= Ada_2005
!            and then Is_Build_In_Place_Function_Call (Expr_Q)
!          then
              Make_Build_In_Place_Call_In_Object_Declaration (N, Expr_Q);
  
              --  The previous call expands the expression initializing the
--- 6497,6503 ----
           --  plan to expand the allowed forms of functions that are treated as
           --  build-in-place.
  
!          elsif Is_Build_In_Place_Function_Call (Expr_Q) then
              Make_Build_In_Place_Call_In_Object_Declaration (N, Expr_Q);
  
              --  The previous call expands the expression initializing the
*************** package body Exp_Ch3 is
*** 6202,6207 ****
--- 6506,6544 ----
  
              return;
  
+          --  This is the same as the previous 'elsif', except that the call has
+          --  been transformed by other expansion activities into something like
+          --  F(...)'Reference.
+ 
+          elsif Nkind (Expr_Q) = N_Reference
+            and then Is_Build_In_Place_Function_Call (Prefix (Expr_Q))
+            and then not Is_Expanded_Build_In_Place_Call
+                           (Unqual_Conv (Prefix (Expr_Q)))
+          then
+             Make_Build_In_Place_Call_In_Anonymous_Context (Prefix (Expr_Q));
+ 
+             --  The previous call expands the expression initializing the
+             --  built-in-place object into further code that will be analyzed
+             --  later. No further expansion needed here.
+ 
+             return;
+ 
+          --  Ada 2005 (AI-318-02): Specialization of the previous case for
+          --  expressions containing a build-in-place function call whose
+          --  returned object covers interface types, and Expr_Q has calls to
+          --  Ada.Tags.Displace to displace the pointer to the returned build-
+          --  in-place object to reference the secondary dispatch table of a
+          --  covered interface type.
+ 
+          elsif Present (Unqual_BIP_Iface_Function_Call (Expr_Q)) then
+             Make_Build_In_Place_Iface_Call_In_Object_Declaration (N, Expr_Q);
+ 
+             --  The previous call expands the expression initializing the
+             --  built-in-place object into further code that will be analyzed
+             --  later. No further expansion needed here.
+ 
+             return;
+ 
           --  Ada 2005 (AI-251): Rewrite the expression that initializes a
           --  class-wide interface object to ensure that we copy the full
           --  object, unless we are targetting a VM where interfaces are handled
*************** package body Exp_Ch3 is
*** 6420,6427 ****
                    declare
                       New_Id    : constant Entity_Id := Defining_Identifier (N);
                       Next_Temp : constant Entity_Id := Next_Entity (New_Id);
!                      S_Flag    : constant Boolean   :=
                                     Comes_From_Source (Def_Id);
  
                    begin
                       Set_Next_Entity (New_Id, Next_Entity (Def_Id));
--- 6757,6767 ----
                    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
                       Set_Next_Entity (New_Id, Next_Entity (Def_Id));
*************** package body Exp_Ch3 is
*** 6433,6440 ****
                       Set_Sloc    (Defining_Identifier (N), Sloc    (Def_Id));
  
                       Set_Comes_From_Source (Def_Id, False);
                       Exchange_Entities (Defining_Identifier (N), Def_Id);
!                      Set_Comes_From_Source (Def_Id, S_Flag);
                    end;
                 end;
              end if;
--- 6773,6792 ----
                       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;
*************** package body Exp_Ch3 is
*** 6459,6465 ****
                 --  allocated in place, delay checks until assignments are
                 --  made, because the discriminants are not initialized.
  
!                if Nkind (Expr) = N_Allocator and then No_Initialization (Expr)
                 then
                    null;
  
--- 6811,6818 ----
                 --  allocated in place, delay checks until assignments are
                 --  made, because the discriminants are not initialized.
  
!                if Nkind (Expr) = N_Allocator
!                  and then No_Initialization (Expr)
                 then
                    null;
  
*************** package body Exp_Ch3 is
*** 6491,6501 ****
              --  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. (Eventually
!             --  we plan to support in-place function results for some cases
!             --  of nonlimited types. ???) 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)
--- 6844,6852 ----
              --  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)
*************** package body Exp_Ch3 is
*** 6629,6637 ****
              end if;
           end if;
  
!          --  Cases where the back end cannot handle the initialization directly
!          --  In such cases, we expand an assignment that will be appropriately
!          --  handled by Expand_N_Assignment_Statement.
  
           --  The exclusion of the unconstrained case is wrong, but for now it
           --  is too much trouble ???
--- 6980,6988 ----
              end if;
           end if;
  
!          --  Cases where the back end cannot handle the initialization
!          --  directly. In such cases, we expand an assignment that will
!          --  be appropriately handled by Expand_N_Assignment_Statement.
  
           --  The exclusion of the unconstrained case is wrong, but for now it
           --  is too much trouble ???
*************** package body Exp_Ch3 is
*** 7182,7190 ****
  
        Def_Id : constant Entity_Id := Entity (N);
  
!       Mode     : Ghost_Mode_Type;
!       Mode_Set : Boolean := False;
!       Result   : Boolean := False;
  
     --  Start of processing for Freeze_Type
  
--- 7533,7542 ----
  
        Def_Id : constant Entity_Id := Entity (N);
  
!       Saved_GM : constant Ghost_Mode_Type := Ghost_Mode;
!       --  Save the Ghost mode to restore on exit
! 
!       Result : Boolean := False;
  
     --  Start of processing for Freeze_Type
  
*************** package body Exp_Ch3 is
*** 7193,7200 ****
        --  now to ensure that any nodes generated during freezing are properly
        --  marked as Ghost.
  
!       Set_Ghost_Mode (Def_Id, Mode);
!       Mode_Set := True;
  
        --  Process any remote access-to-class-wide types designating the type
        --  being frozen.
--- 7545,7551 ----
        --  now to ensure that any nodes generated during freezing are properly
        --  marked as Ghost.
  
!       Set_Ghost_Mode (Def_Id);
  
        --  Process any remote access-to-class-wide types designating the type
        --  being frozen.
*************** package body Exp_Ch3 is
*** 7509,7515 ****
        --  verification of pragma Default_Initial_Condition's expression.
  
        if Has_DIC (Def_Id) then
!          Build_DIC_Procedure_Body (Def_Id);
        end if;
  
        --  Generate the [spec and] body of the invariant procedure tasked with
--- 7860,7866 ----
        --  verification of pragma Default_Initial_Condition's expression.
  
        if Has_DIC (Def_Id) then
!          Build_DIC_Procedure_Body (Def_Id, For_Freeze => True);
        end if;
  
        --  Generate the [spec and] body of the invariant procedure tasked with
*************** package body Exp_Ch3 is
*** 7518,7531 ****
        --  class-wide invariants from parent types or interfaces, and invariants
        --  on array elements or record components.
  
        --  Do not generate invariant procedure within other assertion
        --  subprograms, which may involve local declarations of local
!       --  subtypes to which these checks don't apply.
  
!       if Has_Invariants (Def_Id) then
           if Within_Internal_Subprogram
!           or else (Ekind (Current_Scope) = E_Function
!                     and then Is_Predicate_Function (Current_Scope))
           then
              null;
           else
--- 7869,7897 ----
        --  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
+          --  interface receives only a "partial" invariant procedure which is
+          --  never called.
+ 
+          if Has_Own_Invariants (Def_Id) then
+             Build_Invariant_Procedure_Body
+               (Typ               => Def_Id,
+                Partial_Invariant => Is_Interface (Def_Id));
+          end if;
+ 
+       --  Non-interface types
+ 
        --  Do not generate invariant procedure within other assertion
        --  subprograms, which may involve local declarations of local
!       --  subtypes to which these checks do not apply.
  
!       elsif Has_Invariants (Def_Id) then
           if Within_Internal_Subprogram
!            or else (Ekind (Current_Scope) = E_Function
!                      and then Is_Predicate_Function (Current_Scope))
           then
              null;
           else
*************** package body Exp_Ch3 is
*** 7533,7549 ****
           end if;
        end if;
  
!       if Mode_Set then
!          Restore_Ghost_Mode (Mode);
!       end if;
  
        return Result;
  
     exception
        when RE_Not_Available =>
!          if Mode_Set then
!             Restore_Ghost_Mode (Mode);
!          end if;
  
           return False;
     end Freeze_Type;
--- 7899,7911 ----
           end if;
        end if;
  
!       Restore_Ghost_Mode (Saved_GM);
  
        return Result;
  
     exception
        when RE_Not_Available =>
!          Restore_Ghost_Mode (Saved_GM);
  
           return False;
     end Freeze_Type;
*************** package body Exp_Ch3 is
*** 8087,8092 ****
--- 8449,8455 ----
     procedure Init_Secondary_Tags
       (Typ            : Entity_Id;
        Target         : Node_Id;
+       Init_Tags_List : List_Id;
        Stmts_List     : List_Id;
        Fixed_Comps    : Boolean := True;
        Variable_Comps : Boolean := True)
*************** package body Exp_Ch3 is
*** 8124,8130 ****
           --  Initialize pointer to secondary DT associated with the interface
  
           if not Is_Ancestor (Iface, Typ, Use_Full_View => True) then
!             Append_To (Stmts_List,
                Make_Assignment_Statement (Loc,
                  Name       =>
                    Make_Selected_Component (Loc,
--- 8487,8493 ----
           --  Initialize pointer to secondary DT associated with the interface
  
           if not Is_Ancestor (Iface, Typ, Use_Full_View => True) then
!             Append_To (Init_Tags_List,
                Make_Assignment_Statement (Loc,
                  Name       =>
                    Make_Selected_Component (Loc,
*************** package body Exp_Ch3 is
*** 8158,8163 ****
--- 8521,8527 ----
              --  Generate:
              --    Set_Dynamic_Offset_To_Top
              --      (This         => Init,
+             --       Prim_T       => Typ'Tag,
              --       Interface_T  => Iface'Tag,
              --       Offset_Value => n,
              --       Offset_Func  => Fn'Address)
*************** package body Exp_Ch3 is
*** 8173,8190 ****
  
                    Unchecked_Convert_To (RTE (RE_Tag),
                      New_Occurrence_Of
                        (Node (First_Elmt (Access_Disp_Table (Iface))),
                         Loc)),
  
                    Unchecked_Convert_To
                      (RTE (RE_Storage_Offset),
!                      Make_Attribute_Reference (Loc,
!                        Prefix         =>
!                          Make_Selected_Component (Loc,
!                            Prefix        => New_Copy_Tree (Target),
!                            Selector_Name =>
!                              New_Occurrence_Of (Tag_Comp, Loc)),
!                        Attribute_Name => Name_Position)),
  
                    Unchecked_Convert_To (RTE (RE_Offset_To_Top_Function_Ptr),
                      Make_Attribute_Reference (Loc,
--- 8537,8559 ----
  
                    Unchecked_Convert_To (RTE (RE_Tag),
                      New_Occurrence_Of
+                       (Node (First_Elmt (Access_Disp_Table (Typ))), Loc)),
+ 
+                   Unchecked_Convert_To (RTE (RE_Tag),
+                     New_Occurrence_Of
                        (Node (First_Elmt (Access_Disp_Table (Iface))),
                         Loc)),
  
                    Unchecked_Convert_To
                      (RTE (RE_Storage_Offset),
!                      Make_Op_Minus (Loc,
!                        Make_Attribute_Reference (Loc,
!                          Prefix         =>
!                            Make_Selected_Component (Loc,
!                              Prefix        => New_Copy_Tree (Target),
!                              Selector_Name =>
!                                New_Occurrence_Of (Tag_Comp, Loc)),
!                          Attribute_Name => Name_Position))),
  
                    Unchecked_Convert_To (RTE (RE_Offset_To_Top_Function_Ptr),
                      Make_Attribute_Reference (Loc,
*************** package body Exp_Ch3 is
*** 8198,8204 ****
              Offset_To_Top_Comp := Next_Entity (Tag_Comp);
              pragma Assert (Present (Offset_To_Top_Comp));
  
!             Append_To (Stmts_List,
                Make_Assignment_Statement (Loc,
                  Name       =>
                    Make_Selected_Component (Loc,
--- 8567,8573 ----
              Offset_To_Top_Comp := Next_Entity (Tag_Comp);
              pragma Assert (Present (Offset_To_Top_Comp));
  
!             Append_To (Init_Tags_List,
                Make_Assignment_Statement (Loc,
                  Name       =>
                    Make_Selected_Component (Loc,
*************** package body Exp_Ch3 is
*** 8207,8258 ****
                        New_Occurrence_Of (Offset_To_Top_Comp, Loc)),
  
                  Expression =>
!                   Make_Attribute_Reference (Loc,
!                     Prefix       =>
!                       Make_Selected_Component (Loc,
!                         Prefix        => New_Copy_Tree (Target),
!                         Selector_Name => New_Occurrence_Of (Tag_Comp, Loc)),
!                   Attribute_Name => Name_Position)));
  
           --  Normal case: No discriminants in the parent type
  
           else
!             --  Don't need to set any value if this interface shares the
!             --  primary dispatch table.
  
!             if not Is_Ancestor (Iface, Typ, Use_Full_View => True) then
                 Append_To (Stmts_List,
                   Build_Set_Static_Offset_To_Top (Loc,
                     Iface_Tag    => New_Occurrence_Of (Iface_Tag, Loc),
                     Offset_Value =>
                       Unchecked_Convert_To (RTE (RE_Storage_Offset),
!                        Make_Attribute_Reference (Loc,
!                          Prefix         =>
!                            Make_Selected_Component (Loc,
!                              Prefix        => New_Copy_Tree (Target),
!                              Selector_Name =>
!                                New_Occurrence_Of (Tag_Comp, Loc)),
!                          Attribute_Name => Name_Position))));
              end if;
  
              --  Generate:
              --    Register_Interface_Offset
!             --      (This         => Init,
              --       Interface_T  => Iface'Tag,
              --       Is_Constant  => True,
              --       Offset_Value => n,
              --       Offset_Func  => null);
  
!             if RTE_Available (RE_Register_Interface_Offset) then
                 Append_To (Stmts_List,
                   Make_Procedure_Call_Statement (Loc,
                     Name                   =>
                       New_Occurrence_Of
                         (RTE (RE_Register_Interface_Offset), Loc),
                     Parameter_Associations => New_List (
!                      Make_Attribute_Reference (Loc,
!                        Prefix         => New_Copy_Tree (Target),
!                        Attribute_Name => Name_Address),
  
                       Unchecked_Convert_To (RTE (RE_Tag),
                         New_Occurrence_Of
--- 8576,8634 ----
                        New_Occurrence_Of (Offset_To_Top_Comp, Loc)),
  
                  Expression =>
!                   Make_Op_Minus (Loc,
!                     Make_Attribute_Reference (Loc,
!                       Prefix       =>
!                         Make_Selected_Component (Loc,
!                           Prefix        => New_Copy_Tree (Target),
!                           Selector_Name => New_Occurrence_Of (Tag_Comp, Loc)),
!                     Attribute_Name => Name_Position))));
  
           --  Normal case: No discriminants in the parent type
  
           else
!             --  Don't need to set any value if the offset-to-top field is
!             --  statically set or if this interface shares the primary
!             --  dispatch table.
  
!             if not Building_Static_Secondary_DT (Typ)
!               and then not Is_Ancestor (Iface, Typ, Use_Full_View => True)
!             then
                 Append_To (Stmts_List,
                   Build_Set_Static_Offset_To_Top (Loc,
                     Iface_Tag    => New_Occurrence_Of (Iface_Tag, Loc),
                     Offset_Value =>
                       Unchecked_Convert_To (RTE (RE_Storage_Offset),
!                        Make_Op_Minus (Loc,
!                          Make_Attribute_Reference (Loc,
!                            Prefix         =>
!                              Make_Selected_Component (Loc,
!                                Prefix        => New_Copy_Tree (Target),
!                                Selector_Name =>
!                                  New_Occurrence_Of (Tag_Comp, Loc)),
!                            Attribute_Name => Name_Position)))));
              end if;
  
              --  Generate:
              --    Register_Interface_Offset
!             --      (Prim_T       => Typ'Tag,
              --       Interface_T  => Iface'Tag,
              --       Is_Constant  => True,
              --       Offset_Value => n,
              --       Offset_Func  => null);
  
!             if not Building_Static_Secondary_DT (Typ)
!               and then RTE_Available (RE_Register_Interface_Offset)
!             then
                 Append_To (Stmts_List,
                   Make_Procedure_Call_Statement (Loc,
                     Name                   =>
                       New_Occurrence_Of
                         (RTE (RE_Register_Interface_Offset), Loc),
                     Parameter_Associations => New_List (
!                      Unchecked_Convert_To (RTE (RE_Tag),
!                        New_Occurrence_Of
!                          (Node (First_Elmt (Access_Disp_Table (Typ))), Loc)),
  
                       Unchecked_Convert_To (RTE (RE_Tag),
                         New_Occurrence_Of
*************** package body Exp_Ch3 is
*** 8261,8273 ****
                       New_Occurrence_Of (Standard_True, Loc),
  
                       Unchecked_Convert_To (RTE (RE_Storage_Offset),
!                        Make_Attribute_Reference (Loc,
!                          Prefix         =>
!                            Make_Selected_Component (Loc,
!                              Prefix         => New_Copy_Tree (Target),
!                              Selector_Name  =>
!                                New_Occurrence_Of (Tag_Comp, Loc)),
!                          Attribute_Name => Name_Position)),
  
                       Make_Null (Loc))));
              end if;
--- 8637,8650 ----
                       New_Occurrence_Of (Standard_True, Loc),
  
                       Unchecked_Convert_To (RTE (RE_Storage_Offset),
!                        Make_Op_Minus (Loc,
!                          Make_Attribute_Reference (Loc,
!                            Prefix         =>
!                              Make_Selected_Component (Loc,
!                                Prefix         => New_Copy_Tree (Target),
!                                Selector_Name  =>
!                                  New_Occurrence_Of (Tag_Comp, Loc)),
!                            Attribute_Name => Name_Position))),
  
                       Make_Null (Loc))));
              end if;
*************** package body Exp_Ch3 is
*** 8371,8385 ****
              --  Initialize secondary tags
  
              else
!                Append_To (Stmts_List,
!                  Make_Assignment_Statement (Loc,
!                    Name =>
!                      Make_Selected_Component (Loc,
!                        Prefix => New_Copy_Tree (Target),
!                        Selector_Name =>
!                          New_Occurrence_Of (Node (Iface_Comp_Elmt), Loc)),
!                    Expression =>
!                      New_Occurrence_Of (Node (Iface_Tag_Elmt), Loc)));
              end if;
  
           --  Otherwise generate code to initialize the tag
--- 8748,8758 ----
              --  Initialize secondary tags
  
              else
!                Initialize_Tag
!                  (Typ       => Full_Typ,
!                   Iface     => Node (Iface_Elmt),
!                   Tag_Comp  => Tag_Comp,
!                   Iface_Tag => Node (Iface_Tag_Elmt));
              end if;
  
           --  Otherwise generate code to initialize the tag
*************** package body Exp_Ch3 is
*** 8388,8397 ****
              if (In_Variable_Pos and then Variable_Comps)
                or else (not In_Variable_Pos and then Fixed_Comps)
              then
!                Initialize_Tag (Full_Typ,
!                  Iface     => Node (Iface_Elmt),
!                  Tag_Comp  => Tag_Comp,
!                  Iface_Tag => Node (Iface_Tag_Elmt));
              end if;
           end if;
  
--- 8761,8771 ----
              if (In_Variable_Pos and then Variable_Comps)
                or else (not In_Variable_Pos and then Fixed_Comps)
              then
!                Initialize_Tag
!                  (Typ       => Full_Typ,
!                   Iface     => Node (Iface_Elmt),
!                   Tag_Comp  => Tag_Comp,
!                   Iface_Tag => Node (Iface_Tag_Elmt));
              end if;
           end if;
  
*************** package body Exp_Ch3 is
*** 9184,9190 ****
  
        declare
           Stream_Op_TSS_Names :
!            constant array (Integer range <>) of TSS_Name_Type :=
               (TSS_Stream_Read,
                TSS_Stream_Write,
                TSS_Stream_Input,
--- 9558,9564 ----
  
        declare
           Stream_Op_TSS_Names :
!            constant array (Positive range <>) of TSS_Name_Type :=
               (TSS_Stream_Read,
                TSS_Stream_Write,
                TSS_Stream_Input,
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_ch3.ads gcc-8.1.0/gcc/ada/exp_ch3.ads
*** gcc-7.3.0/gcc/ada/exp_ch3.ads	Mon Apr 18 09:20:56 2016
--- gcc-8.1.0/gcc/ada/exp_ch3.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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_Ch3 is
*** 94,108 ****
     procedure Init_Secondary_Tags
       (Typ            : Entity_Id;
        Target         : Node_Id;
        Stmts_List     : List_Id;
        Fixed_Comps    : Boolean := True;
        Variable_Comps : Boolean := True);
     --  Ada 2005 (AI-251): Initialize the tags of the secondary dispatch tables
     --  of Typ. The generated code referencing tag fields of Target is appended
!    --  to Stmts_List. If Fixed_Comps is True then the tag components located at
!    --  fixed positions of Target are initialized; if Variable_Comps is True
!    --  then tags components located at variable positions of Target are
!    --  initialized.
  
     function Make_Tag_Assignment (N : Node_Id) return Node_Id;
     --  An object declaration that has an initialization for a tagged object
--- 94,110 ----
     procedure Init_Secondary_Tags
       (Typ            : Entity_Id;
        Target         : Node_Id;
+       Init_Tags_List : List_Id;
        Stmts_List     : List_Id;
        Fixed_Comps    : Boolean := True;
        Variable_Comps : Boolean := True);
     --  Ada 2005 (AI-251): Initialize the tags of the secondary dispatch tables
     --  of Typ. The generated code referencing tag fields of Target is appended
!    --  to Init_Tags_List and the code required to complete the elaboration of
!    --  the dispatch tables of Typ is appended to Stmts_List. If Fixed_Comps is
!    --  True then the tag components located at fixed positions of Target are
!    --  initialized; if Variable_Comps is True then tags components located at
!    --  variable positions of Target are initialized.
  
     function Make_Tag_Assignment (N : Node_Id) return Node_Id;
     --  An object declaration that has an initialization for a tagged object
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_ch4.adb gcc-8.1.0/gcc/ada/exp_ch4.adb
*** gcc-7.3.0/gcc/ada/exp_ch4.adb	Thu Jan 19 12:04:13 2017
--- gcc-8.1.0/gcc/ada/exp_ch4.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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_Ch4 is
*** 128,133 ****
--- 128,138 ----
     --  Common expansion processing for Boolean operators (And, Or, Xor) for the
     --  case of array type arguments.
  
+    procedure Expand_Nonbinary_Modular_Op (N : Node_Id);
+    --  When generating C code, convert nonbinary modular arithmetic operations
+    --  into code that relies on the front-end expansion of operator Mod. No
+    --  expansion is performed if N is not a nonbinary modular operand.
+ 
     procedure Expand_Short_Circuit_Operator (N : Node_Id);
     --  Common expansion processing for short-circuit boolean operators
  
*************** package body Exp_Ch4 is
*** 625,631 ****
  
              --    [Deep_]Finalize (Obj_Ref.all);
  
!             if Needs_Finalization (DesigT) then
                 Fin_Call :=
                   Make_Final_Call
                     (Obj_Ref =>
--- 630,638 ----
  
              --    [Deep_]Finalize (Obj_Ref.all);
  
!             if Needs_Finalization (DesigT)
!               and then not No_Heap_Finalization (PtrT)
!             then
                 Fin_Call :=
                   Make_Final_Call
                     (Obj_Ref =>
*************** package body Exp_Ch4 is
*** 788,804 ****
  
           --  Ada 2005 (AI-318-02): If the initialization expression is a call
           --  to a build-in-place function, then access to the allocated object
!          --  must be passed to the function. Currently we limit such functions
!          --  to those with constrained limited result subtypes, but eventually
!          --  we plan to expand the allowed forms of functions that are treated
!          --  as build-in-place.
  
!          if Ada_Version >= Ada_2005
!            and then 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;
           end if;
  
           --  Actions inserted before:
--- 795,818 ----
  
           --  Ada 2005 (AI-318-02): If the initialization expression is a call
           --  to a build-in-place function, then access to the allocated object
!          --  must be passed to the function.
  
!          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
+          --  expressions containing a build-in-place function call whose
+          --  returned object covers interface types, and Expr has calls to
+          --  Ada.Tags.Displace to displace the pointer to the returned build-
+          --  in-place object to reference the secondary dispatch table of a
+          --  covered interface type.
+ 
+          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;
  
           --  Actions inserted before:
*************** package body Exp_Ch4 is
*** 1057,1068 ****
           --  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.
  
           if Needs_Finalization (DesigT)
             and then Needs_Finalization (T)
             and then not Aggr_In_Place
             and then not Is_Limited_View (T)
           then
              --  An unchecked conversion is needed in the classwide case because
              --  the designated type can be an ancestor of the subtype mark of
--- 1071,1085 ----
           --  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.
  
           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
*************** package body Exp_Ch4 is
*** 1204,1217 ****
  
           --  Ada 2005 (AI-318-02): If the initialization expression is a call
           --  to a build-in-place function, then access to the allocated object
!          --  must be passed to the function. Currently we limit such functions
!          --  to those with constrained limited result subtypes, but eventually
!          --  we plan to expand the allowed forms of functions that are treated
!          --  as build-in-place.
  
!          if Ada_Version >= Ada_2005
!            and then Is_Build_In_Place_Function_Call (Exp)
!          then
              Make_Build_In_Place_Call_In_Allocator (N, Exp);
           end if;
        end if;
--- 1221,1229 ----
  
           --  Ada 2005 (AI-318-02): If the initialization expression is a call
           --  to a build-in-place function, then access to the allocated object
!          --  must be passed to the function.
  
!          if Is_Build_In_Place_Function_Call (Exp) then
              Make_Build_In_Place_Call_In_Allocator (N, Exp);
           end if;
        end if;
*************** package body Exp_Ch4 is
*** 2700,2706 ****
        --  last operand is always retained, in case it provides the bounds for
        --  a null result.
  
!       Opnd : Node_Id;
        --  Current operand being processed in the loop through operands. After
        --  this loop is complete, always contains the last operand (which is not
        --  the same as Operands (NN), since null operands are skipped).
--- 2712,2718 ----
        --  last operand is always retained, in case it provides the bounds for
        --  a null result.
  
!       Opnd : Node_Id := Empty;
        --  Current operand being processed in the loop through operands. After
        --  this loop is complete, always contains the last operand (which is not
        --  the same as Operands (NN), since null operands are skipped).
*************** package body Exp_Ch4 is
*** 2742,2760 ****
        --  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;
        --  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
        --  special case of setting the right low bound for a null result.
        --  This is of type Ityp.
  
!       Last_Opnd_High_Bound : Node_Id;
        --  A tree node representing the high bound of the last operand. This
        --  need only be set if the result could be null. It is used for the
        --  special case of setting the right high bound for a null result.
        --  This is of type Ityp.
  
!       High_Bound : Node_Id;
        --  A tree node representing the high bound of the result (of type Ityp)
  
        Result : Node_Id;
--- 2754,2772 ----
        --  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
        --  special case of setting the right low bound for a null result.
        --  This is of type Ityp.
  
!       Last_Opnd_High_Bound : Node_Id := Empty;
        --  A tree node representing the high bound of the last operand. This
        --  need only be set if the result could be null. It is used for the
        --  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;
*************** package body Exp_Ch4 is
*** 2767,2772 ****
--- 2779,2788 ----
        --  Set True during generation of the assignments of operands into
        --  result once an operand known to be non-null has been seen.
  
+       function Library_Level_Target return Boolean;
+       --  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
*************** package body Exp_Ch4 is
*** 2782,2787 ****
--- 2798,2827 ----
        function To_Ityp (X : Node_Id) return Node_Id;
        --  The inverse function (uses Val in the case of enumeration types)
  
+       --------------------------
+       -- Library_Level_Target --
+       --------------------------
+ 
+       function Library_Level_Target return Boolean is
+          P : Node_Id := Parent (Cnode);
+ 
+       begin
+          while Present (P) loop
+             if Nkind (P) = N_Object_Declaration then
+                return Is_Library_Level_Entity (Defining_Identifier (P));
+ 
+             --  Prevent the search from going too far
+ 
+             elsif Is_Body_Or_Package_Declaration (P) then
+                return False;
+             end if;
+ 
+             P := Parent (P);
+          end loop;
+ 
+          return False;
+       end Library_Level_Target;
+ 
        ------------------------
        -- Make_Artyp_Literal --
        ------------------------
*************** package body Exp_Ch4 is
*** 2842,2857 ****
  
        --  Local Declarations
  
-       Lib_Level_Target : constant Boolean :=
-         Nkind (Parent (Cnode)) = N_Object_Declaration
-           and then
-             Is_Library_Level_Entity (Defining_Identifier (Parent (Cnode)));
- 
-       --  If the concatenation declares a library level entity, we call the
-       --  built-in concatenation routines to prevent code bloat, regardless
-       --  of optimization level. This is space-efficient, and prevent linking
-       --  problems when units are compiled with different optimizations.
- 
        Opnd_Typ : Entity_Id;
        Ent      : Entity_Id;
        Len      : Uint;
--- 2882,2887 ----
*************** package body Exp_Ch4 is
*** 3157,3163 ****
                  Object_Definition   => New_Occurrence_Of (Artyp, Loc),
                  Expression          =>
                    Make_Op_Add (Loc,
!                     Left_Opnd  => New_Copy (Aggr_Length (NN - 1)),
                      Right_Opnd => Clen)));
  
              Aggr_Length (NN) := Make_Identifier (Loc, Chars => Chars (Ent));
--- 3187,3193 ----
                  Object_Definition   => New_Occurrence_Of (Artyp, Loc),
                  Expression          =>
                    Make_Op_Add (Loc,
!                     Left_Opnd  => New_Copy_Tree (Aggr_Length (NN - 1)),
                      Right_Opnd => Clen)));
  
              Aggr_Length (NN) := Make_Identifier (Loc, Chars => Chars (Ent));
*************** package body Exp_Ch4 is
*** 3238,3244 ****
              function Get_Known_Bound (J : Nat) return Node_Id is
              begin
                 if Is_Fixed_Length (J) or else J = NN then
!                   return New_Copy (Opnd_Low_Bound (J));
  
                 else
                    return
--- 3268,3274 ----
              function Get_Known_Bound (J : Nat) return Node_Id is
              begin
                 if Is_Fixed_Length (J) or else J = NN then
!                   return New_Copy_Tree (Opnd_Low_Bound (J));
  
                 else
                    return
*************** package body Exp_Ch4 is
*** 3251,3257 ****
                            Right_Opnd =>
                              Make_Integer_Literal (Loc, 0)),
  
!                         New_Copy (Opnd_Low_Bound (J)),
                          Get_Known_Bound (J + 1)));
                 end if;
              end Get_Known_Bound;
--- 3281,3287 ----
                            Right_Opnd =>
                              Make_Integer_Literal (Loc, 0)),
  
!                         New_Copy_Tree (Opnd_Low_Bound (J)),
                          Get_Known_Bound (J + 1)));
                 end if;
              end Get_Known_Bound;
*************** package body Exp_Ch4 is
*** 3276,3285 ****
        High_Bound :=
          To_Ityp
            (Make_Op_Add (Loc,
!              Left_Opnd  => To_Artyp (New_Copy (Low_Bound)),
               Right_Opnd =>
                 Make_Op_Subtract (Loc,
!                  Left_Opnd  => New_Copy (Aggr_Length (NN)),
                   Right_Opnd => Make_Artyp_Literal (1))));
  
        --  Note that calculation of the high bound may cause overflow in some
--- 3306,3315 ----
        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
*************** package body Exp_Ch4 is
*** 3304,3310 ****
             Make_If_Expression (Loc,
               Expressions => New_List (
                 Make_Op_Eq (Loc,
!                  Left_Opnd  => New_Copy (Aggr_Length (NN)),
                   Right_Opnd => Make_Artyp_Literal (0)),
                 Last_Opnd_Low_Bound,
                 Low_Bound));
--- 3334,3340 ----
             Make_If_Expression (Loc,
               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));
*************** package body Exp_Ch4 is
*** 3313,3319 ****
             Make_If_Expression (Loc,
               Expressions => New_List (
                 Make_Op_Eq (Loc,
!                  Left_Opnd  => New_Copy (Aggr_Length (NN)),
                   Right_Opnd => Make_Artyp_Literal (0)),
                 Last_Opnd_High_Bound,
                 High_Bound));
--- 3343,3349 ----
             Make_If_Expression (Loc,
               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));
*************** package body Exp_Ch4 is
*** 3372,3393 ****
  
        --    There are nine or fewer retained (non-null) operands
  
!       --    The optimization level is -O0
  
        --    The corresponding System.Concat_n.Str_Concat_n routine is
        --    available in the run time.
  
-       --    The debug flag gnatd.c is not set
- 
        --  If all these conditions are met then we generate a call to the
        --  relevant concatenation routine. The purpose of this is to avoid
        --  undesirable code bloat at -O0.
  
        if Atyp = Standard_String
          and then NN in 2 .. 9
!         and then (Lib_Level_Target
!           or else ((Optimization_Level = 0 or else Debug_Flag_Dot_CC)
!                      and then not Debug_Flag_Dot_C))
        then
           declare
              RR : constant array (Nat range 2 .. 9) of RE_Id :=
--- 3402,3428 ----
  
        --    There are nine or fewer retained (non-null) operands
  
!       --    The optimization level is -O0 or the debug flag gnatd.C is set,
!       --    and the debug flag gnatd.c is not set.
  
        --    The corresponding System.Concat_n.Str_Concat_n routine is
        --    available in the run time.
  
        --  If all these conditions are met then we generate a call to the
        --  relevant concatenation routine. The purpose of this is to avoid
        --  undesirable code bloat at -O0.
  
+       --  If the concatenation is within the declaration of a library-level
+       --  object, we call the built-in concatenation routines to prevent code
+       --  bloat, regardless of the optimization level. This is space efficient
+       --  and prevents linking problems when units are compiled with different
+       --  optimization levels.
+ 
        if Atyp = Standard_String
          and then NN in 2 .. 9
!         and then (((Optimization_Level = 0 or else Debug_Flag_Dot_CC)
!                      and then not Debug_Flag_Dot_C)
!                   or else Library_Level_Target)
        then
           declare
              RR : constant array (Nat range 2 .. 9) of RE_Id :=
*************** package body Exp_Ch4 is
*** 3446,3457 ****
           declare
              Lo : constant Node_Id :=
                     Make_Op_Add (Loc,
!                      Left_Opnd  => To_Artyp (New_Copy (Low_Bound)),
                       Right_Opnd => Aggr_Length (J - 1));
  
              Hi : constant Node_Id :=
                     Make_Op_Add (Loc,
!                      Left_Opnd  => To_Artyp (New_Copy (Low_Bound)),
                       Right_Opnd =>
                         Make_Op_Subtract (Loc,
                           Left_Opnd  => Aggr_Length (J),
--- 3481,3492 ----
           declare
              Lo : constant Node_Id :=
                     Make_Op_Add (Loc,
!                      Left_Opnd  => To_Artyp (New_Copy_Tree (Low_Bound)),
                       Right_Opnd => Aggr_Length (J - 1));
  
              Hi : constant Node_Id :=
                     Make_Op_Add (Loc,
!                      Left_Opnd  => To_Artyp (New_Copy_Tree (Low_Bound)),
                       Right_Opnd =>
                         Make_Op_Subtract (Loc,
                           Left_Opnd  => Aggr_Length (J),
*************** package body Exp_Ch4 is
*** 3934,3939 ****
--- 3969,4210 ----
        end if;
     end Expand_Membership_Minimize_Eliminate_Overflow;
  
+    ---------------------------------
+    -- Expand_Nonbinary_Modular_Op --
+    ---------------------------------
+ 
+    procedure Expand_Nonbinary_Modular_Op (N : Node_Id) is
+       Loc : constant Source_Ptr := Sloc (N);
+       Typ : constant Entity_Id  := Etype (N);
+ 
+       procedure Expand_Modular_Addition;
+       --  Expand the modular addition, handling the special case of adding a
+       --  constant.
+ 
+       procedure Expand_Modular_Op;
+       --  Compute the general rule: (lhs OP rhs) mod Modulus
+ 
+       procedure Expand_Modular_Subtraction;
+       --  Expand the modular addition, handling the special case of subtracting
+       --  a constant.
+ 
+       -----------------------------
+       -- Expand_Modular_Addition --
+       -----------------------------
+ 
+       procedure Expand_Modular_Addition is
+       begin
+          --  If this is not the addition of a constant then compute it using
+          --  the general rule: (lhs + rhs) mod Modulus
+ 
+          if Nkind (Right_Opnd (N)) /= N_Integer_Literal then
+             Expand_Modular_Op;
+ 
+          --  If this is an addition of a constant, convert it to a subtraction
+          --  plus a conditional expression since we can compute it faster than
+          --  computing the modulus.
+ 
+          --      modMinusRhs = Modulus - rhs
+          --      if lhs < modMinusRhs then lhs + rhs
+          --                           else lhs - modMinusRhs
+ 
+          else
+             declare
+                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,
+                  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;
+ 
+       -----------------------
+       -- Expand_Modular_Op --
+       -----------------------
+ 
+       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);
+ 
+       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_In (Nkind (N), N_Op_And, N_Op_Or) 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
+             Set_Left_Opnd (Op_Expr,
+               Unchecked_Convert_To (Standard_Integer,
+                 New_Copy_Tree (Left_Opnd (N))));
+             Set_Right_Opnd (Op_Expr,
+               Unchecked_Convert_To (Standard_Integer,
+                 New_Copy_Tree (Right_Opnd (N))));
+ 
+             --  Link this node to the tree to analyze it
+ 
+             --  If the parent node is an expression with actions we link it to
+             --  N since otherwise Force_Evaluation cannot identify if this node
+             --  comes from the Expression and rejects generating the temporary.
+ 
+             if Nkind (Parent (N)) = N_Expression_With_Actions then
+                Set_Parent (Op_Expr, N);
+ 
+             --  Common case
+ 
+             else
+                Set_Parent (Op_Expr, Parent (N));
+             end if;
+ 
+             Analyze (Op_Expr);
+ 
+             --  Force generating a temporary because in the expansion of this
+             --  expression we may generate code that performs this computation
+             --  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));
+       end Expand_Modular_Op;
+ 
+       --------------------------------
+       -- Expand_Modular_Subtraction --
+       --------------------------------
+ 
+       procedure Expand_Modular_Subtraction is
+       begin
+          --  If this is not the addition of a constant then compute it using
+          --  the general rule: (lhs + rhs) mod Modulus
+ 
+          if Nkind (Right_Opnd (N)) /= N_Integer_Literal then
+             Expand_Modular_Op;
+ 
+          --  If this is an addition of a constant, convert it to a subtraction
+          --  plus a conditional expression since we can compute it faster than
+          --  computing the modulus.
+ 
+          --      modMinusRhs = Modulus - rhs
+          --      if lhs < rhs then lhs + modMinusRhs
+          --                   else lhs - rhs
+ 
+          else
+             declare
+                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,
+                  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;
+ 
+    --  Start of processing for Expand_Nonbinary_Modular_Op
+ 
+    begin
+       --  No action needed if front-end expansion is not required or if we
+       --  have a binary modular operand.
+ 
+       if not Expand_Nonbinary_Modular_Ops
+         or else not Non_Binary_Modulus (Typ)
+       then
+          return;
+       end if;
+ 
+       case Nkind (N) is
+          when N_Op_Add =>
+             Expand_Modular_Addition;
+ 
+          when N_Op_Subtract =>
+             Expand_Modular_Subtraction;
+ 
+          when N_Op_Minus =>
+ 
+             --  Expand -expr into (0 - expr)
+ 
+             Rewrite (N,
+               Make_Op_Subtract (Loc,
+                 Left_Opnd  => Make_Integer_Literal (Loc, 0),
+                 Right_Opnd => Right_Opnd (N)));
+             Analyze_And_Resolve (N, Typ);
+ 
+          when others =>
+             Expand_Modular_Op;
+       end case;
+ 
+       Analyze_And_Resolve (N, Typ);
+    end Expand_Nonbinary_Modular_Op;
+ 
     ------------------------
     -- Expand_N_Allocator --
     ------------------------
*************** package body Exp_Ch4 is
*** 4013,4018 ****
--- 4284,4290 ----
           declare
              Len : Node_Id;
              Res : Node_Id;
+             pragma Warnings (Off, Res);
  
           begin
              for J in 1 .. Number_Dimensions (E) loop
*************** package body Exp_Ch4 is
*** 4367,4373 ****
              --  No initialization required
  
              else
!                null;
              end if;
  
           --  Case of initialization procedure present, must be called
--- 4639,4647 ----
              --  No initialization required
  
              else
!                Build_Allocate_Deallocate_Proc
!                  (N           => N,
!                   Is_Allocate => True);
              end if;
  
           --  Case of initialization procedure present, must be called
*************** package body Exp_Ch4 is
*** 4526,4532 ****
  
                 declare
                    Dis : Boolean := False;
!                   Typ : Entity_Id;
  
                 begin
                    if Has_Discriminants (T) then
--- 4800,4806 ----
  
                 declare
                    Dis : Boolean := False;
!                   Typ : Entity_Id := Empty;
  
                 begin
                    if Has_Discriminants (T) then
*************** package body Exp_Ch4 is
*** 4695,4703 ****
     ------------------------------
  
     procedure Expand_N_Case_Expression (N : Node_Id) is
!       Loc        : constant Source_Ptr := Sloc (N);
!       Par        : constant Node_Id    := Parent (N);
!       Typ        : constant Entity_Id  := Etype (N);
        Acts       : List_Id;
        Alt        : Node_Id;
        Case_Stmt  : Node_Id;
--- 4969,5002 ----
     ------------------------------
  
     procedure Expand_N_Case_Expression (N : Node_Id) is
! 
!       function Is_Copy_Type (Typ : Entity_Id) return Boolean;
!       --  Return True if we can copy objects of this type when expanding a case
!       --  expression.
! 
!       ------------------
!       -- Is_Copy_Type --
!       ------------------
! 
!       function Is_Copy_Type (Typ : Entity_Id) return Boolean is
!       begin
!          --  If Minimize_Expression_With_Actions is True, we can afford to copy
!          --  large objects, as long as they are constrained and not limited.
! 
!          return
!            Is_Elementary_Type (Underlying_Type (Typ))
!              or else
!                (Minimize_Expression_With_Actions
!                  and then Is_Constrained (Underlying_Type (Typ))
!                  and then not Is_Limited_View (Underlying_Type (Typ)));
!       end Is_Copy_Type;
! 
!       --  Local variables
! 
!       Loc : constant Source_Ptr := Sloc (N);
!       Par : constant Node_Id    := Parent (N);
!       Typ : constant Entity_Id  := Etype (N);
! 
        Acts       : List_Id;
        Alt        : Node_Id;
        Case_Stmt  : Node_Id;
*************** package body Exp_Ch4 is
*** 4713,4718 ****
--- 5012,5019 ----
        --  Flag set when the case expression can be optimized in the context of
        --  a simple return statement.
  
+    --  Start of processing for Expand_N_Case_Expression
+ 
     begin
        --  Check for MINIMIZED/ELIMINATED overflow mode
  
*************** package body Exp_Ch4 is
*** 4769,4774 ****
--- 5070,5078 ----
  
        --  This approach avoids extra copies of potentially large objects. It
        --  also allows handling of values of limited or unconstrained types.
+       --  Note that we do the copy also for constrained, nonlimited types
+       --  when minimizing expressions with actions (e.g. when generating C
+       --  code) since it allows us to do the optimization below in more cases.
  
        --  Small optimization: when the case expression appears in the context
        --  of a simple return statement, expand into
*************** package body Exp_Ch4 is
*** 4794,4806 ****
        Set_From_Conditional_Expression (Case_Stmt);
        Acts := New_List;
  
!       --  Scalar case
  
!       if Is_Elementary_Type (Typ) then
           Target_Typ := Typ;
  
           --  ??? Do not perform the optimization when the return statement is
!          --  within a predicate function as this causes supurious errors. Could
           --  this be a possible mismatch in handling this case somewhere else
           --  in semantic analysis?
  
--- 5098,5110 ----
        Set_From_Conditional_Expression (Case_Stmt);
        Acts := New_List;
  
!       --  Scalar/Copy case
  
!       if Is_Copy_Type (Typ) then
           Target_Typ := Typ;
  
           --  ??? Do not perform the optimization when the return statement is
!          --  within a predicate function, as this causes spurious errors. Could
           --  this be a possible mismatch in handling this case somewhere else
           --  in semantic analysis?
  
*************** package body Exp_Ch4 is
*** 4814,4819 ****
--- 5118,5134 ----
        --    type Ptr_Typ is access all Typ;
  
        else
+          if Generate_C_Code then
+ 
+             --  We cannot ensure that correct C code will be generated if any
+             --  temporary is created down the line (to e.g. handle checks or
+             --  capture values) since we might end up with dangling references
+             --  to local variables, so better be safe and reject the construct.
+ 
+             Error_Msg_N
+               ("case expression too complex, use case statement instead", N);
+          end if;
+ 
           Target_Typ := Make_Temporary (Loc, 'P');
  
           Append_To (Acts,
*************** package body Exp_Ch4 is
*** 4860,4866 ****
              --  Generate:
              --    AX'Unrestricted_Access
  
!             if not Is_Elementary_Type (Typ) then
                 Alt_Expr :=
                   Make_Attribute_Reference (Alt_Loc,
                     Prefix         => Relocate_Node (Alt_Expr),
--- 5175,5181 ----
              --  Generate:
              --    AX'Unrestricted_Access
  
!             if not Is_Copy_Type (Typ) then
                 Alt_Expr :=
                   Make_Attribute_Reference (Alt_Loc,
                     Prefix         => Relocate_Node (Alt_Expr),
*************** package body Exp_Ch4 is
*** 4924,4930 ****
        else
           Append_To (Acts, Case_Stmt);
  
!          if Is_Elementary_Type (Typ) then
              Expr := New_Occurrence_Of (Target, Loc);
  
           else
--- 5239,5245 ----
        else
           Append_To (Acts, Case_Stmt);
  
!          if Is_Copy_Type (Typ) then
              Expr := New_Occurrence_Of (Target, Loc);
  
           else
*************** package body Exp_Ch4 is
*** 5025,5031 ****
             and then Is_Finalizable_Transient (Act, N)
           then
              Process_Transient_In_Expression (Act, N, Acts);
!             return Abandon;
  
           --  Avoid processing temporary function results multiple times when
           --  dealing with nested expression_with_actions.
--- 5340,5346 ----
             and then Is_Finalizable_Transient (Act, N)
           then
              Process_Transient_In_Expression (Act, N, Acts);
!             return Skip;
  
           --  Avoid processing temporary function results multiple times when
           --  dealing with nested expression_with_actions.
*************** package body Exp_Ch4 is
*** 5141,5152 ****
        Typ   : constant Entity_Id  := Etype (N);
  
        Actions : List_Id;
-       Cnn     : Entity_Id;
        Decl    : Node_Id;
        Expr    : Node_Id;
        New_If  : Node_Id;
        New_N   : Node_Id;
-       Ptr_Typ : Entity_Id;
  
     begin
        --  Check for MINIMIZED/ELIMINATED overflow mode
--- 5456,5465 ----
*************** package body Exp_Ch4 is
*** 5250,5314 ****
           Process_If_Case_Statements (N, Then_Actions (N));
           Process_If_Case_Statements (N, Else_Actions (N));
  
!          --  Generate:
!          --    type Ann is access all Typ;
! 
!          Ptr_Typ := Make_Temporary (Loc, 'A');
  
!          Insert_Action (N,
!            Make_Full_Type_Declaration (Loc,
!              Defining_Identifier => Ptr_Typ,
!              Type_Definition     =>
!                Make_Access_To_Object_Definition (Loc,
!                  All_Present        => True,
!                  Subtype_Indication => New_Occurrence_Of (Typ, Loc))));
  
!          --  Generate:
!          --    Cnn : Ann;
  
!          Cnn := Make_Temporary (Loc, 'C', N);
  
!          Decl :=
!            Make_Object_Declaration (Loc,
!              Defining_Identifier => Cnn,
!              Object_Definition   => New_Occurrence_Of (Ptr_Typ, Loc));
  
!          --  Generate:
!          --    if Cond then
!          --       Cnn := <Thenx>'Unrestricted_Access;
!          --    else
!          --       Cnn := <Elsex>'Unrestricted_Access;
!          --    end if;
  
!          New_If :=
!            Make_Implicit_If_Statement (N,
!              Condition       => Relocate_Node (Cond),
!              Then_Statements => New_List (
!                Make_Assignment_Statement (Sloc (Thenx),
!                  Name       => New_Occurrence_Of (Cnn, Sloc (Thenx)),
!                  Expression =>
!                    Make_Attribute_Reference (Loc,
!                      Prefix         => Relocate_Node (Thenx),
!                      Attribute_Name => Name_Unrestricted_Access))),
  
!              Else_Statements => New_List (
!                Make_Assignment_Statement (Sloc (Elsex),
!                  Name       => New_Occurrence_Of (Cnn, Sloc (Elsex)),
!                  Expression =>
!                    Make_Attribute_Reference (Loc,
!                      Prefix         => Relocate_Node (Elsex),
!                      Attribute_Name => Name_Unrestricted_Access))));
  
!          --  Preserve the original context for which the if statement is being
!          --  generated. This is needed by the finalization machinery to prevent
!          --  the premature finalization of controlled objects found within the
!          --  if statement.
  
!          Set_From_Conditional_Expression (New_If);
  
!          New_N :=
!            Make_Explicit_Dereference (Loc,
!              Prefix => New_Occurrence_Of (Cnn, Loc));
  
        --  If the result is an unconstrained array and the if expression is in a
        --  context other than the initializing expression of the declaration of
--- 5563,5629 ----
           Process_If_Case_Statements (N, Then_Actions (N));
           Process_If_Case_Statements (N, Else_Actions (N));
  
!          declare
!             Cnn     : constant Entity_Id := Make_Temporary (Loc, 'C', N);
!             Ptr_Typ : constant Entity_Id := Make_Temporary (Loc, 'A');
  
!          begin
!             --  Generate:
!             --    type Ann is access all Typ;
  
!             Insert_Action (N,
!               Make_Full_Type_Declaration (Loc,
!                 Defining_Identifier => Ptr_Typ,
!                 Type_Definition     =>
!                   Make_Access_To_Object_Definition (Loc,
!                     All_Present        => True,
!                     Subtype_Indication => New_Occurrence_Of (Typ, Loc))));
  
!             --  Generate:
!             --    Cnn : Ann;
  
!             Decl :=
!               Make_Object_Declaration (Loc,
!                 Defining_Identifier => Cnn,
!                 Object_Definition   => New_Occurrence_Of (Ptr_Typ, Loc));
  
!             --  Generate:
!             --    if Cond then
!             --       Cnn := <Thenx>'Unrestricted_Access;
!             --    else
!             --       Cnn := <Elsex>'Unrestricted_Access;
!             --    end if;
  
!             New_If :=
!               Make_Implicit_If_Statement (N,
!                 Condition       => Relocate_Node (Cond),
!                 Then_Statements => New_List (
!                   Make_Assignment_Statement (Sloc (Thenx),
!                     Name       => New_Occurrence_Of (Cnn, Sloc (Thenx)),
!                     Expression =>
!                       Make_Attribute_Reference (Loc,
!                         Prefix         => Relocate_Node (Thenx),
!                         Attribute_Name => Name_Unrestricted_Access))),
  
!                 Else_Statements => New_List (
!                   Make_Assignment_Statement (Sloc (Elsex),
!                     Name       => New_Occurrence_Of (Cnn, Sloc (Elsex)),
!                     Expression =>
!                       Make_Attribute_Reference (Loc,
!                         Prefix         => Relocate_Node (Elsex),
!                         Attribute_Name => Name_Unrestricted_Access))));
  
!             --  Preserve the original context for which the if statement is
!             --  being generated. This is needed by the finalization machinery
!             --  to prevent the premature finalization of controlled objects
!             --  found within the if statement.
  
!             Set_From_Conditional_Expression (New_If);
  
!             New_N :=
!               Make_Explicit_Dereference (Loc,
!                 Prefix => New_Occurrence_Of (Cnn, Loc));
!          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
*************** package body Exp_Ch4 is
*** 5329,5334 ****
--- 5644,5650 ----
        then
           declare
              Cnn : constant Node_Id := Make_Temporary (Loc, 'C', N);
+ 
           begin
              Insert_Action (N,
                Make_Object_Declaration (Loc,
*************** package body Exp_Ch4 is
*** 5367,5397 ****
  
              --  and replace the if expression by a reference to Cnn
  
!             Cnn := Make_Temporary (Loc, 'C', N);
  
!             Decl :=
!               Make_Object_Declaration (Loc,
!                 Defining_Identifier => Cnn,
!                 Object_Definition   => New_Occurrence_Of (Typ, Loc));
  
!             New_If :=
!               Make_Implicit_If_Statement (N,
!                 Condition       => Relocate_Node (Cond),
  
!                 Then_Statements => New_List (
!                   Make_Assignment_Statement (Sloc (Thenx),
!                     Name       => New_Occurrence_Of (Cnn, Sloc (Thenx)),
!                     Expression => Relocate_Node (Thenx))),
  
!                 Else_Statements => New_List (
!                   Make_Assignment_Statement (Sloc (Elsex),
!                     Name       => New_Occurrence_Of (Cnn, Sloc (Elsex)),
!                     Expression => Relocate_Node (Elsex))));
  
!             Set_Assignment_OK (Name (First (Then_Statements (New_If))));
!             Set_Assignment_OK (Name (First (Else_Statements (New_If))));
  
!             New_N := New_Occurrence_Of (Cnn, Loc);
  
           --  Regular path using Expression_With_Actions
  
--- 5683,5716 ----
  
              --  and replace the if expression by a reference to Cnn
  
!             declare
!                Cnn : constant Node_Id := Make_Temporary (Loc, 'C', N);
  
!             begin
!                Decl :=
!                  Make_Object_Declaration (Loc,
!                    Defining_Identifier => Cnn,
!                    Object_Definition   => New_Occurrence_Of (Typ, Loc));
  
!                New_If :=
!                  Make_Implicit_If_Statement (N,
!                    Condition       => Relocate_Node (Cond),
  
!                    Then_Statements => New_List (
!                      Make_Assignment_Statement (Sloc (Thenx),
!                        Name       => New_Occurrence_Of (Cnn, Sloc (Thenx)),
!                        Expression => Relocate_Node (Thenx))),
  
!                    Else_Statements => New_List (
!                      Make_Assignment_Statement (Sloc (Elsex),
!                        Name       => New_Occurrence_Of (Cnn, Sloc (Elsex)),
!                        Expression => Relocate_Node (Elsex))));
  
!                Set_Assignment_OK (Name (First (Then_Statements (New_If))));
!                Set_Assignment_OK (Name (First (Else_Statements (New_If))));
  
!                New_N := New_Occurrence_Of (Cnn, Loc);
!             end;
  
           --  Regular path using Expression_With_Actions
  
*************** package body Exp_Ch4 is
*** 5427,5433 ****
        end if;
  
        --  Fall through here for either the limited expansion, or the case of
!       --  inserting actions for non-limited types. In both these cases, we must
        --  move the SLOC of the parent If statement to the newly created one and
        --  change it to the SLOC of the expression which, after expansion, will
        --  correspond to what is being evaluated.
--- 5746,5752 ----
        end if;
  
        --  Fall through here for either the limited expansion, or the case of
!       --  inserting actions for nonlimited types. In both these cases, we must
        --  move the SLOC of the parent If statement to the newly created one and
        --  change it to the SLOC of the expression which, after expansion, will
        --  correspond to what is being evaluated.
*************** package body Exp_Ch4 is
*** 5696,5705 ****
                --  have a test in the generic that makes sense with some types
                --  and not with other types.
  
!               and then not In_Instance
              then
!                Substitute_Valid_Check;
!                goto Leave;
              end if;
  
              --  If we have an explicit range, do a bit of optimization based on
--- 6015,6034 ----
                --  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.
! 
              then
!                if In_Instance
!                  or else (Ekind (Current_Scope) = E_Function
!                            and then Is_Predicate_Function (Current_Scope))
!                then
!                   null;
! 
!                else
!                   Substitute_Valid_Check;
!                   goto Leave;
!                end if;
              end if;
  
              --  If we have an explicit range, do a bit of optimization based on
*************** package body Exp_Ch4 is
*** 5831,5842 ****
              if Is_Tagged_Type (Typ) then
  
                 --  No expansion will be performed for VM targets, as the VM
!                --  back-ends will handle the membership tests directly.
  
                 if Tagged_Type_Expansion then
                    Tagged_Membership (N, SCIL_Node, New_N);
                    Rewrite (N, New_N);
!                   Analyze_And_Resolve (N, Restyp);
  
                    --  Update decoration of relocated node referenced by the
                    --  SCIL node.
--- 6160,6171 ----
              if Is_Tagged_Type (Typ) then
  
                 --  No expansion will be performed for VM targets, as the VM
!                --  back ends will handle the membership tests directly.
  
                 if Tagged_Type_Expansion then
                    Tagged_Membership (N, SCIL_Node, New_N);
                    Rewrite (N, New_N);
!                   Analyze_And_Resolve (N, Restyp, Suppress => All_Checks);
  
                    --  Update decoration of relocated node referenced by the
                    --  SCIL node.
*************** package body Exp_Ch4 is
*** 6089,6095 ****
                                  Right_Opnd => Make_Null (Loc))));
  
                          --  No expansion will be performed for VM targets, as
!                         --  the VM back-ends will handle the membership tests
                          --  directly.
  
                          if Tagged_Type_Expansion then
--- 6418,6424 ----
                                  Right_Opnd => Make_Null (Loc))));
  
                          --  No expansion will be performed for VM targets, as
!                         --  the VM back ends will handle the membership tests
                          --  directly.
  
                          if Tagged_Type_Expansion then
*************** package body Exp_Ch4 is
*** 6250,6259 ****
        --  Ada 2005 (AI-318-02): If the prefix is a call to a build-in-place
        --  function, then additional actuals must be passed.
  
!       if Ada_Version >= Ada_2005
!         and then Is_Build_In_Place_Function_Call (P)
!       then
           Make_Build_In_Place_Call_In_Anonymous_Context (P);
        end if;
  
        --  If the prefix is an access type, then we unconditionally rewrite if
--- 6579,6593 ----
        --  Ada 2005 (AI-318-02): If the prefix is a call to a build-in-place
        --  function, then additional actuals must be passed.
  
!       if Is_Build_In_Place_Function_Call (P) then
           Make_Build_In_Place_Call_In_Anonymous_Context (P);
+ 
+       --  Ada 2005 (AI-318-02): Specialization of the previous case for prefix
+       --  containing build-in-place function calls whose returned object covers
+       --  interface types.
+ 
+       elsif Present (Unqual_BIP_Iface_Function_Call (P)) then
+          Make_Build_In_Place_Iface_Call_In_Anonymous_Context (P);
        end if;
  
        --  If the prefix is an access type, then we unconditionally rewrite if
*************** package body Exp_Ch4 is
*** 6455,6461 ****
     --  is an access to protected subprogram, or a subtype thereof. We represent
     --  such access values as a record, and so we must replace the occurrence of
     --  null by the equivalent record (with a null address and a null pointer in
!    --  it), so that the backend creates the proper value.
  
     procedure Expand_N_Null (N : Node_Id) is
        Loc : constant Source_Ptr := Sloc (N);
--- 6789,6795 ----
     --  is an access to protected subprogram, or a subtype thereof. We represent
     --  such access values as a record, and so we must replace the occurrence of
     --  null by the equivalent record (with a null address and a null pointer in
!    --  it), so that the back end creates the proper value.
  
     procedure Expand_N_Null (N : Node_Id) is
        Loc : constant Source_Ptr := Sloc (N);
*************** package body Exp_Ch4 is
*** 6574,6579 ****
--- 6908,6915 ----
        --  Overflow checks for floating-point if -gnateF mode active
  
        Check_Float_Op_Overflow (N);
+ 
+       Expand_Nonbinary_Modular_Op (N);
     end Expand_N_Op_Add;
  
     ---------------------
*************** package body Exp_Ch4 is
*** 6597,6604 ****
  
        elsif Is_Intrinsic_Subprogram (Entity (N)) then
           Expand_Intrinsic_Call (N, Entity (N));
- 
        end if;
     end Expand_N_Op_And;
  
     ------------------------
--- 6933,6941 ----
  
        elsif Is_Intrinsic_Subprogram (Entity (N)) then
           Expand_Intrinsic_Call (N, Entity (N));
        end if;
+ 
+       Expand_Nonbinary_Modular_Op (N);
     end Expand_N_Op_And;
  
     ------------------------
*************** package body Exp_Ch4 is
*** 6671,6677 ****
  
           if Debug_Flag_Dot_H then
              declare
!                Cnod : constant Node_Id   := Relocate_Node (Cnode);
                 Typ  : constant Entity_Id := Base_Type (Etype (Cnode));
  
              begin
--- 7008,7014 ----
  
           if Debug_Flag_Dot_H then
              declare
!                Cnod : constant Node_Id   := New_Copy_Tree (Cnode);
                 Typ  : constant Entity_Id := Base_Type (Etype (Cnode));
  
              begin
*************** package body Exp_Ch4 is
*** 6770,6782 ****
  
        if Is_Fixed_Point_Type (Typ) then
  
           --  Deal with divide-by-zero check if back end cannot handle them
           --  and the flag is set indicating that we need such a check. Note
           --  that we don't need to bother here with the case of mixed-mode
           --  (Right operand an integer type), since these will be rewritten
           --  with conversions to a divide with a fixed-point right operand.
  
!          if Do_Division_Check (N)
             and then not Backend_Divide_Checks_On_Target
             and then not Is_Integer_Type (Rtyp)
           then
--- 7107,7132 ----
  
        if Is_Fixed_Point_Type (Typ) then
  
+          --  No special processing if Treat_Fixed_As_Integer is set, since
+          --  from a semantic point of view such operations are simply integer
+          --  operations and will be treated that way.
+ 
+          if not Treat_Fixed_As_Integer (N) then
+             if Is_Integer_Type (Rtyp) then
+                Expand_Divide_Fixed_By_Integer_Giving_Fixed (N);
+             else
+                Expand_Divide_Fixed_By_Fixed_Giving_Fixed (N);
+             end if;
+          end if;
+ 
           --  Deal with divide-by-zero check if back end cannot handle them
           --  and the flag is set indicating that we need such a check. Note
           --  that we don't need to bother here with the case of mixed-mode
           --  (Right operand an integer type), since these will be rewritten
           --  with conversions to a divide with a fixed-point right operand.
  
!          if Nkind (N) = N_Op_Divide
!            and then Do_Division_Check (N)
             and then not Backend_Divide_Checks_On_Target
             and then not Is_Integer_Type (Rtyp)
           then
*************** package body Exp_Ch4 is
*** 6790,6807 ****
                    Reason  => CE_Divide_By_Zero));
           end if;
  
-          --  No special processing if Treat_Fixed_As_Integer is set, since
-          --  from a semantic point of view such operations are simply integer
-          --  operations and will be treated that way.
- 
-          if not Treat_Fixed_As_Integer (N) then
-             if Is_Integer_Type (Rtyp) then
-                Expand_Divide_Fixed_By_Integer_Giving_Fixed (N);
-             else
-                Expand_Divide_Fixed_By_Fixed_Giving_Fixed (N);
-             end if;
-          end if;
- 
        --  Other cases of division of fixed-point operands. Again we exclude the
        --  case where Treat_Fixed_As_Integer is set.
  
--- 7140,7145 ----
*************** package body Exp_Ch4 is
*** 6839,6844 ****
--- 7177,7184 ----
        --  Overflow checks for floating-point if -gnateF mode active
  
        Check_Float_Op_Overflow (N);
+ 
+       Expand_Nonbinary_Modular_Op (N);
     end Expand_N_Op_Divide;
  
     --------------------
*************** package body Exp_Ch4 is
*** 7543,7549 ****
  
           --  Otherwise expand the component by component equality. Note that
           --  we never use block-bit comparisons for records, because of the
!          --  problems with gaps. The backend will often be able to recombine
           --  the separate comparisons that we generate here.
  
           else
--- 7883,7889 ----
  
           --  Otherwise expand the component by component equality. Note that
           --  we never use block-bit comparisons for records, because of the
!          --  problems with gaps. The back end will often be able to recombine
           --  the separate comparisons that we generate here.
  
           else
*************** package body Exp_Ch4 is
*** 7593,7612 ****
     -----------------------
  
     procedure Expand_N_Op_Expon (N : Node_Id) is
!       Loc    : constant Source_Ptr := Sloc (N);
!       Typ    : constant Entity_Id  := Etype (N);
!       Rtyp   : constant Entity_Id  := Root_Type (Typ);
!       Base   : constant Node_Id    := Relocate_Node (Left_Opnd (N));
!       Bastyp : constant Node_Id    := Etype (Base);
!       Exp    : constant Node_Id    := Relocate_Node (Right_Opnd (N));
!       Exptyp : constant Entity_Id  := Etype (Exp);
!       Ovflo  : constant Boolean    := Do_Overflow_Check (N);
!       Expv   : Uint;
!       Temp   : Node_Id;
!       Rent   : RE_Id;
!       Ent    : Entity_Id;
!       Etyp   : Entity_Id;
!       Xnode  : Node_Id;
  
        function Wrap_MA (Exp : Node_Id) return Node_Id;
        --  Given an expression Exp, if the root type is Float or Long_Float,
--- 7933,7944 ----
     -----------------------
  
     procedure Expand_N_Op_Expon (N : Node_Id) is
!       Loc   : constant Source_Ptr := Sloc (N);
!       Ovflo : constant Boolean    := Do_Overflow_Check (N);
!       Typ   : constant Entity_Id  := Etype (N);
!       Rtyp  : constant Entity_Id  := Root_Type (Typ);
! 
!       Bastyp : Entity_Id;
  
        function Wrap_MA (Exp : Node_Id) return Node_Id;
        --  Given an expression Exp, if the root type is Float or Long_Float,
*************** package body Exp_Ch4 is
*** 7621,7626 ****
--- 7953,7959 ----
  
        function Wrap_MA (Exp : Node_Id) return Node_Id is
           Loc : constant Source_Ptr := Sloc (Exp);
+ 
        begin
           if Rtyp = Standard_Float or else Rtyp = Standard_Long_Float then
              return
*************** package body Exp_Ch4 is
*** 7633,7639 ****
           end if;
        end Wrap_MA;
  
!    --  Start of processing for Expand_N_Op
  
     begin
        Binary_Op_Validity_Checks (N);
--- 7966,7984 ----
           end if;
        end Wrap_MA;
  
!       --  Local variables
! 
!       Base   : Node_Id;
!       Ent    : Entity_Id;
!       Etyp   : Entity_Id;
!       Exp    : Node_Id;
!       Exptyp : Entity_Id;
!       Expv   : Uint;
!       Rent   : RE_Id;
!       Temp   : Node_Id;
!       Xnode  : Node_Id;
! 
!    --  Start of processing for Expand_N_Op_Expon
  
     begin
        Binary_Op_Validity_Checks (N);
*************** package body Exp_Ch4 is
*** 7644,7649 ****
--- 7989,8003 ----
           return;
        end if;
  
+       --  Relocation of left and right operands must be done after performing
+       --  the validity checks since the generation of validation checks may
+       --  remove side effects.
+ 
+       Base   := Relocate_Node (Left_Opnd (N));
+       Bastyp := Etype (Base);
+       Exp    := Relocate_Node (Right_Opnd (N));
+       Exptyp := Etype (Exp);
+ 
        --  If either operand is of a private type, then we have the use of an
        --  intrinsic operator, and we get rid of the privateness, by using root
        --  types of underlying types for the actual operation. Otherwise the
*************** package body Exp_Ch4 is
*** 8327,8332 ****
--- 8681,8688 ----
  
           Analyze_And_Resolve (N, Typ);
        end if;
+ 
+       Expand_Nonbinary_Modular_Op (N);
     end Expand_N_Op_Minus;
  
     ---------------------
*************** package body Exp_Ch4 is
*** 8803,8808 ****
--- 9159,9166 ----
        --  Overflow checks for floating-point if -gnateF mode active
  
        Check_Float_Op_Overflow (N);
+ 
+       Expand_Nonbinary_Modular_Op (N);
     end Expand_N_Op_Multiply;
  
     --------------------
*************** package body Exp_Ch4 is
*** 8847,8852 ****
--- 9205,9213 ----
        --  the same visibility as in the generic unit. This avoids duplicating
        --  or factoring the complex code for record/array equality tests etc.
  
+       --  This case is also used for the minimal expansion performed in
+       --  GNATprove mode.
+ 
        else
           declare
              Loc : constant Source_Ptr := Sloc (N);
*************** package body Exp_Ch4 is
*** 8862,8868 ****
                    Make_Op_Eq (Loc,
                      Left_Opnd =>  Left_Opnd (N),
                      Right_Opnd => Right_Opnd (N)));
!             Set_Paren_Count (Right_Opnd (Neg), 1);
  
              if Scope (Ne) /= Standard_Standard then
                 Set_Entity (Right_Opnd (Neg), Corresponding_Equality (Ne));
--- 9223,9236 ----
                    Make_Op_Eq (Loc,
                      Left_Opnd =>  Left_Opnd (N),
                      Right_Opnd => Right_Opnd (N)));
! 
!             --  The level of parentheses is useless in GNATprove mode, and
!             --  bumping its level here leads to wrong columns being used in
!             --  check messages, hence skip it in this mode.
! 
!             if not GNATprove_Mode then
!                Set_Paren_Count (Right_Opnd (Neg), 1);
!             end if;
  
              if Scope (Ne) /= Standard_Standard then
                 Set_Entity (Right_Opnd (Neg), Corresponding_Equality (Ne));
*************** package body Exp_Ch4 is
*** 8879,8885 ****
           end;
        end if;
  
!       Optimize_Length_Comparison (N);
     end Expand_N_Op_Ne;
  
     ---------------------
--- 9247,9258 ----
           end;
        end if;
  
!       --  No need for optimization in GNATprove mode, where we would rather see
!       --  the original source expression.
! 
!       if not GNATprove_Mode then
!          Optimize_Length_Comparison (N);
!       end if;
     end Expand_N_Op_Ne;
  
     ---------------------
*************** package body Exp_Ch4 is
*** 9097,9104 ****
  
        elsif Is_Intrinsic_Subprogram (Entity (N)) then
           Expand_Intrinsic_Call (N, Entity (N));
- 
        end if;
     end Expand_N_Op_Or;
  
     ----------------------
--- 9470,9478 ----
  
        elsif Is_Intrinsic_Subprogram (Entity (N)) then
           Expand_Intrinsic_Call (N, Entity (N));
        end if;
+ 
+       Expand_Nonbinary_Modular_Op (N);
     end Expand_N_Op_Or;
  
     ----------------------
*************** package body Exp_Ch4 is
*** 9531,9536 ****
--- 9905,9912 ----
        --  Overflow checks for floating-point if -gnateF mode active
  
        Check_Float_Op_Overflow (N);
+ 
+       Expand_Nonbinary_Modular_Op (N);
     end Expand_N_Op_Subtract;
  
     ---------------------
*************** package body Exp_Ch4 is
*** 9554,9560 ****
  
        elsif Is_Intrinsic_Subprogram (Entity (N)) then
           Expand_Intrinsic_Call (N, Entity (N));
- 
        end if;
     end Expand_N_Op_Xor;
  
--- 9930,9935 ----
*************** package body Exp_Ch4 is
*** 9702,9707 ****
--- 10077,10153 ----
        Analyze_And_Resolve (N, Standard_Boolean);
     end Expand_N_Quantified_Expression;
  
+    -----------------------------------
+    -- Expand_N_Reduction_Expression --
+    -----------------------------------
+ 
+    procedure Expand_N_Reduction_Expression (N : Node_Id) is
+       Actions   : constant List_Id    := New_List;
+       Expr      : constant Node_Id    := Expression (N);
+       Iter_Spec : constant Node_Id    := Iterator_Specification (N);
+       Loc       : constant Source_Ptr := Sloc (N);
+       Loop_Spec : constant Node_Id    := Loop_Parameter_Specification (N);
+       Typ       : constant Entity_Id  := Etype (N);
+ 
+       Actual        : Node_Id;
+       New_Call      : Node_Id;
+       Reduction_Par : Node_Id;
+       Result        : Entity_Id;
+       Scheme        : Node_Id;
+ 
+    begin
+       Result   := Make_Temporary (Loc, 'R', N);
+       New_Call := New_Copy_Tree (Expr);
+ 
+       if Nkind (New_Call) = N_Function_Call then
+          Actual := First (Parameter_Associations (New_Call));
+ 
+          if Nkind (Actual) /= N_Reduction_Expression_Parameter then
+             Actual := Next_Actual (Actual);
+          end if;
+ 
+       elsif Nkind (New_Call) in N_Binary_Op then
+          Actual := Left_Opnd (New_Call);
+ 
+          if Nkind (Actual) /= N_Reduction_Expression_Parameter then
+             Actual := Right_Opnd (New_Call);
+          end if;
+       end if;
+ 
+       Reduction_Par := Expression (Actual);
+ 
+       Append_To (Actions,
+         Make_Object_Declaration (Loc,
+           Defining_Identifier => Result,
+           Object_Definition   => New_Occurrence_Of (Typ, Loc),
+           Expression          => New_Copy_Tree (Reduction_Par)));
+ 
+       if Present (Iter_Spec) then
+          Scheme :=
+            Make_Iteration_Scheme (Loc,
+              Iterator_Specification => Iter_Spec);
+       else
+          Scheme :=
+            Make_Iteration_Scheme (Loc,
+              Loop_Parameter_Specification => Loop_Spec);
+       end if;
+ 
+       Replace (Actual, New_Occurrence_Of (Result, Loc));
+ 
+       Append_To (Actions,
+         Make_Loop_Statement (Loc,
+           Iteration_Scheme => Scheme,
+           Statements       => New_List (Make_Assignment_Statement (Loc,
+             New_Occurrence_Of (Result, Loc), New_Call)),
+           End_Label        => Empty));
+ 
+       Rewrite (N,
+         Make_Expression_With_Actions (Loc,
+           Expression => New_Occurrence_Of (Result, Loc),
+           Actions    => Actions));
+       Analyze_And_Resolve (N, Typ);
+    end Expand_N_Reduction_Expression;
+ 
     ---------------------------------
     -- Expand_N_Selected_Component --
     ---------------------------------
*************** package body Exp_Ch4 is
*** 9813,9822 ****
        --  Ada 2005 (AI-318-02): If the prefix is a call to a build-in-place
        --  function, then additional actuals must be passed.
  
!       if Ada_Version >= Ada_2005
!         and then Is_Build_In_Place_Function_Call (P)
!       then
           Make_Build_In_Place_Call_In_Anonymous_Context (P);
        end if;
  
        --  Gigi cannot handle unchecked conversions that are the prefix of a
--- 10259,10273 ----
        --  Ada 2005 (AI-318-02): If the prefix is a call to a build-in-place
        --  function, then additional actuals must be passed.
  
!       if Is_Build_In_Place_Function_Call (P) then
           Make_Build_In_Place_Call_In_Anonymous_Context (P);
+ 
+       --  Ada 2005 (AI-318-02): Specialization of the previous case for prefix
+       --  containing build-in-place function calls whose returned object covers
+       --  interface types.
+ 
+       elsif Present (Unqual_BIP_Iface_Function_Call (P)) then
+          Make_Build_In_Place_Iface_Call_In_Anonymous_Context (P);
        end if;
  
        --  Gigi cannot handle unchecked conversions that are the prefix of a
*************** package body Exp_Ch4 is
*** 10084,10090 ****
  
        procedure Make_Temporary_For_Slice;
        --  Create a named variable for the value of the slice, in cases where
!       --  the back-end cannot handle it properly, e.g. when packed types or
        --  unaligned slices are involved.
  
        -------------------------
--- 10535,10541 ----
  
        procedure Make_Temporary_For_Slice;
        --  Create a named variable for the value of the slice, in cases where
!       --  the back end cannot handle it properly, e.g. when packed types or
        --  unaligned slices are involved.
  
        -------------------------
*************** package body Exp_Ch4 is
*** 10170,10179 ****
        --  Ada 2005 (AI-318-02): If the prefix is a call to a build-in-place
        --  function, then additional actuals must be passed.
  
!       if Ada_Version >= Ada_2005
!         and then Is_Build_In_Place_Function_Call (Pref)
!       then
           Make_Build_In_Place_Call_In_Anonymous_Context (Pref);
        end if;
  
        --  The remaining case to be handled is packed slices. We can leave
--- 10621,10635 ----
        --  Ada 2005 (AI-318-02): If the prefix is a call to a build-in-place
        --  function, then additional actuals must be passed.
  
!       if Is_Build_In_Place_Function_Call (Pref) then
           Make_Build_In_Place_Call_In_Anonymous_Context (Pref);
+ 
+       --  Ada 2005 (AI-318-02): Specialization of the previous case for prefix
+       --  containing build-in-place function calls whose returned object covers
+       --  interface types.
+ 
+       elsif Present (Unqual_BIP_Iface_Function_Call (Pref)) then
+          Make_Build_In_Place_Iface_Call_In_Anonymous_Context (Pref);
        end if;
  
        --  The remaining case to be handled is packed slices. We can leave
*************** package body Exp_Ch4 is
*** 10269,10275 ****
           Temp : Entity_Id;
           Decl : Node_Id;
           Odef : Node_Id;
-          Disc : Node_Id;
           N_Ix : Node_Id;
           Cons : List_Id;
  
--- 10725,10730 ----
*************** package body Exp_Ch4 is
*** 10299,10320 ****
  
              if not Is_Constrained (Target_Type) then
                 if Has_Discriminants (Operand_Type) then
-                   Disc := First_Discriminant (Operand_Type);
  
!                   if Disc /= First_Stored_Discriminant (Operand_Type) then
!                      Disc := First_Stored_Discriminant (Operand_Type);
!                   end if;
  
!                   Cons := New_List;
!                   while Present (Disc) loop
!                      Append_To (Cons,
!                        Make_Selected_Component (Loc,
!                          Prefix        =>
!                            Duplicate_Subexpr_Move_Checks (Operand),
!                          Selector_Name =>
!                            Make_Identifier (Loc, Chars (Disc))));
!                      Next_Discriminant (Disc);
!                   end loop;
  
                 elsif Is_Array_Type (Operand_Type) then
                    N_Ix := First_Index (Target_Type);
--- 10754,10824 ----
  
              if not Is_Constrained (Target_Type) then
                 if Has_Discriminants (Operand_Type) then
  
!                   --  A change of representation can only apply to untagged
!                   --  types. We need to build the constraint that applies to
!                   --  the target type, using the constraints of the operand.
!                   --  The analysis is complicated if there are both inherited
!                   --  discriminants and constrained discriminants.
!                   --  We iterate over the discriminants of the target, and
!                   --  find the discriminant of the same name:
  
!                   --  a) If there is a corresponding discriminant in the object
!                   --  then the value is a selected component of the operand.
! 
!                   --  b) Otherwise the value of a constrained discriminant is
!                   --  found in the stored constraint of the operand.
! 
!                   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
!                         if Present (Disc_O)
!                           and then Chars (Disc_T) = Chars (Disc_O)
!                         then
!                            Append_To (Cons,
!                              Make_Selected_Component (Loc,
!                                Prefix        =>
!                                  Duplicate_Subexpr_Move_Checks (Operand),
!                                Selector_Name =>
!                                  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;
! 
!                         Next_Discriminant (Disc_T);
!                      end loop;
!                   end;
  
                 elsif Is_Array_Type (Operand_Type) then
                    N_Ix := First_Index (Target_Type);
*************** package body Exp_Ch4 is
*** 10327,10336 ****
  
                       Append_To (Cons,
                         Make_Range (Loc,
!                          Low_Bound =>
                             Unchecked_Convert_To (Etype (N_Ix),
                               Make_Attribute_Reference (Loc,
!                                Prefix =>
                                   Duplicate_Subexpr_No_Checks
                                     (Operand, Name_Req => True),
                                 Attribute_Name => Name_First,
--- 10831,10840 ----
  
                       Append_To (Cons,
                         Make_Range (Loc,
!                          Low_Bound  =>
                             Unchecked_Convert_To (Etype (N_Ix),
                               Make_Attribute_Reference (Loc,
!                                Prefix         =>
                                   Duplicate_Subexpr_No_Checks
                                     (Operand, Name_Req => True),
                                 Attribute_Name => Name_First,
*************** package body Exp_Ch4 is
*** 10340,10346 ****
                           High_Bound =>
                             Unchecked_Convert_To (Etype (N_Ix),
                               Make_Attribute_Reference (Loc,
!                                Prefix =>
                                   Duplicate_Subexpr_No_Checks
                                     (Operand, Name_Req => True),
                                 Attribute_Name => Name_Last,
--- 10844,10850 ----
                           High_Bound =>
                             Unchecked_Convert_To (Etype (N_Ix),
                               Make_Attribute_Reference (Loc,
!                                Prefix         =>
                                   Duplicate_Subexpr_No_Checks
                                     (Operand, Name_Req => True),
                                 Attribute_Name => Name_Last,
*************** package body Exp_Ch4 is
*** 10358,10364 ****
                 Odef :=
                   Make_Subtype_Indication (Loc,
                     Subtype_Mark => Odef,
!                    Constraint =>
                       Make_Index_Or_Discriminant_Constraint (Loc,
                         Constraints => Cons));
              end if;
--- 10862,10868 ----
                 Odef :=
                   Make_Subtype_Indication (Loc,
                     Subtype_Mark => Odef,
!                    Constraint   =>
                       Make_Index_Or_Discriminant_Constraint (Loc,
                         Constraints => Cons));
              end if;
*************** package body Exp_Ch4 is
*** 10379,10385 ****
                New_List (
                  Decl,
                  Make_Assignment_Statement (Loc,
!                   Name => New_Occurrence_Of (Temp, Loc),
                    Expression => Relocate_Node (N))),
                  Suppress => All_Checks);
  
--- 10883,10889 ----
                New_List (
                  Decl,
                  Make_Assignment_Statement (Loc,
!                   Name       => New_Occurrence_Of (Temp, Loc),
                    Expression => Relocate_Node (N))),
                  Suppress => All_Checks);
  
*************** package body Exp_Ch4 is
*** 10742,10761 ****
  
        if Is_Access_Type (Target_Type) then
  
           --  Apply an accessibility check when the conversion operand is an
           --  access parameter (or a renaming thereof), unless conversion was
!          --  expanded from an Unchecked_ or Unrestricted_Access attribute.
!          --  Note that other checks may still need to be applied below (such
!          --  as tagged type checks).
  
!          if Is_Entity_Name (Operand)
             and then Has_Extra_Accessibility (Entity (Operand))
             and then Ekind (Etype (Operand)) = E_Anonymous_Access_Type
             and then (Nkind (Original_Node (N)) /= N_Attribute_Reference
                        or else Attribute_Name (Original_Node (N)) = Name_Access)
           then
!             Apply_Accessibility_Check
!               (Operand, Target_Type, Insert_Node => Operand);
  
           --  If the level of the operand type is statically deeper than the
           --  level of the target type, then force Program_Error. Note that this
--- 11246,11291 ----
  
        if Is_Access_Type (Target_Type) then
  
+          --  If this type conversion was internally generated by the front end
+          --  to displace the pointer to the object to reference an interface
+          --  type and the original node was an Unrestricted_Access attribute,
+          --  then skip applying accessibility checks (because, according to the
+          --  GNAT Reference Manual, this attribute is similar to 'Access except
+          --  that all accessibility and aliased view checks are omitted).
+ 
+          if not Comes_From_Source (N)
+            and then Is_Interface (Designated_Type (Target_Type))
+            and then Nkind (Original_Node (N)) = N_Attribute_Reference
+            and then Attribute_Name (Original_Node (N)) =
+                       Name_Unrestricted_Access
+          then
+             null;
+ 
           --  Apply an accessibility check when the conversion operand is an
           --  access parameter (or a renaming thereof), unless conversion was
!          --  expanded from an Unchecked_ or Unrestricted_Access attribute,
!          --  or for the actual of a class-wide interface parameter. Note that
!          --  other checks may still need to be applied below (such as tagged
!          --  type checks).
  
!          elsif Is_Entity_Name (Operand)
             and then Has_Extra_Accessibility (Entity (Operand))
             and then Ekind (Etype (Operand)) = E_Anonymous_Access_Type
             and then (Nkind (Original_Node (N)) /= N_Attribute_Reference
                        or else Attribute_Name (Original_Node (N)) = Name_Access)
           then
!             if not Comes_From_Source (N)
!               and then Nkind_In (Parent (N), N_Function_Call,
!                                              N_Procedure_Call_Statement)
!               and then Is_Interface (Designated_Type (Target_Type))
!               and then Is_Class_Wide_Type (Designated_Type (Target_Type))
!             then
!                null;
! 
!             else
!                Apply_Accessibility_Check
!                  (Operand, Target_Type, Insert_Node => Operand);
!             end if;
  
           --  If the level of the operand type is statically deeper than the
           --  level of the target type, then force Program_Error. Note that this
*************** package body Exp_Ch4 is
*** 10796,10801 ****
--- 11326,11332 ----
           elsif In_Instance_Body
             and then Ekind (Operand_Type) = E_Anonymous_Access_Type
             and then Nkind (Operand) = N_Selected_Component
+            and then Ekind (Entity (Selector_Name (Operand))) = E_Discriminant
             and then Object_Access_Level (Operand) >
                        Type_Access_Level (Target_Type)
           then
*************** package body Exp_Ch4 is
*** 10885,10891 ****
                 Insert_Action (N,
                   Make_Raise_Constraint_Error (Loc,
                     Condition => Cond,
!                    Reason    => CE_Tag_Check_Failed));
              end Make_Tag_Check;
  
           --  Start of processing for Tagged_Conversion
--- 11416,11423 ----
                 Insert_Action (N,
                   Make_Raise_Constraint_Error (Loc,
                     Condition => Cond,
!                    Reason    => CE_Tag_Check_Failed),
!                  Suppress => All_Checks);
              end Make_Tag_Check;
  
           --  Start of processing for Tagged_Conversion
*************** package body Exp_Ch4 is
*** 11435,11441 ****
     --      and then ...
     --      and then Lhs.Cmpn = Rhs.Cmpn
  
!    --  The expression is folded by the back-end for adjacent fields. This
     --  function is called for tagged record in only one occasion: for imple-
     --  menting predefined primitive equality (see Predefined_Primitives_Bodies)
     --  otherwise the primitive "=" is used directly.
--- 11967,11973 ----
     --      and then ...
     --      and then Lhs.Cmpn = Rhs.Cmpn
  
!    --  The expression is folded by the back end for adjacent fields. This
     --  function is called for tagged record in only one occasion: for imple-
     --  menting predefined primitive equality (see Predefined_Primitives_Bodies)
     --  otherwise the primitive "=" is used directly.
*************** package body Exp_Ch4 is
*** 11938,11944 ****
     -------------------------------
  
     procedure Insert_Dereference_Action (N : Node_Id) is
- 
        function Is_Checked_Storage_Pool (P : Entity_Id) return Boolean;
        --  Return true if type of P is derived from Checked_Pool;
  
--- 12470,12475 ----
*************** package body Exp_Ch4 is
*** 11968,11978 ****
  
        --  Local variables
  
!       Typ   : constant Entity_Id  := Etype (N);
!       Desig : constant Entity_Id  := Available_View (Designated_Type (Typ));
!       Loc   : constant Source_Ptr := Sloc (N);
!       Pool  : constant Entity_Id  := Associated_Storage_Pool (Typ);
!       Pnod  : constant Node_Id    := Parent (N);
  
        Addr      : Entity_Id;
        Alig      : Entity_Id;
--- 12499,12510 ----
  
        --  Local variables
  
!       Context   : constant Node_Id    := Parent (N);
!       Ptr_Typ   : constant Entity_Id  := Etype (N);
!       Desig_Typ : constant Entity_Id  :=
!                     Available_View (Designated_Type (Ptr_Typ));
!       Loc       : constant Source_Ptr := Sloc (N);
!       Pool      : constant Entity_Id  := Associated_Storage_Pool (Ptr_Typ);
  
        Addr      : Entity_Id;
        Alig      : Entity_Id;
*************** package body Exp_Ch4 is
*** 11984,12001 ****
     --  Start of processing for Insert_Dereference_Action
  
     begin
!       pragma Assert (Nkind (Pnod) = N_Explicit_Dereference);
  
        --  Do not re-expand a dereference which has already been processed by
        --  this routine.
  
!       if Has_Dereference_Action (Pnod) then
           return;
  
        --  Do not perform this type of expansion for internally-generated
        --  dereferences.
  
!       elsif not Comes_From_Source (Original_Node (Pnod)) then
           return;
  
        --  A dereference action is only applicable to objects which have been
--- 12516,12533 ----
     --  Start of processing for Insert_Dereference_Action
  
     begin
!       pragma Assert (Nkind (Context) = N_Explicit_Dereference);
  
        --  Do not re-expand a dereference which has already been processed by
        --  this routine.
  
!       if Has_Dereference_Action (Context) then
           return;
  
        --  Do not perform this type of expansion for internally-generated
        --  dereferences.
  
!       elsif not Comes_From_Source (Original_Node (Context)) then
           return;
  
        --  A dereference action is only applicable to objects which have been
*************** package body Exp_Ch4 is
*** 12037,12051 ****
  
        --  Special case of an unconstrained array: need to add descriptor size
  
!       if Is_Array_Type (Desig)
!         and then not Is_Constrained (First_Subtype (Desig))
        then
           Size_Bits :=
             Make_Op_Add (Loc,
               Left_Opnd  =>
                 Make_Attribute_Reference (Loc,
                   Prefix         =>
!                    New_Occurrence_Of (First_Subtype (Desig), Loc),
                   Attribute_Name => Name_Descriptor_Size),
               Right_Opnd => Size_Bits);
        end if;
--- 12569,12583 ----
  
        --  Special case of an unconstrained array: need to add descriptor size
  
!       if Is_Array_Type (Desig_Typ)
!         and then not Is_Constrained (First_Subtype (Desig_Typ))
        then
           Size_Bits :=
             Make_Op_Add (Loc,
               Left_Opnd  =>
                 Make_Attribute_Reference (Loc,
                   Prefix         =>
!                    New_Occurrence_Of (First_Subtype (Desig_Typ), Loc),
                   Attribute_Name => Name_Descriptor_Size),
               Right_Opnd => Size_Bits);
        end if;
*************** package body Exp_Ch4 is
*** 12087,12093 ****
        --  knowledge of hidden pointers, we have to bring the two pointers back
        --  in view in order to restore the original state of the object.
  
!       if Needs_Finalization (Desig) then
  
           --  Adjust the address and size of the dereferenced object. Generate:
           --    Adjust_Controlled_Dereference (Addr, Size, Alig);
--- 12619,12632 ----
        --  knowledge of hidden pointers, we have to bring the two pointers back
        --  in view in order to restore the original state of the object.
  
!       --  The address manipulation is not performed for access types that are
!       --  subject to pragma No_Heap_Finalization because the two pointers do
!       --  not exist in the first place.
! 
!       if No_Heap_Finalization (Ptr_Typ) then
!          null;
! 
!       elsif Needs_Finalization (Desig_Typ) then
  
           --  Adjust the address and size of the dereferenced object. Generate:
           --    Adjust_Controlled_Dereference (Addr, Size, Alig);
*************** package body Exp_Ch4 is
*** 12109,12115 ****
           --       <Stmt>;
           --    end if;
  
!          if Is_Class_Wide_Type (Desig) then
              Deref :=
                Make_Explicit_Dereference (Loc,
                  Prefix => Duplicate_Subexpr_Move_Checks (N));
--- 12648,12654 ----
           --       <Stmt>;
           --    end if;
  
!          if Is_Class_Wide_Type (Desig_Typ) then
              Deref :=
                Make_Explicit_Dereference (Loc,
                  Prefix => Duplicate_Subexpr_Move_Checks (N));
*************** package body Exp_Ch4 is
*** 12148,12154 ****
        --  Mark the explicit dereference as processed to avoid potential
        --  infinite expansion.
  
!       Set_Has_Dereference_Action (Pnod);
  
     exception
        when RE_Not_Available =>
--- 12687,12693 ----
        --  Mark the explicit dereference as processed to avoid potential
        --  infinite expansion.
  
!       Set_Has_Dereference_Action (Context);
  
     exception
        when RE_Not_Available =>
*************** package body Exp_Ch4 is
*** 12620,12629 ****
        Comp : Node_Id;
        --  Comparison operand, set only if Is_Zero is false
  
!       Ent : Entity_Id;
        --  Entity whose length is being compared
  
!       Index : Node_Id;
        --  Integer_Literal node for length attribute expression, or Empty
        --  if there is no such expression present.
  
--- 13159,13168 ----
        Comp : Node_Id;
        --  Comparison operand, set only if Is_Zero is false
  
!       Ent : Entity_Id := Empty;
        --  Entity whose length is being compared
  
!       Index : Node_Id := Empty;
        --  Integer_Literal node for length attribute expression, or Empty
        --  if there is no such expression present.
  
*************** package body Exp_Ch4 is
*** 12958,12964 ****
           Result :=
             Make_Op_Le (Loc,
               Left_Opnd  => Left,
!                        Right_Opnd => Right);
  
        --  X'Length > 1  => X'First < X'Last
        --  X'Length > n  => X'First + (n = 1) < X'Last
--- 13497,13503 ----
           Result :=
             Make_Op_Le (Loc,
               Left_Opnd  => Left,
!              Right_Opnd => Right);
  
        --  X'Length > 1  => X'First < X'Last
        --  X'Length > n  => X'First + (n = 1) < X'Last
*************** package body Exp_Ch4 is
*** 13158,13169 ****
     ------------------------
  
     procedure Rewrite_Comparison (N : Node_Id) is
!       Warning_Generated : Boolean := False;
!       --  Set to True if first pass with Assume_Valid generates a warning in
!       --  which case we skip the second pass to avoid warning overloaded.
  
!       Result : Node_Id;
!       --  Set to Standard_True or Standard_False
  
     begin
        if Nkind (N) = N_Type_Conversion then
--- 13697,13706 ----
     ------------------------
  
     procedure Rewrite_Comparison (N : Node_Id) is
!       Typ : constant Entity_Id := Etype (N);
  
!       False_Result : Boolean;
!       True_Result  : Boolean;
  
     begin
        if Nkind (N) = N_Type_Conversion then
*************** package body Exp_Ch4 is
*** 13174,13298 ****
           return;
        end if;
  
!       --  Now start looking at the comparison in detail. We potentially go
!       --  through this loop twice. The first time, Assume_Valid is set False
!       --  in the call to Compile_Time_Compare. If this call results in a
!       --  clear result of always True or Always False, that's decisive and
!       --  we are done. Otherwise we repeat the processing with Assume_Valid
!       --  set to True to generate additional warnings. We can skip that step
!       --  if Constant_Condition_Warnings is False.
! 
!       for AV in False .. True loop
!          declare
!             Typ : constant Entity_Id := Etype (N);
!             Op1 : constant Node_Id   := Left_Opnd (N);
!             Op2 : constant Node_Id   := Right_Opnd (N);
! 
!             Res : constant Compare_Result :=
!                     Compile_Time_Compare (Op1, Op2, Assume_Valid => AV);
!             --  Res indicates if compare outcome can be compile time determined
! 
!             True_Result  : Boolean;
!             False_Result : Boolean;
! 
!          begin
!             case N_Op_Compare (Nkind (N)) is
!                when N_Op_Eq =>
!                   True_Result  := Res = EQ;
!                   False_Result := Res = LT or else Res = GT or else Res = NE;
! 
!                when N_Op_Ge =>
!                   True_Result  := Res in Compare_GE;
!                   False_Result := Res = LT;
! 
!                   if Res = LE
!                     and then Constant_Condition_Warnings
!                     and then Comes_From_Source (Original_Node (N))
!                     and then Nkind (Original_Node (N)) = N_Op_Ge
!                     and then not In_Instance
!                     and then Is_Integer_Type (Etype (Left_Opnd (N)))
!                     and then not Has_Warnings_Off (Etype (Left_Opnd (N)))
!                   then
!                      Error_Msg_N
!                        ("can never be greater than, could replace by "
!                         & """'=""?c?", N);
!                      Warning_Generated := True;
!                   end if;
! 
!                when N_Op_Gt =>
!                   True_Result  := Res = GT;
!                   False_Result := Res in Compare_LE;
! 
!                when N_Op_Lt =>
!                   True_Result  := Res = LT;
!                   False_Result := Res in Compare_GE;
! 
!                when N_Op_Le =>
!                   True_Result  := Res in Compare_LE;
!                   False_Result := Res = GT;
! 
!                   if Res = GE
!                     and then Constant_Condition_Warnings
!                     and then Comes_From_Source (Original_Node (N))
!                     and then Nkind (Original_Node (N)) = N_Op_Le
!                     and then not In_Instance
!                     and then Is_Integer_Type (Etype (Left_Opnd (N)))
!                     and then not Has_Warnings_Off (Etype (Left_Opnd (N)))
!                   then
!                      Error_Msg_N
!                        ("can never be less than, could replace by ""'=""?c?",
!                         N);
!                      Warning_Generated := True;
!                   end if;
! 
!                when N_Op_Ne =>
!                   True_Result  := Res = NE or else Res = GT or else Res = LT;
!                   False_Result := Res = EQ;
!             end case;
  
!             --  If this is the first iteration, then we actually convert the
!             --  comparison into True or False, if the result is certain.
  
!             if AV = False then
!                if True_Result or False_Result then
!                   Result := Boolean_Literals (True_Result);
!                   Rewrite (N,
!                     Convert_To (Typ,
!                       New_Occurrence_Of (Result, Sloc (N))));
!                   Analyze_And_Resolve (N, Typ);
!                   Warn_On_Known_Condition (N);
!                   return;
!                end if;
  
!             --  If this is the second iteration (AV = True), and the original
!             --  node comes from source and we are not in an instance, then give
!             --  a warning if we know result would be True or False. Note: we
!             --  know Constant_Condition_Warnings is set if we get here.
  
!             elsif Comes_From_Source (Original_Node (N))
!               and then not In_Instance
!             then
!                if True_Result then
!                   Error_Msg_N
!                     ("condition can only be False if invalid values present??",
!                      N);
!                elsif False_Result then
!                   Error_Msg_N
!                     ("condition can only be True if invalid values present??",
!                      N);
!                end if;
!             end if;
!          end;
  
!          --  Skip second iteration if not warning on constant conditions or
!          --  if the first iteration already generated a warning of some kind or
!          --  if we are in any case assuming all values are valid (so that the
!          --  first iteration took care of the valid case).
  
!          exit when not Constant_Condition_Warnings;
!          exit when Warning_Generated;
!          exit when Assume_No_Invalid_Values;
!       end loop;
     end Rewrite_Comparison;
  
     ----------------------------
--- 13711,13741 ----
           return;
        end if;
  
!       --  Determine the potential outcome of the comparison assuming that the
!       --  operands are valid and emit a warning when the comparison evaluates
!       --  to True or False only in the presence of invalid values.
  
!       Warn_On_Constant_Valid_Condition (N);
  
!       --  Determine the potential outcome of the comparison assuming that the
!       --  operands are not valid.
  
!       Test_Comparison
!         (Op           => N,
!          Assume_Valid => False,
!          True_Result  => True_Result,
!          False_Result => False_Result);
  
!       --  The outcome is a decisive False or True, rewrite the operator
  
!       if False_Result or True_Result then
!          Rewrite (N,
!            Convert_To (Typ,
!              New_Occurrence_Of (Boolean_Literals (True_Result), Sloc (N))));
  
!          Analyze_And_Resolve (N, Typ);
!          Warn_On_Known_Condition (N);
!       end if;
     end Rewrite_Comparison;
  
     ----------------------------
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_ch4.ads gcc-8.1.0/gcc/ada/exp_ch4.ads
*** gcc-7.3.0/gcc/ada/exp_ch4.ads	Wed Jul 16 14:00:46 2014
--- gcc-8.1.0/gcc/ada/exp_ch4.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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
*** 68,73 ****
--- 68,74 ----
     procedure Expand_N_Or_Else                     (N : Node_Id);
     procedure Expand_N_Qualified_Expression        (N : Node_Id);
     procedure Expand_N_Quantified_Expression       (N : Node_Id);
+    procedure Expand_N_Reduction_Expression        (N : Node_Id);
     procedure Expand_N_Selected_Component          (N : Node_Id);
     procedure Expand_N_Slice                       (N : Node_Id);
     procedure Expand_N_Type_Conversion             (N : Node_Id);
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_ch5.adb gcc-8.1.0/gcc/ada/exp_ch5.adb
*** gcc-7.3.0/gcc/ada/exp_ch5.adb	Mon Jan 23 11:54:05 2017
--- gcc-8.1.0/gcc/ada/exp_ch5.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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_Ch5 is
*** 74,79 ****
--- 74,86 ----
     --  Utility to create declarations and loop statement for both forms
     --  of formal container iterators.
  
+    function Convert_To_Iterable_Type
+      (Container : Entity_Id;
+       Loc       : Source_Ptr) return Node_Id;
+    --  Returns New_Occurrence_Of (Container), possibly converted to an ancestor
+    --  type, if the type of Container inherited the Iterable aspect from that
+    --  ancestor.
+ 
     function Change_Of_Representation (N : Node_Id) return Boolean;
     --  Determine if the right-hand side of assignment N is a type conversion
     --  which requires a change of representation. Called only for the array
*************** package body Exp_Ch5 is
*** 168,184 ****
        Advance   : out Node_Id;
        New_Loop  : out Node_Id)
     is
!       Loc      : constant Source_Ptr := Sloc (N);
!       Stats    : constant List_Id    := Statements (N);
!       Typ      : constant Entity_Id  := Base_Type (Etype (Container));
!       First_Op : constant Entity_Id  :=
!                    Get_Iterable_Type_Primitive (Typ, Name_First);
!       Next_Op  : constant Entity_Id  :=
!                    Get_Iterable_Type_Primitive (Typ, Name_Next);
  
        Has_Element_Op : constant Entity_Id :=
!                    Get_Iterable_Type_Primitive (Typ, Name_Has_Element);
     begin
        --  Declaration for Cursor
  
        Init :=
--- 175,204 ----
        Advance   : out Node_Id;
        New_Loop  : out Node_Id)
     is
!       Loc   : constant Source_Ptr := Sloc (N);
!       Stats : constant List_Id    := Statements (N);
!       Typ   : constant Entity_Id  := Base_Type (Etype (Container));
  
        Has_Element_Op : constant Entity_Id :=
!                          Get_Iterable_Type_Primitive (Typ, Name_Has_Element);
! 
!       First_Op : Entity_Id;
!       Next_Op  : Entity_Id;
! 
     begin
+       --  Use the proper set of primitives depending on the direction of
+       --  iteration. The legality of a reverse iteration has been checked
+       --  during analysis.
+ 
+       if Reverse_Present (Iterator_Specification (Iteration_Scheme (N))) then
+          First_Op := Get_Iterable_Type_Primitive (Typ, Name_Last);
+          Next_Op  := Get_Iterable_Type_Primitive (Typ, Name_Previous);
+ 
+       else
+          First_Op := Get_Iterable_Type_Primitive (Typ, Name_First);
+          Next_Op  := Get_Iterable_Type_Primitive (Typ, Name_Next);
+       end if;
+ 
        --  Declaration for Cursor
  
        Init :=
*************** package body Exp_Ch5 is
*** 189,197 ****
              Make_Function_Call (Loc,
                Name                   => New_Occurrence_Of (First_Op, Loc),
                Parameter_Associations => New_List (
!                 New_Occurrence_Of (Container, Loc))));
  
!       --  Statement that advances cursor in loop
  
        Advance :=
          Make_Assignment_Statement (Loc,
--- 209,217 ----
              Make_Function_Call (Loc,
                Name                   => New_Occurrence_Of (First_Op, Loc),
                Parameter_Associations => New_List (
!                 Convert_To_Iterable_Type (Container, Loc))));
  
!       --  Statement that advances (in the right direction) cursor in loop
  
        Advance :=
          Make_Assignment_Statement (Loc,
*************** package body Exp_Ch5 is
*** 200,206 ****
              Make_Function_Call (Loc,
                Name                   => New_Occurrence_Of (Next_Op, Loc),
                Parameter_Associations => New_List (
!                 New_Occurrence_Of (Container, Loc),
                  New_Occurrence_Of (Cursor, Loc))));
  
        --  Iterator is rewritten as a while_loop
--- 220,226 ----
              Make_Function_Call (Loc,
                Name                   => New_Occurrence_Of (Next_Op, Loc),
                Parameter_Associations => New_List (
!                 Convert_To_Iterable_Type (Container, Loc),
                  New_Occurrence_Of (Cursor, Loc))));
  
        --  Iterator is rewritten as a while_loop
*************** package body Exp_Ch5 is
*** 213,222 ****
                  Make_Function_Call (Loc,
                    Name => New_Occurrence_Of (Has_Element_Op, Loc),
                    Parameter_Associations => New_List (
!                     New_Occurrence_Of (Container, Loc),
                      New_Occurrence_Of (Cursor, Loc)))),
!           Statements       => Stats,
!           End_Label        => Empty);
     end Build_Formal_Container_Iteration;
  
     ------------------------------
--- 233,242 ----
                  Make_Function_Call (Loc,
                    Name => New_Occurrence_Of (Has_Element_Op, Loc),
                    Parameter_Associations => New_List (
!                     Convert_To_Iterable_Type (Container, Loc),
                      New_Occurrence_Of (Cursor, Loc)))),
!           Statements => Stats,
!           End_Label  => Empty);
     end Build_Formal_Container_Iteration;
  
     ------------------------------
*************** package body Exp_Ch5 is
*** 232,237 ****
--- 252,282 ----
              not Same_Representation (Etype (Rhs), Etype (Expression (Rhs)));
     end Change_Of_Representation;
  
+    ------------------------------
+    -- Convert_To_Iterable_Type --
+    ------------------------------
+ 
+    function Convert_To_Iterable_Type
+      (Container : Entity_Id;
+       Loc       : Source_Ptr) return Node_Id
+    is
+       Typ    : constant Entity_Id := Base_Type (Etype (Container));
+       Aspect : constant Node_Id   := Find_Aspect (Typ, Aspect_Iterable);
+       Result : Node_Id;
+ 
+    begin
+       Result := New_Occurrence_Of (Container, Loc);
+ 
+       if Entity (Aspect) /= Typ then
+          Result :=
+            Make_Type_Conversion (Loc,
+              Subtype_Mark => New_Occurrence_Of (Entity (Aspect), Loc),
+              Expression   => Result);
+       end if;
+ 
+       return Result;
+    end Convert_To_Iterable_Type;
+ 
     -------------------------
     -- Expand_Assign_Array --
     -------------------------
*************** package body Exp_Ch5 is
*** 1448,1456 ****
--- 1493,1512 ----
              U_U : Boolean := False) return Node_Id
           is
              A    : Node_Id;
+             Disc : Entity_Id;
              Expr : Node_Id;
  
           begin
+             --  The discriminant entity to be used in the retrieval below must
+             --  be one in the corresponding type, given that the assignment may
+             --  be between derived and parent types.
+ 
+             if Is_Derived_Type (Etype (Rhs)) then
+                Disc := Find_Component (R_Typ, C);
+             else
+                Disc := C;
+             end if;
+ 
              --  In the case of an Unchecked_Union, use the discriminant
              --  constraint value as on the right-hand side of the assignment.
  
*************** package body Exp_Ch5 is
*** 1463,1469 ****
                 Expr :=
                   Make_Selected_Component (Loc,
                     Prefix        => Duplicate_Subexpr (Rhs),
!                    Selector_Name => New_Occurrence_Of (C, Loc));
              end if;
  
              A :=
--- 1519,1525 ----
                 Expr :=
                   Make_Selected_Component (Loc,
                     Prefix        => Duplicate_Subexpr (Rhs),
!                    Selector_Name => New_Occurrence_Of (Disc, Loc));
              end if;
  
              A :=
*************** package body Exp_Ch5 is
*** 1534,1540 ****
           --  suppressed in this case). It is unnecessary but harmless in
           --  other cases.
  
!          if Has_Discriminants (L_Typ) then
              F := First_Discriminant (R_Typ);
              while Present (F) loop
  
--- 1590,1603 ----
           --  suppressed in this case). It is unnecessary but harmless in
           --  other cases.
  
!          --  Special case: no copy if the target has no discriminants
! 
!          if Has_Discriminants (L_Typ)
!            and then Is_Unchecked_Union (Base_Type (L_Typ))
!          then
!             null;
! 
!          elsif Has_Discriminants (L_Typ) then
              F := First_Discriminant (R_Typ);
              while Present (F) loop
  
*************** package body Exp_Ch5 is
*** 1578,1583 ****
--- 1641,1689 ----
                    Next_Discriminant (F);
                 end;
              end loop;
+ 
+             --  If the derived type has a stored constraint, assign the value
+             --  of the corresponding discriminants explicitly, skipping those
+             --  that are renamed discriminants. We cannot just retrieve them
+             --  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;
+ 
+                begin
+                   Discr_Val := First_Elmt (Stored_Constraint (R_Typ));
+                   F := First_Entity (R_Typ);
+                   while Present (F) loop
+                      if Ekind (F) = E_Discriminant
+                        and then Is_Completely_Hidden (F)
+                        and then Present (Corresponding_Record_Component (F))
+                        and then
+                          (not Is_Entity_Name (Node (Discr_Val))
+                            or else Ekind (Entity (Node (Discr_Val))) /=
+                                      E_Discriminant)
+                      then
+                         Assign :=
+                           Make_Assignment_Statement (Loc,
+                             Name       =>
+                               Make_Selected_Component (Loc,
+                                 Prefix        => Duplicate_Subexpr (Lhs),
+                                 Selector_Name =>
+                                   New_Occurrence_Of
+                                     (Corresponding_Record_Component (F), Loc)),
+                             Expression => New_Copy (Node (Discr_Val)));
+ 
+                         Set_Assignment_OK (Name (Assign));
+                         Insert_Action (N, Assign);
+                         Next_Elmt (Discr_Val);
+                      end if;
+ 
+                      Next_Entity (F);
+                   end loop;
+                end;
+             end if;
           end if;
  
           --  We know the underlying type is a record, but its current view
*************** package body Exp_Ch5 is
*** 1638,1643 ****
--- 1744,1763 ----
        begin
           if Nkind (N) = N_Target_Name then
              Rewrite (N, New_Occurrence_Of (Ent, Sloc (N)));
+ 
+          --  The expression will be reanalyzed when the enclosing assignment
+          --  is reanalyzed, so reset the entity, which may be a temporary
+          --  created during analysis, e.g. a loop variable for an iterated
+          --  component association. However, if entity is callable then
+          --  resolution has established its proper identity (including in
+          --  rewritten prefixed calls) so we must preserve it.
+ 
+          elsif Is_Entity_Name (N) then
+             if Present (Entity (N))
+               and then not Is_Overloadable (Entity (N))
+             then
+                Set_Entity (N, Empty);
+             end if;
           end if;
  
           Set_Analyzed (N, False);
*************** package body Exp_Ch5 is
*** 2283,2295 ****
              end;
           end if;
  
!       --  Build-in-place function call case. Note that we're not yet doing
!       --  build-in-place for user-written assignment statements (the assignment
!       --  here came from an aggregate.)
  
!       elsif Ada_Version >= Ada_2005
!         and then Is_Build_In_Place_Function_Call (Rhs)
!       then
           Make_Build_In_Place_Call_In_Assignment (N, Rhs);
  
        elsif Is_Tagged_Type (Typ)
--- 2403,2415 ----
              end;
           end if;
  
!       --  Build-in-place function call case. This is for assignment statements
!       --  that come from aggregate component associations or from init procs.
!       --  User-written assignment statements with b-i-p calls are handled
!       --  elsewhere.
  
!       elsif Is_Build_In_Place_Function_Call (Rhs) then
!          pragma Assert (not Comes_From_Source (N));
           Make_Build_In_Place_Call_In_Assignment (N, Rhs);
  
        elsif Is_Tagged_Type (Typ)
*************** package body Exp_Ch5 is
*** 3013,3027 ****
        Container : constant Node_Id    := Entity (Name (I_Spec));
        Stats     : constant List_Id    := Statements (N);
  
!       Advance  : Node_Id;
!       Blk_Nod  : Node_Id;
!       Init     : Node_Id;
!       New_Loop : Node_Id;
  
     begin
!       --  The expansion resembles the one for Ada containers, but the
!       --  primitives mention the domain of iteration explicitly, and
!       --  function First applied to the container yields a cursor directly.
  
        --    Cursor : Cursor_type := First (Container);
        --    while Has_Element (Cursor, Container) loop
--- 3133,3148 ----
        Container : constant Node_Id    := Entity (Name (I_Spec));
        Stats     : constant List_Id    := Statements (N);
  
!       Advance   : Node_Id;
!       Init_Decl : Node_Id;
!       Init_Name : Entity_Id;
!       New_Loop  : Node_Id;
  
     begin
!       --  The expansion of a formal container loop resembles the one for Ada
!       --  containers. The only difference is that the primitives mention the
!       --  domain of iteration explicitly, and function First applied to the
!       --  container yields a cursor directly.
  
        --    Cursor : Cursor_type := First (Container);
        --    while Has_Element (Cursor, Container) loop
*************** package body Exp_Ch5 is
*** 3030,3051 ****
        --    end loop;
  
        Build_Formal_Container_Iteration
!         (N, Container, Cursor, Init, Advance, New_Loop);
  
-       Set_Ekind (Cursor, E_Variable);
        Append_To (Stats, Advance);
  
!       --  Build block to capture declaration of cursor entity.
  
!       Blk_Nod :=
          Make_Block_Statement (Loc,
!           Declarations               => New_List (Init),
            Handled_Statement_Sequence =>
              Make_Handled_Sequence_Of_Statements (Loc,
!               Statements => New_List (New_Loop)));
  
!       Rewrite (N, Blk_Nod);
        Analyze (N);
     end Expand_Formal_Container_Loop;
  
     ------------------------------------------
--- 3151,3194 ----
        --    end loop;
  
        Build_Formal_Container_Iteration
!         (N, Container, Cursor, Init_Decl, Advance, New_Loop);
  
        Append_To (Stats, Advance);
  
!       --  Build a block to capture declaration of the cursor
  
!       Rewrite (N,
          Make_Block_Statement (Loc,
!           Declarations               => New_List (Init_Decl),
            Handled_Statement_Sequence =>
              Make_Handled_Sequence_Of_Statements (Loc,
!               Statements => New_List (New_Loop))));
  
!       --  The loop parameter is declared by an object declaration, but within
!       --  the loop we must prevent user assignments to it, so we analyze the
!       --  declaration and reset the entity kind, before analyzing the rest of
!       --  the loop.
! 
!       Analyze (Init_Decl);
!       Init_Name := Defining_Identifier (Init_Decl);
!       Set_Ekind (Init_Name, E_Loop_Parameter);
! 
!       --  The cursor was marked as a loop parameter to prevent user assignments
!       --  to it, however this renders the advancement step illegal as it is not
!       --  possible to change the value of a constant. Flag the advancement step
!       --  as a legal form of assignment to remedy this side effect.
! 
!       Set_Assignment_OK (Name (Advance));
        Analyze (N);
+ 
+       --  Because we have to analyze the initial declaration of the loop
+       --  parameter multiple times its scope is incorrectly set at this point
+       --  to the one surrounding the block statement - so set the scope
+       --  manually to be the actual block statement, and indicate that it is
+       --  not visible after the block has been analyzed.
+ 
+       Set_Scope (Init_Name, Entity (Identifier (N)));
+       Set_Is_Immediately_Visible (Init_Name, False);
     end Expand_Formal_Container_Loop;
  
     ------------------------------------------
*************** package body Exp_Ch5 is
*** 3119,3125 ****
             Make_Function_Call (Loc,
               Name                   => New_Occurrence_Of (Element_Op, Loc),
               Parameter_Associations => New_List (
!                New_Occurrence_Of (Container, Loc),
                 New_Occurrence_Of (Cursor, Loc))));
  
           Set_Statements (New_Loop,
--- 3262,3268 ----
             Make_Function_Call (Loc,
               Name                   => New_Occurrence_Of (Element_Op, Loc),
               Parameter_Associations => New_List (
!                Convert_To_Iterable_Type (Container, Loc),
                 New_Occurrence_Of (Cursor, Loc))));
  
           Set_Statements (New_Loop,
*************** package body Exp_Ch5 is
*** 3138,3144 ****
                 Make_Function_Call (Loc,
                   Name                   => New_Occurrence_Of (Element_Op, Loc),
                   Parameter_Associations => New_List (
!                    New_Occurrence_Of (Container, Loc),
                     New_Occurrence_Of (Cursor, Loc))));
  
           Prepend (Elmt_Ref, Stats);
--- 3281,3287 ----
                 Make_Function_Call (Loc,
                   Name                   => New_Occurrence_Of (Element_Op, Loc),
                   Parameter_Associations => New_List (
!                    Convert_To_Iterable_Type (Container, Loc),
                     New_Occurrence_Of (Cursor, Loc))));
  
           Prepend (Elmt_Ref, Stats);
*************** package body Exp_Ch5 is
*** 3168,3174 ****
        --  The loop parameter is declared by an object declaration, but within
        --  the loop we must prevent user assignments to it, so we analyze the
        --  declaration and reset the entity kind, before analyzing the rest of
!       --  the loop;
  
        Analyze (Elmt_Decl);
        Set_Ekind (Defining_Identifier (Elmt_Decl), E_Loop_Parameter);
--- 3311,3317 ----
        --  The loop parameter is declared by an object declaration, but within
        --  the loop we must prevent user assignments to it, so we analyze the
        --  declaration and reset the entity kind, before analyzing the rest of
!       --  the loop.
  
        Analyze (Elmt_Decl);
        Set_Ekind (Defining_Identifier (Elmt_Decl), E_Loop_Parameter);
*************** package body Exp_Ch5 is
*** 3530,3536 ****
        Array_Typ  : constant Entity_Id  := Base_Type (Etype (Array_Node));
        Array_Dim  : constant Pos        := Number_Dimensions (Array_Typ);
        Id         : constant Entity_Id  := Defining_Identifier (I_Spec);
!       Loc        : constant Source_Ptr := Sloc (N);
        Stats      : constant List_Id    := Statements (N);
        Core_Loop  : Node_Id;
        Dim1       : Int;
--- 3673,3679 ----
        Array_Typ  : constant Entity_Id  := Base_Type (Etype (Array_Node));
        Array_Dim  : constant Pos        := Number_Dimensions (Array_Typ);
        Id         : constant Entity_Id  := Defining_Identifier (I_Spec);
!       Loc        : constant Source_Ptr := Sloc (Isc);
        Stats      : constant List_Id    := Statements (N);
        Core_Loop  : Node_Id;
        Dim1       : Int;
*************** package body Exp_Ch5 is
*** 3591,3597 ****
        end if;
  
        Core_Loop :=
!         Make_Loop_Statement (Loc,
            Iteration_Scheme =>
              Make_Iteration_Scheme (Loc,
                Loop_Parameter_Specification =>
--- 3734,3740 ----
        end if;
  
        Core_Loop :=
!         Make_Loop_Statement (Sloc (N),
            Iteration_Scheme =>
              Make_Iteration_Scheme (Loc,
                Loop_Parameter_Specification =>
*************** package body Exp_Ch5 is
*** 3628,3634 ****
              --    end loop;
  
              Core_Loop :=
!               Make_Loop_Statement (Loc,
                  Iteration_Scheme =>
                    Make_Iteration_Scheme (Loc,
                      Loop_Parameter_Specification =>
--- 3771,3777 ----
              --    end loop;
  
              Core_Loop :=
!               Make_Loop_Statement (Sloc (N),
                  Iteration_Scheme =>
                    Make_Iteration_Scheme (Loc,
                      Loop_Parameter_Specification =>
*************** package body Exp_Ch5 is
*** 3866,3874 ****
  
              function Get_Default_Iterator
                (T : Entity_Id) return Entity_Id;
!             --  If the container is a derived type, the aspect holds the parent
!             --  operation. The required one is a primitive of the derived type
!             --  and is either inherited or overridden. Also sets Container_Arg.
  
              --------------------------
              -- Get_Default_Iterator --
--- 4009,4017 ----
  
              function Get_Default_Iterator
                (T : Entity_Id) return Entity_Id;
!             --  Return the default iterator for a specific type. If the type is
!             --  derived, we return the inherited or overridden one if
!             --  appropriate.
  
              --------------------------
              -- Get_Default_Iterator --
*************** package body Exp_Ch5 is
*** 3885,3895 ****
              begin
                 Container_Arg := New_Copy_Tree (Container);
  
!                --  A previous version of GNAT allowed indexing aspects to
!                --  be redefined on derived container types, while the
!                --  default iterator was inherited from the parent type.
!                --  This non-standard extension is preserved temporarily for
!                --  use by the modelling project under debug flag d.X.
  
                 if Debug_Flag_Dot_XX then
                    if Base_Type (Etype (Container)) /=
--- 4028,4038 ----
              begin
                 Container_Arg := New_Copy_Tree (Container);
  
!                --  A previous version of GNAT allowed indexing aspects to be
!                --  redefined on derived container types, while the default
!                --  iterator was inherited from the parent type. This
!                --  nonstandard extension is preserved for use by the
!                --  modeling project under debug flag -gnatd.X.
  
                 if Debug_Flag_Dot_XX then
                    if Base_Type (Etype (Container)) /=
*************** package body Exp_Ch5 is
*** 3927,3935 ****
                       Next_Elmt (Prim);
                    end loop;
  
!                   --  Default iterator must exist
  
!                   pragma Assert (False);
  
                 --  Otherwise not a derived type
  
--- 4070,4080 ----
                       Next_Elmt (Prim);
                    end loop;
  
!                   --  If we didn't find it, then our parent type is not
!                   --  iterable, so we return the Default_Iterator aspect of
!                   --  this type.
  
!                   return Iter;
  
                 --  Otherwise not a derived type
  
*************** package body Exp_Ch5 is
*** 4614,4619 ****
--- 4759,4768 ----
        --        end loop;
        --     end;
  
+       --  In addition, if the loop specification is given by a subtype
+       --  indication that constrains a predicated type, the bounds of
+       --  iteration are given by those of the subtype indication.
+ 
        else
           Static_Predicate : declare
              S    : Node_Id;
*************** package body Exp_Ch5 is
*** 4622,4627 ****
--- 4771,4781 ----
              Alts : List_Id;
              Cstm : Node_Id;
  
+             --  If the domain is an itype, note the bounds of its range.
+ 
+             L_Hi  : Node_Id := Empty;
+             L_Lo  : Node_Id := Empty;
+ 
              function Lo_Val (N : Node_Id) return Node_Id;
              --  Given static expression or static range, returns an identifier
              --  whose value is the low bound of the expression value or range.
*************** package body Exp_Ch5 is
*** 4676,4681 ****
--- 4830,4840 ----
  
              Set_Warnings_Off (Loop_Id);
  
+             if Is_Itype (Ltype) then
+                L_Hi := High_Bound (Scalar_Range (Ltype));
+                L_Lo := Low_Bound  (Scalar_Range (Ltype));
+             end if;
+ 
              --  Loop to create branches of case statement
  
              Alts := New_List;
*************** package body Exp_Ch5 is
*** 4684,4694 ****
  
                 --  Initial value is largest value in predicate.
  
!                D :=
!                  Make_Object_Declaration (Loc,
!                    Defining_Identifier => Loop_Id,
!                    Object_Definition   => New_Occurrence_Of (Ltype, Loc),
!                    Expression          => Hi_Val (Last (Stat)));
  
                 P := Last (Stat);
                 while Present (P) loop
--- 4843,4862 ----
  
                 --  Initial value is largest value in predicate.
  
!                if Is_Itype (Ltype) then
!                   D :=
!                     Make_Object_Declaration (Loc,
!                       Defining_Identifier => Loop_Id,
!                       Object_Definition   => New_Occurrence_Of (Ltype, Loc),
!                       Expression          => L_Hi);
! 
!                else
!                   D :=
!                     Make_Object_Declaration (Loc,
!                       Defining_Identifier => Loop_Id,
!                       Object_Definition   => New_Occurrence_Of (Ltype, Loc),
!                       Expression          => Hi_Val (Last (Stat)));
!                end if;
  
                 P := Last (Stat);
                 while Present (P) loop
*************** package body Exp_Ch5 is
*** 4710,4724 ****
                    Prev (P);
                 end loop;
  
!             else
  
!                --  Initial value is smallest value in predicate.
  
!                D :=
!                  Make_Object_Declaration (Loc,
!                    Defining_Identifier => Loop_Id,
!                    Object_Definition   => New_Occurrence_Of (Ltype, Loc),
!                    Expression          => Lo_Val (First (Stat)));
  
                 P := First (Stat);
                 while Present (P) loop
--- 4878,4910 ----
                    Prev (P);
                 end loop;
  
!                if Is_Itype (Ltype)
!                  and then Is_OK_Static_Expression (L_Lo)
!                  and then
!                    Expr_Value (L_Lo) /= Expr_Value (Lo_Val (First (Stat)))
!                then
!                   Append_To (Alts,
!                     Make_Case_Statement_Alternative (Loc,
!                       Statements       => New_List (Make_Exit_Statement (Loc)),
!                       Discrete_Choices => New_List (L_Lo)));
!                end if;
  
!             else
!                --  Initial value is smallest value in predicate
  
!                if Is_Itype (Ltype) then
!                   D :=
!                     Make_Object_Declaration (Loc,
!                       Defining_Identifier => Loop_Id,
!                       Object_Definition   => New_Occurrence_Of (Ltype, Loc),
!                       Expression          => L_Lo);
!                else
!                   D :=
!                     Make_Object_Declaration (Loc,
!                       Defining_Identifier => Loop_Id,
!                       Object_Definition   => New_Occurrence_Of (Ltype, Loc),
!                       Expression          => Lo_Val (First (Stat)));
!                end if;
  
                 P := First (Stat);
                 while Present (P) loop
*************** package body Exp_Ch5 is
*** 4739,4744 ****
--- 4925,4941 ----
  
                    Next (P);
                 end loop;
+ 
+                if Is_Itype (Ltype)
+                  and then Is_OK_Static_Expression (L_Hi)
+                  and then
+                    Expr_Value (L_Hi) /= Expr_Value (Lo_Val (Last (Stat)))
+                then
+                   Append_To (Alts,
+                     Make_Case_Statement_Alternative (Loc,
+                       Statements       => New_List (Make_Exit_Statement (Loc)),
+                       Discrete_Choices => New_List (L_Hi)));
+                end if;
              end if;
  
              --  Add others choice
*************** package body Exp_Ch5 is
*** 4754,4767 ****
                 end if;
  
                 S :=
!                   Make_Assignment_Statement (Loc,
!                     Name       => New_Occurrence_Of (Loop_Id, Loc),
!                     Expression =>
!                       Make_Attribute_Reference (Loc,
!                         Prefix => New_Occurrence_Of (Ltype, Loc),
!                         Attribute_Name => Name_Next,
!                         Expressions    => New_List (
!                           New_Occurrence_Of (Loop_Id, Loc))));
                 Set_Suppress_Assignment_Checks (S);
              end;
  
--- 4951,4964 ----
                 end if;
  
                 S :=
!                  Make_Assignment_Statement (Loc,
!                    Name       => New_Occurrence_Of (Loop_Id, Loc),
!                    Expression =>
!                      Make_Attribute_Reference (Loc,
!                        Prefix         => New_Occurrence_Of (Ltype, Loc),
!                        Attribute_Name => Name_Next,
!                        Expressions    => New_List (
!                          New_Occurrence_Of (Loop_Id, Loc))));
                 Set_Suppress_Assignment_Checks (S);
              end;
  
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_ch5.ads gcc-8.1.0/gcc/ada/exp_ch5.ads
*** gcc-7.3.0/gcc/ada/exp_ch5.ads	Tue Oct 20 12:02:30 2015
--- gcc-8.1.0/gcc/ada/exp_ch5.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_ch6.adb gcc-8.1.0/gcc/ada/exp_ch6.adb
*** gcc-7.3.0/gcc/ada/exp_ch6.adb	Mon Jan 23 13:24:47 2017
--- gcc-8.1.0/gcc/ada/exp_ch6.adb	Thu Jan 11 08:56:12 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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,35 ****
--- 24,37 ----
  ------------------------------------------------------------------------------
  
  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 Errout;    use Errout;
  with Elists;    use Elists;
+ with Expander;  use Expander;
  with Exp_Aggr;  use Exp_Aggr;
  with Exp_Atag;  use Exp_Atag;
  with Exp_Ch2;   use Exp_Ch2;
*************** with Exp_Tss;   use Exp_Tss;
*** 45,50 ****
--- 47,53 ----
  with Exp_Util;  use Exp_Util;
  with Freeze;    use Freeze;
  with Inline;    use Inline;
+ with Itypes;    use Itypes;
  with Lib;       use Lib;
  with Namet;     use Namet;
  with Nlists;    use Nlists;
*************** with Sem_Util;  use Sem_Util;
*** 70,76 ****
  with Sinfo;     use Sinfo;
  with Snames;    use Snames;
  with Stand;     use Stand;
- with Targparm;  use Targparm;
  with Tbuild;    use Tbuild;
  with Uintp;     use Uintp;
  with Validsw;   use Validsw;
--- 73,78 ----
*************** package body Exp_Ch6 is
*** 136,141 ****
--- 138,152 ----
     --  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
+    --  always use the secondary stack for dispatching-on-result calls.
+ 
     procedure Check_Overriding_Operation (Subp : Entity_Id);
     --  Subp is a dispatching operation. Check whether it may override an
     --  inherited private operation, in which case its DT entry is that of
*************** package body Exp_Ch6 is
*** 158,167 ****
     --  the values are not changed for the call, we know immediately that
     --  we have an infinite recursion.
  
!    procedure Expand_Actuals (N : in out Node_Id; Subp : Entity_Id);
!    --  For each actual of an in-out or out parameter which is a numeric
!    --  (view) conversion of the form T (A), where A denotes a variable,
!    --  we insert the declaration:
     --
     --    Temp : T[ := T (A)];
     --
--- 169,185 ----
     --  the values are not changed for the call, we know immediately that
     --  we have an infinite recursion.
  
!    procedure Expand_Actuals
!      (N         : Node_Id;
!       Subp      : Entity_Id;
!       Post_Call : out List_Id);
!    --  Return a list of actions to take place after the call in Post_Call. The
!    --  call will later be rewritten as an Expression_With_Actions, with the
!    --  Post_Call actions inserted, and the call inside.
!    --
!    --  For each actual of an in-out or out parameter which is a numeric (view)
!    --  conversion of the form T (A), where A denotes a variable, we insert the
!    --  declaration:
     --
     --    Temp : T[ := T (A)];
     --
*************** package body Exp_Ch6 is
*** 190,200 ****
     --
     --  For OUT and IN OUT parameters, add predicate checks after the call
     --  based on the predicates of the actual type.
!    --
!    --  The parameter N is IN OUT because in some cases, the expansion code
!    --  rewrites the call as an expression actions with the call inside. In
!    --  this case N is reset to point to the inside call so that the caller
!    --  can continue processing of this call.
  
     procedure Expand_Ctrl_Function_Call (N : Node_Id);
     --  N is a function call which returns a controlled object. Transform the
--- 208,216 ----
     --
     --  For OUT and IN OUT parameters, add predicate checks after the call
     --  based on the predicates of the actual type.
! 
!    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
*************** package body Exp_Ch6 is
*** 228,233 ****
--- 244,266 ----
     --  Returns True if the given subtype is unconstrained and has one or more
     --  access discriminants.
  
+    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.
+ 
+    procedure Replace_Renaming_Declaration_Id
+       (New_Decl  : Node_Id;
+        Orig_Decl : Node_Id);
+    --  Replace the internal identifier of the new renaming declaration New_Decl
+    --  with the identifier of its original declaration Orig_Decl exchanging the
+    --  entities containing their defining identifiers to ensure the correct
+    --  replacement of the object declaration by the object renaming declaration
+    --  to avoid homograph conflicts (since the object declaration's defining
+    --  identifier was already entered in the current scope). The Next_Entity
+    --  links of the two entities are also swapped since the entities are part
+    --  of the return scope's entity list and the list structure would otherwise
+    --  be corrupted. The homonym chain is preserved as well.
+ 
     procedure Rewrite_Function_Call_For_C (N : Node_Id);
     --  When generating C code, replace a call to a function that returns an
     --  array into the generated procedure with an additional out parameter.
*************** package body Exp_Ch6 is
*** 400,411 ****
              Desig_Typ := Directly_Designated_Type (Ptr_Typ);
  
              --  Check for a library-level access type whose designated type has
!             --  supressed finalization. Such an access types lack a master.
!             --  Pass a null actual to the callee in order to signal a missing
!             --  master.
  
              if Is_Library_Level_Entity (Ptr_Typ)
!               and then Finalize_Storage_Only (Desig_Typ)
              then
                 Actual := Make_Null (Loc);
  
--- 433,445 ----
              Desig_Typ := Directly_Designated_Type (Ptr_Typ);
  
              --  Check for a library-level access type whose designated type has
!             --  suppressed finalization or the access type is subject to pragma
!             --  No_Heap_Finalization. Such an access type lacks a master. Pass
!             --  a null actual to callee in order to signal a missing master.
  
              if Is_Library_Level_Entity (Ptr_Typ)
!               and then (Finalize_Storage_Only (Desig_Typ)
!                          or else No_Heap_Finalization (Ptr_Typ))
              then
                 Actual := Make_Null (Loc);
  
*************** package body Exp_Ch6 is
*** 617,625 ****
       (Func : Entity_Id;
        Kind : BIP_Formal_Kind) return Entity_Id
     is
!       Formal_Name  : constant Name_Id :=
!                        New_External_Name
!                          (Chars (Func), BIP_Formal_Suffix (Kind));
        Extra_Formal : Entity_Id := Extra_Formals (Func);
  
     begin
--- 651,657 ----
       (Func : Entity_Id;
        Kind : BIP_Formal_Kind) return Entity_Id
     is
!       Formal_Suffix : constant String := BIP_Formal_Suffix (Kind);
        Extra_Formal : Entity_Id := Extra_Formals (Func);
  
     begin
*************** package body Exp_Ch6 is
*** 636,644 ****
           Extra_Formal := Extra_Formals (Func);
        end if;
  
        loop
           pragma Assert (Present (Extra_Formal));
!          exit when Chars (Extra_Formal) = Formal_Name;
  
           Next_Formal_With_Extras (Extra_Formal);
        end loop;
--- 668,688 ----
           Extra_Formal := Extra_Formals (Func);
        end if;
  
+       --  We search for a formal with a matching suffix. We can't search
+       --  for the full name, because of the code at the end of Sem_Ch6.-
+       --  Create_Extra_Formals, which copies the Extra_Formals over to
+       --  the Alias of an instance, which will cause the formals to have
+       --  "incorrect" names.
+ 
        loop
           pragma Assert (Present (Extra_Formal));
!          declare
!             Name : constant String := Get_Name_String (Chars (Extra_Formal));
!          begin
!             exit when Name'Length >= Formal_Suffix'Length
!               and then Formal_Suffix =
!                 Name (Name'Last - Formal_Suffix'Length + 1 .. Name'Last);
!          end;
  
           Next_Formal_With_Extras (Extra_Formal);
        end loop;
*************** package body Exp_Ch6 is
*** 679,685 ****
           Stmt := First (Stmts);
           while Present (Stmt) loop
              if Nkind (Stmt) = N_Block_Statement then
!                Replace_Returns (Param_Id, Statements (Stmt));
  
              elsif Nkind (Stmt) = N_Case_Statement then
                 declare
--- 723,730 ----
           Stmt := First (Stmts);
           while Present (Stmt) loop
              if Nkind (Stmt) = N_Block_Statement then
!                Replace_Returns (Param_Id,
!                  Statements (Handled_Statement_Sequence (Stmt)));
  
              elsif Nkind (Stmt) = N_Case_Statement then
                 declare
*************** package body Exp_Ch6 is
*** 814,819 ****
--- 859,879 ----
        return New_Body;
     end Build_Procedure_Body_Form;
  
+    -----------------------
+    -- Caller_Known_Size --
+    -----------------------
+ 
+    function Caller_Known_Size
+      (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;
+ 
     --------------------------------
     -- Check_Overriding_Operation --
     --------------------------------
*************** package body Exp_Ch6 is
*** 1146,1157 ****
     -- Expand_Actuals --
     --------------------
  
!    procedure Expand_Actuals (N : in out Node_Id; Subp : Entity_Id) is
        Loc       : constant Source_Ptr := Sloc (N);
        Actual    : Node_Id;
        Formal    : Entity_Id;
        N_Node    : Node_Id;
-       Post_Call : List_Id;
        E_Actual  : Entity_Id;
        E_Formal  : Entity_Id;
  
--- 1206,1220 ----
     -- Expand_Actuals --
     --------------------
  
!    procedure Expand_Actuals
!      (N         : Node_Id;
!       Subp      : Entity_Id;
!       Post_Call : out List_Id)
!    is
        Loc       : constant Source_Ptr := Sloc (N);
        Actual    : Node_Id;
        Formal    : Entity_Id;
        N_Node    : Node_Id;
        E_Actual  : Entity_Id;
        E_Formal  : Entity_Id;
  
*************** package body Exp_Ch6 is
*** 1168,1173 ****
--- 1231,1240 ----
        --  that all that is needed is to simply create a temporary and copy
        --  the value in and out of the temporary.
  
+       procedure Add_Validation_Call_By_Copy_Code (Act : Node_Id);
+       --  Perform copy-back for actual parameter Act which denotes a validation
+       --  variable.
+ 
        procedure Check_Fortran_Logical;
        --  A value of type Logical that is passed through a formal parameter
        --  must be normalized because .TRUE. usually does not have the same
*************** package body Exp_Ch6 is
*** 1606,1611 ****
--- 1673,1745 ----
           end if;
        end Add_Simple_Call_By_Copy_Code;
  
+       --------------------------------------
+       -- Add_Validation_Call_By_Copy_Code --
+       --------------------------------------
+ 
+       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
+          --  Copy the value of the validation variable back into the object
+          --  being validated.
+ 
+          if Is_Entity_Name (Var) then
+             Var_Id  := Entity (Var);
+             Obj     := Validated_Object (Var_Id);
+             Obj_Typ := Etype (Obj);
+ 
+             Expr := New_Occurrence_Of (Var_Id, Loc);
+ 
+             --  A type conversion is needed when the validation variable and
+             --  the validated object carry different types. This case occurs
+             --  when the actual is qualified in some fashion.
+ 
+             --    Common:
+             --      subtype Int is Integer range ...;
+             --      procedure Call (Val : in out Integer);
+ 
+             --    Original:
+             --      Object : Int;
+             --      Call (Integer (Object));
+ 
+             --    Expanded:
+             --      Object : Int;
+             --      Var : Integer := Object;  --  conversion to base type
+             --      if not Var'Valid then     --  validity check
+             --      Call (Var);               --  modify Var
+             --      Object := Int (Var);      --  conversion to subtype
+ 
+             if Etype (Var_Id) /= Obj_Typ then
+                Expr :=
+                  Make_Type_Conversion (Loc,
+                    Subtype_Mark => New_Occurrence_Of (Obj_Typ, Loc),
+                    Expression   => Expr);
+             end if;
+ 
+             --  Generate:
+             --    Object := Var;
+             --      <or>
+             --    Object := Object_Type (Var);
+ 
+             Append_To (Post_Call,
+               Make_Assignment_Statement (Loc,
+                 Name       => Obj,
+                 Expression => Expr));
+ 
+          --  If the flow reaches this point, then this routine was invoked with
+          --  an actual which does not denote a validation variable.
+ 
+          else
+             pragma Assert (False);
+             null;
+          end if;
+       end Add_Validation_Call_By_Copy_Code;
+ 
        ---------------------------
        -- Check_Fortran_Logical --
        ---------------------------
*************** package body Exp_Ch6 is
*** 1649,1667 ****
  
           if Is_By_Reference_Type (Etype (Formal)) then
  
!             --  If the front-end does not perform full type layout, the actual
!             --  may in fact be properly aligned but there is not enough front-
!             --  end information to determine this. In that case gigi will emit
!             --  an error if a copy is not legal, or generate the proper code.
!             --  For other backends we report the error now.
! 
!             --  Seems wrong to be issuing an error in the expander, since it
!             --  will be missed in -gnatc mode ???
! 
!             if Frontend_Layout_On_Target then
!                Error_Msg_N
!                  ("misaligned actual cannot be passed by reference", Actual);
!             end if;
  
              return False;
  
--- 1783,1792 ----
  
           if Is_By_Reference_Type (Etype (Formal)) then
  
!             --  The actual may in fact be properly aligned but there is not
!             --  enough front-end information to determine this. In that case
!             --  gigi will emit an error if a copy is not legal, or generate
!             --  the proper code.
  
              return False;
  
*************** package body Exp_Ch6 is
*** 1780,1785 ****
--- 1905,1917 ----
  
              if Is_Build_In_Place_Function_Call (Actual) then
                 Make_Build_In_Place_Call_In_Anonymous_Context (Actual);
+ 
+             --  Ada 2005 (AI-318-02): Specialization of the previous case for
+             --  actuals containing build-in-place function calls whose returned
+             --  object covers interface types.
+ 
+             elsif Present (Unqual_BIP_Iface_Function_Call (Actual)) then
+                Make_Build_In_Place_Iface_Call_In_Anonymous_Context (Actual);
              end if;
  
              Apply_Constraint_Check (Actual, E_Formal);
*************** package body Exp_Ch6 is
*** 1819,1828 ****
                 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_Numeric_Type (E_Formal)
                    or else Is_Access_Type (E_Formal)
--- 1951,1976 ----
                 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_Numeric_Type (E_Formal)
                    or else Is_Access_Type (E_Formal)
*************** package body Exp_Ch6 is
*** 2107,2241 ****
           Next_Formal (Formal);
           Next_Actual (Actual);
        end loop;
- 
-       --  Find right place to put post call stuff if it is present
- 
-       if not Is_Empty_List (Post_Call) then
- 
-          --  Cases where the call is not a member of a statement list.
-          --  This includes the case where the call is an actual in another
-          --  function call or indexing, i.e. an expression context as well.
- 
-          if not Is_List_Member (N)
-            or else Nkind_In (Parent (N), N_Function_Call, N_Indexed_Component)
-          then
-             --  In Ada 2012 the call may be a function call in an expression
-             --  (since OUT and IN OUT parameters are now allowed for such
-             --  calls). The write-back of (in)-out parameters is handled
-             --  by the back-end, but the constraint checks generated when
-             --  subtypes of formal and actual don't match must be inserted
-             --  in the form of assignments.
- 
-             if Ada_Version >= Ada_2012
-               and then Nkind (N) = N_Function_Call
-             then
-                --  We used to just do handle this by climbing up parents to
-                --  a non-statement/declaration and then simply making a call
-                --  to Insert_Actions_After (P, Post_Call), but that doesn't
-                --  work. If we are in the middle of an expression, e.g. the
-                --  condition of an IF, this call would insert after the IF
-                --  statement, which is much too late to be doing the write
-                --  back. For example:
- 
-                --     if Clobber (X) then
-                --        Put_Line (X'Img);
-                --     else
-                --        goto Junk
-                --     end if;
- 
-                --  Now assume Clobber changes X, if we put the write back
-                --  after the IF, the Put_Line gets the wrong value and the
-                --  goto causes the write back to be skipped completely.
- 
-                --  To deal with this, we replace the call by
- 
-                --    do
-                --       Tnnn : constant function-result-type := function-call;
-                --       Post_Call actions
-                --    in
-                --       Tnnn;
-                --    end;
- 
-                declare
-                   Tnnn  : constant Entity_Id := Make_Temporary (Loc, 'T');
-                   FRTyp : constant Entity_Id := Etype (N);
-                   Name  : constant Node_Id   := Relocate_Node (N);
- 
-                begin
-                   Prepend_To (Post_Call,
-                     Make_Object_Declaration (Loc,
-                       Defining_Identifier => Tnnn,
-                       Object_Definition   => New_Occurrence_Of (FRTyp, Loc),
-                       Constant_Present    => True,
-                       Expression          => Name));
- 
-                   Rewrite (N,
-                     Make_Expression_With_Actions (Loc,
-                       Actions    => Post_Call,
-                       Expression => New_Occurrence_Of (Tnnn, Loc)));
- 
-                   --  We don't want to just blindly call Analyze_And_Resolve
-                   --  because that would cause unwanted recursion on the call.
-                   --  So for a moment set the call as analyzed to prevent that
-                   --  recursion, and get the rest analyzed properly, then reset
-                   --  the analyzed flag, so our caller can continue.
- 
-                   Set_Analyzed (Name, True);
-                   Analyze_And_Resolve (N, FRTyp);
-                   Set_Analyzed (Name, False);
- 
-                   --  Reset calling argument to point to function call inside
-                   --  the expression with actions so the caller can continue
-                   --  to process the call. In spite of the fact that it is
-                   --  marked Analyzed above, it may be rewritten by Remove_
-                   --  Side_Effects if validity checks are present, so go back
-                   --  to original call.
- 
-                   N := Original_Node (Name);
-                end;
- 
-             --  If not the special Ada 2012 case of a function call, then
-             --  we must have the triggering statement of a triggering
-             --  alternative or an entry call alternative, and we can add
-             --  the post call stuff to the corresponding statement list.
- 
-             else
-                declare
-                   P : Node_Id;
- 
-                begin
-                   P := Parent (N);
-                   pragma Assert (Nkind_In (P, N_Triggering_Alternative,
-                                               N_Entry_Call_Alternative));
- 
-                   if Is_Non_Empty_List (Statements (P)) then
-                      Insert_List_Before_And_Analyze
-                        (First (Statements (P)), Post_Call);
-                   else
-                      Set_Statements (P, Post_Call);
-                   end if;
- 
-                   return;
-                end;
-             end if;
- 
-          --  Otherwise, normal case where N is in a statement sequence,
-          --  just put the post-call stuff after the call statement.
- 
-          else
-             Insert_Actions_After (N, Post_Call);
-             return;
-          end if;
-       end if;
- 
-       --  The call node itself is re-analyzed in Expand_Call
- 
     end Expand_Actuals;
  
     -----------------
     -- Expand_Call --
     -----------------
  
     --  This procedure handles expansion of function calls and procedure call
     --  statements (i.e. it serves as the body for Expand_N_Function_Call and
     --  Expand_N_Procedure_Call_Statement). Processing for calls includes:
--- 2255,2282 ----
           Next_Formal (Formal);
           Next_Actual (Actual);
        end loop;
     end Expand_Actuals;
  
     -----------------
     -- Expand_Call --
     -----------------
  
+    procedure Expand_Call (N : Node_Id) is
+       Post_Call : List_Id;
+ 
+    begin
+       pragma Assert (Nkind_In (N, N_Entry_Call_Statement,
+                                   N_Function_Call,
+                                   N_Procedure_Call_Statement));
+ 
+       Expand_Call_Helper (N, Post_Call);
+       Insert_Post_Call_Actions (N, Post_Call);
+    end Expand_Call;
+ 
+    ------------------------
+    -- Expand_Call_Helper --
+    ------------------------
+ 
     --  This procedure handles expansion of function calls and procedure call
     --  statements (i.e. it serves as the body for Expand_N_Function_Call and
     --  Expand_N_Procedure_Call_Statement). Processing for calls includes:
*************** package body Exp_Ch6 is
*** 2252,2258 ****
     --   for the 'Constrained attribute and for accessibility checks are added
     --   at this point.
  
!    procedure Expand_Call (N : Node_Id) is
        Loc           : constant Source_Ptr := Sloc (N);
        Call_Node     : Node_Id := N;
        Extra_Actuals : List_Id := No_List;
--- 2293,2299 ----
     --   for the 'Constrained attribute and for accessibility checks are added
     --   at this point.
  
!    procedure Expand_Call_Helper (N : Node_Id; Post_Call : out List_Id) is
        Loc           : constant Source_Ptr := Sloc (N);
        Call_Node     : Node_Id := N;
        Extra_Actuals : List_Id := No_List;
*************** package body Exp_Ch6 is
*** 2599,2604 ****
--- 2640,2646 ----
        Param_Count   : Natural := 0;
        Parent_Formal : Entity_Id;
        Parent_Subp   : Entity_Id;
+       Pref_Entity   : Entity_Id;
        Scop          : Entity_Id;
        Subp          : Entity_Id;
  
*************** package body Exp_Ch6 is
*** 2610,2618 ****
  
        CW_Interface_Formals_Present : Boolean := False;
  
!    --  Start of processing for Expand_Call
  
     begin
        --  Expand the function or procedure call if the first actual has a
        --  declared dimension aspect, and the subprogram is declared in one
        --  of the dimension I/O packages.
--- 2652,2662 ----
  
        CW_Interface_Formals_Present : Boolean := False;
  
!    --  Start of processing for Expand_Call_Helper
  
     begin
+       Post_Call := New_List;
+ 
        --  Expand the function or procedure call if the first actual has a
        --  declared dimension aspect, and the subprogram is declared in one
        --  of the dimension I/O packages.
*************** package body Exp_Ch6 is
*** 2737,2768 ****
           end;
        end if;
  
-       --  When generating C code, transform a function call that returns a
-       --  constrained array type into procedure form.
- 
        if Modify_Tree_For_C
          and then Nkind (Call_Node) = N_Function_Call
          and then Is_Entity_Name (Name (Call_Node))
-         and then Rewritten_For_C (Ultimate_Alias (Entity (Name (Call_Node))))
        then
!          --  For internally generated calls ensure that they reference the
!          --  entity of the spec of the called function (needed since the
!          --  expander may generate calls using the entity of their body).
!          --  See for example Expand_Boolean_Operator().
  
!          if not (Comes_From_Source (Call_Node))
!            and then Nkind (Unit_Declaration_Node
!                             (Ultimate_Alias (Entity (Name (Call_Node))))) =
!                               N_Subprogram_Body
!          then
!             Set_Entity (Name (Call_Node),
!               Corresponding_Function
!                 (Corresponding_Procedure
!                   (Ultimate_Alias (Entity (Name (Call_Node))))));
!          end if;
  
!          Rewrite_Function_Call_For_C (Call_Node);
!          return;
        end if;
  
        --  First step, compute extra actuals, corresponding to any Extra_Formals
--- 2781,2850 ----
           end;
        end if;
  
        if Modify_Tree_For_C
          and then Nkind (Call_Node) = N_Function_Call
          and then Is_Entity_Name (Name (Call_Node))
        then
!          declare
!             Func_Id : constant Entity_Id :=
!                         Ultimate_Alias (Entity (Name (Call_Node)));
!          begin
!             --  When generating C code, transform a function call that returns
!             --  a constrained array type into procedure form.
  
!             if Rewritten_For_C (Func_Id) then
  
!                --  For internally generated calls ensure that they reference
!                --  the entity of the spec of the called function (needed since
!                --  the expander may generate calls using the entity of their
!                --  body). See for example Expand_Boolean_Operator().
! 
!                if not (Comes_From_Source (Call_Node))
!                  and then Nkind (Unit_Declaration_Node (Func_Id)) =
!                             N_Subprogram_Body
!                then
!                   Set_Entity (Name (Call_Node),
!                     Corresponding_Function
!                       (Corresponding_Procedure (Func_Id)));
!                end if;
! 
!                Rewrite_Function_Call_For_C (Call_Node);
!                return;
! 
!             --  Also introduce a temporary for functions that return a record
!             --  called within another procedure or function call, since records
!             --  are passed by pointer in the generated C code, and we cannot
!             --  take a pointer from a subprogram call.
! 
!             elsif Nkind (Parent (Call_Node)) in N_Subprogram_Call
!               and then Is_Record_Type (Etype (Func_Id))
!             then
!                declare
!                   Temp_Id : constant Entity_Id := Make_Temporary (Loc, 'T');
!                   Decl    : Node_Id;
! 
!                begin
!                   --  Generate:
!                   --    Temp : ... := Func_Call (...);
! 
!                   Decl :=
!                     Make_Object_Declaration (Loc,
!                       Defining_Identifier => Temp_Id,
!                       Object_Definition   =>
!                         New_Occurrence_Of (Etype (Func_Id), Loc),
!                       Expression          =>
!                         Make_Function_Call (Loc,
!                           Name                   =>
!                             New_Occurrence_Of (Func_Id, Loc),
!                           Parameter_Associations =>
!                             Parameter_Associations (Call_Node)));
! 
!                   Insert_Action (Parent (Call_Node), Decl);
!                   Rewrite (Call_Node, New_Occurrence_Of (Temp_Id, Loc));
!                   return;
!                end;
!             end if;
!          end;
        end if;
  
        --  First step, compute extra actuals, corresponding to any Extra_Formals
*************** package body Exp_Ch6 is
*** 2792,2798 ****
              Thunk_Formal  := Extra_Formals (Current_Scope);
              while Present (Target_Formal) loop
                 Add_Extra_Actual
!                  (New_Occurrence_Of (Thunk_Formal, Loc), Thunk_Formal);
  
                 Target_Formal := Extra_Formal (Target_Formal);
                 Thunk_Formal  := Extra_Formal (Thunk_Formal);
--- 2874,2881 ----
              Thunk_Formal  := Extra_Formals (Current_Scope);
              while Present (Target_Formal) loop
                 Add_Extra_Actual
!                  (Expr => New_Occurrence_Of (Thunk_Formal, Loc),
!                   EF   => Thunk_Formal);
  
                 Target_Formal := Extra_Formal (Target_Formal);
                 Thunk_Formal  := Extra_Formal (Thunk_Formal);
*************** package body Exp_Ch6 is
*** 2802,2808 ****
                 Add_Actual_Parameter (Remove_Head (Extra_Actuals));
              end loop;
  
!             Expand_Actuals (Call_Node, Subp);
              return;
           end;
        end if;
--- 2885,2892 ----
                 Add_Actual_Parameter (Remove_Head (Extra_Actuals));
              end loop;
  
!             Expand_Actuals (Call_Node, Subp, Post_Call);
!             pragma Assert (Is_Empty_List (Post_Call));
              return;
           end;
        end if;
*************** package body Exp_Ch6 is
*** 2856,2870 ****
                and then not Has_Discriminants (Base_Type (Etype (Prev)))
              then
                 Add_Extra_Actual
!                  (New_Occurrence_Of (Standard_False, Loc),
!                   Extra_Constrained (Formal));
  
              elsif Is_Constrained (Etype (Formal))
                or else not Has_Discriminants (Etype (Prev))
              then
                 Add_Extra_Actual
!                  (New_Occurrence_Of (Standard_True, Loc),
!                   Extra_Constrained (Formal));
  
              --  Do not produce extra actuals for Unchecked_Union parameters.
              --  Jump directly to the end of the loop.
--- 2940,2954 ----
                and then not Has_Discriminants (Base_Type (Etype (Prev)))
              then
                 Add_Extra_Actual
!                  (Expr => New_Occurrence_Of (Standard_False, Loc),
!                   EF   => Extra_Constrained (Formal));
  
              elsif Is_Constrained (Etype (Formal))
                or else not Has_Discriminants (Etype (Prev))
              then
                 Add_Extra_Actual
!                  (Expr => New_Occurrence_Of (Standard_True, Loc),
!                   EF   => Extra_Constrained (Formal));
  
              --  Do not produce extra actuals for Unchecked_Union parameters.
              --  Jump directly to the end of the loop.
*************** package body Exp_Ch6 is
*** 2901,2917 ****
                      and then Nkind (Act_Prev) = N_Explicit_Dereference
                    then
                       Add_Extra_Actual
!                        (New_Occurrence_Of (Standard_False, Loc),
!                         Extra_Constrained (Formal));
  
                    else
                       Add_Extra_Actual
!                        (Make_Attribute_Reference (Sloc (Prev),
!                         Prefix =>
!                           Duplicate_Subexpr_No_Checks
!                             (Act_Prev, Name_Req => True),
!                         Attribute_Name => Name_Constrained),
!                         Extra_Constrained (Formal));
                    end if;
                 end;
              end if;
--- 2985,3002 ----
                      and then Nkind (Act_Prev) = N_Explicit_Dereference
                    then
                       Add_Extra_Actual
!                        (Expr => New_Occurrence_Of (Standard_False, Loc),
!                         EF   => Extra_Constrained (Formal));
  
                    else
                       Add_Extra_Actual
!                        (Expr =>
!                           Make_Attribute_Reference (Sloc (Prev),
!                             Prefix         =>
!                               Duplicate_Subexpr_No_Checks
!                                 (Act_Prev, Name_Req => True),
!                             Attribute_Name => Name_Constrained),
!                         EF   => Extra_Constrained (Formal));
                    end if;
                 end;
              end if;
*************** package body Exp_Ch6 is
*** 2930,2940 ****
  
              if Prev_Orig /= Prev
                and then Nkind (Prev) = N_Attribute_Reference
!               and then
!                 Get_Attribute_Id (Attribute_Name (Prev)) = Attribute_Access
                and then Is_Aliased_View (Prev_Orig)
              then
                 Prev_Orig := Prev;
              end if;
  
              --  Ada 2005 (AI-251): Thunks must propagate the extra actuals of
--- 3015,3052 ----
  
              if Prev_Orig /= Prev
                and then Nkind (Prev) = N_Attribute_Reference
!               and then Get_Attribute_Id (Attribute_Name (Prev)) =
!                          Attribute_Access
                and then Is_Aliased_View (Prev_Orig)
              then
                 Prev_Orig := Prev;
+ 
+             --  A class-wide precondition generates a test in which formals of
+             --  the subprogram are replaced by actuals that came from source.
+             --  In that case as well, the accessiblity comes from the actual.
+             --  This is the one case in which there are references to formals
+             --  outside of their subprogram.
+ 
+             elsif Prev_Orig /= Prev
+               and then Is_Entity_Name (Prev_Orig)
+               and then Present (Entity (Prev_Orig))
+               and then Is_Formal (Entity (Prev_Orig))
+               and then not In_Open_Scopes (Scope (Entity (Prev_Orig)))
+             then
+                Prev_Orig := Prev;
+ 
+             --  If the actual is a formal of an enclosing subprogram it is
+             --  the right entity, even if it is a rewriting. This happens
+             --  when the call is within an inherited condition or predicate.
+ 
+             elsif Is_Entity_Name (Actual)
+               and then Is_Formal (Entity (Actual))
+               and then In_Open_Scopes (Scope (Entity (Actual)))
+             then
+                Prev_Orig := Prev;
+ 
+             elsif Nkind (Prev_Orig) = N_Type_Conversion then
+                Prev_Orig := Expression (Prev_Orig);
              end if;
  
              --  Ada 2005 (AI-251): Thunks must propagate the extra actuals of
*************** package body Exp_Ch6 is
*** 2967,2974 ****
                    end if;
  
                    Add_Extra_Actual
!                     (New_Occurrence_Of (Extra_Accessibility (Parm_Ent), Loc),
!                      Extra_Accessibility (Formal));
                 end;
  
              elsif Is_Entity_Name (Prev_Orig) then
--- 3079,3087 ----
                    end if;
  
                    Add_Extra_Actual
!                     (Expr =>
!                        New_Occurrence_Of (Extra_Accessibility (Parm_Ent), Loc),
!                      EF   => Extra_Accessibility (Formal));
                 end;
  
              elsif Is_Entity_Name (Prev_Orig) then
*************** package body Exp_Ch6 is
*** 2999,3007 ****
  
                       if Present (Extra_Accessibility (Parm_Ent)) then
                          Add_Extra_Actual
!                           (New_Occurrence_Of
!                              (Extra_Accessibility (Parm_Ent), Loc),
!                            Extra_Accessibility (Formal));
  
                       --  If the actual access parameter does not have an
                       --  associated extra formal providing its scope level,
--- 3112,3121 ----
  
                       if Present (Extra_Accessibility (Parm_Ent)) then
                          Add_Extra_Actual
!                           (Expr =>
!                              New_Occurrence_Of
!                                (Extra_Accessibility (Parm_Ent), Loc),
!                            EF   => Extra_Accessibility (Formal));
  
                       --  If the actual access parameter does not have an
                       --  associated extra formal providing its scope level,
*************** package body Exp_Ch6 is
*** 3010,3018 ****
  
                       else
                          Add_Extra_Actual
!                           (Make_Integer_Literal (Loc,
!                              Intval => Scope_Depth (Standard_Standard)),
!                            Extra_Accessibility (Formal));
                       end if;
                    end;
  
--- 3124,3133 ----
  
                       else
                          Add_Extra_Actual
!                           (Expr =>
!                              Make_Integer_Literal (Loc,
!                                Intval => Scope_Depth (Standard_Standard)),
!                            EF   => Extra_Accessibility (Formal));
                       end if;
                    end;
  
*************** package body Exp_Ch6 is
*** 3021,3028 ****
  
                 else
                    Add_Extra_Actual
!                     (Dynamic_Accessibility_Level (Prev_Orig),
!                      Extra_Accessibility (Formal));
                 end if;
  
              --  If the actual is an access discriminant, then pass the level
--- 3136,3143 ----
  
                 else
                    Add_Extra_Actual
!                     (Expr => Dynamic_Accessibility_Level (Prev_Orig),
!                      EF   => Extra_Accessibility (Formal));
                 end if;
  
              --  If the actual is an access discriminant, then pass the level
*************** package body Exp_Ch6 is
*** 3035,3043 ****
                                                         E_Anonymous_Access_Type
              then
                 Add_Extra_Actual
!                  (Make_Integer_Literal (Loc,
!                     Intval => Object_Access_Level (Prefix (Prev_Orig))),
!                   Extra_Accessibility (Formal));
  
              --  All other cases
  
--- 3150,3159 ----
                                                         E_Anonymous_Access_Type
              then
                 Add_Extra_Actual
!                  (Expr =>
!                     Make_Integer_Literal (Loc,
!                       Intval => Object_Access_Level (Prefix (Prev_Orig))),
!                   EF   => Extra_Accessibility (Formal));
  
              --  All other cases
  
*************** package body Exp_Ch6 is
*** 3050,3055 ****
--- 3166,3188 ----
  
                          when Attribute_Access =>
  
+                            --  Accessibility level of S'Access is that of A
+ 
+                            Prev_Orig := Prefix (Prev_Orig);
+ 
+                            --  If the expression is a view conversion, the
+                            --  accessibility level is that of the expression.
+ 
+                            if Nkind (Original_Node (Prev_Orig)) =
+                                 N_Type_Conversion
+                              and then
+                                Nkind (Expression (Original_Node (Prev_Orig))) =
+                                  N_Explicit_Dereference
+                            then
+                               Prev_Orig :=
+                                 Expression (Original_Node (Prev_Orig));
+                            end if;
+ 
                             --  If this is an Access attribute applied to the
                             --  the current instance object passed to a type
                             --  initialization procedure, then use the level
*************** package body Exp_Ch6 is
*** 3065,3087 ****
                             --  which can be one level too deep in some cases.
                             --  ???
  
!                            if Is_Entity_Name (Prefix (Prev_Orig))
!                              and then Is_Type (Entity (Prefix (Prev_Orig)))
                             then
                                Add_Extra_Actual
!                                 (Make_Integer_Literal (Loc,
!                                    Intval =>
!                                      Type_Access_Level
!                                        (Entity (Prefix (Prev_Orig)))),
!                                  Extra_Accessibility (Formal));
  
                             else
                                Add_Extra_Actual
!                                 (Make_Integer_Literal (Loc,
!                                    Intval =>
!                                      Object_Access_Level
!                                        (Prefix (Prev_Orig))),
!                                  Extra_Accessibility (Formal));
                             end if;
  
                          --  Treat the unchecked attributes as library-level
--- 3198,3249 ----
                             --  which can be one level too deep in some cases.
                             --  ???
  
!                            --  A further case that requires special handling
!                            --  is the common idiom E.all'access.  If E is a
!                            --  formal of the enclosing subprogram, the
!                            --  accessibility of the expression is that of E.
! 
!                            if Is_Entity_Name (Prev_Orig) then
!                               Pref_Entity := Entity (Prev_Orig);
! 
!                            elsif Nkind (Prev_Orig) = N_Explicit_Dereference
!                              and then Is_Entity_Name (Prefix (Prev_Orig))
!                            then
!                               Pref_Entity := Entity (Prefix ((Prev_Orig)));
! 
!                            else
!                               Pref_Entity := Empty;
!                            end if;
! 
!                            if Is_Entity_Name (Prev_Orig)
!                              and then Is_Type (Entity (Prev_Orig))
                             then
                                Add_Extra_Actual
!                                 (Expr =>
!                                    Make_Integer_Literal (Loc,
!                                      Intval =>
!                                        Type_Access_Level (Pref_Entity)),
!                                  EF   => Extra_Accessibility (Formal));
! 
!                            elsif Nkind (Prev_Orig) = N_Explicit_Dereference
!                              and then Present (Pref_Entity)
!                              and then Is_Formal (Pref_Entity)
!                              and then Present
!                                         (Extra_Accessibility (Pref_Entity))
!                            then
!                               Add_Extra_Actual
!                                 (Expr =>
!                                    New_Occurrence_Of
!                                      (Extra_Accessibility (Pref_Entity), Loc),
!                                  EF   => Extra_Accessibility (Formal));
  
                             else
                                Add_Extra_Actual
!                                 (Expr =>
!                                    Make_Integer_Literal (Loc,
!                                      Intval =>
!                                        Object_Access_Level (Prev_Orig)),
!                                  EF   => Extra_Accessibility (Formal));
                             end if;
  
                          --  Treat the unchecked attributes as library-level
*************** package body Exp_Ch6 is
*** 3090,3098 ****
                             | Attribute_Unrestricted_Access
                          =>
                             Add_Extra_Actual
!                              (Make_Integer_Literal (Loc,
!                                 Intval => Scope_Depth (Standard_Standard)),
!                               Extra_Accessibility (Formal));
  
                          --  No other cases of attributes returning access
                          --  values that can be passed to access parameters.
--- 3252,3261 ----
                             | Attribute_Unrestricted_Access
                          =>
                             Add_Extra_Actual
!                              (Expr =>
!                                 Make_Integer_Literal (Loc,
!                                   Intval => Scope_Depth (Standard_Standard)),
!                               EF   => Extra_Accessibility (Formal));
  
                          --  No other cases of attributes returning access
                          --  values that can be passed to access parameters.
*************** package body Exp_Ch6 is
*** 3108,3116 ****
  
                    when N_Allocator =>
                       Add_Extra_Actual
!                        (Make_Integer_Literal (Loc,
!                           Intval => Scope_Depth (Current_Scope) + 1),
!                         Extra_Accessibility (Formal));
  
                    --  For most other cases we simply pass the level of the
                    --  actual's access type. The type is retrieved from
--- 3271,3280 ----
  
                    when N_Allocator =>
                       Add_Extra_Actual
!                        (Expr =>
!                           Make_Integer_Literal (Loc,
!                             Intval => Scope_Depth (Current_Scope) + 1),
!                         EF   => Extra_Accessibility (Formal));
  
                    --  For most other cases we simply pass the level of the
                    --  actual's access type. The type is retrieved from
*************** package body Exp_Ch6 is
*** 3120,3127 ****
  
                    when others =>
                       Add_Extra_Actual
!                        (Dynamic_Accessibility_Level (Prev),
!                         Extra_Accessibility (Formal));
                 end case;
              end if;
           end if;
--- 3284,3291 ----
  
                    when others =>
                       Add_Extra_Actual
!                        (Expr => Dynamic_Accessibility_Level (Prev),
!                         EF   => Extra_Accessibility (Formal));
                 end case;
              end if;
           end if;
*************** package body Exp_Ch6 is
*** 3448,3455 ****
                 end if;
  
                 Add_Extra_Actual
!                  (Level,
!                   Extra_Accessibility_Of_Result (Ultimate_Alias (Subp)));
              end if;
           end;
        end if;
--- 3612,3620 ----
                 end if;
  
                 Add_Extra_Actual
!                  (Expr => Level,
!                   EF   =>
!                     Extra_Accessibility_Of_Result (Ultimate_Alias (Subp)));
              end if;
           end;
        end if;
*************** package body Exp_Ch6 is
*** 3492,3499 ****
                      Root_Type (Etype (Name (Ass)))
                    then
                       Error_Msg_NE
!                        ("tag-indeterminate expression "
!                          & " must have designated type& (RM 5.2 (6))",
                           Call_Node, Root_Type (Etype (Name (Ass))));
                    else
                       Propagate_Tag (Name (Ass), Call_Node);
--- 3657,3664 ----
                      Root_Type (Etype (Name (Ass)))
                    then
                       Error_Msg_NE
!                        ("tag-indeterminate expression must have designated "
!                         & "type& (RM 5.2 (6))",
                           Call_Node, Root_Type (Etype (Name (Ass))));
                    else
                       Propagate_Tag (Name (Ass), Call_Node);
*************** package body Exp_Ch6 is
*** 3501,3507 ****
  
                 elsif Etype (Call_Node) /= Root_Type (Etype (Name (Ass))) then
                    Error_Msg_NE
!                     ("tag-indeterminate expression must have type&"
                       & "(RM 5.2 (6))",
                       Call_Node, Root_Type (Etype (Name (Ass))));
  
--- 3666,3672 ----
  
                 elsif Etype (Call_Node) /= Root_Type (Etype (Name (Ass))) then
                    Error_Msg_NE
!                     ("tag-indeterminate expression must have type & "
                       & "(RM 5.2 (6))",
                       Call_Node, Root_Type (Etype (Name (Ass))));
  
*************** package body Exp_Ch6 is
*** 3651,3657 ****
        --  At this point we have all the actuals, so this is the point at which
        --  the various expansion activities for actuals is carried out.
  
!       Expand_Actuals (Call_Node, Subp);
  
        --  Verify that the actuals do not share storage. This check must be done
        --  on the caller side rather that inside the subprogram to avoid issues
--- 3816,3822 ----
        --  At this point we have all the actuals, so this is the point at which
        --  the various expansion activities for actuals is carried out.
  
!       Expand_Actuals (Call_Node, Subp, Post_Call);
  
        --  Verify that the actuals do not share storage. This check must be done
        --  on the caller side rather that inside the subprogram to avoid issues
*************** package body Exp_Ch6 is
*** 3926,3942 ****
           --  replacing them with an unchecked conversion. Not only is this
           --  efficient, but it also avoids order of elaboration problems when
           --  address clauses are inlined (address expression elaborated at the
!          --  at the wrong point).
  
           --  We perform this optimization regardless of whether we are in the
           --  main unit or in a unit in the context of the main unit, to ensure
!          --  that tree generated is the same in both cases, for CodePeer use.
  
           if Is_RTE (Subp, RE_To_Address) then
              Rewrite (Call_Node,
                Unchecked_Convert_To
                  (RTE (RE_Address), Relocate_Node (First_Actual (Call_Node))));
              return;
           end if;
  
           --  Handle inlining. No action needed if the subprogram is not inlined
--- 4091,4125 ----
           --  replacing them with an unchecked conversion. Not only is this
           --  efficient, but it also avoids order of elaboration problems when
           --  address clauses are inlined (address expression elaborated at the
!          --  wrong point).
  
           --  We perform this optimization regardless of whether we are in the
           --  main unit or in a unit in the context of the main unit, to ensure
!          --  that the generated tree is the same in both cases, for CodePeer
!          --  use.
  
           if Is_RTE (Subp, RE_To_Address) then
              Rewrite (Call_Node,
                Unchecked_Convert_To
                  (RTE (RE_Address), Relocate_Node (First_Actual (Call_Node))));
              return;
+ 
+          --  A call to a null procedure is replaced by a null statement, but we
+          --  are not allowed to ignore possible side effects of the call, so we
+          --  make sure that actuals are evaluated.
+          --  We also suppress this optimization for GNATCoverage.
+ 
+          elsif Is_Null_Procedure (Subp)
+            and then not Opt.Suppress_Control_Flow_Optimizations
+          then
+             Actual := First_Actual (Call_Node);
+             while Present (Actual) loop
+                Remove_Side_Effects (Actual);
+                Next_Actual (Actual);
+             end loop;
+ 
+             Rewrite (Call_Node, Make_Null_Statement (Loc));
+             return;
           end if;
  
           --  Handle inlining. No action needed if the subprogram is not inlined
*************** package body Exp_Ch6 is
*** 4161,4171 ****
        --  result from the secondary stack.
  
        if Needs_Finalization (Etype (Subp)) then
!          if not Is_Limited_View (Etype (Subp))
             and then
               (No (First_Formal (Subp))
!                 or else
!                   not Is_Concurrent_Record_Type (Etype (First_Formal (Subp))))
           then
              Expand_Ctrl_Function_Call (Call_Node);
  
--- 4344,4354 ----
        --  result from the secondary stack.
  
        if Needs_Finalization (Etype (Subp)) then
!          if not Is_Build_In_Place_Function_Call (Call_Node)
             and then
               (No (First_Formal (Subp))
!                or else
!                  not Is_Concurrent_Record_Type (Etype (First_Formal (Subp))))
           then
              Expand_Ctrl_Function_Call (Call_Node);
  
*************** package body Exp_Ch6 is
*** 4174,4192 ****
           --  intermediate result after its use.
  
           elsif Is_Build_In_Place_Function_Call (Call_Node)
             and then
!              Nkind_In (Parent (Call_Node), N_Attribute_Reference,
!                                            N_Function_Call,
!                                            N_Indexed_Component,
!                                            N_Object_Renaming_Declaration,
!                                            N_Procedure_Call_Statement,
!                                            N_Selected_Component,
!                                            N_Slice)
           then
!             Establish_Transient_Scope (Call_Node, Sec_Stack => True);
           end if;
        end if;
!    end Expand_Call;
  
     -------------------------------
     -- Expand_Ctrl_Function_Call --
--- 4357,4379 ----
           --  intermediate result after its use.
  
           elsif Is_Build_In_Place_Function_Call (Call_Node)
+            and then Nkind_In (Parent (Unqual_Conv (Call_Node)),
+                               N_Attribute_Reference,
+                               N_Function_Call,
+                               N_Indexed_Component,
+                               N_Object_Renaming_Declaration,
+                               N_Procedure_Call_Statement,
+                               N_Selected_Component,
+                               N_Slice)
             and then
!              (Ekind (Current_Scope) /= E_Loop
!                or else Nkind (Parent (N)) /= N_Function_Call
!                or else not Is_Build_In_Place_Function_Call (Parent (N)))
           then
!             Establish_Transient_Scope (Call_Node, Manage_Sec_Stack => True);
           end if;
        end if;
!    end Expand_Call_Helper;
  
     -------------------------------
     -- Expand_Ctrl_Function_Call --
*************** package body Exp_Ch6 is
*** 4549,4557 ****
        Exp         : Node_Id;
        HSS         : Node_Id;
        Result      : Node_Id;
-       Return_Stmt : Node_Id;
        Stmts       : List_Id;
  
     --  Start of processing for Expand_N_Extended_Return_Statement
  
     begin
--- 4736,4746 ----
        Exp         : Node_Id;
        HSS         : Node_Id;
        Result      : Node_Id;
        Stmts       : List_Id;
  
+       Return_Stmt : Node_Id := Empty;
+       --  Force initialization to facilitate static analysis
+ 
     --  Start of processing for Expand_N_Extended_Return_Statement
  
     begin
*************** package body Exp_Ch6 is
*** 4563,4568 ****
--- 4752,4768 ----
  
        if Nkind (Ret_Obj_Decl) = N_Object_Declaration then
           Exp := Expression (Ret_Obj_Decl);
+ 
+          --  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_Scope) = E_Function);
+             pragma Assert
+               (Is_Build_In_Place_Function (Current_Scope) =
+                Is_Build_In_Place_Function_Call (Exp));
+             null;
+          end if;
        else
           Exp := Empty;
        end if;
*************** package body Exp_Ch6 is
*** 4590,4595 ****
--- 4790,4801 ----
                 Func_Bod := Parent (Parent (Corresponding_Body (Func_Bod)));
              end if;
  
+             if Nkind (Func_Bod) = N_Function_Specification then
+                Func_Bod := Parent (Func_Bod); -- one more level for child units
+             end if;
+ 
+             pragma Assert (Nkind (Func_Bod) = N_Subprogram_Body);
+ 
              --  Create a flag to track the function state
  
              Flag_Id := Make_Temporary (Loc, 'F');
*************** package body Exp_Ch6 is
*** 4615,4622 ****
        --  Build a simple_return_statement that returns the return object when
        --  there is a statement sequence, or no expression, or the result will
        --  be built in place. Note however that we currently do this for all
!       --  composite cases, even though nonlimited composite results are not yet
!       --  built in place (though we plan to do so eventually).
  
        if Present (HSS)
          or else Is_Composite_Type (Ret_Typ)
--- 4821,4827 ----
        --  Build a simple_return_statement that returns the return object when
        --  there is a statement sequence, or no expression, or the result will
        --  be built in place. Note however that we currently do this for all
!       --  composite cases, even though not all are built in place.
  
        if Present (HSS)
          or else Is_Composite_Type (Ret_Typ)
*************** package body Exp_Ch6 is
*** 4722,4729 ****
           then
              pragma Assert
                (Nkind (Original_Node (Ret_Obj_Decl)) = N_Object_Declaration
!                 and then Is_Build_In_Place_Function_Call
!                            (Expression (Original_Node (Ret_Obj_Decl))));
  
              --  Return the build-in-place result by reference
  
--- 4927,4945 ----
           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 convered interface type.
! 
!                   or else
!                     Present (Unqual_BIP_Iface_Function_Call
!                               (Expression (Original_Node (Ret_Obj_Decl))))));
  
              --  Return the build-in-place result by reference
  
*************** package body Exp_Ch6 is
*** 4794,4800 ****
                    Init_Assignment :=
                      Make_Assignment_Statement (Loc,
                        Name       => New_Occurrence_Of (Ret_Obj_Id, Loc),
!                       Expression => Relocate_Node (Ret_Obj_Expr));
  
                    Set_Etype (Name (Init_Assignment), Etype (Ret_Obj_Id));
                    Set_Assignment_OK (Name (Init_Assignment));
--- 5010,5016 ----
                    Init_Assignment :=
                      Make_Assignment_Statement (Loc,
                        Name       => New_Occurrence_Of (Ret_Obj_Id, Loc),
!                       Expression => New_Copy_Tree (Ret_Obj_Expr));
  
                    Set_Etype (Name (Init_Assignment), Etype (Ret_Obj_Id));
                    Set_Assignment_OK (Name (Init_Assignment));
*************** package body Exp_Ch6 is
*** 4838,4853 ****
                 --  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 (currently only supported for the global
!                --  heap, user-defined storage pools TBD ???). 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 not Is_Constrained (Ret_Typ)
                   or else Is_Tagged_Type (Underlying_Type (Ret_Typ))
--- 5054,5068 ----
                 --  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 not Is_Constrained (Ret_Typ)
                   or else Is_Tagged_Type (Underlying_Type (Ret_Typ))
*************** package body Exp_Ch6 is
*** 4959,4969 ****
--- 5174,5192 ----
                          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 (Heap_Allocator);
+                      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
*************** package body Exp_Ch6 is
*** 5005,5010 ****
--- 5228,5234 ----
  
                       else
                          SS_Allocator := New_Copy_Tree (Heap_Allocator);
+                         pragma Assert (Alloc_For_BIP_Return (SS_Allocator));
  
                          --  The heap and pool allocators are marked as
                          --  Comes_From_Source since they correspond to an
*************** package body Exp_Ch6 is
*** 5112,5127 ****
                                    Temp_Typ   => Ref_Type,
                                    Func_Id    => Func_Id,
                                    Ret_Typ    => Ret_Obj_Typ,
!                                   Alloc_Expr => Heap_Allocator)))),
  
                           Else_Statements => New_List (
!                            Pool_Decl,
!                            Build_Heap_Allocator
!                              (Temp_Id    => Alloc_Obj_Id,
!                               Temp_Typ   => Ref_Type,
!                               Func_Id    => Func_Id,
!                               Ret_Typ    => Ret_Obj_Typ,
!                               Alloc_Expr => Pool_Allocator)));
  
                       --  If a separate initialization assignment was created
                       --  earlier, append that following the assignment of the
--- 5336,5373 ----
                                    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_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 (
!                            Make_Raise_Program_Error (Loc,
!                              Reason => PE_Build_In_Place_Mismatch)));
  
                       --  If a separate initialization assignment was created
                       --  earlier, append that following the assignment of the
*************** package body Exp_Ch6 is
*** 5135,5140 ****
--- 5381,5390 ----
                          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));
  
*************** package body Exp_Ch6 is
*** 5628,5633 ****
--- 5878,5890 ----
        --  Set to encode entity names in package body before gigi is called
  
        Qualify_Entity_Names (N);
+ 
+       --  If the body belongs to a nonabstract library-level source primitive
+       --  of a tagged type, install an elaboration check which ensures that a
+       --  dispatching call targeting the primitive will not execute the body
+       --  without it being previously elaborated.
+ 
+       Install_Primitive_Elaboration_Check (N);
     end Expand_N_Subprogram_Body;
  
     -----------------------------------
*************** package body Exp_Ch6 is
*** 5763,5769 ****
        --  Ada 2005 (AI-348): Generate body for a null procedure. In most
        --  cases this is superfluous because calls to it will be automatically
        --  inlined, but we definitely need the body if preconditions for the
!       --  procedure are present.
  
        elsif Nkind (Specification (N)) = N_Procedure_Specification
          and then Null_Present (Specification (N))
--- 6020,6026 ----
        --  Ada 2005 (AI-348): Generate body for a null procedure. In most
        --  cases this is superfluous because calls to it will be automatically
        --  inlined, but we definitely need the body if preconditions for the
!       --  procedure are present, or if performing coverage analysis.
  
        elsif Nkind (Specification (N)) = N_Procedure_Specification
          and then Null_Present (Specification (N))
*************** package body Exp_Ch6 is
*** 6200,6208 ****
           end if;
        end if;
  
!       --  For the case of a simple return that does not come from an extended
!       --  return, in the case of Ada 2005 where we are returning a limited
!       --  type, we rewrite "return <expression>;" to be:
  
        --    return _anon_ : <return_subtype> := <expression>
  
--- 6457,6476 ----
           end if;
        end if;
  
!       --  Assert that if F says "return G(...);"
!       --  then F and G are both b-i-p, or neither b-i-p.
! 
!       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;
! 
!       --  For the case of a simple return that does not come from an
!       --  extended return, in the case of build-in-place, we rewrite
!       --  "return <expression>;" to be:
  
        --    return _anon_ : <return_subtype> := <expression>
  
*************** package body Exp_Ch6 is
*** 6230,6238 ****
        --  class-wide interface type, which is not a limited type, even though
        --  the type of the expression may be.
  
        if not Comes_From_Extended_Return_Statement (N)
!         and then Is_Limited_View (Etype (Expression (N)))
!         and then Ada_Version >= Ada_2005
          and then not Debug_Flag_Dot_L
  
           --  The functionality of interface thunks is simple and it is always
--- 6498,6510 ----
        --  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
*************** package body Exp_Ch6 is
*** 6310,6316 ****
        --  type that requires special processing (indicated by the fact that
        --  it requires a cleanup scope for the secondary stack case).
  
!       if Is_Limited_View (Exptyp)
          or else Is_Limited_Interface (Exptyp)
        then
           null;
--- 6582,6588 ----
        --  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 (Exptyp)
        then
           null;
*************** package body Exp_Ch6 is
*** 6391,6396 ****
--- 6663,6678 ----
  
              Rewrite (Exp, Duplicate_Subexpr_No_Checks (Exp));
  
+             --  Ada 2005 (AI-251): If the type of the returned object is
+             --  an interface then add an implicit type conversion to force
+             --  displacement of the "this" pointer.
+ 
+             if Is_Interface (R_Type) then
+                Rewrite (Exp, Convert_To (R_Type, Relocate_Node (Exp)));
+             end if;
+ 
+             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:
  
*************** package body Exp_Ch6 is
*** 6635,6649 ****
                     Attribute_Name => Name_Tag);
              end if;
  
!             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 (Scope_Id)))),
!                 Reason => PE_Accessibility_Check_Failed));
           end;
  
        --  AI05-0073: If function has a controlling access result, check that
--- 6917,6936 ----
                     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 (Scope_Id)))),
!                    Reason    => PE_Accessibility_Check_Failed));
!             end if;
           end;
  
        --  AI05-0073: If function has a controlling access result, check that
*************** package body Exp_Ch6 is
*** 6743,6754 ****
                 Discrim_Source := Original_Node (Discrim_Source);
              end if;
  
!             while Nkind_In (Discrim_Source, N_Qualified_Expression,
!                                             N_Type_Conversion,
!                                             N_Unchecked_Type_Conversion)
!             loop
!                Discrim_Source := Expression (Discrim_Source);
!             end loop;
  
              case Nkind (Discrim_Source) is
                 when N_Defining_Identifier =>
--- 7030,7036 ----
                 Discrim_Source := Original_Node (Discrim_Source);
              end if;
  
!             Discrim_Source := Unqual_Conv (Discrim_Source);
  
              case Nkind (Discrim_Source) is
                 when N_Defining_Identifier =>
*************** package body Exp_Ch6 is
*** 6835,6842 ****
                          return Empty;
                       end Associated_Expr;
  
-                   --  Start of processing for Expand_Simple_Function_Return
- 
                    begin
                       if not Positionals_Exhausted then
                          Disc_Exp := First (Expressions (Discrim_Source));
--- 7117,7122 ----
*************** package body Exp_Ch6 is
*** 6992,6997 ****
--- 7272,7359 ----
        return False;
     end Has_Unconstrained_Access_Discriminants;
  
+    -----------------------------------
+    -- 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 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_Function --
     --------------------------------
*************** package body Exp_Ch6 is
*** 7022,7040 ****
           --  intended to be compatible with the other language, but the build-
           --  in place machinery can ensure that the object is not copied.
  
!          if Has_Foreign_Convention (E) then
!             return False;
! 
!          --  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.
! 
!          else
!             return Is_Limited_View (Etype (E))
!               and then Ada_Version >= Ada_2005
!               and then not Debug_Flag_Dot_L;
!          end if;
  
        else
           return False;
--- 7384,7392 ----
           --  intended to be compatible with the other language, but the build-
           --  in place machinery can ensure that the object is not copied.
  
!          return Is_Build_In_Place_Result_Type (Etype (E))
!            and then not Has_Foreign_Convention (E)
!            and then not Debug_Flag_Dot_L;
  
        else
           return False;
*************** package body Exp_Ch6 is
*** 7046,7052 ****
     -------------------------------------
  
     function Is_Build_In_Place_Function_Call (N : Node_Id) return Boolean is
!       Exp_Node    : Node_Id := N;
        Function_Id : Entity_Id;
  
     begin
--- 7398,7404 ----
     -------------------------------------
  
     function Is_Build_In_Place_Function_Call (N : Node_Id) return Boolean is
!       Exp_Node    : constant Node_Id := Unqual_Conv (N);
        Function_Id : Entity_Id;
  
     begin
*************** package body Exp_Ch6 is
*** 7062,7106 ****
        --  may end up with a call that is neither resolved to an entity, nor
        --  an indirect call.
  
!       if not Expander_Active then
           return False;
        end if;
  
!       --  Step past qualification, type conversion (which can occur in actual
!       --  parameter contexts), and unchecked conversion (which can occur in
!       --  cases of calls to 'Input).
! 
!       if Nkind_In (Exp_Node, N_Qualified_Expression,
!                              N_Type_Conversion,
!                              N_Unchecked_Type_Conversion)
!       then
!          Exp_Node := Expression (N);
!       end if;
! 
!       if Nkind (Exp_Node) /= N_Function_Call then
!          return False;
! 
!       else
!          if Is_Entity_Name (Name (Exp_Node)) then
!             Function_Id := Entity (Name (Exp_Node));
! 
!          --  In the case of an explicitly dereferenced call, use the subprogram
!          --  type generated for the dereference.
  
!          elsif Nkind (Name (Exp_Node)) = N_Explicit_Dereference then
!             Function_Id := Etype (Name (Exp_Node));
  
!          --  This may be a call to a protected function.
  
!          elsif Nkind (Name (Exp_Node)) = N_Selected_Component then
!             Function_Id := Etype (Entity (Selector_Name (Name (Exp_Node))));
  
!          else
!             raise Program_Error;
!          end if;
  
!          return Is_Build_In_Place_Function (Function_Id);
        end if;
     end Is_Build_In_Place_Function_Call;
  
     -----------------------
--- 7414,7447 ----
        --  may end up with a call that is neither resolved to an entity, nor
        --  an indirect call.
  
!       if not Expander_Active or else Nkind (Exp_Node) /= N_Function_Call then
           return False;
        end if;
  
!       if Is_Entity_Name (Name (Exp_Node)) then
!          Function_Id := Entity (Name (Exp_Node));
  
!       --  In the case of an explicitly dereferenced call, use the subprogram
!       --  type generated for the dereference.
  
!       elsif Nkind (Name (Exp_Node)) = N_Explicit_Dereference then
!          Function_Id := Etype (Name (Exp_Node));
  
!       --  This may be a call to a protected function.
  
!       elsif Nkind (Name (Exp_Node)) = N_Selected_Component then
!          Function_Id := Etype (Entity (Selector_Name (Name (Exp_Node))));
  
!       else
!          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;
  
     -----------------------
*************** package body Exp_Ch6 is
*** 7295,7300 ****
--- 7636,7763 ----
        end if;
     end Freeze_Subprogram;
  
+    ------------------------------
+    -- Insert_Post_Call_Actions --
+    ------------------------------
+ 
+    procedure Insert_Post_Call_Actions (N : Node_Id; Post_Call : List_Id) is
+       Context : constant Node_Id := Parent (N);
+ 
+    begin
+       if Is_Empty_List (Post_Call) then
+          return;
+       end if;
+ 
+       --  Cases where the call is not a member of a statement list. This
+       --  includes the case where the call is an actual in another function
+       --  call or indexing, i.e. an expression context as well.
+ 
+       if not Is_List_Member (N)
+         or else Nkind_In (Context, N_Function_Call, N_Indexed_Component)
+       then
+          --  In Ada 2012 the call may be a function call in an expression
+          --  (since OUT and IN OUT parameters are now allowed for such calls).
+          --  The write-back of (in)-out parameters is handled by the back-end,
+          --  but the constraint checks generated when subtypes of formal and
+          --  actual don't match must be inserted in the form of assignments.
+ 
+          if Nkind (Original_Node (N)) = N_Function_Call then
+             pragma Assert (Ada_Version >= Ada_2012);
+             --  Functions with '[in] out' parameters are only allowed in Ada
+             --  2012.
+ 
+             --  We used to handle this by climbing up parents to a
+             --  non-statement/declaration and then simply making a call to
+             --  Insert_Actions_After (P, Post_Call), but that doesn't work
+             --  for Ada 2012. If we are in the middle of an expression, e.g.
+             --  the condition of an IF, this call would insert after the IF
+             --  statement, which is much too late to be doing the write back.
+             --  For example:
+ 
+             --     if Clobber (X) then
+             --        Put_Line (X'Img);
+             --     else
+             --        goto Junk
+             --     end if;
+ 
+             --  Now assume Clobber changes X, if we put the write back after
+             --  the IF, the Put_Line gets the wrong value and the goto causes
+             --  the write back to be skipped completely.
+ 
+             --  To deal with this, we replace the call by
+ 
+             --    do
+             --       Tnnn : constant function-result-type := function-call;
+             --       Post_Call actions
+             --    in
+             --       Tnnn;
+             --    end;
+ 
+             declare
+                Loc   : constant Source_Ptr := Sloc (N);
+                Tnnn  : constant Entity_Id := Make_Temporary (Loc, 'T');
+                FRTyp : constant Entity_Id := Etype (N);
+                Name  : constant Node_Id   := Relocate_Node (N);
+ 
+             begin
+                Prepend_To (Post_Call,
+                  Make_Object_Declaration (Loc,
+                    Defining_Identifier => Tnnn,
+                    Object_Definition   => New_Occurrence_Of (FRTyp, Loc),
+                    Constant_Present    => True,
+                    Expression          => Name));
+ 
+                Rewrite (N,
+                  Make_Expression_With_Actions (Loc,
+                    Actions    => Post_Call,
+                    Expression => New_Occurrence_Of (Tnnn, Loc)));
+ 
+                --  We don't want to just blindly call Analyze_And_Resolve
+                --  because that would cause unwanted recursion on the call.
+                --  So for a moment set the call as analyzed to prevent that
+                --  recursion, and get the rest analyzed properly, then reset
+                --  the analyzed flag, so our caller can continue.
+ 
+                Set_Analyzed (Name, True);
+                Analyze_And_Resolve (N, FRTyp);
+                Set_Analyzed (Name, False);
+             end;
+ 
+          --  If not the special Ada 2012 case of a function call, then we must
+          --  have the triggering statement of a triggering alternative or an
+          --  entry call alternative, and we can add the post call stuff to the
+          --  corresponding statement list.
+ 
+          else
+             pragma Assert (Nkind_In (Context, N_Entry_Call_Alternative,
+                                               N_Triggering_Alternative));
+ 
+             if Is_Non_Empty_List (Statements (Context)) then
+                Insert_List_Before_And_Analyze
+                  (First (Statements (Context)), Post_Call);
+             else
+                Set_Statements (Context, Post_Call);
+             end if;
+          end if;
+ 
+       --  A procedure call is always part of a declarative or statement list,
+       --  however a function call may appear nested within a construct. Most
+       --  cases of function call nesting are handled in the special case above.
+       --  The only exception is when the function call acts as an actual in a
+       --  procedure call. In this case the function call is in a list, but the
+       --  post-call actions must be inserted after the procedure call.
+ 
+       elsif Nkind (Context) = N_Procedure_Call_Statement then
+          Insert_Actions_After (Context, Post_Call);
+ 
+       --  Otherwise, normal case where N is in a statement sequence, just put
+       --  the post-call stuff after the call statement.
+ 
+       else
+          Insert_Actions_After (N, Post_Call);
+       end if;
+    end Insert_Post_Call_Actions;
+ 
     -----------------------
     -- Is_Null_Procedure --
     -----------------------
*************** package body Exp_Ch6 is
*** 7363,7369 ****
        Function_Call : Node_Id)
     is
        Acc_Type          : constant Entity_Id := Etype (Allocator);
!       Loc               : Source_Ptr;
        Func_Call         : Node_Id := Function_Call;
        Ref_Func_Call     : Node_Id;
        Function_Id       : Entity_Id;
--- 7826,7832 ----
        Function_Call : Node_Id)
     is
        Acc_Type          : constant Entity_Id := Etype (Allocator);
!       Loc               : constant Source_Ptr := Sloc (Function_Call);
        Func_Call         : Node_Id := Function_Call;
        Ref_Func_Call     : Node_Id;
        Function_Id       : Entity_Id;
*************** package body Exp_Ch6 is
*** 7388,7407 ****
           Func_Call := Expression (Func_Call);
        end if;
  
-       --  If the call has already been processed to add build-in-place actuals
-       --  then return. This should not normally occur in an allocator context,
-       --  but we add the protection as a defensive measure.
- 
-       if Is_Expanded_Build_In_Place_Call (Func_Call) then
-          return;
-       end if;
- 
        --  Mark the call as processed as a build-in-place call
  
        Set_Is_Expanded_Build_In_Place_Call (Func_Call);
  
-       Loc := Sloc (Function_Call);
- 
        if Is_Entity_Name (Name (Func_Call)) then
           Function_Id := Entity (Name (Func_Call));
  
--- 7851,7861 ----
           Func_Call := Expression (Func_Call);
        end if;
  
        --  Mark the call as processed as a build-in-place call
  
+       pragma Assert (not Is_Expanded_Build_In_Place_Call (Func_Call));
        Set_Is_Expanded_Build_In_Place_Call (Func_Call);
  
        if Is_Entity_Name (Name (Func_Call)) then
           Function_Id := Entity (Name (Func_Call));
  
*************** package body Exp_Ch6 is
*** 7422,7427 ****
--- 7876,7883 ----
  
        Return_Obj_Access := Make_Temporary (Loc, 'R');
        Set_Etype (Return_Obj_Access, Acc_Type);
+       Set_Can_Never_Be_Null (Acc_Type, False);
+       --  It gets initialized to null, so we can't have that
  
        --  When the result subtype is constrained, the return object is
        --  allocated on the caller side, and access to it is passed to the
*************** package body Exp_Ch6 is
*** 7433,7439 ****
        --  the characteristics of the full view.
  
        if Is_Constrained (Underlying_Type (Result_Subt)) then
- 
           --  Replace the initialized allocator of form "new T'(Func (...))"
           --  with an uninitialized allocator of form "new T", where T is the
           --  result subtype of the called function. The call to the function
--- 7889,7894 ----
*************** package body Exp_Ch6 is
*** 7456,7465 ****
           Rewrite (Allocator, New_Allocator);
  
           --  Initial value of the temp is the result of the uninitialized
!          --  allocator
  
           Temp_Init := Relocate_Node (Allocator);
  
           --  Indicate that caller allocates, and pass in the return object
  
           Alloc_Form := Caller_Allocation;
--- 7911,7927 ----
           Rewrite (Allocator, New_Allocator);
  
           --  Initial value of the temp is the result of the uninitialized
!          --  allocator. Unchecked_Convert is needed for T'Input where T is
!          --  derived from a controlled type.
  
           Temp_Init := Relocate_Node (Allocator);
  
+          if Nkind_In
+            (Function_Call, N_Type_Conversion, N_Unchecked_Type_Conversion)
+          then
+             Temp_Init := Unchecked_Convert_To (Acc_Type, Temp_Init);
+          end if;
+ 
           --  Indicate that caller allocates, and pass in the return object
  
           Alloc_Form := Caller_Allocation;
*************** package body Exp_Ch6 is
*** 7524,7529 ****
--- 7986,8000 ----
           Rewrite
             (Ref_Func_Call,
              OK_Convert_To (Acc_Type, Ref_Func_Call));
+ 
+       --  If the types are incompatible, we need an unchecked conversion. Note
+       --  that the full types will be compatible, but the types not visibly
+       --  compatible.
+ 
+       elsif Nkind_In
+         (Function_Call, N_Type_Conversion, N_Unchecked_Type_Conversion)
+       then
+          Ref_Func_Call := Unchecked_Convert_To (Acc_Type, Ref_Func_Call);
        end if;
  
        declare
*************** package body Exp_Ch6 is
*** 7535,7541 ****
           --  caller-allocates case, this is overwriting the temp with its
           --  initial value, which has no effect. In the callee-allocates case,
           --  this is setting the temp to point to the object allocated by the
!          --  callee.
  
           Actions : List_Id;
           --  Actions to be inserted. If there are no tasks, this is just the
--- 8006,8013 ----
           --  caller-allocates case, this is overwriting the temp with its
           --  initial value, which has no effect. In the callee-allocates case,
           --  this is setting the temp to point to the object allocated by the
!          --  callee. Unchecked_Convert is needed for T'Input where T is derived
!          --  from a controlled type.
  
           Actions : List_Id;
           --  Actions to be inserted. If there are no tasks, this is just the
*************** package body Exp_Ch6 is
*** 7595,7627 ****
     procedure Make_Build_In_Place_Call_In_Anonymous_Context
       (Function_Call : Node_Id)
     is
!       Loc             : Source_Ptr;
!       Func_Call       : Node_Id := Function_Call;
        Function_Id     : Entity_Id;
        Result_Subt     : Entity_Id;
        Return_Obj_Id   : Entity_Id;
        Return_Obj_Decl : Entity_Id;
  
-       Definite : 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 that if the return type is tagged we must always use the sec.
-       --  stack because the call may dispatch on result.
- 
     begin
-       --  Step past qualification, type conversion (which can occur in actual
-       --  parameter contexts), and unchecked conversion (which can occur in
-       --  cases of calls to 'Input).
- 
-       if Nkind_In (Func_Call, N_Qualified_Expression,
-                               N_Type_Conversion,
-                               N_Unchecked_Type_Conversion)
-       then
-          Func_Call := Expression (Func_Call);
-       end if;
- 
        --  If the call has already been processed to add build-in-place actuals
        --  then return. One place this can occur is for calls to build-in-place
        --  functions that occur within a call to a protected operation, where
--- 8067,8080 ----
     procedure Make_Build_In_Place_Call_In_Anonymous_Context
       (Function_Call : Node_Id)
     is
!       Loc             : constant Source_Ptr := Sloc (Function_Call);
!       Func_Call       : constant Node_Id := Unqual_Conv (Function_Call);
        Function_Id     : Entity_Id;
        Result_Subt     : Entity_Id;
        Return_Obj_Id   : Entity_Id;
        Return_Obj_Decl : Entity_Id;
  
     begin
        --  If the call has already been processed to add build-in-place actuals
        --  then return. One place this can occur is for calls to build-in-place
        --  functions that occur within a call to a protected operation, where
*************** package body Exp_Ch6 is
*** 7636,7643 ****
  
        Set_Is_Expanded_Build_In_Place_Call (Func_Call);
  
-       Loc := Sloc (Function_Call);
- 
        if Is_Entity_Name (Name (Func_Call)) then
           Function_Id := Entity (Name (Func_Call));
  
--- 8089,8094 ----
*************** package body Exp_Ch6 is
*** 7649,7658 ****
        end if;
  
        Result_Subt := Etype (Function_Id);
-       Definite :=
-         (Is_Definite_Subtype (Underlying_Type (Result_Subt))
-              and then not Is_Tagged_Type (Result_Subt))
-           or else not Requires_Transient_Scope (Underlying_Type (Result_Subt));
  
        --  If the build-in-place function returns a controlled object, then the
        --  object needs to be finalized immediately after the context. Since
--- 8100,8105 ----
*************** package body Exp_Ch6 is
*** 7694,7700 ****
        --  When the result subtype is definite, an object of the subtype is
        --  declared and an access value designating it is passed as an actual.
  
!       elsif Definite then
  
           --  Create a temporary object to hold the function result
  
--- 8141,8147 ----
        --  When the result subtype is definite, an object of the subtype is
        --  declared and an access value designating it is passed as an actual.
  
!       elsif Caller_Known_Size (Func_Call, Result_Subt) then
  
           --  Create a temporary object to hold the function result
  
*************** package body Exp_Ch6 is
*** 7766,7807 ****
       (Assign        : Node_Id;
        Function_Call : Node_Id)
     is
!       Lhs          : constant Node_Id := Name (Assign);
!       Func_Call    : Node_Id := Function_Call;
        Func_Id      : Entity_Id;
-       Loc          : Source_Ptr;
        Obj_Decl     : Node_Id;
        Obj_Id       : Entity_Id;
        Ptr_Typ      : Entity_Id;
        Ptr_Typ_Decl : Node_Id;
        New_Expr     : Node_Id;
        Result_Subt  : Entity_Id;
-       Target       : Node_Id;
  
     begin
-       --  Step past qualification or unchecked conversion (the latter can occur
-       --  in cases of calls to 'Input).
- 
-       if Nkind_In (Func_Call, N_Qualified_Expression,
-                               N_Unchecked_Type_Conversion)
-       then
-          Func_Call := Expression (Func_Call);
-       end if;
- 
-       --  If the call has already been processed to add build-in-place actuals
-       --  then return. This should not normally occur in an assignment context,
-       --  but we add the protection as a defensive measure.
- 
-       if Is_Expanded_Build_In_Place_Call (Func_Call) then
-          return;
-       end if;
- 
        --  Mark the call as processed as a build-in-place call
  
        Set_Is_Expanded_Build_In_Place_Call (Func_Call);
  
-       Loc := Sloc (Function_Call);
- 
        if Is_Entity_Name (Name (Func_Call)) then
           Func_Id := Entity (Name (Func_Call));
  
--- 8213,8235 ----
       (Assign        : Node_Id;
        Function_Call : Node_Id)
     is
!       Func_Call    : constant Node_Id    := Unqual_Conv (Function_Call);
!       Lhs          : constant Node_Id    := Name (Assign);
!       Loc          : constant Source_Ptr := Sloc (Function_Call);
        Func_Id      : Entity_Id;
        Obj_Decl     : Node_Id;
        Obj_Id       : Entity_Id;
        Ptr_Typ      : Entity_Id;
        Ptr_Typ_Decl : Node_Id;
        New_Expr     : Node_Id;
        Result_Subt  : Entity_Id;
  
     begin
        --  Mark the call as processed as a build-in-place call
  
+       pragma Assert (not Is_Expanded_Build_In_Place_Call (Func_Call));
        Set_Is_Expanded_Build_In_Place_Call (Func_Call);
  
        if Is_Entity_Name (Name (Func_Call)) then
           Func_Id := Entity (Name (Func_Call));
  
*************** package body Exp_Ch6 is
*** 7859,7864 ****
--- 8287,8300 ----
  
        New_Expr := Make_Reference (Loc, Relocate_Node (Func_Call));
  
+       --  Add a conversion if it's the wrong type
+ 
+       if Etype (New_Expr) /= Ptr_Typ then
+          New_Expr :=
+            Make_Unchecked_Type_Conversion (Loc,
+              New_Occurrence_Of (Ptr_Typ, Loc), New_Expr);
+       end if;
+ 
        Obj_Id := Make_Temporary (Loc, 'R', New_Expr);
        Set_Etype (Obj_Id, Ptr_Typ);
        Set_Is_Known_Non_Null (Obj_Id);
*************** package body Exp_Ch6 is
*** 7871,7896 ****
        Insert_After_And_Analyze (Ptr_Typ_Decl, Obj_Decl);
  
        Rewrite (Assign, Make_Null_Statement (Loc));
- 
-       --  Retrieve the target of the assignment
- 
-       if Nkind (Lhs) = N_Selected_Component then
-          Target := Selector_Name (Lhs);
-       elsif Nkind (Lhs) = N_Type_Conversion then
-          Target := Expression (Lhs);
-       else
-          Target := Lhs;
-       end if;
- 
-       --  If we are assigning to a return object or this is an expression of
-       --  an extension aggregate, the target should either be an identifier
-       --  or a simple expression. All other cases imply a different scenario.
- 
-       if Nkind (Target) in N_Has_Entity then
-          Target := Entity (Target);
-       else
-          return;
-       end if;
     end Make_Build_In_Place_Call_In_Assignment;
  
     ----------------------------------------------------
--- 8307,8312 ----
*************** package body Exp_Ch6 is
*** 7901,7945 ****
       (Obj_Decl      : Node_Id;
        Function_Call : Node_Id)
     is
!       Obj_Def_Id : constant Entity_Id  := Defining_Identifier (Obj_Decl);
!       Encl_Func  : constant Entity_Id  := Enclosing_Subprogram (Obj_Def_Id);
!       Loc        : constant Source_Ptr := Sloc (Function_Call);
!       Obj_Loc    : constant Source_Ptr := Sloc (Obj_Decl);
  
        Call_Deref      : Node_Id;
        Caller_Object   : Node_Id;
        Def_Id          : Entity_Id;
        Fmaster_Actual  : Node_Id := Empty;
-       Func_Call       : Node_Id := Function_Call;
-       Function_Id     : Entity_Id;
        Pool_Actual     : Node_Id;
        Ptr_Typ         : Entity_Id;
        Ptr_Typ_Decl    : Node_Id;
        Pass_Caller_Acc : Boolean := False;
        Res_Decl        : Node_Id;
-       Result_Subt     : Entity_Id;
  
!       Definite : 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 that if the return type is tagged we must always use the sec.
!       --  stack because the call may dispatch on result.
! 
!    begin
!       --  Step past qualification or unchecked conversion (the latter can occur
!       --  in cases of calls to 'Input).
  
!       if Nkind_In (Func_Call, N_Qualified_Expression,
!                               N_Unchecked_Type_Conversion)
!       then
!          Func_Call := Expression (Func_Call);
!       end if;
  
        --  If the call has already been processed to add build-in-place actuals
!       --  then return. This should not normally occur in an object declaration,
!       --  but we add the protection as a defensive measure.
  
        if Is_Expanded_Build_In_Place_Call (Func_Call) then
           return;
--- 8317,8378 ----
       (Obj_Decl      : Node_Id;
        Function_Call : Node_Id)
     is
!       function Get_Function_Id (Func_Call : Node_Id) return Entity_Id;
!       --  Get the value of Function_Id, below
! 
!       ---------------------
!       -- Get_Function_Id --
!       ---------------------
! 
!       function Get_Function_Id (Func_Call : Node_Id) return Entity_Id is
!       begin
!          if Is_Entity_Name (Name (Func_Call)) then
!             return Entity (Name (Func_Call));
! 
!          elsif Nkind (Name (Func_Call)) = N_Explicit_Dereference then
!             return Etype (Name (Func_Call));
! 
!          else
!             raise Program_Error;
!          end if;
!       end Get_Function_Id;
! 
!       --  Local variables
! 
!       Func_Call   : constant Node_Id    := Unqual_Conv (Function_Call);
!       Function_Id : constant Entity_Id  := Get_Function_Id (Func_Call);
!       Loc         : constant Source_Ptr := Sloc (Function_Call);
!       Obj_Loc     : constant Source_Ptr := Sloc (Obj_Decl);
!       Obj_Def_Id  : constant Entity_Id  := Defining_Identifier (Obj_Decl);
!       Obj_Typ     : constant Entity_Id  := Etype (Obj_Def_Id);
!       Encl_Func   : constant Entity_Id  := Enclosing_Subprogram (Obj_Def_Id);
!       Result_Subt : constant Entity_Id  := Etype (Function_Id);
  
        Call_Deref      : Node_Id;
        Caller_Object   : Node_Id;
        Def_Id          : Entity_Id;
+       Designated_Type : Entity_Id;
        Fmaster_Actual  : Node_Id := Empty;
        Pool_Actual     : Node_Id;
        Ptr_Typ         : Entity_Id;
        Ptr_Typ_Decl    : Node_Id;
        Pass_Caller_Acc : Boolean := False;
        Res_Decl        : Node_Id;
  
!       Definite : constant Boolean :=
!                    Caller_Known_Size (Func_Call, Result_Subt)
!                      and then not Is_Class_Wide_Type (Obj_Typ);
!       --  In the case of "X : T'Class := F(...);", where F returns a
!       --  Caller_Known_Size (specific) tagged type, we treat it as
!       --  indefinite, because the code for the Definite case below sets the
!       --  initialization expression of the object to Empty, which would be
!       --  illegal Ada, and would cause gigi to misallocate X.
  
!    --  Start of processing for Make_Build_In_Place_Call_In_Object_Declaration
  
+    begin
        --  If the call has already been processed to add build-in-place actuals
!       --  then return.
  
        if Is_Expanded_Build_In_Place_Call (Func_Call) then
           return;
*************** package body Exp_Ch6 is
*** 7949,7977 ****
  
        Set_Is_Expanded_Build_In_Place_Call (Func_Call);
  
!       if Is_Entity_Name (Name (Func_Call)) then
!          Function_Id := Entity (Name (Func_Call));
! 
!       elsif Nkind (Name (Func_Call)) = N_Explicit_Dereference then
!          Function_Id := Etype (Name (Func_Call));
! 
!       else
!          raise Program_Error;
!       end if;
! 
!       Result_Subt := Etype (Function_Id);
!       Definite :=
!         (Is_Definite_Subtype (Underlying_Type (Result_Subt))
!              and then not Is_Tagged_Type (Result_Subt))
!           or else not Requires_Transient_Scope (Underlying_Type (Result_Subt));
! 
!       --  Create an access type designating the function's result subtype. We
!       --  use the type of the original call because it may be a call to an
        --  inherited operation, which the expansion has replaced with the parent
        --  operation that yields the parent type. Note that this access type
        --  must be declared before we establish a transient scope, so that it
        --  receives the proper accessibility level.
  
        Ptr_Typ := Make_Temporary (Loc, 'A');
        Ptr_Typ_Decl :=
          Make_Full_Type_Declaration (Loc,
--- 8382,8403 ----
  
        Set_Is_Expanded_Build_In_Place_Call (Func_Call);
  
!       --  Create an access type designating the function's result subtype.
!       --  We use the type of the original call because it may be a call to an
        --  inherited operation, which the expansion has replaced with the parent
        --  operation that yields the parent type. Note that this access type
        --  must be declared before we establish a transient scope, so that it
        --  receives the proper accessibility level.
  
+       if Is_Class_Wide_Type (Obj_Typ)
+         and then not Is_Interface (Obj_Typ)
+         and then not Is_Class_Wide_Type (Etype (Function_Call))
+       then
+          Designated_Type := Obj_Typ;
+       else
+          Designated_Type := Etype (Function_Call);
+       end if;
+ 
        Ptr_Typ := Make_Temporary (Loc, 'A');
        Ptr_Typ_Decl :=
          Make_Full_Type_Declaration (Loc,
*************** package body Exp_Ch6 is
*** 7980,8028 ****
              Make_Access_To_Object_Definition (Loc,
                All_Present        => True,
                Subtype_Indication =>
!                 New_Occurrence_Of (Etype (Function_Call), Loc)));
  
        --  The access type and its accompanying object must be inserted after
        --  the object declaration in the constrained case, so that the function
!       --  call can be passed access to the object. In the indefinite case,
!       --  or if the object declaration is for a return object, the access type
!       --  and object must be inserted before the object, since the object
        --  declaration is rewritten to be a renaming of a dereference of the
        --  access object. Note: we need to freeze Ptr_Typ explicitly, because
!       --  the result object is in a different (transient) scope, so won't
!       --  cause freezing.
  
!       if Definite
!         and then not Is_Return_Object (Defining_Identifier (Obj_Decl))
!       then
!          Insert_After_And_Analyze (Obj_Decl, Ptr_Typ_Decl);
        else
           Insert_Action (Obj_Decl, Ptr_Typ_Decl);
        end if;
  
        --  Force immediate freezing of Ptr_Typ because Res_Decl will be
        --  elaborated in an inner (transient) scope and thus won't cause
!       --  freezing by itself.
  
!       declare
!          Ptr_Typ_Freeze_Ref : constant Node_Id :=
!                                 New_Occurrence_Of (Ptr_Typ, Loc);
!       begin
!          Set_Parent (Ptr_Typ_Freeze_Ref, Ptr_Typ_Decl);
!          Freeze_Expression (Ptr_Typ_Freeze_Ref);
!       end;
  
        --  If the object is a return object of an enclosing build-in-place
        --  function, then the implicit build-in-place parameters of the
        --  enclosing function are simply passed along to the called function.
        --  (Unfortunately, this won't cover the case of extension aggregates
        --  where the ancestor part is a build-in-place indefinite function
!       --  call that should be passed along the caller's parameters. Currently
!       --  those get mishandled by reassigning the result of the call to the
!       --  aggregate return object, when the call result should really be
!       --  directly built in place in the aggregate and not in a temporary. ???)
  
!       if Is_Return_Object (Defining_Identifier (Obj_Decl)) then
           Pass_Caller_Acc := True;
  
           --  When the enclosing function has a BIP_Alloc_Form formal then we
--- 8406,8507 ----
              Make_Access_To_Object_Definition (Loc,
                All_Present        => True,
                Subtype_Indication =>
!                 New_Occurrence_Of (Designated_Type, Loc)));
  
        --  The access type and its accompanying object must be inserted after
        --  the object declaration in the constrained case, so that the function
!       --  call can be passed access to the object. In the indefinite case, or
!       --  if the object declaration is for a return object, the access type and
!       --  object must be inserted before the object, since the object
        --  declaration is rewritten to be a renaming of a dereference of the
        --  access object. Note: we need to freeze Ptr_Typ explicitly, because
!       --  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
!          --  the indirect call is generated (including the definition of a
!          --  local pointer to the object).  The address clause may come from
!          --  an aspect specification or from an explicit attribute
!          --  specification appearing after the object declaration. These two
!          --  cases require different processing.
! 
!          if Has_Aspect (Obj_Def_Id, Aspect_Address) then
! 
!             --  Skip non-delayed pragmas that correspond to other aspects, if
!             --  any, to find proper insertion point for freeze node of object.
! 
!             declare
!                D : Node_Id := Obj_Decl;
!                N : Node_Id := Next (D);
! 
!             begin
!                while Present (N)
!                  and then Nkind_In (N, N_Pragma, N_Attribute_Reference)
!                loop
!                   Analyze (N);
!                   D := N;
!                   Next (N);
!                end loop;
! 
!                Insert_After (D, Ptr_Typ_Decl);
! 
!                --  Freeze object before pointer declaration, to ensure that
!                --  generated attribute for address is inserted at the proper
!                --  place.
! 
!                Freeze_Before (Ptr_Typ_Decl, Obj_Def_Id);
!             end;
! 
!             Analyze (Ptr_Typ_Decl);
! 
!          elsif Present (Following_Address_Clause (Obj_Decl)) then
! 
!             --  Locate explicit address clause, which may also follow pragmas
!             --  generated by other aspect specifications.
! 
!             declare
!                Addr : constant Node_Id := Following_Address_Clause (Obj_Decl);
!                D    : Node_Id := Next (Obj_Decl);
! 
!             begin
!                while Present (D) loop
!                   Analyze (D);
!                   exit when D = Addr;
!                   Next (D);
!                end loop;
! 
!                Insert_After_And_Analyze (Addr, Ptr_Typ_Decl);
!             end;
! 
!          else
!             Insert_After_And_Analyze (Obj_Decl, Ptr_Typ_Decl);
!          end if;
        else
           Insert_Action (Obj_Decl, Ptr_Typ_Decl);
        end if;
  
        --  Force immediate freezing of Ptr_Typ because Res_Decl will be
        --  elaborated in an inner (transient) scope and thus won't cause
!       --  freezing by itself. It's not an itype, but it needs to be frozen
!       --  inside the current subprogram (see Freeze_Outside in freeze.adb).
  
!       Freeze_Itype (Ptr_Typ, Ptr_Typ_Decl);
  
        --  If the object is a return object of an enclosing build-in-place
        --  function, then the implicit build-in-place parameters of the
        --  enclosing function are simply passed along to the called function.
        --  (Unfortunately, this won't cover the case of extension aggregates
        --  where the ancestor part is a build-in-place indefinite function
!       --  call that should be passed along the caller's parameters.
!       --  Currently those get mishandled by reassigning the result of the
!       --  call to the aggregate return object, when the call result should
!       --  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
*************** package body Exp_Ch6 is
*** 8033,8039 ****
              if RTE_Available (RE_Root_Storage_Pool_Ptr) then
                 Pool_Actual :=
                   New_Occurrence_Of
!                    (Build_In_Place_Formal (Encl_Func, BIP_Storage_Pool), Loc);
  
              --  The build-in-place pool formal is not built on e.g. ZFP
  
--- 8512,8519 ----
              if RTE_Available (RE_Root_Storage_Pool_Ptr) then
                 Pool_Actual :=
                   New_Occurrence_Of
!                    (Build_In_Place_Formal
!                      (Encl_Func, BIP_Storage_Pool), Loc);
  
              --  The build-in-place pool formal is not built on e.g. ZFP
  
*************** package body Exp_Ch6 is
*** 8071,8078 ****
             Make_Unchecked_Type_Conversion (Loc,
               Subtype_Mark =>
                 New_Occurrence_Of
!                  (Etype
!                     (Build_In_Place_Formal (Function_Id, BIP_Object_Access)),
                    Loc),
               Expression   =>
                 New_Occurrence_Of
--- 8551,8558 ----
             Make_Unchecked_Type_Conversion (Loc,
               Subtype_Mark =>
                 New_Occurrence_Of
!                  (Etype (Build_In_Place_Formal
!                     (Function_Id, BIP_Object_Access)),
                    Loc),
               Expression   =>
                 New_Occurrence_Of
*************** package body Exp_Ch6 is
*** 8093,8110 ****
           --  When the function has a controlling result, an allocation-form
           --  parameter must be passed indicating that the caller is allocating
           --  the result object. This is needed because such a function can be
!          --  called as a dispatching operation and must be treated similarly
!          --  to functions with indefinite result subtypes.
  
           Add_Unconstrained_Actuals_To_Build_In_Place_Call
             (Func_Call, Function_Id, Alloc_Form => Caller_Allocation);
  
        --  The allocation for indefinite library-level objects occurs on the
        --  heap as opposed to the secondary stack. This accommodates DLLs where
!       --  the secondary stack is destroyed after each library unload. This is
!       --  a hybrid mechanism where a stack-allocated object lives on the heap.
  
!       elsif Is_Library_Level_Entity (Defining_Identifier (Obj_Decl))
          and then not Restriction_Active (No_Implicit_Heap_Allocations)
        then
           Add_Unconstrained_Actuals_To_Build_In_Place_Call
--- 8573,8590 ----
           --  When the function has a controlling result, an allocation-form
           --  parameter must be passed indicating that the caller is allocating
           --  the result object. This is needed because such a function can be
!          --  called as a dispatching operation and must be treated similarly to
!          --  functions with indefinite result subtypes.
  
           Add_Unconstrained_Actuals_To_Build_In_Place_Call
             (Func_Call, Function_Id, Alloc_Form => Caller_Allocation);
  
        --  The allocation for indefinite library-level objects occurs on the
        --  heap as opposed to the secondary stack. This accommodates DLLs where
!       --  the secondary stack is destroyed after each library unload. This is a
!       --  hybrid mechanism where a stack-allocated object lives on the heap.
  
!       elsif Is_Library_Level_Entity (Obj_Def_Id)
          and then not Restriction_Active (No_Implicit_Heap_Allocations)
        then
           Add_Unconstrained_Actuals_To_Build_In_Place_Call
*************** package body Exp_Ch6 is
*** 8138,8144 ****
             (Func_Call, Function_Id, Alloc_Form => Secondary_Stack);
           Caller_Object := Empty;
  
!          Establish_Transient_Scope (Obj_Decl, Sec_Stack => True);
        end if;
  
        --  Pass along any finalization master actual, which is needed in the
--- 8618,8624 ----
             (Func_Call, Function_Id, Alloc_Form => Secondary_Stack);
           Caller_Object := Empty;
  
!          Establish_Transient_Scope (Obj_Decl, Manage_Sec_Stack => True);
        end if;
  
        --  Pass along any finalization master actual, which is needed in the
*************** package body Exp_Ch6 is
*** 8168,8174 ****
        end if;
  
        Add_Access_Actual_To_Build_In_Place_Call
!         (Func_Call, Function_Id, Caller_Object, Is_Access => Pass_Caller_Acc);
  
        --  Finally, create an access object initialized to a reference to the
        --  function call. We know this access value cannot be null, so mark the
--- 8648,8657 ----
        end if;
  
        Add_Access_Actual_To_Build_In_Place_Call
!         (Func_Call,
!          Function_Id,
!          Caller_Object,
!          Is_Access => Pass_Caller_Acc);
  
        --  Finally, create an access object initialized to a reference to the
        --  function call. We know this access value cannot be null, so mark the
*************** package body Exp_Ch6 is
*** 8178,8190 ****
        Set_Etype (Def_Id, Ptr_Typ);
        Set_Is_Known_Non_Null (Def_Id);
  
!       Res_Decl :=
!         Make_Object_Declaration (Loc,
!           Defining_Identifier => Def_Id,
!           Constant_Present    => True,
!           Object_Definition   => New_Occurrence_Of (Ptr_Typ, Loc),
!           Expression          =>
!             Make_Reference (Loc, Relocate_Node (Func_Call)));
  
        Insert_After_And_Analyze (Ptr_Typ_Decl, Res_Decl);
  
--- 8661,8687 ----
        Set_Etype (Def_Id, Ptr_Typ);
        Set_Is_Known_Non_Null (Def_Id);
  
!       if Nkind_In (Function_Call, N_Type_Conversion,
!                                   N_Unchecked_Type_Conversion)
!       then
!          Res_Decl :=
!            Make_Object_Declaration (Loc,
!              Defining_Identifier => Def_Id,
!              Constant_Present    => True,
!              Object_Definition   => New_Occurrence_Of (Ptr_Typ, Loc),
!              Expression          =>
!                Make_Unchecked_Type_Conversion (Loc,
!                  New_Occurrence_Of (Ptr_Typ, Loc),
!                  Make_Reference (Loc, Relocate_Node (Func_Call))));
!       else
!          Res_Decl :=
!            Make_Object_Declaration (Loc,
!              Defining_Identifier => Def_Id,
!              Constant_Present    => True,
!              Object_Definition   => New_Occurrence_Of (Ptr_Typ, Loc),
!              Expression          =>
!                Make_Reference (Loc, Relocate_Node (Func_Call)));
!       end if;
  
        Insert_After_And_Analyze (Ptr_Typ_Decl, Res_Decl);
  
*************** package body Exp_Ch6 is
*** 8192,8200 ****
        --  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 (Defining_Identifier (Obj_Decl))
!       then
           --  The related object declaration is encased in a transient block
           --  because the build-in-place function call contains at least one
           --  nested function call that produces a controlled transient
--- 8689,8696 ----
        --  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
           --  nested function call that produces a controlled transient
*************** package body Exp_Ch6 is
*** 8229,8237 ****
           Rewrite (Obj_Decl,
             Make_Object_Renaming_Declaration (Obj_Loc,
               Defining_Identifier => Make_Temporary (Obj_Loc, 'D'),
!              Subtype_Mark        => New_Occurrence_Of (Result_Subt, Obj_Loc),
               Name                => Call_Deref));
  
           Set_Renamed_Object (Defining_Identifier (Obj_Decl), Call_Deref);
  
           --  If the original entity comes from source, then mark the new
--- 8725,8737 ----
           Rewrite (Obj_Decl,
             Make_Object_Renaming_Declaration (Obj_Loc,
               Defining_Identifier => Make_Temporary (Obj_Loc, 'D'),
!              Subtype_Mark        =>
!                New_Occurrence_Of (Designated_Type, Obj_Loc),
               Name                => Call_Deref));
  
+          --  At this point, Defining_Identifier (Obj_Decl) is no longer equal
+          --  to Obj_Def_Id.
+ 
           Set_Renamed_Object (Defining_Identifier (Obj_Decl), Call_Deref);
  
           --  If the original entity comes from source, then mark the new
*************** package body Exp_Ch6 is
*** 8245,8299 ****
           end if;
  
           Analyze (Obj_Decl);
  
!          --  Replace the internal identifier of the renaming declaration's
!          --  entity with identifier of the original object entity. We also have
!          --  to exchange the entities containing their defining identifiers to
!          --  ensure the correct replacement of the object declaration by the
!          --  object renaming declaration to avoid homograph conflicts (since
!          --  the object declaration's defining identifier was already entered
!          --  in current scope). The Next_Entity links of the two entities also
!          --  have to be swapped since the entities are part of the return
!          --  scope's entity list and the list structure would otherwise be
!          --  corrupted. Finally, the homonym chain must be preserved as well.
  
!          declare
!             Ren_Id  : constant Entity_Id := Defining_Entity (Obj_Decl);
!             Next_Id : constant Entity_Id := Next_Entity (Ren_Id);
  
!          begin
!             Set_Chars (Ren_Id, Chars (Obj_Def_Id));
  
!             --  Swap next entity links in preparation for exchanging entities
  
!             Set_Next_Entity (Ren_Id, Next_Entity (Obj_Def_Id));
!             Set_Next_Entity (Obj_Def_Id, Next_Id);
!             Set_Homonym     (Ren_Id, Homonym (Obj_Def_Id));
  
!             Exchange_Entities (Ren_Id, Obj_Def_Id);
  
!             --  Preserve source indication of original declaration, so that
!             --  xref information is properly generated for the right entity.
  
!             Preserve_Comes_From_Source (Obj_Decl, Original_Node (Obj_Decl));
!             Preserve_Comes_From_Source (Obj_Def_Id, Original_Node (Obj_Decl));
  
!             Set_Comes_From_Source (Ren_Id, False);
!          end;
        end if;
  
!       --  If the object entity has a class-wide Etype, then we need to change
!       --  it to the result subtype of the function call, because otherwise the
!       --  object will be class-wide without an explicit initialization and
!       --  won't be allocated properly by the back end. It seems unclean to make
!       --  such a revision to the type at this point, and we should try to
!       --  improve this treatment when build-in-place functions with class-wide
!       --  results are implemented. ???
  
!       if Is_Class_Wide_Type (Etype (Defining_Identifier (Obj_Decl))) then
!          Set_Etype (Defining_Identifier (Obj_Decl), Result_Subt);
        end if;
!    end Make_Build_In_Place_Call_In_Object_Declaration;
  
     --------------------------------------------
     -- Make_CPP_Constructor_Call_In_Allocator --
--- 8745,8933 ----
           end if;
  
           Analyze (Obj_Decl);
+          Replace_Renaming_Declaration_Id
+            (Obj_Decl, Original_Node (Obj_Decl));
+       end if;
+    end Make_Build_In_Place_Call_In_Object_Declaration;
  
!    -------------------------------------------------
!    -- Make_Build_In_Place_Iface_Call_In_Allocator --
!    -------------------------------------------------
  
!    procedure Make_Build_In_Place_Iface_Call_In_Allocator
!      (Allocator     : Node_Id;
!       Function_Call : Node_Id)
!    is
!       BIP_Func_Call : constant Node_Id :=
!                         Unqual_BIP_Iface_Function_Call (Function_Call);
!       Loc           : constant Source_Ptr := Sloc (Function_Call);
  
!       Anon_Type : Entity_Id;
!       Tmp_Decl  : Node_Id;
!       Tmp_Id    : Entity_Id;
  
!    begin
!       --  No action of the call has already been processed
  
!       if Is_Expanded_Build_In_Place_Call (BIP_Func_Call) then
!          return;
!       end if;
  
!       Tmp_Id := Make_Temporary (Loc, 'D');
  
!       --  Insert a temporary before N initialized with the BIP function call
!       --  without its enclosing type conversions and analyze it without its
!       --  expansion. This temporary facilitates us reusing the BIP machinery,
!       --  which takes care of adding the extra build-in-place actuals and
!       --  transforms this object declaration into an object renaming
!       --  declaration.
  
!       Anon_Type := Create_Itype (E_Anonymous_Access_Type, Function_Call);
!       Set_Directly_Designated_Type (Anon_Type, Etype (BIP_Func_Call));
!       Set_Etype (Anon_Type, Anon_Type);
  
!       Tmp_Decl :=
!         Make_Object_Declaration (Loc,
!           Defining_Identifier => Tmp_Id,
!           Object_Definition   => New_Occurrence_Of (Anon_Type, Loc),
!           Expression          =>
!             Make_Allocator (Loc,
!               Expression =>
!                 Make_Qualified_Expression (Loc,
!                   Subtype_Mark =>
!                     New_Occurrence_Of (Etype (BIP_Func_Call), Loc),
!                   Expression   => New_Copy_Tree (BIP_Func_Call))));
! 
!       Expander_Mode_Save_And_Set (False);
!       Insert_Action (Allocator, Tmp_Decl);
!       Expander_Mode_Restore;
! 
!       Make_Build_In_Place_Call_In_Allocator
!         (Allocator     => Expression (Tmp_Decl),
!          Function_Call => Expression (Expression (Tmp_Decl)));
! 
!       Rewrite (Allocator, New_Occurrence_Of (Tmp_Id, Loc));
!    end Make_Build_In_Place_Iface_Call_In_Allocator;
! 
!    ---------------------------------------------------------
!    -- Make_Build_In_Place_Iface_Call_In_Anonymous_Context --
!    ---------------------------------------------------------
! 
!    procedure Make_Build_In_Place_Iface_Call_In_Anonymous_Context
!      (Function_Call : Node_Id)
!    is
!       BIP_Func_Call : constant Node_Id :=
!                         Unqual_BIP_Iface_Function_Call (Function_Call);
!       Loc           : constant Source_Ptr := Sloc (Function_Call);
! 
!       Tmp_Decl : Node_Id;
!       Tmp_Id   : Entity_Id;
! 
!    begin
!       --  No action of the call has already been processed
! 
!       if Is_Expanded_Build_In_Place_Call (BIP_Func_Call) then
!          return;
        end if;
  
!       pragma Assert (Needs_Finalization (Etype (BIP_Func_Call)));
  
!       --  Insert a temporary before the call initialized with function call to
!       --  reuse the BIP machinery which takes care of adding the extra build-in
!       --  place actuals and transforms this object declaration into an object
!       --  renaming declaration.
! 
!       Tmp_Id := Make_Temporary (Loc, 'D');
! 
!       Tmp_Decl :=
!         Make_Object_Declaration (Loc,
!           Defining_Identifier => Tmp_Id,
!           Object_Definition   =>
!             New_Occurrence_Of (Etype (Function_Call), Loc),
!           Expression          => Relocate_Node (Function_Call));
! 
!       Expander_Mode_Save_And_Set (False);
!       Insert_Action (Function_Call, Tmp_Decl);
!       Expander_Mode_Restore;
! 
!       Make_Build_In_Place_Iface_Call_In_Object_Declaration
!         (Obj_Decl      => Tmp_Decl,
!          Function_Call => Expression (Tmp_Decl));
!    end Make_Build_In_Place_Iface_Call_In_Anonymous_Context;
! 
!    ----------------------------------------------------------
!    -- Make_Build_In_Place_Iface_Call_In_Object_Declaration --
!    ----------------------------------------------------------
! 
!    procedure Make_Build_In_Place_Iface_Call_In_Object_Declaration
!      (Obj_Decl      : Node_Id;
!       Function_Call : Node_Id)
!    is
!       BIP_Func_Call : constant Node_Id :=
!                         Unqual_BIP_Iface_Function_Call (Function_Call);
!       Loc           : constant Source_Ptr := Sloc (Function_Call);
!       Obj_Id        : constant Entity_Id := Defining_Entity (Obj_Decl);
! 
!       Tmp_Decl : Node_Id;
!       Tmp_Id   : Entity_Id;
! 
!    begin
!       --  No action of the call has already been processed
! 
!       if Is_Expanded_Build_In_Place_Call (BIP_Func_Call) then
!          return;
        end if;
! 
!       Tmp_Id := Make_Temporary (Loc, 'D');
! 
!       --  Insert a temporary before N initialized with the BIP function call
!       --  without its enclosing type conversions and analyze it without its
!       --  expansion. This temporary facilitates us reusing the BIP machinery,
!       --  which takes care of adding the extra build-in-place actuals and
!       --  transforms this object declaration into an object renaming
!       --  declaration.
! 
!       Tmp_Decl :=
!         Make_Object_Declaration (Loc,
!           Defining_Identifier => Tmp_Id,
!           Object_Definition   =>
!             New_Occurrence_Of (Etype (BIP_Func_Call), Loc),
!           Expression          => New_Copy_Tree (BIP_Func_Call));
! 
!       Expander_Mode_Save_And_Set (False);
!       Insert_Action (Obj_Decl, Tmp_Decl);
!       Expander_Mode_Restore;
! 
!       Make_Build_In_Place_Call_In_Object_Declaration
!         (Obj_Decl      => Tmp_Decl,
!          Function_Call => Expression (Tmp_Decl));
! 
!       pragma Assert (Nkind (Tmp_Decl) = N_Object_Renaming_Declaration);
! 
!       --  Replace the original build-in-place function call by a reference to
!       --  the resulting temporary object renaming declaration. In this way,
!       --  all the interface conversions performed in the original Function_Call
!       --  on the build-in-place object are preserved.
! 
!       Rewrite (BIP_Func_Call, New_Occurrence_Of (Tmp_Id, Loc));
! 
!       --  Replace the original object declaration by an internal object
!       --  renaming declaration. This leaves the generated code more clean (the
!       --  build-in-place function call in an object renaming declaration and
!       --  displacements of the pointer to the build-in-place object in another
!       --  renaming declaration) and allows us to invoke the routine that takes
!       --  care of replacing the identifier of the renaming declaration (routine
!       --  originally developed for the regular build-in-place management).
! 
!       Rewrite (Obj_Decl,
!         Make_Object_Renaming_Declaration (Loc,
!           Defining_Identifier => Make_Temporary (Loc, 'D'),
!           Subtype_Mark        => New_Occurrence_Of (Etype (Obj_Id), Loc),
!           Name                => Function_Call));
!       Analyze (Obj_Decl);
! 
!       Replace_Renaming_Declaration_Id (Obj_Decl, Original_Node (Obj_Decl));
!    end Make_Build_In_Place_Iface_Call_In_Object_Declaration;
  
     --------------------------------------------
     -- Make_CPP_Constructor_Call_In_Allocator --
*************** package body Exp_Ch6 is
*** 8548,8553 ****
--- 9182,9222 ----
        end if;
     end Needs_Result_Accessibility_Level;
  
+    -------------------------------------
+    -- Replace_Renaming_Declaration_Id --
+    -------------------------------------
+ 
+    procedure Replace_Renaming_Declaration_Id
+       (New_Decl  : Node_Id;
+        Orig_Decl : Node_Id)
+    is
+       New_Id  : constant Entity_Id := Defining_Entity (New_Decl);
+       Orig_Id : constant Entity_Id := Defining_Entity (Orig_Decl);
+ 
+    begin
+       Set_Chars (New_Id, Chars (Orig_Id));
+ 
+       --  Swap next entity links in preparation for exchanging entities
+ 
+       declare
+          Next_Id : constant Entity_Id := Next_Entity (New_Id);
+       begin
+          Set_Next_Entity (New_Id, Next_Entity (Orig_Id));
+          Set_Next_Entity (Orig_Id, Next_Id);
+       end;
+ 
+       Set_Homonym (New_Id, Homonym (Orig_Id));
+       Exchange_Entities (New_Id, Orig_Id);
+ 
+       --  Preserve source indication of original declaration, so that xref
+       --  information is properly generated for the right entity.
+ 
+       Preserve_Comes_From_Source (New_Decl, Orig_Decl);
+       Preserve_Comes_From_Source (Orig_Id, Orig_Decl);
+ 
+       Set_Comes_From_Source (New_Id, False);
+    end Replace_Renaming_Declaration_Id;
+ 
     ---------------------------------
     -- Rewrite_Function_Call_For_C --
     ---------------------------------
*************** package body Exp_Ch6 is
*** 8701,8704 ****
--- 9370,9479 ----
        end loop;
     end Set_Enclosing_Sec_Stack_Return;
  
+    ------------------------------------
+    -- Unqual_BIP_Iface_Function_Call --
+    ------------------------------------
+ 
+    function Unqual_BIP_Iface_Function_Call (Expr : Node_Id) return Node_Id is
+       Has_Pointer_Displacement : Boolean := False;
+       On_Object_Declaration    : Boolean := False;
+       --  Remember if processing the renaming expressions on recursion we have
+       --  traversed an object declaration, since we can traverse many object
+       --  declaration renamings but just one regular object declaration.
+ 
+       function Unqual_BIP_Function_Call (Expr : Node_Id) return Node_Id;
+       --  Search for a build-in-place function call skipping any qualification
+       --  including qualified expressions, type conversions, references, calls
+       --  to displace the pointer to the object, and renamings. Return Empty if
+       --  no build-in-place function call is found.
+ 
+       ------------------------------
+       -- Unqual_BIP_Function_Call --
+       ------------------------------
+ 
+       function Unqual_BIP_Function_Call (Expr : Node_Id) return Node_Id is
+       begin
+          --  Recurse to handle case of multiple levels of qualification and/or
+          --  conversion.
+ 
+          if Nkind_In (Expr, N_Qualified_Expression,
+                             N_Type_Conversion,
+                             N_Unchecked_Type_Conversion)
+          then
+             return Unqual_BIP_Function_Call (Expression (Expr));
+ 
+          --  Recurse to handle case of multiple levels of references and
+          --  explicit dereferences.
+ 
+          elsif Nkind_In (Expr, N_Attribute_Reference,
+                                N_Explicit_Dereference,
+                                N_Reference)
+          then
+             return Unqual_BIP_Function_Call (Prefix (Expr));
+ 
+          --  Recurse on object renamings
+ 
+          elsif Nkind (Expr) = N_Identifier
+            and then Present (Entity (Expr))
+            and then Ekind_In (Entity (Expr), E_Constant, E_Variable)
+            and then Nkind (Parent (Entity (Expr))) =
+                       N_Object_Renaming_Declaration
+            and then Present (Renamed_Object (Entity (Expr)))
+          then
+             return Unqual_BIP_Function_Call (Renamed_Object (Entity (Expr)));
+ 
+          --  Recurse on the initializing expression of the first reference of
+          --  an object declaration.
+ 
+          elsif not On_Object_Declaration
+            and then Nkind (Expr) = N_Identifier
+            and then Present (Entity (Expr))
+            and then Ekind_In (Entity (Expr), E_Constant, E_Variable)
+            and then Nkind (Parent (Entity (Expr))) = N_Object_Declaration
+            and then Present (Expression (Parent (Entity (Expr))))
+          then
+             On_Object_Declaration := True;
+             return
+               Unqual_BIP_Function_Call (Expression (Parent (Entity (Expr))));
+ 
+          --  Recurse to handle calls to displace the pointer to the object to
+          --  reference a secondary dispatch table.
+ 
+          elsif Nkind (Expr) = N_Function_Call
+            and then Nkind (Name (Expr)) in N_Has_Entity
+            and then Present (Entity (Name (Expr)))
+            and then RTU_Loaded (Ada_Tags)
+            and then RTE_Available (RE_Displace)
+            and then Is_RTE (Entity (Name (Expr)), RE_Displace)
+          then
+             Has_Pointer_Displacement := True;
+             return
+               Unqual_BIP_Function_Call (First (Parameter_Associations (Expr)));
+ 
+          --  Normal case: check if the inner expression is a BIP function call
+          --  and the pointer to the object is displaced.
+ 
+          elsif Has_Pointer_Displacement
+            and then Is_Build_In_Place_Function_Call (Expr)
+          then
+             return Expr;
+ 
+          else
+             return Empty;
+          end if;
+       end Unqual_BIP_Function_Call;
+ 
+    --  Start of processing for Unqual_BIP_Iface_Function_Call
+ 
+    begin
+       if Nkind (Expr) = N_Identifier and then No (Entity (Expr)) then
+ 
+          --  Can happen for X'Elab_Spec in the binder-generated file
+ 
+          return Empty;
+       end if;
+ 
+       return Unqual_BIP_Function_Call (Expr);
+    end Unqual_BIP_Iface_Function_Call;
+ 
  end Exp_Ch6;
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_ch6.ads gcc-8.1.0/gcc/ada/exp_ch6.ads
*** gcc-7.3.0/gcc/ada/exp_ch6.ads	Thu Jan 19 11:42:31 2017
--- gcc-8.1.0/gcc/ada/exp_ch6.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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
*** 117,141 ****
     --  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 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 whose result must be built in
!    --  place; otherwise returns False. For Ada 2005, this is currently
!    --  restricted to the set of functions whose result subtype is an inherently
!    --  limited type. In Ada 95, this must be False for inherently limited
!    --  result types (but currently returns False for all Ada 95 functions).
!    --  Eventually we plan to support build-in-place for nonlimited types.
!    --  Build-in-place is usually more efficient for large things, and less
!    --  efficient for small things. However, we never use build-in-place if the
!    --  convention is other than Ada, because that would disturb mixed-language
!    --  programs. Note that for the non-inherently-limited cases, we must make
!    --  the same decision for Ada 95 and 2005, so that mixed-dialect programs
!    --  will work.
  
     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 or is a qualified
!    --  expression applied to such a call; otherwise returns False.
  
     function Is_Null_Procedure (Subp : Entity_Id) return Boolean;
     --  Predicate to recognize stubbed procedures and null procedures, which
--- 117,146 ----
     --  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 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 at the call site
+    --  in some cases, notably assignment statements.
+ 
     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
!    --  Is_Build_In_Place_Result_Type is True. However, we never use
!    --  build-in-place if the convention is other than Ada, because that would
!    --  disturb mixed-language programs.
  
     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
*************** package Exp_Ch6 is
*** 185,190 ****
--- 190,229 ----
     --  for which Is_Build_In_Place_Call is True, or an N_Qualified_Expression
     --  node applied to such a function call.
  
+    procedure Make_Build_In_Place_Iface_Call_In_Allocator
+      (Allocator     : Node_Id;
+       Function_Call : Node_Id);
+    --  Ada 2005 (AI-318-02): Handle a call to a build-in-place function that
+    --  occurs as the expression initializing an allocator, by passing access
+    --  to the allocated object as an additional parameter of the function call.
+    --  Function_Call must denote an expression containing a BIP function call
+    --  and an enclosing call to Ada.Tags.Displace to displace the pointer to
+    --  the returned BIP object to reference the secondary dispatch table of
+    --  an interface.
+ 
+    procedure Make_Build_In_Place_Iface_Call_In_Anonymous_Context
+      (Function_Call : Node_Id);
+    --  Ada 2005 (AI-318-02): Handle a call to a build-in-place function that
+    --  occurs in a context that does not provide a separate object. A temporary
+    --  object is created to act as the return object and an access to the
+    --  temporary is passed as an additional parameter of the call. This occurs
+    --  in contexts such as subprogram call actuals and object renamings.
+    --  Function_Call must denote an expression containing a BIP function call
+    --  and an enclosing call to Ada.Tags.Displace to displace the pointer to
+    --  the returned BIP object to reference the secondary dispatch table of
+    --  an interface.
+ 
+    procedure Make_Build_In_Place_Iface_Call_In_Object_Declaration
+      (Obj_Decl      : Node_Id;
+       Function_Call : Node_Id);
+    --  Ada 2005 (AI-318-02): Handle a call to a build-in-place function that
+    --  occurs as the expression initializing an object declaration by passing
+    --  access to the declared object as an additional parameter of the function
+    --  call. Function_Call must denote an expression containing a BIP function
+    --  call and an enclosing call to Ada.Tags.Displace to displace the pointer
+    --  to the returned BIP object to reference the secondary dispatch table of
+    --  an interface.
+ 
     procedure Make_CPP_Constructor_Call_In_Allocator
       (Allocator     : Node_Id;
        Function_Call : Node_Id);
*************** package Exp_Ch6 is
*** 211,214 ****
--- 250,261 ----
     --  parameter to identify the accessibility level of the function result
     --  "determined by the point of call".
  
+    function Unqual_BIP_Iface_Function_Call (Expr : Node_Id) return Node_Id;
+    --  Return the inner BIP function call removing any qualification from Expr
+    --  including qualified expressions, type conversions, references, unchecked
+    --  conversions and calls to displace the pointer to the object, if Expr is
+    --  an expression containing a call displacing the pointer to the BIP object
+    --  to reference the secondary dispatch table of an interface; otherwise
+    --  return Empty.
+ 
  end Exp_Ch6;
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_ch7.adb gcc-8.1.0/gcc/ada/exp_ch7.adb
*** gcc-7.3.0/gcc/ada/exp_ch7.adb	Thu Jan 19 13:08:16 2017
--- gcc-8.1.0/gcc/ada/exp_ch7.adb	Thu Jan 11 08:54:12 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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 Exp_Prag; use Exp_Prag;
*** 42,48 ****
  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 Nlists;   use Nlists;
  with Nmake;    use Nmake;
--- 42,47 ----
*************** with Sinfo;    use Sinfo;
*** 55,69 ****
  with Sem;      use Sem;
  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_Ch13; use Sem_Ch13;
  with Sem_Res;  use Sem_Res;
  with Sem_Util; use Sem_Util;
  with Snames;   use Snames;
  with Stand;    use Stand;
- with Stringt;  use Stringt;
  with Tbuild;   use Tbuild;
  with Ttypes;   use Ttypes;
  with Uintp;    use Uintp;
--- 54,65 ----
*************** package body Exp_Ch7 is
*** 314,320 ****
     function Build_Cleanup_Statements
       (N                  : Node_Id;
        Additional_Cleanup : List_Id) return List_Id;
!    --  Create the clean up calls for an asynchronous call block, task master,
     --  protected subprogram body, task allocation block or task body, or
     --  additional cleanup actions parked on a transient block. If the context
     --  does not contain the above constructs, the routine returns an empty
--- 310,316 ----
     function Build_Cleanup_Statements
       (N                  : Node_Id;
        Additional_Cleanup : List_Id) return List_Id;
!    --  Create the cleanup calls for an asynchronous call block, task master,
     --  protected subprogram body, task allocation block or task body, or
     --  additional cleanup actions parked on a transient block. If the context
     --  does not contain the above constructs, the routine returns an empty
*************** package body Exp_Ch7 is
*** 483,523 ****
           return False;
  
        --  Do not consider C and C++ types since it is assumed that the non-Ada
!       --  side will handle their clean up.
  
        elsif Convention (Desig_Typ) = Convention_C
          or else Convention (Desig_Typ) = Convention_CPP
        then
           return False;
  
!       --  Do not consider types that return on the secondary stack
  
        elsif Present (Associated_Storage_Pool (Ptr_Typ))
          and then Is_RTE (Associated_Storage_Pool (Ptr_Typ), RE_SS_Pool)
        then
           return False;
  
!       --  Do not consider types which may never allocate an object
  
        elsif No_Pool_Assigned (Ptr_Typ) then
           return False;
  
!       --  Do not consider access types coming from Ada.Unchecked_Deallocation
!       --  instances. Even though the designated type may be controlled, the
!       --  access type will never participate in allocation.
  
        elsif In_Deallocation_Instance (Ptr_Typ) then
           return False;
  
!       --  Do not consider non-library access types when restriction
!       --  No_Nested_Finalization is in effect since masters are controlled
!       --  objects.
  
        elsif Restriction_Active (No_Nested_Finalization)
          and then not Is_Library_Level_Entity (Ptr_Typ)
        then
           return False;
  
        --  Do not create finalization masters in GNATprove mode because this
        --  causes unwanted extra expansion. A compilation in this mode must
        --  keep the tree as close as possible to the original sources.
--- 479,526 ----
           return False;
  
        --  Do not consider C and C++ types since it is assumed that the non-Ada
!       --  side will handle their cleanup.
  
        elsif Convention (Desig_Typ) = Convention_C
          or else Convention (Desig_Typ) = Convention_CPP
        then
           return False;
  
!       --  Do not consider an access type that returns on the secondary stack
  
        elsif Present (Associated_Storage_Pool (Ptr_Typ))
          and then Is_RTE (Associated_Storage_Pool (Ptr_Typ), RE_SS_Pool)
        then
           return False;
  
!       --  Do not consider an access type that can never allocate an object
  
        elsif No_Pool_Assigned (Ptr_Typ) then
           return False;
  
!       --  Do not consider an access type coming from an Unchecked_Deallocation
!       --  instance. Even though the designated type may be controlled, the
!       --  access type will never participate in any allocations.
  
        elsif In_Deallocation_Instance (Ptr_Typ) then
           return False;
  
!       --  Do not consider a non-library access type when No_Nested_Finalization
!       --  is in effect since finalization masters are controlled objects and if
!       --  created will violate the restriction.
  
        elsif Restriction_Active (No_Nested_Finalization)
          and then not Is_Library_Level_Entity (Ptr_Typ)
        then
           return False;
  
+       --  Do not consider an access type subject to pragma No_Heap_Finalization
+       --  because objects allocated through such a type are not to be finalized
+       --  when the access type goes out of scope.
+ 
+       elsif No_Heap_Finalization (Ptr_Typ) then
+          return False;
+ 
        --  Do not create finalization masters in GNATprove mode because this
        --  causes unwanted extra expansion. A compilation in this mode must
        --  keep the tree as close as possible to the original sources.
*************** package body Exp_Ch7 is
*** 784,796 ****
                Typ   => Typ,
                Stmts => Make_Deep_Array_Body (Finalize_Case, Typ)));
  
!          --  Create TSS primitive Finalize_Address.
  
!          Set_TSS (Typ,
!            Make_Deep_Proc
!              (Prim  => Address_Case,
!               Typ   => Typ,
!               Stmts => Make_Deep_Array_Body (Address_Case, Typ)));
        end if;
     end Build_Array_Deep_Procs;
  
--- 787,801 ----
                Typ   => Typ,
                Stmts => Make_Deep_Array_Body (Finalize_Case, Typ)));
  
!          --  Create TSS primitive Finalize_Address (unless CodePeer_Mode)
  
!          if not CodePeer_Mode then
!             Set_TSS (Typ,
!               Make_Deep_Proc
!                 (Prim  => Address_Case,
!                  Typ   => Typ,
!                  Stmts => Make_Deep_Array_Body (Address_Case, Typ)));
!          end if;
        end if;
     end Build_Array_Deep_Procs;
  
*************** package body Exp_Ch7 is
*** 1322,1329 ****
                               or else
                                 (Present (Clean_Stmts)
                                   and then Is_Non_Empty_List (Clean_Stmts));
!       Exceptions_OK    : constant Boolean :=
!                            not Restriction_Active (No_Exception_Propagation);
        For_Package_Body : constant Boolean := Nkind (N) = N_Package_Body;
        For_Package_Spec : constant Boolean := Nkind (N) = N_Package_Declaration;
        For_Package      : constant Boolean :=
--- 1327,1333 ----
                               or else
                                 (Present (Clean_Stmts)
                                   and then Is_Non_Empty_List (Clean_Stmts));
!       Exceptions_OK    : constant Boolean := Exceptions_In_Finalization_OK;
        For_Package_Body : constant Boolean := Nkind (N) = N_Package_Body;
        For_Package_Spec : constant Boolean := Nkind (N) = N_Package_Declaration;
        For_Package      : constant Boolean :=
*************** package body Exp_Ch7 is
*** 1550,1557 ****
              Jump_Alts := New_List;
           end if;
  
!          --  If the context requires additional clean up, the finalization
!          --  machinery is added after the clean up code.
  
           if Acts_As_Clean then
              Finalizer_Stmts       := Clean_Stmts;
--- 1554,1561 ----
              Jump_Alts := New_List;
           end if;
  
!          --  If the context requires additional cleanup, the finalization
!          --  machinery is added after the cleanup code.
  
           if Acts_As_Clean then
              Finalizer_Stmts       := Clean_Stmts;
*************** package body Exp_Ch7 is
*** 1780,1786 ****
           end if;
  
           --  Protect the statements with abort defer/undefer. This is only when
!          --  aborts are allowed and the clean up statements require deferral or
           --  there are controlled objects to be finalized. Note that the abort
           --  defer/undefer pair does not require an extra block because each
           --  finalization exception is caught in its corresponding finalization
--- 1784,1790 ----
           end if;
  
           --  Protect the statements with abort defer/undefer. This is only when
!          --  aborts are allowed and the cleanup statements require deferral or
           --  there are controlled objects to be finalized. Note that the abort
           --  defer/undefer pair does not require an extra block because each
           --  finalization exception is caught in its corresponding finalization
*************** package body Exp_Ch7 is
*** 1796,1802 ****
  
           --  The local exception does not need to be reraised for library-level
           --  finalizers. Note that this action must be carried out after object
!          --  clean up, secondary stack release and abort undeferral. Generate:
  
           --    if Raised and then not Abort then
           --       Raise_From_Controlled_Operation (E);
--- 1800,1806 ----
  
           --  The local exception does not need to be reraised for library-level
           --  finalizers. Note that this action must be carried out after object
!          --  cleanup, secondary stack release, and abort undeferral. Generate:
  
           --    if Raised and then not Abort then
           --       Raise_From_Controlled_Operation (E);
*************** package body Exp_Ch7 is
*** 1903,1909 ****
              Append_To (Spec_Decls, Fin_Spec);
              Analyze (Fin_Spec);
  
!             --  When the finalizer acts solely as a clean up routine, the body
              --  is inserted right after the spec.
  
              if Acts_As_Clean and not Has_Ctrl_Objs then
--- 1907,1913 ----
              Append_To (Spec_Decls, Fin_Spec);
              Analyze (Fin_Spec);
  
!             --  When the finalizer acts solely as a cleanup routine, the body
              --  is inserted right after the spec.
  
              if Acts_As_Clean and not Has_Ctrl_Objs then
*************** package body Exp_Ch7 is
*** 1951,1957 ****
                 Insert_After (Finalizer_Insert_Nod, Fin_Body);
              end if;
  
!             Analyze (Fin_Body);
           end if;
        end Create_Finalizer;
  
--- 1955,1961 ----
                 Insert_After (Finalizer_Insert_Nod, Fin_Body);
              end if;
  
!             Analyze (Fin_Body, Suppress => All_Checks);
           end if;
        end Create_Finalizer;
  
*************** package body Exp_Ch7 is
*** 2096,2110 ****
                 elsif Is_Ignored_Ghost_Entity (Obj_Id) then
                    null;
  
-                --  The expansion of iterator loops generates an object
-                --  declaration where the Ekind is explicitly set to loop
-                --  parameter. This is to ensure that the loop parameter behaves
-                --  as a constant from user code point of view. Such object are
-                --  never controlled and do not require finalization.
- 
-                elsif Ekind (Obj_Id) = E_Loop_Parameter then
-                   null;
- 
                 --  The object is of the form:
                 --    Obj : [constant] Typ [:= Expr];
  
--- 2100,2105 ----
*************** package body Exp_Ch7 is
*** 2610,2617 ****
              --  procedures of types Init_Typ or Obj_Typ.
  
              function Next_Suitable_Statement (Stmt : Node_Id) return Node_Id;
!             --  Given a statement which is part of a list, return the next
!             --  statement while skipping over dynamic elab checks.
  
              -----------------------------
              -- Find_Last_Init_In_Block --
--- 2605,2612 ----
              --  procedures of types Init_Typ or Obj_Typ.
  
              function Next_Suitable_Statement (Stmt : Node_Id) return Node_Id;
!             --  Obtain the next statement which follows list member Stmt while
!             --  ignoring artifacts related to access-before-elaboration checks.
  
              -----------------------------
              -- Find_Last_Init_In_Block --
*************** package body Exp_Ch7 is
*** 2730,2745 ****
              -----------------------------
  
              function Next_Suitable_Statement (Stmt : Node_Id) return Node_Id is
!                Result : Node_Id := Next (Stmt);
  
              begin
!                --  Skip over access-before-elaboration checks
  
-                if Dynamic_Elaboration_Checks
-                  and then Nkind (Result) = N_Raise_Program_Error
-                then
                    Result := Next (Result);
!                end if;
  
                 return Result;
              end Next_Suitable_Statement;
--- 2725,2746 ----
              -----------------------------
  
              function Next_Suitable_Statement (Stmt : Node_Id) return Node_Id is
!                Result : Node_Id;
  
              begin
!                --  Skip call markers and Program_Error raises installed by the
!                --  ABE mechanism.
! 
!                Result := Next (Stmt);
!                while Present (Result) loop
!                   if not Nkind_In (Result, N_Call_Marker,
!                                            N_Raise_Program_Error)
!                   then
!                      exit;
!                   end if;
  
                    Result := Next (Result);
!                end loop;
  
                 return Result;
              end Next_Suitable_Statement;
*************** package body Exp_Ch7 is
*** 2768,2776 ****
  
              Stmt := Next_Suitable_Statement (Decl);
  
!             --  Nothing to do for an object with suppressed initialization
  
              if No_Initialization (Decl) then
                 return;
  
              --  In all other cases the initialization calls follow the related
--- 2769,2798 ----
  
              Stmt := Next_Suitable_Statement (Decl);
  
!             --  For an object with suppressed initialization, we check whether
!             --  there is in fact no initialization expression. If there is not,
!             --  then this is an object declaration that has been turned into a
!             --  different object declaration that calls the build-in-place
!             --  function in a 'Reference attribute, as in "F(...)'Reference".
!             --  We search for that later object declaration, so that the
!             --  Inc_Decl will be inserted after the call. Otherwise, if the
!             --  call raises an exception, we will finalize the (uninitialized)
!             --  object, which is wrong.
  
              if No_Initialization (Decl) then
+                if No (Expression (Last_Init)) then
+                   loop
+                      Last_Init := Next (Last_Init);
+                      exit when No (Last_Init);
+                      exit when Nkind (Last_Init) = N_Object_Declaration
+                        and then Nkind (Expression (Last_Init)) = N_Reference
+                        and then Nkind (Prefix (Expression (Last_Init))) =
+                                   N_Function_Call
+                        and then Is_Expanded_Build_In_Place_Call
+                                   (Prefix (Expression (Last_Init)));
+                   end loop;
+                end if;
+ 
                 return;
  
              --  In all other cases the initialization calls follow the related
*************** package body Exp_Ch7 is
*** 2839,2845 ****
           Body_Ins  : Node_Id;
           Count_Ins : Node_Id;
           Fin_Call  : Node_Id;
!          Fin_Stmts : List_Id;
           Inc_Decl  : Node_Id;
           Label     : Node_Id;
           Label_Id  : Entity_Id;
--- 2861,2867 ----
           Body_Ins  : Node_Id;
           Count_Ins : Node_Id;
           Fin_Call  : Node_Id;
!          Fin_Stmts : List_Id := No_List;
           Inc_Decl  : Node_Id;
           Label     : Node_Id;
           Label_Id  : Entity_Id;
*************** package body Exp_Ch7 is
*** 2941,2946 ****
--- 2963,2976 ----
              Find_Last_Init (Count_Ins, Body_Ins);
           end if;
  
+          --  If the Initialize function is null or trivial, the call will have
+          --  been replaced with a null statement, in which case place counter
+          --  declaration after object declaration itself.
+ 
+          if No (Count_Ins) then
+             Count_Ins := Decl;
+          end if;
+ 
           Insert_After (Count_Ins, Inc_Decl);
           Analyze (Inc_Decl);
  
*************** package body Exp_Ch7 is
*** 2952,2958 ****
  
           if No (Finalizer_Insert_Nod) then
  
!             --  Insertion after an abort deffered block
  
              if Present (Body_Ins) then
                 Finalizer_Insert_Nod := Body_Ins;
--- 2982,2988 ----
  
           if No (Finalizer_Insert_Nod) then
  
!             --  Insertion after an abort deferred block
  
              if Present (Body_Ins) then
                 Finalizer_Insert_Nod := Body_Ins;
*************** package body Exp_Ch7 is
*** 2999,3006 ****
           --  manual finalization of their lock managers.
  
           if Is_Protected then
-             Fin_Stmts := No_List;
- 
              if Is_Simple_Protected_Type (Obj_Typ) then
                 Fin_Call := Cleanup_Protected_Object (Decl, Obj_Ref);
  
--- 3029,3034 ----
*************** package body Exp_Ch7 is
*** 3026,3033 ****
              --          null;
              --    end;
  
!             if Present (Fin_Stmts) then
!                Append_To (Finalizer_Stmts,
                   Make_Block_Statement (Loc,
                     Handled_Statement_Sequence =>
                       Make_Handled_Sequence_Of_Statements (Loc,
--- 3054,3061 ----
              --          null;
              --    end;
  
!             if Present (Fin_Stmts) and then Exceptions_OK then
!                Fin_Stmts := New_List (
                   Make_Block_Statement (Loc,
                     Handled_Statement_Sequence =>
                       Make_Handled_Sequence_Of_Statements (Loc,
*************** package body Exp_Ch7 is
*** 3451,4920 ****
        Expand_At_End_Handler (HSS, Empty);
     end Build_Finalizer_Call;
  
-    ------------------------------------
-    -- Build_Invariant_Procedure_Body --
-    ------------------------------------
- 
-    --  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_Invariant_Procedure_Body
-      (Typ               : Entity_Id;
-       Partial_Invariant : Boolean := False)
-    is
-       Loc : constant Source_Ptr := Sloc (Typ);
- 
-       Pragmas_Seen : Elist_Id := No_Elist;
-       --  This list contains all invariant pragmas processed so far. The list
-       --  is used to avoid generating redundant invariant checks.
- 
-       Produced_Check : Boolean := False;
-       --  This flag tracks whether the type has produced at least one invariant
-       --  check. The flag is used as a sanity check at the end of the routine.
- 
-       --  NOTE: most of the routines in Build_Invariant_Procedure_Body are
-       --  intentionally unnested to avoid deep indentation of code.
- 
-       --  NOTE: all Add_xxx_Invariants routines are reactive. In other words
-       --  they emit checks, loops (for arrays) and case statements (for record
-       --  variant parts) only when there are invariants to verify. This keeps
-       --  the body of the invariant procedure free from useless code.
- 
-       procedure Add_Array_Component_Invariants
-         (T      : Entity_Id;
-          Obj_Id : Entity_Id;
-          Checks : in out List_Id);
-       --  Generate an invariant check for each component of array type T.
-       --  Obj_Id denotes the entity of the _object formal parameter of the
-       --  invariant procedure. All created checks are added to list Checks.
- 
-       procedure Add_Interface_Invariants
-         (T      : Entity_Id;
-          Obj_Id : Entity_Id;
-          Checks : in out List_Id);
-       --  Generate an invariant check for each inherited class-wide invariant
-       --  coming from all interfaces implemented by type T. Obj_Id denotes the
-       --  entity of the _object formal parameter of the invariant procedure.
-       --  All created checks are added to list Checks.
- 
-       procedure Add_Parent_Invariants
-         (T      : Entity_Id;
-          Obj_Id : Entity_Id;
-          Checks : in out List_Id);
-       --  Generate an invariant check for each inherited class-wide invariant
-       --  coming from all parent types of type T. Obj_Id denotes the entity of
-       --  the _object formal parameter of the invariant procedure. All created
-       --  checks are added to list Checks.
- 
-       procedure Add_Record_Component_Invariants
-         (T      : Entity_Id;
-          Obj_Id : Entity_Id;
-          Checks : in out List_Id);
-       --  Generate an invariant check for each component of record type T.
-       --  Obj_Id denotes the entity of the _object formal parameter of the
-       --  invariant procedure. All created checks are added to list Checks.
- 
-       procedure Add_Type_Invariants
-         (Priv_Typ  : Entity_Id;
-          Full_Typ  : Entity_Id;
-          CRec_Typ  : Entity_Id;
-          Obj_Id    : Entity_Id;
-          Checks    : in out List_Id;
-          Inherit   : Boolean := False;
-          Priv_Item : Node_Id := Empty);
-       --  Generate an invariant check for each invariant found in one of the
-       --  following types (if available):
-       --
-       --    Priv_Typ - the partial view of a type
-       --    Full_Typ - the full view of a type
-       --    CRec_Typ - the corresponding record of a protected or a task type
-       --
-       --  Obj_Id denotes the entity of the _object formal parameter of the
-       --  invariant procedure. All created checks are added to list Checks.
-       --  Flag Inherit should be set when generating invariant checks for
-       --  inherited class-wide invariants. Priv_Item denotes the first rep
-       --  item of the private type.
- 
-       function Is_Untagged_Private_Derivation
-         (Priv_Typ : Entity_Id;
-          Full_Typ : Entity_Id) return Boolean;
-       --  Determine whether private type Priv_Typ and its full view Full_Typ
-       --  represent an untagged derivation from a private parent.
- 
-       ------------------------------------
-       -- Add_Array_Component_Invariants --
-       ------------------------------------
- 
-       procedure Add_Array_Component_Invariants
-         (T      : Entity_Id;
-          Obj_Id : Entity_Id;
-          Checks : in out List_Id)
-       is
-          Comp_Typ : constant Entity_Id := Component_Type (T);
-          Dims     : constant Pos       := Number_Dimensions (T);
- 
-          procedure Process_Array_Component
-            (Indices     : List_Id;
-             Comp_Checks : in out List_Id);
-          --  Generate an invariant check for an array component identified by
-          --  the indices in list Indices. All created checks are added to list
-          --  Comp_Checks.
- 
-          procedure Process_One_Dimension
-            (Dim        : Pos;
-             Indices    : List_Id;
-             Dim_Checks : in out List_Id);
-          --  Generate a loop over the Nth dimension Dim of an array type. List
-          --  Indices contains all array indices for the dimension. All created
-          --  checks are added to list Dim_Checks.
- 
-          -----------------------------
-          -- Process_Array_Component --
-          -----------------------------
- 
-          procedure Process_Array_Component
-            (Indices     : List_Id;
-             Comp_Checks : in out List_Id)
-          is
-             Proc_Id : Entity_Id;
- 
-          begin
-             if Has_Invariants (Comp_Typ) then
- 
-                --  In GNATprove mode, the component invariants are checked by
-                --  other means. They should not be added to the array type
-                --  invariant procedure, so that the procedure can be used to
-                --  check the array type invariants if any.
- 
-                if GNATprove_Mode then
-                   null;
- 
-                else
-                   Proc_Id := Invariant_Procedure (Base_Type (Comp_Typ));
- 
-                   --  The component type should have an invariant procedure
-                   --  if it has invariants of its own or inherits class-wide
-                   --  invariants from parent or interface types.
- 
-                   pragma Assert (Present (Proc_Id));
- 
-                   --  Generate:
-                   --    <Comp_Typ>Invariant (_object (<Indices>));
- 
-                   --  Note that the invariant procedure may have a null body if
-                   --  assertions are disabled or Assertion_Policy Ignore is in
-                   --  effect.
- 
-                   if not Has_Null_Body (Proc_Id) then
-                      Append_New_To (Comp_Checks,
-                        Make_Procedure_Call_Statement (Loc,
-                          Name                   =>
-                            New_Occurrence_Of (Proc_Id, Loc),
-                          Parameter_Associations => New_List (
-                            Make_Indexed_Component (Loc,
-                              Prefix      => New_Occurrence_Of (Obj_Id, Loc),
-                              Expressions => New_Copy_List (Indices)))));
-                   end if;
-                end if;
- 
-                Produced_Check := True;
-             end if;
-          end Process_Array_Component;
- 
-          ---------------------------
-          -- Process_One_Dimension --
-          ---------------------------
- 
-          procedure Process_One_Dimension
-            (Dim        : Pos;
-             Indices    : List_Id;
-             Dim_Checks : in out List_Id)
-          is
-             Comp_Checks : List_Id := No_List;
-             Index       : Entity_Id;
- 
-          begin
-             --  Generate the invariant checks for the array component after all
-             --  dimensions have produced their respective loops.
- 
-             if Dim > Dims then
-                Process_Array_Component
-                  (Indices     => Indices,
-                   Comp_Checks => Dim_Checks);
- 
-             --  Otherwise create a loop for the current dimension
- 
-             else
-                --  Create a new loop variable for each dimension
- 
-                Index :=
-                  Make_Defining_Identifier (Loc,
-                    Chars => New_External_Name ('I', Dim));
-                Append_To (Indices, New_Occurrence_Of (Index, Loc));
- 
-                Process_One_Dimension
-                  (Dim        => Dim + 1,
-                   Indices    => Indices,
-                   Dim_Checks => Comp_Checks);
- 
-                --  Generate:
-                --    for I<Dim> in _object'Range (<Dim>) loop
-                --       <Comp_Checks>
-                --    end loop;
- 
-                --  Note that the invariant procedure may have a null body if
-                --  assertions are disabled or Assertion_Policy Ignore is in
-                --  effect.
- 
-                if Present (Comp_Checks) then
-                   Append_New_To (Dim_Checks,
-                     Make_Implicit_Loop_Statement (T,
-                       Identifier       => Empty,
-                       Iteration_Scheme =>
-                         Make_Iteration_Scheme (Loc,
-                           Loop_Parameter_Specification =>
-                             Make_Loop_Parameter_Specification (Loc,
-                               Defining_Identifier         => Index,
-                               Discrete_Subtype_Definition =>
-                                 Make_Attribute_Reference (Loc,
-                                   Prefix         =>
-                                     New_Occurrence_Of (Obj_Id, Loc),
-                                   Attribute_Name => Name_Range,
-                                   Expressions    => New_List (
-                                     Make_Integer_Literal (Loc, Dim))))),
- 
-                       Statements => Comp_Checks));
-                end if;
-             end if;
-          end Process_One_Dimension;
- 
-       --  Start of processing for Add_Array_Component_Invariants
- 
-       begin
-          Process_One_Dimension
-            (Dim        => 1,
-             Indices    => New_List,
-             Dim_Checks => Checks);
-       end Add_Array_Component_Invariants;
- 
-       ------------------------------
-       -- Add_Interface_Invariants --
-       ------------------------------
- 
-       procedure Add_Interface_Invariants
-         (T      : Entity_Id;
-          Obj_Id : Entity_Id;
-          Checks : in out List_Id)
-       is
-          Iface_Elmt : Elmt_Id;
-          Ifaces     : Elist_Id;
- 
-       begin
-          if Is_Tagged_Type (T) then
-             Collect_Interfaces (T, Ifaces);
- 
-             --  Process the class-wide invariants of all implemented interfaces
- 
-             Iface_Elmt := First_Elmt (Ifaces);
-             while Present (Iface_Elmt) loop
-                Add_Type_Invariants
-                  (Priv_Typ => Empty,
-                   Full_Typ => Node (Iface_Elmt),
-                   CRec_Typ => Empty,
-                   Obj_Id   => Obj_Id,
-                   Checks   => Checks,
-                   Inherit  => True);
- 
-                Next_Elmt (Iface_Elmt);
-             end loop;
-          end if;
-       end Add_Interface_Invariants;
- 
-       ---------------------------
-       -- Add_Parent_Invariants --
-       ---------------------------
- 
-       procedure Add_Parent_Invariants
-         (T      : Entity_Id;
-          Obj_Id : Entity_Id;
-          Checks : in out List_Id)
-       is
-          Dummy_1 : Entity_Id;
-          Dummy_2 : Entity_Id;
- 
-          Curr_Typ : Entity_Id;
-          --  The entity of the current type being examined
- 
-          Full_Typ : Entity_Id;
-          --  The full view of Par_Typ
- 
-          Par_Typ : Entity_Id;
-          --  The entity of the parent type
- 
-          Priv_Typ : Entity_Id;
-          --  The partial view of Par_Typ
- 
-       begin
-          --  Do not process array types because they cannot have true parent
-          --  types. This also prevents the generation of a duplicate invariant
-          --  check when the input type is an array base type because its Etype
-          --  denotes the first subtype, both of which share the same component
-          --  type.
- 
-          if Is_Array_Type (T) then
-             return;
-          end if;
- 
-          --  Climb the parent type chain
- 
-          Curr_Typ := T;
-          loop
-             --  Do not consider subtypes as they inherit the invariants from
-             --  their base types.
- 
-             Par_Typ := Base_Type (Etype (Curr_Typ));
- 
-             --  Stop the climb once the root of the parent chain is reached
- 
-             exit when Curr_Typ = Par_Typ;
- 
-             --  Process the class-wide invariants of the parent type
- 
-             Get_Views (Par_Typ, Priv_Typ, Full_Typ, Dummy_1, Dummy_2);
- 
-             Add_Type_Invariants
-               (Priv_Typ => Priv_Typ,
-                Full_Typ => Full_Typ,
-                CRec_Typ => Empty,
-                Obj_Id   => Obj_Id,
-                Checks   => Checks,
-                Inherit  => True);
- 
-             Curr_Typ := Par_Typ;
-          end loop;
-       end Add_Parent_Invariants;
- 
-       -------------------------------------
-       -- Add_Record_Component_Invariants --
-       -------------------------------------
- 
-       procedure Add_Record_Component_Invariants
-         (T      : Entity_Id;
-          Obj_Id : Entity_Id;
-          Checks : in out List_Id)
-       is
-          procedure Process_Component_List
-            (Comp_List : Node_Id;
-             CL_Checks : in out List_Id);
-          --  Generate invariant checks for all record components found in
-          --  component list Comp_List, including variant parts. All created
-          --  checks are added to list CL_Checks.
- 
-          procedure Process_Record_Component
-            (Comp_Id     : Entity_Id;
-             Comp_Checks : in out List_Id);
-          --  Generate an invariant check for a record component identified by
-          --  Comp_Id. All created checks are added to list Comp_Checks.
- 
-          ----------------------------
-          -- Process_Component_List --
-          ----------------------------
- 
-          procedure Process_Component_List
-            (Comp_List : Node_Id;
-             CL_Checks : in out List_Id)
-          is
-             Comp       : Node_Id;
-             Var        : Node_Id;
-             Var_Alts   : List_Id := No_List;
-             Var_Checks : List_Id := No_List;
-             Var_Stmts  : List_Id;
- 
-             Produced_Variant_Check : Boolean := False;
-             --  This flag tracks whether the component has produced at least
-             --  one invariant check.
- 
-          begin
-             --  Traverse the component items
- 
-             Comp := First (Component_Items (Comp_List));
-             while Present (Comp) loop
-                if Nkind (Comp) = N_Component_Declaration then
- 
-                   --  Generate the component invariant check
- 
-                   Process_Record_Component
-                     (Comp_Id     => Defining_Entity (Comp),
-                      Comp_Checks => CL_Checks);
-                end if;
- 
-                Next (Comp);
-             end loop;
- 
-             --  Traverse the variant part
- 
-             if Present (Variant_Part (Comp_List)) then
-                Var := First (Variants (Variant_Part (Comp_List)));
-                while Present (Var) loop
-                   Var_Checks := No_List;
- 
-                   --  Generate invariant checks for all components and variant
-                   --  parts that qualify.
- 
-                   Process_Component_List
-                     (Comp_List => Component_List (Var),
-                      CL_Checks => Var_Checks);
- 
-                   --  The components of the current variant produced at least
-                   --  one invariant check.
- 
-                   if Present (Var_Checks) then
-                      Var_Stmts := Var_Checks;
-                      Produced_Variant_Check := True;
- 
-                   --  Otherwise there are either no components with invariants,
-                   --  assertions are disabled, or Assertion_Policy Ignore is in
-                   --  effect.
- 
-                   else
-                      Var_Stmts := New_List (Make_Null_Statement (Loc));
-                   end if;
- 
-                   Append_New_To (Var_Alts,
-                     Make_Case_Statement_Alternative (Loc,
-                       Discrete_Choices =>
-                         New_Copy_List (Discrete_Choices (Var)),
-                       Statements       => Var_Stmts));
- 
-                   Next (Var);
-                end loop;
- 
-                --  Create a case statement which verifies the invariant checks
-                --  of a particular component list depending on the discriminant
-                --  values only when there is at least one real invariant check.
- 
-                if Produced_Variant_Check then
-                   Append_New_To (CL_Checks,
-                     Make_Case_Statement (Loc,
-                       Expression   =>
-                         Make_Selected_Component (Loc,
-                           Prefix        => New_Occurrence_Of (Obj_Id, Loc),
-                           Selector_Name =>
-                             New_Occurrence_Of
-                               (Entity (Name (Variant_Part (Comp_List))), Loc)),
-                       Alternatives => Var_Alts));
-                end if;
-             end if;
-          end Process_Component_List;
- 
-          ------------------------------
-          -- Process_Record_Component --
-          ------------------------------
- 
-          procedure Process_Record_Component
-            (Comp_Id     : Entity_Id;
-             Comp_Checks : in out List_Id)
-          is
-             Comp_Typ : constant Entity_Id := Etype (Comp_Id);
-             Proc_Id  : Entity_Id;
- 
-             Produced_Component_Check : Boolean := False;
-             --  This flag tracks whether the component has produced at least
-             --  one invariant check.
- 
-          begin
-             --  Nothing to do for internal component _parent. Note that it is
-             --  not desirable to check whether the component comes from source
-             --  because protected type components are relocated to an internal
-             --  corresponding record, but still need processing.
- 
-             if Chars (Comp_Id) = Name_uParent then
-                return;
-             end if;
- 
-             --  Verify the invariant of the component. Note that an access
-             --  type may have an invariant when it acts as the full view of a
-             --  private type and the invariant appears on the partial view. In
-             --  this case verify the access value itself.
- 
-             if Has_Invariants (Comp_Typ) then
- 
-                --  In GNATprove mode, the component invariants are checked by
-                --  other means. They should not be added to the record type
-                --  invariant procedure, so that the procedure can be used to
-                --  check the record type invariants if any.
- 
-                if GNATprove_Mode then
-                   null;
- 
-                else
-                   Proc_Id := Invariant_Procedure (Base_Type (Comp_Typ));
- 
-                   --  The component type should have an invariant procedure
-                   --  if it has invariants of its own or inherits class-wide
-                   --  invariants from parent or interface types.
- 
-                   pragma Assert (Present (Proc_Id));
- 
-                   --  Generate:
-                   --    <Comp_Typ>Invariant (T (_object).<Comp_Id>);
- 
-                   --  Note that the invariant procedure may have a null body if
-                   --  assertions are disabled or Assertion_Policy Ignore is in
-                   --  effect.
- 
-                   if not Has_Null_Body (Proc_Id) then
-                      Append_New_To (Comp_Checks,
-                        Make_Procedure_Call_Statement (Loc,
-                          Name                   =>
-                            New_Occurrence_Of (Proc_Id, Loc),
-                          Parameter_Associations => New_List (
-                            Make_Selected_Component (Loc,
-                              Prefix        =>
-                                Unchecked_Convert_To
-                                  (T, New_Occurrence_Of (Obj_Id, Loc)),
-                              Selector_Name =>
-                                New_Occurrence_Of (Comp_Id, Loc)))));
-                   end if;
-                end if;
- 
-                Produced_Check           := True;
-                Produced_Component_Check := True;
-             end if;
- 
-             if Produced_Component_Check and then Has_Unchecked_Union (T) then
-                Error_Msg_NE
-                  ("invariants cannot be checked on components of "
-                   & "unchecked_union type &?", Comp_Id, T);
-             end if;
-          end Process_Record_Component;
- 
-          --  Local variables
- 
-          Comps : Node_Id;
-          Def   : Node_Id;
- 
-       --  Start of processing for Add_Record_Component_Invariants
- 
-       begin
-          --  An untagged derived type inherits the components of its parent
-          --  type. In order to avoid creating redundant invariant checks, do
-          --  not process the components now. Instead wait until the ultimate
-          --  parent of the untagged derivation chain is reached.
- 
-          if not Is_Untagged_Derivation (T) then
-             Def := Type_Definition (Parent (T));
- 
-             if Nkind (Def) = N_Derived_Type_Definition then
-                Def := Record_Extension_Part (Def);
-             end if;
- 
-             pragma Assert (Nkind (Def) = N_Record_Definition);
-             Comps := Component_List (Def);
- 
-             if Present (Comps) then
-                Process_Component_List
-                  (Comp_List => Comps,
-                   CL_Checks => Checks);
-             end if;
-          end if;
-       end Add_Record_Component_Invariants;
- 
-       -------------------------
-       -- Add_Type_Invariants --
-       -------------------------
- 
-       procedure Add_Type_Invariants
-         (Priv_Typ  : Entity_Id;
-          Full_Typ  : Entity_Id;
-          CRec_Typ  : Entity_Id;
-          Obj_Id    : Entity_Id;
-          Checks    : in out List_Id;
-          Inherit   : Boolean := False;
-          Priv_Item : Node_Id := Empty)
-       is
-          procedure Add_Invariant (Prag : Node_Id);
-          --  Create a runtime check to verify the invariant exression of pragma
-          --  Prag. All generated code is added to list Checks.
- 
-          procedure Process_Type (T : Entity_Id; Stop_Item : Node_Id := Empty);
-          --  Generate invariant checks for type T by inspecting the rep item
-          --  chain of the type. Stop_Item denotes a rep item which once seen
-          --  will stop the inspection.
- 
-          -------------------
-          -- Add_Invariant --
-          -------------------
- 
-          procedure Add_Invariant (Prag : Node_Id) is
-             Rep_Typ : Entity_Id;
-             --  The replacement type used in the substitution of the current
-             --  instance of a type with the _object formal parameter.
- 
-             procedure Replace_Type_Ref (N : Node_Id);
-             --  Substitute the occurrence of a type name denoted by N with a
-             --  reference to the _object formal parameter.
- 
-             ----------------------
-             -- Replace_Type_Ref --
-             ----------------------
- 
-             procedure Replace_Type_Ref (N : Node_Id) is
-                Nloc : constant Source_Ptr := Sloc (N);
-                Ref  : Node_Id;
- 
-             begin
-                --  Decorate the reference to Ref_Typ even though it may be
-                --  rewritten further down. This is done for two reasons:
- 
-                --    1) ASIS has all necessary semantic information in the
-                --    original tree.
- 
-                --    2) Routines which examine properties of the Original_Node
-                --    have some semantic information.
- 
-                if Nkind (N) = N_Identifier then
-                   Set_Entity (N, Rep_Typ);
-                   Set_Etype  (N, Rep_Typ);
- 
-                elsif Nkind (N) = N_Selected_Component then
-                   Analyze (Prefix (N));
-                   Set_Entity (Selector_Name (N), Rep_Typ);
-                   Set_Etype  (Selector_Name (N), Rep_Typ);
-                end if;
- 
-                --  Perform the following substitution:
- 
-                --    Ref_Typ  -->  _object
- 
-                Ref := Make_Identifier (Nloc, Chars (Obj_Id));
-                Set_Entity (Ref, Obj_Id);
-                Set_Etype  (Ref, Rep_Typ);
- 
-                --  When the pragma denotes a class-wide invariant, perform the
-                --  following substitution:
- 
-                --    Rep_Typ  -->  Rep_Typ'Class (_object)
- 
-                if Class_Present (Prag) then
-                   Ref :=
-                     Make_Type_Conversion (Nloc,
-                       Subtype_Mark =>
-                         Make_Attribute_Reference (Nloc,
-                           Prefix         =>
-                             New_Occurrence_Of (Rep_Typ, Nloc),
-                           Attribute_Name => Name_Class),
-                       Expression   => Ref);
-                end if;
- 
-                Rewrite (N, Ref);
-                Set_Comes_From_Source (N, True);
-             end Replace_Type_Ref;
- 
-             procedure Replace_Type_Refs is
-               new Replace_Type_References_Generic (Replace_Type_Ref);
- 
-             --  Local variables
- 
-             Asp  : constant Node_Id    := Corresponding_Aspect (Prag);
-             Nam  : constant Name_Id    := Original_Aspect_Pragma_Name (Prag);
-             Ploc : constant Source_Ptr := Sloc (Prag);
- 
-             Arg1      : Node_Id;
-             Arg2      : Node_Id;
-             Arg3      : Node_Id;
-             ASIS_Expr : Node_Id;
-             Assoc     : List_Id;
-             Expr      : Node_Id;
-             Str       : String_Id;
- 
-          --  Start of processing for Add_Invariant
- 
-          begin
-             --  Nothing to do if the pragma was already processed
- 
-             if Contains (Pragmas_Seen, Prag) then
-                return;
-             end if;
- 
-             --  Extract the arguments of the invariant pragma
- 
-             Arg1 := First (Pragma_Argument_Associations (Prag));
-             Arg2 := Next (Arg1);
-             Arg3 := Next (Arg2);
- 
-             Arg1 := Get_Pragma_Arg (Arg1);
-             Arg2 := Get_Pragma_Arg (Arg2);
- 
-             --  The pragma applies to the partial view
- 
-             if Present (Priv_Typ) and then Entity (Arg1) = Priv_Typ then
-                Rep_Typ := Priv_Typ;
- 
-             --  The pragma applies to the full view
- 
-             elsif Present (Full_Typ) and then Entity (Arg1) = Full_Typ then
-                Rep_Typ := Full_Typ;
- 
-             --  Otherwise the pragma applies to a parent type in which case it
-             --  will be processed at a later stage by Add_Parent_Invariants or
-             --  Add_Interface_Invariants.
- 
-             else
-                return;
-             end if;
- 
-             --  Nothing to do when the caller requests the processing of all
-             --  inherited class-wide invariants, but the pragma does not fall
-             --  in this category.
- 
-             if Inherit and then not Class_Present (Prag) then
-                return;
-             end if;
- 
-             Expr := New_Copy_Tree (Arg2);
- 
-             --  Substitute all references to type Rep_Typ with references to
-             --  the _object formal parameter.
- 
-             Replace_Type_Refs (Expr, Rep_Typ);
- 
-             --  Additional processing for non-class-wide invariants
- 
-             if not Inherit then
- 
-                --  Preanalyze the invariant expression to detect errors and at
-                --  the same time capture the visibility of the proper package
-                --  part.
- 
-                --  Historical note: the old implementation of invariants used
-                --  node N as the parent, but a package specification as parent
-                --  of an expression is bizarre.
- 
-                Set_Parent (Expr, Parent (Arg2));
-                Preanalyze_Assert_Expression (Expr, Any_Boolean);
- 
-                --  If the pragma comes from an aspect specification, replace
-                --  the saved expression because all type references must be
-                --  substituted for the call to Preanalyze_Spec_Expression in
-                --  Check_Aspect_At_xxx routines.
- 
-                if Present (Asp) then
-                   Set_Entity (Identifier (Asp), New_Copy_Tree (Expr));
-                end if;
- 
-                --  Analyze the original invariant expression for ASIS
- 
-                if ASIS_Mode then
-                   ASIS_Expr := Empty;
- 
-                   if Comes_From_Source (Prag) then
-                      ASIS_Expr := Arg2;
-                   elsif Present (Asp) then
-                      ASIS_Expr := Expression (Asp);
-                   end if;
- 
-                   if Present (ASIS_Expr) then
-                      Replace_Type_Refs (ASIS_Expr, Rep_Typ);
-                      Preanalyze_Assert_Expression (ASIS_Expr, Any_Boolean);
-                   end if;
-                end if;
- 
-                --  A class-wide invariant may be inherited in a separate unit,
-                --  where the corresponding expression cannot be resolved by
-                --  visibility, because it refers to a local function. Propagate
-                --  semantic information to the original representation item, to
-                --  be used when an invariant procedure for a derived type is
-                --  constructed.
- 
-                --  ??? Unclear how to handle class-wide invariants that are not
-                --  function calls.
- 
-                if Class_Present (Prag)
-                  and then Nkind (Expr) = N_Function_Call
-                  and then Nkind (Arg2) = N_Indexed_Component
-                then
-                   Rewrite (Arg2,
-                     Make_Function_Call (Ploc,
-                       Name                   =>
-                         New_Occurrence_Of (Entity (Name (Expr)), Ploc),
-                       Parameter_Associations => Expressions (Arg2)));
-                end if;
-             end if;
- 
-             --  The invariant is ignored, nothing left to do
- 
-             if Is_Ignored (Prag) then
-                null;
- 
-             --  Otherwise the invariant is checked. Build a Check pragma to
-             --  verify the expression at runtime.
- 
-             else
-                Assoc := New_List (
-                  Make_Pragma_Argument_Association (Ploc,
-                    Expression => Make_Identifier (Ploc, Nam)),
-                  Make_Pragma_Argument_Association (Ploc,
-                    Expression => Expr));
- 
-                --  Handle the String argument (if any)
- 
-                if Present (Arg3) then
-                   Str := Strval (Get_Pragma_Arg (Arg3));
- 
-                   --  When inheriting an invariant, modify the message from
-                   --  "failed invariant" to "failed inherited invariant".
- 
-                   if Inherit then
-                      String_To_Name_Buffer (Str);
- 
-                      if Name_Buffer (1 .. 16) = "failed invariant" then
-                         Insert_Str_In_Name_Buffer ("inherited ", 8);
-                         Str := String_From_Name_Buffer;
-                      end if;
-                   end if;
- 
-                   Append_To (Assoc,
-                     Make_Pragma_Argument_Association (Ploc,
-                       Expression => Make_String_Literal (Ploc, Str)));
-                end if;
- 
-                --  Generate:
-                --    pragma Check (<Nam>, <Expr>, <Str>);
- 
-                Append_New_To (Checks,
-                  Make_Pragma (Ploc,
-                    Chars                        => Name_Check,
-                    Pragma_Argument_Associations => Assoc));
-             end if;
- 
-             --  Output an info message when inheriting an invariant and the
-             --  listing option is enabled.
- 
-             if Inherit and Opt.List_Inherited_Aspects then
-                Error_Msg_Sloc := Sloc (Prag);
-                Error_Msg_N
-                  ("info: & inherits `Invariant''Class` aspect from #?L?", Typ);
-             end if;
- 
-             --  Add the pragma to the list of processed pragmas
- 
-             Append_New_Elmt (Prag, Pragmas_Seen);
-             Produced_Check := True;
-          end Add_Invariant;
- 
-          ------------------
-          -- Process_Type --
-          ------------------
- 
-          procedure Process_Type
-            (T         : Entity_Id;
-             Stop_Item : Node_Id := Empty)
-          is
-             Rep_Item : Node_Id;
- 
-          begin
-             Rep_Item := First_Rep_Item (T);
-             while Present (Rep_Item) loop
-                if Nkind (Rep_Item) = N_Pragma
-                  and then Pragma_Name (Rep_Item) = Name_Invariant
-                then
-                   --  Stop the traversal of the rep item chain once a specific
-                   --  item is encountered.
- 
-                   if Present (Stop_Item) and then Rep_Item = Stop_Item then
-                      exit;
- 
-                   --  Otherwise generate an invariant check
- 
-                   else
-                      Add_Invariant (Rep_Item);
-                   end if;
-                end if;
- 
-                Next_Rep_Item (Rep_Item);
-             end loop;
-          end Process_Type;
- 
-       --  Start of processing for Add_Type_Invariants
- 
-       begin
-          --  Process the invariants of the partial view
- 
-          if Present (Priv_Typ) then
-             Process_Type (Priv_Typ);
-          end if;
- 
-          --  Process the invariants of the full view
- 
-          if Present (Full_Typ) then
-             Process_Type (Full_Typ, Stop_Item => Priv_Item);
- 
-             --  Process the elements of an array type
- 
-             if Is_Array_Type (Full_Typ) then
-                Add_Array_Component_Invariants (Full_Typ, Obj_Id, Checks);
- 
-             --  Process the components of a record type
- 
-             elsif Ekind (Full_Typ) = E_Record_Type then
-                Add_Record_Component_Invariants (Full_Typ, Obj_Id, Checks);
-             end if;
-          end if;
- 
-          --  Process the components of a corresponding record type
- 
-          if Present (CRec_Typ) then
-             Add_Record_Component_Invariants (CRec_Typ, Obj_Id, Checks);
-          end if;
-       end Add_Type_Invariants;
- 
-       ------------------------------------
-       -- Is_Untagged_Private_Derivation --
-       ------------------------------------
- 
-       function Is_Untagged_Private_Derivation
-         (Priv_Typ : Entity_Id;
-          Full_Typ : Entity_Id) return Boolean
-       is
-       begin
-          return
-            Present (Priv_Typ)
-              and then Is_Untagged_Derivation (Priv_Typ)
-              and then Is_Private_Type (Etype (Priv_Typ))
-              and then Present (Full_Typ)
-              and then Is_Itype (Full_Typ);
-       end Is_Untagged_Private_Derivation;
- 
-       --  Local variables
- 
-       Dummy        : Entity_Id;
-       Mode         : Ghost_Mode_Type;
-       Priv_Item    : Node_Id;
-       Proc_Body    : Node_Id;
-       Proc_Body_Id : Entity_Id;
-       Proc_Decl    : Node_Id;
-       Proc_Id      : Entity_Id;
-       Stmts        : List_Id := No_List;
- 
-       CRec_Typ : Entity_Id;
-       --  The corresponding record type of Full_Typ
- 
-       Full_Proc : Entity_Id;
-       --  The entity of the "full" invariant procedure
- 
-       Full_Typ : Entity_Id;
-       --  The full view of the working type
- 
-       Obj_Id : Entity_Id;
-       --  The _object formal parameter of the invariant procedure
- 
-       Part_Proc : Entity_Id;
-       --  The entity of the "partial" invariant procedure
- 
-       Priv_Typ : Entity_Id;
-       --  The partial view of the working type
- 
-       Work_Typ : Entity_Id;
-       --  The working type
- 
-    --  Start of processing for Build_Invariant_Procedure_Body
- 
-    begin
-       Work_Typ := Typ;
- 
-       --  The input type denotes the implementation base type of a constrained
-       --  array type. Work with the first subtype as all invariant pragmas are
-       --  on its rep item chain.
- 
-       if Ekind (Work_Typ) = E_Array_Type and then Is_Itype (Work_Typ) then
-          Work_Typ := First_Subtype (Work_Typ);
- 
-       --  The input type denotes the corresponding record type of a protected
-       --  or task type. Work with the concurrent type because the corresponding
-       --  record type may not be visible to clients of the type.
- 
-       elsif Ekind (Work_Typ) = E_Record_Type
-         and then Is_Concurrent_Record_Type (Work_Typ)
-       then
-          Work_Typ := Corresponding_Concurrent_Type (Work_Typ);
-       end if;
- 
-       --  The working type may be subject to pragma Ghost. Set the mode now to
-       --  ensure that the invariant procedure is properly marked as Ghost.
- 
-       Set_Ghost_Mode (Work_Typ, Mode);
- 
-       --  The type must either have invariants of its own, inherit class-wide
-       --  invariants from parent types or interfaces, or be an array or record
-       --  type whose components have invariants.
- 
-       pragma Assert (Has_Invariants (Work_Typ));
- 
-       --  Nothing to do for interface types as their class-wide invariants are
-       --  inherited by implementing types.
- 
-       if Is_Interface (Work_Typ) then
-          goto Leave;
-       end if;
- 
-       --  Obtain both views of the type
- 
-       Get_Views (Work_Typ, Priv_Typ, Full_Typ, Dummy, CRec_Typ);
- 
-       --  The caller requests a body for the partial invariant procedure
- 
-       if Partial_Invariant then
-          Full_Proc := Invariant_Procedure (Work_Typ);
-          Proc_Id   := Partial_Invariant_Procedure (Work_Typ);
- 
-          --  The "full" invariant procedure body was already created
- 
-          if Present (Full_Proc)
-            and then Present
-                       (Corresponding_Body (Unit_Declaration_Node (Full_Proc)))
-          then
-             --  This scenario happens only when the type is an untagged
-             --  derivation from a private parent and the underlying full
-             --  view was processed before the partial view.
- 
-             pragma Assert
-               (Is_Untagged_Private_Derivation (Priv_Typ, Full_Typ));
- 
-             --  Nothing to do because the processing of the underlying full
-             --  view already checked the invariants of the partial view.
- 
-             goto Leave;
-          end if;
- 
-          --  Create a declaration for the "partial" invariant procedure if it
-          --  is not available.
- 
-          if No (Proc_Id) then
-             Build_Invariant_Procedure_Declaration
-               (Typ               => Work_Typ,
-                Partial_Invariant => True);
- 
-             Proc_Id := Partial_Invariant_Procedure (Work_Typ);
-          end if;
- 
-       --  The caller requests a body for the "full" invariant procedure
- 
-       else
-          Proc_Id   := Invariant_Procedure (Work_Typ);
-          Part_Proc := Partial_Invariant_Procedure (Work_Typ);
- 
-          --  Create a declaration for the "full" invariant procedure if it is
-          --  not available.
- 
-          if No (Proc_Id) then
-             Build_Invariant_Procedure_Declaration (Work_Typ);
-             Proc_Id := Invariant_Procedure (Work_Typ);
-          end if;
-       end if;
- 
-       --  At this point there should be an invariant procedure declaration
- 
-       pragma Assert (Present (Proc_Id));
-       Proc_Decl := Unit_Declaration_Node (Proc_Id);
- 
-       --  Nothing to do if the invariant procedure already has a body
- 
-       if Present (Corresponding_Body (Proc_Decl)) then
-          goto Leave;
-       end if;
- 
-       --  Emulate the environment of the invariant procedure by installing
-       --  its scope and formal parameters. Note that this is not needed, but
-       --  having the scope of the invariant procedure installed helps with
-       --  the detection of invariant-related errors.
- 
-       Push_Scope (Proc_Id);
-       Install_Formals (Proc_Id);
- 
-       Obj_Id := First_Formal (Proc_Id);
-       pragma Assert (Present (Obj_Id));
- 
-       --  The "partial" invariant procedure verifies the invariants of the
-       --  partial view only.
- 
-       if Partial_Invariant then
-          pragma Assert (Present (Priv_Typ));
- 
-          Add_Type_Invariants
-            (Priv_Typ => Priv_Typ,
-             Full_Typ => Empty,
-             CRec_Typ => Empty,
-             Obj_Id   => Obj_Id,
-             Checks   => Stmts);
- 
-       --  Otherwise the "full" invariant procedure verifies the invariants of
-       --  the full view, all array or record components, as well as class-wide
-       --  invariants inherited from parent types or interfaces. In addition, it
-       --  indirectly verifies the invariants of the partial view by calling the
-       --  "partial" invariant procedure.
- 
-       else
-          pragma Assert (Present (Full_Typ));
- 
-          --  Check the invariants of the partial view by calling the "partial"
-          --  invariant procedure. Generate:
- 
-          --    <Work_Typ>Partial_Invariant (_object);
- 
-          if Present (Part_Proc) then
-             Append_New_To (Stmts,
-               Make_Procedure_Call_Statement (Loc,
-                 Name                   => New_Occurrence_Of (Part_Proc, Loc),
-                 Parameter_Associations => New_List (
-                   New_Occurrence_Of (Obj_Id, Loc))));
- 
-             Produced_Check := True;
-          end if;
- 
-          Priv_Item := Empty;
- 
-          --  Derived subtypes do not have a partial view
- 
-          if Present (Priv_Typ) then
- 
-             --  The processing of the "full" invariant procedure intentionally
-             --  skips the partial view because a) this may result in changes of
-             --  visibility and b) lead to duplicate checks. However, when the
-             --  full view is the underlying full view of an untagged derived
-             --  type whose parent type is private, partial invariants appear on
-             --  the rep item chain of the partial view only.
- 
-             --    package Pack_1 is
-             --       type Root ... is private;
-             --    private
-             --       <full view of Root>
-             --    end Pack_1;
- 
-             --    with Pack_1;
-             --    package Pack_2 is
-             --       type Child is new Pack_1.Root with Type_Invariant => ...;
-             --       <underlying full view of Child>
-             --    end Pack_2;
- 
-             --  As a result, the processing of the full view must also consider
-             --  all invariants of the partial view.
- 
-             if Is_Untagged_Private_Derivation (Priv_Typ, Full_Typ) then
-                null;
- 
-             --  Otherwise the invariants of the partial view are ignored
- 
-             else
-                --  Note that the rep item chain is shared between the partial
-                --  and full views of a type. To avoid processing the invariants
-                --  of the partial view, signal the logic to stop when the first
-                --  rep item of the partial view has been reached.
- 
-                Priv_Item := First_Rep_Item (Priv_Typ);
- 
-                --  Ignore the invariants of the partial view by eliminating the
-                --  view.
- 
-                Priv_Typ := Empty;
-             end if;
-          end if;
- 
-          --  Process the invariants of the full view and in certain cases those
-          --  of the partial view. This also handles any invariants on array or
-          --  record components.
- 
-          Add_Type_Invariants
-            (Priv_Typ  => Priv_Typ,
-             Full_Typ  => Full_Typ,
-             CRec_Typ  => CRec_Typ,
-             Obj_Id    => Obj_Id,
-             Checks    => Stmts,
-             Priv_Item => Priv_Item);
- 
-          --  Process the inherited class-wide invariants of all parent types.
-          --  This also handles any invariants on record components.
- 
-          Add_Parent_Invariants (Full_Typ, Obj_Id, Stmts);
- 
-          --  Process the inherited class-wide invariants of all implemented
-          --  interface types.
- 
-          Add_Interface_Invariants (Full_Typ, Obj_Id, Stmts);
-       end if;
- 
-       End_Scope;
- 
-       --  At this point there should be at least one invariant check. If this
-       --  is not the case, then the invariant-related flags were not properly
-       --  set, or there is a missing invariant procedure on one of the array
-       --  or record components.
- 
-       pragma Assert (Produced_Check);
- 
-       --  Account for the case where assertions are disabled or all invariant
-       --  checks are subject to Assertion_Policy Ignore. Produce a completing
-       --  empty body.
- 
-       if No (Stmts) then
-          Stmts := New_List (Make_Null_Statement (Loc));
-       end if;
- 
-       --  Generate:
-       --    procedure <Work_Typ>[Partial_]Invariant (_object : <Work_Typ>) is
-       --    begin
-       --       <Stmts>
-       --    end <Work_Typ>[Partial_]Invariant;
- 
-       Proc_Body :=
-         Make_Subprogram_Body (Loc,
-           Specification                =>
-             Copy_Subprogram_Spec (Parent (Proc_Id)),
-           Declarations                 => Empty_List,
-             Handled_Statement_Sequence =>
-               Make_Handled_Sequence_Of_Statements (Loc,
-                 Statements => Stmts));
-       Proc_Body_Id := Defining_Entity (Proc_Body);
- 
-       --  Perform minor decoration in case the body is not analyzed
- 
-       Set_Ekind (Proc_Body_Id, E_Subprogram_Body);
-       Set_Etype (Proc_Body_Id, Standard_Void_Type);
-       Set_Scope (Proc_Body_Id, Current_Scope);
- 
-       --  Link both spec and body to avoid generating duplicates
- 
-       Set_Corresponding_Body (Proc_Decl, Proc_Body_Id);
-       Set_Corresponding_Spec (Proc_Body, Proc_Id);
- 
-       --  The body should not be inserted into the tree when the context is
-       --  ASIS or a generic unit because it is not part of the template. Note
-       --  that the body must still be generated in order to resolve the
-       --  invariants.
- 
-       if ASIS_Mode or Inside_A_Generic then
-          null;
- 
-       --  Semi-insert the body into the tree for GNATprove by setting its
-       --  Parent field. This allows for proper upstream tree traversals.
- 
-       elsif GNATprove_Mode then
-          Set_Parent (Proc_Body, Parent (Declaration_Node (Work_Typ)));
- 
-       --  Otherwise the body is part of the freezing actions of the type
- 
-       else
-          Append_Freeze_Action (Work_Typ, Proc_Body);
-       end if;
- 
-    <<Leave>>
-       Restore_Ghost_Mode (Mode);
-    end Build_Invariant_Procedure_Body;
- 
-    -------------------------------------------
-    -- Build_Invariant_Procedure_Declaration --
-    -------------------------------------------
- 
-    --  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_Invariant_Procedure_Declaration
-      (Typ               : Entity_Id;
-       Partial_Invariant : Boolean := False)
-    is
-       Loc : constant Source_Ptr := Sloc (Typ);
- 
-       Mode      : Ghost_Mode_Type;
-       Proc_Decl : Node_Id;
-       Proc_Id   : Entity_Id;
-       Proc_Nam  : Name_Id;
-       Typ_Decl  : Node_Id;
- 
-       CRec_Typ : Entity_Id;
-       --  The corresponding record type of Full_Typ
- 
-       Full_Base : Entity_Id;
-       --  The base type of Full_Typ
- 
-       Full_Typ : Entity_Id;
-       --  The full view of working type
- 
-       Obj_Id : Entity_Id;
-       --  The _object formal parameter of the invariant procedure
- 
-       Priv_Typ : Entity_Id;
-       --  The partial view of working type
- 
-       Work_Typ : Entity_Id;
-       --  The working type
- 
-    begin
-       Work_Typ := Typ;
- 
-       --  The input type denotes the implementation base type of a constrained
-       --  array type. Work with the first subtype as all invariant pragmas are
-       --  on its rep item chain.
- 
-       if Ekind (Work_Typ) = E_Array_Type and then Is_Itype (Work_Typ) then
-          Work_Typ := First_Subtype (Work_Typ);
- 
-       --  The input denotes the corresponding record type of a protected or a
-       --  task type. Work with the concurrent type because the corresponding
-       --  record type may not be visible to clients of the type.
- 
-       elsif Ekind (Work_Typ) = E_Record_Type
-         and then Is_Concurrent_Record_Type (Work_Typ)
-       then
-          Work_Typ := Corresponding_Concurrent_Type (Work_Typ);
-       end if;
- 
-       --  The working type may be subject to pragma Ghost. Set the mode now to
-       --  ensure that the invariant procedure is properly marked as Ghost.
- 
-       Set_Ghost_Mode (Work_Typ, Mode);
- 
-       --  The type must either have invariants of its own, inherit class-wide
-       --  invariants from parent or interface types, or be an array or record
-       --  type whose components have invariants.
- 
-       pragma Assert (Has_Invariants (Work_Typ));
- 
-       --  Nothing to do for interface types as their class-wide invariants are
-       --  inherited by implementing types.
- 
-       if Is_Interface (Work_Typ) then
-          goto Leave;
- 
-       --  Nothing to do if the type already has a "partial" invariant procedure
- 
-       elsif Partial_Invariant then
-          if Present (Partial_Invariant_Procedure (Work_Typ)) then
-             goto Leave;
-          end if;
- 
-       --  Nothing to do if the type already has a "full" invariant procedure
- 
-       elsif Present (Invariant_Procedure (Work_Typ)) then
-          goto Leave;
-       end if;
- 
-       --  The caller requests the declaration of the "partial" invariant
-       --  procedure.
- 
-       if Partial_Invariant then
-          Proc_Nam := New_External_Name (Chars (Work_Typ), "Partial_Invariant");
- 
-       --  Otherwise the caller requests the declaration of the "full" invariant
-       --  procedure.
- 
-       else
-          Proc_Nam := New_External_Name (Chars (Work_Typ), "Invariant");
-       end if;
- 
-       Proc_Id := Make_Defining_Identifier (Loc, Chars => Proc_Nam);
- 
-       --  Perform minor decoration in case the declaration is not analyzed
- 
-       Set_Ekind (Proc_Id, E_Procedure);
-       Set_Etype (Proc_Id, Standard_Void_Type);
-       Set_Scope (Proc_Id, Current_Scope);
- 
-       if Partial_Invariant then
-          Set_Is_Partial_Invariant_Procedure (Proc_Id);
-          Set_Partial_Invariant_Procedure (Work_Typ, Proc_Id);
-       else
-          Set_Is_Invariant_Procedure (Proc_Id);
-          Set_Invariant_Procedure (Work_Typ, Proc_Id);
-       end if;
- 
-       --  The invariant procedure requires debug info when the invariants are
-       --  subject to Source Coverage Obligations.
- 
-       if Opt.Generate_SCO then
-          Set_Needs_Debug_Info (Proc_Id);
-       end if;
- 
-       --  Obtain all views of the input type
- 
-       Get_Views (Work_Typ, Priv_Typ, Full_Typ, Full_Base, CRec_Typ);
- 
-       --  Associate the invariant procedure with all views
- 
-       Propagate_Invariant_Attributes (Priv_Typ,  From_Typ => Work_Typ);
-       Propagate_Invariant_Attributes (Full_Typ,  From_Typ => Work_Typ);
-       Propagate_Invariant_Attributes (Full_Base, From_Typ => Work_Typ);
-       Propagate_Invariant_Attributes (CRec_Typ,  From_Typ => Work_Typ);
- 
-       --  The declaration of the invariant procedure is inserted after the
-       --  declaration of the partial view as this allows for proper external
-       --  visibility.
- 
-       if Present (Priv_Typ) then
-          Typ_Decl := Declaration_Node (Priv_Typ);
- 
-       --  Derived types with the full view as parent do not have a partial
-       --  view. Insert the invariant procedure after the derived type.
- 
-       else
-          Typ_Decl := Declaration_Node (Full_Typ);
-       end if;
- 
-       --  The type should have a declarative node
- 
-       pragma Assert (Present (Typ_Decl));
- 
-       --  Create the formal parameter which emulates the variable-like behavior
-       --  of the current type instance.
- 
-       Obj_Id := Make_Defining_Identifier (Loc, Chars => Name_uObject);
- 
-       --  Perform minor decoration in case the declaration is not analyzed
- 
-       Set_Ekind (Obj_Id, E_In_Parameter);
-       Set_Etype (Obj_Id, Work_Typ);
-       Set_Scope (Obj_Id, Proc_Id);
- 
-       Set_First_Entity (Proc_Id, Obj_Id);
- 
-       --  Generate:
-       --    procedure <Work_Typ>[Partial_]Invariant (_object : <Work_Typ>);
- 
-       Proc_Decl :=
-         Make_Subprogram_Declaration (Loc,
-           Specification =>
-             Make_Procedure_Specification (Loc,
-               Defining_Unit_Name       => Proc_Id,
-               Parameter_Specifications => New_List (
-                 Make_Parameter_Specification (Loc,
-                   Defining_Identifier => Obj_Id,
-                   Parameter_Type      =>
-                     New_Occurrence_Of (Work_Typ, Loc)))));
- 
-       --  The declaration should not be inserted into the tree when the context
-       --  is ASIS or a generic unit because it is not part of the template.
- 
-       if ASIS_Mode or Inside_A_Generic then
-          null;
- 
-       --  Semi-insert the declaration into the tree for GNATprove by setting
-       --  its Parent field. This allows for proper upstream tree traversals.
- 
-       elsif GNATprove_Mode then
-          Set_Parent (Proc_Decl, Parent (Typ_Decl));
- 
-       --  Otherwise insert the declaration
- 
-       else
-          pragma Assert (Present (Typ_Decl));
-          Insert_After_And_Analyze (Typ_Decl, Proc_Decl);
-       end if;
- 
-    <<Leave>>
-       Restore_Ghost_Mode (Mode);
-    end Build_Invariant_Procedure_Declaration;
- 
     ---------------------
     -- Build_Late_Proc --
     ---------------------
--- 3479,3484 ----
*************** package body Exp_Ch7 is
*** 5130,5142 ****
                Typ   => Typ,
                Stmts => Make_Deep_Record_Body (Finalize_Case, Typ)));
  
!          --  Create TSS primitive Finalize_Address
  
!          Set_TSS (Typ,
!            Make_Deep_Proc
!              (Prim  => Address_Case,
!               Typ   => Typ,
!               Stmts => Make_Deep_Record_Body (Address_Case, Typ)));
        end if;
     end Build_Record_Deep_Procs;
  
--- 3694,3708 ----
                Typ   => Typ,
                Stmts => Make_Deep_Record_Body (Finalize_Case, Typ)));
  
!          --  Create TSS primitive Finalize_Address (unless CodePeer_Mode)
  
!          if not CodePeer_Mode then
!             Set_TSS (Typ,
!               Make_Deep_Proc
!                 (Prim  => Address_Case,
!                  Typ   => Typ,
!                  Stmts => Make_Deep_Record_Body (Address_Case, Typ)));
!          end if;
        end if;
     end Build_Record_Deep_Procs;
  
*************** package body Exp_Ch7 is
*** 5497,5571 ****
  
     --  This procedure is called each time a transient block has to be inserted
     --  that is to say for each call to a function with unconstrained or tagged
!    --  result. It creates a new scope on the stack scope in order to enclose
     --  all transient variables generated.
  
!    procedure Establish_Transient_Scope (N : Node_Id; Sec_Stack : Boolean) is
!       Loc       : constant Source_Ptr := Sloc (N);
!       Iter_Loop : Entity_Id;
!       Wrap_Node : Node_Id;
! 
!    begin
!       --  Do not create a transient scope if we are already inside one
! 
!       for S in reverse Scope_Stack.First .. Scope_Stack.Last loop
!          if Scope_Stack.Table (S).Is_Transient then
!             if Sec_Stack then
!                Set_Uses_Sec_Stack (Scope_Stack.Table (S).Entity);
!             end if;
! 
!             return;
! 
!          --  If we encounter Standard there are no enclosing transient scopes
! 
!          elsif Scope_Stack.Table (S).Entity = Standard_Standard then
!             exit;
!          end if;
!       end loop;
  
!       Wrap_Node := Find_Node_To_Be_Wrapped (N);
  
!       --  The context does not contain a node that requires a transient scope,
!       --  nothing to do.
  
!       if No (Wrap_Node) then
!          null;
  
!       --  If the node to wrap is an iteration_scheme, the expression is one of
!       --  the bounds, and the expansion will make an explicit declaration for
!       --  it (see Analyze_Iteration_Scheme, sem_ch5.adb), so do not apply any
!       --  transformations here. Same for an Ada 2012 iterator specification,
!       --  where a block is created for the expression that build the container.
  
!       elsif Nkind_In (Wrap_Node, N_Iteration_Scheme,
!                                  N_Iterator_Specification)
!       then
!          null;
  
!       --  In formal verification mode, if the node to wrap is a pragma check,
!       --  this node and enclosed expression are not expanded, so do not apply
!       --  any transformations here.
  
!       elsif GNATprove_Mode
!         and then Nkind (Wrap_Node) = N_Pragma
!         and then Get_Pragma_Id (Wrap_Node) = Pragma_Check
!       then
!          null;
  
!       --  Create a block entity to act as a transient scope. Note that when the
!       --  node to be wrapped is an expression or a statement, a real physical
!       --  block is constructed (see routines Wrap_Transient_Expression and
!       --  Wrap_Transient_Statement) and inserted into the tree.
  
!       else
!          Push_Scope (New_Internal_Entity (E_Block, Current_Scope, Loc, 'B'));
           Set_Scope_Is_Transient;
  
!          --  The transient scope must also take care of the secondary stack
!          --  management.
  
!          if Sec_Stack then
!             Set_Uses_Sec_Stack (Current_Scope);
              Check_Restriction (No_Secondary_Stack, N);
  
              --  The expansion of iterator loops generates references to objects
--- 4063,4116 ----
  
     --  This procedure is called each time a transient block has to be inserted
     --  that is to say for each call to a function with unconstrained or tagged
!    --  result. It creates a new scope on the scope stack in order to enclose
     --  all transient variables generated.
  
!    procedure Establish_Transient_Scope
!      (N                : Node_Id;
!       Manage_Sec_Stack : Boolean)
!    is
!       procedure Create_Transient_Scope (Constr : Node_Id);
!       --  Place a new scope on the scope stack in order to service construct
!       --  Constr. The new scope may also manage the secondary stack.
  
!       procedure Delegate_Sec_Stack_Management;
!       --  Move the management of the secondary stack to the nearest enclosing
!       --  suitable scope.
  
!       function Find_Enclosing_Transient_Scope return Entity_Id;
!       --  Examine the scope stack looking for the nearest enclosing transient
!       --  scope. Return Empty if no such scope exists.
  
!       function Is_OK_Construct (Constr : Node_Id) return Boolean;
!       --  Determine whether arbitrary node Constr is a suitable construct which
!       --  requires handling by a transient scope.
  
!       function Is_Package_Or_Subprogram (Id : Entity_Id) return Boolean;
!       --  Determine whether arbitrary Id denotes a package or subprogram [body]
  
!       ----------------------------
!       -- Create_Transient_Scope --
!       ----------------------------
  
!       procedure Create_Transient_Scope (Constr : Node_Id) is
!          Loc : constant Source_Ptr := Sloc (N);
  
!          Iter_Loop  : Entity_Id;
!          Trans_Scop : Entity_Id;
  
!       begin
!          Trans_Scop := New_Internal_Entity (E_Block, Current_Scope, Loc, 'B');
!          Set_Etype (Trans_Scop, Standard_Void_Type);
  
!          Push_Scope (Trans_Scop);
!          Set_Node_To_Be_Wrapped (Constr);
           Set_Scope_Is_Transient;
  
!          --  The transient scope must also manage the secondary stack
  
!          if Manage_Sec_Stack then
!             Set_Uses_Sec_Stack (Trans_Scop);
              Check_Restriction (No_Secondary_Stack, N);
  
              --  The expansion of iterator loops generates references to objects
*************** package body Exp_Ch7 is
*** 5592,5611 ****
              --  machinery to manage the secondary stack (see routine
              --  Process_Statements_For_Controlled_Objects).
  
!             Iter_Loop := Find_Enclosing_Iterator_Loop (Current_Scope);
  
              if Present (Iter_Loop) then
                 Set_Uses_Sec_Stack (Iter_Loop);
              end if;
           end if;
  
-          Set_Etype (Current_Scope, Standard_Void_Type);
-          Set_Node_To_Be_Wrapped (Wrap_Node);
- 
           if Debug_Flag_W then
              Write_Str ("    <Transient>");
              Write_Eol;
           end if;
        end if;
     end Establish_Transient_Scope;
  
--- 4137,4316 ----
              --  machinery to manage the secondary stack (see routine
              --  Process_Statements_For_Controlled_Objects).
  
!             Iter_Loop := Find_Enclosing_Iterator_Loop (Trans_Scop);
  
              if Present (Iter_Loop) then
                 Set_Uses_Sec_Stack (Iter_Loop);
              end if;
           end if;
  
           if Debug_Flag_W then
              Write_Str ("    <Transient>");
              Write_Eol;
           end if;
+       end Create_Transient_Scope;
+ 
+       -----------------------------------
+       -- Delegate_Sec_Stack_Management --
+       -----------------------------------
+ 
+       procedure Delegate_Sec_Stack_Management is
+          Scop_Id  : Entity_Id;
+          Scop_Rec : Scope_Stack_Entry;
+ 
+       begin
+          for Index in reverse Scope_Stack.First .. Scope_Stack.Last loop
+             Scop_Rec := Scope_Stack.Table (Index);
+             Scop_Id  := Scop_Rec.Entity;
+ 
+             --  Prevent the search from going too far or within the scope space
+             --  of another unit.
+ 
+             if Scop_Id = Standard_Standard then
+                return;
+ 
+             --  No transient scope should be encountered during the traversal
+             --  because Establish_Transient_Scope should have already handled
+             --  this case.
+ 
+             elsif Scop_Rec.Is_Transient then
+                pragma Assert (False);
+                return;
+ 
+             --  The construct which requires secondary stack management is
+             --  always enclosed by a package or subprogram scope.
+ 
+             elsif Is_Package_Or_Subprogram (Scop_Id) then
+                Set_Uses_Sec_Stack (Scop_Id);
+                Check_Restriction (No_Secondary_Stack, N);
+ 
+                return;
+             end if;
+          end loop;
+ 
+          --  At this point no suitable scope was found. This should never occur
+          --  because a construct is always enclosed by a compilation unit which
+          --  has a scope.
+ 
+          pragma Assert (False);
+       end Delegate_Sec_Stack_Management;
+ 
+       ------------------------------------
+       -- Find_Enclosing_Transient_Scope --
+       ------------------------------------
+ 
+       function Find_Enclosing_Transient_Scope return Entity_Id is
+          Scop_Id   : Entity_Id;
+          Scop_Rec  : Scope_Stack_Entry;
+ 
+       begin
+          for Index in reverse Scope_Stack.First .. Scope_Stack.Last loop
+             Scop_Rec := Scope_Stack.Table (Index);
+             Scop_Id  := Scop_Rec.Entity;
+ 
+             --  Prevent the search from going too far or within the scope space
+             --  of another unit.
+ 
+             if Scop_Id = Standard_Standard
+               or else Is_Package_Or_Subprogram (Scop_Id)
+             then
+                exit;
+ 
+             elsif Scop_Rec.Is_Transient then
+                return Scop_Id;
+             end if;
+          end loop;
+ 
+          return Empty;
+       end Find_Enclosing_Transient_Scope;
+ 
+       ---------------------
+       -- Is_OK_Construct --
+       ---------------------
+ 
+       function Is_OK_Construct (Constr : Node_Id) return Boolean is
+       begin
+          --  Nothing to do when there is no construct to consider
+ 
+          if No (Constr) then
+             return False;
+ 
+          --  Nothing to do when the construct is an iteration scheme or an Ada
+          --  2012 iterator because the expression is one of the bounds, and the
+          --  expansion will create an explicit declaration for it (see routine
+          --  Analyze_Iteration_Scheme).
+ 
+          elsif Nkind_In (Constr, N_Iteration_Scheme,
+                                  N_Iterator_Specification)
+          then
+             return False;
+ 
+          --  Nothing to do in formal verification mode when the construct is
+          --  pragma Check, because the pragma remains unexpanded.
+ 
+          elsif GNATprove_Mode
+            and then Nkind (Constr) = N_Pragma
+            and then Get_Pragma_Id (Constr) = Pragma_Check
+          then
+             return False;
+          end if;
+ 
+          return True;
+       end Is_OK_Construct;
+ 
+       ------------------------------
+       -- Is_Package_Or_Subprogram --
+       ------------------------------
+ 
+       function Is_Package_Or_Subprogram (Id : Entity_Id) return Boolean is
+       begin
+          return Ekind_In (Id, E_Entry,
+                               E_Entry_Family,
+                               E_Function,
+                               E_Package,
+                               E_Procedure,
+                               E_Subprogram_Body);
+       end Is_Package_Or_Subprogram;
+ 
+       --  Local variables
+ 
+       Scop_Id : constant Entity_Id := Find_Enclosing_Transient_Scope;
+       Constr  : Node_Id;
+ 
+    --  Start of processing for Establish_Transient_Scope
+ 
+    begin
+       --  Do not create a new transient scope if there is an existing transient
+       --  scope on the stack.
+ 
+       if Present (Scop_Id) then
+ 
+          --  If the transient scope was requested for purposes of managing the
+          --  secondary stack, then the existing scope must perform this task.
+ 
+          if Manage_Sec_Stack then
+             Set_Uses_Sec_Stack (Scop_Id);
+          end if;
+ 
+          return;
+       end if;
+ 
+       --  At this point it is known that the scope stack is free of transient
+       --  scopes. Locate the proper construct which must be serviced by a new
+       --  transient scope.
+ 
+       Constr := Find_Node_To_Be_Wrapped (N);
+ 
+       if Is_OK_Construct (Constr) then
+          Create_Transient_Scope (Constr);
+ 
+       --  Otherwise there is no suitable construct which requires handling by
+       --  a transient scope. If the transient scope was requested for purposes
+       --  of managing the secondary stack, delegate the work to an enclosing
+       --  scope.
+ 
+       elsif Manage_Sec_Stack then
+          Delegate_Sec_Stack_Management;
        end if;
     end Establish_Transient_Scope;
  
*************** package body Exp_Ch7 is
*** 5614,5652 ****
     ----------------------------
  
     procedure Expand_Cleanup_Actions (N : Node_Id) is
        Scop : constant Entity_Id := Current_Scope;
  
!       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;
!       Needs_Sec_Stack_Mark : constant Boolean :=
!                                Uses_Sec_Stack (Scop)
!                                  and then
!                                    not Sec_Stack_Needed_For_Return (Scop);
!       Needs_Custom_Cleanup : constant Boolean :=
!                                Nkind (N) = N_Block_Statement
!                                  and then Present (Cleanup_Actions (N));
  
!       Actions_Required     : constant Boolean :=
!                                Requires_Cleanup_Actions (N, True)
!                                  or else Is_Asynchronous_Call
!                                  or else Is_Master
!                                  or else Is_Protected_Body
!                                  or else Is_Task_Allocation
!                                  or else Is_Task_Body
!                                  or else Needs_Sec_Stack_Mark
!                                  or else Needs_Custom_Cleanup;
  
        HSS : Node_Id := Handled_Statement_Sequence (N);
        Loc : Source_Ptr;
--- 4319,4364 ----
     ----------------------------
  
     procedure Expand_Cleanup_Actions (N : Node_Id) is
+       pragma Assert (Nkind_In (N, N_Block_Statement,
+                                   N_Entry_Body,
+                                   N_Extended_Return_Statement,
+                                   N_Subprogram_Body,
+                                   N_Task_Body));
+ 
        Scop : constant Entity_Id := Current_Scope;
  
!       Is_Asynchronous_Call   : constant Boolean :=
!                                  Nkind (N) = N_Block_Statement
!                                    and then Is_Asynchronous_Call_Block (N);
!       Is_Master              : constant Boolean :=
!                                  Nkind (N) /= N_Extended_Return_Statement
!                                    and then 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;
!       Needs_Sec_Stack_Mark   : constant Boolean :=
!                                  Uses_Sec_Stack (Scop)
!                                    and then
!                                      not Sec_Stack_Needed_For_Return (Scop);
!       Needs_Custom_Cleanup   : constant Boolean :=
!                                  Nkind (N) = N_Block_Statement
!                                    and then Present (Cleanup_Actions (N));
  
!       Actions_Required       : constant Boolean :=
!                                  Requires_Cleanup_Actions (N, True)
!                                    or else Is_Asynchronous_Call
!                                    or else Is_Master
!                                    or else Is_Protected_Subp_Body
!                                    or else Is_Task_Allocation
!                                    or else Is_Task_Body
!                                    or else Needs_Sec_Stack_Mark
!                                    or else Needs_Custom_Cleanup;
  
        HSS : Node_Id := Handled_Statement_Sequence (N);
        Loc : Source_Ptr;
*************** package body Exp_Ch7 is
*** 5715,5720 ****
--- 4427,4477 ----
           return;
        end if;
  
+       --  If an extended return statement contains something like
+       --
+       --     X := F (...);
+       --
+       --  where F is a build-in-place function call returning a controlled
+       --  type, then a temporary object will be implicitly declared as part
+       --  of the statement list, and this will need cleanup. In such cases,
+       --  we transform:
+       --
+       --    return Result : T := ... do
+       --       <statements> -- possibly with handlers
+       --    end return;
+       --
+       --  into:
+       --
+       --    return Result : T := ... do
+       --       declare -- no declarations
+       --       begin
+       --          <statements> -- possibly with handlers
+       --       end; -- no handlers
+       --    end return;
+       --
+       --  So Expand_Cleanup_Actions will end up being called recursively on the
+       --  block statement.
+ 
+       if Nkind (N) = N_Extended_Return_Statement then
+          declare
+             Block : constant Node_Id :=
+                       Make_Block_Statement (Sloc (N),
+                         Declarations               => Empty_List,
+                         Handled_Statement_Sequence =>
+                           Handled_Statement_Sequence (N));
+          begin
+             Set_Handled_Statement_Sequence (N,
+               Make_Handled_Sequence_Of_Statements (Sloc (N),
+                 Statements => New_List (Block)));
+ 
+             Analyze (Block);
+          end;
+ 
+          --  Analysis of the block did all the work
+ 
+          return;
+       end if;
+ 
        if Needs_Custom_Cleanup then
           Cln := Cleanup_Actions (N);
        else
*************** package body Exp_Ch7 is
*** 5883,5889 ****
        --  This is done only for non-generic packages
  
        if Ekind (Spec_Id) = E_Package then
!          Push_Scope (Corresponding_Spec (N));
  
           --  Build dispatch tables of library level tagged types
  
--- 4640,4646 ----
        --  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
  
*************** package body Exp_Ch7 is
*** 5895,5912 ****
  
           Build_Task_Activation_Call (N);
  
!          --  When the package is subject to pragma Initial_Condition, the
!          --  assertion expression must be verified at the end of the body
!          --  statements.
  
!          if Present (Get_Pragma (Spec_Id, Pragma_Initial_Condition)) then
!             Expand_Pragma_Initial_Condition (N);
!          end if;
  
           Pop_Scope;
        end if;
  
!       Set_Elaboration_Flag (N, Corresponding_Spec (N));
        Set_In_Package_Body (Spec_Id, False);
  
        --  Set to encode entity names in package body before gigi is called
--- 4652,4666 ----
  
           Build_Task_Activation_Call (N);
  
!          --  Verify the run-time semantics of pragma Initial_Condition at the
!          --  end of the body statements.
  
!          Expand_Pragma_Initial_Condition (Spec_Id, N);
  
           Pop_Scope;
        end if;
  
!       Set_Elaboration_Flag (N, Spec_Id);
        Set_In_Package_Body (Spec_Id, False);
  
        --  Set to encode entity names in package body before gigi is called
*************** package body Exp_Ch7 is
*** 6021,6034 ****
              Build_Task_Activation_Call (N);
           end if;
  
!          --  When the package is subject to pragma Initial_Condition and lacks
!          --  a body, the assertion expression must be verified at the end of
!          --  the visible declarations. Otherwise the check is performed at the
!          --  end of the body statements (see Expand_N_Package_Body).
  
!          if Present (Get_Pragma (Id, Pragma_Initial_Condition)) then
!             Expand_Pragma_Initial_Condition (N);
!          end if;
  
           Pop_Scope;
        end if;
--- 4775,4784 ----
              Build_Task_Activation_Call (N);
           end if;
  
!          --  Verify the run-time semantics of pragma Initial_Condition at the
!          --  end of the private declarations when the package lacks a body.
  
!          Expand_Pragma_Initial_Condition (Id, N);
  
           Pop_Scope;
        end if;
*************** package body Exp_Ch7 is
*** 6070,6139 ****
     -----------------------------
  
     function Find_Node_To_Be_Wrapped (N : Node_Id) return Node_Id is
!       P          : Node_Id;
!       The_Parent : Node_Id;
  
     begin
!       The_Parent := N;
!       P          := Empty;
        loop
!          case Nkind (The_Parent) is
! 
!             --  Simple statement can be wrapped
! 
!             when N_Pragma =>
!                return The_Parent;
! 
!             --  Usually assignments are good candidate for wrapping except
!             --  when they have been generated as part of a controlled aggregate
!             --  where the wrapping should take place more globally. Note that
!             --  No_Ctrl_Actions may be set also for non-controlled assignements
!             --  in order to disable the use of dispatching _assign, so we need
!             --  to test explicitly for a controlled type here.
! 
!             when N_Assignment_Statement =>
!                if No_Ctrl_Actions (The_Parent)
!                  and then Needs_Finalization (Etype (Name (The_Parent)))
!                then
!                   null;
!                else
!                   return The_Parent;
!                end if;
! 
!             --  An entry call statement is a special case if it occurs in the
!             --  context of a Timed_Entry_Call. In this case we wrap the entire
!             --  timed entry call.
  
!             when N_Entry_Call_Statement
!                | N_Procedure_Call_Statement
!             =>
!                if Nkind (Parent (The_Parent)) = N_Entry_Call_Alternative
!                  and then Nkind_In (Parent (Parent (The_Parent)),
!                                     N_Timed_Entry_Call,
!                                     N_Conditional_Entry_Call)
!                then
!                   return Parent (Parent (The_Parent));
!                else
!                   return The_Parent;
!                end if;
  
!             --  Object declarations are also a boundary for the transient scope
!             --  even if they are not really wrapped. For further details, see
!             --  Wrap_Transient_Declaration.
  
              when N_Object_Declaration
                 | N_Object_Renaming_Declaration
                 | N_Subtype_Declaration
              =>
!                return The_Parent;
  
!             --  The expression itself is to be wrapped if its parent is a
!             --  compound statement or any other statement where the expression
!             --  is known to be scalar.
  
              when N_Accept_Alternative
                 | N_Attribute_Definition_Clause
                 | N_Case_Statement
                 | N_Code_Statement
                 | N_Delay_Alternative
                 | N_Delay_Until_Statement
--- 4820,4854 ----
     -----------------------------
  
     function Find_Node_To_Be_Wrapped (N : Node_Id) return Node_Id is
!       Curr : Node_Id;
!       Prev : Node_Id;
  
     begin
!       Curr := N;
!       Prev := Empty;
        loop
!          case Nkind (Curr) is
  
!             --  Declarations
  
!             --  Declarations act as a boundary for a transient scope even if
!             --  they are not wrapped, see Wrap_Transient_Declaration.
  
              when N_Object_Declaration
                 | N_Object_Renaming_Declaration
                 | N_Subtype_Declaration
              =>
!                return Curr;
  
!             --  Statements
! 
!             --  Statements and statement-like constructs act as a boundary for
!             --  a transient scope.
  
              when N_Accept_Alternative
                 | N_Attribute_Definition_Clause
                 | N_Case_Statement
+                | N_Case_Statement_Alternative
                 | N_Code_Statement
                 | N_Delay_Alternative
                 | N_Delay_Until_Statement
*************** package body Exp_Ch7 is
*** 6146,6177 ****
                 | N_Iteration_Scheme
                 | N_Terminate_Alternative
              =>
!                pragma Assert (Present (P));
!                return P;
  
!             when N_Attribute_Reference =>
!                if Is_Procedure_Attribute_Name
!                     (Attribute_Name (The_Parent))
                 then
!                   return The_Parent;
                 end if;
  
!             --  A raise statement can be wrapped. This will arise when the
!             --  expression in a raise_with_expression uses the secondary
!             --  stack, for example.
  
!             when N_Raise_Statement =>
!                return The_Parent;
  
!             --  If the expression is within the iteration scheme of a loop,
!             --  we must create a declaration for it, followed by an assignment
!             --  in order to have a usable statement to wrap.
  
              when N_Loop_Parameter_Specification =>
!                return Parent (The_Parent);
  
!             --  The following nodes contains "dummy calls" which don't need to
!             --  be wrapped.
  
              when N_Component_Declaration
                 | N_Discriminant_Specification
--- 4861,4937 ----
                 | N_Iteration_Scheme
                 | N_Terminate_Alternative
              =>
!                pragma Assert (Present (Prev));
!                return Prev;
  
!             --  Assignment statements are usually wrapped in a transient block
!             --  except when they are generated as part of controlled aggregate
!             --  where the wrapping should take place more globally. Note that
!             --  No_Ctrl_Actions is set also for non-controlled assignments, in
!             --  order to disable the use of dispatching _assign, thus the test
!             --  for a controlled type.
! 
!             when N_Assignment_Statement =>
!                if No_Ctrl_Actions (Curr)
!                  and then Needs_Finalization (Etype (Name (Curr)))
                 then
!                   return Empty;
!                else
!                   return Curr;
                 end if;
  
!             --  An entry of procedure call is usually wrapped except when it
!             --  acts as the alternative of a conditional or timed entry call.
!             --  In that case wrap the context of the alternative.
  
!             when N_Entry_Call_Statement
!                | N_Procedure_Call_Statement
!             =>
!                if Nkind (Parent (Curr)) = N_Entry_Call_Alternative
!                  and then Nkind_In (Parent (Parent (Curr)),
!                                     N_Conditional_Entry_Call,
!                                     N_Timed_Entry_Call)
!                then
!                   return Parent (Parent (Curr));
!                else
!                   return Curr;
!                end if;
  
!             when N_Pragma
!                | N_Raise_Statement
!             =>
!                return Curr;
! 
!             --  A return statement is not wrapped when the associated function
!             --  would require wrapping.
! 
!             when N_Simple_Return_Statement =>
!                if Requires_Transient_Scope (Etype
!                     (Return_Applies_To (Return_Statement_Entity (Curr))))
!                then
!                   return Empty;
!                else
!                   return Curr;
!                end if;
! 
!             --  Special
! 
!             when N_Attribute_Reference =>
!                if Is_Procedure_Attribute_Name (Attribute_Name (Curr)) then
!                   return Curr;
!                end if;
! 
!             --  If the construct is within the iteration scheme of a loop, it
!             --  requires a declaration followed by an assignment, in order to
!             --  have a usable statement to wrap.
  
              when N_Loop_Parameter_Specification =>
!                return Parent (Curr);
  
!             --  Termination
! 
!             --  The following nodes represent "dummy contexts" which do not
!             --  need to be wrapped.
  
              when N_Component_Declaration
                 | N_Discriminant_Specification
*************** package body Exp_Ch7 is
*** 6179,6221 ****
              =>
                 return Empty;
  
!             --  The return statement is not to be wrapped when the function
!             --  itself needs wrapping at the outer-level
! 
!             when N_Simple_Return_Statement =>
!                declare
!                   Applies_To : constant Entity_Id :=
!                                  Return_Applies_To
!                                    (Return_Statement_Entity (The_Parent));
!                   Return_Type : constant Entity_Id := Etype (Applies_To);
!                begin
!                   if Requires_Transient_Scope (Return_Type) then
!                      return Empty;
!                   else
!                      return The_Parent;
!                   end if;
!                end;
! 
!             --  If we leave a scope without having been able to find a node to
!             --  wrap, something is going wrong but this can happen in error
!             --  situation that are not detected yet (such as a dynamic string
!             --  in a pragma export)
  
              when N_Block_Statement
                 | N_Package_Body
                 | N_Package_Declaration
                 | N_Subprogram_Body
              =>
                 return Empty;
  
!             --  Otherwise continue the search
  
              when others =>
                 null;
           end case;
  
!          P          := The_Parent;
!          The_Parent := Parent (P);
        end loop;
     end Find_Node_To_Be_Wrapped;
  
--- 4939,4967 ----
              =>
                 return Empty;
  
!             --  If the traversal leaves a scope without having been able to
!             --  find a construct to wrap, something is going wrong, but this
!             --  can happen in error situations that are not detected yet (such
!             --  as a dynamic string in a pragma Export).
  
              when N_Block_Statement
+                | N_Entry_Body
                 | N_Package_Body
                 | N_Package_Declaration
+                | N_Protected_Body
                 | N_Subprogram_Body
+                | N_Task_Body
              =>
                 return Empty;
  
!             --  Default
  
              when others =>
                 null;
           end case;
  
!          Prev := Curr;
!          Curr := Parent (Curr);
        end loop;
     end Find_Node_To_Be_Wrapped;
  
*************** package body Exp_Ch7 is
*** 6323,6330 ****
           Last_Object  : Node_Id;
           Related_Node : Node_Id)
        is
!          Exceptions_OK : constant Boolean :=
!                            not Restriction_Active (No_Exception_Propagation);
  
           Must_Hook : Boolean := False;
           --  Flag denoting whether the context requires transient object
--- 5069,5075 ----
           Last_Object  : Node_Id;
           Related_Node : Node_Id)
        is
!          Exceptions_OK : constant Boolean := Exceptions_In_Finalization_OK;
  
           Must_Hook : Boolean := False;
           --  Flag denoting whether the context requires transient object
*************** package body Exp_Ch7 is
*** 6629,6638 ****
              then
                 Loc := Sloc (Obj_Decl);
  
!                --  Before generating the clean up code for the first transient
                 --  object, create a wrapper block which houses all hook clear
                 --  statements and finalization calls. This wrapper is needed by
!                --  the back-end.
  
                 if not Built then
                    Built     := True;
--- 5374,5383 ----
              then
                 Loc := Sloc (Obj_Decl);
  
!                --  Before generating the cleanup code for the first transient
                 --  object, create a wrapper block which houses all hook clear
                 --  statements and finalization calls. This wrapper is needed by
!                --  the back end.
  
                 if not Built then
                    Built     := True;
*************** package body Exp_Ch7 is
*** 6718,6724 ****
     --  Start of processing for Insert_Actions_In_Scope_Around
  
     begin
!       if No (Act_Before) and then No (Act_After) and then No (Act_Cleanup) then
           return;
        end if;
  
--- 5463,5476 ----
     --  Start of processing for Insert_Actions_In_Scope_Around
  
     begin
!       --  Nothing to do if the scope does not manage the secondary stack or
!       --  does not contain meaninful actions for insertion.
! 
!       if not Manage_SS
!         and then No (Act_Before)
!         and then No (Act_After)
!         and then No (Act_Cleanup)
!       then
           return;
        end if;
  
*************** package body Exp_Ch7 is
*** 6986,6991 ****
--- 5738,5745 ----
       (Prim : Final_Primitives;
        Typ  : Entity_Id) return List_Id
     is
+       Exceptions_OK : constant Boolean := Exceptions_In_Finalization_OK;
+ 
        function Build_Adjust_Or_Finalize_Statements
          (Typ : Entity_Id) return List_Id;
        --  Create the statements necessary to adjust or finalize an array of
*************** package body Exp_Ch7 is
*** 7102,7113 ****
        function Build_Adjust_Or_Finalize_Statements
          (Typ : Entity_Id) return List_Id
        is
!          Comp_Typ      : constant Entity_Id  := Component_Type (Typ);
!          Exceptions_OK : constant Boolean    :=
!                            not Restriction_Active (No_Exception_Propagation);
!          Index_List    : constant List_Id    := New_List;
!          Loc           : constant Source_Ptr := Sloc (Typ);
!          Num_Dims      : constant Int        := Number_Dimensions (Typ);
  
           procedure Build_Indexes;
           --  Generate the indexes used in the dimension loops
--- 5856,5865 ----
        function Build_Adjust_Or_Finalize_Statements
          (Typ : Entity_Id) return List_Id
        is
!          Comp_Typ   : constant Entity_Id  := Component_Type (Typ);
!          Index_List : constant List_Id    := New_List;
!          Loc        : constant Source_Ptr := Sloc (Typ);
!          Num_Dims   : constant Int        := Number_Dimensions (Typ);
  
           procedure Build_Indexes;
           --  Generate the indexes used in the dimension loops
*************** package body Exp_Ch7 is
*** 7279,7291 ****
        ---------------------------------
  
        function Build_Initialize_Statements (Typ : Entity_Id) return List_Id is
!          Comp_Typ      : constant Entity_Id  := Component_Type (Typ);
!          Exceptions_OK : constant Boolean    :=
!                            not Restriction_Active (No_Exception_Propagation);
!          Final_List    : constant List_Id    := New_List;
!          Index_List    : constant List_Id    := New_List;
!          Loc           : constant Source_Ptr := Sloc (Typ);
!          Num_Dims      : constant Int        := Number_Dimensions (Typ);
  
           function Build_Assignment (Counter_Id : Entity_Id) return Node_Id;
           --  Generate the following assignment:
--- 6031,6041 ----
        ---------------------------------
  
        function Build_Initialize_Statements (Typ : Entity_Id) return List_Id is
!          Comp_Typ   : constant Entity_Id  := Component_Type (Typ);
!          Final_List : constant List_Id    := New_List;
!          Index_List : constant List_Id    := New_List;
!          Loc        : constant Source_Ptr := Sloc (Typ);
!          Num_Dims   : constant Int        := Number_Dimensions (Typ);
  
           function Build_Assignment (Counter_Id : Entity_Id) return Node_Id;
           --  Generate the following assignment:
*************** package body Exp_Ch7 is
*** 7587,7593 ****
  
           Init_Call := Build_Initialization_Call;
  
!          if Present (Init_Call) then
              Init_Loop :=
                Make_Block_Statement (Loc,
                  Handled_Statement_Sequence =>
--- 6337,6348 ----
  
           Init_Call := Build_Initialization_Call;
  
!          --  Only create finalization block if there is a non-trivial
!          --  call to initialization.
! 
!          if Present (Init_Call)
!            and then Nkind (Init_Call) /= N_Null_Statement
!          then
              Init_Loop :=
                Make_Block_Statement (Loc,
                  Handled_Statement_Sequence =>
*************** package body Exp_Ch7 is
*** 7794,7799 ****
--- 6549,6563 ----
            Handled_Statement_Sequence =>
              Make_Handled_Sequence_Of_Statements (Loc, Statements => Stmts)));
  
+       --  If there are no calls to component initialization, indicate that
+       --  the procedure is trivial, so prevent calls to it.
+ 
+       if Is_Empty_List (Stmts)
+         or else Nkind (First (Stmts)) = N_Null_Statement
+       then
+          Set_Is_Trivial_Subprogram (Proc_Id);
+       end if;
+ 
        return Proc_Id;
     end Make_Deep_Proc;
  
*************** package body Exp_Ch7 is
*** 7806,7811 ****
--- 6570,6577 ----
        Typ      : Entity_Id;
        Is_Local : Boolean := False) return List_Id
     is
+       Exceptions_OK : constant Boolean := Exceptions_In_Finalization_OK;
+ 
        function Build_Adjust_Statements (Typ : Entity_Id) return List_Id;
        --  Build the statements necessary to adjust a record type. The type may
        --  have discriminants and contain variant parts. Generate:
*************** package body Exp_Ch7 is
*** 7955,7971 ****
        -----------------------------
  
        function Build_Adjust_Statements (Typ : Entity_Id) return List_Id is
!          Exceptions_OK  : constant Boolean    :=
!                             not Restriction_Active (No_Exception_Propagation);
!          Loc            : constant Source_Ptr := Sloc (Typ);
!          Typ_Def        : constant Node_Id    :=
!                             Type_Definition (Parent (Typ));
  
!          Bod_Stmts       : List_Id;
!          Finalizer_Data  : Finalization_Exception_Data;
!          Finalizer_Decls : List_Id := No_List;
!          Rec_Def         : Node_Id;
!          Var_Case        : Node_Id;
  
           function Process_Component_List_For_Adjust
             (Comps : Node_Id) return List_Id;
--- 6721,6730 ----
        -----------------------------
  
        function Build_Adjust_Statements (Typ : Entity_Id) return List_Id is
!          Loc     : constant Source_Ptr := Sloc (Typ);
!          Typ_Def : constant Node_Id    := Type_Definition (Parent (Typ));
  
!          Finalizer_Data : Finalization_Exception_Data;
  
           function Process_Component_List_For_Adjust
             (Comps : Node_Id) return List_Id;
*************** package body Exp_Ch7 is
*** 8038,8043 ****
--- 6797,6803 ----
              Decl_Typ  : Entity_Id;
              Has_POC   : Boolean;
              Num_Comps : Nat;
+             Var_Case  : Node_Id;
  
           --  Start of processing for Process_Component_List_For_Adjust
  
*************** package body Exp_Ch7 is
*** 8167,8172 ****
--- 6927,6938 ----
              return Stmts;
           end Process_Component_List_For_Adjust;
  
+          --  Local variables
+ 
+          Bod_Stmts       : List_Id := No_List;
+          Finalizer_Decls : List_Id := No_List;
+          Rec_Def         : Node_Id;
+ 
        --  Start of processing for Build_Adjust_Statements
  
        begin
*************** package body Exp_Ch7 is
*** 8371,8388 ****
        -------------------------------
  
        function Build_Finalize_Statements (Typ : Entity_Id) return List_Id is
!          Exceptions_OK  : constant Boolean    :=
!                             not Restriction_Active (No_Exception_Propagation);
!          Loc            : constant Source_Ptr := Sloc (Typ);
!          Typ_Def        : constant Node_Id    :=
!                             Type_Definition (Parent (Typ));
  
!          Bod_Stmts       : List_Id;
!          Counter         : Int := 0;
!          Finalizer_Data  : Finalization_Exception_Data;
!          Finalizer_Decls : List_Id := No_List;
!          Rec_Def         : Node_Id;
!          Var_Case        : Node_Id;
  
           function Process_Component_List_For_Finalize
             (Comps : Node_Id) return List_Id;
--- 7137,7147 ----
        -------------------------------
  
        function Build_Finalize_Statements (Typ : Entity_Id) return List_Id is
!          Loc     : constant Source_Ptr := Sloc (Typ);
!          Typ_Def : constant Node_Id    := Type_Definition (Parent (Typ));
  
!          Counter        : Int := 0;
!          Finalizer_Data : Finalization_Exception_Data;
  
           function Process_Component_List_For_Finalize
             (Comps : Node_Id) return List_Id;
*************** package body Exp_Ch7 is
*** 8397,8435 ****
           function Process_Component_List_For_Finalize
             (Comps : Node_Id) return List_Id
           is
-             Alts       : List_Id;
-             Counter_Id : Entity_Id;
-             Decl       : Node_Id;
-             Decl_Id    : Entity_Id;
-             Decl_Typ   : Entity_Id;
-             Decls      : List_Id;
-             Has_POC    : Boolean;
-             Jump_Block : Node_Id;
-             Label      : Node_Id;
-             Label_Id   : Entity_Id;
-             Num_Comps  : Nat;
-             Stmts      : List_Id;
- 
              procedure Process_Component_For_Finalize
!               (Decl  : Node_Id;
!                Alts  : List_Id;
!                Decls : List_Id;
!                Stmts : List_Id);
              --  Process the declaration of a single controlled component. If
              --  flag Is_Local is enabled, create the corresponding label and
              --  jump circuitry. Alts is the list of case alternatives, Decls
              --  is the top level declaration list where labels are declared
!             --  and Stmts is the list of finalization actions.
  
              ------------------------------------
              -- Process_Component_For_Finalize --
              ------------------------------------
  
              procedure Process_Component_For_Finalize
!               (Decl  : Node_Id;
!                Alts  : List_Id;
!                Decls : List_Id;
!                Stmts : List_Id)
              is
                 Id       : constant Entity_Id := Defining_Identifier (Decl);
                 Typ      : constant Entity_Id := Etype (Id);
--- 7156,7184 ----
           function Process_Component_List_For_Finalize
             (Comps : Node_Id) return List_Id
           is
              procedure Process_Component_For_Finalize
!               (Decl      : Node_Id;
!                Alts      : List_Id;
!                Decls     : List_Id;
!                Stmts     : List_Id;
!                Num_Comps : in out Nat);
              --  Process the declaration of a single controlled component. If
              --  flag Is_Local is enabled, create the corresponding label and
              --  jump circuitry. Alts is the list of case alternatives, Decls
              --  is the top level declaration list where labels are declared
!             --  and Stmts is the list of finalization actions. Num_Comps
!             --  denotes the current number of components needing finalization.
  
              ------------------------------------
              -- Process_Component_For_Finalize --
              ------------------------------------
  
              procedure Process_Component_For_Finalize
!               (Decl      : Node_Id;
!                Alts      : List_Id;
!                Decls     : List_Id;
!                Stmts     : List_Id;
!                Num_Comps : in out Nat)
              is
                 Id       : constant Entity_Id := Defining_Identifier (Decl);
                 Typ      : constant Entity_Id := Etype (Id);
*************** package body Exp_Ch7 is
*** 8523,8528 ****
--- 7272,7293 ----
                 end if;
              end Process_Component_For_Finalize;
  
+             --  Local variables
+ 
+             Alts       : List_Id;
+             Counter_Id : Entity_Id := Empty;
+             Decl       : Node_Id;
+             Decl_Id    : Entity_Id;
+             Decl_Typ   : Entity_Id;
+             Decls      : List_Id;
+             Has_POC    : Boolean;
+             Jump_Block : Node_Id;
+             Label      : Node_Id;
+             Label_Id   : Entity_Id;
+             Num_Comps  : Nat;
+             Stmts      : List_Id;
+             Var_Case   : Node_Id;
+ 
           --  Start of processing for Process_Component_List_For_Finalize
  
           begin
*************** package body Exp_Ch7 is
*** 8630,8636 ****
                      and then Has_Access_Constraint (Decl_Id)
                      and then No (Expression (Decl))
                    then
!                      Process_Component_For_Finalize (Decl, Alts, Decls, Stmts);
                    end if;
  
                    Prev_Non_Pragma (Decl);
--- 7395,7402 ----
                      and then Has_Access_Constraint (Decl_Id)
                      and then No (Expression (Decl))
                    then
!                      Process_Component_For_Finalize
!                        (Decl, Alts, Decls, Stmts, Num_Comps);
                    end if;
  
                    Prev_Non_Pragma (Decl);
*************** package body Exp_Ch7 is
*** 8657,8663 ****
                    then
                       null;
                    else
!                      Process_Component_For_Finalize (Decl, Alts, Decls, Stmts);
                    end if;
                 end if;
  
--- 7423,7430 ----
                    then
                       null;
                    else
!                      Process_Component_For_Finalize
!                        (Decl, Alts, Decls, Stmts, Num_Comps);
                    end if;
                 end if;
  
*************** package body Exp_Ch7 is
*** 8743,8748 ****
--- 7510,7521 ----
              end if;
           end Process_Component_List_For_Finalize;
  
+          --  Local variables
+ 
+          Bod_Stmts       : List_Id := No_List;
+          Finalizer_Decls : List_Id := No_List;
+          Rec_Def         : Node_Id;
+ 
        --  Start of processing for Build_Finalize_Statements
  
        begin
*************** package body Exp_Ch7 is
*** 9258,9263 ****
--- 8031,8042 ----
           return;
        end if;
  
+       --  Do not generate Finalize_Address routine for CodePeer
+ 
+       if CodePeer_Mode then
+          return;
+       end if;
+ 
        Proc_Id :=
          Make_Defining_Identifier (Loc,
            Make_TSS_Name (Typ, TSS_Finalize_Address));
*************** package body Exp_Ch7 is
*** 9608,9613 ****
--- 8387,8404 ----
           Check_Visibly_Controlled (Initialize_Case, Typ, Proc, Ref);
        end if;
  
+       --  If initialization procedure for an array of controlled objects is
+       --  trivial, do not generate a useless call to it.
+ 
+       if (Is_Array_Type (Utyp) and then Is_Trivial_Subprogram (Proc))
+         or else
+           (not Comes_From_Source (Proc)
+             and then Present (Alias (Proc))
+             and then Is_Trivial_Subprogram (Alias (Proc)))
+       then
+          return Make_Null_Statement (Loc);
+       end if;
+ 
        --  The object reference may need another conversion depending on the
        --  type of the formal and that of the actual.
  
*************** package body Exp_Ch7 is
*** 9719,9801 ****
        Action : Node_Id;
        Par    : Node_Id) return Node_Id
     is
!       Decls  : constant List_Id := New_List;
!       Instrs : constant List_Id := New_List (Action);
        Block  : Node_Id;
        Insert : Node_Id;
  
     begin
!       --  Case where only secondary stack use is involved
  
!       if Uses_Sec_Stack (Current_Scope)
!         and then Nkind (Action) /= N_Simple_Return_Statement
!         and then Nkind (Par) /= N_Exception_Handler
!       then
!          declare
!             S : Entity_Id;
  
!          begin
!             S := Scope (Current_Scope);
!             loop
!                --  At the outer level, no need to release the sec stack
  
!                if S = Standard_Standard then
!                   Set_Uses_Sec_Stack (Current_Scope, False);
!                   exit;
  
!                --  In a function, only release the sec stack if the function
!                --  does not return on the sec stack otherwise the result may
!                --  be lost. The caller is responsible for releasing.
  
!                elsif Ekind (S) = E_Function then
!                   Set_Uses_Sec_Stack (Current_Scope, False);
  
!                   if not Requires_Transient_Scope (Etype (S)) then
!                      Set_Uses_Sec_Stack (S, True);
!                      Check_Restriction (No_Secondary_Stack, Action);
!                   end if;
  
!                   exit;
  
!                --  In a loop or entry we should install a block encompassing
!                --  all the construct. For now just release right away.
  
!                elsif Ekind_In (S, E_Entry, E_Loop) then
!                   exit;
  
!                --  In a procedure or a block, release the sec stack on exit
!                --  from the construct. Note that an exception handler with a
!                --  choice parameter requires a declarative region in the form
!                --  of a block. The block does not physically manifest in the
!                --  tree as it only serves as a scope. Do not consider such a
!                --  block because it will never release the sec stack.
  
!                --  ??? Memory leak can be created by recursive calls
  
!                elsif Ekind (S) = E_Procedure
!                  or else (Ekind (S) = E_Block
!                            and then not Is_Exception_Handler (S))
!                then
!                   Set_Uses_Sec_Stack (Current_Scope, False);
!                   Set_Uses_Sec_Stack (S, True);
!                   Check_Restriction (No_Secondary_Stack, Action);
!                   exit;
  
!                else
!                   S := Scope (S);
!                end if;
!             end loop;
!          end;
        end if;
  
        --  Create the transient block. Set the parent now since the block itself
!       --  is not part of the tree. The current scope is the E_Block entity
!       --  that has been pushed by Establish_Transient_Scope.
  
-       pragma Assert (Ekind (Current_Scope) = E_Block);
        Block :=
          Make_Block_Statement (Loc,
!           Identifier                 => New_Occurrence_Of (Current_Scope, Loc),
            Declarations               => Decls,
            Handled_Statement_Sequence =>
              Make_Handled_Sequence_Of_Statements (Loc, Statements => Instrs),
--- 8510,8638 ----
        Action : Node_Id;
        Par    : Node_Id) return Node_Id
     is
!       function Manages_Sec_Stack (Id : Entity_Id) return Boolean;
!       --  Determine whether scoping entity Id manages the secondary stack
! 
!       -----------------------
!       -- Manages_Sec_Stack --
!       -----------------------
! 
!       function Manages_Sec_Stack (Id : Entity_Id) return Boolean is
!       begin
!          case Ekind (Id) is
! 
!             --  An exception handler with a choice parameter utilizes a dummy
!             --  block to provide a declarative region. Such a block should not
!             --  be considered because it never manifests in the tree and can
!             --  never release the secondary stack.
! 
!             when E_Block =>
!                return
!                  Uses_Sec_Stack (Id) and then not Is_Exception_Handler (Id);
! 
!             when E_Entry
!                | E_Entry_Family
!                | E_Function
!                | E_Procedure
!             =>
!                return Uses_Sec_Stack (Id);
! 
!             when others =>
!                return False;
!          end case;
!       end Manages_Sec_Stack;
! 
!       --  Local variables
! 
!       Decls    : constant List_Id   := New_List;
!       Instrs   : constant List_Id   := New_List (Action);
!       Trans_Id : constant Entity_Id := Current_Scope;
! 
        Block  : Node_Id;
        Insert : Node_Id;
+       Scop   : Entity_Id;
+ 
+    --  Start of processing for Make_Transient_Block
  
     begin
!       --  Even though the transient block is tasked with managing the secondary
!       --  stack, the block may forgo this functionality depending on how the
!       --  secondary stack is managed by enclosing scopes.
  
!       if Manages_Sec_Stack (Trans_Id) then
  
!          --  Determine whether an enclosing scope already manages the secondary
!          --  stack.
  
!          Scop := Scope (Trans_Id);
!          while Present (Scop) loop
  
!             --  It should not be possible to reach Standard without hitting one
!             --  of the other cases first unless Standard was manually pushed.
  
!             if Scop = Standard_Standard then
!                exit;
  
!             --  The transient block is within a function which returns on the
!             --  secondary stack. Take a conservative approach and assume that
!             --  the value on the secondary stack is part of the result. Note
!             --  that it is not possible to detect this dependency without flow
!             --  analysis which the compiler does not have. Letting the object
!             --  live longer than the transient block will not leak any memory
!             --  because the caller will reclaim the total storage used by the
!             --  function.
  
!             elsif Ekind (Scop) = E_Function
!               and then Sec_Stack_Needed_For_Return (Scop)
!             then
!                Set_Uses_Sec_Stack (Trans_Id, False);
!                exit;
  
!             --  The transient block must manage the secondary stack when the
!             --  block appears within a loop in order to reclaim the memory at
!             --  each iteration.
  
!             elsif Ekind (Scop) = E_Loop then
!                exit;
  
!             --  The transient block does not need to manage the secondary stack
!             --  when there is an enclosing construct which already does that.
!             --  This optimization saves on SS_Mark and SS_Release calls but may
!             --  allow objects to live a little longer than required.
  
!             --  The transient block must manage the secondary stack when switch
!             --  -gnatd.s (strict management) is in effect.
  
!             elsif Manages_Sec_Stack (Scop) and then not Debug_Flag_Dot_S then
!                Set_Uses_Sec_Stack (Trans_Id, False);
!                exit;
  
!             --  Prevent the search from going too far because transient blocks
!             --  are bounded by packages and subprogram scopes.
! 
!             elsif Ekind_In (Scop, E_Entry,
!                                   E_Entry_Family,
!                                   E_Function,
!                                   E_Package,
!                                   E_Procedure,
!                                   E_Subprogram_Body)
!             then
!                exit;
!             end if;
! 
!             Scop := Scope (Scop);
!          end loop;
        end if;
  
        --  Create the transient block. Set the parent now since the block itself
!       --  is not part of the tree. The current scope is the E_Block entity that
!       --  has been pushed by Establish_Transient_Scope.
! 
!       pragma Assert (Ekind (Trans_Id) = E_Block);
  
        Block :=
          Make_Block_Statement (Loc,
!           Identifier                 => New_Occurrence_Of (Trans_Id, Loc),
            Declarations               => Decls,
            Handled_Statement_Sequence =>
              Make_Handled_Sequence_Of_Statements (Loc, Statements => Instrs),
*************** package body Exp_Ch7 is
*** 9810,9817 ****
          (Action, Clean => False, Manage_SS => False);
  
        Insert := Prev (Action);
        if Present (Insert) then
!          Freeze_All (First_Entity (Current_Scope), Insert);
        end if;
  
        --  Transfer cleanup actions to the newly created block
--- 8647,8655 ----
          (Action, Clean => False, Manage_SS => False);
  
        Insert := Prev (Action);
+ 
        if Present (Insert) then
!          Freeze_All (First_Entity (Trans_Id), Insert);
        end if;
  
        --  Transfer cleanup actions to the newly created block
*************** package body Exp_Ch7 is
*** 10009,10018 ****
        --       Finalizer;
        --    end;
  
!       --  A special case is made for Boolean expressions so that the back-end
        --  knows to generate a conditional branch instruction, if running with
!       --  -fpreserve-control-flow. This ensures that a control flow change
!       --  signalling the decision outcome occurs before the cleanup actions.
  
        if Opt.Suppress_Control_Flow_Optimizations
          and then Is_Boolean_Type (Typ)
--- 8847,8856 ----
        --       Finalizer;
        --    end;
  
!       --  A special case is made for Boolean expressions so that the back end
        --  knows to generate a conditional branch instruction, if running with
!       --  -fpreserve-control-flow. This ensures that a control-flow change
!       --  signaling the decision outcome occurs before the cleanup actions.
  
        if Opt.Suppress_Control_Flow_Optimizations
          and then Is_Boolean_Type (Typ)
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_ch7.ads gcc-8.1.0/gcc/ada/exp_ch7.ads
*** gcc-7.3.0/gcc/ada/exp_ch7.ads	Thu Jan 12 14:40:14 2017
--- gcc-8.1.0/gcc/ada/exp_ch7.ads	Thu Jan 11 08:54:12 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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
*** 118,138 ****
     --  finalization master must be analyzed. Insertion_Node is the insertion
     --  point before which the master is to be inserted.
  
-    procedure Build_Invariant_Procedure_Body
-      (Typ               : Entity_Id;
-       Partial_Invariant : Boolean := False);
-    --  Create the body of the procedure which verifies the invariants of type
-    --  Typ at runtime. Flag Partial_Invariant should be set when Typ denotes a
-    --  private type, otherwise it is assumed that Typ denotes the full view of
-    --  a private type.
- 
-    procedure Build_Invariant_Procedure_Declaration
-      (Typ               : Entity_Id;
-       Partial_Invariant : Boolean := False);
-    --  Create the declaration of the procedure which verifies the invariants of
-    --  type Typ at runtime. Flag Partial_Invariant should be set when building
-    --  the invariant procedure for a private type.
- 
     procedure Build_Late_Proc (Typ : Entity_Id; Nam : Name_Id);
     --  Build one controlling procedure when a late body overrides one of the
     --  controlling operations.
--- 118,123 ----
*************** package Exp_Ch7 is
*** 291,300 ****
     --  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; Sec_Stack : Boolean);
!    --  Push a new transient scope on the scope stack. N is the node responsible
!    --  for the need of a transient scope. If Sec_Stack is True then the
!    --  secondary stack is brought in, otherwise it isn't.
  
     function Node_To_Be_Wrapped return Node_Id;
     --  Return the node to be wrapped if the current scope is transient
--- 276,287 ----
     --  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;
!       Manage_Sec_Stack : Boolean);
!    --  Push a new transient scope on the scope stack. N is the node which must
!    --  be serviced by the transient scope. Set Manage_Sec_Stack when the scope
!    --  must mark and release the secondary stack.
  
     function Node_To_Be_Wrapped return Node_Id;
     --  Return the node to be wrapped if the current scope is transient
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_ch8.adb gcc-8.1.0/gcc/ada/exp_ch8.adb
*** gcc-7.3.0/gcc/ada/exp_ch8.adb	Fri Jan 13 09:34:48 2017
--- gcc-8.1.0/gcc/ada/exp_ch8.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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_Ch8 is
*** 176,193 ****
  
        --  Ada 2005 (AI-318-02): If the renamed object is a call to a build-in-
        --  place function, then a temporary return object needs to be created
!       --  and access to it must be passed to the function. Currently we limit
!       --  such functions to those with inherently limited result subtypes, but
!       --  eventually we plan to expand the functions that are treated as
!       --  build-in-place to include other composite result types.
  
!       if Ada_Version >= Ada_2005
!         and then Is_Build_In_Place_Function_Call (Nam)
!       then
           Make_Build_In_Place_Call_In_Anonymous_Context (Nam);
        end if;
  
!       --  Create renaming entry for debug information
  
        Decl := Debug_Renaming_Declaration (N);
  
--- 176,201 ----
  
        --  Ada 2005 (AI-318-02): If the renamed object is a call to a build-in-
        --  place function, then a temporary return object needs to be created
!       --  and access to it must be passed to the function.
  
!       if Is_Build_In_Place_Function_Call (Nam) then
           Make_Build_In_Place_Call_In_Anonymous_Context (Nam);
+ 
+       --  Ada 2005 (AI-318-02): Specialization of previous case for renaming
+       --  containing build-in-place function calls whose returned object covers
+       --  interface types.
+ 
+       elsif Present (Unqual_BIP_Iface_Function_Call (Nam)) then
+          Make_Build_In_Place_Iface_Call_In_Anonymous_Context (Nam);
        end if;
  
!       --  Create renaming entry for debug information. Mark the entity as
!       --  needing debug info if it comes from sources because the current
!       --  setting in Freeze_Entity occurs too late. ???
! 
!       if Comes_From_Source (Defining_Identifier (N)) then
!          Set_Debug_Info_Needed (Defining_Identifier (N));
!       end if;
  
        Decl := Debug_Renaming_Declaration (N);
  
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_ch8.ads gcc-8.1.0/gcc/ada/exp_ch8.ads
*** gcc-7.3.0/gcc/ada/exp_ch8.ads	Mon Nov  7 16:30:55 2011
--- gcc-8.1.0/gcc/ada/exp_ch8.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2011, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_ch9.adb gcc-8.1.0/gcc/ada/exp_ch9.adb
*** gcc-7.3.0/gcc/ada/exp_ch9.adb	Mon Jan 23 12:00:26 2017
--- gcc-8.1.0/gcc/ada/exp_ch9.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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,30 ****
  ------------------------------------------------------------------------------
  
  with Atree;    use Atree;
- with Checks;   use Checks;
  with Einfo;    use Einfo;
  with Elists;   use Elists;
  with Errout;   use Errout;
--- 24,29 ----
*************** with Stand;    use Stand;
*** 63,68 ****
--- 62,68 ----
  with Targparm; use Targparm;
  with Tbuild;   use Tbuild;
  with Uintp;    use Uintp;
+ with Validsw;  use Validsw;
  
  package body Exp_Ch9 is
  
*************** package body Exp_Ch9 is
*** 340,345 ****
--- 340,353 ----
     --  same parameter names and the same resolved types, but with new entities
     --  for the formals.
  
+    function Create_Secondary_Stack_For_Task (T : Node_Id) return Boolean;
+    --  Return whether a secondary stack for the task T should be created by the
+    --  expander. The secondary stack for a task will be created by the expander
+    --  if the size of the stack has been specified by the Secondary_Stack_Size
+    --  representation aspect and either the No_Implicit_Heap_Allocations or
+    --  No_Implicit_Task_Allocations restrictions are in effect and the
+    --  No_Secondary_Stack restriction is not.
+ 
     procedure Debug_Private_Data_Declarations (Decls : List_Id);
     --  Decls is a list which may contain the declarations created by Install_
     --  Private_Data_Declarations. All generated entities are marked as needing
*************** package body Exp_Ch9 is
*** 420,428 ****
     --  the Task_Body_Procedure of Spec_Id. The returned entity denotes formal
     --  parameter _E.
  
-    function Is_Exception_Safe (Subprogram : Node_Id) return Boolean;
-    --  Tell whether a given subprogram cannot raise an exception
- 
     function Is_Potentially_Large_Family
       (Base_Index : Entity_Id;
        Conctyp    : Entity_Id;
--- 428,433 ----
*************** package body Exp_Ch9 is
*** 2955,2961 ****
                               Ekind (Corresponding_Spec (N)) = E_Procedure;
              --  Indicates if N is a protected procedure body
  
!             Block_Decls   : List_Id;
              Try_Write     : Entity_Id;
              Desired_Comp  : Entity_Id;
              Decl          : Node_Id;
--- 2960,2966 ----
                               Ekind (Corresponding_Spec (N)) = E_Procedure;
              --  Indicates if N is a protected procedure body
  
!             Block_Decls   : List_Id := No_List;
              Try_Write     : Entity_Id;
              Desired_Comp  : Entity_Id;
              Decl          : Node_Id;
*************** package body Exp_Ch9 is
*** 3844,3849 ****
--- 3849,3860 ----
           Set_Original_Protected_Subprogram (New_Id, Def_Id);
        end if;
  
+       --  Link the protected or unprotected version to the original subprogram
+       --  it emulates.
+ 
+       Set_Ekind (New_Id, Ekind (Def_Id));
+       Set_Protected_Subprogram (New_Id, Def_Id);
+ 
        --  The unprotected operation carries the user code, and debugging
        --  information must be generated for it, even though this spec does
        --  not come from source. It is also convenient to allow gdb to step
*************** package body Exp_Ch9 is
*** 3888,3917 ****
        Pid       : Node_Id;
        N_Op_Spec : Node_Id) return Node_Id
     is
!       Loc         : constant Source_Ptr := Sloc (N);
!       Op_Spec     : Node_Id;
!       P_Op_Spec   : Node_Id;
!       Uactuals    : List_Id;
!       Pformal     : Node_Id;
!       Unprot_Call : Node_Id;
!       Sub_Body    : Node_Id;
        Lock_Name   : Node_Id;
        Lock_Stmt   : Node_Id;
        R           : Node_Id;
        Return_Stmt : Node_Id := Empty;    -- init to avoid gcc 3 warning
        Pre_Stmts   : List_Id := No_List;  -- init to avoid gcc 3 warning
        Stmts       : List_Id;
!       Object_Parm : Node_Id;
!       Exc_Safe    : Boolean;
!       Lock_Kind   : RE_Id;
  
     begin
-       Op_Spec := Specification (N);
-       Exc_Safe := Is_Exception_Safe (N);
- 
-       P_Op_Spec :=
-         Build_Protected_Sub_Specification (N, Pid, Protected_Mode);
- 
        --  Build a list of the formal parameters of the protected version of
        --  the subprogram to use as the actual parameters of the unprotected
        --  version.
--- 3899,3926 ----
        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);
!       P_Op_Spec : constant Node_Id :=
!                     Build_Protected_Sub_Specification (N, Pid, Protected_Mode);
! 
!       Lock_Kind   : RE_Id;
        Lock_Name   : Node_Id;
        Lock_Stmt   : Node_Id;
+       Object_Parm : Node_Id;
+       Pformal     : Node_Id;
        R           : Node_Id;
        Return_Stmt : Node_Id := Empty;    -- init to avoid gcc 3 warning
        Pre_Stmts   : List_Id := No_List;  -- init to avoid gcc 3 warning
        Stmts       : List_Id;
!       Sub_Body    : Node_Id;
!       Uactuals    : List_Id;
!       Unprot_Call : Node_Id;
  
     begin
        --  Build a list of the formal parameters of the protected version of
        --  the subprogram to use as the actual parameters of the unprotected
        --  version.
*************** package body Exp_Ch9 is
*** 4756,4766 ****
     --------------------------------
  
     procedure Build_Task_Activation_Call (N : Node_Id) is
!       Loc   : constant Source_Ptr := Sloc (N);
        Chain : Entity_Id;
        Call  : Node_Id;
        Name  : Node_Id;
!       P     : Node_Id;
  
     begin
        --  For sequential elaboration policy, all the tasks will be activated at
--- 4765,4803 ----
     --------------------------------
  
     procedure Build_Task_Activation_Call (N : Node_Id) is
!       function Activation_Call_Loc return Source_Ptr;
!       --  Find a suitable source location for the activation call
! 
!       -------------------------
!       -- Activation_Call_Loc --
!       -------------------------
! 
!       function Activation_Call_Loc return Source_Ptr is
!       begin
!          --  The activation call must carry the location of the "end" keyword
!          --  when the context is a package declaration.
! 
!          if Nkind (N) = N_Package_Declaration then
!             return End_Keyword_Location (N);
! 
!          --  Otherwise the activation call must carry the location of the
!          --  "begin" keyword.
! 
!          else
!             return Begin_Keyword_Location (N);
!          end if;
!       end Activation_Call_Loc;
! 
!       --  Local variables
! 
        Chain : Entity_Id;
        Call  : Node_Id;
+       Loc   : Source_Ptr;
        Name  : Node_Id;
!       Owner : Node_Id;
!       Stmt  : Node_Id;
! 
!    --  Start of processing for Build_Task_Activation_Call
  
     begin
        --  For sequential elaboration policy, all the tasks will be activated at
*************** package body Exp_Ch9 is
*** 4768,4870 ****
  
        if Partition_Elaboration_Policy = 'S' then
           return;
-       end if;
  
!       --  Get the activation chain entity. Except in the case of a package
!       --  body, this is in the node that was passed. For a package body, we
!       --  have to find the corresponding package declaration node.
  
!       if Nkind (N) = N_Package_Body then
!          P := Corresponding_Spec (N);
!          loop
!             P := Parent (P);
!             exit when Nkind (P) = N_Package_Declaration;
!          end loop;
  
!          Chain := Activation_Chain_Entity (P);
  
!       else
!          Chain := Activation_Chain_Entity (N);
        end if;
  
!       if Present (Chain) then
!          if Restricted_Profile then
!             Name := New_Occurrence_Of
!                       (RTE (RE_Activate_Restricted_Tasks), Loc);
!          else
!             Name := New_Occurrence_Of
!                       (RTE (RE_Activate_Tasks), Loc);
!          end if;
  
!          Call :=
!            Make_Procedure_Call_Statement (Loc,
!              Name                   => Name,
!              Parameter_Associations =>
!                New_List (Make_Attribute_Reference (Loc,
!                  Prefix         => New_Occurrence_Of (Chain, Loc),
!                  Attribute_Name => Name_Unchecked_Access)));
  
!          if Nkind (N) = N_Package_Declaration then
!             if Present (Corresponding_Body (N)) then
!                null;
  
!             elsif Present (Private_Declarations (Specification (N))) then
!                Append (Call, Private_Declarations (Specification (N)));
  
!             else
!                Append (Call, Visible_Declarations (Specification (N)));
!             end if;
  
!          else
!             if Present (Handled_Statement_Sequence (N)) then
  
!                --  The call goes at the start of the statement sequence after
!                --  the start of exception range label if one is present.
  
!                declare
!                   Stm : Node_Id;
  
!                begin
!                   Stm := First (Statements (Handled_Statement_Sequence (N)));
  
!                   --  A special case, skip exception range label if one is
!                   --  present (from front end zcx processing).
  
!                   if Nkind (Stm) = N_Label and then Exception_Junk (Stm) then
!                      Next (Stm);
!                   end if;
  
!                   --  Another special case, if the first statement is a block
!                   --  from optimization of a local raise to a goto, then the
!                   --  call goes inside this block.
  
!                   if Nkind (Stm) = N_Block_Statement
!                     and then Exception_Junk (Stm)
!                   then
!                      Stm :=
!                        First (Statements (Handled_Statement_Sequence (Stm)));
!                   end if;
  
!                   --  Insertion point is after any exception label pushes,
!                   --  since we want it covered by any local handlers.
  
!                   while Nkind (Stm) in N_Push_xxx_Label loop
!                      Next (Stm);
!                   end loop;
  
!                   --  Now we have the proper insertion point
  
!                   Insert_Before (Stm, Call);
!                end;
  
!             else
!                Set_Handled_Statement_Sequence (N,
!                   Make_Handled_Sequence_Of_Statements (Loc,
!                     Statements => New_List (Call)));
!             end if;
           end if;
  
!          Analyze (Call);
           Check_Task_Activation (N);
        end if;
     end Build_Task_Activation_Call;
--- 4805,4913 ----
  
        if Partition_Elaboration_Policy = 'S' then
           return;
  
!       --  Do not create an activation call for a package spec if the package
!       --  has a completing body. The activation call will be inserted after
!       --  the "begin" of the body.
  
!       elsif Nkind (N) = N_Package_Declaration
!         and then Present (Corresponding_Body (N))
!       then
!          return;
!       end if;
  
!       --  Obtain the activation chain entity. Block statements, entry bodies,
!       --  subprogram bodies, and task bodies keep the entity in their nodes.
!       --  Package bodies on the other hand store it in the declaration of the
!       --  corresponding package spec.
  
!       Owner := N;
! 
!       if Nkind (Owner) = N_Package_Body then
!          Owner := Unit_Declaration_Node (Corresponding_Spec (Owner));
        end if;
  
!       Chain := Activation_Chain_Entity (Owner);
  
!       --  Nothing to do when there are no tasks to activate. This is indicated
!       --  by a missing activation chain entity.
  
!       if No (Chain) then
!          return;
!       end if;
  
!       --  The location of the activation call must be as close as possible to
!       --  the intended semantic location of the activation because the ABE
!       --  mechanism relies heavily on accurate locations.
  
!       Loc := Activation_Call_Loc;
  
!       if Restricted_Profile then
!          Name := New_Occurrence_Of (RTE (RE_Activate_Restricted_Tasks), Loc);
!       else
!          Name := New_Occurrence_Of (RTE (RE_Activate_Tasks), Loc);
!       end if;
  
!       Call :=
!         Make_Procedure_Call_Statement (Loc,
!           Name                   => Name,
!           Parameter_Associations =>
!             New_List (Make_Attribute_Reference (Loc,
!               Prefix         => New_Occurrence_Of (Chain, Loc),
!               Attribute_Name => Name_Unchecked_Access)));
  
!       if Nkind (N) = N_Package_Declaration then
!          if Present (Private_Declarations (Specification (N))) then
!             Append (Call, Private_Declarations (Specification (N)));
!          else
!             Append (Call, Visible_Declarations (Specification (N)));
!          end if;
  
!       else
!          --  The call goes at the start of the statement sequence after the
!          --  start of exception range label if one is present.
  
!          if Present (Handled_Statement_Sequence (N)) then
!             Stmt := First (Statements (Handled_Statement_Sequence (N)));
  
!             --  A special case, skip exception range label if one is present
!             --  (from front end zcx processing).
  
!             if Nkind (Stmt) = N_Label and then Exception_Junk (Stmt) then
!                Next (Stmt);
!             end if;
  
!             --  Another special case, if the first statement is a block from
!             --  optimization of a local raise to a goto, then the call goes
!             --  inside this block.
  
!             if Nkind (Stmt) = N_Block_Statement
!               and then Exception_Junk (Stmt)
!             then
!                Stmt := First (Statements (Handled_Statement_Sequence (Stmt)));
!             end if;
  
!             --  Insertion point is after any exception label pushes, since we
!             --  want it covered by any local handlers.
  
!             while Nkind (Stmt) in N_Push_xxx_Label loop
!                Next (Stmt);
!             end loop;
  
!             --  Now we have the proper insertion point
  
!             Insert_Before (Stmt, Call);
! 
!          else
!             Set_Handled_Statement_Sequence (N,
!               Make_Handled_Sequence_Of_Statements (Loc,
!                 Statements => New_List (Call)));
           end if;
+       end if;
  
!       Analyze (Call);
! 
!       if Legacy_Elaboration_Checks then
           Check_Task_Activation (N);
        end if;
     end Build_Task_Activation_Call;
*************** package body Exp_Ch9 is
*** 5385,5390 ****
--- 5428,5447 ----
     end Convert_Concurrent;
  
     -------------------------------------
+    -- Create_Secondary_Stack_For_Task --
+    -------------------------------------
+ 
+    function Create_Secondary_Stack_For_Task (T : Node_Id) return Boolean is
+    begin
+       return
+         (Restriction_Active (No_Implicit_Heap_Allocations)
+           or else Restriction_Active (No_Implicit_Task_Allocations))
+         and then not Restriction_Active (No_Secondary_Stack)
+         and then Has_Rep_Pragma
+                    (T, Name_Secondary_Stack_Size, Check_Parents => False);
+    end Create_Secondary_Stack_For_Task;
+ 
+    -------------------------------------
     -- Debug_Private_Data_Declarations --
     -------------------------------------
  
*************** package body Exp_Ch9 is
*** 5927,5939 ****
     --------------------------
  
     procedure Expand_Entry_Barrier (N : Node_Id; Ent : Entity_Id) is
!       Cond      : constant Node_Id   :=
!                     Condition (Entry_Body_Formal_Part (N));
        Prot      : constant Entity_Id := Scope (Ent);
        Spec_Decl : constant Node_Id   := Parent (Prot);
!       Func      : Entity_Id          := Empty;
!       B_F       : Node_Id;
!       Body_Decl : Node_Id;
  
        function Is_Global_Entity (N : Node_Id) return Traverse_Result;
        --  Check whether entity in Barrier is external to protected type.
--- 5984,5995 ----
     --------------------------
  
     procedure Expand_Entry_Barrier (N : Node_Id; Ent : Entity_Id) is
!       Cond      : constant Node_Id   := Condition (Entry_Body_Formal_Part (N));
        Prot      : constant Entity_Id := Scope (Ent);
        Spec_Decl : constant Node_Id   := Parent (Prot);
! 
!       Func_Id : Entity_Id := Empty;
!       --  The entity of the barrier function
  
        function Is_Global_Entity (N : Node_Id) return Traverse_Result;
        --  Check whether entity in Barrier is external to protected type.
*************** package body Exp_Ch9 is
*** 5966,5972 ****
                 --  during expansion, it is ok. If expansion is not performed,
                 --  then Func is Empty so this test cannot succeed.
  
!                if Scope (E) = Func then
                    null;
  
                 --  A protected call from a barrier to another object is ok
--- 6022,6028 ----
                 --  during expansion, it is ok. If expansion is not performed,
                 --  then Func is Empty so this test cannot succeed.
  
!                if Scope (E) = Func_Id then
                    null;
  
                 --  A protected call from a barrier to another object is ok
*************** package body Exp_Ch9 is
*** 6005,6022 ****
           Renamed : Node_Id;
  
        begin
!          --  Check for case of _object.all.field (note that the explicit
!          --  dereference gets inserted by analyze/expand of _object.field).
  
           if Expander_Active then
!             Renamed := Renamed_Object (Entity (N));
  
              return
                Present (Renamed)
                  and then Nkind (Renamed) = N_Selected_Component
                  and then Chars (Prefix (Prefix (Renamed))) = Name_uObject;
           else
!             return Scope (Entity (N)) = Current_Scope;
           end if;
        end Is_Simple_Barrier_Name;
  
--- 6061,6090 ----
           Renamed : Node_Id;
  
        begin
!          --  Check if the name is a component of the protected object. If
!          --  the expander is active, the component has been transformed into a
!          --  renaming of _object.all.component. Original_Node is needed in case
!          --  validity checking is enabled, in which case the simple object
!          --  reference will have been rewritten.
  
           if Expander_Active then
! 
!             --  The expanded name may have been constant folded in which case
!             --  the original node is not necessarily an entity name (e.g. an
!             --  indexed component).
! 
!             if not Is_Entity_Name (Original_Node (N)) then
!                return False;
!             end if;
! 
!             Renamed := Renamed_Object (Entity (Original_Node (N)));
  
              return
                Present (Renamed)
                  and then Nkind (Renamed) = N_Selected_Component
                  and then Chars (Prefix (Prefix (Renamed))) = Name_uObject;
           else
!             return Is_Protected_Component (Entity (N));
           end if;
        end Is_Simple_Barrier_Name;
  
*************** package body Exp_Ch9 is
*** 6025,6049 ****
        ---------------------
  
        function Is_Pure_Barrier (N : Node_Id) return Traverse_Result is
-          function Is_Count_Attribute (N : Node_Id) return Boolean;
-          --  Check whether N is part of an expansion of the Count attribute.
-          --  Return True if N represents the expanded function call.
- 
-          ------------------------
-          -- Is_Count_Attribute --
-          ------------------------
- 
-          function Is_Count_Attribute (N : Node_Id) return Boolean is
-          begin
-             return
-               Nkind (N) = N_Function_Call
-                 and then Present (Original_Node (N))
-                 and then Nkind (Original_Node (N)) = N_Attribute_Reference
-                 and then Attribute_Name (Original_Node (N)) = Name_Count;
-          end Is_Count_Attribute;
- 
-       --  Start of processing for Is_Pure_Barrier
- 
        begin
           case Nkind (N) is
              when N_Expanded_Name
--- 6093,6098 ----
*************** package body Exp_Ch9 is
*** 6051,6061 ****
              =>
                 if No (Entity (N)) then
                    return Abandon;
-                end if;
  
!                if Present (Parent (N))
!                  and then Is_Count_Attribute (Parent (N))
!                then
                    return OK;
                 end if;
  
--- 6100,6107 ----
              =>
                 if No (Entity (N)) then
                    return Abandon;
  
!                elsif Is_Universal_Numeric_Type (Entity (N)) then
                    return OK;
                 end if;
  
*************** package body Exp_Ch9 is
*** 6068,6091 ****
                    =>
                       return OK;
  
!                   when E_Component
!                      | E_Variable
!                   =>
!                      --  A variable in the protected type is expanded as a
!                      --  component.
  
                       if Is_Simple_Barrier_Name (N) then
                          return OK;
                       end if;
  
                    when others =>
                       null;
                 end case;
  
              when N_Function_Call =>
!                if Is_Count_Attribute (N) then
!                   return OK;
!                end if;
  
              when N_Character_Literal
                 | N_Integer_Literal
--- 6114,6148 ----
                    =>
                       return OK;
  
!                   when E_Component =>
!                      return OK;
  
+                   when E_Variable =>
                       if Is_Simple_Barrier_Name (N) then
                          return OK;
                       end if;
  
+                   when E_Function =>
+ 
+                      --  The count attribute has been transformed into run-time
+                      --  calls.
+ 
+                      if Is_RTE (Entity (N), RE_Protected_Count)
+                        or else Is_RTE (Entity (N), RE_Protected_Count_Entry)
+                      then
+                         return OK;
+                      end if;
+ 
                    when others =>
                       null;
                 end case;
  
              when N_Function_Call =>
! 
!                --  Function call checks are carried out as part of the analysis
!                --  of the function call name.
! 
!                return OK;
  
              when N_Character_Literal
                 | N_Integer_Literal
*************** package body Exp_Ch9 is
*** 6103,6108 ****
--- 6160,6186 ----
              when N_Short_Circuit =>
                 return OK;
  
+             when N_Indexed_Component
+                | N_Selected_Component
+             =>
+                if not Is_Access_Type (Etype (Prefix (N))) then
+                   return OK;
+                end if;
+ 
+             when N_Type_Conversion =>
+ 
+                --  Conversions to Universal_Integer will not raise constraint
+                --  errors.
+ 
+                if Cannot_Raise_Constraint_Error (N)
+                  or else Etype (N) = Universal_Integer
+                then
+                   return OK;
+                end if;
+ 
+             when N_Unchecked_Type_Conversion =>
+                return OK;
+ 
              when others =>
                 null;
           end case;
*************** package body Exp_Ch9 is
*** 6112,6117 ****
--- 6190,6201 ----
  
        function Check_Pure_Barriers is new Traverse_Func (Is_Pure_Barrier);
  
+       --  Local variables
+ 
+       Cond_Id    : Entity_Id;
+       Entry_Body : Node_Id;
+       Func_Body  : Node_Id := Empty;
+ 
     --  Start of processing for Expand_Entry_Barrier
  
     begin
*************** package body Exp_Ch9 is
*** 6130,6149 ****
        --  version of it because it is never called.
  
        if Expander_Active then
!          B_F  := Build_Barrier_Function (N, Ent, Prot);
!          Func := Barrier_Function (Ent);
!          Set_Corresponding_Spec (B_F, Func);
  
!          Body_Decl := Parent (Corresponding_Body (Spec_Decl));
  
!          if Nkind (Parent (Body_Decl)) = N_Subunit then
!             Body_Decl := Corresponding_Stub (Parent (Body_Decl));
           end if;
  
!          Insert_Before_And_Analyze (Body_Decl, B_F);
  
           Set_Discriminals (Spec_Decl);
!          Set_Scope (Func, Scope (Prot));
  
        else
           Analyze_And_Resolve (Cond, Any_Boolean);
--- 6214,6233 ----
        --  version of it because it is never called.
  
        if Expander_Active then
!          Func_Body := Build_Barrier_Function (N, Ent, Prot);
!          Func_Id   := Barrier_Function (Ent);
!          Set_Corresponding_Spec (Func_Body, Func_Id);
  
!          Entry_Body := Parent (Corresponding_Body (Spec_Decl));
  
!          if Nkind (Parent (Entry_Body)) = N_Subunit then
!             Entry_Body := Corresponding_Stub (Parent (Entry_Body));
           end if;
  
!          Insert_Before_And_Analyze (Entry_Body, Func_Body);
  
           Set_Discriminals (Spec_Decl);
!          Set_Scope (Func_Id, Scope (Prot));
  
        else
           Analyze_And_Resolve (Cond, Any_Boolean);
*************** package body Exp_Ch9 is
*** 6167,6186 ****
        --  scope.
  
        if Is_Entity_Name (Cond) then
  
!          --  A small optimization of useless renamings. If the scope of the
!          --  entity of the condition is not the barrier function, then the
!          --  condition does not reference any of the generated renamings
!          --  within the function.
  
!          if Expander_Active and then Scope (Entity (Cond)) /= Func then
!             Set_Declarations (B_F, Empty_List);
           end if;
  
!          if Entity (Cond) = Standard_False
!               or else
!             Entity (Cond) = Standard_True
!          then
              return;
  
           elsif Is_Simple_Barrier_Name (Cond) then
--- 6251,6275 ----
        --  scope.
  
        if Is_Entity_Name (Cond) then
+          Cond_Id := Entity (Cond);
  
!          --  Perform a small optimization of simple barrier functions. If the
!          --  scope of the condition's entity is not the barrier function, then
!          --  the condition does not depend on any of the generated renamings.
!          --  If this is the case, eliminate the renamings as they are useless.
!          --  This optimization is not performed when the condition was folded
!          --  and validity checks are in effect because the original condition
!          --  may have produced at least one check that depends on the generated
!          --  renamings.
  
!          if Expander_Active
!            and then Scope (Cond_Id) /= Func_Id
!            and then not Validity_Check_Operands
!          then
!             Set_Declarations (Func_Body, Empty_List);
           end if;
  
!          if Cond_Id = Standard_False or else Cond_Id = Standard_True then
              return;
  
           elsif Is_Simple_Barrier_Name (Cond) then
*************** package body Exp_Ch9 is
*** 7509,7521 ****
  
           Cancel_Param := Make_Defining_Identifier (Loc, Name_uC);
  
!          --  Insert declaration of C in declarations of existing block
  
           Prepend_To (Decls,
             Make_Object_Declaration (Loc,
               Defining_Identifier => Cancel_Param,
!              Object_Definition   =>
!                New_Occurrence_Of (Standard_Boolean, Loc)));
  
           --  Remove and save the call to Call_Simple
  
--- 7598,7614 ----
  
           Cancel_Param := Make_Defining_Identifier (Loc, Name_uC);
  
!          --  Insert the declaration of C in the declarations of the existing
!          --  block. The variable is initialized to something (True or False,
!          --  does not matter) to prevent CodePeer from complaining about a
!          --  possible read of an uninitialized variable.
  
           Prepend_To (Decls,
             Make_Object_Declaration (Loc,
               Defining_Identifier => Cancel_Param,
!              Object_Definition   => New_Occurrence_Of (Standard_Boolean, Loc),
!              Expression          => New_Occurrence_Of (Standard_False, Loc),
!              Has_Init_Expression => True));
  
           --  Remove and save the call to Call_Simple
  
*************** package body Exp_Ch9 is
*** 8715,8726 ****
        --  to the internal body, for possible inlining later on. The source
        --  operation is invisible to the back-end and is never actually called.
  
-       function Discriminated_Size (Comp : Entity_Id) return Boolean;
-       --  If a component size is not static then a warning will be emitted
-       --  in Ravenscar or other restricted contexts. When a component is non-
-       --  static because of a discriminant constraint we can specialize the
-       --  warning by mentioning discriminants explicitly.
- 
        procedure Expand_Entry_Declaration (Decl : Node_Id);
        --  Create the entry barrier and the procedure body for entry declaration
        --  Decl. All generated subprograms are added to Entry_Bodies_Array.
--- 8808,8813 ----
*************** package body Exp_Ch9 is
*** 8748,8810 ****
           end if;
        end Check_Inlining;
  
-       ------------------------
-       -- Discriminated_Size --
-       ------------------------
- 
-       function Discriminated_Size (Comp : Entity_Id) return Boolean is
-          Typ   : constant Entity_Id := Etype (Comp);
-          Index : Node_Id;
- 
-          function Non_Static_Bound (Bound : Node_Id) return Boolean;
-          --  Check whether the bound of an index is non-static and does denote
-          --  a discriminant, in which case any protected object of the type
-          --  will have a non-static size.
- 
-          ----------------------
-          -- Non_Static_Bound --
-          ----------------------
- 
-          function Non_Static_Bound (Bound : Node_Id) return Boolean is
-          begin
-             if Is_OK_Static_Expression (Bound) then
-                return False;
- 
-             elsif Is_Entity_Name (Bound)
-               and then Present (Discriminal_Link (Entity (Bound)))
-             then
-                return False;
- 
-             else
-                return True;
-             end if;
-          end Non_Static_Bound;
- 
-       --  Start of processing for Discriminated_Size
- 
-       begin
-          if not Is_Array_Type (Typ) then
-             return False;
-          end if;
- 
-          if Ekind (Typ) = E_Array_Subtype then
-             Index := First_Index (Typ);
-             while Present (Index) loop
-                if Non_Static_Bound (Low_Bound (Index))
-                  or else Non_Static_Bound (High_Bound (Index))
-                then
-                   return False;
-                end if;
- 
-                Next_Index (Index);
-             end loop;
- 
-             return True;
-          end if;
- 
-          return False;
-       end Discriminated_Size;
- 
        ---------------------------
        -- Static_Component_Size --
        ---------------------------
--- 8835,8840 ----
*************** package body Exp_Ch9 is
*** 9970,9975 ****
--- 10000,10006 ----
           declare
              Elmt : Elmt_Id;
              Op   : Entity_Id;
+             pragma Warnings (Off, Op);
  
           begin
              Elmt := First_Elmt (Primitive_Operations (Etype (Conc_Typ)));
*************** package body Exp_Ch9 is
*** 10558,10563 ****
--- 10589,10599 ----
                Make_Defining_Identifier (Eloc,
                  New_External_Name (Chars (Ename), 'A', Num_Accept));
  
+             --  Link the acceptor to the original receiving entry
+ 
+             Set_Ekind           (PB_Ent, E_Procedure);
+             Set_Receiving_Entry (PB_Ent, Eent);
+ 
              if Comes_From_Source (Alt) then
                 Set_Debug_Info_Needed (PB_Ent);
              end if;
*************** package body Exp_Ch9 is
*** 11702,11707 ****
--- 11738,11744 ----
        Body_Decl  : Node_Id;
        Cdecls     : List_Id;
        Decl_Stack : Node_Id;
+       Decl_SS    : Node_Id;
        Elab_Decl  : Node_Id;
        Ent_Stack  : Entity_Id;
        Proc_Spec  : Node_Id;
*************** package body Exp_Ch9 is
*** 11896,11902 ****
                    Set_Analyzed (Task_Size);
  
                 else
!                   Task_Size := Relocate_Node (Expr_N);
                 end if;
              end;
  
--- 11933,11939 ----
                    Set_Analyzed (Task_Size);
  
                 else
!                   Task_Size := New_Copy_Tree (Expr_N);
                 end if;
              end;
  
*************** package body Exp_Ch9 is
*** 11929,11934 ****
--- 11966,12028 ----
  
        end if;
  
+       --  Declare a static secondary stack if the conditions for a statically
+       --  generated stack are met.
+ 
+       if Create_Secondary_Stack_For_Task (TaskId) then
+          declare
+             Size_Expr : constant Node_Id :=
+                           Expression (First (
+                             Pragma_Argument_Associations (
+                               Get_Rep_Pragma (TaskId,
+                                 Name_Secondary_Stack_Size))));
+ 
+             Stack_Size : Node_Id;
+ 
+          begin
+             --  The secondary stack is defined inside the corresponding
+             --  record. Therefore if the size of the stack is set by means
+             --  of a discriminant, we must reference the discriminant of the
+             --  corresponding record type.
+ 
+             if Nkind (Size_Expr) in N_Has_Entity
+               and then Present (Discriminal_Link (Entity (Size_Expr)))
+             then
+                Stack_Size :=
+                  New_Occurrence_Of
+                    (CR_Discriminant (Discriminal_Link (Entity (Size_Expr))),
+                     Loc);
+                Set_Parent   (Stack_Size, Parent (Size_Expr));
+                Set_Etype    (Stack_Size, Etype (Size_Expr));
+                Set_Analyzed (Stack_Size);
+ 
+             else
+                Stack_Size := New_Copy_Tree (Size_Expr);
+             end if;
+ 
+             --  Create the secondary stack for the task
+ 
+             Decl_SS :=
+               Make_Component_Declaration (Loc,
+                 Defining_Identifier  =>
+                   Make_Defining_Identifier (Loc, Name_uSecondary_Stack),
+                 Component_Definition =>
+                   Make_Component_Definition (Loc,
+                     Aliased_Present     => True,
+                     Subtype_Indication  =>
+                       Make_Subtype_Indication (Loc,
+                         Subtype_Mark =>
+                           New_Occurrence_Of (RTE (RE_SS_Stack), Loc),
+                         Constraint   =>
+                           Make_Index_Or_Discriminant_Constraint (Loc,
+                             Constraints  => New_List (
+                               Convert_To (RTE (RE_Size_Type),
+                                 Stack_Size))))));
+ 
+             Append_To (Cdecls, Decl_SS);
+          end;
+       end if;
+ 
        --  Add components for entry families
  
        Collect_Entry_Families (Loc, Cdecls, Size_Decl, Tasktyp);
*************** package body Exp_Ch9 is
*** 11964,11979 ****
  
               Expression =>
                 Convert_To (RTE (RE_Size_Type),
!                  Relocate_Node (
                     Expression (First (
                       Pragma_Argument_Associations (
                         Get_Rep_Pragma (TaskId, Name_Storage_Size))))))));
        end if;
  
        --  Add the _Secondary_Stack_Size component if a Secondary_Stack_Size
!       --  rep item is present.
  
!       if Has_Rep_Item
             (TaskId, Name_Secondary_Stack_Size, Check_Parents => False)
        then
           Append_To (Cdecls,
--- 12058,12073 ----
  
               Expression =>
                 Convert_To (RTE (RE_Size_Type),
!                  New_Copy_Tree (
                     Expression (First (
                       Pragma_Argument_Associations (
                         Get_Rep_Pragma (TaskId, Name_Storage_Size))))))));
        end if;
  
        --  Add the _Secondary_Stack_Size component if a Secondary_Stack_Size
!       --  pragma is present.
  
!       if Has_Rep_Pragma
             (TaskId, Name_Secondary_Stack_Size, Check_Parents => False)
        then
           Append_To (Cdecls,
*************** package body Exp_Ch9 is
*** 12026,12034 ****
  
        --  Add the _Relative_Deadline component if a Relative_Deadline pragma is
        --  present. If we are using a restricted run time this component will
!       --  not be added (deadlines are not allowed by the Ravenscar profile).
  
!       if not Restricted_Profile
          and then Present (Taskdef)
          and then Has_Relative_Deadline_Pragma (Taskdef)
        then
--- 12120,12130 ----
  
        --  Add the _Relative_Deadline component if a Relative_Deadline pragma is
        --  present. If we are using a restricted run time this component will
!       --  not be added (deadlines are not allowed by the Ravenscar profile),
!       --  unless the task dispatching policy is EDF (for GNAT_Ravenscar_EDF
!       --  profile).
  
!       if (not Restricted_Profile or else Task_Dispatching_Policy = 'E')
          and then Present (Taskdef)
          and then Has_Relative_Deadline_Pragma (Taskdef)
        then
*************** package body Exp_Ch9 is
*** 12045,12051 ****
  
               Expression =>
                 Convert_To (RTE (RE_Time_Span),
!                  Relocate_Node (
                     Expression (First (
                       Pragma_Argument_Associations (
                         Get_Relative_Deadline_Pragma (Taskdef))))))));
--- 12141,12147 ----
  
               Expression =>
                 Convert_To (RTE (RE_Time_Span),
!                  New_Copy_Tree (
                     Expression (First (
                       Pragma_Argument_Associations (
                         Get_Relative_Deadline_Pragma (Taskdef))))))));
*************** package body Exp_Ch9 is
*** 12270,12276 ****
        Call           : Node_Id;
        Call_Ent       : Entity_Id;
        Conc_Typ_Stmts : List_Id;
!       Concval        : Node_Id;
        D_Alt          : constant Node_Id := Delay_Alternative (N);
        D_Conv         : Node_Id;
        D_Disc         : Node_Id;
--- 12366,12372 ----
        Call           : Node_Id;
        Call_Ent       : Entity_Id;
        Conc_Typ_Stmts : List_Id;
!       Concval        : Node_Id := Empty; -- init to avoid warning
        D_Alt          : constant Node_Id := Delay_Alternative (N);
        D_Conv         : Node_Id;
        D_Disc         : Node_Id;
*************** package body Exp_Ch9 is
*** 12823,12833 ****
        end if;
  
        --  If the type of the dispatching object is an access type then return
!       --  an explicit dereference.
  
        if Is_Access_Type (Etype (Object)) then
!          Object := Make_Explicit_Dereference (Sloc (N), Object);
           Analyze (Object);
        end if;
     end Extract_Dispatching_Call;
  
--- 12919,12932 ----
        end if;
  
        --  If the type of the dispatching object is an access type then return
!       --  an explicit dereference  of a copy of the object, and note that this
!       --  is the controlling actual of the call.
  
        if Is_Access_Type (Etype (Object)) then
!          Object :=
!            Make_Explicit_Dereference (Sloc (N), New_Copy_Tree (Object));
           Analyze (Object);
+          Set_Is_Controlling_Actual (Object);
        end if;
     end Extract_Dispatching_Call;
  
*************** package body Exp_Ch9 is
*** 13357,13362 ****
--- 13456,13467 ----
                         Selector_Name => Make_Identifier (Loc, Chars (D))));
                 Add (Decl);
  
+                --  Set debug info needed on this renaming declaration even
+                --  though it does not come from source, so that the debugger
+                --  will get the right information for these generated names.
+ 
+                Set_Debug_Info_Needed (Discriminal (D));
+ 
                 Next_Discriminant (D);
              end loop;
           end;
*************** package body Exp_Ch9 is
*** 13526,13628 ****
        end if;
     end Install_Private_Data_Declarations;
  
-    -----------------------
-    -- Is_Exception_Safe --
-    -----------------------
- 
-    function Is_Exception_Safe (Subprogram : Node_Id) return Boolean is
- 
-       function Has_Side_Effect (N : Node_Id) return Boolean;
-       --  Return True whenever encountering a subprogram call or raise
-       --  statement of any kind in the sequence of statements
- 
-       ---------------------
-       -- Has_Side_Effect --
-       ---------------------
- 
-       --  What is this doing buried two levels down in exp_ch9. It seems like a
-       --  generally useful function, and indeed there may be code duplication
-       --  going on here ???
- 
-       function Has_Side_Effect (N : Node_Id) return Boolean is
-          Stmt : Node_Id;
-          Expr : Node_Id;
- 
-          function Is_Call_Or_Raise (N : Node_Id) return Boolean;
-          --  Indicate whether N is a subprogram call or a raise statement
- 
-          ----------------------
-          -- Is_Call_Or_Raise --
-          ----------------------
- 
-          function Is_Call_Or_Raise (N : Node_Id) return Boolean is
-          begin
-             return Nkind_In (N, N_Procedure_Call_Statement,
-                                 N_Function_Call,
-                                 N_Raise_Statement,
-                                 N_Raise_Constraint_Error,
-                                 N_Raise_Program_Error,
-                                 N_Raise_Storage_Error);
-          end Is_Call_Or_Raise;
- 
-       --  Start of processing for Has_Side_Effect
- 
-       begin
-          Stmt := N;
-          while Present (Stmt) loop
-             if Is_Call_Or_Raise (Stmt) then
-                return True;
-             end if;
- 
-             --  An object declaration can also contain a function call or a
-             --  raise statement.
- 
-             if Nkind (Stmt) = N_Object_Declaration then
-                Expr := Expression (Stmt);
- 
-                if Present (Expr) and then Is_Call_Or_Raise (Expr) then
-                   return True;
-                end if;
-             end if;
- 
-             Next (Stmt);
-          end loop;
- 
-          return False;
-       end Has_Side_Effect;
- 
-    --  Start of processing for Is_Exception_Safe
- 
-    begin
-       --  When exceptions can't be propagated, the subprogram returns normally
- 
-       if No_Exception_Handlers_Set then
-          return True;
-       end if;
- 
-       --  If the checks handled by the back end are not disabled, we cannot
-       --  ensure that no exception will be raised.
- 
-       if not Access_Checks_Suppressed (Empty)
-         or else not Discriminant_Checks_Suppressed (Empty)
-         or else not Range_Checks_Suppressed (Empty)
-         or else not Index_Checks_Suppressed (Empty)
-         or else Opt.Stack_Checking_Enabled
-       then
-          return False;
-       end if;
- 
-       if Has_Side_Effect (First (Declarations (Subprogram)))
-         or else
-           Has_Side_Effect
-             (First (Statements (Handled_Statement_Sequence (Subprogram))))
-       then
-          return False;
-       else
-          return True;
-       end if;
-    end Is_Exception_Safe;
- 
     ---------------------------------
     -- Is_Potentially_Large_Family --
     ---------------------------------
--- 13631,13636 ----
*************** package body Exp_Ch9 is
*** 13822,13827 ****
--- 13830,13875 ----
                New_Occurrence_Of (RTE (RE_Unspecified_Priority), Loc));
           end if;
  
+          --  Deadline_Floor parameter for GNAT_Ravenscar_EDF runtimes
+ 
+          if Restricted_Profile and Task_Dispatching_Policy = 'E' then
+             Deadline_Floor : declare
+                Item : constant Node_Id :=
+                         Get_Rep_Item
+                           (Ptyp, Name_Deadline_Floor, Check_Parents => False);
+ 
+                Deadline : Node_Id;
+ 
+             begin
+                if Present (Item) then
+ 
+                   --  Pragma Deadline_Floor
+ 
+                   if Nkind (Item) = N_Pragma then
+                      Deadline :=
+                        Expression
+                          (First (Pragma_Argument_Associations (Item)));
+ 
+                   --  Attribute definition clause Deadline_Floor
+ 
+                   else
+                      pragma Assert
+                        (Nkind (Item) = N_Attribute_Definition_Clause);
+ 
+                      Deadline := Expression (Item);
+                   end if;
+ 
+                   Append_To (Args, Deadline);
+ 
+                --  Unusual case: default deadline
+ 
+                else
+                   Append_To (Args,
+                     New_Occurrence_Of (RTE (RE_Time_Span_Zero), Loc));
+                end if;
+             end Deadline_Floor;
+          end if;
+ 
           --  Test for Compiler_Info parameter. This parameter allows entry body
           --  procedures and barrier functions to be called from the runtime. It
           --  is a pointer to the record generated by the compiler to represent
*************** package body Exp_Ch9 is
*** 14127,14141 ****
  
        --  Priority parameter. Set to Unspecified_Priority unless there is a
        --  Priority rep item, in which case we take the value from the rep item.
  
!       if Has_Rep_Item (Ttyp, Name_Priority, Check_Parents => False) then
!          Append_To (Args,
!            Make_Selected_Component (Loc,
!              Prefix        => Make_Identifier (Loc, Name_uInit),
!              Selector_Name => Make_Identifier (Loc, Name_uPriority)));
!       else
!          Append_To (Args,
!            New_Occurrence_Of (RTE (RE_Unspecified_Priority), Loc));
        end if;
  
        --  Optional Stack parameter
--- 14175,14192 ----
  
        --  Priority parameter. Set to Unspecified_Priority unless there is a
        --  Priority rep item, in which case we take the value from the rep item.
+       --  Not used on Ravenscar_EDF profile.
  
!       if not (Restricted_Profile and then Task_Dispatching_Policy = 'E') then
!          if Has_Rep_Item (Ttyp, Name_Priority, Check_Parents => False) then
!             Append_To (Args,
!               Make_Selected_Component (Loc,
!                 Prefix        => Make_Identifier (Loc, Name_uInit),
!                 Selector_Name => Make_Identifier (Loc, Name_uPriority)));
!          else
!             Append_To (Args,
!               New_Occurrence_Of (RTE (RE_Unspecified_Priority), Loc));
!          end if;
        end if;
  
        --  Optional Stack parameter
*************** package body Exp_Ch9 is
*** 14178,14193 ****
             New_Occurrence_Of (Storage_Size_Variable (Ttyp), Loc));
        end if;
  
!       --  Secondary_Stack_Size parameter. Set Default_Secondary_Stack_Size
!       --  unless there is a Secondary_Stack_Size rep item, in which case we
!       --  take the value from the rep item. If the restriction
!       --  No_Secondary_Stack is active then a size of 0 is passed regardless
!       --  to prevent the allocation of the unused stack.
  
        if Restriction_Active (No_Secondary_Stack) then
           Append_To (Args, Make_Integer_Literal (Loc, 0));
  
!       elsif Has_Rep_Item
                (Ttyp, Name_Secondary_Stack_Size, Check_Parents => False)
        then
           Append_To (Args,
--- 14229,14266 ----
             New_Occurrence_Of (Storage_Size_Variable (Ttyp), Loc));
        end if;
  
!       --  Secondary_Stack parameter used for restricted profiles
! 
!       if Restricted_Profile then
! 
!          --  If the secondary stack has been allocated by the expander then
!          --  pass its access pointer. Otherwise, pass null.
! 
!          if Create_Secondary_Stack_For_Task (Ttyp) then
!             Append_To (Args,
!               Make_Attribute_Reference (Loc,
!                 Prefix         =>
!                   Make_Selected_Component (Loc,
!                     Prefix        => Make_Identifier (Loc, Name_uInit),
!                     Selector_Name =>
!                       Make_Identifier (Loc, Name_uSecondary_Stack)),
!                 Attribute_Name => Name_Unrestricted_Access));
! 
!          else
!             Append_To (Args, Make_Null (Loc));
!          end if;
!       end if;
! 
!       --  Secondary_Stack_Size parameter. Set RE_Unspecified_Size unless there
!       --  is a Secondary_Stack_Size pragma, in which case take the value from
!       --  the pragma. If the restriction No_Secondary_Stack is active then a
!       --  size of 0 is passed regardless to prevent the allocation of the
!       --  unused stack.
  
        if Restriction_Active (No_Secondary_Stack) then
           Append_To (Args, Make_Integer_Literal (Loc, 0));
  
!       elsif Has_Rep_Pragma
                (Ttyp, Name_Secondary_Stack_Size, Check_Parents => False)
        then
           Append_To (Args,
*************** package body Exp_Ch9 is
*** 14231,14237 ****
             New_Occurrence_Of (RTE (RE_Unspecified_CPU), Loc));
        end if;
  
!       if not Restricted_Profile then
  
           --  Deadline parameter. If no Relative_Deadline pragma is present,
           --  then the deadline is Time_Span_Zero. If a pragma is present, then
--- 14304,14310 ----
             New_Occurrence_Of (RTE (RE_Unspecified_CPU), Loc));
        end if;
  
!       if not Restricted_Profile or else Task_Dispatching_Policy = 'E' then
  
           --  Deadline parameter. If no Relative_Deadline pragma is present,
           --  then the deadline is Time_Span_Zero. If a pragma is present, then
*************** package body Exp_Ch9 is
*** 14255,14260 ****
--- 14328,14336 ----
              Append_To (Args,
                New_Occurrence_Of (RTE (RE_Time_Span_Zero), Loc));
           end if;
+       end if;
+ 
+       if not Restricted_Profile then
  
           --  Dispatching_Domain parameter. If no Dispatching_Domain rep item is
           --  present, then the dispatching domain is null. If a rep item is
*************** package body Exp_Ch9 is
*** 14504,14509 ****
--- 14580,14591 ----
                  Object_Definition   =>
                    New_Occurrence_Of (Etype (Formal), Loc)));
  
+             --  The object is initialized with an explicit assignment
+             --  later. Indicate that it does not need an initialization
+             --  to prevent spurious warnings if the type excludes null.
+ 
+             Set_No_Initialization (Last (Decls));
+ 
              if Ekind (Formal) /= E_Out_Parameter then
  
                 --  Generate:
*************** package body Exp_Ch9 is
*** 14520,14534 ****
                     Expression => New_Copy_Tree (Actual)));
              end if;
  
!             --  Generate:
              --    Jnn'unchecked_access
  
!             Append_To (Params,
!               Make_Attribute_Reference (Loc,
!                 Attribute_Name => Name_Unchecked_Access,
!                 Prefix         => New_Occurrence_Of (Temp_Nam, Loc)));
  
!             Has_Param := True;
  
           --  The controlling parameter is omitted
  
--- 14602,14623 ----
                     Expression => New_Copy_Tree (Actual)));
              end if;
  
!             --  If the actual is not controlling, generate:
! 
              --    Jnn'unchecked_access
  
!             --  and add it to aggegate for access to formals. Note that the
!             --  actual may be by-copy but still be a controlling actual if it
!             --  is an access to class-wide interface.
  
!             if not Is_Controlling_Actual (Actual) then
!                Append_To (Params,
!                  Make_Attribute_Reference (Loc,
!                    Attribute_Name => Name_Unchecked_Access,
!                    Prefix         => New_Occurrence_Of (Temp_Nam, Loc)));
! 
!                Has_Param := True;
!             end if;
  
           --  The controlling parameter is omitted
  
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_ch9.ads gcc-8.1.0/gcc/ada/exp_ch9.ads
*** gcc-7.3.0/gcc/ada/exp_ch9.ads	Mon Jan 23 11:57:27 2017
--- gcc-8.1.0/gcc/ada/exp_ch9.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_code.adb gcc-8.1.0/gcc/ada/exp_code.adb
*** gcc-7.3.0/gcc/ada/exp_code.adb	Tue Apr 19 12:59:27 2016
--- gcc-8.1.0/gcc/ada/exp_code.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1996-2015, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or 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-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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 Einfo;    use Einfo;
  with Errout;   use Errout;
- with Fname;    use Fname;
  with Lib;      use Lib;
  with Namet;    use Namet;
  with Nlists;   use Nlists;
--- 26,31 ----
*************** package body Exp_Code is
*** 274,282 ****
           --  referenced entity is in a runtime routine.
  
           if Is_Entity_Name (N)
!            and then
!              Is_Predefined_File_Name (Unit_File_Name
!                                        (Get_Source_Unit (Entity (N))))
           then
              return;
  
--- 273,279 ----
           --  referenced entity is in a runtime routine.
  
           if Is_Entity_Name (N)
!            and then Is_Predefined_Unit (Get_Source_Unit (Entity (N)))
           then
              return;
  
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_code.ads gcc-8.1.0/gcc/ada/exp_code.ads
*** gcc-7.3.0/gcc/ada/exp_code.ads	Mon Sep 10 12:47:10 2007
--- gcc-8.1.0/gcc/ada/exp_code.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1996-2007, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or 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-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_dbug.adb gcc-8.1.0/gcc/ada/exp_dbug.adb
*** gcc-7.3.0/gcc/ada/exp_dbug.adb	Thu Jan 19 13:11:22 2017
--- gcc-8.1.0/gcc/ada/exp_dbug.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1996-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or 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-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with Alloc;    use Alloc;
  with Atree;    use Atree;
  with Debug;    use Debug;
  with Einfo;    use Einfo;
--- 23,29 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with Alloc;
  with Atree;    use Atree;
  with Debug;    use Debug;
  with Einfo;    use Einfo;
*************** package body Exp_Dbug is
*** 317,322 ****
--- 317,325 ----
        --    - when the renaming involves a packed array,
        --    - when the renaming involves a packed record.
  
+       Last_Is_Indexed_Comp : Boolean := False;
+       --  Whether the last subscript value was an indexed component access (XS)
+ 
        procedure Enable_If_Packed_Array (N : Node_Id);
        --  Enable encoding generation if N is a packed array
  
*************** package body Exp_Dbug is
*** 328,333 ****
--- 331,339 ----
        --  output in one of these two forms. The result is prepended to the
        --  name stored in Name_Buffer.
  
+       function Scope_Contains (Sc : Node_Id; Ent : Entity_Id) return Boolean;
+       --  Return whether Ent belong to the Sc scope
+ 
        ----------------------------
        -- Enable_If_Packed_Array --
        ----------------------------
*************** package body Exp_Dbug is
*** 337,344 ****
  
        begin
           Enable :=
!            Enable or else (Ekind (T) in Array_Kind
!                             and then Present (Packed_Array_Impl_Type (T)));
        end Enable_If_Packed_Array;
  
        ----------------------
--- 343,352 ----
  
        begin
           Enable :=
!            Enable
!              or else
!                (Ekind (T) in Array_Kind
!                  and then Present (Packed_Array_Impl_Type (T)));
        end Enable_If_Packed_Array;
  
        ----------------------
*************** package body Exp_Dbug is
*** 351,358 ****
              Prepend_Uint_To_Buffer (Expr_Value (N));
  
           elsif Nkind (N) = N_Identifier
!            and then Scope (Entity (N)) = Scope (Ent)
!            and then Ekind (Entity (N)) = E_Constant
           then
              Prepend_String_To_Buffer (Get_Name_String (Chars (Entity (N))));
  
--- 359,367 ----
              Prepend_Uint_To_Buffer (Expr_Value (N));
  
           elsif Nkind (N) = N_Identifier
!            and then Scope_Contains (Scope (Entity (N)), Ent)
!            and then (Ekind (Entity (N)) = E_Constant
!                       or else Ekind (Entity (N)) = E_In_Parameter)
           then
              Prepend_String_To_Buffer (Get_Name_String (Chars (Entity (N))));
  
*************** package body Exp_Dbug is
*** 364,375 ****
           return True;
        end Output_Subscript;
  
     --  Start of processing for Debug_Renaming_Declaration
  
     begin
!       if not Comes_From_Source (N)
!         and then not Needs_Debug_Info (Ent)
!       then
           return Empty;
        end if;
  
--- 373,401 ----
           return True;
        end Output_Subscript;
  
+       --------------------
+       -- Scope_Contains --
+       --------------------
+ 
+       function Scope_Contains (Sc : Node_Id; Ent : Entity_Id) return Boolean is
+          Cur : Node_Id := Scope (Ent);
+ 
+       begin
+          while Present (Cur) loop
+             if Cur = Sc then
+                return True;
+             end if;
+ 
+             Cur := Scope (Cur);
+          end loop;
+ 
+          return False;
+       end Scope_Contains;
+ 
     --  Start of processing for Debug_Renaming_Declaration
  
     begin
!       if not Comes_From_Source (N) and then not Needs_Debug_Info (Ent) then
           return Empty;
        end if;
  
*************** package body Exp_Dbug is
*** 378,401 ****
        Name_Len := 0;
        Ren := Nam;
        loop
!          case Nkind (Ren) is
!             when N_Identifier =>
!                exit;
  
!             when N_Expanded_Name =>
  
!                --  The entity field for an N_Expanded_Name is on the expanded
!                --  name node itself, so we are done here too.
  
!                exit;
  
              when N_Selected_Component =>
                 declare
!                   First_Bit : constant Uint :=
!                                 Normalized_First_Bit
!                                   (Entity (Selector_Name (Ren)));
  
                 begin
                    Enable :=
                      Enable
                        or else Is_Packed
--- 404,445 ----
        Name_Len := 0;
        Ren := Nam;
        loop
!          --  The expression that designates the renamed object is sometimes
!          --  expanded into bit-wise operations. We want to work instead on
!          --  array/record components accesses, so try to analyze the unexpanded
!          --  forms.
  
!          Ren := Original_Node (Ren);
  
!          case Nkind (Ren) is
!             when N_Expanded_Name
!                | N_Identifier
!             =>
!                if not Present (Renamed_Object (Entity (Ren))) then
!                   exit;
!                end if;
  
!                --  This is a renaming of a renaming: traverse until the final
!                --  renaming to see if anything is packed along the way.
! 
!                Ren := Renamed_Object (Entity (Ren));
  
              when N_Selected_Component =>
                 declare
!                   Sel_Id    : constant Entity_Id :=
!                                 Entity (Selector_Name (Ren));
!                   First_Bit : Uint;
  
                 begin
+                   --  If the renaming involves a call to a primitive function,
+                   --  we are out of the scope of renaming encodings. We will
+                   --  very likely create a variable to hold the renamed value
+                   --  anyway, so the renaming entity will be available in
+                   --  debuggers.
+ 
+                   exit when not Ekind_In (Sel_Id, E_Component, E_Discriminant);
+ 
+                   First_Bit := Normalized_First_Bit (Sel_Id);
                    Enable :=
                      Enable
                        or else Is_Packed
*************** package body Exp_Dbug is
*** 408,413 ****
--- 452,458 ----
                   (Get_Name_String (Chars (Selector_Name (Ren))));
                 Prepend_String_To_Buffer ("XR");
                 Ren := Prefix (Ren);
+                Last_Is_Indexed_Comp := False;
  
              when N_Indexed_Component =>
                 declare
*************** package body Exp_Dbug is
*** 424,446 ****
                       end if;
  
                       Prev (X);
                    end loop;
                 end;
  
                 Ren := Prefix (Ren);
  
              when N_Slice =>
-                Enable_If_Packed_Array (Prefix (Ren));
-                Typ := Etype (First_Index (Etype (Nam)));
  
!                if not Output_Subscript (Type_High_Bound (Typ), "XS") then
!                   Set_Materialize_Entity (Ent);
!                   return Empty;
!                end if;
  
!                if not Output_Subscript (Type_Low_Bound  (Typ), "XL") then
!                   Set_Materialize_Entity (Ent);
!                   return Empty;
                 end if;
  
                 Ren := Prefix (Ren);
--- 469,506 ----
                       end if;
  
                       Prev (X);
+                      Last_Is_Indexed_Comp := True;
                    end loop;
                 end;
  
                 Ren := Prefix (Ren);
  
              when N_Slice =>
  
!                --  Assuming X is an array:
!                --      X (Y1 .. Y2) (Y3)
  
!                --  is equivalent to:
!                --      X (Y3)
! 
!                --  GDB cannot handle packed array slices, so avoid describing
!                --  the slice if we can avoid it.
! 
!                if not Last_Is_Indexed_Comp then
!                   Enable_If_Packed_Array (Prefix (Ren));
!                   Typ := Etype (First_Index (Etype (Ren)));
! 
!                   if not Output_Subscript (Type_High_Bound (Typ), "XS") then
!                      Set_Materialize_Entity (Ent);
!                      return Empty;
!                   end if;
! 
!                   if not Output_Subscript (Type_Low_Bound  (Typ), "XL") then
!                      Set_Materialize_Entity (Ent);
!                      return Empty;
!                   end if;
! 
!                   Last_Is_Indexed_Comp := False;
                 end if;
  
                 Ren := Prefix (Ren);
*************** package body Exp_Dbug is
*** 448,453 ****
--- 508,514 ----
              when N_Explicit_Dereference =>
                 Prepend_String_To_Buffer ("XA");
                 Ren := Prefix (Ren);
+                Last_Is_Indexed_Comp := False;
  
              --  For now, anything else simply results in no translation
  
*************** package body Exp_Dbug is
*** 800,806 ****
          and then No (Address_Clause (E))
          and then not Has_Suffix
        then
!          Add_String_To_Name_Buffer (Strval (Interface_Name (E)));
  
        --  All other cases besides the interface name case
  
--- 861,867 ----
          and then No (Address_Clause (E))
          and then not Has_Suffix
        then
!          Append (Global_Name_Buffer, Strval (Interface_Name (E)));
  
        --  All other cases besides the interface name case
  
*************** package body Exp_Dbug is
*** 840,845 ****
--- 901,927 ----
           Add_Str_To_Name_Buffer (Suffix);
        end if;
  
+       --  Add a special prefix to distinguish Ghost entities. In Ignored Ghost
+       --  mode, these entities should not leak in the "living" space and they
+       --  should be removed by the compiler in a post-processing pass. Thus,
+       --  the prefix allows anyone to check that the final executable indeed
+       --  does not contain such entities, in such a case. Do not insert this
+       --  prefix for compilation units, whose name is used as a basis for the
+       --  name of the generated elaboration procedure and (when appropriate)
+       --  the executable produced. Only insert this prefix once, for Ghost
+       --  entities declared inside other Ghost entities. Three leading
+       --  underscores are used so that "___ghost_" is a unique substring of
+       --  names produced for Ghost entities, while "__ghost_" can appear in
+       --  names of entities inside a child/local package called "Ghost".
+ 
+       if Is_Ghost_Entity (E)
+         and then not Is_Compilation_Unit (E)
+         and then (Name_Len < 9
+                    or else Name_Buffer (1 .. 9) /= "___ghost_")
+       then
+          Insert_Str_In_Name_Buffer ("___ghost_", 1);
+       end if;
+ 
        Name_Buffer (Name_Len + 1) := ASCII.NUL;
     end Get_External_Name;
  
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_dbug.ads gcc-8.1.0/gcc/ada/exp_dbug.ads
*** gcc-7.3.0/gcc/ada/exp_dbug.ads	Thu Apr 21 09:54:42 2016
--- gcc-8.1.0/gcc/ada/exp_dbug.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1996-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or 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-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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
*** 76,81 ****
--- 76,87 ----
     --  qualification for such entities. In particular this means that direct
     --  local variables of a procedure are not qualified.
  
+    --  For Ghost entities, the encoding adds a prefix "___ghost_" to aid the
+    --  detection of leaks of Ignored Ghost entities in the "living" space.
+    --  Ignored Ghost entities and any code associated with them should be
+    --  removed by the compiler in a post-processing pass. As a result,
+    --  object files should not contain any occurrences of this prefix.
+ 
     --  As an example of the local name convention, consider a procedure V.W
     --  with a local variable X, and a nested block Y containing an entity Z.
     --  The fully qualified names of the entities X and Z are:
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_disp.adb gcc-8.1.0/gcc/ada/exp_disp.adb
*** gcc-7.3.0/gcc/ada/exp_disp.adb	Fri Jan 13 10:19:19 2017
--- gcc-8.1.0/gcc/ada/exp_disp.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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;
*** 29,34 ****
--- 29,35 ----
  with Einfo;    use Einfo;
  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_CG;   use Exp_CG;
*************** with Sem_Res;  use Sem_Res;
*** 58,63 ****
--- 59,65 ----
  with Sem_Type; use Sem_Type;
  with Sem_Util; use Sem_Util;
  with Sinfo;    use Sinfo;
+ with Sinput;   use Sinput;
  with Snames;   use Snames;
  with Stand;    use Stand;
  with Stringt;  use Stringt;
*************** package body Exp_Disp is
*** 279,285 ****
     ------------------------
  
     function Building_Static_DT (Typ : Entity_Id) return Boolean is
!       Root_Typ : Entity_Id := Root_Type (Typ);
  
     begin
        --  Handle private types
--- 281,288 ----
     ------------------------
  
     function Building_Static_DT (Typ : Entity_Id) return Boolean is
!       Root_Typ  : Entity_Id := Root_Type (Typ);
!       Static_DT : Boolean;
  
     begin
        --  Handle private types
*************** package body Exp_Disp is
*** 288,304 ****
           Root_Typ := Full_View (Root_Typ);
        end if;
  
!       return Static_Dispatch_Tables
!         and then Is_Library_Level_Tagged_Type (Typ)
  
!          --  If the type is derived from a CPP class we cannot statically
!          --  build the dispatch tables because we must inherit primitives
!          --  from the CPP side.
  
!         and then not Is_CPP_Class (Root_Typ);
     end Building_Static_DT;
  
     ----------------------------------
     -- Build_Static_Dispatch_Tables --
     ----------------------------------
  
--- 291,351 ----
           Root_Typ := Full_View (Root_Typ);
        end if;
  
!       Static_DT :=
!         Building_Static_Dispatch_Tables
!           and then Is_Library_Level_Tagged_Type (Typ)
  
!           --  If the type is derived from a CPP class we cannot statically
!           --  build the dispatch tables because we must inherit primitives
!           --  from the CPP side.
  
!           and then not Is_CPP_Class (Root_Typ);
! 
!       if not Static_DT then
!          Check_Restriction (Static_Dispatch_Tables, Typ);
!       end if;
! 
!       return Static_DT;
     end Building_Static_DT;
  
     ----------------------------------
+    -- Building_Static_Secondary_DT --
+    ----------------------------------
+ 
+    function Building_Static_Secondary_DT (Typ : Entity_Id) return Boolean is
+       Full_Typ  : Entity_Id := Typ;
+       Root_Typ  : Entity_Id := Root_Type (Typ);
+       Static_DT : Boolean;
+ 
+    begin
+       --  Handle private types
+ 
+       if Present (Full_View (Typ)) then
+          Full_Typ := Full_View (Typ);
+       end if;
+ 
+       if Present (Full_View (Root_Typ)) then
+          Root_Typ := Full_View (Root_Typ);
+       end if;
+ 
+       Static_DT :=
+         Building_Static_DT (Full_Typ)
+           and then not Is_Interface (Full_Typ)
+           and then Has_Interfaces (Full_Typ)
+           and then (Full_Typ = Root_Typ
+                      or else not Is_Variable_Size_Record (Etype (Full_Typ)));
+ 
+       if not Static_DT
+         and then not Is_Interface (Full_Typ)
+         and then Has_Interfaces (Full_Typ)
+       then
+          Check_Restriction (Static_Dispatch_Tables, Typ);
+       end if;
+ 
+       return Static_DT;
+    end Building_Static_Secondary_DT;
+ 
+    ----------------------------------
     -- Build_Static_Dispatch_Tables --
     ----------------------------------
  
*************** package body Exp_Disp is
*** 624,629 ****
--- 671,688 ----
        raise Program_Error;
     end Default_Prim_Op_Position;
  
+    ----------------------
+    -- Elab_Flag_Needed --
+    ----------------------
+ 
+    function Elab_Flag_Needed (Typ : Entity_Id) return Boolean is
+    begin
+       return Ada_Version >= Ada_2005
+         and then not Is_Interface (Typ)
+         and then Has_Interfaces (Typ)
+         and then not Building_Static_DT (Typ);
+    end Elab_Flag_Needed;
+ 
     -----------------------------
     -- Expand_Dispatching_Call --
     -----------------------------
*************** package body Exp_Disp is
*** 649,659 ****
--- 708,848 ----
        Eq_Prim_Op      : Entity_Id := Empty;
        Controlling_Tag : Node_Id;
  
+       procedure Build_Class_Wide_Check;
+       --  If the denoted subprogram has a class-wide precondition, generate a
+       --  check using that precondition before the dispatching call, because
+       --  this is the only class-wide precondition that applies to the call.
+ 
        function New_Value (From : Node_Id) return Node_Id;
        --  From is the original Expression. New_Value is equivalent to a call
        --  to Duplicate_Subexpr with an explicit dereference when From is an
        --  access parameter.
  
+       ----------------------------
+       -- Build_Class_Wide_Check --
+       ----------------------------
+ 
+       procedure Build_Class_Wide_Check is
+          function Replace_Formals (N : Node_Id) return Traverse_Result;
+          --  Replace occurrences of the formals of the subprogram by the
+          --  corresponding actuals in the call, given that this check is
+          --  performed outside of the body of the subprogram.
+ 
+          ---------------------
+          -- Replace_Formals --
+          ---------------------
+ 
+          function Replace_Formals (N : Node_Id) return Traverse_Result is
+          begin
+             if Is_Entity_Name (N)
+               and then Present (Entity (N))
+               and then Is_Formal (Entity (N))
+             then
+                declare
+                   A : Node_Id;
+                   F : Entity_Id;
+ 
+                begin
+                   F := First_Formal (Subp);
+                   A := First_Actual (Call_Node);
+                   while Present (F) loop
+                      if F = Entity (N) then
+                         Rewrite (N, New_Copy_Tree (A));
+ 
+                         --  If the formal is class-wide, and thus not a
+                         --  controlling argument, preserve its type because
+                         --  it may appear in a nested call with a class-wide
+                         --  parameter.
+ 
+                         if Is_Class_Wide_Type (Etype (F)) then
+                            Set_Etype (N, Etype (F));
+ 
+                         --  Conversely, if this is a controlling argument
+                         --  (in a dispatching call in the condition) that is a
+                         --  dereference, the source is an access-to-class-wide
+                         --  type, so preserve the dispatching nature of the
+                         --  call in the rewritten condition.
+ 
+                         elsif Nkind (Parent (N)) = N_Explicit_Dereference
+                           and then Is_Controlling_Actual (Parent (N))
+                         then
+                            Set_Controlling_Argument (Parent (Parent (N)),
+                               Parent (N));
+                         end if;
+ 
+                         exit;
+                      end if;
+ 
+                      Next_Formal (F);
+                      Next_Actual (A);
+                   end loop;
+                end;
+             end if;
+ 
+             return OK;
+          end Replace_Formals;
+ 
+          procedure Update is new Traverse_Proc (Replace_Formals);
+ 
+          --  Local variables
+ 
+          Str_Loc : constant String := Build_Location_String (Loc);
+ 
+          Cond : Node_Id;
+          Msg  : Node_Id;
+          Prec : Node_Id;
+ 
+       --  Start of processing for Build_Class_Wide_Check
+ 
+       begin
+ 
+          --  Locate class-wide precondition, if any
+ 
+          if Present (Contract (Subp))
+            and then Present (Pre_Post_Conditions (Contract (Subp)))
+          then
+             Prec := Pre_Post_Conditions (Contract (Subp));
+ 
+             while Present (Prec) loop
+                exit when Pragma_Name (Prec) = Name_Precondition
+                  and then Class_Present (Prec);
+                Prec := Next_Pragma (Prec);
+             end loop;
+ 
+             if No (Prec) then
+                return;
+             end if;
+ 
+             --  The expression for the precondition is analyzed within the
+             --  generated pragma. The message text is the last parameter of
+             --  the generated pragma, indicating source of precondition.
+ 
+             Cond :=
+               New_Copy_Tree
+                 (Expression (First (Pragma_Argument_Associations (Prec))));
+             Update (Cond);
+ 
+             --  Build message indicating the failed precondition and the
+             --  dispatching call that caused it.
+ 
+             Msg := Expression (Last (Pragma_Argument_Associations (Prec)));
+             Name_Len := 0;
+             Append (Global_Name_Buffer, Strval (Msg));
+             Append (Global_Name_Buffer, " in dispatching call at ");
+             Append (Global_Name_Buffer, Str_Loc);
+             Msg := Make_String_Literal (Loc, Name_Buffer (1 .. Name_Len));
+ 
+             Insert_Action (Call_Node,
+               Make_If_Statement (Loc,
+                 Condition       => Make_Op_Not (Loc, Cond),
+                 Then_Statements => New_List (
+                   Make_Procedure_Call_Statement (Loc,
+                     Name                   =>
+                       New_Occurrence_Of (RTE (RE_Raise_Assert_Failure), Loc),
+                     Parameter_Associations => New_List (Msg)))));
+          end if;
+       end Build_Class_Wide_Check;
+ 
        ---------------
        -- New_Value --
        ---------------
*************** package body Exp_Disp is
*** 673,679 ****
        --  Local variables
  
        New_Node          : Node_Id;
!       SCIL_Node         : Node_Id;
        SCIL_Related_Node : Node_Id := Call_Node;
  
     --  Start of processing for Expand_Dispatching_Call
--- 862,868 ----
        --  Local variables
  
        New_Node          : Node_Id;
!       SCIL_Node         : Node_Id := Empty;
        SCIL_Related_Node : Node_Id := Call_Node;
  
     --  Start of processing for Expand_Dispatching_Call
*************** package body Exp_Disp is
*** 714,719 ****
--- 903,910 ----
           Subp := Alias (Subp);
        end if;
  
+       Build_Class_Wide_Check;
+ 
        --  Definition of the class-wide type and the tagged type
  
        --  If the controlling argument is itself a tag rather than a tagged
*************** package body Exp_Disp is
*** 1072,1078 ****
  
     procedure Expand_Interface_Conversion (N : Node_Id) is
        function Underlying_Record_Type (Typ : Entity_Id) return Entity_Id;
!       --  Return the underlying record type of Typ.
  
        ----------------------------
        -- Underlying_Record_Type --
--- 1263,1269 ----
  
     procedure Expand_Interface_Conversion (N : Node_Id) is
        function Underlying_Record_Type (Typ : Entity_Id) return Entity_Id;
!       --  Return the underlying record type of Typ
  
        ----------------------------
        -- Underlying_Record_Type --
*************** package body Exp_Disp is
*** 1082,1091 ****
           E : Entity_Id := Typ;
  
        begin
!          --  Handle access to class-wide interface types
  
           if Is_Access_Type (E) then
!             E := Etype (Directly_Designated_Type (E));
           end if;
  
           --  Handle class-wide types. This conversion can appear explicitly in
--- 1273,1282 ----
           E : Entity_Id := Typ;
  
        begin
!          --  Handle access types
  
           if Is_Access_Type (E) then
!             E := Directly_Designated_Type (E);
           end if;
  
           --  Handle class-wide types. This conversion can appear explicitly in
*************** package body Exp_Disp is
*** 1174,1180 ****
        if not Tagged_Type_Expansion then
           return;
  
!       --  A static conversion to an interface type that is not classwide is
        --  curious but legal if the interface operation is a null procedure.
        --  If the operation is abstract it will be rejected later.
  
--- 1365,1371 ----
        if not Tagged_Type_Expansion then
           return;
  
!       --  A static conversion to an interface type that is not class-wide is
        --  curious but legal if the interface operation is a null procedure.
        --  If the operation is abstract it will be rejected later.
  
*************** package body Exp_Disp is
*** 1190,1196 ****
  
        if not Is_Static then
  
!          --  Give error if configurable run time and Displace not available
  
           if not RTE_Available (RE_Displace) then
              Error_Msg_CRT ("dynamic interface conversion", N);
--- 1381,1387 ----
  
        if not Is_Static then
  
!          --  Give error if configurable run-time and Displace not available
  
           if not RTE_Available (RE_Displace) then
              Error_Msg_CRT ("dynamic interface conversion", N);
*************** package body Exp_Disp is
*** 1390,1400 ****
  
              if Is_Access_Type (Etype (Expression (N))) then
  
-                Apply_Accessibility_Check
-                  (N           => Expression (N),
-                   Typ         => Etype (N),
-                   Insert_Node => N);
- 
                 --  Generate: Func (Address!(Expression))
  
                 Rewrite (N,
--- 1581,1586 ----
*************** package body Exp_Disp is
*** 1435,1442 ****
        Formal     : Entity_Id;
        Formal_Typ : Entity_Id;
        Subp       : Entity_Id;
!       Formal_DDT : Entity_Id;
!       Actual_DDT : Entity_Id;
  
     begin
        --  This subprogram is called directly from the semantics, so we need a
--- 1621,1628 ----
        Formal     : Entity_Id;
        Formal_Typ : Entity_Id;
        Subp       : Entity_Id;
!       Formal_DDT : Entity_Id := Empty;  -- initialize to prevent warning
!       Actual_DDT : Entity_Id := Empty;  -- initialize to prevent warning
  
     begin
        --  This subprogram is called directly from the semantics, so we need a
*************** package body Exp_Disp is
*** 1513,1521 ****
                 --  interface conversion, so if this is a BIP call then we need
                 --  to handle it now.
  
!                if Ada_Version >= Ada_2005
!                  and then Is_Build_In_Place_Function_Call (Actual)
!                then
                    Make_Build_In_Place_Call_In_Anonymous_Context (Actual);
                 end if;
  
--- 1699,1705 ----
                 --  interface conversion, so if this is a BIP call then we need
                 --  to handle it now.
  
!                if Is_Build_In_Place_Function_Call (Actual) then
                    Make_Build_In_Place_Call_In_Anonymous_Context (Actual);
                 end if;
  
*************** package body Exp_Disp is
*** 1568,1578 ****
  
                 if From_Limited_With (Actual_Typ) then
  
!                   --  If the type of the actual parameter comes from a
!                   --  limited with-clause and the non-limited view is already
!                   --  available, we replace the anonymous access type by
!                   --  a duplicate declaration whose designated type is the
!                   --  non-limited view.
  
                    if Has_Non_Limited_View (Actual_DDT) then
                       Anon := New_Copy (Actual_Typ);
--- 1752,1761 ----
  
                 if From_Limited_With (Actual_Typ) then
  
!                   --  If the type of the actual parameter comes from a limited
!                   --  with_clause and the nonlimited view is already available,
!                   --  we replace the anonymous access type by a duplicate
!                   --  declaration whose designated type is the nonlimited view.
  
                    if Has_Non_Limited_View (Actual_DDT) then
                       Anon := New_Copy (Actual_Typ);
*************** package body Exp_Disp is
*** 1618,1624 ****
        Expr          : Node_Id;
        Formal        : Node_Id;
        Ftyp          : Entity_Id;
!       Iface_Formal  : Node_Id;
        New_Arg       : Node_Id;
        Offset_To_Top : Node_Id;
        Target_Formal : Entity_Id;
--- 1801,1807 ----
        Expr          : Node_Id;
        Formal        : Node_Id;
        Ftyp          : Entity_Id;
!       Iface_Formal  : Node_Id := Empty;  -- initialize to prevent warning
        New_Arg       : Node_Id;
        Offset_To_Top : Node_Id;
        Target_Formal : Entity_Id;
*************** package body Exp_Disp is
*** 1721,1727 ****
              --  Generate:
              --     type T is access all <<type of the target formal>>
              --     S : Storage_Offset := Storage_Offset!(Formal)
!             --                            - Offset_To_Top (address!(Formal))
  
              Decl_2 :=
                Make_Full_Type_Declaration (Loc,
--- 1904,1910 ----
              --  Generate:
              --     type T is access all <<type of the target formal>>
              --     S : Storage_Offset := Storage_Offset!(Formal)
!             --                            + Offset_To_Top (address!(Formal))
  
              Decl_2 :=
                Make_Full_Type_Declaration (Loc,
*************** package body Exp_Disp is
*** 1755,1761 ****
                  Object_Definition   =>
                    New_Occurrence_Of (RTE (RE_Storage_Offset), Loc),
                  Expression          =>
!                   Make_Op_Subtract (Loc,
                      Left_Opnd  =>
                        Unchecked_Convert_To
                          (RTE (RE_Storage_Offset),
--- 1938,1944 ----
                  Object_Definition   =>
                    New_Occurrence_Of (RTE (RE_Storage_Offset), Loc),
                  Expression          =>
!                   Make_Op_Add (Loc,
                      Left_Opnd  =>
                        Unchecked_Convert_To
                          (RTE (RE_Storage_Offset),
*************** package body Exp_Disp is
*** 1779,1785 ****
  
              --  Generate:
              --     S1 : Storage_Offset := Storage_Offset!(Formal'Address)
!             --                             - Offset_To_Top (Formal'Address)
              --     S2 : Addr_Ptr := Addr_Ptr!(S1)
  
              New_Arg :=
--- 1962,1968 ----
  
              --  Generate:
              --     S1 : Storage_Offset := Storage_Offset!(Formal'Address)
!             --                             + Offset_To_Top (Formal'Address)
              --     S2 : Addr_Ptr := Addr_Ptr!(S1)
  
              New_Arg :=
*************** package body Exp_Disp is
*** 1806,1812 ****
                  Object_Definition   =>
                    New_Occurrence_Of (RTE (RE_Storage_Offset), Loc),
                  Expression          =>
!                   Make_Op_Subtract (Loc,
                      Left_Opnd =>
                        Unchecked_Convert_To
                          (RTE (RE_Storage_Offset),
--- 1989,1995 ----
                  Object_Definition   =>
                    New_Occurrence_Of (RTE (RE_Storage_Offset), Loc),
                  Expression          =>
!                   Make_Op_Add (Loc,
                      Left_Opnd =>
                        Unchecked_Convert_To
                          (RTE (RE_Storage_Offset),
*************** package body Exp_Disp is
*** 3630,3635 ****
--- 3813,3823 ----
        DT_Aggr : constant Elist_Id := New_Elmt_List;
        --  Entities marked with attribute Is_Dispatch_Table_Entity
  
+       Dummy_Object : Entity_Id := Empty;
+       --  Extra nonexistent object of type Typ internally used to compute the
+       --  offset to the components that reference secondary dispatch tables.
+       --  Used to statically allocate secondary dispatch tables.
+ 
        procedure Check_Premature_Freezing
          (Subp        : Entity_Id;
           Tagged_Type : Entity_Id;
*************** package body Exp_Disp is
*** 3658,3663 ****
--- 3846,3852 ----
        procedure Make_Secondary_DT
          (Typ              : Entity_Id;
           Iface            : Entity_Id;
+          Iface_Comp       : Node_Id;
           Suffix_Index     : Int;
           Num_Iface_Prims  : Nat;
           Iface_DT_Ptr     : Entity_Id;
*************** package body Exp_Disp is
*** 3816,3821 ****
--- 4005,4011 ----
        procedure Make_Secondary_DT
          (Typ              : Entity_Id;
           Iface            : Entity_Id;
+          Iface_Comp       : Node_Id;
           Suffix_Index     : Int;
           Num_Iface_Prims  : Nat;
           Iface_DT_Ptr     : Entity_Id;
*************** package body Exp_Disp is
*** 4054,4063 ****
               Prefix         => New_Occurrence_Of (Predef_Prims, Loc),
               Attribute_Name => Name_Address));
  
!          --  Note: The correct value of Offset_To_Top will be set by the init
!          --  subprogram
  
!          Append_To (DT_Aggr_List, Make_Integer_Literal (Loc, 0));
  
           --  Generate the Object Specific Data table required to dispatch calls
           --  through synchronized interfaces.
--- 4244,4269 ----
               Prefix         => New_Occurrence_Of (Predef_Prims, Loc),
               Attribute_Name => Name_Address));
  
!          --  If the location of the component that references this secondary
!          --  dispatch table is variable then we have not declared the internal
!          --  dummy object; the value of Offset_To_Top will be set by the init
!          --  subprogram.
  
!          if No (Dummy_Object) then
!             Append_To (DT_Aggr_List, Make_Integer_Literal (Loc, 0));
! 
!          else
!             Append_To (DT_Aggr_List,
!               Make_Op_Minus (Loc,
!                 Make_Attribute_Reference (Loc,
!                   Prefix         =>
!                     Make_Selected_Component (Loc,
!                       Prefix        =>
!                         New_Occurrence_Of (Dummy_Object, Loc),
!                       Selector_Name =>
!                         New_Occurrence_Of (Iface_Comp, Loc)),
!                   Attribute_Name => Name_Position)));
!          end if;
  
           --  Generate the Object Specific Data table required to dispatch calls
           --  through synchronized interfaces.
*************** package body Exp_Disp is
*** 4282,4296 ****
  
           Append_Elmt (New_Node, DT_Aggr);
  
!          --  Note: Secondary dispatch tables cannot be declared constant
!          --  because the component Offset_To_Top is currently initialized
!          --  by the IP routine.
  
           Append_To (Result,
             Make_Object_Declaration (Loc,
               Defining_Identifier => Iface_DT,
               Aliased_Present     => True,
!              Constant_Present    => False,
  
               Object_Definition   =>
                 Make_Subtype_Indication (Loc,
--- 4488,4503 ----
  
           Append_Elmt (New_Node, DT_Aggr);
  
!          --  Note: Secondary dispatch tables are declared constant only if
!          --  we can compute their offset field by means of the extra dummy
!          --  object; otherwise they cannot be declared constant and the
!          --  Offset_To_Top component is initialized by the IP routine.
  
           Append_To (Result,
             Make_Object_Declaration (Loc,
               Defining_Identifier => Iface_DT,
               Aliased_Present     => True,
!              Constant_Present    => Present (Dummy_Object),
  
               Object_Definition   =>
                 Make_Subtype_Indication (Loc,
*************** package body Exp_Disp is
*** 4396,4401 ****
--- 4603,4611 ----
        Name_TSD          : constant Name_Id :=
                              New_External_Name (Tname, 'B', Suffix_Index => -1);
  
+       Saved_GM : constant Ghost_Mode_Type := Ghost_Mode;
+       --  Save the Ghost mode to restore on exit
+ 
        AI                 : Elmt_Id;
        AI_Tag_Elmt        : Elmt_Id;
        AI_Tag_Comp        : Elmt_Id;
*************** package body Exp_Disp is
*** 4408,4414 ****
        ITable             : Node_Id;
        I_Depth            : Nat := 0;
        Iface_Table_Node   : Node_Id;
-       Mode               : Ghost_Mode_Type;
        Name_ITable        : Name_Id;
        Nb_Predef_Prims    : Nat := 0;
        Nb_Prim            : Nat := 0;
--- 4618,4623 ----
*************** package body Exp_Disp is
*** 4436,4442 ****
        --  the mode now to ensure that any nodes generated during dispatch table
        --  creation are properly marked as Ghost.
  
!       Set_Ghost_Mode (Typ, Mode);
  
        --  Handle cases in which there is no need to build the dispatch table
  
--- 4645,4651 ----
        --  the mode now to ensure that any nodes generated during dispatch table
        --  creation are properly marked as Ghost.
  
!       Set_Ghost_Mode (Typ);
  
        --  Handle cases in which there is no need to build the dispatch table
  
*************** package body Exp_Disp is
*** 4508,4517 ****
  
        if Building_Static_DT (Typ) then
           declare
!             Save      : constant Boolean := Freezing_Library_Level_Tagged_Type;
              Prim      : Entity_Id;
              Prim_Elmt : Elmt_Id;
-             Frnodes   : List_Id;
  
           begin
              Freezing_Library_Level_Tagged_Type := True;
--- 4717,4729 ----
  
        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;
*************** package body Exp_Disp is
*** 4521,4538 ****
                 Prim    := Node (Prim_Elmt);
                 Frnodes := Freeze_Entity (Prim, Typ);
  
!                declare
!                   F : Entity_Id;
  
!                begin
!                   F := First_Formal (Prim);
!                   while Present (F) loop
!                      Check_Premature_Freezing (Prim, Typ, Etype (F));
!                      Next_Formal (F);
                    end loop;
  
                    Check_Premature_Freezing (Prim, Typ, Etype (Prim));
!                end;
  
                 if Present (Frnodes) then
                    Append_List_To (Result, Frnodes);
--- 4733,4753 ----
                 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);
*************** package body Exp_Disp is
*** 4541,4547 ****
                 Next_Elmt (Prim_Elmt);
              end loop;
  
!             Freezing_Library_Level_Tagged_Type := Save;
           end;
        end if;
  
--- 4756,4850 ----
                 Next_Elmt (Prim_Elmt);
              end loop;
  
!             Freezing_Library_Level_Tagged_Type := Saved_FLLTT;
!          end;
!       end if;
! 
!       if Building_Static_Secondary_DT (Typ) then
!          declare
!             Cannot_Have_Null_Disc : Boolean := False;
!             Name_Dummy_Object     : constant Name_Id :=
!                                       New_External_Name (Tname,
!                                         'P', Suffix_Index => -1);
!          begin
!             Dummy_Object := Make_Defining_Identifier (Loc, Name_Dummy_Object);
! 
!             --  Define the extra object imported and constant to avoid linker
!             --  errors (since this object is never declared). Required because
!             --  we implement RM 13.3(19) for exported and imported (variable)
!             --  objects by making them volatile.
! 
!             Set_Is_Imported      (Dummy_Object);
!             Set_Ekind            (Dummy_Object, E_Constant);
!             Set_Is_True_Constant (Dummy_Object);
!             Set_Related_Type     (Dummy_Object, Typ);
! 
!             --  The scope must be set now to call Get_External_Name
! 
!             Set_Scope (Dummy_Object, Current_Scope);
! 
!             Get_External_Name (Dummy_Object);
!             Set_Interface_Name (Dummy_Object,
!               Make_String_Literal (Loc, Strval => String_From_Name_Buffer));
! 
!             --  Ensure proper Sprint output of this implicit importation
! 
!             Set_Is_Internal (Dummy_Object);
! 
!             if not Has_Discriminants (Typ) then
!                Append_To (Result,
!                  Make_Object_Declaration (Loc,
!                    Defining_Identifier => Dummy_Object,
!                    Constant_Present    => True,
!                    Object_Definition   => New_Occurrence_Of (Typ, Loc)));
!             else
!                declare
!                   Constr_List  : constant List_Id := New_List;
!                   Discrim      : Node_Id;
! 
!                begin
!                   Discrim := First_Discriminant (Typ);
!                   while Present (Discrim) loop
!                      if Is_Discrete_Type (Etype (Discrim)) then
!                         Append_To (Constr_List,
!                           Make_Attribute_Reference (Loc,
!                             Prefix         =>
!                               New_Occurrence_Of (Etype (Discrim), Loc),
!                             Attribute_Name => Name_First));
! 
!                      else
!                         pragma Assert (Is_Access_Type (Etype (Discrim)));
!                         Cannot_Have_Null_Disc :=
!                           Cannot_Have_Null_Disc
!                             or else Can_Never_Be_Null (Etype (Discrim));
!                         Append_To (Constr_List, Make_Null (Loc));
!                      end if;
! 
!                      Next_Discriminant (Discrim);
!                   end loop;
! 
!                   Append_To (Result,
!                     Make_Object_Declaration (Loc,
!                       Defining_Identifier => Dummy_Object,
!                       Constant_Present    => True,
!                       Object_Definition   =>
!                         Make_Subtype_Indication (Loc,
!                           Subtype_Mark => New_Occurrence_Of (Typ, Loc),
!                           Constraint   =>
!                             Make_Index_Or_Discriminant_Constraint (Loc,
!                               Constraints => Constr_List))));
!                end;
!             end if;
! 
!             --  Given that the dummy object will not be declared at run time,
!             --  analyze its declaration with expansion disabled and warnings
!             --  and error messages ignored.
! 
!             Expander_Mode_Save_And_Set (False);
!             Ignore_Errors_Enable := Ignore_Errors_Enable + 1;
!             Analyze (Last (Result), Suppress => All_Checks);
!             Ignore_Errors_Enable := Ignore_Errors_Enable - 1;
!             Expander_Mode_Restore;
           end;
        end if;
  
*************** package body Exp_Disp is
*** 4569,4579 ****
  
              Make_Secondary_DT
               (Typ              => Typ,
!               Iface            => Base_Type
!                                     (Related_Type (Node (AI_Tag_Comp))),
                Suffix_Index     => Suffix_Index,
!               Num_Iface_Prims  => UI_To_Int
!                                     (DT_Entry_Count (Node (AI_Tag_Comp))),
                Iface_DT_Ptr     => Node (AI_Tag_Elmt),
                Predef_Prims_Ptr => Node (Next_Elmt (AI_Tag_Elmt)),
                Build_Thunks     => True,
--- 4872,4883 ----
  
              Make_Secondary_DT
               (Typ              => Typ,
!               Iface            =>
!                 Base_Type (Related_Type (Node (AI_Tag_Comp))),
!               Iface_Comp       => Node (AI_Tag_Comp),
                Suffix_Index     => Suffix_Index,
!               Num_Iface_Prims  =>
!                 UI_To_Int (DT_Entry_Count (Node (AI_Tag_Comp))),
                Iface_DT_Ptr     => Node (AI_Tag_Elmt),
                Predef_Prims_Ptr => Node (Next_Elmt (AI_Tag_Elmt)),
                Build_Thunks     => True,
*************** package body Exp_Disp is
*** 4598,4603 ****
--- 4902,4908 ----
                (Typ              => Typ,
                 Iface            => Base_Type
                                       (Related_Type (Node (AI_Tag_Comp))),
+                Iface_Comp       => Node (AI_Tag_Comp),
                 Suffix_Index     => -1,
                 Num_Iface_Prims  => UI_To_Int
                                       (DT_Entry_Count (Node (AI_Tag_Comp))),
*************** package body Exp_Disp is
*** 4818,4824 ****
           Append_To (Result,
             Make_Object_Declaration (Loc,
               Defining_Identifier => HT_Link,
!              Object_Definition   => New_Occurrence_Of (RTE (RE_Tag), Loc)));
        end if;
  
        --  Generate code to create the storage for the type specific data object
--- 5123,5130 ----
           Append_To (Result,
             Make_Object_Declaration (Loc,
               Defining_Identifier => HT_Link,
!              Object_Definition   => New_Occurrence_Of (RTE (RE_Tag), Loc),
!              Expression          => New_Occurrence_Of (RTE (RE_No_Tag), Loc)));
        end if;
  
        --  Generate code to create the storage for the type specific data object
*************** package body Exp_Disp is
*** 4833,4839 ****
        --            External_Tag       => Cstring_Ptr!(Exname'Address))
        --            HT_Link            => HT_Link'Address,
        --            Transportable      => <<boolean-value>>,
!       --            Type_Is_Abstract   => <<boolean-value>>,
        --            Needs_Finalization => <<boolean-value>>,
        --            [ Size_Func         => Size_Prim'Access, ]
        --            [ Interfaces_Table  => <<access-value>>, ]
--- 5139,5145 ----
        --            External_Tag       => Cstring_Ptr!(Exname'Address))
        --            HT_Link            => HT_Link'Address,
        --            Transportable      => <<boolean-value>>,
!       --            Is_Abstract        => <<boolean-value>>,
        --            Needs_Finalization => <<boolean-value>>,
        --            [ Size_Func         => Size_Prim'Access, ]
        --            [ Interfaces_Table  => <<access-value>>, ]
*************** package body Exp_Disp is
*** 5086,5092 ****
               Make_Attribute_Reference (Loc,
                 Prefix         => New_Occurrence_Of (HT_Link, Loc),
                 Attribute_Name => Name_Address)));
!       else
           Append_To (TSD_Aggr_List,
             Unchecked_Convert_To (RTE (RE_Tag_Ptr),
               New_Occurrence_Of (RTE (RE_Null_Address), Loc)));
--- 5392,5399 ----
               Make_Attribute_Reference (Loc,
                 Prefix         => New_Occurrence_Of (HT_Link, Loc),
                 Attribute_Name => Name_Address)));
! 
!       elsif RTE_Record_Component_Available (RE_HT_Link) then
           Append_To (TSD_Aggr_List,
             Unchecked_Convert_To (RTE (RE_Tag_Ptr),
               New_Occurrence_Of (RTE (RE_Null_Address), Loc)));
*************** package body Exp_Disp is
*** 5113,5128 ****
              New_Occurrence_Of (Transportable, Loc));
        end;
  
!       --  Type_Is_Abstract (Ada 2012: AI05-0173). This functionality is
!       --  not available in the HIE runtime.
  
!       if RTE_Record_Component_Available (RE_Type_Is_Abstract) then
           declare
!             Type_Is_Abstract : Entity_Id;
           begin
!             Type_Is_Abstract := Boolean_Literals (Is_Abstract_Type (Typ));
              Append_To (TSD_Aggr_List,
!               New_Occurrence_Of (Type_Is_Abstract, Loc));
           end;
        end if;
  
--- 5420,5435 ----
              New_Occurrence_Of (Transportable, Loc));
        end;
  
!       --  Is_Abstract (Ada 2012: AI05-0173). This functionality is not
!       --  available in the HIE runtime.
  
!       if RTE_Record_Component_Available (RE_Is_Abstract) then
           declare
!             Is_Abstract : Entity_Id;
           begin
!             Is_Abstract := Boolean_Literals (Is_Abstract_Type (Typ));
              Append_To (TSD_Aggr_List,
!               New_Occurrence_Of (Is_Abstract, Loc));
           end;
        end if;
  
*************** package body Exp_Disp is
*** 5155,5161 ****
              declare
                 Prim_Elmt : Elmt_Id;
                 Prim      : Entity_Id;
!                Size_Comp : Node_Id;
  
              begin
                 Prim_Elmt := First_Elmt (Primitive_Operations (Typ));
--- 5462,5468 ----
              declare
                 Prim_Elmt : Elmt_Id;
                 Prim      : Entity_Id;
!                Size_Comp : Node_Id := Empty;
  
              begin
                 Prim_Elmt := First_Elmt (Primitive_Operations (Typ));
*************** package body Exp_Disp is
*** 5210,5225 ****
  
           else
              declare
!                TSD_Ifaces_List : constant List_Id := New_List;
!                Elmt       : Elmt_Id;
!                Sec_DT_Tag : Node_Id;
  
              begin
                 AI := First_Elmt (Typ_Ifaces);
                 while Present (AI) loop
                    if Is_Ancestor (Node (AI), Typ, Use_Full_View => True) then
!                      Sec_DT_Tag :=
!                        New_Occurrence_Of (DT_Ptr, Loc);
                    else
                       Elmt :=
                         Next_Elmt
--- 5517,5544 ----
  
           else
              declare
!                TSD_Ifaces_List  : constant List_Id := New_List;
!                Elmt             : Elmt_Id;
!                Ifaces_List      : Elist_Id := No_Elist;
!                Ifaces_Comp_List : Elist_Id := No_Elist;
!                Ifaces_Tag_List  : Elist_Id;
!                Offset_To_Top    : Node_Id;
!                Sec_DT_Tag       : Node_Id;
  
              begin
+                --  Collect interfaces information if we need to compute the
+                --  offset to the top using the dummy object.
+ 
+                if Present (Dummy_Object) then
+                   Collect_Interfaces_Info (Typ,
+                     Ifaces_List, Ifaces_Comp_List, Ifaces_Tag_List);
+                end if;
+ 
                 AI := First_Elmt (Typ_Ifaces);
                 while Present (AI) loop
                    if Is_Ancestor (Node (AI), Typ, Use_Full_View => True) then
!                      Sec_DT_Tag := New_Occurrence_Of (DT_Ptr, Loc);
! 
                    else
                       Elmt :=
                         Next_Elmt
*************** package body Exp_Disp is
*** 5227,5235 ****
                       pragma Assert (Has_Thunks (Node (Elmt)));
  
                       while Is_Tag (Node (Elmt))
!                         and then not
!                           Is_Ancestor (Node (AI), Related_Type (Node (Elmt)),
!                                        Use_Full_View => True)
                       loop
                          pragma Assert (Has_Thunks (Node (Elmt)));
                          Next_Elmt (Elmt);
--- 5546,5554 ----
                       pragma Assert (Has_Thunks (Node (Elmt)));
  
                       while Is_Tag (Node (Elmt))
!                        and then not
!                          Is_Ancestor (Node (AI), Related_Type (Node (Elmt)),
!                                       Use_Full_View => True)
                       loop
                          pragma Assert (Has_Thunks (Node (Elmt)));
                          Next_Elmt (Elmt);
*************** package body Exp_Disp is
*** 5244,5257 ****
                       pragma Assert (Ekind (Node (Elmt)) = E_Constant
                         and then not
                           Has_Thunks (Node (Next_Elmt (Next_Elmt (Elmt)))));
                       Sec_DT_Tag :=
!                        New_Occurrence_Of (Node (Next_Elmt (Next_Elmt (Elmt))),
!                                          Loc);
                    end if;
  
                    Append_To (TSD_Ifaces_List,
!                      Make_Aggregate (Loc,
!                        Expressions => New_List (
  
                          --  Iface_Tag
  
--- 5563,5618 ----
                       pragma Assert (Ekind (Node (Elmt)) = E_Constant
                         and then not
                           Has_Thunks (Node (Next_Elmt (Next_Elmt (Elmt)))));
+ 
                       Sec_DT_Tag :=
!                        New_Occurrence_Of
!                          (Node (Next_Elmt (Next_Elmt (Elmt))), Loc);
!                   end if;
! 
!                   --  For static dispatch tables compute Offset_To_Top using
!                   --  the dummy object.
! 
!                   if Present (Dummy_Object) then
!                      declare
!                         Iface            : constant Node_Id := Node (AI);
!                         Iface_Comp       : Node_Id := Empty;
!                         Iface_Comp_Elmt  : Elmt_Id;
!                         Iface_Elmt       : Elmt_Id;
! 
!                      begin
!                         Iface_Elmt      := First_Elmt (Ifaces_List);
!                         Iface_Comp_Elmt := First_Elmt (Ifaces_Comp_List);
! 
!                         while Present (Iface_Elmt) loop
!                            if Node (Iface_Elmt) = Iface then
!                               Iface_Comp := Node (Iface_Comp_Elmt);
!                               exit;
!                            end if;
! 
!                            Next_Elmt (Iface_Elmt);
!                            Next_Elmt (Iface_Comp_Elmt);
!                         end loop;
! 
!                         pragma Assert (Present (Iface_Comp));
! 
!                         Offset_To_Top :=
!                           Make_Op_Minus (Loc,
!                             Make_Attribute_Reference (Loc,
!                               Prefix         =>
!                                 Make_Selected_Component (Loc,
!                                   Prefix        =>
!                                     New_Occurrence_Of (Dummy_Object, Loc),
!                                   Selector_Name =>
!                                     New_Occurrence_Of (Iface_Comp, Loc)),
!                               Attribute_Name => Name_Position));
!                      end;
!                   else
!                      Offset_To_Top := Make_Integer_Literal (Loc, 0);
                    end if;
  
                    Append_To (TSD_Ifaces_List,
!                     Make_Aggregate (Loc,
!                       Expressions => New_List (
  
                          --  Iface_Tag
  
*************** package body Exp_Disp is
*** 5266,5272 ****
  
                          --  Offset_To_Top_Value
  
!                         Make_Integer_Literal (Loc, 0),
  
                          --  Offset_To_Top_Func
  
--- 5627,5633 ----
  
                          --  Offset_To_Top_Value
  
!                         Offset_To_Top,
  
                          --  Offset_To_Top_Func
  
*************** package body Exp_Disp is
*** 5274,5282 ****
  
                          --  Secondary_DT
  
!                         Unchecked_Convert_To (RTE (RE_Tag), Sec_DT_Tag)
! 
!                         )));
  
                    Next_Elmt (AI);
                 end loop;
--- 5635,5641 ----
  
                          --  Secondary_DT
  
!                         Unchecked_Convert_To (RTE (RE_Tag), Sec_DT_Tag))));
  
                    Next_Elmt (AI);
                 end loop;
*************** package body Exp_Disp is
*** 5286,5302 ****
                 Set_Is_Statically_Allocated (ITable,
                   Is_Library_Level_Tagged_Type (Typ));
  
!                --  The table of interfaces is not constant; its slots are
!                --  filled at run time by the IP routine using attribute
!                --  'Position to know the location of the tag components
!                --  (and this attribute cannot be safely used before the
!                --  object is initialized).
  
                 Append_To (Result,
                   Make_Object_Declaration (Loc,
                     Defining_Identifier => ITable,
                     Aliased_Present     => True,
!                    Constant_Present    => False,
                     Object_Definition   =>
                       Make_Subtype_Indication (Loc,
                         Subtype_Mark =>
--- 5645,5659 ----
                 Set_Is_Statically_Allocated (ITable,
                   Is_Library_Level_Tagged_Type (Typ));
  
!                --  The table of interfaces is constant if we are building a
!                --  static dispatch table; otherwise is not constant because
!                --  its slots are filled at run time by the IP routine.
  
                 Append_To (Result,
                   Make_Object_Declaration (Loc,
                     Defining_Identifier => ITable,
                     Aliased_Present     => True,
!                    Constant_Present    => Present (Dummy_Object),
                     Object_Definition   =>
                       Make_Subtype_Indication (Loc,
                         Subtype_Mark =>
*************** package body Exp_Disp is
*** 5306,5315 ****
                             Constraints => New_List (
                               Make_Integer_Literal (Loc, Num_Ifaces)))),
  
!                    Expression           => Make_Aggregate (Loc,
!                      Expressions => New_List (
!                        Make_Integer_Literal (Loc, Num_Ifaces),
!                        Make_Aggregate (Loc, TSD_Ifaces_List)))));
  
                 Append_To (Result,
                   Make_Attribute_Definition_Clause (Loc,
--- 5663,5673 ----
                             Constraints => New_List (
                               Make_Integer_Literal (Loc, Num_Ifaces)))),
  
!                    Expression           =>
!                      Make_Aggregate (Loc,
!                        Expressions => New_List (
!                          Make_Integer_Literal (Loc, Num_Ifaces),
!                          Make_Aggregate (Loc, TSD_Ifaces_List)))));
  
                 Append_To (Result,
                   Make_Attribute_Definition_Clause (Loc,
*************** package body Exp_Disp is
*** 5755,5761 ****
                    --  Retrieve the ultimate alias of the primitive for proper
                    --  handling of renamings and eliminated primitives.
  
!                   E        := Ultimate_Alias (Prim);
                    Prim_Pos := UI_To_Int (DT_Position (E));
  
                    --  Skip predefined primitives because they are located in a
--- 6113,6129 ----
                    --  Retrieve the ultimate alias of the primitive for proper
                    --  handling of renamings and eliminated primitives.
  
!                   E := Ultimate_Alias (Prim);
! 
!                   --  If the alias is not a primitive operation then Prim does
!                   --  not rename another primitive, but rather an operation
!                   --  declared elsewhere (e.g. in another scope) and therefore
!                   --  Prim is a new primitive.
! 
!                   if No (Find_Dispatching_Type (E)) then
!                      E := Prim;
!                   end if;
! 
                    Prim_Pos := UI_To_Int (DT_Position (E));
  
                    --  Skip predefined primitives because they are located in a
*************** package body Exp_Disp is
*** 6242,6248 ****
        Register_CG_Node (Typ);
  
     <<Leave>>
!       Restore_Ghost_Mode (Mode);
  
        return Result;
     end Make_DT;
--- 6610,6616 ----
        Register_CG_Node (Typ);
  
     <<Leave>>
!       Restore_Ghost_Mode (Saved_GM);
  
        return Result;
     end Make_DT;
*************** package body Exp_Disp is
*** 6258,6264 ****
        Loc         : constant Source_Ptr := Sloc (Typ);
  
        Conc_Typ  : Entity_Id;
!       Decls     : List_Id;
        Prim      : Entity_Id;
        Prim_Als  : Entity_Id;
        Prim_Elmt : Elmt_Id;
--- 6626,6632 ----
        Loc         : constant Source_Ptr := Sloc (Typ);
  
        Conc_Typ  : Entity_Id;
!       Decls     : List_Id := No_List;
        Prim      : Entity_Id;
        Prim_Als  : Entity_Id;
        Prim_Elmt : Elmt_Id;
*************** package body Exp_Disp is
*** 6551,6556 ****
--- 6919,6942 ----
        pragma Assert (No (Access_Disp_Table (Typ)));
        Set_Access_Disp_Table (Typ, New_Elmt_List);
  
+       --  If the elaboration of this tagged type needs a boolean flag then
+       --  define now its entity. It is initialized to True to indicate that
+       --  elaboration is still pending; set to False by the IP routine.
+ 
+       --      TypFxx : boolean := True;
+ 
+       if Elab_Flag_Needed (Typ) then
+          Set_Access_Disp_Table_Elab_Flag (Typ,
+            Make_Defining_Identifier (Loc,
+              Chars => New_External_Name (Tname, 'F')));
+ 
+          Append_To (Result,
+            Make_Object_Declaration (Loc,
+              Defining_Identifier => Access_Disp_Table_Elab_Flag (Typ),
+              Object_Definition   => New_Occurrence_Of (Standard_Boolean, Loc),
+              Expression          => New_Occurrence_Of (Standard_True, Loc)));
+       end if;
+ 
        --  1) Generate the primary tag entities
  
        --  Primary dispatch table containing user-defined primitives
*************** package body Exp_Disp is
*** 7311,7318 ****
        ------------------------
  
        function In_Predef_Prims_DT (Prim : Entity_Id) return Boolean is
-          E : Entity_Id;
- 
        begin
           --  Predefined primitives
  
--- 7697,7702 ----
*************** package body Exp_Disp is
*** 7327,7346 ****
              if Chars (Ultimate_Alias (Prim)) /= Name_Op_Eq then
                 return True;
  
!             --  User-defined renamings of predefined equality have their own
!             --  slot in the primary dispatch table
  
              else
!                E := Prim;
!                while Present (Alias (E)) loop
!                   if Comes_From_Source (E) then
!                      return False;
!                   end if;
! 
!                   E := Alias (E);
!                end loop;
! 
!                return not Comes_From_Source (E);
              end if;
  
           --  User-defined primitives
--- 7711,7729 ----
              if Chars (Ultimate_Alias (Prim)) /= Name_Op_Eq then
                 return True;
  
!             --  An overriding operation that is a user-defined renaming of
!             --  predefined equality inherits its slot from the overridden
!             --  operation. Otherwise it is treated as a predefined op and
!             --  occupies the same predefined slot as equality. A call to it is
!             --  transformed into a call to its alias, which is the predefined
!             --  equality op. A dispatching call thus uses the proper slot if
!             --  operation is further inherited and called with class-wide
!             --  arguments.
  
              else
!                return
!                  not Comes_From_Source (Prim)
!                    or else No (Overridden_Operation (Prim));
              end if;
  
           --  User-defined primitives
*************** package body Exp_Disp is
*** 7626,7649 ****
                 Set_DT_Position_Value (Alias (Prim), DT_Position (E));
                 Set_Fixed_Prim (UI_To_Int (DT_Position (Prim)));
  
!             --  Overriding primitives must use the same entry as the
!             --  overridden primitive.
  
              elsif not Present (Interface_Alias (Prim))
                and then Present (Alias (Prim))
                and then Chars (Prim) = Chars (Alias (Prim))
!               and then Find_Dispatching_Type (Alias (Prim)) /= Typ
!               and then Is_Ancestor
!                          (Find_Dispatching_Type (Alias (Prim)), Typ,
!                           Use_Full_View => True)
!               and then Present (DTC_Entity (Alias (Prim)))
              then
!                E := Alias (Prim);
!                Set_DT_Position_Value (Prim, DT_Position (E));
  
!                if not Is_Predefined_Dispatching_Alias (E) then
!                   Set_Fixed_Prim (UI_To_Int (DT_Position (E)));
!                end if;
              end if;
  
              Next_Elmt (Prim_Elmt);
--- 8009,8045 ----
                 Set_DT_Position_Value (Alias (Prim), DT_Position (E));
                 Set_Fixed_Prim (UI_To_Int (DT_Position (Prim)));
  
!             --  Overriding primitives must use the same entry as the overridden
!             --  primitive. Note that the Alias of the operation is set when the
!             --  operation is declared by a renaming, in which case it is not
!             --  overriding. If it renames another primitive it will use the
!             --  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)) /=
!                          N_Subprogram_Renaming_Declaration
              then
!                declare
!                   Par_Type : constant Entity_Id :=
!                                Find_Dispatching_Type (Alias (Prim));
  
!                begin
!                   if Present (Par_Type)
!                     and then Par_Type /= Typ
!                     and then Is_Ancestor (Par_Type, Typ, Use_Full_View => True)
!                     and then Present (DTC_Entity (Alias (Prim)))
!                   then
!                      E := Alias (Prim);
!                      Set_DT_Position_Value (Prim, DT_Position (E));
! 
!                      if not Is_Predefined_Dispatching_Alias (E) then
!                         Set_Fixed_Prim (UI_To_Int (DT_Position (E)));
!                      end if;
!                   end if;
!                end;
              end if;
  
              Next_Elmt (Prim_Elmt);
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_disp.ads gcc-8.1.0/gcc/ada/exp_disp.ads
*** gcc-7.3.0/gcc/ada/exp_disp.ads	Fri Oct 16 11:01:53 2015
--- gcc-8.1.0/gcc/ada/exp_disp.ads	Thu Jan 11 08:55:25 2018
***************
*** 4,12 ****
  --                                                                          --
  --                             E X P _ D I S P                              --
  --                                                                          --
! --                                 GS p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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 _ D I S P                              --
  --                                                                          --
! --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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
*** 174,179 ****
--- 174,184 ----
     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
+ 
     procedure Build_Static_Dispatch_Tables (N : Node_Id);
     --  N is a library level package declaration or package body. Build the
     --  static dispatch table of the tagged types defined at library level. In
*************** package Exp_Disp is
*** 214,219 ****
--- 219,230 ----
     --  Return the number of primitives of the C++ part of the dispatch table.
     --  For types that are not derivations of CPP types return 0.
  
+    function Elab_Flag_Needed (Typ : Entity_Id) return Boolean;
+    --  Return True if the elaboration of the tagged type Typ is completed at
+    --  run time by the execution of code located in the IP routine and the
+    --  expander must generate an extra elaboration flag to avoid performing
+    --  such elaboration twice.
+ 
     procedure Expand_Dispatching_Call (Call_Node : Node_Id);
     --  Expand the call to the operation through the dispatch table and perform
     --  the required tag checks when appropriate. For CPP types tag checks are
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_dist.adb gcc-8.1.0/gcc/ada/exp_dist.adb
*** gcc-7.3.0/gcc/ada/exp_dist.adb	Fri Jan 13 10:19:19 2017
--- gcc-8.1.0/gcc/ada/exp_dist.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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_Dist is
*** 977,983 ****
                      or else
                        (Is_Generic_Instance (Pkg_Ent)
                           and then Comes_From_Source
!                                     (Get_Package_Instantiation_Node (Pkg_Ent)))
                    then
                       Visit_Nested_Pkg (Decl);
                    end if;
--- 977,983 ----
                      or else
                        (Is_Generic_Instance (Pkg_Ent)
                           and then Comes_From_Source
!                                     (Get_Unit_Instantiation_Node (Pkg_Ent)))
                    then
                       Visit_Nested_Pkg (Decl);
                    end if;
*************** package body Exp_Dist is
*** 1364,1373 ****
        RPC_Receiver                   : Entity_Id;
        RPC_Receiver_Statements        : List_Id;
        RPC_Receiver_Case_Alternatives : constant List_Id := New_List;
!       RPC_Receiver_Elsif_Parts       : List_Id;
!       RPC_Receiver_Request           : Entity_Id;
!       RPC_Receiver_Subp_Id           : Entity_Id;
!       RPC_Receiver_Subp_Index        : Entity_Id;
  
        Subp_Str : String_Id;
  
--- 1364,1373 ----
        RPC_Receiver                   : Entity_Id;
        RPC_Receiver_Statements        : List_Id;
        RPC_Receiver_Case_Alternatives : constant List_Id := New_List;
!       RPC_Receiver_Elsif_Parts       : List_Id          := No_List;
!       RPC_Receiver_Request           : Entity_Id        := Empty;
!       RPC_Receiver_Subp_Id           : Entity_Id        := Empty;
!       RPC_Receiver_Subp_Index        : Entity_Id        := Empty;
  
        Subp_Str : String_Id;
  
*************** package body Exp_Dist is
*** 9434,9440 ****
              Stms   : List_Id;
  
              Expr_Formal : Entity_Id;
!             Cstr_Formal : Entity_Id;
              Any         : Entity_Id;
              Result_TC   : Node_Id;
  
--- 9434,9440 ----
              Stms   : List_Id;
  
              Expr_Formal : Entity_Id;
!             Cstr_Formal : Entity_Id := Empty;  -- initialize to prevent warning
              Any         : Entity_Id;
              Result_TC   : Node_Id;
  
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_dist.ads gcc-8.1.0/gcc/ada/exp_dist.ads
*** gcc-7.3.0/gcc/ada/exp_dist.ads	Thu Nov 20 11:39:44 2014
--- gcc-8.1.0/gcc/ada/exp_dist.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_fixd.adb gcc-8.1.0/gcc/ada/exp_fixd.adb
*** gcc-7.3.0/gcc/ada/exp_fixd.adb	Tue Apr 19 12:59:27 2016
--- gcc-8.1.0/gcc/ada/exp_fixd.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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_Fixd is
*** 2008,2013 ****
--- 2008,2038 ----
  
        else
           Do_Divide_Fixed_Fixed (N);
+ 
+          --  A focused optimization: if after constant folding the
+          --  expression is of the form:  T ((Exp * D) / D), where D is
+          --  a static constant, return  T (Exp). This form will show up
+          --  when D is the denominator of the static expression for the
+          --  'small of fixed-point types involved. This transformation
+          --  removes a division that may be expensive on some targets.
+ 
+          if Nkind (N) = N_Type_Conversion
+            and then Nkind (Expression (N)) = N_Op_Divide
+          then
+             declare
+                Num : constant Node_Id := Left_Opnd  (Expression (N));
+                Den : constant Node_Id := Right_Opnd (Expression (N));
+ 
+             begin
+                if Nkind (Den) = N_Integer_Literal
+                  and then Nkind (Num) = N_Op_Multiply
+                  and then Nkind (Right_Opnd (Num)) = N_Integer_Literal
+                  and then Intval (Den) = Intval (Right_Opnd (Num))
+                then
+                   Rewrite (Expression (N), Left_Opnd (Num));
+                end if;
+             end;
+          end if;
        end if;
     end Expand_Divide_Fixed_By_Fixed_Giving_Fixed;
  
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_fixd.ads gcc-8.1.0/gcc/ada/exp_fixd.ads
*** gcc-7.3.0/gcc/ada/exp_fixd.ads	Mon Dec 20 07:26:57 2010
--- gcc-8.1.0/gcc/ada/exp_fixd.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2008, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_imgv.adb gcc-8.1.0/gcc/ada/exp_imgv.adb
*** gcc-7.3.0/gcc/ada/exp_imgv.adb	Thu Jul  7 13:20:30 2016
--- gcc-8.1.0/gcc/ada/exp_imgv.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or 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-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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;
*** 36,41 ****
--- 36,42 ----
  with Rtsfind;  use Rtsfind;
  with Sem_Aux;  use Sem_Aux;
  with Sem_Res;  use Sem_Res;
+ with Sem_Util; use Sem_Util;
  with Sinfo;    use Sinfo;
  with Snames;   use Snames;
  with Stand;    use Stand;
*************** package body Exp_Imgv is
*** 52,57 ****
--- 53,69 ----
     --  Ordinary_Fixed_Point_Type with a small that is a negative power of ten.
     --  Shouldn't this be in einfo.adb or sem_aux.adb???
  
+    procedure Rewrite_Object_Image
+      (N         : Node_Id;
+       Pref      : Entity_Id;
+       Attr_Name : Name_Id;
+       Str_Typ   : Entity_Id);
+    --  AI12-00124: Rewrite attribute 'Image when it is applied to an object
+    --  reference as an attribute applied to a type. N denotes the node to be
+    --  rewritten, Pref denotes the prefix of the 'Image attribute, and Name
+    --  and Str_Typ specify which specific string type and 'Image attribute to
+    --  apply (e.g. Name_Wide_Image and Standard_Wide_String).
+ 
     ------------------------------------
     -- Build_Enumeration_Image_Tables --
     ------------------------------------
*************** package body Exp_Imgv is
*** 162,168 ****
     -- Expand_Image_Attribute --
     ----------------------------
  
!    --  For all cases other than user defined enumeration types, the scheme
     --  is as follows. First we insert the following code:
  
     --    Snn : String (1 .. rt'Width);
--- 174,180 ----
     -- Expand_Image_Attribute --
     ----------------------------
  
!    --  For all cases other than user-defined enumeration types, the scheme
     --  is as follows. First we insert the following code:
  
     --    Snn : String (1 .. rt'Width);
*************** package body Exp_Imgv is
*** 251,264 ****
     --  position of the enumeration value in the enumeration type.
  
     procedure Expand_Image_Attribute (N : Node_Id) is
!       Loc       : constant Source_Ptr := Sloc (N);
!       Exprs     : constant List_Id    := Expressions (N);
!       Pref      : constant Node_Id    := Prefix (N);
!       Ptyp      : constant Entity_Id  := Entity (Pref);
!       Rtyp      : constant Entity_Id  := Root_Type (Ptyp);
!       Expr      : constant Node_Id    := Relocate_Node (First (Exprs));
        Imid      : RE_Id;
!       Tent      : Entity_Id;
        Ttyp      : Entity_Id;
        Proc_Ent  : Entity_Id;
        Enum_Case : Boolean;
--- 263,442 ----
     --  position of the enumeration value in the enumeration type.
  
     procedure Expand_Image_Attribute (N : Node_Id) is
!       Loc   : constant Source_Ptr := Sloc (N);
!       Exprs : constant List_Id    := Expressions (N);
!       Expr  : constant Node_Id    := Relocate_Node (First (Exprs));
!       Pref  : constant Node_Id    := Prefix (N);
! 
!       procedure Expand_User_Defined_Enumeration_Image;
!       --  Expand attribute 'Image in user-defined enumeration types, avoiding
!       --  string copy.
! 
!       function Is_User_Defined_Enumeration_Type
!         (Typ : Entity_Id) return Boolean;
!       --  Return True if Typ is a user-defined enumeration type
! 
!       -------------------------------------------
!       -- Expand_User_Defined_Enumeration_Image --
!       -------------------------------------------
! 
!       procedure Expand_User_Defined_Enumeration_Image is
!          Ins_List : constant List_Id   := New_List;
!          P1_Id    : constant Entity_Id := Make_Temporary (Loc, 'P');
!          P2_Id    : constant Entity_Id := Make_Temporary (Loc, 'P');
!          P3_Id    : constant Entity_Id := Make_Temporary (Loc, 'P');
!          P4_Id    : constant Entity_Id := Make_Temporary (Loc, 'P');
!          Ptyp     : constant Entity_Id := Entity (Pref);
!          Rtyp     : constant Entity_Id := Root_Type (Ptyp);
!          S1_Id    : constant Entity_Id := Make_Temporary (Loc, 'S');
! 
!       begin
!          --  Apply a validity check, since it is a bit drastic to get a
!          --  completely junk image value for an invalid value.
! 
!          if not Expr_Known_Valid (Expr) then
!             Insert_Valid_Check (Expr);
!          end if;
! 
!          --  Generate:
!          --    P1 : constant Natural := Pos;
! 
!          Append_To (Ins_List,
!            Make_Object_Declaration (Loc,
!              Defining_Identifier => P1_Id,
!              Object_Definition   =>
!                New_Occurrence_Of (Standard_Natural, Loc),
!              Constant_Present    => True,
!              Expression          =>
!                Convert_To (Standard_Natural,
!                  Make_Attribute_Reference (Loc,
!                    Attribute_Name => Name_Pos,
!                    Prefix         => New_Occurrence_Of (Ptyp, Loc),
!                    Expressions    => New_List (Expr)))));
! 
!          --  Compute the index of the string start, generating:
!          --    P2 : constant Natural := call_put_enumN (P1);
! 
!          Append_To (Ins_List,
!            Make_Object_Declaration (Loc,
!              Defining_Identifier => P2_Id,
!              Object_Definition   =>
!                New_Occurrence_Of (Standard_Natural, Loc),
!              Constant_Present    => True,
!              Expression          =>
!                Convert_To (Standard_Natural,
!                  Make_Indexed_Component (Loc,
!                    Prefix      =>
!                      New_Occurrence_Of (Lit_Indexes (Rtyp), Loc),
!                    Expressions =>
!                      New_List (New_Occurrence_Of (P1_Id, Loc))))));
! 
!          --  Compute the index of the next value, generating:
!          --    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,
!                 Object_Definition   =>
!                   New_Occurrence_Of (Standard_Natural, Loc),
!                 Constant_Present    => True,
!                 Expression          =>
!                   Convert_To (Standard_Natural,
!                     Make_Indexed_Component (Loc,
!                       Prefix      =>
!                         New_Occurrence_Of (Lit_Indexes (Rtyp), Loc),
!                       Expressions =>
!                         New_List (Add_Node)))));
!          end;
! 
!          --  Generate:
!          --    S4 : String renames call_put_enumS (S2 .. S3 - 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,
!                 Subtype_Mark        =>
!                   New_Occurrence_Of (Standard_String, Loc),
!                 Name                =>
!                   Make_Slice (Loc,
!                     Prefix         =>
!                       New_Occurrence_Of (Lit_Strings (Rtyp), Loc),
!                     Discrete_Range =>
!                       Make_Range (Loc,
!                         Low_Bound  => New_Occurrence_Of (P2_Id, Loc),
!                         High_Bound => Sub_Node))));
!          end;
! 
!          --  Generate:
!          --    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,
!                 Subtype_Indication  =>
!                   Make_Subtype_Indication (Loc,
!                     Subtype_Mark =>
!                       New_Occurrence_Of (Standard_String, Loc),
!                     Constraint   =>
!                       Make_Index_Or_Discriminant_Constraint (Loc,
!                         Constraints => New_List (
!                           Make_Range (Loc,
!                             Low_Bound  => Make_Integer_Literal (Loc, 1),
!                             High_Bound => HB))))));
!          end;
! 
!          --  Insert all the above declarations before N. We suppress checks
!          --  because everything is in range at this stage.
! 
!          Insert_Actions (N, Ins_List, Suppress => All_Checks);
! 
!          Rewrite (N,
!            Unchecked_Convert_To (S1_Id, New_Occurrence_Of (P4_Id, Loc)));
! 
!          Analyze_And_Resolve (N, Standard_String);
!       end Expand_User_Defined_Enumeration_Image;
! 
!       --------------------------------------
!       -- Is_User_Defined_Enumeration_Type --
!       --------------------------------------
! 
!       function Is_User_Defined_Enumeration_Type
!         (Typ : Entity_Id) return Boolean is
!       begin
!          return Ekind (Typ) = E_Enumeration_Type
!            and then Typ /= Standard_Boolean
!            and then Typ /= Standard_Character
!            and then Typ /= Standard_Wide_Character
!            and then Typ /= Standard_Wide_Wide_Character;
!       end Is_User_Defined_Enumeration_Type;
! 
!       --  Local variables
! 
        Imid      : RE_Id;
!       Ptyp      : Entity_Id;
!       Rtyp      : Entity_Id;
!       Tent      : Entity_Id := Empty;
        Ttyp      : Entity_Id;
        Proc_Ent  : Entity_Id;
        Enum_Case : Boolean;
*************** package body Exp_Imgv is
*** 273,278 ****
--- 451,476 ----
        Pnn : constant Entity_Id := Make_Temporary (Loc, 'P');
  
     begin
+       if Is_Object_Image (Pref) then
+          Rewrite_Object_Image (N, Pref, Name_Image, Standard_String);
+          return;
+ 
+       --  Enable speed-optimized expansion of user-defined enumeration types
+       --  if we are compiling with optimizations enabled and enumeration type
+       --  literals are generated. Otherwise the call will be expanded into a
+       --  call to the runtime library.
+ 
+       elsif Optimization_Level > 0
+         and then not Global_Discard_Names
+         and then Is_User_Defined_Enumeration_Type (Root_Type (Entity (Pref)))
+       then
+          Expand_User_Defined_Enumeration_Image;
+          return;
+       end if;
+ 
+       Ptyp := Entity (Pref);
+       Rtyp := Root_Type (Ptyp);
+ 
        --  Build declarations of Snn and Pnn to be inserted
  
        Ins_List := New_List (
*************** package body Exp_Imgv is
*** 365,371 ****
           Imid := RE_Image_Floating_Point;
           Tent := Standard_Long_Long_Float;
  
!       --  Only other possibility is user defined enumeration type
  
        else
           if Discard_Names (First_Subtype (Ptyp))
--- 563,569 ----
           Imid := RE_Image_Floating_Point;
           Tent := Standard_Long_Long_Float;
  
!       --  Only other possibility is user-defined enumeration type
  
        else
           if Discard_Names (First_Subtype (Ptyp))
*************** package body Exp_Imgv is
*** 660,666 ****
        elsif Is_Real_Type (Rtyp) then
           Vid := RE_Value_Real;
  
!       --  Only other possibility is user defined enumeration type
  
        else
           pragma Assert (Is_Enumeration_Type (Rtyp));
--- 858,864 ----
        elsif Is_Real_Type (Rtyp) then
           Vid := RE_Value_Real;
  
!       --  Only other possibility is user-defined enumeration type
  
        else
           pragma Assert (Is_Enumeration_Type (Rtyp));
*************** package body Exp_Imgv is
*** 733,739 ****
           return;
        end if;
  
!       --  Fall through for all cases except user defined enumeration type
        --  and decimal types, with Vid set to the Id of the entity for the
        --  Value routine and Args set to the list of parameters for the call.
  
--- 931,937 ----
           return;
        end if;
  
!       --  Fall through for all cases except user-defined enumeration type
        --  and decimal types, with Vid set to the Id of the entity for the
        --  Value routine and Args set to the list of parameters for the call.
  
*************** package body Exp_Imgv is
*** 791,801 ****
  
     procedure Expand_Wide_Image_Attribute (N : Node_Id) is
        Loc  : constant Source_Ptr := Sloc (N);
!       Rtyp : constant Entity_Id  := Root_Type (Entity (Prefix (N)));
!       Rnn  : constant Entity_Id := Make_Temporary (Loc, 'S');
!       Lnn  : constant Entity_Id := Make_Temporary (Loc, 'P');
  
     begin
        Insert_Actions (N, New_List (
  
           --  Rnn : Wide_String (1 .. base_typ'Width);
--- 989,1007 ----
  
     procedure Expand_Wide_Image_Attribute (N : Node_Id) is
        Loc  : constant Source_Ptr := Sloc (N);
!       Pref : constant Entity_Id  := Prefix (N);
!       Rnn  : constant Entity_Id  := Make_Temporary (Loc, 'S');
!       Lnn  : constant Entity_Id  := Make_Temporary (Loc, 'P');
!       Rtyp : Entity_Id;
  
     begin
+       if Is_Object_Image (Pref) then
+          Rewrite_Object_Image (N, Pref, Name_Wide_Image, Standard_Wide_String);
+          return;
+       end if;
+ 
+       Rtyp := Root_Type (Entity (Pref));
+ 
        Insert_Actions (N, New_List (
  
           --  Rnn : Wide_String (1 .. base_typ'Width);
*************** package body Exp_Imgv is
*** 882,893 ****
  
     procedure Expand_Wide_Wide_Image_Attribute (N : Node_Id) is
        Loc  : constant Source_Ptr := Sloc (N);
!       Rtyp : constant Entity_Id  := Root_Type (Entity (Prefix (N)));
! 
!       Rnn : constant Entity_Id := Make_Temporary (Loc, 'S');
!       Lnn : constant Entity_Id := Make_Temporary (Loc, 'P');
  
     begin
        Insert_Actions (N, New_List (
  
           --  Rnn : Wide_Wide_String (1 .. rt'Wide_Wide_Width);
--- 1088,1107 ----
  
     procedure Expand_Wide_Wide_Image_Attribute (N : Node_Id) is
        Loc  : constant Source_Ptr := Sloc (N);
!       Pref : constant Entity_Id  := Prefix (N);
!       Rnn  : constant Entity_Id  := Make_Temporary (Loc, 'S');
!       Lnn  : constant Entity_Id  := Make_Temporary (Loc, 'P');
!       Rtyp : Entity_Id;
  
     begin
+       if Is_Object_Image (Pref) then
+          Rewrite_Object_Image
+            (N, Pref, Name_Wide_Wide_Image, Standard_Wide_Wide_String);
+          return;
+       end if;
+ 
+       Rtyp := Root_Type (Entity (Pref));
+ 
        Insert_Actions (N, New_List (
  
           --  Rnn : Wide_Wide_String (1 .. rt'Wide_Wide_Width);
*************** package body Exp_Imgv is
*** 1034,1040 ****
     --  because the base type is always static, and hence the expression
     --  in the else is reduced to an integer literal.
  
!    --  For user defined enumeration types, typ'Width expands into
  
     --    Result_Type (Width_Enumeration_NN
     --                  (typS,
--- 1248,1254 ----
     --  because the base type is always static, and hence the expression
     --  in the else is reduced to an integer literal.
  
!    --  For user-defined enumeration types, typ'Width expands into
  
     --    Result_Type (Width_Enumeration_NN
     --                  (typS,
*************** package body Exp_Imgv is
*** 1159,1171 ****
           Analyze_And_Resolve (N, Typ);
           return;
  
!       --  User defined enumeration types
  
        else
           pragma Assert (Is_Enumeration_Type (Rtyp));
  
           --  Whenever pragma Discard_Names is in effect, the value we need
!          --  is the value needed to accomodate the largest integer pos value
           --  in the range of the subtype + 1 for the space at the start. We
           --  build:
  
--- 1373,1385 ----
           Analyze_And_Resolve (N, Typ);
           return;
  
!       --  User-defined enumeration types
  
        else
           pragma Assert (Is_Enumeration_Type (Rtyp));
  
           --  Whenever pragma Discard_Names is in effect, the value we need
!          --  is the value needed to accommodate the largest integer pos value
           --  in the range of the subtype + 1 for the space at the start. We
           --  build:
  
*************** package body Exp_Imgv is
*** 1373,1376 ****
--- 1587,1609 ----
               and then Ureal_10**Aft_Value (E) * Small_Value (E) = Ureal_1);
     end Has_Decimal_Small;
  
+    --------------------------
+    -- Rewrite_Object_Image --
+    --------------------------
+ 
+    procedure Rewrite_Object_Image
+      (N         : Node_Id;
+       Pref      : Entity_Id;
+       Attr_Name : Name_Id;
+       Str_Typ   : Entity_Id)
+    is
+    begin
+       Rewrite (N,
+         Make_Attribute_Reference (Sloc (N),
+           Prefix         => New_Occurrence_Of (Etype (Pref), Sloc (N)),
+           Attribute_Name => Attr_Name,
+           Expressions    => New_List (Relocate_Node (Pref))));
+ 
+       Analyze_And_Resolve (N, Str_Typ);
+    end Rewrite_Object_Image;
  end Exp_Imgv;
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_imgv.ads gcc-8.1.0/gcc/ada/exp_imgv.ads
*** gcc-7.3.0/gcc/ada/exp_imgv.ads	Thu Dec 13 10:21:30 2007
--- gcc-8.1.0/gcc/ada/exp_imgv.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2000-2007, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or 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-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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_Imgv is
*** 70,89 ****
     --    declarations are not constructed, and the fields remain Empty.
  
     procedure Expand_Image_Attribute (N : Node_Id);
!    --  This procedure is called from Exp_Attr to expand an occurrence
!    --  of the attribute Image.
  
     procedure Expand_Wide_Image_Attribute (N : Node_Id);
!    --  This procedure is called from Exp_Attr to expand an occurrence
!    --  of the attribute Wide_Image.
  
     procedure Expand_Wide_Wide_Image_Attribute (N : Node_Id);
!    --  This procedure is called from Exp_Attr to expand an occurrence
!    --  of the attribute Wide_Wide_Image.
  
     procedure Expand_Value_Attribute (N : Node_Id);
!    --  This procedure is called from Exp_Attr to expand an occurrence
!    --  of the attribute Value.
  
     type Atype is (Normal, Wide, Wide_Wide);
     --  Type of attribute in call to Expand_Width_Attribute
--- 70,89 ----
     --    declarations are not constructed, and the fields remain Empty.
  
     procedure Expand_Image_Attribute (N : Node_Id);
!    --  This procedure is called from Exp_Attr to expand an occurrence of the
!    --  attribute Image.
  
     procedure Expand_Wide_Image_Attribute (N : Node_Id);
!    --  This procedure is called from Exp_Attr to expand an occurrence of the
!    --  attribute Wide_Image.
  
     procedure Expand_Wide_Wide_Image_Attribute (N : Node_Id);
!    --  This procedure is called from Exp_Attr to expand an occurrence of the
!    --  attribute Wide_Wide_Image.
  
     procedure Expand_Value_Attribute (N : Node_Id);
!    --  This procedure is called from Exp_Attr to expand an occurrence of the
!    --  attribute Value.
  
     type Atype is (Normal, Wide, Wide_Wide);
     --  Type of attribute in call to Expand_Width_Attribute
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_intr.adb gcc-8.1.0/gcc/ada/exp_intr.adb
*** gcc-7.3.0/gcc/ada/exp_intr.adb	Fri Jan 13 10:19:19 2017
--- gcc-8.1.0/gcc/ada/exp_intr.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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,33 ****
  with Checks;   use Checks;
  with Einfo;    use Einfo;
  with Elists;   use Elists;
- with Errout;   use Errout;
  with Expander; use Expander;
  with Exp_Atag; use Exp_Atag;
  with Exp_Ch4;  use Exp_Ch4;
--- 27,32 ----
*************** package body Exp_Intr is
*** 111,122 ****
     --  GNAT.Source_Info; see g-souinf.ads for documentation of these
     --  intrinsics.
  
-    procedure Append_Entity_Name (Buf : in out Bounded_String; E : Entity_Id);
-    --  Recursive procedure to construct string for qualified name of enclosing
-    --  program unit. The qualification stops at an enclosing scope has no
-    --  source name (block or loop). If entity is a subprogram instance, skip
-    --  enclosing wrapper package. The name is appended to Buf.
- 
     ---------------------
     -- Add_Source_Info --
     ---------------------
--- 110,115 ----
*************** package body Exp_Intr is
*** 132,138 ****
              Append (Buf, Nat (Get_Logical_Line_Number (Loc)));
  
           when Name_File =>
!             Append_Decoded (Buf, Reference_Name (Get_Source_File_Index (Loc)));
  
           when Name_Source_Location =>
              Build_Location_String (Buf, Loc);
--- 125,131 ----
              Append (Buf, Nat (Get_Logical_Line_Number (Loc)));
  
           when Name_File =>
!             Append (Buf, Reference_Name (Get_Source_File_Index (Loc)));
  
           when Name_Source_Location =>
              Build_Location_String (Buf, Loc);
*************** package body Exp_Intr is
*** 189,286 ****
        end case;
     end Add_Source_Info;
  
-    -----------------------
-    -- Append_Entity_Name --
-    -----------------------
- 
-    procedure Append_Entity_Name (Buf : in out Bounded_String; E : Entity_Id) is
-       Temp : Bounded_String;
- 
-       procedure Inner (E : Entity_Id);
-       --  Inner recursive routine, keep outer routine nonrecursive to ease
-       --  debugging when we get strange results from this routine.
- 
-       -----------
-       -- Inner --
-       -----------
- 
-       procedure Inner (E : Entity_Id) is
-       begin
-          --  If entity has an internal name, skip by it, and print its scope.
-          --  Note that we strip a final R from the name before the test; this
-          --  is needed for some cases of instantiations.
- 
-          declare
-             E_Name : Bounded_String;
- 
-          begin
-             Append (E_Name, Chars (E));
- 
-             if E_Name.Chars (E_Name.Length) = 'R' then
-                E_Name.Length := E_Name.Length - 1;
-             end if;
- 
-             if Is_Internal_Name (E_Name) then
-                Inner (Scope (E));
-                return;
-             end if;
-          end;
- 
-          --  Just print entity name if its scope is at the outer level
- 
-          if Scope (E) = Standard_Standard then
-             null;
- 
-          --  If scope comes from source, write scope and entity
- 
-          elsif Comes_From_Source (Scope (E)) then
-             Append_Entity_Name (Temp, Scope (E));
-             Append (Temp, '.');
- 
-          --  If in wrapper package skip past it
- 
-          elsif Is_Wrapper_Package (Scope (E)) then
-             Append_Entity_Name (Temp, Scope (Scope (E)));
-             Append (Temp, '.');
- 
-          --  Otherwise nothing to output (happens in unnamed block statements)
- 
-          else
-             null;
-          end if;
- 
-          --  Output the name
- 
-          declare
-             E_Name : Bounded_String;
- 
-          begin
-             Append_Unqualified_Decoded (E_Name, Chars (E));
- 
-             --  Remove trailing upper-case letters from the name (useful for
-             --  dealing with some cases of internal names generated in the case
-             --  of references from within a generic).
- 
-             while E_Name.Length > 1
-               and then E_Name.Chars (E_Name.Length) in 'A' .. 'Z'
-             loop
-                E_Name.Length := E_Name.Length - 1;
-             end loop;
- 
-             --  Adjust casing appropriately (gets name from source if possible)
- 
-             Adjust_Name_Case (E_Name, Sloc (E));
-             Append (Temp, E_Name);
-          end;
-       end Inner;
- 
-    --  Start of processing for Append_Entity_Name
- 
-    begin
-       Inner (E);
-       Append (Buf, Temp);
-    end Append_Entity_Name;
- 
     ---------------------------------
     -- Expand_Binary_Operator_Call --
     ---------------------------------
--- 182,187 ----
*************** package body Exp_Intr is
*** 400,406 ****
          Make_Implicit_If_Statement (N,
            Condition       => Make_Function_Call (Loc,
               Name                   =>
!                New_Occurrence_Of (RTE (RE_Type_Is_Abstract), Loc),
               Parameter_Associations => New_List (New_Copy_Tree (Tag_Arg))),
  
            Then_Statements => New_List (
--- 301,307 ----
          Make_Implicit_If_Statement (N,
            Condition       => Make_Function_Call (Loc,
               Name                   =>
!                New_Occurrence_Of (RTE (RE_Is_Abstract), Loc),
               Parameter_Associations => New_List (New_Copy_Tree (Tag_Arg))),
  
            Then_Statements => New_List (
*************** package body Exp_Intr is
*** 421,440 ****
        Result_Typ := Class_Wide_Type (Etype (Act_Constr));
  
        --  Check that the accessibility level of the tag is no deeper than that
!       --  of the constructor function.
  
!       Insert_Action (N,
!         Make_Implicit_If_Statement (N,
!           Condition       =>
!             Make_Op_Gt (Loc,
!               Left_Opnd  =>
!                 Build_Get_Access_Level (Loc, New_Copy_Tree (Tag_Arg)),
!               Right_Opnd =>
!                 Make_Integer_Literal (Loc, Scope_Depth (Act_Constr))),
  
!           Then_Statements => New_List (
!             Make_Raise_Statement (Loc,
!               New_Occurrence_Of (RTE (RE_Tag_Error), Loc)))));
  
        if Is_Interface (Etype (Act_Constr)) then
  
--- 322,343 ----
        Result_Typ := Class_Wide_Type (Etype (Act_Constr));
  
        --  Check that the accessibility level of the tag is no deeper than that
!       --  of the constructor function (unless CodePeer_Mode)
  
!       if not CodePeer_Mode then
!          Insert_Action (N,
!            Make_Implicit_If_Statement (N,
!              Condition       =>
!                Make_Op_Gt (Loc,
!                  Left_Opnd  =>
!                    Build_Get_Access_Level (Loc, New_Copy_Tree (Tag_Arg)),
!                  Right_Opnd =>
!                    Make_Integer_Literal (Loc, Scope_Depth (Act_Constr))),
  
!              Then_Statements => New_List (
!                Make_Raise_Statement (Loc,
!                  New_Occurrence_Of (RTE (RE_Tag_Error), Loc)))));
!       end if;
  
        if Is_Interface (Etype (Act_Constr)) then
  
*************** package body Exp_Intr is
*** 505,514 ****
  
        --  Do not generate a run-time check on the built object if tag
        --  checks are suppressed for the result type or tagged type expansion
!       --  is disabled.
  
        if Tag_Checks_Suppressed (Etype (Result_Typ))
          or else not Tagged_Type_Expansion
        then
           null;
  
--- 408,418 ----
  
        --  Do not generate a run-time check on the built object if tag
        --  checks are suppressed for the result type or tagged type expansion
!       --  is disabled or if CodePeer_Mode.
  
        if Tag_Checks_Suppressed (Etype (Result_Typ))
          or else not Tagged_Type_Expansion
+         or else CodePeer_Mode
        then
           null;
  
*************** package body Exp_Intr is
*** 1020,1026 ****
        Arg       : constant Node_Id    := First_Actual (N);
        Loc       : constant Source_Ptr := Sloc (N);
        Typ       : constant Entity_Id  := Etype (Arg);
!       Desig_Typ : constant Entity_Id  := Designated_Type (Typ);
        Needs_Fin : constant Boolean    := Needs_Finalization (Desig_Typ);
        Root_Typ  : constant Entity_Id  := Underlying_Type (Root_Type (Typ));
        Pool      : constant Entity_Id  := Associated_Storage_Pool (Root_Typ);
--- 924,931 ----
        Arg       : constant Node_Id    := First_Actual (N);
        Loc       : constant Source_Ptr := Sloc (N);
        Typ       : constant Entity_Id  := Etype (Arg);
!       Desig_Typ : constant Entity_Id  :=
!                     Available_View (Designated_Type (Typ));
        Needs_Fin : constant Boolean    := Needs_Finalization (Desig_Typ);
        Root_Typ  : constant Entity_Id  := Underlying_Type (Root_Type (Typ));
        Pool      : constant Entity_Id  := Associated_Storage_Pool (Root_Typ);
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_intr.ads gcc-8.1.0/gcc/ada/exp_intr.ads
*** gcc-7.3.0/gcc/ada/exp_intr.ads	Mon Apr 18 10:53:32 2016
--- gcc-8.1.0/gcc/ada/exp_intr.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_pakd.adb gcc-8.1.0/gcc/ada/exp_pakd.adb
*** gcc-7.3.0/gcc/ada/exp_pakd.adb	Mon May 16 11:08:53 2016
--- gcc-8.1.0/gcc/ada/exp_pakd.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_pakd.ads gcc-8.1.0/gcc/ada/exp_pakd.ads
*** gcc-7.3.0/gcc/ada/exp_pakd.ads	Fri Oct 17 09:07:50 2014
--- gcc-8.1.0/gcc/ada/exp_pakd.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_prag.adb gcc-8.1.0/gcc/ada/exp_prag.adb
*** gcc-7.3.0/gcc/ada/exp_prag.adb	Fri Jan 13 10:19:19 2017
--- gcc-8.1.0/gcc/ada/exp_prag.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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 Exp_Ch11; use Exp_Ch11;
*** 33,38 ****
--- 33,39 ----
  with Exp_Util; use Exp_Util;
  with Expander; use Expander;
  with Inline;   use Inline;
+ with Lib;      use Lib;
  with Namet;    use Namet;
  with Nlists;   use Nlists;
  with Nmake;    use Nmake;
*************** with Restrict; use Restrict;
*** 41,46 ****
--- 42,48 ----
  with Rident;   use Rident;
  with Rtsfind;  use Rtsfind;
  with Sem;      use Sem;
+ with Sem_Aux;  use Sem_Aux;
  with Sem_Ch8;  use Sem_Ch8;
  with Sem_Util; use Sem_Util;
  with Sinfo;    use Sinfo;
*************** package body Exp_Prag is
*** 161,179 ****
     ---------------------
  
     procedure Expand_N_Pragma (N : Node_Id) is
!       Pname : constant Name_Id := Pragma_Name (N);
  
     begin
        --  Rewrite pragma ignored by Ignore_Pragma to null statement, so that
!       --  the back end or the expander here does not get overenthusiastic and
!       --  start processing such a pragma!
  
!       if Get_Name_Table_Boolean3 (Pname) then
           Rewrite (N, Make_Null_Statement (Sloc (N)));
           return;
        end if;
  
!       case Get_Pragma_Id (Pname) is
  
           --  Pragmas requiring special expander action
  
--- 163,185 ----
     ---------------------
  
     procedure Expand_N_Pragma (N : Node_Id) is
!       Pname   : constant Name_Id   := Pragma_Name (N);
!       Prag_Id : constant Pragma_Id := Get_Pragma_Id (Pname);
  
     begin
        --  Rewrite pragma ignored by Ignore_Pragma to null statement, so that
!       --  the back end doesn't see it. The same goes for pragma
!       --  Default_Scalar_Storage_Order if the -gnatI switch was given.
  
!       if Should_Ignore_Pragma_Sem (N)
!         or else (Prag_Id = Pragma_Default_Scalar_Storage_Order
!                   and then Ignore_Rep_Clauses)
!       then
           Rewrite (N, Make_Null_Statement (Sloc (N)));
           return;
        end if;
  
!       case Prag_Id is
  
           --  Pragmas requiring special expander action
  
*************** package body Exp_Prag is
*** 315,320 ****
--- 321,409 ----
        --  Assert_Failure, so that coverage analysis tools can relate the
        --  call to the failed check.
  
+       procedure Replace_Discriminals_Of_Protected_Op (Expr : Node_Id);
+       --  Discriminants of the enclosing protected object may be referenced
+       --  in the expression of a precondition of a protected operation.
+       --  In the body of the operation these references must be replaced by
+       --  the discriminal created for them, which are renamings of the
+       --  discriminants of the object that is the target of the operation.
+       --  This replacement is done by visibility when the references appear
+       --  in the subprogram body, but in the case of a condition which appears
+       --  on the specification of the subprogram it has be done separately
+       --  because the condition has been replaced by a Check pragma and
+       --  analyzed earlier, before the creation of the discriminal renaming
+       --  declarations that are added to the subprogram body.
+ 
+       ------------------------------------------
+       -- Replace_Discriminals_Of_Protected_Op --
+       ------------------------------------------
+ 
+       procedure Replace_Discriminals_Of_Protected_Op (Expr : Node_Id) is
+          function Find_Corresponding_Discriminal
+            (E : Entity_Id) return Entity_Id;
+          --  Find the local entity that renames a discriminant of the enclosing
+          --  protected type, and has a matching name.
+ 
+          function Replace_Discr_Ref (N : Node_Id) return Traverse_Result;
+          --  Replace a reference to a discriminant of the original protected
+          --  type by the local renaming declaration of the discriminant of
+          --  the target object.
+ 
+          ------------------------------------
+          -- Find_Corresponding_Discriminal --
+          ------------------------------------
+ 
+          function Find_Corresponding_Discriminal
+            (E : Entity_Id) return Entity_Id
+          is
+             R : Entity_Id;
+ 
+          begin
+             R := First_Entity (Current_Scope);
+ 
+             while Present (R) loop
+                if Nkind (Parent (R)) = N_Object_Renaming_Declaration
+                  and then Present (Discriminal_Link (R))
+                  and then Chars (Discriminal_Link (R)) = Chars (E)
+                then
+                   return R;
+                end if;
+ 
+                Next_Entity (R);
+             end loop;
+ 
+             return Empty;
+          end Find_Corresponding_Discriminal;
+ 
+          -----------------------
+          -- Replace_Discr_Ref --
+          -----------------------
+ 
+          function Replace_Discr_Ref (N : Node_Id) return Traverse_Result is
+             R : Entity_Id;
+ 
+          begin
+             if Is_Entity_Name (N)
+               and then Present (Discriminal_Link (Entity (N)))
+             then
+                R := Find_Corresponding_Discriminal (Entity (N));
+                Rewrite (N, New_Occurrence_Of (R, Sloc (N)));
+             end if;
+ 
+             return OK;
+          end Replace_Discr_Ref;
+ 
+          procedure Replace_Discriminant_References is
+            new Traverse_Proc (Replace_Discr_Ref);
+ 
+       --  Start of processing for Replace_Discriminals_Of_Protected_Op
+ 
+       begin
+          Replace_Discriminant_References (Expr);
+       end Replace_Discriminals_Of_Protected_Op;
+ 
+    --  Start of processing for Expand_Pragma_Check
+ 
     begin
        --  Nothing to do if pragma is ignored
  
*************** package body Exp_Prag is
*** 432,442 ****
                    Add_Str_To_Name_Buffer ("failed invariant from ");
  
                 --  For all other checks, the string is "xxx failed at yyy"
!                --  where xxx is the check name with current source file casing.
  
                 else
                    Get_Name_String (Nam);
!                   Set_Casing (Identifier_Casing (Current_Source_File));
                    Add_Str_To_Name_Buffer (" failed at ");
                 end if;
  
--- 521,532 ----
                    Add_Str_To_Name_Buffer ("failed invariant from ");
  
                 --  For all other checks, the string is "xxx failed at yyy"
!                --  where xxx is the check name with appropriate casing.
  
                 else
                    Get_Name_String (Nam);
!                   Set_Casing
!                     (Identifier_Casing (Source_Index (Current_Sem_Unit)));
                    Add_Str_To_Name_Buffer (" failed at ");
                 end if;
  
*************** package body Exp_Prag is
*** 450,455 ****
--- 540,555 ----
              end;
           end if;
  
+          --  For a precondition, replace references to discriminants of a
+          --  protected type with the local discriminals.
+ 
+          if Is_Protected_Type (Scope (Current_Scope))
+            and then Has_Discriminants (Scope (Current_Scope))
+            and then From_Aspect_Specification (N)
+          then
+             Replace_Discriminals_Of_Protected_Op (Cond);
+          end if;
+ 
           --  Now rewrite as an if statement
  
           Rewrite (N,
*************** package body Exp_Prag is
*** 990,1000 ****
        Conseq_Checks : Node_Id   := Empty;
        Count         : Entity_Id;
        Count_Decl    : Node_Id;
!       Error_Decls   : List_Id;
        Flag          : Entity_Id;
        Flag_Decl     : Node_Id;
        If_Stmt       : Node_Id;
!       Msg_Str       : Entity_Id;
        Multiple_PCs  : Boolean;
        Old_Evals     : Node_Id   := Empty;
        Others_Decl   : Node_Id;
--- 1090,1100 ----
        Conseq_Checks : Node_Id   := Empty;
        Count         : Entity_Id;
        Count_Decl    : Node_Id;
!       Error_Decls   : List_Id := No_List; -- init to avoid warning
        Flag          : Entity_Id;
        Flag_Decl     : Node_Id;
        If_Stmt       : Node_Id;
!       Msg_Str       : Entity_Id := Empty;
        Multiple_PCs  : Boolean;
        Old_Evals     : Node_Id   := Empty;
        Others_Decl   : Node_Id;
*************** package body Exp_Prag is
*** 1348,1429 ****
     -- Expand_Pragma_Initial_Condition --
     -------------------------------------
  
!    procedure Expand_Pragma_Initial_Condition (Spec_Or_Body : Node_Id) is
!       Loc : constant Source_Ptr := Sloc (Spec_Or_Body);
  
!       Check     : Node_Id;
!       Expr      : Node_Id;
!       Init_Cond : Node_Id;
!       List      : List_Id;
!       Pack_Id   : Entity_Id;
  
!    begin
!       if Nkind (Spec_Or_Body) = N_Package_Body then
!          Pack_Id := Corresponding_Spec (Spec_Or_Body);
  
!          if Present (Handled_Statement_Sequence (Spec_Or_Body)) then
!             List := Statements (Handled_Statement_Sequence (Spec_Or_Body));
  
!          --  The package body lacks statements, create an empty list
  
!          else
!             List := New_List;
  
!             Set_Handled_Statement_Sequence (Spec_Or_Body,
!               Make_Handled_Sequence_Of_Statements (Loc, Statements => List));
           end if;
  
!       elsif Nkind (Spec_Or_Body) = N_Package_Declaration then
!          Pack_Id := Defining_Entity (Spec_Or_Body);
  
!          if Present (Visible_Declarations (Specification (Spec_Or_Body))) then
!             List := Visible_Declarations (Specification (Spec_Or_Body));
  
!          --  The package lacks visible declarations, create an empty list
  
!          else
!             List := New_List;
  
!             Set_Visible_Declarations (Specification (Spec_Or_Body), List);
           end if;
  
        --  This routine should not be used on anything other than packages
  
        else
!          raise Program_Error;
        end if;
  
!       Init_Cond := Get_Pragma (Pack_Id, Pragma_Initial_Condition);
  
!       --  The caller should check whether the package is subject to pragma
!       --  Initial_Condition.
  
!       pragma Assert (Present (Init_Cond));
  
!       Expr :=
!         Get_Pragma_Arg (First (Pragma_Argument_Associations (Init_Cond)));
  
!       --  The assertion expression was found to be illegal, do not generate the
!       --  runtime check as it will repeat the illegality.
  
!       if Error_Posted (Init_Cond) or else Error_Posted (Expr) then
!          return;
        end if;
  
        --  Generate:
!       --    pragma Check (Initial_Condition, <Expr>);
  
!       Check :=
!         Make_Pragma (Loc,
!           Chars                        => Name_Check,
!           Pragma_Argument_Associations => New_List (
!             Make_Pragma_Argument_Association (Loc,
!               Expression => Make_Identifier (Loc, Name_Initial_Condition)),
!             Make_Pragma_Argument_Association (Loc,
!               Expression => New_Copy_Tree (Expr))));
  
!       Append_To (List, Check);
!       Analyze (Check);
     end Expand_Pragma_Initial_Condition;
  
     ------------------------------------
--- 1448,1734 ----
     -- Expand_Pragma_Initial_Condition --
     -------------------------------------
  
!    procedure Expand_Pragma_Initial_Condition
!      (Pack_Id : Entity_Id;
!       N       : Node_Id)
!    is
!       procedure Extract_Package_Body_Lists
!         (Pack_Body : Node_Id;
!          Body_List : out List_Id;
!          Call_List : out List_Id;
!          Spec_List : out List_Id);
!       --  Obtain the various declarative and statement lists of package body
!       --  Pack_Body needed to insert the initial condition procedure and the
!       --  call to it. The lists are as follows:
!       --
!       --    * Body_List - used to insert the initial condition procedure body
!       --
!       --    * Call_List - used to insert the call to the initial condition
!       --      procedure.
!       --
!       --    * Spec_List - used to insert the initial condition procedure spec
  
!       procedure Extract_Package_Declaration_Lists
!         (Pack_Decl : Node_Id;
!          Body_List : out List_Id;
!          Call_List : out List_Id;
!          Spec_List : out List_Id);
!       --  Obtain the various declarative lists of package declaration Pack_Decl
!       --  needed to insert the initial condition procedure and the call to it.
!       --  The lists are as follows:
!       --
!       --    * Body_List - used to insert the initial condition procedure body
!       --
!       --    * Call_List - used to insert the call to the initial condition
!       --      procedure.
!       --
!       --    * Spec_List - used to insert the initial condition procedure spec
  
!       --------------------------------
!       -- Extract_Package_Body_Lists --
!       --------------------------------
  
!       procedure Extract_Package_Body_Lists
!         (Pack_Body : Node_Id;
!          Body_List : out List_Id;
!          Call_List : out List_Id;
!          Spec_List : out List_Id)
!       is
!          Pack_Spec : constant Entity_Id := Corresponding_Spec (Pack_Body);
  
!          Dummy_1 : List_Id;
!          Dummy_2 : List_Id;
!          HSS     : Node_Id;
  
!       begin
!          pragma Assert (Present (Pack_Spec));
  
!          --  The different parts of the invariant procedure are inserted as
!          --  follows:
! 
!          --    package Pack is       package body Pack is
!          --       <IC spec>             <IC body>
!          --    private               begin
!          --       ...                   <IC call>
!          --    end Pack;             end Pack;
! 
!          --  The initial condition procedure spec is inserted in the visible
!          --  declaration of the corresponding package spec.
! 
!          Extract_Package_Declaration_Lists
!            (Pack_Decl => Unit_Declaration_Node (Pack_Spec),
!             Body_List => Dummy_1,
!             Call_List => Dummy_2,
!             Spec_List => Spec_List);
! 
!          --  The initial condition procedure body is added to the declarations
!          --  of the package body.
! 
!          Body_List := Declarations (Pack_Body);
! 
!          if No (Body_List) then
!             Body_List := New_List;
!             Set_Declarations (Pack_Body, Body_List);
           end if;
  
!          --  The call to the initial condition procedure is inserted in the
!          --  statements of the package body.
  
!          HSS := Handled_Statement_Sequence (Pack_Body);
  
!          if No (HSS) then
!             HSS :=
!               Make_Handled_Sequence_Of_Statements (Sloc (Pack_Body),
!                 Statements => New_List);
!             Set_Handled_Statement_Sequence (Pack_Body, HSS);
!          end if;
  
!          Call_List := Statements (HSS);
!       end Extract_Package_Body_Lists;
  
!       ---------------------------------------
!       -- Extract_Package_Declaration_Lists --
!       ---------------------------------------
! 
!       procedure Extract_Package_Declaration_Lists
!         (Pack_Decl : Node_Id;
!          Body_List : out List_Id;
!          Call_List : out List_Id;
!          Spec_List : out List_Id)
!       is
!          Pack_Spec : constant Node_Id := Specification (Pack_Decl);
! 
!       begin
!          --  The different parts of the invariant procedure are inserted as
!          --  follows:
! 
!          --    package Pack is
!          --       <IC spec>
!          --       <IC body>
!          --    private
!          --       <IC call>
!          --    end Pack;
! 
!          --  The initial condition procedure spec and body are inserted in the
!          --  visible declarations of the package spec.
! 
!          Body_List := Visible_Declarations (Pack_Spec);
! 
!          if No (Body_List) then
!             Body_List := New_List;
!             Set_Visible_Declarations (Pack_Spec, Body_List);
           end if;
  
+          Spec_List := Body_List;
+ 
+          --  The call to the initial procedure is inserted in the private
+          --  declarations of the package spec.
+ 
+          Call_List := Private_Declarations (Pack_Spec);
+ 
+          if No (Call_List) then
+             Call_List := New_List;
+             Set_Private_Declarations (Pack_Spec, Call_List);
+          end if;
+       end Extract_Package_Declaration_Lists;
+ 
+       --  Local variables
+ 
+       IC_Prag : constant Node_Id :=
+                   Get_Pragma (Pack_Id, Pragma_Initial_Condition);
+ 
+       Body_List    : List_Id;
+       Call         : Node_Id;
+       Call_List    : List_Id;
+       Call_Loc     : Source_Ptr;
+       Expr         : Node_Id;
+       Loc          : Source_Ptr;
+       Proc_Body    : Node_Id;
+       Proc_Body_Id : Entity_Id;
+       Proc_Decl    : Node_Id;
+       Proc_Id      : Entity_Id;
+       Spec_List    : List_Id;
+ 
+    --  Start of processing for Expand_Pragma_Initial_Condition
+ 
+    begin
+       --  Nothing to do when the package is not subject to an Initial_Condition
+       --  pragma.
+ 
+       if No (IC_Prag) then
+          return;
+       end if;
+ 
+       Expr := Get_Pragma_Arg (First (Pragma_Argument_Associations (IC_Prag)));
+       Loc  := Sloc (IC_Prag);
+ 
+       --  Nothing to do when the pragma or its argument are illegal because
+       --  there is no valid expression to check.
+ 
+       if Error_Posted (IC_Prag) or else Error_Posted (Expr) then
+          return;
+       end if;
+ 
+       --  Obtain the various lists of the context where the individual pieces
+       --  of the initial condition procedure are to be inserted.
+ 
+       if Nkind (N) = N_Package_Body then
+          Extract_Package_Body_Lists
+            (Pack_Body => N,
+             Body_List => Body_List,
+             Call_List => Call_List,
+             Spec_List => Spec_List);
+ 
+       elsif Nkind (N) = N_Package_Declaration then
+          Extract_Package_Declaration_Lists
+            (Pack_Decl => N,
+             Body_List => Body_List,
+             Call_List => Call_List,
+             Spec_List => Spec_List);
+ 
        --  This routine should not be used on anything other than packages
  
        else
!          pragma Assert (False);
!          return;
        end if;
  
!       Proc_Id :=
!         Make_Defining_Identifier (Loc,
!           Chars => New_External_Name (Chars (Pack_Id), "Initial_Condition"));
  
!       Set_Ekind                          (Proc_Id, E_Procedure);
!       Set_Is_Initial_Condition_Procedure (Proc_Id);
  
!       --  Generate:
!       --    procedure <Pack_Id>Initial_Condition;
  
!       Proc_Decl :=
!         Make_Subprogram_Declaration (Loc,
!           Make_Procedure_Specification (Loc,
!             Defining_Unit_Name => Proc_Id));
  
!       Append_To (Spec_List, Proc_Decl);
  
!       --  The initial condition procedure requires debug info when initial
!       --  condition is subject to Source Coverage Obligations.
! 
!       if Generate_SCO then
!          Set_Needs_Debug_Info (Proc_Id);
        end if;
  
        --  Generate:
!       --    procedure <Pack_Id>Initial_Condition is
!       --    begin
!       --       pragma Check (Initial_Condition, <Expr>);
!       --    end <Pack_Id>Initial_Condition;
  
!       Proc_Body :=
!         Make_Subprogram_Body (Loc,
!           Specification              =>
!             Copy_Subprogram_Spec (Specification (Proc_Decl)),
!           Declarations               => Empty_List,
!           Handled_Statement_Sequence =>
!             Make_Handled_Sequence_Of_Statements (Loc,
!               Statements => New_List (
!                 Make_Pragma (Loc,
!                   Chars                        => Name_Check,
!                   Pragma_Argument_Associations => New_List (
!                     Make_Pragma_Argument_Association (Loc,
!                       Expression =>
!                         Make_Identifier (Loc, Name_Initial_Condition)),
!                     Make_Pragma_Argument_Association (Loc,
!                       Expression => New_Copy_Tree (Expr)))))));
  
!       Append_To (Body_List, Proc_Body);
! 
!       --  The initial condition procedure requires debug info when initial
!       --  condition is subject to Source Coverage Obligations.
! 
!       Proc_Body_Id := Defining_Entity (Proc_Body);
! 
!       if Generate_SCO then
!          Set_Needs_Debug_Info (Proc_Body_Id);
!       end if;
! 
!       --  The location of the initial condition procedure call must be as close
!       --  as possible to the intended semantic location of the check because
!       --  the ABE mechanism relies heavily on accurate locations.
! 
!       Call_Loc := End_Keyword_Location (N);
! 
!       --  Generate:
!       --    <Pack_Id>Initial_Condition;
! 
!       Call :=
!         Make_Procedure_Call_Statement (Call_Loc,
!           Name => New_Occurrence_Of (Proc_Id, Call_Loc));
! 
!       Append_To (Call_List, Call);
! 
!       Analyze (Proc_Decl);
!       Analyze (Proc_Body);
!       Analyze (Call);
     end Expand_Pragma_Initial_Condition;
  
     ------------------------------------
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_prag.ads gcc-8.1.0/gcc/ada/exp_prag.ads
*** gcc-7.3.0/gcc/ada/exp_prag.ads	Tue May 26 09:20:53 2015
--- gcc-8.1.0/gcc/ada/exp_prag.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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_Prag is
*** 42,56 ****
     --  Subp_Id's body. All generated code is added to list Stmts. If Stmts is
     --  No_List on entry, a new list is created.
  
!    procedure Expand_Pragma_Initial_Condition (Spec_Or_Body : Node_Id);
!    --  Generate a runtime check needed to verify the assumption of introduced
!    --  by pragma Initial_Condition. Spec_Or_Body denotes the spec or body of
!    --  the package where the pragma appears. The check is inserted according
!    --  to the following precedence rules:
!    --    1) If the package has a body with a statement sequence, the check is
!    --       inserted at the end of the statments.
!    --    2) If the package has a body, the check is inserted at the end of the
!    --       body declarations.
!    --    3) The check is inserted at the end of the visible declarations.
  
  end Exp_Prag;
--- 42,52 ----
     --  Subp_Id's body. All generated code is added to list Stmts. If Stmts is
     --  No_List on entry, a new list is created.
  
!    procedure Expand_Pragma_Initial_Condition
!      (Pack_Id : Entity_Id;
!       N       : Node_Id);
!    --  Verify the run-time semantics of pragma Initial_Condition when it
!    --  applies to package Pack_Id. N denotes the related package spec or
!    --  body.
  
  end Exp_Prag;
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_sel.adb gcc-8.1.0/gcc/ada/exp_sel.adb
*** gcc-7.3.0/gcc/ada/exp_sel.adb	Mon Nov 23 11:20:34 2015
--- gcc-8.1.0/gcc/ada/exp_sel.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_sel.ads gcc-8.1.0/gcc/ada/exp_sel.ads
*** gcc-7.3.0/gcc/ada/exp_sel.ads	Thu Jan 12 13:30:20 2017
--- gcc-8.1.0/gcc/ada/exp_sel.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_smem.adb gcc-8.1.0/gcc/ada/exp_smem.adb
*** gcc-7.3.0/gcc/ada/exp_smem.adb	Fri Aug  1 09:48:28 2014
--- gcc-8.1.0/gcc/ada/exp_smem.adb	Thu Jan 11 08:54:12 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1998-2014, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or 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-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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_Smem is
*** 207,213 ****
  
        else
           Insert_Action (N, Vde);
!          Establish_Transient_Scope (N, Sec_Stack => False);
        end if;
  
        --  Mark object as locked in the current (transient) scope
--- 207,213 ----
  
        else
           Insert_Action (N, Vde);
!          Establish_Transient_Scope (N, Manage_Sec_Stack => False);
        end if;
  
        --  Mark object as locked in the current (transient) scope
*************** package body Exp_Smem is
*** 255,267 ****
     ---------------------
  
     procedure Add_Write_After (N : Node_Id) is
-       Loc : constant Source_Ptr := Sloc (N);
        Ent : constant Entity_Id  := Entity (N);
        Par : constant Node_Id    := Insert_Node;
     begin
        if Present (Shared_Var_Procs_Instance (Ent)) then
           if Nkind (Insert_Node) = N_Function_Call then
!             Establish_Transient_Scope (Insert_Node, Sec_Stack => False);
              Store_After_Actions_In_Scope (New_List (
                Build_Shared_Var_Proc_Call (Loc, Ent, Name_Write)));
           else
--- 255,269 ----
     ---------------------
  
     procedure Add_Write_After (N : Node_Id) is
        Ent : constant Entity_Id  := Entity (N);
+       Loc : constant Source_Ptr := Sloc (N);
        Par : constant Node_Id    := Insert_Node;
+ 
     begin
        if Present (Shared_Var_Procs_Instance (Ent)) then
           if Nkind (Insert_Node) = N_Function_Call then
!             Establish_Transient_Scope (Insert_Node, Manage_Sec_Stack => False);
! 
              Store_After_Actions_In_Scope (New_List (
                Build_Shared_Var_Proc_Call (Loc, Ent, Name_Write)));
           else
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_smem.ads gcc-8.1.0/gcc/ada/exp_smem.ads
*** gcc-7.3.0/gcc/ada/exp_smem.ads	Thu Jul 17 06:19:52 2014
--- gcc-8.1.0/gcc/ada/exp_smem.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1998-2014, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or 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-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_spark.adb gcc-8.1.0/gcc/ada/exp_spark.adb
*** gcc-7.3.0/gcc/ada/exp_spark.adb	Mon Jan 23 11:54:05 2017
--- gcc-8.1.0/gcc/ada/exp_spark.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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,31 ****
--- 26,32 ----
  with Atree;    use Atree;
  with Checks;   use Checks;
  with Einfo;    use Einfo;
+ with Exp_Ch4;
  with Exp_Ch5;  use Exp_Ch5;
  with Exp_Dbug; use Exp_Dbug;
  with Exp_Util; use Exp_Util;
*************** with Namet;    use Namet;
*** 33,39 ****
--- 34,42 ----
  with Nlists;   use Nlists;
  with Nmake;    use Nmake;
  with Rtsfind;  use Rtsfind;
+ with Sem;      use Sem;
  with Sem_Eval; use Sem_Eval;
+ with Sem_Prag; use Sem_Prag;
  with Sem_Res;  use Sem_Res;
  with Sem_Util; use Sem_Util;
  with Sinfo;    use Sinfo;
*************** package body Exp_SPARK is
*** 48,60 ****
     -- Local Subprograms --
     -----------------------
  
!    procedure Expand_SPARK_Attribute_Reference (N : Node_Id);
     --  Replace occurrences of System'To_Address by calls to
     --  System.Storage_Elements.To_Address
  
     procedure Expand_SPARK_N_Object_Renaming_Declaration (N : Node_Id);
     --  Perform name evaluation for a renamed object
  
     ------------------
     -- Expand_SPARK --
     ------------------
--- 51,81 ----
     -- Local Subprograms --
     -----------------------
  
!    procedure Expand_SPARK_N_Attribute_Reference (N : Node_Id);
     --  Replace occurrences of System'To_Address by calls to
     --  System.Storage_Elements.To_Address
  
+    procedure Expand_SPARK_N_Freeze_Type (E : Entity_Id);
+    --  Build the DIC procedure of a type when needed, if not already done
+ 
+    procedure Expand_SPARK_N_Indexed_Component (N : Node_Id);
+    --  Insert explicit dereference if required
+ 
+    procedure Expand_SPARK_N_Loop_Statement (N : Node_Id);
+    --  Perform loop statement-specific expansion
+ 
+    procedure Expand_SPARK_N_Object_Declaration (N : Node_Id);
+    --  Perform object-declaration-specific expansion
+ 
     procedure Expand_SPARK_N_Object_Renaming_Declaration (N : Node_Id);
     --  Perform name evaluation for a renamed object
  
+    procedure Expand_SPARK_N_Op_Ne (N : Node_Id);
+    --  Rewrite operator /= based on operator = when defined explicitly
+ 
+    procedure Expand_SPARK_N_Selected_Component (N : Node_Id);
+    --  Insert explicit dereference if required
+ 
     ------------------
     -- Expand_SPARK --
     ------------------
*************** package body Exp_SPARK is
*** 81,100 ****
           =>
              Qualify_Entity_Names (N);
  
           when N_Expanded_Name
              | N_Identifier
           =>
              Expand_SPARK_Potential_Renaming (N);
  
-          when N_Object_Renaming_Declaration =>
-             Expand_SPARK_N_Object_Renaming_Declaration (N);
- 
-          --  Replace occurrences of System'To_Address by calls to
-          --  System.Storage_Elements.To_Address
- 
-          when N_Attribute_Reference =>
-             Expand_SPARK_Attribute_Reference (N);
- 
           --  Loop iterations over arrays need to be expanded, to avoid getting
           --  two names referring to the same object in memory (the array and
           --  the iterator) in GNATprove, especially since both can be written
--- 102,118 ----
           =>
              Qualify_Entity_Names (N);
  
+          --  Replace occurrences of System'To_Address by calls to
+          --  System.Storage_Elements.To_Address.
+ 
+          when N_Attribute_Reference =>
+             Expand_SPARK_N_Attribute_Reference (N);
+ 
           when N_Expanded_Name
              | N_Identifier
           =>
              Expand_SPARK_Potential_Renaming (N);
  
           --  Loop iterations over arrays need to be expanded, to avoid getting
           --  two names referring to the same object in memory (the array and
           --  the iterator) in GNATprove, especially since both can be written
*************** package body Exp_SPARK is
*** 103,119 ****
           --  dealt with specially in GNATprove.
  
           when N_Loop_Statement =>
!             declare
!                Scheme : constant Node_Id := Iteration_Scheme (N);
!             begin
!                if Present (Scheme)
!                  and then Present (Iterator_Specification (Scheme))
!                  and then
!                    Is_Iterator_Over_Array (Iterator_Specification (Scheme))
!                then
!                   Expand_Iterator_Loop_Over_Array (N);
!                end if;
!             end;
  
           --  In SPARK mode, no other constructs require expansion
  
--- 121,147 ----
           --  dealt with specially in GNATprove.
  
           when N_Loop_Statement =>
!             Expand_SPARK_N_Loop_Statement (N);
! 
!          when N_Object_Declaration =>
!             Expand_SPARK_N_Object_Declaration (N);
! 
!          when N_Object_Renaming_Declaration =>
!             Expand_SPARK_N_Object_Renaming_Declaration (N);
! 
!          when N_Op_Ne =>
!             Expand_SPARK_N_Op_Ne (N);
! 
!          when N_Freeze_Entity =>
!             if Is_Type (Entity (N)) then
!                Expand_SPARK_N_Freeze_Type (Entity (N));
!             end if;
! 
!          when N_Indexed_Component =>
!             Expand_SPARK_N_Indexed_Component (N);
! 
!          when N_Selected_Component =>
!             Expand_SPARK_N_Selected_Component (N);
  
           --  In SPARK mode, no other constructs require expansion
  
*************** package body Exp_SPARK is
*** 122,132 ****
        end case;
     end Expand_SPARK;
  
!    --------------------------------------
!    -- Expand_SPARK_Attribute_Reference --
!    --------------------------------------
  
!    procedure Expand_SPARK_Attribute_Reference (N : Node_Id) is
        Aname   : constant Name_Id      := Attribute_Name (N);
        Attr_Id : constant Attribute_Id := Get_Attribute_Id (Aname);
        Loc     : constant Source_Ptr   := Sloc (N);
--- 150,175 ----
        end case;
     end Expand_SPARK;
  
!    --------------------------------
!    -- Expand_SPARK_N_Freeze_Type --
!    --------------------------------
  
!    procedure Expand_SPARK_N_Freeze_Type (E : Entity_Id) is
!    begin
!       --  When a DIC is inherited by a tagged type, it may need to be
!       --  specialized to the descendant type, hence build a separate DIC
!       --  procedure for it as done during regular expansion for compilation.
! 
!       if Has_DIC (E) and then Is_Tagged_Type (E) then
!          Build_DIC_Procedure_Body (E, For_Freeze => True);
!       end if;
!    end Expand_SPARK_N_Freeze_Type;
! 
!    ----------------------------------------
!    -- Expand_SPARK_N_Attribute_Reference --
!    ----------------------------------------
! 
!    procedure Expand_SPARK_N_Attribute_Reference (N : Node_Id) is
        Aname   : constant Name_Id      := Attribute_Name (N);
        Attr_Id : constant Attribute_Id := Get_Attribute_Id (Aname);
        Loc     : constant Source_Ptr   := Sloc (N);
*************** package body Exp_SPARK is
*** 224,271 ****
              end if;
           end;
        end if;
!    end Expand_SPARK_Attribute_Reference;
  
     ------------------------------------------------
     -- Expand_SPARK_N_Object_Renaming_Declaration --
     ------------------------------------------------
  
     procedure Expand_SPARK_N_Object_Renaming_Declaration (N : Node_Id) is
     begin
!       --  Unconditionally remove all side effects from the name
  
!       Evaluate_Name (Name (N));
     end Expand_SPARK_N_Object_Renaming_Declaration;
  
     -------------------------------------
     -- Expand_SPARK_Potential_Renaming --
     -------------------------------------
  
     procedure Expand_SPARK_Potential_Renaming (N : Node_Id) is
        Loc    : constant Source_Ptr := Sloc (N);
!       Ren_Id : constant Entity_Id  := Entity (N);
        Typ    : constant Entity_Id  := Etype (N);
!       Obj_Id : Node_Id;
  
     begin
        --  Replace a reference to a renaming with the actual renamed object
  
!       if Ekind (Ren_Id) in Object_Kind then
!          Obj_Id := Renamed_Object (Ren_Id);
  
!          if Present (Obj_Id) then
  
!             --  The renamed object is an entity when instantiating generics
!             --  or inlining bodies. In this case the renaming is part of the
!             --  mapping "prologue" which links actuals to formals.
  
!             if Nkind (Obj_Id) in N_Entity then
!                Rewrite (N, New_Occurrence_Of (Obj_Id, Loc));
  
              --  Otherwise the renamed object denotes a name
  
              else
!                Rewrite (N, New_Copy_Tree (Obj_Id, New_Sloc => Loc));
                 Reset_Analyzed_Flags (N);
              end if;
  
--- 267,494 ----
              end if;
           end;
        end if;
!    end Expand_SPARK_N_Attribute_Reference;
! 
!    -----------------------------------
!    -- Expand_SPARK_N_Loop_Statement --
!    -----------------------------------
! 
!    procedure Expand_SPARK_N_Loop_Statement (N : Node_Id) is
!       Scheme : constant Node_Id := Iteration_Scheme (N);
! 
!    begin
!       --  Loop iterations over arrays need to be expanded, to avoid getting
!       --  two names referring to the same object in memory (the array and the
!       --  iterator) in GNATprove, especially since both can be written (thus
!       --  possibly leading to interferences due to aliasing). No such problem
!       --  arises with quantified expressions over arrays, which are dealt with
!       --  specially in GNATprove.
! 
!       if Present (Scheme)
!         and then Present (Iterator_Specification (Scheme))
!         and then Is_Iterator_Over_Array (Iterator_Specification (Scheme))
!       then
!          Expand_Iterator_Loop_Over_Array (N);
!       end if;
!    end Expand_SPARK_N_Loop_Statement;
! 
!    --------------------------------------
!    -- Expand_SPARK_N_Indexed_Component --
!    --------------------------------------
! 
!    procedure Expand_SPARK_N_Indexed_Component (N : Node_Id) is
!       Pref : constant Node_Id    := Prefix (N);
!       Typ  : constant Entity_Id  := Etype (Pref);
! 
!    begin
!       if Is_Access_Type (Typ) then
!          Insert_Explicit_Dereference (Pref);
!          Analyze_And_Resolve (Pref, Designated_Type (Typ));
!       end if;
!    end Expand_SPARK_N_Indexed_Component;
! 
!    ---------------------------------------
!    -- Expand_SPARK_N_Object_Declaration --
!    ---------------------------------------
! 
!    procedure Expand_SPARK_N_Object_Declaration (N : Node_Id) is
!       Loc    : constant Source_Ptr := Sloc (N);
!       Obj_Id : constant Entity_Id  := Defining_Identifier (N);
!       Typ    : constant Entity_Id  := Etype (Obj_Id);
! 
!       Call : Node_Id;
! 
!    begin
!       --  If the object declaration denotes a variable without initialization
!       --  whose type is subject to pragma Default_Initial_Condition, create
!       --  and analyze a dummy call to the DIC procedure of the type in order
!       --  to detect potential elaboration issues.
! 
!       if Comes_From_Source (Obj_Id)
!         and then Ekind (Obj_Id) = E_Variable
!         and then Has_DIC (Typ)
!         and then Present (DIC_Procedure (Typ))
!         and then not Has_Init_Expression (N)
!       then
!          Call := Build_DIC_Call (Loc, Obj_Id, Typ);
! 
!          --  Partially insert the call into the tree by setting its parent
!          --  pointer.
! 
!          Set_Parent (Call, N);
!          Analyze (Call);
!       end if;
!    end Expand_SPARK_N_Object_Declaration;
  
     ------------------------------------------------
     -- Expand_SPARK_N_Object_Renaming_Declaration --
     ------------------------------------------------
  
     procedure Expand_SPARK_N_Object_Renaming_Declaration (N : Node_Id) is
+       CFS    : constant Boolean    := Comes_From_Source (N);
+       Loc    : constant Source_Ptr := Sloc (N);
+       Obj_Id : constant Entity_Id  := Defining_Entity (N);
+       Nam    : constant Node_Id    := Name (N);
+       Typ    : constant Entity_Id  := Etype (Obj_Id);
+ 
     begin
!       --  Transform a renaming of the form
  
!       --    Obj_Id : <subtype mark> renames <function call>;
! 
!       --  into
! 
!       --    Obj_Id : constant <subtype mark> := <function call>;
! 
!       --  Invoking Evaluate_Name and ultimately Remove_Side_Effects introduces
!       --  a temporary to capture the function result. Once potential renamings
!       --  are rewritten for SPARK, the temporary may be leaked out into source
!       --  constructs and lead to confusing error diagnostics. Using an object
!       --  declaration prevents this unwanted side effect.
! 
!       if Nkind (Nam) = N_Function_Call then
!          Rewrite (N,
!            Make_Object_Declaration (Loc,
!              Defining_Identifier => Obj_Id,
!              Constant_Present    => True,
!              Object_Definition   => New_Occurrence_Of (Typ, Loc),
!              Expression          => Nam));
! 
!          --  Inherit the original Comes_From_Source status of the renaming
! 
!          Set_Comes_From_Source (N, CFS);
! 
!          --  Sever the link to the renamed function result because the entity
!          --  will no longer alias anything.
! 
!          Set_Renamed_Object (Obj_Id, Empty);
! 
!          --  Remove the entity of the renaming declaration from visibility as
!          --  the analysis of the object declaration will reintroduce it again.
! 
!          Remove_Entity (Obj_Id);
!          Analyze (N);
! 
!       --  Otherwise unconditionally remove all side effects from the name
! 
!       else
!          Evaluate_Name (Nam);
!       end if;
     end Expand_SPARK_N_Object_Renaming_Declaration;
  
+    --------------------------
+    -- Expand_SPARK_N_Op_Ne --
+    --------------------------
+ 
+    procedure Expand_SPARK_N_Op_Ne (N : Node_Id) is
+       Typ : constant Entity_Id := Etype (Left_Opnd (N));
+ 
+    begin
+       --  Case of elementary type with standard operator
+ 
+       if Is_Elementary_Type (Typ)
+         and then Sloc (Entity (N)) = Standard_Location
+       then
+          null;
+ 
+       else
+          Exp_Ch4.Expand_N_Op_Ne (N);
+       end if;
+    end Expand_SPARK_N_Op_Ne;
+ 
     -------------------------------------
     -- Expand_SPARK_Potential_Renaming --
     -------------------------------------
  
     procedure Expand_SPARK_Potential_Renaming (N : Node_Id) is
+       function In_Insignificant_Pragma (Nod : Node_Id) return Boolean;
+       --  Determine whether arbitrary node Nod appears within a significant
+       --  pragma for SPARK.
+ 
+       -----------------------------
+       -- In_Insignificant_Pragma --
+       -----------------------------
+ 
+       function In_Insignificant_Pragma (Nod : Node_Id) return Boolean is
+          Par : Node_Id;
+ 
+       begin
+          --  Climb the parent chain looking for an enclosing pragma
+ 
+          Par := Nod;
+          while Present (Par) loop
+             if Nkind (Par) = N_Pragma then
+                return not Pragma_Significant_In_SPARK (Get_Pragma_Id (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 False;
+       end In_Insignificant_Pragma;
+ 
+       --  Local variables
+ 
        Loc    : constant Source_Ptr := Sloc (N);
!       Obj_Id : constant Entity_Id  := Entity (N);
        Typ    : constant Entity_Id  := Etype (N);
!       Ren    : Node_Id;
! 
!    --  Start of processing for Expand_SPARK_Potential_Renaming
  
     begin
        --  Replace a reference to a renaming with the actual renamed object
  
!       if Ekind (Obj_Id) in Object_Kind then
!          Ren := Renamed_Object (Obj_Id);
  
!          if Present (Ren) then
  
!             --  Do not process a reference when it appears within a pragma of
!             --  no significance to SPARK. It is assumed that the replacement
!             --  will violate the semantics of the pragma and cause a spurious
!             --  error.
  
!             if In_Insignificant_Pragma (N) then
!                return;
! 
!             --  Instantiations and inlining of subprograms employ "prologues"
!             --  which map actual to formal parameters by means of renamings.
!             --  Replace a reference to a formal by the corresponding actual
!             --  parameter.
! 
!             elsif Nkind (Ren) in N_Entity then
!                Rewrite (N, New_Occurrence_Of (Ren, Loc));
  
              --  Otherwise the renamed object denotes a name
  
              else
!                Rewrite (N, New_Copy_Tree (Ren, New_Sloc => Loc));
                 Reset_Analyzed_Flags (N);
              end if;
  
*************** package body Exp_SPARK is
*** 274,277 ****
--- 497,527 ----
        end if;
     end Expand_SPARK_Potential_Renaming;
  
+    ---------------------------------------
+    -- Expand_SPARK_N_Selected_Component --
+    ---------------------------------------
+ 
+    procedure Expand_SPARK_N_Selected_Component (N : Node_Id) is
+       Pref : constant Node_Id   := Prefix (N);
+       Typ  : constant Entity_Id := Underlying_Type (Etype (Pref));
+ 
+    begin
+       if Present (Typ) and then Is_Access_Type (Typ) then
+ 
+          --  First set prefix type to proper access type, in case it currently
+          --  has a private (non-access) view of this type.
+ 
+          Set_Etype (Pref, Typ);
+ 
+          Insert_Explicit_Dereference (Pref);
+          Analyze_And_Resolve (Pref, Designated_Type (Typ));
+ 
+          if Ekind (Etype (Pref)) = E_Private_Subtype
+            and then Is_For_Access_Subtype (Etype (Pref))
+          then
+             Set_Etype (Pref, Base_Type (Etype (Pref)));
+          end if;
+       end if;
+    end Expand_SPARK_N_Selected_Component;
+ 
  end Exp_SPARK;
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_spark.ads gcc-8.1.0/gcc/ada/exp_spark.ads
*** gcc-7.3.0/gcc/ada/exp_spark.ads	Wed Apr 27 12:55:18 2016
--- gcc-8.1.0/gcc/ada/exp_spark.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or 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-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_strm.adb gcc-8.1.0/gcc/ada/exp_strm.adb
*** gcc-7.3.0/gcc/ada/exp_strm.adb	Mon Jan 23 13:20:22 2017
--- gcc-8.1.0/gcc/ada/exp_strm.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_strm.ads gcc-8.1.0/gcc/ada/exp_strm.ads
*** gcc-7.3.0/gcc/ada/exp_strm.ads	Mon Jan 23 13:24:47 2017
--- gcc-8.1.0/gcc/ada/exp_strm.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_tss.adb gcc-8.1.0/gcc/ada/exp_tss.adb
*** gcc-7.3.0/gcc/ada/exp_tss.adb	Tue Oct 20 12:40:36 2015
--- gcc-8.1.0/gcc/ada/exp_tss.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_tss.ads gcc-8.1.0/gcc/ada/exp_tss.ads
*** gcc-7.3.0/gcc/ada/exp_tss.ads	Thu May 28 08:19:18 2015
--- gcc-8.1.0/gcc/ada/exp_tss.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_unst.adb gcc-8.1.0/gcc/ada/exp_unst.adb
*** gcc-7.3.0/gcc/ada/exp_unst.adb	Tue Jun 14 12:37:54 2016
--- gcc-8.1.0/gcc/ada/exp_unst.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2014-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or 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-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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 Lib;      use Lib;
*** 31,40 ****
  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_Ch8;  use Sem_Ch8;
  with Sem_Mech; use Sem_Mech;
  with Sem_Res;  use Sem_Res;
--- 31,41 ----
  with Namet;    use Namet;
  with Nlists;   use Nlists;
  with Nmake;    use Nmake;
! with Opt;
  with Output;   use Output;
  with Rtsfind;  use Rtsfind;
  with Sem;      use Sem;
+ with Sem_Aux;  use Sem_Aux;
  with Sem_Ch8;  use Sem_Ch8;
  with Sem_Mech; use Sem_Mech;
  with Sem_Res;  use Sem_Res;
*************** package body Exp_Unst is
*** 176,184 ****
     ----------------
  
     function Subp_Index (Sub : Entity_Id) return SI_Type is
     begin
!       pragma Assert (Is_Subprogram (Sub));
!       return SI_Type (UI_To_Int (Subps_Index (Sub)));
     end Subp_Index;
  
     -----------------------
--- 177,200 ----
     ----------------
  
     function Subp_Index (Sub : Entity_Id) return SI_Type is
+       E : Entity_Id := Sub;
+ 
     begin
!       pragma Assert (Is_Subprogram (E));
! 
!       if Subps_Index (E) = Uint_0 then
!          E := Ultimate_Alias (E);
! 
!          if Ekind (E) = E_Function
!            and then Rewritten_For_C (E)
!            and then Present (Corresponding_Procedure (E))
!          then
!             E := Corresponding_Procedure (E);
!          end if;
!       end if;
! 
!       pragma Assert (Subps_Index (E) /= Uint_0);
!       return SI_Type (UI_To_Int (Subps_Index (E)));
     end Subp_Index;
  
     -----------------------
*************** package body Exp_Unst is
*** 286,291 ****
--- 302,317 ----
           return;
        end if;
  
+       --  If the main unit is a package body then we need to examine the spec
+       --  to determine whether the main unit is generic (the scope stack is not
+       --  present when this is called on the main unit).
+ 
+       if Ekind (Cunit_Entity (Main_Unit)) = E_Package_Body
+         and then Is_Generic_Unit (Spec_Entity (Cunit_Entity (Main_Unit)))
+       then
+          return;
+       end if;
+ 
        --  At least for now, do not unnest anything but main source unit
  
        if not In_Extended_Main_Source_Unit (Subp_Body) then
*************** package body Exp_Unst is
*** 537,544 ****
                 Ent := Entity (Name (N));
  
                 --  We are only interested in calls to subprograms nested
!                --  within Subp. Calls to Subp itself or to subprograms that
!                --  are outside the nested structure do not affect us.
  
                 if Scope_Within (Ent, Subp) then
  
--- 563,570 ----
                 Ent := Entity (Name (N));
  
                 --  We are only interested in calls to subprograms nested
!                --  within Subp. Calls to Subp itself or to subprograms
!                --  that are outside the nested structure do not affect us.
  
                 if Scope_Within (Ent, Subp) then
  
*************** package body Exp_Unst is
*** 558,563 ****
--- 584,623 ----
                    end if;
                 end if;
  
+             --  Record a 'Access as a (potential) call
+ 
+             elsif Nkind (N) = N_Attribute_Reference then
+                declare
+                   Attr : constant Attribute_Id :=
+                            Get_Attribute_Id (Attribute_Name (N));
+                begin
+                   case Attr is
+                      when Attribute_Access
+                         | Attribute_Unchecked_Access
+                         | Attribute_Unrestricted_Access
+                      =>
+                         if Nkind (Prefix (N)) in N_Has_Entity then
+                            Ent := Entity (Prefix (N));
+ 
+                            --  We are only interested in calls to subprograms
+                            --  nested within Subp.
+ 
+                            if Scope_Within (Ent, Subp) then
+                               if Is_Imported (Ent) then
+                                  null;
+ 
+                               elsif Is_Subprogram (Ent) then
+                                  Append_Unique_Call
+                                    ((N, Current_Subprogram, Ent));
+                               end if;
+                            end if;
+                         end if;
+ 
+                      when others =>
+                         null;
+                   end case;
+                end;
+ 
              --  Record a subprogram. We record a subprogram body that acts as
              --  a spec. Otherwise we record a subprogram declaration, providing
              --  that it has a corresponding body we can get hold of. The case
*************** package body Exp_Unst is
*** 1600,1607 ****
              Act    : Node_Id;
  
           begin
!             if Present (STT.ARECnF) then
! 
                 --  CTJ.N is a call to a subprogram which may require a pointer
                 --  to an activation record. The subprogram containing the call
                 --  is CTJ.From and the subprogram being called is CTJ.To, so we
--- 1660,1668 ----
              Act    : Node_Id;
  
           begin
!             if Present (STT.ARECnF)
!               and then Nkind (CTJ.N) /= N_Attribute_Reference
!             then
                 --  CTJ.N is a call to a subprogram which may require a pointer
                 --  to an activation record. The subprogram containing the call
                 --  is CTJ.From and the subprogram being called is CTJ.To, so we
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_unst.ads gcc-8.1.0/gcc/ada/exp_unst.ads
*** gcc-7.3.0/gcc/ada/exp_unst.ads	Thu Apr 21 08:14:08 2016
--- gcc-8.1.0/gcc/ada/exp_unst.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2014-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or 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-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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_Unst is
*** 64,70 ****
     --     doing transformations of this type.
  
     --     Second: given that the transformation will be semantics-preserving,
!    --     we can still used the standard GCC back end to build code from it.
     --     This means we can easily run our full test suite to verify that the
     --     transformations are indeed semantics preserving. It is a lot more
     --     work to thoroughly test the output of specialized back ends.
--- 64,70 ----
     --     doing transformations of this type.
  
     --     Second: given that the transformation will be semantics-preserving,
!    --     we can still use the standard GCC back end to build code from it.
     --     This means we can easily run our full test suite to verify that the
     --     transformations are indeed semantics preserving. It is a lot more
     --     work to thoroughly test the output of specialized back ends.
*************** package Exp_Unst is
*** 239,245 ****
     --          procedure inner (bb : integer; AREC1F : AREC1PT) is
     --          begin
     --             Integer'Deref(AREC1F.x) :=
!    --               Integer'Deref(AREC1F.rv) + y + b + Integer_Deref(AREC1F.b);
     --          end;
     --
     --       begin
--- 239,245 ----
     --          procedure inner (bb : integer; AREC1F : AREC1PT) is
     --          begin
     --             Integer'Deref(AREC1F.x) :=
!    --               Integer'Deref(AREC1F.rv) + y + b + Integer'Deref(AREC1F.b);
     --          end;
     --
     --       begin
*************** package Exp_Unst is
*** 294,306 ****
  
     --    What we do is to always generate a local constant for any dynamic
     --    bound in a dynamic subtype xx with name xx_FIRST or xx_LAST. The one
!    --    case where we can skip this is where the bound is e.g. in the third
!    --    example above, subtype dynam is expanded as
  
!    --      dynam_LAST  : constant Integer := y + 3;
     --      subtype dynam is integer range x .. dynam_LAST;
  
!    --    Now if type dynam is uplevel referenced (as it is this case), then
     --    the bounds x and dynam_LAST are marked as uplevel references
     --    so that appropriate entries are made in the activation record. Any
     --    explicit reference to such a bound in the front end generated code
--- 294,306 ----
  
     --    What we do is to always generate a local constant for any dynamic
     --    bound in a dynamic subtype xx with name xx_FIRST or xx_LAST. The one
!    --    case where we can skip this is where the bound is already a constant.
!    --    E.g. in the third example above, subtype dynam is expanded as
  
!    --      dynam_LAST : constant Integer := y + 3;
     --      subtype dynam is integer range x .. dynam_LAST;
  
!    --    Now if type dynam is uplevel referenced (as it is in this case), then
     --    the bounds x and dynam_LAST are marked as uplevel references
     --    so that appropriate entries are made in the activation record. Any
     --    explicit reference to such a bound in the front end generated code
*************** package Exp_Unst is
*** 310,316 ****
     --    these bounds can be replaced by an appropriate reference to the entry
     --    in the activation record for xx_FIRST or xx_LAST. Thus the back end
     --    can eliminate the problematical uplevel reference without the need to
!    --    do the heavy tree modification to do that at the code expansion level
  
     --  Looking at case 3 again, here is the normal -gnatG expanded code
  
--- 310,316 ----
     --    these bounds can be replaced by an appropriate reference to the entry
     --    in the activation record for xx_FIRST or xx_LAST. Thus the back end
     --    can eliminate the problematical uplevel reference without the need to
!    --    do the heavy tree modification to do that at the code expansion level.
  
     --  Looking at case 3 again, here is the normal -gnatG expanded code
  
*************** package Exp_Unst is
*** 347,353 ****
     --  we ignore that detail to clarify the examples.
  
     --  Here we see that some of the bounds references are expanded by the
!    --  front end, so that we get explicit references to y or dynamLast. These
     --  cases are handled by the normal uplevel reference mechanism described
     --  above for case 2. This is the case for the constraint check for the
     --  initialization of xx, and the range check in function inner.
--- 347,353 ----
     --  we ignore that detail to clarify the examples.
  
     --  Here we see that some of the bounds references are expanded by the
!    --  front end, so that we get explicit references to y or dynam_Last. These
     --  cases are handled by the normal uplevel reference mechanism described
     --  above for case 2. This is the case for the constraint check for the
     --  initialization of xx, and the range check in function inner.
*************** package Exp_Unst is
*** 658,664 ****
        ARECnU : Entity_Id;
        --  This AREC entity is the uplink component. It is other than Empty only
        --  for nested subprograms that declare an activation record as indicated
!       --  by Declares_AREC being Ture, and which have uplevel references (Lev
        --  greater than Uplevel_Ref). It is the additional component in the
        --  activation record that references the ARECnF pointer (which points
        --  the activation record one level higher, thus forming the chain).
--- 658,664 ----
        ARECnU : Entity_Id;
        --  This AREC entity is the uplink component. It is other than Empty only
        --  for nested subprograms that declare an activation record as indicated
!       --  by Declares_AREC being True, and which have uplevel references (Lev
        --  greater than Uplevel_Ref). It is the additional component in the
        --  activation record that references the ARECnF pointer (which points
        --  the activation record one level higher, thus forming the chain).
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_util.adb gcc-8.1.0/gcc/ada/exp_util.adb
*** gcc-7.3.0/gcc/ada/exp_util.adb	Mon Jan 23 13:24:47 2017
--- gcc-8.1.0/gcc/ada/exp_util.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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_Ch8;  use Sem_Ch8;
*** 52,57 ****
--- 52,58 ----
  with Sem_Ch12; use Sem_Ch12;
  with Sem_Ch13; use Sem_Ch13;
  with Sem_Disp; use Sem_Disp;
+ with Sem_Elab; use Sem_Elab;
  with Sem_Eval; use Sem_Eval;
  with Sem_Res;  use Sem_Res;
  with Sem_Type; use Sem_Type;
*************** with Ttypes;   use Ttypes;
*** 65,72 ****
  with Urealp;   use Urealp;
  with Validsw;  use Validsw;
  
! with GNAT.HTable; use GNAT.HTable;
! 
  package body Exp_Util is
  
     ---------------------------------------------------------
--- 66,72 ----
  with Urealp;   use Urealp;
  with Validsw;  use Validsw;
  
! with GNAT.HTable;
  package body Exp_Util is
  
     ---------------------------------------------------------
*************** package body Exp_Util is
*** 92,108 ****
     --  operations are mapped into the overriding operations of that current
     --  type extension.
  
!    Primitives_Mapping_Size : constant := 511;
  
!    subtype Num_Primitives is Integer range 0 .. Primitives_Mapping_Size - 1;
!    function Entity_Hash (E : Entity_Id) return Num_Primitives;
  
!    package Primitives_Mapping is new GNAT.HTable.Simple_HTable
!      (Header_Num => Num_Primitives,
        Key        => Entity_Id,
!       Element    => Entity_Id,
        No_element => Empty,
!       Hash       => Entity_Hash,
        Equal      => "=");
  
     -----------------------
--- 92,118 ----
     --  operations are mapped into the overriding operations of that current
     --  type extension.
  
!    --  The contents of the map are as follows:
  
!    --    Key                                Value
  
!    --    Discriminant (Entity_Id)           Discriminant (Entity_Id)
!    --    Discriminant (Entity_Id)           Non-discriminant name (Entity_Id)
!    --    Discriminant (Entity_Id)           Expression (Node_Id)
!    --    Primitive subprogram (Entity_Id)   Primitive subprogram (Entity_Id)
!    --    Type (Entity_Id)                   Type (Entity_Id)
! 
!    Type_Map_Size : constant := 511;
! 
!    subtype Type_Map_Header is Integer range 0 .. Type_Map_Size - 1;
!    function Type_Map_Hash (Id : Entity_Id) return Type_Map_Header;
! 
!    package Type_Map is new GNAT.HTable.Simple_HTable
!      (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
*** 155,164 ****
     --  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 Find_DIC_Type (Typ : Entity_Id) return Entity_Id;
!    --  Subsidiary to all Build_DIC_Procedure_xxx routines. Find the type which
!    --  defines the Default_Initial_Condition pragma of type Typ. This is either
!    --  Typ itself or a parent type when the pragma is inherited.
  
     function Make_CW_Equivalent_Type
       (T : Entity_Id;
--- 165,173 ----
     --  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 Make_CW_Equivalent_Type
       (T : Entity_Id;
*************** package body Exp_Util is
*** 471,482 ****
       (N           : Node_Id;
        Is_Allocate : Boolean)
     is
-       Desig_Typ    : Entity_Id;
-       Expr         : Node_Id;
-       Pool_Id      : Entity_Id;
-       Proc_To_Call : Node_Id := Empty;
-       Ptr_Typ      : Entity_Id;
- 
        function Find_Object (E : Node_Id) return Node_Id;
        --  Given an arbitrary expression of an allocator, try to find an object
        --  reference in it, otherwise return the original expression.
--- 480,485 ----
*************** package body Exp_Util is
*** 566,571 ****
--- 569,583 ----
           return False;
        end Is_Allocate_Deallocate_Proc;
  
+       --  Local variables
+ 
+       Desig_Typ    : Entity_Id;
+       Expr         : Node_Id;
+       Needs_Fin    : Boolean;
+       Pool_Id      : Entity_Id;
+       Proc_To_Call : Node_Id := Empty;
+       Ptr_Typ      : Entity_Id;
+ 
     --  Start of processing for Build_Allocate_Deallocate_Proc
  
     begin
*************** package body Exp_Util is
*** 637,643 ****
        --  Do not process allocations on / deallocations from the secondary
        --  stack.
  
!       elsif Is_RTE (Pool_Id, RE_SS_Pool) then
           return;
  
        --  Optimize the case where we are using the default Global_Pool_Object,
--- 649,658 ----
        --  Do not process allocations on / deallocations from the secondary
        --  stack.
  
!       elsif Is_RTE (Pool_Id, RE_SS_Pool)
!         or else (Nkind (Expr) = N_Allocator
!                   and then Is_RTE (Storage_Pool (Expr), RE_SS_Pool))
!       then
           return;
  
        --  Optimize the case where we are using the default Global_Pool_Object,
*************** package body Exp_Util is
*** 657,663 ****
           return;
        end if;
  
!       if Needs_Finalization (Desig_Typ) then
  
           --  Certain run-time configurations and targets do not provide support
           --  for controlled types.
--- 672,686 ----
           return;
        end if;
  
!       --  Finalization actions are required when the object to be allocated or
!       --  deallocated needs these actions and the associated access type is not
!       --  subject to pragma No_Heap_Finalization.
! 
!       Needs_Fin :=
!         Needs_Finalization (Desig_Typ)
!           and then not No_Heap_Finalization (Ptr_Typ);
! 
!       if Needs_Fin then
  
           --  Certain run-time configurations and targets do not provide support
           --  for controlled types.
*************** package body Exp_Util is
*** 727,733 ****
  
              --  c) Finalization master
  
!             if Needs_Finalization (Desig_Typ) then
                 Fin_Mas_Id  := Finalization_Master (Ptr_Typ);
                 Fin_Mas_Act := New_Occurrence_Of (Fin_Mas_Id, Loc);
  
--- 750,756 ----
  
              --  c) Finalization master
  
!             if Needs_Fin then
                 Fin_Mas_Id  := Finalization_Master (Ptr_Typ);
                 Fin_Mas_Act := New_Occurrence_Of (Fin_Mas_Id, Loc);
  
*************** package body Exp_Util is
*** 751,757 ****
              --  Primitive Finalize_Address is never generated in CodePeer mode
              --  since it contains an Unchecked_Conversion.
  
!             if Needs_Finalization (Desig_Typ) and then not CodePeer_Mode then
                 Fin_Addr_Id := Finalize_Address (Desig_Typ);
                 pragma Assert (Present (Fin_Addr_Id));
  
--- 774,780 ----
              --  Primitive Finalize_Address is never generated in CodePeer mode
              --  since it contains an Unchecked_Conversion.
  
!             if Needs_Fin and then not CodePeer_Mode then
                 Fin_Addr_Id := Finalize_Address (Desig_Typ);
                 pragma Assert (Present (Fin_Addr_Id));
  
*************** package body Exp_Util is
*** 797,807 ****
  
           --  h) Is_Controlled
  
!          if Needs_Finalization (Desig_Typ) then
!             declare
                 Flag_Id   : constant Entity_Id := Make_Temporary (Loc, 'F');
                 Flag_Expr : Node_Id;
                 Param     : Node_Id;
                 Temp      : Node_Id;
  
              begin
--- 820,831 ----
  
           --  h) Is_Controlled
  
!          if Needs_Fin then
!             Is_Controlled : declare
                 Flag_Id   : constant Entity_Id := Make_Temporary (Loc, 'F');
                 Flag_Expr : Node_Id;
                 Param     : Node_Id;
+                Pref      : Node_Id;
                 Temp      : Node_Id;
  
              begin
*************** package body Exp_Util is
*** 850,859 ****
  
                    --    Temp'Tag
  
                    else
                       Param :=
                         Make_Attribute_Reference (Loc,
!                          Prefix         => Relocate_Node (Temp),
                           Attribute_Name => Name_Tag);
                    end if;
  
--- 874,895 ----
  
                    --    Temp'Tag
  
+                   --  If the object is an unchecked conversion (typically to
+                   --  an access to class-wide type), we must preserve the
+                   --  conversion to ensure that the object is seen as tagged
+                   --  in the code that follows.
+ 
                    else
+                      Pref := Temp;
+ 
+                      if Nkind (Parent (Pref)) = N_Unchecked_Type_Conversion
+                      then
+                         Pref := Parent (Pref);
+                      end if;
+ 
                       Param :=
                         Make_Attribute_Reference (Loc,
!                          Prefix         => Relocate_Node (Pref),
                           Attribute_Name => Name_Tag);
                    end if;
  
*************** package body Exp_Util is
*** 894,900 ****
                      Expression          => Flag_Expr));
  
                 Append_To (Actuals, New_Occurrence_Of (Flag_Id, Loc));
!             end;
  
           --  The object is not controlled
  
--- 930,936 ----
                      Expression          => Flag_Expr));
  
                 Append_To (Actuals, New_Occurrence_Of (Flag_Id, Loc));
!             end Is_Controlled;
  
           --  The object is not controlled
  
*************** package body Exp_Util is
*** 925,943 ****
  
           Insert_Action (N,
             Make_Subprogram_Body (Loc,
!              Specification =>
  
                 --  procedure Pnn
  
                 Make_Procedure_Specification (Loc,
!                  Defining_Unit_Name => Proc_Id,
                   Parameter_Specifications => New_List (
  
                    --  P : Root_Storage_Pool
  
                     Make_Parameter_Specification (Loc,
                       Defining_Identifier => Make_Temporary (Loc, 'P'),
!                      Parameter_Type =>
                         New_Occurrence_Of (RTE (RE_Root_Storage_Pool), Loc)),
  
                    --  A : [out] Address
--- 961,979 ----
  
           Insert_Action (N,
             Make_Subprogram_Body (Loc,
!              Specification              =>
  
                 --  procedure Pnn
  
                 Make_Procedure_Specification (Loc,
!                  Defining_Unit_Name       => Proc_Id,
                   Parameter_Specifications => New_List (
  
                    --  P : Root_Storage_Pool
  
                     Make_Parameter_Specification (Loc,
                       Defining_Identifier => Make_Temporary (Loc, 'P'),
!                      Parameter_Type      =>
                         New_Occurrence_Of (RTE (RE_Root_Storage_Pool), Loc)),
  
                    --  A : [out] Address
*************** package body Exp_Util is
*** 962,975 ****
                       Parameter_Type      =>
                         New_Occurrence_Of (RTE (RE_Storage_Count), Loc)))),
  
!              Declarations => No_List,
  
               Handled_Statement_Sequence =>
                 Make_Handled_Sequence_Of_Statements (Loc,
                   Statements => New_List (
                     Make_Procedure_Call_Statement (Loc,
!                      Name => New_Occurrence_Of (Proc_To_Call, Loc),
!                      Parameter_Associations => Actuals)))));
  
           --  The newly generated Allocate / Deallocate becomes the default
           --  procedure to call when the back end processes the allocation /
--- 998,1013 ----
                       Parameter_Type      =>
                         New_Occurrence_Of (RTE (RE_Storage_Count), Loc)))),
  
!              Declarations               => No_List,
  
               Handled_Statement_Sequence =>
                 Make_Handled_Sequence_Of_Statements (Loc,
                   Statements => New_List (
                     Make_Procedure_Call_Statement (Loc,
!                      Name                   =>
!                        New_Occurrence_Of (Proc_To_Call, Loc),
!                      Parameter_Associations => Actuals)))),
!            Suppress => All_Checks);
  
           --  The newly generated Allocate / Deallocate becomes the default
           --  procedure to call when the back end processes the allocation /
*************** package body Exp_Util is
*** 1041,1050 ****
     ---------------------------------
  
     procedure Build_Class_Wide_Expression
!      (Prag        : Node_Id;
!       Subp        : Entity_Id;
!       Par_Subp    : Entity_Id;
!       Adjust_Sloc : Boolean)
     is
        function Replace_Entity (N : Node_Id) return Traverse_Result;
        --  Replace reference to formal of inherited operation or to primitive
--- 1079,1089 ----
     ---------------------------------
  
     procedure Build_Class_Wide_Expression
!      (Prag          : Node_Id;
!       Subp          : Entity_Id;
!       Par_Subp      : Entity_Id;
!       Adjust_Sloc   : Boolean;
!       Needs_Wrapper : out Boolean)
     is
        function Replace_Entity (N : Node_Id) return Traverse_Result;
        --  Replace reference to formal of inherited operation or to primitive
*************** package body Exp_Util is
*** 1085,1094 ****
  
              --  Determine whether entity has a renaming
  
!             New_E := Primitives_Mapping.Get (Entity (N));
  
              if Present (New_E) then
                 Rewrite (N, New_Occurrence_Of (New_E, Sloc (N)));
              end if;
  
              --  Check that there are no calls left to abstract operations if
--- 1124,1165 ----
  
              --  Determine whether entity has a renaming
  
!             New_E := Type_Map.Get (Entity (N));
  
              if Present (New_E) then
                 Rewrite (N, New_Occurrence_Of (New_E, Sloc (N)));
+ 
+                --  AI12-0166: a precondition for a protected operation
+                --  cannot include an internal call to a protected function
+                --  of the type. In the case of an inherited condition for an
+                --  overriding operation, both the operation and the function
+                --  are given by primitive wrappers.
+ 
+                if Ekind (New_E) = E_Function
+                  and then Is_Primitive_Wrapper (New_E)
+                  and then Is_Primitive_Wrapper (Subp)
+                  and then Scope (Subp) = Scope (New_E)
+                then
+                   Error_Msg_Node_2 := Wrapped_Entity (Subp);
+                   Error_Msg_NE
+                     ("internal call to& cannot appear in inherited "
+                      & "precondition of protected operation&",
+                      N, Wrapped_Entity (New_E));
+                end if;
+ 
+                --  If the entity is an overridden primitive and we are not
+                --  in GNATprove mode, we must build a wrapper for the current
+                --  inherited operation. If the reference is the prefix of an
+                --  attribute such as 'Result (or others ???) there is no need
+                --  for a wrapper: the condition is just rewritten in terms of
+                --  the inherited subprogram.
+ 
+                if Is_Subprogram (New_E)
+                   and then Nkind (Parent (N)) /= N_Attribute_Reference
+                   and then not GNATprove_Mode
+                then
+                   Needs_Wrapper := True;
+                end if;
              end if;
  
              --  Check that there are no calls left to abstract operations if
*************** package body Exp_Util is
*** 1100,1109 ****
                 if not Is_Abstract_Subprogram (Subp)
                   and then Is_Abstract_Subprogram (Entity (N))
                 then
!                   Error_Msg_Sloc := Sloc (Current_Scope);
!                   Error_Msg_NE
!                     ("cannot call abstract subprogram in inherited condition "
!                       & "for&#", N, Current_Scope);
  
                 --  In SPARK mode, reject an inherited condition for an
                 --  inherited operation if it contains a call to an overriding
--- 1171,1187 ----
                 if not Is_Abstract_Subprogram (Subp)
                   and then Is_Abstract_Subprogram (Entity (N))
                 then
!                   Error_Msg_Sloc   := Sloc (Current_Scope);
!                   Error_Msg_Node_2 := Subp;
!                   if Comes_From_Source (Subp) then
!                      Error_Msg_NE
!                        ("cannot call abstract subprogram & in inherited "
!                         & "condition for&#", Subp, Entity (N));
!                   else
!                      Error_Msg_NE
!                        ("cannot call abstract subprogram & in inherited "
!                         & "condition for inherited&#", Subp, Entity (N));
!                   end if;
  
                 --  In SPARK mode, reject an inherited condition for an
                 --  inherited operation if it contains a call to an overriding
*************** package body Exp_Util is
*** 1156,1168 ****
     --  Start of processing for Build_Class_Wide_Expression
  
     begin
        --  Add mapping from old formals to new formals
  
        Par_Formal  := First_Formal (Par_Subp);
        Subp_Formal := First_Formal (Subp);
  
        while Present (Par_Formal) and then Present (Subp_Formal) loop
!          Primitives_Mapping.Set (Par_Formal, Subp_Formal);
           Next_Formal (Par_Formal);
           Next_Formal (Subp_Formal);
        end loop;
--- 1234,1248 ----
     --  Start of processing for Build_Class_Wide_Expression
  
     begin
+       Needs_Wrapper := False;
+ 
        --  Add mapping from old formals to new formals
  
        Par_Formal  := First_Formal (Par_Subp);
        Subp_Formal := First_Formal (Subp);
  
        while Present (Par_Formal) and then Present (Subp_Formal) loop
!          Type_Map.Set (Par_Formal, Subp_Formal);
           Next_Formal (Par_Formal);
           Next_Formal (Subp_Formal);
        end loop;
*************** package body Exp_Util is
*** 1200,1206 ****
     --  replaced by gotos which jump to the end of the routine and restore the
     --  Ghost mode.
  
!    procedure Build_DIC_Procedure_Body (Typ : Entity_Id) is
        procedure Add_DIC_Check
          (DIC_Prag : Node_Id;
           DIC_Expr : Node_Id;
--- 1280,1289 ----
     --  replaced by gotos which jump to the end of the routine and restore the
     --  Ghost mode.
  
!    procedure Build_DIC_Procedure_Body
!      (Typ        : Entity_Id;
!       For_Freeze : Boolean := False)
!    is
        procedure Add_DIC_Check
          (DIC_Prag : Node_Id;
           DIC_Expr : Node_Id;
*************** package body Exp_Util is
*** 1239,1272 ****
        --  DIC_Prag. DIC_Typ is the owner of the DIC pragma. All generated code
        --  is added to list Stmts.
  
-       procedure Replace_Object_And_Primitive_References
-         (Expr      : Node_Id;
-          Par_Typ   : Entity_Id;
-          Deriv_Typ : Entity_Id;
-          Par_Obj   : Entity_Id := Empty;
-          Deriv_Obj : Entity_Id := Empty);
-       --  Expr denotes an arbitrary expression. Par_Typ is a parent type in a
-       --  type hierarchy. Deriv_Typ is a type derived from Par_Typ. Par_Obj is
-       --  the formal parameter which emulates the current instance of Par_Typ.
-       --  Deriv_Obj is the formal parameter which emulates the current instance
-       --  of Deriv_Typ. Perform the following substitutions:
-       --
-       --    * Replace a reference to Par_Obj with a reference to Deriv_Obj if
-       --      applicable.
-       --
-       --    * Replace a call to an overridden parent primitive with a call to
-       --      the overriding derived type primitive.
-       --
-       --    * Replace a call to an inherited parent primitive with a call to
-       --      the internally-generated inherited derived type primitive.
- 
-       procedure Replace_Type_References
-         (Expr   : Node_Id;
-          Typ    : Entity_Id;
-          Obj_Id : Entity_Id);
-       --  Substitute all references of the current instance of type Typ with
-       --  references to formal parameter Obj_Id within expression Expr.
- 
        -------------------
        -- Add_DIC_Check --
        -------------------
--- 1322,1327 ----
*************** package body Exp_Util is
*** 1285,1291 ****
           if Is_Ignored (DIC_Prag) then
              null;
  
!          --  Otherwise the DIC expression must be checked at runtime. Generate:
  
           --    pragma Check (<Nam>, <DIC_Expr>);
  
--- 1340,1347 ----
           if Is_Ignored (DIC_Prag) then
              null;
  
!          --  Otherwise the DIC expression must be checked at run time.
!          --  Generate:
  
           --    pragma Check (<Nam>, <DIC_Expr>);
  
*************** package body Exp_Util is
*** 1348,1354 ****
           Deriv_Typ : Entity_Id;
           Stmts     : in out List_Id)
        is
-          Deriv_Decl : constant Node_Id   := Declaration_Node (Deriv_Typ);
           Deriv_Proc : constant Entity_Id := DIC_Procedure (Deriv_Typ);
           DIC_Args   : constant List_Id   :=
                          Pragma_Argument_Associations (DIC_Prag);
--- 1404,1409 ----
*************** package body Exp_Util is
*** 1373,1378 ****
--- 1428,1436 ----
           --      type's DIC procedure with a reference to the _object parameter
           --      of the derived types' DIC procedure.
  
+          --    * Replace a reference to a discriminant of the parent type with
+          --      a suitable value from the point of view of the derived type.
+ 
           --    * Replace a call to an overridden parent primitive with a call
           --      to the overriding derived type primitive.
  
*************** package body Exp_Util is
*** 1385,1403 ****
  
           pragma Assert (Present (Deriv_Proc) and then Present (Par_Proc));
  
!          Replace_Object_And_Primitive_References
             (Expr      => Expr,
              Par_Typ   => Par_Typ,
              Deriv_Typ => Deriv_Typ,
              Par_Obj   => First_Formal (Par_Proc),
              Deriv_Obj => First_Formal (Deriv_Proc));
  
-          --  Preanalyze the DIC expression to detect errors and at the same
-          --  time capture the visibility of the proper package part.
- 
-          Set_Parent (Expr, Deriv_Decl);
-          Preanalyze_Assert_Expression (Expr, Any_Boolean);
- 
           --  Once the DIC assertion expression is fully processed, add a check
           --  to the statements of the DIC procedure.
  
--- 1443,1455 ----
  
           pragma Assert (Present (Deriv_Proc) and then Present (Par_Proc));
  
!          Replace_References
             (Expr      => Expr,
              Par_Typ   => Par_Typ,
              Deriv_Typ => Deriv_Typ,
              Par_Obj   => First_Formal (Par_Proc),
              Deriv_Obj => First_Formal (Deriv_Proc));
  
           --  Once the DIC assertion expression is fully processed, add a check
           --  to the statements of the DIC procedure.
  
*************** package body Exp_Util is
*** 1470,1475 ****
--- 1522,1528 ----
        --  Start of processing for Add_Own_DIC
  
        begin
+          pragma Assert (Present (DIC_Expr));
           Expr := New_Copy_Tree (DIC_Expr);
  
           --  Perform the following substitution:
*************** package body Exp_Util is
*** 1521,1735 ****
              Stmts    => Stmts);
        end Add_Own_DIC;
  
-       ---------------------------------------------
-       -- Replace_Object_And_Primitive_References --
-       ---------------------------------------------
- 
-       procedure Replace_Object_And_Primitive_References
-         (Expr      : Node_Id;
-          Par_Typ   : Entity_Id;
-          Deriv_Typ : Entity_Id;
-          Par_Obj   : Entity_Id := Empty;
-          Deriv_Obj : Entity_Id := Empty)
-       is
-          function Replace_Ref (Ref : Node_Id) return Traverse_Result;
-          --  Substitute a reference to an entity with a reference to the
-          --  corresponding entity stored in in table Primitives_Mapping.
- 
-          -----------------
-          -- Replace_Ref --
-          -----------------
- 
-          function Replace_Ref (Ref : Node_Id) return Traverse_Result is
-             Context : constant Node_Id    := Parent (Ref);
-             Loc     : constant Source_Ptr := Sloc (Ref);
-             New_Id  : Entity_Id;
-             New_Ref : Node_Id;
-             Ref_Id  : Entity_Id;
-             Result  : Traverse_Result;
- 
-          begin
-             Result := OK;
- 
-             --  The current node denotes a reference
- 
-             if Nkind (Ref) in N_Has_Entity and then Present (Entity (Ref)) then
-                Ref_Id := Entity (Ref);
-                New_Id := Primitives_Mapping.Get (Ref_Id);
- 
-                --  The reference mentions a parent type primitive which has a
-                --  corresponding derived type primitive.
- 
-                if Present (New_Id) then
-                   New_Ref := New_Occurrence_Of (New_Id, Loc);
- 
-                --  The reference mentions the _object parameter of the parent
-                --  type's DIC procedure.
- 
-                elsif Present (Par_Obj)
-                  and then Present (Deriv_Obj)
-                  and then Ref_Id = Par_Obj
-                then
-                   New_Ref := New_Occurrence_Of (Deriv_Obj, Loc);
- 
-                   --  The reference to _object acts as an actual parameter in a
-                   --  subprogram call which may be invoking a primitive of the
-                   --  parent type:
- 
-                   --    Primitive (... _object ...);
- 
-                   --  The parent type primitive may not be overridden nor
-                   --  inherited when it is declared after the derived type
-                   --  definition:
- 
-                   --    type Parent is tagged private;
-                   --    type Child is new Parent with private;
-                   --    procedure Primitive (Obj : Parent);
- 
-                   --  In this scenario the _object parameter is converted to
-                   --  the parent type.
- 
-                   if Nkind_In (Context, N_Function_Call,
-                                         N_Procedure_Call_Statement)
-                     and then
-                       No (Primitives_Mapping.Get (Entity (Name (Context))))
-                   then
-                      New_Ref := Convert_To (Par_Typ, New_Ref);
- 
-                      --  Do not process the generated type conversion because
-                      --  both the parent type and the derived type are in the
-                      --  Primitives_Mapping table. This will clobber the type
-                      --  conversion by resetting its subtype mark.
- 
-                      Result := Skip;
-                   end if;
- 
-                --  Otherwise there is nothing to replace
- 
-                else
-                   New_Ref := Empty;
-                end if;
- 
-                if Present (New_Ref) then
-                   Rewrite (Ref, New_Ref);
- 
-                   --  Update the return type when the context of the reference
-                   --  acts as the name of a function call. Note that the update
-                   --  should not be performed when the reference appears as an
-                   --  actual in the call.
- 
-                   if Nkind (Context) = N_Function_Call
-                     and then Name (Context) = Ref
-                   then
-                      Set_Etype (Context, Etype (New_Id));
-                   end if;
-                end if;
-             end if;
- 
-             --  Reanalyze the reference due to potential replacements
- 
-             if Nkind (Ref) in N_Has_Etype then
-                Set_Analyzed (Ref, False);
-             end if;
- 
-             return Result;
-          end Replace_Ref;
- 
-          procedure Replace_Refs is new Traverse_Proc (Replace_Ref);
- 
-       --  Start of processing for Replace_Object_And_Primitive_References
- 
-       begin
-          --  Map each primitive operation of the parent type to the proper
-          --  primitive of the derived type.
- 
-          Update_Primitives_Mapping_Of_Types
-            (Par_Typ   => Par_Typ,
-             Deriv_Typ => Deriv_Typ);
- 
-          --  Inspect the input expression and perform substitutions where
-          --  necessary.
- 
-          Replace_Refs (Expr);
-       end Replace_Object_And_Primitive_References;
- 
-       -----------------------------
-       -- Replace_Type_References --
-       -----------------------------
- 
-       procedure Replace_Type_References
-         (Expr   : Node_Id;
-          Typ    : Entity_Id;
-          Obj_Id : Entity_Id)
-       is
-          procedure Replace_Type_Ref (N : Node_Id);
-          --  Substitute a single reference of the current instance of type Typ
-          --  with a reference to Obj_Id.
- 
-          ----------------------
-          -- Replace_Type_Ref --
-          ----------------------
- 
-          procedure Replace_Type_Ref (N : Node_Id) is
-             Ref : Node_Id;
- 
-          begin
-             --  Decorate the reference to Typ even though it may be rewritten
-             --  further down. This is done for two reasons:
- 
-             --    1) ASIS has all necessary semantic information in the
-             --    original tree.
- 
-             --    2) Routines which examine properties of the Original_Node
-             --    have some semantic information.
- 
-             if Nkind (N) = N_Identifier then
-                Set_Entity (N, Typ);
-                Set_Etype  (N, Typ);
- 
-             elsif Nkind (N) = N_Selected_Component then
-                Analyze (Prefix (N));
-                Set_Entity (Selector_Name (N), Typ);
-                Set_Etype  (Selector_Name (N), Typ);
-             end if;
- 
-             --  Perform the following substitution:
- 
-             --    Typ  -->  _object
- 
-             Ref := Make_Identifier (Sloc (N), Chars (Obj_Id));
-             Set_Entity (Ref, Obj_Id);
-             Set_Etype  (Ref, Typ);
- 
-             Rewrite (N, Ref);
- 
-             Set_Comes_From_Source (N, True);
-          end Replace_Type_Ref;
- 
-          procedure Replace_Type_Refs is
-            new Replace_Type_References_Generic (Replace_Type_Ref);
- 
-       --  Start of processing for Replace_Type_References
- 
-       begin
-          Replace_Type_Refs (Expr, Typ);
-       end Replace_Type_References;
- 
        --  Local variables
  
        Loc : constant Source_Ptr := Sloc (Typ);
  
        DIC_Prag     : Node_Id;
        DIC_Typ      : Entity_Id;
        Dummy_1      : Entity_Id;
        Dummy_2      : Entity_Id;
-       Mode         : Ghost_Mode_Type;
        Proc_Body    : Node_Id;
        Proc_Body_Id : Entity_Id;
        Proc_Decl    : Node_Id;
        Proc_Id      : Entity_Id;
        Stmts        : List_Id := No_List;
  
        Work_Typ : Entity_Id;
        --  The working type
  
--- 1574,1599 ----
              Stmts    => Stmts);
        end Add_Own_DIC;
  
        --  Local variables
  
        Loc : constant Source_Ptr := Sloc (Typ);
  
+       Saved_GM : constant Ghost_Mode_Type := Ghost_Mode;
+       --  Save the Ghost mode to restore on exit
+ 
        DIC_Prag     : Node_Id;
        DIC_Typ      : Entity_Id;
        Dummy_1      : Entity_Id;
        Dummy_2      : Entity_Id;
        Proc_Body    : Node_Id;
        Proc_Body_Id : Entity_Id;
        Proc_Decl    : Node_Id;
        Proc_Id      : Entity_Id;
        Stmts        : List_Id := No_List;
  
+       Build_Body : Boolean := False;
+       --  Flag set when the type requires a DIC procedure body to be built
+ 
        Work_Typ : Entity_Id;
        --  The working type
  
*************** package body Exp_Util is
*** 1769,1775 ****
        --  The working type may be subject to pragma Ghost. Set the mode now to
        --  ensure that the DIC procedure is properly marked as Ghost.
  
!       Set_Ghost_Mode (Work_Typ, Mode);
  
        --  The working type must be either define a DIC pragma of its own or
        --  inherit one from a parent type.
--- 1633,1639 ----
        --  The working type may be subject to pragma Ghost. Set the mode now to
        --  ensure that the DIC procedure is properly marked as Ghost.
  
!       Set_Ghost_Mode (Work_Typ);
  
        --  The working type must be either define a DIC pragma of its own or
        --  inherit one from a parent type.
*************** package body Exp_Util is
*** 1844,1852 ****
              DIC_Typ  => DIC_Typ,
              Stmts    => Stmts);
  
!       --  Otherwise the working type inherits a DIC pragma from a parent type
  
!       else
           pragma Assert (Has_Inherited_DIC (Work_Typ));
           pragma Assert (DIC_Typ /= Work_Typ);
  
--- 1708,1725 ----
              DIC_Typ  => DIC_Typ,
              Stmts    => Stmts);
  
!          Build_Body := True;
  
!       --  Otherwise the working type inherits a DIC pragma from a parent type.
!       --  This processing is carried out when the type is frozen because the
!       --  state of all parent discriminants is known at that point. Note that
!       --  it is semantically sound to delay the creation of the DIC procedure
!       --  body till the freeze point. If the type has a DIC pragma of its own,
!       --  then the DIC procedure body would have already been constructed at
!       --  the end of the visible declarations and all parent DIC pragmas are
!       --  effectively "hidden" and irrelevant.
! 
!       elsif For_Freeze then
           pragma Assert (Has_Inherited_DIC (Work_Typ));
           pragma Assert (DIC_Typ /= Work_Typ);
  
*************** package body Exp_Util is
*** 1872,1941 ****
                 Deriv_Typ => Work_Typ,
                 Stmts     => Stmts);
           end if;
        end if;
  
        End_Scope;
  
!       --  Produce an empty completing body in the following cases:
!       --    * Assertions are disabled
!       --    * The DIC Assertion_Policy is Ignore
!       --    * Pragma DIC appears without an argument
!       --    * Pragma DIC appears with argument "null"
  
!       if No (Stmts) then
!          Stmts := New_List (Make_Null_Statement (Loc));
!       end if;
  
!       --  Generate:
!       --    procedure <Work_Typ>DIC (_object : <Work_Typ>) is
!       --    begin
!       --       <Stmts>
!       --    end <Work_Typ>DIC;
  
!       Proc_Body :=
!         Make_Subprogram_Body (Loc,
!           Specification                =>
!             Copy_Subprogram_Spec (Parent (Proc_Id)),
!           Declarations                 => Empty_List,
!             Handled_Statement_Sequence =>
!               Make_Handled_Sequence_Of_Statements (Loc,
!                 Statements => Stmts));
!       Proc_Body_Id := Defining_Entity (Proc_Body);
  
!       --  Perform minor decoration in case the body is not analyzed
  
!       Set_Ekind (Proc_Body_Id, E_Subprogram_Body);
!       Set_Etype (Proc_Body_Id, Standard_Void_Type);
!       Set_Scope (Proc_Body_Id, Current_Scope);
  
!       --  Link both spec and body to avoid generating duplicates
  
!       Set_Corresponding_Body (Proc_Decl, Proc_Body_Id);
!       Set_Corresponding_Spec (Proc_Body, Proc_Id);
  
!       --  The body should not be inserted into the tree when the context is
!       --  ASIS or a generic unit because it is not part of the template. Note
!       --  that the body must still be generated in order to resolve the DIC
!       --  assertion expression.
  
!       if ASIS_Mode or Inside_A_Generic then
!          null;
  
!       --  Semi-insert the body into the tree for GNATprove by setting its
!       --  Parent field. This allows for proper upstream tree traversals.
  
!       elsif GNATprove_Mode then
!          Set_Parent (Proc_Body, Parent (Declaration_Node (Work_Typ)));
  
!       --  Otherwise the body is part of the freezing actions of the working
!       --  type.
  
!       else
!          Append_Freeze_Action (Work_Typ, Proc_Body);
        end if;
  
     <<Leave>>
!       Restore_Ghost_Mode (Mode);
     end Build_DIC_Procedure_Body;
  
     -------------------------------------
--- 1745,1820 ----
                 Deriv_Typ => Work_Typ,
                 Stmts     => Stmts);
           end if;
+ 
+          Build_Body := True;
        end if;
  
        End_Scope;
  
!       if Build_Body then
  
!          --  Produce an empty completing body in the following cases:
!          --    * Assertions are disabled
!          --    * The DIC Assertion_Policy is Ignore
  
!          if No (Stmts) then
!             Stmts := New_List (Make_Null_Statement (Loc));
!          end if;
  
!          --  Generate:
!          --    procedure <Work_Typ>DIC (_object : <Work_Typ>) is
!          --    begin
!          --       <Stmts>
!          --    end <Work_Typ>DIC;
  
!          Proc_Body :=
!            Make_Subprogram_Body (Loc,
!              Specification                =>
!                Copy_Subprogram_Spec (Parent (Proc_Id)),
!              Declarations                 => Empty_List,
!                Handled_Statement_Sequence =>
!                  Make_Handled_Sequence_Of_Statements (Loc,
!                    Statements => Stmts));
!          Proc_Body_Id := Defining_Entity (Proc_Body);
  
!          --  Perform minor decoration in case the body is not analyzed
  
!          Set_Ekind        (Proc_Body_Id, E_Subprogram_Body);
!          Set_Etype        (Proc_Body_Id, Standard_Void_Type);
!          Set_Scope        (Proc_Body_Id, Current_Scope);
!          Set_SPARK_Pragma (Proc_Body_Id, SPARK_Pragma (Proc_Id));
!          Set_SPARK_Pragma_Inherited
!                           (Proc_Body_Id, SPARK_Pragma_Inherited (Proc_Id));
  
!          --  Link both spec and body to avoid generating duplicates
  
!          Set_Corresponding_Body (Proc_Decl, Proc_Body_Id);
!          Set_Corresponding_Spec (Proc_Body, Proc_Id);
  
!          --  The body should not be inserted into the tree when the context
!          --  is ASIS or a generic unit because it is not part of the template.
!          --  Note that the body must still be generated in order to resolve the
!          --  DIC assertion expression.
  
!          if ASIS_Mode or Inside_A_Generic then
!             null;
  
!          --  Semi-insert the body into the tree for GNATprove by setting its
!          --  Parent field. This allows for proper upstream tree traversals.
  
!          elsif GNATprove_Mode then
!             Set_Parent (Proc_Body, Parent (Declaration_Node (Work_Typ)));
  
!          --  Otherwise the body is part of the freezing actions of the working
!          --  type.
! 
!          else
!             Append_Freeze_Action (Work_Typ, Proc_Body);
!          end if;
        end if;
  
     <<Leave>>
!       Restore_Ghost_Mode (Saved_GM);
     end Build_DIC_Procedure_Body;
  
     -------------------------------------
*************** package body Exp_Util is
*** 1949,1957 ****
     procedure Build_DIC_Procedure_Declaration (Typ : Entity_Id) is
        Loc : constant Source_Ptr := Sloc (Typ);
  
        DIC_Prag  : Node_Id;
        DIC_Typ   : Entity_Id;
-       Mode      : Ghost_Mode_Type;
        Proc_Decl : Node_Id;
        Proc_Id   : Entity_Id;
        Typ_Decl  : Node_Id;
--- 1828,1838 ----
     procedure Build_DIC_Procedure_Declaration (Typ : Entity_Id) is
        Loc : constant Source_Ptr := Sloc (Typ);
  
+       Saved_GM : constant Ghost_Mode_Type := Ghost_Mode;
+       --  Save the Ghost mode to restore on exit
+ 
        DIC_Prag  : Node_Id;
        DIC_Typ   : Entity_Id;
        Proc_Decl : Node_Id;
        Proc_Id   : Entity_Id;
        Typ_Decl  : Node_Id;
*************** package body Exp_Util is
*** 2008,2014 ****
        --  The working type may be subject to pragma Ghost. Set the mode now to
        --  ensure that the DIC procedure is properly marked as Ghost.
  
!       Set_Ghost_Mode (Work_Typ, Mode);
  
        --  The type must be either subject to a DIC pragma or inherit one from a
        --  parent type.
--- 1889,1895 ----
        --  The working type may be subject to pragma Ghost. Set the mode now to
        --  ensure that the DIC procedure is properly marked as Ghost.
  
!       Set_Ghost_Mode (Work_Typ);
  
        --  The type must be either subject to a DIC pragma or inherit one from a
        --  parent type.
*************** package body Exp_Util is
*** 2043,2059 ****
  
        --  Perform minor decoration in case the declaration is not analyzed
  
!       Set_Ekind (Proc_Id, E_Procedure);
!       Set_Etype (Proc_Id, Standard_Void_Type);
!       Set_Scope (Proc_Id, Current_Scope);
  
-       Set_Is_DIC_Procedure (Proc_Id);
        Set_DIC_Procedure (Work_Typ, Proc_Id);
  
        --  The DIC procedure requires debug info when the assertion expression
        --  is subject to Source Coverage Obligations.
  
!       if Opt.Generate_SCO then
           Set_Needs_Debug_Info (Proc_Id);
        end if;
  
--- 1924,1942 ----
  
        --  Perform minor decoration in case the declaration is not analyzed
  
!       Set_Ekind                  (Proc_Id, E_Procedure);
!       Set_Etype                  (Proc_Id, Standard_Void_Type);
!       Set_Is_DIC_Procedure       (Proc_Id);
!       Set_Scope                  (Proc_Id, Current_Scope);
!       Set_SPARK_Pragma           (Proc_Id, SPARK_Mode_Pragma);
!       Set_SPARK_Pragma_Inherited (Proc_Id);
  
        Set_DIC_Procedure (Work_Typ, Proc_Id);
  
        --  The DIC procedure requires debug info when the assertion expression
        --  is subject to Source Coverage Obligations.
  
!       if Generate_SCO then
           Set_Needs_Debug_Info (Proc_Id);
        end if;
  
*************** package body Exp_Util is
*** 2132,2140 ****
        end if;
  
     <<Leave>>
!       Restore_Ghost_Mode (Mode);
     end Build_DIC_Procedure_Declaration;
  
     --------------------------
     -- Build_Procedure_Form --
     --------------------------
--- 2015,3527 ----
        end if;
  
     <<Leave>>
!       Restore_Ghost_Mode (Saved_GM);
     end Build_DIC_Procedure_Declaration;
  
+    ------------------------------------
+    -- Build_Invariant_Procedure_Body --
+    ------------------------------------
+ 
+    --  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_Invariant_Procedure_Body
+      (Typ               : Entity_Id;
+       Partial_Invariant : Boolean := False)
+    is
+       Loc : constant Source_Ptr := Sloc (Typ);
+ 
+       Pragmas_Seen : Elist_Id := No_Elist;
+       --  This list contains all invariant pragmas processed so far. The list
+       --  is used to avoid generating redundant invariant checks.
+ 
+       Produced_Check : Boolean := False;
+       --  This flag tracks whether the type has produced at least one invariant
+       --  check. The flag is used as a sanity check at the end of the routine.
+ 
+       --  NOTE: most of the routines in Build_Invariant_Procedure_Body are
+       --  intentionally unnested to avoid deep indentation of code.
+ 
+       --  NOTE: all Add_xxx_Invariants routines are reactive. In other words
+       --  they emit checks, loops (for arrays) and case statements (for record
+       --  variant parts) only when there are invariants to verify. This keeps
+       --  the body of the invariant procedure free of useless code.
+ 
+       procedure Add_Array_Component_Invariants
+         (T      : Entity_Id;
+          Obj_Id : Entity_Id;
+          Checks : in out List_Id);
+       --  Generate an invariant check for each component of array type T.
+       --  Obj_Id denotes the entity of the _object formal parameter of the
+       --  invariant procedure. All created checks are added to list Checks.
+ 
+       procedure Add_Inherited_Invariants
+         (T         : Entity_Id;
+          Priv_Typ  : Entity_Id;
+          Full_Typ  : Entity_Id;
+          Obj_Id    : Entity_Id;
+          Checks    : in out List_Id);
+       --  Generate an invariant check for each inherited class-wide invariant
+       --  coming from all parent types of type T. Priv_Typ and Full_Typ denote
+       --  the partial and full view of the parent type. Obj_Id denotes the
+       --  entity of the _object formal parameter of the invariant procedure.
+       --  All created checks are added to list Checks.
+ 
+       procedure Add_Interface_Invariants
+         (T      : Entity_Id;
+          Obj_Id : Entity_Id;
+          Checks : in out List_Id);
+       --  Generate an invariant check for each inherited class-wide invariant
+       --  coming from all interfaces implemented by type T. Obj_Id denotes the
+       --  entity of the _object formal parameter of the invariant procedure.
+       --  All created checks are added to list Checks.
+ 
+       procedure Add_Invariant_Check
+         (Prag      : Node_Id;
+          Expr      : Node_Id;
+          Checks    : in out List_Id;
+          Inherited : Boolean := False);
+       --  Subsidiary to all Add_xxx_Invariant routines. Add a runtime check to
+       --  verify assertion expression Expr of pragma Prag. All generated code
+       --  is added to list Checks. Flag Inherited should be set when the pragma
+       --  is inherited from a parent or interface type.
+ 
+       procedure Add_Own_Invariants
+         (T         : Entity_Id;
+          Obj_Id    : Entity_Id;
+          Checks    : in out List_Id;
+          Priv_Item : Node_Id := Empty);
+       --  Generate an invariant check for each invariant found for type T.
+       --  Obj_Id denotes the entity of the _object formal parameter of the
+       --  invariant procedure. All created checks are added to list Checks.
+       --  Priv_Item denotes the first rep item of the private type.
+ 
+       procedure Add_Parent_Invariants
+         (T      : Entity_Id;
+          Obj_Id : Entity_Id;
+          Checks : in out List_Id);
+       --  Generate an invariant check for each inherited class-wide invariant
+       --  coming from all parent types of type T. Obj_Id denotes the entity of
+       --  the _object formal parameter of the invariant procedure. All created
+       --  checks are added to list Checks.
+ 
+       procedure Add_Record_Component_Invariants
+         (T      : Entity_Id;
+          Obj_Id : Entity_Id;
+          Checks : in out List_Id);
+       --  Generate an invariant check for each component of record type T.
+       --  Obj_Id denotes the entity of the _object formal parameter of the
+       --  invariant procedure. All created checks are added to list Checks.
+ 
+       ------------------------------------
+       -- Add_Array_Component_Invariants --
+       ------------------------------------
+ 
+       procedure Add_Array_Component_Invariants
+         (T      : Entity_Id;
+          Obj_Id : Entity_Id;
+          Checks : in out List_Id)
+       is
+          Comp_Typ : constant Entity_Id := Component_Type (T);
+          Dims     : constant Pos       := Number_Dimensions (T);
+ 
+          procedure Process_Array_Component
+            (Indices     : List_Id;
+             Comp_Checks : in out List_Id);
+          --  Generate an invariant check for an array component identified by
+          --  the indices in list Indices. All created checks are added to list
+          --  Comp_Checks.
+ 
+          procedure Process_One_Dimension
+            (Dim        : Pos;
+             Indices    : List_Id;
+             Dim_Checks : in out List_Id);
+          --  Generate a loop over the Nth dimension Dim of an array type. List
+          --  Indices contains all array indices for the dimension. All created
+          --  checks are added to list Dim_Checks.
+ 
+          -----------------------------
+          -- Process_Array_Component --
+          -----------------------------
+ 
+          procedure Process_Array_Component
+            (Indices     : List_Id;
+             Comp_Checks : in out List_Id)
+          is
+             Proc_Id : Entity_Id;
+ 
+          begin
+             if Has_Invariants (Comp_Typ) then
+ 
+                --  In GNATprove mode, the component invariants are checked by
+                --  other means. They should not be added to the array type
+                --  invariant procedure, so that the procedure can be used to
+                --  check the array type invariants if any.
+ 
+                if GNATprove_Mode then
+                   null;
+ 
+                else
+                   Proc_Id := Invariant_Procedure (Base_Type (Comp_Typ));
+ 
+                   --  The component type should have an invariant procedure
+                   --  if it has invariants of its own or inherits class-wide
+                   --  invariants from parent or interface types.
+ 
+                   pragma Assert (Present (Proc_Id));
+ 
+                   --  Generate:
+                   --    <Comp_Typ>Invariant (_object (<Indices>));
+ 
+                   --  Note that the invariant procedure may have a null body if
+                   --  assertions are disabled or Assertion_Policy Ignore is in
+                   --  effect.
+ 
+                   if not Has_Null_Body (Proc_Id) then
+                      Append_New_To (Comp_Checks,
+                        Make_Procedure_Call_Statement (Loc,
+                          Name                   =>
+                            New_Occurrence_Of (Proc_Id, Loc),
+                          Parameter_Associations => New_List (
+                            Make_Indexed_Component (Loc,
+                              Prefix      => New_Occurrence_Of (Obj_Id, Loc),
+                              Expressions => New_Copy_List (Indices)))));
+                   end if;
+                end if;
+ 
+                Produced_Check := True;
+             end if;
+          end Process_Array_Component;
+ 
+          ---------------------------
+          -- Process_One_Dimension --
+          ---------------------------
+ 
+          procedure Process_One_Dimension
+            (Dim        : Pos;
+             Indices    : List_Id;
+             Dim_Checks : in out List_Id)
+          is
+             Comp_Checks : List_Id := No_List;
+             Index       : Entity_Id;
+ 
+          begin
+             --  Generate the invariant checks for the array component after all
+             --  dimensions have produced their respective loops.
+ 
+             if Dim > Dims then
+                Process_Array_Component
+                  (Indices     => Indices,
+                   Comp_Checks => Dim_Checks);
+ 
+             --  Otherwise create a loop for the current dimension
+ 
+             else
+                --  Create a new loop variable for each dimension
+ 
+                Index :=
+                  Make_Defining_Identifier (Loc,
+                    Chars => New_External_Name ('I', Dim));
+                Append_To (Indices, New_Occurrence_Of (Index, Loc));
+ 
+                Process_One_Dimension
+                  (Dim        => Dim + 1,
+                   Indices    => Indices,
+                   Dim_Checks => Comp_Checks);
+ 
+                --  Generate:
+                --    for I<Dim> in _object'Range (<Dim>) loop
+                --       <Comp_Checks>
+                --    end loop;
+ 
+                --  Note that the invariant procedure may have a null body if
+                --  assertions are disabled or Assertion_Policy Ignore is in
+                --  effect.
+ 
+                if Present (Comp_Checks) then
+                   Append_New_To (Dim_Checks,
+                     Make_Implicit_Loop_Statement (T,
+                       Identifier       => Empty,
+                       Iteration_Scheme =>
+                         Make_Iteration_Scheme (Loc,
+                           Loop_Parameter_Specification =>
+                             Make_Loop_Parameter_Specification (Loc,
+                               Defining_Identifier         => Index,
+                               Discrete_Subtype_Definition =>
+                                 Make_Attribute_Reference (Loc,
+                                   Prefix         =>
+                                     New_Occurrence_Of (Obj_Id, Loc),
+                                   Attribute_Name => Name_Range,
+                                   Expressions    => New_List (
+                                     Make_Integer_Literal (Loc, Dim))))),
+                       Statements       => Comp_Checks));
+                end if;
+             end if;
+          end Process_One_Dimension;
+ 
+       --  Start of processing for Add_Array_Component_Invariants
+ 
+       begin
+          Process_One_Dimension
+            (Dim        => 1,
+             Indices    => New_List,
+             Dim_Checks => Checks);
+       end Add_Array_Component_Invariants;
+ 
+       ------------------------------
+       -- Add_Inherited_Invariants --
+       ------------------------------
+ 
+       procedure Add_Inherited_Invariants
+         (T         : Entity_Id;
+          Priv_Typ  : Entity_Id;
+          Full_Typ  : Entity_Id;
+          Obj_Id    : Entity_Id;
+          Checks    : in out List_Id)
+       is
+          Deriv_Typ     : Entity_Id;
+          Expr          : Node_Id;
+          Prag          : Node_Id;
+          Prag_Expr     : Node_Id;
+          Prag_Expr_Arg : Node_Id;
+          Prag_Typ      : Node_Id;
+          Prag_Typ_Arg  : Node_Id;
+ 
+          Par_Proc : Entity_Id;
+          --  The "partial" invariant procedure of Par_Typ
+ 
+          Par_Typ : Entity_Id;
+          --  The suitable view of the parent type used in the substitution of
+          --  type attributes.
+ 
+       begin
+          if not Present (Priv_Typ) and then not Present (Full_Typ) then
+             return;
+          end if;
+ 
+          --  When the type inheriting the class-wide invariant is a concurrent
+          --  type, use the corresponding record type because it contains all
+          --  primitive operations of the concurrent type and allows for proper
+          --  substitution.
+ 
+          if Is_Concurrent_Type (T) then
+             Deriv_Typ := Corresponding_Record_Type (T);
+          else
+             Deriv_Typ := T;
+          end if;
+ 
+                pragma Assert (Present (Deriv_Typ));
+ 
+          --  Determine which rep item chain to use. Precedence is given to that
+          --  of the parent type's partial view since it usually carries all the
+          --  class-wide invariants.
+ 
+          if Present (Priv_Typ) then
+             Prag := First_Rep_Item (Priv_Typ);
+          else
+             Prag := First_Rep_Item (Full_Typ);
+          end if;
+ 
+          while Present (Prag) loop
+             if Nkind (Prag) = N_Pragma
+               and then Pragma_Name (Prag) = Name_Invariant
+             then
+                --  Nothing to do if the pragma was already processed
+ 
+                if Contains (Pragmas_Seen, Prag) then
+                   return;
+ 
+                --  Nothing to do when the caller requests the processing of all
+                --  inherited class-wide invariants, but the pragma does not
+                --  fall in this category.
+ 
+                elsif not Class_Present (Prag) then
+                   return;
+                end if;
+ 
+                --  Extract the arguments of the invariant pragma
+ 
+                Prag_Typ_Arg  := First (Pragma_Argument_Associations (Prag));
+                Prag_Expr_Arg := Next (Prag_Typ_Arg);
+                Prag_Expr     := Expression_Copy (Prag_Expr_Arg);
+                Prag_Typ      := Get_Pragma_Arg (Prag_Typ_Arg);
+ 
+                --  The pragma applies to the partial view of the parent type
+ 
+                if Present (Priv_Typ)
+                  and then Entity (Prag_Typ) = Priv_Typ
+                then
+                   Par_Typ := Priv_Typ;
+ 
+                --  The pragma applies to the full view of the parent type
+ 
+                elsif Present (Full_Typ)
+                  and then Entity (Prag_Typ) = Full_Typ
+                then
+                   Par_Typ := Full_Typ;
+ 
+                --  Otherwise the pragma does not belong to the parent type and
+                --  should not be considered.
+ 
+                else
+                   return;
+                end if;
+ 
+                --  Perform the following substitutions:
+ 
+                --    * Replace a reference to the _object parameter of the
+                --      parent type's partial invariant procedure with a
+                --      reference to the _object parameter of the derived
+                --      type's full invariant procedure.
+ 
+                --    * Replace a reference to a discriminant of the parent type
+                --      with a suitable value from the point of view of the
+                --      derived type.
+ 
+                --    * Replace a call to an overridden parent primitive with a
+                --      call to the overriding derived type primitive.
+ 
+                --    * Replace a call to an inherited parent primitive with a
+                --      call to the internally-generated inherited derived type
+                --      primitive.
+ 
+                Expr := New_Copy_Tree (Prag_Expr);
+ 
+                --  The parent type must have a "partial" invariant procedure
+                --  because class-wide invariants are captured exclusively by
+                --  it.
+ 
+                Par_Proc := Partial_Invariant_Procedure (Par_Typ);
+                pragma Assert (Present (Par_Proc));
+ 
+                Replace_References
+                  (Expr      => Expr,
+                   Par_Typ   => Par_Typ,
+                   Deriv_Typ => Deriv_Typ,
+                   Par_Obj   => First_Formal (Par_Proc),
+                   Deriv_Obj => Obj_Id);
+ 
+                Add_Invariant_Check (Prag, Expr, Checks, Inherited => True);
+             end if;
+ 
+             Next_Rep_Item (Prag);
+          end loop;
+       end Add_Inherited_Invariants;
+ 
+       ------------------------------
+       -- Add_Interface_Invariants --
+       ------------------------------
+ 
+       procedure Add_Interface_Invariants
+         (T      : Entity_Id;
+          Obj_Id : Entity_Id;
+          Checks : in out List_Id)
+       is
+          Iface_Elmt : Elmt_Id;
+          Ifaces     : Elist_Id;
+ 
+       begin
+          --  Generate an invariant check for each class-wide invariant coming
+          --  from all interfaces implemented by type T.
+ 
+          if Is_Tagged_Type (T) then
+             Collect_Interfaces (T, Ifaces);
+ 
+             --  Process the class-wide invariants of all implemented interfaces
+ 
+             Iface_Elmt := First_Elmt (Ifaces);
+             while Present (Iface_Elmt) loop
+ 
+                --  The Full_Typ parameter is intentionally left Empty because
+                --  interfaces are treated as the partial view of a private type
+                --  in order to achieve uniformity with the general case.
+ 
+                Add_Inherited_Invariants
+                  (T         => T,
+                   Priv_Typ  => Node (Iface_Elmt),
+                   Full_Typ  => Empty,
+                   Obj_Id    => Obj_Id,
+                   Checks    => Checks);
+ 
+                Next_Elmt (Iface_Elmt);
+             end loop;
+          end if;
+       end Add_Interface_Invariants;
+ 
+       -------------------------
+       -- Add_Invariant_Check --
+       -------------------------
+ 
+       procedure Add_Invariant_Check
+         (Prag      : Node_Id;
+          Expr      : Node_Id;
+          Checks    : in out List_Id;
+          Inherited : Boolean := False)
+       is
+          Args    : constant List_Id    := Pragma_Argument_Associations (Prag);
+          Nam     : constant Name_Id    := Original_Aspect_Pragma_Name (Prag);
+          Ploc    : constant Source_Ptr := Sloc (Prag);
+          Str_Arg : constant Node_Id    := Next (Next (First (Args)));
+ 
+          Assoc : List_Id;
+          Str   : String_Id;
+ 
+       begin
+          --  The invariant is ignored, nothing left to do
+ 
+          if Is_Ignored (Prag) then
+             null;
+ 
+          --  Otherwise the invariant is checked. Build a pragma Check to verify
+          --  the expression at run time.
+ 
+          else
+             Assoc := New_List (
+               Make_Pragma_Argument_Association (Ploc,
+                 Expression => Make_Identifier (Ploc, Nam)),
+               Make_Pragma_Argument_Association (Ploc,
+                 Expression => Expr));
+ 
+             --  Handle the String argument (if any)
+ 
+             if Present (Str_Arg) then
+                Str := Strval (Get_Pragma_Arg (Str_Arg));
+ 
+                --  When inheriting an invariant, modify the message from
+                --  "failed invariant" to "failed inherited invariant".
+ 
+                if Inherited then
+                   String_To_Name_Buffer (Str);
+ 
+                   if Name_Buffer (1 .. 16) = "failed invariant" then
+                      Insert_Str_In_Name_Buffer ("inherited ", 8);
+                      Str := String_From_Name_Buffer;
+                   end if;
+                end if;
+ 
+                Append_To (Assoc,
+                  Make_Pragma_Argument_Association (Ploc,
+                    Expression => Make_String_Literal (Ploc, Str)));
+             end if;
+ 
+             --  Generate:
+             --    pragma Check (<Nam>, <Expr>, <Str>);
+ 
+             Append_New_To (Checks,
+               Make_Pragma (Ploc,
+                 Chars                        => Name_Check,
+                 Pragma_Argument_Associations => Assoc));
+          end if;
+ 
+          --  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);
+          end if;
+ 
+          --  Add the pragma to the list of processed pragmas
+ 
+          Append_New_Elmt (Prag, Pragmas_Seen);
+          Produced_Check := True;
+       end Add_Invariant_Check;
+ 
+       ---------------------------
+       -- Add_Parent_Invariants --
+       ---------------------------
+ 
+       procedure Add_Parent_Invariants
+         (T      : Entity_Id;
+          Obj_Id : Entity_Id;
+          Checks : in out List_Id)
+       is
+          Dummy_1 : Entity_Id;
+          Dummy_2 : Entity_Id;
+ 
+          Curr_Typ : Entity_Id;
+          --  The entity of the current type being examined
+ 
+          Full_Typ : Entity_Id;
+          --  The full view of Par_Typ
+ 
+          Par_Typ : Entity_Id;
+          --  The entity of the parent type
+ 
+          Priv_Typ : Entity_Id;
+          --  The partial view of Par_Typ
+ 
+       begin
+          --  Do not process array types because they cannot have true parent
+          --  types. This also prevents the generation of a duplicate invariant
+          --  check when the input type is an array base type because its Etype
+          --  denotes the first subtype, both of which share the same component
+          --  type.
+ 
+          if Is_Array_Type (T) then
+             return;
+          end if;
+ 
+          --  Climb the parent type chain
+ 
+          Curr_Typ := T;
+          loop
+             --  Do not consider subtypes as they inherit the invariants
+             --  from their base types.
+ 
+             Par_Typ := Base_Type (Etype (Curr_Typ));
+ 
+             --  Stop the climb once the root of the parent chain is
+             --  reached.
+ 
+             exit when Curr_Typ = Par_Typ;
+ 
+             --  Process the class-wide invariants of the parent type
+ 
+             Get_Views (Par_Typ, Priv_Typ, Full_Typ, Dummy_1, Dummy_2);
+ 
+             --  Process the elements of an array type
+ 
+             if Is_Array_Type (Full_Typ) then
+                Add_Array_Component_Invariants (Full_Typ, Obj_Id, Checks);
+ 
+             --  Process the components of a record type
+ 
+             elsif Ekind (Full_Typ) = E_Record_Type then
+                Add_Record_Component_Invariants (Full_Typ, Obj_Id, Checks);
+             end if;
+ 
+             Add_Inherited_Invariants
+               (T         => T,
+                Priv_Typ  => Priv_Typ,
+                Full_Typ  => Full_Typ,
+                Obj_Id    => Obj_Id,
+                Checks    => Checks);
+ 
+             Curr_Typ := Par_Typ;
+          end loop;
+       end Add_Parent_Invariants;
+ 
+       ------------------------
+       -- Add_Own_Invariants --
+       ------------------------
+ 
+       procedure Add_Own_Invariants
+         (T         : Entity_Id;
+          Obj_Id    : Entity_Id;
+          Checks    : in out List_Id;
+          Priv_Item : Node_Id := Empty)
+       is
+          ASIS_Expr     : Node_Id;
+          Expr          : Node_Id;
+          Prag          : Node_Id;
+          Prag_Asp      : Node_Id;
+          Prag_Expr     : Node_Id;
+          Prag_Expr_Arg : Node_Id;
+          Prag_Typ      : Node_Id;
+          Prag_Typ_Arg  : Node_Id;
+ 
+       begin
+          if not Present (T) then
+             return;
+          end if;
+ 
+          Prag := First_Rep_Item (T);
+          while Present (Prag) loop
+             if Nkind (Prag) = N_Pragma
+               and then Pragma_Name (Prag) = Name_Invariant
+             then
+                --  Stop the traversal of the rep item chain once a specific
+                --  item is encountered.
+ 
+                if Present (Priv_Item) and then Prag = Priv_Item then
+                   exit;
+                end if;
+ 
+                --  Nothing to do if the pragma was already processed
+ 
+                if Contains (Pragmas_Seen, Prag) then
+                   return;
+                end if;
+ 
+                --  Extract the arguments of the invariant pragma
+ 
+                Prag_Typ_Arg  := First (Pragma_Argument_Associations (Prag));
+                Prag_Expr_Arg := Next (Prag_Typ_Arg);
+                Prag_Expr     := Get_Pragma_Arg (Prag_Expr_Arg);
+                Prag_Typ      := Get_Pragma_Arg (Prag_Typ_Arg);
+                Prag_Asp      := Corresponding_Aspect (Prag);
+ 
+                --  Verify the pragma belongs to T, otherwise the pragma applies
+                --  to a parent type in which case it will be processed later by
+                --  Add_Parent_Invariants or Add_Interface_Invariants.
+ 
+                if Entity (Prag_Typ) /= T then
+                   return;
+                end if;
+ 
+                Expr := New_Copy_Tree (Prag_Expr);
+ 
+                --  Substitute all references to type T with references to the
+                --  _object formal parameter.
+ 
+                Replace_Type_References (Expr, T, Obj_Id);
+ 
+                --  Preanalyze the invariant expression to detect errors and at
+                --  the same time capture the visibility of the proper package
+                --  part.
+ 
+                Set_Parent (Expr, Parent (Prag_Expr));
+                Preanalyze_Assert_Expression (Expr, Any_Boolean);
+ 
+                --  Save a copy of the expression when T is tagged to detect
+                --  errors and capture the visibility of the proper package part
+                --  for the generation of inherited type invariants.
+ 
+                if Is_Tagged_Type (T) then
+                   Set_Expression_Copy (Prag_Expr_Arg, New_Copy_Tree (Expr));
+                end if;
+ 
+                --  If the pragma comes from an aspect specification, replace
+                --  the saved expression because all type references must be
+                --  substituted for the call to Preanalyze_Spec_Expression in
+                --  Check_Aspect_At_xxx routines.
+ 
+                if Present (Prag_Asp) then
+                   Set_Entity (Identifier (Prag_Asp), New_Copy_Tree (Expr));
+                end if;
+ 
+                --  Analyze the original invariant expression for ASIS
+ 
+                if ASIS_Mode then
+                   ASIS_Expr := Empty;
+ 
+                   if Comes_From_Source (Prag) then
+                      ASIS_Expr := Prag_Expr;
+                   elsif Present (Prag_Asp) then
+                      ASIS_Expr := Expression (Prag_Asp);
+                   end if;
+ 
+                   if Present (ASIS_Expr) then
+                      Replace_Type_References (ASIS_Expr, T, Obj_Id);
+                      Preanalyze_Assert_Expression (ASIS_Expr, Any_Boolean);
+                   end if;
+                end if;
+ 
+                Add_Invariant_Check (Prag, Expr, Checks);
+             end if;
+ 
+             Next_Rep_Item (Prag);
+          end loop;
+       end Add_Own_Invariants;
+ 
+       -------------------------------------
+       -- Add_Record_Component_Invariants --
+       -------------------------------------
+ 
+       procedure Add_Record_Component_Invariants
+         (T      : Entity_Id;
+          Obj_Id : Entity_Id;
+          Checks : in out List_Id)
+       is
+          procedure Process_Component_List
+            (Comp_List : Node_Id;
+             CL_Checks : in out List_Id);
+          --  Generate invariant checks for all record components found in
+          --  component list Comp_List, including variant parts. All created
+          --  checks are added to list CL_Checks.
+ 
+          procedure Process_Record_Component
+            (Comp_Id     : Entity_Id;
+             Comp_Checks : in out List_Id);
+          --  Generate an invariant check for a record component identified by
+          --  Comp_Id. All created checks are added to list Comp_Checks.
+ 
+          ----------------------------
+          -- Process_Component_List --
+          ----------------------------
+ 
+          procedure Process_Component_List
+            (Comp_List : Node_Id;
+             CL_Checks : in out List_Id)
+          is
+             Comp       : Node_Id;
+             Var        : Node_Id;
+             Var_Alts   : List_Id := No_List;
+             Var_Checks : List_Id := No_List;
+             Var_Stmts  : List_Id;
+ 
+             Produced_Variant_Check : Boolean := False;
+             --  This flag tracks whether the component has produced at least
+             --  one invariant check.
+ 
+          begin
+             --  Traverse the component items
+ 
+             Comp := First (Component_Items (Comp_List));
+             while Present (Comp) loop
+                if Nkind (Comp) = N_Component_Declaration then
+ 
+                   --  Generate the component invariant check
+ 
+                   Process_Record_Component
+                     (Comp_Id     => Defining_Entity (Comp),
+                      Comp_Checks => CL_Checks);
+                end if;
+ 
+                Next (Comp);
+             end loop;
+ 
+             --  Traverse the variant part
+ 
+             if Present (Variant_Part (Comp_List)) then
+                Var := First (Variants (Variant_Part (Comp_List)));
+                while Present (Var) loop
+                   Var_Checks := No_List;
+ 
+                   --  Generate invariant checks for all components and variant
+                   --  parts that qualify.
+ 
+                   Process_Component_List
+                     (Comp_List => Component_List (Var),
+                      CL_Checks => Var_Checks);
+ 
+                   --  The components of the current variant produced at least
+                   --  one invariant check.
+ 
+                   if Present (Var_Checks) then
+                      Var_Stmts := Var_Checks;
+                      Produced_Variant_Check := True;
+ 
+                   --  Otherwise there are either no components with invariants,
+                   --  assertions are disabled, or Assertion_Policy Ignore is in
+                   --  effect.
+ 
+                   else
+                      Var_Stmts := New_List (Make_Null_Statement (Loc));
+                   end if;
+ 
+                   Append_New_To (Var_Alts,
+                     Make_Case_Statement_Alternative (Loc,
+                       Discrete_Choices =>
+                         New_Copy_List (Discrete_Choices (Var)),
+                       Statements       => Var_Stmts));
+ 
+                   Next (Var);
+                end loop;
+ 
+                --  Create a case statement which verifies the invariant checks
+                --  of a particular component list depending on the discriminant
+                --  values only when there is at least one real invariant check.
+ 
+                if Produced_Variant_Check then
+                   Append_New_To (CL_Checks,
+                     Make_Case_Statement (Loc,
+                       Expression   =>
+                         Make_Selected_Component (Loc,
+                           Prefix        => New_Occurrence_Of (Obj_Id, Loc),
+                           Selector_Name =>
+                             New_Occurrence_Of
+                               (Entity (Name (Variant_Part (Comp_List))), Loc)),
+                       Alternatives => Var_Alts));
+                end if;
+             end if;
+          end Process_Component_List;
+ 
+          ------------------------------
+          -- Process_Record_Component --
+          ------------------------------
+ 
+          procedure Process_Record_Component
+            (Comp_Id     : Entity_Id;
+             Comp_Checks : in out List_Id)
+          is
+             Comp_Typ : constant Entity_Id := Etype (Comp_Id);
+             Proc_Id  : Entity_Id;
+ 
+             Produced_Component_Check : Boolean := False;
+             --  This flag tracks whether the component has produced at least
+             --  one invariant check.
+ 
+          begin
+             --  Nothing to do for internal component _parent. Note that it is
+             --  not desirable to check whether the component comes from source
+             --  because protected type components are relocated to an internal
+             --  corresponding record, but still need processing.
+ 
+             if Chars (Comp_Id) = Name_uParent then
+                return;
+             end if;
+ 
+             --  Verify the invariant of the component. Note that an access
+             --  type may have an invariant when it acts as the full view of a
+             --  private type and the invariant appears on the partial view. In
+             --  this case verify the access value itself.
+ 
+             if Has_Invariants (Comp_Typ) then
+ 
+                --  In GNATprove mode, the component invariants are checked by
+                --  other means. They should not be added to the record type
+                --  invariant procedure, so that the procedure can be used to
+                --  check the record type invariants if any.
+ 
+                if GNATprove_Mode then
+                   null;
+ 
+                else
+                   Proc_Id := Invariant_Procedure (Base_Type (Comp_Typ));
+ 
+                   --  The component type should have an invariant procedure
+                   --  if it has invariants of its own or inherits class-wide
+                   --  invariants from parent or interface types.
+ 
+                   pragma Assert (Present (Proc_Id));
+ 
+                   --  Generate:
+                   --    <Comp_Typ>Invariant (T (_object).<Comp_Id>);
+ 
+                   --  Note that the invariant procedure may have a null body if
+                   --  assertions are disabled or Assertion_Policy Ignore is in
+                   --  effect.
+ 
+                   if not Has_Null_Body (Proc_Id) then
+                      Append_New_To (Comp_Checks,
+                        Make_Procedure_Call_Statement (Loc,
+                          Name                   =>
+                            New_Occurrence_Of (Proc_Id, Loc),
+                          Parameter_Associations => New_List (
+                            Make_Selected_Component (Loc,
+                              Prefix        =>
+                                Unchecked_Convert_To
+                                  (T, New_Occurrence_Of (Obj_Id, Loc)),
+                              Selector_Name =>
+                                New_Occurrence_Of (Comp_Id, Loc)))));
+                   end if;
+                end if;
+ 
+                Produced_Check           := True;
+                Produced_Component_Check := True;
+             end if;
+ 
+             if Produced_Component_Check and then Has_Unchecked_Union (T) then
+                Error_Msg_NE
+                  ("invariants cannot be checked on components of "
+                   & "unchecked_union type &?", Comp_Id, T);
+             end if;
+          end Process_Record_Component;
+ 
+          --  Local variables
+ 
+          Comps : Node_Id;
+          Def   : Node_Id;
+ 
+       --  Start of processing for Add_Record_Component_Invariants
+ 
+       begin
+          --  An untagged derived type inherits the components of its parent
+          --  type. In order to avoid creating redundant invariant checks, do
+          --  not process the components now. Instead wait until the ultimate
+          --  parent of the untagged derivation chain is reached.
+ 
+          if not Is_Untagged_Derivation (T) then
+             Def := Type_Definition (Parent (T));
+ 
+             if Nkind (Def) = N_Derived_Type_Definition then
+                Def := Record_Extension_Part (Def);
+             end if;
+ 
+             pragma Assert (Nkind (Def) = N_Record_Definition);
+             Comps := Component_List (Def);
+ 
+             if Present (Comps) then
+                Process_Component_List
+                  (Comp_List => Comps,
+                   CL_Checks => Checks);
+             end if;
+          end if;
+       end Add_Record_Component_Invariants;
+ 
+       --  Local variables
+ 
+       Saved_GM : constant Ghost_Mode_Type := Ghost_Mode;
+       --  Save the Ghost mode to restore on exit
+ 
+       Dummy        : Entity_Id;
+       Priv_Item    : Node_Id;
+       Proc_Body    : Node_Id;
+       Proc_Body_Id : Entity_Id;
+       Proc_Decl    : Node_Id;
+       Proc_Id      : Entity_Id;
+       Stmts        : List_Id := No_List;
+ 
+       CRec_Typ : Entity_Id := Empty;
+       --  The corresponding record type of Full_Typ
+ 
+       Full_Proc : Entity_Id := Empty;
+       --  The entity of the "full" invariant procedure
+ 
+       Full_Typ : Entity_Id := Empty;
+       --  The full view of the working type
+ 
+       Obj_Id : Entity_Id := Empty;
+       --  The _object formal parameter of the invariant procedure
+ 
+       Part_Proc : Entity_Id := Empty;
+       --  The entity of the "partial" invariant procedure
+ 
+       Priv_Typ : Entity_Id := Empty;
+       --  The partial view of the working type
+ 
+       Work_Typ : Entity_Id := Empty;
+       --  The working type
+ 
+    --  Start of processing for Build_Invariant_Procedure_Body
+ 
+    begin
+       Work_Typ := Typ;
+ 
+       --  The input type denotes the implementation base type of a constrained
+       --  array type. Work with the first subtype as all invariant pragmas are
+       --  on its rep item chain.
+ 
+       if Ekind (Work_Typ) = E_Array_Type and then Is_Itype (Work_Typ) then
+          Work_Typ := First_Subtype (Work_Typ);
+ 
+       --  The input type denotes the corresponding record type of a protected
+       --  or task type. Work with the concurrent type because the corresponding
+       --  record type may not be visible to clients of the type.
+ 
+       elsif Ekind (Work_Typ) = E_Record_Type
+         and then Is_Concurrent_Record_Type (Work_Typ)
+       then
+          Work_Typ := Corresponding_Concurrent_Type (Work_Typ);
+       end if;
+ 
+       --  The working type may be subject to pragma Ghost. Set the mode now to
+       --  ensure that the invariant procedure is properly marked as Ghost.
+ 
+       Set_Ghost_Mode (Work_Typ);
+ 
+       --  The type must either have invariants of its own, inherit class-wide
+       --  invariants from parent types or interfaces, or be an array or record
+       --  type whose components have invariants.
+ 
+       pragma Assert (Has_Invariants (Work_Typ));
+ 
+       --  Interfaces are treated as the partial view of a private type in order
+       --  to achieve uniformity with the general case.
+ 
+       if Is_Interface (Work_Typ) then
+          Priv_Typ := Work_Typ;
+ 
+       --  Otherwise obtain both views of the type
+ 
+       else
+          Get_Views (Work_Typ, Priv_Typ, Full_Typ, Dummy, CRec_Typ);
+       end if;
+ 
+       --  The caller requests a body for the partial invariant procedure
+ 
+       if Partial_Invariant then
+          Full_Proc := Invariant_Procedure (Work_Typ);
+          Proc_Id   := Partial_Invariant_Procedure (Work_Typ);
+ 
+          --  The "full" invariant procedure body was already created
+ 
+          if Present (Full_Proc)
+            and then Present
+                       (Corresponding_Body (Unit_Declaration_Node (Full_Proc)))
+          then
+             --  This scenario happens only when the type is an untagged
+             --  derivation from a private parent and the underlying full
+             --  view was processed before the partial view.
+ 
+             pragma Assert
+               (Is_Untagged_Private_Derivation (Priv_Typ, Full_Typ));
+ 
+             --  Nothing to do because the processing of the underlying full
+             --  view already checked the invariants of the partial view.
+ 
+             goto Leave;
+          end if;
+ 
+          --  Create a declaration for the "partial" invariant procedure if it
+          --  is not available.
+ 
+          if No (Proc_Id) then
+             Build_Invariant_Procedure_Declaration
+               (Typ               => Work_Typ,
+                Partial_Invariant => True);
+ 
+             Proc_Id := Partial_Invariant_Procedure (Work_Typ);
+          end if;
+ 
+       --  The caller requests a body for the "full" invariant procedure
+ 
+       else
+          Proc_Id   := Invariant_Procedure (Work_Typ);
+          Part_Proc := Partial_Invariant_Procedure (Work_Typ);
+ 
+          --  Create a declaration for the "full" invariant procedure if it is
+          --  not available.
+ 
+          if No (Proc_Id) then
+             Build_Invariant_Procedure_Declaration (Work_Typ);
+             Proc_Id := Invariant_Procedure (Work_Typ);
+          end if;
+       end if;
+ 
+       --  At this point there should be an invariant procedure declaration
+ 
+       pragma Assert (Present (Proc_Id));
+       Proc_Decl := Unit_Declaration_Node (Proc_Id);
+ 
+       --  Nothing to do if the invariant procedure already has a body
+ 
+       if Present (Corresponding_Body (Proc_Decl)) then
+          goto Leave;
+       end if;
+ 
+       --  Emulate the environment of the invariant procedure by installing its
+       --  scope and formal parameters. Note that this is not needed, but having
+       --  the scope installed helps with the detection of invariant-related
+       --  errors.
+ 
+       Push_Scope (Proc_Id);
+       Install_Formals (Proc_Id);
+ 
+       Obj_Id := First_Formal (Proc_Id);
+       pragma Assert (Present (Obj_Id));
+ 
+       --  The "partial" invariant procedure verifies the invariants of the
+       --  partial view only.
+ 
+       if Partial_Invariant then
+          pragma Assert (Present (Priv_Typ));
+ 
+          Add_Own_Invariants
+            (T      => Priv_Typ,
+             Obj_Id => Obj_Id,
+             Checks => Stmts);
+ 
+       --  Otherwise the "full" invariant procedure verifies the invariants of
+       --  the full view, all array or record components, as well as class-wide
+       --  invariants inherited from parent types or interfaces. In addition, it
+       --  indirectly verifies the invariants of the partial view by calling the
+       --  "partial" invariant procedure.
+ 
+       else
+          pragma Assert (Present (Full_Typ));
+ 
+          --  Check the invariants of the partial view by calling the "partial"
+          --  invariant procedure. Generate:
+ 
+          --    <Work_Typ>Partial_Invariant (_object);
+ 
+          if Present (Part_Proc) then
+             Append_New_To (Stmts,
+               Make_Procedure_Call_Statement (Loc,
+                 Name                   => New_Occurrence_Of (Part_Proc, Loc),
+                 Parameter_Associations => New_List (
+                   New_Occurrence_Of (Obj_Id, Loc))));
+ 
+             Produced_Check := True;
+          end if;
+ 
+          Priv_Item := Empty;
+ 
+          --  Derived subtypes do not have a partial view
+ 
+          if Present (Priv_Typ) then
+ 
+             --  The processing of the "full" invariant procedure intentionally
+             --  skips the partial view because a) this may result in changes of
+             --  visibility and b) lead to duplicate checks. However, when the
+             --  full view is the underlying full view of an untagged derived
+             --  type whose parent type is private, partial invariants appear on
+             --  the rep item chain of the partial view only.
+ 
+             --    package Pack_1 is
+             --       type Root ... is private;
+             --    private
+             --       <full view of Root>
+             --    end Pack_1;
+ 
+             --    with Pack_1;
+             --    package Pack_2 is
+             --       type Child is new Pack_1.Root with Type_Invariant => ...;
+             --       <underlying full view of Child>
+             --    end Pack_2;
+ 
+             --  As a result, the processing of the full view must also consider
+             --  all invariants of the partial view.
+ 
+             if Is_Untagged_Private_Derivation (Priv_Typ, Full_Typ) then
+                null;
+ 
+             --  Otherwise the invariants of the partial view are ignored
+ 
+             else
+                --  Note that the rep item chain is shared between the partial
+                --  and full views of a type. To avoid processing the invariants
+                --  of the partial view, signal the logic to stop when the first
+                --  rep item of the partial view has been reached.
+ 
+                Priv_Item := First_Rep_Item (Priv_Typ);
+ 
+                --  Ignore the invariants of the partial view by eliminating the
+                --  view.
+ 
+                Priv_Typ := Empty;
+             end if;
+          end if;
+ 
+          --  Process the invariants of the full view and in certain cases those
+          --  of the partial view. This also handles any invariants on array or
+          --  record components.
+ 
+          Add_Own_Invariants
+            (T         => Priv_Typ,
+             Obj_Id    => Obj_Id,
+             Checks    => Stmts,
+             Priv_Item => Priv_Item);
+ 
+          Add_Own_Invariants
+            (T         => Full_Typ,
+             Obj_Id    => Obj_Id,
+             Checks    => Stmts,
+             Priv_Item => Priv_Item);
+ 
+          --  Process the elements of an array type
+ 
+          if Is_Array_Type (Full_Typ) then
+             Add_Array_Component_Invariants (Full_Typ, Obj_Id, Stmts);
+ 
+          --  Process the components of a record type
+ 
+          elsif Ekind (Full_Typ) = E_Record_Type then
+             Add_Record_Component_Invariants (Full_Typ, Obj_Id, Stmts);
+ 
+          --  Process the components of a corresponding record
+ 
+          elsif Present (CRec_Typ) then
+             Add_Record_Component_Invariants (CRec_Typ, Obj_Id, Stmts);
+          end if;
+ 
+          --  Process the inherited class-wide invariants of all parent types.
+          --  This also handles any invariants on record components.
+ 
+          Add_Parent_Invariants (Full_Typ, Obj_Id, Stmts);
+ 
+          --  Process the inherited class-wide invariants of all implemented
+          --  interface types.
+ 
+          Add_Interface_Invariants (Full_Typ, Obj_Id, Stmts);
+       end if;
+ 
+       End_Scope;
+ 
+       --  At this point there should be at least one invariant check. If this
+       --  is not the case, then the invariant-related flags were not properly
+       --  set, or there is a missing invariant procedure on one of the array
+       --  or record components.
+ 
+       pragma Assert (Produced_Check);
+ 
+       --  Account for the case where assertions are disabled or all invariant
+       --  checks are subject to Assertion_Policy Ignore. Produce a completing
+       --  empty body.
+ 
+       if No (Stmts) then
+          Stmts := New_List (Make_Null_Statement (Loc));
+       end if;
+ 
+       --  Generate:
+       --    procedure <Work_Typ>[Partial_]Invariant (_object : <Obj_Typ>) is
+       --    begin
+       --       <Stmts>
+       --    end <Work_Typ>[Partial_]Invariant;
+ 
+       Proc_Body :=
+         Make_Subprogram_Body (Loc,
+           Specification                =>
+             Copy_Subprogram_Spec (Parent (Proc_Id)),
+           Declarations                 => Empty_List,
+             Handled_Statement_Sequence =>
+               Make_Handled_Sequence_Of_Statements (Loc,
+                 Statements => Stmts));
+       Proc_Body_Id := Defining_Entity (Proc_Body);
+ 
+       --  Perform minor decoration in case the body is not analyzed
+ 
+       Set_Ekind (Proc_Body_Id, E_Subprogram_Body);
+       Set_Etype (Proc_Body_Id, Standard_Void_Type);
+       Set_Scope (Proc_Body_Id, Current_Scope);
+ 
+       --  Link both spec and body to avoid generating duplicates
+ 
+       Set_Corresponding_Body (Proc_Decl, Proc_Body_Id);
+       Set_Corresponding_Spec (Proc_Body, Proc_Id);
+ 
+       --  The body should not be inserted into the tree when the context is
+       --  ASIS or a generic unit because it is not part of the template. Note
+       --  that the body must still be generated in order to resolve the
+       --  invariants.
+ 
+       if ASIS_Mode or Inside_A_Generic then
+          null;
+ 
+       --  Semi-insert the body into the tree for GNATprove by setting its
+       --  Parent field. This allows for proper upstream tree traversals.
+ 
+       elsif GNATprove_Mode then
+          Set_Parent (Proc_Body, Parent (Declaration_Node (Work_Typ)));
+ 
+       --  Otherwise the body is part of the freezing actions of the type
+ 
+       else
+          Append_Freeze_Action (Work_Typ, Proc_Body);
+       end if;
+ 
+    <<Leave>>
+       Restore_Ghost_Mode (Saved_GM);
+    end Build_Invariant_Procedure_Body;
+ 
+    -------------------------------------------
+    -- Build_Invariant_Procedure_Declaration --
+    -------------------------------------------
+ 
+    --  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_Invariant_Procedure_Declaration
+      (Typ               : Entity_Id;
+       Partial_Invariant : Boolean := False)
+    is
+       Loc : constant Source_Ptr := Sloc (Typ);
+ 
+       Saved_GM : constant Ghost_Mode_Type := Ghost_Mode;
+       --  Save the Ghost mode to restore on exit
+ 
+       Proc_Decl : Node_Id;
+       Proc_Id   : Entity_Id;
+       Proc_Nam  : Name_Id;
+       Typ_Decl  : Node_Id;
+ 
+       CRec_Typ : Entity_Id;
+       --  The corresponding record type of Full_Typ
+ 
+       Full_Base : Entity_Id;
+       --  The base type of Full_Typ
+ 
+       Full_Typ : Entity_Id;
+       --  The full view of working type
+ 
+       Obj_Id : Entity_Id;
+       --  The _object formal parameter of the invariant procedure
+ 
+       Obj_Typ : Entity_Id;
+       --  The type of the _object formal parameter
+ 
+       Priv_Typ : Entity_Id;
+       --  The partial view of working type
+ 
+       Work_Typ : Entity_Id;
+       --  The working type
+ 
+    begin
+       Work_Typ := Typ;
+ 
+       --  The input type denotes the implementation base type of a constrained
+       --  array type. Work with the first subtype as all invariant pragmas are
+       --  on its rep item chain.
+ 
+       if Ekind (Work_Typ) = E_Array_Type and then Is_Itype (Work_Typ) then
+          Work_Typ := First_Subtype (Work_Typ);
+ 
+       --  The input denotes the corresponding record type of a protected or a
+       --  task type. Work with the concurrent type because the corresponding
+       --  record type may not be visible to clients of the type.
+ 
+       elsif Ekind (Work_Typ) = E_Record_Type
+         and then Is_Concurrent_Record_Type (Work_Typ)
+       then
+          Work_Typ := Corresponding_Concurrent_Type (Work_Typ);
+       end if;
+ 
+       --  The working type may be subject to pragma Ghost. Set the mode now to
+       --  ensure that the invariant procedure is properly marked as Ghost.
+ 
+       Set_Ghost_Mode (Work_Typ);
+ 
+       --  The type must either have invariants of its own, inherit class-wide
+       --  invariants from parent or interface types, or be an array or record
+       --  type whose components have invariants.
+ 
+       pragma Assert (Has_Invariants (Work_Typ));
+ 
+       --  Nothing to do if the type already has a "partial" invariant procedure
+ 
+       if Partial_Invariant then
+          if Present (Partial_Invariant_Procedure (Work_Typ)) then
+             goto Leave;
+          end if;
+ 
+       --  Nothing to do if the type already has a "full" invariant procedure
+ 
+       elsif Present (Invariant_Procedure (Work_Typ)) then
+          goto Leave;
+       end if;
+ 
+       --  The caller requests the declaration of the "partial" invariant
+       --  procedure.
+ 
+       if Partial_Invariant then
+          Proc_Nam := New_External_Name (Chars (Work_Typ), "Partial_Invariant");
+ 
+       --  Otherwise the caller requests the declaration of the "full" invariant
+       --  procedure.
+ 
+       else
+          Proc_Nam := New_External_Name (Chars (Work_Typ), "Invariant");
+       end if;
+ 
+       Proc_Id := Make_Defining_Identifier (Loc, Chars => Proc_Nam);
+ 
+       --  Perform minor decoration in case the declaration is not analyzed
+ 
+       Set_Ekind (Proc_Id, E_Procedure);
+       Set_Etype (Proc_Id, Standard_Void_Type);
+       Set_Scope (Proc_Id, Current_Scope);
+ 
+       if Partial_Invariant then
+          Set_Is_Partial_Invariant_Procedure (Proc_Id);
+          Set_Partial_Invariant_Procedure (Work_Typ, Proc_Id);
+       else
+          Set_Is_Invariant_Procedure (Proc_Id);
+          Set_Invariant_Procedure (Work_Typ, Proc_Id);
+       end if;
+ 
+       --  The invariant procedure requires debug info when the invariants are
+       --  subject to Source Coverage Obligations.
+ 
+       if Generate_SCO then
+          Set_Needs_Debug_Info (Proc_Id);
+       end if;
+ 
+       --  Obtain all views of the input type
+ 
+       Get_Views (Work_Typ, Priv_Typ, Full_Typ, Full_Base, CRec_Typ);
+ 
+       --  Associate the invariant procedure with all views
+ 
+       Propagate_Invariant_Attributes (Priv_Typ,  From_Typ => Work_Typ);
+       Propagate_Invariant_Attributes (Full_Typ,  From_Typ => Work_Typ);
+       Propagate_Invariant_Attributes (Full_Base, From_Typ => Work_Typ);
+       Propagate_Invariant_Attributes (CRec_Typ,  From_Typ => Work_Typ);
+ 
+       --  The declaration of the invariant procedure is inserted after the
+       --  declaration of the partial view as this allows for proper external
+       --  visibility.
+ 
+       if Present (Priv_Typ) then
+          Typ_Decl := Declaration_Node (Priv_Typ);
+ 
+       --  Anonymous arrays in object declarations have no explicit declaration
+       --  so use the related object declaration as the insertion point.
+ 
+       elsif Is_Itype (Work_Typ) and then Is_Array_Type (Work_Typ)  then
+          Typ_Decl := Associated_Node_For_Itype (Work_Typ);
+ 
+       --  Derived types with the full view as parent do not have a partial
+       --  view. Insert the invariant procedure after the derived type.
+ 
+       else
+          Typ_Decl := Declaration_Node (Full_Typ);
+       end if;
+ 
+       --  The type should have a declarative node
+ 
+       pragma Assert (Present (Typ_Decl));
+ 
+       --  Create the formal parameter which emulates the variable-like behavior
+       --  of the current type instance.
+ 
+       Obj_Id := Make_Defining_Identifier (Loc, Chars => Name_uObject);
+ 
+       --  When generating an invariant procedure declaration for an abstract
+       --  type (including interfaces), use the class-wide type as the _object
+       --  type. This has several desirable effects:
+ 
+       --    * The invariant procedure does not become a primitive of the type.
+       --      This eliminates the need to either special case the treatment of
+       --      invariant procedures, or to make it a predefined primitive and
+       --      force every derived type to potentially provide an empty body.
+ 
+       --    * The invariant procedure does not need to be declared as abstract.
+       --      This allows for a proper body, which in turn avoids redundant
+       --      processing of the same invariants for types with multiple views.
+ 
+       --    * The class-wide type allows for calls to abstract primitives
+       --      within a nonabstract subprogram. The calls are treated as
+       --      dispatching and require additional processing when they are
+       --      remapped to call primitives of derived types. See routine
+       --      Replace_References for details.
+ 
+       if Is_Abstract_Type (Work_Typ) then
+          Obj_Typ := Class_Wide_Type (Work_Typ);
+       else
+          Obj_Typ := Work_Typ;
+       end if;
+ 
+       --  Perform minor decoration in case the declaration is not analyzed
+ 
+       Set_Ekind (Obj_Id, E_In_Parameter);
+       Set_Etype (Obj_Id, Obj_Typ);
+       Set_Scope (Obj_Id, Proc_Id);
+ 
+       Set_First_Entity (Proc_Id, Obj_Id);
+       Set_Last_Entity  (Proc_Id, Obj_Id);
+ 
+       --  Generate:
+       --    procedure <Work_Typ>[Partial_]Invariant (_object : <Obj_Typ>);
+ 
+       Proc_Decl :=
+         Make_Subprogram_Declaration (Loc,
+           Specification =>
+             Make_Procedure_Specification (Loc,
+               Defining_Unit_Name       => Proc_Id,
+               Parameter_Specifications => New_List (
+                 Make_Parameter_Specification (Loc,
+                   Defining_Identifier => Obj_Id,
+                   Parameter_Type      => New_Occurrence_Of (Obj_Typ, Loc)))));
+ 
+       --  The declaration should not be inserted into the tree when the context
+       --  is ASIS or a generic unit because it is not part of the template.
+ 
+       if ASIS_Mode or Inside_A_Generic then
+          null;
+ 
+       --  Semi-insert the declaration into the tree for GNATprove by setting
+       --  its Parent field. This allows for proper upstream tree traversals.
+ 
+       elsif GNATprove_Mode then
+          Set_Parent (Proc_Decl, Parent (Typ_Decl));
+ 
+       --  Otherwise insert the declaration
+ 
+       else
+          pragma Assert (Present (Typ_Decl));
+          Insert_After_And_Analyze (Typ_Decl, Proc_Decl);
+       end if;
+ 
+    <<Leave>>
+       Restore_Ghost_Mode (Saved_GM);
+    end Build_Invariant_Procedure_Declaration;
+ 
     --------------------------
     -- Build_Procedure_Form --
     --------------------------
*************** package body Exp_Util is
*** 3378,3392 ****
        end if;
     end Ensure_Defined;
  
-    -----------------
-    -- Entity_Hash --
-    -----------------
- 
-    function Entity_Hash (E : Entity_Id) return Num_Primitives is
-    begin
-       return Num_Primitives (E mod Primitives_Mapping_Size);
-    end Entity_Hash;
- 
     --------------------
     -- Entry_Names_OK --
     --------------------
--- 4765,4770 ----
*************** package body Exp_Util is
*** 3405,3476 ****
     -------------------
  
     procedure Evaluate_Name (Nam : Node_Id) is
-       K : constant Node_Kind := Nkind (Nam);
- 
     begin
!       --  For an explicit dereference, we simply force the evaluation of the
!       --  name expression. The dereference provides a value that is the address
!       --  for the renamed object, and it is precisely this value that we want
!       --  to preserve.
  
!       if K = N_Explicit_Dereference then
!          Force_Evaluation (Prefix (Nam));
  
!       --  For a selected component, we simply evaluate the prefix
  
!       elsif K = N_Selected_Component then
!          Evaluate_Name (Prefix (Nam));
  
!       --  For an indexed component, or an attribute reference, we evaluate the
!       --  prefix, which is itself a name, recursively, and then force the
!       --  evaluation of all the subscripts (or attribute expressions).
  
!       elsif Nkind_In (K, N_Indexed_Component, N_Attribute_Reference) then
!          Evaluate_Name (Prefix (Nam));
  
!          declare
!             E : Node_Id;
  
!          begin
!             E := First (Expressions (Nam));
!             while Present (E) loop
!                Force_Evaluation (E);
  
!                if Original_Node (E) /= E then
!                   Set_Do_Range_Check (E, Do_Range_Check (Original_Node (E)));
!                end if;
  
!                Next (E);
!             end loop;
!          end;
  
!       --  For a slice, we evaluate the prefix, as for the indexed component
!       --  case and then, if there is a range present, either directly or as the
!       --  constraint of a discrete subtype indication, we evaluate the two
!       --  bounds of this range.
  
!       elsif K = N_Slice then
!          Evaluate_Name (Prefix (Nam));
!          Evaluate_Slice_Bounds (Nam);
  
!       --  For a type conversion, the expression of the conversion must be the
!       --  name of an object, and we simply need to evaluate this name.
  
!       elsif K = N_Type_Conversion then
!          Evaluate_Name (Expression (Nam));
  
!       --  For a function call, we evaluate the call
  
!       elsif K = N_Function_Call then
!          Force_Evaluation (Nam);
  
!       --  The remaining cases are direct name, operator symbol and character
!       --  literal. In all these cases, we do nothing, since we want to
!       --  reevaluate each time the renamed object is used.
  
!       else
!          return;
!       end if;
     end Evaluate_Name;
  
     ---------------------------
--- 4783,4867 ----
     -------------------
  
     procedure Evaluate_Name (Nam : Node_Id) is
     begin
!       --  For an attribute reference or an indexed component, evaluate the
!       --  prefix, which is itself a name, recursively, and then force the
!       --  evaluation of all the subscripts (or attribute expressions).
  
!       case Nkind (Nam) is
!          when N_Attribute_Reference
!             | N_Indexed_Component
!          =>
!             Evaluate_Name (Prefix (Nam));
  
!             declare
!                E : Node_Id;
  
!             begin
!                E := First (Expressions (Nam));
!                while Present (E) loop
!                   Force_Evaluation (E);
  
!                   if Original_Node (E) /= E then
!                      Set_Do_Range_Check
!                        (E, Do_Range_Check (Original_Node (E)));
!                   end if;
  
!                   Next (E);
!                end loop;
!             end;
  
!          --  For an explicit dereference, we simply force the evaluation of
!          --  the name expression. The dereference provides a value that is the
!          --  address for the renamed object, and it is precisely this value
!          --  that we want to preserve.
  
!          when N_Explicit_Dereference =>
!             Force_Evaluation (Prefix (Nam));
  
!          --  For a function call, we evaluate the call
  
!          when N_Function_Call =>
!             Force_Evaluation (Nam);
  
!          --  For a qualified expression, we evaluate the underlying object
!          --  name if any, otherwise we force the evaluation of the underlying
!          --  expression.
  
!          when N_Qualified_Expression =>
!             if Is_Object_Reference (Expression (Nam)) then
!                Evaluate_Name (Expression (Nam));
!             else
!                Force_Evaluation (Expression (Nam));
!             end if;
  
!          --  For a selected component, we simply evaluate the prefix
  
!          when N_Selected_Component =>
!             Evaluate_Name (Prefix (Nam));
  
!          --  For a slice, we evaluate the prefix, as for the indexed component
!          --  case and then, if there is a range present, either directly or as
!          --  the constraint of a discrete subtype indication, we evaluate the
!          --  two bounds of this range.
  
!          when N_Slice =>
!             Evaluate_Name (Prefix (Nam));
!             Evaluate_Slice_Bounds (Nam);
  
!          --  For a type conversion, the expression of the conversion must be
!          --  the name of an object, and we simply need to evaluate this name.
  
!          when N_Type_Conversion =>
!             Evaluate_Name (Expression (Nam));
! 
!          --  The remaining cases are direct name, operator symbol and character
!          --  literal. In all these cases, we do nothing, since we want to
!          --  reevaluate each time the renamed object is used.
! 
!          when others =>
!             null;
!       end case;
     end Evaluate_Name;
  
     ---------------------------
*************** package body Exp_Util is
*** 3531,3536 ****
--- 4922,4939 ----
        end if;
     end Evolve_Or_Else;
  
+    -----------------------------------
+    -- Exceptions_In_Finalization_OK --
+    -----------------------------------
+ 
+    function Exceptions_In_Finalization_OK return Boolean is
+    begin
+       return
+         not (Restriction_Active (No_Exception_Handlers)    or else
+              Restriction_Active (No_Exception_Propagation) or else
+              Restriction_Active (No_Exceptions));
+    end Exceptions_In_Finalization_OK;
+ 
     -----------------------------------------
     -- Expand_Static_Predicates_In_Choices --
     -----------------------------------------
*************** package body Exp_Util is
*** 3610,3616 ****
  
     --        is transformed into
  
!    --     Val : Constrained_Subtype_of_T := Maybe_Modified_Expr;
     --
     --  Here are the main cases :
     --
--- 5013,5019 ----
  
     --        is transformed into
  
!    --     Val : Constrained_Subtype_Of_T := Maybe_Modified_Expr;
     --
     --  Here are the main cases :
     --
*************** package body Exp_Util is
*** 3856,3861 ****
--- 5259,5334 ----
        end if;
     end Expand_Subtype_From_Expr;
  
+    ---------------------------------------------
+    -- Expression_Contains_Primitives_Calls_Of --
+    ---------------------------------------------
+ 
+    function Expression_Contains_Primitives_Calls_Of
+      (Expr : Node_Id;
+       Typ  : Entity_Id) return Boolean
+    is
+       U_Typ : constant Entity_Id := Unique_Entity (Typ);
+ 
+       Calls_OK : Boolean := False;
+       --  This flag is set to True when expression Expr contains at least one
+       --  call to a nondispatching primitive function of Typ.
+ 
+       function Search_Primitive_Calls (N : Node_Id) return Traverse_Result;
+       --  Search for nondispatching calls to primitive functions of type Typ
+ 
+       ----------------------------
+       -- Search_Primitive_Calls --
+       ----------------------------
+ 
+       function Search_Primitive_Calls (N : Node_Id) return Traverse_Result is
+          Disp_Typ : Entity_Id;
+          Subp     : Entity_Id;
+ 
+       begin
+          --  Detect a function call that could denote a nondispatching
+          --  primitive of the input type.
+ 
+          if Nkind (N) = N_Function_Call
+            and then Is_Entity_Name (Name (N))
+          then
+             Subp := Entity (Name (N));
+ 
+             --  Do not consider function calls with a controlling argument, as
+             --  those are always dispatching calls.
+ 
+             if Is_Dispatching_Operation (Subp)
+               and then No (Controlling_Argument (N))
+             then
+                Disp_Typ := Find_Dispatching_Type (Subp);
+ 
+                --  To qualify as a suitable primitive, the dispatching type of
+                --  the function must be the input type.
+ 
+                if Present (Disp_Typ)
+                  and then Unique_Entity (Disp_Typ) = U_Typ
+                then
+                   Calls_OK := True;
+ 
+                   --  There is no need to continue the traversal, as one such
+                   --  call suffices.
+ 
+                   return Abandon;
+                end if;
+             end if;
+          end if;
+ 
+          return OK;
+       end Search_Primitive_Calls;
+ 
+       procedure Search_Calls is new Traverse_Proc (Search_Primitive_Calls);
+ 
+    --  Start of processing for Expression_Contains_Primitives_Calls_Of_Type
+ 
+    begin
+       Search_Calls (Expr);
+       return Calls_OK;
+    end Expression_Contains_Primitives_Calls_Of;
+ 
     ----------------------
     -- Finalize_Address --
     ----------------------
*************** package body Exp_Util is
*** 3933,3998 ****
        return TSS (Utyp, TSS_Finalize_Address);
     end Finalize_Address;
  
-    -------------------
-    -- Find_DIC_Type --
-    -------------------
- 
-    function Find_DIC_Type (Typ : Entity_Id) return Entity_Id is
-       Curr_Typ : Entity_Id;
-       --  The current type being examined in the parent hierarchy traversal
- 
-       DIC_Typ : Entity_Id;
-       --  The type which carries the DIC pragma. This variable denotes the
-       --  partial view when private types are involved.
- 
-       Par_Typ : Entity_Id;
-       --  The parent type of the current type. This variable denotes the full
-       --  view when private types are involved.
- 
-    begin
-       --  The input type defines its own DIC pragma, therefore it is the owner
- 
-       if Has_Own_DIC (Typ) then
-          DIC_Typ := Typ;
- 
-       --  Otherwise the DIC pragma is inherited from a parent type
- 
-       else
-          pragma Assert (Has_Inherited_DIC (Typ));
- 
-          --  Climb the parent chain
- 
-          Curr_Typ := Typ;
-          loop
-             --  Inspect the parent type. Do not consider subtypes as they
-             --  inherit the DIC attributes from their base types.
- 
-             DIC_Typ := Base_Type (Etype (Curr_Typ));
- 
-             --  Look at the full view of a private type because the type may
-             --  have a hidden parent introduced in the full view.
- 
-             Par_Typ := DIC_Typ;
- 
-             if Is_Private_Type (Par_Typ)
-               and then Present (Full_View (Par_Typ))
-             then
-                Par_Typ := Full_View (Par_Typ);
-             end if;
- 
-             --  Stop the climb once the nearest parent type which defines a DIC
-             --  pragma of its own is encountered or when the root of the parent
-             --  chain is reached.
- 
-             exit when Has_Own_DIC (DIC_Typ) or else Curr_Typ = Par_Typ;
- 
-             Curr_Typ := Par_Typ;
-          end loop;
-       end if;
- 
-       return DIC_Typ;
-    end Find_DIC_Type;
- 
     ------------------------
     -- Find_Interface_ADT --
     ------------------------
--- 5406,5411 ----
*************** package body Exp_Util is
*** 4056,4062 ****
       (T     : Entity_Id;
        Iface : Entity_Id) return Entity_Id
     is
!       AI_Tag : Entity_Id;
        Found  : Boolean   := False;
        Typ    : Entity_Id := T;
  
--- 5469,5475 ----
       (T     : Entity_Id;
        Iface : Entity_Id) return Entity_Id
     is
!       AI_Tag : Entity_Id := Empty;
        Found  : Boolean   := False;
        Typ    : Entity_Id := T;
  
*************** package body Exp_Util is
*** 5532,5538 ****
              --  existing actions of the expression with actions, and should
              --  never reach here: if actions are inserted on a statement
              --  within the Actions of an expression with actions, or on some
!             --  sub-expression of such a statement, then the outermost proper
              --  insertion point is right before the statement, and we should
              --  never climb up as far as the N_Expression_With_Actions itself.
  
--- 6945,6951 ----
              --  existing actions of the expression with actions, and should
              --  never reach here: if actions are inserted on a statement
              --  within the Actions of an expression with actions, or on some
!             --  subexpression of such a statement, then the outermost proper
              --  insertion point is right before the statement, and we should
              --  never climb up as far as the N_Expression_With_Actions itself.
  
*************** package body Exp_Util is
*** 5781,5787 ****
                    null;
                 end if;
  
!             --  Another special case, an attribute denoting a procedure call
  
              when N_Attribute_Reference =>
                 if Is_Procedure_Attribute_Name (Attribute_Name (P)) then
--- 7194,7200 ----
                    null;
                 end if;
  
!             --  Special case: an attribute denoting a procedure call
  
              when N_Attribute_Reference =>
                 if Is_Procedure_Attribute_Name (Attribute_Name (P)) then
*************** package body Exp_Util is
*** 5799,5804 ****
--- 7212,7227 ----
                    null;
                 end if;
  
+             --  Special case: a marker
+ 
+             when N_Call_Marker
+                | N_Variable_Reference_Marker
+             =>
+                if Is_List_Member (P) then
+                   Insert_List_Before_And_Analyze (P, Ins_Actions);
+                   return;
+                end if;
+ 
              --  A contract node should not belong to the tree
  
              when N_Contract =>
*************** package body Exp_Util is
*** 5926,5931 ****
--- 7349,7356 ----
                 | N_Real_Literal
                 | N_Real_Range_Specification
                 | N_Record_Definition
+                | N_Reduction_Expression
+                | N_Reduction_Expression_Parameter
                 | N_Reference
                 | N_SCIL_Dispatch_Table_Tag_Init
                 | N_SCIL_Dispatching_Call
*************** package body Exp_Util is
*** 6062,6069 ****
        Aux : constant Node_Id := Aux_Decls_Node (Cunit (Main_Unit));
  
     begin
!       Push_Scope (Cunit_Entity (Main_Unit));
!       --  ??? should this be Current_Sem_Unit instead of Main_Unit?
  
        if No (Actions (Aux)) then
           Set_Actions (Aux, New_List (N));
--- 7487,7496 ----
        Aux : constant Node_Id := Aux_Decls_Node (Cunit (Main_Unit));
  
     begin
!       Push_Scope (Cunit_Entity (Current_Sem_Unit));
!       --  And not Main_Unit as previously. If the main unit is a body,
!       --  the scope needed to analyze the actions is the entity of the
!       --  corresponding declaration.
  
        if No (Actions (Aux)) then
           Set_Actions (Aux, New_List (N));
*************** package body Exp_Util is
*** 6146,6167 ****
       (Obj_Id : Entity_Id) return Boolean
     is
        function Is_Controlled_Function_Call (N : Node_Id) return Boolean;
!       --  Determine if particular node denotes a controlled function call. The
!       --  call may have been heavily expanded.
  
        function Is_Displace_Call (N : Node_Id) return Boolean;
!       --  Determine whether a particular node is a call to Ada.Tags.Displace.
!       --  The call might be nested within other actions such as conversions.
  
        function Is_Source_Object (N : Node_Id) return Boolean;
        --  Determine whether a particular node denotes a source object
  
        ---------------------------------
        -- Is_Controlled_Function_Call --
        ---------------------------------
  
        function Is_Controlled_Function_Call (N : Node_Id) return Boolean is
!          Expr : Node_Id := Original_Node (N);
  
        begin
           --  When a function call appears in Object.Operation format, the
--- 7573,7600 ----
       (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
*************** package body Exp_Util is
*** 6173,6178 ****
--- 7606,7612 ----
           --    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);
*************** package body Exp_Util is
*** 6199,6231 ****
               and then Needs_Finalization (Etype (Entity (Expr)));
        end Is_Controlled_Function_Call;
  
        ----------------------
        -- Is_Displace_Call --
        ----------------------
  
        function Is_Displace_Call (N : Node_Id) return Boolean is
!          Call : Node_Id := N;
  
        begin
-          --  Strip various actions which may precede a call to Displace
- 
-          loop
-             if Nkind (Call) = N_Explicit_Dereference then
-                Call := Prefix (Call);
- 
-             elsif Nkind_In (Call, N_Type_Conversion,
-                                   N_Unchecked_Type_Conversion)
-             then
-                Call := Expression (Call);
- 
-             else
-                exit;
-             end if;
-          end loop;
- 
           return
             Present (Call)
               and then Nkind (Call) = N_Function_Call
               and then Is_RTE (Entity (Name (Call)), RE_Displace);
        end Is_Displace_Call;
  
--- 7633,7664 ----
               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;
  
*************** package body Exp_Util is
*** 6234,6252 ****
        ----------------------
  
        function Is_Source_Object (N : Node_Id) return Boolean is
        begin
           return
!            Present (N)
!              and then Nkind (N) in N_Has_Entity
!              and then Is_Object (Entity (N))
!              and then Comes_From_Source (N);
        end Is_Source_Object;
  
        --  Local variables
  
!       Decl      : constant Node_Id   := Parent (Obj_Id);
        Obj_Typ   : constant Entity_Id := Base_Type (Etype (Obj_Id));
!       Orig_Decl : constant Node_Id   := Original_Node (Decl);
  
     --  Start of processing for Is_Displacement_Of_Object_Or_Function_Result
  
--- 7667,7714 ----
        ----------------------
  
        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_In (Result, 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
  
*************** package body Exp_Util is
*** 6255,6288 ****
  
        --     Obj : CW_Type := Function_Call (...);
  
!       --  rewritten into:
  
!       --     Tmp : ... := Function_Call (...)'reference;
!       --     Obj : CW_Type renames (... Ada.Tags.Displace (Tmp));
  
        --  where the return type of the function and the class-wide type require
        --  dispatch table pointer displacement.
  
        --  Case 2:
  
        --     Obj : CW_Type := Src_Obj;
  
!       --  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.
  
!       return
!         Nkind (Decl) = N_Object_Renaming_Declaration
!           and then Nkind (Orig_Decl) = N_Object_Declaration
!           and then Comes_From_Source (Orig_Decl)
!           and then Is_Class_Wide_Type (Obj_Typ)
!           and then Is_Displace_Call (Renamed_Object (Obj_Id))
!           and then
!             (Is_Controlled_Function_Call (Expression (Orig_Decl))
!               or else Is_Source_Object (Expression (Orig_Decl)));
     end Is_Displacement_Of_Object_Or_Function_Result;
  
     ------------------------------
--- 7717,7768 ----
  
        --     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;
  
     ------------------------------
*************** package body Exp_Util is
*** 6355,6360 ****
--- 7835,7842 ----
              Call := Prefix (Call);
           end if;
  
+          Call := Unqual_Conv (Call);
+ 
           if Is_Build_In_Place_Function_Call (Call) then
              declare
                 Access_Nam : Name_Id := No_Name;
*************** package body Exp_Util is
*** 6777,6855 ****
            and then not Is_Build_In_Place_Function_Call (Prefix (Expr));
     end Is_Non_BIP_Func_Call;
  
-    ------------------------------------
-    -- Is_Object_Access_BIP_Func_Call --
-    ------------------------------------
- 
-    function Is_Object_Access_BIP_Func_Call
-       (Expr   : Node_Id;
-        Obj_Id : Entity_Id) return Boolean
-    is
-       Access_Nam : Name_Id := No_Name;
-       Actual     : Node_Id;
-       Call       : Node_Id;
-       Formal     : Node_Id;
-       Param      : Node_Id;
- 
-    begin
-       --  Build-in-place calls usually appear in 'reference format. Note that
-       --  the accessibility check machinery may add an extra 'reference due to
-       --  side effect removal.
- 
-       Call := Expr;
-       while Nkind (Call) = N_Reference loop
-          Call := Prefix (Call);
-       end loop;
- 
-       if Nkind_In (Call, N_Qualified_Expression,
-                          N_Unchecked_Type_Conversion)
-       then
-          Call := Expression (Call);
-       end if;
- 
-       if Is_Build_In_Place_Function_Call (Call) then
- 
-          --  Examine all parameter associations of the function call
- 
-          Param := First (Parameter_Associations (Call));
-          while Present (Param) loop
-             if Nkind (Param) = N_Parameter_Association
-               and then Nkind (Selector_Name (Param)) = N_Identifier
-             then
-                Formal := Selector_Name (Param);
-                Actual := Explicit_Actual_Parameter (Param);
- 
-                --  Construct the name of formal BIPaccess. It is much easier to
-                --  extract the name of the function using an arbitrary formal's
-                --  scope rather than the Name field of Call.
- 
-                if Access_Nam = No_Name and then Present (Entity (Formal)) then
-                   Access_Nam :=
-                     New_External_Name
-                       (Chars (Scope (Entity (Formal))),
-                        BIP_Formal_Suffix (BIP_Object_Access));
-                end if;
- 
-                --  A match for BIPaccess => Obj_Id'Unrestricted_Access has been
-                --  found.
- 
-                if Chars (Formal) = Access_Nam
-                  and then Nkind (Actual) = N_Attribute_Reference
-                  and then Attribute_Name (Actual) = Name_Unrestricted_Access
-                  and then Nkind (Prefix (Actual)) = N_Identifier
-                  and then Entity (Prefix (Actual)) = Obj_Id
-                then
-                   return True;
-                end if;
-             end if;
- 
-             Next (Param);
-          end loop;
-       end if;
- 
-       return False;
-    end Is_Object_Access_BIP_Func_Call;
- 
     ----------------------------------
     -- Is_Possibly_Unaligned_Object --
     ----------------------------------
--- 8259,8264 ----
*************** package body Exp_Util is
*** 7242,7252 ****
           Call := Prefix (Call);
        end loop;
  
!       if Nkind_In (Call, N_Qualified_Expression,
!                          N_Unchecked_Type_Conversion)
!       then
!          Call := Expression (Call);
!       end if;
  
        if Is_Build_In_Place_Function_Call (Call) then
  
--- 8651,8657 ----
           Call := Prefix (Call);
        end loop;
  
!       Call := Unqual_Conv (Call);
  
        if Is_Build_In_Place_Function_Call (Call) then
  
*************** package body Exp_Util is
*** 7254,7262 ****
  
           Param := First (Parameter_Associations (Call));
           while Present (Param) loop
!             if Nkind (Param) = N_Parameter_Association
!               and then Nkind (Selector_Name (Param)) = N_Identifier
!             then
                 Formal := Selector_Name (Param);
                 Actual := Explicit_Actual_Parameter (Param);
  
--- 8659,8665 ----
  
           Param := First (Parameter_Associations (Call));
           while Present (Param) loop
!             if Nkind (Param) = N_Parameter_Association then
                 Formal := Selector_Name (Param);
                 Actual := Explicit_Actual_Parameter (Param);
  
*************** package body Exp_Util is
*** 7319,7324 ****
--- 8722,8759 ----
                     and then Etype (Full_View (T)) /= T);
     end Is_Untagged_Derivation;
  
+    ------------------------------------
+    -- Is_Untagged_Private_Derivation --
+    ------------------------------------
+ 
+    function Is_Untagged_Private_Derivation
+      (Priv_Typ : Entity_Id;
+       Full_Typ : Entity_Id) return Boolean
+    is
+    begin
+       return
+         Present (Priv_Typ)
+           and then Is_Untagged_Derivation (Priv_Typ)
+           and then Is_Private_Type (Etype (Priv_Typ))
+           and then Present (Full_Typ)
+           and then Is_Itype (Full_Typ);
+    end Is_Untagged_Private_Derivation;
+ 
+    ------------------------------
+    -- Is_Verifiable_DIC_Pragma --
+    ------------------------------
+ 
+    function Is_Verifiable_DIC_Pragma (Prag : Node_Id) return Boolean is
+       Args : constant List_Id := Pragma_Argument_Associations (Prag);
+ 
+    begin
+       --  To qualify as verifiable, a DIC pragma must have a non-null argument
+ 
+       return
+         Present (Args)
+           and then Nkind (Get_Pragma_Arg (First (Args))) /= N_Null;
+    end Is_Verifiable_DIC_Pragma;
+ 
     ---------------------------
     -- Is_Volatile_Reference --
     ---------------------------
*************** package body Exp_Util is
*** 7388,7393 ****
--- 8823,8833 ----
        if Present (N) then
           Remove_Warning_Messages (N);
  
+          --  Update the internal structures of the ABE mechanism in case the
+          --  dead node is an elaboration scenario.
+ 
+          Kill_Elaboration_Scenario (N);
+ 
           --  Generate warning if appropriate
  
           if W then
*************** package body Exp_Util is
*** 7531,7667 ****
        end if;
     end Known_Non_Negative;
  
-    --------------------
-    -- Known_Non_Null --
-    --------------------
- 
-    function Known_Non_Null (N : Node_Id) return Boolean is
-    begin
-       --  Checks for case where N is an entity reference
- 
-       if Is_Entity_Name (N) and then Present (Entity (N)) then
-          declare
-             E   : constant Entity_Id := Entity (N);
-             Op  : Node_Kind;
-             Val : Node_Id;
- 
-          begin
-             --  First check if we are in decisive conditional
- 
-             Get_Current_Value_Condition (N, Op, Val);
- 
-             if Known_Null (Val) then
-                if Op = N_Op_Eq then
-                   return False;
-                elsif Op = N_Op_Ne then
-                   return True;
-                end if;
-             end if;
- 
-             --  If OK to do replacement, test Is_Known_Non_Null flag
- 
-             if OK_To_Do_Constant_Replacement (E) then
-                return Is_Known_Non_Null (E);
- 
-             --  Otherwise if not safe to do replacement, then say so
- 
-             else
-                return False;
-             end if;
-          end;
- 
-       --  True if access attribute
- 
-       elsif Nkind (N) = N_Attribute_Reference
-         and then Nam_In (Attribute_Name (N), Name_Access,
-                                              Name_Unchecked_Access,
-                                              Name_Unrestricted_Access)
-       then
-          return True;
- 
-       --  True if allocator
- 
-       elsif Nkind (N) = N_Allocator then
-          return True;
- 
-       --  For a conversion, true if expression is known non-null
- 
-       elsif Nkind (N) = N_Type_Conversion then
-          return Known_Non_Null (Expression (N));
- 
-       --  Above are all cases where the value could be determined to be
-       --  non-null. In all other cases, we don't know, so return False.
- 
-       else
-          return False;
-       end if;
-    end Known_Non_Null;
- 
-    ----------------
-    -- Known_Null --
-    ----------------
- 
-    function Known_Null (N : Node_Id) return Boolean is
-    begin
-       --  Checks for case where N is an entity reference
- 
-       if Is_Entity_Name (N) and then Present (Entity (N)) then
-          declare
-             E   : constant Entity_Id := Entity (N);
-             Op  : Node_Kind;
-             Val : Node_Id;
- 
-          begin
-             --  Constant null value is for sure null
- 
-             if Ekind (E) = E_Constant
-               and then Known_Null (Constant_Value (E))
-             then
-                return True;
-             end if;
- 
-             --  First check if we are in decisive conditional
- 
-             Get_Current_Value_Condition (N, Op, Val);
- 
-             if Known_Null (Val) then
-                if Op = N_Op_Eq then
-                   return True;
-                elsif Op = N_Op_Ne then
-                   return False;
-                end if;
-             end if;
- 
-             --  If OK to do replacement, test Is_Known_Null flag
- 
-             if OK_To_Do_Constant_Replacement (E) then
-                return Is_Known_Null (E);
- 
-             --  Otherwise if not safe to do replacement, then say so
- 
-             else
-                return False;
-             end if;
-          end;
- 
-       --  True if explicit reference to null
- 
-       elsif Nkind (N) = N_Null then
-          return True;
- 
-       --  For a conversion, true if expression is known null
- 
-       elsif Nkind (N) = N_Type_Conversion then
-          return Known_Null (Expression (N));
- 
-       --  Above are all cases where the value could be determined to be null.
-       --  In all other cases, we don't know, so return False.
- 
-       else
-          return False;
-       end if;
-    end Known_Null;
- 
     -----------------------------
     -- Make_CW_Equivalent_Type --
     -----------------------------
--- 8971,8976 ----
*************** package body Exp_Util is
*** 7875,7917 ****
        Lo          : constant Node_Id :=
                        New_Copy_Tree (String_Literal_Low_Bound (Literal_Typ));
        Index       : constant Entity_Id := Etype (Lo);
- 
-       Hi          : Node_Id;
        Length_Expr : constant Node_Id :=
                        Make_Op_Subtract (Loc,
!                         Left_Opnd =>
                            Make_Integer_Literal (Loc,
                              Intval => String_Literal_Length (Literal_Typ)),
!                         Right_Opnd =>
!                           Make_Integer_Literal (Loc, 1));
  
     begin
        Set_Analyzed (Lo, False);
  
!          if Is_Integer_Type (Index) then
!             Hi :=
!               Make_Op_Add (Loc,
!                 Left_Opnd  => New_Copy_Tree (Lo),
!                 Right_Opnd => Length_Expr);
!          else
!             Hi :=
!               Make_Attribute_Reference (Loc,
!                 Attribute_Name => Name_Val,
!                 Prefix => New_Occurrence_Of (Index, Loc),
!                 Expressions => New_List (
!                  Make_Op_Add (Loc,
!                    Left_Opnd =>
!                      Make_Attribute_Reference (Loc,
!                        Attribute_Name => Name_Pos,
!                        Prefix => New_Occurrence_Of (Index, Loc),
!                        Expressions => New_List (New_Copy_Tree (Lo))),
!                   Right_Opnd => Length_Expr)));
!          end if;
  
!          return
!            Make_Range (Loc,
!              Low_Bound  => Lo,
!              High_Bound => Hi);
     end Make_Literal_Range;
  
     --------------------------
--- 9184,9225 ----
        Lo          : constant Node_Id :=
                        New_Copy_Tree (String_Literal_Low_Bound (Literal_Typ));
        Index       : constant Entity_Id := Etype (Lo);
        Length_Expr : constant Node_Id :=
                        Make_Op_Subtract (Loc,
!                         Left_Opnd  =>
                            Make_Integer_Literal (Loc,
                              Intval => String_Literal_Length (Literal_Typ)),
!                         Right_Opnd => Make_Integer_Literal (Loc, 1));
! 
!       Hi : Node_Id;
  
     begin
        Set_Analyzed (Lo, False);
  
!       if Is_Integer_Type (Index) then
!          Hi :=
!            Make_Op_Add (Loc,
!              Left_Opnd  => New_Copy_Tree (Lo),
!              Right_Opnd => Length_Expr);
!       else
!          Hi :=
!            Make_Attribute_Reference (Loc,
!              Attribute_Name => Name_Val,
!              Prefix         => New_Occurrence_Of (Index, Loc),
!              Expressions    => New_List (
!                Make_Op_Add (Loc,
!                  Left_Opnd  =>
!                    Make_Attribute_Reference (Loc,
!                      Attribute_Name => Name_Pos,
!                      Prefix         => New_Occurrence_Of (Index, Loc),
!                      Expressions    => New_List (New_Copy_Tree (Lo))),
!                  Right_Opnd => Length_Expr)));
!       end if;
  
!       return
!         Make_Range (Loc,
!           Low_Bound  => Lo,
!           High_Bound => Hi);
     end Make_Literal_Range;
  
     --------------------------
*************** package body Exp_Util is
*** 7948,7956 ****
     is
        Loc : constant Source_Ptr := Sloc (Expr);
  
        Call    : Node_Id;
        Func_Id : Entity_Id;
-       Mode    : Ghost_Mode_Type;
  
     begin
        pragma Assert (Present (Predicate_Function (Typ)));
--- 9256,9266 ----
     is
        Loc : constant Source_Ptr := Sloc (Expr);
  
+       Saved_GM : constant Ghost_Mode_Type := Ghost_Mode;
+       --  Save the Ghost mode to restore on exit
+ 
        Call    : Node_Id;
        Func_Id : Entity_Id;
  
     begin
        pragma Assert (Present (Predicate_Function (Typ)));
*************** package body Exp_Util is
*** 7958,7964 ****
        --  The related type may be subject to pragma Ghost. Set the mode now to
        --  ensure that the call is properly marked as Ghost.
  
!       Set_Ghost_Mode (Typ, Mode);
  
        --  Call special membership version if requested and available
  
--- 9268,9274 ----
        --  The related type may be subject to pragma Ghost. Set the mode now to
        --  ensure that the call is properly marked as Ghost.
  
!       Set_Ghost_Mode (Typ);
  
        --  Call special membership version if requested and available
  
*************** package body Exp_Util is
*** 7970,7981 ****
  
        --  Case of calling normal predicate function
  
!       Call :=
!         Make_Function_Call (Loc,
!           Name                   => New_Occurrence_Of (Func_Id, Loc),
!           Parameter_Associations => New_List (Relocate_Node (Expr)));
  
-       Restore_Ghost_Mode (Mode);
        return Call;
     end Make_Predicate_Call;
  
--- 9280,9304 ----
  
        --  Case of calling normal predicate function
  
!       --  If the type is tagged, the expression may be class-wide, in which
!       --  case it has to be converted to its root type, given that the
!       --  generated predicate function is not dispatching.
! 
!       if Is_Tagged_Type (Typ) then
!          Call :=
!            Make_Function_Call (Loc,
!              Name                   => New_Occurrence_Of (Func_Id, Loc),
!              Parameter_Associations =>
!                New_List (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_Mode (Saved_GM);
  
        return Call;
     end Make_Predicate_Call;
  
*************** package body Exp_Util is
*** 7987,8022 ****
       (Typ  : Entity_Id;
        Expr : Node_Id) return Node_Id
     is
!       procedure Replace_Subtype_Reference (N : Node_Id);
!       --  Replace current occurrences of the subtype to which a dynamic
!       --  predicate applies, by the expression that triggers a predicate
!       --  check. This is needed for aspect Predicate_Failure, for which
!       --  we do not generate a wrapper procedure, but simply modify the
!       --  expression for the pragma of the predicate check.
  
!       --------------------------------
!       --  Replace_Subtype_Reference --
!       --------------------------------
  
-       procedure Replace_Subtype_Reference (N : Node_Id) is
        begin
!          Rewrite (N, New_Copy_Tree (Expr));
  
!          --  We want to treat the node as if it comes from source, so
!          --  that ASIS will not ignore it.
  
!          Set_Comes_From_Source (N, True);
!       end Replace_Subtype_Reference;
  
!       procedure Replace_Subtype_References is
!         new Replace_Type_References_Generic (Replace_Subtype_Reference);
  
        --  Local variables
  
!       Loc       : constant Source_Ptr := Sloc (Expr);
!       Arg_List  : List_Id;
!       Fail_Expr : Node_Id;
!       Nam       : Name_Id;
  
     --  Start of processing for Make_Predicate_Check
  
--- 9310,9481 ----
       (Typ  : Entity_Id;
        Expr : Node_Id) return Node_Id
     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;
! 
!                Item := 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 No (Args) or else 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));
! 
!             --  We want to treat the node as if it comes from source, so that
!             --  ASIS will not ignore it.
! 
!             Set_Comes_From_Source (N, True);
!          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;
!       Nam  : Name_Id;
  
     --  Start of processing for Make_Predicate_Check
  
*************** package body Exp_Util is
*** 8047,8077 ****
           Nam := Name_Predicate;
        end if;
  
!       Arg_List := New_List (
          Make_Pragma_Argument_Association (Loc,
            Expression => Make_Identifier (Loc, Nam)),
          Make_Pragma_Argument_Association (Loc,
            Expression => Make_Predicate_Call (Typ, Expr)));
  
!       --  If subtype has Predicate_Failure defined, add the correponding
!       --  expression as an additional pragma parameter, after replacing
!       --  current instances with the expression being checked.
! 
!       if Has_Aspect (Typ, Aspect_Predicate_Failure) then
!          Fail_Expr :=
!            New_Copy_Tree
!              (Expression (Find_Aspect (Typ, Aspect_Predicate_Failure)));
!          Replace_Subtype_References (Fail_Expr, Typ);
  
!          Append_To (Arg_List,
!            Make_Pragma_Argument_Association (Loc,
!              Expression => Fail_Expr));
!       end if;
  
        return
          Make_Pragma (Loc,
            Chars                        => Name_Check,
!           Pragma_Argument_Associations => Arg_List);
     end Make_Predicate_Check;
  
     ----------------------------
--- 9506,9526 ----
           Nam := Name_Predicate;
        end if;
  
!       Args := New_List (
          Make_Pragma_Argument_Association (Loc,
            Expression => Make_Identifier (Loc, Nam)),
          Make_Pragma_Argument_Association (Loc,
            Expression => Make_Predicate_Call (Typ, Expr)));
  
!       --  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,
!           Pragma_Argument_Associations => Args);
     end Make_Predicate_Check;
  
     ----------------------------
*************** package body Exp_Util is
*** 8279,8284 ****
--- 9728,10340 ----
                Constraints => List_Constr));
     end Make_Subtype_From_Expr;
  
+    ---------------
+    -- Map_Types --
+    ---------------
+ 
+    procedure Map_Types (Parent_Type : Entity_Id; Derived_Type : Entity_Id) is
+ 
+       --  NOTE: Most of the routines in Map_Types are intentionally unnested to
+       --  avoid deep indentation of code.
+ 
+       --  NOTE: Routines which deal with discriminant mapping operate on the
+       --  [underlying/record] full view of various types because those views
+       --  contain all discriminants and stored constraints.
+ 
+       procedure Add_Primitive (Prim : Entity_Id; Par_Typ : Entity_Id);
+       --  Subsidiary to Map_Primitives. Find a primitive in the inheritance or
+       --  overriding chain starting from Prim whose dispatching type is parent
+       --  type Par_Typ and add a mapping between the result and primitive Prim.
+ 
+       function Ancestor_Primitive (Subp : Entity_Id) return Entity_Id;
+       --  Subsidiary to Map_Primitives. Return the next ancestor primitive in
+       --  the inheritance or overriding chain of subprogram Subp. Return Empty
+       --  if no such primitive is available.
+ 
+       function Build_Chain
+         (Par_Typ   : Entity_Id;
+          Deriv_Typ : Entity_Id) return Elist_Id;
+       --  Subsidiary to Map_Discriminants. Recreate the derivation chain from
+       --  parent type Par_Typ leading down towards derived type Deriv_Typ. The
+       --  list has the form:
+       --
+       --    head                                              tail
+       --    v                                                 v
+       --    <Ancestor_N> -> <Ancestor_N-1> -> <Ancestor_1> -> Deriv_Typ
+       --
+       --  Note that Par_Typ is not part of the resulting derivation chain
+ 
+       function Discriminated_View (Typ : Entity_Id) return Entity_Id;
+       --  Return the view of type Typ which could potentially contains either
+       --  the discriminants or stored constraints of the type.
+ 
+       function Find_Discriminant_Value
+         (Discr     : Entity_Id;
+          Par_Typ   : Entity_Id;
+          Deriv_Typ : Entity_Id;
+          Typ_Elmt  : Elmt_Id) return Node_Or_Entity_Id;
+       --  Subsidiary to Map_Discriminants. Find the value of discriminant Discr
+       --  in the derivation chain starting from parent type Par_Typ leading to
+       --  derived type Deriv_Typ. The returned value is one of the following:
+       --
+       --    * An entity which is either a discriminant or a non-discriminant
+       --      name, and renames/constraints Discr.
+       --
+       --    * An expression which constraints Discr
+       --
+       --  Typ_Elmt is an element of the derivation chain created by routine
+       --  Build_Chain and denotes the current ancestor being examined.
+ 
+       procedure Map_Discriminants
+         (Par_Typ   : Entity_Id;
+          Deriv_Typ : Entity_Id);
+       --  Map each discriminant of type Par_Typ to a meaningful constraint
+       --  from the point of view of type Deriv_Typ.
+ 
+       procedure Map_Primitives (Par_Typ : Entity_Id; Deriv_Typ : Entity_Id);
+       --  Map each primitive of type Par_Typ to a corresponding primitive of
+       --  type Deriv_Typ.
+ 
+       -------------------
+       -- Add_Primitive --
+       -------------------
+ 
+       procedure Add_Primitive (Prim : Entity_Id; Par_Typ : Entity_Id) is
+          Par_Prim : Entity_Id;
+ 
+       begin
+          --  Inspect the inheritance chain through the Alias attribute and the
+          --  overriding chain through the Overridden_Operation looking for an
+          --  ancestor primitive with the appropriate dispatching type.
+ 
+          Par_Prim := Prim;
+          while Present (Par_Prim) loop
+             exit when Find_Dispatching_Type (Par_Prim) = Par_Typ;
+             Par_Prim := Ancestor_Primitive (Par_Prim);
+          end loop;
+ 
+          --  Create a mapping of the form:
+ 
+          --    parent type primitive -> derived type primitive
+ 
+          if Present (Par_Prim) then
+             Type_Map.Set (Par_Prim, Prim);
+          end if;
+       end Add_Primitive;
+ 
+       ------------------------
+       -- Ancestor_Primitive --
+       ------------------------
+ 
+       function Ancestor_Primitive (Subp : Entity_Id) return Entity_Id is
+          Inher_Prim : constant Entity_Id := Alias (Subp);
+          Over_Prim  : constant Entity_Id := Overridden_Operation (Subp);
+ 
+       begin
+          --  The current subprogram overrides an ancestor primitive
+ 
+          if Present (Over_Prim) then
+             return Over_Prim;
+ 
+          --  The current subprogram is an internally generated alias of an
+          --  inherited ancestor primitive.
+ 
+          elsif Present (Inher_Prim) then
+             return Inher_Prim;
+ 
+          --  Otherwise the current subprogram is the root of the inheritance or
+          --  overriding chain.
+ 
+          else
+             return Empty;
+          end if;
+       end Ancestor_Primitive;
+ 
+       -----------------
+       -- Build_Chain --
+       -----------------
+ 
+       function Build_Chain
+         (Par_Typ   : Entity_Id;
+          Deriv_Typ : Entity_Id) return Elist_Id
+       is
+          Anc_Typ  : Entity_Id;
+          Chain    : Elist_Id;
+          Curr_Typ : Entity_Id;
+ 
+       begin
+          Chain := New_Elmt_List;
+ 
+          --  Add the derived type to the derivation chain
+ 
+          Prepend_Elmt (Deriv_Typ, Chain);
+ 
+          --  Examine all ancestors starting from the derived type climbing
+          --  towards parent type Par_Typ.
+ 
+          Curr_Typ := Deriv_Typ;
+          loop
+             --  Handle the case where the current type is a record which
+             --  derives from a subtype.
+ 
+             --    subtype Sub_Typ is Par_Typ ...
+             --    type Deriv_Typ is Sub_Typ ...
+ 
+             if Ekind (Curr_Typ) = E_Record_Type
+               and then Present (Parent_Subtype (Curr_Typ))
+             then
+                Anc_Typ := Parent_Subtype (Curr_Typ);
+ 
+             --  Handle the case where the current type is a record subtype of
+             --  another subtype.
+ 
+             --    subtype Sub_Typ1 is Par_Typ ...
+             --    subtype Sub_Typ2 is Sub_Typ1 ...
+ 
+             elsif Ekind (Curr_Typ) = E_Record_Subtype
+               and then Present (Cloned_Subtype (Curr_Typ))
+             then
+                Anc_Typ := Cloned_Subtype (Curr_Typ);
+ 
+             --  Otherwise use the direct parent type
+ 
+             else
+                Anc_Typ := Etype (Curr_Typ);
+             end if;
+ 
+             --  Use the first subtype when dealing with itypes
+ 
+             if Is_Itype (Anc_Typ) then
+                Anc_Typ := First_Subtype (Anc_Typ);
+             end if;
+ 
+             --  Work with the view which contains the discriminants and stored
+             --  constraints.
+ 
+             Anc_Typ := Discriminated_View (Anc_Typ);
+ 
+             --  Stop the climb when either the parent type has been reached or
+             --  there are no more ancestors left to examine.
+ 
+             exit when Anc_Typ = Curr_Typ or else Anc_Typ = Par_Typ;
+ 
+             Prepend_Unique_Elmt (Anc_Typ, Chain);
+             Curr_Typ := Anc_Typ;
+          end loop;
+ 
+          return Chain;
+       end Build_Chain;
+ 
+       ------------------------
+       -- Discriminated_View --
+       ------------------------
+ 
+       function Discriminated_View (Typ : Entity_Id) return Entity_Id is
+          T : Entity_Id;
+ 
+       begin
+          T := Typ;
+ 
+          --  Use the [underlying] full view when dealing with private types
+          --  because the view contains all inherited discriminants or stored
+          --  constraints.
+ 
+          if Is_Private_Type (T) then
+             if Present (Underlying_Full_View (T)) then
+                T := Underlying_Full_View (T);
+ 
+             elsif Present (Full_View (T)) then
+                T := Full_View (T);
+             end if;
+          end if;
+ 
+          --  Use the underlying record view when the type is an extenstion of
+          --  a parent type with unknown discriminants because the view contains
+          --  all inherited discriminants or stored constraints.
+ 
+          if Ekind (T) = E_Record_Type
+            and then Present (Underlying_Record_View (T))
+          then
+             T := Underlying_Record_View (T);
+          end if;
+ 
+          return T;
+       end Discriminated_View;
+ 
+       -----------------------------
+       -- Find_Discriminant_Value --
+       -----------------------------
+ 
+       function Find_Discriminant_Value
+         (Discr     : Entity_Id;
+          Par_Typ   : Entity_Id;
+          Deriv_Typ : Entity_Id;
+          Typ_Elmt  : Elmt_Id) return Node_Or_Entity_Id
+       is
+          Discr_Pos : constant Uint      := Discriminant_Number (Discr);
+          Typ       : constant Entity_Id := Node (Typ_Elmt);
+ 
+          function Find_Constraint_Value
+            (Constr : Node_Or_Entity_Id) return Node_Or_Entity_Id;
+          --  Given constraint Constr, find what it denotes. This is either:
+          --
+          --    * An entity which is either a discriminant or a name
+          --
+          --    * An expression
+ 
+          ---------------------------
+          -- Find_Constraint_Value --
+          ---------------------------
+ 
+          function Find_Constraint_Value
+            (Constr : Node_Or_Entity_Id) return Node_Or_Entity_Id
+          is
+          begin
+             if Nkind (Constr) in N_Entity then
+ 
+                --  The constraint denotes a discriminant of the curren type
+                --  which renames the ancestor discriminant:
+ 
+                --              vv
+                --    type Typ (D1 : ...; DN : ...) is
+                --      new Anc (Discr => D1) with ...
+                --                        ^^
+ 
+                if Ekind (Constr) = E_Discriminant then
+ 
+                   --  The discriminant belongs to derived type Deriv_Typ. This
+                   --  is the final value for the ancestor discriminant as the
+                   --  derivations chain has been fully exhausted.
+ 
+                   if Typ = Deriv_Typ then
+                      return Constr;
+ 
+                   --  Otherwise the discriminant may be renamed or constrained
+                   --  at a lower level. Continue looking down the derivation
+                   --  chain.
+ 
+                   else
+                      return
+                        Find_Discriminant_Value
+                          (Discr     => Constr,
+                           Par_Typ   => Par_Typ,
+                           Deriv_Typ => Deriv_Typ,
+                           Typ_Elmt  => Next_Elmt (Typ_Elmt));
+                   end if;
+ 
+                --  Otherwise the constraint denotes a reference to some name
+                --  which results in a Girder discriminant:
+ 
+                --    vvvv
+                --    Name : ...;
+                --    type Typ (D1 : ...; DN : ...) is
+                --      new Anc (Discr => Name) with ...
+                --                        ^^^^
+ 
+                --  Return the name as this is the proper constraint of the
+                --  discriminant.
+ 
+                else
+                   return Constr;
+                end if;
+ 
+             --  The constraint denotes a reference to a name
+ 
+             elsif Is_Entity_Name (Constr) then
+                return Find_Constraint_Value (Entity (Constr));
+ 
+             --  Otherwise the current constraint is an expression which yields
+             --  a Girder discriminant:
+ 
+             --    type Typ (D1 : ...; DN : ...) is
+             --      new Anc (Discr => <expression>) with ...
+             --                         ^^^^^^^^^^
+ 
+             --  Return the expression as this is the proper constraint of the
+             --  discriminant.
+ 
+             else
+                return Constr;
+             end if;
+          end Find_Constraint_Value;
+ 
+          --  Local variables
+ 
+          Constrs : constant Elist_Id := Stored_Constraint (Typ);
+ 
+          Constr_Elmt : Elmt_Id;
+          Pos         : Uint;
+          Typ_Discr   : Entity_Id;
+ 
+       --  Start of processing for Find_Discriminant_Value
+ 
+       begin
+          --  The algorithm for finding the value of a discriminant works as
+          --  follows. First, it recreates the derivation chain from Par_Typ
+          --  to Deriv_Typ as a list:
+ 
+          --     Par_Typ      (shown for completeness)
+          --        v
+          --    Ancestor_N  <-- head of chain
+          --        v
+          --    Ancestor_1
+          --        v
+          --    Deriv_Typ   <--  tail of chain
+ 
+          --  The algorithm then traces the fate of a parent discriminant down
+          --  the derivation chain. At each derivation level, the discriminant
+          --  may be either inherited or constrained.
+ 
+          --    1) Discriminant is inherited: there are two cases, depending on
+          --    which type is inheriting.
+ 
+          --    1.1) Deriv_Typ is inheriting:
+ 
+          --      type Ancestor (D_1 : ...) is tagged ...
+          --      type Deriv_Typ is new Ancestor ...
+ 
+          --    In this case the inherited discriminant is the final value of
+          --    the parent discriminant because the end of the derivation chain
+          --    has been reached.
+ 
+          --    1.2) Some other type is inheriting:
+ 
+          --      type Ancestor_1 (D_1 : ...) is tagged ...
+          --      type Ancestor_2 is new Ancestor_1 ...
+ 
+          --    In this case the algorithm continues to trace the fate of the
+          --    inherited discriminant down the derivation chain because it may
+          --    be further inherited or constrained.
+ 
+          --    2) Discriminant is constrained: there are three cases, depending
+          --    on what the constraint is.
+ 
+          --    2.1) The constraint is another discriminant (aka renaming):
+ 
+          --      type Ancestor_1 (D_1 : ...) is tagged ...
+          --      type Ancestor_2 (D_2 : ...) is new Ancestor_1 (D_1 => D_2) ...
+ 
+          --    In this case the constraining discriminant becomes the one to
+          --    track down the derivation chain. The algorithm already knows
+          --    that D_2 constrains D_1, therefore if the algorithm finds the
+          --    value of D_2, then this would also be the value for D_1.
+ 
+          --    2.2) The constraint is a name (aka Girder):
+ 
+          --      Name : ...
+          --      type Ancestor_1 (D_1 : ...) is tagged ...
+          --      type Ancestor_2 is new Ancestor_1 (D_1 => Name) ...
+ 
+          --    In this case the name is the final value of D_1 because the
+          --    discriminant cannot be further constrained.
+ 
+          --    2.3) The constraint is an expression (aka Girder):
+ 
+          --      type Ancestor_1 (D_1 : ...) is tagged ...
+          --      type Ancestor_2 is new Ancestor_1 (D_1 => 1 + 2) ...
+ 
+          --    Similar to 2.2, the expression is the final value of D_1
+ 
+          Pos := Uint_1;
+ 
+          --  When a derived type constrains its parent type, all constaints
+          --  appear in the Stored_Constraint list. Examine the list looking
+          --  for a positional match.
+ 
+          if Present (Constrs) then
+             Constr_Elmt := First_Elmt (Constrs);
+             while Present (Constr_Elmt) loop
+ 
+                --  The position of the current constraint matches that of the
+                --  ancestor discriminant.
+ 
+                if Pos = Discr_Pos then
+                   return Find_Constraint_Value (Node (Constr_Elmt));
+                end if;
+ 
+                Next_Elmt (Constr_Elmt);
+                Pos := Pos + 1;
+             end loop;
+ 
+          --  Otherwise the derived type does not constraint its parent type in
+          --  which case it inherits the parent discriminants.
+ 
+          else
+             Typ_Discr := First_Discriminant (Typ);
+             while Present (Typ_Discr) loop
+ 
+                --  The position of the current discriminant matches that of the
+                --  ancestor discriminant.
+ 
+                if Pos = Discr_Pos then
+                   return Find_Constraint_Value (Typ_Discr);
+                end if;
+ 
+                Next_Discriminant (Typ_Discr);
+                Pos := Pos + 1;
+             end loop;
+          end if;
+ 
+          --  A discriminant must always have a corresponding value. This is
+          --  either another discriminant, a name, or an expression. If this
+          --  point is reached, them most likely the derivation chain employs
+          --  the wrong views of types.
+ 
+          pragma Assert (False);
+ 
+          return Empty;
+       end Find_Discriminant_Value;
+ 
+       -----------------------
+       -- Map_Discriminants --
+       -----------------------
+ 
+       procedure Map_Discriminants
+         (Par_Typ   : Entity_Id;
+          Deriv_Typ : Entity_Id)
+       is
+          Deriv_Chain : constant Elist_Id := Build_Chain (Par_Typ, Deriv_Typ);
+ 
+          Discr     : Entity_Id;
+          Discr_Val : Node_Or_Entity_Id;
+ 
+       begin
+          --  Examine each discriminant of parent type Par_Typ and find a
+          --  suitable value for it from the point of view of derived type
+          --  Deriv_Typ.
+ 
+          if Has_Discriminants (Par_Typ) then
+             Discr := First_Discriminant (Par_Typ);
+             while Present (Discr) loop
+                Discr_Val :=
+                  Find_Discriminant_Value
+                    (Discr     => Discr,
+                     Par_Typ   => Par_Typ,
+                     Deriv_Typ => Deriv_Typ,
+                     Typ_Elmt  => First_Elmt (Deriv_Chain));
+ 
+                --  Create a mapping of the form:
+ 
+                --    parent type discriminant -> value
+ 
+                Type_Map.Set (Discr, Discr_Val);
+ 
+                Next_Discriminant (Discr);
+             end loop;
+          end if;
+       end Map_Discriminants;
+ 
+       --------------------
+       -- Map_Primitives --
+       --------------------
+ 
+       procedure Map_Primitives (Par_Typ : Entity_Id; Deriv_Typ : Entity_Id) is
+          Deriv_Prim : Entity_Id;
+          Par_Prim   : Entity_Id;
+          Par_Prims  : Elist_Id;
+          Prim_Elmt  : Elmt_Id;
+ 
+       begin
+          --  Inspect the primitives of the derived type and determine whether
+          --  they relate to the primitives of the parent type. If there is a
+          --  meaningful relation, create a mapping of the form:
+ 
+          --    parent type primitive -> perived type primitive
+ 
+          if Present (Direct_Primitive_Operations (Deriv_Typ)) then
+             Prim_Elmt := First_Elmt (Direct_Primitive_Operations (Deriv_Typ));
+             while Present (Prim_Elmt) loop
+                Deriv_Prim := Node (Prim_Elmt);
+ 
+                if Is_Subprogram (Deriv_Prim)
+                  and then Find_Dispatching_Type (Deriv_Prim) = Deriv_Typ
+                then
+                   Add_Primitive (Deriv_Prim, Par_Typ);
+                end if;
+ 
+                Next_Elmt (Prim_Elmt);
+             end loop;
+          end if;
+ 
+          --  If the parent operation is an interface operation, the overriding
+          --  indicator is not present. Instead, we get from the interface
+          --  operation the primitive of the current type that implements it.
+ 
+          if Is_Interface (Par_Typ) then
+             Par_Prims := Collect_Primitive_Operations (Par_Typ);
+ 
+             if Present (Par_Prims) then
+                Prim_Elmt := First_Elmt (Par_Prims);
+ 
+                while Present (Prim_Elmt) loop
+                   Par_Prim   := Node (Prim_Elmt);
+                   Deriv_Prim :=
+                     Find_Primitive_Covering_Interface (Deriv_Typ, Par_Prim);
+ 
+                   if Present (Deriv_Prim) then
+                      Type_Map.Set (Par_Prim, Deriv_Prim);
+                   end if;
+ 
+                   Next_Elmt (Prim_Elmt);
+                end loop;
+             end if;
+          end if;
+       end Map_Primitives;
+ 
+    --  Start of processing for Map_Types
+ 
+    begin
+       --  Nothing to do if there are no types to work with
+ 
+       if No (Parent_Type) or else No (Derived_Type) then
+          return;
+ 
+       --  Nothing to do if the mapping already exists
+ 
+       elsif Type_Map.Get (Parent_Type) = Derived_Type then
+          return;
+ 
+       --  Nothing to do if both types are not tagged. Note that untagged types
+       --  do not have primitive operations and their discriminants are already
+       --  handled by gigi.
+ 
+       elsif not Is_Tagged_Type (Parent_Type)
+         or else not Is_Tagged_Type (Derived_Type)
+       then
+          return;
+       end if;
+ 
+       --  Create a mapping of the form
+ 
+       --    parent type -> derived type
+ 
+       --  to prevent any subsequent attempts to produce the same relations
+ 
+       Type_Map.Set (Parent_Type, Derived_Type);
+ 
+       --  Create mappings of the form
+ 
+       --    parent type discriminant -> derived type discriminant
+       --      <or>
+       --    parent type discriminant -> constraint
+ 
+       --  Note that mapping of discriminants breaks privacy because it needs to
+       --  work with those views which contains the discriminants and any stored
+       --  constraints.
+ 
+       Map_Discriminants
+         (Par_Typ   => Discriminated_View (Parent_Type),
+          Deriv_Typ => Discriminated_View (Derived_Type));
+ 
+       --  Create mappings of the form
+ 
+       --    parent type primitive -> derived type primitive
+ 
+       Map_Primitives
+         (Par_Typ   => Parent_Type,
+          Deriv_Typ => Derived_Type);
+    end Map_Types;
+ 
     ----------------------------
     -- Matching_Standard_Type --
     ----------------------------
*************** package body Exp_Util is
*** 8374,8421 ****
     -- Needs_Finalization --
     ------------------------
  
!    function Needs_Finalization (T : Entity_Id) return Boolean is
!       function Has_Some_Controlled_Component (Rec : Entity_Id) return Boolean;
!       --  If type is not frozen yet, check explicitly among its components,
!       --  because the Has_Controlled_Component flag is not necessarily set.
  
        -----------------------------------
        -- Has_Some_Controlled_Component --
        -----------------------------------
  
        function Has_Some_Controlled_Component
!         (Rec : Entity_Id) return Boolean
        is
           Comp : Entity_Id;
  
        begin
!          if Has_Controlled_Component (Rec) then
              return True;
  
!          elsif not Is_Frozen (Rec) then
!             if Is_Record_Type (Rec) then
!                Comp := First_Entity (Rec);
  
                 while Present (Comp) loop
!                   if not Is_Type (Comp)
!                     and then Needs_Finalization (Etype (Comp))
!                   then
                       return True;
                    end if;
  
!                   Next_Entity (Comp);
                 end loop;
- 
-                return False;
- 
-             else
-                return
-                  Is_Array_Type (Rec)
-                    and then Needs_Finalization (Component_Type (Rec));
              end if;
-          else
-             return False;
           end if;
        end Has_Some_Controlled_Component;
  
     --  Start of processing for Needs_Finalization
--- 10430,10477 ----
     -- Needs_Finalization --
     ------------------------
  
!    function Needs_Finalization (Typ : Entity_Id) return Boolean is
!       function Has_Some_Controlled_Component
!         (Input_Typ : Entity_Id) return Boolean;
!       --  Determine whether type Input_Typ has at least one controlled
!       --  component.
  
        -----------------------------------
        -- Has_Some_Controlled_Component --
        -----------------------------------
  
        function Has_Some_Controlled_Component
!         (Input_Typ : Entity_Id) return Boolean
        is
           Comp : Entity_Id;
  
        begin
!          --  When a type is already frozen and has at least one controlled
!          --  component, or is manually decorated, it is sufficient to inspect
!          --  flag Has_Controlled_Component.
! 
!          if Has_Controlled_Component (Input_Typ) then
              return True;
  
!          --  Otherwise inspect the internals of the type
! 
!          elsif not Is_Frozen (Input_Typ) then
!             if Is_Array_Type (Input_Typ) then
!                return Needs_Finalization (Component_Type (Input_Typ));
  
+             elsif Is_Record_Type (Input_Typ) then
+                Comp := First_Component (Input_Typ);
                 while Present (Comp) loop
!                   if Needs_Finalization (Etype (Comp)) then
                       return True;
                    end if;
  
!                   Next_Component (Comp);
                 end loop;
              end if;
           end if;
+ 
+          return False;
        end Has_Some_Controlled_Component;
  
     --  Start of processing for Needs_Finalization
*************** package body Exp_Util is
*** 8427,8457 ****
        if Restriction_Active (No_Finalization) then
           return False;
  
!       --  C++ types are not considered controlled. It is assumed that the
!       --  non-Ada side will handle their clean up.
  
!       elsif Convention (T) = Convention_CPP then
           return False;
  
!       --  Never needs finalization if Disable_Controlled set
  
!       elsif Disable_Controlled (T) then
!          return False;
  
!       elsif Is_Class_Wide_Type (T) and then Disable_Controlled (Etype (T)) then
!          return False;
  
!       else
!          --  Class-wide types are treated as controlled because derivations
!          --  from the root type can introduce controlled components.
  
!          return Is_Class_Wide_Type (T)
!              or else Is_Controlled (T)
!              or else Has_Some_Controlled_Component (T)
!              or else
!                (Is_Concurrent_Type (T)
!                  and then Present (Corresponding_Record_Type (T))
!                  and then Needs_Finalization (Corresponding_Record_Type (T)));
        end if;
     end Needs_Finalization;
  
--- 10483,10516 ----
        if Restriction_Active (No_Finalization) then
           return False;
  
!       --  C++ types are not considered controlled. It is assumed that the non-
!       --  Ada side will handle their clean up.
  
!       elsif Convention (Typ) = Convention_CPP then
           return False;
  
!       --  Class-wide types are treated as controlled because derivations from
!       --  the root type may introduce controlled components.
  
!       elsif Is_Class_Wide_Type (Typ) then
!          return True;
  
!       --  Concurrent types are controlled as long as their corresponding record
!       --  is controlled.
  
!       elsif Is_Concurrent_Type (Typ)
!         and then Present (Corresponding_Record_Type (Typ))
!         and then Needs_Finalization (Corresponding_Record_Type (Typ))
!       then
!          return True;
  
!       --  Otherwise the type is controlled when it is either derived from type
!       --  [Limited_]Controlled and not subject to aspect Disable_Controlled, or
!       --  contains at least one controlled component.
! 
!       else
!          return
!            Is_Controlled (Typ) or else Has_Some_Controlled_Component (Typ);
        end if;
     end Needs_Finalization;
  
*************** package body Exp_Util is
*** 8464,8470 ****
        Typ  : Entity_Id) return Boolean
     is
     begin
- 
        --  If we have no initialization of any kind, then we don't need to place
        --  any restrictions on the address clause, because the object will be
        --  elaborated after the address clause is evaluated. This happens if the
--- 10523,10528 ----
*************** package body Exp_Util is
*** 8808,8814 ****
                and then not Is_Empty_List (Then_Statements (N))
                and then not Are_Wrapped (Then_Statements (N))
                and then Requires_Cleanup_Actions
!                          (Then_Statements (N), False, False)
              then
                 Block := Wrap_Statements_In_Block (Then_Statements (N));
                 Set_Then_Statements (N, New_List (Block));
--- 10866,10874 ----
                and then not Is_Empty_List (Then_Statements (N))
                and then not Are_Wrapped (Then_Statements (N))
                and then Requires_Cleanup_Actions
!                          (L                 => Then_Statements (N),
!                           Lib_Level         => False,
!                           Nested_Constructs => False)
              then
                 Block := Wrap_Statements_In_Block (Then_Statements (N));
                 Set_Then_Statements (N, New_List (Block));
*************** package body Exp_Util is
*** 8825,8831 ****
                and then not Is_Empty_List (Else_Statements (N))
                and then not Are_Wrapped (Else_Statements (N))
                and then Requires_Cleanup_Actions
!                          (Else_Statements (N), False, False)
              then
                 Block := Wrap_Statements_In_Block (Else_Statements (N));
                 Set_Else_Statements (N, New_List (Block));
--- 10885,10893 ----
                and then not Is_Empty_List (Else_Statements (N))
                and then not Are_Wrapped (Else_Statements (N))
                and then Requires_Cleanup_Actions
!                          (L                 => Else_Statements (N),
!                           Lib_Level         => False,
!                           Nested_Constructs => False)
              then
                 Block := Wrap_Statements_In_Block (Else_Statements (N));
                 Set_Else_Statements (N, New_List (Block));
*************** package body Exp_Util is
*** 8844,8850 ****
           =>
              if not Is_Empty_List (Statements (N))
                and then not Are_Wrapped (Statements (N))
!               and then Requires_Cleanup_Actions (Statements (N), False, False)
              then
                 if Nkind (N) = N_Loop_Statement
                   and then Present (Identifier (N))
--- 10906,10915 ----
           =>
              if not Is_Empty_List (Statements (N))
                and then not Are_Wrapped (Statements (N))
!               and then Requires_Cleanup_Actions
!                          (L                 => Statements (N),
!                           Lib_Level         => False,
!                           Nested_Constructs => False)
              then
                 if Nkind (N) = N_Loop_Statement
                   and then Present (Identifier (N))
*************** package body Exp_Util is
*** 8861,8868 ****
                 Analyze (Block);
              end if;
  
!          when others =>
              null;
        end case;
     end Process_Statements_For_Controlled_Objects;
  
--- 10926,10942 ----
                 Analyze (Block);
              end if;
  
!          --  Could be e.g. a loop that was transformed into a block or null
!          --  statement. Do nothing for terminate alternatives.
! 
!          when N_Block_Statement
!             | N_Null_Statement
!             | N_Terminate_Alternative
!          =>
              null;
+ 
+          when others =>
+             raise Program_Error;
        end case;
     end Process_Statements_For_Controlled_Objects;
  
*************** package body Exp_Util is
*** 9013,9019 ****
           Related_Nod : Node_Id := Empty) return Entity_Id;
        --  Create an external symbol of the form xxx_FIRST/_LAST if Related_Nod
        --  is present (xxx is taken from the Chars field of Related_Nod),
!       --  otherwise it generates an internal temporary.
  
        ---------------------
        -- Build_Temporary --
--- 11087,11094 ----
           Related_Nod : Node_Id := Empty) return Entity_Id;
        --  Create an external symbol of the form xxx_FIRST/_LAST if Related_Nod
        --  is present (xxx is taken from the Chars field of Related_Nod),
!       --  otherwise it generates an internal temporary. The created temporary
!       --  entity is marked as internal.
  
        ---------------------
        -- Build_Temporary --
*************** package body Exp_Util is
*** 9024,9029 ****
--- 11099,11105 ----
           Id          : Character;
           Related_Nod : Node_Id := Empty) return Entity_Id
        is
+          Temp_Id  : Entity_Id;
           Temp_Nam : Name_Id;
  
        begin
*************** package body Exp_Util is
*** 9036,9048 ****
                 Temp_Nam := New_External_Name (Chars (Related_Id), "_LAST");
              end if;
  
!             return Make_Defining_Identifier (Loc, Temp_Nam);
  
           --  Otherwise generate an internal temporary
  
           else
!             return Make_Temporary (Loc, Id, Related_Nod);
           end if;
        end Build_Temporary;
  
        --  Local variables
--- 11112,11128 ----
                 Temp_Nam := New_External_Name (Chars (Related_Id), "_LAST");
              end if;
  
!             Temp_Id := Make_Defining_Identifier (Loc, Temp_Nam);
  
           --  Otherwise generate an internal temporary
  
           else
!             Temp_Id := Make_Temporary (Loc, Id, Related_Nod);
           end if;
+ 
+          Set_Is_Internal (Temp_Id);
+ 
+          return Temp_Id;
        end Build_Temporary;
  
        --  Local variables
*************** package body Exp_Util is
*** 9094,9099 ****
--- 11174,11189 ----
          and then Side_Effect_Free (Exp, Name_Req, Variable_Ref)
        then
           return;
+ 
+       --  Generating C code we cannot remove side effect of function returning
+       --  class-wide types since there is no secondary stack (required to use
+       --  'reference).
+ 
+       elsif Modify_Tree_For_C
+         and then Nkind (Exp) = N_Function_Call
+         and then Is_Class_Wide_Type (Etype (Exp))
+       then
+          return;
        end if;
  
        --  The remaining processing is done with all checks suppressed
*************** package body Exp_Util is
*** 9103,9113 ****
  
        Scope_Suppress.Suppress := (others => True);
  
!       --  If this is an elementary or a small not by-reference record type, and
        --  we need to capture the value, just make a constant; this is cheap and
        --  objects of both kinds of types can be bit aligned, so it might not be
        --  possible to generate a reference to them. Likewise if this is not a
!       --  name reference, except for a type conversion because we would enter
        --  an infinite recursion with Checks.Apply_Predicate_Check if the target
        --  type has predicates (and type conversions need a specific treatment
        --  anyway, see below). Also do it if we have a volatile reference and
--- 11193,11203 ----
  
        Scope_Suppress.Suppress := (others => True);
  
!       --  If this is an elementary or a small not-by-reference record type, and
        --  we need to capture the value, just make a constant; this is cheap and
        --  objects of both kinds of types can be bit aligned, so it might not be
        --  possible to generate a reference to them. Likewise if this is not a
!       --  name reference, except for a type conversion, because we would enter
        --  an infinite recursion with Checks.Apply_Predicate_Check if the target
        --  type has predicates (and type conversions need a specific treatment
        --  anyway, see below). Also do it if we have a volatile reference and
*************** package body Exp_Util is
*** 9293,9299 ****
           --  Exp_Ch2.Expand_Renaming). Otherwise the temporary must be
           --  elaborated by gigi, and is of course not to be replaced in-line
           --  by the expression it renames, which would defeat the purpose of
!          --  removing the side-effect.
  
           if Nkind_In (Exp, N_Selected_Component, N_Indexed_Component)
             and then Has_Non_Standard_Rep (Etype (Prefix (Exp)))
--- 11383,11389 ----
           --  Exp_Ch2.Expand_Renaming). Otherwise the temporary must be
           --  elaborated by gigi, and is of course not to be replaced in-line
           --  by the expression it renames, which would defeat the purpose of
!          --  removing the side effect.
  
           if Nkind_In (Exp, N_Selected_Component, N_Indexed_Component)
             and then Has_Non_Standard_Rep (Etype (Prefix (Exp)))
*************** package body Exp_Util is
*** 9511,9516 ****
--- 11601,11964 ----
        Scope_Suppress := Svg_Suppress;
     end Remove_Side_Effects;
  
+    ------------------------
+    -- Replace_References --
+    ------------------------
+ 
+    procedure Replace_References
+      (Expr      : Node_Id;
+       Par_Typ   : Entity_Id;
+       Deriv_Typ : Entity_Id;
+       Par_Obj   : Entity_Id := Empty;
+       Deriv_Obj : Entity_Id := Empty)
+    is
+       function Is_Deriv_Obj_Ref (Ref : Node_Id) return Boolean;
+       --  Determine whether node Ref denotes some component of Deriv_Obj
+ 
+       function Replace_Ref (Ref : Node_Id) return Traverse_Result;
+       --  Substitute a reference to an entity with the corresponding value
+       --  stored in table Type_Map.
+ 
+       function Type_Of_Formal
+         (Call   : Node_Id;
+          Actual : Node_Id) return Entity_Id;
+       --  Find the type of the formal parameter which corresponds to actual
+       --  parameter Actual in subprogram call Call.
+ 
+       ----------------------
+       -- Is_Deriv_Obj_Ref --
+       ----------------------
+ 
+       function Is_Deriv_Obj_Ref (Ref : Node_Id) return Boolean is
+          Par : constant Node_Id := Parent (Ref);
+ 
+       begin
+          --  Detect the folowing selected component form:
+ 
+          --    Deriv_Obj.(something)
+ 
+          return
+            Nkind (Par) = N_Selected_Component
+              and then Is_Entity_Name (Prefix (Par))
+              and then Entity (Prefix (Par)) = Deriv_Obj;
+       end Is_Deriv_Obj_Ref;
+ 
+       -----------------
+       -- Replace_Ref --
+       -----------------
+ 
+       function Replace_Ref (Ref : Node_Id) return Traverse_Result is
+          procedure Remove_Controlling_Arguments (From_Arg : Node_Id);
+          --  Reset the Controlling_Argument of all function calls that
+          --  encapsulate node From_Arg.
+ 
+          ----------------------------------
+          -- Remove_Controlling_Arguments --
+          ----------------------------------
+ 
+          procedure Remove_Controlling_Arguments (From_Arg : Node_Id) is
+             Par : Node_Id;
+ 
+          begin
+             Par := From_Arg;
+             while Present (Par) loop
+                if Nkind (Par) = N_Function_Call
+                  and then Present (Controlling_Argument (Par))
+                then
+                   Set_Controlling_Argument (Par, Empty);
+ 
+                --  Prevent the search from going too far
+ 
+                elsif Is_Body_Or_Package_Declaration (Par) then
+                   exit;
+                end if;
+ 
+                Par := Parent (Par);
+             end loop;
+          end Remove_Controlling_Arguments;
+ 
+          --  Local variables
+ 
+          Context : constant Node_Id    := Parent (Ref);
+          Loc     : constant Source_Ptr := Sloc (Ref);
+          Ref_Id  : Entity_Id;
+          Result  : Traverse_Result;
+ 
+          New_Ref : Node_Id;
+          --  The new reference which is intended to substitute the old one
+ 
+          Old_Ref : Node_Id;
+          --  The reference designated for replacement. In certain cases this
+          --  may be a node other than Ref.
+ 
+          Val : Node_Or_Entity_Id;
+          --  The corresponding value of Ref from the type map
+ 
+       --  Start of processing for Replace_Ref
+ 
+       begin
+          --  Assume that the input reference is to be replaced and that the
+          --  traversal should examine the children of the reference.
+ 
+          Old_Ref := Ref;
+          Result  := OK;
+ 
+          --  The input denotes a meaningful reference
+ 
+          if Nkind (Ref) in N_Has_Entity and then Present (Entity (Ref)) then
+             Ref_Id := Entity (Ref);
+             Val    := Type_Map.Get (Ref_Id);
+ 
+             --  The reference has a corresponding value in the type map, a
+             --  substitution is possible.
+ 
+             if Present (Val) then
+ 
+                --  The reference denotes a discriminant
+ 
+                if Ekind (Ref_Id) = E_Discriminant then
+                   if Nkind (Val) in N_Entity then
+ 
+                      --  The value denotes another discriminant. Replace as
+                      --  follows:
+ 
+                      --    _object.Discr -> _object.Val
+ 
+                      if Ekind (Val) = E_Discriminant then
+                         New_Ref := New_Occurrence_Of (Val, Loc);
+ 
+                      --  Otherwise the value denotes the entity of a name which
+                      --  constraints the discriminant. Replace as follows:
+ 
+                      --    _object.Discr -> Val
+ 
+                      else
+                         pragma Assert (Is_Deriv_Obj_Ref (Old_Ref));
+ 
+                         New_Ref := New_Occurrence_Of (Val, Loc);
+                         Old_Ref := Parent (Old_Ref);
+                      end if;
+ 
+                   --  Otherwise the value denotes an arbitrary expression which
+                   --  constraints the discriminant. Replace as follows:
+ 
+                   --    _object.Discr -> Val
+ 
+                   else
+                      pragma Assert (Is_Deriv_Obj_Ref (Old_Ref));
+ 
+                      New_Ref := New_Copy_Tree (Val);
+                      Old_Ref := Parent (Old_Ref);
+                   end if;
+ 
+                --  Otherwise the reference denotes a primitive. Replace as
+                --  follows:
+ 
+                --    Primitive -> Val
+ 
+                else
+                   pragma Assert (Nkind (Val) in N_Entity);
+                   New_Ref := New_Occurrence_Of (Val, Loc);
+                end if;
+ 
+             --  The reference mentions the _object parameter of the parent
+             --  type's DIC or type invariant procedure. Replace as follows:
+ 
+             --    _object -> _object
+ 
+             elsif Present (Par_Obj)
+               and then Present (Deriv_Obj)
+               and then Ref_Id = Par_Obj
+             then
+                New_Ref := New_Occurrence_Of (Deriv_Obj, Loc);
+ 
+                --  The type of the _object parameter is class-wide when the
+                --  expression comes from an assertion pragma that applies to
+                --  an abstract parent type or an interface. The class-wide type
+                --  facilitates the preanalysis of the expression by treating
+                --  calls to abstract primitives that mention the current
+                --  instance of the type as dispatching. Once the calls are
+                --  remapped to invoke overriding or inherited primitives, the
+                --  calls no longer need to be dispatching. Examine all function
+                --  calls that encapsulate the _object parameter and reset their
+                --  Controlling_Argument attribute.
+ 
+                if Is_Class_Wide_Type (Etype (Par_Obj))
+                  and then Is_Abstract_Type (Root_Type (Etype (Par_Obj)))
+                then
+                   Remove_Controlling_Arguments (Old_Ref);
+                end if;
+ 
+                --  The reference to _object acts as an actual parameter in a
+                --  subprogram call which may be invoking a primitive of the
+                --  parent type:
+ 
+                --    Primitive (... _object ...);
+ 
+                --  The parent type primitive may not be overridden nor
+                --  inherited when it is declared after the derived type
+                --  definition:
+ 
+                --    type Parent is tagged private;
+                --    type Child is new Parent with private;
+                --    procedure Primitive (Obj : Parent);
+ 
+                --  In this scenario the _object parameter is converted to the
+                --  parent type. Due to complications with partial/full views
+                --  and view swaps, the parent type is taken from the formal
+                --  parameter of the subprogram being called.
+ 
+                if Nkind_In (Context, N_Function_Call,
+                                      N_Procedure_Call_Statement)
+                  and then No (Type_Map.Get (Entity (Name (Context))))
+                then
+                   New_Ref :=
+                     Convert_To (Type_Of_Formal (Context, Old_Ref), New_Ref);
+ 
+                   --  Do not process the generated type conversion because
+                   --  both the parent type and the derived type are in the
+                   --  Type_Map table. This will clobber the type conversion
+                   --  by resetting its subtype mark.
+ 
+                   Result := Skip;
+                end if;
+ 
+             --  Otherwise there is nothing to replace
+ 
+             else
+                New_Ref := Empty;
+             end if;
+ 
+             if Present (New_Ref) then
+                Rewrite (Old_Ref, New_Ref);
+ 
+                --  Update the return type when the context of the reference
+                --  acts as the name of a function call. Note that the update
+                --  should not be performed when the reference appears as an
+                --  actual in the call.
+ 
+                if Nkind (Context) = N_Function_Call
+                  and then Name (Context) = Old_Ref
+                then
+                   Set_Etype (Context, Etype (Val));
+                end if;
+             end if;
+          end if;
+ 
+          --  Reanalyze the reference due to potential replacements
+ 
+          if Nkind (Old_Ref) in N_Has_Etype then
+             Set_Analyzed (Old_Ref, False);
+          end if;
+ 
+          return Result;
+       end Replace_Ref;
+ 
+       procedure Replace_Refs is new Traverse_Proc (Replace_Ref);
+ 
+       --------------------
+       -- Type_Of_Formal --
+       --------------------
+ 
+       function Type_Of_Formal
+         (Call   : Node_Id;
+          Actual : Node_Id) return Entity_Id
+       is
+          A : Node_Id;
+          F : Entity_Id;
+ 
+       begin
+          --  Examine the list of actual and formal parameters in parallel
+ 
+          A := First (Parameter_Associations (Call));
+          F := First_Formal (Entity (Name (Call)));
+          while Present (A) and then Present (F) loop
+             if A = Actual then
+                return Etype (F);
+             end if;
+ 
+             Next (A);
+             Next_Formal (F);
+          end loop;
+ 
+          --  The actual parameter must always have a corresponding formal
+ 
+          pragma Assert (False);
+ 
+          return Empty;
+       end Type_Of_Formal;
+ 
+    --  Start of processing for Replace_References
+ 
+    begin
+       --  Map the attributes of the parent type to the proper corresponding
+       --  attributes of the derived type.
+ 
+       Map_Types
+         (Parent_Type  => Par_Typ,
+          Derived_Type => Deriv_Typ);
+ 
+       --  Inspect the input expression and perform substitutions where
+       --  necessary.
+ 
+       Replace_Refs (Expr);
+    end Replace_References;
+ 
+    -----------------------------
+    -- Replace_Type_References --
+    -----------------------------
+ 
+    procedure Replace_Type_References
+      (Expr   : Node_Id;
+       Typ    : Entity_Id;
+       Obj_Id : Entity_Id)
+    is
+       procedure Replace_Type_Ref (N : Node_Id);
+       --  Substitute a single reference of the current instance of type Typ
+       --  with a reference to Obj_Id.
+ 
+       ----------------------
+       -- Replace_Type_Ref --
+       ----------------------
+ 
+       procedure Replace_Type_Ref (N : Node_Id) is
+       begin
+          --  Decorate the reference to Typ even though it may be rewritten
+          --  further down. This is done for two reasons:
+ 
+          --    * ASIS has all necessary semantic information in the original
+          --      tree.
+ 
+          --    * Routines which examine properties of the Original_Node have
+          --      some semantic information.
+ 
+          if Nkind (N) = N_Identifier then
+             Set_Entity (N, Typ);
+             Set_Etype  (N, Typ);
+ 
+          elsif Nkind (N) = N_Selected_Component then
+             Analyze (Prefix (N));
+             Set_Entity (Selector_Name (N), Typ);
+             Set_Etype  (Selector_Name (N), Typ);
+          end if;
+ 
+          --  Perform the following substitution:
+ 
+          --    Typ --> _object
+ 
+          Rewrite (N, New_Occurrence_Of (Obj_Id, Sloc (N)));
+          Set_Comes_From_Source (N, True);
+       end Replace_Type_Ref;
+ 
+       procedure Replace_Type_Refs is
+         new Replace_Type_References_Generic (Replace_Type_Ref);
+ 
+    --  Start of processing for Replace_Type_References
+ 
+    begin
+       Replace_Type_Refs (Expr, Typ);
+    end Replace_Type_References;
+ 
     ---------------------------
     -- Represented_As_Scalar --
     ---------------------------
*************** package body Exp_Util is
*** 9549,9572 ****
              | N_Task_Body
           =>
              return
!               Requires_Cleanup_Actions (Declarations (N), At_Lib_Level, True)
!                 or else
!                   (Present (Handled_Statement_Sequence (N))
!                     and then
!                       Requires_Cleanup_Actions
!                         (Statements (Handled_Statement_Sequence (N)),
!                          At_Lib_Level, True));
  
           when N_Package_Specification =>
              return
!               Requires_Cleanup_Actions
!                 (Visible_Declarations (N), At_Lib_Level, True)
!                   or else
!               Requires_Cleanup_Actions
!                 (Private_Declarations (N), At_Lib_Level, True);
  
           when others =>
!             return False;
        end case;
     end Requires_Cleanup_Actions;
  
--- 11997,12042 ----
              | N_Task_Body
           =>
              return
!                 Requires_Cleanup_Actions
!                   (L                 => Declarations (N),
!                    Lib_Level         => At_Lib_Level,
!                    Nested_Constructs => True)
!               or else
!                 (Present (Handled_Statement_Sequence (N))
!                   and then
!                     Requires_Cleanup_Actions
!                       (L                 =>
!                          Statements (Handled_Statement_Sequence (N)),
!                        Lib_Level         => At_Lib_Level,
!                        Nested_Constructs => True));
! 
!          --  Extended return statements are the same as the above, except that
!          --  there is no Declarations field. We do not want to clean up the
!          --  Return_Object_Declarations.
! 
!          when N_Extended_Return_Statement =>
!             return
!               Present (Handled_Statement_Sequence (N))
!                 and then Requires_Cleanup_Actions
!                            (L                 =>
!                               Statements (Handled_Statement_Sequence (N)),
!                             Lib_Level         => At_Lib_Level,
!                             Nested_Constructs => True);
  
           when N_Package_Specification =>
              return
!                 Requires_Cleanup_Actions
!                   (L                 => Visible_Declarations (N),
!                    Lib_Level         => At_Lib_Level,
!                    Nested_Constructs => True)
!               or else
!                 Requires_Cleanup_Actions
!                   (L                 => Private_Declarations (N),
!                    Lib_Level         => At_Lib_Level,
!                    Nested_Constructs => True);
  
           when others =>
!             raise Program_Error;
        end case;
     end Requires_Cleanup_Actions;
  
*************** package body Exp_Util is
*** 9653,9668 ****
              elsif Is_Ignored_Ghost_Entity (Obj_Id) then
                 null;
  
-             --  The expansion of iterator loops generates an object declaration
-             --  where the Ekind is explicitly set to loop parameter. This is to
-             --  ensure that the loop parameter behaves as a constant from user
-             --  code point of view. Such object are never controlled and do not
-             --  require cleanup actions. An iterator loop over a container of
-             --  controlled objects does not produce such object declarations.
- 
-             elsif Ekind (Obj_Id) = E_Loop_Parameter then
-                return False;
- 
              --  The object is of the form:
              --    Obj : [constant] Typ [:= Expr];
              --
--- 12123,12128 ----
*************** package body Exp_Util is
*** 10203,10213 ****
--- 12663,12681 ----
  
           else
              Check_Restriction (No_Elaboration_Code, N);
+ 
              Asn :=
                Make_Assignment_Statement (Loc,
                  Name       => New_Occurrence_Of (Ent, Loc),
                  Expression => Make_Integer_Literal (Loc, Uint_1));
  
+             --  Mark the assignment statement as elaboration code. This allows
+             --  the early call region mechanism (see Sem_Elab) to properly
+             --  ignore such assignments even though they are non-preelaborable
+             --  code.
+ 
+             Set_Is_Elaboration_Code (Asn);
+ 
              if Nkind (Parent (N)) = N_Subunit then
                 Insert_After (Corresponding_Stub (Parent (N)), Asn);
              else
*************** package body Exp_Util is
*** 10346,10352 ****
             and then Variable_Ref
           then
              --  Exception is a prefix that is the result of a previous removal
!             --  of side-effects.
  
              return Is_Entity_Name (Prefix (N))
                and then not Comes_From_Source (Prefix (N))
--- 12814,12820 ----
             and then Variable_Ref
           then
              --  Exception is a prefix that is the result of a previous removal
!             --  of side effects.
  
              return Is_Entity_Name (Prefix (N))
                and then not Comes_From_Source (Prefix (N))
*************** package body Exp_Util is
*** 10592,10603 ****
           --  Is this right? what about x'first where x is a variable???
  
           when N_Attribute_Reference =>
!             return
!               Side_Effect_Free (Expressions (N), Name_Req, Variable_Ref)
!                 and then Attribute_Name (N) /= Name_Input
!                 and then (Is_Entity_Name (Prefix (N))
!                            or else Side_Effect_Free
!                                      (Prefix (N), Name_Req, Variable_Ref));
  
           --  A binary operator is side effect free if and both operands are
           --  side effect free. For this purpose binary operators include
--- 13060,13110 ----
           --  Is this right? what about x'first where x is a variable???
  
           when N_Attribute_Reference =>
!             Attribute_Reference : declare
! 
!                function Side_Effect_Free_Attribute
!                  (Attribute_Name : Name_Id) return Boolean;
!                --  Returns True if evaluation of the given attribute is
!                --  considered side-effect free (independent of prefix and
!                --  arguments).
! 
!                --------------------------------
!                -- Side_Effect_Free_Attribute --
!                --------------------------------
! 
!                function Side_Effect_Free_Attribute
!                  (Attribute_Name : Name_Id) return Boolean
!                is
!                begin
!                   case Attribute_Name is
!                      when Name_Input =>
!                         return False;
! 
!                      when Name_Image
!                         | Name_Img
!                         | Name_Wide_Image
!                         | Name_Wide_Wide_Image
!                      =>
!                         --  CodePeer doesn't want to see replicated copies of
!                         --  'Image calls.
! 
!                         return not CodePeer_Mode;
! 
!                      when others =>
!                         return True;
!                   end case;
!                end Side_Effect_Free_Attribute;
! 
!             --  Start of processing for Attribute_Reference
! 
!             begin
!                return
!                  Side_Effect_Free (Expressions (N), Name_Req, Variable_Ref)
!                    and then Side_Effect_Free_Attribute (Attribute_Name (N))
!                    and then (Is_Entity_Name (Prefix (N))
!                               or else Side_Effect_Free
!                                         (Prefix (N), Name_Req, Variable_Ref));
!             end Attribute_Reference;
  
           --  A binary operator is side effect free if and both operands are
           --  side effect free. For this purpose binary operators include
*************** package body Exp_Util is
*** 10664,10673 ****
                Side_Effect_Free (Expressions (N), Name_Req, Variable_Ref)
                  and then Safe_Prefixed_Reference (N);
  
!          --  A type qualification is side effect free if the expression
!          --  is side effect free.
  
!          when N_Qualified_Expression =>
              return Side_Effect_Free (Expression (N), Name_Req, Variable_Ref);
  
           --  A selected component is side effect free only if it is a side
--- 13171,13183 ----
                Side_Effect_Free (Expressions (N), Name_Req, Variable_Ref)
                  and then Safe_Prefixed_Reference (N);
  
!          --  A type qualification, type conversion, or unchecked expression is
!          --  side effect free if the expression is side effect free.
  
!          when N_Qualified_Expression
!             | N_Type_Conversion
!             | N_Unchecked_Expression
!          =>
              return Side_Effect_Free (Expression (N), Name_Req, Variable_Ref);
  
           --  A selected component is side effect free only if it is a side
*************** package body Exp_Util is
*** 10691,10702 ****
                 Side_Effect_Free (Discrete_Range (N), Name_Req, Variable_Ref)
                   and then Safe_Prefixed_Reference (N);
  
-          --  A type conversion is side effect free if the expression to be
-          --  converted is side effect free.
- 
-          when N_Type_Conversion =>
-             return Side_Effect_Free (Expression (N), Name_Req, Variable_Ref);
- 
           --  A unary operator is side effect free if the operand
           --  is side effect free.
  
--- 13201,13206 ----
*************** package body Exp_Util is
*** 10712,10723 ****
                  and then Side_Effect_Free
                             (Expression (N), Name_Req, Variable_Ref);
  
-          --  An unchecked expression is side effect free if its expression
-          --  is side effect free.
- 
-          when N_Unchecked_Expression =>
-             return Side_Effect_Free (Expression (N), Name_Req, Variable_Ref);
- 
           --  A literal is side effect free
  
           when N_Character_Literal
--- 13216,13221 ----
*************** package body Exp_Util is
*** 10954,10959 ****
--- 13452,13466 ----
          and then Esize (Left_Typ) = Esize (Result_Typ);
     end Target_Has_Fixed_Ops;
  
+    -------------------
+    -- Type_Map_Hash --
+    -------------------
+ 
+    function Type_Map_Hash (Id : Entity_Id) return Type_Map_Header is
+    begin
+       return Type_Map_Header (Id mod Type_Map_Size);
+    end Type_Map_Hash;
+ 
     ------------------------------------------
     -- Type_May_Have_Bit_Aligned_Components --
     ------------------------------------------
*************** package body Exp_Util is
*** 11005,11167 ****
        Subp_Id  : Entity_Id)
     is
     begin
!       Update_Primitives_Mapping_Of_Types
!         (Par_Typ   => Find_Dispatching_Type (Inher_Id),
!          Deriv_Typ => Find_Dispatching_Type (Subp_Id));
     end Update_Primitives_Mapping;
  
-    ----------------------------------------
-    -- Update_Primitives_Mapping_Of_Types --
-    ----------------------------------------
- 
-    procedure Update_Primitives_Mapping_Of_Types
-      (Par_Typ   : Entity_Id;
-       Deriv_Typ : Entity_Id)
-    is
-       procedure Add_Primitive (Prim : Entity_Id);
-       --  Find a primitive in the inheritance/overriding chain starting from
-       --  Prim whose dispatching type is parent type Par_Typ and add a mapping
-       --  between the result and primitive Prim.
- 
-       -------------------
-       -- Add_Primitive --
-       -------------------
- 
-       procedure Add_Primitive (Prim : Entity_Id) is
-          function Ancestor_Primitive (Subp : Entity_Id) return Entity_Id;
-          --  Return the next ancestor primitive in the inheritance/overriding
-          --  chain of subprogram Subp. Return Empty if no such primitive is
-          --  available.
- 
-          ------------------------
-          -- Ancestor_Primitive --
-          ------------------------
- 
-          function Ancestor_Primitive (Subp : Entity_Id) return Entity_Id is
-             Inher_Prim : constant Entity_Id := Alias (Subp);
-             Over_Prim  : constant Entity_Id := Overridden_Operation (Subp);
- 
-          begin
-             --  The current subprogram overrides an ancestor primitive
- 
-             if Present (Over_Prim) then
-                return Over_Prim;
- 
-             --  The current subprogram is an internally generated alias of an
-             --  inherited ancestor primitive.
- 
-             elsif Present (Inher_Prim) then
-                return Inher_Prim;
- 
-             --  Otherwise the current subprogram is the root of the inheritance
-             --  or overriding chain.
- 
-             else
-                return Empty;
-             end if;
-          end Ancestor_Primitive;
- 
-          --  Local variables
- 
-          Par_Prim : Entity_Id;
- 
-       --  Start of processing for Add_Primitive
- 
-       begin
-          --  Inspect both the inheritance chain through the Alias attribute and
-          --  the overriding chain through the Overridden_Operation looking for
-          --  an ancestor primitive with the appropriate dispatching type.
- 
-          Par_Prim := Prim;
-          while Present (Par_Prim) loop
-             exit when Find_Dispatching_Type (Par_Prim) = Par_Typ;
-             Par_Prim := Ancestor_Primitive (Par_Prim);
-          end loop;
- 
-          --  Create a mapping of the form:
- 
-          --    Parent type primitive -> derived type primitive
- 
-          if Present (Par_Prim) then
-             Primitives_Mapping.Set (Par_Prim, Prim);
-          end if;
-       end Add_Primitive;
- 
-       --  Local variables
- 
-       Deriv_Prim : Entity_Id;
-       Par_Prim   : Entity_Id;
-       Par_Prims  : Elist_Id;
-       Prim_Elmt  : Elmt_Id;
- 
-    --  Start of processing for Update_Primitives_Mapping_Of_Types
- 
-    begin
-       --  Nothing to do if there are no types to work with
- 
-       if No (Par_Typ) or else No (Deriv_Typ) then
-          return;
- 
-       --  Nothing to do if the mapping already exists
- 
-       elsif Primitives_Mapping.Get (Par_Typ) = Deriv_Typ then
-          return;
-       end if;
- 
-       --  Create a mapping of the form:
- 
-       --    Parent type -> Derived type
- 
-       --  to prevent any subsequent attempts to produce the same relations.
- 
-       Primitives_Mapping.Set (Par_Typ, Deriv_Typ);
- 
-       --  Inspect the primitives of the derived type and determine whether they
-       --  relate to the primitives of the parent type. If there is a meaningful
-       --  relation, create a mapping of the form:
- 
-       --    Parent type primitive -> Derived type primitive
- 
-       if Present (Direct_Primitive_Operations (Deriv_Typ)) then
-          Prim_Elmt := First_Elmt (Direct_Primitive_Operations (Deriv_Typ));
-          while Present (Prim_Elmt) loop
-             Deriv_Prim := Node (Prim_Elmt);
- 
-             if Is_Subprogram (Deriv_Prim)
-               and then Find_Dispatching_Type (Deriv_Prim) = Deriv_Typ
-             then
-                Add_Primitive (Deriv_Prim);
-             end if;
- 
-             Next_Elmt (Prim_Elmt);
-          end loop;
-       end if;
- 
-       --  If the parent operation is an interface operation, the overriding
-       --  indicator is not present. Instead, we get from the interface
-       --  operation the primitive of the current type that implements it.
- 
-       if Is_Interface (Par_Typ) then
-          Par_Prims := Collect_Primitive_Operations (Par_Typ);
- 
-          if Present (Par_Prims) then
-             Prim_Elmt := First_Elmt (Par_Prims);
- 
-             while Present (Prim_Elmt) loop
-                Par_Prim   := Node (Prim_Elmt);
-                Deriv_Prim :=
-                  Find_Primitive_Covering_Interface (Deriv_Typ, Par_Prim);
- 
-                if Present (Deriv_Prim) then
-                   Primitives_Mapping.Set (Par_Prim, Deriv_Prim);
-                end if;
- 
-                Next_Elmt (Prim_Elmt);
-             end loop;
-          end if;
-       end if;
-    end Update_Primitives_Mapping_Of_Types;
- 
     ----------------------------------
     -- Within_Case_Or_If_Expression --
     ----------------------------------
--- 13512,13522 ----
        Subp_Id  : Entity_Id)
     is
     begin
!       Map_Types
!         (Parent_Type  => Find_Dispatching_Type (Inher_Id),
!          Derived_Type => Find_Dispatching_Type (Subp_Id));
     end Update_Primitives_Mapping;
  
     ----------------------------------
     -- Within_Case_Or_If_Expression --
     ----------------------------------
diff -Nrcpad gcc-7.3.0/gcc/ada/exp_util.ads gcc-8.1.0/gcc/ada/exp_util.ads
*** gcc-7.3.0/gcc/ada/exp_util.ads	Thu Jan 12 13:21:21 2017
--- gcc-8.1.0/gcc/ada/exp_util.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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
*** 52,58 ****
  
     --    For an expression occurring in a declaration (declarations always
     --    appear in lists), the actions are similarly inserted into the list
!    --    just before the associated declaration.
  
     --  The following special cases arise:
  
--- 52,60 ----
  
     --    For an expression occurring in a declaration (declarations always
     --    appear in lists), the actions are similarly inserted into the list
!    --    just before the associated declaration. ???Declarations do not always
!    --    appear in lists; in particular, a library unit declaration does not
!    --    appear in a list, and Insert_Action will crash in that case.
  
     --  The following special cases arise:
  
*************** package Exp_Util is
*** 248,257 ****
     --  not install a call to Abort_Defer.
  
     procedure Build_Class_Wide_Expression
!      (Prag        : Node_Id;
!       Subp        : Entity_Id;
!       Par_Subp    : Entity_Id;
!       Adjust_Sloc : Boolean);
     --  Build the expression for an inherited class-wide condition. Prag is
     --  the pragma constructed from the corresponding aspect of the parent
     --  subprogram, and Subp is the overriding operation, and Par_Subp is
--- 250,260 ----
     --  not install a call to Abort_Defer.
  
     procedure Build_Class_Wide_Expression
!      (Prag          : Node_Id;
!       Subp          : Entity_Id;
!       Par_Subp      : Entity_Id;
!       Adjust_Sloc   : Boolean;
!       Needs_Wrapper : out Boolean);
     --  Build the expression for an inherited class-wide condition. Prag is
     --  the pragma constructed from the corresponding aspect of the parent
     --  subprogram, and Subp is the overriding operation, and Par_Subp is
*************** package Exp_Util is
*** 264,269 ****
--- 267,277 ----
     --  is the expression of the original class-wide aspect. In SPARK_Mode, such
     --  operation which are just inherited but have modified pre/postconditions
     --  are illegal.
+    --  If there are calls to overridden operations in the condition, and the
+    --  pragma applies to an inherited operation, a wrapper must be built for
+    --  it to capture the new inherited condition. The flag Needs_Wrapper is
+    --  set in that case so that the wrapper can be built, when the controlling
+    --  type is frozen.
  
     function Build_DIC_Call
       (Loc    : Source_Ptr;
*************** package Exp_Util is
*** 272,285 ****
     --  Build a call to the DIC procedure of type Typ with Obj_Id as the actual
     --  parameter.
  
!    procedure Build_DIC_Procedure_Body (Typ : Entity_Id);
     --  Create the body of the procedure which verifies the assertion expression
!    --  of pragma Default_Initial_Condition at run time.
  
     procedure Build_DIC_Procedure_Declaration (Typ : Entity_Id);
     --  Create the declaration of the procedure which verifies the assertion
     --  expression of pragma Default_Initial_Condition at run time.
  
     procedure Build_Procedure_Form (N : Node_Id);
     --  Create a procedure declaration which emulates the behavior of a function
     --  that returns an array type, for C-compatible generation.
--- 280,312 ----
     --  Build a call to the DIC procedure of type Typ with Obj_Id as the actual
     --  parameter.
  
!    procedure Build_DIC_Procedure_Body
!      (Typ        : Entity_Id;
!       For_Freeze : Boolean := False);
     --  Create the body of the procedure which verifies the assertion expression
!    --  of pragma Default_Initial_Condition at run time. Flag For_Freeze should
!    --  be set when the body is constructed as part of the freezing actions for
!    --  Typ.
  
     procedure Build_DIC_Procedure_Declaration (Typ : Entity_Id);
     --  Create the declaration of the procedure which verifies the assertion
     --  expression of pragma Default_Initial_Condition at run time.
  
+    procedure Build_Invariant_Procedure_Body
+      (Typ               : Entity_Id;
+       Partial_Invariant : Boolean := False);
+    --  Create the body of the procedure which verifies the invariants of type
+    --  Typ at runtime. Flag Partial_Invariant should be set when Typ denotes a
+    --  private type, otherwise it is assumed that Typ denotes the full view of
+    --  a private type.
+ 
+    procedure Build_Invariant_Procedure_Declaration
+      (Typ               : Entity_Id;
+       Partial_Invariant : Boolean := False);
+    --  Create the declaration of the procedure which verifies the invariants of
+    --  type Typ at runtime. Flag Partial_Invariant should be set when building
+    --  the invariant procedure for a private type.
+ 
     procedure Build_Procedure_Form (N : Node_Id);
     --  Create a procedure declaration which emulates the behavior of a function
     --  that returns an array type, for C-compatible generation.
*************** package Exp_Util is
*** 493,500 ****
  
     procedure Evaluate_Name (Nam : Node_Id);
     --  Remove all side effects from a name which appears as part of an object
!    --  renaming declaration. More comments are needed here that explain how
!    --  this differs from Force_Evaluation and Remove_Side_Effects ???
  
     procedure Evolve_And_Then (Cond : in out Node_Id; Cond1 : Node_Id);
     --  Rewrites Cond with the expression: Cond and then Cond1. If Cond is
--- 520,530 ----
  
     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
!    --  side effects and captures the values of the variables, except for the
!    --  variable being renamed. Hence this differs from Force_Evaluation and
!    --  Remove_Side_Effects (but it calls Force_Evaluation on subexpressions
!    --  whose value needs to be fixed).
  
     procedure Evolve_And_Then (Cond : in out Node_Id; Cond1 : Node_Id);
     --  Rewrites Cond with the expression: Cond and then Cond1. If Cond is
*************** package Exp_Util is
*** 510,515 ****
--- 540,549 ----
     --  indicating that no checks were required). The Sloc field of the
     --  constructed N_Or_Else node is copied from Cond1.
  
+    function Exceptions_In_Finalization_OK return Boolean;
+    --  Determine whether the finalization machinery can safely add exception
+    --  handlers and recovery circuitry.
+ 
     procedure Expand_Static_Predicates_In_Choices (N : Node_Id);
     --  N is either a case alternative or a variant. The Discrete_Choices field
     --  of N points to a list of choices. If any of these choices is the name
*************** package Exp_Util is
*** 527,532 ****
--- 561,572 ----
     --  class-wide). Set Related_Id to request an external name for the subtype
     --  rather than an internal temporary.
  
+    function Expression_Contains_Primitives_Calls_Of
+      (Expr : Node_Id;
+       Typ  : Entity_Id) return Boolean;
+    --  Return True if the expression Expr contains a nondispatching call to a
+    --  function which is a primitive of the tagged type Typ.
+ 
     function Finalize_Address (Typ : Entity_Id) return Entity_Id;
     --  Locate TSS primitive Finalize_Address in type Typ. Return Empty if the
     --  subprogram is not available.
*************** package Exp_Util is
*** 554,564 ****
     function Find_Prim_Op
       (T    : Entity_Id;
        Name : TSS_Name_Type) return Entity_Id;
!    --  Find the first primitive operation of type T whose name has the form
!    --  indicated by the name parameter (i.e. is a type support subprogram
!    --  with the indicated suffix). This function allows use of a primitive
!    --  operation which is not directly visible. If T is a class wide type,
!    --  then the reference is to an operation of the corresponding root type.
  
     function Find_Optional_Prim_Op
       (T : Entity_Id; Name : Name_Id) return Entity_Id;
--- 594,602 ----
     function Find_Prim_Op
       (T    : Entity_Id;
        Name : TSS_Name_Type) return Entity_Id;
!    --  Same as Find_Prim_Op above, except we're searching for an op that has
!    --  the form indicated by Name (i.e. is a type support subprogram with the
!    --  indicated suffix).
  
     function Find_Optional_Prim_Op
       (T : Entity_Id; Name : Name_Id) return Entity_Id;
*************** package Exp_Util is
*** 738,749 ****
     function Is_Non_BIP_Func_Call (Expr : Node_Id) return Boolean;
     --  Determine whether node Expr denotes a non build-in-place function call
  
-    function Is_Object_Access_BIP_Func_Call
-       (Expr   : Node_Id;
-        Obj_Id : Entity_Id) return Boolean;
-    --  Determine if Expr denotes a build-in-place function which stores its
-    --  result in the BIPaccess actual parameter whose prefix must match Obj_Id.
- 
     function Is_Possibly_Unaligned_Object (N : Node_Id) return Boolean;
     --  Node N is an object reference. This function returns True if it is
     --  possible that the object may not be aligned according to the normal
--- 776,781 ----
*************** package Exp_Util is
*** 795,800 ****
--- 827,838 ----
     --  Returns true if type T is not tagged and is a derived type,
     --  or is a private type whose completion is such a type.
  
+    function Is_Untagged_Private_Derivation
+      (Priv_Typ : Entity_Id;
+       Full_Typ : Entity_Id) return Boolean;
+    --  Determine whether private type Priv_Typ and its full view Full_Typ
+    --  represent an untagged derivation from a private parent.
+ 
     function Is_Volatile_Reference (N : Node_Id) return Boolean;
     --  Checks if the node N represents a volatile reference, which can be
     --  either a direct reference to a variable treated as volatile, or an
*************** package Exp_Util is
*** 819,842 ****
     --  that cannot possibly be negative, and if so returns True. A value of
     --  False means that it is not known if the value is positive or negative.
  
-    function Known_Non_Null (N : Node_Id) return Boolean;
-    --  Given a node N for a subexpression of an access type, determines if
-    --  this subexpression yields a value that is known at compile time to
-    --  be non-null and returns True if so. Returns False otherwise. It is
-    --  an error to call this function if N is not of an access type.
- 
-    function Known_Null (N : Node_Id) return Boolean;
-    --  Given a node N for a subexpression of an access type, determines if this
-    --  subexpression yields a value that is known at compile time to be null
-    --  and returns True if so. Returns False otherwise. It is an error to call
-    --  this function if N is not of an access type.
- 
     function Make_Invariant_Call (Expr : Node_Id) return Node_Id;
!    --  Expr is an object of a type which Has_Invariants set (and which thus
!    --  also has an Invariant_Procedure set). If invariants are enabled, this
!    --  function returns a call to the Invariant procedure passing Expr as the
!    --  argument, and returns it unanalyzed. If invariants are not enabled,
!    --  returns a null statement.
  
     function Make_Predicate_Call
       (Typ  : Entity_Id;
--- 857,865 ----
     --  that cannot possibly be negative, and if so returns True. A value of
     --  False means that it is not known if the value is positive or negative.
  
     function Make_Invariant_Call (Expr : Node_Id) return Node_Id;
!    --  Generate a call to the Invariant_Procedure associated with the type of
!    --  expression Expr. Expr is passed as an actual parameter in the call.
  
     function Make_Predicate_Call
       (Typ  : Entity_Id;
*************** package Exp_Util is
*** 864,869 ****
--- 887,905 ----
     --  wide type. Set Related_Id to request an external name for the subtype
     --  rather than an internal temporary.
  
+    procedure Map_Types (Parent_Type : Entity_Id; Derived_Type : Entity_Id);
+    --  Establish the following mapping between the attributes of tagged parent
+    --  type Parent_Type and tagged derived type Derived_Type.
+    --
+    --    * Map each discriminant of Parent_Type to ether the corresponding
+    --      discriminant of Derived_Type or come constraint.
+ 
+    --    * Map each primitive operation of Parent_Type to the corresponding
+    --      primitive of Derived_Type.
+    --
+    --  The mapping Parent_Type -> Derived_Type is also added to the table in
+    --  order to prevent subsequent attempts of the same mapping.
+ 
     function Matching_Standard_Type (Typ : Entity_Id) return Entity_Id;
     --  Given a scalar subtype Typ, returns a matching type in standard that
     --  has the same object size value. For example, a 16 bit signed type will
*************** package Exp_Util is
*** 887,897 ****
     --  consist of constants, when the object has a nontrivial initialization
     --  or is controlled.
  
!    function Needs_Finalization (T : Entity_Id) return Boolean;
!    --  True if type T is controlled, or has controlled subcomponents. Also
!    --  True if T is a class-wide type, because some type extension might add
!    --  controlled subcomponents, except that if pragma Restrictions
!    --  (No_Finalization) applies, this is False for class-wide types.
  
     function Non_Limited_Designated_Type (T : Entity_Id) return Entity_Id;
     --  An anonymous access type may designate a limited view. Check whether
--- 923,931 ----
     --  consist of constants, when the object has a nontrivial initialization
     --  or is controlled.
  
!    function Needs_Finalization (Typ : Entity_Id) return Boolean;
!    --  Determine whether type Typ is controlled and this requires finalization
!    --  actions.
  
     function Non_Limited_Designated_Type (T : Entity_Id) return Entity_Id;
     --  An anonymous access type may designate a limited view. Check whether
*************** package Exp_Util is
*** 989,994 ****
--- 1023,1059 ----
     --  renaming cannot be elaborated without evaluating the subexpression, so
     --  gigi would resort to method 1) or 3) under the hood for them.
  
+    procedure Replace_References
+      (Expr      : Node_Id;
+       Par_Typ   : Entity_Id;
+       Deriv_Typ : Entity_Id;
+       Par_Obj   : Entity_Id := Empty;
+       Deriv_Obj : Entity_Id := Empty);
+    --  Expr denotes an arbitrary expression. Par_Typ is a tagged parent type
+    --  in a type hierarchy. Deriv_Typ is a tagged type derived from Par_Typ
+    --  with optional ancestors in between. Par_Obj is a formal parameter
+    --  which emulates the current instance of Par_Typ. Deriv_Obj is a formal
+    --  parameter which emulates the current instance of Deriv_Typ. Perform the
+    --  following substitutions in Expr:
+    --
+    --    * Replace a reference to Par_Obj with a reference to Deriv_Obj
+    --
+    --    * Replace a reference to a discriminant of Par_Typ with a suitable
+    --      value from the point of view of Deriv_Typ.
+    --
+    --    * Replace a call to an overridden primitive of Par_Typ with a call to
+    --      an overriding primitive of Deriv_Typ.
+    --
+    --    * Replace a call to an inherited primitive of Par_Type with a call to
+    --      the internally-generated inherited primitive of Deriv_Typ.
+ 
+    procedure Replace_Type_References
+      (Expr   : Node_Id;
+       Typ    : Entity_Id;
+       Obj_Id : Entity_Id);
+    --  Substitute all references of the current instance of type Typ with
+    --  references to formal parameter Obj_Id within expression Expr.
+ 
     function Represented_As_Scalar (T : Entity_Id) return Boolean;
     --  Returns True iff the implementation of this type in code generation
     --  terms is scalar. This is true for scalars in the Ada sense, and for
*************** package Exp_Util is
*** 1097,1115 ****
     --  when elaborating a contract for a subprogram, and when freezing a type
     --  extension to verify legality rules on inherited conditions.
  
-    procedure Update_Primitives_Mapping_Of_Types
-      (Par_Typ   : Entity_Id;
-       Deriv_Typ : Entity_Id);
-    --  Map the primitive operations of parent type Par_Typ to the corresponding
-    --  primitives of derived type Deriv_Typ.
- 
     function Within_Case_Or_If_Expression (N : Node_Id) return Boolean;
     --  Determine whether arbitrary node N is within a case or an if expression
  
     function Within_Internal_Subprogram return Boolean;
     --  Indicates that some expansion is taking place within the body of a
     --  predefined primitive operation. Some expansion activity (e.g. predicate
!    --  checks) is disabled in such.
  
  private
     pragma Inline (Duplicate_Subexpr);
--- 1162,1176 ----
     --  when elaborating a contract for a subprogram, and when freezing a type
     --  extension to verify legality rules on inherited conditions.
  
     function Within_Case_Or_If_Expression (N : Node_Id) return Boolean;
     --  Determine whether arbitrary node N is within a case or an if expression
  
     function Within_Internal_Subprogram return Boolean;
     --  Indicates that some expansion is taking place within the body of a
     --  predefined primitive operation. Some expansion activity (e.g. predicate
!    --  checks) is disabled in such. Because we want to detect invalid uses
!    --  of function calls within predicates (which lead to infinite recursion)
!    --  predicate functions themselves are not considered internal here.
  
  private
     pragma Inline (Duplicate_Subexpr);
diff -Nrcpad gcc-7.3.0/gcc/ada/expander.adb gcc-8.1.0/gcc/ada/expander.adb
*** gcc-7.3.0/gcc/ada/expander.adb	Mon Jan 23 13:24:47 2017
--- gcc-8.1.0/gcc/ada/expander.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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
*** 82,88 ****
     --  Ghost mode.
  
     procedure Expand (N : Node_Id) is
!       Mode : Ghost_Mode_Type;
  
     begin
        --  If we were analyzing a default expression (or other spec expression)
--- 82,89 ----
     --  Ghost mode.
  
     procedure Expand (N : Node_Id) is
!       Saved_GM : constant Ghost_Mode_Type := Ghost_Mode;
!       --  Save the Ghost mode to restore on exit
  
     begin
        --  If we were analyzing a default expression (or other spec expression)
*************** package body Expander is
*** 98,104 ****
        --  Establish the Ghost mode of the context to ensure that any generated
        --  nodes during expansion are marked as Ghost.
  
!       Set_Ghost_Mode (N, Mode);
  
        --  The GNATprove_Mode flag indicates that a light expansion for formal
        --  verification should be used. This expansion is never done inside
--- 99,105 ----
        --  Establish the Ghost mode of the context to ensure that any generated
        --  nodes during expansion are marked as Ghost.
  
!       Set_Ghost_Mode (N);
  
        --  The GNATprove_Mode flag indicates that a light expansion for formal
        --  verification should be used. This expansion is never done inside
*************** package body Expander is
*** 434,439 ****
--- 435,443 ----
                 when N_Record_Representation_Clause =>
                    Expand_N_Record_Representation_Clause (N);
  
+                when N_Reduction_Expression =>
+                   Expand_N_Reduction_Expression (N);
+ 
                 when N_Requeue_Statement =>
                    Expand_N_Requeue_Statement (N);
  
*************** package body Expander is
*** 529,535 ****
        end if;
  
     <<Leave>>
!       Restore_Ghost_Mode (Mode);
     end Expand;
  
     ---------------------------
--- 533,539 ----
        end if;
  
     <<Leave>>
!       Restore_Ghost_Mode (Saved_GM);
     end Expand;
  
     ---------------------------
diff -Nrcpad gcc-7.3.0/gcc/ada/expander.ads gcc-8.1.0/gcc/ada/expander.ads
*** gcc-7.3.0/gcc/ada/expander.ads	Mon Jan 20 13:44:07 2014
--- gcc-8.1.0/gcc/ada/expander.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2013, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 66,74 ****
  --      always the case).
  
  --  In both these cases, Replace or Rewrite must be used to achieve the
! --  of the node, since the Expander routine is only passed the Node_Id
! --  of the node to be expanded, and the resulting expanded Node_Id must
! --  be the same (the parameter to Expand is mode in, not mode in-out).
  
  --  For nodes other than subexpressions, it is not necessary to preserve the
  --  original tree in the Expand routines, unlike the case for modifications
--- 66,74 ----
  --      always the case).
  
  --  In both these cases, Replace or Rewrite must be used to achieve the
! --  expansion of the node, since the Expander routine is only passed the
! --  Node_Id of the node to be expanded, and the resulting expanded Node_Id
! --  must be the same (the parameter to Expand is mode in, not mode in-out).
  
  --  For nodes other than subexpressions, it is not necessary to preserve the
  --  original tree in the Expand routines, unlike the case for modifications
diff -Nrcpad gcc-7.3.0/gcc/ada/expect.c gcc-8.1.0/gcc/ada/expect.c
*** gcc-7.3.0/gcc/ada/expect.c	Fri Jan 20 14:49:28 2017
--- gcc-8.1.0/gcc/ada/expect.c	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *                     Copyright (C) 2001-2016, AdaCore                     *
   *                                                                          *
   * GNAT is free software;  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-2018, AdaCore                     *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-7.3.0/gcc/ada/fe.h gcc-8.1.0/gcc/ada/fe.h
*** gcc-7.3.0/gcc/ada/fe.h	Tue Oct 11 10:11:49 2016
--- gcc-8.1.0/gcc/ada/fe.h	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 1992-2016, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  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-2018, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is 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 Fold_Lower[], Fold_Upper[];
*** 56,62 ****
  
  /* debug: */
  
! #define Debug_Flag_NN debug__debug_flag_nn
  extern Boolean Debug_Flag_NN;
  
  /* einfo: */
--- 56,64 ----
  
  /* debug: */
  
! #define Debug_Flag_Dot_R	debug__debug_flag_dot_r
! #define Debug_Flag_NN		debug__debug_flag_nn
! extern Boolean Debug_Flag_Dot_R;
  extern Boolean Debug_Flag_NN;
  
  /* einfo: */
*************** extern Nat       Serious_Errors_Detected
*** 107,116 ****
--- 109,120 ----
  #define Get_Local_Raise_Call_Entity exp_ch11__get_local_raise_call_entity
  #define Get_RT_Exception_Entity exp_ch11__get_rt_exception_entity
  #define Get_RT_Exception_Name exp_ch11__get_rt_exception_name
+ #define Warn_If_No_Local_Raise exp_ch11__warn_if_no_local_raise
  
  extern Entity_Id Get_Local_Raise_Call_Entity (void);
  extern Entity_Id Get_RT_Exception_Entity (int);
  extern void Get_RT_Exception_Name (int);
+ extern void Warn_If_No_Local_Raise (int);
  
  /* exp_code:  */
  
*************** extern void Check_Elaboration_Code_Allow
*** 219,224 ****
--- 223,229 ----
  extern void Check_Implicit_Dynamic_Code_Allowed (Node_Id);
  
  /* sem_aggr:  */
+ 
  #define Is_Others_Aggregate    sem_aggr__is_others_aggregate
  
  extern Boolean Is_Others_Aggregate (Node_Id);
*************** extern Entity_Id  First_Subtype
*** 241,252 ****
  extern Boolean    Is_By_Reference_Type         (Entity_Id);
  extern Boolean    Is_Derived_Type              (Entity_Id);
  
- /* sem_elim: */
- 
- #define Eliminate_Error_Msg    sem_elim__eliminate_error_msg
- 
- extern void Eliminate_Error_Msg (Node_Id, Entity_Id);
- 
  /* sem_eval: */
  
  #define Compile_Time_Known_Value	sem_eval__compile_time_known_value
--- 246,251 ----
*************** extern Boolean Signed_Zeros_On_Target;
*** 297,302 ****
--- 296,307 ----
  extern Boolean Stack_Check_Probes_On_Target;
  extern Boolean Stack_Check_Limits_On_Target;
  
+ /* warnsw: */
+ 
+ #define Warn_On_Questionable_Layout warnsw__warn_on_questionable_layout
+ 
+ extern Boolean Warn_On_Questionable_Layout;
+ 
  #ifdef __cplusplus
  }
  #endif
diff -Nrcpad gcc-7.3.0/gcc/ada/final.c gcc-8.1.0/gcc/ada/final.c
*** gcc-7.3.0/gcc/ada/final.c	Tue Jan  6 09:47:48 2015
--- gcc-8.1.0/gcc/ada/final.c	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2014, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  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-2018, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-7.3.0/gcc/ada/fmap.adb gcc-8.1.0/gcc/ada/fmap.adb
*** gcc-7.3.0/gcc/ada/fmap.adb	Thu Nov 12 11:59:18 2015
--- gcc-8.1.0/gcc/ada/fmap.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2015, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or 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-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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 Fmap is
*** 45,53 ****
     --  procedure Initialize, so that no attempt is made to open the mapping
     --  file in procedure Update_Mapping_File.
  
-    function To_Big_String_Ptr is new Unchecked_Conversion
-      (Source_Buffer_Ptr, Big_String_Ptr);
- 
     Max_Buffer : constant := 1_500;
     Buffer : String (1 .. Max_Buffer);
     --  Used to buffer output when writing to a new mapping file
--- 45,50 ----
*************** package body Fmap is
*** 178,190 ****
     ----------------
  
     procedure Initialize (File_Name : String) is
        Src : Source_Buffer_Ptr;
        Hi  : Source_Ptr;
-       BS  : Big_String_Ptr;
-       SP  : String_Ptr;
  
!       First : Positive := 1;
!       Last  : Natural  := 0;
  
        Uname : Unit_Name_Type;
        Fname : File_Name_Type;
--- 175,186 ----
     ----------------
  
     procedure Initialize (File_Name : String) is
+       FD  : File_Descriptor;
        Src : Source_Buffer_Ptr;
        Hi  : Source_Ptr;
  
!       First : Source_Ptr := 1;
!       Last  : Source_Ptr := 0;
  
        Uname : Unit_Name_Type;
        Fname : File_Name_Type;
*************** package body Fmap is
*** 204,210 ****
        --  the name buffer contains "/".
  
        procedure Get_Line;
!       --  Get a line from the mapping file, where a line is SP (First .. Last)
  
        procedure Report_Truncated;
        --  Report a warning when the mapping file is truncated
--- 200,206 ----
        --  the name buffer contains "/".
  
        procedure Get_Line;
!       --  Get a line from the mapping file, where a line is Src (First .. Last)
  
        procedure Report_Truncated;
        --  Report a warning when the mapping file is truncated
*************** package body Fmap is
*** 263,285 ****
  
           --  If not at the end of file, skip the end of line
  
!          while First < SP'Last
!            and then (SP (First) = CR
!                       or else SP (First) = LF
!                       or else SP (First) = EOF)
           loop
              First := First + 1;
           end loop;
  
           --  If not at the end of file, find the end of this new line
  
!          if First < SP'Last and then SP (First) /= EOF then
              Last := First;
  
!             while Last < SP'Last
!               and then SP (Last + 1) /= CR
!               and then SP (Last + 1) /= LF
!               and then SP (Last + 1) /= EOF
              loop
                 Last := Last + 1;
              end loop;
--- 259,281 ----
  
           --  If not at the end of file, skip the end of line
  
!          while First < Src'Last
!            and then (Src (First) = CR
!                       or else Src (First) = LF
!                       or else Src (First) = EOF)
           loop
              First := First + 1;
           end loop;
  
           --  If not at the end of file, find the end of this new line
  
!          if First < Src'Last and then Src (First) /= EOF then
              Last := First;
  
!             while Last < Src'Last
!               and then Src (Last + 1) /= CR
!               and then Src (Last + 1) /= LF
!               and then Src (Last + 1) /= EOF
              loop
                 Last := Last + 1;
              end loop;
*************** package body Fmap is
*** 302,321 ****
  
     begin
        Empty_Tables;
!       Name_Len := File_Name'Length;
!       Name_Buffer (1 .. Name_Len) := File_Name;
!       Read_Source_File (Name_Enter, 0, Hi, Src, Config);
  
-       if Src = null then
-          Write_Str ("warning: could not read mapping file """);
           Write_Str (File_Name);
           Write_Line ("""");
           No_Mapping_File := True;
  
        else
-          BS := To_Big_String_Ptr (Src);
-          SP := BS (1 .. Natural (Hi))'Unrestricted_Access;
- 
           loop
              --  Get the unit name
  
--- 298,317 ----
  
     begin
        Empty_Tables;
!       Read_Source_File (Name_Enter (File_Name), 1, Hi, Src, FD, Config);
! 
!       if Null_Source_Buffer_Ptr (Src) then
!          if FD = Null_FD then
!             Write_Str ("warning: could not locate mapping file """);
!          else
!             Write_Str ("warning: no read access for mapping file """);
!          end if;
  
           Write_Str (File_Name);
           Write_Line ("""");
           No_Mapping_File := True;
  
        else
           loop
              --  Get the unit name
  
*************** package body Fmap is
*** 325,343 ****
  
              exit when First > Last;
  
!             if (Last < First + 2) or else (SP (Last - 1) /= '%')
!               or else (SP (Last) /= 's' and then SP (Last) /= 'b')
              then
                 Write_Line
                   ("warning: mapping file """ & File_Name &
                    """ is incorrectly formatted");
!                Write_Line ("Line = """ & SP (First .. Last) & '"');
                 Empty_Tables;
                 return;
              end if;
  
!             Name_Len := Last - First + 1;
!             Name_Buffer (1 .. Name_Len) := SP (First .. Last);
              Uname := Find_Unit_Name;
  
              --  Get the file name
--- 321,339 ----
  
              exit when First > Last;
  
!             if (Last < First + 2) or else (Src (Last - 1) /= '%')
!               or else (Src (Last) /= 's' and then Src (Last) /= 'b')
              then
                 Write_Line
                   ("warning: mapping file """ & File_Name &
                    """ is incorrectly formatted");
!                Write_Line ("Line = """ & String (Src (First .. Last)) & '"');
                 Empty_Tables;
                 return;
              end if;
  
!             Name_Len := Integer (Last - First + 1);
!             Name_Buffer (1 .. Name_Len) := String (Src (First .. Last));
              Uname := Find_Unit_Name;
  
              --  Get the file name
*************** package body Fmap is
*** 352,359 ****
                 return;
              end if;
  
!             Name_Len := Last - First + 1;
!             Name_Buffer (1 .. Name_Len) := SP (First .. Last);
              Canonical_Case_File_Name (Name_Buffer (1 .. Name_Len));
              Fname := Find_File_Name;
  
--- 348,355 ----
                 return;
              end if;
  
!             Name_Len := Integer (Last - First + 1);
!             Name_Buffer (1 .. Name_Len) := String (Src (First .. Last));
              Canonical_Case_File_Name (Name_Buffer (1 .. Name_Len));
              Fname := Find_File_Name;
  
*************** package body Fmap is
*** 369,376 ****
                 return;
              end if;
  
!             Name_Len := Last - First + 1;
!             Name_Buffer (1 .. Name_Len) := SP (First .. Last);
              Pname := Find_File_Name;
  
              --  Add the mappings for this unit name
--- 365,372 ----
                 return;
              end if;
  
!             Name_Len := Integer (Last - First + 1);
!             Name_Buffer (1 .. Name_Len) := String (Src (First .. Last));
              Pname := Find_File_Name;
  
              --  Add the mappings for this unit name
diff -Nrcpad gcc-7.3.0/gcc/ada/fmap.ads gcc-8.1.0/gcc/ada/fmap.ads
*** gcc-7.3.0/gcc/ada/fmap.ads	Tue Nov  6 11:28:27 2012
--- gcc-8.1.0/gcc/ada/fmap.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2012, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or 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-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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 Fmap is
*** 42,48 ****
  
     procedure Initialize (File_Name : String);
     --  Initialize the mappings from the mapping file File_Name.
!    --  If the mapping file is incorrect (non existent file, truncated file,
     --  duplicate entries), output a warning and do not initialize the mappings.
     --  Record the state of the mapping tables in case Update is called
     --  later on.
--- 42,48 ----
  
     procedure Initialize (File_Name : String);
     --  Initialize the mappings from the mapping file File_Name.
!    --  If the mapping file is incorrect (nonexistent file, truncated file,
     --  duplicate entries), output a warning and do not initialize the mappings.
     --  Record the state of the mapping tables in case Update is called
     --  later on.
diff -Nrcpad gcc-7.3.0/gcc/ada/fname-sf.adb gcc-8.1.0/gcc/ada/fname-sf.adb
*** gcc-7.3.0/gcc/ada/fname-sf.adb	Tue Apr  8 06:48:30 2008
--- gcc-8.1.0/gcc/ada/fname-sf.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2008, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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,42 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with Casing;   use Casing;
! with Fname;    use Fname;
! with Fname.UF; use Fname.UF;
! with SFN_Scan; use SFN_Scan;
! with Osint;    use Osint;
! with Types;    use Types;
  
  with Unchecked_Conversion;
  
  package body Fname.SF is
  
-    function To_Big_String_Ptr is new Unchecked_Conversion
-      (Source_Buffer_Ptr, Big_String_Ptr);
- 
     ----------------------
     -- Local Procedures --
     ----------------------
--- 23,40 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with Casing;        use Casing;
! with Fname;         use Fname;
! with Fname.UF;      use Fname.UF;
! with SFN_Scan;      use SFN_Scan;
! with Osint;         use Osint;
! with Types;         use Types;
! with System.OS_Lib; use System.OS_Lib;
  
  with Unchecked_Conversion;
  
  package body Fname.SF is
  
     ----------------------
     -- Local Procedures --
     ----------------------
*************** package body Fname.SF is
*** 64,84 ****
     -----------------------------------
  
     procedure Read_Source_File_Name_Pragmas is
        Src : Source_Buffer_Ptr;
        Hi  : Source_Ptr;
-       BS  : Big_String_Ptr;
-       SP  : String_Ptr;
  
     begin
!       Name_Buffer (1 .. 8) := "gnat.adc";
!       Name_Len := 8;
!       Read_Source_File (Name_Enter, 0, Hi, Src);
  
!       if Src /= null then
!          BS := To_Big_String_Ptr (Src);
!          SP := BS (1 .. Natural (Hi))'Unrestricted_Access;
           Scan_SFN_Pragmas
!            (SP.all,
              Set_File_Name'Access,
              Set_File_Name_Pattern'Access);
        end if;
--- 62,83 ----
     -----------------------------------
  
     procedure Read_Source_File_Name_Pragmas is
+       FD  : File_Descriptor;
        Src : Source_Buffer_Ptr;
        Hi  : Source_Ptr;
  
     begin
!       Read_Source_File (Name_Enter ("gnat.adc"), 1, Hi, Src, FD);
  
!       if not Null_Source_Buffer_Ptr (Src) then
!          --  We need to strip off the trailing EOF that was added by
!          --  Read_Source_File, because there might be another EOF in
!          --  the file, and two in a row causes Scan_SFN_Pragmas to give
!          --  errors.
! 
!          pragma Assert (Src (Hi) = EOF);
           Scan_SFN_Pragmas
!            (String (Src (1 .. Hi - 1)),
              Set_File_Name'Access,
              Set_File_Name_Pattern'Access);
        end if;
diff -Nrcpad gcc-7.3.0/gcc/ada/fname-sf.ads gcc-8.1.0/gcc/ada/fname-sf.ads
*** gcc-7.3.0/gcc/ada/fname-sf.ads	Mon Sep 10 12:47:10 2007
--- gcc-8.1.0/gcc/ada/fname-sf.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2007, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/fname-uf.adb gcc-8.1.0/gcc/ada/fname-uf.adb
*** gcc-7.3.0/gcc/ada/fname-uf.adb	Fri Aug  1 09:38:48 2014
--- gcc-8.1.0/gcc/ada/fname-uf.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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 Fname.UF is
*** 231,237 ****
        --    _and_.ads
  
        --  which is bit peculiar, but we keep it that way. This means that we
!       --  avoid bombs due to writing a bad file name, and w get expected error
        --  processing downstream, e.g. a compilation following gnatchop.
  
        if Name_Buffer (1) = '"' then
--- 231,237 ----
        --    _and_.ads
  
        --  which is bit peculiar, but we keep it that way. This means that we
!       --  avoid bombs due to writing a bad file name, and we get expected error
        --  processing downstream, e.g. a compilation following gnatchop.
  
        if Name_Buffer (1) = '"' then
*************** package body Fname.UF is
*** 298,311 ****
              Pent := SFN_Patterns.First;
              while Pent <= SFN_Patterns.Last loop
                 if SFN_Patterns.Table (Pent).Typ = Unit_Char_Search then
-                   Name_Len := 0;
- 
                    --  Determine if we have a predefined file name
  
-                   Name_Len := Uname'Length;
-                   Name_Buffer (1 .. Name_Len) := Uname;
                    Is_Predef :=
!                     Is_Predefined_File_Name (Renamings_Included => True);
  
                    --  Found a match, execute the pattern
  
--- 298,308 ----
              Pent := SFN_Patterns.First;
              while Pent <= SFN_Patterns.Last loop
                 if SFN_Patterns.Table (Pent).Typ = Unit_Char_Search then
                    --  Determine if we have a predefined file name
  
                    Is_Predef :=
!                     Is_Predefined_Unit_Name
!                       (Uname, Renamings_Included => True);
  
                    --  Found a match, execute the pattern
  
*************** package body Fname.UF is
*** 552,559 ****
  
     procedure Lock is
     begin
-       SFN_Table.Locked := True;
        SFN_Table.Release;
     end Lock;
  
     -------------------
--- 549,556 ----
  
     procedure Lock is
     begin
        SFN_Table.Release;
+       SFN_Table.Locked := True;
     end Lock;
  
     -------------------
diff -Nrcpad gcc-7.3.0/gcc/ada/fname-uf.ads gcc-8.1.0/gcc/ada/fname-uf.ads
*** gcc-7.3.0/gcc/ada/fname-uf.ads	Mon Sep 10 12:47:10 2007
--- gcc-8.1.0/gcc/ada/fname-uf.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2007, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/fname.adb gcc-8.1.0/gcc/ada/fname.adb
*** gcc-7.3.0/gcc/ada/fname.adb	Mon May  2 10:36:45 2016
--- gcc-8.1.0/gcc/ada/fname.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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 Fname is
*** 57,179 ****
       Table_Increment      => Alloc.SFN_Table_Increment,
       Table_Name           => "Fname_Dummy_Table");
  
     ---------------------------
     -- Is_Internal_File_Name --
     ---------------------------
  
     function Is_Internal_File_Name
!      (Fname              : File_Name_Type;
        Renamings_Included : Boolean := True) return Boolean
     is
     begin
        if Is_Predefined_File_Name (Fname, Renamings_Included) then
           return True;
  
!       --  Once Is_Predefined_File_Name has been called and returns False,
!       --  Name_Buffer contains Fname and Name_Len is set to 8.
! 
!       elsif Name_Buffer (1 .. 2) = "g-"
!         or else Name_Buffer (1 .. 8) = "gnat    "
!       then
!          return True;
  
!       else
!          return False;
!       end if;
     end Is_Internal_File_Name;
  
     -----------------------------
     -- Is_Predefined_File_Name --
     -----------------------------
  
-    --  This should really be a test of unit name, given the possibility of
-    --  pragma Source_File_Name setting arbitrary file names for any files???
- 
-    --  Once Is_Predefined_File_Name has been called and returns False,
-    --  Name_Buffer contains Fname and Name_Len is set to 8. This is used
-    --  only by Is_Internal_File_Name, and is not part of the official
-    --  external interface of this function.
- 
     function Is_Predefined_File_Name
!      (Fname              : File_Name_Type;
        Renamings_Included : Boolean := True) return Boolean
     is
     begin
!       Get_Name_String (Fname);
!       return Is_Predefined_File_Name (Renamings_Included);
!    end Is_Predefined_File_Name;
! 
!    function Is_Predefined_File_Name
!      (Renamings_Included : Boolean := True) return Boolean
!    is
!       subtype Str8 is String (1 .. 8);
  
!       Predef_Names : constant array (1 .. 11) of Str8 :=
!         ("ada     ",       -- Ada
!          "interfac",       -- Interfaces
!          "system  ",       -- System
  
!          --  Remaining entries are only considered if Renamings_Included true
  
!          "calendar",       -- Calendar
!          "machcode",       -- Machine_Code
!          "unchconv",       -- Unchecked_Conversion
!          "unchdeal",       -- Unchecked_Deallocation
!          "directio",       -- Direct_IO
!          "ioexcept",       -- IO_Exceptions
!          "sequenio",       -- Sequential_IO
!          "text_io ");      -- Text_IO
  
!          Num_Entries : constant Natural :=
!                          3 + 8 * Boolean'Pos (Renamings_Included);
  
!    begin
!       --  Remove extension (if present)
  
!       if Name_Len > 4 and then Name_Buffer (Name_Len - 3) = '.' then
!          Name_Len := Name_Len - 4;
        end if;
  
!       --  Definitely predefined if prefix is a- i- or s- followed by letter
  
!       if Name_Len >=  3
!         and then Name_Buffer (2) = '-'
!         and then (Name_Buffer (1) = 'a'
!                     or else
!                   Name_Buffer (1) = 'i'
!                     or else
!                   Name_Buffer (1) = 's')
!         and then (Name_Buffer (3) in 'a' .. 'z'
!                     or else
!                   Name_Buffer (3) in 'A' .. 'Z')
        then
           return True;
  
!       --  Definitely false if longer than 12 characters (8.3)
  
!       elsif Name_Len > 8 then
!          return False;
!       end if;
  
!       --  Otherwise check against special list, first padding to 8 characters
  
!       while Name_Len < 8 loop
!          Name_Len := Name_Len + 1;
!          Name_Buffer (Name_Len) := ' ';
!       end loop;
  
!       for J in 1 .. Num_Entries loop
!          if Name_Buffer (1 .. 8) = Predef_Names (J) then
!             return True;
!          end if;
!       end loop;
  
!       --  Note: when we return False here, the Name_Buffer contains the
!       --  padded file name. This is not defined for clients of the package,
!       --  but is used by Is_Internal_File_Name.
  
        return False;
!    end Is_Predefined_File_Name;
  
     ---------------
     -- Tree_Read --
--- 57,272 ----
       Table_Increment      => Alloc.SFN_Table_Increment,
       Table_Name           => "Fname_Dummy_Table");
  
+    function Has_Internal_Extension (Fname : String) return Boolean;
+    pragma Inline (Has_Internal_Extension);
+    --  True if the extension is appropriate for an internal/predefined unit.
+    --  That means ".ads" or ".adb" for source files, and ".ali" for ALI files.
+ 
+    function Has_Prefix (X, Prefix : String) return Boolean;
+    pragma Inline (Has_Prefix);
+    --  True if Prefix is at the beginning of X. For example,
+    --  Has_Prefix ("a-filename.ads", Prefix => "a-") is True.
+ 
+    ----------------------------
+    -- Has_Internal_Extension --
+    ----------------------------
+ 
+    function Has_Internal_Extension (Fname : String) return Boolean is
+    begin
+       if Fname'Length >= 4 then
+          declare
+             S : String renames Fname (Fname'Last - 3 .. Fname'Last);
+          begin
+             return S = ".ads" or else S = ".adb" or else S = ".ali";
+          end;
+       end if;
+       return False;
+    end Has_Internal_Extension;
+ 
+    ----------------
+    -- Has_Prefix --
+    ----------------
+ 
+    function Has_Prefix (X, Prefix : String) return Boolean is
+    begin
+       if X'Length >= Prefix'Length then
+          declare
+             S : String renames X (X'First .. X'First + Prefix'Length - 1);
+          begin
+             return S = Prefix;
+          end;
+       end if;
+       return False;
+    end Has_Prefix;
+ 
+    -----------------------
+    -- Is_GNAT_File_Name --
+    -----------------------
+ 
+    function Is_GNAT_File_Name (Fname : String) return Boolean is
+    begin
+       --  Check for internal extensions before checking prefixes, so we don't
+       --  think (e.g.) "gnat.adc" is internal.
+ 
+       if not Has_Internal_Extension (Fname) then
+          return False;
+       end if;
+ 
+       --  Definitely internal if prefix is g-
+ 
+       if Has_Prefix (Fname, "g-") then
+          return True;
+       end if;
+ 
+       --  See the note in Is_Predefined_File_Name for the rationale
+ 
+       return Fname'Length = 8 and then Has_Prefix (Fname, "gnat");
+    end Is_GNAT_File_Name;
+ 
+    function Is_GNAT_File_Name (Fname : File_Name_Type) return Boolean is
+       Result : constant Boolean :=
+                  Is_GNAT_File_Name (Get_Name_String (Fname));
+    begin
+       return Result;
+    end Is_GNAT_File_Name;
+ 
     ---------------------------
     -- Is_Internal_File_Name --
     ---------------------------
  
     function Is_Internal_File_Name
!      (Fname              : String;
        Renamings_Included : Boolean := True) return Boolean
     is
     begin
        if Is_Predefined_File_Name (Fname, Renamings_Included) then
           return True;
+       end if;
  
!       return Is_GNAT_File_Name (Fname);
!    end Is_Internal_File_Name;
  
!    function Is_Internal_File_Name
!      (Fname              : File_Name_Type;
!       Renamings_Included : Boolean := True) return Boolean
!    is
!       Result : constant Boolean :=
!                  Is_Internal_File_Name
!                    (Get_Name_String (Fname), Renamings_Included);
!    begin
!       return Result;
     end Is_Internal_File_Name;
  
     -----------------------------
     -- Is_Predefined_File_Name --
     -----------------------------
  
     function Is_Predefined_File_Name
!      (Fname              : String;
        Renamings_Included : Boolean := True) return Boolean
     is
     begin
!       --  Definitely false if longer than 12 characters (8.3)
!       --  except for the Interfaces packages
  
!       if Fname'Length > 12
!         and then Fname (Fname'First .. Fname'First + 1) /= "i-"
!       then
!          return False;
!       end if;
  
!       if not Has_Internal_Extension (Fname) then
!          return False;
!       end if;
  
!       --  Definitely predefined if prefix is a- i- or s-
  
!       if Fname'Length >= 2 then
!          declare
!             S : String renames Fname (Fname'First .. Fname'First + 1);
!          begin
!             if S = "a-" or else S = "i-" or else S = "s-" then
!                return True;
!             end if;
!          end;
!       end if;
  
!       --  We include the "." in the prefixes below, so we don't match (e.g.)
!       --  adamant.ads. So the first line matches "ada.ads", "ada.adb", and
!       --  "ada.ali". But that's not necessary if they have 8 characters.
  
!       if Has_Prefix (Fname, "ada.")             --  Ada
!         or else Has_Prefix (Fname, "interfac")  --  Interfaces
!         or else Has_Prefix (Fname, "system.a")  --  System
!       then
!          return True;
        end if;
  
!       --  If instructed and the name has 8+ characters, check for renamings
  
!       if Renamings_Included
!         and then Is_Predefined_Renaming_File_Name (Fname)
        then
           return True;
+       end if;
  
!       return False;
!    end Is_Predefined_File_Name;
  
!    function Is_Predefined_File_Name
!      (Fname              : File_Name_Type;
!       Renamings_Included : Boolean := True) return Boolean
!    is
!       Result : constant Boolean :=
!                  Is_Predefined_File_Name
!                    (Get_Name_String (Fname), Renamings_Included);
!    begin
!       return Result;
!    end Is_Predefined_File_Name;
  
!    --------------------------------------
!    -- Is_Predefined_Renaming_File_Name --
!    --------------------------------------
  
!    function Is_Predefined_Renaming_File_Name
!      (Fname : String) return Boolean
!    is
!       subtype Str8 is String (1 .. 8);
  
!       Renaming_Names : constant array (1 .. 8) of Str8 :=
!         ("calendar",   --  Calendar
!          "machcode",   --  Machine_Code
!          "unchconv",   --  Unchecked_Conversion
!          "unchdeal",   --  Unchecked_Deallocation
!          "directio",   --  Direct_IO
!          "ioexcept",   --  IO_Exceptions
!          "sequenio",   --  Sequential_IO
!          "text_io.");  --  Text_IO
!    begin
!       --  Definitely false if longer than 12 characters (8.3)
  
!       if Fname'Length in 8 .. 12 then
!          declare
!             S : String renames Fname (Fname'First .. Fname'First + 7);
!          begin
!             for J in Renaming_Names'Range loop
!                if S = Renaming_Names (J) then
!                   return True;
!                end if;
!             end loop;
!          end;
!       end if;
  
        return False;
!    end Is_Predefined_Renaming_File_Name;
! 
!    function Is_Predefined_Renaming_File_Name
!      (Fname : File_Name_Type) return Boolean is
!       Result : constant Boolean :=
!                  Is_Predefined_Renaming_File_Name (Get_Name_String (Fname));
!    begin
!       return Result;
!    end Is_Predefined_Renaming_File_Name;
  
     ---------------
     -- Tree_Read --
diff -Nrcpad gcc-7.3.0/gcc/ada/fname.ads gcc-8.1.0/gcc/ada/fname.ads
*** gcc-7.3.0/gcc/ada/fname.ads	Fri Aug  1 09:38:48 2014
--- gcc-8.1.0/gcc/ada/fname.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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 Fname is
*** 63,89 ****
     -----------------
  
     function Is_Predefined_File_Name
       (Fname              : File_Name_Type;
        Renamings_Included : Boolean := True) return Boolean;
!    --  This function determines if the given file name (which must be a simple
!    --  file name with no directory information) is the file name for one of the
!    --  predefined library units (i.e. part of the Ada, System, or Interface
!    --  hierarchies). Note that units in the GNAT hierarchy are not considered
!    --  predefined (see Is_Internal_File_Name below). On return, Name_Buffer
!    --  contains the file name. The Renamings_Included parameter indicates
!    --  whether annex J renamings such as Text_IO are to be considered as
!    --  predefined. If Renamings_Included is True, then Text_IO will return
!    --  True, otherwise only children of Ada, Interfaces and System return True.
  
!    function Is_Predefined_File_Name
!      (Renamings_Included : Boolean := True) return Boolean;
!    --  This version is called with the file name already in Name_Buffer
  
     function Is_Internal_File_Name
       (Fname              : File_Name_Type;
        Renamings_Included : Boolean := True) return Boolean;
!    --  Similar to Is_Predefined_File_Name. The internal file set is a superset
!    --  of the predefined file set including children of GNAT.
  
     procedure Tree_Read;
     --  Dummy procedure (reads dummy table values from tree file)
--- 63,104 ----
     -----------------
  
     function Is_Predefined_File_Name
+      (Fname              : String;
+       Renamings_Included : Boolean := True) return Boolean;
+    function Is_Predefined_File_Name
       (Fname              : File_Name_Type;
        Renamings_Included : Boolean := True) return Boolean;
!    --  These functions determine if the given file name (which must be a simple
!    --  file name with no directory information) is the source or ALI file name
!    --  for one of the predefined library units (i.e. part of the Ada, System,
!    --  or Interface hierarchies). Note that units in the GNAT hierarchy are not
!    --  considered predefined (see Is_Internal_File_Name below).
!    --
!    --  The Renamings_Included parameter indicates whether annex J renamings
!    --  such as Text_IO are to be considered as predefined. If
!    --  Renamings_Included is True, then Text_IO will return True, otherwise
!    --  only children of Ada, Interfaces and System return True.
  
!    function Is_Predefined_Renaming_File_Name
!      (Fname : String) return Boolean;
!    function Is_Predefined_Renaming_File_Name
!      (Fname : File_Name_Type) return Boolean;
!    --  True if Fname is the file name for a predefined renaming (the same file
!    --  names that are included if Renamings_Included => True is passed to
!    --  Is_Predefined_File_Name).
  
     function Is_Internal_File_Name
+      (Fname              : String;
+       Renamings_Included : Boolean := True) return Boolean;
+    function Is_Internal_File_Name
       (Fname              : File_Name_Type;
        Renamings_Included : Boolean := True) return Boolean;
!    --  Same as Is_Predefined_File_Name, except units in the GNAT hierarchy are
!    --  included.
! 
!    function Is_GNAT_File_Name (Fname : String) return Boolean;
!    function Is_GNAT_File_Name (Fname : File_Name_Type) return Boolean;
!    --  True for units in the GNAT hierarchy
  
     procedure Tree_Read;
     --  Dummy procedure (reads dummy table values from tree file)
diff -Nrcpad gcc-7.3.0/gcc/ada/freeze.adb gcc-8.1.0/gcc/ada/freeze.adb
*** gcc-7.3.0/gcc/ada/freeze.adb	Mon Jan 23 11:54:05 2017
--- gcc-8.1.0/gcc/ada/freeze.adb	Thu Jan 11 08:56:12 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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 Exp_Disp;  use Exp_Disp;
*** 37,43 ****
  with Exp_Pakd;  use Exp_Pakd;
  with Exp_Util;  use Exp_Util;
  with Exp_Tss;   use Exp_Tss;
- with Fname;     use Fname;
  with Ghost;     use Ghost;
  with Layout;    use Layout;
  with Lib;       use Lib;
--- 37,42 ----
*************** package body Freeze is
*** 712,722 ****
              end;
           end if;
  
!          if Present (Init) then
  
!             --  Capture initialization value at point of declaration,
!             --  and make explicit assignment legal, because object may
!             --  be a constant.
  
              Remove_Side_Effects (Init);
              Lhs := New_Occurrence_Of (E, Sloc (Decl));
--- 711,726 ----
              end;
           end if;
  
!          --  Remove side effects from initial expression, except in the case
!          --  of a build-in-place call, which has its own later expansion.
  
!          if Present (Init)
!            and then (Nkind (Init) /= N_Function_Call
!              or else not Is_Expanded_Build_In_Place_Call (Init))
!          then
! 
!             --  Capture initialization value at point of declaration, and make
!             --  explicit assignment legal, because object may be a constant.
  
              Remove_Side_Effects (Init);
              Lhs := New_Occurrence_Of (E, Sloc (Decl));
*************** package body Freeze is
*** 1174,1181 ****
  
        Component_Aliased : Boolean;
  
!       Comp_Byte_Aligned : Boolean;
!       --  Set for the record case, True if Comp starts on a byte boundary
        --  (in which case it is allowed to have different storage order).
  
        Comp_SSO_Differs  : Boolean;
--- 1178,1185 ----
  
        Component_Aliased : Boolean;
  
!       Comp_Byte_Aligned : Boolean := False;
!       --  Set for the record case, True if Comp is aligned on byte boundaries
        --  (in which case it is allowed to have different storage order).
  
        Comp_SSO_Differs  : Boolean;
*************** package body Freeze is
*** 1195,1206 ****
  
           else
              --  If a component clause is present, check if the component starts
!             --  on a storage element boundary. Otherwise conservatively assume
!             --  it does so only in the case where the record is not packed.
  
              if Present (Component_Clause (Comp)) then
                 Comp_Byte_Aligned :=
!                  Normalized_First_Bit (Comp) mod System_Storage_Unit = 0;
              else
                 Comp_Byte_Aligned := not Is_Packed (Encl_Type);
              end if;
--- 1199,1212 ----
  
           else
              --  If a component clause is present, check if the component starts
!             --  and ends on byte boundaries. Otherwise conservatively assume it
!             --  does so only in the case where the record is not packed.
  
              if Present (Component_Clause (Comp)) then
                 Comp_Byte_Aligned :=
!                  (Normalized_First_Bit (Comp) mod System_Storage_Unit = 0)
!                    and then
!                  (Esize (Comp) mod System_Storage_Unit = 0);
              else
                 Comp_Byte_Aligned := not Is_Packed (Encl_Type);
              end if;
*************** package body Freeze is
*** 1265,1282 ****
  
              --  Component SSO differs from enclosing composite:
  
-             --  Reject if component is a bit-packed array, as it is represented
-             --  as a scalar internally.
- 
-             if Is_Bit_Packed_Array (Comp_Base) then
-                Error_Msg_N
-                  ("type of packed component must have same scalar storage "
-                   & "order as enclosing composite", Err_Node);
- 
              --  Reject if composite is a bit-packed array, as it is rewritten
              --  into an array of scalars.
  
!             elsif Is_Bit_Packed_Array (Encl_Base) then
                 Error_Msg_N
                   ("type of packed array must have same scalar storage order "
                    & "as component", Err_Node);
--- 1271,1280 ----
  
              --  Component SSO differs from enclosing composite:
  
              --  Reject if composite is a bit-packed array, as it is rewritten
              --  into an array of scalars.
  
!             if Is_Bit_Packed_Array (Encl_Base) then
                 Error_Msg_N
                   ("type of packed array must have same scalar storage order "
                    & "as component", Err_Node);
*************** package body Freeze is
*** 1383,1390 ****
--- 1381,1392 ----
     begin
        Decl := Original_Node (Unit_Declaration_Node (Nam));
  
+       --  The subprogram body created for the expression function is not
+       --  itself a freeze point.
+ 
        if Scope (Nam) = Current_Scope
          and then Nkind (Decl) = N_Expression_Function
+         and then Nkind (N) /= N_Subprogram_Body
        then
           Check_Deferred (Expression (Decl));
        end if;
*************** package body Freeze is
*** 1395,1406 ****
     --------------------------------
  
     procedure Check_Inherited_Conditions (R : Entity_Id) is
!       Prim_Ops : constant Elist_Id := Primitive_Operations (R);
!       A_Post   : Node_Id;
!       A_Pre    : Node_Id;
!       Op_Node  : Elmt_Id;
!       Par_Prim : Entity_Id;
!       Prim     : Entity_Id;
  
     begin
        Op_Node := First_Elmt (Prim_Ops);
--- 1397,1467 ----
     --------------------------------
  
     procedure Check_Inherited_Conditions (R : Entity_Id) is
!       Prim_Ops      : constant Elist_Id := Primitive_Operations (R);
!       Decls         : List_Id;
!       Needs_Wrapper : Boolean;
!       Op_Node       : Elmt_Id;
!       Par_Prim      : Entity_Id;
!       Prim          : Entity_Id;
! 
!       procedure Build_Inherited_Condition_Pragmas (Subp : Entity_Id);
!       --  Build corresponding pragmas for an operation whose ancestor has
!       --  class-wide pre/postconditions. If the operation is inherited, the
!       --  pragmas force the creation of a wrapper for the inherited operation.
!       --  If the ancestor is being overridden, the pragmas are constructed only
!       --  to verify their legality, in case they contain calls to other
!       --  primitives that may haven been overridden.
! 
!       ---------------------------------------
!       -- Build_Inherited_Condition_Pragmas --
!       ---------------------------------------
! 
!       procedure Build_Inherited_Condition_Pragmas (Subp : Entity_Id) is
!          A_Post   : Node_Id;
!          A_Pre    : Node_Id;
!          New_Prag : Node_Id;
! 
!       begin
!          A_Pre := Get_Class_Wide_Pragma (Par_Prim, Pragma_Precondition);
! 
!          if Present (A_Pre) then
!             New_Prag := New_Copy_Tree (A_Pre);
!             Build_Class_Wide_Expression
!               (Prag          => New_Prag,
!                Subp          => Prim,
!                Par_Subp      => Par_Prim,
!                Adjust_Sloc   => False,
!                Needs_Wrapper => Needs_Wrapper);
! 
!             if Needs_Wrapper
!               and then not Comes_From_Source (Subp)
!               and then Expander_Active
!             then
!                Append (New_Prag, Decls);
!             end if;
!          end if;
! 
!          A_Post := Get_Class_Wide_Pragma (Par_Prim, Pragma_Postcondition);
! 
!          if Present (A_Post) then
!             New_Prag := New_Copy_Tree (A_Post);
!             Build_Class_Wide_Expression
!               (Prag           => New_Prag,
!                Subp           => Prim,
!                Par_Subp       => Par_Prim,
!                Adjust_Sloc    => False,
!                Needs_Wrapper  => Needs_Wrapper);
! 
!             if Needs_Wrapper
!               and then not Comes_From_Source (Subp)
!               and then Expander_Active
!             then
!                Append (New_Prag, Decls);
!             end if;
!          end if;
!       end Build_Inherited_Condition_Pragmas;
! 
!    --  Start of processing for Check_Inherited_Conditions
  
     begin
        Op_Node := First_Elmt (Prim_Ops);
*************** package body Freeze is
*** 1413,1479 ****
           if Present (Overridden_Operation (Prim))
             and then Comes_From_Source (Prim)
           then
!             Update_Primitives_Mapping (Overridden_Operation (Prim), Prim);
  
!             --  In SPARK mode this is where we can collect the inherited
!             --  conditions, because we do not create the Check pragmas that
!             --  normally convey the the modified class-wide conditions on
!             --  overriding operations.
  
!             if SPARK_Mode = On then
  
!                --  Analyze the contract items of the parent operation, before
!                --  they are rewritten when inherited.
  
!                Analyze_Entry_Or_Subprogram_Contract
!                  (Overridden_Operation (Prim));
  
!                --  Now verify the legality of inherited contracts for LSP
!                --  conformance.
  
                 Collect_Inherited_Class_Wide_Conditions (Prim);
              end if;
           end if;
  
           Next_Elmt (Op_Node);
        end loop;
  
!       --  In all cases, we examine inherited operations to check whether they
!       --  require a wrapper to handle inherited conditions that call other
!       --  primitives, so that LSP can be verified/enforced.
! 
!       --  Wrapper construction TBD.
  
        Op_Node := First_Elmt (Prim_Ops);
        while Present (Op_Node) loop
!          Prim := Node (Op_Node);
           if not Comes_From_Source (Prim) and then Present (Alias (Prim)) then
              Par_Prim := Alias (Prim);
  
!             --  Analyze the contract items of the parent operation, before
!             --  they are rewritten when inherited.
  
              Analyze_Entry_Or_Subprogram_Contract (Par_Prim);
  
!             A_Pre := Get_Pragma (Par_Prim, Pragma_Precondition);
  
!             if Present (A_Pre) and then Class_Present (A_Pre) then
!                Build_Class_Wide_Expression
!                  (Prag        => New_Copy_Tree (A_Pre),
!                   Subp        => Prim,
!                   Par_Subp    => Par_Prim,
!                   Adjust_Sloc => False);
!             end if;
  
!             A_Post := Get_Pragma (Par_Prim, Pragma_Postcondition);
  
!             if Present (A_Post) and then Class_Present (A_Post) then
!                Build_Class_Wide_Expression
!                  (Prag        => New_Copy_Tree (A_Post),
!                   Subp        => Prim,
!                   Par_Subp    => Par_Prim,
!                   Adjust_Sloc => False);
!             end if;
           end if;
  
           Next_Elmt (Op_Node);
--- 1474,1605 ----
           if Present (Overridden_Operation (Prim))
             and then Comes_From_Source (Prim)
           then
!             Par_Prim := Overridden_Operation (Prim);
!             Update_Primitives_Mapping (Par_Prim, Prim);
!          end if;
  
!          Next_Elmt (Op_Node);
!       end loop;
  
!       --  Perform validity checks on the inherited conditions of overriding
!       --  operations, for conformance with LSP, and apply SPARK-specific
!       --  restrictions on inherited conditions.
  
!       Op_Node := First_Elmt (Prim_Ops);
!       while Present (Op_Node) loop
!          Prim := Node (Op_Node);
  
!          if Present (Overridden_Operation (Prim))
!            and then Comes_From_Source (Prim)
!          then
!             Par_Prim := Overridden_Operation (Prim);
  
!             --  Analyze the contract items of the overridden operation, before
!             --  they are rewritten as pragmas.
! 
!             Analyze_Entry_Or_Subprogram_Contract (Par_Prim);
! 
!             --  In GNATprove mode this is where we can collect the inherited
!             --  conditions, because we do not create the Check pragmas that
!             --  normally convey the the modified class-wide conditions on
!             --  overriding operations.
  
+             if GNATprove_Mode then
                 Collect_Inherited_Class_Wide_Conditions (Prim);
+ 
+             --  Otherwise build the corresponding pragmas to check for legality
+             --  of the inherited condition.
+ 
+             else
+                Build_Inherited_Condition_Pragmas (Prim);
              end if;
           end if;
  
           Next_Elmt (Op_Node);
        end loop;
  
!       --  Now examine the inherited operations to check whether they require
!       --  a wrapper to handle inherited conditions that call other primitives,
!       --  so that LSP can be verified/enforced.
  
        Op_Node := First_Elmt (Prim_Ops);
+       Needs_Wrapper := False;
+ 
        while Present (Op_Node) loop
!          Decls := Empty_List;
!          Prim  := Node (Op_Node);
! 
           if not Comes_From_Source (Prim) and then Present (Alias (Prim)) then
              Par_Prim := Alias (Prim);
  
!             --  Analyze the contract items of the parent operation, and
!             --  determine whether a wrapper is needed. This is determined
!             --  when the condition is rewritten in sem_prag, using the
!             --  mapping between overridden and overriding operations built
!             --  in the loop above.
  
              Analyze_Entry_Or_Subprogram_Contract (Par_Prim);
+             Build_Inherited_Condition_Pragmas (Prim);
+          end if;
  
!          if Needs_Wrapper
!            and then not Is_Abstract_Subprogram (Par_Prim)
!            and then Expander_Active
!          then
!             --  We need to build a new primitive that overrides the inherited
!             --  one, and whose inherited expression has been updated above.
!             --  These expressions are the arguments of pragmas that are part
!             --  of the declarations of the wrapper. The wrapper holds a single
!             --  statement that is a call to the class-wide clone, where the
!             --  controlling actuals are conversions to the corresponding type
!             --  in the parent primitive:
  
!             --    procedure New_Prim (F1 : T1; ...);
!             --    procedure New_Prim (F1 : T1; ...) is
!             --       pragma Check (Precondition, Expr);
!             --    begin
!             --       Par_Prim_Clone (Par_Type (F1), ...);
!             --    end;
  
!             --  If the primitive is a function the statement is a return
!             --  statement with a call.
  
!             declare
!                Loc      : constant Source_Ptr := Sloc (R);
!                Par_R    : constant Node_Id    := Parent (R);
!                New_Body : Node_Id;
!                New_Decl : Node_Id;
!                New_Spec : Node_Id;
! 
!             begin
!                New_Spec := Build_Overriding_Spec (Par_Prim, R);
!                New_Decl :=
!                  Make_Subprogram_Declaration (Loc,
!                    Specification => New_Spec);
! 
!                --  Insert the declaration and the body of the wrapper after
!                --  type declaration that generates inherited operation. For
!                --  a null procedure, the declaration implies a null body.
! 
!                if Nkind (New_Spec) = N_Procedure_Specification
!                  and then Null_Present (New_Spec)
!                then
!                   Insert_After_And_Analyze (Par_R, New_Decl);
! 
!                else
!                   --  Build body as wrapper to a call to the already built
!                   --  class-wide clone.
! 
!                   New_Body :=
!                     Build_Class_Wide_Clone_Call
!                       (Loc, Decls, Par_Prim, New_Spec);
! 
!                   Insert_List_After_And_Analyze
!                     (Par_R, New_List (New_Decl, New_Body));
!                end if;
!             end;
! 
!             Needs_Wrapper := False;
           end if;
  
           Next_Elmt (Op_Node);
*************** package body Freeze is
*** 2000,2005 ****
--- 2126,2132 ----
  
        Freeze_Nodes : constant List_Id :=
                         Freeze_Entity (T, N, Do_Freeze_Profile);
+       Pack         : constant Entity_Id := Scope (T);
  
     begin
        if Ekind (T) = E_Function then
*************** package body Freeze is
*** 2007,2013 ****
        end if;
  
        if Is_Non_Empty_List (Freeze_Nodes) then
!          Insert_Actions (N, Freeze_Nodes);
        end if;
     end Freeze_Before;
  
--- 2134,2156 ----
        end if;
  
        if Is_Non_Empty_List (Freeze_Nodes) then
! 
!          --  If the entity is a type declared in an inner package, it may be
!          --  frozen by an outer declaration before the package itself is
!          --  frozen. Install the package scope to analyze the freeze nodes,
!          --  which may include generated subprograms such as predicate
!          --  functions, etc.
! 
!          if Is_Type (T) and then From_Nested_Package (T) then
!             Push_Scope (Pack);
!             Install_Visible_Declarations (Pack);
!             Install_Private_Declarations (Pack);
!             Insert_Actions (N, Freeze_Nodes);
!             End_Package_Scope (Pack);
! 
!          else
!             Insert_Actions (N, Freeze_Nodes);
!          end if;
        end if;
     end Freeze_Before;
  
*************** package body Freeze is
*** 2435,2441 ****
  
              --  Propagate flags for component type
  
!             if Is_Controlled_Active (Component_Type (Arr))
                or else Has_Controlled_Component (Ctyp)
              then
                 Set_Has_Controlled_Component (Arr);
--- 2578,2584 ----
  
              --  Propagate flags for component type
  
!             if Is_Controlled (Component_Type (Arr))
                or else Has_Controlled_Component (Ctyp)
              then
                 Set_Has_Controlled_Component (Arr);
*************** package body Freeze is
*** 2649,2655 ****
                       elsif Csiz mod System_Storage_Unit = 0
                         and then Is_Composite_Type (Ctyp)
                       then
- 
                          Set_Is_Packed            (Base_Type (Arr), True);
                          Set_Has_Non_Standard_Rep (Base_Type (Arr), True);
                          Set_Is_Bit_Packed_Array  (Base_Type (Arr), False);
--- 2792,2797 ----
*************** package body Freeze is
*** 3089,3100 ****
  
           --  Similar processing is needed for aspects that may affect
           --  object layout, like Alignment, if there is an initialization
!          --  expression.
  
           if Has_Delayed_Aspects (E)
             and then Expander_Active
             and then Is_Array_Type (Etype (E))
             and then Present (Expression (Parent (E)))
           then
              declare
                 Decl : constant Node_Id := Parent (E);
--- 3231,3245 ----
  
           --  Similar processing is needed for aspects that may affect
           --  object layout, like Alignment, if there is an initialization
!          --  expression. We don't do this if there is a pragma Linker_Section,
!          --  because it would prevent the back end from statically initializing
!          --  the object; we don't want elaboration code in that case.
  
           if Has_Delayed_Aspects (E)
             and then Expander_Active
             and then Is_Array_Type (Etype (E))
             and then Present (Expression (Parent (E)))
+            and then No (Linker_Section_Pragma (E))
           then
              declare
                 Decl : constant Node_Id := Parent (E);
*************** package body Freeze is
*** 3648,3661 ****
           --  cannot modify the size of alignment of an aliased component.
  
           All_Elem_Components : Boolean := True;
!          --  Set False if we encounter a component of a composite type
  
           All_Sized_Components : Boolean := True;
!          --  Set False if we encounter a component with unknown RM_Size
  
           All_Storage_Unit_Components : Boolean := True;
!          --  Set False if we encounter a component of a composite type whose
!          --  RM_Size is not a multiple of the storage unit.
  
           Elem_Component_Total_Esize : Uint := Uint_0;
           --  Accumulates total Esize values of all elementary components. Used
--- 3793,3807 ----
           --  cannot modify the size of alignment of an aliased component.
  
           All_Elem_Components : Boolean := True;
!          --  True if all components are of a type whose underlying type is
!          --  elementary.
  
           All_Sized_Components : Boolean := True;
!          --  True if all components have a known RM_Size
  
           All_Storage_Unit_Components : Boolean := True;
!          --  True if all components have an RM_Size that is a multiple of the
!          --  storage unit.
  
           Elem_Component_Total_Esize : Uint := Uint_0;
           --  Accumulates total Esize values of all elementary components. Used
*************** package body Freeze is
*** 3675,3680 ****
--- 3821,3830 ----
           --  Accumulates total RM_Size values of all sized components. Used
           --  for processing of Implicit_Packing.
  
+          Sized_Component_Total_Round_RM_Size : Uint := Uint_0;
+          --  Accumulates total RM_Size values of all sized components, rounded
+          --  individually to a multiple of the storage unit.
+ 
           SSO_ADC : Node_Id;
           --  Scalar_Storage_Order attribute definition clause for the record
  
*************** package body Freeze is
*** 3980,3998 ****
              --  an implicit subtype declaration.
  
              if Known_Static_RM_Size (Etype (Comp)) then
!                Sized_Component_Total_RM_Size :=
!                  Sized_Component_Total_RM_Size + RM_Size (Etype (Comp));
  
!                if Is_Elementary_Type (Etype (Comp)) then
!                   Elem_Component_Total_Esize :=
!                     Elem_Component_Total_Esize + Esize (Etype (Comp));
!                else
!                   All_Elem_Components := False;
  
!                   if RM_Size (Etype (Comp)) mod System_Storage_Unit /= 0 then
!                      All_Storage_Unit_Components := False;
                    end if;
!                end if;
              else
                 All_Sized_Components := False;
              end if;
--- 4130,4161 ----
              --  an implicit subtype declaration.
  
              if Known_Static_RM_Size (Etype (Comp)) then
!                declare
!                   Comp_Type : constant Entity_Id := Etype (Comp);
!                   Comp_Size : constant Uint := RM_Size (Comp_Type);
!                   SSU       : constant Int := Ttypes.System_Storage_Unit;
  
!                begin
!                   Sized_Component_Total_RM_Size :=
!                     Sized_Component_Total_RM_Size + Comp_Size;
  
!                   Sized_Component_Total_Round_RM_Size :=
!                     Sized_Component_Total_Round_RM_Size +
!                       (Comp_Size + SSU - 1) / SSU * SSU;
! 
!                   if Present (Underlying_Type (Comp_Type))
!                     and then Is_Elementary_Type (Underlying_Type (Comp_Type))
!                   then
!                      Elem_Component_Total_Esize :=
!                        Elem_Component_Total_Esize + Esize (Comp_Type);
!                   else
!                      All_Elem_Components := False;
! 
!                      if Comp_Size mod SSU /= 0 then
!                         All_Storage_Unit_Components := False;
!                      end if;
                    end if;
!                end;
              else
                 All_Sized_Components := False;
              end if;
*************** package body Freeze is
*** 4297,4313 ****
              end if;
           end;
  
-          --  Set OK_To_Reorder_Components depending on debug flags
- 
-          if Is_Base_Type (Rec) and then Convention (Rec) = Convention_Ada then
-             if (Has_Discriminants (Rec) and then Debug_Flag_Dot_V)
-                  or else
-                    (not Has_Discriminants (Rec) and then Debug_Flag_Dot_R)
-             then
-                Set_OK_To_Reorder_Components (Rec);
-             end if;
-          end if;
- 
           --  Check for useless pragma Pack when all components placed. We only
           --  do this check for record types, not subtypes, since a subtype may
           --  have all its components placed, and it still makes perfectly good
--- 4460,4465 ----
*************** package body Freeze is
*** 4359,4365 ****
                     (Has_Controlled_Component (Etype (Comp))
                       or else
                         (Chars (Comp) /= Name_uParent
!                          and then Is_Controlled_Active (Etype (Comp)))
                       or else
                         (Is_Protected_Type (Etype (Comp))
                           and then
--- 4511,4517 ----
                     (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
*************** package body Freeze is
*** 4469,4480 ****
                   and then RM_Size (Rec) < Elem_Component_Total_Esize)
               or else
                 (not All_Elem_Components
!                  and then not All_Storage_Unit_Components))
  
             --  And the total RM size cannot be greater than the specified size
             --  since otherwise packing will not get us where we have to be.
  
!            and then RM_Size (Rec) >= Sized_Component_Total_RM_Size
  
             --  Never do implicit packing in CodePeer or SPARK modes since
             --  we don't do any packing in these modes, since this generates
--- 4621,4633 ----
                   and then RM_Size (Rec) < Elem_Component_Total_Esize)
               or else
                 (not All_Elem_Components
!                  and then not All_Storage_Unit_Components
!                  and then RM_Size (Rec) < Sized_Component_Total_Round_RM_Size))
  
             --  And the total RM size cannot be greater than the specified size
             --  since otherwise packing will not get us where we have to be.
  
!            and then Sized_Component_Total_RM_Size <= RM_Size (Rec)
  
             --  Never do implicit packing in CodePeer or SPARK modes since
             --  we don't do any packing in these modes, since this generates
*************** package body Freeze is
*** 4508,4530 ****
           --  they are not standard Ada legality rules.
  
           if SPARK_Mode = On then
-             if Is_Effectively_Volatile (Rec) then
  
!                --  A discriminated type cannot be effectively volatile
!                --  (SPARK RM C.6(4)).
  
                 if Has_Discriminants (Rec) then
                    Error_Msg_N ("discriminated type & cannot be volatile", Rec);
- 
-                --  A tagged type cannot be effectively volatile
-                --  (SPARK RM C.6(5)).
- 
-                elsif Is_Tagged_Type (Rec) then
-                   Error_Msg_N ("tagged type & cannot be volatile", Rec);
                 end if;
  
              --  A non-effectively volatile record type cannot contain
!             --  effectively volatile components (SPARK RM C.6(2)).
  
              else
                 Comp := First_Component (Rec);
--- 4661,4677 ----
           --  they are not standard Ada legality rules.
  
           if SPARK_Mode = On then
  
!             --  A discriminated type cannot be effectively volatile
!             --  (SPARK RM 7.1.3(5)).
  
+             if Is_Effectively_Volatile (Rec) then
                 if Has_Discriminants (Rec) then
                    Error_Msg_N ("discriminated type & cannot be volatile", Rec);
                 end if;
  
              --  A non-effectively volatile record type cannot contain
!             --  effectively volatile components (SPARK RM 7.1.3(6)).
  
              else
                 Comp := First_Component (Rec);
*************** package body Freeze is
*** 4910,4921 ****
  
              Prag := Copy_Import_Pragma;
  
!             --  Fix up spec to be not imported any more
  
              Set_Has_Completion (E, False);
              Set_Import_Pragma  (E, Empty);
              Set_Interface_Name (E, Empty);
              Set_Is_Imported    (E, False);
  
              --  Grab the subprogram declaration and specification
  
--- 5057,5069 ----
  
              Prag := Copy_Import_Pragma;
  
!             --  Fix up spec so it is no longer imported and has convention Ada
  
              Set_Has_Completion (E, False);
              Set_Import_Pragma  (E, Empty);
              Set_Interface_Name (E, Empty);
              Set_Is_Imported    (E, False);
+             Set_Convention     (E, Convention_Ada);
  
              --  Grab the subprogram declaration and specification
  
*************** package body Freeze is
*** 4982,4988 ****
  
        --  Local variables
  
!       Mode : Ghost_Mode_Type;
  
     --  Start of processing for Freeze_Entity
  
--- 5130,5137 ----
  
        --  Local variables
  
!       Saved_GM : constant Ghost_Mode_Type := Ghost_Mode;
!       --  Save the Ghost mode to restore on exit
  
     --  Start of processing for Freeze_Entity
  
*************** package body Freeze is
*** 4991,4997 ****
        --  now to ensure that any nodes generated during freezing are properly
        --  flagged as Ghost.
  
!       Set_Ghost_Mode (E, Mode);
  
        --  We are going to test for various reasons why this entity need not be
        --  frozen here, but in the case of an Itype that's defined within a
--- 5140,5146 ----
        --  now to ensure that any nodes generated during freezing are properly
        --  flagged as Ghost.
  
!       Set_Ghost_Mode (E);
  
        --  We are going to test for various reasons why this entity need not be
        --  frozen here, but in the case of an Itype that's defined within a
*************** package body Freeze is
*** 5138,5145 ****
        --  pragma or attribute definition clause in the tree at this point. We
        --  also analyze the aspect specification node at the freeze point when
        --  the aspect doesn't correspond to pragma/attribute definition clause.
  
!       if Has_Delayed_Aspects (E) then
           Analyze_Aspects_At_Freeze_Point (E);
        end if;
  
--- 5287,5298 ----
        --  pragma or attribute definition clause in the tree at this point. We
        --  also analyze the aspect specification node at the freeze point when
        --  the aspect doesn't correspond to pragma/attribute definition clause.
+       --  In addition, a derived type may have inherited aspects that were
+       --  delayed in the parent, so these must also be captured now.
  
!       if Has_Delayed_Aspects (E)
!         or else May_Inherit_Delayed_Rep_Aspects (E)
!       then
           Analyze_Aspects_At_Freeze_Point (E);
        end if;
  
*************** package body Freeze is
*** 5357,5367 ****
--- 5510,5532 ----
              then
                 Explode_Initialization_Compound_Statement (E);
              end if;
+ 
+             --  Do not generate a freeze node for a generic unit
+ 
+             if Is_Generic_Unit (E) then
+                Result := No_List;
+                goto Leave;
+             end if;
           end if;
  
        --  Case of a type or subtype being frozen
  
        else
+          --  Verify several SPARK legality rules related to Ghost types now
+          --  that the type is frozen.
+ 
+          Check_Ghost_Type (E);
+ 
           --  We used to check here that a full type must have preelaborable
           --  initialization if it completes a private type specified with
           --  pragma Preelaborable_Initialization, but that missed cases where
*************** package body Freeze is
*** 5412,5432 ****
              end if;
           end;
  
-          if Is_Ghost_Entity (E) then
- 
-             --  A Ghost type cannot be concurrent (SPARK RM 6.9(19)). Verify
-             --  this legality rule first to five a finer-grained diagnostic.
- 
-             if Is_Concurrent_Type (E) then
-                Error_Msg_N ("ghost type & cannot be concurrent", E);
- 
-             --  A Ghost type cannot be effectively volatile (SPARK RM 6.9(7))
- 
-             elsif Is_Effectively_Volatile (E) then
-                Error_Msg_N ("ghost type & cannot be volatile", E);
-             end if;
-          end if;
- 
           --  Deal with special cases of freezing for subtype
  
           if E /= Base_Type (E) then
--- 5577,5582 ----
*************** package body Freeze is
*** 6598,6604 ****
        end if;
  
     <<Leave>>
!       Restore_Ghost_Mode (Mode);
        return Result;
     end Freeze_Entity;
  
--- 6748,6755 ----
        end if;
  
     <<Leave>>
!       Restore_Ghost_Mode (Saved_GM);
! 
        return Result;
     end Freeze_Entity;
  
*************** package body Freeze is
*** 8051,8057 ****
        if Is_Pure (E)
          and then Is_Subprogram (E)
          and then not Has_Pragma_Pure_Function (E)
!         and then not Is_Internal_File_Name (Unit_File_Name (Current_Sem_Unit))
        then
           Check_Function_With_Address_Parameter (E);
        end if;
--- 8202,8208 ----
        if Is_Pure (E)
          and then Is_Subprogram (E)
          and then not Has_Pragma_Pure_Function (E)
!         and then not Is_Internal_Unit (Current_Sem_Unit)
        then
           Check_Function_With_Address_Parameter (E);
        end if;
*************** package body Freeze is
*** 8076,8082 ****
        --  that we know the convention.
  
        if not Has_Foreign_Convention (E) then
!          Create_Extra_Formals (E);
           Set_Mechanisms (E);
  
           --  If this is convention Ada and a Valued_Procedure, that's odd
--- 8227,8236 ----
        --  that we know the convention.
  
        if not Has_Foreign_Convention (E) then
!          if No (Extra_Formals (E)) then
!             Create_Extra_Formals (E);
!          end if;
! 
           Set_Mechanisms (E);
  
           --  If this is convention Ada and a Valued_Procedure, that's odd
*************** package body Freeze is
*** 8289,8295 ****
              --  The analysis of the expression may generate insert actions,
              --  which of course must not be executed. We wrap those actions
              --  in a procedure that is not called, and later on eliminated.
!             --  The following cases have no side-effects, and are analyzed
              --  directly.
  
              if Nkind (Dcopy) = N_Identifier
--- 8443,8449 ----
              --  The analysis of the expression may generate insert actions,
              --  which of course must not be executed. We wrap those actions
              --  in a procedure that is not called, and later on eliminated.
!             --  The following cases have no side effects, and are analyzed
              --  directly.
  
              if Nkind (Dcopy) = N_Identifier
diff -Nrcpad gcc-7.3.0/gcc/ada/freeze.ads gcc-8.1.0/gcc/ada/freeze.ads
*** gcc-7.3.0/gcc/ada/freeze.ads	Mon May 16 10:14:19 2016
--- gcc-8.1.0/gcc/ada/freeze.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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
*** 114,128 ****
  
     --      Are always frozen at the point of declaration
  
!    --  The flag Has_Delayed_Freeze is used for to indicate that delayed
!    --  freezing is required. Usually the associated freeze node is allocated
!    --  at the freezing point. One special exception occurs with anonymous
!    --  base types, 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 types. 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?
  
--- 114,128 ----
  
     --      Are always frozen at the point of declaration
  
!    --  The flag Has_Delayed_Freeze is used to indicate that delayed freezing
!    --  is required. Usually the associated freeze node is allocated at the
!    --  freezing point. One special exception occurs with anonymous base types,
!    --  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?
  
diff -Nrcpad gcc-7.3.0/gcc/ada/frontend.adb gcc-8.1.0/gcc/ada/frontend.adb
*** gcc-7.3.0/gcc/ada/frontend.adb	Mon Jan 23 13:34:31 2017
--- gcc-8.1.0/gcc/ada/frontend.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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 Ghost;    use Ghost;
*** 38,44 ****
  with Inline;   use Inline;
  with Lib;      use Lib;
  with Lib.Load; use Lib.Load;
! with Lib.Xref; use Lib.Xref;
  with Live;     use Live;
  with Namet;    use Namet;
  with Nlists;   use Nlists;
--- 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;
*************** with Prep;
*** 49,76 ****
  with Prepcomp;
  with Restrict; use Restrict;
  with Rident;   use Rident;
! with Rtsfind;  use Rtsfind;
  with Snames;   use Snames;
  with Sprint;
  with Scn;      use Scn;
  with Sem;      use Sem;
  with Sem_Aux;
! with Sem_Ch8;  use Sem_Ch8;
  with Sem_SCIL;
  with Sem_Elab; use Sem_Elab;
  with Sem_Prag; use Sem_Prag;
! with Sem_Warn; use Sem_Warn;
  with Sinfo;    use Sinfo;
  with Sinput;   use Sinput;
  with Sinput.L; use Sinput.L;
! with SCIL_LL;  use SCIL_LL;
  with Tbuild;   use Tbuild;
  with Types;    use Types;
  
  procedure Frontend is
-    Config_Pragmas : List_Id;
-    --  Gather configuration pragmas
- 
  begin
     --  Carry out package initializations. These are initializations which might
     --  logically be performed at elaboration time, were it not for the fact
--- 49,73 ----
  with Prepcomp;
  with Restrict; use Restrict;
  with Rident;   use Rident;
! with Rtsfind;
  with Snames;   use Snames;
  with Sprint;
  with Scn;      use Scn;
  with Sem;      use Sem;
  with Sem_Aux;
! with Sem_Ch8;
  with Sem_SCIL;
  with Sem_Elab; use Sem_Elab;
  with Sem_Prag; use Sem_Prag;
! with Sem_Warn;
  with Sinfo;    use Sinfo;
  with Sinput;   use Sinput;
  with Sinput.L; use Sinput.L;
! with SCIL_LL;
  with Tbuild;   use Tbuild;
  with Types;    use Types;
  
  procedure Frontend is
  begin
     --  Carry out package initializations. These are initializations which might
     --  logically be performed at elaboration time, were it not for the fact
*************** begin
*** 90,95 ****
--- 87,93 ----
     Checks.Initialize;
     Sem_Warn.Initialize;
     Prep.Initialize;
+    Sem_Elab.Initialize;
  
     if Generate_SCIL then
        SCIL_LL.Initialize;
*************** begin
*** 129,151 ****
  
     --  Return immediately if the main source could not be found
  
!    if Sinput.Main_Source_File = No_Source_File then
        return;
     end if;
  
     --  Read and process configuration pragma files if present
  
     declare
        Save_Style_Check : constant Boolean := Opt.Style_Check;
        --  Save style check mode so it can be restored later
  
        Source_Config_File : Source_File_Index;
        --  Source reference for -gnatec configuration file
  
        Prag : Node_Id;
  
-       Temp_File : Boolean;
- 
     begin
        --  We always analyze config files with style checks off, since we
        --  don't want a miscellaneous gnat.adc that is around to discombobulate
--- 127,153 ----
  
     --  Return immediately if the main source could not be found
  
!    if Sinput.Main_Source_File <= No_Source_File then
        return;
     end if;
  
     --  Read and process configuration pragma files if present
  
     declare
+       Dot_Gnat_Adc : constant File_Name_Type := Name_Find ("./gnat.adc");
+       Gnat_Adc     : constant File_Name_Type := Name_Find ("gnat.adc");
+ 
        Save_Style_Check : constant Boolean := Opt.Style_Check;
        --  Save style check mode so it can be restored later
  
+       Config_Pragmas : List_Id := Empty_List;
+       --  Gather configuration pragmas
+ 
        Source_Config_File : Source_File_Index;
        --  Source reference for -gnatec configuration file
  
        Prag : Node_Id;
  
     begin
        --  We always analyze config files with style checks off, since we
        --  don't want a miscellaneous gnat.adc that is around to discombobulate
*************** begin
*** 162,194 ****
        --  First deal with gnat.adc file
  
        if Opt.Config_File then
!          Name_Buffer (1 .. 8) := "gnat.adc";
!          Name_Len := 8;
!          Source_gnat_adc := Load_Config_File (Name_Enter);
  
           --  Case of gnat.adc file present
  
!          if Source_gnat_adc /= No_Source_File then
  
              --  Parse the gnat.adc file for configuration pragmas
  
              Initialize_Scanner (No_Unit, Source_gnat_adc);
              Config_Pragmas := Par (Configuration_Pragmas => True);
  
!             --  We unconditionally add a compilation dependency for gnat.adc
!             --  so that if it changes, we force a recompilation. This is a
!             --  fairly recent (2014-03-28) change.
  
              Prepcomp.Add_Dependency (Source_gnat_adc);
- 
-          --  Case of no gnat.adc file present
- 
-          else
-             Config_Pragmas := Empty_List;
           end if;
- 
-       else
-          Config_Pragmas := Empty_List;
        end if;
  
        --  Now deal with specified config pragmas files if there are any
--- 164,185 ----
        --  First deal with gnat.adc file
  
        if Opt.Config_File then
!          Source_gnat_adc := Load_Config_File (Gnat_Adc);
  
           --  Case of gnat.adc file present
  
!          if Source_gnat_adc > No_Source_File then
  
              --  Parse the gnat.adc file for configuration pragmas
  
              Initialize_Scanner (No_Unit, Source_gnat_adc);
              Config_Pragmas := Par (Configuration_Pragmas => True);
  
!             --  We add a compilation dependency for gnat.adc so that if it
!             --  changes, we force a recompilation.
  
              Prepcomp.Add_Dependency (Source_gnat_adc);
           end if;
        end if;
  
        --  Now deal with specified config pragmas files if there are any
*************** begin
*** 198,239 ****
           --  Loop through config pragmas files
  
           for Index in Opt.Config_File_Names'Range loop
  
!             --  See if extension is .TMP/.tmp indicating a temporary config
!             --  file (which we ignore from the dependency point of view).
  
!             Name_Len := Config_File_Names (Index)'Length;
!             Name_Buffer (1 .. Name_Len) := Config_File_Names (Index).all;
!             Temp_File :=
!               Name_Len > 4
!                 and then
!                   (Name_Buffer (Name_Len - 3 .. Name_Len) = ".TMP"
!                      or else
!                    Name_Buffer (Name_Len - 3 .. Name_Len) = ".tmp");
  
!             --  Load the file, error if we did not find it
  
!             Source_Config_File := Load_Config_File (Name_Enter);
  
!             if Source_Config_File = No_Source_File then
!                Osint.Fail
!                  ("cannot find configuration pragmas file "
!                   & Config_File_Names (Index).all);
  
!             --  If we did find the file, and it is not a temporary file, then
!             --  we unconditionally add a compilation dependency for it so
!             --  that if it changes, we force a recompilation. This is a
!             --  fairly recent (2014-03-28) change.
  
!             elsif not Temp_File then
!                Prepcomp.Add_Dependency (Source_Config_File);
!             end if;
  
!             --  Parse the config pragmas file, and accumulate results
  
!             Initialize_Scanner (No_Unit, Source_Config_File);
!             Append_List_To
!               (Config_Pragmas, Par (Configuration_Pragmas => True));
           end loop;
        end if;
  
--- 189,240 ----
           --  Loop through config pragmas files
  
           for Index in Opt.Config_File_Names'Range loop
+             declare
+                Len : constant Natural := Config_File_Names (Index)'Length;
+                Str : constant String (1 .. Len) :=
+                        Config_File_Names (Index).all;
  
!                Config_Name : constant File_Name_Type := Name_Find (Str);
!                Temp_File   : constant Boolean :=
!                                Len > 4
!                                  and then
!                                    (Str (Len - 3 .. Len) = ".TMP"
!                                       or else
!                                     Str (Len - 3 .. Len) = ".tmp");
!                --  Extension indicating a temporary config file?
  
!             begin
!                --  Skip it if it's the default name, already loaded above.
!                --  Otherwise, we get confusing warning messages about seeing
!                --  the same thing twice.
  
!                if Config_Name /= Gnat_Adc
!                  and then Config_Name /= Dot_Gnat_Adc
!                then
!                   --  Load the file, error if we did not find it
  
!                   Source_Config_File := Load_Config_File (Config_Name);
  
!                   if Source_Config_File <= No_Source_File then
!                      Osint.Fail
!                        ("cannot find configuration pragmas file "
!                         & Config_File_Names (Index).all);
  
!                   --  If we did find the file, and it is not a temporary file,
!                   --  then we add a compilation dependency for it so that if it
!                   --  changes, we force a recompilation.
  
!                   elsif not Temp_File then
!                      Prepcomp.Add_Dependency (Source_Config_File);
!                   end if;
  
!                   --  Parse the config pragmas file, and accumulate results
  
!                   Initialize_Scanner (No_Unit, Source_Config_File);
!                   Append_List_To
!                     (Config_Pragmas, Par (Configuration_Pragmas => True));
!                end if;
!             end;
           end loop;
        end if;
  
*************** begin
*** 260,467 ****
        --  Capture any modifications to suppress options from config pragmas
  
        Opt.Suppress_Options := Scope_Suppress;
-    end;
  
!    --  If a target dependency info file has been read through switch -gnateT=,
!    --  add it to the dependencies.
  
!    if Target_Dependent_Info_Read_Name /= null then
!       declare
!          Index : Source_File_Index;
!       begin
!          Name_Len := 0;
!          Add_Str_To_Name_Buffer (Target_Dependent_Info_Read_Name.all);
!          Index := Load_Config_File (Name_Enter);
!          Prepcomp.Add_Dependency (Index);
!       end;
!    end if;
  
!    --  This is where we can capture the value of the compilation unit specific
!    --  restrictions that have been set by the config pragma files (or from
!    --  Targparm), for later restoration when processing e.g. subunits.
  
!    Save_Config_Cunit_Boolean_Restrictions;
  
!    --  If there was a -gnatem switch, initialize the mappings of unit names to
!    --  file names and of file names to path names from the mapping file.
  
!    if Mapping_File_Name /= null then
!       Fmap.Initialize (Mapping_File_Name.all);
!    end if;
  
!    --  Adjust Optimize_Alignment mode from debug switches if necessary
  
!    if Debug_Flag_Dot_SS then
!       Optimize_Alignment := 'S';
!    elsif Debug_Flag_Dot_TT then
!       Optimize_Alignment := 'T';
!    end if;
  
!    --  We have now processed the command line switches, and the configuration
!    --  pragma files, so this is the point at which we want to capture the
!    --  values of the configuration switches (see Opt for further details).
  
!    Opt.Register_Opt_Config_Switches;
  
!    --  Check for file which contains No_Body pragma
  
!    if Source_File_Is_No_Body (Source_Index (Main_Unit)) then
!       Change_Main_Unit_To_Spec;
!    end if;
  
!    --  Initialize the scanner. Note that we do this after the call to
!    --  Create_Standard, which uses the scanner in its processing of
!    --  floating-point bounds.
  
!    Initialize_Scanner (Main_Unit, Source_Index (Main_Unit));
  
!    --  Here we call the parser to parse the compilation unit (or units in
!    --  the check syntax mode, but in that case we won't go on to the
!    --  semantics in any case).
  
!    Discard_List (Par (Configuration_Pragmas => False));
!    Parsing_Main_Extended_Source := False;
  
!    --  The main unit is now loaded, and subunits of it can be loaded,
!    --  without reporting spurious loading circularities.
  
!    Set_Loading (Main_Unit, False);
  
!    --  Now that the main unit is installed, we can complete the analysis
!    --  of the pragmas in gnat.adc and the configuration file, that require
!    --  a context for their semantic processing.
  
!    if Config_Pragmas /= Error_List
!      and then Operating_Mode /= Check_Syntax
  
!      --  Do not attempt to process deferred configuration pragmas if the main
!      --  unit failed to load, to avoid cascaded inconsistencies that can lead
!      --  to a compiler crash.
  
!      and then Fatal_Error (Main_Unit) /= Error_Detected
!    then
!       --  Pragmas that require some semantic activity, such as Interrupt_State,
!       --  cannot be processed until the main unit is installed, because they
!       --  require a compilation unit on which to attach with_clauses, etc. So
!       --  analyze them now.
  
!       declare
!          Prag : Node_Id;
  
!       begin
!          Prag := First (Config_Pragmas);
!          while Present (Prag) loop
  
!             --  Guard against the case where a configuration pragma may be
!             --  split into multiple pragmas and the original rewritten as a
!             --  null statement.
  
!             if Nkind (Prag) = N_Pragma
!               and then Delay_Config_Pragma_Analyze (Prag)
!             then
!                Analyze_Pragma (Prag);
!             end if;
  
!             Next (Prag);
!          end loop;
!       end;
!    end if;
  
!    --  If we have restriction No_Exception_Propagation, and we did not have an
!    --  explicit switch turning off Warn_On_Non_Local_Exception, then turn on
!    --  this warning by default if we have encountered an exception handler.
  
!    if Restriction_Check_Required (No_Exception_Propagation)
!      and then not No_Warn_On_Non_Local_Exception
!      and then Exception_Handler_Encountered
!    then
!       Warn_On_Non_Local_Exception := True;
!    end if;
  
!    --  Now on to the semantics. Skip if in syntax only mode
  
!    if Operating_Mode /= Check_Syntax then
  
!       --  Install the configuration pragmas in the tree
  
!       Set_Config_Pragmas (Aux_Decls_Node (Cunit (Main_Unit)), Config_Pragmas);
  
!       --  Following steps are skipped if we had a fatal error during parsing
  
!       if Fatal_Error (Main_Unit) /= Error_Detected then
  
!          --  Reset Operating_Mode to Check_Semantics for subunits. We cannot
!          --  actually generate code for subunits, so we suppress expansion.
!          --  This also corrects certain problems that occur if we try to
!          --  incorporate subunits at a lower level.
  
!          if Operating_Mode = Generate_Code
!            and then Nkind (Unit (Cunit (Main_Unit))) = N_Subunit
!          then
!             Operating_Mode := Check_Semantics;
!          end if;
  
!          --  Analyze (and possibly expand) main unit
  
!          Scope_Suppress := Suppress_Options;
!          Semantics (Cunit (Main_Unit));
  
!          --  Cleanup processing after completing main analysis
  
!          --  Comment needed for ASIS mode test and GNATprove mode test???
  
!          pragma Assert
!            (Operating_Mode = Generate_Code
!              or else Operating_Mode = Check_Semantics);
  
!          if Operating_Mode = Generate_Code
!            or else (ASIS_Mode or GNATprove_Mode)
!          then
!             Instantiate_Bodies;
!          end if;
  
!          --  Analyze inlined bodies and check elaboration rules in GNATprove
!          --  mode as well as during compilation.
  
!          if Operating_Mode = Generate_Code or else GNATprove_Mode then
!             if Inline_Processing_Required then
!                Analyze_Inlined_Bodies;
!             end if;
  
!             --  Remove entities from program that do not have any execution
!             --  time references.
  
!             if Debug_Flag_UU then
!                Collect_Garbage_Entities;
!             end if;
  
!             Check_Elab_Calls;
  
!             --  Remove any ignored Ghost code as it must not appear in the
!             --  executable.
  
!             Remove_Ignored_Ghost_Code;
!          end if;
  
!          --  At this stage we can unnest subprogram bodies if required
  
!          Exp_Unst.Unnest_Subprograms (Cunit (Main_Unit));
  
!          --  List library units if requested
  
!          if List_Units then
!             Lib.List;
!          end if;
  
!          --  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;
!          Sem_Warn.Output_Unused_Warnings_Off_Warnings;
        end if;
!    end if;
  
     --  Qualify all entity names in inner packages, package bodies, etc
  
--- 261,489 ----
        --  Capture any modifications to suppress options from config pragmas
  
        Opt.Suppress_Options := Scope_Suppress;
  
!       --  If a target dependency info file has been read through switch
!       --  -gnateT=, add it to the dependencies.
  
!       if Target_Dependent_Info_Read_Name /= null then
!          declare
!             Index : Source_File_Index;
!          begin
!             Name_Len := 0;
!             Add_Str_To_Name_Buffer (Target_Dependent_Info_Read_Name.all);
!             Index := Load_Config_File (Name_Enter);
!             Prepcomp.Add_Dependency (Index);
!          end;
!       end if;
  
!       --  This is where we can capture the value of the compilation unit
!       --  specific restrictions that have been set by the config pragma
!       --  files (or from Targparm), for later restoration when processing
!       --  e.g. subunits.
  
!       Save_Config_Cunit_Boolean_Restrictions;
  
!       --  If there was a -gnatem switch, initialize the mappings of unit names
!       --  to file names and of file names to path names from the mapping file.
  
!       if Mapping_File_Name /= null then
!          Fmap.Initialize (Mapping_File_Name.all);
!       end if;
  
!       --  Adjust Optimize_Alignment mode from debug switches if necessary
  
!       if Debug_Flag_Dot_SS then
!          Optimize_Alignment := 'S';
!       elsif Debug_Flag_Dot_TT then
!          Optimize_Alignment := 'T';
!       end if;
  
!       --  We have now processed the command line switches, and the
!       --  configuration pragma files, so this is the point at which we want to
!       --  capture the values of the configuration switches (see Opt for further
!       --  details).
  
!       Opt.Register_Opt_Config_Switches;
  
!       --  Check for file which contains No_Body pragma
  
!       if Source_File_Is_No_Body (Source_Index (Main_Unit)) then
!          Change_Main_Unit_To_Spec;
!       end if;
  
!       --  Initialize the scanner. Note that we do this after the call to
!       --  Create_Standard, which uses the scanner in its processing of
!       --  floating-point bounds.
  
!       Initialize_Scanner (Main_Unit, Source_Index (Main_Unit));
  
!       --  Here we call the parser to parse the compilation unit (or units in
!       --  the check syntax mode, but in that case we won't go on to the
!       --  semantics in any case).
  
!       Discard_List (Par (Configuration_Pragmas => False));
!       Parsing_Main_Extended_Source := False;
  
!       --  The main unit is now loaded, and subunits of it can be loaded,
!       --  without reporting spurious loading circularities.
  
!       Set_Loading (Main_Unit, False);
  
!       --  Now that the main unit is installed, we can complete the analysis
!       --  of the pragmas in gnat.adc and the configuration file, that require
!       --  a context for their semantic processing.
  
!       if Config_Pragmas /= Error_List
!         and then Operating_Mode /= Check_Syntax
  
!         --  Do not attempt to process deferred configuration pragmas if the
!         --  main unit failed to load, to avoid cascaded inconsistencies that
!         --  can lead to a compiler crash.
  
!         and then Fatal_Error (Main_Unit) /= Error_Detected
!       then
!          --  Pragmas that require some semantic activity, such as
!          --  Interrupt_State, cannot be processed until the main unit is
!          --  installed, because they require a compilation unit on which to
!          --  attach with_clauses, etc. So analyze them now.
  
!          declare
!             Prag : Node_Id;
  
!          begin
!             Prag := First (Config_Pragmas);
!             while Present (Prag) loop
  
!                --  Guard against the case where a configuration pragma may be
!                --  split into multiple pragmas and the original rewritten as a
!                --  null statement.
  
!                if Nkind (Prag) = N_Pragma
!                  and then Delay_Config_Pragma_Analyze (Prag)
!                then
!                   Analyze_Pragma (Prag);
!                end if;
  
!                Next (Prag);
!             end loop;
!          end;
!       end if;
  
!       --  If we have restriction No_Exception_Propagation, and we did not have
!       --  an explicit switch turning off Warn_On_Non_Local_Exception, then turn
!       --  on this warning by default if we have encountered an exception
!       --  handler.
  
!       if Restriction_Check_Required (No_Exception_Propagation)
!         and then not No_Warn_On_Non_Local_Exception
!         and then Exception_Handler_Encountered
!       then
!          Warn_On_Non_Local_Exception := True;
!       end if;
  
!       --  Now on to the semantics. Skip if in syntax only mode
  
!       if Operating_Mode /= Check_Syntax then
  
!          --  Install the configuration pragmas in the tree
  
!          Set_Config_Pragmas
!            (Aux_Decls_Node (Cunit (Main_Unit)), Config_Pragmas);
  
!          --  Following steps are skipped if we had a fatal error during parsing
  
!          if Fatal_Error (Main_Unit) /= Error_Detected then
  
!             --  Reset Operating_Mode to Check_Semantics for subunits. We cannot
!             --  actually generate code for subunits, so we suppress expansion.
!             --  This also corrects certain problems that occur if we try to
!             --  incorporate subunits at a lower level.
  
!             if Operating_Mode = Generate_Code
!               and then Nkind (Unit (Cunit (Main_Unit))) = N_Subunit
!             then
!                Operating_Mode := Check_Semantics;
!             end if;
  
!             --  Analyze (and possibly expand) main unit
  
!             Scope_Suppress := Suppress_Options;
!             Semantics (Cunit (Main_Unit));
  
!             --  Cleanup processing after completing main analysis
  
!             --  Comment needed for ASIS mode test and GNATprove mode test???
  
!             pragma Assert
!               (Operating_Mode = Generate_Code
!                 or else Operating_Mode = Check_Semantics);
  
!             if Operating_Mode = Generate_Code
!               or else (ASIS_Mode or GNATprove_Mode)
!             then
!                Instantiate_Bodies;
!             end if;
  
!             --  Analyze all inlined bodies, check access-before-elaboration
!             --  rules, and remove ignored Ghost code when generating code or
!             --  compiling for GNATprove.
  
!             if Operating_Mode = Generate_Code or else GNATprove_Mode then
!                if Inline_Processing_Required then
!                   Analyze_Inlined_Bodies;
!                end if;
  
!                --  Remove entities from program that do not have any execution
!                --  time references.
  
!                if Debug_Flag_UU then
!                   Collect_Garbage_Entities;
!                end if;
  
!                if Legacy_Elaboration_Checks then
!                   Check_Elab_Calls;
!                end if;
  
!                --  Examine all top level scenarios collected during analysis
!                --  and resolution. Diagnose conditional ABEs, install run-time
!                --  checks to catch conditional ABEs, and guarantee the prior
!                --  elaboration of external units.
  
!                Check_Elaboration_Scenarios;
  
!                --  Remove any ignored Ghost code as it must not appear in the
!                --  executable.
  
!                Remove_Ignored_Ghost_Code;
  
!             --  Examine all top level scenarios collected during analysis and
!             --  resolution in order to diagnose conditional ABEs, even in the
!             --  presence of serious errors.
  
!             else
!                Check_Elaboration_Scenarios;
!             end if;
  
!             --  At this stage we can unnest subprogram bodies if required
  
!             Exp_Unst.Unnest_Subprograms (Cunit (Main_Unit));
! 
!             --  List library units if requested
! 
!             if List_Units then
!                Lib.List;
!             end if;
! 
!             --  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;
!             Sem_Warn.Output_Unused_Warnings_Off_Warnings;
!          end if;
        end if;
!    end;
  
     --  Qualify all entity names in inner packages, package bodies, etc
  
diff -Nrcpad gcc-7.3.0/gcc/ada/frontend.ads gcc-8.1.0/gcc/ada/frontend.ads
*** gcc-7.3.0/gcc/ada/frontend.ads	Mon Sep 10 12:47:10 2007
--- gcc-8.1.0/gcc/ada/frontend.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2007, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/g-allein.ads gcc-8.1.0/gcc/ada/g-allein.ads
*** gcc-7.3.0/gcc/ada/g-allein.ads	Fri Feb 20 14:27:54 2015
--- gcc-8.1.0/gcc/ada/g-allein.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,304 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --     G N A T . A L T I V E C . L O W _ L E V E L _ I N T E R F A C E      --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 unit provides entities to be used internally by the units common to
- --  both bindings (Hard or Soft), and relevant to the interfacing with the
- --  underlying Low Level support.
- 
- with GNAT.Altivec.Vector_Types;      use GNAT.Altivec.Vector_Types;
- with GNAT.Altivec.Low_Level_Vectors; use GNAT.Altivec.Low_Level_Vectors;
- 
- with Ada.Unchecked_Conversion;
- 
- package GNAT.Altivec.Low_Level_Interface is
- 
-    -----------------------------------------
-    -- Conversions between low level types --
-    -----------------------------------------
- 
-    function To_LL_VBC is new Ada.Unchecked_Conversion (LL_VBC, LL_VBC);
-    function To_LL_VBC is new Ada.Unchecked_Conversion (LL_VUC, LL_VBC);
-    function To_LL_VBC is new Ada.Unchecked_Conversion (LL_VSC, LL_VBC);
-    function To_LL_VBC is new Ada.Unchecked_Conversion (LL_VBS, LL_VBC);
-    function To_LL_VBC is new Ada.Unchecked_Conversion (LL_VUS, LL_VBC);
-    function To_LL_VBC is new Ada.Unchecked_Conversion (LL_VSS, LL_VBC);
-    function To_LL_VBC is new Ada.Unchecked_Conversion (LL_VBI, LL_VBC);
-    function To_LL_VBC is new Ada.Unchecked_Conversion (LL_VUI, LL_VBC);
-    function To_LL_VBC is new Ada.Unchecked_Conversion (LL_VSI, LL_VBC);
-    function To_LL_VBC is new Ada.Unchecked_Conversion (LL_VF,  LL_VBC);
-    function To_LL_VBC is new Ada.Unchecked_Conversion (LL_VP,  LL_VBC);
- 
-    function To_LL_VUC is new Ada.Unchecked_Conversion (LL_VBC, LL_VUC);
-    function To_LL_VUC is new Ada.Unchecked_Conversion (LL_VUC, LL_VUC);
-    function To_LL_VUC is new Ada.Unchecked_Conversion (LL_VSC, LL_VUC);
-    function To_LL_VUC is new Ada.Unchecked_Conversion (LL_VBS, LL_VUC);
-    function To_LL_VUC is new Ada.Unchecked_Conversion (LL_VUS, LL_VUC);
-    function To_LL_VUC is new Ada.Unchecked_Conversion (LL_VSS, LL_VUC);
-    function To_LL_VUC is new Ada.Unchecked_Conversion (LL_VBI, LL_VUC);
-    function To_LL_VUC is new Ada.Unchecked_Conversion (LL_VUI, LL_VUC);
-    function To_LL_VUC is new Ada.Unchecked_Conversion (LL_VSI, LL_VUC);
-    function To_LL_VUC is new Ada.Unchecked_Conversion (LL_VF,  LL_VUC);
-    function To_LL_VUC is new Ada.Unchecked_Conversion (LL_VP,  LL_VUC);
- 
-    function To_LL_VSC is new Ada.Unchecked_Conversion (LL_VBC, LL_VSC);
-    function To_LL_VSC is new Ada.Unchecked_Conversion (LL_VUC, LL_VSC);
-    function To_LL_VSC is new Ada.Unchecked_Conversion (LL_VSC, LL_VSC);
-    function To_LL_VSC is new Ada.Unchecked_Conversion (LL_VBS, LL_VSC);
-    function To_LL_VSC is new Ada.Unchecked_Conversion (LL_VUS, LL_VSC);
-    function To_LL_VSC is new Ada.Unchecked_Conversion (LL_VSS, LL_VSC);
-    function To_LL_VSC is new Ada.Unchecked_Conversion (LL_VBI, LL_VSC);
-    function To_LL_VSC is new Ada.Unchecked_Conversion (LL_VUI, LL_VSC);
-    function To_LL_VSC is new Ada.Unchecked_Conversion (LL_VSI, LL_VSC);
-    function To_LL_VSC is new Ada.Unchecked_Conversion (LL_VF,  LL_VSC);
-    function To_LL_VSC is new Ada.Unchecked_Conversion (LL_VP,  LL_VSC);
- 
-    function To_LL_VBS is new Ada.Unchecked_Conversion (LL_VBC, LL_VBS);
-    function To_LL_VBS is new Ada.Unchecked_Conversion (LL_VUC, LL_VBS);
-    function To_LL_VBS is new Ada.Unchecked_Conversion (LL_VSC, LL_VBS);
-    function To_LL_VBS is new Ada.Unchecked_Conversion (LL_VBS, LL_VBS);
-    function To_LL_VBS is new Ada.Unchecked_Conversion (LL_VUS, LL_VBS);
-    function To_LL_VBS is new Ada.Unchecked_Conversion (LL_VSS, LL_VBS);
-    function To_LL_VBS is new Ada.Unchecked_Conversion (LL_VBI, LL_VBS);
-    function To_LL_VBS is new Ada.Unchecked_Conversion (LL_VUI, LL_VBS);
-    function To_LL_VBS is new Ada.Unchecked_Conversion (LL_VSI, LL_VBS);
-    function To_LL_VBS is new Ada.Unchecked_Conversion (LL_VF, LL_VBS);
-    function To_LL_VBS is new Ada.Unchecked_Conversion (LL_VP, LL_VBS);
- 
-    function To_LL_VUS is new Ada.Unchecked_Conversion (LL_VBC, LL_VUS);
-    function To_LL_VUS is new Ada.Unchecked_Conversion (LL_VUC, LL_VUS);
-    function To_LL_VUS is new Ada.Unchecked_Conversion (LL_VSC, LL_VUS);
-    function To_LL_VUS is new Ada.Unchecked_Conversion (LL_VBS, LL_VUS);
-    function To_LL_VUS is new Ada.Unchecked_Conversion (LL_VUS, LL_VUS);
-    function To_LL_VUS is new Ada.Unchecked_Conversion (LL_VSS, LL_VUS);
-    function To_LL_VUS is new Ada.Unchecked_Conversion (LL_VBI, LL_VUS);
-    function To_LL_VUS is new Ada.Unchecked_Conversion (LL_VUI, LL_VUS);
-    function To_LL_VUS is new Ada.Unchecked_Conversion (LL_VSI, LL_VUS);
-    function To_LL_VUS is new Ada.Unchecked_Conversion (LL_VF,  LL_VUS);
-    function To_LL_VUS is new Ada.Unchecked_Conversion (LL_VP,  LL_VUS);
- 
-    function To_LL_VSS is new Ada.Unchecked_Conversion (LL_VBC, LL_VSS);
-    function To_LL_VSS is new Ada.Unchecked_Conversion (LL_VUC, LL_VSS);
-    function To_LL_VSS is new Ada.Unchecked_Conversion (LL_VSC, LL_VSS);
-    function To_LL_VSS is new Ada.Unchecked_Conversion (LL_VBS, LL_VSS);
-    function To_LL_VSS is new Ada.Unchecked_Conversion (LL_VUS, LL_VSS);
-    function To_LL_VSS is new Ada.Unchecked_Conversion (LL_VSS, LL_VSS);
-    function To_LL_VSS is new Ada.Unchecked_Conversion (LL_VBI, LL_VSS);
-    function To_LL_VSS is new Ada.Unchecked_Conversion (LL_VUI, LL_VSS);
-    function To_LL_VSS is new Ada.Unchecked_Conversion (LL_VSI, LL_VSS);
-    function To_LL_VSS is new Ada.Unchecked_Conversion (LL_VF,  LL_VSS);
-    function To_LL_VSS is new Ada.Unchecked_Conversion (LL_VP,  LL_VSS);
- 
-    function To_LL_VBI is new Ada.Unchecked_Conversion (LL_VBC, LL_VBI);
-    function To_LL_VBI is new Ada.Unchecked_Conversion (LL_VUC, LL_VBI);
-    function To_LL_VBI is new Ada.Unchecked_Conversion (LL_VSC, LL_VBI);
-    function To_LL_VBI is new Ada.Unchecked_Conversion (LL_VBS, LL_VBI);
-    function To_LL_VBI is new Ada.Unchecked_Conversion (LL_VUS, LL_VBI);
-    function To_LL_VBI is new Ada.Unchecked_Conversion (LL_VSS, LL_VBI);
-    function To_LL_VBI is new Ada.Unchecked_Conversion (LL_VBI, LL_VBI);
-    function To_LL_VBI is new Ada.Unchecked_Conversion (LL_VUI, LL_VBI);
-    function To_LL_VBI is new Ada.Unchecked_Conversion (LL_VSI, LL_VBI);
-    function To_LL_VBI is new Ada.Unchecked_Conversion (LL_VF,  LL_VBI);
-    function To_LL_VBI is new Ada.Unchecked_Conversion (LL_VP,  LL_VBI);
- 
-    function To_LL_VUI is new Ada.Unchecked_Conversion (LL_VBC, LL_VUI);
-    function To_LL_VUI is new Ada.Unchecked_Conversion (LL_VUC, LL_VUI);
-    function To_LL_VUI is new Ada.Unchecked_Conversion (LL_VSC, LL_VUI);
-    function To_LL_VUI is new Ada.Unchecked_Conversion (LL_VBS, LL_VUI);
-    function To_LL_VUI is new Ada.Unchecked_Conversion (LL_VUS, LL_VUI);
-    function To_LL_VUI is new Ada.Unchecked_Conversion (LL_VSS, LL_VUI);
-    function To_LL_VUI is new Ada.Unchecked_Conversion (LL_VBI, LL_VUI);
-    function To_LL_VUI is new Ada.Unchecked_Conversion (LL_VUI, LL_VUI);
-    function To_LL_VUI is new Ada.Unchecked_Conversion (LL_VSI, LL_VUI);
-    function To_LL_VUI is new Ada.Unchecked_Conversion (LL_VF,  LL_VUI);
-    function To_LL_VUI is new Ada.Unchecked_Conversion (LL_VP,  LL_VUI);
- 
-    function To_LL_VSI is new Ada.Unchecked_Conversion (LL_VBC, LL_VSI);
-    function To_LL_VSI is new Ada.Unchecked_Conversion (LL_VUC, LL_VSI);
-    function To_LL_VSI is new Ada.Unchecked_Conversion (LL_VSC, LL_VSI);
-    function To_LL_VSI is new Ada.Unchecked_Conversion (LL_VBS, LL_VSI);
-    function To_LL_VSI is new Ada.Unchecked_Conversion (LL_VUS, LL_VSI);
-    function To_LL_VSI is new Ada.Unchecked_Conversion (LL_VSS, LL_VSI);
-    function To_LL_VSI is new Ada.Unchecked_Conversion (LL_VBI, LL_VSI);
-    function To_LL_VSI is new Ada.Unchecked_Conversion (LL_VUI, LL_VSI);
-    function To_LL_VSI is new Ada.Unchecked_Conversion (LL_VSI, LL_VSI);
-    function To_LL_VSI is new Ada.Unchecked_Conversion (LL_VF,  LL_VSI);
-    function To_LL_VSI is new Ada.Unchecked_Conversion (LL_VP,  LL_VSI);
- 
-    function To_LL_VF is new Ada.Unchecked_Conversion (LL_VBC, LL_VF);
-    function To_LL_VF is new Ada.Unchecked_Conversion (LL_VUC, LL_VF);
-    function To_LL_VF is new Ada.Unchecked_Conversion (LL_VSC, LL_VF);
-    function To_LL_VF is new Ada.Unchecked_Conversion (LL_VBS, LL_VF);
-    function To_LL_VF is new Ada.Unchecked_Conversion (LL_VUS, LL_VF);
-    function To_LL_VF is new Ada.Unchecked_Conversion (LL_VSS, LL_VF);
-    function To_LL_VF is new Ada.Unchecked_Conversion (LL_VBI, LL_VF);
-    function To_LL_VF is new Ada.Unchecked_Conversion (LL_VUI, LL_VF);
-    function To_LL_VF is new Ada.Unchecked_Conversion (LL_VSI, LL_VF);
-    function To_LL_VF is new Ada.Unchecked_Conversion (LL_VF,  LL_VF);
-    function To_LL_VF is new Ada.Unchecked_Conversion (LL_VP,  LL_VF);
- 
-    function To_LL_VP is new Ada.Unchecked_Conversion (LL_VBC, LL_VP);
-    function To_LL_VP is new Ada.Unchecked_Conversion (LL_VUC, LL_VP);
-    function To_LL_VP is new Ada.Unchecked_Conversion (LL_VSC, LL_VP);
-    function To_LL_VP is new Ada.Unchecked_Conversion (LL_VBS, LL_VP);
-    function To_LL_VP is new Ada.Unchecked_Conversion (LL_VUS, LL_VP);
-    function To_LL_VP is new Ada.Unchecked_Conversion (LL_VSS, LL_VP);
-    function To_LL_VP is new Ada.Unchecked_Conversion (LL_VBI, LL_VP);
-    function To_LL_VP is new Ada.Unchecked_Conversion (LL_VUI, LL_VP);
-    function To_LL_VP is new Ada.Unchecked_Conversion (LL_VSI, LL_VP);
-    function To_LL_VP is new Ada.Unchecked_Conversion (LL_VF,  LL_VP);
-    function To_LL_VP is new Ada.Unchecked_Conversion (LL_VP,  LL_VP);
- 
-    ----------------------------------------------
-    -- Conversions Between Pointer/Access Types --
-    ----------------------------------------------
- 
-    function To_PTR is
-       new Ada.Unchecked_Conversion (vector_unsigned_char_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (vector_signed_char_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (vector_bool_char_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (vector_unsigned_short_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (vector_signed_short_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (vector_bool_short_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (vector_unsigned_int_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (vector_signed_int_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (vector_bool_int_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (vector_float_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (vector_pixel_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (const_vector_bool_char_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (const_vector_signed_char_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (const_vector_unsigned_char_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (const_vector_bool_short_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (const_vector_signed_short_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (const_vector_unsigned_short_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (const_vector_bool_int_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (const_vector_signed_int_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (const_vector_unsigned_int_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (const_vector_float_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (const_vector_pixel_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (c_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (signed_char_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (unsigned_char_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (short_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (signed_short_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (unsigned_short_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (int_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (signed_int_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (unsigned_int_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (long_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (signed_long_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (unsigned_long_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (float_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (const_signed_char_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (const_unsigned_char_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (const_short_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (const_signed_short_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (const_unsigned_short_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (const_int_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (const_signed_int_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (const_unsigned_int_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (const_long_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (const_signed_long_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (const_unsigned_long_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (const_float_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (constv_char_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (constv_signed_char_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (constv_unsigned_char_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (constv_short_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (constv_signed_short_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (constv_unsigned_short_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (constv_int_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (constv_signed_int_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (constv_unsigned_int_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (constv_long_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (constv_signed_long_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (constv_unsigned_long_ptr, c_ptr);
-    function To_PTR is
-       new Ada.Unchecked_Conversion (constv_float_ptr, c_ptr);
- 
- end GNAT.Altivec.Low_Level_Interface;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-alleve.adb gcc-8.1.0/gcc/ada/g-alleve.adb
*** gcc-7.3.0/gcc/ada/g-alleve.adb	Fri Feb 20 13:54:40 2015
--- gcc-8.1.0/gcc/ada/g-alleve.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,4956 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --       G N A T . A L T I V E C . L O W _ L E V E L _ V E C T O R S        --
- --                                                                          --
- --                                 B o d y                                  --
- --                         (Soft Binding Version)                           --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  ??? What is exactly needed for the soft case is still a bit unclear on
- --  some accounts. The expected functional equivalence with the Hard binding
- --  might require tricky things to be done on some targets.
- 
- --  Examples that come to mind are endianness variations or differences in the
- --  base FP model while we need the operation results to be the same as what
- --  the real AltiVec instructions would do on a PowerPC.
- 
- with Ada.Numerics.Generic_Elementary_Functions;
- with Interfaces;                       use Interfaces;
- with System.Storage_Elements;          use System.Storage_Elements;
- 
- with GNAT.Altivec.Conversions;         use  GNAT.Altivec.Conversions;
- with GNAT.Altivec.Low_Level_Interface; use  GNAT.Altivec.Low_Level_Interface;
- 
- package body GNAT.Altivec.Low_Level_Vectors is
- 
-    --  Pixel types. As defined in [PIM-2.1 Data types]:
-    --  A 16-bit pixel is 1/5/5/5;
-    --  A 32-bit pixel is 8/8/8/8.
-    --  We use the following records as an intermediate representation, to
-    --  ease computation.
- 
-    type Unsigned_1 is mod 2 ** 1;
-    type Unsigned_5 is mod 2 ** 5;
- 
-    type Pixel_16 is record
-       T : Unsigned_1;
-       R : Unsigned_5;
-       G : Unsigned_5;
-       B : Unsigned_5;
-    end record;
- 
-    type Pixel_32 is record
-       T : unsigned_char;
-       R : unsigned_char;
-       G : unsigned_char;
-       B : unsigned_char;
-    end record;
- 
-    --  Conversions to/from the pixel records to the integer types that are
-    --  actually stored into the pixel vectors:
- 
-    function To_Pixel (Source : unsigned_short) return Pixel_16;
-    function To_unsigned_short (Source : Pixel_16) return unsigned_short;
-    function To_Pixel (Source : unsigned_int) return Pixel_32;
-    function To_unsigned_int (Source : Pixel_32) return unsigned_int;
- 
-    package C_float_Operations is
-      new Ada.Numerics.Generic_Elementary_Functions (C_float);
- 
-    --  Model of the Vector Status and Control Register (VSCR), as
-    --  defined in [PIM-4.1 Vector Status and Control Register]:
- 
-    VSCR : unsigned_int;
- 
-    --  Positions of the flags in VSCR(0 .. 31):
- 
-    NJ_POS   : constant := 15;
-    SAT_POS  : constant := 31;
- 
-    --  To control overflows, integer operations are done on 64-bit types:
- 
-    SINT64_MIN : constant := -2 ** 63;
-    SINT64_MAX : constant := 2 ** 63 - 1;
-    UINT64_MAX : constant := 2 ** 64 - 1;
- 
-    type SI64 is range SINT64_MIN .. SINT64_MAX;
-    type UI64 is mod UINT64_MAX + 1;
- 
-    type F64 is digits 15
-      range -16#0.FFFF_FFFF_FFFF_F8#E+256 .. 16#0.FFFF_FFFF_FFFF_F8#E+256;
- 
-    function Bits
-      (X    : unsigned_int;
-       Low  : Natural;
-       High : Natural) return unsigned_int;
- 
-    function Bits
-      (X    : unsigned_short;
-       Low  : Natural;
-       High : Natural) return unsigned_short;
- 
-    function Bits
-      (X    : unsigned_char;
-       Low  : Natural;
-       High : Natural) return unsigned_char;
- 
-    function Write_Bit
-      (X     : unsigned_int;
-       Where : Natural;
-       Value : Unsigned_1) return unsigned_int;
- 
-    function Write_Bit
-      (X     : unsigned_short;
-       Where : Natural;
-       Value : Unsigned_1) return unsigned_short;
- 
-    function Write_Bit
-      (X     : unsigned_char;
-       Where : Natural;
-       Value : Unsigned_1) return unsigned_char;
- 
-    function NJ_Truncate (X : C_float) return C_float;
-    --  If NJ and A is a denormalized number, return zero
- 
-    function Bound_Align
-      (X : Integer_Address;
-       Y : Integer_Address) return Integer_Address;
-    --  [PIM-4.3 Notations and Conventions]
-    --  Align X in a y-byte boundary and return the result
- 
-    function Rnd_To_FP_Nearest (X : F64) return C_float;
-    --  [PIM-4.3 Notations and Conventions]
- 
-    function Rnd_To_FPI_Near (X : F64) return F64;
- 
-    function Rnd_To_FPI_Trunc (X : F64) return F64;
- 
-    function FP_Recip_Est (X : C_float) return C_float;
-    --  [PIM-4.3 Notations and Conventions]
-    --  12-bit accurate floating-point estimate of 1/x
- 
-    function ROTL
-      (Value  : unsigned_char;
-       Amount : Natural) return unsigned_char;
-    --  [PIM-4.3 Notations and Conventions]
-    --  Rotate left
- 
-    function ROTL
-      (Value  : unsigned_short;
-       Amount : Natural) return unsigned_short;
- 
-    function ROTL
-      (Value  : unsigned_int;
-       Amount : Natural) return unsigned_int;
- 
-    function Recip_SQRT_Est (X : C_float) return C_float;
- 
-    function Shift_Left
-      (Value  : unsigned_char;
-       Amount : Natural) return unsigned_char;
-    --  [PIM-4.3 Notations and Conventions]
-    --  Shift left
- 
-    function Shift_Left
-      (Value  : unsigned_short;
-       Amount : Natural) return unsigned_short;
- 
-    function Shift_Left
-      (Value  : unsigned_int;
-       Amount : Natural) return unsigned_int;
- 
-    function Shift_Right
-      (Value  : unsigned_char;
-       Amount : Natural) return unsigned_char;
-    --  [PIM-4.3 Notations and Conventions]
-    --  Shift Right
- 
-    function Shift_Right
-      (Value  : unsigned_short;
-       Amount : Natural) return unsigned_short;
- 
-    function Shift_Right
-      (Value  : unsigned_int;
-       Amount : Natural) return unsigned_int;
- 
-    Signed_Bool_False : constant := 0;
-    Signed_Bool_True  : constant := -1;
- 
-    ------------------------------
-    -- Signed_Operations (spec) --
-    ------------------------------
- 
-    generic
-       type Component_Type is range <>;
-       type Index_Type is range <>;
-       type Varray_Type is array (Index_Type) of Component_Type;
- 
-    package Signed_Operations is
- 
-       function Modular_Result (X : SI64) return Component_Type;
- 
-       function Saturate (X : SI64) return Component_Type;
- 
-       function Saturate (X : F64) return Component_Type;
- 
-       function Sign_Extend (X : c_int) return Component_Type;
-       --  [PIM-4.3 Notations and Conventions]
-       --  Sign-extend X
- 
-       function abs_vxi (A : Varray_Type) return Varray_Type;
-       pragma Convention (LL_Altivec, abs_vxi);
- 
-       function abss_vxi (A : Varray_Type) return Varray_Type;
-       pragma Convention (LL_Altivec, abss_vxi);
- 
-       function vaddsxs (A : Varray_Type; B : Varray_Type) return Varray_Type;
-       pragma Convention (LL_Altivec, vaddsxs);
- 
-       function vavgsx (A : Varray_Type; B : Varray_Type) return Varray_Type;
-       pragma Convention (LL_Altivec, vavgsx);
- 
-       function vcmpgtsx (A : Varray_Type; B : Varray_Type) return Varray_Type;
-       pragma Convention (LL_Altivec, vcmpgtsx);
- 
-       function lvexx (A : c_long; B : c_ptr) return Varray_Type;
-       pragma Convention (LL_Altivec, lvexx);
- 
-       function vmaxsx (A : Varray_Type;  B : Varray_Type) return Varray_Type;
-       pragma Convention (LL_Altivec, vmaxsx);
- 
-       function vmrghx (A : Varray_Type; B : Varray_Type) return Varray_Type;
-       pragma Convention (LL_Altivec, vmrghx);
- 
-       function vmrglx (A : Varray_Type; B : Varray_Type) return Varray_Type;
-       pragma Convention (LL_Altivec, vmrglx);
- 
-       function vminsx (A : Varray_Type; B : Varray_Type) return Varray_Type;
-       pragma Convention (LL_Altivec, vminsx);
- 
-       function vspltx (A : Varray_Type; B : c_int) return Varray_Type;
-       pragma Convention (LL_Altivec, vspltx);
- 
-       function vspltisx (A : c_int) return Varray_Type;
-       pragma Convention (LL_Altivec, vspltisx);
- 
-       type Bit_Operation is
-         access function
-         (Value  : Component_Type;
-          Amount : Natural) return Component_Type;
- 
-       function vsrax
-         (A          : Varray_Type;
-          B          : Varray_Type;
-          Shift_Func : Bit_Operation) return Varray_Type;
- 
-       procedure stvexx (A : Varray_Type; B : c_int; C : c_ptr);
-       pragma Convention (LL_Altivec, stvexx);
- 
-       function vsubsxs (A : Varray_Type; B : Varray_Type) return Varray_Type;
-       pragma Convention (LL_Altivec, vsubsxs);
- 
-       function Check_CR6 (A : c_int; D : Varray_Type) return c_int;
-       --  If D is the result of a vcmp operation and A the flag for
-       --  the kind of operation (e.g CR6_LT), check the predicate
-       --  that corresponds to this flag.
- 
-    end Signed_Operations;
- 
-    ------------------------------
-    -- Signed_Operations (body) --
-    ------------------------------
- 
-    package body Signed_Operations is
- 
-       Bool_True  : constant Component_Type := Signed_Bool_True;
-       Bool_False : constant Component_Type := Signed_Bool_False;
- 
-       Number_Of_Elements : constant Integer :=
-                              VECTOR_BIT / Component_Type'Size;
- 
-       --------------------
-       -- Modular_Result --
-       --------------------
- 
-       function Modular_Result (X : SI64) return Component_Type is
-          D : Component_Type;
- 
-       begin
-          if X > 0 then
-             D := Component_Type (UI64 (X)
-                                  mod (UI64 (Component_Type'Last) + 1));
-          else
-             D := Component_Type ((-(UI64 (-X)
-                                     mod (UI64 (Component_Type'Last) + 1))));
-          end if;
- 
-          return D;
-       end Modular_Result;
- 
-       --------------
-       -- Saturate --
-       --------------
- 
-       function Saturate (X : SI64) return Component_Type is
-          D : Component_Type;
- 
-       begin
-          --  Saturation, as defined in
-          --  [PIM-4.1 Vector Status and Control Register]
- 
-          D := Component_Type (SI64'Max
-                               (SI64 (Component_Type'First),
-                                SI64'Min
-                                (SI64 (Component_Type'Last),
-                                 X)));
- 
-          if SI64 (D) /= X then
-             VSCR := Write_Bit (VSCR, SAT_POS, 1);
-          end if;
- 
-          return D;
-       end Saturate;
- 
-       function Saturate (X : F64) return Component_Type is
-          D : Component_Type;
- 
-       begin
-          --  Saturation, as defined in
-          --  [PIM-4.1 Vector Status and Control Register]
- 
-          D := Component_Type (F64'Max
-                               (F64 (Component_Type'First),
-                                F64'Min
-                                (F64 (Component_Type'Last),
-                                 X)));
- 
-          if F64 (D) /= X then
-             VSCR := Write_Bit (VSCR, SAT_POS, 1);
-          end if;
- 
-          return D;
-       end Saturate;
- 
-       -----------------
-       -- Sign_Extend --
-       -----------------
- 
-       function Sign_Extend (X : c_int) return Component_Type is
-       begin
-          --  X is usually a 5-bits literal. In the case of the simulator,
-          --  it is an integral parameter, so sign extension is straightforward.
- 
-          return Component_Type (X);
-       end Sign_Extend;
- 
-       -------------
-       -- abs_vxi --
-       -------------
- 
-       function abs_vxi (A : Varray_Type) return Varray_Type is
-          D : Varray_Type;
- 
-       begin
-          for K in Varray_Type'Range loop
-             D (K) := (if A (K) /= Component_Type'First
-                       then abs (A (K)) else Component_Type'First);
-          end loop;
- 
-          return D;
-       end abs_vxi;
- 
-       --------------
-       -- abss_vxi --
-       --------------
- 
-       function abss_vxi (A : Varray_Type) return Varray_Type is
-          D : Varray_Type;
- 
-       begin
-          for K in Varray_Type'Range loop
-             D (K) := Saturate (abs (SI64 (A (K))));
-          end loop;
- 
-          return D;
-       end abss_vxi;
- 
-       -------------
-       -- vaddsxs --
-       -------------
- 
-       function vaddsxs (A : Varray_Type; B : Varray_Type) return Varray_Type is
-          D : Varray_Type;
- 
-       begin
-          for J in Varray_Type'Range loop
-             D (J) := Saturate (SI64 (A (J)) + SI64 (B (J)));
-          end loop;
- 
-          return D;
-       end vaddsxs;
- 
-       ------------
-       -- vavgsx --
-       ------------
- 
-       function vavgsx (A : Varray_Type; B : Varray_Type) return Varray_Type is
-          D : Varray_Type;
- 
-       begin
-          for J in Varray_Type'Range loop
-             D (J) := Component_Type ((SI64 (A (J)) + SI64 (B (J)) + 1) / 2);
-          end loop;
- 
-          return D;
-       end vavgsx;
- 
-       --------------
-       -- vcmpgtsx --
-       --------------
- 
-       function vcmpgtsx
-         (A : Varray_Type;
-          B : Varray_Type) return Varray_Type
-       is
-          D : Varray_Type;
- 
-       begin
-          for J in Varray_Type'Range loop
-             D (J) := (if A (J) > B (J) then Bool_True else Bool_False);
-          end loop;
- 
-          return D;
-       end vcmpgtsx;
- 
-       -----------
-       -- lvexx --
-       -----------
- 
-       function lvexx (A : c_long; B : c_ptr) return Varray_Type is
-          D  : Varray_Type;
-          S  : Integer;
-          EA : Integer_Address;
-          J  : Index_Type;
- 
-       begin
-          S := 16 / Number_Of_Elements;
-          EA := Bound_Align (Integer_Address (A) + To_Integer (B),
-                             Integer_Address (S));
-          J := Index_Type (((EA mod 16) / Integer_Address (S))
-                           + Integer_Address (Index_Type'First));
- 
-          declare
-             Component : Component_Type;
-             for Component'Address use To_Address (EA);
-          begin
-             D (J) := Component;
-          end;
- 
-          return D;
-       end lvexx;
- 
-       ------------
-       -- vmaxsx --
-       ------------
- 
-       function vmaxsx (A : Varray_Type;  B : Varray_Type) return Varray_Type is
-          D : Varray_Type;
- 
-       begin
-          for J in Varray_Type'Range loop
-             D (J) := (if A (J) > B (J) then A (J) else B (J));
-          end loop;
- 
-          return D;
-       end vmaxsx;
- 
-       ------------
-       -- vmrghx --
-       ------------
- 
-       function vmrghx (A : Varray_Type; B : Varray_Type) return Varray_Type is
-          D      : Varray_Type;
-          Offset : constant Integer := Integer (Index_Type'First);
-          M      : constant Integer := Number_Of_Elements / 2;
- 
-       begin
-          for J in 0 .. M - 1 loop
-             D (Index_Type (2 * J + Offset)) := A (Index_Type (J + Offset));
-             D (Index_Type (2 * J + Offset + 1)) := B (Index_Type (J + Offset));
-          end loop;
- 
-          return D;
-       end vmrghx;
- 
-       ------------
-       -- vmrglx --
-       ------------
- 
-       function vmrglx (A : Varray_Type; B : Varray_Type) return Varray_Type is
-          D      : Varray_Type;
-          Offset : constant Integer := Integer (Index_Type'First);
-          M      : constant Integer := Number_Of_Elements / 2;
- 
-       begin
-          for J in 0 .. M - 1 loop
-             D (Index_Type (2 * J + Offset)) := A (Index_Type (J + Offset + M));
-             D (Index_Type (2 * J + Offset + 1)) :=
-               B (Index_Type (J + Offset + M));
-          end loop;
- 
-          return D;
-       end vmrglx;
- 
-       ------------
-       -- vminsx --
-       ------------
- 
-       function vminsx (A : Varray_Type; B : Varray_Type) return Varray_Type is
-          D : Varray_Type;
- 
-       begin
-          for J in Varray_Type'Range loop
-             D (J) := (if A (J) < B (J) then A (J) else B (J));
-          end loop;
- 
-          return D;
-       end vminsx;
- 
-       ------------
-       -- vspltx --
-       ------------
- 
-       function vspltx (A : Varray_Type; B : c_int) return Varray_Type is
-          J : constant Integer :=
-                Integer (B) mod Number_Of_Elements
-            + Integer (Varray_Type'First);
-          D : Varray_Type;
- 
-       begin
-          for K in Varray_Type'Range loop
-             D (K) := A (Index_Type (J));
-          end loop;
- 
-          return D;
-       end vspltx;
- 
-       --------------
-       -- vspltisx --
-       --------------
- 
-       function vspltisx (A : c_int) return Varray_Type is
-          D : Varray_Type;
- 
-       begin
-          for J in Varray_Type'Range loop
-             D (J) := Sign_Extend (A);
-          end loop;
- 
-          return D;
-       end vspltisx;
- 
-       -----------
-       -- vsrax --
-       -----------
- 
-       function vsrax
-         (A          : Varray_Type;
-          B          : Varray_Type;
-          Shift_Func : Bit_Operation) return Varray_Type
-       is
-          D : Varray_Type;
-          S : constant Component_Type :=
-                Component_Type (128 / Number_Of_Elements);
- 
-       begin
-          for J in Varray_Type'Range loop
-             D (J) := Shift_Func (A (J), Natural (B (J) mod S));
-          end loop;
- 
-          return D;
-       end vsrax;
- 
-       ------------
-       -- stvexx --
-       ------------
- 
-       procedure stvexx (A : Varray_Type; B : c_int; C : c_ptr) is
-          S  : Integer;
-          EA : Integer_Address;
-          J  : Index_Type;
- 
-       begin
-          S := 16 / Number_Of_Elements;
-          EA := Bound_Align (Integer_Address (B) + To_Integer (C),
-                             Integer_Address (S));
-          J := Index_Type ((EA mod 16) / Integer_Address (S)
-                           + Integer_Address (Index_Type'First));
- 
-          declare
-             Component : Component_Type;
-             for Component'Address use To_Address (EA);
-          begin
-             Component := A (J);
-          end;
-       end stvexx;
- 
-       -------------
-       -- vsubsxs --
-       -------------
- 
-       function vsubsxs (A : Varray_Type; B : Varray_Type) return Varray_Type is
-          D : Varray_Type;
- 
-       begin
-          for J in Varray_Type'Range loop
-             D (J) := Saturate (SI64 (A (J)) - SI64 (B (J)));
-          end loop;
- 
-          return D;
-       end vsubsxs;
- 
-       ---------------
-       -- Check_CR6 --
-       ---------------
- 
-       function Check_CR6 (A : c_int; D : Varray_Type) return c_int is
-          All_Element : Boolean := True;
-          Any_Element : Boolean := False;
- 
-       begin
-          for J in Varray_Type'Range loop
-             All_Element := All_Element and then (D (J) = Bool_True);
-             Any_Element := Any_Element or else  (D (J) = Bool_True);
-          end loop;
- 
-          if A = CR6_LT then
-             if All_Element then
-                return 1;
-             else
-                return 0;
-             end if;
- 
-          elsif A = CR6_EQ then
-             if not Any_Element then
-                return 1;
-             else
-                return 0;
-             end if;
- 
-          elsif A = CR6_EQ_REV then
-             if Any_Element then
-                return 1;
-             else
-                return 0;
-             end if;
- 
-          elsif A = CR6_LT_REV then
-             if not All_Element then
-                return 1;
-             else
-                return 0;
-             end if;
-          end if;
- 
-          return 0;
-       end Check_CR6;
- 
-    end Signed_Operations;
- 
-    --------------------------------
-    -- Unsigned_Operations (spec) --
-    --------------------------------
- 
-    generic
-       type Component_Type is mod <>;
-       type Index_Type is range <>;
-       type Varray_Type is array (Index_Type) of Component_Type;
- 
-    package Unsigned_Operations is
- 
-       function Bits
-         (X    : Component_Type;
-          Low  : Natural;
-          High : Natural) return Component_Type;
-       --  Return X [Low:High] as defined in [PIM-4.3 Notations and Conventions]
-       --  using big endian bit ordering.
- 
-       function Write_Bit
-         (X     : Component_Type;
-          Where : Natural;
-          Value : Unsigned_1) return Component_Type;
-       --  Write Value into X[Where:Where] (if it fits in) and return the result
-       --  (big endian bit ordering).
- 
-       function Modular_Result (X : UI64) return Component_Type;
- 
-       function Saturate (X : UI64) return Component_Type;
- 
-       function Saturate (X : F64) return Component_Type;
- 
-       function Saturate (X : SI64) return Component_Type;
- 
-       function vadduxm  (A : Varray_Type; B : Varray_Type) return Varray_Type;
- 
-       function vadduxs  (A : Varray_Type; B : Varray_Type) return Varray_Type;
- 
-       function vavgux   (A : Varray_Type; B : Varray_Type) return Varray_Type;
- 
-       function vcmpequx (A : Varray_Type; B : Varray_Type) return Varray_Type;
- 
-       function vcmpgtux (A : Varray_Type; B : Varray_Type) return Varray_Type;
- 
-       function vmaxux   (A : Varray_Type; B : Varray_Type) return Varray_Type;
- 
-       function vminux   (A : Varray_Type; B : Varray_Type) return Varray_Type;
- 
-       type Bit_Operation is
-         access function
-         (Value  : Component_Type;
-          Amount : Natural) return Component_Type;
- 
-       function vrlx
-         (A    : Varray_Type;
-          B    : Varray_Type;
-          ROTL : Bit_Operation) return Varray_Type;
- 
-       function vsxx
-         (A          : Varray_Type;
-          B          : Varray_Type;
-          Shift_Func : Bit_Operation) return Varray_Type;
-       --  Vector shift (left or right, depending on Shift_Func)
- 
-       function vsubuxm (A : Varray_Type; B : Varray_Type) return Varray_Type;
- 
-       function vsubuxs (A : Varray_Type; B : Varray_Type) return Varray_Type;
- 
-       function Check_CR6 (A : c_int; D : Varray_Type) return c_int;
-       --  If D is the result of a vcmp operation and A the flag for
-       --  the kind of operation (e.g CR6_LT), check the predicate
-       --  that corresponds to this flag.
- 
-    end Unsigned_Operations;
- 
-    --------------------------------
-    -- Unsigned_Operations (body) --
-    --------------------------------
- 
-    package body Unsigned_Operations is
- 
-       Number_Of_Elements : constant Integer :=
-                              VECTOR_BIT / Component_Type'Size;
- 
-       Bool_True  : constant Component_Type := Component_Type'Last;
-       Bool_False : constant Component_Type := 0;
- 
-       --------------------
-       -- Modular_Result --
-       --------------------
- 
-       function Modular_Result (X : UI64) return Component_Type is
-          D : Component_Type;
-       begin
-          D := Component_Type (X mod (UI64 (Component_Type'Last) + 1));
-          return D;
-       end Modular_Result;
- 
-       --------------
-       -- Saturate --
-       --------------
- 
-       function Saturate (X : UI64) return Component_Type is
-          D : Component_Type;
- 
-       begin
-          --  Saturation, as defined in
-          --  [PIM-4.1 Vector Status and Control Register]
- 
-          D := Component_Type (UI64'Max
-                               (UI64 (Component_Type'First),
-                                UI64'Min
-                                (UI64 (Component_Type'Last),
-                                 X)));
- 
-          if UI64 (D) /= X then
-             VSCR := Write_Bit (VSCR, SAT_POS, 1);
-          end if;
- 
-          return D;
-       end Saturate;
- 
-       function Saturate (X : SI64) return Component_Type is
-          D : Component_Type;
- 
-       begin
-          --  Saturation, as defined in
-          --  [PIM-4.1 Vector Status and Control Register]
- 
-          D := Component_Type (SI64'Max
-                               (SI64 (Component_Type'First),
-                                SI64'Min
-                                (SI64 (Component_Type'Last),
-                                 X)));
- 
-          if SI64 (D) /= X then
-             VSCR := Write_Bit (VSCR, SAT_POS, 1);
-          end if;
- 
-          return D;
-       end Saturate;
- 
-       function Saturate (X : F64) return Component_Type is
-          D : Component_Type;
- 
-       begin
-          --  Saturation, as defined in
-          --  [PIM-4.1 Vector Status and Control Register]
- 
-          D := Component_Type (F64'Max
-                               (F64 (Component_Type'First),
-                                F64'Min
-                                (F64 (Component_Type'Last),
-                                 X)));
- 
-          if F64 (D) /= X then
-             VSCR := Write_Bit (VSCR, SAT_POS, 1);
-          end if;
- 
-          return D;
-       end Saturate;
- 
-       ----------
-       -- Bits --
-       ----------
- 
-       function Bits
-         (X    : Component_Type;
-          Low  : Natural;
-          High : Natural) return Component_Type
-       is
-          Mask : Component_Type := 0;
- 
-          --  The Altivec ABI uses a big endian bit ordering, and we are
-          --  using little endian bit ordering for extracting bits:
- 
-          Low_LE  : constant Natural := Component_Type'Size - 1 - High;
-          High_LE : constant Natural := Component_Type'Size - 1 - Low;
- 
-       begin
-          pragma Assert (Low <= Component_Type'Size);
-          pragma Assert (High <= Component_Type'Size);
- 
-          for J in Low_LE .. High_LE loop
-             Mask := Mask or 2 ** J;
-          end loop;
- 
-          return (X and Mask) / 2 ** Low_LE;
-       end Bits;
- 
-       ---------------
-       -- Write_Bit --
-       ---------------
- 
-       function Write_Bit
-         (X     : Component_Type;
-          Where : Natural;
-          Value : Unsigned_1) return Component_Type
-       is
-          Result   : Component_Type := 0;
- 
-          --  The Altivec ABI uses a big endian bit ordering, and we are
-          --  using little endian bit ordering for extracting bits:
- 
-          Where_LE : constant Natural := Component_Type'Size - 1 - Where;
- 
-       begin
-          pragma Assert (Where < Component_Type'Size);
- 
-          case Value is
-             when 1 =>
-                Result := X or 2 ** Where_LE;
-             when 0 =>
-                Result := X and not (2 ** Where_LE);
-          end case;
- 
-          return Result;
-       end Write_Bit;
- 
-       -------------
-       -- vadduxm --
-       -------------
- 
-       function vadduxm (A : Varray_Type; B : Varray_Type) return Varray_Type is
-          D : Varray_Type;
- 
-       begin
-          for J in Varray_Type'Range loop
-             D (J) := A (J) + B (J);
-          end loop;
- 
-          return D;
-       end vadduxm;
- 
-       -------------
-       -- vadduxs --
-       -------------
- 
-       function vadduxs (A : Varray_Type; B : Varray_Type) return Varray_Type is
-          D : Varray_Type;
- 
-       begin
-          for J in Varray_Type'Range loop
-             D (J) := Saturate (UI64 (A (J)) + UI64 (B (J)));
-          end loop;
- 
-          return D;
-       end vadduxs;
- 
-       ------------
-       -- vavgux --
-       ------------
- 
-       function vavgux (A : Varray_Type; B : Varray_Type) return Varray_Type is
-          D : Varray_Type;
- 
-       begin
-          for J in Varray_Type'Range loop
-             D (J) := Component_Type ((UI64 (A (J)) + UI64 (B (J)) + 1) / 2);
-          end loop;
- 
-          return D;
-       end vavgux;
- 
-       --------------
-       -- vcmpequx --
-       --------------
- 
-       function vcmpequx
-         (A : Varray_Type;
-          B : Varray_Type) return Varray_Type
-       is
-          D : Varray_Type;
- 
-       begin
-          for J in Varray_Type'Range loop
-             D (J) := (if A (J) = B (J) then Bool_True else Bool_False);
-          end loop;
- 
-          return D;
-       end vcmpequx;
- 
-       --------------
-       -- vcmpgtux --
-       --------------
- 
-       function vcmpgtux
-         (A : Varray_Type;
-          B : Varray_Type) return Varray_Type
-       is
-          D : Varray_Type;
-       begin
-          for J in Varray_Type'Range loop
-             D (J) := (if A (J) > B (J) then Bool_True else Bool_False);
-          end loop;
- 
-          return D;
-       end vcmpgtux;
- 
-       ------------
-       -- vmaxux --
-       ------------
- 
-       function vmaxux (A : Varray_Type;  B : Varray_Type) return Varray_Type is
-          D : Varray_Type;
- 
-       begin
-          for J in Varray_Type'Range loop
-             D (J) := (if A (J) > B (J) then A (J) else B (J));
-          end loop;
- 
-          return D;
-       end vmaxux;
- 
-       ------------
-       -- vminux --
-       ------------
- 
-       function vminux (A : Varray_Type; B : Varray_Type) return Varray_Type is
-          D : Varray_Type;
- 
-       begin
-          for J in Varray_Type'Range loop
-             D (J) := (if A (J) < B (J) then A (J) else B (J));
-          end loop;
- 
-          return D;
-       end vminux;
- 
-       ----------
-       -- vrlx --
-       ----------
- 
-       function vrlx
-         (A    : Varray_Type;
-          B    : Varray_Type;
-          ROTL : Bit_Operation) return Varray_Type
-       is
-          D : Varray_Type;
- 
-       begin
-          for J in Varray_Type'Range loop
-             D (J) := ROTL (A (J), Natural (B (J)));
-          end loop;
- 
-          return D;
-       end vrlx;
- 
-       ----------
-       -- vsxx --
-       ----------
- 
-       function vsxx
-         (A          : Varray_Type;
-          B          : Varray_Type;
-          Shift_Func : Bit_Operation) return Varray_Type
-       is
-          D : Varray_Type;
-          S : constant Component_Type :=
-                Component_Type (128 / Number_Of_Elements);
- 
-       begin
-          for J in Varray_Type'Range loop
-             D (J) := Shift_Func (A (J), Natural (B (J) mod S));
-          end loop;
- 
-          return D;
-       end vsxx;
- 
-       -------------
-       -- vsubuxm --
-       -------------
- 
-       function vsubuxm (A : Varray_Type; B : Varray_Type) return Varray_Type is
-          D : Varray_Type;
- 
-       begin
-          for J in Varray_Type'Range loop
-             D (J) := A (J) - B (J);
-          end loop;
- 
-          return D;
-       end vsubuxm;
- 
-       -------------
-       -- vsubuxs --
-       -------------
- 
-       function vsubuxs (A : Varray_Type; B : Varray_Type) return Varray_Type is
-          D : Varray_Type;
- 
-       begin
-          for J in Varray_Type'Range loop
-             D (J) := Saturate (SI64 (A (J)) - SI64 (B (J)));
-          end loop;
- 
-          return D;
-       end vsubuxs;
- 
-       ---------------
-       -- Check_CR6 --
-       ---------------
- 
-       function Check_CR6 (A : c_int; D : Varray_Type) return c_int is
-          All_Element : Boolean := True;
-          Any_Element : Boolean := False;
- 
-       begin
-          for J in Varray_Type'Range loop
-             All_Element := All_Element and then (D (J) = Bool_True);
-             Any_Element := Any_Element or else  (D (J) = Bool_True);
-          end loop;
- 
-          if A = CR6_LT then
-             if All_Element then
-                return 1;
-             else
-                return 0;
-             end if;
- 
-          elsif A = CR6_EQ then
-             if not Any_Element then
-                return 1;
-             else
-                return 0;
-             end if;
- 
-          elsif A = CR6_EQ_REV then
-             if Any_Element then
-                return 1;
-             else
-                return 0;
-             end if;
- 
-          elsif A = CR6_LT_REV then
-             if not All_Element then
-                return 1;
-             else
-                return 0;
-             end if;
-          end if;
- 
-          return 0;
-       end Check_CR6;
- 
-    end Unsigned_Operations;
- 
-    --------------------------------------
-    -- Signed_Merging_Operations (spec) --
-    --------------------------------------
- 
-    generic
-       type Component_Type is range <>;
-       type Index_Type is range <>;
-       type Varray_Type is array (Index_Type) of Component_Type;
-       type Double_Component_Type is range <>;
-       type Double_Index_Type is range <>;
-       type Double_Varray_Type is array (Double_Index_Type)
-         of Double_Component_Type;
- 
-    package Signed_Merging_Operations is
- 
-       pragma Assert (Integer (Varray_Type'First)
-                      = Integer (Double_Varray_Type'First));
-       pragma Assert (Varray_Type'Length = 2 * Double_Varray_Type'Length);
-       pragma Assert (2 * Component_Type'Size = Double_Component_Type'Size);
- 
-       function Saturate
-         (X : Double_Component_Type) return Component_Type;
- 
-       function vmulxsx
-         (Use_Even_Components : Boolean;
-          A                   : Varray_Type;
-          B                   : Varray_Type) return Double_Varray_Type;
- 
-       function vpksxss
-         (A : Double_Varray_Type;
-          B : Double_Varray_Type) return Varray_Type;
-       pragma Convention (LL_Altivec, vpksxss);
- 
-       function vupkxsx
-         (A      : Varray_Type;
-          Offset : Natural) return Double_Varray_Type;
- 
-    end Signed_Merging_Operations;
- 
-    --------------------------------------
-    -- Signed_Merging_Operations (body) --
-    --------------------------------------
- 
-    package body Signed_Merging_Operations is
- 
-       --------------
-       -- Saturate --
-       --------------
- 
-       function Saturate
-         (X : Double_Component_Type) return Component_Type
-       is
-          D : Component_Type;
- 
-       begin
-          --  Saturation, as defined in
-          --  [PIM-4.1 Vector Status and Control Register]
- 
-          D := Component_Type (Double_Component_Type'Max
-                               (Double_Component_Type (Component_Type'First),
-                                Double_Component_Type'Min
-                                (Double_Component_Type (Component_Type'Last),
-                                 X)));
- 
-          if Double_Component_Type (D) /= X then
-             VSCR := Write_Bit (VSCR, SAT_POS, 1);
-          end if;
- 
-          return D;
-       end Saturate;
- 
-       -------------
-       -- vmulsxs --
-       -------------
- 
-       function vmulxsx
-         (Use_Even_Components : Boolean;
-          A                   : Varray_Type;
-          B                   : Varray_Type) return Double_Varray_Type
-       is
-          Double_Offset : Double_Index_Type;
-          Offset        : Index_Type;
-          D             : Double_Varray_Type;
-          N             : constant Integer :=
-                            Integer (Double_Index_Type'Last)
-                            - Integer (Double_Index_Type'First) + 1;
- 
-       begin
- 
-          for J in 0 .. N - 1 loop
-             Offset :=
-               Index_Type ((if Use_Even_Components then 2 * J else 2 * J + 1) +
-                           Integer (Index_Type'First));
- 
-             Double_Offset :=
-               Double_Index_Type (J + Integer (Double_Index_Type'First));
-             D (Double_Offset) :=
-               Double_Component_Type (A (Offset)) *
-               Double_Component_Type (B (Offset));
-          end loop;
- 
-          return D;
-       end vmulxsx;
- 
-       -------------
-       -- vpksxss --
-       -------------
- 
-       function vpksxss
-         (A : Double_Varray_Type;
-          B : Double_Varray_Type) return Varray_Type
-       is
-          N             : constant Index_Type :=
-                            Index_Type (Double_Index_Type'Last);
-          D             : Varray_Type;
-          Offset        : Index_Type;
-          Double_Offset : Double_Index_Type;
- 
-       begin
-          for J in 0 .. N - 1 loop
-             Offset := Index_Type (Integer (J) + Integer (Index_Type'First));
-             Double_Offset :=
-               Double_Index_Type (Integer (J)
-                                  + Integer (Double_Index_Type'First));
-             D (Offset) := Saturate (A (Double_Offset));
-             D (Offset + N) := Saturate (B (Double_Offset));
-          end loop;
- 
-          return D;
-       end vpksxss;
- 
-       -------------
-       -- vupkxsx --
-       -------------
- 
-       function vupkxsx
-         (A      : Varray_Type;
-          Offset : Natural) return Double_Varray_Type
-       is
-          K : Index_Type;
-          D : Double_Varray_Type;
- 
-       begin
-          for J in Double_Varray_Type'Range loop
-             K := Index_Type (Integer (J)
-                              - Integer (Double_Index_Type'First)
-                              + Integer (Index_Type'First)
-                              + Offset);
-             D (J) := Double_Component_Type (A (K));
-          end loop;
- 
-          return D;
-       end vupkxsx;
- 
-    end Signed_Merging_Operations;
- 
-    ----------------------------------------
-    -- Unsigned_Merging_Operations (spec) --
-    ----------------------------------------
- 
-    generic
-       type Component_Type is mod <>;
-       type Index_Type is range <>;
-       type Varray_Type is array (Index_Type) of Component_Type;
-       type Double_Component_Type is mod <>;
-       type Double_Index_Type is range <>;
-       type Double_Varray_Type is array (Double_Index_Type)
-         of Double_Component_Type;
- 
-    package Unsigned_Merging_Operations is
- 
-       pragma Assert (Integer (Varray_Type'First)
-                      = Integer (Double_Varray_Type'First));
-       pragma Assert (Varray_Type'Length = 2 * Double_Varray_Type'Length);
-       pragma Assert (2 * Component_Type'Size = Double_Component_Type'Size);
- 
-       function UI_To_UI_Mod
-         (X : Double_Component_Type;
-          Y : Natural) return Component_Type;
- 
-       function Saturate (X : Double_Component_Type) return Component_Type;
- 
-       function vmulxux
-         (Use_Even_Components : Boolean;
-          A                   : Varray_Type;
-          B                   : Varray_Type) return Double_Varray_Type;
- 
-       function vpkuxum
-         (A : Double_Varray_Type;
-          B : Double_Varray_Type) return Varray_Type;
- 
-       function vpkuxus
-         (A : Double_Varray_Type;
-          B : Double_Varray_Type) return Varray_Type;
- 
-    end Unsigned_Merging_Operations;
- 
-    ----------------------------------------
-    -- Unsigned_Merging_Operations (body) --
-    ----------------------------------------
- 
-    package body Unsigned_Merging_Operations is
- 
-       ------------------
-       -- UI_To_UI_Mod --
-       ------------------
- 
-       function UI_To_UI_Mod
-         (X : Double_Component_Type;
-          Y : Natural) return Component_Type is
-          Z : Component_Type;
-       begin
-          Z := Component_Type (X mod 2 ** Y);
-          return Z;
-       end UI_To_UI_Mod;
- 
-       --------------
-       -- Saturate --
-       --------------
- 
-       function Saturate (X : Double_Component_Type) return Component_Type is
-          D : Component_Type;
- 
-       begin
-          --  Saturation, as defined in
-          --  [PIM-4.1 Vector Status and Control Register]
- 
-          D := Component_Type (Double_Component_Type'Max
-                               (Double_Component_Type (Component_Type'First),
-                                Double_Component_Type'Min
-                                (Double_Component_Type (Component_Type'Last),
-                                 X)));
- 
-          if Double_Component_Type (D) /= X then
-             VSCR := Write_Bit (VSCR, SAT_POS, 1);
-          end if;
- 
-          return D;
-       end Saturate;
- 
-       -------------
-       -- vmulxux --
-       -------------
- 
-       function vmulxux
-         (Use_Even_Components : Boolean;
-          A                   : Varray_Type;
-          B                   : Varray_Type) return Double_Varray_Type
-       is
-          Double_Offset : Double_Index_Type;
-          Offset        : Index_Type;
-          D             : Double_Varray_Type;
-          N             : constant Integer :=
-                            Integer (Double_Index_Type'Last)
-                            - Integer (Double_Index_Type'First) + 1;
- 
-       begin
-          for J in 0 .. N - 1 loop
-             Offset :=
-               Index_Type ((if Use_Even_Components then 2 * J else 2 * J + 1) +
-                           Integer (Index_Type'First));
- 
-             Double_Offset :=
-               Double_Index_Type (J + Integer (Double_Index_Type'First));
-             D (Double_Offset) :=
-               Double_Component_Type (A (Offset)) *
-               Double_Component_Type (B (Offset));
-          end loop;
- 
-          return D;
-       end vmulxux;
- 
-       -------------
-       -- vpkuxum --
-       -------------
- 
-       function vpkuxum
-         (A : Double_Varray_Type;
-          B : Double_Varray_Type) return Varray_Type
-       is
-          S             : constant Natural :=
-                            Double_Component_Type'Size / 2;
-          N             : constant Index_Type :=
-                            Index_Type (Double_Index_Type'Last);
-          D             : Varray_Type;
-          Offset        : Index_Type;
-          Double_Offset : Double_Index_Type;
- 
-       begin
-          for J in 0 .. N - 1 loop
-             Offset := Index_Type (Integer (J) + Integer (Index_Type'First));
-             Double_Offset :=
-               Double_Index_Type (Integer (J)
-                                  + Integer (Double_Index_Type'First));
-             D (Offset) := UI_To_UI_Mod (A (Double_Offset), S);
-             D (Offset + N) := UI_To_UI_Mod (B (Double_Offset), S);
-          end loop;
- 
-          return D;
-       end vpkuxum;
- 
-       -------------
-       -- vpkuxus --
-       -------------
- 
-       function vpkuxus
-         (A : Double_Varray_Type;
-          B : Double_Varray_Type) return Varray_Type
-       is
-          N             : constant Index_Type :=
-                            Index_Type (Double_Index_Type'Last);
-          D             : Varray_Type;
-          Offset        : Index_Type;
-          Double_Offset : Double_Index_Type;
- 
-       begin
-          for J in 0 .. N - 1 loop
-             Offset := Index_Type (Integer (J) + Integer (Index_Type'First));
-             Double_Offset :=
-               Double_Index_Type (Integer (J)
-                                  + Integer (Double_Index_Type'First));
-             D (Offset) := Saturate (A (Double_Offset));
-             D (Offset + N) := Saturate (B (Double_Offset));
-          end loop;
- 
-          return D;
-       end vpkuxus;
- 
-    end Unsigned_Merging_Operations;
- 
-    package LL_VSC_Operations is
-      new Signed_Operations (signed_char,
-                             Vchar_Range,
-                             Varray_signed_char);
- 
-    package LL_VSS_Operations is
-      new Signed_Operations (signed_short,
-                             Vshort_Range,
-                             Varray_signed_short);
- 
-    package LL_VSI_Operations is
-      new Signed_Operations (signed_int,
-                             Vint_Range,
-                             Varray_signed_int);
- 
-    package LL_VUC_Operations is
-      new Unsigned_Operations (unsigned_char,
-                               Vchar_Range,
-                               Varray_unsigned_char);
- 
-    package LL_VUS_Operations is
-      new Unsigned_Operations (unsigned_short,
-                               Vshort_Range,
-                               Varray_unsigned_short);
- 
-    package LL_VUI_Operations is
-      new Unsigned_Operations (unsigned_int,
-                               Vint_Range,
-                               Varray_unsigned_int);
- 
-    package LL_VSC_LL_VSS_Operations is
-      new Signed_Merging_Operations (signed_char,
-                                     Vchar_Range,
-                                     Varray_signed_char,
-                                     signed_short,
-                                     Vshort_Range,
-                                     Varray_signed_short);
- 
-    package LL_VSS_LL_VSI_Operations is
-      new Signed_Merging_Operations (signed_short,
-                                     Vshort_Range,
-                                     Varray_signed_short,
-                                     signed_int,
-                                     Vint_Range,
-                                     Varray_signed_int);
- 
-    package LL_VUC_LL_VUS_Operations is
-      new Unsigned_Merging_Operations (unsigned_char,
-                                       Vchar_Range,
-                                       Varray_unsigned_char,
-                                       unsigned_short,
-                                       Vshort_Range,
-                                       Varray_unsigned_short);
- 
-    package LL_VUS_LL_VUI_Operations is
-      new Unsigned_Merging_Operations (unsigned_short,
-                                       Vshort_Range,
-                                       Varray_unsigned_short,
-                                       unsigned_int,
-                                       Vint_Range,
-                                       Varray_unsigned_int);
- 
-    ----------
-    -- Bits --
-    ----------
- 
-    function Bits
-      (X    : unsigned_int;
-       Low  : Natural;
-       High : Natural) return unsigned_int renames LL_VUI_Operations.Bits;
- 
-    function Bits
-      (X    : unsigned_short;
-       Low  : Natural;
-       High : Natural) return unsigned_short renames LL_VUS_Operations.Bits;
- 
-    function Bits
-      (X    : unsigned_char;
-       Low  : Natural;
-       High : Natural) return unsigned_char renames LL_VUC_Operations.Bits;
- 
-    ---------------
-    -- Write_Bit --
-    ---------------
- 
-    function Write_Bit
-      (X     : unsigned_int;
-       Where : Natural;
-       Value : Unsigned_1) return unsigned_int
-      renames LL_VUI_Operations.Write_Bit;
- 
-    function Write_Bit
-      (X     : unsigned_short;
-       Where : Natural;
-       Value : Unsigned_1) return unsigned_short
-      renames LL_VUS_Operations.Write_Bit;
- 
-    function Write_Bit
-      (X     : unsigned_char;
-       Where : Natural;
-       Value : Unsigned_1) return unsigned_char
-      renames LL_VUC_Operations.Write_Bit;
- 
-    -----------------
-    -- Bound_Align --
-    -----------------
- 
-    function Bound_Align
-      (X : Integer_Address;
-       Y : Integer_Address) return Integer_Address
-    is
-       D : Integer_Address;
-    begin
-       D := X - X mod Y;
-       return D;
-    end Bound_Align;
- 
-    -----------------
-    -- NJ_Truncate --
-    -----------------
- 
-    function NJ_Truncate (X : C_float) return C_float is
-       D : C_float;
- 
-    begin
-       if (Bits (VSCR, NJ_POS, NJ_POS) = 1)
-         and then abs (X) < 2.0 ** (-126)
-       then
-          D := (if X < 0.0 then -0.0 else +0.0);
-       else
-          D := X;
-       end if;
- 
-       return D;
-    end NJ_Truncate;
- 
-    -----------------------
-    -- Rnd_To_FP_Nearest --
-    -----------------------
- 
-    function Rnd_To_FP_Nearest (X : F64) return C_float is
-    begin
-       return C_float (X);
-    end Rnd_To_FP_Nearest;
- 
-    ---------------------
-    -- Rnd_To_FPI_Near --
-    ---------------------
- 
-    function Rnd_To_FPI_Near (X : F64) return F64 is
-       Result  : F64;
-       Ceiling : F64;
- 
-    begin
-       Result := F64 (SI64 (X));
- 
-       if (F64'Ceiling (X) - X) = (X + 1.0 - F64'Ceiling (X)) then
- 
-          --  Round to even
- 
-          Ceiling := F64'Ceiling (X);
-          Result :=
-            (if Rnd_To_FPI_Trunc (Ceiling / 2.0) * 2.0 = Ceiling
-             then Ceiling else Ceiling - 1.0);
-       end if;
- 
-       return Result;
-    end Rnd_To_FPI_Near;
- 
-    ----------------------
-    -- Rnd_To_FPI_Trunc --
-    ----------------------
- 
-    function Rnd_To_FPI_Trunc (X : F64) return F64 is
-       Result : F64;
- 
-    begin
-       Result := F64'Ceiling (X);
- 
-       --  Rnd_To_FPI_Trunc rounds toward 0, 'Ceiling rounds toward
-       --  +Infinity
- 
-       if X > 0.0
-         and then Result /= X
-       then
-          Result := Result - 1.0;
-       end if;
- 
-       return Result;
-    end Rnd_To_FPI_Trunc;
- 
-    ------------------
-    -- FP_Recip_Est --
-    ------------------
- 
-    function FP_Recip_Est (X : C_float) return C_float is
-    begin
-       --  ???  [PIM-4.4 vec_re] "For result that are not +0, -0, +Inf,
-       --  -Inf, or QNaN, the estimate has a relative error no greater
-       --  than one part in 4096, that is:
-       --  Abs ((estimate - 1 / x) / (1 / x)) < = 1/4096"
- 
-       return NJ_Truncate (1.0 / NJ_Truncate (X));
-    end FP_Recip_Est;
- 
-    ----------
-    -- ROTL --
-    ----------
- 
-    function ROTL
-      (Value  : unsigned_char;
-       Amount : Natural) return unsigned_char
-    is
-       Result : Unsigned_8;
-    begin
-       Result := Rotate_Left (Unsigned_8 (Value), Amount);
-       return unsigned_char (Result);
-    end ROTL;
- 
-    function ROTL
-      (Value  : unsigned_short;
-       Amount : Natural) return unsigned_short
-    is
-       Result : Unsigned_16;
-    begin
-       Result := Rotate_Left (Unsigned_16 (Value), Amount);
-       return unsigned_short (Result);
-    end ROTL;
- 
-    function ROTL
-      (Value  : unsigned_int;
-       Amount : Natural) return unsigned_int
-    is
-       Result : Unsigned_32;
-    begin
-       Result := Rotate_Left (Unsigned_32 (Value), Amount);
-       return unsigned_int (Result);
-    end ROTL;
- 
-    --------------------
-    -- Recip_SQRT_Est --
-    --------------------
- 
-    function Recip_SQRT_Est (X : C_float) return C_float is
-       Result : C_float;
- 
-    begin
-       --  ???
-       --  [PIM-4.4 vec_rsqrte] the estimate has a relative error in precision
-       --  no greater than one part in 4096, that is:
-       --  abs ((estimate - 1 / sqrt (x)) / (1 / sqrt (x)) <= 1 / 4096"
- 
-       Result := 1.0 / NJ_Truncate (C_float_Operations.Sqrt (NJ_Truncate (X)));
-       return NJ_Truncate (Result);
-    end Recip_SQRT_Est;
- 
-    ----------------
-    -- Shift_Left --
-    ----------------
- 
-    function Shift_Left
-      (Value  : unsigned_char;
-       Amount : Natural) return unsigned_char
-    is
-       Result : Unsigned_8;
-    begin
-       Result := Shift_Left (Unsigned_8 (Value), Amount);
-       return unsigned_char (Result);
-    end Shift_Left;
- 
-    function Shift_Left
-      (Value  : unsigned_short;
-       Amount : Natural) return unsigned_short
-    is
-       Result : Unsigned_16;
-    begin
-       Result := Shift_Left (Unsigned_16 (Value), Amount);
-       return unsigned_short (Result);
-    end Shift_Left;
- 
-    function Shift_Left
-      (Value  : unsigned_int;
-       Amount : Natural) return unsigned_int
-    is
-       Result : Unsigned_32;
-    begin
-       Result := Shift_Left (Unsigned_32 (Value), Amount);
-       return unsigned_int (Result);
-    end Shift_Left;
- 
-    -----------------
-    -- Shift_Right --
-    -----------------
- 
-    function Shift_Right
-      (Value  : unsigned_char;
-       Amount : Natural) return unsigned_char
-    is
-       Result : Unsigned_8;
-    begin
-       Result := Shift_Right (Unsigned_8 (Value), Amount);
-       return unsigned_char (Result);
-    end Shift_Right;
- 
-    function Shift_Right
-      (Value  : unsigned_short;
-       Amount : Natural) return unsigned_short
-    is
-       Result : Unsigned_16;
-    begin
-       Result := Shift_Right (Unsigned_16 (Value), Amount);
-       return unsigned_short (Result);
-    end Shift_Right;
- 
-    function Shift_Right
-      (Value  : unsigned_int;
-       Amount : Natural) return unsigned_int
-    is
-       Result : Unsigned_32;
-    begin
-       Result := Shift_Right (Unsigned_32 (Value), Amount);
-       return unsigned_int (Result);
-    end Shift_Right;
- 
-    -------------------
-    -- Shift_Right_A --
-    -------------------
- 
-    generic
-       type Signed_Type is range <>;
-       type Unsigned_Type is mod <>;
-       with function Shift_Right (Value : Unsigned_Type; Amount : Natural)
-                                 return Unsigned_Type;
-    function Shift_Right_Arithmetic
-      (Value  : Signed_Type;
-       Amount : Natural) return Signed_Type;
- 
-    function Shift_Right_Arithmetic
-      (Value  : Signed_Type;
-       Amount : Natural) return Signed_Type
-    is
-    begin
-       if Value > 0 then
-          return Signed_Type (Shift_Right (Unsigned_Type (Value), Amount));
-       else
-          return -Signed_Type (Shift_Right (Unsigned_Type (-Value - 1), Amount)
-                               + 1);
-       end if;
-    end Shift_Right_Arithmetic;
- 
-    function Shift_Right_A is new Shift_Right_Arithmetic (signed_int,
-                                                          Unsigned_32,
-                                                          Shift_Right);
- 
-    function Shift_Right_A is new Shift_Right_Arithmetic (signed_short,
-                                                          Unsigned_16,
-                                                          Shift_Right);
- 
-    function Shift_Right_A is new Shift_Right_Arithmetic (signed_char,
-                                                          Unsigned_8,
-                                                          Shift_Right);
-    --------------
-    -- To_Pixel --
-    --------------
- 
-    function To_Pixel (Source : unsigned_short) return Pixel_16 is
- 
-       --  This conversion should not depend on the host endianness;
-       --  therefore, we cannot use an unchecked conversion.
- 
-       Target : Pixel_16;
- 
-    begin
-       Target.T := Unsigned_1 (Bits (Source, 0, 0)   mod 2 ** 1);
-       Target.R := Unsigned_5 (Bits (Source, 1, 5)   mod 2 ** 5);
-       Target.G := Unsigned_5 (Bits (Source, 6, 10)  mod 2 ** 5);
-       Target.B := Unsigned_5 (Bits (Source, 11, 15) mod 2 ** 5);
-       return Target;
-    end To_Pixel;
- 
-    function To_Pixel (Source : unsigned_int) return Pixel_32 is
- 
-       --  This conversion should not depend on the host endianness;
-       --  therefore, we cannot use an unchecked conversion.
- 
-       Target : Pixel_32;
- 
-    begin
-       Target.T := unsigned_char (Bits (Source, 0, 7));
-       Target.R := unsigned_char (Bits (Source, 8, 15));
-       Target.G := unsigned_char (Bits (Source, 16, 23));
-       Target.B := unsigned_char (Bits (Source, 24, 31));
-       return Target;
-    end To_Pixel;
- 
-    ---------------------
-    -- To_unsigned_int --
-    ---------------------
- 
-    function To_unsigned_int (Source : Pixel_32) return unsigned_int is
- 
-       --  This conversion should not depend on the host endianness;
-       --  therefore, we cannot use an unchecked conversion.
-       --  It should also be the same result, value-wise, on two hosts
-       --  with the same endianness.
- 
-       Target : unsigned_int := 0;
- 
-    begin
-       --  In big endian bit ordering, Pixel_32 looks like:
-       --  -------------------------------------
-       --  |   T    |   R    |   G    |    B   |
-       --  -------------------------------------
-       --  0 (MSB)  7        15       23       32
-       --
-       --  Sizes of the components: (8/8/8/8)
-       --
-       Target := Target or unsigned_int (Source.T);
-       Target := Shift_Left (Target, 8);
-       Target := Target or unsigned_int (Source.R);
-       Target := Shift_Left (Target, 8);
-       Target := Target or unsigned_int (Source.G);
-       Target := Shift_Left (Target, 8);
-       Target := Target or unsigned_int (Source.B);
-       return Target;
-    end To_unsigned_int;
- 
-    -----------------------
-    -- To_unsigned_short --
-    -----------------------
- 
-    function To_unsigned_short (Source : Pixel_16) return unsigned_short is
- 
-       --  This conversion should not depend on the host endianness;
-       --  therefore, we cannot use an unchecked conversion.
-       --  It should also be the same result, value-wise, on two hosts
-       --  with the same endianness.
- 
-       Target : unsigned_short := 0;
- 
-    begin
-       --  In big endian bit ordering, Pixel_16 looks like:
-       --  -------------------------------------
-       --  |   T    |   R    |   G    |    B   |
-       --  -------------------------------------
-       --  0 (MSB)  1        5        11       15
-       --
-       --  Sizes of the components: (1/5/5/5)
-       --
-       Target := Target or unsigned_short (Source.T);
-       Target := Shift_Left (Target, 5);
-       Target := Target or unsigned_short (Source.R);
-       Target := Shift_Left (Target, 5);
-       Target := Target or unsigned_short (Source.G);
-       Target := Shift_Left (Target, 5);
-       Target := Target or unsigned_short (Source.B);
-       return Target;
-    end To_unsigned_short;
- 
-    ---------------
-    -- abs_v16qi --
-    ---------------
- 
-    function abs_v16qi (A : LL_VSC) return LL_VSC is
-       VA : constant VSC_View := To_View (A);
-    begin
-       return To_Vector ((Values =>
-                            LL_VSC_Operations.abs_vxi (VA.Values)));
-    end abs_v16qi;
- 
-    --------------
-    -- abs_v8hi --
-    --------------
- 
-    function abs_v8hi (A : LL_VSS) return LL_VSS is
-       VA : constant VSS_View := To_View (A);
-    begin
-       return To_Vector ((Values =>
-                            LL_VSS_Operations.abs_vxi (VA.Values)));
-    end abs_v8hi;
- 
-    --------------
-    -- abs_v4si --
-    --------------
- 
-    function abs_v4si (A : LL_VSI) return LL_VSI is
-       VA : constant VSI_View := To_View (A);
-    begin
-       return To_Vector ((Values =>
-                            LL_VSI_Operations.abs_vxi (VA.Values)));
-    end abs_v4si;
- 
-    --------------
-    -- abs_v4sf --
-    --------------
- 
-    function abs_v4sf (A : LL_VF) return LL_VF is
-       D  : Varray_float;
-       VA : constant VF_View := To_View (A);
- 
-    begin
-       for J in Varray_float'Range loop
-          D (J) := abs (VA.Values (J));
-       end loop;
- 
-       return To_Vector ((Values => D));
-    end abs_v4sf;
- 
-    ----------------
-    -- abss_v16qi --
-    ----------------
- 
-    function abss_v16qi (A : LL_VSC) return LL_VSC is
-       VA : constant VSC_View := To_View (A);
-    begin
-       return To_Vector ((Values =>
-                            LL_VSC_Operations.abss_vxi (VA.Values)));
-    end abss_v16qi;
- 
-    ---------------
-    -- abss_v8hi --
-    ---------------
- 
-    function abss_v8hi (A : LL_VSS) return LL_VSS is
-       VA : constant VSS_View := To_View (A);
-    begin
-       return To_Vector ((Values =>
-                            LL_VSS_Operations.abss_vxi (VA.Values)));
-    end abss_v8hi;
- 
-    ---------------
-    -- abss_v4si --
-    ---------------
- 
-    function abss_v4si (A : LL_VSI) return LL_VSI is
-       VA : constant VSI_View := To_View (A);
-    begin
-       return To_Vector ((Values =>
-                            LL_VSI_Operations.abss_vxi (VA.Values)));
-    end abss_v4si;
- 
-    -------------
-    -- vaddubm --
-    -------------
- 
-    function vaddubm (A : LL_VSC; B : LL_VSC) return LL_VSC is
-       UC : constant GNAT.Altivec.Low_Level_Vectors.LL_VUC :=
-              To_LL_VUC (A);
-       VA : constant VUC_View :=
-              To_View (UC);
-       VB : constant VUC_View := To_View (To_LL_VUC (B));
-       D  : Varray_unsigned_char;
- 
-    begin
-       D := LL_VUC_Operations.vadduxm (VA.Values, VB.Values);
-       return To_LL_VSC (To_Vector (VUC_View'(Values => D)));
-    end vaddubm;
- 
-    -------------
-    -- vadduhm --
-    -------------
- 
-    function vadduhm (A : LL_VSS; B : LL_VSS) return LL_VSS is
-       VA : constant VUS_View := To_View (To_LL_VUS (A));
-       VB : constant VUS_View := To_View (To_LL_VUS (B));
-       D  : Varray_unsigned_short;
- 
-    begin
-       D := LL_VUS_Operations.vadduxm (VA.Values, VB.Values);
-       return To_LL_VSS (To_Vector (VUS_View'(Values => D)));
-    end vadduhm;
- 
-    -------------
-    -- vadduwm --
-    -------------
- 
-    function vadduwm (A : LL_VSI; B : LL_VSI) return LL_VSI is
-       VA : constant VUI_View := To_View (To_LL_VUI (A));
-       VB : constant VUI_View := To_View (To_LL_VUI (B));
-       D  : Varray_unsigned_int;
- 
-    begin
-       D := LL_VUI_Operations.vadduxm (VA.Values, VB.Values);
-       return To_LL_VSI (To_Vector (VUI_View'(Values => D)));
-    end vadduwm;
- 
-    ------------
-    -- vaddfp --
-    ------------
- 
-    function vaddfp (A : LL_VF; B : LL_VF) return LL_VF is
-       VA : constant VF_View := To_View (A);
-       VB : constant VF_View := To_View (B);
-       D  : Varray_float;
- 
-    begin
-       for J in Varray_float'Range loop
-          D (J) := NJ_Truncate (NJ_Truncate (VA.Values (J))
-                                + NJ_Truncate (VB.Values (J)));
-       end loop;
- 
-       return To_Vector (VF_View'(Values => D));
-    end vaddfp;
- 
-    -------------
-    -- vaddcuw --
-    -------------
- 
-    function vaddcuw (A : LL_VSI; B : LL_VSI) return LL_VSI is
-       Addition_Result : UI64;
-       D               : VUI_View;
-       VA              : constant VUI_View := To_View (To_LL_VUI (A));
-       VB              : constant VUI_View := To_View (To_LL_VUI (B));
- 
-    begin
-       for J in Varray_unsigned_int'Range loop
-          Addition_Result := UI64 (VA.Values (J)) + UI64 (VB.Values (J));
-          D.Values (J) :=
-            (if Addition_Result > UI64 (unsigned_int'Last) then 1 else 0);
-       end loop;
- 
-       return To_LL_VSI (To_Vector (D));
-    end vaddcuw;
- 
-    -------------
-    -- vaddubs --
-    -------------
- 
-    function vaddubs (A : LL_VSC; B : LL_VSC) return LL_VSC is
-       VA : constant VUC_View := To_View (To_LL_VUC (A));
-       VB : constant VUC_View := To_View (To_LL_VUC (B));
- 
-    begin
-       return To_LL_VSC (To_Vector
-                         (VUC_View'(Values =>
-                                      (LL_VUC_Operations.vadduxs
-                                       (VA.Values,
-                                        VB.Values)))));
-    end vaddubs;
- 
-    -------------
-    -- vaddsbs --
-    -------------
- 
-    function vaddsbs (A : LL_VSC; B : LL_VSC) return LL_VSC is
-       VA : constant VSC_View := To_View (A);
-       VB : constant VSC_View := To_View (B);
-       D  : VSC_View;
- 
-    begin
-       D.Values := LL_VSC_Operations.vaddsxs (VA.Values, VB.Values);
-       return To_Vector (D);
-    end vaddsbs;
- 
-    -------------
-    -- vadduhs --
-    -------------
- 
-    function vadduhs (A : LL_VSS; B : LL_VSS) return LL_VSS is
-       VA : constant VUS_View := To_View (To_LL_VUS (A));
-       VB : constant VUS_View := To_View (To_LL_VUS (B));
-       D  : VUS_View;
- 
-    begin
-       D.Values := LL_VUS_Operations.vadduxs (VA.Values, VB.Values);
-       return To_LL_VSS (To_Vector (D));
-    end vadduhs;
- 
-    -------------
-    -- vaddshs --
-    -------------
- 
-    function vaddshs (A : LL_VSS; B : LL_VSS) return LL_VSS is
-       VA : constant VSS_View := To_View (A);
-       VB : constant VSS_View := To_View (B);
-       D  : VSS_View;
- 
-    begin
-       D.Values := LL_VSS_Operations.vaddsxs (VA.Values, VB.Values);
-       return To_Vector (D);
-    end vaddshs;
- 
-    -------------
-    -- vadduws --
-    -------------
- 
-    function vadduws (A : LL_VSI; B : LL_VSI) return LL_VSI is
-       VA : constant VUI_View := To_View (To_LL_VUI (A));
-       VB : constant VUI_View := To_View (To_LL_VUI (B));
-       D  : VUI_View;
- 
-    begin
-       D.Values := LL_VUI_Operations.vadduxs (VA.Values, VB.Values);
-       return To_LL_VSI (To_Vector (D));
-    end vadduws;
- 
-    -------------
-    -- vaddsws --
-    -------------
- 
-    function vaddsws (A : LL_VSI; B : LL_VSI) return LL_VSI is
-       VA : constant VSI_View := To_View (A);
-       VB : constant VSI_View := To_View (B);
-       D  : VSI_View;
- 
-    begin
-       D.Values := LL_VSI_Operations.vaddsxs (VA.Values, VB.Values);
-       return To_Vector (D);
-    end vaddsws;
- 
-    ----------
-    -- vand --
-    ----------
- 
-    function vand (A : LL_VSI; B : LL_VSI) return LL_VSI is
-       VA : constant VUI_View := To_View (To_LL_VUI (A));
-       VB : constant VUI_View := To_View (To_LL_VUI (B));
-       D  : VUI_View;
- 
-    begin
-       for J in Varray_unsigned_int'Range loop
-          D.Values (J) := VA.Values (J) and VB.Values (J);
-       end loop;
- 
-       return To_LL_VSI (To_Vector (D));
-    end vand;
- 
-    -----------
-    -- vandc --
-    -----------
- 
-    function vandc (A : LL_VSI; B : LL_VSI) return LL_VSI is
-       VA : constant VUI_View := To_View (To_LL_VUI (A));
-       VB : constant VUI_View := To_View (To_LL_VUI (B));
-       D  : VUI_View;
- 
-    begin
-       for J in Varray_unsigned_int'Range loop
-          D.Values (J) := VA.Values (J) and not VB.Values (J);
-       end loop;
- 
-       return To_LL_VSI (To_Vector (D));
-    end vandc;
- 
-    ------------
-    -- vavgub --
-    ------------
- 
-    function vavgub (A : LL_VSC; B : LL_VSC) return LL_VSC is
-       VA : constant VUC_View := To_View (To_LL_VUC (A));
-       VB : constant VUC_View := To_View (To_LL_VUC (B));
-       D  : VUC_View;
- 
-    begin
-       D.Values := LL_VUC_Operations.vavgux (VA.Values, VB.Values);
-       return To_LL_VSC (To_Vector (D));
-    end vavgub;
- 
-    ------------
-    -- vavgsb --
-    ------------
- 
-    function vavgsb (A : LL_VSC; B : LL_VSC) return LL_VSC is
-       VA : constant VSC_View := To_View (A);
-       VB : constant VSC_View := To_View (B);
-       D  : VSC_View;
- 
-    begin
-       D.Values := LL_VSC_Operations.vavgsx (VA.Values, VB.Values);
-       return To_Vector (D);
-    end vavgsb;
- 
-    ------------
-    -- vavguh --
-    ------------
- 
-    function vavguh (A : LL_VSS; B : LL_VSS) return LL_VSS is
-       VA : constant VUS_View := To_View (To_LL_VUS (A));
-       VB : constant VUS_View := To_View (To_LL_VUS (B));
-       D  : VUS_View;
- 
-    begin
-       D.Values := LL_VUS_Operations.vavgux (VA.Values, VB.Values);
-       return To_LL_VSS (To_Vector (D));
-    end vavguh;
- 
-    ------------
-    -- vavgsh --
-    ------------
- 
-    function vavgsh (A : LL_VSS; B : LL_VSS) return LL_VSS is
-       VA : constant VSS_View := To_View (A);
-       VB : constant VSS_View := To_View (B);
-       D  : VSS_View;
- 
-    begin
-       D.Values := LL_VSS_Operations.vavgsx (VA.Values, VB.Values);
-       return To_Vector (D);
-    end vavgsh;
- 
-    ------------
-    -- vavguw --
-    ------------
- 
-    function vavguw (A : LL_VSI; B : LL_VSI) return LL_VSI is
-       VA : constant VUI_View := To_View (To_LL_VUI (A));
-       VB : constant VUI_View := To_View (To_LL_VUI (B));
-       D  : VUI_View;
- 
-    begin
-       D.Values := LL_VUI_Operations.vavgux (VA.Values, VB.Values);
-       return To_LL_VSI (To_Vector (D));
-    end vavguw;
- 
-    ------------
-    -- vavgsw --
-    ------------
- 
-    function vavgsw (A : LL_VSI; B : LL_VSI) return LL_VSI is
-       VA : constant VSI_View := To_View (A);
-       VB : constant VSI_View := To_View (B);
-       D  : VSI_View;
- 
-    begin
-       D.Values := LL_VSI_Operations.vavgsx (VA.Values, VB.Values);
-       return To_Vector (D);
-    end vavgsw;
- 
-    -----------
-    -- vrfip --
-    -----------
- 
-    function vrfip (A : LL_VF) return LL_VF is
-       VA : constant VF_View := To_View (A);
-       D  : VF_View;
- 
-    begin
-       for J in Varray_float'Range loop
- 
-          --  If A (J) is infinite, D (J) should be infinite; With
-          --  IEEE floating points, we can use 'Ceiling for that purpose.
- 
-          D.Values (J) := C_float'Ceiling (NJ_Truncate (VA.Values (J)));
- 
-       end loop;
- 
-       return To_Vector (D);
-    end vrfip;
- 
-    -------------
-    -- vcmpbfp --
-    -------------
- 
-    function vcmpbfp (A : LL_VF; B : LL_VF) return LL_VSI is
-       VA   : constant VF_View := To_View (A);
-       VB   : constant VF_View := To_View (B);
-       D    : VUI_View;
-       K    : Vint_Range;
- 
-    begin
-       for J in Varray_float'Range loop
-          K := Vint_Range (J);
-          D.Values (K) := 0;
- 
-          if NJ_Truncate (VB.Values (J)) < 0.0 then
- 
-             --  [PIM-4.4 vec_cmpb] "If any single-precision floating-point
-             --  word element in B is negative; the corresponding element in A
-             --  is out of bounds.
- 
-             D.Values (K) := Write_Bit (D.Values (K), 0, 1);
-             D.Values (K) := Write_Bit (D.Values (K), 1, 1);
- 
-          else
-             D.Values (K) :=
-               (if NJ_Truncate (VA.Values (J)) <= NJ_Truncate (VB.Values (J))
-                then Write_Bit (D.Values (K), 0, 0)
-                else Write_Bit (D.Values (K), 0, 1));
- 
-             D.Values (K) :=
-               (if NJ_Truncate (VA.Values (J)) >= -NJ_Truncate (VB.Values (J))
-                then Write_Bit (D.Values (K), 1, 0)
-                else Write_Bit (D.Values (K), 1, 1));
-          end if;
-       end loop;
- 
-       return To_LL_VSI (To_Vector (D));
-    end vcmpbfp;
- 
-    --------------
-    -- vcmpequb --
-    --------------
- 
-    function vcmpequb (A : LL_VSC; B : LL_VSC) return LL_VSC is
-       VA : constant VUC_View := To_View (To_LL_VUC (A));
-       VB : constant VUC_View := To_View (To_LL_VUC (B));
-       D  : VUC_View;
- 
-    begin
-       D.Values := LL_VUC_Operations.vcmpequx (VA.Values, VB.Values);
-       return To_LL_VSC (To_Vector (D));
-    end vcmpequb;
- 
-    --------------
-    -- vcmpequh --
-    --------------
- 
-    function vcmpequh (A : LL_VSS; B : LL_VSS) return LL_VSS is
-       VA : constant VUS_View := To_View (To_LL_VUS (A));
-       VB : constant VUS_View := To_View (To_LL_VUS (B));
-       D  : VUS_View;
-    begin
-       D.Values := LL_VUS_Operations.vcmpequx (VA.Values, VB.Values);
-       return To_LL_VSS (To_Vector (D));
-    end vcmpequh;
- 
-    --------------
-    -- vcmpequw --
-    --------------
- 
-    function vcmpequw (A : LL_VSI; B : LL_VSI) return LL_VSI is
-       VA : constant VUI_View := To_View (To_LL_VUI (A));
-       VB : constant VUI_View := To_View (To_LL_VUI (B));
-       D  : VUI_View;
-    begin
-       D.Values := LL_VUI_Operations.vcmpequx (VA.Values, VB.Values);
-       return To_LL_VSI (To_Vector (D));
-    end vcmpequw;
- 
-    --------------
-    -- vcmpeqfp --
-    --------------
- 
-    function vcmpeqfp (A : LL_VF; B : LL_VF) return LL_VSI is
-       VA : constant VF_View := To_View (A);
-       VB : constant VF_View := To_View (B);
-       D  : VUI_View;
- 
-    begin
-       for J in Varray_float'Range loop
-          D.Values (Vint_Range (J)) :=
-             (if VA.Values (J) = VB.Values (J) then unsigned_int'Last else 0);
-       end loop;
- 
-       return To_LL_VSI (To_Vector (D));
-    end vcmpeqfp;
- 
-    --------------
-    -- vcmpgefp --
-    --------------
- 
-    function vcmpgefp (A : LL_VF; B : LL_VF) return LL_VSI is
-       VA : constant VF_View := To_View (A);
-       VB : constant VF_View := To_View (B);
-       D : VSI_View;
- 
-    begin
-       for J in Varray_float'Range loop
-          D.Values (Vint_Range (J)) :=
-            (if VA.Values (J) >= VB.Values (J) then Signed_Bool_True
-                                               else Signed_Bool_False);
-       end loop;
- 
-       return To_Vector (D);
-    end vcmpgefp;
- 
-    --------------
-    -- vcmpgtub --
-    --------------
- 
-    function vcmpgtub (A : LL_VSC; B : LL_VSC) return LL_VSC is
-       VA : constant VUC_View := To_View (To_LL_VUC (A));
-       VB : constant VUC_View := To_View (To_LL_VUC (B));
-       D  : VUC_View;
-    begin
-       D.Values := LL_VUC_Operations.vcmpgtux (VA.Values, VB.Values);
-       return To_LL_VSC (To_Vector (D));
-    end vcmpgtub;
- 
-    --------------
-    -- vcmpgtsb --
-    --------------
- 
-    function vcmpgtsb (A : LL_VSC; B : LL_VSC) return LL_VSC is
-       VA : constant VSC_View := To_View (A);
-       VB : constant VSC_View := To_View (B);
-       D  : VSC_View;
-    begin
-       D.Values := LL_VSC_Operations.vcmpgtsx (VA.Values, VB.Values);
-       return To_Vector (D);
-    end vcmpgtsb;
- 
-    --------------
-    -- vcmpgtuh --
-    --------------
- 
-    function vcmpgtuh (A : LL_VSS; B : LL_VSS) return LL_VSS is
-       VA : constant VUS_View := To_View (To_LL_VUS (A));
-       VB : constant VUS_View := To_View (To_LL_VUS (B));
-       D  : VUS_View;
-    begin
-       D.Values := LL_VUS_Operations.vcmpgtux (VA.Values, VB.Values);
-       return To_LL_VSS (To_Vector (D));
-    end vcmpgtuh;
- 
-    --------------
-    -- vcmpgtsh --
-    --------------
- 
-    function vcmpgtsh (A : LL_VSS; B : LL_VSS) return LL_VSS is
-       VA : constant VSS_View := To_View (A);
-       VB : constant VSS_View := To_View (B);
-       D  : VSS_View;
-    begin
-       D.Values := LL_VSS_Operations.vcmpgtsx (VA.Values, VB.Values);
-       return To_Vector (D);
-    end vcmpgtsh;
- 
-    --------------
-    -- vcmpgtuw --
-    --------------
- 
-    function vcmpgtuw (A : LL_VSI; B : LL_VSI) return LL_VSI is
-       VA : constant VUI_View := To_View (To_LL_VUI (A));
-       VB : constant VUI_View := To_View (To_LL_VUI (B));
-       D  : VUI_View;
-    begin
-       D.Values := LL_VUI_Operations.vcmpgtux (VA.Values, VB.Values);
-       return To_LL_VSI (To_Vector (D));
-    end vcmpgtuw;
- 
-    --------------
-    -- vcmpgtsw --
-    --------------
- 
-    function vcmpgtsw (A : LL_VSI; B : LL_VSI) return LL_VSI is
-       VA : constant VSI_View := To_View (A);
-       VB : constant VSI_View := To_View (B);
-       D  : VSI_View;
-    begin
-       D.Values := LL_VSI_Operations.vcmpgtsx (VA.Values, VB.Values);
-       return To_Vector (D);
-    end vcmpgtsw;
- 
-    --------------
-    -- vcmpgtfp --
-    --------------
- 
-    function vcmpgtfp (A : LL_VF; B : LL_VF) return LL_VSI is
-       VA : constant VF_View := To_View (A);
-       VB : constant VF_View := To_View (B);
-       D  : VSI_View;
- 
-    begin
-       for J in Varray_float'Range loop
-          D.Values (Vint_Range (J)) :=
-            (if NJ_Truncate (VA.Values (J)) > NJ_Truncate (VB.Values (J))
-             then Signed_Bool_True else Signed_Bool_False);
-       end loop;
- 
-       return To_Vector (D);
-    end vcmpgtfp;
- 
-    -----------
-    -- vcfux --
-    -----------
- 
-    function vcfux (A : LL_VUI; B : c_int) return LL_VF is
-       VA : constant VUI_View := To_View (A);
-       D  : VF_View;
-       K  : Vfloat_Range;
- 
-    begin
-       for J in Varray_signed_int'Range loop
-          K := Vfloat_Range (J);
- 
-          --  Note: The conversion to Integer is safe, as Integers are required
-          --  to include the range -2 ** 15 + 1 .. 2 ** 15 + 1 and therefore
-          --  include the range of B (should be 0 .. 255).
- 
-          D.Values (K) :=
-            C_float (VA.Values (J)) / (2.0 ** Integer (B));
-       end loop;
- 
-       return To_Vector (D);
-    end vcfux;
- 
-    -----------
-    -- vcfsx --
-    -----------
- 
-    function vcfsx (A : LL_VSI; B : c_int) return LL_VF is
-       VA : constant VSI_View := To_View (A);
-       D  : VF_View;
-       K  : Vfloat_Range;
- 
-    begin
-       for J in Varray_signed_int'Range loop
-          K := Vfloat_Range (J);
-          D.Values (K) := C_float (VA.Values (J))
-            / (2.0 ** Integer (B));
-       end loop;
- 
-       return To_Vector (D);
-    end vcfsx;
- 
-    ------------
-    -- vctsxs --
-    ------------
- 
-    function vctsxs (A : LL_VF; B : c_int) return LL_VSI is
-       VA : constant VF_View := To_View (A);
-       D  : VSI_View;
-       K  : Vfloat_Range;
- 
-    begin
-       for J in Varray_signed_int'Range loop
-          K := Vfloat_Range (J);
-          D.Values (J) :=
-            LL_VSI_Operations.Saturate
-            (F64 (NJ_Truncate (VA.Values (K)))
-             * F64 (2.0 ** Integer (B)));
-       end loop;
- 
-       return To_Vector (D);
-    end vctsxs;
- 
-    ------------
-    -- vctuxs --
-    ------------
- 
-    function vctuxs (A : LL_VF; B : c_int) return LL_VUI is
-       VA : constant VF_View := To_View (A);
-       D  : VUI_View;
-       K  : Vfloat_Range;
- 
-    begin
-       for J in Varray_unsigned_int'Range loop
-          K := Vfloat_Range (J);
-          D.Values (J) :=
-            LL_VUI_Operations.Saturate
-            (F64 (NJ_Truncate (VA.Values (K)))
-             * F64 (2.0 ** Integer (B)));
-       end loop;
- 
-       return To_Vector (D);
-    end vctuxs;
- 
-    ---------
-    -- dss --
-    ---------
- 
-    --  No-ops, as allowed by [PEM-5.2.1.1 Data Stream Touch (dst)]:
- 
-    procedure dss (A : c_int) is
-       pragma Unreferenced (A);
-    begin
-       null;
-    end dss;
- 
-    ------------
-    -- dssall --
-    ------------
- 
-    --  No-ops, as allowed by [PEM-5.2.1.1 Data Stream Touch (dst)]:
- 
-    procedure dssall is
-    begin
-       null;
-    end dssall;
- 
-    ---------
-    -- dst --
-    ---------
- 
-    --  No-ops, as allowed by [PEM-5.2.1.1 Data Stream Touch (dst)]:
- 
-    procedure dst    (A : c_ptr; B : c_int; C : c_int) is
-       pragma Unreferenced (A);
-       pragma Unreferenced (B);
-       pragma Unreferenced (C);
-    begin
-       null;
-    end dst;
- 
-    -----------
-    -- dstst --
-    -----------
- 
-    --  No-ops, as allowed by [PEM-5.2.1.1 Data Stream Touch (dst)]:
- 
-    procedure dstst  (A : c_ptr; B : c_int; C : c_int) is
-       pragma Unreferenced (A);
-       pragma Unreferenced (B);
-       pragma Unreferenced (C);
-    begin
-       null;
-    end dstst;
- 
-    ------------
-    -- dststt --
-    ------------
- 
-    --  No-ops, as allowed by [PEM-5.2.1.1 Data Stream Touch (dst)]:
- 
-    procedure dststt (A : c_ptr; B : c_int; C : c_int) is
-       pragma Unreferenced (A);
-       pragma Unreferenced (B);
-       pragma Unreferenced (C);
-    begin
-       null;
-    end dststt;
- 
-    ----------
-    -- dstt --
-    ----------
- 
-    --  No-ops, as allowed by [PEM-5.2.1.1 Data Stream Touch (dst)]:
- 
-    procedure dstt   (A : c_ptr; B : c_int; C : c_int) is
-       pragma Unreferenced (A);
-       pragma Unreferenced (B);
-       pragma Unreferenced (C);
-    begin
-       null;
-    end dstt;
- 
-    --------------
-    -- vexptefp --
-    --------------
- 
-    function vexptefp (A : LL_VF) return LL_VF is
-       use C_float_Operations;
- 
-       VA : constant VF_View := To_View (A);
-       D  : VF_View;
- 
-    begin
-       for J in Varray_float'Range loop
- 
-          --  ??? Check the precision of the operation.
-          --  As described in [PEM-6 vexptefp]:
-          --  If theoretical_result is equal to 2 at the power of A (J) with
-          --  infinite precision, we should have:
-          --  abs ((D (J) - theoretical_result) / theoretical_result) <= 1/16
- 
-          D.Values (J) := 2.0 ** NJ_Truncate (VA.Values (J));
-       end loop;
- 
-       return To_Vector (D);
-    end vexptefp;
- 
-    -----------
-    -- vrfim --
-    -----------
- 
-    function vrfim (A : LL_VF) return LL_VF is
-       VA : constant VF_View := To_View (A);
-       D  : VF_View;
- 
-    begin
-       for J in Varray_float'Range loop
- 
-          --  If A (J) is infinite, D (J) should be infinite; With
-          --  IEEE floating point, we can use 'Ceiling for that purpose.
- 
-          D.Values (J) := C_float'Ceiling (NJ_Truncate (VA.Values (J)));
- 
-          --  Vrfim rounds toward -Infinity, whereas 'Ceiling rounds toward
-          --  +Infinity:
- 
-          if D.Values (J) /= VA.Values (J) then
-             D.Values (J) := D.Values (J) - 1.0;
-          end if;
-       end loop;
- 
-       return To_Vector (D);
-    end vrfim;
- 
-    ---------
-    -- lvx --
-    ---------
- 
-    function lvx (A : c_long; B : c_ptr) return LL_VSI is
- 
-       --  Simulate the altivec unit behavior regarding what Effective Address
-       --  is accessed, stripping off the input address least significant bits
-       --  wrt to vector alignment.
- 
-       --  On targets where VECTOR_ALIGNMENT is less than the vector size (16),
-       --  an address within a vector is not necessarily rounded back at the
-       --  vector start address. Besides, rounding on 16 makes no sense on such
-       --  targets because the address of a properly aligned vector (that is,
-       --  a proper multiple of VECTOR_ALIGNMENT) could be affected, which we
-       --  want never to happen.
- 
-       EA : constant System.Address :=
-              To_Address
-                (Bound_Align
-                   (Integer_Address (A) + To_Integer (B), VECTOR_ALIGNMENT));
- 
-       D : LL_VSI;
-       for D'Address use EA;
- 
-    begin
-       return D;
-    end lvx;
- 
-    -----------
-    -- lvebx --
-    -----------
- 
-    function lvebx (A : c_long; B : c_ptr) return LL_VSC is
-       D : VSC_View;
-    begin
-       D.Values := LL_VSC_Operations.lvexx (A, B);
-       return To_Vector (D);
-    end lvebx;
- 
-    -----------
-    -- lvehx --
-    -----------
- 
-    function lvehx (A : c_long; B : c_ptr) return LL_VSS is
-       D : VSS_View;
-    begin
-       D.Values := LL_VSS_Operations.lvexx (A, B);
-       return To_Vector (D);
-    end lvehx;
- 
-    -----------
-    -- lvewx --
-    -----------
- 
-    function lvewx (A : c_long; B : c_ptr) return LL_VSI is
-       D : VSI_View;
-    begin
-       D.Values := LL_VSI_Operations.lvexx (A, B);
-       return To_Vector (D);
-    end lvewx;
- 
-    ----------
-    -- lvxl --
-    ----------
- 
-    function lvxl  (A : c_long; B : c_ptr) return LL_VSI renames
-      lvx;
- 
-    -------------
-    -- vlogefp --
-    -------------
- 
-    function vlogefp (A : LL_VF) return LL_VF is
-       VA : constant VF_View := To_View (A);
-       D  : VF_View;
- 
-    begin
-       for J in Varray_float'Range loop
- 
-          --  ??? Check the precision of the operation.
-          --  As described in [PEM-6 vlogefp]:
-          --  If theorical_result is equal to the log2 of A (J) with
-          --  infinite precision, we should have:
-          --  abs (D (J) - theorical_result) <= 1/32,
-          --  unless abs(D(J) - 1) <= 1/8.
- 
-          D.Values (J) :=
-            C_float_Operations.Log (NJ_Truncate (VA.Values (J)), 2.0);
-       end loop;
- 
-       return To_Vector (D);
-    end vlogefp;
- 
-    ----------
-    -- lvsl --
-    ----------
- 
-    function lvsl (A : c_long; B : c_ptr) return LL_VSC is
-       type bit4_type is mod 16#F# + 1;
-       for bit4_type'Alignment use 1;
-       EA : Integer_Address;
-       D  : VUC_View;
-       SH : bit4_type;
- 
-    begin
-       EA := Integer_Address (A) + To_Integer (B);
-       SH := bit4_type (EA mod 2 ** 4);
- 
-       for J in D.Values'Range loop
-          D.Values (J) := unsigned_char (SH) + unsigned_char (J)
-            - unsigned_char (D.Values'First);
-       end loop;
- 
-       return To_LL_VSC (To_Vector (D));
-    end lvsl;
- 
-    ----------
-    -- lvsr --
-    ----------
- 
-    function lvsr (A : c_long; B : c_ptr) return LL_VSC is
-       type bit4_type is mod 16#F# + 1;
-       for bit4_type'Alignment use 1;
-       EA : Integer_Address;
-       D  : VUC_View;
-       SH : bit4_type;
- 
-    begin
-       EA := Integer_Address (A) + To_Integer (B);
-       SH := bit4_type (EA mod 2 ** 4);
- 
-       for J in D.Values'Range loop
-          D.Values (J) := (16#F# - unsigned_char (SH)) + unsigned_char (J);
-       end loop;
- 
-       return To_LL_VSC (To_Vector (D));
-    end lvsr;
- 
-    -------------
-    -- vmaddfp --
-    -------------
- 
-    function vmaddfp (A : LL_VF; B : LL_VF; C : LL_VF) return LL_VF is
-       VA : constant VF_View := To_View (A);
-       VB : constant VF_View := To_View (B);
-       VC : constant VF_View := To_View (C);
-       D  : VF_View;
- 
-    begin
-       for J in Varray_float'Range loop
-          D.Values (J) :=
-            Rnd_To_FP_Nearest (F64 (VA.Values (J))
-                               * F64 (VB.Values (J))
-                               + F64 (VC.Values (J)));
-       end loop;
- 
-       return To_Vector (D);
-    end vmaddfp;
- 
-    ---------------
-    -- vmhaddshs --
-    ---------------
- 
-    function vmhaddshs  (A : LL_VSS; B : LL_VSS; C : LL_VSS) return LL_VSS is
-       VA : constant VSS_View := To_View (A);
-       VB : constant VSS_View := To_View (B);
-       VC : constant VSS_View := To_View (C);
-       D  : VSS_View;
- 
-    begin
-       for J in Varray_signed_short'Range loop
-          D.Values (J) := LL_VSS_Operations.Saturate
-            ((SI64 (VA.Values (J)) * SI64 (VB.Values (J)))
-             / SI64 (2 ** 15) + SI64 (VC.Values (J)));
-       end loop;
- 
-       return To_Vector (D);
-    end vmhaddshs;
- 
-    ------------
-    -- vmaxub --
-    ------------
- 
-    function vmaxub (A : LL_VSC; B : LL_VSC) return LL_VSC is
-       VA : constant VUC_View := To_View (To_LL_VUC (A));
-       VB : constant VUC_View := To_View (To_LL_VUC (B));
-       D  : VUC_View;
-    begin
-       D.Values := LL_VUC_Operations.vmaxux (VA.Values, VB.Values);
-       return To_LL_VSC (To_Vector (D));
-    end vmaxub;
- 
-    ------------
-    -- vmaxsb --
-    ------------
- 
-    function vmaxsb (A : LL_VSC; B : LL_VSC) return LL_VSC is
-       VA : constant VSC_View := To_View (A);
-       VB : constant VSC_View := To_View (B);
-       D  : VSC_View;
-    begin
-       D.Values := LL_VSC_Operations.vmaxsx (VA.Values, VB.Values);
-       return To_Vector (D);
-    end vmaxsb;
- 
-    ------------
-    -- vmaxuh --
-    ------------
- 
-    function vmaxuh (A : LL_VSS; B : LL_VSS) return LL_VSS is
-       VA : constant VUS_View := To_View (To_LL_VUS (A));
-       VB : constant VUS_View := To_View (To_LL_VUS (B));
-       D  : VUS_View;
-    begin
-       D.Values := LL_VUS_Operations.vmaxux (VA.Values, VB.Values);
-       return To_LL_VSS (To_Vector (D));
-    end vmaxuh;
- 
-    ------------
-    -- vmaxsh --
-    ------------
- 
-    function vmaxsh (A : LL_VSS; B : LL_VSS) return LL_VSS is
-       VA : constant VSS_View := To_View (A);
-       VB : constant VSS_View := To_View (B);
-       D  : VSS_View;
-    begin
-       D.Values := LL_VSS_Operations.vmaxsx (VA.Values, VB.Values);
-       return To_Vector (D);
-    end vmaxsh;
- 
-    ------------
-    -- vmaxuw --
-    ------------
- 
-    function vmaxuw (A : LL_VSI; B : LL_VSI) return LL_VSI is
-       VA : constant VUI_View := To_View (To_LL_VUI (A));
-       VB : constant VUI_View := To_View (To_LL_VUI (B));
-       D  : VUI_View;
-    begin
-       D.Values := LL_VUI_Operations.vmaxux (VA.Values, VB.Values);
-       return To_LL_VSI (To_Vector (D));
-    end vmaxuw;
- 
-    ------------
-    -- vmaxsw --
-    ------------
- 
-    function vmaxsw (A : LL_VSI; B : LL_VSI) return LL_VSI is
-       VA : constant VSI_View := To_View (A);
-       VB : constant VSI_View := To_View (B);
-       D  : VSI_View;
-    begin
-       D.Values := LL_VSI_Operations.vmaxsx (VA.Values, VB.Values);
-       return To_Vector (D);
-    end vmaxsw;
- 
-    --------------
-    -- vmaxsxfp --
-    --------------
- 
-    function vmaxfp (A : LL_VF; B : LL_VF) return LL_VF is
-       VA : constant VF_View := To_View (A);
-       VB : constant VF_View := To_View (B);
-       D  : VF_View;
- 
-    begin
-       for J in Varray_float'Range loop
-          D.Values (J) := (if VA.Values (J) > VB.Values (J) then VA.Values (J)
-                                                            else VB.Values (J));
-       end loop;
- 
-       return To_Vector (D);
-    end vmaxfp;
- 
-    ------------
-    -- vmrghb --
-    ------------
- 
-    function vmrghb (A : LL_VSC; B : LL_VSC) return LL_VSC is
-       VA : constant VSC_View := To_View (A);
-       VB : constant VSC_View := To_View (B);
-       D  : VSC_View;
-    begin
-       D.Values := LL_VSC_Operations.vmrghx (VA.Values, VB.Values);
-       return To_Vector (D);
-    end vmrghb;
- 
-    ------------
-    -- vmrghh --
-    ------------
- 
-    function vmrghh (A : LL_VSS; B : LL_VSS) return LL_VSS is
-       VA : constant VSS_View := To_View (A);
-       VB : constant VSS_View := To_View (B);
-       D  : VSS_View;
-    begin
-       D.Values := LL_VSS_Operations.vmrghx (VA.Values, VB.Values);
-       return To_Vector (D);
-    end vmrghh;
- 
-    ------------
-    -- vmrghw --
-    ------------
- 
-    function vmrghw (A : LL_VSI; B : LL_VSI) return LL_VSI is
-       VA : constant VSI_View := To_View (A);
-       VB : constant VSI_View := To_View (B);
-       D  : VSI_View;
-    begin
-       D.Values := LL_VSI_Operations.vmrghx (VA.Values, VB.Values);
-       return To_Vector (D);
-    end vmrghw;
- 
-    ------------
-    -- vmrglb --
-    ------------
- 
-    function vmrglb (A : LL_VSC; B : LL_VSC) return LL_VSC is
-       VA : constant VSC_View := To_View (A);
-       VB : constant VSC_View := To_View (B);
-       D  : VSC_View;
-    begin
-       D.Values := LL_VSC_Operations.vmrglx (VA.Values, VB.Values);
-       return To_Vector (D);
-    end vmrglb;
- 
-    ------------
-    -- vmrglh --
-    ------------
- 
-    function vmrglh (A : LL_VSS; B : LL_VSS) return LL_VSS is
-       VA : constant VSS_View := To_View (A);
-       VB : constant VSS_View := To_View (B);
-       D  : VSS_View;
-    begin
-       D.Values := LL_VSS_Operations.vmrglx (VA.Values, VB.Values);
-       return To_Vector (D);
-    end vmrglh;
- 
-    ------------
-    -- vmrglw --
-    ------------
- 
-    function vmrglw (A : LL_VSI; B : LL_VSI) return LL_VSI is
-       VA : constant VSI_View := To_View (A);
-       VB : constant VSI_View := To_View (B);
-       D  : VSI_View;
-    begin
-       D.Values := LL_VSI_Operations.vmrglx (VA.Values, VB.Values);
-       return To_Vector (D);
-    end vmrglw;
- 
-    ------------
-    -- mfvscr --
-    ------------
- 
-    function  mfvscr return LL_VSS is
-       D : VUS_View;
-    begin
-       for J in Varray_unsigned_short'Range loop
-          D.Values (J) := 0;
-       end loop;
- 
-       D.Values (Varray_unsigned_short'Last) :=
-         unsigned_short (VSCR mod 2 ** unsigned_short'Size);
-       D.Values (Varray_unsigned_short'Last - 1) :=
-         unsigned_short (VSCR / 2 ** unsigned_short'Size);
-       return To_LL_VSS (To_Vector (D));
-    end mfvscr;
- 
-    ------------
-    -- vminfp --
-    ------------
- 
-    function vminfp (A : LL_VF;  B : LL_VF) return LL_VF is
-       VA : constant VF_View := To_View (A);
-       VB : constant VF_View := To_View (B);
-       D  : VF_View;
- 
-    begin
-       for J in Varray_float'Range loop
-          D.Values (J) := (if VA.Values (J) < VB.Values (J) then VA.Values (J)
-                                                            else VB.Values (J));
-       end loop;
- 
-       return To_Vector (D);
-    end vminfp;
- 
-    ------------
-    -- vminsb --
-    ------------
- 
-    function vminsb (A : LL_VSC; B : LL_VSC) return LL_VSC is
-       VA : constant VSC_View := To_View (A);
-       VB : constant VSC_View := To_View (B);
-       D  : VSC_View;
-    begin
-       D.Values := LL_VSC_Operations.vminsx (VA.Values, VB.Values);
-       return To_Vector (D);
-    end vminsb;
- 
-    ------------
-    -- vminub --
-    ------------
- 
-    function vminub (A : LL_VSC; B : LL_VSC) return LL_VSC is
-       VA : constant VUC_View := To_View (To_LL_VUC (A));
-       VB : constant VUC_View := To_View (To_LL_VUC (B));
-       D  : VUC_View;
-    begin
-       D.Values := LL_VUC_Operations.vminux (VA.Values, VB.Values);
-       return To_LL_VSC (To_Vector (D));
-    end vminub;
- 
-    ------------
-    -- vminsh --
-    ------------
- 
-    function vminsh (A : LL_VSS; B : LL_VSS) return LL_VSS is
-       VA : constant VSS_View := To_View (A);
-       VB : constant VSS_View := To_View (B);
-       D  : VSS_View;
-    begin
-       D.Values := LL_VSS_Operations.vminsx (VA.Values, VB.Values);
-       return To_Vector (D);
-    end vminsh;
- 
-    ------------
-    -- vminuh --
-    ------------
- 
-    function vminuh (A : LL_VSS; B : LL_VSS) return LL_VSS is
-       VA : constant VUS_View := To_View (To_LL_VUS (A));
-       VB : constant VUS_View := To_View (To_LL_VUS (B));
-       D  : VUS_View;
-    begin
-       D.Values := LL_VUS_Operations.vminux (VA.Values, VB.Values);
-       return To_LL_VSS (To_Vector (D));
-    end vminuh;
- 
-    ------------
-    -- vminsw --
-    ------------
- 
-    function vminsw (A : LL_VSI; B : LL_VSI) return LL_VSI is
-       VA : constant VSI_View := To_View (A);
-       VB : constant VSI_View := To_View (B);
-       D  : VSI_View;
-    begin
-       D.Values := LL_VSI_Operations.vminsx (VA.Values, VB.Values);
-       return To_Vector (D);
-    end vminsw;
- 
-    ------------
-    -- vminuw --
-    ------------
- 
-    function vminuw (A : LL_VSI; B : LL_VSI) return LL_VSI is
-       VA : constant VUI_View := To_View (To_LL_VUI (A));
-       VB : constant VUI_View := To_View (To_LL_VUI (B));
-       D  : VUI_View;
-    begin
-       D.Values := LL_VUI_Operations.vminux (VA.Values,
-                                             VB.Values);
-       return To_LL_VSI (To_Vector (D));
-    end vminuw;
- 
-    ---------------
-    -- vmladduhm --
-    ---------------
- 
-    function vmladduhm (A : LL_VSS; B : LL_VSS; C : LL_VSS) return LL_VSS is
-       VA : constant VUS_View := To_View (To_LL_VUS (A));
-       VB : constant VUS_View := To_View (To_LL_VUS (B));
-       VC : constant VUS_View := To_View (To_LL_VUS (C));
-       D  : VUS_View;
- 
-    begin
-       for J in Varray_unsigned_short'Range loop
-          D.Values (J) := VA.Values (J) * VB.Values (J)
-            + VC.Values (J);
-       end loop;
- 
-       return To_LL_VSS (To_Vector (D));
-    end vmladduhm;
- 
-    ----------------
-    -- vmhraddshs --
-    ----------------
- 
-    function vmhraddshs (A : LL_VSS; B : LL_VSS; C : LL_VSS) return LL_VSS is
-       VA : constant VSS_View := To_View (A);
-       VB : constant VSS_View := To_View (B);
-       VC : constant VSS_View := To_View (C);
-       D  : VSS_View;
- 
-    begin
-       for J in Varray_signed_short'Range loop
-          D.Values (J) :=
-            LL_VSS_Operations.Saturate (((SI64 (VA.Values (J))
-                                          * SI64 (VB.Values (J))
-                                          + 2 ** 14)
-                                         / 2 ** 15
-                                         + SI64 (VC.Values (J))));
-       end loop;
- 
-       return To_Vector (D);
-    end vmhraddshs;
- 
-    --------------
-    -- vmsumubm --
-    --------------
- 
-    function vmsumubm (A : LL_VSC; B : LL_VSC; C : LL_VSI) return LL_VSI is
-       Offset : Vchar_Range;
-       VA     : constant VUC_View := To_View (To_LL_VUC (A));
-       VB     : constant VUC_View := To_View (To_LL_VUC (B));
-       VC     : constant VUI_View := To_View (To_LL_VUI (C));
-       D      : VUI_View;
- 
-    begin
-       for J in 0 .. 3 loop
-          Offset := Vchar_Range (4 * J + Integer (Vchar_Range'First));
-          D.Values (Vint_Range
-                    (J + Integer (Vint_Range'First))) :=
-            (unsigned_int (VA.Values (Offset))
-             * unsigned_int (VB.Values (Offset)))
-            + (unsigned_int (VA.Values (Offset + 1))
-               * unsigned_int (VB.Values (1 + Offset)))
-            + (unsigned_int (VA.Values (2 + Offset))
-               * unsigned_int (VB.Values (2 + Offset)))
-            + (unsigned_int (VA.Values (3 + Offset))
-               * unsigned_int (VB.Values (3 + Offset)))
-            + VC.Values (Vint_Range
-                         (J + Integer (Varray_unsigned_int'First)));
-       end loop;
- 
-       return To_LL_VSI (To_Vector (D));
-    end vmsumubm;
- 
-    --------------
-    -- vmsumumbm --
-    --------------
- 
-    function vmsummbm (A : LL_VSC; B : LL_VSC; C : LL_VSI) return LL_VSI is
-       Offset : Vchar_Range;
-       VA     : constant VSC_View := To_View (A);
-       VB     : constant VUC_View := To_View (To_LL_VUC (B));
-       VC     : constant VSI_View := To_View (C);
-       D      : VSI_View;
- 
-    begin
-       for J in 0 .. 3 loop
-          Offset := Vchar_Range (4 * J + Integer (Vchar_Range'First));
-          D.Values (Vint_Range
-                    (J + Integer (Varray_unsigned_int'First))) := 0
-            + LL_VSI_Operations.Modular_Result (SI64 (VA.Values (Offset))
-                                                * SI64 (VB.Values (Offset)))
-            + LL_VSI_Operations.Modular_Result (SI64 (VA.Values (Offset + 1))
-                                                * SI64 (VB.Values
-                                                        (1 + Offset)))
-            + LL_VSI_Operations.Modular_Result (SI64 (VA.Values (2 + Offset))
-                                                * SI64 (VB.Values
-                                                        (2 + Offset)))
-            + LL_VSI_Operations.Modular_Result (SI64 (VA.Values (3 + Offset))
-                                                * SI64 (VB.Values
-                                                        (3 + Offset)))
-            + VC.Values (Vint_Range
-                         (J + Integer (Varray_unsigned_int'First)));
-       end loop;
- 
-       return To_Vector (D);
-    end vmsummbm;
- 
-    --------------
-    -- vmsumuhm --
-    --------------
- 
-    function vmsumuhm (A : LL_VSS; B : LL_VSS; C : LL_VSI) return LL_VSI is
-       Offset : Vshort_Range;
-       VA     : constant VUS_View := To_View (To_LL_VUS (A));
-       VB     : constant VUS_View := To_View (To_LL_VUS (B));
-       VC     : constant VUI_View := To_View (To_LL_VUI (C));
-       D      : VUI_View;
- 
-    begin
-       for J in 0 .. 3 loop
-          Offset :=
-            Vshort_Range (2 * J + Integer (Vshort_Range'First));
-          D.Values (Vint_Range
-                    (J + Integer (Varray_unsigned_int'First))) :=
-            (unsigned_int (VA.Values (Offset))
-             * unsigned_int (VB.Values (Offset)))
-            + (unsigned_int (VA.Values (Offset + 1))
-               * unsigned_int (VB.Values (1 + Offset)))
-            + VC.Values (Vint_Range
-                         (J + Integer (Vint_Range'First)));
-       end loop;
- 
-       return To_LL_VSI (To_Vector (D));
-    end vmsumuhm;
- 
-    --------------
-    -- vmsumshm --
-    --------------
- 
-    function vmsumshm (A : LL_VSS; B : LL_VSS; C : LL_VSI) return LL_VSI is
-       VA     : constant VSS_View := To_View (A);
-       VB     : constant VSS_View := To_View (B);
-       VC     : constant VSI_View := To_View (C);
-       Offset : Vshort_Range;
-       D      : VSI_View;
- 
-    begin
-       for J in 0 .. 3 loop
-          Offset :=
-            Vshort_Range (2 * J + Integer (Varray_signed_char'First));
-          D.Values (Vint_Range
-                    (J + Integer (Varray_unsigned_int'First))) := 0
-            + LL_VSI_Operations.Modular_Result (SI64 (VA.Values (Offset))
-                                                * SI64 (VB.Values (Offset)))
-            + LL_VSI_Operations.Modular_Result (SI64 (VA.Values (Offset + 1))
-                                                * SI64 (VB.Values
-                                                        (1 + Offset)))
-            + VC.Values (Vint_Range
-                         (J + Integer (Varray_unsigned_int'First)));
-       end loop;
- 
-       return To_Vector (D);
-    end vmsumshm;
- 
-    --------------
-    -- vmsumuhs --
-    --------------
- 
-    function vmsumuhs (A : LL_VSS; B : LL_VSS; C : LL_VSI) return LL_VSI is
-       Offset : Vshort_Range;
-       VA     : constant VUS_View := To_View (To_LL_VUS (A));
-       VB     : constant VUS_View := To_View (To_LL_VUS (B));
-       VC     : constant VUI_View := To_View (To_LL_VUI (C));
-       D      : VUI_View;
- 
-    begin
-       for J in 0 .. 3 loop
-          Offset :=
-            Vshort_Range (2 * J + Integer (Varray_signed_short'First));
-          D.Values (Vint_Range
-                    (J + Integer (Varray_unsigned_int'First))) :=
-            LL_VUI_Operations.Saturate
-            (UI64 (VA.Values (Offset))
-             * UI64 (VB.Values (Offset))
-             + UI64 (VA.Values (Offset + 1))
-             * UI64 (VB.Values (1 + Offset))
-             + UI64 (VC.Values
-                     (Vint_Range
-                      (J + Integer (Varray_unsigned_int'First)))));
-       end loop;
- 
-       return To_LL_VSI (To_Vector (D));
-    end vmsumuhs;
- 
-    --------------
-    -- vmsumshs --
-    --------------
- 
-    function vmsumshs (A : LL_VSS; B : LL_VSS; C : LL_VSI) return LL_VSI is
-       VA     : constant VSS_View := To_View (A);
-       VB     : constant VSS_View := To_View (B);
-       VC     : constant VSI_View := To_View (C);
-       Offset : Vshort_Range;
-       D      : VSI_View;
- 
-    begin
-       for J in 0 .. 3 loop
-          Offset :=
-            Vshort_Range (2 * J + Integer (Varray_signed_short'First));
-          D.Values (Vint_Range
-                    (J + Integer (Varray_signed_int'First))) :=
-            LL_VSI_Operations.Saturate
-            (SI64 (VA.Values (Offset))
-             * SI64 (VB.Values (Offset))
-             + SI64 (VA.Values (Offset + 1))
-             * SI64 (VB.Values (1 + Offset))
-             + SI64 (VC.Values
-                     (Vint_Range
-                      (J + Integer (Varray_signed_int'First)))));
-       end loop;
- 
-       return To_Vector (D);
-    end vmsumshs;
- 
-    ------------
-    -- mtvscr --
-    ------------
- 
-    procedure mtvscr (A : LL_VSI) is
-       VA : constant VUI_View := To_View (To_LL_VUI (A));
-    begin
-       VSCR := VA.Values (Varray_unsigned_int'Last);
-    end mtvscr;
- 
-    -------------
-    -- vmuleub --
-    -------------
- 
-    function vmuleub (A : LL_VSC; B : LL_VSC) return LL_VSS is
-       VA : constant VUC_View := To_View (To_LL_VUC (A));
-       VB : constant VUC_View := To_View (To_LL_VUC (B));
-       D  : VUS_View;
-    begin
-       D.Values := LL_VUC_LL_VUS_Operations.vmulxux (True,
-                                                     VA.Values,
-                                                     VB.Values);
-       return To_LL_VSS (To_Vector (D));
-    end vmuleub;
- 
-    -------------
-    -- vmuleuh --
-    -------------
- 
-    function vmuleuh (A : LL_VSS; B : LL_VSS) return LL_VSI is
-       VA : constant VUS_View := To_View (To_LL_VUS (A));
-       VB : constant VUS_View := To_View (To_LL_VUS (B));
-       D  : VUI_View;
-    begin
-       D.Values := LL_VUS_LL_VUI_Operations.vmulxux (True,
-                                                     VA.Values,
-                                                     VB.Values);
-       return To_LL_VSI (To_Vector (D));
-    end vmuleuh;
- 
-    -------------
-    -- vmulesb --
-    -------------
- 
-    function vmulesb (A : LL_VSC; B : LL_VSC) return LL_VSS is
-       VA : constant VSC_View := To_View (A);
-       VB : constant VSC_View := To_View (B);
-       D  : VSS_View;
-    begin
-       D.Values := LL_VSC_LL_VSS_Operations.vmulxsx (True,
-                                                     VA.Values,
-                                                     VB.Values);
-       return To_Vector (D);
-    end vmulesb;
- 
-    -------------
-    -- vmulesh --
-    -------------
- 
-    function vmulesh (A : LL_VSS; B : LL_VSS) return LL_VSI is
-       VA : constant VSS_View := To_View (A);
-       VB : constant VSS_View := To_View (B);
-       D  : VSI_View;
-    begin
-       D.Values := LL_VSS_LL_VSI_Operations.vmulxsx (True,
-                                                     VA.Values,
-                                                     VB.Values);
-       return To_Vector (D);
-    end vmulesh;
- 
-    -------------
-    -- vmuloub --
-    -------------
- 
-    function vmuloub (A : LL_VSC; B : LL_VSC) return LL_VSS is
-       VA : constant VUC_View := To_View (To_LL_VUC (A));
-       VB : constant VUC_View := To_View (To_LL_VUC (B));
-       D  : VUS_View;
-    begin
-       D.Values := LL_VUC_LL_VUS_Operations.vmulxux (False,
-                                                     VA.Values,
-                                                     VB.Values);
-       return To_LL_VSS (To_Vector (D));
-    end vmuloub;
- 
-    -------------
-    -- vmulouh --
-    -------------
- 
-    function vmulouh (A : LL_VSS; B : LL_VSS) return LL_VSI is
-       VA : constant VUS_View := To_View (To_LL_VUS (A));
-       VB : constant VUS_View := To_View (To_LL_VUS (B));
-       D  : VUI_View;
-    begin
-       D.Values :=
-         LL_VUS_LL_VUI_Operations.vmulxux (False, VA.Values, VB.Values);
-       return To_LL_VSI (To_Vector (D));
-    end vmulouh;
- 
-    -------------
-    -- vmulosb --
-    -------------
- 
-    function vmulosb (A : LL_VSC; B : LL_VSC) return LL_VSS is
-       VA : constant VSC_View := To_View (A);
-       VB : constant VSC_View := To_View (B);
-       D  : VSS_View;
-    begin
-       D.Values := LL_VSC_LL_VSS_Operations.vmulxsx (False,
-                                                     VA.Values,
-                                                     VB.Values);
-       return To_Vector (D);
-    end vmulosb;
- 
-    -------------
-    -- vmulosh --
-    -------------
- 
-    function vmulosh (A : LL_VSS; B : LL_VSS) return LL_VSI is
-       VA : constant VSS_View := To_View (A);
-       VB : constant VSS_View := To_View (B);
-       D  : VSI_View;
-    begin
-       D.Values := LL_VSS_LL_VSI_Operations.vmulxsx (False,
-                                                     VA.Values,
-                                                     VB.Values);
-       return To_Vector (D);
-    end vmulosh;
- 
-    --------------
-    -- vnmsubfp --
-    --------------
- 
-    function vnmsubfp (A : LL_VF; B : LL_VF; C : LL_VF) return LL_VF is
-       VA : constant VF_View := To_View (A);
-       VB : constant VF_View := To_View (B);
-       VC : constant VF_View := To_View (C);
-       D  : VF_View;
- 
-    begin
-       for J in Vfloat_Range'Range loop
-          D.Values (J) :=
-            -Rnd_To_FP_Nearest (F64 (VA.Values (J))
-                                * F64 (VB.Values (J))
-                                - F64 (VC.Values (J)));
-       end loop;
- 
-       return To_Vector (D);
-    end vnmsubfp;
- 
-    ----------
-    -- vnor --
-    ----------
- 
-    function vnor (A : LL_VSI; B : LL_VSI) return LL_VSI is
-       VA : constant VUI_View := To_View (To_LL_VUI (A));
-       VB : constant VUI_View := To_View (To_LL_VUI (B));
-       D  : VUI_View;
- 
-    begin
-       for J in Vint_Range'Range loop
-          D.Values (J) := not (VA.Values (J) or VB.Values (J));
-       end loop;
- 
-       return To_LL_VSI (To_Vector (D));
-    end vnor;
- 
-    ----------
-    -- vor --
-    ----------
- 
-    function vor (A : LL_VSI; B : LL_VSI) return LL_VSI is
-       VA : constant VUI_View := To_View (To_LL_VUI (A));
-       VB : constant VUI_View := To_View (To_LL_VUI (B));
-       D  : VUI_View;
- 
-    begin
-       for J in Vint_Range'Range loop
-          D.Values (J) := VA.Values (J) or VB.Values (J);
-       end loop;
- 
-       return To_LL_VSI (To_Vector (D));
-    end vor;
- 
-    -------------
-    -- vpkuhum --
-    -------------
- 
-    function vpkuhum (A : LL_VSS; B : LL_VSS) return LL_VSC is
-       VA : constant VUS_View := To_View (To_LL_VUS (A));
-       VB : constant VUS_View := To_View (To_LL_VUS (B));
-       D  : VUC_View;
-    begin
-       D.Values := LL_VUC_LL_VUS_Operations.vpkuxum (VA.Values, VB.Values);
-       return To_LL_VSC (To_Vector (D));
-    end vpkuhum;
- 
-    -------------
-    -- vpkuwum --
-    -------------
- 
-    function vpkuwum (A : LL_VSI; B : LL_VSI) return LL_VSS is
-       VA : constant VUI_View := To_View (To_LL_VUI (A));
-       VB : constant VUI_View := To_View (To_LL_VUI (B));
-       D  : VUS_View;
-    begin
-       D.Values := LL_VUS_LL_VUI_Operations.vpkuxum (VA.Values, VB.Values);
-       return To_LL_VSS (To_Vector (D));
-    end vpkuwum;
- 
-    -----------
-    -- vpkpx --
-    -----------
- 
-    function vpkpx (A : LL_VSI; B : LL_VSI) return LL_VSS is
-       VA     : constant VUI_View := To_View (To_LL_VUI (A));
-       VB     : constant VUI_View := To_View (To_LL_VUI (B));
-       D      : VUS_View;
-       Offset : Vint_Range;
-       P16    : Pixel_16;
-       P32    : Pixel_32;
- 
-    begin
-       for J in 0 .. 3 loop
-          Offset := Vint_Range (J + Integer (Vshort_Range'First));
-          P32 := To_Pixel (VA.Values (Offset));
-          P16.T := Unsigned_1 (P32.T mod 2 ** 1);
-          P16.R := Unsigned_5 (Shift_Right (P32.R, 3) mod 2 ** 5);
-          P16.G := Unsigned_5 (Shift_Right (P32.G, 3) mod 2 ** 5);
-          P16.B := Unsigned_5 (Shift_Right (P32.B, 3) mod 2 ** 5);
-          D.Values (Vshort_Range (Offset)) := To_unsigned_short (P16);
-          P32 := To_Pixel (VB.Values (Offset));
-          P16.T := Unsigned_1 (P32.T mod 2 ** 1);
-          P16.R := Unsigned_5 (Shift_Right (P32.R, 3) mod 2 ** 5);
-          P16.G := Unsigned_5 (Shift_Right (P32.G, 3) mod 2 ** 5);
-          P16.B := Unsigned_5 (Shift_Right (P32.B, 3) mod 2 ** 5);
-          D.Values (Vshort_Range (Offset) + 4) := To_unsigned_short (P16);
-       end loop;
- 
-       return To_LL_VSS (To_Vector (D));
-    end vpkpx;
- 
-    -------------
-    -- vpkuhus --
-    -------------
- 
-    function vpkuhus (A : LL_VSS; B : LL_VSS) return LL_VSC is
-       VA : constant VUS_View := To_View (To_LL_VUS (A));
-       VB : constant VUS_View := To_View (To_LL_VUS (B));
-       D  : VUC_View;
-    begin
-       D.Values := LL_VUC_LL_VUS_Operations.vpkuxus (VA.Values, VB.Values);
-       return To_LL_VSC (To_Vector (D));
-    end vpkuhus;
- 
-    -------------
-    -- vpkuwus --
-    -------------
- 
-    function vpkuwus (A : LL_VSI; B : LL_VSI) return LL_VSS is
-       VA : constant VUI_View := To_View (To_LL_VUI (A));
-       VB : constant VUI_View := To_View (To_LL_VUI (B));
-       D  : VUS_View;
-    begin
-       D.Values := LL_VUS_LL_VUI_Operations.vpkuxus (VA.Values, VB.Values);
-       return To_LL_VSS (To_Vector (D));
-    end vpkuwus;
- 
-    -------------
-    -- vpkshss --
-    -------------
- 
-    function vpkshss (A : LL_VSS; B : LL_VSS) return LL_VSC is
-       VA : constant VSS_View := To_View (A);
-       VB : constant VSS_View := To_View (B);
-       D  : VSC_View;
-    begin
-       D.Values := LL_VSC_LL_VSS_Operations.vpksxss (VA.Values, VB.Values);
-       return To_Vector (D);
-    end vpkshss;
- 
-    -------------
-    -- vpkswss --
-    -------------
- 
-    function vpkswss (A : LL_VSI; B : LL_VSI) return LL_VSS is
-       VA : constant VSI_View := To_View (A);
-       VB : constant VSI_View := To_View (B);
-       D  : VSS_View;
-    begin
-       D.Values := LL_VSS_LL_VSI_Operations.vpksxss (VA.Values, VB.Values);
-       return To_Vector (D);
-    end vpkswss;
- 
-    -------------
-    -- vpksxus --
-    -------------
- 
-    generic
-       type Signed_Component_Type is range <>;
-       type Signed_Index_Type is range <>;
-       type Signed_Varray_Type is
-         array (Signed_Index_Type) of Signed_Component_Type;
-       type Unsigned_Component_Type is mod <>;
-       type Unsigned_Index_Type is range <>;
-       type Unsigned_Varray_Type is
-         array (Unsigned_Index_Type) of Unsigned_Component_Type;
- 
-    function vpksxus
-      (A : Signed_Varray_Type;
-       B : Signed_Varray_Type) return Unsigned_Varray_Type;
- 
-    function vpksxus
-      (A : Signed_Varray_Type;
-       B : Signed_Varray_Type) return Unsigned_Varray_Type
-    is
-       N             : constant Unsigned_Index_Type :=
-                         Unsigned_Index_Type (Signed_Index_Type'Last);
-       Offset        : Unsigned_Index_Type;
-       Signed_Offset : Signed_Index_Type;
-       D             : Unsigned_Varray_Type;
- 
-       function Saturate
-         (X : Signed_Component_Type) return Unsigned_Component_Type;
-       --  Saturation, as defined in
-       --  [PIM-4.1 Vector Status and Control Register]
- 
-       --------------
-       -- Saturate --
-       --------------
- 
-       function Saturate
-         (X : Signed_Component_Type) return Unsigned_Component_Type
-       is
-          D : Unsigned_Component_Type;
- 
-       begin
-          D := Unsigned_Component_Type
-            (Signed_Component_Type'Max
-             (Signed_Component_Type (Unsigned_Component_Type'First),
-              Signed_Component_Type'Min
-              (Signed_Component_Type (Unsigned_Component_Type'Last),
-               X)));
-          if Signed_Component_Type (D) /= X then
-             VSCR := Write_Bit (VSCR, SAT_POS, 1);
-          end if;
- 
-          return D;
-       end Saturate;
- 
-       --  Start of processing for vpksxus
- 
-    begin
-       for J in 0 .. N - 1 loop
-          Offset :=
-            Unsigned_Index_Type (Integer (J)
-                                 + Integer (Unsigned_Index_Type'First));
-          Signed_Offset :=
-            Signed_Index_Type (Integer (J)
-                               + Integer (Signed_Index_Type'First));
-          D (Offset) := Saturate (A (Signed_Offset));
-          D (Offset + N) := Saturate (B (Signed_Offset));
-       end loop;
- 
-       return D;
-    end vpksxus;
- 
-    -------------
-    -- vpkshus --
-    -------------
- 
-    function vpkshus (A : LL_VSS; B : LL_VSS) return LL_VSC is
-       function vpkshus_Instance is
-         new vpksxus (signed_short,
-                      Vshort_Range,
-                      Varray_signed_short,
-                      unsigned_char,
-                      Vchar_Range,
-                      Varray_unsigned_char);
- 
-       VA : constant VSS_View := To_View (A);
-       VB : constant VSS_View := To_View (B);
-       D  : VUC_View;
- 
-    begin
-       D.Values := vpkshus_Instance (VA.Values, VB.Values);
-       return To_LL_VSC (To_Vector (D));
-    end vpkshus;
- 
-    -------------
-    -- vpkswus --
-    -------------
- 
-    function vpkswus (A : LL_VSI; B : LL_VSI) return LL_VSS is
-       function vpkswus_Instance is
-         new vpksxus (signed_int,
-                      Vint_Range,
-                      Varray_signed_int,
-                      unsigned_short,
-                      Vshort_Range,
-                      Varray_unsigned_short);
- 
-       VA : constant VSI_View := To_View (A);
-       VB : constant VSI_View := To_View (B);
-       D  : VUS_View;
-    begin
-       D.Values := vpkswus_Instance (VA.Values, VB.Values);
-       return To_LL_VSS (To_Vector (D));
-    end vpkswus;
- 
-    ---------------
-    -- vperm_4si --
-    ---------------
- 
-    function vperm_4si (A : LL_VSI; B : LL_VSI; C : LL_VSC) return LL_VSI is
-       VA : constant VUC_View := To_View (To_LL_VUC (A));
-       VB : constant VUC_View := To_View (To_LL_VUC (B));
-       VC : constant VUC_View := To_View (To_LL_VUC (C));
-       J  : Vchar_Range;
-       D  : VUC_View;
- 
-    begin
-       for N in Vchar_Range'Range loop
-          J := Vchar_Range (Integer (Bits (VC.Values (N), 4, 7))
-                            + Integer (Vchar_Range'First));
-          D.Values (N) :=
-            (if Bits (VC.Values (N), 3, 3) = 0 then VA.Values (J)
-                                               else VB.Values (J));
-       end loop;
- 
-       return To_LL_VSI (To_Vector (D));
-    end vperm_4si;
- 
-    -----------
-    -- vrefp --
-    -----------
- 
-    function vrefp (A : LL_VF) return LL_VF is
-       VA : constant VF_View := To_View (A);
-       D  : VF_View;
- 
-    begin
-       for J in Vfloat_Range'Range loop
-          D.Values (J) := FP_Recip_Est (VA.Values (J));
-       end loop;
- 
-       return To_Vector (D);
-    end vrefp;
- 
-    ----------
-    -- vrlb --
-    ----------
- 
-    function vrlb (A : LL_VSC; B : LL_VSC) return LL_VSC is
-       VA : constant VUC_View := To_View (To_LL_VUC (A));
-       VB : constant VUC_View := To_View (To_LL_VUC (B));
-       D  : VUC_View;
-    begin
-       D.Values := LL_VUC_Operations.vrlx (VA.Values, VB.Values, ROTL'Access);
-       return To_LL_VSC (To_Vector (D));
-    end vrlb;
- 
-    ----------
-    -- vrlh --
-    ----------
- 
-    function vrlh (A : LL_VSS; B : LL_VSS) return LL_VSS is
-       VA : constant VUS_View := To_View (To_LL_VUS (A));
-       VB : constant VUS_View := To_View (To_LL_VUS (B));
-       D  : VUS_View;
-    begin
-       D.Values := LL_VUS_Operations.vrlx (VA.Values, VB.Values, ROTL'Access);
-       return To_LL_VSS (To_Vector (D));
-    end vrlh;
- 
-    ----------
-    -- vrlw --
-    ----------
- 
-    function vrlw (A : LL_VSI; B : LL_VSI) return LL_VSI is
-       VA : constant VUI_View := To_View (To_LL_VUI (A));
-       VB : constant VUI_View := To_View (To_LL_VUI (B));
-       D  : VUI_View;
-    begin
-       D.Values := LL_VUI_Operations.vrlx (VA.Values, VB.Values, ROTL'Access);
-       return To_LL_VSI (To_Vector (D));
-    end vrlw;
- 
-    -----------
-    -- vrfin --
-    -----------
- 
-    function vrfin (A : LL_VF) return LL_VF is
-       VA : constant VF_View := To_View (A);
-       D  : VF_View;
- 
-    begin
-       for J in Vfloat_Range'Range loop
-          D.Values (J) := C_float (Rnd_To_FPI_Near (F64 (VA.Values (J))));
-       end loop;
- 
-       return To_Vector (D);
-    end vrfin;
- 
-    ---------------
-    -- vrsqrtefp --
-    ---------------
- 
-    function vrsqrtefp (A : LL_VF) return LL_VF is
-       VA : constant VF_View := To_View (A);
-       D  : VF_View;
- 
-    begin
-       for J in Vfloat_Range'Range loop
-          D.Values (J) := Recip_SQRT_Est (VA.Values (J));
-       end loop;
- 
-       return To_Vector (D);
-    end vrsqrtefp;
- 
-    --------------
-    -- vsel_4si --
-    --------------
- 
-    function vsel_4si (A : LL_VSI; B : LL_VSI; C : LL_VSI) return LL_VSI is
-       VA : constant VUI_View := To_View (To_LL_VUI (A));
-       VB : constant VUI_View := To_View (To_LL_VUI (B));
-       VC : constant VUI_View := To_View (To_LL_VUI (C));
-       D  : VUI_View;
- 
-    begin
-       for J in Vint_Range'Range loop
-          D.Values (J) := ((not VC.Values (J)) and VA.Values (J))
-            or (VC.Values (J) and VB.Values (J));
-       end loop;
- 
-       return To_LL_VSI (To_Vector (D));
-    end vsel_4si;
- 
-    ----------
-    -- vslb --
-    ----------
- 
-    function vslb (A : LL_VSC; B : LL_VSC) return LL_VSC is
-       VA : constant VUC_View := To_View (To_LL_VUC (A));
-       VB : constant VUC_View := To_View (To_LL_VUC (B));
-       D  : VUC_View;
-    begin
-       D.Values :=
-         LL_VUC_Operations.vsxx (VA.Values, VB.Values, Shift_Left'Access);
-       return To_LL_VSC (To_Vector (D));
-    end vslb;
- 
-    ----------
-    -- vslh --
-    ----------
- 
-    function vslh (A : LL_VSS; B : LL_VSS) return LL_VSS is
-       VA : constant VUS_View := To_View (To_LL_VUS (A));
-       VB : constant VUS_View := To_View (To_LL_VUS (B));
-       D  : VUS_View;
-    begin
-       D.Values :=
-         LL_VUS_Operations.vsxx (VA.Values, VB.Values, Shift_Left'Access);
-       return To_LL_VSS (To_Vector (D));
-    end vslh;
- 
-    ----------
-    -- vslw --
-    ----------
- 
-    function vslw (A : LL_VSI; B : LL_VSI) return LL_VSI is
-       VA : constant VUI_View := To_View (To_LL_VUI (A));
-       VB : constant VUI_View := To_View (To_LL_VUI (B));
-       D  : VUI_View;
-    begin
-       D.Values :=
-         LL_VUI_Operations.vsxx (VA.Values, VB.Values, Shift_Left'Access);
-       return To_LL_VSI (To_Vector (D));
-    end vslw;
- 
-    ----------------
-    -- vsldoi_4si --
-    ----------------
- 
-    function vsldoi_4si (A : LL_VSI; B : LL_VSI; C : c_int) return LL_VSI is
-       VA     : constant VUC_View := To_View (To_LL_VUC (A));
-       VB     : constant VUC_View := To_View (To_LL_VUC (B));
-       Offset : c_int;
-       Bound  : c_int;
-       D      : VUC_View;
- 
-    begin
-       for J in Vchar_Range'Range loop
-          Offset := c_int (J) + C;
-          Bound := c_int (Vchar_Range'First)
-            + c_int (Varray_unsigned_char'Length);
- 
-          if Offset < Bound then
-             D.Values (J) := VA.Values (Vchar_Range (Offset));
-          else
-             D.Values (J) :=
-               VB.Values (Vchar_Range (Offset - Bound
-                                       + c_int (Vchar_Range'First)));
-          end if;
-       end loop;
- 
-       return To_LL_VSI (To_Vector (D));
-    end vsldoi_4si;
- 
-    ----------------
-    -- vsldoi_8hi --
-    ----------------
- 
-    function vsldoi_8hi (A : LL_VSS; B : LL_VSS; C : c_int) return LL_VSS is
-    begin
-       return To_LL_VSS (vsldoi_4si (To_LL_VSI (A), To_LL_VSI (B), C));
-    end vsldoi_8hi;
- 
-    -----------------
-    -- vsldoi_16qi --
-    -----------------
- 
-    function vsldoi_16qi (A : LL_VSC; B : LL_VSC; C : c_int) return LL_VSC is
-    begin
-       return To_LL_VSC (vsldoi_4si (To_LL_VSI (A), To_LL_VSI (B), C));
-    end vsldoi_16qi;
- 
-    ----------------
-    -- vsldoi_4sf --
-    ----------------
- 
-    function vsldoi_4sf (A : LL_VF; B : LL_VF; C : c_int) return LL_VF is
-    begin
-       return To_LL_VF (vsldoi_4si (To_LL_VSI (A), To_LL_VSI (B), C));
-    end vsldoi_4sf;
- 
-    ---------
-    -- vsl --
-    ---------
- 
-    function vsl  (A : LL_VSI; B : LL_VSI) return LL_VSI is
-       VA : constant VUI_View := To_View (To_LL_VUI (A));
-       VB : constant VUI_View := To_View (To_LL_VUI (B));
-       D  : VUI_View;
-       M  : constant Natural :=
-              Natural (Bits (VB.Values (Vint_Range'Last), 29, 31));
- 
-       --  [PIM-4.4 vec_sll] "Note that the three low-order byte elements in B
-       --  must be the same. Otherwise the value placed into D is undefined."
-       --  ??? Shall we add a optional check for B?
- 
-    begin
-       for J in Vint_Range'Range loop
-          D.Values (J) := 0;
-          D.Values (J) := D.Values (J) + Shift_Left (VA.Values (J), M);
- 
-          if J /= Vint_Range'Last then
-             D.Values (J) :=
-               D.Values (J) + Shift_Right (VA.Values (J + 1),
-                                           signed_int'Size - M);
-          end if;
-       end loop;
- 
-       return To_LL_VSI (To_Vector (D));
-    end vsl;
- 
-    ----------
-    -- vslo --
-    ----------
- 
-    function vslo (A : LL_VSI; B : LL_VSI) return LL_VSI is
-       VA : constant VUC_View := To_View (To_LL_VUC (A));
-       VB : constant VUC_View := To_View (To_LL_VUC (B));
-       D  : VUC_View;
-       M  : constant Natural :=
-              Natural (Bits (VB.Values (Vchar_Range'Last), 1, 4));
-       J  : Natural;
- 
-    begin
-       for N in Vchar_Range'Range loop
-          J := Natural (N) + M;
-          D.Values (N) :=
-            (if J <= Natural (Vchar_Range'Last) then VA.Values (Vchar_Range (J))
-                                                else 0);
-       end loop;
- 
-       return To_LL_VSI (To_Vector (D));
-    end vslo;
- 
-    ------------
-    -- vspltb --
-    ------------
- 
-    function vspltb (A : LL_VSC; B : c_int) return LL_VSC is
-       VA : constant VSC_View := To_View (A);
-       D  : VSC_View;
-    begin
-       D.Values := LL_VSC_Operations.vspltx (VA.Values, B);
-       return To_Vector (D);
-    end vspltb;
- 
-    ------------
-    -- vsplth --
-    ------------
- 
-    function vsplth (A : LL_VSS; B : c_int) return LL_VSS is
-       VA : constant VSS_View := To_View (A);
-       D  : VSS_View;
-    begin
-       D.Values := LL_VSS_Operations.vspltx (VA.Values, B);
-       return To_Vector (D);
-    end vsplth;
- 
-    ------------
-    -- vspltw --
-    ------------
- 
-    function vspltw (A : LL_VSI; B : c_int) return LL_VSI is
-       VA : constant VSI_View := To_View (A);
-       D  : VSI_View;
-    begin
-       D.Values := LL_VSI_Operations.vspltx (VA.Values, B);
-       return To_Vector (D);
-    end vspltw;
- 
-    --------------
-    -- vspltisb --
-    --------------
- 
-    function vspltisb (A : c_int) return LL_VSC is
-       D : VSC_View;
-    begin
-       D.Values := LL_VSC_Operations.vspltisx (A);
-       return To_Vector (D);
-    end vspltisb;
- 
-    --------------
-    -- vspltish --
-    --------------
- 
-    function vspltish (A : c_int) return LL_VSS is
-       D : VSS_View;
-    begin
-       D.Values := LL_VSS_Operations.vspltisx (A);
-       return To_Vector (D);
-    end vspltish;
- 
-    --------------
-    -- vspltisw --
-    --------------
- 
-    function vspltisw (A : c_int) return LL_VSI is
-       D : VSI_View;
-    begin
-       D.Values := LL_VSI_Operations.vspltisx (A);
-       return To_Vector (D);
-    end vspltisw;
- 
-    ----------
-    -- vsrb --
-    ----------
- 
-    function vsrb (A : LL_VSC; B : LL_VSC) return LL_VSC is
-       VA : constant VUC_View := To_View (To_LL_VUC (A));
-       VB : constant VUC_View := To_View (To_LL_VUC (B));
-       D  : VUC_View;
-    begin
-       D.Values :=
-         LL_VUC_Operations.vsxx (VA.Values, VB.Values, Shift_Right'Access);
-       return To_LL_VSC (To_Vector (D));
-    end vsrb;
- 
-    ----------
-    -- vsrh --
-    ----------
- 
-    function vsrh (A : LL_VSS; B : LL_VSS) return LL_VSS is
-       VA : constant VUS_View := To_View (To_LL_VUS (A));
-       VB : constant VUS_View := To_View (To_LL_VUS (B));
-       D  : VUS_View;
-    begin
-       D.Values :=
-         LL_VUS_Operations.vsxx (VA.Values, VB.Values, Shift_Right'Access);
-       return To_LL_VSS (To_Vector (D));
-    end vsrh;
- 
-    ----------
-    -- vsrw --
-    ----------
- 
-    function vsrw (A : LL_VSI; B : LL_VSI) return LL_VSI is
-       VA : constant VUI_View := To_View (To_LL_VUI (A));
-       VB : constant VUI_View := To_View (To_LL_VUI (B));
-       D  : VUI_View;
-    begin
-       D.Values :=
-         LL_VUI_Operations.vsxx (VA.Values, VB.Values, Shift_Right'Access);
-       return To_LL_VSI (To_Vector (D));
-    end vsrw;
- 
-    -----------
-    -- vsrab --
-    -----------
- 
-    function vsrab (A : LL_VSC; B : LL_VSC) return LL_VSC is
-       VA : constant VSC_View := To_View (A);
-       VB : constant VSC_View := To_View (B);
-       D  : VSC_View;
-    begin
-       D.Values :=
-         LL_VSC_Operations.vsrax (VA.Values, VB.Values, Shift_Right_A'Access);
-       return To_Vector (D);
-    end vsrab;
- 
-    -----------
-    -- vsrah --
-    -----------
- 
-    function vsrah (A : LL_VSS; B : LL_VSS) return LL_VSS is
-       VA : constant VSS_View := To_View (A);
-       VB : constant VSS_View := To_View (B);
-       D  : VSS_View;
-    begin
-       D.Values :=
-         LL_VSS_Operations.vsrax (VA.Values, VB.Values, Shift_Right_A'Access);
-       return To_Vector (D);
-    end vsrah;
- 
-    -----------
-    -- vsraw --
-    -----------
- 
-    function vsraw (A : LL_VSI; B : LL_VSI) return LL_VSI is
-       VA : constant VSI_View := To_View (A);
-       VB : constant VSI_View := To_View (B);
-       D  : VSI_View;
-    begin
-       D.Values :=
-         LL_VSI_Operations.vsrax (VA.Values, VB.Values, Shift_Right_A'Access);
-       return To_Vector (D);
-    end vsraw;
- 
-    ---------
-    -- vsr --
-    ---------
- 
-    function vsr  (A : LL_VSI; B : LL_VSI) return LL_VSI is
-       VA : constant VUI_View := To_View (To_LL_VUI (A));
-       VB : constant VUI_View := To_View (To_LL_VUI (B));
-       M  : constant Natural :=
-              Natural (Bits (VB.Values (Vint_Range'Last), 29, 31));
-       D  : VUI_View;
- 
-    begin
-       for J in Vint_Range'Range loop
-          D.Values (J) := 0;
-          D.Values (J) := D.Values (J) + Shift_Right (VA.Values (J), M);
- 
-          if J /= Vint_Range'First then
-             D.Values (J) :=
-               D.Values (J)
-               + Shift_Left (VA.Values (J - 1), signed_int'Size - M);
-          end if;
-       end loop;
- 
-       return To_LL_VSI (To_Vector (D));
-    end vsr;
- 
-    ----------
-    -- vsro --
-    ----------
- 
-    function vsro (A : LL_VSI; B : LL_VSI) return LL_VSI is
-       VA : constant VUC_View := To_View (To_LL_VUC (A));
-       VB : constant VUC_View := To_View (To_LL_VUC (B));
-       M  : constant Natural :=
-              Natural (Bits (VB.Values (Vchar_Range'Last), 1, 4));
-       J  : Natural;
-       D  : VUC_View;
- 
-    begin
-       for N in Vchar_Range'Range loop
-          J := Natural (N) - M;
- 
-          if J >= Natural (Vchar_Range'First) then
-             D.Values (N) := VA.Values (Vchar_Range (J));
-          else
-             D.Values (N) := 0;
-          end if;
-       end loop;
- 
-       return To_LL_VSI (To_Vector (D));
-    end vsro;
- 
-    ----------
-    -- stvx --
-    ----------
- 
-    procedure stvx   (A : LL_VSI; B : c_int; C : c_ptr) is
- 
-       --  Simulate the altivec unit behavior regarding what Effective Address
-       --  is accessed, stripping off the input address least significant bits
-       --  wrt to vector alignment (see comment in lvx for further details).
- 
-       EA : constant System.Address :=
-              To_Address
-                (Bound_Align
-                   (Integer_Address (B) + To_Integer (C), VECTOR_ALIGNMENT));
- 
-       D  : LL_VSI;
-       for D'Address use EA;
- 
-    begin
-       D := A;
-    end stvx;
- 
-    ------------
-    -- stvewx --
-    ------------
- 
-    procedure stvebx (A : LL_VSC; B : c_int; C : c_ptr) is
-       VA : constant VSC_View := To_View (A);
-    begin
-       LL_VSC_Operations.stvexx (VA.Values, B, C);
-    end stvebx;
- 
-    ------------
-    -- stvehx --
-    ------------
- 
-    procedure stvehx (A : LL_VSS; B : c_int; C : c_ptr) is
-       VA : constant VSS_View := To_View (A);
-    begin
-       LL_VSS_Operations.stvexx (VA.Values, B, C);
-    end stvehx;
- 
-    ------------
-    -- stvewx --
-    ------------
- 
-    procedure stvewx (A : LL_VSI; B : c_int; C : c_ptr) is
-       VA : constant VSI_View := To_View (A);
-    begin
-       LL_VSI_Operations.stvexx (VA.Values, B, C);
-    end stvewx;
- 
-    -----------
-    -- stvxl --
-    -----------
- 
-    procedure stvxl   (A : LL_VSI; B : c_int; C : c_ptr) renames stvx;
- 
-    -------------
-    -- vsububm --
-    -------------
- 
-    function vsububm (A : LL_VSC; B : LL_VSC) return LL_VSC is
-       VA : constant VUC_View := To_View (To_LL_VUC (A));
-       VB : constant VUC_View := To_View (To_LL_VUC (B));
-       D  : VUC_View;
-    begin
-       D.Values := LL_VUC_Operations.vsubuxm (VA.Values, VB.Values);
-       return To_LL_VSC (To_Vector (D));
-    end vsububm;
- 
-    -------------
-    -- vsubuhm --
-    -------------
- 
-    function vsubuhm (A : LL_VSS; B : LL_VSS) return LL_VSS is
-       VA : constant VUS_View := To_View (To_LL_VUS (A));
-       VB : constant VUS_View := To_View (To_LL_VUS (B));
-       D  : VUS_View;
-    begin
-       D.Values := LL_VUS_Operations.vsubuxm (VA.Values, VB.Values);
-       return To_LL_VSS (To_Vector (D));
-    end vsubuhm;
- 
-    -------------
-    -- vsubuwm --
-    -------------
- 
-    function vsubuwm (A : LL_VSI; B : LL_VSI) return LL_VSI is
-       VA : constant VUI_View := To_View (To_LL_VUI (A));
-       VB : constant VUI_View := To_View (To_LL_VUI (B));
-       D  : VUI_View;
-    begin
-       D.Values := LL_VUI_Operations.vsubuxm (VA.Values, VB.Values);
-       return To_LL_VSI (To_Vector (D));
-    end vsubuwm;
- 
-    ------------
-    -- vsubfp --
-    ------------
- 
-    function vsubfp (A : LL_VF; B : LL_VF) return LL_VF is
-       VA : constant VF_View := To_View (A);
-       VB : constant VF_View := To_View (B);
-       D  : VF_View;
- 
-    begin
-       for J in Vfloat_Range'Range loop
-          D.Values (J) :=
-            NJ_Truncate (NJ_Truncate (VA.Values (J))
-                         - NJ_Truncate (VB.Values (J)));
-       end loop;
- 
-       return To_Vector (D);
-    end vsubfp;
- 
-    -------------
-    -- vsubcuw --
-    -------------
- 
-    function vsubcuw (A : LL_VSI; B : LL_VSI) return LL_VSI is
-       Subst_Result : SI64;
- 
-       VA : constant VUI_View := To_View (To_LL_VUI (A));
-       VB : constant VUI_View := To_View (To_LL_VUI (B));
-       D  : VUI_View;
- 
-    begin
-       for J in Vint_Range'Range loop
-          Subst_Result := SI64 (VA.Values (J)) - SI64 (VB.Values (J));
-          D.Values (J) :=
-            (if Subst_Result < SI64 (unsigned_int'First) then 0 else 1);
-       end loop;
- 
-       return To_LL_VSI (To_Vector (D));
-    end vsubcuw;
- 
-    -------------
-    -- vsububs --
-    -------------
- 
-    function vsububs (A : LL_VSC; B : LL_VSC) return LL_VSC is
-       VA : constant VUC_View := To_View (To_LL_VUC (A));
-       VB : constant VUC_View := To_View (To_LL_VUC (B));
-       D  : VUC_View;
-    begin
-       D.Values := LL_VUC_Operations.vsubuxs (VA.Values, VB.Values);
-       return To_LL_VSC (To_Vector (D));
-    end vsububs;
- 
-    -------------
-    -- vsubsbs --
-    -------------
- 
-    function vsubsbs (A : LL_VSC; B : LL_VSC) return LL_VSC is
-       VA : constant VSC_View := To_View (A);
-       VB : constant VSC_View := To_View (B);
-       D  : VSC_View;
-    begin
-       D.Values := LL_VSC_Operations.vsubsxs (VA.Values, VB.Values);
-       return To_Vector (D);
-    end vsubsbs;
- 
-    -------------
-    -- vsubuhs --
-    -------------
- 
-    function vsubuhs (A : LL_VSS; B : LL_VSS) return LL_VSS is
-       VA : constant VUS_View := To_View (To_LL_VUS (A));
-       VB : constant VUS_View := To_View (To_LL_VUS (B));
-       D  : VUS_View;
-    begin
-       D.Values := LL_VUS_Operations.vsubuxs (VA.Values, VB.Values);
-       return To_LL_VSS (To_Vector (D));
-    end vsubuhs;
- 
-    -------------
-    -- vsubshs --
-    -------------
- 
-    function vsubshs (A : LL_VSS; B : LL_VSS) return LL_VSS is
-       VA : constant VSS_View := To_View (A);
-       VB : constant VSS_View := To_View (B);
-       D  : VSS_View;
-    begin
-       D.Values := LL_VSS_Operations.vsubsxs (VA.Values, VB.Values);
-       return To_Vector (D);
-    end vsubshs;
- 
-    -------------
-    -- vsubuws --
-    -------------
- 
-    function vsubuws (A : LL_VSI; B : LL_VSI) return LL_VSI is
-       VA : constant VUI_View := To_View (To_LL_VUI (A));
-       VB : constant VUI_View := To_View (To_LL_VUI (B));
-       D  : VUI_View;
-    begin
-       D.Values := LL_VUI_Operations.vsubuxs (VA.Values, VB.Values);
-       return To_LL_VSI (To_Vector (D));
-    end vsubuws;
- 
-    -------------
-    -- vsubsws --
-    -------------
- 
-    function vsubsws (A : LL_VSI; B : LL_VSI) return LL_VSI is
-       VA : constant VSI_View := To_View (A);
-       VB : constant VSI_View := To_View (B);
-       D  : VSI_View;
-    begin
-       D.Values := LL_VSI_Operations.vsubsxs (VA.Values, VB.Values);
-       return To_Vector (D);
-    end vsubsws;
- 
-    --------------
-    -- vsum4ubs --
-    --------------
- 
-    function vsum4ubs (A : LL_VSC; B : LL_VSI) return LL_VSI is
-       VA     : constant VUC_View := To_View (To_LL_VUC (A));
-       VB     : constant VUI_View := To_View (To_LL_VUI (B));
-       Offset : Vchar_Range;
-       D      : VUI_View;
- 
-    begin
-       for J in 0 .. 3 loop
-          Offset := Vchar_Range (4 * J + Integer (Vchar_Range'First));
-          D.Values (Vint_Range (J + Integer (Vint_Range'First))) :=
-            LL_VUI_Operations.Saturate
-            (UI64 (VA.Values (Offset))
-             + UI64 (VA.Values (Offset + 1))
-             + UI64 (VA.Values (Offset + 2))
-             + UI64 (VA.Values (Offset + 3))
-             + UI64 (VB.Values (Vint_Range (J + Integer (Vint_Range'First)))));
-       end loop;
- 
-       return To_LL_VSI (To_Vector (D));
-    end vsum4ubs;
- 
-    --------------
-    -- vsum4sbs --
-    --------------
- 
-    function vsum4sbs (A : LL_VSC; B : LL_VSI) return LL_VSI is
-       VA     : constant VSC_View := To_View (A);
-       VB     : constant VSI_View := To_View (B);
-       Offset : Vchar_Range;
-       D      : VSI_View;
- 
-    begin
-       for J in 0 .. 3 loop
-          Offset := Vchar_Range (4 * J + Integer (Vchar_Range'First));
-          D.Values (Vint_Range (J + Integer (Vint_Range'First))) :=
-            LL_VSI_Operations.Saturate
-            (SI64 (VA.Values (Offset))
-             + SI64 (VA.Values (Offset + 1))
-             + SI64 (VA.Values (Offset + 2))
-             + SI64 (VA.Values (Offset + 3))
-             + SI64 (VB.Values (Vint_Range (J + Integer (Vint_Range'First)))));
-       end loop;
- 
-       return To_Vector (D);
-    end vsum4sbs;
- 
-    --------------
-    -- vsum4shs --
-    --------------
- 
-    function vsum4shs (A : LL_VSS; B : LL_VSI) return LL_VSI is
-       VA     : constant VSS_View := To_View (A);
-       VB     : constant VSI_View := To_View (B);
-       Offset : Vshort_Range;
-       D      : VSI_View;
- 
-    begin
-       for J in 0 .. 3 loop
-          Offset := Vshort_Range (2 * J + Integer (Vchar_Range'First));
-          D.Values (Vint_Range (J + Integer (Vint_Range'First))) :=
-            LL_VSI_Operations.Saturate
-            (SI64 (VA.Values (Offset))
-             + SI64 (VA.Values (Offset + 1))
-             + SI64 (VB.Values (Vint_Range (J + Integer (Vint_Range'First)))));
-       end loop;
- 
-       return To_Vector (D);
-    end vsum4shs;
- 
-    --------------
-    -- vsum2sws --
-    --------------
- 
-    function vsum2sws (A : LL_VSI; B : LL_VSI) return LL_VSI is
-       VA     : constant VSI_View := To_View (A);
-       VB     : constant VSI_View := To_View (B);
-       Offset : Vint_Range;
-       D      : VSI_View;
- 
-    begin
-       for J in 0 .. 1 loop
-          Offset := Vint_Range (2 * J + Integer (Vchar_Range'First));
-          D.Values (Offset) := 0;
-          D.Values (Offset + 1) :=
-            LL_VSI_Operations.Saturate
-            (SI64 (VA.Values (Offset))
-             + SI64 (VA.Values (Offset + 1))
-             + SI64 (VB.Values (Vint_Range (Offset + 1))));
-       end loop;
- 
-       return To_Vector (D);
-    end vsum2sws;
- 
-    -------------
-    -- vsumsws --
-    -------------
- 
-    function vsumsws (A : LL_VSI; B : LL_VSI) return LL_VSI is
-       VA         : constant VSI_View := To_View (A);
-       VB         : constant VSI_View := To_View (B);
-       D          : VSI_View;
-       Sum_Buffer : SI64 := 0;
- 
-    begin
-       for J in Vint_Range'Range loop
-          D.Values (J) := 0;
-          Sum_Buffer := Sum_Buffer + SI64 (VA.Values (J));
-       end loop;
- 
-       Sum_Buffer := Sum_Buffer + SI64 (VB.Values (Vint_Range'Last));
-       D.Values (Vint_Range'Last) := LL_VSI_Operations.Saturate (Sum_Buffer);
-       return To_Vector (D);
-    end vsumsws;
- 
-    -----------
-    -- vrfiz --
-    -----------
- 
-    function vrfiz (A : LL_VF) return LL_VF is
-       VA : constant VF_View := To_View (A);
-       D  : VF_View;
-    begin
-       for J in Vfloat_Range'Range loop
-          D.Values (J) := C_float (Rnd_To_FPI_Trunc (F64 (VA.Values (J))));
-       end loop;
- 
-       return To_Vector (D);
-    end vrfiz;
- 
-    -------------
-    -- vupkhsb --
-    -------------
- 
-    function vupkhsb (A : LL_VSC) return LL_VSS is
-       VA : constant VSC_View := To_View (A);
-       D  : VSS_View;
-    begin
-       D.Values := LL_VSC_LL_VSS_Operations.vupkxsx (VA.Values, 0);
-       return To_Vector (D);
-    end vupkhsb;
- 
-    -------------
-    -- vupkhsh --
-    -------------
- 
-    function vupkhsh (A : LL_VSS) return LL_VSI is
-       VA : constant VSS_View := To_View (A);
-       D  : VSI_View;
-    begin
-       D.Values := LL_VSS_LL_VSI_Operations.vupkxsx (VA.Values, 0);
-       return To_Vector (D);
-    end vupkhsh;
- 
-    -------------
-    -- vupkxpx --
-    -------------
- 
-    function vupkxpx (A : LL_VSS; Offset : Natural) return LL_VSI;
-    --  For vupkhpx and vupklpx (depending on Offset)
- 
-    function vupkxpx (A : LL_VSS; Offset : Natural) return LL_VSI is
-       VA  : constant VUS_View := To_View (To_LL_VUS (A));
-       K   : Vshort_Range;
-       D   : VUI_View;
-       P16 : Pixel_16;
-       P32 : Pixel_32;
- 
-       function Sign_Extend (X : Unsigned_1) return unsigned_char;
- 
-       function Sign_Extend (X : Unsigned_1) return unsigned_char is
-       begin
-          if X = 1 then
-             return 16#FF#;
-          else
-             return 16#00#;
-          end if;
-       end Sign_Extend;
- 
-    begin
-       for J in Vint_Range'Range loop
-          K := Vshort_Range (Integer (J)
-                             - Integer (Vint_Range'First)
-                             + Integer (Vshort_Range'First)
-                             + Offset);
-          P16 := To_Pixel (VA.Values (K));
-          P32.T := Sign_Extend (P16.T);
-          P32.R := unsigned_char (P16.R);
-          P32.G := unsigned_char (P16.G);
-          P32.B := unsigned_char (P16.B);
-          D.Values (J) := To_unsigned_int (P32);
-       end loop;
- 
-       return To_LL_VSI (To_Vector (D));
-    end vupkxpx;
- 
-    -------------
-    -- vupkhpx --
-    -------------
- 
-    function vupkhpx (A : LL_VSS) return LL_VSI is
-    begin
-       return vupkxpx (A, 0);
-    end vupkhpx;
- 
-    -------------
-    -- vupklsb --
-    -------------
- 
-    function vupklsb (A : LL_VSC) return LL_VSS is
-       VA : constant VSC_View := To_View (A);
-       D  : VSS_View;
-    begin
-       D.Values :=
-         LL_VSC_LL_VSS_Operations.vupkxsx (VA.Values,
-                                           Varray_signed_short'Length);
-       return To_Vector (D);
-    end vupklsb;
- 
-    -------------
-    -- vupklsh --
-    -------------
- 
-    function vupklsh (A : LL_VSS) return LL_VSI is
-       VA : constant VSS_View := To_View (A);
-       D  : VSI_View;
-    begin
-       D.Values :=
-         LL_VSS_LL_VSI_Operations.vupkxsx (VA.Values,
-                                           Varray_signed_int'Length);
-       return To_Vector (D);
-    end vupklsh;
- 
-    -------------
-    -- vupklpx --
-    -------------
- 
-    function vupklpx (A : LL_VSS) return LL_VSI is
-    begin
-       return vupkxpx (A, Varray_signed_int'Length);
-    end vupklpx;
- 
-    ----------
-    -- vxor --
-    ----------
- 
-    function vxor (A : LL_VSI; B : LL_VSI) return LL_VSI is
-       VA : constant VUI_View := To_View (To_LL_VUI (A));
-       VB : constant VUI_View := To_View (To_LL_VUI (B));
-       D  : VUI_View;
- 
-    begin
-       for J in Vint_Range'Range loop
-          D.Values (J) := VA.Values (J) xor VB.Values (J);
-       end loop;
- 
-       return To_LL_VSI (To_Vector (D));
-    end vxor;
- 
-    ----------------
-    -- vcmpequb_p --
-    ----------------
- 
-    function vcmpequb_p (A : c_int; B : LL_VSC; C : LL_VSC) return c_int is
-       D : LL_VSC;
-    begin
-       D := vcmpequb (B, C);
-       return LL_VSC_Operations.Check_CR6 (A, To_View (D).Values);
-    end vcmpequb_p;
- 
-    ----------------
-    -- vcmpequh_p --
-    ----------------
- 
-    function vcmpequh_p (A : c_int; B : LL_VSS; C : LL_VSS) return c_int is
-       D : LL_VSS;
-    begin
-       D := vcmpequh (B, C);
-       return LL_VSS_Operations.Check_CR6 (A, To_View (D).Values);
-    end vcmpequh_p;
- 
-    ----------------
-    -- vcmpequw_p --
-    ----------------
- 
-    function vcmpequw_p (A : c_int; B : LL_VSI; C : LL_VSI) return c_int is
-       D : LL_VSI;
-    begin
-       D := vcmpequw (B, C);
-       return LL_VSI_Operations.Check_CR6 (A, To_View (D).Values);
-    end vcmpequw_p;
- 
-    ----------------
-    -- vcmpeqfp_p --
-    ----------------
- 
-    function vcmpeqfp_p (A : c_int; B : LL_VF; C : LL_VF) return c_int is
-       D : LL_VSI;
-    begin
-       D := vcmpeqfp (B, C);
-       return LL_VSI_Operations.Check_CR6 (A, To_View (D).Values);
-    end vcmpeqfp_p;
- 
-    ----------------
-    -- vcmpgtub_p --
-    ----------------
- 
-    function vcmpgtub_p (A : c_int; B : LL_VSC; C : LL_VSC) return c_int is
-       D : LL_VSC;
-    begin
-       D := vcmpgtub (B, C);
-       return LL_VSC_Operations.Check_CR6 (A, To_View (D).Values);
-    end vcmpgtub_p;
- 
-    ----------------
-    -- vcmpgtuh_p --
-    ----------------
- 
-    function vcmpgtuh_p (A : c_int; B : LL_VSS; C : LL_VSS) return c_int is
-       D : LL_VSS;
-    begin
-       D := vcmpgtuh (B, C);
-       return LL_VSS_Operations.Check_CR6 (A, To_View (D).Values);
-    end vcmpgtuh_p;
- 
-    ----------------
-    -- vcmpgtuw_p --
-    ----------------
- 
-    function vcmpgtuw_p (A : c_int; B : LL_VSI; C : LL_VSI) return c_int is
-       D : LL_VSI;
-    begin
-       D := vcmpgtuw (B, C);
-       return LL_VSI_Operations.Check_CR6 (A, To_View (D).Values);
-    end vcmpgtuw_p;
- 
-    ----------------
-    -- vcmpgtsb_p --
-    ----------------
- 
-    function vcmpgtsb_p (A : c_int; B : LL_VSC; C : LL_VSC) return c_int is
-       D : LL_VSC;
-    begin
-       D := vcmpgtsb (B, C);
-       return LL_VSC_Operations.Check_CR6 (A, To_View (D).Values);
-    end vcmpgtsb_p;
- 
-    ----------------
-    -- vcmpgtsh_p --
-    ----------------
- 
-    function vcmpgtsh_p (A : c_int; B : LL_VSS; C : LL_VSS) return c_int is
-       D : LL_VSS;
-    begin
-       D := vcmpgtsh (B, C);
-       return LL_VSS_Operations.Check_CR6 (A, To_View (D).Values);
-    end vcmpgtsh_p;
- 
-    ----------------
-    -- vcmpgtsw_p --
-    ----------------
- 
-    function vcmpgtsw_p (A : c_int; B : LL_VSI; C : LL_VSI) return c_int is
-       D : LL_VSI;
-    begin
-       D := vcmpgtsw (B, C);
-       return LL_VSI_Operations.Check_CR6 (A, To_View (D).Values);
-    end vcmpgtsw_p;
- 
-    ----------------
-    -- vcmpgefp_p --
-    ----------------
- 
-    function vcmpgefp_p (A : c_int; B : LL_VF; C : LL_VF) return c_int is
-       D : LL_VSI;
-    begin
-       D := vcmpgefp (B, C);
-       return LL_VSI_Operations.Check_CR6 (A, To_View (D).Values);
-    end vcmpgefp_p;
- 
-    ----------------
-    -- vcmpgtfp_p --
-    ----------------
- 
-    function vcmpgtfp_p (A : c_int; B : LL_VF; C : LL_VF) return c_int is
-       D : LL_VSI;
-    begin
-       D := vcmpgtfp (B, C);
-       return LL_VSI_Operations.Check_CR6 (A, To_View (D).Values);
-    end vcmpgtfp_p;
- 
-    ----------------
-    -- vcmpbfp_p --
-    ----------------
- 
-    function vcmpbfp_p (A : c_int; B : LL_VF; C : LL_VF) return c_int is
-       D : VSI_View;
-    begin
-       D := To_View (vcmpbfp (B, C));
- 
-       for J in Vint_Range'Range loop
- 
-          --  vcmpbfp is not returning the usual bool vector; do the conversion
- 
-          D.Values (J) :=
-            (if D.Values (J) = 0 then Signed_Bool_False else Signed_Bool_True);
-       end loop;
- 
-       return LL_VSI_Operations.Check_CR6 (A, D.Values);
-    end vcmpbfp_p;
- 
- end GNAT.Altivec.Low_Level_Vectors;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-alleve.ads gcc-8.1.0/gcc/ada/g-alleve.ads
*** gcc-7.3.0/gcc/ada/g-alleve.ads	Fri Feb 20 13:54:40 2015
--- gcc-8.1.0/gcc/ada/g-alleve.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,525 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --       G N A T . A L T I V E C . L O W _ L E V E L _ V E C T O R S        --
- --                                                                          --
- --                                 S p e c                                  --
- --                         (Soft Binding Version)                           --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 unit exposes the low level vector support for the Soft binding,
- --  intended for non AltiVec capable targets. See Altivec.Design for a
- --  description of what is expected to be exposed.
- 
- with GNAT.Altivec.Vector_Views; use GNAT.Altivec.Vector_Views;
- 
- package GNAT.Altivec.Low_Level_Vectors is
- 
-    ----------------------------------------
-    -- Low level vector type declarations --
-    ----------------------------------------
- 
-    type LL_VUC is private;
-    type LL_VSC is private;
-    type LL_VBC is private;
- 
-    type LL_VUS is private;
-    type LL_VSS is private;
-    type LL_VBS is private;
- 
-    type LL_VUI is private;
-    type LL_VSI is private;
-    type LL_VBI is private;
- 
-    type LL_VF  is private;
-    type LL_VP  is private;
- 
-    ------------------------------------
-    -- Low level functional interface --
-    ------------------------------------
- 
-    function abs_v16qi (A : LL_VSC) return LL_VSC;
-    function abs_v8hi  (A : LL_VSS) return LL_VSS;
-    function abs_v4si  (A : LL_VSI) return LL_VSI;
-    function abs_v4sf  (A : LL_VF)  return LL_VF;
- 
-    function abss_v16qi (A : LL_VSC) return LL_VSC;
-    function abss_v8hi  (A : LL_VSS) return LL_VSS;
-    function abss_v4si  (A : LL_VSI) return LL_VSI;
- 
-    function vaddubm (A : LL_VSC; B : LL_VSC) return LL_VSC;
-    function vadduhm (A : LL_VSS; B : LL_VSS) return LL_VSS;
-    function vadduwm (A : LL_VSI; B : LL_VSI) return LL_VSI;
-    function vaddfp  (A : LL_VF;  B : LL_VF)  return LL_VF;
- 
-    function vaddcuw (A : LL_VSI; B : LL_VSI) return LL_VSI;
- 
-    function vaddubs (A : LL_VSC; B : LL_VSC) return LL_VSC;
-    function vaddsbs (A : LL_VSC; B : LL_VSC) return LL_VSC;
-    function vadduhs (A : LL_VSS; B : LL_VSS) return LL_VSS;
-    function vaddshs (A : LL_VSS; B : LL_VSS) return LL_VSS;
-    function vadduws (A : LL_VSI; B : LL_VSI) return LL_VSI;
-    function vaddsws (A : LL_VSI; B : LL_VSI) return LL_VSI;
- 
-    function vand  (A : LL_VSI; B : LL_VSI) return LL_VSI;
-    function vandc (A : LL_VSI; B : LL_VSI) return LL_VSI;
- 
-    function vavgub (A : LL_VSC; B : LL_VSC) return LL_VSC;
-    function vavgsb (A : LL_VSC; B : LL_VSC) return LL_VSC;
-    function vavguh (A : LL_VSS; B : LL_VSS) return LL_VSS;
-    function vavgsh (A : LL_VSS; B : LL_VSS) return LL_VSS;
-    function vavguw (A : LL_VSI; B : LL_VSI) return LL_VSI;
-    function vavgsw (A : LL_VSI; B : LL_VSI) return LL_VSI;
- 
-    function vcmpbfp (A : LL_VF; B : LL_VF) return LL_VSI;
- 
-    function vcmpequb (A : LL_VSC; B : LL_VSC) return LL_VSC;
-    function vcmpequh (A : LL_VSS; B : LL_VSS) return LL_VSS;
-    function vcmpequw (A : LL_VSI; B : LL_VSI) return LL_VSI;
-    function vcmpeqfp (A : LL_VF; B : LL_VF) return LL_VSI;
- 
-    function vcmpgefp (A : LL_VF; B : LL_VF) return LL_VSI;
- 
-    function vcmpgtub (A : LL_VSC; B : LL_VSC) return LL_VSC;
-    function vcmpgtsb (A : LL_VSC; B : LL_VSC) return LL_VSC;
-    function vcmpgtuh (A : LL_VSS; B : LL_VSS) return LL_VSS;
-    function vcmpgtsh (A : LL_VSS; B : LL_VSS) return LL_VSS;
-    function vcmpgtuw (A : LL_VSI; B : LL_VSI) return LL_VSI;
-    function vcmpgtsw (A : LL_VSI; B : LL_VSI) return LL_VSI;
-    function vcmpgtfp (A : LL_VF; B : LL_VF) return LL_VSI;
- 
-    function vcfux (A : LL_VUI; B : c_int) return LL_VF;
-    function vcfsx (A : LL_VSI; B : c_int) return LL_VF;
- 
-    function vctsxs (A : LL_VF; B : c_int) return LL_VSI;
-    function vctuxs (A : LL_VF; B : c_int) return LL_VUI;
- 
-    procedure dss (A : c_int);
-    procedure dssall;
- 
-    procedure dst    (A : c_ptr; B : c_int; C : c_int);
-    procedure dstst  (A : c_ptr; B : c_int; C : c_int);
-    procedure dststt (A : c_ptr; B : c_int; C : c_int);
-    procedure dstt   (A : c_ptr; B : c_int; C : c_int);
- 
-    function vexptefp (A : LL_VF) return LL_VF;
- 
-    function vrfim (A : LL_VF) return LL_VF;
- 
-    function lvx   (A : c_long; B : c_ptr) return LL_VSI;
-    function lvebx (A : c_long; B : c_ptr) return LL_VSC;
-    function lvehx (A : c_long; B : c_ptr) return LL_VSS;
-    function lvewx (A : c_long; B : c_ptr) return LL_VSI;
-    function lvxl  (A : c_long; B : c_ptr) return LL_VSI;
- 
-    function vlogefp (A : LL_VF) return LL_VF;
- 
-    function lvsl  (A : c_long; B : c_ptr) return LL_VSC;
-    function lvsr  (A : c_long; B : c_ptr) return LL_VSC;
- 
-    function vmaddfp (A : LL_VF; B : LL_VF; C : LL_VF) return LL_VF;
- 
-    function vmhaddshs  (A : LL_VSS; B : LL_VSS; C : LL_VSS) return LL_VSS;
- 
-    function vmaxub (A : LL_VSC; B : LL_VSC) return LL_VSC;
-    function vmaxsb (A : LL_VSC; B : LL_VSC) return LL_VSC;
-    function vmaxuh (A : LL_VSS; B : LL_VSS) return LL_VSS;
-    function vmaxsh (A : LL_VSS; B : LL_VSS) return LL_VSS;
-    function vmaxuw (A : LL_VSI; B : LL_VSI) return LL_VSI;
-    function vmaxsw (A : LL_VSI; B : LL_VSI) return LL_VSI;
-    function vmaxfp (A : LL_VF;  B : LL_VF)  return LL_VF;
- 
-    function vmrghb (A : LL_VSC; B : LL_VSC) return LL_VSC;
-    function vmrghh (A : LL_VSS; B : LL_VSS) return LL_VSS;
-    function vmrghw (A : LL_VSI; B : LL_VSI) return LL_VSI;
-    function vmrglb (A : LL_VSC; B : LL_VSC) return LL_VSC;
-    function vmrglh (A : LL_VSS; B : LL_VSS) return LL_VSS;
-    function vmrglw (A : LL_VSI; B : LL_VSI) return LL_VSI;
- 
-    function mfvscr return LL_VSS;
- 
-    function vminfp (A : LL_VF;  B : LL_VF)  return LL_VF;
-    function vminsb (A : LL_VSC; B : LL_VSC) return LL_VSC;
-    function vminsh (A : LL_VSS; B : LL_VSS) return LL_VSS;
-    function vminsw (A : LL_VSI; B : LL_VSI) return LL_VSI;
-    function vminub (A : LL_VSC; B : LL_VSC) return LL_VSC;
-    function vminuh (A : LL_VSS; B : LL_VSS) return LL_VSS;
-    function vminuw (A : LL_VSI; B : LL_VSI) return LL_VSI;
- 
-    function vmladduhm (A : LL_VSS; B : LL_VSS; C : LL_VSS) return LL_VSS;
- 
-    function vmhraddshs (A : LL_VSS; B : LL_VSS; C : LL_VSS) return LL_VSS;
- 
-    function vmsumubm (A : LL_VSC; B : LL_VSC; C : LL_VSI) return LL_VSI;
-    function vmsummbm (A : LL_VSC; B : LL_VSC; C : LL_VSI) return LL_VSI;
-    function vmsumuhm (A : LL_VSS; B : LL_VSS; C : LL_VSI) return LL_VSI;
-    function vmsumshm (A : LL_VSS; B : LL_VSS; C : LL_VSI) return LL_VSI;
-    function vmsumuhs (A : LL_VSS; B : LL_VSS; C : LL_VSI) return LL_VSI;
-    function vmsumshs (A : LL_VSS; B : LL_VSS; C : LL_VSI) return LL_VSI;
- 
-    procedure mtvscr (A : LL_VSI);
- 
-    function vmuleub (A : LL_VSC; B : LL_VSC) return LL_VSS;
-    function vmuleuh (A : LL_VSS; B : LL_VSS) return LL_VSI;
-    function vmulesb (A : LL_VSC; B : LL_VSC) return LL_VSS;
-    function vmulesh (A : LL_VSS; B : LL_VSS) return LL_VSI;
- 
-    function vmulosb (A : LL_VSC; B : LL_VSC) return LL_VSS;
-    function vmulosh (A : LL_VSS; B : LL_VSS) return LL_VSI;
-    function vmuloub (A : LL_VSC; B : LL_VSC) return LL_VSS;
-    function vmulouh (A : LL_VSS; B : LL_VSS) return LL_VSI;
- 
-    function vnmsubfp (A : LL_VF; B : LL_VF; C : LL_VF) return LL_VF;
- 
-    function vxor (A : LL_VSI; B : LL_VSI) return LL_VSI;
-    function vnor (A : LL_VSI; B : LL_VSI) return LL_VSI;
-    function vor  (A : LL_VSI; B : LL_VSI) return LL_VSI;
- 
-    function vpkuhum (A : LL_VSS; B : LL_VSS) return LL_VSC;
-    function vpkuwum (A : LL_VSI; B : LL_VSI) return LL_VSS;
-    function vpkpx   (A : LL_VSI; B : LL_VSI) return LL_VSS;
-    function vpkuhus (A : LL_VSS; B : LL_VSS) return LL_VSC;
-    function vpkuwus (A : LL_VSI; B : LL_VSI) return LL_VSS;
-    function vpkshss (A : LL_VSS; B : LL_VSS) return LL_VSC;
-    function vpkswss (A : LL_VSI; B : LL_VSI) return LL_VSS;
-    function vpkshus (A : LL_VSS; B : LL_VSS) return LL_VSC;
-    function vpkswus (A : LL_VSI; B : LL_VSI) return LL_VSS;
- 
-    function vperm_4si (A : LL_VSI; B : LL_VSI; C : LL_VSC) return LL_VSI;
- 
-    function vrefp (A : LL_VF) return LL_VF;
- 
-    function vrlb (A : LL_VSC; B : LL_VSC) return LL_VSC;
-    function vrlh (A : LL_VSS; B : LL_VSS) return LL_VSS;
-    function vrlw (A : LL_VSI; B : LL_VSI) return LL_VSI;
- 
-    function vrfin (A : LL_VF) return LL_VF;
-    function vrfip (A : LL_VF) return LL_VF;
-    function vrfiz (A : LL_VF) return LL_VF;
- 
-    function vrsqrtefp (A : LL_VF) return LL_VF;
- 
-    function vsel_4si (A : LL_VSI; B : LL_VSI; C : LL_VSI) return LL_VSI;
- 
-    function vslb (A : LL_VSC; B : LL_VSC) return LL_VSC;
-    function vslh (A : LL_VSS; B : LL_VSS) return LL_VSS;
-    function vslw (A : LL_VSI; B : LL_VSI) return LL_VSI;
- 
-    function vsldoi_4si  (A : LL_VSI; B : LL_VSI; C : c_int) return LL_VSI;
-    function vsldoi_8hi  (A : LL_VSS; B : LL_VSS; C : c_int) return LL_VSS;
-    function vsldoi_16qi (A : LL_VSC; B : LL_VSC; C : c_int) return LL_VSC;
-    function vsldoi_4sf  (A : LL_VF;  B : LL_VF;  C : c_int) return LL_VF;
- 
-    function vsl  (A : LL_VSI; B : LL_VSI) return LL_VSI;
-    function vslo (A : LL_VSI; B : LL_VSI) return LL_VSI;
- 
-    function vspltb (A : LL_VSC; B : c_int) return LL_VSC;
-    function vsplth (A : LL_VSS; B : c_int) return LL_VSS;
-    function vspltw (A : LL_VSI; B : c_int) return LL_VSI;
- 
-    function vspltisb (A : c_int) return LL_VSC;
-    function vspltish (A : c_int) return LL_VSS;
-    function vspltisw (A : c_int) return LL_VSI;
- 
-    function vsrb  (A : LL_VSC; B : LL_VSC) return LL_VSC;
-    function vsrh  (A : LL_VSS; B : LL_VSS) return LL_VSS;
-    function vsrw  (A : LL_VSI; B : LL_VSI) return LL_VSI;
- 
-    function vsrab (A : LL_VSC; B : LL_VSC) return LL_VSC;
-    function vsrah (A : LL_VSS; B : LL_VSS) return LL_VSS;
-    function vsraw (A : LL_VSI; B : LL_VSI) return LL_VSI;
- 
-    function vsr   (A : LL_VSI; B : LL_VSI) return LL_VSI;
-    function vsro  (A : LL_VSI; B : LL_VSI) return LL_VSI;
- 
-    procedure stvx   (A : LL_VSI; B : c_int; C : c_ptr);
-    procedure stvebx (A : LL_VSC; B : c_int; C : c_ptr);
-    procedure stvehx (A : LL_VSS; B : c_int; C : c_ptr);
-    procedure stvewx (A : LL_VSI; B : c_int; C : c_ptr);
-    procedure stvxl  (A : LL_VSI; B : c_int; C : c_ptr);
- 
-    function vsububm (A : LL_VSC; B : LL_VSC) return LL_VSC;
-    function vsubuhm (A : LL_VSS; B : LL_VSS) return LL_VSS;
-    function vsubuwm (A : LL_VSI; B : LL_VSI) return LL_VSI;
-    function vsubfp  (A : LL_VF;  B : LL_VF)  return LL_VF;
- 
-    function vsubcuw (A : LL_VSI; B : LL_VSI) return LL_VSI;
- 
-    function vsububs (A : LL_VSC; B : LL_VSC) return LL_VSC;
-    function vsubsbs (A : LL_VSC; B : LL_VSC) return LL_VSC;
-    function vsubuhs (A : LL_VSS; B : LL_VSS) return LL_VSS;
-    function vsubshs (A : LL_VSS; B : LL_VSS) return LL_VSS;
-    function vsubuws (A : LL_VSI; B : LL_VSI) return LL_VSI;
-    function vsubsws (A : LL_VSI; B : LL_VSI) return LL_VSI;
- 
-    function vsum4ubs (A : LL_VSC; B : LL_VSI) return LL_VSI;
-    function vsum4sbs (A : LL_VSC; B : LL_VSI) return LL_VSI;
-    function vsum4shs (A : LL_VSS; B : LL_VSI) return LL_VSI;
- 
-    function vsum2sws (A : LL_VSI; B : LL_VSI) return LL_VSI;
-    function vsumsws  (A : LL_VSI; B : LL_VSI) return LL_VSI;
- 
-    function vupkhsb (A : LL_VSC) return LL_VSS;
-    function vupkhsh (A : LL_VSS) return LL_VSI;
-    function vupkhpx (A : LL_VSS) return LL_VSI;
- 
-    function vupklsb (A : LL_VSC) return LL_VSS;
-    function vupklsh (A : LL_VSS) return LL_VSI;
-    function vupklpx (A : LL_VSS) return LL_VSI;
- 
-    function vcmpequb_p (A : c_int; B : LL_VSC; C : LL_VSC) return c_int;
-    function vcmpequh_p (A : c_int; B : LL_VSS; C : LL_VSS) return c_int;
-    function vcmpequw_p (A : c_int; B : LL_VSI; C : LL_VSI) return c_int;
-    function vcmpeqfp_p (A : c_int; B : LL_VF; C : LL_VF) return c_int;
- 
-    function vcmpgtub_p (A : c_int; B : LL_VSC; C : LL_VSC) return c_int;
-    function vcmpgtuh_p (A : c_int; B : LL_VSS; C : LL_VSS) return c_int;
-    function vcmpgtuw_p (A : c_int; B : LL_VSI; C : LL_VSI) return c_int;
-    function vcmpgtsb_p (A : c_int; B : LL_VSC; C : LL_VSC) return c_int;
-    function vcmpgtsh_p (A : c_int; B : LL_VSS; C : LL_VSS) return c_int;
-    function vcmpgtsw_p (A : c_int; B : LL_VSI; C : LL_VSI) return c_int;
-    function vcmpgtfp_p (A : c_int; B : LL_VF; C : LL_VF) return c_int;
- 
-    function vcmpgefp_p (A : c_int; B : LL_VF; C : LL_VF) return c_int;
-    function vcmpbfp_p  (A : c_int; B : LL_VF; C : LL_VF) return c_int;
- 
- private
- 
-    ---------------------------------------
-    -- Low level vector type definitions --
-    ---------------------------------------
- 
-    --  We simply use the natural array definitions corresponding to each
-    --  user-level vector type.
- 
-    type LL_VUI is new VUI_View;
-    type LL_VSI is new VSI_View;
-    type LL_VBI is new VBI_View;
- 
-    type LL_VUS is new VUS_View;
-    type LL_VSS is new VSS_View;
-    type LL_VBS is new VBS_View;
- 
-    type LL_VUC is new VUC_View;
-    type LL_VSC is new VSC_View;
-    type LL_VBC is new VBC_View;
- 
-    type LL_VF is new VF_View;
-    type LL_VP is new VP_View;
- 
-    ------------------------------------
-    -- Low level functional interface --
-    ------------------------------------
- 
-    pragma Convention_Identifier (LL_Altivec, C);
- 
-    pragma Export (LL_Altivec, dss,         "__builtin_altivec_dss");
-    pragma Export (LL_Altivec, dssall,      "__builtin_altivec_dssall");
-    pragma Export (LL_Altivec, dst,         "__builtin_altivec_dst");
-    pragma Export (LL_Altivec, dstst,       "__builtin_altivec_dstst");
-    pragma Export (LL_Altivec, dststt,      "__builtin_altivec_dststt");
-    pragma Export (LL_Altivec, dstt,        "__builtin_altivec_dstt");
-    pragma Export (LL_Altivec, mtvscr,      "__builtin_altivec_mtvscr");
-    pragma Export (LL_Altivec, mfvscr,      "__builtin_altivec_mfvscr");
-    pragma Export (LL_Altivec, stvebx,      "__builtin_altivec_stvebx");
-    pragma Export (LL_Altivec, stvehx,      "__builtin_altivec_stvehx");
-    pragma Export (LL_Altivec, stvewx,      "__builtin_altivec_stvewx");
-    pragma Export (LL_Altivec, stvx,        "__builtin_altivec_stvx");
-    pragma Export (LL_Altivec, stvxl,       "__builtin_altivec_stvxl");
-    pragma Export (LL_Altivec, lvebx,       "__builtin_altivec_lvebx");
-    pragma Export (LL_Altivec, lvehx,       "__builtin_altivec_lvehx");
-    pragma Export (LL_Altivec, lvewx,       "__builtin_altivec_lvewx");
-    pragma Export (LL_Altivec, lvx,         "__builtin_altivec_lvx");
-    pragma Export (LL_Altivec, lvxl,        "__builtin_altivec_lvxl");
-    pragma Export (LL_Altivec, lvsl,        "__builtin_altivec_lvsl");
-    pragma Export (LL_Altivec, lvsr,        "__builtin_altivec_lvsr");
-    pragma Export (LL_Altivec, abs_v16qi,   "__builtin_altivec_abs_v16qi");
-    pragma Export (LL_Altivec, abs_v8hi,    "__builtin_altivec_abs_v8hi");
-    pragma Export (LL_Altivec, abs_v4si,    "__builtin_altivec_abs_v4si");
-    pragma Export (LL_Altivec, abs_v4sf,    "__builtin_altivec_abs_v4sf");
-    pragma Export (LL_Altivec, abss_v16qi,  "__builtin_altivec_abss_v16qi");
-    pragma Export (LL_Altivec, abss_v8hi,   "__builtin_altivec_abss_v8hi");
-    pragma Export (LL_Altivec, abss_v4si,   "__builtin_altivec_abss_v4si");
-    pragma Export (LL_Altivec, vaddcuw,     "__builtin_altivec_vaddcuw");
-    pragma Export (LL_Altivec, vaddfp,      "__builtin_altivec_vaddfp");
-    pragma Export (LL_Altivec, vaddsbs,     "__builtin_altivec_vaddsbs");
-    pragma Export (LL_Altivec, vaddshs,     "__builtin_altivec_vaddshs");
-    pragma Export (LL_Altivec, vaddsws,     "__builtin_altivec_vaddsws");
-    pragma Export (LL_Altivec, vaddubm,     "__builtin_altivec_vaddubm");
-    pragma Export (LL_Altivec, vaddubs,     "__builtin_altivec_vaddubs");
-    pragma Export (LL_Altivec, vadduhm,     "__builtin_altivec_vadduhm");
-    pragma Export (LL_Altivec, vadduhs,     "__builtin_altivec_vadduhs");
-    pragma Export (LL_Altivec, vadduwm,     "__builtin_altivec_vadduwm");
-    pragma Export (LL_Altivec, vadduws,     "__builtin_altivec_vadduws");
-    pragma Export (LL_Altivec, vand,        "__builtin_altivec_vand");
-    pragma Export (LL_Altivec, vandc,       "__builtin_altivec_vandc");
-    pragma Export (LL_Altivec, vavgsb,      "__builtin_altivec_vavgsb");
-    pragma Export (LL_Altivec, vavgsh,      "__builtin_altivec_vavgsh");
-    pragma Export (LL_Altivec, vavgsw,      "__builtin_altivec_vavgsw");
-    pragma Export (LL_Altivec, vavgub,      "__builtin_altivec_vavgub");
-    pragma Export (LL_Altivec, vavguh,      "__builtin_altivec_vavguh");
-    pragma Export (LL_Altivec, vavguw,      "__builtin_altivec_vavguw");
-    pragma Export (LL_Altivec, vcfsx,       "__builtin_altivec_vcfsx");
-    pragma Export (LL_Altivec, vcfux,       "__builtin_altivec_vcfux");
-    pragma Export (LL_Altivec, vcmpbfp,     "__builtin_altivec_vcmpbfp");
-    pragma Export (LL_Altivec, vcmpeqfp,    "__builtin_altivec_vcmpeqfp");
-    pragma Export (LL_Altivec, vcmpequb,    "__builtin_altivec_vcmpequb");
-    pragma Export (LL_Altivec, vcmpequh,    "__builtin_altivec_vcmpequh");
-    pragma Export (LL_Altivec, vcmpequw,    "__builtin_altivec_vcmpequw");
-    pragma Export (LL_Altivec, vcmpgefp,    "__builtin_altivec_vcmpgefp");
-    pragma Export (LL_Altivec, vcmpgtfp,    "__builtin_altivec_vcmpgtfp");
-    pragma Export (LL_Altivec, vcmpgtsb,    "__builtin_altivec_vcmpgtsb");
-    pragma Export (LL_Altivec, vcmpgtsh,    "__builtin_altivec_vcmpgtsh");
-    pragma Export (LL_Altivec, vcmpgtsw,    "__builtin_altivec_vcmpgtsw");
-    pragma Export (LL_Altivec, vcmpgtub,    "__builtin_altivec_vcmpgtub");
-    pragma Export (LL_Altivec, vcmpgtuh,    "__builtin_altivec_vcmpgtuh");
-    pragma Export (LL_Altivec, vcmpgtuw,    "__builtin_altivec_vcmpgtuw");
-    pragma Export (LL_Altivec, vctsxs,      "__builtin_altivec_vctsxs");
-    pragma Export (LL_Altivec, vctuxs,      "__builtin_altivec_vctuxs");
-    pragma Export (LL_Altivec, vexptefp,    "__builtin_altivec_vexptefp");
-    pragma Export (LL_Altivec, vlogefp,     "__builtin_altivec_vlogefp");
-    pragma Export (LL_Altivec, vmaddfp,     "__builtin_altivec_vmaddfp");
-    pragma Export (LL_Altivec, vmaxfp,      "__builtin_altivec_vmaxfp");
-    pragma Export (LL_Altivec, vmaxsb,      "__builtin_altivec_vmaxsb");
-    pragma Export (LL_Altivec, vmaxsh,      "__builtin_altivec_vmaxsh");
-    pragma Export (LL_Altivec, vmaxsw,      "__builtin_altivec_vmaxsw");
-    pragma Export (LL_Altivec, vmaxub,      "__builtin_altivec_vmaxub");
-    pragma Export (LL_Altivec, vmaxuh,      "__builtin_altivec_vmaxuh");
-    pragma Export (LL_Altivec, vmaxuw,      "__builtin_altivec_vmaxuw");
-    pragma Export (LL_Altivec, vmhaddshs,   "__builtin_altivec_vmhaddshs");
-    pragma Export (LL_Altivec, vmhraddshs,  "__builtin_altivec_vmhraddshs");
-    pragma Export (LL_Altivec, vminfp,      "__builtin_altivec_vminfp");
-    pragma Export (LL_Altivec, vminsb,      "__builtin_altivec_vminsb");
-    pragma Export (LL_Altivec, vminsh,      "__builtin_altivec_vminsh");
-    pragma Export (LL_Altivec, vminsw,      "__builtin_altivec_vminsw");
-    pragma Export (LL_Altivec, vminub,      "__builtin_altivec_vminub");
-    pragma Export (LL_Altivec, vminuh,      "__builtin_altivec_vminuh");
-    pragma Export (LL_Altivec, vminuw,      "__builtin_altivec_vminuw");
-    pragma Export (LL_Altivec, vmladduhm,   "__builtin_altivec_vmladduhm");
-    pragma Export (LL_Altivec, vmrghb,      "__builtin_altivec_vmrghb");
-    pragma Export (LL_Altivec, vmrghh,      "__builtin_altivec_vmrghh");
-    pragma Export (LL_Altivec, vmrghw,      "__builtin_altivec_vmrghw");
-    pragma Export (LL_Altivec, vmrglb,      "__builtin_altivec_vmrglb");
-    pragma Export (LL_Altivec, vmrglh,      "__builtin_altivec_vmrglh");
-    pragma Export (LL_Altivec, vmrglw,      "__builtin_altivec_vmrglw");
-    pragma Export (LL_Altivec, vmsummbm,    "__builtin_altivec_vmsummbm");
-    pragma Export (LL_Altivec, vmsumshm,    "__builtin_altivec_vmsumshm");
-    pragma Export (LL_Altivec, vmsumshs,    "__builtin_altivec_vmsumshs");
-    pragma Export (LL_Altivec, vmsumubm,    "__builtin_altivec_vmsumubm");
-    pragma Export (LL_Altivec, vmsumuhm,    "__builtin_altivec_vmsumuhm");
-    pragma Export (LL_Altivec, vmsumuhs,    "__builtin_altivec_vmsumuhs");
-    pragma Export (LL_Altivec, vmulesb,     "__builtin_altivec_vmulesb");
-    pragma Export (LL_Altivec, vmulesh,     "__builtin_altivec_vmulesh");
-    pragma Export (LL_Altivec, vmuleub,     "__builtin_altivec_vmuleub");
-    pragma Export (LL_Altivec, vmuleuh,     "__builtin_altivec_vmuleuh");
-    pragma Export (LL_Altivec, vmulosb,     "__builtin_altivec_vmulosb");
-    pragma Export (LL_Altivec, vmulosh,     "__builtin_altivec_vmulosh");
-    pragma Export (LL_Altivec, vmuloub,     "__builtin_altivec_vmuloub");
-    pragma Export (LL_Altivec, vmulouh,     "__builtin_altivec_vmulouh");
-    pragma Export (LL_Altivec, vnmsubfp,    "__builtin_altivec_vnmsubfp");
-    pragma Export (LL_Altivec, vnor,        "__builtin_altivec_vnor");
-    pragma Export (LL_Altivec, vxor,        "__builtin_altivec_vxor");
-    pragma Export (LL_Altivec, vor,         "__builtin_altivec_vor");
-    pragma Export (LL_Altivec, vperm_4si,   "__builtin_altivec_vperm_4si");
-    pragma Export (LL_Altivec, vpkpx,       "__builtin_altivec_vpkpx");
-    pragma Export (LL_Altivec, vpkshss,     "__builtin_altivec_vpkshss");
-    pragma Export (LL_Altivec, vpkshus,     "__builtin_altivec_vpkshus");
-    pragma Export (LL_Altivec, vpkswss,     "__builtin_altivec_vpkswss");
-    pragma Export (LL_Altivec, vpkswus,     "__builtin_altivec_vpkswus");
-    pragma Export (LL_Altivec, vpkuhum,     "__builtin_altivec_vpkuhum");
-    pragma Export (LL_Altivec, vpkuhus,     "__builtin_altivec_vpkuhus");
-    pragma Export (LL_Altivec, vpkuwum,     "__builtin_altivec_vpkuwum");
-    pragma Export (LL_Altivec, vpkuwus,     "__builtin_altivec_vpkuwus");
-    pragma Export (LL_Altivec, vrefp,       "__builtin_altivec_vrefp");
-    pragma Export (LL_Altivec, vrfim,       "__builtin_altivec_vrfim");
-    pragma Export (LL_Altivec, vrfin,       "__builtin_altivec_vrfin");
-    pragma Export (LL_Altivec, vrfip,       "__builtin_altivec_vrfip");
-    pragma Export (LL_Altivec, vrfiz,       "__builtin_altivec_vrfiz");
-    pragma Export (LL_Altivec, vrlb,        "__builtin_altivec_vrlb");
-    pragma Export (LL_Altivec, vrlh,        "__builtin_altivec_vrlh");
-    pragma Export (LL_Altivec, vrlw,        "__builtin_altivec_vrlw");
-    pragma Export (LL_Altivec, vrsqrtefp,   "__builtin_altivec_vrsqrtefp");
-    pragma Export (LL_Altivec, vsel_4si,    "__builtin_altivec_vsel_4si");
-    pragma Export (LL_Altivec, vsldoi_4si,  "__builtin_altivec_vsldoi_4si");
-    pragma Export (LL_Altivec, vsldoi_8hi,  "__builtin_altivec_vsldoi_8hi");
-    pragma Export (LL_Altivec, vsldoi_16qi, "__builtin_altivec_vsldoi_16qi");
-    pragma Export (LL_Altivec, vsldoi_4sf,  "__builtin_altivec_vsldoi_4sf");
-    pragma Export (LL_Altivec, vsl,         "__builtin_altivec_vsl");
-    pragma Export (LL_Altivec, vslb,        "__builtin_altivec_vslb");
-    pragma Export (LL_Altivec, vslh,        "__builtin_altivec_vslh");
-    pragma Export (LL_Altivec, vslo,        "__builtin_altivec_vslo");
-    pragma Export (LL_Altivec, vslw,        "__builtin_altivec_vslw");
-    pragma Export (LL_Altivec, vspltb,      "__builtin_altivec_vspltb");
-    pragma Export (LL_Altivec, vsplth,      "__builtin_altivec_vsplth");
-    pragma Export (LL_Altivec, vspltisb,    "__builtin_altivec_vspltisb");
-    pragma Export (LL_Altivec, vspltish,    "__builtin_altivec_vspltish");
-    pragma Export (LL_Altivec, vspltisw,    "__builtin_altivec_vspltisw");
-    pragma Export (LL_Altivec, vspltw,      "__builtin_altivec_vspltw");
-    pragma Export (LL_Altivec, vsr,         "__builtin_altivec_vsr");
-    pragma Export (LL_Altivec, vsrab,       "__builtin_altivec_vsrab");
-    pragma Export (LL_Altivec, vsrah,       "__builtin_altivec_vsrah");
-    pragma Export (LL_Altivec, vsraw,       "__builtin_altivec_vsraw");
-    pragma Export (LL_Altivec, vsrb,        "__builtin_altivec_vsrb");
-    pragma Export (LL_Altivec, vsrh,        "__builtin_altivec_vsrh");
-    pragma Export (LL_Altivec, vsro,        "__builtin_altivec_vsro");
-    pragma Export (LL_Altivec, vsrw,        "__builtin_altivec_vsrw");
-    pragma Export (LL_Altivec, vsubcuw,     "__builtin_altivec_vsubcuw");
-    pragma Export (LL_Altivec, vsubfp,      "__builtin_altivec_vsubfp");
-    pragma Export (LL_Altivec, vsubsbs,     "__builtin_altivec_vsubsbs");
-    pragma Export (LL_Altivec, vsubshs,     "__builtin_altivec_vsubshs");
-    pragma Export (LL_Altivec, vsubsws,     "__builtin_altivec_vsubsws");
-    pragma Export (LL_Altivec, vsububm,     "__builtin_altivec_vsububm");
-    pragma Export (LL_Altivec, vsububs,     "__builtin_altivec_vsububs");
-    pragma Export (LL_Altivec, vsubuhm,     "__builtin_altivec_vsubuhm");
-    pragma Export (LL_Altivec, vsubuhs,     "__builtin_altivec_vsubuhs");
-    pragma Export (LL_Altivec, vsubuwm,     "__builtin_altivec_vsubuwm");
-    pragma Export (LL_Altivec, vsubuws,     "__builtin_altivec_vsubuws");
-    pragma Export (LL_Altivec, vsum2sws,    "__builtin_altivec_vsum2sws");
-    pragma Export (LL_Altivec, vsum4sbs,    "__builtin_altivec_vsum4sbs");
-    pragma Export (LL_Altivec, vsum4shs,    "__builtin_altivec_vsum4shs");
-    pragma Export (LL_Altivec, vsum4ubs,    "__builtin_altivec_vsum4ubs");
-    pragma Export (LL_Altivec, vsumsws,     "__builtin_altivec_vsumsws");
-    pragma Export (LL_Altivec, vupkhpx,     "__builtin_altivec_vupkhpx");
-    pragma Export (LL_Altivec, vupkhsb,     "__builtin_altivec_vupkhsb");
-    pragma Export (LL_Altivec, vupkhsh,     "__builtin_altivec_vupkhsh");
-    pragma Export (LL_Altivec, vupklpx,     "__builtin_altivec_vupklpx");
-    pragma Export (LL_Altivec, vupklsb,     "__builtin_altivec_vupklsb");
-    pragma Export (LL_Altivec, vupklsh,     "__builtin_altivec_vupklsh");
-    pragma Export (LL_Altivec, vcmpbfp_p,   "__builtin_altivec_vcmpbfp_p");
-    pragma Export (LL_Altivec, vcmpeqfp_p,  "__builtin_altivec_vcmpeqfp_p");
-    pragma Export (LL_Altivec, vcmpgefp_p,  "__builtin_altivec_vcmpgefp_p");
-    pragma Export (LL_Altivec, vcmpgtfp_p,  "__builtin_altivec_vcmpgtfp_p");
-    pragma Export (LL_Altivec, vcmpequw_p,  "__builtin_altivec_vcmpequw_p");
-    pragma Export (LL_Altivec, vcmpgtsw_p,  "__builtin_altivec_vcmpgtsw_p");
-    pragma Export (LL_Altivec, vcmpgtuw_p,  "__builtin_altivec_vcmpgtuw_p");
-    pragma Export (LL_Altivec, vcmpgtuh_p,  "__builtin_altivec_vcmpgtuh_p");
-    pragma Export (LL_Altivec, vcmpgtsh_p,  "__builtin_altivec_vcmpgtsh_p");
-    pragma Export (LL_Altivec, vcmpequh_p,  "__builtin_altivec_vcmpequh_p");
-    pragma Export (LL_Altivec, vcmpequb_p,  "__builtin_altivec_vcmpequb_p");
-    pragma Export (LL_Altivec, vcmpgtsb_p,  "__builtin_altivec_vcmpgtsb_p");
-    pragma Export (LL_Altivec, vcmpgtub_p,  "__builtin_altivec_vcmpgtub_p");
- 
- end GNAT.Altivec.Low_Level_Vectors;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-altcon.adb gcc-8.1.0/gcc/ada/g-altcon.adb
*** gcc-7.3.0/gcc/ada/g-altcon.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/g-altcon.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,514 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --             G N A T . A L T I V E C . C O N V E R S I O N S              --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2005-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- --
- -- 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.Unchecked_Conversion;
- 
- with System; use System;
- 
- package body GNAT.Altivec.Conversions is
- 
-    --  All the vector/view conversions operate similarly: bare unchecked
-    --  conversion on big endian targets, and elements permutation on little
-    --  endian targets. We call "Mirroring" the elements permutation process.
- 
-    --  We would like to provide a generic version of the conversion routines
-    --  and just have a set of "renaming as body" declarations to satisfy the
-    --  public interface. This unfortunately prevents inlining, which we must
-    --  preserve at least for the hard binding.
- 
-    --  We instead provide a generic version of facilities needed by all the
-    --  conversion routines and use them repeatedly.
- 
-    generic
-       type Vitem_Type is private;
- 
-       type Varray_Index_Type is range <>;
-       type Varray_Type is array (Varray_Index_Type) of Vitem_Type;
- 
-       type Vector_Type is private;
-       type View_Type is private;
- 
-    package Generic_Conversions is
- 
-       subtype Varray is Varray_Type;
-       --  This provides an easy common way to refer to the type parameter
-       --  in contexts where a specific instance of this package is "use"d.
- 
-       procedure Mirror (A : Varray_Type; Into : out Varray_Type);
-       pragma Inline (Mirror);
-       --  Mirror the elements of A into INTO, not touching the per-element
-       --  internal ordering.
- 
-       --  A procedure with an out parameter is a bit heavier to use than a
-       --  function but reduces the amount of temporary creations around the
-       --  call. Instances are typically not front-end inlined. They can still
-       --  be back-end inlined on request with the proper command-line option.
- 
-       --  Below are Unchecked Conversion routines for various purposes,
-       --  relying on internal knowledge about the bits layout in the different
-       --  types (all 128 value bits blocks).
- 
-       --  View<->Vector straight bitwise conversions on BE targets
- 
-       function UNC_To_Vector is
-          new Ada.Unchecked_Conversion (View_Type, Vector_Type);
- 
-       function UNC_To_View is
-          new Ada.Unchecked_Conversion (Vector_Type, View_Type);
- 
-       --  Varray->Vector/View for returning mirrored results on LE targets
- 
-       function UNC_To_Vector is
-          new Ada.Unchecked_Conversion (Varray_Type, Vector_Type);
- 
-       function UNC_To_View is
-          new Ada.Unchecked_Conversion (Varray_Type, View_Type);
- 
-       --  Vector/View->Varray for to-be-permuted source on LE targets
- 
-       function UNC_To_Varray is
-          new Ada.Unchecked_Conversion (Vector_Type, Varray_Type);
- 
-       function UNC_To_Varray is
-          new Ada.Unchecked_Conversion (View_Type, Varray_Type);
- 
-    end Generic_Conversions;
- 
-    package body Generic_Conversions is
- 
-       procedure Mirror (A : Varray_Type; Into : out Varray_Type) is
-       begin
-          for J in A'Range loop
-             Into (J) := A (A'Last - J + A'First);
-          end loop;
-       end Mirror;
- 
-    end Generic_Conversions;
- 
-    --  Now we declare the instances and implement the interface function
-    --  bodies simply calling the instantiated routines.
- 
-    ---------------------
-    -- Char components --
-    ---------------------
- 
-    package SC_Conversions is new Generic_Conversions
-      (signed_char, Vchar_Range, Varray_signed_char, VSC, VSC_View);
- 
-    function To_Vector (S : VSC_View) return VSC is
-       use SC_Conversions;
-    begin
-       if Default_Bit_Order = High_Order_First then
-          return UNC_To_Vector (S);
-       else
-          declare
-             M : Varray;
-          begin
-             Mirror (UNC_To_Varray (S), Into => M);
-             return UNC_To_Vector (M);
-          end;
-       end if;
-    end To_Vector;
- 
-    function To_View (S : VSC) return VSC_View is
-       use SC_Conversions;
-    begin
-       if Default_Bit_Order = High_Order_First then
-          return UNC_To_View (S);
-       else
-          declare
-             M : Varray;
-          begin
-             Mirror (UNC_To_Varray (S), Into => M);
-             return UNC_To_View (M);
-          end;
-       end if;
-    end To_View;
- 
-    --
- 
-    package UC_Conversions is new Generic_Conversions
-      (unsigned_char, Vchar_Range, Varray_unsigned_char, VUC, VUC_View);
- 
-    function To_Vector (S : VUC_View) return VUC is
-       use UC_Conversions;
-    begin
-       if Default_Bit_Order = High_Order_First then
-          return UNC_To_Vector (S);
-       else
-          declare
-             M : Varray;
-          begin
-             Mirror (UNC_To_Varray (S), Into => M);
-             return UNC_To_Vector (M);
-          end;
-       end if;
-    end To_Vector;
- 
-    function To_View (S : VUC) return VUC_View is
-       use UC_Conversions;
-    begin
-       if Default_Bit_Order = High_Order_First then
-          return UNC_To_View (S);
-       else
-          declare
-             M : Varray;
-          begin
-             Mirror (UNC_To_Varray (S), Into => M);
-             return UNC_To_View (M);
-          end;
-       end if;
-    end To_View;
- 
-    --
- 
-    package BC_Conversions is new Generic_Conversions
-      (bool_char, Vchar_Range, Varray_bool_char, VBC, VBC_View);
- 
-    function To_Vector (S : VBC_View) return VBC is
-       use BC_Conversions;
-    begin
-       if Default_Bit_Order = High_Order_First then
-          return UNC_To_Vector (S);
-       else
-          declare
-             M : Varray;
-          begin
-             Mirror (UNC_To_Varray (S), Into => M);
-             return UNC_To_Vector (M);
-          end;
-       end if;
-    end To_Vector;
- 
-    function To_View (S : VBC) return VBC_View is
-       use BC_Conversions;
-    begin
-       if Default_Bit_Order = High_Order_First then
-          return UNC_To_View (S);
-       else
-          declare
-             M : Varray;
-          begin
-             Mirror (UNC_To_Varray (S), Into => M);
-             return UNC_To_View (M);
-          end;
-       end if;
-    end To_View;
- 
-    ----------------------
-    -- Short components --
-    ----------------------
- 
-    package SS_Conversions is new Generic_Conversions
-      (signed_short, Vshort_Range, Varray_signed_short, VSS, VSS_View);
- 
-    function To_Vector (S : VSS_View) return VSS is
-       use SS_Conversions;
-    begin
-       if Default_Bit_Order = High_Order_First then
-          return UNC_To_Vector (S);
-       else
-          declare
-             M : Varray;
-          begin
-             Mirror (UNC_To_Varray (S), Into => M);
-             return UNC_To_Vector (M);
-          end;
-       end if;
-    end To_Vector;
- 
-    function To_View (S : VSS) return VSS_View is
-       use SS_Conversions;
-    begin
-       if Default_Bit_Order = High_Order_First then
-          return UNC_To_View (S);
-       else
-          declare
-             M : Varray;
-          begin
-             Mirror (UNC_To_Varray (S), Into => M);
-             return UNC_To_View (M);
-          end;
-       end if;
-    end To_View;
- 
-    --
- 
-    package US_Conversions is new Generic_Conversions
-      (unsigned_short, Vshort_Range, Varray_unsigned_short, VUS, VUS_View);
- 
-    function To_Vector (S : VUS_View) return VUS is
-       use US_Conversions;
-    begin
-       if Default_Bit_Order = High_Order_First then
-          return UNC_To_Vector (S);
-       else
-          declare
-             M : Varray;
-          begin
-             Mirror (UNC_To_Varray (S), Into => M);
-             return UNC_To_Vector (M);
-          end;
-       end if;
-    end To_Vector;
- 
-    function To_View (S : VUS) return VUS_View is
-       use US_Conversions;
-    begin
-       if Default_Bit_Order = High_Order_First then
-          return UNC_To_View (S);
-       else
-          declare
-             M : Varray;
-          begin
-             Mirror (UNC_To_Varray (S), Into => M);
-             return UNC_To_View (M);
-          end;
-       end if;
-    end To_View;
- 
-    --
- 
-    package BS_Conversions is new Generic_Conversions
-      (bool_short, Vshort_Range, Varray_bool_short, VBS, VBS_View);
- 
-    function To_Vector (S : VBS_View) return VBS is
-       use BS_Conversions;
-    begin
-       if Default_Bit_Order = High_Order_First then
-          return UNC_To_Vector (S);
-       else
-          declare
-             M : Varray;
-          begin
-             Mirror (UNC_To_Varray (S), Into => M);
-             return UNC_To_Vector (M);
-          end;
-       end if;
-    end To_Vector;
- 
-    function To_View (S : VBS) return VBS_View is
-       use BS_Conversions;
-    begin
-       if Default_Bit_Order = High_Order_First then
-          return UNC_To_View (S);
-       else
-          declare
-             M : Varray;
-          begin
-             Mirror (UNC_To_Varray (S), Into => M);
-             return UNC_To_View (M);
-          end;
-       end if;
-    end To_View;
- 
-    --------------------
-    -- Int components --
-    --------------------
- 
-    package SI_Conversions is new Generic_Conversions
-      (signed_int, Vint_Range, Varray_signed_int, VSI, VSI_View);
- 
-    function To_Vector (S : VSI_View) return VSI is
-       use SI_Conversions;
-    begin
-       if Default_Bit_Order = High_Order_First then
-          return UNC_To_Vector (S);
-       else
-          declare
-             M : Varray;
-          begin
-             Mirror (UNC_To_Varray (S), Into => M);
-             return UNC_To_Vector (M);
-          end;
-       end if;
-    end To_Vector;
- 
-    function To_View (S : VSI) return VSI_View is
-       use SI_Conversions;
-    begin
-       if Default_Bit_Order = High_Order_First then
-          return UNC_To_View (S);
-       else
-          declare
-             M : Varray;
-          begin
-             Mirror (UNC_To_Varray (S), Into => M);
-             return UNC_To_View (M);
-          end;
-       end if;
-    end To_View;
- 
-    --
- 
-    package UI_Conversions is new Generic_Conversions
-      (unsigned_int, Vint_Range, Varray_unsigned_int, VUI, VUI_View);
- 
-    function To_Vector (S : VUI_View) return VUI is
-       use UI_Conversions;
-    begin
-       if Default_Bit_Order = High_Order_First then
-          return UNC_To_Vector (S);
-       else
-          declare
-             M : Varray;
-          begin
-             Mirror (UNC_To_Varray (S), Into => M);
-             return UNC_To_Vector (M);
-          end;
-       end if;
-    end To_Vector;
- 
-    function To_View (S : VUI) return VUI_View is
-       use UI_Conversions;
-    begin
-       if Default_Bit_Order = High_Order_First then
-          return UNC_To_View (S);
-       else
-          declare
-             M : Varray;
-          begin
-             Mirror (UNC_To_Varray (S), Into => M);
-             return UNC_To_View (M);
-          end;
-       end if;
-    end To_View;
- 
-    --
- 
-    package BI_Conversions is new Generic_Conversions
-      (bool_int, Vint_Range, Varray_bool_int, VBI, VBI_View);
- 
-    function To_Vector (S : VBI_View) return VBI is
-       use BI_Conversions;
-    begin
-       if Default_Bit_Order = High_Order_First then
-          return UNC_To_Vector (S);
-       else
-          declare
-             M : Varray;
-          begin
-             Mirror (UNC_To_Varray (S), Into => M);
-             return UNC_To_Vector (M);
-          end;
-       end if;
-    end To_Vector;
- 
-    function To_View (S : VBI) return VBI_View is
-       use BI_Conversions;
-    begin
-       if Default_Bit_Order = High_Order_First then
-          return UNC_To_View (S);
-       else
-          declare
-             M : Varray;
-          begin
-             Mirror (UNC_To_Varray (S), Into => M);
-             return UNC_To_View (M);
-          end;
-       end if;
-    end To_View;
- 
-    ----------------------
-    -- Float components --
-    ----------------------
- 
-    package F_Conversions is new Generic_Conversions
-      (C_float, Vfloat_Range, Varray_float, VF, VF_View);
- 
-    function To_Vector (S : VF_View) return VF is
-       use F_Conversions;
-    begin
-       if Default_Bit_Order = High_Order_First then
-          return UNC_To_Vector (S);
-       else
-          declare
-             M : Varray;
-          begin
-             Mirror (UNC_To_Varray (S), Into => M);
-             return UNC_To_Vector (M);
-          end;
-       end if;
-    end To_Vector;
- 
-    function To_View (S : VF) return VF_View is
-       use F_Conversions;
-    begin
-       if Default_Bit_Order = High_Order_First then
-          return UNC_To_View (S);
-       else
-          declare
-             M : Varray;
-          begin
-             Mirror (UNC_To_Varray (S), Into => M);
-             return UNC_To_View (M);
-          end;
-       end if;
-    end To_View;
- 
-    ----------------------
-    -- Pixel components --
-    ----------------------
- 
-    package P_Conversions is new Generic_Conversions
-      (pixel, Vpixel_Range, Varray_pixel, VP, VP_View);
- 
-    function To_Vector (S : VP_View) return VP is
-       use P_Conversions;
-    begin
-       if Default_Bit_Order = High_Order_First then
-          return UNC_To_Vector (S);
-       else
-          declare
-             M : Varray;
-          begin
-             Mirror (UNC_To_Varray (S), Into => M);
-             return UNC_To_Vector (M);
-          end;
-       end if;
-    end To_Vector;
- 
-    function To_View (S : VP) return VP_View is
-       use P_Conversions;
-    begin
-       if Default_Bit_Order = High_Order_First then
-          return UNC_To_View (S);
-       else
-          declare
-             M : Varray;
-          begin
-             Mirror (UNC_To_Varray (S), Into => M);
-             return UNC_To_View (M);
-          end;
-       end if;
-    end To_View;
- 
- end GNAT.Altivec.Conversions;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-altcon.ads gcc-8.1.0/gcc/ada/g-altcon.ads
*** gcc-7.3.0/gcc/ada/g-altcon.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/g-altcon.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,101 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --             G N A T . A L T I V E C . C O N V E R S I O N S              --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --            Copyright (C) 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- --
- -- 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 unit provides the Vector/Views conversions
- 
- with GNAT.Altivec.Vector_Types; use GNAT.Altivec.Vector_Types;
- with GNAT.Altivec.Vector_Views; use GNAT.Altivec.Vector_Views;
- 
- package GNAT.Altivec.Conversions is
- 
-    ---------------------
-    -- char components --
-    ---------------------
- 
-    function To_Vector (S : VUC_View) return VUC;
-    function To_Vector (S : VSC_View) return VSC;
-    function To_Vector (S : VBC_View) return VBC;
- 
-    function To_View (S : VUC) return VUC_View;
-    function To_View (S : VSC) return VSC_View;
-    function To_View (S : VBC) return VBC_View;
- 
-    ----------------------
-    -- short components --
-    ----------------------
- 
-    function To_Vector (S : VUS_View) return VUS;
-    function To_Vector (S : VSS_View) return VSS;
-    function To_Vector (S : VBS_View) return VBS;
- 
-    function To_View (S : VUS) return VUS_View;
-    function To_View (S : VSS) return VSS_View;
-    function To_View (S : VBS) return VBS_View;
- 
-    --------------------
-    -- int components --
-    --------------------
- 
-    function To_Vector (S : VUI_View) return VUI;
-    function To_Vector (S : VSI_View) return VSI;
-    function To_Vector (S : VBI_View) return VBI;
- 
-    function To_View (S : VUI) return VUI_View;
-    function To_View (S : VSI) return VSI_View;
-    function To_View (S : VBI) return VBI_View;
- 
-    ----------------------
-    -- float components --
-    ----------------------
- 
-    function To_Vector (S : VF_View) return VF;
- 
-    function To_View (S : VF) return VF_View;
- 
-    ----------------------
-    -- pixel components --
-    ----------------------
- 
-    function To_Vector (S : VP_View) return VP;
- 
-    function To_View (S : VP) return VP_View;
- 
- private
- 
-    --  We want the above subprograms to always be inlined in the case of the
-    --  hard PowerPC AltiVec support in order to avoid the unnecessary function
-    --  call. On the other hand there is no problem with inlining these
-    --  subprograms on little-endian targets.
- 
-    pragma Inline_Always (To_Vector);
-    pragma Inline_Always (To_View);
- 
- end GNAT.Altivec.Conversions;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-altive.ads gcc-8.1.0/gcc/ada/g-altive.ads
*** gcc-7.3.0/gcc/ada/g-altive.ads	Thu Aug  4 11:57:38 2011
--- gcc-8.1.0/gcc/ada/g-altive.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,427 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                         G N A T . A L T I V E C                          --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2004-2011, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- -------------------------
- -- General description --
- -------------------------
- 
- --  This is the root of a package hierarchy offering an Ada binding to the
- --  PowerPC AltiVec extensions, a set of 128bit vector types together with a
- --  set of subprograms operating on them. Relevant documents are:
- 
- --  o AltiVec Technology, Programming Interface Manual (1999-06)
- --    to which we will refer as [PIM], describes the data types, the
- --    functional interface and the ABI conventions.
- 
- --  o AltiVec Technology, Programming Environments Manual (2002-02)
- --    to which we will refer as [PEM], describes the hardware architecture
- --    and instruction set.
- 
- --  These documents, as well as a number of others of general interest on the
- --  AltiVec technology, are available from the Motorola/AltiVec Web site at:
- 
- --  http://www.freescale.com/altivec
- 
- --  The binding interface is structured to allow alternate implementations:
- --  for real AltiVec capable targets, and for other targets. In the latter
- --  case, everything is emulated in software. The two versions are referred
- --  to as:
- 
- --  o The Hard binding for AltiVec capable targets (with the appropriate
- --    hardware support and corresponding instruction set)
- 
- --  o The Soft binding for other targets (with the low level primitives
- --    emulated in software).
- 
- --  In addition, interfaces that are not strictly part of the base AltiVec API
- --  are provided, such as vector conversions to and from array representations,
- --  which are of interest for client applications (e.g. for vector
- --  initialization purposes).
- 
- --  Only the soft binding is available today
- 
- -----------------------------------------
- -- General package architecture survey --
- -----------------------------------------
- 
- --  The various vector representations are all "containers" of elementary
- --  values, the possible types of which are declared in this root package to
- --  be generally accessible.
- 
- --  From the user standpoint, the binding materializes as a consistent
- --  hierarchy of units:
- 
- --                             GNAT.Altivec
- --                           (component types)
- --                                   |
- --          o----------------o----------------o-------------o
- --          |                |                |             |
- --    Vector_Types   Vector_Operations   Vector_Views   Conversions
- 
- --  The user can manipulate vectors through two families of types: Vector
- --  types and View types.
- 
- --  Vector types are defined in the GNAT.Altivec.Vector_Types package
- 
- --  On these types, users can apply the Altivec operations defined in
- --  GNAT.Altivec.Vector_Operations. Their layout is opaque and may vary across
- --  configurations, for it is typically target-endianness dependant.
- 
- --  Vector_Types and Vector_Operations implement the core binding to the
- --  AltiVec API, as described in [PIM-2.1 data types] and [PIM-4 AltiVec
- --  operations and predicates].
- 
- --  View types are defined in the GNAT.Altivec.Vector_Views package
- 
- --  These types do not represent Altivec vectors per se, in the sense that the
- --  Altivec_Operations are not available for them. They are intended to allow
- --  Vector initializations as well as access to the Vector component values.
- 
- --  The GNAT.Altivec.Conversions package is provided to convert a View to the
- --  corresponding Vector and vice-versa.
- 
- ---------------------------
- -- Underlying principles --
- ---------------------------
- 
- --  Internally, the binding relies on an abstraction of the Altivec API, a
- --  rich set of functions around a core of low level primitives mapping to
- --  AltiVec instructions. See for instance "vec_add" in [PIM-4.4 Generic and
- --  Specific AltiVec operations], with no less than six result/arguments
- --  combinations of byte vector types that map to "vaddubm".
- 
- --  The "soft" version is a software emulation of the low level primitives.
- 
- --  The "hard" version would map to real AltiVec instructions via GCC builtins
- --  and inlining.
- 
- -------------------
- -- Example usage --
- -------------------
- 
- --  Here is a sample program declaring and initializing two vectors, 'add'ing
- --  them and displaying the result components:
- 
- --  with GNAT.Altivec.Vector_Types;      use GNAT.Altivec.Vector_Types;
- --  with GNAT.Altivec.Vector_Operations; use GNAT.Altivec.Vector_Operations;
- --  with GNAT.Altivec.Vector_Views;      use GNAT.Altivec.Vector_Views;
- --  with GNAT.Altivec.Conversions;       use GNAT.Altivec.Conversions;
- 
- --  use GNAT.Altivec;
- 
- --  with Ada.Text_IO; use Ada.Text_IO;
- 
- --  procedure Sample is
- --     Va : Vector_Unsigned_Int := To_Vector ((Values => (1, 2, 3, 4)));
- --     Vb : Vector_Unsigned_Int := To_Vector ((Values => (1, 2, 3, 4)));
- 
- --     Vs : Vector_Unsigned_Int;
- --     Vs_View : VUI_View;
- --  begin
- --     Vs := Vec_Add (Va, Vb);
- --     Vs_View := To_View (Vs);
- 
- --     for I in Vs_View.Values'Range loop
- --        Put_Line (Unsigned_Int'Image (Vs_View.Values (I)));
- --     end loop;
- --  end;
- 
- --  $ gnatmake sample.adb
- --  [...]
- --  $ ./sample
- --  2
- --  4
- --  6
- --  8
- 
- ------------------------------------------------------------------------------
- 
- with System;
- 
- package GNAT.Altivec is
- 
-    --  Definitions of constants and vector/array component types common to all
-    --  the versions of the binding.
- 
-    --  All the vector types are 128bits
- 
-    VECTOR_BIT : constant := 128;
- 
-    -------------------------------------------
-    -- [PIM-2.3.1 Alignment of vector types] --
-    -------------------------------------------
- 
-    --  "A defined data item of any vector data type in memory is always
-    --  aligned on a 16-byte boundary. A pointer to any vector data type always
-    --  points to a 16-byte boundary. The compiler is responsible for aligning
-    --  vector data types on 16-byte boundaries."
- 
-    VECTOR_ALIGNMENT : constant := Natural'Min (16, Standard'Maximum_Alignment);
-    --  This value is used to set the alignment of vector datatypes in both the
-    --  hard and the soft binding implementations.
-    --
-    --  We want this value to never be greater than 16, because none of the
-    --  binding implementations requires larger alignments and such a value
-    --  would cause useless space to be allocated/wasted for vector objects.
-    --  Furthermore, the alignment of 16 matches the hard binding leading to
-    --  a more faithful emulation.
-    --
-    --  It needs to be exactly 16 for the hard binding, and the initializing
-    --  expression is just right for this purpose since Maximum_Alignment is
-    --  expected to be 16 for the real Altivec ABI.
-    --
-    --  The soft binding doesn't rely on strict 16byte alignment, and we want
-    --  the value to be no greater than Standard'Maximum_Alignment in this case
-    --  to ensure it is supported on every possible target.
- 
-    -------------------------------------------------------
-    -- [PIM-2.1] Data Types - Interpretation of contents --
-    -------------------------------------------------------
- 
-    ---------------------
-    -- char components --
-    ---------------------
- 
-    CHAR_BIT    : constant := 8;
-    SCHAR_MIN   : constant := -2 ** (CHAR_BIT - 1);
-    SCHAR_MAX   : constant := 2 ** (CHAR_BIT - 1) - 1;
-    UCHAR_MAX   : constant := 2 ** CHAR_BIT - 1;
- 
-    type unsigned_char is mod UCHAR_MAX + 1;
-    for unsigned_char'Size use CHAR_BIT;
- 
-    type signed_char is range SCHAR_MIN .. SCHAR_MAX;
-    for signed_char'Size use CHAR_BIT;
- 
-    subtype bool_char is unsigned_char;
-    --  ??? There is a difference here between what the Altivec Technology
-    --  Programming Interface Manual says and what GCC says. In the manual,
-    --  vector_bool_char is a vector_unsigned_char, while in altivec.h it
-    --  is a vector_signed_char.
- 
-    bool_char_True  : constant bool_char := bool_char'Last;
-    bool_char_False : constant bool_char := 0;
- 
-    ----------------------
-    -- short components --
-    ----------------------
- 
-    SHORT_BIT   : constant := 16;
-    SSHORT_MIN  : constant := -2 ** (SHORT_BIT - 1);
-    SSHORT_MAX  : constant := 2 ** (SHORT_BIT - 1) - 1;
-    USHORT_MAX  : constant := 2 ** SHORT_BIT - 1;
- 
-    type unsigned_short is mod USHORT_MAX + 1;
-    for unsigned_short'Size use SHORT_BIT;
- 
-    subtype unsigned_short_int is unsigned_short;
- 
-    type signed_short is range SSHORT_MIN .. SSHORT_MAX;
-    for signed_short'Size use SHORT_BIT;
- 
-    subtype signed_short_int is signed_short;
- 
-    subtype bool_short is unsigned_short;
-    --  ??? See bool_char
- 
-    bool_short_True  : constant bool_short := bool_short'Last;
-    bool_short_False : constant bool_short := 0;
- 
-    subtype bool_short_int is bool_short;
- 
-    --------------------
-    -- int components --
-    --------------------
- 
-    INT_BIT     : constant := 32;
-    SINT_MIN    : constant := -2 ** (INT_BIT - 1);
-    SINT_MAX    : constant := 2 ** (INT_BIT - 1) - 1;
-    UINT_MAX    : constant := 2 ** INT_BIT - 1;
- 
-    type unsigned_int is mod UINT_MAX + 1;
-    for unsigned_int'Size use INT_BIT;
- 
-    type signed_int is range SINT_MIN .. SINT_MAX;
-    for signed_int'Size use INT_BIT;
- 
-    subtype bool_int is unsigned_int;
-    --  ??? See bool_char
- 
-    bool_int_True  : constant bool_int := bool_int'Last;
-    bool_int_False : constant bool_int := 0;
- 
-    ----------------------
-    -- float components --
-    ----------------------
- 
-    FLOAT_BIT   : constant := 32;
-    FLOAT_DIGIT : constant := 6;
-    FLOAT_MIN   : constant := -16#0.FFFF_FF#E+32;
-    FLOAT_MAX   : constant := 16#0.FFFF_FF#E+32;
- 
-    type C_float is digits FLOAT_DIGIT range FLOAT_MIN .. FLOAT_MAX;
-    for C_float'Size use FLOAT_BIT;
-    --  Altivec operations always use the standard native floating-point
-    --  support of the target. Note that this means that there may be
-    --  minor differences in results between targets when the floating-
-    --  point implementations are slightly different, as would happen
-    --  with normal non-Altivec floating-point operations. In particular
-    --  the Altivec simulations may yield slightly different results
-    --  from those obtained on a true hardware Altivec target if the
-    --  floating-point implementation is not 100% compatible.
- 
-    ----------------------
-    -- pixel components --
-    ----------------------
- 
-    subtype pixel is unsigned_short;
- 
-    -----------------------------------------------------------
-    -- Subtypes for variants found in the GCC implementation --
-    -----------------------------------------------------------
- 
-    subtype c_int is signed_int;
-    subtype c_short is c_int;
- 
-    LONG_BIT  : constant := 32;
-    --  Some of the GCC builtins are built with "long" arguments and
-    --  expect SImode to come in.
- 
-    SLONG_MIN : constant := -2 ** (LONG_BIT - 1);
-    SLONG_MAX : constant :=  2 ** (LONG_BIT - 1) - 1;
-    ULONG_MAX : constant :=  2 ** LONG_BIT - 1;
- 
-    type signed_long   is range SLONG_MIN .. SLONG_MAX;
-    type unsigned_long is mod ULONG_MAX + 1;
- 
-    subtype c_long is signed_long;
- 
-    subtype c_ptr is System.Address;
- 
-    ---------------------------------------------------------
-    -- Access types, for the sake of some argument passing --
-    ---------------------------------------------------------
- 
-    type signed_char_ptr    is access all signed_char;
-    type unsigned_char_ptr  is access all unsigned_char;
- 
-    type short_ptr          is access all c_short;
-    type signed_short_ptr   is access all signed_short;
-    type unsigned_short_ptr is access all unsigned_short;
- 
-    type int_ptr            is access all c_int;
-    type signed_int_ptr     is access all signed_int;
-    type unsigned_int_ptr   is access all unsigned_int;
- 
-    type long_ptr           is access all c_long;
-    type signed_long_ptr    is access all signed_long;
-    type unsigned_long_ptr  is access all unsigned_long;
- 
-    type float_ptr          is access all Float;
- 
-    --
- 
-    type const_signed_char_ptr    is access constant signed_char;
-    type const_unsigned_char_ptr  is access constant unsigned_char;
- 
-    type const_short_ptr          is access constant c_short;
-    type const_signed_short_ptr   is access constant signed_short;
-    type const_unsigned_short_ptr is access constant unsigned_short;
- 
-    type const_int_ptr            is access constant c_int;
-    type const_signed_int_ptr     is access constant signed_int;
-    type const_unsigned_int_ptr   is access constant unsigned_int;
- 
-    type const_long_ptr           is access constant c_long;
-    type const_signed_long_ptr    is access constant signed_long;
-    type const_unsigned_long_ptr  is access constant unsigned_long;
- 
-    type const_float_ptr          is access constant Float;
- 
-    --  Access to const volatile arguments need specialized types
- 
-    type volatile_float is new Float;
-    pragma Volatile (volatile_float);
- 
-    type volatile_signed_char is new signed_char;
-    pragma Volatile (volatile_signed_char);
- 
-    type volatile_unsigned_char is new unsigned_char;
-    pragma Volatile (volatile_unsigned_char);
- 
-    type volatile_signed_short is new signed_short;
-    pragma Volatile (volatile_signed_short);
- 
-    type volatile_unsigned_short is new unsigned_short;
-    pragma Volatile (volatile_unsigned_short);
- 
-    type volatile_signed_int is new signed_int;
-    pragma Volatile (volatile_signed_int);
- 
-    type volatile_unsigned_int is new unsigned_int;
-    pragma Volatile (volatile_unsigned_int);
- 
-    type volatile_signed_long is new signed_long;
-    pragma Volatile (volatile_signed_long);
- 
-    type volatile_unsigned_long is new unsigned_long;
-    pragma Volatile (volatile_unsigned_long);
- 
-    type constv_char_ptr           is access constant volatile_signed_char;
-    type constv_signed_char_ptr    is access constant volatile_signed_char;
-    type constv_unsigned_char_ptr  is access constant volatile_unsigned_char;
- 
-    type constv_short_ptr          is access constant volatile_signed_short;
-    type constv_signed_short_ptr   is access constant volatile_signed_short;
-    type constv_unsigned_short_ptr is access constant volatile_unsigned_short;
- 
-    type constv_int_ptr            is access constant volatile_signed_int;
-    type constv_signed_int_ptr     is access constant volatile_signed_int;
-    type constv_unsigned_int_ptr   is access constant volatile_unsigned_int;
- 
-    type constv_long_ptr           is access constant volatile_signed_long;
-    type constv_signed_long_ptr    is access constant volatile_signed_long;
-    type constv_unsigned_long_ptr  is access constant volatile_unsigned_long;
- 
-    type constv_float_ptr  is access constant volatile_float;
- 
- private
- 
-    -----------------------
-    -- Various constants --
-    -----------------------
- 
-    CR6_EQ     : constant := 0;
-    CR6_EQ_REV : constant := 1;
-    CR6_LT     : constant := 2;
-    CR6_LT_REV : constant := 3;
- 
- end GNAT.Altivec;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-alveop.adb gcc-8.1.0/gcc/ada/g-alveop.adb
*** gcc-7.3.0/gcc/ada/g-alveop.adb	Fri Feb 20 14:35:51 2015
--- gcc-8.1.0/gcc/ada/g-alveop.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,11008 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --       G N A T . A L T I V E C . V E C T O R _ O P E R A T I O N S        --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --           Copyright (C) 2004-2015, Free Software Foundation, Inc.        --
- --                                                                          --
- -- GNAT is 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 GNAT.Altivec.Low_Level_Interface; use GNAT.Altivec.Low_Level_Interface;
- 
- package body GNAT.Altivec.Vector_Operations is
- 
-    --------------------------------------------------------
-    -- Bodies for generic and specific Altivec operations --
-    --------------------------------------------------------
- 
-    -------------
-    -- vec_abs --
-    -------------
- 
-    function vec_abs
-      (A : vector_signed_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (abs_v16qi (A));
-    end vec_abs;
- 
-    function vec_abs
-      (A : vector_signed_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (abs_v8hi (A));
-    end vec_abs;
- 
-    function vec_abs
-      (A : vector_signed_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (abs_v4si (A));
-    end vec_abs;
- 
-    function vec_abs
-      (A : vector_float) return vector_float
-    is
-    begin
-       return To_LL_VF (abs_v4sf (A));
-    end vec_abs;
- 
-    --------------
-    -- vec_abss --
-    --------------
- 
-    function vec_abss
-      (A : vector_signed_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (abss_v16qi (A));
-    end vec_abss;
- 
-    function vec_abss
-      (A : vector_signed_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (abss_v8hi (A));
-    end vec_abss;
- 
-    function vec_abss
-      (A : vector_signed_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (abss_v4si (A));
-    end vec_abss;
- 
-    -------------
-    -- vec_add --
-    -------------
- 
-    function vec_add
-      (A : vector_bool_char;
-       B : vector_signed_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vaddubm (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_add;
- 
-    function vec_add
-      (A : vector_signed_char;
-       B : vector_bool_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vaddubm (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_add;
- 
-    function vec_add
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vaddubm (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_add;
- 
-    function vec_add
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vaddubm (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_add;
- 
-    function vec_add
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vaddubm (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_add;
- 
-    function vec_add
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vaddubm (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_add;
- 
-    function vec_add
-      (A : vector_bool_short;
-       B : vector_signed_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vadduhm (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_add;
- 
-    function vec_add
-      (A : vector_signed_short;
-       B : vector_bool_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vadduhm (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_add;
- 
-    function vec_add
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vadduhm (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_add;
- 
-    function vec_add
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vadduhm (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_add;
- 
-    function vec_add
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vadduhm (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_add;
- 
-    function vec_add
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vadduhm (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_add;
- 
-    function vec_add
-      (A : vector_bool_int;
-       B : vector_signed_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vadduwm (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_add;
- 
-    function vec_add
-      (A : vector_signed_int;
-       B : vector_bool_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vadduwm (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_add;
- 
-    function vec_add
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vadduwm (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_add;
- 
-    function vec_add
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vadduwm (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_add;
- 
-    function vec_add
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vadduwm (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_add;
- 
-    function vec_add
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vadduwm (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_add;
- 
-    function vec_add
-      (A : vector_float;
-       B : vector_float) return vector_float
-    is
-    begin
-       return To_LL_VF  (vaddfp (To_LL_VF  (A), To_LL_VF  (B)));
-    end vec_add;
- 
-    ----------------
-    -- vec_vaddfp --
-    ----------------
- 
-    function vec_vaddfp
-      (A : vector_float;
-       B : vector_float) return vector_float
-    is
-    begin
-       return To_LL_VF  (vaddfp (To_LL_VF  (A), To_LL_VF  (B)));
-    end vec_vaddfp;
- 
-    -----------------
-    -- vec_vadduwm --
-    -----------------
- 
-    function vec_vadduwm
-      (A : vector_bool_int;
-       B : vector_signed_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vadduwm (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vadduwm;
- 
-    function vec_vadduwm
-      (A : vector_signed_int;
-       B : vector_bool_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vadduwm (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vadduwm;
- 
-    function vec_vadduwm
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vadduwm (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vadduwm;
- 
-    function vec_vadduwm
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vadduwm (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vadduwm;
- 
-    function vec_vadduwm
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vadduwm (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vadduwm;
- 
-    function vec_vadduwm
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vadduwm (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vadduwm;
- 
-    -----------------
-    -- vec_vadduhm --
-    -----------------
- 
-    function vec_vadduhm
-      (A : vector_bool_short;
-       B : vector_signed_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vadduhm (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vadduhm;
- 
-    function vec_vadduhm
-      (A : vector_signed_short;
-       B : vector_bool_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vadduhm (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vadduhm;
- 
-    function vec_vadduhm
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vadduhm (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vadduhm;
- 
-    function vec_vadduhm
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vadduhm (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vadduhm;
- 
-    function vec_vadduhm
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vadduhm (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vadduhm;
- 
-    function vec_vadduhm
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vadduhm (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vadduhm;
- 
-    -----------------
-    -- vec_vaddubm --
-    -----------------
- 
-    function vec_vaddubm
-      (A : vector_bool_char;
-       B : vector_signed_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vaddubm (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vaddubm;
- 
-    function vec_vaddubm
-      (A : vector_signed_char;
-       B : vector_bool_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vaddubm (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vaddubm;
- 
-    function vec_vaddubm
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vaddubm (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vaddubm;
- 
-    function vec_vaddubm
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vaddubm (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vaddubm;
- 
-    function vec_vaddubm
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vaddubm (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vaddubm;
- 
-    function vec_vaddubm
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vaddubm (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vaddubm;
- 
-    --------------
-    -- vec_addc --
-    --------------
- 
-    function vec_addc
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vaddcuw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_addc;
- 
-    --------------
-    -- vec_adds --
-    --------------
- 
-    function vec_adds
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vaddubs (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_adds;
- 
-    function vec_adds
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vaddubs (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_adds;
- 
-    function vec_adds
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vaddubs (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_adds;
- 
-    function vec_adds
-      (A : vector_bool_char;
-       B : vector_signed_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vaddsbs (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_adds;
- 
-    function vec_adds
-      (A : vector_signed_char;
-       B : vector_bool_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vaddsbs (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_adds;
- 
-    function vec_adds
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vaddsbs (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_adds;
- 
-    function vec_adds
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vadduhs (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_adds;
- 
-    function vec_adds
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vadduhs (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_adds;
- 
-    function vec_adds
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vadduhs (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_adds;
- 
-    function vec_adds
-      (A : vector_bool_short;
-       B : vector_signed_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vaddshs (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_adds;
- 
-    function vec_adds
-      (A : vector_signed_short;
-       B : vector_bool_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vaddshs (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_adds;
- 
-    function vec_adds
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vaddshs (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_adds;
- 
-    function vec_adds
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vadduws (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_adds;
- 
-    function vec_adds
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vadduws (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_adds;
- 
-    function vec_adds
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vadduws (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_adds;
- 
-    function vec_adds
-      (A : vector_bool_int;
-       B : vector_signed_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vaddsws (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_adds;
- 
-    function vec_adds
-      (A : vector_signed_int;
-       B : vector_bool_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vaddsws (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_adds;
- 
-    function vec_adds
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vaddsws (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_adds;
- 
-    -----------------
-    -- vec_vaddsws --
-    -----------------
- 
-    function vec_vaddsws
-      (A : vector_bool_int;
-       B : vector_signed_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vaddsws (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vaddsws;
- 
-    function vec_vaddsws
-      (A : vector_signed_int;
-       B : vector_bool_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vaddsws (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vaddsws;
- 
-    function vec_vaddsws
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vaddsws (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vaddsws;
- 
-    -----------------
-    -- vec_vadduws --
-    -----------------
- 
-    function vec_vadduws
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vadduws (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vadduws;
- 
-    function vec_vadduws
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vadduws (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vadduws;
- 
-    function vec_vadduws
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vadduws (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vadduws;
- 
-    -----------------
-    -- vec_vaddshs --
-    -----------------
- 
-    function vec_vaddshs
-      (A : vector_bool_short;
-       B : vector_signed_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vaddshs (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vaddshs;
- 
-    function vec_vaddshs
-      (A : vector_signed_short;
-       B : vector_bool_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vaddshs (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vaddshs;
- 
-    function vec_vaddshs
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vaddshs (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vaddshs;
- 
-    -----------------
-    -- vec_vadduhs --
-    -----------------
- 
-    function vec_vadduhs
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vadduhs (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vadduhs;
- 
-    function vec_vadduhs
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vadduhs (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vadduhs;
- 
-    function vec_vadduhs
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vadduhs (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vadduhs;
- 
-    -----------------
-    -- vec_vaddsbs --
-    -----------------
- 
-    function vec_vaddsbs
-      (A : vector_bool_char;
-       B : vector_signed_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vaddsbs (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vaddsbs;
- 
-    function vec_vaddsbs
-      (A : vector_signed_char;
-       B : vector_bool_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vaddsbs (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vaddsbs;
- 
-    function vec_vaddsbs
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vaddsbs (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vaddsbs;
- 
-    -----------------
-    -- vec_vaddubs --
-    -----------------
- 
-    function vec_vaddubs
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vaddubs (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vaddubs;
- 
-    function vec_vaddubs
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vaddubs (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vaddubs;
- 
-    function vec_vaddubs
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vaddubs (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vaddubs;
- 
-    -------------
-    -- vec_and --
-    -------------
- 
-    function vec_and
-      (A : vector_float;
-       B : vector_float) return vector_float
-    is
-    begin
-       return To_LL_VF  (vand (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_and;
- 
-    function vec_and
-      (A : vector_float;
-       B : vector_bool_int) return vector_float
-    is
-    begin
-       return To_LL_VF  (vand (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_and;
- 
-    function vec_and
-      (A : vector_bool_int;
-       B : vector_float) return vector_float
-    is
-    begin
-       return To_LL_VF  (vand (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_and;
- 
-    function vec_and
-      (A : vector_bool_int;
-       B : vector_bool_int) return vector_bool_int
-    is
-    begin
-       return To_LL_VBI (vand (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_and;
- 
-    function vec_and
-      (A : vector_bool_int;
-       B : vector_signed_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vand (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_and;
- 
-    function vec_and
-      (A : vector_signed_int;
-       B : vector_bool_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vand (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_and;
- 
-    function vec_and
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vand (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_and;
- 
-    function vec_and
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vand (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_and;
- 
-    function vec_and
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vand (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_and;
- 
-    function vec_and
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vand (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_and;
- 
-    function vec_and
-      (A : vector_bool_short;
-       B : vector_bool_short) return vector_bool_short
-    is
-    begin
-       return To_LL_VBS (vand (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_and;
- 
-    function vec_and
-      (A : vector_bool_short;
-       B : vector_signed_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vand (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_and;
- 
-    function vec_and
-      (A : vector_signed_short;
-       B : vector_bool_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vand (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_and;
- 
-    function vec_and
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vand (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_and;
- 
-    function vec_and
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vand (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_and;
- 
-    function vec_and
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vand (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_and;
- 
-    function vec_and
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vand (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_and;
- 
-    function vec_and
-      (A : vector_bool_char;
-       B : vector_signed_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vand (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_and;
- 
-    function vec_and
-      (A : vector_bool_char;
-       B : vector_bool_char) return vector_bool_char
-    is
-    begin
-       return To_LL_VBC (vand (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_and;
- 
-    function vec_and
-      (A : vector_signed_char;
-       B : vector_bool_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vand (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_and;
- 
-    function vec_and
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vand (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_and;
- 
-    function vec_and
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vand (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_and;
- 
-    function vec_and
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vand (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_and;
- 
-    function vec_and
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vand (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_and;
- 
-    --------------
-    -- vec_andc --
-    --------------
- 
-    function vec_andc
-      (A : vector_float;
-       B : vector_float) return vector_float
-    is
-    begin
-       return To_LL_VF  (vandc (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_andc;
- 
-    function vec_andc
-      (A : vector_float;
-       B : vector_bool_int) return vector_float
-    is
-    begin
-       return To_LL_VF  (vandc (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_andc;
- 
-    function vec_andc
-      (A : vector_bool_int;
-       B : vector_float) return vector_float
-    is
-    begin
-       return To_LL_VF  (vandc (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_andc;
- 
-    function vec_andc
-      (A : vector_bool_int;
-       B : vector_bool_int) return vector_bool_int
-    is
-    begin
-       return To_LL_VBI (vandc (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_andc;
- 
-    function vec_andc
-      (A : vector_bool_int;
-       B : vector_signed_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vandc (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_andc;
- 
-    function vec_andc
-      (A : vector_signed_int;
-       B : vector_bool_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vandc (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_andc;
- 
-    function vec_andc
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vandc (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_andc;
- 
-    function vec_andc
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vandc (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_andc;
- 
-    function vec_andc
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vandc (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_andc;
- 
-    function vec_andc
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vandc (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_andc;
- 
-    function vec_andc
-      (A : vector_bool_short;
-       B : vector_bool_short) return vector_bool_short
-    is
-    begin
-       return To_LL_VBS (vandc (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_andc;
- 
-    function vec_andc
-      (A : vector_bool_short;
-       B : vector_signed_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vandc (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_andc;
- 
-    function vec_andc
-      (A : vector_signed_short;
-       B : vector_bool_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vandc (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_andc;
- 
-    function vec_andc
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vandc (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_andc;
- 
-    function vec_andc
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vandc (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_andc;
- 
-    function vec_andc
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vandc (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_andc;
- 
-    function vec_andc
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vandc (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_andc;
- 
-    function vec_andc
-      (A : vector_bool_char;
-       B : vector_signed_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vandc (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_andc;
- 
-    function vec_andc
-      (A : vector_bool_char;
-       B : vector_bool_char) return vector_bool_char
-    is
-    begin
-       return To_LL_VBC (vandc (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_andc;
- 
-    function vec_andc
-      (A : vector_signed_char;
-       B : vector_bool_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vandc (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_andc;
- 
-    function vec_andc
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vandc (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_andc;
- 
-    function vec_andc
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vandc (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_andc;
- 
-    function vec_andc
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vandc (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_andc;
- 
-    function vec_andc
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vandc (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_andc;
- 
-    -------------
-    -- vec_avg --
-    -------------
- 
-    function vec_avg
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vavgub (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_avg;
- 
-    function vec_avg
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vavgsb (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_avg;
- 
-    function vec_avg
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vavguh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_avg;
- 
-    function vec_avg
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vavgsh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_avg;
- 
-    function vec_avg
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vavguw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_avg;
- 
-    function vec_avg
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vavgsw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_avg;
- 
-    ----------------
-    -- vec_vavgsw --
-    ----------------
- 
-    function vec_vavgsw
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vavgsw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vavgsw;
- 
-    ----------------
-    -- vec_vavguw --
-    ----------------
- 
-    function vec_vavguw
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vavguw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vavguw;
- 
-    ----------------
-    -- vec_vavgsh --
-    ----------------
- 
-    function vec_vavgsh
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vavgsh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vavgsh;
- 
-    ----------------
-    -- vec_vavguh --
-    ----------------
- 
-    function vec_vavguh
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vavguh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vavguh;
- 
-    ----------------
-    -- vec_vavgsb --
-    ----------------
- 
-    function vec_vavgsb
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vavgsb (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vavgsb;
- 
-    ----------------
-    -- vec_vavgub --
-    ----------------
- 
-    function vec_vavgub
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vavgub (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vavgub;
- 
-    --------------
-    -- vec_ceil --
-    --------------
- 
-    function vec_ceil
-      (A : vector_float) return vector_float
-    is
-    begin
-       return To_LL_VF  (vrfip (To_LL_VF  (A)));
-    end vec_ceil;
- 
-    --------------
-    -- vec_cmpb --
-    --------------
- 
-    function vec_cmpb
-      (A : vector_float;
-       B : vector_float) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vcmpbfp (To_LL_VF  (A), To_LL_VF  (B)));
-    end vec_cmpb;
- 
-    ---------------
-    -- vec_cmpeq --
-    ---------------
- 
-    function vec_cmpeq
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_bool_char
-    is
-    begin
-       return To_LL_VBC (vcmpequb (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_cmpeq;
- 
-    function vec_cmpeq
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_bool_char
-    is
-    begin
-       return To_LL_VBC (vcmpequb (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_cmpeq;
- 
-    function vec_cmpeq
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_bool_short
-    is
-    begin
-       return To_LL_VBS (vcmpequh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_cmpeq;
- 
-    function vec_cmpeq
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_bool_short
-    is
-    begin
-       return To_LL_VBS (vcmpequh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_cmpeq;
- 
-    function vec_cmpeq
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_bool_int
-    is
-    begin
-       return To_LL_VBI (vcmpequw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_cmpeq;
- 
-    function vec_cmpeq
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_bool_int
-    is
-    begin
-       return To_LL_VBI (vcmpequw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_cmpeq;
- 
-    function vec_cmpeq
-      (A : vector_float;
-       B : vector_float) return vector_bool_int
-    is
-    begin
-       return To_LL_VBI (vcmpeqfp (To_LL_VF  (A), To_LL_VF  (B)));
-    end vec_cmpeq;
- 
-    ------------------
-    -- vec_vcmpeqfp --
-    ------------------
- 
-    function vec_vcmpeqfp
-      (A : vector_float;
-       B : vector_float) return vector_bool_int
-    is
-    begin
-       return To_LL_VBI (vcmpeqfp (To_LL_VF  (A), To_LL_VF  (B)));
-    end vec_vcmpeqfp;
- 
-    ------------------
-    -- vec_vcmpequw --
-    ------------------
- 
-    function vec_vcmpequw
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_bool_int
-    is
-    begin
-       return To_LL_VBI (vcmpequw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vcmpequw;
- 
-    function vec_vcmpequw
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_bool_int
-    is
-    begin
-       return To_LL_VBI (vcmpequw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vcmpequw;
- 
-    ------------------
-    -- vec_vcmpequh --
-    ------------------
- 
-    function vec_vcmpequh
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_bool_short
-    is
-    begin
-       return To_LL_VBS (vcmpequh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vcmpequh;
- 
-    function vec_vcmpequh
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_bool_short
-    is
-    begin
-       return To_LL_VBS (vcmpequh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vcmpequh;
- 
-    ------------------
-    -- vec_vcmpequb --
-    ------------------
- 
-    function vec_vcmpequb
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_bool_char
-    is
-    begin
-       return To_LL_VBC (vcmpequb (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vcmpequb;
- 
-    function vec_vcmpequb
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_bool_char
-    is
-    begin
-       return To_LL_VBC (vcmpequb (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vcmpequb;
- 
-    ---------------
-    -- vec_cmpge --
-    ---------------
- 
-    function vec_cmpge
-      (A : vector_float;
-       B : vector_float) return vector_bool_int
-    is
-    begin
-       return To_LL_VBI (vcmpgefp (To_LL_VF  (A), To_LL_VF  (B)));
-    end vec_cmpge;
- 
-    ---------------
-    -- vec_cmpgt --
-    ---------------
- 
-    function vec_cmpgt
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_bool_char
-    is
-    begin
-       return To_LL_VBC (vcmpgtub (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_cmpgt;
- 
-    function vec_cmpgt
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_bool_char
-    is
-    begin
-       return To_LL_VBC (vcmpgtsb (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_cmpgt;
- 
-    function vec_cmpgt
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_bool_short
-    is
-    begin
-       return To_LL_VBS (vcmpgtuh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_cmpgt;
- 
-    function vec_cmpgt
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_bool_short
-    is
-    begin
-       return To_LL_VBS (vcmpgtsh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_cmpgt;
- 
-    function vec_cmpgt
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_bool_int
-    is
-    begin
-       return To_LL_VBI (vcmpgtuw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_cmpgt;
- 
-    function vec_cmpgt
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_bool_int
-    is
-    begin
-       return To_LL_VBI (vcmpgtsw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_cmpgt;
- 
-    function vec_cmpgt
-      (A : vector_float;
-       B : vector_float) return vector_bool_int
-    is
-    begin
-       return To_LL_VBI (vcmpgtfp (To_LL_VF  (A), To_LL_VF  (B)));
-    end vec_cmpgt;
- 
-    ------------------
-    -- vec_vcmpgtfp --
-    ------------------
- 
-    function vec_vcmpgtfp
-      (A : vector_float;
-       B : vector_float) return vector_bool_int
-    is
-    begin
-       return To_LL_VBI (vcmpgtfp (To_LL_VF  (A), To_LL_VF  (B)));
-    end vec_vcmpgtfp;
- 
-    ------------------
-    -- vec_vcmpgtsw --
-    ------------------
- 
-    function vec_vcmpgtsw
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_bool_int
-    is
-    begin
-       return To_LL_VBI (vcmpgtsw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vcmpgtsw;
- 
-    ------------------
-    -- vec_vcmpgtuw --
-    ------------------
- 
-    function vec_vcmpgtuw
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_bool_int
-    is
-    begin
-       return To_LL_VBI (vcmpgtuw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vcmpgtuw;
- 
-    ------------------
-    -- vec_vcmpgtsh --
-    ------------------
- 
-    function vec_vcmpgtsh
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_bool_short
-    is
-    begin
-       return To_LL_VBS (vcmpgtsh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vcmpgtsh;
- 
-    ------------------
-    -- vec_vcmpgtuh --
-    ------------------
- 
-    function vec_vcmpgtuh
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_bool_short
-    is
-    begin
-       return To_LL_VBS (vcmpgtuh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vcmpgtuh;
- 
-    ------------------
-    -- vec_vcmpgtsb --
-    ------------------
- 
-    function vec_vcmpgtsb
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_bool_char
-    is
-    begin
-       return To_LL_VBC (vcmpgtsb (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vcmpgtsb;
- 
-    ------------------
-    -- vec_vcmpgtub --
-    ------------------
- 
-    function vec_vcmpgtub
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_bool_char
-    is
-    begin
-       return To_LL_VBC (vcmpgtub (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vcmpgtub;
- 
-    ---------------
-    -- vec_cmple --
-    ---------------
- 
-    function vec_cmple
-      (A : vector_float;
-       B : vector_float) return vector_bool_int
-    is
-    begin
-       return To_LL_VBI (vcmpgefp (To_LL_VF  (B), To_LL_VF  (A)));
-    end vec_cmple;
- 
-    ---------------
-    -- vec_cmplt --
-    ---------------
- 
-    function vec_cmplt
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_bool_char
-    is
-    begin
-       return To_LL_VBC (vcmpgtub (To_LL_VSC (B), To_LL_VSC (A)));
-    end vec_cmplt;
- 
-    function vec_cmplt
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_bool_char
-    is
-    begin
-       return To_LL_VBC (vcmpgtsb (To_LL_VSC (B), To_LL_VSC (A)));
-    end vec_cmplt;
- 
-    function vec_cmplt
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_bool_short
-    is
-    begin
-       return To_LL_VBS (vcmpgtuh (To_LL_VSS (B), To_LL_VSS (A)));
-    end vec_cmplt;
- 
-    function vec_cmplt
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_bool_short
-    is
-    begin
-       return To_LL_VBS (vcmpgtsh (To_LL_VSS (B), To_LL_VSS (A)));
-    end vec_cmplt;
- 
-    function vec_cmplt
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_bool_int
-    is
-    begin
-       return To_LL_VBI (vcmpgtuw (To_LL_VSI (B), To_LL_VSI (A)));
-    end vec_cmplt;
- 
-    function vec_cmplt
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_bool_int
-    is
-    begin
-       return To_LL_VBI (vcmpgtsw (To_LL_VSI (B), To_LL_VSI (A)));
-    end vec_cmplt;
- 
-    function vec_cmplt
-      (A : vector_float;
-       B : vector_float) return vector_bool_int
-    is
-    begin
-       return To_LL_VBI (vcmpgtfp (To_LL_VF  (B), To_LL_VF  (A)));
-    end vec_cmplt;
- 
-    ---------------
-    -- vec_expte --
-    ---------------
- 
-    function vec_expte
-      (A : vector_float) return vector_float
-    is
-    begin
-       return To_LL_VF (vexptefp (To_LL_VF (A)));
-    end vec_expte;
- 
-    ---------------
-    -- vec_floor --
-    ---------------
- 
-    function vec_floor
-      (A : vector_float) return vector_float
-    is
-    begin
-       return To_LL_VF (vrfim (To_LL_VF (A)));
-    end vec_floor;
- 
-    ------------
-    -- vec_ld --
-    ------------
- 
-    function vec_ld
-      (A : c_long;
-       B : const_vector_float_ptr) return vector_float
-    is
-    begin
-       return To_LL_VF (lvx (A, To_PTR (B)));
-    end vec_ld;
- 
-    function vec_ld
-      (A : c_long;
-       B : const_float_ptr) return vector_float
-    is
-    begin
-       return To_LL_VF (lvx (A, To_PTR (B)));
-    end vec_ld;
- 
-    function vec_ld
-      (A : c_long;
-       B : const_vector_bool_int_ptr) return vector_bool_int
-    is
-    begin
-       return To_LL_VBI (lvx (A, To_PTR (B)));
-    end vec_ld;
- 
-    function vec_ld
-      (A : c_long;
-       B : const_vector_signed_int_ptr) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (lvx (A, To_PTR (B)));
-    end vec_ld;
- 
-    function vec_ld
-      (A : c_long;
-       B : const_int_ptr) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (lvx (A, To_PTR (B)));
-    end vec_ld;
- 
-    function vec_ld
-      (A : c_long;
-       B : const_long_ptr) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (lvx (A, To_PTR (B)));
-    end vec_ld;
- 
-    function vec_ld
-      (A : c_long;
-       B : const_vector_unsigned_int_ptr) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (lvx (A, To_PTR (B)));
-    end vec_ld;
- 
-    function vec_ld
-      (A : c_long;
-       B : const_unsigned_int_ptr) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (lvx (A, To_PTR (B)));
-    end vec_ld;
- 
-    function vec_ld
-      (A : c_long;
-       B : const_unsigned_long_ptr) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (lvx (A, To_PTR (B)));
-    end vec_ld;
- 
-    function vec_ld
-      (A : c_long;
-       B : const_vector_bool_short_ptr) return vector_bool_short
-    is
-    begin
-       return To_LL_VBS (lvx (A, To_PTR (B)));
-    end vec_ld;
- 
-    function vec_ld
-      (A : c_long;
-       B : const_vector_pixel_ptr) return vector_pixel
-    is
-    begin
-       return To_LL_VP (lvx (A, To_PTR (B)));
-    end vec_ld;
- 
-    function vec_ld
-      (A : c_long;
-       B : const_vector_signed_short_ptr) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (lvx (A, To_PTR (B)));
-    end vec_ld;
- 
-    function vec_ld
-      (A : c_long;
-       B : const_short_ptr) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (lvx (A, To_PTR (B)));
-    end vec_ld;
- 
-    function vec_ld
-      (A : c_long;
-       B : const_vector_unsigned_short_ptr) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (lvx (A, To_PTR (B)));
-    end vec_ld;
- 
-    function vec_ld
-      (A : c_long;
-       B : const_unsigned_short_ptr) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (lvx (A, To_PTR (B)));
-    end vec_ld;
- 
-    function vec_ld
-      (A : c_long;
-       B : const_vector_bool_char_ptr) return vector_bool_char
-    is
-    begin
-       return To_LL_VBC (lvx (A, To_PTR (B)));
-    end vec_ld;
- 
-    function vec_ld
-      (A : c_long;
-       B : const_vector_signed_char_ptr) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (lvx (A, To_PTR (B)));
-    end vec_ld;
- 
-    function vec_ld
-      (A : c_long;
-       B : const_signed_char_ptr) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (lvx (A, To_PTR (B)));
-    end vec_ld;
- 
-    function vec_ld
-      (A : c_long;
-       B : const_vector_unsigned_char_ptr) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (lvx (A, To_PTR (B)));
-    end vec_ld;
- 
-    function vec_ld
-      (A : c_long;
-       B : const_unsigned_char_ptr) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (lvx (A, To_PTR (B)));
-    end vec_ld;
- 
-    -------------
-    -- vec_lde --
-    -------------
- 
-    function vec_lde
-      (A : c_long;
-       B : const_signed_char_ptr) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (lvebx (A, To_PTR (B)));
-    end vec_lde;
- 
-    function vec_lde
-      (A : c_long;
-       B : const_unsigned_char_ptr) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (lvebx (A, To_PTR (B)));
-    end vec_lde;
- 
-    function vec_lde
-      (A : c_long;
-       B : const_short_ptr) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (lvehx (A, To_PTR (B)));
-    end vec_lde;
- 
-    function vec_lde
-      (A : c_long;
-       B : const_unsigned_short_ptr) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (lvehx (A, To_PTR (B)));
-    end vec_lde;
- 
-    function vec_lde
-      (A : c_long;
-       B : const_float_ptr) return vector_float
-    is
-    begin
-       return To_LL_VF (lvewx (A, To_PTR (B)));
-    end vec_lde;
- 
-    function vec_lde
-      (A : c_long;
-       B : const_int_ptr) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (lvewx (A, To_PTR (B)));
-    end vec_lde;
- 
-    function vec_lde
-      (A : c_long;
-       B : const_unsigned_int_ptr) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (lvewx (A, To_PTR (B)));
-    end vec_lde;
- 
-    function vec_lde
-      (A : c_long;
-       B : const_long_ptr) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (lvewx (A, To_PTR (B)));
-    end vec_lde;
- 
-    function vec_lde
-      (A : c_long;
-       B : const_unsigned_long_ptr) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (lvewx (A, To_PTR (B)));
-    end vec_lde;
- 
-    ---------------
-    -- vec_lvewx --
-    ---------------
- 
-    function vec_lvewx
-      (A : c_long;
-       B : float_ptr) return vector_float
-    is
-    begin
-       return To_LL_VF (lvewx (A, To_PTR (B)));
-    end vec_lvewx;
- 
-    function vec_lvewx
-      (A : c_long;
-       B : int_ptr) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (lvewx (A, To_PTR (B)));
-    end vec_lvewx;
- 
-    function vec_lvewx
-      (A : c_long;
-       B : unsigned_int_ptr) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (lvewx (A, To_PTR (B)));
-    end vec_lvewx;
- 
-    function vec_lvewx
-      (A : c_long;
-       B : long_ptr) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (lvewx (A, To_PTR (B)));
-    end vec_lvewx;
- 
-    function vec_lvewx
-      (A : c_long;
-       B : unsigned_long_ptr) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (lvewx (A, To_PTR (B)));
-    end vec_lvewx;
- 
-    ---------------
-    -- vec_lvehx --
-    ---------------
- 
-    function vec_lvehx
-      (A : c_long;
-       B : short_ptr) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (lvehx (A, To_PTR (B)));
-    end vec_lvehx;
- 
-    function vec_lvehx
-      (A : c_long;
-       B : unsigned_short_ptr) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (lvehx (A, To_PTR (B)));
-    end vec_lvehx;
- 
-    ---------------
-    -- vec_lvebx --
-    ---------------
- 
-    function vec_lvebx
-      (A : c_long;
-       B : signed_char_ptr) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (lvebx (A, To_PTR (B)));
-    end vec_lvebx;
- 
-    function vec_lvebx
-      (A : c_long;
-       B : unsigned_char_ptr) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (lvebx (A, To_PTR (B)));
-    end vec_lvebx;
- 
-    -------------
-    -- vec_ldl --
-    -------------
- 
-    function vec_ldl
-      (A : c_long;
-       B : const_vector_float_ptr) return vector_float
-    is
-    begin
-       return To_LL_VF (lvxl (A, To_PTR (B)));
-    end vec_ldl;
- 
-    function vec_ldl
-      (A : c_long;
-       B : const_float_ptr) return vector_float
-    is
-    begin
-       return To_LL_VF (lvxl (A, To_PTR (B)));
-    end vec_ldl;
- 
-    function vec_ldl
-      (A : c_long;
-       B : const_vector_bool_int_ptr) return vector_bool_int
-    is
-    begin
-       return To_LL_VBI (lvxl (A, To_PTR (B)));
-    end vec_ldl;
- 
-    function vec_ldl
-      (A : c_long;
-       B : const_vector_signed_int_ptr) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (lvxl (A, To_PTR (B)));
-    end vec_ldl;
- 
-    function vec_ldl
-      (A : c_long;
-       B : const_int_ptr) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (lvxl (A, To_PTR (B)));
-    end vec_ldl;
- 
-    function vec_ldl
-      (A : c_long;
-       B : const_long_ptr) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (lvxl (A, To_PTR (B)));
-    end vec_ldl;
- 
-    function vec_ldl
-      (A : c_long;
-       B : const_vector_unsigned_int_ptr) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (lvxl (A, To_PTR (B)));
-    end vec_ldl;
- 
-    function vec_ldl
-      (A : c_long;
-       B : const_unsigned_int_ptr) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (lvxl (A, To_PTR (B)));
-    end vec_ldl;
- 
-    function vec_ldl
-      (A : c_long;
-       B : const_unsigned_long_ptr) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (lvxl (A, To_PTR (B)));
-    end vec_ldl;
- 
-    function vec_ldl
-      (A : c_long;
-       B : const_vector_bool_short_ptr) return vector_bool_short
-    is
-    begin
-       return To_LL_VBS (lvxl (A, To_PTR (B)));
-    end vec_ldl;
- 
-    function vec_ldl
-      (A : c_long;
-       B : const_vector_pixel_ptr) return vector_pixel
-    is
-    begin
-       return To_LL_VP (lvxl (A, To_PTR (B)));
-    end vec_ldl;
- 
-    function vec_ldl
-      (A : c_long;
-       B : const_vector_signed_short_ptr) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (lvxl (A, To_PTR (B)));
-    end vec_ldl;
- 
-    function vec_ldl
-      (A : c_long;
-       B : const_short_ptr) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (lvxl (A, To_PTR (B)));
-    end vec_ldl;
- 
-    function vec_ldl
-      (A : c_long;
-       B : const_vector_unsigned_short_ptr) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (lvxl (A, To_PTR (B)));
-    end vec_ldl;
- 
-    function vec_ldl
-      (A : c_long;
-       B : const_unsigned_short_ptr) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (lvxl (A, To_PTR (B)));
-    end vec_ldl;
- 
-    function vec_ldl
-      (A : c_long;
-       B : const_vector_bool_char_ptr) return vector_bool_char
-    is
-    begin
-       return To_LL_VBC (lvxl (A, To_PTR (B)));
-    end vec_ldl;
- 
-    function vec_ldl
-      (A : c_long;
-       B : const_vector_signed_char_ptr) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (lvxl (A, To_PTR (B)));
-    end vec_ldl;
- 
-    function vec_ldl
-      (A : c_long;
-       B : const_signed_char_ptr) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (lvxl (A, To_PTR (B)));
-    end vec_ldl;
- 
-    function vec_ldl
-      (A : c_long;
-       B : const_vector_unsigned_char_ptr) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (lvxl (A, To_PTR (B)));
-    end vec_ldl;
- 
-    function vec_ldl
-      (A : c_long;
-       B : const_unsigned_char_ptr) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (lvxl (A, To_PTR (B)));
-    end vec_ldl;
- 
-    --------------
-    -- vec_loge --
-    --------------
- 
-    function vec_loge
-      (A : vector_float) return vector_float
-    is
-    begin
-       return To_LL_VF (vlogefp (To_LL_VF (A)));
-    end vec_loge;
- 
-    --------------
-    -- vec_lvsl --
-    --------------
- 
-    function vec_lvsl
-      (A : c_long;
-       B : constv_unsigned_char_ptr) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (lvsl (A, To_PTR (B)));
-    end vec_lvsl;
- 
-    function vec_lvsl
-      (A : c_long;
-       B : constv_signed_char_ptr) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (lvsl (A, To_PTR (B)));
-    end vec_lvsl;
- 
-    function vec_lvsl
-      (A : c_long;
-       B : constv_unsigned_short_ptr) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (lvsl (A, To_PTR (B)));
-    end vec_lvsl;
- 
-    function vec_lvsl
-      (A : c_long;
-       B : constv_short_ptr) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (lvsl (A, To_PTR (B)));
-    end vec_lvsl;
- 
-    function vec_lvsl
-      (A : c_long;
-       B : constv_unsigned_int_ptr) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (lvsl (A, To_PTR (B)));
-    end vec_lvsl;
- 
-    function vec_lvsl
-      (A : c_long;
-       B : constv_int_ptr) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (lvsl (A, To_PTR (B)));
-    end vec_lvsl;
- 
-    function vec_lvsl
-      (A : c_long;
-       B : constv_unsigned_long_ptr) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (lvsl (A, To_PTR (B)));
-    end vec_lvsl;
- 
-    function vec_lvsl
-      (A : c_long;
-       B : constv_long_ptr) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (lvsl (A, To_PTR (B)));
-    end vec_lvsl;
- 
-    function vec_lvsl
-      (A : c_long;
-       B : constv_float_ptr) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (lvsl (A, To_PTR (B)));
-    end vec_lvsl;
- 
-    --------------
-    -- vec_lvsr --
-    --------------
- 
-    function vec_lvsr
-      (A : c_long;
-       B : constv_unsigned_char_ptr) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (lvsr (A, To_PTR (B)));
-    end vec_lvsr;
- 
-    function vec_lvsr
-      (A : c_long;
-       B : constv_signed_char_ptr) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (lvsr (A, To_PTR (B)));
-    end vec_lvsr;
- 
-    function vec_lvsr
-      (A : c_long;
-       B : constv_unsigned_short_ptr) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (lvsr (A, To_PTR (B)));
-    end vec_lvsr;
- 
-    function vec_lvsr
-      (A : c_long;
-       B : constv_short_ptr) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (lvsr (A, To_PTR (B)));
-    end vec_lvsr;
- 
-    function vec_lvsr
-      (A : c_long;
-       B : constv_unsigned_int_ptr) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (lvsr (A, To_PTR (B)));
-    end vec_lvsr;
- 
-    function vec_lvsr
-      (A : c_long;
-       B : constv_int_ptr) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (lvsr (A, To_PTR (B)));
-    end vec_lvsr;
- 
-    function vec_lvsr
-      (A : c_long;
-       B : constv_unsigned_long_ptr) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (lvsr (A, To_PTR (B)));
-    end vec_lvsr;
- 
-    function vec_lvsr
-      (A : c_long;
-       B : constv_long_ptr) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (lvsr (A, To_PTR (B)));
-    end vec_lvsr;
- 
-    function vec_lvsr
-      (A : c_long;
-       B : constv_float_ptr) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (lvsr (A, To_PTR (B)));
-    end vec_lvsr;
- 
-    --------------
-    -- vec_madd --
-    --------------
- 
-    function vec_madd
-      (A : vector_float;
-       B : vector_float;
-       C : vector_float) return vector_float
-    is
-    begin
-       return vmaddfp (A, B, C);
-    end vec_madd;
- 
-    ---------------
-    -- vec_madds --
-    ---------------
- 
-    function vec_madds
-      (A : vector_signed_short;
-       B : vector_signed_short;
-       C : vector_signed_short) return vector_signed_short
-    is
-    begin
-       return vmhaddshs (A, B, C);
-    end vec_madds;
- 
-    -------------
-    -- vec_max --
-    -------------
- 
-    function vec_max
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vmaxub (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_max;
- 
-    function vec_max
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vmaxub (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_max;
- 
-    function vec_max
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vmaxub (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_max;
- 
-    function vec_max
-      (A : vector_bool_char;
-       B : vector_signed_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vmaxsb (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_max;
- 
-    function vec_max
-      (A : vector_signed_char;
-       B : vector_bool_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vmaxsb (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_max;
- 
-    function vec_max
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vmaxsb (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_max;
- 
-    function vec_max
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vmaxuh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_max;
- 
-    function vec_max
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vmaxuh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_max;
- 
-    function vec_max
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vmaxuh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_max;
- 
-    function vec_max
-      (A : vector_bool_short;
-       B : vector_signed_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vmaxsh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_max;
- 
-    function vec_max
-      (A : vector_signed_short;
-       B : vector_bool_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vmaxsh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_max;
- 
-    function vec_max
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vmaxsh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_max;
- 
-    function vec_max
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vmaxuw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_max;
- 
-    function vec_max
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vmaxuw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_max;
- 
-    function vec_max
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vmaxuw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_max;
- 
-    function vec_max
-      (A : vector_bool_int;
-       B : vector_signed_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vmaxsw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_max;
- 
-    function vec_max
-      (A : vector_signed_int;
-       B : vector_bool_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vmaxsw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_max;
- 
-    function vec_max
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vmaxsw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_max;
- 
-    function vec_max
-      (A : vector_float;
-       B : vector_float) return vector_float
-    is
-    begin
-       return To_LL_VF (vmaxfp (To_LL_VF (A), To_LL_VF (B)));
-    end vec_max;
- 
-    ----------------
-    -- vec_vmaxfp --
-    ----------------
- 
-    function vec_vmaxfp
-      (A : vector_float;
-       B : vector_float) return vector_float
-    is
-    begin
-       return To_LL_VF (vmaxfp (To_LL_VF (A), To_LL_VF (B)));
-    end vec_vmaxfp;
- 
-    ----------------
-    -- vec_vmaxsw --
-    ----------------
- 
-    function vec_vmaxsw
-      (A : vector_bool_int;
-       B : vector_signed_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vmaxsw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vmaxsw;
- 
-    function vec_vmaxsw
-      (A : vector_signed_int;
-       B : vector_bool_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vmaxsw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vmaxsw;
- 
-    function vec_vmaxsw
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vmaxsw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vmaxsw;
- 
-    ----------------
-    -- vec_vmaxuw --
-    ----------------
- 
-    function vec_vmaxuw
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vmaxuw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vmaxuw;
- 
-    function vec_vmaxuw
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vmaxuw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vmaxuw;
- 
-    function vec_vmaxuw
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vmaxuw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vmaxuw;
- 
-    ----------------
-    -- vec_vmaxsh --
-    ----------------
- 
-    function vec_vmaxsh
-      (A : vector_bool_short;
-       B : vector_signed_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vmaxsh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vmaxsh;
- 
-    function vec_vmaxsh
-      (A : vector_signed_short;
-       B : vector_bool_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vmaxsh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vmaxsh;
- 
-    function vec_vmaxsh
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vmaxsh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vmaxsh;
- 
-    ----------------
-    -- vec_vmaxuh --
-    ----------------
- 
-    function vec_vmaxuh
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vmaxuh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vmaxuh;
- 
-    function vec_vmaxuh
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vmaxuh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vmaxuh;
- 
-    function vec_vmaxuh
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vmaxuh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vmaxuh;
- 
-    ----------------
-    -- vec_vmaxsb --
-    ----------------
- 
-    function vec_vmaxsb
-      (A : vector_bool_char;
-       B : vector_signed_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vmaxsb (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vmaxsb;
- 
-    function vec_vmaxsb
-      (A : vector_signed_char;
-       B : vector_bool_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vmaxsb (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vmaxsb;
- 
-    function vec_vmaxsb
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vmaxsb (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vmaxsb;
- 
-    ----------------
-    -- vec_vmaxub --
-    ----------------
- 
-    function vec_vmaxub
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vmaxub (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vmaxub;
- 
-    function vec_vmaxub
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vmaxub (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vmaxub;
- 
-    function vec_vmaxub
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vmaxub (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vmaxub;
- 
-    ----------------
-    -- vec_mergeh --
-    ----------------
- 
-    function vec_mergeh
-      (A : vector_bool_char;
-       B : vector_bool_char) return vector_bool_char
-    is
-    begin
-       return To_LL_VBC (vmrghb (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_mergeh;
- 
-    function vec_mergeh
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vmrghb (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_mergeh;
- 
-    function vec_mergeh
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vmrghb (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_mergeh;
- 
-    function vec_mergeh
-      (A : vector_bool_short;
-       B : vector_bool_short) return vector_bool_short
-    is
-    begin
-       return To_LL_VBS (vmrghh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_mergeh;
- 
-    function vec_mergeh
-      (A : vector_pixel;
-       B : vector_pixel) return vector_pixel
-    is
-    begin
-       return To_LL_VP (vmrghh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_mergeh;
- 
-    function vec_mergeh
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vmrghh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_mergeh;
- 
-    function vec_mergeh
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vmrghh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_mergeh;
- 
-    function vec_mergeh
-      (A : vector_float;
-       B : vector_float) return vector_float
-    is
-    begin
-       return To_LL_VF (vmrghw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_mergeh;
- 
-    function vec_mergeh
-      (A : vector_bool_int;
-       B : vector_bool_int) return vector_bool_int
-    is
-    begin
-       return To_LL_VBI (vmrghw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_mergeh;
- 
-    function vec_mergeh
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vmrghw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_mergeh;
- 
-    function vec_mergeh
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vmrghw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_mergeh;
- 
-    ----------------
-    -- vec_vmrghw --
-    ----------------
- 
-    function vec_vmrghw
-      (A : vector_float;
-       B : vector_float) return vector_float
-    is
-    begin
-       return To_LL_VF (vmrghw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vmrghw;
- 
-    function vec_vmrghw
-      (A : vector_bool_int;
-       B : vector_bool_int) return vector_bool_int
-    is
-    begin
-       return To_LL_VBI (vmrghw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vmrghw;
- 
-    function vec_vmrghw
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vmrghw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vmrghw;
- 
-    function vec_vmrghw
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vmrghw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vmrghw;
- 
-    ----------------
-    -- vec_vmrghh --
-    ----------------
- 
-    function vec_vmrghh
-      (A : vector_bool_short;
-       B : vector_bool_short) return vector_bool_short
-    is
-    begin
-       return To_LL_VBS (vmrghh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vmrghh;
- 
-    function vec_vmrghh
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vmrghh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vmrghh;
- 
-    function vec_vmrghh
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vmrghh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vmrghh;
- 
-    function vec_vmrghh
-      (A : vector_pixel;
-       B : vector_pixel) return vector_pixel
-    is
-    begin
-       return To_LL_VP (vmrghh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vmrghh;
- 
-    ----------------
-    -- vec_vmrghb --
-    ----------------
- 
-    function vec_vmrghb
-      (A : vector_bool_char;
-       B : vector_bool_char) return vector_bool_char
-    is
-    begin
-       return To_LL_VBC (vmrghb (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vmrghb;
- 
-    function vec_vmrghb
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vmrghb (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vmrghb;
- 
-    function vec_vmrghb
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vmrghb (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vmrghb;
- 
-    ----------------
-    -- vec_mergel --
-    ----------------
- 
-    function vec_mergel
-      (A : vector_bool_char;
-       B : vector_bool_char) return vector_bool_char
-    is
-    begin
-       return To_LL_VBC (vmrglb (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_mergel;
- 
-    function vec_mergel
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vmrglb (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_mergel;
- 
-    function vec_mergel
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vmrglb (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_mergel;
- 
-    function vec_mergel
-      (A : vector_bool_short;
-       B : vector_bool_short) return vector_bool_short
-    is
-    begin
-       return To_LL_VBS (vmrglh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_mergel;
- 
-    function vec_mergel
-      (A : vector_pixel;
-       B : vector_pixel) return vector_pixel
-    is
-    begin
-       return To_LL_VP (vmrglh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_mergel;
- 
-    function vec_mergel
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vmrglh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_mergel;
- 
-    function vec_mergel
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vmrglh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_mergel;
- 
-    function vec_mergel
-      (A : vector_float;
-       B : vector_float) return vector_float
-    is
-    begin
-       return To_LL_VF (vmrglw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_mergel;
- 
-    function vec_mergel
-      (A : vector_bool_int;
-       B : vector_bool_int) return vector_bool_int
-    is
-    begin
-       return To_LL_VBI (vmrglw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_mergel;
- 
-    function vec_mergel
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vmrglw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_mergel;
- 
-    function vec_mergel
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vmrglw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_mergel;
- 
-    ----------------
-    -- vec_vmrglw --
-    ----------------
- 
-    function vec_vmrglw
-      (A : vector_float;
-       B : vector_float) return vector_float
-    is
-    begin
-       return To_LL_VF (vmrglw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vmrglw;
- 
-    function vec_vmrglw
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vmrglw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vmrglw;
- 
-    function vec_vmrglw
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vmrglw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vmrglw;
- 
-    function vec_vmrglw
-      (A : vector_bool_int;
-       B : vector_bool_int) return vector_bool_int
-    is
-    begin
-       return To_LL_VBI (vmrglw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vmrglw;
- 
-    ----------------
-    -- vec_vmrglh --
-    ----------------
- 
-    function vec_vmrglh
-      (A : vector_bool_short;
-       B : vector_bool_short) return vector_bool_short
-    is
-    begin
-       return To_LL_VBS (vmrglh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vmrglh;
- 
-    function vec_vmrglh
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vmrglh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vmrglh;
- 
-    function vec_vmrglh
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vmrglh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vmrglh;
- 
-    function vec_vmrglh
-      (A : vector_pixel;
-       B : vector_pixel) return vector_pixel
-    is
-    begin
-       return To_LL_VP (vmrglh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vmrglh;
- 
-    ----------------
-    -- vec_vmrglb --
-    ----------------
- 
-    function vec_vmrglb
-      (A : vector_bool_char;
-       B : vector_bool_char) return vector_bool_char
-    is
-    begin
-       return To_LL_VBC (vmrglb (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vmrglb;
- 
-    function vec_vmrglb
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vmrglb (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vmrglb;
- 
-    function vec_vmrglb
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vmrglb (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vmrglb;
- 
-    ----------------
-    -- vec_mfvscr --
-    ----------------
- 
-    function vec_mfvscr return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (mfvscr);
-    end vec_mfvscr;
- 
-    -------------
-    -- vec_min --
-    -------------
- 
-    function vec_min
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vminub (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_min;
- 
-    function vec_min
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vminub (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_min;
- 
-    function vec_min
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vminub (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_min;
- 
-    function vec_min
-      (A : vector_bool_char;
-       B : vector_signed_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vminsb (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_min;
- 
-    function vec_min
-      (A : vector_signed_char;
-       B : vector_bool_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vminsb (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_min;
- 
-    function vec_min
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vminsb (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_min;
- 
-    function vec_min
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vminuh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_min;
- 
-    function vec_min
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vminuh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_min;
- 
-    function vec_min
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vminuh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_min;
- 
-    function vec_min
-      (A : vector_bool_short;
-       B : vector_signed_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vminsh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_min;
- 
-    function vec_min
-      (A : vector_signed_short;
-       B : vector_bool_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vminsh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_min;
- 
-    function vec_min
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vminsh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_min;
- 
-    function vec_min
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vminuw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_min;
- 
-    function vec_min
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vminuw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_min;
- 
-    function vec_min
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vminuw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_min;
- 
-    function vec_min
-      (A : vector_bool_int;
-       B : vector_signed_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vminsw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_min;
- 
-    function vec_min
-      (A : vector_signed_int;
-       B : vector_bool_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vminsw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_min;
- 
-    function vec_min
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vminsw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_min;
- 
-    function vec_min
-      (A : vector_float;
-       B : vector_float) return vector_float
-    is
-    begin
-       return To_LL_VF (vminfp (To_LL_VF (A), To_LL_VF (B)));
-    end vec_min;
- 
-    -- vec_vminfp --
- 
-    function vec_vminfp
-      (A : vector_float;
-       B : vector_float) return vector_float
-    is
-    begin
-       return To_LL_VF (vminfp (To_LL_VF (A), To_LL_VF (B)));
-    end vec_vminfp;
- 
-    -- vec_vminsw --
- 
-    function vec_vminsw
-      (A : vector_bool_int;
-       B : vector_signed_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vminsw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vminsw;
- 
-    function vec_vminsw
-      (A : vector_signed_int;
-       B : vector_bool_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vminsw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vminsw;
- 
-    function vec_vminsw
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vminsw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vminsw;
- 
-    -- vec_vminuw --
- 
-    function vec_vminuw
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vminuw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vminuw;
- 
-    function vec_vminuw
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vminuw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vminuw;
- 
-    function vec_vminuw
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vminuw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vminuw;
- 
-    -- vec_vminsh --
- 
-    function vec_vminsh
-      (A : vector_bool_short;
-       B : vector_signed_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vminsh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vminsh;
- 
-    function vec_vminsh
-      (A : vector_signed_short;
-       B : vector_bool_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vminsh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vminsh;
- 
-    function vec_vminsh
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vminsh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vminsh;
- 
-    ----------------
-    -- vec_vminuh --
-    ----------------
- 
-    function vec_vminuh
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vminuh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vminuh;
- 
-    function vec_vminuh
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vminuh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vminuh;
- 
-    function vec_vminuh
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vminuh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vminuh;
- 
-    ----------------
-    -- vec_vminsb --
-    ----------------
- 
-    function vec_vminsb
-      (A : vector_bool_char;
-       B : vector_signed_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vminsb (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vminsb;
- 
-    function vec_vminsb
-      (A : vector_signed_char;
-       B : vector_bool_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vminsb (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vminsb;
- 
-    function vec_vminsb
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vminsb (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vminsb;
- 
-    ----------------
-    -- vec_vminub --
-    ----------------
- 
-    function vec_vminub
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vminub (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vminub;
- 
-    function vec_vminub
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vminub (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vminub;
- 
-    function vec_vminub
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vminub (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vminub;
- 
-    ---------------
-    -- vec_mladd --
-    ---------------
- 
-    function vec_mladd
-      (A : vector_signed_short;
-       B : vector_signed_short;
-       C : vector_signed_short) return vector_signed_short
-    is
-    begin
-       return vmladduhm (A, B, C);
-    end vec_mladd;
- 
-    function vec_mladd
-      (A : vector_signed_short;
-       B : vector_unsigned_short;
-       C : vector_unsigned_short) return vector_signed_short
-    is
-    begin
-       return vmladduhm (A, To_LL_VSS (B), To_LL_VSS (C));
-    end vec_mladd;
- 
-    function vec_mladd
-      (A : vector_unsigned_short;
-       B : vector_signed_short;
-       C : vector_signed_short) return vector_signed_short
-    is
-    begin
-       return vmladduhm (To_LL_VSS (A), B, C);
-    end vec_mladd;
- 
-    function vec_mladd
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short;
-       C : vector_unsigned_short) return vector_unsigned_short
-    is
-    begin
-       return
-         To_LL_VUS (vmladduhm (To_LL_VSS (A), To_LL_VSS (B), To_LL_VSS (C)));
-    end vec_mladd;
- 
-    ----------------
-    -- vec_mradds --
-    ----------------
- 
-    function vec_mradds
-      (A : vector_signed_short;
-       B : vector_signed_short;
-       C : vector_signed_short) return vector_signed_short
-    is
-    begin
-       return vmhraddshs (A, B, C);
-    end vec_mradds;
- 
-    --------------
-    -- vec_msum --
-    --------------
- 
-    function vec_msum
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char;
-       C : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return
-         To_LL_VUI (vmsumubm (To_LL_VSC (A), To_LL_VSC (B), To_LL_VSI (C)));
-    end vec_msum;
- 
-    function vec_msum
-      (A : vector_signed_char;
-       B : vector_unsigned_char;
-       C : vector_signed_int) return vector_signed_int
-    is
-    begin
-       return
-         To_LL_VSI (vmsummbm (To_LL_VSC (A), To_LL_VSC (B), To_LL_VSI (C)));
-    end vec_msum;
- 
-    function vec_msum
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short;
-       C : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return
-         To_LL_VUI (vmsumuhm (To_LL_VSS (A), To_LL_VSS (B), To_LL_VSI (C)));
-    end vec_msum;
- 
-    function vec_msum
-      (A : vector_signed_short;
-       B : vector_signed_short;
-       C : vector_signed_int) return vector_signed_int
-    is
-    begin
-       return
-         To_LL_VSI (vmsumshm (To_LL_VSS (A), To_LL_VSS (B), To_LL_VSI (C)));
-    end vec_msum;
- 
-    ------------------
-    -- vec_vmsumshm --
-    ------------------
- 
-    function vec_vmsumshm
-      (A : vector_signed_short;
-       B : vector_signed_short;
-       C : vector_signed_int) return vector_signed_int
-    is
-    begin
-       return
-         To_LL_VSI (vmsumshm (To_LL_VSS (A), To_LL_VSS (B), To_LL_VSI (C)));
-    end vec_vmsumshm;
- 
-    ------------------
-    -- vec_vmsumuhm --
-    ------------------
- 
-    function vec_vmsumuhm
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short;
-       C : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return
-         To_LL_VUI (vmsumuhm (To_LL_VSS (A), To_LL_VSS (B), To_LL_VSI (C)));
-    end vec_vmsumuhm;
- 
-    ------------------
-    -- vec_vmsummbm --
-    ------------------
- 
-    function vec_vmsummbm
-      (A : vector_signed_char;
-       B : vector_unsigned_char;
-       C : vector_signed_int) return vector_signed_int
-    is
-    begin
-       return
-         To_LL_VSI (vmsummbm (To_LL_VSC (A), To_LL_VSC (B), To_LL_VSI (C)));
-    end vec_vmsummbm;
- 
-    ------------------
-    -- vec_vmsumubm --
-    ------------------
- 
-    function vec_vmsumubm
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char;
-       C : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return
-         To_LL_VUI (vmsumubm (To_LL_VSC (A), To_LL_VSC (B), To_LL_VSI (C)));
-    end vec_vmsumubm;
- 
-    ---------------
-    -- vec_msums --
-    ---------------
- 
-    function vec_msums
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short;
-       C : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return
-         To_LL_VUI (vmsumuhs (To_LL_VSS (A), To_LL_VSS (B), To_LL_VSI (C)));
-    end vec_msums;
- 
-    function vec_msums
-      (A : vector_signed_short;
-       B : vector_signed_short;
-       C : vector_signed_int) return vector_signed_int
-    is
-    begin
-       return
-         To_LL_VSI (vmsumshs (To_LL_VSS (A), To_LL_VSS (B), To_LL_VSI (C)));
-    end vec_msums;
- 
-    ------------------
-    -- vec_vmsumshs --
-    ------------------
- 
-    function vec_vmsumshs
-      (A : vector_signed_short;
-       B : vector_signed_short;
-       C : vector_signed_int) return vector_signed_int
-    is
-    begin
-       return
-         To_LL_VSI (vmsumshs (To_LL_VSS (A), To_LL_VSS (B), To_LL_VSI (C)));
-    end vec_vmsumshs;
- 
-    ------------------
-    -- vec_vmsumuhs --
-    ------------------
- 
-    function vec_vmsumuhs
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short;
-       C : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return
-         To_LL_VUI (vmsumuhs (To_LL_VSS (A), To_LL_VSS (B), To_LL_VSI (C)));
-    end vec_vmsumuhs;
- 
-    ----------------
-    -- vec_mtvscr --
-    ----------------
- 
-    procedure vec_mtvscr
-      (A : vector_signed_int)
-    is
-    begin
-       mtvscr (To_LL_VSI (A));
-    end vec_mtvscr;
- 
-    procedure vec_mtvscr
-      (A : vector_unsigned_int)
-    is
-    begin
-       mtvscr (To_LL_VSI (A));
-    end vec_mtvscr;
- 
-    procedure vec_mtvscr
-      (A : vector_bool_int)
-    is
-    begin
-       mtvscr (To_LL_VSI (A));
-    end vec_mtvscr;
- 
-    procedure vec_mtvscr
-      (A : vector_signed_short)
-    is
-    begin
-       mtvscr (To_LL_VSI (A));
-    end vec_mtvscr;
- 
-    procedure vec_mtvscr
-      (A : vector_unsigned_short)
-    is
-    begin
-       mtvscr (To_LL_VSI (A));
-    end vec_mtvscr;
- 
-    procedure vec_mtvscr
-      (A : vector_bool_short)
-    is
-    begin
-       mtvscr (To_LL_VSI (A));
-    end vec_mtvscr;
- 
-    procedure vec_mtvscr
-      (A : vector_pixel)
-    is
-    begin
-       mtvscr (To_LL_VSI (A));
-    end vec_mtvscr;
- 
-    procedure vec_mtvscr
-      (A : vector_signed_char)
-    is
-    begin
-       mtvscr (To_LL_VSI (A));
-    end vec_mtvscr;
- 
-    procedure vec_mtvscr
-      (A : vector_unsigned_char)
-    is
-    begin
-       mtvscr (To_LL_VSI (A));
-    end vec_mtvscr;
- 
-    procedure vec_mtvscr
-      (A : vector_bool_char)
-    is
-    begin
-       mtvscr (To_LL_VSI (A));
-    end vec_mtvscr;
- 
-    --------------
-    -- vec_mule --
-    --------------
- 
-    function vec_mule
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vmuleub (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_mule;
- 
-    function vec_mule
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vmulesb (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_mule;
- 
-    function vec_mule
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vmuleuh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_mule;
- 
-    function vec_mule
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vmulesh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_mule;
- 
-    -----------------
-    -- vec_vmulesh --
-    -----------------
- 
-    function vec_vmulesh
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vmulesh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vmulesh;
- 
-    -----------------
-    -- vec_vmuleuh --
-    -----------------
- 
-    function vec_vmuleuh
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vmuleuh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vmuleuh;
- 
-    -----------------
-    -- vec_vmulesb --
-    -----------------
- 
-    function vec_vmulesb
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vmuleub (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vmulesb;
- 
-    -----------------
-    -- vec_vmuleub --
-    -----------------
- 
-    function vec_vmuleub
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vmuleub (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vmuleub;
- 
-    --------------
-    -- vec_mulo --
-    --------------
- 
-    function vec_mulo
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vmuloub (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_mulo;
- 
-    function vec_mulo
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vmulosb (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_mulo;
- 
-    function vec_mulo
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vmulouh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_mulo;
- 
-    function vec_mulo
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vmulosh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_mulo;
- 
-    -----------------
-    -- vec_vmulosh --
-    -----------------
- 
-    function vec_vmulosh
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vmulosh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vmulosh;
- 
-    -----------------
-    -- vec_vmulouh --
-    -----------------
- 
-    function vec_vmulouh
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vmulouh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vmulouh;
- 
-    -----------------
-    -- vec_vmulosb --
-    -----------------
- 
-    function vec_vmulosb
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vmulosb (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vmulosb;
- 
-    -----------------
-    -- vec_vmuloub --
-    -----------------
- 
-    function vec_vmuloub
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vmuloub (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vmuloub;
- 
-    ---------------
-    -- vec_nmsub --
-    ---------------
- 
-    function vec_nmsub
-      (A : vector_float;
-       B : vector_float;
-       C : vector_float) return vector_float
-    is
-    begin
-       return To_LL_VF (vnmsubfp (To_LL_VF (A), To_LL_VF (B), To_LL_VF (C)));
-    end vec_nmsub;
- 
-    -------------
-    -- vec_nor --
-    -------------
- 
-    function vec_nor
-      (A : vector_float;
-       B : vector_float) return vector_float
-    is
-    begin
-       return To_LL_VF (vnor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_nor;
- 
-    function vec_nor
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vnor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_nor;
- 
-    function vec_nor
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vnor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_nor;
- 
-    function vec_nor
-      (A : vector_bool_int;
-       B : vector_bool_int) return vector_bool_int
-    is
-    begin
-       return To_LL_VBI (vnor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_nor;
- 
-    function vec_nor
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vnor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_nor;
- 
-    function vec_nor
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vnor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_nor;
- 
-    function vec_nor
-      (A : vector_bool_short;
-       B : vector_bool_short) return vector_bool_short
-    is
-    begin
-       return To_LL_VBS (vnor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_nor;
- 
-    function vec_nor
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vnor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_nor;
- 
-    function vec_nor
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vnor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_nor;
- 
-    function vec_nor
-      (A : vector_bool_char;
-       B : vector_bool_char) return vector_bool_char
-    is
-    begin
-       return To_LL_VBC (vnor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_nor;
- 
-    ------------
-    -- vec_or --
-    ------------
- 
-    function vec_or
-      (A : vector_float;
-       B : vector_float) return vector_float
-    is
-    begin
-       return To_LL_VF (vor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_or;
- 
-    function vec_or
-      (A : vector_float;
-       B : vector_bool_int) return vector_float
-    is
-    begin
-       return To_LL_VF (vor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_or;
- 
-    function vec_or
-      (A : vector_bool_int;
-       B : vector_float) return vector_float
-    is
-    begin
-       return To_LL_VF (vor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_or;
- 
-    function vec_or
-      (A : vector_bool_int;
-       B : vector_bool_int) return vector_bool_int
-    is
-    begin
-       return To_LL_VBI (vor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_or;
- 
-    function vec_or
-      (A : vector_bool_int;
-       B : vector_signed_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_or;
- 
-    function vec_or
-      (A : vector_signed_int;
-       B : vector_bool_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_or;
- 
-    function vec_or
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_or;
- 
-    function vec_or
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_or;
- 
-    function vec_or
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_or;
- 
-    function vec_or
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_or;
- 
-    function vec_or
-      (A : vector_bool_short;
-       B : vector_bool_short) return vector_bool_short
-    is
-    begin
-       return To_LL_VBS (vor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_or;
- 
-    function vec_or
-      (A : vector_bool_short;
-       B : vector_signed_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_or;
- 
-    function vec_or
-      (A : vector_signed_short;
-       B : vector_bool_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_or;
- 
-    function vec_or
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_or;
- 
-    function vec_or
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_or;
- 
-    function vec_or
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_or;
- 
-    function vec_or
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_or;
- 
-    function vec_or
-      (A : vector_bool_char;
-       B : vector_signed_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_or;
- 
-    function vec_or
-      (A : vector_bool_char;
-       B : vector_bool_char) return vector_bool_char
-    is
-    begin
-       return To_LL_VBC (vor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_or;
- 
-    function vec_or
-      (A : vector_signed_char;
-       B : vector_bool_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_or;
- 
-    function vec_or
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_or;
- 
-    function vec_or
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_or;
- 
-    function vec_or
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_or;
- 
-    function vec_or
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_or;
- 
-    --------------
-    -- vec_pack --
-    --------------
- 
-    function vec_pack
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vpkuhum (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_pack;
- 
-    function vec_pack
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vpkuhum (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_pack;
- 
-    function vec_pack
-      (A : vector_bool_short;
-       B : vector_bool_short) return vector_bool_char
-    is
-    begin
-       return To_LL_VBC (vpkuhum (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_pack;
- 
-    function vec_pack
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vpkuwum (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_pack;
- 
-    function vec_pack
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vpkuwum (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_pack;
- 
-    function vec_pack
-      (A : vector_bool_int;
-       B : vector_bool_int) return vector_bool_short
-    is
-    begin
-       return To_LL_VBS (vpkuwum (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_pack;
- 
-    -----------------
-    -- vec_vpkuwum --
-    -----------------
- 
-    function vec_vpkuwum
-      (A : vector_bool_int;
-       B : vector_bool_int) return vector_bool_short
-    is
-    begin
-       return To_LL_VBS (vpkuwum (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vpkuwum;
- 
-    function vec_vpkuwum
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vpkuwum (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vpkuwum;
- 
-    function vec_vpkuwum
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vpkuwum (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vpkuwum;
- 
-    -----------------
-    -- vec_vpkuhum --
-    -----------------
- 
-    function vec_vpkuhum
-      (A : vector_bool_short;
-       B : vector_bool_short) return vector_bool_char
-    is
-    begin
-       return To_LL_VBC (vpkuhum (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vpkuhum;
- 
-    function vec_vpkuhum
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vpkuhum (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vpkuhum;
- 
-    function vec_vpkuhum
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vpkuhum (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vpkuhum;
- 
-    ----------------
-    -- vec_packpx --
-    ----------------
- 
-    function vec_packpx
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_pixel
-    is
-    begin
-       return To_LL_VP (vpkpx (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_packpx;
- 
-    ---------------
-    -- vec_packs --
-    ---------------
- 
-    function vec_packs
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vpkuhus (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_packs;
- 
-    function vec_packs
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vpkshss (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_packs;
- 
-    function vec_packs
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vpkuwus (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_packs;
- 
-    function vec_packs
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vpkswss (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_packs;
- 
-    -----------------
-    -- vec_vpkswss --
-    -----------------
- 
-    function vec_vpkswss
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vpkswss (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vpkswss;
- 
-    -----------------
-    -- vec_vpkuwus --
-    -----------------
- 
-    function vec_vpkuwus
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vpkuwus (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vpkuwus;
- 
-    -----------------
-    -- vec_vpkshss --
-    -----------------
- 
-    function vec_vpkshss
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vpkshss (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vpkshss;
- 
-    -----------------
-    -- vec_vpkuhus --
-    -----------------
- 
-    function vec_vpkuhus
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vpkuhus (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vpkuhus;
- 
-    ----------------
-    -- vec_packsu --
-    ----------------
- 
-    function vec_packsu
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vpkuhus (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_packsu;
- 
-    function vec_packsu
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vpkshus (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_packsu;
- 
-    function vec_packsu
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vpkuwus (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_packsu;
- 
-    function vec_packsu
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vpkswus (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_packsu;
- 
-    -----------------
-    -- vec_vpkswus --
-    -----------------
- 
-    function vec_vpkswus
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vpkswus (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vpkswus;
- 
-    -----------------
-    -- vec_vpkshus --
-    -----------------
- 
-    function vec_vpkshus
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vpkshus (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vpkshus;
- 
-    --------------
-    -- vec_perm --
-    --------------
- 
-    function vec_perm
-      (A : vector_float;
-       B : vector_float;
-       C : vector_unsigned_char) return vector_float
-    is
-    begin
-       return
-         To_LL_VF (vperm_4si (To_LL_VSI (A), To_LL_VSI (B), To_LL_VSC (C)));
-    end vec_perm;
- 
-    function vec_perm
-      (A : vector_signed_int;
-       B : vector_signed_int;
-       C : vector_unsigned_char) return vector_signed_int
-    is
-    begin
-       return
-         To_LL_VSI (vperm_4si (To_LL_VSI (A), To_LL_VSI (B), To_LL_VSC (C)));
-    end vec_perm;
- 
-    function vec_perm
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int;
-       C : vector_unsigned_char) return vector_unsigned_int
-    is
-    begin
-       return
-         To_LL_VUI (vperm_4si (To_LL_VSI (A), To_LL_VSI (B), To_LL_VSC (C)));
-    end vec_perm;
- 
-    function vec_perm
-      (A : vector_bool_int;
-       B : vector_bool_int;
-       C : vector_unsigned_char) return vector_bool_int
-    is
-    begin
-       return
-         To_LL_VBI (vperm_4si (To_LL_VSI (A), To_LL_VSI (B), To_LL_VSC (C)));
-    end vec_perm;
- 
-    function vec_perm
-      (A : vector_signed_short;
-       B : vector_signed_short;
-       C : vector_unsigned_char) return vector_signed_short
-    is
-    begin
-       return
-         To_LL_VSS (vperm_4si (To_LL_VSI (A), To_LL_VSI (B), To_LL_VSC (C)));
-    end vec_perm;
- 
-    function vec_perm
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short;
-       C : vector_unsigned_char) return vector_unsigned_short
-    is
-    begin
-       return
-         To_LL_VUS (vperm_4si (To_LL_VSI (A), To_LL_VSI (B), To_LL_VSC (C)));
-    end vec_perm;
- 
-    function vec_perm
-      (A : vector_bool_short;
-       B : vector_bool_short;
-       C : vector_unsigned_char) return vector_bool_short
-    is
-    begin
-       return
-         To_LL_VBS (vperm_4si (To_LL_VSI (A), To_LL_VSI (B), To_LL_VSC (C)));
-    end vec_perm;
- 
-    function vec_perm
-      (A : vector_pixel;
-       B : vector_pixel;
-       C : vector_unsigned_char) return vector_pixel
-    is
-    begin
-       return To_LL_VP
-         (vperm_4si (To_LL_VSI (A), To_LL_VSI (B), To_LL_VSC (C)));
-    end vec_perm;
- 
-    function vec_perm
-      (A : vector_signed_char;
-       B : vector_signed_char;
-       C : vector_unsigned_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC
-         (vperm_4si (To_LL_VSI (A), To_LL_VSI (B), To_LL_VSC (C)));
-    end vec_perm;
- 
-    function vec_perm
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char;
-       C : vector_unsigned_char) return vector_unsigned_char
-    is
-    begin
-       return
-         To_LL_VUC (vperm_4si (To_LL_VSI (A), To_LL_VSI (B), To_LL_VSC (C)));
-    end vec_perm;
- 
-    function vec_perm
-      (A : vector_bool_char;
-       B : vector_bool_char;
-       C : vector_unsigned_char) return vector_bool_char
-    is
-    begin
-       return
-         To_LL_VBC (vperm_4si (To_LL_VSI (A), To_LL_VSI (B), To_LL_VSC (C)));
-    end vec_perm;
- 
-    ------------
-    -- vec_re --
-    ------------
- 
-    function vec_re
-      (A : vector_float) return vector_float
-    is
-    begin
-       return To_LL_VF (vrefp (To_LL_VF (A)));
-    end vec_re;
- 
-    ------------
-    -- vec_rl --
-    ------------
- 
-    function vec_rl
-      (A : vector_signed_char;
-       B : vector_unsigned_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vrlb (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_rl;
- 
-    function vec_rl
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vrlb (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_rl;
- 
-    function vec_rl
-      (A : vector_signed_short;
-       B : vector_unsigned_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vrlh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_rl;
- 
-    function vec_rl
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vrlh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_rl;
- 
-    function vec_rl
-      (A : vector_signed_int;
-       B : vector_unsigned_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vrlw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_rl;
- 
-    function vec_rl
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vrlw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_rl;
- 
-    --------------
-    -- vec_vrlw --
-    --------------
- 
-    function vec_vrlw
-      (A : vector_signed_int;
-       B : vector_unsigned_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vrlw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vrlw;
- 
-    function vec_vrlw
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vrlw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vrlw;
- 
-    --------------
-    -- vec_vrlh --
-    --------------
- 
-    function vec_vrlh
-      (A : vector_signed_short;
-       B : vector_unsigned_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vrlh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vrlh;
- 
-    function vec_vrlh
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vrlh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vrlh;
- 
-    --------------
-    -- vec_vrlb --
-    --------------
- 
-    function vec_vrlb
-      (A : vector_signed_char;
-       B : vector_unsigned_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vrlb (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vrlb;
- 
-    function vec_vrlb
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vrlb (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vrlb;
- 
-    ---------------
-    -- vec_round --
-    ---------------
- 
-    function vec_round
-      (A : vector_float) return vector_float
-    is
-    begin
-       return To_LL_VF (vrfin (To_LL_VF (A)));
-    end vec_round;
- 
-    ----------------
-    -- vec_rsqrte --
-    ----------------
- 
-    function vec_rsqrte
-      (A : vector_float) return vector_float
-    is
-    begin
-       return To_LL_VF (vrsqrtefp (To_LL_VF (A)));
-    end vec_rsqrte;
- 
-    -------------
-    -- vec_sel --
-    -------------
- 
-    function vec_sel
-      (A : vector_float;
-       B : vector_float;
-       C : vector_bool_int) return vector_float
-    is
-    begin
-       return To_LL_VF (vsel_4si (To_LL_VSI (A), To_LL_VSI (B), To_LL_VSI (C)));
-    end vec_sel;
- 
-    function vec_sel
-      (A : vector_float;
-       B : vector_float;
-       C : vector_unsigned_int) return vector_float
-    is
-    begin
-       return To_LL_VF (vsel_4si (To_LL_VSI (A), To_LL_VSI (B), To_LL_VSI (C)));
-    end vec_sel;
- 
-    function vec_sel
-      (A : vector_signed_int;
-       B : vector_signed_int;
-       C : vector_bool_int) return vector_signed_int
-    is
-    begin
-       return
-         To_LL_VSI (vsel_4si (To_LL_VSI (A), To_LL_VSI (B), To_LL_VSI (C)));
-    end vec_sel;
- 
-    function vec_sel
-      (A : vector_signed_int;
-       B : vector_signed_int;
-       C : vector_unsigned_int) return vector_signed_int
-    is
-    begin
-       return
-         To_LL_VSI (vsel_4si (To_LL_VSI (A), To_LL_VSI (B), To_LL_VSI (C)));
-    end vec_sel;
- 
-    function vec_sel
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int;
-       C : vector_bool_int) return vector_unsigned_int
-    is
-    begin
-       return
-         To_LL_VUI (vsel_4si (To_LL_VSI (A), To_LL_VSI (B), To_LL_VSI (C)));
-    end vec_sel;
- 
-    function vec_sel
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int;
-       C : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return
-         To_LL_VUI (vsel_4si (To_LL_VSI (A), To_LL_VSI (B), To_LL_VSI (C)));
-    end vec_sel;
- 
-    function vec_sel
-      (A : vector_bool_int;
-       B : vector_bool_int;
-       C : vector_bool_int) return vector_bool_int
-    is
-    begin
-       return
-         To_LL_VBI (vsel_4si (To_LL_VSI (A), To_LL_VSI (B), To_LL_VSI (C)));
-    end vec_sel;
- 
-    function vec_sel
-      (A : vector_bool_int;
-       B : vector_bool_int;
-       C : vector_unsigned_int) return vector_bool_int
-    is
-    begin
-       return
-         To_LL_VBI (vsel_4si (To_LL_VSI (A), To_LL_VSI (B), To_LL_VSI (C)));
-    end vec_sel;
- 
-    function vec_sel
-      (A : vector_signed_short;
-       B : vector_signed_short;
-       C : vector_bool_short) return vector_signed_short
-    is
-    begin
-       return
-         To_LL_VSS (vsel_4si (To_LL_VSI (A), To_LL_VSI (B), To_LL_VSI (C)));
-    end vec_sel;
- 
-    function vec_sel
-      (A : vector_signed_short;
-       B : vector_signed_short;
-       C : vector_unsigned_short) return vector_signed_short
-    is
-    begin
-       return
-         To_LL_VSS (vsel_4si (To_LL_VSI (A), To_LL_VSI (B), To_LL_VSI (C)));
-    end vec_sel;
- 
-    function vec_sel
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short;
-       C : vector_bool_short) return vector_unsigned_short
-    is
-    begin
-       return
-         To_LL_VUS (vsel_4si (To_LL_VSI (A), To_LL_VSI (B), To_LL_VSI (C)));
-    end vec_sel;
- 
-    function vec_sel
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short;
-       C : vector_unsigned_short) return vector_unsigned_short
-    is
-    begin
-       return
-         To_LL_VUS (vsel_4si (To_LL_VSI (A), To_LL_VSI (B), To_LL_VSI (C)));
-    end vec_sel;
- 
-    function vec_sel
-      (A : vector_bool_short;
-       B : vector_bool_short;
-       C : vector_bool_short) return vector_bool_short
-    is
-    begin
-       return
-         To_LL_VBS (vsel_4si (To_LL_VSI (A), To_LL_VSI (B), To_LL_VSI (C)));
-    end vec_sel;
- 
-    function vec_sel
-      (A : vector_bool_short;
-       B : vector_bool_short;
-       C : vector_unsigned_short) return vector_bool_short
-    is
-    begin
-       return
-         To_LL_VBS (vsel_4si (To_LL_VSI (A), To_LL_VSI (B), To_LL_VSI (C)));
-    end vec_sel;
- 
-    function vec_sel
-      (A : vector_signed_char;
-       B : vector_signed_char;
-       C : vector_bool_char) return vector_signed_char
-    is
-    begin
-       return
-         To_LL_VSC (vsel_4si (To_LL_VSI (A), To_LL_VSI (B), To_LL_VSI (C)));
-    end vec_sel;
- 
-    function vec_sel
-      (A : vector_signed_char;
-       B : vector_signed_char;
-       C : vector_unsigned_char) return vector_signed_char
-    is
-    begin
-       return
-         To_LL_VSC (vsel_4si (To_LL_VSI (A), To_LL_VSI (B), To_LL_VSI (C)));
-    end vec_sel;
- 
-    function vec_sel
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char;
-       C : vector_bool_char) return vector_unsigned_char
-    is
-    begin
-       return
-         To_LL_VUC (vsel_4si (To_LL_VSI (A), To_LL_VSI (B), To_LL_VSI (C)));
-    end vec_sel;
- 
-    function vec_sel
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char;
-       C : vector_unsigned_char) return vector_unsigned_char
-    is
-    begin
-       return
-         To_LL_VUC (vsel_4si (To_LL_VSI (A), To_LL_VSI (B), To_LL_VSI (C)));
-    end vec_sel;
- 
-    function vec_sel
-      (A : vector_bool_char;
-       B : vector_bool_char;
-       C : vector_bool_char) return vector_bool_char
-    is
-    begin
-       return
-         To_LL_VBC (vsel_4si (To_LL_VSI (A), To_LL_VSI (B), To_LL_VSI (C)));
-    end vec_sel;
- 
-    function vec_sel
-      (A : vector_bool_char;
-       B : vector_bool_char;
-       C : vector_unsigned_char) return vector_bool_char
-    is
-    begin
-       return
-         To_LL_VBC (vsel_4si (To_LL_VSI (A), To_LL_VSI (B), To_LL_VSI (C)));
-    end vec_sel;
- 
-    ------------
-    -- vec_sl --
-    ------------
- 
-    function vec_sl
-      (A : vector_signed_char;
-       B : vector_unsigned_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vslb (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_sl;
- 
-    function vec_sl
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vslb (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_sl;
- 
-    function vec_sl
-      (A : vector_signed_short;
-       B : vector_unsigned_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vslh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_sl;
- 
-    function vec_sl
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vslh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_sl;
- 
-    function vec_sl
-      (A : vector_signed_int;
-       B : vector_unsigned_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vslw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sl;
- 
-    function vec_sl
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vslw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sl;
- 
-    --------------
-    -- vec_vslw --
-    --------------
- 
-    function vec_vslw
-      (A : vector_signed_int;
-       B : vector_unsigned_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vslw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vslw;
- 
-    function vec_vslw
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vslw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vslw;
- 
-    --------------
-    -- vec_vslh --
-    --------------
- 
-    function vec_vslh
-      (A : vector_signed_short;
-       B : vector_unsigned_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vslh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vslh;
- 
-    function vec_vslh
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vslh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vslh;
- 
-    --------------
-    -- vec_vslb --
-    --------------
- 
-    function vec_vslb
-      (A : vector_signed_char;
-       B : vector_unsigned_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vslb (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vslb;
- 
-    function vec_vslb
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vslb (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vslb;
- 
-    -------------
-    -- vec_sll --
-    -------------
- 
-    function vec_sll
-      (A : vector_signed_int;
-       B : vector_unsigned_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vsl (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sll;
- 
-    function vec_sll
-      (A : vector_signed_int;
-       B : vector_unsigned_short) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vsl (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sll;
- 
-    function vec_sll
-      (A : vector_signed_int;
-       B : vector_unsigned_char) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vsl (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sll;
- 
-    function vec_sll
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vsl (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sll;
- 
-    function vec_sll
-      (A : vector_unsigned_int;
-       B : vector_unsigned_short) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vsl (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sll;
- 
-    function vec_sll
-      (A : vector_unsigned_int;
-       B : vector_unsigned_char) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vsl (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sll;
- 
-    function vec_sll
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return vector_bool_int
-    is
-    begin
-       return To_LL_VBI (vsl (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sll;
- 
-    function vec_sll
-      (A : vector_bool_int;
-       B : vector_unsigned_short) return vector_bool_int
-    is
-    begin
-       return To_LL_VBI (vsl (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sll;
- 
-    function vec_sll
-      (A : vector_bool_int;
-       B : vector_unsigned_char) return vector_bool_int
-    is
-    begin
-       return To_LL_VBI (vsl (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sll;
- 
-    function vec_sll
-      (A : vector_signed_short;
-       B : vector_unsigned_int) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vsl (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sll;
- 
-    function vec_sll
-      (A : vector_signed_short;
-       B : vector_unsigned_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vsl (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sll;
- 
-    function vec_sll
-      (A : vector_signed_short;
-       B : vector_unsigned_char) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vsl (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sll;
- 
-    function vec_sll
-      (A : vector_unsigned_short;
-       B : vector_unsigned_int) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vsl (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sll;
- 
-    function vec_sll
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vsl (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sll;
- 
-    function vec_sll
-      (A : vector_unsigned_short;
-       B : vector_unsigned_char) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vsl (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sll;
- 
-    function vec_sll
-      (A : vector_bool_short;
-       B : vector_unsigned_int) return vector_bool_short
-    is
-    begin
-       return To_LL_VBS (vsl (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sll;
- 
-    function vec_sll
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return vector_bool_short
-    is
-    begin
-       return To_LL_VBS (vsl (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sll;
- 
-    function vec_sll
-      (A : vector_bool_short;
-       B : vector_unsigned_char) return vector_bool_short
-    is
-    begin
-       return To_LL_VBS (vsl (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sll;
- 
-    function vec_sll
-      (A : vector_pixel;
-       B : vector_unsigned_int) return vector_pixel
-    is
-    begin
-       return To_LL_VP (vsl (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sll;
- 
-    function vec_sll
-      (A : vector_pixel;
-       B : vector_unsigned_short) return vector_pixel
-    is
-    begin
-       return To_LL_VP (vsl (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sll;
- 
-    function vec_sll
-      (A : vector_pixel;
-       B : vector_unsigned_char) return vector_pixel
-    is
-    begin
-       return To_LL_VP (vsl (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sll;
- 
-    function vec_sll
-      (A : vector_signed_char;
-       B : vector_unsigned_int) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vsl (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sll;
- 
-    function vec_sll
-      (A : vector_signed_char;
-       B : vector_unsigned_short) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vsl (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sll;
- 
-    function vec_sll
-      (A : vector_signed_char;
-       B : vector_unsigned_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vsl (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sll;
- 
-    function vec_sll
-      (A : vector_unsigned_char;
-       B : vector_unsigned_int) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vsl (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sll;
- 
-    function vec_sll
-      (A : vector_unsigned_char;
-       B : vector_unsigned_short) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vsl (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sll;
- 
-    function vec_sll
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vsl (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sll;
- 
-    function vec_sll
-      (A : vector_bool_char;
-       B : vector_unsigned_int) return vector_bool_char
-    is
-    begin
-       return To_LL_VBC (vsl (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sll;
- 
-    function vec_sll
-      (A : vector_bool_char;
-       B : vector_unsigned_short) return vector_bool_char
-    is
-    begin
-       return To_LL_VBC (vsl (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sll;
- 
-    function vec_sll
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return vector_bool_char
-    is
-    begin
-       return To_LL_VBC (vsl (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sll;
- 
-    -------------
-    -- vec_slo --
-    -------------
- 
-    function vec_slo
-      (A : vector_float;
-       B : vector_signed_char) return vector_float
-    is
-    begin
-       return To_LL_VF (vslo (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_slo;
- 
-    function vec_slo
-      (A : vector_float;
-       B : vector_unsigned_char) return vector_float
-    is
-    begin
-       return To_LL_VF (vslo (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_slo;
- 
-    function vec_slo
-      (A : vector_signed_int;
-       B : vector_signed_char) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vslo (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_slo;
- 
-    function vec_slo
-      (A : vector_signed_int;
-       B : vector_unsigned_char) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vslo (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_slo;
- 
-    function vec_slo
-      (A : vector_unsigned_int;
-       B : vector_signed_char) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vslo (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_slo;
- 
-    function vec_slo
-      (A : vector_unsigned_int;
-       B : vector_unsigned_char) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vslo (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_slo;
- 
-    function vec_slo
-      (A : vector_signed_short;
-       B : vector_signed_char) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vslo (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_slo;
- 
-    function vec_slo
-      (A : vector_signed_short;
-       B : vector_unsigned_char) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vslo (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_slo;
- 
-    function vec_slo
-      (A : vector_unsigned_short;
-       B : vector_signed_char) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vslo (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_slo;
- 
-    function vec_slo
-      (A : vector_unsigned_short;
-       B : vector_unsigned_char) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vslo (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_slo;
- 
-    function vec_slo
-      (A : vector_pixel;
-       B : vector_signed_char) return vector_pixel
-    is
-    begin
-       return To_LL_VP (vslo (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_slo;
- 
-    function vec_slo
-      (A : vector_pixel;
-       B : vector_unsigned_char) return vector_pixel
-    is
-    begin
-       return To_LL_VP (vslo (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_slo;
- 
-    function vec_slo
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vslo (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_slo;
- 
-    function vec_slo
-      (A : vector_signed_char;
-       B : vector_unsigned_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vslo (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_slo;
- 
-    function vec_slo
-      (A : vector_unsigned_char;
-       B : vector_signed_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vslo (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_slo;
- 
-    function vec_slo
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vslo (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_slo;
- 
-    ------------
-    -- vec_sr --
-    ------------
- 
-    function vec_sr
-      (A : vector_signed_char;
-       B : vector_unsigned_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vsrb (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_sr;
- 
-    function vec_sr
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vsrb (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_sr;
- 
-    function vec_sr
-      (A : vector_signed_short;
-       B : vector_unsigned_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vsrh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_sr;
- 
-    function vec_sr
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vsrh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_sr;
- 
-    function vec_sr
-      (A : vector_signed_int;
-       B : vector_unsigned_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vsrw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sr;
- 
-    function vec_sr
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vsrw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sr;
- 
-    --------------
-    -- vec_vsrw --
-    --------------
- 
-    function vec_vsrw
-      (A : vector_signed_int;
-       B : vector_unsigned_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vsrw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vsrw;
- 
-    function vec_vsrw
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vsrw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vsrw;
- 
-    --------------
-    -- vec_vsrh --
-    --------------
- 
-    function vec_vsrh
-      (A : vector_signed_short;
-       B : vector_unsigned_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vsrh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vsrh;
- 
-    function vec_vsrh
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vsrh (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vsrh;
- 
-    --------------
-    -- vec_vsrb --
-    --------------
- 
-    function vec_vsrb
-      (A : vector_signed_char;
-       B : vector_unsigned_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vsrb (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vsrb;
- 
-    function vec_vsrb
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vsrb (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vsrb;
- 
-    -------------
-    -- vec_sra --
-    -------------
- 
-    function vec_sra
-      (A : vector_signed_char;
-       B : vector_unsigned_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vsrab (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_sra;
- 
-    function vec_sra
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vsrab (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_sra;
- 
-    function vec_sra
-      (A : vector_signed_short;
-       B : vector_unsigned_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vsrah (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_sra;
- 
-    function vec_sra
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vsrah (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_sra;
- 
-    function vec_sra
-      (A : vector_signed_int;
-       B : vector_unsigned_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vsraw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sra;
- 
-    function vec_sra
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vsraw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sra;
- 
-    ---------------
-    -- vec_vsraw --
-    ---------------
- 
-    function vec_vsraw
-      (A : vector_signed_int;
-       B : vector_unsigned_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vsraw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vsraw;
- 
-    function vec_vsraw
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vsraw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vsraw;
- 
-    ---------------
-    -- vec_vsrah --
-    ---------------
- 
-    function vec_vsrah
-      (A : vector_signed_short;
-       B : vector_unsigned_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vsrah (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vsrah;
- 
-    function vec_vsrah
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vsrah (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vsrah;
- 
-    ---------------
-    -- vec_vsrab --
-    ---------------
- 
-    function vec_vsrab
-      (A : vector_signed_char;
-       B : vector_unsigned_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vsrab (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vsrab;
- 
-    function vec_vsrab
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vsrab (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vsrab;
- 
-    -------------
-    -- vec_srl --
-    -------------
- 
-    function vec_srl
-      (A : vector_signed_int;
-       B : vector_unsigned_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vsr (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_srl;
- 
-    function vec_srl
-      (A : vector_signed_int;
-       B : vector_unsigned_short) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vsr (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_srl;
- 
-    function vec_srl
-      (A : vector_signed_int;
-       B : vector_unsigned_char) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vsr (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_srl;
- 
-    function vec_srl
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vsr (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_srl;
- 
-    function vec_srl
-      (A : vector_unsigned_int;
-       B : vector_unsigned_short) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vsr (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_srl;
- 
-    function vec_srl
-      (A : vector_unsigned_int;
-       B : vector_unsigned_char) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vsr (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_srl;
- 
-    function vec_srl
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return vector_bool_int
-    is
-    begin
-       return To_LL_VBI (vsr (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_srl;
- 
-    function vec_srl
-      (A : vector_bool_int;
-       B : vector_unsigned_short) return vector_bool_int
-    is
-    begin
-       return To_LL_VBI (vsr (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_srl;
- 
-    function vec_srl
-      (A : vector_bool_int;
-       B : vector_unsigned_char) return vector_bool_int
-    is
-    begin
-       return To_LL_VBI (vsr (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_srl;
- 
-    function vec_srl
-      (A : vector_signed_short;
-       B : vector_unsigned_int) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vsr (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_srl;
- 
-    function vec_srl
-      (A : vector_signed_short;
-       B : vector_unsigned_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vsr (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_srl;
- 
-    function vec_srl
-      (A : vector_signed_short;
-       B : vector_unsigned_char) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vsr (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_srl;
- 
-    function vec_srl
-      (A : vector_unsigned_short;
-       B : vector_unsigned_int) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vsr (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_srl;
- 
-    function vec_srl
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vsr (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_srl;
- 
-    function vec_srl
-      (A : vector_unsigned_short;
-       B : vector_unsigned_char) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vsr (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_srl;
- 
-    function vec_srl
-      (A : vector_bool_short;
-       B : vector_unsigned_int) return vector_bool_short
-    is
-    begin
-       return To_LL_VBS (vsr (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_srl;
- 
-    function vec_srl
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return vector_bool_short
-    is
-    begin
-       return To_LL_VBS (vsr (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_srl;
- 
-    function vec_srl
-      (A : vector_bool_short;
-       B : vector_unsigned_char) return vector_bool_short
-    is
-    begin
-       return To_LL_VBS (vsr (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_srl;
- 
-    function vec_srl
-      (A : vector_pixel;
-       B : vector_unsigned_int) return vector_pixel
-    is
-    begin
-       return To_LL_VP (vsr (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_srl;
- 
-    function vec_srl
-      (A : vector_pixel;
-       B : vector_unsigned_short) return vector_pixel
-    is
-    begin
-       return To_LL_VP (vsr (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_srl;
- 
-    function vec_srl
-      (A : vector_pixel;
-       B : vector_unsigned_char) return vector_pixel
-    is
-    begin
-       return To_LL_VP (vsr (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_srl;
- 
-    function vec_srl
-      (A : vector_signed_char;
-       B : vector_unsigned_int) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vsr (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_srl;
- 
-    function vec_srl
-      (A : vector_signed_char;
-       B : vector_unsigned_short) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vsr (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_srl;
- 
-    function vec_srl
-      (A : vector_signed_char;
-       B : vector_unsigned_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vsr (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_srl;
- 
-    function vec_srl
-      (A : vector_unsigned_char;
-       B : vector_unsigned_int) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vsr (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_srl;
- 
-    function vec_srl
-      (A : vector_unsigned_char;
-       B : vector_unsigned_short) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vsr (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_srl;
- 
-    function vec_srl
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vsr (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_srl;
- 
-    function vec_srl
-      (A : vector_bool_char;
-       B : vector_unsigned_int) return vector_bool_char
-    is
-    begin
-       return To_LL_VBC (vsr (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_srl;
- 
-    function vec_srl
-      (A : vector_bool_char;
-       B : vector_unsigned_short) return vector_bool_char
-    is
-    begin
-       return To_LL_VBC (vsr (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_srl;
- 
-    function vec_srl
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return vector_bool_char
-    is
-    begin
-       return To_LL_VBC (vsr (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_srl;
- 
-    -------------
-    -- vec_sro --
-    -------------
- 
-    function vec_sro
-      (A : vector_float;
-       B : vector_signed_char) return vector_float
-    is
-    begin
-       return To_LL_VF (vsro (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sro;
- 
-    function vec_sro
-      (A : vector_float;
-       B : vector_unsigned_char) return vector_float
-    is
-    begin
-       return To_LL_VF (vsro (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sro;
- 
-    function vec_sro
-      (A : vector_signed_int;
-       B : vector_signed_char) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vsro (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sro;
- 
-    function vec_sro
-      (A : vector_signed_int;
-       B : vector_unsigned_char) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vsro (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sro;
- 
-    function vec_sro
-      (A : vector_unsigned_int;
-       B : vector_signed_char) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vsro (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sro;
- 
-    function vec_sro
-      (A : vector_unsigned_int;
-       B : vector_unsigned_char) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vsro (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sro;
- 
-    function vec_sro
-      (A : vector_signed_short;
-       B : vector_signed_char) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vsro (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sro;
- 
-    function vec_sro
-      (A : vector_signed_short;
-       B : vector_unsigned_char) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vsro (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sro;
- 
-    function vec_sro
-      (A : vector_unsigned_short;
-       B : vector_signed_char) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vsro (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sro;
- 
-    function vec_sro
-      (A : vector_unsigned_short;
-       B : vector_unsigned_char) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vsro (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sro;
- 
-    function vec_sro
-      (A : vector_pixel;
-       B : vector_signed_char) return vector_pixel
-    is
-    begin
-       return To_LL_VP (vsro (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sro;
- 
-    function vec_sro
-      (A : vector_pixel;
-       B : vector_unsigned_char) return vector_pixel
-    is
-    begin
-       return To_LL_VP (vsro (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sro;
- 
-    function vec_sro
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vsro (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sro;
- 
-    function vec_sro
-      (A : vector_signed_char;
-       B : vector_unsigned_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vsro (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sro;
- 
-    function vec_sro
-      (A : vector_unsigned_char;
-       B : vector_signed_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vsro (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sro;
- 
-    function vec_sro
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vsro (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sro;
- 
-    ------------
-    -- vec_st --
-    ------------
- 
-    procedure vec_st
-      (A : vector_float;
-       B : c_int;
-       C : vector_float_ptr)
-    is
-    begin
-       stvx (To_LL_VSI (A), B, To_PTR (C));
-    end vec_st;
- 
-    procedure vec_st
-      (A : vector_float;
-       B : c_int;
-       C : float_ptr)
-    is
-    begin
-       stvx (To_LL_VSI (A), B, To_PTR (C));
-    end vec_st;
- 
-    procedure vec_st
-      (A : vector_signed_int;
-       B : c_int;
-       C : vector_signed_int_ptr)
-    is
-    begin
-       stvx (To_LL_VSI (A), B, To_PTR (C));
-    end vec_st;
- 
-    procedure vec_st
-      (A : vector_signed_int;
-       B : c_int;
-       C : int_ptr)
-    is
-    begin
-       stvx (To_LL_VSI (A), B, To_PTR (C));
-    end vec_st;
- 
-    procedure vec_st
-      (A : vector_unsigned_int;
-       B : c_int;
-       C : vector_unsigned_int_ptr)
-    is
-    begin
-       stvx (To_LL_VSI (A), B, To_PTR (C));
-    end vec_st;
- 
-    procedure vec_st
-      (A : vector_unsigned_int;
-       B : c_int;
-       C : unsigned_int_ptr)
-    is
-    begin
-       stvx (To_LL_VSI (A), B, To_PTR (C));
-    end vec_st;
- 
-    procedure vec_st
-      (A : vector_bool_int;
-       B : c_int;
-       C : vector_bool_int_ptr)
-    is
-    begin
-       stvx (To_LL_VSI (A), B, To_PTR (C));
-    end vec_st;
- 
-    procedure vec_st
-      (A : vector_bool_int;
-       B : c_int;
-       C : unsigned_int_ptr)
-    is
-    begin
-       stvx (To_LL_VSI (A), B, To_PTR (C));
-    end vec_st;
- 
-    procedure vec_st
-      (A : vector_bool_int;
-       B : c_int;
-       C : int_ptr)
-    is
-    begin
-       stvx (To_LL_VSI (A), B, To_PTR (C));
-    end vec_st;
- 
-    procedure vec_st
-      (A : vector_signed_short;
-       B : c_int;
-       C : vector_signed_short_ptr)
-    is
-    begin
-       stvx (To_LL_VSI (A), B, To_PTR (C));
-    end vec_st;
- 
-    procedure vec_st
-      (A : vector_signed_short;
-       B : c_int;
-       C : short_ptr)
-    is
-    begin
-       stvx (To_LL_VSI (A), B, To_PTR (C));
-    end vec_st;
- 
-    procedure vec_st
-      (A : vector_unsigned_short;
-       B : c_int;
-       C : vector_unsigned_short_ptr)
-    is
-    begin
-       stvx (To_LL_VSI (A), B, To_PTR (C));
-    end vec_st;
- 
-    procedure vec_st
-      (A : vector_unsigned_short;
-       B : c_int;
-       C : unsigned_short_ptr)
-    is
-    begin
-       stvx (To_LL_VSI (A), B, To_PTR (C));
-    end vec_st;
- 
-    procedure vec_st
-      (A : vector_bool_short;
-       B : c_int;
-       C : vector_bool_short_ptr)
-    is
-    begin
-       stvx (To_LL_VSI (A), B, To_PTR (C));
-    end vec_st;
- 
-    procedure vec_st
-      (A : vector_bool_short;
-       B : c_int;
-       C : unsigned_short_ptr)
-    is
-    begin
-       stvx (To_LL_VSI (A), B, To_PTR (C));
-    end vec_st;
- 
-    procedure vec_st
-      (A : vector_pixel;
-       B : c_int;
-       C : vector_pixel_ptr)
-    is
-    begin
-       stvx (To_LL_VSI (A), B, To_PTR (C));
-    end vec_st;
- 
-    procedure vec_st
-      (A : vector_pixel;
-       B : c_int;
-       C : unsigned_short_ptr)
-    is
-    begin
-       stvx (To_LL_VSI (A), B, To_PTR (C));
-    end vec_st;
- 
-    procedure vec_st
-      (A : vector_pixel;
-       B : c_int;
-       C : short_ptr)
-    is
-    begin
-       stvx (To_LL_VSI (A), B, To_PTR (C));
-    end vec_st;
- 
-    procedure vec_st
-      (A : vector_bool_short;
-       B : c_int;
-       C : short_ptr)
-    is
-    begin
-       stvx (To_LL_VSI (A), B, To_PTR (C));
-    end vec_st;
- 
-    procedure vec_st
-      (A : vector_signed_char;
-       B : c_int;
-       C : vector_signed_char_ptr)
-    is
-    begin
-       stvx (To_LL_VSI (A), B, To_PTR (C));
-    end vec_st;
- 
-    procedure vec_st
-      (A : vector_signed_char;
-       B : c_int;
-       C : signed_char_ptr)
-    is
-    begin
-       stvx (To_LL_VSI (A), B, To_PTR (C));
-    end vec_st;
- 
-    procedure vec_st
-      (A : vector_unsigned_char;
-       B : c_int;
-       C : vector_unsigned_char_ptr)
-    is
-    begin
-       stvx (To_LL_VSI (A), B, To_PTR (C));
-    end vec_st;
- 
-    procedure vec_st
-      (A : vector_unsigned_char;
-       B : c_int;
-       C : unsigned_char_ptr)
-    is
-    begin
-       stvx (To_LL_VSI (A), B, To_PTR (C));
-    end vec_st;
- 
-    procedure vec_st
-      (A : vector_bool_char;
-       B : c_int;
-       C : vector_bool_char_ptr)
-    is
-    begin
-       stvx (To_LL_VSI (A), B, To_PTR (C));
-    end vec_st;
- 
-    procedure vec_st
-      (A : vector_bool_char;
-       B : c_int;
-       C : unsigned_char_ptr)
-    is
-    begin
-       stvx (To_LL_VSI (A), B, To_PTR (C));
-    end vec_st;
- 
-    procedure vec_st
-      (A : vector_bool_char;
-       B : c_int;
-       C : signed_char_ptr)
-    is
-    begin
-       stvx (To_LL_VSI (A), B, To_PTR (C));
-    end vec_st;
- 
-    -------------
-    -- vec_ste --
-    -------------
- 
-    procedure vec_ste
-      (A : vector_signed_char;
-       B : c_int;
-       C : signed_char_ptr)
-    is
-    begin
-       stvebx (To_LL_VSC (A), B, To_PTR (C));
-    end vec_ste;
- 
-    procedure vec_ste
-      (A : vector_unsigned_char;
-       B : c_int;
-       C : unsigned_char_ptr)
-    is
-    begin
-       stvebx (To_LL_VSC (A), B, To_PTR (C));
-    end vec_ste;
- 
-    procedure vec_ste
-      (A : vector_bool_char;
-       B : c_int;
-       C : signed_char_ptr)
-    is
-    begin
-       stvebx (To_LL_VSC (A), B, To_PTR (C));
-    end vec_ste;
- 
-    procedure vec_ste
-      (A : vector_bool_char;
-       B : c_int;
-       C : unsigned_char_ptr)
-    is
-    begin
-       stvebx (To_LL_VSC (A), B, To_PTR (C));
-    end vec_ste;
- 
-    procedure vec_ste
-      (A : vector_signed_short;
-       B : c_int;
-       C : short_ptr)
-    is
-    begin
-       stvehx (To_LL_VSS (A), B, To_PTR (C));
-    end vec_ste;
- 
-    procedure vec_ste
-      (A : vector_unsigned_short;
-       B : c_int;
-       C : unsigned_short_ptr)
-    is
-    begin
-       stvehx (To_LL_VSS (A), B, To_PTR (C));
-    end vec_ste;
- 
-    procedure vec_ste
-      (A : vector_bool_short;
-       B : c_int;
-       C : short_ptr)
-    is
-    begin
-       stvehx (To_LL_VSS (A), B, To_PTR (C));
-    end vec_ste;
- 
-    procedure vec_ste
-      (A : vector_bool_short;
-       B : c_int;
-       C : unsigned_short_ptr)
-    is
-    begin
-       stvehx (To_LL_VSS (A), B, To_PTR (C));
-    end vec_ste;
- 
-    procedure vec_ste
-      (A : vector_pixel;
-       B : c_int;
-       C : short_ptr)
-    is
-    begin
-       stvehx (To_LL_VSS (A), B, To_PTR (C));
-    end vec_ste;
- 
-    procedure vec_ste
-      (A : vector_pixel;
-       B : c_int;
-       C : unsigned_short_ptr)
-    is
-    begin
-       stvehx (To_LL_VSS (A), B, To_PTR (C));
-    end vec_ste;
- 
-    procedure vec_ste
-      (A : vector_float;
-       B : c_int;
-       C : float_ptr)
-    is
-    begin
-       stvewx (To_LL_VSI (A), B, To_PTR (C));
-    end vec_ste;
- 
-    procedure vec_ste
-      (A : vector_signed_int;
-       B : c_int;
-       C : int_ptr)
-    is
-    begin
-       stvewx (To_LL_VSI (A), B, To_PTR (C));
-    end vec_ste;
- 
-    procedure vec_ste
-      (A : vector_unsigned_int;
-       B : c_int;
-       C : unsigned_int_ptr)
-    is
-    begin
-       stvewx (To_LL_VSI (A), B, To_PTR (C));
-    end vec_ste;
- 
-    procedure vec_ste
-      (A : vector_bool_int;
-       B : c_int;
-       C : int_ptr)
-    is
-    begin
-       stvewx (To_LL_VSI (A), B, To_PTR (C));
-    end vec_ste;
- 
-    procedure vec_ste
-      (A : vector_bool_int;
-       B : c_int;
-       C : unsigned_int_ptr)
-    is
-    begin
-       stvewx (To_LL_VSI (A), B, To_PTR (C));
-    end vec_ste;
- 
-    ----------------
-    -- vec_stvewx --
-    ----------------
- 
-    procedure vec_stvewx
-      (A : vector_float;
-       B : c_int;
-       C : float_ptr)
-    is
-    begin
-       stvewx (To_LL_VSI (A), B, To_PTR (C));
-    end vec_stvewx;
- 
-    procedure vec_stvewx
-      (A : vector_signed_int;
-       B : c_int;
-       C : int_ptr)
-    is
-    begin
-       stvewx (To_LL_VSI (A), B, To_PTR (C));
-    end vec_stvewx;
- 
-    procedure vec_stvewx
-      (A : vector_unsigned_int;
-       B : c_int;
-       C : unsigned_int_ptr)
-    is
-    begin
-       stvewx (To_LL_VSI (A), B, To_PTR (C));
-    end vec_stvewx;
- 
-    procedure vec_stvewx
-      (A : vector_bool_int;
-       B : c_int;
-       C : int_ptr)
-    is
-    begin
-       stvewx (To_LL_VSI (A), B, To_PTR (C));
-    end vec_stvewx;
- 
-    procedure vec_stvewx
-      (A : vector_bool_int;
-       B : c_int;
-       C : unsigned_int_ptr)
-    is
-    begin
-       stvewx (To_LL_VSI (A), B, To_PTR (C));
-    end vec_stvewx;
- 
-    ----------------
-    -- vec_stvehx --
-    ----------------
- 
-    procedure vec_stvehx
-      (A : vector_signed_short;
-       B : c_int;
-       C : short_ptr)
-    is
-    begin
-       stvehx (To_LL_VSS (A), B, To_PTR (C));
-    end vec_stvehx;
- 
-    procedure vec_stvehx
-      (A : vector_unsigned_short;
-       B : c_int;
-       C : unsigned_short_ptr)
-    is
-    begin
-       stvehx (To_LL_VSS (A), B, To_PTR (C));
-    end vec_stvehx;
- 
-    procedure vec_stvehx
-      (A : vector_bool_short;
-       B : c_int;
-       C : short_ptr)
-    is
-    begin
-       stvehx (To_LL_VSS (A), B, To_PTR (C));
-    end vec_stvehx;
- 
-    procedure vec_stvehx
-      (A : vector_bool_short;
-       B : c_int;
-       C : unsigned_short_ptr)
-    is
-    begin
-       stvehx (To_LL_VSS (A), B, To_PTR (C));
-    end vec_stvehx;
- 
-    procedure vec_stvehx
-      (A : vector_pixel;
-       B : c_int;
-       C : short_ptr)
-    is
-    begin
-       stvehx (To_LL_VSS (A), B, To_PTR (C));
-    end vec_stvehx;
- 
-    procedure vec_stvehx
-      (A : vector_pixel;
-       B : c_int;
-       C : unsigned_short_ptr)
-    is
-    begin
-       stvehx (To_LL_VSS (A), B, To_PTR (C));
-    end vec_stvehx;
- 
-    ----------------
-    -- vec_stvebx --
-    ----------------
- 
-    procedure vec_stvebx
-      (A : vector_signed_char;
-       B : c_int;
-       C : signed_char_ptr)
-    is
-    begin
-       stvebx (To_LL_VSC (A), B, To_PTR (C));
-    end vec_stvebx;
- 
-    procedure vec_stvebx
-      (A : vector_unsigned_char;
-       B : c_int;
-       C : unsigned_char_ptr)
-    is
-    begin
-       stvebx (To_LL_VSC (A), B, To_PTR (C));
-    end vec_stvebx;
- 
-    procedure vec_stvebx
-      (A : vector_bool_char;
-       B : c_int;
-       C : signed_char_ptr)
-    is
-    begin
-       stvebx (To_LL_VSC (A), B, To_PTR (C));
-    end vec_stvebx;
- 
-    procedure vec_stvebx
-      (A : vector_bool_char;
-       B : c_int;
-       C : unsigned_char_ptr)
-    is
-    begin
-       stvebx (To_LL_VSC (A), B, To_PTR (C));
-    end vec_stvebx;
- 
-    -------------
-    -- vec_stl --
-    -------------
- 
-    procedure vec_stl
-      (A : vector_float;
-       B : c_int;
-       C : vector_float_ptr)
-    is
-    begin
-       stvxl (To_LL_VSI (A), B, To_PTR (C));
-    end vec_stl;
- 
-    procedure vec_stl
-      (A : vector_float;
-       B : c_int;
-       C : float_ptr)
-    is
-    begin
-       stvxl (To_LL_VSI (A), B, To_PTR (C));
-    end vec_stl;
- 
-    procedure vec_stl
-      (A : vector_signed_int;
-       B : c_int;
-       C : vector_signed_int_ptr)
-    is
-    begin
-       stvxl (To_LL_VSI (A), B, To_PTR (C));
-    end vec_stl;
- 
-    procedure vec_stl
-      (A : vector_signed_int;
-       B : c_int;
-       C : int_ptr)
-    is
-    begin
-       stvxl (To_LL_VSI (A), B, To_PTR (C));
-    end vec_stl;
- 
-    procedure vec_stl
-      (A : vector_unsigned_int;
-       B : c_int;
-       C : vector_unsigned_int_ptr)
-    is
-    begin
-       stvxl (To_LL_VSI (A), B, To_PTR (C));
-    end vec_stl;
- 
-    procedure vec_stl
-      (A : vector_unsigned_int;
-       B : c_int;
-       C : unsigned_int_ptr)
-    is
-    begin
-       stvxl (To_LL_VSI (A), B, To_PTR (C));
-    end vec_stl;
- 
-    procedure vec_stl
-      (A : vector_bool_int;
-       B : c_int;
-       C : vector_bool_int_ptr)
-    is
-    begin
-       stvxl (To_LL_VSI (A), B, To_PTR (C));
-    end vec_stl;
- 
-    procedure vec_stl
-      (A : vector_bool_int;
-       B : c_int;
-       C : unsigned_int_ptr)
-    is
-    begin
-       stvxl (To_LL_VSI (A), B, To_PTR (C));
-    end vec_stl;
- 
-    procedure vec_stl
-      (A : vector_bool_int;
-       B : c_int;
-       C : int_ptr)
-    is
-    begin
-       stvxl (To_LL_VSI (A), B, To_PTR (C));
-    end vec_stl;
- 
-    procedure vec_stl
-      (A : vector_signed_short;
-       B : c_int;
-       C : vector_signed_short_ptr)
-    is
-    begin
-       stvxl (To_LL_VSI (A), B, To_PTR (C));
-    end vec_stl;
- 
-    procedure vec_stl
-      (A : vector_signed_short;
-       B : c_int;
-       C : short_ptr)
-    is
-    begin
-       stvxl (To_LL_VSI (A), B, To_PTR (C));
-    end vec_stl;
- 
-    procedure vec_stl
-      (A : vector_unsigned_short;
-       B : c_int;
-       C : vector_unsigned_short_ptr)
-    is
-    begin
-       stvxl (To_LL_VSI (A), B, To_PTR (C));
-    end vec_stl;
- 
-    procedure vec_stl
-      (A : vector_unsigned_short;
-       B : c_int;
-       C : unsigned_short_ptr)
-    is
-    begin
-       stvxl (To_LL_VSI (A), B, To_PTR (C));
-    end vec_stl;
- 
-    procedure vec_stl
-      (A : vector_bool_short;
-       B : c_int;
-       C : vector_bool_short_ptr)
-    is
-    begin
-       stvxl (To_LL_VSI (A), B, To_PTR (C));
-    end vec_stl;
- 
-    procedure vec_stl
-      (A : vector_bool_short;
-       B : c_int;
-       C : unsigned_short_ptr)
-    is
-    begin
-       stvxl (To_LL_VSI (A), B, To_PTR (C));
-    end vec_stl;
- 
-    procedure vec_stl
-      (A : vector_bool_short;
-       B : c_int;
-       C : short_ptr)
-    is
-    begin
-       stvxl (To_LL_VSI (A), B, To_PTR (C));
-    end vec_stl;
- 
-    procedure vec_stl
-      (A : vector_pixel;
-       B : c_int;
-       C : vector_pixel_ptr)
-    is
-    begin
-       stvxl (To_LL_VSI (A), B, To_PTR (C));
-    end vec_stl;
- 
-    procedure vec_stl
-      (A : vector_pixel;
-       B : c_int;
-       C : unsigned_short_ptr)
-    is
-    begin
-       stvxl (To_LL_VSI (A), B, To_PTR (C));
-    end vec_stl;
- 
-    procedure vec_stl
-      (A : vector_pixel;
-       B : c_int;
-       C : short_ptr)
-    is
-    begin
-       stvxl (To_LL_VSI (A), B, To_PTR (C));
-    end vec_stl;
- 
-    procedure vec_stl
-      (A : vector_signed_char;
-       B : c_int;
-       C : vector_signed_char_ptr)
-    is
-    begin
-       stvxl (To_LL_VSI (A), B, To_PTR (C));
-    end vec_stl;
- 
-    procedure vec_stl
-      (A : vector_signed_char;
-       B : c_int;
-       C : signed_char_ptr)
-    is
-    begin
-       stvxl (To_LL_VSI (A), B, To_PTR (C));
-    end vec_stl;
- 
-    procedure vec_stl
-      (A : vector_unsigned_char;
-       B : c_int;
-       C : vector_unsigned_char_ptr)
-    is
-    begin
-       stvxl (To_LL_VSI (A), B, To_PTR (C));
-    end vec_stl;
- 
-    procedure vec_stl
-      (A : vector_unsigned_char;
-       B : c_int;
-       C : unsigned_char_ptr)
-    is
-    begin
-       stvxl (To_LL_VSI (A), B, To_PTR (C));
-    end vec_stl;
- 
-    procedure vec_stl
-      (A : vector_bool_char;
-       B : c_int;
-       C : vector_bool_char_ptr)
-    is
-    begin
-       stvxl (To_LL_VSI (A), B, To_PTR (C));
-    end vec_stl;
- 
-    procedure vec_stl
-      (A : vector_bool_char;
-       B : c_int;
-       C : unsigned_char_ptr)
-    is
-    begin
-       stvxl (To_LL_VSI (A), B, To_PTR (C));
-    end vec_stl;
- 
-    procedure vec_stl
-      (A : vector_bool_char;
-       B : c_int;
-       C : signed_char_ptr)
-    is
-    begin
-       stvxl (To_LL_VSI (A), B, To_PTR (C));
-    end vec_stl;
- 
-    -------------
-    -- vec_sub --
-    -------------
- 
-    function vec_sub
-      (A : vector_bool_char;
-       B : vector_signed_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vsububm (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_sub;
- 
-    function vec_sub
-      (A : vector_signed_char;
-       B : vector_bool_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vsububm (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_sub;
- 
-    function vec_sub
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vsububm (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_sub;
- 
-    function vec_sub
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vsububm (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_sub;
- 
-    function vec_sub
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vsububm (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_sub;
- 
-    function vec_sub
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vsububm (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_sub;
- 
-    function vec_sub
-      (A : vector_bool_short;
-       B : vector_signed_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vsubuhm (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_sub;
- 
-    function vec_sub
-      (A : vector_signed_short;
-       B : vector_bool_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vsubuhm (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_sub;
- 
-    function vec_sub
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vsubuhm (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_sub;
- 
-    function vec_sub
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vsubuhm (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_sub;
- 
-    function vec_sub
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vsubuhm (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_sub;
- 
-    function vec_sub
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vsubuhm (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_sub;
- 
-    function vec_sub
-      (A : vector_bool_int;
-       B : vector_signed_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vsubuwm (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sub;
- 
-    function vec_sub
-      (A : vector_signed_int;
-       B : vector_bool_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vsubuwm (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sub;
- 
-    function vec_sub
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vsubuwm (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sub;
- 
-    function vec_sub
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vsubuwm (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sub;
- 
-    function vec_sub
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vsubuwm (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sub;
- 
-    function vec_sub
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vsubuwm (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sub;
- 
-    function vec_sub
-      (A : vector_float;
-       B : vector_float) return vector_float
-    is
-    begin
-       return To_LL_VF (vsubfp (To_LL_VF (A), To_LL_VF (B)));
-    end vec_sub;
- 
-    ----------------
-    -- vec_vsubfp --
-    ----------------
- 
-    function vec_vsubfp
-      (A : vector_float;
-       B : vector_float) return vector_float
-    is
-    begin
-       return To_LL_VF (vsubfp (To_LL_VF (A), To_LL_VF (B)));
-    end vec_vsubfp;
- 
-    -----------------
-    -- vec_vsubuwm --
-    -----------------
- 
-    function vec_vsubuwm
-      (A : vector_bool_int;
-       B : vector_signed_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vsubuwm (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vsubuwm;
- 
-    function vec_vsubuwm
-      (A : vector_signed_int;
-       B : vector_bool_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vsubuwm (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vsubuwm;
- 
-    function vec_vsubuwm
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vsubuwm (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vsubuwm;
- 
-    function vec_vsubuwm
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vsubuwm (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vsubuwm;
- 
-    function vec_vsubuwm
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vsubuwm (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vsubuwm;
- 
-    function vec_vsubuwm
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vsubuwm (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vsubuwm;
- 
-    -----------------
-    -- vec_vsubuhm --
-    -----------------
- 
-    function vec_vsubuhm
-      (A : vector_bool_short;
-       B : vector_signed_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vsubuhm (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vsubuhm;
- 
-    function vec_vsubuhm
-      (A : vector_signed_short;
-       B : vector_bool_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vsubuhm (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vsubuhm;
- 
-    function vec_vsubuhm
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vsubuhm (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vsubuhm;
- 
-    function vec_vsubuhm
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vsubuhm (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vsubuhm;
- 
-    function vec_vsubuhm
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vsubuhm (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vsubuhm;
- 
-    function vec_vsubuhm
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vsubuhm (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vsubuhm;
- 
-    -----------------
-    -- vec_vsububm --
-    -----------------
- 
-    function vec_vsububm
-      (A : vector_bool_char;
-       B : vector_signed_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vsububm (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vsububm;
- 
-    function vec_vsububm
-      (A : vector_signed_char;
-       B : vector_bool_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vsububm (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vsububm;
- 
-    function vec_vsububm
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vsububm (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vsububm;
- 
-    function vec_vsububm
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vsububm (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vsububm;
- 
-    function vec_vsububm
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vsububm (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vsububm;
- 
-    function vec_vsububm
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vsububm (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vsububm;
- 
-    --------------
-    -- vec_subc --
-    --------------
- 
-    function vec_subc
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vsubcuw (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_subc;
- 
-    --------------
-    -- vec_subs --
-    --------------
- 
-    function vec_subs
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vsububs (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_subs;
- 
-    function vec_subs
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vsububs (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_subs;
- 
-    function vec_subs
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vsububs (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_subs;
- 
-    function vec_subs
-      (A : vector_bool_char;
-       B : vector_signed_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vsubsbs (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_subs;
- 
-    function vec_subs
-      (A : vector_signed_char;
-       B : vector_bool_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vsubsbs (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_subs;
- 
-    function vec_subs
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vsubsbs (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_subs;
- 
-    function vec_subs
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vsubuhs (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_subs;
- 
-    function vec_subs
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vsubuhs (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_subs;
- 
-    function vec_subs
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vsubuhs (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_subs;
- 
-    function vec_subs
-      (A : vector_bool_short;
-       B : vector_signed_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vsubshs (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_subs;
- 
-    function vec_subs
-      (A : vector_signed_short;
-       B : vector_bool_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vsubshs (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_subs;
- 
-    function vec_subs
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vsubshs (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_subs;
- 
-    function vec_subs
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vsubuws (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_subs;
- 
-    function vec_subs
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vsubuws (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_subs;
- 
-    function vec_subs
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vsubuws (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_subs;
- 
-    function vec_subs
-      (A : vector_bool_int;
-       B : vector_signed_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vsubsws (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_subs;
- 
-    function vec_subs
-      (A : vector_signed_int;
-       B : vector_bool_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vsubsws (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_subs;
- 
-    function vec_subs
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vsubsws (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_subs;
- 
-    -----------------
-    -- vec_vsubsws --
-    -----------------
- 
-    function vec_vsubsws
-      (A : vector_bool_int;
-       B : vector_signed_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vsubsws (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vsubsws;
- 
-    function vec_vsubsws
-      (A : vector_signed_int;
-       B : vector_bool_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vsubsws (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vsubsws;
- 
-    function vec_vsubsws
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vsubsws (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vsubsws;
- 
-    -----------------
-    -- vec_vsubuws --
-    -----------------
- 
-    function vec_vsubuws
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vsubuws (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vsubuws;
- 
-    function vec_vsubuws
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vsubuws (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vsubuws;
- 
-    function vec_vsubuws
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vsubuws (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_vsubuws;
- 
-    -----------------
-    -- vec_vsubshs --
-    -----------------
- 
-    function vec_vsubshs
-      (A : vector_bool_short;
-       B : vector_signed_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vsubshs (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vsubshs;
- 
-    function vec_vsubshs
-      (A : vector_signed_short;
-       B : vector_bool_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vsubshs (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vsubshs;
- 
-    function vec_vsubshs
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vsubshs (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vsubshs;
- 
-    -----------------
-    -- vec_vsubuhs --
-    -----------------
- 
-    function vec_vsubuhs
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vsubuhs (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vsubuhs;
- 
-    function vec_vsubuhs
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vsubuhs (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vsubuhs;
- 
-    function vec_vsubuhs
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vsubuhs (To_LL_VSS (A), To_LL_VSS (B)));
-    end vec_vsubuhs;
- 
-    -----------------
-    -- vec_vsubsbs --
-    -----------------
- 
-    function vec_vsubsbs
-      (A : vector_bool_char;
-       B : vector_signed_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vsubsbs (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vsubsbs;
- 
-    function vec_vsubsbs
-      (A : vector_signed_char;
-       B : vector_bool_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vsubsbs (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vsubsbs;
- 
-    function vec_vsubsbs
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vsubsbs (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vsubsbs;
- 
-    -----------------
-    -- vec_vsububs --
-    -----------------
- 
-    function vec_vsububs
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vsububs (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vsububs;
- 
-    function vec_vsububs
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vsububs (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vsububs;
- 
-    function vec_vsububs
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vsububs (To_LL_VSC (A), To_LL_VSC (B)));
-    end vec_vsububs;
- 
-    ---------------
-    -- vec_sum4s --
-    ---------------
- 
-    function vec_sum4s
-      (A : vector_unsigned_char;
-       B : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vsum4ubs (To_LL_VSC (A), To_LL_VSI (B)));
-    end vec_sum4s;
- 
-    function vec_sum4s
-      (A : vector_signed_char;
-       B : vector_signed_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vsum4sbs (To_LL_VSC (A), To_LL_VSI (B)));
-    end vec_sum4s;
- 
-    function vec_sum4s
-      (A : vector_signed_short;
-       B : vector_signed_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vsum4shs (To_LL_VSS (A), To_LL_VSI (B)));
-    end vec_sum4s;
- 
-    ------------------
-    -- vec_vsum4shs --
-    ------------------
- 
-    function vec_vsum4shs
-      (A : vector_signed_short;
-       B : vector_signed_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vsum4shs (To_LL_VSS (A), To_LL_VSI (B)));
-    end vec_vsum4shs;
- 
-    ------------------
-    -- vec_vsum4sbs --
-    ------------------
- 
-    function vec_vsum4sbs
-      (A : vector_signed_char;
-       B : vector_signed_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vsum4sbs (To_LL_VSC (A), To_LL_VSI (B)));
-    end vec_vsum4sbs;
- 
-    ------------------
-    -- vec_vsum4ubs --
-    ------------------
- 
-    function vec_vsum4ubs
-      (A : vector_unsigned_char;
-       B : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vsum4ubs (To_LL_VSC (A), To_LL_VSI (B)));
-    end vec_vsum4ubs;
- 
-    ---------------
-    -- vec_sum2s --
-    ---------------
- 
-    function vec_sum2s
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vsum2sws (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sum2s;
- 
-    --------------
-    -- vec_sums --
-    --------------
- 
-    function vec_sums
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vsumsws (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_sums;
- 
-    ---------------
-    -- vec_trunc --
-    ---------------
- 
-    function vec_trunc
-      (A : vector_float) return vector_float
-    is
-    begin
-       return To_LL_VF (vrfiz (To_LL_VF (A)));
-    end vec_trunc;
- 
-    -----------------
-    -- vec_unpackh --
-    -----------------
- 
-    function vec_unpackh
-      (A : vector_signed_char) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vupkhsb (To_LL_VSC (A)));
-    end vec_unpackh;
- 
-    function vec_unpackh
-      (A : vector_bool_char) return vector_bool_short
-    is
-    begin
-       return To_LL_VBS (vupkhsb (To_LL_VSC (A)));
-    end vec_unpackh;
- 
-    function vec_unpackh
-      (A : vector_signed_short) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vupkhsh (To_LL_VSS (A)));
-    end vec_unpackh;
- 
-    function vec_unpackh
-      (A : vector_bool_short) return vector_bool_int
-    is
-    begin
-       return To_LL_VBI (vupkhsh (To_LL_VSS (A)));
-    end vec_unpackh;
- 
-    function vec_unpackh
-      (A : vector_pixel) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vupkhpx (To_LL_VSS (A)));
-    end vec_unpackh;
- 
-    -----------------
-    -- vec_vupkhsh --
-    -----------------
- 
-    function vec_vupkhsh
-      (A : vector_bool_short) return vector_bool_int
-    is
-    begin
-       return To_LL_VBI (vupkhsh (To_LL_VSS (A)));
-    end vec_vupkhsh;
- 
-    function vec_vupkhsh
-      (A : vector_signed_short) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vupkhsh (To_LL_VSS (A)));
-    end vec_vupkhsh;
- 
-    -----------------
-    -- vec_vupkhpx --
-    -----------------
- 
-    function vec_vupkhpx
-      (A : vector_pixel) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vupkhpx (To_LL_VSS (A)));
-    end vec_vupkhpx;
- 
-    -----------------
-    -- vec_vupkhsb --
-    -----------------
- 
-    function vec_vupkhsb
-      (A : vector_bool_char) return vector_bool_short
-    is
-    begin
-       return To_LL_VBS (vupkhsb (To_LL_VSC (A)));
-    end vec_vupkhsb;
- 
-    function vec_vupkhsb
-      (A : vector_signed_char) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vupkhsb (To_LL_VSC (A)));
-    end vec_vupkhsb;
- 
-    -----------------
-    -- vec_unpackl --
-    -----------------
- 
-    function vec_unpackl
-      (A : vector_signed_char) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vupklsb (To_LL_VSC (A)));
-    end vec_unpackl;
- 
-    function vec_unpackl
-      (A : vector_bool_char) return vector_bool_short
-    is
-    begin
-       return To_LL_VBS (vupklsb (To_LL_VSC (A)));
-    end vec_unpackl;
- 
-    function vec_unpackl
-      (A : vector_pixel) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vupklpx (To_LL_VSS (A)));
-    end vec_unpackl;
- 
-    function vec_unpackl
-      (A : vector_signed_short) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vupklsh (To_LL_VSS (A)));
-    end vec_unpackl;
- 
-    function vec_unpackl
-      (A : vector_bool_short) return vector_bool_int
-    is
-    begin
-       return To_LL_VBI (vupklsh (To_LL_VSS (A)));
-    end vec_unpackl;
- 
-    -----------------
-    -- vec_vupklpx --
-    -----------------
- 
-    function vec_vupklpx
-      (A : vector_pixel) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vupklpx (To_LL_VSS (A)));
-    end vec_vupklpx;
- 
-    -----------------
-    -- vec_vupklsh --
-    -----------------
- 
-    function vec_vupklsh
-      (A : vector_bool_short) return vector_bool_int
-    is
-    begin
-       return To_LL_VBI (vupklsh (To_LL_VSS (A)));
-    end vec_vupklsh;
- 
-    function vec_vupklsh
-      (A : vector_signed_short) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vupklsh (To_LL_VSS (A)));
-    end vec_vupklsh;
- 
-    -----------------
-    -- vec_vupklsb --
-    -----------------
- 
-    function vec_vupklsb
-      (A : vector_bool_char) return vector_bool_short
-    is
-    begin
-       return To_LL_VBS (vupklsb (To_LL_VSC (A)));
-    end vec_vupklsb;
- 
-    function vec_vupklsb
-      (A : vector_signed_char) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vupklsb (To_LL_VSC (A)));
-    end vec_vupklsb;
- 
-    -------------
-    -- vec_xor --
-    -------------
- 
-    function vec_xor
-      (A : vector_float;
-       B : vector_float) return vector_float
-    is
-    begin
-       return To_LL_VF (vxor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_xor;
- 
-    function vec_xor
-      (A : vector_float;
-       B : vector_bool_int) return vector_float
-    is
-    begin
-       return To_LL_VF (vxor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_xor;
- 
-    function vec_xor
-      (A : vector_bool_int;
-       B : vector_float) return vector_float
-    is
-    begin
-       return To_LL_VF (vxor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_xor;
- 
-    function vec_xor
-      (A : vector_bool_int;
-       B : vector_bool_int) return vector_bool_int
-    is
-    begin
-       return To_LL_VBI (vxor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_xor;
- 
-    function vec_xor
-      (A : vector_bool_int;
-       B : vector_signed_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vxor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_xor;
- 
-    function vec_xor
-      (A : vector_signed_int;
-       B : vector_bool_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vxor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_xor;
- 
-    function vec_xor
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int
-    is
-    begin
-       return To_LL_VSI (vxor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_xor;
- 
-    function vec_xor
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vxor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_xor;
- 
-    function vec_xor
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vxor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_xor;
- 
-    function vec_xor
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vxor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_xor;
- 
-    function vec_xor
-      (A : vector_bool_short;
-       B : vector_bool_short) return vector_bool_short
-    is
-    begin
-       return To_LL_VBS (vxor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_xor;
- 
-    function vec_xor
-      (A : vector_bool_short;
-       B : vector_signed_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vxor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_xor;
- 
-    function vec_xor
-      (A : vector_signed_short;
-       B : vector_bool_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vxor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_xor;
- 
-    function vec_xor
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_short
-    is
-    begin
-       return To_LL_VSS (vxor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_xor;
- 
-    function vec_xor
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vxor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_xor;
- 
-    function vec_xor
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vxor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_xor;
- 
-    function vec_xor
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vxor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_xor;
- 
-    function vec_xor
-      (A : vector_bool_char;
-       B : vector_signed_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vxor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_xor;
- 
-    function vec_xor
-      (A : vector_bool_char;
-       B : vector_bool_char) return vector_bool_char
-    is
-    begin
-       return To_LL_VBC (vxor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_xor;
- 
-    function vec_xor
-      (A : vector_signed_char;
-       B : vector_bool_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vxor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_xor;
- 
-    function vec_xor
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char
-    is
-    begin
-       return To_LL_VSC (vxor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_xor;
- 
-    function vec_xor
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vxor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_xor;
- 
-    function vec_xor
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vxor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_xor;
- 
-    function vec_xor
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vxor (To_LL_VSI (A), To_LL_VSI (B)));
-    end vec_xor;
- 
-    -------------
-    -- vec_dst --
-    -------------
- 
-    procedure vec_dst
-      (A : const_vector_unsigned_char_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dst (To_PTR (A), B, C);
-    end vec_dst;
- 
-    procedure vec_dst
-      (A : const_vector_signed_char_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dst (To_PTR (A), B, C);
-    end vec_dst;
- 
-    procedure vec_dst
-      (A : const_vector_bool_char_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dst (To_PTR (A), B, C);
-    end vec_dst;
- 
-    procedure vec_dst
-      (A : const_vector_unsigned_short_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dst (To_PTR (A), B, C);
-    end vec_dst;
- 
-    procedure vec_dst
-      (A : const_vector_signed_short_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dst (To_PTR (A), B, C);
-    end vec_dst;
- 
-    procedure vec_dst
-      (A : const_vector_bool_short_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dst (To_PTR (A), B, C);
-    end vec_dst;
- 
-    procedure vec_dst
-      (A : const_vector_pixel_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dst (To_PTR (A), B, C);
-    end vec_dst;
- 
-    procedure vec_dst
-      (A : const_vector_unsigned_int_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dst (To_PTR (A), B, C);
-    end vec_dst;
- 
-    procedure vec_dst
-      (A : const_vector_signed_int_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dst (To_PTR (A), B, C);
-    end vec_dst;
- 
-    procedure vec_dst
-      (A : const_vector_bool_int_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dst (To_PTR (A), B, C);
-    end vec_dst;
- 
-    procedure vec_dst
-      (A : const_vector_float_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dst (To_PTR (A), B, C);
-    end vec_dst;
- 
-    procedure vec_dst
-      (A : const_unsigned_char_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dst (To_PTR (A), B, C);
-    end vec_dst;
- 
-    procedure vec_dst
-      (A : const_signed_char_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dst (To_PTR (A), B, C);
-    end vec_dst;
- 
-    procedure vec_dst
-      (A : const_unsigned_short_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dst (To_PTR (A), B, C);
-    end vec_dst;
- 
-    procedure vec_dst
-      (A : const_short_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dst (To_PTR (A), B, C);
-    end vec_dst;
- 
-    procedure vec_dst
-      (A : const_unsigned_int_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dst (To_PTR (A), B, C);
-    end vec_dst;
- 
-    procedure vec_dst
-      (A : const_int_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dst (To_PTR (A), B, C);
-    end vec_dst;
- 
-    procedure vec_dst
-      (A : const_unsigned_long_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dst (To_PTR (A), B, C);
-    end vec_dst;
- 
-    procedure vec_dst
-      (A : const_long_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dst (To_PTR (A), B, C);
-    end vec_dst;
- 
-    procedure vec_dst
-      (A : const_float_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dst (To_PTR (A), B, C);
-    end vec_dst;
- 
-    --------------
-    -- vec_dstt --
-    --------------
- 
-    procedure vec_dstt
-      (A : const_vector_unsigned_char_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dstt (To_PTR (A), B, C);
-    end vec_dstt;
- 
-    procedure vec_dstt
-      (A : const_vector_signed_char_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dstt (To_PTR (A), B, C);
-    end vec_dstt;
- 
-    procedure vec_dstt
-      (A : const_vector_bool_char_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dstt (To_PTR (A), B, C);
-    end vec_dstt;
- 
-    procedure vec_dstt
-      (A : const_vector_unsigned_short_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dstt (To_PTR (A), B, C);
-    end vec_dstt;
- 
-    procedure vec_dstt
-      (A : const_vector_signed_short_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dstt (To_PTR (A), B, C);
-    end vec_dstt;
- 
-    procedure vec_dstt
-      (A : const_vector_bool_short_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dstt (To_PTR (A), B, C);
-    end vec_dstt;
- 
-    procedure vec_dstt
-      (A : const_vector_pixel_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dstt (To_PTR (A), B, C);
-    end vec_dstt;
- 
-    procedure vec_dstt
-      (A : const_vector_unsigned_int_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dstt (To_PTR (A), B, C);
-    end vec_dstt;
- 
-    procedure vec_dstt
-      (A : const_vector_signed_int_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dstt (To_PTR (A), B, C);
-    end vec_dstt;
- 
-    procedure vec_dstt
-      (A : const_vector_bool_int_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dstt (To_PTR (A), B, C);
-    end vec_dstt;
- 
-    procedure vec_dstt
-      (A : const_vector_float_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dstt (To_PTR (A), B, C);
-    end vec_dstt;
- 
-    procedure vec_dstt
-      (A : const_unsigned_char_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dstt (To_PTR (A), B, C);
-    end vec_dstt;
- 
-    procedure vec_dstt
-      (A : const_signed_char_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dstt (To_PTR (A), B, C);
-    end vec_dstt;
- 
-    procedure vec_dstt
-      (A : const_unsigned_short_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dstt (To_PTR (A), B, C);
-    end vec_dstt;
- 
-    procedure vec_dstt
-      (A : const_short_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dstt (To_PTR (A), B, C);
-    end vec_dstt;
- 
-    procedure vec_dstt
-      (A : const_unsigned_int_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dstt (To_PTR (A), B, C);
-    end vec_dstt;
- 
-    procedure vec_dstt
-      (A : const_int_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dstt (To_PTR (A), B, C);
-    end vec_dstt;
- 
-    procedure vec_dstt
-      (A : const_unsigned_long_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dstt (To_PTR (A), B, C);
-    end vec_dstt;
- 
-    procedure vec_dstt
-      (A : const_long_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dstt (To_PTR (A), B, C);
-    end vec_dstt;
- 
-    procedure vec_dstt
-      (A : const_float_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dstt (To_PTR (A), B, C);
-    end vec_dstt;
- 
-    ---------------
-    -- vec_dstst --
-    ---------------
- 
-    procedure vec_dstst
-      (A : const_vector_unsigned_char_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dstst (To_PTR (A), B, C);
-    end vec_dstst;
- 
-    procedure vec_dstst
-      (A : const_vector_signed_char_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dstst (To_PTR (A), B, C);
-    end vec_dstst;
- 
-    procedure vec_dstst
-      (A : const_vector_bool_char_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dstst (To_PTR (A), B, C);
-    end vec_dstst;
- 
-    procedure vec_dstst
-      (A : const_vector_unsigned_short_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dstst (To_PTR (A), B, C);
-    end vec_dstst;
- 
-    procedure vec_dstst
-      (A : const_vector_signed_short_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dstst (To_PTR (A), B, C);
-    end vec_dstst;
- 
-    procedure vec_dstst
-      (A : const_vector_bool_short_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dstst (To_PTR (A), B, C);
-    end vec_dstst;
- 
-    procedure vec_dstst
-      (A : const_vector_pixel_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dstst (To_PTR (A), B, C);
-    end vec_dstst;
- 
-    procedure vec_dstst
-      (A : const_vector_unsigned_int_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dstst (To_PTR (A), B, C);
-    end vec_dstst;
- 
-    procedure vec_dstst
-      (A : const_vector_signed_int_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dstst (To_PTR (A), B, C);
-    end vec_dstst;
- 
-    procedure vec_dstst
-      (A : const_vector_bool_int_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dstst (To_PTR (A), B, C);
-    end vec_dstst;
- 
-    procedure vec_dstst
-      (A : const_vector_float_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dstst (To_PTR (A), B, C);
-    end vec_dstst;
- 
-    procedure vec_dstst
-      (A : const_unsigned_char_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dstst (To_PTR (A), B, C);
-    end vec_dstst;
- 
-    procedure vec_dstst
-      (A : const_signed_char_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dstst (To_PTR (A), B, C);
-    end vec_dstst;
- 
-    procedure vec_dstst
-      (A : const_unsigned_short_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dstst (To_PTR (A), B, C);
-    end vec_dstst;
- 
-    procedure vec_dstst
-      (A : const_short_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dstst (To_PTR (A), B, C);
-    end vec_dstst;
- 
-    procedure vec_dstst
-      (A : const_unsigned_int_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dstst (To_PTR (A), B, C);
-    end vec_dstst;
- 
-    procedure vec_dstst
-      (A : const_int_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dstst (To_PTR (A), B, C);
-    end vec_dstst;
- 
-    procedure vec_dstst
-      (A : const_unsigned_long_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dstst (To_PTR (A), B, C);
-    end vec_dstst;
- 
-    procedure vec_dstst
-      (A : const_long_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dstst (To_PTR (A), B, C);
-    end vec_dstst;
- 
-    procedure vec_dstst
-      (A : const_float_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dstst (To_PTR (A), B, C);
-    end vec_dstst;
- 
-    ----------------
-    -- vec_dststt --
-    ----------------
- 
-    procedure vec_dststt
-      (A : const_vector_unsigned_char_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dststt (To_PTR (A), B, C);
-    end vec_dststt;
- 
-    procedure vec_dststt
-      (A : const_vector_signed_char_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dststt (To_PTR (A), B, C);
-    end vec_dststt;
- 
-    procedure vec_dststt
-      (A : const_vector_bool_char_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dststt (To_PTR (A), B, C);
-    end vec_dststt;
- 
-    procedure vec_dststt
-      (A : const_vector_unsigned_short_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dststt (To_PTR (A), B, C);
-    end vec_dststt;
- 
-    procedure vec_dststt
-      (A : const_vector_signed_short_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dststt (To_PTR (A), B, C);
-    end vec_dststt;
- 
-    procedure vec_dststt
-      (A : const_vector_bool_short_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dststt (To_PTR (A), B, C);
-    end vec_dststt;
- 
-    procedure vec_dststt
-      (A : const_vector_pixel_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dststt (To_PTR (A), B, C);
-    end vec_dststt;
- 
-    procedure vec_dststt
-      (A : const_vector_unsigned_int_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dststt (To_PTR (A), B, C);
-    end vec_dststt;
- 
-    procedure vec_dststt
-      (A : const_vector_signed_int_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dststt (To_PTR (A), B, C);
-    end vec_dststt;
- 
-    procedure vec_dststt
-      (A : const_vector_bool_int_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dststt (To_PTR (A), B, C);
-    end vec_dststt;
- 
-    procedure vec_dststt
-      (A : const_vector_float_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dststt (To_PTR (A), B, C);
-    end vec_dststt;
- 
-    procedure vec_dststt
-      (A : const_unsigned_char_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dststt (To_PTR (A), B, C);
-    end vec_dststt;
- 
-    procedure vec_dststt
-      (A : const_signed_char_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dststt (To_PTR (A), B, C);
-    end vec_dststt;
- 
-    procedure vec_dststt
-      (A : const_unsigned_short_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dststt (To_PTR (A), B, C);
-    end vec_dststt;
- 
-    procedure vec_dststt
-      (A : const_short_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dststt (To_PTR (A), B, C);
-    end vec_dststt;
- 
-    procedure vec_dststt
-      (A : const_unsigned_int_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dststt (To_PTR (A), B, C);
-    end vec_dststt;
- 
-    procedure vec_dststt
-      (A : const_int_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dststt (To_PTR (A), B, C);
-    end vec_dststt;
- 
-    procedure vec_dststt
-      (A : const_unsigned_long_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dststt (To_PTR (A), B, C);
-    end vec_dststt;
- 
-    procedure vec_dststt
-      (A : const_long_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dststt (To_PTR (A), B, C);
-    end vec_dststt;
- 
-    procedure vec_dststt
-      (A : const_float_ptr;
-       B : c_int;
-       C : c_int)
-    is
-    begin
-       dststt (To_PTR (A), B, C);
-    end vec_dststt;
- 
-    ----------------
-    -- vec_vspltw --
-    ----------------
- 
-    function vec_vspltw
-      (A : vector_float;
-       B : c_int) return vector_float
-    is
-    begin
-       return To_LL_VF (vspltw (To_LL_VSI (A), B));
-    end vec_vspltw;
- 
-    function vec_vspltw
-      (A : vector_unsigned_int;
-       B : c_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vspltw (To_LL_VSI (A), B));
-    end vec_vspltw;
- 
-    function vec_vspltw
-      (A : vector_bool_int;
-       B : c_int) return vector_bool_int
-    is
-    begin
-       return To_LL_VBI (vspltw (To_LL_VSI (A), B));
-    end vec_vspltw;
- 
-    ----------------
-    -- vec_vsplth --
-    ----------------
- 
-    function vec_vsplth
-      (A : vector_bool_short;
-       B : c_int) return vector_bool_short
-    is
-    begin
-       return To_LL_VBS (vsplth (To_LL_VSS (A), B));
-    end vec_vsplth;
- 
-    function vec_vsplth
-      (A : vector_unsigned_short;
-       B : c_int) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vsplth (To_LL_VSS (A), B));
-    end vec_vsplth;
- 
-    function vec_vsplth
-      (A : vector_pixel;
-       B : c_int) return vector_pixel
-    is
-    begin
-       return To_LL_VP (vsplth (To_LL_VSS (A), B));
-    end vec_vsplth;
- 
-    ----------------
-    -- vec_vspltb --
-    ----------------
- 
-    function vec_vspltb
-      (A : vector_unsigned_char;
-       B : c_int) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vspltb (To_LL_VSC (A), B));
-    end vec_vspltb;
- 
-    function vec_vspltb
-      (A : vector_bool_char;
-       B : c_int) return vector_bool_char
-    is
-    begin
-       return To_LL_VBC (vspltb (To_LL_VSC (A), B));
-    end vec_vspltb;
- 
-    ------------------
-    -- vec_splat_u8 --
-    ------------------
- 
-    function vec_splat_u8
-      (A : c_int) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vspltisb (A));
-    end vec_splat_u8;
- 
-    -------------------
-    -- vec_splat_u16 --
-    -------------------
- 
-    function vec_splat_u16
-      (A : c_int) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vspltish (A));
-    end vec_splat_u16;
- 
-    -------------------
-    -- vec_splat_u32 --
-    -------------------
- 
-    function vec_splat_u32
-      (A : c_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vspltisw (A));
-    end vec_splat_u32;
- 
-    -------------
-    -- vec_sld --
-    -------------
- 
-    function vec_sld
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int;
-       C : c_int) return vector_unsigned_int
-    is
-    begin
-       return To_LL_VUI (vsldoi_4si (To_LL_VSI (A), To_LL_VSI (B), C));
-    end vec_sld;
- 
-    function vec_sld
-      (A : vector_bool_int;
-       B : vector_bool_int;
-       C : c_int) return vector_bool_int
-    is
-    begin
-       return To_LL_VBI (vsldoi_4si (To_LL_VSI (A), To_LL_VSI (B), C));
-    end vec_sld;
- 
-    function vec_sld
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short;
-       C : c_int) return vector_unsigned_short
-    is
-    begin
-       return To_LL_VUS (vsldoi_8hi (To_LL_VSS (A), To_LL_VSS (B), C));
-    end vec_sld;
- 
-    function vec_sld
-      (A : vector_bool_short;
-       B : vector_bool_short;
-       C : c_int) return vector_bool_short
-    is
-    begin
-       return To_LL_VBS (vsldoi_8hi (To_LL_VSS (A), To_LL_VSS (B), C));
-    end vec_sld;
- 
-    function vec_sld
-      (A : vector_pixel;
-       B : vector_pixel;
-       C : c_int) return vector_pixel
-    is
-    begin
-       return To_LL_VP (vsldoi_8hi (To_LL_VSS (A), To_LL_VSS (B), C));
-    end vec_sld;
- 
-    function vec_sld
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char;
-       C : c_int) return vector_unsigned_char
-    is
-    begin
-       return To_LL_VUC (vsldoi_16qi (To_LL_VSC (A), To_LL_VSC (B), C));
-    end vec_sld;
- 
-    function vec_sld
-      (A : vector_bool_char;
-       B : vector_bool_char;
-       C : c_int) return vector_bool_char
-    is
-    begin
-       return To_LL_VBC (vsldoi_16qi (To_LL_VSC (A), To_LL_VSC (B), C));
-    end vec_sld;
- 
-    ----------------
-    -- vec_all_eq --
-    ----------------
- 
-    function vec_all_eq
-      (A : vector_signed_char;
-       B : vector_bool_char) return c_int
-    is
-    begin
-       return vcmpequb_p (CR6_LT, To_LL_VSC (A), To_LL_VSC (B));
-    end vec_all_eq;
- 
-    function vec_all_eq
-      (A : vector_signed_char;
-       B : vector_signed_char) return c_int
-    is
-    begin
-       return vcmpequb_p (CR6_LT, To_LL_VSC (A), To_LL_VSC (B));
-    end vec_all_eq;
- 
-    function vec_all_eq
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return c_int
-    is
-    begin
-       return vcmpequb_p (CR6_LT, To_LL_VSC (A), To_LL_VSC (B));
-    end vec_all_eq;
- 
-    function vec_all_eq
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return c_int
-    is
-    begin
-       return vcmpequb_p (CR6_LT, To_LL_VSC (A), To_LL_VSC (B));
-    end vec_all_eq;
- 
-    function vec_all_eq
-      (A : vector_bool_char;
-       B : vector_bool_char) return c_int
-    is
-    begin
-       return vcmpequb_p (CR6_LT, To_LL_VSC (A), To_LL_VSC (B));
-    end vec_all_eq;
- 
-    function vec_all_eq
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return c_int
-    is
-    begin
-       return vcmpequb_p (CR6_LT, To_LL_VSC (A), To_LL_VSC (B));
-    end vec_all_eq;
- 
-    function vec_all_eq
-      (A : vector_bool_char;
-       B : vector_signed_char) return c_int
-    is
-    begin
-       return vcmpequb_p (CR6_LT, To_LL_VSC (A), To_LL_VSC (B));
-    end vec_all_eq;
- 
-    function vec_all_eq
-      (A : vector_signed_short;
-       B : vector_bool_short) return c_int
-    is
-    begin
-       return vcmpequh_p (CR6_LT, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_all_eq;
- 
-    function vec_all_eq
-      (A : vector_signed_short;
-       B : vector_signed_short) return c_int
-    is
-    begin
-       return vcmpequh_p (CR6_LT, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_all_eq;
- 
-    function vec_all_eq
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return c_int
-    is
-    begin
-       return vcmpequh_p (CR6_LT, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_all_eq;
- 
-    function vec_all_eq
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return c_int
-    is
-    begin
-       return vcmpequh_p (CR6_LT, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_all_eq;
- 
-    function vec_all_eq
-      (A : vector_bool_short;
-       B : vector_bool_short) return c_int
-    is
-    begin
-       return vcmpequh_p (CR6_LT, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_all_eq;
- 
-    function vec_all_eq
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return c_int
-    is
-    begin
-       return vcmpequh_p (CR6_LT, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_all_eq;
- 
-    function vec_all_eq
-      (A : vector_bool_short;
-       B : vector_signed_short) return c_int
-    is
-    begin
-       return vcmpequh_p (CR6_LT, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_all_eq;
- 
-    function vec_all_eq
-      (A : vector_pixel;
-       B : vector_pixel) return c_int
-    is
-    begin
-       return vcmpequh_p (CR6_LT, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_all_eq;
- 
-    function vec_all_eq
-      (A : vector_signed_int;
-       B : vector_bool_int) return c_int
-    is
-    begin
-       return vcmpequw_p (CR6_LT, To_LL_VSI (A), To_LL_VSI (B));
-    end vec_all_eq;
- 
-    function vec_all_eq
-      (A : vector_signed_int;
-       B : vector_signed_int) return c_int
-    is
-    begin
-       return vcmpequw_p (CR6_LT, To_LL_VSI (A), To_LL_VSI (B));
-    end vec_all_eq;
- 
-    function vec_all_eq
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return c_int
-    is
-    begin
-       return vcmpequw_p (CR6_LT, To_LL_VSI (A), To_LL_VSI (B));
-    end vec_all_eq;
- 
-    function vec_all_eq
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return c_int
-    is
-    begin
-       return vcmpequw_p (CR6_LT, To_LL_VSI (A), To_LL_VSI (B));
-    end vec_all_eq;
- 
-    function vec_all_eq
-      (A : vector_bool_int;
-       B : vector_bool_int) return c_int
-    is
-    begin
-       return vcmpequw_p (CR6_LT, To_LL_VSI (A), To_LL_VSI (B));
-    end vec_all_eq;
- 
-    function vec_all_eq
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return c_int
-    is
-    begin
-       return vcmpequw_p (CR6_LT, To_LL_VSI (A), To_LL_VSI (B));
-    end vec_all_eq;
- 
-    function vec_all_eq
-      (A : vector_bool_int;
-       B : vector_signed_int) return c_int
-    is
-    begin
-       return vcmpequw_p (CR6_LT, To_LL_VSI (A), To_LL_VSI (B));
-    end vec_all_eq;
- 
-    function vec_all_eq
-      (A : vector_float;
-       B : vector_float) return c_int
-    is
-    begin
-       return vcmpeqfp_p (CR6_LT, To_LL_VF (A), To_LL_VF (B));
-    end vec_all_eq;
- 
-    ----------------
-    -- vec_all_ge --
-    ----------------
- 
-    function vec_all_ge
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return c_int
-    is
-    begin
-       return vcmpgtub_p (CR6_EQ, To_LL_VSC (B), To_LL_VSC (A));
-    end vec_all_ge;
- 
-    function vec_all_ge
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return c_int
-    is
-    begin
-       return vcmpgtub_p (CR6_EQ, To_LL_VSC (B), To_LL_VSC (A));
-    end vec_all_ge;
- 
-    function vec_all_ge
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return c_int
-    is
-    begin
-       return vcmpgtub_p (CR6_EQ, To_LL_VSC (B), To_LL_VSC (A));
-    end vec_all_ge;
- 
-    function vec_all_ge
-      (A : vector_bool_char;
-       B : vector_signed_char) return c_int
-    is
-    begin
-       return vcmpgtsb_p (CR6_EQ, To_LL_VSC (B), To_LL_VSC (A));
-    end vec_all_ge;
- 
-    function vec_all_ge
-      (A : vector_signed_char;
-       B : vector_bool_char) return c_int
-    is
-    begin
-       return vcmpgtsb_p (CR6_EQ, To_LL_VSC (B), To_LL_VSC (A));
-    end vec_all_ge;
- 
-    function vec_all_ge
-      (A : vector_signed_char;
-       B : vector_signed_char) return c_int
-    is
-    begin
-       return vcmpgtsb_p (CR6_EQ, To_LL_VSC (B), To_LL_VSC (A));
-    end vec_all_ge;
- 
-    function vec_all_ge
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return c_int
-    is
-    begin
-       return vcmpgtuh_p (CR6_EQ, To_LL_VSS (B), To_LL_VSS (A));
-    end vec_all_ge;
- 
-    function vec_all_ge
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return c_int
-    is
-    begin
-       return vcmpgtuh_p (CR6_EQ, To_LL_VSS (B), To_LL_VSS (A));
-    end vec_all_ge;
- 
-    function vec_all_ge
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return c_int
-    is
-    begin
-       return vcmpgtuh_p (CR6_EQ, To_LL_VSS (B), To_LL_VSS (A));
-    end vec_all_ge;
- 
-    function vec_all_ge
-      (A : vector_signed_short;
-       B : vector_signed_short) return c_int
-    is
-    begin
-       return vcmpgtsh_p (CR6_EQ, To_LL_VSS (B), To_LL_VSS (A));
-    end vec_all_ge;
- 
-    function vec_all_ge
-      (A : vector_bool_short;
-       B : vector_signed_short) return c_int
-    is
-    begin
-       return vcmpgtsh_p (CR6_EQ, To_LL_VSS (B), To_LL_VSS (A));
-    end vec_all_ge;
- 
-    function vec_all_ge
-      (A : vector_signed_short;
-       B : vector_bool_short) return c_int
-    is
-    begin
-       return vcmpgtsh_p (CR6_EQ, To_LL_VSS (B), To_LL_VSS (A));
-    end vec_all_ge;
- 
-    function vec_all_ge
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return c_int
-    is
-    begin
-       return vcmpgtuw_p (CR6_EQ, To_LL_VSI (B), To_LL_VSI (A));
-    end vec_all_ge;
- 
-    function vec_all_ge
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return c_int
-    is
-    begin
-       return vcmpgtuw_p (CR6_EQ, To_LL_VSI (B), To_LL_VSI (A));
-    end vec_all_ge;
- 
-    function vec_all_ge
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return c_int
-    is
-    begin
-       return vcmpgtuw_p (CR6_EQ, To_LL_VSI (B), To_LL_VSI (A));
-    end vec_all_ge;
- 
-    function vec_all_ge
-      (A : vector_bool_int;
-       B : vector_signed_int) return c_int
-    is
-    begin
-       return vcmpgtsw_p (CR6_EQ, To_LL_VSI (B), To_LL_VSI (A));
-    end vec_all_ge;
- 
-    function vec_all_ge
-      (A : vector_signed_int;
-       B : vector_bool_int) return c_int
-    is
-    begin
-       return vcmpgtsw_p (CR6_EQ, To_LL_VSI (B), To_LL_VSI (A));
-    end vec_all_ge;
- 
-    function vec_all_ge
-      (A : vector_signed_int;
-       B : vector_signed_int) return c_int
-    is
-    begin
-       return vcmpgtsw_p (CR6_EQ, To_LL_VSI (B), To_LL_VSI (A));
-    end vec_all_ge;
- 
-    function vec_all_ge
-      (A : vector_float;
-       B : vector_float) return c_int
-    is
-    begin
-       return vcmpgefp_p (CR6_LT, To_LL_VF (A), To_LL_VF (B));
-    end vec_all_ge;
- 
-    ----------------
-    -- vec_all_gt --
-    ----------------
- 
-    function vec_all_gt
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return c_int
-    is
-    begin
-       return vcmpgtub_p (CR6_LT, To_LL_VSC (A), To_LL_VSC (B));
-    end vec_all_gt;
- 
-    function vec_all_gt
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return c_int
-    is
-    begin
-       return vcmpgtub_p (CR6_LT, To_LL_VSC (A), To_LL_VSC (B));
-    end vec_all_gt;
- 
-    function vec_all_gt
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return c_int
-    is
-    begin
-       return vcmpgtub_p (CR6_LT, To_LL_VSC (A), To_LL_VSC (B));
-    end vec_all_gt;
- 
-    function vec_all_gt
-      (A : vector_bool_char;
-       B : vector_signed_char) return c_int
-    is
-    begin
-       return vcmpgtsb_p (CR6_LT, To_LL_VSC (A), To_LL_VSC (B));
-    end vec_all_gt;
- 
-    function vec_all_gt
-      (A : vector_signed_char;
-       B : vector_bool_char) return c_int
-    is
-    begin
-       return vcmpgtsb_p (CR6_LT, To_LL_VSC (A), To_LL_VSC (B));
-    end vec_all_gt;
- 
-    function vec_all_gt
-      (A : vector_signed_char;
-       B : vector_signed_char) return c_int
-    is
-    begin
-       return vcmpgtsb_p (CR6_LT, To_LL_VSC (A), To_LL_VSC (B));
-    end vec_all_gt;
- 
-    function vec_all_gt
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return c_int
-    is
-    begin
-       return vcmpgtuh_p (CR6_LT, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_all_gt;
- 
-    function vec_all_gt
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return c_int
-    is
-    begin
-       return vcmpgtuh_p (CR6_LT, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_all_gt;
- 
-    function vec_all_gt
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return c_int
-    is
-    begin
-       return vcmpgtuh_p (CR6_LT, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_all_gt;
- 
-    function vec_all_gt
-      (A : vector_bool_short;
-       B : vector_signed_short) return c_int
-    is
-    begin
-       return vcmpgtsh_p (CR6_LT, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_all_gt;
- 
-    function vec_all_gt
-      (A : vector_signed_short;
-       B : vector_bool_short) return c_int
-    is
-    begin
-       return vcmpgtsh_p (CR6_LT, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_all_gt;
- 
-    function vec_all_gt
-      (A : vector_signed_short;
-       B : vector_signed_short) return c_int
-    is
-    begin
-       return vcmpgtsh_p (CR6_LT, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_all_gt;
- 
-    function vec_all_gt
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return c_int
-    is
-    begin
-       return vcmpgtuw_p (CR6_LT, To_LL_VSI (A), To_LL_VSI (B));
-    end vec_all_gt;
- 
-    function vec_all_gt
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return c_int
-    is
-    begin
-       return vcmpgtuw_p (CR6_LT, To_LL_VSI (A), To_LL_VSI (B));
-    end vec_all_gt;
- 
-    function vec_all_gt
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return c_int
-    is
-    begin
-       return vcmpgtuw_p (CR6_LT, To_LL_VSI (A), To_LL_VSI (B));
-    end vec_all_gt;
- 
-    function vec_all_gt
-      (A : vector_bool_int;
-       B : vector_signed_int) return c_int
-    is
-    begin
-       return vcmpgtsw_p (CR6_LT, To_LL_VSI (A), To_LL_VSI (B));
-    end vec_all_gt;
- 
-    function vec_all_gt
-      (A : vector_signed_int;
-       B : vector_bool_int) return c_int
-    is
-    begin
-       return vcmpgtsw_p (CR6_LT, To_LL_VSI (A), To_LL_VSI (B));
-    end vec_all_gt;
- 
-    function vec_all_gt
-      (A : vector_signed_int;
-       B : vector_signed_int) return c_int
-    is
-    begin
-       return vcmpgtsw_p (CR6_LT, To_LL_VSI (A), To_LL_VSI (B));
-    end vec_all_gt;
- 
-    function vec_all_gt
-      (A : vector_float;
-       B : vector_float) return c_int
-    is
-    begin
-       return vcmpgtfp_p (CR6_LT, To_LL_VF (A), To_LL_VF (B));
-    end vec_all_gt;
- 
-    ----------------
-    -- vec_all_in --
-    ----------------
- 
-    function vec_all_in
-      (A : vector_float;
-       B : vector_float) return c_int
-    is
-    begin
-       return vcmpbfp_p (CR6_EQ, To_LL_VF (A), To_LL_VF (B));
-    end vec_all_in;
- 
-    ----------------
-    -- vec_all_le --
-    ----------------
- 
-    function vec_all_le
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return c_int
-    is
-    begin
-       return vcmpgtub_p (CR6_EQ, To_LL_VSC (A), To_LL_VSC (B));
-    end vec_all_le;
- 
-    function vec_all_le
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return c_int
-    is
-    begin
-       return vcmpgtub_p (CR6_EQ, To_LL_VSC (A), To_LL_VSC (B));
-    end vec_all_le;
- 
-    function vec_all_le
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return c_int
-    is
-    begin
-       return vcmpgtub_p (CR6_EQ, To_LL_VSC (A), To_LL_VSC (B));
-    end vec_all_le;
- 
-    function vec_all_le
-      (A : vector_bool_char;
-       B : vector_signed_char) return c_int
-    is
-    begin
-       return vcmpgtsb_p (CR6_EQ, To_LL_VSC (A), To_LL_VSC (B));
-    end vec_all_le;
- 
-    function vec_all_le
-      (A : vector_signed_char;
-       B : vector_bool_char) return c_int
-    is
-    begin
-       return vcmpgtsb_p (CR6_EQ, To_LL_VSC (A), To_LL_VSC (B));
-    end vec_all_le;
- 
-    function vec_all_le
-      (A : vector_signed_char;
-       B : vector_signed_char) return c_int
-    is
-    begin
-       return vcmpgtsb_p (CR6_EQ, To_LL_VSC (A), To_LL_VSC (B));
-    end vec_all_le;
- 
-    function vec_all_le
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return c_int
-    is
-    begin
-       return vcmpgtuh_p (CR6_EQ, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_all_le;
- 
-    function vec_all_le
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return c_int
-    is
-    begin
-       return vcmpgtuh_p (CR6_EQ, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_all_le;
- 
-    function vec_all_le
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return c_int
-    is
-    begin
-       return vcmpgtuh_p (CR6_EQ, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_all_le;
- 
-    function vec_all_le
-      (A : vector_bool_short;
-       B : vector_signed_short) return c_int
-    is
-    begin
-       return vcmpgtsh_p (CR6_EQ, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_all_le;
- 
-    function vec_all_le
-      (A : vector_signed_short;
-       B : vector_bool_short) return c_int
-    is
-    begin
-       return vcmpgtsh_p (CR6_EQ, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_all_le;
- 
-    function vec_all_le
-      (A : vector_signed_short;
-       B : vector_signed_short) return c_int
-    is
-    begin
-       return vcmpgtsh_p (CR6_EQ, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_all_le;
- 
-    function vec_all_le
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return c_int
-    is
-    begin
-       return vcmpgtuw_p (CR6_EQ, To_LL_VSI (A), To_LL_VSI (B));
-    end vec_all_le;
- 
-    function vec_all_le
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return c_int
-    is
-    begin
-       return vcmpgtuw_p (CR6_EQ, To_LL_VSI (A), To_LL_VSI (B));
-    end vec_all_le;
- 
-    function vec_all_le
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return c_int
-    is
-    begin
-       return vcmpgtuw_p (CR6_EQ, To_LL_VSI (A), To_LL_VSI (B));
-    end vec_all_le;
- 
-    function vec_all_le
-      (A : vector_bool_int;
-       B : vector_signed_int) return c_int
-    is
-    begin
-       return vcmpgtsw_p (CR6_EQ, To_LL_VSI (A), To_LL_VSI (B));
-    end vec_all_le;
- 
-    function vec_all_le
-      (A : vector_signed_int;
-       B : vector_bool_int) return c_int
-    is
-    begin
-       return vcmpgtsw_p (CR6_EQ, To_LL_VSI (A), To_LL_VSI (B));
-    end vec_all_le;
- 
-    function vec_all_le
-      (A : vector_signed_int;
-       B : vector_signed_int) return c_int
-    is
-    begin
-       return vcmpgtsw_p (CR6_EQ, To_LL_VSI (A), To_LL_VSI (B));
-    end vec_all_le;
- 
-    function vec_all_le
-      (A : vector_float;
-       B : vector_float) return c_int
-    is
-    begin
-       return vcmpgefp_p (CR6_LT, To_LL_VF (B), To_LL_VF (A));
-    end vec_all_le;
- 
-    ----------------
-    -- vec_all_lt --
-    ----------------
- 
-    function vec_all_lt
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return c_int
-    is
-    begin
-       return vcmpgtub_p (CR6_LT, To_LL_VSC (B), To_LL_VSC (A));
-    end vec_all_lt;
- 
-    function vec_all_lt
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return c_int
-    is
-    begin
-       return vcmpgtub_p (CR6_LT, To_LL_VSC (B), To_LL_VSC (A));
-    end vec_all_lt;
- 
-    function vec_all_lt
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return c_int
-    is
-    begin
-       return vcmpgtub_p (CR6_LT, To_LL_VSC (B), To_LL_VSC (A));
-    end vec_all_lt;
- 
-    function vec_all_lt
-      (A : vector_bool_char;
-       B : vector_signed_char) return c_int
-    is
-    begin
-       return vcmpgtsb_p (CR6_LT, To_LL_VSC (B), To_LL_VSC (A));
-    end vec_all_lt;
- 
-    function vec_all_lt
-      (A : vector_signed_char;
-       B : vector_bool_char) return c_int
-    is
-    begin
-       return vcmpgtsb_p (CR6_LT, To_LL_VSC (B), To_LL_VSC (A));
-    end vec_all_lt;
- 
-    function vec_all_lt
-      (A : vector_signed_char;
-       B : vector_signed_char) return c_int
-    is
-    begin
-       return vcmpgtsb_p (CR6_LT, To_LL_VSC (B), To_LL_VSC (A));
-    end vec_all_lt;
- 
-    function vec_all_lt
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return c_int
-    is
-    begin
-       return vcmpgtuh_p (CR6_LT, To_LL_VSS (B), To_LL_VSS (A));
-    end vec_all_lt;
- 
-    function vec_all_lt
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return c_int
-    is
-    begin
-       return vcmpgtuh_p (CR6_LT, To_LL_VSS (B), To_LL_VSS (A));
-    end vec_all_lt;
- 
-    function vec_all_lt
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return c_int
-    is
-    begin
-       return vcmpgtuh_p (CR6_LT, To_LL_VSS (B), To_LL_VSS (A));
-    end vec_all_lt;
- 
-    function vec_all_lt
-      (A : vector_bool_short;
-       B : vector_signed_short) return c_int
-    is
-    begin
-       return vcmpgtsh_p (CR6_LT, To_LL_VSS (B), To_LL_VSS (A));
-    end vec_all_lt;
- 
-    function vec_all_lt
-      (A : vector_signed_short;
-       B : vector_bool_short) return c_int
-    is
-    begin
-       return vcmpgtsh_p (CR6_LT, To_LL_VSS (B), To_LL_VSS (A));
-    end vec_all_lt;
- 
-    function vec_all_lt
-      (A : vector_signed_short;
-       B : vector_signed_short) return c_int
-    is
-    begin
-       return vcmpgtsh_p (CR6_LT, To_LL_VSS (B), To_LL_VSS (A));
-    end vec_all_lt;
- 
-    function vec_all_lt
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return c_int
-    is
-    begin
-       return vcmpgtuw_p (CR6_LT, To_LL_VSI (B), To_LL_VSI (A));
-    end vec_all_lt;
- 
-    function vec_all_lt
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return c_int
-    is
-    begin
-       return vcmpgtuw_p (CR6_LT, To_LL_VSI (B), To_LL_VSI (A));
-    end vec_all_lt;
- 
-    function vec_all_lt
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return c_int
-    is
-    begin
-       return vcmpgtuw_p (CR6_LT, To_LL_VSI (B), To_LL_VSI (A));
-    end vec_all_lt;
- 
-    function vec_all_lt
-      (A : vector_bool_int;
-       B : vector_signed_int) return c_int
-    is
-    begin
-       return vcmpgtsw_p (CR6_LT, To_LL_VSI (B), To_LL_VSI (A));
-    end vec_all_lt;
- 
-    function vec_all_lt
-      (A : vector_signed_int;
-       B : vector_bool_int) return c_int
-    is
-    begin
-       return vcmpgtsw_p (CR6_LT, To_LL_VSI (B), To_LL_VSI (A));
-    end vec_all_lt;
- 
-    function vec_all_lt
-      (A : vector_signed_int;
-       B : vector_signed_int) return c_int
-    is
-    begin
-       return vcmpgtsw_p (CR6_LT, To_LL_VSI (B), To_LL_VSI (A));
-    end vec_all_lt;
- 
-    function vec_all_lt
-      (A : vector_float;
-       B : vector_float) return c_int
-    is
-    begin
-       return vcmpgtfp_p (CR6_LT, To_LL_VF (B), To_LL_VF (A));
-    end vec_all_lt;
- 
-    -----------------
-    -- vec_all_nan --
-    -----------------
- 
-    function vec_all_nan
-      (A : vector_float) return c_int
-    is
-    begin
-       return vcmpeqfp_p (CR6_EQ, To_LL_VF (A), To_LL_VF (A));
-    end vec_all_nan;
- 
-    ----------------
-    -- vec_all_ne --
-    ----------------
- 
-    function vec_all_ne
-      (A : vector_signed_char;
-       B : vector_bool_char) return c_int
-    is
-    begin
-       return vcmpequb_p (CR6_EQ, To_LL_VSC (A), To_LL_VSC (B));
-    end vec_all_ne;
- 
-    function vec_all_ne
-      (A : vector_signed_char;
-       B : vector_signed_char) return c_int
-    is
-    begin
-       return vcmpequb_p (CR6_EQ, To_LL_VSC (A), To_LL_VSC (B));
-    end vec_all_ne;
- 
-    function vec_all_ne
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return c_int
-    is
-    begin
-       return vcmpequb_p (CR6_EQ, To_LL_VSC (A), To_LL_VSC (B));
-    end vec_all_ne;
- 
-    function vec_all_ne
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return c_int
-    is
-    begin
-       return vcmpequb_p (CR6_EQ, To_LL_VSC (A), To_LL_VSC (B));
-    end vec_all_ne;
- 
-    function vec_all_ne
-      (A : vector_bool_char;
-       B : vector_bool_char) return c_int
-    is
-    begin
-       return vcmpequb_p (CR6_EQ, To_LL_VSC (A), To_LL_VSC (B));
-    end vec_all_ne;
- 
-    function vec_all_ne
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return c_int
-    is
-    begin
-       return vcmpequb_p (CR6_EQ, To_LL_VSC (A), To_LL_VSC (B));
-    end vec_all_ne;
- 
-    function vec_all_ne
-      (A : vector_bool_char;
-       B : vector_signed_char) return c_int
-    is
-    begin
-       return vcmpequb_p (CR6_EQ, To_LL_VSC (A), To_LL_VSC (B));
-    end vec_all_ne;
- 
-    function vec_all_ne
-      (A : vector_signed_short;
-       B : vector_bool_short) return c_int
-    is
-    begin
-       return vcmpequh_p (CR6_EQ, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_all_ne;
- 
-    function vec_all_ne
-      (A : vector_signed_short;
-       B : vector_signed_short) return c_int
-    is
-    begin
-       return vcmpequh_p (CR6_EQ, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_all_ne;
- 
-    function vec_all_ne
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return c_int
-    is
-    begin
-       return vcmpequh_p (CR6_EQ, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_all_ne;
- 
-    function vec_all_ne
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return c_int
-    is
-    begin
-       return vcmpequh_p (CR6_EQ, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_all_ne;
- 
-    function vec_all_ne
-      (A : vector_bool_short;
-       B : vector_bool_short) return c_int
-    is
-    begin
-       return vcmpequh_p (CR6_EQ, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_all_ne;
- 
-    function vec_all_ne
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return c_int
-    is
-    begin
-       return vcmpequh_p (CR6_EQ, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_all_ne;
- 
-    function vec_all_ne
-      (A : vector_bool_short;
-       B : vector_signed_short) return c_int
-    is
-    begin
-       return vcmpequh_p (CR6_EQ, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_all_ne;
- 
-    function vec_all_ne
-      (A : vector_pixel;
-       B : vector_pixel) return c_int
-    is
-    begin
-       return vcmpequh_p (CR6_EQ, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_all_ne;
- 
-    function vec_all_ne
-      (A : vector_signed_int;
-       B : vector_bool_int) return c_int
-    is
-    begin
-       return vcmpequw_p (CR6_EQ, To_LL_VSI (A), To_LL_VSI (B));
-    end vec_all_ne;
- 
-    function vec_all_ne
-      (A : vector_signed_int;
-       B : vector_signed_int) return c_int
-    is
-    begin
-       return vcmpequw_p (CR6_EQ, To_LL_VSI (A), To_LL_VSI (B));
-    end vec_all_ne;
- 
-    function vec_all_ne
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return c_int
-    is
-    begin
-       return vcmpequw_p (CR6_EQ, To_LL_VSI (A), To_LL_VSI (B));
-    end vec_all_ne;
- 
-    function vec_all_ne
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return c_int
-    is
-    begin
-       return vcmpequw_p (CR6_EQ, To_LL_VSI (A), To_LL_VSI (B));
-    end vec_all_ne;
- 
-    function vec_all_ne
-      (A : vector_bool_int;
-       B : vector_bool_int) return c_int
-    is
-    begin
-       return vcmpequw_p (CR6_EQ, To_LL_VSI (A), To_LL_VSI (B));
-    end vec_all_ne;
- 
-    function vec_all_ne
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return c_int
-    is
-    begin
-       return vcmpequw_p (CR6_EQ, To_LL_VSI (A), To_LL_VSI (B));
-    end vec_all_ne;
- 
-    function vec_all_ne
-      (A : vector_bool_int;
-       B : vector_signed_int) return c_int
-    is
-    begin
-       return vcmpequw_p (CR6_EQ, To_LL_VSI (A), To_LL_VSI (B));
-    end vec_all_ne;
- 
-    function vec_all_ne
-      (A : vector_float;
-       B : vector_float) return c_int
-    is
-    begin
-       return vcmpeqfp_p (CR6_EQ, To_LL_VF (A), To_LL_VF (B));
-    end vec_all_ne;
- 
-    -----------------
-    -- vec_all_nge --
-    -----------------
- 
-    function vec_all_nge
-      (A : vector_float;
-       B : vector_float) return c_int
-    is
-    begin
-       return vcmpgefp_p (CR6_EQ, To_LL_VF (A), To_LL_VF (B));
-    end vec_all_nge;
- 
-    -----------------
-    -- vec_all_ngt --
-    -----------------
- 
-    function vec_all_ngt
-      (A : vector_float;
-       B : vector_float) return c_int
-    is
-    begin
-       return vcmpgtfp_p (CR6_EQ, To_LL_VF (A), To_LL_VF (B));
-    end vec_all_ngt;
- 
-    -----------------
-    -- vec_all_nle --
-    -----------------
- 
-    function vec_all_nle
-      (A : vector_float;
-       B : vector_float) return c_int
-    is
-    begin
-       return vcmpgefp_p (CR6_EQ, To_LL_VF (B), To_LL_VF (A));
-    end vec_all_nle;
- 
-    -----------------
-    -- vec_all_nlt --
-    -----------------
- 
-    function vec_all_nlt
-      (A : vector_float;
-       B : vector_float) return c_int
-    is
-    begin
-       return vcmpgtfp_p (CR6_EQ, To_LL_VF (B), To_LL_VF (A));
-    end vec_all_nlt;
- 
-    ---------------------
-    -- vec_all_numeric --
-    ---------------------
- 
-    function vec_all_numeric
-      (A : vector_float) return c_int
-    is
-    begin
-       return vcmpeqfp_p (CR6_LT, To_LL_VF (A), To_LL_VF (A));
-    end vec_all_numeric;
- 
-    ----------------
-    -- vec_any_eq --
-    ----------------
- 
-    function vec_any_eq
-      (A : vector_signed_char;
-       B : vector_bool_char) return c_int
-    is
-    begin
-       return vcmpequb_p (CR6_EQ_REV, To_LL_VSC (A), To_LL_VSC (B));
-    end vec_any_eq;
- 
-    function vec_any_eq
-      (A : vector_signed_char;
-       B : vector_signed_char) return c_int
-    is
-    begin
-       return vcmpequb_p (CR6_EQ_REV, To_LL_VSC (A), To_LL_VSC (B));
-    end vec_any_eq;
- 
-    function vec_any_eq
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return c_int
-    is
-    begin
-       return vcmpequb_p (CR6_EQ_REV, To_LL_VSC (A), To_LL_VSC (B));
-    end vec_any_eq;
- 
-    function vec_any_eq
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return c_int
-    is
-    begin
-       return vcmpequb_p (CR6_EQ_REV, To_LL_VSC (A), To_LL_VSC (B));
-    end vec_any_eq;
- 
-    function vec_any_eq
-      (A : vector_bool_char;
-       B : vector_bool_char) return c_int
-    is
-    begin
-       return vcmpequb_p (CR6_EQ_REV, To_LL_VSC (A), To_LL_VSC (B));
-    end vec_any_eq;
- 
-    function vec_any_eq
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return c_int
-    is
-    begin
-       return vcmpequb_p (CR6_EQ_REV, To_LL_VSC (A), To_LL_VSC (B));
-    end vec_any_eq;
- 
-    function vec_any_eq
-      (A : vector_bool_char;
-       B : vector_signed_char) return c_int
-    is
-    begin
-       return vcmpequb_p (CR6_EQ_REV, To_LL_VSC (A), To_LL_VSC (B));
-    end vec_any_eq;
- 
-    function vec_any_eq
-      (A : vector_signed_short;
-       B : vector_bool_short) return c_int
-    is
-    begin
-       return vcmpequh_p (CR6_EQ_REV, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_any_eq;
- 
-    function vec_any_eq
-      (A : vector_signed_short;
-       B : vector_signed_short) return c_int
-    is
-    begin
-       return vcmpequh_p (CR6_EQ_REV, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_any_eq;
- 
-    function vec_any_eq
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return c_int
-    is
-    begin
-       return vcmpequh_p (CR6_EQ_REV, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_any_eq;
- 
-    function vec_any_eq
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return c_int
-    is
-    begin
-       return vcmpequh_p (CR6_EQ_REV, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_any_eq;
- 
-    function vec_any_eq
-      (A : vector_bool_short;
-       B : vector_bool_short) return c_int
-    is
-    begin
-       return vcmpequh_p (CR6_EQ_REV, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_any_eq;
- 
-    function vec_any_eq
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return c_int
-    is
-    begin
-       return vcmpequh_p (CR6_EQ_REV, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_any_eq;
- 
-    function vec_any_eq
-      (A : vector_bool_short;
-       B : vector_signed_short) return c_int
-    is
-    begin
-       return vcmpequh_p (CR6_EQ_REV, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_any_eq;
- 
-    function vec_any_eq
-      (A : vector_pixel;
-       B : vector_pixel) return c_int
-    is
-    begin
-       return vcmpequh_p (CR6_EQ_REV, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_any_eq;
- 
-    function vec_any_eq
-      (A : vector_signed_int;
-       B : vector_bool_int) return c_int
-    is
-    begin
-       return vcmpequw_p (CR6_EQ_REV, To_LL_VSI (A), To_LL_VSI (B));
-    end vec_any_eq;
- 
-    function vec_any_eq
-      (A : vector_signed_int;
-       B : vector_signed_int) return c_int
-    is
-    begin
-       return vcmpequw_p (CR6_EQ_REV, To_LL_VSI (A), To_LL_VSI (B));
-    end vec_any_eq;
- 
-    function vec_any_eq
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return c_int
-    is
-    begin
-       return vcmpequw_p (CR6_EQ_REV, To_LL_VSI (A), To_LL_VSI (B));
-    end vec_any_eq;
- 
-    function vec_any_eq
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return c_int
-    is
-    begin
-       return vcmpequw_p (CR6_EQ_REV, To_LL_VSI (A), To_LL_VSI (B));
-    end vec_any_eq;
- 
-    function vec_any_eq
-      (A : vector_bool_int;
-       B : vector_bool_int) return c_int
-    is
-    begin
-       return vcmpequw_p (CR6_EQ_REV, To_LL_VSI (A), To_LL_VSI (B));
-    end vec_any_eq;
- 
-    function vec_any_eq
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return c_int
-    is
-    begin
-       return vcmpequw_p (CR6_EQ_REV, To_LL_VSI (A), To_LL_VSI (B));
-    end vec_any_eq;
- 
-    function vec_any_eq
-      (A : vector_bool_int;
-       B : vector_signed_int) return c_int
-    is
-    begin
-       return vcmpequw_p (CR6_EQ_REV, To_LL_VSI (A), To_LL_VSI (B));
-    end vec_any_eq;
- 
-    function vec_any_eq
-      (A : vector_float;
-       B : vector_float) return c_int
-    is
-    begin
-       return vcmpeqfp_p (CR6_EQ_REV, To_LL_VF (A), To_LL_VF (B));
-    end vec_any_eq;
- 
-    ----------------
-    -- vec_any_ge --
-    ----------------
- 
-    function vec_any_ge
-      (A : vector_signed_char;
-       B : vector_bool_char) return c_int
-    is
-    begin
-       return vcmpgtub_p (CR6_LT_REV, To_LL_VSC (B), To_LL_VSC (A));
-    end vec_any_ge;
- 
-    function vec_any_ge
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return c_int
-    is
-    begin
-       return vcmpgtub_p (CR6_LT_REV, To_LL_VSC (B), To_LL_VSC (A));
-    end vec_any_ge;
- 
-    function vec_any_ge
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return c_int
-    is
-    begin
-       return vcmpgtub_p (CR6_LT_REV, To_LL_VSC (B), To_LL_VSC (A));
-    end vec_any_ge;
- 
-    function vec_any_ge
-      (A : vector_signed_char;
-       B : vector_signed_char) return c_int
-    is
-    begin
-       return vcmpgtsb_p (CR6_LT_REV, To_LL_VSC (B), To_LL_VSC (A));
-    end vec_any_ge;
- 
-    function vec_any_ge
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return c_int
-    is
-    begin
-       return vcmpgtub_p (CR6_LT_REV, To_LL_VSC (B), To_LL_VSC (A));
-    end vec_any_ge;
- 
-    function vec_any_ge
-      (A : vector_bool_char;
-       B : vector_signed_char) return c_int
-    is
-    begin
-       return vcmpgtub_p (CR6_LT_REV, To_LL_VSC (B), To_LL_VSC (A));
-    end vec_any_ge;
- 
-    function vec_any_ge
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return c_int
-    is
-    begin
-       return vcmpgtuh_p (CR6_LT_REV, To_LL_VSS (B), To_LL_VSS (A));
-    end vec_any_ge;
- 
-    function vec_any_ge
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return c_int
-    is
-    begin
-       return vcmpgtuh_p (CR6_LT_REV, To_LL_VSS (B), To_LL_VSS (A));
-    end vec_any_ge;
- 
-    function vec_any_ge
-      (A : vector_signed_short;
-       B : vector_signed_short) return c_int
-    is
-    begin
-       return vcmpgtsh_p (CR6_LT_REV, To_LL_VSS (B), To_LL_VSS (A));
-    end vec_any_ge;
- 
-    function vec_any_ge
-      (A : vector_signed_short;
-       B : vector_bool_short) return c_int
-    is
-    begin
-       return vcmpgtsh_p (CR6_LT_REV, To_LL_VSS (B), To_LL_VSS (A));
-    end vec_any_ge;
- 
-    function vec_any_ge
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return c_int
-    is
-    begin
-       return vcmpgtuh_p (CR6_LT_REV, To_LL_VSS (B), To_LL_VSS (A));
-    end vec_any_ge;
- 
-    function vec_any_ge
-      (A : vector_bool_short;
-       B : vector_signed_short) return c_int
-    is
-    begin
-       return vcmpgtuh_p (CR6_LT_REV, To_LL_VSS (B), To_LL_VSS (A));
-    end vec_any_ge;
- 
-    function vec_any_ge
-      (A : vector_signed_int;
-       B : vector_bool_int) return c_int
-    is
-    begin
-       return vcmpgtuw_p (CR6_LT_REV, To_LL_VSI (B), To_LL_VSI (A));
-    end vec_any_ge;
- 
-    function vec_any_ge
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return c_int
-    is
-    begin
-       return vcmpgtuw_p (CR6_LT_REV, To_LL_VSI (B), To_LL_VSI (A));
-    end vec_any_ge;
- 
-    function vec_any_ge
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return c_int
-    is
-    begin
-       return vcmpgtuw_p (CR6_LT_REV, To_LL_VSI (B), To_LL_VSI (A));
-    end vec_any_ge;
- 
-    function vec_any_ge
-      (A : vector_signed_int;
-       B : vector_signed_int) return c_int
-    is
-    begin
-       return vcmpgtsw_p (CR6_LT_REV, To_LL_VSI (B), To_LL_VSI (A));
-    end vec_any_ge;
- 
-    function vec_any_ge
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return c_int
-    is
-    begin
-       return vcmpgtuw_p (CR6_LT_REV, To_LL_VSI (B), To_LL_VSI (A));
-    end vec_any_ge;
- 
-    function vec_any_ge
-      (A : vector_bool_int;
-       B : vector_signed_int) return c_int
-    is
-    begin
-       return vcmpgtuw_p (CR6_LT_REV, To_LL_VSI (B), To_LL_VSI (A));
-    end vec_any_ge;
- 
-    function vec_any_ge
-      (A : vector_float;
-       B : vector_float) return c_int
-    is
-    begin
-       return vcmpgefp_p (CR6_EQ_REV, To_LL_VF (A), To_LL_VF (B));
-    end vec_any_ge;
- 
-    ----------------
-    -- vec_any_gt --
-    ----------------
- 
-    function vec_any_gt
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return c_int
-    is
-    begin
-       return vcmpgtub_p (CR6_EQ_REV, To_LL_VSC (A), To_LL_VSC (B));
-    end vec_any_gt;
- 
-    function vec_any_gt
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return c_int
-    is
-    begin
-       return vcmpgtub_p (CR6_EQ_REV, To_LL_VSC (A), To_LL_VSC (B));
-    end vec_any_gt;
- 
-    function vec_any_gt
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return c_int
-    is
-    begin
-       return vcmpgtub_p (CR6_EQ_REV, To_LL_VSC (A), To_LL_VSC (B));
-    end vec_any_gt;
- 
-    function vec_any_gt
-      (A : vector_bool_char;
-       B : vector_signed_char) return c_int
-    is
-    begin
-       return vcmpgtsb_p (CR6_EQ_REV, To_LL_VSC (A), To_LL_VSC (B));
-    end vec_any_gt;
- 
-    function vec_any_gt
-      (A : vector_signed_char;
-       B : vector_bool_char) return c_int
-    is
-    begin
-       return vcmpgtsb_p (CR6_EQ_REV, To_LL_VSC (A), To_LL_VSC (B));
-    end vec_any_gt;
- 
-    function vec_any_gt
-      (A : vector_signed_char;
-       B : vector_signed_char) return c_int
-    is
-    begin
-       return vcmpgtsb_p (CR6_EQ_REV, To_LL_VSC (A), To_LL_VSC (B));
-    end vec_any_gt;
- 
-    function vec_any_gt
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return c_int
-    is
-    begin
-       return vcmpgtuh_p (CR6_EQ_REV, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_any_gt;
- 
-    function vec_any_gt
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return c_int
-    is
-    begin
-       return vcmpgtuh_p (CR6_EQ_REV, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_any_gt;
- 
-    function vec_any_gt
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return c_int
-    is
-    begin
-       return vcmpgtuh_p (CR6_EQ_REV, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_any_gt;
- 
-    function vec_any_gt
-      (A : vector_bool_short;
-       B : vector_signed_short) return c_int
-    is
-    begin
-       return vcmpgtsh_p (CR6_EQ_REV, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_any_gt;
- 
-    function vec_any_gt
-      (A : vector_signed_short;
-       B : vector_bool_short) return c_int
-    is
-    begin
-       return vcmpgtsh_p (CR6_EQ_REV, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_any_gt;
- 
-    function vec_any_gt
-      (A : vector_signed_short;
-       B : vector_signed_short) return c_int
-    is
-    begin
-       return vcmpgtsh_p (CR6_EQ_REV, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_any_gt;
- 
-    function vec_any_gt
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return c_int
-    is
-    begin
-       return vcmpgtuw_p (CR6_EQ_REV, To_LL_VSI (A), To_LL_VSI (B));
-    end vec_any_gt;
- 
-    function vec_any_gt
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return c_int
-    is
-    begin
-       return vcmpgtuw_p (CR6_EQ_REV, To_LL_VSI (A), To_LL_VSI (B));
-    end vec_any_gt;
- 
-    function vec_any_gt
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return c_int
-    is
-    begin
-       return vcmpgtuw_p (CR6_EQ_REV, To_LL_VSI (A), To_LL_VSI (B));
-    end vec_any_gt;
- 
-    function vec_any_gt
-      (A : vector_bool_int;
-       B : vector_signed_int) return c_int
-    is
-    begin
-       return vcmpgtsw_p (CR6_EQ_REV, To_LL_VSI (A), To_LL_VSI (B));
-    end vec_any_gt;
- 
-    function vec_any_gt
-      (A : vector_signed_int;
-       B : vector_bool_int) return c_int
-    is
-    begin
-       return vcmpgtsw_p (CR6_EQ_REV, To_LL_VSI (A), To_LL_VSI (B));
-    end vec_any_gt;
- 
-    function vec_any_gt
-      (A : vector_signed_int;
-       B : vector_signed_int) return c_int
-    is
-    begin
-       return vcmpgtsw_p (CR6_EQ_REV, To_LL_VSI (A), To_LL_VSI (B));
-    end vec_any_gt;
- 
-    function vec_any_gt
-      (A : vector_float;
-       B : vector_float) return c_int
-    is
-    begin
-       return vcmpgtfp_p (CR6_EQ_REV, To_LL_VF (A), To_LL_VF (B));
-    end vec_any_gt;
- 
-    ----------------
-    -- vec_any_le --
-    ----------------
- 
-    function vec_any_le
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return c_int
-    is
-    begin
-       return vcmpgtub_p (CR6_LT_REV, To_LL_VSC (A), To_LL_VSC (B));
-    end vec_any_le;
- 
-    function vec_any_le
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return c_int
-    is
-    begin
-       return vcmpgtub_p (CR6_LT_REV, To_LL_VSC (A), To_LL_VSC (B));
-    end vec_any_le;
- 
-    function vec_any_le
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return c_int
-    is
-    begin
-       return vcmpgtub_p (CR6_LT_REV, To_LL_VSC (A), To_LL_VSC (B));
-    end vec_any_le;
- 
-    function vec_any_le
-      (A : vector_bool_char;
-       B : vector_signed_char) return c_int
-    is
-    begin
-       return vcmpgtsb_p (CR6_LT_REV, To_LL_VSC (A), To_LL_VSC (B));
-    end vec_any_le;
- 
-    function vec_any_le
-      (A : vector_signed_char;
-       B : vector_bool_char) return c_int
-    is
-    begin
-       return vcmpgtsb_p (CR6_LT_REV, To_LL_VSC (A), To_LL_VSC (B));
-    end vec_any_le;
- 
-    function vec_any_le
-      (A : vector_signed_char;
-       B : vector_signed_char) return c_int
-    is
-    begin
-       return vcmpgtsb_p (CR6_LT_REV, To_LL_VSC (A), To_LL_VSC (B));
-    end vec_any_le;
- 
-    function vec_any_le
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return c_int
-    is
-    begin
-       return vcmpgtuh_p (CR6_LT_REV, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_any_le;
- 
-    function vec_any_le
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return c_int
-    is
-    begin
-       return vcmpgtuh_p (CR6_LT_REV, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_any_le;
- 
-    function vec_any_le
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return c_int
-    is
-    begin
-       return vcmpgtuh_p (CR6_LT_REV, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_any_le;
- 
-    function vec_any_le
-      (A : vector_bool_short;
-       B : vector_signed_short) return c_int
-    is
-    begin
-       return vcmpgtsh_p (CR6_LT_REV, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_any_le;
- 
-    function vec_any_le
-      (A : vector_signed_short;
-       B : vector_bool_short) return c_int
-    is
-    begin
-       return vcmpgtsh_p (CR6_LT_REV, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_any_le;
- 
-    function vec_any_le
-      (A : vector_signed_short;
-       B : vector_signed_short) return c_int
-    is
-    begin
-       return vcmpgtsh_p (CR6_LT_REV, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_any_le;
- 
-    function vec_any_le
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return c_int
-    is
-    begin
-       return vcmpgtuw_p (CR6_LT_REV, To_LL_VSI (A), To_LL_VSI (B));
-    end vec_any_le;
- 
-    function vec_any_le
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return c_int
-    is
-    begin
-       return vcmpgtuw_p (CR6_LT_REV, To_LL_VSI (A), To_LL_VSI (B));
-    end vec_any_le;
- 
-    function vec_any_le
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return c_int
-    is
-    begin
-       return vcmpgtuw_p (CR6_LT_REV, To_LL_VSI (A), To_LL_VSI (B));
-    end vec_any_le;
- 
-    function vec_any_le
-      (A : vector_bool_int;
-       B : vector_signed_int) return c_int
-    is
-    begin
-       return vcmpgtsw_p (CR6_LT_REV, To_LL_VSI (A), To_LL_VSI (B));
-    end vec_any_le;
- 
-    function vec_any_le
-      (A : vector_signed_int;
-       B : vector_bool_int) return c_int
-    is
-    begin
-       return vcmpgtsw_p (CR6_LT_REV, To_LL_VSI (A), To_LL_VSI (B));
-    end vec_any_le;
- 
-    function vec_any_le
-      (A : vector_signed_int;
-       B : vector_signed_int) return c_int
-    is
-    begin
-       return vcmpgtsw_p (CR6_LT_REV, To_LL_VSI (A), To_LL_VSI (B));
-    end vec_any_le;
- 
-    function vec_any_le
-      (A : vector_float;
-       B : vector_float) return c_int
-    is
-    begin
-       return vcmpgefp_p (CR6_EQ_REV, To_LL_VF (B), To_LL_VF (A));
-    end vec_any_le;
- 
-    ----------------
-    -- vec_any_lt --
-    ----------------
- 
-    function vec_any_lt
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return c_int
-    is
-    begin
-       return vcmpgtub_p (CR6_EQ_REV, To_LL_VSC (B), To_LL_VSC (A));
-    end vec_any_lt;
- 
-    function vec_any_lt
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return c_int
-    is
-    begin
-       return vcmpgtub_p (CR6_EQ_REV, To_LL_VSC (B), To_LL_VSC (A));
-    end vec_any_lt;
- 
-    function vec_any_lt
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return c_int
-    is
-    begin
-       return vcmpgtub_p (CR6_EQ_REV, To_LL_VSC (B), To_LL_VSC (A));
-    end vec_any_lt;
- 
-    function vec_any_lt
-      (A : vector_bool_char;
-       B : vector_signed_char) return c_int
-    is
-    begin
-       return vcmpgtsb_p (CR6_EQ_REV, To_LL_VSC (B), To_LL_VSC (A));
-    end vec_any_lt;
- 
-    function vec_any_lt
-      (A : vector_signed_char;
-       B : vector_bool_char) return c_int
-    is
-    begin
-       return vcmpgtsb_p (CR6_EQ_REV, To_LL_VSC (B), To_LL_VSC (A));
-    end vec_any_lt;
- 
-    function vec_any_lt
-      (A : vector_signed_char;
-       B : vector_signed_char) return c_int
-    is
-    begin
-       return vcmpgtsb_p (CR6_EQ_REV, To_LL_VSC (B), To_LL_VSC (A));
-    end vec_any_lt;
- 
-    function vec_any_lt
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return c_int
-    is
-    begin
-       return vcmpgtuh_p (CR6_EQ_REV, To_LL_VSS (B), To_LL_VSS (A));
-    end vec_any_lt;
- 
-    function vec_any_lt
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return c_int
-    is
-    begin
-       return vcmpgtuh_p (CR6_EQ_REV, To_LL_VSS (B), To_LL_VSS (A));
-    end vec_any_lt;
- 
-    function vec_any_lt
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return c_int
-    is
-    begin
-       return vcmpgtuh_p (CR6_EQ_REV, To_LL_VSS (B), To_LL_VSS (A));
-    end vec_any_lt;
- 
-    function vec_any_lt
-      (A : vector_bool_short;
-       B : vector_signed_short) return c_int
-    is
-    begin
-       return vcmpgtsh_p (CR6_EQ_REV, To_LL_VSS (B), To_LL_VSS (A));
-    end vec_any_lt;
- 
-    function vec_any_lt
-      (A : vector_signed_short;
-       B : vector_bool_short) return c_int
-    is
-    begin
-       return vcmpgtsh_p (CR6_EQ_REV, To_LL_VSS (B), To_LL_VSS (A));
-    end vec_any_lt;
- 
-    function vec_any_lt
-      (A : vector_signed_short;
-       B : vector_signed_short) return c_int
-    is
-    begin
-       return vcmpgtsh_p (CR6_EQ_REV, To_LL_VSS (B), To_LL_VSS (A));
-    end vec_any_lt;
- 
-    function vec_any_lt
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return c_int
-    is
-    begin
-       return vcmpgtuw_p (CR6_EQ_REV, To_LL_VSI (B), To_LL_VSI (A));
-    end vec_any_lt;
- 
-    function vec_any_lt
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return c_int
-    is
-    begin
-       return vcmpgtuw_p (CR6_EQ_REV, To_LL_VSI (B), To_LL_VSI (A));
-    end vec_any_lt;
- 
-    function vec_any_lt
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return c_int
-    is
-    begin
-       return vcmpgtuw_p (CR6_EQ_REV, To_LL_VSI (B), To_LL_VSI (A));
-    end vec_any_lt;
- 
-    function vec_any_lt
-      (A : vector_bool_int;
-       B : vector_signed_int) return c_int
-    is
-    begin
-       return vcmpgtsw_p (CR6_EQ_REV, To_LL_VSI (B), To_LL_VSI (A));
-    end vec_any_lt;
- 
-    function vec_any_lt
-      (A : vector_signed_int;
-       B : vector_bool_int) return c_int
-    is
-    begin
-       return vcmpgtsw_p (CR6_EQ_REV, To_LL_VSI (B), To_LL_VSI (A));
-    end vec_any_lt;
- 
-    function vec_any_lt
-      (A : vector_signed_int;
-       B : vector_signed_int) return c_int
-    is
-    begin
-       return vcmpgtsw_p (CR6_EQ_REV, To_LL_VSI (B), To_LL_VSI (A));
-    end vec_any_lt;
- 
-    function vec_any_lt
-      (A : vector_float;
-       B : vector_float) return c_int
-    is
-    begin
-       return vcmpgtfp_p (CR6_EQ_REV, To_LL_VF (B), To_LL_VF (A));
-    end vec_any_lt;
- 
-    -----------------
-    -- vec_any_nan --
-    -----------------
- 
-    function vec_any_nan
-      (A : vector_float) return c_int
-    is
-    begin
-       return vcmpeqfp_p (CR6_LT_REV, To_LL_VF (A), To_LL_VF (A));
-    end vec_any_nan;
- 
-    ----------------
-    -- vec_any_ne --
-    ----------------
- 
-    function vec_any_ne
-      (A : vector_signed_char;
-       B : vector_bool_char) return c_int
-    is
-    begin
-       return vcmpequb_p (CR6_LT_REV, To_LL_VSC (A), To_LL_VSC (B));
-    end vec_any_ne;
- 
-    function vec_any_ne
-      (A : vector_signed_char;
-       B : vector_signed_char) return c_int
-    is
-    begin
-       return vcmpequb_p (CR6_LT_REV, To_LL_VSC (A), To_LL_VSC (B));
-    end vec_any_ne;
- 
-    function vec_any_ne
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return c_int
-    is
-    begin
-       return vcmpequb_p (CR6_LT_REV, To_LL_VSC (A), To_LL_VSC (B));
-    end vec_any_ne;
- 
-    function vec_any_ne
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return c_int
-    is
-    begin
-       return vcmpequb_p (CR6_LT_REV, To_LL_VSC (A), To_LL_VSC (B));
-    end vec_any_ne;
- 
-    function vec_any_ne
-      (A : vector_bool_char;
-       B : vector_bool_char) return c_int
-    is
-    begin
-       return vcmpequb_p (CR6_LT_REV, To_LL_VSC (A), To_LL_VSC (B));
-    end vec_any_ne;
- 
-    function vec_any_ne
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return c_int
-    is
-    begin
-       return vcmpequb_p (CR6_LT_REV, To_LL_VSC (A), To_LL_VSC (B));
-    end vec_any_ne;
- 
-    function vec_any_ne
-      (A : vector_bool_char;
-       B : vector_signed_char) return c_int
-    is
-    begin
-       return vcmpequb_p (CR6_LT_REV, To_LL_VSC (A), To_LL_VSC (B));
-    end vec_any_ne;
- 
-    function vec_any_ne
-      (A : vector_signed_short;
-       B : vector_bool_short) return c_int
-    is
-    begin
-       return vcmpequh_p (CR6_LT_REV, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_any_ne;
- 
-    function vec_any_ne
-      (A : vector_signed_short;
-       B : vector_signed_short) return c_int
-    is
-    begin
-       return vcmpequh_p (CR6_LT_REV, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_any_ne;
- 
-    function vec_any_ne
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return c_int
-    is
-    begin
-       return vcmpequh_p (CR6_LT_REV, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_any_ne;
- 
-    function vec_any_ne
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return c_int
-    is
-    begin
-       return vcmpequh_p (CR6_LT_REV, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_any_ne;
- 
-    function vec_any_ne
-      (A : vector_bool_short;
-       B : vector_bool_short) return c_int
-    is
-    begin
-       return vcmpequh_p (CR6_LT_REV, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_any_ne;
- 
-    function vec_any_ne
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return c_int
-    is
-    begin
-       return vcmpequh_p (CR6_LT_REV, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_any_ne;
- 
-    function vec_any_ne
-      (A : vector_bool_short;
-       B : vector_signed_short) return c_int
-    is
-    begin
-       return vcmpequh_p (CR6_LT_REV, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_any_ne;
- 
-    function vec_any_ne
-      (A : vector_pixel;
-       B : vector_pixel) return c_int
-    is
-    begin
-       return vcmpequh_p (CR6_LT_REV, To_LL_VSS (A), To_LL_VSS (B));
-    end vec_any_ne;
- 
-    function vec_any_ne
-      (A : vector_signed_int;
-       B : vector_bool_int) return c_int
-    is
-    begin
-       return vcmpequw_p (CR6_LT_REV, To_LL_VSI (A), To_LL_VSI (B));
-    end vec_any_ne;
- 
-    function vec_any_ne
-      (A : vector_signed_int;
-       B : vector_signed_int) return c_int
-    is
-    begin
-       return vcmpequw_p (CR6_LT_REV, To_LL_VSI (A), To_LL_VSI (B));
-    end vec_any_ne;
- 
-    function vec_any_ne
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return c_int
-    is
-    begin
-       return vcmpequw_p (CR6_LT_REV, To_LL_VSI (A), To_LL_VSI (B));
-    end vec_any_ne;
- 
-    function vec_any_ne
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return c_int
-    is
-    begin
-       return vcmpequw_p (CR6_LT_REV, To_LL_VSI (A), To_LL_VSI (B));
-    end vec_any_ne;
- 
-    function vec_any_ne
-      (A : vector_bool_int;
-       B : vector_bool_int) return c_int
-    is
-    begin
-       return vcmpequw_p (CR6_LT_REV, To_LL_VSI (A), To_LL_VSI (B));
-    end vec_any_ne;
- 
-    function vec_any_ne
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return c_int
-    is
-    begin
-       return vcmpequw_p (CR6_LT_REV, To_LL_VSI (A), To_LL_VSI (B));
-    end vec_any_ne;
- 
-    function vec_any_ne
-      (A : vector_bool_int;
-       B : vector_signed_int) return c_int
-    is
-    begin
-       return vcmpequw_p (CR6_LT_REV, To_LL_VSI (A), To_LL_VSI (B));
-    end vec_any_ne;
- 
-    function vec_any_ne
-      (A : vector_float;
-       B : vector_float) return c_int
-    is
-    begin
-       return vcmpeqfp_p (CR6_LT_REV, To_LL_VF (A), To_LL_VF (B));
-    end vec_any_ne;
- 
-    -----------------
-    -- vec_any_nge --
-    -----------------
- 
-    function vec_any_nge
-      (A : vector_float;
-       B : vector_float) return c_int
-    is
-    begin
-       return vcmpgefp_p (CR6_LT_REV, To_LL_VF (A), To_LL_VF (B));
-    end vec_any_nge;
- 
-    -----------------
-    -- vec_any_ngt --
-    -----------------
- 
-    function vec_any_ngt
-      (A : vector_float;
-       B : vector_float) return c_int
-    is
-    begin
-       return vcmpgtfp_p (CR6_LT_REV, To_LL_VF (A), To_LL_VF (B));
-    end vec_any_ngt;
- 
-    -----------------
-    -- vec_any_nle --
-    -----------------
- 
-    function vec_any_nle
-      (A : vector_float;
-       B : vector_float) return c_int
-    is
-    begin
-       return vcmpgefp_p (CR6_LT_REV, To_LL_VF (B), To_LL_VF (A));
-    end vec_any_nle;
- 
-    -----------------
-    -- vec_any_nlt --
-    -----------------
- 
-    function vec_any_nlt
-      (A : vector_float;
-       B : vector_float) return c_int
-    is
-    begin
-       return vcmpgtfp_p (CR6_LT_REV, To_LL_VF (B), To_LL_VF (A));
-    end vec_any_nlt;
- 
-    ---------------------
-    -- vec_any_numeric --
-    ---------------------
- 
-    function vec_any_numeric
-      (A : vector_float) return c_int
-    is
-    begin
-       return vcmpeqfp_p (CR6_EQ_REV, To_LL_VF (A), To_LL_VF (A));
-    end vec_any_numeric;
- 
-    -----------------
-    -- vec_any_out --
-    -----------------
- 
-    function vec_any_out
-      (A : vector_float;
-       B : vector_float) return c_int
-    is
-    begin
-       return vcmpbfp_p (CR6_EQ_REV, To_LL_VF (A), To_LL_VF (B));
-    end vec_any_out;
- 
-    --------------
-    -- vec_step --
-    --------------
- 
-    function vec_step
-      (V : vector_unsigned_char) return Integer
-    is
-       pragma Unreferenced (V);
-    begin
-       return 16;
-    end vec_step;
- 
-    function vec_step
-      (V : vector_signed_char) return Integer
-    is
-       pragma Unreferenced (V);
-    begin
-       return 16;
-    end vec_step;
- 
-    function vec_step
-      (V : vector_bool_char) return Integer
-    is
-       pragma Unreferenced (V);
-    begin
-       return 16;
-    end vec_step;
- 
-    function vec_step
-      (V : vector_unsigned_short) return Integer
-    is
-       pragma Unreferenced (V);
-    begin
-       return 8;
-    end vec_step;
- 
-    function vec_step
-      (V : vector_signed_short) return Integer
-    is
-       pragma Unreferenced (V);
-    begin
-       return 8;
-    end vec_step;
- 
-    function vec_step
-      (V : vector_bool_short) return Integer
-    is
-       pragma Unreferenced (V);
-    begin
-       return 8;
-    end vec_step;
- 
-    function vec_step
-      (V : vector_unsigned_int) return Integer
-    is
-       pragma Unreferenced (V);
-    begin
-       return 4;
-    end vec_step;
- 
-    function vec_step
-      (V : vector_signed_int) return Integer
-    is
-       pragma Unreferenced (V);
-    begin
-       return 4;
-    end vec_step;
- 
-    function vec_step
-      (V : vector_bool_int) return Integer
-    is
-       pragma Unreferenced (V);
-    begin
-       return 4;
-    end vec_step;
- 
-    function vec_step
-      (V : vector_float) return Integer
-    is
-       pragma Unreferenced (V);
-    begin
-       return 4;
-    end vec_step;
- 
-    function vec_step
-      (V : vector_pixel) return Integer
-    is
-       pragma Unreferenced (V);
-    begin
-       return 4;
-    end vec_step;
- 
- end GNAT.Altivec.Vector_Operations;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-alveop.ads gcc-8.1.0/gcc/ada/g-alveop.ads
*** gcc-7.3.0/gcc/ada/g-alveop.ads	Fri Feb 20 14:27:54 2015
--- gcc-8.1.0/gcc/ada/g-alveop.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,8362 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --       G N A T . A L T I V E C . V E C T O R _ O P E R A T I O N S        --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2004-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 unit is the user-level Ada interface to AltiVec operations on vector
- --  objects. It is common to both the Soft and the Hard bindings.
- 
- with GNAT.Altivec.Vector_Types;      use GNAT.Altivec.Vector_Types;
- with GNAT.Altivec.Low_Level_Vectors; use GNAT.Altivec.Low_Level_Vectors;
- 
- ------------------------------------
- -- GNAT.Altivec.Vector_Operations --
- ------------------------------------
- 
- ------------------------------------
- -- GNAT.Altivec.Vector_Operations --
- ------------------------------------
- 
- package GNAT.Altivec.Vector_Operations is
- 
-    -------------------------------------
-    -- Different Flavors of Interfaces --
-    -------------------------------------
- 
-    --  The vast majority of the user visible functions are just neutral type
-    --  conversion wrappers around calls to low level primitives. For instance:
- 
-    --        function vec_sll
-    --          (A : vector_signed_int;
-    --           B : vector_unsigned_char) return vector_signed_int is
-    --        begin
-    --          return To_VSI (vsl (To_VSI (A), To_VSI (B)));
-    --        end vec_sll;
- 
-    --  We actually don't always need an explicit wrapper and can bind directly
-    --  with a straight Import of the low level routine, or a renaming of such
-    --  instead.
- 
-    --  A direct binding is not possible (that is, a wrapper is mandatory) in
-    --  a number of cases:
- 
-    --  o When the high-level/low-level types don't match, in which case a
-    --  straight import would risk wrong code generation or compiler blowups in
-    --  the Hard binding case. This is the case for 'B' in the example above.
- 
-    --  o When the high-level/low-level argument lists differ, as is the case
-    --  for most of the AltiVec predicates, relying on a low-level primitive
-    --  which expects a control code argument, like:
- 
-    --        function vec_any_ne
-    --           (A : vector_signed_int;
-    --            B : vector_signed_int) return c_int is
-    --        begin
-    --          return vcmpequw_p (CR6_LT_REV, To_VSI (A), To_VSI (B));
-    --        end vec_any_ne;
- 
-    --  o When the high-level/low-level arguments order don't match, as in:
- 
-    --        function vec_cmplt
-    --           (A : vector_unsigned_char;
-    --            B : vector_unsigned_char) return vector_bool_char is
-    --         begin
-    --           return To_VBC (vcmpgtub (To_VSC (B), To_VSC (A)));
-    --         end vec_cmplt;
- 
-    -----------------------------
-    -- Inlining Considerations --
-    -----------------------------
- 
-    --  The intent in the hard binding case is to eventually map operations to
-    --  hardware instructions. Needless to say, intermediate function calls do
-    --  not fit this purpose, so all user visible subprograms need to be marked
-    --  Inline_Always. Some of the builtins we eventually bind to expect literal
-    --  arguments. Wrappers to such builtins are made Convention Intrinsic as
-    --  well so we don't attempt to compile the bodies on their own.
- 
-    --  In the soft case, the bulk of the work is performed by the low level
-    --  routines, and those exported by this unit are short enough for the
-    --  inlining to make sense and even be beneficial.
- 
-    -------------------------------------------------------
-    -- [PIM-4.4 Generic and Specific AltiVec operations] --
-    -------------------------------------------------------
- 
-    -------------
-    -- vec_abs --
-    -------------
- 
-    function vec_abs
-      (A : vector_signed_char) return vector_signed_char;
- 
-    function vec_abs
-      (A : vector_signed_short) return vector_signed_short;
- 
-    function vec_abs
-      (A : vector_signed_int) return vector_signed_int;
- 
-    function vec_abs
-      (A : vector_float) return vector_float;
- 
-    --------------
-    -- vec_abss --
-    --------------
- 
-    function vec_abss
-      (A : vector_signed_char) return vector_signed_char;
- 
-    function vec_abss
-      (A : vector_signed_short) return vector_signed_short;
- 
-    function vec_abss
-      (A : vector_signed_int) return vector_signed_int;
- 
-    -------------
-    -- vec_add --
-    -------------
- 
-    function vec_add
-      (A : vector_bool_char;
-       B : vector_signed_char) return vector_signed_char;
- 
-    function vec_add
-      (A : vector_signed_char;
-       B : vector_bool_char) return vector_signed_char;
- 
-    function vec_add
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char;
- 
-    function vec_add
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return vector_unsigned_char;
- 
-    function vec_add
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return vector_unsigned_char;
- 
-    function vec_add
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char;
- 
-    function vec_add
-      (A : vector_bool_short;
-       B : vector_signed_short) return vector_signed_short;
- 
-    function vec_add
-      (A : vector_signed_short;
-       B : vector_bool_short) return vector_signed_short;
- 
-    function vec_add
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_short;
- 
-    function vec_add
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return vector_unsigned_short;
- 
-    function vec_add
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return vector_unsigned_short;
- 
-    function vec_add
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short;
- 
-    function vec_add
-      (A : vector_bool_int;
-       B : vector_signed_int) return vector_signed_int;
- 
-    function vec_add
-      (A : vector_signed_int;
-       B : vector_bool_int) return vector_signed_int;
- 
-    function vec_add
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int;
- 
-    function vec_add
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return vector_unsigned_int;
- 
-    function vec_add
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return vector_unsigned_int;
- 
-    function vec_add
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int;
- 
-    function vec_add
-      (A : vector_float;
-       B : vector_float) return vector_float;
- 
-    ----------------
-    -- vec_vaddfp --
-    ----------------
- 
-    function vec_vaddfp
-      (A : vector_float;
-       B : vector_float) return vector_float;
- 
-    -----------------
-    -- vec_vadduwm --
-    -----------------
- 
-    function vec_vadduwm
-      (A : vector_bool_int;
-       B : vector_signed_int) return vector_signed_int;
- 
-    function vec_vadduwm
-      (A : vector_signed_int;
-       B : vector_bool_int) return vector_signed_int;
- 
-    function vec_vadduwm
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int;
- 
-    function vec_vadduwm
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return vector_unsigned_int;
- 
-    function vec_vadduwm
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return vector_unsigned_int;
- 
-    function vec_vadduwm
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int;
- 
-    -----------------
-    -- vec_vadduhm --
-    -----------------
- 
-    function vec_vadduhm
-      (A : vector_bool_short;
-       B : vector_signed_short) return vector_signed_short;
- 
-    function vec_vadduhm
-      (A : vector_signed_short;
-       B : vector_bool_short) return vector_signed_short;
- 
-    function vec_vadduhm
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_short;
- 
-    function vec_vadduhm
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return vector_unsigned_short;
- 
-    function vec_vadduhm
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return vector_unsigned_short;
- 
-    function vec_vadduhm
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short;
- 
-    -----------------
-    -- vec_vaddubm --
-    -----------------
- 
-    function vec_vaddubm
-      (A : vector_bool_char;
-       B : vector_signed_char) return vector_signed_char;
- 
-    function vec_vaddubm
-      (A : vector_signed_char;
-       B : vector_bool_char) return vector_signed_char;
- 
-    function vec_vaddubm
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char;
- 
-    function vec_vaddubm
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return vector_unsigned_char;
- 
-    function vec_vaddubm
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return vector_unsigned_char;
- 
-    function vec_vaddubm
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char;
- 
-    --------------
-    -- vec_addc --
-    --------------
- 
-    function vec_addc
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int;
- 
-    --------------
-    -- vec_adds --
-    --------------
- 
-    function vec_adds
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return vector_unsigned_char;
- 
-    function vec_adds
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return vector_unsigned_char;
- 
-    function vec_adds
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char;
- 
-    function vec_adds
-      (A : vector_bool_char;
-       B : vector_signed_char) return vector_signed_char;
- 
-    function vec_adds
-      (A : vector_signed_char;
-       B : vector_bool_char) return vector_signed_char;
- 
-    function vec_adds
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char;
- 
-    function vec_adds
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return vector_unsigned_short;
- 
-    function vec_adds
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return vector_unsigned_short;
- 
-    function vec_adds
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short;
- 
-    function vec_adds
-      (A : vector_bool_short;
-       B : vector_signed_short) return vector_signed_short;
- 
-    function vec_adds
-      (A : vector_signed_short;
-       B : vector_bool_short) return vector_signed_short;
- 
-    function vec_adds
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_short;
- 
-    function vec_adds
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return vector_unsigned_int;
- 
-    function vec_adds
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return vector_unsigned_int;
- 
-    function vec_adds
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int;
- 
-    function vec_adds
-      (A : vector_bool_int;
-       B : vector_signed_int) return vector_signed_int;
- 
-    function vec_adds
-      (A : vector_signed_int;
-       B : vector_bool_int) return vector_signed_int;
- 
-    function vec_adds
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int;
- 
-    -----------------
-    -- vec_vaddsws --
-    -----------------
- 
-    function vec_vaddsws
-      (A : vector_bool_int;
-       B : vector_signed_int) return vector_signed_int;
- 
-    function vec_vaddsws
-      (A : vector_signed_int;
-       B : vector_bool_int) return vector_signed_int;
- 
-    function vec_vaddsws
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int;
- 
-    -----------------
-    -- vec_vadduws --
-    -----------------
- 
-    function vec_vadduws
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return vector_unsigned_int;
- 
-    function vec_vadduws
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return vector_unsigned_int;
- 
-    function vec_vadduws
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int;
- 
-    -----------------
-    -- vec_vaddshs --
-    -----------------
- 
-    function vec_vaddshs
-      (A : vector_bool_short;
-       B : vector_signed_short) return vector_signed_short;
- 
-    function vec_vaddshs
-      (A : vector_signed_short;
-       B : vector_bool_short) return vector_signed_short;
- 
-    function vec_vaddshs
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_short;
- 
-    -----------------
-    -- vec_vadduhs --
-    -----------------
- 
-    function vec_vadduhs
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return vector_unsigned_short;
- 
-    function vec_vadduhs
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return vector_unsigned_short;
- 
-    function vec_vadduhs
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short;
- 
-    -----------------
-    -- vec_vaddsbs --
-    -----------------
- 
-    function vec_vaddsbs
-      (A : vector_bool_char;
-       B : vector_signed_char) return vector_signed_char;
- 
-    function vec_vaddsbs
-      (A : vector_signed_char;
-       B : vector_bool_char) return vector_signed_char;
- 
-    function vec_vaddsbs
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char;
- 
-    -----------------
-    -- vec_vaddubs --
-    -----------------
- 
-    function vec_vaddubs
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return vector_unsigned_char;
- 
-    function vec_vaddubs
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return vector_unsigned_char;
- 
-    function vec_vaddubs
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char;
- 
-    -------------
-    -- vec_and --
-    -------------
- 
-    function vec_and
-      (A : vector_float;
-       B : vector_float) return vector_float;
- 
-    function vec_and
-      (A : vector_float;
-       B : vector_bool_int) return vector_float;
- 
-    function vec_and
-      (A : vector_bool_int;
-       B : vector_float) return vector_float;
- 
-    function vec_and
-      (A : vector_bool_int;
-       B : vector_bool_int) return vector_bool_int;
- 
-    function vec_and
-      (A : vector_bool_int;
-       B : vector_signed_int) return vector_signed_int;
- 
-    function vec_and
-      (A : vector_signed_int;
-       B : vector_bool_int) return vector_signed_int;
- 
-    function vec_and
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int;
- 
-    function vec_and
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return vector_unsigned_int;
- 
-    function vec_and
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return vector_unsigned_int;
- 
-    function vec_and
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int;
- 
-    function vec_and
-      (A : vector_bool_short;
-       B : vector_bool_short) return vector_bool_short;
- 
-    function vec_and
-      (A : vector_bool_short;
-       B : vector_signed_short) return vector_signed_short;
- 
-    function vec_and
-      (A : vector_signed_short;
-       B : vector_bool_short) return vector_signed_short;
- 
-    function vec_and
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_short;
- 
-    function vec_and
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return vector_unsigned_short;
- 
-    function vec_and
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return vector_unsigned_short;
- 
-    function vec_and
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short;
- 
-    function vec_and
-      (A : vector_bool_char;
-       B : vector_signed_char) return vector_signed_char;
- 
-    function vec_and
-      (A : vector_bool_char;
-       B : vector_bool_char) return vector_bool_char;
- 
-    function vec_and
-      (A : vector_signed_char;
-       B : vector_bool_char) return vector_signed_char;
- 
-    function vec_and
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char;
- 
-    function vec_and
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return vector_unsigned_char;
- 
-    function vec_and
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return vector_unsigned_char;
- 
-    function vec_and
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char;
- 
-    --------------
-    -- vec_andc --
-    --------------
- 
-    function vec_andc
-      (A : vector_float;
-       B : vector_float) return vector_float;
- 
-    function vec_andc
-      (A : vector_float;
-       B : vector_bool_int) return vector_float;
- 
-    function vec_andc
-      (A : vector_bool_int;
-       B : vector_float) return vector_float;
- 
-    function vec_andc
-      (A : vector_bool_int;
-       B : vector_bool_int) return vector_bool_int;
- 
-    function vec_andc
-      (A : vector_bool_int;
-       B : vector_signed_int) return vector_signed_int;
- 
-    function vec_andc
-      (A : vector_signed_int;
-       B : vector_bool_int) return vector_signed_int;
- 
-    function vec_andc
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int;
- 
-    function vec_andc
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return vector_unsigned_int;
- 
-    function vec_andc
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return vector_unsigned_int;
- 
-    function vec_andc
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int;
- 
-    function vec_andc
-      (A : vector_bool_short;
-       B : vector_bool_short) return vector_bool_short;
- 
-    function vec_andc
-      (A : vector_bool_short;
-       B : vector_signed_short) return vector_signed_short;
- 
-    function vec_andc
-      (A : vector_signed_short;
-       B : vector_bool_short) return vector_signed_short;
- 
-    function vec_andc
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_short;
- 
-    function vec_andc
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return vector_unsigned_short;
- 
-    function vec_andc
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return vector_unsigned_short;
- 
-    function vec_andc
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short;
- 
-    function vec_andc
-      (A : vector_bool_char;
-       B : vector_signed_char) return vector_signed_char;
- 
-    function vec_andc
-      (A : vector_bool_char;
-       B : vector_bool_char) return vector_bool_char;
- 
-    function vec_andc
-      (A : vector_signed_char;
-       B : vector_bool_char) return vector_signed_char;
- 
-    function vec_andc
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char;
- 
-    function vec_andc
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return vector_unsigned_char;
- 
-    function vec_andc
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return vector_unsigned_char;
- 
-    function vec_andc
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char;
- 
-    -------------
-    -- vec_avg --
-    -------------
- 
-    function vec_avg
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char;
- 
-    function vec_avg
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char;
- 
-    function vec_avg
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short;
- 
-    function vec_avg
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_short;
- 
-    function vec_avg
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int;
- 
-    function vec_avg
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int;
- 
-    ----------------
-    -- vec_vavgsw --
-    ----------------
- 
-    function vec_vavgsw
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int;
- 
-    ----------------
-    -- vec_vavguw --
-    ----------------
- 
-    function vec_vavguw
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int;
- 
-    ----------------
-    -- vec_vavgsh --
-    ----------------
- 
-    function vec_vavgsh
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_short;
- 
-    ----------------
-    -- vec_vavguh --
-    ----------------
- 
-    function vec_vavguh
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short;
- 
-    ----------------
-    -- vec_vavgsb --
-    ----------------
- 
-    function vec_vavgsb
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char;
- 
-    ----------------
-    -- vec_vavgub --
-    ----------------
- 
-    function vec_vavgub
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char;
- 
-    --------------
-    -- vec_ceil --
-    --------------
- 
-    function vec_ceil
-      (A : vector_float) return vector_float;
- 
-    --------------
-    -- vec_cmpb --
-    --------------
- 
-    function vec_cmpb
-      (A : vector_float;
-       B : vector_float) return vector_signed_int;
- 
-    function vec_cmpeq
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_bool_char;
- 
-    function vec_cmpeq
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_bool_char;
- 
-    function vec_cmpeq
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_bool_short;
- 
-    function vec_cmpeq
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_bool_short;
- 
-    function vec_cmpeq
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_bool_int;
- 
-    function vec_cmpeq
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_bool_int;
- 
-    function vec_cmpeq
-      (A : vector_float;
-       B : vector_float) return vector_bool_int;
- 
-    ------------------
-    -- vec_vcmpeqfp --
-    ------------------
- 
-    function vec_vcmpeqfp
-      (A : vector_float;
-       B : vector_float) return vector_bool_int;
- 
-    ------------------
-    -- vec_vcmpequw --
-    ------------------
- 
-    function vec_vcmpequw
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_bool_int;
- 
-    function vec_vcmpequw
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_bool_int;
- 
-    ------------------
-    -- vec_vcmpequh --
-    ------------------
- 
-    function vec_vcmpequh
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_bool_short;
- 
-    function vec_vcmpequh
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_bool_short;
- 
-    ------------------
-    -- vec_vcmpequb --
-    ------------------
- 
-    function vec_vcmpequb
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_bool_char;
- 
-    function vec_vcmpequb
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_bool_char;
- 
-    ---------------
-    -- vec_cmpge --
-    ---------------
- 
-    function vec_cmpge
-      (A : vector_float;
-       B : vector_float) return vector_bool_int;
- 
-    ---------------
-    -- vec_cmpgt --
-    ---------------
- 
-    function vec_cmpgt
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_bool_char;
- 
-    function vec_cmpgt
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_bool_char;
- 
-    function vec_cmpgt
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_bool_short;
- 
-    function vec_cmpgt
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_bool_short;
- 
-    function vec_cmpgt
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_bool_int;
- 
-    function vec_cmpgt
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_bool_int;
- 
-    function vec_cmpgt
-      (A : vector_float;
-       B : vector_float) return vector_bool_int;
- 
-    ------------------
-    -- vec_vcmpgtfp --
-    ------------------
- 
-    function vec_vcmpgtfp
-      (A : vector_float;
-       B : vector_float) return vector_bool_int;
- 
-    ------------------
-    -- vec_vcmpgtsw --
-    ------------------
- 
-    function vec_vcmpgtsw
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_bool_int;
- 
-    ------------------
-    -- vec_vcmpgtuw --
-    ------------------
- 
-    function vec_vcmpgtuw
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_bool_int;
- 
-    ------------------
-    -- vec_vcmpgtsh --
-    ------------------
- 
-    function vec_vcmpgtsh
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_bool_short;
- 
-    ------------------
-    -- vec_vcmpgtuh --
-    ------------------
- 
-    function vec_vcmpgtuh
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_bool_short;
- 
-    ------------------
-    -- vec_vcmpgtsb --
-    ------------------
- 
-    function vec_vcmpgtsb
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_bool_char;
- 
-    ------------------
-    -- vec_vcmpgtub --
-    ------------------
- 
-    function vec_vcmpgtub
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_bool_char;
- 
-    ---------------
-    -- vec_cmple --
-    ---------------
- 
-    function vec_cmple
-      (A : vector_float;
-       B : vector_float) return vector_bool_int;
- 
-    ---------------
-    -- vec_cmplt --
-    ---------------
- 
-    function vec_cmplt
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_bool_char;
- 
-    function vec_cmplt
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_bool_char;
- 
-    function vec_cmplt
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_bool_short;
- 
-    function vec_cmplt
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_bool_short;
- 
-    function vec_cmplt
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_bool_int;
- 
-    function vec_cmplt
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_bool_int;
- 
-    function vec_cmplt
-      (A : vector_float;
-       B : vector_float) return vector_bool_int;
- 
-    ---------------
-    -- vec_vcfsx --
-    ---------------
- 
-    function vec_vcfsx
-      (A : vector_signed_int;
-       B : c_int) return vector_float
-    renames Low_Level_Vectors.vcfsx;
- 
-    ---------------
-    -- vec_vcfux --
-    ---------------
- 
-    function vec_vcfux
-      (A : vector_unsigned_int;
-       B : c_int) return vector_float
-    renames Low_Level_Vectors.vcfux;
- 
-    ----------------
-    -- vec_vctsxs --
-    ----------------
- 
-    function vec_vctsxs
-      (A : vector_float;
-       B : c_int) return vector_signed_int
-    renames Low_Level_Vectors.vctsxs;
- 
-    ----------------
-    -- vec_vctuxs --
-    ----------------
- 
-    function vec_vctuxs
-      (A : vector_float;
-       B : c_int) return vector_unsigned_int
-    renames Low_Level_Vectors.vctuxs;
- 
-    -------------
-    -- vec_dss --
-    -------------
- 
-    procedure vec_dss
-      (A : c_int)
-    renames Low_Level_Vectors.dss;
- 
-    ----------------
-    -- vec_dssall --
-    ----------------
- 
-    procedure vec_dssall
-    renames Low_Level_Vectors.dssall;
- 
-    -------------
-    -- vec_dst --
-    -------------
- 
-    procedure vec_dst
-      (A : const_vector_unsigned_char_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dst
-      (A : const_vector_signed_char_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dst
-      (A : const_vector_bool_char_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dst
-      (A : const_vector_unsigned_short_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dst
-      (A : const_vector_signed_short_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dst
-      (A : const_vector_bool_short_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dst
-      (A : const_vector_pixel_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dst
-      (A : const_vector_unsigned_int_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dst
-      (A : const_vector_signed_int_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dst
-      (A : const_vector_bool_int_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dst
-      (A : const_vector_float_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dst
-      (A : const_unsigned_char_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dst
-      (A : const_signed_char_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dst
-      (A : const_unsigned_short_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dst
-      (A : const_short_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dst
-      (A : const_unsigned_int_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dst
-      (A : const_int_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dst
-      (A : const_unsigned_long_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dst
-      (A : const_long_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dst
-      (A : const_float_ptr;
-       B : c_int;
-       C : c_int);
-    pragma Inline_Always (vec_dst);
-    pragma Convention (Intrinsic, vec_dst);
- 
-    ---------------
-    -- vec_dstst --
-    ---------------
- 
-    procedure vec_dstst
-      (A : const_vector_unsigned_char_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dstst
-      (A : const_vector_signed_char_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dstst
-      (A : const_vector_bool_char_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dstst
-      (A : const_vector_unsigned_short_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dstst
-      (A : const_vector_signed_short_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dstst
-      (A : const_vector_bool_short_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dstst
-      (A : const_vector_pixel_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dstst
-      (A : const_vector_unsigned_int_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dstst
-      (A : const_vector_signed_int_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dstst
-      (A : const_vector_bool_int_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dstst
-      (A : const_vector_float_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dstst
-      (A : const_unsigned_char_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dstst
-      (A : const_signed_char_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dstst
-      (A : const_unsigned_short_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dstst
-      (A : const_short_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dstst
-      (A : const_unsigned_int_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dstst
-      (A : const_int_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dstst
-      (A : const_unsigned_long_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dstst
-      (A : const_long_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dstst
-      (A : const_float_ptr;
-       B : c_int;
-       C : c_int);
-    pragma Inline_Always (vec_dstst);
-    pragma Convention (Intrinsic, vec_dstst);
- 
-    ----------------
-    -- vec_dststt --
-    ----------------
- 
-    procedure vec_dststt
-      (A : const_vector_unsigned_char_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dststt
-      (A : const_vector_signed_char_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dststt
-      (A : const_vector_bool_char_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dststt
-      (A : const_vector_unsigned_short_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dststt
-      (A : const_vector_signed_short_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dststt
-      (A : const_vector_bool_short_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dststt
-      (A : const_vector_pixel_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dststt
-      (A : const_vector_unsigned_int_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dststt
-      (A : const_vector_signed_int_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dststt
-      (A : const_vector_bool_int_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dststt
-      (A : const_vector_float_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dststt
-      (A : const_unsigned_char_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dststt
-      (A : const_signed_char_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dststt
-      (A : const_unsigned_short_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dststt
-      (A : const_short_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dststt
-      (A : const_unsigned_int_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dststt
-      (A : const_int_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dststt
-      (A : const_unsigned_long_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dststt
-      (A : const_long_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dststt
-      (A : const_float_ptr;
-       B : c_int;
-       C : c_int);
-    pragma Inline_Always (vec_dststt);
-    pragma Convention (Intrinsic, vec_dststt);
- 
-    --------------
-    -- vec_dstt --
-    --------------
- 
-    procedure vec_dstt
-      (A : const_vector_unsigned_char_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dstt
-      (A : const_vector_signed_char_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dstt
-      (A : const_vector_bool_char_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dstt
-      (A : const_vector_unsigned_short_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dstt
-      (A : const_vector_signed_short_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dstt
-      (A : const_vector_bool_short_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dstt
-      (A : const_vector_pixel_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dstt
-      (A : const_vector_unsigned_int_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dstt
-      (A : const_vector_signed_int_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dstt
-      (A : const_vector_bool_int_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dstt
-      (A : const_vector_float_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dstt
-      (A : const_unsigned_char_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dstt
-      (A : const_signed_char_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dstt
-      (A : const_unsigned_short_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dstt
-      (A : const_short_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dstt
-      (A : const_unsigned_int_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dstt
-      (A : const_int_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dstt
-      (A : const_unsigned_long_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dstt
-      (A : const_long_ptr;
-       B : c_int;
-       C : c_int);
- 
-    procedure vec_dstt
-      (A : const_float_ptr;
-       B : c_int;
-       C : c_int);
-    pragma Inline_Always (vec_dstt);
-    pragma Convention (Intrinsic, vec_dstt);
- 
-    ---------------
-    -- vec_expte --
-    ---------------
- 
-    function vec_expte
-      (A : vector_float) return vector_float;
- 
-    ---------------
-    -- vec_floor --
-    ---------------
- 
-    function vec_floor
-      (A : vector_float) return vector_float;
- 
-    ------------
-    -- vec_ld --
-    ------------
- 
-    function vec_ld
-      (A : c_long;
-       B : const_vector_float_ptr) return vector_float;
- 
-    function vec_ld
-      (A : c_long;
-       B : const_float_ptr) return vector_float;
- 
-    function vec_ld
-      (A : c_long;
-       B : const_vector_bool_int_ptr) return vector_bool_int;
- 
-    function vec_ld
-      (A : c_long;
-       B : const_vector_signed_int_ptr) return vector_signed_int;
- 
-    function vec_ld
-      (A : c_long;
-       B : const_int_ptr) return vector_signed_int;
- 
-    function vec_ld
-      (A : c_long;
-       B : const_long_ptr) return vector_signed_int;
- 
-    function vec_ld
-      (A : c_long;
-       B : const_vector_unsigned_int_ptr) return vector_unsigned_int;
- 
-    function vec_ld
-      (A : c_long;
-       B : const_unsigned_int_ptr) return vector_unsigned_int;
- 
-    function vec_ld
-      (A : c_long;
-       B : const_unsigned_long_ptr) return vector_unsigned_int;
- 
-    function vec_ld
-      (A : c_long;
-       B : const_vector_bool_short_ptr) return vector_bool_short;
- 
-    function vec_ld
-      (A : c_long;
-       B : const_vector_pixel_ptr) return vector_pixel;
- 
-    function vec_ld
-      (A : c_long;
-       B : const_vector_signed_short_ptr) return vector_signed_short;
- 
-    function vec_ld
-      (A : c_long;
-       B : const_short_ptr) return vector_signed_short;
- 
-    function vec_ld
-      (A : c_long;
-       B : const_vector_unsigned_short_ptr) return vector_unsigned_short;
- 
-    function vec_ld
-      (A : c_long;
-       B : const_unsigned_short_ptr) return vector_unsigned_short;
- 
-    function vec_ld
-      (A : c_long;
-       B : const_vector_bool_char_ptr) return vector_bool_char;
- 
-    function vec_ld
-      (A : c_long;
-       B : const_vector_signed_char_ptr) return vector_signed_char;
- 
-    function vec_ld
-      (A : c_long;
-       B : const_signed_char_ptr) return vector_signed_char;
- 
-    function vec_ld
-      (A : c_long;
-       B : const_vector_unsigned_char_ptr) return vector_unsigned_char;
- 
-    function vec_ld
-      (A : c_long;
-       B : const_unsigned_char_ptr) return vector_unsigned_char;
- 
-    -------------
-    -- vec_lde --
-    -------------
- 
-    function vec_lde
-      (A : c_long;
-       B : const_signed_char_ptr) return vector_signed_char;
- 
-    function vec_lde
-      (A : c_long;
-       B : const_unsigned_char_ptr) return vector_unsigned_char;
- 
-    function vec_lde
-      (A : c_long;
-       B : const_short_ptr) return vector_signed_short;
- 
-    function vec_lde
-      (A : c_long;
-       B : const_unsigned_short_ptr) return vector_unsigned_short;
- 
-    function vec_lde
-      (A : c_long;
-       B : const_float_ptr) return vector_float;
- 
-    function vec_lde
-      (A : c_long;
-       B : const_int_ptr) return vector_signed_int;
- 
-    function vec_lde
-      (A : c_long;
-       B : const_unsigned_int_ptr) return vector_unsigned_int;
- 
-    function vec_lde
-      (A : c_long;
-       B : const_long_ptr) return vector_signed_int;
- 
-    function vec_lde
-      (A : c_long;
-       B : const_unsigned_long_ptr) return vector_unsigned_int;
- 
-    ---------------
-    -- vec_lvewx --
-    ---------------
- 
-    function vec_lvewx
-      (A : c_long;
-       B : float_ptr) return vector_float;
- 
-    function vec_lvewx
-      (A : c_long;
-       B : int_ptr) return vector_signed_int;
- 
-    function vec_lvewx
-      (A : c_long;
-       B : unsigned_int_ptr) return vector_unsigned_int;
- 
-    function vec_lvewx
-      (A : c_long;
-       B : long_ptr) return vector_signed_int;
- 
-    function vec_lvewx
-      (A : c_long;
-       B : unsigned_long_ptr) return vector_unsigned_int;
- 
-    ---------------
-    -- vec_lvehx --
-    ---------------
- 
-    function vec_lvehx
-      (A : c_long;
-       B : short_ptr) return vector_signed_short;
- 
-    function vec_lvehx
-      (A : c_long;
-       B : unsigned_short_ptr) return vector_unsigned_short;
- 
-    ---------------
-    -- vec_lvebx --
-    ---------------
- 
-    function vec_lvebx
-      (A : c_long;
-       B : signed_char_ptr) return vector_signed_char;
- 
-    function vec_lvebx
-      (A : c_long;
-       B : unsigned_char_ptr) return vector_unsigned_char;
- 
-    -------------
-    -- vec_ldl --
-    -------------
- 
-    function vec_ldl
-      (A : c_long;
-       B : const_vector_float_ptr) return vector_float;
- 
-    function vec_ldl
-      (A : c_long;
-       B : const_float_ptr) return vector_float;
- 
-    function vec_ldl
-      (A : c_long;
-       B : const_vector_bool_int_ptr) return vector_bool_int;
- 
-    function vec_ldl
-      (A : c_long;
-       B : const_vector_signed_int_ptr) return vector_signed_int;
- 
-    function vec_ldl
-      (A : c_long;
-       B : const_int_ptr) return vector_signed_int;
- 
-    function vec_ldl
-      (A : c_long;
-       B : const_long_ptr) return vector_signed_int;
- 
-    function vec_ldl
-      (A : c_long;
-       B : const_vector_unsigned_int_ptr) return vector_unsigned_int;
- 
-    function vec_ldl
-      (A : c_long;
-       B : const_unsigned_int_ptr) return vector_unsigned_int;
- 
-    function vec_ldl
-      (A : c_long;
-       B : const_unsigned_long_ptr) return vector_unsigned_int;
- 
-    function vec_ldl
-      (A : c_long;
-       B : const_vector_bool_short_ptr) return vector_bool_short;
- 
-    function vec_ldl
-      (A : c_long;
-       B : const_vector_pixel_ptr) return vector_pixel;
- 
-    function vec_ldl
-      (A : c_long;
-       B : const_vector_signed_short_ptr) return vector_signed_short;
- 
-    function vec_ldl
-      (A : c_long;
-       B : const_short_ptr) return vector_signed_short;
- 
-    function vec_ldl
-      (A : c_long;
-       B : const_vector_unsigned_short_ptr) return vector_unsigned_short;
- 
-    function vec_ldl
-      (A : c_long;
-       B : const_unsigned_short_ptr) return vector_unsigned_short;
- 
-    function vec_ldl
-      (A : c_long;
-       B : const_vector_bool_char_ptr) return vector_bool_char;
- 
-    function vec_ldl
-      (A : c_long;
-       B : const_vector_signed_char_ptr) return vector_signed_char;
- 
-    function vec_ldl
-      (A : c_long;
-       B : const_signed_char_ptr) return vector_signed_char;
- 
-    function vec_ldl
-      (A : c_long;
-       B : const_vector_unsigned_char_ptr) return vector_unsigned_char;
- 
-    function vec_ldl
-      (A : c_long;
-       B : const_unsigned_char_ptr) return vector_unsigned_char;
- 
-    --------------
-    -- vec_loge --
-    --------------
- 
-    function vec_loge
-      (A : vector_float) return vector_float;
- 
-    --------------
-    -- vec_lvsl --
-    --------------
- 
-    function vec_lvsl
-      (A : c_long;
-       B : constv_unsigned_char_ptr) return vector_unsigned_char;
- 
-    function vec_lvsl
-      (A : c_long;
-       B : constv_signed_char_ptr) return vector_unsigned_char;
- 
-    function vec_lvsl
-      (A : c_long;
-       B : constv_unsigned_short_ptr) return vector_unsigned_char;
- 
-    function vec_lvsl
-      (A : c_long;
-       B : constv_short_ptr) return vector_unsigned_char;
- 
-    function vec_lvsl
-      (A : c_long;
-       B : constv_unsigned_int_ptr) return vector_unsigned_char;
- 
-    function vec_lvsl
-      (A : c_long;
-       B : constv_int_ptr) return vector_unsigned_char;
- 
-    function vec_lvsl
-      (A : c_long;
-       B : constv_unsigned_long_ptr) return vector_unsigned_char;
- 
-    function vec_lvsl
-      (A : c_long;
-       B : constv_long_ptr) return vector_unsigned_char;
- 
-    function vec_lvsl
-      (A : c_long;
-       B : constv_float_ptr) return vector_unsigned_char;
- 
-    --------------
-    -- vec_lvsr --
-    --------------
- 
-    function vec_lvsr
-      (A : c_long;
-       B : constv_unsigned_char_ptr) return vector_unsigned_char;
- 
-    function vec_lvsr
-      (A : c_long;
-       B : constv_signed_char_ptr) return vector_unsigned_char;
- 
-    function vec_lvsr
-      (A : c_long;
-       B : constv_unsigned_short_ptr) return vector_unsigned_char;
- 
-    function vec_lvsr
-      (A : c_long;
-       B : constv_short_ptr) return vector_unsigned_char;
- 
-    function vec_lvsr
-      (A : c_long;
-       B : constv_unsigned_int_ptr) return vector_unsigned_char;
- 
-    function vec_lvsr
-      (A : c_long;
-       B : constv_int_ptr) return vector_unsigned_char;
- 
-    function vec_lvsr
-      (A : c_long;
-       B : constv_unsigned_long_ptr) return vector_unsigned_char;
- 
-    function vec_lvsr
-      (A : c_long;
-       B : constv_long_ptr) return vector_unsigned_char;
- 
-    function vec_lvsr
-      (A : c_long;
-       B : constv_float_ptr) return vector_unsigned_char;
- 
-    --------------
-    -- vec_madd --
-    --------------
- 
-    function vec_madd
-      (A : vector_float;
-       B : vector_float;
-       C : vector_float) return vector_float;
- 
-    ---------------
-    -- vec_madds --
-    ---------------
- 
-    function vec_madds
-      (A : vector_signed_short;
-       B : vector_signed_short;
-       C : vector_signed_short) return vector_signed_short;
- 
-    -------------
-    -- vec_max --
-    -------------
- 
-    function vec_max
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return vector_unsigned_char;
- 
-    function vec_max
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return vector_unsigned_char;
- 
-    function vec_max
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char;
- 
-    function vec_max
-      (A : vector_bool_char;
-       B : vector_signed_char) return vector_signed_char;
- 
-    function vec_max
-      (A : vector_signed_char;
-       B : vector_bool_char) return vector_signed_char;
- 
-    function vec_max
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char;
- 
-    function vec_max
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return vector_unsigned_short;
- 
-    function vec_max
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return vector_unsigned_short;
- 
-    function vec_max
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short;
- 
-    function vec_max
-      (A : vector_bool_short;
-       B : vector_signed_short) return vector_signed_short;
- 
-    function vec_max
-      (A : vector_signed_short;
-       B : vector_bool_short) return vector_signed_short;
- 
-    function vec_max
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_short;
- 
-    function vec_max
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return vector_unsigned_int;
- 
-    function vec_max
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return vector_unsigned_int;
- 
-    function vec_max
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int;
- 
-    function vec_max
-      (A : vector_bool_int;
-       B : vector_signed_int) return vector_signed_int;
- 
-    function vec_max
-      (A : vector_signed_int;
-       B : vector_bool_int) return vector_signed_int;
- 
-    function vec_max
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int;
- 
-    function vec_max
-      (A : vector_float;
-       B : vector_float) return vector_float;
- 
-    ----------------
-    -- vec_vmaxfp --
-    ----------------
- 
-    function vec_vmaxfp
-      (A : vector_float;
-       B : vector_float) return vector_float;
- 
-    ----------------
-    -- vec_vmaxsw --
-    ----------------
- 
-    function vec_vmaxsw
-      (A : vector_bool_int;
-       B : vector_signed_int) return vector_signed_int;
- 
-    function vec_vmaxsw
-      (A : vector_signed_int;
-       B : vector_bool_int) return vector_signed_int;
- 
-    function vec_vmaxsw
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int;
- 
-    ----------------
-    -- vec_vmaxuw --
-    ----------------
- 
-    function vec_vmaxuw
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return vector_unsigned_int;
- 
-    function vec_vmaxuw
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return vector_unsigned_int;
- 
-    function vec_vmaxuw
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int;
- 
-    ----------------
-    -- vec_vmaxsh --
-    ----------------
- 
-    function vec_vmaxsh
-      (A : vector_bool_short;
-       B : vector_signed_short) return vector_signed_short;
- 
-    function vec_vmaxsh
-      (A : vector_signed_short;
-       B : vector_bool_short) return vector_signed_short;
- 
-    function vec_vmaxsh
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_short;
- 
-    ----------------
-    -- vec_vmaxuh --
-    ----------------
- 
-    function vec_vmaxuh
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return vector_unsigned_short;
- 
-    function vec_vmaxuh
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return vector_unsigned_short;
- 
-    function vec_vmaxuh
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short;
- 
-    ----------------
-    -- vec_vmaxsb --
-    ----------------
- 
-    function vec_vmaxsb
-      (A : vector_bool_char;
-       B : vector_signed_char) return vector_signed_char;
- 
-    function vec_vmaxsb
-      (A : vector_signed_char;
-       B : vector_bool_char) return vector_signed_char;
- 
-    function vec_vmaxsb
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char;
- 
-    ----------------
-    -- vec_vmaxub --
-    ----------------
- 
-    function vec_vmaxub
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return vector_unsigned_char;
- 
-    function vec_vmaxub
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return vector_unsigned_char;
- 
-    function vec_vmaxub
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char;
- 
-    ----------------
-    -- vec_mergeh --
-    ----------------
- 
-    function vec_mergeh
-      (A : vector_bool_char;
-       B : vector_bool_char) return vector_bool_char;
- 
-    function vec_mergeh
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char;
- 
-    function vec_mergeh
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char;
- 
-    function vec_mergeh
-      (A : vector_bool_short;
-       B : vector_bool_short) return vector_bool_short;
- 
-    function vec_mergeh
-      (A : vector_pixel;
-       B : vector_pixel) return vector_pixel;
- 
-    function vec_mergeh
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_short;
- 
-    function vec_mergeh
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short;
- 
-    function vec_mergeh
-      (A : vector_float;
-       B : vector_float) return vector_float;
- 
-    function vec_mergeh
-      (A : vector_bool_int;
-       B : vector_bool_int) return vector_bool_int;
- 
-    function vec_mergeh
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int;
- 
-    function vec_mergeh
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int;
- 
-    ----------------
-    -- vec_vmrghw --
-    ----------------
- 
-    function vec_vmrghw
-      (A : vector_float;
-       B : vector_float) return vector_float;
- 
-    function vec_vmrghw
-      (A : vector_bool_int;
-       B : vector_bool_int) return vector_bool_int;
- 
-    function vec_vmrghw
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int;
- 
-    function vec_vmrghw
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int;
- 
-    ----------------
-    -- vec_vmrghh --
-    ----------------
- 
-    function vec_vmrghh
-      (A : vector_bool_short;
-       B : vector_bool_short) return vector_bool_short;
- 
-    function vec_vmrghh
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_short;
- 
-    function vec_vmrghh
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short;
- 
-    function vec_vmrghh
-      (A : vector_pixel;
-       B : vector_pixel) return vector_pixel;
- 
-    ----------------
-    -- vec_vmrghb --
-    ----------------
- 
-    function vec_vmrghb
-      (A : vector_bool_char;
-       B : vector_bool_char) return vector_bool_char;
- 
-    function vec_vmrghb
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char;
- 
-    function vec_vmrghb
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char;
- 
-    ----------------
-    -- vec_mergel --
-    ----------------
- 
-    function vec_mergel
-      (A : vector_bool_char;
-       B : vector_bool_char) return vector_bool_char;
- 
-    function vec_mergel
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char;
- 
-    function vec_mergel
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char;
- 
-    function vec_mergel
-      (A : vector_bool_short;
-       B : vector_bool_short) return vector_bool_short;
- 
-    function vec_mergel
-      (A : vector_pixel;
-       B : vector_pixel) return vector_pixel;
- 
-    function vec_mergel
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_short;
- 
-    function vec_mergel
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short;
- 
-    function vec_mergel
-      (A : vector_float;
-       B : vector_float) return vector_float;
- 
-    function vec_mergel
-      (A : vector_bool_int;
-       B : vector_bool_int) return vector_bool_int;
- 
-    function vec_mergel
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int;
- 
-    function vec_mergel
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int;
- 
-    ----------------
-    -- vec_vmrglw --
-    ----------------
- 
-    function vec_vmrglw
-      (A : vector_float;
-       B : vector_float) return vector_float;
- 
-    function vec_vmrglw
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int;
- 
-    function vec_vmrglw
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int;
- 
-    function vec_vmrglw
-      (A : vector_bool_int;
-       B : vector_bool_int) return vector_bool_int;
- 
-    ----------------
-    -- vec_vmrglh --
-    ----------------
- 
-    function vec_vmrglh
-      (A : vector_bool_short;
-       B : vector_bool_short) return vector_bool_short;
- 
-    function vec_vmrglh
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_short;
- 
-    function vec_vmrglh
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short;
- 
-    function vec_vmrglh
-      (A : vector_pixel;
-       B : vector_pixel) return vector_pixel;
- 
-    ----------------
-    -- vec_vmrglb --
-    ----------------
- 
-    function vec_vmrglb
-      (A : vector_bool_char;
-       B : vector_bool_char) return vector_bool_char;
- 
-    function vec_vmrglb
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char;
- 
-    function vec_vmrglb
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char;
- 
-    ----------------
-    -- vec_mfvscr --
-    ----------------
- 
-    function vec_mfvscr return vector_unsigned_short;
- 
-    -------------
-    -- vec_min --
-    -------------
- 
-    function vec_min
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return vector_unsigned_char;
- 
-    function vec_min
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return vector_unsigned_char;
- 
-    function vec_min
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char;
- 
-    function vec_min
-      (A : vector_bool_char;
-       B : vector_signed_char) return vector_signed_char;
- 
-    function vec_min
-      (A : vector_signed_char;
-       B : vector_bool_char) return vector_signed_char;
- 
-    function vec_min
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char;
- 
-    function vec_min
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return vector_unsigned_short;
- 
-    function vec_min
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return vector_unsigned_short;
- 
-    function vec_min
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short;
- 
-    function vec_min
-      (A : vector_bool_short;
-       B : vector_signed_short) return vector_signed_short;
- 
-    function vec_min
-      (A : vector_signed_short;
-       B : vector_bool_short) return vector_signed_short;
- 
-    function vec_min
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_short;
- 
-    function vec_min
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return vector_unsigned_int;
- 
-    function vec_min
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return vector_unsigned_int;
- 
-    function vec_min
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int;
- 
-    function vec_min
-      (A : vector_bool_int;
-       B : vector_signed_int) return vector_signed_int;
- 
-    function vec_min
-      (A : vector_signed_int;
-       B : vector_bool_int) return vector_signed_int;
- 
-    function vec_min
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int;
- 
-    function vec_min
-      (A : vector_float;
-       B : vector_float) return vector_float;
- 
-    ----------------
-    -- vec_vminfp --
-    ----------------
- 
-    function vec_vminfp
-      (A : vector_float;
-       B : vector_float) return vector_float;
- 
-    ----------------
-    -- vec_vminsw --
-    ----------------
- 
-    function vec_vminsw
-      (A : vector_bool_int;
-       B : vector_signed_int) return vector_signed_int;
- 
-    function vec_vminsw
-      (A : vector_signed_int;
-       B : vector_bool_int) return vector_signed_int;
- 
-    function vec_vminsw
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int;
- 
-    ----------------
-    -- vec_vminuw --
-    ----------------
- 
-    function vec_vminuw
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return vector_unsigned_int;
- 
-    function vec_vminuw
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return vector_unsigned_int;
- 
-    function vec_vminuw
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int;
- 
-    ----------------
-    -- vec_vminsh --
-    ----------------
- 
-    function vec_vminsh
-      (A : vector_bool_short;
-       B : vector_signed_short) return vector_signed_short;
- 
-    function vec_vminsh
-      (A : vector_signed_short;
-       B : vector_bool_short) return vector_signed_short;
- 
-    function vec_vminsh
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_short;
- 
-    ----------------
-    -- vec_vminuh --
-    ----------------
- 
-    function vec_vminuh
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return vector_unsigned_short;
- 
-    function vec_vminuh
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return vector_unsigned_short;
- 
-    function vec_vminuh
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short;
- 
-    ----------------
-    -- vec_vminsb --
-    ----------------
- 
-    function vec_vminsb
-      (A : vector_bool_char;
-       B : vector_signed_char) return vector_signed_char;
- 
-    function vec_vminsb
-      (A : vector_signed_char;
-       B : vector_bool_char) return vector_signed_char;
- 
-    function vec_vminsb
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char;
- 
-    ----------------
-    -- vec_vminub --
-    ----------------
- 
-    function vec_vminub
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return vector_unsigned_char;
- 
-    function vec_vminub
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return vector_unsigned_char;
- 
-    function vec_vminub
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char;
- 
-    ---------------
-    -- vec_mladd --
-    ---------------
- 
-    function vec_mladd
-      (A : vector_signed_short;
-       B : vector_signed_short;
-       C : vector_signed_short) return vector_signed_short;
- 
-    function vec_mladd
-      (A : vector_signed_short;
-       B : vector_unsigned_short;
-       C : vector_unsigned_short) return vector_signed_short;
- 
-    function vec_mladd
-      (A : vector_unsigned_short;
-       B : vector_signed_short;
-       C : vector_signed_short) return vector_signed_short;
- 
-    function vec_mladd
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short;
-       C : vector_unsigned_short) return vector_unsigned_short;
- 
-    ----------------
-    -- vec_mradds --
-    ----------------
- 
-    function vec_mradds
-      (A : vector_signed_short;
-       B : vector_signed_short;
-       C : vector_signed_short) return vector_signed_short;
- 
-    --------------
-    -- vec_msum --
-    --------------
- 
-    function vec_msum
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char;
-       C : vector_unsigned_int) return vector_unsigned_int;
- 
-    function vec_msum
-      (A : vector_signed_char;
-       B : vector_unsigned_char;
-       C : vector_signed_int) return vector_signed_int;
- 
-    function vec_msum
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short;
-       C : vector_unsigned_int) return vector_unsigned_int;
- 
-    function vec_msum
-      (A : vector_signed_short;
-       B : vector_signed_short;
-       C : vector_signed_int) return vector_signed_int;
- 
-    ------------------
-    -- vec_vmsumshm --
-    ------------------
- 
-    function vec_vmsumshm
-      (A : vector_signed_short;
-       B : vector_signed_short;
-       C : vector_signed_int) return vector_signed_int;
- 
-    ------------------
-    -- vec_vmsumuhm --
-    ------------------
- 
-    function vec_vmsumuhm
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short;
-       C : vector_unsigned_int) return vector_unsigned_int;
- 
-    ------------------
-    -- vec_vmsummbm --
-    ------------------
- 
-    function vec_vmsummbm
-      (A : vector_signed_char;
-       B : vector_unsigned_char;
-       C : vector_signed_int) return vector_signed_int;
- 
-    ------------------
-    -- vec_vmsumubm --
-    ------------------
- 
-    function vec_vmsumubm
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char;
-       C : vector_unsigned_int) return vector_unsigned_int;
- 
-    ---------------
-    -- vec_msums --
-    ---------------
- 
-    function vec_msums
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short;
-       C : vector_unsigned_int) return vector_unsigned_int;
- 
-    function vec_msums
-      (A : vector_signed_short;
-       B : vector_signed_short;
-       C : vector_signed_int) return vector_signed_int;
- 
-    function vec_vmsumshs
-      (A : vector_signed_short;
-       B : vector_signed_short;
-       C : vector_signed_int) return vector_signed_int;
- 
-    ------------------
-    -- vec_vmsumuhs --
-    ------------------
- 
-    function vec_vmsumuhs
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short;
-       C : vector_unsigned_int) return vector_unsigned_int;
- 
-    ----------------
-    -- vec_mtvscr --
-    ----------------
- 
-    procedure vec_mtvscr
-      (A : vector_signed_int);
- 
-    procedure vec_mtvscr
-      (A : vector_unsigned_int);
- 
-    procedure vec_mtvscr
-      (A : vector_bool_int);
- 
-    procedure vec_mtvscr
-      (A : vector_signed_short);
- 
-    procedure vec_mtvscr
-      (A : vector_unsigned_short);
- 
-    procedure vec_mtvscr
-      (A : vector_bool_short);
- 
-    procedure vec_mtvscr
-      (A : vector_pixel);
- 
-    procedure vec_mtvscr
-      (A : vector_signed_char);
- 
-    procedure vec_mtvscr
-      (A : vector_unsigned_char);
- 
-    procedure vec_mtvscr
-      (A : vector_bool_char);
- 
-    --------------
-    -- vec_mule --
-    --------------
- 
-    function vec_mule
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_short;
- 
-    function vec_mule
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_short;
- 
-    function vec_mule
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_int;
- 
-    function vec_mule
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_int;
- 
-    -----------------
-    -- vec_vmulesh --
-    -----------------
- 
-    function vec_vmulesh
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_int;
- 
-    -----------------
-    -- vec_vmuleuh --
-    -----------------
- 
-    function vec_vmuleuh
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_int;
- 
-    -----------------
-    -- vec_vmulesb --
-    -----------------
- 
-    function vec_vmulesb
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_short;
- 
-    -----------------
-    -- vec_vmuleub --
-    -----------------
- 
-    function vec_vmuleub
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_short;
- 
-    --------------
-    -- vec_mulo --
-    --------------
- 
-    function vec_mulo
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_short;
- 
-    function vec_mulo
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_short;
- 
-    function vec_mulo
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_int;
- 
-    function vec_mulo
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_int;
- 
-    -----------------
-    -- vec_vmulosh --
-    -----------------
- 
-    function vec_vmulosh
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_int;
- 
-    -----------------
-    -- vec_vmulouh --
-    -----------------
- 
-    function vec_vmulouh
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_int;
- 
-    -----------------
-    -- vec_vmulosb --
-    -----------------
- 
-    function vec_vmulosb
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_short;
- 
-    -----------------
-    -- vec_vmuloub --
-    -----------------
- 
-    function vec_vmuloub
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_short;
- 
-    ---------------
-    -- vec_nmsub --
-    ---------------
- 
-    function vec_nmsub
-      (A : vector_float;
-       B : vector_float;
-       C : vector_float) return vector_float;
- 
-    -------------
-    -- vec_nor --
-    -------------
- 
-    function vec_nor
-      (A : vector_float;
-       B : vector_float) return vector_float;
- 
-    function vec_nor
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int;
- 
-    function vec_nor
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int;
- 
-    function vec_nor
-      (A : vector_bool_int;
-       B : vector_bool_int) return vector_bool_int;
- 
-    function vec_nor
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_short;
- 
-    function vec_nor
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short;
- 
-    function vec_nor
-      (A : vector_bool_short;
-       B : vector_bool_short) return vector_bool_short;
- 
-    function vec_nor
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char;
- 
-    function vec_nor
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char;
- 
-    function vec_nor
-      (A : vector_bool_char;
-       B : vector_bool_char) return vector_bool_char;
- 
-    ------------
-    -- vec_or --
-    ------------
- 
-    function vec_or
-      (A : vector_float;
-       B : vector_float) return vector_float;
- 
-    function vec_or
-      (A : vector_float;
-       B : vector_bool_int) return vector_float;
- 
-    function vec_or
-      (A : vector_bool_int;
-       B : vector_float) return vector_float;
- 
-    function vec_or
-      (A : vector_bool_int;
-       B : vector_bool_int) return vector_bool_int;
- 
-    function vec_or
-      (A : vector_bool_int;
-       B : vector_signed_int) return vector_signed_int;
- 
-    function vec_or
-      (A : vector_signed_int;
-       B : vector_bool_int) return vector_signed_int;
- 
-    function vec_or
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int;
- 
-    function vec_or
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return vector_unsigned_int;
- 
-    function vec_or
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return vector_unsigned_int;
- 
-    function vec_or
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int;
- 
-    function vec_or
-      (A : vector_bool_short;
-       B : vector_bool_short) return vector_bool_short;
- 
-    function vec_or
-      (A : vector_bool_short;
-       B : vector_signed_short) return vector_signed_short;
- 
-    function vec_or
-      (A : vector_signed_short;
-       B : vector_bool_short) return vector_signed_short;
- 
-    function vec_or
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_short;
- 
-    function vec_or
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return vector_unsigned_short;
- 
-    function vec_or
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return vector_unsigned_short;
- 
-    function vec_or
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short;
- 
-    function vec_or
-      (A : vector_bool_char;
-       B : vector_signed_char) return vector_signed_char;
- 
-    function vec_or
-      (A : vector_bool_char;
-       B : vector_bool_char) return vector_bool_char;
- 
-    function vec_or
-      (A : vector_signed_char;
-       B : vector_bool_char) return vector_signed_char;
- 
-    function vec_or
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char;
- 
-    function vec_or
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return vector_unsigned_char;
- 
-    function vec_or
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return vector_unsigned_char;
- 
-    function vec_or
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char;
- 
-    --------------
-    -- vec_pack --
-    --------------
- 
-    function vec_pack
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_char;
- 
-    function vec_pack
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_char;
- 
-    function vec_pack
-      (A : vector_bool_short;
-       B : vector_bool_short) return vector_bool_char;
- 
-    function vec_pack
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_short;
- 
-    function vec_pack
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_short;
- 
-    function vec_pack
-      (A : vector_bool_int;
-       B : vector_bool_int) return vector_bool_short;
- 
-    -----------------
-    -- vec_vpkuwum --
-    -----------------
- 
-    function vec_vpkuwum
-      (A : vector_bool_int;
-       B : vector_bool_int) return vector_bool_short;
- 
-    function vec_vpkuwum
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_short;
- 
-    function vec_vpkuwum
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_short;
- 
-    -----------------
-    -- vec_vpkuhum --
-    -----------------
- 
-    function vec_vpkuhum
-      (A : vector_bool_short;
-       B : vector_bool_short) return vector_bool_char;
- 
-    function vec_vpkuhum
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_char;
- 
-    function vec_vpkuhum
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_char;
- 
-    ----------------
-    -- vec_packpx --
-    ----------------
- 
-    function vec_packpx
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_pixel;
- 
-    ---------------
-    -- vec_packs --
-    ---------------
- 
-    function vec_packs
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_char;
- 
-    function vec_packs
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_char;
- 
-    function vec_packs
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_short;
- 
-    function vec_packs
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_short;
- 
-    -----------------
-    -- vec_vpkswss --
-    -----------------
- 
-    function vec_vpkswss
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_short;
- 
-    -----------------
-    -- vec_vpkuwus --
-    -----------------
- 
-    function vec_vpkuwus
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_short;
- 
-    -----------------
-    -- vec_vpkshss --
-    -----------------
- 
-    function vec_vpkshss
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_char;
- 
-    -----------------
-    -- vec_vpkuhus --
-    -----------------
- 
-    function vec_vpkuhus
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_char;
- 
-    ----------------
-    -- vec_packsu --
-    ----------------
- 
-    function vec_packsu
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_char;
- 
-    function vec_packsu
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_unsigned_char;
- 
-    function vec_packsu
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_short;
- 
-    function vec_packsu
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_unsigned_short;
- 
-    -----------------
-    -- vec_vpkswus --
-    -----------------
- 
-    function vec_vpkswus
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_unsigned_short;
- 
-    -----------------
-    -- vec_vpkshus --
-    -----------------
- 
-    function vec_vpkshus
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_unsigned_char;
- 
-    --------------
-    -- vec_perm --
-    --------------
- 
-    function vec_perm
-      (A : vector_float;
-       B : vector_float;
-       C : vector_unsigned_char) return vector_float;
- 
-    function vec_perm
-      (A : vector_signed_int;
-       B : vector_signed_int;
-       C : vector_unsigned_char) return vector_signed_int;
- 
-    function vec_perm
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int;
-       C : vector_unsigned_char) return vector_unsigned_int;
- 
-    function vec_perm
-      (A : vector_bool_int;
-       B : vector_bool_int;
-       C : vector_unsigned_char) return vector_bool_int;
- 
-    function vec_perm
-      (A : vector_signed_short;
-       B : vector_signed_short;
-       C : vector_unsigned_char) return vector_signed_short;
- 
-    function vec_perm
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short;
-       C : vector_unsigned_char) return vector_unsigned_short;
- 
-    function vec_perm
-      (A : vector_bool_short;
-       B : vector_bool_short;
-       C : vector_unsigned_char) return vector_bool_short;
- 
-    function vec_perm
-      (A : vector_pixel;
-       B : vector_pixel;
-       C : vector_unsigned_char) return vector_pixel;
- 
-    function vec_perm
-      (A : vector_signed_char;
-       B : vector_signed_char;
-       C : vector_unsigned_char) return vector_signed_char;
- 
-    function vec_perm
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char;
-       C : vector_unsigned_char) return vector_unsigned_char;
- 
-    function vec_perm
-      (A : vector_bool_char;
-       B : vector_bool_char;
-       C : vector_unsigned_char) return vector_bool_char;
- 
-    ------------
-    -- vec_re --
-    ------------
- 
-    function vec_re
-      (A : vector_float) return vector_float;
- 
-    ------------
-    -- vec_rl --
-    ------------
- 
-    function vec_rl
-      (A : vector_signed_char;
-       B : vector_unsigned_char) return vector_signed_char;
- 
-    function vec_rl
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char;
- 
-    function vec_rl
-      (A : vector_signed_short;
-       B : vector_unsigned_short) return vector_signed_short;
- 
-    function vec_rl
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short;
- 
-    function vec_rl
-      (A : vector_signed_int;
-       B : vector_unsigned_int) return vector_signed_int;
- 
-    function vec_rl
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int;
- 
-    --------------
-    -- vec_vrlw --
-    --------------
- 
-    function vec_vrlw
-      (A : vector_signed_int;
-       B : vector_unsigned_int) return vector_signed_int;
- 
-    function vec_vrlw
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int;
- 
-    --------------
-    -- vec_vrlh --
-    --------------
- 
-    function vec_vrlh
-      (A : vector_signed_short;
-       B : vector_unsigned_short) return vector_signed_short;
- 
-    function vec_vrlh
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short;
- 
-    --------------
-    -- vec_vrlb --
-    --------------
- 
-    function vec_vrlb
-      (A : vector_signed_char;
-       B : vector_unsigned_char) return vector_signed_char;
- 
-    function vec_vrlb
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char;
- 
-    ---------------
-    -- vec_round --
-    ---------------
- 
-    function vec_round
-      (A : vector_float) return vector_float;
- 
-    ----------------
-    -- vec_rsqrte --
-    ----------------
- 
-    function vec_rsqrte
-      (A : vector_float) return vector_float;
- 
-    -------------
-    -- vec_sel --
-    -------------
- 
-    function vec_sel
-      (A : vector_float;
-       B : vector_float;
-       C : vector_bool_int) return vector_float;
- 
-    function vec_sel
-      (A : vector_float;
-       B : vector_float;
-       C : vector_unsigned_int) return vector_float;
- 
-    function vec_sel
-      (A : vector_signed_int;
-       B : vector_signed_int;
-       C : vector_bool_int) return vector_signed_int;
- 
-    function vec_sel
-      (A : vector_signed_int;
-       B : vector_signed_int;
-       C : vector_unsigned_int) return vector_signed_int;
- 
-    function vec_sel
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int;
-       C : vector_bool_int) return vector_unsigned_int;
- 
-    function vec_sel
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int;
-       C : vector_unsigned_int) return vector_unsigned_int;
- 
-    function vec_sel
-      (A : vector_bool_int;
-       B : vector_bool_int;
-       C : vector_bool_int) return vector_bool_int;
- 
-    function vec_sel
-      (A : vector_bool_int;
-       B : vector_bool_int;
-       C : vector_unsigned_int) return vector_bool_int;
- 
-    function vec_sel
-      (A : vector_signed_short;
-       B : vector_signed_short;
-       C : vector_bool_short) return vector_signed_short;
- 
-    function vec_sel
-      (A : vector_signed_short;
-       B : vector_signed_short;
-       C : vector_unsigned_short) return vector_signed_short;
- 
-    function vec_sel
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short;
-       C : vector_bool_short) return vector_unsigned_short;
- 
-    function vec_sel
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short;
-       C : vector_unsigned_short) return vector_unsigned_short;
- 
-    function vec_sel
-      (A : vector_bool_short;
-       B : vector_bool_short;
-       C : vector_bool_short) return vector_bool_short;
- 
-    function vec_sel
-      (A : vector_bool_short;
-       B : vector_bool_short;
-       C : vector_unsigned_short) return vector_bool_short;
- 
-    function vec_sel
-      (A : vector_signed_char;
-       B : vector_signed_char;
-       C : vector_bool_char) return vector_signed_char;
- 
-    function vec_sel
-      (A : vector_signed_char;
-       B : vector_signed_char;
-       C : vector_unsigned_char) return vector_signed_char;
- 
-    function vec_sel
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char;
-       C : vector_bool_char) return vector_unsigned_char;
- 
-    function vec_sel
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char;
-       C : vector_unsigned_char) return vector_unsigned_char;
- 
-    function vec_sel
-      (A : vector_bool_char;
-       B : vector_bool_char;
-       C : vector_bool_char) return vector_bool_char;
- 
-    function vec_sel
-      (A : vector_bool_char;
-       B : vector_bool_char;
-       C : vector_unsigned_char) return vector_bool_char;
- 
-    ------------
-    -- vec_sl --
-    ------------
- 
-    function vec_sl
-      (A : vector_signed_char;
-       B : vector_unsigned_char) return vector_signed_char;
- 
-    function vec_sl
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char;
- 
-    function vec_sl
-      (A : vector_signed_short;
-       B : vector_unsigned_short) return vector_signed_short;
- 
-    function vec_sl
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short;
- 
-    function vec_sl
-      (A : vector_signed_int;
-       B : vector_unsigned_int) return vector_signed_int;
- 
-    function vec_sl
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int;
- 
-    --------------
-    -- vec_vslw --
-    --------------
- 
-    function vec_vslw
-      (A : vector_signed_int;
-       B : vector_unsigned_int) return vector_signed_int;
- 
-    function vec_vslw
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int;
- 
-    --------------
-    -- vec_vslh --
-    --------------
- 
-    function vec_vslh
-      (A : vector_signed_short;
-       B : vector_unsigned_short) return vector_signed_short;
- 
-    function vec_vslh
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short;
- 
-    --------------
-    -- vec_vslb --
-    --------------
- 
-    function vec_vslb
-      (A : vector_signed_char;
-       B : vector_unsigned_char) return vector_signed_char;
- 
-    function vec_vslb
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char;
- 
-    -------------
-    -- vec_sld --
-    -------------
- 
-    function vec_sld
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int;
-       C : c_int) return vector_unsigned_int;
- 
-    function vec_sld
-      (A : vector_bool_int;
-       B : vector_bool_int;
-       C : c_int) return vector_bool_int;
- 
-    function vec_sld
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short;
-       C : c_int) return vector_unsigned_short;
- 
-    function vec_sld
-      (A : vector_bool_short;
-       B : vector_bool_short;
-       C : c_int) return vector_bool_short;
- 
-    function vec_sld
-      (A : vector_pixel;
-       B : vector_pixel;
-       C : c_int) return vector_pixel;
- 
-    function vec_sld
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char;
-       C : c_int) return vector_unsigned_char;
- 
-    function vec_sld
-      (A : vector_bool_char;
-       B : vector_bool_char;
-       C : c_int) return vector_bool_char;
-    pragma Inline_Always (vec_sld);
-    pragma Convention (Intrinsic, vec_sld);
- 
-    function vec_sld
-      (A : vector_float;
-       B : vector_float;
-       C : c_int) return vector_float
-    renames Low_Level_Vectors.vsldoi_4sf;
- 
-    function vec_sld
-      (A : vector_signed_int;
-       B : vector_signed_int;
-       C : c_int) return vector_signed_int
-    renames Low_Level_Vectors.vsldoi_4si;
- 
-    function vec_sld
-      (A : vector_signed_short;
-       B : vector_signed_short;
-       C : c_int) return vector_signed_short
-    renames Low_Level_Vectors.vsldoi_8hi;
- 
-    function vec_sld
-      (A : vector_signed_char;
-       B : vector_signed_char;
-       C : c_int) return vector_signed_char
-    renames Low_Level_Vectors.vsldoi_16qi;
- 
-    -------------
-    -- vec_sll --
-    -------------
- 
-    function vec_sll
-      (A : vector_signed_int;
-       B : vector_unsigned_int) return vector_signed_int;
- 
-    function vec_sll
-      (A : vector_signed_int;
-       B : vector_unsigned_short) return vector_signed_int;
- 
-    function vec_sll
-      (A : vector_signed_int;
-       B : vector_unsigned_char) return vector_signed_int;
- 
-    function vec_sll
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int;
- 
-    function vec_sll
-      (A : vector_unsigned_int;
-       B : vector_unsigned_short) return vector_unsigned_int;
- 
-    function vec_sll
-      (A : vector_unsigned_int;
-       B : vector_unsigned_char) return vector_unsigned_int;
- 
-    function vec_sll
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return vector_bool_int;
- 
-    function vec_sll
-      (A : vector_bool_int;
-       B : vector_unsigned_short) return vector_bool_int;
- 
-    function vec_sll
-      (A : vector_bool_int;
-       B : vector_unsigned_char) return vector_bool_int;
- 
-    function vec_sll
-      (A : vector_signed_short;
-       B : vector_unsigned_int) return vector_signed_short;
- 
-    function vec_sll
-      (A : vector_signed_short;
-       B : vector_unsigned_short) return vector_signed_short;
- 
-    function vec_sll
-      (A : vector_signed_short;
-       B : vector_unsigned_char) return vector_signed_short;
- 
-    function vec_sll
-      (A : vector_unsigned_short;
-       B : vector_unsigned_int) return vector_unsigned_short;
- 
-    function vec_sll
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short;
- 
-    function vec_sll
-      (A : vector_unsigned_short;
-       B : vector_unsigned_char) return vector_unsigned_short;
- 
-    function vec_sll
-      (A : vector_bool_short;
-       B : vector_unsigned_int) return vector_bool_short;
- 
-    function vec_sll
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return vector_bool_short;
- 
-    function vec_sll
-      (A : vector_bool_short;
-       B : vector_unsigned_char) return vector_bool_short;
- 
-    function vec_sll
-      (A : vector_pixel;
-       B : vector_unsigned_int) return vector_pixel;
- 
-    function vec_sll
-      (A : vector_pixel;
-       B : vector_unsigned_short) return vector_pixel;
- 
-    function vec_sll
-      (A : vector_pixel;
-       B : vector_unsigned_char) return vector_pixel;
- 
-    function vec_sll
-      (A : vector_signed_char;
-       B : vector_unsigned_int) return vector_signed_char;
- 
-    function vec_sll
-      (A : vector_signed_char;
-       B : vector_unsigned_short) return vector_signed_char;
- 
-    function vec_sll
-      (A : vector_signed_char;
-       B : vector_unsigned_char) return vector_signed_char;
- 
-    function vec_sll
-      (A : vector_unsigned_char;
-       B : vector_unsigned_int) return vector_unsigned_char;
- 
-    function vec_sll
-      (A : vector_unsigned_char;
-       B : vector_unsigned_short) return vector_unsigned_char;
- 
-    function vec_sll
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char;
- 
-    function vec_sll
-      (A : vector_bool_char;
-       B : vector_unsigned_int) return vector_bool_char;
- 
-    function vec_sll
-      (A : vector_bool_char;
-       B : vector_unsigned_short) return vector_bool_char;
- 
-    function vec_sll
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return vector_bool_char;
- 
-    -------------
-    -- vec_slo --
-    -------------
- 
-    function vec_slo
-      (A : vector_float;
-       B : vector_signed_char) return vector_float;
- 
-    function vec_slo
-      (A : vector_float;
-       B : vector_unsigned_char) return vector_float;
- 
-    function vec_slo
-      (A : vector_signed_int;
-       B : vector_signed_char) return vector_signed_int;
- 
-    function vec_slo
-      (A : vector_signed_int;
-       B : vector_unsigned_char) return vector_signed_int;
- 
-    function vec_slo
-      (A : vector_unsigned_int;
-       B : vector_signed_char) return vector_unsigned_int;
- 
-    function vec_slo
-      (A : vector_unsigned_int;
-       B : vector_unsigned_char) return vector_unsigned_int;
- 
-    function vec_slo
-      (A : vector_signed_short;
-       B : vector_signed_char) return vector_signed_short;
- 
-    function vec_slo
-      (A : vector_signed_short;
-       B : vector_unsigned_char) return vector_signed_short;
- 
-    function vec_slo
-      (A : vector_unsigned_short;
-       B : vector_signed_char) return vector_unsigned_short;
- 
-    function vec_slo
-      (A : vector_unsigned_short;
-       B : vector_unsigned_char) return vector_unsigned_short;
- 
-    function vec_slo
-      (A : vector_pixel;
-       B : vector_signed_char) return vector_pixel;
- 
-    function vec_slo
-      (A : vector_pixel;
-       B : vector_unsigned_char) return vector_pixel;
- 
-    function vec_slo
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char;
- 
-    function vec_slo
-      (A : vector_signed_char;
-       B : vector_unsigned_char) return vector_signed_char;
- 
-    function vec_slo
-      (A : vector_unsigned_char;
-       B : vector_signed_char) return vector_unsigned_char;
- 
-    function vec_slo
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char;
- 
-    ----------------
-    -- vec_vspltw --
-    ----------------
- 
-    function vec_vspltw
-      (A : vector_float;
-       B : c_int) return vector_float;
- 
-    function vec_vspltw
-      (A : vector_unsigned_int;
-       B : c_int) return vector_unsigned_int;
- 
-    function vec_vspltw
-      (A : vector_bool_int;
-       B : c_int) return vector_bool_int;
-    pragma Inline_Always (vec_vspltw);
-    pragma Convention (Intrinsic, vec_vspltw);
- 
-    function vec_vspltw
-      (A : vector_signed_int;
-       B : c_int) return vector_signed_int
-    renames Low_Level_Vectors.vspltw;
- 
-    ----------------
-    -- vec_vsplth --
-    ----------------
- 
-    function vec_vsplth
-      (A : vector_bool_short;
-       B : c_int) return vector_bool_short;
- 
-    function vec_vsplth
-      (A : vector_unsigned_short;
-       B : c_int) return vector_unsigned_short;
- 
-    function vec_vsplth
-      (A : vector_pixel;
-       B : c_int) return vector_pixel;
-    pragma Inline_Always (vec_vsplth);
-    pragma Convention (Intrinsic, vec_vsplth);
- 
-    function vec_vsplth
-      (A : vector_signed_short;
-       B : c_int) return vector_signed_short
-    renames Low_Level_Vectors.vsplth;
- 
-    ----------------
-    -- vec_vspltb --
-    ----------------
- 
-    function vec_vspltb
-      (A : vector_unsigned_char;
-       B : c_int) return vector_unsigned_char;
- 
-    function vec_vspltb
-      (A : vector_bool_char;
-       B : c_int) return vector_bool_char;
-    pragma Inline_Always (vec_vspltb);
-    pragma Convention (Intrinsic, vec_vspltb);
- 
-    function vec_vspltb
-      (A : vector_signed_char;
-       B : c_int) return vector_signed_char
-    renames Low_Level_Vectors.vspltb;
- 
-    ------------------
-    -- vec_vspltisb --
-    ------------------
- 
-    function vec_vspltisb
-      (A : c_int) return vector_signed_char
-    renames Low_Level_Vectors.vspltisb;
- 
-    ------------------
-    -- vec_vspltish --
-    ------------------
- 
-    function vec_vspltish
-      (A : c_int) return vector_signed_short
-    renames Low_Level_Vectors.vspltish;
- 
-    ------------------
-    -- vec_vspltisw --
-    ------------------
- 
-    function vec_vspltisw
-      (A : c_int) return vector_signed_int
-      renames Low_Level_Vectors.vspltisw;
- 
-    ------------
-    -- vec_sr --
-    ------------
- 
-    function vec_sr
-      (A : vector_signed_char;
-       B : vector_unsigned_char) return vector_signed_char;
- 
-    function vec_sr
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char;
- 
-    function vec_sr
-      (A : vector_signed_short;
-       B : vector_unsigned_short) return vector_signed_short;
- 
-    function vec_sr
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short;
- 
-    function vec_sr
-      (A : vector_signed_int;
-       B : vector_unsigned_int) return vector_signed_int;
- 
-    function vec_sr
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int;
- 
-    --------------
-    -- vec_vsrw --
-    --------------
- 
-    function vec_vsrw
-      (A : vector_signed_int;
-       B : vector_unsigned_int) return vector_signed_int;
- 
-    function vec_vsrw
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int;
- 
-    --------------
-    -- vec_vsrh --
-    --------------
- 
-    function vec_vsrh
-      (A : vector_signed_short;
-       B : vector_unsigned_short) return vector_signed_short;
- 
-    function vec_vsrh
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short;
- 
-    --------------
-    -- vec_vsrb --
-    --------------
- 
-    function vec_vsrb
-      (A : vector_signed_char;
-       B : vector_unsigned_char) return vector_signed_char;
- 
-    function vec_vsrb
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char;
- 
-    -------------
-    -- vec_sra --
-    -------------
- 
-    function vec_sra
-      (A : vector_signed_char;
-       B : vector_unsigned_char) return vector_signed_char;
- 
-    function vec_sra
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char;
- 
-    function vec_sra
-      (A : vector_signed_short;
-       B : vector_unsigned_short) return vector_signed_short;
- 
-    function vec_sra
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short;
- 
-    function vec_sra
-      (A : vector_signed_int;
-       B : vector_unsigned_int) return vector_signed_int;
- 
-    function vec_sra
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int;
- 
-    ---------------
-    -- vec_vsraw --
-    ---------------
- 
-    function vec_vsraw
-      (A : vector_signed_int;
-       B : vector_unsigned_int) return vector_signed_int;
- 
-    function vec_vsraw
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int;
- 
-    function vec_vsrah
-      (A : vector_signed_short;
-       B : vector_unsigned_short) return vector_signed_short;
- 
-    function vec_vsrah
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short;
- 
-    function vec_vsrab
-      (A : vector_signed_char;
-       B : vector_unsigned_char) return vector_signed_char;
- 
-    function vec_vsrab
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char;
- 
-    -------------
-    -- vec_srl --
-    -------------
- 
-    function vec_srl
-      (A : vector_signed_int;
-       B : vector_unsigned_int) return vector_signed_int;
- 
-    function vec_srl
-      (A : vector_signed_int;
-       B : vector_unsigned_short) return vector_signed_int;
- 
-    function vec_srl
-      (A : vector_signed_int;
-       B : vector_unsigned_char) return vector_signed_int;
- 
-    function vec_srl
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int;
- 
-    function vec_srl
-      (A : vector_unsigned_int;
-       B : vector_unsigned_short) return vector_unsigned_int;
- 
-    function vec_srl
-      (A : vector_unsigned_int;
-       B : vector_unsigned_char) return vector_unsigned_int;
- 
-    function vec_srl
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return vector_bool_int;
- 
-    function vec_srl
-      (A : vector_bool_int;
-       B : vector_unsigned_short) return vector_bool_int;
- 
-    function vec_srl
-      (A : vector_bool_int;
-       B : vector_unsigned_char) return vector_bool_int;
- 
-    function vec_srl
-      (A : vector_signed_short;
-       B : vector_unsigned_int) return vector_signed_short;
- 
-    function vec_srl
-      (A : vector_signed_short;
-       B : vector_unsigned_short) return vector_signed_short;
- 
-    function vec_srl
-      (A : vector_signed_short;
-       B : vector_unsigned_char) return vector_signed_short;
- 
-    function vec_srl
-      (A : vector_unsigned_short;
-       B : vector_unsigned_int) return vector_unsigned_short;
- 
-    function vec_srl
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short;
- 
-    function vec_srl
-      (A : vector_unsigned_short;
-       B : vector_unsigned_char) return vector_unsigned_short;
- 
-    function vec_srl
-      (A : vector_bool_short;
-       B : vector_unsigned_int) return vector_bool_short;
- 
-    function vec_srl
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return vector_bool_short;
- 
-    function vec_srl
-      (A : vector_bool_short;
-       B : vector_unsigned_char) return vector_bool_short;
- 
-    function vec_srl
-      (A : vector_pixel;
-       B : vector_unsigned_int) return vector_pixel;
- 
-    function vec_srl
-      (A : vector_pixel;
-       B : vector_unsigned_short) return vector_pixel;
- 
-    function vec_srl
-      (A : vector_pixel;
-       B : vector_unsigned_char) return vector_pixel;
- 
-    function vec_srl
-      (A : vector_signed_char;
-       B : vector_unsigned_int) return vector_signed_char;
- 
-    function vec_srl
-      (A : vector_signed_char;
-       B : vector_unsigned_short) return vector_signed_char;
- 
-    function vec_srl
-      (A : vector_signed_char;
-       B : vector_unsigned_char) return vector_signed_char;
- 
-    function vec_srl
-      (A : vector_unsigned_char;
-       B : vector_unsigned_int) return vector_unsigned_char;
- 
-    function vec_srl
-      (A : vector_unsigned_char;
-       B : vector_unsigned_short) return vector_unsigned_char;
- 
-    function vec_srl
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char;
- 
-    function vec_srl
-      (A : vector_bool_char;
-       B : vector_unsigned_int) return vector_bool_char;
- 
-    function vec_srl
-      (A : vector_bool_char;
-       B : vector_unsigned_short) return vector_bool_char;
- 
-    function vec_srl
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return vector_bool_char;
- 
-    function vec_sro
-      (A : vector_float;
-       B : vector_signed_char) return vector_float;
- 
-    function vec_sro
-      (A : vector_float;
-       B : vector_unsigned_char) return vector_float;
- 
-    function vec_sro
-      (A : vector_signed_int;
-       B : vector_signed_char) return vector_signed_int;
- 
-    function vec_sro
-      (A : vector_signed_int;
-       B : vector_unsigned_char) return vector_signed_int;
- 
-    function vec_sro
-      (A : vector_unsigned_int;
-       B : vector_signed_char) return vector_unsigned_int;
- 
-    function vec_sro
-      (A : vector_unsigned_int;
-       B : vector_unsigned_char) return vector_unsigned_int;
- 
-    function vec_sro
-      (A : vector_signed_short;
-       B : vector_signed_char) return vector_signed_short;
- 
-    function vec_sro
-      (A : vector_signed_short;
-       B : vector_unsigned_char) return vector_signed_short;
- 
-    function vec_sro
-      (A : vector_unsigned_short;
-       B : vector_signed_char) return vector_unsigned_short;
- 
-    function vec_sro
-      (A : vector_unsigned_short;
-       B : vector_unsigned_char) return vector_unsigned_short;
- 
-    function vec_sro
-      (A : vector_pixel;
-       B : vector_signed_char) return vector_pixel;
- 
-    function vec_sro
-      (A : vector_pixel;
-       B : vector_unsigned_char) return vector_pixel;
- 
-    function vec_sro
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char;
- 
-    function vec_sro
-      (A : vector_signed_char;
-       B : vector_unsigned_char) return vector_signed_char;
- 
-    function vec_sro
-      (A : vector_unsigned_char;
-       B : vector_signed_char) return vector_unsigned_char;
- 
-    function vec_sro
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char;
- 
-    procedure vec_st
-      (A : vector_float;
-       B : c_int;
-       C : vector_float_ptr);
- 
-    procedure vec_st
-      (A : vector_float;
-       B : c_int;
-       C : float_ptr);
- 
-    procedure vec_st
-      (A : vector_signed_int;
-       B : c_int;
-       C : vector_signed_int_ptr);
- 
-    procedure vec_st
-      (A : vector_signed_int;
-       B : c_int;
-       C : int_ptr);
- 
-    procedure vec_st
-      (A : vector_unsigned_int;
-       B : c_int;
-       C : vector_unsigned_int_ptr);
- 
-    procedure vec_st
-      (A : vector_unsigned_int;
-       B : c_int;
-       C : unsigned_int_ptr);
- 
-    procedure vec_st
-      (A : vector_bool_int;
-       B : c_int;
-       C : vector_bool_int_ptr);
- 
-    procedure vec_st
-      (A : vector_bool_int;
-       B : c_int;
-       C : unsigned_int_ptr);
- 
-    procedure vec_st
-      (A : vector_bool_int;
-       B : c_int;
-       C : int_ptr);
- 
-    procedure vec_st
-      (A : vector_signed_short;
-       B : c_int;
-       C : vector_signed_short_ptr);
- 
-    procedure vec_st
-      (A : vector_signed_short;
-       B : c_int;
-       C : short_ptr);
- 
-    procedure vec_st
-      (A : vector_unsigned_short;
-       B : c_int;
-       C : vector_unsigned_short_ptr);
- 
-    procedure vec_st
-      (A : vector_unsigned_short;
-       B : c_int;
-       C : unsigned_short_ptr);
- 
-    procedure vec_st
-      (A : vector_bool_short;
-       B : c_int;
-       C : vector_bool_short_ptr);
- 
-    procedure vec_st
-      (A : vector_bool_short;
-       B : c_int;
-       C : unsigned_short_ptr);
- 
-    procedure vec_st
-      (A : vector_pixel;
-       B : c_int;
-       C : vector_pixel_ptr);
- 
-    procedure vec_st
-      (A : vector_pixel;
-       B : c_int;
-       C : unsigned_short_ptr);
- 
-    procedure vec_st
-      (A : vector_pixel;
-       B : c_int;
-       C : short_ptr);
- 
-    procedure vec_st
-      (A : vector_bool_short;
-       B : c_int;
-       C : short_ptr);
- 
-    procedure vec_st
-      (A : vector_signed_char;
-       B : c_int;
-       C : vector_signed_char_ptr);
- 
-    procedure vec_st
-      (A : vector_signed_char;
-       B : c_int;
-       C : signed_char_ptr);
- 
-    procedure vec_st
-      (A : vector_unsigned_char;
-       B : c_int;
-       C : vector_unsigned_char_ptr);
- 
-    procedure vec_st
-      (A : vector_unsigned_char;
-       B : c_int;
-       C : unsigned_char_ptr);
- 
-    procedure vec_st
-      (A : vector_bool_char;
-       B : c_int;
-       C : vector_bool_char_ptr);
- 
-    procedure vec_st
-      (A : vector_bool_char;
-       B : c_int;
-       C : unsigned_char_ptr);
- 
-    procedure vec_st
-      (A : vector_bool_char;
-       B : c_int;
-       C : signed_char_ptr);
- 
-    -------------
-    -- vec_ste --
-    -------------
- 
-    procedure vec_ste
-      (A : vector_signed_char;
-       B : c_int;
-       C : signed_char_ptr);
- 
-    procedure vec_ste
-      (A : vector_unsigned_char;
-       B : c_int;
-       C : unsigned_char_ptr);
- 
-    procedure vec_ste
-      (A : vector_bool_char;
-       B : c_int;
-       C : signed_char_ptr);
- 
-    procedure vec_ste
-      (A : vector_bool_char;
-       B : c_int;
-       C : unsigned_char_ptr);
- 
-    procedure vec_ste
-      (A : vector_signed_short;
-       B : c_int;
-       C : short_ptr);
- 
-    procedure vec_ste
-      (A : vector_unsigned_short;
-       B : c_int;
-       C : unsigned_short_ptr);
- 
-    procedure vec_ste
-      (A : vector_bool_short;
-       B : c_int;
-       C : short_ptr);
- 
-    procedure vec_ste
-      (A : vector_bool_short;
-       B : c_int;
-       C : unsigned_short_ptr);
- 
-    procedure vec_ste
-      (A : vector_pixel;
-       B : c_int;
-       C : short_ptr);
- 
-    procedure vec_ste
-      (A : vector_pixel;
-       B : c_int;
-       C : unsigned_short_ptr);
- 
-    procedure vec_ste
-      (A : vector_float;
-       B : c_int;
-       C : float_ptr);
- 
-    procedure vec_ste
-      (A : vector_signed_int;
-       B : c_int;
-       C : int_ptr);
- 
-    procedure vec_ste
-      (A : vector_unsigned_int;
-       B : c_int;
-       C : unsigned_int_ptr);
- 
-    procedure vec_ste
-      (A : vector_bool_int;
-       B : c_int;
-       C : int_ptr);
- 
-    procedure vec_ste
-      (A : vector_bool_int;
-       B : c_int;
-       C : unsigned_int_ptr);
- 
-    ----------------
-    -- vec_stvewx --
-    ----------------
- 
-    procedure vec_stvewx
-      (A : vector_float;
-       B : c_int;
-       C : float_ptr);
- 
-    procedure vec_stvewx
-      (A : vector_signed_int;
-       B : c_int;
-       C : int_ptr);
- 
-    procedure vec_stvewx
-      (A : vector_unsigned_int;
-       B : c_int;
-       C : unsigned_int_ptr);
- 
-    procedure vec_stvewx
-      (A : vector_bool_int;
-       B : c_int;
-       C : int_ptr);
- 
-    procedure vec_stvewx
-      (A : vector_bool_int;
-       B : c_int;
-       C : unsigned_int_ptr);
- 
-    procedure vec_stvehx
-      (A : vector_signed_short;
-       B : c_int;
-       C : short_ptr);
- 
-    procedure vec_stvehx
-      (A : vector_unsigned_short;
-       B : c_int;
-       C : unsigned_short_ptr);
- 
-    procedure vec_stvehx
-      (A : vector_bool_short;
-       B : c_int;
-       C : short_ptr);
- 
-    procedure vec_stvehx
-      (A : vector_bool_short;
-       B : c_int;
-       C : unsigned_short_ptr);
- 
-    procedure vec_stvehx
-      (A : vector_pixel;
-       B : c_int;
-       C : short_ptr);
- 
-    procedure vec_stvehx
-      (A : vector_pixel;
-       B : c_int;
-       C : unsigned_short_ptr);
- 
-    procedure vec_stvebx
-      (A : vector_signed_char;
-       B : c_int;
-       C : signed_char_ptr);
- 
-    procedure vec_stvebx
-      (A : vector_unsigned_char;
-       B : c_int;
-       C : unsigned_char_ptr);
- 
-    procedure vec_stvebx
-      (A : vector_bool_char;
-       B : c_int;
-       C : signed_char_ptr);
- 
-    procedure vec_stvebx
-      (A : vector_bool_char;
-       B : c_int;
-       C : unsigned_char_ptr);
- 
-    procedure vec_stl
-      (A : vector_float;
-       B : c_int;
-       C : vector_float_ptr);
- 
-    procedure vec_stl
-      (A : vector_float;
-       B : c_int;
-       C : float_ptr);
- 
-    procedure vec_stl
-      (A : vector_signed_int;
-       B : c_int;
-       C : vector_signed_int_ptr);
- 
-    procedure vec_stl
-      (A : vector_signed_int;
-       B : c_int;
-       C : int_ptr);
- 
-    procedure vec_stl
-      (A : vector_unsigned_int;
-       B : c_int;
-       C : vector_unsigned_int_ptr);
- 
-    procedure vec_stl
-      (A : vector_unsigned_int;
-       B : c_int;
-       C : unsigned_int_ptr);
- 
-    procedure vec_stl
-      (A : vector_bool_int;
-       B : c_int;
-       C : vector_bool_int_ptr);
- 
-    procedure vec_stl
-      (A : vector_bool_int;
-       B : c_int;
-       C : unsigned_int_ptr);
- 
-    procedure vec_stl
-      (A : vector_bool_int;
-       B : c_int;
-       C : int_ptr);
- 
-    procedure vec_stl
-      (A : vector_signed_short;
-       B : c_int;
-       C : vector_signed_short_ptr);
- 
-    procedure vec_stl
-      (A : vector_signed_short;
-       B : c_int;
-       C : short_ptr);
- 
-    procedure vec_stl
-      (A : vector_unsigned_short;
-       B : c_int;
-       C : vector_unsigned_short_ptr);
- 
-    procedure vec_stl
-      (A : vector_unsigned_short;
-       B : c_int;
-       C : unsigned_short_ptr);
- 
-    procedure vec_stl
-      (A : vector_bool_short;
-       B : c_int;
-       C : vector_bool_short_ptr);
- 
-    procedure vec_stl
-      (A : vector_bool_short;
-       B : c_int;
-       C : unsigned_short_ptr);
- 
-    procedure vec_stl
-      (A : vector_bool_short;
-       B : c_int;
-       C : short_ptr);
- 
-    procedure vec_stl
-      (A : vector_pixel;
-       B : c_int;
-       C : vector_pixel_ptr);
- 
-    procedure vec_stl
-      (A : vector_pixel;
-       B : c_int;
-       C : unsigned_short_ptr);
- 
-    procedure vec_stl
-      (A : vector_pixel;
-       B : c_int;
-       C : short_ptr);
- 
-    procedure vec_stl
-      (A : vector_signed_char;
-       B : c_int;
-       C : vector_signed_char_ptr);
- 
-    procedure vec_stl
-      (A : vector_signed_char;
-       B : c_int;
-       C : signed_char_ptr);
- 
-    procedure vec_stl
-      (A : vector_unsigned_char;
-       B : c_int;
-       C : vector_unsigned_char_ptr);
- 
-    procedure vec_stl
-      (A : vector_unsigned_char;
-       B : c_int;
-       C : unsigned_char_ptr);
- 
-    procedure vec_stl
-      (A : vector_bool_char;
-       B : c_int;
-       C : vector_bool_char_ptr);
- 
-    procedure vec_stl
-      (A : vector_bool_char;
-       B : c_int;
-       C : unsigned_char_ptr);
- 
-    procedure vec_stl
-      (A : vector_bool_char;
-       B : c_int;
-       C : signed_char_ptr);
- 
-    -------------
-    -- vec_sub --
-    -------------
- 
-    function vec_sub
-      (A : vector_bool_char;
-       B : vector_signed_char) return vector_signed_char;
- 
-    function vec_sub
-      (A : vector_signed_char;
-       B : vector_bool_char) return vector_signed_char;
- 
-    function vec_sub
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char;
- 
-    function vec_sub
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return vector_unsigned_char;
- 
-    function vec_sub
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return vector_unsigned_char;
- 
-    function vec_sub
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char;
- 
-    function vec_sub
-      (A : vector_bool_short;
-       B : vector_signed_short) return vector_signed_short;
- 
-    function vec_sub
-      (A : vector_signed_short;
-       B : vector_bool_short) return vector_signed_short;
- 
-    function vec_sub
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_short;
- 
-    function vec_sub
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return vector_unsigned_short;
- 
-    function vec_sub
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return vector_unsigned_short;
- 
-    function vec_sub
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short;
- 
-    function vec_sub
-      (A : vector_bool_int;
-       B : vector_signed_int) return vector_signed_int;
- 
-    function vec_sub
-      (A : vector_signed_int;
-       B : vector_bool_int) return vector_signed_int;
- 
-    function vec_sub
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int;
- 
-    function vec_sub
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return vector_unsigned_int;
- 
-    function vec_sub
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return vector_unsigned_int;
- 
-    function vec_sub
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int;
- 
-    function vec_sub
-      (A : vector_float;
-       B : vector_float) return vector_float;
- 
-    ----------------
-    -- vec_vsubfp --
-    ----------------
- 
-    function vec_vsubfp
-      (A : vector_float;
-       B : vector_float) return vector_float;
- 
-    -----------------
-    -- vec_vsubuwm --
-    -----------------
- 
-    function vec_vsubuwm
-      (A : vector_bool_int;
-       B : vector_signed_int) return vector_signed_int;
- 
-    function vec_vsubuwm
-      (A : vector_signed_int;
-       B : vector_bool_int) return vector_signed_int;
- 
-    function vec_vsubuwm
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int;
- 
-    function vec_vsubuwm
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return vector_unsigned_int;
- 
-    function vec_vsubuwm
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return vector_unsigned_int;
- 
-    function vec_vsubuwm
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int;
- 
-    -----------------
-    -- vec_vsubuhm --
-    -----------------
- 
-    function vec_vsubuhm
-      (A : vector_bool_short;
-       B : vector_signed_short) return vector_signed_short;
- 
-    function vec_vsubuhm
-      (A : vector_signed_short;
-       B : vector_bool_short) return vector_signed_short;
- 
-    function vec_vsubuhm
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_short;
- 
-    function vec_vsubuhm
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return vector_unsigned_short;
- 
-    function vec_vsubuhm
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return vector_unsigned_short;
- 
-    function vec_vsubuhm
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short;
- 
-    -----------------
-    -- vec_vsububm --
-    -----------------
- 
-    function vec_vsububm
-      (A : vector_bool_char;
-       B : vector_signed_char) return vector_signed_char;
- 
-    function vec_vsububm
-      (A : vector_signed_char;
-       B : vector_bool_char) return vector_signed_char;
- 
-    function vec_vsububm
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char;
- 
-    function vec_vsububm
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return vector_unsigned_char;
- 
-    function vec_vsububm
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return vector_unsigned_char;
- 
-    function vec_vsububm
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char;
- 
-    --------------
-    -- vec_subc --
-    --------------
- 
-    function vec_subc
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int;
- 
-    --------------
-    -- vec_subs --
-    --------------
- 
-    function vec_subs
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return vector_unsigned_char;
- 
-    function vec_subs
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return vector_unsigned_char;
- 
-    function vec_subs
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char;
- 
-    function vec_subs
-      (A : vector_bool_char;
-       B : vector_signed_char) return vector_signed_char;
- 
-    function vec_subs
-      (A : vector_signed_char;
-       B : vector_bool_char) return vector_signed_char;
- 
-    function vec_subs
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char;
- 
-    function vec_subs
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return vector_unsigned_short;
- 
-    function vec_subs
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return vector_unsigned_short;
- 
-    function vec_subs
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short;
- 
-    function vec_subs
-      (A : vector_bool_short;
-       B : vector_signed_short) return vector_signed_short;
- 
-    function vec_subs
-      (A : vector_signed_short;
-       B : vector_bool_short) return vector_signed_short;
- 
-    function vec_subs
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_short;
- 
-    function vec_subs
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return vector_unsigned_int;
- 
-    function vec_subs
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return vector_unsigned_int;
- 
-    function vec_subs
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int;
- 
-    function vec_subs
-      (A : vector_bool_int;
-       B : vector_signed_int) return vector_signed_int;
- 
-    function vec_subs
-      (A : vector_signed_int;
-       B : vector_bool_int) return vector_signed_int;
- 
-    function vec_subs
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int;
- 
-    -----------------
-    -- vec_vsubsws --
-    -----------------
- 
-    function vec_vsubsws
-      (A : vector_bool_int;
-       B : vector_signed_int) return vector_signed_int;
- 
-    function vec_vsubsws
-      (A : vector_signed_int;
-       B : vector_bool_int) return vector_signed_int;
- 
-    function vec_vsubsws
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int;
- 
-    -----------------
-    -- vec_vsubuws --
-    -----------------
- 
-    function vec_vsubuws
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return vector_unsigned_int;
- 
-    function vec_vsubuws
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return vector_unsigned_int;
- 
-    function vec_vsubuws
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int;
- 
-    -----------------
-    -- vec_vsubshs --
-    -----------------
- 
-    function vec_vsubshs
-      (A : vector_bool_short;
-       B : vector_signed_short) return vector_signed_short;
- 
-    function vec_vsubshs
-      (A : vector_signed_short;
-       B : vector_bool_short) return vector_signed_short;
- 
-    function vec_vsubshs
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_short;
- 
-    -----------------
-    -- vec_vsubuhs --
-    -----------------
- 
-    function vec_vsubuhs
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return vector_unsigned_short;
- 
-    function vec_vsubuhs
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return vector_unsigned_short;
- 
-    function vec_vsubuhs
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short;
- 
-    -----------------
-    -- vec_vsubsbs --
-    -----------------
- 
-    function vec_vsubsbs
-      (A : vector_bool_char;
-       B : vector_signed_char) return vector_signed_char;
- 
-    function vec_vsubsbs
-      (A : vector_signed_char;
-       B : vector_bool_char) return vector_signed_char;
- 
-    function vec_vsubsbs
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char;
- 
-    -----------------
-    -- vec_vsububs --
-    -----------------
- 
-    function vec_vsububs
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return vector_unsigned_char;
- 
-    function vec_vsububs
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return vector_unsigned_char;
- 
-    function vec_vsububs
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char;
- 
-    ---------------
-    -- vec_sum4s --
-    ---------------
- 
-    function vec_sum4s
-      (A : vector_unsigned_char;
-       B : vector_unsigned_int) return vector_unsigned_int;
- 
-    function vec_sum4s
-      (A : vector_signed_char;
-       B : vector_signed_int) return vector_signed_int;
- 
-    function vec_sum4s
-      (A : vector_signed_short;
-       B : vector_signed_int) return vector_signed_int;
- 
-    ------------------
-    -- vec_vsum4shs --
-    ------------------
- 
-    function vec_vsum4shs
-      (A : vector_signed_short;
-       B : vector_signed_int) return vector_signed_int;
- 
-    ------------------
-    -- vec_vsum4sbs --
-    ------------------
- 
-    function vec_vsum4sbs
-      (A : vector_signed_char;
-       B : vector_signed_int) return vector_signed_int;
- 
-    ------------------
-    -- vec_vsum4ubs --
-    ------------------
- 
-    function vec_vsum4ubs
-      (A : vector_unsigned_char;
-       B : vector_unsigned_int) return vector_unsigned_int;
- 
-    ---------------
-    -- vec_sum2s --
-    ---------------
- 
-    function vec_sum2s
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int;
- 
-    --------------
-    -- vec_sums --
-    --------------
- 
-    function vec_sums
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int;
- 
-    function vec_trunc
-      (A : vector_float) return vector_float;
- 
-    function vec_unpackh
-      (A : vector_signed_char) return vector_signed_short;
- 
-    function vec_unpackh
-      (A : vector_bool_char) return vector_bool_short;
- 
-    function vec_unpackh
-      (A : vector_signed_short) return vector_signed_int;
- 
-    function vec_unpackh
-      (A : vector_bool_short) return vector_bool_int;
- 
-    function vec_unpackh
-      (A : vector_pixel) return vector_unsigned_int;
- 
-    function vec_vupkhsh
-      (A : vector_bool_short) return vector_bool_int;
- 
-    function vec_vupkhsh
-      (A : vector_signed_short) return vector_signed_int;
- 
-    function vec_vupkhpx
-      (A : vector_pixel) return vector_unsigned_int;
- 
-    function vec_vupkhsb
-      (A : vector_bool_char) return vector_bool_short;
- 
-    function vec_vupkhsb
-      (A : vector_signed_char) return vector_signed_short;
- 
-    function vec_unpackl
-      (A : vector_signed_char) return vector_signed_short;
- 
-    function vec_unpackl
-      (A : vector_bool_char) return vector_bool_short;
- 
-    function vec_unpackl
-      (A : vector_pixel) return vector_unsigned_int;
- 
-    function vec_unpackl
-      (A : vector_signed_short) return vector_signed_int;
- 
-    function vec_unpackl
-      (A : vector_bool_short) return vector_bool_int;
- 
-    function vec_vupklpx
-      (A : vector_pixel) return vector_unsigned_int;
- 
-    -----------------
-    -- vec_vupklsh --
-    -----------------
- 
-    function vec_vupklsh
-      (A : vector_bool_short) return vector_bool_int;
- 
-    function vec_vupklsh
-      (A : vector_signed_short) return vector_signed_int;
- 
-    -----------------
-    -- vec_vupklsb --
-    -----------------
- 
-    function vec_vupklsb
-      (A : vector_bool_char) return vector_bool_short;
- 
-    function vec_vupklsb
-      (A : vector_signed_char) return vector_signed_short;
- 
-    -------------
-    -- vec_xor --
-    -------------
- 
-    function vec_xor
-      (A : vector_float;
-       B : vector_float) return vector_float;
- 
-    function vec_xor
-      (A : vector_float;
-       B : vector_bool_int) return vector_float;
- 
-    function vec_xor
-      (A : vector_bool_int;
-       B : vector_float) return vector_float;
- 
-    function vec_xor
-      (A : vector_bool_int;
-       B : vector_bool_int) return vector_bool_int;
- 
-    function vec_xor
-      (A : vector_bool_int;
-       B : vector_signed_int) return vector_signed_int;
- 
-    function vec_xor
-      (A : vector_signed_int;
-       B : vector_bool_int) return vector_signed_int;
- 
-    function vec_xor
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int;
- 
-    function vec_xor
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return vector_unsigned_int;
- 
-    function vec_xor
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return vector_unsigned_int;
- 
-    function vec_xor
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int;
- 
-    function vec_xor
-      (A : vector_bool_short;
-       B : vector_bool_short) return vector_bool_short;
- 
-    function vec_xor
-      (A : vector_bool_short;
-       B : vector_signed_short) return vector_signed_short;
- 
-    function vec_xor
-      (A : vector_signed_short;
-       B : vector_bool_short) return vector_signed_short;
- 
-    function vec_xor
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_short;
- 
-    function vec_xor
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return vector_unsigned_short;
- 
-    function vec_xor
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return vector_unsigned_short;
- 
-    function vec_xor
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short;
- 
-    function vec_xor
-      (A : vector_bool_char;
-       B : vector_signed_char) return vector_signed_char;
- 
-    function vec_xor
-      (A : vector_bool_char;
-       B : vector_bool_char) return vector_bool_char;
- 
-    function vec_xor
-      (A : vector_signed_char;
-       B : vector_bool_char) return vector_signed_char;
- 
-    function vec_xor
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char;
- 
-    function vec_xor
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return vector_unsigned_char;
- 
-    function vec_xor
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return vector_unsigned_char;
- 
-    function vec_xor
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char;
- 
-    -- vec_all_eq --
- 
-    function vec_all_eq
-      (A : vector_signed_char;
-       B : vector_bool_char) return c_int;
- 
-    function vec_all_eq
-      (A : vector_signed_char;
-       B : vector_signed_char) return c_int;
- 
-    function vec_all_eq
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return c_int;
- 
-    function vec_all_eq
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return c_int;
- 
-    function vec_all_eq
-      (A : vector_bool_char;
-       B : vector_bool_char) return c_int;
- 
-    function vec_all_eq
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return c_int;
- 
-    function vec_all_eq
-      (A : vector_bool_char;
-       B : vector_signed_char) return c_int;
- 
-    function vec_all_eq
-      (A : vector_signed_short;
-       B : vector_bool_short) return c_int;
- 
-    function vec_all_eq
-      (A : vector_signed_short;
-       B : vector_signed_short) return c_int;
- 
-    function vec_all_eq
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return c_int;
- 
-    function vec_all_eq
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return c_int;
- 
-    function vec_all_eq
-      (A : vector_bool_short;
-       B : vector_bool_short) return c_int;
- 
-    function vec_all_eq
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return c_int;
- 
-    function vec_all_eq
-      (A : vector_bool_short;
-       B : vector_signed_short) return c_int;
- 
-    function vec_all_eq
-      (A : vector_pixel;
-       B : vector_pixel) return c_int;
- 
-    function vec_all_eq
-      (A : vector_signed_int;
-       B : vector_bool_int) return c_int;
- 
-    function vec_all_eq
-      (A : vector_signed_int;
-       B : vector_signed_int) return c_int;
- 
-    function vec_all_eq
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return c_int;
- 
-    function vec_all_eq
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return c_int;
- 
-    function vec_all_eq
-      (A : vector_bool_int;
-       B : vector_bool_int) return c_int;
- 
-    function vec_all_eq
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return c_int;
- 
-    function vec_all_eq
-      (A : vector_bool_int;
-       B : vector_signed_int) return c_int;
- 
-    function vec_all_eq
-      (A : vector_float;
-       B : vector_float) return c_int;
- 
-    ----------------
-    -- vec_all_ge --
-    ----------------
- 
-    function vec_all_ge
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return c_int;
- 
-    function vec_all_ge
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return c_int;
- 
-    function vec_all_ge
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return c_int;
- 
-    function vec_all_ge
-      (A : vector_bool_char;
-       B : vector_signed_char) return c_int;
- 
-    function vec_all_ge
-      (A : vector_signed_char;
-       B : vector_bool_char) return c_int;
- 
-    function vec_all_ge
-      (A : vector_signed_char;
-       B : vector_signed_char) return c_int;
- 
-    function vec_all_ge
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return c_int;
- 
-    function vec_all_ge
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return c_int;
- 
-    function vec_all_ge
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return c_int;
- 
-    function vec_all_ge
-      (A : vector_signed_short;
-       B : vector_signed_short) return c_int;
- 
-    function vec_all_ge
-      (A : vector_bool_short;
-       B : vector_signed_short) return c_int;
- 
-    function vec_all_ge
-      (A : vector_signed_short;
-       B : vector_bool_short) return c_int;
- 
-    function vec_all_ge
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return c_int;
- 
-    function vec_all_ge
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return c_int;
- 
-    function vec_all_ge
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return c_int;
- 
-    function vec_all_ge
-      (A : vector_bool_int;
-       B : vector_signed_int) return c_int;
- 
-    function vec_all_ge
-      (A : vector_signed_int;
-       B : vector_bool_int) return c_int;
- 
-    function vec_all_ge
-      (A : vector_signed_int;
-       B : vector_signed_int) return c_int;
- 
-    function vec_all_ge
-      (A : vector_float;
-       B : vector_float) return c_int;
- 
-    ----------------
-    -- vec_all_gt --
-    ----------------
- 
-    function vec_all_gt
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return c_int;
- 
-    function vec_all_gt
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return c_int;
- 
-    function vec_all_gt
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return c_int;
- 
-    function vec_all_gt
-      (A : vector_bool_char;
-       B : vector_signed_char) return c_int;
- 
-    function vec_all_gt
-      (A : vector_signed_char;
-       B : vector_bool_char) return c_int;
- 
-    function vec_all_gt
-      (A : vector_signed_char;
-       B : vector_signed_char) return c_int;
- 
-    function vec_all_gt
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return c_int;
- 
-    function vec_all_gt
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return c_int;
- 
-    function vec_all_gt
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return c_int;
- 
-    function vec_all_gt
-      (A : vector_bool_short;
-       B : vector_signed_short) return c_int;
- 
-    function vec_all_gt
-      (A : vector_signed_short;
-       B : vector_bool_short) return c_int;
- 
-    function vec_all_gt
-      (A : vector_signed_short;
-       B : vector_signed_short) return c_int;
- 
-    function vec_all_gt
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return c_int;
- 
-    function vec_all_gt
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return c_int;
- 
-    function vec_all_gt
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return c_int;
- 
-    function vec_all_gt
-      (A : vector_bool_int;
-       B : vector_signed_int) return c_int;
- 
-    function vec_all_gt
-      (A : vector_signed_int;
-       B : vector_bool_int) return c_int;
- 
-    function vec_all_gt
-      (A : vector_signed_int;
-       B : vector_signed_int) return c_int;
- 
-    function vec_all_gt
-      (A : vector_float;
-       B : vector_float) return c_int;
- 
-    ----------------
-    -- vec_all_in --
-    ----------------
- 
-    function vec_all_in
-      (A : vector_float;
-       B : vector_float) return c_int;
- 
-    ----------------
-    -- vec_all_le --
-    ----------------
- 
-    function vec_all_le
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return c_int;
- 
-    function vec_all_le
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return c_int;
- 
-    function vec_all_le
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return c_int;
- 
-    function vec_all_le
-      (A : vector_bool_char;
-       B : vector_signed_char) return c_int;
- 
-    function vec_all_le
-      (A : vector_signed_char;
-       B : vector_bool_char) return c_int;
- 
-    function vec_all_le
-      (A : vector_signed_char;
-       B : vector_signed_char) return c_int;
- 
-    function vec_all_le
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return c_int;
- 
-    function vec_all_le
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return c_int;
- 
-    function vec_all_le
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return c_int;
- 
-    function vec_all_le
-      (A : vector_bool_short;
-       B : vector_signed_short) return c_int;
- 
-    function vec_all_le
-      (A : vector_signed_short;
-       B : vector_bool_short) return c_int;
- 
-    function vec_all_le
-      (A : vector_signed_short;
-       B : vector_signed_short) return c_int;
- 
-    function vec_all_le
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return c_int;
- 
-    function vec_all_le
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return c_int;
- 
-    function vec_all_le
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return c_int;
- 
-    function vec_all_le
-      (A : vector_bool_int;
-       B : vector_signed_int) return c_int;
- 
-    function vec_all_le
-      (A : vector_signed_int;
-       B : vector_bool_int) return c_int;
- 
-    function vec_all_le
-      (A : vector_signed_int;
-       B : vector_signed_int) return c_int;
- 
-    function vec_all_le
-      (A : vector_float;
-       B : vector_float) return c_int;
- 
-    ----------------
-    -- vec_all_lt --
-    ----------------
- 
-    function vec_all_lt
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return c_int;
- 
-    function vec_all_lt
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return c_int;
- 
-    function vec_all_lt
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return c_int;
- 
-    function vec_all_lt
-      (A : vector_bool_char;
-       B : vector_signed_char) return c_int;
- 
-    function vec_all_lt
-      (A : vector_signed_char;
-       B : vector_bool_char) return c_int;
- 
-    function vec_all_lt
-      (A : vector_signed_char;
-       B : vector_signed_char) return c_int;
- 
-    function vec_all_lt
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return c_int;
- 
-    function vec_all_lt
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return c_int;
- 
-    function vec_all_lt
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return c_int;
- 
-    function vec_all_lt
-      (A : vector_bool_short;
-       B : vector_signed_short) return c_int;
- 
-    function vec_all_lt
-      (A : vector_signed_short;
-       B : vector_bool_short) return c_int;
- 
-    function vec_all_lt
-      (A : vector_signed_short;
-       B : vector_signed_short) return c_int;
- 
-    function vec_all_lt
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return c_int;
- 
-    function vec_all_lt
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return c_int;
- 
-    function vec_all_lt
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return c_int;
- 
-    function vec_all_lt
-      (A : vector_bool_int;
-       B : vector_signed_int) return c_int;
- 
-    function vec_all_lt
-      (A : vector_signed_int;
-       B : vector_bool_int) return c_int;
- 
-    function vec_all_lt
-      (A : vector_signed_int;
-       B : vector_signed_int) return c_int;
- 
-    function vec_all_lt
-      (A : vector_float;
-       B : vector_float) return c_int;
- 
-    -----------------
-    -- vec_all_nan --
-    -----------------
- 
-    function vec_all_nan
-      (A : vector_float) return c_int;
- 
-    ----------------
-    -- vec_all_ne --
-    ----------------
- 
-    function vec_all_ne
-      (A : vector_signed_char;
-       B : vector_bool_char) return c_int;
- 
-    function vec_all_ne
-      (A : vector_signed_char;
-       B : vector_signed_char) return c_int;
- 
-    function vec_all_ne
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return c_int;
- 
-    function vec_all_ne
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return c_int;
- 
-    function vec_all_ne
-      (A : vector_bool_char;
-       B : vector_bool_char) return c_int;
- 
-    function vec_all_ne
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return c_int;
- 
-    function vec_all_ne
-      (A : vector_bool_char;
-       B : vector_signed_char) return c_int;
- 
-    function vec_all_ne
-      (A : vector_signed_short;
-       B : vector_bool_short) return c_int;
- 
-    function vec_all_ne
-      (A : vector_signed_short;
-       B : vector_signed_short) return c_int;
- 
-    function vec_all_ne
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return c_int;
- 
-    function vec_all_ne
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return c_int;
- 
-    function vec_all_ne
-      (A : vector_bool_short;
-       B : vector_bool_short) return c_int;
- 
-    function vec_all_ne
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return c_int;
- 
-    function vec_all_ne
-      (A : vector_bool_short;
-       B : vector_signed_short) return c_int;
- 
-    function vec_all_ne
-      (A : vector_pixel;
-       B : vector_pixel) return c_int;
- 
-    function vec_all_ne
-      (A : vector_signed_int;
-       B : vector_bool_int) return c_int;
- 
-    function vec_all_ne
-      (A : vector_signed_int;
-       B : vector_signed_int) return c_int;
- 
-    function vec_all_ne
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return c_int;
- 
-    function vec_all_ne
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return c_int;
- 
-    function vec_all_ne
-      (A : vector_bool_int;
-       B : vector_bool_int) return c_int;
- 
-    function vec_all_ne
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return c_int;
- 
-    function vec_all_ne
-      (A : vector_bool_int;
-       B : vector_signed_int) return c_int;
- 
-    function vec_all_ne
-      (A : vector_float;
-       B : vector_float) return c_int;
- 
-    -----------------
-    -- vec_all_nge --
-    -----------------
- 
-    function vec_all_nge
-      (A : vector_float;
-       B : vector_float) return c_int;
- 
-    -----------------
-    -- vec_all_ngt --
-    -----------------
- 
-    function vec_all_ngt
-      (A : vector_float;
-       B : vector_float) return c_int;
- 
-    -----------------
-    -- vec_all_nle --
-    -----------------
- 
-    function vec_all_nle
-      (A : vector_float;
-       B : vector_float) return c_int;
- 
-    -----------------
-    -- vec_all_nlt --
-    -----------------
- 
-    function vec_all_nlt
-      (A : vector_float;
-       B : vector_float) return c_int;
- 
-    ---------------------
-    -- vec_all_numeric --
-    ---------------------
- 
-    function vec_all_numeric
-      (A : vector_float) return c_int;
- 
-    ----------------
-    -- vec_any_eq --
-    ----------------
- 
-    function vec_any_eq
-      (A : vector_signed_char;
-       B : vector_bool_char) return c_int;
- 
-    function vec_any_eq
-      (A : vector_signed_char;
-       B : vector_signed_char) return c_int;
- 
-    function vec_any_eq
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return c_int;
- 
-    function vec_any_eq
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return c_int;
- 
-    function vec_any_eq
-      (A : vector_bool_char;
-       B : vector_bool_char) return c_int;
- 
-    function vec_any_eq
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return c_int;
- 
-    function vec_any_eq
-      (A : vector_bool_char;
-       B : vector_signed_char) return c_int;
- 
-    function vec_any_eq
-      (A : vector_signed_short;
-       B : vector_bool_short) return c_int;
- 
-    function vec_any_eq
-      (A : vector_signed_short;
-       B : vector_signed_short) return c_int;
- 
-    function vec_any_eq
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return c_int;
- 
-    function vec_any_eq
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return c_int;
- 
-    function vec_any_eq
-      (A : vector_bool_short;
-       B : vector_bool_short) return c_int;
- 
-    function vec_any_eq
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return c_int;
- 
-    function vec_any_eq
-      (A : vector_bool_short;
-       B : vector_signed_short) return c_int;
- 
-    function vec_any_eq
-      (A : vector_pixel;
-       B : vector_pixel) return c_int;
- 
-    function vec_any_eq
-      (A : vector_signed_int;
-       B : vector_bool_int) return c_int;
- 
-    function vec_any_eq
-      (A : vector_signed_int;
-       B : vector_signed_int) return c_int;
- 
-    function vec_any_eq
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return c_int;
- 
-    function vec_any_eq
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return c_int;
- 
-    function vec_any_eq
-      (A : vector_bool_int;
-       B : vector_bool_int) return c_int;
- 
-    function vec_any_eq
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return c_int;
- 
-    function vec_any_eq
-      (A : vector_bool_int;
-       B : vector_signed_int) return c_int;
- 
-    function vec_any_eq
-      (A : vector_float;
-       B : vector_float) return c_int;
- 
-    ----------------
-    -- vec_any_ge --
-    ----------------
- 
-    function vec_any_ge
-      (A : vector_signed_char;
-       B : vector_bool_char) return c_int;
- 
-    function vec_any_ge
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return c_int;
- 
-    function vec_any_ge
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return c_int;
- 
-    function vec_any_ge
-      (A : vector_signed_char;
-       B : vector_signed_char) return c_int;
- 
-    function vec_any_ge
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return c_int;
- 
-    function vec_any_ge
-      (A : vector_bool_char;
-       B : vector_signed_char) return c_int;
- 
-    function vec_any_ge
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return c_int;
- 
-    function vec_any_ge
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return c_int;
- 
-    function vec_any_ge
-      (A : vector_signed_short;
-       B : vector_signed_short) return c_int;
- 
-    function vec_any_ge
-      (A : vector_signed_short;
-       B : vector_bool_short) return c_int;
- 
-    function vec_any_ge
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return c_int;
- 
-    function vec_any_ge
-      (A : vector_bool_short;
-       B : vector_signed_short) return c_int;
- 
-    function vec_any_ge
-      (A : vector_signed_int;
-       B : vector_bool_int) return c_int;
- 
-    function vec_any_ge
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return c_int;
- 
-    function vec_any_ge
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return c_int;
- 
-    function vec_any_ge
-      (A : vector_signed_int;
-       B : vector_signed_int) return c_int;
- 
-    function vec_any_ge
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return c_int;
- 
-    function vec_any_ge
-      (A : vector_bool_int;
-       B : vector_signed_int) return c_int;
- 
-    function vec_any_ge
-      (A : vector_float;
-       B : vector_float) return c_int;
- 
-    ----------------
-    -- vec_any_gt --
-    ----------------
- 
-    function vec_any_gt
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return c_int;
- 
-    function vec_any_gt
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return c_int;
- 
-    function vec_any_gt
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return c_int;
- 
-    function vec_any_gt
-      (A : vector_bool_char;
-       B : vector_signed_char) return c_int;
- 
-    function vec_any_gt
-      (A : vector_signed_char;
-       B : vector_bool_char) return c_int;
- 
-    function vec_any_gt
-      (A : vector_signed_char;
-       B : vector_signed_char) return c_int;
- 
-    function vec_any_gt
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return c_int;
- 
-    function vec_any_gt
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return c_int;
- 
-    function vec_any_gt
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return c_int;
- 
-    function vec_any_gt
-      (A : vector_bool_short;
-       B : vector_signed_short) return c_int;
- 
-    function vec_any_gt
-      (A : vector_signed_short;
-       B : vector_bool_short) return c_int;
- 
-    function vec_any_gt
-      (A : vector_signed_short;
-       B : vector_signed_short) return c_int;
- 
-    function vec_any_gt
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return c_int;
- 
-    function vec_any_gt
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return c_int;
- 
-    function vec_any_gt
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return c_int;
- 
-    function vec_any_gt
-      (A : vector_bool_int;
-       B : vector_signed_int) return c_int;
- 
-    function vec_any_gt
-      (A : vector_signed_int;
-       B : vector_bool_int) return c_int;
- 
-    function vec_any_gt
-      (A : vector_signed_int;
-       B : vector_signed_int) return c_int;
- 
-    function vec_any_gt
-      (A : vector_float;
-       B : vector_float) return c_int;
- 
-    function vec_any_le
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return c_int;
- 
-    function vec_any_le
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return c_int;
- 
-    function vec_any_le
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return c_int;
- 
-    function vec_any_le
-      (A : vector_bool_char;
-       B : vector_signed_char) return c_int;
- 
-    function vec_any_le
-      (A : vector_signed_char;
-       B : vector_bool_char) return c_int;
- 
-    function vec_any_le
-      (A : vector_signed_char;
-       B : vector_signed_char) return c_int;
- 
-    function vec_any_le
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return c_int;
- 
-    function vec_any_le
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return c_int;
- 
-    function vec_any_le
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return c_int;
- 
-    function vec_any_le
-      (A : vector_bool_short;
-       B : vector_signed_short) return c_int;
- 
-    function vec_any_le
-      (A : vector_signed_short;
-       B : vector_bool_short) return c_int;
- 
-    function vec_any_le
-      (A : vector_signed_short;
-       B : vector_signed_short) return c_int;
- 
-    function vec_any_le
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return c_int;
- 
-    function vec_any_le
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return c_int;
- 
-    function vec_any_le
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return c_int;
- 
-    function vec_any_le
-      (A : vector_bool_int;
-       B : vector_signed_int) return c_int;
- 
-    function vec_any_le
-      (A : vector_signed_int;
-       B : vector_bool_int) return c_int;
- 
-    function vec_any_le
-      (A : vector_signed_int;
-       B : vector_signed_int) return c_int;
- 
-    function vec_any_le
-      (A : vector_float;
-       B : vector_float) return c_int;
- 
-    function vec_any_lt
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return c_int;
- 
-    function vec_any_lt
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return c_int;
- 
-    function vec_any_lt
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return c_int;
- 
-    function vec_any_lt
-      (A : vector_bool_char;
-       B : vector_signed_char) return c_int;
- 
-    function vec_any_lt
-      (A : vector_signed_char;
-       B : vector_bool_char) return c_int;
- 
-    function vec_any_lt
-      (A : vector_signed_char;
-       B : vector_signed_char) return c_int;
- 
-    function vec_any_lt
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return c_int;
- 
-    function vec_any_lt
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return c_int;
- 
-    function vec_any_lt
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return c_int;
- 
-    function vec_any_lt
-      (A : vector_bool_short;
-       B : vector_signed_short) return c_int;
- 
-    function vec_any_lt
-      (A : vector_signed_short;
-       B : vector_bool_short) return c_int;
- 
-    function vec_any_lt
-      (A : vector_signed_short;
-       B : vector_signed_short) return c_int;
- 
-    function vec_any_lt
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return c_int;
- 
-    function vec_any_lt
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return c_int;
- 
-    function vec_any_lt
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return c_int;
- 
-    function vec_any_lt
-      (A : vector_bool_int;
-       B : vector_signed_int) return c_int;
- 
-    function vec_any_lt
-      (A : vector_signed_int;
-       B : vector_bool_int) return c_int;
- 
-    function vec_any_lt
-      (A : vector_signed_int;
-       B : vector_signed_int) return c_int;
- 
-    function vec_any_lt
-      (A : vector_float;
-       B : vector_float) return c_int;
- 
-    function vec_any_nan
-      (A : vector_float) return c_int;
- 
-    function vec_any_ne
-      (A : vector_signed_char;
-       B : vector_bool_char) return c_int;
- 
-    function vec_any_ne
-      (A : vector_signed_char;
-       B : vector_signed_char) return c_int;
- 
-    function vec_any_ne
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return c_int;
- 
-    function vec_any_ne
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return c_int;
- 
-    function vec_any_ne
-      (A : vector_bool_char;
-       B : vector_bool_char) return c_int;
- 
-    function vec_any_ne
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return c_int;
- 
-    function vec_any_ne
-      (A : vector_bool_char;
-       B : vector_signed_char) return c_int;
- 
-    function vec_any_ne
-      (A : vector_signed_short;
-       B : vector_bool_short) return c_int;
- 
-    function vec_any_ne
-      (A : vector_signed_short;
-       B : vector_signed_short) return c_int;
- 
-    function vec_any_ne
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return c_int;
- 
-    function vec_any_ne
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return c_int;
- 
-    function vec_any_ne
-      (A : vector_bool_short;
-       B : vector_bool_short) return c_int;
- 
-    function vec_any_ne
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return c_int;
- 
-    function vec_any_ne
-      (A : vector_bool_short;
-       B : vector_signed_short) return c_int;
- 
-    function vec_any_ne
-      (A : vector_pixel;
-       B : vector_pixel) return c_int;
- 
-    function vec_any_ne
-      (A : vector_signed_int;
-       B : vector_bool_int) return c_int;
- 
-    function vec_any_ne
-      (A : vector_signed_int;
-       B : vector_signed_int) return c_int;
- 
-    function vec_any_ne
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return c_int;
- 
-    function vec_any_ne
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return c_int;
- 
-    function vec_any_ne
-      (A : vector_bool_int;
-       B : vector_bool_int) return c_int;
- 
-    function vec_any_ne
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return c_int;
- 
-    function vec_any_ne
-      (A : vector_bool_int;
-       B : vector_signed_int) return c_int;
- 
-    function vec_any_ne
-      (A : vector_float;
-       B : vector_float) return c_int;
- 
-    -----------------
-    -- vec_any_nge --
-    -----------------
- 
-    function vec_any_nge
-      (A : vector_float;
-       B : vector_float) return c_int;
- 
-    function vec_any_ngt
-      (A : vector_float;
-       B : vector_float) return c_int;
- 
-    function vec_any_nle
-      (A : vector_float;
-       B : vector_float) return c_int;
- 
-    function vec_any_nlt
-      (A : vector_float;
-       B : vector_float) return c_int;
- 
-    function vec_any_numeric
-      (A : vector_float) return c_int;
- 
-    function vec_any_out
-      (A : vector_float;
-       B : vector_float) return c_int;
- 
-    function vec_splat_s8
-      (A : c_int) return vector_signed_char
-    renames vec_vspltisb;
- 
-    -------------------
-    -- vec_splat_s16 --
-    -------------------
- 
-    function vec_splat_s16
-      (A : c_int) return vector_signed_short
-    renames vec_vspltish;
- 
-    -------------------
-    -- vec_splat_s32 --
-    -------------------
- 
-    function vec_splat_s32
-      (A : c_int) return vector_signed_int
-    renames vec_vspltisw;
- 
-    function vec_splat
-      (A : vector_signed_char;
-       B : c_int) return vector_signed_char
-    renames vec_vspltb;
- 
-    function vec_splat
-      (A : vector_unsigned_char;
-       B : c_int) return vector_unsigned_char
-    renames vec_vspltb;
- 
-    function vec_splat
-      (A : vector_bool_char;
-       B : c_int) return vector_bool_char
-    renames vec_vspltb;
- 
-    function vec_splat
-      (A : vector_signed_short;
-       B : c_int) return vector_signed_short
-    renames vec_vsplth;
- 
-    function vec_splat
-      (A : vector_unsigned_short;
-       B : c_int) return vector_unsigned_short
-    renames vec_vsplth;
- 
-    function vec_splat
-      (A : vector_bool_short;
-       B : c_int) return vector_bool_short
-    renames vec_vsplth;
- 
-    function vec_splat
-      (A : vector_pixel;
-       B : c_int) return vector_pixel
-    renames vec_vsplth;
- 
-    function vec_splat
-      (A : vector_float;
-       B : c_int) return vector_float
-    renames vec_vspltw;
- 
-    function vec_splat
-      (A : vector_signed_int;
-       B : c_int) return vector_signed_int
-    renames vec_vspltw;
- 
-    function vec_splat
-      (A : vector_unsigned_int;
-       B : c_int) return vector_unsigned_int
-    renames vec_vspltw;
- 
-    function vec_splat
-      (A : vector_bool_int;
-       B : c_int) return vector_bool_int
-    renames vec_vspltw;
- 
-    ------------------
-    -- vec_splat_u8 --
-    ------------------
- 
-    function vec_splat_u8
-      (A : c_int) return vector_unsigned_char;
-    pragma Inline_Always (vec_splat_u8);
-    pragma Convention (Intrinsic, vec_splat_u8);
- 
-    -------------------
-    -- vec_splat_u16 --
-    -------------------
- 
-    function vec_splat_u16
-      (A : c_int) return vector_unsigned_short;
-    pragma Inline_Always (vec_splat_u16);
-    pragma Convention (Intrinsic, vec_splat_u16);
- 
-    -------------------
-    -- vec_splat_u32 --
-    -------------------
- 
-    function vec_splat_u32
-      (A : c_int) return vector_unsigned_int;
-    pragma Inline_Always (vec_splat_u32);
-    pragma Convention (Intrinsic, vec_splat_u32);
- 
-    -------------
-    -- vec_ctf --
-    -------------
- 
-    function vec_ctf
-      (A : vector_unsigned_int;
-       B : c_int) return vector_float
-    renames vec_vcfux;
- 
-    function vec_ctf
-      (A : vector_signed_int;
-       B : c_int) return vector_float
-    renames vec_vcfsx;
- 
-    -------------
-    -- vec_cts --
-    -------------
- 
-    function vec_cts
-      (A : vector_float;
-       B : c_int) return vector_signed_int
-    renames vec_vctsxs;
- 
-    function vec_ctu
-      (A : vector_float;
-       B : c_int) return vector_unsigned_int
-    renames vec_vctuxs;
- 
-    function vec_vaddcuw
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    renames vec_addc;
- 
-    function vec_vand
-      (A : vector_float;
-       B : vector_float) return vector_float
-    renames vec_and;
- 
-    function vec_vand
-      (A : vector_float;
-       B : vector_bool_int) return vector_float
-    renames vec_and;
- 
-    function vec_vand
-      (A : vector_bool_int;
-       B : vector_float) return vector_float
-    renames vec_and;
- 
-    function vec_vand
-      (A : vector_bool_int;
-       B : vector_bool_int) return vector_bool_int
-    renames vec_and;
- 
-    function vec_vand
-      (A : vector_bool_int;
-       B : vector_signed_int) return vector_signed_int
-    renames vec_and;
- 
-    function vec_vand
-      (A : vector_signed_int;
-       B : vector_bool_int) return vector_signed_int
-    renames vec_and;
- 
-    function vec_vand
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int
-    renames vec_and;
- 
-    function vec_vand
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    renames vec_and;
- 
-    function vec_vand
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return vector_unsigned_int
-    renames vec_and;
- 
-    function vec_vand
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    renames vec_and;
- 
-    function vec_vand
-      (A : vector_bool_short;
-       B : vector_bool_short) return vector_bool_short
-    renames vec_and;
- 
-    function vec_vand
-      (A : vector_bool_short;
-       B : vector_signed_short) return vector_signed_short
-    renames vec_and;
- 
-    function vec_vand
-      (A : vector_signed_short;
-       B : vector_bool_short) return vector_signed_short
-    renames vec_and;
- 
-    function vec_vand
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_short
-    renames vec_and;
- 
-    function vec_vand
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    renames vec_and;
- 
-    function vec_vand
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return vector_unsigned_short
-    renames vec_and;
- 
-    function vec_vand
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    renames vec_and;
- 
-    function vec_vand
-      (A : vector_bool_char;
-       B : vector_signed_char) return vector_signed_char
-    renames vec_and;
- 
-    function vec_vand
-      (A : vector_bool_char;
-       B : vector_bool_char) return vector_bool_char
-    renames vec_and;
- 
-    function vec_vand
-      (A : vector_signed_char;
-       B : vector_bool_char) return vector_signed_char
-    renames vec_and;
- 
-    function vec_vand
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char
-    renames vec_and;
- 
-    function vec_vand
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    renames vec_and;
- 
-    function vec_vand
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return vector_unsigned_char
-    renames vec_and;
- 
-    function vec_vand
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    renames vec_and;
- 
-    ---------------
-    -- vec_vandc --
-    ---------------
- 
-    function vec_vandc
-      (A : vector_float;
-       B : vector_float) return vector_float
-    renames vec_andc;
- 
-    function vec_vandc
-      (A : vector_float;
-       B : vector_bool_int) return vector_float
-    renames vec_andc;
- 
-    function vec_vandc
-      (A : vector_bool_int;
-       B : vector_float) return vector_float
-    renames vec_andc;
- 
-    function vec_vandc
-      (A : vector_bool_int;
-       B : vector_bool_int) return vector_bool_int
-    renames vec_andc;
- 
-    function vec_vandc
-      (A : vector_bool_int;
-       B : vector_signed_int) return vector_signed_int
-    renames vec_andc;
- 
-    function vec_vandc
-      (A : vector_signed_int;
-       B : vector_bool_int) return vector_signed_int
-    renames vec_andc;
- 
-    function vec_vandc
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int
-    renames vec_andc;
- 
-    function vec_vandc
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    renames vec_andc;
- 
-    function vec_vandc
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return vector_unsigned_int
-    renames vec_andc;
- 
-    function vec_vandc
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    renames vec_andc;
- 
-    function vec_vandc
-      (A : vector_bool_short;
-       B : vector_bool_short) return vector_bool_short
-    renames vec_andc;
- 
-    function vec_vandc
-      (A : vector_bool_short;
-       B : vector_signed_short) return vector_signed_short
-    renames vec_andc;
- 
-    function vec_vandc
-      (A : vector_signed_short;
-       B : vector_bool_short) return vector_signed_short
-    renames vec_andc;
- 
-    function vec_vandc
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_short
-    renames vec_andc;
- 
-    function vec_vandc
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    renames vec_andc;
- 
-    function vec_vandc
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return vector_unsigned_short
-    renames vec_andc;
- 
-    function vec_vandc
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    renames vec_andc;
- 
-    function vec_vandc
-      (A : vector_bool_char;
-       B : vector_signed_char) return vector_signed_char
-    renames vec_andc;
- 
-    function vec_vandc
-      (A : vector_bool_char;
-       B : vector_bool_char) return vector_bool_char
-    renames vec_andc;
- 
-    function vec_vandc
-      (A : vector_signed_char;
-       B : vector_bool_char) return vector_signed_char
-    renames vec_andc;
- 
-    function vec_vandc
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char
-    renames vec_andc;
- 
-    function vec_vandc
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    renames vec_andc;
- 
-    function vec_vandc
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return vector_unsigned_char
-    renames vec_andc;
- 
-    function vec_vandc
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    renames vec_andc;
- 
-    ---------------
-    -- vec_vrfip --
-    ---------------
- 
-    function vec_vrfip
-      (A : vector_float) return vector_float
-    renames vec_ceil;
- 
-    -----------------
-    -- vec_vcmpbfp --
-    -----------------
- 
-    function vec_vcmpbfp
-      (A : vector_float;
-       B : vector_float) return vector_signed_int
-    renames vec_cmpb;
- 
-    function vec_vcmpgefp
-      (A : vector_float;
-       B : vector_float) return vector_bool_int
-    renames vec_cmpge;
- 
-    function vec_vexptefp
-      (A : vector_float) return vector_float
-    renames vec_expte;
- 
-    ---------------
-    -- vec_vrfim --
-    ---------------
- 
-    function vec_vrfim
-      (A : vector_float) return vector_float
-    renames vec_floor;
- 
-    function vec_lvx
-      (A : c_long;
-       B : const_vector_float_ptr) return vector_float
-    renames vec_ld;
- 
-    function vec_lvx
-      (A : c_long;
-       B : const_float_ptr) return vector_float
-    renames vec_ld;
- 
-    function vec_lvx
-      (A : c_long;
-       B : const_vector_bool_int_ptr) return vector_bool_int
-    renames vec_ld;
- 
-    function vec_lvx
-      (A : c_long;
-       B : const_vector_signed_int_ptr) return vector_signed_int
-    renames vec_ld;
- 
-    function vec_lvx
-      (A : c_long;
-       B : const_int_ptr) return vector_signed_int
-    renames vec_ld;
- 
-    function vec_lvx
-      (A : c_long;
-       B : const_long_ptr) return vector_signed_int
-    renames vec_ld;
- 
-    function vec_lvx
-      (A : c_long;
-       B : const_vector_unsigned_int_ptr) return vector_unsigned_int
-    renames vec_ld;
- 
-    function vec_lvx
-      (A : c_long;
-       B : const_unsigned_int_ptr) return vector_unsigned_int
-    renames vec_ld;
- 
-    function vec_lvx
-      (A : c_long;
-       B : const_unsigned_long_ptr) return vector_unsigned_int
-    renames vec_ld;
- 
-    function vec_lvx
-      (A : c_long;
-       B : const_vector_bool_short_ptr) return vector_bool_short
-    renames vec_ld;
- 
-    function vec_lvx
-      (A : c_long;
-       B : const_vector_pixel_ptr) return vector_pixel
-    renames vec_ld;
- 
-    function vec_lvx
-      (A : c_long;
-       B : const_vector_signed_short_ptr) return vector_signed_short
-    renames vec_ld;
- 
-    function vec_lvx
-      (A : c_long;
-       B : const_short_ptr) return vector_signed_short
-    renames vec_ld;
- 
-    function vec_lvx
-      (A : c_long;
-       B : const_vector_unsigned_short_ptr) return vector_unsigned_short
-    renames vec_ld;
- 
-    function vec_lvx
-      (A : c_long;
-       B : const_unsigned_short_ptr) return vector_unsigned_short
-    renames vec_ld;
- 
-    function vec_lvx
-      (A : c_long;
-       B : const_vector_bool_char_ptr) return vector_bool_char
-    renames vec_ld;
- 
-    function vec_lvx
-      (A : c_long;
-       B : const_vector_signed_char_ptr) return vector_signed_char
-    renames vec_ld;
- 
-    function vec_lvx
-      (A : c_long;
-       B : const_signed_char_ptr) return vector_signed_char
-    renames vec_ld;
- 
-    function vec_lvx
-      (A : c_long;
-       B : const_vector_unsigned_char_ptr) return vector_unsigned_char
-    renames vec_ld;
- 
-    function vec_lvx
-      (A : c_long;
-       B : const_unsigned_char_ptr) return vector_unsigned_char
-    renames vec_ld;
- 
-    function vec_lvxl
-      (A : c_long;
-       B : const_vector_float_ptr) return vector_float
-    renames vec_ldl;
- 
-    function vec_lvxl
-      (A : c_long;
-       B : const_float_ptr) return vector_float
-    renames vec_ldl;
- 
-    function vec_lvxl
-      (A : c_long;
-       B : const_vector_bool_int_ptr) return vector_bool_int
-    renames vec_ldl;
- 
-    function vec_lvxl
-      (A : c_long;
-       B : const_vector_signed_int_ptr) return vector_signed_int
-    renames vec_ldl;
- 
-    function vec_lvxl
-      (A : c_long;
-       B : const_int_ptr) return vector_signed_int
-    renames vec_ldl;
- 
-    function vec_lvxl
-      (A : c_long;
-       B : const_long_ptr) return vector_signed_int
-    renames vec_ldl;
- 
-    function vec_lvxl
-      (A : c_long;
-       B : const_vector_unsigned_int_ptr) return vector_unsigned_int
-    renames vec_ldl;
- 
-    function vec_lvxl
-      (A : c_long;
-       B : const_unsigned_int_ptr) return vector_unsigned_int
-    renames vec_ldl;
- 
-    function vec_lvxl
-      (A : c_long;
-       B : const_unsigned_long_ptr) return vector_unsigned_int
-    renames vec_ldl;
- 
-    function vec_lvxl
-      (A : c_long;
-       B : const_vector_bool_short_ptr) return vector_bool_short
-    renames vec_ldl;
- 
-    function vec_lvxl
-      (A : c_long;
-       B : const_vector_pixel_ptr) return vector_pixel
-    renames vec_ldl;
- 
-    function vec_lvxl
-      (A : c_long;
-       B : const_vector_signed_short_ptr) return vector_signed_short
-    renames vec_ldl;
- 
-    function vec_lvxl
-      (A : c_long;
-       B : const_short_ptr) return vector_signed_short
-    renames vec_ldl;
- 
-    function vec_lvxl
-      (A : c_long;
-       B : const_vector_unsigned_short_ptr) return vector_unsigned_short
-    renames vec_ldl;
- 
-    function vec_lvxl
-      (A : c_long;
-       B : const_unsigned_short_ptr) return vector_unsigned_short
-    renames vec_ldl;
- 
-    function vec_lvxl
-      (A : c_long;
-       B : const_vector_bool_char_ptr) return vector_bool_char
-    renames vec_ldl;
- 
-    function vec_lvxl
-      (A : c_long;
-       B : const_vector_signed_char_ptr) return vector_signed_char
-    renames vec_ldl;
- 
-    function vec_lvxl
-      (A : c_long;
-       B : const_signed_char_ptr) return vector_signed_char
-    renames vec_ldl;
- 
-    function vec_lvxl
-      (A : c_long;
-       B : const_vector_unsigned_char_ptr) return vector_unsigned_char
-    renames vec_ldl;
- 
-    function vec_lvxl
-      (A : c_long;
-       B : const_unsigned_char_ptr) return vector_unsigned_char
-    renames vec_ldl;
- 
-    function vec_vlogefp
-      (A : vector_float) return vector_float
-    renames vec_loge;
- 
-    -----------------
-    -- vec_vmaddfp --
-    -----------------
- 
-    function vec_vmaddfp
-      (A : vector_float;
-       B : vector_float;
-       C : vector_float) return vector_float
-    renames vec_madd;
- 
-    -------------------
-    -- vec_vmhaddshs --
-    -------------------
- 
-    function vec_vmhaddshs
-      (A : vector_signed_short;
-       B : vector_signed_short;
-       C : vector_signed_short) return vector_signed_short
-    renames vec_madds;
- 
-    -------------------
-    -- vec_vmladduhm --
-    -------------------
- 
-    function vec_vmladduhm
-      (A : vector_signed_short;
-       B : vector_signed_short;
-       C : vector_signed_short) return vector_signed_short
-    renames vec_mladd;
- 
-    function vec_vmladduhm
-      (A : vector_signed_short;
-       B : vector_unsigned_short;
-       C : vector_unsigned_short) return vector_signed_short
-    renames vec_mladd;
- 
-    function vec_vmladduhm
-      (A : vector_unsigned_short;
-       B : vector_signed_short;
-       C : vector_signed_short) return vector_signed_short
-    renames vec_mladd;
- 
-    function vec_vmladduhm
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short;
-       C : vector_unsigned_short) return vector_unsigned_short
-    renames vec_mladd;
- 
-    --------------------
-    -- vec_vmhraddshs --
-    --------------------
- 
-    function vec_vmhraddshs
-      (A : vector_signed_short;
-       B : vector_signed_short;
-       C : vector_signed_short) return vector_signed_short
-    renames vec_mradds;
- 
-    ------------------
-    -- vec_vnmsubfp --
-    ------------------
- 
-    function vec_vnmsubfp
-      (A : vector_float;
-       B : vector_float;
-       C : vector_float) return vector_float
-    renames vec_nmsub;
- 
-    --------------
-    -- vec_vnor --
-    --------------
- 
-    function vec_vnor
-      (A : vector_float;
-       B : vector_float) return vector_float
-    renames vec_nor;
- 
-    function vec_vnor
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int
-    renames vec_nor;
- 
-    function vec_vnor
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    renames vec_nor;
- 
-    function vec_vnor
-      (A : vector_bool_int;
-       B : vector_bool_int) return vector_bool_int
-    renames vec_nor;
- 
-    function vec_vnor
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_short
-    renames vec_nor;
- 
-    function vec_vnor
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    renames vec_nor;
- 
-    function vec_vnor
-      (A : vector_bool_short;
-       B : vector_bool_short) return vector_bool_short
-    renames vec_nor;
- 
-    function vec_vnor
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char
-    renames vec_nor;
- 
-    function vec_vnor
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    renames vec_nor;
- 
-    function vec_vnor
-      (A : vector_bool_char;
-       B : vector_bool_char) return vector_bool_char
-    renames vec_nor;
- 
-    -------------
-    -- vec_vor --
-    -------------
- 
-    function vec_vor
-      (A : vector_float;
-       B : vector_float) return vector_float
-    renames vec_or;
- 
-    function vec_vor
-      (A : vector_float;
-       B : vector_bool_int) return vector_float
-    renames vec_or;
- 
-    function vec_vor
-      (A : vector_bool_int;
-       B : vector_float) return vector_float
-    renames vec_or;
- 
-    function vec_vor
-      (A : vector_bool_int;
-       B : vector_bool_int) return vector_bool_int
-    renames vec_or;
- 
-    function vec_vor
-      (A : vector_bool_int;
-       B : vector_signed_int) return vector_signed_int
-    renames vec_or;
- 
-    function vec_vor
-      (A : vector_signed_int;
-       B : vector_bool_int) return vector_signed_int
-    renames vec_or;
- 
-    function vec_vor
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int
-    renames vec_or;
- 
-    function vec_vor
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    renames vec_or;
- 
-    function vec_vor
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return vector_unsigned_int
-    renames vec_or;
- 
-    function vec_vor
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    renames vec_or;
- 
-    function vec_vor
-      (A : vector_bool_short;
-       B : vector_bool_short) return vector_bool_short
-    renames vec_or;
- 
-    function vec_vor
-      (A : vector_bool_short;
-       B : vector_signed_short) return vector_signed_short
-    renames vec_or;
- 
-    function vec_vor
-      (A : vector_signed_short;
-       B : vector_bool_short) return vector_signed_short
-    renames vec_or;
- 
-    function vec_vor
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_short
-    renames vec_or;
- 
-    function vec_vor
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    renames vec_or;
- 
-    function vec_vor
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return vector_unsigned_short
-    renames vec_or;
- 
-    function vec_vor
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    renames vec_or;
- 
-    function vec_vor
-      (A : vector_bool_char;
-       B : vector_signed_char) return vector_signed_char
-    renames vec_or;
- 
-    function vec_vor
-      (A : vector_bool_char;
-       B : vector_bool_char) return vector_bool_char
-    renames vec_or;
- 
-    function vec_vor
-      (A : vector_signed_char;
-       B : vector_bool_char) return vector_signed_char
-    renames vec_or;
- 
-    function vec_vor
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char
-    renames vec_or;
- 
-    function vec_vor
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    renames vec_or;
- 
-    function vec_vor
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return vector_unsigned_char
-    renames vec_or;
- 
-    function vec_vor
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    renames vec_or;
- 
-    ---------------
-    -- vec_vpkpx --
-    ---------------
- 
-    function vec_vpkpx
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_pixel
-    renames vec_packpx;
- 
-    ---------------
-    -- vec_vperm --
-    ---------------
- 
-    function vec_vperm
-      (A : vector_float;
-       B : vector_float;
-       C : vector_unsigned_char) return vector_float
-    renames vec_perm;
- 
-    function vec_vperm
-      (A : vector_signed_int;
-       B : vector_signed_int;
-       C : vector_unsigned_char) return vector_signed_int
-    renames vec_perm;
- 
-    function vec_vperm
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int;
-       C : vector_unsigned_char) return vector_unsigned_int
-    renames vec_perm;
- 
-    function vec_vperm
-      (A : vector_bool_int;
-       B : vector_bool_int;
-       C : vector_unsigned_char) return vector_bool_int
-    renames vec_perm;
- 
-    function vec_vperm
-      (A : vector_signed_short;
-       B : vector_signed_short;
-       C : vector_unsigned_char) return vector_signed_short
-    renames vec_perm;
- 
-    function vec_vperm
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short;
-       C : vector_unsigned_char) return vector_unsigned_short
-    renames vec_perm;
- 
-    function vec_vperm
-      (A : vector_bool_short;
-       B : vector_bool_short;
-       C : vector_unsigned_char) return vector_bool_short
-    renames vec_perm;
- 
-    function vec_vperm
-      (A : vector_pixel;
-       B : vector_pixel;
-       C : vector_unsigned_char) return vector_pixel
-    renames vec_perm;
- 
-    function vec_vperm
-      (A : vector_signed_char;
-       B : vector_signed_char;
-       C : vector_unsigned_char) return vector_signed_char
-    renames vec_perm;
- 
-    function vec_vperm
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char;
-       C : vector_unsigned_char) return vector_unsigned_char
-    renames vec_perm;
- 
-    function vec_vperm
-      (A : vector_bool_char;
-       B : vector_bool_char;
-       C : vector_unsigned_char) return vector_bool_char
-    renames vec_perm;
- 
-    ---------------
-    -- vec_vrefp --
-    ---------------
- 
-    function vec_vrefp
-      (A : vector_float) return vector_float
-    renames vec_re;
- 
-    ---------------
-    -- vec_vrfin --
-    ---------------
- 
-    function vec_vrfin
-      (A : vector_float) return vector_float
-    renames vec_round;
- 
-    function vec_vrsqrtefp
-      (A : vector_float) return vector_float
-    renames vec_rsqrte;
- 
-    function vec_vsel
-      (A : vector_float;
-       B : vector_float;
-       C : vector_bool_int) return vector_float
-    renames vec_sel;
- 
-    function vec_vsel
-      (A : vector_float;
-       B : vector_float;
-       C : vector_unsigned_int) return vector_float
-    renames vec_sel;
- 
-    function vec_vsel
-      (A : vector_signed_int;
-       B : vector_signed_int;
-       C : vector_bool_int) return vector_signed_int
-    renames vec_sel;
- 
-    function vec_vsel
-      (A : vector_signed_int;
-       B : vector_signed_int;
-       C : vector_unsigned_int) return vector_signed_int
-    renames vec_sel;
- 
-    function vec_vsel
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int;
-       C : vector_bool_int) return vector_unsigned_int
-    renames vec_sel;
- 
-    function vec_vsel
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int;
-       C : vector_unsigned_int) return vector_unsigned_int
-    renames vec_sel;
- 
-    function vec_vsel
-      (A : vector_bool_int;
-       B : vector_bool_int;
-       C : vector_bool_int) return vector_bool_int
-    renames vec_sel;
- 
-    function vec_vsel
-      (A : vector_bool_int;
-       B : vector_bool_int;
-       C : vector_unsigned_int) return vector_bool_int
-    renames vec_sel;
- 
-    function vec_vsel
-      (A : vector_signed_short;
-       B : vector_signed_short;
-       C : vector_bool_short) return vector_signed_short
-    renames vec_sel;
- 
-    function vec_vsel
-      (A : vector_signed_short;
-       B : vector_signed_short;
-       C : vector_unsigned_short) return vector_signed_short
-    renames vec_sel;
- 
-    function vec_vsel
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short;
-       C : vector_bool_short) return vector_unsigned_short
-    renames vec_sel;
- 
-    function vec_vsel
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short;
-       C : vector_unsigned_short) return vector_unsigned_short
-    renames vec_sel;
- 
-    function vec_vsel
-      (A : vector_bool_short;
-       B : vector_bool_short;
-       C : vector_bool_short) return vector_bool_short
-    renames vec_sel;
- 
-    function vec_vsel
-      (A : vector_bool_short;
-       B : vector_bool_short;
-       C : vector_unsigned_short) return vector_bool_short
-    renames vec_sel;
- 
-    function vec_vsel
-      (A : vector_signed_char;
-       B : vector_signed_char;
-       C : vector_bool_char) return vector_signed_char
-    renames vec_sel;
- 
-    function vec_vsel
-      (A : vector_signed_char;
-       B : vector_signed_char;
-       C : vector_unsigned_char) return vector_signed_char
-    renames vec_sel;
- 
-    function vec_vsel
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char;
-       C : vector_bool_char) return vector_unsigned_char
-    renames vec_sel;
- 
-    function vec_vsel
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char;
-       C : vector_unsigned_char) return vector_unsigned_char
-    renames vec_sel;
- 
-    function vec_vsel
-      (A : vector_bool_char;
-       B : vector_bool_char;
-       C : vector_bool_char) return vector_bool_char
-    renames vec_sel;
- 
-    function vec_vsel
-      (A : vector_bool_char;
-       B : vector_bool_char;
-       C : vector_unsigned_char) return vector_bool_char
-    renames vec_sel;
- 
-    ----------------
-    -- vec_vsldoi --
-    ----------------
- 
-    function vec_vsldoi
-      (A : vector_float;
-       B : vector_float;
-       C : c_int) return vector_float
-    renames vec_sld;
- 
-    function vec_vsldoi
-      (A : vector_signed_int;
-       B : vector_signed_int;
-       C : c_int) return vector_signed_int
-    renames vec_sld;
- 
-    function vec_vsldoi
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int;
-       C : c_int) return vector_unsigned_int
-    renames vec_sld;
- 
-    function vec_vsldoi
-      (A : vector_bool_int;
-       B : vector_bool_int;
-       C : c_int) return vector_bool_int
-    renames vec_sld;
- 
-    function vec_vsldoi
-      (A : vector_signed_short;
-       B : vector_signed_short;
-       C : c_int) return vector_signed_short
-    renames vec_sld;
- 
-    function vec_vsldoi
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short;
-       C : c_int) return vector_unsigned_short
-    renames vec_sld;
- 
-    function vec_vsldoi
-      (A : vector_bool_short;
-       B : vector_bool_short;
-       C : c_int) return vector_bool_short
-    renames vec_sld;
- 
-    function vec_vsldoi
-      (A : vector_pixel;
-       B : vector_pixel;
-       C : c_int) return vector_pixel
-    renames vec_sld;
- 
-    function vec_vsldoi
-      (A : vector_signed_char;
-       B : vector_signed_char;
-       C : c_int) return vector_signed_char
-    renames vec_sld;
- 
-    function vec_vsldoi
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char;
-       C : c_int) return vector_unsigned_char
-    renames vec_sld;
- 
-    function vec_vsldoi
-      (A : vector_bool_char;
-       B : vector_bool_char;
-       C : c_int) return vector_bool_char
-    renames vec_sld;
- 
-    -------------
-    -- vec_vsl --
-    -------------
- 
-    function vec_vsl
-      (A : vector_signed_int;
-       B : vector_unsigned_int) return vector_signed_int
-    renames vec_sll;
- 
-    function vec_vsl
-      (A : vector_signed_int;
-       B : vector_unsigned_short) return vector_signed_int
-    renames vec_sll;
- 
-    function vec_vsl
-      (A : vector_signed_int;
-       B : vector_unsigned_char) return vector_signed_int
-    renames vec_sll;
- 
-    function vec_vsl
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    renames vec_sll;
- 
-    function vec_vsl
-      (A : vector_unsigned_int;
-       B : vector_unsigned_short) return vector_unsigned_int
-    renames vec_sll;
- 
-    function vec_vsl
-      (A : vector_unsigned_int;
-       B : vector_unsigned_char) return vector_unsigned_int
-    renames vec_sll;
- 
-    function vec_vsl
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return vector_bool_int
-    renames vec_sll;
- 
-    function vec_vsl
-      (A : vector_bool_int;
-       B : vector_unsigned_short) return vector_bool_int
-    renames vec_sll;
- 
-    function vec_vsl
-      (A : vector_bool_int;
-       B : vector_unsigned_char) return vector_bool_int
-    renames vec_sll;
- 
-    function vec_vsl
-      (A : vector_signed_short;
-       B : vector_unsigned_int) return vector_signed_short
-    renames vec_sll;
- 
-    function vec_vsl
-      (A : vector_signed_short;
-       B : vector_unsigned_short) return vector_signed_short
-    renames vec_sll;
- 
-    function vec_vsl
-      (A : vector_signed_short;
-       B : vector_unsigned_char) return vector_signed_short
-    renames vec_sll;
- 
-    function vec_vsl
-      (A : vector_unsigned_short;
-       B : vector_unsigned_int) return vector_unsigned_short
-    renames vec_sll;
- 
-    function vec_vsl
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    renames vec_sll;
- 
-    function vec_vsl
-      (A : vector_unsigned_short;
-       B : vector_unsigned_char) return vector_unsigned_short
-    renames vec_sll;
- 
-    function vec_vsl
-      (A : vector_bool_short;
-       B : vector_unsigned_int) return vector_bool_short
-    renames vec_sll;
- 
-    function vec_vsl
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return vector_bool_short
-    renames vec_sll;
- 
-    function vec_vsl
-      (A : vector_bool_short;
-       B : vector_unsigned_char) return vector_bool_short
-    renames vec_sll;
- 
-    function vec_vsl
-      (A : vector_pixel;
-       B : vector_unsigned_int) return vector_pixel
-    renames vec_sll;
- 
-    function vec_vsl
-      (A : vector_pixel;
-       B : vector_unsigned_short) return vector_pixel
-    renames vec_sll;
- 
-    function vec_vsl
-      (A : vector_pixel;
-       B : vector_unsigned_char) return vector_pixel
-    renames vec_sll;
- 
-    function vec_vsl
-      (A : vector_signed_char;
-       B : vector_unsigned_int) return vector_signed_char
-    renames vec_sll;
- 
-    function vec_vsl
-      (A : vector_signed_char;
-       B : vector_unsigned_short) return vector_signed_char
-    renames vec_sll;
- 
-    function vec_vsl
-      (A : vector_signed_char;
-       B : vector_unsigned_char) return vector_signed_char
-    renames vec_sll;
- 
-    function vec_vsl
-      (A : vector_unsigned_char;
-       B : vector_unsigned_int) return vector_unsigned_char
-    renames vec_sll;
- 
-    function vec_vsl
-      (A : vector_unsigned_char;
-       B : vector_unsigned_short) return vector_unsigned_char
-    renames vec_sll;
- 
-    function vec_vsl
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    renames vec_sll;
- 
-    function vec_vsl
-      (A : vector_bool_char;
-       B : vector_unsigned_int) return vector_bool_char
-    renames vec_sll;
- 
-    function vec_vsl
-      (A : vector_bool_char;
-       B : vector_unsigned_short) return vector_bool_char
-    renames vec_sll;
- 
-    function vec_vsl
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return vector_bool_char
-    renames vec_sll;
- 
-    --------------
-    -- vec_vslo --
-    --------------
- 
-    function vec_vslo
-      (A : vector_float;
-       B : vector_signed_char) return vector_float
-    renames vec_slo;
- 
-    function vec_vslo
-      (A : vector_float;
-       B : vector_unsigned_char) return vector_float
-    renames vec_slo;
- 
-    function vec_vslo
-      (A : vector_signed_int;
-       B : vector_signed_char) return vector_signed_int
-    renames vec_slo;
- 
-    function vec_vslo
-      (A : vector_signed_int;
-       B : vector_unsigned_char) return vector_signed_int
-    renames vec_slo;
- 
-    function vec_vslo
-      (A : vector_unsigned_int;
-       B : vector_signed_char) return vector_unsigned_int
-    renames vec_slo;
- 
-    function vec_vslo
-      (A : vector_unsigned_int;
-       B : vector_unsigned_char) return vector_unsigned_int
-    renames vec_slo;
- 
-    function vec_vslo
-      (A : vector_signed_short;
-       B : vector_signed_char) return vector_signed_short
-    renames vec_slo;
- 
-    function vec_vslo
-      (A : vector_signed_short;
-       B : vector_unsigned_char) return vector_signed_short
-    renames vec_slo;
- 
-    function vec_vslo
-      (A : vector_unsigned_short;
-       B : vector_signed_char) return vector_unsigned_short
-    renames vec_slo;
- 
-    function vec_vslo
-      (A : vector_unsigned_short;
-       B : vector_unsigned_char) return vector_unsigned_short
-    renames vec_slo;
- 
-    function vec_vslo
-      (A : vector_pixel;
-       B : vector_signed_char) return vector_pixel
-    renames vec_slo;
- 
-    function vec_vslo
-      (A : vector_pixel;
-       B : vector_unsigned_char) return vector_pixel
-    renames vec_slo;
- 
-    function vec_vslo
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char
-    renames vec_slo;
- 
-    function vec_vslo
-      (A : vector_signed_char;
-       B : vector_unsigned_char) return vector_signed_char
-    renames vec_slo;
- 
-    function vec_vslo
-      (A : vector_unsigned_char;
-       B : vector_signed_char) return vector_unsigned_char
-    renames vec_slo;
- 
-    function vec_vslo
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    renames vec_slo;
- 
-    function vec_vsr
-      (A : vector_signed_int;
-       B : vector_unsigned_int) return vector_signed_int
-    renames vec_srl;
- 
-    function vec_vsr
-      (A : vector_signed_int;
-       B : vector_unsigned_short) return vector_signed_int
-    renames vec_srl;
- 
-    function vec_vsr
-      (A : vector_signed_int;
-       B : vector_unsigned_char) return vector_signed_int
-    renames vec_srl;
- 
-    function vec_vsr
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    renames vec_srl;
- 
-    function vec_vsr
-      (A : vector_unsigned_int;
-       B : vector_unsigned_short) return vector_unsigned_int
-    renames vec_srl;
- 
-    function vec_vsr
-      (A : vector_unsigned_int;
-       B : vector_unsigned_char) return vector_unsigned_int
-    renames vec_srl;
- 
-    function vec_vsr
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return vector_bool_int
-    renames vec_srl;
- 
-    function vec_vsr
-      (A : vector_bool_int;
-       B : vector_unsigned_short) return vector_bool_int
-    renames vec_srl;
- 
-    function vec_vsr
-      (A : vector_bool_int;
-       B : vector_unsigned_char) return vector_bool_int
-    renames vec_srl;
- 
-    function vec_vsr
-      (A : vector_signed_short;
-       B : vector_unsigned_int) return vector_signed_short
-    renames vec_srl;
- 
-    function vec_vsr
-      (A : vector_signed_short;
-       B : vector_unsigned_short) return vector_signed_short
-    renames vec_srl;
- 
-    function vec_vsr
-      (A : vector_signed_short;
-       B : vector_unsigned_char) return vector_signed_short
-    renames vec_srl;
- 
-    function vec_vsr
-      (A : vector_unsigned_short;
-       B : vector_unsigned_int) return vector_unsigned_short
-    renames vec_srl;
- 
-    function vec_vsr
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    renames vec_srl;
- 
-    function vec_vsr
-      (A : vector_unsigned_short;
-       B : vector_unsigned_char) return vector_unsigned_short
-    renames vec_srl;
- 
-    function vec_vsr
-      (A : vector_bool_short;
-       B : vector_unsigned_int) return vector_bool_short
-    renames vec_srl;
- 
-    function vec_vsr
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return vector_bool_short
-    renames vec_srl;
- 
-    function vec_vsr
-      (A : vector_bool_short;
-       B : vector_unsigned_char) return vector_bool_short
-    renames vec_srl;
- 
-    function vec_vsr
-      (A : vector_pixel;
-       B : vector_unsigned_int) return vector_pixel
-    renames vec_srl;
- 
-    function vec_vsr
-      (A : vector_pixel;
-       B : vector_unsigned_short) return vector_pixel
-    renames vec_srl;
- 
-    function vec_vsr
-      (A : vector_pixel;
-       B : vector_unsigned_char) return vector_pixel
-    renames vec_srl;
- 
-    function vec_vsr
-      (A : vector_signed_char;
-       B : vector_unsigned_int) return vector_signed_char
-    renames vec_srl;
- 
-    function vec_vsr
-      (A : vector_signed_char;
-       B : vector_unsigned_short) return vector_signed_char
-    renames vec_srl;
- 
-    function vec_vsr
-      (A : vector_signed_char;
-       B : vector_unsigned_char) return vector_signed_char
-    renames vec_srl;
- 
-    function vec_vsr
-      (A : vector_unsigned_char;
-       B : vector_unsigned_int) return vector_unsigned_char
-    renames vec_srl;
- 
-    function vec_vsr
-      (A : vector_unsigned_char;
-       B : vector_unsigned_short) return vector_unsigned_char
-    renames vec_srl;
- 
-    function vec_vsr
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    renames vec_srl;
- 
-    function vec_vsr
-      (A : vector_bool_char;
-       B : vector_unsigned_int) return vector_bool_char
-    renames vec_srl;
- 
-    function vec_vsr
-      (A : vector_bool_char;
-       B : vector_unsigned_short) return vector_bool_char
-    renames vec_srl;
- 
-    function vec_vsr
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return vector_bool_char
-    renames vec_srl;
- 
-    function vec_vsro
-      (A : vector_float;
-       B : vector_signed_char) return vector_float
-    renames vec_sro;
- 
-    function vec_vsro
-      (A : vector_float;
-       B : vector_unsigned_char) return vector_float
-    renames vec_sro;
- 
-    function vec_vsro
-      (A : vector_signed_int;
-       B : vector_signed_char) return vector_signed_int
-    renames vec_sro;
- 
-    function vec_vsro
-      (A : vector_signed_int;
-       B : vector_unsigned_char) return vector_signed_int
-    renames vec_sro;
- 
-    function vec_vsro
-      (A : vector_unsigned_int;
-       B : vector_signed_char) return vector_unsigned_int
-    renames vec_sro;
- 
-    function vec_vsro
-      (A : vector_unsigned_int;
-       B : vector_unsigned_char) return vector_unsigned_int
-    renames vec_sro;
- 
-    function vec_vsro
-      (A : vector_signed_short;
-       B : vector_signed_char) return vector_signed_short
-    renames vec_sro;
- 
-    function vec_vsro
-      (A : vector_signed_short;
-       B : vector_unsigned_char) return vector_signed_short
-    renames vec_sro;
- 
-    function vec_vsro
-      (A : vector_unsigned_short;
-       B : vector_signed_char) return vector_unsigned_short
-    renames vec_sro;
- 
-    function vec_vsro
-      (A : vector_unsigned_short;
-       B : vector_unsigned_char) return vector_unsigned_short
-    renames vec_sro;
- 
-    function vec_vsro
-      (A : vector_pixel;
-       B : vector_signed_char) return vector_pixel
-    renames vec_sro;
- 
-    function vec_vsro
-      (A : vector_pixel;
-       B : vector_unsigned_char) return vector_pixel
-    renames vec_sro;
- 
-    function vec_vsro
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char
-    renames vec_sro;
- 
-    function vec_vsro
-      (A : vector_signed_char;
-       B : vector_unsigned_char) return vector_signed_char
-    renames vec_sro;
- 
-    function vec_vsro
-      (A : vector_unsigned_char;
-       B : vector_signed_char) return vector_unsigned_char
-    renames vec_sro;
- 
-    function vec_vsro
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    renames vec_sro;
- 
-    --------------
-    -- vec_stvx --
-    --------------
- 
-    procedure vec_stvx
-      (A : vector_float;
-       B : c_int;
-       C : vector_float_ptr)
-    renames vec_st;
- 
-    procedure vec_stvx
-      (A : vector_float;
-       B : c_int;
-       C : float_ptr)
-    renames vec_st;
- 
-    procedure vec_stvx
-      (A : vector_signed_int;
-       B : c_int;
-       C : vector_signed_int_ptr)
-    renames vec_st;
- 
-    procedure vec_stvx
-      (A : vector_signed_int;
-       B : c_int;
-       C : int_ptr)
-    renames vec_st;
- 
-    procedure vec_stvx
-      (A : vector_unsigned_int;
-       B : c_int;
-       C : vector_unsigned_int_ptr)
-    renames vec_st;
- 
-    procedure vec_stvx
-      (A : vector_unsigned_int;
-       B : c_int;
-       C : unsigned_int_ptr)
-    renames vec_st;
- 
-    procedure vec_stvx
-      (A : vector_bool_int;
-       B : c_int;
-       C : vector_bool_int_ptr)
-    renames vec_st;
- 
-    procedure vec_stvx
-      (A : vector_bool_int;
-       B : c_int;
-       C : unsigned_int_ptr)
-    renames vec_st;
- 
-    procedure vec_stvx
-      (A : vector_bool_int;
-       B : c_int;
-       C : int_ptr)
-    renames vec_st;
- 
-    procedure vec_stvx
-      (A : vector_signed_short;
-       B : c_int;
-       C : vector_signed_short_ptr)
-    renames vec_st;
- 
-    procedure vec_stvx
-      (A : vector_signed_short;
-       B : c_int;
-       C : short_ptr)
-    renames vec_st;
- 
-    procedure vec_stvx
-      (A : vector_unsigned_short;
-       B : c_int;
-       C : vector_unsigned_short_ptr)
-    renames vec_st;
- 
-    procedure vec_stvx
-      (A : vector_unsigned_short;
-       B : c_int;
-       C : unsigned_short_ptr)
-    renames vec_st;
- 
-    procedure vec_stvx
-      (A : vector_bool_short;
-       B : c_int;
-       C : vector_bool_short_ptr)
-    renames vec_st;
- 
-    procedure vec_stvx
-      (A : vector_bool_short;
-       B : c_int;
-       C : unsigned_short_ptr)
-    renames vec_st;
- 
-    procedure vec_stvx
-      (A : vector_pixel;
-       B : c_int;
-       C : vector_pixel_ptr)
-    renames vec_st;
- 
-    procedure vec_stvx
-      (A : vector_pixel;
-       B : c_int;
-       C : unsigned_short_ptr)
-    renames vec_st;
- 
-    procedure vec_stvx
-      (A : vector_pixel;
-       B : c_int;
-       C : short_ptr)
-    renames vec_st;
- 
-    procedure vec_stvx
-      (A : vector_bool_short;
-       B : c_int;
-       C : short_ptr)
-    renames vec_st;
- 
-    procedure vec_stvx
-      (A : vector_signed_char;
-       B : c_int;
-       C : vector_signed_char_ptr)
-    renames vec_st;
- 
-    procedure vec_stvx
-      (A : vector_signed_char;
-       B : c_int;
-       C : signed_char_ptr)
-    renames vec_st;
- 
-    procedure vec_stvx
-      (A : vector_unsigned_char;
-       B : c_int;
-       C : vector_unsigned_char_ptr)
-    renames vec_st;
- 
-    procedure vec_stvx
-      (A : vector_unsigned_char;
-       B : c_int;
-       C : unsigned_char_ptr)
-    renames vec_st;
- 
-    procedure vec_stvx
-      (A : vector_bool_char;
-       B : c_int;
-       C : vector_bool_char_ptr)
-    renames vec_st;
- 
-    procedure vec_stvx
-      (A : vector_bool_char;
-       B : c_int;
-       C : unsigned_char_ptr)
-    renames vec_st;
- 
-    procedure vec_stvx
-      (A : vector_bool_char;
-       B : c_int;
-       C : signed_char_ptr)
-    renames vec_st;
- 
-    ---------------
-    -- vec_stvxl --
-    ---------------
- 
-    procedure vec_stvxl
-      (A : vector_float;
-       B : c_int;
-       C : vector_float_ptr)
-    renames vec_stl;
- 
-    procedure vec_stvxl
-      (A : vector_float;
-       B : c_int;
-       C : float_ptr)
-    renames vec_stl;
- 
-    procedure vec_stvxl
-      (A : vector_signed_int;
-       B : c_int;
-       C : vector_signed_int_ptr)
-    renames vec_stl;
- 
-    procedure vec_stvxl
-      (A : vector_signed_int;
-       B : c_int;
-       C : int_ptr)
-    renames vec_stl;
- 
-    procedure vec_stvxl
-      (A : vector_unsigned_int;
-       B : c_int;
-       C : vector_unsigned_int_ptr)
-    renames vec_stl;
- 
-    procedure vec_stvxl
-      (A : vector_unsigned_int;
-       B : c_int;
-       C : unsigned_int_ptr)
-    renames vec_stl;
- 
-    procedure vec_stvxl
-      (A : vector_bool_int;
-       B : c_int;
-       C : vector_bool_int_ptr)
-    renames vec_stl;
- 
-    procedure vec_stvxl
-      (A : vector_bool_int;
-       B : c_int;
-       C : unsigned_int_ptr)
-    renames vec_stl;
- 
-    procedure vec_stvxl
-      (A : vector_bool_int;
-       B : c_int;
-       C : int_ptr)
-    renames vec_stl;
- 
-    procedure vec_stvxl
-      (A : vector_signed_short;
-       B : c_int;
-       C : vector_signed_short_ptr)
-    renames vec_stl;
- 
-    procedure vec_stvxl
-      (A : vector_signed_short;
-       B : c_int;
-       C : short_ptr)
-    renames vec_stl;
- 
-    procedure vec_stvxl
-      (A : vector_unsigned_short;
-       B : c_int;
-       C : vector_unsigned_short_ptr)
-    renames vec_stl;
- 
-    procedure vec_stvxl
-      (A : vector_unsigned_short;
-       B : c_int;
-       C : unsigned_short_ptr)
-    renames vec_stl;
- 
-    procedure vec_stvxl
-      (A : vector_bool_short;
-       B : c_int;
-       C : vector_bool_short_ptr)
-    renames vec_stl;
- 
-    procedure vec_stvxl
-      (A : vector_bool_short;
-       B : c_int;
-       C : unsigned_short_ptr)
-    renames vec_stl;
- 
-    procedure vec_stvxl
-      (A : vector_bool_short;
-       B : c_int;
-       C : short_ptr)
-    renames vec_stl;
- 
-    procedure vec_stvxl
-      (A : vector_pixel;
-       B : c_int;
-       C : vector_pixel_ptr)
-    renames vec_stl;
- 
-    procedure vec_stvxl
-      (A : vector_pixel;
-       B : c_int;
-       C : unsigned_short_ptr)
-    renames vec_stl;
- 
-    procedure vec_stvxl
-      (A : vector_pixel;
-       B : c_int;
-       C : short_ptr)
-    renames vec_stl;
- 
-    procedure vec_stvxl
-      (A : vector_signed_char;
-       B : c_int;
-       C : vector_signed_char_ptr)
-    renames vec_stl;
- 
-    procedure vec_stvxl
-      (A : vector_signed_char;
-       B : c_int;
-       C : signed_char_ptr)
-    renames vec_stl;
- 
-    procedure vec_stvxl
-      (A : vector_unsigned_char;
-       B : c_int;
-       C : vector_unsigned_char_ptr)
-    renames vec_stl;
- 
-    procedure vec_stvxl
-      (A : vector_unsigned_char;
-       B : c_int;
-       C : unsigned_char_ptr)
-    renames vec_stl;
- 
-    procedure vec_stvxl
-      (A : vector_bool_char;
-       B : c_int;
-       C : vector_bool_char_ptr)
-    renames vec_stl;
- 
-    procedure vec_stvxl
-      (A : vector_bool_char;
-       B : c_int;
-       C : unsigned_char_ptr)
-    renames vec_stl;
- 
-    procedure vec_stvxl
-      (A : vector_bool_char;
-       B : c_int;
-       C : signed_char_ptr)
-    renames vec_stl;
- 
-    function vec_vsubcuw
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    renames vec_subc;
- 
-    ------------------
-    -- vec_vsum2sws --
-    ------------------
- 
-    function vec_vsum2sws
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int
-    renames vec_sum2s;
- 
-    function vec_vsumsws
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int
-    renames vec_sums;
- 
-    function vec_vrfiz
-      (A : vector_float) return vector_float
-    renames vec_trunc;
- 
-    --------------
-    -- vec_vxor --
-    --------------
- 
-    function vec_vxor
-      (A : vector_float;
-       B : vector_float) return vector_float
-    renames vec_xor;
- 
-    function vec_vxor
-      (A : vector_float;
-       B : vector_bool_int) return vector_float
-    renames vec_xor;
- 
-    function vec_vxor
-      (A : vector_bool_int;
-       B : vector_float) return vector_float
-    renames vec_xor;
- 
-    function vec_vxor
-      (A : vector_bool_int;
-       B : vector_bool_int) return vector_bool_int
-    renames vec_xor;
- 
-    function vec_vxor
-      (A : vector_bool_int;
-       B : vector_signed_int) return vector_signed_int
-    renames vec_xor;
- 
-    function vec_vxor
-      (A : vector_signed_int;
-       B : vector_bool_int) return vector_signed_int
-    renames vec_xor;
- 
-    function vec_vxor
-      (A : vector_signed_int;
-       B : vector_signed_int) return vector_signed_int
-    renames vec_xor;
- 
-    function vec_vxor
-      (A : vector_bool_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    renames vec_xor;
- 
-    function vec_vxor
-      (A : vector_unsigned_int;
-       B : vector_bool_int) return vector_unsigned_int
-    renames vec_xor;
- 
-    function vec_vxor
-      (A : vector_unsigned_int;
-       B : vector_unsigned_int) return vector_unsigned_int
-    renames vec_xor;
- 
-    function vec_vxor
-      (A : vector_bool_short;
-       B : vector_bool_short) return vector_bool_short
-    renames vec_xor;
- 
-    function vec_vxor
-      (A : vector_bool_short;
-       B : vector_signed_short) return vector_signed_short
-    renames vec_xor;
- 
-    function vec_vxor
-      (A : vector_signed_short;
-       B : vector_bool_short) return vector_signed_short
-    renames vec_xor;
- 
-    function vec_vxor
-      (A : vector_signed_short;
-       B : vector_signed_short) return vector_signed_short
-    renames vec_xor;
- 
-    function vec_vxor
-      (A : vector_bool_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    renames vec_xor;
- 
-    function vec_vxor
-      (A : vector_unsigned_short;
-       B : vector_bool_short) return vector_unsigned_short
-    renames vec_xor;
- 
-    function vec_vxor
-      (A : vector_unsigned_short;
-       B : vector_unsigned_short) return vector_unsigned_short
-    renames vec_xor;
- 
-    function vec_vxor
-      (A : vector_bool_char;
-       B : vector_signed_char) return vector_signed_char
-    renames vec_xor;
- 
-    function vec_vxor
-      (A : vector_bool_char;
-       B : vector_bool_char) return vector_bool_char
-    renames vec_xor;
- 
-    function vec_vxor
-      (A : vector_signed_char;
-       B : vector_bool_char) return vector_signed_char
-    renames vec_xor;
- 
-    function vec_vxor
-      (A : vector_signed_char;
-       B : vector_signed_char) return vector_signed_char
-    renames vec_xor;
- 
-    function vec_vxor
-      (A : vector_bool_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    renames vec_xor;
- 
-    function vec_vxor
-      (A : vector_unsigned_char;
-       B : vector_bool_char) return vector_unsigned_char
-    renames vec_xor;
- 
-    function vec_vxor
-      (A : vector_unsigned_char;
-       B : vector_unsigned_char) return vector_unsigned_char
-    renames vec_xor;
- 
-    --------------
-    -- vec_step --
-    --------------
- 
-    function vec_step (V : vector_unsigned_char) return Integer;
-    function vec_step (V : vector_signed_char) return Integer;
-    function vec_step (V : vector_bool_char) return Integer;
- 
-    function vec_step (V : vector_unsigned_short) return Integer;
-    function vec_step (V : vector_signed_short) return Integer;
-    function vec_step (V : vector_bool_short) return Integer;
- 
-    function vec_step (V : vector_unsigned_int) return Integer;
-    function vec_step (V : vector_signed_int) return Integer;
-    function vec_step (V : vector_bool_int) return Integer;
- 
-    function vec_step (V : vector_float) return Integer;
-    function vec_step (V : vector_pixel) return Integer;
- 
- private
- 
-    pragma Inline_Always (vec_abs);
-    pragma Inline_Always (vec_abss);
-    pragma Inline_Always (vec_add);
-    pragma Inline_Always (vec_vaddfp);
-    pragma Inline_Always (vec_vadduwm);
-    pragma Inline_Always (vec_vadduhm);
-    pragma Inline_Always (vec_vaddubm);
-    pragma Inline_Always (vec_addc);
-    pragma Inline_Always (vec_adds);
-    pragma Inline_Always (vec_vaddsws);
-    pragma Inline_Always (vec_vadduws);
-    pragma Inline_Always (vec_vaddshs);
-    pragma Inline_Always (vec_vadduhs);
-    pragma Inline_Always (vec_vaddsbs);
-    pragma Inline_Always (vec_vaddubs);
-    pragma Inline_Always (vec_and);
-    pragma Inline_Always (vec_andc);
-    pragma Inline_Always (vec_avg);
-    pragma Inline_Always (vec_vavgsw);
-    pragma Inline_Always (vec_vavguw);
-    pragma Inline_Always (vec_vavgsh);
-    pragma Inline_Always (vec_vavguh);
-    pragma Inline_Always (vec_vavgsb);
-    pragma Inline_Always (vec_vavgub);
-    pragma Inline_Always (vec_ceil);
-    pragma Inline_Always (vec_cmpb);
-    pragma Inline_Always (vec_cmpeq);
-    pragma Inline_Always (vec_vcmpeqfp);
-    pragma Inline_Always (vec_vcmpequw);
-    pragma Inline_Always (vec_vcmpequh);
-    pragma Inline_Always (vec_vcmpequb);
-    pragma Inline_Always (vec_cmpge);
-    pragma Inline_Always (vec_cmpgt);
-    pragma Inline_Always (vec_vcmpgtfp);
-    pragma Inline_Always (vec_vcmpgtsw);
-    pragma Inline_Always (vec_vcmpgtuw);
-    pragma Inline_Always (vec_vcmpgtsh);
-    pragma Inline_Always (vec_vcmpgtuh);
-    pragma Inline_Always (vec_vcmpgtsb);
-    pragma Inline_Always (vec_vcmpgtub);
-    pragma Inline_Always (vec_cmple);
-    pragma Inline_Always (vec_cmplt);
-    pragma Inline_Always (vec_expte);
-    pragma Inline_Always (vec_floor);
-    pragma Inline_Always (vec_ld);
-    pragma Inline_Always (vec_lde);
-    pragma Inline_Always (vec_lvewx);
-    pragma Inline_Always (vec_lvehx);
-    pragma Inline_Always (vec_lvebx);
-    pragma Inline_Always (vec_ldl);
-    pragma Inline_Always (vec_loge);
-    pragma Inline_Always (vec_lvsl);
-    pragma Inline_Always (vec_lvsr);
-    pragma Inline_Always (vec_madd);
-    pragma Inline_Always (vec_madds);
-    pragma Inline_Always (vec_max);
-    pragma Inline_Always (vec_vmaxfp);
-    pragma Inline_Always (vec_vmaxsw);
-    pragma Inline_Always (vec_vmaxuw);
-    pragma Inline_Always (vec_vmaxsh);
-    pragma Inline_Always (vec_vmaxuh);
-    pragma Inline_Always (vec_vmaxsb);
-    pragma Inline_Always (vec_vmaxub);
-    pragma Inline_Always (vec_mergeh);
-    pragma Inline_Always (vec_vmrghw);
-    pragma Inline_Always (vec_vmrghh);
-    pragma Inline_Always (vec_vmrghb);
-    pragma Inline_Always (vec_mergel);
-    pragma Inline_Always (vec_vmrglw);
-    pragma Inline_Always (vec_vmrglh);
-    pragma Inline_Always (vec_vmrglb);
-    pragma Inline_Always (vec_mfvscr);
-    pragma Inline_Always (vec_min);
-    pragma Inline_Always (vec_vminfp);
-    pragma Inline_Always (vec_vminsw);
-    pragma Inline_Always (vec_vminuw);
-    pragma Inline_Always (vec_vminsh);
-    pragma Inline_Always (vec_vminuh);
-    pragma Inline_Always (vec_vminsb);
-    pragma Inline_Always (vec_vminub);
-    pragma Inline_Always (vec_mladd);
-    pragma Inline_Always (vec_mradds);
-    pragma Inline_Always (vec_msum);
-    pragma Inline_Always (vec_vmsumshm);
-    pragma Inline_Always (vec_vmsumuhm);
-    pragma Inline_Always (vec_vmsummbm);
-    pragma Inline_Always (vec_vmsumubm);
-    pragma Inline_Always (vec_msums);
-    pragma Inline_Always (vec_vmsumshs);
-    pragma Inline_Always (vec_vmsumuhs);
-    pragma Inline_Always (vec_mtvscr);
-    pragma Inline_Always (vec_mule);
-    pragma Inline_Always (vec_vmulesh);
-    pragma Inline_Always (vec_vmuleuh);
-    pragma Inline_Always (vec_vmulesb);
-    pragma Inline_Always (vec_vmuleub);
-    pragma Inline_Always (vec_mulo);
-    pragma Inline_Always (vec_vmulosh);
-    pragma Inline_Always (vec_vmulouh);
-    pragma Inline_Always (vec_vmulosb);
-    pragma Inline_Always (vec_vmuloub);
-    pragma Inline_Always (vec_nmsub);
-    pragma Inline_Always (vec_nor);
-    pragma Inline_Always (vec_or);
-    pragma Inline_Always (vec_pack);
-    pragma Inline_Always (vec_vpkuwum);
-    pragma Inline_Always (vec_vpkuhum);
-    pragma Inline_Always (vec_packpx);
-    pragma Inline_Always (vec_packs);
-    pragma Inline_Always (vec_vpkswss);
-    pragma Inline_Always (vec_vpkuwus);
-    pragma Inline_Always (vec_vpkshss);
-    pragma Inline_Always (vec_vpkuhus);
-    pragma Inline_Always (vec_packsu);
-    pragma Inline_Always (vec_vpkswus);
-    pragma Inline_Always (vec_vpkshus);
-    pragma Inline_Always (vec_perm);
-    pragma Inline_Always (vec_re);
-    pragma Inline_Always (vec_rl);
-    pragma Inline_Always (vec_vrlw);
-    pragma Inline_Always (vec_vrlh);
-    pragma Inline_Always (vec_vrlb);
-    pragma Inline_Always (vec_round);
-    pragma Inline_Always (vec_rsqrte);
-    pragma Inline_Always (vec_sel);
-    pragma Inline_Always (vec_sl);
-    pragma Inline_Always (vec_vslw);
-    pragma Inline_Always (vec_vslh);
-    pragma Inline_Always (vec_vslb);
-    pragma Inline_Always (vec_sll);
-    pragma Inline_Always (vec_slo);
-    pragma Inline_Always (vec_sr);
-    pragma Inline_Always (vec_vsrw);
-    pragma Inline_Always (vec_vsrh);
-    pragma Inline_Always (vec_vsrb);
-    pragma Inline_Always (vec_sra);
-    pragma Inline_Always (vec_vsraw);
-    pragma Inline_Always (vec_vsrah);
-    pragma Inline_Always (vec_vsrab);
-    pragma Inline_Always (vec_srl);
-    pragma Inline_Always (vec_sro);
-    pragma Inline_Always (vec_st);
-    pragma Inline_Always (vec_ste);
-    pragma Inline_Always (vec_stvewx);
-    pragma Inline_Always (vec_stvehx);
-    pragma Inline_Always (vec_stvebx);
-    pragma Inline_Always (vec_stl);
-    pragma Inline_Always (vec_sub);
-    pragma Inline_Always (vec_vsubfp);
-    pragma Inline_Always (vec_vsubuwm);
-    pragma Inline_Always (vec_vsubuhm);
-    pragma Inline_Always (vec_vsububm);
-    pragma Inline_Always (vec_subc);
-    pragma Inline_Always (vec_subs);
-    pragma Inline_Always (vec_vsubsws);
-    pragma Inline_Always (vec_vsubuws);
-    pragma Inline_Always (vec_vsubshs);
-    pragma Inline_Always (vec_vsubuhs);
-    pragma Inline_Always (vec_vsubsbs);
-    pragma Inline_Always (vec_vsububs);
-    pragma Inline_Always (vec_sum4s);
-    pragma Inline_Always (vec_vsum4shs);
-    pragma Inline_Always (vec_vsum4sbs);
-    pragma Inline_Always (vec_vsum4ubs);
-    pragma Inline_Always (vec_sum2s);
-    pragma Inline_Always (vec_sums);
-    pragma Inline_Always (vec_trunc);
-    pragma Inline_Always (vec_unpackh);
-    pragma Inline_Always (vec_vupkhsh);
-    pragma Inline_Always (vec_vupkhpx);
-    pragma Inline_Always (vec_vupkhsb);
-    pragma Inline_Always (vec_unpackl);
-    pragma Inline_Always (vec_vupklpx);
-    pragma Inline_Always (vec_vupklsh);
-    pragma Inline_Always (vec_vupklsb);
-    pragma Inline_Always (vec_xor);
- 
-    pragma Inline_Always (vec_all_eq);
-    pragma Inline_Always (vec_all_ge);
-    pragma Inline_Always (vec_all_gt);
-    pragma Inline_Always (vec_all_in);
-    pragma Inline_Always (vec_all_le);
-    pragma Inline_Always (vec_all_lt);
-    pragma Inline_Always (vec_all_nan);
-    pragma Inline_Always (vec_all_ne);
-    pragma Inline_Always (vec_all_nge);
-    pragma Inline_Always (vec_all_ngt);
-    pragma Inline_Always (vec_all_nle);
-    pragma Inline_Always (vec_all_nlt);
-    pragma Inline_Always (vec_all_numeric);
-    pragma Inline_Always (vec_any_eq);
-    pragma Inline_Always (vec_any_ge);
-    pragma Inline_Always (vec_any_gt);
-    pragma Inline_Always (vec_any_le);
-    pragma Inline_Always (vec_any_lt);
-    pragma Inline_Always (vec_any_nan);
-    pragma Inline_Always (vec_any_ne);
-    pragma Inline_Always (vec_any_nge);
-    pragma Inline_Always (vec_any_ngt);
-    pragma Inline_Always (vec_any_nle);
-    pragma Inline_Always (vec_any_nlt);
-    pragma Inline_Always (vec_any_numeric);
-    pragma Inline_Always (vec_any_out);
-    pragma Inline_Always (vec_step);
- 
- end GNAT.Altivec.Vector_Operations;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-alvety.ads gcc-8.1.0/gcc/ada/g-alvety.ads
*** gcc-7.3.0/gcc/ada/g-alvety.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/g-alvety.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,150 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --            G N A T . A L T I V E C . V E C T O R _ T Y P E S             --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2004-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- --
- -- 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 unit exposes the various vector types part of the Ada binding to
- --  Altivec facilities.
- 
- with GNAT.Altivec.Low_Level_Vectors;
- 
- package GNAT.Altivec.Vector_Types is
- 
-    use GNAT.Altivec.Low_Level_Vectors;
- 
-    ---------------------------------------------------
-    -- Vector type declarations [PIM-2.1 Data Types] --
-    ---------------------------------------------------
- 
-    --  Except for assignments and pointer creation/dereference, operations
-    --  on vectors are only performed via subprograms. The vector types are
-    --  then private, and non-limited since assignments are allowed.
- 
-    --  The Hard/Soft binding type-structure differentiation is achieved in
-    --  Low_Level_Vectors. Each version only exposes private vector types, that
-    --  we just sub-type here. This is fine from the design standpoint and
-    --  reduces the amount of explicit conversion required in various places
-    --  internally.
- 
-    subtype vector_unsigned_char is Low_Level_Vectors.LL_VUC;
-    subtype vector_signed_char is Low_Level_Vectors.LL_VSC;
-    subtype vector_bool_char is Low_Level_Vectors.LL_VBC;
- 
-    subtype vector_unsigned_short is Low_Level_Vectors.LL_VUS;
-    subtype vector_signed_short is Low_Level_Vectors.LL_VSS;
-    subtype vector_bool_short is Low_Level_Vectors.LL_VBS;
- 
-    subtype vector_unsigned_int is Low_Level_Vectors.LL_VUI;
-    subtype vector_signed_int is Low_Level_Vectors.LL_VSI;
-    subtype vector_bool_int is Low_Level_Vectors.LL_VBI;
- 
-    subtype vector_float is Low_Level_Vectors.LL_VF;
-    subtype vector_pixel is Low_Level_Vectors.LL_VP;
- 
-    --  [PIM-2.1] shows groups of declarations with exact same component types,
-    --  e.g. vector unsigned short together with vector unsigned short int. It
-    --  so appears tempting to define subtypes for those matches here.
-    --
-    --  [PIM-2.1] does not qualify items in those groups as "the same types",
-    --  though, and [PIM-2.4.2 Assignments] reads: "if either the left hand
-    --  side or the right hand side of an expression has a vector type, then
-    --  both sides of the expression must be of the same vector type".
-    --
-    --  Not so clear what is exactly right, then. We go with subtypes for now
-    --  and can adjust later if need be.
- 
-    subtype vector_unsigned_short_int is vector_unsigned_short;
-    subtype vector_signed_short_int is vector_signed_short;
- 
-    subtype vector_char is vector_signed_char;
-    subtype vector_short is vector_signed_short;
-    subtype vector_int is vector_signed_int;
- 
-    --------------------------------
-    -- Corresponding access types --
-    --------------------------------
- 
-    type vector_unsigned_char_ptr is access all vector_unsigned_char;
-    type vector_signed_char_ptr is access all vector_signed_char;
-    type vector_bool_char_ptr is access all vector_bool_char;
- 
-    type vector_unsigned_short_ptr is access all vector_unsigned_short;
-    type vector_signed_short_ptr is access all vector_signed_short;
-    type vector_bool_short_ptr is access all vector_bool_short;
- 
-    type vector_unsigned_int_ptr is access all vector_unsigned_int;
-    type vector_signed_int_ptr is access all vector_signed_int;
-    type vector_bool_int_ptr is access all vector_bool_int;
- 
-    type vector_float_ptr is access all vector_float;
-    type vector_pixel_ptr is access all vector_pixel;
- 
-    --------------------------------------------------------------------
-    -- Additional access types, for the sake of some argument passing --
-    --------------------------------------------------------------------
- 
-    --  ... because some of the operations expect pointers to possibly
-    --  constant objects.
- 
-    type const_vector_bool_char_ptr     is access constant vector_bool_char;
-    type const_vector_signed_char_ptr   is access constant vector_signed_char;
-    type const_vector_unsigned_char_ptr is access constant vector_unsigned_char;
- 
-    type const_vector_bool_short_ptr     is access constant vector_bool_short;
-    type const_vector_signed_short_ptr   is access constant vector_signed_short;
-    type const_vector_unsigned_short_ptr is access
-      constant vector_unsigned_short;
- 
-    type const_vector_bool_int_ptr     is access constant vector_bool_int;
-    type const_vector_signed_int_ptr   is access constant vector_signed_int;
-    type const_vector_unsigned_int_ptr is access constant vector_unsigned_int;
- 
-    type const_vector_float_ptr is access constant vector_float;
-    type const_vector_pixel_ptr is access constant vector_pixel;
- 
-    ----------------------
-    -- Useful shortcuts --
-    ----------------------
- 
-    subtype VUC is vector_unsigned_char;
-    subtype VSC is vector_signed_char;
-    subtype VBC is vector_bool_char;
- 
-    subtype VUS is vector_unsigned_short;
-    subtype VSS is vector_signed_short;
-    subtype VBS is vector_bool_short;
- 
-    subtype VUI is vector_unsigned_int;
-    subtype VSI is vector_signed_int;
-    subtype VBI is vector_bool_int;
- 
-    subtype VP is vector_pixel;
-    subtype VF is vector_float;
- 
- end GNAT.Altivec.Vector_Types;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-alvevi.ads gcc-8.1.0/gcc/ada/g-alvevi.ads
*** gcc-7.3.0/gcc/ada/g-alvevi.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/g-alvevi.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,156 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --            G N A T . A L T I V E C . V E C T O R _ V I E W S             --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --         Copyright (C) 2005-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- --
- -- 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 unit provides public 'View' data types from/to which private vector
- --  representations can be converted via Altivec.Conversions. This allows
- --  convenient access to individual vector elements and provides a simple way
- --  to initialize vector objects.
- 
- --  Accessing vector contents with direct memory overlays should be avoided
- --  because actual vector representations may vary across configurations, for
- --  instance to accommodate different target endianness.
- 
- --  The natural representation of a vector is an array indexed by vector
- --  component number, which is materialized by the Varray type definitions
- --  below. The 16byte alignment constraint is unfortunately sometimes not
- --  properly honored for constant array aggregates, so the View types are
- --  actually records enclosing such arrays.
- 
- package GNAT.Altivec.Vector_Views is
- 
-    ---------------------
-    -- char components --
-    ---------------------
- 
-    type Vchar_Range is range 1 .. 16;
- 
-    type Varray_unsigned_char is array (Vchar_Range) of unsigned_char;
-    for Varray_unsigned_char'Alignment use VECTOR_ALIGNMENT;
- 
-    type VUC_View is record
-       Values : Varray_unsigned_char;
-    end record;
- 
-    type Varray_signed_char is array (Vchar_Range) of signed_char;
-    for Varray_signed_char'Alignment use VECTOR_ALIGNMENT;
- 
-    type VSC_View is record
-       Values : Varray_signed_char;
-    end record;
- 
-    type Varray_bool_char is array (Vchar_Range) of bool_char;
-    for Varray_bool_char'Alignment use VECTOR_ALIGNMENT;
- 
-    type VBC_View is record
-       Values : Varray_bool_char;
-    end record;
- 
-    ----------------------
-    -- short components --
-    ----------------------
- 
-    type Vshort_Range is range 1 .. 8;
- 
-    type Varray_unsigned_short is array (Vshort_Range) of unsigned_short;
-    for Varray_unsigned_short'Alignment use VECTOR_ALIGNMENT;
- 
-    type VUS_View is record
-       Values : Varray_unsigned_short;
-    end record;
- 
-    type Varray_signed_short is array (Vshort_Range) of signed_short;
-    for Varray_signed_short'Alignment use VECTOR_ALIGNMENT;
- 
-    type VSS_View is record
-       Values : Varray_signed_short;
-    end record;
- 
-    type Varray_bool_short is array (Vshort_Range) of bool_short;
-    for Varray_bool_short'Alignment use VECTOR_ALIGNMENT;
- 
-    type VBS_View is record
-       Values : Varray_bool_short;
-    end record;
- 
-    --------------------
-    -- int components --
-    --------------------
- 
-    type Vint_Range is range 1 .. 4;
- 
-    type Varray_unsigned_int is array (Vint_Range) of unsigned_int;
-    for Varray_unsigned_int'Alignment use VECTOR_ALIGNMENT;
- 
-    type VUI_View is record
-       Values : Varray_unsigned_int;
-    end record;
- 
-    type Varray_signed_int is array (Vint_Range) of signed_int;
-    for Varray_signed_int'Alignment use VECTOR_ALIGNMENT;
- 
-    type VSI_View is record
-       Values : Varray_signed_int;
-    end record;
- 
-    type Varray_bool_int is array (Vint_Range) of bool_int;
-    for Varray_bool_int'Alignment use VECTOR_ALIGNMENT;
- 
-    type VBI_View is record
-       Values : Varray_bool_int;
-    end record;
- 
-    ----------------------
-    -- float components --
-    ----------------------
- 
-    type Vfloat_Range is range 1 .. 4;
- 
-    type Varray_float is array (Vfloat_Range) of C_float;
-    for Varray_float'Alignment use VECTOR_ALIGNMENT;
- 
-    type VF_View is record
-       Values : Varray_float;
-    end record;
- 
-    ----------------------
-    -- pixel components --
-    ----------------------
- 
-    type Vpixel_Range is range 1 .. 8;
- 
-    type Varray_pixel is array (Vpixel_Range) of pixel;
-    for Varray_pixel'Alignment use VECTOR_ALIGNMENT;
- 
-    type VP_View is record
-       Values : Varray_pixel;
-    end record;
- 
- end GNAT.Altivec.Vector_Views;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-arrspl.adb gcc-8.1.0/gcc/ada/g-arrspl.adb
*** gcc-7.3.0/gcc/ada/g-arrspl.adb	Fri Jan 13 10:19:19 2017
--- gcc-8.1.0/gcc/ada/g-arrspl.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,352 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                     G N A T . A R R A Y _ S P L I T                      --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2002-2016, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Unchecked_Deallocation;
- 
- package body GNAT.Array_Split is
- 
-    procedure Free is
-       new Ada.Unchecked_Deallocation (Slices_Indexes, Slices_Access);
- 
-    procedure Free is
-       new Ada.Unchecked_Deallocation (Separators_Indexes, Indexes_Access);
- 
-    function Count
-      (Source  : Element_Sequence;
-       Pattern : Element_Set) return Natural;
-    --  Returns the number of occurrences of Pattern elements in Source, 0 is
-    --  returned if no occurrence is found in Source.
- 
-    ------------
-    -- Adjust --
-    ------------
- 
-    procedure Adjust (S : in out Slice_Set) is
-    begin
-       S.D.Ref_Counter := S.D.Ref_Counter + 1;
-    end Adjust;
- 
-    ------------
-    -- Create --
-    ------------
- 
-    procedure Create
-      (S          : out Slice_Set;
-       From       : Element_Sequence;
-       Separators : Element_Sequence;
-       Mode       : Separator_Mode := Single)
-    is
-    begin
-       Create (S, From, To_Set (Separators), Mode);
-    end Create;
- 
-    ------------
-    -- Create --
-    ------------
- 
-    procedure Create
-      (S          : out Slice_Set;
-       From       : Element_Sequence;
-       Separators : Element_Set;
-       Mode       : Separator_Mode := Single)
-    is
-       Result : Slice_Set;
-    begin
-       Result.D.Source := new Element_Sequence'(From);
-       Set (Result, Separators, Mode);
-       S := Result;
-    end Create;
- 
-    -----------
-    -- Count --
-    -----------
- 
-    function Count
-      (Source  : Element_Sequence;
-       Pattern : Element_Set) return Natural
-    is
-       C : Natural := 0;
-    begin
-       for K in Source'Range loop
-          if Is_In (Source (K), Pattern) then
-             C := C + 1;
-          end if;
-       end loop;
- 
-       return C;
-    end Count;
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    procedure Finalize (S : in out Slice_Set) is
- 
-       procedure Free is
-          new Ada.Unchecked_Deallocation (Element_Sequence, Element_Access);
- 
-       procedure Free is
-          new Ada.Unchecked_Deallocation (Data, Data_Access);
- 
-       D : Data_Access := S.D;
- 
-    begin
-       --  Ensure call is idempotent
- 
-       S.D := null;
- 
-       if D /= null then
-          D.Ref_Counter := D.Ref_Counter - 1;
- 
-          if D.Ref_Counter = 0 then
-             Free (D.Source);
-             Free (D.Indexes);
-             Free (D.Slices);
-             Free (D);
-          end if;
-       end if;
-    end Finalize;
- 
-    ----------------
-    -- Initialize --
-    ----------------
- 
-    procedure Initialize (S : in out Slice_Set) is
-    begin
-       S.D := new Data'(1, null, 0, null, null);
-    end Initialize;
- 
-    ----------------
-    -- Separators --
-    ----------------
- 
-    function Separators
-      (S     : Slice_Set;
-       Index : Slice_Number) return Slice_Separators
-    is
-    begin
-       if Index > S.D.N_Slice then
-          raise Index_Error;
- 
-       elsif Index = 0
-         or else (Index = 1 and then S.D.N_Slice = 1)
-       then
-          --  Whole string, or no separator used
- 
-          return (Before => Array_End,
-                  After  => Array_End);
- 
-       elsif Index = 1 then
-          return (Before => Array_End,
-                  After  => S.D.Source (S.D.Slices (Index).Stop + 1));
- 
-       elsif Index = S.D.N_Slice then
-          return (Before => S.D.Source (S.D.Slices (Index).Start - 1),
-                  After  => Array_End);
- 
-       else
-          return (Before => S.D.Source (S.D.Slices (Index).Start - 1),
-                  After  => S.D.Source (S.D.Slices (Index).Stop + 1));
-       end if;
-    end Separators;
- 
-    ----------------
-    -- Separators --
-    ----------------
- 
-    function Separators (S : Slice_Set) return Separators_Indexes is
-    begin
-       return S.D.Indexes.all;
-    end Separators;
- 
-    ---------
-    -- Set --
-    ---------
- 
-    procedure Set
-      (S          : in out Slice_Set;
-       Separators : Element_Sequence;
-       Mode       : Separator_Mode := Single)
-    is
-    begin
-       Set (S, To_Set (Separators), Mode);
-    end Set;
- 
-    ---------
-    -- Set --
-    ---------
- 
-    procedure Set
-      (S          : in out Slice_Set;
-       Separators : Element_Set;
-       Mode       : Separator_Mode := Single)
-    is
- 
-       procedure Copy_On_Write (S : in out Slice_Set);
-       --  Make a copy of S if shared with another variable
- 
-       -------------------
-       -- Copy_On_Write --
-       -------------------
- 
-       procedure Copy_On_Write (S : in out Slice_Set) is
-       begin
-          if S.D.Ref_Counter > 1 then
-             --  First let's remove our count from the current data
- 
-             S.D.Ref_Counter := S.D.Ref_Counter - 1;
- 
-             --  Then duplicate the data
- 
-             S.D := new Data'(S.D.all);
-             S.D.Ref_Counter := 1;
- 
-             if S.D.Source /= null then
-                S.D.Source := new Element_Sequence'(S.D.Source.all);
-                S.D.Indexes := null;
-                S.D.Slices := null;
-             end if;
- 
-          else
-             --  If there is a single reference to this variable, free it now
-             --  as it will be redefined below.
- 
-             Free (S.D.Indexes);
-             Free (S.D.Slices);
-          end if;
-       end Copy_On_Write;
- 
-       Count_Sep : constant Natural := Count (S.D.Source.all, Separators);
-       J         : Positive;
- 
-    begin
-       Copy_On_Write (S);
- 
-       --  Compute all separator's indexes
- 
-       S.D.Indexes := new Separators_Indexes (1 .. Count_Sep);
-       J := S.D.Indexes'First;
- 
-       for K in S.D.Source'Range loop
-          if Is_In (S.D.Source (K), Separators) then
-             S.D.Indexes (J) := K;
-             J := J + 1;
-          end if;
-       end loop;
- 
-       --  Compute slice info for fast slice access
- 
-       declare
-          S_Info      : Slices_Indexes (1 .. Slice_Number (Count_Sep) + 1);
-          K           : Natural := 1;
-          Start, Stop : Natural;
- 
-       begin
-          S.D.N_Slice := 0;
- 
-          Start := S.D.Source'First;
-          Stop  := 0;
- 
-          loop
-             if K > Count_Sep then
- 
-                --  No more separators, last slice ends at end of source string
- 
-                Stop := S.D.Source'Last;
- 
-             else
-                Stop := S.D.Indexes (K) - 1;
-             end if;
- 
-             --  Add slice to the table
- 
-             S.D.N_Slice := S.D.N_Slice + 1;
-             S_Info (S.D.N_Slice) := (Start, Stop);
- 
-             exit when K > Count_Sep;
- 
-             case Mode is
-                when Single =>
- 
-                   --  In this mode just set start to character next to the
-                   --  current separator, advance the separator index.
- 
-                   Start := S.D.Indexes (K) + 1;
-                   K := K + 1;
- 
-                when Multiple =>
- 
-                   --  In this mode skip separators following each other
- 
-                   loop
-                      Start := S.D.Indexes (K) + 1;
-                      K := K + 1;
-                      exit when K > Count_Sep
-                        or else S.D.Indexes (K) > S.D.Indexes (K - 1) + 1;
-                   end loop;
-             end case;
-          end loop;
- 
-          S.D.Slices := new Slices_Indexes'(S_Info (1 .. S.D.N_Slice));
-       end;
-    end Set;
- 
-    -----------
-    -- Slice --
-    -----------
- 
-    function Slice
-      (S     : Slice_Set;
-       Index : Slice_Number) return Element_Sequence
-    is
-    begin
-       if Index = 0 then
-          return S.D.Source.all;
- 
-       elsif Index > S.D.N_Slice then
-          raise Index_Error;
- 
-       else
-          return
-            S.D.Source (S.D.Slices (Index).Start .. S.D.Slices (Index).Stop);
-       end if;
-    end Slice;
- 
-    -----------------
-    -- Slice_Count --
-    -----------------
- 
-    function Slice_Count (S : Slice_Set) return Slice_Number is
-    begin
-       return S.D.N_Slice;
-    end Slice_Count;
- 
- end GNAT.Array_Split;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-arrspl.ads gcc-8.1.0/gcc/ada/g-arrspl.ads
*** gcc-7.3.0/gcc/ada/g-arrspl.ads	Mon Oct 26 13:14:49 2015
--- gcc-8.1.0/gcc/ada/g-arrspl.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,190 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                     G N A T . A R R A Y _ S P L I T                      --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2002-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Useful array-manipulation routines: given a set of separators, split
- --  an array wherever the separators appear, and provide direct access
- --  to the resulting slices.
- 
- with Ada.Finalization;
- 
- generic
-    type Element is (<>);
-    --  Element of the array, this must be a discrete type
- 
-    type Element_Sequence is array (Positive range <>) of Element;
-    --  The array which is a sequence of element
- 
-    type Element_Set is private;
-    --  This type represent a set of elements. This set does not define a
-    --  specific order of the elements. The conversion of a sequence to a
-    --  set and membership tests in the set is performed using the routines
-    --  To_Set and Is_In defined below.
- 
-    with function To_Set (Sequence : Element_Sequence) return Element_Set;
-    --  Returns an Element_Set given an Element_Sequence. Duplicate elements
-    --  can be ignored during this conversion.
- 
-    with function Is_In (Item : Element; Set : Element_Set) return Boolean;
-    --  Returns True if Item is found in Set, False otherwise
- 
- package GNAT.Array_Split is
- 
-    Index_Error : exception;
-    --  Raised by all operations below if Index > Field_Count (S)
- 
-    type Separator_Mode is
-      (Single,
-       --  In this mode the array is cut at each element in the separator
-       --  set. If two separators are contiguous the result at that position
-       --  is an empty slice.
- 
-       Multiple
-       --  In this mode contiguous separators are handled as a single
-       --  separator and no empty slice is created.
-      );
- 
-    type Slice_Set is private;
-    --  This type uses by-reference semantics. This is a set of slices as
-    --  returned by Create or Set routines below. The abstraction represents
-    --  a set of items. Each item is a part of the original array named a
-    --  Slice. It is possible to access individual slices by using the Slice
-    --  routine below. The first slice in the Set is at the position/index
-    --  1. The total number of slices in the set is returned by Slice_Count.
- 
-    procedure Create
-      (S          : out Slice_Set;
-       From       : Element_Sequence;
-       Separators : Element_Sequence;
-       Mode       : Separator_Mode := Single);
-    --  Create a cut array object. From is the source array, and Separators
-    --  is a sequence of Element along which to split the array. The source
-    --  array is sliced at separator boundaries. The separators are not
-    --  included as part of the resulting slices.
-    --
-    --  Note that if From is terminated by a separator an extra empty element
-    --  is added to the slice set. If From only contains a separator the slice
-    --  set contains two empty elements.
- 
-    procedure Create
-      (S          : out Slice_Set;
-       From       : Element_Sequence;
-       Separators : Element_Set;
-       Mode       : Separator_Mode := Single);
-    --  Same as above but using a Element_Set
- 
-    procedure Set
-      (S          : in out Slice_Set;
-       Separators : Element_Sequence;
-       Mode       : Separator_Mode := Single);
-    --  Change the set of separators. The source array will be split according
-    --  to this new set of separators.
- 
-    procedure Set
-      (S          : in out Slice_Set;
-       Separators : Element_Set;
-       Mode       : Separator_Mode := Single);
-    --  Same as above but using a Element_Set
- 
-    type Slice_Number is new Natural;
-    --  Type used to count number of slices
- 
-    function Slice_Count (S : Slice_Set) return Slice_Number;
-    pragma Inline (Slice_Count);
-    --  Returns the number of slices (fields) in S
- 
-    function Slice
-      (S     : Slice_Set;
-       Index : Slice_Number) return Element_Sequence;
-    pragma Inline (Slice);
-    --  Returns the slice at position Index. First slice is 1. If Index is 0
-    --  the whole array is returned including the separators (this is the
-    --  original source array).
- 
-    type Position is (Before, After);
-    --  Used to designate position of separator
- 
-    type Slice_Separators is array (Position) of Element;
-    --  Separators found before and after the slice
- 
-    Array_End : constant Element;
-    --  This is the separator returned for the start or the end of the array
- 
-    function Separators
-      (S     : Slice_Set;
-       Index : Slice_Number) return Slice_Separators;
-    --  Returns the separators used to slice (front and back) the slice at
-    --  position Index. For slices at start and end of the original array, the
-    --  Array_End value is returned for the corresponding outer bound. In
-    --  Multiple mode only the element closest to the slice is returned.
-    --  if Index = 0, returns (Array_End, Array_End).
- 
-    type Separators_Indexes is array (Positive range <>) of Positive;
- 
-    function Separators (S : Slice_Set) return Separators_Indexes;
-    --  Returns indexes of all separators used to slice original source array S
- 
- private
- 
-    Array_End : constant Element := Element'First;
- 
-    type Element_Access is access Element_Sequence;
- 
-    type Indexes_Access is access Separators_Indexes;
- 
-    type Slice_Info is record
-       Start : Positive;
-       Stop  : Natural;
-    end record;
-    --  Starting/Ending position of a slice. This does not include separators
- 
-    type Slices_Indexes is array (Slice_Number range <>) of Slice_Info;
-    type Slices_Access is access Slices_Indexes;
-    --  All indexes for fast access to slices. In the Slice_Set we keep only
-    --  the original array and the indexes where each slice start and stop.
- 
-    type Data is record
-       Ref_Counter : Natural;            -- Reference counter, by-address sem
-       Source      : Element_Access;
-       N_Slice     : Slice_Number := 0;  -- Number of slices found
-       Indexes     : Indexes_Access;
-       Slices      : Slices_Access;
-    end record;
-    type Data_Access is access all Data;
- 
-    type Slice_Set is new Ada.Finalization.Controlled with record
-       D : Data_Access;
-    end record;
- 
-    procedure Initialize (S : in out Slice_Set);
-    procedure Adjust     (S : in out Slice_Set);
-    procedure Finalize   (S : in out Slice_Set);
- 
- end GNAT.Array_Split;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-awk.adb gcc-8.1.0/gcc/ada/g-awk.adb
*** gcc-7.3.0/gcc/ada/g-awk.adb	Fri Jan 13 10:19:19 2017
--- gcc-8.1.0/gcc/ada/g-awk.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,1488 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                              G N A T . A W K                             --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 2000-2016, AdaCore                     --
- --                                                                          --
- -- GNAT is 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.Exceptions;
- with Ada.Text_IO;
- with Ada.Strings.Unbounded;
- with Ada.Strings.Fixed;
- with Ada.Strings.Maps;
- with Ada.Unchecked_Deallocation;
- 
- with GNAT.Directory_Operations;
- with GNAT.Dynamic_Tables;
- with GNAT.OS_Lib;
- 
- package body GNAT.AWK is
- 
-    use Ada;
-    use Ada.Strings.Unbounded;
- 
-    -----------------------
-    -- Local subprograms --
-    -----------------------
- 
-    --  The following two subprograms provide a functional interface to the
-    --  two special session variables, that are manipulated explicitly by
-    --  Finalize, but must be declared after Finalize to prevent static
-    --  elaboration warnings.
- 
-    function Get_Def return Session_Data_Access;
-    procedure Set_Cur;
- 
-    ----------------
-    -- Split mode --
-    ----------------
- 
-    package Split is
- 
-       type Mode is abstract tagged null record;
-       --  This is the main type which is declared abstract. This type must be
-       --  derived for each split style.
- 
-       type Mode_Access is access Mode'Class;
- 
-       procedure Current_Line (S : Mode; Session : Session_Type)
-         is abstract;
-       --  Split current line of Session using split mode S
- 
-       ------------------------
-       -- Split on separator --
-       ------------------------
- 
-       type Separator (Size : Positive) is new Mode with record
-          Separators : String (1 .. Size);
-       end record;
- 
-       procedure Current_Line
-         (S       : Separator;
-          Session : Session_Type);
- 
-       ---------------------
-       -- Split on column --
-       ---------------------
- 
-       type Column (Size : Positive) is new Mode with record
-          Columns : Widths_Set (1 .. Size);
-       end record;
- 
-       procedure Current_Line (S : Column; Session : Session_Type);
- 
-    end Split;
- 
-    procedure Free is new Unchecked_Deallocation
-      (Split.Mode'Class, Split.Mode_Access);
- 
-    ----------------
-    -- File_Table --
-    ----------------
- 
-    type AWK_File is access String;
- 
-    package File_Table is
-       new Dynamic_Tables (AWK_File, Natural, 1, 5, 50);
-    --  List of file names associated with a Session
- 
-    procedure Free is new Unchecked_Deallocation (String, AWK_File);
- 
-    -----------------
-    -- Field_Table --
-    -----------------
- 
-    type Field_Slice is record
-       First : Positive;
-       Last  : Natural;
-    end record;
-    --  This is a field slice (First .. Last) in session's current line
- 
-    package Field_Table is
-       new Dynamic_Tables (Field_Slice, Natural, 1, 10, 100);
-    --  List of fields for the current line
- 
-    --------------
-    -- Patterns --
-    --------------
- 
-    --  Define all patterns style: exact string, regular expression, boolean
-    --  function.
- 
-    package Patterns is
- 
-       type Pattern is abstract tagged null record;
-       --  This is the main type which is declared abstract. This type must be
-       --  derived for each patterns style.
- 
-       type Pattern_Access is access Pattern'Class;
- 
-       function Match
-         (P       : Pattern;
-          Session : Session_Type) return Boolean
-       is abstract;
-       --  Returns True if P match for the current session and False otherwise
- 
-       procedure Release (P : in out Pattern);
-       --  Release memory used by the pattern structure
- 
-       --------------------------
-       -- Exact string pattern --
-       --------------------------
- 
-       type String_Pattern is new Pattern with record
-          Str  : Unbounded_String;
-          Rank : Count;
-       end record;
- 
-       function Match
-         (P       : String_Pattern;
-          Session : Session_Type) return Boolean;
- 
-       --------------------------------
-       -- Regular expression pattern --
-       --------------------------------
- 
-       type Pattern_Matcher_Access is access Regpat.Pattern_Matcher;
- 
-       type Regexp_Pattern is new Pattern with record
-          Regx : Pattern_Matcher_Access;
-          Rank : Count;
-       end record;
- 
-       function Match
-         (P       : Regexp_Pattern;
-          Session : Session_Type) return Boolean;
- 
-       procedure Release (P : in out Regexp_Pattern);
- 
-       ------------------------------
-       -- Boolean function pattern --
-       ------------------------------
- 
-       type Callback_Pattern is new Pattern with record
-          Pattern : Pattern_Callback;
-       end record;
- 
-       function Match
-         (P       : Callback_Pattern;
-          Session : Session_Type) return Boolean;
- 
-    end Patterns;
- 
-    procedure Free is new Unchecked_Deallocation
-      (Patterns.Pattern'Class, Patterns.Pattern_Access);
- 
-    -------------
-    -- Actions --
-    -------------
- 
-    --  Define all action style : simple call, call with matches
- 
-    package Actions is
- 
-       type Action is abstract tagged null record;
-       --  This is the main type which is declared abstract. This type must be
-       --  derived for each action style.
- 
-       type Action_Access is access Action'Class;
- 
-       procedure Call
-         (A       : Action;
-          Session : Session_Type) is abstract;
-       --  Call action A as required
- 
-       -------------------
-       -- Simple action --
-       -------------------
- 
-       type Simple_Action is new Action with record
-          Proc : Action_Callback;
-       end record;
- 
-       procedure Call
-         (A       : Simple_Action;
-          Session : Session_Type);
- 
-       -------------------------
-       -- Action with matches --
-       -------------------------
- 
-       type Match_Action is new Action with record
-          Proc : Match_Action_Callback;
-       end record;
- 
-       procedure Call
-         (A       : Match_Action;
-          Session : Session_Type);
- 
-    end Actions;
- 
-    procedure Free is new Unchecked_Deallocation
-      (Actions.Action'Class, Actions.Action_Access);
- 
-    --------------------------
-    -- Pattern/Action table --
-    --------------------------
- 
-    type Pattern_Action is record
-       Pattern : Patterns.Pattern_Access;  -- If Pattern is True
-       Action  : Actions.Action_Access;    -- Action will be called
-    end record;
- 
-    package Pattern_Action_Table is
-       new Dynamic_Tables (Pattern_Action, Natural, 1, 5, 50);
- 
-    ------------------
-    -- Session Data --
-    ------------------
- 
-    type Session_Data is record
-       Current_File : Text_IO.File_Type;
-       Current_Line : Unbounded_String;
-       Separators   : Split.Mode_Access;
-       Files        : File_Table.Instance;
-       File_Index   : Natural := 0;
-       Fields       : Field_Table.Instance;
-       Filters      : Pattern_Action_Table.Instance;
-       NR           : Natural := 0;
-       FNR          : Natural := 0;
-       Matches      : Regpat.Match_Array (0 .. 100);
-       --  Latest matches for the regexp pattern
-    end record;
- 
-    procedure Free is
-       new Unchecked_Deallocation (Session_Data, Session_Data_Access);
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    procedure Finalize (Session : in out Session_Type) is
-    begin
-       --  We release the session data only if it is not the default session
- 
-       if Session.Data /= Get_Def then
-          --  Release separators
- 
-          Free (Session.Data.Separators);
- 
-          Free (Session.Data);
- 
-          --  Since we have closed the current session, set it to point now to
-          --  the default session.
- 
-          Set_Cur;
-       end if;
-    end Finalize;
- 
-    ----------------
-    -- Initialize --
-    ----------------
- 
-    procedure Initialize (Session : in out Session_Type) is
-    begin
-       Session.Data := new Session_Data;
- 
-       --  Initialize separators
- 
-       Session.Data.Separators :=
-         new Split.Separator'(Default_Separators'Length, Default_Separators);
- 
-       --  Initialize all tables
- 
-       File_Table.Init  (Session.Data.Files);
-       Field_Table.Init (Session.Data.Fields);
-       Pattern_Action_Table.Init (Session.Data.Filters);
-    end Initialize;
- 
-    -----------------------
-    -- Session Variables --
-    -----------------------
- 
-    Def_Session : Session_Type;
-    Cur_Session : Session_Type;
- 
-    ----------------------
-    -- Private Services --
-    ----------------------
- 
-    function Always_True return Boolean;
-    --  A function that always returns True
- 
-    function Apply_Filters
-      (Session : Session_Type) return Boolean;
-    --  Apply any filters for which the Pattern is True for Session. It returns
-    --  True if a least one filters has been applied (i.e. associated action
-    --  callback has been called).
- 
-    procedure Open_Next_File
-      (Session : Session_Type);
-    pragma Inline (Open_Next_File);
-    --  Open next file for Session closing current file if needed. It raises
-    --  End_Error if there is no more file in the table.
- 
-    procedure Raise_With_Info
-      (E       : Exceptions.Exception_Id;
-       Message : String;
-       Session : Session_Type);
-    pragma No_Return (Raise_With_Info);
-    --  Raises exception E with the message prepended with the current line
-    --  number and the filename if possible.
- 
-    procedure Read_Line (Session : Session_Type);
-    --  Read a line for the Session and set Current_Line
- 
-    procedure Split_Line (Session : Session_Type);
-    --  Split session's Current_Line according to the session separators and
-    --  set the Fields table. This procedure can be called at any time.
- 
-    ----------------------
-    -- Private Packages --
-    ----------------------
- 
-    -------------
-    -- Actions --
-    -------------
- 
-    package body Actions is
- 
-       ----------
-       -- Call --
-       ----------
- 
-       procedure Call
-         (A       : Simple_Action;
-          Session : Session_Type)
-       is
-          pragma Unreferenced (Session);
-       begin
-          A.Proc.all;
-       end Call;
- 
-       ----------
-       -- Call --
-       ----------
- 
-       procedure Call
-         (A       : Match_Action;
-          Session : Session_Type)
-       is
-       begin
-          A.Proc (Session.Data.Matches);
-       end Call;
- 
-    end Actions;
- 
-    --------------
-    -- Patterns --
-    --------------
- 
-    package body Patterns is
- 
-       -----------
-       -- Match --
-       -----------
- 
-       function Match
-         (P       : String_Pattern;
-          Session : Session_Type) return Boolean
-       is
-       begin
-          return P.Str = Field (P.Rank, Session);
-       end Match;
- 
-       -----------
-       -- Match --
-       -----------
- 
-       function Match
-         (P       : Regexp_Pattern;
-          Session : Session_Type) return Boolean
-       is
-          use type Regpat.Match_Location;
-       begin
-          Regpat.Match
-            (P.Regx.all, Field (P.Rank, Session), Session.Data.Matches);
-          return Session.Data.Matches (0) /= Regpat.No_Match;
-       end Match;
- 
-       -----------
-       -- Match --
-       -----------
- 
-       function Match
-         (P       : Callback_Pattern;
-          Session : Session_Type) return Boolean
-       is
-          pragma Unreferenced (Session);
-       begin
-          return P.Pattern.all;
-       end Match;
- 
-       -------------
-       -- Release --
-       -------------
- 
-       procedure Release (P : in out Pattern) is
-          pragma Unreferenced (P);
-       begin
-          null;
-       end Release;
- 
-       -------------
-       -- Release --
-       -------------
- 
-       procedure Release (P : in out Regexp_Pattern) is
-          procedure Free is new Unchecked_Deallocation
-            (Regpat.Pattern_Matcher, Pattern_Matcher_Access);
-       begin
-          Free (P.Regx);
-       end Release;
- 
-    end Patterns;
- 
-    -----------
-    -- Split --
-    -----------
- 
-    package body Split is
- 
-       use Ada.Strings;
- 
-       ------------------
-       -- Current_Line --
-       ------------------
- 
-       procedure Current_Line (S : Separator; Session : Session_Type) is
-          Line   : constant String := To_String (Session.Data.Current_Line);
-          Fields : Field_Table.Instance renames Session.Data.Fields;
-          Seps   : constant Maps.Character_Set := Maps.To_Set (S.Separators);
- 
-          Start  : Natural;
-          Stop   : Natural;
- 
-       begin
-          --  First field start here
- 
-          Start := Line'First;
- 
-          --  Record the first field start position which is the first character
-          --  in the line.
- 
-          Field_Table.Increment_Last (Fields);
-          Fields.Table (Field_Table.Last (Fields)).First := Start;
- 
-          loop
-             --  Look for next separator
- 
-             Stop := Fixed.Index
-               (Source => Line (Start .. Line'Last),
-                Set    => Seps);
- 
-             exit when Stop = 0;
- 
-             Fields.Table (Field_Table.Last (Fields)).Last := Stop - 1;
- 
-             --  If separators are set to the default (space and tab) we skip
-             --  all spaces and tabs following current field.
- 
-             if S.Separators = Default_Separators then
-                Start := Fixed.Index
-                  (Line (Stop + 1 .. Line'Last),
-                   Maps.To_Set (Default_Separators),
-                   Outside,
-                   Strings.Forward);
- 
-                if Start = 0 then
-                   Start := Stop + 1;
-                end if;
- 
-             else
-                Start := Stop + 1;
-             end if;
- 
-             --  Record in the field table the start of this new field
- 
-             Field_Table.Increment_Last (Fields);
-             Fields.Table (Field_Table.Last (Fields)).First := Start;
- 
-          end loop;
- 
-          Fields.Table (Field_Table.Last (Fields)).Last := Line'Last;
-       end Current_Line;
- 
-       ------------------
-       -- Current_Line --
-       ------------------
- 
-       procedure Current_Line (S : Column; Session : Session_Type) is
-          Line   : constant String := To_String (Session.Data.Current_Line);
-          Fields : Field_Table.Instance renames Session.Data.Fields;
-          Start  : Positive := Line'First;
- 
-       begin
-          --  Record the first field start position which is the first character
-          --  in the line.
- 
-          for C in 1 .. S.Columns'Length loop
- 
-             Field_Table.Increment_Last (Fields);
- 
-             Fields.Table (Field_Table.Last (Fields)).First := Start;
- 
-             Start := Start + S.Columns (C);
- 
-             Fields.Table (Field_Table.Last (Fields)).Last := Start - 1;
- 
-          end loop;
- 
-          --  If there is some remaining character on the line, add them in a
-          --  new field.
- 
-          if Start - 1 < Line'Length then
- 
-             Field_Table.Increment_Last (Fields);
- 
-             Fields.Table (Field_Table.Last (Fields)).First := Start;
- 
-             Fields.Table (Field_Table.Last (Fields)).Last := Line'Last;
-          end if;
-       end Current_Line;
- 
-    end Split;
- 
-    --------------
-    -- Add_File --
-    --------------
- 
-    procedure Add_File
-      (Filename : String;
-       Session  : Session_Type)
-    is
-       Files : File_Table.Instance renames Session.Data.Files;
- 
-    begin
-       if OS_Lib.Is_Regular_File (Filename) then
-          File_Table.Increment_Last (Files);
-          Files.Table (File_Table.Last (Files)) := new String'(Filename);
-       else
-          Raise_With_Info
-            (File_Error'Identity,
-             "File " & Filename & " not found.",
-             Session);
-       end if;
-    end Add_File;
- 
-    procedure Add_File
-      (Filename : String)
-    is
- 
-    begin
-       Add_File (Filename, Cur_Session);
-    end Add_File;
- 
-    ---------------
-    -- Add_Files --
-    ---------------
- 
-    procedure Add_Files
-      (Directory             : String;
-       Filenames             : String;
-       Number_Of_Files_Added : out Natural;
-       Session               : Session_Type)
-    is
-       use Directory_Operations;
- 
-       Dir      : Dir_Type;
-       Filename : String (1 .. 200);
-       Last     : Natural;
- 
-    begin
-       Number_Of_Files_Added := 0;
- 
-       Open (Dir, Directory);
- 
-       loop
-          Read (Dir, Filename, Last);
-          exit when Last = 0;
- 
-          Add_File (Filename (1 .. Last), Session);
-          Number_Of_Files_Added := Number_Of_Files_Added + 1;
-       end loop;
- 
-       Close (Dir);
- 
-    exception
-       when others =>
-          Raise_With_Info
-            (File_Error'Identity,
-             "Error scanning directory " & Directory
-             & " for files " & Filenames & '.',
-             Session);
-    end Add_Files;
- 
-    procedure Add_Files
-      (Directory             : String;
-       Filenames             : String;
-       Number_Of_Files_Added : out Natural)
-    is
- 
-    begin
-       Add_Files (Directory, Filenames, Number_Of_Files_Added, Cur_Session);
-    end Add_Files;
- 
-    -----------------
-    -- Always_True --
-    -----------------
- 
-    function Always_True return Boolean is
-    begin
-       return True;
-    end Always_True;
- 
-    -------------------
-    -- Apply_Filters --
-    -------------------
- 
-    function Apply_Filters
-      (Session : Session_Type) return Boolean
-    is
-       Filters : Pattern_Action_Table.Instance renames Session.Data.Filters;
-       Results : Boolean := False;
- 
-    begin
-       --  Iterate through the filters table, if pattern match call action
- 
-       for F in 1 .. Pattern_Action_Table.Last (Filters) loop
-          if Patterns.Match (Filters.Table (F).Pattern.all, Session) then
-             Results := True;
-             Actions.Call (Filters.Table (F).Action.all, Session);
-          end if;
-       end loop;
- 
-       return Results;
-    end Apply_Filters;
- 
-    -----------
-    -- Close --
-    -----------
- 
-    procedure Close (Session : Session_Type) is
-       Filters : Pattern_Action_Table.Instance renames Session.Data.Filters;
-       Files   : File_Table.Instance renames Session.Data.Files;
- 
-    begin
-       --  Close current file if needed
- 
-       if Text_IO.Is_Open (Session.Data.Current_File) then
-          Text_IO.Close (Session.Data.Current_File);
-       end if;
- 
-       --  Release Filters table
- 
-       for F in 1 .. Pattern_Action_Table.Last (Filters) loop
-          Patterns.Release (Filters.Table (F).Pattern.all);
-          Free (Filters.Table (F).Pattern);
-          Free (Filters.Table (F).Action);
-       end loop;
- 
-       for F in 1 .. File_Table.Last (Files) loop
-          Free (Files.Table (F));
-       end loop;
- 
-       File_Table.Set_Last (Session.Data.Files, 0);
-       Field_Table.Set_Last (Session.Data.Fields, 0);
-       Pattern_Action_Table.Set_Last (Session.Data.Filters, 0);
- 
-       Session.Data.NR := 0;
-       Session.Data.FNR := 0;
-       Session.Data.File_Index := 0;
-       Session.Data.Current_Line := Null_Unbounded_String;
-    end Close;
- 
-    ---------------------
-    -- Current_Session --
-    ---------------------
- 
-    function Current_Session return not null access Session_Type is
-    begin
-       return Cur_Session.Self;
-    end Current_Session;
- 
-    ---------------------
-    -- Default_Session --
-    ---------------------
- 
-    function Default_Session return not null access Session_Type is
-    begin
-       return Def_Session.Self;
-    end Default_Session;
- 
-    --------------------
-    -- Discrete_Field --
-    --------------------
- 
-    function Discrete_Field
-      (Rank    : Count;
-       Session : Session_Type) return Discrete
-    is
-    begin
-       return Discrete'Value (Field (Rank, Session));
-    end Discrete_Field;
- 
-    function Discrete_Field_Current_Session
-      (Rank    : Count) return Discrete is
-       function Do_It is new Discrete_Field (Discrete);
-    begin
-       return Do_It (Rank, Cur_Session);
-    end Discrete_Field_Current_Session;
- 
-    -----------------
-    -- End_Of_Data --
-    -----------------
- 
-    function End_Of_Data
-      (Session : Session_Type) return Boolean
-    is
-    begin
-       return Session.Data.File_Index = File_Table.Last (Session.Data.Files)
-         and then End_Of_File (Session);
-    end End_Of_Data;
- 
-    function End_Of_Data
-      return Boolean
-    is
-    begin
-       return End_Of_Data (Cur_Session);
-    end End_Of_Data;
- 
-    -----------------
-    -- End_Of_File --
-    -----------------
- 
-    function End_Of_File
-      (Session : Session_Type) return Boolean
-    is
-    begin
-       return Text_IO.End_Of_File (Session.Data.Current_File);
-    end End_Of_File;
- 
-    function End_Of_File
-      return Boolean
-    is
-    begin
-       return End_Of_File (Cur_Session);
-    end End_Of_File;
- 
-    -----------
-    -- Field --
-    -----------
- 
-    function Field
-      (Rank    : Count;
-       Session : Session_Type) return String
-    is
-       Fields : Field_Table.Instance renames Session.Data.Fields;
- 
-    begin
-       if Rank > Number_Of_Fields (Session) then
-          Raise_With_Info
-            (Field_Error'Identity,
-             "Field number" & Count'Image (Rank) & " does not exist.",
-             Session);
- 
-       elsif Rank = 0 then
- 
-          --  Returns the whole line, this is what $0 does under Session_Type
- 
-          return To_String (Session.Data.Current_Line);
- 
-       else
-          return Slice (Session.Data.Current_Line,
-                        Fields.Table (Positive (Rank)).First,
-                        Fields.Table (Positive (Rank)).Last);
-       end if;
-    end Field;
- 
-    function Field
-      (Rank    : Count) return String
-    is
-    begin
-       return Field (Rank, Cur_Session);
-    end Field;
- 
-    function Field
-      (Rank    : Count;
-       Session : Session_Type) return Integer
-    is
-    begin
-       return Integer'Value (Field (Rank, Session));
- 
-    exception
-       when Constraint_Error =>
-          Raise_With_Info
-            (Field_Error'Identity,
-             "Field number" & Count'Image (Rank)
-             & " cannot be converted to an integer.",
-             Session);
-    end Field;
- 
-    function Field
-      (Rank    : Count) return Integer
-    is
-    begin
-       return Field (Rank, Cur_Session);
-    end Field;
- 
-    function Field
-      (Rank    : Count;
-       Session : Session_Type) return Float
-    is
-    begin
-       return Float'Value (Field (Rank, Session));
- 
-    exception
-       when Constraint_Error =>
-          Raise_With_Info
-            (Field_Error'Identity,
-             "Field number" & Count'Image (Rank)
-             & " cannot be converted to a float.",
-             Session);
-    end Field;
- 
-    function Field
-      (Rank    : Count) return Float
-    is
-    begin
-       return Field (Rank, Cur_Session);
-    end Field;
- 
-    ----------
-    -- File --
-    ----------
- 
-    function File
-      (Session : Session_Type) return String
-    is
-       Files : File_Table.Instance renames Session.Data.Files;
- 
-    begin
-       if Session.Data.File_Index = 0 then
-          return "??";
-       else
-          return Files.Table (Session.Data.File_Index).all;
-       end if;
-    end File;
- 
-    function File
-      return String
-    is
-    begin
-       return File (Cur_Session);
-    end File;
- 
-    --------------------
-    -- For_Every_Line --
-    --------------------
- 
-    procedure For_Every_Line
-      (Separators : String        := Use_Current;
-       Filename   : String        := Use_Current;
-       Callbacks  : Callback_Mode := None;
-       Session    : Session_Type)
-    is
-       Quit : Boolean;
- 
-    begin
-       Open (Separators, Filename, Session);
- 
-       while not End_Of_Data (Session) loop
-          Read_Line (Session);
-          Split_Line (Session);
- 
-          if Callbacks in Only .. Pass_Through then
-             declare
-                Discard : Boolean;
-             begin
-                Discard := Apply_Filters (Session);
-             end;
-          end if;
- 
-          if Callbacks /= Only then
-             Quit := False;
-             Action (Quit);
-             exit when Quit;
-          end if;
-       end loop;
- 
-       Close (Session);
-    end For_Every_Line;
- 
-    procedure For_Every_Line_Current_Session
-      (Separators : String        := Use_Current;
-       Filename   : String        := Use_Current;
-       Callbacks  : Callback_Mode := None)
-    is
-       procedure Do_It is new For_Every_Line (Action);
-    begin
-       Do_It (Separators, Filename, Callbacks, Cur_Session);
-    end For_Every_Line_Current_Session;
- 
-    --------------
-    -- Get_Line --
-    --------------
- 
-    procedure Get_Line
-      (Callbacks : Callback_Mode := None;
-       Session   : Session_Type)
-    is
-       Filter_Active : Boolean;
- 
-    begin
-       if not Text_IO.Is_Open (Session.Data.Current_File) then
-          raise File_Error;
-       end if;
- 
-       loop
-          Read_Line (Session);
-          Split_Line (Session);
- 
-          case Callbacks is
-             when None =>
-                exit;
- 
-             when Only =>
-                Filter_Active := Apply_Filters (Session);
-                exit when not Filter_Active;
- 
-             when Pass_Through =>
-                Filter_Active := Apply_Filters (Session);
-                exit;
-          end case;
-       end loop;
-    end Get_Line;
- 
-    procedure Get_Line
-      (Callbacks : Callback_Mode := None)
-    is
-    begin
-       Get_Line (Callbacks, Cur_Session);
-    end Get_Line;
- 
-    ----------------------
-    -- Number_Of_Fields --
-    ----------------------
- 
-    function Number_Of_Fields
-      (Session : Session_Type) return Count
-    is
-    begin
-       return Count (Field_Table.Last (Session.Data.Fields));
-    end Number_Of_Fields;
- 
-    function Number_Of_Fields
-      return Count
-    is
-    begin
-       return Number_Of_Fields (Cur_Session);
-    end Number_Of_Fields;
- 
-    --------------------------
-    -- Number_Of_File_Lines --
-    --------------------------
- 
-    function Number_Of_File_Lines
-      (Session : Session_Type) return Count
-    is
-    begin
-       return Count (Session.Data.FNR);
-    end Number_Of_File_Lines;
- 
-    function Number_Of_File_Lines
-      return Count
-    is
-    begin
-       return Number_Of_File_Lines (Cur_Session);
-    end Number_Of_File_Lines;
- 
-    ---------------------
-    -- Number_Of_Files --
-    ---------------------
- 
-    function Number_Of_Files
-      (Session : Session_Type) return Natural
-    is
-       Files : File_Table.Instance renames Session.Data.Files;
-    begin
-       return File_Table.Last (Files);
-    end Number_Of_Files;
- 
-    function Number_Of_Files
-      return Natural
-    is
-    begin
-       return Number_Of_Files (Cur_Session);
-    end Number_Of_Files;
- 
-    ---------------------
-    -- Number_Of_Lines --
-    ---------------------
- 
-    function Number_Of_Lines
-      (Session : Session_Type) return Count
-    is
-    begin
-       return Count (Session.Data.NR);
-    end Number_Of_Lines;
- 
-    function Number_Of_Lines
-      return Count
-    is
-    begin
-       return Number_Of_Lines (Cur_Session);
-    end Number_Of_Lines;
- 
-    ----------
-    -- Open --
-    ----------
- 
-    procedure Open
-      (Separators : String       := Use_Current;
-       Filename   : String       := Use_Current;
-       Session    : Session_Type)
-    is
-    begin
-       if Text_IO.Is_Open (Session.Data.Current_File) then
-          raise Session_Error;
-       end if;
- 
-       if Filename /= Use_Current then
-          File_Table.Init (Session.Data.Files);
-          Add_File (Filename, Session);
-       end if;
- 
-       if Separators /= Use_Current then
-          Set_Field_Separators (Separators, Session);
-       end if;
- 
-       Open_Next_File (Session);
- 
-    exception
-       when End_Error =>
-          raise File_Error;
-    end Open;
- 
-    procedure Open
-      (Separators : String       := Use_Current;
-       Filename   : String       := Use_Current)
-    is
-    begin
-       Open (Separators, Filename, Cur_Session);
-    end Open;
- 
-    --------------------
-    -- Open_Next_File --
-    --------------------
- 
-    procedure Open_Next_File
-      (Session : Session_Type)
-    is
-       Files : File_Table.Instance renames Session.Data.Files;
- 
-    begin
-       if Text_IO.Is_Open (Session.Data.Current_File) then
-          Text_IO.Close (Session.Data.Current_File);
-       end if;
- 
-       Session.Data.File_Index := Session.Data.File_Index + 1;
- 
-       --  If there are no mores file in the table, raise End_Error
- 
-       if Session.Data.File_Index > File_Table.Last (Files) then
-          raise End_Error;
-       end if;
- 
-       Text_IO.Open
-         (File => Session.Data.Current_File,
-          Name => Files.Table (Session.Data.File_Index).all,
-          Mode => Text_IO.In_File);
-    end Open_Next_File;
- 
-    -----------
-    -- Parse --
-    -----------
- 
-    procedure Parse
-      (Separators : String       := Use_Current;
-       Filename   : String       := Use_Current;
-       Session    : Session_Type)
-    is
-       Filter_Active : Boolean;
-       pragma Unreferenced (Filter_Active);
- 
-    begin
-       Open (Separators, Filename, Session);
- 
-       while not End_Of_Data (Session) loop
-          Get_Line (None, Session);
-          Filter_Active := Apply_Filters (Session);
-       end loop;
- 
-       Close (Session);
-    end Parse;
- 
-    procedure Parse
-      (Separators : String       := Use_Current;
-       Filename   : String       := Use_Current)
-    is
-    begin
-       Parse (Separators, Filename, Cur_Session);
-    end Parse;
- 
-    ---------------------
-    -- Raise_With_Info --
-    ---------------------
- 
-    procedure Raise_With_Info
-      (E       : Exceptions.Exception_Id;
-       Message : String;
-       Session : Session_Type)
-    is
-       function Filename return String;
-       --  Returns current filename and "??" if this information is not
-       --  available.
- 
-       function Line return String;
-       --  Returns current line number without the leading space
- 
-       --------------
-       -- Filename --
-       --------------
- 
-       function Filename return String is
-          File : constant String := AWK.File (Session);
-       begin
-          if File = "" then
-             return "??";
-          else
-             return File;
-          end if;
-       end Filename;
- 
-       ----------
-       -- Line --
-       ----------
- 
-       function Line return String is
-          L : constant String := Natural'Image (Session.Data.FNR);
-       begin
-          return L (2 .. L'Last);
-       end Line;
- 
-    --  Start of processing for Raise_With_Info
- 
-    begin
-       Exceptions.Raise_Exception
-         (E,
-          '[' & Filename & ':' & Line & "] " & Message);
-       raise Constraint_Error; -- to please GNAT as this is a No_Return proc
-    end Raise_With_Info;
- 
-    ---------------
-    -- Read_Line --
-    ---------------
- 
-    procedure Read_Line (Session : Session_Type) is
- 
-       function Read_Line return String;
-       --  Read a line in the current file. This implementation is recursive
-       --  and does not have a limitation on the line length.
- 
-       NR  : Natural renames Session.Data.NR;
-       FNR : Natural renames Session.Data.FNR;
- 
-       ---------------
-       -- Read_Line --
-       ---------------
- 
-       function Read_Line return String is
-          Buffer : String (1 .. 1_024);
-          Last   : Natural;
- 
-       begin
-          Text_IO.Get_Line (Session.Data.Current_File, Buffer, Last);
- 
-          if Last = Buffer'Last then
-             return Buffer & Read_Line;
-          else
-             return Buffer (1 .. Last);
-          end if;
-       end Read_Line;
- 
-    --  Start of processing for Read_Line
- 
-    begin
-       if End_Of_File (Session) then
-          Open_Next_File (Session);
-          FNR := 0;
-       end if;
- 
-       Session.Data.Current_Line := To_Unbounded_String (Read_Line);
- 
-       NR := NR + 1;
-       FNR := FNR + 1;
-    end Read_Line;
- 
-    --------------
-    -- Register --
-    --------------
- 
-    procedure Register
-      (Field   : Count;
-       Pattern : String;
-       Action  : Action_Callback;
-       Session : Session_Type)
-    is
-       Filters   : Pattern_Action_Table.Instance renames Session.Data.Filters;
-       U_Pattern : constant Unbounded_String := To_Unbounded_String (Pattern);
- 
-    begin
-       Pattern_Action_Table.Increment_Last (Filters);
- 
-       Filters.Table (Pattern_Action_Table.Last (Filters)) :=
-         (Pattern => new Patterns.String_Pattern'(U_Pattern, Field),
-          Action  => new Actions.Simple_Action'(Proc => Action));
-    end Register;
- 
-    procedure Register
-      (Field   : Count;
-       Pattern : String;
-       Action  : Action_Callback)
-    is
-    begin
-       Register (Field, Pattern, Action, Cur_Session);
-    end Register;
- 
-    procedure Register
-      (Field   : Count;
-       Pattern : GNAT.Regpat.Pattern_Matcher;
-       Action  : Action_Callback;
-       Session : Session_Type)
-    is
-       Filters : Pattern_Action_Table.Instance renames Session.Data.Filters;
- 
-       A_Pattern : constant Patterns.Pattern_Matcher_Access :=
-                     new Regpat.Pattern_Matcher'(Pattern);
-    begin
-       Pattern_Action_Table.Increment_Last (Filters);
- 
-       Filters.Table (Pattern_Action_Table.Last (Filters)) :=
-         (Pattern => new Patterns.Regexp_Pattern'(A_Pattern, Field),
-          Action  => new Actions.Simple_Action'(Proc => Action));
-    end Register;
- 
-    procedure Register
-      (Field   : Count;
-       Pattern : GNAT.Regpat.Pattern_Matcher;
-       Action  : Action_Callback)
-    is
-    begin
-       Register (Field, Pattern, Action, Cur_Session);
-    end Register;
- 
-    procedure Register
-      (Field   : Count;
-       Pattern : GNAT.Regpat.Pattern_Matcher;
-       Action  : Match_Action_Callback;
-       Session : Session_Type)
-    is
-       Filters : Pattern_Action_Table.Instance renames Session.Data.Filters;
- 
-       A_Pattern : constant Patterns.Pattern_Matcher_Access :=
-                     new Regpat.Pattern_Matcher'(Pattern);
-    begin
-       Pattern_Action_Table.Increment_Last (Filters);
- 
-       Filters.Table (Pattern_Action_Table.Last (Filters)) :=
-         (Pattern => new Patterns.Regexp_Pattern'(A_Pattern, Field),
-          Action  => new Actions.Match_Action'(Proc => Action));
-    end Register;
- 
-    procedure Register
-      (Field   : Count;
-       Pattern : GNAT.Regpat.Pattern_Matcher;
-       Action  : Match_Action_Callback)
-    is
-    begin
-       Register (Field, Pattern, Action, Cur_Session);
-    end Register;
- 
-    procedure Register
-      (Pattern : Pattern_Callback;
-       Action  : Action_Callback;
-       Session : Session_Type)
-    is
-       Filters : Pattern_Action_Table.Instance renames Session.Data.Filters;
- 
-    begin
-       Pattern_Action_Table.Increment_Last (Filters);
- 
-       Filters.Table (Pattern_Action_Table.Last (Filters)) :=
-         (Pattern => new Patterns.Callback_Pattern'(Pattern => Pattern),
-          Action  => new Actions.Simple_Action'(Proc => Action));
-    end Register;
- 
-    procedure Register
-      (Pattern : Pattern_Callback;
-       Action  : Action_Callback)
-    is
-    begin
-       Register (Pattern, Action, Cur_Session);
-    end Register;
- 
-    procedure Register
-      (Action  : Action_Callback;
-       Session : Session_Type)
-    is
-    begin
-       Register (Always_True'Access, Action, Session);
-    end Register;
- 
-    procedure Register
-      (Action  : Action_Callback)
-    is
-    begin
-       Register (Action, Cur_Session);
-    end Register;
- 
-    -----------------
-    -- Set_Current --
-    -----------------
- 
-    procedure Set_Current (Session : Session_Type) is
-    begin
-       Cur_Session.Data := Session.Data;
-    end Set_Current;
- 
-    --------------------------
-    -- Set_Field_Separators --
-    --------------------------
- 
-    procedure Set_Field_Separators
-      (Separators : String       := Default_Separators;
-       Session    : Session_Type)
-    is
-    begin
-       Free (Session.Data.Separators);
- 
-       Session.Data.Separators :=
-         new Split.Separator'(Separators'Length, Separators);
- 
-       --  If there is a current line read, split it according to the new
-       --  separators.
- 
-       if Session.Data.Current_Line /= Null_Unbounded_String then
-          Split_Line (Session);
-       end if;
-    end Set_Field_Separators;
- 
-    procedure Set_Field_Separators
-      (Separators : String       := Default_Separators)
-    is
-    begin
-       Set_Field_Separators (Separators, Cur_Session);
-    end Set_Field_Separators;
- 
-    ----------------------
-    -- Set_Field_Widths --
-    ----------------------
- 
-    procedure Set_Field_Widths
-      (Field_Widths : Widths_Set;
-       Session      : Session_Type)
-    is
-    begin
-       Free (Session.Data.Separators);
- 
-       Session.Data.Separators :=
-         new Split.Column'(Field_Widths'Length, Field_Widths);
- 
-       --  If there is a current line read, split it according to
-       --  the new separators.
- 
-       if Session.Data.Current_Line /= Null_Unbounded_String then
-          Split_Line (Session);
-       end if;
-    end Set_Field_Widths;
- 
-    procedure Set_Field_Widths
-      (Field_Widths : Widths_Set)
-    is
-    begin
-       Set_Field_Widths (Field_Widths, Cur_Session);
-    end Set_Field_Widths;
- 
-    ----------------
-    -- Split_Line --
-    ----------------
- 
-    procedure Split_Line (Session : Session_Type) is
-       Fields : Field_Table.Instance renames Session.Data.Fields;
-    begin
-       Field_Table.Init (Fields);
-       Split.Current_Line (Session.Data.Separators.all, Session);
-    end Split_Line;
- 
-    -------------
-    -- Get_Def --
-    -------------
- 
-    function Get_Def return Session_Data_Access is
-    begin
-       return Def_Session.Data;
-    end Get_Def;
- 
-    -------------
-    -- Set_Cur --
-    -------------
- 
-    procedure Set_Cur is
-    begin
-       Cur_Session.Data := Def_Session.Data;
-    end Set_Cur;
- 
- begin
-    --  We have declared two sessions but both should share the same data.
-    --  The current session must point to the default session as its initial
-    --  value. So first we release the session data then we set current
-    --  session data to point to default session data.
- 
-    Free (Cur_Session.Data);
-    Cur_Session.Data := Def_Session.Data;
- end GNAT.AWK;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-awk.ads gcc-8.1.0/gcc/ada/g-awk.ads
*** gcc-7.3.0/gcc/ada/g-awk.ads	Fri Oct 23 10:29:50 2015
--- gcc-8.1.0/gcc/ada/g-awk.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,642 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                              G N A T . A W K                             --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 2000-2015, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 an AWK-like unit. It provides an easy interface for parsing one
- --  or more files containing formatted data. The file can be viewed seen as
- --  a database where each record is a line and a field is a data element in
- --  this line. In this implementation an AWK record is a line. This means
- --  that a record cannot span multiple lines. The operating procedure is to
- --  read files line by line, with each line being presented to the user of
- --  the package. The interface provides services to access specific fields
- --  in the line. Thus it is possible to control actions taken on a line based
- --  on values of some fields. This can be achieved directly or by registering
- --  callbacks triggered on programmed conditions.
- --
- --  The state of an AWK run is recorded in an object of type session.
- --  The following is the procedure for using a session to control an
- --  AWK run:
- --
- --     1) Specify which session is to be used. It is possible to use the
- --        default session or to create a new one by declaring an object of
- --        type Session_Type. For example:
- --
- --           Computers : Session_Type;
- --
- --     2) Specify how to cut a line into fields. There are two modes: using
- --        character fields separators or column width. This is done by using
- --        Set_Fields_Separators or Set_Fields_Width. For example by:
- --
- --           AWK.Set_Field_Separators (";,", Computers);
- --
- --        or by using iterators' Separators parameter.
- --
- --     3) Specify which files to parse. This is done with Add_File/Add_Files
- --        services, or by using the iterators' Filename parameter. For
- --        example:
- --
- --           AWK.Add_File ("myfile.db", Computers);
- --
- --     4) Run the AWK session using one of the provided iterators.
- --
- --           Parse
- --              This is the most automated iterator. You can gain control on
- --              the session only by registering one or more callbacks (see
- --              Register).
- --
- --           Get_Line/End_Of_Data
- --              This is a manual iterator to be used with a loop. You have
- --              complete control on the session. You can use callbacks but
- --              this is not required.
- --
- --           For_Every_Line
- --              This provides a mixture of manual/automated iterator action.
- --
- --        Examples of these three approaches appear below
- --
- --  There are many ways to use this package. The following discussion shows
- --  three approaches to using this package, using the three iterator forms.
- --  All examples will use the following file (computer.db):
- --
- --     Pluton;Windows-NT;Pentium III
- --     Mars;Linux;Pentium Pro
- --     Venus;Solaris;Sparc
- --     Saturn;OS/2;i486
- --     Jupiter;MacOS;PPC
- --
- --  1) Using Parse iterator
- --
- --     Here the first step is to register some action associated to a pattern
- --     and then to call the Parse iterator (this is the simplest way to use
- --     this unit). The default session is used here. For example to output the
- --     second field (the OS) of computer "Saturn".
- --
- --           procedure Action is
- --           begin
- --              Put_Line (AWK.Field (2));
- --           end Action;
- --
- --        begin
- --           AWK.Register (1, "Saturn", Action'Access);
- --           AWK.Parse (";", "computer.db");
- --
- --
- --  2) Using the Get_Line/End_Of_Data iterator
- --
- --     Here you have full control. For example to do the same as
- --     above but using a specific session, you could write:
- --
- --           Computer_File : Session_Type;
- --
- --        begin
- --           AWK.Set_Current (Computer_File);
- --           AWK.Open (Separators => ";",
- --                     Filename   => "computer.db");
- --
- --           --  Display Saturn OS
- --
- --           while not AWK.End_Of_File loop
- --              AWK.Get_Line;
- --
- --              if AWK.Field (1) = "Saturn" then
- --                 Put_Line (AWK.Field (2));
- --              end if;
- --           end loop;
- --
- --           AWK.Close (Computer_File);
- --
- --
- --  3) Using For_Every_Line iterator
- --
- --     In this case you use a provided iterator and you pass the procedure
- --     that must be called for each record. You could code the previous
- --     example could be coded as follows (using the iterator quick interface
- --     but without using the current session):
- --
- --           Computer_File : Session_Type;
- --
- --           procedure Action (Quit : in out Boolean) is
- --           begin
- --              if AWK.Field (1, Computer_File) = "Saturn" then
- --                 Put_Line (AWK.Field (2, Computer_File));
- --              end if;
- --           end Action;
- --
- --           procedure Look_For_Saturn is
- --              new AWK.For_Every_Line (Action);
- --
- --        begin
- --           Look_For_Saturn (Separators => ";",
- --                            Filename   => "computer.db",
- --                            Session    => Computer_File);
- --
- --           Integer_Text_IO.Put
- --             (Integer (AWK.NR (Session => Computer_File)));
- --           Put_Line (" line(s) have been processed.");
- --
- --  You can also use a regular expression for the pattern. Let us output
- --  the computer name for all computer for which the OS has a character
- --  O in its name.
- --
- --           Regexp   : String := ".*O.*";
- --
- --           Matcher  : Regpat.Pattern_Matcher := Regpat.Compile (Regexp);
- --
- --           procedure Action is
- --           begin
- --              Text_IO.Put_Line (AWK.Field (2));
- --           end Action;
- --
- --        begin
- --           AWK.Register (2, Matcher, Action'Unrestricted_Access);
- --           AWK.Parse (";", "computer.db");
- --
- 
- with Ada.Finalization;
- with GNAT.Regpat;
- 
- package GNAT.AWK is
- 
-    Session_Error : exception;
-    --  Raised when a Session is reused but is not closed
- 
-    File_Error : exception;
-    --  Raised when there is a file problem (see below)
- 
-    End_Error : exception;
-    --  Raised when an attempt is made to read beyond the end of the last
-    --  file of a session.
- 
-    Field_Error : exception;
-    --  Raised when accessing a field value which does not exist
- 
-    Data_Error : exception;
-    --  Raised when it is impossible to convert a field value to a specific type
- 
-    type Count is new Natural;
- 
-    type Widths_Set is array (Positive range <>) of Positive;
-    --  Used to store a set of columns widths
- 
-    Default_Separators : constant String := " " & ASCII.HT;
- 
-    Use_Current : constant String := "";
-    --  Value used when no separator or filename is specified in iterators
- 
-    type Session_Type is limited private;
-    --  This is the main exported type. A session is used to keep the state of
-    --  a full AWK run. The state comprises a list of files, the current file,
-    --  the number of line processed, the current line, the number of fields in
-    --  the current line... A default session is provided (see Set_Current,
-    --  Current_Session and Default_Session below).
- 
-    ----------------------------
-    -- Package initialization --
-    ----------------------------
- 
-    --  To be thread safe it is not possible to use the default provided
-    --  session. Each task must used a specific session and specify it
-    --  explicitly for every services.
- 
-    procedure Set_Current (Session : Session_Type);
-    --  Set the session to be used by default. This file will be used when the
-    --  Session parameter in following services is not specified.
- 
-    function Current_Session return not null access Session_Type;
-    --  Returns the session used by default by all services. This is the
-    --  latest session specified by Set_Current service or the session
-    --  provided by default with this implementation.
- 
-    function Default_Session return not null access Session_Type;
-    --  Returns the default session provided by this package. Note that this is
-    --  the session return by Current_Session if Set_Current has not been used.
- 
-    procedure Set_Field_Separators
-      (Separators : String       := Default_Separators;
-       Session    : Session_Type);
-    procedure Set_Field_Separators
-      (Separators : String       := Default_Separators);
-    --  Set the field separators. Each character in the string is a field
-    --  separator. When a line is read it will be split by field using the
-    --  separators set here. Separators can be changed at any point and in this
-    --  case the current line is split according to the new separators. In the
-    --  special case that Separators is a space and a tabulation
-    --  (Default_Separators), fields are separated by runs of spaces and/or
-    --  tabs.
- 
-    procedure Set_FS
-      (Separators : String       := Default_Separators;
-       Session    : Session_Type)
-      renames Set_Field_Separators;
-    procedure Set_FS
-      (Separators : String       := Default_Separators)
-      renames Set_Field_Separators;
-    --  FS is the AWK abbreviation for above service
- 
-    procedure Set_Field_Widths
-      (Field_Widths : Widths_Set;
-       Session      : Session_Type);
-    procedure Set_Field_Widths
-      (Field_Widths : Widths_Set);
-    --  This is another way to split a line by giving the length (in number of
-    --  characters) of each field in a line. Field widths can be changed at any
-    --  point and in this case the current line is split according to the new
-    --  field lengths. A line split with this method must have a length equal or
-    --  greater to the total of the field widths. All characters remaining on
-    --  the line after the latest field are added to a new automatically
-    --  created field.
- 
-    procedure Add_File
-      (Filename : String;
-       Session  : Session_Type);
-    procedure Add_File
-      (Filename : String);
-    --  Add Filename to the list of file to be processed. There is no limit on
-    --  the number of files that can be added. Files are processed in the order
-    --  they have been added (i.e. the filename list is FIFO). If Filename does
-    --  not exist or if it is not readable, File_Error is raised.
- 
-    procedure Add_Files
-      (Directory             : String;
-       Filenames             : String;
-       Number_Of_Files_Added : out Natural;
-       Session               : Session_Type);
-    procedure Add_Files
-      (Directory             : String;
-       Filenames             : String;
-       Number_Of_Files_Added : out Natural);
-    --  Add all files matching the regular expression Filenames in the specified
-    --  directory to the list of file to be processed. There is no limit on
-    --  the number of files that can be added. Each file is processed in
-    --  the same order they have been added (i.e. the filename list is FIFO).
-    --  The number of files (possibly 0) added is returned in
-    --  Number_Of_Files_Added.
- 
-    -------------------------------------
-    -- Information about current state --
-    -------------------------------------
- 
-    function Number_Of_Fields
-      (Session : Session_Type) return Count;
-    function Number_Of_Fields
-      return Count;
-    pragma Inline (Number_Of_Fields);
-    --  Returns the number of fields in the current record. It returns 0 when
-    --  no file is being processed.
- 
-    function NF
-      (Session : Session_Type) return Count
-      renames Number_Of_Fields;
-    function NF
-      return Count
-      renames Number_Of_Fields;
-    --  AWK abbreviation for above service
- 
-    function Number_Of_File_Lines
-      (Session : Session_Type) return Count;
-    function Number_Of_File_Lines
-      return Count;
-    pragma Inline (Number_Of_File_Lines);
-    --  Returns the current line number in the processed file. It returns 0 when
-    --  no file is being processed.
- 
-    function FNR (Session : Session_Type) return Count
-      renames Number_Of_File_Lines;
-    function FNR return Count
-      renames Number_Of_File_Lines;
-    --  AWK abbreviation for above service
- 
-    function Number_Of_Lines
-      (Session : Session_Type) return Count;
-    function Number_Of_Lines
-      return Count;
-    pragma Inline (Number_Of_Lines);
-    --  Returns the number of line processed until now. This is equal to number
-    --  of line in each already processed file plus FNR. It returns 0 when
-    --  no file is being processed.
- 
-    function NR (Session : Session_Type) return Count
-      renames Number_Of_Lines;
-    function NR return Count
-      renames Number_Of_Lines;
-    --  AWK abbreviation for above service
- 
-    function Number_Of_Files
-      (Session : Session_Type) return Natural;
-    function Number_Of_Files
-      return Natural;
-    pragma Inline (Number_Of_Files);
-    --  Returns the number of files associated with Session. This is the total
-    --  number of files added with Add_File and Add_Files services.
- 
-    function File (Session : Session_Type) return String;
-    function File return String;
-    --  Returns the name of the file being processed. It returns the empty
-    --  string when no file is being processed.
- 
-    ---------------------
-    -- Field accessors --
-    ---------------------
- 
-    function Field
-      (Rank    : Count;
-       Session : Session_Type) return String;
-    function Field
-      (Rank    : Count) return String;
-    --  Returns field number Rank value of the current record. If Rank = 0 it
-    --  returns the current record (i.e. the line as read in the file). It
-    --  raises Field_Error if Rank > NF or if Session is not open.
- 
-    function Field
-      (Rank    : Count;
-       Session : Session_Type) return Integer;
-    function Field
-      (Rank    : Count) return Integer;
-    --  Returns field number Rank value of the current record as an integer. It
-    --  raises Field_Error if Rank > NF or if Session is not open. It
-    --  raises Data_Error if the field value cannot be converted to an integer.
- 
-    function Field
-      (Rank    : Count;
-       Session : Session_Type) return Float;
-    function Field
-      (Rank    : Count) return Float;
-    --  Returns field number Rank value of the current record as a float. It
-    --  raises Field_Error if Rank > NF or if Session is not open. It
-    --  raises Data_Error if the field value cannot be converted to a float.
- 
-    generic
-       type Discrete is (<>);
-    function Discrete_Field
-      (Rank    : Count;
-       Session : Session_Type) return Discrete;
-    generic
-       type Discrete is (<>);
-    function Discrete_Field_Current_Session
-      (Rank    : Count) return Discrete;
-    --  Returns field number Rank value of the current record as a type
-    --  Discrete. It raises Field_Error if Rank > NF. It raises Data_Error if
-    --  the field value cannot be converted to type Discrete.
- 
-    --------------------
-    -- Pattern/Action --
-    --------------------
- 
-    --  AWK defines rules like "PATTERN { ACTION }". Which means that ACTION
-    --  will be executed if PATTERN match. A pattern in this implementation can
-    --  be a simple string (match function is equality), a regular expression,
-    --  a function returning a boolean. An action is associated to a pattern
-    --  using the Register services.
-    --
-    --  Each procedure Register will add a rule to the set of rules for the
-    --  session. Rules are examined in the order they have been added.
- 
-    type Pattern_Callback is access function return Boolean;
-    --  This is a pattern function pointer. When it returns True the associated
-    --  action will be called.
- 
-    type Action_Callback is access procedure;
-    --  A simple action pointer
- 
-    type Match_Action_Callback is
-      access procedure (Matches : GNAT.Regpat.Match_Array);
-    --  An advanced action pointer used with a regular expression pattern. It
-    --  returns an array of all the matches. See GNAT.Regpat for further
-    --  information.
- 
-    procedure Register
-      (Field   : Count;
-       Pattern : String;
-       Action  : Action_Callback;
-       Session : Session_Type);
-    procedure Register
-      (Field   : Count;
-       Pattern : String;
-       Action  : Action_Callback);
-    --  Register an Action associated with a Pattern. The pattern here is a
-    --  simple string that must match exactly the field number specified.
- 
-    procedure Register
-      (Field   : Count;
-       Pattern : GNAT.Regpat.Pattern_Matcher;
-       Action  : Action_Callback;
-       Session : Session_Type);
-    procedure Register
-      (Field   : Count;
-       Pattern : GNAT.Regpat.Pattern_Matcher;
-       Action  : Action_Callback);
-    --  Register an Action associated with a Pattern. The pattern here is a
-    --  simple regular expression which must match the field number specified.
- 
-    procedure Register
-      (Field   : Count;
-       Pattern : GNAT.Regpat.Pattern_Matcher;
-       Action  : Match_Action_Callback;
-       Session : Session_Type);
-    procedure Register
-      (Field   : Count;
-       Pattern : GNAT.Regpat.Pattern_Matcher;
-       Action  : Match_Action_Callback);
-    --  Same as above but it pass the set of matches to the action
-    --  procedure. This is useful to analyze further why and where a regular
-    --  expression did match.
- 
-    procedure Register
-      (Pattern : Pattern_Callback;
-       Action  : Action_Callback;
-       Session : Session_Type);
-    procedure Register
-      (Pattern : Pattern_Callback;
-       Action  : Action_Callback);
-    --  Register an Action associated with a Pattern. The pattern here is a
-    --  function that must return a boolean. Action callback will be called if
-    --  the pattern callback returns True and nothing will happen if it is
-    --  False. This version is more general, the two other register services
-    --  trigger an action based on the value of a single field only.
- 
-    procedure Register
-      (Action  : Action_Callback;
-       Session : Session_Type);
-    procedure Register
-      (Action  : Action_Callback);
-    --  Register an Action that will be called for every line. This is
-    --  equivalent to a Pattern_Callback function always returning True.
- 
-    --------------------
-    -- Parse iterator --
-    --------------------
- 
-    procedure Parse
-      (Separators : String := Use_Current;
-       Filename   : String := Use_Current;
-       Session    : Session_Type);
-    procedure Parse
-      (Separators : String := Use_Current;
-       Filename   : String := Use_Current);
-    --  Launch the iterator, it will read every line in all specified
-    --  session's files. Registered callbacks are then called if the associated
-    --  pattern match. It is possible to specify a filename and a set of
-    --  separators directly. This offer a quick way to parse a single
-    --  file. These parameters will override those specified by Set_FS and
-    --  Add_File. The Session will be opened and closed automatically.
-    --  File_Error is raised if there is no file associated with Session, or if
-    --  a file associated with Session is not longer readable. It raises
-    --  Session_Error is Session is already open.
- 
-    -----------------------------------
-    -- Get_Line/End_Of_Data Iterator --
-    -----------------------------------
- 
-    type Callback_Mode is (None, Only, Pass_Through);
-    --  These mode are used for Get_Line/End_Of_Data and For_Every_Line
-    --  iterators. The associated semantic is:
-    --
-    --    None
-    --       callbacks are not active. This is the default mode for
-    --       Get_Line/End_Of_Data and For_Every_Line iterators.
-    --
-    --    Only
-    --       callbacks are active, if at least one pattern match, the associated
-    --       action is called and this line will not be passed to the user. In
-    --       the Get_Line case the next line will be read (if there is some
-    --       line remaining), in the For_Every_Line case Action will
-    --       not be called for this line.
-    --
-    --    Pass_Through
-    --       callbacks are active, for patterns which match the associated
-    --       action is called. Then the line is passed to the user. It means
-    --       that Action procedure is called in the For_Every_Line case and
-    --       that Get_Line returns with the current line active.
-    --
- 
-    procedure Open
-      (Separators : String := Use_Current;
-       Filename   : String := Use_Current;
-       Session    : Session_Type);
-    procedure Open
-      (Separators : String := Use_Current;
-       Filename   : String := Use_Current);
-    --  Open the first file and initialize the unit. This must be called once
-    --  before using Get_Line. It is possible to specify a filename and a set of
-    --  separators directly. This offer a quick way to parse a single file.
-    --  These parameters will override those specified by Set_FS and Add_File.
-    --  File_Error is raised if there is no file associated with Session, or if
-    --  the first file associated with Session is no longer readable. It raises
-    --  Session_Error is Session is already open.
- 
-    procedure Get_Line
-      (Callbacks : Callback_Mode := None;
-       Session   : Session_Type);
-    procedure Get_Line
-      (Callbacks : Callback_Mode := None);
-    --  Read a line from the current input file. If the file index is at the
-    --  end of the current input file (i.e. End_Of_File is True) then the
-    --  following file is opened. If there is no more file to be processed,
-    --  exception End_Error will be raised. File_Error will be raised if Open
-    --  has not been called. Next call to Get_Line will return the following
-    --  line in the file. By default the registered callbacks are not called by
-    --  Get_Line, this can activated by setting Callbacks (see Callback_Mode
-    --  description above). File_Error may be raised if a file associated with
-    --  Session is not readable.
-    --
-    --  When Callbacks is not None, it is possible to exhaust all the lines
-    --  of all the files associated with Session. In this case, File_Error
-    --  is not raised.
-    --
-    --  This procedure can be used from a subprogram called by procedure Parse
-    --  or by an instantiation of For_Every_Line (see below).
- 
-    function End_Of_Data
-      (Session : Session_Type) return Boolean;
-    function End_Of_Data
-      return Boolean;
-    pragma Inline (End_Of_Data);
-    --  Returns True if there is no more data to be processed in Session. It
-    --  means that the latest session's file is being processed and that
-    --  there is no more data to be read in this file (End_Of_File is True).
- 
-    function End_Of_File
-      (Session : Session_Type) return Boolean;
-    function End_Of_File
-      return Boolean;
-    pragma Inline (End_Of_File);
-    --  Returns True when there is no more data to be processed on the current
-    --  session's file.
- 
-    procedure Close (Session : Session_Type);
-    --  Release all associated data with Session. All memory allocated will
-    --  be freed, the current file will be closed if needed, the callbacks
-    --  will be unregistered. Close is convenient in reestablishing a session
-    --  for new use. Get_Line is no longer usable (will raise File_Error)
-    --  except after a successful call to Open, Parse or an instantiation
-    --  of For_Every_Line.
- 
-    -----------------------------
-    -- For_Every_Line iterator --
-    -----------------------------
- 
-    generic
-       with procedure Action (Quit : in out Boolean);
-    procedure For_Every_Line
-      (Separators : String := Use_Current;
-       Filename   : String := Use_Current;
-       Callbacks  : Callback_Mode := None;
-       Session    : Session_Type);
-    generic
-       with procedure Action (Quit : in out Boolean);
-    procedure For_Every_Line_Current_Session
-      (Separators : String := Use_Current;
-       Filename   : String := Use_Current;
-       Callbacks  : Callback_Mode := None);
-    --  This is another iterator. Action will be called for each new
-    --  record. The iterator's termination can be controlled by setting Quit
-    --  to True. It is by default set to False. It is possible to specify a
-    --  filename and a set of separators directly. This offer a quick way to
-    --  parse a single file. These parameters will override those specified by
-    --  Set_FS and Add_File. By default the registered callbacks are not called
-    --  by For_Every_Line, this can activated by setting Callbacks (see
-    --  Callback_Mode description above). The Session will be opened and
-    --  closed automatically. File_Error is raised if there is no file
-    --  associated with Session. It raises Session_Error is Session is already
-    --  open.
- 
- private
-    type Session_Data;
-    type Session_Data_Access is access Session_Data;
- 
-    type Session_Type is new Ada.Finalization.Limited_Controlled with record
-       Data : Session_Data_Access;
-       Self : not null access Session_Type := Session_Type'Unchecked_Access;
-    end record;
- 
-    procedure Initialize (Session : in out Session_Type);
-    procedure Finalize   (Session : in out Session_Type);
- 
- end GNAT.AWK;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-binenv.adb gcc-8.1.0/gcc/ada/g-binenv.adb
*** gcc-7.3.0/gcc/ada/g-binenv.adb	Tue Oct 20 09:53:11 2015
--- gcc-8.1.0/gcc/ada/g-binenv.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,83 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                  GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                --
- --                                                                          --
- --                  G N A T . B I N D _ E N V I R O N M E N T               --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --             Copyright (C) 2015, Free Software Foundation, Inc.           --
- --                                                                          --
- -- GNAT is 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/>.                                          --
- --                                                                          --
- -- GNARL was developed by the GNARL team at Florida State University.       --
- -- Extensive contributions were provided by AdaCore.                        --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with System;
- 
- package body GNAT.Bind_Environment is
- 
-    ---------
-    -- Get --
-    ---------
- 
-    function Get (Key : String) return String is
-       use type System.Address;
- 
-       Bind_Env_Addr : System.Address;
-       pragma Import (C, Bind_Env_Addr, "__gl_bind_env_addr");
-       --  Variable provided by init.c/s-init.ads, and initialized by
-       --  the binder generated file.
- 
-       Bind_Env : String (Positive);
-       for Bind_Env'Address use Bind_Env_Addr;
-       pragma Import (Ada, Bind_Env);
-       --  Import Bind_Env string from binder file. Note that we import
-       --  it here as a string with maximum boundaries. The "real" end
-       --  of the string is indicated by a NUL byte.
- 
-       Index, KLen, VLen : Integer;
- 
-    begin
-       if Bind_Env_Addr = System.Null_Address then
-          return "";
-       end if;
- 
-       Index := Bind_Env'First;
-       loop
-          --  Index points to key length
- 
-          VLen := 0;
-          KLen := Character'Pos (Bind_Env (Index));
-          exit when KLen = 0;
- 
-          Index := Index + KLen + 1;
- 
-          --  Index points to value length
- 
-          VLen := Character'Pos (Bind_Env (Index));
-          exit when Bind_Env (Index - KLen .. Index - 1) = Key;
- 
-          Index := Index + VLen + 1;
-       end loop;
- 
-       return Bind_Env (Index + 1 .. Index + VLen);
-    end Get;
- 
- end GNAT.Bind_Environment;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-binenv.ads gcc-8.1.0/gcc/ada/g-binenv.ads
*** gcc-7.3.0/gcc/ada/g-binenv.ads	Tue Oct 20 09:53:11 2015
--- gcc-8.1.0/gcc/ada/g-binenv.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,40 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                  GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                --
- --                                                                          --
- --                  G N A T . B I N D _ E N V I R O N M E N T               --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --             Copyright (C) 2015, Free Software Foundation, Inc.           --
- --                                                                          --
- -- GNAT is 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/>.                                          --
- --                                                                          --
- -- GNARL was developed by the GNARL team at Florida State University.       --
- -- Extensive contributions were provided by AdaCore.                        --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- package GNAT.Bind_Environment is
- 
-    pragma Pure;
- 
-    function Get (Key : String) return String;
-    --  Return the value associated with Key at bind time,
-    --  or an empty string if not found.
- 
- end GNAT.Bind_Environment;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-boubuf.adb gcc-8.1.0/gcc/ada/g-boubuf.adb
*** gcc-7.3.0/gcc/ada/g-boubuf.adb	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-boubuf.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,90 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                  G N A T . B O U N D E D _ B U F F E R S                 --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 2003-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 is maintained by Ada Core Technologies Inc (http://www.gnat.com).   --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- package body GNAT.Bounded_Buffers is
- 
-    --------------------
-    -- Bounded_Buffer --
-    --------------------
- 
-    protected body Bounded_Buffer is
- 
-       ------------
-       -- Insert --
-       ------------
- 
-       entry Insert (Item : Element) when Count /= Capacity is
-       begin
-          Values (Next_In) := Item;
-          Next_In := (Next_In mod Capacity) + 1;
-          Count := Count + 1;
-       end Insert;
- 
-       ------------
-       -- Remove --
-       ------------
- 
-       entry Remove (Item : out Element) when Count > 0 is
-       begin
-          Item := Values (Next_Out);
-          Next_Out := (Next_Out mod Capacity) + 1;
-          Count := Count - 1;
-       end Remove;
- 
-       -----------
-       -- Empty --
-       -----------
- 
-       function Empty return Boolean is
-       begin
-          return Count = 0;
-       end Empty;
- 
-       ----------
-       -- Full --
-       ----------
- 
-       function Full return Boolean is
-       begin
-          return Count = Capacity;
-       end Full;
- 
-       ------------
-       -- Extent --
-       ------------
- 
-       function Extent return Natural is
-       begin
-          return Count;
-       end Extent;
- 
-    end Bounded_Buffer;
- 
- end GNAT.Bounded_Buffers;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-boubuf.ads gcc-8.1.0/gcc/ada/g-boubuf.ads
*** gcc-7.3.0/gcc/ada/g-boubuf.ads	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-boubuf.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,101 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                  G N A T . B O U N D E D _ B U F F E R S                 --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 2003-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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. --
- -- It is now maintained by Ada Core Technologies Inc (http://www.gnat.com). --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This package provides a thread-safe generic bounded buffer abstraction.
- --  Instances are useful directly or as parts of the implementations of other
- --  abstractions, such as mailboxes.
- 
- --  Bounded_Buffer is declared explicitly as a protected type, rather than as
- --  a simple limited private type completed as a protected type, so that
- --  clients may make calls accordingly (i.e., conditional/timed entry calls).
- 
- with System;
- 
- generic
-    type Element is private;
-    --  The type of the values contained within buffer objects
- 
- package GNAT.Bounded_Buffers is
-    pragma Pure;
- 
-    type Content is array (Positive range <>) of Element;
-    --  Content is an internal artefact that cannot be hidden because protected
-    --  types cannot contain type declarations.
- 
-    Default_Ceiling : constant System.Priority := System.Default_Priority;
-    --  A convenience value for the Ceiling discriminant
- 
-    protected type Bounded_Buffer
-       (Capacity : Positive;
-       --  Objects of type Bounded_Buffer specify the maximum number of Element
-       --  values they can hold via the discriminant Capacity.
- 
-       Ceiling : System.Priority)
-       --  Users must specify the ceiling priority for the object. If the
-       --  Real-Time Systems Annex is not in use this value is not important.
-    is
-       pragma Priority (Ceiling);
- 
-       entry Insert (Item : Element);
-       --  Insert Item into the buffer, blocks caller until space is available
- 
-       entry Remove (Item : out Element);
-       --  Remove next available Element from buffer. Blocks caller until an
-       --  Element is available.
- 
-       function Empty return Boolean;
-       --  Returns whether the instance contains any Elements.
-       --  Note: State may change immediately after call returns.
- 
-       function Full return Boolean;
-       --  Returns whether any space remains within the instance.
-       --  Note: State may change immediately after call returns.
- 
-       function Extent return Natural;
-       --  Returns the number of Element values currently held
-       --  within the instance.
-       --  Note: State may change immediately after call returns.
- 
-    private
-       Values   : Content (1 .. Capacity);
-       --  The container for the values held by the buffer instance
- 
-       Next_In  : Positive := 1;
-       --  The index of the next Element inserted. Wraps around
- 
-       Next_Out : Positive := 1;
-       --  The index of the next Element removed. Wraps around
- 
-       Count    : Natural  := 0;
-       --  The number of Elements currently held
-    end Bounded_Buffer;
- 
- end GNAT.Bounded_Buffers;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-boumai.ads gcc-8.1.0/gcc/ada/g-boumai.ads
*** gcc-7.3.0/gcc/ada/g-boumai.ads	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-boumai.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,96 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                 G N A T . B O U N D E D _ M A I L B O X E S              --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 2003-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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. --
- -- It is now maintained by Ada Core Technologies Inc (http://www.gnat.com). --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This package provides a thread-safe asynchronous communication facility
- --  in the form of mailboxes. Individual mailbox objects are bounded in size
- --  to a value specified by their Capacity discriminants.
- 
- --  Mailboxes actually hold references to messages, not the message values
- --  themselves.
- 
- --  Type Mailbox is defined explicitly as a protected type (via derivation
- --  from a protected type) so that clients may treat them accordingly (for
- --  example, by making conditional/timed entry calls).
- 
- with System;
- with GNAT.Bounded_Buffers;
- 
- generic
-    type Message (<>) is limited private;
-    type Message_Reference is access all Message;
-    --  Mailboxes hold references to Message values, of this type
- 
- package GNAT.Bounded_Mailboxes is
-    pragma Preelaborate;
- 
-    package Message_Refs is
-       new GNAT.Bounded_Buffers (Message_Reference);
- 
-    type Mailbox is new Message_Refs.Bounded_Buffer;
- 
-    --  Type Mailbox has two inherited discriminants:
- 
-    --  Capacity : Positive;
-    --     Capacity is the maximum number of Message references
-    --     possibly contained at any given instant.
- 
-    --  Ceiling : System.Priority;
-    --     Users must specify the ceiling priority for the object.
-    --     If the Real-Time Systems Annex is not in use this value
-    --     is not important.
- 
-    --  Protected type Mailbox has the following inherited interface:
- 
-    --  entry Insert (Item : Message_Reference);
-    --     Insert Item into the Mailbox. Blocks caller
-    --     until space is available.
- 
-    --  entry Remove (Item : out Message_Reference);
-    --     Remove next available Message_Reference from Mailbox.
-    --     Blocks caller until a Message_Reference is available.
- 
-    --  function Empty return Boolean;
-    --     Returns whether the Mailbox contains any Message_References.
-    --     Note: State may change immediately after call returns.
- 
-    --  function Full return Boolean;
-    --     Returns whether any space remains within the Mailbox.
-    --     Note: State may change immediately after call returns.
- 
-    --  function Extent return Natural;
-    --     Returns the number of Message_Reference values currently held
-    --     within the Mailbox.
-    --     Note: State may change immediately after call returns.
- 
-    Default_Ceiling : constant System.Priority := Message_Refs.Default_Ceiling;
-    --  A convenience value for the Ceiling discriminant
- 
- end GNAT.Bounded_Mailboxes;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-bubsor.adb gcc-8.1.0/gcc/ada/g-bubsor.adb
*** gcc-7.3.0/gcc/ada/g-bubsor.adb	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-bubsor.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,56 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                   G N A T . B U B B L E _ S O R T _ A                    --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 1995-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 GNAT.Bubble_Sort is
- 
-    ----------
-    -- Sort --
-    ----------
- 
-    procedure Sort (N : Natural; Xchg : Xchg_Procedure; Lt : Lt_Function) is
-       Switched : Boolean;
- 
-    begin
-       loop
-          Switched := False;
- 
-          for J in 1 .. N - 1 loop
-             if Lt (J + 1, J) then
-                Xchg (J, J + 1);
-                Switched := True;
-             end if;
-          end loop;
- 
-          exit when not Switched;
-       end loop;
-    end Sort;
- 
- end GNAT.Bubble_Sort;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-bubsor.ads gcc-8.1.0/gcc/ada/g-bubsor.ads
*** gcc-7.3.0/gcc/ada/g-bubsor.ads	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-bubsor.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,66 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                     G N A T . B U B B L E _ S O R T                      --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 1995-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Sort Utility (Using Bubblesort Algorithm)
- 
- --  This package provides a bubblesort routine that works with access to
- --  subprogram parameters, so that it can be used with different types with
- --  shared sorting code.
- 
- --  See also GNAT.Bubble_Sort_G and GNAT.Bubble_Sort_A. These are older
- --  versions of this routine. In some cases GNAT.Bubble_Sort_G may be a
- --  little faster than GNAT.Bubble_Sort, at the expense of generic code
- --  duplication and a less convenient interface. The generic version also
- --  has the advantage of being Pure, while this unit can only be Preelaborate.
- 
- package GNAT.Bubble_Sort is
-    pragma Pure;
- 
-    --  The data to be sorted is assumed to be indexed by integer values from
-    --  1 to N, where N is the number of items to be sorted.
- 
-    type Xchg_Procedure is access procedure (Op1, Op2 : Natural);
-    --  A pointer to a procedure that exchanges the two data items whose
-    --  index values are Op1 and Op2.
- 
-    type Lt_Function is access function (Op1, Op2 : Natural) return Boolean;
-    --  A pointer to a function that compares two items and returns True if
-    --  the item with index value Op1 is less than the item with Index value
-    --  Op2, and False if the Op1 item is greater than or equal to the Op2
-    --  item.
- 
-    procedure Sort (N : Natural; Xchg : Xchg_Procedure; Lt : Lt_Function);
-    --  This procedures sorts items in the range from 1 to N into ascending
-    --  order making calls to Lt to do required comparisons, and calls to
-    --  Xchg to exchange items. The sort is stable, that is the order of
-    --  equal items in the input is preserved.
- 
- end GNAT.Bubble_Sort;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-busora.adb gcc-8.1.0/gcc/ada/g-busora.adb
*** gcc-7.3.0/gcc/ada/g-busora.adb	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-busora.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,58 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                   G N A T . B U B B L E _ S O R T _ A                    --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 1995-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 GNAT.Bubble_Sort_A is
- 
-    ----------
-    -- Sort --
-    ----------
- 
-    procedure Sort (N : Natural; Move : Move_Procedure; Lt : Lt_Function) is
-       Switched : Boolean;
- 
-    begin
-       loop
-          Switched := False;
- 
-          for J in 1 .. N - 1 loop
-             if Lt (J + 1, J) then
-                Move (J, 0);
-                Move (J + 1, J);
-                Move (0, J + 1);
-                Switched := True;
-             end if;
-          end loop;
- 
-          exit when not Switched;
-       end loop;
-    end Sort;
- 
- end GNAT.Bubble_Sort_A;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-busora.ads gcc-8.1.0/gcc/ada/g-busora.ads
*** gcc-7.3.0/gcc/ada/g-busora.ads	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-busora.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,63 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                   G N A T . B U B B L E _ S O R T _ A                    --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 1995-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Bubblesort using access to procedure parameters
- 
- --  This package provides a bubble sort routine that works with access to
- --  subprogram parameters, so that it can be used with different types with
- --  shared sorting code. It is considered obsoleted by GNAT.Bubble_Sort which
- --  offers a similar routine with a more convenient interface.
- 
- package GNAT.Bubble_Sort_A is
-    pragma Preelaborate;
- 
-    --  The data to be sorted is assumed to be indexed by integer values from
-    --  1 to N, where N is the number of items to be sorted. In addition, the
-    --  index value zero is used for a temporary location used during the sort.
- 
-    type Move_Procedure is access procedure (From : Natural; To : Natural);
-    --  A pointer to a procedure that moves the data item with index From to
-    --  the data item with index To. An index value of zero is used for moves
-    --  from and to the single temporary location used by the sort.
- 
-    type Lt_Function is access function (Op1, Op2 : Natural) return Boolean;
-    --  A pointer to a function that compares two items and returns True if
-    --  the item with index Op1 is less than the item with index Op2, and False
-    --  if the Op2 item is greater than or equal to the Op1 item.
- 
-    procedure Sort (N : Natural; Move : Move_Procedure; Lt : Lt_Function);
-    --  This procedures sorts items in the range from 1 to N into ascending
-    --  order making calls to Lt to do required comparisons, and Move to move
-    --  items around. Note that, as described above, both Move and Lt use a
-    --  single temporary location with index value zero. This sort is not
-    --  stable, i.e. the order of equal elements in the input is not preserved.
- 
- end GNAT.Bubble_Sort_A;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-busorg.adb gcc-8.1.0/gcc/ada/g-busorg.adb
*** gcc-7.3.0/gcc/ada/g-busorg.adb	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-busorg.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,58 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                   G N A T . B U B B L E _ S O R T _ G                    --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 1995-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 GNAT.Bubble_Sort_G is
- 
-    ----------
-    -- Sort --
-    ----------
- 
-    procedure Sort (N : Natural) is
-       Switched : Boolean;
- 
-    begin
-       loop
-          Switched := False;
- 
-          for J in 1 .. N - 1 loop
-             if Lt (J + 1, J) then
-                Move (J, 0);
-                Move (J + 1, J);
-                Move (0, J + 1);
-                Switched := True;
-             end if;
-          end loop;
- 
-          exit when not Switched;
-       end loop;
-    end Sort;
- 
- end GNAT.Bubble_Sort_G;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-busorg.ads gcc-8.1.0/gcc/ada/g-busorg.ads
*** gcc-7.3.0/gcc/ada/g-busorg.ads	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-busorg.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,72 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                   G N A T . B U B B L E _ S O R T _ G                    --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 1995-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Bubblesort generic package using formal procedures
- 
- --  This package provides a generic bubble sort routine that can be used with
- --  different types of data.
- 
- --  See also GNAT.Bubble_Sort, a version that works with subprogram access
- --  parameters, allowing code sharing. The generic version is slightly more
- --  efficient but does not allow code sharing and has an interface that is
- --  more awkward to use.
- 
- --  There is also GNAT.Bubble_Sort_A, which is now considered obsolete, but
- --  was an older version working with subprogram parameters. This version
- --  is retained for backwards compatibility with old versions of GNAT.
- 
- generic
-    --  The data to be sorted is assumed to be indexed by integer values from
-    --  1 to N, where N is the number of items to be sorted. In addition, the
-    --  index value zero is used for a temporary location used during the sort.
- 
-    with procedure Move (From : Natural; To : Natural);
-    --  A procedure that moves the data item with index value From to the data
-    --  item with index value To (the old value in To being lost). An index
-    --  value of zero is used for moves from and to a single temporary location
-    --  used by the sort.
- 
-    with function Lt (Op1, Op2 : Natural) return Boolean;
-    --  A function that compares two items and returns True if the item with
-    --  index Op1 is less than the item with Index Op2, and False if the Op2
-    --  item is greater than or equal to the Op1 item.
- 
- package GNAT.Bubble_Sort_G is
-    pragma Pure;
- 
-    procedure Sort (N : Natural);
-    --  This procedures sorts items in the range from 1 to N into ascending
-    --  order making calls to Lt to do required comparisons, and Move to move
-    --  items around. Note that, as described above, both Move and Lt use a
-    --  single temporary location with index value zero. This sort is stable,
-    --  that is the order of equal elements in the input is preserved.
- 
- end GNAT.Bubble_Sort_G;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-byorma.adb gcc-8.1.0/gcc/ada/g-byorma.adb
*** gcc-7.3.0/gcc/ada/g-byorma.adb	Tue Feb 25 15:15:44 2014
--- gcc-8.1.0/gcc/ada/g-byorma.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,195 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                 G N A T . B Y T E _ O R D E R _ M A R K                  --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 2006-2013, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 Compiler_Unit_Warning;
- 
- package body GNAT.Byte_Order_Mark is
- 
-    --------------
-    -- Read_BOM --
-    --------------
- 
-    procedure Read_BOM
-      (Str         : String;
-       Len         : out Natural;
-       BOM         : out BOM_Kind;
-       XML_Support : Boolean := False)
-    is
-    begin
-       --  Note: the order of these tests is important, because in some cases
-       --  one sequence is a prefix of a longer sequence, and we must test for
-       --  the longer sequence first
- 
-       --  UTF-32 (big-endian)
- 
-       if Str'Length >= 4
-         and then Str (Str'First)     = Character'Val (16#00#)
-         and then Str (Str'First + 1) = Character'Val (16#00#)
-         and then Str (Str'First + 2) = Character'Val (16#FE#)
-         and then Str (Str'First + 3) = Character'Val (16#FF#)
-       then
-          Len := 4;
-          BOM := UTF32_BE;
- 
-       --  UTF-32 (little-endian)
- 
-       elsif Str'Length >= 4
-         and then Str (Str'First)     = Character'Val (16#FF#)
-         and then Str (Str'First + 1) = Character'Val (16#FE#)
-         and then Str (Str'First + 2) = Character'Val (16#00#)
-         and then Str (Str'First + 3) = Character'Val (16#00#)
-       then
-          Len := 4;
-          BOM := UTF32_LE;
- 
-       --  UTF-16 (big-endian)
- 
-       elsif Str'Length >= 2
-         and then Str (Str'First) = Character'Val (16#FE#)
-         and then Str (Str'First + 1) = Character'Val (16#FF#)
-       then
-          Len := 2;
-          BOM := UTF16_BE;
- 
-       --  UTF-16 (little-endian)
- 
-       elsif Str'Length >= 2
-         and then Str (Str'First) = Character'Val (16#FF#)
-         and then Str (Str'First + 1) = Character'Val (16#FE#)
-       then
-          Len := 2;
-          BOM := UTF16_LE;
- 
-       --  UTF-8 (endian-independent)
- 
-       elsif Str'Length >= 3
-         and then Str (Str'First)     = Character'Val (16#EF#)
-         and then Str (Str'First + 1) = Character'Val (16#BB#)
-         and then Str (Str'First + 2) = Character'Val (16#BF#)
-       then
-          Len := 3;
-          BOM := UTF8_All;
- 
-       --  UCS-4 (big-endian) XML only
- 
-       elsif XML_Support
-         and then Str'Length >= 4
-         and then Str (Str'First)     = Character'Val (16#00#)
-         and then Str (Str'First + 1) = Character'Val (16#00#)
-         and then Str (Str'First + 2) = Character'Val (16#00#)
-         and then Str (Str'First + 3) = Character'Val (16#3C#)
-       then
-          Len := 0;
-          BOM := UCS4_BE;
- 
-       --  UCS-4 (little-endian) XML case
- 
-       elsif XML_Support
-         and then Str'Length >= 4
-         and then Str (Str'First)     = Character'Val (16#3C#)
-         and then Str (Str'First + 1) = Character'Val (16#00#)
-         and then Str (Str'First + 2) = Character'Val (16#00#)
-         and then Str (Str'First + 3) = Character'Val (16#00#)
-       then
-          Len := 0;
-          BOM := UCS4_LE;
- 
-       --  UCS-4 (unusual byte order 2143) XML case
- 
-       elsif XML_Support
-         and then Str'Length >= 4
-         and then Str (Str'First)     = Character'Val (16#00#)
-         and then Str (Str'First + 1) = Character'Val (16#00#)
-         and then Str (Str'First + 2) = Character'Val (16#3C#)
-         and then Str (Str'First + 3) = Character'Val (16#00#)
-       then
-          Len := 0;
-          BOM := UCS4_2143;
- 
-       --  UCS-4 (unusual byte order 3412) XML case
- 
-       elsif XML_Support
-         and then Str'Length >= 4
-         and then Str (Str'First)     = Character'Val (16#00#)
-         and then Str (Str'First + 1) = Character'Val (16#3C#)
-         and then Str (Str'First + 2) = Character'Val (16#00#)
-         and then Str (Str'First + 3) = Character'Val (16#00#)
-       then
-          Len := 0;
-          BOM := UCS4_3412;
- 
-       --  UTF-16 (big-endian) XML case
- 
-       elsif XML_Support
-         and then Str'Length >= 4
-         and then Str (Str'First)     = Character'Val (16#00#)
-         and then Str (Str'First + 1) = Character'Val (16#3C#)
-         and then Str (Str'First + 2) = Character'Val (16#00#)
-         and then Str (Str'First + 3) = Character'Val (16#3F#)
-       then
-          Len := 0;
-          BOM := UTF16_BE;
- 
-       --  UTF-32 (little-endian) XML case
- 
-       elsif XML_Support
-         and then Str'Length >= 4
-         and then Str (Str'First)     = Character'Val (16#3C#)
-         and then Str (Str'First + 1) = Character'Val (16#00#)
-         and then Str (Str'First + 2) = Character'Val (16#3F#)
-         and then Str (Str'First + 3) = Character'Val (16#00#)
-       then
-          Len := 0;
-          BOM := UTF16_LE;
- 
-       --  Unrecognized special encodings XML only
- 
-       elsif XML_Support
-         and then Str'Length >= 4
-         and then Str (Str'First)     = Character'Val (16#3C#)
-         and then Str (Str'First + 1) = Character'Val (16#3F#)
-         and then Str (Str'First + 2) = Character'Val (16#78#)
-         and then Str (Str'First + 3) = Character'Val (16#6D#)
-       then
-          --  UTF-8, ASCII, some part of ISO8859, Shift-JIS, EUC,...
- 
-          Len := 0;
-          BOM := Unknown;
- 
-       --  No BOM recognized
- 
-       else
-          Len := 0;
-          BOM := Unknown;
-       end if;
-    end Read_BOM;
- 
- end GNAT.Byte_Order_Mark;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-byorma.ads gcc-8.1.0/gcc/ada/g-byorma.ads
*** gcc-7.3.0/gcc/ada/g-byorma.ads	Mon Jan 23 13:24:47 2017
--- gcc-8.1.0/gcc/ada/g-byorma.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,100 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                 G N A T . B Y T E _ O R D E R _ M A R K                  --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 2006-2016, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 a procedure for reading and interpreting the BOM
- --  (byte order mark) used to publish the encoding method for a string (for
- --  example, a UTF-8 encoded file in windows will start with the appropriate
- --  BOM sequence to signal UTF-8 encoding).
- 
- --  There are two cases
- 
- --    Case 1. UTF encodings for Unicode files
- 
- --      Here the convention is to have the first character of the file be a
- --      non-breaking zero width space character (16#0000_FEFF#). For the UTF
- --      encodings, the representation of this character can be used to uniquely
- --      determine the encoding. Furthermore, the possibility of any confusion
- --      with unencoded files is minimal, since for example the UTF-8 encoding
- --      of this character looks like the sequence:
- 
- --        LC_I_Diaeresis
- --        Right_Angle_Quotation
- --        Fraction_One_Half
- 
- --      which is so unlikely to occur legitimately in normal use that it can
- --      safely be ignored in most cases (for example, no legitimate Ada source
- --      file could start with this sequence of characters).
- 
- --   Case 2. Specialized XML encodings
- 
- --     The XML standard defines a number of other possible encodings and also
- --     defines standardized sequences for marking these encodings. This package
- --     can also optionally handle these XML defined BOM sequences. These XML
- --     cases depend on the first character of the XML file being < so that the
- --     encoding of this character can be recognized.
- 
- pragma Compiler_Unit_Warning;
- 
- package GNAT.Byte_Order_Mark is
- 
-    type BOM_Kind is
-      (UTF8_All,  --  UTF8-encoding
-       UTF16_LE,  --  UTF16 little-endian encoding
-       UTF16_BE,  --  UTF16 big-endian encoding
-       UTF32_LE,  --  UTF32 little-endian encoding
-       UTF32_BE,  --  UTF32 big-endian encoding
- 
-       --  The following cases are for XML only
- 
-       UCS4_BE,   --  UCS-4, big endian machine (1234 order)
-       UCS4_LE,   --  UCS-4, little endian machine (4321 order)
-       UCS4_2143, --  UCS-4, unusual byte order (2143 order)
-       UCS4_3412, --  UCS-4, unusual byte order (3412 order)
- 
-       --  Value returned if no BOM recognized
- 
-       Unknown);  --  Unknown, assumed to be ASCII compatible
- 
-    procedure Read_BOM
-      (Str         : String;
-       Len         : out Natural;
-       BOM         : out BOM_Kind;
-       XML_Support : Boolean := False);
-    --  This is the routine to read the BOM from the start of the given string
-    --  Str. On return BOM is set to the appropriate BOM_Kind and Len is set to
-    --  its length. The caller will typically skip the first Len characters in
-    --  the string to ignore the BOM sequence. The special XML possibilities are
-    --  recognized only if flag XML_Support is set to True. Note that for the
-    --  XML cases, Len is always set to zero on return (not to the length of the
-    --  relevant sequence) since in the XML cases, the sequence recognized is
-    --  for the first real character in the file (<) which is not to be skipped.
- 
- end GNAT.Byte_Order_Mark;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-bytswa.adb gcc-8.1.0/gcc/ada/g-bytswa.adb
*** gcc-7.3.0/gcc/ada/g-bytswa.adb	Thu Jul 12 10:37:17 2012
--- gcc-8.1.0/gcc/ada/g-bytswa.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,113 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                    G N A T . B Y T E _ S W A P P I N G                   --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 2006-2012, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 a general implementation that uses GCC intrinsics to take
- --  advantage of any machine-specific instructions.
- 
- with Ada.Unchecked_Conversion; use Ada;
- 
- with System.Byte_Swapping; use System.Byte_Swapping;
- 
- package body GNAT.Byte_Swapping is
- 
-    --------------
-    -- Swapped2 --
-    --------------
- 
-    function Swapped2 (Input : Item) return Item is
-       function As_U16 is new Unchecked_Conversion (Item, U16);
-       function As_Item is new Unchecked_Conversion (U16, Item);
-       pragma Compile_Time_Error (Item'Max_Size_In_Storage_Elements /= 2,
-         "storage size must be 2 bytes");
-    begin
-       return As_Item (Bswap_16 (As_U16 (Input)));
-    end Swapped2;
- 
-    --------------
-    -- Swapped4 --
-    --------------
- 
-    function Swapped4 (Input : Item) return Item is
-       function As_U32 is new Unchecked_Conversion (Item, U32);
-       function As_Item is new Unchecked_Conversion (U32, Item);
-       pragma Compile_Time_Error (Item'Max_Size_In_Storage_Elements /= 4,
-         "storage size must be 4 bytes");
-    begin
-       return As_Item (Bswap_32 (As_U32 (Input)));
-    end Swapped4;
- 
-    --------------
-    -- Swapped8 --
-    --------------
- 
-    function Swapped8 (Input : Item) return Item is
-       function As_U64 is new Unchecked_Conversion (Item, U64);
-       function As_Item is new Unchecked_Conversion (U64, Item);
-       pragma Compile_Time_Error (Item'Max_Size_In_Storage_Elements /= 8,
-         "storage size must be 8 bytes");
-    begin
-       return As_Item (Bswap_64 (As_U64 (Input)));
-    end Swapped8;
- 
-    -----------
-    -- Swap2 --
-    -----------
- 
-    procedure Swap2 (Location : System.Address) is
-       X : U16;
-       for X'Address use Location;
-    begin
-       X := Bswap_16 (X);
-    end Swap2;
- 
-    -----------
-    -- Swap4 --
-    -----------
- 
-    procedure Swap4 (Location : System.Address) is
-       X : U32;
-       for X'Address use Location;
-    begin
-       X := Bswap_32 (X);
-    end Swap4;
- 
-    -----------
-    -- Swap8 --
-    -----------
- 
-    procedure Swap8 (Location : System.Address) is
-       X : U64;
-       for X'Address use Location;
-    begin
-       X := Bswap_64 (X);
-    end Swap8;
- 
- end GNAT.Byte_Swapping;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-bytswa.ads gcc-8.1.0/gcc/ada/g-bytswa.ads
*** gcc-7.3.0/gcc/ada/g-bytswa.ads	Thu Jul 12 10:37:17 2012
--- gcc-8.1.0/gcc/ada/g-bytswa.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,206 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                    G N A T . B Y T E _ S W A P P I N G                   --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 2006-2012, AdaCore                     --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Simple routines for swapping the bytes of 16-, 32-, and 64-bit objects
- 
- --  The generic functions should be instantiated with types that are of a size
- --  in bytes corresponding to the name of the generic. For example, a 2-byte
- --  integer type would be compatible with Swapped2, 4-byte integer with
- --  Swapped4, and so on. Failure to do so will result in a warning when
- --  compiling the instantiation; this warning should be heeded. Ignoring this
- --  warning can result in unexpected results.
- 
- --  An example of proper usage follows:
- 
- --     declare
- --        type Short_Integer is range -32768 .. 32767;
- --        for Short_Integer'Size use 16; -- for confirmation
- 
- --        X : Short_Integer := 16#7FFF#;
- 
- --        function Swapped is new Byte_Swapping.Swapped2 (Short_Integer);
- 
- --     begin
- --        Put_Line (X'Img);
- --        X := Swapped (X);
- --        Put_Line (X'Img);
- --     end;
- 
- --  Note that the generic actual types need not be scalars, but must be
- --  'definite' types. They can, for example, be constrained subtypes of
- --  unconstrained array types as long as the size is correct. For instance,
- --  a subtype of String with length of 4 would be compatible with the
- --  Swapped4 generic:
- 
- --     declare
- --        subtype String4 is String (1 .. 4);
- --        function Swapped is new Byte_Swapping.Swapped4 (String4);
- --        S : String4 := "ABCD";
- --        for S'Alignment use 4;
- --     begin
- --        Put_Line (S);
- --        S := Swapped (S);
- --        Put_Line (S);
- --     end;
- 
- --  Similarly, a constrained array type is also acceptable:
- 
- --     declare
- --        type Mask is array (0 .. 15) of Boolean;
- --        for Mask'Alignment use 2;
- --        for Mask'Component_Size use Boolean'Size;
- --        X : Mask := (0 .. 7 => True, others => False);
- --        function Swapped is new Byte_Swapping.Swapped2 (Mask);
- --     begin
- --        ...
- --        X := Swapped (X);
- --        ...
- --     end;
- 
- --  A properly-sized record type will also be acceptable, and so forth
- 
- --  However, as described, a size mismatch must be avoided. In the following we
- --  instantiate one of the generics with a type that is too large. The result
- --  of the function call is undefined, such that assignment to an object can
- --  result in garbage values.
- 
- --     Wrong: declare
- --        subtype String16 is String (1 .. 16);
- 
- --        function Swapped is new Byte_Swapping.Swapped8 (String16);
- --        --  Instantiation generates a compiler warning about
- --        --  mismatched sizes
- 
- --        S : String16;
- 
- --     begin
- --        S := "ABCDEFGHDEADBEEF";
- --
- --        Put_Line (S);
- --
- --        --  the following assignment results in garbage in S after the
- --        --  first 8 bytes
- --
- --        S := Swapped (S);
- --
- --        Put_Line (S);
- --     end Wrong;
- 
- --  When the size of the type is larger than 8 bytes, the use of the non-
- --  generic procedures is an alternative because no function result is
- --  involved; manipulation of the object is direct.
- 
- --  The procedures are passed the address of an object to manipulate. They will
- --  swap the first N bytes of that object corresponding to the name of the
- --  procedure.  For example:
- 
- --     declare
- --        S2 : String := "AB";
- --        for S2'Alignment use 2;
- --        S4 : String := "ABCD";
- --        for S4'Alignment use 4;
- --        S8 : String := "ABCDEFGH";
- --        for S8'Alignment use 8;
- 
- --     begin
- --        Swap2 (S2'Address);
- --        Put_Line (S2);
- 
- --        Swap4 (S4'Address);
- --        Put_Line (S4);
- 
- --        Swap8 (S8'Address);
- --        Put_Line (S8);
- --     end;
- 
- --  If an object of a type larger than N is passed, the remaining bytes of the
- --  object are undisturbed. For example:
- 
- --     declare
- --        subtype String16 is String (1 .. 16);
- 
- --        S : String16;
- --        for S'Alignment use 8;
- 
- --     begin
- --        S  := "ABCDEFGHDEADBEEF";
- --        Put_Line (S);
- --        Swap8 (S'Address);
- --        Put_Line (S);
- --     end;
- 
- with System;
- 
- package GNAT.Byte_Swapping is
-    pragma Pure;
- 
-    --  NB: all the routines in this package treat the application objects as
-    --  unsigned (modular) types of a size in bytes corresponding to the routine
-    --  name. For example, the generic function Swapped2 manipulates the object
-    --  passed to the formal parameter Input as a value of an unsigned type that
-    --  is 2 bytes long. Therefore clients are responsible for the compatibility
-    --  of application types manipulated by these routines and these modular
-    --  types, in terms of both size and alignment. This requirement applies to
-    --  the generic actual type passed to the generic formal type Item in the
-    --  generic functions, as well as to the type of the object implicitly
-    --  designated by the address passed to the non-generic procedures. Use of
-    --  incompatible types can result in implementation- defined effects.
- 
-    generic
-       type Item is limited private;
-    function Swapped2 (Input : Item) return Item;
-    --  Return the 2-byte value of Input with the bytes swapped
- 
-    generic
-       type Item is limited private;
-    function Swapped4 (Input : Item) return Item;
-    --  Return the 4-byte value of Input with the bytes swapped
- 
-    generic
-       type Item is limited private;
-    function Swapped8 (Input : Item) return Item;
-    --  Return the 8-byte value of Input with the bytes swapped
- 
-    procedure Swap2 (Location : System.Address);
-    --  Swap the first 2 bytes of the object starting at the address specified
-    --  by Location.
- 
-    procedure Swap4 (Location : System.Address);
-    --  Swap the first 4 bytes of the object starting at the address specified
-    --  by Location.
- 
-    procedure Swap8 (Location : System.Address);
-    --  Swap the first 8 bytes of the object starting at the address specified
-    --  by Location.
- 
-    pragma Inline (Swap2, Swap4, Swap8, Swapped2, Swapped4, Swapped8);
- 
- end GNAT.Byte_Swapping;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-calend.adb gcc-8.1.0/gcc/ada/g-calend.adb
*** gcc-7.3.0/gcc/ada/g-calend.adb	Mon Aug  4 13:16:24 2014
--- gcc-8.1.0/gcc/ada/g-calend.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,652 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                         G N A T . C A L E N D A R                        --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 1999-2014, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 Interfaces.C.Extensions;
- 
- package body GNAT.Calendar is
-    use Ada.Calendar;
-    use Interfaces;
- 
-    -----------------
-    -- Day_In_Year --
-    -----------------
- 
-    function Day_In_Year (Date : Time) return Day_In_Year_Number is
-       Year     : Year_Number;
-       Month    : Month_Number;
-       Day      : Day_Number;
-       Day_Secs : Day_Duration;
-       pragma Unreferenced (Day_Secs);
-    begin
-       Split (Date, Year, Month, Day, Day_Secs);
-       return Julian_Day (Year, Month, Day) - Julian_Day (Year, 1, 1) + 1;
-    end Day_In_Year;
- 
-    -----------------
-    -- Day_Of_Week --
-    -----------------
- 
-    function Day_Of_Week (Date : Time) return Day_Name is
-       Year     : Year_Number;
-       Month    : Month_Number;
-       Day      : Day_Number;
-       Day_Secs : Day_Duration;
-       pragma Unreferenced (Day_Secs);
-    begin
-       Split (Date, Year, Month, Day, Day_Secs);
-       return Day_Name'Val ((Julian_Day (Year, Month, Day)) mod 7);
-    end Day_Of_Week;
- 
-    ----------
-    -- Hour --
-    ----------
- 
-    function Hour (Date : Time) return Hour_Number is
-       Year       : Year_Number;
-       Month      : Month_Number;
-       Day        : Day_Number;
-       Hour       : Hour_Number;
-       Minute     : Minute_Number;
-       Second     : Second_Number;
-       Sub_Second : Second_Duration;
-       pragma Unreferenced (Year, Month, Day, Minute, Second, Sub_Second);
-    begin
-       Split (Date, Year, Month, Day, Hour, Minute, Second, Sub_Second);
-       return Hour;
-    end Hour;
- 
-    ----------------
-    -- Julian_Day --
-    ----------------
- 
-    --  Julian_Day is used to by Day_Of_Week and Day_In_Year. Note that this
-    --  implementation is not expensive.
- 
-    function Julian_Day
-      (Year  : Year_Number;
-       Month : Month_Number;
-       Day   : Day_Number) return Integer
-    is
-       Internal_Year  : Integer;
-       Internal_Month : Integer;
-       Internal_Day   : Integer;
-       Julian_Date    : Integer;
-       C              : Integer;
-       Ya             : Integer;
- 
-    begin
-       Internal_Year  := Integer (Year);
-       Internal_Month := Integer (Month);
-       Internal_Day   := Integer (Day);
- 
-       if Internal_Month > 2 then
-          Internal_Month := Internal_Month - 3;
-       else
-          Internal_Month := Internal_Month + 9;
-          Internal_Year  := Internal_Year - 1;
-       end if;
- 
-       C  := Internal_Year / 100;
-       Ya := Internal_Year - (100 * C);
- 
-       Julian_Date := (146_097 * C) / 4 +
-         (1_461 * Ya) / 4 +
-         (153 * Internal_Month + 2) / 5 +
-         Internal_Day + 1_721_119;
- 
-       return Julian_Date;
-    end Julian_Day;
- 
-    ------------
-    -- Minute --
-    ------------
- 
-    function Minute (Date : Time) return Minute_Number is
-       Year       : Year_Number;
-       Month      : Month_Number;
-       Day        : Day_Number;
-       Hour       : Hour_Number;
-       Minute     : Minute_Number;
-       Second     : Second_Number;
-       Sub_Second : Second_Duration;
-       pragma Unreferenced (Year, Month, Day, Hour, Second, Sub_Second);
-    begin
-       Split (Date, Year, Month, Day, Hour, Minute, Second, Sub_Second);
-       return Minute;
-    end Minute;
- 
-    ------------
-    -- Second --
-    ------------
- 
-    function Second (Date : Time) return Second_Number is
-       Year       : Year_Number;
-       Month      : Month_Number;
-       Day        : Day_Number;
-       Hour       : Hour_Number;
-       Minute     : Minute_Number;
-       Second     : Second_Number;
-       Sub_Second : Second_Duration;
-       pragma Unreferenced (Year, Month, Day, Hour, Minute, Sub_Second);
-    begin
-       Split (Date, Year, Month, Day, Hour, Minute, Second, Sub_Second);
-       return Second;
-    end Second;
- 
-    -----------
-    -- Split --
-    -----------
- 
-    procedure Split
-      (Date       : Time;
-       Year       : out Year_Number;
-       Month      : out Month_Number;
-       Day        : out Day_Number;
-       Hour       : out Hour_Number;
-       Minute     : out Minute_Number;
-       Second     : out Second_Number;
-       Sub_Second : out Second_Duration)
-    is
-       Day_Secs : Day_Duration;
-       Secs     : Natural;
- 
-    begin
-       Split (Date, Year, Month, Day, Day_Secs);
- 
-       Secs       := (if Day_Secs = 0.0 then 0 else Natural (Day_Secs - 0.5));
-       Sub_Second := Second_Duration (Day_Secs - Day_Duration (Secs));
-       Hour       := Hour_Number (Secs / 3_600);
-       Secs       := Secs mod 3_600;
-       Minute     := Minute_Number (Secs / 60);
-       Second     := Second_Number (Secs mod 60);
-    end Split;
- 
-    ---------------------
-    -- Split_At_Locale --
-    ---------------------
- 
-    procedure Split_At_Locale
-      (Date       : Time;
-       Year       : out Year_Number;
-       Month      : out Month_Number;
-       Day        : out Day_Number;
-       Hour       : out Hour_Number;
-       Minute     : out Minute_Number;
-       Second     : out Second_Number;
-       Sub_Second : out Second_Duration)
-    is
-       procedure Ada_Calendar_Split
-         (Date        : Time;
-          Year        : out Year_Number;
-          Month       : out Month_Number;
-          Day         : out Day_Number;
-          Day_Secs    : out Day_Duration;
-          Hour        : out Integer;
-          Minute      : out Integer;
-          Second      : out Integer;
-          Sub_Sec     : out Duration;
-          Leap_Sec    : out Boolean;
-          Use_TZ      : Boolean;
-          Is_Historic : Boolean;
-          Time_Zone   : Long_Integer);
-       pragma Import (Ada, Ada_Calendar_Split, "__gnat_split");
- 
-       Ds : Day_Duration;
-       Le : Boolean;
- 
-       pragma Unreferenced (Ds, Le);
- 
-    begin
-       --  Even though the input time zone is UTC (0), the flag Use_TZ will
-       --  ensure that Split picks up the local time zone.
- 
-       Ada_Calendar_Split
-         (Date        => Date,
-          Year        => Year,
-          Month       => Month,
-          Day         => Day,
-          Day_Secs    => Ds,
-          Hour        => Hour,
-          Minute      => Minute,
-          Second      => Second,
-          Sub_Sec     => Sub_Second,
-          Leap_Sec    => Le,
-          Use_TZ      => False,
-          Is_Historic => False,
-          Time_Zone   => 0);
-    end Split_At_Locale;
- 
-    ----------------
-    -- Sub_Second --
-    ----------------
- 
-    function Sub_Second (Date : Time) return Second_Duration is
-       Year       : Year_Number;
-       Month      : Month_Number;
-       Day        : Day_Number;
-       Hour       : Hour_Number;
-       Minute     : Minute_Number;
-       Second     : Second_Number;
-       Sub_Second : Second_Duration;
-       pragma Unreferenced (Year, Month, Day, Hour, Minute, Second);
-    begin
-       Split (Date, Year, Month, Day, Hour, Minute, Second, Sub_Second);
-       return Sub_Second;
-    end Sub_Second;
- 
-    -------------
-    -- Time_Of --
-    -------------
- 
-    function Time_Of
-      (Year       : Year_Number;
-       Month      : Month_Number;
-       Day        : Day_Number;
-       Hour       : Hour_Number;
-       Minute     : Minute_Number;
-       Second     : Second_Number;
-       Sub_Second : Second_Duration := 0.0) return Time
-    is
-       Day_Secs : constant Day_Duration :=
-                    Day_Duration (Hour   * 3_600) +
-                    Day_Duration (Minute *    60) +
-                    Day_Duration (Second)         +
-                                  Sub_Second;
-    begin
-       return Time_Of (Year, Month, Day, Day_Secs);
-    end Time_Of;
- 
-    -----------------------
-    -- Time_Of_At_Locale --
-    -----------------------
- 
-    function Time_Of_At_Locale
-      (Year       : Year_Number;
-       Month      : Month_Number;
-       Day        : Day_Number;
-       Hour       : Hour_Number;
-       Minute     : Minute_Number;
-       Second     : Second_Number;
-       Sub_Second : Second_Duration := 0.0) return Time
-    is
-       function Ada_Calendar_Time_Of
-         (Year         : Year_Number;
-          Month        : Month_Number;
-          Day          : Day_Number;
-          Day_Secs     : Day_Duration;
-          Hour         : Integer;
-          Minute       : Integer;
-          Second       : Integer;
-          Sub_Sec      : Duration;
-          Leap_Sec     : Boolean;
-          Use_Day_Secs : Boolean;
-          Use_TZ       : Boolean;
-          Is_Historic  : Boolean;
-          Time_Zone    : Long_Integer) return Time;
-       pragma Import (Ada, Ada_Calendar_Time_Of, "__gnat_time_of");
- 
-    begin
-       --  Even though the input time zone is UTC (0), the flag Use_TZ will
-       --  ensure that Split picks up the local time zone.
- 
-       return
-         Ada_Calendar_Time_Of
-           (Year         => Year,
-            Month        => Month,
-            Day          => Day,
-            Day_Secs     => 0.0,
-            Hour         => Hour,
-            Minute       => Minute,
-            Second       => Second,
-            Sub_Sec      => Sub_Second,
-            Leap_Sec     => False,
-            Use_Day_Secs => False,
-            Use_TZ       => False,
-            Is_Historic  => False,
-            Time_Zone    => 0);
-    end Time_Of_At_Locale;
- 
-    -----------------
-    -- To_Duration --
-    -----------------
- 
-    function To_Duration (T : not null access timeval) return Duration is
- 
-       procedure timeval_to_duration
-         (T    : not null access timeval;
-          sec  : not null access C.Extensions.long_long;
-          usec : not null access C.long);
-       pragma Import (C, timeval_to_duration, "__gnat_timeval_to_duration");
- 
-       Micro : constant := 10**6;
-       sec   : aliased C.Extensions.long_long;
-       usec  : aliased C.long;
- 
-    begin
-       timeval_to_duration (T, sec'Access, usec'Access);
-       return Duration (sec) + Duration (usec) / Micro;
-    end To_Duration;
- 
-    ----------------
-    -- To_Timeval --
-    ----------------
- 
-    function To_Timeval (D : Duration) return timeval is
- 
-       procedure duration_to_timeval
-         (Sec  : C.Extensions.long_long;
-          Usec : C.long;
-          T : not null access timeval);
-       pragma Import (C, duration_to_timeval, "__gnat_duration_to_timeval");
- 
-       Micro  : constant := 10**6;
-       Result : aliased timeval;
-       sec    : C.Extensions.long_long;
-       usec   : C.long;
- 
-    begin
-       if D = 0.0 then
-          sec  := 0;
-          usec := 0;
-       else
-          sec  := C.Extensions.long_long (D - 0.5);
-          usec := C.long ((D - Duration (sec)) * Micro - 0.5);
-       end if;
- 
-       duration_to_timeval (sec, usec, Result'Access);
- 
-       return Result;
-    end To_Timeval;
- 
-    ------------------
-    -- Week_In_Year --
-    ------------------
- 
-    function Week_In_Year (Date : Time) return Week_In_Year_Number is
-       Year : Year_Number;
-       Week : Week_In_Year_Number;
-       pragma Unreferenced (Year);
-    begin
-       Year_Week_In_Year (Date, Year, Week);
-       return Week;
-    end Week_In_Year;
- 
-    -----------------------
-    -- Year_Week_In_Year --
-    -----------------------
- 
-    procedure Year_Week_In_Year
-      (Date : Time;
-       Year : out Year_Number;
-       Week : out Week_In_Year_Number)
-    is
-       Month      : Month_Number;
-       Day        : Day_Number;
-       Hour       : Hour_Number;
-       Minute     : Minute_Number;
-       Second     : Second_Number;
-       Sub_Second : Second_Duration;
-       Jan_1      : Day_Name;
-       Shift      : Week_In_Year_Number;
-       Start_Week : Week_In_Year_Number;
- 
-       pragma Unreferenced (Hour, Minute, Second, Sub_Second);
- 
-       function Is_Leap (Year : Year_Number) return Boolean;
-       --  Return True if Year denotes a leap year. Leap centennial years are
-       --  properly handled.
- 
-       function Jan_1_Day_Of_Week
-         (Jan_1     : Day_Name;
-          Year      : Year_Number;
-          Last_Year : Boolean := False;
-          Next_Year : Boolean := False) return Day_Name;
-       --  Given the weekday of January 1 in Year, determine the weekday on
-       --  which January 1 fell last year or will fall next year as set by
-       --  the two flags. This routine does not call Time_Of or Split.
- 
-       function Last_Year_Has_53_Weeks
-         (Jan_1 : Day_Name;
-          Year  : Year_Number) return Boolean;
-       --  Given the weekday of January 1 in Year, determine whether last year
-       --  has 53 weeks. A False value implies that the year has 52 weeks.
- 
-       -------------
-       -- Is_Leap --
-       -------------
- 
-       function Is_Leap (Year : Year_Number) return Boolean is
-       begin
-          if Year mod 400 = 0 then
-             return True;
-          elsif Year mod 100 = 0 then
-             return False;
-          else
-             return Year mod 4 = 0;
-          end if;
-       end Is_Leap;
- 
-       -----------------------
-       -- Jan_1_Day_Of_Week --
-       -----------------------
- 
-       function Jan_1_Day_Of_Week
-         (Jan_1     : Day_Name;
-          Year      : Year_Number;
-          Last_Year : Boolean := False;
-          Next_Year : Boolean := False) return Day_Name
-       is
-          Shift : Integer := 0;
- 
-       begin
-          if Last_Year then
-             Shift := (if Is_Leap (Year - 1) then -2 else -1);
-          elsif Next_Year then
-             Shift := (if Is_Leap (Year) then 2 else 1);
-          end if;
- 
-          return Day_Name'Val ((Day_Name'Pos (Jan_1) + Shift) mod 7);
-       end Jan_1_Day_Of_Week;
- 
-       ----------------------------
-       -- Last_Year_Has_53_Weeks --
-       ----------------------------
- 
-       function Last_Year_Has_53_Weeks
-         (Jan_1 : Day_Name;
-          Year  : Year_Number) return Boolean
-       is
-          Last_Jan_1 : constant Day_Name :=
-                         Jan_1_Day_Of_Week (Jan_1, Year, Last_Year => True);
- 
-       begin
-          --  These two cases are illustrated in the table below
- 
-          return
-            Last_Jan_1 = Thursday
-              or else (Last_Jan_1 = Wednesday and then Is_Leap (Year - 1));
-       end Last_Year_Has_53_Weeks;
- 
-    --  Start of processing for Week_In_Year
- 
-    begin
-       Split (Date, Year, Month, Day, Hour, Minute, Second, Sub_Second);
- 
-       --  According to ISO 8601, the first week of year Y is the week that
-       --  contains the first Thursday in year Y. The following table contains
-       --  all possible combinations of years and weekdays along with examples.
- 
-       --    +-------+------+-------+---------+
-       --    | Jan 1 | Leap | Weeks | Example |
-       --    +-------+------+-------+---------+
-       --    |  Mon  |  No  |  52   |  2007   |
-       --    +-------+------+-------+---------+
-       --    |  Mon  | Yes  |  52   |  1996   |
-       --    +-------+------+-------+---------+
-       --    |  Tue  |  No  |  52   |  2002   |
-       --    +-------+------+-------+---------+
-       --    |  Tue  | Yes  |  52   |  1980   |
-       --    +-------+------+-------+---------+
-       --    |  Wed  |  No  |  52   |  2003   |
-       --    +-------+------#########---------+
-       --    |  Wed  | Yes  #  53   #  1992   |
-       --    +-------+------#-------#---------+
-       --    |  Thu  |  No  #  53   #  1998   |
-       --    +-------+------#-------#---------+
-       --    |  Thu  | Yes  #  53   #  2004   |
-       --    +-------+------#########---------+
-       --    |  Fri  |  No  |  52   |  1999   |
-       --    +-------+------+-------+---------+
-       --    |  Fri  | Yes  |  52   |  1988   |
-       --    +-------+------+-------+---------+
-       --    |  Sat  |  No  |  52   |  1994   |
-       --    +-------+------+-------+---------+
-       --    |  Sat  | Yes  |  52   |  1972   |
-       --    +-------+------+-------+---------+
-       --    |  Sun  |  No  |  52   |  1995   |
-       --    +-------+------+-------+---------+
-       --    |  Sun  | Yes  |  52   |  1956   |
-       --    +-------+------+-------+---------+
- 
-       --  A small optimization, the input date is January 1. Note that this
-       --  is a key day since it determines the number of weeks and is used
-       --  when special casing the first week of January and the last week of
-       --  December.
- 
-       Jan_1 := Day_Of_Week (if Day = 1 and then Month = 1
-                             then Date
-                             else (Time_Of (Year, 1, 1, 0.0)));
- 
-       --  Special cases for January
- 
-       if Month = 1 then
- 
-          --  Special case 1: January 1, 2 and 3. These three days may belong
-          --  to last year's last week which can be week number 52 or 53.
- 
-          --    +-----+-----+-----+=====+-----+-----+-----+
-          --    | Mon | Tue | Wed # Thu # Fri | Sat | Sun |
-          --    +-----+-----+-----+-----+-----+-----+-----+
-          --    | 26  | 27  | 28  # 29  # 30  | 31  |  1  |
-          --    +-----+-----+-----+-----+-----+-----+-----+
-          --    | 27  | 28  | 29  # 30  # 31  |  1  |  2  |
-          --    +-----+-----+-----+-----+-----+-----+-----+
-          --    | 28  | 29  | 30  # 31  #  1  |  2  |  3  |
-          --    +-----+-----+-----+=====+-----+-----+-----+
- 
-          if (Day = 1 and then Jan_1 in Friday .. Sunday)
-                or else
-             (Day = 2 and then Jan_1 in Friday .. Saturday)
-                or else
-             (Day = 3 and then Jan_1 = Friday)
-          then
-             Week := (if Last_Year_Has_53_Weeks (Jan_1, Year) then 53 else 52);
- 
-             --  January 1, 2 and 3 belong to the previous year
- 
-             Year := Year - 1;
-             return;
- 
-          --  Special case 2: January 1, 2, 3, 4, 5, 6 and 7 of the first week
- 
-          --    +-----+-----+-----+=====+-----+-----+-----+
-          --    | Mon | Tue | Wed # Thu # Fri | Sat | Sun |
-          --    +-----+-----+-----+-----+-----+-----+-----+
-          --    | 29  | 30  | 31  #  1  #  2  |  3  |  4  |
-          --    +-----+-----+-----+-----+-----+-----+-----+
-          --    | 30  | 31  |  1  #  2  #  3  |  4  |  5  |
-          --    +-----+-----+-----+-----+-----+-----+-----+
-          --    | 31  |  1  |  2  #  3  #  4  |  5  |  6  |
-          --    +-----+-----+-----+-----+-----+-----+-----+
-          --    |  1  |  2  |  3  #  4  #  5  |  6  |  7  |
-          --    +-----+-----+-----+=====+-----+-----+-----+
- 
-          elsif (Day <= 4 and then Jan_1 in Monday .. Thursday)
-                   or else
-                (Day = 5  and then Jan_1 in Monday .. Wednesday)
-                   or else
-                (Day = 6  and then Jan_1 in Monday ..  Tuesday)
-                   or else
-                (Day = 7  and then Jan_1 = Monday)
-          then
-             Week := 1;
-             return;
-          end if;
- 
-       --  Month other than 1
- 
-       --  Special case 3: December 29, 30 and 31. These days may belong to
-       --  next year's first week.
- 
-       --    +-----+-----+-----+=====+-----+-----+-----+
-       --    | Mon | Tue | Wed # Thu # Fri | Sat | Sun |
-       --    +-----+-----+-----+-----+-----+-----+-----+
-       --    | 29  | 30  | 31  #  1  #  2  |  3  |  4  |
-       --    +-----+-----+-----+-----+-----+-----+-----+
-       --    | 30  | 31  |  1  #  2  #  3  |  4  |  5  |
-       --    +-----+-----+-----+-----+-----+-----+-----+
-       --    | 31  |  1  |  2  #  3  #  4  |  5  |  6  |
-       --    +-----+-----+-----+=====+-----+-----+-----+
- 
-       elsif Month = 12 and then Day > 28 then
-          declare
-             Next_Jan_1 : constant Day_Name :=
-                            Jan_1_Day_Of_Week (Jan_1, Year, Next_Year => True);
-          begin
-             if (Day = 29 and then Next_Jan_1 = Thursday)
-                   or else
-                (Day = 30 and then Next_Jan_1 in Wednesday .. Thursday)
-                   or else
-                (Day = 31 and then Next_Jan_1 in Tuesday .. Thursday)
-             then
-                Year := Year + 1;
-                Week := 1;
-                return;
-             end if;
-          end;
-       end if;
- 
-       --  Determine the week from which to start counting. If January 1 does
-       --  not belong to the first week of the input year, then the next week
-       --  is the first week.
- 
-       Start_Week := (if Jan_1 in Friday .. Sunday then 1 else 2);
- 
-       --  At this point all special combinations have been accounted for and
-       --  the proper start week has been found. Since January 1 may not fall
-       --  on a Monday, shift 7 - Day_Name'Pos (Jan_1). This action ensures an
-       --  origin which falls on Monday.
- 
-       Shift := 7 - Day_Name'Pos (Jan_1);
-       Week  := Start_Week + (Day_In_Year (Date) - Shift - 1) / 7;
-    end Year_Week_In_Year;
- 
- end GNAT.Calendar;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-calend.ads gcc-8.1.0/gcc/ada/g-calend.ads
*** gcc-7.3.0/gcc/ada/g-calend.ads	Thu Apr 21 10:27:54 2016
--- gcc-8.1.0/gcc/ada/g-calend.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,185 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                         G N A T . C A L E N D A R                        --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1999-2016, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 extends Ada.Calendar to handle Hour, Minute, Second,
- --  Second_Duration and Day_Of_Week and Day_In_Year from Calendar.Time.
- --  Second_Duration precision depends on the target clock precision.
- --
- --  GNAT.Calendar provides the same kind of abstraction found in Ada.Calendar.
- --  It provides Split and Time_Of to build and split a Time data. And it
- --  provides accessor functions to get only one of Hour, Minute, Second,
- --  Second_Duration. Other functions are to access more advanced values like
- --  Day_Of_Week, Day_In_Year and Week_In_Year.
- 
- with Ada.Calendar.Formatting;
- with Interfaces.C;
- 
- package GNAT.Calendar is
- 
-    type Day_Name is
-      (Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday);
-    pragma Ordered (Day_Name);
- 
-    subtype Hour_Number         is Natural range 0 .. 23;
-    subtype Minute_Number       is Natural range 0 .. 59;
-    subtype Second_Number       is Natural range 0 .. 59;
-    subtype Second_Duration     is Ada.Calendar.Day_Duration range 0.0 .. 1.0;
-    subtype Day_In_Year_Number  is Positive range 1 .. 366;
-    subtype Week_In_Year_Number is Positive range 1 .. 53;
- 
-    No_Time : constant Ada.Calendar.Time;
-    --  A constant set to the first date that can be represented by the type
-    --  Time. It can be used to indicate an uninitialized date.
- 
-    function Hour       (Date : Ada.Calendar.Time) return Hour_Number;
-    function Minute     (Date : Ada.Calendar.Time) return Minute_Number;
-    function Second     (Date : Ada.Calendar.Time) return Second_Number;
-    function Sub_Second (Date : Ada.Calendar.Time) return Second_Duration;
-    --  Hour, Minute, Second and Sub_Second returns the complete time data for
-    --  the Date (H:M:S.SS). See Ada.Calendar for Year, Month, Day accessors.
-    --  Second_Duration precision depends on the target clock precision.
- 
-    function Day_Of_Week (Date : Ada.Calendar.Time) return Day_Name;
-    --  Return the day name
- 
-    function Day_In_Year (Date : Ada.Calendar.Time) return Day_In_Year_Number;
-    --  Return the day number in the year. (1st January is day 1 and 31st
-    --  December is day 365 or 366 for leap year).
- 
-    procedure Split
-      (Date       : Ada.Calendar.Time;
-       Year       : out Ada.Calendar.Year_Number;
-       Month      : out Ada.Calendar.Month_Number;
-       Day        : out Ada.Calendar.Day_Number;
-       Hour       : out Hour_Number;
-       Minute     : out Minute_Number;
-       Second     : out Second_Number;
-       Sub_Second : out Second_Duration);
-    --  Split a standard Ada.Calendar.Time value in date data (Year, Month, Day)
-    --  and Time data (Hour, Minute, Second, Sub_Second).
- 
-    procedure Split_At_Locale
-      (Date       : Ada.Calendar.Time;
-       Year       : out Ada.Calendar.Year_Number;
-       Month      : out Ada.Calendar.Month_Number;
-       Day        : out Ada.Calendar.Day_Number;
-       Hour       : out Hour_Number;
-       Minute     : out Minute_Number;
-       Second     : out Second_Number;
-       Sub_Second : out Second_Duration);
-    --  Split a standard Ada.Calendar.Time value in date data (Year, Month, Day)
-    --  and Time data (Hour, Minute, Second, Sub_Second). This version of Split
-    --  utilizes the time zone and DST bias of the locale (equivalent to Clock).
-    --  Due to this simplified behavior, the implementation does not require
-    --  expensive system calls on targets such as Windows.
-    --  WARNING: Split_At_Locale is no longer aware of historic events and may
-    --  produce inaccurate results over DST changes which occurred in the past.
- 
-    function Time_Of
-      (Year       : Ada.Calendar.Year_Number;
-       Month      : Ada.Calendar.Month_Number;
-       Day        : Ada.Calendar.Day_Number;
-       Hour       : Hour_Number;
-       Minute     : Minute_Number;
-       Second     : Second_Number;
-       Sub_Second : Second_Duration := 0.0) return Ada.Calendar.Time;
-    --  Return an Ada.Calendar.Time data built from the date and time values
- 
-    function Time_Of_At_Locale
-      (Year       : Ada.Calendar.Year_Number;
-       Month      : Ada.Calendar.Month_Number;
-       Day        : Ada.Calendar.Day_Number;
-       Hour       : Hour_Number;
-       Minute     : Minute_Number;
-       Second     : Second_Number;
-       Sub_Second : Second_Duration := 0.0) return Ada.Calendar.Time;
-    --  Return an Ada.Calendar.Time data built from the date and time values.
-    --  This version of Time_Of utilizes the time zone and DST bias of the
-    --  locale (equivalent to Clock). Due to this simplified behavior, the
-    --  implementation does not require expensive system calls on targets such
-    --  as Windows.
-    --  WARNING: Split_At_Locale is no longer aware of historic events and may
-    --  produce inaccurate results over DST changes which occurred in the past.
- 
-    function Week_In_Year (Date : Ada.Calendar.Time) return Week_In_Year_Number;
-    --  Return the week number as defined in ISO 8601. A week always starts on
-    --  a Monday and the first week of a particular year is the one containing
-    --  the first Thursday. A year may have 53 weeks when January 1st is a
-    --  Wednesday and the year is leap or January 1st is a Thursday. Note that
-    --  the last days of December may belong to the first week on the next year
-    --  and conversely, the first days of January may belong to the last week
-    --  of the last year.
- 
-    procedure Year_Week_In_Year
-      (Date : Ada.Calendar.Time;
-       Year : out Ada.Calendar.Year_Number;
-       Week : out Week_In_Year_Number);
-    --  Return the week number as defined in ISO 8601 along with the year in
-    --  which the week occurs.
- 
-    --  C timeval conversion
- 
-    --  C timeval represent a duration (used in Select for example). This
-    --  structure is composed of a number of seconds and a number of micro
-    --  seconds. The timeval structure is not exposed here because its
-    --  definition is target dependent. Interface to C programs is done via a
-    --  pointer to timeval structure.
- 
-    type timeval is private;
- 
-    function To_Duration (T : not null access timeval) return Duration;
-    function To_Timeval  (D : Duration) return timeval;
- 
- private
-    --  This is a dummy declaration that should be the largest possible timeval
-    --  structure of all supported targets.
- 
-    type timeval is array (1 .. 3) of Interfaces.C.long;
- 
-    function Julian_Day
-      (Year  : Ada.Calendar.Year_Number;
-       Month : Ada.Calendar.Month_Number;
-       Day   : Ada.Calendar.Day_Number) return Integer;
-    --  Compute Julian day number
-    --
-    --  The code of this function is a modified version of algorithm 199 from
-    --  the Collected Algorithms of the ACM. The author of algorithm 199 is
-    --  Robert G. Tantzen.
- 
-    No_Time : constant Ada.Calendar.Time :=
-                Ada.Calendar.Formatting.Time_Of
-                  (Ada.Calendar.Year_Number'First,
-                   Ada.Calendar.Month_Number'First,
-                   Ada.Calendar.Day_Number'First,
-                   Time_Zone => 0);
-    --  Use Time_Zone => 0 to be the same binary representation in any timezone
- 
- end GNAT.Calendar;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-casuti.adb gcc-8.1.0/gcc/ada/g-casuti.adb
*** gcc-7.3.0/gcc/ada/g-casuti.adb	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-casuti.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,38 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                       G N A T . C A S E _ U T I L                        --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 1995-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 a dummy body, required because if we remove the body we have
- --  bootstrap path problems (this unit used to have a body, and if we do not
- --  supply a dummy body, the old incorrect body is picked up during the
- --  bootstrap process.
- 
- package body GNAT.Case_Util is
- end GNAT.Case_Util;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-casuti.ads gcc-8.1.0/gcc/ada/g-casuti.ads
*** gcc-7.3.0/gcc/ada/g-casuti.ads	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-casuti.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,77 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                       G N A T . C A S E _ U T I L                        --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 1995-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Simple casing functions
- 
- --  This package provides simple casing functions that do not require the
- --  overhead of the full casing tables found in Ada.Characters.Handling.
- 
- --  Note: actual code is found in System.Case_Util, which is used internally
- --  by the GNAT run time. Applications programs should always use this package
- --  rather than using System.Case_Util directly.
- 
- with System.Case_Util;
- 
- package GNAT.Case_Util is
-    pragma Pure;
-    pragma Elaborate_Body;
-    --  The elaborate body is because we have a dummy body to deal with
-    --  bootstrap path problems (we used to have a real body, and now we don't
-    --  need it any more, but the bootstrap requires that we have a dummy body,
-    --  since otherwise the old body gets picked up.
- 
-    --  Note: all the following functions handle the full Latin-1 set
- 
-    function To_Upper (A : Character) return Character
-      renames System.Case_Util.To_Upper;
-    --  Converts A to upper case if it is a lower case letter, otherwise
-    --  returns the input argument unchanged.
- 
-    procedure To_Upper (A : in out String)
-      renames System.Case_Util.To_Upper;
-    --  Folds all characters of string A to upper case
- 
-    function To_Lower (A : Character) return Character
-      renames System.Case_Util.To_Lower;
-    --  Converts A to lower case if it is an upper case letter, otherwise
-    --  returns the input argument unchanged.
- 
-    procedure To_Lower (A : in out String)
-      renames System.Case_Util.To_Lower;
-    --  Folds all characters of string A to lower case
- 
-    procedure To_Mixed (A : in out String)
-      renames System.Case_Util.To_Mixed;
-    --  Converts A to mixed case (i.e. lower case, except for initial
-    --  character and any character after an underscore, which are
-    --  converted to upper case.
- 
- end GNAT.Case_Util;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-catiio.adb gcc-8.1.0/gcc/ada/g-catiio.adb
*** gcc-7.3.0/gcc/ada/g-catiio.adb	Fri Jan 13 10:19:19 2017
--- gcc-8.1.0/gcc/ada/g-catiio.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,823 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                G N A T . C A L E N D A R . T I M E _ I O                 --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 1999-2016, AdaCore                     --
- --                                                                          --
- -- GNAT is 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.Calendar;            use Ada.Calendar;
- with Ada.Characters.Handling;
- with Ada.Strings.Unbounded;   use Ada.Strings.Unbounded;
- with Ada.Text_IO;
- 
- with GNAT.Case_Util;
- 
- package body GNAT.Calendar.Time_IO is
- 
-    type Month_Name is
-      (January,
-       February,
-       March,
-       April,
-       May,
-       June,
-       July,
-       August,
-       September,
-       October,
-       November,
-       December);
- 
-    function Month_Name_To_Number
-      (Str : String) return Ada.Calendar.Month_Number;
-    --  Converts a string that contains an abbreviated month name to a month
-    --  number. Constraint_Error is raised if Str is not a valid month name.
-    --  Comparison is case insensitive
- 
-    type Padding_Mode is (None, Zero, Space);
- 
-    type Sec_Number is mod 2 ** 64;
-    --  Type used to compute the number of seconds since 01/01/1970. A 32 bit
-    --  number will cover only a period of 136 years. This means that for date
-    --  past 2106 the computation is not possible. A 64 bits number should be
-    --  enough for a very large period of time.
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    function Am_Pm (H : Natural) return String;
-    --  Return AM or PM depending on the hour H
- 
-    function Hour_12 (H : Natural) return Positive;
-    --  Convert a 1-24h format to a 0-12 hour format
- 
-    function Image (Str : String; Length : Natural := 0) return String;
-    --  Return Str capitalized and cut to length number of characters. If
-    --  length is 0, then no cut operation is performed.
- 
-    function Image
-      (N       : Sec_Number;
-       Padding : Padding_Mode := Zero;
-       Length  : Natural := 0) return String;
-    --  Return image of N. This number is eventually padded with zeros or spaces
-    --  depending of the length required. If length is 0 then no padding occurs.
- 
-    function Image
-      (N       : Natural;
-       Padding : Padding_Mode := Zero;
-       Length  : Natural := 0) return String;
-    --  As above with N provided in Integer format
- 
-    -----------
-    -- Am_Pm --
-    -----------
- 
-    function Am_Pm (H : Natural) return String is
-    begin
-       if H = 0 or else H > 12 then
-          return "PM";
-       else
-          return "AM";
-       end if;
-    end Am_Pm;
- 
-    -------------
-    -- Hour_12 --
-    -------------
- 
-    function Hour_12 (H : Natural) return Positive is
-    begin
-       if H = 0 then
-          return 12;
-       elsif H <= 12 then
-          return H;
-       else --  H > 12
-          return H - 12;
-       end if;
-    end Hour_12;
- 
-    -----------
-    -- Image --
-    -----------
- 
-    function Image
-      (Str    : String;
-       Length : Natural := 0) return String
-    is
-       use Ada.Characters.Handling;
-       Local : constant String :=
-                 To_Upper (Str (Str'First)) &
-                   To_Lower (Str (Str'First + 1 .. Str'Last));
-    begin
-       if Length = 0 then
-          return Local;
-       else
-          return Local (1 .. Length);
-       end if;
-    end Image;
- 
-    -----------
-    -- Image --
-    -----------
- 
-    function Image
-      (N       : Natural;
-       Padding : Padding_Mode := Zero;
-       Length  : Natural := 0) return String
-    is
-    begin
-       return Image (Sec_Number (N), Padding, Length);
-    end Image;
- 
-    function Image
-      (N       : Sec_Number;
-       Padding : Padding_Mode := Zero;
-       Length  : Natural := 0) return String
-    is
-       function Pad_Char return String;
- 
-       --------------
-       -- Pad_Char --
-       --------------
- 
-       function Pad_Char return String is
-       begin
-          case Padding is
-             when None  => return "";
-             when Zero  => return "00";
-             when Space => return "  ";
-          end case;
-       end Pad_Char;
- 
-       --  Local Declarations
- 
-       NI  : constant String := Sec_Number'Image (N);
-       NIP : constant String := Pad_Char & NI (2 .. NI'Last);
- 
-    --  Start of processing for Image
- 
-    begin
-       if Length = 0 or else Padding = None then
-          return NI (2 .. NI'Last);
-       else
-          return NIP (NIP'Last - Length + 1 .. NIP'Last);
-       end if;
-    end Image;
- 
-    -----------
-    -- Image --
-    -----------
- 
-    function Image
-      (Date    : Ada.Calendar.Time;
-       Picture : Picture_String) return String
-    is
-       Padding : Padding_Mode := Zero;
-       --  Padding is set for one directive
- 
-       Result : Unbounded_String;
- 
-       Year       : Year_Number;
-       Month      : Month_Number;
-       Day        : Day_Number;
-       Hour       : Hour_Number;
-       Minute     : Minute_Number;
-       Second     : Second_Number;
-       Sub_Second : Second_Duration;
- 
-       P : Positive;
- 
-    begin
-       --  Get current time in split format
- 
-       Split (Date, Year, Month, Day, Hour, Minute, Second, Sub_Second);
- 
-       --  Null picture string is error
- 
-       if Picture = "" then
-          raise Picture_Error with "null picture string";
-       end if;
- 
-       --  Loop through characters of picture string, building result
- 
-       Result := Null_Unbounded_String;
-       P := Picture'First;
-       while P <= Picture'Last loop
- 
-          --  A directive has the following format "%[-_]."
- 
-          if Picture (P) = '%' then
-             Padding := Zero;
- 
-             if P = Picture'Last then
-                raise Picture_Error with "picture string ends with '%";
-             end if;
- 
-             --  Check for GNU extension to change the padding
- 
-             if Picture (P + 1) = '-' then
-                Padding := None;
-                P := P + 1;
- 
-             elsif Picture (P + 1) = '_' then
-                Padding := Space;
-                P := P + 1;
-             end if;
- 
-             if P = Picture'Last then
-                raise Picture_Error with "picture string ends with '- or '_";
-             end if;
- 
-             case Picture (P + 1) is
- 
-                --  Literal %
- 
-                when '%' =>
-                   Result := Result & '%';
- 
-                --  A newline
- 
-                when 'n' =>
-                   Result := Result & ASCII.LF;
- 
-                --  A horizontal tab
- 
-                when 't' =>
-                   Result := Result & ASCII.HT;
- 
-                --  Hour (00..23)
- 
-                when 'H' =>
-                   Result := Result & Image (Hour, Padding, 2);
- 
-                --  Hour (01..12)
- 
-                when 'I' =>
-                   Result := Result & Image (Hour_12 (Hour), Padding, 2);
- 
-                --  Hour ( 0..23)
- 
-                when 'k' =>
-                   Result := Result & Image (Hour, Space, 2);
- 
-                --  Hour ( 1..12)
- 
-                when 'l' =>
-                   Result := Result & Image (Hour_12 (Hour), Space, 2);
- 
-                --  Minute (00..59)
- 
-                when 'M' =>
-                   Result := Result & Image (Minute, Padding, 2);
- 
-                --  AM/PM
- 
-                when 'p' =>
-                   Result := Result & Am_Pm (Hour);
- 
-                --  Time, 12-hour (hh:mm:ss [AP]M)
- 
-                when 'r' =>
-                   Result := Result &
-                     Image (Hour_12 (Hour), Padding, Length => 2) & ':' &
-                     Image (Minute, Padding, Length => 2) & ':' &
-                     Image (Second, Padding, Length => 2) & ' ' &
-                     Am_Pm (Hour);
- 
-                --   Seconds since 1970-01-01  00:00:00 UTC
-                --   (a nonstandard extension)
- 
-                when 's' =>
-                   declare
-                      --  Compute the number of seconds using Ada.Calendar.Time
-                      --  values rather than Julian days to account for Daylight
-                      --  Savings Time.
- 
-                      Neg : Boolean  := False;
-                      Sec : Duration := Date - Time_Of (1970, 1, 1, 0.0);
- 
-                   begin
-                      --  Avoid rounding errors and perform special processing
-                      --  for dates earlier than the Unix Epoc.
- 
-                      if Sec > 0.0 then
-                         Sec := Sec - 0.5;
-                      elsif Sec < 0.0 then
-                         Neg := True;
-                         Sec := abs (Sec + 0.5);
-                      end if;
- 
-                      --  Prepend a minus sign to the result since Sec_Number
-                      --  cannot handle negative numbers.
- 
-                      if Neg then
-                         Result :=
-                           Result & "-" & Image (Sec_Number (Sec), None);
-                      else
-                         Result := Result & Image (Sec_Number (Sec), None);
-                      end if;
-                   end;
- 
-                --  Second (00..59)
- 
-                when 'S' =>
-                   Result := Result & Image (Second, Padding, Length => 2);
- 
-                --  Milliseconds (3 digits)
-                --  Microseconds (6 digits)
-                --  Nanoseconds  (9 digits)
- 
-                when 'i' | 'e' | 'o' =>
-                   declare
-                      Sub_Sec : constant Long_Integer :=
-                                  Long_Integer (Sub_Second * 1_000_000_000);
- 
-                      Img1  : constant String := Sub_Sec'Img;
-                      Img2  : constant String :=
-                                "00000000" & Img1 (Img1'First + 1 .. Img1'Last);
-                      Nanos : constant String :=
-                                Img2 (Img2'Last - 8 .. Img2'Last);
- 
-                   begin
-                      case Picture (P + 1) is
-                         when 'i' =>
-                            Result := Result &
-                              Nanos (Nanos'First .. Nanos'First + 2);
- 
-                         when 'e' =>
-                            Result := Result &
-                              Nanos (Nanos'First .. Nanos'First + 5);
- 
-                         when 'o' =>
-                            Result := Result & Nanos;
- 
-                         when others =>
-                            null;
-                      end case;
-                   end;
- 
-                --  Time, 24-hour (hh:mm:ss)
- 
-                when 'T' =>
-                   Result := Result &
-                     Image (Hour, Padding, Length => 2)   & ':' &
-                     Image (Minute, Padding, Length => 2) & ':' &
-                     Image (Second, Padding, Length => 2);
- 
-                --  Locale's abbreviated weekday name (Sun..Sat)
- 
-                when 'a' =>
-                   Result := Result &
-                     Image (Day_Name'Image (Day_Of_Week (Date)), 3);
- 
-                --  Locale's full weekday name, variable length
-                --  (Sunday..Saturday)
- 
-                when 'A' =>
-                   Result := Result &
-                     Image (Day_Name'Image (Day_Of_Week (Date)));
- 
-                --  Locale's abbreviated month name (Jan..Dec)
- 
-                when 'b' | 'h' =>
-                   Result := Result &
-                     Image (Month_Name'Image (Month_Name'Val (Month - 1)), 3);
- 
-                --  Locale's full month name, variable length
-                --  (January..December).
- 
-                when 'B' =>
-                   Result := Result &
-                     Image (Month_Name'Image (Month_Name'Val (Month - 1)));
- 
-                --  Locale's date and time (Sat Nov 04 12:02:33 EST 1989)
- 
-                when 'c' =>
-                   case Padding is
-                      when Zero =>
-                         Result := Result & Image (Date, "%a %b %d %T %Y");
-                      when Space =>
-                         Result := Result & Image (Date, "%a %b %_d %_T %Y");
-                      when None =>
-                         Result := Result & Image (Date, "%a %b %-d %-T %Y");
-                   end case;
- 
-                --   Day of month (01..31)
- 
-                when 'd' =>
-                   Result := Result & Image (Day, Padding, 2);
- 
-                --  Date (mm/dd/yy)
- 
-                when 'D' | 'x' =>
-                   Result := Result &
-                               Image (Month, Padding, 2) & '/' &
-                               Image (Day, Padding, 2) & '/' &
-                               Image (Year, Padding, 2);
- 
-                --  Day of year (001..366)
- 
-                when 'j' =>
-                   Result := Result & Image (Day_In_Year (Date), Padding, 3);
- 
-                --  Month (01..12)
- 
-                when 'm' =>
-                   Result := Result & Image (Month, Padding, 2);
- 
-                --  Week number of year with Sunday as first day of week
-                --  (00..53)
- 
-                when 'U' =>
-                   declare
-                      Offset : constant Natural :=
-                                 (Julian_Day (Year, 1, 1) + 1) mod 7;
- 
-                      Week : constant Natural :=
-                               1 + ((Day_In_Year (Date) - 1) + Offset) / 7;
- 
-                   begin
-                      Result := Result & Image (Week, Padding, 2);
-                   end;
- 
-                --  Day of week (0..6) with 0 corresponding to Sunday
- 
-                when 'w' =>
-                   declare
-                      DOW : constant Natural range 0 .. 6 :=
-                              (if Day_Of_Week (Date) = Sunday
-                               then 0
-                               else Day_Name'Pos (Day_Of_Week (Date)));
-                   begin
-                      Result := Result & Image (DOW, Length => 1);
-                   end;
- 
-                --  Week number of year with Monday as first day of week
-                --  (00..53)
- 
-                when 'W' =>
-                   Result := Result & Image (Week_In_Year (Date), Padding, 2);
- 
-                --  Last two digits of year (00..99)
- 
-                when 'y' =>
-                   declare
-                      Y : constant Natural := Year - (Year / 100) * 100;
-                   begin
-                      Result := Result & Image (Y, Padding, 2);
-                   end;
- 
-                --   Year (1970...)
- 
-                when 'Y' =>
-                   Result := Result & Image (Year, None, 4);
- 
-                when others =>
-                   raise Picture_Error with
-                     "unknown format character in picture string";
-             end case;
- 
-             --  Skip past % and format character
- 
-             P := P + 2;
- 
-          --  Character other than % is copied into the result
- 
-          else
-             Result := Result & Picture (P);
-             P := P + 1;
-          end if;
-       end loop;
- 
-       return To_String (Result);
-    end Image;
- 
-    --------------------------
-    -- Month_Name_To_Number --
-    --------------------------
- 
-    function Month_Name_To_Number
-      (Str : String) return Ada.Calendar.Month_Number
-    is
-       subtype String3 is String (1 .. 3);
-       Abbrev_Upper_Month_Names :
-         constant array (Ada.Calendar.Month_Number) of String3 :=
-          ("JAN", "FEB", "MAR", "APR", "MAY", "JUN",
-           "JUL", "AUG", "SEP", "OCT", "NOV", "DEC");
-       --  Short version of the month names, used when parsing date strings
- 
-       S                                                     : String := Str;
- 
-    begin
-       GNAT.Case_Util.To_Upper (S);
- 
-       for J in Abbrev_Upper_Month_Names'Range loop
-          if Abbrev_Upper_Month_Names (J) = S then
-             return J;
-          end if;
-       end loop;
- 
-       return Abbrev_Upper_Month_Names'First;
-    end Month_Name_To_Number;
- 
-    -----------
-    -- Value --
-    -----------
- 
-    function Value (Date : String) return Ada.Calendar.Time is
-       D          : String (1 .. 21);
-       D_Length   : constant Natural := Date'Length;
- 
-       Year   : Year_Number;
-       Month  : Month_Number;
-       Day    : Day_Number;
-       Hour   : Hour_Number;
-       Minute : Minute_Number;
-       Second : Second_Number;
- 
-       procedure Extract_Date
-         (Year       : out Year_Number;
-          Month      : out Month_Number;
-          Day        : out Day_Number;
-          Time_Start : out Natural);
-       --  Try and extract a date value from string D. Time_Start is set to the
-       --  first character that could be the start of time data.
- 
-       procedure Extract_Time
-         (Index       : Positive;
-          Hour        : out Hour_Number;
-          Minute      : out Minute_Number;
-          Second      : out Second_Number;
-          Check_Space : Boolean := False);
-       --  Try and extract a time value from string D starting from position
-       --  Index. Set Check_Space to True to check whether the character at
-       --  Index - 1 is a space. Raise Constraint_Error if the portion of D
-       --  corresponding to the date is not well formatted.
- 
-       ------------------
-       -- Extract_Date --
-       ------------------
- 
-       procedure Extract_Date
-         (Year       : out Year_Number;
-          Month      : out Month_Number;
-          Day        : out Day_Number;
-          Time_Start : out Natural)
-       is
-       begin
-          if D (3) = '-' or else D (3) = '/' then
-             if D_Length = 8 or else D_Length = 17 then
- 
-                --  Formats are "yy*mm*dd" or "yy*mm*dd hh:mm:ss"
- 
-                if D (6) /= D (3) then
-                   raise Constraint_Error;
-                end if;
- 
-                Year  := Year_Number'Value ("20" & D (1 .. 2));
-                Month := Month_Number'Value       (D (4 .. 5));
-                Day   := Day_Number'Value         (D (7 .. 8));
-                Time_Start := 10;
- 
-             elsif D_Length = 10 or else D_Length = 19 then
- 
-                --  Formats are "mm*dd*yyyy" or "mm*dd*yyyy hh:mm:ss"
- 
-                if D (6) /= D (3) then
-                   raise Constraint_Error;
-                end if;
- 
-                Year  := Year_Number'Value  (D (7 .. 10));
-                Month := Month_Number'Value (D (1 .. 2));
-                Day   := Day_Number'Value   (D (4 .. 5));
-                Time_Start := 12;
- 
-             elsif D_Length = 11 or else D_Length = 20 then
- 
-                --  Formats are "dd*mmm*yyyy" or "dd*mmm*yyyy hh:mm:ss"
- 
-                if D (7) /= D (3) then
-                   raise Constraint_Error;
-                end if;
- 
-                Year  := Year_Number'Value  (D (8 .. 11));
-                Month := Month_Name_To_Number (D (4 .. 6));
-                Day   := Day_Number'Value   (D (1 .. 2));
-                Time_Start := 13;
- 
-             else
-                raise Constraint_Error;
-             end if;
- 
-          elsif D (3) = ' ' then
-             if D_Length = 11 or else D_Length = 20 then
- 
-                --  Possible formats are "dd mmm yyyy", "dd mmm yyyy hh:mm:ss"
- 
-                if D (7) /= ' ' then
-                   raise Constraint_Error;
-                end if;
- 
-                Year  := Year_Number'Value  (D (8 .. 11));
-                Month := Month_Name_To_Number (D (4 .. 6));
-                Day   := Day_Number'Value   (D (1 .. 2));
-                Time_Start := 13;
- 
-             else
-                raise Constraint_Error;
-             end if;
- 
-          else
-             if D_Length = 8 or else D_Length = 17 then
- 
-                --  Possible formats are "yyyymmdd" or "yyyymmdd hh:mm:ss"
- 
-                Year  := Year_Number'Value (D (1 .. 4));
-                Month := Month_Number'Value (D (5 .. 6));
-                Day   := Day_Number'Value (D (7 .. 8));
-                Time_Start := 10;
- 
-             elsif D_Length = 10 or else D_Length = 19 then
- 
-                --  Possible formats are "yyyy*mm*dd" or "yyyy*mm*dd hh:mm:ss"
- 
-                if (D (5) /= '-' and then D (5) /= '/')
-                  or else D (8) /= D (5)
-                then
-                   raise Constraint_Error;
-                end if;
- 
-                Year  := Year_Number'Value (D (1 .. 4));
-                Month := Month_Number'Value (D (6 .. 7));
-                Day   := Day_Number'Value (D (9 .. 10));
-                Time_Start := 12;
- 
-             elsif D_Length = 11 or else D_Length = 20 then
- 
-                --  Possible formats are "yyyy*mmm*dd"
- 
-                if (D (5) /= '-' and then D (5) /= '/')
-                  or else D (9) /= D (5)
-                then
-                   raise Constraint_Error;
-                end if;
- 
-                Year  := Year_Number'Value (D (1 .. 4));
-                Month := Month_Name_To_Number (D (6 .. 8));
-                Day   := Day_Number'Value (D (10 .. 11));
-                Time_Start := 13;
- 
-             elsif D_Length = 12 or else D_Length = 21 then
- 
-                --  Formats are "mmm dd, yyyy" or "mmm dd, yyyy hh:mm:ss"
- 
-                if D (4) /= ' '
-                  or else D (7) /= ','
-                  or else D (8) /= ' '
-                then
-                   raise Constraint_Error;
-                end if;
- 
-                Year  := Year_Number'Value (D (9 .. 12));
-                Month := Month_Name_To_Number (D (1 .. 3));
-                Day   := Day_Number'Value (D (5 .. 6));
-                Time_Start := 14;
- 
-             else
-                raise Constraint_Error;
-             end if;
-          end if;
-       end Extract_Date;
- 
-       ------------------
-       -- Extract_Time --
-       ------------------
- 
-       procedure Extract_Time
-         (Index       : Positive;
-          Hour        : out Hour_Number;
-          Minute      : out Minute_Number;
-          Second      : out Second_Number;
-          Check_Space : Boolean := False)
-       is
-       begin
-          --  If no time was specified in the string (do not allow trailing
-          --  character either)
- 
-          if Index = D_Length + 2 then
-             Hour   := 0;
-             Minute := 0;
-             Second := 0;
- 
-          else
-             --  Not enough characters left ?
- 
-             if Index /= D_Length - 7 then
-                raise Constraint_Error;
-             end if;
- 
-             if Check_Space and then D (Index - 1) /= ' ' then
-                raise Constraint_Error;
-             end if;
- 
-             if D (Index + 2) /= ':' or else D (Index + 5) /= ':' then
-                raise Constraint_Error;
-             end if;
- 
-             Hour   := Hour_Number'Value   (D (Index     .. Index + 1));
-             Minute := Minute_Number'Value (D (Index + 3 .. Index + 4));
-             Second := Second_Number'Value (D (Index + 6 .. Index + 7));
-          end if;
-       end Extract_Time;
- 
-       --  Local Declarations
- 
-       Time_Start : Natural := 1;
- 
-    --  Start of processing for Value
- 
-    begin
-       --  Length checks
- 
-       if D_Length /= 8
-         and then D_Length /= 10
-         and then D_Length /= 11
-         and then D_Length /= 12
-         and then D_Length /= 17
-         and then D_Length /= 19
-         and then D_Length /= 20
-         and then D_Length /= 21
-       then
-          raise Constraint_Error;
-       end if;
- 
-       --  After the correct length has been determined, it is safe to create
-       --  a local string copy in order to avoid String'First N arithmetic.
- 
-       D (1 .. D_Length) := Date;
- 
-       if D_Length /= 8 or else D (3) /= ':' then
-          Extract_Date (Year, Month, Day, Time_Start);
-          Extract_Time (Time_Start, Hour, Minute, Second, Check_Space => True);
- 
-       else
-          declare
-             Discard : Second_Duration;
-          begin
-             Split (Clock, Year, Month, Day, Hour, Minute, Second,
-                    Sub_Second => Discard);
-          end;
- 
-          Extract_Time (1, Hour, Minute, Second, Check_Space => False);
-       end if;
- 
-       --  Sanity checks
- 
-       if not Year'Valid
-         or else not Month'Valid
-         or else not Day'Valid
-         or else not Hour'Valid
-         or else not Minute'Valid
-         or else not Second'Valid
-       then
-          raise Constraint_Error;
-       end if;
- 
-       return Time_Of (Year, Month, Day, Hour, Minute, Second);
-    end Value;
- 
-    --------------
-    -- Put_Time --
-    --------------
- 
-    procedure Put_Time (Date : Ada.Calendar.Time; Picture : Picture_String) is
-    begin
-       Ada.Text_IO.Put (Image (Date, Picture));
-    end Put_Time;
- 
- end GNAT.Calendar.Time_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-catiio.ads gcc-8.1.0/gcc/ada/g-catiio.ads
*** gcc-7.3.0/gcc/ada/g-catiio.ads	Wed Jan 22 16:53:24 2014
--- gcc-8.1.0/gcc/ada/g-catiio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,156 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                G N A T . C A L E N D A R . T I M E _ I O                 --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 1999-2013, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 augments standard Ada.Text_IO with facilities for input
- --  and output of time values in standardized format.
- 
- package GNAT.Calendar.Time_IO is
- 
-    Picture_Error : exception;
-    --  Exception raised for incorrect picture
- 
-    type Picture_String is new String;
-    --  This is a string to describe date and time output format. The string is
-    --  a set of standard character and special tag that are replaced by the
-    --  corresponding values. It follows the GNU Date specification. Here are
-    --  the recognized directives :
-    --
-    --          %    a literal %
-    --          n    a newline
-    --          t    a horizontal tab
-    --
-    --          Time fields:
-    --
-    --          %H   hour (00..23)
-    --          %I   hour (01..12)
-    --          %k   hour ( 0..23)
-    --          %l   hour ( 1..12)
-    --          %M   minute (00..59)
-    --          %p   locale's AM or PM
-    --          %r   time, 12-hour (hh:mm:ss [AP]M)
-    --          %s   seconds  since 1970-01-01  00:00:00 UTC
-    --                (a nonstandard extension)
-    --          %S   second (00..59)
-    --          %T   time, 24-hour (hh:mm:ss)
-    --
-    --          Date fields:
-    --
-    --          %a   locale's abbreviated weekday name (Sun..Sat)
-    --          %A   locale's    full   weekday   name,    variable   length
-    --                  (Sunday..Saturday)
-    --          %b   locale's abbreviated month name (Jan..Dec)
-    --          %B   locale's    full    month    name,   variable    length
-    --                  (January..December)
-    --          %c   locale's date and time (Sat Nov 04 12:02:33 EST 1989)
-    --          %d   day of month (01..31)
-    --          %D   date (mm/dd/yy)
-    --          %h   same as %b
-    --          %j   day of year (001..366)
-    --          %m   month (01..12)
-    --          %U   week number  of year with  Sunday as first day  of week
-    --                  (00..53)
-    --          %w   day of week (0..6) with 0 corresponding to Sunday
-    --          %W   week number  of year with  Monday as first day  of week
-    --                  (00..53)
-    --          %x   locale's date representation (mm/dd/yy)
-    --          %y   last two digits of year (00..99)
-    --          %Y   year (1970...)
-    --
-    --          By default,  date pads numeric fields with zeroes.  GNU date
-    --          recognizes the following nonstandard numeric modifiers:
-    --
-    --          -    (hyphen) do not pad the field
-    --          _    (underscore) pad the field with spaces
-    --
-    --  Here are some GNAT extensions to the GNU Date specification:
-    --
-    --          %i   milliseconds (3 digits)
-    --          %e   microseconds (6 digits)
-    --          %o   nanoseconds  (9 digits)
- 
-    ISO_Date : constant Picture_String;
-    --  This format follow the ISO 8601 standard. The format is "YYYY-MM-DD",
-    --  four digits year, month and day number separated by minus.
- 
-    US_Date : constant Picture_String;
-    --  This format is the common US date format: "MM/DD/YY",
-    --  month and day number, two digits year separated by slashes.
- 
-    European_Date : constant Picture_String;
-    --  This format is the common European date format: "DD/MM/YY",
-    --  day and month number, two digits year separated by slashes.
- 
-    function Image
-      (Date    : Ada.Calendar.Time;
-       Picture : Picture_String) return String;
-    --  Return Date, as interpreted in the current local time zone, as a string
-    --  with format Picture. Raise Picture_Error if picture string is null or
-    --  has an incorrect format.
- 
-    function Value (Date : String) return Ada.Calendar.Time;
-    --  Parse the string Date, interpreted as a time representation in the
-    --  current local time zone, and return the corresponding Time value. The
-    --  following time format is supported:
-    --
-    --     hh:mm:ss             - Date is the current date
-    --
-    --  The following formats are also supported. They all accept an optional
-    --  time with the format "hh:mm:ss". The time is separated from the date by
-    --  exactly one space character.
-    --
-    --  When the time is not specified, it is set to 00:00:00. The delimiter '*'
-    --  must be either '-' and '/' and both occurrences must use the same
-    --  character.
-    --
-    --  Trailing characters (in particular spaces) are not allowed
-    --
-    --     yyyy*mm*dd           - ISO format
-    --     yy*mm*dd             - Year is assumed to be 20yy
-    --     mm*dd*yyyy           - (US date format)
-    --     dd*mmm*yyyy          - month spelled out
-    --     yyyy*mmm*dd          - month spelled out
-    --     yyyymmdd             - Iso format, no separator
-    --     mmm dd, yyyy         - month spelled out
-    --     dd mmm yyyy          - month spelled out
-    --
-    --  Constraint_Error is raised if the input string is malformed (does not
-    --  conform to one of the above dates, or has an invalid time string), or
-    --  the resulting time is not valid.
- 
-    procedure Put_Time (Date : Ada.Calendar.Time; Picture : Picture_String);
-    --  Put Date with format Picture. Raise Picture_Error if bad picture string
- 
- private
-    ISO_Date      : constant Picture_String := "%Y-%m-%d";
-    US_Date       : constant Picture_String := "%m/%d/%y";
-    European_Date : constant Picture_String := "%d/%m/%y";
- 
- end GNAT.Calendar.Time_IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-cgi.adb gcc-8.1.0/gcc/ada/g-cgi.adb
*** gcc-7.3.0/gcc/ada/g-cgi.adb	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-cgi.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,494 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                             G N A T . C G I                              --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                      Copyright (C) 2001-2010, AdaCore                    --
- --                                                                          --
- -- GNAT is 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.Text_IO;
- with Ada.Strings.Fixed;
- with Ada.Characters.Handling;
- with Ada.Strings.Maps;
- 
- with GNAT.OS_Lib;
- with GNAT.Table;
- 
- package body GNAT.CGI is
- 
-    use Ada;
- 
-    Valid_Environment : Boolean := True;
-    --  This boolean will be set to False if the initialization was not
-    --  completed correctly. It must be set to true there because the
-    --  Initialize routine (called during elaboration) will use some of the
-    --  services exported by this unit.
- 
-    Current_Method : Method_Type;
-    --  This is the current method used to pass CGI parameters
- 
-    Header_Sent : Boolean := False;
-    --  Will be set to True when the header will be sent
- 
-    --  Key/Value table declaration
- 
-    type String_Access is access String;
- 
-    type Key_Value is record
-       Key   : String_Access;
-       Value : String_Access;
-    end record;
- 
-    package Key_Value_Table is new Table (Key_Value, Positive, 1, 1, 50);
- 
-    -----------------------
-    -- Local subprograms --
-    -----------------------
- 
-    procedure Check_Environment;
-    pragma Inline (Check_Environment);
-    --  This procedure will raise Data_Error if Valid_Environment is False
- 
-    procedure Initialize;
-    --  Initialize CGI package by reading the runtime environment. This
-    --  procedure is called during elaboration. All exceptions raised during
-    --  this procedure are deferred.
- 
-    --------------------
-    -- Argument_Count --
-    --------------------
- 
-    function Argument_Count return Natural is
-    begin
-       Check_Environment;
-       return Key_Value_Table.Last;
-    end Argument_Count;
- 
-    -----------------------
-    -- Check_Environment --
-    -----------------------
- 
-    procedure Check_Environment is
-    begin
-       if not Valid_Environment then
-          raise Data_Error;
-       end if;
-    end Check_Environment;
- 
-    ------------
-    -- Decode --
-    ------------
- 
-    function Decode (S : String) return String is
-       Result : String (S'Range);
-       K      : Positive := S'First;
-       J      : Positive := Result'First;
- 
-    begin
-       while K <= S'Last loop
-          if K + 2 <= S'Last
-            and then  S (K) = '%'
-            and then Characters.Handling.Is_Hexadecimal_Digit (S (K + 1))
-            and then Characters.Handling.Is_Hexadecimal_Digit (S (K + 2))
-          then
-             --  Here we have '%HH' which is an encoded character where 'HH' is
-             --  the character number in hexadecimal.
- 
-             Result (J) := Character'Val
-               (Natural'Value ("16#" & S (K + 1 .. K + 2) & '#'));
-             K := K + 3;
- 
-          --  Plus sign is decoded as a space
- 
-          elsif S (K) = '+' then
-             Result (J) := ' ';
-             K := K + 1;
- 
-          else
-             Result (J) := S (K);
-             K := K + 1;
-          end if;
- 
-          J := J + 1;
-       end loop;
- 
-       return Result (Result'First .. J - 1);
-    end Decode;
- 
-    -------------------------
-    -- For_Every_Parameter --
-    -------------------------
- 
-    procedure For_Every_Parameter is
-       Quit : Boolean;
- 
-    begin
-       Check_Environment;
- 
-       for K in 1 .. Key_Value_Table.Last loop
- 
-          Quit := False;
- 
-          Action (Key_Value_Table.Table (K).Key.all,
-                  Key_Value_Table.Table (K).Value.all,
-                  K,
-                  Quit);
- 
-          exit when Quit;
- 
-       end loop;
-    end For_Every_Parameter;
- 
-    ----------------
-    -- Initialize --
-    ----------------
- 
-    procedure Initialize is
- 
-       Request_Method : constant String :=
-                          Characters.Handling.To_Upper
-                            (Metavariable (CGI.Request_Method));
- 
-       procedure Initialize_GET;
-       --  Read CGI parameters for a GET method. In this case the parameters
-       --  are passed into QUERY_STRING environment variable.
- 
-       procedure Initialize_POST;
-       --  Read CGI parameters for a POST method. In this case the parameters
-       --  are passed with the standard input. The total number of characters
-       --  for the data is passed in CONTENT_LENGTH environment variable.
- 
-       procedure Set_Parameter_Table (Data : String);
-       --  Parse the parameter data and set the parameter table
- 
-       --------------------
-       -- Initialize_GET --
-       --------------------
- 
-       procedure Initialize_GET is
-          Data : constant String := Metavariable (Query_String);
-       begin
-          Current_Method := Get;
- 
-          if Data /= "" then
-             Set_Parameter_Table (Data);
-          end if;
-       end Initialize_GET;
- 
-       ---------------------
-       -- Initialize_POST --
-       ---------------------
- 
-       procedure Initialize_POST is
-          Content_Length : constant Natural :=
-                             Natural'Value (Metavariable (CGI.Content_Length));
-          Data : String (1 .. Content_Length);
- 
-       begin
-          Current_Method := Post;
- 
-          if Content_Length /= 0 then
-             Text_IO.Get (Data);
-             Set_Parameter_Table (Data);
-          end if;
-       end Initialize_POST;
- 
-       -------------------------
-       -- Set_Parameter_Table --
-       -------------------------
- 
-       procedure Set_Parameter_Table (Data : String) is
- 
-          procedure Add_Parameter (K : Positive; P : String);
-          --  Add a single parameter into the table at index K. The parameter
-          --  format is "key=value".
- 
-          Count : constant Positive :=
-                    1 + Strings.Fixed.Count (Data, Strings.Maps.To_Set ("&"));
-          --  Count is the number of parameters in the string. Parameters are
-          --  separated by ampersand character.
- 
-          Index : Positive := Data'First;
-          Amp   : Natural;
- 
-          -------------------
-          -- Add_Parameter --
-          -------------------
- 
-          procedure Add_Parameter (K : Positive; P : String) is
-             Equal : constant Natural := Strings.Fixed.Index (P, "=");
- 
-          begin
-             if Equal = 0 then
-                raise Data_Error;
- 
-             else
-                Key_Value_Table.Table (K) :=
-                  Key_Value'(new String'(Decode (P (P'First .. Equal - 1))),
-                             new String'(Decode (P (Equal + 1 .. P'Last))));
-             end if;
-          end Add_Parameter;
- 
-       --  Start of processing for Set_Parameter_Table
- 
-       begin
-          Key_Value_Table.Set_Last (Count);
- 
-          for K in 1 .. Count - 1 loop
-             Amp := Strings.Fixed.Index (Data (Index .. Data'Last), "&");
- 
-             Add_Parameter (K, Data (Index .. Amp - 1));
- 
-             Index := Amp + 1;
-          end loop;
- 
-          --  add last parameter
- 
-          Add_Parameter (Count, Data (Index .. Data'Last));
-       end Set_Parameter_Table;
- 
-    --  Start of processing for Initialize
- 
-    begin
-       if Request_Method = "GET" then
-          Initialize_GET;
- 
-       elsif Request_Method = "POST" then
-          Initialize_POST;
- 
-       else
-          Valid_Environment := False;
-       end if;
- 
-    exception
-       when others =>
- 
-          --  If we have an exception during initialization of this unit we
-          --  just declare it invalid.
- 
-          Valid_Environment := False;
-    end Initialize;
- 
-    ---------
-    -- Key --
-    ---------
- 
-    function Key (Position : Positive) return String is
-    begin
-       Check_Environment;
- 
-       if Position <= Key_Value_Table.Last then
-          return Key_Value_Table.Table (Position).Key.all;
-       else
-          raise Parameter_Not_Found;
-       end if;
-    end Key;
- 
-    ----------------
-    -- Key_Exists --
-    ----------------
- 
-    function Key_Exists (Key : String) return Boolean is
-    begin
-       Check_Environment;
- 
-       for K in 1 .. Key_Value_Table.Last loop
-          if Key_Value_Table.Table (K).Key.all = Key then
-             return True;
-          end if;
-       end loop;
- 
-       return False;
-    end Key_Exists;
- 
-    ------------------
-    -- Metavariable --
-    ------------------
- 
-    function Metavariable
-      (Name     : Metavariable_Name;
-       Required : Boolean := False) return String
-    is
-       function Get_Environment (Variable_Name : String) return String;
-       --  Returns the environment variable content
- 
-       ---------------------
-       -- Get_Environment --
-       ---------------------
- 
-       function Get_Environment (Variable_Name : String) return String is
-          Value  : OS_Lib.String_Access := OS_Lib.Getenv (Variable_Name);
-          Result : constant String := Value.all;
-       begin
-          OS_Lib.Free (Value);
-          return Result;
-       end Get_Environment;
- 
-       Result : constant String :=
-                  Get_Environment (Metavariable_Name'Image (Name));
- 
-    --  Start of processing for Metavariable
- 
-    begin
-       Check_Environment;
- 
-       if Result = "" and then Required then
-          raise Parameter_Not_Found;
-       else
-          return Result;
-       end if;
-    end Metavariable;
- 
-    -------------------------
-    -- Metavariable_Exists --
-    -------------------------
- 
-    function Metavariable_Exists (Name : Metavariable_Name) return Boolean is
-    begin
-       Check_Environment;
- 
-       if Metavariable (Name) = "" then
-          return False;
-       else
-          return True;
-       end if;
-    end Metavariable_Exists;
- 
-    ------------
-    -- Method --
-    ------------
- 
-    function Method return Method_Type is
-    begin
-       Check_Environment;
-       return Current_Method;
-    end Method;
- 
-    --------
-    -- Ok --
-    --------
- 
-    function Ok return Boolean is
-    begin
-       return Valid_Environment;
-    end Ok;
- 
-    ----------------
-    -- Put_Header --
-    ----------------
- 
-    procedure Put_Header
-      (Header : String  := Default_Header;
-       Force  : Boolean := False)
-    is
-    begin
-       if Header_Sent = False or else Force then
-          Check_Environment;
-          Text_IO.Put_Line (Header);
-          Text_IO.New_Line;
-          Header_Sent := True;
-       end if;
-    end Put_Header;
- 
-    ---------
-    -- URL --
-    ---------
- 
-    function URL return String is
- 
-       function Exists_And_Not_80 (Server_Port : String) return String;
-       --  Returns ':' & Server_Port if Server_Port is not "80" and the empty
-       --  string otherwise (80 is the default sever port).
- 
-       -----------------------
-       -- Exists_And_Not_80 --
-       -----------------------
- 
-       function Exists_And_Not_80 (Server_Port : String) return String is
-       begin
-          if Server_Port = "80" then
-             return "";
-          else
-             return ':' & Server_Port;
-          end if;
-       end Exists_And_Not_80;
- 
-    --  Start of processing for URL
- 
-    begin
-       Check_Environment;
- 
-       return "http://"
-         & Metavariable (Server_Name)
-         & Exists_And_Not_80 (Metavariable (Server_Port))
-         & Metavariable (Script_Name);
-    end URL;
- 
-    -----------
-    -- Value --
-    -----------
- 
-    function Value
-      (Key      : String;
-       Required : Boolean := False)
-       return     String
-    is
-    begin
-       Check_Environment;
- 
-       for K in 1 .. Key_Value_Table.Last loop
-          if Key_Value_Table.Table (K).Key.all = Key then
-             return Key_Value_Table.Table (K).Value.all;
-          end if;
-       end loop;
- 
-       if Required then
-          raise Parameter_Not_Found;
-       else
-          return "";
-       end if;
-    end Value;
- 
-    -----------
-    -- Value --
-    -----------
- 
-    function Value (Position : Positive) return String is
-    begin
-       Check_Environment;
- 
-       if Position <= Key_Value_Table.Last then
-          return Key_Value_Table.Table (Position).Value.all;
-       else
-          raise Parameter_Not_Found;
-       end if;
-    end Value;
- 
- begin
- 
-    Initialize;
- 
- end GNAT.CGI;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-cgi.ads gcc-8.1.0/gcc/ada/g-cgi.ads
*** gcc-7.3.0/gcc/ada/g-cgi.ads	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-cgi.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,255 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                             G N A T . C G I                              --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 2000-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 a package to interface a GNAT program with a Web server via the
- --  Common Gateway Interface (CGI).
- 
- --  Other related packages are:
- 
- --     GNAT.CGI.Cookie which deal with Web HTTP Cookies.
- --     GNAT.CGI.Debug  which output complete CGI runtime environment
- 
- --  Basically this package parse the CGI parameter which are a set of key/value
- --  pairs. It builds a table whose index is the key and provides some services
- --  to deal with this table.
- 
- --  Example:
- 
- --     Consider the following simple HTML form to capture a client name:
- 
- --        <!DOCTYPE HTML PUBLIC "-//W3C//DTD W3 HTML 3.2//EN">
- --        <html>
- --        <head>
- --        <title>My Web Page</title>
- --        </head>
- 
- --        <body>
- --        <form action="/cgi-bin/new_client" method="POST">
- --        <input type=text name=client_name>
- --        <input type=submit name="Enter">
- --        </form>
- --        </body>
- --        </html>
- 
- --     The following program will retrieve the client's name:
- 
- --        with GNAT.CGI;
- 
- --        procedure New_Client is
- --           use GNAT;
- 
- --           procedure Add_Client_To_Database (Name : String) is
- --           begin
- --              ...
- --           end Add_Client_To_Database;
- 
- --        begin
- --           --  Check that we have 2 arguments (there is two inputs tag in
- --           --  the HTML form) and that one of them is called "client_name".
- 
- --           if CGI.Argument_Count = 2
- --             and then CGI.Key_Exists ("client_name")
- --           then
- --              Add_Client_To_Database (CGI.Value ("client_name"));
- --           end if;
- 
- --           ...
- 
- --           CGI.Put_Header;
- --           Text_IO.Put_Line ("<html><body>< ... Ok ... >");
- 
- --        exception
- --           when CGI.Data_Error =>
- --              CGI.Put_Header ("Location: /htdocs/error.html");
- --              --  This returns the address of a Web page to be displayed
- --              --  using a "Location:" header style.
- --        end New_Client;
- 
- --  Note that the names in this package interface have been designed so that
- --  they read nicely with the CGI prefix. The recommended style is to avoid
- --  a use clause for GNAT.CGI, but to include a use clause for GNAT.
- 
- --  This package builds up a table of CGI parameters whose memory is not
- --  released. A CGI program is expected to be a short lived program and
- --  so it is adequate to have the underlying OS free the program on exit.
- 
- package GNAT.CGI is
- 
-    Data_Error : exception;
-    --  This is raised when there is a problem with the CGI protocol. Either
-    --  the data could not be retrieved or the CGI environment is invalid.
-    --
-    --  The package will initialize itself by parsing the runtime CGI
-    --  environment during elaboration but we do not want to raise an
-    --  exception at this time, so the exception Data_Error is deferred
-    --  and will be raised when calling any services below (except for Ok).
- 
-    Parameter_Not_Found : exception;
-    --  This exception is raised when a specific parameter is not found
- 
-    Default_Header : constant String := "Content-type: text/html";
-    --  This is the default header returned by Put_Header. If the CGI program
-    --  returned data is not an HTML page, this header must be change to a
-    --  valid MIME type.
- 
-    type Method_Type is (Get, Post);
-    --  The method used to pass parameter from the Web client to the
-    --  server. With the GET method parameters are passed via the command
-    --  line, with the POST method parameters are passed via environment
-    --  variables. Others methods are not supported by this implementation.
- 
-    type Metavariable_Name is
-      (Auth_Type,
-       Content_Length,
-       Content_Type,
-       Document_Root,          --  Web server dependent
-       Gateway_Interface,
-       HTTP_Accept,
-       HTTP_Accept_Encoding,
-       HTTP_Accept_Language,
-       HTTP_Connection,
-       HTTP_Cookie,
-       HTTP_Extension,
-       HTTP_From,
-       HTTP_Host,
-       HTTP_Referer,
-       HTTP_User_Agent,
-       Path,
-       Path_Info,
-       Path_Translated,
-       Query_String,
-       Remote_Addr,
-       Remote_Host,
-       Remote_Port,            --  Web server dependent
-       Remote_Ident,
-       Remote_User,
-       Request_Method,
-       Request_URI,            --  Web server dependent
-       Script_Filename,        --  Web server dependent
-       Script_Name,
-       Server_Addr,            --  Web server dependent
-       Server_Admin,           --  Web server dependent
-       Server_Name,
-       Server_Port,
-       Server_Protocol,
-       Server_Signature,       --  Web server dependent
-       Server_Software);
-    --  CGI metavariables that are set by the Web server during program
-    --  execution. All these variables are part of the restricted CGI runtime
-    --  environment and can be read using Metavariable service. The detailed
-    --  meanings of these metavariables are out of the scope of this
-    --  description. Please refer to http://www.w3.org/CGI/ for a description
-    --  of the CGI specification. Some metavariables are Web server dependent
-    --  and are not described in the cited document.
- 
-    procedure Put_Header
-      (Header : String  := Default_Header;
-       Force  : Boolean := False);
-    --  Output standard CGI header by default. The header string is followed by
-    --  an empty line. This header must be the first answer sent back to the
-    --  server. Do nothing if this function has already been called and Force
-    --  is False.
- 
-    function Ok return Boolean;
-    --  Returns True if the CGI environment is valid and False otherwise.
-    --  Every service used when the CGI environment is not valid will raise
-    --  the exception Data_Error.
- 
-    function Method return Method_Type;
-    --  Returns the method used to call the CGI
- 
-    function Metavariable
-      (Name     : Metavariable_Name;
-       Required : Boolean := False) return String;
-    --  Returns parameter Name value. Returns the null string if Name
-    --  environment variable is not defined or raises Data_Error if
-    --  Required is set to True.
- 
-    function Metavariable_Exists (Name : Metavariable_Name) return Boolean;
-    --  Returns True if the environment variable Name is defined in
-    --  the CGI runtime environment and False otherwise.
- 
-    function URL return String;
-    --  Returns the URL used to call this script without the parameters.
-    --  The URL form is: http://<server_name>[:<server_port>]<script_name>
- 
-    function Argument_Count return Natural;
-    --  Returns the number of parameters passed to the client. This is the
-    --  number of input tags in a form or the number of parameters passed to
-    --  the CGI via the command line.
- 
-    ---------------------------------------------------
-    -- Services to retrieve key/value CGI parameters --
-    ---------------------------------------------------
- 
-    function Value
-      (Key      : String;
-       Required : Boolean := False) return String;
-    --  Returns the parameter value associated to the parameter named Key.
-    --  If parameter does not exist, returns an empty string if Required
-    --  is False and raises the exception Parameter_Not_Found otherwise.
- 
-    function Value (Position : Positive) return String;
-    --  Returns the parameter value associated with the CGI parameter number
-    --  Position. Raises Parameter_Not_Found if there is no such parameter
-    --  (i.e. Position > Argument_Count)
- 
-    function Key_Exists (Key : String) return Boolean;
-    --  Returns True if the parameter named Key exists and False otherwise
- 
-    function Key (Position : Positive) return String;
-    --  Returns the parameter key associated with the CGI parameter number
-    --  Position. Raises the exception Parameter_Not_Found if there is no
-    --  such parameter (i.e. Position > Argument_Count)
- 
-    generic
-      with procedure
-        Action
-          (Key      : String;
-           Value    : String;
-           Position : Positive;
-           Quit     : in out Boolean);
-    procedure For_Every_Parameter;
-    --  Iterate through all existing key/value pairs and call the Action
-    --  supplied procedure. The Key and Value are set appropriately, Position
-    --  is the parameter order in the list, Quit is set to True by default.
-    --  Quit can be set to False to control the iterator termination.
- 
- private
- 
-    function Decode (S : String) return String;
-    --  Decode Web string S. A string when passed to a CGI is encoded,
-    --  this function will decode the string to return the original
-    --  string's content. Every triplet of the form %HH (where H is an
-    --  hexadecimal number) is translated into the character such that:
-    --  Hex (Character'Pos (C)) = HH.
- 
- end GNAT.CGI;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-cgicoo.adb gcc-8.1.0/gcc/ada/g-cgicoo.adb
*** gcc-7.3.0/gcc/ada/g-cgicoo.adb	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-cgicoo.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,405 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                       G N A T . C G I . C O O K I E                      --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 2000-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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.Strings.Fixed;
- with Ada.Strings.Maps;
- with Ada.Text_IO;
- with Ada.Integer_Text_IO;
- 
- with GNAT.Table;
- 
- package body GNAT.CGI.Cookie is
- 
-    use Ada;
- 
-    Valid_Environment : Boolean := False;
-    --  This boolean will be set to True if the initialization was fine
- 
-    Header_Sent : Boolean := False;
-    --  Will be set to True when the header will be sent
- 
-    --  Cookie data that has been added
- 
-    type String_Access is access String;
- 
-    type Cookie_Data is record
-       Key     : String_Access;
-       Value   : String_Access;
-       Comment : String_Access;
-       Domain  : String_Access;
-       Max_Age : Natural;
-       Path    : String_Access;
-       Secure  : Boolean := False;
-    end record;
- 
-    type Key_Value is record
-       Key, Value : String_Access;
-    end record;
- 
-    package Cookie_Table is new Table (Cookie_Data, Positive, 1, 5, 50);
-    --  This is the table to keep all cookies to be sent back to the server
- 
-    package Key_Value_Table is new Table (Key_Value, Positive, 1, 1, 50);
-    --  This is the table to keep all cookies received from the server
- 
-    procedure Check_Environment;
-    pragma Inline (Check_Environment);
-    --  This procedure will raise Data_Error if Valid_Environment is False
- 
-    procedure Initialize;
-    --  Initialize CGI package by reading the runtime environment. This
-    --  procedure is called during elaboration. All exceptions raised during
-    --  this procedure are deferred.
- 
-    -----------------------
-    -- Check_Environment --
-    -----------------------
- 
-    procedure Check_Environment is
-    begin
-       if not Valid_Environment then
-          raise Data_Error;
-       end if;
-    end Check_Environment;
- 
-    -----------
-    -- Count --
-    -----------
- 
-    function Count return Natural is
-    begin
-       return Key_Value_Table.Last;
-    end Count;
- 
-    ------------
-    -- Exists --
-    ------------
- 
-    function Exists (Key : String) return Boolean is
-    begin
-       Check_Environment;
- 
-       for K in 1 .. Key_Value_Table.Last loop
-          if Key_Value_Table.Table (K).Key.all = Key then
-             return True;
-          end if;
-       end loop;
- 
-       return False;
-    end Exists;
- 
-    ----------------------
-    -- For_Every_Cookie --
-    ----------------------
- 
-    procedure For_Every_Cookie is
-       Quit : Boolean;
- 
-    begin
-       Check_Environment;
- 
-       for K in 1 .. Key_Value_Table.Last loop
-          Quit := False;
- 
-          Action (Key_Value_Table.Table (K).Key.all,
-                  Key_Value_Table.Table (K).Value.all,
-                  K,
-                  Quit);
- 
-          exit when Quit;
-       end loop;
-    end For_Every_Cookie;
- 
-    ----------------
-    -- Initialize --
-    ----------------
- 
-    procedure Initialize is
- 
-       HTTP_COOKIE : constant String := Metavariable (CGI.HTTP_Cookie);
- 
-       procedure Set_Parameter_Table (Data : String);
-       --  Parse Data and insert information in Key_Value_Table
- 
-       -------------------------
-       -- Set_Parameter_Table --
-       -------------------------
- 
-       procedure Set_Parameter_Table (Data : String) is
- 
-          procedure Add_Parameter (K : Positive; P : String);
-          --  Add a single parameter into the table at index K. The parameter
-          --  format is "key=value".
- 
-          Count : constant Positive :=
-                    1 + Strings.Fixed.Count (Data, Strings.Maps.To_Set (";"));
-          --  Count is the number of parameters in the string. Parameters are
-          --  separated by ampersand character.
- 
-          Index : Positive := Data'First;
-          Sep   : Natural;
- 
-          -------------------
-          -- Add_Parameter --
-          -------------------
- 
-          procedure Add_Parameter (K : Positive; P : String) is
-             Equal : constant Natural := Strings.Fixed.Index (P, "=");
-          begin
-             if Equal = 0 then
-                raise Data_Error;
-             else
-                Key_Value_Table.Table (K) :=
-                  Key_Value'(new String'(Decode (P (P'First .. Equal - 1))),
-                             new String'(Decode (P (Equal + 1 .. P'Last))));
-             end if;
-          end Add_Parameter;
- 
-       --  Start of processing for Set_Parameter_Table
- 
-       begin
-          Key_Value_Table.Set_Last (Count);
- 
-          for K in 1 .. Count - 1 loop
-             Sep := Strings.Fixed.Index (Data (Index .. Data'Last), ";");
- 
-             Add_Parameter (K, Data (Index .. Sep - 1));
- 
-             Index := Sep + 2;
-          end loop;
- 
-          --  Add last parameter
- 
-          Add_Parameter (Count, Data (Index .. Data'Last));
-       end Set_Parameter_Table;
- 
-    --  Start of processing for Initialize
- 
-    begin
-       if HTTP_COOKIE /= "" then
-          Set_Parameter_Table (HTTP_COOKIE);
-       end if;
- 
-       Valid_Environment := True;
- 
-    exception
-       when others =>
-          Valid_Environment := False;
-    end Initialize;
- 
-    ---------
-    -- Key --
-    ---------
- 
-    function Key (Position : Positive) return String is
-    begin
-       Check_Environment;
- 
-       if Position <= Key_Value_Table.Last then
-          return Key_Value_Table.Table (Position).Key.all;
-       else
-          raise Cookie_Not_Found;
-       end if;
-    end Key;
- 
-    --------
-    -- Ok --
-    --------
- 
-    function Ok return Boolean is
-    begin
-       return Valid_Environment;
-    end Ok;
- 
-    ----------------
-    -- Put_Header --
-    ----------------
- 
-    procedure Put_Header
-      (Header : String  := Default_Header;
-       Force  : Boolean := False)
-    is
-       procedure Output_Cookies;
-       --  Iterate through the list of cookies to be sent to the server
-       --  and output them.
- 
-       --------------------
-       -- Output_Cookies --
-       --------------------
- 
-       procedure Output_Cookies is
- 
-          procedure Output_One_Cookie
-            (Key     : String;
-             Value   : String;
-             Comment : String;
-             Domain  : String;
-             Max_Age : Natural;
-             Path    : String;
-             Secure  : Boolean);
-          --  Output one cookie in the CGI header
- 
-          -----------------------
-          -- Output_One_Cookie --
-          -----------------------
- 
-          procedure Output_One_Cookie
-            (Key     : String;
-             Value   : String;
-             Comment : String;
-             Domain  : String;
-             Max_Age : Natural;
-             Path    : String;
-             Secure  : Boolean)
-          is
-          begin
-             Text_IO.Put ("Set-Cookie: ");
-             Text_IO.Put (Key & '=' & Value);
- 
-             if Comment /= "" then
-                Text_IO.Put ("; Comment=" & Comment);
-             end if;
- 
-             if Domain /= "" then
-                Text_IO.Put ("; Domain=" & Domain);
-             end if;
- 
-             if Max_Age /= Natural'Last then
-                Text_IO.Put ("; Max-Age=");
-                Integer_Text_IO.Put (Max_Age, Width => 0);
-             end if;
- 
-             if Path /= "" then
-                Text_IO.Put ("; Path=" & Path);
-             end if;
- 
-             if Secure then
-                Text_IO.Put ("; Secure");
-             end if;
- 
-             Text_IO.New_Line;
-          end Output_One_Cookie;
- 
-       --  Start of processing for Output_Cookies
- 
-       begin
-          for C in 1 .. Cookie_Table.Last loop
-             Output_One_Cookie (Cookie_Table.Table (C).Key.all,
-                                Cookie_Table.Table (C).Value.all,
-                                Cookie_Table.Table (C).Comment.all,
-                                Cookie_Table.Table (C).Domain.all,
-                                Cookie_Table.Table (C).Max_Age,
-                                Cookie_Table.Table (C).Path.all,
-                                Cookie_Table.Table (C).Secure);
-          end loop;
-       end Output_Cookies;
- 
-    --  Start of processing for Put_Header
- 
-    begin
-       if Header_Sent = False or else Force then
-          Check_Environment;
-          Text_IO.Put_Line (Header);
-          Output_Cookies;
-          Text_IO.New_Line;
-          Header_Sent := True;
-       end if;
-    end Put_Header;
- 
-    ---------
-    -- Set --
-    ---------
- 
-    procedure Set
-      (Key     : String;
-       Value   : String;
-       Comment : String   := "";
-       Domain  : String   := "";
-       Max_Age : Natural  := Natural'Last;
-       Path    : String   := "/";
-       Secure  : Boolean  := False)
-    is
-    begin
-       Cookie_Table.Increment_Last;
- 
-       Cookie_Table.Table (Cookie_Table.Last) :=
-         Cookie_Data'(new String'(Key),
-                      new String'(Value),
-                      new String'(Comment),
-                      new String'(Domain),
-                      Max_Age,
-                      new String'(Path),
-                      Secure);
-    end Set;
- 
-    -----------
-    -- Value --
-    -----------
- 
-    function Value
-      (Key      : String;
-       Required : Boolean := False) return String
-    is
-    begin
-       Check_Environment;
- 
-       for K in 1 .. Key_Value_Table.Last loop
-          if Key_Value_Table.Table (K).Key.all = Key then
-             return Key_Value_Table.Table (K).Value.all;
-          end if;
-       end loop;
- 
-       if Required then
-          raise Cookie_Not_Found;
-       else
-          return "";
-       end if;
-    end Value;
- 
-    function Value (Position : Positive) return String is
-    begin
-       Check_Environment;
- 
-       if Position <= Key_Value_Table.Last then
-          return Key_Value_Table.Table (Position).Value.all;
-       else
-          raise Cookie_Not_Found;
-       end if;
-    end Value;
- 
- --  Elaboration code for package
- 
- begin
-    --  Initialize unit by reading the HTTP_COOKIE metavariable and fill
-    --  Key_Value_Table structure.
- 
-    Initialize;
- end GNAT.CGI.Cookie;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-cgicoo.ads gcc-8.1.0/gcc/ada/g-cgicoo.ads
*** gcc-7.3.0/gcc/ada/g-cgicoo.ads	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-cgicoo.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,120 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                       G N A T . C G I . C O O K I E                      --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 2000-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 a package to interface a GNAT program with a Web server via the
- --  Common Gateway Interface (CGI). It exports services to deal with Web
- --  cookies (piece of information kept in the Web client software).
- 
- --  The complete CGI Cookie specification can be found in the RFC2109 at:
- --     http://www.ics.uci.edu/pub/ietf/http/rfc2109.txt
- 
- --  This package builds up data tables whose memory is not released. A CGI
- --  program is expected to be a short lived program and so it is adequate to
- --  have the underlying OS free the program on exit.
- 
- package GNAT.CGI.Cookie is
- 
-    --  The package will initialize itself by parsing the HTTP_Cookie runtime
-    --  CGI environment variable during elaboration but we do not want to raise
-    --  an exception at this time, so the exception Data_Error is deferred and
-    --  will be raised when calling any services below (except for Ok).
- 
-    Cookie_Not_Found : exception;
-    --  This exception is raised when a specific parameter is not found
- 
-    procedure Put_Header
-      (Header : String  := Default_Header;
-       Force  : Boolean := False);
-    --  Output standard CGI header by default. This header must be returned
-    --  back to the server at the very beginning and will be output only for
-    --  the first call to Put_Header if Force is set to False. This procedure
-    --  also outputs the Cookies that have been defined. If the program uses
-    --  the GNAT.CGI.Put_Header service, cookies will not be set.
-    --
-    --  Cookies are passed back to the server in the header, the format is:
-    --
-    --    Set-Cookie: <key>=<value>; comment=<comment>; domain=<domain>;
-    --     max_age=<max_age>; path=<path>[; secured]
- 
-    function Ok return Boolean;
-    --  Returns True if the CGI cookie environment is valid and False otherwise.
-    --  Every service used when the CGI environment is not valid will raise the
-    --  exception Data_Error.
- 
-    function Count return Natural;
-    --  Returns the number of cookies received by the CGI
- 
-    function Value
-      (Key      : String;
-       Required : Boolean := False) return String;
-    --  Returns the cookie value associated with the cookie named Key. If cookie
-    --  does not exist, returns an empty string if Required is False and raises
-    --  the exception Cookie_Not_Found otherwise.
- 
-    function Value (Position : Positive) return String;
-    --  Returns the value associated with the cookie number Position of the CGI.
-    --  It raises Cookie_Not_Found if there is no such cookie (i.e. Position >
-    --  Count)
- 
-    function Exists (Key : String) return Boolean;
-    --  Returns True if the cookie named Key exist and False otherwise
- 
-    function Key (Position : Positive) return String;
-    --  Returns the key associated with the cookie number Position of the CGI.
-    --  It raises Cookie_Not_Found if there is no such cookie (i.e. Position >
-    --  Count)
- 
-    procedure Set
-      (Key     : String;
-       Value   : String;
-       Comment : String  := "";
-       Domain  : String  := "";
-       Max_Age : Natural := Natural'Last;
-       Path    : String  := "/";
-       Secure  : Boolean := False);
-    --  Add a cookie to the list of cookies. This will be sent back to the
-    --  server by the Put_Header service above.
- 
-    generic
-       with procedure
-         Action
-           (Key      : String;
-            Value    : String;
-            Position : Positive;
-            Quit     : in out Boolean);
-    procedure For_Every_Cookie;
-    --  Iterate through all cookies received from the server and call
-    --  the Action supplied procedure. The Key, Value parameters are set
-    --  appropriately, Position is the cookie order in the list, Quit is set to
-    --  True by default. Quit can be set to False to control the iterator
-    --  termination.
- 
- end GNAT.CGI.Cookie;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-cgideb.adb gcc-8.1.0/gcc/ada/g-cgideb.adb
*** gcc-7.3.0/gcc/ada/g-cgideb.adb	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-cgideb.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,314 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                        G N A T . C G I . D E B U G                       --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 2000-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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.Strings.Unbounded;
- 
- package body GNAT.CGI.Debug is
- 
-    use Ada.Strings.Unbounded;
- 
-    --  Define the abstract type which act as a template for all debug IO modes.
-    --  To create a new IO mode you must:
-    --     1. create a new package spec
-    --     2. create a new type derived from IO.Format
-    --     3. implement all the abstract routines in IO
- 
-    package IO is
- 
-       type Format is abstract tagged null record;
- 
-       function Output (Mode : Format'Class) return String;
- 
-       function Variable
-         (Mode  : Format;
-          Name  : String;
-          Value : String) return String is abstract;
-       --  Returns variable Name and its associated value
- 
-       function New_Line (Mode : Format) return String is abstract;
-       --  Returns a new line such as this concatenated between two strings
-       --  will display the strings on two lines.
- 
-       function Title (Mode : Format; Str : String) return String is abstract;
-       --  Returns Str as a Title. A title must be alone and centered on a
-       --  line. Next output will be on the following line.
- 
-       function Header
-         (Mode : Format;
-          Str  : String) return String is abstract;
-       --  Returns Str as an Header. An header must be alone on its line. Next
-       --  output will be on the following line.
- 
-    end IO;
- 
-    ----------------------
-    -- IO for HTML Mode --
-    ----------------------
- 
-    package HTML_IO is
- 
-       --  See IO for comments about these routines
- 
-       type Format is new IO.Format with null record;
- 
-       function Variable
-         (IO    : Format;
-          Name  : String;
-          Value : String) return String;
- 
-       function New_Line (IO : Format) return String;
- 
-       function Title (IO : Format; Str : String) return String;
- 
-       function Header (IO : Format; Str : String) return String;
- 
-    end HTML_IO;
- 
-    ----------------------------
-    -- IO for Plain Text Mode --
-    ----------------------------
- 
-    package Text_IO is
- 
-       --  See IO for comments about these routines
- 
-       type Format is new IO.Format with null record;
- 
-       function Variable
-         (IO    : Format;
-          Name  : String;
-          Value : String) return String;
- 
-       function New_Line (IO : Format) return String;
- 
-       function Title (IO : Format; Str : String) return String;
- 
-       function Header (IO : Format; Str : String) return String;
- 
-    end Text_IO;
- 
-    --------------
-    -- Debug_IO --
-    --------------
- 
-    package body IO is
- 
-       ------------
-       -- Output --
-       ------------
- 
-       function Output (Mode : Format'Class) return String is
-          Result : Unbounded_String;
- 
-       begin
-          Result :=
-            To_Unbounded_String
-              (Title (Mode, "CGI complete runtime environment")
-               & Header (Mode, "CGI parameters:")
-               & New_Line (Mode));
- 
-          for K in 1 .. Argument_Count loop
-             Result := Result
-               & Variable (Mode, Key (K), Value (K))
-               & New_Line (Mode);
-          end loop;
- 
-          Result := Result
-            & New_Line (Mode)
-            & Header (Mode, "CGI environment variables (Metavariables):")
-            & New_Line (Mode);
- 
-          for P in Metavariable_Name'Range loop
-             if Metavariable_Exists (P) then
-                Result := Result
-                  & Variable (Mode,
-                              Metavariable_Name'Image (P),
-                              Metavariable (P))
-                  & New_Line (Mode);
-             end if;
-          end loop;
- 
-          return To_String (Result);
-       end Output;
- 
-    end IO;
- 
-    -------------
-    -- HTML_IO --
-    -------------
- 
-    package body HTML_IO is
- 
-       NL : constant String := (1 => ASCII.LF);
- 
-       function Bold (S : String) return String;
-       --  Returns S as an HTML bold string
- 
-       function Italic (S : String) return String;
-       --  Returns S as an HTML italic string
- 
-       ----------
-       -- Bold --
-       ----------
- 
-       function Bold (S : String) return String is
-       begin
-          return "<b>" & S & "</b>";
-       end Bold;
- 
-       ------------
-       -- Header --
-       ------------
- 
-       function Header (IO : Format; Str : String) return String is
-          pragma Unreferenced (IO);
-       begin
-          return "<h2>" & Str & "</h2>" & NL;
-       end Header;
- 
-       ------------
-       -- Italic --
-       ------------
- 
-       function Italic (S : String) return String is
-       begin
-          return "<i>" & S & "</i>";
-       end Italic;
- 
-       --------------
-       -- New_Line --
-       --------------
- 
-       function New_Line (IO : Format) return String is
-          pragma Unreferenced (IO);
-       begin
-          return "<br>" & NL;
-       end New_Line;
- 
-       -----------
-       -- Title --
-       -----------
- 
-       function Title (IO : Format; Str : String) return String is
-          pragma Unreferenced (IO);
-       begin
-          return "<p align=center><font size=+2>" & Str & "</font></p>" & NL;
-       end Title;
- 
-       --------------
-       -- Variable --
-       --------------
- 
-       function Variable
-         (IO    : Format;
-          Name  : String;
-          Value : String) return String
-       is
-          pragma Unreferenced (IO);
-       begin
-          return Bold (Name) & " = " & Italic (Value);
-       end Variable;
- 
-    end HTML_IO;
- 
-    -------------
-    -- Text_IO --
-    -------------
- 
-    package body Text_IO is
- 
-       ------------
-       -- Header --
-       ------------
- 
-       function Header (IO : Format; Str : String) return String is
-       begin
-          return "*** " & Str & New_Line (IO);
-       end Header;
- 
-       --------------
-       -- New_Line --
-       --------------
- 
-       function New_Line (IO : Format) return String is
-          pragma Unreferenced (IO);
-       begin
-          return String'(1 => ASCII.LF);
-       end New_Line;
- 
-       -----------
-       -- Title --
-       -----------
- 
-       function Title (IO : Format; Str : String) return String is
-          Spaces : constant Natural := (80 - Str'Length) / 2;
-          Indent : constant String (1 .. Spaces) := (others => ' ');
-       begin
-          return Indent & Str & New_Line (IO);
-       end Title;
- 
-       --------------
-       -- Variable --
-       --------------
- 
-       function Variable
-         (IO    : Format;
-          Name  : String;
-          Value : String) return String
-       is
-          pragma Unreferenced (IO);
-       begin
-          return "   " & Name & " = " & Value;
-       end Variable;
- 
-    end Text_IO;
- 
-    -----------------
-    -- HTML_Output --
-    -----------------
- 
-    function HTML_Output return String is
-       HTML : HTML_IO.Format;
-    begin
-       return IO.Output (Mode => HTML);
-    end HTML_Output;
- 
-    -----------------
-    -- Text_Output --
-    -----------------
- 
-    function Text_Output return String is
-       Text : Text_IO.Format;
-    begin
-       return IO.Output (Mode => Text);
-    end Text_Output;
- 
- end GNAT.CGI.Debug;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-cgideb.ads gcc-8.1.0/gcc/ada/g-cgideb.ads
*** gcc-7.3.0/gcc/ada/g-cgideb.ads	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-cgideb.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,47 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                        G N A T . C G I . D E B U G                       --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 2000-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 a package to help debugging CGI (Common Gateway Interface)
- --  programs written in Ada.
- 
- package GNAT.CGI.Debug is
- 
-    --  Both functions below output all possible CGI parameters set. These are
-    --  the form field and all CGI environment variables which make the CGI
-    --  environment at runtime.
- 
-    function Text_Output return String;
-    --  Returns a plain text version of the CGI runtime environment
- 
-    function HTML_Output return String;
-    --  Returns an HTML version of the CGI runtime environment
- 
- end GNAT.CGI.Debug;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-comlin.adb gcc-8.1.0/gcc/ada/g-comlin.adb
*** gcc-7.3.0/gcc/ada/g-comlin.adb	Fri Jan 13 10:19:19 2017
--- gcc-8.1.0/gcc/ada/g-comlin.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,3620 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                    G N A T . C O M M A N D _ L I N E                     --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1999-2016, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Characters.Handling;    use Ada.Characters.Handling;
- with Ada.Strings.Unbounded;
- with Ada.Text_IO;                use Ada.Text_IO;
- with Ada.Unchecked_Deallocation;
- 
- with GNAT.Directory_Operations; use GNAT.Directory_Operations;
- with GNAT.OS_Lib;               use GNAT.OS_Lib;
- 
- package body GNAT.Command_Line is
- 
-    --  General note: this entire body could use much more commenting. There
-    --  are large sections of uncommented code throughout, and many formal
-    --  parameters of local subprograms are not documented at all ???
- 
-    package CL renames Ada.Command_Line;
- 
-    type Switch_Parameter_Type is
-      (Parameter_None,
-       Parameter_With_Optional_Space,  --  ':' in getopt
-       Parameter_With_Space_Or_Equal,  --  '=' in getopt
-       Parameter_No_Space,             --  '!' in getopt
-       Parameter_Optional);            --  '?' in getopt
- 
-    procedure Set_Parameter
-      (Variable : out Parameter_Type;
-       Arg_Num  : Positive;
-       First    : Positive;
-       Last     : Natural;
-       Extra    : Character := ASCII.NUL);
-    pragma Inline (Set_Parameter);
-    --  Set the parameter that will be returned by Parameter below
-    --
-    --  Extra is a character that needs to be added when reporting Full_Switch.
-    --  (it will in general be the switch character, for instance '-').
-    --  Otherwise, Full_Switch will report 'f' instead of '-f'. In particular,
-    --  it needs to be set when reporting an invalid switch or handling '*'.
-    --
-    --  Parameters need to be defined ???
- 
-    function Goto_Next_Argument_In_Section (Parser : Opt_Parser) return Boolean;
-    --  Go to the next argument on the command line. If we are at the end of
-    --  the current section, we want to make sure there is no other identical
-    --  section on the command line (there might be multiple instances of
-    --  -largs). Returns True iff there is another argument.
- 
-    function Get_File_Names_Case_Sensitive return Integer;
-    pragma Import (C, Get_File_Names_Case_Sensitive,
-                   "__gnat_get_file_names_case_sensitive");
- 
-    File_Names_Case_Sensitive : constant Boolean :=
-                                  Get_File_Names_Case_Sensitive /= 0;
- 
-    procedure Canonical_Case_File_Name (S : in out String);
-    --  Given a file name, converts it to canonical case form. For systems where
-    --  file names are case sensitive, this procedure has no effect. If file
-    --  names are not case sensitive (i.e. for example if you have the file
-    --  "xyz.adb", you can refer to it as XYZ.adb or XyZ.AdB), then this call
-    --  converts the given string to canonical all lower case form, so that two
-    --  file names compare equal if they refer to the same file.
- 
-    procedure Internal_Initialize_Option_Scan
-      (Parser                   : Opt_Parser;
-       Switch_Char              : Character;
-       Stop_At_First_Non_Switch : Boolean;
-       Section_Delimiters       : String);
-    --  Initialize Parser, which must have been allocated already
- 
-    function Argument (Parser : Opt_Parser; Index : Integer) return String;
-    --  Return the index-th command line argument
- 
-    procedure Find_Longest_Matching_Switch
-      (Switches          : String;
-       Arg               : String;
-       Index_In_Switches : out Integer;
-       Switch_Length     : out Integer;
-       Param             : out Switch_Parameter_Type);
-    --  Return the Longest switch from Switches that at least partially matches
-    --  Arg. Index_In_Switches is set to 0 if none matches. What are other
-    --  parameters??? in particular Param is not always set???
- 
-    procedure Unchecked_Free is new Ada.Unchecked_Deallocation
-      (Argument_List, Argument_List_Access);
- 
-    procedure Unchecked_Free is new Ada.Unchecked_Deallocation
-      (Command_Line_Configuration_Record, Command_Line_Configuration);
- 
-    procedure Remove (Line : in out Argument_List_Access; Index : Integer);
-    --  Remove a specific element from Line
- 
-    procedure Add
-      (Line   : in out Argument_List_Access;
-       Str    : String_Access;
-       Before : Boolean := False);
-    --  Add a new element to Line. If Before is True, the item is inserted at
-    --  the beginning, else it is appended.
- 
-    procedure Add
-      (Config : in out Command_Line_Configuration;
-       Switch : Switch_Definition);
-    procedure Add
-      (Def   : in out Alias_Definitions_List;
-       Alias : Alias_Definition);
-    --  Add a new element to Def
- 
-    procedure Initialize_Switch_Def
-      (Def         : out Switch_Definition;
-       Switch      : String := "";
-       Long_Switch : String := "";
-       Help        : String := "";
-       Section     : String := "";
-       Argument    : String := "ARG");
-    --  Initialize [Def] with the contents of the other parameters.
-    --  This also checks consistency of the switch parameters, and will raise
-    --  Invalid_Switch if they do not match.
- 
-    procedure Decompose_Switch
-      (Switch         : String;
-       Parameter_Type : out Switch_Parameter_Type;
-       Switch_Last    : out Integer);
-    --  Given a switch definition ("name:" for instance), extracts the type of
-    --  parameter that is expected, and the name of the switch
- 
-    function Can_Have_Parameter (S : String) return Boolean;
-    --  True if S can have a parameter
- 
-    function Require_Parameter (S : String) return Boolean;
-    --  True if S requires a parameter
- 
-    function Actual_Switch (S : String) return String;
-    --  Remove any possible trailing '!', ':', '?' and '='
- 
-    generic
-       with procedure Callback
-         (Simple_Switch : String;
-          Separator     : String;
-          Parameter     : String;
-          Index         : Integer);  --  Index in Config.Switches, or -1
-    procedure For_Each_Simple_Switch
-      (Config    : Command_Line_Configuration;
-       Section   : String;
-       Switch    : String;
-       Parameter : String  := "";
-       Unalias   : Boolean := True);
-    --  Breaks Switch into as simple switches as possible (expanding aliases and
-    --  ungrouping common prefixes when possible), and call Callback for each of
-    --  these.
- 
-    procedure Sort_Sections
-      (Line     : GNAT.OS_Lib.Argument_List_Access;
-       Sections : GNAT.OS_Lib.Argument_List_Access;
-       Params   : GNAT.OS_Lib.Argument_List_Access);
-    --  Reorder the command line switches so that the switches belonging to a
-    --  section are grouped together.
- 
-    procedure Group_Switches
-      (Cmd      : Command_Line;
-       Result   : Argument_List_Access;
-       Sections : Argument_List_Access;
-       Params   : Argument_List_Access);
-    --  Group switches with common prefixes whenever possible. Once they have
-    --  been grouped, we also check items for possible aliasing.
- 
-    procedure Alias_Switches
-      (Cmd    : Command_Line;
-       Result : Argument_List_Access;
-       Params : Argument_List_Access);
-    --  When possible, replace one or more switches by an alias, i.e. a shorter
-    --  version.
- 
-    function Looking_At
-      (Type_Str  : String;
-       Index     : Natural;
-       Substring : String) return Boolean;
-    --  Return True if the characters starting at Index in Type_Str are
-    --  equivalent to Substring.
- 
-    generic
-       with function Callback (S : String; Index : Integer) return Boolean;
-    procedure Foreach_Switch
-      (Config   : Command_Line_Configuration;
-       Section  : String);
-    --  Iterate over all switches defined in Config, for a specific section.
-    --  Index is set to the index in Config.Switches. Stop iterating when
-    --  Callback returns False.
- 
-    --------------
-    -- Argument --
-    --------------
- 
-    function Argument (Parser : Opt_Parser; Index : Integer) return String is
-    begin
-       if Parser.Arguments /= null then
-          return Parser.Arguments (Index + Parser.Arguments'First - 1).all;
-       else
-          return CL.Argument (Index);
-       end if;
-    end Argument;
- 
-    ------------------------------
-    -- Canonical_Case_File_Name --
-    ------------------------------
- 
-    procedure Canonical_Case_File_Name (S : in out String) is
-    begin
-       if not File_Names_Case_Sensitive then
-          for J in S'Range loop
-             if S (J) in 'A' .. 'Z' then
-                S (J) := Character'Val
-                           (Character'Pos (S (J)) +
-                             (Character'Pos ('a') - Character'Pos ('A')));
-             end if;
-          end loop;
-       end if;
-    end Canonical_Case_File_Name;
- 
-    ---------------
-    -- Expansion --
-    ---------------
- 
-    function Expansion (Iterator : Expansion_Iterator) return String is
-       type Pointer is access all Expansion_Iterator;
- 
-       It   : constant Pointer := Iterator'Unrestricted_Access;
-       S    : String (1 .. 1024);
-       Last : Natural;
- 
-       Current : Depth := It.Current_Depth;
-       NL      : Positive;
- 
-    begin
-       --  It is assumed that a directory is opened at the current level.
-       --  Otherwise GNAT.Directory_Operations.Directory_Error will be raised
-       --  at the first call to Read.
- 
-       loop
-          Read (It.Levels (Current).Dir, S, Last);
- 
-          --  If we have exhausted the directory, close it and go back one level
- 
-          if Last = 0 then
-             Close (It.Levels (Current).Dir);
- 
-             --  If we are at level 1, we are finished; return an empty string
- 
-             if Current = 1 then
-                return String'(1 .. 0 => ' ');
- 
-             --  Otherwise continue with the directory at the previous level
- 
-             else
-                Current := Current - 1;
-                It.Current_Depth := Current;
-             end if;
- 
-          --  If this is a directory, that is neither "." or "..", attempt to
-          --  go to the next level.
- 
-          elsif Is_Directory
-                  (It.Dir_Name (1 .. It.Levels (Current).Name_Last) &
-                     S (1 .. Last))
-              and then S (1 .. Last) /= "."
-              and then S (1 .. Last) /= ".."
-          then
-             --  We can go to the next level only if we have not reached the
-             --  maximum depth,
- 
-             if Current < It.Maximum_Depth then
-                NL := It.Levels (Current).Name_Last;
- 
-                --  And if relative path of this new directory is not too long
- 
-                if NL + Last + 1 < Max_Path_Length then
-                   Current := Current + 1;
-                   It.Current_Depth := Current;
-                   It.Dir_Name (NL + 1 .. NL + Last) := S (1 .. Last);
-                   NL := NL + Last + 1;
-                   It.Dir_Name (NL) := Directory_Separator;
-                   It.Levels (Current).Name_Last := NL;
-                   Canonical_Case_File_Name (It.Dir_Name (1 .. NL));
- 
-                   --  Open the new directory, and read from it
- 
-                   GNAT.Directory_Operations.Open
-                     (It.Levels (Current).Dir, It.Dir_Name (1 .. NL));
-                end if;
-             end if;
-          end if;
- 
-          --  Check the relative path against the pattern
- 
-          --  Note that we try to match also against directory names, since
-          --  clients of this function may expect to retrieve directories.
- 
-          declare
-             Name : String :=
-                      It.Dir_Name (It.Start .. It.Levels (Current).Name_Last)
-                        & S (1 .. Last);
- 
-          begin
-             Canonical_Case_File_Name (Name);
- 
-             --  If it matches return the relative path
- 
-             if GNAT.Regexp.Match (Name, Iterator.Regexp) then
-                return Name;
-             end if;
-          end;
-       end loop;
-    end Expansion;
- 
-    ---------------------
-    -- Current_Section --
-    ---------------------
- 
-    function Current_Section
-      (Parser : Opt_Parser := Command_Line_Parser) return String
-    is
-    begin
-       if Parser.Current_Section = 1 then
-          return "";
-       end if;
- 
-       for Index in reverse 1 .. Integer'Min (Parser.Current_Argument - 1,
-                                              Parser.Section'Last)
-       loop
-          if Parser.Section (Index) = 0 then
-             return Argument (Parser, Index);
-          end if;
-       end loop;
- 
-       return "";
-    end Current_Section;
- 
-    -----------------
-    -- Full_Switch --
-    -----------------
- 
-    function Full_Switch
-      (Parser : Opt_Parser := Command_Line_Parser) return String
-    is
-    begin
-       if Parser.The_Switch.Extra = ASCII.NUL then
-          return Argument (Parser, Parser.The_Switch.Arg_Num)
-            (Parser.The_Switch.First .. Parser.The_Switch.Last);
-       else
-          return Parser.The_Switch.Extra
-            & Argument (Parser, Parser.The_Switch.Arg_Num)
-            (Parser.The_Switch.First .. Parser.The_Switch.Last);
-       end if;
-    end Full_Switch;
- 
-    ------------------
-    -- Get_Argument --
-    ------------------
- 
-    function Get_Argument
-      (Do_Expansion : Boolean    := False;
-       Parser       : Opt_Parser := Command_Line_Parser) return String
-    is
-    begin
-       if Parser.In_Expansion then
-          declare
-             S : constant String := Expansion (Parser.Expansion_It);
-          begin
-             if S'Length /= 0 then
-                return S;
-             else
-                Parser.In_Expansion := False;
-             end if;
-          end;
-       end if;
- 
-       if Parser.Current_Argument > Parser.Arg_Count then
- 
-          --  If this is the first time this function is called
- 
-          if Parser.Current_Index = 1 then
-             Parser.Current_Argument := 1;
-             while Parser.Current_Argument <= Parser.Arg_Count
-               and then Parser.Section (Parser.Current_Argument) /=
-                                                       Parser.Current_Section
-             loop
-                Parser.Current_Argument := Parser.Current_Argument + 1;
-             end loop;
- 
-          else
-             return String'(1 .. 0 => ' ');
-          end if;
- 
-       elsif Parser.Section (Parser.Current_Argument) = 0 then
-          while Parser.Current_Argument <= Parser.Arg_Count
-            and then Parser.Section (Parser.Current_Argument) /=
-                                                       Parser.Current_Section
-          loop
-             Parser.Current_Argument := Parser.Current_Argument + 1;
-          end loop;
-       end if;
- 
-       Parser.Current_Index := Integer'Last;
- 
-       while Parser.Current_Argument <= Parser.Arg_Count
-         and then Parser.Is_Switch (Parser.Current_Argument)
-       loop
-          Parser.Current_Argument := Parser.Current_Argument + 1;
-       end loop;
- 
-       if Parser.Current_Argument > Parser.Arg_Count then
-          return String'(1 .. 0 => ' ');
-       elsif Parser.Section (Parser.Current_Argument) = 0 then
-          return Get_Argument (Do_Expansion);
-       end if;
- 
-       Parser.Current_Argument := Parser.Current_Argument + 1;
- 
-       --  Could it be a file name with wild cards to expand?
- 
-       if Do_Expansion then
-          declare
-             Arg   : constant String :=
-                       Argument (Parser, Parser.Current_Argument - 1);
-          begin
-             for Index in Arg'Range loop
-                if Arg (Index) = '*'
-                  or else Arg (Index) = '?'
-                  or else Arg (Index) = '['
-                then
-                   Parser.In_Expansion := True;
-                   Start_Expansion (Parser.Expansion_It, Arg);
-                   return Get_Argument (Do_Expansion, Parser);
-                end if;
-             end loop;
-          end;
-       end if;
- 
-       return Argument (Parser, Parser.Current_Argument - 1);
-    end Get_Argument;
- 
-    ----------------------
-    -- Decompose_Switch --
-    ----------------------
- 
-    procedure Decompose_Switch
-      (Switch         : String;
-       Parameter_Type : out Switch_Parameter_Type;
-       Switch_Last    : out Integer)
-    is
-    begin
-       if Switch = "" then
-          Parameter_Type := Parameter_None;
-          Switch_Last := Switch'Last;
-          return;
-       end if;
- 
-       case Switch (Switch'Last) is
-          when ':' =>
-             Parameter_Type := Parameter_With_Optional_Space;
-             Switch_Last    := Switch'Last - 1;
- 
-          when '=' =>
-             Parameter_Type := Parameter_With_Space_Or_Equal;
-             Switch_Last    := Switch'Last - 1;
- 
-          when '!' =>
-             Parameter_Type := Parameter_No_Space;
-             Switch_Last    := Switch'Last - 1;
- 
-          when '?' =>
-             Parameter_Type := Parameter_Optional;
-             Switch_Last    := Switch'Last - 1;
- 
-          when others =>
-             Parameter_Type := Parameter_None;
-             Switch_Last    := Switch'Last;
-       end case;
-    end Decompose_Switch;
- 
-    ----------------------------------
-    -- Find_Longest_Matching_Switch --
-    ----------------------------------
- 
-    procedure Find_Longest_Matching_Switch
-      (Switches          : String;
-       Arg               : String;
-       Index_In_Switches : out Integer;
-       Switch_Length     : out Integer;
-       Param             : out Switch_Parameter_Type)
-    is
-       Index  : Natural;
-       Length : Natural := 1;
-       Last   : Natural;
-       P      : Switch_Parameter_Type;
- 
-    begin
-       Index_In_Switches := 0;
-       Switch_Length     := 0;
- 
-       --  Remove all leading spaces first to make sure that Index points
-       --  at the start of the first switch.
- 
-       Index := Switches'First;
-       while Index <= Switches'Last and then Switches (Index) = ' ' loop
-          Index := Index + 1;
-       end loop;
- 
-       while Index <= Switches'Last loop
- 
-          --  Search the length of the parameter at this position in Switches
- 
-          Length := Index;
-          while Length <= Switches'Last
-            and then Switches (Length) /= ' '
-          loop
-             Length := Length + 1;
-          end loop;
- 
-          --  Length now marks the separator after the current switch. Last will
-          --  mark the last character of the name of the switch.
- 
-          if Length = Index + 1 then
-             P := Parameter_None;
-             Last := Index;
-          else
-             Decompose_Switch (Switches (Index .. Length - 1), P, Last);
-          end if;
- 
-          --  If it is the one we searched, it may be a candidate
- 
-          if Arg'First + Last - Index <= Arg'Last
-            and then Switches (Index .. Last) =
-                       Arg (Arg'First .. Arg'First + Last - Index)
-            and then Last - Index + 1 > Switch_Length
-            and then
-              (P /= Parameter_With_Space_Or_Equal
-                or else Arg'Last = Arg'First + Last - Index
-                or else Arg (Arg'First + Last - Index + 1) = '=')
-          then
-             Param             := P;
-             Index_In_Switches := Index;
-             Switch_Length     := Last - Index + 1;
-          end if;
- 
-          --  Look for the next switch in Switches
- 
-          while Index <= Switches'Last
-            and then Switches (Index) /= ' '
-          loop
-             Index := Index + 1;
-          end loop;
- 
-          Index := Index + 1;
-       end loop;
-    end Find_Longest_Matching_Switch;
- 
-    ------------
-    -- Getopt --
-    ------------
- 
-    function Getopt
-      (Switches    : String;
-       Concatenate : Boolean := True;
-       Parser      : Opt_Parser := Command_Line_Parser) return Character
-    is
-       Dummy : Boolean;
- 
-    begin
-       <<Restart>>
- 
-       --  If we have finished parsing the current command line item (there
-       --  might be multiple switches in a single item), then go to the next
-       --  element.
- 
-       if Parser.Current_Argument > Parser.Arg_Count
-         or else (Parser.Current_Index >
-                    Argument (Parser, Parser.Current_Argument)'Last
-                  and then not Goto_Next_Argument_In_Section (Parser))
-       then
-          return ASCII.NUL;
-       end if;
- 
-       --  By default, the switch will not have a parameter
- 
-       Parser.The_Parameter :=
-         (Integer'Last, Integer'Last, Integer'Last - 1, ASCII.NUL);
-       Parser.The_Separator := ASCII.NUL;
- 
-       declare
-          Arg            : constant String :=
-                             Argument (Parser, Parser.Current_Argument);
-          Index_Switches : Natural := 0;
-          Max_Length     : Natural := 0;
-          End_Index      : Natural;
-          Param          : Switch_Parameter_Type;
-       begin
-          --  If we are on a new item, test if this might be a switch
- 
-          if Parser.Current_Index = Arg'First then
-             if Arg = "" or else Arg (Arg'First) /= Parser.Switch_Character then
- 
-                --  If it isn't a switch, return it immediately. We also know it
-                --  isn't the parameter to a previous switch, since that has
-                --  already been handled.
- 
-                if Switches (Switches'First) = '*' then
-                   Set_Parameter
-                     (Parser.The_Switch,
-                      Arg_Num => Parser.Current_Argument,
-                      First   => Arg'First,
-                      Last    => Arg'Last);
-                   Parser.Is_Switch (Parser.Current_Argument) := True;
-                   Dummy := Goto_Next_Argument_In_Section (Parser);
-                   return '*';
-                end if;
- 
-                if Parser.Stop_At_First then
-                   Parser.Current_Argument := Positive'Last;
-                   return ASCII.NUL;
- 
-                elsif not Goto_Next_Argument_In_Section (Parser) then
-                   return ASCII.NUL;
- 
-                else
-                   --  Recurse to get the next switch on the command line
- 
-                   goto Restart;
-                end if;
-             end if;
- 
-             --  We are on the first character of a new command line argument,
-             --  which starts with Switch_Character. Further analysis is needed.
- 
-             Parser.Current_Index := Parser.Current_Index + 1;
-             Parser.Is_Switch (Parser.Current_Argument) := True;
-          end if;
- 
-          Find_Longest_Matching_Switch
-            (Switches          => Switches,
-             Arg               => Arg (Parser.Current_Index .. Arg'Last),
-             Index_In_Switches => Index_Switches,
-             Switch_Length     => Max_Length,
-             Param             => Param);
- 
-          --  If switch is not accepted, it is either invalid or is returned
-          --  in the context of '*'.
- 
-          if Index_Switches = 0 then
- 
-             --  Find the current switch that we did not recognize. This is in
-             --  fact difficult because Getopt does not know explicitly about
-             --  short and long switches. Ideally, we would want the following
-             --  behavior:
- 
-             --      * for short switches, with Concatenate:
-             --        if -a is not recognized, and the command line has -daf
-             --        we should report the invalid switch as "-a".
- 
-             --      * for short switches, wihtout Concatenate:
-             --        we should report the invalid switch as "-daf".
- 
-             --      * for long switches:
-             --        if the commadn line is "--long" we should report --long
-             --        as unrecongized.
- 
-             --  Unfortunately, the fact that long switches start with a
-             --  duplicate switch character is just a convention (so we could
-             --  have a long switch "-long" for instance). We'll still rely on
-             --  this convention here to try and get as helpful an error message
-             --  as possible.
- 
-             --  Long switch case (starting with double switch character)
- 
-             if Arg (Arg'First + 1) = Parser.Switch_Character then
-                End_Index := Arg'Last;
- 
-             --  Short switch case
- 
-             else
-                End_Index :=
-                  (if Concatenate then Parser.Current_Index else Arg'Last);
-             end if;
- 
-             if Switches /= "" and then Switches (Switches'First) = '*' then
- 
-                --  Always prepend the switch character, so that users know
-                --  that this comes from a switch on the command line. This
-                --  is especially important when Concatenate is False, since
-                --  otherwise the current argument first character is lost.
- 
-                if Parser.Section (Parser.Current_Argument) = 0 then
- 
-                   --  A section transition should not be returned to the user
- 
-                   Dummy := Goto_Next_Argument_In_Section (Parser);
-                   goto Restart;
- 
-                else
-                   Set_Parameter
-                     (Parser.The_Switch,
-                      Arg_Num => Parser.Current_Argument,
-                      First   => Parser.Current_Index,
-                      Last    => Arg'Last,
-                      Extra   => Parser.Switch_Character);
-                   Parser.Is_Switch (Parser.Current_Argument) := True;
-                   Dummy := Goto_Next_Argument_In_Section (Parser);
-                   return '*';
-                end if;
-             end if;
- 
-             if Parser.Current_Index = Arg'First then
-                Set_Parameter
-                  (Parser.The_Switch,
-                   Arg_Num => Parser.Current_Argument,
-                   First   => Parser.Current_Index,
-                   Last    => End_Index);
-             else
-                Set_Parameter
-                  (Parser.The_Switch,
-                   Arg_Num => Parser.Current_Argument,
-                   First   => Parser.Current_Index,
-                   Last    => End_Index,
-                   Extra   => Parser.Switch_Character);
-             end if;
- 
-             Parser.Current_Index := End_Index + 1;
- 
-             raise Invalid_Switch;
-          end if;
- 
-          End_Index := Parser.Current_Index + Max_Length - 1;
-          Set_Parameter
-            (Parser.The_Switch,
-             Arg_Num => Parser.Current_Argument,
-             First   => Parser.Current_Index,
-             Last    => End_Index);
- 
-          case Param is
-             when Parameter_With_Optional_Space =>
-                if End_Index < Arg'Last then
-                   Set_Parameter
-                     (Parser.The_Parameter,
-                      Arg_Num => Parser.Current_Argument,
-                      First   => End_Index + 1,
-                      Last    => Arg'Last);
-                   Dummy := Goto_Next_Argument_In_Section (Parser);
- 
-                elsif Parser.Current_Argument < Parser.Arg_Count
-                  and then Parser.Section (Parser.Current_Argument + 1) /= 0
-                then
-                   Parser.Current_Argument := Parser.Current_Argument + 1;
-                   Parser.The_Separator := ' ';
-                   Set_Parameter
-                     (Parser.The_Parameter,
-                      Arg_Num => Parser.Current_Argument,
-                      First => Argument (Parser, Parser.Current_Argument)'First,
-                      Last  => Argument (Parser, Parser.Current_Argument)'Last);
-                   Parser.Is_Switch (Parser.Current_Argument) := True;
-                   Dummy := Goto_Next_Argument_In_Section (Parser);
- 
-                else
-                   Parser.Current_Index := End_Index + 1;
-                   raise Invalid_Parameter;
-                end if;
- 
-             when Parameter_With_Space_Or_Equal =>
- 
-                --  If the switch is of the form <switch>=xxx
- 
-                if End_Index < Arg'Last then
-                   if Arg (End_Index + 1) = '='
-                     and then End_Index + 1 < Arg'Last
-                   then
-                      Parser.The_Separator := '=';
-                      Set_Parameter
-                        (Parser.The_Parameter,
-                         Arg_Num => Parser.Current_Argument,
-                         First   => End_Index + 2,
-                         Last    => Arg'Last);
-                      Dummy := Goto_Next_Argument_In_Section (Parser);
- 
-                   else
-                      Parser.Current_Index := End_Index + 1;
-                      raise Invalid_Parameter;
-                   end if;
- 
-                --  Case of switch of the form <switch> xxx
- 
-                elsif Parser.Current_Argument < Parser.Arg_Count
-                  and then Parser.Section (Parser.Current_Argument + 1) /= 0
-                then
-                   Parser.Current_Argument := Parser.Current_Argument + 1;
-                   Parser.The_Separator := ' ';
-                   Set_Parameter
-                     (Parser.The_Parameter,
-                      Arg_Num => Parser.Current_Argument,
-                      First => Argument (Parser, Parser.Current_Argument)'First,
-                      Last  => Argument (Parser, Parser.Current_Argument)'Last);
-                   Parser.Is_Switch (Parser.Current_Argument) := True;
-                   Dummy := Goto_Next_Argument_In_Section (Parser);
- 
-                else
-                   Parser.Current_Index := End_Index + 1;
-                   raise Invalid_Parameter;
-                end if;
- 
-             when Parameter_No_Space =>
-                if End_Index < Arg'Last then
-                   Set_Parameter
-                     (Parser.The_Parameter,
-                      Arg_Num => Parser.Current_Argument,
-                      First   => End_Index + 1,
-                      Last    => Arg'Last);
-                   Dummy := Goto_Next_Argument_In_Section (Parser);
- 
-                else
-                   Parser.Current_Index := End_Index + 1;
-                   raise Invalid_Parameter;
-                end if;
- 
-             when Parameter_Optional =>
-                if End_Index < Arg'Last then
-                   Set_Parameter
-                     (Parser.The_Parameter,
-                      Arg_Num => Parser.Current_Argument,
-                      First   => End_Index + 1,
-                      Last    => Arg'Last);
-                end if;
- 
-                Dummy := Goto_Next_Argument_In_Section (Parser);
- 
-             when Parameter_None =>
-                if Concatenate or else End_Index = Arg'Last then
-                   Parser.Current_Index := End_Index + 1;
- 
-                else
-                   --  If Concatenate is False and the full argument is not
-                   --  recognized as a switch, this is an invalid switch.
- 
-                   if Switches (Switches'First) = '*' then
-                      Set_Parameter
-                        (Parser.The_Switch,
-                         Arg_Num => Parser.Current_Argument,
-                         First   => Arg'First,
-                         Last    => Arg'Last);
-                      Parser.Is_Switch (Parser.Current_Argument) := True;
-                      Dummy := Goto_Next_Argument_In_Section (Parser);
-                      return '*';
-                   end if;
- 
-                   Set_Parameter
-                     (Parser.The_Switch,
-                      Arg_Num => Parser.Current_Argument,
-                      First   => Parser.Current_Index,
-                      Last    => Arg'Last,
-                      Extra   => Parser.Switch_Character);
-                   Parser.Current_Index := Arg'Last + 1;
-                   raise Invalid_Switch;
-                end if;
-          end case;
- 
-          return Switches (Index_Switches);
-       end;
-    end Getopt;
- 
-    -----------------------------------
-    -- Goto_Next_Argument_In_Section --
-    -----------------------------------
- 
-    function Goto_Next_Argument_In_Section
-      (Parser : Opt_Parser) return Boolean
-    is
-    begin
-       Parser.Current_Argument := Parser.Current_Argument + 1;
- 
-       if Parser.Current_Argument > Parser.Arg_Count
-         or else Parser.Section (Parser.Current_Argument) = 0
-       then
-          loop
-             Parser.Current_Argument := Parser.Current_Argument + 1;
- 
-             if Parser.Current_Argument > Parser.Arg_Count then
-                Parser.Current_Index := 1;
-                return False;
-             end if;
- 
-             exit when Parser.Section (Parser.Current_Argument) =
-                                                   Parser.Current_Section;
-          end loop;
-       end if;
- 
-       Parser.Current_Index :=
-         Argument (Parser, Parser.Current_Argument)'First;
- 
-       return True;
-    end Goto_Next_Argument_In_Section;
- 
-    ------------------
-    -- Goto_Section --
-    ------------------
- 
-    procedure Goto_Section
-      (Name   : String := "";
-       Parser : Opt_Parser := Command_Line_Parser)
-    is
-       Index : Integer;
- 
-    begin
-       Parser.In_Expansion := False;
- 
-       if Name = "" then
-          Parser.Current_Argument := 1;
-          Parser.Current_Index    := 1;
-          Parser.Current_Section  := 1;
-          return;
-       end if;
- 
-       Index := 1;
-       while Index <= Parser.Arg_Count loop
-          if Parser.Section (Index) = 0
-            and then Argument (Parser, Index) = Parser.Switch_Character & Name
-          then
-             Parser.Current_Argument := Index + 1;
-             Parser.Current_Index    := 1;
- 
-             if Parser.Current_Argument <= Parser.Arg_Count then
-                Parser.Current_Section :=
-                  Parser.Section (Parser.Current_Argument);
-             end if;
- 
-             --  Exit from loop if we have the start of another section
- 
-             if Index = Parser.Section'Last
-                or else Parser.Section (Index + 1) /= 0
-             then
-                return;
-             end if;
-          end if;
- 
-          Index := Index + 1;
-       end loop;
- 
-       Parser.Current_Argument := Positive'Last;
-       Parser.Current_Index := 2;   --  so that Get_Argument returns nothing
-    end Goto_Section;
- 
-    ----------------------------
-    -- Initialize_Option_Scan --
-    ----------------------------
- 
-    procedure Initialize_Option_Scan
-      (Switch_Char              : Character := '-';
-       Stop_At_First_Non_Switch : Boolean   := False;
-       Section_Delimiters       : String    := "")
-    is
-    begin
-       Internal_Initialize_Option_Scan
-         (Parser                   => Command_Line_Parser,
-          Switch_Char              => Switch_Char,
-          Stop_At_First_Non_Switch => Stop_At_First_Non_Switch,
-          Section_Delimiters       => Section_Delimiters);
-    end Initialize_Option_Scan;
- 
-    ----------------------------
-    -- Initialize_Option_Scan --
-    ----------------------------
- 
-    procedure Initialize_Option_Scan
-      (Parser                   : out Opt_Parser;
-       Command_Line             : GNAT.OS_Lib.Argument_List_Access;
-       Switch_Char              : Character := '-';
-       Stop_At_First_Non_Switch : Boolean := False;
-       Section_Delimiters       : String := "")
-    is
-    begin
-       Free (Parser);
- 
-       if Command_Line = null then
-          Parser := new Opt_Parser_Data (CL.Argument_Count);
-          Internal_Initialize_Option_Scan
-            (Parser                   => Parser,
-             Switch_Char              => Switch_Char,
-             Stop_At_First_Non_Switch => Stop_At_First_Non_Switch,
-             Section_Delimiters       => Section_Delimiters);
-       else
-          Parser := new Opt_Parser_Data (Command_Line'Length);
-          Parser.Arguments := Command_Line;
-          Internal_Initialize_Option_Scan
-            (Parser                   => Parser,
-             Switch_Char              => Switch_Char,
-             Stop_At_First_Non_Switch => Stop_At_First_Non_Switch,
-             Section_Delimiters       => Section_Delimiters);
-       end if;
-    end Initialize_Option_Scan;
- 
-    -------------------------------------
-    -- Internal_Initialize_Option_Scan --
-    -------------------------------------
- 
-    procedure Internal_Initialize_Option_Scan
-      (Parser                   : Opt_Parser;
-       Switch_Char              : Character;
-       Stop_At_First_Non_Switch : Boolean;
-       Section_Delimiters       : String)
-    is
-       Section_Num     : Section_Number;
-       Section_Index   : Integer;
-       Last            : Integer;
-       Delimiter_Found : Boolean;
- 
-       Discard : Boolean;
-       pragma Warnings (Off, Discard);
- 
-    begin
-       Parser.Current_Argument := 0;
-       Parser.Current_Index    := 0;
-       Parser.In_Expansion     := False;
-       Parser.Switch_Character := Switch_Char;
-       Parser.Stop_At_First    := Stop_At_First_Non_Switch;
-       Parser.Section          := (others => 1);
- 
-       --  If we are using sections, we have to preprocess the command line to
-       --  delimit them. A section can be repeated, so we just give each item
-       --  on the command line a section number
- 
-       Section_Num   := 1;
-       Section_Index := Section_Delimiters'First;
-       while Section_Index <= Section_Delimiters'Last loop
-          Last := Section_Index;
-          while Last <= Section_Delimiters'Last
-            and then Section_Delimiters (Last) /= ' '
-          loop
-             Last := Last + 1;
-          end loop;
- 
-          Delimiter_Found := False;
-          Section_Num := Section_Num + 1;
- 
-          for Index in 1 .. Parser.Arg_Count loop
-             pragma Assert (Argument (Parser, Index)'First = 1);
-             if Argument (Parser, Index) /= ""
-               and then Argument (Parser, Index)(1) = Parser.Switch_Character
-               and then
-                 Argument (Parser, Index) = Parser.Switch_Character &
-                                              Section_Delimiters
-                                                (Section_Index .. Last - 1)
-             then
-                Parser.Section (Index) := 0;
-                Delimiter_Found := True;
- 
-             elsif Parser.Section (Index) = 0 then
- 
-                --  A previous section delimiter
- 
-                Delimiter_Found := False;
- 
-             elsif Delimiter_Found then
-                Parser.Section (Index) := Section_Num;
-             end if;
-          end loop;
- 
-          Section_Index := Last + 1;
-          while Section_Index <= Section_Delimiters'Last
-            and then Section_Delimiters (Section_Index) = ' '
-          loop
-             Section_Index := Section_Index + 1;
-          end loop;
-       end loop;
- 
-       Discard := Goto_Next_Argument_In_Section (Parser);
-    end Internal_Initialize_Option_Scan;
- 
-    ---------------
-    -- Parameter --
-    ---------------
- 
-    function Parameter
-      (Parser : Opt_Parser := Command_Line_Parser) return String
-    is
-    begin
-       if Parser.The_Parameter.First > Parser.The_Parameter.Last then
-          return String'(1 .. 0 => ' ');
-       else
-          return Argument (Parser, Parser.The_Parameter.Arg_Num)
-            (Parser.The_Parameter.First .. Parser.The_Parameter.Last);
-       end if;
-    end Parameter;
- 
-    ---------------
-    -- Separator --
-    ---------------
- 
-    function Separator
-      (Parser : Opt_Parser := Command_Line_Parser) return Character
-    is
-    begin
-       return Parser.The_Separator;
-    end Separator;
- 
-    -------------------
-    -- Set_Parameter --
-    -------------------
- 
-    procedure Set_Parameter
-      (Variable : out Parameter_Type;
-       Arg_Num  : Positive;
-       First    : Positive;
-       Last     : Natural;
-       Extra    : Character := ASCII.NUL)
-    is
-    begin
-       Variable.Arg_Num := Arg_Num;
-       Variable.First   := First;
-       Variable.Last    := Last;
-       Variable.Extra   := Extra;
-    end Set_Parameter;
- 
-    ---------------------
-    -- Start_Expansion --
-    ---------------------
- 
-    procedure Start_Expansion
-      (Iterator     : out Expansion_Iterator;
-       Pattern      : String;
-       Directory    : String := "";
-       Basic_Regexp : Boolean := True)
-    is
-       Directory_Separator : Character;
-       pragma Import (C, Directory_Separator, "__gnat_dir_separator");
- 
-       First : Positive := Pattern'First;
-       Pat   : String := Pattern;
- 
-    begin
-       Canonical_Case_File_Name (Pat);
-       Iterator.Current_Depth := 1;
- 
-       --  If Directory is unspecified, use the current directory ("./" or ".\")
- 
-       if Directory = "" then
-          Iterator.Dir_Name (1 .. 2) := "." & Directory_Separator;
-          Iterator.Start := 3;
- 
-       else
-          Iterator.Dir_Name (1 .. Directory'Length) := Directory;
-          Iterator.Start := Directory'Length + 1;
-          Canonical_Case_File_Name (Iterator.Dir_Name (1 .. Directory'Length));
- 
-          --  Make sure that the last character is a directory separator
- 
-          if Directory (Directory'Last) /= Directory_Separator then
-             Iterator.Dir_Name (Iterator.Start) := Directory_Separator;
-             Iterator.Start := Iterator.Start + 1;
-          end if;
-       end if;
- 
-       Iterator.Levels (1).Name_Last := Iterator.Start - 1;
- 
-       --  Open the initial Directory, at depth 1
- 
-       GNAT.Directory_Operations.Open
-         (Iterator.Levels (1).Dir, Iterator.Dir_Name (1 .. Iterator.Start - 1));
- 
-       --  If in the current directory and the pattern starts with "./" or ".\",
-       --  drop the "./" or ".\" from the pattern.
- 
-       if Directory = "" and then Pat'Length > 2
-         and then Pat (Pat'First) = '.'
-         and then Pat (Pat'First + 1) = Directory_Separator
-       then
-          First := Pat'First + 2;
-       end if;
- 
-       Iterator.Regexp :=
-         GNAT.Regexp.Compile (Pat (First .. Pat'Last), Basic_Regexp, True);
- 
-       Iterator.Maximum_Depth := 1;
- 
-       --  Maximum_Depth is equal to 1 plus the number of directory separators
-       --  in the pattern.
- 
-       for Index in First .. Pat'Last loop
-          if Pat (Index) = Directory_Separator then
-             Iterator.Maximum_Depth := Iterator.Maximum_Depth + 1;
-             exit when Iterator.Maximum_Depth = Max_Depth;
-          end if;
-       end loop;
-    end Start_Expansion;
- 
-    ----------
-    -- Free --
-    ----------
- 
-    procedure Free (Parser : in out Opt_Parser) is
-       procedure Unchecked_Free is new
-         Ada.Unchecked_Deallocation (Opt_Parser_Data, Opt_Parser);
-    begin
-       if Parser /= null and then Parser /= Command_Line_Parser then
-          Free (Parser.Arguments);
-          Unchecked_Free (Parser);
-       end if;
-    end Free;
- 
-    ------------------
-    -- Define_Alias --
-    ------------------
- 
-    procedure Define_Alias
-      (Config   : in out Command_Line_Configuration;
-       Switch   : String;
-       Expanded : String;
-       Section  : String := "")
-    is
-       Def    : Alias_Definition;
- 
-    begin
-       if Config = null then
-          Config := new Command_Line_Configuration_Record;
-       end if;
- 
-       Def.Alias     := new String'(Switch);
-       Def.Expansion := new String'(Expanded);
-       Def.Section   := new String'(Section);
-       Add (Config.Aliases, Def);
-    end Define_Alias;
- 
-    -------------------
-    -- Define_Prefix --
-    -------------------
- 
-    procedure Define_Prefix
-      (Config : in out Command_Line_Configuration;
-       Prefix : String)
-    is
-    begin
-       if Config = null then
-          Config := new Command_Line_Configuration_Record;
-       end if;
- 
-       Add (Config.Prefixes, new String'(Prefix));
-    end Define_Prefix;
- 
-    ---------
-    -- Add --
-    ---------
- 
-    procedure Add
-      (Config : in out Command_Line_Configuration;
-       Switch : Switch_Definition)
-    is
-       procedure Unchecked_Free is new Ada.Unchecked_Deallocation
-         (Switch_Definitions, Switch_Definitions_List);
- 
-       Tmp : Switch_Definitions_List;
- 
-    begin
-       if Config = null then
-          Config := new Command_Line_Configuration_Record;
-       end if;
- 
-       Tmp := Config.Switches;
- 
-       if Tmp = null then
-          Config.Switches := new Switch_Definitions (1 .. 1);
-       else
-          Config.Switches := new Switch_Definitions (1 .. Tmp'Length + 1);
-          Config.Switches (1 .. Tmp'Length) := Tmp.all;
-          Unchecked_Free (Tmp);
-       end if;
- 
-       if Switch.Switch /= null and then Switch.Switch.all = "*" then
-          Config.Star_Switch := True;
-       end if;
- 
-       Config.Switches (Config.Switches'Last) := Switch;
-    end Add;
- 
-    ---------
-    -- Add --
-    ---------
- 
-    procedure Add
-      (Def   : in out Alias_Definitions_List;
-       Alias : Alias_Definition)
-    is
-       procedure Unchecked_Free is new
-         Ada.Unchecked_Deallocation
-           (Alias_Definitions, Alias_Definitions_List);
- 
-       Tmp : Alias_Definitions_List := Def;
- 
-    begin
-       if Tmp = null then
-          Def := new Alias_Definitions (1 .. 1);
-       else
-          Def := new Alias_Definitions (1 .. Tmp'Length + 1);
-          Def (1 .. Tmp'Length) := Tmp.all;
-          Unchecked_Free (Tmp);
-       end if;
- 
-       Def (Def'Last) := Alias;
-    end Add;
- 
-    ---------------------------
-    -- Initialize_Switch_Def --
-    ---------------------------
- 
-    procedure Initialize_Switch_Def
-      (Def         : out Switch_Definition;
-       Switch      : String := "";
-       Long_Switch : String := "";
-       Help        : String := "";
-       Section     : String := "";
-       Argument    : String := "ARG")
-    is
-       P1, P2       : Switch_Parameter_Type := Parameter_None;
-       Last1, Last2 : Integer;
- 
-    begin
-       if Switch /= "" then
-          Def.Switch := new String'(Switch);
-          Decompose_Switch (Switch, P1, Last1);
-       end if;
- 
-       if Long_Switch /= "" then
-          Def.Long_Switch := new String'(Long_Switch);
-          Decompose_Switch (Long_Switch, P2, Last2);
-       end if;
- 
-       if Switch /= "" and then Long_Switch /= "" then
-          if (P1 = Parameter_None and then P2 /= P1)
-            or else (P2 = Parameter_None and then P1 /= P2)
-            or else (P1 = Parameter_Optional and then P2 /= P1)
-            or else (P2 = Parameter_Optional and then P2 /= P1)
-          then
-             raise Invalid_Switch
-               with "Inconsistent parameter types for "
-                 & Switch & " and " & Long_Switch;
-          end if;
-       end if;
- 
-       if Section /= "" then
-          Def.Section := new String'(Section);
-       end if;
- 
-       if Argument /= "ARG" then
-          Def.Argument := new String'(Argument);
-       end if;
- 
-       if Help /= "" then
-          Def.Help := new String'(Help);
-       end if;
-    end Initialize_Switch_Def;
- 
-    -------------------
-    -- Define_Switch --
-    -------------------
- 
-    procedure Define_Switch
-      (Config      : in out Command_Line_Configuration;
-       Switch      : String := "";
-       Long_Switch : String := "";
-       Help        : String := "";
-       Section     : String := "";
-       Argument    : String := "ARG")
-    is
-       Def : Switch_Definition;
-    begin
-       if Switch /= "" or else Long_Switch /= "" then
-          Initialize_Switch_Def
-            (Def, Switch, Long_Switch, Help, Section, Argument);
-          Add (Config, Def);
-       end if;
-    end Define_Switch;
- 
-    -------------------
-    -- Define_Switch --
-    -------------------
- 
-    procedure Define_Switch
-      (Config      : in out Command_Line_Configuration;
-       Output      : access Boolean;
-       Switch      : String := "";
-       Long_Switch : String := "";
-       Help        : String := "";
-       Section     : String := "";
-       Value       : Boolean := True)
-    is
-       Def : Switch_Definition (Switch_Boolean);
-    begin
-       if Switch /= "" or else Long_Switch /= "" then
-          Initialize_Switch_Def (Def, Switch, Long_Switch, Help, Section);
-          Def.Boolean_Output := Output.all'Unchecked_Access;
-          Def.Boolean_Value  := Value;
-          Add (Config, Def);
-       end if;
-    end Define_Switch;
- 
-    -------------------
-    -- Define_Switch --
-    -------------------
- 
-    procedure Define_Switch
-      (Config      : in out Command_Line_Configuration;
-       Output      : access Integer;
-       Switch      : String := "";
-       Long_Switch : String := "";
-       Help        : String := "";
-       Section     : String := "";
-       Initial     : Integer := 0;
-       Default     : Integer := 1;
-       Argument    : String := "ARG")
-    is
-       Def : Switch_Definition (Switch_Integer);
-    begin
-       if Switch /= "" or else Long_Switch /= "" then
-          Initialize_Switch_Def
-            (Def, Switch, Long_Switch, Help, Section, Argument);
-          Def.Integer_Output  := Output.all'Unchecked_Access;
-          Def.Integer_Default := Default;
-          Def.Integer_Initial := Initial;
-          Add (Config, Def);
-       end if;
-    end Define_Switch;
- 
-    -------------------
-    -- Define_Switch --
-    -------------------
- 
-    procedure Define_Switch
-      (Config      : in out Command_Line_Configuration;
-       Output      : access GNAT.Strings.String_Access;
-       Switch      : String := "";
-       Long_Switch : String := "";
-       Help        : String := "";
-       Section     : String := "";
-       Argument    : String := "ARG")
-    is
-       Def : Switch_Definition (Switch_String);
-    begin
-       if Switch /= "" or else Long_Switch /= "" then
-          Initialize_Switch_Def
-            (Def, Switch, Long_Switch, Help, Section, Argument);
-          Def.String_Output  := Output.all'Unchecked_Access;
-          Add (Config, Def);
-       end if;
-    end Define_Switch;
- 
-    --------------------
-    -- Define_Section --
-    --------------------
- 
-    procedure Define_Section
-      (Config : in out Command_Line_Configuration;
-       Section : String)
-    is
-    begin
-       if Config = null then
-          Config := new Command_Line_Configuration_Record;
-       end if;
- 
-       Add (Config.Sections, new String'(Section));
-    end Define_Section;
- 
-    --------------------
-    -- Foreach_Switch --
-    --------------------
- 
-    procedure Foreach_Switch
-      (Config   : Command_Line_Configuration;
-       Section  : String)
-    is
-    begin
-       if Config /= null and then Config.Switches /= null then
-          for J in Config.Switches'Range loop
-             if (Section = "" and then Config.Switches (J).Section = null)
-               or else
-                 (Config.Switches (J).Section /= null
-                   and then Config.Switches (J).Section.all = Section)
-             then
-                exit when Config.Switches (J).Switch /= null
-                  and then not Callback (Config.Switches (J).Switch.all, J);
- 
-                exit when Config.Switches (J).Long_Switch /= null
-                  and then
-                    not Callback (Config.Switches (J).Long_Switch.all, J);
-             end if;
-          end loop;
-       end if;
-    end Foreach_Switch;
- 
-    ------------------
-    -- Get_Switches --
-    ------------------
- 
-    function Get_Switches
-      (Config      : Command_Line_Configuration;
-       Switch_Char : Character := '-';
-       Section     : String := "") return String
-    is
-       Ret : Ada.Strings.Unbounded.Unbounded_String;
-       use Ada.Strings.Unbounded;
- 
-       function Add_Switch (S : String; Index : Integer) return Boolean;
-       --  Add a switch to Ret
- 
-       ----------------
-       -- Add_Switch --
-       ----------------
- 
-       function Add_Switch (S : String; Index : Integer) return Boolean is
-          pragma Unreferenced (Index);
-       begin
-          if S = "*" then
-             Ret := "*" & Ret;  --  Always first
-          elsif S (S'First) = Switch_Char then
-             Append (Ret, " " & S (S'First + 1 .. S'Last));
-          else
-             Append (Ret, " " & S);
-          end if;
- 
-          return True;
-       end Add_Switch;
- 
-       Tmp : Boolean;
-       pragma Unreferenced (Tmp);
- 
-       procedure Foreach is new Foreach_Switch (Add_Switch);
- 
-    --  Start of processing for Get_Switches
- 
-    begin
-       if Config = null then
-          return "";
-       end if;
- 
-       Foreach (Config, Section => Section);
- 
-       --  Add relevant aliases
- 
-       if Config.Aliases /= null then
-          for A in Config.Aliases'Range loop
-             if Config.Aliases (A).Section.all = Section then
-                Tmp := Add_Switch (Config.Aliases (A).Alias.all, -1);
-             end if;
-          end loop;
-       end if;
- 
-       return To_String (Ret);
-    end Get_Switches;
- 
-    ------------------------
-    -- Section_Delimiters --
-    ------------------------
- 
-    function Section_Delimiters
-      (Config : Command_Line_Configuration) return String
-    is
-       use Ada.Strings.Unbounded;
-       Result : Unbounded_String;
- 
-    begin
-       if Config /= null and then Config.Sections /= null then
-          for S in Config.Sections'Range loop
-             Append (Result, " " & Config.Sections (S).all);
-          end loop;
-       end if;
- 
-       return To_String (Result);
-    end Section_Delimiters;
- 
-    -----------------------
-    -- Set_Configuration --
-    -----------------------
- 
-    procedure Set_Configuration
-      (Cmd    : in out Command_Line;
-       Config : Command_Line_Configuration)
-    is
-    begin
-       Cmd.Config := Config;
-    end Set_Configuration;
- 
-    -----------------------
-    -- Get_Configuration --
-    -----------------------
- 
-    function Get_Configuration
-      (Cmd : Command_Line) return Command_Line_Configuration
-    is
-    begin
-       return Cmd.Config;
-    end Get_Configuration;
- 
-    ----------------------
-    -- Set_Command_Line --
-    ----------------------
- 
-    procedure Set_Command_Line
-      (Cmd                : in out Command_Line;
-       Switches           : String;
-       Getopt_Description : String := "";
-       Switch_Char        : Character := '-')
-    is
-       Tmp     : Argument_List_Access;
-       Parser  : Opt_Parser;
-       S       : Character;
-       Section : String_Access := null;
- 
-       function Real_Full_Switch
-         (S      : Character;
-          Parser : Opt_Parser) return String;
-       --  Ensure that the returned switch value contains the Switch_Char prefix
-       --  if needed.
- 
-       ----------------------
-       -- Real_Full_Switch --
-       ----------------------
- 
-       function Real_Full_Switch
-         (S      : Character;
-          Parser : Opt_Parser) return String
-       is
-       begin
-          if S = '*' then
-             return Full_Switch (Parser);
-          else
-             return Switch_Char & Full_Switch (Parser);
-          end if;
-       end Real_Full_Switch;
- 
-    --  Start of processing for Set_Command_Line
- 
-    begin
-       Free (Cmd.Expanded);
-       Free (Cmd.Params);
- 
-       if Switches /= "" then
-          Tmp := Argument_String_To_List (Switches);
-          Initialize_Option_Scan (Parser, Tmp, Switch_Char);
- 
-          loop
-             begin
-                if Cmd.Config /= null then
- 
-                   --  Do not use Getopt_Description in this case. Otherwise,
-                   --  if we have defined a prefix -gnaty, and two switches
-                   --  -gnatya and -gnatyL!, we would have a different behavior
-                   --  depending on the order of switches:
- 
-                   --      -gnatyL1a   =>  -gnatyL with argument "1a"
-                   --      -gnatyaL1   =>  -gnatya and -gnatyL with argument "1"
- 
-                   --  This is because the call to Getopt below knows nothing
-                   --  about prefixes, and in the first case finds a valid
-                   --  switch with arguments, so returns it without analyzing
-                   --  the argument. In the second case, the switch matches "*",
-                   --  and is then decomposed below.
- 
-                   --  Note: When a Command_Line object is associated with a
-                   --  Command_Line_Config (which is mostly the case for tools
-                   --  that let users choose the command line before spawning
-                   --  other tools, for instance IDEs), the configuration of
-                   --  the switches must be taken from the Command_Line_Config.
- 
-                   S := Getopt (Switches    => "* " & Get_Switches (Cmd.Config),
-                                Concatenate => False,
-                                Parser      => Parser);
- 
-                else
-                   S := Getopt (Switches    => "* " & Getopt_Description,
-                                Concatenate => False,
-                                Parser      => Parser);
-                end if;
- 
-                exit when S = ASCII.NUL;
- 
-                declare
-                   Sw         : constant String := Real_Full_Switch (S, Parser);
-                   Is_Section : Boolean         := False;
- 
-                begin
-                   if Cmd.Config /= null
-                     and then Cmd.Config.Sections /= null
-                   then
-                      Section_Search :
-                      for S in Cmd.Config.Sections'Range loop
-                         if Sw = Cmd.Config.Sections (S).all then
-                            Section := Cmd.Config.Sections (S);
-                            Is_Section := True;
- 
-                            exit Section_Search;
-                         end if;
-                      end loop Section_Search;
-                   end if;
- 
-                   if not Is_Section then
-                      if Section = null then
-                         Add_Switch (Cmd, Sw, Parameter (Parser));
-                      else
-                         Add_Switch
-                           (Cmd, Sw, Parameter (Parser),
-                            Section => Section.all);
-                      end if;
-                   end if;
-                end;
- 
-             exception
-                when Invalid_Parameter =>
- 
-                   --  Add it with no parameter, if that's the way the user
-                   --  wants it.
- 
-                   --  Specify the separator in all cases, as the switch might
-                   --  need to be unaliased, and the alias might contain
-                   --  switches with parameters.
- 
-                   if Section = null then
-                      Add_Switch
-                        (Cmd, Switch_Char & Full_Switch (Parser));
-                   else
-                      Add_Switch
-                        (Cmd, Switch_Char & Full_Switch (Parser),
-                         Section   => Section.all);
-                   end if;
-             end;
-          end loop;
- 
-          Free (Parser);
-       end if;
-    end Set_Command_Line;
- 
-    ----------------
-    -- Looking_At --
-    ----------------
- 
-    function Looking_At
-      (Type_Str  : String;
-       Index     : Natural;
-       Substring : String) return Boolean
-    is
-    begin
-       return Index + Substring'Length - 1 <= Type_Str'Last
-         and then Type_Str (Index .. Index + Substring'Length - 1) = Substring;
-    end Looking_At;
- 
-    ------------------------
-    -- Can_Have_Parameter --
-    ------------------------
- 
-    function Can_Have_Parameter (S : String) return Boolean is
-    begin
-       if S'Length <= 1 then
-          return False;
-       end if;
- 
-       case S (S'Last) is
-          when '!' | ':' | '?' | '=' =>
-             return True;
-          when others =>
-             return False;
-       end case;
-    end Can_Have_Parameter;
- 
-    -----------------------
-    -- Require_Parameter --
-    -----------------------
- 
-    function Require_Parameter (S : String) return Boolean is
-    begin
-       if S'Length <= 1 then
-          return False;
-       end if;
- 
-       case S (S'Last) is
-          when '!' | ':' | '=' =>
-             return True;
-          when others =>
-             return False;
-       end case;
-    end Require_Parameter;
- 
-    -------------------
-    -- Actual_Switch --
-    -------------------
- 
-    function Actual_Switch (S : String) return String is
-    begin
-       if S'Length <= 1 then
-          return S;
-       end if;
- 
-       case S (S'Last) is
-          when '!' | ':' | '?' | '=' =>
-             return S (S'First .. S'Last - 1);
-          when others =>
-             return S;
-       end case;
-    end Actual_Switch;
- 
-    ----------------------------
-    -- For_Each_Simple_Switch --
-    ----------------------------
- 
-    procedure For_Each_Simple_Switch
-      (Config    : Command_Line_Configuration;
-       Section   : String;
-       Switch    : String;
-       Parameter : String := "";
-       Unalias   : Boolean := True)
-    is
-       function Group_Analysis
-         (Prefix : String;
-          Group  : String) return Boolean;
-       --  Perform the analysis of a group of switches
- 
-       Found_In_Config : Boolean := False;
-       function Is_In_Config
-         (Config_Switch : String; Index : Integer) return Boolean;
-       --  If Switch is the same as Config_Switch, run the callback and sets
-       --  Found_In_Config to True.
- 
-       function Starts_With
-         (Config_Switch : String; Index : Integer) return Boolean;
-       --  if Switch starts with Config_Switch, sets Found_In_Config to True.
-       --  The return value is for the Foreach_Switch iterator.
- 
-       --------------------
-       -- Group_Analysis --
-       --------------------
- 
-       function Group_Analysis
-         (Prefix : String;
-          Group  : String) return Boolean
-       is
-          Idx   : Natural;
-          Found : Boolean;
- 
-          function Analyze_Simple_Switch
-            (Switch : String; Index : Integer) return Boolean;
-          --  "Switches" is one of the switch definitions passed to the
-          --  configuration, not one of the switches found on the command line.
- 
-          ---------------------------
-          -- Analyze_Simple_Switch --
-          ---------------------------
- 
-          function Analyze_Simple_Switch
-            (Switch : String; Index : Integer) return Boolean
-          is
-             pragma Unreferenced (Index);
- 
-             Full : constant String := Prefix & Group (Idx .. Group'Last);
- 
-             Sw : constant String := Actual_Switch (Switch);
-             --  Switches definition minus argument definition
- 
-             Last  : Natural;
-             Param : Natural;
- 
-          begin
-             --  Verify that sw starts with Prefix
- 
-             if Looking_At (Sw, Sw'First, Prefix)
- 
-               --  Verify that the group starts with sw
- 
-               and then Looking_At (Full, Full'First, Sw)
-             then
-                Last  := Idx + Sw'Length - Prefix'Length - 1;
-                Param := Last + 1;
- 
-                if Can_Have_Parameter (Switch) then
- 
-                   --  Include potential parameter to the recursive call. Only
-                   --  numbers are allowed.
- 
-                   while Last < Group'Last
-                     and then Group (Last + 1) in '0' .. '9'
-                   loop
-                      Last := Last + 1;
-                   end loop;
-                end if;
- 
-                if not Require_Parameter (Switch) or else Last >= Param then
-                   if Idx = Group'First
-                     and then Last = Group'Last
-                     and then Last < Param
-                   then
-                      --  The group only concerns a single switch. Do not
-                      --  perform recursive call.
- 
-                      --  Note that we still perform a recursive call if
-                      --  a parameter is detected in the switch, as this
-                      --  is a way to correctly identify such a parameter
-                      --  in aliases.
- 
-                      return False;
-                   end if;
- 
-                   Found := True;
- 
-                   --  Recursive call, using the detected parameter if any
- 
-                   if Last >= Param then
-                      For_Each_Simple_Switch
-                        (Config,
-                         Section,
-                         Prefix & Group (Idx .. Param - 1),
-                         Group (Param .. Last));
- 
-                   else
-                      For_Each_Simple_Switch
-                        (Config, Section, Prefix & Group (Idx .. Last), "");
-                   end if;
- 
-                   Idx := Last + 1;
-                   return False;
-                end if;
-             end if;
- 
-             return True;
-          end Analyze_Simple_Switch;
- 
-          procedure Foreach is new Foreach_Switch (Analyze_Simple_Switch);
- 
-       --  Start of processing for Group_Analysis
- 
-       begin
-          Idx := Group'First;
-          while Idx <= Group'Last loop
-             Found := False;
-             Foreach (Config, Section);
- 
-             if not Found then
-                For_Each_Simple_Switch
-                  (Config, Section, Prefix & Group (Idx), "");
-                Idx := Idx + 1;
-             end if;
-          end loop;
- 
-          return True;
-       end Group_Analysis;
- 
-       ------------------
-       -- Is_In_Config --
-       ------------------
- 
-       function Is_In_Config
-         (Config_Switch : String; Index : Integer) return Boolean
-       is
-          Last : Natural;
-          P    : Switch_Parameter_Type;
- 
-       begin
-          Decompose_Switch (Config_Switch, P, Last);
- 
-          if Config_Switch (Config_Switch'First .. Last) = Switch then
-             case P is
-                when Parameter_None =>
-                   if Parameter = "" then
-                      Callback (Switch, "", "", Index => Index);
-                      Found_In_Config := True;
-                      return False;
-                   end if;
- 
-                when Parameter_With_Optional_Space =>
-                   Callback (Switch, " ", Parameter, Index => Index);
-                   Found_In_Config := True;
-                   return False;
- 
-                when Parameter_With_Space_Or_Equal =>
-                   Callback (Switch, "=", Parameter, Index => Index);
-                   Found_In_Config := True;
-                   return False;
- 
-                when Parameter_No_Space =>
-                   Callback (Switch, "", Parameter, Index);
-                   Found_In_Config := True;
-                   return False;
- 
-                when Parameter_Optional =>
-                   Callback (Switch, "", Parameter, Index);
-                   Found_In_Config := True;
-                   return False;
-             end case;
-          end if;
- 
-          return True;
-       end Is_In_Config;
- 
-       -----------------
-       -- Starts_With --
-       -----------------
- 
-       function Starts_With
-         (Config_Switch : String; Index : Integer) return Boolean
-       is
-          Last  : Natural;
-          Param : Natural;
-          P     : Switch_Parameter_Type;
- 
-       begin
-          --  This function is called when we believe the parameter was
-          --  specified as part of the switch, instead of separately. Thus we
-          --  look in the config to find all possible switches.
- 
-          Decompose_Switch (Config_Switch, P, Last);
- 
-          if Looking_At
-               (Switch, Switch'First,
-                Config_Switch (Config_Switch'First .. Last))
-          then
-             --  Set first char of Param, and last char of Switch
- 
-             Param := Switch'First + Last;
-             Last  := Switch'First + Last - Config_Switch'First;
- 
-             case P is
- 
-                --  None is already handled in Is_In_Config
- 
-                when Parameter_None =>
-                   null;
- 
-                when Parameter_With_Space_Or_Equal =>
-                   if Param <= Switch'Last
-                     and then
-                       (Switch (Param) = ' ' or else Switch (Param) = '=')
-                   then
-                      Callback (Switch (Switch'First .. Last),
-                                "=", Switch (Param + 1 .. Switch'Last), Index);
-                      Found_In_Config := True;
-                      return False;
-                   end if;
- 
-                when Parameter_With_Optional_Space =>
-                   if Param <= Switch'Last and then Switch (Param) = ' '  then
-                      Param := Param + 1;
-                   end if;
- 
-                   Callback (Switch (Switch'First .. Last),
-                             " ", Switch (Param .. Switch'Last), Index);
-                   Found_In_Config := True;
-                   return False;
- 
-                when Parameter_No_Space
-                   | Parameter_Optional
-                =>
-                   Callback (Switch (Switch'First .. Last),
-                             "", Switch (Param .. Switch'Last), Index);
-                   Found_In_Config := True;
-                   return False;
-             end case;
-          end if;
-          return True;
-       end Starts_With;
- 
-       procedure Foreach_In_Config is new Foreach_Switch (Is_In_Config);
-       procedure Foreach_Starts_With is new Foreach_Switch (Starts_With);
- 
-    --  Start of processing for For_Each_Simple_Switch
- 
-    begin
-       --  First determine if the switch corresponds to one belonging to the
-       --  configuration. If so, run callback and exit.
- 
-       --  ??? Is this necessary. On simple tests, we seem to have the same
-       --  results with or without this call.
- 
-       Foreach_In_Config (Config, Section);
- 
-       if Found_In_Config then
-          return;
-       end if;
- 
-       --  If adding a switch that can in fact be expanded through aliases,
-       --  add separately each of its expansions.
- 
-       --  This takes care of expansions like "-T" -> "-gnatwrs", where the
-       --  alias and its expansion do not have the same prefix. Given the order
-       --  in which we do things here, the expansion of the alias will itself
-       --  be checked for a common prefix and split into simple switches.
- 
-       if Unalias
-         and then Config /= null
-         and then Config.Aliases /= null
-       then
-          for A in Config.Aliases'Range loop
-             if Config.Aliases (A).Section.all = Section
-               and then Config.Aliases (A).Alias.all = Switch
-               and then Parameter = ""
-             then
-                For_Each_Simple_Switch
-                  (Config, Section, Config.Aliases (A).Expansion.all, "");
-                return;
-             end if;
-          end loop;
-       end if;
- 
-       --  If adding a switch grouping several switches, add each of the simple
-       --  switches instead.
- 
-       if Config /= null and then Config.Prefixes /= null then
-          for P in Config.Prefixes'Range loop
-             if Switch'Length > Config.Prefixes (P)'Length + 1
-               and then
-                 Looking_At (Switch, Switch'First, Config.Prefixes (P).all)
-             then
-                --  Alias expansion will be done recursively
- 
-                if Config.Switches = null then
-                   for S in Switch'First + Config.Prefixes (P)'Length
-                             .. Switch'Last
-                   loop
-                      For_Each_Simple_Switch
-                        (Config, Section,
-                         Config.Prefixes (P).all & Switch (S), "");
-                   end loop;
- 
-                   return;
- 
-                elsif Group_Analysis
-                  (Config.Prefixes (P).all,
-                   Switch
-                     (Switch'First + Config.Prefixes (P)'Length .. Switch'Last))
-                then
-                   --  Recursive calls already done on each switch of the group:
-                   --  Return without executing Callback.
- 
-                   return;
-                end if;
-             end if;
-          end loop;
-       end if;
- 
-       --  Test if added switch is a known switch with parameter attached
-       --  instead of being specified separately
- 
-       if Parameter = ""
-         and then Config /= null
-         and then Config.Switches /= null
-       then
-          Found_In_Config := False;
-          Foreach_Starts_With (Config, Section);
- 
-          if Found_In_Config then
-             return;
-          end if;
-       end if;
- 
-       --  The switch is invalid in the config, but we still want to report it.
-       --  The config could, for instance, include "*" to specify it accepts
-       --  all switches.
- 
-       Callback (Switch, " ", Parameter, Index => -1);
-    end For_Each_Simple_Switch;
- 
-    ----------------
-    -- Add_Switch --
-    ----------------
- 
-    procedure Add_Switch
-      (Cmd        : in out Command_Line;
-       Switch     : String;
-       Parameter  : String    := "";
-       Separator  : Character := ASCII.NUL;
-       Section    : String    := "";
-       Add_Before : Boolean   := False)
-    is
-       Success : Boolean;
-       pragma Unreferenced (Success);
-    begin
-       Add_Switch (Cmd, Switch, Parameter, Separator,
-                   Section, Add_Before, Success);
-    end Add_Switch;
- 
-    ----------------
-    -- Add_Switch --
-    ----------------
- 
-    procedure Add_Switch
-      (Cmd        : in out Command_Line;
-       Switch     : String;
-       Parameter  : String := "";
-       Separator  : Character := ASCII.NUL;
-       Section    : String := "";
-       Add_Before : Boolean := False;
-       Success    : out Boolean)
-    is
-       procedure Add_Simple_Switch
-         (Simple : String;
-          Sepa   : String;
-          Param  : String;
-          Index  : Integer);
-       --  Add a new switch that has had all its aliases expanded, and switches
-       --  ungrouped. We know there are no more aliases in Switches.
- 
-       -----------------------
-       -- Add_Simple_Switch --
-       -----------------------
- 
-       procedure Add_Simple_Switch
-         (Simple : String;
-          Sepa   : String;
-          Param  : String;
-          Index  : Integer)
-       is
-          Sep : Character;
- 
-       begin
-          if Index = -1
-            and then Cmd.Config /= null
-            and then not Cmd.Config.Star_Switch
-          then
-             raise Invalid_Switch
-               with "Invalid switch " & Simple;
-          end if;
- 
-          if Separator /= ASCII.NUL then
-             Sep := Separator;
- 
-          elsif Sepa = "" then
-             Sep := ASCII.NUL;
-          else
-             Sep := Sepa (Sepa'First);
-          end if;
- 
-          if Cmd.Expanded = null then
-             Cmd.Expanded := new Argument_List'(1 .. 1 => new String'(Simple));
- 
-             if Param /= "" then
-                Cmd.Params :=
-                  new Argument_List'(1 .. 1 => new String'(Sep & Param));
-             else
-                Cmd.Params := new Argument_List'(1 .. 1 => null);
-             end if;
- 
-             if Section = "" then
-                Cmd.Sections := new Argument_List'(1 .. 1 => null);
-             else
-                Cmd.Sections :=
-                  new Argument_List'(1 .. 1 => new String'(Section));
-             end if;
- 
-          else
-             --  Do we already have this switch?
- 
-             for C in Cmd.Expanded'Range loop
-                if Cmd.Expanded (C).all = Simple
-                  and then
-                    ((Cmd.Params (C) = null and then Param = "")
-                      or else
-                        (Cmd.Params (C) /= null
-                          and then Cmd.Params (C).all = Sep & Param))
-                  and then
-                    ((Cmd.Sections (C) = null and then Section = "")
-                      or else
-                        (Cmd.Sections (C) /= null
-                          and then Cmd.Sections (C).all = Section))
-                then
-                   return;
-                end if;
-             end loop;
- 
-             --  Inserting at least one switch
- 
-             Success := True;
-             Add (Cmd.Expanded, new String'(Simple), Add_Before);
- 
-             if Param /= "" then
-                Add
-                  (Cmd.Params,
-                   new String'(Sep & Param),
-                   Add_Before);
-             else
-                Add
-                  (Cmd.Params,
-                   null,
-                   Add_Before);
-             end if;
- 
-             if Section = "" then
-                Add
-                  (Cmd.Sections,
-                   null,
-                   Add_Before);
-             else
-                Add
-                  (Cmd.Sections,
-                   new String'(Section),
-                   Add_Before);
-             end if;
-          end if;
-       end Add_Simple_Switch;
- 
-       procedure Add_Simple_Switches is
-         new For_Each_Simple_Switch (Add_Simple_Switch);
- 
-       --  Local Variables
- 
-       Section_Valid : Boolean := False;
- 
-    --  Start of processing for Add_Switch
- 
-    begin
-       if Section /= "" and then Cmd.Config /= null then
-          for S in Cmd.Config.Sections'Range loop
-             if Section = Cmd.Config.Sections (S).all then
-                Section_Valid := True;
-                exit;
-             end if;
-          end loop;
- 
-          if not Section_Valid then
-             raise Invalid_Section;
-          end if;
-       end if;
- 
-       Success := False;
-       Add_Simple_Switches (Cmd.Config, Section, Switch, Parameter);
-       Free (Cmd.Coalesce);
-    end Add_Switch;
- 
-    ------------
-    -- Remove --
-    ------------
- 
-    procedure Remove (Line : in out Argument_List_Access; Index : Integer) is
-       Tmp : Argument_List_Access := Line;
- 
-    begin
-       Line := new Argument_List (Tmp'First .. Tmp'Last - 1);
- 
-       if Index /= Tmp'First then
-          Line (Tmp'First .. Index - 1) := Tmp (Tmp'First .. Index - 1);
-       end if;
- 
-       Free (Tmp (Index));
- 
-       if Index /= Tmp'Last then
-          Line (Index .. Tmp'Last - 1) := Tmp (Index + 1 .. Tmp'Last);
-       end if;
- 
-       Unchecked_Free (Tmp);
-    end Remove;
- 
-    ---------
-    -- Add --
-    ---------
- 
-    procedure Add
-      (Line   : in out Argument_List_Access;
-       Str    : String_Access;
-       Before : Boolean := False)
-    is
-       Tmp : Argument_List_Access := Line;
- 
-    begin
-       if Tmp /= null then
-          Line := new Argument_List (Tmp'First .. Tmp'Last + 1);
- 
-          if Before then
-             Line (Tmp'First)                     := Str;
-             Line (Tmp'First + 1 .. Tmp'Last + 1) := Tmp.all;
-          else
-             Line (Tmp'Range)    := Tmp.all;
-             Line (Tmp'Last + 1) := Str;
-          end if;
- 
-          Unchecked_Free (Tmp);
- 
-       else
-          Line := new Argument_List'(1 .. 1 => Str);
-       end if;
-    end Add;
- 
-    -------------------
-    -- Remove_Switch --
-    -------------------
- 
-    procedure Remove_Switch
-      (Cmd           : in out Command_Line;
-       Switch        : String;
-       Remove_All    : Boolean := False;
-       Has_Parameter : Boolean := False;
-       Section       : String := "")
-    is
-       Success : Boolean;
-       pragma Unreferenced (Success);
-    begin
-       Remove_Switch (Cmd, Switch, Remove_All, Has_Parameter, Section, Success);
-    end Remove_Switch;
- 
-    -------------------
-    -- Remove_Switch --
-    -------------------
- 
-    procedure Remove_Switch
-      (Cmd           : in out Command_Line;
-       Switch        : String;
-       Remove_All    : Boolean := False;
-       Has_Parameter : Boolean := False;
-       Section       : String  := "";
-       Success       : out Boolean)
-    is
-       procedure Remove_Simple_Switch
-         (Simple, Separator, Param : String; Index : Integer);
-       --  Removes a simple switch, with no aliasing or grouping
- 
-       --------------------------
-       -- Remove_Simple_Switch --
-       --------------------------
- 
-       procedure Remove_Simple_Switch
-         (Simple, Separator, Param : String; Index : Integer)
-       is
-          C : Integer;
-          pragma Unreferenced (Param, Separator, Index);
- 
-       begin
-          if Cmd.Expanded /= null then
-             C := Cmd.Expanded'First;
-             while C <= Cmd.Expanded'Last loop
-                if Cmd.Expanded (C).all = Simple
-                  and then
-                    (Remove_All
-                      or else (Cmd.Sections (C) = null
-                                and then Section = "")
-                      or else (Cmd.Sections (C) /= null
-                                and then Section = Cmd.Sections (C).all))
-                  and then (not Has_Parameter or else Cmd.Params (C) /= null)
-                then
-                   Remove (Cmd.Expanded, C);
-                   Remove (Cmd.Params, C);
-                   Remove (Cmd.Sections, C);
-                   Success := True;
- 
-                   if not Remove_All then
-                      return;
-                   end if;
- 
-                else
-                   C := C + 1;
-                end if;
-             end loop;
-          end if;
-       end Remove_Simple_Switch;
- 
-       procedure Remove_Simple_Switches is
-         new For_Each_Simple_Switch (Remove_Simple_Switch);
- 
-    --  Start of processing for Remove_Switch
- 
-    begin
-       Success := False;
-       Remove_Simple_Switches
-         (Cmd.Config, Section, Switch, "", Unalias => not Has_Parameter);
-       Free (Cmd.Coalesce);
-    end Remove_Switch;
- 
-    -------------------
-    -- Remove_Switch --
-    -------------------
- 
-    procedure Remove_Switch
-      (Cmd       : in out Command_Line;
-       Switch    : String;
-       Parameter : String;
-       Section   : String  := "")
-    is
-       procedure Remove_Simple_Switch
-         (Simple, Separator, Param : String; Index : Integer);
-       --  Removes a simple switch, with no aliasing or grouping
- 
-       --------------------------
-       -- Remove_Simple_Switch --
-       --------------------------
- 
-       procedure Remove_Simple_Switch
-         (Simple, Separator, Param : String; Index : Integer)
-       is
-          pragma Unreferenced (Separator, Index);
-          C : Integer;
- 
-       begin
-          if Cmd.Expanded /= null then
-             C := Cmd.Expanded'First;
-             while C <= Cmd.Expanded'Last loop
-                if Cmd.Expanded (C).all = Simple
-                  and then
-                    ((Cmd.Sections (C) = null
-                       and then Section = "")
-                     or else
-                       (Cmd.Sections (C) /= null
-                         and then Section = Cmd.Sections (C).all))
-                  and then
-                    ((Cmd.Params (C) = null and then Param = "")
-                       or else
-                         (Cmd.Params (C) /= null
- 
-                           --  Ignore the separator stored in Parameter
- 
-                           and then
-                              Cmd.Params (C) (Cmd.Params (C)'First + 1
-                                              .. Cmd.Params (C)'Last) = Param))
-                then
-                   Remove (Cmd.Expanded, C);
-                   Remove (Cmd.Params, C);
-                   Remove (Cmd.Sections, C);
- 
-                   --  The switch is necessarily unique by construction of
-                   --  Add_Switch.
- 
-                   return;
- 
-                else
-                   C := C + 1;
-                end if;
-             end loop;
-          end if;
-       end Remove_Simple_Switch;
- 
-       procedure Remove_Simple_Switches is
-         new For_Each_Simple_Switch (Remove_Simple_Switch);
- 
-    --  Start of processing for Remove_Switch
- 
-    begin
-       Remove_Simple_Switches (Cmd.Config, Section, Switch, Parameter);
-       Free (Cmd.Coalesce);
-    end Remove_Switch;
- 
-    --------------------
-    -- Group_Switches --
-    --------------------
- 
-    procedure Group_Switches
-      (Cmd      : Command_Line;
-       Result   : Argument_List_Access;
-       Sections : Argument_List_Access;
-       Params   : Argument_List_Access)
-    is
-       function Compatible_Parameter (Param : String_Access) return Boolean;
-       --  True when the parameter can be part of a group
- 
-       --------------------------
-       -- Compatible_Parameter --
-       --------------------------
- 
-       function Compatible_Parameter (Param : String_Access) return Boolean is
-       begin
-          --  No parameter OK
- 
-          if Param = null then
-             return True;
- 
-          --  We need parameters without separators
- 
-          elsif Param (Param'First) /= ASCII.NUL then
-             return False;
- 
-          --  Parameters must be all digits
- 
-          else
-             for J in Param'First + 1 .. Param'Last loop
-                if Param (J) not in '0' .. '9' then
-                   return False;
-                end if;
-             end loop;
- 
-             return True;
-          end if;
-       end Compatible_Parameter;
- 
-       --  Local declarations
- 
-       Group : Ada.Strings.Unbounded.Unbounded_String;
-       First : Natural;
-       use type Ada.Strings.Unbounded.Unbounded_String;
- 
-    --  Start of processing for Group_Switches
- 
-    begin
-       if Cmd.Config = null or else Cmd.Config.Prefixes = null then
-          return;
-       end if;
- 
-       for P in Cmd.Config.Prefixes'Range loop
-          Group   := Ada.Strings.Unbounded.Null_Unbounded_String;
-          First   := 0;
- 
-          for C in Result'Range loop
-             if Result (C) /= null
-               and then Compatible_Parameter (Params (C))
-               and then Looking_At
-                          (Result (C).all,
-                           Result (C)'First,
-                           Cmd.Config.Prefixes (P).all)
-             then
-                --  If we are still in the same section, group the switches
- 
-                if First = 0
-                  or else
-                    (Sections (C) = null
-                      and then Sections (First) = null)
-                  or else
-                    (Sections (C) /= null
-                      and then Sections (First) /= null
-                      and then Sections (C).all = Sections (First).all)
-                then
-                   Group :=
-                     Group &
-                       Result (C)
-                         (Result (C)'First + Cmd.Config.Prefixes (P)'Length ..
-                          Result (C)'Last);
- 
-                   if Params (C) /= null then
-                      Group :=
-                        Group &
-                          Params (C) (Params (C)'First + 1 .. Params (C)'Last);
-                      Free (Params (C));
-                   end if;
- 
-                   if First = 0 then
-                      First := C;
-                   end if;
- 
-                   Free (Result (C));
- 
-                --  We changed section: we put the grouped switches to the first
-                --  place, on continue with the new section.
- 
-                else
-                   Result (First) :=
-                     new String'
-                       (Cmd.Config.Prefixes (P).all &
-                        Ada.Strings.Unbounded.To_String (Group));
-                   Group :=
-                     Ada.Strings.Unbounded.To_Unbounded_String
-                       (Result (C)
-                          (Result (C)'First + Cmd.Config.Prefixes (P)'Length ..
-                           Result (C)'Last));
-                   First := C;
-                end if;
-             end if;
-          end loop;
- 
-          if First > 0 then
-             Result (First) :=
-               new String'
-                 (Cmd.Config.Prefixes (P).all &
-                  Ada.Strings.Unbounded.To_String (Group));
-          end if;
-       end loop;
-    end Group_Switches;
- 
-    --------------------
-    -- Alias_Switches --
-    --------------------
- 
-    procedure Alias_Switches
-      (Cmd    : Command_Line;
-       Result : Argument_List_Access;
-       Params : Argument_List_Access)
-    is
-       Found : Boolean;
-       First : Natural;
- 
-       procedure Check_Cb (Switch, Separator, Param : String; Index : Integer);
-       --  Checks whether the command line contains [Switch]. Sets the global
-       --  variable [Found] appropriately. This is called for each simple switch
-       --  that make up an alias, to know whether the alias should be applied.
- 
-       procedure Remove_Cb (Switch, Separator, Param : String; Index : Integer);
-       --  Remove the simple switch [Switch] from the command line, since it is
-       --  part of a simpler alias
- 
-       --------------
-       -- Check_Cb --
-       --------------
- 
-       procedure Check_Cb
-         (Switch, Separator, Param : String; Index : Integer)
-       is
-          pragma Unreferenced (Separator, Index);
- 
-       begin
-          if Found then
-             for E in Result'Range loop
-                if Result (E) /= null
-                  and then
-                    (Params (E) = null
-                      or else Params (E) (Params (E)'First + 1 ..
-                                          Params (E)'Last) = Param)
-                  and then Result (E).all = Switch
-                then
-                   return;
-                end if;
-             end loop;
- 
-             Found := False;
-          end if;
-       end Check_Cb;
- 
-       ---------------
-       -- Remove_Cb --
-       ---------------
- 
-       procedure Remove_Cb (Switch, Separator, Param : String; Index : Integer)
-       is
-          pragma Unreferenced (Separator, Index);
- 
-       begin
-          for E in Result'Range loop
-             if Result (E) /= null
-                  and then
-                    (Params (E) = null
-                      or else Params (E) (Params (E)'First + 1
-                                              .. Params (E)'Last) = Param)
-               and then Result (E).all = Switch
-             then
-                if First > E then
-                   First := E;
-                end if;
- 
-                Free (Result (E));
-                Free (Params (E));
-                return;
-             end if;
-          end loop;
-       end Remove_Cb;
- 
-       procedure Check_All is new For_Each_Simple_Switch (Check_Cb);
-       procedure Remove_All is new For_Each_Simple_Switch (Remove_Cb);
- 
-    --  Start of processing for Alias_Switches
- 
-    begin
-       if Cmd.Config = null or else Cmd.Config.Aliases = null then
-          return;
-       end if;
- 
-       for A in Cmd.Config.Aliases'Range loop
- 
-          --  Compute the various simple switches that make up the alias. We
-          --  split the expansion into as many simple switches as possible, and
-          --  then check whether the expanded command line has all of them.
- 
-          Found := True;
-          Check_All (Cmd.Config,
-                     Switch  => Cmd.Config.Aliases (A).Expansion.all,
-                     Section => Cmd.Config.Aliases (A).Section.all);
- 
-          if Found then
-             First := Integer'Last;
-             Remove_All (Cmd.Config,
-                         Switch  => Cmd.Config.Aliases (A).Expansion.all,
-                         Section => Cmd.Config.Aliases (A).Section.all);
-             Result (First) := new String'(Cmd.Config.Aliases (A).Alias.all);
-          end if;
-       end loop;
-    end Alias_Switches;
- 
-    -------------------
-    -- Sort_Sections --
-    -------------------
- 
-    procedure Sort_Sections
-      (Line     : GNAT.OS_Lib.Argument_List_Access;
-       Sections : GNAT.OS_Lib.Argument_List_Access;
-       Params   : GNAT.OS_Lib.Argument_List_Access)
-    is
-       Sections_List : Argument_List_Access :=
-                         new Argument_List'(1 .. 1 => null);
-       Found         : Boolean;
-       Old_Line      : constant Argument_List := Line.all;
-       Old_Sections  : constant Argument_List := Sections.all;
-       Old_Params    : constant Argument_List := Params.all;
-       Index         : Natural;
- 
-    begin
-       if Line = null then
-          return;
-       end if;
- 
-       --  First construct a list of all sections
- 
-       for E in Line'Range loop
-          if Sections (E) /= null then
-             Found := False;
-             for S in Sections_List'Range loop
-                if (Sections_List (S) = null and then Sections (E) = null)
-                  or else
-                    (Sections_List (S) /= null
-                      and then Sections (E) /= null
-                      and then Sections_List (S).all = Sections (E).all)
-                then
-                   Found := True;
-                   exit;
-                end if;
-             end loop;
- 
-             if not Found then
-                Add (Sections_List, Sections (E));
-             end if;
-          end if;
-       end loop;
- 
-       Index := Line'First;
- 
-       for S in Sections_List'Range loop
-          for E in Old_Line'Range loop
-             if (Sections_List (S) = null and then Old_Sections (E) = null)
-               or else
-                 (Sections_List (S) /= null
-                   and then Old_Sections (E) /= null
-                   and then Sections_List (S).all = Old_Sections (E).all)
-             then
-                Line (Index) := Old_Line (E);
-                Sections (Index) := Old_Sections (E);
-                Params (Index) := Old_Params (E);
-                Index := Index + 1;
-             end if;
-          end loop;
-       end loop;
- 
-       Unchecked_Free (Sections_List);
-    end Sort_Sections;
- 
-    -----------
-    -- Start --
-    -----------
- 
-    procedure Start
-      (Cmd      : in out Command_Line;
-       Iter     : in out Command_Line_Iterator;
-       Expanded : Boolean := False)
-    is
-    begin
-       if Cmd.Expanded = null then
-          Iter.List := null;
-          return;
-       end if;
- 
-       --  Reorder the expanded line so that sections are grouped
- 
-       Sort_Sections (Cmd.Expanded, Cmd.Sections, Cmd.Params);
- 
-       --  Coalesce the switches as much as possible
- 
-       if not Expanded
-         and then Cmd.Coalesce = null
-       then
-          Cmd.Coalesce := new Argument_List (Cmd.Expanded'Range);
-          for E in Cmd.Expanded'Range loop
-             Cmd.Coalesce (E) := new String'(Cmd.Expanded (E).all);
-          end loop;
- 
-          Free (Cmd.Coalesce_Sections);
-          Cmd.Coalesce_Sections := new Argument_List (Cmd.Sections'Range);
-          for E in Cmd.Sections'Range loop
-             Cmd.Coalesce_Sections (E) :=
-               (if Cmd.Sections (E) = null then null
-                else new String'(Cmd.Sections (E).all));
-          end loop;
- 
-          Free (Cmd.Coalesce_Params);
-          Cmd.Coalesce_Params := new Argument_List (Cmd.Params'Range);
-          for E in Cmd.Params'Range loop
-             Cmd.Coalesce_Params (E) :=
-               (if Cmd.Params (E) = null then null
-                else new String'(Cmd.Params (E).all));
-          end loop;
- 
-          --  Not a clone, since we will not modify the parameters anyway
- 
-          Alias_Switches (Cmd, Cmd.Coalesce, Cmd.Coalesce_Params);
-          Group_Switches
-            (Cmd, Cmd.Coalesce, Cmd.Coalesce_Sections, Cmd.Coalesce_Params);
-       end if;
- 
-       if Expanded then
-          Iter.List     := Cmd.Expanded;
-          Iter.Params   := Cmd.Params;
-          Iter.Sections := Cmd.Sections;
-       else
-          Iter.List     := Cmd.Coalesce;
-          Iter.Params   := Cmd.Coalesce_Params;
-          Iter.Sections := Cmd.Coalesce_Sections;
-       end if;
- 
-       if Iter.List = null then
-          Iter.Current := Integer'Last;
-       else
-          Iter.Current := Iter.List'First - 1;
-          Next (Iter);
-       end if;
-    end Start;
- 
-    --------------------
-    -- Current_Switch --
-    --------------------
- 
-    function Current_Switch (Iter : Command_Line_Iterator) return String is
-    begin
-       return Iter.List (Iter.Current).all;
-    end Current_Switch;
- 
-    --------------------
-    -- Is_New_Section --
-    --------------------
- 
-    function Is_New_Section    (Iter : Command_Line_Iterator) return Boolean is
-       Section : constant String := Current_Section (Iter);
- 
-    begin
-       if Iter.Sections = null then
-          return False;
- 
-       elsif Iter.Current = Iter.Sections'First
-         or else Iter.Sections (Iter.Current - 1) = null
-       then
-          return Section /= "";
- 
-       else
-          return Section /= Iter.Sections (Iter.Current - 1).all;
-       end if;
-    end Is_New_Section;
- 
-    ---------------------
-    -- Current_Section --
-    ---------------------
- 
-    function Current_Section (Iter : Command_Line_Iterator) return String is
-    begin
-       if Iter.Sections = null
-         or else Iter.Current > Iter.Sections'Last
-         or else Iter.Sections (Iter.Current) = null
-       then
-          return "";
-       end if;
- 
-       return Iter.Sections (Iter.Current).all;
-    end Current_Section;
- 
-    -----------------------
-    -- Current_Separator --
-    -----------------------
- 
-    function Current_Separator (Iter : Command_Line_Iterator) return String is
-    begin
-       if Iter.Params = null
-         or else Iter.Current > Iter.Params'Last
-         or else Iter.Params (Iter.Current) = null
-       then
-          return "";
- 
-       else
-          declare
-             Sep : constant Character :=
-               Iter.Params (Iter.Current) (Iter.Params (Iter.Current)'First);
-          begin
-             if Sep = ASCII.NUL then
-                return "";
-             else
-                return "" & Sep;
-             end if;
-          end;
-       end if;
-    end Current_Separator;
- 
-    -----------------------
-    -- Current_Parameter --
-    -----------------------
- 
-    function Current_Parameter (Iter : Command_Line_Iterator) return String is
-    begin
-       if Iter.Params = null
-         or else Iter.Current > Iter.Params'Last
-         or else Iter.Params (Iter.Current) = null
-       then
-          return "";
- 
-       else
-          --  Return result, skipping separator
- 
-          declare
-             P : constant String := Iter.Params (Iter.Current).all;
-          begin
-             return P (P'First + 1 .. P'Last);
-          end;
-       end if;
-    end Current_Parameter;
- 
-    --------------
-    -- Has_More --
-    --------------
- 
-    function Has_More (Iter : Command_Line_Iterator) return Boolean is
-    begin
-       return Iter.List /= null and then Iter.Current <= Iter.List'Last;
-    end Has_More;
- 
-    ----------
-    -- Next --
-    ----------
- 
-    procedure Next (Iter : in out Command_Line_Iterator) is
-    begin
-       Iter.Current := Iter.Current + 1;
-       while Iter.Current <= Iter.List'Last
-         and then Iter.List (Iter.Current) = null
-       loop
-          Iter.Current := Iter.Current + 1;
-       end loop;
-    end Next;
- 
-    ----------
-    -- Free --
-    ----------
- 
-    procedure Free (Config : in out Command_Line_Configuration) is
-       procedure Unchecked_Free is new
-         Ada.Unchecked_Deallocation
-           (Switch_Definitions, Switch_Definitions_List);
- 
-       procedure Unchecked_Free is new
-         Ada.Unchecked_Deallocation
-           (Alias_Definitions, Alias_Definitions_List);
- 
-    begin
-       if Config /= null then
-          Free (Config.Prefixes);
-          Free (Config.Sections);
-          Free (Config.Usage);
-          Free (Config.Help);
-          Free (Config.Help_Msg);
- 
-          if Config.Aliases /= null then
-             for A in Config.Aliases'Range loop
-                Free (Config.Aliases (A).Alias);
-                Free (Config.Aliases (A).Expansion);
-                Free (Config.Aliases (A).Section);
-             end loop;
- 
-             Unchecked_Free (Config.Aliases);
-          end if;
- 
-          if Config.Switches /= null then
-             for S in Config.Switches'Range loop
-                Free (Config.Switches (S).Switch);
-                Free (Config.Switches (S).Long_Switch);
-                Free (Config.Switches (S).Help);
-                Free (Config.Switches (S).Section);
-                Free (Config.Switches (S).Argument);
-             end loop;
- 
-             Unchecked_Free (Config.Switches);
-          end if;
- 
-          Unchecked_Free (Config);
-       end if;
-    end Free;
- 
-    ----------
-    -- Free --
-    ----------
- 
-    procedure Free (Cmd : in out Command_Line) is
-    begin
-       Free (Cmd.Expanded);
-       Free (Cmd.Coalesce);
-       Free (Cmd.Coalesce_Sections);
-       Free (Cmd.Coalesce_Params);
-       Free (Cmd.Params);
-       Free (Cmd.Sections);
-    end Free;
- 
-    ---------------
-    -- Set_Usage --
-    ---------------
- 
-    procedure Set_Usage
-      (Config   : in out Command_Line_Configuration;
-       Usage    : String := "[switches] [arguments]";
-       Help     : String := "";
-       Help_Msg : String := "")
-    is
-    begin
-       if Config = null then
-          Config := new Command_Line_Configuration_Record;
-       end if;
- 
-       Free (Config.Usage);
-       Free (Config.Help);
-       Free (Config.Help_Msg);
- 
-       Config.Usage    := new String'(Usage);
-       Config.Help     := new String'(Help);
-       Config.Help_Msg := new String'(Help_Msg);
-    end Set_Usage;
- 
-    ------------------
-    -- Display_Help --
-    ------------------
- 
-    procedure Display_Help (Config : Command_Line_Configuration) is
-       function Switch_Name
-         (Def     : Switch_Definition;
-          Section : String) return String;
-       --  Return the "-short, --long=ARG" string for Def.
-       --  Returns "" if the switch is not in the section.
- 
-       function Param_Name
-         (P    : Switch_Parameter_Type;
-          Name : String := "ARG") return String;
-       --  Return the display for a switch parameter
- 
-       procedure Display_Section_Help (Section : String);
-       --  Display the help for a specific section ("" is the default section)
- 
-       --------------------------
-       -- Display_Section_Help --
-       --------------------------
- 
-       procedure Display_Section_Help (Section : String) is
-          Max_Len : Natural := 0;
- 
-       begin
-          --  ??? Special display for "*"
- 
-          New_Line;
- 
-          if Section /= "" and then Config.Switches /= null then
-             Put_Line ("Switches after " & Section);
-          end if;
- 
-          --  Compute size of the switches column
- 
-          if Config.Switches /= null then
-             for S in Config.Switches'Range loop
-                Max_Len := Natural'Max
-                  (Max_Len, Switch_Name (Config.Switches (S), Section)'Length);
-             end loop;
-          end if;
- 
-          if Config.Aliases /= null then
-             for A in Config.Aliases'Range loop
-                if Config.Aliases (A).Section.all = Section then
-                   Max_Len := Natural'Max
-                     (Max_Len, Config.Aliases (A).Alias'Length);
-                end if;
-             end loop;
-          end if;
- 
-          --  Display the switches
- 
-          if Config.Switches /= null then
-             for S in Config.Switches'Range loop
-                declare
-                   N : constant String :=
-                     Switch_Name (Config.Switches (S), Section);
- 
-                begin
-                   if N /= "" then
-                      Put (" ");
-                      Put (N);
-                      Put ((1 .. Max_Len - N'Length + 1 => ' '));
- 
-                      if Config.Switches (S).Help /= null then
-                         Put (Config.Switches (S).Help.all);
-                      end if;
- 
-                      New_Line;
-                   end if;
-                end;
-             end loop;
-          end if;
- 
-          --  Display the aliases
- 
-          if Config.Aliases /= null then
-             for A in Config.Aliases'Range loop
-                if Config.Aliases (A).Section.all = Section then
-                   Put (" ");
-                   Put (Config.Aliases (A).Alias.all);
-                   Put ((1 .. Max_Len - Config.Aliases (A).Alias'Length + 1
-                        => ' '));
-                   Put ("Equivalent to " & Config.Aliases (A).Expansion.all);
-                   New_Line;
-                end if;
-             end loop;
-          end if;
-       end Display_Section_Help;
- 
-       ----------------
-       -- Param_Name --
-       ----------------
- 
-       function Param_Name
-         (P    : Switch_Parameter_Type;
-          Name : String := "ARG") return String
-       is
-       begin
-          case P is
-             when Parameter_None =>
-                return "";
- 
-             when Parameter_With_Optional_Space =>
-                return " " & To_Upper (Name);
- 
-             when Parameter_With_Space_Or_Equal =>
-                return "=" & To_Upper (Name);
- 
-             when Parameter_No_Space =>
-                return To_Upper (Name);
- 
-             when Parameter_Optional =>
-                return '[' & To_Upper (Name) & ']';
-          end case;
-       end Param_Name;
- 
-       -----------------
-       -- Switch_Name --
-       -----------------
- 
-       function Switch_Name
-         (Def     : Switch_Definition;
-          Section : String) return String
-       is
-          use Ada.Strings.Unbounded;
-          Result       : Unbounded_String;
-          P1, P2       : Switch_Parameter_Type;
-          Last1, Last2 : Integer := 0;
- 
-       begin
-          if (Section = "" and then Def.Section = null)
-            or else (Def.Section /= null and then Def.Section.all = Section)
-          then
-             if Def.Switch /= null and then Def.Switch.all = "*" then
-                return "[any switch]";
-             end if;
- 
-             if Def.Switch /= null then
-                Decompose_Switch (Def.Switch.all, P1, Last1);
-                Append (Result, Def.Switch (Def.Switch'First .. Last1));
- 
-                if Def.Long_Switch /= null then
-                   Decompose_Switch (Def.Long_Switch.all, P2, Last2);
-                   Append (Result, ", "
-                           & Def.Long_Switch (Def.Long_Switch'First .. Last2));
- 
-                   if Def.Argument = null then
-                      Append (Result, Param_Name (P2, "ARG"));
-                   else
-                      Append (Result, Param_Name (P2, Def.Argument.all));
-                   end if;
- 
-                else
-                   if Def.Argument = null then
-                      Append (Result, Param_Name (P1, "ARG"));
-                   else
-                      Append (Result, Param_Name (P1, Def.Argument.all));
-                   end if;
-                end if;
- 
-             --  Def.Switch is null (Long_Switch must be non-null)
- 
-             else
-                Decompose_Switch (Def.Long_Switch.all, P2, Last2);
-                Append (Result,
-                        Def.Long_Switch (Def.Long_Switch'First .. Last2));
- 
-                if Def.Argument = null then
-                   Append (Result, Param_Name (P2, "ARG"));
-                else
-                   Append (Result, Param_Name (P2, Def.Argument.all));
-                end if;
-             end if;
-          end if;
- 
-          return To_String (Result);
-       end Switch_Name;
- 
-    --  Start of processing for Display_Help
- 
-    begin
-       if Config = null then
-          return;
-       end if;
- 
-       if Config.Help /= null and then Config.Help.all /= "" then
-          Put_Line (Config.Help.all);
-       end if;
- 
-       if Config.Usage /= null then
-          Put_Line ("Usage: "
-                    & Base_Name
-                      (Ada.Command_Line.Command_Name) & " " & Config.Usage.all);
-       else
-          Put_Line ("Usage: " & Base_Name (Ada.Command_Line.Command_Name)
-                    & " [switches] [arguments]");
-       end if;
- 
-       if Config.Help_Msg /= null and then Config.Help_Msg.all /= "" then
-          Put_Line (Config.Help_Msg.all);
- 
-       else
-          Display_Section_Help ("");
- 
-          if Config.Sections /= null and then Config.Switches /= null then
-             for S in Config.Sections'Range loop
-                Display_Section_Help (Config.Sections (S).all);
-             end loop;
-          end if;
-       end if;
-    end Display_Help;
- 
-    ------------
-    -- Getopt --
-    ------------
- 
-    procedure Getopt
-      (Config      : Command_Line_Configuration;
-       Callback    : Switch_Handler := null;
-       Parser      : Opt_Parser := Command_Line_Parser;
-       Concatenate : Boolean := True)
-    is
-       Getopt_Switches : String_Access;
-       C               : Character := ASCII.NUL;
- 
-       Empty_Name      : aliased constant String := "";
-       Current_Section : Integer := -1;
-       Section_Name    : not null access constant String := Empty_Name'Access;
- 
-       procedure Simple_Callback
-         (Simple_Switch : String;
-          Separator     : String;
-          Parameter     : String;
-          Index         : Integer);
-       --  Needs comments ???
- 
-       procedure Do_Callback (Switch, Parameter : String; Index : Integer);
- 
-       -----------------
-       -- Do_Callback --
-       -----------------
- 
-       procedure Do_Callback (Switch, Parameter : String; Index : Integer) is
-       begin
-          --  Do automatic handling when possible
- 
-          if Index /= -1 then
-             case Config.Switches (Index).Typ is
-                when Switch_Untyped =>
-                   null;   --  no automatic handling
- 
-                when Switch_Boolean =>
-                   Config.Switches (Index).Boolean_Output.all :=
-                     Config.Switches (Index).Boolean_Value;
-                   return;
- 
-                when Switch_Integer =>
-                   begin
-                      if Parameter = "" then
-                         Config.Switches (Index).Integer_Output.all :=
-                           Config.Switches (Index).Integer_Default;
-                      else
-                         Config.Switches (Index).Integer_Output.all :=
-                           Integer'Value (Parameter);
-                      end if;
- 
-                   exception
-                      when Constraint_Error =>
-                         raise Invalid_Parameter
-                           with "Expected integer parameter for '"
-                             & Switch & "'";
-                   end;
- 
-                   return;
- 
-                when Switch_String =>
-                   Free (Config.Switches (Index).String_Output.all);
-                   Config.Switches (Index).String_Output.all :=
-                     new String'(Parameter);
-                   return;
-             end case;
-          end if;
- 
-          --  Otherwise calls the user callback if one was defined
- 
-          if Callback /= null then
-             Callback (Switch    => Switch,
-                       Parameter => Parameter,
-                       Section   => Section_Name.all);
-          end if;
-       end Do_Callback;
- 
-       procedure For_Each_Simple
-         is new For_Each_Simple_Switch (Simple_Callback);
- 
-       ---------------------
-       -- Simple_Callback --
-       ---------------------
- 
-       procedure Simple_Callback
-         (Simple_Switch : String;
-          Separator     : String;
-          Parameter     : String;
-          Index         : Integer)
-       is
-          pragma Unreferenced (Separator);
-       begin
-          Do_Callback (Switch    => Simple_Switch,
-                       Parameter => Parameter,
-                       Index     => Index);
-       end Simple_Callback;
- 
-    --  Start of processing for Getopt
- 
-    begin
-       --  Initialize sections
- 
-       if Config.Sections = null then
-          Config.Sections := new Argument_List'(1 .. 0 => null);
-       end if;
- 
-       Internal_Initialize_Option_Scan
-         (Parser                   => Parser,
-          Switch_Char              => Parser.Switch_Character,
-          Stop_At_First_Non_Switch => Parser.Stop_At_First,
-          Section_Delimiters       => Section_Delimiters (Config));
- 
-       Getopt_Switches := new String'
-         (Get_Switches (Config, Parser.Switch_Character, Section_Name.all)
-          & " h -help");
- 
-       --  Initialize output values for automatically handled switches
- 
-       if Config.Switches /= null then
-          for S in Config.Switches'Range loop
-             case Config.Switches (S).Typ is
-                when Switch_Untyped =>
-                   null;   --  Nothing to do
- 
-                when Switch_Boolean =>
-                   Config.Switches (S).Boolean_Output.all :=
-                     not Config.Switches (S).Boolean_Value;
- 
-                when Switch_Integer =>
-                   Config.Switches (S).Integer_Output.all :=
-                     Config.Switches (S).Integer_Initial;
- 
-                when Switch_String =>
-                   if Config.Switches (S).String_Output.all = null then
-                      Config.Switches (S).String_Output.all := new String'("");
-                   end if;
-             end case;
-          end loop;
-       end if;
- 
-       --  For all sections, and all switches within those sections
- 
-       loop
-          C := Getopt (Switches    => Getopt_Switches.all,
-                       Concatenate => Concatenate,
-                       Parser      => Parser);
- 
-          if C = '*' then
-             --  Full_Switch already includes the leading '-'
- 
-             Do_Callback (Switch    => Full_Switch (Parser),
-                          Parameter => Parameter (Parser),
-                          Index     => -1);
- 
-          elsif C /= ASCII.NUL then
-             if Full_Switch (Parser) = "h"
-                  or else
-                Full_Switch (Parser) = "-help"
-             then
-                Display_Help (Config);
-                raise Exit_From_Command_Line;
-             end if;
- 
-             --  Do switch expansion if needed
- 
-             For_Each_Simple
-               (Config,
-                Section   => Section_Name.all,
-                Switch    => Parser.Switch_Character & Full_Switch (Parser),
-                Parameter => Parameter (Parser));
- 
-          else
-             if Current_Section = -1 then
-                Current_Section := Config.Sections'First;
-             else
-                Current_Section := Current_Section + 1;
-             end if;
- 
-             exit when Current_Section > Config.Sections'Last;
- 
-             Section_Name := Config.Sections (Current_Section);
-             Goto_Section (Section_Name.all, Parser);
- 
-             Free (Getopt_Switches);
-             Getopt_Switches := new String'
-               (Get_Switches
-                  (Config, Parser.Switch_Character, Section_Name.all));
-          end if;
-       end loop;
- 
-       Free (Getopt_Switches);
- 
-    exception
-       when Invalid_Switch =>
-          Free (Getopt_Switches);
- 
-          --  Message inspired by "ls" on Unix
- 
-          Put_Line (Standard_Error,
-                    Base_Name (Ada.Command_Line.Command_Name)
-                    & ": unrecognized option '"
-                    & Full_Switch (Parser)
-                    & "'");
-          Try_Help;
- 
-          raise;
- 
-       when others =>
-          Free (Getopt_Switches);
-          raise;
-    end Getopt;
- 
-    -----------
-    -- Build --
-    -----------
- 
-    procedure Build
-      (Line        : in out Command_Line;
-       Args        : out GNAT.OS_Lib.Argument_List_Access;
-       Expanded    : Boolean := False;
-       Switch_Char : Character := '-')
-    is
-       Iter  : Command_Line_Iterator;
-       Count : Natural := 0;
- 
-    begin
-       Start (Line, Iter, Expanded => Expanded);
-       while Has_More (Iter) loop
-          if Is_New_Section (Iter) then
-             Count := Count + 1;
-          end if;
- 
-          Count := Count + 1;
-          Next (Iter);
-       end loop;
- 
-       Args := new Argument_List (1 .. Count);
-       Count := Args'First;
- 
-       Start (Line, Iter, Expanded => Expanded);
-       while Has_More (Iter) loop
-          if Is_New_Section (Iter) then
-             Args (Count) := new String'(Switch_Char & Current_Section (Iter));
-             Count := Count + 1;
-          end if;
- 
-          Args (Count) := new String'(Current_Switch (Iter)
-                                      & Current_Separator (Iter)
-                                      & Current_Parameter (Iter));
-          Count := Count + 1;
-          Next (Iter);
-       end loop;
-    end Build;
- 
-    --------------
-    -- Try_Help --
-    --------------
- 
-    --  Note: Any change to the message displayed should also be done in
-    --  gnatbind.adb that does not use this interface.
- 
-    procedure Try_Help is
-    begin
-       Put_Line
-         (Standard_Error,
-          "try """ & Base_Name (Ada.Command_Line.Command_Name)
-          & " --help"" for more information.");
-    end Try_Help;
- 
- end GNAT.Command_Line;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-comlin.ads gcc-8.1.0/gcc/ada/g-comlin.ads
*** gcc-7.3.0/gcc/ada/g-comlin.ads	Wed Jun 22 10:39:31 2016
--- gcc-8.1.0/gcc/ada/g-comlin.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,1201 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                    G N A T . C O M M A N D _ L I N E                     --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 1999-2016, AdaCore                     --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  High level package for command line parsing and manipulation
- 
- ----------------------------------------
- -- Simple Parsing of the Command Line --
- ----------------------------------------
- 
- --  This package provides an interface for parsing command line arguments,
- --  when they are either read from Ada.Command_Line or read from a string list.
- --  As shown in the example below, one should first retrieve the switches
- --  (special command line arguments starting with '-' by default) and their
- --  parameters, and then the rest of the command line arguments.
- --
- --  While it may appear easy to parse the command line arguments with
- --  Ada.Command_Line, there are in fact lots of special cases to handle in some
- --  applications. Those are fully managed by GNAT.Command_Line. Among these are
- --  switches with optional parameters, grouping switches (for instance "-ab"
- --  might mean the same as "-a -b"), various characters to separate a switch
- --  and its parameter (or none: "-a 1" and "-a1" are generally the same, which
- --  can introduce confusion with grouped switches),...
- --
- --  begin
- --     loop
- --        case Getopt ("a b: ad") is  -- Accepts '-a', '-ad', or '-b argument'
- --           when ASCII.NUL => exit;
- 
- --           when 'a' =>
- --                 if Full_Switch = "a" then
- --                    Put_Line ("Got a");
- --                 else
- --                    Put_Line ("Got ad");
- --                 end if;
- 
- --           when 'b' => Put_Line ("Got b + " & Parameter);
- 
- --           when others =>
- --              raise Program_Error; -- cannot occur
- --        end case;
- --     end loop;
- 
- --     loop
- --        declare
- --           S : constant String := Get_Argument (Do_Expansion => True);
- --        begin
- --           exit when S'Length = 0;
- --           Put_Line ("Got " & S);
- --        end;
- --     end loop;
- 
- --  exception
- --     when Invalid_Switch    => Put_Line ("Invalid Switch " & Full_Switch);
- --     when Invalid_Parameter => Put_Line ("No parameter for " & Full_Switch);
- --  end;
- 
- --------------
- -- Sections --
- --------------
- 
- --  A more complicated example would involve the use of sections for the
- --  switches, as for instance in gnatmake. The same command line is used to
- --  provide switches for several tools. Each tool recognizes its switches by
- --  separating them with special switches that act as section separators.
- --  Each section acts as a command line of its own.
- 
- --  begin
- --     Initialize_Option_Scan ('-', False, "largs bargs cargs");
- --     loop
- --        --  Same loop as above to get switches and arguments
- --     end loop;
- 
- --     Goto_Section ("bargs");
- --     loop
- --        --  Same loop as above to get switches and arguments
- --        --  The supported switches in Getopt might be different
- --     end loop;
- 
- --     Goto_Section ("cargs");
- --     loop
- --        --  Same loop as above to get switches and arguments
- --        --  The supported switches in Getopt might be different
- --     end loop;
- --  end;
- 
- -------------------------------
- -- Parsing a List of Strings --
- -------------------------------
- 
- --  The examples above show how to parse the command line when the arguments
- --  are read directly from Ada.Command_Line. However, these arguments can also
- --  be read from a list of strings. This can be useful in several contexts,
- --  either because your system does not support Ada.Command_Line, or because
- --  you are manipulating other tools and creating their command lines by hand,
- --  or for any other reason.
- 
- --  To create the list of strings, it is recommended to use
- --  GNAT.OS_Lib.Argument_String_To_List.
- 
- --  The example below shows how to get the parameters from such a list. Note
- --  also the use of '*' to get all the switches, and not report errors when an
- --  unexpected switch was used by the user
- 
- --  declare
- --     Parser : Opt_Parser;
- --     Args : constant Argument_List_Access :=
- --        GNAT.OS_Lib.Argument_String_To_List ("-g -O1 -Ipath");
- --  begin
- --     Initialize_Option_Scan (Parser, Args);
- --     while Getopt ("* g O! I=", Parser) /= ASCII.NUL loop
- --        Put_Line ("Switch " & Full_Switch (Parser)
- --                  & " param=" & Parameter (Parser));
- --     end loop;
- --     Free (Parser);
- --  end;
- 
- -------------------------------------------
- -- High-Level Command Line Configuration --
- -------------------------------------------
- 
- --  As shown above, the code is still relatively low-level. For instance, there
- --  is no way to indicate which switches are related (thus if "-l" and "--long"
- --  should have the same effect, your code will need to test for both cases).
- --  Likewise, it is difficult to handle more advanced constructs, like:
- 
- --    * Specifying -gnatwa is the same as specifying -gnatwu -gnatwv, but
- --      shorter and more readable
- 
- --    * All switches starting with -gnatw can be grouped, for instance one
- --      can write -gnatwcd instead of -gnatwc -gnatwd.
- --      Of course, this can be combined with the above and -gnatwacd is the
- --      same as -gnatwc -gnatwd -gnatwu -gnatwv
- 
- --    * The switch -T is the same as -gnatwAB (same as -gnatwA -gnatwB)
- 
- --  With the above form of Getopt, you would receive "-gnatwa", "-T" or
- --  "-gnatwcd" in the examples above, and thus you require additional manual
- --  parsing of the switch.
- 
- --  Instead, this package provides the type Command_Line_Configuration, which
- --  stores all the knowledge above. For instance:
- 
- --     Config : Command_Line_Configuration;
- --     Define_Alias  (Config, "-gnatwa", "-gnatwu -gnatwv");
- --     Define_Prefix (Config, "-gnatw");
- --     Define_Alias  (Config, "-T",      "-gnatwAB");
- 
- --  You then need to specify all possible switches in your application by
- --  calling Define_Switch, for instance:
- 
- --     Define_Switch (Config, "-gnatwu", Help => "warn on unused entities");
- --     Define_Switch (Config, "-gnatwv", Help => "warn on unassigned var");
- --     ...
- 
- --  Specifying the help message is optional, but makes it easy to then call
- --  the function:
- 
- --     Display_Help (Config);
- 
- --  that will display a properly formatted help message for your application,
- --  listing all possible switches. That way you have a single place in which
- --  to maintain the list of switches and their meaning, rather than maintaining
- --  both the string to pass to Getopt and a subprogram to display the help.
- --  Both will properly stay synchronized.
- 
- --  Once you have this Config, you just have to call:
- 
- --     Getopt (Config, Callback'Access);
- 
- --  to parse the command line. The Callback will be called for each switch
- --  found on the command line (in the case of our example, that is "-gnatwu"
- --  and then "-gnatwv", not "-gnatwa" itself). This simplifies command line
- --  parsing a lot.
- 
- --  In fact, this can be further automated for the most command case where the
- --  parameter passed to a switch is stored in a variable in the application.
- --  When a switch is defined, you only have to indicate where to store the
- --  value, and let Getopt do the rest. For instance:
- 
- --     Optimization : aliased Integer;
- --     Verbose      : aliased Boolean;
- 
- --     Define_Switch (Config, Verbose'Access,
- --                    "-v", Long_Switch => "--verbose",
- --                    Help => "Output extra verbose information");
- --     Define_Switch (Config, Optimization'Access,
- --                    "-O?", Help => "Optimization level");
- 
- --     Getopt (Config);  --  No callback
- 
- --  Since all switches are handled automatically, we don't even need to pass
- --  a callback to Getopt. Once getopt has been called, the two variables
- --  Optimization and Verbose have been properly initialized, either to the
- --  default value or to the value found on the command line.
- 
- ------------------------------------------------
- -- Creating and Manipulating the Command Line --
- ------------------------------------------------
- 
- --  This package provides mechanisms to create and modify command lines by
- --  adding or removing arguments from them. The resulting command line is kept
- --  as short as possible by coalescing arguments whenever possible.
- 
- --  Complex command lines can thus be constructed, for example from a GUI
- --  (although this package does not by itself depend upon any specific GUI
- --  toolkit).
- 
- --  Using the configuration defined earlier, one can then construct a command
- --  line for the tool with:
- 
- --     Cmd : Command_Line;
- --     Set_Configuration (Cmd, Config);   --  Config created earlier
- --     Add_Switch (Cmd, "-bar");
- --     Add_Switch (Cmd, "-gnatwu");
- --     Add_Switch (Cmd, "-gnatwv");  --  will be grouped with the above
- --     Add_Switch (Cmd, "-T");
- 
- --  The resulting command line can be iterated over to get all its switches,
- --  There are two modes for this iteration: either you want to get the
- --  shortest possible command line, which would be:
- 
- --      -bar -gnatwaAB
- 
- --  or on the other hand you want each individual switch (so that your own
- --  tool does not have to do further complex processing), which would be:
- 
- --      -bar -gnatwu -gnatwv -gnatwA -gnatwB
- 
- --  Of course, we can assume that the tool you want to spawn would understand
- --  both of these, since they are both compatible with the description we gave
- --  above. However, the first result is useful if you want to show the user
- --  what you are spawning (since that keeps the output shorter), and the second
- --  output is more useful for a tool that would check whether -gnatwu was
- --  passed (which isn't obvious in the first output). Likewise, the second
- --  output is more useful if you have a graphical interface since each switch
- --  can be associated with a widget, and you immediately know whether -gnatwu
- --  was selected.
- --
- --  Some command line arguments can have parameters, which on a command line
- --  appear as a separate argument that must immediately follow the switch.
- --  Since the subprograms in this package will reorganize the switches to group
- --  them, you need to indicate what is a command line parameter, and what is a
- --  switch argument.
- 
- --  This is done by passing an extra argument to Add_Switch, as in:
- 
- --     Add_Switch (Cmd, "-foo", Parameter => "arg1");
- 
- --  This ensures that "arg1" will always be treated as the argument to -foo,
- --  and will not be grouped with other parts of the command line.
- 
- with Ada.Command_Line;
- 
- with GNAT.Directory_Operations;
- with GNAT.OS_Lib;
- with GNAT.Regexp;
- with GNAT.Strings;
- 
- package GNAT.Command_Line is
- 
-    -------------
-    -- Parsing --
-    -------------
- 
-    type Opt_Parser is private;
-    Command_Line_Parser : constant Opt_Parser;
-    --  This object is responsible for parsing a list of arguments, which by
-    --  default are the standard command line arguments from Ada.Command_Line.
-    --  This is really a pointer to actual data, which must therefore be
-    --  initialized through a call to Initialize_Option_Scan, and must be freed
-    --  with a call to Free.
-    --
-    --  As a special case, Command_Line_Parser does not need to be either
-    --  initialized or free-ed.
- 
-    procedure Initialize_Option_Scan
-      (Switch_Char              : Character := '-';
-       Stop_At_First_Non_Switch : Boolean := False;
-       Section_Delimiters       : String := "");
-    procedure Initialize_Option_Scan
-      (Parser                   : out Opt_Parser;
-       Command_Line             : GNAT.OS_Lib.Argument_List_Access;
-       Switch_Char              : Character := '-';
-       Stop_At_First_Non_Switch : Boolean := False;
-       Section_Delimiters       : String := "");
-    --  The first procedure resets the internal state of the package to prepare
-    --  to rescan the parameters. It does not need to be called before the
-    --  first use of Getopt (but it could be), but it must be called if you
-    --  want to start rescanning the command line parameters from the start.
-    --  The optional parameter Switch_Char can be used to reset the switch
-    --  character, e.g. to '/' for use in DOS-like systems.
-    --
-    --  The second subprogram initializes a parser that takes its arguments
-    --  from an array of strings rather than directly from the command line. In
-    --  this case, the parser is responsible for freeing the strings stored in
-    --  Command_Line. If you pass null to Command_Line, this will in fact create
-    --  a second parser for Ada.Command_Line, which doesn't share any data with
-    --  the default parser. This parser must be free'ed.
-    --
-    --  The optional parameter Stop_At_First_Non_Switch indicates if Getopt is
-    --  to look for switches on the whole command line, or if it has to stop as
-    --  soon as a non-switch argument is found.
-    --
-    --  Example:
-    --
-    --      Arguments: my_application file1 -c
-    --
-    --      If Stop_At_First_Non_Switch is False, then -c will be considered
-    --      as a switch (returned by getopt), otherwise it will be considered
-    --      as a normal argument (returned by Get_Argument).
-    --
-    --  If Section_Delimiters is set, then every following subprogram
-    --  (Getopt and Get_Argument) will only operate within a section, which
-    --  is delimited by any of these delimiters or the end of the command line.
-    --
-    --  Example:
-    --      Initialize_Option_Scan (Section_Delimiters => "largs bargs cargs");
-    --
-    --      Arguments on command line : my_application -c -bargs -d -e -largs -f
-    --      This line contains three sections, the first one is the default one
-    --      and includes only the '-c' switch, the second one is between -bargs
-    --      and -largs and includes '-d -e' and the last one includes '-f'.
- 
-    procedure Free (Parser : in out Opt_Parser);
-    --  Free the memory used by the parser. Calling this is not mandatory for
-    --  the Command_Line_Parser
- 
-    procedure Goto_Section
-      (Name   : String := "";
-       Parser : Opt_Parser := Command_Line_Parser);
-    --  Change the current section. The next Getopt or Get_Argument will start
-    --  looking at the beginning of the section. An empty name ("") refers to
-    --  the first section between the program name and the first section
-    --  delimiter. If the section does not exist in Section_Delimiters, then
-    --  Invalid_Section is raised. If the section does not appear on the command
-    --  line, then it is treated as an empty section.
- 
-    function Full_Switch
-      (Parser : Opt_Parser := Command_Line_Parser) return String;
-    --  Returns the full name of the last switch found (Getopt only returns the
-    --  first character). Does not include the Switch_Char ('-' by default),
-    --  unless the "*" option of Getopt is used (see below).
- 
-    function Current_Section
-      (Parser : Opt_Parser := Command_Line_Parser) return String;
-    --  Return the name of the current section.
-    --  The list of valid sections is defined through Initialize_Option_Scan
- 
-    function Getopt
-      (Switches    : String;
-       Concatenate : Boolean := True;
-       Parser      : Opt_Parser := Command_Line_Parser) return Character;
-    --  This function moves to the next switch on the command line (defined as
-    --  switch character followed by a character within Switches, casing being
-    --  significant). The result returned is the first character of the switch
-    --  that is located. If there are no more switches in the current section,
-    --  returns ASCII.NUL. If Concatenate is True (the default), the switches do
-    --  not need to be separated by spaces (they can be concatenated if they do
-    --  not require an argument, e.g. -ab is the same as two separate arguments
-    --  -a -b).
-    --
-    --  Switches is a string of all the possible switches, separated by
-    --  spaces. A switch can be followed by one of the following characters:
-    --
-    --   ':'  The switch requires a parameter. There can optionally be a space
-    --        on the command line between the switch and its parameter.
-    --
-    --   '='  The switch requires a parameter. There can either be a '=' or a
-    --        space on the command line between the switch and its parameter.
-    --
-    --   '!'  The switch requires a parameter, but there can be no space on the
-    --        command line between the switch and its parameter.
-    --
-    --   '?'  The switch may have an optional parameter. There can be no space
-    --        between the switch and its argument.
-    --
-    --        e.g. if Switches has the following value : "a? b",
-    --        The command line can be:
-    --
-    --             -afoo    :  -a switch with 'foo' parameter
-    --             -a foo   :  -a switch and another element on the
-    --                           command line 'foo', returned by Get_Argument
-    --
-    --     Example: if Switches is "-a: -aO:", you can have the following
-    --              command lines:
-    --
-    --                -aarg    :  'a' switch with 'arg' parameter
-    --                -a arg   :  'a' switch with 'arg' parameter
-    --                -aOarg   :  'aO' switch with 'arg' parameter
-    --                -aO arg  :  'aO' switch with 'arg' parameter
-    --
-    --    Example:
-    --
-    --       Getopt ("a b: ac ad?")
-    --
-    --         accept either 'a' or 'ac' with no argument,
-    --         accept 'b' with a required argument
-    --         accept 'ad' with an optional argument
-    --
-    --  If the first item in switches is '*', then Getopt will catch
-    --  every element on the command line that was not caught by any other
-    --  switch. The character returned by GetOpt is '*', but Full_Switch
-    --  contains the full command line argument, including leading '-' if there
-    --  is one. If this character was not returned, there would be no way of
-    --  knowing whether it is there or not.
-    --
-    --    Example
-    --       Getopt ("* a b")
-    --       If the command line is '-a -c toto.o -b', Getopt will return
-    --       successively 'a', '*', '*' and 'b', with Full_Switch returning
-    --       "a", "-c", "toto.o", and "b".
-    --
-    --  When Getopt encounters an invalid switch, it raises the exception
-    --  Invalid_Switch and sets Full_Switch to return the invalid switch.
-    --  When Getopt cannot find the parameter associated with a switch, it
-    --  raises Invalid_Parameter, and sets Full_Switch to return the invalid
-    --  switch.
-    --
-    --  Note: in case of ambiguity, e.g. switches a ab abc, then the longest
-    --  matching switch is returned.
-    --
-    --  Arbitrary characters are allowed for switches, although it is
-    --  strongly recommended to use only letters and digits for portability
-    --  reasons.
-    --
-    --  When Concatenate is False, individual switches need to be separated by
-    --  spaces.
-    --
-    --    Example
-    --      Getopt ("a b", Concatenate => False)
-    --      If the command line is '-ab', exception Invalid_Switch will be
-    --      raised and Full_Switch will return "ab".
- 
-    function Get_Argument
-      (Do_Expansion : Boolean := False;
-       Parser       : Opt_Parser := Command_Line_Parser) return String;
-    --  Returns the next element on the command line that is not a switch.  This
-    --  function should not be called before Getopt has returned ASCII.NUL.
-    --
-    --  If Do_Expansion is True, then the parameter on the command line will
-    --  be considered as a filename with wild cards, and will be expanded. The
-    --  matching file names will be returned one at a time. This is useful in
-    --  non-Unix systems for obtaining normal expansion of wild card references.
-    --  When there are no more arguments on the command line, this function
-    --  returns an empty string.
- 
-    function Parameter
-      (Parser : Opt_Parser := Command_Line_Parser) return String;
-    --  Returns parameter associated with the last switch returned by Getopt.
-    --  If no parameter was associated with the last switch, or no previous call
-    --  has been made to Get_Argument, raises Invalid_Parameter. If the last
-    --  switch was associated with an optional argument and this argument was
-    --  not found on the command line, Parameter returns an empty string.
- 
-    function Separator
-      (Parser : Opt_Parser := Command_Line_Parser) return Character;
-    --  The separator that was between the switch and its parameter. This is
-    --  useful if you want to know exactly what was on the command line. This
-    --  is in general a single character, set to ASCII.NUL if the switch and
-    --  the parameter were concatenated. A space is returned if the switch and
-    --  its argument were in two separate arguments.
- 
-    Invalid_Section : exception;
-    --  Raised when an invalid section is selected by Goto_Section
- 
-    Invalid_Switch : exception;
-    --  Raised when an invalid switch is detected in the command line
- 
-    Invalid_Parameter : exception;
-    --  Raised when a parameter is missing, or an attempt is made to obtain a
-    --  parameter for a switch that does not allow a parameter.
- 
-    -----------------------------------------
-    -- Expansion of command line arguments --
-    -----------------------------------------
- 
-    --  These subprograms take care of expanding globbing patterns on the
-    --  command line. On Unix, such expansion is done by the shell before your
-    --  application is called. But on Windows you must do this expansion
-    --  yourself.
- 
-    type Expansion_Iterator is limited private;
-    --  Type used during expansion of file names
- 
-    procedure Start_Expansion
-      (Iterator     : out Expansion_Iterator;
-       Pattern      : String;
-       Directory    : String := "";
-       Basic_Regexp : Boolean := True);
-    --  Initialize a wild card expansion. The next calls to Expansion will
-    --  return the next file name in Directory which match Pattern (Pattern
-    --  is a regular expression, using only the Unix shell and DOS syntax if
-    --  Basic_Regexp is True). When Directory is an empty string, the current
-    --  directory is searched.
-    --
-    --  Pattern may contain directory separators (as in "src/*/*.ada").
-    --  Subdirectories of Directory will also be searched, up to one
-    --  hundred levels deep.
-    --
-    --  When Start_Expansion has been called, function Expansion should
-    --  be called repeatedly until it returns an empty string, before
-    --  Start_Expansion can be called again with the same Expansion_Iterator
-    --  variable.
- 
-    function Expansion (Iterator : Expansion_Iterator) return String;
-    --  Returns the next file in the directory matching the parameters given
-    --  to Start_Expansion and updates Iterator to point to the next entry.
-    --  Returns an empty string when there are no more files.
-    --
-    --  If Expansion is called again after an empty string has been returned,
-    --  then the exception GNAT.Directory_Operations.Directory_Error is raised.
- 
-    -----------------
-    -- Configuring --
-    -----------------
- 
-    --  The following subprograms are used to manipulate a command line
-    --  represented as a string (for instance "-g -O2"), as well as parsing
-    --  the switches from such a string. They provide high-level configurations
-    --  to define aliases (a switch is equivalent to one or more other switches)
-    --  or grouping of switches ("-gnatyac" is equivalent to "-gnatya" and
-    --  "-gnatyc").
- 
-    --  See the top of this file for examples on how to use these subprograms
- 
-    type Command_Line_Configuration is private;
- 
-    procedure Define_Section
-      (Config  : in out Command_Line_Configuration;
-       Section : String);
-    --  Indicates a new switch section. All switches belonging to the same
-    --  section are ordered together, preceded by the section. They are placed
-    --  at the end of the command line (as in "gnatmake somefile.adb -cargs -g")
-    --
-    --  The section name should not include the leading '-'. So for instance in
-    --  the case of gnatmake we would use:
-    --
-    --    Define_Section (Config, "cargs");
-    --    Define_Section (Config, "bargs");
- 
-    procedure Define_Alias
-      (Config   : in out Command_Line_Configuration;
-       Switch   : String;
-       Expanded : String;
-       Section  : String := "");
-    --  Indicates that whenever Switch appears on the command line, it should
-    --  be expanded as Expanded. For instance, for the GNAT compiler switches,
-    --  we would define "-gnatwa" as an alias for "-gnatwcfijkmopruvz", ie some
-    --  default warnings to be activated.
-    --
-    --  This expansion is only done within the specified section, which must
-    --  have been defined first through a call to [Define_Section].
- 
-    procedure Define_Prefix
-      (Config : in out Command_Line_Configuration;
-       Prefix : String);
-    --  Indicates that all switches starting with the given prefix should be
-    --  grouped. For instance, for the GNAT compiler we would define "-gnatw" as
-    --  a prefix, so that "-gnatwu -gnatwv" can be grouped into "-gnatwuv" It is
-    --  assumed that the remainder of the switch ("uv") is a set of characters
-    --  whose order is irrelevant. In fact, this package will sort them
-    --  alphabetically.
-    --
-    --  When grouping switches that accept arguments (for instance "-gnatyL!"
-    --  as the definition, and "-gnatyaL12b" as the command line), only
-    --  numerical arguments are accepted. The above is equivalent to
-    --  "-gnatya -gnatyL12 -gnatyb".
- 
-    procedure Define_Switch
-      (Config      : in out Command_Line_Configuration;
-       Switch      : String := "";
-       Long_Switch : String := "";
-       Help        : String := "";
-       Section     : String := "";
-       Argument    : String := "ARG");
-    --  Indicates a new switch. The format of this switch follows the getopt
-    --  format (trailing ':', '?', etc for defining a switch with parameters).
-    --
-    --  Switch should also start with the leading '-' (or any other characters).
-    --  If this character is not '-', you need to call Initialize_Option_Scan to
-    --  set the proper character for the parser.
-    --
-    --  The switches defined in the command_line_configuration object are used
-    --  when ungrouping switches with more that one character after the prefix.
-    --
-    --  Switch and Long_Switch (when specified) are aliases and can be used
-    --  interchangeably. There is no check that they both take an argument or
-    --  both take no argument. Switch can be set to "*" to indicate that any
-    --  switch is supported (in which case Getopt will return '*', see its
-    --  documentation).
-    --
-    --  Help is used by the Display_Help procedure to describe the supported
-    --  switches.
-    --
-    --  In_Section indicates in which section the switch is valid (you need to
-    --  first define the section through a call to Define_Section).
-    --
-    --  Argument is the name of the argument, as displayed in the automatic
-    --  help message. It is always capitalized for consistency.
- 
-    procedure Define_Switch
-      (Config      : in out Command_Line_Configuration;
-       Output      : access Boolean;
-       Switch      : String := "";
-       Long_Switch : String := "";
-       Help        : String := "";
-       Section     : String := "";
-       Value       : Boolean := True);
-    --  See Define_Switch for a description of the parameters.
-    --  When the switch is found on the command line, Getopt will set
-    --  Output.all to Value.
-    --
-    --  Output is always initially set to "not Value", so that if the switch is
-    --  not found on the command line, Output still has a valid value.
-    --  The switch must not take any parameter.
-    --
-    --  Output must exist at least as long as Config, otherwise an erroneous
-    --  memory access may occur.
- 
-    procedure Define_Switch
-      (Config      : in out Command_Line_Configuration;
-       Output      : access Integer;
-       Switch      : String := "";
-       Long_Switch : String := "";
-       Help        : String := "";
-       Section     : String := "";
-       Initial     : Integer := 0;
-       Default     : Integer := 1;
-       Argument    : String := "ARG");
-    --  See Define_Switch for a description of the parameters. When the
-    --  switch is found on the command line, Getopt will set Output.all to the
-    --  value of the switch's parameter. If the parameter is not an integer,
-    --  Invalid_Parameter is raised.
- 
-    --  Output is always initialized to Initial. If the switch has an optional
-    --  argument which isn't specified by the user, then Output will be set to
-    --  Default. The switch must accept an argument.
- 
-    procedure Define_Switch
-      (Config      : in out Command_Line_Configuration;
-       Output      : access GNAT.Strings.String_Access;
-       Switch      : String := "";
-       Long_Switch : String := "";
-       Help        : String := "";
-       Section     : String := "";
-       Argument    : String := "ARG");
-    --  Set Output to the value of the switch's parameter when the switch is
-    --  found on the command line. Output is always initialized to the empty
-    --  string if it does not have a value already (otherwise it is left as is
-    --  so that you can specify the default value directly in the declaration
-    --  of the variable). The switch must accept an argument.
- 
-    procedure Set_Usage
-      (Config   : in out Command_Line_Configuration;
-       Usage    : String := "[switches] [arguments]";
-       Help     : String := "";
-       Help_Msg : String := "");
-    --  Defines the general format of the call to the application, and a short
-    --  help text. These are both displayed by Display_Help. When a non-empty
-    --  Help_Msg is given, it is used by Display_Help instead of the
-    --  automatically generated list of supported switches.
- 
-    procedure Display_Help (Config : Command_Line_Configuration);
-    --  Display the help for the tool (ie its usage, and its supported switches)
- 
-    function Get_Switches
-      (Config      : Command_Line_Configuration;
-       Switch_Char : Character := '-';
-       Section     : String := "") return String;
-    --  Get the switches list as expected by Getopt, for a specific section of
-    --  the command line. This list is built using all switches defined
-    --  previously via Define_Switch above.
- 
-    function Section_Delimiters
-      (Config : Command_Line_Configuration) return String;
-    --  Return a string suitable for use in Initialize_Option_Scan
- 
-    procedure Free (Config : in out Command_Line_Configuration);
-    --  Free the memory used by Config
- 
-    type Switch_Handler is access procedure
-      (Switch    : String;
-       Parameter : String;
-       Section   : String);
-    --  Called when a switch is found on the command line. Switch includes
-    --  any leading '-' that was specified in Define_Switch. This is slightly
-    --  different from the functional version of Getopt above, for which
-    --  Full_Switch omits the first leading '-'.
- 
-    Exit_From_Command_Line : exception;
-    --  Emitted when the program should exit. This is called when Getopt below
-    --  has seen -h, --help or an invalid switch.
- 
-    procedure Getopt
-      (Config      : Command_Line_Configuration;
-       Callback    : Switch_Handler := null;
-       Parser      : Opt_Parser := Command_Line_Parser;
-       Concatenate : Boolean := True);
-    --  Similar to the standard Getopt function. For each switch found on the
-    --  command line, this calls Callback, if the switch is not handled
-    --  automatically.
-    --
-    --  The list of valid switches are the ones from the configuration. The
-    --  switches that were declared through Define_Switch with an Output
-    --  parameter are never returned (and result in a modification of the Output
-    --  variable). This function will in fact never call [Callback] if all
-    --  switches were handled automatically and there is nothing left to do.
-    --
-    --  The option Concatenate is identical to the one of the standard Getopt
-    --  function.
-    --
-    --  This procedure automatically adds -h and --help to the valid switches,
-    --  to display the help message and raises Exit_From_Command_Line.
-    --  If an invalid switch is specified on the command line, this procedure
-    --  will display an error message and raises Invalid_Switch again.
-    --
-    --  This function automatically expands switches:
-    --
-    --    If Define_Prefix was called (for instance "-gnaty") and the user
-    --    specifies "-gnatycb" on the command line, then Getopt returns
-    --    "-gnatyc" and "-gnatyb" separately.
-    --
-    --    If Define_Alias was called (for instance "-gnatya = -gnatycb") then
-    --    the latter is returned (in this case it also expands -gnaty as per
-    --    the above.
-    --
-    --  The goal is to make handling as easy as possible by leaving as much
-    --  work as possible to this package.
-    --
-    --  As opposed to the standard Getopt, this one will analyze all sections
-    --  as defined by Define_Section, and automatically jump from one section to
-    --  the next.
- 
-    ------------------------------
-    -- Generating command lines --
-    ------------------------------
- 
-    --  Once the command line configuration has been created, you can build your
-    --  own command line. This will be done in general because you need to spawn
-    --  external tools from your application.
- 
-    --  Although it could be done by concatenating strings, the following
-    --  subprograms will properly take care of grouping switches when possible,
-    --  so as to keep the command line as short as possible. They also provide a
-    --  way to remove a switch from an existing command line.
- 
-    --  For instance:
- 
-    --      declare
-    --         Config : Command_Line_Configuration;
-    --         Line : Command_Line;
-    --         Args : Argument_List_Access;
- 
-    --      begin
-    --         Define_Switch (Config, "-gnatyc");
-    --         Define_Switch (Config, ...);  --  for all valid switches
-    --         Define_Prefix (Config, "-gnaty");
- 
-    --         Set_Configuration (Line, Config);
-    --         Add_Switch (Line, "-O2");
-    --         Add_Switch (Line, "-gnatyc");
-    --         Add_Switch (Line, "-gnatyd");
-    --
-    --         Build (Line, Args);
-    --         --   Args is now  ["-O2", "-gnatycd"]
-    --      end;
- 
-    type Command_Line is private;
- 
-    procedure Set_Configuration
-      (Cmd    : in out Command_Line;
-       Config : Command_Line_Configuration);
-    function Get_Configuration
-      (Cmd : Command_Line) return Command_Line_Configuration;
-    --  Set or retrieve the configuration used for that command line. The Config
-    --  must have been initialized first, by calling one of the Define_Switches
-    --  subprograms.
- 
-    procedure Set_Command_Line
-      (Cmd                : in out Command_Line;
-       Switches           : String;
-       Getopt_Description : String    := "";
-       Switch_Char        : Character := '-');
-    --  Set the new content of the command line, by replacing the current
-    --  version with Switches.
-    --
-    --  The parsing of Switches is done through calls to Getopt, by passing
-    --  Getopt_Description as an argument. (A "*" is automatically prepended so
-    --  that all switches and command line arguments are accepted). If a config
-    --  was defined via Set_Configuration, the Getopt_Description parameter will
-    --  be ignored.
-    --
-    --  To properly handle switches that take parameters, you should document
-    --  them in Getopt_Description. Otherwise, the switch and its parameter will
-    --  be recorded as two separate command line arguments as returned by a
-    --  Command_Line_Iterator (which might be fine depending on your
-    --  application).
-    --
-    --  If the command line has sections (such as -bargs -cargs), then they
-    --  should be listed in the Sections parameter (as "-bargs -cargs").
-    --
-    --  This function can be used to reset Cmd by passing an empty string
-    --
-    --  If an invalid switch is found on the command line (ie wasn't defined in
-    --  the configuration via Define_Switch), and the configuration wasn't set
-    --  to accept all switches (by defining "*" as a valid switch), then an
-    --  exception Invalid_Switch is raised. The exception message indicates the
-    --  invalid switch.
- 
-    procedure Add_Switch
-      (Cmd        : in out Command_Line;
-       Switch     : String;
-       Parameter  : String    := "";
-       Separator  : Character := ASCII.NUL;
-       Section    : String    := "";
-       Add_Before : Boolean   := False);
-    --  Add a new switch to the command line, and combine/group it with existing
-    --  switches if possible. Nothing is done if the switch already exists with
-    --  the same parameter.
-    --
-    --  If the Switch takes a parameter, the latter should be specified
-    --  separately, so that the association between the two is always correctly
-    --  recognized even if the order of switches on the command line changes.
-    --  For instance, you should pass "--check=full" as ("--check", "full") so
-    --  that Remove_Switch below can simply take "--check" in parameter. That
-    --  will automatically remove "full" as well. The value of the parameter is
-    --  never modified by this package.
-    --
-    --  On the other hand, you could decide to simply pass "--check=full" as
-    --  the Switch above, and then pass no parameter. This means that you need
-    --  to pass "--check=full" to Remove_Switch as well.
-    --
-    --  A Switch with a parameter will never be grouped with another switch to
-    --  avoid ambiguities as to what the parameter applies to.
-    --
-    --  If the switch is part of a section, then it should be specified so that
-    --  the switch is correctly placed in the command line, and the section
-    --  added if not already present. For example, to add the -g switch into the
-    --  -cargs section, you need to call (Cmd, "-g", Section => "-cargs").
-    --
-    --  [Separator], if specified, overrides the separator that was defined
-    --  through Define_Switch. For instance, if the switch was defined as
-    --  "-from:", the separator defaults to a space. But if your application
-    --  uses unusual separators not supported by GNAT.Command_Line (for instance
-    --  it requires ":"), you can specify this separator here.
-    --
-    --  For instance,
-    --     Add_Switch(Cmd, "-from", "bar", ':')
-    --
-    --  results in
-    --     -from:bar
-    --
-    --  rather than the default
-    --     -from bar
-    --
-    --  Note however that Getopt doesn't know how to handle ":" as a separator.
-    --  So the recommendation is to declare the switch as "-from!" (ie no
-    --  space between the switch and its parameter). Then Getopt will return
-    --  ":bar" as the parameter, and you can trim the ":" in your application.
-    --
-    --  Invalid_Section is raised if Section was not defined in the
-    --  configuration of the command line.
-    --
-    --  Add_Before allows insertion of the switch at the beginning of the
-    --  command line.
- 
-    procedure Add_Switch
-      (Cmd        : in out Command_Line;
-       Switch     : String;
-       Parameter  : String    := "";
-       Separator  : Character := ASCII.NUL;
-       Section    : String    := "";
-       Add_Before : Boolean   := False;
-       Success    : out Boolean);
-    --  Same as above, returning the status of the operation
- 
-    procedure Remove_Switch
-      (Cmd           : in out Command_Line;
-       Switch        : String;
-       Remove_All    : Boolean := False;
-       Has_Parameter : Boolean := False;
-       Section       : String := "");
-    --  Remove Switch from the command line, and ungroup existing switches if
-    --  necessary.
-    --
-    --  The actual parameter to the switches are ignored. If for instance
-    --  you are removing "-foo", then "-foo param1" and "-foo param2" can
-    --  be removed.
-    --
-    --  If Remove_All is True, then all matching switches are removed, otherwise
-    --  only the first matching one is removed.
-    --
-    --  If Has_Parameter is set to True, then only switches having a parameter
-    --  are removed.
-    --
-    --  If the switch belongs to a section, then this section should be
-    --  specified: Remove_Switch (Cmd_Line, "-g", Section => "-cargs") called
-    --  on the command line "-g -cargs -g" will result in "-g", while if
-    --  called with (Cmd_Line, "-g") this will result in "-cargs -g".
-    --  If Remove_All is set, then both "-g" will be removed.
- 
-    procedure Remove_Switch
-      (Cmd           : in out Command_Line;
-       Switch        : String;
-       Remove_All    : Boolean := False;
-       Has_Parameter : Boolean := False;
-       Section       : String  := "";
-       Success       : out Boolean);
-    --  Same as above, reporting the success of the operation (Success is False
-    --  if no switch was removed).
- 
-    procedure Remove_Switch
-      (Cmd       : in out Command_Line;
-       Switch    : String;
-       Parameter : String;
-       Section   : String := "");
-    --  Remove a switch with a specific parameter. If Parameter is the empty
-    --  string, then only a switch with no parameter will be removed.
- 
-    procedure Free (Cmd : in out Command_Line);
-    --  Free the memory used by Cmd
- 
-    ---------------
-    -- Iteration --
-    ---------------
- 
-    --  When a command line was created with the above, you can then iterate
-    --  over its contents using the following iterator.
- 
-    type Command_Line_Iterator is private;
- 
-    procedure Start
-      (Cmd      : in out Command_Line;
-       Iter     : in out Command_Line_Iterator;
-       Expanded : Boolean := False);
-    --  Start iterating over the command line arguments. If Expanded is true,
-    --  then the arguments are not grouped and no alias is used. For instance,
-    --  "-gnatwv" and "-gnatwu" would be returned instead of "-gnatwuv".
-    --
-    --  The iterator becomes invalid if the command line is changed through a
-    --  call to Add_Switch, Remove_Switch or Set_Command_Line.
- 
-    function Current_Switch    (Iter : Command_Line_Iterator) return String;
-    function Is_New_Section    (Iter : Command_Line_Iterator) return Boolean;
-    function Current_Section   (Iter : Command_Line_Iterator) return String;
-    function Current_Separator (Iter : Command_Line_Iterator) return String;
-    function Current_Parameter (Iter : Command_Line_Iterator) return String;
-    --  Return the current switch and its parameter (or the empty string if
-    --  there is no parameter or the switch was added through Add_Switch
-    --  without specifying the parameter.
-    --
-    --  Separator is the string that goes between the switch and its separator.
-    --  It could be the empty string if they should be concatenated, or a space
-    --  for instance. When printing, you should not add any other character.
- 
-    function Has_More (Iter : Command_Line_Iterator) return Boolean;
-    --  Return True if there are more switches to be returned
- 
-    procedure Next (Iter : in out Command_Line_Iterator);
-    --  Move to the next switch
- 
-    procedure Build
-      (Line        : in out Command_Line;
-       Args        : out GNAT.OS_Lib.Argument_List_Access;
-       Expanded    : Boolean := False;
-       Switch_Char : Character := '-');
-    --  This is a wrapper using the Command_Line_Iterator. It provides a simple
-    --  way to get all switches (grouped as much as possible), and possibly
-    --  create an Opt_Parser.
-    --
-    --  Args must be freed by the caller.
-    --
-    --  Expanded has the same meaning as in Start.
- 
-    procedure Try_Help;
-    --  Output a message on standard error to indicate how to get the usage for
-    --  the executable. This procedure should only be called when the executable
-    --  accepts switch --help. When this procedure is called by executable xxx,
-    --  the following message is displayed on standard error:
-    --      try "xxx --help" for more information.
- 
- private
- 
-    Max_Depth : constant := 100;
-    --  Maximum depth of subdirectories
- 
-    Max_Path_Length : constant := 1024;
-    --  Maximum length of relative path
- 
-    type Depth is range 1 .. Max_Depth;
- 
-    type Level is record
-       Name_Last : Natural := 0;
-       Dir       : GNAT.Directory_Operations.Dir_Type;
-    end record;
- 
-    type Level_Array is array (Depth) of Level;
- 
-    type Section_Number is new Natural range 0 .. 65534;
-    for Section_Number'Size use 16;
- 
-    type Parameter_Type is record
-       Arg_Num : Positive;
-       First   : Positive;
-       Last    : Natural;
-       Extra   : Character;
-    end record;
- 
-    type Is_Switch_Type is array (Natural range <>) of Boolean;
-    pragma Pack (Is_Switch_Type);
- 
-    type Section_Type is array (Natural range <>) of Section_Number;
-    pragma Pack (Section_Type);
- 
-    type Expansion_Iterator is limited record
-       Start : Positive := 1;
-       --  Position of the first character of the relative path to check against
-       --  the pattern.
- 
-       Dir_Name : String (1 .. Max_Path_Length);
- 
-       Current_Depth : Depth := 1;
- 
-       Levels : Level_Array;
- 
-       Regexp : GNAT.Regexp.Regexp;
-       --  Regular expression built with the pattern
- 
-       Maximum_Depth : Depth := 1;
-       --  The maximum depth of directories, reflecting the number of directory
-       --  separators in the pattern.
-    end record;
- 
-    type Opt_Parser_Data (Arg_Count : Natural) is record
-       Arguments : GNAT.OS_Lib.Argument_List_Access;
-       --  null if reading from the command line
- 
-       The_Parameter : Parameter_Type;
-       The_Separator : Character;
-       The_Switch    : Parameter_Type;
-       --  This type and this variable are provided to store the current switch
-       --  and parameter.
- 
-       Is_Switch : Is_Switch_Type (1 .. Arg_Count) := (others => False);
-       --  Indicates wich arguments on the command line are considered not be
-       --  switches or parameters to switches (leaving e.g. filenames,...)
- 
-       Section : Section_Type (1 .. Arg_Count) := (others => 1);
-       --  Contains the number of the section associated with the current
-       --  switch. If this number is 0, then it is a section delimiter, which is
-       --  never returned by GetOpt.
- 
-       Current_Argument : Natural := 1;
-       --  Number of the current argument parsed on the command line
- 
-       Current_Index : Natural := 1;
-       --  Index in the current argument of the character to be processed
- 
-       Current_Section : Section_Number := 1;
- 
-       Expansion_It : aliased Expansion_Iterator;
-       --  When Get_Argument is expanding a file name, this is the iterator used
- 
-       In_Expansion : Boolean := False;
-       --  True if we are expanding a file
- 
-       Switch_Character : Character := '-';
-       --  The character at the beginning of the command line arguments,
-       --  indicating the beginning of a switch.
- 
-       Stop_At_First : Boolean := False;
-       --  If it is True then Getopt stops at the first non-switch argument
-    end record;
- 
-    Command_Line_Parser_Data : aliased Opt_Parser_Data
-                                         (Ada.Command_Line.Argument_Count);
-    --  The internal data used when parsing the command line
- 
-    type Opt_Parser is access all Opt_Parser_Data;
-    Command_Line_Parser : constant Opt_Parser :=
-                            Command_Line_Parser_Data'Access;
- 
-    type Switch_Type is (Switch_Untyped,
-                         Switch_Boolean,
-                         Switch_Integer,
-                         Switch_String);
- 
-    type Switch_Definition (Typ : Switch_Type := Switch_Untyped) is record
-       Switch      : GNAT.OS_Lib.String_Access;
-       Long_Switch : GNAT.OS_Lib.String_Access;
-       Section     : GNAT.OS_Lib.String_Access;
-       Help        : GNAT.OS_Lib.String_Access;
- 
-       Argument    : GNAT.OS_Lib.String_Access;
-       --  null if "ARG".
-       --  Name of the argument for this switch.
- 
-       case Typ is
-          when Switch_Untyped =>
-             null;
-          when Switch_Boolean =>
-             Boolean_Output : access Boolean;
-             Boolean_Value  : Boolean;  --  will set Output to that value
-          when Switch_Integer =>
-             Integer_Output  : access Integer;
-             Integer_Initial : Integer;
-             Integer_Default : Integer;
-          when Switch_String =>
-             String_Output   : access GNAT.Strings.String_Access;
-       end case;
-    end record;
-    type Switch_Definitions is array (Natural range <>) of Switch_Definition;
-    type Switch_Definitions_List is access all Switch_Definitions;
-    --  [Switch] includes the leading '-'
- 
-    type Alias_Definition is record
-       Alias     : GNAT.OS_Lib.String_Access;
-       Expansion : GNAT.OS_Lib.String_Access;
-       Section   : GNAT.OS_Lib.String_Access;
-    end record;
-    type Alias_Definitions is array (Natural range <>) of Alias_Definition;
-    type Alias_Definitions_List is access all Alias_Definitions;
- 
-    type Command_Line_Configuration_Record is record
-       Prefixes : GNAT.OS_Lib.Argument_List_Access;
-       --  The list of prefixes
- 
-       Sections : GNAT.OS_Lib.Argument_List_Access;
-       --  The list of sections
- 
-       Star_Switch : Boolean := False;
-       --  Whether switches not described in this configuration should be
-       --  returned to the user (True). If False, an exception Invalid_Switch
-       --  is raised.
- 
-       Aliases  : Alias_Definitions_List;
-       Usage    : GNAT.OS_Lib.String_Access;
-       Help     : GNAT.OS_Lib.String_Access;
-       Help_Msg : GNAT.OS_Lib.String_Access;
-       Switches : Switch_Definitions_List;
-       --  List of expected switches (Used when expanding switch groups)
-    end record;
-    type Command_Line_Configuration is access Command_Line_Configuration_Record;
- 
-    type Command_Line is record
-       Config   : Command_Line_Configuration;
-       Expanded : GNAT.OS_Lib.Argument_List_Access;
- 
-       Params : GNAT.OS_Lib.Argument_List_Access;
-       --  Parameter for the corresponding switch in Expanded. The first
-       --  character is the separator (or ASCII.NUL if there is no separator).
- 
-       Sections : GNAT.OS_Lib.Argument_List_Access;
-       --  The list of sections
- 
-       Coalesce          : GNAT.OS_Lib.Argument_List_Access;
-       Coalesce_Params   : GNAT.OS_Lib.Argument_List_Access;
-       Coalesce_Sections : GNAT.OS_Lib.Argument_List_Access;
-       --  Cached version of the command line. This is recomputed every time
-       --  the command line changes. Switches are grouped as much as possible,
-       --  and aliases are used to reduce the length of the command line. The
-       --  parameters are not allocated, they point into Params, so they must
-       --  not be freed.
-    end record;
- 
-    type Command_Line_Iterator is record
-       List     : GNAT.OS_Lib.Argument_List_Access;
-       Sections : GNAT.OS_Lib.Argument_List_Access;
-       Params   : GNAT.OS_Lib.Argument_List_Access;
-       Current  : Natural;
-    end record;
- 
- end GNAT.Command_Line;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-comver.adb gcc-8.1.0/gcc/ada/g-comver.adb
*** gcc-7.3.0/gcc/ada/g-comver.adb	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-comver.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,72 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                G N A T . C O M P I L E R _ V E R S I O N                 --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 2002-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 a routine for obtaining the version number of the
- --  GNAT compiler used to compile the program. It relies on the generated
- --  constant in the binder generated package that records this information.
- 
- package body GNAT.Compiler_Version is
- 
-    Ver_Len_Max : constant := 256;
-    --  This is logically a reference to Gnatvsn.Ver_Len_Max but we cannot
-    --  import this directly since run-time units cannot WITH compiler units.
- 
-    Ver_Prefix : constant String := "GNAT Version: ";
-    --  This is logically a reference to Gnatvsn.Ver_Prefix but we cannot
-    --  import this directly since run-time units cannot WITH compiler units.
- 
-    GNAT_Version : constant String (1 .. Ver_Len_Max + Ver_Prefix'Length);
-    pragma Import (C, GNAT_Version, "__gnat_version");
- 
-    -------------
-    -- Version --
-    -------------
- 
-    function Version return String is
-    begin
-       --  Search for terminating right paren or NUL ending the string
- 
-       for J in Ver_Prefix'Length + 1 .. GNAT_Version'Last loop
-          if GNAT_Version (J) = ')' then
-             return GNAT_Version (Ver_Prefix'Length + 1 .. J);
-          end if;
- 
-          if GNAT_Version (J) = Character'Val (0) then
-             return GNAT_Version (Ver_Prefix'Length + 1 .. J - 1);
-          end if;
-       end loop;
- 
-       --  This should not happen (no right paren or NUL found)
- 
-       return GNAT_Version;
-    end Version;
- 
- end GNAT.Compiler_Version;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-comver.ads gcc-8.1.0/gcc/ada/g-comver.ads
*** gcc-7.3.0/gcc/ada/g-comver.ads	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-comver.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,61 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                G N A T . C O M P I L E R _ V E R S I O N                 --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 2002-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 a routine for obtaining the version number of the
- --  GNAT compiler used to compile the program. It relies on the generated
- --  constant in the binder generated package that records this information.
- 
- --  Note: to use this package you must first instantiate it, for example:
- 
- --    package CVer is new GNAT.Compiler_Version;
- 
- --  and then you use the function in the instantiated package (Cver.Version).
- --  The reason that this unit is generic is that otherwise the direct attempt
- --  to import the necessary variable from the binder file causes trouble when
- --  building a shared library, since the symbol is not available.
- 
- --  Note: this unit is only useable if the main program is written in Ada.
- --  It cannot be used if the main program is written in foreign language.
- 
- generic
- package GNAT.Compiler_Version is
-    pragma Pure;
- 
-    function Version return String;
-    --  This function returns the version in the form "v.vvx (yyyyddmm)".
-    --  Here v.vv is the main version number (e.g. 3.16), x is the version
-    --  designator (e.g. a1 in 3.16a1), and yyyyddmm is the date in ISO form.
-    --  An example of the returned value would be "3.16w (20021029)". The
-    --  version is actually that of the binder used to bind the program,
-    --  which will be the same as the compiler version if a consistent
-    --  set of tools is used to build the program.
- 
- end GNAT.Compiler_Version;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-cppexc.adb gcc-8.1.0/gcc/ada/g-cppexc.adb
*** gcc-7.3.0/gcc/ada/g-cppexc.adb	Thu Oct 17 13:47:37 2013
--- gcc-8.1.0/gcc/ada/g-cppexc.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,139 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                  G N A T . C P P _ E X C E P T I O N S                   --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                        Copyright (C) 2013, AdaCore                       --
- --                                                                          --
- -- GNAT is 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 System;
- with System.Storage_Elements;
- with Interfaces.C; use Interfaces.C;
- with Ada.Unchecked_Conversion;
- with System.Standard_Library; use System.Standard_Library;
- 
- package body GNAT.CPP_Exceptions is
- 
-    --  Note: all functions prefixed by __cxa are part of the c++ ABI for
-    --  exception handling. As they are provided by the c++ library, there
-    --  must be no dependencies on it in the compiled code of this unit, but
-    --  there can be dependencies in instances. This is required to be able
-    --  to build the shared library without the c++ library.
- 
-    function To_Exception_Data_Ptr is new
-      Ada.Unchecked_Conversion
-        (Exception_Id, Exception_Data_Ptr);
-    --  Convert an Exception_Id to its non-private type. This is used to get
-    --  the RTTI of a C++ exception
- 
-    function Get_Exception_Machine_Occurrence
-      (X : Exception_Occurrence) return System.Address;
-    pragma Import (Ada, Get_Exception_Machine_Occurrence,
-                     "__gnat_get_exception_machine_occurrence");
-    --  Imported function (from Ada.Exceptions) that returns the machine
-    --  occurrence from an exception occurrence.
- 
-    -------------------------
-    -- Raise_Cpp_Exception --
-    -------------------------
- 
-    procedure Raise_Cpp_Exception (Id : Exception_Id; Value : T)
-    is
-       Id_Data : constant Exception_Data_Ptr := To_Exception_Data_Ptr (Id);
-       --  Get a non-private view on the exception
- 
-       type T_Acc is access all T;
-       pragma Convention (C, T_Acc);
-       --  Access type to the object compatible with C
- 
-       Occ : T_Acc;
-       --  The occurrence to propagate
- 
-       function cxa_allocate_exception (Size : size_t) return T_Acc;
-       pragma Import (C, cxa_allocate_exception, "__cxa_allocate_exception");
-       --  The C++ function to allocate an occurrence
- 
-       procedure cxa_throw (Obj : T_Acc; Tinfo : System.Address;
-                                         Dest :  System.Address);
-       pragma Import (C, cxa_throw, "__cxa_throw");
-       pragma No_Return (cxa_throw);
-       --  The C++ function to raise an exception
-    begin
-       --  Check the exception was imported from C++
- 
-       if Id_Data.Lang /= 'C' then
-          raise Constraint_Error;
-       end if;
- 
-       --  Allocate the C++ occurrence
- 
-       Occ := cxa_allocate_exception (T'Size / System.Storage_Unit);
- 
-       --  Set the object
- 
-       Occ.all := Value;
- 
-       --  Throw the exception
- 
-       cxa_throw (Occ, Id_Data.Foreign_Data, System.Null_Address);
-    end Raise_Cpp_Exception;
- 
-    ----------------
-    -- Get_Object --
-    ----------------
- 
-    function Get_Object (X : Exception_Occurrence) return T
-    is
-       use System;
-       use System.Storage_Elements;
- 
-       Unwind_Exception_Size : Natural;
-       pragma Import (C, Unwind_Exception_Size, "__gnat_unwind_exception_size");
-       --  Size in bytes of _Unwind_Exception
- 
-       Exception_Addr : constant Address :=
-         Get_Exception_Machine_Occurrence (X);
-       --  Machine occurrence of X
- 
-    begin
-       --  Check the machine occurrence exists
- 
-       if Exception_Addr = Null_Address then
-          raise Constraint_Error;
-       end if;
- 
-       declare
-          --  Import the object from the occurrence
-          Result : T;
-          pragma Import (Ada, Result);
-          for Result'Address use
-             Exception_Addr + Storage_Offset (Unwind_Exception_Size);
-       begin
-          --  And return it
-          return Result;
-       end;
-    end Get_Object;
- end GNAT.CPP_Exceptions;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-cppexc.ads gcc-8.1.0/gcc/ada/g-cppexc.ads
*** gcc-7.3.0/gcc/ada/g-cppexc.ads	Thu Oct 17 13:47:37 2013
--- gcc-8.1.0/gcc/ada/g-cppexc.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,48 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                  G N A T . C P P _ E X C E P T I O N S                   --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                        Copyright (C) 2013, AdaCore                       --
- --                                                                          --
- -- GNAT is 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 an interface for raising and handling C++ exceptions
- 
- with Ada.Exceptions; use Ada.Exceptions;
- 
- package GNAT.CPP_Exceptions is
-    generic
-       type T is private;
-    procedure Raise_Cpp_Exception (Id : Exception_Id; Value : T);
-    --  Raise a C++ exception identified by Id. Associate Value with this
-    --  occurrence. Id must refer to an exception that has the Cpp convention.
- 
-    generic
-       type T is private;
-    function Get_Object (X : Exception_Occurrence) return T;
-    --  Extract the object associated with X. The exception of the occurrence
-    --  X must have a Cpp Convention.
- end GNAT.CPP_Exceptions;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-crc32.adb gcc-8.1.0/gcc/ada/g-crc32.adb
*** gcc-7.3.0/gcc/ada/g-crc32.adb	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-crc32.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,85 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                           G N A T . C R C 3 2                            --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 2001-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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.Unchecked_Conversion;
- 
- package body GNAT.CRC32 is
- 
-    ------------
-    -- Update --
-    ------------
- 
-    procedure Update (C : in out CRC32; Value : String) is
-    begin
-       for K in Value'Range loop
-          Update (C, Value (K));
-       end loop;
-    end Update;
- 
-    procedure Update (C : in out CRC32; Value : Ada.Streams.Stream_Element) is
-       function To_Char is new Ada.Unchecked_Conversion
-         (Ada.Streams.Stream_Element, Character);
-       V : constant Character := To_Char (Value);
-    begin
-       Update (C, V);
-    end Update;
- 
-    procedure Update
-      (C     : in out CRC32;
-       Value : Ada.Streams.Stream_Element_Array)
-    is
-    begin
-       for K in Value'Range loop
-          Update (C, Value (K));
-       end loop;
-    end Update;
- 
-    -----------------
-    -- Wide_Update --
-    -----------------
- 
-    procedure Wide_Update (C : in out CRC32; Value : Wide_Character) is
-       subtype S2 is String (1 .. 2);
-       function To_S2 is new Ada.Unchecked_Conversion (Wide_Character, S2);
-       VS : constant S2 := To_S2 (Value);
-    begin
-       Update (C, VS (1));
-       Update (C, VS (2));
-    end Wide_Update;
- 
-    procedure Wide_Update (C : in out CRC32; Value : Wide_String) is
-    begin
-       for K in Value'Range loop
-          Wide_Update (C, Value (K));
-       end loop;
-    end Wide_Update;
- 
- end GNAT.CRC32;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-crc32.ads gcc-8.1.0/gcc/ada/g-crc32.ads
*** gcc-7.3.0/gcc/ada/g-crc32.ads	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-crc32.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,111 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                           G N A T . C R C 3 2                            --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 2004-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 routines for computing a commonly used checksum
- --  called CRC-32. This is a checksum based on treating the binary data
- --  as a polynomial over a binary field, and the exact specifications of
- --  the CRC-32 algorithm are as follows:
- 
- --     Name   : "CRC-32"
- --     Width  : 32
- --     Poly   : 04C11DB7
- --     Init   : FFFFFFFF
- --     RefIn  : True
- --     RefOut : True
- --     XorOut : FFFFFFFF
- --     Check  : CBF43926
- 
- --  Note that this is the algorithm used by PKZip, Ethernet and FDDI
- 
- --  For more information about this algorithm see:
- 
- --    ftp://ftp.rocksoft.com/papers/crc_v3.txt
- 
- --  "A Painless Guide to CRC Error Detection Algorithms", Ross N. Williams
- 
- --  "Computation of Cyclic Redundancy Checks via Table Look-Up", Communications
- --  of the ACM, Vol. 31 No. 8, pp.1008-1013 Aug. 1988. Sarwate, D.V.
- 
- with Ada.Streams;
- with Interfaces;
- with System.CRC32;
- 
- package GNAT.CRC32 is
- 
-    subtype CRC32 is System.CRC32.CRC32;
-    --  Used to represent CRC32 values, which are 32 bit bit-strings
- 
-    procedure Initialize (C : out CRC32)
-      renames System.CRC32.Initialize;
-    --  Initialize CRC value by assigning the standard Init value (16#FFFF_FFFF)
- 
-    procedure Update
-      (C     : in out CRC32;
-       Value : Character)
-      renames System.CRC32.Update;
-    --  Evolve CRC by including the contribution from Character'Pos (Value)
- 
-    procedure Update
-      (C     : in out CRC32;
-       Value : String);
-    --  For each character in the Value string call above routine
- 
-    procedure Wide_Update
-      (C     : in out CRC32;
-       Value : Wide_Character);
-    --  Evolve CRC by including the contribution from Wide_Character'Pos (Value)
-    --  with the bytes being included in the natural memory order.
- 
-    procedure Wide_Update
-      (C     : in out CRC32;
-       Value : Wide_String);
-    --  For each character in the Value string call above routine
- 
-    procedure Update
-      (C     : in out CRC32;
-       Value : Ada.Streams.Stream_Element);
-    --  Evolve CRC by including the contribution from Value
- 
-    procedure Update
-      (C     : in out CRC32;
-       Value : Ada.Streams.Stream_Element_Array);
-    --  For each element in the Value array call above routine
- 
-    function Get_Value (C : CRC32) return Interfaces.Unsigned_32
-      renames System.CRC32.Get_Value;
-    --  Get_Value computes the CRC32 value by performing an XOR with the
-    --  standard XorOut value (16#FFFF_FFFF). Note that this does not
-    --  change the value of C, so it may be used to retrieve intermediate
-    --  values of the CRC32 value during a sequence of Update calls.
- 
-    pragma Inline (Update);
-    pragma Inline (Wide_Update);
- end GNAT.CRC32;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-ctrl_c.adb gcc-8.1.0/gcc/ada/g-ctrl_c.adb
*** gcc-7.3.0/gcc/ada/g-ctrl_c.adb	Wed Nov 18 10:03:44 2015
--- gcc-8.1.0/gcc/ada/g-ctrl_c.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,63 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                          G N A T . C T R L _ C                           --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                      Copyright (C) 2002-2015, AdaCore                    --
- --                                                                          --
- -- GNAT is 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 GNAT.Ctrl_C is
- 
-    type C_Handler_Type is access procedure;
-    pragma Convention (C, C_Handler_Type);
- 
-    Ada_Handler : Handler_Type;
- 
-    procedure C_Handler;
-    pragma Convention (C, C_Handler);
- 
-    ---------------
-    -- C_Handler --
-    ---------------
- 
-    procedure C_Handler is
-    begin
-       Ada_Handler.all;
-    end C_Handler;
- 
-    ---------------------
-    -- Install_Handler --
-    ---------------------
- 
-    procedure Install_Handler (Handler : Handler_Type) is
-       procedure Internal (Handler : C_Handler_Type);
-       pragma Import (C, Internal, "__gnat_install_int_handler");
-    begin
-       Ada_Handler := Handler;
-       Internal (C_Handler'Access);
-    end Install_Handler;
- 
- end GNAT.Ctrl_C;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-ctrl_c.ads gcc-8.1.0/gcc/ada/g-ctrl_c.ads
*** gcc-7.3.0/gcc/ada/g-ctrl_c.ads	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-ctrl_c.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,59 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                          G N A T . C T R L _ C                           --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                      Copyright (C) 2002-2010, AdaCore                    --
- --                                                                          --
- -- GNAT is 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 may be used to intercept the interruption of a running
- --  program by the operator typing Control-C, without having to use an Ada
- --  interrupt handler protected object.
- 
- --  This package is currently implemented under Windows and Unix platforms
- 
- --  Note concerning Unix systems:
- 
- --  The behavior of this package when using tasking depends on the interaction
- --  between sigaction() and the thread library.
- 
- package GNAT.Ctrl_C is
- 
-    type Handler_Type is access procedure;
-    --  Any parameterless library level procedure can be used as a handler.
-    --  Handler_Type should not propagate exceptions.
- 
-    procedure Install_Handler (Handler : Handler_Type);
-    --  Set up Handler to be called if the operator hits Ctrl-C, instead of the
-    --  standard Control-C handler.
- 
-    procedure Uninstall_Handler;
-    --  Reinstall the standard Control-C handler.
-    --  If Install_Handler has never been called, this procedure has no effect.
- 
- private
-    pragma Import (C, Uninstall_Handler, "__gnat_uninstall_int_handler");
- end GNAT.Ctrl_C;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-curexc.ads gcc-8.1.0/gcc/ada/g-curexc.ads
*** gcc-7.3.0/gcc/ada/g-curexc.ads	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-curexc.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,112 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --               G N A T . C U R R E N T _ E X C E P T I O N                --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                      Copyright (C) 1996-2010, AdaCore                    --
- --                                                                          --
- -- GNAT is 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 routines for obtaining the current exception
- --  information in Ada 83 style. In Ada 83, there was no official method
- --  for obtaining exception information, but a number of vendors supplied
- --  routines for this purpose, and this package closely approximates the
- --  interfaces supplied by DEC Ada 83 and VADS Ada.
- 
- --  The routines in this package are associated with a particular exception
- --  handler, and can only be called from within an exception handler. See
- --  also the package GNAT.Most_Recent_Exception, which provides access to
- --  the most recently raised exception, and is not limited to static calls
- --  from an exception handler.
- 
- package GNAT.Current_Exception is
-    pragma Pure;
- 
-    -----------------
-    -- Subprograms --
-    -----------------
- 
-    --  Note: the lower bound of returned String values is always one
- 
-    function Exception_Information return String;
-    --  Returns the result of calling Ada.Exceptions.Exception_Information
-    --  with an argument that is the Exception_Occurrence corresponding to
-    --  the current exception. Returns the null string if called from outside
-    --  an exception handler.
- 
-    function Exception_Message return String;
-    --  Returns the result of calling Ada.Exceptions.Exception_Message with
-    --  an argument that is the Exception_Occurrence corresponding to the
-    --  current exception. Returns the null string if called from outside an
-    --  exception handler.
- 
-    function Exception_Name return String;
-    --  Returns the result of calling Ada.Exceptions.Exception_Name with
-    --  an argument that is the Exception_Occurrence corresponding to the
-    --  current exception. Returns the null string if called from outside
-    --  an exception handler.
- 
-    --  Note: all these functions return useful information only if
-    --  called statically from within an exception handler, and they
-    --  return information about the exception corresponding to the
-    --  handler in which they appear. This is NOT the same as the most
-    --  recently raised exception. Consider the example:
- 
-    --     exception
-    --        when Constraint_Error =>
-    --          begin
-    --             ...
-    --          exception
-    --             when Tasking_Error => ...
-    --          end;
-    --
-    --          -- Exception_xxx at this point returns the information about
-    --          -- the constraint error, not about any exception raised within
-    --          -- the nested block since it is the static nesting that counts.
- 
-    -----------------------------------
-    -- Use of Library Level Renaming --
-    -----------------------------------
- 
-    --  For greater compatibility with existing legacy software, library
-    --  level renaming may be used to create a function with a name matching
-    --  one that is in use. For example, some versions of VADS Ada provided
-    --  a function called Current_Exception whose semantics was identical to
-    --  that of GNAT. The following library level renaming declaration:
- 
-    --    with GNAT.Current_Exception;
-    --    function Current_Exception
-    --      renames GNAT.Current_Exception.Exception_Name;
- 
-    --  placed in a file called current_exception.ads and compiled into the
-    --  application compilation environment, will make the function available
-    --  in a manner exactly compatible with that in VADS Ada 83.
- 
- private
-    pragma Import (Intrinsic, Exception_Information);
-    pragma Import (intrinsic, Exception_Message);
-    pragma Import (Intrinsic, Exception_Name);
- 
- end GNAT.Current_Exception;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-debpoo.adb gcc-8.1.0/gcc/ada/g-debpoo.adb
*** gcc-7.3.0/gcc/ada/g-debpoo.adb	Mon Jan 23 11:27:01 2017
--- gcc-8.1.0/gcc/ada/g-debpoo.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,2366 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                       G N A T . D E B U G _ P O O L S                    --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 GNAT.IO; use GNAT.IO;
- 
- with System.CRTL;
- with System.Memory;     use System.Memory;
- with System.Soft_Links; use System.Soft_Links;
- 
- with System.Traceback_Entries;
- 
- with GNAT.Debug_Utilities; use GNAT.Debug_Utilities;
- with GNAT.HTable;
- with GNAT.Traceback; use GNAT.Traceback;
- 
- with Ada.Unchecked_Conversion;
- 
- package body GNAT.Debug_Pools is
- 
-    Storage_Alignment : constant := Standard'Maximum_Alignment;
-    --  Alignment enforced for all the memory chunks returned by Allocate,
-    --  maximized to make sure that it will be compatible with all types.
-    --
-    --  The addresses returned by the underlying low-level allocator (be it
-    --  'new' or a straight 'malloc') aren't guaranteed to be that much aligned
-    --  on some targets, so we manage the needed alignment padding ourselves
-    --  systematically. Use of a common value for every allocation allows
-    --  significant simplifications in the code, nevertheless, for improved
-    --  robustness and efficiency overall.
- 
-    --  We combine a few internal devices to offer the pool services:
-    --
-    --  * A management header attached to each allocated memory block, located
-    --    right ahead of it, like so:
-    --
-    --        Storage Address returned by the pool,
-    --        aligned on Storage_Alignment
-    --                       v
-    --      +------+--------+---------------------
-    --      | ~~~~ | HEADER | USER DATA ... |
-    --      +------+--------+---------------------
-    --       <---->
-    --       alignment
-    --       padding
-    --
-    --    The alignment padding is required
-    --
-    --  * A validity bitmap, which holds a validity bit for blocks managed by
-    --    the pool. Enforcing Storage_Alignment on those blocks allows efficient
-    --    validity management.
-    --
-    --  * A list of currently used blocks.
- 
-    Max_Ignored_Levels : constant Natural := 10;
-    --  Maximum number of levels that will be ignored in backtraces. This is so
-    --  that we still have enough significant levels in the tracebacks returned
-    --  to the user.
-    --
-    --  The value 10 is chosen as being greater than the maximum callgraph
-    --  in this package. Its actual value is not really relevant, as long as it
-    --  is high enough to make sure we still have enough frames to return to
-    --  the user after we have hidden the frames internal to this package.
- 
-    Disable : Boolean := False;
-    --  This variable is used to avoid infinite loops, where this package would
-    --  itself allocate memory and then call itself recursively, forever. Useful
-    --  when System_Memory_Debug_Pool_Enabled is True.
- 
-    System_Memory_Debug_Pool_Enabled : Boolean := False;
-    --  If True, System.Memory allocation uses Debug_Pool
- 
-    Allow_Unhandled_Memory : Boolean := False;
-    --  If True, protects Deallocate against releasing memory allocated before
-    --  System_Memory_Debug_Pool_Enabled was set.
- 
-    Traceback_Count : Byte_Count := 0;
-    --  Total number of traceback elements
- 
-    ---------------------------
-    -- Back Trace Hash Table --
-    ---------------------------
- 
-    --  This package needs to store one set of tracebacks for each allocation
-    --  point (when was it allocated or deallocated). This would use too much
-    --  memory,  so the tracebacks are actually stored in a hash table, and
-    --  we reference elements in this hash table instead.
- 
-    --  This hash-table will remain empty if the discriminant Stack_Trace_Depth
-    --  for the pools is set to 0.
- 
-    --  This table is a global table, that can be shared among all debug pools
-    --  with no problems.
- 
-    type Header is range 1 .. 1023;
-    --  Number of elements in the hash-table
- 
-    type Tracebacks_Array_Access is access Tracebacks_Array;
- 
-    type Traceback_Kind is (Alloc, Dealloc, Indirect_Alloc, Indirect_Dealloc);
- 
-    type Traceback_Htable_Elem;
-    type Traceback_Htable_Elem_Ptr
-       is access Traceback_Htable_Elem;
- 
-    type Traceback_Htable_Elem is record
-       Traceback   : Tracebacks_Array_Access;
-       Kind        : Traceback_Kind;
-       Count       : Natural;
-       --  Size of the memory allocated/freed at Traceback since last Reset call
- 
-       Total       : Byte_Count;
-       --  Number of chunk of memory allocated/freed at Traceback since last
-       --  Reset call.
- 
-       Frees       : Natural;
-       --  Number of chunk of memory allocated at Traceback, currently freed
-       --  since last Reset call. (only for Alloc & Indirect_Alloc elements)
- 
-       Total_Frees : Byte_Count;
-       --  Size of the memory allocated at Traceback, currently freed since last
-       --  Reset call. (only for Alloc & Indirect_Alloc elements)
- 
-       Next        : Traceback_Htable_Elem_Ptr;
-    end record;
- 
-    --  Subprograms used for the Backtrace_Htable instantiation
- 
-    procedure Set_Next
-      (E    : Traceback_Htable_Elem_Ptr;
-       Next : Traceback_Htable_Elem_Ptr);
-    pragma Inline (Set_Next);
- 
-    function Next
-      (E : Traceback_Htable_Elem_Ptr) return Traceback_Htable_Elem_Ptr;
-    pragma Inline (Next);
- 
-    function Get_Key
-      (E : Traceback_Htable_Elem_Ptr) return Tracebacks_Array_Access;
-    pragma Inline (Get_Key);
- 
-    function Hash (T : Tracebacks_Array_Access) return Header;
-    pragma Inline (Hash);
- 
-    function Equal (K1, K2 : Tracebacks_Array_Access) return Boolean;
-    --  Why is this not inlined???
- 
-    --  The hash table for back traces
- 
-    package Backtrace_Htable is new GNAT.HTable.Static_HTable
-      (Header_Num => Header,
-       Element    => Traceback_Htable_Elem,
-       Elmt_Ptr   => Traceback_Htable_Elem_Ptr,
-       Null_Ptr   => null,
-       Set_Next   => Set_Next,
-       Next       => Next,
-       Key        => Tracebacks_Array_Access,
-       Get_Key    => Get_Key,
-       Hash       => Hash,
-       Equal      => Equal);
- 
-    -----------------------
-    -- Allocations table --
-    -----------------------
- 
-    type Allocation_Header;
-    type Allocation_Header_Access is access Allocation_Header;
- 
-    type Traceback_Ptr_Or_Address is new System.Address;
-    --  A type that acts as a C union, and is either a System.Address or a
-    --  Traceback_Htable_Elem_Ptr.
- 
-    --  The following record stores extra information that needs to be
-    --  memorized for each block allocated with the special debug pool.
- 
-    type Allocation_Header is record
-       Allocation_Address : System.Address;
-       --  Address of the block returned by malloc, possibly unaligned
- 
-       Block_Size : Storage_Offset;
-       --  Needed only for advanced freeing algorithms (traverse all allocated
-       --  blocks for potential references). This value is negated when the
-       --  chunk of memory has been logically freed by the application. This
-       --  chunk has not been physically released yet.
- 
-       Alloc_Traceback : Traceback_Htable_Elem_Ptr;
-       --  ??? comment required
- 
-       Dealloc_Traceback : Traceback_Ptr_Or_Address;
-       --  Pointer to the traceback for the allocation (if the memory chunk is
-       --  still valid), or to the first deallocation otherwise. Make sure this
-       --  is a thin pointer to save space.
-       --
-       --  Dealloc_Traceback is also for blocks that are still allocated to
-       --  point to the previous block in the list. This saves space in this
-       --  header, and make manipulation of the lists of allocated pointers
-       --  faster.
- 
-       Next : System.Address;
-       --  Point to the next block of the same type (either allocated or
-       --  logically freed) in memory. This points to the beginning of the user
-       --  data, and does not include the header of that block.
-    end record;
- 
-    function Header_Of
-      (Address : System.Address) return Allocation_Header_Access;
-    pragma Inline (Header_Of);
-    --  Return the header corresponding to a previously allocated address
- 
-    function To_Address is new Ada.Unchecked_Conversion
-      (Traceback_Ptr_Or_Address, System.Address);
- 
-    function To_Address is new Ada.Unchecked_Conversion
-      (System.Address, Traceback_Ptr_Or_Address);
- 
-    function To_Traceback is new Ada.Unchecked_Conversion
-      (Traceback_Ptr_Or_Address, Traceback_Htable_Elem_Ptr);
- 
-    function To_Traceback is new Ada.Unchecked_Conversion
-      (Traceback_Htable_Elem_Ptr, Traceback_Ptr_Or_Address);
- 
-    Header_Offset : constant Storage_Count :=
-      (Allocation_Header'Object_Size / System.Storage_Unit);
-    --  Offset, in bytes, from start of allocation Header to start of User
-    --  data.  The start of user data is assumed to be aligned at least as much
-    --  as what the header type requires, so applying this offset yields a
-    --  suitably aligned address as well.
- 
-    Extra_Allocation : constant Storage_Count :=
-      (Storage_Alignment - 1 + Header_Offset);
-    --  Amount we need to secure in addition to the user data for a given
-    --  allocation request: room for the allocation header plus worst-case
-    --  alignment padding.
- 
-    -----------------------
-    -- Local subprograms --
-    -----------------------
- 
-    function Align (Addr : Integer_Address) return Integer_Address;
-    pragma Inline (Align);
-    --  Return the next address aligned on Storage_Alignment from Addr.
- 
-    function Find_Or_Create_Traceback
-      (Pool                : Debug_Pool;
-       Kind                : Traceback_Kind;
-       Size                : Storage_Count;
-       Ignored_Frame_Start : System.Address;
-       Ignored_Frame_End   : System.Address) return Traceback_Htable_Elem_Ptr;
-    --  Return an element matching the current traceback (omitting the frames
-    --  that are in the current package). If this traceback already existed in
-    --  the htable, a pointer to this is returned to spare memory. Null is
-    --  returned if the pool is set not to store tracebacks. If the traceback
-    --  already existed in the table, the count is incremented so that
-    --  Dump_Tracebacks returns useful results. All addresses up to, and
-    --  including, an address between Ignored_Frame_Start .. Ignored_Frame_End
-    --  are ignored.
- 
-    function Output_File (Pool : Debug_Pool) return File_Type;
-    pragma Inline (Output_File);
-    --  Returns file_type on which error messages have to be generated for Pool
- 
-    procedure Put_Line
-      (File                : File_Type;
-       Depth               : Natural;
-       Traceback           : Tracebacks_Array_Access;
-       Ignored_Frame_Start : System.Address := System.Null_Address;
-       Ignored_Frame_End   : System.Address := System.Null_Address);
-    --  Print Traceback to File. If Traceback is null, print the call_chain
-    --  at the current location, up to Depth levels, ignoring all addresses
-    --  up to the first one in the range:
-    --    Ignored_Frame_Start .. Ignored_Frame_End
- 
-    procedure Stdout_Put (S : String);
-    --  Wrapper for Put that ensures we always write to stdout instead of the
-    --  current output file defined in GNAT.IO.
- 
-    procedure Stdout_Put_Line (S : String);
-    --  Wrapper for Put_Line that ensures we always write to stdout instead of
-    --  the current output file defined in GNAT.IO.
- 
-    procedure Print_Traceback
-      (Output_File : File_Type;
-       Prefix      : String;
-       Traceback   : Traceback_Htable_Elem_Ptr);
-    --  Output Prefix & Traceback & EOL. Print nothing if Traceback is null.
- 
-    procedure Print_Address (File : File_Type; Addr : Address);
-    --  Output System.Address without using secondary stack.
-    --  When System.Memory uses Debug_Pool, secondary stack cannot be used
-    --  during Allocate calls, as some Allocate calls are done to
-    --  register/initialize a secondary stack for a foreign thread.
-    --  During these calls, the secondary stack is not available yet.
- 
-    package Validity is
-       function Is_Handled (Storage : System.Address) return Boolean;
-       pragma Inline (Is_Handled);
-       --  Return True if Storage is the address of a block that the debug pool
-       --  already had under its control. Used to allow System.Memory to use
-       --  Debug_Pools
- 
-       function Is_Valid (Storage : System.Address) return Boolean;
-       pragma Inline (Is_Valid);
-       --  Return True if Storage is the address of a block that the debug pool
-       --  has under its control, in which case Header_Of may be used to access
-       --  the associated allocation header.
- 
-       procedure Set_Valid (Storage : System.Address; Value : Boolean);
-       pragma Inline (Set_Valid);
-       --  Mark the address Storage as being under control of the memory pool
-       --  (if Value is True), or not (if Value is False).
- 
-       Validity_Count : Byte_Count := 0;
-       --  Total number of validity elements
- 
-    end Validity;
- 
-    use Validity;
- 
-    procedure Set_Dead_Beef
-      (Storage_Address          : System.Address;
-       Size_In_Storage_Elements : Storage_Count);
-    --  Set the contents of the memory block pointed to by Storage_Address to
-    --  the 16#DEADBEEF# pattern. If Size_In_Storage_Elements is not a multiple
-    --  of the length of this pattern, the last instance may be partial.
- 
-    procedure Free_Physically (Pool : in out Debug_Pool);
-    --  Start to physically release some memory to the system, until the amount
-    --  of logically (but not physically) freed memory is lower than the
-    --  expected amount in Pool.
- 
-    procedure Allocate_End;
-    procedure Deallocate_End;
-    procedure Dereference_End;
-    --  These procedures are used as markers when computing the stacktraces,
-    --  so that addresses in the debug pool itself are not reported to the user.
- 
-    Code_Address_For_Allocate_End    : System.Address;
-    Code_Address_For_Deallocate_End  : System.Address;
-    Code_Address_For_Dereference_End : System.Address;
-    --  Taking the address of the above procedures will not work on some
-    --  architectures (HPUX for instance). Thus we do the same thing that
-    --  is done in a-except.adb, and get the address of labels instead.
- 
-    procedure Skip_Levels
-      (Depth               : Natural;
-       Trace               : Tracebacks_Array;
-       Start               : out Natural;
-       Len                 : in out Natural;
-       Ignored_Frame_Start : System.Address;
-       Ignored_Frame_End   : System.Address);
-    --  Set Start .. Len to the range of values from Trace that should be output
-    --  to the user. This range of values excludes any address prior to the
-    --  first one in Ignored_Frame_Start .. Ignored_Frame_End (basically
-    --  addresses internal to this package). Depth is the number of levels that
-    --  the user is interested in.
- 
-    package STBE renames System.Traceback_Entries;
- 
-    function PC_For (TB_Entry : STBE.Traceback_Entry) return System.Address
-      renames STBE.PC_For;
- 
-    -----------
-    -- Align --
-    -----------
- 
-    function Align (Addr : Integer_Address) return Integer_Address is
-       Factor : constant Integer_Address := Storage_Alignment;
-    begin
-       return ((Addr + Factor - 1) / Factor) * Factor;
-    end Align;
- 
-    ---------------
-    -- Header_Of --
-    ---------------
- 
-    function Header_Of (Address : System.Address)
-       return Allocation_Header_Access
-    is
-       function Convert is new Ada.Unchecked_Conversion
-         (System.Address, Allocation_Header_Access);
-    begin
-       return Convert (Address - Header_Offset);
-    end Header_Of;
- 
-    --------------
-    -- Set_Next --
-    --------------
- 
-    procedure Set_Next
-      (E    : Traceback_Htable_Elem_Ptr;
-       Next : Traceback_Htable_Elem_Ptr)
-    is
-    begin
-       E.Next := Next;
-    end Set_Next;
- 
-    ----------
-    -- Next --
-    ----------
- 
-    function Next
-      (E : Traceback_Htable_Elem_Ptr) return Traceback_Htable_Elem_Ptr is
-    begin
-       return E.Next;
-    end Next;
- 
-    -----------
-    -- Equal --
-    -----------
- 
-    function Equal (K1, K2 : Tracebacks_Array_Access) return Boolean is
-       use type Tracebacks_Array;
-    begin
-       return K1.all = K2.all;
-    end Equal;
- 
-    -------------
-    -- Get_Key --
-    -------------
- 
-    function Get_Key
-      (E : Traceback_Htable_Elem_Ptr) return Tracebacks_Array_Access
-    is
-    begin
-       return E.Traceback;
-    end Get_Key;
- 
-    ----------
-    -- Hash --
-    ----------
- 
-    function Hash (T : Tracebacks_Array_Access) return Header is
-       Result : Integer_Address := 0;
- 
-    begin
-       for X in T'Range loop
-          Result := Result + To_Integer (PC_For (T (X)));
-       end loop;
- 
-       return Header (1 + Result mod Integer_Address (Header'Last));
-    end Hash;
- 
-    -----------------
-    -- Output_File --
-    -----------------
- 
-    function Output_File (Pool : Debug_Pool) return File_Type is
-    begin
-       if Pool.Errors_To_Stdout then
-          return Standard_Output;
-       else
-          return Standard_Error;
-       end if;
-    end Output_File;
- 
-    -------------------
-    -- Print_Address --
-    -------------------
- 
-    procedure Print_Address (File : File_Type; Addr : Address) is
-    begin
-       --  Warning: secondary stack cannot be used here. When System.Memory
-       --  implementation uses Debug_Pool, Print_Address can be called during
-       --  secondary stack creation for foreign threads.
- 
-       Put (File, Image_C (Addr));
-    end Print_Address;
- 
-    --------------
-    -- Put_Line --
-    --------------
- 
-    procedure Put_Line
-      (File                : File_Type;
-       Depth               : Natural;
-       Traceback           : Tracebacks_Array_Access;
-       Ignored_Frame_Start : System.Address := System.Null_Address;
-       Ignored_Frame_End   : System.Address := System.Null_Address)
-    is
-       procedure Print (Tr : Tracebacks_Array);
-       --  Print the traceback to standard_output
- 
-       -----------
-       -- Print --
-       -----------
- 
-       procedure Print (Tr : Tracebacks_Array) is
-       begin
-          for J in Tr'Range loop
-             Print_Address (File, PC_For (Tr (J)));
-             Put (File, ' ');
-          end loop;
-          Put (File, ASCII.LF);
-       end Print;
- 
-    --  Start of processing for Put_Line
- 
-    begin
-       if Traceback = null then
-          declare
-             Len   : Natural;
-             Start : Natural;
-             Trace : aliased Tracebacks_Array (1 .. Depth + Max_Ignored_Levels);
- 
-          begin
-             Call_Chain (Trace, Len);
-             Skip_Levels
-               (Depth               => Depth,
-                Trace               => Trace,
-                Start               => Start,
-                Len                 => Len,
-                Ignored_Frame_Start => Ignored_Frame_Start,
-                Ignored_Frame_End   => Ignored_Frame_End);
-             Print (Trace (Start .. Len));
-          end;
- 
-       else
-          Print (Traceback.all);
-       end if;
-    end Put_Line;
- 
-    -----------------
-    -- Skip_Levels --
-    -----------------
- 
-    procedure Skip_Levels
-      (Depth               : Natural;
-       Trace               : Tracebacks_Array;
-       Start               : out Natural;
-       Len                 : in out Natural;
-       Ignored_Frame_Start : System.Address;
-       Ignored_Frame_End   : System.Address)
-    is
-    begin
-       Start := Trace'First;
- 
-       while Start <= Len
-         and then (PC_For (Trace (Start)) < Ignored_Frame_Start
-                     or else PC_For (Trace (Start)) > Ignored_Frame_End)
-       loop
-          Start := Start + 1;
-       end loop;
- 
-       Start := Start + 1;
- 
-       --  Just in case: make sure we have a traceback even if Ignore_Till
-       --  wasn't found.
- 
-       if Start > Len then
-          Start := 1;
-       end if;
- 
-       if Len - Start + 1 > Depth then
-          Len := Depth + Start - 1;
-       end if;
-    end Skip_Levels;
- 
-    ------------------------------
-    -- Find_Or_Create_Traceback --
-    ------------------------------
- 
-    function Find_Or_Create_Traceback
-      (Pool                : Debug_Pool;
-       Kind                : Traceback_Kind;
-       Size                : Storage_Count;
-       Ignored_Frame_Start : System.Address;
-       Ignored_Frame_End   : System.Address) return Traceback_Htable_Elem_Ptr
-    is
-    begin
-       if Pool.Stack_Trace_Depth = 0 then
-          return null;
-       end if;
- 
-       declare
-          Disable_Exit_Value : constant Boolean := Disable;
- 
-          Elem  : Traceback_Htable_Elem_Ptr;
-          Len   : Natural;
-          Start : Natural;
-          Trace : aliased Tracebacks_Array
-                    (1 .. Integer (Pool.Stack_Trace_Depth) +
-                       Max_Ignored_Levels);
- 
-       begin
-          Disable := True;
-          Call_Chain (Trace, Len);
-          Skip_Levels
-            (Depth               => Pool.Stack_Trace_Depth,
-             Trace               => Trace,
-             Start               => Start,
-             Len                 => Len,
-             Ignored_Frame_Start => Ignored_Frame_Start,
-             Ignored_Frame_End   => Ignored_Frame_End);
- 
-          --  Check if the traceback is already in the table
- 
-          Elem :=
-            Backtrace_Htable.Get (Trace (Start .. Len)'Unrestricted_Access);
- 
-          --  If not, insert it
- 
-          if Elem = null then
-             Elem :=
-               new Traceback_Htable_Elem'
-                     (Traceback   =>
-                        new Tracebacks_Array'(Trace (Start .. Len)),
-                      Count       => 1,
-                      Kind        => Kind,
-                      Total       => Byte_Count (Size),
-                      Frees       => 0,
-                      Total_Frees => 0,
-                      Next        => null);
-             Traceback_Count := Traceback_Count + 1;
-             Backtrace_Htable.Set (Elem);
- 
-          else
-             Elem.Count := Elem.Count + 1;
-             Elem.Total := Elem.Total + Byte_Count (Size);
-          end if;
- 
-          Disable := Disable_Exit_Value;
-          return Elem;
-       exception
-          when others =>
-             Disable := Disable_Exit_Value;
-             raise;
-       end;
-    end Find_Or_Create_Traceback;
- 
-    --------------
-    -- Validity --
-    --------------
- 
-    package body Validity is
- 
-       --  The validity bits of the allocated blocks are kept in a has table.
-       --  Each component of the hash table contains the validity bits for a
-       --  16 Mbyte memory chunk.
- 
-       --  The reason the validity bits are kept for chunks of memory rather
-       --  than in a big array is that on some 64 bit platforms, it may happen
-       --  that two chunk of allocated data are very far from each other.
- 
-       Memory_Chunk_Size : constant Integer_Address := 2 ** 24; --  16 MB
-       Validity_Divisor  : constant := Storage_Alignment * System.Storage_Unit;
- 
-       Max_Validity_Byte_Index : constant :=
-                                   Memory_Chunk_Size / Validity_Divisor;
- 
-       subtype Validity_Byte_Index is
-         Integer_Address range 0 .. Max_Validity_Byte_Index - 1;
- 
-       type Byte is mod 2 ** System.Storage_Unit;
- 
-       type Validity_Bits_Part is array (Validity_Byte_Index) of Byte;
-       type Validity_Bits_Part_Ref is access all Validity_Bits_Part;
-       No_Validity_Bits_Part : constant Validity_Bits_Part_Ref := null;
- 
-       type Validity_Bits is record
-          Valid : Validity_Bits_Part_Ref := No_Validity_Bits_Part;
-          --  True if chunk of memory at this address is currently allocated
- 
-          Handled : Validity_Bits_Part_Ref := No_Validity_Bits_Part;
-          --  True if chunk of memory at this address was allocated once after
-          --  Allow_Unhandled_Memory was set to True. Used to know on Deallocate
-          --  if chunk of memory should be handled a block allocated by this
-          --  package.
- 
-       end record;
- 
-       type Validity_Bits_Ref is access all Validity_Bits;
-       No_Validity_Bits : constant Validity_Bits_Ref := null;
- 
-       Max_Header_Num : constant := 1023;
- 
-       type Header_Num is range 0 .. Max_Header_Num - 1;
- 
-       function Hash (F : Integer_Address) return Header_Num;
- 
-       function Is_Valid_Or_Handled
-         (Storage : System.Address;
-          Valid   : Boolean) return Boolean;
-       pragma Inline (Is_Valid_Or_Handled);
-       --  Internal implementation of Is_Valid and Is_Handled.
-       --  Valid is used to select Valid or Handled arrays.
- 
-       package Validy_Htable is new GNAT.HTable.Simple_HTable
-         (Header_Num => Header_Num,
-          Element    => Validity_Bits_Ref,
-          No_Element => No_Validity_Bits,
-          Key        => Integer_Address,
-          Hash       => Hash,
-          Equal      => "=");
-       --  Table to keep the validity and handled bit blocks for the allocated
-       --  data.
- 
-       function To_Pointer is new Ada.Unchecked_Conversion
-         (System.Address, Validity_Bits_Part_Ref);
- 
-       procedure Memset (A : Address; C : Integer; N : size_t);
-       pragma Import (C, Memset, "memset");
- 
-       ----------
-       -- Hash --
-       ----------
- 
-       function Hash (F : Integer_Address) return Header_Num is
-       begin
-          return Header_Num (F mod Max_Header_Num);
-       end Hash;
- 
-       -------------------------
-       -- Is_Valid_Or_Handled --
-       -------------------------
- 
-       function Is_Valid_Or_Handled
-         (Storage : System.Address;
-          Valid   : Boolean) return Boolean is
-          Int_Storage  : constant Integer_Address := To_Integer (Storage);
- 
-       begin
-          --  The pool only returns addresses aligned on Storage_Alignment so
-          --  anything off cannot be a valid block address and we can return
-          --  early in this case. We actually have to since our data structures
-          --  map validity bits for such aligned addresses only.
- 
-          if Int_Storage mod Storage_Alignment /= 0 then
-             return False;
-          end if;
- 
-          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 :=
-                              (Int_Storage -
-                                (Block_Number * Memory_Chunk_Size)) /
-                                   Storage_Alignment;
-             Bit          : constant Byte :=
-                              2 ** Natural (Offset mod System.Storage_Unit);
-          begin
-             if Ptr = No_Validity_Bits then
-                return False;
-             else
-                if Valid then
-                   return (Ptr.Valid (Offset / System.Storage_Unit)
-                              and Bit) /= 0;
-                else
-                   if Ptr.Handled = No_Validity_Bits_Part then
-                      return False;
-                   else
-                      return (Ptr.Handled (Offset / System.Storage_Unit)
-                                 and Bit) /= 0;
-                   end if;
-                end if;
-             end if;
-          end;
-       end Is_Valid_Or_Handled;
- 
-       --------------
-       -- Is_Valid --
-       --------------
- 
-       function Is_Valid (Storage : System.Address) return Boolean is
-       begin
-          return Is_Valid_Or_Handled (Storage => Storage, Valid => True);
-       end Is_Valid;
- 
-       -----------------
-       -- Is_Handled --
-       -----------------
- 
-       function Is_Handled (Storage : System.Address) return Boolean is
-       begin
-          return Is_Valid_Or_Handled (Storage => Storage, Valid => False);
-       end Is_Handled;
- 
-       ---------------
-       -- Set_Valid --
-       ---------------
- 
-       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)) /
-                              Storage_Alignment;
-          Bit          : constant Byte :=
-                           2 ** Natural (Offset mod System.Storage_Unit);
- 
-          procedure Set_Handled;
-          pragma Inline (Set_Handled);
-          --  if Allow_Unhandled_Memory set Handled bit in table.
- 
-          -----------------
-          -- Set_Handled --
-          -----------------
- 
-          procedure Set_Handled is
-          begin
-             if Allow_Unhandled_Memory then
-                if Ptr.Handled = No_Validity_Bits_Part then
-                   Ptr.Handled :=
-                     To_Pointer (Alloc (size_t (Max_Validity_Byte_Index)));
-                   Memset
-                     (A => Ptr.Handled.all'Address,
-                      C => 0,
-                      N => size_t (Max_Validity_Byte_Index));
-                end if;
- 
-                Ptr.Handled (Offset / System.Storage_Unit) :=
-                  Ptr.Handled (Offset / System.Storage_Unit) or Bit;
-             end if;
-          end Set_Handled;
- 
-       --  Start of processing for Set_Valid
- 
-       begin
-          if Ptr = No_Validity_Bits then
- 
-             --  First time in this memory area: allocate a new block and put
-             --  it in the table.
- 
-             if Value then
-                Ptr := new Validity_Bits;
-                Validity_Count := Validity_Count + 1;
-                Ptr.Valid :=
-                  To_Pointer (Alloc (size_t (Max_Validity_Byte_Index)));
-                Validy_Htable.Set (Block_Number, Ptr);
-                Memset
-                  (A => Ptr.Valid.all'Address,
-                   C => 0,
-                   N => size_t (Max_Validity_Byte_Index));
-                Ptr.Valid (Offset / System.Storage_Unit) := Bit;
-                Set_Handled;
-             end if;
- 
-          else
-             if Value then
-                Ptr.Valid (Offset / System.Storage_Unit) :=
-                  Ptr.Valid (Offset / System.Storage_Unit) or Bit;
-                Set_Handled;
-             else
-                Ptr.Valid (Offset / System.Storage_Unit) :=
-                  Ptr.Valid (Offset / System.Storage_Unit) and (not Bit);
-             end if;
-          end if;
-       end Set_Valid;
-    end Validity;
- 
-    --------------
-    -- Allocate --
-    --------------
- 
-    procedure Allocate
-      (Pool                     : in out Debug_Pool;
-       Storage_Address          : out Address;
-       Size_In_Storage_Elements : Storage_Count;
-       Alignment                : Storage_Count)
-    is
-       pragma Unreferenced (Alignment);
-       --  Ignored, we always force Storage_Alignment
- 
-       type Local_Storage_Array is new Storage_Array
-         (1 .. Size_In_Storage_Elements + Extra_Allocation);
- 
-       type Ptr is access Local_Storage_Array;
-       --  On some systems, we might want to physically protect pages against
-       --  writing when they have been freed (of course, this is expensive in
-       --  terms of wasted memory). To do that, all we should have to do it to
-       --  set the size of this array to the page size. See mprotect().
- 
-       Current : Byte_Count;
-       P       : Ptr;
-       Trace   : Traceback_Htable_Elem_Ptr;
- 
-       Reset_Disable_At_Exit : Boolean := False;
- 
-    begin
-       <<Allocate_Label>>
-       Lock_Task.all;
- 
-       if Disable then
-          Storage_Address :=
-            System.CRTL.malloc (System.CRTL.size_t (Size_In_Storage_Elements));
-          Unlock_Task.all;
-          return;
-       end if;
- 
-       Reset_Disable_At_Exit := True;
-       Disable := True;
- 
-       Pool.Alloc_Count := Pool.Alloc_Count + 1;
- 
-       --  If necessary, start physically releasing memory. The reason this is
-       --  done here, although Pool.Logically_Deallocated has not changed above,
-       --  is so that we do this only after a series of deallocations (e.g loop
-       --  that deallocates a big array). If we were doing that in Deallocate,
-       --  we might be physically freeing memory several times during the loop,
-       --  which is expensive.
- 
-       if Pool.Logically_Deallocated >
-            Byte_Count (Pool.Maximum_Logically_Freed_Memory)
-       then
-          Free_Physically (Pool);
-       end if;
- 
-       --  Use standard (i.e. through malloc) allocations. This automatically
-       --  raises Storage_Error if needed. We also try once more to physically
-       --  release memory, so that even marked blocks, in the advanced scanning,
-       --  are freed. Note that we do not initialize the storage array since it
-       --  is not necessary to do so (however this will cause bogus valgrind
-       --  warnings, which should simply be ignored).
- 
-       begin
-          P := new Local_Storage_Array;
- 
-       exception
-          when Storage_Error =>
-             Free_Physically (Pool);
-             P := new Local_Storage_Array;
-       end;
- 
-       --  Compute Storage_Address, aimed at receiving user data. We need room
-       --  for the allocation header just ahead of the user data space plus
-       --  alignment padding so Storage_Address is aligned on Storage_Alignment,
-       --  like so:
-       --
-       --                         Storage_Address, aligned
-       --                         on Storage_Alignment
-       --                           v
-       --          | ~~~~ | Header | User data ... |
-       --                  ^........^
-       --                  Header_Offset
-       --
-       --  Header_Offset is fixed so moving back and forth between user data
-       --  and allocation header is straightforward. The value is also such
-       --  that the header type alignment is honored when starting from
-       --  Default_alignment.
- 
-       --  For the purpose of computing Storage_Address, we just do as if the
-       --  header was located first, followed by the alignment padding:
- 
-       Storage_Address :=
-         To_Address (Align (To_Integer (P.all'Address) +
-                       Integer_Address (Header_Offset)));
-       --  Computation is done in Integer_Address, not Storage_Offset, because
-       --  the range of Storage_Offset may not be large enough.
- 
-       pragma Assert ((Storage_Address - System.Null_Address)
-                      mod Storage_Alignment = 0);
-       pragma Assert (Storage_Address + Size_In_Storage_Elements
-                      <= P.all'Address + P'Length);
- 
-       Trace :=
-         Find_Or_Create_Traceback
-           (Pool                => Pool,
-            Kind                => Alloc,
-            Size                => Size_In_Storage_Elements,
-            Ignored_Frame_Start => Allocate_Label'Address,
-            Ignored_Frame_End   => Code_Address_For_Allocate_End);
- 
-       pragma Warnings (Off);
-       --  Turn warning on alignment for convert call off. We know that in fact
-       --  this conversion is safe since P itself is always aligned on
-       --  Storage_Alignment.
- 
-       Header_Of (Storage_Address).all :=
-         (Allocation_Address => P.all'Address,
-          Alloc_Traceback    => Trace,
-          Dealloc_Traceback  => To_Traceback (null),
-          Next               => Pool.First_Used_Block,
-          Block_Size         => Size_In_Storage_Elements);
- 
-       pragma Warnings (On);
- 
-       --  Link this block in the list of used blocks. This will be used to list
-       --  memory leaks in Print_Info, and for the advanced schemes of
-       --  Physical_Free, where we want to traverse all allocated blocks and
-       --  search for possible references.
- 
-       --  We insert in front, since most likely we'll be freeing the most
-       --  recently allocated blocks first (the older one might stay allocated
-       --  for the whole life of the application).
- 
-       if Pool.First_Used_Block /= System.Null_Address then
-          Header_Of (Pool.First_Used_Block).Dealloc_Traceback :=
-            To_Address (Storage_Address);
-       end if;
- 
-       Pool.First_Used_Block := Storage_Address;
- 
-       --  Mark the new address as valid
- 
-       Set_Valid (Storage_Address, True);
- 
-       if Pool.Low_Level_Traces then
-          Put (Output_File (Pool),
-               "info: Allocated"
-               & Storage_Count'Image (Size_In_Storage_Elements)
-               & " bytes at ");
-          Print_Address (Output_File (Pool), Storage_Address);
-          Put (Output_File (Pool),
-               " (physically:"
-               & Storage_Count'Image (Local_Storage_Array'Length)
-               & " bytes at ");
-          Print_Address (Output_File (Pool), P.all'Address);
-          Put (Output_File (Pool),
-               "), at ");
-          Put_Line (Output_File (Pool), Pool.Stack_Trace_Depth, null,
-                    Allocate_Label'Address,
-                    Code_Address_For_Deallocate_End);
-       end if;
- 
-       --  Update internal data
- 
-       Pool.Allocated :=
-         Pool.Allocated + Byte_Count (Size_In_Storage_Elements);
- 
-       Current := Pool.Current_Water_Mark;
- 
-       if Current > Pool.High_Water then
-          Pool.High_Water := Current;
-       end if;
- 
-       Disable := False;
- 
-       Unlock_Task.all;
- 
-    exception
-       when others =>
-          if Reset_Disable_At_Exit then
-             Disable := False;
-          end if;
-          Unlock_Task.all;
-          raise;
-    end Allocate;
- 
-    ------------------
-    -- Allocate_End --
-    ------------------
- 
-    --  DO NOT MOVE, this must be right after Allocate. This is similar to what
-    --  is done in a-except, so that we can hide the traceback frames internal
-    --  to this package
- 
-    procedure Allocate_End is
-    begin
-       <<Allocate_End_Label>>
-       Code_Address_For_Allocate_End := Allocate_End_Label'Address;
-    end Allocate_End;
- 
-    -------------------
-    -- Set_Dead_Beef --
-    -------------------
- 
-    procedure Set_Dead_Beef
-      (Storage_Address          : System.Address;
-       Size_In_Storage_Elements : Storage_Count)
-    is
-       Dead_Bytes : constant := 4;
- 
-       type Data is mod 2 ** (Dead_Bytes * 8);
-       for Data'Size use Dead_Bytes * 8;
- 
-       Dead : constant Data := 16#DEAD_BEEF#;
- 
-       type Dead_Memory is array
-         (1 .. Size_In_Storage_Elements / Dead_Bytes) of Data;
-       type Mem_Ptr is access Dead_Memory;
- 
-       type Byte is mod 2 ** 8;
-       for Byte'Size use 8;
- 
-       type Dead_Memory_Bytes is array (0 .. 2) of Byte;
-       type Dead_Memory_Bytes_Ptr is access Dead_Memory_Bytes;
- 
-       function From_Ptr is new Ada.Unchecked_Conversion
-         (System.Address, Mem_Ptr);
- 
-       function From_Ptr is new Ada.Unchecked_Conversion
-         (System.Address, Dead_Memory_Bytes_Ptr);
- 
-       M      : constant Mem_Ptr := From_Ptr (Storage_Address);
-       M2     : Dead_Memory_Bytes_Ptr;
-       Modulo : constant Storage_Count :=
-                  Size_In_Storage_Elements mod Dead_Bytes;
-    begin
-       M.all := (others => Dead);
- 
-       --  Any bytes left (up to three of them)
- 
-       if Modulo /= 0 then
-          M2 := From_Ptr (Storage_Address + M'Length * Dead_Bytes);
- 
-          M2 (0) := 16#DE#;
-          if Modulo >= 2 then
-             M2 (1) := 16#AD#;
- 
-             if Modulo >= 3 then
-                M2 (2) := 16#BE#;
-             end if;
-          end if;
-       end if;
-    end Set_Dead_Beef;
- 
-    ---------------------
-    -- Free_Physically --
-    ---------------------
- 
-    procedure Free_Physically (Pool : in out Debug_Pool) is
-       type Byte is mod 256;
-       type Byte_Access is access Byte;
- 
-       function To_Byte is new Ada.Unchecked_Conversion
-         (System.Address, Byte_Access);
- 
-       type Address_Access is access System.Address;
- 
-       function To_Address_Access is new Ada.Unchecked_Conversion
-         (System.Address, Address_Access);
- 
-       In_Use_Mark : constant Byte := 16#D#;
-       Free_Mark   : constant Byte := 16#F#;
- 
-       Total_Freed : Storage_Count := 0;
- 
-       procedure Reset_Marks;
-       --  Unmark all the logically freed blocks, so that they are considered
-       --  for physical deallocation
- 
-       procedure Mark
-         (H : Allocation_Header_Access; A : System.Address; In_Use : Boolean);
-       --  Mark the user data block starting at A. For a block of size zero,
-       --  nothing is done. For a block with a different size, the first byte
-       --  is set to either "D" (in use) or "F" (free).
- 
-       function Marked (A : System.Address) return Boolean;
-       --  Return true if the user data block starting at A might be in use
-       --  somewhere else
- 
-       procedure Mark_Blocks;
-       --  Traverse all allocated blocks, and search for possible references
-       --  to logically freed blocks. Mark them appropriately
- 
-       procedure Free_Blocks (Ignore_Marks : Boolean);
-       --  Physically release blocks. Only the blocks that haven't been marked
-       --  will be released, unless Ignore_Marks is true.
- 
-       -----------------
-       -- Free_Blocks --
-       -----------------
- 
-       procedure Free_Blocks (Ignore_Marks : Boolean) is
-          Header   : Allocation_Header_Access;
-          Tmp      : System.Address := Pool.First_Free_Block;
-          Next     : System.Address;
-          Previous : System.Address := System.Null_Address;
- 
-       begin
-          while Tmp /= System.Null_Address
-            and then
-              not (Total_Freed > Pool.Minimum_To_Free
-                    and Pool.Logically_Deallocated <
-                          Byte_Count (Pool.Maximum_Logically_Freed_Memory))
-          loop
-             Header := Header_Of (Tmp);
- 
-             --  If we know, or at least assume, the block is no longer
-             --  referenced anywhere, we can free it physically.
- 
-             if Ignore_Marks or else not Marked (Tmp) then
-                declare
-                   pragma Suppress (All_Checks);
-                   --  Suppress the checks on this section. If they are overflow
-                   --  errors, it isn't critical, and we'd rather avoid a
-                   --  Constraint_Error in that case.
- 
-                begin
-                   --  Note that block_size < zero for freed blocks
- 
-                   Pool.Physically_Deallocated :=
-                     Pool.Physically_Deallocated -
-                       Byte_Count (Header.Block_Size);
- 
-                   Pool.Logically_Deallocated :=
-                     Pool.Logically_Deallocated +
-                       Byte_Count (Header.Block_Size);
- 
-                   Total_Freed := Total_Freed - Header.Block_Size;
-                end;
- 
-                Next := Header.Next;
- 
-                if Pool.Low_Level_Traces then
-                   Put
-                     (Output_File (Pool),
-                      "info: Freeing physical memory "
-                      & Storage_Count'Image
-                        ((abs Header.Block_Size) + Extra_Allocation)
-                      & " bytes at ");
-                   Print_Address (Output_File (Pool),
-                                  Header.Allocation_Address);
-                   Put_Line (Output_File (Pool), "");
-                end if;
- 
-                if System_Memory_Debug_Pool_Enabled then
-                   System.CRTL.free (Header.Allocation_Address);
-                else
-                   System.Memory.Free (Header.Allocation_Address);
-                end if;
- 
-                Set_Valid (Tmp, False);
- 
-                --  Remove this block from the list
- 
-                if Previous = System.Null_Address then
-                   Pool.First_Free_Block := Next;
-                else
-                   Header_Of (Previous).Next := Next;
-                end if;
- 
-                Tmp := Next;
- 
-             else
-                Previous := Tmp;
-                Tmp := Header.Next;
-             end if;
-          end loop;
-       end Free_Blocks;
- 
-       ----------
-       -- Mark --
-       ----------
- 
-       procedure Mark
-         (H      : Allocation_Header_Access;
-          A      : System.Address;
-          In_Use : Boolean)
-       is
-       begin
-          if H.Block_Size /= 0 then
-             To_Byte (A).all := (if In_Use then In_Use_Mark else Free_Mark);
-          end if;
-       end Mark;
- 
-       -----------------
-       -- Mark_Blocks --
-       -----------------
- 
-       procedure Mark_Blocks is
-          Tmp      : System.Address := Pool.First_Used_Block;
-          Previous : System.Address;
-          Last     : System.Address;
-          Pointed  : System.Address;
-          Header   : Allocation_Header_Access;
- 
-       begin
-          --  For each allocated block, check its contents. Things that look
-          --  like a possible address are used to mark the blocks so that we try
-          --  and keep them, for better detection in case of invalid access.
-          --  This mechanism is far from being fool-proof: it doesn't check the
-          --  stacks of the threads, doesn't check possible memory allocated not
-          --  under control of this debug pool. But it should allow us to catch
-          --  more cases.
- 
-          while Tmp /= System.Null_Address loop
-             Previous := Tmp;
-             Last     := Tmp + Header_Of (Tmp).Block_Size;
-             while Previous < Last loop
-                --  ??? Should we move byte-per-byte, or consider that addresses
-                --  are always aligned on 4-bytes boundaries ? Let's use the
-                --  fastest for now.
- 
-                Pointed := To_Address_Access (Previous).all;
-                if Is_Valid (Pointed) then
-                   Header := Header_Of (Pointed);
- 
-                   --  Do not even attempt to mark blocks in use. That would
-                   --  screw up the whole application, of course.
- 
-                   if Header.Block_Size < 0 then
-                      Mark (Header, Pointed, In_Use => True);
-                   end if;
-                end if;
- 
-                Previous := Previous + System.Address'Size;
-             end loop;
- 
-             Tmp := Header_Of (Tmp).Next;
-          end loop;
-       end Mark_Blocks;
- 
-       ------------
-       -- Marked --
-       ------------
- 
-       function Marked (A : System.Address) return Boolean is
-       begin
-          return To_Byte (A).all = In_Use_Mark;
-       end Marked;
- 
-       -----------------
-       -- Reset_Marks --
-       -----------------
- 
-       procedure Reset_Marks is
-          Current : System.Address := Pool.First_Free_Block;
-          Header  : Allocation_Header_Access;
-       begin
-          while Current /= System.Null_Address loop
-             Header := Header_Of (Current);
-             Mark (Header, Current, False);
-             Current := Header.Next;
-          end loop;
-       end Reset_Marks;
- 
-    --  Start of processing for Free_Physically
- 
-    begin
-       Lock_Task.all;
- 
-       if Pool.Advanced_Scanning then
- 
-          --  Reset the mark for each freed block
- 
-          Reset_Marks;
- 
-          Mark_Blocks;
-       end if;
- 
-       Free_Blocks (Ignore_Marks => not Pool.Advanced_Scanning);
- 
-       --  The contract is that we need to free at least Minimum_To_Free bytes,
-       --  even if this means freeing marked blocks in the advanced scheme
- 
-       if Total_Freed < Pool.Minimum_To_Free
-         and then Pool.Advanced_Scanning
-       then
-          Pool.Marked_Blocks_Deallocated := True;
-          Free_Blocks (Ignore_Marks => True);
-       end if;
- 
-       Unlock_Task.all;
- 
-    exception
-       when others =>
-          Unlock_Task.all;
-          raise;
-    end Free_Physically;
- 
-    --------------
-    -- Get_Size --
-    --------------
- 
-    procedure Get_Size
-      (Storage_Address          : Address;
-       Size_In_Storage_Elements : out Storage_Count;
-       Valid                    : out Boolean) is
-    begin
-       Lock_Task.all;
- 
-       Valid := Is_Valid (Storage_Address);
- 
-       if Is_Valid (Storage_Address) then
-          declare
-             Header   : constant Allocation_Header_Access :=
-               Header_Of (Storage_Address);
-          begin
-             if Header.Block_Size >= 0 then
-                Valid := True;
-                Size_In_Storage_Elements := Header.Block_Size;
-             else
-                Valid := False;
-             end if;
-          end;
-       else
-          Valid := False;
-       end if;
- 
-       Unlock_Task.all;
- 
-    exception
-       when others =>
-          Unlock_Task.all;
-          raise;
- 
-    end Get_Size;
- 
-    ---------------------
-    -- Print_Traceback --
-    ---------------------
- 
-    procedure Print_Traceback
-      (Output_File : File_Type;
-       Prefix      : String;
-       Traceback   : Traceback_Htable_Elem_Ptr) is
-    begin
-       if Traceback /= null then
-          Put (Output_File, Prefix);
-          Put_Line (Output_File, 0, Traceback.Traceback);
-       end if;
-    end Print_Traceback;
- 
-    ----------------
-    -- Deallocate --
-    ----------------
- 
-    procedure Deallocate
-      (Pool                     : in out Debug_Pool;
-       Storage_Address          : Address;
-       Size_In_Storage_Elements : Storage_Count;
-       Alignment                : Storage_Count)
-    is
-       pragma Unreferenced (Alignment);
- 
-       Unlock_Task_Required : Boolean := False;
-       Header   : constant Allocation_Header_Access :=
-         Header_Of (Storage_Address);
-       Valid    : Boolean;
-       Previous : System.Address;
- 
-    begin
-       <<Deallocate_Label>>
-       Lock_Task.all;
-       Unlock_Task_Required := True;
-       Valid := Is_Valid (Storage_Address);
- 
-       if not Valid then
-          Unlock_Task_Required := False;
-          Unlock_Task.all;
- 
-          if Storage_Address = System.Null_Address then
-             if Pool.Raise_Exceptions and then
-               Size_In_Storage_Elements /= Storage_Count'Last
-             then
-                raise Freeing_Not_Allocated_Storage;
-             else
-                Put (Output_File (Pool),
-                     "error: Freeing Null_Address, at ");
-                Put_Line (Output_File (Pool), Pool.Stack_Trace_Depth, null,
-                          Deallocate_Label'Address,
-                          Code_Address_For_Deallocate_End);
-                return;
-             end if;
-          end if;
- 
-          if Allow_Unhandled_Memory and then not Is_Handled (Storage_Address)
-          then
-             System.CRTL.free (Storage_Address);
-             return;
-          end if;
- 
-          if Pool.Raise_Exceptions and then
-            Size_In_Storage_Elements /= Storage_Count'Last
-          then
-             raise Freeing_Not_Allocated_Storage;
-          else
-             Put (Output_File (Pool),
-                  "error: Freeing not allocated storage, at ");
-             Put_Line (Output_File (Pool), Pool.Stack_Trace_Depth, null,
-                       Deallocate_Label'Address,
-                       Code_Address_For_Deallocate_End);
-          end if;
- 
-       elsif Header.Block_Size < 0 then
-          Unlock_Task_Required := False;
-          Unlock_Task.all;
-          if Pool.Raise_Exceptions then
-             raise Freeing_Deallocated_Storage;
-          else
-             Put (Output_File (Pool),
-                  "error: Freeing already deallocated storage, at ");
-             Put_Line (Output_File (Pool), Pool.Stack_Trace_Depth, null,
-                       Deallocate_Label'Address,
-                       Code_Address_For_Deallocate_End);
-             Print_Traceback (Output_File (Pool),
-                              "   Memory already deallocated at ",
-                             To_Traceback (Header.Dealloc_Traceback));
-             Print_Traceback (Output_File (Pool), "   Memory was allocated at ",
-                              Header.Alloc_Traceback);
-          end if;
- 
-       else
-          --  Some sort of codegen problem or heap corruption caused the
-          --  Size_In_Storage_Elements to be wrongly computed.
-          --  The code below is all based on the assumption that Header.all
-          --  is not corrupted, such that the error is non-fatal.
- 
-          if Header.Block_Size /= Size_In_Storage_Elements and then
-            Size_In_Storage_Elements /= Storage_Count'Last
-          then
-             Put_Line (Output_File (Pool),
-                       "error: Deallocate size "
-                         & Storage_Count'Image (Size_In_Storage_Elements)
-                         & " does not match allocate size "
-                         & Storage_Count'Image (Header.Block_Size));
-          end if;
- 
-          if Pool.Low_Level_Traces then
-             Put (Output_File (Pool),
-                  "info: Deallocated"
-                  & Storage_Count'Image (Header.Block_Size)
-                  & " bytes at ");
-             Print_Address (Output_File (Pool), Storage_Address);
-             Put (Output_File (Pool),
-                  " (physically"
-                  & Storage_Count'Image (Header.Block_Size + Extra_Allocation)
-                  & " bytes at ");
-             Print_Address (Output_File (Pool), Header.Allocation_Address);
-             Put (Output_File (Pool), "), at ");
- 
-             Put_Line (Output_File (Pool), Pool.Stack_Trace_Depth, null,
-                       Deallocate_Label'Address,
-                       Code_Address_For_Deallocate_End);
-             Print_Traceback (Output_File (Pool), "   Memory was allocated at ",
-                              Header.Alloc_Traceback);
-          end if;
- 
-          --  Remove this block from the list of used blocks
- 
-          Previous :=
-            To_Address (Header.Dealloc_Traceback);
- 
-          if Previous = System.Null_Address then
-             Pool.First_Used_Block := Header_Of (Pool.First_Used_Block).Next;
- 
-             if Pool.First_Used_Block /= System.Null_Address then
-                Header_Of (Pool.First_Used_Block).Dealloc_Traceback :=
-                  To_Traceback (null);
-             end if;
- 
-          else
-             Header_Of (Previous).Next := Header.Next;
- 
-             if Header.Next /= System.Null_Address then
-                Header_Of
-                  (Header.Next).Dealloc_Traceback := To_Address (Previous);
-             end if;
-          end if;
- 
-          --  Update the Alloc_Traceback Frees/Total_Frees members (if present)
- 
-          if Header.Alloc_Traceback /= null then
-             Header.Alloc_Traceback.Frees := Header.Alloc_Traceback.Frees + 1;
-             Header.Alloc_Traceback.Total_Frees :=
-               Header.Alloc_Traceback.Total_Frees +
-                 Byte_Count (Header.Block_Size);
-          end if;
- 
-          Pool.Free_Count := Pool.Free_Count + 1;
- 
-          --  Update the header
- 
-          Header.all :=
-            (Allocation_Address => Header.Allocation_Address,
-             Alloc_Traceback    => Header.Alloc_Traceback,
-             Dealloc_Traceback  => To_Traceback
-                                     (Find_Or_Create_Traceback
-                                        (Pool, Dealloc,
-                                         Header.Block_Size,
-                                         Deallocate_Label'Address,
-                                         Code_Address_For_Deallocate_End)),
-             Next               => System.Null_Address,
-             Block_Size         => -Header.Block_Size);
- 
-          if Pool.Reset_Content_On_Free then
-             Set_Dead_Beef (Storage_Address, -Header.Block_Size);
-          end if;
- 
-          Pool.Logically_Deallocated :=
-            Pool.Logically_Deallocated + Byte_Count (-Header.Block_Size);
- 
-          --  Link this free block with the others (at the end of the list, so
-          --  that we can start releasing the older blocks first later on).
- 
-          if Pool.First_Free_Block = System.Null_Address then
-             Pool.First_Free_Block := Storage_Address;
-             Pool.Last_Free_Block := Storage_Address;
- 
-          else
-             Header_Of (Pool.Last_Free_Block).Next := Storage_Address;
-             Pool.Last_Free_Block := Storage_Address;
-          end if;
- 
-          --  Do not physically release the memory here, but in Alloc.
-          --  See comment there for details.
- 
-          Unlock_Task_Required := False;
-          Unlock_Task.all;
-       end if;
- 
-    exception
-       when others =>
-          if Unlock_Task_Required then
-             Unlock_Task.all;
-          end if;
-          raise;
-    end Deallocate;
- 
-    --------------------
-    -- Deallocate_End --
-    --------------------
- 
-    --  DO NOT MOVE, this must be right after Deallocate
- 
-    --  See Allocate_End
- 
-    --  This is making assumptions about code order that may be invalid ???
- 
-    procedure Deallocate_End is
-    begin
-       <<Deallocate_End_Label>>
-       Code_Address_For_Deallocate_End := Deallocate_End_Label'Address;
-    end Deallocate_End;
- 
-    -----------------
-    -- Dereference --
-    -----------------
- 
-    procedure Dereference
-      (Pool                     : in out Debug_Pool;
-       Storage_Address          : Address;
-       Size_In_Storage_Elements : Storage_Count;
-       Alignment                : Storage_Count)
-    is
-       pragma Unreferenced (Alignment, Size_In_Storage_Elements);
- 
-       Valid   : constant Boolean := Is_Valid (Storage_Address);
-       Header  : Allocation_Header_Access;
- 
-    begin
-       --  Locking policy: we do not do any locking in this procedure. The
-       --  tables are only read, not written to, and although a problem might
-       --  appear if someone else is modifying the tables at the same time, this
-       --  race condition is not intended to be detected by this storage_pool (a
-       --  now invalid pointer would appear as valid). Instead, we prefer
-       --  optimum performance for dereferences.
- 
-       <<Dereference_Label>>
- 
-       if not Valid then
-          if Pool.Raise_Exceptions then
-             raise Accessing_Not_Allocated_Storage;
-          else
-             Put (Output_File (Pool),
-                  "error: Accessing not allocated storage, at ");
-             Put_Line (Output_File (Pool), Pool.Stack_Trace_Depth, null,
-                       Dereference_Label'Address,
-                       Code_Address_For_Dereference_End);
-          end if;
- 
-       else
-          Header := Header_Of (Storage_Address);
- 
-          if Header.Block_Size < 0 then
-             if Pool.Raise_Exceptions then
-                raise Accessing_Deallocated_Storage;
-             else
-                Put (Output_File (Pool),
-                     "error: Accessing deallocated storage, at ");
-                Put_Line
-                  (Output_File (Pool), Pool.Stack_Trace_Depth, null,
-                   Dereference_Label'Address,
-                   Code_Address_For_Dereference_End);
-                Print_Traceback (Output_File (Pool), "  First deallocation at ",
-                                 To_Traceback (Header.Dealloc_Traceback));
-                Print_Traceback (Output_File (Pool), "  Initial allocation at ",
-                                 Header.Alloc_Traceback);
-             end if;
-          end if;
-       end if;
-    end Dereference;
- 
-    ---------------------
-    -- Dereference_End --
-    ---------------------
- 
-    --  DO NOT MOVE: this must be right after Dereference
- 
-    --  See Allocate_End
- 
-    --  This is making assumptions about code order that may be invalid ???
- 
-    procedure Dereference_End is
-    begin
-       <<Dereference_End_Label>>
-       Code_Address_For_Dereference_End := Dereference_End_Label'Address;
-    end Dereference_End;
- 
-    ----------------
-    -- Print_Info --
-    ----------------
- 
-    procedure Print_Info
-      (Pool          : Debug_Pool;
-       Cumulate      : Boolean := False;
-       Display_Slots : Boolean := False;
-       Display_Leaks : Boolean := False)
-    is
- 
-       package Backtrace_Htable_Cumulate is new GNAT.HTable.Static_HTable
-         (Header_Num => Header,
-          Element    => Traceback_Htable_Elem,
-          Elmt_Ptr   => Traceback_Htable_Elem_Ptr,
-          Null_Ptr   => null,
-          Set_Next   => Set_Next,
-          Next       => Next,
-          Key        => Tracebacks_Array_Access,
-          Get_Key    => Get_Key,
-          Hash       => Hash,
-          Equal      => Equal);
-       --  This needs a comment ??? probably some of the ones below do too???
- 
-       Data    : Traceback_Htable_Elem_Ptr;
-       Elem    : Traceback_Htable_Elem_Ptr;
-       Current : System.Address;
-       Header  : Allocation_Header_Access;
-       K       : Traceback_Kind;
- 
-    begin
-       Put_Line
-         ("Total allocated bytes : " &
-          Byte_Count'Image (Pool.Allocated));
- 
-       Put_Line
-         ("Total logically deallocated bytes : " &
-          Byte_Count'Image (Pool.Logically_Deallocated));
- 
-       Put_Line
-         ("Total physically deallocated bytes : " &
-          Byte_Count'Image (Pool.Physically_Deallocated));
- 
-       if Pool.Marked_Blocks_Deallocated then
-          Put_Line ("Marked blocks were physically deallocated. This is");
-          Put_Line ("potentially dangerous, and you might want to run");
-          Put_Line ("again with a lower value of Minimum_To_Free");
-       end if;
- 
-       Put_Line
-         ("Current Water Mark: " &
-          Byte_Count'Image (Pool.Current_Water_Mark));
- 
-       Put_Line
-         ("High Water Mark: " &
-           Byte_Count'Image (Pool.High_Water));
- 
-       Put_Line ("");
- 
-       if Display_Slots then
-          Data := Backtrace_Htable.Get_First;
-          while Data /= null loop
-             if Data.Kind in Alloc .. Dealloc then
-                Elem :=
-                  new Traceback_Htable_Elem'
-                       (Traceback => new Tracebacks_Array'(Data.Traceback.all),
-                        Count       => Data.Count,
-                        Kind        => Data.Kind,
-                        Total       => Data.Total,
-                        Frees       => Data.Frees,
-                        Total_Frees => Data.Total_Frees,
-                        Next        => null);
-                Backtrace_Htable_Cumulate.Set (Elem);
- 
-                if Cumulate then
-                   K := (if Data.Kind = Alloc then Indirect_Alloc
-                                              else Indirect_Dealloc);
- 
-                   --  Propagate the direct call to all its parents
- 
-                   for T in Data.Traceback'First + 1 .. Data.Traceback'Last loop
-                      Elem := Backtrace_Htable_Cumulate.Get
-                        (Data.Traceback
-                           (T .. Data.Traceback'Last)'Unrestricted_Access);
- 
-                      --  If not, insert it
- 
-                      if Elem = null then
-                         Elem := new Traceback_Htable_Elem'
-                           (Traceback => new Tracebacks_Array'
-                              (Data.Traceback (T .. Data.Traceback'Last)),
-                            Count       => Data.Count,
-                            Kind        => K,
-                            Total       => Data.Total,
-                            Frees       => Data.Frees,
-                            Total_Frees => Data.Total_Frees,
-                            Next        => null);
-                         Backtrace_Htable_Cumulate.Set (Elem);
- 
-                         --  Properly take into account that the subprograms
-                         --  indirectly called might be doing either allocations
-                         --  or deallocations. This needs to be reflected in the
-                         --  counts.
- 
-                      else
-                         Elem.Count := Elem.Count + Data.Count;
- 
-                         if K = Elem.Kind then
-                            Elem.Total := Elem.Total + Data.Total;
- 
-                         elsif Elem.Total > Data.Total then
-                            Elem.Total := Elem.Total - Data.Total;
- 
-                         else
-                            Elem.Kind  := K;
-                            Elem.Total := Data.Total - Elem.Total;
-                         end if;
-                      end if;
-                   end loop;
-                end if;
- 
-                Data := Backtrace_Htable.Get_Next;
-             end if;
-          end loop;
- 
-          Put_Line ("List of allocations/deallocations: ");
- 
-          Data := Backtrace_Htable_Cumulate.Get_First;
-          while Data /= null loop
-             case Data.Kind is
-                when Alloc            => Put ("alloc (count:");
-                when Indirect_Alloc   => Put ("indirect alloc (count:");
-                when Dealloc          => Put ("free  (count:");
-                when Indirect_Dealloc => Put ("indirect free  (count:");
-             end case;
- 
-             Put (Natural'Image (Data.Count) & ", total:" &
-                  Byte_Count'Image (Data.Total) & ") ");
- 
-             for T in Data.Traceback'Range loop
-                Put (Image_C (PC_For (Data.Traceback (T))) & ' ');
-             end loop;
- 
-             Put_Line ("");
- 
-             Data := Backtrace_Htable_Cumulate.Get_Next;
-          end loop;
- 
-          Backtrace_Htable_Cumulate.Reset;
-       end if;
- 
-       if Display_Leaks then
-          Put_Line ("");
-          Put_Line ("List of not deallocated blocks:");
- 
-          --  Do not try to group the blocks with the same stack traces
-          --  together. This is done by the gnatmem output.
- 
-          Current := Pool.First_Used_Block;
-          while Current /= System.Null_Address loop
-             Header := Header_Of (Current);
- 
-             Put ("Size: " & Storage_Count'Image (Header.Block_Size) & " at: ");
- 
-             if Header.Alloc_Traceback /= null then
-                for T in Header.Alloc_Traceback.Traceback'Range loop
-                   Put (Image_C
-                        (PC_For (Header.Alloc_Traceback.Traceback (T))) & ' ');
-                end loop;
-             end if;
- 
-             Put_Line ("");
-             Current := Header.Next;
-          end loop;
-       end if;
-    end Print_Info;
- 
-    ----------
-    -- Dump --
-    ----------
- 
-    procedure Dump
-      (Pool   : Debug_Pool;
-       Size   : Positive;
-       Report : Report_Type := All_Reports) is
- 
-       Total_Freed : constant Byte_Count :=
-         Pool.Logically_Deallocated + Pool.Physically_Deallocated;
- 
-       procedure Do_Report (Sort : Report_Type);
-       --  Do a specific type of report
- 
-       procedure Do_Report (Sort : Report_Type) is
-          Elem        : Traceback_Htable_Elem_Ptr;
-          Bigger      : Boolean;
-          Grand_Total : Float;
- 
-          Max  : array (1 .. Size) of Traceback_Htable_Elem_Ptr :=
-            (others => null);
-          --  Sorted array for the biggest memory users
- 
-       begin
-          Put_Line ("");
- 
-          case Sort is
-             when All_Reports
-                | Memory_Usage
-             =>
-                Put_Line (Size'Img & " biggest memory users at this time:");
-                Put_Line ("Results include bytes and chunks still allocated");
-                Grand_Total := Float (Pool.Current_Water_Mark);
- 
-             when Allocations_Count =>
-                Put_Line (Size'Img & " biggest number of live allocations:");
-                Put_Line ("Results include bytes and chunks still allocated");
-                Grand_Total := Float (Pool.Current_Water_Mark);
- 
-             when Sort_Total_Allocs =>
-                Put_Line (Size'Img & " biggest number of allocations:");
-                Put_Line ("Results include total bytes and chunks allocated,");
-                Put_Line ("even if no longer allocated - Deallocations are"
-                          & " ignored");
-                Grand_Total := Float (Pool.Allocated);
- 
-             when Marked_Blocks =>
-                Put_Line ("Special blocks marked by Mark_Traceback");
-                Grand_Total := 0.0;
-          end case;
- 
-          Elem := Backtrace_Htable.Get_First;
-          while Elem /= null loop
-             --  Handle only alloc elememts
-             if Elem.Kind = Alloc then
-                --  Ignore small blocks (depending on the sorting criteria) to
-                --  gain speed.
- 
-                if (Sort = Memory_Usage
-                    and then Elem.Total - Elem.Total_Frees >= 1_000)
-                  or else (Sort = Allocations_Count
-                           and then Elem.Count - Elem.Frees >= 1)
-                  or else (Sort = Sort_Total_Allocs and then Elem.Count > 1)
-                  or else (Sort = Marked_Blocks
-                           and then Elem.Total = 0)
-                then
-                   if Sort = Marked_Blocks then
-                      Grand_Total := Grand_Total + Float (Elem.Count);
-                   end if;
- 
-                   for M in Max'Range loop
-                      Bigger := Max (M) = null;
-                      if not Bigger then
-                         case Sort is
-                            when All_Reports
-                               | Memory_Usage
-                            =>
-                               Bigger :=
-                                 Max (M).Total - Max (M).Total_Frees
-                                   < Elem.Total - Elem.Total_Frees;
- 
-                            when Allocations_Count =>
-                               Bigger :=
-                                 Max (M).Count - Max (M).Frees
-                                   < Elem.Count - Elem.Frees;
- 
-                            when Marked_Blocks
-                               | Sort_Total_Allocs
-                            =>
-                               Bigger := Max (M).Count < Elem.Count;
-                         end case;
-                      end if;
- 
-                      if Bigger then
-                         Max (M + 1 .. Max'Last) := Max (M .. Max'Last - 1);
-                         Max (M) := Elem;
-                         exit;
-                      end if;
-                   end loop;
-                end if;
-             end if;
- 
-             Elem := Backtrace_Htable.Get_Next;
-          end loop;
- 
-          if Grand_Total = 0.0 then
-             Grand_Total := 1.0;
-          end if;
- 
-          for M in Max'Range loop
-             exit when Max (M) = null;
-             declare
-                type Percent is delta 0.1 range 0.0 .. 100.0;
-                Total : Byte_Count;
-                P : Percent;
-             begin
-                case Sort is
-                   when All_Reports
-                      | Allocations_Count
-                      | Memory_Usage
-                   =>
-                      Total := Max (M).Total - Max (M).Total_Frees;
- 
-                   when Sort_Total_Allocs =>
-                      Total := Max (M).Total;
- 
-                   when Marked_Blocks =>
-                      Total := Byte_Count (Max (M).Count);
-                end case;
- 
-                P := Percent (100.0 * Float (Total) / Grand_Total);
- 
-                case Sort is
-                   when Memory_Usage | Allocations_Count | All_Reports =>
-                      declare
-                         Count : constant Natural :=
-                           Max (M).Count - Max (M).Frees;
-                      begin
-                         Put (P'Img & "%:" & Total'Img & " bytes in"
-                              & Count'Img & " chunks at");
-                      end;
-                   when Sort_Total_Allocs =>
-                      Put (P'Img & "%:" & Total'Img & " bytes in"
-                           & Max (M).Count'Img & " chunks at");
-                   when Marked_Blocks =>
-                      Put (P'Img & "%:"
-                           & Max (M).Count'Img & " chunks /"
-                           & Integer (Grand_Total)'Img & " at");
-                end case;
-             end;
- 
-             for J in Max (M).Traceback'Range loop
-                Put (" " & Image_C (PC_For (Max (M).Traceback (J))));
-             end loop;
- 
-             Put_Line ("");
-          end loop;
-       end Do_Report;
- 
-    begin
-       Put_Line ("Traceback elements allocated: " & Traceback_Count'Img);
-       Put_Line ("Validity elements allocated: " & Validity_Count'Img);
-       Put_Line ("");
- 
-       Put_Line ("Ada Allocs:" & Pool.Allocated'Img
-                 & " bytes in" & Pool.Alloc_Count'Img & " chunks");
-       Put_Line ("Ada Free:" & Total_Freed'Img & " bytes in" &
-                   Pool.Free_Count'Img
-                 & " chunks");
-       Put_Line ("Ada Current watermark: "
-                 & Byte_Count'Image (Pool.Current_Water_Mark)
-                 & " in" & Byte_Count'Image (Pool.Alloc_Count -
-                     Pool.Free_Count) & " chunks");
-       Put_Line ("Ada High watermark: " & Pool.High_Water_Mark'Img);
- 
-       case Report is
-          when All_Reports =>
-             for Sort in Report_Type loop
-                if Sort /= All_Reports then
-                   Do_Report (Sort);
-                end if;
-             end loop;
- 
-          when others =>
-             Do_Report (Report);
-       end case;
-    end Dump;
- 
-    -----------------
-    -- Dump_Stdout --
-    -----------------
- 
-    procedure Dump_Stdout
-      (Pool   : Debug_Pool;
-       Size   : Positive;
-       Report : Report_Type := All_Reports)
-    is
-       procedure Internal is new Dump
-         (Put_Line => Stdout_Put_Line,
-          Put      => Stdout_Put);
- 
-    --  Start of processing for Dump_Stdout
- 
-    begin
-       Internal (Pool, Size, Report);
-    end Dump_Stdout;
- 
-    -----------
-    -- Reset --
-    -----------
- 
-    procedure Reset is
-       Elem : Traceback_Htable_Elem_Ptr;
-    begin
-       Elem := Backtrace_Htable.Get_First;
-       while Elem /= null loop
-          Elem.Count := 0;
-          Elem.Frees := 0;
-          Elem.Total := 0;
-          Elem.Total_Frees := 0;
-          Elem := Backtrace_Htable.Get_Next;
-       end loop;
-    end Reset;
- 
-    ------------------
-    -- Storage_Size --
-    ------------------
- 
-    function Storage_Size (Pool : Debug_Pool) return Storage_Count is
-       pragma Unreferenced (Pool);
-    begin
-       return Storage_Count'Last;
-    end Storage_Size;
- 
-    ---------------------
-    -- High_Water_Mark --
-    ---------------------
- 
-    function High_Water_Mark
-      (Pool : Debug_Pool) return Byte_Count is
-    begin
-       return Pool.High_Water;
-    end High_Water_Mark;
- 
-    ------------------------
-    -- Current_Water_Mark --
-    ------------------------
- 
-    function Current_Water_Mark
-      (Pool : Debug_Pool) return Byte_Count is
-    begin
-       return Pool.Allocated - Pool.Logically_Deallocated -
-         Pool.Physically_Deallocated;
-    end Current_Water_Mark;
- 
-    ------------------------------
-    -- System_Memory_Debug_Pool --
-    ------------------------------
- 
-    procedure System_Memory_Debug_Pool
-      (Has_Unhandled_Memory : Boolean := True) is
-    begin
-       System_Memory_Debug_Pool_Enabled := True;
-       Allow_Unhandled_Memory := Has_Unhandled_Memory;
-    end System_Memory_Debug_Pool;
- 
-    ---------------
-    -- Configure --
-    ---------------
- 
-    procedure Configure
-      (Pool                           : in out Debug_Pool;
-       Stack_Trace_Depth              : Natural := Default_Stack_Trace_Depth;
-       Maximum_Logically_Freed_Memory : SSC     := Default_Max_Freed;
-       Minimum_To_Free                : SSC     := Default_Min_Freed;
-       Reset_Content_On_Free          : Boolean := Default_Reset_Content;
-       Raise_Exceptions               : Boolean := Default_Raise_Exceptions;
-       Advanced_Scanning              : Boolean := Default_Advanced_Scanning;
-       Errors_To_Stdout               : Boolean := Default_Errors_To_Stdout;
-       Low_Level_Traces               : Boolean := Default_Low_Level_Traces)
-    is
-    begin
-       Pool.Stack_Trace_Depth              := Stack_Trace_Depth;
-       Pool.Maximum_Logically_Freed_Memory := Maximum_Logically_Freed_Memory;
-       Pool.Reset_Content_On_Free          := Reset_Content_On_Free;
-       Pool.Raise_Exceptions               := Raise_Exceptions;
-       Pool.Minimum_To_Free                := Minimum_To_Free;
-       Pool.Advanced_Scanning              := Advanced_Scanning;
-       Pool.Errors_To_Stdout               := Errors_To_Stdout;
-       Pool.Low_Level_Traces               := Low_Level_Traces;
-    end Configure;
- 
-    ----------------
-    -- Print_Pool --
-    ----------------
- 
-    procedure Print_Pool (A : System.Address) is
-       Storage : constant Address := A;
-       Valid   : constant Boolean := Is_Valid (Storage);
-       Header  : Allocation_Header_Access;
- 
-    begin
-       --  We might get Null_Address if the call from gdb was done
-       --  incorrectly. For instance, doing a "print_pool(my_var)" passes 0x0,
-       --  instead of passing the value of my_var
- 
-       if A = System.Null_Address then
-          Put_Line
-             (Standard_Output, "Memory not under control of the storage pool");
-          return;
-       end if;
- 
-       if not Valid then
-          Put_Line
-             (Standard_Output, "Memory not under control of the storage pool");
- 
-       else
-          Header := Header_Of (Storage);
-          Print_Address (Standard_Output, A);
-          Put_Line (Standard_Output, " allocated at:");
-          Print_Traceback (Standard_Output, "", Header.Alloc_Traceback);
- 
-          if To_Traceback (Header.Dealloc_Traceback) /= null then
-             Print_Address (Standard_Output, A);
-             Put_Line (Standard_Output,
-                       " logically freed memory, deallocated at:");
-             Print_Traceback (Standard_Output, "",
-                              To_Traceback (Header.Dealloc_Traceback));
-          end if;
-       end if;
-    end Print_Pool;
- 
-    -----------------------
-    -- Print_Info_Stdout --
-    -----------------------
- 
-    procedure Print_Info_Stdout
-      (Pool          : Debug_Pool;
-       Cumulate      : Boolean := False;
-       Display_Slots : Boolean := False;
-       Display_Leaks : Boolean := False)
-    is
- 
-       procedure Internal is new Print_Info
-         (Put_Line => Stdout_Put_Line,
-          Put      => Stdout_Put);
- 
-    --  Start of processing for Print_Info_Stdout
- 
-    begin
-       Internal (Pool, Cumulate, Display_Slots, Display_Leaks);
-    end Print_Info_Stdout;
- 
-    ------------------
-    -- Dump_Gnatmem --
-    ------------------
- 
-    procedure Dump_Gnatmem (Pool : Debug_Pool; File_Name : String) is
-       type File_Ptr is new System.Address;
- 
-       function fopen (Path : String; Mode : String) return File_Ptr;
-       pragma Import (C, fopen);
- 
-       procedure fwrite
-         (Ptr    : System.Address;
-          Size   : size_t;
-          Nmemb  : size_t;
-          Stream : File_Ptr);
- 
-       procedure fwrite
-         (Str    : String;
-          Size   : size_t;
-          Nmemb  : size_t;
-          Stream : File_Ptr);
-       pragma Import (C, fwrite);
- 
-       procedure fputc (C : Integer; Stream : File_Ptr);
-       pragma Import (C, fputc);
- 
-       procedure fclose (Stream : File_Ptr);
-       pragma Import (C, fclose);
- 
-       Address_Size : constant size_t :=
-                        System.Address'Max_Size_In_Storage_Elements;
-       --  Size in bytes of a pointer
- 
-       File        : File_Ptr;
-       Current     : System.Address;
-       Header      : Allocation_Header_Access;
-       Actual_Size : size_t;
-       Num_Calls   : Integer;
-       Tracebk     : Tracebacks_Array_Access;
-       Dummy_Time  : Duration := 1.0;
- 
-    begin
-       File := fopen (File_Name & ASCII.NUL, "wb" & ASCII.NUL);
-       fwrite ("GMEM DUMP" & ASCII.LF, 10, 1, File);
-       fwrite (Dummy_Time'Address, Duration'Max_Size_In_Storage_Elements, 1,
-               File);
- 
-       --  List of not deallocated blocks (see Print_Info)
- 
-       Current := Pool.First_Used_Block;
-       while Current /= System.Null_Address loop
-          Header := Header_Of (Current);
- 
-          Actual_Size := size_t (Header.Block_Size);
-          Tracebk := Header.Alloc_Traceback.Traceback;
- 
-          if Header.Alloc_Traceback /= null then
-             Num_Calls := Tracebk'Length;
- 
-             --  (Code taken from memtrack.adb in GNAT's sources)
- 
-             --  Logs allocation call using the format:
- 
-             --  'A' <mem addr> <size chunk> <len backtrace> <addr1> ... <addrn>
- 
-             fputc (Character'Pos ('A'), File);
-             fwrite (Current'Address, Address_Size, 1, File);
-             fwrite (Actual_Size'Address, size_t'Max_Size_In_Storage_Elements,
-                     1, File);
-             fwrite (Dummy_Time'Address, Duration'Max_Size_In_Storage_Elements,
-                     1, File);
-             fwrite (Num_Calls'Address, Integer'Max_Size_In_Storage_Elements, 1,
-                     File);
- 
-             for J in Tracebk'First .. Tracebk'First + Num_Calls - 1 loop
-                declare
-                   Ptr : System.Address := PC_For (Tracebk (J));
-                begin
-                   fwrite (Ptr'Address, Address_Size, 1, File);
-                end;
-             end loop;
- 
-          end if;
- 
-          Current := Header.Next;
-       end loop;
- 
-       fclose (File);
-    end Dump_Gnatmem;
- 
-    ----------------
-    -- Stdout_Put --
-    ----------------
- 
-    procedure Stdout_Put (S : String) is
-    begin
-       Put (Standard_Output, S);
-    end Stdout_Put;
- 
-    ---------------------
-    -- Stdout_Put_Line --
-    ---------------------
- 
-    procedure Stdout_Put_Line (S : String) is
-    begin
-       Put_Line (Standard_Output, S);
-    end Stdout_Put_Line;
- 
- --  Package initialization
- 
- begin
-    Allocate_End;
-    Deallocate_End;
-    Dereference_End;
- end GNAT.Debug_Pools;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-debpoo.ads gcc-8.1.0/gcc/ada/g-debpoo.ads
*** gcc-7.3.0/gcc/ada/g-debpoo.ads	Tue Oct 20 11:59:47 2015
--- gcc-8.1.0/gcc/ada/g-debpoo.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,409 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                       G N A T . D E B U G _ P O O L S                    --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 packages provides a special implementation of the Ada 95 storage pools
- 
- --  The goal of this debug pool is to detect incorrect uses of memory
- --  (multiple deallocations, access to invalid memory,...). Errors are reported
- --  in one of two ways: either by immediately raising an exception, or by
- --  printing a message on standard output or standard error.
- 
- --  You need to instrument your code to use this package: for each access type
- --  you want to monitor, you need to add a clause similar to:
- 
- --      type Integer_Access is access Integer;
- --      for Integer_Access'Storage_Pool use Pool;
- 
- --  where Pool is a tagged object declared with
- --
- --      Pool : GNAT.Debug_Pools.Debug_Pool;
- 
- --  This package was designed to be as efficient as possible, but still has an
- --  impact on the performance of your code, which depends on the number of
- --  allocations, deallocations and, somewhat less, dereferences that your
- --  application performs.
- 
- --  For each faulty memory use, this debug pool will print several lines
- --  of information, including things like the location where the memory
- --  was initially allocated, the location where it was freed etc.
- 
- --  Physical allocations and deallocations are done through the usual system
- --  calls. However, in order to provide proper checks, the debug pool will not
- --  release the memory immediately. It keeps released memory around (the amount
- --  kept around is configurable) so that it can distinguish between memory that
- --  has not been allocated and memory that has been allocated but freed. This
- --  also means that this memory cannot be reallocated, preventing what would
- --  otherwise be a false indication that freed memory is now allocated.
- 
- --  In addition, this package presents several subprograms that help analyze
- --  the behavior of your program, by reporting memory leaks, the total amount
- --  of memory that was allocated. The pool is also designed to work correctly
- --  in conjunction with gnatmem.
- 
- --  Finally, a subprogram Print_Pool is provided for use from the debugger
- 
- --  Limitations
- --  ===========
- 
- --  Current limitation of this debug pool: if you use this debug pool for a
- --  general access type ("access all"), the pool might report invalid
- --  dereferences if the access object is pointing to another object on the
- --  stack which was not allocated through a call to "new".
- 
- --  This debug pool will respect all alignments specified in your code, but
- --  it does that by aligning all objects using Standard'Maximum_Alignment.
- --  This allows faster checks, and limits the performance impact of using
- --  this pool.
- 
- with System;                  use System;
- with System.Storage_Elements; use System.Storage_Elements;
- with System.Checked_Pools;
- 
- package GNAT.Debug_Pools is
- 
-    type Debug_Pool is new System.Checked_Pools.Checked_Pool with private;
-    --  The new debug pool
- 
-    subtype SSC is System.Storage_Elements.Storage_Count;
- 
-    Default_Max_Freed         : constant SSC     := 50_000_000;
-    Default_Stack_Trace_Depth : constant Natural := 20;
-    Default_Reset_Content     : constant Boolean := False;
-    Default_Raise_Exceptions  : constant Boolean := True;
-    Default_Advanced_Scanning : constant Boolean := False;
-    Default_Min_Freed         : constant SSC     := 0;
-    Default_Errors_To_Stdout  : constant Boolean := True;
-    Default_Low_Level_Traces  : constant Boolean := False;
-    --  The above values are constants used for the parameters to Configure
-    --  if not overridden in the call. See description of Configure for full
-    --  details on these parameters. If these defaults are not satisfactory,
-    --  then you need to call Configure to change the default values.
- 
-    procedure Configure
-      (Pool                           : in out Debug_Pool;
-       Stack_Trace_Depth              : Natural := Default_Stack_Trace_Depth;
-       Maximum_Logically_Freed_Memory : SSC     := Default_Max_Freed;
-       Minimum_To_Free                : SSC     := Default_Min_Freed;
-       Reset_Content_On_Free          : Boolean := Default_Reset_Content;
-       Raise_Exceptions               : Boolean := Default_Raise_Exceptions;
-       Advanced_Scanning              : Boolean := Default_Advanced_Scanning;
-       Errors_To_Stdout               : Boolean := Default_Errors_To_Stdout;
-       Low_Level_Traces               : Boolean := Default_Low_Level_Traces);
-    --  Subprogram used to configure the debug pool.
-    --
-    --    Stack_Trace_Depth. This parameter controls the maximum depth of stack
-    --    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.
-    --    This value should be non-zero, since having memory that is logically
-    --    but not physically freed helps to detect invalid memory accesses.
-    --
-    --    Minimum_To_Free is the minimum amount of memory that should be freed
-    --    every time the pool starts physically releasing memory. The algorithm
-    --    to compute which block should be physically released needs some
-    --    expensive initialization (see Advanced_Scanning below), and this
-    --    parameter can be used to limit the performance impact by ensuring
-    --    that a reasonable amount of memory is freed each time. Even in the
-    --    advanced scanning mode, marked blocks may be released to match this
-    --    Minimum_To_Free parameter.
-    --
-    --    Reset_Content_On_Free: If true, then the contents of the freed memory
-    --    is reset to the pattern 16#DEADBEEF#, following an old IBM convention.
-    --    This helps in detecting invalid memory references from the debugger.
-    --
-    --    Raise_Exceptions: If true, the exceptions below will be raised every
-    --    time an error is detected. If you set this to False, then the action
-    --    is to generate output on standard error or standard output, depending
-    --    on Errors_To_Stdout, noting the errors, but to
-    --    keep running if possible (of course if storage is badly damaged, this
-    --    attempt may fail. This helps to detect more than one error in a run.
-    --
-    --    Advanced_Scanning: If true, the pool will check the contents of all
-    --    allocated blocks before physically releasing memory. Any possible
-    --    reference to a logically free block will prevent its deallocation.
-    --    Note that this algorithm is approximate, and it is recommended
-    --    that you set Minimum_To_Free to a non-zero value to save time.
-    --
-    --    Errors_To_Stdout: Errors messages will be displayed on stdout if
-    --    this parameter is True, or to stderr otherwise.
-    --
-    --    Low_Level_Traces: Traces all allocation and deallocations on the
-    --    stream specified by Errors_To_Stdout. This can be used for
-    --    post-processing by your own application, or to debug the
-    --    debug_pool itself. The output indicates the size of the allocated
-    --    block both as requested by the application and as physically
-    --    allocated to fit the additional information needed by the debug
-    --    pool.
-    --
-    --  All instantiations of this pool use the same internal tables. However,
-    --  they do not store the same amount of information for the tracebacks,
-    --  and they have different counters for maximum logically freed memory.
- 
-    Accessing_Not_Allocated_Storage : exception;
-    --  Exception raised if Raise_Exception is True, and an attempt is made
-    --  to access storage that was never allocated.
- 
-    Accessing_Deallocated_Storage : exception;
-    --  Exception raised if Raise_Exception is True, and an attempt is made
-    --  to access storage that was allocated but has been deallocated.
- 
-    Freeing_Not_Allocated_Storage : exception;
-    --  Exception raised if Raise_Exception is True, and an attempt is made
-    --  to free storage that had not been previously allocated.
- 
-    Freeing_Deallocated_Storage : exception;
-    --  Exception raised if Raise_Exception is True, and an attempt is made
-    --  to free storage that had already been freed.
- 
-    --  Note on the above exceptions. The distinction between not allocated
-    --  and deallocated storage is not guaranteed to be accurate in the case
-    --  where storage is allocated, and then physically freed. Larger values
-    --  of the parameter Maximum_Logically_Freed_Memory will help to guarantee
-    --  that this distinction is made more accurately.
- 
-    generic
-       with procedure Put_Line (S : String) is <>;
-       with procedure Put      (S : String) is <>;
-    procedure Print_Info
-      (Pool          : Debug_Pool;
-       Cumulate      : Boolean := False;
-       Display_Slots : Boolean := False;
-       Display_Leaks : Boolean := False);
-    --  Print out information about the High Water Mark, the current and
-    --  total number of bytes allocated and the total number of bytes
-    --  deallocated.
-    --
-    --  If Display_Slots is true, this subprogram prints a list of all the
-    --  locations in the application that have done at least one allocation or
-    --  deallocation. The result might be used to detect places in the program
-    --  where lots of allocations are taking place. This output is not in any
-    --  defined order.
-    --
-    --  If Cumulate if True, then each stack trace will display the number of
-    --  allocations that were done either directly, or by the subprograms called
-    --  at that location (e.g: if there were two physical allocations at a->b->c
-    --  and a->b->d, then a->b would be reported as performing two allocations).
-    --
-    --  If Display_Leaks is true, then each block that has not been deallocated
-    --  (often called a "memory leak") will be listed, along with the traceback
-    --  showing where it was allocated. Not that no grouping of the blocks is
-    --  done, you should use the Dump_Gnatmem procedure below in conjunction
-    --  with the gnatmem utility.
- 
-    procedure Print_Info_Stdout
-      (Pool          : Debug_Pool;
-       Cumulate      : Boolean := False;
-       Display_Slots : Boolean := False;
-       Display_Leaks : Boolean := False);
-    --  Standard instantiation of Print_Info to print on standard_output. More
-    --  convenient to use where this is the intended location, and in particular
-    --  easier to use from the debugger.
- 
-    procedure Dump_Gnatmem (Pool : Debug_Pool; File_Name : String);
-    --  Create an external file on the disk, which can be processed by gnatmem
-    --  to display the location of memory leaks.
-    --
-    --  This provides a nicer output that Print_Info above, and groups similar
-    --  stack traces together. This also provides an easy way to save the memory
-    --  status of your program for post-mortem analysis.
-    --
-    --  To use this file, use the following command line:
-    --     gnatmem 5 -i <File_Name> <Executable_Name>
-    --  If you want all the stack traces to be displayed with 5 levels.
- 
-    procedure Print_Pool (A : System.Address);
-    pragma Export (C, Print_Pool, "print_pool");
-    --  This subprogram is meant to be used from a debugger. Given an address in
-    --  memory, it will print on standard output the known information about
-    --  this address (provided, of course, the matching pointer is handled by
-    --  the Debug_Pool).
-    --
-    --  The information includes the stacktrace for the allocation or
-    --  deallocation of that memory chunk, its current status (allocated or
-    --  logically freed), etc.
- 
-    type Report_Type is
-      (All_Reports,
-       Memory_Usage,
-       Allocations_Count,
-       Sort_Total_Allocs,
-       Marked_Blocks);
-    for Report_Type use
-      (All_Reports       => 0,
-       Memory_Usage      => 1,
-       Allocations_Count => 2,
-       Sort_Total_Allocs => 3,
-       Marked_Blocks     => 4);
- 
-    generic
-       with procedure Put_Line (S : String) is <>;
-       with procedure Put      (S : String) is <>;
-    procedure Dump
-      (Pool   : Debug_Pool;
-       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;
-       Size   : Positive;
-       Report : Report_Type := All_Reports);
-    --  Standard instantiation of Dump to print on standard_output. More
-    --  convenient to use where this is the intended location, and in particular
-    --  easier to use from the debugger.
- 
-    procedure Reset;
-    --  Reset all internal data. This is in general not needed, unless you want
-    --  to know what memory is used by specific parts of your application
- 
-    procedure Get_Size
-      (Storage_Address          : Address;
-       Size_In_Storage_Elements : out Storage_Count;
-       Valid                    : out Boolean);
-    --  Set Valid if Storage_Address is the address of a chunk of memory
-    --  currently allocated by any pool.
-    --  If Valid is True, Size_In_Storage_Elements is set to the size of this
-    --  chunk of memory.
- 
-    type Byte_Count is mod System.Max_Binary_Modulus;
-    --  Type used for maintaining byte counts, needs to be large enough to
-    --  to accommodate counts allowing for repeated use of the same memory.
- 
-    function High_Water_Mark
-      (Pool : Debug_Pool) return Byte_Count;
-    --  Return the highest size of the memory allocated by the pool.
-    --  Memory used internally by the pool is not taken into account.
- 
-    function Current_Water_Mark
-      (Pool : Debug_Pool) return Byte_Count;
-    --  Return the size of the memory currently allocated by the pool.
-    --  Memory used internally by the pool is not taken into account.
- 
-    procedure System_Memory_Debug_Pool
-      (Has_Unhandled_Memory : Boolean := True);
-    --  Let the package know the System.Memory is using it.
-    --  If Has_Unhandled_Memory is true, some deallocation can be done for
-    --  memory not allocated with Allocate.
- 
- private
-    --  The following are the standard primitive subprograms for a pool
- 
-    procedure Allocate
-      (Pool                     : in out Debug_Pool;
-       Storage_Address          : out Address;
-       Size_In_Storage_Elements : Storage_Count;
-       Alignment                : Storage_Count);
-    --  Allocate a new chunk of memory, and set it up so that the debug pool
-    --  can check accesses to its data, and report incorrect access later on.
-    --  The parameters have the same semantics as defined in the ARM95.
- 
-    procedure Deallocate
-      (Pool                     : in out Debug_Pool;
-       Storage_Address          : Address;
-       Size_In_Storage_Elements : Storage_Count;
-       Alignment                : Storage_Count);
-    --  Mark a block of memory as invalid. It might not be physically removed
-    --  immediately, depending on the setup of the debug pool, so that checks
-    --  are still possible. The parameters have the same semantics as defined
-    --  in the RM.
- 
-    function Storage_Size (Pool : Debug_Pool) return SSC;
-    --  Return the maximal size of data that can be allocated through Pool.
-    --  Since Pool uses the malloc() system call, all the memory is accessible
-    --  through the pool
- 
-    procedure Dereference
-      (Pool                     : in out Debug_Pool;
-       Storage_Address          : System.Address;
-       Size_In_Storage_Elements : Storage_Count;
-       Alignment                : Storage_Count);
-    --  Check whether a dereference statement is valid, i.e. whether the pointer
-    --  was allocated through Pool. As documented above, errors will be
-    --  reported either by a special error message or an exception, depending
-    --  on the setup of the storage pool.
-    --  The parameters have the same semantics as defined in the ARM95.
- 
-    type Debug_Pool is new System.Checked_Pools.Checked_Pool with record
-       Stack_Trace_Depth              : Natural := Default_Stack_Trace_Depth;
-       Maximum_Logically_Freed_Memory : SSC     := Default_Max_Freed;
-       Reset_Content_On_Free          : Boolean := Default_Reset_Content;
-       Raise_Exceptions               : Boolean := Default_Raise_Exceptions;
-       Minimum_To_Free                : SSC     := Default_Min_Freed;
-       Advanced_Scanning              : Boolean := Default_Advanced_Scanning;
-       Errors_To_Stdout               : Boolean := Default_Errors_To_Stdout;
-       Low_Level_Traces               : Boolean := Default_Low_Level_Traces;
- 
-       Alloc_Count    : Byte_Count := 0;
-       --  Total number of allocation
- 
-       Free_Count     : Byte_Count := 0;
-       --  Total number of deallocation
- 
-       Allocated : Byte_Count := 0;
-       --  Total number of bytes allocated in this pool
- 
-       Logically_Deallocated : Byte_Count := 0;
-       --  Total number of bytes logically deallocated in this pool. This is the
-       --  memory that the application has released, but that the pool has not
-       --  yet physically released through a call to free(), to detect later
-       --  accessed to deallocated memory.
- 
-       Physically_Deallocated : Byte_Count := 0;
-       --  Total number of bytes that were free()-ed
- 
-       Marked_Blocks_Deallocated : Boolean := False;
-       --  Set to true if some mark blocks had to be deallocated in the advanced
-       --  scanning scheme. Since this is potentially dangerous, this is
-       --  reported to the user, who might want to rerun his program with a
-       --  lower Minimum_To_Free value.
- 
-       High_Water : Byte_Count := 0;
-       --  Maximum of Allocated - Logically_Deallocated - Physically_Deallocated
- 
-       First_Free_Block : System.Address := System.Null_Address;
-       Last_Free_Block  : System.Address := System.Null_Address;
-       --  Pointers to the first and last logically freed blocks
- 
-       First_Used_Block : System.Address := System.Null_Address;
-       --  Pointer to the list of currently allocated blocks. This list is
-       --  used to list the memory leaks in the application on exit, as well as
-       --  for the advanced freeing algorithms that needs to traverse all these
-       --  blocks to find possible references to the block being physically
-       --  freed.
- 
-    end record;
- end GNAT.Debug_Pools;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-debuti.adb gcc-8.1.0/gcc/ada/g-debuti.adb
*** gcc-7.3.0/gcc/ada/g-debuti.adb	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-debuti.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,188 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                 G N A T . D E B U G _ U T I L I T I E S                  --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 1997-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 System;                  use System;
- with System.Storage_Elements; use System.Storage_Elements;
- 
- package body GNAT.Debug_Utilities is
- 
-    H : constant array (0 .. 15) of Character := "0123456789ABCDEF";
-    --  Table of hex digits
- 
-    -----------
-    -- Image --
-    -----------
- 
-    --  Address case
- 
-    function Image (A : Address) return Image_String is
-       S : Image_String;
-       P : Natural;
-       N : Integer_Address;
-       U : Natural := 0;
- 
-    begin
-       S (S'Last) := '#';
-       P := Address_Image_Length - 1;
-       N := To_Integer (A);
-       while P > 3 loop
-          if U = 4 then
-             S (P) := '_';
-             P := P - 1;
-             U := 1;
- 
-          else
-             U := U + 1;
-          end if;
- 
-          S (P) := H (Integer (N mod 16));
-          P := P - 1;
-          N := N / 16;
-       end loop;
- 
-       S (1 .. 3) := "16#";
-       return S;
-    end Image;
- 
-    -----------
-    -- Image --
-    -----------
- 
-    --  String case
- 
-    function Image (S : String) return String is
-       W : String (1 .. 2 * S'Length + 2);
-       P : Positive := 1;
- 
-    begin
-       W (1) := '"';
- 
-       for J in S'Range loop
-          if S (J) = '"' then
-             P := P + 1;
-             W (P) := '"';
-          end if;
- 
-          P := P + 1;
-          W (P) := S (J);
-       end loop;
- 
-       P := P + 1;
-       W (P) := '"';
-       return W (1 .. P);
-    end Image;
- 
-    -------------
-    -- Image_C --
-    -------------
- 
-    function Image_C (A : Address) return Image_C_String is
-       S : Image_C_String;
-       N : Integer_Address := To_Integer (A);
- 
-    begin
-       for P in reverse 3 .. S'Last loop
-          S (P) := H (Integer (N mod 16));
-          N := N / 16;
-       end loop;
- 
-       S (1 .. 2) := "0x";
-       return S;
-    end Image_C;
- 
-    -----------
-    -- Value --
-    -----------
- 
-    function Value (S : String) return System.Address is
-       Base : Integer_Address := 10;
-       Res  : Integer_Address := 0;
-       Last : Natural := S'Last;
-       C    : Character;
-       N    : Integer_Address;
- 
-    begin
-       --  Skip final Ada 95 base character
- 
-       if S (Last) = '#' or else S (Last) = ':' then
-          Last := Last - 1;
-       end if;
- 
-       --  Loop through characters
- 
-       for J in S'First .. Last loop
-          C := S (J);
- 
-          --  C format hex constant
- 
-          if C = 'x' then
-             if Res /= 0 then
-                raise Constraint_Error;
-             end if;
- 
-             Base := 16;
- 
-          --  Ada form based literal
- 
-          elsif C = '#' or else C = ':' then
-             Base := Res;
-             Res  := 0;
- 
-          --  Ignore all underlines
- 
-          elsif C = '_' then
-             null;
- 
-          --  Otherwise must have digit
- 
-          else
-             if C in '0' .. '9' then
-                N := Character'Pos (C) - Character'Pos ('0');
-             elsif C in 'A' .. 'F' then
-                N := Character'Pos (C) - (Character'Pos ('A') - 10);
-             elsif C in 'a' .. 'f' then
-                N := Character'Pos (C) - (Character'Pos ('a') - 10);
-             else
-                raise Constraint_Error;
-             end if;
- 
-             if N >= Base then
-                raise Constraint_Error;
-             else
-                Res := Res * Base + N;
-             end if;
-          end if;
-       end loop;
- 
-       return To_Address (Res);
-    end Value;
- 
- end GNAT.Debug_Utilities;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-debuti.ads gcc-8.1.0/gcc/ada/g-debuti.ads
*** gcc-7.3.0/gcc/ada/g-debuti.ads	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-debuti.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,81 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                 G N A T . D E B U G _ U T I L I T I E S                  --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 1995-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Debugging utilities
- 
- --  This package provides some useful utility subprograms for use in writing
- --  routines that generate debugging output.
- 
- with System;
- 
- package GNAT.Debug_Utilities is
-    pragma Pure;
- 
-    Address_64 : constant Boolean := Standard'Address_Size = 64;
-    --  Set true if 64 bit addresses (assumes only 32 and 64 are possible)
- 
-    Address_Image_Length : constant := 13 + 10 * Boolean'Pos (Address_64);
-    --  Length of string returned by Image function for an address
- 
-    subtype Image_String is String (1 .. Address_Image_Length);
-    --  Subtype returned by Image function for an address
- 
-    Address_Image_C_Length : constant := 10 + 8 * Boolean'Pos (Address_64);
-    --  Length of string returned by Image_C function
- 
-    subtype Image_C_String is String (1 .. Address_Image_C_Length);
-    --  Subtype returned by Image_C function
- 
-    function Image (S : String) return String;
-    --  Returns a string image of S, obtained by prepending and appending
-    --  quote (") characters and doubling any quote characters in the string.
-    --  The maximum length of the result is thus 2 ** S'Length + 2.
- 
-    function Image (A : System.Address) return Image_String;
-    --  Returns a string of the form 16#hhhh_hhhh# for 32-bit addresses
-    --  or 16#hhhh_hhhh_hhhh_hhhh# for 64-bit addresses. Hex characters
-    --  are in upper case.
- 
-    function Image_C (A : System.Address) return Image_C_String;
-    --  Returns a string of the form 0xhhhhhhhh for 32 bit addresses or
-    --  0xhhhhhhhhhhhhhhhh for 64-bit addresses. Hex characters are in
-    --  upper case.
- 
-    function Value (S : String) return System.Address;
-    --  Given a valid integer literal in any form, including the form returned
-    --  by the Image function in this package, yields the corresponding address.
-    --  Note that this routine will handle any Ada integer format, and will
-    --  also handle hex constants in C format (0xhh..hhh). Constraint_Error
-    --  may be raised for obviously incorrect data, but the routine is fairly
-    --  permissive, and in particular, all underscores in whatever position
-    --  are simply ignored completely.
- 
- end GNAT.Debug_Utilities;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-decstr.adb gcc-8.1.0/gcc/ada/g-decstr.adb
*** gcc-7.3.0/gcc/ada/g-decstr.adb	Wed Jul 30 12:50:43 2014
--- gcc-8.1.0/gcc/ada/g-decstr.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,796 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                    G N A T . D E C O D E _ S T R I N G                   --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 2007-2014, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 a utility routine for converting from an encoded
- --  string to a corresponding Wide_String or Wide_Wide_String value.
- 
- with Interfaces; use Interfaces;
- 
- with System.WCh_Cnv; use System.WCh_Cnv;
- with System.WCh_Con; use System.WCh_Con;
- 
- package body GNAT.Decode_String is
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    procedure Bad;
-    pragma No_Return (Bad);
-    --  Raise error for bad encoding
- 
-    procedure Past_End;
-    pragma No_Return (Past_End);
-    --  Raise error for off end of string
- 
-    ---------
-    -- Bad --
-    ---------
- 
-    procedure Bad is
-    begin
-       raise Constraint_Error with
-         "bad encoding or character out of range";
-    end Bad;
- 
-    ---------------------------
-    -- Decode_Wide_Character --
-    ---------------------------
- 
-    procedure Decode_Wide_Character
-      (Input  : String;
-       Ptr    : in out Natural;
-       Result : out Wide_Character)
-    is
-       Char : Wide_Wide_Character;
-    begin
-       Decode_Wide_Wide_Character (Input, Ptr, Char);
- 
-       if Wide_Wide_Character'Pos (Char) > 16#FFFF# then
-          Bad;
-       else
-          Result := Wide_Character'Val (Wide_Wide_Character'Pos (Char));
-       end if;
-    end Decode_Wide_Character;
- 
-    ------------------------
-    -- Decode_Wide_String --
-    ------------------------
- 
-    function Decode_Wide_String (S : String) return Wide_String is
-       Result : Wide_String (1 .. S'Length);
-       Length : Natural;
-    begin
-       Decode_Wide_String (S, Result, Length);
-       return Result (1 .. Length);
-    end Decode_Wide_String;
- 
-    procedure Decode_Wide_String
-      (S      : String;
-       Result : out Wide_String;
-       Length : out Natural)
-    is
-       Ptr : Natural;
- 
-    begin
-       Ptr := S'First;
-       Length := 0;
-       while Ptr <= S'Last loop
-          if Length >= Result'Last then
-             Past_End;
-          end if;
- 
-          Length := Length + 1;
-          Decode_Wide_Character (S, Ptr, Result (Length));
-       end loop;
-    end Decode_Wide_String;
- 
-    --------------------------------
-    -- Decode_Wide_Wide_Character --
-    --------------------------------
- 
-    procedure Decode_Wide_Wide_Character
-      (Input  : String;
-       Ptr    : in out Natural;
-       Result : out Wide_Wide_Character)
-    is
-       C : Character;
- 
-       function In_Char return Character;
-       pragma Inline (In_Char);
-       --  Function to get one input character
- 
-       -------------
-       -- In_Char --
-       -------------
- 
-       function In_Char return Character is
-       begin
-          if Ptr <= Input'Last then
-             Ptr := Ptr + 1;
-             return Input (Ptr - 1);
-          else
-             Past_End;
-          end if;
-       end In_Char;
- 
-    --  Start of processing for Decode_Wide_Wide_Character
- 
-    begin
-       C := In_Char;
- 
-       --  Special fast processing for UTF-8 case
- 
-       if Encoding_Method = WCEM_UTF8 then
-          UTF8 : declare
-             U : Unsigned_32;
-             W : Unsigned_32;
- 
-             procedure Get_UTF_Byte;
-             pragma Inline (Get_UTF_Byte);
-             --  Used to interpret 2#10xxxxxx# continuation byte in UTF-8 mode.
-             --  Reads a byte, and raises CE if the first two bits are not 10.
-             --  Otherwise shifts W 6 bits left and or's in the 6 xxxxxx bits.
- 
-             ------------------
-             -- Get_UTF_Byte --
-             ------------------
- 
-             procedure Get_UTF_Byte is
-             begin
-                U := Unsigned_32 (Character'Pos (In_Char));
- 
-                if (U and 2#11000000#) /= 2#10_000000# then
-                   Bad;
-                end if;
- 
-                W := Shift_Left (W, 6) or (U and 2#00111111#);
-             end Get_UTF_Byte;
- 
-          --  Start of processing for UTF8 case
- 
-          begin
-             --  Note: for details of UTF8 encoding see RFC 3629
- 
-             U := Unsigned_32 (Character'Pos (C));
- 
-             --  16#00_0000#-16#00_007F#: 0xxxxxxx
- 
-             if (U and 2#10000000#) = 2#00000000# then
-                Result := Wide_Wide_Character'Val (Character'Pos (C));
- 
-             --  16#00_0080#-16#00_07FF#: 110xxxxx 10xxxxxx
- 
-             elsif (U and 2#11100000#) = 2#110_00000# then
-                W := U and 2#00011111#;
-                Get_UTF_Byte;
- 
-                if W not in 16#00_0080# .. 16#00_07FF# then
-                   Bad;
-                end if;
- 
-                Result := Wide_Wide_Character'Val (W);
- 
-             --  16#00_0800#-16#00_ffff#: 1110xxxx 10xxxxxx 10xxxxxx
- 
-             elsif (U and 2#11110000#) = 2#1110_0000# then
-                W := U and 2#00001111#;
-                Get_UTF_Byte;
-                Get_UTF_Byte;
- 
-                if W not in 16#00_0800# .. 16#00_FFFF# then
-                   Bad;
-                end if;
- 
-                Result := Wide_Wide_Character'Val (W);
- 
-             --  16#01_0000#-16#10_FFFF#: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
- 
-             elsif (U and 2#11111000#) = 2#11110_000# then
-                W := U and 2#00000111#;
- 
-                for K in 1 .. 3 loop
-                   Get_UTF_Byte;
-                end loop;
- 
-                if W not in 16#01_0000# .. 16#10_FFFF# then
-                   Bad;
-                end if;
- 
-                Result := Wide_Wide_Character'Val (W);
- 
-             --  16#0020_0000#-16#03FF_FFFF#: 111110xx 10xxxxxx 10xxxxxx
-             --                               10xxxxxx 10xxxxxx
- 
-             elsif (U and 2#11111100#) = 2#111110_00# then
-                W := U and 2#00000011#;
- 
-                for K in 1 .. 4 loop
-                   Get_UTF_Byte;
-                end loop;
- 
-                if W not in 16#0020_0000# .. 16#03FF_FFFF# then
-                   Bad;
-                end if;
- 
-                Result := Wide_Wide_Character'Val (W);
- 
-             --  All other cases are invalid, note that this includes:
- 
-             --  16#0400_0000#-16#7FFF_FFFF#: 1111110x 10xxxxxx 10xxxxxx
-             --                               10xxxxxx 10xxxxxx 10xxxxxx
- 
-             --  since Wide_Wide_Character does not include code values
-             --  greater than 16#03FF_FFFF#.
- 
-             else
-                Bad;
-             end if;
-          end UTF8;
- 
-       --  All encoding functions other than UTF-8
- 
-       else
-          Non_UTF8 : declare
-             function Char_Sequence_To_UTF is
-               new Char_Sequence_To_UTF_32 (In_Char);
- 
-          begin
-             --  For brackets, must test for specific case of [ not followed by
-             --  quotation, where we must not call Char_Sequence_To_UTF, but
-             --  instead just return the bracket unchanged.
- 
-             if Encoding_Method = WCEM_Brackets
-               and then C = '['
-               and then (Ptr > Input'Last or else Input (Ptr) /= '"')
-             then
-                Result := '[';
- 
-             --  All other cases including [" with Brackets
- 
-             else
-                Result :=
-                  Wide_Wide_Character'Val
-                    (Char_Sequence_To_UTF (C, Encoding_Method));
-             end if;
-          end Non_UTF8;
-       end if;
-    end Decode_Wide_Wide_Character;
- 
-    -----------------------------
-    -- Decode_Wide_Wide_String --
-    -----------------------------
- 
-    function Decode_Wide_Wide_String (S : String) return Wide_Wide_String is
-       Result : Wide_Wide_String (1 .. S'Length);
-       Length : Natural;
-    begin
-       Decode_Wide_Wide_String (S, Result, Length);
-       return Result (1 .. Length);
-    end Decode_Wide_Wide_String;
- 
-    procedure Decode_Wide_Wide_String
-      (S      : String;
-       Result : out Wide_Wide_String;
-       Length : out Natural)
-    is
-       Ptr : Natural;
- 
-    begin
-       Ptr := S'First;
-       Length := 0;
-       while Ptr <= S'Last loop
-          if Length >= Result'Last then
-             Past_End;
-          end if;
- 
-          Length := Length + 1;
-          Decode_Wide_Wide_Character (S, Ptr, Result (Length));
-       end loop;
-    end Decode_Wide_Wide_String;
- 
-    -------------------------
-    -- Next_Wide_Character --
-    -------------------------
- 
-    procedure Next_Wide_Character (Input : String; Ptr : in out Natural) is
-       Discard : Wide_Character;
-    begin
-       Decode_Wide_Character (Input, Ptr, Discard);
-    end Next_Wide_Character;
- 
-    ------------------------------
-    -- Next_Wide_Wide_Character --
-    ------------------------------
- 
-    procedure Next_Wide_Wide_Character (Input : String; Ptr : in out Natural) is
-       Discard : Wide_Wide_Character;
-    begin
-       Decode_Wide_Wide_Character (Input, Ptr, Discard);
-    end Next_Wide_Wide_Character;
- 
-    --------------
-    -- Past_End --
-    --------------
- 
-    procedure Past_End is
-    begin
-       raise Constraint_Error with "past end of string";
-    end Past_End;
- 
-    -------------------------
-    -- Prev_Wide_Character --
-    -------------------------
- 
-    procedure Prev_Wide_Character (Input : String; Ptr : in out Natural) is
-    begin
-       if Ptr > Input'Last + 1 then
-          Past_End;
-       end if;
- 
-       --  Special efficient encoding for UTF-8 case
- 
-       if Encoding_Method = WCEM_UTF8 then
-          UTF8 : declare
-             U : Unsigned_32;
- 
-             procedure Getc;
-             pragma Inline (Getc);
-             --  Gets the character at Input (Ptr - 1) and returns code in U as
-             --  Unsigned_32 value. On return Ptr is decremented by one.
- 
-             procedure Skip_UTF_Byte;
-             pragma Inline (Skip_UTF_Byte);
-             --  Checks that U is 2#10xxxxxx# and then calls Get
- 
-             ----------
-             -- Getc --
-             ----------
- 
-             procedure Getc is
-             begin
-                if Ptr <= Input'First then
-                   Past_End;
-                else
-                   Ptr := Ptr - 1;
-                   U := Unsigned_32 (Character'Pos (Input (Ptr)));
-                end if;
-             end Getc;
- 
-             -------------------
-             -- Skip_UTF_Byte --
-             -------------------
- 
-             procedure Skip_UTF_Byte is
-             begin
-                if (U and 2#11000000#) = 2#10_000000# then
-                   Getc;
-                else
-                   Bad;
-                end if;
-             end Skip_UTF_Byte;
- 
-          --  Start of processing for UTF-8 case
- 
-          begin
-             --  16#00_0000#-16#00_007F#: 0xxxxxxx
- 
-             Getc;
- 
-             if (U and 2#10000000#) = 2#00000000# then
-                return;
- 
-             --  16#00_0080#-16#00_07FF#: 110xxxxx 10xxxxxx
- 
-             else
-                Skip_UTF_Byte;
- 
-                if (U and 2#11100000#) = 2#110_00000# then
-                   return;
- 
-                --  16#00_0800#-16#00_ffff#: 1110xxxx 10xxxxxx 10xxxxxx
- 
-                else
-                   Skip_UTF_Byte;
- 
-                   if (U and 2#11110000#) = 2#1110_0000# then
-                      return;
- 
-                      --  Any other code is invalid, note that this includes:
- 
-                      --  16#01_0000#-16#10_FFFF#: 11110xxx 10xxxxxx 10xxxxxx
-                      --                           10xxxxxx
- 
-                      --  16#0020_0000#-16#03FF_FFFF#: 111110xx 10xxxxxx
-                      --                               10xxxxxx 10xxxxxx
-                      --                               10xxxxxx
- 
-                      --  16#0400_0000#-16#7FFF_FFFF#: 1111110x 10xxxxxx
-                      --                               10xxxxxx 10xxxxxx
-                      --                               10xxxxxx 10xxxxxx
- 
-                      --  since Wide_Character does not allow codes > 16#FFFF#
- 
-                   else
-                      Bad;
-                   end if;
-                end if;
-             end if;
-          end UTF8;
- 
-       --  Special efficient encoding for brackets case
- 
-       elsif Encoding_Method = WCEM_Brackets then
-          Brackets : declare
-             P : Natural;
-             S : Natural;
- 
-          begin
-             --  See if we have "] at end positions
- 
-             if Ptr > Input'First + 1
-               and then Input (Ptr - 1) = ']'
-               and then Input (Ptr - 2) = '"'
-             then
-                P := Ptr - 2;
- 
-                --  Loop back looking for [" at start
- 
-                while P >= Ptr - 10 loop
-                   if P <= Input'First + 1 then
-                      Bad;
- 
-                   elsif Input (P - 1) = '"'
-                     and then Input (P - 2) = '['
-                   then
-                      --  Found ["..."], scan forward to check it
- 
-                      S := P - 2;
-                      P := S;
-                      Next_Wide_Character (Input, P);
- 
-                      --  OK if at original pointer, else error
- 
-                      if P = Ptr then
-                         Ptr := S;
-                         return;
-                      else
-                         Bad;
-                      end if;
-                   end if;
- 
-                   P := P - 1;
-                end loop;
- 
-                --  Falling through loop means more than 8 chars between the
-                --  enclosing brackets (or simply a missing left bracket)
- 
-                Bad;
- 
-             --  Here if no bracket sequence present
- 
-             else
-                if Ptr = Input'First then
-                   Past_End;
-                else
-                   Ptr := Ptr - 1;
-                end if;
-             end if;
-          end Brackets;
- 
-       --  Non-UTF-8/Brackets. These are the inefficient cases where we have to
-       --  go to the start of the string and skip forwards till Ptr matches.
- 
-       else
-          Non_UTF_Brackets : declare
-             Discard : Wide_Character;
-             PtrS    : Natural;
-             PtrP    : Natural;
- 
-          begin
-             PtrS := Input'First;
- 
-             if Ptr <= PtrS then
-                Past_End;
-             end if;
- 
-             loop
-                PtrP := PtrS;
-                Decode_Wide_Character (Input, PtrS, Discard);
- 
-                if PtrS = Ptr then
-                   Ptr := PtrP;
-                   return;
- 
-                elsif PtrS > Ptr then
-                   Bad;
-                end if;
-             end loop;
- 
-          exception
-             when Constraint_Error =>
-                Bad;
-          end Non_UTF_Brackets;
-       end if;
-    end Prev_Wide_Character;
- 
-    ------------------------------
-    -- Prev_Wide_Wide_Character --
-    ------------------------------
- 
-    procedure Prev_Wide_Wide_Character (Input : String; Ptr : in out Natural) is
-    begin
-       if Ptr > Input'Last + 1 then
-          Past_End;
-       end if;
- 
-       --  Special efficient encoding for UTF-8 case
- 
-       if Encoding_Method = WCEM_UTF8 then
-          UTF8 : declare
-             U : Unsigned_32;
- 
-             procedure Getc;
-             pragma Inline (Getc);
-             --  Gets the character at Input (Ptr - 1) and returns code in U as
-             --  Unsigned_32 value. On return Ptr is decremented by one.
- 
-             procedure Skip_UTF_Byte;
-             pragma Inline (Skip_UTF_Byte);
-             --  Checks that U is 2#10xxxxxx# and then calls Get
- 
-             ----------
-             -- Getc --
-             ----------
- 
-             procedure Getc is
-             begin
-                if Ptr <= Input'First then
-                   Past_End;
-                else
-                   Ptr := Ptr - 1;
-                   U := Unsigned_32 (Character'Pos (Input (Ptr)));
-                end if;
-             end Getc;
- 
-             -------------------
-             -- Skip_UTF_Byte --
-             -------------------
- 
-             procedure Skip_UTF_Byte is
-             begin
-                if (U and 2#11000000#) = 2#10_000000# then
-                   Getc;
-                else
-                   Bad;
-                end if;
-             end Skip_UTF_Byte;
- 
-          --  Start of processing for UTF-8 case
- 
-          begin
-             --  16#00_0000#-16#00_007F#: 0xxxxxxx
- 
-             Getc;
- 
-             if (U and 2#10000000#) = 2#00000000# then
-                return;
- 
-             --  16#00_0080#-16#00_07FF#: 110xxxxx 10xxxxxx
- 
-             else
-                Skip_UTF_Byte;
- 
-                if (U and 2#11100000#) = 2#110_00000# then
-                   return;
- 
-                --  16#00_0800#-16#00_ffff#: 1110xxxx 10xxxxxx 10xxxxxx
- 
-                else
-                   Skip_UTF_Byte;
- 
-                   if (U and 2#11110000#) = 2#1110_0000# then
-                      return;
- 
-                   --  16#01_0000#-16#10_FFFF#: 11110xxx 10xxxxxx 10xxxxxx
-                   --                           10xxxxxx
- 
-                   else
-                      Skip_UTF_Byte;
- 
-                      if (U and 2#11111000#) = 2#11110_000# then
-                         return;
- 
-                      --  16#0020_0000#-16#03FF_FFFF#: 111110xx 10xxxxxx
-                      --                               10xxxxxx 10xxxxxx
-                      --                               10xxxxxx
- 
-                      else
-                         Skip_UTF_Byte;
- 
-                         if (U and 2#11111100#) = 2#111110_00# then
-                            return;
- 
-                         --  Any other code is invalid, note that this includes:
- 
-                         --  16#0400_0000#-16#7FFF_FFFF#: 1111110x 10xxxxxx
-                         --                               10xxxxxx 10xxxxxx
-                         --                               10xxxxxx 10xxxxxx
- 
-                         --  since Wide_Wide_Character does not allow codes
-                         --  greater than 16#03FF_FFFF#
- 
-                         else
-                            Bad;
-                         end if;
-                      end if;
-                   end if;
-                end if;
-             end if;
-          end UTF8;
- 
-       --  Special efficient encoding for brackets case
- 
-       elsif Encoding_Method = WCEM_Brackets then
-          Brackets : declare
-             P : Natural;
-             S : Natural;
- 
-          begin
-             --  See if we have "] at end positions
- 
-             if Ptr > Input'First + 1
-               and then Input (Ptr - 1) = ']'
-               and then Input (Ptr - 2) = '"'
-             then
-                P := Ptr - 2;
- 
-                --  Loop back looking for [" at start
- 
-                while P >= Ptr - 10 loop
-                   if P <= Input'First + 1 then
-                      Bad;
- 
-                   elsif Input (P - 1) = '"'
-                     and then Input (P - 2) = '['
-                   then
-                      --  Found ["..."], scan forward to check it
- 
-                      S := P - 2;
-                      P := S;
-                      Next_Wide_Wide_Character (Input, P);
- 
-                      --  OK if at original pointer, else error
- 
-                      if P = Ptr then
-                         Ptr := S;
-                         return;
-                      else
-                         Bad;
-                      end if;
-                   end if;
- 
-                   P := P - 1;
-                end loop;
- 
-                --  Falling through loop means more than 8 chars between the
-                --  enclosing brackets (or simply a missing left bracket)
- 
-                Bad;
- 
-             --  Here if no bracket sequence present
- 
-             else
-                if Ptr = Input'First then
-                   Past_End;
-                else
-                   Ptr := Ptr - 1;
-                end if;
-             end if;
-          end Brackets;
- 
-       --  Non-UTF-8/Brackets. These are the inefficient cases where we have to
-       --  go to the start of the string and skip forwards till Ptr matches.
- 
-       else
-          Non_UTF8_Brackets : declare
-             Discard : Wide_Wide_Character;
-             PtrS    : Natural;
-             PtrP    : Natural;
- 
-          begin
-             PtrS := Input'First;
- 
-             if Ptr <= PtrS then
-                Past_End;
-             end if;
- 
-             loop
-                PtrP := PtrS;
-                Decode_Wide_Wide_Character (Input, PtrS, Discard);
- 
-                if PtrS = Ptr then
-                   Ptr := PtrP;
-                   return;
- 
-                elsif PtrS > Ptr then
-                   Bad;
-                end if;
-             end loop;
- 
-          exception
-             when Constraint_Error =>
-                Bad;
-          end Non_UTF8_Brackets;
-       end if;
-    end Prev_Wide_Wide_Character;
- 
-    --------------------------
-    -- Validate_Wide_String --
-    --------------------------
- 
-    function Validate_Wide_String (S : String) return Boolean is
-       Ptr : Natural;
- 
-    begin
-       Ptr := S'First;
-       while Ptr <= S'Last loop
-          Next_Wide_Character (S, Ptr);
-       end loop;
- 
-       return True;
- 
-    exception
-       when Constraint_Error =>
-          return False;
-    end Validate_Wide_String;
- 
-    -------------------------------
-    -- Validate_Wide_Wide_String --
-    -------------------------------
- 
-    function Validate_Wide_Wide_String (S : String) return Boolean is
-       Ptr : Natural;
- 
-    begin
-       Ptr := S'First;
-       while Ptr <= S'Last loop
-          Next_Wide_Wide_Character (S, Ptr);
-       end loop;
- 
-       return True;
- 
-    exception
-       when Constraint_Error =>
-          return False;
-    end Validate_Wide_Wide_String;
- 
- end GNAT.Decode_String;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-decstr.ads gcc-8.1.0/gcc/ada/g-decstr.ads
*** gcc-7.3.0/gcc/ada/g-decstr.ads	Mon Oct 14 12:45:14 2013
--- gcc-8.1.0/gcc/ada/g-decstr.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,176 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                    G N A T . D E C O D E _ S T R I N G                   --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 2007-2013, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 generic package provides utility routines for converting from an
- --  encoded string to a corresponding Wide_String or Wide_Wide_String value
- --  using a specified encoding convention, which is supplied as the generic
- --  parameter. UTF-8 is handled especially efficiently, and if the encoding
- --  method is known at compile time to be WCEM_UTF8, then the instantiation
- --  is specialized to handle only the UTF-8 case and exclude code for the
- --  other encoding methods. The package also provides positioning routines
- --  for skipping encoded characters in either direction, and for validating
- --  strings for correct encodings.
- 
- --  Note: this package is only about decoding sequences of 8-bit characters
- --  into corresponding 16-bit Wide_String or 32-bit Wide_Wide_String values.
- --  It knows nothing at all about the character encodings being used for the
- --  resulting Wide_Character and Wide_Wide_Character values. Most often this
- --  will be Unicode/ISO-10646 as specified by the Ada RM, but this package
- --  does not make any assumptions about the character coding. See also the
- --  packages Ada.Wide_[Wide_]Characters.Unicode for unicode specific functions.
- 
- --  In particular, in the case of UTF-8, all valid UTF-8 encodings, as listed
- --  in table 3.6 of the Unicode Standard, version 6.2.0, are recognized as
- --  legitimate. This includes the full range 16#0000_0000# .. 16#03FF_FFFF#.
- --  This includes codes in the range 16#D800# - 16#DFFF#. These codes all
- --  have UTF-8 encoding sequences that are well-defined (e.g. the encoding for
- --  16#D800# is ED A0 80). But these codes do not correspond to defined Unicode
- --  characters and are thus considered to be "not well-formed" (see table 3.7
- --  of the Unicode Standard). If you need to exclude these codes, you must do
- --  that manually, e.g. use Decode_Wide_Character/Decode_Wide_String and check
- --  that the resulting code(s) are not in this range.
- 
- --  Note on the use of brackets encoding (WCEM_Brackets). The brackets encoding
- --  method is ambiguous in the context of this package, since there is no way
- --  to tell if ["1234"] is eight unencoded characters or one encoded character.
- --  In the context of Ada sources, any sequence starting [" must be the start
- --  of an encoding (since that sequence is not valid in Ada source otherwise).
- --  The routines in this package use the same approach. If the input string
- --  contains the sequence [" then this is assumed to be the start of a brackets
- --  encoding sequence, and if it does not match the syntax, an error is raised.
- --  In the case of the Prev functions, a sequence ending with "] is assumed to
- --  be a valid brackets sequence, and an error is raised if it is not.
- 
- with System.WCh_Con;
- 
- generic
-    Encoding_Method : System.WCh_Con.WC_Encoding_Method;
- 
- package GNAT.Decode_String is
-    pragma Pure;
- 
-    function Decode_Wide_String (S : String) return Wide_String;
-    pragma Inline (Decode_Wide_String);
-    --  Decode the given String, which is encoded using the indicated coding
-    --  method, returning the corresponding decoded Wide_String value. If S
-    --  contains a character code that cannot be represented with the given
-    --  encoding, then Constraint_Error is raised.
- 
-    procedure Decode_Wide_String
-      (S      : String;
-       Result : out Wide_String;
-       Length : out Natural);
-    --  Similar to the above function except that the result is stored in the
-    --  given Wide_String variable Result, starting at Result (Result'First). On
-    --  return, Length is set to the number of characters stored in Result. The
-    --  caller must ensure that Result is long enough (an easy choice is to set
-    --  the length equal to the S'Length, since decoding can never increase the
-    --  string length). If the length of Result is insufficient Constraint_Error
-    --  will be raised.
- 
-    function Decode_Wide_Wide_String (S : String) return Wide_Wide_String;
-    --  Same as above function but for Wide_Wide_String output
- 
-    procedure Decode_Wide_Wide_String
-      (S      : String;
-       Result : out Wide_Wide_String;
-       Length : out Natural);
-    --  Same as above procedure, but for Wide_Wide_String output
- 
-    function Validate_Wide_String (S : String) return Boolean;
-    --  This function inspects the string S to determine if it contains only
-    --  valid encodings corresponding to Wide_Character values using the
-    --  given encoding. If a call to Decode_Wide_String (S) would return
-    --  without raising Constraint_Error, then Validate_Wide_String will
-    --  return True. If the call would have raised Constraint_Error, then
-    --  Validate_Wide_String will return False.
- 
-    function Validate_Wide_Wide_String (S : String) return Boolean;
-    --  Similar to Validate_Wide_String, except that it succeeds if the string
-    --  contains only encodings corresponding to Wide_Wide_Character values.
- 
-    procedure Decode_Wide_Character
-      (Input  : String;
-       Ptr    : in out Natural;
-       Result : out Wide_Character);
-    pragma Inline (Decode_Wide_Character);
-    --  This is a lower level procedure that decodes a single character using
-    --  the given encoding method. The encoded character is stored in Input,
-    --  starting at Input (Ptr). The resulting output character is stored in
-    --  Result, and on return Ptr is updated past the input character or
-    --  encoding sequence. Constraint_Error will be raised if the input has
-    --  has a character that cannot be represented using the given encoding,
-    --  or if Ptr is outside the bounds of the Input string.
- 
-    procedure Decode_Wide_Wide_Character
-      (Input  : String;
-       Ptr    : in out Natural;
-       Result : out Wide_Wide_Character);
-    pragma Inline (Decode_Wide_Wide_Character);
-    --  Same as above procedure but with Wide_Wide_Character input
- 
-    procedure Next_Wide_Character (Input : String; Ptr : in out Natural);
-    pragma Inline (Next_Wide_Character);
-    --  This procedure examines the input string starting at Input (Ptr), and
-    --  advances Ptr past one character in the encoded string, so that on return
-    --  Ptr points to the next encoded character. Constraint_Error is raised if
-    --  an invalid encoding is encountered, or the end of the string is reached
-    --  or if Ptr is less than String'First on entry, or if the character
-    --  skipped is not a valid Wide_Character code.
- 
-    procedure Prev_Wide_Character (Input : String; Ptr : in out Natural);
-    --  This procedure is similar to Next_Encoded_Character except that it moves
-    --  backwards in the string, so that on return, Ptr is set to point to the
-    --  previous encoded character. Constraint_Error is raised if the start of
-    --  the string is encountered. It is valid for Ptr to be one past the end
-    --  of the string for this call (in which case on return it will point to
-    --  the last encoded character).
-    --
-    --  Note: it is not generally possible to do this function efficiently with
-    --  all encodings, the current implementation is only efficient for the case
-    --  of UTF-8 (Encoding_Method = WCEM_UTF8) and Brackets (Encoding_Method =
-    --  WCEM_Brackets). For all other encodings, we work by starting at the
-    --  beginning of the string and moving forward till Ptr is reached, which
-    --  is correct but slow.
-    --
-    --  Note: this routine assumes that the sequence prior to Ptr is correctly
-    --  encoded, it does not have a defined behavior if this is not the case.
- 
-    procedure Next_Wide_Wide_Character (Input : String; Ptr : in out Natural);
-    pragma Inline (Next_Wide_Wide_Character);
-    --  Similar to Next_Wide_Character except that codes skipped must be valid
-    --  Wide_Wide_Character codes.
- 
-    procedure Prev_Wide_Wide_Character (Input : String; Ptr : in out Natural);
-    --  Similar to Prev_Wide_Character except that codes skipped must be valid
-    --  Wide_Wide_Character codes.
- 
- end GNAT.Decode_String;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-deutst.ads gcc-8.1.0/gcc/ada/g-deutst.ads
*** gcc-7.3.0/gcc/ada/g-deutst.ads	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-deutst.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,43 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --               G N A T . D E C O D E _ U T F 8 _ S T R I N G              --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                       Copyright (C) 2007-2010, AdaCore                   --
- --                                                                          --
- -- GNAT is 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 a pre-instantiation of GNAT.Decode_String for the
- --  common case of UTF-8 encoding. As noted in the documentation of that
- --  package, this UTF-8 instantiation is efficient and specialized so that
- --  it has only the code for the UTF-8 case. See g-decstr.ads for full
- --  documentation on this package.
- 
- with GNAT.Decode_String;
- 
- with System.WCh_Con;
- 
- package GNAT.Decode_UTF8_String is
-   new GNAT.Decode_String (System.WCh_Con.WCEM_UTF8);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-diopit.adb gcc-8.1.0/gcc/ada/g-diopit.adb
*** gcc-7.3.0/gcc/ada/g-diopit.adb	Mon Jan 23 13:24:47 2017
--- gcc-8.1.0/gcc/ada/g-diopit.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,396 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --  G N A T . D I R E C T O R Y _ O P E R A T I O N S . I T E R A T I O N   --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 2001-2016, AdaCore                     --
- --                                                                          --
- -- GNAT is 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.Characters.Handling;
- with Ada.Strings.Fixed;
- with Ada.Strings.Maps;
- with GNAT.OS_Lib;
- with GNAT.Regexp;
- 
- package body GNAT.Directory_Operations.Iteration is
- 
-    use Ada;
- 
-    ----------
-    -- Find --
-    ----------
- 
-    procedure Find
-      (Root_Directory : Dir_Name_Str;
-       File_Pattern   : String)
-    is
-       File_Regexp : constant Regexp.Regexp := Regexp.Compile (File_Pattern);
-       Index       : Natural := 0;
-       Quit        : Boolean;
- 
-       procedure Read_Directory (Directory : Dir_Name_Str);
-       --  Open Directory and read all entries. This routine is called
-       --  recursively for each sub-directories.
- 
-       function Make_Pathname (Dir, File : String) return String;
-       --  Returns the pathname for File by adding Dir as prefix
- 
-       -------------------
-       -- Make_Pathname --
-       -------------------
- 
-       function Make_Pathname (Dir, File : String) return String is
-       begin
-          if Dir (Dir'Last) = '/' or else Dir (Dir'Last) = '\' then
-             return Dir & File;
-          else
-             return Dir & Dir_Separator & File;
-          end if;
-       end Make_Pathname;
- 
-       --------------------
-       -- Read_Directory --
-       --------------------
- 
-       procedure Read_Directory (Directory : Dir_Name_Str) is
-          Buffer : String (1 .. 2_048);
-          Last   : Natural;
- 
-          Dir : Dir_Type;
-          pragma Warnings (Off, Dir);
- 
-       begin
-          Open (Dir, Directory);
- 
-          loop
-             Read (Dir, Buffer, Last);
-             exit when Last = 0;
- 
-             declare
-                Dir_Entry : constant String := Buffer (1 .. Last);
-                Pathname  : constant String :=
-                              Make_Pathname (Directory, Dir_Entry);
- 
-             begin
-                if Regexp.Match (Dir_Entry, File_Regexp) then
-                   Index := Index + 1;
- 
-                   begin
-                      Action (Pathname, Index, Quit);
-                   exception
-                      when others =>
-                         Close (Dir);
-                         raise;
-                   end;
- 
-                   exit when Quit;
-                end if;
- 
-                --  Recursively call for sub-directories, except for . and ..
- 
-                if not (Dir_Entry = "." or else Dir_Entry = "..")
-                  and then OS_Lib.Is_Directory (Pathname)
-                then
-                   Read_Directory (Pathname);
-                   exit when Quit;
-                end if;
-             end;
-          end loop;
- 
-          Close (Dir);
-       end Read_Directory;
- 
-    begin
-       Quit := False;
-       Read_Directory (Root_Directory);
-    end Find;
- 
-    -----------------------
-    -- Wildcard_Iterator --
-    -----------------------
- 
-    procedure Wildcard_Iterator (Path : Path_Name) is
- 
-       Index : Natural := 0;
- 
-       procedure Read
-         (Directory      : String;
-          File_Pattern   : String;
-          Suffix_Pattern : String);
-       --  Read entries in Directory and call user's callback if the entry match
-       --  File_Pattern and Suffix_Pattern is empty; otherwise go down one more
-       --  directory level by calling Next_Level routine below.
- 
-       procedure Next_Level
-         (Current_Path : String;
-          Suffix_Path  : String);
-       --  Extract next File_Pattern from Suffix_Path and call Read routine
-       --  above.
- 
-       ----------------
-       -- Next_Level --
-       ----------------
- 
-       procedure Next_Level
-         (Current_Path : String;
-          Suffix_Path  : String)
-       is
-          DS : Natural;
-          SP : String renames Suffix_Path;
- 
-       begin
-          if SP'Length > 2
-            and then SP (SP'First) = '.'
-            and then Strings.Maps.Is_In (SP (SP'First + 1), Dir_Seps)
-          then
-             --  Starting with "./"
- 
-             DS := Strings.Fixed.Index
-               (SP (SP'First + 2 .. SP'Last),
-                Dir_Seps);
- 
-             if DS = 0 then
- 
-                --  We have "./"
- 
-                Read (Current_Path & ".", "*", "");
- 
-             else
-                --  We have "./dir"
- 
-                Read (Current_Path & ".",
-                      SP (SP'First + 2 .. DS - 1),
-                      SP (DS .. SP'Last));
-             end if;
- 
-          elsif SP'Length > 3
-            and then SP (SP'First .. SP'First + 1) = ".."
-            and then Strings.Maps.Is_In (SP (SP'First + 2), Dir_Seps)
-          then
-             --  Starting with "../"
- 
-             DS := Strings.Fixed.Index
-                     (SP (SP'First + 3 .. SP'Last), Dir_Seps);
- 
-             if DS = 0 then
- 
-                --  We have "../"
- 
-                Read (Current_Path & "..", "*", "");
- 
-             else
-                --  We have "../dir"
- 
-                Read (Current_Path & "..",
-                      SP (SP'First + 3 .. DS - 1),
-                      SP (DS .. SP'Last));
-             end if;
- 
-          elsif Current_Path = ""
-            and then SP'Length > 1
-            and then Characters.Handling.Is_Letter (SP (SP'First))
-            and then SP (SP'First + 1) = ':'
-          then
-             --  Starting with "<drive>:"
- 
-             if SP'Length > 2
-               and then Strings.Maps.Is_In (SP (SP'First + 2), Dir_Seps)
-             then
-                --  Starting with "<drive>:\"
- 
-                DS := Strings.Fixed.Index
-                        (SP (SP'First + 3 .. SP'Last), Dir_Seps);
- 
-                if DS = 0 then
- 
-                   --  We have "<drive>:\dir"
- 
-                   Read (SP (SP'First .. SP'First + 2),
-                         SP (SP'First + 3 .. SP'Last),
-                         "");
- 
-                else
-                   --  We have "<drive>:\dir\kkk"
- 
-                   Read (SP (SP'First .. SP'First + 2),
-                         SP (SP'First + 3 .. DS - 1),
-                         SP (DS .. SP'Last));
-                end if;
- 
-             else
-                --  Starting with "<drive>:" and the drive letter not followed
-                --  by a directory separator. The proper semantic on Windows is
-                --  to read the content of the current selected directory on
-                --  this drive. For example, if drive C current selected
-                --  directory is c:\temp the suffix pattern "c:m*" is
-                --  equivalent to c:\temp\m*.
- 
-                DS :=  Strings.Fixed.Index
-                         (SP (SP'First + 2 .. SP'Last), Dir_Seps);
- 
-                if DS = 0 then
- 
-                   --  We have "<drive>:dir"
- 
-                   Read (SP, "", "");
- 
-                else
-                   --  We have "<drive>:dir/kkk"
- 
-                   Read (SP (SP'First .. DS - 1), "", SP (DS .. SP'Last));
-                end if;
-             end if;
- 
-          elsif Strings.Maps.Is_In (SP (SP'First), Dir_Seps) then
- 
-             --  Starting with a /
- 
-             DS := Strings.Fixed.Index
-                     (SP (SP'First + 1 .. SP'Last), Dir_Seps);
- 
-             if DS = 0 then
- 
-                --  We have "/dir"
- 
-                Read (Current_Path, SP (SP'First + 1 .. SP'Last), "");
-             else
-                --  We have "/dir/kkk"
- 
-                Read (Current_Path,
-                      SP (SP'First + 1 .. DS - 1),
-                      SP (DS .. SP'Last));
-             end if;
- 
-          else
-             --  Starting with a name
- 
-             DS := Strings.Fixed.Index (SP, Dir_Seps);
- 
-             if DS = 0 then
- 
-                --  We have "dir"
- 
-                Read (Current_Path & '.', SP, "");
-             else
-                --  We have "dir/kkk"
- 
-                Read (Current_Path & '.',
-                      SP (SP'First .. DS - 1),
-                      SP (DS .. SP'Last));
-             end if;
- 
-          end if;
-       end Next_Level;
- 
-       ----------
-       -- Read --
-       ----------
- 
-       Quit : Boolean := False;
-       --  Global state to be able to exit all recursive calls
- 
-       procedure Read
-         (Directory      : String;
-          File_Pattern   : String;
-          Suffix_Pattern : String)
-       is
-          File_Regexp : constant Regexp.Regexp :=
-                          Regexp.Compile (File_Pattern, Glob => True);
- 
-          Dir : Dir_Type;
-          pragma Warnings (Off, Dir);
- 
-          Buffer : String (1 .. 2_048);
-          Last   : Natural;
- 
-       begin
-          if OS_Lib.Is_Directory (Directory & Dir_Separator) then
-             Open (Dir, Directory & Dir_Separator);
- 
-             Dir_Iterator : loop
-                Read (Dir, Buffer, Last);
-                exit Dir_Iterator when Last = 0;
- 
-                declare
-                   Dir_Entry : constant String := Buffer (1 .. Last);
-                   Pathname  : constant String :=
-                                 Directory & Dir_Separator & Dir_Entry;
-                begin
-                   --  Handle "." and ".." only if explicit use in the
-                   --  File_Pattern.
- 
-                   if not
-                     ((Dir_Entry = "." and then File_Pattern /= ".")
-                        or else
-                      (Dir_Entry = ".." and then File_Pattern /= ".."))
-                   then
-                      if Regexp.Match (Dir_Entry, File_Regexp) then
-                         if Suffix_Pattern = "" then
- 
-                            --  No more matching needed, call user's callback
- 
-                            Index := Index + 1;
- 
-                            begin
-                               Action (Pathname, Index, Quit);
-                            exception
-                               when others =>
-                                  Close (Dir);
-                                  raise;
-                            end;
- 
-                         else
-                            --  Down one level
- 
-                            Next_Level
-                              (Directory & Dir_Separator & Dir_Entry,
-                               Suffix_Pattern);
-                         end if;
-                      end if;
-                   end if;
-                end;
- 
-                --  Exit if Quit set by call to Action, either at this level
-                --  or at some lower recursive call to Next_Level.
- 
-                exit Dir_Iterator when Quit;
-             end loop Dir_Iterator;
- 
-             Close (Dir);
-          end if;
-       end Read;
- 
-    --  Start of processing for Wildcard_Iterator
- 
-    begin
-       if Path = "" then
-          return;
-       end if;
- 
-       Next_Level ("", Path);
-    end Wildcard_Iterator;
- 
- end GNAT.Directory_Operations.Iteration;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-diopit.ads gcc-8.1.0/gcc/ada/g-diopit.ads
*** gcc-7.3.0/gcc/ada/g-diopit.ads	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-diopit.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,92 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --  G N A T . D I R E C T O R Y _ O P E R A T I O N S . I T E R A T I O N   --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 2001-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Iterators among files
- 
- package GNAT.Directory_Operations.Iteration is
- 
-    generic
-       with procedure Action
-         (Item  :        String;
-          Index :        Positive;
-          Quit  : in out Boolean);
-    procedure Find
-      (Root_Directory : Dir_Name_Str;
-       File_Pattern   : String);
-    --  Recursively searches the directory structure rooted at Root_Directory.
-    --  This provides functionality similar to the UNIX 'find' command.
-    --  Action will be called for every item matching the regular expression
-    --  File_Pattern (see GNAT.Regexp). Item is the full pathname to the file
-    --  starting with Root_Directory that has been matched. Index is set to one
-    --  for the first call and is incremented by one at each call. The iterator
-    --  will pass in the value False on each call to Action. The iterator will
-    --  terminate after passing the last matched path to Action or after
-    --  returning from a call to Action which sets Quit to True.
-    --  Raises GNAT.Regexp.Error_In_Regexp if File_Pattern is ill formed.
- 
-    generic
-       with procedure Action
-         (Item  :        String;
-          Index :        Positive;
-          Quit  : in out Boolean);
-    procedure Wildcard_Iterator (Path : Path_Name);
-    --  Calls Action for each path matching Path. Path can include wildcards '*'
-    --  and '?' and [...]. The rules are:
-    --
-    --     *       can be replaced by any sequence of characters
-    --     ?       can be replaced by a single character
-    --     [a-z]   match one character in the range 'a' through 'z'
-    --     [abc]   match either character 'a', 'b' or 'c'
-    --
-    --  Item is the filename that has been matched. Index is set to one for the
-    --  first call and is incremented by one at each call. The iterator's
-    --  termination can be controlled by setting Quit to True. It is by default
-    --  set to False.
-    --
-    --  For example, if we have the following directory structure:
-    --     /boo/
-    --        foo.ads
-    --     /sed/
-    --        foo.ads
-    --        file/
-    --          foo.ads
-    --     /sid/
-    --        foo.ads
-    --        file/
-    --          foo.ads
-    --     /life/
-    --
-    --  A call with expression "/s*/file/*" will call Action for the following
-    --  items:
-    --     /sed/file/foo.ads
-    --     /sid/file/foo.ads
- 
- end GNAT.Directory_Operations.Iteration;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-dirope.adb gcc-8.1.0/gcc/ada/g-dirope.adb
*** gcc-7.3.0/gcc/ada/g-dirope.adb	Mon Aug  4 12:42:52 2014
--- gcc-8.1.0/gcc/ada/g-dirope.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,769 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --            G N A T . D I R E C T O R Y _ O P E R A T I O N S             --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 1998-2014, AdaCore                     --
- --                                                                          --
- -- GNAT is 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.Characters.Handling;
- with Ada.Strings.Fixed;
- 
- with Ada.Unchecked_Deallocation;
- with Ada.Unchecked_Conversion;
- 
- with System;      use System;
- with System.CRTL; use System.CRTL;
- 
- with GNAT.OS_Lib;
- 
- package body GNAT.Directory_Operations is
- 
-    use Ada;
- 
-    Filename_Max : constant Integer := 1024;
-    --  1024 is the value of FILENAME_MAX in stdio.h
- 
-    procedure Free is new
-      Ada.Unchecked_Deallocation (Dir_Type_Value, Dir_Type);
- 
-    On_Windows : constant Boolean := GNAT.OS_Lib.Directory_Separator = '\';
-    --  An indication that we are on Windows. Used in Get_Current_Dir, to
-    --  deal with drive letters in the beginning of absolute paths.
- 
-    ---------------
-    -- Base_Name --
-    ---------------
- 
-    function Base_Name
-      (Path   : Path_Name;
-       Suffix : String := "") return String
-    is
-       function Get_File_Names_Case_Sensitive return Integer;
-       pragma Import
-         (C, Get_File_Names_Case_Sensitive,
-          "__gnat_get_file_names_case_sensitive");
- 
-       Case_Sensitive_File_Name : constant Boolean :=
-                                    Get_File_Names_Case_Sensitive = 1;
- 
-       function Basename
-         (Path   : Path_Name;
-          Suffix : String := "") return String;
-       --  This function does the job. The only difference between Basename
-       --  and Base_Name (the parent function) is that the former is case
-       --  sensitive, while the latter is not. Path and Suffix are adjusted
-       --  appropriately before calling Basename under platforms where the
-       --  file system is not case sensitive.
- 
-       --------------
-       -- Basename --
-       --------------
- 
-       function Basename
-         (Path   : Path_Name;
-          Suffix : String    := "") return String
-       is
-          Cut_Start : Natural :=
-                        Strings.Fixed.Index
-                          (Path, Dir_Seps, Going => Strings.Backward);
-          Cut_End : Natural;
- 
-       begin
-          --  Cut_Start point to the first basename character
- 
-          Cut_Start := (if Cut_Start = 0 then Path'First else Cut_Start + 1);
- 
-          --  Cut_End point to the last basename character
- 
-          Cut_End := Path'Last;
- 
-          --  If basename ends with Suffix, adjust Cut_End
- 
-          if Suffix /= ""
-            and then Path (Path'Last - Suffix'Length + 1 .. Cut_End) = Suffix
-          then
-             Cut_End := Path'Last - Suffix'Length;
-          end if;
- 
-          Check_For_Standard_Dirs : declare
-             Offset : constant Integer := Path'First - Base_Name.Path'First;
-             BN     : constant String  :=
-                        Base_Name.Path (Cut_Start - Offset .. Cut_End - Offset);
-             --  Here we use Base_Name.Path to keep the original casing
- 
-             Has_Drive_Letter : constant Boolean :=
-                                  OS_Lib.Path_Separator /= ':';
-             --  If Path separator is not ':' then we are on a DOS based OS
-             --  where this character is used as a drive letter separator.
- 
-          begin
-             if BN = "." or else BN = ".." then
-                return "";
- 
-             elsif Has_Drive_Letter
-               and then BN'Length > 2
-               and then Characters.Handling.Is_Letter (BN (BN'First))
-               and then BN (BN'First + 1) = ':'
-             then
-                --  We have a DOS drive letter prefix, remove it
- 
-                return BN (BN'First + 2 .. BN'Last);
- 
-             else
-                return BN;
-             end if;
-          end Check_For_Standard_Dirs;
-       end Basename;
- 
-    --  Start of processing for Base_Name
- 
-    begin
-       if Path'Length <= Suffix'Length then
-          return Path;
-       end if;
- 
-       if Case_Sensitive_File_Name then
-          return Basename (Path, Suffix);
-       else
-          return Basename
-            (Characters.Handling.To_Lower (Path),
-             Characters.Handling.To_Lower (Suffix));
-       end if;
-    end Base_Name;
- 
-    ----------------
-    -- Change_Dir --
-    ----------------
- 
-    procedure Change_Dir (Dir_Name : Dir_Name_Str) is
-       C_Dir_Name : constant String := Dir_Name & ASCII.NUL;
-    begin
-       if chdir (C_Dir_Name) /= 0 then
-          raise Directory_Error;
-       end if;
-    end Change_Dir;
- 
-    -----------
-    -- Close --
-    -----------
- 
-    procedure Close (Dir : in out Dir_Type) is
-       Discard : Integer;
-       pragma Warnings (Off, Discard);
- 
-       function closedir (directory : DIRs) return Integer;
-       pragma Import (C, closedir, "__gnat_closedir");
- 
-    begin
-       if not Is_Open (Dir) then
-          raise Directory_Error;
-       end if;
- 
-       Discard := closedir (DIRs (Dir.all));
-       Free (Dir);
-    end Close;
- 
-    --------------
-    -- Dir_Name --
-    --------------
- 
-    function Dir_Name (Path : Path_Name) return Dir_Name_Str is
-       Last_DS : constant Natural :=
-                   Strings.Fixed.Index
-                     (Path, Dir_Seps, Going => Strings.Backward);
- 
-    begin
-       if Last_DS = 0 then
- 
-          --  There is no directory separator, returns current working directory
- 
-          return "." & Dir_Separator;
- 
-       else
-          return Path (Path'First .. Last_DS);
-       end if;
-    end Dir_Name;
- 
-    -----------------
-    -- Expand_Path --
-    -----------------
- 
-    function Expand_Path
-      (Path : Path_Name;
-       Mode : Environment_Style := System_Default) return Path_Name
-    is
-       Environment_Variable_Char : Character;
-       pragma Import (C, Environment_Variable_Char, "__gnat_environment_char");
- 
-       Result      : OS_Lib.String_Access := new String (1 .. 200);
-       Result_Last : Natural := 0;
- 
-       procedure Append (C : Character);
-       procedure Append (S : String);
-       --  Append to Result
- 
-       procedure Double_Result_Size;
-       --  Reallocate Result, doubling its size
- 
-       function Is_Var_Prefix (C : Character) return Boolean;
-       pragma Inline (Is_Var_Prefix);
- 
-       procedure Read (K : in out Positive);
-       --  Update Result while reading current Path starting at position K. If
-       --  a variable is found, call Var below.
- 
-       procedure Var (K : in out Positive);
-       --  Translate variable name starting at position K with the associated
-       --  environment value.
- 
-       ------------
-       -- Append --
-       ------------
- 
-       procedure Append (C : Character) is
-       begin
-          if Result_Last = Result'Last then
-             Double_Result_Size;
-          end if;
- 
-          Result_Last := Result_Last + 1;
-          Result (Result_Last) := C;
-       end Append;
- 
-       procedure Append (S : String) is
-       begin
-          while Result_Last + S'Length - 1 > Result'Last loop
-             Double_Result_Size;
-          end loop;
- 
-          Result (Result_Last + 1 .. Result_Last + S'Length) := S;
-          Result_Last := Result_Last + S'Length;
-       end Append;
- 
-       ------------------------
-       -- Double_Result_Size --
-       ------------------------
- 
-       procedure Double_Result_Size is
-          New_Result : constant OS_Lib.String_Access :=
-                         new String (1 .. 2 * Result'Last);
-       begin
-          New_Result (1 .. Result_Last) := Result (1 .. Result_Last);
-          OS_Lib.Free (Result);
-          Result := New_Result;
-       end Double_Result_Size;
- 
-       -------------------
-       -- Is_Var_Prefix --
-       -------------------
- 
-       function Is_Var_Prefix (C : Character) return Boolean is
-       begin
-          return (C = Environment_Variable_Char and then Mode = System_Default)
-            or else
-              (C = '$' and then (Mode = UNIX or else Mode = Both))
-            or else
-              (C = '%' and then (Mode = DOS or else Mode = Both));
-       end Is_Var_Prefix;
- 
-       ----------
-       -- Read --
-       ----------
- 
-       procedure Read (K : in out Positive) is
-          P : Character;
- 
-       begin
-          For_All_Characters : loop
-             if Is_Var_Prefix (Path (K)) then
-                P := Path (K);
- 
-                --  Could be a variable
- 
-                if K < Path'Last then
-                   if Path (K + 1) = P then
- 
-                      --  Not a variable after all, this is a double $ or %,
-                      --  just insert one in the result string.
- 
-                      Append (P);
-                      K := K + 1;
- 
-                   else
-                      --  Let's parse the variable
- 
-                      Var (K);
-                   end if;
- 
-                else
-                   --  We have an ending $ or % sign
- 
-                   Append (P);
-                end if;
- 
-             else
-                --  This is a standard character, just add it to the result
- 
-                Append (Path (K));
-             end if;
- 
-             --  Skip to next character
- 
-             K := K + 1;
- 
-             exit For_All_Characters when K > Path'Last;
-          end loop For_All_Characters;
-       end Read;
- 
-       ---------
-       -- Var --
-       ---------
- 
-       procedure Var (K : in out Positive) is
-          P : constant Character := Path (K);
-          T : Character;
-          E : Positive;
- 
-       begin
-          K := K + 1;
- 
-          if P = '%' or else Path (K) = '{' then
- 
-             --  Set terminator character
- 
-             if P = '%' then
-                T := '%';
-             else
-                T := '}';
-                K := K + 1;
-             end if;
- 
-             --  Look for terminator character, k point to the first character
-             --  for the variable name.
- 
-             E := K;
- 
-             loop
-                E := E + 1;
-                exit when Path (E) = T or else E = Path'Last;
-             end loop;
- 
-             if Path (E) = T then
- 
-                --  OK found, translate with environment value
- 
-                declare
-                   Env : OS_Lib.String_Access :=
-                           OS_Lib.Getenv (Path (K .. E - 1));
- 
-                begin
-                   Append (Env.all);
-                   OS_Lib.Free (Env);
-                end;
- 
-             else
-                --  No terminator character, not a variable after all or a
-                --  syntax error, ignore it, insert string as-is.
- 
-                Append (P);       --  Add prefix character
- 
-                if T = '}' then   --  If we were looking for curly bracket
-                   Append ('{');  --  terminator, add the curly bracket
-                end if;
- 
-                Append (Path (K .. E));
-             end if;
- 
-          else
-             --  The variable name is everything from current position to first
-             --  non letter/digit character.
- 
-             E := K;
- 
-             --  Check that first character is a letter
- 
-             if Characters.Handling.Is_Letter (Path (E)) then
-                E := E + 1;
- 
-                Var_Name : loop
-                   exit Var_Name when E > Path'Last;
- 
-                   if Characters.Handling.Is_Letter (Path (E))
-                     or else Characters.Handling.Is_Digit (Path (E))
-                   then
-                      E := E + 1;
-                   else
-                      exit Var_Name;
-                   end if;
-                end loop Var_Name;
- 
-                E := E - 1;
- 
-                declare
-                   Env : OS_Lib.String_Access := OS_Lib.Getenv (Path (K .. E));
- 
-                begin
-                   Append (Env.all);
-                   OS_Lib.Free (Env);
-                end;
- 
-             else
-                --  This is not a variable after all
- 
-                Append ('$');
-                Append (Path (E));
-             end if;
- 
-          end if;
- 
-          K := E;
-       end Var;
- 
-    --  Start of processing for Expand_Path
- 
-    begin
-       declare
-          K : Positive := Path'First;
- 
-       begin
-          Read (K);
- 
-          declare
-             Returned_Value : constant String := Result (1 .. Result_Last);
- 
-          begin
-             OS_Lib.Free (Result);
-             return Returned_Value;
-          end;
-       end;
-    end Expand_Path;
- 
-    --------------------
-    -- File_Extension --
-    --------------------
- 
-    function File_Extension (Path : Path_Name) return String is
-       First : Natural :=
-                 Strings.Fixed.Index
-                   (Path, Dir_Seps, Going => Strings.Backward);
- 
-       Dot : Natural;
- 
-    begin
-       if First = 0 then
-          First := Path'First;
-       end if;
- 
-       Dot := Strings.Fixed.Index (Path (First .. Path'Last),
-                                   ".",
-                                   Going => Strings.Backward);
- 
-       if Dot = 0 or else Dot = Path'Last then
-          return "";
-       else
-          return Path (Dot .. Path'Last);
-       end if;
-    end File_Extension;
- 
-    ---------------
-    -- File_Name --
-    ---------------
- 
-    function File_Name (Path : Path_Name) return String is
-    begin
-       return Base_Name (Path);
-    end File_Name;
- 
-    ---------------------
-    -- Format_Pathname --
-    ---------------------
- 
-    function Format_Pathname
-      (Path  : Path_Name;
-       Style : Path_Style := System_Default) return String
-    is
-       N_Path       : String   := Path;
-       K            : Positive := N_Path'First;
-       Prev_Dirsep  : Boolean  := False;
- 
-    begin
-       if Dir_Separator = '\'
-         and then Path'Length > 1
-         and then Path (K .. K + 1) = "\\"
-       then
-          if Style = UNIX then
-             N_Path (K .. K + 1) := "//";
-          end if;
- 
-          K := K + 2;
-       end if;
- 
-       for J in K .. Path'Last loop
-          if Strings.Maps.Is_In (Path (J), Dir_Seps) then
-             if not Prev_Dirsep then
-                case Style is
-                   when UNIX           => N_Path (K) := '/';
-                   when DOS            => N_Path (K) := '\';
-                   when System_Default => N_Path (K) := Dir_Separator;
-                end case;
- 
-                K := K + 1;
-             end if;
- 
-             Prev_Dirsep := True;
- 
-          else
-             N_Path (K) := Path (J);
-             K := K + 1;
-             Prev_Dirsep := False;
-          end if;
-       end loop;
- 
-       return N_Path (N_Path'First .. K - 1);
-    end Format_Pathname;
- 
-    ---------------------
-    -- Get_Current_Dir --
-    ---------------------
- 
-    Max_Path : Integer;
-    pragma Import (C, Max_Path, "__gnat_max_path_len");
- 
-    function Get_Current_Dir return Dir_Name_Str is
-       Current_Dir : String (1 .. Max_Path + 1);
-       Last        : Natural;
-    begin
-       Get_Current_Dir (Current_Dir, Last);
-       return Current_Dir (1 .. Last);
-    end Get_Current_Dir;
- 
-    procedure Get_Current_Dir (Dir : out Dir_Name_Str; Last : out Natural) is
-       Path_Len : Natural := Max_Path;
-       Buffer   : String (Dir'First .. Dir'First + Max_Path + 1);
- 
-       procedure Local_Get_Current_Dir
-         (Dir    : System.Address;
-          Length : System.Address);
-       pragma Import (C, Local_Get_Current_Dir, "__gnat_get_current_dir");
- 
-    begin
-       Local_Get_Current_Dir (Buffer'Address, Path_Len'Address);
- 
-       Last :=
-         (if Dir'Length > Path_Len then Dir'First + Path_Len - 1 else Dir'Last);
- 
-       Dir (Buffer'First .. Last) := Buffer (Buffer'First .. Last);
- 
-       --  By default, the drive letter on Windows is in upper case
- 
-       if On_Windows and then Last > Dir'First and then
-         Dir (Dir'First + 1) = ':'
-       then
-          Dir (Dir'First) :=
-            Ada.Characters.Handling.To_Upper (Dir (Dir'First));
-       end if;
-    end Get_Current_Dir;
- 
-    -------------
-    -- Is_Open --
-    -------------
- 
-    function Is_Open (Dir : Dir_Type) return Boolean is
-    begin
-       return Dir /= Null_Dir
-         and then System.Address (Dir.all) /= System.Null_Address;
-    end Is_Open;
- 
-    --------------
-    -- Make_Dir --
-    --------------
- 
-    procedure Make_Dir (Dir_Name : Dir_Name_Str) is
-       C_Dir_Name : constant String := Dir_Name & ASCII.NUL;
-    begin
-       if CRTL.mkdir (C_Dir_Name, Unspecified) /= 0 then
-          raise Directory_Error;
-       end if;
-    end Make_Dir;
- 
-    ----------
-    -- Open --
-    ----------
- 
-    procedure Open
-      (Dir      : out Dir_Type;
-       Dir_Name : Dir_Name_Str)
-    is
-       function opendir (file_name : String) return DIRs;
-       pragma Import (C, opendir, "__gnat_opendir");
- 
-       C_File_Name : constant String := Dir_Name & ASCII.NUL;
- 
-    begin
-       Dir := new Dir_Type_Value'(Dir_Type_Value (opendir (C_File_Name)));
- 
-       if not Is_Open (Dir) then
-          Free (Dir);
-          Dir := Null_Dir;
-          raise Directory_Error;
-       end if;
-    end Open;
- 
-    ----------
-    -- Read --
-    ----------
- 
-    procedure Read
-      (Dir  : Dir_Type;
-       Str  : out String;
-       Last : out Natural)
-    is
-       Filename_Addr : Address;
-       Filename_Len  : aliased Integer;
- 
-       Buffer : array (0 .. Filename_Max + 12) of Character;
-       --  12 is the size of the dirent structure (see dirent.h), without the
-       --  field for the filename.
- 
-       function readdir_gnat
-         (Directory : System.Address;
-          Buffer    : System.Address;
-          Last      : not null access Integer) return System.Address;
-       pragma Import (C, readdir_gnat, "__gnat_readdir");
- 
-    begin
-       if not Is_Open (Dir) then
-          raise Directory_Error;
-       end if;
- 
-       Filename_Addr :=
-         readdir_gnat
-           (System.Address (Dir.all), Buffer'Address, Filename_Len'Access);
- 
-       if Filename_Addr = System.Null_Address then
-          Last := 0;
-          return;
-       end if;
- 
-       Last :=
-         (if Str'Length > Filename_Len then Str'First + Filename_Len - 1
-          else Str'Last);
- 
-       declare
-          subtype Path_String is String (1 .. Filename_Len);
-          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 (Filename_Addr);
- 
-       begin
-          for J in Str'First .. Last loop
-             Str (J) := Path_Access (J - Str'First + 1);
-          end loop;
-       end;
-    end Read;
- 
-    -------------------------
-    -- Read_Is_Thread_Safe --
-    -------------------------
- 
-    function Read_Is_Thread_Safe return Boolean is
-       function readdir_is_thread_safe return Integer;
-       pragma Import
-         (C, readdir_is_thread_safe, "__gnat_readdir_is_thread_safe");
-    begin
-       return (readdir_is_thread_safe /= 0);
-    end Read_Is_Thread_Safe;
- 
-    ----------------
-    -- Remove_Dir --
-    ----------------
- 
-    procedure Remove_Dir
-      (Dir_Name  : Dir_Name_Str;
-       Recursive : Boolean := False)
-    is
-       C_Dir_Name  : constant String := Dir_Name & ASCII.NUL;
-       Last        : Integer;
-       Str         : String (1 .. Filename_Max);
-       Success     : Boolean;
-       Current_Dir : Dir_Type;
- 
-    begin
-       --  Remove the directory only if it is empty
- 
-       if not Recursive then
-          if rmdir (C_Dir_Name) /= 0 then
-             raise Directory_Error;
-          end if;
- 
-       --  Remove directory and all files and directories that it may contain
- 
-       else
-          Open (Current_Dir, Dir_Name);
- 
-          loop
-             Read (Current_Dir, Str, Last);
-             exit when Last = 0;
- 
-             if GNAT.OS_Lib.Is_Directory
-                  (Dir_Name & Dir_Separator &  Str (1 .. Last))
-             then
-                if Str (1 .. Last) /= "."
-                  and then
-                    Str (1 .. Last) /= ".."
-                then
-                   --  Recursive call to remove a subdirectory and all its
-                   --  files.
- 
-                   Remove_Dir
-                     (Dir_Name & Dir_Separator &  Str (1 .. Last),
-                      True);
-                end if;
- 
-             else
-                GNAT.OS_Lib.Delete_File
-                  (Dir_Name & Dir_Separator &  Str (1 .. Last),
-                   Success);
- 
-                if not Success then
-                   raise Directory_Error;
-                end if;
-             end if;
-          end loop;
- 
-          Close (Current_Dir);
-          Remove_Dir (Dir_Name);
-       end if;
-    end Remove_Dir;
- 
- end GNAT.Directory_Operations;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-dirope.ads gcc-8.1.0/gcc/ada/g-dirope.ads
*** gcc-7.3.0/gcc/ada/g-dirope.ads	Fri Oct 16 12:25:58 2015
--- gcc-8.1.0/gcc/ada/g-dirope.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,262 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --            G N A T . D I R E C T O R Y _ O P E R A T I O N S             --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 1998-2015, AdaCore                     --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Directory operations
- 
- --  This package provides routines for manipulating directories. A directory
- --  can be treated as a file, using open and close routines, and a scanning
- --  routine is provided for iterating through the entries in a directory.
- 
- --  See also child package GNAT.Directory_Operations.Iteration
- 
- with System;
- with Ada.Strings.Maps;
- 
- package GNAT.Directory_Operations is
- 
-    subtype Dir_Name_Str is String;
-    --  A subtype used in this package to represent string values that are
-    --  directory names. A directory name is a prefix for files that appear
-    --  with in the directory. This means that for UNIX systems, the string
-    --  includes a final '/', and for DOS-like systems, it includes a final
-    --  '\' character. It can also include drive letters if the operating
-    --  system provides for this. The final '/' or '\' in a Dir_Name_Str is
-    --  optional when passed as a procedure or function in parameter.
- 
-    type Dir_Type is limited private;
-    --  A value used to reference a directory. Conceptually this value includes
-    --  the identity of the directory, and a sequential position within it.
- 
-    Null_Dir : constant Dir_Type;
-    --  Represent the value for an uninitialized or closed directory
- 
-    Directory_Error : exception;
-    --  Exception raised if the directory cannot be opened, read, closed,
-    --  created or if it is not possible to change the current execution
-    --  environment directory.
- 
-    Dir_Separator : constant Character;
-    --  Running system default directory separator
- 
-    --------------------------------
-    -- Basic Directory operations --
-    --------------------------------
- 
-    procedure Change_Dir (Dir_Name : Dir_Name_Str);
-    --  Changes the working directory of the current execution environment
-    --  to the directory named by Dir_Name. Raises Directory_Error if Dir_Name
-    --  does not exist.
- 
-    procedure Make_Dir (Dir_Name : Dir_Name_Str);
-    --  Create a new directory named Dir_Name. Raises Directory_Error if
-    --  Dir_Name cannot be created.
- 
-    procedure Remove_Dir
-      (Dir_Name  : Dir_Name_Str;
-       Recursive : Boolean := False);
-    --  Remove the directory named Dir_Name. If Recursive is set to True, then
-    --  Remove_Dir removes all the subdirectories and files that are in
-    --  Dir_Name. Raises Directory_Error if Dir_Name cannot be removed.
- 
-    function Get_Current_Dir return Dir_Name_Str;
-    --  Returns the current working directory for the execution environment
- 
-    procedure Get_Current_Dir (Dir : out Dir_Name_Str; Last : out Natural);
-    --  Returns the current working directory for the execution environment
-    --  The name is returned in Dir_Name. Last is the index in Dir_Name such
-    --  that Dir_Name (Last) is the last character written. If Dir_Name is
-    --  too small for the directory name, the name will be truncated before
-    --  being copied to Dir_Name.
- 
-    -------------------------
-    -- Pathname Operations --
-    -------------------------
- 
-    subtype Path_Name is String;
-    --  All routines using Path_Name handle both styles (UNIX and DOS) of
-    --  directory separators (either slash or back slash).
- 
-    function Dir_Name (Path : Path_Name) return Dir_Name_Str;
-    --  Returns directory name for Path. This is similar to the UNIX dirname
-    --  command. Everything after the last directory separator is removed. If
-    --  there is no directory separator the current working directory is
-    --  returned. Note that the contents of Path is case-sensitive on
-    --  systems that have case-sensitive file names (like Unix), and
-    --  non-case-sensitive on systems where the file system is also non-
-    --  case-sensitive (such as Windows).
- 
-    function Base_Name
-      (Path   : Path_Name;
-       Suffix : String := "") return String;
-    --  Any directory prefix is removed. A directory prefix is defined as
-    --  text up to and including the last directory separator character in
-    --  the input string. In addition if Path ends with the string given for
-    --  Suffix, then it is also removed. Note that Suffix here can be an
-    --  arbitrary string (it is not required to be a file extension). This
-    --  is equivalent to the UNIX basename command. The following rule is
-    --  always true:
-    --
-    --    'Path' and 'Dir_Name (Path) & Dir_Separator & Base_Name (Path)'
-    --    represent the same file.
-    --
-    --  The comparison of Suffix is case-insensitive on systems like Windows
-    --  where the file search is case-insensitive (e.g. on such systems,
-    --  Base_Name ("/Users/AdaCore/BB12.patch", ".Patch") returns "BB12").
-    --
-    --  Note that the index bounds of the result match the corresponding indexes
-    --  in the Path string (you cannot assume that the lower bound of the
-    --  returned string is one).
- 
-    function File_Extension (Path : Path_Name) return String;
-    --  Return the file extension. This is defined as the string after the
-    --  last dot, including the dot itself. For example, if the file name
-    --  is "file1.xyz.adq", then the returned value would be ".adq". If no
-    --  dot is present in the file name, or the last character of the file
-    --  name is a dot, then the null string is returned.
- 
-    function File_Name (Path : Path_Name) return String;
-    --  Returns the file name and the file extension if present. It removes all
-    --  path information. This is equivalent to Base_Name with default Extension
-    --  value.
- 
-    type Path_Style is (UNIX, DOS, System_Default);
-    function Format_Pathname
-      (Path  : Path_Name;
-       Style : Path_Style := System_Default) return Path_Name;
-    --  Removes all double directory separator and converts all '\' to '/' if
-    --  Style is UNIX and converts all '/' to '\' if Style is set to DOS. This
-    --  function will help to provide a consistent naming scheme running for
-    --  different environments. If style is set to System_Default the routine
-    --  will use the default directory separator on the running environment.
-    --
-    --  The Style argument indicates the syntax to be used for path names:
-    --
-    --    DOS
-    --      Use '\' as the directory separator (default on Windows)
-    --
-    --    UNIX
-    --      Use '/' as the directory separator (default on all other systems)
-    --
-    --    System_Default
-    --      Use the default style for the current system
- 
-    type Environment_Style is (UNIX, DOS, Both, System_Default);
-    function Expand_Path
-      (Path : Path_Name;
-       Mode : Environment_Style := System_Default) return Path_Name;
-    --  Returns Path with environment variables replaced by the current
-    --  environment variable value. For example, $HOME/mydir will be replaced
-    --  by /home/joe/mydir if $HOME environment variable is set to /home/joe and
-    --  Mode is UNIX. If an environment variable does not exist the variable
-    --  will be replaced by the empty string. Two dollar or percent signs are
-    --  replaced by a single dollar/percent sign. Note that a variable must
-    --  start with a letter.
-    --
-    --  The Mode argument indicates the recognized syntax for environment
-    --  variables as follows:
-    --
-    --    UNIX
-    --      Environment variables use $ as prefix and can use curly brackets
-    --      as in ${HOME}/mydir. If there is no closing curly bracket for an
-    --      opening one then no translation is done, so for example ${VAR/toto
-    --      is returned as ${VAR/toto. The use of {} brackets is required if
-    --      the environment variable name contains other than alphanumeric
-    --      characters.
-    --
-    --    DOS
-    --      Environment variables uses % as prefix and suffix (e.g. %HOME%/dir).
-    --      The name DOS refer to "DOS-like" environment. This includes all
-    --      Windows systems.
-    --
-    --    Both
-    --      Recognize both forms described above.
-    --
-    --    System_Default
-    --      Uses either DOS on Windows, and UNIX on all other systems, depending
-    --      on the running environment.
- 
-    ---------------
-    -- Iterators --
-    ---------------
- 
-    procedure Open (Dir : out Dir_Type; Dir_Name : Dir_Name_Str);
-    --  Opens the directory named by Dir_Name and returns a Dir_Type value
-    --  that refers to this directory, and is positioned at the first entry.
-    --  Raises Directory_Error if Dir_Name cannot be accessed. In that case
-    --  Dir will be set to Null_Dir.
- 
-    procedure Close (Dir : in out Dir_Type);
-    --  Closes the directory stream referred to by Dir. After calling Close
-    --  Is_Open will return False. Dir will be set to Null_Dir.
-    --  Raises Directory_Error if Dir has not be opened (Dir = Null_Dir).
- 
-    function Is_Open (Dir : Dir_Type) return Boolean;
-    --  Returns True if Dir is open, or False otherwise
- 
-    procedure Read
-      (Dir  : Dir_Type;
-       Str  : out String;
-       Last : out Natural);
-    --  Reads the next entry from the directory and sets Str to the name
-    --  of that entry. Last is the index in Str such that Str (Last) is the
-    --  last character written. Last is 0 when there are no more files in the
-    --  directory. If Str is too small for the file name, the file name will
-    --  be truncated before being copied to Str. The list of files returned
-    --  includes directories in systems providing a hierarchical directory
-    --  structure, including . (the current directory) and .. (the parent
-    --  directory) in systems providing these entries. The directory is
-    --  returned in target-OS form. Raises Directory_Error if Dir has not
-    --  be opened (Dir = Null_Dir).
- 
-    function Read_Is_Thread_Safe return Boolean;
-    --  Indicates if procedure Read is thread safe. On systems where the
-    --  target system supports this functionality, Read is thread safe,
-    --  and this function returns True (e.g. this will be the case on any
-    --  UNIX or UNIX-like system providing a correct implementation of the
-    --  function readdir_r). If the system cannot provide a thread safe
-    --  implementation of Read, then this function returns False.
- 
- private
- 
-    type Dir_Type_Value is new System.Address;
-    --  Low-level address directory structure as returned by opendir in C
- 
-    type Dir_Type is access Dir_Type_Value;
- 
-    Null_Dir : constant Dir_Type := null;
- 
-    pragma Import (C, Dir_Separator, "__gnat_dir_separator");
- 
-    Dir_Seps : constant Ada.Strings.Maps.Character_Set :=
-                 Ada.Strings.Maps.To_Set ("/\");
-    --  UNIX and DOS style directory separators
- 
- end GNAT.Directory_Operations;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-dynhta.adb gcc-8.1.0/gcc/ada/g-dynhta.adb
*** gcc-7.3.0/gcc/ada/g-dynhta.adb	Thu Jul  7 13:20:30 2016
--- gcc-8.1.0/gcc/ada/g-dynhta.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,710 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                 G N A T . D Y N A M I C _ H T A B L E S                  --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 2002-2016, AdaCore                     --
- --                                                                          --
- -- GNAT is 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.Unchecked_Deallocation;
- 
- package body GNAT.Dynamic_HTables is
- 
-    -------------------
-    -- Static_HTable --
-    -------------------
- 
-    package body Static_HTable is
- 
-       type Table_Type is array (Header_Num) of Elmt_Ptr;
- 
-       type Instance_Data is record
-          Table            : Table_Type;
-          Iterator_Index   : Header_Num;
-          Iterator_Ptr     : Elmt_Ptr;
-          Iterator_Started : Boolean := False;
-       end record;
- 
-       function Get_Non_Null (T : Instance) return Elmt_Ptr;
-       --  Returns Null_Ptr if Iterator_Started is False or if the Table is
-       --  empty. Returns Iterator_Ptr if non null, or the next non null
-       --  element in table if any.
- 
-       ---------
-       -- Get --
-       ---------
- 
-       function Get (T : Instance; K : Key) return Elmt_Ptr is
-          Elmt : Elmt_Ptr;
- 
-       begin
-          if T = null then
-             return Null_Ptr;
-          end if;
- 
-          Elmt := T.Table (Hash (K));
- 
-          loop
-             if Elmt = Null_Ptr then
-                return Null_Ptr;
- 
-             elsif Equal (Get_Key (Elmt), K) then
-                return Elmt;
- 
-             else
-                Elmt := Next (Elmt);
-             end if;
-          end loop;
-       end Get;
- 
-       ---------------
-       -- Get_First --
-       ---------------
- 
-       function Get_First (T : Instance) return Elmt_Ptr is
-       begin
-          if T = null then
-             return Null_Ptr;
-          end if;
- 
-          T.Iterator_Started := True;
-          T.Iterator_Index := T.Table'First;
-          T.Iterator_Ptr := T.Table (T.Iterator_Index);
-          return Get_Non_Null (T);
-       end Get_First;
- 
-       --------------
-       -- Get_Next --
-       --------------
- 
-       function Get_Next (T : Instance) return Elmt_Ptr is
-       begin
-          if T = null or else not T.Iterator_Started then
-             return Null_Ptr;
-          end if;
- 
-          T.Iterator_Ptr := Next (T.Iterator_Ptr);
-          return Get_Non_Null (T);
-       end Get_Next;
- 
-       ------------------
-       -- Get_Non_Null --
-       ------------------
- 
-       function Get_Non_Null (T : Instance) return Elmt_Ptr is
-       begin
-          if T = null then
-             return Null_Ptr;
-          end if;
- 
-          while T.Iterator_Ptr = Null_Ptr  loop
-             if T.Iterator_Index = T.Table'Last then
-                T.Iterator_Started := False;
-                return Null_Ptr;
-             end if;
- 
-             T.Iterator_Index := T.Iterator_Index + 1;
-             T.Iterator_Ptr   := T.Table (T.Iterator_Index);
-          end loop;
- 
-          return T.Iterator_Ptr;
-       end Get_Non_Null;
- 
-       ------------
-       -- Remove --
-       ------------
- 
-       procedure Remove  (T : Instance; K : Key) is
-          Index     : constant Header_Num := Hash (K);
-          Elmt      : Elmt_Ptr;
-          Next_Elmt : Elmt_Ptr;
- 
-       begin
-          if T = null then
-             return;
-          end if;
- 
-          Elmt := T.Table (Index);
- 
-          if Elmt = Null_Ptr then
-             return;
- 
-          elsif Equal (Get_Key (Elmt), K) then
-             T.Table (Index) := Next (Elmt);
- 
-          else
-             loop
-                Next_Elmt := Next (Elmt);
- 
-                if Next_Elmt = Null_Ptr then
-                   return;
- 
-                elsif Equal (Get_Key (Next_Elmt), K) then
-                   Set_Next (Elmt, Next (Next_Elmt));
-                   return;
- 
-                else
-                   Elmt := Next_Elmt;
-                end if;
-             end loop;
-          end if;
-       end Remove;
- 
-       -----------
-       -- Reset --
-       -----------
- 
-       procedure Reset (T : in out Instance) is
-          procedure Free is
-            new Ada.Unchecked_Deallocation (Instance_Data, Instance);
- 
-       begin
-          if T = null then
-             return;
-          end if;
- 
-          for J in T.Table'Range loop
-             T.Table (J) := Null_Ptr;
-          end loop;
- 
-          Free (T);
-       end Reset;
- 
-       ---------
-       -- Set --
-       ---------
- 
-       procedure Set (T : in out Instance; E : Elmt_Ptr) is
-          Index : Header_Num;
- 
-       begin
-          if T = null then
-             T := new Instance_Data;
-          end if;
- 
-          Index := Hash (Get_Key (E));
-          Set_Next (E, T.Table (Index));
-          T.Table (Index) := E;
-       end Set;
- 
-    end Static_HTable;
- 
-    -------------------
-    -- Simple_HTable --
-    -------------------
- 
-    package body Simple_HTable is
-       procedure Free is new
-         Ada.Unchecked_Deallocation (Element_Wrapper, Elmt_Ptr);
- 
-       ---------
-       -- Get --
-       ---------
- 
-       function Get (T : Instance; K : Key) return Element is
-          Tmp : Elmt_Ptr;
- 
-       begin
-          if T = Nil then
-             return No_Element;
-          end if;
- 
-          Tmp := Tab.Get (Tab.Instance (T), K);
- 
-          if Tmp = null then
-             return No_Element;
-          else
-             return Tmp.E;
-          end if;
-       end Get;
- 
-       ---------------
-       -- Get_First --
-       ---------------
- 
-       function Get_First (T : Instance) return Element is
-          Tmp : constant Elmt_Ptr := Tab.Get_First (Tab.Instance (T));
- 
-       begin
-          if Tmp = null then
-             return No_Element;
-          else
-             return Tmp.E;
-          end if;
-       end Get_First;
- 
-       -------------
-       -- Get_Key --
-       -------------
- 
-       function Get_Key (E : Elmt_Ptr) return Key is
-       begin
-          return E.K;
-       end Get_Key;
- 
-       --------------
-       -- Get_Next --
-       --------------
- 
-       function Get_Next (T : Instance) return Element is
-          Tmp : constant Elmt_Ptr := Tab.Get_Next (Tab.Instance (T));
-       begin
-          if Tmp = null then
-             return No_Element;
-          else
-             return Tmp.E;
-          end if;
-       end Get_Next;
- 
-       ----------
-       -- Next --
-       ----------
- 
-       function Next (E : Elmt_Ptr) return Elmt_Ptr is
-       begin
-          return E.Next;
-       end Next;
- 
-       ------------
-       -- Remove --
-       ------------
- 
-       procedure Remove  (T : Instance; K : Key) is
-          Tmp : Elmt_Ptr;
- 
-       begin
-          Tmp := Tab.Get (Tab.Instance (T), K);
- 
-          if Tmp /= null then
-             Tab.Remove (Tab.Instance (T), K);
-             Free (Tmp);
-          end if;
-       end Remove;
- 
-       -----------
-       -- Reset --
-       -----------
- 
-       procedure Reset (T : in out Instance) is
-          E1, E2 : Elmt_Ptr;
- 
-       begin
-          E1 := Tab.Get_First (Tab.Instance (T));
-          while E1 /= null loop
-             E2 := Tab.Get_Next (Tab.Instance (T));
-             Free (E1);
-             E1 := E2;
-          end loop;
- 
-          Tab.Reset (Tab.Instance (T));
-       end Reset;
- 
-       ---------
-       -- Set --
-       ---------
- 
-       procedure Set (T : in out Instance; K : Key; E : Element) is
-          Tmp : constant Elmt_Ptr := Tab.Get (Tab.Instance (T), K);
-       begin
-          if Tmp = null then
-             Tab.Set (Tab.Instance (T), new Element_Wrapper'(K, E, null));
-          else
-             Tmp.E := E;
-          end if;
-       end Set;
- 
-       --------------
-       -- Set_Next --
-       --------------
- 
-       procedure Set_Next (E : Elmt_Ptr; Next : Elmt_Ptr) is
-       begin
-          E.Next := Next;
-       end Set_Next;
- 
-    end Simple_HTable;
- 
-    ------------------------
-    -- Load_Factor_HTable --
-    ------------------------
- 
-    package body Load_Factor_HTable is
- 
-       Min_Size_Increase : constant := 5;
-       --  The minimum increase expressed as number of buckets. This value is
-       --  used to determine the new size of small tables and/or small growth
-       --  percentages.
- 
-       procedure Attach
-         (Elmt  : not null Element_Ptr;
-          Chain : not null Element_Ptr);
-       --  Prepend an element to a bucket chain. Elmt is inserted after the
-       --  dummy head of Chain.
- 
-       function Create_Buckets (Size : Positive) return Buckets_Array_Ptr;
-       --  Allocate and initialize a new set of buckets. The buckets are created
-       --  in the range Range_Type'First .. Range_Type'First + Size - 1.
- 
-       procedure Detach (Elmt : not null Element_Ptr);
-       --  Remove an element from an arbitrary bucket chain
- 
-       function Find
-         (Key   : Key_Type;
-          Chain : not null Element_Ptr) return Element_Ptr;
-       --  Try to locate the element which contains a particular key within a
-       --  bucket chain. If no such element exists, return No_Element.
- 
-       procedure Free is
-         new Ada.Unchecked_Deallocation (Buckets_Array, Buckets_Array_Ptr);
- 
-       procedure Free is
-         new Ada.Unchecked_Deallocation (Element, Element_Ptr);
- 
-       function Is_Empty_Chain (Chain : not null Element_Ptr) return Boolean;
-       --  Determine whether a bucket chain contains only one element, namely
-       --  the dummy head.
- 
-       ------------
-       -- Attach --
-       ------------
- 
-       procedure Attach
-         (Elmt  : not null Element_Ptr;
-          Chain : not null Element_Ptr)
-       is
-       begin
-          Chain.Next.Prev := Elmt;
-          Elmt.Next  := Chain.Next;
-          Chain.Next := Elmt;
-          Elmt.Prev  := Chain;
-       end Attach;
- 
-       --------------------
-       -- Create_Buckets --
-       --------------------
- 
-       function Create_Buckets (Size : Positive) return Buckets_Array_Ptr is
-          Low_Bound : constant Range_Type := Range_Type'First;
-          Buckets   : Buckets_Array_Ptr;
- 
-       begin
-          Buckets :=
-            new Buckets_Array (Low_Bound .. Low_Bound + Range_Type (Size) - 1);
- 
-          --  Ensure that the dummy head of each bucket chain points to itself
-          --  in both directions.
- 
-          for Index in Buckets'Range loop
-             declare
-                Bucket : Element renames Buckets (Index);
- 
-             begin
-                Bucket.Prev := Bucket'Unchecked_Access;
-                Bucket.Next := Bucket'Unchecked_Access;
-             end;
-          end loop;
- 
-          return Buckets;
-       end Create_Buckets;
- 
-       ------------------
-       -- Current_Size --
-       ------------------
- 
-       function Current_Size (T : Table) return Positive is
-       begin
-          --  The table should have been properly initialized during object
-          --  elaboration.
- 
-          if T.Buckets = null then
-             raise Program_Error;
- 
-          --  The size of the table is determined by the number of buckets
- 
-          else
-             return T.Buckets'Length;
-          end if;
-       end Current_Size;
- 
-       ------------
-       -- Detach --
-       ------------
- 
-       procedure Detach (Elmt : not null Element_Ptr) is
-       begin
-          if Elmt.Prev /= null and Elmt.Next /= null then
-             Elmt.Prev.Next := Elmt.Next;
-             Elmt.Next.Prev := Elmt.Prev;
-             Elmt.Prev := null;
-             Elmt.Next := null;
-          end if;
-       end Detach;
- 
-       --------------
-       -- Finalize --
-       --------------
- 
-       procedure Finalize (T : in out Table) is
-          Bucket : Element_Ptr;
-          Elmt   : Element_Ptr;
- 
-       begin
-          --  Inspect the buckets and deallocate bucket chains
- 
-          for Index in T.Buckets'Range loop
-             Bucket := T.Buckets (Index)'Unchecked_Access;
- 
-             --  The current bucket chain contains an element other than the
-             --  dummy head.
- 
-             while not Is_Empty_Chain (Bucket) loop
- 
-                --  Skip the dummy head, remove and deallocate the element
- 
-                Elmt := Bucket.Next;
-                Detach (Elmt);
-                Free   (Elmt);
-             end loop;
-          end loop;
- 
-          --  Deallocate the buckets
- 
-          Free (T.Buckets);
-       end Finalize;
- 
-       ----------
-       -- Find --
-       ----------
- 
-       function Find
-         (Key   : Key_Type;
-          Chain : not null Element_Ptr) return Element_Ptr
-       is
-          Elmt : Element_Ptr;
- 
-       begin
-          --  Skip the dummy head, inspect the bucket chain for an element whose
-          --  key matches the requested key. Since each bucket chain is circular
-          --  the search must stop once the dummy head is encountered.
- 
-          Elmt := Chain.Next;
-          while Elmt /= Chain loop
-             if Equal (Elmt.Key, Key) then
-                return Elmt;
-             end if;
- 
-             Elmt := Elmt.Next;
-          end loop;
- 
-          return No_Element;
-       end Find;
- 
-       ---------
-       -- Get --
-       ---------
- 
-       function Get (T : Table; Key : Key_Type) return Value_Type is
-          Bucket : Element_Ptr;
-          Elmt   : Element_Ptr;
- 
-       begin
-          --  Obtain the bucket chain where the (key, value) pair should reside
-          --  by calculating the proper hash location.
- 
-          Bucket := T.Buckets (Hash (Key, Current_Size (T)))'Unchecked_Access;
- 
-          --  Try to find an element whose key matches the requested key
- 
-          Elmt := Find (Key, Bucket);
- 
-          --  The hash table does not contain a matching (key, value) pair
- 
-          if Elmt = No_Element then
-             return No_Value;
-          else
-             return Elmt.Val;
-          end if;
-       end Get;
- 
-       ----------------
-       -- Initialize --
-       ----------------
- 
-       procedure Initialize (T : in out Table) is
-       begin
-          pragma Assert (T.Buckets = null);
- 
-          T.Buckets       := Create_Buckets (Initial_Size);
-          T.Element_Count := 0;
-       end Initialize;
- 
-       --------------------
-       -- Is_Empty_Chain --
-       --------------------
- 
-       function Is_Empty_Chain (Chain : not null Element_Ptr) return Boolean is
-       begin
-          return Chain.Next = Chain and Chain.Prev = Chain;
-       end Is_Empty_Chain;
- 
-       ------------
-       -- Remove --
-       ------------
- 
-       procedure Remove (T : in out Table; Key : Key_Type) is
-          Bucket : Element_Ptr;
-          Elmt   : Element_Ptr;
- 
-       begin
-          --  Obtain the bucket chain where the (key, value) pair should reside
-          --  by calculating the proper hash location.
- 
-          Bucket := T.Buckets (Hash (Key, Current_Size (T)))'Unchecked_Access;
- 
-          --  Try to find an element whose key matches the requested key
- 
-          Elmt := Find (Key, Bucket);
- 
-          --  Remove and deallocate the (key, value) pair
- 
-          if Elmt /= No_Element then
-             Detach (Elmt);
-             Free   (Elmt);
-          end if;
-       end Remove;
- 
-       ---------
-       -- Set --
-       ---------
- 
-       procedure Set
-         (T   : in out Table;
-          Key : Key_Type;
-          Val : Value_Type)
-       is
-          Curr_Size : constant Positive := Current_Size (T);
- 
-          procedure Grow;
-          --  Grow the table to a new size according to the desired percentage
-          --  and relocate all existing elements to the new buckets.
- 
-          ----------
-          -- Grow --
-          ----------
- 
-          procedure Grow is
-             Buckets     : Buckets_Array_Ptr;
-             Elmt        : Element_Ptr;
-             Hash_Loc    : Range_Type;
-             Old_Bucket  : Element_Ptr;
-             Old_Buckets : Buckets_Array_Ptr := T.Buckets;
-             Size        : Positive;
- 
-          begin
-             --  Calculate the new size and allocate a new set of buckets. Note
-             --  that a table with a small size or a small growth percentage may
-             --  not always grow (for example, 10 buckets and 3% increase). In
-             --  that case, enforce a minimum increase.
- 
-             Size :=
-               Positive'Max (Curr_Size * ((100 + Growth_Percentage) / 100),
-                             Min_Size_Increase);
-             Buckets := Create_Buckets (Size);
- 
-             --  Inspect the old buckets and transfer all elements by rehashing
-             --  all (key, value) pairs in the new buckets.
- 
-             for Index in Old_Buckets'Range loop
-                Old_Bucket := Old_Buckets (Index)'Unchecked_Access;
- 
-                --  The current bucket chain contains an element other than the
-                --  dummy head.
- 
-                while not Is_Empty_Chain (Old_Bucket) loop
- 
-                   --  Skip the dummy head and find the new hash location
- 
-                   Elmt     := Old_Bucket.Next;
-                   Hash_Loc := Hash (Elmt.Key, Size);
- 
-                   --  Remove the element from the old buckets and insert it
-                   --  into the new buckets. Note that there is no need to check
-                   --  for duplicates because the hash table did not have any to
-                   --  begin with.
- 
-                   Detach (Elmt);
-                   Attach
-                     (Elmt  => Elmt,
-                      Chain => Buckets (Hash_Loc)'Unchecked_Access);
-                end loop;
-             end loop;
- 
-             --  Associate the new buckets with the table and reclaim the
-             --  storage occupied by the old buckets.
- 
-             T.Buckets := Buckets;
- 
-             Free (Old_Buckets);
-          end Grow;
- 
-          --  Local variables
- 
-          subtype LLF is Long_Long_Float;
- 
-          Count    : Natural renames T.Element_Count;
-          Bucket   : Element_Ptr;
-          Hash_Loc : Range_Type;
- 
-       --  Start of processing for Set
- 
-       begin
-          --  Find the bucket where the (key, value) pair should be inserted by
-          --  computing the proper hash location.
- 
-          Hash_Loc := Hash (Key, Curr_Size);
-          Bucket   := T.Buckets (Hash_Loc)'Unchecked_Access;
- 
-          --  Ensure that the key is not already present in the bucket in order
-          --  to avoid duplicates.
- 
-          if Find (Key, Bucket) = No_Element then
-             Attach
-               (Elmt  => new Element'(Key, Val, null, null),
-                Chain => Bucket);
-             Count := Count + 1;
- 
-             --  Multiple insertions may cause long bucket chains and decrease
-             --  the performance of basic operations. If this is the case, grow
-             --  the table and rehash all existing elements.
- 
-             if (LLF (Count) / LLF (Curr_Size)) > LLF (Load_Factor) then
-                Grow;
-             end if;
-          end if;
-       end Set;
-    end Load_Factor_HTable;
- 
- end GNAT.Dynamic_HTables;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-dynhta.ads gcc-8.1.0/gcc/ada/g-dynhta.ads
*** gcc-7.3.0/gcc/ada/g-dynhta.ads	Fri Oct 31 10:59:56 2014
--- gcc-8.1.0/gcc/ada/g-dynhta.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,349 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                 G N A T . D Y N A M I C _ H T A B L E S                  --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 1995-2014, AdaCore                     --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Hash table searching routines
- 
- --  This package contains three separate packages. The Simple_HTable package
- --  provides a very simple abstraction that associates one element to one key
- --  value and takes care of all allocations automatically using the heap. The
- --  Static_HTable package provides a more complex interface that allows full
- --  control over allocation. The Load_Factor_HTable package provides a more
- --  complex abstraction where collisions are resolved by chaining, and the
- --  table grows by a percentage after the load factor has been exceeded.
- 
- --  This package provides a facility similar to that of GNAT.HTable, except
- --  that this package declares types that can be used to define dynamic
- --  instances of hash tables, while instantiations in GNAT.HTable creates a
- --  single instance of the hash table.
- 
- --  Note that this interface should remain synchronized with those in
- --  GNAT.HTable to keep as much coherency as possible between these two
- --  related units.
- 
- private with Ada.Finalization;
- 
- package GNAT.Dynamic_HTables is
- 
-    -------------------
-    -- Static_HTable --
-    -------------------
- 
-    --  A low-level Hash-Table abstraction, not as easy to instantiate as
-    --  Simple_HTable. This mirrors the interface of GNAT.HTable.Static_HTable,
-    --  but does require dynamic allocation (since we allow multiple instances
-    --  of the table). The model is that each Element contains its own Key that
-    --  can be retrieved by Get_Key. Furthermore, Element provides a link that
-    --  can be used by the HTable for linking elements with same hash codes:
- 
-    --       Element
- 
-    --         +-------------------+
-    --         |       Key         |
-    --         +-------------------+
-    --         :    other data     :
-    --         +-------------------+
-    --         |     Next Elmt     |
-    --         +-------------------+
- 
-    generic
-       type Header_Num is range <>;
-       --  An integer type indicating the number and range of hash headers
- 
-       type Element (<>) is limited private;
-       --  The type of element to be stored
- 
-       type Elmt_Ptr is private;
-       --  The type used to reference an element (will usually be an access
-       --  type, but could be some other form of type such as an integer type).
- 
-       Null_Ptr : Elmt_Ptr;
-       --  The null value of the Elmt_Ptr type
- 
-       with procedure Set_Next (E : Elmt_Ptr; Next : Elmt_Ptr);
-       with function  Next     (E : Elmt_Ptr) return Elmt_Ptr;
-       --  The type must provide an internal link for the sake of the
-       --  staticness of the HTable.
- 
-       type Key is limited private;
-       with function Get_Key (E : Elmt_Ptr) return Key;
-       with function Hash    (F : Key)      return Header_Num;
-       with function Equal   (F1, F2 : Key) return Boolean;
- 
-    package Static_HTable is
- 
-       type Instance is private;
-       Nil : constant Instance;
- 
-       procedure Reset (T : in out Instance);
-       --  Resets the hash table by releasing all memory associated with
-       --  it. The hash table can safely be reused after this call. For the
-       --  most common case where Elmt_Ptr is an access type, and Null_Ptr is
-       --  null, this is only needed if the same table is reused in a new
-       --  context. If Elmt_Ptr is other than an access type, or Null_Ptr is
-       --  other than null, then Reset must be called before the first use of
-       --  the hash table.
- 
-       procedure Set (T : in out Instance; E : Elmt_Ptr);
-       --  Insert the element pointer in the HTable
- 
-       function Get (T : Instance; K : Key) return Elmt_Ptr;
-       --  Returns the latest inserted element pointer with the given Key
-       --  or null if none.
- 
-       procedure Remove (T : Instance; K : Key);
-       --  Removes the latest inserted element pointer associated with the
-       --  given key if any, does nothing if none.
- 
-       function Get_First (T : Instance) return Elmt_Ptr;
-       --  Returns Null_Ptr if the Htable is empty, otherwise returns one
-       --  non specified element. There is no guarantee that 2 calls to this
-       --  function will return the same element.
- 
-       function Get_Next (T : Instance) return Elmt_Ptr;
-       --  Returns a non-specified element that has not been returned by the
-       --  same function since the last call to Get_First or Null_Ptr if
-       --  there is no such element or Get_First has never been called. If
-       --  there is no call to 'Set' in between Get_Next calls, all the
-       --  elements of the Htable will be traversed.
- 
-    private
-       type Instance_Data;
-       type Instance is access all Instance_Data;
-       Nil : constant Instance := null;
-    end Static_HTable;
- 
-    -------------------
-    -- Simple_HTable --
-    -------------------
- 
-    --  A simple hash table abstraction, easy to instantiate, easy to use.
-    --  The table associates one element to one key with the procedure Set.
-    --  Get retrieves the Element stored for a given Key. The efficiency of
-    --  retrieval is function of the size of the Table parameterized by
-    --  Header_Num and the hashing function Hash.
- 
-    generic
-       type Header_Num is range <>;
-       --  An integer type indicating the number and range of hash headers
- 
-       type Element is private;
-       --  The type of element to be stored
- 
-       No_Element : Element;
-       --  The object that is returned by Get when no element has been set for
-       --  a given key
- 
-       type Key is private;
-       with function Hash  (F : Key)      return Header_Num;
-       with function Equal (F1, F2 : Key) return Boolean;
- 
-    package Simple_HTable is
- 
-       type Instance is private;
-       Nil : constant Instance;
- 
-       procedure Set (T : in out Instance; K : Key; E : Element);
-       --  Associates an element with a given key. Overrides any previously
-       --  associated element.
- 
-       procedure Reset (T : in out Instance);
-       --  Releases all memory associated with the table. The table can be
-       --  reused after this call (it is automatically allocated on the first
-       --  access to the table).
- 
-       function Get (T : Instance; K : Key) return Element;
-       --  Returns the Element associated with a key or No_Element if the
-       --  given key has not associated element
- 
-       procedure Remove (T : Instance; K : Key);
-       --  Removes the latest inserted element pointer associated with the
-       --  given key if any, does nothing if none.
- 
-       function Get_First (T : Instance) return Element;
-       --  Returns No_Element if the Htable is empty, otherwise returns one
-       --  non specified element. There is no guarantee that two calls to this
-       --  function will return the same element, if the Htable has been
-       --  modified between the two calls.
- 
-       function Get_Next (T : Instance) return Element;
-       --  Returns a non-specified element that has not been returned by the
-       --  same function since the last call to Get_First or No_Element if
-       --  there is no such element. If there is no call to 'Set' in between
-       --  Get_Next calls, all the elements of the Htable will be traversed.
-       --  To guarantee that all the elements of the Htable will be traversed,
-       --  no modification of the Htable (Set, Reset, Remove) should occur
-       --  between a call to Get_First and subsequent consecutive calls to
-       --  Get_Next, until one of these calls returns No_Element.
- 
-    private
- 
-       type Element_Wrapper;
-       type Elmt_Ptr is access all Element_Wrapper;
-       type Element_Wrapper is record
-          K    : Key;
-          E    : Element;
-          Next : Elmt_Ptr;
-       end record;
- 
-       procedure Set_Next (E : Elmt_Ptr; Next : Elmt_Ptr);
-       function  Next     (E : Elmt_Ptr) return Elmt_Ptr;
-       function  Get_Key  (E : Elmt_Ptr) return Key;
- 
-       package Tab is new Static_HTable
-         (Header_Num => Header_Num,
-          Element    => Element_Wrapper,
-          Elmt_Ptr   => Elmt_Ptr,
-          Null_Ptr   => null,
-          Set_Next   => Set_Next,
-          Next       => Next,
-          Key        => Key,
-          Get_Key    => Get_Key,
-          Hash       => Hash,
-          Equal      => Equal);
- 
-       type Instance is new Tab.Instance;
-       Nil : constant Instance := Instance (Tab.Nil);
- 
-    end Simple_HTable;
- 
-    ------------------------
-    -- Load_Factor_HTable --
-    ------------------------
- 
-    --  A simple hash table abstraction capable of growing once a threshold has
-    --  been exceeded. Collisions are resolved by chaining elements onto lists
-    --  hanging from individual buckets. This implementation does not make any
-    --  effort to minimize the number of necessary rehashes once the table has
-    --  been expanded, hence the term "simple".
- 
-    --  WARNING: This hash table implementation utilizes dynamic allocation.
-    --  Storage reclamation is performed by the hash table.
- 
-    --  WARNING: This hash table implementation is not thread-safe. To achieve
-    --  proper concurrency and synchronization, wrap an instance of a table in
-    --  a protected object.
- 
-    generic
-       type Range_Type is range <>;
-       --  The underlying range of the hash table. Note that this type must be
-       --  large enough to accommodate multiple expansions of the table.
- 
-       type Key_Type is private;
-       type Value_Type is private;
-       --  The types of the (key, value) pair stored in the hash table
- 
-       No_Value : Value_Type;
-       --  A predefined value denoting a non-existent value
- 
-       Initial_Size : Positive;
-       --  The starting size of the hash table. The hash table must contain at
-       --  least one bucket.
- 
-       Growth_Percentage : Positive;
-       --  The amount of increase expressed as a percentage. The hash table must
-       --  grow by at least 1%. To illustrate, a value of 100 will increase the
-       --  table by 100%, effectively doubling its size.
- 
-       Load_Factor : Float;
-       --  The ratio of the elements stored within the hash table divided by the
-       --  current size of the table. This value acts as the growth threshold.
-       --  If exceeded, the hash table is expanded by Growth_Percentage.
- 
-       with function Equal
-         (Left  : Key_Type;
-          Right : Key_Type) return Boolean;
- 
-       with function Hash
-         (Key  : Key_Type;
-          Size : Positive) return Range_Type;
-       --  Parameter Size denotes the current size of the hash table
- 
-    package Load_Factor_HTable is
-       type Table is tagged limited private;
- 
-       function Current_Size (T : Table) return Positive;
-       --  Obtain the current size of the table
- 
-       function Get (T : Table; Key : Key_Type) return Value_Type;
-       --  Obtain the value associated with a key. This routine returns No_Value
-       --  if the key is not present in the hash table.
- 
-       procedure Remove (T : in out Table; Key : Key_Type);
-       --  Remove the value associated with the given key. This routine has no
-       --  effect if the key is not present in the hash table.
- 
-       procedure Set
-         (T   : in out Table;
-          Key : Key_Type;
-          Val : Value_Type);
-       --  Associate a value with a given key. This routine has no effect if the
-       --  the (key, value) pair is already present in the hash table. Note that
-       --  this action may cause the table to grow.
- 
-    private
-       --  The following types model a bucket chain. Note that the key is also
-       --  stored for rehashing purposes.
- 
-       type Element;
-       type Element_Ptr is access all Element;
-       type Element is record
-          Key  : Key_Type;
-          Val  : Value_Type;
-          Prev : Element_Ptr := null;
-          Next : Element_Ptr := null;
-       end record;
- 
-       No_Element : constant Element_Ptr := null;
- 
-       --  The following types model the buckets of the hash table. Each bucket
-       --  has a dummy head to facilitate insertion and deletion of elements.
- 
-       type Buckets_Array is array (Range_Type range <>) of aliased Element;
-       type Buckets_Array_Ptr is access all Buckets_Array;
- 
-       type Table is new Ada.Finalization.Limited_Controlled with record
-          Buckets : Buckets_Array_Ptr := null;
- 
-          Element_Count : Natural := 0;
-          --  The number of (key, value) pairs stored in the hash table
-       end record;
- 
-       procedure Finalize (T : in out Table);
-       --  Destroy the contents of a hash table by reclaiming all storage used
-       --  by buckets and their respective chains.
- 
-       procedure Initialize (T : in out Table);
-       --  Create a hash table with buckets within the range Range_Type'First ..
-       --  Range_Type'First + Initial_Size - 1.
- 
-    end Load_Factor_HTable;
- 
- end GNAT.Dynamic_HTables;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-dyntab.adb gcc-8.1.0/gcc/ada/g-dyntab.adb
*** gcc-7.3.0/gcc/ada/g-dyntab.adb	Wed Oct 12 12:55:47 2016
--- gcc-8.1.0/gcc/ada/g-dyntab.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,415 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                   G N A T . D Y N A M I C _ T A B L E S                  --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 2000-2016, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 Compiler_Unit_Warning;
- 
- with GNAT.Heap_Sort_G;
- 
- with Ada.Unchecked_Deallocation;
- 
- package body GNAT.Dynamic_Tables is
- 
-    Empty : constant Table_Ptr :=
-              Empty_Table_Array_Ptr_To_Table_Ptr (Empty_Table_Array'Access);
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    procedure Grow (T : in out Instance; New_Last : Table_Count_Type);
-    --  This is called when we are about to set the value of Last to a value
-    --  that is larger than Last_Allocated. This reallocates the table to the
-    --  larger size, as indicated by New_Last. At the time this is called,
-    --  T.P.Last is still the old value.
- 
-    --------------
-    -- Allocate --
-    --------------
- 
-    procedure Allocate (T : in out Instance; Num : Integer := 1) is
-    begin
-       --  Note that Num can be negative
- 
-       Set_Last (T, T.P.Last + Table_Index_Type'Base (Num));
-    end Allocate;
- 
-    ------------
-    -- Append --
-    ------------
- 
-    procedure Append (T : in out Instance; New_Val : Table_Component_Type) is
-    begin
-       Set_Item (T, T.P.Last + 1, New_Val);
-    end Append;
- 
-    ----------------
-    -- Append_All --
-    ----------------
- 
-    procedure Append_All (T : in out Instance; New_Vals : Table_Type) is
-    begin
-       for J in New_Vals'Range loop
-          Append (T, New_Vals (J));
-       end loop;
-    end Append_All;
- 
-    --------------------
-    -- Decrement_Last --
-    --------------------
- 
-    procedure Decrement_Last (T : in out Instance) is
-    begin
-       Allocate (T, -1);
-    end Decrement_Last;
- 
-    -----------
-    -- First --
-    -----------
- 
-    function First return Table_Index_Type is
-    begin
-       return Table_Low_Bound;
-    end First;
- 
-    --------------
-    -- For_Each --
-    --------------
- 
-    procedure For_Each (Table : Instance) is
-       Quit : Boolean := False;
-    begin
-       for Index in Table_Low_Bound .. Table.P.Last loop
-          Action (Index, Table.Table (Index), Quit);
-          exit when Quit;
-       end loop;
-    end For_Each;
- 
-    ----------
-    -- Free --
-    ----------
- 
-    procedure Free (T : in out Instance) is
-       subtype Alloc_Type is Table_Type (First .. T.P.Last_Allocated);
-       type Alloc_Ptr is access all Alloc_Type;
- 
-       procedure Free is new Ada.Unchecked_Deallocation (Alloc_Type, Alloc_Ptr);
-       function To_Alloc_Ptr is
-         new Ada.Unchecked_Conversion (Table_Ptr, Alloc_Ptr);
- 
-       Temp : Alloc_Ptr := To_Alloc_Ptr (T.Table);
- 
-    begin
-       if T.Table = Empty then
-          pragma Assert (T.P.Last_Allocated = First - 1);
-          pragma Assert (T.P.Last = First - 1);
-          null;
-       else
-          Free (Temp);
-          T.Table := Empty;
-          T.P.Last_Allocated := First - 1;
-          T.P.Last := First - 1;
-       end if;
-    end Free;
- 
-    ----------
-    -- Grow --
-    ----------
- 
-    procedure Grow (T : in out Instance; New_Last : Table_Count_Type) is
- 
-       --  Note: Type Alloc_Ptr below needs to be declared locally so we know
-       --  the bounds. That means that the collection is local, so is finalized
-       --  when leaving Grow. That's why this package doesn't support controlled
-       --  types; the table elements would be finalized prematurely. An Ada
-       --  implementation would also be within its rights to reclaim the
-       --  storage. Fortunately, GNAT doesn't do that.
- 
-       pragma Assert (not T.Locked);
-       pragma Assert (New_Last > T.P.Last_Allocated);
- 
-       subtype Table_Length_Type is Table_Index_Type'Base
-         range 0 .. Table_Index_Type'Base'Last;
- 
-       Old_Last_Allocated   : constant Table_Count_Type  := T.P.Last_Allocated;
-       Old_Allocated_Length : constant Table_Length_Type :=
-                                Old_Last_Allocated - First + 1;
- 
-       New_Length : constant Table_Length_Type := New_Last - First + 1;
-       New_Allocated_Length : Table_Length_Type;
- 
-    begin
-       if T.Table = Empty then
-          New_Allocated_Length := Table_Length_Type (Table_Initial);
-       else
-          New_Allocated_Length :=
-            Table_Length_Type
-              (Long_Long_Integer (Old_Allocated_Length) *
-                (100 + Long_Long_Integer (Table_Increment)) / 100);
-       end if;
- 
-       --  Make sure it really did grow
- 
-       if New_Allocated_Length <= Old_Allocated_Length then
-          New_Allocated_Length := Old_Allocated_Length + 10;
-       end if;
- 
-       if New_Allocated_Length <= New_Length then
-          New_Allocated_Length := New_Length + 10;
-       end if;
- 
-       pragma Assert (New_Allocated_Length > Old_Allocated_Length);
-       pragma Assert (New_Allocated_Length > New_Length);
- 
-       T.P.Last_Allocated := First + New_Allocated_Length - 1;
- 
-       declare
-          subtype Old_Alloc_Type is Table_Type (First .. Old_Last_Allocated);
-          type Old_Alloc_Ptr is access all Old_Alloc_Type;
- 
-          procedure Free is
-            new Ada.Unchecked_Deallocation (Old_Alloc_Type, Old_Alloc_Ptr);
-          function To_Old_Alloc_Ptr is
-            new Ada.Unchecked_Conversion (Table_Ptr, Old_Alloc_Ptr);
- 
-          subtype Alloc_Type is
-            Table_Type (First .. First + New_Allocated_Length - 1);
-          type Alloc_Ptr is access all Alloc_Type;
- 
-          function To_Table_Ptr is
-            new Ada.Unchecked_Conversion (Alloc_Ptr, Table_Ptr);
- 
-          Old_Table : Old_Alloc_Ptr := To_Old_Alloc_Ptr (T.Table);
-          New_Table : constant Alloc_Ptr := new Alloc_Type;
- 
-       begin
-          if T.Table /= Empty then
-             New_Table (First .. T.P.Last) := Old_Table (First .. T.P.Last);
-             Free (Old_Table);
-          end if;
- 
-          T.Table := To_Table_Ptr (New_Table);
-       end;
- 
-       pragma Assert (New_Last <= T.P.Last_Allocated);
-       pragma Assert (T.Table /= null);
-       pragma Assert (T.Table /= Empty);
-    end Grow;
- 
-    --------------------
-    -- Increment_Last --
-    --------------------
- 
-    procedure Increment_Last (T : in out Instance) is
-    begin
-       Allocate (T, 1);
-    end Increment_Last;
- 
-    ----------
-    -- Init --
-    ----------
- 
-    procedure Init (T : in out Instance) is
-    begin
-       Free (T);
-    end Init;
- 
-    ----------
-    -- Last --
-    ----------
- 
-    function Last (T : Instance) return Table_Count_Type is
-    begin
-       return T.P.Last;
-    end Last;
- 
-    -------------
-    -- Release --
-    -------------
- 
-    procedure Release (T : in out Instance) is
-       pragma Assert (not T.Locked);
-       Old_Last_Allocated : constant Table_Count_Type := T.P.Last_Allocated;
-    begin
-       if T.P.Last /= T.P.Last_Allocated then
-          pragma Assert (T.P.Last < T.P.Last_Allocated);
-          pragma Assert (T.Table /= Empty);
- 
-          declare
-             subtype Old_Alloc_Type is Table_Type (First .. Old_Last_Allocated);
-             type Old_Alloc_Ptr is access all Old_Alloc_Type;
- 
-             procedure Free is
-               new Ada.Unchecked_Deallocation (Old_Alloc_Type, Old_Alloc_Ptr);
-             function To_Old_Alloc_Ptr is
-               new Ada.Unchecked_Conversion (Table_Ptr, Old_Alloc_Ptr);
- 
-             subtype Alloc_Type is
-               Table_Type (First .. First + T.P.Last - 1);
-             type Alloc_Ptr is access all Alloc_Type;
- 
-             function To_Table_Ptr is
-               new Ada.Unchecked_Conversion (Alloc_Ptr, Table_Ptr);
- 
-             Old_Table : Old_Alloc_Ptr := To_Old_Alloc_Ptr (T.Table);
-             New_Table : constant Alloc_Ptr := new Alloc_Type'(Old_Table.all);
-          begin
-             T.P.Last_Allocated := T.P.Last;
-             Free (Old_Table);
-             T.Table := To_Table_Ptr (New_Table);
-          end;
-       end if;
- 
-       pragma Assert (T.P.Last = T.P.Last_Allocated);
-    end Release;
- 
-    --------------
-    -- Set_Item --
-    --------------
- 
-    procedure Set_Item
-      (T     : in out Instance;
-       Index : Valid_Table_Index_Type;
-       Item  : Table_Component_Type)
-    is
-       Item_Copy : constant Table_Component_Type := Item;
-    begin
-       --  If Set_Last is going to reallocate the table, we make a copy of Item,
-       --  in case the call was "Set_Item (T, X, T.Table (Y));", and Item is
-       --  passed by reference. Without the copy, we would deallocate the array
-       --  containing Item, leaving a dangling pointer.
- 
-       if Index > T.P.Last_Allocated then
-          declare
-             Item_Copy : constant Table_Component_Type := Item;
-          begin
-             Set_Last (T, Index);
-             T.Table (Index) := Item_Copy;
-          end;
- 
-          return;
-       end if;
- 
-       if Index > T.P.Last then
-          Set_Last (T, Index);
-       end if;
- 
-       T.Table (Index) := Item_Copy;
-    end Set_Item;
- 
-    --------------
-    -- Set_Last --
-    --------------
- 
-    procedure Set_Last (T : in out Instance; New_Val : Table_Count_Type) is
-       pragma Assert (not T.Locked);
-    begin
-       if New_Val > T.P.Last_Allocated then
-          Grow (T, New_Val);
-       end if;
- 
-       T.P.Last := New_Val;
-    end Set_Last;
- 
-    ----------------
-    -- Sort_Table --
-    ----------------
- 
-    procedure Sort_Table (Table : in out Instance) is
-       Temp : Table_Component_Type;
-       --  A temporary position to simulate index 0
- 
-       --  Local subprograms
- 
-       function Index_Of (Idx : Natural) return Table_Index_Type'Base;
-       --  Return index of Idx'th element of table
- 
-       function Lower_Than (Op1, Op2 : Natural) return Boolean;
-       --  Compare two components
- 
-       procedure Move (From : Natural; To : Natural);
-       --  Move one component
- 
-       package Heap_Sort is new GNAT.Heap_Sort_G (Move, Lower_Than);
- 
-       --------------
-       -- Index_Of --
-       --------------
- 
-       function Index_Of (Idx : Natural) return Table_Index_Type'Base is
-          J : constant Integer'Base :=
-                Table_Index_Type'Base'Pos (First) + Idx - 1;
-       begin
-          return Table_Index_Type'Base'Val (J);
-       end Index_Of;
- 
-       ----------
-       -- Move --
-       ----------
- 
-       procedure Move (From : Natural; To : Natural) is
-       begin
-          if From = 0 then
-             Table.Table (Index_Of (To)) := Temp;
- 
-          elsif To = 0 then
-             Temp := Table.Table (Index_Of (From));
- 
-          else
-             Table.Table (Index_Of (To)) :=
-               Table.Table (Index_Of (From));
-          end if;
-       end Move;
- 
-       ----------------
-       -- Lower_Than --
-       ----------------
- 
-       function Lower_Than (Op1, Op2 : Natural) return Boolean is
-       begin
-          if Op1 = 0 then
-             return Lt (Temp, Table.Table (Index_Of (Op2)));
- 
-          elsif Op2 = 0 then
-             return Lt (Table.Table (Index_Of (Op1)), Temp);
- 
-          else
-             return
-               Lt (Table.Table (Index_Of (Op1)), Table.Table (Index_Of (Op2)));
-          end if;
-       end Lower_Than;
- 
-    --  Start of processing for Sort_Table
- 
-    begin
-       Heap_Sort.Sort (Natural (Last (Table) - First) + 1);
-    end Sort_Table;
- 
- end GNAT.Dynamic_Tables;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-dyntab.ads gcc-8.1.0/gcc/ada/g-dyntab.ads
*** gcc-7.3.0/gcc/ada/g-dyntab.ads	Wed Oct 12 12:55:47 2016
--- gcc-8.1.0/gcc/ada/g-dyntab.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,249 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                   G N A T . D Y N A M I C _ T A B L E S                  --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 2000-2016, AdaCore                     --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Resizable one dimensional array support
- 
- --  This package provides an implementation of dynamically resizable one
- --  dimensional arrays. The idea is to mimic the normal Ada semantics for
- --  arrays as closely as possible with the one additional capability of
- --  dynamically modifying the value of the Last attribute.
- 
- --  This package provides a facility similar to that of GNAT.Table, except
- --  that this package declares a type that can be used to define dynamic
- --  instances of the table, while an instantiation of GNAT.Table creates a
- --  single instance of the table type.
- 
- --  Note that these three interfaces should remain synchronized to keep as much
- --  coherency as possible among these three related units:
- --
- --     GNAT.Dynamic_Tables
- --     GNAT.Table
- --     Table (the compiler unit)
- 
- pragma Compiler_Unit_Warning;
- 
- with Ada.Unchecked_Conversion;
- 
- generic
-    type Table_Component_Type is private;
-    type Table_Index_Type     is range <>;
- 
-    Table_Low_Bound : Table_Index_Type;
-    Table_Initial   : Positive := 8;
-    Table_Increment : Natural := 100;
- 
- package GNAT.Dynamic_Tables is
- 
-    --  Table_Component_Type and Table_Index_Type specify the type of the array,
-    --  Table_Low_Bound is the lower bound. The effect is roughly to declare:
- 
-    --    Table : array (Table_Low_Bound .. <>) of Table_Component_Type;
- 
-    --  The lower bound of Table_Index_Type is ignored.
- 
-    pragma Assert (Table_Low_Bound /= Table_Index_Type'Base'First);
- 
-    function First return Table_Index_Type;
-    pragma Inline (First);
-    --  Export First as synonym for Table_Low_Bound (parallel with use of Last)
- 
-    subtype Valid_Table_Index_Type is Table_Index_Type'Base
-      range Table_Low_Bound .. Table_Index_Type'Base'Last;
-    subtype Table_Count_Type is Table_Index_Type'Base
-      range Table_Low_Bound - 1 .. Table_Index_Type'Base'Last;
- 
-    --  Table_Component_Type must not be a type with controlled parts.
- 
-    --  The Table_Initial value controls the allocation of the table when
-    --  it is first allocated.
- 
-    --  The Table_Increment value controls the amount of increase, if the
-    --  table has to be increased in size. The value given is a percentage
-    --  value (e.g. 100 = increase table size by 100%, i.e. double it).
- 
-    --  The Last and Set_Last subprograms provide control over the current
-    --  logical allocation. They are quite efficient, so they can be used
-    --  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;
-    subtype Big_Table_Type is
-      Table_Type (Table_Low_Bound .. Valid_Table_Index_Type'Last);
-    --  We work with pointers to a bogus array type that is constrained with
-    --  the maximum possible range bound. This means that the pointer is a thin
-    --  pointer, which is more efficient. Since subscript checks in any case
-    --  must be on the logical, rather than physical bounds, safety is not
-    --  compromised by this approach.
- 
-    --  To get subscript checking, rename a slice of the Table, like this:
- 
-    --     Table : Table_Type renames T.Table (First .. Last (T));
- 
-    --  and the refer to components of Table.
- 
-    type Table_Ptr is access all Big_Table_Type;
-    for Table_Ptr'Storage_Size use 0;
-    --  The table is actually represented as a pointer to allow reallocation
- 
-    type Table_Private is private;
-    --  Table private data that is not exported in Instance
- 
-    --  Private use only:
-    subtype Empty_Table_Array_Type is
-      Table_Type (Table_Low_Bound .. Table_Low_Bound - 1);
-    type Empty_Table_Array_Ptr is access all Empty_Table_Array_Type;
-    Empty_Table_Array : aliased Empty_Table_Array_Type;
-    function Empty_Table_Array_Ptr_To_Table_Ptr is
-      new Ada.Unchecked_Conversion (Empty_Table_Array_Ptr, Table_Ptr);
-    --  End private use only. The above are used to initialize Table to point to
-    --  an empty array.
- 
-    type Instance is record
-       Table : aliased Table_Ptr :=
-                 Empty_Table_Array_Ptr_To_Table_Ptr (Empty_Table_Array'Access);
-       --  The table itself. The lower bound is the value of First. Logically
-       --  the upper bound is the current value of Last (although the actual
-       --  size of the allocated table may be larger than this). The program may
-       --  only access and modify Table entries in the range First .. Last.
-       --
-       --  It's a good idea to access this via a renaming of a slice, in order
-       --  to ensure bounds checking, as in:
-       --
-       --     Tab : Table_Type renames X.Table (First .. X.Last);
- 
-       Locked : Boolean := False;
-       --  Table expansion is permitted only if this switch is set to False. A
-       --  client may set Locked to True, in which case any attempt to expand
-       --  the table will cause an assertion failure. Note that while a table
-       --  is locked, its address in memory remains fixed and unchanging.
- 
-       P : Table_Private;
-    end record;
- 
-    procedure Init (T : in out Instance);
-    --  Reinitializes the table to empty. There is no need to call this before
-    --  using a table; tables default to empty.
- 
-    function Last (T : Instance) return Table_Count_Type;
-    pragma Inline (Last);
-    --  Returns the current value of the last used entry in the table, which can
-    --  then be used as a subscript for Table.
- 
-    procedure Release (T : in out Instance);
-    --  Storage is allocated in chunks according to the values given in the
-    --  Table_Initial and Table_Increment parameters. A call to Release releases
-    --  all storage that is allocated, but is not logically part of the current
-    --  array value. Current array values are not affected by this call.
- 
-    procedure Free (T : in out Instance);
-    --  Same as Init
- 
-    procedure Set_Last (T : in out Instance; New_Val : Table_Count_Type);
-    pragma Inline (Set_Last);
-    --  This procedure sets Last to the indicated value. If necessary the table
-    --  is reallocated to accommodate the new value (i.e. on return the
-    --  allocated table has an upper bound of at least Last). If Set_Last
-    --  reduces the size of the table, then logically entries are removed from
-    --  the table. If Set_Last increases the size of the table, then new entries
-    --  are logically added to the table.
- 
-    procedure Increment_Last (T : in out Instance);
-    pragma Inline (Increment_Last);
-    --  Adds 1 to Last (same as Set_Last (Last + 1))
- 
-    procedure Decrement_Last (T : in out Instance);
-    pragma Inline (Decrement_Last);
-    --  Subtracts 1 from Last (same as Set_Last (Last - 1))
- 
-    procedure Append (T : in out Instance; New_Val : Table_Component_Type);
-    pragma Inline (Append);
-    --  Appends New_Val onto the end of the table
-    --  Equivalent to:
-    --    Increment_Last (T);
-    --    T.Table (T.Last) := New_Val;
- 
-    procedure Append_All (T : in out Instance; New_Vals : Table_Type);
-    --  Appends all components of New_Vals
- 
-    procedure Set_Item
-      (T     : in out Instance;
-       Index : Valid_Table_Index_Type;
-       Item  : Table_Component_Type);
-    pragma Inline (Set_Item);
-    --  Put Item in the table at position Index. If Index points to an existing
-    --  item (i.e. it is in the range First .. Last (T)), the item is replaced.
-    --  Otherwise (i.e. Index > Last (T), the table is expanded, and Last is set
-    --  to Index.
- 
-    procedure Allocate (T : in out Instance; Num : Integer := 1);
-    pragma Inline (Allocate);
-    --  Adds Num to Last
- 
-    generic
-      with procedure Action
-        (Index : Valid_Table_Index_Type;
-         Item  : Table_Component_Type;
-         Quit  : in out Boolean) is <>;
-    procedure For_Each (Table : Instance);
-    --  Calls procedure Action for each component of the table, or until one of
-    --  these calls set Quit to True.
- 
-    generic
-      with function Lt (Comp1, Comp2 : Table_Component_Type) return Boolean;
-    procedure Sort_Table (Table : in out Instance);
-    --  This procedure sorts the components of the table into ascending
-    --  order making calls to Lt to do required comparisons, and using
-    --  assignments to move components around. The Lt function returns True
-    --  if Comp1 is less than Comp2 (in the sense of the desired sort), and
-    --  False if Comp1 is greater than Comp2. For equal objects it does not
-    --  matter if True or False is returned (it is slightly more efficient
-    --  to return False). The sort is not stable (the order of equal items
-    --  in the table is not preserved).
- 
- private
- 
-    type Table_Private is record
-       Last_Allocated : Table_Count_Type := Table_Low_Bound - 1;
-       --  Subscript of the maximum entry in the currently allocated table.
-       --  Initial value ensures that we initially allocate the table.
- 
-       Last : Table_Count_Type := Table_Low_Bound - 1;
-       --  Current value of Last function
- 
-       --  Invariant: Last <= Last_Allocated
-    end record;
- 
- end GNAT.Dynamic_Tables;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-eacodu.adb gcc-8.1.0/gcc/ada/g-eacodu.adb
*** gcc-7.3.0/gcc/ada/g-eacodu.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/g-eacodu.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,49 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --      G N A T . E X C E P T I O N _ A C T I O N S . C O R E _ D U M P     --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2003-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- --
- -- 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 default (Unix) version
- 
- separate (GNAT.Exception_Actions)
- procedure Core_Dump (Occurrence : Exception_Occurrence) is
-    pragma Unreferenced (Occurrence);
-    SIG_ABORT : constant := 6;
-    procedure C_Abort;
-    pragma Import (C, C_Abort, "abort");
-    procedure Signal (Signum : Integer; Handler : System.Address);
-    pragma Import (C, Signal, "signal");
- 
- begin
-    --  Unregister the default handler for SIGABRT, since otherwise we would
-    --  simply get a standard Ada exception, which is not what we want.
- 
-    Signal (SIG_ABORT, System.Null_Address);
-    C_Abort;
- end Core_Dump;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-encstr.adb gcc-8.1.0/gcc/ada/g-encstr.adb
*** gcc-7.3.0/gcc/ada/g-encstr.adb	Fri Jan  4 12:49:55 2013
--- gcc-8.1.0/gcc/ada/g-encstr.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,258 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                    G N A T . E N C O D E _ S T R I N G                   --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --           Copyright (C) 2007-2012, Free Software Foundation, Inc.        --
- --                                                                          --
- -- GNAT is 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 Interfaces; use Interfaces;
- 
- with System.WCh_Con; use System.WCh_Con;
- with System.WCh_Cnv; use System.WCh_Cnv;
- 
- package body GNAT.Encode_String is
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    procedure Bad;
-    pragma No_Return (Bad);
-    --  Raise error for bad character code
- 
-    procedure Past_End;
-    pragma No_Return (Past_End);
-    --  Raise error for off end of string
- 
-    ---------
-    -- Bad --
-    ---------
- 
-    procedure Bad is
-    begin
-       raise Constraint_Error with
-         "character cannot be encoded with given Encoding_Method";
-    end Bad;
- 
-    ------------------------
-    -- Encode_Wide_String --
-    ------------------------
- 
-    function Encode_Wide_String (S : Wide_String) return String is
-       Long : constant Natural := WC_Longest_Sequences (Encoding_Method);
-       Result : String (1 .. S'Length * Long);
-       Length : Natural;
-    begin
-       Encode_Wide_String (S, Result, Length);
-       return Result (1 .. Length);
-    end Encode_Wide_String;
- 
-    procedure Encode_Wide_String
-      (S      : Wide_String;
-       Result : out String;
-       Length : out Natural)
-    is
-       Ptr : Natural;
- 
-    begin
-       Ptr := S'First;
-       for J in S'Range loop
-          Encode_Wide_Character (S (J), Result, Ptr);
-       end loop;
- 
-       Length := Ptr - S'First;
-    end Encode_Wide_String;
- 
-    -----------------------------
-    -- Encode_Wide_Wide_String --
-    -----------------------------
- 
-    function Encode_Wide_Wide_String (S : Wide_Wide_String) return String is
-       Long : constant Natural := WC_Longest_Sequences (Encoding_Method);
-       Result : String (1 .. S'Length * Long);
-       Length : Natural;
-    begin
-       Encode_Wide_Wide_String (S, Result, Length);
-       return Result (1 .. Length);
-    end Encode_Wide_Wide_String;
- 
-    procedure Encode_Wide_Wide_String
-      (S      : Wide_Wide_String;
-       Result : out String;
-       Length : out Natural)
-    is
-       Ptr : Natural;
- 
-    begin
-       Ptr := S'First;
-       for J in S'Range loop
-          Encode_Wide_Wide_Character (S (J), Result, Ptr);
-       end loop;
- 
-       Length := Ptr - S'First;
-    end Encode_Wide_Wide_String;
- 
-    ---------------------------
-    -- Encode_Wide_Character --
-    ---------------------------
- 
-    procedure Encode_Wide_Character
-      (Char   : Wide_Character;
-       Result : in out String;
-       Ptr    : in out Natural)
-    is
-    begin
-       Encode_Wide_Wide_Character
-         (Wide_Wide_Character'Val (Wide_Character'Pos (Char)), Result, Ptr);
- 
-    exception
-       when Constraint_Error =>
-          Bad;
-    end Encode_Wide_Character;
- 
-    --------------------------------
-    -- Encode_Wide_Wide_Character --
-    --------------------------------
- 
-    procedure Encode_Wide_Wide_Character
-      (Char   : Wide_Wide_Character;
-       Result : in out String;
-       Ptr    : in out Natural)
-    is
-       U : Unsigned_32;
- 
-       procedure Out_Char (C : Character);
-       pragma Inline (Out_Char);
-       --  Procedure to store one character for instantiation below
- 
-       --------------
-       -- Out_Char --
-       --------------
- 
-       procedure Out_Char (C : Character) is
-       begin
-          if Ptr > Result'Last then
-             Past_End;
-          else
-             Result (Ptr) := C;
-             Ptr := Ptr + 1;
-          end if;
-       end Out_Char;
- 
-    --  Start of processing for Encode_Wide_Wide_Character;
- 
-    begin
-       --  Efficient code for UTF-8 case
- 
-       if Encoding_Method = WCEM_UTF8 then
- 
-          --  Note: for details of UTF8 encoding see RFC 3629
- 
-          U := Unsigned_32 (Wide_Wide_Character'Pos (Char));
- 
-          --  16#00_0000#-16#00_007F#: 0xxxxxxx
- 
-          if U <= 16#00_007F# then
-             Out_Char (Character'Val (U));
- 
-          --  16#00_0080#-16#00_07FF#: 110xxxxx 10xxxxxx
- 
-          elsif U <= 16#00_07FF# then
-             Out_Char (Character'Val (2#11000000# or Shift_Right (U, 6)));
-             Out_Char (Character'Val (2#10000000# or (U and 2#00111111#)));
- 
-          --  16#00_0800#-16#00_FFFF#: 1110xxxx 10xxxxxx 10xxxxxx
- 
-          elsif U <= 16#00_FFFF# then
-             Out_Char (Character'Val (2#11100000# or Shift_Right (U, 12)));
-             Out_Char (Character'Val (2#10000000# or (Shift_Right (U, 6)
-                                                           and 2#00111111#)));
-             Out_Char (Character'Val (2#10000000# or (U and 2#00111111#)));
- 
-          --  16#01_0000#-16#10_FFFF#: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
- 
-          elsif U <= 16#10_FFFF# then
-             Out_Char (Character'Val (2#11110000# or Shift_Right (U, 18)));
-             Out_Char (Character'Val (2#10000000# or (Shift_Right (U, 12)
-                                                           and 2#00111111#)));
-             Out_Char (Character'Val (2#10000000# or (Shift_Right (U, 6)
-                                                        and 2#00111111#)));
-             Out_Char (Character'Val (2#10000000# or (U and 2#00111111#)));
- 
-          --  16#0020_0000#-16#03FF_FFFF#: 111110xx 10xxxxxx 10xxxxxx
-          --                               10xxxxxx 10xxxxxx
- 
-          elsif U <= 16#03FF_FFFF# then
-             Out_Char (Character'Val (2#11111000# or Shift_Right (U, 24)));
-             Out_Char (Character'Val (2#10000000# or (Shift_Right (U, 18)
-                                                        and 2#00111111#)));
-             Out_Char (Character'Val (2#10000000# or (Shift_Right (U, 12)
-                                                        and 2#00111111#)));
-             Out_Char (Character'Val (2#10000000# or (Shift_Right (U, 6)
-                                                        and 2#00111111#)));
-             Out_Char (Character'Val (2#10000000# or (U and 2#00111111#)));
- 
-          --  All other cases are invalid character codes, not this includes:
- 
-          --  16#0400_0000#-16#7FFF_FFFF#: 1111110x 10xxxxxx 10xxxxxx
-          --                               10xxxxxx 10xxxxxx 10xxxxxx
- 
-          --  since Wide_Wide_Character values cannot exceed 16#3F_FFFF#
- 
-          else
-             Bad;
-          end if;
- 
-       --  All encoding methods other than UTF-8
- 
-       else
-          Non_UTF8 : declare
-             procedure UTF_32_To_String is
-               new UTF_32_To_Char_Sequence (Out_Char);
-             --  Instantiate conversion procedure with above Out_Char routine
- 
-          begin
-             UTF_32_To_String
-               (UTF_32_Code (Wide_Wide_Character'Pos (Char)), Encoding_Method);
- 
-          exception
-             when Constraint_Error =>
-                Bad;
-          end Non_UTF8;
-       end if;
-    end Encode_Wide_Wide_Character;
- 
-    --------------
-    -- Past_End --
-    --------------
- 
-    procedure Past_End is
-    begin
-       raise Constraint_Error with "past end of string";
-    end Past_End;
- 
- end GNAT.Encode_String;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-encstr.ads gcc-8.1.0/gcc/ada/g-encstr.ads
*** gcc-7.3.0/gcc/ada/g-encstr.ads	Tue Apr 10 05:44:30 2012
--- gcc-8.1.0/gcc/ada/g-encstr.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,109 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                    G N A T . E N C O D E _ S T R I N G                   --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 2007-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 generic package provides utility routines for converting from
- --  Wide_String or Wide_Wide_String to encoded String using a specified
- --  encoding convention, which is supplied as the generic parameter. If
- --  this parameter is a known at compile time constant (e.g. a constant
- --  defined in System.WCh_Con), the instantiation is specialized so that
- --  it applies only to this specified coding.
- 
- --  Note: this package is only about encoding sequences of 16- or 32-bit
- --  characters into a sequence of 8-bit codes. It knows nothing at all about
- --  the character encodings being used for the input Wide_Character and
- --  Wide_Wide_Character values, although some of the encoding methods (notably
- --  JIS and EUC) have built in assumptions about the range of possible input
- --  code values. Most often the input will be Unicode/ISO-10646 as specified by
- --  the Ada RM, but this package does not make any assumptions about the
- --  character coding, and in the case of UTF-8 all possible code values can be
- --  encoded. See also the packages Ada.Wide_[Wide_]Characters.Unicode for
- --  unicode specific functions.
- 
- --  Note on brackets encoding (WCEM_Brackets). On input, upper half characters
- --  can be represented as ["hh"] but the routines in this package will only use
- --  brackets encodings for codes higher than 16#FF#, so upper half characters
- --  will be output as single Character values.
- 
- with System.WCh_Con;
- 
- generic
-    Encoding_Method : System.WCh_Con.WC_Encoding_Method;
- 
- package GNAT.Encode_String is
-    pragma Pure;
- 
-    function Encode_Wide_String (S : Wide_String) return String;
-    pragma Inline (Encode_Wide_String);
-    --  Encode the given Wide_String, returning a String encoded using the
-    --  given encoding method. Constraint_Error will be raised if the encoding
-    --  method cannot accommodate the input data.
- 
-    procedure Encode_Wide_String
-      (S      : Wide_String;
-       Result : out String;
-       Length : out Natural);
-    --  Encode the given Wide_String, storing the encoded string in Result,
-    --  with Length being set to the length of the encoded string. The caller
-    --  must ensure that Result is long enough (see useful constants defined
-    --  in System.WCh_Con: WC_Longest_Sequence, WC_Longest_Sequences). If the
-    --  length of Result is insufficient Constraint_Error will be raised.
-    --  Constraint_Error will also be raised if the encoding method cannot
-    --  accommodate the input data.
- 
-    function Encode_Wide_Wide_String (S : Wide_Wide_String) return String;
-    pragma Inline (Encode_Wide_Wide_String);
-    --  Same as above function but for Wide_Wide_String input
- 
-    procedure Encode_Wide_Wide_String
-      (S      : Wide_Wide_String;
-       Result : out String;
-       Length : out Natural);
-    --  Same as above procedure, but for Wide_Wide_String input
- 
-    procedure Encode_Wide_Character
-      (Char   : Wide_Character;
-       Result : in out String;
-       Ptr    : in out Natural);
-    pragma Inline (Encode_Wide_Character);
-    --  This is a lower level procedure that encodes the single character Char.
-    --  The output is stored in Result starting at Result (Ptr), and Ptr is
-    --  updated past the stored value. Constraint_Error is raised if Result
-    --  is not long enough to accommodate the result, or if the encoding method
-    --  specified does not accommodate the input character value, or if Ptr is
-    --  outside the bounds of the Result string.
- 
-    procedure Encode_Wide_Wide_Character
-      (Char   : Wide_Wide_Character;
-       Result : in out String;
-       Ptr    : in out Natural);
-    --  Same as above procedure but with Wide_Wide_Character input
- 
- end GNAT.Encode_String;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-enutst.ads gcc-8.1.0/gcc/ada/g-enutst.ads
*** gcc-7.3.0/gcc/ada/g-enutst.ads	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-enutst.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,43 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --               G N A T . E N C O D E _ U T F 8 _ S T R I N G              --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                       Copyright (C) 2007-2010, AdaCore                   --
- --                                                                          --
- -- GNAT is 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 a pre-instantiation of GNAT.Encode_String for the
- --  common case of UTF-8 encoding. As noted in the documentation of that
- --  package, this UTF-8 instantiation is efficient and specialized so that
- --  it has only the code for the UTF-8 case. See g-encstr.ads for full
- --  documentation on this package.
- 
- with GNAT.Encode_String;
- 
- with System.WCh_Con;
- 
- package GNAT.Encode_UTF8_String is
-   new GNAT.Encode_String (System.WCh_Con.WCEM_UTF8);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-excact.adb gcc-8.1.0/gcc/ada/g-excact.adb
*** gcc-7.3.0/gcc/ada/g-excact.adb	Fri Nov  4 13:55:34 2011
--- gcc-8.1.0/gcc/ada/g-excact.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,131 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --              G N A T . E X C E P T I O N _ A C T I O N S                 --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2002-2011, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Unchecked_Conversion;
- with System;
- with System.Soft_Links;       use System.Soft_Links;
- with System.Standard_Library; use System.Standard_Library;
- with System.Exception_Table;  use System.Exception_Table;
- 
- package body GNAT.Exception_Actions is
- 
-    Global_Action : Exception_Action;
-    pragma Import (C, Global_Action, "__gnat_exception_actions_global_action");
-    --  Imported from Ada.Exceptions. Any change in the external name needs to
-    --  be coordinated with a-except.adb
- 
-    Raise_Hook_Initialized : Boolean;
-    pragma Import
-      (Ada, Raise_Hook_Initialized, "__gnat_exception_actions_initialized");
- 
-    function To_Raise_Action is new Ada.Unchecked_Conversion
-      (Exception_Action, Raise_Action);
- 
-    --  ??? Would be nice to have this in System.Standard_Library
-    function To_Data is new Ada.Unchecked_Conversion
-      (Exception_Id, Exception_Data_Ptr);
-    function To_Id is new Ada.Unchecked_Conversion
-      (Exception_Data_Ptr, Exception_Id);
- 
-    ----------------------------
-    -- Register_Global_Action --
-    ----------------------------
- 
-    procedure Register_Global_Action (Action : Exception_Action) is
-    begin
-       Lock_Task.all;
-       Global_Action := Action;
-       Unlock_Task.all;
-    end Register_Global_Action;
- 
-    ------------------------
-    -- Register_Id_Action --
-    ------------------------
- 
-    procedure Register_Id_Action
-      (Id     : Exception_Id;
-       Action : Exception_Action)
-    is
-    begin
-       if Id = Null_Id then
-          raise Program_Error;
-       end if;
- 
-       Lock_Task.all;
-       To_Data (Id).Raise_Hook := To_Raise_Action (Action);
-       Raise_Hook_Initialized := True;
-       Unlock_Task.all;
-    end Register_Id_Action;
- 
-    ---------------
-    -- Core_Dump --
-    ---------------
- 
-    procedure Core_Dump (Occurrence : Exception_Occurrence) is separate;
- 
-    ----------------
-    -- Name_To_Id --
-    ----------------
- 
-    function Name_To_Id (Name : String) return Exception_Id is
-    begin
-       return To_Id (Internal_Exception (Name, Create_If_Not_Exist => False));
-    end Name_To_Id;
- 
-    ---------------------------------
-    -- Registered_Exceptions_Count --
-    ---------------------------------
- 
-    function Registered_Exceptions_Count return Natural renames
-      System.Exception_Table.Registered_Exceptions_Count;
- 
-    -------------------------------
-    -- Get_Registered_Exceptions --
-    -------------------------------
-    --  This subprogram isn't an iterator to avoid concurrency problems,
-    --  since the exceptions are registered dynamically. Since we have to lock
-    --  the runtime while computing this array, this means that any callback in
-    --  an active iterator would be unable to access the runtime.
- 
-    procedure Get_Registered_Exceptions
-      (List : out Exception_Id_Array;
-       Last : out Integer)
-    is
-       Ids : Exception_Data_Array (List'Range);
-    begin
-       Get_Registered_Exceptions (Ids, Last);
- 
-       for L in List'First .. Last loop
-          List (L) := To_Id (Ids (L));
-       end loop;
-    end Get_Registered_Exceptions;
- 
- end GNAT.Exception_Actions;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-excact.ads gcc-8.1.0/gcc/ada/g-excact.ads
*** gcc-7.3.0/gcc/ada/g-excact.ads	Fri Aug  1 09:38:48 2014
--- gcc-8.1.0/gcc/ada/g-excact.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,118 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --              G N A T . E X C E P T I O N _ A C T I O N S                 --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2002-2014, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 support for callbacks on exceptions
- 
- --  These callbacks are called immediately when either a specific exception,
- --  or any exception, is raised, before any other actions taken by raise, in
- --  particular before any unwinding of the stack occurs.
- 
- --  Callbacks for specific exceptions are registered through calls to
- --  Register_Id_Action. Here is an example of code that uses this package to
- --  automatically core dump when the exception Constraint_Error is raised.
- 
- --      Register_Id_Action (Constraint_Error'Identity, Core_Dump'Access);
- 
- --  Subprograms are also provided to list the currently registered exceptions,
- --  or to convert from a string to an exception id.
- 
- --  This package can easily be extended, for instance to provide a callback
- --  whenever an exception matching a regular expression is raised. The idea
- --  is to register a global action, called whenever any exception is raised.
- --  Dispatching can then be done directly in this global action callback.
- 
- with Ada.Exceptions; use Ada.Exceptions;
- 
- package GNAT.Exception_Actions is
- 
-    type Exception_Action is access
-      procedure (Occurrence : Exception_Occurrence);
-    --  General callback type whenever an exception is raised. The callback
-    --  procedure must not propagate an exception (execution of the program
-    --  is erroneous if such an exception is propagated).
- 
-    procedure Register_Global_Action (Action : Exception_Action);
-    --  Action will be called whenever an exception is raised. Only one such
-    --  action can be registered at any given time, and registering a new action
-    --  will override any previous action that might have been registered.
-    --
-    --  Action is called before the exception is propagated to user's code.
-    --  If Action is null, this will in effect cancel all exception actions.
- 
-    procedure Register_Id_Action
-      (Id     : Exception_Id;
-       Action : Exception_Action);
-    --  Action will be called whenever an exception of type Id is raised. Only
-    --  one such action can be registered for each exception id, and registering
-    --  a new action will override any previous action registered for this
-    --  Exception_Id. Program_Error is raised if Id is Null_Id.
- 
-    function Name_To_Id (Name : String) return Exception_Id;
-    --  Convert an exception name to an exception id. Null_Id is returned
-    --  if no such exception exists. Name must be an all upper-case string,
-    --  or the exception will not be found. The exception name must be fully
-    --  qualified (but not including Standard). It is not possible to convert
-    --  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 Registered_Exceptions_Count return Natural;
-    --  Return the number of exceptions that have been registered so far.
-    --  Exceptions declared locally will not appear in this list until their
-    --  block has been executed at least once.
-    --
-    --  Note: The count includes only predefined exceptions for programs
-    --  compiled with pragma Restrictions (No_Exception_Registration).
- 
-    type Exception_Id_Array is array (Natural range <>) of Exception_Id;
- 
-    procedure Get_Registered_Exceptions
-      (List : out Exception_Id_Array;
-       Last : out Integer);
-    --  Return the list of registered exceptions.
-    --  Last is the index in List of the last exception returned.
-    --
-    --  An exception is registered the first time the block containing its
-    --  declaration is elaborated. Exceptions defined at library-level are
-    --  therefore immediately visible, whereas exceptions declared in local
-    --  blocks will not be visible until the block is executed at least once.
-    --
-    --  Note: The list contains only the predefined exceptions if the program
-    --  is compiled with pragma Restrictions (No_Exception_Registration);
- 
-    procedure Core_Dump (Occurrence : Exception_Occurrence);
-    --  Dump memory (called a core dump in some systems) if supported by the
-    --  OS (most unix systems), and abort execution of the application. Under
-    --  Windows this procedure will not dump the memory, it will only abort
-    --  execution.
- 
- end GNAT.Exception_Actions;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-except.ads gcc-8.1.0/gcc/ada/g-except.ads
*** gcc-7.3.0/gcc/ada/g-except.ads	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-except.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,82 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                      G N A T . E X C E P T I O N S                       --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 2000-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 an interface for raising predefined exceptions
- --  with an exception message. It can be used from Pure units.
- 
- --  There is no prohibition in Ada that prevents exceptions being raised
- --  from within pure units. The raise statement is perfectly acceptable.
- 
- --  However, it is not normally possible to raise an exception with a
- --  message because the routine Ada.Exceptions.Raise_Exception is not in
- --  a Pure unit. This is an annoying and unnecessary restriction and this
- --  package allows for raising the standard predefined exceptions at least.
- 
- package GNAT.Exceptions is
-    pragma Pure;
- 
-    type Exception_Type is limited null record;
-    --  Type used to specify which exception to raise
- 
-    --  Really Exception_Type is Exception_Id, but Exception_Id can't be
-    --  used directly since it is declared in the non-pure unit Ada.Exceptions,
- 
-    --  Exception_Id is in fact simply a pointer to the type Exception_Data
-    --  declared in System.Standard_Library (which is also non-pure). So what
-    --  we do is to define it here as a by reference type (any by reference
-    --  type would do), and then Import the definitions from Standard_Library.
-    --  Since this is a by reference type, these will be passed by reference,
-    --  which has the same effect as passing a pointer.
- 
-    --  This type is not private because keeping it by reference would require
-    --  defining it in a way (e.g a tagged type) that would drag other run time
-    --  files, which is unwanted in the case of e.g ravenscar where we want to
-    --  minimize the number of run time files needed by default.
- 
-    CE : constant Exception_Type;  -- Constraint_Error
-    PE : constant Exception_Type;  -- Program_Error
-    SE : constant Exception_Type;  -- Storage_Error
-    TE : constant Exception_Type;  -- Tasking_Error
-    --  One of these constants is used in the call to specify the exception
- 
-    procedure Raise_Exception (E : Exception_Type; Message : String);
-    pragma Import (Ada, Raise_Exception, "__gnat_raise_exception");
-    pragma No_Return (Raise_Exception);
-    --  Raise specified exception with specified message
- 
- private
-    pragma Import (C, CE, "constraint_error");
-    pragma Import (C, PE, "program_error");
-    pragma Import (C, SE, "storage_error");
-    pragma Import (C, TE, "tasking_error");
-    --  References to the exception structures in the standard library
- 
- end GNAT.Exceptions;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-exctra.adb gcc-8.1.0/gcc/ada/g-exctra.adb
*** gcc-7.3.0/gcc/ada/g-exctra.adb	Wed Jul 30 14:12:37 2014
--- gcc-8.1.0/gcc/ada/g-exctra.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,36 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                  G N A T . E X C E P T I O N _ T R A C E S               --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 2000-2014, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 does not require a body, since it is a package renaming. We
- --  provide a dummy file containing a No_Body pragma so that previous versions
- --  of the body (which did exist) will not interfere.
- 
- pragma No_Body;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-exctra.ads gcc-8.1.0/gcc/ada/g-exctra.ads
*** gcc-7.3.0/gcc/ada/g-exctra.ads	Wed Jul 30 14:12:37 2014
--- gcc-8.1.0/gcc/ada/g-exctra.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,39 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                  G N A T . E X C E P T I O N _ T R A C E S               --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 2000-2014, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 an interface allowing to control *automatic* output
- --  to standard error upon exception occurrences (as opposed to explicit
- --  generation of traceback information using System.Traceback).
- 
- --  See file s-exctra.ads for full documentation of the interface
- 
- with System.Exception_Traces;
- package GNAT.Exception_Traces renames System.Exception_Traces;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-expect.adb gcc-8.1.0/gcc/ada/g-expect.adb
*** gcc-7.3.0/gcc/ada/g-expect.adb	Fri Jan 13 10:19:19 2017
--- gcc-8.1.0/gcc/ada/g-expect.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,1488 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                          G N A T . E X P E C T                           --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 2000-2016, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 System;              use System;
- with System.OS_Constants; use System.OS_Constants;
- with Ada.Calendar;        use Ada.Calendar;
- 
- with GNAT.IO;      use GNAT.IO;
- with GNAT.OS_Lib;  use GNAT.OS_Lib;
- with GNAT.Regpat;  use GNAT.Regpat;
- 
- with Ada.Unchecked_Deallocation;
- 
- package body GNAT.Expect is
- 
-    type Array_Of_Pd is array (Positive range <>) of Process_Descriptor_Access;
- 
-    Expect_Process_Died   : constant Expect_Match := -100;
-    Expect_Internal_Error : constant Expect_Match := -101;
-    --  Additional possible outputs of Expect_Internal. These are not visible in
-    --  the spec because the user will never see them.
- 
-    procedure Expect_Internal
-      (Descriptors : in out Array_Of_Pd;
-       Result      : out Expect_Match;
-       Timeout     : Integer;
-       Full_Buffer : Boolean);
-    --  Internal function used to read from the process Descriptor.
-    --
-    --  Several outputs are possible:
-    --     Result=Expect_Timeout, if no output was available before the timeout
-    --        expired.
-    --     Result=Expect_Full_Buffer, if Full_Buffer is True and some characters
-    --        had to be discarded from the internal buffer of Descriptor.
-    --     Result=Express_Process_Died if one of the processes was terminated.
-    --        That process's Input_Fd is set to Invalid_FD
-    --     Result=Express_Internal_Error
-    --     Result=<integer>, indicates how many characters were added to the
-    --        internal buffer. These characters are from indexes
-    --        Descriptor.Buffer_Index - Result + 1 .. Descriptor.Buffer_Index
-    --  Process_Died is raised if the process is no longer valid.
- 
-    procedure Reinitialize_Buffer
-      (Descriptor : in out Process_Descriptor'Class);
-    --  Reinitialize the internal buffer.
-    --  The buffer is deleted up to the end of the last match.
- 
-    procedure Free is new Ada.Unchecked_Deallocation
-      (Pattern_Matcher, Pattern_Matcher_Access);
- 
-    procedure Free is new Ada.Unchecked_Deallocation
-      (Filter_List_Elem, Filter_List);
- 
-    procedure Call_Filters
-      (Pid       : Process_Descriptor'Class;
-       Str       : String;
-       Filter_On : Filter_Type);
-    --  Call all the filters that have the appropriate type.
-    --  This function does nothing if the filters are locked
- 
-    ------------------------------
-    -- Target dependent section --
-    ------------------------------
- 
-    function Dup (Fd : File_Descriptor) return File_Descriptor;
-    pragma Import (C, Dup);
- 
-    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
- 
-    function Create_Pipe (Pipe : not null access Pipe_Type) return Integer;
-    pragma Import (C, Create_Pipe, "__gnat_pipe");
- 
-    function Poll
-      (Fds          : System.Address;
-       Num_Fds      : Integer;
-       Timeout      : Integer;
-       Dead_Process : access Integer;
-       Is_Set       : System.Address) return Integer;
-    pragma Import (C, Poll, "__gnat_expect_poll");
-    --  Check whether there is any data waiting on the file descriptors
-    --  Fds, and wait if there is none, at most Timeout milliseconds
-    --  Returns -1 in case of error, 0 if the timeout expired before
-    --  data became available.
-    --
-    --  Is_Set is an array of the same size as FDs and elements are set to 1 if
-    --  data is available for the corresponding File Descriptor, 0 otherwise.
-    --
-    --  If a process dies, then Dead_Process is set to the index of the
-    --  corresponding file descriptor.
- 
-    function Waitpid (Pid : Process_Id) return Integer;
-    pragma Import (C, Waitpid, "__gnat_waitpid");
-    --  Wait for a specific process id, and return its exit code
- 
-    ---------
-    -- "+" --
-    ---------
- 
-    function "+" (S : String) return GNAT.OS_Lib.String_Access is
-    begin
-       return new String'(S);
-    end "+";
- 
-    ---------
-    -- "+" --
-    ---------
- 
-    function "+"
-      (P : GNAT.Regpat.Pattern_Matcher) return Pattern_Matcher_Access
-    is
-    begin
-       return new GNAT.Regpat.Pattern_Matcher'(P);
-    end "+";
- 
-    ----------------
-    -- Add_Filter --
-    ----------------
- 
-    procedure Add_Filter
-      (Descriptor : in out Process_Descriptor;
-       Filter     : Filter_Function;
-       Filter_On  : Filter_Type := Output;
-       User_Data  : System.Address := System.Null_Address;
-       After      : Boolean := False)
-    is
-       Current : Filter_List := Descriptor.Filters;
- 
-    begin
-       if After then
-          while Current /= null and then Current.Next /= null loop
-             Current := Current.Next;
-          end loop;
- 
-          if Current = null then
-             Descriptor.Filters :=
-               new Filter_List_Elem'
-                (Filter => Filter, Filter_On => Filter_On,
-                 User_Data => User_Data, Next => null);
-          else
-             Current.Next :=
-               new Filter_List_Elem'
-               (Filter => Filter, Filter_On => Filter_On,
-                User_Data => User_Data, Next => null);
-          end if;
- 
-       else
-          Descriptor.Filters :=
-            new Filter_List_Elem'
-              (Filter => Filter, Filter_On => Filter_On,
-               User_Data => User_Data, Next => Descriptor.Filters);
-       end if;
-    end Add_Filter;
- 
-    ------------------
-    -- Call_Filters --
-    ------------------
- 
-    procedure Call_Filters
-      (Pid       : Process_Descriptor'Class;
-       Str       : String;
-       Filter_On : Filter_Type)
-    is
-       Current_Filter  : Filter_List;
- 
-    begin
-       if Pid.Filters_Lock = 0 then
-          Current_Filter := Pid.Filters;
- 
-          while Current_Filter /= null loop
-             if Current_Filter.Filter_On = Filter_On then
-                Current_Filter.Filter
-                  (Pid, Str, Current_Filter.User_Data);
-             end if;
- 
-             Current_Filter := Current_Filter.Next;
-          end loop;
-       end if;
-    end Call_Filters;
- 
-    -----------
-    -- Close --
-    -----------
- 
-    procedure Close
-      (Descriptor : in out Process_Descriptor;
-       Status     : out Integer)
-    is
-       Current_Filter : Filter_List;
-       Next_Filter    : Filter_List;
- 
-    begin
-       if Descriptor.Input_Fd /= Invalid_FD then
-          Close (Descriptor.Input_Fd);
-       end if;
- 
-       if Descriptor.Error_Fd /= Descriptor.Output_Fd then
-          Close (Descriptor.Error_Fd);
-       end if;
- 
-       Close (Descriptor.Output_Fd);
- 
-       --  ??? 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;
- 
-       Current_Filter := Descriptor.Filters;
- 
-       while Current_Filter /= null loop
-          Next_Filter := Current_Filter.Next;
-          Free (Current_Filter);
-          Current_Filter := Next_Filter;
-       end loop;
- 
-       Descriptor.Filters := null;
- 
-       --  Check process id (see comment in Send_Signal)
- 
-       if Descriptor.Pid > 0 then
-          Status := Waitpid (Descriptor.Pid);
-       else
-          raise Invalid_Process;
-       end if;
-    end Close;
- 
-    procedure Close (Descriptor : in out Process_Descriptor) is
-       Status : Integer;
-       pragma Unreferenced (Status);
-    begin
-       Close (Descriptor, Status);
-    end Close;
- 
-    ------------
-    -- Expect --
-    ------------
- 
-    procedure Expect
-      (Descriptor  : in out Process_Descriptor;
-       Result      : out Expect_Match;
-       Regexp      : String;
-       Timeout     : Integer := 10_000;
-       Full_Buffer : Boolean := False)
-    is
-    begin
-       if Regexp = "" then
-          Expect (Descriptor, Result, Never_Match, Timeout, Full_Buffer);
-       else
-          Expect (Descriptor, Result, Compile (Regexp), Timeout, Full_Buffer);
-       end if;
-    end Expect;
- 
-    procedure Expect
-      (Descriptor  : in out Process_Descriptor;
-       Result      : out Expect_Match;
-       Regexp      : String;
-       Matched     : out GNAT.Regpat.Match_Array;
-       Timeout     : Integer := 10_000;
-       Full_Buffer : Boolean := False)
-    is
-    begin
-       pragma Assert (Matched'First = 0);
-       if Regexp = "" then
-          Expect
-            (Descriptor, Result, Never_Match, Matched, Timeout, Full_Buffer);
-       else
-          Expect
-            (Descriptor, Result, Compile (Regexp), Matched, Timeout,
-             Full_Buffer);
-       end if;
-    end Expect;
- 
-    procedure Expect
-      (Descriptor  : in out Process_Descriptor;
-       Result      : out Expect_Match;
-       Regexp      : GNAT.Regpat.Pattern_Matcher;
-       Timeout     : Integer := 10_000;
-       Full_Buffer : Boolean := False)
-    is
-       Matched : GNAT.Regpat.Match_Array (0 .. 0);
-       pragma Warnings (Off, Matched);
-    begin
-       Expect (Descriptor, Result, Regexp, Matched, Timeout, Full_Buffer);
-    end Expect;
- 
-    procedure Expect
-      (Descriptor  : in out Process_Descriptor;
-       Result      : out Expect_Match;
-       Regexp      : GNAT.Regpat.Pattern_Matcher;
-       Matched     : out GNAT.Regpat.Match_Array;
-       Timeout     : Integer := 10_000;
-       Full_Buffer : Boolean := False)
-    is
-       N           : Expect_Match;
-       Descriptors : Array_Of_Pd := (1 => Descriptor'Unrestricted_Access);
-       Try_Until   : constant Time := Clock + Duration (Timeout) / 1000.0;
-       Timeout_Tmp : Integer := Timeout;
- 
-    begin
-       pragma Assert (Matched'First = 0);
-       Reinitialize_Buffer (Descriptor);
- 
-       loop
-          --  First, test if what is already in the buffer matches (This is
-          --  required if this package is used in multi-task mode, since one of
-          --  the tasks might have added something in the buffer, and we don't
-          --  want other tasks to wait for new input to be available before
-          --  checking the regexps).
- 
-          Match
-            (Regexp, Descriptor.Buffer (1 .. Descriptor.Buffer_Index), Matched);
- 
-          if Descriptor.Buffer_Index >= 1 and then Matched (0).First /= 0 then
-             Result := 1;
-             Descriptor.Last_Match_Start := Matched (0).First;
-             Descriptor.Last_Match_End := Matched (0).Last;
-             return;
-          end if;
- 
-          --  Else try to read new input
- 
-          Expect_Internal (Descriptors, N, Timeout_Tmp, Full_Buffer);
- 
-          case N is
-             when Expect_Internal_Error
-                | Expect_Process_Died
-             =>
-                raise Process_Died;
- 
-             when Expect_Full_Buffer
-                | Expect_Timeout
-             =>
-                Result := N;
-                return;
- 
-             when others =>
-                null;  --  See below
-          end case;
- 
-          --  Calculate the timeout for the next turn
- 
-          --  Note that Timeout is, from the caller's perspective, the maximum
-          --  time until a match, not the maximum time until some output is
-          --  read, and thus cannot be reused as is for Expect_Internal.
- 
-          if Timeout /= -1 then
-             Timeout_Tmp := Integer (Try_Until - Clock) * 1000;
- 
-             if Timeout_Tmp < 0 then
-                Result := Expect_Timeout;
-                exit;
-             end if;
-          end if;
-       end loop;
- 
-       --  Even if we had the general timeout above, we have to test that the
-       --  last test we read from the external process didn't match.
- 
-       Match
-         (Regexp, Descriptor.Buffer (1 .. Descriptor.Buffer_Index), Matched);
- 
-       if Matched (0).First /= 0 then
-          Result := 1;
-          Descriptor.Last_Match_Start := Matched (0).First;
-          Descriptor.Last_Match_End := Matched (0).Last;
-          return;
-       end if;
-    end Expect;
- 
-    procedure Expect
-      (Descriptor  : in out Process_Descriptor;
-       Result      : out Expect_Match;
-       Regexps     : Regexp_Array;
-       Timeout     : Integer := 10_000;
-       Full_Buffer : Boolean := False)
-    is
-       Patterns : Compiled_Regexp_Array (Regexps'Range);
- 
-       Matched : GNAT.Regpat.Match_Array (0 .. 0);
-       pragma Warnings (Off, Matched);
- 
-    begin
-       for J in Regexps'Range loop
-          Patterns (J) := new Pattern_Matcher'(Compile (Regexps (J).all));
-       end loop;
- 
-       Expect (Descriptor, Result, Patterns, Matched, Timeout, Full_Buffer);
- 
-       for J in Regexps'Range loop
-          Free (Patterns (J));
-       end loop;
-    end Expect;
- 
-    procedure Expect
-      (Descriptor  : in out Process_Descriptor;
-       Result      : out Expect_Match;
-       Regexps     : Compiled_Regexp_Array;
-       Timeout     : Integer := 10_000;
-       Full_Buffer : Boolean := False)
-    is
-       Matched : GNAT.Regpat.Match_Array (0 .. 0);
-       pragma Warnings (Off, Matched);
-    begin
-       Expect (Descriptor, Result, Regexps, Matched, Timeout, Full_Buffer);
-    end Expect;
- 
-    procedure Expect
-      (Result      : out Expect_Match;
-       Regexps     : Multiprocess_Regexp_Array;
-       Timeout     : Integer := 10_000;
-       Full_Buffer : Boolean := False)
-    is
-       Matched : GNAT.Regpat.Match_Array (0 .. 0);
-       pragma Warnings (Off, Matched);
-    begin
-       Expect (Result, Regexps, Matched, Timeout, Full_Buffer);
-    end Expect;
- 
-    procedure Expect
-      (Descriptor  : in out Process_Descriptor;
-       Result      : out Expect_Match;
-       Regexps     : Regexp_Array;
-       Matched     : out GNAT.Regpat.Match_Array;
-       Timeout     : Integer := 10_000;
-       Full_Buffer : Boolean := False)
-    is
-       Patterns : Compiled_Regexp_Array (Regexps'Range);
- 
-    begin
-       pragma Assert (Matched'First = 0);
- 
-       for J in Regexps'Range loop
-          Patterns (J) := new Pattern_Matcher'(Compile (Regexps (J).all));
-       end loop;
- 
-       Expect (Descriptor, Result, Patterns, Matched, Timeout, Full_Buffer);
- 
-       for J in Regexps'Range loop
-          Free (Patterns (J));
-       end loop;
-    end Expect;
- 
-    procedure Expect
-      (Descriptor  : in out Process_Descriptor;
-       Result      : out Expect_Match;
-       Regexps     : Compiled_Regexp_Array;
-       Matched     : out GNAT.Regpat.Match_Array;
-       Timeout     : Integer := 10_000;
-       Full_Buffer : Boolean := False)
-    is
-       N           : Expect_Match;
-       Descriptors : Array_Of_Pd := (1 => Descriptor'Unrestricted_Access);
- 
-    begin
-       pragma Assert (Matched'First = 0);
- 
-       Reinitialize_Buffer (Descriptor);
- 
-       loop
-          --  First, test if what is already in the buffer matches (This is
-          --  required if this package is used in multi-task mode, since one of
-          --  the tasks might have added something in the buffer, and we don't
-          --  want other tasks to wait for new input to be available before
-          --  checking the regexps).
- 
-          if Descriptor.Buffer /= null then
-             for J in Regexps'Range loop
-                Match
-                  (Regexps (J).all,
-                   Descriptor.Buffer (1 .. Descriptor.Buffer_Index),
-                   Matched);
- 
-                if Matched (0) /= No_Match then
-                   Result := Expect_Match (J);
-                   Descriptor.Last_Match_Start := Matched (0).First;
-                   Descriptor.Last_Match_End := Matched (0).Last;
-                   return;
-                end if;
-             end loop;
-          end if;
- 
-          Expect_Internal (Descriptors, N, Timeout, Full_Buffer);
- 
-          case N is
-             when Expect_Internal_Error
-                | Expect_Process_Died
-             =>
-                raise Process_Died;
- 
-             when Expect_Full_Buffer
-                | Expect_Timeout
-             =>
-                Result := N;
-                return;
- 
-             when others =>
-                null;  --  Continue
-          end case;
-       end loop;
-    end Expect;
- 
-    procedure Expect
-      (Result      : out Expect_Match;
-       Regexps     : Multiprocess_Regexp_Array;
-       Matched     : out GNAT.Regpat.Match_Array;
-       Timeout     : Integer := 10_000;
-       Full_Buffer : Boolean := False)
-    is
-       N           : Expect_Match;
-       Descriptors : Array_Of_Pd (Regexps'Range);
- 
-    begin
-       pragma Assert (Matched'First = 0);
- 
-       for J in Descriptors'Range loop
-          Descriptors (J) := Regexps (J).Descriptor;
- 
-          if Descriptors (J) /= null then
-             Reinitialize_Buffer (Regexps (J).Descriptor.all);
-          end if;
-       end loop;
- 
-       loop
-          --  First, test if what is already in the buffer matches (This is
-          --  required if this package is used in multi-task mode, since one of
-          --  the tasks might have added something in the buffer, and we don't
-          --  want other tasks to wait for new input to be available before
-          --  checking the regexps).
- 
-          for J in Regexps'Range loop
-             if Regexps (J).Regexp /= null
-                and then Regexps (J).Descriptor /= null
-             then
-                Match (Regexps (J).Regexp.all,
-                       Regexps (J).Descriptor.Buffer
-                         (1 .. Regexps (J).Descriptor.Buffer_Index),
-                       Matched);
- 
-                if Matched (0) /= No_Match then
-                   Result := Expect_Match (J);
-                   Regexps (J).Descriptor.Last_Match_Start := Matched (0).First;
-                   Regexps (J).Descriptor.Last_Match_End := Matched (0).Last;
-                   return;
-                end if;
-             end if;
-          end loop;
- 
-          Expect_Internal (Descriptors, N, Timeout, Full_Buffer);
- 
-          case N is
-             when Expect_Internal_Error
-                | Expect_Process_Died
-             =>
-                raise Process_Died;
- 
-             when Expect_Full_Buffer
-                | Expect_Timeout
-             =>
-                Result := N;
-                return;
- 
-             when others =>
-                null;  --  Continue
-          end case;
-       end loop;
-    end Expect;
- 
-    ---------------------
-    -- Expect_Internal --
-    ---------------------
- 
-    procedure Expect_Internal
-      (Descriptors : in out Array_Of_Pd;
-       Result      : out Expect_Match;
-       Timeout     : Integer;
-       Full_Buffer : Boolean)
-    is
-       Num_Descriptors : Integer;
-       Buffer_Size     : Integer := 0;
- 
-       N : Integer;
- 
-       type File_Descriptor_Array is
-         array (0 .. Descriptors'Length - 1) of File_Descriptor;
-       Fds : aliased File_Descriptor_Array;
-       Fds_Count : Natural := 0;
- 
-       Fds_To_Descriptor : array (Fds'Range) of Integer;
-       --  Maps file descriptor entries from Fds to entries in Descriptors.
-       --  They do not have the same index when entries in Descriptors are null.
- 
-       type Integer_Array is array (Fds'Range) of Integer;
-       Is_Set : aliased Integer_Array;
- 
-    begin
-       for J in Descriptors'Range loop
-          if Descriptors (J) /= null then
-             Fds (Fds'First + Fds_Count) := Descriptors (J).Output_Fd;
-             Fds_To_Descriptor (Fds'First + Fds_Count) := J;
-             Fds_Count := Fds_Count + 1;
- 
-             if Descriptors (J).Buffer_Size = 0 then
-                Buffer_Size := Integer'Max (Buffer_Size, 4096);
-             else
-                Buffer_Size :=
-                  Integer'Max (Buffer_Size, Descriptors (J).Buffer_Size);
-             end if;
-          end if;
-       end loop;
- 
-       declare
-          Buffer : aliased String (1 .. Buffer_Size);
-          --  Buffer used for input. This is allocated only once, not for
-          --  every iteration of the loop
- 
-          D : aliased Integer;
-          --  Index in Descriptors
- 
-       begin
-          --  Loop until we match or we have a timeout
- 
-          loop
-             Num_Descriptors :=
-               Poll (Fds'Address, Fds_Count, Timeout, D'Access, Is_Set'Address);
- 
-             case Num_Descriptors is
- 
-                --  Error?
- 
-                when -1 =>
-                   Result := Expect_Internal_Error;
- 
-                   if D /= 0 then
-                      Close (Descriptors (D).Input_Fd);
-                      Descriptors (D).Input_Fd := Invalid_FD;
-                   end if;
- 
-                   return;
- 
-                --  Timeout?
- 
-                when 0  =>
-                   Result := Expect_Timeout;
-                   return;
- 
-                --  Some input
- 
-                when others =>
-                   for F in Fds'Range loop
-                      if Is_Set (F) = 1 then
-                         D := Fds_To_Descriptor (F);
- 
-                         Buffer_Size := Descriptors (D).Buffer_Size;
- 
-                         if Buffer_Size = 0 then
-                            Buffer_Size := 4096;
-                         end if;
- 
-                         N := Read (Descriptors (D).Output_Fd, Buffer'Address,
-                                    Buffer_Size);
- 
-                         --  Error or End of file
- 
-                         if N <= 0 then
-                            --  ??? Note that ddd tries again up to three times
-                            --  in that case. See LiterateA.C:174
- 
-                            Close (Descriptors (D).Input_Fd);
-                            Descriptors (D).Input_Fd := Invalid_FD;
-                            Result := Expect_Process_Died;
-                            return;
- 
-                         else
-                            --  If there is no limit to the buffer size
- 
-                            if Descriptors (D).Buffer_Size = 0 then
-                               declare
-                                  Tmp : String_Access := Descriptors (D).Buffer;
- 
-                               begin
-                                  if Tmp /= null then
-                                     Descriptors (D).Buffer :=
-                                       new String (1 .. Tmp'Length + N);
-                                     Descriptors (D).Buffer (1 .. Tmp'Length) :=
-                                       Tmp.all;
-                                     Descriptors (D).Buffer
-                                       (Tmp'Length + 1 .. Tmp'Length + N) :=
-                                       Buffer (1 .. N);
-                                     Free (Tmp);
-                                     Descriptors (D).Buffer_Index :=
-                                       Descriptors (D).Buffer'Last;
- 
-                                  else
-                                     Descriptors (D).Buffer :=
-                                       new String (1 .. N);
-                                     Descriptors (D).Buffer.all :=
-                                       Buffer (1 .. N);
-                                     Descriptors (D).Buffer_Index := N;
-                                  end if;
-                               end;
- 
-                            else
-                               --  Add what we read to the buffer
- 
-                               if Descriptors (D).Buffer_Index + N >
-                                    Descriptors (D).Buffer_Size
-                               then
-                                  --  If the user wants to know when we have
-                                  --  read more than the buffer can contain.
- 
-                                  if Full_Buffer then
-                                     Result := Expect_Full_Buffer;
-                                     return;
-                                  end if;
- 
-                                  --  Keep as much as possible from the buffer,
-                                  --  and forget old characters.
- 
-                                  Descriptors (D).Buffer
-                                    (1 .. Descriptors (D).Buffer_Size - N) :=
-                                   Descriptors (D).Buffer
-                                    (N - Descriptors (D).Buffer_Size +
-                                     Descriptors (D).Buffer_Index + 1 ..
-                                     Descriptors (D).Buffer_Index);
-                                  Descriptors (D).Buffer_Index :=
-                                    Descriptors (D).Buffer_Size - N;
-                               end if;
- 
-                               --  Keep what we read in the buffer
- 
-                               Descriptors (D).Buffer
-                                 (Descriptors (D).Buffer_Index + 1 ..
-                                  Descriptors (D).Buffer_Index + N) :=
-                                 Buffer (1 .. N);
-                               Descriptors (D).Buffer_Index :=
-                                 Descriptors (D).Buffer_Index + N;
-                            end if;
- 
-                            --  Call each of the output filter with what we
-                            --  read.
- 
-                            Call_Filters
-                              (Descriptors (D).all, Buffer (1 .. N), Output);
- 
-                            Result := Expect_Match (D);
-                            return;
-                         end if;
-                      end if;
-                   end loop;
-             end case;
-          end loop;
-       end;
-    end Expect_Internal;
- 
-    ----------------
-    -- Expect_Out --
-    ----------------
- 
-    function Expect_Out (Descriptor : Process_Descriptor) return String is
-    begin
-       return Descriptor.Buffer (1 .. Descriptor.Last_Match_End);
-    end Expect_Out;
- 
-    ----------------------
-    -- Expect_Out_Match --
-    ----------------------
- 
-    function Expect_Out_Match (Descriptor : Process_Descriptor) return String is
-    begin
-       return Descriptor.Buffer
-         (Descriptor.Last_Match_Start .. Descriptor.Last_Match_End);
-    end Expect_Out_Match;
- 
-    ------------------------
-    -- First_Dead_Process --
-    ------------------------
- 
-    function First_Dead_Process
-      (Regexp : Multiprocess_Regexp_Array) return Natural is
-    begin
-       for R in Regexp'Range loop
-          if Regexp (R).Descriptor /= null
-            and then Regexp (R).Descriptor.Input_Fd = GNAT.OS_Lib.Invalid_FD
-          then
-             return R;
-          end if;
-       end loop;
- 
-       return 0;
-    end First_Dead_Process;
- 
-    -----------
-    -- Flush --
-    -----------
- 
-    procedure Flush
-      (Descriptor : in out Process_Descriptor;
-       Timeout    : Integer := 0)
-    is
-       Buffer_Size     : constant Integer := 8192;
-       Num_Descriptors : Integer;
-       N               : aliased Integer;
-       Is_Set          : aliased Integer;
-       Buffer          : aliased String (1 .. Buffer_Size);
- 
-    begin
-       --  Empty the current buffer
- 
-       Descriptor.Last_Match_End := Descriptor.Buffer_Index;
-       Reinitialize_Buffer (Descriptor);
- 
-       --  Read everything from the process to flush its output
- 
-       loop
-          Num_Descriptors :=
-            Poll (Descriptor.Output_Fd'Address,
-                  1,
-                  Timeout,
-                  N'Access,
-                  Is_Set'Address);
- 
-          case Num_Descriptors is
- 
-             --  Error ?
- 
-             when -1 =>
-                raise Process_Died;
- 
-             --  Timeout => End of flush
- 
-             when 0  =>
-                return;
- 
-             --  Some input
- 
-             when others =>
-                if Is_Set = 1 then
-                   N := Read (Descriptor.Output_Fd, Buffer'Address,
-                              Buffer_Size);
- 
-                   if N = -1 then
-                      raise Process_Died;
-                   elsif N = 0 then
-                      return;
-                   end if;
-                end if;
-          end case;
-       end loop;
-    end Flush;
- 
-    ----------
-    -- Free --
-    ----------
- 
-    procedure Free (Regexp : in out Multiprocess_Regexp) is
-       procedure Unchecked_Free is new Ada.Unchecked_Deallocation
-         (Process_Descriptor'Class, Process_Descriptor_Access);
-    begin
-       Unchecked_Free (Regexp.Descriptor);
-       Free (Regexp.Regexp);
-    end Free;
- 
-    ------------------------
-    -- Get_Command_Output --
-    ------------------------
- 
-    function Get_Command_Output
-      (Command    : String;
-       Arguments  : GNAT.OS_Lib.Argument_List;
-       Input      : String;
-       Status     : not null access Integer;
-       Err_To_Out : Boolean := False) return String
-    is
-       use GNAT.Expect;
- 
-       Process : Process_Descriptor;
- 
-       Output : String_Access := new String (1 .. 1024);
-       --  Buffer used to accumulate standard output from the launched
-       --  command, expanded as necessary during execution.
- 
-       Last : Integer := 0;
-       --  Index of the last used character within Output
- 
-    begin
-       Non_Blocking_Spawn
-         (Process, Command, Arguments, Err_To_Out => Err_To_Out,
-          Buffer_Size => 0);
- 
-       if Input'Length > 0 then
-          Send (Process, Input);
-       end if;
- 
-       Close (Process.Input_Fd);
-       Process.Input_Fd := Invalid_FD;
- 
-       declare
-          Result : Expect_Match;
-          pragma Unreferenced (Result);
- 
-       begin
-          --  This loop runs until the call to Expect raises Process_Died
- 
-          loop
-             Expect (Process, Result, ".+", Timeout => -1);
- 
-             declare
-                NOutput : String_Access;
-                S       : constant String := Expect_Out (Process);
-                pragma Assert (S'Length > 0);
- 
-             begin
-                --  Expand buffer if we need more space. Note here that we add
-                --  S'Length to ensure that S will fit in the new buffer size.
- 
-                if Last + S'Length > Output'Last then
-                   NOutput := new String (1 .. 2 * Output'Last + S'Length);
-                   NOutput (Output'Range) := Output.all;
-                   Free (Output);
- 
-                --  Here if current buffer size is OK
- 
-                else
-                   NOutput := Output;
-                end if;
- 
-                NOutput (Last + 1 .. Last + S'Length) := S;
-                Last := Last + S'Length;
-                Output := NOutput;
-             end;
-          end loop;
- 
-       exception
-          when Process_Died =>
-             Close (Process, Status.all);
-       end;
- 
-       if Last = 0 then
-          Free (Output);
-          return "";
-       end if;
- 
-       declare
-          S : constant String := Output (1 .. Last);
-       begin
-          Free (Output);
-          return S;
-       end;
-    end Get_Command_Output;
- 
-    ------------------
-    -- Get_Error_Fd --
-    ------------------
- 
-    function Get_Error_Fd
-      (Descriptor : Process_Descriptor) return GNAT.OS_Lib.File_Descriptor
-    is
-    begin
-       return Descriptor.Error_Fd;
-    end Get_Error_Fd;
- 
-    ------------------
-    -- Get_Input_Fd --
-    ------------------
- 
-    function Get_Input_Fd
-      (Descriptor : Process_Descriptor) return GNAT.OS_Lib.File_Descriptor
-    is
-    begin
-       return Descriptor.Input_Fd;
-    end Get_Input_Fd;
- 
-    -------------------
-    -- Get_Output_Fd --
-    -------------------
- 
-    function Get_Output_Fd
-      (Descriptor : Process_Descriptor) return GNAT.OS_Lib.File_Descriptor
-    is
-    begin
-       return Descriptor.Output_Fd;
-    end Get_Output_Fd;
- 
-    -------------
-    -- Get_Pid --
-    -------------
- 
-    function Get_Pid
-      (Descriptor : Process_Descriptor) return Process_Id
-    is
-    begin
-       return Descriptor.Pid;
-    end Get_Pid;
- 
-    -----------------
-    -- Has_Process --
-    -----------------
- 
-    function Has_Process (Regexp : Multiprocess_Regexp_Array) return Boolean is
-    begin
-       return Regexp /= (Regexp'Range => (null, null));
-    end Has_Process;
- 
-    ---------------
-    -- Interrupt --
-    ---------------
- 
-    procedure Interrupt (Descriptor : in out Process_Descriptor) is
-       SIGINT : constant := 2;
-    begin
-       Send_Signal (Descriptor, SIGINT);
-    end Interrupt;
- 
-    ------------------
-    -- Lock_Filters --
-    ------------------
- 
-    procedure Lock_Filters (Descriptor : in out Process_Descriptor) is
-    begin
-       Descriptor.Filters_Lock := Descriptor.Filters_Lock + 1;
-    end Lock_Filters;
- 
-    ------------------------
-    -- Non_Blocking_Spawn --
-    ------------------------
- 
-    procedure Non_Blocking_Spawn
-      (Descriptor  : out Process_Descriptor'Class;
-       Command     : String;
-       Args        : GNAT.OS_Lib.Argument_List;
-       Buffer_Size : Natural := 4096;
-       Err_To_Out  : Boolean := False)
-    is
-       function Fork return Process_Id;
-       pragma Import (C, Fork, "__gnat_expect_fork");
-       --  Starts a new process if possible. See the Unix command fork for more
-       --  information. On systems that do not support this capability (such as
-       --  Windows...), this command does nothing, and Fork will return
-       --  Null_Pid.
- 
-       Pipe1, Pipe2, Pipe3 : aliased Pipe_Type;
- 
-       Arg        : String_Access;
-       Arg_List   : String_List (1 .. Args'Length + 2);
-       C_Arg_List : aliased array (1 .. Args'Length + 2) of System.Address;
- 
-       Command_With_Path : String_Access;
- 
-    begin
-       Command_With_Path := Locate_Exec_On_Path (Command);
- 
-       if Command_With_Path = null then
-          raise Invalid_Process;
-       end if;
- 
-       --  Create the rest of the pipes once we know we will be able to
-       --  execute the process.
- 
-       Set_Up_Communications
-         (Descriptor, Err_To_Out, Pipe1'Access, Pipe2'Access, Pipe3'Access);
- 
-       --  Fork a new process
- 
-       Descriptor.Pid := Fork;
- 
-       --  Are we now in the child (or, for Windows, still in the common
-       --  process).
- 
-       if Descriptor.Pid = Null_Pid then
-          --  Prepare an array of arguments to pass to C
- 
-          Arg := new String (1 .. Command_With_Path'Length + 1);
-          Arg (1 .. Command_With_Path'Length) := Command_With_Path.all;
-          Arg (Arg'Last)        := ASCII.NUL;
-          Arg_List (1)          := Arg;
- 
-          for J in Args'Range loop
-             Arg                     := new String (1 .. Args (J)'Length + 1);
-             Arg (1 .. Args (J)'Length)    := Args (J).all;
-             Arg (Arg'Last)                := ASCII.NUL;
-             Arg_List (J + 2 - Args'First) := Arg.all'Access;
-          end loop;
- 
-          Arg_List (Arg_List'Last) := null;
- 
-          --  Make sure all arguments are compatible with OS conventions
- 
-          Normalize_Arguments (Arg_List);
- 
-          --  Prepare low-level argument list from the normalized arguments
- 
-          for K in Arg_List'Range loop
-             C_Arg_List (K) :=
-               (if Arg_List (K) /= null
-                then Arg_List (K).all'Address
-                else System.Null_Address);
-          end loop;
- 
-          --  This does not return on Unix systems
- 
-          Set_Up_Child_Communications
-            (Descriptor, Pipe1, Pipe2, Pipe3, Command_With_Path.all,
-             C_Arg_List'Address);
-       end if;
- 
-       Free (Command_With_Path);
- 
-       --  Did we have an error when spawning the child ?
- 
-       if Descriptor.Pid < Null_Pid then
-          raise Invalid_Process;
-       else
-          --  We are now in the parent process
- 
-          Set_Up_Parent_Communications (Descriptor, Pipe1, Pipe2, Pipe3);
-       end if;
- 
-       --  Create the buffer
- 
-       Descriptor.Buffer_Size := Buffer_Size;
- 
-       if Buffer_Size /= 0 then
-          Descriptor.Buffer := new String (1 .. Positive (Buffer_Size));
-       end if;
- 
-       --  Initialize the filters
- 
-       Descriptor.Filters := null;
-    end Non_Blocking_Spawn;
- 
-    -------------------------
-    -- Reinitialize_Buffer --
-    -------------------------
- 
-    procedure Reinitialize_Buffer
-      (Descriptor : in out Process_Descriptor'Class)
-    is
-    begin
-       if Descriptor.Buffer_Size = 0 then
-          declare
-             Tmp : String_Access := Descriptor.Buffer;
- 
-          begin
-             Descriptor.Buffer :=
-               new String
-                 (1 .. Descriptor.Buffer_Index - Descriptor.Last_Match_End);
- 
-             if Tmp /= null then
-                Descriptor.Buffer.all := Tmp
-                  (Descriptor.Last_Match_End + 1 .. Descriptor.Buffer_Index);
-                Free (Tmp);
-             end if;
-          end;
- 
-          Descriptor.Buffer_Index := Descriptor.Buffer'Last;
- 
-       else
-          Descriptor.Buffer
-            (1 .. Descriptor.Buffer_Index - Descriptor.Last_Match_End) :=
-              Descriptor.Buffer
-                (Descriptor.Last_Match_End + 1 .. Descriptor.Buffer_Index);
- 
-          if Descriptor.Buffer_Index > Descriptor.Last_Match_End then
-             Descriptor.Buffer_Index :=
-               Descriptor.Buffer_Index - Descriptor.Last_Match_End;
-          else
-             Descriptor.Buffer_Index := 0;
-          end if;
-       end if;
- 
-       Descriptor.Last_Match_Start := 0;
-       Descriptor.Last_Match_End := 0;
-    end Reinitialize_Buffer;
- 
-    -------------------
-    -- Remove_Filter --
-    -------------------
- 
-    procedure Remove_Filter
-      (Descriptor : in out Process_Descriptor;
-       Filter     : Filter_Function)
-    is
-       Previous : Filter_List := null;
-       Current  : Filter_List := Descriptor.Filters;
- 
-    begin
-       while Current /= null loop
-          if Current.Filter = Filter then
-             if Previous = null then
-                Descriptor.Filters := Current.Next;
-             else
-                Previous.Next := Current.Next;
-             end if;
-          end if;
- 
-          Previous := Current;
-          Current := Current.Next;
-       end loop;
-    end Remove_Filter;
- 
-    ----------
-    -- Send --
-    ----------
- 
-    procedure Send
-      (Descriptor   : in out Process_Descriptor;
-       Str          : String;
-       Add_LF       : Boolean := True;
-       Empty_Buffer : Boolean := False)
-    is
-       Line_Feed   : aliased constant String := (1 .. 1 => ASCII.LF);
-       Descriptors : Array_Of_Pd := (1 => Descriptor'Unrestricted_Access);
- 
-       Result  : Expect_Match;
-       Discard : Natural;
-       pragma Warnings (Off, Result);
-       pragma Warnings (Off, Discard);
- 
-    begin
-       if Empty_Buffer then
- 
-          --  Force a read on the process if there is anything waiting
- 
-          Expect_Internal
-            (Descriptors, Result, Timeout => 0, Full_Buffer => False);
- 
-          if Result = Expect_Internal_Error
-            or else Result = Expect_Process_Died
-          then
-             raise Process_Died;
-          end if;
- 
-          Descriptor.Last_Match_End := Descriptor.Buffer_Index;
- 
-          --  Empty the buffer
- 
-          Reinitialize_Buffer (Descriptor);
-       end if;
- 
-       Call_Filters (Descriptor, Str, Input);
-       Discard :=
-         Write (Descriptor.Input_Fd, Str'Address, Str'Last - Str'First + 1);
- 
-       if Add_LF then
-          Call_Filters (Descriptor, Line_Feed, Input);
-          Discard :=
-            Write (Descriptor.Input_Fd, Line_Feed'Address, 1);
-       end if;
-    end Send;
- 
-    -----------------
-    -- Send_Signal --
-    -----------------
- 
-    procedure Send_Signal
-      (Descriptor : Process_Descriptor;
-       Signal     : Integer)
-    is
-    begin
-       --  A nonpositive process id passed to kill has special meanings. For
-       --  example, -1 means kill all processes in sight, including self, in
-       --  POSIX and Windows (and something slightly different in Linux). See
-       --  man pages for details. In any case, we don't want to do that. Note
-       --  that Descriptor.Pid will be -1 if the process was not successfully
-       --  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;
-       end if;
-    end Send_Signal;
- 
-    ---------------------------------
-    -- Set_Up_Child_Communications --
-    ---------------------------------
- 
-    procedure Set_Up_Child_Communications
-      (Pid   : in out Process_Descriptor;
-       Pipe1 : in out Pipe_Type;
-       Pipe2 : in out Pipe_Type;
-       Pipe3 : in out Pipe_Type;
-       Cmd   : String;
-       Args  : System.Address)
-    is
-       pragma Warnings (Off, Pid);
-       pragma Warnings (Off, Pipe1);
-       pragma Warnings (Off, Pipe2);
-       pragma Warnings (Off, Pipe3);
- 
-       Input  : File_Descriptor;
-       Output : File_Descriptor;
-       Error  : File_Descriptor;
- 
-       No_Fork_On_Target : constant Boolean := Target_OS = Windows;
- 
-    begin
-       if No_Fork_On_Target then
- 
-          --  Since Windows does not have a separate fork/exec, we need to
-          --  perform the following actions:
- 
-          --    - save stdin, stdout, stderr
-          --    - replace them by our pipes
-          --    - create the child with process handle inheritance
-          --    - revert to the previous stdin, stdout and stderr.
- 
-          Input  := Dup (GNAT.OS_Lib.Standin);
-          Output := Dup (GNAT.OS_Lib.Standout);
-          Error  := Dup (GNAT.OS_Lib.Standerr);
-       end if;
- 
-       --  Since we are still called from the parent process, there is no way
-       --  currently we can cleanly close the unneeded ends of the pipes, but
-       --  this doesn't really matter.
- 
-       --  We could close Pipe1.Output, Pipe2.Input, Pipe3.Input
- 
-       Dup2 (Pipe1.Input,  GNAT.OS_Lib.Standin);
-       Dup2 (Pipe2.Output, GNAT.OS_Lib.Standout);
-       Dup2 (Pipe3.Output, GNAT.OS_Lib.Standerr);
- 
-       Portable_Execvp (Pid.Pid'Access, Cmd & ASCII.NUL, Args);
- 
-       --  The following lines are only required for Windows systems and will
-       --  not be executed on Unix systems, but we use the same condition as
-       --  above to avoid warnings on uninitialized variables on Unix systems.
-       --  We are now in the parent process.
- 
-       if No_Fork_On_Target then
- 
-          --  Restore the old descriptors
- 
-          Dup2 (Input,  GNAT.OS_Lib.Standin);
-          Dup2 (Output, GNAT.OS_Lib.Standout);
-          Dup2 (Error,  GNAT.OS_Lib.Standerr);
-          Close (Input);
-          Close (Output);
-          Close (Error);
-       end if;
-    end Set_Up_Child_Communications;
- 
-    ---------------------------
-    -- Set_Up_Communications --
-    ---------------------------
- 
-    procedure Set_Up_Communications
-      (Pid        : in out Process_Descriptor;
-       Err_To_Out : Boolean;
-       Pipe1      : not null access Pipe_Type;
-       Pipe2      : not null access Pipe_Type;
-       Pipe3      : not null access Pipe_Type)
-    is
-       Status : Boolean;
-       pragma Unreferenced (Status);
- 
-    begin
-       --  Create the pipes
- 
-       if Create_Pipe (Pipe1) /= 0 then
-          return;
-       end if;
- 
-       if Create_Pipe (Pipe2) /= 0 then
-          Close (Pipe1.Input);
-          Close (Pipe1.Output);
-          return;
-       end if;
- 
-       --  Record the 'parent' end of the two pipes in Pid:
-       --    Child stdin  is connected to the 'write' end of Pipe1;
-       --    Child stdout is connected to the 'read'  end of Pipe2.
-       --  We do not want these descriptors to remain open in the child
-       --  process, so we mark them close-on-exec/non-inheritable.
- 
-       Pid.Input_Fd  := Pipe1.Output;
-       Set_Close_On_Exec (Pipe1.Output, True, Status);
-       Pid.Output_Fd := Pipe2.Input;
-       Set_Close_On_Exec (Pipe2.Input, True, Status);
- 
-       if Err_To_Out then
- 
-          --  Reuse the standard output pipe for standard error
- 
-          Pipe3.all := Pipe2.all;
- 
-       else
-          --  Create a separate pipe for standard error
- 
-          if Create_Pipe (Pipe3) /= 0 then
-             Pipe3.all := Pipe2.all;
-          end if;
-       end if;
- 
-       --  As above, record the proper fd for the child's standard error stream
- 
-       Pid.Error_Fd := Pipe3.Input;
-       Set_Close_On_Exec (Pipe3.Input, True, Status);
-    end Set_Up_Communications;
- 
-    ----------------------------------
-    -- Set_Up_Parent_Communications --
-    ----------------------------------
- 
-    procedure Set_Up_Parent_Communications
-      (Pid   : in out Process_Descriptor;
-       Pipe1 : in out Pipe_Type;
-       Pipe2 : in out Pipe_Type;
-       Pipe3 : in out Pipe_Type)
-    is
-       pragma Warnings (Off, Pid);
-       pragma Warnings (Off, Pipe1);
-       pragma Warnings (Off, Pipe2);
-       pragma Warnings (Off, Pipe3);
- 
-    begin
-       Close (Pipe1.Input);
-       Close (Pipe2.Output);
- 
-       if Pipe3.Output /= Pipe2.Output then
-          Close (Pipe3.Output);
-       end if;
-    end Set_Up_Parent_Communications;
- 
-    ------------------
-    -- Trace_Filter --
-    ------------------
- 
-    procedure Trace_Filter
-      (Descriptor : Process_Descriptor'Class;
-       Str        : String;
-       User_Data  : System.Address := System.Null_Address)
-    is
-       pragma Warnings (Off, Descriptor);
-       pragma Warnings (Off, User_Data);
-    begin
-       GNAT.IO.Put (Str);
-    end Trace_Filter;
- 
-    --------------------
-    -- Unlock_Filters --
-    --------------------
- 
-    procedure Unlock_Filters (Descriptor : in out Process_Descriptor) is
-    begin
-       if Descriptor.Filters_Lock > 0 then
-          Descriptor.Filters_Lock := Descriptor.Filters_Lock - 1;
-       end if;
-    end Unlock_Filters;
- 
- end GNAT.Expect;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-expect.ads gcc-8.1.0/gcc/ada/g-expect.ads
*** gcc-7.3.0/gcc/ada/g-expect.ads	Mon Aug  4 12:51:00 2014
--- gcc-8.1.0/gcc/ada/g-expect.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,647 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                          G N A T . E X P E C T                           --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 2000-2014, AdaCore                     --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Currently this package is implemented on all native GNAT ports. It is not
- --  yet implemented for any of the cross-ports (e.g. it is not available for
- --  VxWorks or LynxOS).
- 
- --  -----------
- --  -- Usage --
- --  -----------
- 
- --  This package provides a set of subprograms similar to what is available
- --  with the standard Tcl Expect tool.
- 
- --  It allows you to easily spawn and communicate with an external process.
- --  You can send commands or inputs to the process, and compare the output
- --  with some expected regular expression.
- 
- --  Usage example:
- 
- --      Non_Blocking_Spawn
- --         (Fd, "ftp",
- --           (1 => new String' ("machine@domain")));
- --      Timeout := 10_000;  --  10 seconds
- --      Expect (Fd, Result, Regexp_Array'(+"\(user\)", +"\(passwd\)"),
- --              Timeout);
- --      case Result is
- --         when 1 => Send (Fd, "my_name");   --  matched "user"
- --         when 2 => Send (Fd, "my_passwd"); --  matched "passwd"
- --         when Expect_Timeout => null;      --  timeout
- --         when others => null;
- --      end case;
- --      Close (Fd);
- 
- --  You can also combine multiple regular expressions together, and get the
- --  specific string matching a parenthesis pair by doing something like this:
- --  If you expect either "lang=optional ada" or "lang=ada" from the external
- --  process, you can group the two together, which is more efficient, and
- --  simply get the name of the language by doing:
- 
- --      declare
- --         Matched : Match_Array (0 .. 2);
- --      begin
- --         Expect (Fd, Result, "lang=(optional)? ([a-z]+)", Matched);
- --         Put_Line ("Seen: " &
- --                   Expect_Out (Fd) (Matched (2).First .. Matched (2).Last));
- --      end;
- 
- --  Alternatively, you might choose to use a lower-level interface to the
- --  processes, where you can give your own input and output filters every
- --  time characters are read from or written to the process.
- 
- --      procedure My_Filter
- --        (Descriptor : Process_Descriptor'Class;
- --         Str        : String;
- --         User_Data  : System.Address)
- --      is
- --      begin
- --         Put_Line (Str);
- --      end;
- 
- --      Non_Blocking_Spawn
- --        (Fd, "tail",
- --         (new String' ("-f"), new String' ("a_file")));
- --      Add_Filter (Fd, My_Filter'Access, Output);
- --      Expect (Fd, Result, "", 0);  --  wait forever
- 
- --  The above example should probably be run in a separate task, since it is
- --  blocking on the call to Expect.
- 
- --  Both examples can be combined, for instance to systematically print the
- --  output seen by expect, even though you still want to let Expect do the
- --  filtering. You can use the Trace_Filter subprogram for such a filter.
- 
- --  If you want to get the output of a simple command, and ignore any previous
- --  existing output, it is recommended to do something like:
- 
- --      Expect (Fd, Result, ".*", Timeout => 0);
- --      -- Empty the buffer, by matching everything (after checking
- --      -- if there was any input).
- 
- --      Send (Fd, "command");
- --      Expect (Fd, Result, ".."); -- match only on the output of command
- 
- --  -----------------
- --  -- Task Safety --
- --  -----------------
- 
- --  This package is not task-safe: there should not be concurrent calls to the
- --  functions defined in this package. In other words, separate tasks must not
- --  access the facilities of this package without synchronization that
- --  serializes access.
- 
- with System;
- with GNAT.OS_Lib;
- with GNAT.Regpat;
- 
- package GNAT.Expect is
- 
-    type Process_Id is new Integer;
-    Invalid_Pid : constant Process_Id := -1;
-    Null_Pid    : constant Process_Id := 0;
- 
-    type Filter_Type is (Output, Input, Died);
-    --  The signals that are emitted by the Process_Descriptor upon state change
-    --  in the child. One can connect to any of these signals through the
-    --  Add_Filter subprograms.
-    --
-    --     Output => Every time new characters are read from the process
-    --               associated with Descriptor, the filter is called with
-    --               these new characters in the argument.
-    --
-    --               Note that output is generated only when the program is
-    --               blocked in a call to Expect.
-    --
-    --     Input  => Every time new characters are written to the process
-    --               associated with Descriptor, the filter is called with
-    --               these new characters in the argument.
-    --               Note that input is generated only by calls to Send.
-    --
-    --     Died   => The child process has died, or was explicitly killed
- 
-    type Process_Descriptor is tagged private;
-    --  Contains all the components needed to describe a process handled
-    --  in this package, including a process identifier, file descriptors
-    --  associated with the standard input, output and error, and the buffer
-    --  needed to handle the expect calls.
- 
-    type Process_Descriptor_Access is access Process_Descriptor'Class;
- 
-    ------------------------
-    -- Spawning a process --
-    ------------------------
- 
-    procedure Non_Blocking_Spawn
-      (Descriptor  : out Process_Descriptor'Class;
-       Command     : String;
-       Args        : GNAT.OS_Lib.Argument_List;
-       Buffer_Size : Natural := 4096;
-       Err_To_Out  : Boolean := False);
-    --  This call spawns a new process and allows sending commands to
-    --  the process and/or automatic parsing of the output.
-    --
-    --  The expect buffer associated with that process can contain at most
-    --  Buffer_Size characters. Older characters are simply discarded when this
-    --  buffer is full. Beware that if the buffer is too big, this could slow
-    --  down the Expect calls if the output not is matched, since Expect has to
-    --  match all the regexp against all the characters in the buffer. If
-    --  Buffer_Size is 0, there is no limit (i.e. all the characters are kept
-    --  till Expect matches), but this is slower.
-    --
-    --  If Err_To_Out is True, then the standard error of the spawned process is
-    --  connected to the standard output. This is the only way to get the Expect
-    --  subprograms to also match on output on standard error.
-    --
-    --  Invalid_Process is raised if the process could not be spawned.
-    --
-    --  For information about spawning processes from tasking programs, see the
-    --  "NOTE: Spawn in tasking programs" in System.OS_Lib (s-os_lib.ads).
- 
-    procedure Close (Descriptor : in out Process_Descriptor);
-    --  Terminate the process and close the pipes to it. It implicitly does the
-    --  'wait' command required to clean up the process table. This also frees
-    --  the buffer associated with the process id. Raise Invalid_Process if the
-    --  process id is invalid.
- 
-    procedure Close
-      (Descriptor : in out Process_Descriptor;
-       Status     : out Integer);
-    --  Same as above, but also returns the exit status of the process, as set
-    --  for example by the procedure GNAT.OS_Lib.OS_Exit.
- 
-    procedure Send_Signal
-      (Descriptor : Process_Descriptor;
-       Signal     : Integer);
-    --  Send a given signal to the process. Raise Invalid_Process if the process
-    --  id is invalid.
- 
-    procedure Interrupt (Descriptor : in out Process_Descriptor);
-    --  Interrupt the process (the equivalent of Ctrl-C on unix and windows)
-    --  and call close if the process dies.
- 
-    function Get_Input_Fd
-      (Descriptor : Process_Descriptor) return GNAT.OS_Lib.File_Descriptor;
-    --  Return the input file descriptor associated with Descriptor
- 
-    function Get_Output_Fd
-      (Descriptor : Process_Descriptor) return GNAT.OS_Lib.File_Descriptor;
-    --  Return the output file descriptor associated with Descriptor
- 
-    function Get_Error_Fd
-      (Descriptor : Process_Descriptor) return GNAT.OS_Lib.File_Descriptor;
-    --  Return the error output file descriptor associated with Descriptor
- 
-    function Get_Pid
-      (Descriptor : Process_Descriptor) return Process_Id;
-    --  Return the process id associated with a given process descriptor
- 
-    function Get_Command_Output
-      (Command    : String;
-       Arguments  : GNAT.OS_Lib.Argument_List;
-       Input      : String;
-       Status     : not null access Integer;
-       Err_To_Out : Boolean := False) return String;
-    --  Execute Command with the specified Arguments and Input, and return the
-    --  generated standard output data as a single string. If Err_To_Out is
-    --  True, generated standard error output is included as well. On return,
-    --  Status is set to the command's exit status.
- 
-    --------------------
-    -- Adding filters --
-    --------------------
- 
-    --  This is a rather low-level interface to subprocesses, since basically
-    --  the filtering is left entirely to the user. See the Expect subprograms
-    --  below for higher level functions.
- 
-    type Filter_Function is access
-      procedure
-        (Descriptor : Process_Descriptor'Class;
-         Str        : String;
-         User_Data  : System.Address := System.Null_Address);
-    --  Function called every time new characters are read from or written to
-    --  the process.
-    --
-    --  Str is a string of all these characters.
-    --
-    --  User_Data, if specified, is user specific data that will be passed to
-    --  the filter. Note that no checks are done on this parameter, so it should
-    --  be used with caution.
- 
-    procedure Add_Filter
-      (Descriptor : in out Process_Descriptor;
-       Filter     : Filter_Function;
-       Filter_On  : Filter_Type := Output;
-       User_Data  : System.Address := System.Null_Address;
-       After      : Boolean := False);
-    --  Add a new filter for one of the filter types. This filter will be run
-    --  before all the existing filters, unless After is set True, in which case
-    --  it will be run after existing filters. User_Data is passed as is to the
-    --  filter procedure.
- 
-    procedure Remove_Filter
-      (Descriptor : in out Process_Descriptor;
-       Filter     : Filter_Function);
-    --  Remove a filter from the list of filters (whatever the type of the
-    --  filter).
- 
-    procedure Trace_Filter
-      (Descriptor : Process_Descriptor'Class;
-       Str        : String;
-       User_Data  : System.Address := System.Null_Address);
-    --  Function that can be used as a filter and that simply outputs Str on
-    --  Standard_Output. This is mainly used for debugging purposes.
-    --  User_Data is ignored.
- 
-    procedure Lock_Filters (Descriptor : in out Process_Descriptor);
-    --  Temporarily disables all output and input filters. They will be
-    --  reactivated only when Unlock_Filters has been called as many times as
-    --  Lock_Filters.
- 
-    procedure Unlock_Filters (Descriptor : in out Process_Descriptor);
-    --  Unlocks the filters. They are reactivated only if Unlock_Filters
-    --  has been called as many times as Lock_Filters.
- 
-    ------------------
-    -- Sending data --
-    ------------------
- 
-    procedure Send
-      (Descriptor   : in out Process_Descriptor;
-       Str          : String;
-       Add_LF       : Boolean := True;
-       Empty_Buffer : Boolean := False);
-    --  Send a string to the file descriptor.
-    --
-    --  The string is not formatted in any way, except if Add_LF is True, in
-    --  which case an ASCII.LF is added at the end, so that Str is recognized
-    --  as a command by the external process.
-    --
-    --  If Empty_Buffer is True, any input waiting from the process (or in the
-    --  buffer) is first discarded before the command is sent. The output
-    --  filters are of course called as usual.
- 
-    -----------------------------------------------------------
-    -- Working on the output (single process, simple regexp) --
-    -----------------------------------------------------------
- 
-    type Expect_Match is new Integer;
-    Expect_Full_Buffer : constant Expect_Match := -1;
-    --  If the buffer was full and some characters were discarded
- 
-    Expect_Timeout : constant Expect_Match := -2;
-    --  If no output matching the regexps was found before the timeout
- 
-    function "+" (S : String) return GNAT.OS_Lib.String_Access;
-    --  Allocate some memory for the string. This is merely a convenience
-    --  function to help create the array of regexps in the call to Expect.
- 
-    procedure Expect
-      (Descriptor  : in out Process_Descriptor;
-       Result      : out Expect_Match;
-       Regexp      : String;
-       Timeout     : Integer := 10_000;
-       Full_Buffer : Boolean := False);
-    --  Wait till a string matching Fd can be read from Fd, and return 1 if a
-    --  match was found.
-    --
-    --  It consumes all the characters read from Fd until a match found, and
-    --  then sets the return values for the subprograms Expect_Out and
-    --  Expect_Out_Match.
-    --
-    --  The empty string "" will never match, and can be used if you only want
-    --  to match after a specific timeout. Beware that if Timeout is -1 at the
-    --  time, the current task will be blocked forever.
-    --
-    --  This command times out after Timeout milliseconds (or never if Timeout
-    --  is -1). In that case, Expect_Timeout is returned. The value returned by
-    --  Expect_Out and Expect_Out_Match are meaningless in that case.
-    --
-    --  Note that using a timeout of 0ms leads to unpredictable behavior, since
-    --  the result depends on whether the process has already sent some output
-    --  the first time Expect checks, and this depends on the operating system.
-    --
-    --  The regular expression must obey the syntax described in GNAT.Regpat.
-    --
-    --  If Full_Buffer is True, then Expect will match if the buffer was too
-    --  small and some characters were about to be discarded. In that case,
-    --  Expect_Full_Buffer is returned.
- 
-    procedure Expect
-      (Descriptor  : in out Process_Descriptor;
-       Result      : out Expect_Match;
-       Regexp      : GNAT.Regpat.Pattern_Matcher;
-       Timeout     : Integer := 10_000;
-       Full_Buffer : Boolean := False);
-    --  Same as the previous one, but with a precompiled regular expression.
-    --  This is more efficient however, especially if you are using this
-    --  expression multiple times, since this package won't need to recompile
-    --  the regexp every time.
- 
-    procedure Expect
-      (Descriptor  : in out Process_Descriptor;
-       Result      : out Expect_Match;
-       Regexp      : String;
-       Matched     : out GNAT.Regpat.Match_Array;
-       Timeout     : Integer := 10_000;
-       Full_Buffer : Boolean := False);
-    --  Same as above, but it is now possible to get the indexes of the
-    --  substrings for the parentheses in the regexp (see the example at the
-    --  top of this package, as well as the documentation in the package
-    --  GNAT.Regpat).
-    --
-    --  Matched'First should be 0, and this index will contain the indexes for
-    --  the whole string that was matched. The index 1 will contain the indexes
-    --  for the first parentheses-pair, and so on.
- 
-    ------------
-    -- Expect --
-    ------------
- 
-    procedure Expect
-      (Descriptor  : in out Process_Descriptor;
-       Result      : out Expect_Match;
-       Regexp      : GNAT.Regpat.Pattern_Matcher;
-       Matched     : out GNAT.Regpat.Match_Array;
-       Timeout     : Integer := 10_000;
-       Full_Buffer : Boolean := False);
-    --  Same as above, but with a precompiled regular expression
- 
-    -------------------------------------------------------------
-    -- Working on the output (single process, multiple regexp) --
-    -------------------------------------------------------------
- 
-    type Regexp_Array is array (Positive range <>) of GNAT.OS_Lib.String_Access;
- 
-    type Pattern_Matcher_Access is access all GNAT.Regpat.Pattern_Matcher;
-    type Compiled_Regexp_Array is
-      array (Positive range <>) of Pattern_Matcher_Access;
- 
-    function "+"
-      (P : GNAT.Regpat.Pattern_Matcher) return Pattern_Matcher_Access;
-    --  Allocate some memory for the pattern matcher. This is only a convenience
-    --  function to help create the array of compiled regular expressions.
- 
-    procedure Expect
-      (Descriptor  : in out Process_Descriptor;
-       Result      : out Expect_Match;
-       Regexps     : Regexp_Array;
-       Timeout     : Integer := 10_000;
-       Full_Buffer : Boolean := False);
-    --  Wait till a string matching one of the regular expressions in Regexps
-    --  is found. This function returns the index of the regexp that matched.
-    --  This command is blocking, but will timeout after Timeout milliseconds.
-    --  In that case, Timeout is returned.
- 
-    procedure Expect
-      (Descriptor  : in out Process_Descriptor;
-       Result      : out Expect_Match;
-       Regexps     : Compiled_Regexp_Array;
-       Timeout     : Integer := 10_000;
-       Full_Buffer : Boolean := False);
-    --  Same as the previous one, but with precompiled regular expressions.
-    --  This can be much faster if you are using them multiple times.
- 
-    procedure Expect
-      (Descriptor  : in out Process_Descriptor;
-       Result      : out Expect_Match;
-       Regexps     : Regexp_Array;
-       Matched     : out GNAT.Regpat.Match_Array;
-       Timeout     : Integer := 10_000;
-       Full_Buffer : Boolean := False);
-    --  Same as above, except that you can also access the parenthesis
-    --  groups inside the matching regular expression.
-    --
-    --  The first index in Matched must be 0, or Constraint_Error will be
-    --  raised. The index 0 contains the indexes for the whole string that was
-    --  matched, the index 1 contains the indexes for the first parentheses
-    --  pair, and so on.
- 
-    procedure Expect
-      (Descriptor  : in out Process_Descriptor;
-       Result      : out Expect_Match;
-       Regexps     : Compiled_Regexp_Array;
-       Matched     : out GNAT.Regpat.Match_Array;
-       Timeout     : Integer := 10_000;
-       Full_Buffer : Boolean := False);
-    --  Same as above, but with precompiled regular expressions. The first index
-    --  in Matched must be 0, or Constraint_Error will be raised.
- 
-    -------------------------------------------
-    -- Working on the output (multi-process) --
-    -------------------------------------------
- 
-    type Multiprocess_Regexp is record
-       Descriptor : Process_Descriptor_Access;
-       Regexp     : Pattern_Matcher_Access;
-    end record;
- 
-    type Multiprocess_Regexp_Array is
-      array (Positive range <>) of Multiprocess_Regexp;
- 
-    procedure Free (Regexp : in out Multiprocess_Regexp);
-    --  Free the memory occupied by Regexp
- 
-    function Has_Process (Regexp : Multiprocess_Regexp_Array) return Boolean;
-    --  Return True if at least one entry in Regexp is non-null, ie there is
-    --  still at least one process to monitor
- 
-    function First_Dead_Process
-      (Regexp : Multiprocess_Regexp_Array) return Natural;
-    --  Find the first entry in Regexp that corresponds to a dead process that
-    --  wasn't Free-d yet. This function is called in general when Expect
-    --  (below) raises the exception Process_Died. This returns 0 if no process
-    --  has died yet.
- 
-    procedure Expect
-      (Result      : out Expect_Match;
-       Regexps     : Multiprocess_Regexp_Array;
-       Matched     : out GNAT.Regpat.Match_Array;
-       Timeout     : Integer := 10_000;
-       Full_Buffer : Boolean := False);
-    --  Same as above, but for multi processes. Any of the entries in
-    --  Regexps can have a null Descriptor or Regexp. Such entries will
-    --  simply be ignored. Therefore when a process terminates, you can
-    --  simply reset its entry.
-    --
-    --  The expect loop would therefore look like:
-    --
-    --     Processes : Multiprocess_Regexp_Array (...) := ...;
-    --     R         : Natural;
-    --
-    --     while Has_Process (Processes) loop
-    --        begin
-    --           Expect (Result, Processes, Timeout => -1);
-    --           ... process output of process Result (output, full buffer,...)
-    --
-    --        exception
-    --           when Process_Died =>
-    --               --  Free memory
-    --               R := First_Dead_Process (Processes);
-    --               Close (Processes (R).Descriptor.all, Status);
-    --               Free (Processes (R));
-    --        end;
-    --     end loop;
- 
-    procedure Expect
-      (Result      : out Expect_Match;
-       Regexps     : Multiprocess_Regexp_Array;
-       Timeout     : Integer := 10_000;
-       Full_Buffer : Boolean := False);
-    --  Same as the previous one, but for multiple processes. This procedure
-    --  finds the first regexp that match the associated process.
- 
-    ------------------------
-    -- Getting the output --
-    ------------------------
- 
-    procedure Flush
-      (Descriptor : in out Process_Descriptor;
-       Timeout    : Integer := 0);
-    --  Discard all output waiting from the process.
-    --
-    --  This output is simply discarded, and no filter is called. This output
-    --  will also not be visible by the next call to Expect, nor will any output
-    --  currently buffered.
-    --
-    --  Timeout is the delay for which we wait for output to be available from
-    --  the process. If 0, we only get what is immediately available.
- 
-    function Expect_Out (Descriptor : Process_Descriptor) return String;
-    --  Return the string matched by the last Expect call.
-    --
-    --  The returned string is in fact the concatenation of all the strings read
-    --  from the file descriptor up to, and including, the characters that
-    --  matched the regular expression.
-    --
-    --  For instance, with an input "philosophic", and a regular expression "hi"
-    --  in the call to expect, the strings returned the first and second time
-    --  would be respectively "phi" and "losophi".
- 
-    function Expect_Out_Match (Descriptor : Process_Descriptor) return String;
-    --  Return the string matched by the last Expect call.
-    --
-    --  The returned string includes only the character that matched the
-    --  specific regular expression. All the characters that came before are
-    --  simply discarded.
-    --
-    --  For instance, with an input "philosophic", and a regular expression
-    --  "hi" in the call to expect, the strings returned the first and second
-    --  time would both be "hi".
- 
-    ----------------
-    -- Exceptions --
-    ----------------
- 
-    Invalid_Process : exception;
-    --  Raised by most subprograms above when the parameter Descriptor is not a
-    --  valid process or is a closed process.
- 
-    Process_Died : exception;
-    --  Raised by all the expect subprograms if Descriptor was originally a
-    --  valid process that died while Expect was executing. It is also raised
-    --  when Expect receives an end-of-file.
- 
- private
-    type Filter_List_Elem;
-    type Filter_List is access Filter_List_Elem;
-    type Filter_List_Elem is record
-       Filter    : Filter_Function;
-       User_Data : System.Address;
-       Filter_On : Filter_Type;
-       Next      : Filter_List;
-    end record;
- 
-    type Pipe_Type is record
-       Input, Output : GNAT.OS_Lib.File_Descriptor;
-    end record;
-    --  This type represents a pipe, used to communicate between two processes
- 
-    procedure Set_Up_Communications
-      (Pid        : in out Process_Descriptor;
-       Err_To_Out : Boolean;
-       Pipe1      : not null access Pipe_Type;
-       Pipe2      : not null access Pipe_Type;
-       Pipe3      : not null access Pipe_Type);
-    --  Set up all the communication pipes and file descriptors prior to
-    --  spawning the child process.
- 
-    procedure Set_Up_Parent_Communications
-      (Pid   : in out Process_Descriptor;
-       Pipe1 : in out Pipe_Type;
-       Pipe2 : in out Pipe_Type;
-       Pipe3 : in out Pipe_Type);
-    --  Finish the set up of the pipes while in the parent process
- 
-    procedure Set_Up_Child_Communications
-      (Pid   : in out Process_Descriptor;
-       Pipe1 : in out Pipe_Type;
-       Pipe2 : in out Pipe_Type;
-       Pipe3 : in out Pipe_Type;
-       Cmd   : String;
-       Args  : System.Address);
-    --  Finish the set up of the pipes while in the child process This also
-    --  spawns the child process (based on Cmd). On systems that support fork,
-    --  this procedure is executed inside the newly created process.
- 
-    type Process_Descriptor is tagged record
-       Pid              : aliased Process_Id := Invalid_Pid;
-       Input_Fd         : GNAT.OS_Lib.File_Descriptor := GNAT.OS_Lib.Invalid_FD;
-       Output_Fd        : GNAT.OS_Lib.File_Descriptor := GNAT.OS_Lib.Invalid_FD;
-       Error_Fd         : GNAT.OS_Lib.File_Descriptor := GNAT.OS_Lib.Invalid_FD;
-       Filters_Lock     : Integer := 0;
- 
-       Filters          : Filter_List := null;
- 
-       Buffer           : GNAT.OS_Lib.String_Access := null;
-       Buffer_Size      : Natural := 0;
-       Buffer_Index     : Natural := 0;
- 
-       Last_Match_Start : Natural := 0;
-       Last_Match_End   : Natural := 0;
-    end record;
- 
-    --  The following subprogram is provided for use in the body, and also
-    --  possibly in future child units providing extensions to this package.
- 
-    procedure Portable_Execvp
-      (Pid  : not null access Process_Id;
-       Cmd  : String;
-       Args : System.Address);
-    pragma Import (C, Portable_Execvp, "__gnat_expect_portable_execvp");
-    --  Executes, in a portable way, the command Cmd (full path must be
-    --  specified), with the given Args, which must be an array of string
-    --  pointers. Note that the first element in Args must be the executable
-    --  name, and the last element must be a null pointer. The returned value
-    --  in Pid is the process ID, or zero if not supported on the platform.
- 
- end GNAT.Expect;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-exptty.adb gcc-8.1.0/gcc/ada/g-exptty.adb
*** gcc-7.3.0/gcc/ada/g-exptty.adb	Thu Jul 31 12:58:59 2014
--- gcc-8.1.0/gcc/ada/g-exptty.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,313 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                      G N A T . E X P E C T . T T Y                       --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                    Copyright (C) 2000-2014, AdaCore                      --
- --                                                                          --
- -- GNAT is 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 GNAT.OS_Lib; use GNAT.OS_Lib;
- 
- with System; use System;
- 
- package body GNAT.Expect.TTY is
- 
-    On_Windows : constant Boolean := Directory_Separator = '\';
-    --  True when on Windows
- 
-    -----------
-    -- Close --
-    -----------
- 
-    overriding procedure Close
-      (Descriptor : in out TTY_Process_Descriptor;
-       Status     : out Integer)
-    is
-       procedure Terminate_Process (Process : System.Address);
-       pragma Import (C, Terminate_Process, "__gnat_terminate_process");
- 
-       function Waitpid (Process : System.Address) return Integer;
-       pragma Import (C, Waitpid, "__gnat_tty_waitpid");
-       --  Wait for a specific process id, and return its exit code
- 
-       procedure Free_Process (Process : System.Address);
-       pragma Import (C, Free_Process, "__gnat_free_process");
- 
-       procedure Close_TTY (Process : System.Address);
-       pragma Import (C, Close_TTY, "__gnat_close_tty");
- 
-    begin
-       --  If we haven't already closed the process
- 
-       if Descriptor.Process = System.Null_Address then
-          Status := -1;
- 
-       else
-          --  Send a Ctrl-C to the process first. This way, if the launched
-          --  process is a "sh" or "cmd", the child processes will get
-          --  terminated as well. Otherwise, terminating the main process
-          --  brutally will leave the children running.
- 
-          --  Note: special characters are sent to the terminal to generate the
-          --  signal, so this needs to be done while the file descriptors are
-          --  still open (it used to be after the closes and that was wrong).
- 
-          Interrupt (Descriptor);
-          delay (0.05);
- 
-          if Descriptor.Input_Fd /= Invalid_FD then
-             Close (Descriptor.Input_Fd);
-          end if;
- 
-          if Descriptor.Error_Fd /= Descriptor.Output_Fd
-            and then Descriptor.Error_Fd /= Invalid_FD
-          then
-             Close (Descriptor.Error_Fd);
-          end if;
- 
-          if Descriptor.Output_Fd /= Invalid_FD then
-             Close (Descriptor.Output_Fd);
-          end if;
- 
-          Terminate_Process (Descriptor.Process);
-          Status := Waitpid (Descriptor.Process);
- 
-          if not On_Windows then
-             Close_TTY (Descriptor.Process);
-          end if;
- 
-          Free_Process (Descriptor.Process'Address);
-          Descriptor.Process := System.Null_Address;
- 
-          GNAT.OS_Lib.Free (Descriptor.Buffer);
-          Descriptor.Buffer_Size := 0;
-       end if;
-    end Close;
- 
-    overriding procedure Close (Descriptor : in out TTY_Process_Descriptor) is
-       Status : Integer;
-    begin
-       Close (Descriptor, Status);
-    end Close;
- 
-    -----------------------------
-    -- Close_Pseudo_Descriptor --
-    -----------------------------
- 
-    procedure Close_Pseudo_Descriptor
-      (Descriptor : in out TTY_Process_Descriptor)
-    is
-    begin
-       Descriptor.Buffer_Size := 0;
-       GNAT.OS_Lib.Free (Descriptor.Buffer);
-    end Close_Pseudo_Descriptor;
- 
-    ---------------
-    -- Interrupt --
-    ---------------
- 
-    overriding procedure Interrupt
-      (Descriptor : in out TTY_Process_Descriptor)
-    is
-       procedure Internal (Process : System.Address);
-       pragma Import (C, Internal, "__gnat_interrupt_process");
-    begin
-       if Descriptor.Process /= System.Null_Address then
-          Internal (Descriptor.Process);
-       end if;
-    end Interrupt;
- 
-    procedure Interrupt (Pid : Integer) is
-       procedure Internal (Pid : Integer);
-       pragma Import (C, Internal, "__gnat_interrupt_pid");
-    begin
-       Internal (Pid);
-    end Interrupt;
- 
-    -----------------------
-    -- Pseudo_Descriptor --
-    -----------------------
- 
-    procedure Pseudo_Descriptor
-      (Descriptor  : out TTY_Process_Descriptor'Class;
-       TTY         : GNAT.TTY.TTY_Handle;
-       Buffer_Size : Natural := 4096) is
-    begin
-       Descriptor.Input_Fd  := GNAT.TTY.TTY_Descriptor (TTY);
-       Descriptor.Output_Fd := Descriptor.Input_Fd;
- 
-       --  Create the buffer
- 
-       Descriptor.Buffer_Size := Buffer_Size;
- 
-       if Buffer_Size /= 0 then
-          Descriptor.Buffer := new String (1 .. Positive (Buffer_Size));
-       end if;
-    end Pseudo_Descriptor;
- 
-    ----------
-    -- Send --
-    ----------
- 
-    overriding procedure Send
-      (Descriptor   : in out TTY_Process_Descriptor;
-       Str          : String;
-       Add_LF       : Boolean := True;
-       Empty_Buffer : Boolean := False)
-    is
-       Header : String (1 .. 5);
-       Length : Natural;
-       Ret    : Natural;
- 
-       procedure Internal
-         (Process : System.Address;
-          S       : in out String;
-          Length  : Natural;
-          Ret     : out Natural);
-       pragma Import (C, Internal, "__gnat_send_header");
- 
-    begin
-       Length := Str'Length;
- 
-       if Add_LF then
-          Length := Length + 1;
-       end if;
- 
-       Internal (Descriptor.Process, Header, Length, Ret);
- 
-       if Ret = 1 then
- 
-          --  Need to use the header
- 
-          GNAT.Expect.Send
-            (Process_Descriptor (Descriptor),
-             Header & Str, Add_LF, Empty_Buffer);
- 
-       else
-          GNAT.Expect.Send
-            (Process_Descriptor (Descriptor),
-             Str, Add_LF, Empty_Buffer);
-       end if;
-    end Send;
- 
-    --------------
-    -- Set_Size --
-    --------------
- 
-    procedure Set_Size
-      (Descriptor : in out TTY_Process_Descriptor'Class;
-       Rows       : Natural;
-       Columns    : Natural)
-    is
-       procedure Internal (Process : System.Address; R, C : Integer);
-       pragma Import (C, Internal, "__gnat_setup_winsize");
-    begin
-       if Descriptor.Process /= System.Null_Address then
-          Internal (Descriptor.Process, Rows, Columns);
-       end if;
-    end Set_Size;
- 
-    ---------------------------
-    -- Set_Up_Communications --
-    ---------------------------
- 
-    overriding procedure Set_Up_Communications
-      (Pid        : in out TTY_Process_Descriptor;
-       Err_To_Out : Boolean;
-       Pipe1      : access Pipe_Type;
-       Pipe2      : access Pipe_Type;
-       Pipe3      : access Pipe_Type)
-    is
-       pragma Unreferenced (Err_To_Out, Pipe1, Pipe2, Pipe3);
- 
-       function Internal (Process : System.Address) return Integer;
-       pragma Import (C, Internal, "__gnat_setup_communication");
- 
-    begin
-       if Internal (Pid.Process'Address) /= 0 then
-          raise Invalid_Process with "cannot setup communication.";
-       end if;
-    end Set_Up_Communications;
- 
-    ---------------------------------
-    -- Set_Up_Child_Communications --
-    ---------------------------------
- 
-    overriding procedure Set_Up_Child_Communications
-      (Pid   : in out TTY_Process_Descriptor;
-       Pipe1 : in out Pipe_Type;
-       Pipe2 : in out Pipe_Type;
-       Pipe3 : in out Pipe_Type;
-       Cmd   : String;
-       Args  : System.Address)
-    is
-       pragma Unreferenced (Pipe1, Pipe2, Pipe3, Cmd);
-       function Internal
-         (Process : System.Address; Argv : System.Address; Use_Pipes : Integer)
-          return Process_Id;
-       pragma Import (C, Internal, "__gnat_setup_child_communication");
- 
-    begin
-       Pid.Pid := Internal (Pid.Process, Args, Boolean'Pos (Pid.Use_Pipes));
-    end Set_Up_Child_Communications;
- 
-    ----------------------------------
-    -- Set_Up_Parent_Communications --
-    ----------------------------------
- 
-    overriding procedure Set_Up_Parent_Communications
-      (Pid   : in out TTY_Process_Descriptor;
-       Pipe1 : in out Pipe_Type;
-       Pipe2 : in out Pipe_Type;
-       Pipe3 : in out Pipe_Type)
-    is
-       pragma Unreferenced (Pipe1, Pipe2, Pipe3);
- 
-       procedure Internal
-         (Process  : System.Address;
-          Inputfp  : out File_Descriptor;
-          Outputfp : out File_Descriptor;
-          Errorfp  : out File_Descriptor;
-          Pid      : out Process_Id);
-       pragma Import (C, Internal, "__gnat_setup_parent_communication");
- 
-    begin
-       Internal
-         (Pid.Process, Pid.Input_Fd, Pid.Output_Fd, Pid.Error_Fd, Pid.Pid);
-    end Set_Up_Parent_Communications;
- 
-    -------------------
-    -- Set_Use_Pipes --
-    -------------------
- 
-    procedure Set_Use_Pipes
-      (Descriptor : in out TTY_Process_Descriptor;
-       Use_Pipes  : Boolean) is
-    begin
-       Descriptor.Use_Pipes := Use_Pipes;
-    end Set_Use_Pipes;
- 
- end GNAT.Expect.TTY;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-exptty.ads gcc-8.1.0/gcc/ada/g-exptty.ads
*** gcc-7.3.0/gcc/ada/g-exptty.ads	Wed Nov 23 13:51:23 2011
--- gcc-8.1.0/gcc/ada/g-exptty.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,131 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                      G N A T . E X P E C T . T T Y                       --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                    Copyright (C) 2000-2011, AdaCore                      --
- --                                                                          --
- -- GNAT is 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 GNAT.TTY;
- 
- with System;
- with System.OS_Constants;
- 
- package GNAT.Expect.TTY is
- 
-    pragma Linker_Options (System.OS_Constants.PTY_Library);
- 
-    ------------------
-    --  TTY_Process --
-    ------------------
- 
-    type TTY_Process_Descriptor is new Process_Descriptor with private;
-    --  Similar to Process_Descriptor, with the parent set up as a full terminal
-    --  (Unix sense, see tty(4)).
- 
-    procedure Pseudo_Descriptor
-      (Descriptor  : out TTY_Process_Descriptor'Class;
-       TTY         : GNAT.TTY.TTY_Handle;
-       Buffer_Size : Natural := 4096);
-    --  Given a terminal descriptor (TTY), create a pseudo process descriptor
-    --  to be used with GNAT.Expect.
-    --
-    --  Note that it is invalid to call Close, Interrupt, Send_Signal on the
-    --  resulting descriptor. To deallocate memory associated with Process,
-    --  call Close_Pseudo_Descriptor instead.
- 
-    procedure Close_Pseudo_Descriptor
-      (Descriptor : in out TTY_Process_Descriptor);
-    --  Free memory and ressources associated with Descriptor. Will *not*
-    --  close the associated TTY, it is the caller's responsibility to call
-    --  GNAT.TTY.Close_TTY.
- 
-    procedure Interrupt (Pid : Integer);
-    --  Interrupt a process given its pid
- 
-    overriding procedure Send
-      (Descriptor   : in out TTY_Process_Descriptor;
-       Str          : String;
-       Add_LF       : Boolean := True;
-       Empty_Buffer : Boolean := False);
-    --  See parent
-    --  What does that comment mean??? what is "parent" here
- 
-    procedure Set_Use_Pipes
-      (Descriptor : in out TTY_Process_Descriptor;
-       Use_Pipes  : Boolean);
-    --  Tell Expect.TTY whether to use Pipes or Console (on windows). Needs to
-    --  be set before spawning the process. Default is to use Pipes.
- 
-    procedure Set_Size
-      (Descriptor : in out TTY_Process_Descriptor'Class;
-       Rows       : Natural;
-       Columns    : Natural);
-    --  Sets up the size of the terminal as reported to the spawned process
- 
- private
- 
-    --  All declarations in the private part must be fully commented ???
- 
-    overriding procedure Close
-      (Descriptor : in out TTY_Process_Descriptor;
-       Status     : out Integer);
- 
-    overriding procedure Close
-      (Descriptor : in out TTY_Process_Descriptor);
- 
-    overriding procedure Interrupt (Descriptor : in out TTY_Process_Descriptor);
-    --  When we use pseudo-terminals, we do not need to use signals to
-    --  interrupt the debugger, we can simply send the appropriate character.
-    --  This provides a better support for remote debugging for instance.
- 
-    procedure Set_Up_Communications
-      (Pid        : in out TTY_Process_Descriptor;
-       Err_To_Out : Boolean;
-       Pipe1      : access Pipe_Type;
-       Pipe2      : access Pipe_Type;
-       Pipe3      : access Pipe_Type);
- 
-    procedure Set_Up_Parent_Communications
-      (Pid   : in out TTY_Process_Descriptor;
-       Pipe1 : in out Pipe_Type;
-       Pipe2 : in out Pipe_Type;
-       Pipe3 : in out Pipe_Type);
- 
-    procedure Set_Up_Child_Communications
-      (Pid   : in out TTY_Process_Descriptor;
-       Pipe1 : in out Pipe_Type;
-       Pipe2 : in out Pipe_Type;
-       Pipe3 : in out Pipe_Type;
-       Cmd   : String;
-       Args  : System.Address);
- 
-    type TTY_Process_Descriptor is new Process_Descriptor with record
-       Process   : System.Address;  --  Underlying structure used in C
-       Use_Pipes : Boolean := True;
-    end record;
- 
- end GNAT.Expect.TTY;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-flocon.ads gcc-8.1.0/gcc/ada/g-flocon.ads
*** gcc-7.3.0/gcc/ada/g-flocon.ads	Thu Aug  4 08:55:50 2011
--- gcc-8.1.0/gcc/ada/g-flocon.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,38 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                    G N A T . F L O A T _ C O N T R O L                   --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 2000-2011, AdaCore                     --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Control functions for floating-point unit
- 
- --  See file s-flocon.ads for full documentation of the interface
- 
- with System.Float_Control;
- 
- package GNAT.Float_Control renames System.Float_Control;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-forstr.adb gcc-8.1.0/gcc/ada/g-forstr.adb
*** gcc-7.3.0/gcc/ada/g-forstr.adb	Fri Jan 13 10:19:19 2017
--- gcc-8.1.0/gcc/ada/g-forstr.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,984 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                G N A T . F O R M A T T E D _ S T R I N G                 --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2014-2016, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Characters.Handling;
- with Ada.Float_Text_IO;
- with Ada.Integer_Text_IO;
- with Ada.Long_Float_Text_IO;
- with Ada.Long_Integer_Text_IO;
- with Ada.Strings.Fixed;
- with Ada.Unchecked_Deallocation;
- 
- with System.Address_Image;
- 
- package body GNAT.Formatted_String is
- 
-    type F_Kind is (Decimal_Int,                 -- %d %i
-                    Unsigned_Decimal_Int,        -- %u
-                    Unsigned_Octal,              -- %o
-                    Unsigned_Hexadecimal_Int,    -- %x
-                    Unsigned_Hexadecimal_Int_Up, -- %X
-                    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
-                   );
- 
-    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;
- 
-    type F_Base is (None, C_Style, Ada_Style) with Default_Value => None;
- 
-    Unset : constant Integer := -1;
- 
-    type F_Data is record
-       Kind         : F_Kind;
-       Width        : Natural := 0;
-       Precision    : Integer := Unset;
-       Left_Justify : Boolean := False;
-       Sign         : F_Sign;
-       Base         : F_Base;
-       Zero_Pad     : Boolean := False;
-       Value_Needed : Natural range 0 .. 2 := 0;
-    end record;
- 
-    procedure Next_Format
-      (Format : Formatted_String;
-       F_Spec : out F_Data;
-       Start  : out Positive);
-    --  Parse the next format specifier, a format specifier has the following
-    --  syntax: %[flags][width][.precision][length]specifier
- 
-    function Get_Formatted
-      (F_Spec : F_Data;
-       Value  : String;
-       Len    : Positive) return String;
-    --  Returns Value formatted given the information in F_Spec
- 
-    procedure Raise_Wrong_Format (Format : Formatted_String) with No_Return;
-    --  Raise the Format_Error exception which information about the context
- 
-    generic
-       type Flt is private;
- 
-       with procedure Put
-         (To   : out String;
-          Item : Flt;
-          Aft  : Text_IO.Field;
-          Exp  : Text_IO.Field);
-    function P_Flt_Format
-      (Format : Formatted_String;
-       Var    : Flt) return Formatted_String;
-    --  Generic routine which handles all floating point numbers
- 
-    generic
-       type Int is private;
- 
-       with function To_Integer (Item : Int) return Integer;
- 
-       with function Sign (Item : Int) return Sign_Kind;
- 
-       with procedure Put
-         (To   : out String;
-          Item : Int;
-          Base : Text_IO.Number_Base);
-    function P_Int_Format
-      (Format : Formatted_String;
-       Var    : Int) return Formatted_String;
-    --  Generic routine which handles all the integer numbers
- 
-    ---------
-    -- "+" --
-    ---------
- 
-    function "+" (Format : String) return Formatted_String is
-    begin
-       return Formatted_String'
-         (Finalization.Controlled with
-            D => new Data'(Format'Length, 1, Format, 1,
-              Null_Unbounded_String, 0, 0, (0, 0)));
-    end "+";
- 
-    ---------
-    -- "-" --
-    ---------
- 
-    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 "-";
- 
-    ---------
-    -- "&" --
-    ---------
- 
-    function "&"
-      (Format : Formatted_String;
-       Var    : Character) return Formatted_String
-    is
-       F     : F_Data;
-       Start : Positive;
- 
-    begin
-       Next_Format (Format, F, Start);
- 
-       if F.Value_Needed > 0 then
-          Raise_Wrong_Format (Format);
-       end if;
- 
-       case F.Kind is
-          when Char =>
-             Append (Format.D.Result, Get_Formatted (F, String'(1 => Var), 1));
-          when others =>
-             Raise_Wrong_Format (Format);
-       end case;
- 
-       return Format;
-    end "&";
- 
-    function "&"
-      (Format : Formatted_String;
-       Var    : String) return Formatted_String
-    is
-       F     : F_Data;
-       Start : Positive;
- 
-    begin
-       Next_Format (Format, F, Start);
- 
-       if F.Value_Needed > 0 then
-          Raise_Wrong_Format (Format);
-       end if;
- 
-       case F.Kind is
-          when Str =>
-             declare
-                S : constant String := Get_Formatted (F, Var, Var'Length);
-             begin
-                if F.Precision = Unset then
-                   Append (Format.D.Result, S);
-                else
-                   Append
-                     (Format.D.Result,
-                      S (S'First .. S'First + F.Precision - 1));
-                end if;
-             end;
- 
-          when others =>
-             Raise_Wrong_Format (Format);
-       end case;
- 
-       return Format;
-    end "&";
- 
-    function "&"
-      (Format : Formatted_String;
-       Var    : Boolean) return Formatted_String is
-    begin
-       return Format & Boolean'Image (Var);
-    end "&";
- 
-    function "&"
-      (Format : Formatted_String;
-       Var    : Float) return Formatted_String
-    is
-       function Float_Format is new Flt_Format (Float, Float_Text_IO.Put);
-    begin
-       return Float_Format (Format, Var);
-    end "&";
- 
-    function "&"
-      (Format : Formatted_String;
-       Var    : Long_Float) return Formatted_String
-    is
-       function Float_Format is
-         new Flt_Format (Long_Float, Long_Float_Text_IO.Put);
-    begin
-       return Float_Format (Format, Var);
-    end "&";
- 
-    function "&"
-      (Format : Formatted_String;
-       Var    : Duration) return Formatted_String
-    is
-       package Duration_Text_IO is new Text_IO.Fixed_IO (Duration);
-       function Duration_Format is
-         new P_Flt_Format (Duration, Duration_Text_IO.Put);
-    begin
-       return Duration_Format (Format, Var);
-    end "&";
- 
-    function "&"
-      (Format : Formatted_String;
-       Var    : Integer) return Formatted_String
-    is
-       function Integer_Format is
-         new Int_Format (Integer, Integer_Text_IO.Put);
-    begin
-       return Integer_Format (Format, Var);
-    end "&";
- 
-    function "&"
-      (Format : Formatted_String;
-       Var    : Long_Integer) return Formatted_String
-    is
-       function Integer_Format is
-         new Int_Format (Long_Integer, Long_Integer_Text_IO.Put);
-    begin
-       return Integer_Format (Format, Var);
-    end "&";
- 
-    function "&"
-      (Format : Formatted_String;
-       Var    : System.Address) return Formatted_String
-    is
-       A_Img : constant String := System.Address_Image (Var);
-       F     : F_Data;
-       Start : Positive;
- 
-    begin
-       Next_Format (Format, F, Start);
- 
-       if F.Value_Needed > 0 then
-          Raise_Wrong_Format (Format);
-       end if;
- 
-       case F.Kind is
-          when Pointer =>
-             Append (Format.D.Result, Get_Formatted (F, A_Img, A_Img'Length));
-          when others =>
-             Raise_Wrong_Format (Format);
-       end case;
- 
-       return Format;
-    end "&";
- 
-    ------------
-    -- Adjust --
-    ------------
- 
-    overriding procedure Adjust (F : in out Formatted_String) is
-    begin
-       F.D.Ref_Count := F.D.Ref_Count + 1;
-    end Adjust;
- 
-    --------------------
-    -- Decimal_Format --
-    --------------------
- 
-    function Decimal_Format
-      (Format : Formatted_String;
-       Var    : Flt) return Formatted_String
-    is
-       function Flt_Format is new P_Flt_Format (Flt, Put);
-    begin
-       return Flt_Format (Format, Var);
-    end Decimal_Format;
- 
-    -----------------
-    -- Enum_Format --
-    -----------------
- 
-    function Enum_Format
-      (Format : Formatted_String;
-       Var    : Enum) return Formatted_String is
-    begin
-       return Format & Enum'Image (Var);
-    end Enum_Format;
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    overriding procedure Finalize (F : in out Formatted_String) is
-       procedure Unchecked_Free is
-         new Unchecked_Deallocation (Data, Data_Access);
- 
-       D : Data_Access := F.D;
- 
-    begin
-       F.D := null;
- 
-       D.Ref_Count := D.Ref_Count - 1;
- 
-       if D.Ref_Count = 0 then
-          Unchecked_Free (D);
-       end if;
-    end Finalize;
- 
-    ------------------
-    -- Fixed_Format --
-    ------------------
- 
-    function Fixed_Format
-      (Format : Formatted_String;
-       Var    : Flt) return Formatted_String
-    is
-       function Flt_Format is new P_Flt_Format (Flt, Put);
-    begin
-       return Flt_Format (Format, Var);
-    end Fixed_Format;
- 
-    ----------------
-    -- Flt_Format --
-    ----------------
- 
-    function Flt_Format
-      (Format : Formatted_String;
-       Var    : Flt) return Formatted_String
-    is
-       function Flt_Format is new P_Flt_Format (Flt, Put);
-    begin
-       return Flt_Format (Format, Var);
-    end Flt_Format;
- 
-    -------------------
-    -- Get_Formatted --
-    -------------------
- 
-    function Get_Formatted
-      (F_Spec : F_Data;
-       Value  : String;
-       Len    : Positive) return String
-    is
-       use Ada.Strings.Fixed;
- 
-       Res : Unbounded_String;
-       S   : Positive := Value'First;
- 
-    begin
-       --  Handle the flags
- 
-       if F_Spec.Kind in Is_Number then
-          if F_Spec.Sign = Forced and then Value (Value'First) /= '-' then
-             Append (Res, "+");
-          elsif F_Spec.Sign = Space and then Value (Value'First) /= '-' then
-             Append (Res, " ");
-          end if;
- 
-          if Value (Value'First) = '-' then
-             Append (Res, "-");
-             S := S + 1;
-          end if;
-       end if;
- 
-       --  Zero padding if required and possible
- 
-       if F_Spec.Left_Justify = False
-         and then F_Spec.Zero_Pad
-         and then F_Spec.Width > Len + Value'First - S
-       then
-          Append (Res, String'((F_Spec.Width - Len + Value'First - S) * '0'));
-       end if;
- 
-       --  Add the value now
- 
-       Append (Res, Value (S .. Value'Last));
- 
-       declare
-          R : String (1 .. Natural'Max (Natural'Max (F_Spec.Width, Len),
-                                        Length (Res))) := (others => ' ');
-       begin
-          if F_Spec.Left_Justify then
-             R (1 .. Length (Res)) := To_String (Res);
-          else
-             R (R'Last - Length (Res) + 1 .. R'Last) := To_String (Res);
-          end if;
- 
-          return R;
-       end;
-    end Get_Formatted;
- 
-    ----------------
-    -- Int_Format --
-    ----------------
- 
-    function Int_Format
-      (Format : Formatted_String;
-       Var    : Int) return Formatted_String
-    is
-       function Sign (Var : Int) return Sign_Kind is
-         (if Var < 0 then Neg elsif Var = 0 then Zero else Pos);
- 
-       function To_Integer (Var : Int) return Integer is
-         (Integer (Var));
- 
-       function Int_Format is new P_Int_Format (Int, To_Integer, Sign, Put);
- 
-    begin
-       return Int_Format (Format, Var);
-    end Int_Format;
- 
-    ----------------
-    -- Mod_Format --
-    ----------------
- 
-    function Mod_Format
-      (Format : Formatted_String;
-       Var    : Int) return Formatted_String
-    is
-       function Sign (Var : Int) return Sign_Kind is
-         (if Var < 0 then Neg elsif Var = 0 then Zero else Pos);
- 
-       function To_Integer (Var : Int) return Integer is
-         (Integer (Var));
- 
-       function Int_Format is new P_Int_Format (Int, To_Integer, Sign, Put);
- 
-    begin
-       return Int_Format (Format, Var);
-    end Mod_Format;
- 
-    -----------------
-    -- Next_Format --
-    -----------------
- 
-    procedure Next_Format
-      (Format : Formatted_String;
-       F_Spec : out F_Data;
-       Start  : out Positive)
-    is
-       F              : String  renames Format.D.Format;
-       J              : Natural renames Format.D.Index;
-       S              : Natural;
-       Width_From_Var : Boolean := False;
- 
-    begin
-       Format.D.Current := Format.D.Current + 1;
-       F_Spec.Value_Needed := 0;
- 
-       --  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 F (J) /= '%' or else J = F'Last then
-          raise Format_Error with "no format specifier found for parameter"
-            & Positive'Image (Format.D.Current);
-       end if;
- 
-       Start := J;
- 
-       J := J + 1;
- 
-       --  Check for any flags
- 
-       Flags_Check : while J < F'Last loop
-          if F (J) = '-' then
-             F_Spec.Left_Justify := True;
-          elsif F (J) = '+' then
-             F_Spec.Sign         := Forced;
-          elsif F (J) = ' ' then
-             F_Spec.Sign         := Space;
-          elsif F (J) = '#' then
-             F_Spec.Base         := C_Style;
-          elsif F (J) = '~' then
-             F_Spec.Base         := Ada_Style;
-          elsif F (J) = '0' then
-             F_Spec.Zero_Pad     := True;
-          else
-             exit Flags_Check;
-          end if;
- 
-          J := J + 1;
-       end loop Flags_Check;
- 
-       --  Check width if any
- 
-       if F (J) in '0' .. '9' then
- 
-          --  We have a width parameter
- 
-          S := J;
- 
-          while J < F'Last and then F (J + 1) in '0' .. '9' loop
-             J := J + 1;
-          end loop;
- 
-          F_Spec.Width := Natural'Value (F (S .. J));
- 
-          J := J + 1;
- 
-       elsif F (J) = '*' then
- 
-          --  The width will be taken from the integer parameter
- 
-          F_Spec.Value_Needed := 1;
-          Width_From_Var := True;
- 
-          J := J + 1;
-       end if;
- 
-       if F (J) = '.' then
- 
-          --  We have a precision parameter
- 
-          J := J + 1;
- 
-          if F (J) in '0' .. '9' then
-             S := J;
- 
-             while J < F'Length and then F (J + 1) in '0' .. '9' loop
-                J := J + 1;
-             end loop;
- 
-             if F (J) = '.' then
- 
-                --  No precision, 0 is assumed
- 
-                F_Spec.Precision := 0;
- 
-             else
-                F_Spec.Precision := Natural'Value (F (S .. J));
-             end if;
- 
-             J := J + 1;
- 
-          elsif F (J) = '*' then
- 
-             --  The prevision will be taken from the integer parameter
- 
-             F_Spec.Value_Needed := F_Spec.Value_Needed + 1;
-             J := J + 1;
-          end if;
-       end if;
- 
-       --  Skip the length specifier, this is not needed for this implementation
-       --  but yet for compatibility reason it is handled.
- 
-       Length_Check :
-       while J <= F'Last
-         and then F (J) in 'h' | 'l' | 'j' | 'z' | 't' | 'L'
-       loop
-          J := J + 1;
-       end loop Length_Check;
- 
-       if J > F'Last then
-          Raise_Wrong_Format (Format);
-       end if;
- 
-       --  Read next character which should be the expected type
- 
-       case F (J) is
-          when 'c'       => F_Spec.Kind := Char;
-          when 's'       => F_Spec.Kind := Str;
-          when 'd' | 'i' => F_Spec.Kind := Decimal_Int;
-          when 'u'       => F_Spec.Kind := Unsigned_Decimal_Int;
-          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;
- 
-          when others =>
-             raise Format_Error with "unknown format specified for parameter"
-               & Positive'Image (Format.D.Current);
-       end case;
- 
-       J := J + 1;
- 
-       if F_Spec.Value_Needed > 0
-         and then F_Spec.Value_Needed = Format.D.Stored_Value
-       then
-          if F_Spec.Value_Needed = 1 then
-             if Width_From_Var then
-                F_Spec.Width := Format.D.Stack (1);
-             else
-                F_Spec.Precision := Format.D.Stack (1);
-             end if;
- 
-          else
-             F_Spec.Width := Format.D.Stack (1);
-             F_Spec.Precision := Format.D.Stack (2);
-          end if;
-       end if;
-    end Next_Format;
- 
-    ------------------
-    -- P_Flt_Format --
-    ------------------
- 
-    function P_Flt_Format
-      (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;
-       else
-          Aft := F.Precision;
-       end if;
- 
-       case F.Kind is
-          when Decimal_Float =>
- 
-             Put (Buffer, Var, Aft, Exp => 0);
-             S := Strings.Fixed.Index_Non_Blank (Buffer);
-             E := Buffer'Last;
- 
-          when Decimal_Scientific_Float
-             | Decimal_Scientific_Float_Up
-          =>
-             Put (Buffer, Var, Aft, Exp => 3);
-             S := Strings.Fixed.Index_Non_Blank (Buffer);
-             E := Buffer'Last;
- 
-             if F.Kind = Decimal_Scientific_Float then
-                Buffer (S .. E) :=
-                  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;
- 
-          when others =>
-             Raise_Wrong_Format (Format);
-       end case;
- 
-       Append (Format.D.Result,
-         Get_Formatted (F, Buffer (S .. E), Buffer (S .. E)'Length));
- 
-       return Format;
-    end P_Flt_Format;
- 
-    ------------------
-    -- P_Int_Format --
-    ------------------
- 
-    function P_Int_Format
-      (Format : Formatted_String;
-       Var    : Int) return Formatted_String
-    is
-       function Handle_Precision return Boolean;
-       --  Return True if nothing else to do
- 
-       F      : F_Data;
-       Buffer : String (1 .. 50);
-       S, E   : Positive := 1;
-       Len    : Natural := 0;
-       Start  : Positive;
- 
-       ----------------------
-       -- Handle_Precision --
-       ----------------------
- 
-       function Handle_Precision return Boolean is
-       begin
-          if F.Precision = 0 and then Sign (Var) = Zero then
-             return True;
- 
-          elsif F.Precision = Natural'Last then
-             null;
- 
-          elsif F.Precision > E - S + 1 then
-             Len := F.Precision - (E - S + 1);
-             Buffer (S - Len .. S - 1) := (others => '0');
-             S := S - Len;
-          end if;
- 
-          return False;
-       end Handle_Precision;
- 
-    --  Start of processing for P_Int_Format
- 
-    begin
-       Next_Format (Format, F, Start);
- 
-       if Format.D.Stored_Value < F.Value_Needed then
-          Format.D.Stored_Value := Format.D.Stored_Value + 1;
-          Format.D.Stack (Format.D.Stored_Value) := To_Integer (Var);
-          Format.D.Index := Start;
-          return Format;
-       end if;
- 
-       case F.Kind is
-          when Unsigned_Octal =>
-             if Sign (Var) = Neg then
-                Raise_Wrong_Format (Format);
-             end if;
- 
-             Put (Buffer, Var, Base => 8);
-             S := Strings.Fixed.Index (Buffer, "8#") + 2;
-             E := Strings.Fixed.Index (Buffer (S .. Buffer'Last), "#") - 1;
- 
-             if Handle_Precision then
-                return Format;
-             end if;
- 
-             case F.Base is
-                when None      => null;
-                when C_Style   => Len := 1;
-                when Ada_Style => Len := 3;
-             end case;
- 
-          when Unsigned_Hexadecimal_Int =>
-             if Sign (Var) = Neg then
-                Raise_Wrong_Format (Format);
-             end if;
- 
-             Put (Buffer, Var, Base => 16);
-             S := Strings.Fixed.Index (Buffer, "16#") + 3;
-             E := Strings.Fixed.Index (Buffer (S .. Buffer'Last), "#") - 1;
-             Buffer (S .. E) := Characters.Handling.To_Lower (Buffer (S .. E));
- 
-             if Handle_Precision then
-                return Format;
-             end if;
- 
-             case F.Base is
-                when None      => null;
-                when C_Style   => Len := 2;
-                when Ada_Style => Len := 4;
-             end case;
- 
-          when Unsigned_Hexadecimal_Int_Up =>
-             if Sign (Var) = Neg then
-                Raise_Wrong_Format (Format);
-             end if;
- 
-             Put (Buffer, Var, Base => 16);
-             S := Strings.Fixed.Index (Buffer, "16#") + 3;
-             E := Strings.Fixed.Index (Buffer (S .. Buffer'Last), "#") - 1;
- 
-             if Handle_Precision then
-                return Format;
-             end if;
- 
-             case F.Base is
-                when None      => null;
-                when C_Style   => Len := 2;
-                when Ada_Style => Len := 4;
-             end case;
- 
-          when Unsigned_Decimal_Int =>
-             if Sign (Var) = Neg then
-                Raise_Wrong_Format (Format);
-             end if;
- 
-             Put (Buffer, Var, Base => 10);
-             S := Strings.Fixed.Index_Non_Blank (Buffer);
-             E := Buffer'Last;
- 
-             if Handle_Precision then
-                return Format;
-             end if;
- 
-          when Decimal_Int =>
-             Put (Buffer, Var, Base => 10);
-             S := Strings.Fixed.Index_Non_Blank (Buffer);
-             E := Buffer'Last;
- 
-             if Handle_Precision then
-                return Format;
-             end if;
- 
-          when Char =>
-             S := Buffer'First;
-             E := Buffer'First;
-             Buffer (S) := Character'Val (To_Integer (Var));
- 
-             if Handle_Precision then
-                return Format;
-             end if;
- 
-          when others =>
-             Raise_Wrong_Format (Format);
-       end case;
- 
-       --  Then add base if needed
- 
-       declare
-          N : String := Get_Formatted (F, Buffer (S .. E), E - S + 1 + Len);
-          P : constant Positive :=
-                (if F.Left_Justify
-                 then N'First
-                 else Natural'Max (Strings.Fixed.Index_Non_Blank (N) - 1,
-                                   N'First));
-       begin
-          case F.Base is
-             when None =>
-                null;
- 
-             when C_Style =>
-                case F.Kind is
-                   when Unsigned_Octal =>
-                      N (P) := 'O';
- 
-                   when Unsigned_Hexadecimal_Int =>
-                      if F.Left_Justify then
-                         N (P .. P + 1) := "Ox";
-                      else
-                         N (P - 1 .. P) := "0x";
-                      end if;
- 
-                   when Unsigned_Hexadecimal_Int_Up =>
-                      if F.Left_Justify then
-                         N (P .. P + 1) := "OX";
-                      else
-                         N (P - 1 .. P) := "0X";
-                      end if;
- 
-                   when others =>
-                      null;
-                end case;
- 
-             when Ada_Style =>
-                case F.Kind is
-                   when Unsigned_Octal =>
-                      if F.Left_Justify then
-                         N (N'First + 2 .. N'Last) := N (N'First .. N'Last - 2);
-                      else
-                         N (P .. N'Last - 1) := N (P + 1 .. N'Last);
-                      end if;
- 
-                      N (N'First .. N'First + 1) := "8#";
-                      N (N'Last) := '#';
- 
-                   when Unsigned_Hexadecimal_Int
-                      | Unsigned_Hexadecimal_Int_Up
-                   =>
-                      if F.Left_Justify then
-                         N (N'First + 3 .. N'Last) := N (N'First .. N'Last - 3);
-                      else
-                         N (P .. N'Last - 1) := N (P + 1 .. N'Last);
-                      end if;
- 
-                      N (N'First .. N'First + 2) := "16#";
-                      N (N'Last) := '#';
- 
-                   when others =>
-                      null;
-                end case;
-          end case;
- 
-          Append (Format.D.Result, N);
-       end;
- 
-       return Format;
-    end P_Int_Format;
- 
-    ------------------------
-    -- Raise_Wrong_Format --
-    ------------------------
- 
-    procedure Raise_Wrong_Format (Format : Formatted_String) is
-    begin
-       raise Format_Error with
-         "wrong format specified for parameter"
-         & Positive'Image (Format.D.Current);
-    end Raise_Wrong_Format;
- 
- end GNAT.Formatted_String;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-forstr.ads gcc-8.1.0/gcc/ada/g-forstr.ads
*** gcc-7.3.0/gcc/ada/g-forstr.ads	Mon Jul  4 10:41:23 2016
--- gcc-8.1.0/gcc/ada/g-forstr.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,311 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                G N A T . F O R M A T T E D _ S T R I N G                 --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --           Copyright (C) 2014-2016, Free Software Foundation, Inc.        --
- --                                                                          --
- -- GNAT is 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 add support for formatted string as supported by C printf()
- 
- --  A simple usage is:
- --
- --     Put_Line (-(+"%s" & "a string"));
- --
- --  or with a constant for the format:
- --
- --     declare
- --       Format : constant Formatted_String := +"%s";
- --     begin
- --       Put_Line (-(Format & "a string"));
- --     end;
- --
- --  Finally a more complex example:
- --
- --     declare
- --        F : Formatted_String := +"['%c' ; %10d]";
- --        C : Character := 'v';
- --        I : Integer := 98;
- --     begin
- --        F := F & C & I;
- --        Put_Line (-F);
- --     end;
- 
- --  Which will display:
- 
- --     ['v' ;         98]
- 
- --  Each format specifier is: %[flags][width][.precision][length]specifier
- 
- --  Specifiers:
- --    d or i    Signed decimal integer
- --    u         Unsigned decimal integer
- --    o         Unsigned octal
- --    x         Unsigned hexadecimal integer
- --    X         Unsigned hexadecimal integer (uppercase)
- --    f         Decimal floating point, lowercase
- --    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
- --    %         A % followed by another % character will write a single %
- 
- --  Flags:
- 
- --    -         Left-justify within the given field width;
- --              Right justification is the default.
- 
- --    +         Forces to preceed the result with a plus or minus sign (+ or -)
- --              even for positive numbers. By default, only negative numbers
- --              are preceded with a - sign.
- 
- --    (space)   If no sign is going to be written, a blank space is inserted
- --              before the value.
- 
- --    #         Used with o, x or X specifiers the value is preceeded with
- --              0, 0x or 0X respectively for values different than zero.
- --              Used with a, A, e, E, f, F, g or G it forces the written
- --              output to contain a decimal point even if no more digits
- --              follow. By default, if no digits follow, no decimal point is
- --              written.
- 
- --    ~         As above, but using Ada style based <base>#<number>#
- 
- --    0         Left-pads the number with zeroes (0) instead of spaces when
- --              padding is specified.
- 
- --  Width:
- --    number    Minimum number of characters to be printed. If the value to
- --              be printed is shorter than this number, the result is padded
- --              with blank spaces. The value is not truncated even if the
- --              result is larger.
- 
- --    *         The width is not specified in the format string, but as an
- --              additional integer value argument preceding the argument that
- --              has to be formatted.
- --  Precision:
- --    number    For integer specifiers (d, i, o, u, x, X): precision specifies
- --              the minimum number of digits to be written. If the value to be
- --              written is shorter than this number, the result is padded with
- --              leading zeros. The value is not truncated even if the result
- --              is longer. A precision of 0 means that no character is written
- --              for the value 0.
- 
- --              For e, E, f and F specifiers: this is the number of digits to
- --              be printed after the decimal point (by default, this is 6).
- --              For g and G specifiers: This is the maximum number of
- --              significant digits to be printed.
- 
- --              For s: this is the maximum number of characters to be printed.
- --              By default all characters are printed until the ending null
- --              character is encountered.
- 
- --              If the period is specified without an explicit value for
- --              precision, 0 is assumed.
- 
- --    .*        The precision is not specified in the format string, but as an
- --              additional integer value argument preceding the argument that
- --              has to be formatted.
- 
- with Ada.Text_IO;
- with System;
- 
- private with Ada.Finalization;
- private with Ada.Strings.Unbounded;
- 
- package GNAT.Formatted_String is
-    use Ada;
- 
-    type Formatted_String (<>) is private;
-    --  A format string as defined for printf routine. This string is the
-    --  actual format for all the parameters added with the "&" routines below.
-    --  Note that a Formatted_String object can't be reused as it serves as
-    --  recipient for the final result. That is, each use of "&" will build
-    --  incrementally the final result string which can be retrieved with
-    --  the "-" routine below.
- 
-    Format_Error : exception;
-    --  Raised for every mismatch between the parameter and the expected format
-    --  and for malformed format.
- 
-    function "+" (Format : String) return Formatted_String;
-    --  Create the format string
- 
-    function "-" (Format : Formatted_String) return String;
-    --  Get the result of the formatted string corresponding to the current
-    --  rendering (up to the last parameter formated).
- 
-    function "&"
-      (Format : Formatted_String;
-       Var    : Character) return Formatted_String;
-    --  A character, expect a %c
- 
-    function "&"
-      (Format : Formatted_String;
-       Var    : String) return Formatted_String;
-    --  A string, expect a %s
- 
-    function "&"
-      (Format : Formatted_String;
-       Var    : Boolean) return Formatted_String;
-    --  A boolean image, expect a %s
- 
-    function "&"
-      (Format : Formatted_String;
-       Var    : Integer) return Formatted_String;
-    --  An integer, expect a %d, %o, %x, %X
- 
-    function "&"
-      (Format : Formatted_String;
-       Var    : Long_Integer) return Formatted_String;
-    --  As above
- 
-    function "&"
-      (Format : Formatted_String;
-       Var    : System.Address) return Formatted_String;
-    --  An address, expect a %p
- 
-    function "&"
-      (Format : Formatted_String;
-       Var    : Float) return Formatted_String;
-    --  A float, expect %f, %e, %F, %E, %g, %G
- 
-    function "&"
-      (Format : Formatted_String;
-       Var    : Long_Float) return Formatted_String;
-    --  As above
- 
-    function "&"
-      (Format : Formatted_String;
-       Var    : Duration) return Formatted_String;
-    --  As above
- 
-    --  Some generics
- 
-    generic
-       type Int is range <>;
- 
-       with procedure Put
-         (To   : out String;
-          Item : Int;
-          Base : Text_IO.Number_Base);
-    function Int_Format
-      (Format : Formatted_String;
-       Var    : Int) return Formatted_String;
-    --  As for Integer above
- 
-    generic
-       type Int is mod <>;
- 
-       with procedure Put
-         (To   : out String;
-          Item : Int;
-          Base : Text_IO.Number_Base);
-    function Mod_Format
-      (Format : Formatted_String;
-       Var    : Int) return Formatted_String;
-    --  As for Integer above
- 
-    generic
-       type Flt is digits <>;
- 
-       with procedure Put
-         (To   : out String;
-          Item : Flt;
-          Aft  : Text_IO.Field;
-          Exp  : Text_IO.Field);
-    function Flt_Format
-      (Format : Formatted_String;
-       Var    : Flt) return Formatted_String;
-    --  As for Float above
- 
-    generic
-       type Flt is delta <>;
- 
-       with procedure Put
-         (To   : out String;
-          Item : Flt;
-          Aft  : Text_IO.Field;
-          Exp  : Text_IO.Field);
-    function Fixed_Format
-      (Format : Formatted_String;
-       Var    : Flt) return Formatted_String;
-    --  As for Float above
- 
-    generic
-       type Flt is delta <> digits <>;
- 
-       with procedure Put
-         (To   : out String;
-          Item : Flt;
-          Aft  : Text_IO.Field;
-          Exp  : Text_IO.Field);
-    function Decimal_Format
-      (Format : Formatted_String;
-       Var    : Flt) return Formatted_String;
-    --  As for Float above
- 
-    generic
-       type Enum is (<>);
-    function Enum_Format
-      (Format : Formatted_String;
-       Var    : Enum) return Formatted_String;
-    --  As for String above, output the string representation of the enumeration
- 
- private
-    use Ada.Strings.Unbounded;
- 
-    type I_Vars is array (Positive range 1 .. 2) of Integer;
-    --  Used to keep 2 numbers for the possible * for the width and precision
- 
-    type Data (Size : Natural) is record
-       Ref_Count    : Natural := 1;
-       Format       : String (1 .. Size); -- the format string
-       Index        : Positive := 1;      -- format index for next value
-       Result       : Unbounded_String;   -- current value
-       Current      : Natural;            -- the current format number
-       Stored_Value : Natural := 0;       -- number of stored values in Stack
-       Stack        : I_Vars;
-    end record;
- 
-    type Data_Access is access Data;
- 
-    --  The formatted string record is controlled and do not need an initialize
-    --  as it requires an explit initial value. This is given with "+" and
-    --  properly initialize the record at this point.
- 
-    type Formatted_String is new Finalization.Controlled with record
-       D : Data_Access;
-    end record;
- 
-    overriding procedure Adjust   (F : in out Formatted_String);
-    overriding procedure Finalize (F : in out Formatted_String);
- 
- end GNAT.Formatted_String;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-heasor.adb gcc-8.1.0/gcc/ada/g-heasor.adb
*** gcc-7.3.0/gcc/ada/g-heasor.adb	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-heasor.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,130 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                       G N A T . H E A P _ S O R T                        --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 1995-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 GNAT.Heap_Sort is
- 
-    ----------
-    -- Sort --
-    ----------
- 
-    --  We are using the classical heapsort algorithm (i.e. Floyd's Treesort3)
-    --  as described by Knuth ("The Art of Programming", Volume III, first
-    --  edition, section 5.2.3, p. 145-147) with the modification that is
-    --  mentioned in exercise 18. For more details on this algorithm, see
-    --  Robert B. K. Dewar PhD thesis "The use of Computers in the X-ray
-    --  Phase Problem". University of Chicago, 1968, which was the first
-    --  publication of the modification, which reduces the number of compares
-    --  from 2NlogN to NlogN.
- 
-    procedure Sort (N : Natural; Xchg : Xchg_Procedure; Lt : Lt_Function) is
-       Max : Natural := N;
-       --  Current Max index in tree being sifted. Note that we make Max
-       --  Natural rather than Positive so that the case of sorting zero
-       --  elements is correctly handled (i.e. does nothing at all).
- 
-       procedure Sift (S : Positive);
-       --  This procedure sifts up node S, i.e. converts the subtree rooted
-       --  at node S into a heap, given the precondition that any sons of
-       --  S are already heaps.
- 
-       ----------
-       -- Sift --
-       ----------
- 
-       procedure Sift (S : Positive) is
-          C      : Positive := S;
-          Son    : Positive;
-          Father : Positive;
- 
-       begin
-          --  This is where the optimization is done, normally we would do a
-          --  comparison at each stage between the current node and the larger
-          --  of the two sons, and continue the sift only if the current node
-          --  was less than this maximum. In this modified optimized version,
-          --  we assume that the current node will be less than the larger
-          --  son, and unconditionally sift up. Then when we get to the bottom
-          --  of the tree, we check parents to make sure that we did not make
-          --  a mistake. This roughly cuts the number of comparisons in half,
-          --  since it is almost always the case that our assumption is correct.
- 
-          --  Loop to pull up larger sons
- 
-          loop
-             Son := C + C;
- 
-             if Son < Max then
-                if Lt (Son, Son + 1) then
-                   Son := Son + 1;
-                end if;
-             elsif Son > Max then
-                exit;
-             end if;
- 
-             Xchg (Son, C);
-             C := Son;
-          end loop;
- 
-          --  Loop to check fathers
- 
-          while C /= S loop
-             Father := C / 2;
- 
-             if Lt (Father, C) then
-                Xchg (Father, C);
-                C := Father;
-             else
-                exit;
-             end if;
-          end loop;
-       end Sift;
- 
-    --  Start of processing for Sort
- 
-    begin
-       --  Phase one of heapsort is to build the heap. This is done by
-       --  sifting nodes N/2 .. 1 in sequence.
- 
-       for J in reverse 1 .. N / 2 loop
-          Sift (J);
-       end loop;
- 
-       --  In phase 2, the largest node is moved to end, reducing the size
-       --  of the tree by one, and the displaced node is sifted down from
-       --  the top, so that the largest node is again at the top.
- 
-       while Max > 1 loop
-          Xchg (1, Max);
-          Max := Max - 1;
-          Sift (1);
-       end loop;
-    end Sort;
- 
- end GNAT.Heap_Sort;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-heasor.ads gcc-8.1.0/gcc/ada/g-heasor.ads
*** gcc-7.3.0/gcc/ada/g-heasor.ads	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-heasor.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,72 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                       G N A T . H E A P _ S O R T                        --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 1995-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Sort utility (Using Heapsort Algorithm)
- 
- --  This package provides a heapsort routine that works with access to
- --  subprogram parameters, so that it can be used with different types with
- --  shared sorting code.
- 
- --  This heapsort algorithm uses approximately N*log(N) compares in the
- --  worst case and is in place with no additional storage required. See
- --  the body for exact details of the algorithm used.
- 
- --  See also GNAT.Heap_Sort_G which is a generic version that will be faster
- --  since the overhead of the indirect calls is avoided, at the expense of
- --  generic code duplication and less convenient interface.
- 
- --  Note: GNAT.Heap_Sort replaces and obsoletes GNAT.Heap_Sort_A, which is
- --  retained in the GNAT library for backwards compatibility.
- 
- package GNAT.Heap_Sort is
-    pragma Pure;
- 
-    --  The data to be sorted is assumed to be indexed by integer values
-    --  from 1 to N, where N is the number of items to be sorted.
- 
-    type Xchg_Procedure is access procedure (Op1, Op2 : Natural);
-    --  A pointer to a procedure that exchanges the two data items whose
-    --  index values are Op1 and Op2.
- 
-    type Lt_Function is access function (Op1, Op2 : Natural) return Boolean;
-    --  A pointer to a function that compares two items and returns True if
-    --  the item with index value Op1 is less than the item with Index value
-    --  Op2, and False if the Op1 item is greater than the Op2 item. If
-    --  the items are equal, then it does not matter if True or False is
-    --  returned (but it is slightly more efficient to return False).
- 
-    procedure Sort (N : Natural; Xchg : Xchg_Procedure; Lt : Lt_Function);
-    --  This procedures sorts items in the range from 1 to N into ascending
-    --  order making calls to Lt to do required comparisons, and calls to
-    --  Xchg to exchange items. The sort is not stable, that is the order
-    --  of equal items in the input data set is not preserved.
- 
- end GNAT.Heap_Sort;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-hesora.adb gcc-8.1.0/gcc/ada/g-hesora.adb
*** gcc-7.3.0/gcc/ada/g-hesora.adb	Tue Feb 25 15:15:44 2014
--- gcc-8.1.0/gcc/ada/g-hesora.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,134 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                     G N A T . H E A P _ S O R T _ A                      --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 1995-2013, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 Compiler_Unit_Warning;
- 
- package body GNAT.Heap_Sort_A is
- 
-    ----------
-    -- Sort --
-    ----------
- 
-    --  We are using the classical heapsort algorithm (i.e. Floyd's Treesort3)
-    --  as described by Knuth ("The Art of Programming", Volume III, first
-    --  edition, section 5.2.3, p. 145-147) with the modification that is
-    --  mentioned in exercise 18. For more details on this algorithm, see
-    --  Robert B. K. Dewar PhD thesis "The use of Computers in the X-ray
-    --  Phase Problem". University of Chicago, 1968, which was the first
-    --  publication of the modification, which reduces the number of compares
-    --  from 2NlogN to NlogN.
- 
-    procedure Sort (N : Natural; Move : Move_Procedure; Lt : Lt_Function) is
- 
-       Max : Natural := N;
-       --  Current Max index in tree being sifted
- 
-       procedure Sift (S : Positive);
-       --  This procedure sifts up node S, i.e. converts the subtree rooted
-       --  at node S into a heap, given the precondition that any sons of
-       --  S are already heaps. On entry, the contents of node S is found
-       --  in the temporary (index 0), the actual contents of node S on
-       --  entry are irrelevant. This is just a minor optimization to avoid
-       --  what would otherwise be two junk moves in phase two of the sort.
- 
-       procedure Sift (S : Positive) is
-          C      : Positive := S;
-          Son    : Positive;
-          Father : Positive;
- 
-       begin
-          --  This is where the optimization is done, normally we would do a
-          --  comparison at each stage between the current node and the larger
-          --  of the two sons, and continue the sift only if the current node
-          --  was less than this maximum. In this modified optimized version,
-          --  we assume that the current node will be less than the larger
-          --  son, and unconditionally sift up. Then when we get to the bottom
-          --  of the tree, we check parents to make sure that we did not make
-          --  a mistake. This roughly cuts the number of comparisons in half,
-          --  since it is almost always the case that our assumption is correct.
- 
-          --  Loop to pull up larger sons
- 
-          loop
-             Son := 2 * C;
-             exit when Son > Max;
- 
-             if Son < Max and then Lt (Son, Son + 1) then
-                Son := Son + 1;
-             end if;
- 
-             Move (Son, C);
-             C := Son;
-          end loop;
- 
-          --  Loop to check fathers
- 
-          while C /= S loop
-             Father := C / 2;
- 
-             if Lt (Father, 0) then
-                Move (Father, C);
-                C := Father;
-             else
-                exit;
-             end if;
-          end loop;
- 
-          --  Last step is to pop the sifted node into place
- 
-          Move (0, C);
-       end Sift;
- 
-    --  Start of processing for Sort
- 
-    begin
-       --  Phase one of heapsort is to build the heap. This is done by
-       --  sifting nodes N/2 .. 1 in sequence.
- 
-       for J in reverse 1 .. N / 2 loop
-          Move (J, 0);
-          Sift (J);
-       end loop;
- 
-       --  In phase 2, the largest node is moved to end, reducing the size
-       --  of the tree by one, and the displaced node is sifted down from
-       --  the top, so that the largest node is again at the top.
- 
-       while Max > 1 loop
-          Move (Max, 0);
-          Move (1, Max);
-          Max := Max - 1;
-          Sift (1);
-       end loop;
- 
-    end Sort;
- 
- end GNAT.Heap_Sort_A;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-hesora.ads gcc-8.1.0/gcc/ada/g-hesora.ads
*** gcc-7.3.0/gcc/ada/g-hesora.ads	Tue Feb 25 15:15:44 2014
--- gcc-8.1.0/gcc/ada/g-hesora.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,69 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                     G N A T . H E A P _ S O R T _ A                      --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 1995-2013, AdaCore                     --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Heapsort using access to procedure parameters
- 
- --  This package provides a heap sort routine that works with access to
- --  subprogram parameters, so that it can be used with different types with
- --  shared sorting code. It is considered obsoleted by GNAT.Heap_Sort which
- --  offers a similar routine with a more convenient interface.
- 
- --  This heapsort algorithm uses approximately N*log(N) compares in the
- --  worst case and is in place with no additional storage required. See
- --  the body for exact details of the algorithm used.
- 
- pragma Compiler_Unit_Warning;
- 
- package GNAT.Heap_Sort_A is
-    pragma Preelaborate;
- 
-    --  The data to be sorted is assumed to be indexed by integer values from
-    --  1 to N, where N is the number of items to be sorted. In addition, the
-    --  index value zero is used for a temporary location used during the sort.
- 
-    type Move_Procedure is access procedure (From : Natural; To : Natural);
-    --  A pointer to a procedure that moves the data item with index From to
-    --  the data item with index To. An index value of zero is used for moves
-    --  from and to the single temporary location used by the sort.
- 
-    type Lt_Function is access function (Op1, Op2 : Natural) return Boolean;
-    --  A pointer to a function that compares two items and returns True if
-    --  the item with index Op1 is less than the item with index Op2, and False
-    --  if the Op1 item is greater than or equal to the Op2 item.
- 
-    procedure Sort (N : Natural; Move : Move_Procedure; Lt : Lt_Function);
-    --  This procedures sorts items in the range from 1 to N into ascending
-    --  order making calls to Lt to do required comparisons, and Move to move
-    --  items around. Note that, as described above, both Move and Lt use a
-    --  single temporary location with index value zero. This sort is not
-    --  stable, i.e. the order of equal elements in the input is not preserved.
- 
- end GNAT.Heap_Sort_A;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-hesorg.adb gcc-8.1.0/gcc/ada/g-hesorg.adb
*** gcc-7.3.0/gcc/ada/g-hesorg.adb	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-hesorg.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,142 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                     G N A T . H E A P _ S O R T _ G                      --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 1995-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 GNAT.Heap_Sort_G is
- 
-    ----------
-    -- Sort --
-    ----------
- 
-    --  We are using the classical heapsort algorithm (i.e. Floyd's Treesort3)
-    --  as described by Knuth ("The Art of Programming", Volume III, first
-    --  edition, section 5.2.3, p. 145-147) with the modification that is
-    --  mentioned in exercise 18. For more details on this algorithm, see
-    --  Robert B. K. Dewar PhD thesis "The use of Computers in the X-ray
-    --  Phase Problem". University of Chicago, 1968, which was the first
-    --  publication of the modification, which reduces the number of compares
-    --  from 2NlogN to NlogN.
- 
-    procedure Sort (N : Natural) is
- 
-       Max : Natural := N;
-       --  Current Max index in tree being sifted
- 
-       procedure Sift (S : Positive);
-       --  This procedure sifts up node S, i.e. converts the subtree rooted
-       --  at node S into a heap, given the precondition that any sons of
-       --  S are already heaps. On entry, the contents of node S is found
-       --  in the temporary (index 0), the actual contents of node S on
-       --  entry are irrelevant. This is just a minor optimization to avoid
-       --  what would otherwise be two junk moves in phase two of the sort.
- 
-       ----------
-       -- Sift --
-       ----------
- 
-       procedure Sift (S : Positive) is
-          C      : Positive := S;
-          Son    : Positive;
-          Father : Positive;
-          --  Note: by making the above all Positive, we ensure that a test
-          --  against zero for the temporary location can be resolved on the
-          --  basis of types when the routines are inlined.
- 
-       begin
-          --  This is where the optimization is done, normally we would do a
-          --  comparison at each stage between the current node and the larger
-          --  of the two sons, and continue the sift only if the current node
-          --  was less than this maximum. In this modified optimized version,
-          --  we assume that the current node will be less than the larger
-          --  son, and unconditionally sift up. Then when we get to the bottom
-          --  of the tree, we check parents to make sure that we did not make
-          --  a mistake. This roughly cuts the number of comparisons in half,
-          --  since it is almost always the case that our assumption is correct.
- 
-          --  Loop to pull up larger sons
- 
-          loop
-             Son := 2 * C;
- 
-             if Son < Max then
-                if Lt (Son, Son + 1) then
-                   Son := Son + 1;
-                end if;
-             elsif Son > Max then
-                exit;
-             end if;
- 
-             Move (Son, C);
-             C := Son;
-          end loop;
- 
-          --  Loop to check fathers
- 
-          while C /= S loop
-             Father := C / 2;
- 
-             if Lt (Father, 0) then
-                Move (Father, C);
-                C := Father;
-             else
-                exit;
-             end if;
-          end loop;
- 
-          --  Last step is to pop the sifted node into place
- 
-          Move (0, C);
-       end Sift;
- 
-    --  Start of processing for Sort
- 
-    begin
-       --  Phase one of heapsort is to build the heap. This is done by
-       --  sifting nodes N/2 .. 1 in sequence.
- 
-       for J in reverse 1 .. N / 2 loop
-          Move (J, 0);
-          Sift (J);
-       end loop;
- 
-       --  In phase 2, the largest node is moved to end, reducing the size
-       --  of the tree by one, and the displaced node is sifted down from
-       --  the top, so that the largest node is again at the top.
- 
-       while Max > 1 loop
-          Move (Max, 0);
-          Move (1, Max);
-          Max := Max - 1;
-          Sift (1);
-       end loop;
- 
-    end Sort;
- 
- end GNAT.Heap_Sort_G;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-hesorg.ads gcc-8.1.0/gcc/ada/g-hesorg.ads
*** gcc-7.3.0/gcc/ada/g-hesorg.ads	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-hesorg.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,88 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                     G N A T . H E A P _ S O R T _ G                      --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 1995-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Heapsort generic package using formal procedures
- 
- --  This package provides a generic heapsort routine that can be used with
- --  different types of data.
- 
- --  See also GNAT.Heap_Sort, a version that works with subprogram access
- --  parameters, allowing code sharing. The generic version is slightly more
- --  efficient but does not allow code sharing and has an interface that is
- --  more awkward to use.
- 
- --  There is also GNAT.Heap_Sort_A, which is now considered obsolete, but
- --  was an older version working with subprogram parameters. This version
- --  is retained for backwards compatibility with old versions of GNAT.
- 
- --  This heapsort algorithm uses approximately N*log(N) compares in the
- --  worst case and is in place with no additional storage required. See
- --  the body for exact details of the algorithm used.
- 
- generic
-    --  The data to be sorted is assumed to be indexed by integer values from
-    --  1 to N, where N is the number of items to be sorted. In addition, the
-    --  index value zero is used for a temporary location used during the sort.
- 
-    with procedure Move (From : Natural; To : Natural);
-    --  A procedure that moves the data item with index value From to the data
-    --  item with index value To (the old value in To being lost). An index
-    --  value of zero is used for moves from and to a single temporary location.
-    --  For best efficiency, this routine should be marked as inlined.
- 
-    with function Lt (Op1, Op2 : Natural) return Boolean;
-    --  A function that compares two items and returns True if the item with
-    --  index Op1 is less than the item with Index Op2, and False if the Op1
-    --  item is greater than the Op2 item. If the two items are equal, then
-    --  it does not matter whether True or False is returned (it is slightly
-    --  more efficient to return False). For best efficiency, this routine
-    --  should be marked as inlined.
- 
-    --  Note on use of temporary location
- 
-    --  There are two ways of providing for the index value zero to represent
-    --  a temporary value. Either an extra location can be allocated at the
-    --  start of the array, or alternatively the Move and Lt subprograms can
-    --  test for the case of zero and treat it specially. In any case it is
-    --  desirable to specify the two subprograms as inlined and the tests for
-    --  zero will in this case be resolved at instantiation time.
- 
- package GNAT.Heap_Sort_G is
-    pragma Pure;
- 
-    procedure Sort (N : Natural);
-    --  This procedures sorts items in the range from 1 to N into ascending
-    --  order making calls to Lt to do required comparisons, and Move to move
-    --  items around. Note that, as described above, both Move and Lt use a
-    --  single temporary location with index value zero. This sort is not
-    --  stable, i.e. the order of equal elements in the input is not preserved.
- 
- end GNAT.Heap_Sort_G;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-htable.adb gcc-8.1.0/gcc/ada/g-htable.adb
*** gcc-7.3.0/gcc/ada/g-htable.adb	Tue Feb 25 15:15:44 2014
--- gcc-8.1.0/gcc/ada/g-htable.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,40 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                          G N A T . H T A B L E                           --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 1995-2013, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 a dummy body, required because if we remove the body we have
- --  bootstrap path problems (this unit used to have a body, and if we do not
- --  supply a dummy body, the old incorrect body is picked up during the
- --  bootstrap process).
- 
- pragma Compiler_Unit_Warning;
- 
- package body GNAT.HTable is
- end GNAT.HTable;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-htable.ads gcc-8.1.0/gcc/ada/g-htable.ads
*** gcc-7.3.0/gcc/ada/g-htable.ads	Tue Feb 25 15:15:44 2014
--- gcc-8.1.0/gcc/ada/g-htable.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,60 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                          G N A T . H T A B L E                           --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 1995-2013, AdaCore                     --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Hash table searching routines
- 
- --  This package contains two separate packages. The Simple_HTable package
- --  provides a very simple abstraction that associates one element to one
- --  key value and takes care of all allocations automatically using the heap.
- --  The Static_HTable package provides a more complex interface that allows
- --  complete control over allocation.
- 
- --  See file s-htable.ads for full documentation of the interface
- 
- pragma Compiler_Unit_Warning;
- 
- with System.HTable;
- 
- package GNAT.HTable is
-    pragma Preelaborate;
-    pragma Elaborate_Body;
-    --  The elaborate body is because we have a dummy body to deal with
-    --  bootstrap path problems (we used to have a real body, and now we don't
-    --  need it any more, but the bootstrap requires that we have a dummy body,
-    --  since otherwise the old body gets picked up; also, we can't use pragma
-    --  No_Body because older bootstrap compilers don't support that).
- 
-    generic package Simple_HTable renames System.HTable.Simple_HTable;
-    generic package Static_HTable renames System.HTable.Static_HTable;
- 
-    generic function Hash renames System.HTable.Hash;
- 
- end GNAT.HTable;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-io-put-vxworks.adb gcc-8.1.0/gcc/ada/g-io-put-vxworks.adb
*** gcc-7.3.0/gcc/ada/g-io-put-vxworks.adb	Mon Aug  1 15:08:40 2011
--- gcc-8.1.0/gcc/ada/g-io-put-vxworks.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,53 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                              G N A T . I O                               --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 1995-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  vxworks zfp version of Put (C : Character)
- 
- with Interfaces.C; use Interfaces.C;
- 
- separate (GNAT.IO)
- procedure Put (C : Character) is
- 
-    function ioGlobalStdGet
-      (File : int) return int;
-    pragma Import (C, ioGlobalStdGet, "ioGlobalStdGet");
- 
-    procedure fdprintf
-      (File   : int;
-       Format : String;
-       Value  : Character);
-    pragma Import (C, fdprintf, "fdprintf");
- 
-    Stdout_ID : constant int := 1;
- 
- begin
-    fdprintf (ioGlobalStdGet (Stdout_ID), "%c" & ASCII.NUL, C);
- end Put;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-io-put.adb gcc-8.1.0/gcc/ada/g-io-put.adb
*** gcc-7.3.0/gcc/ada/g-io-put.adb	Thu Nov 12 11:02:17 2015
--- gcc-8.1.0/gcc/ada/g-io-put.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,40 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                              G N A T . I O                               --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 1995-2015, AdaCore                     --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  zfp version of Put (C : Character)
- 
- separate (GNAT.IO)
- procedure Put (C : Character) is
-    procedure Putchar (C : Integer);
-    pragma Import (C, Putchar, "putchar");
- begin
-    Putchar (Character'Pos (C));
- end Put;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-io.adb gcc-8.1.0/gcc/ada/g-io.adb
*** gcc-7.3.0/gcc/ada/g-io.adb	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-io.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,191 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                              G N A T . I O                               --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 1995-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 GNAT.IO is
- 
-    Current_Out : File_Type := Stdout;
-    pragma Atomic (Current_Out);
-    --  Current output file (modified by Set_Output)
- 
-    ---------
-    -- Get --
-    ---------
- 
-    procedure Get (X : out Integer) is
-       function Get_Int return Integer;
-       pragma Import (C, Get_Int, "get_int");
-    begin
-       X := Get_Int;
-    end Get;
- 
-    procedure Get (C : out Character) is
-       function Get_Char return Character;
-       pragma Import (C, Get_Char, "get_char");
-    begin
-       C := Get_Char;
-    end Get;
- 
-    --------------
-    -- Get_Line --
-    --------------
- 
-    procedure Get_Line (Item : out String; Last : out Natural) is
-       C : Character;
- 
-    begin
-       for Nstore in Item'Range loop
-          Get (C);
- 
-          if C = ASCII.LF then
-             Last := Nstore - 1;
-             return;
- 
-          else
-             Item (Nstore) := C;
-          end if;
-       end loop;
- 
-       Last := Item'Last;
-    end Get_Line;
- 
-    --------------
-    -- New_Line --
-    --------------
- 
-    procedure New_Line (File : File_Type; Spacing : Positive := 1) is
-    begin
-       for J in 1 .. Spacing loop
-          Put (File, ASCII.LF);
-       end loop;
-    end New_Line;
- 
-    procedure New_Line (Spacing : Positive := 1) is
-    begin
-       New_Line (Current_Out, Spacing);
-    end New_Line;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put (X : Integer) is
-    begin
-       Put (Current_Out, X);
-    end Put;
- 
-    procedure Put (File : File_Type; X : Integer) is
-       procedure Put_Int (X : Integer);
-       pragma Import (C, Put_Int, "put_int");
- 
-       procedure Put_Int_Stderr (X : Integer);
-       pragma Import (C, Put_Int_Stderr, "put_int_stderr");
- 
-    begin
-       case File is
-          when Stdout => Put_Int (X);
-          when Stderr => Put_Int_Stderr (X);
-       end case;
-    end Put;
- 
-    procedure Put (C : Character) is
-    begin
-       Put (Current_Out, C);
-    end Put;
- 
-    procedure Put (File : File_Type; C : Character) is
-       procedure Put_Char (C : Character);
-       pragma Import (C, Put_Char, "put_char");
- 
-       procedure Put_Char_Stderr (C : Character);
-       pragma Import (C, Put_Char_Stderr, "put_char_stderr");
- 
-    begin
-       case File is
-          when Stdout => Put_Char (C);
-          when Stderr => Put_Char_Stderr (C);
-       end case;
-    end Put;
- 
-    procedure Put (S : String) is
-    begin
-       Put (Current_Out, S);
-    end Put;
- 
-    procedure Put (File : File_Type; S : String) is
-    begin
-       for J in S'Range loop
-          Put (File, S (J));
-       end loop;
-    end Put;
- 
-    --------------
-    -- Put_Line --
-    --------------
- 
-    procedure Put_Line (S : String) is
-    begin
-       Put_Line (Current_Out, S);
-    end Put_Line;
- 
-    procedure Put_Line (File : File_Type; S : String) is
-    begin
-       Put (File, S);
-       New_Line (File);
-    end Put_Line;
- 
-    ----------------
-    -- Set_Output --
-    ----------------
- 
-    procedure Set_Output (File : File_Type) is
-    begin
-       Current_Out := File;
-    end Set_Output;
- 
-    ---------------------
-    -- Standard_Output --
-    ---------------------
- 
-    function Standard_Output return File_Type is
-    begin
-       return Stdout;
-    end Standard_Output;
- 
-    --------------------
-    -- Standard_Error --
-    --------------------
- 
-    function Standard_Error return File_Type is
-    begin
-       return Stderr;
-    end Standard_Error;
- 
- end GNAT.IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-io.ads gcc-8.1.0/gcc/ada/g-io.ads
*** gcc-7.3.0/gcc/ada/g-io.ads	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-io.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,91 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                              G N A T . I O                               --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 1995-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  A simple preelaborable subset of Text_IO capabilities
- 
- --  A simple text I/O package that can be used for simple I/O functions in
- --  user programs as required. This package is also preelaborated, unlike
- --  Text_IO, and can thus be with'ed by preelaborated library units.
- 
- --  Note that Data_Error is not raised by these subprograms for bad data.
- --  If such checks are needed then the regular Text_IO package must be used.
- 
- package GNAT.IO is
-    pragma Preelaborate;
- 
-    type File_Type is limited private;
-    --  Specifies file to be used (the only possibilities are Standard_Output
-    --  and Standard_Error). There is no Create or Open facility that would
-    --  allow more general use of file names.
- 
-    function Standard_Output return File_Type;
-    function Standard_Error  return File_Type;
-    --  These functions are the only way to get File_Type values
- 
-    procedure Get (X : out Integer);
-    procedure Get (C : out Character);
-    procedure Get_Line (Item : out String; Last : out Natural);
-    --  These routines always read from Standard_Input
- 
-    procedure Put (File : File_Type; X : Integer);
-    procedure Put (X : Integer);
-    --  Output integer to specified file, or to current output file, same
-    --  output as if Ada.Text_IO.Integer_IO had been instantiated for Integer.
- 
-    procedure Put (File : File_Type; C : Character);
-    procedure Put (C : Character);
-    --  Output character to specified file, or to current output file
- 
-    procedure Put (File : File_Type; S : String);
-    procedure Put (S : String);
-    --  Output string to specified file, or to current output file
- 
-    procedure Put_Line (File : File_Type; S : String);
-    procedure Put_Line (S : String);
-    --  Output string followed by new line to specified file, or to
-    --  current output file.
- 
-    procedure New_Line (File : File_Type; Spacing : Positive := 1);
-    procedure New_Line (Spacing : Positive := 1);
-    --  Output new line character to specified file, or to current output file
- 
-    procedure Set_Output (File : File_Type);
-    --  Set current output file, default is Standard_Output if no call to
-    --  Set_Output is made.
- 
- private
-    type File_Type is (Stdout, Stderr);
-    --  Stdout = Standard_Output, Stderr = Standard_Error
- 
-    pragma Inline (Standard_Error);
-    pragma Inline (Standard_Output);
- 
- end GNAT.IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-io_aux.adb gcc-8.1.0/gcc/ada/g-io_aux.adb
*** gcc-7.3.0/gcc/ada/g-io_aux.adb	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-io_aux.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,105 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                          G N A T . I O _ A U X                           --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 1995-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 Interfaces.C_Streams; use Interfaces.C_Streams;
- 
- package body GNAT.IO_Aux is
- 
-    Buflen : constant := 2000;
-    --  Buffer length. Works for any non-zero value, larger values take
-    --  more stack space, smaller values require more recursion.
- 
-    -----------------
-    -- File_Exists --
-    -----------------
- 
-    function File_Exists (Name : String) return Boolean
-    is
-       Namestr : aliased String (1 .. Name'Length + 1);
-       --  Name as given with ASCII.NUL appended
- 
-    begin
-       Namestr (1 .. Name'Length) := Name;
-       Namestr (Name'Length + 1)  := ASCII.NUL;
-       return file_exists (Namestr'Address) /= 0;
-    end File_Exists;
- 
-    --------------
-    -- Get_Line --
-    --------------
- 
-    --  Current_Input case
- 
-    function Get_Line return String is
-       Buffer : String (1 .. Buflen);
-       --  Buffer to read in chunks of remaining line. Will work with any
-       --  size buffer. We choose a length so that most of the time no
-       --  recursion will be required.
- 
-       Last : Natural;
- 
-    begin
-       Ada.Text_IO.Get_Line (Buffer, Last);
- 
-       --  If the buffer is not full, then we are all done
- 
-       if Last < Buffer'Last then
-          return Buffer (1 .. Last);
- 
-       --  Otherwise, we still have characters left on the line. Note that
-       --  as specified by (RM A.10.7(19)) the end of line is not skipped
-       --  in this case, even if we are right at it now.
- 
-       else
-          return Buffer & GNAT.IO_Aux.Get_Line;
-       end if;
-    end Get_Line;
- 
-    --  Case of reading from a specified file. Note that we could certainly
-    --  share code between these two versions, but these are very short
-    --  routines, and we may as well aim for maximum speed, cutting out an
-    --  intermediate call (calls returning string may be somewhat slow)
- 
-    function Get_Line (File : Ada.Text_IO.File_Type) return String is
-       Buffer : String (1 .. Buflen);
-       Last   : Natural;
- 
-    begin
-       Ada.Text_IO.Get_Line (File, Buffer, Last);
- 
-       if Last < Buffer'Last then
-          return Buffer (1 .. Last);
-       else
-          return Buffer & Get_Line (File);
-       end if;
-    end Get_Line;
- 
- end GNAT.IO_Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-io_aux.ads gcc-8.1.0/gcc/ada/g-io_aux.ads
*** gcc-7.3.0/gcc/ada/g-io_aux.ads	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-io_aux.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,54 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                          G N A T . I O _ A U X                           --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 1995-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Auxiliary functions or use with Text_IO
- 
- --  This package provides some auxiliary functions for use with Text_IO,
- --  including a test for an existing file, and a Get_Line function which
- --  returns a string.
- 
- with Ada.Text_IO;
- 
- package GNAT.IO_Aux is
- 
-    function File_Exists (Name : String) return Boolean;
-    --  Test for existence of a file named Name
- 
-    function Get_Line return String;
-    --  Read Ada.Text_IO.Current_Input and return string that includes all
-    --  characters from the current character up to the end of the line,
-    --  with no limit on its length. Raises Ada.IO_Exceptions.End_Error if
-    --  at end of file.
- 
-    function Get_Line (File : Ada.Text_IO.File_Type) return String;
-    --  Same, but reads from specified file
- 
- end GNAT.IO_Aux;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-locfil.adb gcc-8.1.0/gcc/ada/g-locfil.adb
*** gcc-7.3.0/gcc/ada/g-locfil.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/g-locfil.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,134 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                      G N A T . L O C K _ F I L E S                       --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1998-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- --
- -- 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 System;
- 
- package body GNAT.Lock_Files is
- 
-    Dir_Separator : Character;
-    pragma Import (C, Dir_Separator, "__gnat_dir_separator");
- 
-    ---------------
-    -- Lock_File --
-    ---------------
- 
-    procedure Lock_File
-      (Directory      : Path_Name;
-       Lock_File_Name : Path_Name;
-       Wait           : Duration := 1.0;
-       Retries        : Natural  := Natural'Last)
-    is
-       Dir  : aliased String := Directory & ASCII.NUL;
-       File : aliased String := Lock_File_Name & ASCII.NUL;
- 
-       function Try_Lock (Dir, File : System.Address) return Integer;
-       pragma Import (C, Try_Lock, "__gnat_try_lock");
- 
-    begin
-       --  If a directory separator was provided, just remove the one we have
-       --  added above.
- 
-       if Directory (Directory'Last) = Dir_Separator
-         or else Directory (Directory'Last) = '/'
-       then
-          Dir (Dir'Last - 1) := ASCII.NUL;
-       end if;
- 
-       --  Try to lock the file Retries times
- 
-       for I in 0 .. Retries loop
-          if Try_Lock (Dir'Address, File'Address) = 1 then
-             return;
-          end if;
- 
-          exit when I = Retries;
-          delay Wait;
-       end loop;
- 
-       raise Lock_Error;
-    end Lock_File;
- 
-    ---------------
-    -- Lock_File --
-    ---------------
- 
-    procedure Lock_File
-      (Lock_File_Name : Path_Name;
-       Wait           : Duration := 1.0;
-       Retries        : Natural  := Natural'Last)
-    is
-    begin
-       for J in reverse Lock_File_Name'Range loop
-          if Lock_File_Name (J) = Dir_Separator
-            or else Lock_File_Name (J) = '/'
-          then
-             Lock_File
-               (Lock_File_Name (Lock_File_Name'First .. J - 1),
-                Lock_File_Name (J + 1 .. Lock_File_Name'Last),
-                Wait,
-                Retries);
-             return;
-          end if;
-       end loop;
- 
-       Lock_File (".", Lock_File_Name, Wait, Retries);
-    end Lock_File;
- 
-    -----------------
-    -- Unlock_File --
-    -----------------
- 
-    procedure Unlock_File (Lock_File_Name : Path_Name) is
-       S : aliased String := Lock_File_Name & ASCII.NUL;
- 
-       procedure unlink (A : System.Address);
-       pragma Import (C, unlink, "unlink");
- 
-    begin
-       unlink (S'Address);
-    end Unlock_File;
- 
-    -----------------
-    -- Unlock_File --
-    -----------------
- 
-    procedure Unlock_File (Directory : Path_Name; Lock_File_Name : Path_Name) is
-    begin
-       if Directory (Directory'Last) = Dir_Separator
-         or else Directory (Directory'Last) = '/'
-       then
-          Unlock_File (Directory & Lock_File_Name);
-       else
-          Unlock_File (Directory & Dir_Separator & Lock_File_Name);
-       end if;
-    end Unlock_File;
- 
- end GNAT.Lock_Files;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-locfil.ads gcc-8.1.0/gcc/ada/g-locfil.ads
*** gcc-7.3.0/gcc/ada/g-locfil.ads	Fri Jan 13 10:54:43 2017
--- gcc-8.1.0/gcc/ada/g-locfil.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,72 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                      G N A T . L O C K _ F I L E S                       --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 1995-2016, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 necessary routines for using files for the
- --  purpose of providing reliable system wide locking capability.
- 
- package GNAT.Lock_Files is
-    pragma Preelaborate;
- 
-    Lock_Error : exception;
-    --  Exception raised if file cannot be locked
- 
-    subtype Path_Name is String;
-    --  Pathname is used by all services provided in this unit to specify
-    --  directory name and file name. On DOS based systems both directory
-    --  separators are handled (i.e. slash and backslash).
- 
-    procedure Lock_File
-      (Directory      : Path_Name;
-       Lock_File_Name : Path_Name;
-       Wait           : Duration := 1.0;
-       Retries        : Natural  := Natural'Last);
-    --  Create a lock file Lock_File_Name in directory Directory. If the file
-    --  cannot be locked because someone already owns the lock, this procedure
-    --  waits Wait seconds and retries at most Retries times. If the file
-    --  still cannot be locked, Lock_Error is raised. The default is to try
-    --  every second, almost forever (Natural'Last times). The full path of
-    --  the file is constructed by concatenating Directory and Lock_File_Name.
-    --  Directory can optionally terminate with a directory separator.
- 
-    procedure Lock_File
-      (Lock_File_Name : Path_Name;
-       Wait           : Duration := 1.0;
-       Retries        : Natural  := Natural'Last);
-    --  See above. The full lock file path is given as one string
- 
-    procedure Unlock_File (Directory : Path_Name; Lock_File_Name : Path_Name);
-    --  Unlock a file. Directory can optionally terminate with a directory
-    --  separator.
- 
-    procedure Unlock_File (Lock_File_Name : Path_Name);
-    --  Unlock a file whose full path is given in Lock_File_Name
- 
- end GNAT.Lock_Files;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-mbdira.adb gcc-8.1.0/gcc/ada/g-mbdira.adb
*** gcc-7.3.0/gcc/ada/g-mbdira.adb	Tue Apr 19 12:18:59 2016
--- gcc-8.1.0/gcc/ada/g-mbdira.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,282 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --            G N A T . M B B S _ D I S C R E T E _ R A N D O M             --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Calendar;
- 
- with Interfaces; use Interfaces;
- 
- package body GNAT.MBBS_Discrete_Random is
- 
-    package Calendar renames Ada.Calendar;
- 
-    Fits_In_32_Bits : constant Boolean :=
-                        Rst'Size < 31
-                          or else (Rst'Size = 31
-                                   and then Rst'Pos (Rst'First) < 0);
-    --  This is set True if we do not need more than 32 bits in the result. If
-    --  we need 64-bits, we will only use the meaningful 48 bits of any 64-bit
-    --  number generated, since if more than 48 bits are required, we split the
-    --  computation into two separate parts, since the algorithm does not behave
-    --  above 48 bits.
- 
-    --  The way this expression works is that obviously if the size is 31 bits,
-    --  it fits in 32 bits. In the 32-bit case, it fits in 32-bit signed if the
-    --  range has negative values. It is too conservative in the case that the
-    --  programmer has set a size greater than the default, e.g. a size of 33
-    --  for an integer type with a range of 1..10, but an over-conservative
-    --  result is OK. The important thing is that the value is only True if
-    --  we know the result will fit in 32-bits signed. If the value is False
-    --  when it could be True, the behavior will be correct, just a bit less
-    --  efficient than it could have been in some unusual cases.
-    --
-    --  One might assume that we could get a more accurate result by testing
-    --  the lower and upper bounds of the type Rst against the bounds of 32-bit
-    --  Integer. However, there is no easy way to do that. Why? Because in the
-    --  relatively rare case where this expression has to be evaluated at run
-    --  time rather than compile time (when the bounds are dynamic), we need a
-    --  type to use for the computation. But the possible range of upper bound
-    --  values for Rst (remembering the possibility of 64-bit modular types) is
-    --  from -2**63 to 2**64-1, and no run-time type has a big enough range.
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    function Square_Mod_N (X, N : Int) return Int;
-    pragma Inline (Square_Mod_N);
-    --  Computes X**2 mod N avoiding intermediate overflow
- 
-    -----------
-    -- Image --
-    -----------
- 
-    function Image (Of_State : State) return String is
-    begin
-       return Int'Image (Of_State.X1) &
-              ','                     &
-              Int'Image (Of_State.X2) &
-              ','                     &
-              Int'Image (Of_State.Q);
-    end Image;
- 
-    ------------
-    -- Random --
-    ------------
- 
-    function Random (Gen : Generator) return Rst is
-       S    : State renames Gen.Writable.Self.Gen_State;
-       Temp : Int;
-       TF   : Flt;
- 
-    begin
-       --  Check for flat range here, since we are typically run with checks
-       --  off, note that in practice, this condition will usually be static
-       --  so we will not actually generate any code for the normal case.
- 
-       if Rst'Last < Rst'First then
-          raise Constraint_Error;
-       end if;
- 
-       --  Continue with computation if non-flat range
- 
-       S.X1 := Square_Mod_N (S.X1, S.P);
-       S.X2 := Square_Mod_N (S.X2, S.Q);
-       Temp := S.X2 - S.X1;
- 
-       --  Following duplication is not an error, it is a loop unwinding
- 
-       if Temp < 0 then
-          Temp := Temp + S.Q;
-       end if;
- 
-       if Temp < 0 then
-          Temp := Temp + S.Q;
-       end if;
- 
-       TF := Offs + (Flt (Temp) * Flt (S.P) + Flt (S.X1)) * S.Scl;
- 
-       --  Pathological, but there do exist cases where the rounding implicit
-       --  in calculating the scale factor will cause rounding to 'Last + 1.
-       --  In those cases, returning 'First results in the least bias.
- 
-       if TF >= Flt (Rst'Pos (Rst'Last)) + 0.5 then
-          return Rst'First;
- 
-       elsif not Fits_In_32_Bits then
-          return Rst'Val (Interfaces.Integer_64 (TF));
- 
-       else
-          return Rst'Val (Int (TF));
-       end if;
-    end Random;
- 
-    -----------
-    -- Reset --
-    -----------
- 
-    procedure Reset (Gen : Generator; Initiator : Integer) is
-       S      : State renames Gen.Writable.Self.Gen_State;
-       X1, X2 : Int;
- 
-    begin
-       X1 := 2 + Int (Initiator) mod (K1 - 3);
-       X2 := 2 + Int (Initiator) mod (K2 - 3);
- 
-       for J in 1 .. 5 loop
-          X1 := Square_Mod_N (X1, K1);
-          X2 := Square_Mod_N (X2, K2);
-       end loop;
- 
-       --  Eliminate effects of small Initiators
- 
-       S :=
-         (X1  => X1,
-          X2  => X2,
-          P   => K1,
-          Q   => K2,
-          FP  => K1F,
-          Scl => Scal);
-    end Reset;
- 
-    -----------
-    -- Reset --
-    -----------
- 
-    procedure Reset (Gen : Generator) is
-       S    : State renames Gen.Writable.Self.Gen_State;
-       Now  : constant Calendar.Time := Calendar.Clock;
-       X1   : Int;
-       X2   : Int;
- 
-    begin
-       X1 := Int (Calendar.Year    (Now)) * 12 * 31 +
-             Int (Calendar.Month   (Now) * 31)      +
-             Int (Calendar.Day     (Now));
- 
-       X2 := Int (Calendar.Seconds (Now) * Duration (1000.0));
- 
-       X1 := 2 + X1 mod (K1 - 3);
-       X2 := 2 + X2 mod (K2 - 3);
- 
-       --  Eliminate visible effects of same day starts
- 
-       for J in 1 .. 5 loop
-          X1 := Square_Mod_N (X1, K1);
-          X2 := Square_Mod_N (X2, K2);
-       end loop;
- 
-       S :=
-         (X1  => X1,
-          X2  => X2,
-          P   => K1,
-          Q   => K2,
-          FP  => K1F,
-          Scl => Scal);
- 
-    end Reset;
- 
-    -----------
-    -- Reset --
-    -----------
- 
-    procedure Reset (Gen : Generator; From_State : State) is
-    begin
-       Gen.Writable.Self.Gen_State := From_State;
-    end Reset;
- 
-    ----------
-    -- Save --
-    ----------
- 
-    procedure Save (Gen : Generator; To_State : out State) is
-    begin
-       To_State := Gen.Gen_State;
-    end Save;
- 
-    ------------------
-    -- Square_Mod_N --
-    ------------------
- 
-    function Square_Mod_N (X, N : Int) return Int is
-    begin
-       return Int ((Integer_64 (X) ** 2) mod (Integer_64 (N)));
-    end Square_Mod_N;
- 
-    -----------
-    -- Value --
-    -----------
- 
-    function Value (Coded_State : String) return State is
-       Last  : constant Natural := Coded_State'Last;
-       Start : Positive := Coded_State'First;
-       Stop  : Positive := Coded_State'First;
-       Outs  : State;
- 
-    begin
-       while Stop <= Last and then Coded_State (Stop) /= ',' loop
-          Stop := Stop + 1;
-       end loop;
- 
-       if Stop > Last then
-          raise Constraint_Error;
-       end if;
- 
-       Outs.X1 := Int'Value (Coded_State (Start .. Stop - 1));
-       Start := Stop + 1;
- 
-       loop
-          Stop := Stop + 1;
-          exit when Stop > Last or else Coded_State (Stop) = ',';
-       end loop;
- 
-       if Stop > Last then
-          raise Constraint_Error;
-       end if;
- 
-       Outs.X2  := Int'Value (Coded_State (Start .. Stop - 1));
-       Outs.Q   := Int'Value (Coded_State (Stop + 1 .. Last));
-       Outs.P   := Outs.Q * 2 + 1;
-       Outs.FP  := Flt (Outs.P);
-       Outs.Scl := (RstL - RstF + 1.0) / (Flt (Outs.P) * Flt (Outs.Q));
- 
-       --  Now do *some* sanity checks
- 
-       if Outs.Q < 31
-         or else Outs.X1 not in 2 .. Outs.P - 1
-         or else Outs.X2 not in 2 .. Outs.Q - 1
-       then
-          raise Constraint_Error;
-       end if;
- 
-       return Outs;
-    end Value;
- 
- end GNAT.MBBS_Discrete_Random;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-mbdira.ads gcc-8.1.0/gcc/ada/g-mbdira.ads
*** gcc-7.3.0/gcc/ada/g-mbdira.ads	Tue Jun 22 17:29:41 2010
--- gcc-8.1.0/gcc/ada/g-mbdira.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,123 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --            G N A T . M B B S _ D I S C R E T E _ R A N D O M             --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2010, Free Software Foundation, 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  The implementation used in this package was contributed by Robert
- --  Eachus. It is based on the work of L. Blum, M. Blum, and M. Shub, SIAM
- --  Journal of Computing, Vol 15. No 2, May 1986. The particular choices for P
- --  and Q chosen here guarantee a period of 562,085,314,430,582 (about 2**49),
- --  and the generated sequence has excellent randomness properties. For further
- --  details, see the paper "Fast Generation of Trustworthy Random Numbers", by
- --  Robert Eachus, which describes both the algorithm and the efficient
- --  implementation approach used here.
- 
- --  Formerly, this package was Ada.Numerics.Discrete_Random. It is retained
- --  here in part to allow users to reconstruct number sequences generated
- --  by previous versions.
- 
- with Interfaces;
- 
- generic
-    type Result_Subtype is (<>);
- 
- package GNAT.MBBS_Discrete_Random is
- 
-    --  The algorithm used here is reliable from a required statistical point of
-    --  view only up to 48 bits. We try to behave reasonably in the case of
-    --  larger types, but we can't guarantee the required properties. So
-    --  generate a warning for these (slightly) dubious cases.
- 
-    pragma Compile_Time_Warning
-      (Result_Subtype'Size > 48,
-       "statistical properties not guaranteed for size > 48");
- 
-    --  Basic facilities
- 
-    type Generator is limited private;
- 
-    function Random (Gen : Generator) return Result_Subtype;
- 
-    procedure Reset (Gen : Generator);
-    procedure Reset (Gen : Generator; Initiator : Integer);
- 
-    --  Advanced facilities
- 
-    type State is private;
- 
-    procedure Save  (Gen : Generator; To_State   : out State);
-    procedure Reset (Gen : Generator; From_State : State);
- 
-    Max_Image_Width : constant := 80;
- 
-    function Image (Of_State    : State)  return String;
-    function Value (Coded_State : String) return State;
- 
- private
-    subtype Int is Interfaces.Integer_32;
-    subtype Rst is Result_Subtype;
- 
-    --  We prefer to use 14 digits for Flt, but some targets are more limited
- 
-    type Flt is digits Positive'Min (14, Long_Long_Float'Digits);
- 
-    RstF : constant Flt := Flt (Rst'Pos (Rst'First));
-    RstL : constant Flt := Flt (Rst'Pos (Rst'Last));
- 
-    Offs : constant Flt := RstF - 0.5;
- 
-    K1   : constant := 94_833_359;
-    K1F  : constant := 94_833_359.0;
-    K2   : constant := 47_416_679;
-    K2F  : constant := 47_416_679.0;
-    Scal : constant Flt := (RstL - RstF + 1.0) / (K1F * K2F);
- 
-    type State is record
-       X1  : Int := Int (2999 ** 2);
-       X2  : Int := Int (1439 ** 2);
-       P   : Int := K1;
-       Q   : Int := K2;
-       FP  : Flt := K1F;
-       Scl : Flt := Scal;
-    end record;
- 
-    type Writable_Access (Self : access Generator) is limited null record;
-    --  Auxiliary type to make Generator a self-referential type
- 
-    type Generator is limited record
-       Writable  : Writable_Access (Generator'Access);
-       --  This self reference allows functions to modify Generator arguments
-       Gen_State : State;
-    end record;
- 
- end GNAT.MBBS_Discrete_Random;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-mbflra.adb gcc-8.1.0/gcc/ada/g-mbflra.adb
*** gcc-7.3.0/gcc/ada/g-mbflra.adb	Tue Jun 22 17:17:57 2010
--- gcc-8.1.0/gcc/ada/g-mbflra.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,314 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --               G N A T . M B B S _ F L O A T _ R A N D O M                --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2010, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Calendar;
- 
- package body GNAT.MBBS_Float_Random is
- 
-    -------------------------
-    -- Implementation Note --
-    -------------------------
- 
-    --  The design of this spec is a bit awkward, as a result of Ada 95 not
-    --  permitting in-out parameters for function formals (most naturally
-    --  Generator values would be passed this way). In pure Ada 95, the only
-    --  solution would be to add a self-referential component to the generator
-    --  allowing access to the generator object from inside the function. This
-    --  would work because the generator is limited, which prevents any copy.
- 
-    --  This is a bit heavy, so what we do is to use Unrestricted_Access to
-    --  get a pointer to the state in the passed Generator. This works because
-    --  Generator is a limited type and will thus always be passed by reference.
- 
-    package Calendar renames Ada.Calendar;
- 
-    type Pointer is access all State;
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    procedure Euclid (P, Q : Int; X, Y : out Int; GCD : out Int);
- 
-    function  Euclid (P, Q : Int) return Int;
- 
-    function Square_Mod_N (X, N : Int) return Int;
- 
-    ------------
-    -- Euclid --
-    ------------
- 
-    procedure Euclid (P, Q : Int; X, Y : out Int; GCD : out Int) is
- 
-       XT : Int := 1;
-       YT : Int := 0;
- 
-       procedure Recur
-         (P,  Q  : Int;                    --  a (i-1), a (i)
-          X,  Y  : Int;                    --  x (i),   y (i)
-          XP, YP : in out Int;             --  x (i-1), y (i-1)
-          GCD    : out Int);
- 
-       procedure Recur
-         (P,  Q  : Int;
-          X,  Y  : Int;
-          XP, YP : in out Int;
-          GCD    : out Int)
-       is
-          Quo : Int := P / Q;              --  q <-- |_ a (i-1) / a (i) _|
-          XT  : Int := X;                  --  x (i)
-          YT  : Int := Y;                  --  y (i)
- 
-       begin
-          if P rem Q = 0 then                 --  while does not divide
-             GCD := Q;
-             XP  := X;
-             YP  := Y;
-          else
-             Recur (Q, P - Q * Quo, XP - Quo * X, YP - Quo * Y, XT, YT, Quo);
- 
-             --  a (i) <== a (i)
-             --  a (i+1) <-- a (i-1) - q*a (i)
-             --  x (i+1) <-- x (i-1) - q*x (i)
-             --  y (i+1) <-- y (i-1) - q*y (i)
-             --  x (i) <== x (i)
-             --  y (i) <== y (i)
- 
-             XP  := XT;
-             YP  := YT;
-             GCD := Quo;
-          end if;
-       end Recur;
- 
-    --  Start of processing for Euclid
- 
-    begin
-       Recur (P, Q, 0, 1, XT, YT, GCD);
-       X := XT;
-       Y := YT;
-    end Euclid;
- 
-    function Euclid (P, Q : Int) return Int is
-       X, Y, GCD : Int;
-       pragma Unreferenced (Y, GCD);
-    begin
-       Euclid (P, Q, X, Y, GCD);
-       return X;
-    end Euclid;
- 
-    -----------
-    -- Image --
-    -----------
- 
-    function Image (Of_State : State) return String is
-    begin
-       return Int'Image (Of_State.X1) & ',' & Int'Image (Of_State.X2)
-              & ',' &
-              Int'Image (Of_State.P)  & ',' & Int'Image (Of_State.Q);
-    end Image;
- 
-    ------------
-    -- Random --
-    ------------
- 
-    function Random  (Gen : Generator) return Uniformly_Distributed is
-       Genp : constant Pointer := Gen.Gen_State'Unrestricted_Access;
- 
-    begin
-       Genp.X1 := Square_Mod_N (Genp.X1,  Genp.P);
-       Genp.X2 := Square_Mod_N (Genp.X2,  Genp.Q);
-       return
-         Float ((Flt (((Genp.X2 - Genp.X1) * Genp.X)
-                   mod Genp.Q) * Flt (Genp.P)
-           + Flt (Genp.X1)) * Genp.Scl);
-    end Random;
- 
-    -----------
-    -- Reset --
-    -----------
- 
-    --  Version that works from given initiator value
- 
-    procedure Reset (Gen : Generator; Initiator : Integer) is
-       Genp   : constant Pointer := Gen.Gen_State'Unrestricted_Access;
-       X1, X2 : Int;
- 
-    begin
-       X1 := 2 + Int (Initiator) mod (K1 - 3);
-       X2 := 2 + Int (Initiator) mod (K2 - 3);
- 
-       --  Eliminate effects of small initiators
- 
-       for J in 1 .. 5 loop
-          X1 := Square_Mod_N (X1, K1);
-          X2 := Square_Mod_N (X2, K2);
-       end loop;
- 
-       Genp.all :=
-         (X1  => X1,
-          X2  => X2,
-          P   => K1,
-          Q   => K2,
-          X   => 1,
-          Scl => Scal);
-    end Reset;
- 
-    --  Version that works from specific saved state
- 
-    procedure Reset (Gen : Generator; From_State : State) is
-       Genp : constant Pointer := Gen.Gen_State'Unrestricted_Access;
- 
-    begin
-       Genp.all := From_State;
-    end Reset;
- 
-    --  Version that works from calendar
- 
-    procedure Reset (Gen : Generator) is
-       Genp   : constant Pointer       := Gen.Gen_State'Unrestricted_Access;
-       Now    : constant Calendar.Time := Calendar.Clock;
-       X1, X2 : Int;
- 
-    begin
-       X1 := Int (Calendar.Year  (Now)) * 12 * 31 +
-             Int (Calendar.Month (Now)) * 31 +
-             Int (Calendar.Day   (Now));
- 
-       X2 := Int (Calendar.Seconds (Now) * Duration (1000.0));
- 
-       X1 := 2 + X1 mod (K1 - 3);
-       X2 := 2 + X2 mod (K2 - 3);
- 
-       --  Eliminate visible effects of same day starts
- 
-       for J in 1 .. 5 loop
-          X1 := Square_Mod_N (X1, K1);
-          X2 := Square_Mod_N (X2, K2);
-       end loop;
- 
-       Genp.all :=
-         (X1  => X1,
-          X2  => X2,
-          P   => K1,
-          Q   => K2,
-          X   => 1,
-          Scl => Scal);
- 
-    end Reset;
- 
-    ----------
-    -- Save --
-    ----------
- 
-    procedure Save (Gen : Generator; To_State : out State) is
-    begin
-       To_State := Gen.Gen_State;
-    end Save;
- 
-    ------------------
-    -- Square_Mod_N --
-    ------------------
- 
-    function Square_Mod_N (X, N : Int) return Int is
-       Temp : constant Flt := Flt (X) * Flt (X);
-       Div  : Int;
- 
-    begin
-       Div := Int (Temp / Flt (N));
-       Div := Int (Temp - Flt (Div) * Flt (N));
- 
-       if Div < 0 then
-          return Div + N;
-       else
-          return Div;
-       end if;
-    end Square_Mod_N;
- 
-    -----------
-    -- Value --
-    -----------
- 
-    function Value (Coded_State : String) return State is
-       Last  : constant Natural := Coded_State'Last;
-       Start : Positive := Coded_State'First;
-       Stop  : Positive := Coded_State'First;
-       Outs  : State;
- 
-    begin
-       while Stop <= Last and then Coded_State (Stop) /= ',' loop
-          Stop := Stop + 1;
-       end loop;
- 
-       if Stop > Last then
-          raise Constraint_Error;
-       end if;
- 
-       Outs.X1 := Int'Value (Coded_State (Start .. Stop - 1));
-       Start := Stop + 1;
- 
-       loop
-          Stop := Stop + 1;
-          exit when Stop > Last or else Coded_State (Stop) = ',';
-       end loop;
- 
-       if Stop > Last then
-          raise Constraint_Error;
-       end if;
- 
-       Outs.X2 := Int'Value (Coded_State (Start .. Stop - 1));
-       Start := Stop + 1;
- 
-       loop
-          Stop := Stop + 1;
-          exit when Stop > Last or else Coded_State (Stop) = ',';
-       end loop;
- 
-       if Stop > Last then
-          raise Constraint_Error;
-       end if;
- 
-       Outs.P   := Int'Value (Coded_State (Start .. Stop - 1));
-       Outs.Q   := Int'Value (Coded_State (Stop + 1 .. Last));
-       Outs.X   := Euclid (Outs.P, Outs.Q);
-       Outs.Scl := 1.0 / (Flt (Outs.P) * Flt (Outs.Q));
- 
-       --  Now do *some* sanity checks
- 
-       if Outs.Q < 31 or else Outs.P < 31
-         or else Outs.X1 not in 2 .. Outs.P - 1
-         or else Outs.X2 not in 2 .. Outs.Q - 1
-       then
-          raise Constraint_Error;
-       end if;
- 
-       return Outs;
-    end Value;
- end GNAT.MBBS_Float_Random;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-mbflra.ads gcc-8.1.0/gcc/ada/g-mbflra.ads
*** gcc-7.3.0/gcc/ada/g-mbflra.ads	Tue Jun 22 15:32:18 2010
--- gcc-8.1.0/gcc/ada/g-mbflra.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,103 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --               G N A T . M B B S _ F L O A T _ R A N D O M                --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2010, Free Software Foundation, 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  The implementation used in this package was contributed by
- --  Robert Eachus. It is based on the work of L. Blum, M. Blum, and
- --  M. Shub, SIAM Journal of Computing, Vol 15. No 2, May 1986. The
- --  particular choices for P and Q chosen here guarantee a period of
- --  562,085,314,430,582 (about 2**49), and the generated sequence has
- --  excellent randomness properties. For further details, see the
- --  paper "Fast Generation of Trustworthy Random Numbers", by Robert
- --  Eachus, which describes both the algorithm and the efficient
- --  implementation approach used here.
- 
- --  Formerly, this package was Ada.Numerics.Float_Random. It is retained
- --  here in part to allow users to reconstruct number sequences generated
- --  by previous versions.
- 
- with Interfaces;
- 
- package GNAT.MBBS_Float_Random is
- 
-    --  Basic facilities
- 
-    type Generator is limited private;
- 
-    subtype Uniformly_Distributed is Float range 0.0 .. 1.0;
- 
-    function Random (Gen : Generator) return Uniformly_Distributed;
- 
-    procedure Reset (Gen : Generator);
-    procedure Reset (Gen : Generator; Initiator : Integer);
- 
-    --  Advanced facilities
- 
-    type State is private;
- 
-    procedure Save  (Gen : Generator; To_State   : out State);
-    procedure Reset (Gen : Generator; From_State : State);
- 
-    Max_Image_Width : constant := 80;
- 
-    function Image (Of_State    : State)  return String;
-    function Value (Coded_State : String) return State;
- 
- private
-    type Int is new Interfaces.Integer_32;
- 
-    --  We prefer to use 14 digits for Flt, but some targets are more limited
- 
-    type Flt is digits Positive'Min (14, Long_Long_Float'Digits);
- 
-    K1   : constant := 94_833_359;
-    K1F  : constant := 94_833_359.0;
-    K2   : constant := 47_416_679;
-    K2F  : constant := 47_416_679.0;
-    Scal : constant := 1.0 / (K1F * K2F);
- 
-    type State is record
-       X1  : Int := 2999 ** 2;      --  Square mod p
-       X2  : Int := 1439 ** 2;      --  Square mod q
-       P   : Int := K1;
-       Q   : Int := K2;
-       X   : Int := 1;
-       Scl : Flt := Scal;
-    end record;
- 
-    type Generator is limited record
-       Gen_State : State;
-    end record;
- 
- end GNAT.MBBS_Float_Random;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-md5.adb gcc-8.1.0/gcc/ada/g-md5.adb
*** gcc-7.3.0/gcc/ada/g-md5.adb	Fri Jan  4 12:49:55 2013
--- gcc-8.1.0/gcc/ada/g-md5.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,36 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                             G N A T . M D 5                              --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --           Copyright (C) 2009-2011, Free Software Foundation, Inc.        --
- --                                                                          --
- -- GNAT is 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 does not require a body, since it is a package renaming. We
- --  provide a dummy file containing a No_Body pragma so that previous versions
- --  of the body (which did exist) will not interfere.
- 
- pragma No_Body;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-md5.ads gcc-8.1.0/gcc/ada/g-md5.ads
*** gcc-7.3.0/gcc/ada/g-md5.ads	Fri Jan  4 12:49:55 2013
--- gcc-8.1.0/gcc/ada/g-md5.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,49 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                             G N A T . M D 5                              --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --           Copyright (C) 2009-2011, Free Software Foundation, Inc.        --
- --                                                                          --
- -- GNAT is 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 implements the MD5 Message-Digest Algorithm as described in
- --  RFC 1321. The complete text of RFC 1321 can be found at:
- --          http://www.ietf.org/rfc/rfc1321.txt
- 
- --  See the declaration of GNAT.Secure_Hashes.H in g-sechas.ads for complete
- --  documentation.
- 
- with GNAT.Secure_Hashes.MD5;
- with System;
- 
- package GNAT.MD5 is new GNAT.Secure_Hashes.H
-   (Block_Words    => GNAT.Secure_Hashes.MD5.Block_Words,
-    State_Words    => 4,
-    Hash_Words     => 4,
-    Hash_Bit_Order => System.Low_Order_First,
-    Hash_State     => GNAT.Secure_Hashes.MD5.Hash_State,
-    Initial_State  => GNAT.Secure_Hashes.MD5.Initial_State,
-    Transform      => GNAT.Secure_Hashes.MD5.Transform);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-memdum.adb gcc-8.1.0/gcc/ada/g-memdum.adb
*** gcc-7.3.0/gcc/ada/g-memdum.adb	Fri Jan 13 10:19:19 2017
--- gcc-8.1.0/gcc/ada/g-memdum.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,179 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                     G N A T . M E M O R Y _ D U M P                      --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 2003-2016, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 System;                  use System;
- with System.Img_BIU;          use System.Img_BIU;
- with System.Storage_Elements; use System.Storage_Elements;
- 
- with GNAT.IO;              use GNAT.IO;
- with GNAT.Debug_Utilities; use GNAT.Debug_Utilities;
- 
- with Ada.Unchecked_Conversion;
- 
- package body GNAT.Memory_Dump is
- 
-    ----------
-    -- Dump --
-    ----------
- 
-    procedure Dump
-      (Addr   : Address;
-       Count  : Natural)
-    is
-    begin
-       Dump (Addr, Count, Prefix => Absolute_Address);
-    end Dump;
- 
-    procedure Dump
-      (Addr   : Address;
-       Count  : Natural;
-       Prefix : Prefix_Type)
-    is
-       Ctr : Natural := Count;
-       --  Count of bytes left to output
- 
-       Offset_Buf  : String (1 .. Standard'Address_Size / 4 + 4);
-       Offset_Last : Natural;
-       --  Buffer for prefix in Offset mode
- 
-       Adr : Address := Addr;
-       --  Current address
- 
-       N : Natural := 0;
-       --  Number of bytes output on current line
- 
-       C : Character;
-       --  Character at current storage address
- 
-       AIL : Natural;
-       --  Number of chars in prefix (including colon and space)
- 
-       Line_Len : Natural;
-       --  Line length for entire line
- 
-       Hex : constant array (0 .. 15) of Character := "0123456789ABCDEF";
- 
-       type Char_Ptr is access all Character;
- 
-       function To_Char_Ptr is new Ada.Unchecked_Conversion (Address, Char_Ptr);
- 
-    begin
-       case Prefix is
-          when Absolute_Address =>
-             AIL := Address_Image_Length - 4 + 2;
- 
-          when Offset =>
-             Offset_Last := Offset_Buf'First - 1;
-             Set_Image_Based_Integer (Ctr, 16, 0, Offset_Buf, Offset_Last);
-             AIL := Offset_Last - 4 + 2;
- 
-          when None =>
-             AIL := 0;
-       end case;
- 
-       Line_Len := AIL + 3 * 16 + 2 + 16;
- 
-       declare
-          Line_Buf : String (1 .. Line_Len);
- 
-       begin
-          while Ctr /= 0 loop
- 
-             --  Start of line processing
- 
-             if N = 0 then
-                case Prefix is
-                   when Absolute_Address =>
-                      declare
-                         S : constant String := Image (Adr);
-                      begin
-                         Line_Buf (1 .. AIL) := S (4 .. S'Length - 1) & ": ";
-                      end;
- 
-                   when Offset =>
-                      declare
-                         Last : Natural := 0;
-                         Len  : Natural;
- 
-                      begin
-                         Set_Image_Based_Integer
-                           (Count - Ctr, 16, 0, Offset_Buf, Last);
-                         Len := Last - 4;
- 
-                         Line_Buf (1 .. AIL - Len - 2) := (others => '0');
-                         Line_Buf (AIL - Len - 1 .. AIL - 2) :=
-                           Offset_Buf (4 .. Last - 1);
-                         Line_Buf (AIL - 1 .. AIL) := ": ";
-                      end;
- 
-                   when None =>
-                      null;
-                end case;
- 
-                Line_Buf (AIL + 1 .. Line_Buf'Last) := (others => ' ');
-                Line_Buf (AIL + 3 * 16 + 1) := '"';
-             end if;
- 
-             --  Add one character to current line
- 
-             C := To_Char_Ptr (Adr).all;
-             Adr := Adr + 1;
-             Ctr := Ctr - 1;
- 
-             Line_Buf (AIL + 3 * N + 1) := Hex (Character'Pos (C) / 16);
-             Line_Buf (AIL + 3 * N + 2) := Hex (Character'Pos (C) mod 16);
- 
-             if C < ' ' or else C = Character'Val (16#7F#) then
-                C := '?';
-             end if;
- 
-             Line_Buf (AIL + 3 * 16 + 2 + N) := C;
-             N := N + 1;
- 
-             --  End of line processing
- 
-             if N = 16 then
-                Line_Buf (Line_Buf'Last) := '"';
-                GNAT.IO.Put_Line (Line_Buf);
-                N := 0;
-             end if;
-          end loop;
- 
-          --  Deal with possible last partial line
- 
-          if N /= 0 then
-             Line_Buf (AIL + 3 * 16 + 2 + N) := '"';
-             GNAT.IO.Put_Line (Line_Buf (1 .. AIL + 3 * 16 + 2 + N));
-          end if;
-       end;
-    end Dump;
- 
- end GNAT.Memory_Dump;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-memdum.ads gcc-8.1.0/gcc/ada/g-memdum.ads
*** gcc-7.3.0/gcc/ada/g-memdum.ads	Fri Jul 18 10:06:00 2014
--- gcc-8.1.0/gcc/ada/g-memdum.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,77 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                     G N A T . M E M O R Y _ D U M P                      --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 2003-2014, AdaCore                     --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  A routine for dumping memory to either standard output or standard error.
- --  Uses GNAT.IO for actual output (use the controls in GNAT.IO to specify
- --  the destination of the output, which by default is Standard_Output).
- 
- with System;
- 
- package GNAT.Memory_Dump is
-    pragma Preelaborate;
- 
-    type Prefix_Type is (Absolute_Address, Offset, None);
- 
-    procedure Dump
-      (Addr   : System.Address;
-       Count  : Natural);
-    --  Dumps indicated number (Count) of bytes, starting at the address given
-    --  by Addr. The coding of this routine in its current form assumes the case
-    --  of a byte addressable machine (and is therefore inapplicable to machines
-    --  like the AAMP, where the storage unit is not 8 bits). The output is one
-    --  or more lines in the following format, which is for the case of 32-bit
-    --  addresses (64-bit addresses are handled appropriately):
-    --
-    --    0234_3368: 66 67 68 . . .  73 74 75 "fghijklmnopqstuv"
-    --
-    --  All but the last line have 16 bytes. A question mark is used in the
-    --  string data to indicate a non-printable character.
- 
-    procedure Dump
-      (Addr   : System.Address;
-       Count  : Natural;
-       Prefix : Prefix_Type);
-    --  Same as above, but allows the selection of different line formats.
-    --  If Prefix is set to Absolute_Address, the output is identical to the
-    --  above version, each line starting with the absolute address of the
-    --  first dumped storage element.
-    --
-    --  If Prefix is set to Offset, then instead each line starts with the
-    --  indication of the offset relative to Addr:
-    --
-    --    00: 66 67 68 . . .  73 74 75 "fghijklmnopqstuv"
-    --
-    --  Finally if Prefix is set to None, the prefix is suppressed altogether,
-    --  and only the memory contents are displayed:
-    --
-    --    66 67 68 . . .  73 74 75 "fghijklmnopqstuv"
- 
- end GNAT.Memory_Dump;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-moreex.adb gcc-8.1.0/gcc/ada/g-moreex.adb
*** gcc-7.3.0/gcc/ada/g-moreex.adb	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-moreex.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,85 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --            G N A T . M O S T _ R E C E N T _ E X C E P T I O N           --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 2000-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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.Exceptions.Is_Null_Occurrence;
- with System.Soft_Links;
- 
- package body GNAT.Most_Recent_Exception is
- 
-    ----------------
-    -- Occurrence --
-    ----------------
- 
-    function Occurrence return Ada.Exceptions.Exception_Occurrence is
-       EOA : constant Ada.Exceptions.Exception_Occurrence_Access :=
-               GNAT.Most_Recent_Exception.Occurrence_Access;
- 
-       use type Ada.Exceptions.Exception_Occurrence_Access;
- 
-    begin
-       return Result : Ada.Exceptions.Exception_Occurrence do
-          if EOA = null then
-             Ada.Exceptions.Save_Occurrence
-               (Target => Result,
-                Source => Ada.Exceptions.Null_Occurrence);
-          else
-             Ada.Exceptions.Save_Occurrence
-               (Target => Result,
-                Source => EOA.all);
-          end if;
-       end return;
-    end Occurrence;
- 
-    -----------------------
-    -- Occurrence_Access --
-    -----------------------
- 
-    function Occurrence_Access
-      return Ada.Exceptions.Exception_Occurrence_Access
-    is
-       use Ada.Exceptions;
- 
-       EOA : constant Exception_Occurrence_Access :=
-               System.Soft_Links.Get_Current_Excep.all;
- 
-    begin
-       if EOA = null then
-          return null;
- 
-       elsif Is_Null_Occurrence (EOA.all) then
-          return null;
- 
-       else
-          return EOA;
-       end if;
-    end Occurrence_Access;
- 
- end GNAT.Most_Recent_Exception;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-moreex.ads gcc-8.1.0/gcc/ada/g-moreex.ads
*** gcc-7.3.0/gcc/ada/g-moreex.ads	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-moreex.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,74 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --            G N A T . M O S T _ R E C E N T _ E X C E P T I O N           --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 2000-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 routines for accessing the most recently raised
- --  exception. This may be useful for certain logging activities. It may
- --  also be useful for mimicking implementation dependent capabilities in
- --  Ada 83 compilers, but see also GNAT.Current_Exceptions for this usage.
- 
- with Ada.Exceptions;
- package GNAT.Most_Recent_Exception is
- 
-    -----------------
-    -- Subprograms --
-    -----------------
- 
-    function Occurrence
-      return Ada.Exceptions.Exception_Occurrence;
-    --  Returns the Exception_Occurrence for the most recently raised exception
-    --  in the current task. If no exception has been raised in the current task
-    --  prior to the call, returns Null_Occurrence.
- 
-    function Occurrence_Access
-      return Ada.Exceptions.Exception_Occurrence_Access;
-    --  Similar to the above, but returns an access to the occurrence value.
-    --  This value is in a task specific location, and may be validly accessed
-    --  as long as no further exception is raised in the calling task.
- 
-    --  Note: unlike the routines in GNAT.Current_Exception, these functions
-    --  access the most recently raised exception, regardless of where they
-    --  are called. Consider the following example:
- 
-    --     exception
-    --        when Constraint_Error =>
-    --          begin
-    --             ...
-    --          exception
-    --             when Tasking_Error => ...
-    --          end;
-    --
-    --          --  Assuming a Tasking_Error was raised in the inner block,
-    --          --  a call to GNAT.Most_Recent_Exception.Occurrence will
-    --          --  return information about this Tasking_Error exception,
-    --          --  not about the Constraint_Error exception being handled
-    --          --  by the current handler code.
- 
- end GNAT.Most_Recent_Exception;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-os_lib.adb gcc-8.1.0/gcc/ada/g-os_lib.adb
*** gcc-7.3.0/gcc/ada/g-os_lib.adb	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-os_lib.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,36 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                          G N A T . O S _ L I B                           --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 1995-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 does not require a body, since it is a package renaming. We
- --  provide a dummy file containing a No_Body pragma so that previous versions
- --  of the body (which did exist) will not interfere.
- 
- pragma No_Body;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-os_lib.ads gcc-8.1.0/gcc/ada/g-os_lib.ads
*** gcc-7.3.0/gcc/ada/g-os_lib.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/g-os_lib.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,51 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                          G N A T . O S _ L I B                           --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1995-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- --
- -- 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Operating system interface facilities
- 
- --  This package contains types and procedures for interfacing to the
- --  underlying OS. It is used by the GNAT compiler and by tools associated
- --  with the GNAT compiler, and therefore works for the various operating
- --  systems to which GNAT has been ported. This package will undoubtedly grow
- --  as new services are needed by various tools.
- 
- --  This package tends to use fairly low-level Ada in order to not bring in
- --  large portions of the RTL. For example, functions return access to string
- --  as part of avoiding functions returning unconstrained types.
- 
- --  Except where specifically noted, these routines are portable across all
- --  GNAT implementations on all supported operating systems.
- 
- --  See file s-os_lib.ads for full documentation of the interface
- 
- with System.OS_Lib;
- 
- package GNAT.OS_Lib renames System.OS_Lib;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-pehage.adb gcc-8.1.0/gcc/ada/g-pehage.adb
*** gcc-7.3.0/gcc/ada/g-pehage.adb	Fri Jan 13 10:19:19 2017
--- gcc-8.1.0/gcc/ada/g-pehage.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,2600 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --        G N A T . P E R F E C T _ H A S H _ G E N E R A T O R S           --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 2002-2016, AdaCore                     --
- --                                                                          --
- -- GNAT is 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.IO_Exceptions;       use Ada.IO_Exceptions;
- with Ada.Characters.Handling; use Ada.Characters.Handling;
- with Ada.Directories;
- 
- with GNAT.Heap_Sort_G;
- with GNAT.OS_Lib;      use GNAT.OS_Lib;
- with GNAT.Table;
- 
- package body GNAT.Perfect_Hash_Generators is
- 
-    --  We are using the algorithm of J. Czech as described in Zbigniew J.
-    --  Czech, George Havas, and Bohdan S. Majewski ``An Optimal Algorithm for
-    --  Generating Minimal Perfect Hash Functions'', Information Processing
-    --  Letters, 43(1992) pp.257-264, Oct.1992
- 
-    --  This minimal perfect hash function generator is based on random graphs
-    --  and produces a hash function of the form:
- 
-    --             h (w) = (g (f1 (w)) + g (f2 (w))) mod m
- 
-    --  where f1 and f2 are functions that map strings into integers, and g is
-    --  a function that maps integers into [0, m-1]. h can be order preserving.
-    --  For instance, let W = {w_0, ..., w_i, ..., w_m-1}, h can be defined
-    --  such that h (w_i) = i.
- 
-    --  This algorithm defines two possible constructions of f1 and f2. Method
-    --  b) stores the hash function in less memory space at the expense of
-    --  greater CPU time.
- 
-    --  a) fk (w) = sum (for i in 1 .. length (w)) (Tk (i, w (i))) mod n
- 
-    --     size (Tk) = max (for w in W) (length (w)) * size (used char set)
- 
-    --  b) fk (w) = sum (for i in 1 .. length (w)) (Tk (i) * w (i)) mod n
- 
-    --     size (Tk) = max (for w in W) (length (w)) but the table lookups are
-    --     replaced by multiplications.
- 
-    --  where Tk values are randomly generated. n is defined later on but the
-    --  algorithm recommends to use a value a little bit greater than 2m. Note
-    --  that for large values of m, the main memory space requirements comes
-    --  from the memory space for storing function g (>= 2m entries).
- 
-    --  Random graphs are frequently used to solve difficult problems that do
-    --  not have polynomial solutions. This algorithm is based on a weighted
-    --  undirected graph. It comprises two steps: mapping and assignment.
- 
-    --  In the mapping step, a graph G = (V, E) is constructed, where = {0, 1,
-    --  ..., n-1} and E = {(for w in W) (f1 (w), f2 (w))}. In order for the
-    --  assignment step to be successful, G has to be acyclic. To have a high
-    --  probability of generating an acyclic graph, n >= 2m. If it is not
-    --  acyclic, Tk have to be regenerated.
- 
-    --  In the assignment step, the algorithm builds function g. As G is
-    --  acyclic, there is a vertex v1 with only one neighbor v2. Let w_i be
-    --  the word such that v1 = f1 (w_i) and v2 = f2 (w_i). Let g (v1) = 0 by
-    --  construction and g (v2) = (i - g (v1)) mod n (or h (i) - g (v1) mod n).
-    --  If word w_j is such that v2 = f1 (w_j) and v3 = f2 (w_j), g (v3) = (j -
-    --  g (v2)) mod (or to be general, (h (j) - g (v2)) mod n). If w_i has no
-    --  neighbor, then another vertex is selected. The algorithm traverses G to
-    --  assign values to all the vertices. It cannot assign a value to an
-    --  already assigned vertex as G is acyclic.
- 
-    subtype Word_Id   is Integer;
-    subtype Key_Id    is Integer;
-    subtype Vertex_Id is Integer;
-    subtype Edge_Id   is Integer;
-    subtype Table_Id  is Integer;
- 
-    No_Vertex : constant Vertex_Id := -1;
-    No_Edge   : constant Edge_Id   := -1;
-    No_Table  : constant Table_Id  := -1;
- 
-    type Word_Type is new String_Access;
-    procedure Free_Word (W : in out Word_Type) renames Free;
-    function New_Word (S : String) return Word_Type;
- 
-    procedure Resize_Word (W : in out Word_Type; Len : Natural);
-    --  Resize string W to have a length Len
- 
-    type Key_Type is record
-       Edge : Edge_Id;
-    end record;
-    --  A key corresponds to an edge in the algorithm graph
- 
-    type Vertex_Type is record
-       First : Edge_Id;
-       Last  : Edge_Id;
-    end record;
-    --  A vertex can be involved in several edges. First and Last are the bounds
-    --  of an array of edges stored in a global edge table.
- 
-    type Edge_Type is record
-       X   : Vertex_Id;
-       Y   : Vertex_Id;
-       Key : Key_Id;
-    end record;
-    --  An edge is a peer of vertices. In the algorithm, a key is associated to
-    --  an edge.
- 
-    package WT is new GNAT.Table (Word_Type, Word_Id, 0, 32, 32);
-    package IT is new GNAT.Table (Integer, Integer, 0, 32, 32);
-    --  The two main tables. WT is used to store the words in their initial
-    --  version and in their reduced version (that is words reduced to their
-    --  significant characters). As an instance of GNAT.Table, WT does not
-    --  initialize string pointers to null. This initialization has to be done
-    --  manually when the table is allocated. IT is used to store several
-    --  tables of components containing only integers.
- 
-    function Image (Int : Integer; W : Natural := 0) return String;
-    function Image (Str : String;  W : Natural := 0) return String;
-    --  Return a string which includes string Str or integer Int preceded by
-    --  leading spaces if required by width W.
- 
-    function Trim_Trailing_Nuls (Str : String) return String;
-    --  Return Str with trailing NUL characters removed
- 
-    Output : File_Descriptor renames GNAT.OS_Lib.Standout;
-    --  Shortcuts
- 
-    EOL : constant Character := ASCII.LF;
- 
-    Max  : constant := 78;
-    Last : Natural  := 0;
-    Line : String (1 .. Max);
-    --  Use this line to provide buffered IO
- 
-    procedure Add (C : Character);
-    procedure Add (S : String);
-    --  Add a character or a string in Line and update Last
- 
-    procedure Put
-      (F  : File_Descriptor;
-       S  : String;
-       F1 : Natural;
-       L1 : Natural;
-       C1 : Natural;
-       F2 : Natural;
-       L2 : Natural;
-       C2 : Natural);
-    --  Write string S into file F as a element of an array of one or two
-    --  dimensions. Fk (resp. Lk and Ck) indicates the first (resp last and
-    --  current) index in the k-th dimension. If F1 = L1 the array is considered
-    --  as a one dimension array. This dimension is described by F2 and L2. This
-    --  routine takes care of all the parenthesis, spaces and commas needed to
-    --  format correctly the array. Moreover, the array is well indented and is
-    --  wrapped to fit in a 80 col line. When the line is full, the routine
-    --  writes it into file F. When the array is completed, the routine adds
-    --  semi-colon and writes the line into file F.
- 
-    procedure New_Line (File : File_Descriptor);
-    --  Simulate Ada.Text_IO.New_Line with GNAT.OS_Lib
- 
-    procedure Put (File : File_Descriptor; Str : String);
-    --  Simulate Ada.Text_IO.Put with GNAT.OS_Lib
- 
-    procedure Put_Used_Char_Set (File : File_Descriptor; Title : String);
-    --  Output a title and a used character set
- 
-    procedure Put_Int_Vector
-      (File   : File_Descriptor;
-       Title  : String;
-       Vector : Integer;
-       Length : Natural);
-    --  Output a title and a vector
- 
-    procedure Put_Int_Matrix
-      (File  : File_Descriptor;
-       Title : String;
-       Table : Table_Id;
-       Len_1 : Natural;
-       Len_2 : Natural);
-    --  Output a title and a matrix. When the matrix has only one non-empty
-    --  dimension (Len_2 = 0), output a vector.
- 
-    procedure Put_Edges (File : File_Descriptor; Title : String);
-    --  Output a title and an edge table
- 
-    procedure Put_Initial_Keys (File : File_Descriptor; Title : String);
-    --  Output a title and a key table
- 
-    procedure Put_Reduced_Keys (File : File_Descriptor; Title : String);
-    --  Output a title and a key table
- 
-    procedure Put_Vertex_Table (File : File_Descriptor; Title : String);
-    --  Output a title and a vertex table
- 
-    function Ada_File_Base_Name (Pkg_Name : String) return String;
-    --  Return the base file name (i.e. without .ads/.adb extension) for an
-    --  Ada source file containing the named package, using the standard GNAT
-    --  file-naming convention. For example, if Pkg_Name is "Parent.Child", we
-    --  return "parent-child".
- 
-    ----------------------------------
-    -- Character Position Selection --
-    ----------------------------------
- 
-    --  We reduce the maximum key size by selecting representative positions
-    --  in these keys. We build a matrix with one word per line. We fill the
-    --  remaining space of a line with ASCII.NUL. The heuristic selects the
-    --  position that induces the minimum number of collisions. If there are
-    --  collisions, select another position on the reduced key set responsible
-    --  of the collisions. Apply the heuristic until there is no more collision.
- 
-    procedure Apply_Position_Selection;
-    --  Apply Position selection and build the reduced key table
- 
-    procedure Parse_Position_Selection (Argument : String);
-    --  Parse Argument and compute the position set. Argument is list of
-    --  substrings separated by commas. Each substring represents a position
-    --  or a range of positions (like x-y).
- 
-    procedure Select_Character_Set;
-    --  Define an optimized used character set like Character'Pos in order not
-    --  to allocate tables of 256 entries.
- 
-    procedure Select_Char_Position;
-    --  Find a min char position set in order to reduce the max key length. The
-    --  heuristic selects the position that induces the minimum number of
-    --  collisions. If there are collisions, select another position on the
-    --  reduced key set responsible of the collisions. Apply the heuristic until
-    --  there is no collision.
- 
-    -----------------------------
-    -- Random Graph Generation --
-    -----------------------------
- 
-    procedure Random (Seed : in out Natural);
-    --  Simulate Ada.Discrete_Numerics.Random
- 
-    procedure Generate_Mapping_Table
-      (Tab  : Table_Id;
-       L1   : Natural;
-       L2   : Natural;
-       Seed : in out Natural);
-    --  Random generation of the tables below. T is already allocated
- 
-    procedure Generate_Mapping_Tables
-      (Opt  : Optimization;
-       Seed : in out Natural);
-    --  Generate the mapping tables T1 and T2. They are used to define fk (w) =
-    --  sum (for i in 1 .. length (w)) (Tk (i, w (i))) mod n. Keys, NK and Chars
-    --  are used to compute the matrix size.
- 
-    ---------------------------
-    -- Algorithm Computation --
-    ---------------------------
- 
-    procedure Compute_Edges_And_Vertices (Opt : Optimization);
-    --  Compute the edge and vertex tables. These are empty when a self loop is
-    --  detected (f1 (w) = f2 (w)). The edge table is sorted by X value and then
-    --  Y value. Keys is the key table and NK the number of keys. Chars is the
-    --  set of characters really used in Keys. NV is the number of vertices
-    --  recommended by the algorithm. T1 and T2 are the mapping tables needed to
-    --  compute f1 (w) and f2 (w).
- 
-    function Acyclic return Boolean;
-    --  Return True when the graph is acyclic. Vertices is the current vertex
-    --  table and Edges the current edge table.
- 
-    procedure Assign_Values_To_Vertices;
-    --  Execute the assignment step of the algorithm. Keys is the current key
-    --  table. Vertices and Edges represent the random graph. G is the result of
-    --  the assignment step such that:
-    --    h (w) = (g (f1 (w)) + g (f2 (w))) mod m
- 
-    function Sum
-      (Word  : Word_Type;
-       Table : Table_Id;
-       Opt   : Optimization) return Natural;
-    --  For an optimization of CPU_Time return
-    --    fk (w) = sum (for i in 1 .. length (w)) (Tk (i, w (i))) mod n
-    --  For an optimization of Memory_Space return
-    --    fk (w) = sum (for i in 1 .. length (w)) (Tk (i) * w (i)) mod n
-    --  Here NV = n
- 
-    -------------------------------
-    -- Internal Table Management --
-    -------------------------------
- 
-    function Allocate (N : Natural; S : Natural := 1) return Table_Id;
-    --  Allocate N * S ints from IT table
- 
-    ----------
-    -- Keys --
-    ----------
- 
-    Keys : Table_Id := No_Table;
-    NK   : Natural  := 0;
-    --  NK : Number of Keys
- 
-    function Initial (K : Key_Id) return Word_Id;
-    pragma Inline (Initial);
- 
-    function Reduced (K : Key_Id) return Word_Id;
-    pragma Inline (Reduced);
- 
-    function  Get_Key (N : Key_Id) return Key_Type;
-    procedure Set_Key (N : Key_Id; Item : Key_Type);
-    --  Get or Set Nth element of Keys table
- 
-    ------------------
-    -- Char_Pos_Set --
-    ------------------
- 
-    Char_Pos_Set     : Table_Id := No_Table;
-    Char_Pos_Set_Len : Natural;
-    --  Character Selected Position Set
- 
-    function  Get_Char_Pos (P : Natural) return Natural;
-    procedure Set_Char_Pos (P : Natural; Item : Natural);
-    --  Get or Set the string position of the Pth selected character
- 
-    -------------------
-    -- Used_Char_Set --
-    -------------------
- 
-    Used_Char_Set     : Table_Id := No_Table;
-    Used_Char_Set_Len : Natural;
-    --  Used Character Set : Define a new character mapping. When all the
-    --  characters are not present in the keys, in order to reduce the size
-    --  of some tables, we redefine the character mapping.
- 
-    function  Get_Used_Char (C : Character) return Natural;
-    procedure Set_Used_Char (C : Character; Item : Natural);
- 
-    ------------
-    -- Tables --
-    ------------
- 
-    T1     : Table_Id := No_Table;
-    T2     : Table_Id := No_Table;
-    T1_Len : Natural;
-    T2_Len : Natural;
-    --  T1  : Values table to compute F1
-    --  T2  : Values table to compute F2
- 
-    function  Get_Table (T : Integer; X, Y : Natural) return Natural;
-    procedure Set_Table (T : Integer; X, Y : Natural; Item : Natural);
- 
-    -----------
-    -- Graph --
-    -----------
- 
-    G     : Table_Id := No_Table;
-    G_Len : Natural;
-    --  Values table to compute G
- 
-    NT : Natural := Default_Tries;
-    --  Number of tries running the algorithm before raising an error
- 
-    function  Get_Graph (N : Natural) return Integer;
-    procedure Set_Graph (N : Natural; Item : Integer);
-    --  Get or Set Nth element of graph
- 
-    -----------
-    -- Edges --
-    -----------
- 
-    Edge_Size : constant := 3;
-    Edges     : Table_Id := No_Table;
-    Edges_Len : Natural;
-    --  Edges  : Edge table of the random graph G
- 
-    function  Get_Edges (F : Natural) return Edge_Type;
-    procedure Set_Edges (F : Natural; Item : Edge_Type);
- 
-    --------------
-    -- Vertices --
-    --------------
- 
-    Vertex_Size : constant := 2;
- 
-    Vertices : Table_Id := No_Table;
-    --  Vertex table of the random graph G
- 
-    NV : Natural;
-    --  Number of Vertices
- 
-    function  Get_Vertices (F : Natural) return Vertex_Type;
-    procedure Set_Vertices (F : Natural; Item : Vertex_Type);
-    --  Comments needed ???
- 
-    K2V : Float;
-    --  Ratio between Keys and Vertices (parameter of Czech's algorithm)
- 
-    Opt : Optimization;
-    --  Optimization mode (memory vs CPU)
- 
-    Max_Key_Len : Natural := 0;
-    Min_Key_Len : Natural := 0;
-    --  Maximum and minimum of all the word length
- 
-    S : Natural;
-    --  Seed
- 
-    function Type_Size (L : Natural) return Natural;
-    --  Given the last L of an unsigned integer type T, return its size
- 
-    -------------
-    -- Acyclic --
-    -------------
- 
-    function Acyclic return Boolean is
-       Marks : array (0 .. NV - 1) of Vertex_Id := (others => No_Vertex);
- 
-       function Traverse (Edge : Edge_Id; Mark : Vertex_Id) return Boolean;
-       --  Propagate Mark from X to Y. X is already marked. Mark Y and propagate
-       --  it to the edges of Y except the one representing the same key. Return
-       --  False when Y is marked with Mark.
- 
-       --------------
-       -- Traverse --
-       --------------
- 
-       function Traverse (Edge : Edge_Id; Mark : Vertex_Id) return Boolean is
-          E : constant Edge_Type := Get_Edges (Edge);
-          K : constant Key_Id    := E.Key;
-          Y : constant Vertex_Id := E.Y;
-          M : constant Vertex_Id := Marks (E.Y);
-          V : Vertex_Type;
- 
-       begin
-          if M = Mark then
-             return False;
- 
-          elsif M = No_Vertex then
-             Marks (Y) := Mark;
-             V := Get_Vertices (Y);
- 
-             for J in V.First .. V.Last loop
- 
-                --  Do not propagate to the edge representing the same key
- 
-                if Get_Edges (J).Key /= K
-                  and then not Traverse (J, Mark)
-                then
-                   return False;
-                end if;
-             end loop;
-          end if;
- 
-          return True;
-       end Traverse;
- 
-       Edge  : Edge_Type;
- 
-    --  Start of processing for Acyclic
- 
-    begin
-       --  Edges valid range is
- 
-       for J in 1 .. Edges_Len - 1 loop
- 
-          Edge := Get_Edges (J);
- 
-          --  Mark X of E when it has not been already done
- 
-          if Marks (Edge.X) = No_Vertex then
-             Marks (Edge.X) := Edge.X;
-          end if;
- 
-          --  Traverse E when this has not already been done
- 
-          if Marks (Edge.Y) = No_Vertex
-            and then not Traverse (J, Edge.X)
-          then
-             return False;
-          end if;
-       end loop;
- 
-       return True;
-    end Acyclic;
- 
-    ------------------------
-    -- Ada_File_Base_Name --
-    ------------------------
- 
-    function Ada_File_Base_Name (Pkg_Name : String) return String is
-    begin
-       --  Convert to lower case, then replace '.' with '-'
- 
-       return Result : String := To_Lower (Pkg_Name) do
-          for J in Result'Range loop
-             if Result (J) = '.' then
-                Result (J) := '-';
-             end if;
-          end loop;
-       end return;
-    end Ada_File_Base_Name;
- 
-    ---------
-    -- Add --
-    ---------
- 
-    procedure Add (C : Character) is
-       pragma Assert (C /= ASCII.NUL);
-    begin
-       Line (Last + 1) := C;
-       Last := Last + 1;
-    end Add;
- 
-    ---------
-    -- Add --
-    ---------
- 
-    procedure Add (S : String) is
-       Len : constant Natural := S'Length;
-    begin
-       for J in S'Range loop
-          pragma Assert (S (J) /= ASCII.NUL);
-          null;
-       end loop;
- 
-       Line (Last + 1 .. Last + Len) := S;
-       Last := Last + Len;
-    end Add;
- 
-    --------------
-    -- Allocate --
-    --------------
- 
-    function Allocate (N : Natural; S : Natural := 1) return Table_Id is
-       L : constant Integer := IT.Last;
-    begin
-       IT.Set_Last (L + N * S);
- 
-       --  Initialize, so debugging printouts don't trip over uninitialized
-       --  components.
- 
-       for J in L + 1 .. IT.Last loop
-          IT.Table (J) := -1;
-       end loop;
- 
-       return L + 1;
-    end Allocate;
- 
-    ------------------------------
-    -- Apply_Position_Selection --
-    ------------------------------
- 
-    procedure Apply_Position_Selection is
-    begin
-       for J in 0 .. NK - 1 loop
-          declare
-             IW : constant String := WT.Table (Initial (J)).all;
-             RW : String (1 .. IW'Length) := (others => ASCII.NUL);
-             N  : Natural := IW'First - 1;
- 
-          begin
-             --  Select the characters of Word included in the position
-             --  selection.
- 
-             for C in 0 .. Char_Pos_Set_Len - 1 loop
-                exit when IW (Get_Char_Pos (C)) = ASCII.NUL;
-                N := N + 1;
-                RW (N) := IW (Get_Char_Pos (C));
-             end loop;
- 
-             --  Build the new table with the reduced word. Be careful
-             --  to deallocate the old version to avoid memory leaks.
- 
-             Free_Word (WT.Table (Reduced (J)));
-             WT.Table (Reduced (J)) := New_Word (RW);
-             Set_Key (J, (Edge => No_Edge));
-          end;
-       end loop;
-    end Apply_Position_Selection;
- 
-    -------------------------------
-    -- Assign_Values_To_Vertices --
-    -------------------------------
- 
-    procedure Assign_Values_To_Vertices is
-       X : Vertex_Id;
- 
-       procedure Assign (X : Vertex_Id);
-       --  Execute assignment on X's neighbors except the vertex that we are
-       --  coming from which is already assigned.
- 
-       ------------
-       -- Assign --
-       ------------
- 
-       procedure Assign (X : Vertex_Id) is
-          E : Edge_Type;
-          V : constant Vertex_Type := Get_Vertices (X);
- 
-       begin
-          for J in V.First .. V.Last loop
-             E := Get_Edges (J);
- 
-             if Get_Graph (E.Y) = -1 then
-                Set_Graph (E.Y, (E.Key - Get_Graph (X)) mod NK);
-                Assign (E.Y);
-             end if;
-          end loop;
-       end Assign;
- 
-    --  Start of processing for Assign_Values_To_Vertices
- 
-    begin
-       --  Value -1 denotes an uninitialized value as it is supposed to
-       --  be in the range 0 .. NK.
- 
-       if G = No_Table then
-          G_Len := NV;
-          G := Allocate (G_Len, 1);
-       end if;
- 
-       for J in 0 .. G_Len - 1 loop
-          Set_Graph (J, -1);
-       end loop;
- 
-       for K in 0 .. NK - 1 loop
-          X := Get_Edges (Get_Key (K).Edge).X;
- 
-          if Get_Graph (X) = -1 then
-             Set_Graph (X, 0);
-             Assign (X);
-          end if;
-       end loop;
- 
-       for J in 0 .. G_Len - 1 loop
-          if Get_Graph (J) = -1 then
-             Set_Graph (J, 0);
-          end if;
-       end loop;
- 
-       if Verbose then
-          Put_Int_Vector (Output, "Assign Values To Vertices", G, G_Len);
-       end if;
-    end Assign_Values_To_Vertices;
- 
-    -------------
-    -- Compute --
-    -------------
- 
-    procedure Compute (Position : String := Default_Position) is
-       Success : Boolean := False;
- 
-    begin
-       if NK = 0 then
-          raise Program_Error with "keywords set cannot be empty";
-       end if;
- 
-       if Verbose then
-          Put_Initial_Keys (Output, "Initial Key Table");
-       end if;
- 
-       if Position'Length /= 0 then
-          Parse_Position_Selection (Position);
-       else
-          Select_Char_Position;
-       end if;
- 
-       if Verbose then
-          Put_Int_Vector
-            (Output, "Char Position Set", Char_Pos_Set, Char_Pos_Set_Len);
-       end if;
- 
-       Apply_Position_Selection;
- 
-       if Verbose then
-          Put_Reduced_Keys (Output, "Reduced Keys Table");
-       end if;
- 
-       Select_Character_Set;
- 
-       if Verbose then
-          Put_Used_Char_Set (Output, "Character Position Table");
-       end if;
- 
-       --  Perform Czech's algorithm
- 
-       for J in 1 .. NT loop
-          Generate_Mapping_Tables (Opt, S);
-          Compute_Edges_And_Vertices (Opt);
- 
-          --  When graph is not empty (no self-loop from previous operation) and
-          --  not acyclic.
- 
-          if 0 < Edges_Len and then Acyclic then
-             Success := True;
-             exit;
-          end if;
-       end loop;
- 
-       if not Success then
-          raise Too_Many_Tries;
-       end if;
- 
-       Assign_Values_To_Vertices;
-    end Compute;
- 
-    --------------------------------
-    -- Compute_Edges_And_Vertices --
-    --------------------------------
- 
-    procedure Compute_Edges_And_Vertices (Opt : Optimization) is
-       X           : Natural;
-       Y           : Natural;
-       Key         : Key_Type;
-       Edge        : Edge_Type;
-       Vertex      : Vertex_Type;
-       Not_Acyclic : Boolean := False;
- 
-       procedure Move (From : Natural; To : Natural);
-       function Lt (L, R : Natural) return Boolean;
-       --  Subprograms needed for GNAT.Heap_Sort_G
- 
-       --------
-       -- Lt --
-       --------
- 
-       function Lt (L, R : Natural) return Boolean is
-          EL : constant Edge_Type := Get_Edges (L);
-          ER : constant Edge_Type := Get_Edges (R);
-       begin
-          return EL.X < ER.X or else (EL.X = ER.X and then EL.Y < ER.Y);
-       end Lt;
- 
-       ----------
-       -- Move --
-       ----------
- 
-       procedure Move (From : Natural; To : Natural) is
-       begin
-          Set_Edges (To, Get_Edges (From));
-       end Move;
- 
-       package Sorting is new GNAT.Heap_Sort_G (Move, Lt);
- 
-    --  Start of processing for Compute_Edges_And_Vertices
- 
-    begin
-       --  We store edges from 1 to 2 * NK and leave zero alone in order to use
-       --  GNAT.Heap_Sort_G.
- 
-       Edges_Len := 2 * NK + 1;
- 
-       if Edges = No_Table then
-          Edges := Allocate (Edges_Len, Edge_Size);
-       end if;
- 
-       if Vertices = No_Table then
-          Vertices := Allocate (NV, Vertex_Size);
-       end if;
- 
-       for J in 0 .. NV - 1 loop
-          Set_Vertices (J, (No_Vertex, No_Vertex - 1));
-       end loop;
- 
-       --  For each w, X = f1 (w) and Y = f2 (w)
- 
-       for J in 0 .. NK - 1 loop
-          Key := Get_Key (J);
-          Key.Edge := No_Edge;
-          Set_Key (J, Key);
- 
-          X := Sum (WT.Table (Reduced (J)), T1, Opt);
-          Y := Sum (WT.Table (Reduced (J)), T2, Opt);
- 
-          --  Discard T1 and T2 as soon as we discover a self loop
- 
-          if X = Y then
-             Not_Acyclic := True;
-             exit;
-          end if;
- 
-          --  We store (X, Y) and (Y, X) to ease assignment step
- 
-          Set_Edges (2 * J + 1, (X, Y, J));
-          Set_Edges (2 * J + 2, (Y, X, J));
-       end loop;
- 
-       --  Return an empty graph when self loop detected
- 
-       if Not_Acyclic then
-          Edges_Len := 0;
- 
-       else
-          if Verbose then
-             Put_Edges      (Output, "Unsorted Edge Table");
-             Put_Int_Matrix (Output, "Function Table 1", T1,
-                             T1_Len, T2_Len);
-             Put_Int_Matrix (Output, "Function Table 2", T2,
-                             T1_Len, T2_Len);
-          end if;
- 
-          --  Enforce consistency between edges and keys. Construct Vertices and
-          --  compute the list of neighbors of a vertex First .. Last as Edges
-          --  is sorted by X and then Y. To compute the neighbor list, sort the
-          --  edges.
- 
-          Sorting.Sort (Edges_Len - 1);
- 
-          if Verbose then
-             Put_Edges      (Output, "Sorted Edge Table");
-             Put_Int_Matrix (Output, "Function Table 1", T1,
-                             T1_Len, T2_Len);
-             Put_Int_Matrix (Output, "Function Table 2", T2,
-                             T1_Len, T2_Len);
-          end if;
- 
-          --  Edges valid range is 1 .. 2 * NK
- 
-          for E in 1 .. Edges_Len - 1 loop
-             Edge := Get_Edges (E);
-             Key  := Get_Key (Edge.Key);
- 
-             if Key.Edge = No_Edge then
-                Key.Edge := E;
-                Set_Key (Edge.Key, Key);
-             end if;
- 
-             Vertex := Get_Vertices (Edge.X);
- 
-             if Vertex.First = No_Edge then
-                Vertex.First := E;
-             end if;
- 
-             Vertex.Last := E;
-             Set_Vertices (Edge.X, Vertex);
-          end loop;
- 
-          if Verbose then
-             Put_Reduced_Keys (Output, "Key Table");
-             Put_Edges        (Output, "Edge Table");
-             Put_Vertex_Table (Output, "Vertex Table");
-          end if;
-       end if;
-    end Compute_Edges_And_Vertices;
- 
-    ------------
-    -- Define --
-    ------------
- 
-    procedure Define
-      (Name      : Table_Name;
-       Item_Size : out Natural;
-       Length_1  : out Natural;
-       Length_2  : out Natural)
-    is
-    begin
-       case Name is
-          when Character_Position =>
-             Item_Size := 8;
-             Length_1  := Char_Pos_Set_Len;
-             Length_2  := 0;
- 
-          when Used_Character_Set =>
-             Item_Size := 8;
-             Length_1  := 256;
-             Length_2  := 0;
- 
-          when Function_Table_1
-             | Function_Table_2
-          =>
-             Item_Size := Type_Size (NV);
-             Length_1  := T1_Len;
-             Length_2  := T2_Len;
- 
-          when Graph_Table =>
-             Item_Size := Type_Size (NK);
-             Length_1  := NV;
-             Length_2  := 0;
-       end case;
-    end Define;
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    procedure Finalize is
-    begin
-       if Verbose then
-          Put (Output, "Finalize");
-          New_Line (Output);
-       end if;
- 
-       --  Deallocate all the WT components (both initial and reduced ones) to
-       --  avoid memory leaks.
- 
-       for W in 0 .. WT.Last loop
- 
-          --  Note: WT.Table (NK) is a temporary variable, do not free it since
-          --  this would cause a double free.
- 
-          if W /= NK then
-             Free_Word (WT.Table (W));
-          end if;
-       end loop;
- 
-       WT.Release;
-       IT.Release;
- 
-       --  Reset all variables for next usage
- 
-       Keys := No_Table;
- 
-       Char_Pos_Set     := No_Table;
-       Char_Pos_Set_Len := 0;
- 
-       Used_Char_Set     := No_Table;
-       Used_Char_Set_Len := 0;
- 
-       T1 := No_Table;
-       T2 := No_Table;
- 
-       T1_Len := 0;
-       T2_Len := 0;
- 
-       G     := No_Table;
-       G_Len := 0;
- 
-       Edges     := No_Table;
-       Edges_Len := 0;
- 
-       Vertices := No_Table;
-       NV       := 0;
- 
-       NK := 0;
-       Max_Key_Len := 0;
-       Min_Key_Len := 0;
-    end Finalize;
- 
-    ----------------------------
-    -- Generate_Mapping_Table --
-    ----------------------------
- 
-    procedure Generate_Mapping_Table
-      (Tab  : Integer;
-       L1   : Natural;
-       L2   : Natural;
-       Seed : in out Natural)
-    is
-    begin
-       for J in 0 .. L1 - 1 loop
-          for K in 0 .. L2 - 1 loop
-             Random (Seed);
-             Set_Table (Tab, J, K, Seed mod NV);
-          end loop;
-       end loop;
-    end Generate_Mapping_Table;
- 
-    -----------------------------
-    -- Generate_Mapping_Tables --
-    -----------------------------
- 
-    procedure Generate_Mapping_Tables
-      (Opt  : Optimization;
-       Seed : in out Natural)
-    is
-    begin
-       --  If T1 and T2 are already allocated no need to do it twice. Reuse them
-       --  as their size has not changed.
- 
-       if T1 = No_Table and then T2 = No_Table then
-          declare
-             Used_Char_Last : Natural := 0;
-             Used_Char      : Natural;
- 
-          begin
-             if Opt = CPU_Time then
-                for P in reverse Character'Range loop
-                   Used_Char := Get_Used_Char (P);
-                   if Used_Char /= 0 then
-                      Used_Char_Last := Used_Char;
-                      exit;
-                   end if;
-                end loop;
-             end if;
- 
-             T1_Len := Char_Pos_Set_Len;
-             T2_Len := Used_Char_Last + 1;
-             T1 := Allocate (T1_Len * T2_Len);
-             T2 := Allocate (T1_Len * T2_Len);
-          end;
-       end if;
- 
-       Generate_Mapping_Table (T1, T1_Len, T2_Len, Seed);
-       Generate_Mapping_Table (T2, T1_Len, T2_Len, Seed);
- 
-       if Verbose then
-          Put_Used_Char_Set (Output, "Used Character Set");
-          Put_Int_Matrix (Output, "Function Table 1", T1,
-                         T1_Len, T2_Len);
-          Put_Int_Matrix (Output, "Function Table 2", T2,
-                         T1_Len, T2_Len);
-       end if;
-    end Generate_Mapping_Tables;
- 
-    ------------------
-    -- Get_Char_Pos --
-    ------------------
- 
-    function Get_Char_Pos (P : Natural) return Natural is
-       N : constant Natural := Char_Pos_Set + P;
-    begin
-       return IT.Table (N);
-    end Get_Char_Pos;
- 
-    ---------------
-    -- Get_Edges --
-    ---------------
- 
-    function Get_Edges (F : Natural) return Edge_Type is
-       N : constant Natural := Edges + (F * Edge_Size);
-       E : Edge_Type;
-    begin
-       E.X   := IT.Table (N);
-       E.Y   := IT.Table (N + 1);
-       E.Key := IT.Table (N + 2);
-       return E;
-    end Get_Edges;
- 
-    ---------------
-    -- Get_Graph --
-    ---------------
- 
-    function Get_Graph (N : Natural) return Integer is
-    begin
-       return IT.Table (G + N);
-    end Get_Graph;
- 
-    -------------
-    -- Get_Key --
-    -------------
- 
-    function Get_Key (N : Key_Id) return Key_Type is
-       K : Key_Type;
-    begin
-       K.Edge := IT.Table (Keys + N);
-       return K;
-    end Get_Key;
- 
-    ---------------
-    -- Get_Table --
-    ---------------
- 
-    function Get_Table (T : Integer; X, Y : Natural) return Natural is
-       N : constant Natural := T + (Y * T1_Len) + X;
-    begin
-       return IT.Table (N);
-    end Get_Table;
- 
-    -------------------
-    -- Get_Used_Char --
-    -------------------
- 
-    function Get_Used_Char (C : Character) return Natural is
-       N : constant Natural := Used_Char_Set + Character'Pos (C);
-    begin
-       return IT.Table (N);
-    end Get_Used_Char;
- 
-    ------------------
-    -- Get_Vertices --
-    ------------------
- 
-    function Get_Vertices (F : Natural) return Vertex_Type is
-       N : constant Natural := Vertices + (F * Vertex_Size);
-       V : Vertex_Type;
-    begin
-       V.First := IT.Table (N);
-       V.Last  := IT.Table (N + 1);
-       return V;
-    end Get_Vertices;
- 
-    -----------
-    -- Image --
-    -----------
- 
-    function Image (Int : Integer; W : Natural := 0) return String is
-       B : String (1 .. 32);
-       L : Natural := 0;
- 
-       procedure Img (V : Natural);
-       --  Compute image of V into B, starting at B (L), incrementing L
- 
-       ---------
-       -- Img --
-       ---------
- 
-       procedure Img (V : Natural) is
-       begin
-          if V > 9 then
-             Img (V / 10);
-          end if;
- 
-          L := L + 1;
-          B (L) := Character'Val ((V mod 10) + Character'Pos ('0'));
-       end Img;
- 
-    --  Start of processing for Image
- 
-    begin
-       if Int < 0 then
-          L := L + 1;
-          B (L) := '-';
-          Img (-Int);
-       else
-          Img (Int);
-       end if;
- 
-       return Image (B (1 .. L), W);
-    end Image;
- 
-    -----------
-    -- Image --
-    -----------
- 
-    function Image (Str : String; W : Natural := 0) return String is
-       Len : constant Natural := Str'Length;
-       Max : Natural := Len;
- 
-    begin
-       if Max < W then
-          Max := W;
-       end if;
- 
-       declare
-          Buf : String (1 .. Max) := (1 .. Max => ' ');
- 
-       begin
-          for J in 0 .. Len - 1 loop
-             Buf (Max - Len + 1 + J) := Str (Str'First + J);
-          end loop;
- 
-          return Buf;
-       end;
-    end Image;
- 
-    -------------
-    -- Initial --
-    -------------
- 
-    function Initial (K : Key_Id) return Word_Id is
-    begin
-       return K;
-    end Initial;
- 
-    ----------------
-    -- Initialize --
-    ----------------
- 
-    procedure Initialize
-      (Seed   : Natural;
-       K_To_V : Float        := Default_K_To_V;
-       Optim  : Optimization := Memory_Space;
-       Tries  : Positive     := Default_Tries)
-    is
-    begin
-       if Verbose then
-          Put (Output, "Initialize");
-          New_Line (Output);
-       end if;
- 
-       --  Deallocate the part of the table concerning the reduced words.
-       --  Initial words are already present in the table. We may have reduced
-       --  words already there because a previous computation failed. We are
-       --  currently retrying and the reduced words have to be deallocated.
- 
-       for W in Reduced (0) .. WT.Last loop
-          Free_Word (WT.Table (W));
-       end loop;
- 
-       IT.Init;
- 
-       --  Initialize of computation variables
- 
-       Keys := No_Table;
- 
-       Char_Pos_Set     := No_Table;
-       Char_Pos_Set_Len := 0;
- 
-       Used_Char_Set     := No_Table;
-       Used_Char_Set_Len := 0;
- 
-       T1 := No_Table;
-       T2 := No_Table;
- 
-       T1_Len := 0;
-       T2_Len := 0;
- 
-       G     := No_Table;
-       G_Len := 0;
- 
-       Edges     := No_Table;
-       Edges_Len := 0;
- 
-       Vertices := No_Table;
-       NV       := 0;
- 
-       S    := Seed;
-       K2V  := K_To_V;
-       Opt  := Optim;
-       NT   := Tries;
- 
-       if K2V <= 2.0 then
-          raise Program_Error with "K to V ratio cannot be lower than 2.0";
-       end if;
- 
-       --  Do not accept a value of K2V too close to 2.0 such that once
-       --  rounded up, NV = 2 * NK because the algorithm would not converge.
- 
-       NV := Natural (Float (NK) * K2V);
-       if NV <= 2 * NK then
-          NV := 2 * NK + 1;
-       end if;
- 
-       Keys := Allocate (NK);
- 
-       --  Resize initial words to have all of them at the same size
-       --  (so the size of the largest one).
- 
-       for K in 0 .. NK - 1 loop
-          Resize_Word (WT.Table (Initial (K)), Max_Key_Len);
-       end loop;
- 
-       --  Allocated the table to store the reduced words. As WT is a
-       --  GNAT.Table (using C memory management), pointers have to be
-       --  explicitly initialized to null.
- 
-       WT.Set_Last (Reduced (NK - 1));
- 
-       --  Note: Reduced (0) = NK + 1
- 
-       WT.Table (NK) := null;
- 
-       for W in 0 .. NK - 1 loop
-          WT.Table (Reduced (W)) := null;
-       end loop;
-    end Initialize;
- 
-    ------------
-    -- Insert --
-    ------------
- 
-    procedure Insert (Value : String) is
-       Len  : constant Natural := Value'Length;
- 
-    begin
-       if Verbose then
-          Put (Output, "Inserting """ & Value & """");
-          New_Line (Output);
-       end if;
- 
-       for J in Value'Range loop
-          pragma Assert (Value (J) /= ASCII.NUL);
-          null;
-       end loop;
- 
-       WT.Set_Last (NK);
-       WT.Table (NK) := New_Word (Value);
-       NK := NK + 1;
- 
-       if Max_Key_Len < Len then
-          Max_Key_Len := Len;
-       end if;
- 
-       if Min_Key_Len = 0 or else Len < Min_Key_Len then
-          Min_Key_Len := Len;
-       end if;
-    end Insert;
- 
-    --------------
-    -- New_Line --
-    --------------
- 
-    procedure New_Line (File : File_Descriptor) is
-    begin
-       if Write (File, EOL'Address, 1) /= 1 then
-          raise Program_Error;
-       end if;
-    end New_Line;
- 
-    --------------
-    -- New_Word --
-    --------------
- 
-    function New_Word (S : String) return Word_Type is
-    begin
-       return new String'(S);
-    end New_Word;
- 
-    ------------------------------
-    -- Parse_Position_Selection --
-    ------------------------------
- 
-    procedure Parse_Position_Selection (Argument : String) is
-       N : Natural          := Argument'First;
-       L : constant Natural := Argument'Last;
-       M : constant Natural := Max_Key_Len;
- 
-       T : array (1 .. M) of Boolean := (others => False);
- 
-       function Parse_Index return Natural;
-       --  Parse argument starting at index N to find an index
- 
-       -----------------
-       -- Parse_Index --
-       -----------------
- 
-       function Parse_Index return Natural is
-          C : Character := Argument (N);
-          V : Natural   := 0;
- 
-       begin
-          if C = '$' then
-             N := N + 1;
-             return M;
-          end if;
- 
-          if C not in '0' .. '9' then
-             raise Program_Error with "cannot read position argument";
-          end if;
- 
-          while C in '0' .. '9' loop
-             V := V * 10 + (Character'Pos (C) - Character'Pos ('0'));
-             N := N + 1;
-             exit when L < N;
-             C := Argument (N);
-          end loop;
- 
-          return V;
-       end Parse_Index;
- 
-    --  Start of processing for Parse_Position_Selection
- 
-    begin
-       --  Empty specification means all the positions
- 
-       if L < N then
-          Char_Pos_Set_Len := M;
-          Char_Pos_Set := Allocate (Char_Pos_Set_Len);
- 
-          for C in 0 .. Char_Pos_Set_Len - 1 loop
-             Set_Char_Pos (C, C + 1);
-          end loop;
- 
-       else
-          loop
-             declare
-                First, Last : Natural;
- 
-             begin
-                First := Parse_Index;
-                Last  := First;
- 
-                --  Detect a range
- 
-                if N <= L and then Argument (N) = '-' then
-                   N := N + 1;
-                   Last := Parse_Index;
-                end if;
- 
-                --  Include the positions in the selection
- 
-                for J in First .. Last loop
-                   T (J) := True;
-                end loop;
-             end;
- 
-             exit when L < N;
- 
-             if Argument (N) /= ',' then
-                raise Program_Error with "cannot read position argument";
-             end if;
- 
-             N := N + 1;
-          end loop;
- 
-          --  Compute position selection length
- 
-          N := 0;
-          for J in T'Range loop
-             if T (J) then
-                N := N + 1;
-             end if;
-          end loop;
- 
-          --  Fill position selection
- 
-          Char_Pos_Set_Len := N;
-          Char_Pos_Set := Allocate (Char_Pos_Set_Len);
- 
-          N := 0;
-          for J in T'Range loop
-             if T (J) then
-                Set_Char_Pos (N, J);
-                N := N + 1;
-             end if;
-          end loop;
-       end if;
-    end Parse_Position_Selection;
- 
-    -------------
-    -- Produce --
-    -------------
- 
-    procedure Produce
-      (Pkg_Name   : String  := Default_Pkg_Name;
-       Use_Stdout : Boolean := False)
-    is
-       File : File_Descriptor := Standout;
- 
-       Status : Boolean;
-       --  For call to Close
- 
-       function Array_Img (N, T, R1 : String; R2 : String := "") return String;
-       --  Return string "N : constant array (R1[, R2]) of T;"
- 
-       function Range_Img (F, L : Natural; T : String := "") return String;
-       --  Return string "[T range ]F .. L"
- 
-       function Type_Img (L : Natural) return String;
-       --  Return the larger unsigned type T such that T'Last < L
- 
-       ---------------
-       -- Array_Img --
-       ---------------
- 
-       function Array_Img
-         (N, T, R1 : String;
-          R2       : String := "") return String
-       is
-       begin
-          Last := 0;
-          Add ("   ");
-          Add (N);
-          Add (" : constant array (");
-          Add (R1);
- 
-          if R2 /= "" then
-             Add (", ");
-             Add (R2);
-          end if;
- 
-          Add (") of ");
-          Add (T);
-          Add (" :=");
-          return Line (1 .. Last);
-       end Array_Img;
- 
-       ---------------
-       -- Range_Img --
-       ---------------
- 
-       function Range_Img (F, L : Natural; T : String := "") return String is
-          FI  : constant String  := Image (F);
-          FL  : constant Natural := FI'Length;
-          LI  : constant String  := Image (L);
-          LL  : constant Natural := LI'Length;
-          TL  : constant Natural := T'Length;
-          RI  : String (1 .. TL + 7 + FL + 4 + LL);
-          Len : Natural := 0;
- 
-       begin
-          if TL /= 0 then
-             RI (Len + 1 .. Len + TL) := T;
-             Len := Len + TL;
-             RI (Len + 1 .. Len + 7) := " range ";
-             Len := Len + 7;
-          end if;
- 
-          RI (Len + 1 .. Len + FL) := FI;
-          Len := Len + FL;
-          RI (Len + 1 .. Len + 4) := " .. ";
-          Len := Len + 4;
-          RI (Len + 1 .. Len + LL) := LI;
-          Len := Len + LL;
-          return RI (1 .. Len);
-       end Range_Img;
- 
-       --------------
-       -- Type_Img --
-       --------------
- 
-       function Type_Img (L : Natural) return String is
-          S : constant String := Image (Type_Size (L));
-          U : String  := "Unsigned_  ";
-          N : Natural := 9;
- 
-       begin
-          for J in S'Range loop
-             N := N + 1;
-             U (N) := S (J);
-          end loop;
- 
-          return U (1 .. N);
-       end Type_Img;
- 
-       F : Natural;
-       L : Natural;
-       P : Natural;
- 
-       FName : String := Ada_File_Base_Name (Pkg_Name) & ".ads";
-       --  Initially, the name of the spec file, then modified to be the name of
-       --  the body file. Not used if Use_Stdout is True.
- 
-    --  Start of processing for Produce
- 
-    begin
- 
-       if Verbose and then not Use_Stdout then
-          Put (Output,
-               "Producing " & Ada.Directories.Current_Directory & "/" & FName);
-          New_Line (Output);
-       end if;
- 
-       if not Use_Stdout then
-          File := Create_File (FName, Binary);
- 
-          if File = Invalid_FD then
-             raise Program_Error with "cannot create: " & FName;
-          end if;
-       end if;
- 
-       Put      (File, "package ");
-       Put      (File, Pkg_Name);
-       Put      (File, " is");
-       New_Line (File);
-       Put      (File, "   function Hash (S : String) return Natural;");
-       New_Line (File);
-       Put      (File, "end ");
-       Put      (File, Pkg_Name);
-       Put      (File, ";");
-       New_Line (File);
- 
-       if not Use_Stdout then
-          Close (File, Status);
- 
-          if not Status then
-             raise Device_Error;
-          end if;
-       end if;
- 
-       if not Use_Stdout then
- 
-          --  Set to body file name
- 
-          FName (FName'Last) := 'b';
- 
-          File := Create_File (FName, Binary);
- 
-          if File = Invalid_FD then
-             raise Program_Error with "cannot create: " & FName;
-          end if;
-       end if;
- 
-       Put      (File, "with Interfaces; use Interfaces;");
-       New_Line (File);
-       New_Line (File);
-       Put      (File, "package body ");
-       Put      (File, Pkg_Name);
-       Put      (File, " is");
-       New_Line (File);
-       New_Line (File);
- 
-       if Opt = CPU_Time then
-          Put      (File, Array_Img ("C", Type_Img (256), "Character"));
-          New_Line (File);
- 
-          F := Character'Pos (Character'First);
-          L := Character'Pos (Character'Last);
- 
-          for J in Character'Range loop
-             P := Get_Used_Char (J);
-             Put (File, Image (P), 1, 0, 1, F, L, Character'Pos (J));
-          end loop;
- 
-          New_Line (File);
-       end if;
- 
-       F := 0;
-       L := Char_Pos_Set_Len - 1;
- 
-       Put      (File, Array_Img ("P", "Natural", Range_Img (F, L)));
-       New_Line (File);
- 
-       for J in F .. L loop
-          Put (File, Image (Get_Char_Pos (J)), 1, 0, 1, F, L, J);
-       end loop;
- 
-       New_Line (File);
- 
-       case Opt is
-          when CPU_Time =>
-             Put_Int_Matrix
-               (File,
-                Array_Img ("T1", Type_Img (NV),
-                           Range_Img (0, T1_Len - 1),
-                           Range_Img (0, T2_Len - 1, Type_Img (256))),
-                T1, T1_Len, T2_Len);
- 
-          when Memory_Space =>
-             Put_Int_Matrix
-               (File,
-                Array_Img ("T1", Type_Img (NV),
-                           Range_Img (0, T1_Len - 1)),
-                T1, T1_Len, 0);
-       end case;
- 
-       New_Line (File);
- 
-       case Opt is
-          when CPU_Time =>
-             Put_Int_Matrix
-               (File,
-                Array_Img ("T2", Type_Img (NV),
-                           Range_Img (0, T1_Len - 1),
-                           Range_Img (0, T2_Len - 1, Type_Img (256))),
-                T2, T1_Len, T2_Len);
- 
-          when Memory_Space =>
-             Put_Int_Matrix
-               (File,
-                Array_Img ("T2", Type_Img (NV),
-                           Range_Img (0, T1_Len - 1)),
-                T2, T1_Len, 0);
-       end case;
- 
-       New_Line (File);
- 
-       Put_Int_Vector
-         (File,
-          Array_Img ("G", Type_Img (NK),
-                     Range_Img (0, G_Len - 1)),
-          G, G_Len);
-       New_Line (File);
- 
-       Put      (File, "   function Hash (S : String) return Natural is");
-       New_Line (File);
-       Put      (File, "      F : constant Natural := S'First - 1;");
-       New_Line (File);
-       Put      (File, "      L : constant Natural := S'Length;");
-       New_Line (File);
-       Put      (File, "      F1, F2 : Natural := 0;");
-       New_Line (File);
- 
-       Put (File, "      J : ");
- 
-       case Opt is
-          when CPU_Time =>
-             Put (File, Type_Img (256));
- 
-          when Memory_Space =>
-             Put (File, "Natural");
-       end case;
- 
-       Put (File, ";");
-       New_Line (File);
- 
-       Put      (File, "   begin");
-       New_Line (File);
-       Put      (File, "      for K in P'Range loop");
-       New_Line (File);
-       Put      (File, "         exit when L < P (K);");
-       New_Line (File);
-       Put      (File, "         J  := ");
- 
-       case Opt is
-          when CPU_Time =>
-             Put (File, "C");
- 
-          when Memory_Space =>
-             Put (File, "Character'Pos");
-       end case;
- 
-       Put      (File, " (S (P (K) + F));");
-       New_Line (File);
- 
-       Put (File, "         F1 := (F1 + Natural (T1 (K");
- 
-       if Opt = CPU_Time then
-          Put (File, ", J");
-       end if;
- 
-       Put (File, "))");
- 
-       if Opt = Memory_Space then
-          Put (File, " * J");
-       end if;
- 
-       Put      (File, ") mod ");
-       Put      (File, Image (NV));
-       Put      (File, ";");
-       New_Line (File);
- 
-       Put (File, "         F2 := (F2 + Natural (T2 (K");
- 
-       if Opt = CPU_Time then
-          Put (File, ", J");
-       end if;
- 
-       Put (File, "))");
- 
-       if Opt = Memory_Space then
-          Put (File, " * J");
-       end if;
- 
-       Put      (File, ") mod ");
-       Put      (File, Image (NV));
-       Put      (File, ";");
-       New_Line (File);
- 
-       Put      (File, "      end loop;");
-       New_Line (File);
- 
-       Put      (File,
-                 "      return (Natural (G (F1)) + Natural (G (F2))) mod ");
- 
-       Put      (File, Image (NK));
-       Put      (File, ";");
-       New_Line (File);
-       Put      (File, "   end Hash;");
-       New_Line (File);
-       New_Line (File);
-       Put      (File, "end ");
-       Put      (File, Pkg_Name);
-       Put      (File, ";");
-       New_Line (File);
- 
-       if not Use_Stdout then
-          Close (File, Status);
- 
-          if not Status then
-             raise Device_Error;
-          end if;
-       end if;
-    end Produce;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put (File : File_Descriptor; Str : String) is
-       Len : constant Natural := Str'Length;
-    begin
-       for J in Str'Range loop
-          pragma Assert (Str (J) /= ASCII.NUL);
-          null;
-       end loop;
- 
-       if Write (File, Str'Address, Len) /= Len then
-          raise Program_Error;
-       end if;
-    end Put;
- 
-    ---------
-    -- Put --
-    ---------
- 
-    procedure Put
-      (F  : File_Descriptor;
-       S  : String;
-       F1 : Natural;
-       L1 : Natural;
-       C1 : Natural;
-       F2 : Natural;
-       L2 : Natural;
-       C2 : Natural)
-    is
-       Len : constant Natural := S'Length;
- 
-       procedure Flush;
-       --  Write current line, followed by LF
- 
-       -----------
-       -- Flush --
-       -----------
- 
-       procedure Flush is
-       begin
-          Put (F, Line (1 .. Last));
-          New_Line (F);
-          Last := 0;
-       end Flush;
- 
-    --  Start of processing for Put
- 
-    begin
-       if C1 = F1 and then C2 = F2 then
-          Last := 0;
-       end if;
- 
-       if Last + Len + 3 >= Max then
-          Flush;
-       end if;
- 
-       if Last = 0 then
-          Add ("     ");
- 
-          if F1 <= L1 then
-             if C1 = F1 and then C2 = F2 then
-                Add ('(');
- 
-                if F1 = L1 then
-                   Add ("0 .. 0 => ");
-                end if;
- 
-             else
-                Add (' ');
-             end if;
-          end if;
-       end if;
- 
-       if C2 = F2 then
-          Add ('(');
- 
-          if F2 = L2 then
-             Add ("0 .. 0 => ");
-          end if;
- 
-       else
-          Add (' ');
-       end if;
- 
-       Add (S);
- 
-       if C2 = L2 then
-          Add (')');
- 
-          if F1 > L1 then
-             Add (';');
-             Flush;
- 
-          elsif C1 /= L1 then
-             Add (',');
-             Flush;
- 
-          else
-             Add (')');
-             Add (';');
-             Flush;
-          end if;
- 
-       else
-          Add (',');
-       end if;
-    end Put;
- 
-    ---------------
-    -- Put_Edges --
-    ---------------
- 
-    procedure Put_Edges (File  : File_Descriptor; Title : String) is
-       E  : Edge_Type;
-       F1 : constant Natural := 1;
-       L1 : constant Natural := Edges_Len - 1;
-       M  : constant Natural := Max / 5;
- 
-    begin
-       Put (File, Title);
-       New_Line (File);
- 
-       --  Edges valid range is 1 .. Edge_Len - 1
- 
-       for J in F1 .. L1 loop
-          E := Get_Edges (J);
-          Put (File, Image (J, M),     F1, L1, J, 1, 4, 1);
-          Put (File, Image (E.X, M),   F1, L1, J, 1, 4, 2);
-          Put (File, Image (E.Y, M),   F1, L1, J, 1, 4, 3);
-          Put (File, Image (E.Key, M), F1, L1, J, 1, 4, 4);
-       end loop;
-    end Put_Edges;
- 
-    ----------------------
-    -- Put_Initial_Keys --
-    ----------------------
- 
-    procedure Put_Initial_Keys (File : File_Descriptor; Title : String) is
-       F1 : constant Natural := 0;
-       L1 : constant Natural := NK - 1;
-       M  : constant Natural := Max / 5;
-       K  : Key_Type;
- 
-    begin
-       Put (File, Title);
-       New_Line (File);
- 
-       for J in F1 .. L1 loop
-          K := Get_Key (J);
-          Put (File, Image (J, M),           F1, L1, J, 1, 3, 1);
-          Put (File, Image (K.Edge, M),      F1, L1, J, 1, 3, 2);
-          Put (File, Trim_Trailing_Nuls (WT.Table (Initial (J)).all),
-                     F1, L1, J, 1, 3, 3);
-       end loop;
-    end Put_Initial_Keys;
- 
-    --------------------
-    -- Put_Int_Matrix --
-    --------------------
- 
-    procedure Put_Int_Matrix
-      (File   : File_Descriptor;
-       Title  : String;
-       Table  : Integer;
-       Len_1  : Natural;
-       Len_2  : Natural)
-    is
-       F1 : constant Integer := 0;
-       L1 : constant Integer := Len_1 - 1;
-       F2 : constant Integer := 0;
-       L2 : constant Integer := Len_2 - 1;
-       Ix : Natural;
- 
-    begin
-       Put (File, Title);
-       New_Line (File);
- 
-       if Len_2 = 0 then
-          for J in F1 .. L1 loop
-             Ix := IT.Table (Table + J);
-             Put (File, Image (Ix), 1, 0, 1, F1, L1, J);
-          end loop;
- 
-       else
-          for J in F1 .. L1 loop
-             for K in F2 .. L2 loop
-                Ix := IT.Table (Table + J + K * Len_1);
-                Put (File, Image (Ix), F1, L1, J, F2, L2, K);
-             end loop;
-          end loop;
-       end if;
-    end Put_Int_Matrix;
- 
-    --------------------
-    -- Put_Int_Vector --
-    --------------------
- 
-    procedure Put_Int_Vector
-      (File   : File_Descriptor;
-       Title  : String;
-       Vector : Integer;
-       Length : Natural)
-    is
-       F2 : constant Natural := 0;
-       L2 : constant Natural := Length - 1;
- 
-    begin
-       Put (File, Title);
-       New_Line (File);
- 
-       for J in F2 .. L2 loop
-          Put (File, Image (IT.Table (Vector + J)), 1, 0, 1, F2, L2, J);
-       end loop;
-    end Put_Int_Vector;
- 
-    ----------------------
-    -- Put_Reduced_Keys --
-    ----------------------
- 
-    procedure Put_Reduced_Keys (File : File_Descriptor; Title : String) is
-       F1 : constant Natural := 0;
-       L1 : constant Natural := NK - 1;
-       M  : constant Natural := Max / 5;
-       K  : Key_Type;
- 
-    begin
-       Put (File, Title);
-       New_Line (File);
- 
-       for J in F1 .. L1 loop
-          K := Get_Key (J);
-          Put (File, Image (J, M),           F1, L1, J, 1, 3, 1);
-          Put (File, Image (K.Edge, M),      F1, L1, J, 1, 3, 2);
-          Put (File, Trim_Trailing_Nuls (WT.Table (Reduced (J)).all),
-                     F1, L1, J, 1, 3, 3);
-       end loop;
-    end Put_Reduced_Keys;
- 
-    -----------------------
-    -- Put_Used_Char_Set --
-    -----------------------
- 
-    procedure Put_Used_Char_Set (File : File_Descriptor; Title : String) is
-       F : constant Natural := Character'Pos (Character'First);
-       L : constant Natural := Character'Pos (Character'Last);
- 
-    begin
-       Put (File, Title);
-       New_Line (File);
- 
-       for J in Character'Range loop
-          Put
-            (File, Image (Get_Used_Char (J)), 1, 0, 1, F, L, Character'Pos (J));
-       end loop;
-    end Put_Used_Char_Set;
- 
-    ----------------------
-    -- Put_Vertex_Table --
-    ----------------------
- 
-    procedure Put_Vertex_Table (File : File_Descriptor; Title : String) is
-       F1 : constant Natural := 0;
-       L1 : constant Natural := NV - 1;
-       M  : constant Natural := Max / 4;
-       V  : Vertex_Type;
- 
-    begin
-       Put (File, Title);
-       New_Line (File);
- 
-       for J in F1 .. L1 loop
-          V := Get_Vertices (J);
-          Put (File, Image (J, M),       F1, L1, J, 1, 3, 1);
-          Put (File, Image (V.First, M), F1, L1, J, 1, 3, 2);
-          Put (File, Image (V.Last, M),  F1, L1, J, 1, 3, 3);
-       end loop;
-    end Put_Vertex_Table;
- 
-    ------------
-    -- Random --
-    ------------
- 
-    procedure Random (Seed : in out Natural) is
- 
-       --  Park & Miller Standard Minimal using Schrage's algorithm to avoid
-       --  overflow: Xn+1 = 16807 * Xn mod (2 ** 31 - 1)
- 
-       R : Natural;
-       Q : Natural;
-       X : Integer;
- 
-    begin
-       R := Seed mod 127773;
-       Q := Seed / 127773;
-       X := 16807 * R - 2836 * Q;
- 
-       Seed := (if X < 0 then X + 2147483647 else X);
-    end Random;
- 
-    -------------
-    -- Reduced --
-    -------------
- 
-    function Reduced (K : Key_Id) return Word_Id is
-    begin
-       return K + NK + 1;
-    end Reduced;
- 
-    -----------------
-    -- Resize_Word --
-    -----------------
- 
-    procedure Resize_Word (W : in out Word_Type; Len : Natural) is
-       S1 : constant String := W.all;
-       S2 : String (1 .. Len) := (others => ASCII.NUL);
-       L  : constant Natural := S1'Length;
-    begin
-       if L /= Len then
-          Free_Word (W);
-          S2 (1 .. L) := S1;
-          W := New_Word (S2);
-       end if;
-    end Resize_Word;
- 
-    --------------------------
-    -- Select_Char_Position --
-    --------------------------
- 
-    procedure Select_Char_Position is
- 
-       type Vertex_Table_Type is array (Natural range <>) of Vertex_Type;
- 
-       procedure Build_Identical_Keys_Sets
-         (Table : in out Vertex_Table_Type;
-          Last  : in out Natural;
-          Pos   : Natural);
-       --  Build a list of keys subsets that are identical with the current
-       --  position selection plus Pos. Once this routine is called, reduced
-       --  words are sorted by subsets and each item (First, Last) in Sets
-       --  defines the range of identical keys.
-       --  Need comment saying exactly what Last is ???
- 
-       function Count_Different_Keys
-         (Table : Vertex_Table_Type;
-          Last  : Natural;
-          Pos   : Natural) return Natural;
-       --  For each subset in Sets, count the number of different keys if we add
-       --  Pos to the current position selection.
- 
-       Sel_Position : IT.Table_Type (1 .. Max_Key_Len);
-       Last_Sel_Pos : Natural := 0;
-       Max_Sel_Pos  : Natural := 0;
- 
-       -------------------------------
-       -- Build_Identical_Keys_Sets --
-       -------------------------------
- 
-       procedure Build_Identical_Keys_Sets
-         (Table : in out Vertex_Table_Type;
-          Last  : in out Natural;
-          Pos   : Natural)
-       is
-          S : constant Vertex_Table_Type := Table (Table'First .. Last);
-          C : constant Natural           := Pos;
-          --  Shortcuts (why are these not renames ???)
- 
-          F : Integer;
-          L : Integer;
-          --  First and last words of a subset
- 
-          Offset : Natural;
-          --  GNAT.Heap_Sort assumes that the first array index is 1. Offset
-          --  defines the translation to operate.
- 
-          function Lt (L, R : Natural) return Boolean;
-          procedure Move (From : Natural; To : Natural);
-          --  Subprograms needed by GNAT.Heap_Sort_G
- 
-          --------
-          -- Lt --
-          --------
- 
-          function Lt (L, R : Natural) return Boolean is
-             C     : constant Natural := Pos;
-             Left  : Natural;
-             Right : Natural;
- 
-          begin
-             if L = 0 then
-                Left  := NK;
-                Right := Offset + R;
-             elsif R = 0 then
-                Left  := Offset + L;
-                Right := NK;
-             else
-                Left  := Offset + L;
-                Right := Offset + R;
-             end if;
- 
-             return WT.Table (Left)(C) < WT.Table (Right)(C);
-          end Lt;
- 
-          ----------
-          -- Move --
-          ----------
- 
-          procedure Move (From : Natural; To : Natural) is
-             Target, Source : Natural;
- 
-          begin
-             if From = 0 then
-                Source := NK;
-                Target := Offset + To;
-             elsif To = 0 then
-                Source := Offset + From;
-                Target := NK;
-             else
-                Source := Offset + From;
-                Target := Offset + To;
-             end if;
- 
-             WT.Table (Target) := WT.Table (Source);
-             WT.Table (Source) := null;
-          end Move;
- 
-          package Sorting is new GNAT.Heap_Sort_G (Move, Lt);
- 
-       --  Start of processing for Build_Identical_Key_Sets
- 
-       begin
-          Last := 0;
- 
-          --  For each subset in S, extract the new subsets we have by adding C
-          --  in the position selection.
- 
-          for J in S'Range loop
-             if S (J).First = S (J).Last then
-                F := S (J).First;
-                L := S (J).Last;
-                Last := Last + 1;
-                Table (Last) := (F, L);
- 
-             else
-                Offset := Reduced (S (J).First) - 1;
-                Sorting.Sort (S (J).Last - S (J).First + 1);
- 
-                F := S (J).First;
-                L := F;
-                for N in S (J).First .. S (J).Last loop
- 
-                   --  For the last item, close the last subset
- 
-                   if N = S (J).Last then
-                      Last := Last + 1;
-                      Table (Last) := (F, N);
- 
-                   --  Two contiguous words are identical when they have the
-                   --  same Cth character.
- 
-                   elsif WT.Table (Reduced (N))(C) =
-                         WT.Table (Reduced (N + 1))(C)
-                   then
-                      L := N + 1;
- 
-                   --  Find a new subset of identical keys. Store the current
-                   --  one and create a new subset.
- 
-                   else
-                      Last := Last + 1;
-                      Table (Last) := (F, L);
-                      F := N + 1;
-                      L := F;
-                   end if;
-                end loop;
-             end if;
-          end loop;
-       end Build_Identical_Keys_Sets;
- 
-       --------------------------
-       -- Count_Different_Keys --
-       --------------------------
- 
-       function Count_Different_Keys
-         (Table : Vertex_Table_Type;
-          Last  : Natural;
-          Pos   : Natural) return Natural
-       is
-          N : array (Character) of Natural;
-          C : Character;
-          T : Natural := 0;
- 
-       begin
-          --  For each subset, count the number of words that are still
-          --  different when we include Pos in the position selection. Only
-          --  focus on this position as the other positions already produce
-          --  identical keys.
- 
-          for S in 1 .. Last loop
- 
-             --  Count the occurrences of the different characters
- 
-             N := (others => 0);
-             for K in Table (S).First .. Table (S).Last loop
-                C := WT.Table (Reduced (K))(Pos);
-                N (C) := N (C) + 1;
-             end loop;
- 
-             --  Update the number of different keys. Each character used
-             --  denotes a different key.
- 
-             for J in N'Range loop
-                if N (J) > 0 then
-                   T := T + 1;
-                end if;
-             end loop;
-          end loop;
- 
-          return T;
-       end Count_Different_Keys;
- 
-    --  Start of processing for Select_Char_Position
- 
-    begin
-       --  Initialize the reduced words set
- 
-       for K in 0 .. NK - 1 loop
-          WT.Table (Reduced (K)) := New_Word (WT.Table (Initial (K)).all);
-       end loop;
- 
-       declare
-          Differences          : Natural;
-          Max_Differences      : Natural := 0;
-          Old_Differences      : Natural;
-          Max_Diff_Sel_Pos     : Natural := 0; -- init to kill warning
-          Max_Diff_Sel_Pos_Idx : Natural := 0; -- init to kill warning
-          Same_Keys_Sets_Table : Vertex_Table_Type (1 .. NK);
-          Same_Keys_Sets_Last  : Natural := 1;
- 
-       begin
-          for C in Sel_Position'Range loop
-             Sel_Position (C) := C;
-          end loop;
- 
-          Same_Keys_Sets_Table (1) := (0, NK - 1);
- 
-          loop
-             --  Preserve maximum number of different keys and check later on
-             --  that this value is strictly incrementing. Otherwise, it means
-             --  that two keys are strictly identical.
- 
-             Old_Differences := Max_Differences;
- 
-             --  The first position should not exceed the minimum key length.
-             --  Otherwise, we may end up with an empty word once reduced.
- 
-             Max_Sel_Pos :=
-               (if Last_Sel_Pos = 0 then Min_Key_Len else Max_Key_Len);
- 
-             --  Find which position increases more the number of differences
- 
-             for J in Last_Sel_Pos + 1 .. Max_Sel_Pos loop
-                Differences := Count_Different_Keys
-                  (Same_Keys_Sets_Table,
-                   Same_Keys_Sets_Last,
-                   Sel_Position (J));
- 
-                if Verbose then
-                   Put (Output,
-                        "Selecting position" & Sel_Position (J)'Img &
-                          " results in" & Differences'Img &
-                          " differences");
-                   New_Line (Output);
-                end if;
- 
-                if Differences > Max_Differences then
-                   Max_Differences      := Differences;
-                   Max_Diff_Sel_Pos     := Sel_Position (J);
-                   Max_Diff_Sel_Pos_Idx := J;
-                end if;
-             end loop;
- 
-             if Old_Differences = Max_Differences then
-                raise Program_Error with "some keys are identical";
-             end if;
- 
-             --  Insert selected position and sort Sel_Position table
- 
-             Last_Sel_Pos := Last_Sel_Pos + 1;
-             Sel_Position (Last_Sel_Pos + 1 .. Max_Diff_Sel_Pos_Idx) :=
-               Sel_Position (Last_Sel_Pos .. Max_Diff_Sel_Pos_Idx - 1);
-             Sel_Position (Last_Sel_Pos) := Max_Diff_Sel_Pos;
- 
-             for P in 1 .. Last_Sel_Pos - 1 loop
-                if Max_Diff_Sel_Pos < Sel_Position (P) then
-                   Sel_Position (P + 1 .. Last_Sel_Pos) :=
-                     Sel_Position (P .. Last_Sel_Pos - 1);
-                   Sel_Position (P) := Max_Diff_Sel_Pos;
-                   exit;
-                end if;
-             end loop;
- 
-             exit when Max_Differences = NK;
- 
-             Build_Identical_Keys_Sets
-               (Same_Keys_Sets_Table,
-                Same_Keys_Sets_Last,
-                Max_Diff_Sel_Pos);
- 
-             if Verbose then
-                Put (Output,
-                     "Selecting position" & Max_Diff_Sel_Pos'Img &
-                       " results in" & Max_Differences'Img &
-                       " differences");
-                New_Line (Output);
-                Put (Output, "--");
-                New_Line (Output);
-                for J in 1 .. Same_Keys_Sets_Last loop
-                   for K in
-                     Same_Keys_Sets_Table (J).First ..
-                     Same_Keys_Sets_Table (J).Last
-                   loop
-                      Put (Output,
-                           Trim_Trailing_Nuls (WT.Table (Reduced (K)).all));
-                      New_Line (Output);
-                   end loop;
-                   Put (Output, "--");
-                   New_Line (Output);
-                end loop;
-             end if;
-          end loop;
-       end;
- 
-       Char_Pos_Set_Len := Last_Sel_Pos;
-       Char_Pos_Set := Allocate (Char_Pos_Set_Len);
- 
-       for C in 1 .. Last_Sel_Pos loop
-          Set_Char_Pos (C - 1, Sel_Position (C));
-       end loop;
-    end Select_Char_Position;
- 
-    --------------------------
-    -- Select_Character_Set --
-    --------------------------
- 
-    procedure Select_Character_Set is
-       Last : Natural := 0;
-       Used : array (Character) of Boolean := (others => False);
-       Char : Character;
- 
-    begin
-       for J in 0 .. NK - 1 loop
-          for K in 0 .. Char_Pos_Set_Len - 1 loop
-             Char := WT.Table (Initial (J))(Get_Char_Pos (K));
-             exit when Char = ASCII.NUL;
-             Used (Char) := True;
-          end loop;
-       end loop;
- 
-       Used_Char_Set_Len := 256;
-       Used_Char_Set := Allocate (Used_Char_Set_Len);
- 
-       for J in Used'Range loop
-          if Used (J) then
-             Set_Used_Char (J, Last);
-             Last := Last + 1;
-          else
-             Set_Used_Char (J, 0);
-          end if;
-       end loop;
-    end Select_Character_Set;
- 
-    ------------------
-    -- Set_Char_Pos --
-    ------------------
- 
-    procedure Set_Char_Pos (P : Natural; Item : Natural) is
-       N : constant Natural := Char_Pos_Set + P;
-    begin
-       IT.Table (N) := Item;
-    end Set_Char_Pos;
- 
-    ---------------
-    -- Set_Edges --
-    ---------------
- 
-    procedure Set_Edges (F : Natural; Item : Edge_Type) is
-       N : constant Natural := Edges + (F * Edge_Size);
-    begin
-       IT.Table (N)     := Item.X;
-       IT.Table (N + 1) := Item.Y;
-       IT.Table (N + 2) := Item.Key;
-    end Set_Edges;
- 
-    ---------------
-    -- Set_Graph --
-    ---------------
- 
-    procedure Set_Graph (N : Natural; Item : Integer) is
-    begin
-       IT.Table (G + N) := Item;
-    end Set_Graph;
- 
-    -------------
-    -- Set_Key --
-    -------------
- 
-    procedure Set_Key (N : Key_Id; Item : Key_Type) is
-    begin
-       IT.Table (Keys + N) := Item.Edge;
-    end Set_Key;
- 
-    ---------------
-    -- Set_Table --
-    ---------------
- 
-    procedure Set_Table (T : Integer; X, Y : Natural; Item : Natural) is
-       N : constant Natural := T + ((Y * T1_Len) + X);
-    begin
-       IT.Table (N) := Item;
-    end Set_Table;
- 
-    -------------------
-    -- Set_Used_Char --
-    -------------------
- 
-    procedure Set_Used_Char (C : Character; Item : Natural) is
-       N : constant Natural := Used_Char_Set + Character'Pos (C);
-    begin
-       IT.Table (N) := Item;
-    end Set_Used_Char;
- 
-    ------------------
-    -- Set_Vertices --
-    ------------------
- 
-    procedure Set_Vertices (F : Natural; Item : Vertex_Type) is
-       N : constant Natural := Vertices + (F * Vertex_Size);
-    begin
-       IT.Table (N)     := Item.First;
-       IT.Table (N + 1) := Item.Last;
-    end Set_Vertices;
- 
-    ---------
-    -- Sum --
-    ---------
- 
-    function Sum
-      (Word  : Word_Type;
-       Table : Table_Id;
-       Opt   : Optimization) return Natural
-    is
-       S : Natural := 0;
-       R : Natural;
- 
-    begin
-       case Opt is
-          when CPU_Time =>
-             for J in 0 .. T1_Len - 1 loop
-                exit when Word (J + 1) = ASCII.NUL;
-                R := Get_Table (Table, J, Get_Used_Char (Word (J + 1)));
-                S := (S + R) mod NV;
-             end loop;
- 
-          when Memory_Space =>
-             for J in 0 .. T1_Len - 1 loop
-                exit when Word (J + 1) = ASCII.NUL;
-                R := Get_Table (Table, J, 0);
-                S := (S + R * Character'Pos (Word (J + 1))) mod NV;
-             end loop;
-       end case;
- 
-       return S;
-    end Sum;
- 
-    ------------------------
-    -- Trim_Trailing_Nuls --
-    ------------------------
- 
-    function Trim_Trailing_Nuls (Str : String) return String is
-    begin
-       for J in reverse Str'Range loop
-          if Str (J) /= ASCII.NUL then
-             return Str (Str'First .. J);
-          end if;
-       end loop;
- 
-       return Str;
-    end Trim_Trailing_Nuls;
- 
-    ---------------
-    -- Type_Size --
-    ---------------
- 
-    function Type_Size (L : Natural) return Natural is
-    begin
-       if L <= 2 ** 8 then
-          return 8;
-       elsif L <= 2 ** 16 then
-          return 16;
-       else
-          return 32;
-       end if;
-    end Type_Size;
- 
-    -----------
-    -- Value --
-    -----------
- 
-    function Value
-      (Name : Table_Name;
-       J    : Natural;
-       K    : Natural := 0) return Natural
-    is
-    begin
-       case Name is
-          when Character_Position =>
-             return Get_Char_Pos (J);
- 
-          when Used_Character_Set =>
-             return Get_Used_Char (Character'Val (J));
- 
-          when Function_Table_1 =>
-             return Get_Table (T1, J, K);
- 
-          when Function_Table_2 =>
-             return Get_Table (T2, J, K);
- 
-          when Graph_Table =>
-             return Get_Graph (J);
-       end case;
-    end Value;
- 
- end GNAT.Perfect_Hash_Generators;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-pehage.ads gcc-8.1.0/gcc/ada/g-pehage.ads
*** gcc-7.3.0/gcc/ada/g-pehage.ads	Thu Jul 17 07:27:38 2014
--- gcc-8.1.0/gcc/ada/g-pehage.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,238 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --          G N A T . P E R F E C T _ H A S H _ G E N E R A T O R S         --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 2002-2014, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 a generator of static minimal perfect hash functions.
- --  To understand what a perfect hash function is, we define several notions.
- --  These definitions are inspired from the following paper:
- 
- --    Zbigniew J. Czech, George Havas, and Bohdan S. Majewski ``An Optimal
- --    Algorithm for Generating Minimal Perfect Hash Functions'', Information
- --    Processing Letters, 43(1992) pp.257-264, Oct.1992
- 
- --  Let W be a set of m words. A hash function h is a function that maps the
- --  set of words W into some given interval I of integers [0, k-1], where k is
- --  an integer, usually k >= m. h (w) where w is a word in W computes an
- --  address or an integer from I for the storage or the retrieval of that
- --  item. The storage area used to store items is known as a hash table. Words
- --  for which the same address is computed are called synonyms. Due to the
- --  existence of synonyms a situation called collision may arise in which two
- --  items w1 and w2 have the same address. Several schemes for resolving
- --  collisions are known. A perfect hash function is an injection from the word
- --  set W to the integer interval I with k >= m.  If k = m, then h is a minimal
- --  perfect hash function. A hash function is order preserving if it puts
- --  entries into the hash table in a prespecified order.
- 
- --  A minimal perfect hash function is defined by two properties:
- 
- --    Since no collisions occur each item can be retrieved from the table in
- --    *one* probe. This represents the "perfect" property.
- 
- --    The hash table size corresponds to the exact size of W and *no larger*.
- --    This represents the "minimal" property.
- 
- --  The functions generated by this package require the words to be known in
- --  advance (they are "static" hash functions). The hash functions are also
- --  order preserving. If w2 is inserted after w1 in the generator, then h (w1)
- --  < h (w2). These hashing functions are convenient for use with realtime
- --  applications.
- 
- package GNAT.Perfect_Hash_Generators is
- 
-    Default_K_To_V : constant Float  := 2.05;
-    --  Default ratio for the algorithm. When K is the number of keys, V =
-    --  (K_To_V) * K is the size of the main table of the hash function. To
-    --  converge, the algorithm requires K_To_V to be strictly greater than 2.0.
- 
-    Default_Pkg_Name : constant String := "Perfect_Hash";
-    --  Default package name in which the hash function is defined
- 
-    Default_Position : constant String := "";
-    --  The generator allows selection of the character positions used in the
-    --  hash function. By default, all positions are selected.
- 
-    Default_Tries : constant Positive := 20;
-    --  This algorithm may not succeed to find a possible mapping on the first
-    --  try and may have to iterate a number of times. This constant bounds the
-    --  number of tries.
- 
-    type Optimization is (Memory_Space, CPU_Time);
-    --  Optimize either the memory space or the execution time. Note: in
-    --  practice, the optimization mode has little effect on speed. The tables
-    --  are somewhat smaller with Memory_Space.
- 
-    Verbose : Boolean := False;
-    --  Output the status of the algorithm. For instance, the tables, the random
-    --  graph (edges, vertices) and selected char positions are output between
-    --  two iterations.
- 
-    procedure Initialize
-      (Seed   : Natural;
-       K_To_V : Float        := Default_K_To_V;
-       Optim  : Optimization := Memory_Space;
-       Tries  : Positive     := Default_Tries);
-    --  Initialize the generator and its internal structures. Set the ratio of
-    --  vertices over keys in the random graphs. This value has to be greater
-    --  than 2.0 in order for the algorithm to succeed. The word set is not
-    --  modified (in particular when it is already set). For instance, it is
-    --  possible to run several times the generator with different settings on
-    --  the same words.
-    --
-    --  A classical way of doing is to Insert all the words and then to invoke
-    --  Initialize and Compute. If Compute fails to find a perfect hash
-    --  function, invoke Initialize another time with other configuration
-    --  parameters (probably with a greater K_To_V ratio). Once successful,
-    --  invoke Produce and Finalize.
- 
-    procedure Finalize;
-    --  Deallocate the internal structures and the words table
- 
-    procedure Insert (Value : String);
-    --  Insert a new word into the table. ASCII.NUL characters are not allowed.
- 
-    Too_Many_Tries : exception;
-    --  Raised after Tries unsuccessful runs
- 
-    procedure Compute (Position : String := Default_Position);
-    --  Compute the hash function. Position allows the definition of selection
-    --  of character positions used in the word hash function. Positions can be
-    --  separated by commas and ranges like x-y may be used. Character '$'
-    --  represents the final character of a word. With an empty position, the
-    --  generator automatically produces positions to reduce the memory usage.
-    --  Raise Too_Many_Tries if the algorithm does not succeed within Tries
-    --  attempts (see Initialize).
- 
-    procedure Produce
-      (Pkg_Name   : String  := Default_Pkg_Name;
-       Use_Stdout : Boolean := False);
-    --  Generate the hash function package Pkg_Name. This package includes the
-    --  minimal perfect Hash function. The output is normally placed in the
-    --  current directory, in files X.ads and X.adb, where X is the standard
-    --  GNAT file name for a package named Pkg_Name. If Use_Stdout is True, the
-    --  output goes to standard output, and no files are written.
- 
-    ----------------------------------------------------------------
- 
-    --  The routines and structures defined below allow producing the hash
-    --  function using a different way from the procedure above. The procedure
-    --  Define returns the lengths of an internal table and its item type size.
-    --  The function Value returns the value of each item in the table.
- 
-    --  The hash function has the following form:
- 
-    --             h (w) = (g (f1 (w)) + g (f2 (w))) mod m
- 
-    --  G is a function based on a graph table [0,n-1] -> [0,m-1]. m is the
-    --  number of keys. n is an internally computed value and it can be obtained
-    --  as the length of vector G.
- 
-    --  F1 and F2 are two functions based on two function tables T1 and T2.
-    --  Their definition depends on the chosen optimization mode.
- 
-    --  Only some character positions are used in the words because they are
-    --  significant. They are listed in a character position table (P in the
-    --  pseudo-code below). For instance, in {"jan", "feb", "mar", "apr", "jun",
-    --  "jul", "aug", "sep", "oct", "nov", "dec"}, only positions 2 and 3 are
-    --  significant (the first character can be ignored). In this example, P =
-    --  {2, 3}
- 
-    --  When Optimization is CPU_Time, the first dimension of T1 and T2
-    --  corresponds to the character position in the word and the second to the
-    --  character set. As all the character set is not used, we define a used
-    --  character table which associates a distinct index to each used character
-    --  (unused characters are mapped to zero). In this case, the second
-    --  dimension of T1 and T2 is reduced to the used character set (C in the
-    --  pseudo-code below). Therefore, the hash function has the following:
- 
-    --    function Hash (S : String) return Natural is
-    --       F      : constant Natural := S'First - 1;
-    --       L      : constant Natural := S'Length;
-    --       F1, F2 : Natural := 0;
-    --       J      : <t>;
- 
-    --    begin
-    --       for K in P'Range loop
-    --          exit when L < P (K);
-    --          J  := C (S (P (K) + F));
-    --          F1 := (F1 + Natural (T1 (K, J))) mod <n>;
-    --          F2 := (F2 + Natural (T2 (K, J))) mod <n>;
-    --       end loop;
- 
-    --       return (Natural (G (F1)) + Natural (G (F2))) mod <m>;
-    --    end Hash;
- 
-    --  When Optimization is Memory_Space, the first dimension of T1 and T2
-    --  corresponds to the character position in the word and the second
-    --  dimension is ignored. T1 and T2 are no longer matrices but vectors.
-    --  Therefore, the used character table is not available. The hash function
-    --  has the following form:
- 
-    --     function Hash (S : String) return Natural is
-    --        F      : constant Natural := S'First - 1;
-    --        L      : constant Natural := S'Length;
-    --        F1, F2 : Natural := 0;
-    --        J      : <t>;
- 
-    --     begin
-    --        for K in P'Range loop
-    --           exit when L < P (K);
-    --           J  := Character'Pos (S (P (K) + F));
-    --           F1 := (F1 + Natural (T1 (K) * J)) mod <n>;
-    --           F2 := (F2 + Natural (T2 (K) * J)) mod <n>;
-    --        end loop;
- 
-    --        return (Natural (G (F1)) + Natural (G (F2))) mod <m>;
-    --     end Hash;
- 
-    type Table_Name is
-      (Character_Position,
-       Used_Character_Set,
-       Function_Table_1,
-       Function_Table_2,
-       Graph_Table);
- 
-    procedure Define
-      (Name      : Table_Name;
-       Item_Size : out Natural;
-       Length_1  : out Natural;
-       Length_2  : out Natural);
-    --  Return the definition of the table Name. This includes the length of
-    --  dimensions 1 and 2 and the size of an unsigned integer item. When
-    --  Length_2 is zero, the table has only one dimension. All the ranges
-    --  start from zero.
- 
-    function Value
-      (Name : Table_Name;
-       J    : Natural;
-       K    : Natural := 0) return Natural;
-    --  Return the value of the component (I, J) of the table Name. When the
-    --  table has only one dimension, J is ignored.
- 
- end GNAT.Perfect_Hash_Generators;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-rannum.adb gcc-8.1.0/gcc/ada/g-rannum.adb
*** gcc-7.3.0/gcc/ada/g-rannum.adb	Thu Feb  5 11:17:25 2015
--- gcc-8.1.0/gcc/ada/g-rannum.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,344 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                  G N A T . R A N D O M _ N U M B E R S                   --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2007-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Long_Elementary_Functions;
- use  Ada.Numerics.Long_Elementary_Functions;
- with Ada.Unchecked_Conversion;
- 
- with System.Random_Numbers; use System.Random_Numbers;
- 
- package body GNAT.Random_Numbers with
-   SPARK_Mode => Off
- is
-    Sys_Max_Image_Width : constant := System.Random_Numbers.Max_Image_Width;
- 
-    subtype Image_String is String (1 .. Max_Image_Width);
- 
-    --  Utility function declarations
- 
-    procedure Insert_Image
-      (S     : in out Image_String;
-       Index : Integer;
-       V     : Integer_64);
-    --  Insert string representation of V in S starting at position Index
- 
-    ---------------
-    -- To_Signed --
-    ---------------
- 
-    function To_Signed is
-      new Ada.Unchecked_Conversion (Unsigned_32, Integer_32);
-    function To_Signed is
-      new Ada.Unchecked_Conversion (Unsigned_64, Integer_64);
- 
-    ------------------
-    -- Insert_Image --
-    ------------------
- 
-    procedure Insert_Image
-      (S     : in out Image_String;
-       Index : Integer;
-       V     : Integer_64)
-    is
-       Image : constant String := Integer_64'Image (V);
-    begin
-       S (Index .. Index + Image'Length - 1) := Image;
-    end Insert_Image;
- 
-    ---------------------
-    -- Random_Discrete --
-    ---------------------
- 
-    function Random_Discrete
-      (Gen   : Generator;
-       Min   : Result_Subtype := Default_Min;
-       Max   : Result_Subtype := Result_Subtype'Last) return Result_Subtype
-    is
-       function F is
-         new System.Random_Numbers.Random_Discrete
-               (Result_Subtype, Default_Min);
-    begin
-       return F (Gen.Rep, Min, Max);
-    end Random_Discrete;
- 
-    --------------------------
-    -- Random_Decimal_Fixed --
-    --------------------------
- 
-    function Random_Decimal_Fixed
-      (Gen : Generator;
-       Min : Result_Subtype := Default_Min;
-       Max : Result_Subtype := Result_Subtype'Last) return Result_Subtype
-    is
-       subtype IntV is Integer_64 range
-         Integer_64'Integer_Value (Min) ..
-         Integer_64'Integer_Value (Max);
-       function R is new Random_Discrete (Integer_64, IntV'First);
-    begin
-       return Result_Subtype'Fixed_Value (R (Gen, IntV'First, IntV'Last));
-    end Random_Decimal_Fixed;
- 
-    ---------------------------
-    -- Random_Ordinary_Fixed --
-    ---------------------------
- 
-    function Random_Ordinary_Fixed
-      (Gen : Generator;
-       Min : Result_Subtype := Default_Min;
-       Max : Result_Subtype := Result_Subtype'Last) return Result_Subtype
-    is
-       subtype IntV is Integer_64 range
-         Integer_64'Integer_Value (Min) ..
-         Integer_64'Integer_Value (Max);
-       function R is new Random_Discrete (Integer_64, IntV'First);
-    begin
-       return Result_Subtype'Fixed_Value (R (Gen, IntV'First, IntV'Last));
-    end Random_Ordinary_Fixed;
- 
-    ------------
-    -- Random --
-    ------------
- 
-    function Random (Gen : Generator) return Float is
-    begin
-       return Random (Gen.Rep);
-    end Random;
- 
-    function Random (Gen : Generator) return Long_Float is
-    begin
-       return Random (Gen.Rep);
-    end Random;
- 
-    function Random (Gen : Generator) return Interfaces.Unsigned_32 is
-    begin
-       return Random (Gen.Rep);
-    end Random;
- 
-    function Random (Gen : Generator) return Interfaces.Unsigned_64 is
-    begin
-       return Random (Gen.Rep);
-    end Random;
- 
-    function Random (Gen : Generator) return Integer_64 is
-    begin
-       return To_Signed (Unsigned_64'(Random (Gen)));
-    end Random;
- 
-    function Random (Gen : Generator) return Integer_32 is
-    begin
-       return To_Signed (Unsigned_32'(Random (Gen)));
-    end Random;
- 
-    function Random (Gen : Generator) return Long_Integer is
-       function Random_Long_Integer is new Random_Discrete (Long_Integer);
-    begin
-       return Random_Long_Integer (Gen);
-    end Random;
- 
-    function Random (Gen : Generator) return Integer is
-       function Random_Integer is new Random_Discrete (Integer);
-    begin
-       return Random_Integer (Gen);
-    end Random;
- 
-    ------------------
-    -- Random_Float --
-    ------------------
- 
-    function Random_Float (Gen : Generator) return Result_Subtype is
-       function F is new System.Random_Numbers.Random_Float (Result_Subtype);
-    begin
-       return F (Gen.Rep);
-    end Random_Float;
- 
-    ---------------------
-    -- Random_Gaussian --
-    ---------------------
- 
-    --  Generates pairs of normally distributed values using the polar method of
-    --  G. E. P. Box, M. E. Muller, and G. Marsaglia. See Donald E. Knuth, The
-    --  Art of Computer Programming, Vol 2: Seminumerical Algorithms, section
-    --  3.4.1, subsection C, algorithm P. Returns half of the pair on each call,
-    --  using the Next_Gaussian field of Gen to hold the second member on
-    --  even-numbered calls.
- 
-    function Random_Gaussian (Gen : Generator) return Long_Float is
-       G : Generator renames Gen'Unrestricted_Access.all;
- 
-       V1, V2, Rad2, Mult : Long_Float;
- 
-    begin
-       if G.Have_Gaussian then
-          G.Have_Gaussian := False;
-          return G.Next_Gaussian;
- 
-       else
-          loop
-             V1 := 2.0 * Random (G) - 1.0;
-             V2 := 2.0 * Random (G) - 1.0;
-             Rad2 := V1 ** 2 + V2 ** 2;
-             exit when Rad2 < 1.0 and then Rad2 /= 0.0;
-          end loop;
- 
-          --  Now V1 and V2 are coordinates in the unit circle
- 
-          Mult := Sqrt (-2.0 * Log (Rad2) / Rad2);
-          G.Next_Gaussian := V2 * Mult;
-          G.Have_Gaussian := True;
-          return Long_Float'Machine (V1 * Mult);
-       end if;
-    end Random_Gaussian;
- 
-    function Random_Gaussian (Gen : Generator) return Float is
-       V : constant Long_Float := Random_Gaussian (Gen);
-    begin
-       return Float'Machine (Float (V));
-    end Random_Gaussian;
- 
-    -----------
-    -- Reset --
-    -----------
- 
-    procedure Reset (Gen : out Generator) is
-    begin
-       Reset (Gen.Rep);
-       Gen.Have_Gaussian := False;
-    end Reset;
- 
-    procedure Reset
-      (Gen       : out Generator;
-       Initiator : Initialization_Vector)
-    is
-    begin
-       Reset (Gen.Rep, Initiator);
-       Gen.Have_Gaussian := False;
-    end Reset;
- 
-    procedure Reset
-      (Gen       : out Generator;
-       Initiator : Interfaces.Integer_32)
-    is
-    begin
-       Reset (Gen.Rep, Initiator);
-       Gen.Have_Gaussian := False;
-    end Reset;
- 
-    procedure Reset
-      (Gen       : out Generator;
-       Initiator : Interfaces.Unsigned_32)
-    is
-    begin
-       Reset (Gen.Rep, Initiator);
-       Gen.Have_Gaussian := False;
-    end Reset;
- 
-    procedure Reset
-      (Gen       : out Generator;
-       Initiator : Integer)
-    is
-    begin
-       Reset (Gen.Rep, Initiator);
-       Gen.Have_Gaussian := False;
-    end Reset;
- 
-    procedure Reset
-      (Gen        : out Generator;
-       From_State : Generator)
-    is
-    begin
-       Reset (Gen.Rep, From_State.Rep);
-       Gen.Have_Gaussian := From_State.Have_Gaussian;
-       Gen.Next_Gaussian := From_State.Next_Gaussian;
-    end Reset;
- 
-    Frac_Scale : constant Long_Float :=
-                   Long_Float
-                     (Long_Float'Machine_Radix) ** Long_Float'Machine_Mantissa;
- 
-    function Val64 (Image : String) return Integer_64;
-    --  Renames Integer64'Value
-    --  We cannot use a 'renames Integer64'Value' since for some strange
-    --  reason, this requires a dependency on s-auxdec.ads which not all
-    --  run-times support ???
- 
-    function Val64 (Image : String) return Integer_64 is
-    begin
-       return Integer_64'Value (Image);
-    end Val64;
- 
-    procedure Reset
-      (Gen        : out Generator;
-       From_Image : String)
-    is
-       F0 : constant Integer := From_Image'First;
-       T0 : constant Integer := From_Image'First + Sys_Max_Image_Width;
- 
-    begin
-       Reset (Gen.Rep, From_Image (F0 .. F0 + Sys_Max_Image_Width));
- 
-       if From_Image (T0 + 1) = '1' then
-          Gen.Have_Gaussian := True;
-          Gen.Next_Gaussian :=
-            Long_Float (Val64 (From_Image (T0 + 3 .. T0 + 23))) / Frac_Scale
-            * Long_Float (Long_Float'Machine_Radix)
-            ** Integer (Val64 (From_Image (T0 + 25 .. From_Image'Last)));
-       else
-          Gen.Have_Gaussian := False;
-       end if;
-    end Reset;
- 
-    -----------
-    -- Image --
-    -----------
- 
-    function Image (Gen : Generator) return String is
-       Result : Image_String;
- 
-    begin
-       Result := (others => ' ');
-       Result (1 .. Sys_Max_Image_Width) := Image (Gen.Rep);
- 
-       if Gen.Have_Gaussian then
-          Result (Sys_Max_Image_Width + 2) := '1';
-          Insert_Image (Result, Sys_Max_Image_Width + 4,
-                        Integer_64 (Long_Float'Fraction (Gen.Next_Gaussian)
-                                    * Frac_Scale));
-          Insert_Image (Result, Sys_Max_Image_Width + 24,
-                        Integer_64 (Long_Float'Exponent (Gen.Next_Gaussian)));
- 
-       else
-          Result (Sys_Max_Image_Width + 2) := '0';
-       end if;
- 
-       return Result;
-    end Image;
- 
- end GNAT.Random_Numbers;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-rannum.ads gcc-8.1.0/gcc/ada/g-rannum.ads
*** gcc-7.3.0/gcc/ada/g-rannum.ads	Thu Feb  5 11:17:25 2015
--- gcc-8.1.0/gcc/ada/g-rannum.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,161 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                   G N A T . R A N D O M _ N U M B E R S                  --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2007-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Extended pseudo-random number generation
- 
- --  This package provides a type representing pseudo-random number generators,
- --  and subprograms to extract various distributions of numbers from them. It
- --  also provides types for representing initialization values and snapshots of
- --  internal generator state, which permit reproducible pseudo-random streams.
- 
- --  The generator currently provided by this package has an extremely long
- --  period (at least 2**19937-1), and passes the Big Crush test suite, with the
- --  exception of the two linear complexity tests. Therefore, it is suitable for
- --  simulations, but should not be used as a cryptographic pseudo-random source
- --  without additional processing.
- 
- --  The design of this package effects is simplified compared to the design
- --  of standard Ada.Numerics packages. There is no separate State type; the
- --  Generator type itself suffices for this purpose. The parameter modes on
- --  Reset procedures better reflect the effect of these routines.
- 
- --  Note: this package is marked SPARK_Mode Off, because functions Random work
- --  by side-effect to change the value of the generator, hence they should not
- --  be called from SPARK code.
- 
- with System.Random_Numbers;
- with Interfaces; use Interfaces;
- 
- package GNAT.Random_Numbers with
-   SPARK_Mode => Off
- is
-    type Generator is limited private;
-    subtype Initialization_Vector is
-      System.Random_Numbers.Initialization_Vector;
- 
-    function Random (Gen : Generator) return Float;
-    function Random (Gen : Generator) return Long_Float;
-    --  Return pseudo-random numbers uniformly distributed on [0 .. 1)
- 
-    function Random (Gen : Generator) return Interfaces.Integer_32;
-    function Random (Gen : Generator) return Interfaces.Unsigned_32;
-    function Random (Gen : Generator) return Interfaces.Integer_64;
-    function Random (Gen : Generator) return Interfaces.Unsigned_64;
-    function Random (Gen : Generator) return Integer;
-    function Random (Gen : Generator) return Long_Integer;
-    --  Return pseudo-random numbers uniformly distributed on T'First .. T'Last
-    --  for various builtin integer types.
- 
-    generic
-       type Result_Subtype is (<>);
-       Default_Min : Result_Subtype := Result_Subtype'Val (0);
-    function Random_Discrete
-      (Gen   : Generator;
-       Min   : Result_Subtype := Default_Min;
-       Max   : Result_Subtype := Result_Subtype'Last) return Result_Subtype;
-    --  Returns pseudo-random numbers uniformly distributed on Min .. Max
- 
-    generic
-       type Result_Subtype is delta <>;
-       Default_Min : Result_Subtype := 0.0;
-    function Random_Ordinary_Fixed
-      (Gen   : Generator;
-       Min   : Result_Subtype := Default_Min;
-       Max   : Result_Subtype := Result_Subtype'Last) return Result_Subtype;
-    --  Returns pseudo-random numbers uniformly distributed on Min .. Max
- 
-    generic
-       type Result_Subtype is delta <> digits <>;
-       Default_Min : Result_Subtype := 0.0;
-    function Random_Decimal_Fixed
-      (Gen   : Generator;
-       Min   : Result_Subtype := Default_Min;
-       Max   : Result_Subtype := Result_Subtype'Last) return Result_Subtype;
-    --  Returns pseudo-random numbers uniformly distributed on Min .. Max
- 
-    generic
-       type Result_Subtype is digits <>;
-    function Random_Float (Gen   : Generator) return Result_Subtype;
-    --  Returns pseudo-random numbers uniformly distributed on [0.0 .. 1.0)
- 
-    function Random_Gaussian (Gen : Generator) return Long_Float;
-    function Random_Gaussian (Gen : Generator) return Float;
-    --  Returns pseudo-random numbers normally distributed value with mean 0
-    --  and standard deviation 1.0.
- 
-    procedure Reset (Gen : out Generator);
-    --  Re-initialize the state of Gen from the time of day
- 
-    procedure Reset
-      (Gen       : out Generator;
-       Initiator : Initialization_Vector);
-    procedure Reset
-      (Gen       : out Generator;
-       Initiator : Interfaces.Integer_32);
-    procedure Reset
-      (Gen       : out Generator;
-       Initiator : Interfaces.Unsigned_32);
-    procedure Reset
-      (Gen       : out Generator;
-       Initiator : Integer);
-    --  Re-initialize Gen based on the Initiator in various ways. Identical
-    --  values of Initiator cause identical sequences of values.
- 
-    procedure Reset (Gen : out Generator; From_State : Generator);
-    --  Causes the state of Gen to be identical to that of From_State; Gen
-    --  and From_State will produce identical sequences of values subsequently.
- 
-    procedure Reset (Gen : out Generator; From_Image : String);
-    function Image (Gen : Generator) return String;
-    --  The call
-    --     Reset (Gen2, Image (Gen1))
-    --  has the same effect as Reset (Gen2, Gen1);
- 
-    Max_Image_Width : constant :=
-      System.Random_Numbers.Max_Image_Width + 2 + 20 + 5;
-    --  Maximum possible length of result of Image (...)
- 
- private
- 
-    type Generator is limited record
-       Rep : System.Random_Numbers.Generator;
- 
-       Have_Gaussian : Boolean;
-       --  The algorithm used for Random_Gaussian produces deviates in
-       --  pairs. Have_Gaussian is true iff Random_Gaussian has returned one
-       --  member of the pair and Next_Gaussian contains the other.
- 
-       Next_Gaussian : Long_Float;
-       --  Next random deviate to be produced by Random_Gaussian, if
-       --  Have_Gaussian.
-    end record;
- 
- end GNAT.Random_Numbers;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-regexp.adb gcc-8.1.0/gcc/ada/g-regexp.adb
*** gcc-7.3.0/gcc/ada/g-regexp.adb	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-regexp.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,36 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                          G N A T . R E G E X P                           --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 1999-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 does not require a body, since it is a package renaming. We
- --  provide a dummy file containing a No_Body pragma so that previous versions
- --  of the body (which did exist) will not interfere.
- 
- pragma No_Body;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-regexp.ads gcc-8.1.0/gcc/ada/g-regexp.ads
*** gcc-7.3.0/gcc/ada/g-regexp.ads	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-regexp.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,70 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                          G N A T . R E G E X P                           --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 1998-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Simple Regular expression matching
- 
- --  This package provides a simple implementation of a regular expression
- --  pattern matching algorithm, using a subset of the syntax of regular
- --  expressions copied from familiar Unix style utilities.
- 
- --  See file s-regexp.ads for full documentation of the interface
- 
- ------------------------------------------------------------
- -- Summary of Pattern Matching Packages in GNAT Hierarchy --
- ------------------------------------------------------------
- 
- --  There are three related packages that perform pattern matching functions.
- --  the following is an outline of these packages, to help you determine
- --  which is best for your needs.
- 
- --     GNAT.Regexp (files g-regexp.ads/s-regexp.ads/s-regexp.adb)
- --       This is a simple package providing Unix-style regular expression
- --       matching with the restriction that it matches entire strings. It
- --       is particularly useful for file name matching, and in particular
- --       it provides "globbing patterns" that are useful in implementing
- --       unix or DOS style wild card matching for file names.
- 
- --     GNAT.Regpat (files g-regpat.ads/s-regpat.ads/g-regpat.adb)
- --       This is a more complete implementation of Unix-style regular
- --       expressions, copied from the original V7 style regular expression
- --       library written in C by Henry Spencer. It is functionally the
- --       same as this library, and uses the same internal data structures
- --       stored in a binary compatible manner.
- 
- --     GNAT.Spitbol.Patterns (files g-spipat.ads/g-spipat.adb)
- --       This is a completely general pattern matching package based on the
- --       pattern language of SNOBOL4, as implemented in SPITBOL. The pattern
- --       language is modeled on context free grammars, with context sensitive
- --       extensions that provide full (type 0) computational capabilities.
- 
- with System.Regexp;
- 
- package GNAT.Regexp renames System.Regexp;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-regist.adb gcc-8.1.0/gcc/ada/g-regist.adb
*** gcc-7.3.0/gcc/ada/g-regist.adb	Thu Oct 23 10:39:50 2014
--- gcc-8.1.0/gcc/ada/g-regist.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,553 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                         G N A T . R E G I S T R Y                        --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --           Copyright (C) 2001-2014, Free Software Foundation, Inc.        --
- --                                                                          --
- -- GNAT is 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/>.                                          --
- --                                                                          --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Interfaces.C;
- with System;
- with GNAT.Directory_Operations;
- 
- package body GNAT.Registry is
- 
-    use System;
- 
-    ------------------------------
-    -- Binding to the Win32 API --
-    ------------------------------
- 
-    subtype LONG is Interfaces.C.long;
-    subtype ULONG is Interfaces.C.unsigned_long;
-    subtype DWORD is ULONG;
- 
-    type    PULONG is access all ULONG;
-    subtype PDWORD is PULONG;
-    subtype LPDWORD is PDWORD;
- 
-    subtype Error_Code is LONG;
- 
-    subtype REGSAM is LONG;
- 
-    type PHKEY is access all HKEY;
- 
-    ERROR_SUCCESS : constant Error_Code := 0;
- 
-    REG_SZ        : constant := 1;
-    REG_EXPAND_SZ : constant := 2;
- 
-    function RegCloseKey (Key : HKEY) return LONG;
-    pragma Import (Stdcall, RegCloseKey, "RegCloseKey");
- 
-    function RegCreateKeyEx
-      (Key                  : HKEY;
-       lpSubKey             : Address;
-       Reserved             : DWORD;
-       lpClass              : Address;
-       dwOptions            : DWORD;
-       samDesired           : REGSAM;
-       lpSecurityAttributes : Address;
-       phkResult            : PHKEY;
-       lpdwDisposition      : LPDWORD)
-       return                 LONG;
-    pragma Import (Stdcall, RegCreateKeyEx, "RegCreateKeyExA");
- 
-    function RegDeleteKey
-      (Key      : HKEY;
-       lpSubKey : Address) return LONG;
-    pragma Import (Stdcall, RegDeleteKey, "RegDeleteKeyA");
- 
-    function RegDeleteValue
-      (Key         : HKEY;
-       lpValueName : Address) return LONG;
-    pragma Import (Stdcall, RegDeleteValue, "RegDeleteValueA");
- 
-    function RegEnumValue
-      (Key           : HKEY;
-       dwIndex       : DWORD;
-       lpValueName   : Address;
-       lpcbValueName : LPDWORD;
-       lpReserved    : LPDWORD;
-       lpType        : LPDWORD;
-       lpData        : Address;
-       lpcbData      : LPDWORD) return LONG;
-    pragma Import (Stdcall, RegEnumValue, "RegEnumValueA");
- 
-    function RegOpenKeyEx
-      (Key        : HKEY;
-       lpSubKey   : Address;
-       ulOptions  : DWORD;
-       samDesired : REGSAM;
-       phkResult  : PHKEY) return LONG;
-    pragma Import (Stdcall, RegOpenKeyEx, "RegOpenKeyExA");
- 
-    function RegQueryValueEx
-      (Key         : HKEY;
-       lpValueName : Address;
-       lpReserved  : LPDWORD;
-       lpType      : LPDWORD;
-       lpData      : Address;
-       lpcbData    : LPDWORD) return LONG;
-    pragma Import (Stdcall, RegQueryValueEx, "RegQueryValueExA");
- 
-    function RegSetValueEx
-      (Key         : HKEY;
-       lpValueName : Address;
-       Reserved    : DWORD;
-       dwType      : DWORD;
-       lpData      : Address;
-       cbData      : DWORD) return LONG;
-    pragma Import (Stdcall, RegSetValueEx, "RegSetValueExA");
- 
-    function RegEnumKey
-      (Key         : HKEY;
-       dwIndex     : DWORD;
-       lpName      : Address;
-       cchName     : DWORD) return LONG;
-    pragma Import (Stdcall, RegEnumKey, "RegEnumKeyA");
- 
-    ---------------------
-    -- Local Constants --
-    ---------------------
- 
-    Max_Key_Size : constant := 1_024;
-    --  Maximum number of characters for a registry key
- 
-    Max_Value_Size : constant := 2_048;
-    --  Maximum number of characters for a key's value
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    function To_C_Mode (Mode : Key_Mode) return REGSAM;
-    --  Returns the Win32 mode value for the Key_Mode value
- 
-    procedure Check_Result (Result : LONG; Message : String);
-    --  Checks value Result and raise the exception Registry_Error if it is not
-    --  equal to ERROR_SUCCESS. Message and the error value (Result) is added
-    --  to the exception message.
- 
-    ------------------
-    -- Check_Result --
-    ------------------
- 
-    procedure Check_Result (Result : LONG; Message : String) is
-       use type LONG;
-    begin
-       if Result /= ERROR_SUCCESS then
-          raise Registry_Error with
-            Message & " (" & LONG'Image (Result) & ')';
-       end if;
-    end Check_Result;
- 
-    ---------------
-    -- Close_Key --
-    ---------------
- 
-    procedure Close_Key (Key : HKEY) is
-       Result : LONG;
-    begin
-       Result := RegCloseKey (Key);
-       Check_Result (Result, "Close_Key");
-    end Close_Key;
- 
-    ----------------
-    -- Create_Key --
-    ----------------
- 
-    function Create_Key
-      (From_Key : HKEY;
-       Sub_Key  : String;
-       Mode     : Key_Mode := Read_Write) return HKEY
-    is
-       use type REGSAM;
-       use type DWORD;
- 
-       REG_OPTION_NON_VOLATILE : constant := 16#0#;
- 
-       C_Sub_Key : constant String := Sub_Key & ASCII.NUL;
-       C_Class   : constant String := "" & ASCII.NUL;
-       C_Mode    : constant REGSAM := To_C_Mode (Mode);
- 
-       New_Key : aliased HKEY;
-       Result  : LONG;
-       Dispos  : aliased DWORD;
- 
-    begin
-       Result :=
-         RegCreateKeyEx
-           (From_Key,
-            C_Sub_Key (C_Sub_Key'First)'Address,
-            0,
-            C_Class (C_Class'First)'Address,
-            REG_OPTION_NON_VOLATILE,
-            C_Mode,
-            Null_Address,
-            New_Key'Unchecked_Access,
-            Dispos'Unchecked_Access);
- 
-       Check_Result (Result, "Create_Key " & Sub_Key);
-       return New_Key;
-    end Create_Key;
- 
-    ----------------
-    -- Delete_Key --
-    ----------------
- 
-    procedure Delete_Key (From_Key : HKEY; Sub_Key : String) is
-       C_Sub_Key : constant String := Sub_Key & ASCII.NUL;
-       Result    : LONG;
-    begin
-       Result := RegDeleteKey (From_Key, C_Sub_Key (C_Sub_Key'First)'Address);
-       Check_Result (Result, "Delete_Key " & Sub_Key);
-    end Delete_Key;
- 
-    ------------------
-    -- Delete_Value --
-    ------------------
- 
-    procedure Delete_Value (From_Key : HKEY; Sub_Key : String) is
-       C_Sub_Key : constant String := Sub_Key & ASCII.NUL;
-       Result    : LONG;
-    begin
-       Result := RegDeleteValue (From_Key, C_Sub_Key (C_Sub_Key'First)'Address);
-       Check_Result (Result, "Delete_Value " & Sub_Key);
-    end Delete_Value;
- 
-    -------------------
-    -- For_Every_Key --
-    -------------------
- 
-    procedure For_Every_Key
-      (From_Key  : HKEY;
-       Recursive : Boolean := False)
-    is
-       procedure Recursive_For_Every_Key
-         (From_Key  : HKEY;
-          Recursive : Boolean := False;
-          Quit      : in out Boolean);
- 
-       -----------------------------
-       -- Recursive_For_Every_Key --
-       -----------------------------
- 
-       procedure Recursive_For_Every_Key
-         (From_Key : HKEY;
-          Recursive : Boolean := False;
-          Quit      : in out Boolean)
-       is
-          use type LONG;
-          use type ULONG;
- 
-          Index  : ULONG := 0;
-          Result : LONG;
- 
-          Sub_Key : Interfaces.C.char_array (1 .. Max_Key_Size);
-          pragma Warnings (Off, Sub_Key);
- 
-          Size_Sub_Key : aliased ULONG;
-          Sub_Hkey     : HKEY;
- 
-          function Current_Name return String;
- 
-          ------------------
-          -- Current_Name --
-          ------------------
- 
-          function Current_Name return String is
-          begin
-             return Interfaces.C.To_Ada (Sub_Key);
-          end Current_Name;
- 
-       --  Start of processing for Recursive_For_Every_Key
- 
-       begin
-          loop
-             Size_Sub_Key := Sub_Key'Length;
- 
-             Result :=
-               RegEnumKey
-                 (From_Key, Index, Sub_Key (1)'Address, Size_Sub_Key);
- 
-             exit when not (Result = ERROR_SUCCESS);
- 
-             Sub_Hkey := Open_Key (From_Key, Interfaces.C.To_Ada (Sub_Key));
- 
-             Action (Natural (Index) + 1, Sub_Hkey, Current_Name, Quit);
- 
-             if not Quit and then Recursive then
-                Recursive_For_Every_Key (Sub_Hkey, True, Quit);
-             end if;
- 
-             Close_Key (Sub_Hkey);
- 
-             exit when Quit;
- 
-             Index := Index + 1;
-          end loop;
-       end Recursive_For_Every_Key;
- 
-       --  Local Variables
- 
-       Quit : Boolean := False;
- 
-    --  Start of processing for For_Every_Key
- 
-    begin
-       Recursive_For_Every_Key (From_Key, Recursive, Quit);
-    end For_Every_Key;
- 
-    -------------------------
-    -- For_Every_Key_Value --
-    -------------------------
- 
-    procedure For_Every_Key_Value
-      (From_Key : HKEY;
-       Expand   : Boolean := False)
-    is
-       use GNAT.Directory_Operations;
-       use type LONG;
-       use type ULONG;
- 
-       Index  : ULONG := 0;
-       Result : LONG;
- 
-       Sub_Key : String (1 .. Max_Key_Size);
-       pragma Warnings (Off, Sub_Key);
- 
-       Value : String (1 .. Max_Value_Size);
-       pragma Warnings (Off, Value);
- 
-       Size_Sub_Key : aliased ULONG;
-       Size_Value   : aliased ULONG;
-       Type_Sub_Key : aliased DWORD;
- 
-       Quit : Boolean;
- 
-    begin
-       loop
-          Size_Sub_Key := Sub_Key'Length;
-          Size_Value   := Value'Length;
- 
-          Result :=
-            RegEnumValue
-              (From_Key, Index,
-               Sub_Key (1)'Address,
-               Size_Sub_Key'Unchecked_Access,
-               null,
-               Type_Sub_Key'Unchecked_Access,
-               Value (1)'Address,
-               Size_Value'Unchecked_Access);
- 
-          exit when not (Result = ERROR_SUCCESS);
- 
-          Quit := False;
- 
-          if Type_Sub_Key = REG_EXPAND_SZ and then Expand then
-             Action
-               (Natural (Index) + 1,
-                Sub_Key (1 .. Integer (Size_Sub_Key)),
-                Directory_Operations.Expand_Path
-                  (Value (1 .. Integer (Size_Value) - 1),
-                   Directory_Operations.DOS),
-                Quit);
- 
-          elsif Type_Sub_Key = REG_SZ or else Type_Sub_Key = REG_EXPAND_SZ then
-             Action
-               (Natural (Index) + 1,
-                Sub_Key (1 .. Integer (Size_Sub_Key)),
-                Value (1 .. Integer (Size_Value) - 1),
-                Quit);
-          end if;
- 
-          exit when Quit;
- 
-          Index := Index + 1;
-       end loop;
-    end For_Every_Key_Value;
- 
-    ----------------
-    -- Key_Exists --
-    ----------------
- 
-    function Key_Exists
-      (From_Key : HKEY;
-       Sub_Key  : String) return Boolean
-    is
-       New_Key : HKEY;
- 
-    begin
-       New_Key := Open_Key (From_Key, Sub_Key);
-       Close_Key (New_Key);
- 
-       --  We have been able to open the key so it exists
- 
-       return True;
- 
-    exception
-       when Registry_Error =>
- 
-          --  An error occurred, the key was not found
- 
-          return False;
-    end Key_Exists;
- 
-    --------------
-    -- Open_Key --
-    --------------
- 
-    function Open_Key
-      (From_Key : HKEY;
-       Sub_Key  : String;
-       Mode     : Key_Mode := Read_Only) return HKEY
-    is
-       use type REGSAM;
- 
-       C_Sub_Key : constant String := Sub_Key & ASCII.NUL;
-       C_Mode    : constant REGSAM := To_C_Mode (Mode);
- 
-       New_Key : aliased HKEY;
-       Result  : LONG;
- 
-    begin
-       Result :=
-         RegOpenKeyEx
-           (From_Key,
-            C_Sub_Key (C_Sub_Key'First)'Address,
-            0,
-            C_Mode,
-            New_Key'Unchecked_Access);
- 
-       Check_Result (Result, "Open_Key " & Sub_Key);
-       return New_Key;
-    end Open_Key;
- 
-    -----------------
-    -- Query_Value --
-    -----------------
- 
-    function Query_Value
-      (From_Key : HKEY;
-       Sub_Key  : String;
-       Expand   : Boolean := False) return String
-    is
-       use GNAT.Directory_Operations;
-       use type LONG;
-       use type ULONG;
- 
-       Value : String (1 .. Max_Value_Size);
-       pragma Warnings (Off, Value);
- 
-       Size_Value : aliased ULONG;
-       Type_Value : aliased DWORD;
- 
-       C_Sub_Key : constant String := Sub_Key & ASCII.NUL;
-       Result    : LONG;
- 
-    begin
-       Size_Value := Value'Length;
- 
-       Result :=
-         RegQueryValueEx
-           (From_Key,
-            C_Sub_Key (C_Sub_Key'First)'Address,
-            null,
-            Type_Value'Unchecked_Access,
-            Value (Value'First)'Address,
-            Size_Value'Unchecked_Access);
- 
-       Check_Result (Result, "Query_Value " & Sub_Key & " key");
- 
-       if Type_Value = REG_EXPAND_SZ and then Expand then
-          return Directory_Operations.Expand_Path
-            (Value (1 .. Integer (Size_Value - 1)),
-             Directory_Operations.DOS);
-       else
-          return Value (1 .. Integer (Size_Value - 1));
-       end if;
-    end Query_Value;
- 
-    ---------------
-    -- Set_Value --
-    ---------------
- 
-    procedure Set_Value
-       (From_Key : HKEY;
-        Sub_Key  : String;
-        Value    : String;
-        Expand   : Boolean := False)
-    is
-       C_Sub_Key : constant String := Sub_Key & ASCII.NUL;
-       C_Value   : constant String := Value & ASCII.NUL;
- 
-       Value_Type : DWORD;
-       Result     : LONG;
- 
-    begin
-       Value_Type := (if Expand then REG_EXPAND_SZ else REG_SZ);
- 
-       Result :=
-         RegSetValueEx
-           (From_Key,
-            C_Sub_Key (C_Sub_Key'First)'Address,
-            0,
-            Value_Type,
-            C_Value (C_Value'First)'Address,
-            C_Value'Length);
- 
-       Check_Result (Result, "Set_Value " & Sub_Key & " key");
-    end Set_Value;
- 
-    ---------------
-    -- To_C_Mode --
-    ---------------
- 
-    function To_C_Mode (Mode : Key_Mode) return REGSAM is
-       use type REGSAM;
- 
-       KEY_READ        : constant := 16#20019#;
-       KEY_WRITE       : constant := 16#20006#;
-       KEY_WOW64_64KEY : constant := 16#00100#;
-       KEY_WOW64_32KEY : constant := 16#00200#;
- 
-    begin
-       case Mode is
-          when Read_Only =>
-             return KEY_READ + KEY_WOW64_32KEY;
- 
-          when Read_Write =>
-             return KEY_READ + KEY_WRITE + KEY_WOW64_32KEY;
- 
-          when Read_Only_64 =>
-             return KEY_READ + KEY_WOW64_64KEY;
- 
-          when Read_Write_64 =>
-             return KEY_READ + KEY_WRITE + KEY_WOW64_64KEY;
-       end case;
-    end To_C_Mode;
- 
- end GNAT.Registry;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-regist.ads gcc-8.1.0/gcc/ada/g-regist.ads
*** gcc-7.3.0/gcc/ada/g-regist.ads	Thu Oct 23 10:39:50 2014
--- gcc-8.1.0/gcc/ada/g-regist.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,161 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                         G N A T . R E G I S T R Y                        --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2001-2014, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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/>.                                          --
- --                                                                          --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  The registry is a Windows database to store key/value pair. It is used
- --  to keep Windows operation system and applications configuration options.
- --  The database is a hierarchal set of key and for each key a value can
- --  be associated. This package provides high level routines to deal with
- --  the Windows registry. For full registry API, but at a lower level of
- --  abstraction, refer to the Win32.Winreg package provided with the
- --  Win32Ada binding. For example this binding handle only key values of
- --  type Standard.String.
- 
- --  This package is specific to the NT version of GNAT, and is not available
- --  on any other platforms.
- 
- package GNAT.Registry is
- 
-    type HKEY is private;
-    --  HKEY is a handle to a registry key, including standard registry keys:
-    --  HKEY_CLASSES_ROOT, HKEY_CURRENT_CONFIG, HKEY_CURRENT_USER,
-    --  HKEY_LOCAL_MACHINE, HKEY_USERS, HKEY_PERFORMANCE_DATA.
- 
-    HKEY_CLASSES_ROOT     : constant HKEY;
-    HKEY_CURRENT_USER     : constant HKEY;
-    HKEY_CURRENT_CONFIG   : constant HKEY;
-    HKEY_LOCAL_MACHINE    : constant HKEY;
-    HKEY_USERS            : constant HKEY;
-    HKEY_PERFORMANCE_DATA : constant HKEY;
- 
-    type Key_Mode is
-       (Read_Only, Read_Write,        -- operates on 32bit view of the registry
-        Read_Only_64, Read_Write_64); -- operates on 64bit view of the registry
-    --  Access mode for the registry key. The *_64 are only meaningful on
-    --  Windows 64bit and ignored on Windows 32bit where _64 are equivalent to
-    --  the non 64bit versions.
- 
-    Registry_Error : exception;
-    --  Registry_Error is raises by all routines below if a problem occurs
-    --  (key cannot be opened, key cannot be found etc).
- 
-    function Create_Key
-      (From_Key : HKEY;
-       Sub_Key  : String;
-       Mode     : Key_Mode := Read_Write) return HKEY;
-    --  Open or create a key (named Sub_Key) in the Windows registry database.
-    --  The key will be created under key From_Key. It returns the key handle.
-    --  From_Key must be a valid handle to an already opened key or one of
-    --  the standard keys identified by HKEY declarations above.
- 
-    function Open_Key
-      (From_Key : HKEY;
-       Sub_Key  : String;
-       Mode     : Key_Mode := Read_Only) return HKEY;
-    --  Return a registry key handle for key named Sub_Key opened under key
-    --  From_Key. It is possible to open a key at any level in the registry
-    --  tree in a single call to Open_Key.
- 
-    procedure Close_Key (Key : HKEY);
-    --  Close registry key handle. All resources used by Key are released
- 
-    function Key_Exists (From_Key : HKEY; Sub_Key : String) return Boolean;
-    --  Returns True if Sub_Key is defined under From_Key in the registry
- 
-    function Query_Value
-      (From_Key : HKEY;
-       Sub_Key  : String;
-       Expand   : Boolean := False) return String;
-    --  Returns the registry key's value associated with Sub_Key in From_Key
-    --  registry key. If Expand is set to True and the Sub_Key is a
-    --  REG_EXPAND_SZ the returned value will have the %name% variables
-    --  replaced by the corresponding environment variable value.
- 
-    procedure Set_Value
-       (From_Key : HKEY;
-        Sub_Key  : String;
-        Value    : String;
-        Expand   : Boolean := False);
-    --  Add the pair (Sub_Key, Value) into From_Key registry key.
-    --  By default the value created is of type REG_SZ, unless
-    --  Expand is True in which case it is of type REG_EXPAND_SZ
- 
-    procedure Delete_Key (From_Key : HKEY; Sub_Key : String);
-    --  Remove Sub_Key from the registry key From_Key
- 
-    procedure Delete_Value (From_Key : HKEY; Sub_Key : String);
-    --  Remove the named value Sub_Key from the registry key From_Key
- 
-    generic
-       with procedure Action
-         (Index    : Positive;
-          Key      : HKEY;
-          Key_Name : String;
-          Quit     : in out Boolean);
-    procedure For_Every_Key (From_Key : HKEY; Recursive : Boolean := False);
-    --  Iterates over all the keys registered under From_Key, recursively if
-    --  Recursive is set to True. Index will be set to 1 for the first key and
-    --  will be incremented by one in each iteration. The current key of an
-    --  iteration is set in Key, and its name - in Key_Name. Quit can be set
-    --  to True to stop iteration; its initial value is False.
- 
-    generic
-       with procedure Action
-         (Index   : Positive;
-          Sub_Key : String;
-          Value   : String;
-          Quit    : in out Boolean);
-    procedure For_Every_Key_Value (From_Key : HKEY; Expand : Boolean := False);
-    --  Iterates over all the pairs (Sub_Key, Value) registered under
-    --  From_Key. Index will be set to 1 for the first key and will be
-    --  incremented by one in each iteration. Quit can be set to True to
-    --  stop iteration; its initial value is False.
-    --
-    --  Key value that are not of type string (i.e. not REG_SZ / REG_EXPAND_SZ)
-    --  are skipped. In this case, the iterator behaves exactly as if the key
-    --  were not present. Note that you must use the Win32.Winreg API to deal
-    --  with this case. Furthermore, if Expand is set to True and the Sub_Key
-    --  is a REG_EXPAND_SZ the returned value will have the %name% variables
-    --  replaced by the corresponding environment variable value.
-    --
-    --  This iterator can be used in conjunction with For_Every_Key in
-    --  order to analyze all subkeys and values of a given registry key.
- 
- private
- 
-    type HKEY is mod 2 ** Standard'Address_Size;
- 
-    HKEY_CLASSES_ROOT     : constant HKEY := 16#80000000#;
-    HKEY_CURRENT_USER     : constant HKEY := 16#80000001#;
-    HKEY_LOCAL_MACHINE    : constant HKEY := 16#80000002#;
-    HKEY_USERS            : constant HKEY := 16#80000003#;
-    HKEY_PERFORMANCE_DATA : constant HKEY := 16#80000004#;
-    HKEY_CURRENT_CONFIG   : constant HKEY := 16#80000005#;
- 
- end GNAT.Registry;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-regpat.adb gcc-8.1.0/gcc/ada/g-regpat.adb
*** gcc-7.3.0/gcc/ada/g-regpat.adb	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-regpat.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,37 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                          G N A T . R E G P A T                           --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --               Copyright (C) 1986 by University of Toronto.               --
- --                      Copyright (C) 1999-2010, AdaCore                    --
- --                                                                          --
- -- GNAT is 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 does not require a body, since it is a package renaming. We
- --  provide a dummy file containing a No_Body pragma so that previous versions
- --  of the body (which did exist) will not interfere.
- 
- pragma No_Body;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-regpat.ads gcc-8.1.0/gcc/ada/g-regpat.ads
*** gcc-7.3.0/gcc/ada/g-regpat.ads	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-regpat.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,72 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                          G N A T . R E G P A T                           --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --               Copyright (C) 1986 by University of Toronto.               --
- --                     Copyright (C) 1996-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 implements roughly the same set of regular expressions as
- --  are available in the Perl or Python programming languages.
- 
- --  This is an extension of the original V7 style regular expression library
- --  written in C by Henry Spencer. Apart from the translation to Ada, the
- --  interface has been considerably changed to use the Ada String type
- --  instead of C-style nul-terminated strings.
- 
- --  See file s-regpat.ads for full documentation of the interface
- 
- ------------------------------------------------------------
- -- Summary of Pattern Matching Packages in GNAT Hierarchy --
- ------------------------------------------------------------
- 
- --  There are three related packages that perform pattern matching functions.
- --  the following is an outline of these packages, to help you determine
- --  which is best for your needs.
- 
- --     GNAT.Regexp (files g-regexp.ads/s-regexp.ads/s-regexp.adb)
- --       This is a simple package providing Unix-style regular expression
- --       matching with the restriction that it matches entire strings. It
- --       is particularly useful for file name matching, and in particular
- --       it provides "globbing patterns" that are useful in implementing
- --       unix or DOS style wild card matching for file names.
- 
- --     GNAT.Regpat (files g-regpat.ads/s-regpat.ads/s-regpat.adb)
- --       This is a more complete implementation of Unix-style regular
- --       expressions, copied from the Perl regular expression engine,
- --       written originally in C by Henry Spencer. It is functionally the
- --       same as that library.
- 
- --     GNAT.Spitbol.Patterns (files g-spipat.ads/g-spipat.adb)
- --       This is a completely general pattern matching package based on the
- --       pattern language of SNOBOL4, as implemented in SPITBOL. The pattern
- --       language is modeled on context free grammars, with context sensitive
- --       extensions that provide full (type 0) computational capabilities.
- 
- with System.Regpat;
- 
- package GNAT.Regpat renames System.Regpat;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-rewdat.adb gcc-8.1.0/gcc/ada/g-rewdat.adb
*** gcc-7.3.0/gcc/ada/g-rewdat.adb	Wed Jul 16 14:41:29 2014
--- gcc-8.1.0/gcc/ada/g-rewdat.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,253 ****
- -----------------------------------------------------------------------------
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                     G N A T . R E W R I T E _ D A T A                    --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --            Copyright (C) 2014, Free Software Foundation, Inc.            --
- --                                                                          --
- -- GNAT is 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.Unchecked_Conversion;
- 
- package body GNAT.Rewrite_Data is
- 
-    use Ada;
- 
-    subtype SEO is Stream_Element_Offset;
- 
-    procedure Do_Output
-      (B      : in out Buffer;
-       Data   : Stream_Element_Array;
-       Output : not null access procedure (Data : Stream_Element_Array));
-    --  Do the actual output. This ensures that we properly send the data
-    --  through linked rewrite buffers if any.
- 
-    ------------
-    -- Create --
-    ------------
- 
-    function Create
-      (Pattern, Value : String;
-       Size           : Stream_Element_Offset := 1_024) return Buffer
-    is
- 
-       subtype SP   is String (1 .. Pattern'Length);
-       subtype SEAP is Stream_Element_Array (1 .. Pattern'Length);
- 
-       subtype SV   is String (1 .. Value'Length);
-       subtype SEAV is Stream_Element_Array (1 .. Value'Length);
- 
-       function To_SEAP is new Unchecked_Conversion (SP, SEAP);
-       function To_SEAV is new Unchecked_Conversion (SV, SEAV);
- 
-    begin
-       --  Return result (can't be smaller than pattern)
- 
-       return B : Buffer
-                    (SEO'Max (Size, SEO (Pattern'Length)),
-                     SEO (Pattern'Length),
-                     SEO (Value'Length))
-       do
-          B.Pattern := To_SEAP (Pattern);
-          B.Value   := To_SEAV (Value);
-          B.Pos_C   := 0;
-          B.Pos_B   := 0;
-       end return;
-    end Create;
- 
-    ---------------
-    -- Do_Output --
-    ---------------
- 
-    procedure Do_Output
-      (B      : in out Buffer;
-       Data   : Stream_Element_Array;
-       Output : not null access procedure (Data : Stream_Element_Array))
-    is
-    begin
-       if B.Next = null then
-          Output (Data);
-       else
-          Write (B.Next.all, Data, Output);
-       end if;
-    end Do_Output;
- 
-    -----------
-    -- Flush --
-    -----------
- 
-    procedure Flush
-      (B      : in out Buffer;
-       Output : not null access procedure (Data : Stream_Element_Array))
-    is
-    begin
-       --  Flush output buffer
- 
-       if B.Pos_B > 0 then
-          Do_Output (B, B.Buffer (1 .. B.Pos_B), Output);
-       end if;
- 
-       --  Flush current buffer
- 
-       if B.Pos_C > 0 then
-          Do_Output (B, B.Current (1 .. B.Pos_C), Output);
-       end if;
- 
-       --  Flush linked buffer if any
- 
-       if B.Next /= null then
-          Flush (B.Next.all, Output);
-       end if;
- 
-       Reset (B);
-    end Flush;
- 
-    ----------
-    -- Link --
-    ----------
- 
-    procedure Link (From : in out Buffer; To : Buffer_Ref) is
-    begin
-       From.Next := To;
-    end Link;
- 
-    -----------
-    -- Reset --
-    -----------
- 
-    procedure Reset (B : in out Buffer) is
-    begin
-       B.Pos_B := 0;
-       B.Pos_C := 0;
- 
-       if B.Next /= null then
-          Reset (B.Next.all);
-       end if;
-    end Reset;
- 
-    -------------
-    -- Rewrite --
-    -------------
- 
-    procedure Rewrite
-      (B      : in out Buffer;
-       Input  : not null access procedure
-                  (Buffer : out Stream_Element_Array;
-                   Last   : out Stream_Element_Offset);
-       Output : not null access procedure (Data : Stream_Element_Array))
-    is
-       Buffer : Stream_Element_Array (1 .. B.Size);
-       Last   : Stream_Element_Offset;
- 
-    begin
-       Rewrite_All : loop
-          Input (Buffer, Last);
-          exit Rewrite_All when Last = 0;
-          Write (B, Buffer (1 .. Last), Output);
-       end loop Rewrite_All;
- 
-       Flush (B, Output);
-    end Rewrite;
- 
-    ----------
-    -- Size --
-    ----------
- 
-    function Size (B : Buffer) return Natural is
-    begin
-       return Natural (B.Pos_B + B.Pos_C);
-    end Size;
- 
-    -----------
-    -- Write --
-    -----------
- 
-    procedure Write
-      (B      : in out Buffer;
-       Data   : Stream_Element_Array;
-       Output : not null access procedure (Data : Stream_Element_Array))
-    is
-       procedure Need_Space (Size : Stream_Element_Offset);
-       pragma Inline (Need_Space);
- 
-       ----------------
-       -- Need_Space --
-       ----------------
- 
-       procedure Need_Space (Size : Stream_Element_Offset) is
-       begin
-          if B.Pos_B + Size > B.Size then
-             Do_Output (B, B.Buffer (1 .. B.Pos_B), Output);
-             B.Pos_B := 0;
-          end if;
-       end Need_Space;
- 
-    --  Start of processing for Write
- 
-    begin
-       if B.Size_Pattern = 0 then
-          Do_Output (B, Data, Output);
- 
-       else
-          for K in Data'Range loop
-             if Data (K) = B.Pattern (B.Pos_C + 1) then
- 
-                --  Store possible start of a match
- 
-                B.Pos_C := B.Pos_C + 1;
-                B.Current (B.Pos_C) := Data (K);
- 
-             else
-                --  Not part of pattern, if a start of a match was found,
-                --  remove it.
- 
-                if B.Pos_C /= 0 then
-                   Need_Space (B.Pos_C);
- 
-                   B.Buffer (B.Pos_B + 1 .. B.Pos_B + B.Pos_C) :=
-                     B.Current (1 .. B.Pos_C);
-                   B.Pos_B := B.Pos_B + B.Pos_C;
-                   B.Pos_C := 0;
-                end if;
- 
-                Need_Space (1);
-                B.Pos_B := B.Pos_B + 1;
-                B.Buffer (B.Pos_B) := Data (K);
-             end if;
- 
-             if B.Pos_C = B.Size_Pattern then
- 
-                --  The pattern is found
- 
-                Need_Space (B.Size_Value);
- 
-                B.Buffer (B.Pos_B + 1 .. B.Pos_B + B.Size_Value) := B.Value;
-                B.Pos_C := 0;
-                B.Pos_B := B.Pos_B + B.Size_Value;
-             end if;
-          end loop;
-       end if;
-    end Write;
- 
- end GNAT.Rewrite_Data;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-rewdat.ads gcc-8.1.0/gcc/ada/g-rewdat.ads
*** gcc-7.3.0/gcc/ada/g-rewdat.ads	Wed Jul 16 14:41:29 2014
--- gcc-8.1.0/gcc/ada/g-rewdat.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,152 ****
- ------------------------------------------------------------------------------
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                     G N A T . R E W R I T E _ D A T A                    --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --            Copyright (C) 2014, Free Software Foundation, Inc.            --
- --                                                                          --
- -- GNAT is 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 can be used to rewrite data on the fly. All occurrences of a
- --  string (named pattern) will be replaced by another string.
- 
- --  It is not necessary to load all data in memory and so this package can be
- --  used for large data chunks like disk files for example. The pattern is
- --  a standard string and not a regular expression.
- 
- --  There is no dynamic allocation in the implementation.
- 
- --  For example, to replace all occurrences of "Gnat" with "GNAT":
- 
- --    Rewriter : Buffer := Create (Pattern => "Gnat", Value => "GNAT");
- 
- --  The output procedure that will receive the rewritten data:
- 
- --    procedure Do (Data : Stream_Element_Array) is
- --    begin
- --       <implementation to handle Data>
- --    end Do;
- 
- --  Then:
- 
- --    Write (Rewriter, "Let's talk about Gnat compiler", Do'Access);
- --    Write (Rewriter, "Gnat is an Ada compiler", Do'Access);
- --    Flush (Rewriter, Do'Access);
- 
- --  Another possible usage is to specify a method to get the input data:
- 
- --    procedure Get
- --      (Buffer : out Stream_Element_Array;
- --       Last   : out Stream_Element_Offset)
- --    is
- --    begin
- --       <get some data from a file, a socket, etc...>
- --       Last := ...
- --       Buffer := ...
- --    end Get;
- 
- --  Then we can rewrite the whole file with:
- 
- --    Rewrite (Rewriter, Input => Get'Access, Output => Do'Access);
- 
- with Ada.Streams; use Ada.Streams;
- 
- package GNAT.Rewrite_Data is
- 
-    type Buffer (<>) is limited private;
-    type Buffer_Ref is access all Buffer;
- 
-    function Create
-      (Pattern, Value : String;
-       Size           : Stream_Element_Offset := 1_024) return Buffer;
-    --  Create a rewrite buffer. Pattern is the string to be rewritten as Value.
-    --  Size represents the size of the internal buffer used to store the data
-    --  ready to be output. A larger buffer may improve the performance, as the
-    --  Output routine (see Write, Rewrite below) will be called only when this
-    --  buffer is full. Note that Size cannot be lower than Pattern'Length, and
-    --  if this is the case, then Size value is set to Pattern'Length.
- 
-    function Size (B : Buffer) return Natural;
-    --  Returns the current size of the buffer (count of Stream_Array_Element)
- 
-    procedure Flush
-      (B      : in out Buffer;
-       Output : not null access procedure (Data : Stream_Element_Array));
-    --  Call Output for all remaining data in the buffer. The buffer is
-    --  reset and ready for another use after this call.
- 
-    procedure Reset (B : in out Buffer);
-    pragma Inline (Reset);
-    --  Clear all data in buffer, B is ready for another use. Note that this is
-    --  not needed after a Flush. Note: all data remaining in Buffer is lost.
- 
-    procedure Write
-      (B      : in out Buffer;
-       Data   : Stream_Element_Array;
-       Output : not null access procedure (Data : Stream_Element_Array));
-    --  Write Data into the buffer, call Output for any prepared data. Flush
-    --  must be called when the last piece of Data as been sent in the Buffer.
- 
-    procedure Rewrite
-      (B      : in out Buffer;
-       Input  : not null access procedure
-                           (Buffer : out Stream_Element_Array;
-                            Last   : out Stream_Element_Offset);
-       Output : not null access procedure (Data : Stream_Element_Array));
-    --  Read data from Input, rewrite it, and then call Output. When there is
-    --  no more data to be read from Input, Last must be set to 0. Before
-    --  leaving this routine, call Flush above to send all remaining data to
-    --  Output.
- 
-    procedure Link (From : in out Buffer; To : Buffer_Ref);
-    --  Link two rewrite buffers. That is, all data sent to From buffer will be
-    --  rewritten and then passed to the To rewrite buffer.
- 
- private
- 
-    type Buffer
-      (Size, Size_Pattern, Size_Value : Stream_Element_Offset) is
-    limited record
-       Buffer : Stream_Element_Array (1 .. Size);
-       --  Fully prepared/rewritten data waiting to be output
- 
-       Current : Stream_Element_Array (1 .. Size_Pattern);
-       --  Current data checked, this buffer contains every piece of data
-       --  starting with the pattern. It means that at any point:
-       --  Current (1 .. Pos_C) = Pattern (1 .. Pos_C).
- 
-       Pattern : Stream_Element_Array (1 .. Size_Pattern);
-       --  The pattern to look for
- 
-       Value : Stream_Element_Array (1 .. Size_Value);
-       --  The value the pattern is replaced by
- 
-       Pos_C : Stream_Element_Offset; -- last valid element in Current
-       Pos_B : Stream_Element_Offset; -- last valid element in Buffer
- 
-       Next  : Buffer_Ref;
-       --  A link to another rewriter if any
-    end record;
- 
- end GNAT.Rewrite_Data;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-sechas.adb gcc-8.1.0/gcc/ada/g-sechas.adb
*** gcc-7.3.0/gcc/ada/g-sechas.adb	Wed Nov 30 13:59:16 2016
--- gcc-8.1.0/gcc/ada/g-sechas.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,486 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                   G N A T . S E C U R E _ H A S H E S                    --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2009-2016, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 System;     use System;
- with Interfaces; use Interfaces;
- 
- package body GNAT.Secure_Hashes is
- 
-    Hex_Digit : constant array (Stream_Element range 0 .. 15) of Character :=
-                  "0123456789abcdef";
- 
-    type Fill_Buffer_Access is
-      access procedure
-        (M     : in out Message_State;
-         S     : String;
-         First : Natural;
-         Last  : out Natural);
-    --  A procedure to transfer data from S, starting at First, into M's block
-    --  buffer until either the block buffer is full or all data from S has been
-    --  consumed.
- 
-    procedure Fill_Buffer_Copy
-      (M     : in out Message_State;
-       S     : String;
-       First : Natural;
-       Last  : out Natural);
-    --  Transfer procedure which just copies data from S to M
- 
-    procedure Fill_Buffer_Swap
-      (M     : in out Message_State;
-       S     : String;
-       First : Natural;
-       Last  : out Natural);
-    --  Transfer procedure which swaps bytes from S when copying into M. S must
-    --  have even length. Note that the swapping is performed considering pairs
-    --  starting at S'First, even if S'First /= First (that is, if
-    --  First = S'First then the first copied byte is always S (S'First + 1),
-    --  and if First = S'First + 1 then the first copied byte is always
-    --  S (S'First).
- 
-    procedure To_String (SEA : Stream_Element_Array; S : out String);
-    --  Return the hexadecimal representation of SEA
- 
-    ----------------------
-    -- Fill_Buffer_Copy --
-    ----------------------
- 
-    procedure Fill_Buffer_Copy
-      (M     : in out Message_State;
-       S     : String;
-       First : Natural;
-       Last  : out Natural)
-    is
-       Buf_String : String (M.Buffer'Range);
-       for Buf_String'Address use M.Buffer'Address;
-       pragma Import (Ada, Buf_String);
- 
-       Length : constant Natural :=
-                  Natural'Min (M.Block_Length - M.Last, S'Last - First + 1);
- 
-    begin
-       pragma Assert (Length > 0);
- 
-       Buf_String (M.Last + 1 .. M.Last + Length) :=
-         S (First .. First + Length - 1);
-       M.Last := M.Last + Length;
-       Last := First + Length - 1;
-    end Fill_Buffer_Copy;
- 
-    ----------------------
-    -- Fill_Buffer_Swap --
-    ----------------------
- 
-    procedure Fill_Buffer_Swap
-      (M     : in out Message_State;
-       S     : String;
-       First : Natural;
-       Last  : out Natural)
-    is
-       pragma Assert (S'Length mod 2 = 0);
-       Length : constant Natural :=
-                   Natural'Min (M.Block_Length - M.Last, S'Last - First + 1);
-    begin
-       Last := First;
-       while Last - First < Length loop
-          M.Buffer (M.Last + 1 + Last - First) :=
-            (if (Last - S'First) mod 2 = 0
-             then S (Last + 1)
-             else S (Last - 1));
-          Last := Last + 1;
-       end loop;
-       M.Last := M.Last + Length;
-       Last := First + Length - 1;
-    end Fill_Buffer_Swap;
- 
-    ---------------
-    -- To_String --
-    ---------------
- 
-    procedure To_String (SEA : Stream_Element_Array; S : out String) is
-       pragma Assert (S'Length = 2 * SEA'Length);
-    begin
-       for J in SEA'Range loop
-          declare
-             S_J : constant Natural := 1 + Natural (J - SEA'First) * 2;
-          begin
-             S (S_J)     := Hex_Digit (SEA (J) / 16);
-             S (S_J + 1) := Hex_Digit (SEA (J) mod 16);
-          end;
-       end loop;
-    end To_String;
- 
-    -------
-    -- H --
-    -------
- 
-    package body H is
- 
-       procedure Update
-         (C           : in out Context;
-          S           : String;
-          Fill_Buffer : Fill_Buffer_Access);
-       --  Internal common routine for all Update procedures
- 
-       procedure Final
-         (C         : Context;
-          Hash_Bits : out Ada.Streams.Stream_Element_Array);
-       --  Perform final hashing operations (data padding) and extract the
-       --  (possibly truncated) state of C into Hash_Bits.
- 
-       ------------
-       -- Digest --
-       ------------
- 
-       function Digest (C : Context) return Message_Digest is
-          Hash_Bits : Stream_Element_Array
-                        (1 .. Stream_Element_Offset (Hash_Length));
-       begin
-          Final (C, Hash_Bits);
-          return MD : Message_Digest do
-             To_String (Hash_Bits, MD);
-          end return;
-       end Digest;
- 
-       function Digest (S : String) return Message_Digest is
-          C : Context;
-       begin
-          Update (C, S);
-          return Digest (C);
-       end Digest;
- 
-       function Digest (A : Stream_Element_Array) return Message_Digest is
-          C : Context;
-       begin
-          Update (C, A);
-          return Digest (C);
-       end Digest;
- 
-       function Digest (C : Context) return Binary_Message_Digest is
-          Hash_Bits : Stream_Element_Array
-                        (1 .. Stream_Element_Offset (Hash_Length));
-       begin
-          Final (C, Hash_Bits);
-          return Hash_Bits;
-       end Digest;
- 
-       function Digest (S : String) return Binary_Message_Digest is
-          C : Context;
-       begin
-          Update (C, S);
-          return Digest (C);
-       end Digest;
- 
-       function Digest
-         (A : Stream_Element_Array) return Binary_Message_Digest
-       is
-          C : Context;
-       begin
-          Update (C, A);
-          return Digest (C);
-       end Digest;
- 
-       -----------
-       -- Final --
-       -----------
- 
-       --  Once a complete message has been processed, it is padded with one 1
-       --  bit followed by enough 0 bits so that the last block is 2 * Word'Size
-       --  bits short of being completed. The last 2 * Word'Size bits are set to
-       --  the message size in bits (excluding padding).
- 
-       procedure Final
-         (C         : Context;
-          Hash_Bits : out Stream_Element_Array)
-       is
-          FC : Context := C;
- 
-          Zeroes : Natural;
-          --  Number of 0 bytes in padding
- 
-          Message_Length : Unsigned_64 := FC.M_State.Length;
-          --  Message length in bytes
- 
-          Size_Length : constant Natural :=
-                          2 * Hash_State.Word'Size / 8;
-          --  Length in bytes of the size representation
- 
-       begin
-          Zeroes := (Block_Length - 1 - Size_Length - FC.M_State.Last)
-                      mod FC.M_State.Block_Length;
-          declare
-             Pad : String (1 .. 1 + Zeroes + Size_Length) :=
-                     (1 => Character'Val (128), others => ASCII.NUL);
- 
-             Index       : Natural;
-             First_Index : Natural;
- 
-          begin
-             First_Index := (if Hash_Bit_Order = Low_Order_First
-                             then Pad'Last - Size_Length + 1
-                             else Pad'Last);
- 
-             Index := First_Index;
-             while Message_Length > 0 loop
-                if Index = First_Index then
- 
-                   --  Message_Length is in bytes, but we need to store it as
-                   --  a bit count.
- 
-                   Pad (Index) := Character'Val
-                                    (Shift_Left (Message_Length and 16#1f#, 3));
-                   Message_Length := Shift_Right (Message_Length, 5);
- 
-                else
-                   Pad (Index) := Character'Val (Message_Length and 16#ff#);
-                   Message_Length := Shift_Right (Message_Length, 8);
-                end if;
- 
-                Index := Index +
-                           (if Hash_Bit_Order = Low_Order_First then 1 else -1);
-             end loop;
- 
-             Update (FC, Pad);
-          end;
- 
-          pragma Assert (FC.M_State.Last = 0);
- 
-          Hash_State.To_Hash (FC.H_State, Hash_Bits);
- 
-          --  HMAC case: hash outer pad
- 
-          if C.KL /= 0 then
-             declare
-                Outer_C : Context;
-                Opad    : Stream_Element_Array :=
-                  (1 .. Stream_Element_Offset (Block_Length) => 16#5c#);
- 
-             begin
-                for J in C.Key'Range loop
-                   Opad (J) := Opad (J) xor C.Key (J);
-                end loop;
- 
-                Update (Outer_C, Opad);
-                Update (Outer_C, Hash_Bits);
- 
-                Final (Outer_C, Hash_Bits);
-             end;
-          end if;
-       end Final;
- 
-       --------------------------
-       -- HMAC_Initial_Context --
-       --------------------------
- 
-       function HMAC_Initial_Context (Key : String) return Context is
-       begin
-          if Key'Length = 0 then
-             raise Constraint_Error with "null key";
-          end if;
- 
-          return C : Context (KL => (if Key'Length <= Key_Length'Last
-                                     then Key'Length
-                                     else Stream_Element_Offset (Hash_Length)))
-          do
-             --  Set Key (if longer than block length, first hash it)
- 
-             if C.KL = Key'Length then
-                declare
-                   SK : String (1 .. Key'Length);
-                   for SK'Address use C.Key'Address;
-                   pragma Import (Ada, SK);
-                begin
-                   SK := Key;
-                end;
- 
-             else
-                C.Key := Digest (Key);
-             end if;
- 
-             --  Hash inner pad
- 
-             declare
-                Ipad : Stream_Element_Array :=
-                  (1 .. Stream_Element_Offset (Block_Length) => 16#36#);
- 
-             begin
-                for J in C.Key'Range loop
-                   Ipad (J) := Ipad (J) xor C.Key (J);
-                end loop;
- 
-                Update (C, Ipad);
-             end;
-          end return;
-       end HMAC_Initial_Context;
- 
-       ----------
-       -- Read --
-       ----------
- 
-       procedure Read
-         (Stream : in out Hash_Stream;
-          Item   : out Stream_Element_Array;
-          Last   : out Stream_Element_Offset)
-       is
-          pragma Unreferenced (Stream, Item, Last);
-       begin
-          raise Program_Error with "Hash_Stream is write-only";
-       end Read;
- 
-       ------------
-       -- Update --
-       ------------
- 
-       procedure Update
-         (C           : in out Context;
-          S           : String;
-          Fill_Buffer : Fill_Buffer_Access)
-       is
-          Last : Natural;
- 
-       begin
-          C.M_State.Length := C.M_State.Length + S'Length;
- 
-          Last := S'First - 1;
-          while Last < S'Last loop
-             Fill_Buffer (C.M_State, S, Last + 1, Last);
- 
-             if C.M_State.Last = Block_Length then
-                Transform (C.H_State, C.M_State);
-                C.M_State.Last := 0;
-             end if;
-          end loop;
-       end Update;
- 
-       ------------
-       -- Update --
-       ------------
- 
-       procedure Update (C : in out Context; Input : String) is
-       begin
-          Update (C, Input, Fill_Buffer_Copy'Access);
-       end Update;
- 
-       ------------
-       -- Update --
-       ------------
- 
-       procedure Update (C : in out Context; Input : Stream_Element_Array) is
-          S : String (1 .. Input'Length);
-          for S'Address use Input'Address;
-          pragma Import (Ada, S);
-       begin
-          Update (C, S, Fill_Buffer_Copy'Access);
-       end Update;
- 
-       -----------------
-       -- Wide_Update --
-       -----------------
- 
-       procedure Wide_Update (C : in out Context; Input : Wide_String) is
-          S : String (1 .. 2 * Input'Length);
-          for S'Address use Input'Address;
-          pragma Import (Ada, S);
-       begin
-          Update
-            (C, S,
-             (if System.Default_Bit_Order /= Low_Order_First
-              then Fill_Buffer_Swap'Access
-              else Fill_Buffer_Copy'Access));
-       end Wide_Update;
- 
-       -----------------
-       -- Wide_Digest --
-       -----------------
- 
-       function Wide_Digest (W : Wide_String) return Message_Digest is
-          C : Context;
-       begin
-          Wide_Update (C, W);
-          return Digest (C);
-       end Wide_Digest;
- 
-       function Wide_Digest (W : Wide_String) return Binary_Message_Digest is
-          C : Context;
-       begin
-          Wide_Update (C, W);
-          return Digest (C);
-       end Wide_Digest;
- 
-       -----------
-       -- Write --
-       -----------
- 
-       procedure Write
-          (Stream : in out Hash_Stream;
-           Item   : Stream_Element_Array)
-       is
-       begin
-          Update (Stream.C.all, Item);
-       end Write;
- 
-    end H;
- 
-    -------------------------
-    -- Hash_Function_State --
-    -------------------------
- 
-    package body Hash_Function_State is
- 
-       -------------
-       -- To_Hash --
-       -------------
- 
-       procedure To_Hash (H : State; H_Bits : out Stream_Element_Array) is
-          Hash_Words : constant Natural := H'Size / Word'Size;
-          Result     : State (1 .. Hash_Words) :=
-                         H (H'Last - Hash_Words + 1 .. H'Last);
- 
-          R_SEA : Stream_Element_Array (1 .. Result'Size / 8);
-          for R_SEA'Address use Result'Address;
-          pragma Import (Ada, R_SEA);
- 
-       begin
-          if System.Default_Bit_Order /= Hash_Bit_Order then
-             for J in Result'Range loop
-                Swap (Result (J)'Address);
-             end loop;
-          end if;
- 
-          --  Return truncated hash
- 
-          pragma Assert (H_Bits'Length <= R_SEA'Length);
-          H_Bits := R_SEA (R_SEA'First .. R_SEA'First + H_Bits'Length - 1);
-       end To_Hash;
- 
-    end Hash_Function_State;
- 
- end GNAT.Secure_Hashes;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-sechas.ads gcc-8.1.0/gcc/ada/g-sechas.ads
*** gcc-7.3.0/gcc/ada/g-sechas.ads	Thu Jul  7 13:05:08 2016
--- gcc-8.1.0/gcc/ada/g-sechas.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,240 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                   G N A T . S E C U R E _ H A S H E S                    --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2009-2016, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 common supporting code for a family of secure
- --  hash functions (including MD5 and the FIPS PUB 180-3 functions SHA-1,
- --  SHA-224, SHA-256, SHA-384 and SHA-512).
- 
- --  This is an internal unit and should be not used directly in applications.
- --  Use GNAT.MD5 and GNAT.SHA* instead.
- 
- with Ada.Streams; use Ada.Streams;
- 
- with Interfaces;
- 
- with System;
- 
- package GNAT.Secure_Hashes is
- 
-    type Buffer_Type is new String;
-    for Buffer_Type'Alignment use 8;
-    --  Secure hash functions use a string buffer that is also accessed as an
-    --  array of words, which may require up to 64 bit alignment.
- 
-    --  The function-independent part of processing state: A buffer of data
-    --  being accumulated until a complete block is ready for hashing.
- 
-    type Message_State (Block_Length : Natural) is record
-       Last : Natural := 0;
-       --  Index of last used element in Buffer
- 
-       Length : Interfaces.Unsigned_64 := 0;
-       --  Total length of processed data
- 
-       Buffer : Buffer_Type (1 .. Block_Length);
-       --  Data buffer
-    end record;
- 
-    --  The function-specific part of processing state:
- 
-    --  Each hash function maintains an internal state as an array of words,
-    --  which is ultimately converted to a stream representation with the
-    --  appropriate bit order.
- 
-    generic
-       type Word is mod <>;
-       --  Either 32 or 64 bits
- 
-       with procedure Swap (X : System.Address);
-       --  Byte swapping function for a Word at X
- 
-       Hash_Bit_Order : System.Bit_Order;
-       --  Bit order of the produced hash
- 
-    package Hash_Function_State is
- 
-       type State is array (Natural range <>) of Word;
-       --  Used to store a hash function's internal state
- 
-       procedure To_Hash
-         (H      : State;
-          H_Bits : out Stream_Element_Array);
-       --  Convert H to stream representation with the given bit order. If
-       --  H_Bits is smaller than the internal hash state, then the state
-       --  is truncated.
- 
-    end Hash_Function_State;
- 
-    --  Generic hashing framework: The user interface for each implemented
-    --  secure hash function is an instance of this generic package.
- 
-    generic
-       Block_Words : Natural;
-       --  Number of words in each block
- 
-       State_Words : Natural;
-       --  Number of words in internal state
- 
-       Hash_Words : Natural;
-       --  Number of words in the final hash (must be no greater than
-       --  State_Words).
- 
-       Hash_Bit_Order : System.Bit_Order;
-       --  Bit order used for conversion between bit representation and word
-       --  representation.
- 
-       with package Hash_State is new Hash_Function_State (<>);
-       --  Hash function state package
- 
-       Initial_State : Hash_State.State;
-       --  Initial value of the hash function state
- 
-       with procedure Transform
-         (H : in out Hash_State.State;
-          M : in out Message_State);
-       --  Transformation function updating H by processing a complete data
-       --  block from M.
- 
-    package H is
- 
-       --  The visible part of H is the interface to secure hashing functions
-       --  that is exposed to user applications, and is intended to remain
-       --  a stable interface.
- 
-       pragma Assert (Hash_Words <= State_Words);
- 
-       type Context is private;
-       --  The internal processing state of the hashing function
- 
-       function "=" (L, R : Context) return Boolean is abstract;
-       --  Context is the internal, implementation defined intermediate state
-       --  in a hash computation, and no specific semantics can be expected on
-       --  equality of context values. Only equality of final hash values (as
-       --  returned by the [Wide_]Digest functions below) is meaningful.
- 
-       Initial_Context : constant Context;
-       --  Initial value of a Context object. May be used to reinitialize
-       --  a Context value by simple assignment of this value to the object.
- 
-       function HMAC_Initial_Context (Key : String) return Context;
-       --  Initial Context for HMAC computation with the given Key
- 
-       procedure Update      (C : in out Context; Input : String);
-       procedure Wide_Update (C : in out Context; Input : Wide_String);
-       procedure Update
-         (C     : in out Context;
-          Input : Stream_Element_Array);
-       --  Update C to process the given input. Successive calls to Update are
-       --  equivalent to a single call with the concatenation of the inputs. For
-       --  the Wide_String version, each Wide_Character is processed low order
-       --  byte first.
- 
-       Word_Length : constant Natural := Hash_State.Word'Size / 8;
-       Hash_Length : constant Natural := Hash_Words * Word_Length;
- 
-       subtype Binary_Message_Digest is
-         Stream_Element_Array (1 .. Stream_Element_Offset (Hash_Length));
-       --  The fixed-length byte array returned by Digest, providing
-       --  the hash in binary representation.
- 
-       function Digest (C : Context) return Binary_Message_Digest;
-       --  Return hash or HMAC for the data accumulated with C
- 
-       function Digest      (S : String)      return Binary_Message_Digest;
-       function Wide_Digest (W : Wide_String) return Binary_Message_Digest;
-       function Digest
-         (A : Stream_Element_Array)           return Binary_Message_Digest;
-       --  These functions are equivalent to the corresponding Update (or
-       --  Wide_Update) on a default initialized Context, followed by Digest
-       --  on the resulting Context.
- 
-       subtype Message_Digest is String (1 .. 2 * Hash_Length);
-       --  The fixed-length string returned by Digest, providing the hash in
-       --  hexadecimal representation.
- 
-       function Digest (C : Context) return Message_Digest;
-       --  Return hash or HMAC for the data accumulated with C in hexadecimal
-       --  representation.
- 
-       function Digest      (S : String)               return Message_Digest;
-       function Wide_Digest (W : Wide_String)          return Message_Digest;
-       function Digest      (A : Stream_Element_Array) return Message_Digest;
-       --  These functions are equivalent to the corresponding Update (or
-       --  Wide_Update) on a default initialized Context, followed by Digest
-       --  on the resulting Context.
- 
-       type Hash_Stream (C : access Context) is
-         new Root_Stream_Type with private;
-       --  Stream wrapper converting Write calls to Update calls on C.
-       --  Arbitrary data structures can thus be conveniently hashed using
-       --  their stream attributes.
- 
-    private
- 
-       Block_Length : constant Natural := Block_Words * Word_Length;
-       --  Length in bytes of a data block
- 
-       subtype Key_Length is
-         Stream_Element_Offset range 0 .. Stream_Element_Offset (Block_Length);
- 
-       --  KL is 0 for a normal hash context, > 0 for HMAC
- 
-       type Context (KL : Key_Length := 0) is record
-          Key : Stream_Element_Array (1 .. KL);
-          --  HMAC key
- 
-          H_State : Hash_State.State (0 .. State_Words - 1) := Initial_State;
-          --  Function-specific state
- 
-          M_State : Message_State (Block_Length);
-          --  Function-independent state (block buffer)
-       end record;
- 
-       Initial_Context : constant Context (KL => 0) := (others => <>);
-       --  Initial values are provided by default initialization of Context
- 
-       type Hash_Stream (C : access Context) is
-         new Root_Stream_Type with null record;
- 
-       procedure Read
-         (Stream : in out Hash_Stream;
-          Item   : out Stream_Element_Array;
-          Last   : out Stream_Element_Offset);
-       --  Raise Program_Error: hash streams are write-only
- 
-       procedure Write
-          (Stream : in out Hash_Stream;
-           Item   : Stream_Element_Array);
-       --  Call Update
- 
-    end H;
- 
- end GNAT.Secure_Hashes;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-sehamd.adb gcc-8.1.0/gcc/ada/g-sehamd.adb
*** gcc-7.3.0/gcc/ada/g-sehamd.adb	Mon Nov 30 15:51:15 2009
--- gcc-8.1.0/gcc/ada/g-sehamd.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,342 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --               G N A T . S E C U R E _ H A S H E S . M D 5                --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --         Copyright (C) 2002-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- --
- -- 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 GNAT.Byte_Swapping; use GNAT.Byte_Swapping;
- 
- package body GNAT.Secure_Hashes.MD5 is
- 
-    use Interfaces;
- 
-    --  The sixteen values used to rotate the context words. Four for each
-    --  rounds. Used in procedure Transform.
- 
-    --  Round 1
- 
-    S11 : constant := 7;
-    S12 : constant := 12;
-    S13 : constant := 17;
-    S14 : constant := 22;
- 
-    --  Round 2
- 
-    S21 : constant := 5;
-    S22 : constant := 9;
-    S23 : constant := 14;
-    S24 : constant := 20;
- 
-    --  Round 3
- 
-    S31 : constant := 4;
-    S32 : constant := 11;
-    S33 : constant := 16;
-    S34 : constant := 23;
- 
-    --  Round 4
- 
-    S41 : constant := 6;
-    S42 : constant := 10;
-    S43 : constant := 15;
-    S44 : constant := 21;
- 
-    --  The following functions (F, FF, G, GG, H, HH, I and II) are the
-    --  equivalent of the macros of the same name in the example C
-    --  implementation in the annex of RFC 1321.
- 
-    function F (X, Y, Z : Unsigned_32) return Unsigned_32;
-    pragma Inline (F);
- 
-    procedure FF
-      (A       : in out Unsigned_32;
-       B, C, D : Unsigned_32;
-       X       : Unsigned_32;
-       AC      : Unsigned_32;
-       S       : Positive);
-    pragma Inline (FF);
- 
-    function G (X, Y, Z : Unsigned_32) return Unsigned_32;
-    pragma Inline (G);
- 
-    procedure GG
-      (A       : in out Unsigned_32;
-       B, C, D : Unsigned_32;
-       X       : Unsigned_32;
-       AC      : Unsigned_32;
-       S       : Positive);
-    pragma Inline (GG);
- 
-    function H (X, Y, Z : Unsigned_32) return Unsigned_32;
-    pragma Inline (H);
- 
-    procedure HH
-      (A       : in out Unsigned_32;
-       B, C, D : Unsigned_32;
-       X       : Unsigned_32;
-       AC      : Unsigned_32;
-       S       : Positive);
-    pragma Inline (HH);
- 
-    function I (X, Y, Z : Unsigned_32) return Unsigned_32;
-    pragma Inline (I);
- 
-    procedure II
-      (A       : in out Unsigned_32;
-       B, C, D : Unsigned_32;
-       X       : Unsigned_32;
-       AC      : Unsigned_32;
-       S       : Positive);
-    pragma Inline (II);
- 
-    -------
-    -- F --
-    -------
- 
-    function F (X, Y, Z : Unsigned_32) return Unsigned_32 is
-    begin
-       return (X and Y) or ((not X) and Z);
-    end F;
- 
-    --------
-    -- FF --
-    --------
- 
-    procedure FF
-      (A       : in out Unsigned_32;
-       B, C, D : Unsigned_32;
-       X       : Unsigned_32;
-       AC      : Unsigned_32;
-       S       : Positive)
-    is
-    begin
-       A := A + F (B, C, D) + X + AC;
-       A := Rotate_Left (A, S);
-       A := A + B;
-    end FF;
- 
-    -------
-    -- G --
-    -------
- 
-    function G (X, Y, Z : Unsigned_32) return Unsigned_32 is
-    begin
-       return (X and Z) or (Y and (not Z));
-    end G;
- 
-    --------
-    -- GG --
-    --------
- 
-    procedure GG
-      (A       : in out Unsigned_32;
-       B, C, D : Unsigned_32;
-       X       : Unsigned_32;
-       AC      : Unsigned_32;
-       S       : Positive)
-    is
-    begin
-       A := A + G (B, C, D) + X + AC;
-       A := Rotate_Left (A, S);
-       A := A + B;
-    end GG;
- 
-    -------
-    -- H --
-    -------
- 
-    function H (X, Y, Z : Unsigned_32) return Unsigned_32 is
-    begin
-       return X xor Y xor Z;
-    end H;
- 
-    --------
-    -- HH --
-    --------
- 
-    procedure HH
-      (A       : in out Unsigned_32;
-       B, C, D : Unsigned_32;
-       X       : Unsigned_32;
-       AC      : Unsigned_32;
-       S       : Positive)
-    is
-    begin
-       A := A + H (B, C, D) + X + AC;
-       A := Rotate_Left (A, S);
-       A := A + B;
-    end HH;
- 
-    -------
-    -- I --
-    -------
- 
-    function I (X, Y, Z : Unsigned_32) return Unsigned_32 is
-    begin
-       return Y xor (X or (not Z));
-    end I;
- 
-    --------
-    -- II --
-    --------
- 
-    procedure II
-      (A       : in out Unsigned_32;
-       B, C, D : Unsigned_32;
-       X       : Unsigned_32;
-       AC      : Unsigned_32;
-       S       : Positive)
-    is
-    begin
-       A := A + I (B, C, D) + X + AC;
-       A := Rotate_Left (A, S);
-       A := A + B;
-    end II;
- 
-    ---------------
-    -- Transform --
-    ---------------
- 
-    procedure Transform
-      (H : in out Hash_State.State;
-       M : in out Message_State)
-    is
-       use System;
- 
-       X : array (0 .. 15) of Interfaces.Unsigned_32;
-       for X'Address use M.Buffer'Address;
-       pragma Import (Ada, X);
- 
-       AA : Unsigned_32 := H (0);
-       BB : Unsigned_32 := H (1);
-       CC : Unsigned_32 := H (2);
-       DD : Unsigned_32 := H (3);
- 
-    begin
-       if Default_Bit_Order /= Low_Order_First then
-          for J in X'Range loop
-             Swap4 (X (J)'Address);
-          end loop;
-       end if;
- 
-       --  Round 1
- 
-       FF (AA, BB, CC, DD, X (00), 16#D76aa478#, S11); --  1
-       FF (DD, AA, BB, CC, X (01), 16#E8c7b756#, S12); --  2
-       FF (CC, DD, AA, BB, X (02), 16#242070db#, S13); --  3
-       FF (BB, CC, DD, AA, X (03), 16#C1bdceee#, S14); --  4
- 
-       FF (AA, BB, CC, DD, X (04), 16#f57c0faf#, S11); --  5
-       FF (DD, AA, BB, CC, X (05), 16#4787c62a#, S12); --  6
-       FF (CC, DD, AA, BB, X (06), 16#a8304613#, S13); --  7
-       FF (BB, CC, DD, AA, X (07), 16#fd469501#, S14); --  8
- 
-       FF (AA, BB, CC, DD, X (08), 16#698098d8#, S11); --  9
-       FF (DD, AA, BB, CC, X (09), 16#8b44f7af#, S12); --  10
-       FF (CC, DD, AA, BB, X (10), 16#ffff5bb1#, S13); --  11
-       FF (BB, CC, DD, AA, X (11), 16#895cd7be#, S14); --  12
- 
-       FF (AA, BB, CC, DD, X (12), 16#6b901122#, S11); --  13
-       FF (DD, AA, BB, CC, X (13), 16#fd987193#, S12); --  14
-       FF (CC, DD, AA, BB, X (14), 16#a679438e#, S13); --  15
-       FF (BB, CC, DD, AA, X (15), 16#49b40821#, S14); --  16
- 
-       --  Round 2
- 
-       GG (AA, BB, CC, DD, X (01), 16#f61e2562#, S21); --  17
-       GG (DD, AA, BB, CC, X (06), 16#c040b340#, S22); --  18
-       GG (CC, DD, AA, BB, X (11), 16#265e5a51#, S23); --  19
-       GG (BB, CC, DD, AA, X (00), 16#e9b6c7aa#, S24); --  20
- 
-       GG (AA, BB, CC, DD, X (05), 16#d62f105d#, S21); --  21
-       GG (DD, AA, BB, CC, X (10), 16#02441453#, S22); --  22
-       GG (CC, DD, AA, BB, X (15), 16#d8a1e681#, S23); --  23
-       GG (BB, CC, DD, AA, X (04), 16#e7d3fbc8#, S24); --  24
- 
-       GG (AA, BB, CC, DD, X (09), 16#21e1cde6#, S21); --  25
-       GG (DD, AA, BB, CC, X (14), 16#c33707d6#, S22); --  26
-       GG (CC, DD, AA, BB, X (03), 16#f4d50d87#, S23); --  27
-       GG (BB, CC, DD, AA, X (08), 16#455a14ed#, S24); --  28
- 
-       GG (AA, BB, CC, DD, X (13), 16#a9e3e905#, S21); --  29
-       GG (DD, AA, BB, CC, X (02), 16#fcefa3f8#, S22); --  30
-       GG (CC, DD, AA, BB, X (07), 16#676f02d9#, S23); --  31
-       GG (BB, CC, DD, AA, X (12), 16#8d2a4c8a#, S24); --  32
- 
-       --  Round 3
- 
-       HH (AA, BB, CC, DD, X (05), 16#fffa3942#, S31); --  33
-       HH (DD, AA, BB, CC, X (08), 16#8771f681#, S32); --  34
-       HH (CC, DD, AA, BB, X (11), 16#6d9d6122#, S33); --  35
-       HH (BB, CC, DD, AA, X (14), 16#fde5380c#, S34); --  36
- 
-       HH (AA, BB, CC, DD, X (01), 16#a4beea44#, S31); --  37
-       HH (DD, AA, BB, CC, X (04), 16#4bdecfa9#, S32); --  38
-       HH (CC, DD, AA, BB, X (07), 16#f6bb4b60#, S33); --  39
-       HH (BB, CC, DD, AA, X (10), 16#bebfbc70#, S34); --  40
- 
-       HH (AA, BB, CC, DD, X (13), 16#289b7ec6#, S31); --  41
-       HH (DD, AA, BB, CC, X (00), 16#eaa127fa#, S32); --  42
-       HH (CC, DD, AA, BB, X (03), 16#d4ef3085#, S33); --  43
-       HH (BB, CC, DD, AA, X (06), 16#04881d05#, S34); --  44
- 
-       HH (AA, BB, CC, DD, X (09), 16#d9d4d039#, S31); --  45
-       HH (DD, AA, BB, CC, X (12), 16#e6db99e5#, S32); --  46
-       HH (CC, DD, AA, BB, X (15), 16#1fa27cf8#, S33); --  47
-       HH (BB, CC, DD, AA, X (02), 16#c4ac5665#, S34); --  48
- 
-       --  Round 4
- 
-       II (AA, BB, CC, DD, X (00), 16#f4292244#, S41); --  49
-       II (DD, AA, BB, CC, X (07), 16#432aff97#, S42); --  50
-       II (CC, DD, AA, BB, X (14), 16#ab9423a7#, S43); --  51
-       II (BB, CC, DD, AA, X (05), 16#fc93a039#, S44); --  52
- 
-       II (AA, BB, CC, DD, X (12), 16#655b59c3#, S41); --  53
-       II (DD, AA, BB, CC, X (03), 16#8f0ccc92#, S42); --  54
-       II (CC, DD, AA, BB, X (10), 16#ffeff47d#, S43); --  55
-       II (BB, CC, DD, AA, X (01), 16#85845dd1#, S44); --  56
- 
-       II (AA, BB, CC, DD, X (08), 16#6fa87e4f#, S41); --  57
-       II (DD, AA, BB, CC, X (15), 16#fe2ce6e0#, S42); --  58
-       II (CC, DD, AA, BB, X (06), 16#a3014314#, S43); --  59
-       II (BB, CC, DD, AA, X (13), 16#4e0811a1#, S44); --  60
- 
-       II (AA, BB, CC, DD, X (04), 16#f7537e82#, S41); --  61
-       II (DD, AA, BB, CC, X (11), 16#bd3af235#, S42); --  62
-       II (CC, DD, AA, BB, X (02), 16#2ad7d2bb#, S43); --  63
-       II (BB, CC, DD, AA, X (09), 16#eb86d391#, S44); --  64
- 
-       H (0) := H (0) + AA;
-       H (1) := H (1) + BB;
-       H (2) := H (2) + CC;
-       H (3) := H (3) + DD;
- 
-    end Transform;
- 
- end GNAT.Secure_Hashes.MD5;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-sehamd.ads gcc-8.1.0/gcc/ada/g-sehamd.ads
*** gcc-7.3.0/gcc/ada/g-sehamd.ads	Mon Nov 30 15:51:15 2009
--- gcc-8.1.0/gcc/ada/g-sehamd.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,74 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --               G N A T . S E C U R E _ H A S H E S . M D 5                --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --         Copyright (C) 2002-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- --
- -- 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 supporting code for implementation of the MD5
- --  Message-Digest Algorithm as described in RFC 1321. The complete text of
- --  RFC 1321 can be found at:
- --          http://www.ietf.org/rfc/rfc1321.txt
- 
- --  This is an internal unit and should not be used directly in applications.
- --  Use GNAT.MD5 instead.
- 
- with GNAT.Byte_Swapping;
- with Interfaces;
- 
- package GNAT.Secure_Hashes.MD5 is
- 
-    package Hash_State is
-      new GNAT.Secure_Hashes.Hash_Function_State
-            (Word           => Interfaces.Unsigned_32,
-             Swap           => GNAT.Byte_Swapping.Swap4,
-             Hash_Bit_Order => System.Low_Order_First);
-    --  MD5 operates on 32-bit little endian words
- 
-    Block_Words : constant := 16;
-    --  Messages are processed in chunks of 16 words
- 
-    procedure Transform
-      (H : in out Hash_State.State;
-       M : in out Message_State);
-    --  Transformation function applied for each block
- 
-    Initial_State : constant Hash_State.State;
-    --  Initialization vector
- 
- private
- 
-    Initial_A : constant := 16#67452301#;
-    Initial_B : constant := 16#EFCDAB89#;
-    Initial_C : constant := 16#98BADCFE#;
-    Initial_D : constant := 16#10325476#;
- 
-    Initial_State : constant Hash_State.State :=
-                      (Initial_A, Initial_B, Initial_C, Initial_D);
-    --  Initialization vector from RFC 1321
- 
- end GNAT.Secure_Hashes.MD5;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-sehash.adb gcc-8.1.0/gcc/ada/g-sehash.adb
*** gcc-7.3.0/gcc/ada/g-sehash.adb	Mon Nov 30 15:51:15 2009
--- gcc-8.1.0/gcc/ada/g-sehash.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,179 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --              G N A T . S E C U R E _ H A S H E S . S H A 1               --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --         Copyright (C) 2002-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- --
- -- 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 GNAT.Secure_Hashes.SHA1 is
- 
-    use Interfaces;
-    use GNAT.Byte_Swapping;
- 
-    --  The following functions are the four elementary components of each
-    --  of the four round groups (0 .. 19, 20 .. 39, 40 .. 59, and 60 .. 79)
-    --  defined in RFC 3174.
- 
-    function F0 (B, C, D : Unsigned_32) return Unsigned_32;
-    pragma Inline (F0);
- 
-    function F1 (B, C, D : Unsigned_32) return Unsigned_32;
-    pragma Inline (F1);
- 
-    function F2 (B, C, D : Unsigned_32) return Unsigned_32;
-    pragma Inline (F2);
- 
-    function F3 (B, C, D : Unsigned_32) return Unsigned_32;
-    pragma Inline (F3);
- 
-    --------
-    -- F0 --
-    --------
- 
-    function F0
-      (B, C, D : Interfaces.Unsigned_32) return Interfaces.Unsigned_32
-    is
-    begin
-       return (B and C) or ((not B) and D);
-    end F0;
- 
-    --------
-    -- F1 --
-    --------
- 
-    function F1
-      (B, C, D : Interfaces.Unsigned_32) return Interfaces.Unsigned_32
-    is
-    begin
-       return B xor C xor D;
-    end F1;
- 
-    --------
-    -- F2 --
-    --------
- 
-    function F2
-      (B, C, D : Interfaces.Unsigned_32) return Interfaces.Unsigned_32
-    is
-    begin
-       return (B and C) or (B and D) or (C and D);
-    end F2;
- 
-    --------
-    -- F3 --
-    --------
- 
-    function F3
-      (B, C, D : Interfaces.Unsigned_32) return Interfaces.Unsigned_32
-      renames F1;
- 
-    ---------------
-    -- Transform --
-    ---------------
- 
-    procedure Transform
-      (H : in out Hash_State.State;
-       M : in out Message_State)
-    is
-       use System;
- 
-       type Words is array (Natural range <>) of Interfaces.Unsigned_32;
- 
-       X : Words (0 .. 15);
-       for X'Address use M.Buffer'Address;
-       pragma Import (Ada, X);
- 
-       W : Words (0 .. 79);
- 
-       A, B, C, D, E, Temp : Interfaces.Unsigned_32;
- 
-    begin
-       if Default_Bit_Order /= High_Order_First then
-          for J in X'Range loop
-             Swap4 (X (J)'Address);
-          end loop;
-       end if;
- 
-       --  a. Divide data block into sixteen words
- 
-       W (0 .. 15) := X;
- 
-       --  b. Prepare working block of 80 words
- 
-       for T in 16 .. 79 loop
- 
-          --  W(t) = S^1(W(t-3) XOR W(t-8) XOR W(t-14) XOR W(t-16))
- 
-          W (T) := Rotate_Left
-            (W (T - 3) xor W (T - 8) xor W (T - 14) xor W (T - 16), 1);
- 
-       end loop;
- 
-       --  c. Set up transformation variables
- 
-       A := H (0);
-       B := H (1);
-       C := H (2);
-       D := H (3);
-       E := H (4);
- 
-       --  d. For each of the 80 rounds, compute:
- 
-       --  TEMP = S^5(A) + f(t;B,C,D) + E + W(t) + K(t);
-       --  E = D;  D = C;  C = S^30(B);  B = A; A = TEMP;
- 
-       for T in 0 .. 19 loop
-          Temp := Rotate_Left (A, 5) + F0 (B, C, D) + E + W (T) + 16#5A827999#;
-          E := D; D := C; C := Rotate_Left (B, 30); B := A; A := Temp;
-       end loop;
- 
-       for T in 20 .. 39 loop
-          Temp := Rotate_Left (A, 5) + F1 (B, C, D) + E + W (T) + 16#6ED9EBA1#;
-          E := D; D := C; C := Rotate_Left (B, 30); B := A; A := Temp;
-       end loop;
- 
-       for T in 40 .. 59 loop
-          Temp := Rotate_Left (A, 5) + F2 (B, C, D) + E + W (T) + 16#8F1BBCDC#;
-          E := D; D := C; C := Rotate_Left (B, 30); B := A; A := Temp;
-       end loop;
- 
-       for T in 60 .. 79 loop
-          Temp := Rotate_Left (A, 5) + F3 (B, C, D) + E + W (T) + 16#CA62C1D6#;
-          E := D; D := C; C := Rotate_Left (B, 30); B := A; A := Temp;
-       end loop;
- 
-       --  e. Update context:
-       --  H0 = H0 + A, H1 = H1 + B, H2 = H2 + C, H3 = H3 + D, H4 = H4 + E
- 
-       H (0) := H (0) + A;
-       H (1) := H (1) + B;
-       H (2) := H (2) + C;
-       H (3) := H (3) + D;
-       H (4) := H (4) + E;
-    end Transform;
- 
- end GNAT.Secure_Hashes.SHA1;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-sehash.ads gcc-8.1.0/gcc/ada/g-sehash.ads
*** gcc-7.3.0/gcc/ada/g-sehash.ads	Wed Aug  3 10:10:40 2011
--- gcc-8.1.0/gcc/ada/g-sehash.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,72 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --              G N A T . S E C U R E _ H A S H E S . S H A 1               --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --         Copyright (C) 2002-2011, Free Software Foundation, Inc.          --
- --                                                                          --
- -- GNAT is 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 supporting code for implementation of the SHA-1
- --  secure hash function as described in FIPS PUB 180-3. The complete text
- --  of FIPS PUB 180-3 can be found at:
- --    http://csrc.nist.gov/publications/fips/fips180-3/fips180-3_final.pdf
- 
- --  This is an internal unit and should not be used directly in applications.
- --  Use GNAT.SHA1 instead.
- 
- with GNAT.Byte_Swapping;
- with Interfaces;
- 
- package GNAT.Secure_Hashes.SHA1 is
- 
-    package Hash_State is new Hash_Function_State
-      (Word           => Interfaces.Unsigned_32,
-       Swap           => GNAT.Byte_Swapping.Swap4,
-       Hash_Bit_Order => System.High_Order_First);
-    --  SHA-1 operates on 32-bit big endian words
- 
-    Block_Words : constant := 16;
-    --  Messages are processed in chunks of 16 words
- 
-    procedure Transform
-      (H : in out Hash_State.State;
-       M : in out Message_State);
-    --  Transformation function applied for each block
- 
-    Initial_State : constant Hash_State.State;
-    --  Initialization vector
- 
- private
- 
-    Initial_State : constant Hash_State.State :=
-                      (0 => 16#67452301#,
-                       1 => 16#EFCDAB89#,
-                       2 => 16#98BADCFE#,
-                       3 => 16#10325476#,
-                       4 => 16#C3D2E1F0#);
-    --  Initialization vector from FIPS PUB 180-3
- 
- end GNAT.Secure_Hashes.SHA1;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-semaph.adb gcc-8.1.0/gcc/ada/g-semaph.adb
*** gcc-7.3.0/gcc/ada/g-semaph.adb	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-semaph.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,84 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                      G N A T . S E M A P H O R E S                       --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 2003-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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. --
- -- It is now maintained by Ada Core Technologies Inc (http://www.gnat.com). --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- package body GNAT.Semaphores is
- 
-    ------------------------
-    -- Counting_Semaphore --
-    ------------------------
- 
-    protected body Counting_Semaphore is
- 
-       -----------
-       -- Seize --
-       -----------
- 
-       entry Seize when Count > 0 is
-       begin
-          Count := Count - 1;
-       end Seize;
- 
-       -------------
-       -- Release --
-       -------------
- 
-       procedure Release is
-       begin
-          Count := Count + 1;
-       end Release;
-    end Counting_Semaphore;
- 
-    ----------------------
-    -- Binary_Semaphore --
-    ----------------------
- 
-    protected body Binary_Semaphore is
- 
-       -----------
-       -- Seize --
-       -----------
- 
-       entry Seize when Available is
-       begin
-          Available := False;
-       end Seize;
- 
-       -------------
-       -- Release --
-       -------------
- 
-       procedure Release is
-       begin
-          Available := True;
-       end Release;
-    end Binary_Semaphore;
- 
- end GNAT.Semaphores;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-semaph.ads gcc-8.1.0/gcc/ada/g-semaph.ads
*** gcc-7.3.0/gcc/ada/g-semaph.ads	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-semaph.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,97 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                      G N A T . S E M A P H O R E S                       --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 2003-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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. --
- -- It is now maintained by Ada Core Technologies Inc (http://www.gnat.com). --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This package provides classic counting semaphores and binary semaphores.
- --  Both types are visibly defined as protected types so that users can make
- --  conditional and timed calls when appropriate.
- 
- with System;
- 
- package GNAT.Semaphores is
- 
-    Default_Ceiling : constant System.Priority := System.Default_Priority;
-    --  A convenient value for the priority discriminants that follow
- 
-    ------------------------
-    -- Counting_Semaphore --
-    ------------------------
- 
-    protected type Counting_Semaphore
-       (Initial_Value : Natural;
-       --  A counting semaphore contains an internal counter.  The initial
-       --  value of this counter is set by clients via the discriminant.
- 
-       Ceiling : System.Priority)
-       --  Users must specify the ceiling priority for the object. If the
-       --  Real-Time Systems Annex is not in use this value is not important.
-    is
-       pragma Priority (Ceiling);
- 
-       entry Seize;
-       --  Blocks caller until/unless the semaphore's internal counter is
-       --  greater than zero. Decrements the semaphore's internal counter when
-       --  executed.
- 
-       procedure Release;
-       --  Increments the semaphore's internal counter
- 
-    private
-       Count : Natural := Initial_Value;
-    end Counting_Semaphore;
- 
-    ----------------------
-    -- Binary_Semaphore --
-    ----------------------
- 
-    protected type Binary_Semaphore
-      (Initially_Available : Boolean;
-       --  Binary semaphores are either available or not; there is no internal
-       --  count involved. The discriminant value determines whether the
-       --  individual object is initially available.
- 
-       Ceiling : System.Priority)
-       --  Users must specify the ceiling priority for the object. If the
-       --  Real-Time Systems Annex is not in use this value is not important.
-    is
-       pragma Priority (Ceiling);
- 
-       entry Seize;
-       --  Blocks the caller unless/until semaphore is available. After
-       --  execution the semaphore is no longer available.
- 
-       procedure Release;
-       --  Makes the semaphore available
- 
-    private
-       Available : Boolean := Initially_Available;
-    end Binary_Semaphore;
- 
- end GNAT.Semaphores;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-sercom-linux.adb gcc-8.1.0/gcc/ada/g-sercom-linux.adb
*** gcc-7.3.0/gcc/ada/g-sercom-linux.adb	Fri Jan 13 10:19:19 2017
--- gcc-8.1.0/gcc/ada/g-sercom-linux.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,314 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --           G N A T . S E R I A L _ C O M M U N I C A T I O N S            --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                    Copyright (C) 2007-2016, AdaCore                      --
- --                                                                          --
- -- GNAT is 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 GNU/Linux implementation of this package
- 
- with Ada.Streams;                use Ada.Streams;
- with Ada;                        use Ada;
- with Ada.Unchecked_Deallocation;
- 
- with System;               use System;
- with System.Communication; use System.Communication;
- with System.CRTL;          use System.CRTL;
- with System.OS_Constants;
- 
- with GNAT.OS_Lib; use GNAT.OS_Lib;
- 
- package body GNAT.Serial_Communications is
- 
-    package OSC renames System.OS_Constants;
- 
-    use type Interfaces.C.unsigned;
- 
-    type Port_Data is new int;
- 
-    subtype unsigned is Interfaces.C.unsigned;
-    subtype char is Interfaces.C.char;
-    subtype unsigned_char is Interfaces.C.unsigned_char;
- 
-    function fcntl (fd : int; cmd : int; value : int) return int;
-    pragma Import (C, fcntl, "fcntl");
- 
-    C_Data_Rate : constant array (Data_Rate) of unsigned :=
-                    (B75     => OSC.B75,
-                     B110    => OSC.B110,
-                     B150    => OSC.B150,
-                     B300    => OSC.B300,
-                     B600    => OSC.B600,
-                     B1200   => OSC.B1200,
-                     B2400   => OSC.B2400,
-                     B4800   => OSC.B4800,
-                     B9600   => OSC.B9600,
-                     B19200  => OSC.B19200,
-                     B38400  => OSC.B38400,
-                     B57600  => OSC.B57600,
-                     B115200 => OSC.B115200);
- 
-    C_Bits      : constant array (Data_Bits) of unsigned :=
-                    (CS7 => OSC.CS7, CS8 => OSC.CS8);
- 
-    C_Stop_Bits : constant array (Stop_Bits_Number) of unsigned :=
-                    (One => 0, Two => OSC.CSTOPB);
- 
-    C_Parity    : constant array (Parity_Check) of unsigned :=
-                    (None => 0,
-                     Odd  => OSC.PARENB or OSC.PARODD,
-                     Even => OSC.PARENB);
- 
-    procedure Raise_Error (Message : String; Error : Integer := Errno);
-    pragma No_Return (Raise_Error);
- 
-    ----------
-    -- Name --
-    ----------
- 
-    function Name (Number : Positive) return Port_Name is
-       N     : constant Natural := Number - 1;
-       N_Img : constant String  := Natural'Image (N);
-    begin
-       return Port_Name ("/dev/ttyS" & N_Img (N_Img'First + 1 .. N_Img'Last));
-    end Name;
- 
-    ----------
-    -- Open --
-    ----------
- 
-    procedure Open
-      (Port : out Serial_Port;
-       Name : Port_Name)
-    is
-       use OSC;
- 
-       C_Name : constant String := String (Name) & ASCII.NUL;
-       Res    : int;
- 
-    begin
-       if Port.H = null then
-          Port.H := new Port_Data;
-       end if;
- 
-       Port.H.all := Port_Data (open
-          (C_Name (C_Name'First)'Address, int (O_RDWR + O_NOCTTY + O_NDELAY)));
- 
-       if Port.H.all = -1 then
-          Raise_Error ("open: open failed");
-       end if;
- 
-       --  By default we are in blocking mode
- 
-       Res := fcntl (int (Port.H.all), F_SETFL, 0);
- 
-       if Res = -1 then
-          Raise_Error ("open: fcntl failed");
-       end if;
-    end Open;
- 
-    -----------------
-    -- Raise_Error --
-    -----------------
- 
-    procedure Raise_Error (Message : String; Error : Integer := Errno) is
-    begin
-       raise Serial_Error with Message
-         & (if Error /= 0
-            then " (" & Errno_Message (Err => Error) & ')'
-            else "");
-    end Raise_Error;
- 
-    ----------
-    -- Read --
-    ----------
- 
-    overriding procedure Read
-      (Port   : in out Serial_Port;
-       Buffer : out Stream_Element_Array;
-       Last   : out Stream_Element_Offset)
-    is
-       Len : constant size_t := Buffer'Length;
-       Res : ssize_t;
- 
-    begin
-       if Port.H = null then
-          Raise_Error ("read: port not opened", 0);
-       end if;
- 
-       Res := read (Integer (Port.H.all), Buffer'Address, Len);
- 
-       if Res = -1 then
-          Raise_Error ("read failed");
-       end if;
- 
-       Last := Last_Index (Buffer'First, size_t (Res));
-    end Read;
- 
-    ---------
-    -- Set --
-    ---------
- 
-    procedure Set
-      (Port      : Serial_Port;
-       Rate      : Data_Rate        := B9600;
-       Bits      : Data_Bits        := CS8;
-       Stop_Bits : Stop_Bits_Number := One;
-       Parity    : Parity_Check     := None;
-       Block     : Boolean          := True;
-       Local     : Boolean          := True;
-       Flow      : Flow_Control     := None;
-       Timeout   : Duration         := 10.0)
-    is
-       use OSC;
- 
-       type termios is record
-          c_iflag  : unsigned;
-          c_oflag  : unsigned;
-          c_cflag  : unsigned;
-          c_lflag  : unsigned;
-          c_line   : unsigned_char;
-          c_cc     : Interfaces.C.char_array (0 .. 31);
-          c_ispeed : unsigned;
-          c_ospeed : unsigned;
-       end record;
-       pragma Convention (C, termios);
- 
-       function tcgetattr (fd : int; termios_p : Address) return int;
-       pragma Import (C, tcgetattr, "tcgetattr");
- 
-       function tcsetattr
-         (fd : int; action : int; termios_p : Address) return int;
-       pragma Import (C, tcsetattr, "tcsetattr");
- 
-       function tcflush (fd : int; queue_selector : int) return int;
-       pragma Import (C, tcflush, "tcflush");
- 
-       Current : termios;
- 
-       Res : int;
-       pragma Warnings (Off, Res);
-       --  Warnings off, since we don't always test the result
- 
-    begin
-       if Port.H = null then
-          Raise_Error ("set: port not opened", 0);
-       end if;
- 
-       --  Get current port settings
- 
-       Res := tcgetattr (int (Port.H.all), Current'Address);
- 
-       --  Change settings now
- 
-       Current.c_cflag := C_Data_Rate (Rate)
-                            or C_Bits (Bits)
-                            or C_Stop_Bits (Stop_Bits)
-                            or C_Parity (Parity)
-                            or CREAD;
-       Current.c_iflag := 0;
-       Current.c_lflag := 0;
-       Current.c_oflag := 0;
- 
-       if Local then
-          Current.c_cflag := Current.c_cflag or CLOCAL;
-       end if;
- 
-       case Flow is
-          when None =>
-             null;
- 
-          when RTS_CTS =>
-             Current.c_cflag := Current.c_cflag or CRTSCTS;
- 
-          when Xon_Xoff =>
-             Current.c_iflag := Current.c_iflag or IXON;
-       end case;
- 
-       Current.c_ispeed     := Data_Rate_Value (Rate);
-       Current.c_ospeed     := Data_Rate_Value (Rate);
-       Current.c_cc (VMIN)  := char'Val (0);
-       Current.c_cc (VTIME) := char'Val (Natural (Timeout * 10));
- 
-       --  Set port settings
- 
-       Res := tcflush (int (Port.H.all), TCIFLUSH);
-       Res := tcsetattr (int (Port.H.all), TCSANOW, Current'Address);
- 
-       --  Block
- 
-       Res := fcntl (int (Port.H.all), F_SETFL, (if Block then 0 else FNDELAY));
- 
-       if Res = -1 then
-          Raise_Error ("set: fcntl failed");
-       end if;
-    end Set;
- 
-    -----------
-    -- Write --
-    -----------
- 
-    overriding procedure Write
-      (Port   : in out Serial_Port;
-       Buffer : Stream_Element_Array)
-    is
-       Len : constant size_t := Buffer'Length;
-       Res : ssize_t;
- 
-    begin
-       if Port.H = null then
-          Raise_Error ("write: port not opened", 0);
-       end if;
- 
-       Res := write (int (Port.H.all), Buffer'Address, Len);
- 
-       if Res = -1 then
-          Raise_Error ("write failed");
-       end if;
- 
-       pragma Assert (size_t (Res) = Len);
-    end Write;
- 
-    -----------
-    -- Close --
-    -----------
- 
-    procedure Close (Port : in out Serial_Port) is
-       procedure Unchecked_Free is
-         new Unchecked_Deallocation (Port_Data, Port_Data_Access);
- 
-       Res : int;
-       pragma Unreferenced (Res);
- 
-    begin
-       if Port.H /= null then
-          Res := close (int (Port.H.all));
-          Unchecked_Free (Port.H);
-       end if;
-    end Close;
- 
- end GNAT.Serial_Communications;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-sercom-mingw.adb gcc-8.1.0/gcc/ada/g-sercom-mingw.adb
*** gcc-7.3.0/gcc/ada/g-sercom-mingw.adb	Mon Jul  4 10:44:24 2016
--- gcc-8.1.0/gcc/ada/g-sercom-mingw.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,316 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --           G N A T . S E R I A L _ C O M M U N I C A T I O N S            --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                    Copyright (C) 2007-2016, AdaCore                      --
- --                                                                          --
- -- GNAT is 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 Windows implementation of this package
- 
- with Ada.Streams;                use Ada.Streams;
- with Ada.Unchecked_Deallocation; use Ada;
- 
- with System;               use System;
- with System.Communication; use System.Communication;
- with System.CRTL;          use System.CRTL;
- with System.OS_Constants;
- with System.Win32;         use System.Win32;
- with System.Win32.Ext;     use System.Win32.Ext;
- 
- with GNAT.OS_Lib;
- 
- package body GNAT.Serial_Communications is
- 
-    package OSC renames System.OS_Constants;
- 
-    --  Common types
- 
-    type Port_Data is new HANDLE;
- 
-    C_Bits      : constant array (Data_Bits) of Interfaces.C.unsigned := (8, 7);
-    C_Parity    : constant array (Parity_Check) of Interfaces.C.unsigned :=
-                    (None => NOPARITY, Odd => ODDPARITY, Even => EVENPARITY);
-    C_Stop_Bits : constant array (Stop_Bits_Number) of Interfaces.C.unsigned :=
-                    (One => ONESTOPBIT, Two => TWOSTOPBITS);
- 
-    -----------
-    -- Files --
-    -----------
- 
-    procedure Raise_Error (Message : String; Error : DWORD := GetLastError);
-    pragma No_Return (Raise_Error);
- 
-    -----------
-    -- Close --
-    -----------
- 
-    procedure Close (Port : in out Serial_Port) is
-       procedure Unchecked_Free is
-         new Unchecked_Deallocation (Port_Data, Port_Data_Access);
- 
-       Success : BOOL;
- 
-    begin
-       if Port.H /= null then
-          Success := CloseHandle (HANDLE (Port.H.all));
-          Unchecked_Free (Port.H);
- 
-          if Success = Win32.FALSE then
-             Raise_Error ("error closing the port");
-          end if;
-       end if;
-    end Close;
- 
-    ----------
-    -- Name --
-    ----------
- 
-    function Name (Number : Positive) return Port_Name is
-       N_Img : constant String := Positive'Image (Number);
-    begin
-       if Number > 9 then
-          return
-            Port_Name ("\\.\COM" & N_Img (N_Img'First + 1 .. N_Img'Last));
-       else
-          return
-            Port_Name ("COM" & N_Img (N_Img'First + 1 .. N_Img'Last) & ':');
-       end if;
-    end Name;
- 
-    ----------
-    -- Open --
-    ----------
- 
-    procedure Open
-      (Port : out Serial_Port;
-       Name : Port_Name)
-    is
-       C_Name  : constant String := String (Name) & ASCII.NUL;
-       Success : BOOL;
-       pragma Unreferenced (Success);
- 
-    begin
-       if Port.H = null then
-          Port.H := new Port_Data;
-       else
-          Success := CloseHandle (HANDLE (Port.H.all));
-       end if;
- 
-       Port.H.all := CreateFileA
-         (lpFileName            => C_Name (C_Name'First)'Address,
-          dwDesiredAccess       => GENERIC_READ or GENERIC_WRITE,
-          dwShareMode           => 0,
-          lpSecurityAttributes  => null,
-          dwCreationDisposition => OPEN_EXISTING,
-          dwFlagsAndAttributes  => 0,
-          hTemplateFile         => 0);
- 
-       if Port.H.all = Port_Data (INVALID_HANDLE_VALUE) then
-          Raise_Error ("cannot open com port");
-       end if;
-    end Open;
- 
-    -----------------
-    -- Raise_Error --
-    -----------------
- 
-    procedure Raise_Error (Message : String; Error : DWORD := GetLastError) is
-    begin
-       raise Serial_Error with Message
-         & (if Error /= 0
-            then " (" & GNAT.OS_Lib.Errno_Message (Err => Integer (Error)) & ')'
-            else "");
-    end Raise_Error;
- 
-    ----------
-    -- Read --
-    ----------
- 
-    overriding procedure Read
-      (Port   : in out Serial_Port;
-       Buffer : out Stream_Element_Array;
-       Last   : out Stream_Element_Offset)
-    is
-       Success   : BOOL;
-       Read_Last : aliased DWORD;
- 
-    begin
-       if Port.H = null then
-          Raise_Error ("read: port not opened", 0);
-       end if;
- 
-       Success :=
-         ReadFile
-           (hFile                => HANDLE (Port.H.all),
-            lpBuffer             => Buffer (Buffer'First)'Address,
-            nNumberOfBytesToRead => DWORD (Buffer'Length),
-            lpNumberOfBytesRead  => Read_Last'Access,
-            lpOverlapped         => null);
- 
-       if Success = Win32.FALSE then
-          Raise_Error ("read error");
-       end if;
- 
-       Last := Last_Index (Buffer'First, size_t (Read_Last));
-    end Read;
- 
-    ---------
-    -- Set --
-    ---------
- 
-    procedure Set
-      (Port      : Serial_Port;
-       Rate      : Data_Rate        := B9600;
-       Bits      : Data_Bits        := CS8;
-       Stop_Bits : Stop_Bits_Number := One;
-       Parity    : Parity_Check     := None;
-       Block     : Boolean          := True;
-       Local     : Boolean          := True;
-       Flow      : Flow_Control     := None;
-       Timeout   : Duration         := 10.0)
-    is
-       pragma Unreferenced (Local);
- 
-       Success      : BOOL;
-       Com_Time_Out : aliased COMMTIMEOUTS;
-       Com_Settings : aliased DCB;
- 
-    begin
-       if Port.H = null then
-          Raise_Error ("set: port not opened", 0);
-       end if;
- 
-       Success := GetCommState (HANDLE (Port.H.all), Com_Settings'Access);
- 
-       if Success = Win32.FALSE then
-          Success := CloseHandle (HANDLE (Port.H.all));
-          Port.H.all := 0;
-          Raise_Error ("set: cannot get comm state");
-       end if;
- 
-       Com_Settings.BaudRate        := DWORD (Data_Rate_Value (Rate));
-       Com_Settings.fParity         := 1;
-       Com_Settings.fBinary         := Bits1 (System.Win32.TRUE);
-       Com_Settings.fOutxDsrFlow    := 0;
-       Com_Settings.fDsrSensitivity := 0;
-       Com_Settings.fDtrControl     := OSC.DTR_CONTROL_ENABLE;
-       Com_Settings.fInX            := 0;
-       Com_Settings.fRtsControl     := OSC.RTS_CONTROL_ENABLE;
- 
-       case Flow is
-          when None =>
-             Com_Settings.fOutX        := 0;
-             Com_Settings.fOutxCtsFlow := 0;
- 
-          when RTS_CTS =>
-             Com_Settings.fOutX        := 0;
-             Com_Settings.fOutxCtsFlow := 1;
- 
-          when Xon_Xoff =>
-             Com_Settings.fOutX        := 1;
-             Com_Settings.fOutxCtsFlow := 0;
-       end case;
- 
-       Com_Settings.fAbortOnError := 0;
-       Com_Settings.ByteSize      := BYTE (C_Bits (Bits));
-       Com_Settings.Parity        := BYTE (C_Parity (Parity));
-       Com_Settings.StopBits      := BYTE (C_Stop_Bits (Stop_Bits));
- 
-       Success := SetCommState (HANDLE (Port.H.all), Com_Settings'Access);
- 
-       if Success = Win32.FALSE then
-          Success := CloseHandle (HANDLE (Port.H.all));
-          Port.H.all := 0;
-          Raise_Error ("cannot set comm state");
-       end if;
- 
-       --  Set the timeout status, to honor our spec with respect to read
-       --  timeouts. Always disconnect write timeouts.
- 
-       --  Blocking reads - no timeout at all
- 
-       if Block then
-          Com_Time_Out := (others => 0);
- 
-       --  Non-blocking reads and null timeout - immediate return with what we
-       --  have - set ReadIntervalTimeout to MAXDWORD.
- 
-       elsif Timeout = 0.0 then
-          Com_Time_Out :=
-            (ReadIntervalTimeout => DWORD'Last,
-             others              => 0);
- 
-       --  Non-blocking reads with timeout - set total read timeout accordingly
- 
-       else
-          Com_Time_Out :=
-            (ReadTotalTimeoutConstant => DWORD (1000 * Timeout),
-             others                   => 0);
-       end if;
- 
-       Success :=
-         SetCommTimeouts
-           (hFile          => HANDLE (Port.H.all),
-            lpCommTimeouts => Com_Time_Out'Access);
- 
-       if Success = Win32.FALSE then
-          Raise_Error ("cannot set the timeout");
-       end if;
-    end Set;
- 
-    -----------
-    -- Write --
-    -----------
- 
-    overriding procedure Write
-      (Port   : in out Serial_Port;
-       Buffer : Stream_Element_Array)
-    is
-       Success   : BOOL;
-       Temp_Last : aliased DWORD;
- 
-    begin
-       if Port.H = null then
-          Raise_Error ("write: port not opened", 0);
-       end if;
- 
-       Success :=
-         WriteFile
-           (hFile                  => HANDLE (Port.H.all),
-            lpBuffer               => Buffer'Address,
-            nNumberOfBytesToWrite  => DWORD (Buffer'Length),
-            lpNumberOfBytesWritten => Temp_Last'Access,
-            lpOverlapped           => null);
- 
-       if Success = Win32.FALSE
-         or else Stream_Element_Offset (Temp_Last) /= Buffer'Length
-       then
-          Raise_Error ("failed to write data");
-       end if;
-    end Write;
- 
- end GNAT.Serial_Communications;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-sercom.adb gcc-8.1.0/gcc/ada/g-sercom.adb
*** gcc-7.3.0/gcc/ada/g-sercom.adb	Mon Aug  6 08:35:47 2012
--- gcc-8.1.0/gcc/ada/g-sercom.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,136 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --           G N A T . S E R I A L _ C O M M U N I C A T I O N S            --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 2007-2012, AdaCore                     --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Default version of this package
- 
- with Ada.Streams; use Ada.Streams;
- 
- package body GNAT.Serial_Communications is
- 
-    pragma Warnings (Off);
-    --  Kill warnings on unreferenced formals
- 
-    type Port_Data is new Integer;
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    procedure Unimplemented;
-    pragma No_Return (Unimplemented);
-    --  This procedure raises a Program_Error with an appropriate message
-    --  indicating that an unimplemented feature has been used.
- 
-    ----------
-    -- Name --
-    ----------
- 
-    function Name (Number : Positive) return Port_Name is
-    begin
-       Unimplemented;
-       return "";
-    end Name;
- 
-    ----------
-    -- Open --
-    ----------
- 
-    procedure Open
-      (Port : out Serial_Port;
-       Name : Port_Name)
-    is
-    begin
-       Unimplemented;
-    end Open;
- 
-    ---------
-    -- Set --
-    ---------
- 
-    procedure Set
-      (Port      : Serial_Port;
-       Rate      : Data_Rate        := B9600;
-       Bits      : Data_Bits        := CS8;
-       Stop_Bits : Stop_Bits_Number := One;
-       Parity    : Parity_Check     := None;
-       Block     : Boolean          := True;
-       Local     : Boolean          := True;
-       Flow      : Flow_Control     := None;
-       Timeout   : Duration         := 10.0)
-    is
-    begin
-       Unimplemented;
-    end Set;
- 
-    ----------
-    -- Read --
-    ----------
- 
-    overriding procedure Read
-      (Port   : in out Serial_Port;
-       Buffer : out Stream_Element_Array;
-       Last   : out Stream_Element_Offset)
-    is
-    begin
-       Unimplemented;
-    end Read;
- 
-    -----------
-    -- Write --
-    -----------
- 
-    overriding procedure Write
-      (Port   : in out Serial_Port;
-       Buffer : Stream_Element_Array)
-    is
-    begin
-       Unimplemented;
-    end Write;
- 
-    -----------
-    -- Close --
-    -----------
- 
-    procedure Close (Port : in out Serial_Port) is
-    begin
-       Unimplemented;
-    end Close;
- 
-    -------------------
-    -- Unimplemented; --
-    -------------------
- 
-    procedure Unimplemented is
-    begin
-       raise Program_Error with "Serial_Communications not implemented";
-    end Unimplemented;
- 
- end GNAT.Serial_Communications;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-sercom.ads gcc-8.1.0/gcc/ada/g-sercom.ads
*** gcc-7.3.0/gcc/ada/g-sercom.ads	Tue May 12 12:39:52 2015
--- gcc-8.1.0/gcc/ada/g-sercom.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,140 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --           G N A T . S E R I A L _ C O M M U N I C A T I O N S            --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                    Copyright (C) 2007-2015, AdaCore                      --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Serial communications package, implemented on Windows and GNU/Linux
- 
- with Ada.Streams;
- with Interfaces.C;
- 
- package GNAT.Serial_Communications is
- 
-    Serial_Error : exception;
-    --  Raised when a communication problem occurs
- 
-    type Port_Name is new String;
-    --  A serial com port name
- 
-    function Name (Number : Positive) return Port_Name;
-    --  Returns a possible port name for the given legacy PC architecture serial
-    --  port number (COM<number>: on Windows, ttyS<number-1> on Linux).
-    --  Note that this function does not support other kinds of serial ports
-    --  nor operating systems other than Windows and Linux. For all other
-    --  cases, an explicit port name can be passed directly to Open.
- 
-    type Data_Rate is
-      (B75, B110, B150, B300, B600, B1200, B2400, B4800, B9600,
-       B19200, B38400, B57600, B115200);
-    --  Speed of the communication
- 
-    type Data_Bits is (CS8, CS7);
-    --  Communication bits
- 
-    type Stop_Bits_Number is (One, Two);
-    --  One or two stop bits
- 
-    type Parity_Check is (None, Even, Odd);
-    --  Either no parity check or an even or odd parity
- 
-    type Flow_Control is (None, RTS_CTS, Xon_Xoff);
-    --  No flow control, hardware flow control, software flow control
- 
-    type Serial_Port is new Ada.Streams.Root_Stream_Type with private;
- 
-    procedure Open
-      (Port : out Serial_Port;
-       Name : Port_Name);
-    --  Open the given port name. Raises Serial_Error if the port cannot be
-    --  opened.
- 
-    procedure Set
-      (Port      : Serial_Port;
-       Rate      : Data_Rate        := B9600;
-       Bits      : Data_Bits        := CS8;
-       Stop_Bits : Stop_Bits_Number := One;
-       Parity    : Parity_Check     := None;
-       Block     : Boolean          := True;
-       Local     : Boolean          := True;
-       Flow      : Flow_Control     := None;
-       Timeout   : Duration         := 10.0);
-    --  The communication port settings. If Block is set then a read call
-    --  will wait for the whole buffer to be filed. If Block is not set then
-    --  the given Timeout (in seconds) is used. If Local is set then modem
-    --  control lines (in particular DCD) are ignored (not supported on
-    --  Windows). Flow indicates the flow control type as defined above.
- 
-    --  Note: the timeout precision may be limited on some implementation
-    --  (e.g. on GNU/Linux the maximum precision is a tenth of seconds).
- 
-    --  Note: calling this procedure may reinitialize the serial port hardware
-    --  and thus cause loss of some buffered data if used during communication.
- 
-    overriding procedure Read
-      (Port   : in out Serial_Port;
-       Buffer : out Ada.Streams.Stream_Element_Array;
-       Last   : out Ada.Streams.Stream_Element_Offset);
-    --  Read a set of bytes, put result into Buffer and set Last accordingly.
-    --  Last is set to Buffer'First - 1 if no byte has been read, unless
-    --  Buffer'First = Stream_Element_Offset'First, in which case the exception
-    --  Constraint_Error is raised instead.
- 
-    overriding procedure Write
-      (Port   : in out Serial_Port;
-       Buffer : Ada.Streams.Stream_Element_Array);
-    --  Write buffer into the port
- 
-    procedure Close (Port : in out Serial_Port);
-    --  Close port
- 
- private
- 
-    type Port_Data;
-    type Port_Data_Access is access Port_Data;
- 
-    type Serial_Port is new Ada.Streams.Root_Stream_Type with record
-       H : Port_Data_Access;
-    end record;
- 
-    Data_Rate_Value : constant array (Data_Rate) of Interfaces.C.unsigned :=
-                        (B75     =>      75,
-                         B110    =>     110,
-                         B150    =>     150,
-                         B300    =>     300,
-                         B600    =>     600,
-                         B1200   =>   1_200,
-                         B2400   =>   2_400,
-                         B4800   =>   4_800,
-                         B9600   =>   9_600,
-                         B19200  =>  19_200,
-                         B38400  =>  38_400,
-                         B57600  =>  57_600,
-                         B115200 => 115_200);
- 
- end GNAT.Serial_Communications;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-sestin.ads gcc-8.1.0/gcc/ada/g-sestin.ads
*** gcc-7.3.0/gcc/ada/g-sestin.ads	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-sestin.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,48 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --            G N A T . S E C O N D A R Y _ S T A C K _ I N F O             --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                      Copyright (C) 2004-2010, AdaCore                    --
- --                                                                          --
- -- GNAT is 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 facilities for obtaining information on secondary
- --  stack usage.
- 
- with System.Secondary_Stack;
- 
- package GNAT.Secondary_Stack_Info is
- 
-    function SS_Get_Max return Long_Long_Integer
-      renames System.Secondary_Stack.SS_Get_Max;
-    --  Return maximum used space in storage units for the current secondary
-    --  stack. For a dynamically allocated secondary stack, the returned
-    --  result is always -1. For a statically allocated secondary stack,
-    --  the returned value shows the largest amount of space allocated so
-    --  far during execution of the program to the current secondary stack,
-    --  i.e. the secondary stack for the current task.
- 
- end GNAT.Secondary_Stack_Info;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-sha1.adb gcc-8.1.0/gcc/ada/g-sha1.adb
*** gcc-7.3.0/gcc/ada/g-sha1.adb	Mon Nov 30 14:51:23 2009
--- gcc-8.1.0/gcc/ada/g-sha1.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,36 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                           G N A T . S H A 1                              --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --           Copyright (C) 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- --
- -- 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 does not require a body, since it is a package renaming. We
- --  provide a dummy file containing a No_Body pragma so that previous versions
- --  of the body (which did exist) will not interfere.
- 
- pragma No_Body;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-sha1.ads gcc-8.1.0/gcc/ada/g-sha1.ads
*** gcc-7.3.0/gcc/ada/g-sha1.ads	Wed Aug  3 10:10:40 2011
--- gcc-8.1.0/gcc/ada/g-sha1.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,49 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                            G N A T . S H A 1                             --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --           Copyright (C) 2009-2011, Free Software Foundation, Inc.        --
- --                                                                          --
- -- GNAT is 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 implements the SHA-1 secure hash function as described in
- --  FIPS PUB 180-3. The complete text of FIPS PUB 180-3 can be found at:
- --    http://csrc.nist.gov/publications/fips/fips180-3/fips180-3_final.pdf
- 
- --  See the declaration of GNAT.Secure_Hashes.H in g-sechas.ads for complete
- --  documentation.
- 
- with GNAT.Secure_Hashes.SHA1;
- with System;
- 
- package GNAT.SHA1 is new GNAT.Secure_Hashes.H
-   (Block_Words    => GNAT.Secure_Hashes.SHA1.Block_Words,
-    State_Words    => 5,
-    Hash_Words     => 5,
-    Hash_Bit_Order => System.High_Order_First,
-    Hash_State     => GNAT.Secure_Hashes.SHA1.Hash_State,
-    Initial_State  => GNAT.Secure_Hashes.SHA1.Initial_State,
-    Transform      => GNAT.Secure_Hashes.SHA1.Transform);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-sha224.ads gcc-8.1.0/gcc/ada/g-sha224.ads
*** gcc-7.3.0/gcc/ada/g-sha224.ads	Wed Aug  3 10:10:40 2011
--- gcc-8.1.0/gcc/ada/g-sha224.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,50 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                          G N A T . S H A 2 2 4                           --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --         Copyright (C) 2009-2011, Free Software Foundation, Inc.          --
- --                                                                          --
- -- GNAT is 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 implements the SHA-224 secure hash function as described in
- --  FIPS PUB 180-3. The complete text of FIPS PUB 180-3 can be found at:
- --    http://csrc.nist.gov/publications/fips/fips180-3/fips180-3_final.pdf
- 
- --  See the declaration of GNAT.Secure_Hashes.H in g-sechas.ads for complete
- --  documentation.
- 
- with GNAT.Secure_Hashes.SHA2_Common;
- with GNAT.Secure_Hashes.SHA2_32;
- with System;
- 
- package GNAT.SHA224 is new GNAT.Secure_Hashes.H
-   (Block_Words    => GNAT.Secure_Hashes.SHA2_Common.Block_Words,
-    State_Words    => 8,
-    Hash_Words     => 7,
-    Hash_Bit_Order => System.High_Order_First,
-    Hash_State     => GNAT.Secure_Hashes.SHA2_32.Hash_State,
-    Initial_State  => GNAT.Secure_Hashes.SHA2_32.SHA224_Init_State,
-    Transform      => GNAT.Secure_Hashes.SHA2_32.Transform);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-sha256.ads gcc-8.1.0/gcc/ada/g-sha256.ads
*** gcc-7.3.0/gcc/ada/g-sha256.ads	Wed Aug  3 10:10:40 2011
--- gcc-8.1.0/gcc/ada/g-sha256.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,50 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                          G N A T . S H A 2 5 6                           --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --        Copyright (C) 2009-2011, Free Software Foundation, Inc.           --
- --                                                                          --
- -- GNAT is 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 implements the SHA-256 secure hash function as described in
- --  FIPS PUB 180-3. The complete text of FIPS PUB 180-3 can be found at:
- --    http://csrc.nist.gov/publications/fips/fips180-3/fips180-3_final.pdf
- 
- --  See the declaration of GNAT.Secure_Hashes.H in g-sechas.ads for complete
- --  documentation.
- 
- with GNAT.Secure_Hashes.SHA2_Common;
- with GNAT.Secure_Hashes.SHA2_32;
- with System;
- 
- package GNAT.SHA256 is new GNAT.Secure_Hashes.H
-   (Block_Words    => GNAT.Secure_Hashes.SHA2_Common.Block_Words,
-    State_Words    => 8,
-    Hash_Words     => 8,
-    Hash_Bit_Order => System.High_Order_First,
-    Hash_State     => GNAT.Secure_Hashes.SHA2_32.Hash_State,
-    Initial_State  => GNAT.Secure_Hashes.SHA2_32.SHA256_Init_State,
-    Transform      => GNAT.Secure_Hashes.SHA2_32.Transform);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-sha384.ads gcc-8.1.0/gcc/ada/g-sha384.ads
*** gcc-7.3.0/gcc/ada/g-sha384.ads	Wed Aug  3 10:10:40 2011
--- gcc-8.1.0/gcc/ada/g-sha384.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,50 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                          G N A T . S H A 3 8 4                           --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --        Copyright (C) 2009-2011, Free Software Foundation, Inc.           --
- --                                                                          --
- -- GNAT is 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 implements the SHA-384 secure hash function as described in
- --  FIPS PUB 180-3. The complete text of FIPS PUB 180-3 can be found at:
- --    http://csrc.nist.gov/publications/fips/fips180-3/fips180-3_final.pdf
- 
- --  See the declaration of GNAT.Secure_Hashes.H in g-sechas.ads for complete
- --  documentation.
- 
- with GNAT.Secure_Hashes.SHA2_Common;
- with GNAT.Secure_Hashes.SHA2_64;
- with System;
- 
- package GNAT.SHA384 is new GNAT.Secure_Hashes.H
-   (Block_Words    => GNAT.Secure_Hashes.SHA2_Common.Block_Words,
-    State_Words    => 8,
-    Hash_Words     => 6,
-    Hash_Bit_Order => System.High_Order_First,
-    Hash_State     => GNAT.Secure_Hashes.SHA2_64.Hash_State,
-    Initial_State  => GNAT.Secure_Hashes.SHA2_64.SHA384_Init_State,
-    Transform      => GNAT.Secure_Hashes.SHA2_64.Transform);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-sha512.ads gcc-8.1.0/gcc/ada/g-sha512.ads
*** gcc-7.3.0/gcc/ada/g-sha512.ads	Wed Aug  3 10:10:40 2011
--- gcc-8.1.0/gcc/ada/g-sha512.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,50 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                          G N A T . S H A 5 1 2                           --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --        Copyright (C) 2009-2011, Free Software Foundation, Inc.           --
- --                                                                          --
- -- GNAT is 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 implements the SHA-512 secure hash function as described in
- --  FIPS PUB 180-3. The complete text of FIPS PUB 180-3 can be found at:
- --    http://csrc.nist.gov/publications/fips/fips180-3/fips180-3_final.pdf
- 
- --  See the declaration of GNAT.Secure_Hashes.H in g-sechas.ads for complete
- --  documentation.
- 
- with GNAT.Secure_Hashes.SHA2_Common;
- with GNAT.Secure_Hashes.SHA2_64;
- with System;
- 
- package GNAT.SHA512 is new GNAT.Secure_Hashes.H
-   (Block_Words    => GNAT.Secure_Hashes.SHA2_Common.Block_Words,
-    State_Words    => 8,
-    Hash_Words     => 8,
-    Hash_Bit_Order => System.High_Order_First,
-    Hash_State     => GNAT.Secure_Hashes.SHA2_64.Hash_State,
-    Initial_State  => GNAT.Secure_Hashes.SHA2_64.SHA512_Init_State,
-    Transform      => GNAT.Secure_Hashes.SHA2_64.Transform);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-shsh32.adb gcc-8.1.0/gcc/ada/g-shsh32.adb
*** gcc-7.3.0/gcc/ada/g-shsh32.adb	Mon Nov 30 15:51:15 2009
--- gcc-8.1.0/gcc/ada/g-shsh32.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,80 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --           G N A T . S E C U R E _ H A S H E S . S H A 2 _ 3 2            --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --           Copyright (C) 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- --
- -- 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 GNAT.Secure_Hashes.SHA2_32 is
- 
-    use Interfaces;
- 
-    ------------
-    -- Sigma0 --
-    ------------
- 
-    function Sigma0 (X : Word) return Word is
-    begin
-       return Rotate_Right (X, 2)
-          xor Rotate_Right (X, 13)
-          xor Rotate_Right (X, 22);
-    end Sigma0;
- 
-    ------------
-    -- Sigma1 --
-    ------------
- 
-    function Sigma1 (X : Word) return Word is
-    begin
-       return Rotate_Right (X, 6)
-          xor Rotate_Right (X, 11)
-          xor Rotate_Right (X, 25);
-    end Sigma1;
- 
-    --------
-    -- S0 --
-    --------
- 
-    function S0 (X : Word) return Word is
-    begin
-       return Rotate_Right (X, 7)
-          xor Rotate_Right (X, 18)
-          xor Shift_Right  (X, 3);
-    end S0;
- 
-    --------
-    -- S1 --
-    --------
- 
-    function S1 (X : Word) return Word is
-    begin
-       return Rotate_Right (X, 17)
-          xor Rotate_Right (X, 19)
-          xor Shift_Right  (X, 10);
-    end S1;
- 
- end GNAT.Secure_Hashes.SHA2_32;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-shsh32.ads gcc-8.1.0/gcc/ada/g-shsh32.ads
*** gcc-7.3.0/gcc/ada/g-shsh32.ads	Mon Dec 20 07:26:57 2010
--- gcc-8.1.0/gcc/ada/g-shsh32.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,108 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --           G N A T . S E C U R E _ H A S H E S . S H A 2 _ 3 2            --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --           Copyright (C) 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- --
- -- 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 support for the 32-bit FIPS PUB 180-3 functions
- --  SHA-224 and SHA-256.
- 
- --  This is an internal unit and should not be used directly in applications.
- --  Use GNAT.SHA224 and GNAT.SHA256 instead.
- 
- with Interfaces;
- with GNAT.Byte_Swapping;
- with GNAT.Secure_Hashes.SHA2_Common;
- 
- package GNAT.Secure_Hashes.SHA2_32 is
- 
-    subtype Word is Interfaces.Unsigned_32;
- 
-    package Hash_State is new Hash_Function_State
-      (Word           => Word,
-       Swap           => GNAT.Byte_Swapping.Swap4,
-       Hash_Bit_Order => System.High_Order_First);
-    --  SHA-224 and SHA-256 operate on 32-bit big endian words
- 
-    K : constant Hash_State.State (0 .. 63) :=
-          (16#428a2f98#, 16#71374491#, 16#b5c0fbcf#, 16#e9b5dba5#,
-           16#3956c25b#, 16#59f111f1#, 16#923f82a4#, 16#ab1c5ed5#,
-           16#d807aa98#, 16#12835b01#, 16#243185be#, 16#550c7dc3#,
-           16#72be5d74#, 16#80deb1fe#, 16#9bdc06a7#, 16#c19bf174#,
-           16#e49b69c1#, 16#efbe4786#, 16#0fc19dc6#, 16#240ca1cc#,
-           16#2de92c6f#, 16#4a7484aa#, 16#5cb0a9dc#, 16#76f988da#,
-           16#983e5152#, 16#a831c66d#, 16#b00327c8#, 16#bf597fc7#,
-           16#c6e00bf3#, 16#d5a79147#, 16#06ca6351#, 16#14292967#,
-           16#27b70a85#, 16#2e1b2138#, 16#4d2c6dfc#, 16#53380d13#,
-           16#650a7354#, 16#766a0abb#, 16#81c2c92e#, 16#92722c85#,
-           16#a2bfe8a1#, 16#a81a664b#, 16#c24b8b70#, 16#c76c51a3#,
-           16#d192e819#, 16#d6990624#, 16#f40e3585#, 16#106aa070#,
-           16#19a4c116#, 16#1e376c08#, 16#2748774c#, 16#34b0bcb5#,
-           16#391c0cb3#, 16#4ed8aa4a#, 16#5b9cca4f#, 16#682e6ff3#,
-           16#748f82ee#, 16#78a5636f#, 16#84c87814#, 16#8cc70208#,
-           16#90befffa#, 16#a4506ceb#, 16#bef9a3f7#, 16#c67178f2#);
-    --  Constants from FIPS PUB 180-3
- 
-    function Sigma0 (X : Word) return Word;
-    function Sigma1 (X : Word) return Word;
-    function S0 (X : Word) return Word;
-    function S1 (X : Word) return Word;
-    pragma Inline (Sigma0, Sigma1, S0, S1);
-    --  Elementary functions Sigma^256_0, Sigma^256_1, sigma^256_0, sigma^256_1
-    --  from FIPS PUB 180-3.
- 
-    procedure Transform is new SHA2_Common.Transform
-      (Hash_State => Hash_State,
-       K          => K,
-       Rounds     => 64,
-       Sigma0     => Sigma0,
-       Sigma1     => Sigma1,
-       S0         => S0,
-       S1         => S1);
- 
-    SHA224_Init_State : constant Hash_State.State (0 .. 7) :=
-                          (0 => 16#c1059ed8#,
-                           1 => 16#367cd507#,
-                           2 => 16#3070dd17#,
-                           3 => 16#f70e5939#,
-                           4 => 16#ffc00b31#,
-                           5 => 16#68581511#,
-                           6 => 16#64f98fa7#,
-                           7 => 16#befa4fa4#);
-    SHA256_Init_State : constant Hash_State.State (0 .. 7) :=
-                          (0 => 16#6a09e667#,
-                           1 => 16#bb67ae85#,
-                           2 => 16#3c6ef372#,
-                           3 => 16#a54ff53a#,
-                           4 => 16#510e527f#,
-                           5 => 16#9b05688c#,
-                           6 => 16#1f83d9ab#,
-                           7 => 16#5be0cd19#);
-    --  Initialization vectors from FIPS PUB 180-3
- 
- end GNAT.Secure_Hashes.SHA2_32;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-shsh64.adb gcc-8.1.0/gcc/ada/g-shsh64.adb
*** gcc-7.3.0/gcc/ada/g-shsh64.adb	Mon Nov 30 15:51:15 2009
--- gcc-8.1.0/gcc/ada/g-shsh64.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,80 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --           G N A T . S E C U R E _ H A S H E S . S H A 2 _ 6 4            --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --           Copyright (C) 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- --
- -- 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 GNAT.Secure_Hashes.SHA2_64 is
- 
-    use Interfaces;
- 
-    ------------
-    -- Sigma0 --
-    ------------
- 
-    function Sigma0 (X : Word) return Word is
-    begin
-       return Rotate_Right (X, 28)
-          xor Rotate_Right (X, 34)
-          xor Rotate_Right (X, 39);
-    end Sigma0;
- 
-    ------------
-    -- Sigma1 --
-    ------------
- 
-    function Sigma1 (X : Word) return Word is
-    begin
-       return Rotate_Right (X, 14)
-          xor Rotate_Right (X, 18)
-          xor Rotate_Right (X, 41);
-    end Sigma1;
- 
-    --------
-    -- S0 --
-    --------
- 
-    function S0 (X : Word) return Word is
-    begin
-       return Rotate_Right (X, 1)
-          xor Rotate_Right (X, 8)
-          xor Shift_Right  (X, 7);
-    end S0;
- 
-    --------
-    -- S1 --
-    --------
- 
-    function S1 (X : Word) return Word is
-    begin
-       return Rotate_Right (X, 19)
-          xor Rotate_Right (X, 61)
-          xor Shift_Right  (X, 6);
-    end S1;
- 
- end GNAT.Secure_Hashes.SHA2_64;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-shsh64.ads gcc-8.1.0/gcc/ada/g-shsh64.ads
*** gcc-7.3.0/gcc/ada/g-shsh64.ads	Mon Dec 20 07:26:57 2010
--- gcc-8.1.0/gcc/ada/g-shsh64.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,132 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --           G N A T . S E C U R E _ H A S H E S . S H A 2 _ 6 4            --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --           Copyright (C) 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- --
- -- 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 support for the 64-bit FIPS PUB 180-3 functions
- --  SHA-384 and SHA-512.
- 
- --  This is an internal unit and should not be used directly in applications.
- --  Use GNAT.SHA384 and GNAT.SHA512 instead.
- 
- with Interfaces;
- with GNAT.Byte_Swapping;
- 
- with GNAT.Secure_Hashes.SHA2_Common;
- 
- package GNAT.Secure_Hashes.SHA2_64 is
-    subtype Word is Interfaces.Unsigned_64;
- 
-    package Hash_State is new Hash_Function_State
-      (Word           => Word,
-       Swap           => GNAT.Byte_Swapping.Swap8,
-       Hash_Bit_Order => System.High_Order_First);
-    --  SHA-384 and SHA-512 operate on 64-bit big endian words
- 
-    K : Hash_State.State (0 .. 79) :=
-          (16#428a2f98d728ae22#, 16#7137449123ef65cd#,
-           16#b5c0fbcfec4d3b2f#, 16#e9b5dba58189dbbc#,
-           16#3956c25bf348b538#, 16#59f111f1b605d019#,
-           16#923f82a4af194f9b#, 16#ab1c5ed5da6d8118#,
-           16#d807aa98a3030242#, 16#12835b0145706fbe#,
-           16#243185be4ee4b28c#, 16#550c7dc3d5ffb4e2#,
-           16#72be5d74f27b896f#, 16#80deb1fe3b1696b1#,
-           16#9bdc06a725c71235#, 16#c19bf174cf692694#,
-           16#e49b69c19ef14ad2#, 16#efbe4786384f25e3#,
-           16#0fc19dc68b8cd5b5#, 16#240ca1cc77ac9c65#,
-           16#2de92c6f592b0275#, 16#4a7484aa6ea6e483#,
-           16#5cb0a9dcbd41fbd4#, 16#76f988da831153b5#,
-           16#983e5152ee66dfab#, 16#a831c66d2db43210#,
-           16#b00327c898fb213f#, 16#bf597fc7beef0ee4#,
-           16#c6e00bf33da88fc2#, 16#d5a79147930aa725#,
-           16#06ca6351e003826f#, 16#142929670a0e6e70#,
-           16#27b70a8546d22ffc#, 16#2e1b21385c26c926#,
-           16#4d2c6dfc5ac42aed#, 16#53380d139d95b3df#,
-           16#650a73548baf63de#, 16#766a0abb3c77b2a8#,
-           16#81c2c92e47edaee6#, 16#92722c851482353b#,
-           16#a2bfe8a14cf10364#, 16#a81a664bbc423001#,
-           16#c24b8b70d0f89791#, 16#c76c51a30654be30#,
-           16#d192e819d6ef5218#, 16#d69906245565a910#,
-           16#f40e35855771202a#, 16#106aa07032bbd1b8#,
-           16#19a4c116b8d2d0c8#, 16#1e376c085141ab53#,
-           16#2748774cdf8eeb99#, 16#34b0bcb5e19b48a8#,
-           16#391c0cb3c5c95a63#, 16#4ed8aa4ae3418acb#,
-           16#5b9cca4f7763e373#, 16#682e6ff3d6b2b8a3#,
-           16#748f82ee5defb2fc#, 16#78a5636f43172f60#,
-           16#84c87814a1f0ab72#, 16#8cc702081a6439ec#,
-           16#90befffa23631e28#, 16#a4506cebde82bde9#,
-           16#bef9a3f7b2c67915#, 16#c67178f2e372532b#,
-           16#ca273eceea26619c#, 16#d186b8c721c0c207#,
-           16#eada7dd6cde0eb1e#, 16#f57d4f7fee6ed178#,
-           16#06f067aa72176fba#, 16#0a637dc5a2c898a6#,
-           16#113f9804bef90dae#, 16#1b710b35131c471b#,
-           16#28db77f523047d84#, 16#32caab7b40c72493#,
-           16#3c9ebe0a15c9bebc#, 16#431d67c49c100d4c#,
-           16#4cc5d4becb3e42b6#, 16#597f299cfc657e2a#,
-           16#5fcb6fab3ad6faec#, 16#6c44198c4a475817#);
-    --  Constants from FIPS PUB 180-3
- 
-    function Sigma0 (X : Word) return Word;
-    function Sigma1 (X : Word) return Word;
-    function S0 (X : Word) return Word;
-    function S1 (X : Word) return Word;
-    pragma Inline (Sigma0, Sigma1, S0, S1);
-    --  Elementary functions Sigma^512_0, Sigma^512_1, sigma^512_0, sigma^512_1
-    --  from FIPS PUB 180-3.
- 
-    procedure Transform is new SHA2_Common.Transform
-      (Hash_State => Hash_State,
-       K          => K,
-       Rounds     => 80,
-       Sigma0     => Sigma0,
-       Sigma1     => Sigma1,
-       S0         => S0,
-       S1         => S1);
- 
-    SHA384_Init_State : constant Hash_State.State :=
-                          (0 => 16#cbbb9d5dc1059ed8#,
-                           1 => 16#629a292a367cd507#,
-                           2 => 16#9159015a3070dd17#,
-                           3 => 16#152fecd8f70e5939#,
-                           4 => 16#67332667ffc00b31#,
-                           5 => 16#8eb44a8768581511#,
-                           6 => 16#db0c2e0d64f98fa7#,
-                           7 => 16#47b5481dbefa4fa4#);
-    SHA512_Init_State : constant Hash_State.State :=
-                          (0 => 16#6a09e667f3bcc908#,
-                           1 => 16#bb67ae8584caa73b#,
-                           2 => 16#3c6ef372fe94f82b#,
-                           3 => 16#a54ff53a5f1d36f1#,
-                           4 => 16#510e527fade682d1#,
-                           5 => 16#9b05688c2b3e6c1f#,
-                           6 => 16#1f83d9abfb41bd6b#,
-                           7 => 16#5be0cd19137e2179#);
-    --  Initialization vectors from FIPS PUB 180-3
- 
- end GNAT.Secure_Hashes.SHA2_64;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-shshco.adb gcc-8.1.0/gcc/ada/g-shshco.adb
*** gcc-7.3.0/gcc/ada/g-shshco.adb	Mon Nov 30 15:51:15 2009
--- gcc-8.1.0/gcc/ada/g-shshco.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,135 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --       G N A T . S E C U R E _ H A S H E S . S H A 2 _ C O M M O N        --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --           Copyright (C) 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- --
- -- 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 GNAT.Secure_Hashes.SHA2_Common is
- 
-    ---------------
-    -- Transform --
-    ---------------
- 
-    procedure Transform
-      (H_St : in out Hash_State.State;
-       M_St : in out Message_State)
-    is
-       use System;
- 
-       subtype Word is Hash_State.Word;
-       use type Hash_State.Word;
- 
-       function Ch (X, Y, Z : Word) return Word;
-       function Maj (X, Y, Z : Word) return Word;
-       pragma Inline (Ch, Maj);
-       --  Elementary functions from FIPS PUB 180-3
- 
-       --------
-       -- Ch --
-       --------
- 
-       function Ch (X, Y, Z : Word) return Word is
-       begin
-          return (X and Y) xor ((not X) and Z);
-       end Ch;
- 
-       ---------
-       -- Maj --
-       ---------
- 
-       function Maj (X, Y, Z : Word) return Word is
-       begin
-          return (X and Y) xor (X and Z) xor (Y and Z);
-       end Maj;
- 
-       type Words is array (Natural range <>) of Word;
- 
-       X : Words (0 .. 15);
-       for X'Address use M_St.Buffer'Address;
-       pragma Import (Ada, X);
- 
-       W : Words (0 .. Rounds - 1);
- 
-       A, B, C, D, E, F, G, H, T1, T2 : Word;
- 
-    --  Start of processing for Transform
- 
-    begin
-       if Default_Bit_Order /= High_Order_First then
-          for J in X'Range loop
-             Hash_State.Swap (X (J)'Address);
-          end loop;
-       end if;
- 
-       --  1. Prepare message schedule
- 
-       W (0 .. 15) := X;
- 
-       for T in 16 .. Rounds - 1 loop
-          W (T) := S1 (W (T - 2)) + W (T - 7) + S0 (W (T - 15)) + W (T - 16);
-       end loop;
- 
-       --  2. Initialize working variables
- 
-       A := H_St (0);
-       B := H_St (1);
-       C := H_St (2);
-       D := H_St (3);
-       E := H_St (4);
-       F := H_St (5);
-       G := H_St (6);
-       H := H_St (7);
- 
-       --  3. Perform transformation rounds
- 
-       for T in 0 .. Rounds - 1 loop
-          T1 := H + Sigma1 (E) + Ch (E, F, G) + K (T) + W (T);
-          T2 := Sigma0 (A) + Maj (A, B, C);
-          H := G;
-          G := F;
-          F := E;
-          E := D + T1;
-          D := C;
-          C := B;
-          B := A;
-          A := T1 + T2;
-       end loop;
- 
-       --  4. Update hash state
- 
-       H_St (0) := A + H_St (0);
-       H_St (1) := B + H_St (1);
-       H_St (2) := C + H_St (2);
-       H_St (3) := D + H_St (3);
-       H_St (4) := E + H_St (4);
-       H_St (5) := F + H_St (5);
-       H_St (6) := G + H_St (6);
-       H_St (7) := H + H_St (7);
-    end Transform;
- 
- end GNAT.Secure_Hashes.SHA2_Common;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-shshco.ads gcc-8.1.0/gcc/ada/g-shshco.ads
*** gcc-7.3.0/gcc/ada/g-shshco.ads	Mon Nov 30 15:51:15 2009
--- gcc-8.1.0/gcc/ada/g-shshco.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,66 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --       G N A T . S E C U R E _ H A S H E S . S H A 2 _ C O M M O N        --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --           Copyright (C) 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- --
- -- 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 supporting code for implementation of the following
- --  secure hash functions described in FIPS PUB 180-3: SHA-224, SHA-256,
- --  SHA-384, SHA-512. It contains the generic transform operation that is
- --  common to the above four functions. The complete text of FIPS PUB 180-3
- --  can be found at:
- --    http://csrc.nist.gov/publications/fips/fips180-3/fips180-3_final.pdf
- 
- --  This is an internal unit and should not be used directly in applications.
- --  Use GNAT.SHA* instead.
- 
- package GNAT.Secure_Hashes.SHA2_Common is
- 
-    Block_Words : constant := 16;
-    --  All functions operate on blocks of 16 words
- 
-    generic
-       with package Hash_State is new Hash_Function_State (<>);
- 
-       Rounds : Natural;
-       --  Number of transformation rounds
- 
-       K : Hash_State.State;
-       --  Constants used in the transform operation
- 
-       with function Sigma0 (X : Hash_State.Word) return Hash_State.Word is <>;
-       with function Sigma1 (X : Hash_State.Word) return Hash_State.Word is <>;
-       with function S0 (X : Hash_State.Word) return Hash_State.Word is <>;
-       with function S1 (X : Hash_State.Word) return Hash_State.Word is <>;
-       --  FIPS PUB 180-3 elementary functions
- 
-    procedure Transform
-      (H_St : in out Hash_State.State;
-       M_St : in out Message_State);
- 
- end GNAT.Secure_Hashes.SHA2_Common;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-signal.adb gcc-8.1.0/gcc/ada/g-signal.adb
*** gcc-7.3.0/gcc/ada/g-signal.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/g-signal.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,65 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                         G N A T . S I G N A L S                          --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2003-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- --
- -- 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 System.Interrupts;
- 
- package body GNAT.Signals is
- 
-    package SI renames System.Interrupts;
- 
-    ------------------
-    -- Block_Signal --
-    ------------------
- 
-    procedure Block_Signal (Signal : Ada.Interrupts.Interrupt_ID) is
-    begin
-       SI.Block_Interrupt (SI.Interrupt_ID (Signal));
-    end Block_Signal;
- 
-    ----------------
-    -- Is_Blocked --
-    ----------------
- 
-    function Is_Blocked (Signal : Ada.Interrupts.Interrupt_ID) return Boolean is
-    begin
-       return SI.Is_Blocked (SI.Interrupt_ID (Signal));
-    end Is_Blocked;
- 
-    --------------------
-    -- Unblock_Signal --
-    --------------------
- 
-    procedure Unblock_Signal (Signal : Ada.Interrupts.Interrupt_ID) is
-    begin
-       SI.Unblock_Interrupt (SI.Interrupt_ID (Signal));
-    end Unblock_Signal;
- 
- end GNAT.Signals;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-signal.ads gcc-8.1.0/gcc/ada/g-signal.ads
*** gcc-7.3.0/gcc/ada/g-signal.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/g-signal.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,52 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                         G N A T . S I G N A L S                          --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2003-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- --
- -- 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 operations for querying and setting the blocked
- --  status of signals.
- 
- --  This package is supported only on targets where Ada.Interrupts.Interrupt_ID
- --  corresponds to software signals on the target, and where System.Interrupts
- --  provides the ability to block and unblock signals.
- 
- with Ada.Interrupts;
- 
- package GNAT.Signals is
- 
-    procedure Block_Signal (Signal : Ada.Interrupts.Interrupt_ID);
-    --  Block "Signal" at the process level
- 
-    procedure Unblock_Signal (Signal : Ada.Interrupts.Interrupt_ID);
-    --  Unblock "Signal" at the process level
- 
-    function Is_Blocked (Signal : Ada.Interrupts.Interrupt_ID) return Boolean;
-    --  "Signal" blocked at the process level?
- 
- end GNAT.Signals;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-soccon.ads gcc-8.1.0/gcc/ada/g-soccon.ads
*** gcc-7.3.0/gcc/ada/g-soccon.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/g-soccon.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,40 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --               G N A T . S O C K E T S . C O N S T A N T S                --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2000-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- --
- -- 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 a temporary compatibility renaming for deprecated
- --  internal package GNAT.Sockets.Constants.
- 
- --  This package should not be directly used by an applications program.
- --  It is a compatibility artefact to help building legacy code with newer
- --  compilers, and will be removed at some point in the future.
- 
- with System.OS_Constants;
- package GNAT.Sockets.Constants renames System.OS_Constants;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-socket-dummy.adb gcc-8.1.0/gcc/ada/g-socket-dummy.adb
*** gcc-7.3.0/gcc/ada/g-socket-dummy.adb	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-socket-dummy.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,32 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                         G N A T . S O C K E T S                          --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 2001-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 No_Body;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-socket-dummy.ads gcc-8.1.0/gcc/ada/g-socket-dummy.ads
*** gcc-7.3.0/gcc/ada/g-socket-dummy.ads	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-socket-dummy.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,37 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                         G N A T . S O C K E T S                          --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 2001-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 is a placeholder for the sockets binding for platforms where
- --  it is not implemented.
- 
- package GNAT.Sockets is
-    pragma Unimplemented_Unit;
- end GNAT.Sockets;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-socket.adb gcc-8.1.0/gcc/ada/g-socket.adb
*** gcc-7.3.0/gcc/ada/g-socket.adb	Mon Apr  3 22:30:56 2017
--- gcc-8.1.0/gcc/ada/g-socket.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,2779 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                         G N A T . S O C K E T S                          --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 2001-2016, AdaCore                     --
- --                                                                          --
- -- GNAT is 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.Streams;              use Ada.Streams;
- with Ada.Exceptions;           use Ada.Exceptions;
- with Ada.Finalization;
- with Ada.Unchecked_Conversion;
- 
- with GNAT.Sockets.Thin_Common; use GNAT.Sockets.Thin_Common;
- with GNAT.Sockets.Thin;        use GNAT.Sockets.Thin;
- 
- with GNAT.Sockets.Linker_Options;
- pragma Warnings (Off, GNAT.Sockets.Linker_Options);
- --  Need to include pragma Linker_Options which is platform dependent
- 
- with System;               use System;
- with System.Communication; use System.Communication;
- with System.CRTL;          use System.CRTL;
- with System.Task_Lock;
- 
- package body GNAT.Sockets is
- 
-    package C renames Interfaces.C;
- 
-    ENOERROR : constant := 0;
- 
-    Netdb_Buffer_Size : constant := SOSC.Need_Netdb_Buffer * 1024;
-    Need_Netdb_Lock   : constant Boolean := SOSC.Need_Netdb_Lock /= 0;
-    --  The network database functions gethostbyname, gethostbyaddr,
-    --  getservbyname and getservbyport can either be guaranteed task safe by
-    --  the operating system, or else return data through a user-provided buffer
-    --  to ensure concurrent uses do not interfere.
- 
-    --  Correspondence tables
- 
-    Levels : constant array (Level_Type) of C.int :=
-               (Socket_Level              => SOSC.SOL_SOCKET,
-                IP_Protocol_For_IP_Level  => SOSC.IPPROTO_IP,
-                IP_Protocol_For_UDP_Level => SOSC.IPPROTO_UDP,
-                IP_Protocol_For_TCP_Level => SOSC.IPPROTO_TCP);
- 
-    Modes : constant array (Mode_Type) of C.int :=
-              (Socket_Stream   => SOSC.SOCK_STREAM,
-               Socket_Datagram => SOSC.SOCK_DGRAM);
- 
-    Shutmodes : constant array (Shutmode_Type) of C.int :=
-                  (Shut_Read       => SOSC.SHUT_RD,
-                   Shut_Write      => SOSC.SHUT_WR,
-                   Shut_Read_Write => SOSC.SHUT_RDWR);
- 
-    Requests : constant array (Request_Name) of SOSC.IOCTL_Req_T :=
-                 (Non_Blocking_IO => SOSC.FIONBIO,
-                  N_Bytes_To_Read => SOSC.FIONREAD);
- 
-    Options : constant array (Specific_Option_Name) of C.int :=
-                (Keep_Alive          => SOSC.SO_KEEPALIVE,
-                 Reuse_Address       => SOSC.SO_REUSEADDR,
-                 Broadcast           => SOSC.SO_BROADCAST,
-                 Send_Buffer         => SOSC.SO_SNDBUF,
-                 Receive_Buffer      => SOSC.SO_RCVBUF,
-                 Linger              => SOSC.SO_LINGER,
-                 Error               => SOSC.SO_ERROR,
-                 No_Delay            => SOSC.TCP_NODELAY,
-                 Add_Membership      => SOSC.IP_ADD_MEMBERSHIP,
-                 Drop_Membership     => SOSC.IP_DROP_MEMBERSHIP,
-                 Multicast_If        => SOSC.IP_MULTICAST_IF,
-                 Multicast_TTL       => SOSC.IP_MULTICAST_TTL,
-                 Multicast_Loop      => SOSC.IP_MULTICAST_LOOP,
-                 Receive_Packet_Info => SOSC.IP_PKTINFO,
-                 Send_Timeout        => SOSC.SO_SNDTIMEO,
-                 Receive_Timeout     => SOSC.SO_RCVTIMEO,
-                 Busy_Polling        => SOSC.SO_BUSY_POLL);
-    --  ??? Note: for OpenSolaris, Receive_Packet_Info should be IP_RECVPKTINFO,
-    --  but for Linux compatibility this constant is the same as IP_PKTINFO.
- 
-    Flags : constant array (0 .. 3) of C.int :=
-              (0 => SOSC.MSG_OOB,     --  Process_Out_Of_Band_Data
-               1 => SOSC.MSG_PEEK,    --  Peek_At_Incoming_Data
-               2 => SOSC.MSG_WAITALL, --  Wait_For_A_Full_Reception
-               3 => SOSC.MSG_EOR);    --  Send_End_Of_Record
- 
-    Socket_Error_Id : constant Exception_Id := Socket_Error'Identity;
-    Host_Error_Id   : constant Exception_Id := Host_Error'Identity;
- 
-    Hex_To_Char : constant String (1 .. 16) := "0123456789ABCDEF";
-    --  Use to print in hexadecimal format
- 
-    -----------------------
-    -- Local subprograms --
-    -----------------------
- 
-    function Resolve_Error
-      (Error_Value : Integer;
-       From_Errno  : Boolean := True) return Error_Type;
-    --  Associate an enumeration value (error_type) to an error value (errno).
-    --  From_Errno prevents from mixing h_errno with errno.
- 
-    function To_Name   (N  : String) return Name_Type;
-    function To_String (HN : Name_Type) return String;
-    --  Conversion functions
- 
-    function To_Int (F : Request_Flag_Type) return C.int;
-    --  Return the int value corresponding to the specified flags combination
- 
-    function Set_Forced_Flags (F : C.int) return C.int;
-    --  Return F with the bits from SOSC.MSG_Forced_Flags forced set
- 
-    function Short_To_Network
-      (S : C.unsigned_short) return C.unsigned_short;
-    pragma Inline (Short_To_Network);
-    --  Convert a port number into a network port number
- 
-    function Network_To_Short
-      (S : C.unsigned_short) return C.unsigned_short
-    renames Short_To_Network;
-    --  Symmetric operation
- 
-    function Image
-      (Val :  Inet_Addr_VN_Type;
-       Hex :  Boolean := False) return String;
-    --  Output an array of inet address components in hex or decimal mode
- 
-    function Is_IP_Address (Name : String) return Boolean;
-    --  Return true when Name is an IPv4 address in dotted quad notation
- 
-    procedure Netdb_Lock;
-    pragma Inline (Netdb_Lock);
-    procedure Netdb_Unlock;
-    pragma Inline (Netdb_Unlock);
-    --  Lock/unlock operation used to protect netdb access for platforms that
-    --  require such protection.
- 
-    function To_In_Addr (Addr : Inet_Addr_Type) return In_Addr;
-    procedure To_Inet_Addr
-      (Addr   : In_Addr;
-       Result : out Inet_Addr_Type);
-    --  Conversion functions
- 
-    function To_Host_Entry (E : Hostent_Access) return Host_Entry_Type;
-    --  Conversion function
- 
-    function To_Service_Entry (E : Servent_Access) return Service_Entry_Type;
-    --  Conversion function
- 
-    function Value (S : System.Address) return String;
-    --  Same as Interfaces.C.Strings.Value but taking a System.Address
- 
-    function To_Timeval (Val : Timeval_Duration) return Timeval;
-    --  Separate Val in seconds and microseconds
- 
-    function To_Duration (Val : Timeval) return Timeval_Duration;
-    --  Reconstruct a Duration value from a Timeval record (seconds and
-    --  microseconds).
- 
-    procedure Raise_Socket_Error (Error : Integer);
-    --  Raise Socket_Error with an exception message describing the error code
-    --  from errno.
- 
-    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 Narrow (Item : in out Socket_Set_Type);
-    --  Update Last as it may be greater than the real last socket
- 
-    procedure Check_For_Fd_Set (Fd : Socket_Type);
-    pragma Inline (Check_For_Fd_Set);
-    --  Raise Constraint_Error if Fd is less than 0 or greater than or equal to
-    --  FD_SETSIZE, on platforms where fd_set is a bitmap.
- 
-    function Connect_Socket
-      (Socket : Socket_Type;
-       Server : Sock_Addr_Type) return C.int;
-    pragma Inline (Connect_Socket);
-    --  Underlying implementation for the Connect_Socket procedures
- 
-    --  Types needed for Datagram_Socket_Stream_Type
- 
-    type Datagram_Socket_Stream_Type is new Root_Stream_Type with record
-       Socket : Socket_Type;
-       To     : Sock_Addr_Type;
-       From   : Sock_Addr_Type;
-    end record;
- 
-    type Datagram_Socket_Stream_Access is
-      access all Datagram_Socket_Stream_Type;
- 
-    procedure Read
-      (Stream : in out Datagram_Socket_Stream_Type;
-       Item   : out Ada.Streams.Stream_Element_Array;
-       Last   : out Ada.Streams.Stream_Element_Offset);
- 
-    procedure Write
-      (Stream : in out Datagram_Socket_Stream_Type;
-       Item   : Ada.Streams.Stream_Element_Array);
- 
-    --  Types needed for Stream_Socket_Stream_Type
- 
-    type Stream_Socket_Stream_Type is new Root_Stream_Type with record
-       Socket : Socket_Type;
-    end record;
- 
-    type Stream_Socket_Stream_Access is
-      access all Stream_Socket_Stream_Type;
- 
-    procedure Read
-      (Stream : in out Stream_Socket_Stream_Type;
-       Item   : out Ada.Streams.Stream_Element_Array;
-       Last   : out Ada.Streams.Stream_Element_Offset);
- 
-    procedure Write
-      (Stream : in out Stream_Socket_Stream_Type;
-       Item   : Ada.Streams.Stream_Element_Array);
- 
-    procedure Wait_On_Socket
-      (Socket   : Socket_Type;
-       For_Read : Boolean;
-       Timeout  : Selector_Duration;
-       Selector : access Selector_Type := null;
-       Status   : out Selector_Status);
-    --  Common code for variants of socket operations supporting a timeout:
-    --  block in Check_Selector on Socket for at most the indicated timeout.
-    --  If For_Read is True, Socket is added to the read set for this call, else
-    --  it is added to the write set. If no selector is provided, a local one is
-    --  created for this call and destroyed prior to returning.
- 
-    type Sockets_Library_Controller is new Ada.Finalization.Limited_Controlled
-      with null record;
-    --  This type is used to generate automatic calls to Initialize and Finalize
-    --  during the elaboration and finalization of this package. A single object
-    --  of this type must exist at library level.
- 
-    function Err_Code_Image (E : Integer) return String;
-    --  Return the value of E surrounded with brackets
- 
-    procedure Initialize (X : in out Sockets_Library_Controller);
-    procedure Finalize   (X : in out Sockets_Library_Controller);
- 
-    procedure Normalize_Empty_Socket_Set (S : in out Socket_Set_Type);
-    --  If S is the empty set (detected by Last = No_Socket), make sure its
-    --  fd_set component is actually cleared. Note that the case where it is
-    --  not can occur for an uninitialized Socket_Set_Type object.
- 
-    function Is_Open (S : Selector_Type) return Boolean;
-    --  Return True for an "open" Selector_Type object, i.e. one for which
-    --  Create_Selector has been called and Close_Selector has not been called,
-    --  or the null selector.
- 
-    ---------
-    -- "+" --
-    ---------
- 
-    function "+" (L, R : Request_Flag_Type) return Request_Flag_Type is
-    begin
-       return L or R;
-    end "+";
- 
-    --------------------
-    -- Abort_Selector --
-    --------------------
- 
-    procedure Abort_Selector (Selector : Selector_Type) is
-       Res : C.int;
- 
-    begin
-       if not Is_Open (Selector) then
-          raise Program_Error with "closed selector";
- 
-       elsif Selector.Is_Null then
-          raise Program_Error with "null selector";
- 
-       end if;
- 
-       --  Send one byte to unblock select system call
- 
-       Res := Signalling_Fds.Write (C.int (Selector.W_Sig_Socket));
- 
-       if Res = Failure then
-          Raise_Socket_Error (Socket_Errno);
-       end if;
-    end Abort_Selector;
- 
-    -------------------
-    -- Accept_Socket --
-    -------------------
- 
-    procedure Accept_Socket
-      (Server  : Socket_Type;
-       Socket  : out Socket_Type;
-       Address : out Sock_Addr_Type)
-    is
-       Res : C.int;
-       Sin : aliased Sockaddr_In;
-       Len : aliased C.int := Sin'Size / 8;
- 
-    begin
-       Res := C_Accept (C.int (Server), Sin'Address, Len'Access);
- 
-       if Res = Failure then
-          Raise_Socket_Error (Socket_Errno);
-       end if;
- 
-       Socket := Socket_Type (Res);
- 
-       To_Inet_Addr (Sin.Sin_Addr, Address.Addr);
-       Address.Port := Port_Type (Network_To_Short (Sin.Sin_Port));
-    end Accept_Socket;
- 
-    -------------------
-    -- Accept_Socket --
-    -------------------
- 
-    procedure Accept_Socket
-      (Server   : Socket_Type;
-       Socket   : out Socket_Type;
-       Address  : out Sock_Addr_Type;
-       Timeout  : Selector_Duration;
-       Selector : access Selector_Type := null;
-       Status   : out Selector_Status)
-    is
-    begin
-       if Selector /= null and then not Is_Open (Selector.all) then
-          raise Program_Error with "closed selector";
-       end if;
- 
-       --  Wait for socket to become available for reading
- 
-       Wait_On_Socket
-         (Socket    => Server,
-          For_Read  => True,
-          Timeout   => Timeout,
-          Selector  => Selector,
-          Status    => Status);
- 
-       --  Accept connection if available
- 
-       if Status = Completed then
-          Accept_Socket (Server, Socket, Address);
-       else
-          Socket := No_Socket;
-       end if;
-    end Accept_Socket;
- 
-    ---------------
-    -- Addresses --
-    ---------------
- 
-    function Addresses
-      (E : Host_Entry_Type;
-       N : Positive := 1) return Inet_Addr_Type
-    is
-    begin
-       return E.Addresses (N);
-    end Addresses;
- 
-    ----------------------
-    -- Addresses_Length --
-    ----------------------
- 
-    function Addresses_Length (E : Host_Entry_Type) return Natural is
-    begin
-       return E.Addresses_Length;
-    end Addresses_Length;
- 
-    -------------
-    -- Aliases --
-    -------------
- 
-    function Aliases
-      (E : Host_Entry_Type;
-       N : Positive := 1) return String
-    is
-    begin
-       return To_String (E.Aliases (N));
-    end Aliases;
- 
-    -------------
-    -- Aliases --
-    -------------
- 
-    function Aliases
-      (S : Service_Entry_Type;
-       N : Positive := 1) return String
-    is
-    begin
-       return To_String (S.Aliases (N));
-    end Aliases;
- 
-    --------------------
-    -- Aliases_Length --
-    --------------------
- 
-    function Aliases_Length (E : Host_Entry_Type) return Natural is
-    begin
-       return E.Aliases_Length;
-    end Aliases_Length;
- 
-    --------------------
-    -- Aliases_Length --
-    --------------------
- 
-    function Aliases_Length (S : Service_Entry_Type) return Natural is
-    begin
-       return S.Aliases_Length;
-    end Aliases_Length;
- 
-    -----------------
-    -- Bind_Socket --
-    -----------------
- 
-    procedure Bind_Socket
-      (Socket  : Socket_Type;
-       Address : Sock_Addr_Type)
-    is
-       Res : C.int;
-       Sin : aliased Sockaddr_In;
-       Len : constant C.int := Sin'Size / 8;
-       --  This assumes that Address.Family = Family_Inet???
- 
-    begin
-       if Address.Family = Family_Inet6 then
-          raise Socket_Error with "IPv6 not supported";
-       end if;
- 
-       Set_Family  (Sin.Sin_Family, Address.Family);
-       Set_Address (Sin'Unchecked_Access, To_In_Addr (Address.Addr));
-       Set_Port
-         (Sin'Unchecked_Access,
-          Short_To_Network (C.unsigned_short (Address.Port)));
- 
-       Res := C_Bind (C.int (Socket), Sin'Address, Len);
- 
-       if Res = Failure then
-          Raise_Socket_Error (Socket_Errno);
-       end if;
-    end Bind_Socket;
- 
-    ----------------------
-    -- Check_For_Fd_Set --
-    ----------------------
- 
-    procedure Check_For_Fd_Set (Fd : Socket_Type) is
-       use SOSC;
- 
-    begin
-       --  On Windows, fd_set is a FD_SETSIZE array of socket ids:
-       --  no check required. Warnings suppressed because condition
-       --  is known at compile time.
- 
-       if Target_OS = Windows then
- 
-          return;
- 
-       --  On other platforms, fd_set is an FD_SETSIZE bitmap: check
-       --  that Fd is within range (otherwise behavior is undefined).
- 
-       elsif Fd < 0 or else Fd >= SOSC.FD_SETSIZE then
-          raise Constraint_Error
-            with "invalid value for socket set: " & Image (Fd);
-       end if;
-    end Check_For_Fd_Set;
- 
-    --------------------
-    -- Check_Selector --
-    --------------------
- 
-    procedure Check_Selector
-      (Selector     : Selector_Type;
-       R_Socket_Set : in out Socket_Set_Type;
-       W_Socket_Set : in out Socket_Set_Type;
-       Status       : out Selector_Status;
-       Timeout      : Selector_Duration := Forever)
-    is
-       E_Socket_Set : Socket_Set_Type;
-    begin
-       Check_Selector
-         (Selector, R_Socket_Set, W_Socket_Set, E_Socket_Set, Status, Timeout);
-    end Check_Selector;
- 
-    procedure Check_Selector
-      (Selector     : Selector_Type;
-       R_Socket_Set : in out Socket_Set_Type;
-       W_Socket_Set : in out Socket_Set_Type;
-       E_Socket_Set : in out Socket_Set_Type;
-       Status       : out Selector_Status;
-       Timeout      : Selector_Duration := Forever)
-    is
-       Res  : C.int;
-       Last : C.int;
-       RSig : Socket_Type := No_Socket;
-       TVal : aliased Timeval;
-       TPtr : Timeval_Access;
- 
-    begin
-       if not Is_Open (Selector) then
-          raise Program_Error with "closed selector";
-       end if;
- 
-       Status := Completed;
- 
-       --  No timeout or Forever is indicated by a null timeval pointer
- 
-       if Timeout = Forever then
-          TPtr := null;
-       else
-          TVal := To_Timeval (Timeout);
-          TPtr := TVal'Unchecked_Access;
-       end if;
- 
-       --  Add read signalling socket, if present
- 
-       if not Selector.Is_Null then
-          RSig := Selector.R_Sig_Socket;
-          Set (R_Socket_Set, RSig);
-       end if;
- 
-       Last := C.int'Max (C.int'Max (C.int (R_Socket_Set.Last),
-                                     C.int (W_Socket_Set.Last)),
-                                     C.int (E_Socket_Set.Last));
- 
-       --  Zero out fd_set for empty Socket_Set_Type objects
- 
-       Normalize_Empty_Socket_Set (R_Socket_Set);
-       Normalize_Empty_Socket_Set (W_Socket_Set);
-       Normalize_Empty_Socket_Set (E_Socket_Set);
- 
-       Res :=
-         C_Select
-          (Last + 1,
-           R_Socket_Set.Set'Access,
-           W_Socket_Set.Set'Access,
-           E_Socket_Set.Set'Access,
-           TPtr);
- 
-       if Res = Failure then
-          Raise_Socket_Error (Socket_Errno);
-       end if;
- 
-       --  If Select was resumed because of read signalling socket, read this
-       --  data and remove socket from set.
- 
-       if RSig /= No_Socket and then Is_Set (R_Socket_Set, RSig) then
-          Clear (R_Socket_Set, RSig);
- 
-          Res := Signalling_Fds.Read (C.int (RSig));
- 
-          if Res = Failure then
-             Raise_Socket_Error (Socket_Errno);
-          end if;
- 
-          Status := Aborted;
- 
-       elsif Res = 0 then
-          Status := Expired;
-       end if;
- 
-       --  Update socket sets in regard to their new contents
- 
-       Narrow (R_Socket_Set);
-       Narrow (W_Socket_Set);
-       Narrow (E_Socket_Set);
-    end Check_Selector;
- 
-    -----------
-    -- Clear --
-    -----------
- 
-    procedure Clear
-      (Item   : in out Socket_Set_Type;
-       Socket : Socket_Type)
-    is
-       Last : aliased C.int := C.int (Item.Last);
- 
-    begin
-       Check_For_Fd_Set (Socket);
- 
-       if Item.Last /= No_Socket then
-          Remove_Socket_From_Set (Item.Set'Access, C.int (Socket));
-          Last_Socket_In_Set (Item.Set'Access, Last'Unchecked_Access);
-          Item.Last := Socket_Type (Last);
-       end if;
-    end Clear;
- 
-    --------------------
-    -- Close_Selector --
-    --------------------
- 
-    procedure Close_Selector (Selector : in out Selector_Type) is
-    begin
-       --  Nothing to do if selector already in closed state
- 
-       if Selector.Is_Null or else not Is_Open (Selector) then
-          return;
-       end if;
- 
-       --  Close the signalling file descriptors used internally for the
-       --  implementation of Abort_Selector.
- 
-       Signalling_Fds.Close (C.int (Selector.R_Sig_Socket));
-       Signalling_Fds.Close (C.int (Selector.W_Sig_Socket));
- 
-       --  Reset R_Sig_Socket and W_Sig_Socket to No_Socket to ensure that any
-       --  (erroneous) subsequent attempt to use this selector properly fails.
- 
-       Selector.R_Sig_Socket := No_Socket;
-       Selector.W_Sig_Socket := No_Socket;
-    end Close_Selector;
- 
-    ------------------
-    -- Close_Socket --
-    ------------------
- 
-    procedure Close_Socket (Socket : Socket_Type) is
-       Res : C.int;
- 
-    begin
-       Res := C_Close (C.int (Socket));
- 
-       if Res = Failure then
-          Raise_Socket_Error (Socket_Errno);
-       end if;
-    end Close_Socket;
- 
-    --------------------
-    -- Connect_Socket --
-    --------------------
- 
-    function Connect_Socket
-      (Socket : Socket_Type;
-       Server : Sock_Addr_Type) return C.int
-    is
-       Sin : aliased Sockaddr_In;
-       Len : constant C.int := Sin'Size / 8;
- 
-    begin
-       if Server.Family = Family_Inet6 then
-          raise Socket_Error with "IPv6 not supported";
-       end if;
- 
-       Set_Family  (Sin.Sin_Family, Server.Family);
-       Set_Address (Sin'Unchecked_Access, To_In_Addr (Server.Addr));
-       Set_Port
-         (Sin'Unchecked_Access,
-          Short_To_Network (C.unsigned_short (Server.Port)));
- 
-       return C_Connect (C.int (Socket), Sin'Address, Len);
-    end Connect_Socket;
- 
-    procedure Connect_Socket
-      (Socket : Socket_Type;
-       Server : Sock_Addr_Type)
-    is
-    begin
-       if Connect_Socket (Socket, Server) = Failure then
-          Raise_Socket_Error (Socket_Errno);
-       end if;
-    end Connect_Socket;
- 
-    procedure Connect_Socket
-      (Socket   : Socket_Type;
-       Server   : Sock_Addr_Type;
-       Timeout  : Selector_Duration;
-       Selector : access Selector_Type := null;
-       Status   : out Selector_Status)
-    is
-       Req : Request_Type;
-       --  Used to set Socket to non-blocking I/O
- 
-       Conn_Err : aliased Integer;
-       --  Error status of the socket after completion of select(2)
- 
-       Res           : C.int;
-       Conn_Err_Size : aliased C.int := Conn_Err'Size / 8;
-       --  For getsockopt(2) call
- 
-    begin
-       if Selector /= null and then not Is_Open (Selector.all) then
-          raise Program_Error with "closed selector";
-       end if;
- 
-       --  Set the socket to non-blocking I/O
- 
-       Req := (Name => Non_Blocking_IO, Enabled => True);
-       Control_Socket (Socket, Request => Req);
- 
-       --  Start operation (non-blocking), will return Failure with errno set
-       --  to EINPROGRESS.
- 
-       Res := Connect_Socket (Socket, Server);
-       if Res = Failure then
-          Conn_Err := Socket_Errno;
-          if Conn_Err /= SOSC.EINPROGRESS then
-             Raise_Socket_Error (Conn_Err);
-          end if;
-       end if;
- 
-       --  Wait for socket to become available for writing (unless the Timeout
-       --  is zero, in which case we consider that it has already expired, and
-       --  we do not need to wait at all).
- 
-       if Timeout = 0.0 then
-          Status := Expired;
- 
-       else
-          Wait_On_Socket
-            (Socket   => Socket,
-             For_Read => False,
-             Timeout  => Timeout,
-             Selector => Selector,
-             Status   => Status);
-       end if;
- 
-       --  Check error condition (the asynchronous connect may have terminated
-       --  with an error, e.g. ECONNREFUSED) if select(2) completed.
- 
-       if Status = Completed then
-          Res := C_Getsockopt
-            (C.int (Socket), SOSC.SOL_SOCKET, SOSC.SO_ERROR,
-             Conn_Err'Address, Conn_Err_Size'Access);
- 
-          if Res /= 0 then
-             Conn_Err := Socket_Errno;
-          end if;
- 
-       else
-          Conn_Err := 0;
-       end if;
- 
-       --  Reset the socket to blocking I/O
- 
-       Req := (Name => Non_Blocking_IO, Enabled => False);
-       Control_Socket (Socket, Request => Req);
- 
-       --  Report error condition if any
- 
-       if Conn_Err /= 0 then
-          Raise_Socket_Error (Conn_Err);
-       end if;
-    end Connect_Socket;
- 
-    --------------------
-    -- Control_Socket --
-    --------------------
- 
-    procedure Control_Socket
-      (Socket  : Socket_Type;
-       Request : in out Request_Type)
-    is
-       Arg : aliased C.int;
-       Res : C.int;
- 
-    begin
-       case Request.Name is
-          when Non_Blocking_IO =>
-             Arg := C.int (Boolean'Pos (Request.Enabled));
- 
-          when N_Bytes_To_Read =>
-             null;
-       end case;
- 
-       Res := Socket_Ioctl
-                (C.int (Socket), Requests (Request.Name), Arg'Unchecked_Access);
- 
-       if Res = Failure then
-          Raise_Socket_Error (Socket_Errno);
-       end if;
- 
-       case Request.Name is
-          when Non_Blocking_IO =>
-             null;
- 
-          when N_Bytes_To_Read =>
-             Request.Size := Natural (Arg);
-       end case;
-    end Control_Socket;
- 
-    ----------
-    -- Copy --
-    ----------
- 
-    procedure Copy
-      (Source : Socket_Set_Type;
-       Target : out Socket_Set_Type)
-    is
-    begin
-       Target := Source;
-    end Copy;
- 
-    ---------------------
-    -- Create_Selector --
-    ---------------------
- 
-    procedure Create_Selector (Selector : out Selector_Type) is
-       Two_Fds : aliased Fd_Pair;
-       Res     : C.int;
- 
-    begin
-       if Is_Open (Selector) then
-          --  Raise exception to prevent socket descriptor leak
- 
-          raise Program_Error with "selector already open";
-       end if;
- 
-       --  We open two signalling file descriptors. One of them is used to send
-       --  data to the other, which is included in a C_Select socket set. The
-       --  communication is used to force a call to C_Select to complete, and
-       --  the waiting task to resume its execution.
- 
-       Res := Signalling_Fds.Create (Two_Fds'Access);
- 
-       if Res = Failure then
-          Raise_Socket_Error (Socket_Errno);
-       end if;
- 
-       Selector.R_Sig_Socket := Socket_Type (Two_Fds (Read_End));
-       Selector.W_Sig_Socket := Socket_Type (Two_Fds (Write_End));
-    end Create_Selector;
- 
-    -------------------
-    -- Create_Socket --
-    -------------------
- 
-    procedure Create_Socket
-      (Socket : out Socket_Type;
-       Family : Family_Type := Family_Inet;
-       Mode   : Mode_Type   := Socket_Stream)
-    is
-       Res : C.int;
- 
-    begin
-       Res := C_Socket (Families (Family), Modes (Mode), 0);
- 
-       if Res = Failure then
-          Raise_Socket_Error (Socket_Errno);
-       end if;
- 
-       Socket := Socket_Type (Res);
-    end Create_Socket;
- 
-    -----------
-    -- Empty --
-    -----------
- 
-    procedure Empty (Item : out Socket_Set_Type) is
-    begin
-       Reset_Socket_Set (Item.Set'Access);
-       Item.Last := No_Socket;
-    end Empty;
- 
-    --------------------
-    -- Err_Code_Image --
-    --------------------
- 
-    function Err_Code_Image (E : Integer) return String is
-       Msg : String := E'Img & "] ";
-    begin
-       Msg (Msg'First) := '[';
-       return Msg;
-    end Err_Code_Image;
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    procedure Finalize (X : in out Sockets_Library_Controller) is
-       pragma Unreferenced (X);
- 
-    begin
-       --  Finalization operation for the GNAT.Sockets package
- 
-       Thin.Finalize;
-    end Finalize;
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    procedure Finalize is
-    begin
-       --  This is a dummy placeholder for an obsolete API.
-       --  The real finalization actions are in Initialize primitive operation
-       --  of Sockets_Library_Controller.
- 
-       null;
-    end Finalize;
- 
-    ---------
-    -- Get --
-    ---------
- 
-    procedure Get
-      (Item   : in out Socket_Set_Type;
-       Socket : out Socket_Type)
-    is
-       S : aliased C.int;
-       L : aliased C.int := C.int (Item.Last);
- 
-    begin
-       if Item.Last /= No_Socket then
-          Get_Socket_From_Set
-            (Item.Set'Access, Last => L'Access, Socket => S'Access);
-          Item.Last := Socket_Type (L);
-          Socket    := Socket_Type (S);
-       else
-          Socket := No_Socket;
-       end if;
-    end Get;
- 
-    -----------------
-    -- Get_Address --
-    -----------------
- 
-    function Get_Address
-      (Stream : not null Stream_Access) return Sock_Addr_Type
-    is
-    begin
-       if Stream.all in Datagram_Socket_Stream_Type then
-          return Datagram_Socket_Stream_Type (Stream.all).From;
-       else
-          return Get_Peer_Name (Stream_Socket_Stream_Type (Stream.all).Socket);
-       end if;
-    end Get_Address;
- 
-    -------------------------
-    -- Get_Host_By_Address --
-    -------------------------
- 
-    function Get_Host_By_Address
-      (Address : Inet_Addr_Type;
-       Family  : Family_Type := Family_Inet) return Host_Entry_Type
-    is
-       pragma Unreferenced (Family);
- 
-       HA     : aliased In_Addr := To_In_Addr (Address);
-       Buflen : constant C.int := Netdb_Buffer_Size;
-       Buf    : aliased C.char_array (1 .. Netdb_Buffer_Size);
-       Res    : aliased Hostent;
-       Err    : aliased C.int;
- 
-    begin
-       Netdb_Lock;
- 
-       if C_Gethostbyaddr (HA'Address, HA'Size / 8, SOSC.AF_INET,
-                              Res'Access, Buf'Address, Buflen, Err'Access) /= 0
-       then
-          Netdb_Unlock;
-          Raise_Host_Error (Integer (Err), Image (Address));
-       end if;
- 
-       begin
-          return H : constant Host_Entry_Type :=
-                       To_Host_Entry (Res'Unchecked_Access)
-          do
-             Netdb_Unlock;
-          end return;
-       exception
-          when others =>
-             Netdb_Unlock;
-             raise;
-       end;
-    end Get_Host_By_Address;
- 
-    ----------------------
-    -- Get_Host_By_Name --
-    ----------------------
- 
-    function Get_Host_By_Name (Name : String) return Host_Entry_Type is
-    begin
-       --  If the given name actually is the string representation of
-       --  an IP address, use Get_Host_By_Address instead.
- 
-       if Is_IP_Address (Name) then
-          return Get_Host_By_Address (Inet_Addr (Name));
-       end if;
- 
-       declare
-          HN     : constant C.char_array := C.To_C (Name);
-          Buflen : constant C.int := Netdb_Buffer_Size;
-          Buf    : aliased C.char_array (1 .. Netdb_Buffer_Size);
-          Res    : aliased Hostent;
-          Err    : aliased C.int;
- 
-       begin
-          Netdb_Lock;
- 
-          if C_Gethostbyname
-            (HN, Res'Access, Buf'Address, Buflen, Err'Access) /= 0
-          then
-             Netdb_Unlock;
-             Raise_Host_Error (Integer (Err), Name);
-          end if;
- 
-          return H : constant Host_Entry_Type :=
-                       To_Host_Entry (Res'Unchecked_Access)
-          do
-             Netdb_Unlock;
-          end return;
-       end;
-    end Get_Host_By_Name;
- 
-    -------------------
-    -- Get_Peer_Name --
-    -------------------
- 
-    function Get_Peer_Name (Socket : Socket_Type) return Sock_Addr_Type is
-       Sin : aliased Sockaddr_In;
-       Len : aliased C.int := Sin'Size / 8;
-       Res : Sock_Addr_Type (Family_Inet);
- 
-    begin
-       if C_Getpeername (C.int (Socket), Sin'Address, Len'Access) = Failure then
-          Raise_Socket_Error (Socket_Errno);
-       end if;
- 
-       To_Inet_Addr (Sin.Sin_Addr, Res.Addr);
-       Res.Port := Port_Type (Network_To_Short (Sin.Sin_Port));
- 
-       return Res;
-    end Get_Peer_Name;
- 
-    -------------------------
-    -- Get_Service_By_Name --
-    -------------------------
- 
-    function Get_Service_By_Name
-      (Name     : String;
-       Protocol : String) return Service_Entry_Type
-    is
-       SN     : constant C.char_array := C.To_C (Name);
-       SP     : constant C.char_array := C.To_C (Protocol);
-       Buflen : constant C.int := Netdb_Buffer_Size;
-       Buf    : aliased C.char_array (1 .. Netdb_Buffer_Size);
-       Res    : aliased Servent;
- 
-    begin
-       Netdb_Lock;
- 
-       if C_Getservbyname (SN, SP, Res'Access, Buf'Address, Buflen) /= 0 then
-          Netdb_Unlock;
-          raise Service_Error with "Service not found";
-       end if;
- 
-       --  Translate from the C format to the API format
- 
-       return S : constant Service_Entry_Type :=
-                    To_Service_Entry (Res'Unchecked_Access)
-       do
-          Netdb_Unlock;
-       end return;
-    end Get_Service_By_Name;
- 
-    -------------------------
-    -- Get_Service_By_Port --
-    -------------------------
- 
-    function Get_Service_By_Port
-      (Port     : Port_Type;
-       Protocol : String) return Service_Entry_Type
-    is
-       SP     : constant C.char_array := C.To_C (Protocol);
-       Buflen : constant C.int := Netdb_Buffer_Size;
-       Buf    : aliased C.char_array (1 .. Netdb_Buffer_Size);
-       Res    : aliased Servent;
- 
-    begin
-       Netdb_Lock;
- 
-       if C_Getservbyport
-         (C.int (Short_To_Network (C.unsigned_short (Port))), SP,
-          Res'Access, Buf'Address, Buflen) /= 0
-       then
-          Netdb_Unlock;
-          raise Service_Error with "Service not found";
-       end if;
- 
-       --  Translate from the C format to the API format
- 
-       return S : constant Service_Entry_Type :=
-                    To_Service_Entry (Res'Unchecked_Access)
-       do
-          Netdb_Unlock;
-       end return;
-    end Get_Service_By_Port;
- 
-    ---------------------
-    -- Get_Socket_Name --
-    ---------------------
- 
-    function Get_Socket_Name
-      (Socket : Socket_Type) return Sock_Addr_Type
-    is
-       Sin  : aliased Sockaddr_In;
-       Len  : aliased C.int := Sin'Size / 8;
-       Res  : C.int;
-       Addr : Sock_Addr_Type := No_Sock_Addr;
- 
-    begin
-       Res := C_Getsockname (C.int (Socket), Sin'Address, Len'Access);
- 
-       if Res /= Failure then
-          To_Inet_Addr (Sin.Sin_Addr, Addr.Addr);
-          Addr.Port := Port_Type (Network_To_Short (Sin.Sin_Port));
-       end if;
- 
-       return Addr;
-    end Get_Socket_Name;
- 
-    -----------------------
-    -- Get_Socket_Option --
-    -----------------------
- 
-    function Get_Socket_Option
-      (Socket  : Socket_Type;
-       Level   : Level_Type := Socket_Level;
-       Name    : Option_Name;
-       Optname : Interfaces.C.int := -1) return Option_Type
-    is
-       use SOSC;
-       use type C.unsigned_char;
- 
-       V8  : aliased Two_Ints;
-       V4  : aliased C.int;
-       V1  : aliased C.unsigned_char;
-       VT  : aliased Timeval;
-       Len : aliased C.int;
-       Add : System.Address;
-       Res : C.int;
-       Opt : Option_Type (Name);
-       Onm : Interfaces.C.int;
- 
-    begin
-       if Name in Specific_Option_Name then
-          Onm := Options (Name);
- 
-       elsif Optname = -1 then
-          raise Socket_Error with "optname must be specified";
- 
-       else
-          Onm := Optname;
-       end if;
- 
-       case Name is
-          when Multicast_Loop
-             | Multicast_TTL
-             | Receive_Packet_Info
-          =>
-             Len := V1'Size / 8;
-             Add := V1'Address;
- 
-          when Broadcast
-             | Busy_Polling
-             | Error
-             | Generic_Option
-             | Keep_Alive
-             | Multicast_If
-             | No_Delay
-             | Receive_Buffer
-             | Reuse_Address
-             | Send_Buffer
-          =>
-             Len := V4'Size / 8;
-             Add := V4'Address;
- 
-          when Receive_Timeout
-             | Send_Timeout
-          =>
-             --  The standard argument for SO_RCVTIMEO and SO_SNDTIMEO is a
-             --  struct timeval, but on Windows it is a milliseconds count in
-             --  a DWORD.
- 
-             if Target_OS = Windows then
-                Len := V4'Size / 8;
-                Add := V4'Address;
- 
-             else
-                Len := VT'Size / 8;
-                Add := VT'Address;
-             end if;
- 
-          when Add_Membership
-             | Drop_Membership
-             | Linger
-          =>
-             Len := V8'Size / 8;
-             Add := V8'Address;
-       end case;
- 
-       Res :=
-         C_Getsockopt
-           (C.int (Socket),
-            Levels (Level),
-            Onm,
-            Add, Len'Access);
- 
-       if Res = Failure then
-          Raise_Socket_Error (Socket_Errno);
-       end if;
- 
-       case Name is
-          when Generic_Option =>
-             Opt.Optname := Onm;
-             Opt.Optval  := V4;
- 
-          when Broadcast
-             | Keep_Alive
-             | No_Delay
-             | Reuse_Address
-          =>
-             Opt.Enabled := (V4 /= 0);
- 
-          when Busy_Polling =>
-             Opt.Microseconds := Natural (V4);
- 
-          when Linger =>
-             Opt.Enabled := (V8 (V8'First) /= 0);
-             Opt.Seconds := Natural (V8 (V8'Last));
- 
-          when Receive_Buffer
-             | Send_Buffer
-          =>
-             Opt.Size := Natural (V4);
- 
-          when Error =>
-             Opt.Error := Resolve_Error (Integer (V4));
- 
-          when Add_Membership
-             | Drop_Membership
-          =>
-             To_Inet_Addr (To_In_Addr (V8 (V8'First)), Opt.Multicast_Address);
-             To_Inet_Addr (To_In_Addr (V8 (V8'Last)), Opt.Local_Interface);
- 
-          when Multicast_If =>
-             To_Inet_Addr (To_In_Addr (V4), Opt.Outgoing_If);
- 
-          when Multicast_TTL =>
-             Opt.Time_To_Live := Integer (V1);
- 
-          when Multicast_Loop
-             | Receive_Packet_Info
-          =>
-             Opt.Enabled := (V1 /= 0);
- 
-          when Receive_Timeout
-             | Send_Timeout
-          =>
-             if Target_OS = Windows then
- 
-                --  Timeout is in milliseconds, actual value is 500 ms +
-                --  returned value (unless it is 0).
- 
-                if V4 = 0 then
-                   Opt.Timeout := 0.0;
-                else
-                   Opt.Timeout := Natural (V4) * 0.001 + 0.500;
-                end if;
- 
-             else
-                Opt.Timeout := To_Duration (VT);
-             end if;
-       end case;
- 
-       return Opt;
-    end Get_Socket_Option;
- 
-    ---------------
-    -- Host_Name --
-    ---------------
- 
-    function Host_Name return String is
-       Name : aliased C.char_array (1 .. 64);
-       Res  : C.int;
- 
-    begin
-       Res := C_Gethostname (Name'Address, Name'Length);
- 
-       if Res = Failure then
-          Raise_Socket_Error (Socket_Errno);
-       end if;
- 
-       return C.To_Ada (Name);
-    end Host_Name;
- 
-    -----------
-    -- Image --
-    -----------
- 
-    function Image
-      (Val : Inet_Addr_VN_Type;
-       Hex : Boolean := False) return String
-    is
-       --  The largest Inet_Addr_Comp_Type image occurs with IPv4. It
-       --  has at most a length of 3 plus one '.' character.
- 
-       Buffer    : String (1 .. 4 * Val'Length);
-       Length    : Natural := 1;
-       Separator : Character;
- 
-       procedure Img10 (V : Inet_Addr_Comp_Type);
-       --  Append to Buffer image of V in decimal format
- 
-       procedure Img16 (V : Inet_Addr_Comp_Type);
-       --  Append to Buffer image of V in hexadecimal format
- 
-       -----------
-       -- Img10 --
-       -----------
- 
-       procedure Img10 (V : Inet_Addr_Comp_Type) is
-          Img : constant String := V'Img;
-          Len : constant Natural := Img'Length - 1;
-       begin
-          Buffer (Length .. Length + Len - 1) := Img (2 .. Img'Last);
-          Length := Length + Len;
-       end Img10;
- 
-       -----------
-       -- Img16 --
-       -----------
- 
-       procedure Img16 (V : Inet_Addr_Comp_Type) is
-       begin
-          Buffer (Length)     := Hex_To_Char (Natural (V / 16) + 1);
-          Buffer (Length + 1) := Hex_To_Char (Natural (V mod 16) + 1);
-          Length := Length + 2;
-       end Img16;
- 
-    --  Start of processing for Image
- 
-    begin
-       Separator := (if Hex then ':' else '.');
- 
-       for J in Val'Range loop
-          if Hex then
-             Img16 (Val (J));
-          else
-             Img10 (Val (J));
-          end if;
- 
-          if J /= Val'Last then
-             Buffer (Length) := Separator;
-             Length := Length + 1;
-          end if;
-       end loop;
- 
-       return Buffer (1 .. Length - 1);
-    end Image;
- 
-    -----------
-    -- Image --
-    -----------
- 
-    function Image (Value : Inet_Addr_Type) return String is
-    begin
-       if Value.Family = Family_Inet then
-          return Image (Inet_Addr_VN_Type (Value.Sin_V4), Hex => False);
-       else
-          return Image (Inet_Addr_VN_Type (Value.Sin_V6), Hex => True);
-       end if;
-    end Image;
- 
-    -----------
-    -- Image --
-    -----------
- 
-    function Image (Value : Sock_Addr_Type) return String is
-       Port : constant String := Value.Port'Img;
-    begin
-       return Image (Value.Addr) & ':' & Port (2 .. Port'Last);
-    end Image;
- 
-    -----------
-    -- Image --
-    -----------
- 
-    function Image (Socket : Socket_Type) return String is
-    begin
-       return Socket'Img;
-    end Image;
- 
-    -----------
-    -- Image --
-    -----------
- 
-    function Image (Item : Socket_Set_Type) return String is
-       Socket_Set : Socket_Set_Type := Item;
- 
-    begin
-       declare
-          Last_Img : constant String := Socket_Set.Last'Img;
-          Buffer   : String
-                       (1 .. (Integer (Socket_Set.Last) + 1) * Last_Img'Length);
-          Index    : Positive := 1;
-          Socket   : Socket_Type;
- 
-       begin
-          while not Is_Empty (Socket_Set) loop
-             Get (Socket_Set, Socket);
- 
-             declare
-                Socket_Img : constant String := Socket'Img;
-             begin
-                Buffer (Index .. Index + Socket_Img'Length - 1) := Socket_Img;
-                Index := Index + Socket_Img'Length;
-             end;
-          end loop;
- 
-          return "[" & Last_Img & "]" & Buffer (1 .. Index - 1);
-       end;
-    end Image;
- 
-    ---------------
-    -- Inet_Addr --
-    ---------------
- 
-    function Inet_Addr (Image : String) return Inet_Addr_Type is
-       use Interfaces.C;
- 
-       Img    : aliased char_array := To_C (Image);
-       Addr   : aliased C.int;
-       Res    : C.int;
-       Result : Inet_Addr_Type;
- 
-    begin
-       --  Special case for an empty Image as on some platforms (e.g. Windows)
-       --  calling Inet_Addr("") will not return an error.
- 
-       if Image = "" then
-          Raise_Socket_Error (SOSC.EINVAL);
-       end if;
- 
-       Res := Inet_Pton (SOSC.AF_INET, Img'Address, Addr'Address);
- 
-       if Res < 0 then
-          Raise_Socket_Error (Socket_Errno);
- 
-       elsif Res = 0 then
-          Raise_Socket_Error (SOSC.EINVAL);
-       end if;
- 
-       To_Inet_Addr (To_In_Addr (Addr), Result);
-       return Result;
-    end Inet_Addr;
- 
-    ----------------
-    -- Initialize --
-    ----------------
- 
-    procedure Initialize (X : in out Sockets_Library_Controller) is
-       pragma Unreferenced (X);
- 
-    begin
-       Thin.Initialize;
-    end Initialize;
- 
-    ----------------
-    -- Initialize --
-    ----------------
- 
-    procedure Initialize (Process_Blocking_IO : Boolean) is
-       Expected : constant Boolean := not SOSC.Thread_Blocking_IO;
- 
-    begin
-       if Process_Blocking_IO /= Expected then
-          raise Socket_Error with
-            "incorrect Process_Blocking_IO setting, expected " & Expected'Img;
-       end if;
- 
-       --  This is a dummy placeholder for an obsolete API
- 
-       --  Real initialization actions are in Initialize primitive operation
-       --  of Sockets_Library_Controller.
- 
-       null;
-    end Initialize;
- 
-    ----------------
-    -- Initialize --
-    ----------------
- 
-    procedure Initialize is
-    begin
-       --  This is a dummy placeholder for an obsolete API
- 
-       --  Real initialization actions are in Initialize primitive operation
-       --  of Sockets_Library_Controller.
- 
-       null;
-    end Initialize;
- 
-    --------------
-    -- Is_Empty --
-    --------------
- 
-    function Is_Empty (Item : Socket_Set_Type) return Boolean is
-    begin
-       return Item.Last = No_Socket;
-    end Is_Empty;
- 
-    -------------------
-    -- Is_IP_Address --
-    -------------------
- 
-    function Is_IP_Address (Name : String) return Boolean is
-       Dots : Natural := 0;
- 
-    begin
-       --  Perform a cursory check for a dotted quad: we must have 1 to 3 dots,
-       --  and there must be at least one digit around each.
- 
-       for J in Name'Range loop
-          if Name (J) = '.' then
- 
-             --  Check that the dot is not in first or last position, and that
-             --  it is followed by a digit. Note that we already know that it is
-             --  preceded by a digit, or we would have returned earlier on.
- 
-             if J in Name'First + 1 .. Name'Last - 1
-               and then Name (J + 1) in '0' .. '9'
-             then
-                Dots := Dots + 1;
- 
-             --  Definitely not a proper dotted quad
- 
-             else
-                return False;
-             end if;
- 
-          elsif Name (J) not in '0' .. '9' then
-             return False;
-          end if;
-       end loop;
- 
-       return Dots in 1 .. 3;
-    end Is_IP_Address;
- 
-    -------------
-    -- Is_Open --
-    -------------
- 
-    function Is_Open (S : Selector_Type) return Boolean is
-    begin
-       if S.Is_Null then
-          return True;
- 
-       else
-          --  Either both controlling socket descriptors are valid (case of an
-          --  open selector) or neither (case of a closed selector).
- 
-          pragma Assert ((S.R_Sig_Socket /= No_Socket)
-                           =
-                         (S.W_Sig_Socket /= No_Socket));
- 
-          return S.R_Sig_Socket /= No_Socket;
-       end if;
-    end Is_Open;
- 
-    ------------
-    -- Is_Set --
-    ------------
- 
-    function Is_Set
-      (Item   : Socket_Set_Type;
-       Socket : Socket_Type) return Boolean
-    is
-    begin
-       Check_For_Fd_Set (Socket);
- 
-       return Item.Last /= No_Socket
-         and then Socket <= Item.Last
-         and then Is_Socket_In_Set (Item.Set'Access, C.int (Socket)) /= 0;
-    end Is_Set;
- 
-    -------------------
-    -- Listen_Socket --
-    -------------------
- 
-    procedure Listen_Socket
-      (Socket : Socket_Type;
-       Length : Natural := 15)
-    is
-       Res : constant C.int := C_Listen (C.int (Socket), C.int (Length));
-    begin
-       if Res = Failure then
-          Raise_Socket_Error (Socket_Errno);
-       end if;
-    end Listen_Socket;
- 
-    ------------
-    -- Narrow --
-    ------------
- 
-    procedure Narrow (Item : in out Socket_Set_Type) is
-       Last : aliased C.int := C.int (Item.Last);
-    begin
-       if Item.Last /= No_Socket then
-          Last_Socket_In_Set (Item.Set'Access, Last'Unchecked_Access);
-          Item.Last := Socket_Type (Last);
-       end if;
-    end Narrow;
- 
-    ----------------
-    -- Netdb_Lock --
-    ----------------
- 
-    procedure Netdb_Lock is
-    begin
-       if Need_Netdb_Lock then
-          System.Task_Lock.Lock;
-       end if;
-    end Netdb_Lock;
- 
-    ------------------
-    -- Netdb_Unlock --
-    ------------------
- 
-    procedure Netdb_Unlock is
-    begin
-       if Need_Netdb_Lock then
-          System.Task_Lock.Unlock;
-       end if;
-    end Netdb_Unlock;
- 
-    --------------------------------
-    -- Normalize_Empty_Socket_Set --
-    --------------------------------
- 
-    procedure Normalize_Empty_Socket_Set (S : in out Socket_Set_Type) is
-    begin
-       if S.Last = No_Socket then
-          Reset_Socket_Set (S.Set'Access);
-       end if;
-    end Normalize_Empty_Socket_Set;
- 
-    -------------------
-    -- Official_Name --
-    -------------------
- 
-    function Official_Name (E : Host_Entry_Type) return String is
-    begin
-       return To_String (E.Official);
-    end Official_Name;
- 
-    -------------------
-    -- Official_Name --
-    -------------------
- 
-    function Official_Name (S : Service_Entry_Type) return String is
-    begin
-       return To_String (S.Official);
-    end Official_Name;
- 
-    --------------------
-    -- Wait_On_Socket --
-    --------------------
- 
-    procedure Wait_On_Socket
-      (Socket   : Socket_Type;
-       For_Read : Boolean;
-       Timeout  : Selector_Duration;
-       Selector : access Selector_Type := null;
-       Status   : out Selector_Status)
-    is
-       type Local_Selector_Access is access Selector_Type;
-       for Local_Selector_Access'Storage_Size use Selector_Type'Size;
- 
-       S : Selector_Access;
-       --  Selector to use for waiting
- 
-       R_Fd_Set : Socket_Set_Type;
-       W_Fd_Set : Socket_Set_Type;
- 
-    begin
-       --  Create selector if not provided by the user
- 
-       if Selector = null then
-          declare
-             Local_S : constant Local_Selector_Access := new Selector_Type;
-          begin
-             S := Local_S.all'Unchecked_Access;
-             Create_Selector (S.all);
-          end;
- 
-       else
-          S := Selector.all'Access;
-       end if;
- 
-       if For_Read then
-          Set (R_Fd_Set, Socket);
-       else
-          Set (W_Fd_Set, Socket);
-       end if;
- 
-       Check_Selector (S.all, R_Fd_Set, W_Fd_Set, Status, Timeout);
- 
-       if Selector = null then
-          Close_Selector (S.all);
-       end if;
-    end Wait_On_Socket;
- 
-    -----------------
-    -- Port_Number --
-    -----------------
- 
-    function Port_Number (S : Service_Entry_Type) return Port_Type is
-    begin
-       return S.Port;
-    end Port_Number;
- 
-    -------------------
-    -- Protocol_Name --
-    -------------------
- 
-    function Protocol_Name (S : Service_Entry_Type) return String is
-    begin
-       return To_String (S.Protocol);
-    end Protocol_Name;
- 
-    ----------------------
-    -- Raise_Host_Error --
-    ----------------------
- 
-    procedure Raise_Host_Error (H_Error : Integer; Name : String) is
-       function Dedot (Value : String) return String is
-         (if Value /= "" and then Value (Value'Last) = '.' then
-             Value (Value'First .. Value'Last - 1)
-          else
-             Value);
-       --  Removes dot at the end of error message
- 
-    begin
-       raise Host_Error with
-         Err_Code_Image (H_Error)
-           & Dedot (Host_Error_Messages.Host_Error_Message (H_Error))
-           & ": " & Name;
-    end Raise_Host_Error;
- 
-    ------------------------
-    -- Raise_Socket_Error --
-    ------------------------
- 
-    procedure Raise_Socket_Error (Error : Integer) is
-    begin
-       raise Socket_Error with
-         Err_Code_Image (Error) & Socket_Error_Message (Error);
-    end Raise_Socket_Error;
- 
-    ----------
-    -- Read --
-    ----------
- 
-    procedure Read
-      (Stream : in out Datagram_Socket_Stream_Type;
-       Item   : out Ada.Streams.Stream_Element_Array;
-       Last   : out Ada.Streams.Stream_Element_Offset)
-    is
-    begin
-       Receive_Socket
-         (Stream.Socket,
-          Item,
-          Last,
-          Stream.From);
-    end Read;
- 
-    ----------
-    -- Read --
-    ----------
- 
-    procedure Read
-      (Stream : in out Stream_Socket_Stream_Type;
-       Item   : out Ada.Streams.Stream_Element_Array;
-       Last   : out Ada.Streams.Stream_Element_Offset)
-    is
-       First : Ada.Streams.Stream_Element_Offset          := Item'First;
-       Index : Ada.Streams.Stream_Element_Offset          := First - 1;
-       Max   : constant Ada.Streams.Stream_Element_Offset := Item'Last;
- 
-    begin
-       loop
-          Receive_Socket (Stream.Socket, Item (First .. Max), Index);
-          Last  := Index;
- 
-          --  Exit when all or zero data received. Zero means that the socket
-          --  peer is closed.
- 
-          exit when Index < First or else Index = Max;
- 
-          First := Index + 1;
-       end loop;
-    end Read;
- 
-    --------------------
-    -- Receive_Socket --
-    --------------------
- 
-    procedure Receive_Socket
-      (Socket : Socket_Type;
-       Item   : out Ada.Streams.Stream_Element_Array;
-       Last   : out Ada.Streams.Stream_Element_Offset;
-       Flags  : Request_Flag_Type := No_Request_Flag)
-    is
-       Res : C.int;
- 
-    begin
-       Res :=
-         C_Recv (C.int (Socket), Item'Address, Item'Length, To_Int (Flags));
- 
-       if Res = Failure then
-          Raise_Socket_Error (Socket_Errno);
-       end if;
- 
-       Last := Last_Index (First => Item'First, Count => size_t (Res));
-    end Receive_Socket;
- 
-    --------------------
-    -- Receive_Socket --
-    --------------------
- 
-    procedure Receive_Socket
-      (Socket : Socket_Type;
-       Item   : out Ada.Streams.Stream_Element_Array;
-       Last   : out Ada.Streams.Stream_Element_Offset;
-       From   : out Sock_Addr_Type;
-       Flags  : Request_Flag_Type := No_Request_Flag)
-    is
-       Res : C.int;
-       Sin : aliased Sockaddr_In;
-       Len : aliased C.int := Sin'Size / 8;
- 
-    begin
-       Res :=
-         C_Recvfrom
-           (C.int (Socket),
-            Item'Address,
-            Item'Length,
-            To_Int (Flags),
-            Sin'Address,
-            Len'Access);
- 
-       if Res = Failure then
-          Raise_Socket_Error (Socket_Errno);
-       end if;
- 
-       Last := Last_Index (First => Item'First, Count => size_t (Res));
- 
-       To_Inet_Addr (Sin.Sin_Addr, From.Addr);
-       From.Port := Port_Type (Network_To_Short (Sin.Sin_Port));
-    end Receive_Socket;
- 
-    --------------------
-    -- Receive_Vector --
-    --------------------
- 
-    procedure Receive_Vector
-      (Socket : Socket_Type;
-       Vector : Vector_Type;
-       Count  : out Ada.Streams.Stream_Element_Count;
-       Flags  : Request_Flag_Type := No_Request_Flag)
-    is
-       Res : ssize_t;
- 
-       Msg : Msghdr :=
-               (Msg_Name       => System.Null_Address,
-                Msg_Namelen    => 0,
-                Msg_Iov        => Vector'Address,
- 
-                --  recvmsg(2) returns EMSGSIZE on Linux (and probably on other
-                --  platforms) when the supplied vector is longer than IOV_MAX,
-                --  so use minimum of the two lengths.
- 
-                Msg_Iovlen     => SOSC.Msg_Iovlen_T'Min
-                                    (Vector'Length, SOSC.IOV_MAX),
- 
-                Msg_Control    => System.Null_Address,
-                Msg_Controllen => 0,
-                Msg_Flags      => 0);
- 
-    begin
-       Res :=
-         C_Recvmsg
-           (C.int (Socket),
-            Msg'Address,
-            To_Int (Flags));
- 
-       if Res = ssize_t (Failure) then
-          Raise_Socket_Error (Socket_Errno);
-       end if;
- 
-       Count := Ada.Streams.Stream_Element_Count (Res);
-    end Receive_Vector;
- 
-    -------------------
-    -- Resolve_Error --
-    -------------------
- 
-    function Resolve_Error
-      (Error_Value : Integer;
-       From_Errno  : Boolean := True) return Error_Type
-    is
-       use GNAT.Sockets.SOSC;
- 
-    begin
-       if not From_Errno then
-          case Error_Value is
-             when SOSC.HOST_NOT_FOUND => return Unknown_Host;
-             when SOSC.TRY_AGAIN      => return Host_Name_Lookup_Failure;
-             when SOSC.NO_RECOVERY    => return Non_Recoverable_Error;
-             when SOSC.NO_DATA        => return Unknown_Server_Error;
-             when others              => return Cannot_Resolve_Error;
-          end case;
-       end if;
- 
-       --  Special case: EAGAIN may be the same value as EWOULDBLOCK, so we
-       --  can't include it in the case statement below.
- 
-       pragma Warnings (Off);
-       --  Condition "EAGAIN /= EWOULDBLOCK" is known at compile time
- 
-       if EAGAIN /= EWOULDBLOCK and then Error_Value = EAGAIN then
-          return Resource_Temporarily_Unavailable;
-       end if;
- 
-       --  This is not a case statement because if a particular error
-       --  number constant is not defined, s-oscons-tmplt.c defines
-       --  it to -1.  If multiple constants are not defined, they
-       --  would each be -1 and result in a "duplicate value in case" error.
-       --
-       --  But we have to leave warnings off because the compiler is also
-       --  smart enough to note that when two errnos have the same value,
-       --  the second if condition is useless.
-       if Error_Value = ENOERROR then
-          return Success;
-       elsif Error_Value = EACCES then
-          return Permission_Denied;
-       elsif Error_Value = EADDRINUSE then
-          return Address_Already_In_Use;
-       elsif Error_Value = EADDRNOTAVAIL then
-          return Cannot_Assign_Requested_Address;
-       elsif Error_Value = EAFNOSUPPORT then
-          return Address_Family_Not_Supported_By_Protocol;
-       elsif Error_Value = EALREADY then
-          return Operation_Already_In_Progress;
-       elsif Error_Value = EBADF then
-          return Bad_File_Descriptor;
-       elsif Error_Value = ECONNABORTED then
-          return Software_Caused_Connection_Abort;
-       elsif Error_Value = ECONNREFUSED then
-          return Connection_Refused;
-       elsif Error_Value = ECONNRESET then
-          return Connection_Reset_By_Peer;
-       elsif Error_Value = EDESTADDRREQ then
-          return Destination_Address_Required;
-       elsif Error_Value = EFAULT then
-          return Bad_Address;
-       elsif Error_Value = EHOSTDOWN then
-          return Host_Is_Down;
-       elsif Error_Value = EHOSTUNREACH then
-          return No_Route_To_Host;
-       elsif Error_Value = EINPROGRESS then
-          return Operation_Now_In_Progress;
-       elsif Error_Value = EINTR then
-          return Interrupted_System_Call;
-       elsif Error_Value = EINVAL then
-          return Invalid_Argument;
-       elsif Error_Value = EIO then
-          return Input_Output_Error;
-       elsif Error_Value = EISCONN then
-          return Transport_Endpoint_Already_Connected;
-       elsif Error_Value = ELOOP then
-          return Too_Many_Symbolic_Links;
-       elsif Error_Value = EMFILE then
-          return Too_Many_Open_Files;
-       elsif Error_Value = EMSGSIZE then
-          return Message_Too_Long;
-       elsif Error_Value = ENAMETOOLONG then
-          return File_Name_Too_Long;
-       elsif Error_Value = ENETDOWN then
-          return Network_Is_Down;
-       elsif Error_Value = ENETRESET then
-          return Network_Dropped_Connection_Because_Of_Reset;
-       elsif Error_Value = ENETUNREACH then
-          return Network_Is_Unreachable;
-       elsif Error_Value = ENOBUFS then
-          return No_Buffer_Space_Available;
-       elsif Error_Value = ENOPROTOOPT then
-          return Protocol_Not_Available;
-       elsif Error_Value = ENOTCONN then
-          return Transport_Endpoint_Not_Connected;
-       elsif Error_Value = ENOTSOCK then
-          return Socket_Operation_On_Non_Socket;
-       elsif Error_Value = EOPNOTSUPP then
-          return Operation_Not_Supported;
-       elsif Error_Value = EPFNOSUPPORT then
-          return Protocol_Family_Not_Supported;
-       elsif Error_Value = EPIPE then
-          return Broken_Pipe;
-       elsif Error_Value = EPROTONOSUPPORT then
-          return Protocol_Not_Supported;
-       elsif Error_Value = EPROTOTYPE then
-          return Protocol_Wrong_Type_For_Socket;
-       elsif Error_Value = ESHUTDOWN then
-          return Cannot_Send_After_Transport_Endpoint_Shutdown;
-       elsif Error_Value = ESOCKTNOSUPPORT then
-          return Socket_Type_Not_Supported;
-       elsif Error_Value = ETIMEDOUT then
-          return Connection_Timed_Out;
-       elsif Error_Value = ETOOMANYREFS then
-          return Too_Many_References;
-       elsif Error_Value = EWOULDBLOCK then
-          return Resource_Temporarily_Unavailable;
-       else
-          return Cannot_Resolve_Error;
-       end if;
-       pragma Warnings (On);
- 
-    end Resolve_Error;
- 
-    -----------------------
-    -- Resolve_Exception --
-    -----------------------
- 
-    function Resolve_Exception
-      (Occurrence : Exception_Occurrence) return Error_Type
-    is
-       Id    : constant Exception_Id := Exception_Identity (Occurrence);
-       Msg   : constant String       := Exception_Message (Occurrence);
-       First : Natural;
-       Last  : Natural;
-       Val   : Integer;
- 
-    begin
-       First := Msg'First;
-       while First <= Msg'Last
-         and then Msg (First) not in '0' .. '9'
-       loop
-          First := First + 1;
-       end loop;
- 
-       if First > Msg'Last then
-          return Cannot_Resolve_Error;
-       end if;
- 
-       Last := First;
-       while Last < Msg'Last
-         and then Msg (Last + 1) in '0' .. '9'
-       loop
-          Last := Last + 1;
-       end loop;
- 
-       Val := Integer'Value (Msg (First .. Last));
- 
-       if Id = Socket_Error_Id then
-          return Resolve_Error (Val);
- 
-       elsif Id = Host_Error_Id then
-          return Resolve_Error (Val, False);
- 
-       else
-          return Cannot_Resolve_Error;
-       end if;
-    end Resolve_Exception;
- 
-    -----------------
-    -- Send_Socket --
-    -----------------
- 
-    procedure Send_Socket
-      (Socket : Socket_Type;
-       Item   : Ada.Streams.Stream_Element_Array;
-       Last   : out Ada.Streams.Stream_Element_Offset;
-       Flags  : Request_Flag_Type := No_Request_Flag)
-    is
-    begin
-       Send_Socket (Socket, Item, Last, To => null, Flags => Flags);
-    end Send_Socket;
- 
-    -----------------
-    -- Send_Socket --
-    -----------------
- 
-    procedure Send_Socket
-      (Socket : Socket_Type;
-       Item   : Ada.Streams.Stream_Element_Array;
-       Last   : out Ada.Streams.Stream_Element_Offset;
-       To     : Sock_Addr_Type;
-       Flags  : Request_Flag_Type := No_Request_Flag)
-    is
-    begin
-       Send_Socket
-         (Socket, Item, Last, To => To'Unrestricted_Access, Flags => Flags);
-    end Send_Socket;
- 
-    -----------------
-    -- Send_Socket --
-    -----------------
- 
-    procedure Send_Socket
-      (Socket : Socket_Type;
-       Item   : Ada.Streams.Stream_Element_Array;
-       Last   : out Ada.Streams.Stream_Element_Offset;
-       To     : access Sock_Addr_Type;
-       Flags  : Request_Flag_Type := No_Request_Flag)
-    is
-       Res  : C.int;
- 
-       Sin  : aliased Sockaddr_In;
-       C_To : System.Address;
-       Len  : C.int;
- 
-    begin
-       if To /= null then
-          Set_Family  (Sin.Sin_Family, To.Family);
-          Set_Address (Sin'Unchecked_Access, To_In_Addr (To.Addr));
-          Set_Port
-            (Sin'Unchecked_Access,
-             Short_To_Network (C.unsigned_short (To.Port)));
-          C_To := Sin'Address;
-          Len := Sin'Size / 8;
- 
-       else
-          C_To := System.Null_Address;
-          Len := 0;
-       end if;
- 
-       Res := C_Sendto
-         (C.int (Socket),
-          Item'Address,
-          Item'Length,
-          Set_Forced_Flags (To_Int (Flags)),
-          C_To,
-          Len);
- 
-       if Res = Failure then
-          Raise_Socket_Error (Socket_Errno);
-       end if;
- 
-       Last := Last_Index (First => Item'First, Count => size_t (Res));
-    end Send_Socket;
- 
-    -----------------
-    -- Send_Vector --
-    -----------------
- 
-    procedure Send_Vector
-      (Socket : Socket_Type;
-       Vector : Vector_Type;
-       Count  : out Ada.Streams.Stream_Element_Count;
-       Flags  : Request_Flag_Type := No_Request_Flag)
-    is
-       use SOSC;
-       use Interfaces.C;
- 
-       Res            : ssize_t;
-       Iov_Count      : SOSC.Msg_Iovlen_T;
-       This_Iov_Count : SOSC.Msg_Iovlen_T;
-       Msg            : Msghdr;
- 
-    begin
-       Count := 0;
-       Iov_Count := 0;
-       while Iov_Count < Vector'Length loop
- 
-          pragma Warnings (Off);
-          --  Following test may be compile time known on some targets
- 
-          This_Iov_Count :=
-            (if Vector'Length - Iov_Count > SOSC.IOV_MAX
-             then SOSC.IOV_MAX
-             else Vector'Length - Iov_Count);
- 
-          pragma Warnings (On);
- 
-          Msg :=
-            (Msg_Name       => System.Null_Address,
-             Msg_Namelen    => 0,
-             Msg_Iov        => Vector
-                                 (Vector'First + Integer (Iov_Count))'Address,
-             Msg_Iovlen     => This_Iov_Count,
-             Msg_Control    => System.Null_Address,
-             Msg_Controllen => 0,
-             Msg_Flags      => 0);
- 
-          Res :=
-            C_Sendmsg
-              (C.int (Socket),
-               Msg'Address,
-               Set_Forced_Flags (To_Int (Flags)));
- 
-          if Res = ssize_t (Failure) then
-             Raise_Socket_Error (Socket_Errno);
-          end if;
- 
-          Count := Count + Ada.Streams.Stream_Element_Count (Res);
-          Iov_Count := Iov_Count + This_Iov_Count;
-       end loop;
-    end Send_Vector;
- 
-    ---------
-    -- Set --
-    ---------
- 
-    procedure Set (Item : in out Socket_Set_Type; Socket : Socket_Type) is
-    begin
-       Check_For_Fd_Set (Socket);
- 
-       if Item.Last = No_Socket then
- 
-          --  Uninitialized socket set, make sure it is properly zeroed out
- 
-          Reset_Socket_Set (Item.Set'Access);
-          Item.Last := Socket;
- 
-       elsif Item.Last < Socket then
-          Item.Last := Socket;
-       end if;
- 
-       Insert_Socket_In_Set (Item.Set'Access, C.int (Socket));
-    end Set;
- 
-    -----------------------
-    -- Set_Close_On_Exec --
-    -----------------------
- 
-    procedure Set_Close_On_Exec
-      (Socket        : Socket_Type;
-       Close_On_Exec : Boolean;
-       Status        : out Boolean)
-    is
-       function C_Set_Close_On_Exec
-         (Socket : Socket_Type; Close_On_Exec : C.int) return C.int;
-       pragma Import (C, C_Set_Close_On_Exec, "__gnat_set_close_on_exec");
-    begin
-       Status := C_Set_Close_On_Exec (Socket, Boolean'Pos (Close_On_Exec)) = 0;
-    end Set_Close_On_Exec;
- 
-    ----------------------
-    -- Set_Forced_Flags --
-    ----------------------
- 
-    function Set_Forced_Flags (F : C.int) return C.int is
-       use type C.unsigned;
-       function To_unsigned is
-         new Ada.Unchecked_Conversion (C.int, C.unsigned);
-       function To_int is
-         new Ada.Unchecked_Conversion (C.unsigned, C.int);
-    begin
-       return To_int (To_unsigned (F) or SOSC.MSG_Forced_Flags);
-    end Set_Forced_Flags;
- 
-    -----------------------
-    -- Set_Socket_Option --
-    -----------------------
- 
-    procedure Set_Socket_Option
-      (Socket : Socket_Type;
-       Level  : Level_Type := Socket_Level;
-       Option : Option_Type)
-    is
-       use SOSC;
- 
-       V8  : aliased Two_Ints;
-       V4  : aliased C.int;
-       V1  : aliased C.unsigned_char;
-       VT  : aliased Timeval;
-       Len : C.int;
-       Add : System.Address := Null_Address;
-       Res : C.int;
-       Onm : C.int;
- 
-    begin
-       case Option.Name is
-          when Generic_Option =>
-             V4  := Option.Optval;
-             Len := V4'Size / 8;
-             Add := V4'Address;
- 
-          when Broadcast
-             | Keep_Alive
-             | No_Delay
-             | Reuse_Address
-          =>
-             V4  := C.int (Boolean'Pos (Option.Enabled));
-             Len := V4'Size / 8;
-             Add := V4'Address;
- 
-          when Busy_Polling =>
-             V4  := C.int (Option.Microseconds);
-             Len := V4'Size / 8;
-             Add := V4'Address;
- 
-          when Linger =>
-             V8 (V8'First) := C.int (Boolean'Pos (Option.Enabled));
-             V8 (V8'Last)  := C.int (Option.Seconds);
-             Len := V8'Size / 8;
-             Add := V8'Address;
- 
-          when Receive_Buffer
-             | Send_Buffer
-          =>
-             V4  := C.int (Option.Size);
-             Len := V4'Size / 8;
-             Add := V4'Address;
- 
-          when Error =>
-             V4  := C.int (Boolean'Pos (True));
-             Len := V4'Size / 8;
-             Add := V4'Address;
- 
-          when Add_Membership
-             | Drop_Membership
-          =>
-             V8 (V8'First) := To_Int (To_In_Addr (Option.Multicast_Address));
-             V8 (V8'Last)  := To_Int (To_In_Addr (Option.Local_Interface));
-             Len := V8'Size / 8;
-             Add := V8'Address;
- 
-          when Multicast_If =>
-             V4  := To_Int (To_In_Addr (Option.Outgoing_If));
-             Len := V4'Size / 8;
-             Add := V4'Address;
- 
-          when Multicast_TTL =>
-             V1  := C.unsigned_char (Option.Time_To_Live);
-             Len := V1'Size / 8;
-             Add := V1'Address;
- 
-          when Multicast_Loop
-             | Receive_Packet_Info
-          =>
-             V1  := C.unsigned_char (Boolean'Pos (Option.Enabled));
-             Len := V1'Size / 8;
-             Add := V1'Address;
- 
-          when Receive_Timeout
-             | Send_Timeout
-          =>
-             if Target_OS = Windows then
- 
-                --  On Windows, the timeout is a DWORD in milliseconds, and
-                --  the actual timeout is 500 ms + the given value (unless it
-                --  is 0).
- 
-                V4 := C.int (Option.Timeout / 0.001);
- 
-                if V4 > 500 then
-                   V4 := V4 - 500;
- 
-                elsif V4 > 0 then
-                   V4 := 1;
-                end if;
- 
-                Len := V4'Size / 8;
-                Add := V4'Address;
- 
-             else
-                VT  := To_Timeval (Option.Timeout);
-                Len := VT'Size / 8;
-                Add := VT'Address;
-             end if;
-       end case;
- 
-       if Option.Name in Specific_Option_Name then
-          Onm := Options (Option.Name);
- 
-       elsif Option.Optname = -1 then
-          raise Socket_Error with "optname must be specified";
- 
-       else
-          Onm := Option.Optname;
-       end if;
- 
-       Res := C_Setsockopt
-         (C.int (Socket),
-          Levels (Level),
-          Onm,
-          Add, Len);
- 
-       if Res = Failure then
-          Raise_Socket_Error (Socket_Errno);
-       end if;
-    end Set_Socket_Option;
- 
-    ----------------------
-    -- Short_To_Network --
-    ----------------------
- 
-    function Short_To_Network (S : C.unsigned_short) return C.unsigned_short is
-       use type C.unsigned_short;
- 
-    begin
-       --  Big-endian case. No conversion needed. On these platforms, htons()
-       --  defaults to a null procedure.
- 
-       if Default_Bit_Order = High_Order_First then
-          return S;
- 
-       --  Little-endian case. We must swap the high and low bytes of this
-       --  short to make the port number network compliant.
- 
-       else
-          return (S / 256) + (S mod 256) * 256;
-       end if;
-    end Short_To_Network;
- 
-    ---------------------
-    -- Shutdown_Socket --
-    ---------------------
- 
-    procedure Shutdown_Socket
-      (Socket : Socket_Type;
-       How    : Shutmode_Type := Shut_Read_Write)
-    is
-       Res : C.int;
- 
-    begin
-       Res := C_Shutdown (C.int (Socket), Shutmodes (How));
- 
-       if Res = Failure then
-          Raise_Socket_Error (Socket_Errno);
-       end if;
-    end Shutdown_Socket;
- 
-    ------------
-    -- Stream --
-    ------------
- 
-    function Stream
-      (Socket  : Socket_Type;
-       Send_To : Sock_Addr_Type) return Stream_Access
-    is
-       S : Datagram_Socket_Stream_Access;
- 
-    begin
-       S        := new Datagram_Socket_Stream_Type;
-       S.Socket := Socket;
-       S.To     := Send_To;
-       S.From   := Get_Socket_Name (Socket);
-       return Stream_Access (S);
-    end Stream;
- 
-    ------------
-    -- Stream --
-    ------------
- 
-    function Stream (Socket : Socket_Type) return Stream_Access is
-       S : Stream_Socket_Stream_Access;
-    begin
-       S := new Stream_Socket_Stream_Type;
-       S.Socket := Socket;
-       return Stream_Access (S);
-    end Stream;
- 
-    ----------
-    -- To_C --
-    ----------
- 
-    function To_C (Socket : Socket_Type) return Integer is
-    begin
-       return Integer (Socket);
-    end To_C;
- 
-    -----------------
-    -- To_Duration --
-    -----------------
- 
-    function To_Duration (Val : Timeval) return Timeval_Duration is
-    begin
-       return Natural (Val.Tv_Sec) * 1.0 + Natural (Val.Tv_Usec) * 1.0E-6;
-    end To_Duration;
- 
-    -------------------
-    -- To_Host_Entry --
-    -------------------
- 
-    function To_Host_Entry (E : Hostent_Access) return Host_Entry_Type is
-       use type C.size_t;
- 
-       Aliases_Count, Addresses_Count : Natural;
- 
-       --  H_Length is not used because it is currently only ever set to 4, as
-       --  we only handle the case of H_Addrtype being AF_INET.
- 
-    begin
-       if Hostent_H_Addrtype (E) /= SOSC.AF_INET then
-          Raise_Socket_Error (SOSC.EPFNOSUPPORT);
-       end if;
- 
-       Aliases_Count := 0;
-       while Hostent_H_Alias (E, C.int (Aliases_Count)) /= Null_Address loop
-          Aliases_Count := Aliases_Count + 1;
-       end loop;
- 
-       Addresses_Count := 0;
-       while Hostent_H_Addr (E, C.int (Addresses_Count)) /= Null_Address loop
-          Addresses_Count := Addresses_Count + 1;
-       end loop;
- 
-       return Result : Host_Entry_Type
-                         (Aliases_Length   => Aliases_Count,
-                          Addresses_Length => Addresses_Count)
-       do
-          Result.Official := To_Name (Value (Hostent_H_Name (E)));
- 
-          for J in Result.Aliases'Range loop
-             Result.Aliases (J) :=
-               To_Name (Value (Hostent_H_Alias
-                                 (E, C.int (J - Result.Aliases'First))));
-          end loop;
- 
-          for J in Result.Addresses'Range loop
-             declare
-                Addr : In_Addr;
- 
-                --  Hostent_H_Addr (E, <index>) may return an address that is
-                --  not correctly aligned for In_Addr, so we need to use
-                --  an intermediate copy operation on a type with an alignment
-                --  of 1 to recover the value.
- 
-                subtype Addr_Buf_T is C.char_array (1 .. Addr'Size / 8);
-                Unaligned_Addr : Addr_Buf_T;
-                for Unaligned_Addr'Address
-                  use Hostent_H_Addr (E, C.int (J - Result.Addresses'First));
-                pragma Import (Ada, Unaligned_Addr);
- 
-                Aligned_Addr : Addr_Buf_T;
-                for Aligned_Addr'Address use Addr'Address;
-                pragma Import (Ada, Aligned_Addr);
- 
-             begin
-                Aligned_Addr := Unaligned_Addr;
-                To_Inet_Addr (Addr, Result.Addresses (J));
-             end;
-          end loop;
-       end return;
-    end To_Host_Entry;
- 
-    ----------------
-    -- To_In_Addr --
-    ----------------
- 
-    function To_In_Addr (Addr : Inet_Addr_Type) return In_Addr is
-    begin
-       if Addr.Family = Family_Inet then
-          return (S_B1 => C.unsigned_char (Addr.Sin_V4 (1)),
-                  S_B2 => C.unsigned_char (Addr.Sin_V4 (2)),
-                  S_B3 => C.unsigned_char (Addr.Sin_V4 (3)),
-                  S_B4 => C.unsigned_char (Addr.Sin_V4 (4)));
-       end if;
- 
-       raise Socket_Error with "IPv6 not supported";
-    end To_In_Addr;
- 
-    ------------------
-    -- To_Inet_Addr --
-    ------------------
- 
-    procedure To_Inet_Addr
-      (Addr   : In_Addr;
-       Result : out Inet_Addr_Type) is
-    begin
-       Result.Sin_V4 (1) := Inet_Addr_Comp_Type (Addr.S_B1);
-       Result.Sin_V4 (2) := Inet_Addr_Comp_Type (Addr.S_B2);
-       Result.Sin_V4 (3) := Inet_Addr_Comp_Type (Addr.S_B3);
-       Result.Sin_V4 (4) := Inet_Addr_Comp_Type (Addr.S_B4);
-    end To_Inet_Addr;
- 
-    ------------
-    -- To_Int --
-    ------------
- 
-    function To_Int (F : Request_Flag_Type) return C.int
-    is
-       Current : Request_Flag_Type := F;
-       Result  : C.int := 0;
- 
-    begin
-       for J in Flags'Range loop
-          exit when Current = 0;
- 
-          if Current mod 2 /= 0 then
-             if Flags (J) = -1 then
-                Raise_Socket_Error (SOSC.EOPNOTSUPP);
-             end if;
- 
-             Result := Result + Flags (J);
-          end if;
- 
-          Current := Current / 2;
-       end loop;
- 
-       return Result;
-    end To_Int;
- 
-    -------------
-    -- To_Name --
-    -------------
- 
-    function To_Name (N : String) return Name_Type is
-    begin
-       return Name_Type'(N'Length, N);
-    end To_Name;
- 
-    ----------------------
-    -- To_Service_Entry --
-    ----------------------
- 
-    function To_Service_Entry (E : Servent_Access) return Service_Entry_Type is
-       use type C.size_t;
- 
-       Aliases_Count : Natural;
- 
-    begin
-       Aliases_Count := 0;
-       while Servent_S_Alias (E, C.int (Aliases_Count)) /= Null_Address loop
-          Aliases_Count := Aliases_Count + 1;
-       end loop;
- 
-       return Result : Service_Entry_Type (Aliases_Length   => Aliases_Count) do
-          Result.Official := To_Name (Value (Servent_S_Name (E)));
- 
-          for J in Result.Aliases'Range loop
-             Result.Aliases (J) :=
-               To_Name (Value (Servent_S_Alias
-                                 (E, C.int (J - Result.Aliases'First))));
-          end loop;
- 
-          Result.Protocol := To_Name (Value (Servent_S_Proto (E)));
-          Result.Port :=
-            Port_Type (Network_To_Short (Servent_S_Port (E)));
-       end return;
-    end To_Service_Entry;
- 
-    ---------------
-    -- To_String --
-    ---------------
- 
-    function To_String (HN : Name_Type) return String is
-    begin
-       return HN.Name (1 .. HN.Length);
-    end To_String;
- 
-    ----------------
-    -- To_Timeval --
-    ----------------
- 
-    function To_Timeval (Val : Timeval_Duration) return Timeval is
-       S  : time_t;
-       uS : suseconds_t;
- 
-    begin
-       --  If zero, set result as zero (otherwise it gets rounded down to -1)
- 
-       if Val = 0.0 then
-          S  := 0;
-          uS := 0;
- 
-       --  Normal case where we do round down
- 
-       else
-          S  := time_t (Val - 0.5);
-          uS := suseconds_t (1_000_000 * (Val - Selector_Duration (S)));
-       end if;
- 
-       return (S, uS);
-    end To_Timeval;
- 
-    -----------
-    -- Value --
-    -----------
- 
-    function Value (S : System.Address) return String is
-       Str : String (1 .. Positive'Last);
-       for Str'Address use S;
-       pragma Import (Ada, Str);
- 
-       Terminator : Positive := Str'First;
- 
-    begin
-       while Str (Terminator) /= ASCII.NUL loop
-          Terminator := Terminator + 1;
-       end loop;
- 
-       return Str (1 .. Terminator - 1);
-    end Value;
- 
-    -----------
-    -- Write --
-    -----------
- 
-    procedure Write
-      (Stream : in out Datagram_Socket_Stream_Type;
-       Item   : Ada.Streams.Stream_Element_Array)
-    is
-       Last : Stream_Element_Offset;
- 
-    begin
-       Send_Socket
-         (Stream.Socket,
-          Item,
-          Last,
-          Stream.To);
- 
-       --  It is an error if not all of the data has been sent
- 
-       if Last /= Item'Last then
-          Raise_Socket_Error (Socket_Errno);
-       end if;
-    end Write;
- 
-    -----------
-    -- Write --
-    -----------
- 
-    procedure Write
-      (Stream : in out Stream_Socket_Stream_Type;
-       Item   : Ada.Streams.Stream_Element_Array)
-    is
-       First : Ada.Streams.Stream_Element_Offset;
-       Index : Ada.Streams.Stream_Element_Offset;
-       Max   : constant Ada.Streams.Stream_Element_Offset := Item'Last;
- 
-    begin
-       First := Item'First;
-       Index := First - 1;
-       while First <= Max loop
-          Send_Socket (Stream.Socket, Item (First .. Max), Index, null);
- 
-          --  Exit when all or zero data sent. Zero means that the socket has
-          --  been closed by peer.
- 
-          exit when Index < First or else Index = Max;
- 
-          First := Index + 1;
-       end loop;
- 
-       --  For an empty array, we have First > Max, and hence Index >= Max (no
-       --  error, the loop above is never executed). After a successful send,
-       --  Index = Max. The only remaining case, Index < Max, is therefore
-       --  always an actual send failure.
- 
-       if Index < Max then
-          Raise_Socket_Error (Socket_Errno);
-       end if;
-    end Write;
- 
-    Sockets_Library_Controller_Object : Sockets_Library_Controller;
-    pragma Unreferenced (Sockets_Library_Controller_Object);
-    --  The elaboration and finalization of this object perform the required
-    --  initialization and cleanup actions for the sockets library.
- 
- end GNAT.Sockets;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-socket.ads gcc-8.1.0/gcc/ada/g-socket.ads
*** gcc-7.3.0/gcc/ada/g-socket.ads	Fri Jan  6 10:28:06 2017
--- gcc-8.1.0/gcc/ada/g-socket.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,1283 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                         G N A T . S O C K E T S                          --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 2001-2016, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 an interface to the sockets communication facility
- --  provided on many operating systems. This is implemented on the following
- --  platforms:
- 
- --     All native ports, with restrictions as follows
- 
- --       Multicast is available only on systems which provide support for this
- --       feature, so it is not available if Multicast is not supported, or not
- --       installed.
- 
- --     VxWorks cross ports fully implement this package
- 
- --     This package is not yet implemented on LynxOS or other cross ports
- 
- with Ada.Exceptions;
- with Ada.Streams;
- with Ada.Unchecked_Deallocation;
- 
- with Interfaces.C;
- 
- with System.OS_Constants;
- with System.Storage_Elements;
- 
- package GNAT.Sockets is
- 
-    --  Sockets are designed to provide a consistent communication facility
-    --  between applications. This package provides an Ada binding to the
-    --  de-facto standard BSD sockets API. The documentation below covers
-    --  only the specific binding provided by this package. It assumes that
-    --  the reader is already familiar with general network programming and
-    --  sockets usage. A useful reference on this matter is W. Richard Stevens'
-    --  "UNIX Network Programming: The Sockets Networking API"
-    --  (ISBN: 0131411551).
- 
-    --  GNAT.Sockets has been designed with several ideas in mind
- 
-    --  This is a system independent interface. Therefore, we try as much as
-    --  possible to mask system incompatibilities. Some functionalities are not
-    --  available because there are not fully supported on some systems.
- 
-    --  This is a thick binding. For instance, a major effort has been done to
-    --  avoid using memory addresses or untyped ints. We preferred to define
-    --  streams and enumeration types. Errors are not returned as returned
-    --  values but as exceptions.
- 
-    --  This package provides a POSIX-compliant interface (between two
-    --  different implementations of the same routine, we adopt the one closest
-    --  to the POSIX specification). For instance, using select(), the
-    --  notification of an asynchronous connect failure is delivered in the
-    --  write socket set (POSIX) instead of the exception socket set (NT).
- 
-    --  The example below demonstrates various features of GNAT.Sockets:
- 
-    --  with GNAT.Sockets; use GNAT.Sockets;
- 
-    --  with Ada.Text_IO;
-    --  with Ada.Exceptions; use Ada.Exceptions;
- 
-    --  procedure PingPong is
- 
-    --     Group : constant String := "239.255.128.128";
-    --     --  Multicast group: administratively scoped IP address
- 
-    --     task Pong is
-    --        entry Start;
-    --        entry Stop;
-    --     end Pong;
- 
-    --     task body Pong is
-    --        Address  : Sock_Addr_Type;
-    --        Server   : Socket_Type;
-    --        Socket   : Socket_Type;
-    --        Channel  : Stream_Access;
- 
-    --     begin
-    --        --  Get an Internet address of a host (here the local host name).
-    --        --  Note that a host can have several addresses. Here we get
-    --        --  the first one which is supposed to be the official one.
- 
-    --        Address.Addr := Addresses (Get_Host_By_Name (Host_Name), 1);
- 
-    --        --  Get a socket address that is an Internet address and a port
- 
-    --        Address.Port := 5876;
- 
-    --        --  The first step is to create a socket. Once created, this
-    --        --  socket must be associated to with an address. Usually only a
-    --        --  server (Pong here) needs to bind an address explicitly. Most
-    --        --  of the time clients can skip this step because the socket
-    --        --  routines will bind an arbitrary address to an unbound socket.
- 
-    --        Create_Socket (Server);
- 
-    --        --  Allow reuse of local addresses
- 
-    --        Set_Socket_Option
-    --          (Server,
-    --           Socket_Level,
-    --           (Reuse_Address, True));
- 
-    --        Bind_Socket (Server, Address);
- 
-    --        --  A server marks a socket as willing to receive connect events
- 
-    --        Listen_Socket (Server);
- 
-    --        --  Once a server calls Listen_Socket, incoming connects events
-    --        --  can be accepted. The returned Socket is a new socket that
-    --        --  represents the server side of the connection. Server remains
-    --        --  available to receive further connections.
- 
-    --        accept Start;
- 
-    --        Accept_Socket (Server, Socket, Address);
- 
-    --        --  Return a stream associated to the connected socket
- 
-    --        Channel := Stream (Socket);
- 
-    --        --  Force Pong to block
- 
-    --        delay 0.2;
- 
-    --        --  Receive and print message from client Ping
- 
-    --        declare
-    --           Message : String := String'Input (Channel);
- 
-    --        begin
-    --           Ada.Text_IO.Put_Line (Message);
- 
-    --           --  Send same message back to client Ping
- 
-    --           String'Output (Channel, Message);
-    --        end;
- 
-    --        Close_Socket (Server);
-    --        Close_Socket (Socket);
- 
-    --        --  Part of the multicast example
- 
-    --        --  Create a datagram socket to send connectionless, unreliable
-    --        --  messages of a fixed maximum length.
- 
-    --        Create_Socket (Socket, Family_Inet, Socket_Datagram);
- 
-    --        --  Allow reuse of local addresses
- 
-    --        Set_Socket_Option
-    --          (Socket,
-    --           Socket_Level,
-    --           (Reuse_Address, True));
- 
-    --        --  Controls the live time of the datagram to avoid it being
-    --        --  looped forever due to routing errors. Routers decrement
-    --        --  the TTL of every datagram as it traverses from one network
-    --        --  to another and when its value reaches 0 the packet is
-    --        --  dropped. Default is 1.
- 
-    --        Set_Socket_Option
-    --          (Socket,
-    --           IP_Protocol_For_IP_Level,
-    --           (Multicast_TTL, 1));
- 
-    --        --  Want the data you send to be looped back to your host
- 
-    --        Set_Socket_Option
-    --          (Socket,
-    --           IP_Protocol_For_IP_Level,
-    --           (Multicast_Loop, True));
- 
-    --        --  If this socket is intended to receive messages, bind it
-    --        --  to a given socket address.
- 
-    --        Address.Addr := Any_Inet_Addr;
-    --        Address.Port := 55505;
- 
-    --        Bind_Socket (Socket, Address);
- 
-    --        --  Join a multicast group
- 
-    --        --  Portability note: On Windows, this option may be set only
-    --        --  on a bound socket.
- 
-    --        Set_Socket_Option
-    --          (Socket,
-    --           IP_Protocol_For_IP_Level,
-    --           (Add_Membership, Inet_Addr (Group), Any_Inet_Addr));
- 
-    --        --  If this socket is intended to send messages, provide the
-    --        --  receiver socket address.
- 
-    --        Address.Addr := Inet_Addr (Group);
-    --        Address.Port := 55506;
- 
-    --        Channel := Stream (Socket, Address);
- 
-    --        --  Receive and print message from client Ping
- 
-    --        declare
-    --           Message : String := String'Input (Channel);
- 
-    --        begin
-    --           --  Get the address of the sender
- 
-    --           Address := Get_Address (Channel);
-    --           Ada.Text_IO.Put_Line (Message & " from " & Image (Address));
- 
-    --           --  Send same message back to client Ping
- 
-    --           String'Output (Channel, Message);
-    --        end;
- 
-    --        Close_Socket (Socket);
- 
-    --        accept Stop;
- 
-    --     exception when E : others =>
-    --        Ada.Text_IO.Put_Line
-    --          (Exception_Name (E) & ": " & Exception_Message (E));
-    --     end Pong;
- 
-    --     task Ping is
-    --        entry Start;
-    --        entry Stop;
-    --     end Ping;
- 
-    --     task body Ping is
-    --        Address  : Sock_Addr_Type;
-    --        Socket   : Socket_Type;
-    --        Channel  : Stream_Access;
- 
-    --     begin
-    --        accept Start;
- 
-    --        --  See comments in Ping section for the first steps
- 
-    --        Address.Addr := Addresses (Get_Host_By_Name (Host_Name), 1);
-    --        Address.Port := 5876;
-    --        Create_Socket (Socket);
- 
-    --        Set_Socket_Option
-    --          (Socket,
-    --           Socket_Level,
-    --           (Reuse_Address, True));
- 
-    --        --  Force Ping to block
- 
-    --        delay 0.2;
- 
-    --        --  If the client's socket is not bound, Connect_Socket will
-    --        --  bind to an unused address. The client uses Connect_Socket to
-    --        --  create a logical connection between the client's socket and
-    --        --  a server's socket returned by Accept_Socket.
- 
-    --        Connect_Socket (Socket, Address);
- 
-    --        Channel := Stream (Socket);
- 
-    --        --  Send message to server Pong
- 
-    --        String'Output (Channel, "Hello world");
- 
-    --        --  Force Ping to block
- 
-    --        delay 0.2;
- 
-    --        --  Receive and print message from server Pong
- 
-    --        Ada.Text_IO.Put_Line (String'Input (Channel));
-    --        Close_Socket (Socket);
- 
-    --        --  Part of multicast example. Code similar to Pong's one
- 
-    --        Create_Socket (Socket, Family_Inet, Socket_Datagram);
- 
-    --        Set_Socket_Option
-    --          (Socket,
-    --           Socket_Level,
-    --           (Reuse_Address, True));
- 
-    --        Set_Socket_Option
-    --          (Socket,
-    --           IP_Protocol_For_IP_Level,
-    --           (Multicast_TTL, 1));
- 
-    --        Set_Socket_Option
-    --          (Socket,
-    --           IP_Protocol_For_IP_Level,
-    --           (Multicast_Loop, True));
- 
-    --        Address.Addr := Any_Inet_Addr;
-    --        Address.Port := 55506;
- 
-    --        Bind_Socket (Socket, Address);
- 
-    --        Set_Socket_Option
-    --          (Socket,
-    --           IP_Protocol_For_IP_Level,
-    --           (Add_Membership, Inet_Addr (Group), Any_Inet_Addr));
- 
-    --        Address.Addr := Inet_Addr (Group);
-    --        Address.Port := 55505;
- 
-    --        Channel := Stream (Socket, Address);
- 
-    --        --  Send message to server Pong
- 
-    --        String'Output (Channel, "Hello world");
- 
-    --        --  Receive and print message from server Pong
- 
-    --        declare
-    --           Message : String := String'Input (Channel);
- 
-    --        begin
-    --           Address := Get_Address (Channel);
-    --           Ada.Text_IO.Put_Line (Message & " from " & Image (Address));
-    --        end;
- 
-    --        Close_Socket (Socket);
- 
-    --        accept Stop;
- 
-    --     exception when E : others =>
-    --        Ada.Text_IO.Put_Line
-    --          (Exception_Name (E) & ": " & Exception_Message (E));
-    --     end Ping;
- 
-    --  begin
-    --     Initialize;
-    --     Ping.Start;
-    --     Pong.Start;
-    --     Ping.Stop;
-    --     Pong.Stop;
-    --     Finalize;
-    --  end PingPong;
- 
-    package SOSC renames System.OS_Constants;
-    --  Renaming used to provide short-hand notations throughout the sockets
-    --  binding. Note that System.OS_Constants is an internal unit, and the
-    --  entities declared therein are not meant for direct access by users,
-    --  including through this renaming.
- 
-    use type Interfaces.C.int;
-    --  Need visibility on "-" operator so that we can write -1
- 
-    procedure Initialize;
-    pragma Obsolescent
-      (Entity  => Initialize,
-       Message => "explicit initialization is no longer required");
-    --  Initialize must be called before using any other socket routines.
-    --  Note that this operation is a no-op on UNIX platforms, but applications
-    --  should make sure to call it if portability is expected: some platforms
-    --  (such as Windows) require initialization before any socket operation.
-    --  This is now a no-op (initialization and finalization are done
-    --  automatically).
- 
-    procedure Initialize (Process_Blocking_IO : Boolean);
-    pragma Obsolescent
-      (Entity  => Initialize,
-       Message => "passing a parameter to Initialize is no longer supported");
-    --  Previous versions of GNAT.Sockets used to require the user to indicate
-    --  whether socket I/O was process- or thread-blocking on the platform.
-    --  This property is now determined automatically when the run-time library
-    --  is built. The old version of Initialize, taking a parameter, is kept
-    --  for compatibility reasons, but this interface is obsolete (and if the
-    --  value given is wrong, an exception will be raised at run time).
-    --  This is now a no-op (initialization and finalization are done
-    --  automatically).
- 
-    procedure Finalize;
-    pragma Obsolescent
-      (Entity  => Finalize,
-       Message => "explicit finalization is no longer required");
-    --  After Finalize is called it is not possible to use any routines
-    --  exported in by this package. This procedure is idempotent.
-    --  This is now a no-op (initialization and finalization are done
-    --  automatically).
- 
-    type Socket_Type is private;
-    --  Sockets are used to implement a reliable bi-directional point-to-point,
-    --  stream-based connections between hosts. No_Socket provides a special
-    --  value to denote uninitialized sockets.
- 
-    No_Socket : constant Socket_Type;
- 
-    type Selector_Type is limited private;
-    type Selector_Access is access all Selector_Type;
-    --  Selector objects are used to wait for i/o events to occur on sockets
- 
-    Null_Selector : constant Selector_Type;
-    --  The Null_Selector can be used in place of a normal selector without
-    --  having to call Create_Selector if the use of Abort_Selector is not
-    --  required.
- 
-    --  Timeval_Duration is a subtype of Standard.Duration because the full
-    --  range of Standard.Duration cannot be represented in the equivalent C
-    --  structure (struct timeval). Moreover, negative values are not allowed
-    --  to avoid system incompatibilities.
- 
-    Immediate : constant Duration := 0.0;
- 
-    Forever : constant Duration :=
-                Duration'Min (Duration'Last, 1.0 * SOSC.MAX_tv_sec);
-    --  Largest possible Duration that is also a valid value for struct timeval
- 
-    subtype Timeval_Duration is Duration range Immediate .. Forever;
- 
-    subtype Selector_Duration is Timeval_Duration;
-    --  Timeout value for selector operations
- 
-    type Selector_Status is (Completed, Expired, Aborted);
-    --  Completion status of a selector operation, indicated as follows:
-    --    Complete: one of the expected events occurred
-    --    Expired:  no event occurred before the expiration of the timeout
-    --    Aborted:  an external action cancelled the wait operation before
-    --              any event occurred.
- 
-    Socket_Error : exception;
-    --  There is only one exception in this package to deal with an error during
-    --  a socket routine. Once raised, its message contains a string describing
-    --  the error code.
- 
-    function Image (Socket : Socket_Type) return String;
-    --  Return a printable string for Socket
- 
-    function To_C (Socket : Socket_Type) return Integer;
-    --  Return a file descriptor to be used by external subprograms. This is
-    --  useful for C functions that are not yet interfaced in this package.
- 
-    type Family_Type is (Family_Inet, Family_Inet6);
-    --  Address family (or protocol family) identifies the communication domain
-    --  and groups protocols with similar address formats.
- 
-    type Mode_Type is (Socket_Stream, Socket_Datagram);
-    --  Stream sockets provide connection-oriented byte streams. Datagram
-    --  sockets support unreliable connectionless message based communication.
- 
-    type Shutmode_Type is (Shut_Read, Shut_Write, Shut_Read_Write);
-    --  When a process closes a socket, the policy is to retain any data queued
-    --  until either a delivery or a timeout expiration (in this case, the data
-    --  are discarded). A finer control is available through shutdown. With
-    --  Shut_Read, no more data can be received from the socket. With_Write, no
-    --  more data can be transmitted. Neither transmission nor reception can be
-    --  performed with Shut_Read_Write.
- 
-    type Port_Type is range 0 .. 16#ffff#;
-    --  TCP/UDP port number
- 
-    Any_Port : constant Port_Type;
-    --  All ports
- 
-    No_Port : constant Port_Type;
-    --  Uninitialized port number
- 
-    type Inet_Addr_Type (Family : Family_Type := Family_Inet) is private;
-    --  An Internet address depends on an address family (IPv4 contains 4 octets
-    --  and IPv6 contains 16 octets). Any_Inet_Addr is a special value treated
-    --  like a wildcard enabling all addresses. No_Inet_Addr provides a special
-    --  value to denote uninitialized inet addresses.
- 
-    Any_Inet_Addr       : constant Inet_Addr_Type;
-    No_Inet_Addr        : constant Inet_Addr_Type;
-    Broadcast_Inet_Addr : constant Inet_Addr_Type;
-    Loopback_Inet_Addr  : constant Inet_Addr_Type;
- 
-    --  Useful constants for IPv4 multicast addresses
- 
-    Unspecified_Group_Inet_Addr : constant Inet_Addr_Type;
-    All_Hosts_Group_Inet_Addr   : constant Inet_Addr_Type;
-    All_Routers_Group_Inet_Addr : constant Inet_Addr_Type;
- 
-    type Sock_Addr_Type (Family : Family_Type := Family_Inet) is record
-       Addr : Inet_Addr_Type (Family);
-       Port : Port_Type;
-    end record;
-    --  Socket addresses fully define a socket connection with protocol family,
-    --  an Internet address and a port. No_Sock_Addr provides a special value
-    --  for uninitialized socket addresses.
- 
-    No_Sock_Addr : constant Sock_Addr_Type;
- 
-    function Image (Value : Inet_Addr_Type) return String;
-    --  Return an image of an Internet address. IPv4 notation consists in 4
-    --  octets in decimal format separated by dots. IPv6 notation consists in
-    --  16 octets in hexadecimal format separated by colons (and possibly
-    --  dots).
- 
-    function Image (Value : Sock_Addr_Type) return String;
-    --  Return inet address image and port image separated by a colon
- 
-    function Inet_Addr (Image : String) return Inet_Addr_Type;
-    --  Convert address image from numbers-and-dots notation into an
-    --  inet address.
- 
-    --  Host entries provide complete information on a given host: the official
-    --  name, an array of alternative names or aliases and array of network
-    --  addresses.
- 
-    type Host_Entry_Type
-      (Aliases_Length, Addresses_Length : Natural) is private;
- 
-    function Official_Name (E : Host_Entry_Type) return String;
-    --  Return official name in host entry
- 
-    function Aliases_Length (E : Host_Entry_Type) return Natural;
-    --  Return number of aliases in host entry
- 
-    function Addresses_Length (E : Host_Entry_Type) return Natural;
-    --  Return number of addresses in host entry
- 
-    function Aliases
-      (E : Host_Entry_Type;
-       N : Positive := 1) return String;
-    --  Return N'th aliases in host entry. The first index is 1
- 
-    function Addresses
-      (E : Host_Entry_Type;
-       N : Positive := 1) return Inet_Addr_Type;
-    --  Return N'th addresses in host entry. The first index is 1
- 
-    Host_Error : exception;
-    --  Exception raised by the two following procedures. Once raised, its
-    --  message contains a string describing the error code. This exception is
-    --  raised when an host entry cannot be retrieved.
- 
-    function Get_Host_By_Address
-      (Address : Inet_Addr_Type;
-       Family  : Family_Type := Family_Inet) return Host_Entry_Type;
-    --  Return host entry structure for the given Inet address. Note that no
-    --  result will be returned if there is no mapping of this IP address to a
-    --  host name in the system tables (host database, DNS or otherwise).
- 
-    function Get_Host_By_Name
-      (Name : String) return Host_Entry_Type;
-    --  Return host entry structure for the given host name. Here name is
-    --  either a host name, or an IP address. If Name is an IP address, this
-    --  is equivalent to Get_Host_By_Address (Inet_Addr (Name)).
- 
-    function Host_Name return String;
-    --  Return the name of the current host
- 
-    type Service_Entry_Type (Aliases_Length : Natural) is private;
-    --  Service entries provide complete information on a given service: the
-    --  official name, an array of alternative names or aliases and the port
-    --  number.
- 
-    function Official_Name (S : Service_Entry_Type) return String;
-    --  Return official name in service entry
- 
-    function Port_Number (S : Service_Entry_Type) return Port_Type;
-    --  Return port number in service entry
- 
-    function Protocol_Name (S : Service_Entry_Type) return String;
-    --  Return Protocol in service entry (usually UDP or TCP)
- 
-    function Aliases_Length (S : Service_Entry_Type) return Natural;
-    --  Return number of aliases in service entry
- 
-    function Aliases
-      (S : Service_Entry_Type;
-       N : Positive := 1) return String;
-    --  Return N'th aliases in service entry (the first index is 1)
- 
-    function Get_Service_By_Name
-      (Name     : String;
-       Protocol : String) return Service_Entry_Type;
-    --  Return service entry structure for the given service name
- 
-    function Get_Service_By_Port
-      (Port     : Port_Type;
-       Protocol : String) return Service_Entry_Type;
-    --  Return service entry structure for the given service port number
- 
-    Service_Error : exception;
-    --  Comment required ???
- 
-    --  Errors are described by an enumeration type. There is only one exception
-    --  Socket_Error in this package to deal with an error during a socket
-    --  routine. Once raised, its message contains the error code between
-    --  brackets and a string describing the error code.
- 
-    --  The name of the enumeration constant documents the error condition
-    --  Note that on some platforms, a single error value is used for both
-    --  EWOULDBLOCK and EAGAIN. Both errors are therefore always reported as
-    --  Resource_Temporarily_Unavailable.
- 
-    type Error_Type is
-      (Success,
-       Permission_Denied,
-       Address_Already_In_Use,
-       Cannot_Assign_Requested_Address,
-       Address_Family_Not_Supported_By_Protocol,
-       Operation_Already_In_Progress,
-       Bad_File_Descriptor,
-       Software_Caused_Connection_Abort,
-       Connection_Refused,
-       Connection_Reset_By_Peer,
-       Destination_Address_Required,
-       Bad_Address,
-       Host_Is_Down,
-       No_Route_To_Host,
-       Operation_Now_In_Progress,
-       Interrupted_System_Call,
-       Invalid_Argument,
-       Input_Output_Error,
-       Transport_Endpoint_Already_Connected,
-       Too_Many_Symbolic_Links,
-       Too_Many_Open_Files,
-       Message_Too_Long,
-       File_Name_Too_Long,
-       Network_Is_Down,
-       Network_Dropped_Connection_Because_Of_Reset,
-       Network_Is_Unreachable,
-       No_Buffer_Space_Available,
-       Protocol_Not_Available,
-       Transport_Endpoint_Not_Connected,
-       Socket_Operation_On_Non_Socket,
-       Operation_Not_Supported,
-       Protocol_Family_Not_Supported,
-       Protocol_Not_Supported,
-       Protocol_Wrong_Type_For_Socket,
-       Cannot_Send_After_Transport_Endpoint_Shutdown,
-       Socket_Type_Not_Supported,
-       Connection_Timed_Out,
-       Too_Many_References,
-       Resource_Temporarily_Unavailable,
-       Broken_Pipe,
-       Unknown_Host,
-       Host_Name_Lookup_Failure,
-       Non_Recoverable_Error,
-       Unknown_Server_Error,
-       Cannot_Resolve_Error);
- 
-    --  Get_Socket_Options and Set_Socket_Options manipulate options associated
-    --  with a socket. Options may exist at multiple protocol levels in the
-    --  communication stack. Socket_Level is the uppermost socket level.
- 
-    type Level_Type is
-      (Socket_Level,
-       IP_Protocol_For_IP_Level,
-       IP_Protocol_For_UDP_Level,
-       IP_Protocol_For_TCP_Level);
- 
-    --  There are several options available to manipulate sockets. Each option
-    --  has a name and several values available. Most of the time, the value is
-    --  a boolean to enable or disable this option.
- 
-    type Option_Name is
-      (Generic_Option,
-       Keep_Alive,          -- Enable sending of keep-alive messages
-       Reuse_Address,       -- Allow bind to reuse local address
-       Broadcast,           -- Enable datagram sockets to recv/send broadcasts
-       Send_Buffer,         -- Set/get the maximum socket send buffer in bytes
-       Receive_Buffer,      -- Set/get the maximum socket recv buffer in bytes
-       Linger,              -- Shutdown wait for msg to be sent or timeout occur
-       Error,               -- Get and clear the pending socket error
-       No_Delay,            -- Do not delay send to coalesce data (TCP_NODELAY)
-       Add_Membership,      -- Join a multicast group
-       Drop_Membership,     -- Leave a multicast group
-       Multicast_If,        -- Set default out interface for multicast packets
-       Multicast_TTL,       -- Set the time-to-live of sent multicast packets
-       Multicast_Loop,      -- Sent multicast packets are looped to local socket
-       Receive_Packet_Info, -- Receive low level packet info as ancillary data
-       Send_Timeout,        -- Set timeout value for output
-       Receive_Timeout,     -- Set timeout value for input
-       Busy_Polling);       -- Set busy polling mode
-    subtype Specific_Option_Name is
-      Option_Name range Keep_Alive .. Option_Name'Last;
- 
-    type Option_Type (Name : Option_Name := Keep_Alive) is record
-       case Name is
-          when Generic_Option =>
-             Optname : Interfaces.C.int := -1;
-             Optval  : Interfaces.C.int;
- 
-          when Keep_Alive          |
-               Reuse_Address       |
-               Broadcast           |
-               Linger              |
-               No_Delay            |
-               Receive_Packet_Info |
-               Multicast_Loop      =>
-             Enabled : Boolean;
- 
-             case Name is
-                when Linger    =>
-                   Seconds : Natural;
-                when others    =>
-                   null;
-             end case;
- 
-          when Busy_Polling    =>
-             Microseconds : Natural;
- 
-          when Send_Buffer     |
-               Receive_Buffer  =>
-             Size : Natural;
- 
-          when Error           =>
-             Error : Error_Type;
- 
-          when Add_Membership  |
-               Drop_Membership =>
-             Multicast_Address : Inet_Addr_Type;
-             Local_Interface   : Inet_Addr_Type;
- 
-          when Multicast_If    =>
-             Outgoing_If : Inet_Addr_Type;
- 
-          when Multicast_TTL   =>
-             Time_To_Live : Natural;
- 
-          when Send_Timeout |
-               Receive_Timeout =>
-             Timeout : Timeval_Duration;
- 
-       end case;
-    end record;
- 
-    --  There are several controls available to manipulate sockets. Each option
-    --  has a name and several values available. These controls differ from the
-    --  socket options in that they are not specific to sockets but are
-    --  available for any device.
- 
-    type Request_Name is
-      (Non_Blocking_IO,  --  Cause a caller not to wait on blocking operations
-       N_Bytes_To_Read); --  Return the number of bytes available to read
- 
-    type Request_Type (Name : Request_Name := Non_Blocking_IO) is record
-       case Name is
-          when Non_Blocking_IO =>
-             Enabled : Boolean;
- 
-          when N_Bytes_To_Read =>
-             Size : Natural;
- 
-       end case;
-    end record;
- 
-    --  A request flag allows specification of the type of message transmissions
-    --  or receptions. A request flag can be combination of zero or more
-    --  predefined request flags.
- 
-    type Request_Flag_Type is private;
- 
-    No_Request_Flag : constant Request_Flag_Type;
-    --  This flag corresponds to the normal execution of an operation
- 
-    Process_Out_Of_Band_Data : constant Request_Flag_Type;
-    --  This flag requests that the receive or send function operates on
-    --  out-of-band data when the socket supports this notion (e.g.
-    --  Socket_Stream).
- 
-    Peek_At_Incoming_Data : constant Request_Flag_Type;
-    --  This flag causes the receive operation to return data from the beginning
-    --  of the receive queue without removing that data from the queue. A
-    --  subsequent receive call will return the same data.
- 
-    Wait_For_A_Full_Reception : constant Request_Flag_Type;
-    --  This flag requests that the operation block until the full request is
-    --  satisfied. However, the call may still return less data than requested
-    --  if a signal is caught, an error or disconnect occurs, or the next data
-    --  to be received is of a different type than that returned. Note that
-    --  this flag depends on support in the underlying sockets implementation,
-    --  and is not supported under Windows.
- 
-    Send_End_Of_Record : constant Request_Flag_Type;
-    --  This flag indicates that the entire message has been sent and so this
-    --  terminates the record.
- 
-    function "+" (L, R : Request_Flag_Type) return Request_Flag_Type;
-    --  Combine flag L with flag R
- 
-    type Stream_Element_Reference is access all Ada.Streams.Stream_Element;
- 
-    type Vector_Element is record
-       Base   : Stream_Element_Reference;
-       Length : Interfaces.C.size_t;
-    end record;
- 
-    type Vector_Type is array (Integer range <>) of Vector_Element;
- 
-    procedure Create_Socket
-      (Socket : out Socket_Type;
-       Family : Family_Type := Family_Inet;
-       Mode   : Mode_Type   := Socket_Stream);
-    --  Create an endpoint for communication. Raises Socket_Error on error
- 
-    procedure Accept_Socket
-      (Server  : Socket_Type;
-       Socket  : out Socket_Type;
-       Address : out Sock_Addr_Type);
-    --  Extracts the first connection request on the queue of pending
-    --  connections, creates a new connected socket with mostly the same
-    --  properties as Server, and allocates a new socket. The returned Address
-    --  is filled in with the address of the connection. Raises Socket_Error on
-    --  error. Note: if Server is a non-blocking socket, whether or not this
-    --  aspect is inherited by Socket is platform-dependent.
- 
-    procedure Accept_Socket
-      (Server   : Socket_Type;
-       Socket   : out Socket_Type;
-       Address  : out Sock_Addr_Type;
-       Timeout  : Selector_Duration;
-       Selector : access Selector_Type := null;
-       Status   : out Selector_Status);
-    --  Accept a new connection on Server using Accept_Socket, waiting no longer
-    --  than the given timeout duration. Status is set to indicate whether the
-    --  operation completed successfully, timed out, or was aborted. If Selector
-    --  is not null, the designated selector is used to wait for the socket to
-    --  become available, else a private selector object is created by this
-    --  procedure and destroyed before it returns.
- 
-    procedure Bind_Socket
-      (Socket  : Socket_Type;
-       Address : Sock_Addr_Type);
-    --  Once a socket is created, assign a local address to it. Raise
-    --  Socket_Error on error.
- 
-    procedure Close_Socket (Socket : Socket_Type);
-    --  Close a socket and more specifically a non-connected socket
- 
-    procedure Connect_Socket
-      (Socket : Socket_Type;
-       Server : Sock_Addr_Type);
-    --  Make a connection to another socket which has the address of Server.
-    --  Raises Socket_Error on error.
- 
-    procedure Connect_Socket
-      (Socket   : Socket_Type;
-       Server   : Sock_Addr_Type;
-       Timeout  : Selector_Duration;
-       Selector : access Selector_Type := null;
-       Status   : out Selector_Status);
-    --  Connect Socket to the given Server address using Connect_Socket, waiting
-    --  no longer than the given timeout duration. Status is set to indicate
-    --  whether the operation completed successfully, timed out, or was aborted.
-    --  If Selector is not null, the designated selector is used to wait for the
-    --  socket to become available, else a private selector object is created
-    --  by this procedure and destroyed before it returns. If Timeout is 0.0,
-    --  no attempt is made to detect whether the connection has succeeded; it
-    --  is up to the user to determine this using Check_Selector later on.
- 
-    procedure Control_Socket
-      (Socket  : Socket_Type;
-       Request : in out Request_Type);
-    --  Obtain or set parameter values that control the socket. This control
-    --  differs from the socket options in that they are not specific to sockets
-    --  but are available for any device.
- 
-    function Get_Peer_Name (Socket : Socket_Type) return Sock_Addr_Type;
-    --  Return the peer or remote socket address of a socket. Raise
-    --  Socket_Error on error.
- 
-    function Get_Socket_Name (Socket : Socket_Type) return Sock_Addr_Type;
-    --  Return the local or current socket address of a socket. Return
-    --  No_Sock_Addr on error (e.g. socket closed or not locally bound).
- 
-    function Get_Socket_Option
-      (Socket  : Socket_Type;
-       Level   : Level_Type := Socket_Level;
-       Name    : Option_Name;
-       Optname : Interfaces.C.int := -1) return Option_Type;
-    --  Get the options associated with a socket. Raises Socket_Error on error.
-    --  Optname identifies specific option when Name is Generic_Option.
- 
-    procedure Listen_Socket
-      (Socket : Socket_Type;
-       Length : Natural := 15);
-    --  To accept connections, a socket is first created with Create_Socket,
-    --  a willingness to accept incoming connections and a queue Length for
-    --  incoming connections are specified. Raise Socket_Error on error.
-    --  The queue length of 15 is an example value that should be appropriate
-    --  in usual cases. It can be adjusted according to each application's
-    --  particular requirements.
- 
-    procedure Receive_Socket
-      (Socket : Socket_Type;
-       Item   : out Ada.Streams.Stream_Element_Array;
-       Last   : out Ada.Streams.Stream_Element_Offset;
-       Flags  : Request_Flag_Type := No_Request_Flag);
-    --  Receive message from Socket. Last is the index value such that Item
-    --  (Last) is the last character assigned. Note that Last is set to
-    --  Item'First - 1 when the socket has been closed by peer. This is not
-    --  an error, and no exception is raised in this case unless Item'First
-    --  is Stream_Element_Offset'First, in which case Constraint_Error is
-    --  raised. Flags allows control of the reception. Raise Socket_Error on
-    --  error.
- 
-    procedure Receive_Socket
-      (Socket : Socket_Type;
-       Item   : out Ada.Streams.Stream_Element_Array;
-       Last   : out Ada.Streams.Stream_Element_Offset;
-       From   : out Sock_Addr_Type;
-       Flags  : Request_Flag_Type := No_Request_Flag);
-    --  Receive message from Socket. If Socket is not connection-oriented, the
-    --  source address From of the message is filled in. Last is the index
-    --  value such that Item (Last) is the last character assigned. Flags
-    --  allows control of the reception. Raises Socket_Error on error.
- 
-    procedure Receive_Vector
-      (Socket : Socket_Type;
-       Vector : Vector_Type;
-       Count  : out Ada.Streams.Stream_Element_Count;
-       Flags  : Request_Flag_Type := No_Request_Flag);
-    --  Receive data from a socket and scatter it into the set of vector
-    --  elements Vector. Count is set to the count of received stream elements.
-    --  Flags allow control over reception.
- 
-    function Resolve_Exception
-      (Occurrence : Ada.Exceptions.Exception_Occurrence) return Error_Type;
-    --  When Socket_Error or Host_Error are raised, the exception message
-    --  contains the error code between brackets and a string describing the
-    --  error code. Resolve_Error extracts the error code from an exception
-    --  message and translate it into an enumeration value.
- 
-    procedure Send_Socket
-      (Socket : Socket_Type;
-       Item   : Ada.Streams.Stream_Element_Array;
-       Last   : out Ada.Streams.Stream_Element_Offset;
-       To     : access Sock_Addr_Type;
-       Flags  : Request_Flag_Type := No_Request_Flag);
-    pragma Inline (Send_Socket);
-    --  Transmit a message over a socket. For a datagram socket, the address
-    --  is given by To.all. For a stream socket, To must be null. Last
-    --  is the index value such that Item (Last) is the last character
-    --  sent. Note that Last is set to Item'First - 1 if the socket has been
-    --  closed by the peer (unless Item'First is Stream_Element_Offset'First,
-    --  in which case Constraint_Error is raised instead). This is not an error,
-    --  and Socket_Error is not raised in that case. Flags allows control of the
-    --  transmission. Raises exception Socket_Error on error. Note: this
-    --  subprogram is inlined because it is also used to implement the two
-    --  variants below.
- 
-    procedure Send_Socket
-      (Socket : Socket_Type;
-       Item   : Ada.Streams.Stream_Element_Array;
-       Last   : out Ada.Streams.Stream_Element_Offset;
-       Flags  : Request_Flag_Type := No_Request_Flag);
-    --  Transmit a message over a socket. Upon return, Last is set to the index
-    --  within Item of the last element transmitted. Flags allows control of
-    --  the transmission. Raises Socket_Error on any detected error condition.
- 
-    procedure Send_Socket
-      (Socket : Socket_Type;
-       Item   : Ada.Streams.Stream_Element_Array;
-       Last   : out Ada.Streams.Stream_Element_Offset;
-       To     : Sock_Addr_Type;
-       Flags  : Request_Flag_Type := No_Request_Flag);
-    --  Transmit a message over a datagram socket. The destination address is
-    --  To. Flags allows control of the transmission. Raises Socket_Error on
-    --  error.
- 
-    procedure Send_Vector
-      (Socket : Socket_Type;
-       Vector : Vector_Type;
-       Count  : out Ada.Streams.Stream_Element_Count;
-       Flags  : Request_Flag_Type := No_Request_Flag);
-    --  Transmit data gathered from the set of vector elements Vector to a
-    --  socket. Count is set to the count of transmitted stream elements. Flags
-    --  allow control over transmission.
- 
-    procedure Set_Close_On_Exec
-      (Socket        : Socket_Type;
-       Close_On_Exec : Boolean;
-       Status        : out Boolean);
-    --  When Close_On_Exec is True, mark Socket to be closed automatically when
-    --  a new program is executed by the calling process (i.e. prevent Socket
-    --  from being inherited by child processes). When Close_On_Exec is False,
-    --  mark Socket to not be closed on exec (i.e. allow it to be inherited).
-    --  Status is False if the operation could not be performed, or is not
-    --  supported on the target platform.
- 
-    procedure Set_Socket_Option
-      (Socket : Socket_Type;
-       Level  : Level_Type := Socket_Level;
-       Option : Option_Type);
-    --  Manipulate socket options. Raises Socket_Error on error
- 
-    procedure Shutdown_Socket
-      (Socket : Socket_Type;
-       How    : Shutmode_Type := Shut_Read_Write);
-    --  Shutdown a connected socket. If How is Shut_Read further receives will
-    --  be disallowed. If How is Shut_Write further sends will be disallowed.
-    --  If How is Shut_Read_Write further sends and receives will be disallowed.
- 
-    type Stream_Access is access all Ada.Streams.Root_Stream_Type'Class;
-    --  Same interface as Ada.Streams.Stream_IO
- 
-    function Stream (Socket : Socket_Type) return Stream_Access;
-    --  Create a stream associated with a connected stream-based socket.
-    --  Note: keep in mind that the default stream attributes for composite
-    --  types perform separate Read/Write operations for each component,
-    --  recursively. If performance is an issue, you may want to consider
-    --  introducing a buffering stage.
- 
-    function Stream
-      (Socket  : Socket_Type;
-       Send_To : Sock_Addr_Type) return Stream_Access;
-    --  Create a stream associated with an already bound datagram-based socket.
-    --  Send_To is the destination address to which messages are being sent.
- 
-    function Get_Address
-      (Stream : not null Stream_Access) return Sock_Addr_Type;
-    --  Return the socket address from which the last message was received
- 
-    procedure Free is new Ada.Unchecked_Deallocation
-      (Ada.Streams.Root_Stream_Type'Class, Stream_Access);
-    --  Destroy a stream created by one of the Stream functions above, releasing
-    --  the corresponding resources. The user is responsible for calling this
-    --  subprogram when the stream is not needed anymore.
- 
-    type Socket_Set_Type is limited private;
-    --  This type allows manipulation of sets of sockets. It allows waiting
-    --  for events on multiple endpoints at one time. This type has default
-    --  initialization, and the default value is the empty set.
-    --
-    --  Note: This type used to contain a pointer to dynamically allocated
-    --  storage, but this is not the case anymore, and no special precautions
-    --  are required to avoid memory leaks.
- 
-    procedure Clear (Item : in out Socket_Set_Type; Socket : Socket_Type);
-    --  Remove Socket from Item
- 
-    procedure Copy (Source : Socket_Set_Type; Target : out Socket_Set_Type);
-    --  Copy Source into Target as Socket_Set_Type is limited private
- 
-    procedure Empty (Item : out Socket_Set_Type);
-    --  Remove all Sockets from Item
- 
-    procedure Get (Item : in out Socket_Set_Type; Socket : out Socket_Type);
-    --  Extract a Socket from socket set Item. Socket is set to
-    --  No_Socket when the set is empty.
- 
-    function Is_Empty (Item : Socket_Set_Type) return Boolean;
-    --  Return True iff Item is empty
- 
-    function Is_Set
-      (Item   : Socket_Set_Type;
-       Socket : Socket_Type) return Boolean;
-    --  Return True iff Socket is present in Item
- 
-    procedure Set (Item : in out Socket_Set_Type; Socket : Socket_Type);
-    --  Insert Socket into Item
- 
-    function Image (Item : Socket_Set_Type) return String;
-    --  Return a printable image of Item, for debugging purposes
- 
-    --  The select(2) system call waits for events to occur on any of a set of
-    --  file descriptors. Usually, three independent sets of descriptors are
-    --  watched (read, write  and exception). A timeout gives an upper bound
-    --  on the amount of time elapsed before select returns. This function
-    --  blocks until an event occurs. On some platforms, the select(2) system
-    --  can block the full process (not just the calling thread).
-    --
-    --  Check_Selector provides the very same behavior. The only difference is
-    --  that it does not watch for exception events. Note that on some platforms
-    --  it is kept process blocking on purpose. The timeout parameter allows the
-    --  user to have the behavior he wants. Abort_Selector allows the safe
-    --  abort of a blocked Check_Selector call. A special socket is opened by
-    --  Create_Selector and included in each call to Check_Selector.
-    --
-    --  Abort_Selector causes an event to occur on this descriptor in order to
-    --  unblock Check_Selector. Note that each call to Abort_Selector will cause
-    --  exactly one call to Check_Selector to return with Aborted status. The
-    --  special socket created by Create_Selector is closed when Close_Selector
-    --  is called.
-    --
-    --  A typical case where it is useful to abort a Check_Selector operation is
-    --  the situation where a change to the monitored sockets set must be made.
- 
-    procedure Create_Selector (Selector : out Selector_Type);
-    --  Initialize (open) a new selector
- 
-    procedure Close_Selector (Selector : in out Selector_Type);
-    --  Close Selector and all internal descriptors associated; deallocate any
-    --  associated resources. This subprogram may be called only when there is
-    --  no other task still using Selector (i.e. still executing Check_Selector
-    --  or Abort_Selector on this Selector). Has no effect if Selector is
-    --  already closed.
- 
-    procedure Check_Selector
-      (Selector     : Selector_Type;
-       R_Socket_Set : in out Socket_Set_Type;
-       W_Socket_Set : in out Socket_Set_Type;
-       Status       : out Selector_Status;
-       Timeout      : Selector_Duration := Forever);
-    --  Return when one Socket in R_Socket_Set has some data to be read or if
-    --  one Socket in W_Socket_Set is ready to transmit some data. In these
-    --  cases Status is set to Completed and sockets that are ready are set in
-    --  R_Socket_Set or W_Socket_Set. Status is set to Expired if no socket was
-    --  ready after a Timeout expiration. Status is set to Aborted if an abort
-    --  signal has been received while checking socket status.
-    --
-    --  Note that two different Socket_Set_Type objects must be passed as
-    --  R_Socket_Set and W_Socket_Set (even if they denote the same set of
-    --  Sockets), or some event may be lost. Also keep in mind that this
-    --  procedure modifies the passed socket sets to indicate which sockets
-    --  actually had events upon return. The socket set therefore has to
-    --  be reset by the caller for further calls.
-    --
-    --  Socket_Error is raised when the select(2) system call returns an error
-    --  condition, or when a read error occurs on the signalling socket used for
-    --  the implementation of Abort_Selector.
- 
-    procedure Check_Selector
-      (Selector     : Selector_Type;
-       R_Socket_Set : in out Socket_Set_Type;
-       W_Socket_Set : in out Socket_Set_Type;
-       E_Socket_Set : in out Socket_Set_Type;
-       Status       : out Selector_Status;
-       Timeout      : Selector_Duration := Forever);
-    --  This refined version of Check_Selector allows watching for exception
-    --  events (i.e. notifications of out-of-band transmission and reception).
-    --  As above, all of R_Socket_Set, W_Socket_Set and E_Socket_Set must be
-    --  different objects.
- 
-    procedure Abort_Selector (Selector : Selector_Type);
-    --  Send an abort signal to the selector. The Selector may not be the
-    --  Null_Selector.
- 
-    type Fd_Set is private;
-    --  ??? This type must not be used directly, it needs to be visible because
-    --  it is used in the visible part of GNAT.Sockets.Thin_Common. This is
-    --  really an inversion of abstraction. The private part of GNAT.Sockets
-    --  needs to have visibility on this type, but since Thin_Common is a child
-    --  of Sockets, the type can't be declared there. The correct fix would
-    --  be to move the thin sockets binding outside of GNAT.Sockets altogether,
-    --  e.g. by renaming it to GNAT.Sockets_Thin.
- 
- private
- 
-    type Socket_Type is new Integer;
-    No_Socket : constant Socket_Type := -1;
- 
-    --  A selector is either a null selector, which is always "open" and can
-    --  never be aborted, or a regular selector, which is created "closed",
-    --  becomes "open" when Create_Selector is called, and "closed" again when
-    --  Close_Selector is called.
- 
-    type Selector_Type (Is_Null : Boolean := False) is limited record
-       case Is_Null is
-          when True =>
-             null;
- 
-          when False =>
-             R_Sig_Socket : Socket_Type := No_Socket;
-             W_Sig_Socket : Socket_Type := No_Socket;
-             --  Signalling sockets used to abort a select operation
-       end case;
-    end record;
- 
-    pragma Volatile (Selector_Type);
- 
-    Null_Selector : constant Selector_Type := (Is_Null => True);
- 
-    type Fd_Set is
-      new System.Storage_Elements.Storage_Array (1 .. SOSC.SIZEOF_fd_set);
-    for Fd_Set'Alignment use Interfaces.C.long'Alignment;
-    --  Set conservative alignment so that our Fd_Sets are always adequately
-    --  aligned for the underlying data type (which is implementation defined
-    --  and may be an array of C long integers).
- 
-    type Fd_Set_Access is access all Fd_Set;
-    pragma Convention (C, Fd_Set_Access);
-    No_Fd_Set_Access : constant Fd_Set_Access := null;
- 
-    type Socket_Set_Type is record
-       Last : Socket_Type := No_Socket;
-       --  Highest socket in set. Last = No_Socket denotes an empty set (which
-       --  is the default initial value).
- 
-       Set : aliased Fd_Set;
-       --  Underlying socket set. Note that the contents of this component is
-       --  undefined if Last = No_Socket.
-    end record;
- 
-    subtype Inet_Addr_Comp_Type is Natural range 0 .. 255;
-    --  Octet for Internet address
- 
-    type Inet_Addr_VN_Type is array (Natural range <>) of Inet_Addr_Comp_Type;
- 
-    subtype Inet_Addr_V4_Type is Inet_Addr_VN_Type (1 ..  4);
-    subtype Inet_Addr_V6_Type is Inet_Addr_VN_Type (1 .. 16);
- 
-    type Inet_Addr_Type (Family : Family_Type := Family_Inet) is record
-       case Family is
-          when Family_Inet =>
-             Sin_V4 : Inet_Addr_V4_Type := (others => 0);
- 
-          when Family_Inet6 =>
-             Sin_V6 : Inet_Addr_V6_Type := (others => 0);
-       end case;
-    end record;
- 
-    Any_Port : constant Port_Type := 0;
-    No_Port  : constant Port_Type := 0;
- 
-    Any_Inet_Addr       : constant Inet_Addr_Type :=
-                            (Family_Inet, (others => 0));
-    No_Inet_Addr        : constant Inet_Addr_Type :=
-                            (Family_Inet, (others => 0));
-    Broadcast_Inet_Addr : constant Inet_Addr_Type :=
-                            (Family_Inet, (others => 255));
-    Loopback_Inet_Addr  : constant Inet_Addr_Type :=
-                            (Family_Inet, (127, 0, 0, 1));
- 
-    Unspecified_Group_Inet_Addr : constant Inet_Addr_Type :=
-                                    (Family_Inet, (224, 0, 0, 0));
-    All_Hosts_Group_Inet_Addr   : constant Inet_Addr_Type :=
-                                    (Family_Inet, (224, 0, 0, 1));
-    All_Routers_Group_Inet_Addr : constant Inet_Addr_Type :=
-                                    (Family_Inet, (224, 0, 0, 2));
- 
-    No_Sock_Addr : constant Sock_Addr_Type := (Family_Inet, No_Inet_Addr, 0);
- 
-    Max_Name_Length : constant := 64;
-    --  The constant MAXHOSTNAMELEN is usually set to 64
- 
-    subtype Name_Index is Natural range 1 .. Max_Name_Length;
- 
-    type Name_Type (Length : Name_Index := Max_Name_Length) is record
-       Name : String (1 .. Length);
-    end record;
-    --  We need fixed strings to avoid access types in host entry type
- 
-    type Name_Array is array (Natural range <>) of Name_Type;
-    type Inet_Addr_Array is array (Natural range <>) of Inet_Addr_Type;
- 
-    type Host_Entry_Type (Aliases_Length, Addresses_Length : Natural) is record
-       Official  : Name_Type;
-       Aliases   : Name_Array (1 .. Aliases_Length);
-       Addresses : Inet_Addr_Array (1 .. Addresses_Length);
-    end record;
- 
-    type Service_Entry_Type (Aliases_Length : Natural) is record
-       Official : Name_Type;
-       Aliases  : Name_Array (1 .. Aliases_Length);
-       Port     : Port_Type;
-       Protocol : Name_Type;
-    end record;
- 
-    type Request_Flag_Type is mod 2 ** 8;
-    No_Request_Flag           : constant Request_Flag_Type := 0;
-    Process_Out_Of_Band_Data  : constant Request_Flag_Type := 1;
-    Peek_At_Incoming_Data     : constant Request_Flag_Type := 2;
-    Wait_For_A_Full_Reception : constant Request_Flag_Type := 4;
-    Send_End_Of_Record        : constant Request_Flag_Type := 8;
- 
- end GNAT.Sockets;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-socthi-dummy.adb gcc-8.1.0/gcc/ada/g-socthi-dummy.adb
*** gcc-7.3.0/gcc/ada/g-socthi-dummy.adb	Mon Feb 24 16:54:41 2014
--- gcc-8.1.0/gcc/ada/g-socthi-dummy.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,32 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                    G N A T . S O C K E T S . T H I N                     --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 2001-2013, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 No_Body;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-socthi-dummy.ads gcc-8.1.0/gcc/ada/g-socthi-dummy.ads
*** gcc-7.3.0/gcc/ada/g-socthi-dummy.ads	Mon Feb 24 16:54:41 2014
--- gcc-8.1.0/gcc/ada/g-socthi-dummy.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,37 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                    G N A T . S O C K E T S . T H I N                     --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 2001-2013, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 is a placeholder for the sockets binding for platforms where
- --  it is not implemented.
- 
- package GNAT.Sockets.Thin is
-    pragma Unimplemented_Unit;
- end GNAT.Sockets.Thin;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-socthi-mingw.adb gcc-8.1.0/gcc/ada/g-socthi-mingw.adb
*** gcc-7.3.0/gcc/ada/g-socthi-mingw.adb	Fri Jan 13 10:19:19 2017
--- gcc-8.1.0/gcc/ada/g-socthi-mingw.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,631 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                    G N A T . S O C K E T S . T H I N                     --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 2001-2016, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 a target dependent thin interface to the sockets
- --  layer for use by the GNAT.Sockets package (g-socket.ads). This package
- --  should not be directly with'ed by an applications program.
- 
- --  This version is for NT
- 
- with Ada.Unchecked_Conversion;
- with Interfaces.C.Strings;    use Interfaces.C.Strings;
- with System;                  use System;
- with System.Storage_Elements; use System.Storage_Elements;
- 
- package body GNAT.Sockets.Thin is
- 
-    use type C.unsigned;
- 
-    WSAData_Dummy : array (1 .. 512) of C.int;
- 
-    WS_Version : constant := 16#0202#;
-    --  Winsock 2.2
- 
-    Initialized : Boolean := False;
- 
-    function Standard_Connect
-      (S       : C.int;
-       Name    : System.Address;
-       Namelen : C.int) return C.int;
-    pragma Import (Stdcall, Standard_Connect, "connect");
- 
-    function Standard_Select
-      (Nfds      : C.int;
-       Readfds   : access Fd_Set;
-       Writefds  : access Fd_Set;
-       Exceptfds : access Fd_Set;
-       Timeout   : Timeval_Access) return C.int;
-    pragma Import (Stdcall, Standard_Select, "select");
- 
-    type Error_Type is
-      (N_EINTR,
-       N_EBADF,
-       N_EACCES,
-       N_EFAULT,
-       N_EINVAL,
-       N_EMFILE,
-       N_EWOULDBLOCK,
-       N_EINPROGRESS,
-       N_EALREADY,
-       N_ENOTSOCK,
-       N_EDESTADDRREQ,
-       N_EMSGSIZE,
-       N_EPROTOTYPE,
-       N_ENOPROTOOPT,
-       N_EPROTONOSUPPORT,
-       N_ESOCKTNOSUPPORT,
-       N_EOPNOTSUPP,
-       N_EPFNOSUPPORT,
-       N_EAFNOSUPPORT,
-       N_EADDRINUSE,
-       N_EADDRNOTAVAIL,
-       N_ENETDOWN,
-       N_ENETUNREACH,
-       N_ENETRESET,
-       N_ECONNABORTED,
-       N_ECONNRESET,
-       N_ENOBUFS,
-       N_EISCONN,
-       N_ENOTCONN,
-       N_ESHUTDOWN,
-       N_ETOOMANYREFS,
-       N_ETIMEDOUT,
-       N_ECONNREFUSED,
-       N_ELOOP,
-       N_ENAMETOOLONG,
-       N_EHOSTDOWN,
-       N_EHOSTUNREACH,
-       N_WSASYSNOTREADY,
-       N_WSAVERNOTSUPPORTED,
-       N_WSANOTINITIALISED,
-       N_WSAEDISCON,
-       N_HOST_NOT_FOUND,
-       N_TRY_AGAIN,
-       N_NO_RECOVERY,
-       N_NO_DATA,
-       N_OTHERS);
- 
-    Error_Messages : constant array (Error_Type) of chars_ptr :=
-      (N_EINTR =>
-         New_String ("Interrupted system call"),
-       N_EBADF =>
-         New_String ("Bad file number"),
-       N_EACCES =>
-         New_String ("Permission denied"),
-       N_EFAULT =>
-         New_String ("Bad address"),
-       N_EINVAL =>
-         New_String ("Invalid argument"),
-       N_EMFILE =>
-         New_String ("Too many open files"),
-       N_EWOULDBLOCK =>
-         New_String ("Operation would block"),
-       N_EINPROGRESS =>
-         New_String ("Operation now in progress. This error is "
-                     & "returned if any Windows Sockets API "
-                     & "function is called while a blocking "
-                     & "function is in progress"),
-       N_EALREADY =>
-         New_String ("Operation already in progress"),
-       N_ENOTSOCK =>
-         New_String ("Socket operation on nonsocket"),
-       N_EDESTADDRREQ =>
-         New_String ("Destination address required"),
-       N_EMSGSIZE =>
-         New_String ("Message too long"),
-       N_EPROTOTYPE =>
-         New_String ("Protocol wrong type for socket"),
-       N_ENOPROTOOPT =>
-         New_String ("Protocol not available"),
-       N_EPROTONOSUPPORT =>
-         New_String ("Protocol not supported"),
-       N_ESOCKTNOSUPPORT =>
-         New_String ("Socket type not supported"),
-       N_EOPNOTSUPP =>
-         New_String ("Operation not supported on socket"),
-       N_EPFNOSUPPORT =>
-         New_String ("Protocol family not supported"),
-       N_EAFNOSUPPORT =>
-         New_String ("Address family not supported by protocol family"),
-       N_EADDRINUSE =>
-         New_String ("Address already in use"),
-       N_EADDRNOTAVAIL =>
-         New_String ("Cannot assign requested address"),
-       N_ENETDOWN =>
-         New_String ("Network is down. This error may be "
-                     & "reported at any time if the Windows "
-                     & "Sockets implementation detects an "
-                     & "underlying failure"),
-       N_ENETUNREACH =>
-         New_String ("Network is unreachable"),
-       N_ENETRESET =>
-         New_String ("Network dropped connection on reset"),
-       N_ECONNABORTED =>
-         New_String ("Software caused connection abort"),
-       N_ECONNRESET =>
-         New_String ("Connection reset by peer"),
-       N_ENOBUFS =>
-         New_String ("No buffer space available"),
-       N_EISCONN  =>
-         New_String ("Socket is already connected"),
-       N_ENOTCONN =>
-         New_String ("Socket is not connected"),
-       N_ESHUTDOWN =>
-         New_String ("Cannot send after socket shutdown"),
-       N_ETOOMANYREFS =>
-         New_String ("Too many references: cannot splice"),
-       N_ETIMEDOUT =>
-         New_String ("Connection timed out"),
-       N_ECONNREFUSED =>
-         New_String ("Connection refused"),
-       N_ELOOP =>
-         New_String ("Too many levels of symbolic links"),
-       N_ENAMETOOLONG =>
-         New_String ("File name too long"),
-       N_EHOSTDOWN =>
-         New_String ("Host is down"),
-       N_EHOSTUNREACH =>
-         New_String ("No route to host"),
-       N_WSASYSNOTREADY =>
-         New_String ("Returned by WSAStartup(), indicating that "
-                     & "the network subsystem is unusable"),
-       N_WSAVERNOTSUPPORTED =>
-         New_String ("Returned by WSAStartup(), indicating that "
-                     & "the Windows Sockets DLL cannot support "
-                     & "this application"),
-       N_WSANOTINITIALISED =>
-         New_String ("Winsock not initialized. This message is "
-                     & "returned by any function except WSAStartup(), "
-                     & "indicating that a successful WSAStartup() has "
-                     & "not yet been performed"),
-       N_WSAEDISCON =>
-         New_String ("Disconnected"),
-       N_HOST_NOT_FOUND =>
-         New_String ("Host not found. This message indicates "
-                     & "that the key (name, address, and so on) was not found"),
-       N_TRY_AGAIN =>
-         New_String ("Nonauthoritative host not found. This error may "
-                     & "suggest that the name service itself is not "
-                     & "functioning"),
-       N_NO_RECOVERY =>
-         New_String ("Nonrecoverable error. This error may suggest that the "
-                     & "name service itself is not functioning"),
-       N_NO_DATA =>
-         New_String ("Valid name, no data record of requested type. "
-                     & "This error indicates that the key (name, address, "
-                     & "and so on) was not found."),
-       N_OTHERS =>
-         New_String ("Unknown system error"));
- 
-    ---------------
-    -- C_Connect --
-    ---------------
- 
-    function C_Connect
-      (S       : C.int;
-       Name    : System.Address;
-       Namelen : C.int) return C.int
-    is
-       Res : C.int;
- 
-    begin
-       Res := Standard_Connect (S, Name, Namelen);
- 
-       if Res = -1 then
-          if Socket_Errno = SOSC.EWOULDBLOCK then
-             Set_Socket_Errno (SOSC.EINPROGRESS);
-          end if;
-       end if;
- 
-       return Res;
-    end C_Connect;
- 
-    ------------------
-    -- Socket_Ioctl --
-    ------------------
- 
-    function Socket_Ioctl
-      (S   : C.int;
-       Req : SOSC.IOCTL_Req_T;
-       Arg : access C.int) return C.int
-    is
-    begin
-       return C_Ioctl (S, Req, Arg);
-    end Socket_Ioctl;
- 
-    ---------------
-    -- C_Recvmsg --
-    ---------------
- 
-    function C_Recvmsg
-      (S     : C.int;
-       Msg   : System.Address;
-       Flags : C.int) return System.CRTL.ssize_t
-    is
-       use type C.size_t;
- 
-       Fill  : constant Boolean :=
-                 SOSC.MSG_WAITALL /= -1
-                   and then (C.unsigned (Flags) and SOSC.MSG_WAITALL) /= 0;
-       --  Is the MSG_WAITALL flag set? If so we need to fully fill all vectors
- 
-       Res   : C.int;
-       Count : C.int := 0;
- 
-       MH : Msghdr;
-       for MH'Address use Msg;
- 
-       Iovec : array (0 .. MH.Msg_Iovlen - 1) of Vector_Element;
-       for Iovec'Address use MH.Msg_Iov;
-       pragma Import (Ada, Iovec);
- 
-       Iov_Index     : Integer;
-       Current_Iovec : Vector_Element;
- 
-       function To_Access is new Ada.Unchecked_Conversion
-                                   (System.Address, Stream_Element_Reference);
-       pragma Warnings (Off, Stream_Element_Reference);
- 
-       Req : Request_Type (Name => N_Bytes_To_Read);
- 
-    begin
-       --  Windows does not provide an implementation of recvmsg(). The spec for
-       --  WSARecvMsg() is incompatible with the data types we define, and is
-       --  available starting with Windows Vista and Server 2008 only. So,
-       --  we use C_Recv instead.
- 
-       --  Check how much data are available
- 
-       Control_Socket (Socket_Type (S), Req);
- 
-       --  Fill the vectors
- 
-       Iov_Index := -1;
-       Current_Iovec := (Base => null, Length => 0);
- 
-       loop
-          if Current_Iovec.Length = 0 then
-             Iov_Index := Iov_Index + 1;
-             exit when Iov_Index > Integer (Iovec'Last);
-             Current_Iovec := Iovec (SOSC.Msg_Iovlen_T (Iov_Index));
-          end if;
- 
-          Res :=
-            C_Recv
-             (S,
-              Current_Iovec.Base.all'Address,
-              C.int (Current_Iovec.Length),
-              Flags);
- 
-          if Res < 0 then
-             return System.CRTL.ssize_t (Res);
- 
-          elsif Res = 0 and then not Fill then
-             exit;
- 
-          else
-             pragma Assert (Interfaces.C.size_t (Res) <= Current_Iovec.Length);
- 
-             Count := Count + Res;
-             Current_Iovec.Length :=
-               Current_Iovec.Length - Interfaces.C.size_t (Res);
-             Current_Iovec.Base :=
-               To_Access (Current_Iovec.Base.all'Address
-                 + Storage_Offset (Res));
- 
-             --  If all the data that was initially available read, do not
-             --  attempt to receive more, since this might block, or merge data
-             --  from successive datagrams for a datagram-oriented socket. We
-             --  still try to receive more if we need to fill all vectors
-             --  (MSG_WAITALL flag is set).
- 
-             exit when Natural (Count) >= Req.Size
-               and then
- 
-                 --  Either we are not in fill mode
- 
-                 (not Fill
- 
-                   --  Or else last vector filled
- 
-                   or else (Interfaces.C.size_t (Iov_Index) = Iovec'Last
-                             and then Current_Iovec.Length = 0));
-          end if;
-       end loop;
- 
-       return System.CRTL.ssize_t (Count);
-    end C_Recvmsg;
- 
-    --------------
-    -- C_Select --
-    --------------
- 
-    function C_Select
-      (Nfds      : C.int;
-       Readfds   : access Fd_Set;
-       Writefds  : access Fd_Set;
-       Exceptfds : access Fd_Set;
-       Timeout   : Timeval_Access) return C.int
-    is
-       pragma Warnings (Off, Exceptfds);
- 
-       Original_WFS : aliased constant Fd_Set := Writefds.all;
- 
-       Res  : C.int;
-       S    : aliased C.int;
-       Last : aliased C.int;
- 
-    begin
-       --  Asynchronous connection failures are notified in the exception fd
-       --  set instead of the write fd set. To ensure POSIX compatibility, copy
-       --  write fd set into exception fd set. Once select() returns, check any
-       --  socket present in the exception fd set and peek at incoming
-       --  out-of-band data. If the test is not successful, and the socket is
-       --  present in the initial write fd set, then move the socket from the
-       --  exception fd set to the write fd set.
- 
-       if Writefds /= No_Fd_Set_Access then
- 
-          --  Add any socket present in write fd set into exception fd set
- 
-          declare
-             WFS : aliased Fd_Set := Writefds.all;
-          begin
-             Last := Nfds - 1;
-             loop
-                Get_Socket_From_Set
-                  (WFS'Access, S'Unchecked_Access, Last'Unchecked_Access);
-                exit when S = -1;
-                Insert_Socket_In_Set (Exceptfds, S);
-             end loop;
-          end;
-       end if;
- 
-       Res := Standard_Select (Nfds, Readfds, Writefds, Exceptfds, Timeout);
- 
-       if Exceptfds /= No_Fd_Set_Access then
-          declare
-             EFSC    : aliased Fd_Set := Exceptfds.all;
-             Flag    : constant C.int := SOSC.MSG_PEEK + SOSC.MSG_OOB;
-             Buffer  : Character;
-             Length  : C.int;
-             Fromlen : aliased C.int;
- 
-          begin
-             Last := Nfds - 1;
-             loop
-                Get_Socket_From_Set
-                  (EFSC'Access, S'Unchecked_Access, Last'Unchecked_Access);
- 
-                --  No more sockets in EFSC
- 
-                exit when S = -1;
- 
-                --  Check out-of-band data
- 
-                Length :=
-                  C_Recvfrom
-                   (S, Buffer'Address, 1, Flag,
-                    From    => System.Null_Address,
-                    Fromlen => Fromlen'Unchecked_Access);
-                --  Is Fromlen necessary if From is Null_Address???
- 
-                --  If the signal is not an out-of-band data, then it
-                --  is a connection failure notification.
- 
-                if Length = -1 then
-                   Remove_Socket_From_Set (Exceptfds, S);
- 
-                   --  If S is present in the initial write fd set, move it from
-                   --  exception fd set back to write fd set. Otherwise, ignore
-                   --  this event since the user is not watching for it.
- 
-                   if Writefds /= No_Fd_Set_Access
-                     and then (Is_Socket_In_Set (Original_WFS'Access, S) /= 0)
-                   then
-                      Insert_Socket_In_Set (Writefds, S);
-                   end if;
-                end if;
-             end loop;
-          end;
-       end if;
-       return Res;
-    end C_Select;
- 
-    ---------------
-    -- C_Sendmsg --
-    ---------------
- 
-    function C_Sendmsg
-      (S     : C.int;
-       Msg   : System.Address;
-       Flags : C.int) return System.CRTL.ssize_t
-    is
-       use type C.size_t;
- 
-       Res   : C.int;
-       Count : C.int := 0;
- 
-       MH : Msghdr;
-       for MH'Address use Msg;
- 
-       Iovec : array (0 .. MH.Msg_Iovlen - 1) of Vector_Element;
-       for Iovec'Address use MH.Msg_Iov;
-       pragma Import (Ada, Iovec);
- 
-    begin
-       --  Windows does not provide an implementation of sendmsg(). The spec for
-       --  WSASendMsg() is incompatible with the data types we define, and is
-       --  available starting with Windows Vista and Server 2008 only. So
-       --  use C_Sendto instead.
- 
-       for J in Iovec'Range loop
-          Res :=
-            C_Sendto
-             (S,
-              Iovec (J).Base.all'Address,
-              C.int (Iovec (J).Length),
-              Flags => Flags,
-              To    => MH.Msg_Name,
-              Tolen => C.int (MH.Msg_Namelen));
- 
-          if Res < 0 then
-             return System.CRTL.ssize_t (Res);
-          else
-             Count := Count + Res;
-          end if;
- 
-          --  Exit now if the buffer is not fully transmitted
- 
-          exit when Interfaces.C.size_t (Res) < Iovec (J).Length;
-       end loop;
- 
-       return System.CRTL.ssize_t (Count);
-    end C_Sendmsg;
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    procedure Finalize is
-    begin
-       if Initialized then
-          WSACleanup;
-          Initialized := False;
-       end if;
-    end Finalize;
- 
-    -------------------------
-    -- Host_Error_Messages --
-    -------------------------
- 
-    package body Host_Error_Messages is
- 
-       --  On Windows, socket and host errors share the same code space, and
-       --  error messages are provided by Socket_Error_Message, so the default
-       --  separate body for Host_Error_Messages is not used in this case.
- 
-       function Host_Error_Message (H_Errno : Integer) return String
-          renames Socket_Error_Message;
- 
-    end Host_Error_Messages;
- 
-    ----------------
-    -- Initialize --
-    ----------------
- 
-    procedure Initialize is
-       Return_Value : Interfaces.C.int;
-    begin
-       if not Initialized then
-          Return_Value := WSAStartup (WS_Version, WSAData_Dummy'Address);
-          pragma Assert (Return_Value = 0);
-          Initialized := True;
-       end if;
-    end Initialize;
- 
-    --------------------
-    -- Signalling_Fds --
-    --------------------
- 
-    package body Signalling_Fds is separate;
- 
-    --------------------------
-    -- Socket_Error_Message --
-    --------------------------
- 
-    function Socket_Error_Message (Errno : Integer) return String is
-       use GNAT.Sockets.SOSC;
- 
-       Errm : C.Strings.chars_ptr;
- 
-    begin
-       case Errno is
-          when EINTR              => Errm := Error_Messages (N_EINTR);
-          when EBADF              => Errm := Error_Messages (N_EBADF);
-          when EACCES             => Errm := Error_Messages (N_EACCES);
-          when EFAULT             => Errm := Error_Messages (N_EFAULT);
-          when EINVAL             => Errm := Error_Messages (N_EINVAL);
-          when EMFILE             => Errm := Error_Messages (N_EMFILE);
-          when EWOULDBLOCK        => Errm := Error_Messages (N_EWOULDBLOCK);
-          when EINPROGRESS        => Errm := Error_Messages (N_EINPROGRESS);
-          when EALREADY           => Errm := Error_Messages (N_EALREADY);
-          when ENOTSOCK           => Errm := Error_Messages (N_ENOTSOCK);
-          when EDESTADDRREQ       => Errm := Error_Messages (N_EDESTADDRREQ);
-          when EMSGSIZE           => Errm := Error_Messages (N_EMSGSIZE);
-          when EPROTOTYPE         => Errm := Error_Messages (N_EPROTOTYPE);
-          when ENOPROTOOPT        => Errm := Error_Messages (N_ENOPROTOOPT);
-          when EPROTONOSUPPORT    => Errm := Error_Messages (N_EPROTONOSUPPORT);
-          when ESOCKTNOSUPPORT    => Errm := Error_Messages (N_ESOCKTNOSUPPORT);
-          when EOPNOTSUPP         => Errm := Error_Messages (N_EOPNOTSUPP);
-          when EPFNOSUPPORT       => Errm := Error_Messages (N_EPFNOSUPPORT);
-          when EAFNOSUPPORT       => Errm := Error_Messages (N_EAFNOSUPPORT);
-          when EADDRINUSE         => Errm := Error_Messages (N_EADDRINUSE);
-          when EADDRNOTAVAIL      => Errm := Error_Messages (N_EADDRNOTAVAIL);
-          when ENETDOWN           => Errm := Error_Messages (N_ENETDOWN);
-          when ENETUNREACH        => Errm := Error_Messages (N_ENETUNREACH);
-          when ENETRESET          => Errm := Error_Messages (N_ENETRESET);
-          when ECONNABORTED       => Errm := Error_Messages (N_ECONNABORTED);
-          when ECONNRESET         => Errm := Error_Messages (N_ECONNRESET);
-          when ENOBUFS            => Errm := Error_Messages (N_ENOBUFS);
-          when EISCONN            => Errm := Error_Messages (N_EISCONN);
-          when ENOTCONN           => Errm := Error_Messages (N_ENOTCONN);
-          when ESHUTDOWN          => Errm := Error_Messages (N_ESHUTDOWN);
-          when ETOOMANYREFS       => Errm := Error_Messages (N_ETOOMANYREFS);
-          when ETIMEDOUT          => Errm := Error_Messages (N_ETIMEDOUT);
-          when ECONNREFUSED       => Errm := Error_Messages (N_ECONNREFUSED);
-          when ELOOP              => Errm := Error_Messages (N_ELOOP);
-          when ENAMETOOLONG       => Errm := Error_Messages (N_ENAMETOOLONG);
-          when EHOSTDOWN          => Errm := Error_Messages (N_EHOSTDOWN);
-          when EHOSTUNREACH       => Errm := Error_Messages (N_EHOSTUNREACH);
- 
-          --  Windows-specific error codes
- 
-          when WSASYSNOTREADY     => Errm := Error_Messages (N_WSASYSNOTREADY);
-          when WSAVERNOTSUPPORTED =>
-             Errm := Error_Messages (N_WSAVERNOTSUPPORTED);
-          when WSANOTINITIALISED  =>
-             Errm := Error_Messages (N_WSANOTINITIALISED);
-          when WSAEDISCON         => Errm := Error_Messages (N_WSAEDISCON);
- 
-          --  h_errno values
- 
-          when HOST_NOT_FOUND     => Errm := Error_Messages (N_HOST_NOT_FOUND);
-          when TRY_AGAIN          => Errm := Error_Messages (N_TRY_AGAIN);
-          when NO_RECOVERY        => Errm := Error_Messages (N_NO_RECOVERY);
-          when NO_DATA            => Errm := Error_Messages (N_NO_DATA);
-          when others             => Errm := Error_Messages (N_OTHERS);
-       end case;
- 
-       return Value (Errm);
-    end Socket_Error_Message;
- 
- end GNAT.Sockets.Thin;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-socthi-mingw.ads gcc-8.1.0/gcc/ada/g-socthi-mingw.ads
*** gcc-7.3.0/gcc/ada/g-socthi-mingw.ads	Mon Feb 24 16:59:24 2014
--- gcc-8.1.0/gcc/ada/g-socthi-mingw.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,242 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                    G N A T . S O C K E T S . T H I N                     --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 2001-2013, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 a target dependent thin interface to the sockets
- --  layer for use by the GNAT.Sockets package (g-socket.ads). This package
- --  should not be directly with'ed by an applications program.
- 
- --  This version is for NT
- 
- with Interfaces.C;
- 
- with GNAT.Sockets.Thin_Common;
- 
- with System;
- with System.CRTL;
- 
- package GNAT.Sockets.Thin is
- 
-    use Thin_Common;
- 
-    package C renames Interfaces.C;
- 
-    use type System.CRTL.ssize_t;
- 
-    function Socket_Errno return Integer;
-    --  Returns last socket error number
- 
-    procedure Set_Socket_Errno (Errno : Integer);
-    --  Set last socket error number
- 
-    function Socket_Error_Message (Errno : Integer) return String;
-    --  Returns the error message string for the error number Errno. If Errno is
-    --  not known, returns "Unknown system error".
- 
-    function Host_Errno return Integer;
-    pragma Import (C, Host_Errno, "__gnat_get_h_errno");
-    --  Returns last host error number
- 
-    package Host_Error_Messages is
- 
-       function Host_Error_Message (H_Errno : Integer) return String;
-       --  Returns the error message string for the host error number H_Errno.
-       --  If H_Errno is not known, returns "Unknown system error".
- 
-    end Host_Error_Messages;
- 
-    --------------------------------
-    -- Standard library functions --
-    --------------------------------
- 
-    function C_Accept
-      (S       : C.int;
-       Addr    : System.Address;
-       Addrlen : not null access C.int) return C.int;
- 
-    function C_Bind
-      (S       : C.int;
-       Name    : System.Address;
-       Namelen : C.int) return C.int;
- 
-    function C_Close
-      (Fd : C.int) return C.int;
- 
-    function C_Connect
-      (S       : C.int;
-       Name    : System.Address;
-       Namelen : C.int) return C.int;
- 
-    function C_Gethostname
-      (Name    : System.Address;
-       Namelen : C.int) return C.int;
- 
-    function C_Getpeername
-      (S       : C.int;
-       Name    : System.Address;
-       Namelen : not null access C.int) return C.int;
- 
-    function C_Getsockname
-      (S       : C.int;
-       Name    : System.Address;
-       Namelen : not null access C.int) return C.int;
- 
-    function C_Getsockopt
-      (S       : C.int;
-       Level   : C.int;
-       Optname : C.int;
-       Optval  : System.Address;
-       Optlen  : not null access C.int) return C.int;
- 
-    function Socket_Ioctl
-      (S   : C.int;
-       Req : SOSC.IOCTL_Req_T;
-       Arg : access C.int) return C.int;
- 
-    function C_Listen
-      (S       : C.int;
-       Backlog : C.int) return C.int;
- 
-    function C_Recv
-      (S     : C.int;
-       Msg   : System.Address;
-       Len   : C.int;
-       Flags : C.int) return C.int;
- 
-    function C_Recvfrom
-      (S       : C.int;
-       Msg     : System.Address;
-       Len     : C.int;
-       Flags   : C.int;
-       From    : System.Address;
-       Fromlen : not null access C.int) return C.int;
- 
-    function C_Recvmsg
-      (S     : C.int;
-       Msg   : System.Address;
-       Flags : C.int) return System.CRTL.ssize_t;
- 
-    function C_Select
-      (Nfds      : C.int;
-       Readfds   : access Fd_Set;
-       Writefds  : access Fd_Set;
-       Exceptfds : access Fd_Set;
-       Timeout   : Timeval_Access) return C.int;
- 
-    function C_Sendmsg
-      (S     : C.int;
-       Msg   : System.Address;
-       Flags : C.int) return System.CRTL.ssize_t;
- 
-    function C_Sendto
-      (S     : C.int;
-       Msg   : System.Address;
-       Len   : C.int;
-       Flags : C.int;
-       To    : System.Address;
-       Tolen : C.int) return C.int;
- 
-    function C_Setsockopt
-      (S       : C.int;
-       Level   : C.int;
-       Optname : C.int;
-       Optval  : System.Address;
-       Optlen  : C.int) return C.int;
- 
-    function C_Shutdown
-      (S   : C.int;
-       How : C.int) return C.int;
- 
-    function C_Socket
-      (Domain   : C.int;
-       Typ      : C.int;
-       Protocol : C.int) return C.int;
- 
-    function C_System
-      (Command : System.Address) return C.int;
- 
-    function WSAStartup
-      (WS_Version     : Interfaces.C.unsigned_short;
-       WSADataAddress : System.Address) return Interfaces.C.int;
- 
-    -------------------------------------------------------
-    -- Signalling file descriptors for selector abortion --
-    -------------------------------------------------------
- 
-    package Signalling_Fds is
- 
-       function Create (Fds : not null access Fd_Pair) return C.int;
-       pragma Convention (C, Create);
-       --  Create a pair of connected descriptors suitable for use with C_Select
-       --  (used for signalling in Selector objects).
- 
-       function Read (Rsig : C.int) return C.int;
-       pragma Convention (C, Read);
-       --  Read one byte of data from rsig, the read end of a pair of signalling
-       --  fds created by Create_Signalling_Fds.
- 
-       function Write (Wsig : C.int) return C.int;
-       pragma Convention (C, Write);
-       --  Write one byte of data to wsig, the write end of a pair of signalling
-       --  fds created by Create_Signalling_Fds.
- 
-       procedure Close (Sig : C.int);
-       pragma Convention (C, Close);
-       --  Close one end of a pair of signalling fds (ignoring any error)
- 
-    end Signalling_Fds;
- 
-    procedure WSACleanup;
- 
-    procedure Initialize;
-    procedure Finalize;
- 
- private
-    pragma Import (Stdcall, C_Accept, "accept");
-    pragma Import (Stdcall, C_Bind, "bind");
-    pragma Import (Stdcall, C_Close, "closesocket");
-    pragma Import (Stdcall, C_Gethostname, "gethostname");
-    pragma Import (Stdcall, C_Getpeername, "getpeername");
-    pragma Import (Stdcall, C_Getsockname, "getsockname");
-    pragma Import (Stdcall, C_Getsockopt, "getsockopt");
-    pragma Import (Stdcall, C_Listen, "listen");
-    pragma Import (Stdcall, C_Recv, "recv");
-    pragma Import (Stdcall, C_Recvfrom, "recvfrom");
-    pragma Import (Stdcall, C_Sendto, "sendto");
-    pragma Import (Stdcall, C_Setsockopt, "setsockopt");
-    pragma Import (Stdcall, C_Shutdown, "shutdown");
-    pragma Import (Stdcall, C_Socket, "socket");
-    pragma Import (C, C_System, "_system");
-    pragma Import (Stdcall, Socket_Errno, "WSAGetLastError");
-    pragma Import (Stdcall, Set_Socket_Errno, "WSASetLastError");
-    pragma Import (Stdcall, WSAStartup, "WSAStartup");
-    pragma Import (Stdcall, WSACleanup, "WSACleanup");
- 
- end GNAT.Sockets.Thin;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-socthi-vxworks.adb gcc-8.1.0/gcc/ada/g-socthi-vxworks.adb
*** gcc-7.3.0/gcc/ada/g-socthi-vxworks.adb	Mon Feb 24 16:59:24 2014
--- gcc-8.1.0/gcc/ada/g-socthi-vxworks.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,487 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                    G N A T . S O C K E T S . T H I N                     --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 2002-2013, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 a target dependent thin interface to the sockets
- --  layer for use by the GNAT.Sockets package (g-socket.ads). This package
- --  should not be directly with'ed by an applications program.
- 
- --  This version is for VxWorks
- 
- with GNAT.OS_Lib;  use GNAT.OS_Lib;
- with GNAT.Task_Lock;
- 
- with Interfaces.C; use Interfaces.C;
- 
- package body GNAT.Sockets.Thin is
- 
-    Non_Blocking_Sockets : aliased Fd_Set;
-    --  When this package is initialized with Process_Blocking_IO set
-    --  to True, sockets are set in non-blocking mode to avoid blocking
-    --  the whole process when a thread wants to perform a blocking IO
-    --  operation. But the user can also set a socket in non-blocking
-    --  mode by purpose. In order to make a difference between these
-    --  two situations, we track the origin of non-blocking mode in
-    --  Non_Blocking_Sockets. If S is in Non_Blocking_Sockets, it has
-    --  been set in non-blocking mode by the user.
- 
-    Quantum : constant Duration := 0.2;
-    --  When SOSC.Thread_Blocking_IO is False, we set sockets in
-    --  non-blocking mode and we spend a period of time Quantum between
-    --  two attempts on a blocking operation.
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    --  All these require comments ???
- 
-    function Syscall_Accept
-      (S       : C.int;
-       Addr    : System.Address;
-       Addrlen : not null access C.int) return C.int;
-    pragma Import (C, Syscall_Accept, "accept");
- 
-    function Syscall_Connect
-      (S       : C.int;
-       Name    : System.Address;
-       Namelen : C.int) return C.int;
-    pragma Import (C, Syscall_Connect, "connect");
- 
-    function Syscall_Recv
-      (S     : C.int;
-       Msg   : System.Address;
-       Len   : C.int;
-       Flags : C.int) return C.int;
-    pragma Import (C, Syscall_Recv, "recv");
- 
-    function Syscall_Recvfrom
-      (S       : C.int;
-       Msg     : System.Address;
-       Len     : C.int;
-       Flags   : C.int;
-       From    : System.Address;
-       Fromlen : not null access C.int) return C.int;
-    pragma Import (C, Syscall_Recvfrom, "recvfrom");
- 
-    function Syscall_Recvmsg
-      (S     : C.int;
-       Msg   : System.Address;
-       Flags : C.int) return C.int;
-    pragma Import (C, Syscall_Recvmsg, "recvmsg");
- 
-    function Syscall_Sendmsg
-      (S     : C.int;
-       Msg   : System.Address;
-       Flags : C.int) return C.int;
-    pragma Import (C, Syscall_Sendmsg, "sendmsg");
- 
-    function Syscall_Send
-      (S     : C.int;
-       Msg   : System.Address;
-       Len   : C.int;
-       Flags : C.int) return C.int;
-    pragma Import (C, Syscall_Send, "send");
- 
-    function Syscall_Sendto
-      (S     : C.int;
-       Msg   : System.Address;
-       Len   : C.int;
-       Flags : C.int;
-       To    : System.Address;
-       Tolen : C.int) return C.int;
-    pragma Import (C, Syscall_Sendto, "sendto");
- 
-    function Syscall_Socket
-      (Domain   : C.int;
-       Typ      : C.int;
-       Protocol : C.int) return C.int;
-    pragma Import (C, Syscall_Socket, "socket");
- 
-    function Non_Blocking_Socket (S : C.int) return Boolean;
-    procedure Set_Non_Blocking_Socket (S : C.int; V : Boolean);
- 
-    --------------
-    -- C_Accept --
-    --------------
- 
-    function C_Accept
-      (S       : C.int;
-       Addr    : System.Address;
-       Addrlen : not null access C.int) return C.int
-    is
-       R   : C.int;
-       Val : aliased C.int := 1;
- 
-       Res : C.int;
-       pragma Unreferenced (Res);
- 
-    begin
-       loop
-          R := Syscall_Accept (S, Addr, Addrlen);
-          exit when SOSC.Thread_Blocking_IO
-            or else R /= Failure
-            or else Non_Blocking_Socket (S)
-            or else Errno /= SOSC.EWOULDBLOCK;
-          delay Quantum;
-       end loop;
- 
-       if not SOSC.Thread_Blocking_IO
-         and then R /= Failure
-       then
-          --  A socket inherits the properties of its server especially
-          --  the FIONBIO flag. Do not use Socket_Ioctl as this subprogram
-          --  tracks sockets set in non-blocking mode by user.
- 
-          Set_Non_Blocking_Socket (R, Non_Blocking_Socket (S));
-          Res := C_Ioctl (R, SOSC.FIONBIO, Val'Access);
-          --  Is it OK to ignore result ???
-       end if;
- 
-       return R;
-    end C_Accept;
- 
-    ---------------
-    -- C_Connect --
-    ---------------
- 
-    function C_Connect
-      (S       : C.int;
-       Name    : System.Address;
-       Namelen : C.int) return C.int
-    is
-       Res : C.int;
- 
-    begin
-       Res := Syscall_Connect (S, Name, Namelen);
- 
-       if SOSC.Thread_Blocking_IO
-         or else Res /= Failure
-         or else Non_Blocking_Socket (S)
-         or else Errno /= SOSC.EINPROGRESS
-       then
-          return Res;
-       end if;
- 
-       declare
-          WSet : aliased Fd_Set;
-          Now  : aliased Timeval;
-       begin
-          Reset_Socket_Set (WSet'Access);
-          loop
-             Insert_Socket_In_Set (WSet'Access, S);
-             Now := Immediat;
-             Res := C_Select
-               (S + 1,
-                No_Fd_Set_Access,
-                WSet'Access,
-                No_Fd_Set_Access,
-                Now'Unchecked_Access);
- 
-             exit when Res > 0;
- 
-             if Res = Failure then
-                return Res;
-             end if;
- 
-             delay Quantum;
-          end loop;
-       end;
- 
-       Res := Syscall_Connect (S, Name, Namelen);
- 
-       if Res = Failure
-         and then Errno = SOSC.EISCONN
-       then
-          return Thin_Common.Success;
-       else
-          return Res;
-       end if;
-    end C_Connect;
- 
-    ------------------
-    -- Socket_Ioctl --
-    ------------------
- 
-    function Socket_Ioctl
-      (S   : C.int;
-       Req : SOSC.IOCTL_Req_T;
-       Arg : access C.int) return C.int
-    is
-    begin
-       if not SOSC.Thread_Blocking_IO and then Req = SOSC.FIONBIO then
-          if Arg.all /= 0 then
-             Set_Non_Blocking_Socket (S, True);
-          end if;
-       end if;
- 
-       return C_Ioctl (S, Req, Arg);
-    end Socket_Ioctl;
- 
-    ------------
-    -- C_Recv --
-    ------------
- 
-    function C_Recv
-      (S     : C.int;
-       Msg   : System.Address;
-       Len   : C.int;
-       Flags : C.int) return C.int
-    is
-       Res : C.int;
- 
-    begin
-       loop
-          Res := Syscall_Recv (S, Msg, Len, Flags);
-          exit when SOSC.Thread_Blocking_IO
-            or else Res /= Failure
-            or else Non_Blocking_Socket (S)
-            or else Errno /= SOSC.EWOULDBLOCK;
-          delay Quantum;
-       end loop;
- 
-       return Res;
-    end C_Recv;
- 
-    ----------------
-    -- C_Recvfrom --
-    ----------------
- 
-    function C_Recvfrom
-      (S       : C.int;
-       Msg     : System.Address;
-       Len     : C.int;
-       Flags   : C.int;
-       From    : System.Address;
-       Fromlen : not null access C.int) return C.int
-    is
-       Res : C.int;
- 
-    begin
-       loop
-          Res := Syscall_Recvfrom (S, Msg, Len, Flags, From, Fromlen);
-          exit when SOSC.Thread_Blocking_IO
-            or else Res /= Failure
-            or else Non_Blocking_Socket (S)
-            or else Errno /= SOSC.EWOULDBLOCK;
-          delay Quantum;
-       end loop;
- 
-       return Res;
-    end C_Recvfrom;
- 
-    ---------------
-    -- C_Recvmsg --
-    ---------------
- 
-    function C_Recvmsg
-      (S     : C.int;
-       Msg   : System.Address;
-       Flags : C.int) return System.CRTL.ssize_t
-    is
-       Res : C.int;
- 
-    begin
-       loop
-          Res := Syscall_Recvmsg (S, Msg, Flags);
-          exit when SOSC.Thread_Blocking_IO
-            or else Res /= Failure
-            or else Non_Blocking_Socket (S)
-            or else Errno /= SOSC.EWOULDBLOCK;
-          delay Quantum;
-       end loop;
- 
-       return System.CRTL.ssize_t (Res);
-    end C_Recvmsg;
- 
-    ---------------
-    -- C_Sendmsg --
-    ---------------
- 
-    function C_Sendmsg
-      (S     : C.int;
-       Msg   : System.Address;
-       Flags : C.int) return System.CRTL.ssize_t
-    is
-       Res : C.int;
- 
-    begin
-       loop
-          Res := Syscall_Sendmsg (S, Msg, Flags);
-          exit when SOSC.Thread_Blocking_IO
-            or else Res /= Failure
-            or else Non_Blocking_Socket (S)
-            or else Errno /= SOSC.EWOULDBLOCK;
-          delay Quantum;
-       end loop;
- 
-       return System.CRTL.ssize_t (Res);
-    end C_Sendmsg;
- 
-    --------------
-    -- C_Sendto --
-    --------------
- 
-    function C_Sendto
-      (S     : C.int;
-       Msg   : System.Address;
-       Len   : C.int;
-       Flags : C.int;
-       To    : System.Address;
-       Tolen : C.int) return C.int
-    is
-       use System;
- 
-       Res : C.int;
- 
-    begin
-       loop
-          if To = Null_Address then
- 
-             --  In violation of the standard sockets API, VxWorks does not
-             --  support sendto(2) calls on connected sockets with a null
-             --  destination address, so use send(2) instead in that case.
- 
-             Res := Syscall_Send (S, Msg, Len, Flags);
- 
-          --  Normal case where destination address is non-null
- 
-          else
-             Res := Syscall_Sendto (S, Msg, Len, Flags, To, Tolen);
-          end if;
- 
-          exit when SOSC.Thread_Blocking_IO
-            or else Res /= Failure
-            or else Non_Blocking_Socket (S)
-            or else Errno /= SOSC.EWOULDBLOCK;
-          delay Quantum;
-       end loop;
- 
-       return Res;
-    end C_Sendto;
- 
-    --------------
-    -- C_Socket --
-    --------------
- 
-    function C_Socket
-      (Domain   : C.int;
-       Typ      : C.int;
-       Protocol : C.int) return C.int
-    is
-       R   : C.int;
-       Val : aliased C.int := 1;
- 
-       Res : C.int;
-       pragma Unreferenced (Res);
- 
-    begin
-       R := Syscall_Socket (Domain, Typ, Protocol);
- 
-       if not SOSC.Thread_Blocking_IO
-         and then R /= Failure
-       then
-          --  Do not use Socket_Ioctl as this subprogram tracks sockets set
-          --  in non-blocking mode by user.
- 
-          Res := C_Ioctl (R, SOSC.FIONBIO, Val'Access);
-          --  Is it OK to ignore result ???
-          Set_Non_Blocking_Socket (R, False);
-       end if;
- 
-       return R;
-    end C_Socket;
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    procedure Finalize is
-    begin
-       null;
-    end Finalize;
- 
-    -------------------------
-    -- Host_Error_Messages --
-    -------------------------
- 
-    package body Host_Error_Messages is separate;
- 
-    ----------------
-    -- Initialize --
-    ----------------
- 
-    procedure Initialize is
-    begin
-       Reset_Socket_Set (Non_Blocking_Sockets'Access);
-    end Initialize;
- 
-    -------------------------
-    -- Non_Blocking_Socket --
-    -------------------------
- 
-    function Non_Blocking_Socket (S : C.int) return Boolean is
-       R : Boolean;
-    begin
-       Task_Lock.Lock;
-       R := (Is_Socket_In_Set (Non_Blocking_Sockets'Access, S) /= 0);
-       Task_Lock.Unlock;
-       return R;
-    end Non_Blocking_Socket;
- 
-    -----------------------------
-    -- Set_Non_Blocking_Socket --
-    -----------------------------
- 
-    procedure Set_Non_Blocking_Socket (S : C.int; V : Boolean) is
-    begin
-       Task_Lock.Lock;
-       if V then
-          Insert_Socket_In_Set (Non_Blocking_Sockets'Access, S);
-       else
-          Remove_Socket_From_Set (Non_Blocking_Sockets'Access, S);
-       end if;
- 
-       Task_Lock.Unlock;
-    end Set_Non_Blocking_Socket;
- 
-    --------------------
-    -- Signalling_Fds --
-    --------------------
- 
-    package body Signalling_Fds is separate;
- 
-    --------------------------
-    -- Socket_Error_Message --
-    --------------------------
- 
-    function Socket_Error_Message (Errno : Integer) return String is separate;
- 
- end GNAT.Sockets.Thin;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-socthi-vxworks.ads gcc-8.1.0/gcc/ada/g-socthi-vxworks.ads
*** gcc-7.3.0/gcc/ada/g-socthi-vxworks.ads	Mon Feb 24 16:59:24 2014
--- gcc-8.1.0/gcc/ada/g-socthi-vxworks.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,228 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                    G N A T . S O C K E T S . T H I N                     --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 2002-2013, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 a target dependent thin interface to the sockets
- --  layer for use by the GNAT.Sockets package (g-socket.ads). This package
- --  should not be directly with'ed by an applications program.
- 
- --  This is the version for VxWorks
- 
- with Interfaces.C;
- 
- with GNAT.OS_Lib;
- with GNAT.Sockets.Thin_Common;
- 
- with System;
- with System.CRTL;
- 
- package GNAT.Sockets.Thin is
- 
-    use Thin_Common;
- 
-    package C renames Interfaces.C;
- 
-    use type System.CRTL.ssize_t;
- 
-    function Socket_Errno return Integer renames GNAT.OS_Lib.Errno;
-    --  Returns last socket error number
- 
-    procedure Set_Socket_Errno (Errno : Integer) renames GNAT.OS_Lib.Set_Errno;
-    --  Set last socket error number
- 
-    function Socket_Error_Message (Errno : Integer) return String;
-    --  Returns the error message string for the error number Errno. If Errno is
-    --  not known, returns "Unknown system error".
- 
-    function Host_Errno return Integer;
-    pragma Import (C, Host_Errno, "__gnat_get_h_errno");
-    --  Returns last host error number
- 
-    package Host_Error_Messages is
- 
-       function Host_Error_Message (H_Errno : Integer) return String;
-       --  Returns the error message string for the host error number H_Errno.
-       --  If H_Errno is not known, returns "Unknown system error".
- 
-    end Host_Error_Messages;
- 
-    --------------------------------
-    -- Standard library functions --
-    --------------------------------
- 
-    function C_Accept
-      (S       : C.int;
-       Addr    : System.Address;
-       Addrlen : not null access C.int) return C.int;
- 
-    function C_Bind
-      (S       : C.int;
-       Name    : System.Address;
-       Namelen : C.int) return C.int;
- 
-    function C_Close
-      (Fd : C.int) return C.int;
- 
-    function C_Connect
-      (S       : C.int;
-       Name    : System.Address;
-       Namelen : C.int) return C.int;
- 
-    function C_Gethostname
-      (Name    : System.Address;
-       Namelen : C.int) return C.int;
- 
-    function C_Getpeername
-      (S       : C.int;
-       Name    : System.Address;
-       Namelen : not null access C.int) return C.int;
- 
-    function C_Getsockname
-      (S       : C.int;
-       Name    : System.Address;
-       Namelen : not null access C.int) return C.int;
- 
-    function C_Getsockopt
-      (S       : C.int;
-       Level   : C.int;
-       Optname : C.int;
-       Optval  : System.Address;
-       Optlen  : not null access C.int) return C.int;
- 
-    function Socket_Ioctl
-      (S   : C.int;
-       Req : SOSC.IOCTL_Req_T;
-       Arg : access C.int) return C.int;
- 
-    function C_Listen
-      (S       : C.int;
-       Backlog : C.int) return C.int;
- 
-    function C_Recv
-      (S     : C.int;
-       Msg   : System.Address;
-       Len   : C.int;
-       Flags : C.int) return C.int;
- 
-    function C_Recvfrom
-      (S       : C.int;
-       Msg     : System.Address;
-       Len     : C.int;
-       Flags   : C.int;
-       From    : System.Address;
-       Fromlen : not null access C.int) return C.int;
- 
-    function C_Recvmsg
-      (S     : C.int;
-       Msg   : System.Address;
-       Flags : C.int) return System.CRTL.ssize_t;
- 
-    function C_Select
-      (Nfds      : C.int;
-       Readfds   : access Fd_Set;
-       Writefds  : access Fd_Set;
-       Exceptfds : access Fd_Set;
-       Timeout   : Timeval_Access) return C.int;
- 
-    function C_Sendmsg
-      (S     : C.int;
-       Msg   : System.Address;
-       Flags : C.int) return System.CRTL.ssize_t;
- 
-    function C_Sendto
-      (S     : C.int;
-       Msg   : System.Address;
-       Len   : C.int;
-       Flags : C.int;
-       To    : System.Address;
-       Tolen : C.int) return C.int;
- 
-    function C_Setsockopt
-      (S       : C.int;
-       Level   : C.int;
-       Optname : C.int;
-       Optval  : System.Address;
-       Optlen  : C.int) return C.int;
- 
-    function C_Shutdown
-      (S   : C.int;
-       How : C.int) return C.int;
- 
-    function C_Socket
-      (Domain   : C.int;
-       Typ      : C.int;
-       Protocol : C.int) return C.int;
- 
-    function C_System
-      (Command : System.Address) return C.int;
- 
-    -------------------------------------------------------
-    -- Signalling file descriptors for selector abortion --
-    -------------------------------------------------------
- 
-    package Signalling_Fds is
- 
-       function Create (Fds : not null access Fd_Pair) return C.int;
-       pragma Convention (C, Create);
-       --  Create a pair of connected descriptors suitable for use with C_Select
-       --  (used for signalling in Selector objects).
- 
-       function Read (Rsig : C.int) return C.int;
-       pragma Convention (C, Read);
-       --  Read one byte of data from rsig, the read end of a pair of signalling
-       --  fds created by Create_Signalling_Fds.
- 
-       function Write (Wsig : C.int) return C.int;
-       pragma Convention (C, Write);
-       --  Write one byte of data to wsig, the write end of a pair of signalling
-       --  fds created by Create_Signalling_Fds.
- 
-       procedure Close (Sig : C.int);
-       pragma Convention (C, Close);
-       --  Close one end of a pair of signalling fds (ignoring any error)
- 
-    end Signalling_Fds;
- 
-    procedure Initialize;
-    procedure Finalize;
- 
- private
-    pragma Import (C, C_Bind, "bind");
-    pragma Import (C, C_Close, "close");
-    pragma Import (C, C_Gethostname, "gethostname");
-    pragma Import (C, C_Getpeername, "getpeername");
-    pragma Import (C, C_Getsockname, "getsockname");
-    pragma Import (C, C_Getsockopt, "getsockopt");
-    pragma Import (C, C_Listen, "listen");
-    pragma Import (C, C_Select, "select");
-    pragma Import (C, C_Setsockopt, "setsockopt");
-    pragma Import (C, C_Shutdown, "shutdown");
-    pragma Import (C, C_System, "system");
- end GNAT.Sockets.Thin;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-socthi.adb gcc-8.1.0/gcc/ada/g-socthi.adb
*** gcc-7.3.0/gcc/ada/g-socthi.adb	Wed Jul 30 12:50:43 2014
--- gcc-8.1.0/gcc/ada/g-socthi.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,491 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                    G N A T . S O C K E T S . T H I N                     --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 2001-2014, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 a target dependent thin interface to the sockets
- --  layer for use by the GNAT.Sockets package (g-socket.ads). This package
- --  should not be directly with'ed by an applications program.
- 
- --  This is the default version
- 
- with GNAT.OS_Lib; use GNAT.OS_Lib;
- with GNAT.Task_Lock;
- 
- with Interfaces.C; use Interfaces.C;
- 
- package body GNAT.Sockets.Thin is
- 
-    Non_Blocking_Sockets : aliased Fd_Set;
-    --  When this package is initialized with Process_Blocking_IO set
-    --  to True, sockets are set in non-blocking mode to avoid blocking
-    --  the whole process when a thread wants to perform a blocking IO
-    --  operation. But the user can also set a socket in non-blocking
-    --  mode by purpose. In order to make a difference between these
-    --  two situations, we track the origin of non-blocking mode in
-    --  Non_Blocking_Sockets. If S is in Non_Blocking_Sockets, it has
-    --  been set in non-blocking mode by the user.
- 
-    Quantum : constant Duration := 0.2;
-    --  When SOSC.Thread_Blocking_IO is False, we set sockets in
-    --  non-blocking mode and we spend a period of time Quantum between
-    --  two attempts on a blocking operation.
- 
-    --  Comments required for following functions ???
- 
-    function Syscall_Accept
-      (S       : C.int;
-       Addr    : System.Address;
-       Addrlen : not null access C.int) return C.int;
-    pragma Import (C, Syscall_Accept, "accept");
- 
-    function Syscall_Connect
-      (S       : C.int;
-       Name    : System.Address;
-       Namelen : C.int) return C.int;
-    pragma Import (C, Syscall_Connect, "connect");
- 
-    function Syscall_Recv
-      (S     : C.int;
-       Msg   : System.Address;
-       Len   : C.int;
-       Flags : C.int) return C.int;
-    pragma Import (C, Syscall_Recv, "recv");
- 
-    function Syscall_Recvfrom
-      (S       : C.int;
-       Msg     : System.Address;
-       Len     : C.int;
-       Flags   : C.int;
-       From    : System.Address;
-       Fromlen : not null access C.int) return C.int;
-    pragma Import (C, Syscall_Recvfrom, "recvfrom");
- 
-    function Syscall_Recvmsg
-      (S     : C.int;
-       Msg   : System.Address;
-       Flags : C.int) return System.CRTL.ssize_t;
-    pragma Import (C, Syscall_Recvmsg, "recvmsg");
- 
-    function Syscall_Sendmsg
-      (S     : C.int;
-       Msg   : System.Address;
-       Flags : C.int) return System.CRTL.ssize_t;
-    pragma Import (C, Syscall_Sendmsg, "sendmsg");
- 
-    function Syscall_Sendto
-      (S     : C.int;
-       Msg   : System.Address;
-       Len   : C.int;
-       Flags : C.int;
-       To    : System.Address;
-       Tolen : C.int) return C.int;
-    pragma Import (C, Syscall_Sendto, "sendto");
- 
-    function Syscall_Socket
-      (Domain   : C.int;
-       Typ      : C.int;
-       Protocol : C.int) return C.int;
-    pragma Import (C, Syscall_Socket, "socket");
- 
-    procedure Disable_SIGPIPE (S : C.int);
-    pragma Import (C, Disable_SIGPIPE, "__gnat_disable_sigpipe");
- 
-    procedure Disable_All_SIGPIPEs;
-    pragma Import (C, Disable_All_SIGPIPEs, "__gnat_disable_all_sigpipes");
-    --  Sets the process to ignore all SIGPIPE signals on platforms that
-    --  don't support Disable_SIGPIPE for particular streams.
- 
-    function Non_Blocking_Socket (S : C.int) return Boolean;
-    procedure Set_Non_Blocking_Socket (S : C.int; V : Boolean);
- 
-    --------------
-    -- C_Accept --
-    --------------
- 
-    function C_Accept
-      (S       : C.int;
-       Addr    : System.Address;
-       Addrlen : not null access C.int) return C.int
-    is
-       R   : C.int;
-       Val : aliased C.int := 1;
- 
-       Discard : C.int;
-       pragma Warnings (Off, Discard);
- 
-    begin
-       loop
-          R := Syscall_Accept (S, Addr, Addrlen);
-          exit when SOSC.Thread_Blocking_IO
-            or else R /= Failure
-            or else Non_Blocking_Socket (S)
-            or else Errno /= SOSC.EWOULDBLOCK;
-          delay Quantum;
-       end loop;
- 
-       if not SOSC.Thread_Blocking_IO
-         and then R /= Failure
-       then
-          --  A socket inherits the properties ot its server especially
-          --  the FIONBIO flag. Do not use Socket_Ioctl as this subprogram
-          --  tracks sockets set in non-blocking mode by user.
- 
-          Set_Non_Blocking_Socket (R, Non_Blocking_Socket (S));
-          Discard := C_Ioctl (R, SOSC.FIONBIO, Val'Access);
-       end if;
- 
-       Disable_SIGPIPE (R);
-       return R;
-    end C_Accept;
- 
-    ---------------
-    -- C_Connect --
-    ---------------
- 
-    function C_Connect
-      (S       : C.int;
-       Name    : System.Address;
-       Namelen : C.int) return C.int
-    is
-       Res : C.int;
- 
-    begin
-       Res := Syscall_Connect (S, Name, Namelen);
- 
-       if SOSC.Thread_Blocking_IO
-         or else Res /= Failure
-         or else Non_Blocking_Socket (S)
-         or else Errno /= SOSC.EINPROGRESS
-       then
-          return Res;
-       end if;
- 
-       declare
-          WSet : aliased Fd_Set;
-          Now  : aliased Timeval;
- 
-       begin
-          Reset_Socket_Set (WSet'Access);
-          loop
-             Insert_Socket_In_Set (WSet'Access, S);
-             Now := Immediat;
-             Res := C_Select
-               (S + 1,
-                No_Fd_Set_Access,
-                WSet'Access,
-                No_Fd_Set_Access,
-                Now'Unchecked_Access);
- 
-             exit when Res > 0;
- 
-             if Res = Failure then
-                return Res;
-             end if;
- 
-             delay Quantum;
-          end loop;
-       end;
- 
-       Res := Syscall_Connect (S, Name, Namelen);
- 
-       if Res = Failure
-         and then Errno = SOSC.EISCONN
-       then
-          return Thin_Common.Success;
-       else
-          return Res;
-       end if;
-    end C_Connect;
- 
-    ------------------
-    -- Socket_Ioctl --
-    ------------------
- 
-    function Socket_Ioctl
-      (S   : C.int;
-       Req : SOSC.IOCTL_Req_T;
-       Arg : access C.int) return C.int
-    is
-    begin
-       if not SOSC.Thread_Blocking_IO and then Req = SOSC.FIONBIO then
-          if Arg.all /= 0 then
-             Set_Non_Blocking_Socket (S, True);
-          end if;
-       end if;
- 
-       return C_Ioctl (S, Req, Arg);
-    end Socket_Ioctl;
- 
-    ------------
-    -- C_Recv --
-    ------------
- 
-    function C_Recv
-      (S     : C.int;
-       Msg   : System.Address;
-       Len   : C.int;
-       Flags : C.int) return C.int
-    is
-       Res : C.int;
- 
-    begin
-       loop
-          Res := Syscall_Recv (S, Msg, Len, Flags);
-          exit when SOSC.Thread_Blocking_IO
-            or else Res /= Failure
-            or else Non_Blocking_Socket (S)
-            or else Errno /= SOSC.EWOULDBLOCK;
-          delay Quantum;
-       end loop;
- 
-       return Res;
-    end C_Recv;
- 
-    ----------------
-    -- C_Recvfrom --
-    ----------------
- 
-    function C_Recvfrom
-      (S       : C.int;
-       Msg     : System.Address;
-       Len     : C.int;
-       Flags   : C.int;
-       From    : System.Address;
-       Fromlen : not null access C.int) return C.int
-    is
-       Res : C.int;
- 
-    begin
-       loop
-          Res := Syscall_Recvfrom (S, Msg, Len, Flags, From, Fromlen);
-          exit when SOSC.Thread_Blocking_IO
-            or else Res /= Failure
-            or else Non_Blocking_Socket (S)
-            or else Errno /= SOSC.EWOULDBLOCK;
-          delay Quantum;
-       end loop;
- 
-       return Res;
-    end C_Recvfrom;
- 
-    ---------------
-    -- C_Recvmsg --
-    ---------------
- 
-    function C_Recvmsg
-      (S     : C.int;
-       Msg   : System.Address;
-       Flags : C.int) return System.CRTL.ssize_t
-    is
-       Res : System.CRTL.ssize_t;
- 
-    begin
-       loop
-          Res := Syscall_Recvmsg (S, Msg, Flags);
-          exit when SOSC.Thread_Blocking_IO
-            or else Res /= System.CRTL.ssize_t (Failure)
-            or else Non_Blocking_Socket (S)
-            or else Errno /= SOSC.EWOULDBLOCK;
-          delay Quantum;
-       end loop;
- 
-       return Res;
-    end C_Recvmsg;
- 
-    ---------------
-    -- C_Sendmsg --
-    ---------------
- 
-    function C_Sendmsg
-      (S     : C.int;
-       Msg   : System.Address;
-       Flags : C.int) return System.CRTL.ssize_t
-    is
-       Res : System.CRTL.ssize_t;
- 
-    begin
-       loop
-          Res := Syscall_Sendmsg (S, Msg, Flags);
-          exit when SOSC.Thread_Blocking_IO
-            or else Res /= System.CRTL.ssize_t (Failure)
-            or else Non_Blocking_Socket (S)
-            or else Errno /= SOSC.EWOULDBLOCK;
-          delay Quantum;
-       end loop;
- 
-       return Res;
-    end C_Sendmsg;
- 
-    --------------
-    -- C_Sendto --
-    --------------
- 
-    function C_Sendto
-      (S     : C.int;
-       Msg   : System.Address;
-       Len   : C.int;
-       Flags : C.int;
-       To    : System.Address;
-       Tolen : C.int) return C.int
-    is
-       Res : C.int;
- 
-    begin
-       loop
-          Res := Syscall_Sendto (S, Msg, Len, Flags, To, Tolen);
-          exit when SOSC.Thread_Blocking_IO
-            or else Res /= Failure
-            or else Non_Blocking_Socket (S)
-            or else Errno /= SOSC.EWOULDBLOCK;
-          delay Quantum;
-       end loop;
- 
-       return Res;
-    end C_Sendto;
- 
-    --------------
-    -- C_Socket --
-    --------------
- 
-    function C_Socket
-      (Domain   : C.int;
-       Typ      : C.int;
-       Protocol : C.int) return C.int
-    is
-       R   : C.int;
-       Val : aliased C.int := 1;
- 
-       Discard : C.int;
- 
-    begin
-       R := Syscall_Socket (Domain, Typ, Protocol);
- 
-       if not SOSC.Thread_Blocking_IO
-         and then R /= Failure
-       then
-          --  Do not use Socket_Ioctl as this subprogram tracks sockets set
-          --  in non-blocking mode by user.
- 
-          Discard := C_Ioctl (R, SOSC.FIONBIO, Val'Access);
-          Set_Non_Blocking_Socket (R, False);
-       end if;
-       Disable_SIGPIPE (R);
-       return R;
-    end C_Socket;
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    procedure Finalize is
-    begin
-       null;
-    end Finalize;
- 
-    -------------------------
-    -- Host_Error_Messages --
-    -------------------------
- 
-    package body Host_Error_Messages is separate;
- 
-    ----------------
-    -- Initialize --
-    ----------------
- 
-    procedure Initialize is
-    begin
-       Disable_All_SIGPIPEs;
-       Reset_Socket_Set (Non_Blocking_Sockets'Access);
-    end Initialize;
- 
-    -------------------------
-    -- Non_Blocking_Socket --
-    -------------------------
- 
-    function Non_Blocking_Socket (S : C.int) return Boolean is
-       R : Boolean;
-    begin
-       Task_Lock.Lock;
-       R := (Is_Socket_In_Set (Non_Blocking_Sockets'Access, S) /= 0);
-       Task_Lock.Unlock;
-       return R;
-    end Non_Blocking_Socket;
- 
-    -----------------------------
-    -- Set_Non_Blocking_Socket --
-    -----------------------------
- 
-    procedure Set_Non_Blocking_Socket (S : C.int; V : Boolean) is
-    begin
-       Task_Lock.Lock;
- 
-       if V then
-          Insert_Socket_In_Set (Non_Blocking_Sockets'Access, S);
-       else
-          Remove_Socket_From_Set (Non_Blocking_Sockets'Access, S);
-       end if;
- 
-       Task_Lock.Unlock;
-    end Set_Non_Blocking_Socket;
- 
-    --------------------
-    -- Signalling_Fds --
-    --------------------
- 
-    package body Signalling_Fds is
- 
-       --  In this default implementation, we use a C version of these
-       --  subprograms provided by socket.c.
- 
-       function C_Create (Fds : not null access Fd_Pair) return C.int;
-       function C_Read (Rsig : C.int) return C.int;
-       function C_Write (Wsig : C.int) return C.int;
-       procedure C_Close (Sig : C.int);
- 
-       pragma Import (C, C_Create, "__gnat_create_signalling_fds");
-       pragma Import (C, C_Read,   "__gnat_read_signalling_fd");
-       pragma Import (C, C_Write,  "__gnat_write_signalling_fd");
-       pragma Import (C, C_Close,  "__gnat_close_signalling_fd");
- 
-       function Create
-         (Fds : not null access Fd_Pair) return C.int renames C_Create;
-       function Read (Rsig : C.int) return C.int renames C_Read;
-       function Write (Wsig : C.int) return C.int renames C_Write;
-       procedure Close (Sig : C.int) renames C_Close;
- 
-    end Signalling_Fds;
- 
-    --------------------------
-    -- Socket_Error_Message --
-    --------------------------
- 
-    function Socket_Error_Message (Errno : Integer) return String is separate;
- 
- end GNAT.Sockets.Thin;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-socthi.ads gcc-8.1.0/gcc/ada/g-socthi.ads
*** gcc-7.3.0/gcc/ada/g-socthi.ads	Mon Feb 24 16:59:24 2014
--- gcc-8.1.0/gcc/ada/g-socthi.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,259 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                    G N A T . S O C K E T S . T H I N                     --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 2001-2013, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 a target dependent thin interface to the sockets
- --  layer for use by the GNAT.Sockets package (g-socket.ads). This package
- --  should not be directly with'ed by an applications program.
- 
- --  This is the default version
- 
- with Interfaces.C;
- 
- with GNAT.OS_Lib;
- with GNAT.Sockets.Thin_Common;
- 
- with System;
- with System.CRTL;
- 
- package GNAT.Sockets.Thin is
- 
-    --  This package is intended for hosts implementing BSD sockets with a
-    --  standard interface. It will be used as a default for all the platforms
-    --  that do not have a specific version of this file.
- 
-    use Thin_Common;
- 
-    package C renames Interfaces.C;
- 
-    use type System.CRTL.ssize_t;
- 
-    function Socket_Errno return Integer renames GNAT.OS_Lib.Errno;
-    --  Returns last socket error number
- 
-    function Socket_Error_Message (Errno : Integer) return String;
-    --  Returns the error message string for the error number Errno. If Errno is
-    --  not known, returns "Unknown system error".
- 
-    function Host_Errno return Integer;
-    pragma Import (C, Host_Errno, "__gnat_get_h_errno");
-    --  Returns last host error number
- 
-    package Host_Error_Messages is
- 
-       function Host_Error_Message (H_Errno : Integer) return String;
-       --  Returns the error message string for the host error number H_Errno.
-       --  If H_Errno is not known, returns "Unknown system error".
- 
-    end Host_Error_Messages;
- 
-    --------------------------------
-    -- Standard library functions --
-    --------------------------------
- 
-    function C_Accept
-      (S       : C.int;
-       Addr    : System.Address;
-       Addrlen : not null access C.int) return C.int;
- 
-    function C_Bind
-      (S       : C.int;
-       Name    : System.Address;
-       Namelen : C.int) return C.int;
- 
-    function C_Close
-      (Fd : C.int) return C.int;
- 
-    function C_Connect
-      (S       : C.int;
-       Name    : System.Address;
-       Namelen : C.int) return C.int;
- 
-    function C_Gethostname
-      (Name    : System.Address;
-       Namelen : C.int) return C.int;
- 
-    function C_Getpeername
-      (S       : C.int;
-       Name    : System.Address;
-       Namelen : not null access C.int) return C.int;
- 
-    function C_Getsockname
-      (S       : C.int;
-       Name    : System.Address;
-       Namelen : not null access C.int) return C.int;
- 
-    function C_Getsockopt
-      (S       : C.int;
-       Level   : C.int;
-       Optname : C.int;
-       Optval  : System.Address;
-       Optlen  : not null access C.int) return C.int;
- 
-    function Socket_Ioctl
-      (S   : C.int;
-       Req : SOSC.IOCTL_Req_T;
-       Arg : access C.int) return C.int;
- 
-    function C_Listen
-      (S       : C.int;
-       Backlog : C.int) return C.int;
- 
-    function C_Recv
-      (S     : C.int;
-       Msg   : System.Address;
-       Len   : C.int;
-       Flags : C.int) return C.int;
- 
-    function C_Recvfrom
-      (S       : C.int;
-       Msg     : System.Address;
-       Len     : C.int;
-       Flags   : C.int;
-       From    : System.Address;
-       Fromlen : not null access C.int) return C.int;
- 
-    function C_Recvmsg
-      (S     : C.int;
-       Msg   : System.Address;
-       Flags : C.int) return System.CRTL.ssize_t;
- 
-    function C_Select
-      (Nfds      : C.int;
-       Readfds   : access Fd_Set;
-       Writefds  : access Fd_Set;
-       Exceptfds : access Fd_Set;
-       Timeout   : Timeval_Access) return C.int;
- 
-    function C_Sendmsg
-      (S     : C.int;
-       Msg   : System.Address;
-       Flags : C.int) return System.CRTL.ssize_t;
- 
-    function C_Sendto
-      (S     : C.int;
-       Msg   : System.Address;
-       Len   : C.int;
-       Flags : C.int;
-       To    : System.Address;
-       Tolen : C.int) return C.int;
- 
-    function C_Setsockopt
-      (S       : C.int;
-       Level   : C.int;
-       Optname : C.int;
-       Optval  : System.Address;
-       Optlen  : C.int) return C.int;
- 
-    function C_Shutdown
-      (S   : C.int;
-       How : C.int) return C.int;
- 
-    function C_Socket
-      (Domain   : C.int;
-       Typ      : C.int;
-       Protocol : C.int) return C.int;
- 
-    function C_System
-      (Command : System.Address) return C.int;
- 
-    -------------------------------------------------------
-    -- Signalling file descriptors for selector abortion --
-    -------------------------------------------------------
- 
-    package Signalling_Fds is
- 
-       function Create (Fds : not null access Fd_Pair) return C.int;
-       pragma Convention (C, Create);
-       --  Create a pair of connected descriptors suitable for use with C_Select
-       --  (used for signalling in Selector objects).
- 
-       function Read (Rsig : C.int) return C.int;
-       pragma Convention (C, Read);
-       --  Read one byte of data from rsig, the read end of a pair of signalling
-       --  fds created by Create_Signalling_Fds.
- 
-       function Write (Wsig : C.int) return C.int;
-       pragma Convention (C, Write);
-       --  Write one byte of data to wsig, the write end of a pair of signalling
-       --  fds created by Create_Signalling_Fds.
- 
-       procedure Close (Sig : C.int);
-       pragma Convention (C, Close);
-       --  Close one end of a pair of signalling fds (ignoring any error)
- 
-    end Signalling_Fds;
- 
-    -------------------------------------------
-    -- Nonreentrant network databases access --
-    -------------------------------------------
- 
-    --  The following are used only on systems that have nonreentrant
-    --  getXXXbyYYY functions, and do NOT have corresponding getXXXbyYYY_
-    --  functions. Currently, LynxOS is the only such system.
- 
-    function Nonreentrant_Gethostbyname
-      (Name : C.char_array) return Hostent_Access;
- 
-    function Nonreentrant_Gethostbyaddr
-      (Addr      : System.Address;
-       Addr_Len  : C.int;
-       Addr_Type : C.int) return Hostent_Access;
- 
-    function Nonreentrant_Getservbyname
-      (Name  : C.char_array;
-       Proto : C.char_array) return Servent_Access;
- 
-    function Nonreentrant_Getservbyport
-      (Port  : C.int;
-       Proto : C.char_array) return Servent_Access;
- 
-    procedure Initialize;
-    procedure Finalize;
- 
- private
-    pragma Import (C, C_Bind, "bind");
-    pragma Import (C, C_Close, "close");
-    pragma Import (C, C_Gethostname, "gethostname");
-    pragma Import (C, C_Getpeername, "getpeername");
-    pragma Import (C, C_Getsockname, "getsockname");
-    pragma Import (C, C_Getsockopt, "getsockopt");
-    pragma Import (C, C_Listen, "listen");
-    pragma Import (C, C_Select, "select");
-    pragma Import (C, C_Setsockopt, "setsockopt");
-    pragma Import (C, C_Shutdown, "shutdown");
-    pragma Import (C, C_System, "system");
- 
-    pragma Import (C, Nonreentrant_Gethostbyname, "gethostbyname");
-    pragma Import (C, Nonreentrant_Gethostbyaddr, "gethostbyaddr");
-    pragma Import (C, Nonreentrant_Getservbyname, "getservbyname");
-    pragma Import (C, Nonreentrant_Getservbyport, "getservbyport");
- 
- end GNAT.Sockets.Thin;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-soliop-mingw.ads gcc-8.1.0/gcc/ada/g-soliop-mingw.ads
*** gcc-7.3.0/gcc/ada/g-soliop-mingw.ads	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-soliop-mingw.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,42 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --          G N A T . S O C K E T S . L I N K E R _ O P T I O N S           --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 2001-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 is used to provide target specific linker_options for the
- --  support of sockets as required by the package GNAT.Sockets.
- 
- --  This is the Windows/NT version of this package
- 
- --  This package should not be directly with'ed by an application program
- 
- package GNAT.Sockets.Linker_Options is
- private
-    pragma Linker_Options ("-lws2_32");
- end GNAT.Sockets.Linker_Options;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-soliop-solaris.ads gcc-8.1.0/gcc/ada/g-soliop-solaris.ads
*** gcc-7.3.0/gcc/ada/g-soliop-solaris.ads	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-soliop-solaris.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,43 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --          G N A T . S O C K E T S . L I N K E R _ O P T I O N S           --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 2001-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 is used to provide target specific linker_options for the
- --  support of sockets as required by the package GNAT.Sockets.
- 
- --  This is the Solaris version of this package
- 
- --  This package should not be directly with'ed by an application program
- 
- package GNAT.Sockets.Linker_Options is
- private
-    pragma Linker_Options ("-lnsl");
-    pragma Linker_Options ("-lsocket");
- end GNAT.Sockets.Linker_Options;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-soliop.ads gcc-8.1.0/gcc/ada/g-soliop.ads
*** gcc-7.3.0/gcc/ada/g-soliop.ads	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-soliop.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,42 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --          G N A T . S O C K E T S . L I N K E R _ O P T I O N S           --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 2001-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 is used to provide target specific linker_options for the
- --  support of sockets as required by the package GNAT.Sockets.
- 
- --  This is an empty version for default use where no additional libraries
- --  are required. On some targets a target specific version of this unit
- --  ensures linking with required libraries for proper sockets operation.
- 
- --  This package should not be directly with'ed by an application program
- 
- package GNAT.Sockets.Linker_Options is
- end GNAT.Sockets.Linker_Options;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-sothco-dummy.adb gcc-8.1.0/gcc/ada/g-sothco-dummy.adb
*** gcc-7.3.0/gcc/ada/g-sothco-dummy.adb	Fri Jan  4 12:49:55 2013
--- gcc-8.1.0/gcc/ada/g-sothco-dummy.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,32 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --              G N A T . S O C K E T S . T H I N _ C O M M O N             --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --           Copyright (C) 2008-2011, Free Software Foundation, Inc.        --
- --                                                                          --
- -- GNAT is 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 No_Body;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-sothco-dummy.ads gcc-8.1.0/gcc/ada/g-sothco-dummy.ads
*** gcc-7.3.0/gcc/ada/g-sothco-dummy.ads	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-sothco-dummy.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,37 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --              G N A T . S O C K E T S . T H I N _ C O M M O N             --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                       Copyright (C) 2008-2010, AdaCore                   --
- --                                                                          --
- -- GNAT is 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 is a placeholder for the sockets binding for platforms where
- --  it is not implemented.
- 
- package GNAT.Sockets.Thin_Common is
-    pragma Unimplemented_Unit;
- end GNAT.Sockets.Thin_Common;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-sothco.adb gcc-8.1.0/gcc/ada/g-sothco.adb
*** gcc-7.3.0/gcc/ada/g-sothco.adb	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-sothco.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,77 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --              G N A T . S O C K E T S . T H I N _ C O M M O N             --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                       Copyright (C) 2008-2010, AdaCore                   --
- --                                                                          --
- -- GNAT is 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 GNAT.Sockets.Thin_Common is
- 
-    -----------------
-    -- Set_Address --
-    -----------------
- 
-    procedure Set_Address
-      (Sin     : Sockaddr_In_Access;
-       Address : In_Addr)
-    is
-    begin
-       Sin.Sin_Addr := Address;
-    end Set_Address;
- 
-    ----------------
-    -- Set_Family --
-    ----------------
- 
-    procedure Set_Family
-      (Length_And_Family : out Sockaddr_Length_And_Family;
-       Family            : Family_Type)
-    is
-       C_Family : C.int renames Families (Family);
-       Has_Sockaddr_Len : constant Boolean := SOSC.Has_Sockaddr_Len /= 0;
-    begin
-       if Has_Sockaddr_Len then
-          Length_And_Family.Length       := Lengths (Family);
-          Length_And_Family.Char_Family  := C.unsigned_char  (C_Family);
-       else
-          Length_And_Family.Short_Family := C.unsigned_short (C_Family);
-       end if;
-    end Set_Family;
- 
-    --------------
-    -- Set_Port --
-    --------------
- 
-    procedure Set_Port
-      (Sin  : Sockaddr_In_Access;
-       Port : C.unsigned_short)
-    is
-    begin
-       Sin.Sin_Port := Port;
-    end Set_Port;
- 
- end GNAT.Sockets.Thin_Common;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-sothco.ads gcc-8.1.0/gcc/ada/g-sothco.ads
*** gcc-7.3.0/gcc/ada/g-sothco.ads	Fri Jan  6 10:28:06 2017
--- gcc-8.1.0/gcc/ada/g-sothco.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,409 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --              G N A T . S O C K E T S . T H I N _ C O M M O N             --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 2008-2016, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 target-independent part of the thin sockets mapping.
- --  This package should not be directly with'ed by an applications program.
- 
- with Ada.Unchecked_Conversion;
- 
- with Interfaces.C;
- with Interfaces.C.Pointers;
- 
- package GNAT.Sockets.Thin_Common is
- 
-    package C renames Interfaces.C;
- 
-    Success : constant C.int :=  0;
-    Failure : constant C.int := -1;
- 
-    type time_t is
-      range -2 ** (8 * SOSC.SIZEOF_tv_sec - 1)
-          .. 2 ** (8 * SOSC.SIZEOF_tv_sec - 1) - 1;
-    for time_t'Size use 8 * SOSC.SIZEOF_tv_sec;
-    pragma Convention (C, time_t);
- 
-    type suseconds_t is
-      range -2 ** (8 * SOSC.SIZEOF_tv_usec - 1)
-          .. 2 ** (8 * SOSC.SIZEOF_tv_usec - 1) - 1;
-    for suseconds_t'Size use 8 * SOSC.SIZEOF_tv_usec;
-    pragma Convention (C, suseconds_t);
- 
-    type Timeval is record
-       Tv_Sec  : time_t;
-       Tv_Usec : suseconds_t;
-    end record;
-    pragma Convention (C, Timeval);
- 
-    type Timeval_Access is access all Timeval;
-    pragma Convention (C, Timeval_Access);
- 
-    Immediat : constant Timeval := (0, 0);
- 
-    -------------------------------------------
-    -- Mapping tables to low level constants --
-    -------------------------------------------
- 
-    Families : constant array (Family_Type) of C.int :=
-                 (Family_Inet  => SOSC.AF_INET,
-                  Family_Inet6 => SOSC.AF_INET6);
- 
-    Lengths  : constant array (Family_Type) of C.unsigned_char :=
-                 (Family_Inet  => SOSC.SIZEOF_sockaddr_in,
-                  Family_Inet6 => SOSC.SIZEOF_sockaddr_in6);
- 
-    ----------------------------
-    -- Generic socket address --
-    ----------------------------
- 
-    --  Common header
- 
-    --  All socket address types (struct sockaddr, struct sockaddr_storage,
-    --  and protocol specific address types) start with the same 2-byte header,
-    --  which is either a length and a family (one byte each) or just a two-byte
-    --  family. The following unchecked union describes the two possible layouts
-    --  and is meant to be constrained with SOSC.Have_Sockaddr_Len.
- 
-    type Sockaddr_Length_And_Family
-      (Has_Sockaddr_Len : Boolean := False)
-    is record
-       case Has_Sockaddr_Len is
-          when True =>
-             Length      : C.unsigned_char;
-             Char_Family : C.unsigned_char;
- 
-          when False =>
-             Short_Family : C.unsigned_short;
-       end case;
-    end record;
-    pragma Unchecked_Union (Sockaddr_Length_And_Family);
-    pragma Convention (C, Sockaddr_Length_And_Family);
- 
-    procedure Set_Family
-      (Length_And_Family : out Sockaddr_Length_And_Family;
-       Family            : Family_Type);
-    --  Set the family component to the appropriate value for Family, and also
-    --  set Length accordingly if applicable on this platform.
- 
-    type Sockaddr is record
-       Sa_Family : Sockaddr_Length_And_Family;
-       --  Address family (and address length on some platforms)
- 
-       Sa_Data : C.char_array (1 .. 14) := (others => C.nul);
-       --  Family-specific data
-       --  Note that some platforms require that all unused (reserved) bytes
-       --  in addresses be initialized to 0 (e.g. VxWorks).
-    end record;
-    pragma Convention (C, Sockaddr);
-    --  Generic socket address
- 
-    type Sockaddr_Access is access all Sockaddr;
-    pragma Convention (C, Sockaddr_Access);
-    --  Access to socket address
- 
-    ----------------------------
-    -- AF_INET socket address --
-    ----------------------------
- 
-    type In_Addr is record
-       S_B1, S_B2, S_B3, S_B4 : C.unsigned_char;
-    end record;
-    for In_Addr'Alignment use C.int'Alignment;
-    pragma Convention (C, In_Addr);
-    --  IPv4 address, represented as a network-order C.int. Note that the
-    --  underlying operating system may assume that values of this type have
-    --  C.int alignment, so we need to provide a suitable alignment clause here.
- 
-    function To_In_Addr is new Ada.Unchecked_Conversion (C.int, In_Addr);
-    function To_Int     is new Ada.Unchecked_Conversion (In_Addr, C.int);
- 
-    type In_Addr_Access is access all In_Addr;
-    pragma Convention (C, In_Addr_Access);
-    --  Access to internet address
- 
-    Inaddr_Any : aliased constant In_Addr := (others => 0);
-    --  Any internet address (all the interfaces)
- 
-    type In_Addr_Access_Array is array (C.size_t range <>)
-      of aliased In_Addr_Access;
-    pragma Convention (C, In_Addr_Access_Array);
- 
-    package In_Addr_Access_Pointers is new C.Pointers
-      (C.size_t, In_Addr_Access, In_Addr_Access_Array, null);
-    --  Array of internet addresses
- 
-    type Sockaddr_In is record
-       Sin_Family : Sockaddr_Length_And_Family;
-       --  Address family (and address length on some platforms)
- 
-       Sin_Port : C.unsigned_short;
-       --  Port in network byte order
- 
-       Sin_Addr : In_Addr;
-       --  IPv4 address
- 
-       Sin_Zero : C.char_array (1 .. 8) := (others => C.nul);
-       --  Padding
-       --
-       --  Note that some platforms require that all unused (reserved) bytes
-       --  in addresses be initialized to 0 (e.g. VxWorks).
-    end record;
-    pragma Convention (C, Sockaddr_In);
-    --  Internet socket address
- 
-    type Sockaddr_In_Access is access all Sockaddr_In;
-    pragma Convention (C, Sockaddr_In_Access);
-    --  Access to internet socket address
- 
-    procedure Set_Port
-      (Sin  : Sockaddr_In_Access;
-       Port : C.unsigned_short);
-    pragma Inline (Set_Port);
-    --  Set Sin.Sin_Port to Port
- 
-    procedure Set_Address
-      (Sin     : Sockaddr_In_Access;
-       Address : In_Addr);
-    pragma Inline (Set_Address);
-    --  Set Sin.Sin_Addr to Address
- 
-    ------------------
-    -- Host entries --
-    ------------------
- 
-    type Hostent is new
-      System.Storage_Elements.Storage_Array (1 .. SOSC.SIZEOF_struct_hostent);
-    for Hostent'Alignment use 8;
-    --  Host entry. This is an opaque type used only via the following
-    --  accessor functions, because 'struct hostent' has different layouts on
-    --  different platforms.
- 
-    type Hostent_Access is access all Hostent;
-    pragma Convention (C, Hostent_Access);
-    --  Access to host entry
- 
-    function Hostent_H_Name
-      (E : Hostent_Access) return System.Address;
- 
-    function Hostent_H_Alias
-      (E : Hostent_Access; I : C.int) return System.Address;
- 
-    function Hostent_H_Addrtype
-      (E : Hostent_Access) return C.int;
- 
-    function Hostent_H_Length
-      (E : Hostent_Access) return C.int;
- 
-    function Hostent_H_Addr
-      (E : Hostent_Access; Index : C.int) return System.Address;
- 
-    ---------------------
-    -- Service entries --
-    ---------------------
- 
-    type Servent is new
-      System.Storage_Elements.Storage_Array (1 .. SOSC.SIZEOF_struct_servent);
-    for Servent'Alignment use 8;
-    --  Service entry. This is an opaque type used only via the following
-    --  accessor functions, because 'struct servent' has different layouts on
-    --  different platforms.
- 
-    type Servent_Access is access all Servent;
-    pragma Convention (C, Servent_Access);
-    --  Access to service entry
- 
-    function Servent_S_Name
-      (E : Servent_Access) return System.Address;
- 
-    function Servent_S_Alias
-      (E : Servent_Access; Index : C.int) return System.Address;
- 
-    function Servent_S_Port
-      (E : Servent_Access) return C.unsigned_short;
- 
-    function Servent_S_Proto
-      (E : Servent_Access) return System.Address;
- 
-    ------------------
-    -- NetDB access --
-    ------------------
- 
-    --  There are three possible situations for the following NetDB access
-    --  functions:
-    --    - inherently thread safe (case of data returned in a thread specific
-    --      buffer);
-    --    - thread safe using user-provided buffer;
-    --    - thread unsafe.
-    --
-    --  In the first and third cases, the Buf and Buflen are ignored. In the
-    --  second case, the caller must provide a buffer large enough to
-    --  accommodate the returned data. In the third case, the caller must ensure
-    --  that these functions are called within a critical section.
- 
-    function C_Gethostbyname
-      (Name     : C.char_array;
-       Ret      : not null access Hostent;
-       Buf      : System.Address;
-       Buflen   : C.int;
-       H_Errnop : not null access C.int) return C.int;
- 
-    function C_Gethostbyaddr
-      (Addr      : System.Address;
-       Addr_Len  : C.int;
-       Addr_Type : C.int;
-       Ret       : not null access Hostent;
-       Buf       : System.Address;
-       Buflen    : C.int;
-       H_Errnop  : not null access C.int) return C.int;
- 
-    function C_Getservbyname
-      (Name   : C.char_array;
-       Proto  : C.char_array;
-       Ret    : not null access Servent;
-       Buf    : System.Address;
-       Buflen : C.int) return C.int;
- 
-    function C_Getservbyport
-      (Port   : C.int;
-       Proto  : C.char_array;
-       Ret    : not null access Servent;
-       Buf    : System.Address;
-       Buflen : C.int) return C.int;
- 
-    ------------------------------------
-    -- Scatter/gather vector handling --
-    ------------------------------------
- 
-    type Msghdr is record
-       Msg_Name       : System.Address;
-       Msg_Namelen    : C.unsigned;
-       Msg_Iov        : System.Address;
-       Msg_Iovlen     : SOSC.Msg_Iovlen_T;
-       Msg_Control    : System.Address;
-       Msg_Controllen : C.size_t;
-       Msg_Flags      : C.int;
-    end record;
-    pragma Convention (C, Msghdr);
- 
-    ----------------------------
-    -- Socket sets management --
-    ----------------------------
- 
-    procedure Get_Socket_From_Set
-      (Set    : access Fd_Set;
-       Last   : access C.int;
-       Socket : access C.int);
-    --  Get last socket in Socket and remove it from the socket set. The
-    --  parameter Last is a maximum value of the largest socket. This hint is
-    --  used to avoid scanning very large socket sets. After a call to
-    --  Get_Socket_From_Set, Last is set back to the real largest socket in the
-    --  socket set.
- 
-    procedure Insert_Socket_In_Set
-      (Set    : access Fd_Set;
-       Socket : C.int);
-    --  Insert socket in the socket set
- 
-    function  Is_Socket_In_Set
-      (Set    : access constant Fd_Set;
-       Socket : C.int) return C.int;
-    --  Check whether Socket is in the socket set, return a non-zero
-    --  value if it is, zero if it is not.
- 
-    procedure Last_Socket_In_Set
-      (Set  : access Fd_Set;
-       Last : access C.int);
-    --  Find the largest socket in the socket set. This is needed for select().
-    --  When Last_Socket_In_Set is called, parameter Last is a maximum value of
-    --  the largest socket. This hint is used to avoid scanning very large
-    --  socket sets. After the call, Last is set back to the real largest socket
-    --  in the socket set.
- 
-    procedure Remove_Socket_From_Set (Set : access Fd_Set; Socket : C.int);
-    --  Remove socket from the socket set
- 
-    procedure Reset_Socket_Set (Set : access Fd_Set);
-    --  Make Set empty
- 
-    ------------------------------------------
-    -- Pairs of signalling file descriptors --
-    ------------------------------------------
- 
-    type Two_Ints is array (0 .. 1) of C.int;
-    pragma Convention (C, Two_Ints);
-    --  Container for two int values
- 
-    subtype Fd_Pair is Two_Ints;
-    --  Two_Ints as used for Create_Signalling_Fds: a pair of connected file
-    --  descriptors, one of which (the "read end" of the connection) being used
-    --  for reading, the other one (the "write end") being used for writing.
- 
-    Read_End  : constant := 0;
-    Write_End : constant := 1;
-    --  Indexes into an Fd_Pair value providing access to each of the connected
-    --  file descriptors.
- 
-    function Inet_Pton
-      (Af  : C.int;
-       Cp  : System.Address;
-       Inp : System.Address) return C.int;
- 
-    function C_Ioctl
-      (Fd  : C.int;
-       Req : SOSC.IOCTL_Req_T;
-       Arg : access C.int) return C.int;
- 
- private
-    pragma Import (C, Get_Socket_From_Set, "__gnat_get_socket_from_set");
-    pragma Import (C, Is_Socket_In_Set, "__gnat_is_socket_in_set");
-    pragma Import (C, Last_Socket_In_Set, "__gnat_last_socket_in_set");
-    pragma Import (C, Insert_Socket_In_Set, "__gnat_insert_socket_in_set");
-    pragma Import (C, Remove_Socket_From_Set, "__gnat_remove_socket_from_set");
-    pragma Import (C, Reset_Socket_Set, "__gnat_reset_socket_set");
-    pragma Import (C, C_Ioctl, "__gnat_socket_ioctl");
-    pragma Import (C, Inet_Pton, SOSC.Inet_Pton_Linkname);
- 
-    pragma Import (C, C_Gethostbyname, "__gnat_gethostbyname");
-    pragma Import (C, C_Gethostbyaddr, "__gnat_gethostbyaddr");
-    pragma Import (C, C_Getservbyname, "__gnat_getservbyname");
-    pragma Import (C, C_Getservbyport, "__gnat_getservbyport");
- 
-    pragma Import (C, Servent_S_Name,  "__gnat_servent_s_name");
-    pragma Import (C, Servent_S_Alias, "__gnat_servent_s_alias");
-    pragma Import (C, Servent_S_Port,  "__gnat_servent_s_port");
-    pragma Import (C, Servent_S_Proto, "__gnat_servent_s_proto");
- 
-    pragma Import (C, Hostent_H_Name,     "__gnat_hostent_h_name");
-    pragma Import (C, Hostent_H_Alias,    "__gnat_hostent_h_alias");
-    pragma Import (C, Hostent_H_Addrtype, "__gnat_hostent_h_addrtype");
-    pragma Import (C, Hostent_H_Length,   "__gnat_hostent_h_length");
-    pragma Import (C, Hostent_H_Addr,     "__gnat_hostent_h_addr");
- 
- end GNAT.Sockets.Thin_Common;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-souinf.ads gcc-8.1.0/gcc/ada/g-souinf.ads
*** gcc-7.3.0/gcc/ada/g-souinf.ads	Mon Apr 18 10:35:36 2016
--- gcc-8.1.0/gcc/ada/g-souinf.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,96 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                     G N A T . S O U R C E _ I N F O                      --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2000-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 some useful utility subprograms that provide access
- --  to source code information known at compile time. These subprograms are
- --  intrinsic operations that provide information known to the compiler in
- --  a form that can be embedded into the source program for identification
- --  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
-    --  we mark intrinsic functions in a Pure unit as Pure, even though they are
-    --  imported.
-    --
-    --  Historical note: this used to be Pure, but that was when we marked all
-    --  intrinsics as not Pure, even in Pure units, so no problems arose.
- 
-    function File return String with
-      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.
- 
-    function Line return Positive with
-      Import, Convention => Intrinsic;
-    --  Return the current input line number. The result is considered to be a
-    --  static expression.
- 
-    function Source_Location return String with
-      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
-    --  current line number. In the event that instantiations are involved,
-    --  additional suffixes of the same form are appended after the separating
-    --  string " instantiated at ". The result is considered to be a static
-    --  string constant.
- 
-    function Enclosing_Entity return String with
-      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
-    --  declaration of the entity (casing and encoding conventions), and is
-    --  considered to be a static string constant. The name is fully qualified
-    --  using periods where possible (this is not always possible, notably in
-    --  the case of entities appearing in unnamed block statements.)
-    --
-    --  Note: if this function is used at the outer level of a generic package,
-    --  the string returned will be the name of the instance, not the generic
-    --  package itself. This is useful in identifying and logging information
-    --  from within generic templates.
- 
-    function Compilation_ISO_Date return String with
-      Import, Convention => Intrinsic;
-    --  Returns date of compilation as a static string "yyyy-mm-dd".
- 
-    function Compilation_Date return String with
-      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
-      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__.
- 
- end GNAT.Source_Info;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-spchge.adb gcc-8.1.0/gcc/ada/g-spchge.adb
*** gcc-7.3.0/gcc/ada/g-spchge.adb	Tue Feb 25 15:15:44 2014
--- gcc-8.1.0/gcc/ada/g-spchge.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,161 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --          G N A T . S P E L L I N G _ C H E C K E R _ G E N E R I C       --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 1998-2013, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 Compiler_Unit_Warning;
- 
- package body GNAT.Spelling_Checker_Generic is
- 
-    ------------------------
-    -- Is_Bad_Spelling_Of --
-    ------------------------
- 
-    function Is_Bad_Spelling_Of
-      (Found  : String_Type;
-       Expect : String_Type) return Boolean
-    is
-       FN : constant Natural := Found'Length;
-       FF : constant Natural := Found'First;
-       FL : constant Natural := Found'Last;
- 
-       EN : constant Natural := Expect'Length;
-       EF : constant Natural := Expect'First;
-       EL : constant Natural := Expect'Last;
- 
-       Letter_o : constant Char_Type := Char_Type'Val (Character'Pos ('o'));
-       Digit_0  : constant Char_Type := Char_Type'Val (Character'Pos ('0'));
-       Digit_9  : constant Char_Type := Char_Type'Val (Character'Pos ('9'));
- 
-    begin
-       --  If both strings null, then we consider this a match, but if one
-       --  is null and the other is not, then we definitely do not match
- 
-       if FN = 0 then
-          return (EN = 0);
- 
-       elsif EN = 0 then
-          return False;
- 
-          --  If first character does not match, then we consider that this is
-          --  definitely not a misspelling. An exception is when we expect a
-          --  letter O and found a zero.
- 
-       elsif Found (FF) /= Expect (EF)
-         and then (Found (FF) /= Digit_0 or else Expect (EF) /= Letter_o)
-       then
-          return False;
- 
-       --  Not a bad spelling if both strings are 1-2 characters long
- 
-       elsif FN < 3 and then EN < 3 then
-          return False;
- 
-       --  Lengths match. Execute loop to check for a single error, single
-       --  transposition or exact match (we only fall through this loop if
-       --  one of these three conditions is found).
- 
-       elsif FN = EN then
-          for J in 1 .. FN - 2 loop
-             if Expect (EF + J) /= Found (FF + J) then
- 
-                --  If both mismatched characters are digits, then we do
-                --  not consider it a misspelling (e.g. B345 is not a
-                --  misspelling of B346, it is something quite different)
- 
-                if Expect (EF + J) in Digit_0 .. Digit_9
-                  and then Found (FF + J) in Digit_0 .. Digit_9
-                then
-                   return False;
- 
-                elsif Expect (EF + J + 1) = Found (FF + J + 1)
-                  and then Expect (EF + J + 2 .. EL) = Found (FF + J + 2 .. FL)
-                then
-                   return True;
- 
-                elsif Expect (EF + J) = Found (FF + J + 1)
-                  and then Expect (EF + J + 1) = Found (FF + J)
-                  and then Expect (EF + J + 2 .. EL) = Found (FF + J + 2 .. FL)
-                then
-                   return True;
- 
-                else
-                   return False;
-                end if;
-             end if;
-          end loop;
- 
-          --  At last character. Test digit case as above, otherwise we
-          --  have a match since at most this last character fails to match.
- 
-          if Expect (EL) in Digit_0 .. Digit_9
-            and then Found (FL) in Digit_0 .. Digit_9
-            and then Expect (EL) /= Found (FL)
-          then
-             return False;
-          else
-             return True;
-          end if;
- 
-       --  Length is 1 too short. Execute loop to check for single deletion
- 
-       elsif FN = EN - 1 then
-          for J in 1 .. FN - 1 loop
-             if Found (FF + J) /= Expect (EF + J) then
-                return Found (FF + J .. FL) = Expect (EF + J + 1 .. EL);
-             end if;
-          end loop;
- 
-          --  If we fall through then the last character was missing, which
-          --  we consider to be a match (e.g. found xyz, expected xyza).
- 
-          return True;
- 
-       --  Length is 1 too long. Execute loop to check for single insertion
- 
-       elsif FN = EN + 1 then
-          for J in 1 .. EN - 1 loop
-             if Found (FF + J) /= Expect (EF + J) then
-                return Found (FF + J + 1 .. FL) = Expect (EF + J .. EL);
-             end if;
-          end loop;
- 
-          --  If we fall through then the last character was an additional
-          --  character, which is a match (e.g. found xyza, expected xyz).
- 
-          return True;
- 
-       --  Length is completely wrong
- 
-       else
-          return False;
-       end if;
-    end Is_Bad_Spelling_Of;
- 
- end GNAT.Spelling_Checker_Generic;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-spchge.ads gcc-8.1.0/gcc/ada/g-spchge.ads
*** gcc-7.3.0/gcc/ada/g-spchge.ads	Tue Feb 25 15:15:44 2014
--- gcc-8.1.0/gcc/ada/g-spchge.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,65 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --          G N A T . S P E L L I N G _ C H E C K E R _ G E N E R I C       --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 1998-2013, AdaCore                     --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Spelling checker
- 
- --  This package provides a utility generic routine for checking for bad
- --  spellings. This routine must be instantiated with an appropriate array
- --  element type, which must represent a character encoding in which the
- --  codes for ASCII characters in the range 16#20#..16#7F# have their normal
- --  expected encoding values (e.g. the Pos value 16#31# must be digit 1).
- 
- pragma Compiler_Unit_Warning;
- 
- package GNAT.Spelling_Checker_Generic is
-    pragma Pure;
- 
-    generic
-       type Char_Type is (<>);
-       --  See above for restrictions on what types can be used here
- 
-       type String_Type is array (Positive range <>) of Char_Type;
- 
-    function Is_Bad_Spelling_Of
-      (Found  : String_Type;
-       Expect : String_Type) return Boolean;
-    --  Determines if the string Found is a plausible misspelling of the string
-    --  Expect. Returns True for an exact match or a probably misspelling, False
-    --  if no near match is detected. This routine is case sensitive, so the
-    --  caller should fold both strings to get a case insensitive match if the
-    --  character encoding represents upper/lower case.
-    --
-    --  Note: the spec of this routine is deliberately rather vague. This
-    --  routine is the one used by GNAT itself to detect misspelled keywords
-    --  and identifiers, and is heuristically adjusted to be appropriate to
-    --  this usage. It will work well in any similar case of named entities.
- 
- end GNAT.Spelling_Checker_Generic;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-speche.adb gcc-8.1.0/gcc/ada/g-speche.adb
*** gcc-7.3.0/gcc/ada/g-speche.adb	Tue Feb 25 15:15:44 2014
--- gcc-8.1.0/gcc/ada/g-speche.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,51 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                 G N A T . S P E L L I N G _ C H E C K E R                --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 1998-2013, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 Compiler_Unit_Warning;
- 
- with GNAT.Spelling_Checker_Generic;
- 
- package body GNAT.Spelling_Checker is
- 
-    function IBS is new
-      GNAT.Spelling_Checker_Generic.Is_Bad_Spelling_Of
-        (Character, String);
- 
-    ------------------------
-    -- Is_Bad_Spelling_Of --
-    ------------------------
- 
-    function Is_Bad_Spelling_Of
-      (Found  : String;
-       Expect : String) return Boolean
-    renames IBS;
- 
- end GNAT.Spelling_Checker;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-speche.ads gcc-8.1.0/gcc/ada/g-speche.ads
*** gcc-7.3.0/gcc/ada/g-speche.ads	Tue Feb 25 15:15:44 2014
--- gcc-8.1.0/gcc/ada/g-speche.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,55 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                 G N A T . S P E L L I N G _ C H E C K E R                --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 1998-2013, AdaCore                     --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Spelling checker
- 
- --  This package provides a utility routine for checking for bad spellings
- --  for the case of String arguments.
- 
- pragma Compiler_Unit_Warning;
- 
- package GNAT.Spelling_Checker is
-    pragma Pure;
- 
-    function Is_Bad_Spelling_Of
-      (Found  : String;
-       Expect : String) return Boolean;
-    --  Determines if the string Found is a plausible misspelling of the string
-    --  Expect. Returns True for an exact match or a probably misspelling, False
-    --  if no near match is detected. This routine is case sensitive, so the
-    --  caller should fold both strings to get a case insensitive match.
-    --
-    --  Note: the spec of this routine is deliberately rather vague. It is used
-    --  by GNAT itself to detect misspelled keywords and identifiers, and is
-    --  heuristically adjusted to be appropriate to this usage. It will work
-    --  well in any similar case of named entities.
- 
- end GNAT.Spelling_Checker;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-spipat.adb gcc-8.1.0/gcc/ada/g-spipat.adb
*** gcc-7.3.0/gcc/ada/g-spipat.adb	Fri Jan 13 10:19:19 2017
--- gcc-8.1.0/gcc/ada/g-spipat.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,6482 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                G N A T . S P I T B O L . P A T T E R N S                 --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 1998-2016, AdaCore                     --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Note: the data structures and general approach used in this implementation
- --  are derived from the original MINIMAL sources for SPITBOL. The code is not
- --  a direct translation, but the approach is followed closely. In particular,
- --  we use the one stack approach developed in the SPITBOL implementation.
- 
- with Ada.Strings.Unbounded.Aux; use Ada.Strings.Unbounded.Aux;
- 
- with GNAT.Debug_Utilities;      use GNAT.Debug_Utilities;
- 
- with System;                    use System;
- 
- with Ada.Unchecked_Conversion;
- with Ada.Unchecked_Deallocation;
- 
- package body GNAT.Spitbol.Patterns is
- 
-    ------------------------
-    -- Internal Debugging --
-    ------------------------
- 
-    Internal_Debug : constant Boolean := False;
-    --  Set this flag to True to activate some built-in debugging traceback
-    --  These are all lines output with PutD and Put_LineD.
- 
-    procedure New_LineD;
-    pragma Inline (New_LineD);
-    --  Output new blank line with New_Line if Internal_Debug is True
- 
-    procedure PutD (Str : String);
-    pragma Inline (PutD);
-    --  Output string with Put if Internal_Debug is True
- 
-    procedure Put_LineD (Str : String);
-    pragma Inline (Put_LineD);
-    --  Output string with Put_Line if Internal_Debug is True
- 
-    -----------------------------
-    -- Local Type Declarations --
-    -----------------------------
- 
-    subtype String_Ptr is Ada.Strings.Unbounded.String_Access;
-    subtype File_Ptr   is Ada.Text_IO.File_Access;
- 
-    function To_Address is new Ada.Unchecked_Conversion (PE_Ptr, Address);
-    --  Used only for debugging output purposes
- 
-    subtype AFC is Ada.Finalization.Controlled;
- 
-    N : constant PE_Ptr := null;
-    --  Shorthand used to initialize Copy fields to null
- 
-    type Natural_Ptr   is access all Natural;
-    type Pattern_Ptr   is access all Pattern;
- 
-    --------------------------------------------------
-    -- Description of Algorithm and Data Structures --
-    --------------------------------------------------
- 
-    --  A pattern structure is represented as a linked graph of nodes
-    --  with the following structure:
- 
-    --      +------------------------------------+
-    --      I                Pcode               I
-    --      +------------------------------------+
-    --      I                Index               I
-    --      +------------------------------------+
-    --      I                Pthen               I
-    --      +------------------------------------+
-    --      I             parameter(s)           I
-    --      +------------------------------------+
- 
-    --     Pcode is a code value indicating the type of the pattern node. This
-    --     code is used both as the discriminant value for the record, and as
-    --     the case index in the main match routine that branches to the proper
-    --     match code for the given element.
- 
-    --     Index is a serial index number. The use of these serial index
-    --     numbers is described in a separate section.
- 
-    --     Pthen is a pointer to the successor node, i.e the node to be matched
-    --     if the attempt to match the node succeeds. If this is the last node
-    --     of the pattern to be matched, then Pthen points to a dummy node
-    --     of kind PC_EOP (end of pattern), which initializes pattern exit.
- 
-    --     The parameter or parameters are present for certain node types,
-    --     and the type varies with the pattern code.
- 
-    type Pattern_Code is (
-       PC_Arb_Y,
-       PC_Assign,
-       PC_Bal,
-       PC_BreakX_X,
-       PC_Cancel,
-       PC_EOP,
-       PC_Fail,
-       PC_Fence,
-       PC_Fence_X,
-       PC_Fence_Y,
-       PC_R_Enter,
-       PC_R_Remove,
-       PC_R_Restore,
-       PC_Rest,
-       PC_Succeed,
-       PC_Unanchored,
- 
-       PC_Alt,
-       PC_Arb_X,
-       PC_Arbno_S,
-       PC_Arbno_X,
- 
-       PC_Rpat,
- 
-       PC_Pred_Func,
- 
-       PC_Assign_Imm,
-       PC_Assign_OnM,
-       PC_Any_VP,
-       PC_Break_VP,
-       PC_BreakX_VP,
-       PC_NotAny_VP,
-       PC_NSpan_VP,
-       PC_Span_VP,
-       PC_String_VP,
- 
-       PC_Write_Imm,
-       PC_Write_OnM,
- 
-       PC_Null,
-       PC_String,
- 
-       PC_String_2,
-       PC_String_3,
-       PC_String_4,
-       PC_String_5,
-       PC_String_6,
- 
-       PC_Setcur,
- 
-       PC_Any_CH,
-       PC_Break_CH,
-       PC_BreakX_CH,
-       PC_Char,
-       PC_NotAny_CH,
-       PC_NSpan_CH,
-       PC_Span_CH,
- 
-       PC_Any_CS,
-       PC_Break_CS,
-       PC_BreakX_CS,
-       PC_NotAny_CS,
-       PC_NSpan_CS,
-       PC_Span_CS,
- 
-       PC_Arbno_Y,
-       PC_Len_Nat,
-       PC_Pos_Nat,
-       PC_RPos_Nat,
-       PC_RTab_Nat,
-       PC_Tab_Nat,
- 
-       PC_Pos_NF,
-       PC_Len_NF,
-       PC_RPos_NF,
-       PC_RTab_NF,
-       PC_Tab_NF,
- 
-       PC_Pos_NP,
-       PC_Len_NP,
-       PC_RPos_NP,
-       PC_RTab_NP,
-       PC_Tab_NP,
- 
-       PC_Any_VF,
-       PC_Break_VF,
-       PC_BreakX_VF,
-       PC_NotAny_VF,
-       PC_NSpan_VF,
-       PC_Span_VF,
-       PC_String_VF);
- 
-    type IndexT is range 0 .. +(2 **15 - 1);
- 
-    type PE (Pcode : Pattern_Code) is record
- 
-       Index : IndexT;
-       --  Serial index number of pattern element within pattern
- 
-       Pthen : PE_Ptr;
-       --  Successor element, to be matched after this one
- 
-       case Pcode is
-          when PC_Arb_Y
-             | PC_Assign
-             | PC_Bal
-             | PC_BreakX_X
-             | PC_Cancel
-             | PC_EOP
-             | PC_Fail
-             | PC_Fence
-             | PC_Fence_X
-             | PC_Fence_Y
-             | PC_Null
-             | PC_R_Enter
-             | PC_R_Remove
-             | PC_R_Restore
-             | PC_Rest
-             | PC_Succeed
-             | PC_Unanchored
-          =>
-             null;
- 
-          when PC_Alt
-             | PC_Arb_X
-             | PC_Arbno_S
-             | PC_Arbno_X
-          =>
-             Alt : PE_Ptr;
- 
-          when PC_Rpat =>
-             PP : Pattern_Ptr;
- 
-          when PC_Pred_Func =>
-             BF : Boolean_Func;
- 
-          when PC_Assign_Imm
-             | PC_Assign_OnM
-             | PC_Any_VP
-             | PC_Break_VP
-             | PC_BreakX_VP
-             | PC_NotAny_VP
-             | PC_NSpan_VP
-             | PC_Span_VP
-             | PC_String_VP
-          =>
-             VP : VString_Ptr;
- 
-          when PC_Write_Imm
-             | PC_Write_OnM
-          =>
-             FP : File_Ptr;
- 
-          when PC_String =>
-             Str : String_Ptr;
- 
-          when PC_String_2 =>
-             Str2 : String (1 .. 2);
- 
-          when PC_String_3 =>
-             Str3 : String (1 .. 3);
- 
-          when PC_String_4 =>
-             Str4 : String (1 .. 4);
- 
-          when PC_String_5 =>
-             Str5 : String (1 .. 5);
- 
-          when PC_String_6 =>
-             Str6 : String (1 .. 6);
- 
-          when PC_Setcur =>
-             Var : Natural_Ptr;
- 
-          when PC_Any_CH
-             | PC_Break_CH
-             | PC_BreakX_CH
-             | PC_Char
-             | PC_NotAny_CH
-             | PC_NSpan_CH
-             | PC_Span_CH
-          =>
-             Char : Character;
- 
-          when PC_Any_CS
-             | PC_Break_CS
-             | PC_BreakX_CS
-             | PC_NotAny_CS
-             | PC_NSpan_CS
-             | PC_Span_CS
-          =>
-             CS : Character_Set;
- 
-          when PC_Arbno_Y
-             | PC_Len_Nat
-             | PC_Pos_Nat
-             | PC_RPos_Nat
-             | PC_RTab_Nat
-             | PC_Tab_Nat
-          =>
-             Nat : Natural;
- 
-          when PC_Pos_NF
-             | PC_Len_NF
-             | PC_RPos_NF
-             | PC_RTab_NF
-             | PC_Tab_NF
-          =>
-             NF : Natural_Func;
- 
-          when PC_Pos_NP
-             | PC_Len_NP
-             | PC_RPos_NP
-             | PC_RTab_NP
-             | PC_Tab_NP
-          =>
-             NP : Natural_Ptr;
- 
-          when PC_Any_VF
-             | PC_Break_VF
-             | PC_BreakX_VF
-             | PC_NotAny_VF
-             | PC_NSpan_VF
-             | PC_Span_VF
-             | PC_String_VF
-          =>
-             VF : VString_Func;
-       end case;
-    end record;
- 
-    subtype PC_Has_Alt is Pattern_Code range PC_Alt .. PC_Arbno_X;
-    --  Range of pattern codes that has an Alt field. This is used in the
-    --  recursive traversals, since these links must be followed.
- 
-    EOP_Element : aliased constant PE := (PC_EOP, 0, N);
-    --  This is the end of pattern element, and is thus the representation of
-    --  a null pattern. It has a zero index element since it is never placed
-    --  inside a pattern. Furthermore it does not need a successor, since it
-    --  marks the end of the pattern, so that no more successors are needed.
- 
-    EOP : constant PE_Ptr := EOP_Element'Unrestricted_Access;
-    --  This is the end of pattern pointer, that is used in the Pthen pointer
-    --  of other nodes to signal end of pattern.
- 
-    --  The following array is used to determine if a pattern used as an
-    --  argument for Arbno is eligible for treatment using the simple Arbno
-    --  structure (i.e. it is a pattern that is guaranteed to match at least
-    --  one character on success, and not to make any entries on the stack.
- 
-    OK_For_Simple_Arbno : constant array (Pattern_Code) of Boolean :=
-      (PC_Any_CS    |
-       PC_Any_CH    |
-       PC_Any_VF    |
-       PC_Any_VP    |
-       PC_Char      |
-       PC_Len_Nat   |
-       PC_NotAny_CS |
-       PC_NotAny_CH |
-       PC_NotAny_VF |
-       PC_NotAny_VP |
-       PC_Span_CS   |
-       PC_Span_CH   |
-       PC_Span_VF   |
-       PC_Span_VP   |
-       PC_String    |
-       PC_String_2  |
-       PC_String_3  |
-       PC_String_4  |
-       PC_String_5  |
-       PC_String_6   => True,
-       others        => False);
- 
-    -------------------------------
-    -- The Pattern History Stack --
-    -------------------------------
- 
-    --  The pattern history stack is used for controlling backtracking when
-    --  a match fails. The idea is to stack entries that give a cursor value
-    --  to be restored, and a node to be reestablished as the current node to
-    --  attempt an appropriate rematch operation. The processing for a pattern
-    --  element that has rematch alternatives pushes an appropriate entry or
-    --  entry on to the stack, and the proceeds. If a match fails at any point,
-    --  the top element of the stack is popped off, resetting the cursor and
-    --  the match continues by accessing the node stored with this entry.
- 
-    type Stack_Entry is record
- 
-       Cursor : Integer;
-       --  Saved cursor value that is restored when this entry is popped
-       --  from the stack if a match attempt fails. Occasionally, this
-       --  field is used to store a history stack pointer instead of a
-       --  cursor. Such cases are noted in the documentation and the value
-       --  stored is negative since stack pointer values are always negative.
- 
-       Node : PE_Ptr;
-       --  This pattern element reference is reestablished as the current
-       --  Node to be matched (which will attempt an appropriate rematch).
- 
-    end record;
- 
-    subtype Stack_Range is Integer range -Stack_Size .. -1;
- 
-    type Stack_Type is array (Stack_Range) of Stack_Entry;
-    --  The type used for a history stack. The actual instance of the stack
-    --  is declared as a local variable in the Match routine, to properly
-    --  handle recursive calls to Match. All stack pointer values are negative
-    --  to distinguish them from normal cursor values.
- 
-    --  Note: the pattern matching stack is used only to handle backtracking.
-    --  If no backtracking occurs, its entries are never accessed, and never
-    --  popped off, and in particular it is normal for a successful match
-    --  to terminate with entries on the stack that are simply discarded.
- 
-    --  Note: in subsequent diagrams of the stack, we always place element
-    --  zero (the deepest element) at the top of the page, then build the
-    --  stack down on the page with the most recent (top of stack) element
-    --  being the bottom-most entry on the page.
- 
-    --  Stack checking is handled by labeling every pattern with the maximum
-    --  number of stack entries that are required, so a single check at the
-    --  start of matching the pattern suffices. There are two exceptions.
- 
-    --  First, the count does not include entries for recursive pattern
-    --  references. Such recursions must therefore perform a specific
-    --  stack check with respect to the number of stack entries required
-    --  by the recursive pattern that is accessed and the amount of stack
-    --  that remains unused.
- 
-    --  Second, the count includes only one iteration of an Arbno pattern,
-    --  so a specific check must be made on subsequent iterations that there
-    --  is still enough stack space left. The Arbno node has a field that
-    --  records the number of stack entries required by its argument for
-    --  this purpose.
- 
-    ---------------------------------------------------
-    -- Use of Serial Index Field in Pattern Elements --
-    ---------------------------------------------------
- 
-    --  The serial index numbers for the pattern elements are assigned as
-    --  a pattern is constructed from its constituent elements. Note that there
-    --  is never any sharing of pattern elements between patterns (copies are
-    --  always made), so the serial index numbers are unique to a particular
-    --  pattern as referenced from the P field of a value of type Pattern.
- 
-    --  The index numbers meet three separate invariants, which are used for
-    --  various purposes as described in this section.
- 
-    --  First, the numbers uniquely identify the pattern elements within a
-    --  pattern. If Num is the number of elements in a given pattern, then
-    --  the serial index numbers for the elements of this pattern will range
-    --  from 1 .. Num, so that each element has a separate value.
- 
-    --  The purpose of this assignment is to provide a convenient auxiliary
-    --  data structure mechanism during operations which must traverse a
-    --  pattern (e.g. copy and finalization processing). Once constructed
-    --  patterns are strictly read only. This is necessary to allow sharing
-    --  of patterns between tasks. This means that we cannot go marking the
-    --  pattern (e.g. with a visited bit). Instead we construct a separate
-    --  vector that contains the necessary information indexed by the Index
-    --  values in the pattern elements. For this purpose the only requirement
-    --  is that they be uniquely assigned.
- 
-    --  Second, the pattern element referenced directly, i.e. the leading
-    --  pattern element, is always the maximum numbered element and therefore
-    --  indicates the total number of elements in the pattern. More precisely,
-    --  the element referenced by the P field of a pattern value, or the
-    --  element returned by any of the internal pattern construction routines
-    --  in the body (that return a value of type PE_Ptr) always is this
-    --  maximum element,
- 
-    --  The purpose of this requirement is to allow an immediate determination
-    --  of the number of pattern elements within a pattern. This is used to
-    --  properly size the vectors used to contain auxiliary information for
-    --  traversal as described above.
- 
-    --  Third, as compound pattern structures are constructed, the way in which
-    --  constituent parts of the pattern are constructed is stylized. This is
-    --  an automatic consequence of the way that these compound structures
-    --  are constructed, and basically what we are doing is simply documenting
-    --  and specifying the natural result of the pattern construction. The
-    --  section describing compound pattern structures gives details of the
-    --  numbering of each compound pattern structure.
- 
-    --  The purpose of specifying the stylized numbering structures for the
-    --  compound patterns is to help simplify the processing in the Image
-    --  function, since it eases the task of retrieving the original recursive
-    --  structure of the pattern from the flat graph structure of elements.
-    --  This use in the Image function is the only point at which the code
-    --  makes use of the stylized structures.
- 
-    type Ref_Array is array (IndexT range <>) of PE_Ptr;
-    --  This type is used to build an array whose N'th entry references the
-    --  element in a pattern whose Index value is N. See Build_Ref_Array.
- 
-    procedure Build_Ref_Array (E : PE_Ptr; RA : out Ref_Array);
-    --  Given a pattern element which is the leading element of a pattern
-    --  structure, and a Ref_Array with bounds 1 .. E.Index, fills in the
-    --  Ref_Array so that its N'th entry references the element of the
-    --  referenced pattern whose Index value is N.
- 
-    -------------------------------
-    -- Recursive Pattern Matches --
-    -------------------------------
- 
-    --  The pattern primitive (+P) where P is a Pattern_Ptr or Pattern_Func
-    --  causes a recursive pattern match. This cannot be handled by an actual
-    --  recursive call to the outer level Match routine, since this would not
-    --  allow for possible backtracking into the region matched by the inner
-    --  pattern. Indeed this is the classical clash between recursion and
-    --  backtracking, and a simple recursive stack structure does not suffice.
- 
-    --  This section describes how this recursion and the possible associated
-    --  backtracking is handled. We still use a single stack, but we establish
-    --  the concept of nested regions on this stack, each of which has a stack
-    --  base value pointing to the deepest stack entry of the region. The base
-    --  value for the outer level is zero.
- 
-    --  When a recursive match is established, two special stack entries are
-    --  made. The first entry is used to save the original node that starts
-    --  the recursive match. This is saved so that the successor field of
-    --  this node is accessible at the end of the match, but it is never
-    --  popped and executed.
- 
-    --  The second entry corresponds to a standard new region action. A
-    --  PC_R_Remove node is stacked, whose cursor field is used to store
-    --  the outer stack base, and the stack base is reset to point to
-    --  this PC_R_Remove node. Then the recursive pattern is matched and
-    --  it can make history stack entries in the normal matter, so now
-    --  the stack looks like:
- 
-    --     (stack entries made by outer level)
- 
-    --     (Special entry, node is (+P) successor
-    --      cursor entry is not used)
- 
-    --     (PC_R_Remove entry, "cursor" value is (negative)     <-- Stack base
-    --      saved base value for the enclosing region)
- 
-    --     (stack entries made by inner level)
- 
-    --  If a subsequent failure occurs and pops the PC_R_Remove node, it
-    --  removes itself and the special entry immediately underneath it,
-    --  restores the stack base value for the enclosing region, and then
-    --  again signals failure to look for alternatives that were stacked
-    --  before the recursion was initiated.
- 
-    --  Now we need to consider what happens if the inner pattern succeeds, as
-    --  signalled by accessing the special PC_EOP pattern primitive. First we
-    --  recognize the nested case by looking at the Base value. If this Base
-    --  value is Stack'First, then the entire match has succeeded, but if the
-    --  base value is greater than Stack'First, then we have successfully
-    --  matched an inner pattern, and processing continues at the outer level.
- 
-    --  There are two cases. The simple case is when the inner pattern has made
-    --  no stack entries, as recognized by the fact that the current stack
-    --  pointer is equal to the current base value. In this case it is fine to
-    --  remove all trace of the recursion by restoring the outer base value and
-    --  using the special entry to find the appropriate successor node.
- 
-    --  The more complex case arises when the inner match does make stack
-    --  entries. In this case, the PC_EOP processing stacks a special entry
-    --  whose cursor value saves the saved inner base value (the one that
-    --  references the corresponding PC_R_Remove value), and whose node
-    --  pointer references a PC_R_Restore node, so the stack looks like:
- 
-    --     (stack entries made by outer level)
- 
-    --     (Special entry, node is (+P) successor,
-    --      cursor entry is not used)
- 
-    --     (PC_R_Remove entry, "cursor" value is (negative)
-    --      saved base value for the enclosing region)
- 
-    --     (stack entries made by inner level)
- 
-    --     (PC_Region_Replace entry, "cursor" value is (negative)
-    --      stack pointer value referencing the PC_R_Remove entry).
- 
-    --  If the entire match succeeds, then these stack entries are, as usual,
-    --  ignored and abandoned. If on the other hand a subsequent failure
-    --  causes the PC_Region_Replace entry to be popped, it restores the
-    --  inner base value from its saved "cursor" value and then fails again.
-    --  Note that it is OK that the cursor is temporarily clobbered by this
-    --  pop, since the second failure will reestablish a proper cursor value.
- 
-    ---------------------------------
-    -- Compound Pattern Structures --
-    ---------------------------------
- 
-    --  This section discusses the compound structures used to represent
-    --  constructed patterns. It shows the graph structures of pattern
-    --  elements that are constructed, and in the case of patterns that
-    --  provide backtracking possibilities, describes how the history
-    --  stack is used to control the backtracking. Finally, it notes the
-    --  way in which the Index numbers are assigned to the structure.
- 
-    --  In all diagrams, solid lines (built with minus signs or vertical
-    --  bars, represent successor pointers (Pthen fields) with > or V used
-    --  to indicate the direction of the pointer. The initial node of the
-    --  structure is in the upper left of the diagram. A dotted line is an
-    --  alternative pointer from the element above it to the element below
-    --  it. See individual sections for details on how alternatives are used.
- 
-       -------------------
-       -- Concatenation --
-       -------------------
- 
-       --  In the pattern structures listed in this section, a line that looks
-       --  like ----> with nothing to the right indicates an end of pattern
-       --  (EOP) pointer that represents the end of the match.
- 
-       --  When a pattern concatenation (L & R) occurs, the resulting structure
-       --  is obtained by finding all such EOP pointers in L, and replacing
-       --  them to point to R. This is the most important flattening that
-       --  occurs in constructing a pattern, and it means that the pattern
-       --  matching circuitry does not have to keep track of the structure
-       --  of a pattern with respect to concatenation, since the appropriate
-       --  successor is always at hand.
- 
-       --  Concatenation itself generates no additional possibilities for
-       --  backtracking, but the constituent patterns of the concatenated
-       --  structure will make stack entries as usual. The maximum amount
-       --  of stack required by the structure is thus simply the sum of the
-       --  maximums required by L and R.
- 
-       --  The index numbering of a concatenation structure works by leaving
-       --  the numbering of the right hand pattern, R, unchanged and adjusting
-       --  the numbers in the left hand pattern, L up by the count of elements
-       --  in R. This ensures that the maximum numbered element is the leading
-       --  element as required (given that it was the leading element in L).
- 
-       -----------------
-       -- Alternation --
-       -----------------
- 
-       --  A pattern (L or R) constructs the structure:
- 
-       --    +---+     +---+
-       --    | A |---->| L |---->
-       --    +---+     +---+
-       --      .
-       --      .
-       --    +---+
-       --    | R |---->
-       --    +---+
- 
-       --  The A element here is a PC_Alt node, and the dotted line represents
-       --  the contents of the Alt field. When the PC_Alt element is matched,
-       --  it stacks a pointer to the leading element of R on the history stack
-       --  so that on subsequent failure, a match of R is attempted.
- 
-       --  The A node is the highest numbered element in the pattern. The
-       --  original index numbers of R are unchanged, but the index numbers
-       --  of the L pattern are adjusted up by the count of elements in R.
- 
-       --  Note that the difference between the index of the L leading element
-       --  the index of the R leading element (after building the alt structure)
-       --  indicates the number of nodes in L, and this is true even after the
-       --  structure is incorporated into some larger structure. For example,
-       --  if the A node has index 16, and L has index 15 and R has index
-       --  5, then we know that L has 10 (15-5) elements in it.
- 
-       --  Suppose that we now concatenate this structure to another pattern
-       --  with 9 elements in it. We will now have the A node with an index
-       --  of 25, L with an index of 24 and R with an index of 14. We still
-       --  know that L has 10 (24-14) elements in it, numbered 15-24, and
-       --  consequently the successor of the alternation structure has an
-       --  index with a value less than 15. This is used in Image to figure
-       --  out the original recursive structure of a pattern.
- 
-       --  To clarify the interaction of the alternation and concatenation
-       --  structures, here is a more complex example of the structure built
-       --  for the pattern:
- 
-       --      (V or W or X) (Y or Z)
- 
-       --  where A,B,C,D,E are all single element patterns:
- 
-       --    +---+     +---+       +---+     +---+
-       --    I A I---->I V I---+-->I A I---->I Y I---->
-       --    +---+     +---+   I   +---+     +---+
-       --      .               I     .
-       --      .               I     .
-       --    +---+     +---+   I   +---+
-       --    I A I---->I W I-->I   I Z I---->
-       --    +---+     +---+   I   +---+
-       --      .               I
-       --      .               I
-       --    +---+             I
-       --    I X I------------>+
-       --    +---+
- 
-       --  The numbering of the nodes would be as follows:
- 
-       --    +---+     +---+       +---+     +---+
-       --    I 8 I---->I 7 I---+-->I 3 I---->I 2 I---->
-       --    +---+     +---+   I   +---+     +---+
-       --      .               I     .
-       --      .               I     .
-       --    +---+     +---+   I   +---+
-       --    I 6 I---->I 5 I-->I   I 1 I---->
-       --    +---+     +---+   I   +---+
-       --      .               I
-       --      .               I
-       --    +---+             I
-       --    I 4 I------------>+
-       --    +---+
- 
-       --  Note: The above structure actually corresponds to
- 
-       --    (A or (B or C)) (D or E)
- 
-       --  rather than
- 
-       --    ((A or B) or C) (D or E)
- 
-       --  which is the more natural interpretation, but in fact alternation
-       --  is associative, and the construction of an alternative changes the
-       --  left grouped pattern to the right grouped pattern in any case, so
-       --  that the Image function produces a more natural looking output.
- 
-       ---------
-       -- Arb --
-       ---------
- 
-       --  An Arb pattern builds the structure
- 
-       --    +---+
-       --    | X |---->
-       --    +---+
-       --      .
-       --      .
-       --    +---+
-       --    | Y |---->
-       --    +---+
- 
-       --  The X node is a PC_Arb_X node, which matches null, and stacks a
-       --  pointer to Y node, which is the PC_Arb_Y node that matches one
-       --  extra character and restacks itself.
- 
-       --  The PC_Arb_X node is numbered 2, and the PC_Arb_Y node is 1
- 
-       -------------------------
-       -- Arbno (simple case) --
-       -------------------------
- 
-       --  The simple form of Arbno can be used where the pattern always
-       --  matches at least one character if it succeeds, and it is known
-       --  not to make any history stack entries. In this case, Arbno (P)
-       --  can construct the following structure:
- 
-       --      +-------------+
-       --      |             ^
-       --      V             |
-       --    +---+           |
-       --    | S |---->      |
-       --    +---+           |
-       --      .             |
-       --      .             |
-       --    +---+           |
-       --    | P |---------->+
-       --    +---+
- 
-       --  The S (PC_Arbno_S) node matches null stacking a pointer to the
-       --  pattern P. If a subsequent failure causes P to be matched and
-       --  this match succeeds, then node A gets restacked to try another
-       --  instance if needed by a subsequent failure.
- 
-       --  The node numbering of the constituent pattern P is not affected.
-       --  The S node has a node number of P.Index + 1.
- 
-       --------------------------
-       -- Arbno (complex case) --
-       --------------------------
- 
-       --  A call to Arbno (P), where P can match null (or at least is not
-       --  known to require a non-null string) and/or P requires pattern stack
-       --  entries, constructs the following structure:
- 
-       --      +--------------------------+
-       --      |                          ^
-       --      V                          |
-       --    +---+                        |
-       --    | X |---->                   |
-       --    +---+                        |
-       --      .                          |
-       --      .                          |
-       --    +---+     +---+     +---+    |
-       --    | E |---->| P |---->| Y |--->+
-       --    +---+     +---+     +---+
- 
-       --  The node X (PC_Arbno_X) matches null, stacking a pointer to the
-       --  E-P-X structure used to match one Arbno instance.
- 
-       --  Here E is the PC_R_Enter node which matches null and creates two
-       --  stack entries. The first is a special entry whose node field is
-       --  not used at all, and whose cursor field has the initial cursor.
- 
-       --  The second entry corresponds to a standard new region action. A
-       --  PC_R_Remove node is stacked, whose cursor field is used to store
-       --  the outer stack base, and the stack base is reset to point to
-       --  this PC_R_Remove node. Then the pattern P is matched, and it can
-       --  make history stack entries in the normal manner, so now the stack
-       --  looks like:
- 
-       --     (stack entries made before assign pattern)
- 
-       --     (Special entry, node field not used,
-       --      used only to save initial cursor)
- 
-       --     (PC_R_Remove entry, "cursor" value is (negative)  <-- Stack Base
-       --      saved base value for the enclosing region)
- 
-       --     (stack entries made by matching P)
- 
-       --  If the match of P fails, then the PC_R_Remove entry is popped and
-       --  it removes both itself and the special entry underneath it,
-       --  restores the outer stack base, and signals failure.
- 
-       --  If the match of P succeeds, then node Y, the PC_Arbno_Y node, pops
-       --  the inner region. There are two possibilities. If matching P left
-       --  no stack entries, then all traces of the inner region can be removed.
-       --  If there are stack entries, then we push an PC_Region_Replace stack
-       --  entry whose "cursor" value is the inner stack base value, and then
-       --  restore the outer stack base value, so the stack looks like:
- 
-       --     (stack entries made before assign pattern)
- 
-       --     (Special entry, node field not used,
-       --      used only to save initial cursor)
- 
-       --     (PC_R_Remove entry, "cursor" value is (negative)
-       --      saved base value for the enclosing region)
- 
-       --     (stack entries made by matching P)
- 
-       --     (PC_Region_Replace entry, "cursor" value is (negative)
-       --      stack pointer value referencing the PC_R_Remove entry).
- 
-       --  Now that we have matched another instance of the Arbno pattern,
-       --  we need to move to the successor. There are two cases. If the
-       --  Arbno pattern matched null, then there is no point in seeking
-       --  alternatives, since we would just match a whole bunch of nulls.
-       --  In this case we look through the alternative node, and move
-       --  directly to its successor (i.e. the successor of the Arbno
-       --  pattern). If on the other hand a non-null string was matched,
-       --  we simply follow the successor to the alternative node, which
-       --  sets up for another possible match of the Arbno pattern.
- 
-       --  As noted in the section on stack checking, the stack count (and
-       --  hence the stack check) for a pattern includes only one iteration
-       --  of the Arbno pattern. To make sure that multiple iterations do not
-       --  overflow the stack, the Arbno node saves the stack count required
-       --  by a single iteration, and the Concat function increments this to
-       --  include stack entries required by any successor. The PC_Arbno_Y
-       --  node uses this count to ensure that sufficient stack remains
-       --  before proceeding after matching each new instance.
- 
-       --  The node numbering of the constituent pattern P is not affected.
-       --  Where N is the number of nodes in P, the Y node is numbered N + 1,
-       --  the E node is N + 2, and the X node is N + 3.
- 
-       ----------------------
-       -- Assign Immediate --
-       ----------------------
- 
-       --  Immediate assignment (P * V) constructs the following structure
- 
-       --    +---+     +---+     +---+
-       --    | E |---->| P |---->| A |---->
-       --    +---+     +---+     +---+
- 
-       --  Here E is the PC_R_Enter node which matches null and creates two
-       --  stack entries. The first is a special entry whose node field is
-       --  not used at all, and whose cursor field has the initial cursor.
- 
-       --  The second entry corresponds to a standard new region action. A
-       --  PC_R_Remove node is stacked, whose cursor field is used to store
-       --  the outer stack base, and the stack base is reset to point to
-       --  this PC_R_Remove node. Then the pattern P is matched, and it can
-       --  make history stack entries in the normal manner, so now the stack
-       --  looks like:
- 
-       --     (stack entries made before assign pattern)
- 
-       --     (Special entry, node field not used,
-       --      used only to save initial cursor)
- 
-       --     (PC_R_Remove entry, "cursor" value is (negative)  <-- Stack Base
-       --      saved base value for the enclosing region)
- 
-       --     (stack entries made by matching P)
- 
-       --  If the match of P fails, then the PC_R_Remove entry is popped
-       --  and it removes both itself and the special entry underneath it,
-       --  restores the outer stack base, and signals failure.
- 
-       --  If the match of P succeeds, then node A, which is the actual
-       --  PC_Assign_Imm node, executes the assignment (using the stack
-       --  base to locate the entry with the saved starting cursor value),
-       --  and the pops the inner region. There are two possibilities, if
-       --  matching P left no stack entries, then all traces of the inner
-       --  region can be removed. If there are stack entries, then we push
-       --  an PC_Region_Replace stack entry whose "cursor" value is the
-       --  inner stack base value, and then restore the outer stack base
-       --  value, so the stack looks like:
- 
-       --     (stack entries made before assign pattern)
- 
-       --     (Special entry, node field not used,
-       --      used only to save initial cursor)
- 
-       --     (PC_R_Remove entry, "cursor" value is (negative)
-       --      saved base value for the enclosing region)
- 
-       --     (stack entries made by matching P)
- 
-       --     (PC_Region_Replace entry, "cursor" value is the (negative)
-       --      stack pointer value referencing the PC_R_Remove entry).
- 
-       --  If a subsequent failure occurs, the PC_Region_Replace node restores
-       --  the inner stack base value and signals failure to explore rematches
-       --  of the pattern P.
- 
-       --  The node numbering of the constituent pattern P is not affected.
-       --  Where N is the number of nodes in P, the A node is numbered N + 1,
-       --  and the E node is N + 2.
- 
-       ---------------------
-       -- Assign On Match --
-       ---------------------
- 
-       --  The assign on match (**) pattern is quite similar to the assign
-       --  immediate pattern, except that the actual assignment has to be
-       --  delayed. The following structure is constructed:
- 
-       --    +---+     +---+     +---+
-       --    | E |---->| P |---->| A |---->
-       --    +---+     +---+     +---+
- 
-       --  The operation of this pattern is identical to that described above
-       --  for deferred assignment, up to the point where P has been matched.
- 
-       --  The A node, which is the PC_Assign_OnM node first pushes a
-       --  PC_Assign node onto the history stack. This node saves the ending
-       --  cursor and acts as a flag for the final assignment, as further
-       --  described below.
- 
-       --  It then stores a pointer to itself in the special entry node field.
-       --  This was otherwise unused, and is now used to retrieve the address
-       --  of the variable to be assigned at the end of the pattern.
- 
-       --  After that the inner region is terminated in the usual manner,
-       --  by stacking a PC_R_Restore entry as described for the assign
-       --  immediate case. Note that the optimization of completely
-       --  removing the inner region does not happen in this case, since
-       --  we have at least one stack entry (the PC_Assign one we just made).
-       --  The stack now looks like:
- 
-       --     (stack entries made before assign pattern)
- 
-       --     (Special entry, node points to copy of
-       --      the PC_Assign_OnM node, and the
-       --      cursor field saves the initial cursor).
- 
-       --     (PC_R_Remove entry, "cursor" value is (negative)
-       --      saved base value for the enclosing region)
- 
-       --     (stack entries made by matching P)
- 
-       --     (PC_Assign entry, saves final cursor)
- 
-       --     (PC_Region_Replace entry, "cursor" value is (negative)
-       --      stack pointer value referencing the PC_R_Remove entry).
- 
-       --  If a subsequent failure causes the PC_Assign node to execute it
-       --  simply removes itself and propagates the failure.
- 
-       --  If the match succeeds, then the history stack is scanned for
-       --  PC_Assign nodes, and the assignments are executed (examination
-       --  of the above diagram will show that all the necessary data is
-       --  at hand for the assignment).
- 
-       --  To optimize the common case where no assign-on-match operations
-       --  are present, a global flag Assign_OnM is maintained which is
-       --  initialize to False, and gets set True as part of the execution
-       --  of the PC_Assign_OnM node. The scan of the history stack for
-       --  PC_Assign entries is done only if this flag is set.
- 
-       --  The node numbering of the constituent pattern P is not affected.
-       --  Where N is the number of nodes in P, the A node is numbered N + 1,
-       --  and the E node is N + 2.
- 
-       ---------
-       -- Bal --
-       ---------
- 
-       --  Bal builds a single node:
- 
-       --    +---+
-       --    | B |---->
-       --    +---+
- 
-       --  The node B is the PC_Bal node which matches a parentheses balanced
-       --  string, starting at the current cursor position. It then updates
-       --  the cursor past this matched string, and stacks a pointer to itself
-       --  with this updated cursor value on the history stack, to extend the
-       --  matched string on a subsequent failure.
- 
-       --  Since this is a single node it is numbered 1 (the reason we include
-       --  it in the compound patterns section is that it backtracks).
- 
-       ------------
-       -- BreakX --
-       ------------
- 
-       --  BreakX builds the structure
- 
-       --    +---+     +---+
-       --    | B |---->| A |---->
-       --    +---+     +---+
-       --      ^         .
-       --      |         .
-       --      |       +---+
-       --      +<------| X |
-       --              +---+
- 
-       --  Here the B node is the BreakX_xx node that performs a normal Break
-       --  function. The A node is an alternative (PC_Alt) node that matches
-       --  null, but stacks a pointer to node X (the PC_BreakX_X node) which
-       --  extends the match one character (to eat up the previously detected
-       --  break character), and then rematches the break.
- 
-       --  The B node is numbered 3, the alternative node is 1, and the X
-       --  node is 2.
- 
-       -----------
-       -- Fence --
-       -----------
- 
-       --  Fence builds a single node:
- 
-       --    +---+
-       --    | F |---->
-       --    +---+
- 
-       --  The element F, PC_Fence,  matches null, and stacks a pointer to a
-       --  PC_Cancel element which will abort the match on a subsequent failure.
- 
-       --  Since this is a single element it is numbered 1 (the reason we
-       --  include it in the compound patterns section is that it backtracks).
- 
-       --------------------
-       -- Fence Function --
-       --------------------
- 
-       --  A call to the Fence function builds the structure:
- 
-       --    +---+     +---+     +---+
-       --    | E |---->| P |---->| X |---->
-       --    +---+     +---+     +---+
- 
-       --  Here E is the PC_R_Enter node which matches null and creates two
-       --  stack entries. The first is a special entry which is not used at
-       --  all in the fence case (it is present merely for uniformity with
-       --  other cases of region enter operations).
- 
-       --  The second entry corresponds to a standard new region action. A
-       --  PC_R_Remove node is stacked, whose cursor field is used to store
-       --  the outer stack base, and the stack base is reset to point to
-       --  this PC_R_Remove node. Then the pattern P is matched, and it can
-       --  make history stack entries in the normal manner, so now the stack
-       --  looks like:
- 
-       --     (stack entries made before fence pattern)
- 
-       --     (Special entry, not used at all)
- 
-       --     (PC_R_Remove entry, "cursor" value is (negative)  <-- Stack Base
-       --      saved base value for the enclosing region)
- 
-       --     (stack entries made by matching P)
- 
-       --  If the match of P fails, then the PC_R_Remove entry is popped
-       --  and it removes both itself and the special entry underneath it,
-       --  restores the outer stack base, and signals failure.
- 
-       --  If the match of P succeeds, then node X, the PC_Fence_X node, gets
-       --  control. One might be tempted to think that at this point, the
-       --  history stack entries made by matching P can just be removed since
-       --  they certainly are not going to be used for rematching (that is
-       --  whole point of Fence after all). However, this is wrong, because
-       --  it would result in the loss of possible assign-on-match entries
-       --  for deferred pattern assignments.
- 
-       --  Instead what we do is to make a special entry whose node references
-       --  PC_Fence_Y, and whose cursor saves the inner stack base value, i.e.
-       --  the pointer to the PC_R_Remove entry. Then the outer stack base
-       --  pointer is restored, so the stack looks like:
- 
-       --     (stack entries made before assign pattern)
- 
-       --     (Special entry, not used at all)
- 
-       --     (PC_R_Remove entry, "cursor" value is (negative)
-       --      saved base value for the enclosing region)
- 
-       --     (stack entries made by matching P)
- 
-       --     (PC_Fence_Y entry, "cursor" value is (negative) stack
-       --      pointer value referencing the PC_R_Remove entry).
- 
-       --  If a subsequent failure occurs, then the PC_Fence_Y entry removes
-       --  the entire inner region, including all entries made by matching P,
-       --  and alternatives prior to the Fence pattern are sought.
- 
-       --  The node numbering of the constituent pattern P is not affected.
-       --  Where N is the number of nodes in P, the X node is numbered N + 1,
-       --  and the E node is N + 2.
- 
-       -------------
-       -- Succeed --
-       -------------
- 
-       --  Succeed builds a single node:
- 
-       --    +---+
-       --    | S |---->
-       --    +---+
- 
-       --  The node S is the PC_Succeed node which matches null, and stacks
-       --  a pointer to itself on the history stack, so that a subsequent
-       --  failure repeats the same match.
- 
-       --  Since this is a single node it is numbered 1 (the reason we include
-       --  it in the compound patterns section is that it backtracks).
- 
-       ---------------------
-       -- Write Immediate --
-       ---------------------
- 
-       --  The structure built for a write immediate operation (P * F, where
-       --  F is a file access value) is:
- 
-       --    +---+     +---+     +---+
-       --    | E |---->| P |---->| W |---->
-       --    +---+     +---+     +---+
- 
-       --  Here E is the PC_R_Enter node and W is the PC_Write_Imm node. The
-       --  handling is identical to that described above for Assign Immediate,
-       --  except that at the point where a successful match occurs, the matched
-       --  substring is written to the referenced file.
- 
-       --  The node numbering of the constituent pattern P is not affected.
-       --  Where N is the number of nodes in P, the W node is numbered N + 1,
-       --  and the E node is N + 2.
- 
-       --------------------
-       -- Write On Match --
-       --------------------
- 
-       --  The structure built for a write on match operation (P ** F, where
-       --  F is a file access value) is:
- 
-       --    +---+     +---+     +---+
-       --    | E |---->| P |---->| W |---->
-       --    +---+     +---+     +---+
- 
-       --  Here E is the PC_R_Enter node and W is the PC_Write_OnM node. The
-       --  handling is identical to that described above for Assign On Match,
-       --  except that at the point where a successful match has completed,
-       --  the matched substring is written to the referenced file.
- 
-       --  The node numbering of the constituent pattern P is not affected.
-       --  Where N is the number of nodes in P, the W node is numbered N + 1,
-       --  and the E node is N + 2.
-    -----------------------
-    -- Constant Patterns --
-    -----------------------
- 
-    --  The following pattern elements are referenced only from the pattern
-    --  history stack. In each case the processing for the pattern element
-    --  results in pattern match abort, or further failure, so there is no
-    --  need for a successor and no need for a node number
- 
-    CP_Assign    : aliased PE := (PC_Assign,    0, N);
-    CP_Cancel    : aliased PE := (PC_Cancel,    0, N);
-    CP_Fence_Y   : aliased PE := (PC_Fence_Y,   0, N);
-    CP_R_Remove  : aliased PE := (PC_R_Remove,  0, N);
-    CP_R_Restore : aliased PE := (PC_R_Restore, 0, N);
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    function Alternate (L, R : PE_Ptr) return PE_Ptr;
-    function "or"      (L, R : PE_Ptr) return PE_Ptr renames Alternate;
-    --  Build pattern structure corresponding to the alternation of L, R.
-    --  (i.e. try to match L, and if that fails, try to match R).
- 
-    function Arbno_Simple (P : PE_Ptr) return PE_Ptr;
-    --  Build simple Arbno pattern, P is a pattern that is guaranteed to
-    --  match at least one character if it succeeds and to require no
-    --  stack entries under all circumstances. The result returned is
-    --  a simple Arbno structure as previously described.
- 
-    function Bracket (E, P, A : PE_Ptr) return PE_Ptr;
-    --  Given two single node pattern elements E and A, and a (possible
-    --  complex) pattern P, construct the concatenation E-->P-->A and
-    --  return a pointer to E. The concatenation does not affect the
-    --  node numbering in P. A has a number one higher than the maximum
-    --  number in P, and E has a number two higher than the maximum
-    --  number in P (see for example the Assign_Immediate structure to
-    --  understand a typical use of this function).
- 
-    function BreakX_Make (B : PE_Ptr) return Pattern;
-    --  Given a pattern element for a Break pattern, returns the
-    --  corresponding BreakX compound pattern structure.
- 
-    function Concat (L, R : PE_Ptr; Incr : Natural) return PE_Ptr;
-    --  Creates a pattern element that represents a concatenation of the
-    --  two given pattern elements (i.e. the pattern L followed by R).
-    --  The result returned is always the same as L, but the pattern
-    --  referenced by L is modified to have R as a successor. This
-    --  procedure does not copy L or R, so if a copy is required, it
-    --  is the responsibility of the caller. The Incr parameter is an
-    --  amount to be added to the Nat field of any P_Arbno_Y node that is
-    --  in the left operand, it represents the additional stack space
-    --  required by the right operand.
- 
-    function C_To_PE (C : PChar) return PE_Ptr;
-    --  Given a character, constructs a pattern element that matches
-    --  the single character.
- 
-    function Copy (P : PE_Ptr) return PE_Ptr;
-    --  Creates a copy of the pattern element referenced by the given
-    --  pattern element reference. This is a deep copy, which means that
-    --  it follows the Next and Alt pointers.
- 
-    function Image (P : PE_Ptr) return String;
-    --  Returns the image of the address of the referenced pattern element.
-    --  This is equivalent to Image (To_Address (P));
- 
-    function Is_In (C : Character; Str : String) return Boolean;
-    pragma Inline (Is_In);
-    --  Determines if the character C is in string Str
- 
-    procedure Logic_Error;
-    --  Called to raise Program_Error with an appropriate message if an
-    --  internal logic error is detected.
- 
-    function Str_BF (A : Boolean_Func) return String;
-    function Str_FP (A : File_Ptr)     return String;
-    function Str_NF (A : Natural_Func) return String;
-    function Str_NP (A : Natural_Ptr)  return String;
-    function Str_PP (A : Pattern_Ptr)  return String;
-    function Str_VF (A : VString_Func) return String;
-    function Str_VP (A : VString_Ptr)  return String;
-    --  These are debugging routines, which return a representation of the
-    --  given access value (they are called only by Image and Dump)
- 
-    procedure Set_Successor (Pat : PE_Ptr; Succ : PE_Ptr);
-    --  Adjusts all EOP pointers in Pat to point to Succ. No other changes
-    --  are made. In particular, Succ is unchanged, and no index numbers
-    --  are modified. Note that Pat may not be equal to EOP on entry.
- 
-    function S_To_PE (Str : PString) return PE_Ptr;
-    --  Given a string, constructs a pattern element that matches the string
- 
-    procedure Uninitialized_Pattern;
-    pragma No_Return (Uninitialized_Pattern);
-    --  Called to raise Program_Error with an appropriate error message if
-    --  an uninitialized pattern is used in any pattern construction or
-    --  pattern matching operation.
- 
-    procedure XMatch
-      (Subject : String;
-       Pat_P   : PE_Ptr;
-       Pat_S   : Natural;
-       Start   : out Natural;
-       Stop    : out Natural);
-    --  This is the common pattern match routine. It is passed a string and
-    --  a pattern, and it indicates success or failure, and on success the
-    --  section of the string matched. It does not perform any assignments
-    --  to the subject string, so pattern replacement is for the caller.
-    --
-    --  Subject The subject string. The lower bound is always one. In the
-    --          Match procedures, it is fine to use strings whose lower bound
-    --          is not one, but we perform a one time conversion before the
-    --          call to XMatch, so that XMatch does not have to be bothered
-    --          with strange lower bounds.
-    --
-    --  Pat_P   Points to initial pattern element of pattern to be matched
-    --
-    --  Pat_S   Maximum required stack entries for pattern to be matched
-    --
-    --  Start   If match is successful, starting index of matched section.
-    --          This value is always non-zero. A value of zero is used to
-    --          indicate a failed match.
-    --
-    --  Stop    If match is successful, ending index of matched section.
-    --          This can be zero if we match the null string at the start,
-    --          in which case Start is set to zero, and Stop to one. If the
-    --          Match fails, then the contents of Stop is undefined.
- 
-    procedure XMatchD
-      (Subject : String;
-       Pat_P   : PE_Ptr;
-       Pat_S   : Natural;
-       Start   : out Natural;
-       Stop    : out Natural);
-    --  Identical in all respects to XMatch, except that trace information is
-    --  output on Standard_Output during execution of the match. This is the
-    --  version that is called if the original Match call has Debug => True.
- 
-    ---------
-    -- "&" --
-    ---------
- 
-    function "&" (L : PString; R : Pattern) return Pattern is
-    begin
-       return (AFC with R.Stk, Concat (S_To_PE (L), Copy (R.P), R.Stk));
-    end "&";
- 
-    function "&" (L : Pattern; R : PString) return Pattern is
-    begin
-       return (AFC with L.Stk, Concat (Copy (L.P), S_To_PE (R), 0));
-    end "&";
- 
-    function "&" (L : PChar; R : Pattern) return Pattern is
-    begin
-       return (AFC with R.Stk, Concat (C_To_PE (L), Copy (R.P), R.Stk));
-    end "&";
- 
-    function "&" (L : Pattern; R : PChar) return Pattern is
-    begin
-       return (AFC with L.Stk, Concat (Copy (L.P), C_To_PE (R), 0));
-    end "&";
- 
-    function "&" (L : Pattern; R : Pattern) return Pattern is
-    begin
-       return (AFC with L.Stk + R.Stk, Concat (Copy (L.P), Copy (R.P), R.Stk));
-    end "&";
- 
-    ---------
-    -- "*" --
-    ---------
- 
-    --  Assign immediate
- 
-    --    +---+     +---+     +---+
-    --    | E |---->| P |---->| A |---->
-    --    +---+     +---+     +---+
- 
-    --  The node numbering of the constituent pattern P is not affected.
-    --  Where N is the number of nodes in P, the A node is numbered N + 1,
-    --  and the E node is N + 2.
- 
-    function "*" (P : Pattern; Var : VString_Var) return Pattern is
-       Pat : constant PE_Ptr := Copy (P.P);
-       E   : constant PE_Ptr := new PE'(PC_R_Enter,    0, EOP);
-       A   : constant PE_Ptr :=
-               new PE'(PC_Assign_Imm, 0, EOP, Var'Unrestricted_Access);
-    begin
-       return (AFC with P.Stk + 3, Bracket (E, Pat, A));
-    end "*";
- 
-    function "*" (P : PString; Var : VString_Var) return Pattern is
-       Pat : constant PE_Ptr := S_To_PE (P);
-       E   : constant PE_Ptr := new PE'(PC_R_Enter,    0, EOP);
-       A   : constant PE_Ptr :=
-               new PE'(PC_Assign_Imm, 0, EOP, Var'Unrestricted_Access);
-    begin
-       return (AFC with 3, Bracket (E, Pat, A));
-    end "*";
- 
-    function "*" (P : PChar; Var : VString_Var) return Pattern is
-       Pat : constant PE_Ptr := C_To_PE (P);
-       E   : constant PE_Ptr := new PE'(PC_R_Enter,    0, EOP);
-       A   : constant PE_Ptr :=
-               new PE'(PC_Assign_Imm, 0, EOP, Var'Unrestricted_Access);
-    begin
-       return (AFC with 3, Bracket (E, Pat, A));
-    end "*";
- 
-    --  Write immediate
- 
-    --    +---+     +---+     +---+
-    --    | E |---->| P |---->| W |---->
-    --    +---+     +---+     +---+
- 
-    --  The node numbering of the constituent pattern P is not affected.
-    --  Where N is the number of nodes in P, the W node is numbered N + 1,
-    --  and the E node is N + 2.
- 
-    function "*" (P : Pattern; Fil : File_Access) return Pattern is
-       Pat : constant PE_Ptr := Copy (P.P);
-       E   : constant PE_Ptr := new PE'(PC_R_Enter,   0, EOP);
-       W   : constant PE_Ptr := new PE'(PC_Write_Imm, 0, EOP, Fil);
-    begin
-       return (AFC with 3, Bracket (E, Pat, W));
-    end "*";
- 
-    function "*" (P : PString; Fil : File_Access) return Pattern is
-       Pat : constant PE_Ptr := S_To_PE (P);
-       E   : constant PE_Ptr := new PE'(PC_R_Enter,   0, EOP);
-       W   : constant PE_Ptr := new PE'(PC_Write_Imm, 0, EOP, Fil);
-    begin
-       return (AFC with 3, Bracket (E, Pat, W));
-    end "*";
- 
-    function "*" (P : PChar; Fil : File_Access) return Pattern is
-       Pat : constant PE_Ptr := C_To_PE (P);
-       E   : constant PE_Ptr := new PE'(PC_R_Enter,   0, EOP);
-       W   : constant PE_Ptr := new PE'(PC_Write_Imm, 0, EOP, Fil);
-    begin
-       return (AFC with 3, Bracket (E, Pat, W));
-    end "*";
- 
-    ----------
-    -- "**" --
-    ----------
- 
-    --  Assign on match
- 
-    --    +---+     +---+     +---+
-    --    | E |---->| P |---->| A |---->
-    --    +---+     +---+     +---+
- 
-    --  The node numbering of the constituent pattern P is not affected.
-    --  Where N is the number of nodes in P, the A node is numbered N + 1,
-    --  and the E node is N + 2.
- 
-    function "**" (P : Pattern; Var : VString_Var) return Pattern is
-       Pat : constant PE_Ptr := Copy (P.P);
-       E   : constant PE_Ptr := new PE'(PC_R_Enter,    0, EOP);
-       A   : constant PE_Ptr :=
-               new PE'(PC_Assign_OnM, 0, EOP, Var'Unrestricted_Access);
-    begin
-       return (AFC with P.Stk + 3, Bracket (E, Pat, A));
-    end "**";
- 
-    function "**" (P : PString; Var : VString_Var) return Pattern is
-       Pat : constant PE_Ptr := S_To_PE (P);
-       E   : constant PE_Ptr := new PE'(PC_R_Enter,    0, EOP);
-       A   : constant PE_Ptr :=
-               new PE'(PC_Assign_OnM, 0, EOP, Var'Unrestricted_Access);
-    begin
-       return (AFC with 3, Bracket (E, Pat, A));
-    end "**";
- 
-    function "**" (P : PChar; Var : VString_Var) return Pattern is
-       Pat : constant PE_Ptr := C_To_PE (P);
-       E   : constant PE_Ptr := new PE'(PC_R_Enter,    0, EOP);
-       A   : constant PE_Ptr :=
-               new PE'(PC_Assign_OnM, 0, EOP, Var'Unrestricted_Access);
-    begin
-       return (AFC with 3, Bracket (E, Pat, A));
-    end "**";
- 
-    --  Write on match
- 
-    --    +---+     +---+     +---+
-    --    | E |---->| P |---->| W |---->
-    --    +---+     +---+     +---+
- 
-    --  The node numbering of the constituent pattern P is not affected.
-    --  Where N is the number of nodes in P, the W node is numbered N + 1,
-    --  and the E node is N + 2.
- 
-    function "**" (P : Pattern; Fil : File_Access) return Pattern is
-       Pat : constant PE_Ptr := Copy (P.P);
-       E   : constant PE_Ptr := new PE'(PC_R_Enter,   0, EOP);
-       W   : constant PE_Ptr := new PE'(PC_Write_OnM, 0, EOP, Fil);
-    begin
-       return (AFC with P.Stk + 3, Bracket (E, Pat, W));
-    end "**";
- 
-    function "**" (P : PString; Fil : File_Access) return Pattern is
-       Pat : constant PE_Ptr := S_To_PE (P);
-       E   : constant PE_Ptr := new PE'(PC_R_Enter,   0, EOP);
-       W   : constant PE_Ptr := new PE'(PC_Write_OnM, 0, EOP, Fil);
-    begin
-       return (AFC with 3, Bracket (E, Pat, W));
-    end "**";
- 
-    function "**" (P : PChar; Fil : File_Access) return Pattern is
-       Pat : constant PE_Ptr := C_To_PE (P);
-       E   : constant PE_Ptr := new PE'(PC_R_Enter,   0, EOP);
-       W   : constant PE_Ptr := new PE'(PC_Write_OnM, 0, EOP, Fil);
-    begin
-       return (AFC with 3, Bracket (E, Pat, W));
-    end "**";
- 
-    ---------
-    -- "+" --
-    ---------
- 
-    function "+" (Str : VString_Var) return Pattern is
-    begin
-       return
-         (AFC with 0,
-          new PE'(PC_String_VP, 1, EOP, Str'Unrestricted_Access));
-    end "+";
- 
-    function "+" (Str : VString_Func) return Pattern is
-    begin
-       return (AFC with 0, new PE'(PC_String_VF, 1, EOP, Str));
-    end "+";
- 
-    function "+" (P : Pattern_Var) return Pattern is
-    begin
-       return
-         (AFC with 3,
-          new PE'(PC_Rpat, 1, EOP, P'Unrestricted_Access));
-    end "+";
- 
-    function "+" (P : Boolean_Func) return Pattern is
-    begin
-       return (AFC with 3, new PE'(PC_Pred_Func, 1, EOP, P));
-    end "+";
- 
-    ----------
-    -- "or" --
-    ----------
- 
-    function "or" (L : PString; R : Pattern) return Pattern is
-    begin
-       return (AFC with R.Stk + 1, S_To_PE (L) or Copy (R.P));
-    end "or";
- 
-    function "or" (L : Pattern; R : PString) return Pattern is
-    begin
-       return (AFC with L.Stk + 1, Copy (L.P) or S_To_PE (R));
-    end "or";
- 
-    function "or" (L : PString; R : PString) return Pattern is
-    begin
-       return (AFC with 1, S_To_PE (L) or S_To_PE (R));
-    end "or";
- 
-    function "or" (L : Pattern; R : Pattern) return Pattern is
-    begin
-       return (AFC with
-                 Natural'Max (L.Stk, R.Stk) + 1, Copy (L.P) or Copy (R.P));
-    end "or";
- 
-    function "or" (L : PChar;   R : Pattern) return Pattern is
-    begin
-       return (AFC with 1, C_To_PE (L) or Copy (R.P));
-    end "or";
- 
-    function "or" (L : Pattern; R : PChar) return Pattern is
-    begin
-       return (AFC with 1, Copy (L.P) or C_To_PE (R));
-    end "or";
- 
-    function "or" (L : PChar;   R : PChar) return Pattern is
-    begin
-       return (AFC with 1, C_To_PE (L) or C_To_PE (R));
-    end "or";
- 
-    function "or" (L : PString; R : PChar) return Pattern is
-    begin
-       return (AFC with 1, S_To_PE (L) or C_To_PE (R));
-    end "or";
- 
-    function "or" (L : PChar;   R : PString) return Pattern is
-    begin
-       return (AFC with 1, C_To_PE (L) or S_To_PE (R));
-    end "or";
- 
-    ------------
-    -- Adjust --
-    ------------
- 
-    --  No two patterns share the same pattern elements, so the adjust
-    --  procedure for a Pattern assignment must do a deep copy of the
-    --  pattern element structure.
- 
-    procedure Adjust (Object : in out Pattern) is
-    begin
-       Object.P := Copy (Object.P);
-    end Adjust;
- 
-    ---------------
-    -- Alternate --
-    ---------------
- 
-    function Alternate (L, R : PE_Ptr) return PE_Ptr is
-    begin
-       --  If the left pattern is null, then we just add the alternation
-       --  node with an index one greater than the right hand pattern.
- 
-       if L = EOP then
-          return new PE'(PC_Alt, R.Index + 1, EOP, R);
- 
-       --  If the left pattern is non-null, then build a reference vector
-       --  for its elements, and adjust their index values to accommodate
-       --  the right hand elements. Then add the alternation node.
- 
-       else
-          declare
-             Refs : Ref_Array (1 .. L.Index);
- 
-          begin
-             Build_Ref_Array (L, Refs);
- 
-             for J in Refs'Range loop
-                Refs (J).Index := Refs (J).Index + R.Index;
-             end loop;
-          end;
- 
-          return new PE'(PC_Alt, L.Index + 1, L, R);
-       end if;
-    end Alternate;
- 
-    ---------
-    -- Any --
-    ---------
- 
-    function Any (Str : String) return Pattern is
-    begin
-       return (AFC with 0, new PE'(PC_Any_CS, 1, EOP, To_Set (Str)));
-    end Any;
- 
-    function Any (Str : VString) return Pattern is
-    begin
-       return Any (S (Str));
-    end Any;
- 
-    function Any (Str : Character) return Pattern is
-    begin
-       return (AFC with 0, new PE'(PC_Any_CH, 1, EOP, Str));
-    end Any;
- 
-    function Any (Str : Character_Set) return Pattern is
-    begin
-       return (AFC with 0, new PE'(PC_Any_CS, 1, EOP, Str));
-    end Any;
- 
-    function Any (Str : not null access VString) return Pattern is
-    begin
-       return (AFC with 0, new PE'(PC_Any_VP, 1, EOP, VString_Ptr (Str)));
-    end Any;
- 
-    function Any (Str : VString_Func) return Pattern is
-    begin
-       return (AFC with 0, new PE'(PC_Any_VF, 1, EOP, Str));
-    end Any;
- 
-    ---------
-    -- Arb --
-    ---------
- 
-    --    +---+
-    --    | X |---->
-    --    +---+
-    --      .
-    --      .
-    --    +---+
-    --    | Y |---->
-    --    +---+
- 
-    --  The PC_Arb_X element is numbered 2, and the PC_Arb_Y element is 1
- 
-    function Arb return Pattern is
-       Y : constant PE_Ptr := new PE'(PC_Arb_Y, 1, EOP);
-       X : constant PE_Ptr := new PE'(PC_Arb_X, 2, EOP, Y);
-    begin
-       return (AFC with 1, X);
-    end Arb;
- 
-    -----------
-    -- Arbno --
-    -----------
- 
-    function Arbno (P : PString) return Pattern is
-    begin
-       if P'Length = 0 then
-          return (AFC with 0, EOP);
-       else
-          return (AFC with 0, Arbno_Simple (S_To_PE (P)));
-       end if;
-    end Arbno;
- 
-    function Arbno (P : PChar) return Pattern is
-    begin
-       return (AFC with 0, Arbno_Simple (C_To_PE (P)));
-    end Arbno;
- 
-    function Arbno (P : Pattern) return Pattern is
-       Pat : constant PE_Ptr := Copy (P.P);
- 
-    begin
-       if P.Stk = 0
-         and then OK_For_Simple_Arbno (Pat.Pcode)
-       then
-          return (AFC with 0, Arbno_Simple (Pat));
-       end if;
- 
-       --  This is the complex case, either the pattern makes stack entries
-       --  or it is possible for the pattern to match the null string (more
-       --  accurately, we don't know that this is not the case).
- 
-       --      +--------------------------+
-       --      |                          ^
-       --      V                          |
-       --    +---+                        |
-       --    | X |---->                   |
-       --    +---+                        |
-       --      .                          |
-       --      .                          |
-       --    +---+     +---+     +---+    |
-       --    | E |---->| P |---->| Y |--->+
-       --    +---+     +---+     +---+
- 
-       --  The node numbering of the constituent pattern P is not affected.
-       --  Where N is the number of nodes in P, the Y node is numbered N + 1,
-       --  the E node is N + 2, and the X node is N + 3.
- 
-       declare
-          E   : constant PE_Ptr := new PE'(PC_R_Enter, 0, EOP);
-          X   : constant PE_Ptr := new PE'(PC_Arbno_X, 0, EOP, E);
-          Y   : constant PE_Ptr := new PE'(PC_Arbno_Y, 0, X,   P.Stk + 3);
-          EPY : constant PE_Ptr := Bracket (E, Pat, Y);
-       begin
-          X.Alt := EPY;
-          X.Index := EPY.Index + 1;
-          return (AFC with P.Stk + 3, X);
-       end;
-    end Arbno;
- 
-    ------------------
-    -- Arbno_Simple --
-    ------------------
- 
-       --      +-------------+
-       --      |             ^
-       --      V             |
-       --    +---+           |
-       --    | S |---->      |
-       --    +---+           |
-       --      .             |
-       --      .             |
-       --    +---+           |
-       --    | P |---------->+
-       --    +---+
- 
-    --  The node numbering of the constituent pattern P is not affected.
-    --  The S node has a node number of P.Index + 1.
- 
-    --  Note that we know that P cannot be EOP, because a null pattern
-    --  does not meet the requirements for simple Arbno.
- 
-    function Arbno_Simple (P : PE_Ptr) return PE_Ptr is
-       S : constant PE_Ptr := new PE'(PC_Arbno_S, P.Index + 1, EOP, P);
-    begin
-       Set_Successor (P, S);
-       return S;
-    end Arbno_Simple;
- 
-    ---------
-    -- Bal --
-    ---------
- 
-    function Bal return Pattern is
-    begin
-       return (AFC with 1, new PE'(PC_Bal, 1, EOP));
-    end Bal;
- 
-    -------------
-    -- Bracket --
-    -------------
- 
-    function Bracket (E, P, A : PE_Ptr) return PE_Ptr is
-    begin
-       if P = EOP then
-          E.Pthen := A;
-          E.Index := 2;
-          A.Index := 1;
- 
-       else
-          E.Pthen := P;
-          Set_Successor (P, A);
-          E.Index := P.Index + 2;
-          A.Index := P.Index + 1;
-       end if;
- 
-       return E;
-    end Bracket;
- 
-    -----------
-    -- Break --
-    -----------
- 
-    function Break (Str : String) return Pattern is
-    begin
-       return (AFC with 0, new PE'(PC_Break_CS, 1, EOP, To_Set (Str)));
-    end Break;
- 
-    function Break (Str : VString) return Pattern is
-    begin
-       return Break (S (Str));
-    end Break;
- 
-    function Break (Str : Character) return Pattern is
-    begin
-       return (AFC with 0, new PE'(PC_Break_CH, 1, EOP, Str));
-    end Break;
- 
-    function Break (Str : Character_Set) return Pattern is
-    begin
-       return (AFC with 0, new PE'(PC_Break_CS, 1, EOP, Str));
-    end Break;
- 
-    function Break (Str : not null access VString) return Pattern is
-    begin
-       return (AFC with 0,
-               new PE'(PC_Break_VP, 1, EOP, Str.all'Unchecked_Access));
-    end Break;
- 
-    function Break (Str : VString_Func) return Pattern is
-    begin
-       return (AFC with 0, new PE'(PC_Break_VF, 1, EOP, Str));
-    end Break;
- 
-    ------------
-    -- BreakX --
-    ------------
- 
-    function BreakX (Str : String) return Pattern is
-    begin
-       return BreakX_Make (new PE'(PC_BreakX_CS, 3, N, To_Set (Str)));
-    end BreakX;
- 
-    function BreakX (Str : VString) return Pattern is
-    begin
-       return BreakX (S (Str));
-    end BreakX;
- 
-    function BreakX (Str : Character) return Pattern is
-    begin
-       return BreakX_Make (new PE'(PC_BreakX_CH, 3, N, Str));
-    end BreakX;
- 
-    function BreakX (Str : Character_Set) return Pattern is
-    begin
-       return BreakX_Make (new PE'(PC_BreakX_CS, 3, N, Str));
-    end BreakX;
- 
-    function BreakX (Str : not null access VString) return Pattern is
-    begin
-       return BreakX_Make (new PE'(PC_BreakX_VP, 3, N, VString_Ptr (Str)));
-    end BreakX;
- 
-    function BreakX (Str : VString_Func) return Pattern is
-    begin
-       return BreakX_Make (new PE'(PC_BreakX_VF, 3, N, Str));
-    end BreakX;
- 
-    -----------------
-    -- BreakX_Make --
-    -----------------
- 
-    --    +---+     +---+
-    --    | B |---->| A |---->
-    --    +---+     +---+
-    --      ^         .
-    --      |         .
-    --      |       +---+
-    --      +<------| X |
-    --              +---+
- 
-    --  The B node is numbered 3, the alternative node is 1, and the X
-    --  node is 2.
- 
-    function BreakX_Make (B : PE_Ptr) return Pattern is
-       X : constant PE_Ptr := new PE'(PC_BreakX_X, 2, B);
-       A : constant PE_Ptr := new PE'(PC_Alt,      1, EOP, X);
-    begin
-       B.Pthen := A;
-       return (AFC with 2, B);
-    end BreakX_Make;
- 
-    ---------------------
-    -- Build_Ref_Array --
-    ---------------------
- 
-    procedure Build_Ref_Array (E : PE_Ptr; RA : out Ref_Array) is
- 
-       procedure Record_PE (E : PE_Ptr);
-       --  Record given pattern element if not already recorded in RA,
-       --  and also record any referenced pattern elements recursively.
- 
-       ---------------
-       -- Record_PE --
-       ---------------
- 
-       procedure Record_PE (E : PE_Ptr) is
-       begin
-          PutD ("  Record_PE called with PE_Ptr = " & Image (E));
- 
-          if E = EOP or else RA (E.Index) /= null then
-             Put_LineD (", nothing to do");
-             return;
- 
-          else
-             Put_LineD (", recording" & IndexT'Image (E.Index));
-             RA (E.Index) := E;
-             Record_PE (E.Pthen);
- 
-             if E.Pcode in PC_Has_Alt then
-                Record_PE (E.Alt);
-             end if;
-          end if;
-       end Record_PE;
- 
-    --  Start of processing for Build_Ref_Array
- 
-    begin
-       New_LineD;
-       Put_LineD ("Entering Build_Ref_Array");
-       Record_PE (E);
-       New_LineD;
-    end Build_Ref_Array;
- 
-    -------------
-    -- C_To_PE --
-    -------------
- 
-    function C_To_PE (C : PChar) return PE_Ptr is
-    begin
-       return new PE'(PC_Char, 1, EOP, C);
-    end C_To_PE;
- 
-    ------------
-    -- Cancel --
-    ------------
- 
-    function Cancel return Pattern is
-    begin
-       return (AFC with 0, new PE'(PC_Cancel, 1, EOP));
-    end Cancel;
- 
-    ------------
-    -- Concat --
-    ------------
- 
-    --  Concat needs to traverse the left operand performing the following
-    --  set of fixups:
- 
-    --    a) Any successor pointers (Pthen fields) that are set to EOP are
-    --       reset to point to the second operand.
- 
-    --    b) Any PC_Arbno_Y node has its stack count field incremented
-    --       by the parameter Incr provided for this purpose.
- 
-    --    d) Num fields of all pattern elements in the left operand are
-    --       adjusted to include the elements of the right operand.
- 
-    --  Note: we do not use Set_Successor in the processing for Concat, since
-    --  there is no point in doing two traversals, we may as well do everything
-    --  at the same time.
- 
-    function Concat (L, R : PE_Ptr; Incr : Natural) return PE_Ptr is
-    begin
-       if L = EOP then
-          return R;
- 
-       elsif R = EOP then
-          return L;
- 
-       else
-          declare
-             Refs : Ref_Array (1 .. L.Index);
-             --  We build a reference array for L whose N'th element points to
-             --  the pattern element of L whose original Index value is N.
- 
-             P : PE_Ptr;
- 
-          begin
-             Build_Ref_Array (L, Refs);
- 
-             for J in Refs'Range loop
-                P := Refs (J);
- 
-                P.Index := P.Index + R.Index;
- 
-                if P.Pcode = PC_Arbno_Y then
-                   P.Nat := P.Nat + Incr;
-                end if;
- 
-                if P.Pthen = EOP then
-                   P.Pthen := R;
-                end if;
- 
-                if P.Pcode in PC_Has_Alt and then P.Alt = EOP then
-                   P.Alt := R;
-                end if;
-             end loop;
-          end;
- 
-          return L;
-       end if;
-    end Concat;
- 
-    ----------
-    -- Copy --
-    ----------
- 
-    function Copy (P : PE_Ptr) return PE_Ptr is
-    begin
-       if P = null then
-          Uninitialized_Pattern;
- 
-       else
-          declare
-             Refs : Ref_Array (1 .. P.Index);
-             --  References to elements in P, indexed by Index field
- 
-             Copy : Ref_Array (1 .. P.Index);
-             --  Holds copies of elements of P, indexed by Index field
- 
-             E : PE_Ptr;
- 
-          begin
-             Build_Ref_Array (P, Refs);
- 
-             --  Now copy all nodes
- 
-             for J in Refs'Range loop
-                Copy (J) := new PE'(Refs (J).all);
-             end loop;
- 
-             --  Adjust all internal references
- 
-             for J in Copy'Range loop
-                E := Copy (J);
- 
-                --  Adjust successor pointer to point to copy
- 
-                if E.Pthen /= EOP then
-                   E.Pthen := Copy (E.Pthen.Index);
-                end if;
- 
-                --  Adjust Alt pointer if there is one to point to copy
- 
-                if E.Pcode in PC_Has_Alt and then E.Alt /= EOP then
-                   E.Alt := Copy (E.Alt.Index);
-                end if;
- 
-                --  Copy referenced string
- 
-                if E.Pcode = PC_String then
-                   E.Str := new String'(E.Str.all);
-                end if;
-             end loop;
- 
-             return Copy (P.Index);
-          end;
-       end if;
-    end Copy;
- 
-    ----------
-    -- Dump --
-    ----------
- 
-    procedure Dump (P : Pattern) is
- 
-       subtype Count is Ada.Text_IO.Count;
-       Scol : Count;
-       --  Used to keep track of column in dump output
- 
-       Refs : Ref_Array (1 .. P.P.Index);
-       --  We build a reference array whose N'th element points to the
-       --  pattern element whose Index value is N.
- 
-       Cols : Natural := 2;
-       --  Number of columns used for pattern numbers, minimum is 2
- 
-       E : PE_Ptr;
- 
-       procedure Write_Node_Id (E : PE_Ptr);
-       --  Writes out a string identifying the given pattern element
- 
-       -------------------
-       -- Write_Node_Id --
-       -------------------
- 
-       procedure Write_Node_Id (E : PE_Ptr) is
-       begin
-          if E = EOP then
-             Put ("EOP");
- 
-             for J in 4 .. Cols loop
-                Put (' ');
-             end loop;
- 
-          else
-             declare
-                Str : String (1 .. Cols);
-                N   : Natural := Natural (E.Index);
- 
-             begin
-                Put ("#");
- 
-                for J in reverse Str'Range loop
-                   Str (J) := Character'Val (48 + N mod 10);
-                   N := N / 10;
-                end loop;
- 
-                Put (Str);
-             end;
-          end if;
-       end Write_Node_Id;
- 
-    --  Start of processing for Dump
- 
-    begin
-       New_Line;
-       Put ("Pattern Dump Output (pattern at " &
-            Image (P'Address) &
-            ", S = " & Natural'Image (P.Stk) & ')');
- 
-       Scol := Col;
-       New_Line;
- 
-       while Col < Scol loop
-          Put ('-');
-       end loop;
- 
-       New_Line;
- 
-       --  If uninitialized pattern, dump line and we are done
- 
-       if P.P = null then
-          Put_Line ("Uninitialized pattern value");
-          return;
-       end if;
- 
-       --  If null pattern, just dump it and we are all done
- 
-       if P.P = EOP then
-          Put_Line ("EOP (null pattern)");
-          return;
-       end if;
- 
-       Build_Ref_Array (P.P, Refs);
- 
-       --  Set number of columns required for node numbers
- 
-       while 10 ** Cols - 1 < Integer (P.P.Index) loop
-          Cols := Cols + 1;
-       end loop;
- 
-       --  Now dump the nodes in reverse sequence. We output them in reverse
-       --  sequence since this corresponds to the natural order used to
-       --  construct the patterns.
- 
-       for J in reverse Refs'Range loop
-          E := Refs (J);
-          Write_Node_Id (E);
-          Set_Col (Count (Cols) + 4);
-          Put (Image (E));
-          Put ("  ");
-          Put (Pattern_Code'Image (E.Pcode));
-          Put ("  ");
-          Set_Col (21 + Count (Cols) + Address_Image_Length);
-          Write_Node_Id (E.Pthen);
-          Set_Col (24 + 2 * Count (Cols) + Address_Image_Length);
- 
-          case E.Pcode is
-             when PC_Alt
-                | PC_Arb_X
-                | PC_Arbno_S
-                | PC_Arbno_X
-             =>
-                Write_Node_Id (E.Alt);
- 
-             when PC_Rpat =>
-                Put (Str_PP (E.PP));
- 
-             when PC_Pred_Func =>
-                Put (Str_BF (E.BF));
- 
-             when PC_Assign_Imm
-                | PC_Assign_OnM
-                | PC_Any_VP
-                | PC_Break_VP
-                | PC_BreakX_VP
-                | PC_NotAny_VP
-                | PC_NSpan_VP
-                | PC_Span_VP
-                | PC_String_VP
-             =>
-                Put (Str_VP (E.VP));
- 
-             when PC_Write_Imm
-                | PC_Write_OnM
-             =>
-                Put (Str_FP (E.FP));
- 
-             when PC_String =>
-                Put (Image (E.Str.all));
- 
-             when PC_String_2 =>
-                Put (Image (E.Str2));
- 
-             when PC_String_3 =>
-                Put (Image (E.Str3));
- 
-             when PC_String_4 =>
-                Put (Image (E.Str4));
- 
-             when PC_String_5 =>
-                Put (Image (E.Str5));
- 
-             when PC_String_6 =>
-                Put (Image (E.Str6));
- 
-             when PC_Setcur =>
-                Put (Str_NP (E.Var));
- 
-             when PC_Any_CH
-                | PC_Break_CH
-                | PC_BreakX_CH
-                | PC_Char
-                | PC_NotAny_CH
-                | PC_NSpan_CH
-                | PC_Span_CH
-             =>
-                Put (''' & E.Char & ''');
- 
-             when PC_Any_CS
-                | PC_Break_CS
-                | PC_BreakX_CS
-                | PC_NotAny_CS
-                | PC_NSpan_CS
-                | PC_Span_CS
-             =>
-                Put ('"' & To_Sequence (E.CS) & '"');
- 
-             when PC_Arbno_Y
-                | PC_Len_Nat
-                | PC_Pos_Nat
-                | PC_RPos_Nat
-                | PC_RTab_Nat
-                | PC_Tab_Nat
-             =>
-                Put (S (E.Nat));
- 
-             when PC_Pos_NF
-                | PC_Len_NF
-                | PC_RPos_NF
-                | PC_RTab_NF
-                | PC_Tab_NF
-             =>
-                Put (Str_NF (E.NF));
- 
-             when PC_Pos_NP
-                | PC_Len_NP
-                | PC_RPos_NP
-                | PC_RTab_NP
-                | PC_Tab_NP
-             =>
-                Put (Str_NP (E.NP));
- 
-             when PC_Any_VF
-                | PC_Break_VF
-                | PC_BreakX_VF
-                | PC_NotAny_VF
-                | PC_NSpan_VF
-                | PC_Span_VF
-                | PC_String_VF
-             =>
-                Put (Str_VF (E.VF));
- 
-             when others =>
-                null;
-          end case;
- 
-          New_Line;
-       end loop;
- 
-       New_Line;
-    end Dump;
- 
-    ----------
-    -- Fail --
-    ----------
- 
-    function Fail return Pattern is
-    begin
-       return (AFC with 0, new PE'(PC_Fail, 1, EOP));
-    end Fail;
- 
-    -----------
-    -- Fence --
-    -----------
- 
-    --  Simple case
- 
-    function Fence return Pattern is
-    begin
-       return (AFC with 1, new PE'(PC_Fence, 1, EOP));
-    end Fence;
- 
-    --  Function case
- 
-    --    +---+     +---+     +---+
-    --    | E |---->| P |---->| X |---->
-    --    +---+     +---+     +---+
- 
-    --  The node numbering of the constituent pattern P is not affected.
-    --  Where N is the number of nodes in P, the X node is numbered N + 1,
-    --  and the E node is N + 2.
- 
-    function Fence (P : Pattern) return Pattern is
-       Pat : constant PE_Ptr := Copy (P.P);
-       E   : constant PE_Ptr := new PE'(PC_R_Enter, 0, EOP);
-       X   : constant PE_Ptr := new PE'(PC_Fence_X, 0, EOP);
-    begin
-       return (AFC with P.Stk + 1, Bracket (E, Pat, X));
-    end Fence;
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    procedure Finalize (Object : in out Pattern) is
- 
-       procedure Free is new Ada.Unchecked_Deallocation (PE, PE_Ptr);
-       procedure Free is new Ada.Unchecked_Deallocation (String, String_Ptr);
- 
-    begin
-       --  Nothing to do if already freed
- 
-       if Object.P = null then
-          return;
- 
-       --  Otherwise we must free all elements
- 
-       else
-          declare
-             Refs : Ref_Array (1 .. Object.P.Index);
-             --  References to elements in pattern to be finalized
- 
-          begin
-             Build_Ref_Array (Object.P, Refs);
- 
-             for J in Refs'Range loop
-                if Refs (J).Pcode = PC_String then
-                   Free (Refs (J).Str);
-                end if;
- 
-                Free (Refs (J));
-             end loop;
- 
-             Object.P := null;
-          end;
-       end if;
-    end Finalize;
- 
-    -----------
-    -- Image --
-    -----------
- 
-    function Image (P : PE_Ptr) return String is
-    begin
-       return Image (To_Address (P));
-    end Image;
- 
-    function Image (P : Pattern) return String is
-    begin
-       return S (Image (P));
-    end Image;
- 
-    function Image (P : Pattern) return VString is
- 
-       Kill_Ampersand : Boolean := False;
-       --  Set True to delete next & to be output to Result
- 
-       Result : VString := Nul;
-       --  The result is accumulated here, using Append
- 
-       Refs : Ref_Array (1 .. P.P.Index);
-       --  We build a reference array whose N'th element points to the
-       --  pattern element whose Index value is N.
- 
-       procedure Delete_Ampersand;
-       --  Deletes the ampersand at the end of Result
- 
-       procedure Image_Seq (E : PE_Ptr; Succ : PE_Ptr; Paren : Boolean);
-       --  E refers to a pattern structure whose successor is given by Succ.
-       --  This procedure appends to Result a representation of this pattern.
-       --  The Paren parameter indicates whether parentheses are required if
-       --  the output is more than one element.
- 
-       procedure Image_One (E : in out PE_Ptr);
-       --  E refers to a pattern structure. This procedure appends to Result
-       --  a representation of the single simple or compound pattern structure
-       --  at the start of E and updates E to point to its successor.
- 
-       ----------------------
-       -- Delete_Ampersand --
-       ----------------------
- 
-       procedure Delete_Ampersand is
-          L : constant Natural := Length (Result);
-       begin
-          if L > 2 then
-             Delete (Result, L - 1, L);
-          end if;
-       end Delete_Ampersand;
- 
-       ---------------
-       -- Image_One --
-       ---------------
- 
-       procedure Image_One (E : in out PE_Ptr) is
- 
-          ER : PE_Ptr := E.Pthen;
-          --  Successor set as result in E unless reset
- 
-       begin
-          case E.Pcode is
-             when PC_Cancel =>
-                Append (Result, "Cancel");
- 
-             when PC_Alt => Alt : declare
- 
-                Elmts_In_L : constant IndexT := E.Pthen.Index - E.Alt.Index;
-                --  Number of elements in left pattern of alternation
- 
-                Lowest_In_L : constant IndexT := E.Index - Elmts_In_L;
-                --  Number of lowest index in elements of left pattern
- 
-                E1 : PE_Ptr;
- 
-             begin
-                --  The successor of the alternation node must have a lower
-                --  index than any node that is in the left pattern or a
-                --  higher index than the alternation node itself.
- 
-                while ER /= EOP
-                  and then ER.Index >= Lowest_In_L
-                  and then ER.Index < E.Index
-                loop
-                   ER := ER.Pthen;
-                end loop;
- 
-                Append (Result, '(');
- 
-                E1 := E;
-                loop
-                   Image_Seq (E1.Pthen, ER, False);
-                   Append (Result, " or ");
-                   E1 := E1.Alt;
-                   exit when E1.Pcode /= PC_Alt;
-                end loop;
- 
-                Image_Seq (E1, ER, False);
-                Append (Result, ')');
-             end Alt;
- 
-             when PC_Any_CS =>
-                Append (Result, "Any (" & Image (To_Sequence (E.CS)) & ')');
- 
-             when PC_Any_VF =>
-                Append (Result, "Any (" & Str_VF (E.VF) & ')');
- 
-             when PC_Any_VP =>
-                Append (Result, "Any (" & Str_VP (E.VP) & ')');
- 
-             when PC_Arb_X =>
-                Append (Result, "Arb");
- 
-             when PC_Arbno_S =>
-                Append (Result, "Arbno (");
-                Image_Seq (E.Alt, E, False);
-                Append (Result, ')');
- 
-             when PC_Arbno_X =>
-                Append (Result, "Arbno (");
-                Image_Seq (E.Alt.Pthen, Refs (E.Index - 2), False);
-                Append (Result, ')');
- 
-             when PC_Assign_Imm =>
-                Delete_Ampersand;
-                Append (Result, "* " & Str_VP (Refs (E.Index).VP));
- 
-             when PC_Assign_OnM =>
-                Delete_Ampersand;
-                Append (Result, "** " & Str_VP (Refs (E.Index).VP));
- 
-             when PC_Any_CH =>
-                Append (Result, "Any ('" & E.Char & "')");
- 
-             when PC_Bal =>
-                Append (Result, "Bal");
- 
-             when PC_Break_CH =>
-                Append (Result, "Break ('" & E.Char & "')");
- 
-             when PC_Break_CS =>
-                Append (Result, "Break (" & Image (To_Sequence (E.CS)) & ')');
- 
-             when PC_Break_VF =>
-                Append (Result, "Break (" & Str_VF (E.VF) & ')');
- 
-             when PC_Break_VP =>
-                Append (Result, "Break (" & Str_VP (E.VP) & ')');
- 
-             when PC_BreakX_CH =>
-                Append (Result, "BreakX ('" & E.Char & "')");
-                ER := ER.Pthen;
- 
-             when PC_BreakX_CS =>
-                Append (Result, "BreakX (" & Image (To_Sequence (E.CS)) & ')');
-                ER := ER.Pthen;
- 
-             when PC_BreakX_VF =>
-                Append (Result, "BreakX (" & Str_VF (E.VF) & ')');
-                ER := ER.Pthen;
- 
-             when PC_BreakX_VP =>
-                Append (Result, "BreakX (" & Str_VP (E.VP) & ')');
-                ER := ER.Pthen;
- 
-             when PC_Char =>
-                Append (Result, ''' & E.Char & ''');
- 
-             when PC_Fail =>
-                Append (Result, "Fail");
- 
-             when PC_Fence =>
-                Append (Result, "Fence");
- 
-             when PC_Fence_X =>
-                Append (Result, "Fence (");
-                Image_Seq (E.Pthen, Refs (E.Index - 1), False);
-                Append (Result, ")");
-                ER := Refs (E.Index - 1).Pthen;
- 
-             when PC_Len_Nat =>
-                Append (Result, "Len (" & E.Nat & ')');
- 
-             when PC_Len_NF =>
-                Append (Result, "Len (" & Str_NF (E.NF) & ')');
- 
-             when PC_Len_NP =>
-                Append (Result, "Len (" & Str_NP (E.NP) & ')');
- 
-             when PC_NotAny_CH =>
-                Append (Result, "NotAny ('" & E.Char & "')");
- 
-             when PC_NotAny_CS =>
-                Append (Result, "NotAny (" & Image (To_Sequence (E.CS)) & ')');
- 
-             when PC_NotAny_VF =>
-                Append (Result, "NotAny (" & Str_VF (E.VF) & ')');
- 
-             when PC_NotAny_VP =>
-                Append (Result, "NotAny (" & Str_VP (E.VP) & ')');
- 
-             when PC_NSpan_CH =>
-                Append (Result, "NSpan ('" & E.Char & "')");
- 
-             when PC_NSpan_CS =>
-                Append (Result, "NSpan (" & Image (To_Sequence (E.CS)) & ')');
- 
-             when PC_NSpan_VF =>
-                Append (Result, "NSpan (" & Str_VF (E.VF) & ')');
- 
-             when PC_NSpan_VP =>
-                Append (Result, "NSpan (" & Str_VP (E.VP) & ')');
- 
-             when PC_Null =>
-                Append (Result, """""");
- 
-             when PC_Pos_Nat =>
-                Append (Result, "Pos (" & E.Nat & ')');
- 
-             when PC_Pos_NF =>
-                Append (Result, "Pos (" & Str_NF (E.NF) & ')');
- 
-             when PC_Pos_NP =>
-                Append (Result, "Pos (" & Str_NP (E.NP) & ')');
- 
-             when PC_R_Enter =>
-                Kill_Ampersand := True;
- 
-             when PC_Rest =>
-                Append (Result, "Rest");
- 
-             when PC_Rpat =>
-                Append (Result, "(+ " & Str_PP (E.PP) & ')');
- 
-             when PC_Pred_Func =>
-                Append (Result, "(+ " & Str_BF (E.BF) & ')');
- 
-             when PC_RPos_Nat =>
-                Append (Result, "RPos (" & E.Nat & ')');
- 
-             when PC_RPos_NF =>
-                Append (Result, "RPos (" & Str_NF (E.NF) & ')');
- 
-             when PC_RPos_NP =>
-                Append (Result, "RPos (" & Str_NP (E.NP) & ')');
- 
-             when PC_RTab_Nat =>
-                Append (Result, "RTab (" & E.Nat & ')');
- 
-             when PC_RTab_NF =>
-                Append (Result, "RTab (" & Str_NF (E.NF) & ')');
- 
-             when PC_RTab_NP =>
-                Append (Result, "RTab (" & Str_NP (E.NP) & ')');
- 
-             when PC_Setcur =>
-                Append (Result, "Setcur (" & Str_NP (E.Var) & ')');
- 
-             when PC_Span_CH =>
-                Append (Result, "Span ('" & E.Char & "')");
- 
-             when PC_Span_CS =>
-                Append (Result, "Span (" & Image (To_Sequence (E.CS)) & ')');
- 
-             when PC_Span_VF =>
-                Append (Result, "Span (" & Str_VF (E.VF) & ')');
- 
-             when PC_Span_VP =>
-                Append (Result, "Span (" & Str_VP (E.VP) & ')');
- 
-             when PC_String =>
-                Append (Result, Image (E.Str.all));
- 
-             when PC_String_2 =>
-                Append (Result, Image (E.Str2));
- 
-             when PC_String_3 =>
-                Append (Result, Image (E.Str3));
- 
-             when PC_String_4 =>
-                Append (Result, Image (E.Str4));
- 
-             when PC_String_5 =>
-                Append (Result, Image (E.Str5));
- 
-             when PC_String_6 =>
-                Append (Result, Image (E.Str6));
- 
-             when PC_String_VF =>
-                Append (Result, "(+" &  Str_VF (E.VF) & ')');
- 
-             when PC_String_VP =>
-                Append (Result, "(+" & Str_VP (E.VP) & ')');
- 
-             when PC_Succeed =>
-                Append (Result, "Succeed");
- 
-             when PC_Tab_Nat =>
-                Append (Result, "Tab (" & E.Nat & ')');
- 
-             when PC_Tab_NF =>
-                Append (Result, "Tab (" & Str_NF (E.NF) & ')');
- 
-             when PC_Tab_NP =>
-                Append (Result, "Tab (" & Str_NP (E.NP) & ')');
- 
-             when PC_Write_Imm =>
-                Append (Result, '(');
-                Image_Seq (E, Refs (E.Index - 1), True);
-                Append (Result, " * " & Str_FP (Refs (E.Index - 1).FP));
-                ER := Refs (E.Index - 1).Pthen;
- 
-             when PC_Write_OnM =>
-                Append (Result, '(');
-                Image_Seq (E.Pthen, Refs (E.Index - 1), True);
-                Append (Result, " ** " & Str_FP (Refs (E.Index - 1).FP));
-                ER := Refs (E.Index - 1).Pthen;
- 
-             --  Other pattern codes should not appear as leading elements
- 
-             when PC_Arb_Y
-                | PC_Arbno_Y
-                | PC_Assign
-                | PC_BreakX_X
-                | PC_EOP
-                | PC_Fence_Y
-                | PC_R_Remove
-                | PC_R_Restore
-                | PC_Unanchored
-             =>
-                Append (Result, "???");
-          end case;
- 
-          E := ER;
-       end Image_One;
- 
-       ---------------
-       -- Image_Seq --
-       ---------------
- 
-       procedure Image_Seq (E : PE_Ptr; Succ : PE_Ptr; Paren : Boolean) is
-          Indx : constant Natural := Length (Result);
-          E1   : PE_Ptr  := E;
-          Mult : Boolean := False;
- 
-       begin
-          --  The image of EOP is "" (the null string)
- 
-          if E = EOP then
-             Append (Result, """""");
- 
-          --  Else generate appropriate concatenation sequence
- 
-          else
-             loop
-                Image_One (E1);
-                exit when E1 = Succ;
-                exit when E1 = EOP;
-                Mult := True;
- 
-                if Kill_Ampersand then
-                   Kill_Ampersand := False;
-                else
-                   Append (Result, " & ");
-                end if;
-             end loop;
-          end if;
- 
-          if Mult and Paren then
-             Insert (Result, Indx + 1, "(");
-             Append (Result, ")");
-          end if;
-       end Image_Seq;
- 
-    --  Start of processing for Image
- 
-    begin
-       Build_Ref_Array (P.P, Refs);
-       Image_Seq (P.P, EOP, False);
-       return Result;
-    end Image;
- 
-    -----------
-    -- Is_In --
-    -----------
- 
-    function Is_In (C : Character; Str : String) return Boolean is
-    begin
-       for J in Str'Range loop
-          if Str (J) = C then
-             return True;
-          end if;
-       end loop;
- 
-       return False;
-    end Is_In;
- 
-    ---------
-    -- Len --
-    ---------
- 
-    function Len (Count : Natural) return Pattern is
-    begin
-       --  Note, the following is not just an optimization, it is needed
-       --  to ensure that Arbno (Len (0)) does not generate an infinite
-       --  matching loop (since PC_Len_Nat is OK_For_Simple_Arbno).
- 
-       if Count = 0 then
-          return (AFC with 0, new PE'(PC_Null, 1, EOP));
- 
-       else
-          return (AFC with 0, new PE'(PC_Len_Nat, 1, EOP, Count));
-       end if;
-    end Len;
- 
-    function Len (Count : Natural_Func) return Pattern is
-    begin
-       return (AFC with 0, new PE'(PC_Len_NF, 1, EOP, Count));
-    end Len;
- 
-    function Len (Count : not null access Natural) return Pattern is
-    begin
-       return (AFC with 0, new PE'(PC_Len_NP, 1, EOP, Natural_Ptr (Count)));
-    end Len;
- 
-    -----------------
-    -- Logic_Error --
-    -----------------
- 
-    procedure Logic_Error is
-    begin
-       raise Program_Error with
-          "Internal logic error in GNAT.Spitbol.Patterns";
-    end Logic_Error;
- 
-    -----------
-    -- Match --
-    -----------
- 
-    function Match
-      (Subject : VString;
-       Pat     : Pattern) return Boolean
-    is
-       S     : Big_String_Access;
-       L     : Natural;
-       Start : Natural;
-       Stop  : Natural;
-       pragma Unreferenced (Stop);
- 
-    begin
-       Get_String (Subject, S, L);
- 
-       if Debug_Mode then
-          XMatchD (S (1 .. L), Pat.P, Pat.Stk, Start, Stop);
-       else
-          XMatch  (S (1 .. L), Pat.P, Pat.Stk, Start, Stop);
-       end if;
- 
-       return Start /= 0;
-    end Match;
- 
-    function Match
-      (Subject : String;
-       Pat     : Pattern) return Boolean
-    is
-       Start, Stop : Natural;
-       pragma Unreferenced (Stop);
- 
-       subtype String1 is String (1 .. Subject'Length);
- 
-    begin
-       if Debug_Mode then
-          XMatchD (String1 (Subject), Pat.P, Pat.Stk, Start, Stop);
-       else
-          XMatch  (String1 (Subject), Pat.P, Pat.Stk, Start, Stop);
-       end if;
- 
-       return Start /= 0;
-    end Match;
- 
-    function Match
-      (Subject : VString_Var;
-       Pat     : Pattern;
-       Replace : VString) return Boolean
-    is
-       Start : Natural;
-       Stop  : Natural;
-       S     : Big_String_Access;
-       L     : Natural;
- 
-    begin
-       Get_String (Subject, S, L);
- 
-       if Debug_Mode then
-          XMatchD (S (1 .. L), Pat.P, Pat.Stk, Start, Stop);
-       else
-          XMatch  (S (1 .. L), Pat.P, Pat.Stk, Start, Stop);
-       end if;
- 
-       if Start = 0 then
-          return False;
-       else
-          Get_String (Replace, S, L);
-          Replace_Slice
-            (Subject'Unrestricted_Access.all, Start, Stop, S (1 .. L));
-          return True;
-       end if;
-    end Match;
- 
-    function Match
-      (Subject : VString_Var;
-       Pat     : Pattern;
-       Replace : String) return Boolean
-    is
-       Start : Natural;
-       Stop  : Natural;
-       S     : Big_String_Access;
-       L     : Natural;
- 
-    begin
-       Get_String (Subject, S, L);
- 
-       if Debug_Mode then
-          XMatchD (S (1 .. L), Pat.P, Pat.Stk, Start, Stop);
-       else
-          XMatch  (S (1 .. L), Pat.P, Pat.Stk, Start, Stop);
-       end if;
- 
-       if Start = 0 then
-          return False;
-       else
-          Replace_Slice
-            (Subject'Unrestricted_Access.all, Start, Stop, Replace);
-          return True;
-       end if;
-    end Match;
- 
-    procedure Match
-      (Subject : VString;
-       Pat     : Pattern)
-    is
-       S : Big_String_Access;
-       L : Natural;
- 
-       Start : Natural;
-       Stop  : Natural;
-       pragma Unreferenced (Start, Stop);
- 
-    begin
-       Get_String (Subject, S, L);
- 
-       if Debug_Mode then
-          XMatchD (S (1 .. L), Pat.P, Pat.Stk, Start, Stop);
-       else
-          XMatch  (S (1 .. L), Pat.P, Pat.Stk, Start, Stop);
-       end if;
-    end Match;
- 
-    procedure Match
-      (Subject : String;
-       Pat     : Pattern)
-    is
-       Start, Stop : Natural;
-       pragma Unreferenced (Start, Stop);
- 
-       subtype String1 is String (1 .. Subject'Length);
- 
-    begin
-       if Debug_Mode then
-          XMatchD (String1 (Subject), Pat.P, Pat.Stk, Start, Stop);
-       else
-          XMatch  (String1 (Subject), Pat.P, Pat.Stk, Start, Stop);
-       end if;
-    end Match;
- 
-    procedure Match
-      (Subject : in out VString;
-       Pat     : Pattern;
-       Replace : VString)
-    is
-       Start : Natural;
-       Stop  : Natural;
-       S     : Big_String_Access;
-       L     : Natural;
- 
-    begin
-       Get_String (Subject, S, L);
- 
-       if Debug_Mode then
-          XMatchD (S (1 .. L), Pat.P, Pat.Stk, Start, Stop);
-       else
-          XMatch  (S (1 .. L), Pat.P, Pat.Stk, Start, Stop);
-       end if;
- 
-       if Start /= 0 then
-          Get_String (Replace, S, L);
-          Replace_Slice (Subject, Start, Stop, S (1 .. L));
-       end if;
-    end Match;
- 
-    procedure Match
-      (Subject : in out VString;
-       Pat     : Pattern;
-       Replace : String)
-    is
-       Start : Natural;
-       Stop  : Natural;
-       S     : Big_String_Access;
-       L     : Natural;
- 
-    begin
-       Get_String (Subject, S, L);
- 
-       if Debug_Mode then
-          XMatchD (S (1 .. L), Pat.P, Pat.Stk, Start, Stop);
-       else
-          XMatch  (S (1 .. L), Pat.P, Pat.Stk, Start, Stop);
-       end if;
- 
-       if Start /= 0 then
-          Replace_Slice (Subject, Start, Stop, Replace);
-       end if;
-    end Match;
- 
-    function Match
-      (Subject : VString;
-       Pat     : PString) return Boolean
-    is
-       Pat_Len : constant Natural := Pat'Length;
-       S       : Big_String_Access;
-       L       : Natural;
- 
-    begin
-       Get_String (Subject, S, L);
- 
-       if Anchored_Mode then
-          if Pat_Len > L then
-             return False;
-          else
-             return Pat = S (1 .. Pat_Len);
-          end if;
- 
-       else
-          for J in 1 .. L - Pat_Len + 1 loop
-             if Pat = S (J .. J + (Pat_Len - 1)) then
-                return True;
-             end if;
-          end loop;
- 
-          return False;
-       end if;
-    end Match;
- 
-    function Match
-      (Subject : String;
-       Pat     : PString) return Boolean
-    is
-       Pat_Len : constant Natural := Pat'Length;
-       Sub_Len : constant Natural := Subject'Length;
-       SFirst  : constant Natural := Subject'First;
- 
-    begin
-       if Anchored_Mode then
-          if Pat_Len > Sub_Len then
-             return False;
-          else
-             return Pat = Subject (SFirst .. SFirst + Pat_Len - 1);
-          end if;
- 
-       else
-          for J in SFirst .. SFirst + Sub_Len - Pat_Len loop
-             if Pat = Subject (J .. J + (Pat_Len - 1)) then
-                return True;
-             end if;
-          end loop;
- 
-          return False;
-       end if;
-    end Match;
- 
-    function Match
-      (Subject : VString_Var;
-       Pat     : PString;
-       Replace : VString) return Boolean
-    is
-       Start : Natural;
-       Stop  : Natural;
-       S     : Big_String_Access;
-       L     : Natural;
- 
-    begin
-       Get_String (Subject, S, L);
- 
-       if Debug_Mode then
-          XMatchD (S (1 .. L), S_To_PE (Pat), 0, Start, Stop);
-       else
-          XMatch  (S (1 .. L), S_To_PE (Pat), 0, Start, Stop);
-       end if;
- 
-       if Start = 0 then
-          return False;
-       else
-          Get_String (Replace, S, L);
-          Replace_Slice
-            (Subject'Unrestricted_Access.all, Start, Stop, S (1 .. L));
-          return True;
-       end if;
-    end Match;
- 
-    function Match
-      (Subject : VString_Var;
-       Pat     : PString;
-       Replace : String) return Boolean
-    is
-       Start : Natural;
-       Stop  : Natural;
-       S     : Big_String_Access;
-       L     : Natural;
- 
-    begin
-       Get_String (Subject, S, L);
- 
-       if Debug_Mode then
-          XMatchD (S (1 .. L), S_To_PE (Pat), 0, Start, Stop);
-       else
-          XMatch  (S (1 .. L), S_To_PE (Pat), 0, Start, Stop);
-       end if;
- 
-       if Start = 0 then
-          return False;
-       else
-          Replace_Slice
-            (Subject'Unrestricted_Access.all, Start, Stop, Replace);
-          return True;
-       end if;
-    end Match;
- 
-    procedure Match
-      (Subject : VString;
-       Pat     : PString)
-    is
-       S : Big_String_Access;
-       L : Natural;
- 
-       Start : Natural;
-       Stop  : Natural;
-       pragma Unreferenced (Start, Stop);
- 
-    begin
-       Get_String (Subject, S, L);
- 
-       if Debug_Mode then
-          XMatchD (S (1 .. L), S_To_PE (Pat), 0, Start, Stop);
-       else
-          XMatch  (S (1 .. L), S_To_PE (Pat), 0, Start, Stop);
-       end if;
-    end Match;
- 
-    procedure Match
-      (Subject : String;
-       Pat     : PString)
-    is
-       Start, Stop : Natural;
-       pragma Unreferenced (Start, Stop);
- 
-       subtype String1 is String (1 .. Subject'Length);
- 
-    begin
-       if Debug_Mode then
-          XMatchD (String1 (Subject), S_To_PE (Pat), 0, Start, Stop);
-       else
-          XMatch  (String1 (Subject), S_To_PE (Pat), 0, Start, Stop);
-       end if;
-    end Match;
- 
-    procedure Match
-      (Subject : in out VString;
-       Pat     : PString;
-       Replace : VString)
-    is
-       Start : Natural;
-       Stop  : Natural;
-       S     : Big_String_Access;
-       L     : Natural;
- 
-    begin
-       Get_String (Subject, S, L);
- 
-       if Debug_Mode then
-          XMatchD (S (1 .. L), S_To_PE (Pat), 0, Start, Stop);
-       else
-          XMatch  (S (1 .. L), S_To_PE (Pat), 0, Start, Stop);
-       end if;
- 
-       if Start /= 0 then
-          Get_String (Replace, S, L);
-          Replace_Slice (Subject, Start, Stop, S (1 .. L));
-       end if;
-    end Match;
- 
-    procedure Match
-      (Subject : in out VString;
-       Pat     : PString;
-       Replace : String)
-    is
-       Start : Natural;
-       Stop  : Natural;
-       S     : Big_String_Access;
-       L     : Natural;
- 
-    begin
-       Get_String (Subject, S, L);
- 
-       if Debug_Mode then
-          XMatchD (S (1 .. L), S_To_PE (Pat), 0, Start, Stop);
-       else
-          XMatch  (S (1 .. L), S_To_PE (Pat), 0, Start, Stop);
-       end if;
- 
-       if Start /= 0 then
-          Replace_Slice (Subject, Start, Stop, Replace);
-       end if;
-    end Match;
- 
-    function Match
-      (Subject : VString_Var;
-       Pat     : Pattern;
-       Result  : Match_Result_Var) return Boolean
-    is
-       Start : Natural;
-       Stop  : Natural;
-       S     : Big_String_Access;
-       L     : Natural;
- 
-    begin
-       Get_String (Subject, S, L);
- 
-       if Debug_Mode then
-          XMatchD (S (1 .. L), Pat.P, Pat.Stk, Start, Stop);
-       else
-          XMatch  (S (1 .. L), Pat.P, Pat.Stk, Start, Stop);
-       end if;
- 
-       if Start = 0 then
-          Result'Unrestricted_Access.all.Var := null;
-          return False;
- 
-       else
-          Result'Unrestricted_Access.all.Var   := Subject'Unrestricted_Access;
-          Result'Unrestricted_Access.all.Start := Start;
-          Result'Unrestricted_Access.all.Stop  := Stop;
-          return True;
-       end if;
-    end Match;
- 
-    procedure Match
-      (Subject : in out VString;
-       Pat     : Pattern;
-       Result  : out Match_Result)
-    is
-       Start : Natural;
-       Stop  : Natural;
-       S     : Big_String_Access;
-       L     : Natural;
- 
-    begin
-       Get_String (Subject, S, L);
- 
-       if Debug_Mode then
-          XMatchD (S (1 .. L), Pat.P, Pat.Stk, Start, Stop);
-       else
-          XMatch  (S (1 .. L), Pat.P, Pat.Stk, Start, Stop);
-       end if;
- 
-       if Start = 0 then
-          Result.Var := null;
-       else
-          Result.Var   := Subject'Unrestricted_Access;
-          Result.Start := Start;
-          Result.Stop  := Stop;
-       end if;
-    end Match;
- 
-    ---------------
-    -- New_LineD --
-    ---------------
- 
-    procedure New_LineD is
-    begin
-       if Internal_Debug then
-          New_Line;
-       end if;
-    end New_LineD;
- 
-    ------------
-    -- NotAny --
-    ------------
- 
-    function NotAny (Str : String) return Pattern is
-    begin
-       return (AFC with 0, new PE'(PC_NotAny_CS, 1, EOP, To_Set (Str)));
-    end NotAny;
- 
-    function NotAny (Str : VString) return Pattern is
-    begin
-       return NotAny (S (Str));
-    end NotAny;
- 
-    function NotAny (Str : Character) return Pattern is
-    begin
-       return (AFC with 0, new PE'(PC_NotAny_CH, 1, EOP, Str));
-    end NotAny;
- 
-    function NotAny (Str : Character_Set) return Pattern is
-    begin
-       return (AFC with 0, new PE'(PC_NotAny_CS, 1, EOP, Str));
-    end NotAny;
- 
-    function NotAny (Str : not null access VString) return Pattern is
-    begin
-       return (AFC with 0, new PE'(PC_NotAny_VP, 1, EOP, VString_Ptr (Str)));
-    end NotAny;
- 
-    function NotAny (Str : VString_Func) return Pattern is
-    begin
-       return (AFC with 0, new PE'(PC_NotAny_VF, 1, EOP, Str));
-    end NotAny;
- 
-    -----------
-    -- NSpan --
-    -----------
- 
-    function NSpan (Str : String) return Pattern is
-    begin
-       return (AFC with 0, new PE'(PC_NSpan_CS, 1, EOP, To_Set (Str)));
-    end NSpan;
- 
-    function NSpan (Str : VString) return Pattern is
-    begin
-       return NSpan (S (Str));
-    end NSpan;
- 
-    function NSpan (Str : Character) return Pattern is
-    begin
-       return (AFC with 0, new PE'(PC_NSpan_CH, 1, EOP, Str));
-    end NSpan;
- 
-    function NSpan (Str : Character_Set) return Pattern is
-    begin
-       return (AFC with 0, new PE'(PC_NSpan_CS, 1, EOP, Str));
-    end NSpan;
- 
-    function NSpan (Str : not null access VString) return Pattern is
-    begin
-       return (AFC with 0, new PE'(PC_NSpan_VP, 1, EOP, VString_Ptr (Str)));
-    end NSpan;
- 
-    function NSpan (Str : VString_Func) return Pattern is
-    begin
-       return (AFC with 0, new PE'(PC_NSpan_VF, 1, EOP, Str));
-    end NSpan;
- 
-    ---------
-    -- Pos --
-    ---------
- 
-    function Pos (Count : Natural) return Pattern is
-    begin
-       return (AFC with 0, new PE'(PC_Pos_Nat, 1, EOP, Count));
-    end Pos;
- 
-    function Pos (Count : Natural_Func) return Pattern is
-    begin
-       return (AFC with 0, new PE'(PC_Pos_NF, 1, EOP, Count));
-    end Pos;
- 
-    function Pos (Count : not null access Natural) return Pattern is
-    begin
-       return (AFC with 0, new PE'(PC_Pos_NP, 1, EOP, Natural_Ptr (Count)));
-    end Pos;
- 
-    ----------
-    -- PutD --
-    ----------
- 
-    procedure PutD (Str : String) is
-    begin
-       if Internal_Debug then
-          Put (Str);
-       end if;
-    end PutD;
- 
-    ---------------
-    -- Put_LineD --
-    ---------------
- 
-    procedure Put_LineD (Str : String) is
-    begin
-       if Internal_Debug then
-          Put_Line (Str);
-       end if;
-    end Put_LineD;
- 
-    -------------
-    -- Replace --
-    -------------
- 
-    procedure Replace
-      (Result  : in out Match_Result;
-       Replace : VString)
-    is
-       S : Big_String_Access;
-       L : Natural;
- 
-    begin
-       Get_String (Replace, S, L);
- 
-       if Result.Var /= null then
-          Replace_Slice (Result.Var.all, Result.Start, Result.Stop, S (1 .. L));
-          Result.Var := null;
-       end if;
-    end Replace;
- 
-    ----------
-    -- Rest --
-    ----------
- 
-    function Rest return Pattern is
-    begin
-       return (AFC with 0, new PE'(PC_Rest, 1, EOP));
-    end Rest;
- 
-    ----------
-    -- Rpos --
-    ----------
- 
-    function Rpos (Count : Natural) return Pattern is
-    begin
-       return (AFC with 0, new PE'(PC_RPos_Nat, 1, EOP, Count));
-    end Rpos;
- 
-    function Rpos (Count : Natural_Func) return Pattern is
-    begin
-       return (AFC with 0, new PE'(PC_RPos_NF, 1, EOP, Count));
-    end Rpos;
- 
-    function Rpos (Count : not null access Natural) return Pattern is
-    begin
-       return (AFC with 0, new PE'(PC_RPos_NP, 1, EOP, Natural_Ptr (Count)));
-    end Rpos;
- 
-    ----------
-    -- Rtab --
-    ----------
- 
-    function Rtab (Count : Natural) return Pattern is
-    begin
-       return (AFC with 0, new PE'(PC_RTab_Nat, 1, EOP, Count));
-    end Rtab;
- 
-    function Rtab (Count : Natural_Func) return Pattern is
-    begin
-       return (AFC with 0, new PE'(PC_RTab_NF, 1, EOP, Count));
-    end Rtab;
- 
-    function Rtab (Count : not null access Natural) return Pattern is
-    begin
-       return (AFC with 0, new PE'(PC_RTab_NP, 1, EOP, Natural_Ptr (Count)));
-    end Rtab;
- 
-    -------------
-    -- S_To_PE --
-    -------------
- 
-    function S_To_PE (Str : PString) return PE_Ptr is
-       Len : constant Natural := Str'Length;
- 
-    begin
-       case Len is
-          when 0 =>
-             return new PE'(PC_Null,     1, EOP);
- 
-          when 1 =>
-             return new PE'(PC_Char,     1, EOP, Str (Str'First));
- 
-          when 2 =>
-             return new PE'(PC_String_2, 1, EOP, Str);
- 
-          when 3 =>
-             return new PE'(PC_String_3, 1, EOP, Str);
- 
-          when 4 =>
-             return new PE'(PC_String_4, 1, EOP, Str);
- 
-          when 5 =>
-             return new PE'(PC_String_5, 1, EOP, Str);
- 
-          when 6 =>
-             return new PE'(PC_String_6, 1, EOP, Str);
- 
-          when others =>
-             return new PE'(PC_String, 1, EOP, new String'(Str));
-       end case;
-    end S_To_PE;
- 
-    -------------------
-    -- Set_Successor --
-    -------------------
- 
-    --  Note: this procedure is not used by the normal concatenation circuit,
-    --  since other fixups are required on the left operand in this case, and
-    --  they might as well be done all together.
- 
-    procedure Set_Successor (Pat : PE_Ptr; Succ : PE_Ptr) is
-    begin
-       if Pat = null then
-          Uninitialized_Pattern;
- 
-       elsif Pat = EOP then
-          Logic_Error;
- 
-       else
-          declare
-             Refs : Ref_Array (1 .. Pat.Index);
-             --  We build a reference array for L whose N'th element points to
-             --  the pattern element of L whose original Index value is N.
- 
-             P : PE_Ptr;
- 
-          begin
-             Build_Ref_Array (Pat, Refs);
- 
-             for J in Refs'Range loop
-                P := Refs (J);
- 
-                if P.Pthen = EOP then
-                   P.Pthen := Succ;
-                end if;
- 
-                if P.Pcode in PC_Has_Alt and then P.Alt = EOP then
-                   P.Alt := Succ;
-                end if;
-             end loop;
-          end;
-       end if;
-    end Set_Successor;
- 
-    ------------
-    -- Setcur --
-    ------------
- 
-    function Setcur (Var : not null access Natural) return Pattern is
-    begin
-       return (AFC with 0, new PE'(PC_Setcur, 1, EOP, Natural_Ptr (Var)));
-    end Setcur;
- 
-    ----------
-    -- Span --
-    ----------
- 
-    function Span (Str : String) return Pattern is
-    begin
-       return (AFC with 0, new PE'(PC_Span_CS, 1, EOP, To_Set (Str)));
-    end Span;
- 
-    function Span (Str : VString) return Pattern is
-    begin
-       return Span (S (Str));
-    end Span;
- 
-    function Span (Str : Character) return Pattern is
-    begin
-       return (AFC with 0, new PE'(PC_Span_CH, 1, EOP, Str));
-    end Span;
- 
-    function Span (Str : Character_Set) return Pattern is
-    begin
-       return (AFC with 0, new PE'(PC_Span_CS, 1, EOP, Str));
-    end Span;
- 
-    function Span (Str : not null access VString) return Pattern is
-    begin
-       return (AFC with 0, new PE'(PC_Span_VP, 1, EOP, VString_Ptr (Str)));
-    end Span;
- 
-    function Span (Str : VString_Func) return Pattern is
-    begin
-       return (AFC with 0, new PE'(PC_Span_VF, 1, EOP, Str));
-    end Span;
- 
-    ------------
-    -- Str_BF --
-    ------------
- 
-    function Str_BF (A : Boolean_Func) return String is
-       function To_A is new Ada.Unchecked_Conversion (Boolean_Func, Address);
-    begin
-       return "BF(" & Image (To_A (A)) & ')';
-    end Str_BF;
- 
-    ------------
-    -- Str_FP --
-    ------------
- 
-    function Str_FP (A : File_Ptr) return String is
-    begin
-       return "FP(" & Image (A.all'Address) & ')';
-    end Str_FP;
- 
-    ------------
-    -- Str_NF --
-    ------------
- 
-    function Str_NF (A : Natural_Func) return String is
-       function To_A is new Ada.Unchecked_Conversion (Natural_Func, Address);
-    begin
-       return "NF(" & Image (To_A (A)) & ')';
-    end Str_NF;
- 
-    ------------
-    -- Str_NP --
-    ------------
- 
-    function Str_NP (A : Natural_Ptr) return String is
-    begin
-       return "NP(" & Image (A.all'Address) & ')';
-    end Str_NP;
- 
-    ------------
-    -- Str_PP --
-    ------------
- 
-    function Str_PP (A : Pattern_Ptr) return String is
-    begin
-       return "PP(" & Image (A.all'Address) & ')';
-    end Str_PP;
- 
-    ------------
-    -- Str_VF --
-    ------------
- 
-    function Str_VF (A : VString_Func) return String is
-       function To_A is new Ada.Unchecked_Conversion (VString_Func, Address);
-    begin
-       return "VF(" & Image (To_A (A)) & ')';
-    end Str_VF;
- 
-    ------------
-    -- Str_VP --
-    ------------
- 
-    function Str_VP (A : VString_Ptr) return String is
-    begin
-       return "VP(" & Image (A.all'Address) & ')';
-    end Str_VP;
- 
-    -------------
-    -- Succeed --
-    -------------
- 
-    function Succeed return Pattern is
-    begin
-       return (AFC with 1, new PE'(PC_Succeed, 1, EOP));
-    end Succeed;
- 
-    ---------
-    -- Tab --
-    ---------
- 
-    function Tab (Count : Natural) return Pattern is
-    begin
-       return (AFC with 0, new PE'(PC_Tab_Nat, 1, EOP, Count));
-    end Tab;
- 
-    function Tab (Count : Natural_Func) return Pattern is
-    begin
-       return (AFC with 0, new PE'(PC_Tab_NF, 1, EOP, Count));
-    end Tab;
- 
-    function Tab (Count : not null access Natural) return Pattern is
-    begin
-       return (AFC with 0, new PE'(PC_Tab_NP, 1, EOP, Natural_Ptr (Count)));
-    end Tab;
- 
-    ---------------------------
-    -- Uninitialized_Pattern --
-    ---------------------------
- 
-    procedure Uninitialized_Pattern is
-    begin
-       raise Program_Error with
-          "uninitialized value of type GNAT.Spitbol.Patterns.Pattern";
-    end Uninitialized_Pattern;
- 
-    ------------
-    -- XMatch --
-    ------------
- 
-    procedure XMatch
-      (Subject : String;
-       Pat_P   : PE_Ptr;
-       Pat_S   : Natural;
-       Start   : out Natural;
-       Stop    : out Natural)
-    is
-       Node : PE_Ptr;
-       --  Pointer to current pattern node. Initialized from Pat_P, and then
-       --  updated as the match proceeds through its constituent elements.
- 
-       Length : constant Natural := Subject'Length;
-       --  Length of string (= Subject'Last, since Subject'First is always 1)
- 
-       Cursor : Integer := 0;
-       --  If the value is non-negative, then this value is the index showing
-       --  the current position of the match in the subject string. The next
-       --  character to be matched is at Subject (Cursor + 1). Note that since
-       --  our view of the subject string in XMatch always has a lower bound
-       --  of one, regardless of original bounds, that this definition exactly
-       --  corresponds to the cursor value as referenced by functions like Pos.
-       --
-       --  If the value is negative, then this is a saved stack pointer,
-       --  typically a base pointer of an inner or outer region. Cursor
-       --  temporarily holds such a value when it is popped from the stack
-       --  by Fail. In all cases, Cursor is reset to a proper non-negative
-       --  cursor value before the match proceeds (e.g. by propagating the
-       --  failure and popping a "real" cursor value from the stack.
- 
-       PE_Unanchored : aliased PE := (PC_Unanchored, 0, Pat_P);
-       --  Dummy pattern element used in the unanchored case
- 
-       Stack : Stack_Type;
-       --  The pattern matching failure stack for this call to Match
- 
-       Stack_Ptr : Stack_Range;
-       --  Current stack pointer. This points to the top element of the stack
-       --  that is currently in use. At the outer level this is the special
-       --  entry placed on the stack according to the anchor mode.
- 
-       Stack_Init : constant Stack_Range := Stack'First + 1;
-       --  This is the initial value of the Stack_Ptr and Stack_Base. The
-       --  initial (Stack'First) element of the stack is not used so that
-       --  when we pop the last element off, Stack_Ptr is still in range.
- 
-       Stack_Base : Stack_Range;
-       --  This value is the stack base value, i.e. the stack pointer for the
-       --  first history stack entry in the current stack region. See separate
-       --  section on handling of recursive pattern matches.
- 
-       Assign_OnM : Boolean := False;
-       --  Set True if assign-on-match or write-on-match operations may be
-       --  present in the history stack, which must then be scanned on a
-       --  successful match.
- 
-       procedure Pop_Region;
-       pragma Inline (Pop_Region);
-       --  Used at the end of processing of an inner region. If the inner
-       --  region left no stack entries, then all trace of it is removed.
-       --  Otherwise a PC_Restore_Region entry is pushed to ensure proper
-       --  handling of alternatives in the inner region.
- 
-       procedure Push (Node : PE_Ptr);
-       pragma Inline (Push);
-       --  Make entry in pattern matching stack with current cursor value
- 
-       procedure Push_Region;
-       pragma Inline (Push_Region);
-       --  This procedure makes a new region on the history stack. The
-       --  caller first establishes the special entry on the stack, but
-       --  does not push the stack pointer. Then this call stacks a
-       --  PC_Remove_Region node, on top of this entry, using the cursor
-       --  field of the PC_Remove_Region entry to save the outer level
-       --  stack base value, and resets the stack base to point to this
-       --  PC_Remove_Region node.
- 
-       ----------------
-       -- Pop_Region --
-       ----------------
- 
-       procedure Pop_Region is
-       begin
-          --  If nothing was pushed in the inner region, we can just get
-          --  rid of it entirely, leaving no traces that it was ever there
- 
-          if Stack_Ptr = Stack_Base then
-             Stack_Ptr := Stack_Base - 2;
-             Stack_Base := Stack (Stack_Ptr + 2).Cursor;
- 
-          --  If stuff was pushed in the inner region, then we have to
-          --  push a PC_R_Restore node so that we properly handle possible
-          --  rematches within the region.
- 
-          else
-             Stack_Ptr := Stack_Ptr + 1;
-             Stack (Stack_Ptr).Cursor := Stack_Base;
-             Stack (Stack_Ptr).Node   := CP_R_Restore'Access;
-             Stack_Base := Stack (Stack_Base).Cursor;
-          end if;
-       end Pop_Region;
- 
-       ----------
-       -- Push --
-       ----------
- 
-       procedure Push (Node : PE_Ptr) is
-       begin
-          Stack_Ptr := Stack_Ptr + 1;
-          Stack (Stack_Ptr).Cursor := Cursor;
-          Stack (Stack_Ptr).Node   := Node;
-       end Push;
- 
-       -----------------
-       -- Push_Region --
-       -----------------
- 
-       procedure Push_Region is
-       begin
-          Stack_Ptr := Stack_Ptr + 2;
-          Stack (Stack_Ptr).Cursor := Stack_Base;
-          Stack (Stack_Ptr).Node   := CP_R_Remove'Access;
-          Stack_Base := Stack_Ptr;
-       end Push_Region;
- 
-    --  Start of processing for XMatch
- 
-    begin
-       if Pat_P = null then
-          Uninitialized_Pattern;
-       end if;
- 
-       --  Check we have enough stack for this pattern. This check deals with
-       --  every possibility except a match of a recursive pattern, where we
-       --  make a check at each recursion level.
- 
-       if Pat_S >= Stack_Size - 1 then
-          raise Pattern_Stack_Overflow;
-       end if;
- 
-       --  In anchored mode, the bottom entry on the stack is an abort entry
- 
-       if Anchored_Mode then
-          Stack (Stack_Init).Node   := CP_Cancel'Access;
-          Stack (Stack_Init).Cursor := 0;
- 
-       --  In unanchored more, the bottom entry on the stack references
-       --  the special pattern element PE_Unanchored, whose Pthen field
-       --  points to the initial pattern element. The cursor value in this
-       --  entry is the number of anchor moves so far.
- 
-       else
-          Stack (Stack_Init).Node   := PE_Unanchored'Unchecked_Access;
-          Stack (Stack_Init).Cursor := 0;
-       end if;
- 
-       Stack_Ptr    := Stack_Init;
-       Stack_Base   := Stack_Ptr;
-       Cursor       := 0;
-       Node         := Pat_P;
-       goto Match;
- 
-       -----------------------------------------
-       -- Main Pattern Matching State Control --
-       -----------------------------------------
- 
-       --  This is a state machine which uses gotos to change state. The
-       --  initial state is Match, to initiate the matching of the first
-       --  element, so the goto Match above starts the match. In the
-       --  following descriptions, we indicate the global values that
-       --  are relevant for the state transition.
- 
-       --  Come here if entire match fails
- 
-       <<Match_Fail>>
-          Start := 0;
-          Stop  := 0;
-          return;
- 
-       --  Come here if entire match succeeds
- 
-       --    Cursor        current position in subject string
- 
-       <<Match_Succeed>>
-          Start := Stack (Stack_Init).Cursor + 1;
-          Stop  := Cursor;
- 
-          --  Scan history stack for deferred assignments or writes
- 
-          if Assign_OnM then
-             for S in Stack_Init .. Stack_Ptr loop
-                if Stack (S).Node = CP_Assign'Access then
-                   declare
-                      Inner_Base    : constant Stack_Range :=
-                                        Stack (S + 1).Cursor;
-                      Special_Entry : constant Stack_Range :=
-                                        Inner_Base - 1;
-                      Node_OnM      : constant PE_Ptr  :=
-                                        Stack (Special_Entry).Node;
-                      Start         : constant Natural :=
-                                        Stack (Special_Entry).Cursor + 1;
-                      Stop          : constant Natural := Stack (S).Cursor;
- 
-                   begin
-                      if Node_OnM.Pcode = PC_Assign_OnM then
-                         Set_Unbounded_String
-                           (Node_OnM.VP.all, Subject (Start .. Stop));
- 
-                      elsif Node_OnM.Pcode = PC_Write_OnM then
-                         Put_Line (Node_OnM.FP.all, Subject (Start .. Stop));
- 
-                      else
-                         Logic_Error;
-                      end if;
-                   end;
-                end if;
-             end loop;
-          end if;
- 
-          return;
- 
-       --  Come here if attempt to match current element fails
- 
-       --    Stack_Base    current stack base
-       --    Stack_Ptr     current stack pointer
- 
-       <<Fail>>
-          Cursor := Stack (Stack_Ptr).Cursor;
-          Node   := Stack (Stack_Ptr).Node;
-          Stack_Ptr := Stack_Ptr - 1;
-          goto Match;
- 
-       --  Come here if attempt to match current element succeeds
- 
-       --    Cursor        current position in subject string
-       --    Node          pointer to node successfully matched
-       --    Stack_Base    current stack base
-       --    Stack_Ptr     current stack pointer
- 
-       <<Succeed>>
-          Node := Node.Pthen;
- 
-       --  Come here to match the next pattern element
- 
-       --    Cursor        current position in subject string
-       --    Node          pointer to node to be matched
-       --    Stack_Base    current stack base
-       --    Stack_Ptr     current stack pointer
- 
-       <<Match>>
- 
-       --------------------------------------------------
-       -- Main Pattern Match Element Matching Routines --
-       --------------------------------------------------
- 
-       --  Here is the case statement that processes the current node. The
-       --  processing for each element does one of five things:
- 
-       --    goto Succeed        to move to the successor
-       --    goto Match_Succeed  if the entire match succeeds
-       --    goto Match_Fail     if the entire match fails
-       --    goto Fail           to signal failure of current match
- 
-       --  Processing is NOT allowed to fall through
- 
-       case Node.Pcode is
- 
-          --  Cancel
- 
-          when PC_Cancel =>
-             goto Match_Fail;
- 
-          --  Alternation
- 
-          when PC_Alt =>
-             Push (Node.Alt);
-             Node := Node.Pthen;
-             goto Match;
- 
-          --  Any (one character case)
- 
-          when PC_Any_CH =>
-             if Cursor < Length
-               and then Subject (Cursor + 1) = Node.Char
-             then
-                Cursor := Cursor + 1;
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
- 
-          --  Any (character set case)
- 
-          when PC_Any_CS =>
-             if Cursor < Length
-               and then Is_In (Subject (Cursor + 1), Node.CS)
-             then
-                Cursor := Cursor + 1;
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
- 
-          --  Any (string function case)
- 
-          when PC_Any_VF => declare
-             U : constant VString := Node.VF.all;
-             S : Big_String_Access;
-             L : Natural;
- 
-          begin
-             Get_String (U, S, L);
- 
-             if Cursor < Length
-               and then Is_In (Subject (Cursor + 1), S (1 .. L))
-             then
-                Cursor := Cursor + 1;
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
-          end;
- 
-          --  Any (string pointer case)
- 
-          when PC_Any_VP => declare
-             U : constant VString := Node.VP.all;
-             S : Big_String_Access;
-             L : Natural;
- 
-          begin
-             Get_String (U, S, L);
- 
-             if Cursor < Length
-               and then Is_In (Subject (Cursor + 1), S (1 .. L))
-             then
-                Cursor := Cursor + 1;
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
-          end;
- 
-          --  Arb (initial match)
- 
-          when PC_Arb_X =>
-             Push (Node.Alt);
-             Node := Node.Pthen;
-             goto Match;
- 
-          --  Arb (extension)
- 
-          when PC_Arb_Y =>
-             if Cursor < Length then
-                Cursor := Cursor + 1;
-                Push (Node);
-                goto Succeed;
-             else
-                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 =>
-             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 =>
-             Push (Node.Alt);
-             Node := Node.Pthen;
-             goto Match;
- 
-          --  Arbno_Y (Arbno rematch). This is the node that is executed
-          --  following successful matching of one instance of a complex
-          --  Arbno pattern.
- 
-          when PC_Arbno_Y => declare
-             Null_Match : constant Boolean :=
-                            Cursor = Stack (Stack_Base - 1).Cursor;
- 
-          begin
-             Pop_Region;
- 
-             --  If arbno extension matched null, then immediately fail
- 
-             if Null_Match then
-                goto Fail;
-             end if;
- 
-             --  Here we must do a stack check to make sure enough stack
-             --  is left. This check will happen once for each instance of
-             --  the Arbno pattern that is matched. The Nat field of a
-             --  PC_Arbno pattern contains the maximum stack entries needed
-             --  for the Arbno with one instance and the successor pattern
- 
-             if Stack_Ptr + Node.Nat >= Stack'Last then
-                raise Pattern_Stack_Overflow;
-             end if;
- 
-             goto Succeed;
-          end;
- 
-          --  Assign. If this node is executed, it means the assign-on-match
-          --  or write-on-match operation will not happen after all, so we
-          --  is propagate the failure, removing the PC_Assign node.
- 
-          when PC_Assign =>
-             goto Fail;
- 
-          --  Assign immediate. This node performs the actual assignment
- 
-          when PC_Assign_Imm =>
-             Set_Unbounded_String
-               (Node.VP.all,
-                Subject (Stack (Stack_Base - 1).Cursor + 1 .. Cursor));
-             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;
-             Assign_OnM := True;
-             goto Succeed;
- 
-          --  Bal
- 
-          when PC_Bal =>
-             if Cursor >= Length or else Subject (Cursor + 1) = ')' then
-                goto Fail;
- 
-             elsif Subject (Cursor + 1) = '(' then
-                declare
-                   Paren_Count : Natural := 1;
- 
-                begin
-                   loop
-                      Cursor := Cursor + 1;
- 
-                      if Cursor >= Length then
-                         goto Fail;
- 
-                      elsif Subject (Cursor + 1) = '(' then
-                         Paren_Count := Paren_Count + 1;
- 
-                      elsif Subject (Cursor + 1) = ')' then
-                         Paren_Count := Paren_Count - 1;
-                         exit when Paren_Count = 0;
-                      end if;
-                   end loop;
-                end;
-             end if;
- 
-             Cursor := Cursor + 1;
-             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;
-                else
-                   Cursor := Cursor + 1;
-                end if;
-             end loop;
- 
-             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;
-                else
-                   Cursor := Cursor + 1;
-                end if;
-             end loop;
- 
-             goto Fail;
- 
-          --  BreakX (string function case)
- 
-          when PC_BreakX_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;
- 
-          --  BreakX (string pointer case)
- 
-          when PC_BreakX_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_X (BreakX extension). See section on "Compound Pattern
-          --  Structures". This node is the alternative that is stacked to
-          --  skip past the break character and extend the break.
- 
-          when PC_BreakX_X =>
-             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 =>
-             if Stack_Base = Stack_Init then
-                goto Match_Succeed;
- 
-             --  End of recursive inner match. See separate section on
-             --  handing of recursive pattern matches for details.
- 
-             else
-                Node := Stack (Stack_Base - 1).Node;
-                Pop_Region;
-                goto Match;
-             end if;
- 
-          --  Fail
- 
-          when PC_Fail =>
-             goto Fail;
- 
-          --  Fence (built in pattern)
- 
-          when PC_Fence =>
-             Push (CP_Cancel'Access);
-             goto Succeed;
- 
-          --  Fence function node X. This is the node that gets control
-          --  after a successful match of the fenced pattern.
- 
-          when PC_Fence_X =>
-             Stack_Ptr := Stack_Ptr + 1;
-             Stack (Stack_Ptr).Cursor := Stack_Base;
-             Stack (Stack_Ptr).Node   := CP_Fence_Y'Access;
-             Stack_Base := Stack (Stack_Base).Cursor;
-             goto Succeed;
- 
-          --  Fence function node Y. This is the node that gets control on
-          --  a failure that occurs after the fenced pattern has matched.
- 
-          --  Note: the Cursor at this stage is actually the inner stack
-          --  base value. We don't reset this, but we do use it to strip
-          --  off all the entries made by the fenced pattern.
- 
-          when PC_Fence_Y =>
-             Stack_Ptr := Cursor - 2;
-             goto Fail;
- 
-          --  Len (integer case)
- 
-          when PC_Len_Nat =>
-             if Cursor + Node.Nat > Length then
-                goto Fail;
-             else
-                Cursor := Cursor + Node.Nat;
-                goto Succeed;
-             end if;
- 
-          --  Len (Integer function case)
- 
-          when PC_Len_NF => declare
-             N : constant Natural := Node.NF.all;
-          begin
-             if Cursor + N > Length then
-                goto Fail;
-             else
-                Cursor := Cursor + N;
-                goto Succeed;
-             end if;
-          end;
- 
-          --  Len (integer pointer case)
- 
-          when PC_Len_NP =>
-             if Cursor + Node.NP.all > Length then
-                goto Fail;
-             else
-                Cursor := Cursor + Node.NP.all;
-                goto Succeed;
-             end if;
- 
-          --  NotAny (one character case)
- 
-          when PC_NotAny_CH =>
-             if Cursor < Length
-               and then Subject (Cursor + 1) /= Node.Char
-             then
-                Cursor := Cursor + 1;
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
- 
-          --  NotAny (character set case)
- 
-          when PC_NotAny_CS =>
-             if Cursor < Length
-               and then not Is_In (Subject (Cursor + 1), Node.CS)
-             then
-                Cursor := Cursor + 1;
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
- 
-          --  NotAny (string function case)
- 
-          when PC_NotAny_VF => declare
-             U : constant VString := Node.VF.all;
-             S : Big_String_Access;
-             L : Natural;
- 
-          begin
-             Get_String (U, S, L);
- 
-             if Cursor < Length
-               and then
-                 not Is_In (Subject (Cursor + 1), S (1 .. L))
-             then
-                Cursor := Cursor + 1;
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
-          end;
- 
-          --  NotAny (string pointer case)
- 
-          when PC_NotAny_VP => declare
-             U : constant VString := Node.VP.all;
-             S : Big_String_Access;
-             L : Natural;
- 
-          begin
-             Get_String (U, S, L);
- 
-             if Cursor < Length
-               and then
-                 not Is_In (Subject (Cursor + 1), S (1 .. L))
-             then
-                Cursor := Cursor + 1;
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
-          end;
- 
-          --  NSpan (one character case)
- 
-          when PC_NSpan_CH =>
-             while Cursor < Length
-               and then Subject (Cursor + 1) = Node.Char
-             loop
-                Cursor := Cursor + 1;
-             end loop;
- 
-             goto Succeed;
- 
-          --  NSpan (character set case)
- 
-          when PC_NSpan_CS =>
-             while Cursor < Length
-               and then Is_In (Subject (Cursor + 1), Node.CS)
-             loop
-                Cursor := Cursor + 1;
-             end loop;
- 
-             goto Succeed;
- 
-          --  NSpan (string function case)
- 
-          when PC_NSpan_VF => declare
-             U : constant VString := Node.VF.all;
-             S : Big_String_Access;
-             L : Natural;
- 
-          begin
-             Get_String (U, S, L);
- 
-             while Cursor < Length
-               and then Is_In (Subject (Cursor + 1), S (1 .. L))
-             loop
-                Cursor := Cursor + 1;
-             end loop;
- 
-             goto Succeed;
-          end;
- 
-          --  NSpan (string pointer case)
- 
-          when PC_NSpan_VP => declare
-             U : constant VString := Node.VP.all;
-             S : Big_String_Access;
-             L : Natural;
- 
-          begin
-             Get_String (U, S, L);
- 
-             while Cursor < Length
-               and then Is_In (Subject (Cursor + 1), S (1 .. L))
-             loop
-                Cursor := Cursor + 1;
-             end loop;
- 
-             goto Succeed;
-          end;
- 
-          --  Null string
- 
-          when PC_Null =>
-             goto Succeed;
- 
-          --  Pos (integer case)
- 
-          when PC_Pos_Nat =>
-             if Cursor = Node.Nat then
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
- 
-          --  Pos (Integer function case)
- 
-          when PC_Pos_NF => declare
-             N : constant Natural := Node.NF.all;
-          begin
-             if Cursor = N then
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
-          end;
- 
-          --  Pos (integer pointer case)
- 
-          when PC_Pos_NP =>
-             if Cursor = Node.NP.all then
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
- 
-          --  Predicate function
- 
-          when PC_Pred_Func =>
-             if Node.BF.all then
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
- 
-          --  Region Enter. Initiate new pattern history stack region
- 
-          when PC_R_Enter =>
-             Stack (Stack_Ptr + 1).Cursor := Cursor;
-             Push_Region;
-             goto Succeed;
- 
-          --  Region Remove node. This is the node stacked by an R_Enter.
-          --  It removes the special format stack entry right underneath, and
-          --  then restores the outer level stack base and signals failure.
- 
-          --  Note: the cursor value at this stage is actually the (negative)
-          --  stack base value for the outer level.
- 
-          when PC_R_Remove =>
-             Stack_Base := Cursor;
-             Stack_Ptr := Stack_Ptr - 1;
-             goto Fail;
- 
-          --  Region restore node. This is the node stacked at the end of an
-          --  inner level match. Its function is to restore the inner level
-          --  region, so that alternatives in this region can be sought.
- 
-          --  Note: the Cursor at this stage is actually the negative of the
-          --  inner stack base value, which we use to restore the inner region.
- 
-          when PC_R_Restore =>
-             Stack_Base := Cursor;
-             goto Fail;
- 
-          --  Rest
- 
-          when PC_Rest =>
-             Cursor := Length;
-             goto Succeed;
- 
-          --  Initiate recursive match (pattern pointer case)
- 
-          when PC_Rpat =>
-             Stack (Stack_Ptr + 1).Node := Node.Pthen;
-             Push_Region;
- 
-             if Stack_Ptr + Node.PP.all.Stk >= Stack_Size then
-                raise Pattern_Stack_Overflow;
-             else
-                Node := Node.PP.all.P;
-                goto Match;
-             end if;
- 
-          --  RPos (integer case)
- 
-          when PC_RPos_Nat =>
-             if Cursor = (Length - Node.Nat) then
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
- 
-          --  RPos (integer function case)
- 
-          when PC_RPos_NF => declare
-             N : constant Natural := Node.NF.all;
-          begin
-             if Length - Cursor = N then
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
-          end;
- 
-          --  RPos (integer pointer case)
- 
-          when PC_RPos_NP =>
-             if Cursor = (Length - Node.NP.all) then
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
- 
-          --  RTab (integer case)
- 
-          when PC_RTab_Nat =>
-             if Cursor <= (Length - Node.Nat) then
-                Cursor := Length - Node.Nat;
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
- 
-          --  RTab (integer function case)
- 
-          when PC_RTab_NF => declare
-             N : constant Natural := Node.NF.all;
-          begin
-             if Length - Cursor >= N then
-                Cursor := Length - N;
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
-          end;
- 
-          --  RTab (integer pointer case)
- 
-          when PC_RTab_NP =>
-             if Cursor <= (Length - Node.NP.all) then
-                Cursor := Length - Node.NP.all;
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
- 
-          --  Cursor assignment
- 
-          when PC_Setcur =>
-             Node.Var.all := Cursor;
-             goto Succeed;
- 
-          --  Span (one character case)
- 
-          when PC_Span_CH => declare
-             P : Natural;
- 
-          begin
-             P := Cursor;
-             while P < Length
-               and then Subject (P + 1) = Node.Char
-             loop
-                P := P + 1;
-             end loop;
- 
-             if P /= Cursor then
-                Cursor := P;
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
-          end;
- 
-          --  Span (character set case)
- 
-          when PC_Span_CS => declare
-             P : Natural;
- 
-          begin
-             P := Cursor;
-             while P < Length
-               and then Is_In (Subject (P + 1), Node.CS)
-             loop
-                P := P + 1;
-             end loop;
- 
-             if P /= Cursor then
-                Cursor := P;
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
-          end;
- 
-          --  Span (string function case)
- 
-          when PC_Span_VF => declare
-             U : constant VString := Node.VF.all;
-             S : Big_String_Access;
-             L : Natural;
-             P : Natural;
- 
-          begin
-             Get_String (U, S, L);
- 
-             P := Cursor;
-             while P < Length
-               and then Is_In (Subject (P + 1), S (1 .. L))
-             loop
-                P := P + 1;
-             end loop;
- 
-             if P /= Cursor then
-                Cursor := P;
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
-          end;
- 
-          --  Span (string pointer case)
- 
-          when PC_Span_VP => declare
-             U : constant VString := Node.VP.all;
-             S : Big_String_Access;
-             L : Natural;
-             P : Natural;
- 
-          begin
-             Get_String (U, S, L);
- 
-             P := Cursor;
-             while P < Length
-               and then Is_In (Subject (P + 1), S (1 .. L))
-             loop
-                P := P + 1;
-             end loop;
- 
-             if P /= Cursor then
-                Cursor := P;
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
-          end;
- 
-          --  String (two character case)
- 
-          when PC_String_2 =>
-             if (Length - Cursor) >= 2
-               and then Subject (Cursor + 1 .. Cursor + 2) = Node.Str2
-             then
-                Cursor := Cursor + 2;
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
- 
-          --  String (three character case)
- 
-          when PC_String_3 =>
-             if (Length - Cursor) >= 3
-               and then Subject (Cursor + 1 .. Cursor + 3) = Node.Str3
-             then
-                Cursor := Cursor + 3;
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
- 
-          --  String (four character case)
- 
-          when PC_String_4 =>
-             if (Length - Cursor) >= 4
-               and then Subject (Cursor + 1 .. Cursor + 4) = Node.Str4
-             then
-                Cursor := Cursor + 4;
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
- 
-          --  String (five character case)
- 
-          when PC_String_5 =>
-             if (Length - Cursor) >= 5
-               and then Subject (Cursor + 1 .. Cursor + 5) = Node.Str5
-             then
-                Cursor := Cursor + 5;
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
- 
-          --  String (six character case)
- 
-          when PC_String_6 =>
-             if (Length - Cursor) >= 6
-               and then Subject (Cursor + 1 .. Cursor + 6) = Node.Str6
-             then
-                Cursor := Cursor + 6;
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
- 
-          --  String (case of more than six characters)
- 
-          when PC_String => declare
-             Len : constant Natural := Node.Str'Length;
-          begin
-             if (Length - Cursor) >= Len
-               and then Node.Str.all = Subject (Cursor + 1 .. Cursor + Len)
-             then
-                Cursor := Cursor + Len;
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
-          end;
- 
-          --  String (function case)
- 
-          when PC_String_VF => declare
-             U : constant VString := Node.VF.all;
-             S : Big_String_Access;
-             L : Natural;
- 
-          begin
-             Get_String (U, S, L);
- 
-             if (Length - Cursor) >= L
-               and then S (1 .. L) = Subject (Cursor + 1 .. Cursor + L)
-             then
-                Cursor := Cursor + L;
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
-          end;
- 
-          --  String (pointer case)
- 
-          when PC_String_VP => declare
-             U : constant VString := Node.VP.all;
-             S : Big_String_Access;
-             L : Natural;
- 
-          begin
-             Get_String (U, S, L);
- 
-             if (Length - Cursor) >= L
-               and then S (1 .. L) = Subject (Cursor + 1 .. Cursor + L)
-             then
-                Cursor := Cursor + L;
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
-          end;
- 
-          --  Succeed
- 
-          when PC_Succeed =>
-             Push (Node);
-             goto Succeed;
- 
-          --  Tab (integer case)
- 
-          when PC_Tab_Nat =>
-             if Cursor <= Node.Nat then
-                Cursor := Node.Nat;
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
- 
-          --  Tab (integer function case)
- 
-          when PC_Tab_NF => declare
-             N : constant Natural := Node.NF.all;
-          begin
-             if Cursor <= N then
-                Cursor := N;
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
-          end;
- 
-          --  Tab (integer pointer case)
- 
-          when PC_Tab_NP =>
-             if Cursor <= Node.NP.all then
-                Cursor := Node.NP.all;
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
- 
-          --  Unanchored movement
- 
-          when PC_Unanchored =>
- 
-             --  All done if we tried every position
- 
-             if Cursor > Length then
-                goto Match_Fail;
- 
-             --  Otherwise extend the anchor point, and restack ourself
- 
-             else
-                Cursor := Cursor + 1;
-                Push (Node);
-                goto Succeed;
-             end if;
- 
-          --  Write immediate. This node performs the actual write
- 
-          when PC_Write_Imm =>
-             Put_Line
-               (Node.FP.all,
-                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
-       --  match routine must end by executing a goto to the appropriate point
-       --  in the finite state machine model.
- 
-       pragma Warnings (Off);
-       Logic_Error;
-       pragma Warnings (On);
-    end XMatch;
- 
-    -------------
-    -- XMatchD --
-    -------------
- 
-    --  Maintenance note: There is a LOT of code duplication between XMatch
-    --  and XMatchD. This is quite intentional, the point is to avoid any
-    --  unnecessary debugging overhead in the XMatch case, but this does mean
-    --  that any changes to XMatchD must be mirrored in XMatch. In case of
-    --  any major changes, the proper approach is to delete XMatch, make the
-    --  changes to XMatchD, and then make a copy of XMatchD, removing all
-    --  calls to Dout, and all Put and Put_Line operations. This copy becomes
-    --  the new XMatch.
- 
-    procedure XMatchD
-      (Subject : String;
-       Pat_P   : PE_Ptr;
-       Pat_S   : Natural;
-       Start   : out Natural;
-       Stop    : out Natural)
-    is
-       Node : PE_Ptr;
-       --  Pointer to current pattern node. Initialized from Pat_P, and then
-       --  updated as the match proceeds through its constituent elements.
- 
-       Length : constant Natural := Subject'Length;
-       --  Length of string (= Subject'Last, since Subject'First is always 1)
- 
-       Cursor : Integer := 0;
-       --  If the value is non-negative, then this value is the index showing
-       --  the current position of the match in the subject string. The next
-       --  character to be matched is at Subject (Cursor + 1). Note that since
-       --  our view of the subject string in XMatch always has a lower bound
-       --  of one, regardless of original bounds, that this definition exactly
-       --  corresponds to the cursor value as referenced by functions like Pos.
-       --
-       --  If the value is negative, then this is a saved stack pointer,
-       --  typically a base pointer of an inner or outer region. Cursor
-       --  temporarily holds such a value when it is popped from the stack
-       --  by Fail. In all cases, Cursor is reset to a proper non-negative
-       --  cursor value before the match proceeds (e.g. by propagating the
-       --  failure and popping a "real" cursor value from the stack.
- 
-       PE_Unanchored : aliased PE := (PC_Unanchored, 0, Pat_P);
-       --  Dummy pattern element used in the unanchored case
- 
-       Region_Level : Natural := 0;
-       --  Keeps track of recursive region level. This is used only for
-       --  debugging, it is the number of saved history stack base values.
- 
-       Stack : Stack_Type;
-       --  The pattern matching failure stack for this call to Match
- 
-       Stack_Ptr : Stack_Range;
-       --  Current stack pointer. This points to the top element of the stack
-       --  that is currently in use. At the outer level this is the special
-       --  entry placed on the stack according to the anchor mode.
- 
-       Stack_Init : constant Stack_Range := Stack'First + 1;
-       --  This is the initial value of the Stack_Ptr and Stack_Base. The
-       --  initial (Stack'First) element of the stack is not used so that
-       --  when we pop the last element off, Stack_Ptr is still in range.
- 
-       Stack_Base : Stack_Range;
-       --  This value is the stack base value, i.e. the stack pointer for the
-       --  first history stack entry in the current stack region. See separate
-       --  section on handling of recursive pattern matches.
- 
-       Assign_OnM : Boolean := False;
-       --  Set True if assign-on-match or write-on-match operations may be
-       --  present in the history stack, which must then be scanned on a
-       --  successful match.
- 
-       procedure Dout (Str : String);
-       --  Output string to standard error with bars indicating region level
- 
-       procedure Dout (Str : String; A : Character);
-       --  Calls Dout with the string S ('A')
- 
-       procedure Dout (Str : String; A : Character_Set);
-       --  Calls Dout with the string S ("A")
- 
-       procedure Dout (Str : String; A : Natural);
-       --  Calls Dout with the string S (A)
- 
-       procedure Dout (Str : String; A : String);
-       --  Calls Dout with the string S ("A")
- 
-       function Img (P : PE_Ptr) return String;
-       --  Returns a string of the form #nnn where nnn is P.Index
- 
-       procedure Pop_Region;
-       pragma Inline (Pop_Region);
-       --  Used at the end of processing of an inner region. If the inner
-       --  region left no stack entries, then all trace of it is removed.
-       --  Otherwise a PC_Restore_Region entry is pushed to ensure proper
-       --  handling of alternatives in the inner region.
- 
-       procedure Push (Node : PE_Ptr);
-       pragma Inline (Push);
-       --  Make entry in pattern matching stack with current cursor value
- 
-       procedure Push_Region;
-       pragma Inline (Push_Region);
-       --  This procedure makes a new region on the history stack. The
-       --  caller first establishes the special entry on the stack, but
-       --  does not push the stack pointer. Then this call stacks a
-       --  PC_Remove_Region node, on top of this entry, using the cursor
-       --  field of the PC_Remove_Region entry to save the outer level
-       --  stack base value, and resets the stack base to point to this
-       --  PC_Remove_Region node.
- 
-       ----------
-       -- Dout --
-       ----------
- 
-       procedure Dout (Str : String) is
-       begin
-          for J in 1 .. Region_Level loop
-             Put ("| ");
-          end loop;
- 
-          Put_Line (Str);
-       end Dout;
- 
-       procedure Dout (Str : String; A : Character) is
-       begin
-          Dout (Str & " ('" & A & "')");
-       end Dout;
- 
-       procedure Dout (Str : String; A : Character_Set) is
-       begin
-          Dout (Str & " (" & Image (To_Sequence (A)) & ')');
-       end Dout;
- 
-       procedure Dout (Str : String; A : Natural) is
-       begin
-          Dout (Str & " (" & A & ')');
-       end Dout;
- 
-       procedure Dout (Str : String; A : String) is
-       begin
-          Dout (Str & " (" & Image (A) & ')');
-       end Dout;
- 
-       ---------
-       -- Img --
-       ---------
- 
-       function Img (P : PE_Ptr) return String is
-       begin
-          return "#" & Integer (P.Index) & " ";
-       end Img;
- 
-       ----------------
-       -- Pop_Region --
-       ----------------
- 
-       procedure Pop_Region is
-       begin
-          Region_Level := Region_Level - 1;
- 
-          --  If nothing was pushed in the inner region, we can just get
-          --  rid of it entirely, leaving no traces that it was ever there
- 
-          if Stack_Ptr = Stack_Base then
-             Stack_Ptr := Stack_Base - 2;
-             Stack_Base := Stack (Stack_Ptr + 2).Cursor;
- 
-          --  If stuff was pushed in the inner region, then we have to
-          --  push a PC_R_Restore node so that we properly handle possible
-          --  rematches within the region.
- 
-          else
-             Stack_Ptr := Stack_Ptr + 1;
-             Stack (Stack_Ptr).Cursor := Stack_Base;
-             Stack (Stack_Ptr).Node   := CP_R_Restore'Access;
-             Stack_Base := Stack (Stack_Base).Cursor;
-          end if;
-       end Pop_Region;
- 
-       ----------
-       -- Push --
-       ----------
- 
-       procedure Push (Node : PE_Ptr) is
-       begin
-          Stack_Ptr := Stack_Ptr + 1;
-          Stack (Stack_Ptr).Cursor := Cursor;
-          Stack (Stack_Ptr).Node   := Node;
-       end Push;
- 
-       -----------------
-       -- Push_Region --
-       -----------------
- 
-       procedure Push_Region is
-       begin
-          Region_Level := Region_Level + 1;
-          Stack_Ptr := Stack_Ptr + 2;
-          Stack (Stack_Ptr).Cursor := Stack_Base;
-          Stack (Stack_Ptr).Node   := CP_R_Remove'Access;
-          Stack_Base := Stack_Ptr;
-       end Push_Region;
- 
-    --  Start of processing for XMatchD
- 
-    begin
-       New_Line;
-       Put_Line ("Initiating pattern match, subject = " & Image (Subject));
-       Put      ("--------------------------------------");
- 
-       for J in 1 .. Length loop
-          Put ('-');
-       end loop;
- 
-       New_Line;
-       Put_Line ("subject length = " & Length);
- 
-       if Pat_P = null then
-          Uninitialized_Pattern;
-       end if;
- 
-       --  Check we have enough stack for this pattern. This check deals with
-       --  every possibility except a match of a recursive pattern, where we
-       --  make a check at each recursion level.
- 
-       if Pat_S >= Stack_Size - 1 then
-          raise Pattern_Stack_Overflow;
-       end if;
- 
-       --  In anchored mode, the bottom entry on the stack is an abort entry
- 
-       if Anchored_Mode then
-          Stack (Stack_Init).Node   := CP_Cancel'Access;
-          Stack (Stack_Init).Cursor := 0;
- 
-       --  In unanchored more, the bottom entry on the stack references
-       --  the special pattern element PE_Unanchored, whose Pthen field
-       --  points to the initial pattern element. The cursor value in this
-       --  entry is the number of anchor moves so far.
- 
-       else
-          Stack (Stack_Init).Node   := PE_Unanchored'Unchecked_Access;
-          Stack (Stack_Init).Cursor := 0;
-       end if;
- 
-       Stack_Ptr    := Stack_Init;
-       Stack_Base   := Stack_Ptr;
-       Cursor       := 0;
-       Node         := Pat_P;
-       goto Match;
- 
-       -----------------------------------------
-       -- Main Pattern Matching State Control --
-       -----------------------------------------
- 
-       --  This is a state machine which uses gotos to change state. The
-       --  initial state is Match, to initiate the matching of the first
-       --  element, so the goto Match above starts the match. In the
-       --  following descriptions, we indicate the global values that
-       --  are relevant for the state transition.
- 
-       --  Come here if entire match fails
- 
-       <<Match_Fail>>
-          Dout ("match fails");
-          New_Line;
-          Start := 0;
-          Stop  := 0;
-          return;
- 
-       --  Come here if entire match succeeds
- 
-       --    Cursor        current position in subject string
- 
-       <<Match_Succeed>>
-          Dout ("match succeeds");
-          Start := Stack (Stack_Init).Cursor + 1;
-          Stop  := Cursor;
-          Dout ("first matched character index = " & Start);
-          Dout ("last matched character index = " & Stop);
-          Dout ("matched substring = " & Image (Subject (Start .. Stop)));
- 
-          --  Scan history stack for deferred assignments or writes
- 
-          if Assign_OnM then
-             for S in Stack'First .. Stack_Ptr loop
-                if Stack (S).Node = CP_Assign'Access then
-                   declare
-                      Inner_Base    : constant Stack_Range :=
-                                        Stack (S + 1).Cursor;
-                      Special_Entry : constant Stack_Range :=
-                                        Inner_Base - 1;
-                      Node_OnM      : constant PE_Ptr  :=
-                                        Stack (Special_Entry).Node;
-                      Start         : constant Natural :=
-                                        Stack (Special_Entry).Cursor + 1;
-                      Stop          : constant Natural := Stack (S).Cursor;
- 
-                   begin
-                      if Node_OnM.Pcode = PC_Assign_OnM then
-                         Set_Unbounded_String
-                           (Node_OnM.VP.all, Subject (Start .. Stop));
-                         Dout
-                           (Img (Stack (S).Node) &
-                            "deferred assignment of " &
-                            Image (Subject (Start .. Stop)));
- 
-                      elsif Node_OnM.Pcode = PC_Write_OnM then
-                         Put_Line (Node_OnM.FP.all, Subject (Start .. Stop));
-                         Dout
-                           (Img (Stack (S).Node) &
-                            "deferred write of " &
-                            Image (Subject (Start .. Stop)));
- 
-                      else
-                         Logic_Error;
-                      end if;
-                   end;
-                end if;
-             end loop;
-          end if;
- 
-          New_Line;
-          return;
- 
-       --  Come here if attempt to match current element fails
- 
-       --    Stack_Base    current stack base
-       --    Stack_Ptr     current stack pointer
- 
-       <<Fail>>
-          Cursor := Stack (Stack_Ptr).Cursor;
-          Node   := Stack (Stack_Ptr).Node;
-          Stack_Ptr := Stack_Ptr - 1;
- 
-          if Cursor >= 0 then
-             Dout ("failure, cursor reset to " & Cursor);
-          end if;
- 
-          goto Match;
- 
-       --  Come here if attempt to match current element succeeds
- 
-       --    Cursor        current position in subject string
-       --    Node          pointer to node successfully matched
-       --    Stack_Base    current stack base
-       --    Stack_Ptr     current stack pointer
- 
-       <<Succeed>>
-          Dout ("success, cursor = " & Cursor);
-          Node := Node.Pthen;
- 
-       --  Come here to match the next pattern element
- 
-       --    Cursor        current position in subject string
-       --    Node          pointer to node to be matched
-       --    Stack_Base    current stack base
-       --    Stack_Ptr     current stack pointer
- 
-       <<Match>>
- 
-       --------------------------------------------------
-       -- Main Pattern Match Element Matching Routines --
-       --------------------------------------------------
- 
-       --  Here is the case statement that processes the current node. The
-       --  processing for each element does one of five things:
- 
-       --    goto Succeed        to move to the successor
-       --    goto Match_Succeed  if the entire match succeeds
-       --    goto Match_Fail     if the entire match fails
-       --    goto Fail           to signal failure of current match
- 
-       --  Processing is NOT allowed to fall through
- 
-       case Node.Pcode is
- 
-          --  Cancel
- 
-          when PC_Cancel =>
-             Dout (Img (Node) & "matching Cancel");
-             goto Match_Fail;
- 
-          --  Alternation
- 
-          when PC_Alt =>
-             Dout (Img (Node) & "setting up alternative " & Img (Node.Alt));
-             Push (Node.Alt);
-             Node := Node.Pthen;
-             goto Match;
- 
-          --  Any (one character case)
- 
-          when PC_Any_CH =>
-             Dout (Img (Node) & "matching Any", Node.Char);
- 
-             if Cursor < Length
-               and then Subject (Cursor + 1) = Node.Char
-             then
-                Cursor := Cursor + 1;
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
- 
-          --  Any (character set case)
- 
-          when PC_Any_CS =>
-             Dout (Img (Node) & "matching Any", Node.CS);
- 
-             if Cursor < Length
-               and then Is_In (Subject (Cursor + 1), Node.CS)
-             then
-                Cursor := Cursor + 1;
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
- 
-          --  Any (string function case)
- 
-          when PC_Any_VF => declare
-             U : constant VString := Node.VF.all;
-             S : Big_String_Access;
-             L : Natural;
- 
-          begin
-             Get_String (U, S, L);
- 
-             Dout (Img (Node) & "matching Any", S (1 .. L));
- 
-             if Cursor < Length
-               and then Is_In (Subject (Cursor + 1), S (1 .. L))
-             then
-                Cursor := Cursor + 1;
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
-          end;
- 
-          --  Any (string pointer case)
- 
-          when PC_Any_VP => declare
-             U : constant VString := Node.VP.all;
-             S : Big_String_Access;
-             L : Natural;
- 
-          begin
-             Get_String (U, S, L);
-             Dout (Img (Node) & "matching Any", S (1 .. L));
- 
-             if Cursor < Length
-               and then Is_In (Subject (Cursor + 1), S (1 .. L))
-             then
-                Cursor := Cursor + 1;
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
-          end;
- 
-          --  Arb (initial match)
- 
-          when PC_Arb_X =>
-             Dout (Img (Node) & "matching Arb");
-             Push (Node.Alt);
-             Node := Node.Pthen;
-             goto Match;
- 
-          --  Arb (extension)
- 
-          when PC_Arb_Y  =>
-             Dout (Img (Node) & "extending Arb");
- 
-             if Cursor < Length then
-                Cursor := Cursor + 1;
-                Push (Node);
-                goto Succeed;
-             else
-                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);
-             Node := Node.Pthen;
-             goto Match;
- 
-          --  Arbno_Y (Arbno rematch). This is the node that is executed
-          --  following successful matching of one instance of a complex
-          --  Arbno pattern.
- 
-          when PC_Arbno_Y => declare
-             Null_Match : constant Boolean :=
-                            Cursor = Stack (Stack_Base - 1).Cursor;
- 
-          begin
-             Dout (Img (Node) & "extending Arbno");
-             Pop_Region;
- 
-             --  If arbno extension matched null, then immediately fail
- 
-             if Null_Match then
-                Dout ("Arbno extension matched null, so fails");
-                goto Fail;
-             end if;
- 
-             --  Here we must do a stack check to make sure enough stack
-             --  is left. This check will happen once for each instance of
-             --  the Arbno pattern that is matched. The Nat field of a
-             --  PC_Arbno pattern contains the maximum stack entries needed
-             --  for the Arbno with one instance and the successor pattern
- 
-             if Stack_Ptr + Node.Nat >= Stack'Last then
-                raise Pattern_Stack_Overflow;
-             end if;
- 
-             goto Succeed;
-          end;
- 
-          --  Assign. If this node is executed, it means the assign-on-match
-          --  or write-on-match operation will not happen after all, so we
-          --  is propagate the failure, removing the PC_Assign node.
- 
-          when PC_Assign =>
-             Dout (Img (Node) & "deferred assign/write cancelled");
-             goto Fail;
- 
-          --  Assign immediate. This node performs the actual assignment
- 
-          when PC_Assign_Imm =>
-             Dout
-               (Img (Node) & "executing immediate assignment of " &
-                Image (Subject (Stack (Stack_Base - 1).Cursor + 1 .. Cursor)));
-             Set_Unbounded_String
-               (Node.VP.all,
-                Subject (Stack (Stack_Base - 1).Cursor + 1 .. Cursor));
-             Pop_Region;
-             goto Succeed;
- 
-          --  Assign on match. This node sets up for the eventual assignment
- 
-          when PC_Assign_OnM =>
-             Dout (Img (Node) & "registering deferred assignment");
-             Stack (Stack_Base - 1).Node := Node;
-             Push (CP_Assign'Access);
-             Pop_Region;
-             Assign_OnM := True;
-             goto Succeed;
- 
-          --  Bal
- 
-          when PC_Bal =>
-             Dout (Img (Node) & "matching or extending Bal");
-             if Cursor >= Length or else Subject (Cursor + 1) = ')' then
-                goto Fail;
- 
-             elsif Subject (Cursor + 1) = '(' then
-                declare
-                   Paren_Count : Natural := 1;
- 
-                begin
-                   loop
-                      Cursor := Cursor + 1;
- 
-                      if Cursor >= Length then
-                         goto Fail;
- 
-                      elsif Subject (Cursor + 1) = '(' then
-                         Paren_Count := Paren_Count + 1;
- 
-                      elsif Subject (Cursor + 1) = ')' then
-                         Paren_Count := Paren_Count - 1;
-                         exit when Paren_Count = 0;
-                      end if;
-                   end loop;
-                end;
-             end if;
- 
-             Cursor := Cursor + 1;
-             Push (Node);
-             goto Succeed;
- 
-          --  Break (one character case)
- 
-          when PC_Break_CH =>
-             Dout (Img (Node) & "matching Break", Node.Char);
- 
-             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 =>
-             Dout (Img (Node) & "matching Break", Node.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);
-             Dout (Img (Node) & "matching Break", S (1 .. 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);
-             Dout (Img (Node) & "matching Break", S (1 .. 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 =>
-             Dout (Img (Node) & "matching BreakX", Node.Char);
- 
-             while Cursor < Length loop
-                if Subject (Cursor + 1) = Node.Char then
-                   goto Succeed;
-                else
-                   Cursor := Cursor + 1;
-                end if;
-             end loop;
- 
-             goto Fail;
- 
-          --  BreakX (character set case)
- 
-          when PC_BreakX_CS =>
-             Dout (Img (Node) & "matching BreakX", Node.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;
- 
-          --  BreakX (string function case)
- 
-          when PC_BreakX_VF => declare
-             U : constant VString := Node.VF.all;
-             S : Big_String_Access;
-             L : Natural;
- 
-          begin
-             Get_String (U, S, L);
-             Dout (Img (Node) & "matching BreakX", S (1 .. 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 (string pointer case)
- 
-          when PC_BreakX_VP => declare
-             U : constant VString := Node.VP.all;
-             S : Big_String_Access;
-             L : Natural;
- 
-          begin
-             Get_String (U, S, L);
-             Dout (Img (Node) & "matching BreakX", S (1 .. 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_X (BreakX extension). See section on "Compound Pattern
-          --  Structures". This node is the alternative that is stacked
-          --  to skip past the break character and extend the break.
- 
-          when PC_BreakX_X =>
-             Dout (Img (Node) & "extending BreakX");
-             Cursor := Cursor + 1;
-             goto Succeed;
- 
-          --  Character (one character string)
- 
-          when PC_Char =>
-             Dout (Img (Node) & "matching '" & Node.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 =>
-             if Stack_Base = Stack_Init then
-                Dout ("end of pattern");
-                goto Match_Succeed;
- 
-             --  End of recursive inner match. See separate section on
-             --  handing of recursive pattern matches for details.
- 
-             else
-                Dout ("terminating recursive match");
-                Node := Stack (Stack_Base - 1).Node;
-                Pop_Region;
-                goto Match;
-             end if;
- 
-          --  Fail
- 
-          when PC_Fail =>
-             Dout (Img (Node) & "matching Fail");
-             goto Fail;
- 
-          --  Fence (built in pattern)
- 
-          when PC_Fence =>
-             Dout (Img (Node) & "matching Fence");
-             Push (CP_Cancel'Access);
-             goto Succeed;
- 
-          --  Fence function node X. This is the node that gets control
-          --  after a successful match of the fenced pattern.
- 
-          when PC_Fence_X =>
-             Dout (Img (Node) & "matching Fence function");
-             Stack_Ptr := Stack_Ptr + 1;
-             Stack (Stack_Ptr).Cursor := Stack_Base;
-             Stack (Stack_Ptr).Node   := CP_Fence_Y'Access;
-             Stack_Base := Stack (Stack_Base).Cursor;
-             Region_Level := Region_Level - 1;
-             goto Succeed;
- 
-          --  Fence function node Y. This is the node that gets control on
-          --  a failure that occurs after the fenced pattern has matched.
- 
-          --  Note: the Cursor at this stage is actually the inner stack
-          --  base value. We don't reset this, but we do use it to strip
-          --  off all the entries made by the fenced pattern.
- 
-          when PC_Fence_Y =>
-             Dout (Img (Node) & "pattern matched by Fence caused failure");
-             Stack_Ptr := Cursor - 2;
-             goto Fail;
- 
-          --  Len (integer case)
- 
-          when PC_Len_Nat =>
-             Dout (Img (Node) & "matching Len", Node.Nat);
- 
-             if Cursor + Node.Nat > Length then
-                goto Fail;
-             else
-                Cursor := Cursor + Node.Nat;
-                goto Succeed;
-             end if;
- 
-          --  Len (Integer function case)
- 
-          when PC_Len_NF => declare
-             N : constant Natural := Node.NF.all;
- 
-          begin
-             Dout (Img (Node) & "matching Len", N);
- 
-             if Cursor + N > Length then
-                goto Fail;
-             else
-                Cursor := Cursor + N;
-                goto Succeed;
-             end if;
-          end;
- 
-          --  Len (integer pointer case)
- 
-          when PC_Len_NP =>
-             Dout (Img (Node) & "matching Len", Node.NP.all);
- 
-             if Cursor + Node.NP.all > Length then
-                goto Fail;
-             else
-                Cursor := Cursor + Node.NP.all;
-                goto Succeed;
-             end if;
- 
-          --  NotAny (one character case)
- 
-          when PC_NotAny_CH =>
-             Dout (Img (Node) & "matching NotAny", Node.Char);
- 
-             if Cursor < Length
-               and then Subject (Cursor + 1) /= Node.Char
-             then
-                Cursor := Cursor + 1;
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
- 
-          --  NotAny (character set case)
- 
-          when PC_NotAny_CS =>
-             Dout (Img (Node) & "matching NotAny", Node.CS);
- 
-             if Cursor < Length
-               and then not Is_In (Subject (Cursor + 1), Node.CS)
-             then
-                Cursor := Cursor + 1;
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
- 
-          --  NotAny (string function case)
- 
-          when PC_NotAny_VF => declare
-             U : constant VString := Node.VF.all;
-             S : Big_String_Access;
-             L : Natural;
- 
-          begin
-             Get_String (U, S, L);
-             Dout (Img (Node) & "matching NotAny", S (1 .. L));
- 
-             if Cursor < Length
-               and then
-                 not Is_In (Subject (Cursor + 1), S (1 .. L))
-             then
-                Cursor := Cursor + 1;
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
-          end;
- 
-          --  NotAny (string pointer case)
- 
-          when PC_NotAny_VP => declare
-             U : constant VString := Node.VP.all;
-             S : Big_String_Access;
-             L : Natural;
- 
-          begin
-             Get_String (U, S, L);
-             Dout (Img (Node) & "matching NotAny", S (1 .. L));
- 
-             if Cursor < Length
-               and then
-                 not Is_In (Subject (Cursor + 1), S (1 .. L))
-             then
-                Cursor := Cursor + 1;
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
-          end;
- 
-          --  NSpan (one character case)
- 
-          when PC_NSpan_CH =>
-             Dout (Img (Node) & "matching NSpan", Node.Char);
- 
-             while Cursor < Length
-               and then Subject (Cursor + 1) = Node.Char
-             loop
-                Cursor := Cursor + 1;
-             end loop;
- 
-             goto Succeed;
- 
-          --  NSpan (character set case)
- 
-          when PC_NSpan_CS =>
-             Dout (Img (Node) & "matching NSpan", Node.CS);
- 
-             while Cursor < Length
-               and then Is_In (Subject (Cursor + 1), Node.CS)
-             loop
-                Cursor := Cursor + 1;
-             end loop;
- 
-             goto Succeed;
- 
-          --  NSpan (string function case)
- 
-          when PC_NSpan_VF => declare
-             U : constant VString := Node.VF.all;
-             S : Big_String_Access;
-             L : Natural;
- 
-          begin
-             Get_String (U, S, L);
-             Dout (Img (Node) & "matching NSpan", S (1 .. L));
- 
-             while Cursor < Length
-               and then Is_In (Subject (Cursor + 1), S (1 .. L))
-             loop
-                Cursor := Cursor + 1;
-             end loop;
- 
-             goto Succeed;
-          end;
- 
-          --  NSpan (string pointer case)
- 
-          when PC_NSpan_VP => declare
-             U : constant VString := Node.VP.all;
-             S : Big_String_Access;
-             L : Natural;
- 
-          begin
-             Get_String (U, S, L);
-             Dout (Img (Node) & "matching NSpan", S (1 .. L));
- 
-             while Cursor < Length
-               and then Is_In (Subject (Cursor + 1), S (1 .. L))
-             loop
-                Cursor := Cursor + 1;
-             end loop;
- 
-             goto Succeed;
-          end;
- 
-          when PC_Null =>
-             Dout (Img (Node) & "matching null");
-             goto Succeed;
- 
-          --  Pos (integer case)
- 
-          when PC_Pos_Nat =>
-             Dout (Img (Node) & "matching Pos", Node.Nat);
- 
-             if Cursor = Node.Nat then
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
- 
-          --  Pos (Integer function case)
- 
-          when PC_Pos_NF => declare
-             N : constant Natural := Node.NF.all;
- 
-          begin
-             Dout (Img (Node) & "matching Pos", N);
- 
-             if Cursor = N then
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
-          end;
- 
-          --  Pos (integer pointer case)
- 
-          when PC_Pos_NP =>
-             Dout (Img (Node) & "matching Pos", Node.NP.all);
- 
-             if Cursor = Node.NP.all then
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
- 
-          --  Predicate function
- 
-          when PC_Pred_Func =>
-             Dout (Img (Node) & "matching predicate function");
- 
-             if Node.BF.all then
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
- 
-          --  Region Enter. Initiate new pattern history stack region
- 
-          when PC_R_Enter =>
-             Dout (Img (Node) & "starting match of nested pattern");
-             Stack (Stack_Ptr + 1).Cursor := Cursor;
-             Push_Region;
-             goto Succeed;
- 
-          --  Region Remove node. This is the node stacked by an R_Enter.
-          --  It removes the special format stack entry right underneath, and
-          --  then restores the outer level stack base and signals failure.
- 
-          --  Note: the cursor value at this stage is actually the (negative)
-          --  stack base value for the outer level.
- 
-          when PC_R_Remove =>
-             Dout ("failure, match of nested pattern terminated");
-             Stack_Base := Cursor;
-             Region_Level := Region_Level - 1;
-             Stack_Ptr := Stack_Ptr - 1;
-             goto Fail;
- 
-          --  Region restore node. This is the node stacked at the end of an
-          --  inner level match. Its function is to restore the inner level
-          --  region, so that alternatives in this region can be sought.
- 
-          --  Note: the Cursor at this stage is actually the negative of the
-          --  inner stack base value, which we use to restore the inner region.
- 
-          when PC_R_Restore =>
-             Dout ("failure, search for alternatives in nested pattern");
-             Region_Level := Region_Level + 1;
-             Stack_Base := Cursor;
-             goto Fail;
- 
-          --  Rest
- 
-          when PC_Rest =>
-             Dout (Img (Node) & "matching Rest");
-             Cursor := Length;
-             goto Succeed;
- 
-          --  Initiate recursive match (pattern pointer case)
- 
-          when PC_Rpat =>
-             Stack (Stack_Ptr + 1).Node := Node.Pthen;
-             Push_Region;
-             Dout (Img (Node) & "initiating recursive match");
- 
-             if Stack_Ptr + Node.PP.all.Stk >= Stack_Size then
-                raise Pattern_Stack_Overflow;
-             else
-                Node := Node.PP.all.P;
-                goto Match;
-             end if;
- 
-          --  RPos (integer case)
- 
-          when PC_RPos_Nat =>
-             Dout (Img (Node) & "matching RPos", Node.Nat);
- 
-             if Cursor = (Length - Node.Nat) then
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
- 
-          --  RPos (integer function case)
- 
-          when PC_RPos_NF => declare
-             N : constant Natural := Node.NF.all;
- 
-          begin
-             Dout (Img (Node) & "matching RPos", N);
- 
-             if Length - Cursor = N then
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
-          end;
- 
-          --  RPos (integer pointer case)
- 
-          when PC_RPos_NP =>
-             Dout (Img (Node) & "matching RPos", Node.NP.all);
- 
-             if Cursor = (Length - Node.NP.all) then
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
- 
-          --  RTab (integer case)
- 
-          when PC_RTab_Nat =>
-             Dout (Img (Node) & "matching RTab", Node.Nat);
- 
-             if Cursor <= (Length - Node.Nat) then
-                Cursor := Length - Node.Nat;
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
- 
-          --  RTab (integer function case)
- 
-          when PC_RTab_NF => declare
-             N : constant Natural := Node.NF.all;
- 
-          begin
-             Dout (Img (Node) & "matching RPos", N);
- 
-             if Length - Cursor >= N then
-                Cursor := Length - N;
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
-          end;
- 
-          --  RTab (integer pointer case)
- 
-          when PC_RTab_NP =>
-             Dout (Img (Node) & "matching RPos", Node.NP.all);
- 
-             if Cursor <= (Length - Node.NP.all) then
-                Cursor := Length - Node.NP.all;
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
- 
-          --  Cursor assignment
- 
-          when PC_Setcur =>
-             Dout (Img (Node) & "matching Setcur");
-             Node.Var.all := Cursor;
-             goto Succeed;
- 
-          --  Span (one character case)
- 
-          when PC_Span_CH => declare
-             P : Natural := Cursor;
- 
-          begin
-             Dout (Img (Node) & "matching Span", Node.Char);
- 
-             while P < Length
-               and then Subject (P + 1) = Node.Char
-             loop
-                P := P + 1;
-             end loop;
- 
-             if P /= Cursor then
-                Cursor := P;
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
-          end;
- 
-          --  Span (character set case)
- 
-          when PC_Span_CS => declare
-             P : Natural := Cursor;
- 
-          begin
-             Dout (Img (Node) & "matching Span", Node.CS);
- 
-             while P < Length
-               and then Is_In (Subject (P + 1), Node.CS)
-             loop
-                P := P + 1;
-             end loop;
- 
-             if P /= Cursor then
-                Cursor := P;
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
-          end;
- 
-          --  Span (string function case)
- 
-          when PC_Span_VF => declare
-             U : constant VString := Node.VF.all;
-             S : Big_String_Access;
-             L : Natural;
-             P : Natural;
- 
-          begin
-             Get_String (U, S, L);
-             Dout (Img (Node) & "matching Span", S (1 .. L));
- 
-             P := Cursor;
-             while P < Length
-               and then Is_In (Subject (P + 1), S (1 .. L))
-             loop
-                P := P + 1;
-             end loop;
- 
-             if P /= Cursor then
-                Cursor := P;
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
-          end;
- 
-          --  Span (string pointer case)
- 
-          when PC_Span_VP => declare
-             U : constant VString := Node.VP.all;
-             S : Big_String_Access;
-             L : Natural;
-             P : Natural;
- 
-          begin
-             Get_String (U, S, L);
-             Dout (Img (Node) & "matching Span", S (1 .. L));
- 
-             P := Cursor;
-             while P < Length
-               and then Is_In (Subject (P + 1), S (1 .. L))
-             loop
-                P := P + 1;
-             end loop;
- 
-             if P /= Cursor then
-                Cursor := P;
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
-          end;
- 
-          --  String (two character case)
- 
-          when PC_String_2 =>
-             Dout (Img (Node) & "matching " & Image (Node.Str2));
- 
-             if (Length - Cursor) >= 2
-               and then Subject (Cursor + 1 .. Cursor + 2) = Node.Str2
-             then
-                Cursor := Cursor + 2;
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
- 
-          --  String (three character case)
- 
-          when PC_String_3 =>
-             Dout (Img (Node) & "matching " & Image (Node.Str3));
- 
-             if (Length - Cursor) >= 3
-               and then Subject (Cursor + 1 .. Cursor + 3) = Node.Str3
-             then
-                Cursor := Cursor + 3;
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
- 
-          --  String (four character case)
- 
-          when PC_String_4 =>
-             Dout (Img (Node) & "matching " & Image (Node.Str4));
- 
-             if (Length - Cursor) >= 4
-               and then Subject (Cursor + 1 .. Cursor + 4) = Node.Str4
-             then
-                Cursor := Cursor + 4;
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
- 
-          --  String (five character case)
- 
-          when PC_String_5 =>
-             Dout (Img (Node) & "matching " & Image (Node.Str5));
- 
-             if (Length - Cursor) >= 5
-               and then Subject (Cursor + 1 .. Cursor + 5) = Node.Str5
-             then
-                Cursor := Cursor + 5;
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
- 
-          --  String (six character case)
- 
-          when PC_String_6 =>
-             Dout (Img (Node) & "matching " & Image (Node.Str6));
- 
-             if (Length - Cursor) >= 6
-               and then Subject (Cursor + 1 .. Cursor + 6) = Node.Str6
-             then
-                Cursor := Cursor + 6;
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
- 
-          --  String (case of more than six characters)
- 
-          when PC_String => declare
-             Len : constant Natural := Node.Str'Length;
- 
-          begin
-             Dout (Img (Node) & "matching " & Image (Node.Str.all));
- 
-             if (Length - Cursor) >= Len
-               and then Node.Str.all = Subject (Cursor + 1 .. Cursor + Len)
-             then
-                Cursor := Cursor + Len;
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
-          end;
- 
-          --  String (function case)
- 
-          when PC_String_VF => declare
-             U : constant VString := Node.VF.all;
-             S : Big_String_Access;
-             L : Natural;
- 
-          begin
-             Get_String (U, S, L);
-             Dout (Img (Node) & "matching " & Image (S (1 .. L)));
- 
-             if (Length - Cursor) >= L
-               and then S (1 .. L) = Subject (Cursor + 1 .. Cursor + L)
-             then
-                Cursor := Cursor + L;
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
-          end;
- 
-          --  String (vstring pointer case)
- 
-          when PC_String_VP => declare
-             U : constant VString := Node.VP.all;
-             S : Big_String_Access;
-             L : Natural;
- 
-          begin
-             Get_String (U, S, L);
-             Dout (Img (Node) & "matching " & Image (S (1 .. L)));
- 
-             if (Length - Cursor) >= L
-               and then S (1 .. L) = Subject (Cursor + 1 .. Cursor + L)
-             then
-                Cursor := Cursor + L;
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
-          end;
- 
-          --  Succeed
- 
-          when PC_Succeed =>
-             Dout (Img (Node) & "matching Succeed");
-             Push (Node);
-             goto Succeed;
- 
-          --  Tab (integer case)
- 
-          when PC_Tab_Nat =>
-             Dout (Img (Node) & "matching Tab", Node.Nat);
- 
-             if Cursor <= Node.Nat then
-                Cursor := Node.Nat;
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
- 
-          --  Tab (integer function case)
- 
-          when PC_Tab_NF => declare
-             N : constant Natural := Node.NF.all;
- 
-          begin
-             Dout (Img (Node) & "matching Tab ", N);
- 
-             if Cursor <= N then
-                Cursor := N;
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
-          end;
- 
-          --  Tab (integer pointer case)
- 
-          when PC_Tab_NP =>
-             Dout (Img (Node) & "matching Tab ", Node.NP.all);
- 
-             if Cursor <= Node.NP.all then
-                Cursor := Node.NP.all;
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
- 
-          --  Unanchored movement
- 
-          when PC_Unanchored =>
-             Dout ("attempting to move anchor point");
- 
-             --  All done if we tried every position
- 
-             if Cursor > Length then
-                goto Match_Fail;
- 
-             --  Otherwise extend the anchor point, and restack ourself
- 
-             else
-                Cursor := Cursor + 1;
-                Push (Node);
-                goto Succeed;
-             end if;
- 
-          --  Write immediate. This node performs the actual write
- 
-          when PC_Write_Imm =>
-             Dout (Img (Node) & "executing immediate write of " &
-                    Subject (Stack (Stack_Base - 1).Cursor + 1 .. Cursor));
- 
-             Put_Line
-               (Node.FP.all,
-                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 =>
-             Dout (Img (Node) & "registering deferred write");
-             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
-       --  match routine must end by executing a goto to the appropriate point
-       --  in the finite state machine model.
- 
-       pragma Warnings (Off);
-       Logic_Error;
-       pragma Warnings (On);
-    end XMatchD;
- 
- end GNAT.Spitbol.Patterns;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-spipat.ads gcc-8.1.0/gcc/ada/g-spipat.ads
*** gcc-7.3.0/gcc/ada/g-spipat.ads	Fri Oct 16 11:00:05 2015
--- gcc-8.1.0/gcc/ada/g-spipat.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,1187 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                G N A T . S P I T B O L . P A T T E R N S                 --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 1997-2015, AdaCore                     --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  SPITBOL-like pattern construction and matching
- 
- --  This child package of GNAT.SPITBOL provides a complete implementation
- --  of the SPITBOL-like pattern construction and matching operations. This
- --  package is based on Macro-SPITBOL created by Robert Dewar.
- 
- ------------------------------------------------------------
- -- Summary of Pattern Matching Packages in GNAT Hierarchy --
- ------------------------------------------------------------
- 
- --  There are three related packages that perform pattern matching functions.
- --  the following is an outline of these packages, to help you determine
- --  which is best for your needs.
- 
- --     GNAT.Regexp (files g-regexp.ads/g-regexp.adb)
- --       This is a simple package providing Unix-style regular expression
- --       matching with the restriction that it matches entire strings. It
- --       is particularly useful for file name matching, and in particular
- --       it provides "globbing patterns" that are useful in implementing
- --       unix or DOS style wild card matching for file names.
- 
- --     GNAT.Regpat (files g-regpat.ads/g-regpat.adb)
- --       This is a more complete implementation of Unix-style regular
- --       expressions, copied from the original V7 style regular expression
- --       library written in C by Henry Spencer. It is functionally the
- --       same as this library, and uses the same internal data structures
- --       stored in a binary compatible manner.
- 
- --     GNAT.Spitbol.Patterns (files g-spipat.ads/g-spipat.adb)
- --       This is a completely general patterm matching package based on the
- --       pattern language of SNOBOL4, as implemented in SPITBOL. The pattern
- --       language is modeled on context free grammars, with context sensitive
- --       extensions that provide full (type 0) computational capabilities.
- 
- with Ada.Strings.Maps; use Ada.Strings.Maps;
- with Ada.Text_IO;      use Ada.Text_IO;
- 
- package GNAT.Spitbol.Patterns is
-    pragma Elaborate_Body;
- 
-    -------------------------------
-    -- Pattern Matching Tutorial --
-    -------------------------------
- 
-    --  A pattern matching operation (a call to one of the Match subprograms)
-    --  takes a subject string and a pattern, and optionally a replacement
-    --  string. The replacement string option is only allowed if the subject
-    --  is a variable.
- 
-    --  The pattern is matched against the subject string, and either the
-    --  match fails, or it succeeds matching a contiguous substring. If a
-    --  replacement string is specified, then the subject string is modified
-    --  by replacing the matched substring with the given replacement.
- 
-    --  Concatenation and Alternation
-    --  =============================
- 
-    --    A pattern consists of a series of pattern elements. The pattern is
-    --    built up using either the concatenation operator:
- 
-    --       A & B
- 
-    --    which means match A followed immediately by matching B, or the
-    --    alternation operator:
- 
-    --       A or B
- 
-    --    which means first attempt to match A, and then if that does not
-    --    succeed, match B.
- 
-    --    There is full backtracking, which means that if a given pattern
-    --    element fails to match, then previous alternatives are matched.
-    --    For example if we have the pattern:
- 
-    --      (A or B) & (C or D) & (E or F)
- 
-    --    First we attempt to match A, if that succeeds, then we go on to try
-    --    to match C, and if that succeeds, we go on to try to match E. If E
-    --    fails, then we try F. If F fails, then we go back and try matching
-    --    D instead of C. Let's make this explicit using a specific example,
-    --    and introducing the simplest kind of pattern element, which is a
-    --    literal string. The meaning of this pattern element is simply to
-    --    match the characters that correspond to the string characters. Now
-    --    let's rewrite the above pattern form with specific string literals
-    --    as the pattern elements:
- 
-    --      ("ABC" or "AB") & ("DEF" or "CDE") & ("GH" or "IJ")
- 
-    --    The following strings will be attempted in sequence:
- 
-    --       ABC . DEF . GH
-    --       ABC . DEF . IJ
-    --       ABC . CDE . GH
-    --       ABC . CDE . IJ
-    --       AB . DEF . GH
-    --       AB . DEF . IJ
-    --       AB . CDE . GH
-    --       AB . CDE . IJ
- 
-    --    Here we use the dot simply to separate the pieces of the string
-    --    matched by the three separate elements.
- 
-    --  Moving the Start Point
-    --  ======================
- 
-    --    A pattern is not required to match starting at the first character
-    --    of the string, and is not required to match to the end of the string.
-    --    The first attempt does indeed attempt to match starting at the first
-    --    character of the string, trying all the possible alternatives. But
-    --    if all alternatives fail, then the starting point of the match is
-    --    moved one character, and all possible alternatives are attempted at
-    --    the new anchor point.
- 
-    --    The entire match fails only when every possible starting point has
-    --    been attempted. As an example, suppose that we had the subject
-    --    string
- 
-    --      "ABABCDEIJKL"
- 
-    --    matched using the pattern in the previous example:
- 
-    --      ("ABC" or "AB") & ("DEF" or "CDE") & ("GH" or "IJ")
- 
-    --    would succeed, after two anchor point moves:
- 
-    --      "ABABCDEIJKL"
-    --         ^^^^^^^
-    --         matched
-    --         section
- 
-    --    This mode of pattern matching is called the unanchored mode. It is
-    --    also possible to put the pattern matcher into anchored mode by
-    --    setting the global variable Anchored_Mode to True. This will cause
-    --    all subsequent matches to be performed in anchored mode, where the
-    --    match is required to start at the first character.
- 
-    --    We will also see later how the effect of an anchored match can be
-    --    obtained for a single specified anchor point if this is desired.
- 
-    --  Other Pattern Elements
-    --  ======================
- 
-    --    In addition to strings (or single characters), there are many special
-    --    pattern elements that correspond to special predefined alternations:
- 
-    --      Arb       Matches any string. First it matches the null string, and
-    --                then on a subsequent failure, matches one character, and
-    --                then two characters, and so on. It only fails if the
-    --                entire remaining string is matched.
- 
-    --      Bal       Matches a non-empty string that is parentheses balanced
-    --                with respect to ordinary () characters. Examples of
-    --                balanced strings are "ABC", "A((B)C)", and "A(B)C(D)E".
-    --                Bal matches the shortest possible balanced string on the
-    --                first attempt, and if there is a subsequent failure,
-    --                attempts to extend the string.
- 
-    --      Cancel    Immediately aborts the entire pattern match, signalling
-    --                failure. This is a specialized pattern element, which is
-    --                useful in conjunction with some of the special pattern
-    --                elements that have side effects.
- 
-    --      Fail      The null alternation. Matches no possible strings, so it
-    --                always signals failure. This is a specialized pattern
-    --                element, which is useful in conjunction with some of the
-    --                special pattern elements that have side effects.
- 
-    --      Fence     Matches the null string at first, and then if a failure
-    --                causes alternatives to be sought, aborts the match (like
-    --                a Cancel). Note that using Fence at the start of a pattern
-    --                has the same effect as matching in anchored mode.
- 
-    --      Rest      Matches from the current point to the last character in
-    --                the string. This is a specialized pattern element, which
-    --                is useful in conjunction with some of the special pattern
-    --                elements that have side effects.
- 
-    --      Succeed   Repeatedly matches the null string (it is equivalent to
-    --                the alternation ("" or "" or "" ....). This is a special
-    --                pattern element, which is useful in conjunction with some
-    --                of the special pattern elements that have side effects.
- 
-    --  Pattern Construction Functions
-    --  ==============================
- 
-    --    The following functions construct additional pattern elements
- 
-    --      Any(S)    Where S is a string, matches a single character that is
-    --                any one of the characters in S. Fails if the current
-    --                character is not one of the given set of characters.
- 
-    --      Arbno(P)  Where P is any pattern, matches any number of instances
-    --                of the pattern, starting with zero occurrences. It is
-    --                thus equivalent to ("" or (P & ("" or (P & ("" ....)))).
-    --                The pattern P may contain any number of pattern elements
-    --                including the use of alternation and concatenation.
- 
-    --      Break(S)  Where S is a string, matches a string of zero or more
-    --                characters up to but not including a break character
-    --                that is one of the characters given in the string S.
-    --                Can match the null string, but cannot match the last
-    --                character in the string, since a break character is
-    --                required to be present.
- 
-    --      BreakX(S) Where S is a string, behaves exactly like Break(S) when
-    --                it first matches, but if a string is successfully matched,
-    --                then a subsequent failure causes an attempt to extend the
-    --                matched string.
- 
-    --      Fence(P)  Where P is a pattern, attempts to match the pattern P
-    --                including trying all possible alternatives of P. If none
-    --                of these alternatives succeeds, then the Fence pattern
-    --                fails. If one alternative succeeds, then the pattern
-    --                match proceeds, but on a subsequent failure, no attempt
-    --                is made to search for alternative matches of P. The
-    --                pattern P may contain any number of pattern elements
-    --                including the use of alternation and concatenation.
- 
-    --      Len(N)    Where N is a natural number, matches the given number of
-    --                characters. For example, Len(10) matches any string that
-    --                is exactly ten characters long.
- 
-    --      NotAny(S) Where S is a string, matches a single character that is
-    --                not one of the characters of S. Fails if the current
-    --                character is one of the given set of characters.
- 
-    --      NSpan(S)  Where S is a string, matches a string of zero or more
-    --                characters that is among the characters given in the
-    --                string. Always matches the longest possible such string.
-    --                Always succeeds, since it can match the null string.
- 
-    --      Pos(N)    Where N is a natural number, matches the null string
-    --                if exactly N characters have been matched so far, and
-    --                otherwise fails.
- 
-    --      Rpos(N)   Where N is a natural number, matches the null string
-    --                if exactly N characters remain to be matched, and
-    --                otherwise fails.
- 
-    --      Rtab(N)   Where N is a natural number, matches characters from
-    --                the current position until exactly N characters remain
-    --                to be matched in the string. Fails if fewer than N
-    --                unmatched characters remain in the string.
- 
-    --      Tab(N)    Where N is a natural number, matches characters from
-    --                the current position until exactly N characters have
-    --                been matched in all. Fails if more than N characters
-    --                have already been matched.
- 
-    --      Span(S)   Where S is a string, matches a string of one or more
-    --                characters that is among the characters given in the
-    --                string. Always matches the longest possible such string.
-    --                Fails if the current character is not one of the given
-    --                set of characters.
- 
-    --  Recursive Pattern Matching
-    --  ==========================
- 
-    --    The plus operator (+P) where P is a pattern variable, creates
-    --    a recursive pattern that will, at pattern matching time, follow
-    --    the pointer to obtain the referenced pattern, and then match this
-    --    pattern. This may be used to construct recursive patterns. Consider
-    --    for example:
- 
-    --       P := ("A" or ("B" & (+P)))
- 
-    --    On the first attempt, this pattern attempts to match the string "A".
-    --    If this fails, then the alternative matches a "B", followed by an
-    --    attempt to match P again. This second attempt first attempts to
-    --    match "A", and so on. The result is a pattern that will match a
-    --    string of B's followed by a single A.
- 
-    --    This particular example could simply be written as NSpan('B') & 'A',
-    --    but the use of recursive patterns in the general case can construct
-    --    complex patterns which could not otherwise be built.
- 
-    --  Pattern Assignment Operations
-    --  =============================
- 
-    --    In addition to the overall result of a pattern match, which indicates
-    --    success or failure, it is often useful to be able to keep track of
-    --    the pieces of the subject string that are matched by individual
-    --    pattern elements, or subsections of the pattern.
- 
-    --    The pattern assignment operators allow this capability. The first
-    --    form is the immediate assignment:
- 
-    --       P * S
- 
-    --    Here P is an arbitrary pattern, and S is a variable of type VString
-    --    that will be set to the substring matched by P. This assignment
-    --    happens during pattern matching, so if P matches more than once,
-    --    then the assignment happens more than once.
- 
-    --    The deferred assignment operation:
- 
-    --      P ** S
- 
-    --    avoids these multiple assignments by deferring the assignment to the
-    --    end of the match. If the entire match is successful, and if the
-    --    pattern P was part of the successful match, then at the end of the
-    --    matching operation the assignment to S of the string matching P is
-    --    performed.
- 
-    --    The cursor assignment operation:
- 
-    --      Setcur(N'Access)
- 
-    --    assigns the current cursor position to the natural variable N. The
-    --    cursor position is defined as the count of characters that have been
-    --    matched so far (including any start point moves).
- 
-    --    Finally the operations * and ** may be used with values of type
-    --    Text_IO.File_Access. The effect is to do a Put_Line operation of
-    --    the matched substring. These are particularly useful in debugging
-    --    pattern matches.
- 
-    --  Deferred Matching
-    --  =================
- 
-    --    The pattern construction functions (such as Len and Any) all permit
-    --    the use of pointers to natural or string values, or functions that
-    --    return natural or string values. These forms cause the actual value
-    --    to be obtained at pattern matching time. This allows interesting
-    --    possibilities for constructing dynamic patterns as illustrated in
-    --    the examples section.
- 
-    --    In addition the (+S) operator may be used where S is a pointer to
-    --    string or function returning string, with a similar deferred effect.
- 
-    --    A special use of deferred matching is the construction of predicate
-    --    functions. The element (+P) where P is an access to a function that
-    --    returns a Boolean value, causes the function to be called at the
-    --    time the element is matched. If the function returns True, then the
-    --    null string is matched, if the function returns False, then failure
-    --    is signalled and previous alternatives are sought.
- 
-    --  Deferred Replacement
-    --  ====================
- 
-    --    The simple model given for pattern replacement (where the matched
-    --    substring is replaced by the string given as the third argument to
-    --    Match) works fine in simple cases, but this approach does not work
-    --    in the case where the expression used as the replacement string is
-    --    dependent on values set by the match.
- 
-    --    For example, suppose we want to find an instance of a parenthesized
-    --    character, and replace the parentheses with square brackets. At first
-    --    glance it would seem that:
- 
-    --      Match (Subject, '(' & Len (1) * Char & ')', '[' & Char & ']');
- 
-    --    would do the trick, but that does not work, because the third
-    --    argument to Match gets evaluated too early, before the call to
-    --    Match, and before the pattern match has had a chance to set Char.
- 
-    --    To solve this problem we provide the deferred replacement capability.
-    --    With this approach, which of course is only needed if the pattern
-    --    involved has side effects, is to do the match in two stages. The
-    --    call to Match sets a pattern result in a variable of the private
-    --    type Match_Result, and then a subsequent Replace operation uses
-    --    this Match_Result object to perform the required replacement.
- 
-    --    Using this approach, we can now write the above operation properly
-    --    in a manner that will work:
- 
-    --      M : Match_Result;
-    --      ...
-    --      Match (Subject, '(' & Len (1) * Char & ')', M);
-    --      Replace (M, '[' & Char & ']');
- 
-    --    As with other Match cases, there is a function and procedure form
-    --    of this match call. A call to Replace after a failed match has no
-    --    effect. Note that Subject should not be modified between the calls.
- 
-    --  Examples of Pattern Matching
-    --  ============================
- 
-    --    First a simple example of the use of pattern replacement to remove
-    --    a line number from the start of a string. We assume that the line
-    --    number has the form of a string of decimal digits followed by a
-    --    period, followed by one or more spaces.
- 
-    --       Digs : constant Pattern := Span("0123456789");
- 
-    --       Lnum : constant Pattern := Pos(0) & Digs & '.' & Span(' ');
- 
-    --    Now to use this pattern we simply do a match with a replacement:
- 
-    --       Match (Line, Lnum, "");
- 
-    --    which replaces the line number by the null string. Note that it is
-    --    also possible to use an Ada.Strings.Maps.Character_Set value as an
-    --    argument to Span and similar functions, and in particular all the
-    --    useful constants 'in Ada.Strings.Maps.Constants are available. This
-    --    means that we could define Digs as:
- 
-    --       Digs : constant Pattern := Span(Decimal_Digit_Set);
- 
-    --    The style we use here, of defining constant patterns and then using
-    --    them is typical. It is possible to build up patterns dynamically,
-    --    but it is usually more efficient to build them in pieces in advance
-    --    using constant declarations. Note in particular that although it is
-    --    possible to construct a pattern directly as an argument for the
-    --    Match routine, it is much more efficient to preconstruct the pattern
-    --    as we did in this example.
- 
-    --    Now let's look at the use of pattern assignment to break a
-    --    string into sections. Suppose that the input string has two
-    --    unsigned decimal integers, separated by spaces or a comma,
-    --    with spaces allowed anywhere. Then we can isolate the two
-    --    numbers with the following pattern:
- 
-    --       Num1, Num2 : aliased VString;
- 
-    --       B : constant Pattern := NSpan(' ');
- 
-    --       N : constant Pattern := Span("0123456789");
- 
-    --       T : constant Pattern :=
-    --             NSpan(' ') & N * Num1 & Span(" ,") & N * Num2;
- 
-    --    The match operation Match (" 124, 257  ", T) would assign the
-    --    string 124 to Num1 and the string 257 to Num2.
- 
-    --    Now let's see how more complex elements can be built from the
-    --    set of primitive elements. The following pattern matches strings
-    --    that have the syntax of Ada 95 based literals:
- 
-    --       Digs  : constant Pattern := Span(Decimal_Digit_Set);
-    --       UDigs : constant Pattern := Digs & Arbno('_' & Digs);
- 
-    --       Edig  : constant Pattern := Span(Hexadecimal_Digit_Set);
-    --       UEdig : constant Pattern := Edig & Arbno('_' & Edig);
- 
-    --       Bnum  : constant Pattern := Udigs & '#' & UEdig & '#';
- 
-    --    A match against Bnum will now match the desired strings, e.g.
-    --    it will match 16#123_abc#, but not a#b#. However, this pattern
-    --    is not quite complete, since it does not allow colons to replace
-    --    the pound signs. The following is more complete:
- 
-    --       Bchar : constant Pattern := Any("#:");
-    --       Bnum  : constant Pattern := Udigs & Bchar & UEdig & Bchar;
- 
-    --    but that is still not quite right, since it allows # and : to be
-    --    mixed, and they are supposed to be used consistently. We solve
-    --    this by using a deferred match.
- 
-    --       Temp  : aliased VString;
- 
-    --       Bnum  : constant Pattern :=
-    --                 Udigs & Bchar * Temp & UEdig & (+Temp)
- 
-    --    Here the first instance of the base character is stored in Temp, and
-    --    then later in the pattern we rematch the value that was assigned.
- 
-    --    For an example of a recursive pattern, let's define a pattern
-    --    that is like the built in Bal, but the string matched is balanced
-    --    with respect to square brackets or curly brackets.
- 
-    --    The language for such strings might be defined in extended BNF as
- 
-    --      ELEMENT ::= <any character other than [] or {}>
-    --                  | '[' BALANCED_STRING ']'
-    --                  | '{' BALANCED_STRING '}'
- 
-    --      BALANCED_STRING ::= ELEMENT {ELEMENT}
- 
-    --    Here we use {} to indicate zero or more occurrences of a term, as
-    --    is common practice in extended BNF. Now we can translate the above
-    --    BNF into recursive patterns as follows:
- 
-    --      Element, Balanced_String : aliased Pattern;
-    --      .
-    --      .
-    --      .
-    --      Element := NotAny ("[]{}")
-    --                   or
-    --                 ('[' & (+Balanced_String) & ']')
-    --                   or
-    --                 ('{' & (+Balanced_String) & '}');
- 
-    --      Balanced_String := Element & Arbno (Element);
- 
-    --    Note the important use of + here to refer to a pattern not yet
-    --    defined. Note also that we use assignments precisely because we
-    --    cannot refer to as yet undeclared variables in initializations.
- 
-    --    Now that this pattern is constructed, we can use it as though it
-    --    were a new primitive pattern element, and for example, the match:
- 
-    --      Match ("xy[ab{cd}]", Balanced_String * Current_Output & Fail);
- 
-    --    will generate the output:
- 
-    --       x
-    --       xy
-    --       xy[ab{cd}]
-    --       y
-    --       y[ab{cd}]
-    --       [ab{cd}]
-    --       a
-    --       ab
-    --       ab{cd}
-    --       b
-    --       b{cd}
-    --       {cd}
-    --       c
-    --       cd
-    --       d
- 
-    --    Note that the function of the fail here is simply to force the
-    --    pattern Balanced_String to match all possible alternatives. Studying
-    --    the operation of this pattern in detail is highly instructive.
- 
-    --    Finally we give a rather elaborate example of the use of deferred
-    --    matching. The following declarations build up a pattern which will
-    --    find the longest string of decimal digits in the subject string.
- 
-    --       Max, Cur : VString;
-    --       Loc      : Natural;
- 
-    --       function GtS return Boolean is
-    --       begin
-    --          return Length (Cur) > Length (Max);
-    --       end GtS;
- 
-    --       Digit : constant Character_Set := Decimal_Digit_Set;
- 
-    --       Digs  : constant Pattern := Span(Digit);
- 
-    --       Find : constant Pattern :=
-    --         "" * Max & Fence            & -- initialize Max to null
-    --         BreakX (Digit)              & -- scan looking for digits
-    --         ((Span(Digit) * Cur         & -- assign next string to Cur
-    --          (+GtS'Unrestricted_Access) & -- check size(Cur) > Size(Max)
-    --          Setcur(Loc'Access))          -- if so, save location
-    --                   * Max)            & -- and assign to Max
-    --         Fail;                         -- seek all alternatives
- 
-    --    As we see from the comments here, complex patterns like this take
-    --    on aspects of sequential programs. In fact they are sequential
-    --    programs with general backtracking. In this pattern, we first use
-    --    a pattern assignment that matches null and assigns it to Max, so
-    --    that it is initialized for the new match. Now BreakX scans to the
-    --    next digit. Arb would do here, but BreakX will be more efficient.
-    --    Once we have found a digit, we scan out the longest string of
-    --    digits with Span, and assign it to Cur. The deferred call to GtS
-    --    tests if the string we assigned to Cur is the longest so far. If
-    --    not, then failure is signalled, and we seek alternatives (this
-    --    means that BreakX will extend and look for the next digit string).
-    --    If the call to GtS succeeds then the matched string is assigned
-    --    as the largest string so far into Max and its location is saved
-    --    in Loc. Finally Fail forces the match to fail and seek alternatives,
-    --    so that the entire string is searched.
- 
-    --    If the pattern Find is matched against a string, the variable Max
-    --    at the end of the pattern will have the longest string of digits,
-    --    and Loc will be the starting character location of the string. For
-    --    example, Match("ab123cd4657ef23", Find) will assign "4657" to Max
-    --    and 11 to Loc (indicating that the string ends with the eleventh
-    --    character of the string).
- 
-    --    Note: the use of Unrestricted_Access to reference GtS will not
-    --    be needed if GtS is defined at the outer level, but definitely
-    --    will be necessary if GtS is a nested function (in which case of
-    --    course the scope of the pattern Find will be restricted to this
-    --    nested scope, and this cannot be checked, i.e. use of the pattern
-    --    outside this scope is erroneous). Generally it is a good idea to
-    --    define patterns and the functions they call at the outer level
-    --    where possible, to avoid such problems.
- 
-    --  Correspondence with Pattern Matching in SPITBOL
-    --  ===============================================
- 
-    --    Generally the Ada syntax and names correspond closely to SPITBOL
-    --    syntax for pattern matching construction.
- 
-    --      The basic pattern construction operators are renamed as follows:
- 
-    --          Spitbol     Ada
- 
-    --          (space)      &
-    --             |         or
-    --             $         *
-    --             .         **
- 
-    --      The Ada operators were chosen so that the relative precedences of
-    --      these operators corresponds to that of the Spitbol operators, but
-    --      as always, the use of parentheses is advisable to clarify.
- 
-    --    The pattern construction operators all have similar names except for
- 
-    --          Spitbol      Ada
- 
-    --          Abort        Cancel
-    --          Rem          Rest
- 
-    --    where we have clashes with Ada reserved names
- 
-    --    Ada requires the use of 'Access to refer to functions used in the
-    --    pattern match, and often the use of 'Unrestricted_Access may be
-    --    necessary to get around the scope restrictions if the functions
-    --    are not declared at the outer level.
- 
-    --    The actual pattern matching syntax is modified in Ada as follows:
- 
-    --          Spitbol      Ada
- 
-    --          X Y          Match (X, Y);
-    --          X Y = Z      Match (X, Y, Z);
- 
-    --    and pattern failure is indicated by returning a Boolean result from
-    --    the Match function (True for success, False for failure).
- 
-    -----------------------
-    -- Type Declarations --
-    -----------------------
- 
-    type Pattern is private;
-    --  Type representing a pattern. This package provides a complete set of
-    --  operations for constructing patterns that can be used in the pattern
-    --  matching operations provided.
- 
-    type Boolean_Func is access function return Boolean;
-    --  General Boolean function type. When this type is used as a formal
-    --  parameter type in this package, it indicates a deferred predicate
-    --  pattern. The function will be called when the pattern element is
-    --  matched and failure signalled if False is returned.
- 
-    type Natural_Func is access function return Natural;
-    --  General Natural function type. When this type is used as a formal
-    --  parameter type in this package, it indicates a deferred pattern.
-    --  The function will be called when the pattern element is matched
-    --  to obtain the currently referenced Natural value.
- 
-    type VString_Func is access function return VString;
-    --  General VString function type. When this type is used as a formal
-    --  parameter type in this package, it indicates a deferred pattern.
-    --  The function will be called when the pattern element is matched
-    --  to obtain the currently referenced string value.
- 
-    subtype PString is String;
-    --  This subtype is used in the remainder of the package to indicate a
-    --  formal parameter that is converted to its corresponding pattern,
-    --  i.e. a pattern that matches the characters of the string.
- 
-    subtype PChar is Character;
-    --  Similarly, this subtype is used in the remainder of the package to
-    --  indicate a formal parameter that is converted to its corresponding
-    --  pattern, i.e. a pattern that matches this one character.
- 
-    subtype VString_Var is VString;
-    subtype Pattern_Var is Pattern;
-    --  These synonyms are used as formal parameter types to a function where,
-    --  if the language allowed, we would use in out parameters, but we are
-    --  not allowed to have in out parameters for functions. Instead we pass
-    --  actuals which must be variables, and with a bit of trickery in the
-    --  body, manage to interpret them properly as though they were indeed
-    --  in out parameters.
- 
-    pragma Warnings (Off, VString_Var);
-    pragma Warnings (Off, Pattern_Var);
-    --  We turn off warnings for these two types so that when variables are used
-    --  as arguments in this context, warnings about them not being assigned in
-    --  the source program will be suppressed.
- 
-    --------------------------------
-    -- Basic Pattern Construction --
-    --------------------------------
- 
-    function "&"  (L : Pattern; R : Pattern) return Pattern;
-    function "&"  (L : PString; R : Pattern) return Pattern;
-    function "&"  (L : Pattern; R : PString) return Pattern;
-    function "&"  (L : PChar;   R : Pattern) return Pattern;
-    function "&"  (L : Pattern; R : PChar)   return Pattern;
- 
-    --  Pattern concatenation. Matches L followed by R
- 
-    function "or" (L : Pattern; R : Pattern) return Pattern;
-    function "or" (L : PString; R : Pattern) return Pattern;
-    function "or" (L : Pattern; R : PString) return Pattern;
-    function "or" (L : PString; R : PString) return Pattern;
-    function "or" (L : PChar;   R : Pattern) return Pattern;
-    function "or" (L : Pattern; R : PChar)   return Pattern;
-    function "or" (L : PChar;   R : PChar)   return Pattern;
-    function "or" (L : PString; R : PChar)   return Pattern;
-    function "or" (L : PChar;   R : PString) return Pattern;
-    --  Pattern alternation. Creates a pattern that will first try to match
-    --  L and then on a subsequent failure, attempts to match R instead.
- 
-    ----------------------------------
-    -- Pattern Assignment Functions --
-    ----------------------------------
- 
-    function "*" (P : Pattern; Var : VString_Var)  return Pattern;
-    function "*" (P : PString; Var : VString_Var)  return Pattern;
-    function "*" (P : PChar;   Var : VString_Var)  return Pattern;
-    --  Matches P, and if the match succeeds, assigns the matched substring
-    --  to the given VString variable Var. This assignment happens as soon as
-    --  the substring is matched, and if the pattern P1 is matched more than
-    --  once during the course of the match, then the assignment will occur
-    --  more than once.
- 
-    function "**" (P : Pattern; Var : VString_Var) return Pattern;
-    function "**" (P : PString; Var : VString_Var) return Pattern;
-    function "**" (P : PChar;   Var : VString_Var) return Pattern;
-    --  Like "*" above, except that the assignment happens at most once
-    --  after the entire match is completed successfully. If the match
-    --  fails, then no assignment takes place.
- 
-    ----------------------------------
-    -- Deferred Matching Operations --
-    ----------------------------------
- 
-    function "+" (Str : VString_Var)  return Pattern;
-    --  Here Str must be a VString variable. This function constructs a
-    --  pattern which at pattern matching time will access the current
-    --  value of this variable, and match against these characters.
- 
-    function "+" (Str : VString_Func) return Pattern;
-    --  Constructs a pattern which at pattern matching time calls the given
-    --  function, and then matches against the string or character value
-    --  that is returned by the call.
- 
-    function "+" (P : Pattern_Var)    return Pattern;
-    --  Here P must be a Pattern variable. This function constructs a
-    --  pattern which at pattern matching time will access the current
-    --  value of this variable, and match against the pattern value.
- 
-    function "+" (P : Boolean_Func)   return Pattern;
-    --  Constructs a predicate pattern function that at pattern matching time
-    --  calls the given function. If True is returned, then the pattern matches.
-    --  If False is returned, then failure is signalled.
- 
-    --------------------------------
-    -- Pattern Building Functions --
-    --------------------------------
- 
-    function Arb                                             return Pattern;
-    --  Constructs a pattern that will match any string. On the first attempt,
-    --  the pattern matches a null string, then on each successive failure, it
-    --  matches one more character, and only fails if matching the entire rest
-    --  of the string.
- 
-    function Arbno  (P : Pattern)                            return Pattern;
-    function Arbno  (P : PString)                            return Pattern;
-    function Arbno  (P : PChar)                              return Pattern;
-    --  Pattern repetition. First matches null, then on a subsequent failure
-    --  attempts to match an additional instance of the given pattern.
-    --  Equivalent to (but more efficient than) P & ("" or (P & ("" or ...
- 
-    function Any    (Str : String)                           return Pattern;
-    function Any    (Str : VString)                          return Pattern;
-    function Any    (Str : Character)                        return Pattern;
-    function Any    (Str : Character_Set)                    return Pattern;
-    function Any    (Str : not null access VString)          return Pattern;
-    function Any    (Str : VString_Func)                     return Pattern;
-    --  Constructs a pattern that matches a single character that is one of
-    --  the characters in the given argument. The pattern fails if the current
-    --  character is not in Str.
- 
-    function Bal                                             return Pattern;
-    --  Constructs a pattern that will match any non-empty string that is
-    --  parentheses balanced with respect to the normal parentheses characters.
-    --  Attempts to extend the string if a subsequent failure occurs.
- 
-    function Break  (Str : String)                           return Pattern;
-    function Break  (Str : VString)                          return Pattern;
-    function Break  (Str : Character)                        return Pattern;
-    function Break  (Str : Character_Set)                    return Pattern;
-    function Break  (Str : not null access VString)          return Pattern;
-    function Break  (Str : VString_Func)                     return Pattern;
-    --  Constructs a pattern that matches a (possibly null) string which
-    --  is immediately followed by a character in the given argument. This
-    --  character is not part of the matched string. The pattern fails if
-    --  the remaining characters to be matched do not include any of the
-    --  characters in Str.
- 
-    function BreakX (Str : String)                           return Pattern;
-    function BreakX (Str : VString)                          return Pattern;
-    function BreakX (Str : Character)                        return Pattern;
-    function BreakX (Str : Character_Set)                    return Pattern;
-    function BreakX (Str : not null access VString)          return Pattern;
-    function BreakX (Str : VString_Func)                     return Pattern;
-    --  Like Break, but the pattern attempts to extend on a failure to find
-    --  the next occurrence of a character in Str, and only fails when the
-    --  last such instance causes a failure.
- 
-    function Cancel                                          return Pattern;
-    --  Constructs a pattern that immediately aborts the entire match
- 
-    function Fail                                            return Pattern;
-    --  Constructs a pattern that always fails
- 
-    function Fence                                           return Pattern;
-    --  Constructs a pattern that matches null on the first attempt, and then
-    --  causes the entire match to be aborted if a subsequent failure occurs.
- 
-    function Fence  (P : Pattern)                            return Pattern;
-    --  Constructs a pattern that first matches P. If P fails, then the
-    --  constructed pattern fails. If P succeeds, then the match proceeds,
-    --  but if subsequent failure occurs, alternatives in P are not sought.
-    --  The idea of Fence is that each time the pattern is matched, just
-    --  one attempt is made to match P, without trying alternatives.
- 
-    function Len    (Count : Natural)                        return Pattern;
-    function Len    (Count : not null access Natural)        return Pattern;
-    function Len    (Count : Natural_Func)                   return Pattern;
-    --  Constructs a pattern that matches exactly the given number of
-    --  characters. The pattern fails if fewer than this number of characters
-    --  remain to be matched in the string.
- 
-    function NotAny (Str : String)                           return Pattern;
-    function NotAny (Str : VString)                          return Pattern;
-    function NotAny (Str : Character)                        return Pattern;
-    function NotAny (Str : Character_Set)                    return Pattern;
-    function NotAny (Str : not null access VString)          return Pattern;
-    function NotAny (Str : VString_Func)                     return Pattern;
-    --  Constructs a pattern that matches a single character that is not
-    --  one of the characters in the given argument. The pattern Fails if
-    --  the current character is in Str.
- 
-    function NSpan  (Str : String)                           return Pattern;
-    function NSpan  (Str : VString)                          return Pattern;
-    function NSpan  (Str : Character)                        return Pattern;
-    function NSpan  (Str : Character_Set)                    return Pattern;
-    function NSpan  (Str : not null access VString)          return Pattern;
-    function NSpan  (Str : VString_Func)                     return Pattern;
-    --  Constructs a pattern that matches the longest possible string
-    --  consisting entirely of characters from the given argument. The
-    --  string may be empty, so this pattern always succeeds.
- 
-    function Pos    (Count : Natural)                        return Pattern;
-    function Pos    (Count : not null access Natural)        return Pattern;
-    function Pos    (Count : Natural_Func)                   return Pattern;
-    --  Constructs a pattern that matches the null string if exactly Count
-    --  characters have already been matched, and otherwise fails.
- 
-    function Rest                                            return Pattern;
-    --  Constructs a pattern that always succeeds, matching the remaining
-    --  unmatched characters in the pattern.
- 
-    function Rpos   (Count : Natural)                        return Pattern;
-    function Rpos   (Count : not null access Natural)        return Pattern;
-    function Rpos   (Count : Natural_Func)                   return Pattern;
-    --  Constructs a pattern that matches the null string if exactly Count
-    --  characters remain to be matched in the string, and otherwise fails.
- 
-    function Rtab   (Count : Natural)                        return Pattern;
-    function Rtab   (Count : not null access Natural)        return Pattern;
-    function Rtab   (Count : Natural_Func)                   return Pattern;
-    --  Constructs a pattern that matches from the current location until
-    --  exactly Count characters remain to be matched in the string. The
-    --  pattern fails if fewer than Count characters remain to be matched.
- 
-    function Setcur (Var : not null access Natural)          return Pattern;
-    --  Constructs a pattern that matches the null string, and assigns the
-    --  current cursor position in the string. This value is the number of
-    --  characters matched so far. So it is zero at the start of the match.
- 
-    function Span   (Str : String)                           return Pattern;
-    function Span   (Str : VString)                          return Pattern;
-    function Span   (Str : Character)                        return Pattern;
-    function Span   (Str : Character_Set)                    return Pattern;
-    function Span   (Str : not null access VString)          return Pattern;
-    function Span   (Str : VString_Func)                     return Pattern;
-    --  Constructs a pattern that matches the longest possible string
-    --  consisting entirely of characters from the given argument. The
-    --  string cannot be empty, so the pattern fails if the current
-    --  character is not one of the characters in Str.
- 
-    function Succeed                                         return Pattern;
-    --  Constructs a pattern that succeeds matching null, both on the first
-    --  attempt, and on any rematch attempt, i.e. it is equivalent to an
-    --  infinite alternation of null strings.
- 
-    function Tab    (Count : Natural)                        return Pattern;
-    function Tab    (Count : not null access Natural)        return Pattern;
-    function Tab    (Count : Natural_Func)                   return Pattern;
-    --  Constructs a pattern that from the current location until Count
-    --  characters have been matched. The pattern fails if more than Count
-    --  characters have already been matched.
- 
-    ---------------------------------
-    -- Pattern Matching Operations --
-    ---------------------------------
- 
-    --  The Match function performs an actual pattern matching operation.
-    --  The versions with three parameters perform a match without modifying
-    --  the subject string and return a Boolean result indicating if the
-    --  match is successful or not. The Anchor parameter is set to True to
-    --  obtain an anchored match in which the pattern is required to match
-    --  the first character of the string. In an unanchored match, which is
- 
-    --  the default, successive attempts are made to match the given pattern
-    --  at each character of the subject string until a match succeeds, or
-    --  until all possibilities have failed.
- 
-    --  Note that pattern assignment functions in the pattern may generate
-    --  side effects, so these functions are not necessarily pure.
- 
-    Anchored_Mode : Boolean := False;
-    --  This global variable can be set True to cause all subsequent pattern
-    --  matches to operate in anchored mode. In anchored mode, no attempt is
-    --  made to move the anchor point, so that if the match succeeds it must
-    --  succeed starting at the first character. Note that the effect of
-    --  anchored mode may be achieved in individual pattern matches by using
-    --  Fence or Pos(0) at the start of the pattern.
- 
-    Pattern_Stack_Overflow : exception;
-    --  Exception raised if internal pattern matching stack overflows. This
-    --  is typically the result of runaway pattern recursion. If there is a
-    --  genuine case of stack overflow, then either the match must be broken
-    --  down into simpler steps, or the stack limit must be reset.
- 
-    Stack_Size : constant Positive := 2000;
-    --  Size used for internal pattern matching stack. Increase this size if
-    --  complex patterns cause Pattern_Stack_Overflow to be raised.
- 
-    --  Simple match functions. The subject is matched against the pattern.
-    --  Any immediate or deferred assignments or writes are executed, and
-    --  the returned value indicates whether or not the match succeeded.
- 
-    function Match
-      (Subject : VString;
-       Pat     : Pattern) return Boolean;
- 
-    function Match
-      (Subject : VString;
-       Pat     : PString) return Boolean;
- 
-    function Match
-      (Subject : String;
-       Pat     : Pattern) return Boolean;
- 
-    function Match
-      (Subject : String;
-       Pat     : PString) return Boolean;
- 
-    --  Replacement functions. The subject is matched against the pattern.
-    --  Any immediate or deferred assignments or writes are executed, and
-    --  the returned value indicates whether or not the match succeeded.
-    --  If the match succeeds, then the matched part of the subject string
-    --  is replaced by the given Replace string.
- 
-    function Match
-      (Subject : VString_Var;
-       Pat     : Pattern;
-       Replace : VString) return Boolean;
- 
-    function Match
-      (Subject : VString_Var;
-       Pat     : PString;
-       Replace : VString) return Boolean;
- 
-    function Match
-      (Subject : VString_Var;
-       Pat     : Pattern;
-       Replace : String) return Boolean;
- 
-    function Match
-      (Subject : VString_Var;
-       Pat     : PString;
-       Replace : String) return Boolean;
- 
-    --  Simple match procedures. The subject is matched against the pattern.
-    --  Any immediate or deferred assignments or writes are executed. No
-    --  indication of success or failure is returned.
- 
-    procedure Match
-      (Subject : VString;
-       Pat     : Pattern);
- 
-    procedure Match
-      (Subject : VString;
-       Pat     : PString);
- 
-    procedure Match
-      (Subject : String;
-       Pat     : Pattern);
- 
-    procedure Match
-      (Subject : String;
-       Pat     : PString);
- 
-    --  Replacement procedures. The subject is matched against the pattern.
-    --  Any immediate or deferred assignments or writes are executed. No
-    --  indication of success or failure is returned. If the match succeeds,
-    --  then the matched part of the subject string is replaced by the given
-    --  Replace string.
- 
-    procedure Match
-      (Subject : in out VString;
-       Pat     : Pattern;
-       Replace : VString);
- 
-    procedure Match
-      (Subject : in out VString;
-       Pat     : PString;
-       Replace : VString);
- 
-    procedure Match
-      (Subject : in out VString;
-       Pat     : Pattern;
-       Replace : String);
- 
-    procedure Match
-      (Subject : in out VString;
-       Pat     : PString;
-       Replace : String);
- 
-    --  Deferred Replacement
- 
-    type Match_Result is private;
-    --  Type used to record result of pattern match
- 
-    subtype Match_Result_Var is Match_Result;
-    --  This synonyms is used as a formal parameter type to a function where,
-    --  if the language allowed, we would use an in out parameter, but we are
-    --  not allowed to have in out parameters for functions. Instead we pass
-    --  actuals which must be variables, and with a bit of trickery in the
-    --  body, manage to interpret them properly as though they were indeed
-    --  in out parameters.
- 
-    function Match
-      (Subject : VString_Var;
-       Pat     : Pattern;
-       Result  : Match_Result_Var) return Boolean;
- 
-    procedure Match
-      (Subject : in out VString;
-       Pat     : Pattern;
-       Result  : out Match_Result);
- 
-    procedure Replace
-      (Result  : in out Match_Result;
-       Replace : VString);
-    --  Given a previous call to Match which set Result, performs a pattern
-    --  replacement if the match was successful. Has no effect if the match
-    --  failed. This call should immediately follow the Match call.
- 
-    ------------------------
-    -- Debugging Routines --
-    ------------------------
- 
-    --  Debugging pattern matching operations can often be quite complex,
-    --  since there is no obvious way to trace the progress of the match.
-    --  The declarations in this section provide some debugging assistance.
- 
-    Debug_Mode : Boolean := False;
-    --  This global variable can be set True to generate debugging on all
-    --  subsequent calls to Match. The debugging output is a full trace of
-    --  the actions of the pattern matcher, written to Standard_Output. The
-    --  level of this information is intended to be comprehensible at the
-    --  abstract level of this package declaration. However, note that the
-    --  use of this switch often generates large amounts of output.
- 
-    function "*"  (P : Pattern; Fil : File_Access)           return Pattern;
-    function "*"  (P : PString; Fil : File_Access)           return Pattern;
-    function "*"  (P : PChar;   Fil : File_Access)           return Pattern;
-    function "**" (P : Pattern; Fil : File_Access)           return Pattern;
-    function "**" (P : PString; Fil : File_Access)           return Pattern;
-    function "**" (P : PChar;   Fil : File_Access)           return Pattern;
-    --  These are similar to the corresponding pattern assignment operations
-    --  except that instead of setting the value of a variable, the matched
-    --  substring is written to the appropriate file. This can be useful in
-    --  following the progress of a match without generating the full amount
-    --  of information obtained by setting Debug_Mode to True.
- 
-    Terminal : constant File_Access := Standard_Error;
-    Output   : constant File_Access := Standard_Output;
-    --  Two handy synonyms for use with the above pattern write operations
- 
-    --  Finally we have some routines that are useful for determining what
-    --  patterns are in use, particularly if they are constructed dynamically.
- 
-    function Image (P : Pattern) return String;
-    function Image (P : Pattern) return VString;
-    --  This procedures yield strings that corresponds to the syntax needed
-    --  to create the given pattern using the functions in this package. The
-    --  form of this string is such that it could actually be compiled and
-    --  evaluated to yield the required pattern except for references to
-    --  variables and functions, which are output using one of the following
-    --  forms:
-    --
-    --     access Natural     NP(16#...#)
-    --     access Pattern     PP(16#...#)
-    --     access VString     VP(16#...#)
-    --
-    --     Natural_Func       NF(16#...#)
-    --     VString_Func       VF(16#...#)
-    --
-    --  where 16#...# is the hex representation of the integer address that
-    --  corresponds to the given access value
- 
-    procedure Dump (P : Pattern);
-    --  This procedure writes information about the pattern to Standard_Out.
-    --  The format of this information is keyed to the internal data structures
-    --  used to implement patterns. The information provided by Dump is thus
-    --  more precise than that yielded by Image, but is also a bit more obscure
-    --  (i.e. it cannot be interpreted solely in terms of this spec, you have
-    --  to know something about the data structures).
- 
-    ------------------
-    -- Private Part --
-    ------------------
- 
- private
-    type PE;
-    --  Pattern element, a pattern is a complex structure of PE's. This type
-    --  is defined and described in the body of this package.
- 
-    type PE_Ptr is access all PE;
-    --  Pattern reference. PE's use PE_Ptr values to reference other PE's
- 
-    type Pattern is new Controlled with record
-       Stk : Natural := 0;
-       --  Maximum number of stack entries required for matching this
-       --  pattern. See description of pattern history stack in body.
- 
-       P : PE_Ptr := null;
-       --  Pointer to initial pattern element for pattern
-    end record;
- 
-    pragma Finalize_Storage_Only (Pattern);
- 
-    procedure Adjust (Object : in out Pattern);
-    --  Adjust routine used to copy pattern objects
- 
-    procedure Finalize (Object : in out Pattern);
-    --  Finalization routine used to release storage allocated for a pattern
- 
-    type VString_Ptr is access all VString;
- 
-    type Match_Result is record
-       Var : VString_Ptr;
-       --  Pointer to subject string. Set to null if match failed
- 
-       Start : Natural := 1;
-       --  Starting index position (1's origin) of matched section of
-       --  subject string. Only valid if Var is non-null.
- 
-       Stop : Natural := 0;
-       --  Ending index position (1's origin) of matched section of
-       --  subject string. Only valid if Var is non-null.
- 
-    end record;
- 
-    pragma Volatile (Match_Result);
-    --  This ensures that the Result parameter is passed by reference, so
-    --  that we can play our games with the bogus Match_Result_Var parameter
-    --  in the function case to treat it as though it were an in out parameter.
- 
- end GNAT.Spitbol.Patterns;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-spitbo.adb gcc-8.1.0/gcc/ada/g-spitbo.adb
*** gcc-7.3.0/gcc/ada/g-spitbo.adb	Wed Oct 12 12:27:25 2016
--- gcc-8.1.0/gcc/ada/g-spitbo.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,769 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                         G N A T . S P I T B O L                          --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 1998-2016, AdaCore                     --
- --                                                                          --
- -- GNAT is 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.Strings;               use Ada.Strings;
- with Ada.Strings.Unbounded.Aux; use Ada.Strings.Unbounded.Aux;
- 
- with GNAT.Debug_Utilities;      use GNAT.Debug_Utilities;
- with GNAT.IO;                   use GNAT.IO;
- 
- with System.String_Hash;
- 
- with Ada.Unchecked_Deallocation;
- 
- package body GNAT.Spitbol is
- 
-    ---------
-    -- "&" --
-    ---------
- 
-    function "&" (Num : Integer; Str : String)  return String is
-    begin
-       return S (Num) & Str;
-    end "&";
- 
-    function "&" (Str : String;  Num : Integer) return String is
-    begin
-       return Str & S (Num);
-    end "&";
- 
-    function "&" (Num : Integer; Str : VString) return VString is
-    begin
-       return S (Num) & Str;
-    end "&";
- 
-    function "&" (Str : VString; Num : Integer) return VString is
-    begin
-       return Str & S (Num);
-    end "&";
- 
-    ----------
-    -- Char --
-    ----------
- 
-    function Char (Num : Natural) return Character is
-    begin
-       return Character'Val (Num);
-    end Char;
- 
-    ----------
-    -- Lpad --
-    ----------
- 
-    function Lpad
-      (Str : VString;
-       Len : Natural;
-       Pad : Character := ' ') return VString
-    is
-    begin
-       if Length (Str) >= Len then
-          return Str;
-       else
-          return Tail (Str, Len, Pad);
-       end if;
-    end Lpad;
- 
-    function Lpad
-      (Str : String;
-       Len : Natural;
-       Pad : Character := ' ') return VString
-    is
-    begin
-       if Str'Length >= Len then
-          return V (Str);
- 
-       else
-          declare
-             R : String (1 .. Len);
- 
-          begin
-             for J in 1 .. Len - Str'Length loop
-                R (J) := Pad;
-             end loop;
- 
-             R (Len - Str'Length + 1 .. Len) := Str;
-             return V (R);
-          end;
-       end if;
-    end Lpad;
- 
-    procedure Lpad
-      (Str  : in out VString;
-       Len  : Natural;
-       Pad  : Character := ' ')
-    is
-    begin
-       if Length (Str) >= Len then
-          return;
-       else
-          Tail (Str, Len, Pad);
-       end if;
-    end Lpad;
- 
-    -------
-    -- N --
-    -------
- 
-    function N (Str : VString) return Integer is
-       S : Big_String_Access;
-       L : Natural;
-    begin
-       Get_String (Str, S, L);
-       return Integer'Value (S (1 .. L));
-    end N;
- 
-    --------------------
-    -- Reverse_String --
-    --------------------
- 
-    function Reverse_String (Str : VString) return VString is
-       S : Big_String_Access;
-       L : Natural;
- 
-    begin
-       Get_String (Str, S, L);
- 
-       declare
-          Result : String (1 .. L);
- 
-       begin
-          for J in 1 .. L loop
-             Result (J) := S (L + 1 - J);
-          end loop;
- 
-          return V (Result);
-       end;
-    end Reverse_String;
- 
-    function Reverse_String (Str : String) return VString is
-       Result : String (1 .. Str'Length);
- 
-    begin
-       for J in 1 .. Str'Length loop
-          Result (J) := Str (Str'Last + 1 - J);
-       end loop;
- 
-       return V (Result);
-    end Reverse_String;
- 
-    procedure Reverse_String (Str : in out VString) is
-       S : Big_String_Access;
-       L : Natural;
- 
-    begin
-       Get_String (Str, S, L);
- 
-       declare
-          Result : String (1 .. L);
- 
-       begin
-          for J in 1 .. L loop
-             Result (J) := S (L + 1 - J);
-          end loop;
- 
-          Set_Unbounded_String (Str, Result);
-       end;
-    end Reverse_String;
- 
-    ----------
-    -- Rpad --
-    ----------
- 
-    function Rpad
-      (Str : VString;
-       Len : Natural;
-       Pad : Character := ' ') return VString
-    is
-    begin
-       if Length (Str) >= Len then
-          return Str;
-       else
-          return Head (Str, Len, Pad);
-       end if;
-    end Rpad;
- 
-    function Rpad
-      (Str : String;
-       Len : Natural;
-       Pad : Character := ' ') return VString
-    is
-    begin
-       if Str'Length >= Len then
-          return V (Str);
- 
-       else
-          declare
-             R : String (1 .. Len);
- 
-          begin
-             for J in Str'Length + 1 .. Len loop
-                R (J) := Pad;
-             end loop;
- 
-             R (1 .. Str'Length) := Str;
-             return V (R);
-          end;
-       end if;
-    end Rpad;
- 
-    procedure Rpad
-      (Str  : in out VString;
-       Len  : Natural;
-       Pad  : Character := ' ')
-    is
-    begin
-       if Length (Str) >= Len then
-          return;
- 
-       else
-          Head (Str, Len, Pad);
-       end if;
-    end Rpad;
- 
-    -------
-    -- S --
-    -------
- 
-    function S (Num : Integer) return String is
-       Buf : String (1 .. 30);
-       Ptr : Natural := Buf'Last + 1;
-       Val : Natural := abs (Num);
- 
-    begin
-       loop
-          Ptr := Ptr - 1;
-          Buf (Ptr) := Character'Val (Val mod 10 + Character'Pos ('0'));
-          Val := Val / 10;
-          exit when Val = 0;
-       end loop;
- 
-       if Num < 0 then
-          Ptr := Ptr - 1;
-          Buf (Ptr) := '-';
-       end if;
- 
-       return Buf (Ptr .. Buf'Last);
-    end S;
- 
-    ------------
-    -- Substr --
-    ------------
- 
-    function Substr
-      (Str   : VString;
-       Start : Positive;
-       Len   : Natural) return VString
-    is
-       S : Big_String_Access;
-       L : Natural;
- 
-    begin
-       Get_String (Str, S, L);
- 
-       if Start > L then
-          raise Index_Error;
-       elsif Start + Len - 1 > L then
-          raise Length_Error;
-       else
-          return V (S (Start .. Start + Len - 1));
-       end if;
-    end Substr;
- 
-    function Substr
-      (Str   : String;
-       Start : Positive;
-       Len   : Natural) return VString
-    is
-    begin
-       if Start > Str'Length then
-          raise Index_Error;
-       elsif Start + Len - 1 > Str'Length then
-          raise Length_Error;
-       else
-          return
-            V (Str (Str'First + Start - 1 .. Str'First + Start + Len - 2));
-       end if;
-    end Substr;
- 
-    -----------
-    -- Table --
-    -----------
- 
-    package body Table is
- 
-       procedure Free is new
-         Ada.Unchecked_Deallocation (Hash_Element, Hash_Element_Ptr);
- 
-       -----------------------
-       -- Local Subprograms --
-       -----------------------
- 
-       function Hash is new System.String_Hash.Hash
-         (Character, String, Unsigned_32);
- 
-       ------------
-       -- Adjust --
-       ------------
- 
-       overriding procedure Adjust (Object : in out Table) is
-          Ptr1 : Hash_Element_Ptr;
-          Ptr2 : Hash_Element_Ptr;
- 
-       begin
-          for J in Object.Elmts'Range loop
-             Ptr1 := Object.Elmts (J)'Unrestricted_Access;
- 
-             if Ptr1.Name /= null then
-                loop
-                   Ptr1.Name := new String'(Ptr1.Name.all);
-                   exit when Ptr1.Next = null;
-                   Ptr2 := Ptr1.Next;
-                   Ptr1.Next := new Hash_Element'(Ptr2.all);
-                   Ptr1 := Ptr1.Next;
-                end loop;
-             end if;
-          end loop;
-       end Adjust;
- 
-       -----------
-       -- Clear --
-       -----------
- 
-       procedure Clear (T : in out Table) is
-          Ptr1 : Hash_Element_Ptr;
-          Ptr2 : Hash_Element_Ptr;
- 
-       begin
-          for J in T.Elmts'Range loop
-             if T.Elmts (J).Name /= null then
-                Free (T.Elmts (J).Name);
-                T.Elmts (J).Value := Null_Value;
- 
-                Ptr1 := T.Elmts (J).Next;
-                T.Elmts (J).Next := null;
- 
-                while Ptr1 /= null loop
-                   Ptr2 := Ptr1.Next;
-                   Free (Ptr1.Name);
-                   Free (Ptr1);
-                   Ptr1 := Ptr2;
-                end loop;
-             end if;
-          end loop;
-       end Clear;
- 
-       ----------------------
-       -- Convert_To_Array --
-       ----------------------
- 
-       function Convert_To_Array (T : Table) return Table_Array is
-          Num_Elmts : Natural := 0;
-          Elmt      : Hash_Element_Ptr;
- 
-       begin
-          for J in T.Elmts'Range loop
-             Elmt := T.Elmts (J)'Unrestricted_Access;
- 
-             if Elmt.Name /= null then
-                loop
-                   Num_Elmts := Num_Elmts + 1;
-                   Elmt := Elmt.Next;
-                   exit when Elmt = null;
-                end loop;
-             end if;
-          end loop;
- 
-          declare
-             TA  : Table_Array (1 .. Num_Elmts);
-             P   : Natural := 1;
- 
-          begin
-             for J in T.Elmts'Range loop
-                Elmt := T.Elmts (J)'Unrestricted_Access;
- 
-                if Elmt.Name /= null then
-                   loop
-                      Set_Unbounded_String (TA (P).Name, Elmt.Name.all);
-                      TA (P).Value := Elmt.Value;
-                      P := P + 1;
-                      Elmt := Elmt.Next;
-                      exit when Elmt = null;
-                   end loop;
-                end if;
-             end loop;
- 
-             return TA;
-          end;
-       end Convert_To_Array;
- 
-       ----------
-       -- Copy --
-       ----------
- 
-       procedure Copy (From : Table; To : in out Table) is
-          Elmt : Hash_Element_Ptr;
- 
-       begin
-          Clear (To);
- 
-          for J in From.Elmts'Range loop
-             Elmt := From.Elmts (J)'Unrestricted_Access;
-             if Elmt.Name /= null then
-                loop
-                   Set (To, Elmt.Name.all, Elmt.Value);
-                   Elmt := Elmt.Next;
-                   exit when Elmt = null;
-                end loop;
-             end if;
-          end loop;
-       end Copy;
- 
-       ------------
-       -- Delete --
-       ------------
- 
-       procedure Delete (T : in out Table; Name : Character) is
-       begin
-          Delete (T, String'(1 => Name));
-       end Delete;
- 
-       procedure Delete (T : in out Table; Name  : VString) is
-          S : Big_String_Access;
-          L : Natural;
-       begin
-          Get_String (Name, S, L);
-          Delete (T, S (1 .. L));
-       end Delete;
- 
-       procedure Delete (T : in out Table; Name  : String) is
-          Slot : constant Unsigned_32 := Hash (Name) mod T.N + 1;
-          Elmt : Hash_Element_Ptr := T.Elmts (Slot)'Unrestricted_Access;
-          Next : Hash_Element_Ptr;
- 
-       begin
-          if Elmt.Name = null then
-             null;
- 
-          elsif Elmt.Name.all = Name then
-             Free (Elmt.Name);
- 
-             if Elmt.Next = null then
-                Elmt.Value := Null_Value;
-                return;
- 
-             else
-                Next := Elmt.Next;
-                Elmt.Name  := Next.Name;
-                Elmt.Value := Next.Value;
-                Elmt.Next  := Next.Next;
-                Free (Next);
-                return;
-             end if;
- 
-          else
-             loop
-                Next := Elmt.Next;
- 
-                if Next = null then
-                   return;
- 
-                elsif Next.Name.all = Name then
-                   Free (Next.Name);
-                   Elmt.Next := Next.Next;
-                   Free (Next);
-                   return;
- 
-                else
-                   Elmt := Next;
-                end if;
-             end loop;
-          end if;
-       end Delete;
- 
-       ----------
-       -- Dump --
-       ----------
- 
-       procedure Dump (T : Table; Str : String := "Table") is
-          Num_Elmts : Natural := 0;
-          Elmt      : Hash_Element_Ptr;
- 
-       begin
-          for J in T.Elmts'Range loop
-             Elmt := T.Elmts (J)'Unrestricted_Access;
- 
-             if Elmt.Name /= null then
-                loop
-                   Num_Elmts := Num_Elmts + 1;
-                   Put_Line
-                     (Str & '<' & Image (Elmt.Name.all) & "> = " &
-                      Img (Elmt.Value));
-                   Elmt := Elmt.Next;
-                   exit when Elmt = null;
-                end loop;
-             end if;
-          end loop;
- 
-          if Num_Elmts = 0 then
-             Put_Line (Str & " is empty");
-          end if;
-       end Dump;
- 
-       procedure Dump (T : Table_Array; Str : String := "Table_Array") is
-       begin
-          if T'Length = 0 then
-             Put_Line (Str & " is empty");
- 
-          else
-             for J in T'Range loop
-                Put_Line
-                  (Str & '(' & Image (To_String (T (J).Name)) & ") = " &
-                   Img (T (J).Value));
-             end loop;
-          end if;
-       end Dump;
- 
-       --------------
-       -- Finalize --
-       --------------
- 
-       overriding procedure Finalize (Object : in out Table) is
-          Ptr1 : Hash_Element_Ptr;
-          Ptr2 : Hash_Element_Ptr;
- 
-       begin
-          for J in Object.Elmts'Range loop
-             Ptr1 := Object.Elmts (J).Next;
-             Free (Object.Elmts (J).Name);
-             while Ptr1 /= null loop
-                Ptr2 := Ptr1.Next;
-                Free (Ptr1.Name);
-                Free (Ptr1);
-                Ptr1 := Ptr2;
-             end loop;
-          end loop;
-       end Finalize;
- 
-       ---------
-       -- Get --
-       ---------
- 
-       function Get (T : Table; Name : Character) return Value_Type is
-       begin
-          return Get (T, String'(1 => Name));
-       end Get;
- 
-       function Get (T : Table; Name : VString) return Value_Type is
-          S : Big_String_Access;
-          L : Natural;
-       begin
-          Get_String (Name, S, L);
-          return Get (T, S (1 .. L));
-       end Get;
- 
-       function Get (T : Table; Name : String) return Value_Type is
-          Slot : constant Unsigned_32 := Hash (Name) mod T.N + 1;
-          Elmt : Hash_Element_Ptr := T.Elmts (Slot)'Unrestricted_Access;
- 
-       begin
-          if Elmt.Name = null then
-             return Null_Value;
- 
-          else
-             loop
-                if Name = Elmt.Name.all then
-                   return Elmt.Value;
- 
-                else
-                   Elmt := Elmt.Next;
- 
-                   if Elmt = null then
-                      return Null_Value;
-                   end if;
-                end if;
-             end loop;
-          end if;
-       end Get;
- 
-       -------------
-       -- Present --
-       -------------
- 
-       function Present (T : Table; Name : Character) return Boolean is
-       begin
-          return Present (T, String'(1 => Name));
-       end Present;
- 
-       function Present (T : Table; Name : VString) return Boolean is
-          S : Big_String_Access;
-          L : Natural;
-       begin
-          Get_String (Name, S, L);
-          return Present (T, S (1 .. L));
-       end Present;
- 
-       function Present (T : Table; Name : String) return Boolean is
-          Slot : constant Unsigned_32 := Hash (Name) mod T.N + 1;
-          Elmt : Hash_Element_Ptr := T.Elmts (Slot)'Unrestricted_Access;
- 
-       begin
-          if Elmt.Name = null then
-             return False;
- 
-          else
-             loop
-                if Name = Elmt.Name.all then
-                   return True;
- 
-                else
-                   Elmt := Elmt.Next;
- 
-                   if Elmt = null then
-                      return False;
-                   end if;
-                end if;
-             end loop;
-          end if;
-       end Present;
- 
-       ---------
-       -- Set --
-       ---------
- 
-       procedure Set (T : in out Table; Name : VString; Value : Value_Type) is
-          S : Big_String_Access;
-          L : Natural;
-       begin
-          Get_String (Name, S, L);
-          Set (T, S (1 .. L), Value);
-       end Set;
- 
-       procedure Set (T : in out Table; Name : Character; Value : Value_Type) is
-       begin
-          Set (T, String'(1 => Name), Value);
-       end Set;
- 
-       procedure Set
-         (T     : in out Table;
-          Name  : String;
-          Value : Value_Type)
-       is
-       begin
-          if Value = Null_Value then
-             Delete (T, Name);
- 
-          else
-             declare
-                Slot : constant Unsigned_32 := Hash (Name) mod T.N + 1;
-                Elmt : Hash_Element_Ptr := T.Elmts (Slot)'Unrestricted_Access;
- 
-                subtype String1 is String (1 .. Name'Length);
- 
-             begin
-                if Elmt.Name = null then
-                   Elmt.Name  := new String'(String1 (Name));
-                   Elmt.Value := Value;
-                   return;
- 
-                else
-                   loop
-                      if Name = Elmt.Name.all then
-                         Elmt.Value := Value;
-                         return;
- 
-                      elsif Elmt.Next = null then
-                         Elmt.Next := new Hash_Element'(
-                                        Name  => new String'(String1 (Name)),
-                                        Value => Value,
-                                        Next  => null);
-                         return;
- 
-                      else
-                         Elmt := Elmt.Next;
-                      end if;
-                   end loop;
-                end if;
-             end;
-          end if;
-       end Set;
-    end Table;
- 
-    ----------
-    -- Trim --
-    ----------
- 
-    function Trim (Str : VString) return VString is
-    begin
-       return Trim (Str, Right);
-    end Trim;
- 
-    function Trim (Str : String) return VString is
-    begin
-       for J in reverse Str'Range loop
-          if Str (J) /= ' ' then
-             return V (Str (Str'First .. J));
-          end if;
-       end loop;
- 
-       return Nul;
-    end Trim;
- 
-    procedure Trim (Str : in out VString) is
-    begin
-       Trim (Str, Right);
-    end Trim;
- 
-    -------
-    -- V --
-    -------
- 
-    function V (Num : Integer) return VString is
-       Buf : String (1 .. 30);
-       Ptr : Natural := Buf'Last + 1;
-       Val : Natural := abs (Num);
- 
-    begin
-       loop
-          Ptr := Ptr - 1;
-          Buf (Ptr) := Character'Val (Val mod 10 + Character'Pos ('0'));
-          Val := Val / 10;
-          exit when Val = 0;
-       end loop;
- 
-       if Num < 0 then
-          Ptr := Ptr - 1;
-          Buf (Ptr) := '-';
-       end if;
- 
-       return V (Buf (Ptr .. Buf'Last));
-    end V;
- 
- end GNAT.Spitbol;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-spitbo.ads gcc-8.1.0/gcc/ada/g-spitbo.ads
*** gcc-7.3.0/gcc/ada/g-spitbo.ads	Wed Oct 12 12:27:25 2016
--- gcc-8.1.0/gcc/ada/g-spitbo.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,394 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                         G N A T . S P I T B O L                          --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 1997-2016, AdaCore                     --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  SPITBOL-like interface facilities
- 
- --  This package provides a set of interfaces to semantic operations copied
- --  from SPITBOL, including a complete implementation of SPITBOL pattern
- --  matching. The code is derived from the original SPITBOL MINIMAL sources,
- --  created by Robert Dewar. The translation is not exact, but the
- --  algorithmic approaches are similar.
- 
- with Ada.Finalization;      use Ada.Finalization;
- with Ada.Strings.Unbounded; use Ada.Strings.Unbounded;
- with Interfaces;            use Interfaces;
- 
- package GNAT.Spitbol is
-    pragma Preelaborate;
- 
-    --  The Spitbol package relies heavily on the Unbounded_String package,
-    --  using the synonym VString for variable length string. The following
-    --  declarations define this type and other useful abbreviations.
- 
-    subtype VString is Ada.Strings.Unbounded.Unbounded_String;
- 
-    function V (Source : String) return VString
-      renames Ada.Strings.Unbounded.To_Unbounded_String;
- 
-    function S (Source : VString) return String
-      renames Ada.Strings.Unbounded.To_String;
- 
-    Nul : VString renames Ada.Strings.Unbounded.Null_Unbounded_String;
- 
-    -------------------------
-    -- Facilities Provided --
-    -------------------------
- 
-    --  The SPITBOL support in GNAT consists of this package together with
-    --  several child packages. In this package, we have first a set of
-    --  useful string functions, copied exactly from the corresponding
-    --  SPITBOL functions, except that we had to rename REVERSE because
-    --  reverse is a reserved word (it is now Reverse_String).
- 
-    --  The second element of the parent package is a generic implementation
-    --  of a table facility. In SPITBOL, the TABLE function allows general
-    --  mappings from any datatype to any other datatype, and of course, as
-    --  always, we can freely mix multiple types in the same table.
- 
-    --  The Ada version of tables is strongly typed, so the indexing type and
-    --  the range type are always of a consistent type. In this implementation
-    --  we only provide VString as an indexing type, since this is by far the
-    --  most common case. The generic instantiation specifies the range type
-    --  to be used.
- 
-    --  Three child packages provide standard instantiations of this table
-    --  package for three common datatypes:
- 
-    --    GNAT.Spitbol.Table_Boolean     (file g-sptabo.ads)
- 
-    --      The range type is Boolean. The default value is False. This
-    --      means that this table is essentially a representation of a set.
- 
-    --    GNAT.Spitbol.Table_Integer     (file g-sptain.ads)
- 
-    --      The range type is Integer. The default value is Integer'First.
-    --      This provides a general mapping from strings to integers.
- 
-    --    GNAT.Spitbol.Table_VString     (file g-sptavs.ads)
- 
-    --      The range type is VString. The default value is the null string.
-    --      This provides a general mapping from strings to strings.
- 
-    --  Finally there is another child package:
- 
-    --    GNAT.Spitbol.Patterns          (file g-spipat.ads)
- 
-    --       This child package provides a complete implementation of SPITBOL
-    --       pattern matching. The spec contains a complete tutorial on the
-    --       use of pattern matching.
- 
-    ---------------------------------
-    -- Standard String Subprograms --
-    ---------------------------------
- 
-    --  This section contains some operations on unbounded strings that are
-    --  closely related to those in the package Unbounded.Strings, but they
-    --  correspond to the SPITBOL semantics for these operations.
- 
-    function Char (Num : Natural) return Character;
-    pragma Inline (Char);
-    --  Equivalent to Character'Val (Num)
- 
-    function Lpad
-      (Str : VString;
-       Len : Natural;
-       Pad : Character := ' ') return VString;
-    function Lpad
-      (Str : String;
-       Len : Natural;
-       Pad : Character := ' ') return VString;
-    --  If the length of Str is greater than or equal to Len, then Str is
-    --  returned unchanged. Otherwise, The value returned is obtained by
-    --  concatenating Length (Str) - Len instances of the Pad character to
-    --  the left hand side.
- 
-    procedure Lpad
-      (Str  : in out VString;
-       Len  : Natural;
-       Pad  : Character := ' ');
-    --  The procedure form is identical to the function form, except that
-    --  the result overwrites the input argument Str.
- 
-    function Reverse_String (Str : VString) return VString;
-    function Reverse_String (Str : String)  return VString;
-    --  Returns result of reversing the string Str, i.e. the result returned
-    --  is a mirror image (end-for-end reversal) of the input string.
- 
-    procedure Reverse_String (Str : in out VString);
-    --  The procedure form is identical to the function form, except that the
-    --  result overwrites the input argument Str.
- 
-    function Rpad
-      (Str : VString;
-       Len : Natural;
-       Pad : Character := ' ') return VString;
-    function Rpad
-      (Str : String;
-       Len : Natural;
-       Pad : Character := ' ') return VString;
-    --  If the length of Str is greater than or equal to Len, then Str is
-    --  returned unchanged. Otherwise, The value returned is obtained by
-    --  concatenating Length (Str) - Len instances of the Pad character to
-    --  the right hand side.
- 
-    procedure Rpad
-      (Str  : in out VString;
-       Len  : Natural;
-       Pad  : Character := ' ');
-    --  The procedure form is identical to the function form, except that the
-    --  result overwrites the input argument Str.
- 
-    function Size (Source : VString) return Natural
-      renames Ada.Strings.Unbounded.Length;
- 
-    function Substr
-      (Str   : VString;
-       Start : Positive;
-       Len   : Natural) return  VString;
-    function Substr
-      (Str   : String;
-       Start : Positive;
-       Len   : Natural) return  VString;
-    --  Returns the substring starting at the given character position (which
-    --  is always counted from the start of the string, regardless of bounds,
-    --  e.g. 2 means starting with the second character of the string), and
-    --  with the length (Len) given. Index_Error is raised if the starting
-    --  position is out of range, and Length_Error is raised if Len is too long.
- 
-    function Trim (Str : VString) return VString;
-    function Trim (Str : String)  return VString;
-    --  Returns the string obtained by removing all spaces from the right
-    --  hand side of the string Str.
- 
-    procedure Trim (Str : in out VString);
-    --  The procedure form is identical to the function form, except that the
-    --  result overwrites the input argument Str.
- 
-    -----------------------
-    -- Utility Functions --
-    -----------------------
- 
-    --  In SPITBOL, integer values can be freely treated as strings. The
-    --  following definitions help provide some of this capability in
-    --  some common cases.
- 
-    function "&" (Num : Integer; Str : String)  return String;
-    function "&" (Str : String;  Num : Integer) return String;
-    function "&" (Num : Integer; Str : VString) return VString;
-    function "&" (Str : VString; Num : Integer) return VString;
-    --  In all these concatenation operations, the integer is converted to
-    --  its corresponding decimal string form, with no leading blank.
- 
-    function S (Num : Integer) return String;
-    function V (Num : Integer) return VString;
-    --  These operators return the given integer converted to its decimal
-    --  string form with no leading blank.
- 
-    function N (Str : VString) return Integer;
-    --  Converts string to number (same as Integer'Value (S (Str)))
- 
-    -------------------
-    -- Table Support --
-    -------------------
- 
-    --  So far, we only provide support for tables whose indexing data values
-    --  are strings (or unbounded strings). The values stored may be of any
-    --  type, as supplied by the generic formal parameter.
- 
-    generic
- 
-       type Value_Type is private;
-       --  Any non-limited type can be used as the value type in the table
- 
-       Null_Value : Value_Type;
-       --  Value used to represent a value that is not present in the table
- 
-       with function Img (A : Value_Type) return String;
-       --  Used to provide image of value in Dump procedure
- 
-       with function "=" (A, B : Value_Type) return Boolean is <>;
-       --  This allows a user-defined equality function to override the
-       --  predefined equality function.
- 
-    package Table is
- 
-       ------------------------
-       -- Table Declarations --
-       ------------------------
- 
-       type Table (N : Unsigned_32) is private;
-       --  This is the table type itself. A table is a mapping from string
-       --  values to values of Value_Type. The discriminant is an estimate of
-       --  the number of values in the table. If the estimate is much too
-       --  high, some space is wasted, if the estimate is too low, access to
-       --  table elements is slowed down. The type Table has copy semantics,
-       --  not reference semantics. This means that if a table is copied
-       --  using simple assignment, then the two copies refer to entirely
-       --  separate tables.
- 
-       -----------------------------
-       -- Table Access Operations --
-       -----------------------------
- 
-       function Get (T : Table; Name : VString)   return Value_Type;
-       function Get (T : Table; Name : Character) return Value_Type;
-       pragma Inline (Get);
-       function Get (T : Table; Name : String)    return Value_Type;
- 
-       --  If an entry with the given name exists in the table, then the
-       --  corresponding Value_Type value is returned. Otherwise Null_Value
-       --  is returned.
- 
-       function Present (T : Table; Name : VString)   return Boolean;
-       function Present (T : Table; Name : Character) return Boolean;
-       pragma Inline (Present);
-       function Present (T : Table; Name : String)    return Boolean;
-       --  Determines if an entry with the given name is present in the table.
-       --  A returned value of True means that it is in the table, otherwise
-       --  False indicates that it is not in the table.
- 
-       procedure Delete (T : in out Table; Name : VString);
-       procedure Delete (T : in out Table; Name : Character);
-       pragma Inline (Delete);
-       procedure Delete (T : in out Table; Name : String);
-       --  Deletes the table element with the given name from the table. If
-       --  no element in the table has this name, then the call has no effect.
- 
-       procedure Set (T : in out Table; Name  : VString;   Value : Value_Type);
-       procedure Set (T : in out Table; Name  : Character; Value : Value_Type);
-       pragma Inline (Set);
-       procedure Set (T : in out Table; Name  : String;    Value : Value_Type);
-       --  Sets the value of the element with the given name to the given
-       --  value. If Value is equal to Null_Value, the effect is to remove
-       --  the entry from the table. If no element with the given name is
-       --  currently in the table, then a new element with the given value
-       --  is created.
- 
-       ----------------------------
-       -- Allocation and Copying --
-       ----------------------------
- 
-       --  Table is a controlled type, so that all storage associated with
-       --  tables is properly reclaimed when a Table value is abandoned.
-       --  Tables have value semantics rather than reference semantics as
-       --  in Spitbol, i.e. when you assign a copy you end up with two
-       --  distinct copies of the table, as though COPY had been used in
-       --  Spitbol. It seems clearly more appropriate in Ada to require
-       --  the use of explicit pointers for reference semantics.
- 
-       procedure Clear (T : in out Table);
-       --  Clears all the elements of the given table, freeing associated
-       --  storage. On return T is an empty table with no elements.
- 
-       procedure Copy (From : Table; To : in out Table);
-       --  First all the elements of table To are cleared (as described for
-       --  the Clear procedure above), then all the elements of table From
-       --  are copied into To. In the case where the tables From and To have
-       --  the same declared size (i.e. the same discriminant), the call to
-       --  Copy has the same effect as the assignment of From to To. The
-       --  difference is that, unlike the assignment statement, which will
-       --  cause a Constraint_Error if the source and target are of different
-       --  sizes, Copy works fine with different sized tables.
- 
-       ----------------
-       -- Conversion --
-       ----------------
- 
-       type Table_Entry is record
-          Name  : VString;
-          Value : Value_Type;
-       end record;
- 
-       type Table_Array is array (Positive range <>) of Table_Entry;
- 
-       function Convert_To_Array (T : Table) return Table_Array;
-       --  Returns a Table_Array value with a low bound of 1, and a length
-       --  corresponding to the number of elements in the table. The elements
-       --  of the array give the elements of the table in unsorted order.
- 
-       ---------------
-       -- Debugging --
-       ---------------
- 
-       procedure Dump (T : Table; Str : String := "Table");
-       --  Dump contents of given table to the standard output file. The
-       --  string value Str is used as the name of the table in the dump.
- 
-       procedure Dump (T : Table_Array; Str : String := "Table_Array");
-       --  Dump contents of given table array to the current output file. The
-       --  string value Str is used as the name of the table array in the dump.
- 
-    private
- 
-       ------------------
-       -- Private Part --
-       ------------------
- 
-       --  A Table is a pointer to a hash table which contains the indicated
-       --  number of hash elements (the number is forced to the next odd value
-       --  if it is even to improve hashing performance). If more than one
-       --  of the entries in a table hashes to the same slot, the Next field
-       --  is used to chain entries from the header. The chains are not kept
-       --  ordered. A chain is terminated by a null pointer in Next. An unused
-       --  chain is marked by an element whose Name is null and whose value
-       --  is Null_Value.
- 
-       type Hash_Element;
-       type Hash_Element_Ptr is access all Hash_Element;
- 
-       type Hash_Element is record
-          Name  : String_Access    := null;
-          Value : Value_Type       := Null_Value;
-          Next  : Hash_Element_Ptr := null;
-       end record;
- 
-       type Hash_Table is
-         array (Unsigned_32 range <>) of aliased Hash_Element;
- 
-       type Table (N : Unsigned_32) is new Controlled with record
-          Elmts : Hash_Table (1 .. N);
-       end record;
- 
-       pragma Finalize_Storage_Only (Table);
- 
-       overriding procedure Adjust (Object : in out Table);
-       --  The Adjust procedure does a deep copy of the table structure
-       --  so that the effect of assignment is, like other assignments
-       --  in Ada, value-oriented.
- 
-       overriding procedure Finalize (Object : in out Table);
-       --  This is the finalization routine that ensures that all storage
-       --  associated with a table is properly released when a table object
-       --  is abandoned and finalized.
- 
-    end Table;
- 
- end GNAT.Spitbol;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-sptabo.ads gcc-8.1.0/gcc/ada/g-sptabo.ads
*** gcc-7.3.0/gcc/ada/g-sptabo.ads	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-sptabo.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,41 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --           G N A T . S P I T B O L . T A B L E _ B O O L E A N            --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 1997-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  SPITBOL tables with boolean values (sets)
- 
- --  This package provides a predefined instantiation of the table abstraction
- --  for type Standard.Boolean. The null value is False, so the only non-null
- --  value is True, i.e. this table acts essentially as a set representation.
- --  This package is based on Macro-SPITBOL created by Robert Dewar.
- 
- package GNAT.Spitbol.Table_Boolean is new
-   GNAT.Spitbol.Table (Boolean, False, Boolean'Image);
- pragma Preelaborate (Table_Boolean);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-sptain.ads gcc-8.1.0/gcc/ada/g-sptain.ads
*** gcc-7.3.0/gcc/ada/g-sptain.ads	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-sptain.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,41 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --           G N A T . S P I T B O L . T A B L E _ I N T E G E R            --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 1997-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  SPITBOL tables with integer values
- 
- --  This package provides a predefined instantiation of the table abstraction
- --  for type Standard.Integer. The largest negative integer is used as the
- --  null value for the table. This package is based on Macro-SPITBOL created
- --  by Robert Dewar.
- 
- package GNAT.Spitbol.Table_Integer is
-   new GNAT.Spitbol.Table (Integer, Integer'First, Integer'Image);
- pragma Preelaborate (Table_Integer);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-sptavs.ads gcc-8.1.0/gcc/ada/g-sptavs.ads
*** gcc-7.3.0/gcc/ada/g-sptavs.ads	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-sptavs.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,40 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --           G N A T . S P I T B O L . T A B L E _ V S T R I N G            --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 1997-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  SPITBOL tables with vstring (unbounded string) values
- 
- --  This package provides a predefined instantiation of the table abstraction
- --  for type VString (Ada.Strings.Unbounded.Unbounded_String). This package
- --  is based on Macro-SPITBOL created by Robert Dewar.
- 
- package GNAT.Spitbol.Table_VString is new
-   GNAT.Spitbol.Table (VString, Nul, To_String);
- pragma Preelaborate (Table_VString);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-sse.ads gcc-8.1.0/gcc/ada/g-sse.ads
*** gcc-7.3.0/gcc/ada/g-sse.ads	Mon Apr  2 09:47:18 2012
--- gcc-8.1.0/gcc/ada/g-sse.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,139 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                             G N A T . S S E                              --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2009-2012, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 is the root of a set aimed at offering Ada bindings to a
- --  subset of the Intel(r) Streaming SIMD Extensions with GNAT. The purpose
- --  is to allow access from Ada to the SSE facilities defined in the Intel(r)
- --  compiler manuals, in particular in the Intrinsics Reference of the C++
- --  Compiler User's Guide, available from http://www.intel.com.
- 
- --  Assuming actual hardware support is available, this capability is
- --  currently supported on the following set of targets:
- 
- --     GNU/Linux x86 and x86_64
- --     Windows XP/Vista x86 and x86_64
- --     Solaris x86
- --     Darwin x86_64
- 
- --  This unit exposes vector _component_ types together with general comments
- --  on the binding contents.
- 
- --  One other unit is offered as of today: GNAT.SSE.Vector_Types, which
- --  exposes Ada types corresponding to the reference types (__m128 and the
- --  like) over which a binding to the SSE GCC builtins may operate.
- 
- --  The exposed Ada types are private. Object initializations or value
- --  observations may be performed with unchecked conversions or address
- --  overlays, for example:
- 
- --  with Ada.Unchecked_Conversion;
- --  with GNAT.SSE.Vector_Types; use GNAT.SSE, GNAT.SSE.Vector_Types;
- 
- --  procedure SSE_Base is
- 
- --     --  Core operations
- 
- --     function ia32_addps (A, B : m128) return m128;
- --     pragma Import (Intrinsic, ia32_addps, "__builtin_ia32_addps");
- 
- --     --  User views & conversions
- 
- --     type Vf32_View is array (1 .. 4) of GNAT.SSE.Float32;
- --     for Vf32_View'Alignment use VECTOR_ALIGN;
- 
- --     function To_m128 is new Ada.Unchecked_Conversion (Vf32_View, m128);
- 
- --     Xf32 : constant Vf32_View := (1.0, 1.0, 2.0, 2.0);
- --     Yf32 : constant Vf32_View := (2.0, 2.0, 1.0, 1.0);
- 
- --     X128 : constant m128 := To_m128 (Xf32);
- --     Y128 : constant m128 := To_m128 (Yf32);
- 
- --  begin
- --     --  Operations & overlays
- 
- --     declare
- --        Z128 : m128;
- --        Zf32 : Vf32_View;
- --        for Zf32'Address use Z128'Address;
- --     begin
- --        Z128 := ia32_addps (X128, Y128);
- --        if Zf32 /= (3.0, 3.0, 3.0, 3.0) then
- --           raise Program_Error;
- --        end if;
- --     end;
- 
- --     declare
- --        type m128_View_Kind is (SSE, F32);
- --        type m128_Object (View : m128_View_Kind := F32) is record
- --           case View is
- --              when SSE  => V128 : m128;
- --              when F32  => Vf32 : Vf32_View;
- --           end case;
- --        end record;
- --        pragma Unchecked_Union (m128_Object);
- 
- --        O1 : constant m128_Object := (View => SSE, V128 => X128);
- --     begin
- --        if O1.Vf32 /= Xf32 then
- --           raise Program_Error;
- --        end if;
- --     end;
- --  end SSE_Base;
- 
- package GNAT.SSE is
- 
-    -----------------------------------
-    -- Common vector characteristics --
-    -----------------------------------
- 
-    VECTOR_BYTES : constant := 16;
-    --  Common size of all the SSE vector types, in bytes.
- 
-    VECTOR_ALIGN : constant := 16;
-    --  Common alignment of all the SSE vector types, in bytes.
- 
-    --  Alignment-wise, the reference document reads:
-    --  << The compiler aligns __m128d and _m128i local and global data to
-    --     16-byte boundaries on the stack. >>
-    --
-    --  We apply that consistently to all the Ada vector types, as GCC does
-    --  for the corresponding C types.
- 
-    ----------------------------
-    -- Vector component types --
-    ----------------------------
- 
-    type Float32 is new Float;
-    type Float64 is new Long_Float;
-    type Integer64 is new Long_Long_Integer;
- 
- end GNAT.SSE;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-ssvety.ads gcc-8.1.0/gcc/ada/g-ssvety.ads
*** gcc-7.3.0/gcc/ada/g-ssvety.ads	Tue Jul 28 08:07:09 2009
--- gcc-8.1.0/gcc/ada/g-ssvety.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,105 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                 G N A T . S S E . V E C T O R _ T Y P E S                --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --             Copyright (C) 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- --
- -- 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 unit exposes the Ada __m128 like data types to represent the contents
- --  of SSE registers, for use by bindings to the SSE intrinsic operations.
- 
- --  See GNAT.SSE for the list of targets where this facility is supported
- 
- package GNAT.SSE.Vector_Types is
- 
-    --  The reference guide states a few usage guidelines for the C types:
- 
-    --    Since these new data types are not basic ANSI C data types, you
-    --    must observe the following usage restrictions:
-    --
-    --     * Use new data types only on either side of an assignment, as a
-    --       return value, or as a parameter. You cannot use it with other
-    --       arithmetic expressions ("+", "-", and so on).
-    --
-    --     * Use new data types as objects in aggregates, such as unions to
-    --       access the byte elements and structures.
-    --
-    --     * Use new data types only with the respective intrinsics described
-    --       in this documentation.
- 
-    type m128  is private;  --  SSE >= 1
-    type m128d is private;  --  SSE >= 2
-    type m128i is private;  --  SSE >= 2
- 
- private
-    --  Each of the m128 types maps to a specific vector_type with an extra
-    --  "may_alias" attribute as in GCC's definitions for C, for instance in
-    --  xmmintrin.h:
- 
-    --  /* The Intel API is flexible enough that we must allow aliasing
-    --     with other vector types, and their scalar components.  */
-    --  typedef float __m128
-    --    __attribute__ ((__vector_size__ (16), __may_alias__));
- 
-    --  /* Internal data types for implementing the intrinsics.  */
-    --  typedef float __v4sf __attribute__ ((__vector_size__ (16)));
- 
-    ------------
-    --  m128  --
-    ------------
- 
-    --  The __m128 data type can hold four 32-bit floating-point values
- 
-    type m128 is array (1 .. 4) of Float32;
-    for m128'Alignment use VECTOR_ALIGN;
-    pragma Machine_Attribute (m128, "vector_type");
-    pragma Machine_Attribute (m128, "may_alias");
- 
-    -------------
-    --  m128d  --
-    -------------
- 
-    --  The __m128d data type can hold two 64-bit floating-point values
- 
-    type m128d is array (1 .. 2) of Float64;
-    for m128d'Alignment use VECTOR_ALIGN;
-    pragma Machine_Attribute (m128d, "vector_type");
-    pragma Machine_Attribute (m128d, "may_alias");
- 
-    -------------
-    --  m128i  --
-    -------------
- 
-    --  The __m128i data type can hold sixteen 8-bit, eight 16-bit, four 32-bit,
-    --  or two 64-bit integer values.
- 
-    type m128i is array (1 .. 2) of Integer64;
-    for m128i'Alignment use VECTOR_ALIGN;
-    pragma Machine_Attribute (m128i, "vector_type");
-    pragma Machine_Attribute (m128i, "may_alias");
- 
- end GNAT.SSE.Vector_Types;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-stheme.adb gcc-8.1.0/gcc/ada/g-stheme.adb
*** gcc-7.3.0/gcc/ada/g-stheme.adb	Mon Feb 24 16:59:24 2014
--- gcc-8.1.0/gcc/ada/g-stheme.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,55 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                   GNAT.SOCKETS.THIN.HOST_ERROR_MESSAGES                  --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 2007-2013, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 default implementation of this unit, providing explicit
- --  literal messages (we do not use hstrerror from the standard C library,
- --  as this function is obsolete).
- 
- separate (GNAT.Sockets.Thin)
- package body Host_Error_Messages is
- 
-    function Host_Error_Message (H_Errno : Integer) return String is
-    begin
-       case H_Errno is
-          when SOSC.HOST_NOT_FOUND =>
-             return "Host not found";
-          when SOSC.TRY_AGAIN      =>
-             return "Try again";
-          when SOSC.NO_RECOVERY    =>
-             return "No recovery";
-          when SOSC.NO_DATA        =>
-             return "No address";
-          when others              =>
-             return "Unknown error";
-       end case;
-    end Host_Error_Message;
- 
- end Host_Error_Messages;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-strhas.ads gcc-8.1.0/gcc/ada/g-strhas.ads
*** gcc-7.3.0/gcc/ada/g-strhas.ads	Tue Nov 24 09:22:24 2015
--- gcc-8.1.0/gcc/ada/g-strhas.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,43 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                      G N A T . S T R I N G _ H A S H                     --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --             Copyright (C) 2015, Free Software Foundation, Inc.           --
- --                                                                          --
- -- GNAT is 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 a generic hashing function over strings, suitable for
- --  use with a string keyed hash table. In particular, it is the basis for the
- --  string hash functions in Ada.Containers.
- --
- --  The algorithm used here is not appropriate for applications that require
- --  cryptographically strong hashes, or for applications that wish to use very
- --  wide hash values as pseudo unique identifiers. In such cases please refer
- --  to GNAT.SHA1 and GNAT.MD5.
- 
- with System.String_Hash;
- 
- package GNAT.String_Hash renames System.String_Hash;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-string.adb gcc-8.1.0/gcc/ada/g-string.adb
*** gcc-7.3.0/gcc/ada/g-string.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/g-string.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,36 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                         G N A T . S T R I N G S                          --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1995-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- --
- -- 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 does not require a body, since it is a package renaming. We
- --  provide a dummy file containing a No_Body pragma so that previous versions
- --  of the body (which did exist) will not interfere.
- 
- pragma No_Body;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-string.ads gcc-8.1.0/gcc/ada/g-string.ads
*** gcc-7.3.0/gcc/ada/g-string.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/g-string.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,38 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                         G N A T . S T R I N G S                          --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1995-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- --
- -- 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Common String access types and related subprograms
- 
- --  See file s-string.ads for full documentation of the interface
- 
- with System.Strings;
- 
- package GNAT.Strings renames System.Strings;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-strspl.ads gcc-8.1.0/gcc/ada/g-strspl.ads
*** gcc-7.3.0/gcc/ada/g-strspl.ads	Fri Aug  1 08:32:27 2014
--- gcc-8.1.0/gcc/ada/g-strspl.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,44 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                    G N A T . S T R I N G _ S P L I T                     --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2002-2014, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Useful string-manipulation routines: given a set of separators, split
- --  a string wherever the separators appear, and provide direct access
- --  to the resulting slices. See GNAT.Array_Split for full documentation.
- 
- with Ada.Strings.Maps; use Ada.Strings;
- with GNAT.Array_Split;
- 
- package GNAT.String_Split is new GNAT.Array_Split
-   (Element          => Character,
-    Element_Sequence => String,
-    Element_Set      => Maps.Character_Set,
-    To_Set           => Maps.To_Set,
-    Is_In            => Maps.Is_In);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-stseme.adb gcc-8.1.0/gcc/ada/g-stseme.adb
*** gcc-7.3.0/gcc/ada/g-stseme.adb	Mon Feb 24 16:59:24 2014
--- gcc-8.1.0/gcc/ada/g-stseme.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,48 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                  GNAT.SOCKETS.THIN.SOCKET_ERROR_MESSAGE                  --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 2007-2013, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 default implementation of this unit, using the standard C
- --  library's strerror(3) function. It is used on all platforms except Windows,
- --  since on that platform socket errno values are distinct from the system
- --  ones: there is a specific variant of this function in g-socthi-mingw.adb.
- 
- separate (GNAT.Sockets.Thin)
- 
- --------------------------
- -- Socket_Error_Message --
- --------------------------
- 
- function Socket_Error_Message
-   (Errno : Integer) return String
- is
- begin
-    return Errno_Message (Errno, Default => "Unknown system error");
- end Socket_Error_Message;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-stsifd-sockets.adb gcc-8.1.0/gcc/ada/g-stsifd-sockets.adb
*** gcc-7.3.0/gcc/ada/g-stsifd-sockets.adb	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-stsifd-sockets.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,234 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --     G N A T . S O C K E T S . T H I N . S I G N A L L I N G _ F D S      --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 2001-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Portable sockets-based implementation of GNAT.Sockets.Thin.Signalling_Fds
- --  used for platforms that do not support UNIX pipes.
- 
- --  Note: this code used to be in GNAT.Sockets, but has been moved to a
- --  platform-specific file. It is now used only for non-UNIX platforms.
- 
- separate (GNAT.Sockets.Thin)
- package body Signalling_Fds is
- 
-    -----------
-    -- Close --
-    -----------
- 
-    procedure Close (Sig : C.int) is
-       Res : C.int;
-       pragma Unreferenced (Res);
-       --  Res is assigned but never read, because we purposefully ignore
-       --  any error returned by the C_Close system call, as per the spec
-       --  of this procedure.
-    begin
-       Res := C_Close (Sig);
-    end Close;
- 
-    ------------
-    -- Create --
-    ------------
- 
-    function Create (Fds : not null access Fd_Pair) return C.int is
-       L_Sock, R_Sock, W_Sock : C.int := Failure;
-       --  Listening socket, read socket and write socket
- 
-       Sin : aliased Sockaddr_In;
-       Len : aliased C.int;
-       --  Address of listening socket
- 
-       Res : C.int;
-       pragma Warnings (Off, Res);
-       --  Return status of system calls (usually ignored, hence warnings off)
- 
-    begin
-       Fds.all := (Read_End | Write_End => Failure);
- 
-       --  We open two signalling sockets. One of them is used to send data
-       --  to the other, which is included in a C_Select socket set. The
-       --  communication is used to force the call to C_Select to complete,
-       --  and the waiting task to resume its execution.
- 
-       loop
-          --  Retry loop, in case the C_Connect below fails
- 
-          --  Create a listening socket
- 
-          L_Sock := C_Socket (SOSC.AF_INET, SOSC.SOCK_STREAM, 0);
- 
-          if L_Sock = Failure then
-             goto Fail;
-          end if;
- 
-          --  Bind the socket to an available port on localhost
- 
-          Set_Family (Sin.Sin_Family, Family_Inet);
-          Sin.Sin_Addr.S_B1 := 127;
-          Sin.Sin_Addr.S_B2 := 0;
-          Sin.Sin_Addr.S_B3 := 0;
-          Sin.Sin_Addr.S_B4 := 1;
-          Sin.Sin_Port      := 0;
- 
-          Len := C.int (Lengths (Family_Inet));
-          Res := C_Bind (L_Sock, Sin'Address, Len);
- 
-          if Res = Failure then
-             goto Fail;
-          end if;
- 
-          --  Get assigned port
- 
-          Res := C_Getsockname (L_Sock, Sin'Address, Len'Access);
-          if Res = Failure then
-             goto Fail;
-          end if;
- 
-          --  Set socket to listen mode, with a backlog of 1 to guarantee that
-          --  exactly one call to connect(2) succeeds.
- 
-          Res := C_Listen (L_Sock, 1);
- 
-          if Res = Failure then
-             goto Fail;
-          end if;
- 
-          --  Create read end (client) socket
- 
-          R_Sock := C_Socket (SOSC.AF_INET, SOSC.SOCK_STREAM, 0);
- 
-          if R_Sock = Failure then
-             goto Fail;
-          end if;
- 
-          --  Connect listening socket
- 
-          Res := C_Connect (R_Sock, Sin'Address, Len);
- 
-          exit when Res /= Failure;
- 
-          if Socket_Errno /= SOSC.EADDRINUSE then
-             goto Fail;
-          end if;
- 
-          --  In rare cases, the above C_Bind chooses a port that is still
-          --  marked "in use", even though it has been closed (perhaps by some
-          --  other process that has already exited). This causes the above
-          --  C_Connect to fail with EADDRINUSE. In this case, we close the
-          --  ports, and loop back to try again. This mysterious Windows
-          --  behavior is documented. See, for example:
-          --    http://msdn2.microsoft.com/en-us/library/ms737625.aspx
-          --  In an experiment with 2000 calls, 21 required exactly one retry, 7
-          --  required two, and none required three or more. Note that no delay
-          --  is needed between retries; retrying C_Bind will typically produce
-          --  a different port.
- 
-          pragma Assert (Res = Failure
-                           and then
-                         Socket_Errno = SOSC.EADDRINUSE);
-          Res := C_Close (W_Sock);
-          W_Sock := Failure;
-          Res := C_Close (R_Sock);
-          R_Sock := Failure;
-       end loop;
- 
-       --  Since the call to connect(2) has succeeded and the backlog limit on
-       --  the listening socket is 1, we know that there is now exactly one
-       --  pending connection on L_Sock, which is the one from R_Sock.
- 
-       W_Sock := C_Accept (L_Sock, Sin'Address, Len'Access);
- 
-       if W_Sock = Failure then
-          goto Fail;
-       end if;
- 
-       --  Set TCP_NODELAY on W_Sock, since we always want to send the data out
-       --  immediately.
- 
-       Set_Socket_Option
-         (Socket => Socket_Type (W_Sock),
-          Level  => IP_Protocol_For_TCP_Level,
-          Option => (Name => No_Delay, Enabled => True));
- 
-       --  Close listening socket (ignore exit status)
- 
-       Res := C_Close (L_Sock);
- 
-       Fds.all := (Read_End => R_Sock, Write_End => W_Sock);
- 
-       return Thin_Common.Success;
- 
-    <<Fail>>
-       declare
-          Saved_Errno : constant Integer := Socket_Errno;
- 
-       begin
-          if W_Sock /= Failure then
-             Res := C_Close (W_Sock);
-          end if;
- 
-          if R_Sock /= Failure then
-             Res := C_Close (R_Sock);
-          end if;
- 
-          if L_Sock /= Failure then
-             Res := C_Close (L_Sock);
-          end if;
- 
-          Set_Socket_Errno (Saved_Errno);
-       end;
- 
-       return Failure;
-    end Create;
- 
-    ----------
-    -- Read --
-    ----------
- 
-    function Read (Rsig : C.int) return C.int is
-       Buf : aliased Character;
-    begin
-       return C_Recv (Rsig, Buf'Address, 1, SOSC.MSG_Forced_Flags);
-    end Read;
- 
-    -----------
-    -- Write --
-    -----------
- 
-    function Write (Wsig : C.int) return C.int is
-       Buf : aliased Character := ASCII.NUL;
-    begin
-       return C_Sendto
-         (Wsig, Buf'Address, 1,
-          Flags => SOSC.MSG_Forced_Flags,
-          To    => System.Null_Address,
-          Tolen => 0);
-    end Write;
- 
- end Signalling_Fds;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-table.adb gcc-8.1.0/gcc/ada/g-table.adb
*** gcc-7.3.0/gcc/ada/g-table.adb	Wed May 21 10:52:48 2014
--- gcc-8.1.0/gcc/ada/g-table.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,416 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                            G N A T . T A B L E                           --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 1998-2014, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 GNAT.Heap_Sort_G;
- 
- with System;        use System;
- with System.Memory; use System.Memory;
- 
- with Ada.Unchecked_Conversion;
- 
- package body GNAT.Table is
- 
-    Min : constant Integer := Integer (Table_Low_Bound);
-    --  Subscript of the minimum entry in the currently allocated table
- 
-    Max : Integer;
-    --  Subscript of the maximum entry in the currently allocated table
- 
-    Length : Integer := 0;
-    --  Number of entries in currently allocated table. The value of zero
-    --  ensures that we initially allocate the table.
- 
-    Last_Val : Integer;
-    --  Current value of Last
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    procedure Reallocate;
-    --  Reallocate the existing table according to the current value stored
-    --  in Max. Works correctly to do an initial allocation if the table
-    --  is currently null.
- 
-    pragma Warnings (Off);
-    --  Turn off warnings. The following unchecked conversions are only used
-    --  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);
- 
-    --------------
-    -- Allocate --
-    --------------
- 
-    function Allocate (Num : Integer := 1) return Table_Index_Type is
-       Old_Last : constant Integer := Last_Val;
- 
-    begin
-       Last_Val := Last_Val + Num;
- 
-       if Last_Val > Max then
-          Reallocate;
-       end if;
- 
-       return Table_Index_Type (Old_Last + 1);
-    end Allocate;
- 
-    ------------
-    -- Append --
-    ------------
- 
-    procedure Append (New_Val : Table_Component_Type) is
-    begin
-       Set_Item (Table_Index_Type (Last_Val + 1), New_Val);
-    end Append;
- 
-    ----------------
-    -- Append_All --
-    ----------------
- 
-    procedure Append_All (New_Vals : Table_Type) is
-    begin
-       for J in New_Vals'Range loop
-          Append (New_Vals (J));
-       end loop;
-    end Append_All;
- 
-    --------------------
-    -- Decrement_Last --
-    --------------------
- 
-    procedure Decrement_Last is
-    begin
-       Last_Val := Last_Val - 1;
-    end Decrement_Last;
- 
-    --------------
-    -- For_Each --
-    --------------
- 
-    procedure For_Each is
-       Quit : Boolean := False;
-    begin
-       for Index in Table_Low_Bound .. Table_Index_Type (Last_Val) loop
-          Action (Index, Table (Index), Quit);
-          exit when Quit;
-       end loop;
-    end For_Each;
- 
-    ----------
-    -- Free --
-    ----------
- 
-    procedure Free is
-    begin
-       Free (To_Address (Table));
-       Table := null;
-       Length := 0;
-    end Free;
- 
-    --------------------
-    -- Increment_Last --
-    --------------------
- 
-    procedure Increment_Last is
-    begin
-       Last_Val := Last_Val + 1;
- 
-       if Last_Val > Max then
-          Reallocate;
-       end if;
-    end Increment_Last;
- 
-    ----------
-    -- Init --
-    ----------
- 
-    procedure Init is
-       Old_Length : constant Integer := Length;
- 
-    begin
-       Last_Val := Min - 1;
-       Max      := Min + Table_Initial - 1;
-       Length   := Max - Min + 1;
- 
-       --  If table is same size as before (happens when table is never
-       --  expanded which is a common case), then simply reuse it. Note
-       --  that this also means that an explicit Init call right after
-       --  the implicit one in the package body is harmless.
- 
-       if Old_Length = Length then
-          return;
- 
-       --  Otherwise we can use Reallocate to get a table of the right size.
-       --  Note that Reallocate works fine to allocate a table of the right
-       --  initial size when it is first allocated.
- 
-       else
-          Reallocate;
-       end if;
-    end Init;
- 
-    ----------
-    -- Last --
-    ----------
- 
-    function Last return Table_Index_Type is
-    begin
-       return Table_Index_Type (Last_Val);
-    end Last;
- 
-    ----------------
-    -- Reallocate --
-    ----------------
- 
-    procedure Reallocate is
-       New_Size   : size_t;
-       New_Length : Long_Long_Integer;
- 
-    begin
-       if Max < Last_Val then
-          pragma Assert (not Locked);
- 
-          --  Now increment table length until it is sufficiently large. Use
-          --  the increment value or 10, which ever is larger (the reason
-          --  for the use of 10 here is to ensure that the table does really
-          --  increase in size (which would not be the case for a table of
-          --  length 10 increased by 3% for instance). Do the intermediate
-          --  calculation in Long_Long_Integer to avoid overflow.
- 
-          while Max < Last_Val loop
-             New_Length :=
-               Long_Long_Integer (Length) *
-                 (100 + Long_Long_Integer (Table_Increment)) / 100;
-             Length := Integer'Max (Integer (New_Length), Length + 10);
-             Max := Min + Length - 1;
-          end loop;
-       end if;
- 
-       New_Size :=
-         size_t ((Max - Min + 1) *
-                 (Table_Type'Component_Size / Storage_Unit));
- 
-       if Table = null then
-          Table := To_Pointer (Alloc (New_Size));
- 
-       elsif New_Size > 0 then
-          Table :=
-            To_Pointer (Realloc (Ptr  => To_Address (Table),
-                                 Size => New_Size));
-       end if;
- 
-       if Length /= 0 and then Table = null then
-          raise Storage_Error;
-       end if;
- 
-    end Reallocate;
- 
-    -------------
-    -- Release --
-    -------------
- 
-    procedure Release is
-    begin
-       Length := Last_Val - Integer (Table_Low_Bound) + 1;
-       Max    := Last_Val;
-       Reallocate;
-    end Release;
- 
-    --------------
-    -- Set_Item --
-    --------------
- 
-    procedure Set_Item
-       (Index : Table_Index_Type;
-        Item  : Table_Component_Type)
-    is
-       --  If Item is a value within the current allocation, and we are going to
-       --  reallocate, then we must preserve an intermediate copy here before
-       --  calling Increment_Last. Otherwise, if Table_Component_Type is passed
-       --  by reference, we are going to end up copying from storage that might
-       --  have been deallocated from Increment_Last calling Reallocate.
- 
-       subtype Allocated_Table_T is
-         Table_Type (Table'First .. Table_Index_Type (Max + 1));
-       --  A constrained table subtype one element larger than the currently
-       --  allocated table.
- 
-       Allocated_Table_Address : constant System.Address :=
-                                   Table.all'Address;
-       --  Used for address clause below (we can't use non-static expression
-       --  Table.all'Address directly in the clause because some older versions
-       --  of the compiler do not allow it).
- 
-       Allocated_Table : Allocated_Table_T;
-       pragma Import (Ada, Allocated_Table);
-       pragma Suppress (Range_Check, On => Allocated_Table);
-       for Allocated_Table'Address use Allocated_Table_Address;
-       --  Allocated_Table represents the currently allocated array, plus one
-       --  element (the supplementary element is used to have a convenient
-       --  way of computing the address just past the end of the current
-       --  allocation). Range checks are suppressed because this unit uses
-       --  direct calls to System.Memory for allocation, and this can yield
-       --  misaligned storage (and we cannot rely on the bootstrap compiler
-       --  supporting specifically disabling alignment checks, so we need to
-       --  suppress all range checks). It is safe to suppress this check here
-       --  because we know that a (possibly misaligned) object of that type
-       --  does actually exist at that address. ??? We should really improve
-       --  the allocation circuitry here to
-       --  guarantee proper alignment.
- 
-       Need_Realloc : constant Boolean := Integer (Index) > Max;
-       --  True if this operation requires storage reallocation (which may
-       --  involve moving table contents around).
- 
-    begin
-       --  If we're going to reallocate, check whether Item references an
-       --  element of the currently allocated table.
- 
-       if Need_Realloc
-         and then Allocated_Table'Address <= Item'Address
-         and then Item'Address <
-                    Allocated_Table (Table_Index_Type (Max + 1))'Address
-       then
-          --  If so, save a copy on the stack because Increment_Last will
-          --  reallocate storage and might deallocate the current table.
- 
-          declare
-             Item_Copy : constant Table_Component_Type := Item;
-          begin
-             Set_Last (Index);
-             Table (Index) := Item_Copy;
-          end;
- 
-       else
-          --  Here we know that either we won't reallocate (case of Index < Max)
-          --  or that Item is not in the currently allocated table.
- 
-          if Integer (Index) > Last_Val then
-             Set_Last (Index);
-          end if;
- 
-          Table (Index) := Item;
-       end if;
-    end Set_Item;
- 
-    --------------
-    -- Set_Last --
-    --------------
- 
-    procedure Set_Last (New_Val : Table_Index_Type) is
-    begin
-       if Integer (New_Val) < Last_Val then
-          Last_Val := Integer (New_Val);
-       else
-          Last_Val := Integer (New_Val);
- 
-          if Last_Val > Max then
-             Reallocate;
-          end if;
-       end if;
-    end Set_Last;
- 
-    ----------------
-    -- Sort_Table --
-    ----------------
- 
-    procedure Sort_Table is
- 
-       Temp : Table_Component_Type;
-       --  A temporary position to simulate index 0
- 
-       --  Local subprograms
- 
-       function Index_Of (Idx : Natural) return Table_Index_Type;
-       --  Return index of Idx'th element of table
- 
-       function Lower_Than (Op1, Op2 : Natural) return Boolean;
-       --  Compare two components
- 
-       procedure Move (From : Natural; To : Natural);
-       --  Move one component
- 
-       package Heap_Sort is new GNAT.Heap_Sort_G (Move, Lower_Than);
- 
-       --------------
-       -- Index_Of --
-       --------------
- 
-       function Index_Of (Idx : Natural) return Table_Index_Type is
-          J : constant Integer'Base := Table_Index_Type'Pos (First) + Idx - 1;
-       begin
-          return Table_Index_Type'Val (J);
-       end Index_Of;
- 
-       ----------
-       -- Move --
-       ----------
- 
-       procedure Move (From : Natural; To : Natural) is
-       begin
-          if From = 0 then
-             Table (Index_Of (To)) := Temp;
-          elsif To = 0 then
-             Temp := Table (Index_Of (From));
-          else
-             Table (Index_Of (To)) := Table (Index_Of (From));
-          end if;
-       end Move;
- 
-       ----------------
-       -- Lower_Than --
-       ----------------
- 
-       function Lower_Than (Op1, Op2 : Natural) return Boolean is
-       begin
-          if Op1 = 0 then
-             return Lt (Temp, Table (Index_Of (Op2)));
-          elsif Op2 = 0 then
-             return Lt (Table (Index_Of (Op1)), Temp);
-          else
-             return Lt (Table (Index_Of (Op1)), Table (Index_Of (Op2)));
-          end if;
-       end Lower_Than;
- 
-    --  Start of processing for Sort_Table
- 
-    begin
-       Heap_Sort.Sort (Natural (Last - First) + 1);
-    end Sort_Table;
- 
- begin
-    Init;
- end GNAT.Table;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-table.ads gcc-8.1.0/gcc/ada/g-table.ads
*** gcc-7.3.0/gcc/ada/g-table.ads	Tue Oct 20 12:05:48 2015
--- gcc-8.1.0/gcc/ada/g-table.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,225 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                            G N A T . T A B L E                           --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 1998-2015, AdaCore                     --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Resizable one dimensional array support
- 
- --  This package provides an implementation of dynamically resizable one
- --  dimensional arrays. The idea is to mimic the normal Ada semantics for
- --  arrays as closely as possible with the one additional capability of
- --  dynamically modifying the value of the Last attribute.
- 
- --  This package provides a facility similar to that of GNAT.Dynamic_Tables,
- --  except that this package declares a single instance of the table type,
- --  while an instantiation of GNAT.Dynamic_Tables creates a type that can be
- --  used to define dynamic instances of the table.
- 
- --  Note that this interface should remain synchronized with those in
- --  GNAT.Dynamic_Tables and the GNAT compiler source unit Table to keep
- --  as much coherency as possible between these three related units.
- 
- generic
-    type Table_Component_Type is private;
-    type Table_Index_Type     is range <>;
- 
-    Table_Low_Bound : Table_Index_Type;
-    Table_Initial   : Positive;
-    Table_Increment : Natural;
- 
- package GNAT.Table is
-    pragma Elaborate_Body;
- 
-    --  Table_Component_Type and Table_Index_Type specify the type of the
-    --  array, Table_Low_Bound is the lower bound. Table_Index_Type must be an
-    --  integer type. The effect is roughly to declare:
- 
-    --    Table : array (Table_Index_Type range Table_Low_Bound .. <>)
-    --                       of Table_Component_Type;
- 
-    --    Note: since the upper bound can be one less than the lower
-    --    bound for an empty array, the table index type must be able
-    --    to cover this range, e.g. if the lower bound is 1, then the
-    --    Table_Index_Type should be Natural rather than Positive.
- 
-    --  Table_Component_Type may be any Ada type, except that controlled
-    --  types are not supported. Note however that default initialization
-    --  will NOT occur for array components.
- 
-    --  The Table_Initial values controls the allocation of the table when
-    --  it is first allocated, either by default, or by an explicit Init call.
- 
-    --  The Table_Increment value controls the amount of increase, if the
-    --  table has to be increased in size. The value given is a percentage
-    --  value (e.g. 100 = increase table size by 100%, i.e. double it).
- 
-    --  The Last and Set_Last subprograms provide control over the current
-    --  logical allocation. They are quite efficient, so they can be used
-    --  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.
- 
-    --  WARNING: If the table is reallocated, then the address of all its
-    --  components will change. So do not capture the address of an element
-    --  and then use the address later after the table may be reallocated.
-    --  One tricky case of this is passing an element of the table to a
-    --  subprogram by reference where the table gets reallocated during
-    --  the execution of the subprogram. The best rule to follow is never
-    --  to pass a table element as a parameter except for the case of IN
-    --  mode parameters with scalar values.
- 
-    type Table_Type is
-      array (Table_Index_Type range <>) of Table_Component_Type;
-    subtype Big_Table_Type is
-      Table_Type (Table_Low_Bound .. Table_Index_Type'Last);
-    --  We work with pointers to a bogus array type that is constrained
-    --  with the maximum possible range bound. This means that the pointer
-    --  is a thin pointer, which is more efficient. Since subscript checks
-    --  in any case must be on the logical, rather than physical bounds,
-    --  safety is not compromised by this approach. These types should never
-    --  be used by the client.
- 
-    type Table_Ptr is access all Big_Table_Type;
-    for Table_Ptr'Storage_Size use 0;
-    --  The table is actually represented as a pointer to allow reallocation.
-    --  This type should never be used by the client.
- 
-    Table : aliased Table_Ptr := null;
-    --  The table itself. The lower bound is the value of Low_Bound.
-    --  Logically the upper bound is the current value of Last (although
-    --  the actual size of the allocated table may be larger than this).
-    --  The program may only access and modify Table entries in the range
-    --  First .. Last.
- 
-    Locked : Boolean := False;
-    --  Table expansion is permitted only if this switch is set to False. A
-    --  client may set Locked to True, in which case any attempt to expand
-    --  the table will cause an assertion failure. Note that while a table
-    --  is locked, its address in memory remains fixed and unchanging.
- 
-    procedure Init;
-    --  This procedure allocates a new table of size Initial (freeing any
-    --  previously allocated larger table). It is not necessary to call
-    --  Init when a table is first instantiated (since the instantiation does
-    --  the same initialization steps). However, it is harmless to do so, and
-    --  Init is convenient in reestablishing a table for new use.
- 
-    function Last return Table_Index_Type;
-    pragma Inline (Last);
-    --  Returns the current value of the last used entry in the table, which
-    --  can then be used as a subscript for Table. Note that the only way to
-    --  modify Last is to call the Set_Last procedure. Last must always be
-    --  used to determine the logically last entry.
- 
-    procedure Release;
-    --  Storage is allocated in chunks according to the values given in the
-    --  Initial and Increment parameters. A call to Release releases all
-    --  storage that is allocated, but is not logically part of the current
-    --  array value. Current array values are not affected by this call.
- 
-    procedure Free;
-    --  Free all allocated memory for the table. A call to Init is required
-    --  before any use of this table after calling Free.
- 
-    First : constant Table_Index_Type := Table_Low_Bound;
-    --  Export First as synonym for Low_Bound (parallel with use of Last)
- 
-    procedure Set_Last (New_Val : Table_Index_Type);
-    pragma Inline (Set_Last);
-    --  This procedure sets Last to the indicated value. If necessary the
-    --  table is reallocated to accommodate the new value (i.e. on return
-    --  the allocated table has an upper bound of at least Last). If Set_Last
-    --  reduces the size of the table, then logically entries are removed
-    --  from the table. If Set_Last increases the size of the table, then
-    --  new entries are logically added to the table.
- 
-    procedure Increment_Last;
-    pragma Inline (Increment_Last);
-    --  Adds 1 to Last (same as Set_Last (Last + 1)
- 
-    procedure Decrement_Last;
-    pragma Inline (Decrement_Last);
-    --  Subtracts 1 from Last (same as Set_Last (Last - 1)
- 
-    procedure Append (New_Val : Table_Component_Type);
-    pragma Inline (Append);
-    --  Equivalent to:
-    --    x.Increment_Last;
-    --    x.Table (x.Last) := New_Val;
-    --  i.e. the table size is increased by one, and the given new item
-    --  stored in the newly created table element.
- 
-    procedure Append_All (New_Vals : Table_Type);
-    --  Appends all components of New_Vals
- 
-    procedure Set_Item
-      (Index : Table_Index_Type;
-       Item  : Table_Component_Type);
-    pragma Inline (Set_Item);
-    --  Put Item in the table at position Index. The table is expanded if the
-    --  current table length is less than Index and in that case Last is set to
-    --  Index. Item will replace any value already present in the table at this
-    --  position.
- 
-    function Allocate (Num : Integer := 1) return Table_Index_Type;
-    pragma Inline (Allocate);
-    --  Adds Num to Last, and returns the old value of Last + 1. Note that
-    --  this function has the possible side effect of reallocating the table.
-    --  This means that a reference X.Table (X.Allocate) is incorrect, since
-    --  the call to X.Allocate may modify the results of calling X.Table.
- 
-    generic
-      with procedure Action
-        (Index : Table_Index_Type;
-         Item  : Table_Component_Type;
-         Quit  : in out Boolean) is <>;
-    procedure For_Each;
-    --  Calls procedure Action for each component of the table, or until
-    --  one of these calls set Quit to True.
- 
-    generic
-      with function Lt (Comp1, Comp2 : Table_Component_Type) return Boolean;
-    procedure Sort_Table;
-    --  This procedure sorts the components of the table into ascending
-    --  order making calls to Lt to do required comparisons, and using
-    --  assignments to move components around. The Lt function returns True
-    --  if Comp1 is less than Comp2 (in the sense of the desired sort), and
-    --  False if Comp1 is greater than Comp2. For equal objects it does not
-    --  matter if True or False is returned (it is slightly more efficient
-    --  to return False). The sort is not stable (the order of equal items
-    --  in the table is not preserved).
- 
- end GNAT.Table;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-tasloc.adb gcc-8.1.0/gcc/ada/g-tasloc.adb
*** gcc-7.3.0/gcc/ada/g-tasloc.adb	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-tasloc.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,36 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                       G N A T . T A S K _ L O C K                        --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 1997-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 does not require a body, since it is a package renaming. We
- --  provide a dummy file containing a No_Body pragma so that previous versions
- --  of the body (which did exist) will not interfere.
- 
- pragma No_Body;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-tasloc.ads gcc-8.1.0/gcc/ada/g-tasloc.ads
*** gcc-7.3.0/gcc/ada/g-tasloc.ads	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-tasloc.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,46 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                       G N A T . T A S K _ L O C K                        --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 1998-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Simple task lock and unlock routines
- 
- --  A small package containing a task lock and unlock routines for creating
- --  a critical region. The lock involved is a global lock, shared by all
- --  tasks, and by all calls to these routines, so these routines should be
- --  used with care to avoid unnecessary reduction of concurrency.
- 
- --  These routines may be used in a non-tasking program, and in that case
- --  they have no effect (they do NOT cause the tasking runtime to be loaded).
- 
- --  See file s-tasloc.ads for full documentation of the interface
- 
- with System.Task_Lock;
- 
- package GNAT.Task_Lock renames System.Task_Lock;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-tastus.ads gcc-8.1.0/gcc/ada/g-tastus.ads
*** gcc-7.3.0/gcc/ada/g-tastus.ads	Fri Jan  4 12:49:55 2013
--- gcc-8.1.0/gcc/ada/g-tastus.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,36 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                G N A T . T A S K _ S T A C K _ U S A G E                 --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --           Copyright (C) 2009-2011, Free Software Foundation, Inc.        --
- --                                                                          --
- -- GNAT is 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 package provides an API to query for tasks stack usage at runtime
- --  and during debug.
- 
- --  See file s-stusta.ads for full documentation of the interface
- 
- with System.Stack_Usage.Tasking;
- 
- package GNAT.Task_Stack_Usage renames System.Stack_Usage.Tasking;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-thread.adb gcc-8.1.0/gcc/ada/g-thread.adb
*** gcc-7.3.0/gcc/ada/g-thread.adb	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-thread.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,186 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                         G N A T . T H R E A D S                          --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                    Copyright (C) 1998-2010, AdaCore                      --
- --                                                                          --
- -- GNAT is 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.Task_Identification; use Ada.Task_Identification;
- with System.Task_Primitives.Operations;
- with System.Tasking;
- with System.Tasking.Stages;   use System.Tasking.Stages;
- with System.OS_Interface;     use System.OS_Interface;
- with System.Soft_Links;       use System.Soft_Links;
- with Ada.Unchecked_Conversion;
- 
- package body GNAT.Threads is
- 
-    use System;
- 
-    package STPO renames System.Task_Primitives.Operations;
- 
-    type Thread_Id_Ptr is access all Thread_Id;
- 
-    pragma Warnings (Off);
-    --  The following unchecked conversions are aliasing safe, since they
-    --  are never used to create pointers to improperly aliased data.
- 
-    function To_Addr is new Ada.Unchecked_Conversion (Task_Id, Address);
-    function To_Id   is new Ada.Unchecked_Conversion (Address, Task_Id);
-    function To_Id   is new Ada.Unchecked_Conversion (Address, Tasking.Task_Id);
-    function To_Tid  is new Ada.Unchecked_Conversion
-      (Address, Ada.Task_Identification.Task_Id);
-    function To_Thread is new Ada.Unchecked_Conversion (Address, Thread_Id_Ptr);
- 
-    pragma Warnings (On);
- 
-    type Code_Proc is access procedure (Id : Address; Parm : Void_Ptr);
- 
-    task type Thread
-      (Stsz : Natural;
-       Prio : Any_Priority;
-       Parm : Void_Ptr;
-       Code : Code_Proc)
-    is
-       pragma Priority (Prio);
-       pragma Storage_Size (Stsz);
-    end Thread;
- 
-    task body Thread is
-    begin
-       Code.all (To_Addr (Current_Task), Parm);
-    end Thread;
- 
-    type Tptr is access Thread;
- 
-    -------------------
-    -- Create_Thread --
-    -------------------
- 
-    function Create_Thread
-      (Code : Address;
-       Parm : Void_Ptr;
-       Size : Natural;
-       Prio : Integer) return System.Address
-    is
-       TP : Tptr;
- 
-       function To_CP is new Ada.Unchecked_Conversion (Address, Code_Proc);
- 
-    begin
-       TP := new Thread (Size, Prio, Parm, To_CP (Code));
-       return To_Addr (TP'Identity);
-    end Create_Thread;
- 
-    ---------------------
-    -- Register_Thread --
-    ---------------------
- 
-    function Register_Thread return System.Address is
-    begin
-       return Task_Primitives.Operations.Register_Foreign_Thread.all'Address;
-    end Register_Thread;
- 
-    -----------------------
-    -- Unregister_Thread --
-    -----------------------
- 
-    procedure Unregister_Thread is
-       Self_Id : constant Tasking.Task_Id := Task_Primitives.Operations.Self;
-    begin
-       Self_Id.Common.State := Tasking.Terminated;
-       Destroy_TSD (Self_Id.Common.Compiler_Data);
-       Free_Task (Self_Id);
-    end Unregister_Thread;
- 
-    --------------------------
-    -- Unregister_Thread_Id --
-    --------------------------
- 
-    procedure Unregister_Thread_Id (Thread : System.Address) is
-       Thr : constant Thread_Id := To_Thread (Thread).all;
-       T   : Tasking.Task_Id;
- 
-       use type Tasking.Task_Id;
-       --  This use clause should be removed once a visibility problem
-       --  with the MaRTE run time has been fixed. ???
- 
-       pragma Warnings (Off);
-       use type System.OS_Interface.Thread_Id;
-       pragma Warnings (On);
- 
-    begin
-       STPO.Lock_RTS;
- 
-       T := Tasking.All_Tasks_List;
-       loop
-          exit when T = null or else STPO.Get_Thread_Id (T) = Thr;
- 
-          T := T.Common.All_Tasks_Link;
-       end loop;
- 
-       STPO.Unlock_RTS;
- 
-       if T /= null then
-          T.Common.State := Tasking.Terminated;
-          Destroy_TSD (T.Common.Compiler_Data);
-          Free_Task (T);
-       end if;
-    end Unregister_Thread_Id;
- 
-    --------------------
-    -- Destroy_Thread --
-    --------------------
- 
-    procedure Destroy_Thread (Id : Address) is
-       Tid : constant Task_Id := To_Id (Id);
-    begin
-       Abort_Task (Tid);
-    end Destroy_Thread;
- 
-    ----------------
-    -- Get_Thread --
-    ----------------
- 
-    procedure Get_Thread (Id : Address; Thread : Address) is
-       Thr : constant Thread_Id_Ptr := To_Thread (Thread);
-    begin
-       Thr.all := Task_Primitives.Operations.Get_Thread_Id (To_Id (Id));
-    end Get_Thread;
- 
-    ----------------
-    -- To_Task_Id --
-    ----------------
- 
-    function To_Task_Id
-      (Id : System.Address) return Ada.Task_Identification.Task_Id
-    is
-    begin
-       return To_Tid (Id);
-    end To_Task_Id;
- 
- end GNAT.Threads;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-thread.ads gcc-8.1.0/gcc/ada/g-thread.ads
*** gcc-7.3.0/gcc/ada/g-thread.ads	Mon Aug  1 15:05:02 2011
--- gcc-8.1.0/gcc/ada/g-thread.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,149 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                         G N A T . T H R E A D S                          --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 1998-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 facilities for creation or registration of foreign
- --  threads for use as Ada tasks. In order to execute general Ada code, the
- --  run-time system must know about all tasks. This package allows foreign
- --  code, e.g. a C program, to create a thread that the Ada run-time knows
- --  about, or to register the current thread.
- 
- --  For some implementations of GNAT Pro, the registration of foreign threads
- --  is automatic. However, in such implementations, if the Ada program has no
- --  tasks at all and no tasking constructs other than delay, then by default
- --  the non-tasking version of the Ada run-time will be loaded. If foreign
- --  threads are present, it is important to ensure that the tasking version
- --  of the Ada run time is loaded. This may be achieved by adding "with
- --  GNAT.Threads" to any unit in the partition.
- 
- with System;
- with Ada.Task_Identification;
- 
- package GNAT.Threads is
- 
-    type Void_Ptr is access all Integer;
- 
-    function Create_Thread
-      (Code : System.Address;  -- pointer
-       Parm : Void_Ptr;        -- pointer
-       Size : Natural;         -- int
-       Prio : Integer)         -- int
-       return System.Address;
-    pragma Export (C, Create_Thread, "__gnat_create_thread");
-    --  Creates a thread with the given (Size) stack size in bytes, and
-    --  the given (Prio) priority. The task will execute a call to the
-    --  procedure whose address is given by Code. This procedure has
-    --  the prototype
-    --
-    --    void thread_code (void *id, void *parm);
-    --
-    --  where id is the id of the created task, and parm is the parameter
-    --  passed to Create_Thread. The called procedure is the body of the
-    --  code for the task, the task will be automatically terminated when
-    --  the procedure returns.
-    --
-    --  This function returns the Ada Id of the created task that can then be
-    --  used as a parameter to the procedures below.
-    --
-    --  C declaration:
-    --
-    --  extern void *__gnat_create_thread
-    --    (void (*code)(void *, void *), void *parm, int size, int prio);
- 
-    function Register_Thread return System.Address;
-    pragma Export (C, Register_Thread, "__gnat_register_thread");
-    --  Create an Ada task Id for the current thread if needed.
-    --  If the thread could not be registered, System.Null_Address is returned.
-    --
-    --  This function returns the Ada Id of the current task that can then be
-    --  used as a parameter to the procedures below.
-    --
-    --  C declaration:
-    --
-    --  extern void *__gnat_register_thread ();
-    --
-    --  Here is a typical usage of the Register/Unregister_Thread procedures:
-    --
-    --  void thread_body ()
-    --  {
-    --    void *task_id = __gnat_register_thread ();
-    --    ... thread body ...
-    --    __gnat_unregister_thread ();
-    --  }
- 
-    procedure Unregister_Thread;
-    pragma Export (C, Unregister_Thread, "__gnat_unregister_thread");
-    --  Unregister the current task from the GNAT run time and destroy the
-    --  memory allocated for its task id.
-    --
-    --  C declaration:
-    --
-    --  extern void __gnat_unregister_thread ();
- 
-    procedure Unregister_Thread_Id (Thread : System.Address);
-    pragma Export (C, Unregister_Thread_Id, "__gnat_unregister_thread_id");
-    --  Unregister the task associated with Thread from the GNAT run time and
-    --  destroy the memory allocated for its task id.
-    --  If no task id is associated with Thread, do nothing.
-    --
-    --  C declaration:
-    --
-    --  extern void __gnat_unregister_thread_id (pthread_t *thread);
- 
-    procedure Destroy_Thread (Id : System.Address);
-    pragma Export (C, Destroy_Thread, "__gnat_destroy_thread");
-    --  This procedure may be used to prematurely abort the created thread.
-    --  The value Id is the value that was passed to the thread code procedure
-    --  at activation time.
-    --
-    --  C declaration:
-    --
-    --  extern void __gnat_destroy_thread (void *id);
- 
-    procedure Get_Thread (Id : System.Address; Thread : System.Address);
-    pragma Export (C, Get_Thread, "__gnat_get_thread");
-    --  This procedure is used to retrieve the thread id of a given task.
-    --  The value Id is the value that was passed to the thread code procedure
-    --  at activation time.
-    --  Thread is a pointer to a thread id that will be updated by this
-    --  procedure.
-    --
-    --  C declaration:
-    --
-    --  extern void __gnat_get_thread (void *id, pthread_t *thread);
- 
-    function To_Task_Id
-      (Id : System.Address)
-       return Ada.Task_Identification.Task_Id;
-    --  Ada interface only.
-    --  Given a low level Id, as returned by Create_Thread, return a Task_Id,
-    --  so that operations in Ada.Task_Identification can be used.
- 
- end GNAT.Threads;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-timsta.adb gcc-8.1.0/gcc/ada/g-timsta.adb
*** gcc-7.3.0/gcc/ada/g-timsta.adb	Fri Aug  1 08:32:27 2014
--- gcc-8.1.0/gcc/ada/g-timsta.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,59 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                       G N A T . T I M E _ S T A M P                      --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2008-2014, Free Software Foundation, Inc.        --
- --                                                                          --
- -- GNAT is 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 Interfaces.C; use Interfaces.C;
- 
- package body GNAT.Time_Stamp is
- 
-    subtype time_stamp is char_array (0 .. 22);
-    type time_stamp_ptr is access all time_stamp;
-    --  The desired ISO 8601 string format has exactly 22 characters. We add
-    --  one additional character for '\0'. The indexing starts from zero to
-    --  accommodate the C layout.
- 
-    procedure gnat_current_time_string (Value : time_stamp_ptr);
-    pragma Import (C, gnat_current_time_string, "__gnat_current_time_string");
- 
-    ------------------
-    -- Current_Time --
-    ------------------
- 
-    function Current_Time return String is
-       Result : aliased time_stamp;
- 
-    begin
-       gnat_current_time_string (Result'Unchecked_Access);
-       Result (22) := nul;
- 
-       return To_Ada (Result);
-    end Current_Time;
- 
- end GNAT.Time_Stamp;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-timsta.ads gcc-8.1.0/gcc/ada/g-timsta.ads
*** gcc-7.3.0/gcc/ada/g-timsta.ads	Fri Aug  1 08:32:27 2014
--- gcc-8.1.0/gcc/ada/g-timsta.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,40 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                       G N A T . T I M E _ S T A M P                      --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --         Copyright (C) 2008-2014, Free Software Foundation, Inc.          --
- --                                                                          --
- -- GNAT is 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 a lightweight mechanism for obtaining time stamps
- 
- package GNAT.Time_Stamp is
- 
-    function Current_Time return String;
-    --  Return the current local time in the following ISO 8601 string format:
-    --    YYYY-MM-DD HH:MM:SS.SS
- 
- end GNAT.Time_Stamp;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-traceb.adb gcc-8.1.0/gcc/ada/g-traceb.adb
*** gcc-7.3.0/gcc/ada/g-traceb.adb	Wed Jul 30 14:00:58 2014
--- gcc-8.1.0/gcc/ada/g-traceb.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,50 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                       G N A T . T R A C E B A C K                        --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                      Copyright (C) 1999-2014, AdaCore                    --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Run-time non-symbolic traceback support
- 
- with System.Traceback;
- 
- package body GNAT.Traceback is
- 
-    ----------------
-    -- Call_Chain --
-    ----------------
- 
-    procedure Call_Chain
-      (Traceback : out Tracebacks_Array;
-       Len       : out Natural)
-    is
-    begin
-       System.Traceback.Call_Chain (Traceback, Traceback'Length, Len);
-    end Call_Chain;
- 
- end GNAT.Traceback;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-traceb.ads gcc-8.1.0/gcc/ada/g-traceb.ads
*** gcc-7.3.0/gcc/ada/g-traceb.ads	Mon May  2 09:57:54 2016
--- gcc-8.1.0/gcc/ada/g-traceb.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,101 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                       G N A T . T R A C E B A C K                        --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 1999-2016, AdaCore                     --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Run-time non-symbolic traceback support
- 
- --  This package provides a method for generating a traceback of the
- --  current execution location. The traceback shows the locations of
- --  calls in the call chain, up to either the top or a designated
- --  number of levels.
- 
- --  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.
- 
- with System;
- with Ada.Exceptions.Traceback;
- 
- package GNAT.Traceback is
-    pragma Elaborate_Body;
- 
-    subtype Code_Loc is System.Address;
-    --  Code location used in building tracebacks
- 
-    subtype Tracebacks_Array is Ada.Exceptions.Traceback.Tracebacks_Array;
-    --  Traceback array used to hold a generated traceback list
- 
-    ----------------
-    -- Call_Chain --
-    ----------------
- 
-    procedure Call_Chain (Traceback : out Tracebacks_Array; Len : out Natural);
-    --  Store up to Traceback'Length tracebacks corresponding to the current
-    --  call chain. The first entry stored corresponds to the deepest level
-    --  of subprogram calls. Len shows the number of traceback entries stored.
-    --  It will be equal to Traceback'Length unless the entire traceback is
-    --  shorter, in which case positions in Traceback past the Len position
-    --  are undefined on return.
- 
- end GNAT.Traceback;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-trasym.adb gcc-8.1.0/gcc/ada/g-trasym.adb
*** gcc-7.3.0/gcc/ada/g-trasym.adb	Wed Jul 30 14:12:37 2014
--- gcc-8.1.0/gcc/ada/g-trasym.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,36 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --             G N A T . T R A C E B A C K . S Y M B O L I C                --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 1999-2014, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 does not require a body, since it is a package renaming. We
- --  provide a dummy file containing a No_Body pragma so that previous versions
- --  of the body (which did exist) will not interfere.
- 
- pragma No_Body;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-trasym.ads gcc-8.1.0/gcc/ada/g-trasym.ads
*** gcc-7.3.0/gcc/ada/g-trasym.ads	Wed Jul 30 14:12:37 2014
--- gcc-8.1.0/gcc/ada/g-trasym.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,37 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --             G N A T . T R A C E B A C K . S Y M B O L I C                --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 1999-2014, AdaCore                     --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Run-time symbolic traceback support
- 
- --  See file s-trasym.ads for full documentation of the interface
- 
- with System.Traceback.Symbolic;
- package GNAT.Traceback.Symbolic renames System.Traceback.Symbolic;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-tty.adb gcc-8.1.0/gcc/ada/g-tty.adb
*** gcc-7.3.0/gcc/ada/g-tty.adb	Wed Nov 23 10:54:21 2011
--- gcc-8.1.0/gcc/ada/g-tty.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,134 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                             G N A T . T T Y                              --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 2002-2011, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 Interfaces.C.Strings; use Interfaces.C.Strings;
- 
- package body GNAT.TTY is
- 
-    use System;
- 
-    procedure Check_TTY (Handle : TTY_Handle);
-    --  Check the validity of Handle. Raise Program_Error if ttys are not
-    --  supported. Raise Constraint_Error if Handle is an invalid handle.
- 
-    ------------------
-    -- Allocate_TTY --
-    ------------------
- 
-    procedure Allocate_TTY (Handle : out TTY_Handle) is
-       function Internal return System.Address;
-       pragma Import (C, Internal, "__gnat_new_tty");
- 
-    begin
-       if not TTY_Supported then
-          raise Program_Error;
-       end if;
- 
-       Handle.Handle := Internal;
-    end Allocate_TTY;
- 
-    ---------------
-    -- Check_TTY --
-    ---------------
- 
-    procedure Check_TTY (Handle : TTY_Handle) is
-    begin
-       if not TTY_Supported then
-          raise Program_Error;
-       elsif Handle.Handle = System.Null_Address then
-          raise Constraint_Error;
-       end if;
-    end Check_TTY;
- 
-    ---------------
-    -- Close_TTY --
-    ---------------
- 
-    procedure Close_TTY (Handle : in out TTY_Handle) is
-       procedure Internal (Handle : System.Address);
-       pragma Import (C, Internal, "__gnat_close_tty");
-    begin
-       Check_TTY (Handle);
-       Internal (Handle.Handle);
-       Handle.Handle := System.Null_Address;
-    end Close_TTY;
- 
-    ---------------
-    -- Reset_TTY --
-    ---------------
- 
-    procedure Reset_TTY (Handle : TTY_Handle) is
-       procedure Internal (Handle : System.Address);
-       pragma Import (C, Internal, "__gnat_reset_tty");
-    begin
-       Check_TTY (Handle);
-       Internal (Handle.Handle);
-    end Reset_TTY;
- 
-    --------------------
-    -- TTY_Descriptor --
-    --------------------
- 
-    function TTY_Descriptor
-      (Handle : TTY_Handle) return GNAT.OS_Lib.File_Descriptor
-    is
-       function Internal
-         (Handle : System.Address) return GNAT.OS_Lib.File_Descriptor;
-       pragma Import (C, Internal, "__gnat_tty_fd");
-    begin
-       Check_TTY (Handle);
-       return Internal (Handle.Handle);
-    end TTY_Descriptor;
- 
-    --------------
-    -- TTY_Name --
-    --------------
- 
-    function TTY_Name (Handle : TTY_Handle) return String is
-       function Internal (Handle : System.Address) return chars_ptr;
-       pragma Import (C, Internal, "__gnat_tty_name");
-    begin
-       Check_TTY (Handle);
-       return Value (Internal (Handle.Handle));
-    end TTY_Name;
- 
-    -------------------
-    -- TTY_Supported --
-    -------------------
- 
-    function TTY_Supported return Boolean is
-       function Internal return Integer;
-       pragma Import (C, Internal, "__gnat_tty_supported");
-    begin
-       return Internal /= 0;
-    end TTY_Supported;
- 
- end GNAT.TTY;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-tty.ads gcc-8.1.0/gcc/ada/g-tty.ads
*** gcc-7.3.0/gcc/ada/g-tty.ads	Wed Nov 23 10:54:21 2011
--- gcc-8.1.0/gcc/ada/g-tty.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,73 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                             G N A T . T T Y                              --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 2002-2011, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 control over pseudo terminals (ttys)
- 
- --  This package is only supported on unix systems. See function TTY_Supported
- --  to test dynamically whether other functions of this package can be called.
- 
- with System;
- 
- with GNAT.OS_Lib;
- 
- package GNAT.TTY is
- 
-    type TTY_Handle is private;
-    --  Handle for a tty descriptor
- 
-    function TTY_Supported return Boolean;
-    --  If True, the other functions of this package can be called. Otherwise,
-    --  all functions in this package will raise Program_Error if called.
- 
-    procedure Allocate_TTY (Handle : out TTY_Handle);
-    --  Allocate a new tty
- 
-    procedure Reset_TTY (Handle : TTY_Handle);
-    --  Reset settings of a given tty
- 
-    procedure Close_TTY (Handle : in out TTY_Handle);
-    --  Close a given tty
- 
-    function TTY_Name (Handle : TTY_Handle) return String;
-    --  Return the external name of a tty. The name depends on the tty handling
-    --  on the given target. It will typically look like: "/dev/ptya1"
- 
-    function TTY_Descriptor
-      (Handle : TTY_Handle) return GNAT.OS_Lib.File_Descriptor;
-    --  Return the low level descriptor associated with Handle
- 
- private
- 
-    type TTY_Handle is record
-       Handle : System.Address := System.Null_Address;
-    end record;
- 
- end GNAT.TTY;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-u3spch.adb gcc-8.1.0/gcc/ada/g-u3spch.adb
*** gcc-7.3.0/gcc/ada/g-u3spch.adb	Tue Feb 25 15:15:44 2014
--- gcc-8.1.0/gcc/ada/g-u3spch.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,51 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --          G N A T . U T F _ 3 2 _ S P E L L I N G _ C H E C K E R         --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 1998-2013, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 Compiler_Unit_Warning;
- 
- with GNAT.Spelling_Checker_Generic;
- 
- package body GNAT.UTF_32_Spelling_Checker is
- 
-    function IBS is new
-      GNAT.Spelling_Checker_Generic.Is_Bad_Spelling_Of
-        (System.WCh_Cnv.UTF_32_Code, System.WCh_Cnv.UTF_32_String);
- 
-    ------------------------
-    -- Is_Bad_Spelling_Of --
-    ------------------------
- 
-    function Is_Bad_Spelling_Of
-      (Found  : System.WCh_Cnv.UTF_32_String;
-       Expect : System.WCh_Cnv.UTF_32_String) return Boolean
-    renames IBS;
- 
- end GNAT.UTF_32_Spelling_Checker;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-u3spch.ads gcc-8.1.0/gcc/ada/g-u3spch.ads
*** gcc-7.3.0/gcc/ada/g-u3spch.ads	Tue Feb 25 15:15:44 2014
--- gcc-8.1.0/gcc/ada/g-u3spch.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,57 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --          G N A T . U T F _ 3 2 _ S P E L L I N G _ C H E C K E R         --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 1998-2013, AdaCore                     --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Spelling checker
- 
- --  This package provides a utility routine for checking for bad spellings
- --  for the case of System.WCh_Cnv.UTF_32_String arguments.
- 
- pragma Compiler_Unit_Warning;
- 
- with System.WCh_Cnv;
- 
- package GNAT.UTF_32_Spelling_Checker is
-    pragma Pure;
- 
-    function Is_Bad_Spelling_Of
-      (Found  : System.WCh_Cnv.UTF_32_String;
-       Expect : System.WCh_Cnv.UTF_32_String) return Boolean;
-    --  Determines if the string Found is a plausible misspelling of the string
-    --  Expect. Returns True for an exact match or a probably misspelling, False
-    --  if no near match is detected. This routine is case sensitive, so the
-    --  caller should fold both strings to get a case insensitive match.
-    --
-    --  Note: the spec of this routine is deliberately rather vague. It is used
-    --  by GNAT itself to detect misspelled keywords and identifiers, and is
-    --  heuristically adjusted to be appropriate to this usage. It will work
-    --  well in any similar case of named entities.
- 
- end GNAT.UTF_32_Spelling_Checker;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-utf_32.adb gcc-8.1.0/gcc/ada/g-utf_32.adb
*** gcc-7.3.0/gcc/ada/g-utf_32.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/g-utf_32.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,36 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                          G N A T . U T F _ 3 2                           --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2005-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- --
- -- 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 does not require a body, since it is a package renaming. We
- --  provide a dummy file containing a No_Body pragma so that previous versions
- --  of the body (which did exist) will not interfere.
- 
- pragma No_Body;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-utf_32.ads gcc-8.1.0/gcc/ada/g-utf_32.ads
*** gcc-7.3.0/gcc/ada/g-utf_32.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/g-utf_32.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,47 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                          G N A T . U T F _ 3 2                           --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2005-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- --
- -- 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 is an internal package that provides basic character
- --  classification capabilities needed by the compiler for handling full
- --  32-bit wide wide characters. We avoid the use of the actual type
- --  Wide_Wide_Character, since we want to use these routines in the compiler
- --  itself, and we want to be able to compile the compiler with old versions
- --  of GNAT that did not implement Wide_Wide_Character.
- 
- --  This package is available directly for use in application programs,
- --  and also serves as the basis for Ada.Wide_Wide_Characters.Unicode and
- --  Ada.Wide_Characters.Unicode, which can also be used directly.
- 
- --  See file s-utf_32.ads for full documentation of the interface
- 
- with System.UTF_32;
- 
- package GNAT.UTF_32 renames System.UTF_32;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-wispch.adb gcc-8.1.0/gcc/ada/g-wispch.adb
*** gcc-7.3.0/gcc/ada/g-wispch.adb	Tue Apr 10 05:44:30 2012
--- gcc-8.1.0/gcc/ada/g-wispch.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,49 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --            G N A T . W I D E _ S P E L L I N G _ C H E C K E R           --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 1998-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 GNAT.Spelling_Checker_Generic;
- 
- package body GNAT.Wide_Spelling_Checker is
- 
-    function IBS is new
-      GNAT.Spelling_Checker_Generic.Is_Bad_Spelling_Of
-        (Wide_Character, Wide_String);
- 
-    ------------------------
-    -- Is_Bad_Spelling_Of --
-    ------------------------
- 
-    function Is_Bad_Spelling_Of
-      (Found  : Wide_String;
-       Expect : Wide_String) return Boolean
-    renames IBS;
- 
- end GNAT.Wide_Spelling_Checker;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-wispch.ads gcc-8.1.0/gcc/ada/g-wispch.ads
*** gcc-7.3.0/gcc/ada/g-wispch.ads	Tue Apr 10 05:44:30 2012
--- gcc-8.1.0/gcc/ada/g-wispch.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,53 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --            G N A T . W I D E _ S P E L L I N G _ C H E C K E R           --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 1998-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Spelling checker
- 
- --  This package provides a utility routine for checking for bad spellings
- --  for the case of Wide_String arguments.
- 
- package GNAT.Wide_Spelling_Checker is
-    pragma Pure;
- 
-    function Is_Bad_Spelling_Of
-      (Found  : Wide_String;
-       Expect : Wide_String) return Boolean;
-    --  Determines if the string Found is a plausible misspelling of the string
-    --  Expect. Returns True for an exact match or a probably misspelling, False
-    --  if no near match is detected. This routine is case sensitive, so the
-    --  caller should fold both strings to get a case insensitive match.
-    --
-    --  Note: the spec of this routine is deliberately rather vague. It is used
-    --  by GNAT itself to detect misspelled keywords and identifiers, and is
-    --  heuristically adjusted to be appropriate to this usage. It will work
-    --  well in any similar case of named entities.
- 
- end GNAT.Wide_Spelling_Checker;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-wistsp.ads gcc-8.1.0/gcc/ada/g-wistsp.ads
*** gcc-7.3.0/gcc/ada/g-wistsp.ads	Fri Aug  1 08:32:27 2014
--- gcc-8.1.0/gcc/ada/g-wistsp.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,44 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                G N A T . W I D E _ S T R I N G _ S P L I T               --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2002-2014, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Useful wide_string-manipulation routines: given a set of separators, split
- --  a wide_string wherever the separators appear, and provide direct access
- --  to the resulting slices. See GNAT.Array_Split for full documentation.
- 
- with Ada.Strings.Wide_Maps; use Ada.Strings;
- with GNAT.Array_Split;
- 
- package GNAT.Wide_String_Split is new GNAT.Array_Split
-   (Element          => Wide_Character,
-    Element_Sequence => Wide_String,
-    Element_Set      => Wide_Maps.Wide_Character_Set,
-    To_Set           => Wide_Maps.To_Set,
-    Is_In            => Wide_Maps.Is_In);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-zspche.adb gcc-8.1.0/gcc/ada/g-zspche.adb
*** gcc-7.3.0/gcc/ada/g-zspche.adb	Tue Apr 10 05:44:30 2012
--- gcc-8.1.0/gcc/ada/g-zspche.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,49 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --       G N A T . W I D E _W I D E _ S P E L L I N G _ C H E C K E R       --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --                     Copyright (C) 1998-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 GNAT.Spelling_Checker_Generic;
- 
- package body GNAT.Wide_Wide_Spelling_Checker is
- 
-    function IBS is new
-      GNAT.Spelling_Checker_Generic.Is_Bad_Spelling_Of
-        (Wide_Wide_Character, Wide_Wide_String);
- 
-    ------------------------
-    -- Is_Bad_Spelling_Of --
-    ------------------------
- 
-    function Is_Bad_Spelling_Of
-      (Found  : Wide_Wide_String;
-       Expect : Wide_Wide_String) return Boolean
-    renames IBS;
- 
- end GNAT.Wide_Wide_Spelling_Checker;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-zspche.ads gcc-8.1.0/gcc/ada/g-zspche.ads
*** gcc-7.3.0/gcc/ada/g-zspche.ads	Tue Apr 10 05:44:30 2012
--- gcc-8.1.0/gcc/ada/g-zspche.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,53 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --       G N A T . W I D E _ W I D E _ S P E L L I N G _ C H E C K E R      --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 1998-2010, AdaCore                     --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Spelling checker
- 
- --  This package provides a utility routine for checking for bad spellings
- --  for the case of Wide_Wide_String arguments.
- 
- package GNAT.Wide_Wide_Spelling_Checker is
-    pragma Pure;
- 
-    function Is_Bad_Spelling_Of
-      (Found  : Wide_Wide_String;
-       Expect : Wide_Wide_String) return Boolean;
-    --  Determines if the string Found is a plausible misspelling of the string
-    --  Expect. Returns True for an exact match or a probably misspelling, False
-    --  if no near match is detected. This routine is case sensitive, so the
-    --  caller should fold both strings to get a case insensitive match.
-    --
-    --  Note: the spec of this routine is deliberately rather vague. It is used
-    --  by GNAT itself to detect misspelled keywords and identifiers, and is
-    --  heuristically adjusted to be appropriate to this usage. It will work
-    --  well in any similar case of named entities.
- 
- end GNAT.Wide_Wide_Spelling_Checker;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/g-zstspl.ads gcc-8.1.0/gcc/ada/g-zstspl.ads
*** gcc-7.3.0/gcc/ada/g-zstspl.ads	Fri Aug  1 08:32:27 2014
--- gcc-8.1.0/gcc/ada/g-zstspl.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,44 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --           G N A T . W I D E _ W I D E _ S T R I N G _ S P L I T          --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2002-2014, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Useful wide_string-manipulation routines: given a set of separators, split
- --  a wide_string wherever the separators appear, and provide direct access
- --  to the resulting slices. See GNAT.Array_Split for full documentation.
- 
- with Ada.Strings.Wide_Wide_Maps; use Ada.Strings;
- with GNAT.Array_Split;
- 
- package GNAT.Wide_Wide_String_Split is new GNAT.Array_Split
-   (Element          => Wide_Wide_Character,
-    Element_Sequence => Wide_Wide_String,
-    Element_Set      => Wide_Wide_Maps.Wide_Wide_Character_Set,
-    To_Set           => Wide_Wide_Maps.To_Set,
-    Is_In            => Wide_Wide_Maps.Is_In);
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/gcc-interface/Make-lang.in gcc-8.1.0/gcc/ada/gcc-interface/Make-lang.in
*** gcc-7.3.0/gcc/ada/gcc-interface/Make-lang.in	Tue Nov 22 16:33:43 2016
--- gcc-8.1.0/gcc/ada/gcc-interface/Make-lang.in	Wed Nov  8 15:17:43 2017
*************** ALL_ADAFLAGS = \
*** 68,74 ****
    $(CFLAGS) $(ADA_CFLAGS) $(ADAFLAGS) $(CHECKING_ADAFLAGS) $(WARN_ADAFLAGS)
  FORCE_DEBUG_ADAFLAGS = -g
  ADA_CFLAGS =
! ADA_INCLUDES = -nostdinc -I- -I. -Iada/generated -Iada -I$(srcdir)/ada -I$(srcdir)/ada/gcc-interface
  GNATLIBFLAGS= -W -Wall -gnatpg -nostdinc
  GNATLIBCFLAGS= -g -O2 $(TCFLAGS)
  ADA_INCLUDE_DIR = $(libsubdir)/adainclude
--- 68,74 ----
    $(CFLAGS) $(ADA_CFLAGS) $(ADAFLAGS) $(CHECKING_ADAFLAGS) $(WARN_ADAFLAGS)
  FORCE_DEBUG_ADAFLAGS = -g
  ADA_CFLAGS =
! ADA_INCLUDES = -nostdinc -I- -I. -Iada/generated -Iada -I$(srcdir)/ada -I$(srcdir)/ada/gcc-interface -Iada/libgnat -I$(srcdir)/ada/libgnat
  GNATLIBFLAGS= -W -Wall -gnatpg -nostdinc
  GNATLIBCFLAGS= -g -O2 $(TCFLAGS)
  ADA_INCLUDE_DIR = $(libsubdir)/adainclude
*************** ada/%.o: ada/gcc-interface/%.c
*** 104,126 ****
  	$(COMPILE) $<
  	$(POSTCOMPILE)
  
! # Function that dumps the dependencies of an Ada object file by parsing the
! # associated ALI file.  We match the lines starting with D to achieve that.
! ADA_DEPS=case $@ in \
!             *sdefault.o);; \
!             *)a="`echo $@ | sed -e 's/.o$$/.ali/'`"; \
!                 echo "$@: `cat $$a | \
!                 sed -ne 's;^D \([a-z0-9_\.-]*\).*;ada/\1;gp' | \
!                 sed -e 's;ada/gnatvsn.ads;ada/generated/gnatvsn.ads;g' | \
!                 tr -d '\015' | tr '\n' ' '`" > $(dir $@)/$(DEPDIR)/$(patsubst %.o,%.Po,$(notdir $@));; \
!          esac;
  
  .adb.o:
! 	$(CC) -c $(ALL_ADAFLAGS) $(ADA_INCLUDES) $< $(OUTPUT_OPTION)
  	@$(ADA_DEPS)
  
  .ads.o:
! 	$(CC) -c $(ALL_ADAFLAGS) $(ADA_INCLUDES) $< $(OUTPUT_OPTION)
  	@$(ADA_DEPS)
  
  # Define the names for selecting Ada in LANGUAGES.
--- 104,148 ----
  	$(COMPILE) $<
  	$(POSTCOMPILE)
  
! # Function that dumps the dependencies of an Ada object. Dependency only work
! # fully if the compiler support -gnatd.n. Otherwise a fallback mechanism is
! # used. The fallback mechanism parse the ali files to get the list of
! # dependencies and try to guess their location. If the location cannot be found
! # then the dependency is ignored.
! ifeq ($(findstring -gnatd.n,$(ALL_ADAFLAGS)),)
! ADA_DEPS=\
!    mkdir -p $(dir $@)/$(DEPDIR); \
!    (o="$@: $<"; \
!     a="`echo $@ | sed -e 's/.o$$/.ali/'`"; \
!     for d in `cat $$a | sed -ne 's;^D \([a-z0-9_\.-]*\).*;\1;gp'`; do \
!        for l in ada $(srcdir)/ada ada/libgnat $(srcdir)/ada/libgnat; do \
!           if test -f $$l/$$d; then \
!              o="$$o $$l/$$d"; \
!           fi; \
!        done; \
!     done; \
!     echo "$$o"; echo) \
!     >$(dir $@)/$(DEPDIR)/$(patsubst %.o,%.Po,$(notdir $@))
! ADA_OUTPUT_OPTION = $(OUTPUT_OPTION)
! else
! ADA_DEPS=\
!    mkdir -p $(dir $@)/$(DEPDIR); \
!    (echo "$@: $< " | tr -d '\015' | tr -d '\n'; \
!     cat $@.gnatd.n | tr -d '\015' | tr '\n' ' '; \
!     echo; echo) \
!    >$(dir $@)/$(DEPDIR)/$(patsubst %.o,%.Po,$(notdir $@))
! ADA_OUTPUT_OPTION = $(OUTPUT_OPTION) > $@.gnatd.n
! endif
! 
  
  .adb.o:
! 	mkdir -p $(dir $@)
! 	$(CC) -c $(ALL_ADAFLAGS) $(ADA_INCLUDES) $< $(ADA_OUTPUT_OPTION)
  	@$(ADA_DEPS)
  
  .ads.o:
! 	mkdir -p $(dir $@)
! 	$(CC) -c $(ALL_ADAFLAGS) $(ADA_INCLUDES) $< $(ADA_OUTPUT_OPTION)
  	@$(ADA_DEPS)
  
  # Define the names for selecting Ada in LANGUAGES.
*************** GCC_LLINK=$(LLINKER) $(GCC_LINKERFLAGS)
*** 223,239 ****
  # Object files for gnat1 from C sources.
  GNAT1_C_OBJS = ada/adadecode.o ada/adaint.o ada/argv.o ada/cio.o \
   ada/cstreams.o ada/env.o ada/init.o ada/initialize.o ada/raise.o \
   ada/seh_init.o ada/targext.o ada/cuintp.o ada/decl.o ada/rtfinal.o \
   ada/rtinit.o ada/misc.o ada/utils.o ada/utils2.o ada/trans.o ada/targtyps.o
  
  # Object files from Ada sources that are used by gnat1
  GNAT_ADA_OBJS =	\
!  ada/a-charac.o	\
!  ada/a-chlat1.o	\
!  ada/a-elchha.o	\
!  ada/a-except.o	\
!  ada/a-ioexce.o	\
!  ada/ada.o	\
   ada/spark_xrefs.o	\
   ada/ali.o	\
   ada/alloc.o	\
--- 245,263 ----
  # Object files for gnat1 from C sources.
  GNAT1_C_OBJS = ada/adadecode.o ada/adaint.o ada/argv.o ada/cio.o \
   ada/cstreams.o ada/env.o ada/init.o ada/initialize.o ada/raise.o \
+  ada/raise-gcc.o \
   ada/seh_init.o ada/targext.o ada/cuintp.o ada/decl.o ada/rtfinal.o \
   ada/rtinit.o ada/misc.o ada/utils.o ada/utils2.o ada/trans.o ada/targtyps.o
  
  # Object files from Ada sources that are used by gnat1
  GNAT_ADA_OBJS =	\
!  ada/libgnat/a-charac.o	\
!  ada/libgnat/a-chlat1.o	\
!  ada/libgnat/a-elchha.o	\
!  ada/libgnat/a-except.o	\
!  ada/libgnat/a-exctra.o \
!  ada/libgnat/a-ioexce.o	\
!  ada/libgnat/ada.o	\
   ada/spark_xrefs.o	\
   ada/ali.o	\
   ada/alloc.o	\
*************** GNAT_ADA_OBJS =	\
*** 291,311 ****
   ada/fname.o	\
   ada/freeze.o	\
   ada/frontend.o	\
!  ada/g-byorma.o	\
!  ada/g-hesora.o	\
!  ada/g-htable.o	\
!  ada/g-spchge.o	\
!  ada/g-speche.o	\
!  ada/g-u3spch.o	\
!  ada/get_spark_xrefs.o	\
   ada/get_targ.o	\
   ada/ghost.o	\
!  ada/gnat.o	\
   ada/gnatvsn.o	\
   ada/hostparm.o	\
   ada/impunit.o	\
   ada/inline.o	\
!  ada/interfac.o	\
   ada/itypes.o	\
   ada/krunch.o	\
   ada/layout.o	\
--- 315,335 ----
   ada/fname.o	\
   ada/freeze.o	\
   ada/frontend.o	\
!  ada/libgnat/g-byorma.o	\
!  ada/libgnat/g-dynhta.o	\
!  ada/libgnat/g-hesora.o	\
!  ada/libgnat/g-htable.o	\
!  ada/libgnat/g-spchge.o	\
!  ada/libgnat/g-speche.o	\
!  ada/libgnat/g-u3spch.o	\
   ada/get_targ.o	\
   ada/ghost.o	\
!  ada/libgnat/gnat.o	\
   ada/gnatvsn.o	\
   ada/hostparm.o	\
   ada/impunit.o	\
   ada/inline.o	\
!  ada/libgnat/interfac.o	\
   ada/itypes.o	\
   ada/krunch.o	\
   ada/layout.o	\
*************** GNAT_ADA_OBJS =	\
*** 327,386 ****
   ada/par_sco.o	\
   ada/prep.o	\
   ada/prepcomp.o	\
-  ada/put_spark_xrefs.o	\
   ada/put_scos.o	\
   ada/repinfo.o	\
   ada/restrict.o	\
   ada/rident.o	\
   ada/rtsfind.o	\
!  ada/s-addope.o	\
!  ada/s-assert.o	\
!  ada/s-bitops.o	\
!  ada/s-carun8.o	\
!  ada/s-casuti.o	\
!  ada/s-conca2.o	\
!  ada/s-conca3.o	\
!  ada/s-conca4.o	\
!  ada/s-conca5.o	\
!  ada/s-conca6.o	\
!  ada/s-conca7.o	\
!  ada/s-conca8.o	\
!  ada/s-conca9.o	\
!  ada/s-crc32.o	\
!  ada/s-crtl.o	\
!  ada/s-excdeb.o	\
!  ada/s-except.o	\
!  ada/s-exctab.o	\
!  ada/s-htable.o	\
!  ada/s-imenne.o	\
!  ada/s-imgenu.o	\
!  ada/s-mastop.o	\
!  ada/s-memory.o	\
!  ada/s-os_lib.o	\
!  ada/s-parame.o	\
!  ada/s-purexc.o	\
!  ada/s-restri.o	\
!  ada/s-secsta.o	\
!  ada/s-soflin.o	\
!  ada/s-sopco3.o	\
!  ada/s-sopco4.o	\
!  ada/s-sopco5.o	\
!  ada/s-stache.o	\
!  ada/s-stalib.o	\
!  ada/s-stoele.o	\
!  ada/s-strcom.o	\
!  ada/s-strhas.o	\
!  ada/s-string.o	\
!  ada/s-strops.o	\
!  ada/s-traent.o	\
!  ada/s-unstyp.o	\
!  ada/s-utf_32.o	\
!  ada/s-valint.o	\
!  ada/s-valuns.o	\
!  ada/s-valuti.o	\
!  ada/s-wchcnv.o	\
!  ada/s-wchcon.o	\
!  ada/s-wchjis.o	\
   ada/scans.o	\
   ada/scil_ll.o	\
   ada/scn.o	\
--- 351,416 ----
   ada/par_sco.o	\
   ada/prep.o	\
   ada/prepcomp.o	\
   ada/put_scos.o	\
   ada/repinfo.o	\
   ada/restrict.o	\
   ada/rident.o	\
   ada/rtsfind.o	\
!  ada/libgnat/s-addope.o	\
!  ada/libgnat/s-addima.o \
!  ada/libgnat/s-assert.o	\
!  ada/libgnat/s-bitops.o	\
!  ada/libgnat/s-carun8.o	\
!  ada/libgnat/s-casuti.o	\
!  ada/libgnat/s-conca2.o	\
!  ada/libgnat/s-conca3.o	\
!  ada/libgnat/s-conca4.o	\
!  ada/libgnat/s-conca5.o	\
!  ada/libgnat/s-conca6.o	\
!  ada/libgnat/s-conca7.o	\
!  ada/libgnat/s-conca8.o	\
!  ada/libgnat/s-conca9.o	\
!  ada/libgnat/s-crc32.o	\
!  ada/libgnat/s-crtl.o	\
!  ada/libgnat/s-excdeb.o	\
!  ada/libgnat/s-except.o	\
!  ada/libgnat/s-exctab.o	\
!  ada/libgnat/s-excmac.o \
!  ada/libgnat/s-htable.o	\
!  ada/libgnat/s-imenne.o	\
!  ada/libgnat/s-imgenu.o	\
!  ada/libgnat/s-imgint.o \
!  ada/libgnat/s-mastop.o	\
!  ada/libgnat/s-memory.o	\
!  ada/libgnat/s-os_lib.o	\
!  ada/libgnat/s-parame.o	\
!  ada/libgnat/s-purexc.o	\
!  ada/libgnat/s-restri.o	\
!  ada/libgnat/s-secsta.o	\
!  ada/libgnat/s-soflin.o	\
!  ada/libgnat/s-soliin.o	\
!  ada/libgnat/s-sopco3.o	\
!  ada/libgnat/s-sopco4.o	\
!  ada/libgnat/s-sopco5.o	\
!  ada/libgnat/s-stache.o	\
!  ada/libgnat/s-stalib.o	\
!  ada/libgnat/s-stoele.o	\
!  ada/libgnat/s-strcom.o	\
!  ada/libgnat/s-strhas.o	\
!  ada/libgnat/s-string.o	\
!  ada/libgnat/s-strops.o	\
!  ada/libgnat/s-traceb.o \
!  ada/libgnat/s-traent.o	\
!  ada/libgnat/s-trasym.o \
!  ada/libgnat/s-unstyp.o	\
!  ada/libgnat/s-utf_32.o	\
!  ada/libgnat/s-valint.o	\
!  ada/libgnat/s-valuns.o	\
!  ada/libgnat/s-valuti.o	\
!  ada/libgnat/s-wchcnv.o	\
!  ada/libgnat/s-wchcon.o	\
!  ada/libgnat/s-wchjis.o	\
!  ada/libgnat/s-wchstw.o \
   ada/scans.o	\
   ada/scil_ll.o	\
   ada/scn.o	\
*************** GNAT_ADA_OBJS =	\
*** 417,422 ****
--- 447,453 ----
   ada/sem_res.o	\
   ada/sem_scil.o	\
   ada/sem_smem.o	\
+  ada/sem_spark.o	\
   ada/sem_type.o	\
   ada/sem_util.o	\
   ada/sem_warn.o	\
*************** GNAT_ADA_OBJS =	\
*** 435,441 ****
   ada/stylesw.o	\
   ada/switch-c.o	\
   ada/switch.o	\
!  ada/system.o	\
   ada/table.o	\
   ada/targparm.o	\
   ada/tbuild.o	\
--- 466,472 ----
   ada/stylesw.o	\
   ada/switch-c.o	\
   ada/switch.o	\
!  ada/libgnat/system.o	\
   ada/table.o	\
   ada/targparm.o	\
   ada/tbuild.o	\
*************** GNAT1_ADA_OBJS = $(GNAT_ADA_OBJS) ada/ba
*** 460,470 ****
  GNAT1_OBJS = $(GNAT1_C_OBJS) $(GNAT1_ADA_OBJS) ada/b_gnat1.o
  
  GNATBIND_OBJS = \
!  ada/a-clrefi.o   \
!  ada/a-comlin.o   \
!  ada/a-elchha.o   \
!  ada/a-except.o   \
!  ada/ada.o        \
   ada/adaint.o     \
   ada/ali-util.o   \
   ada/ali.o        \
--- 491,499 ----
  GNAT1_OBJS = $(GNAT1_C_OBJS) $(GNAT1_ADA_OBJS) ada/b_gnat1.o
  
  GNATBIND_OBJS = \
!  ada/libgnat/a-elchha.o   \
!  ada/libgnat/a-except.o   \
!  ada/libgnat/ada.o        \
   ada/adaint.o     \
   ada/ali-util.o   \
   ada/ali.o        \
*************** GNATBIND_OBJS = \
*** 494,509 ****
   ada/fmap.o       \
   ada/fname-uf.o   \
   ada/fname.o      \
!  ada/g-byorma.o   \
!  ada/g-hesora.o   \
!  ada/g-htable.o   \
!  ada/gnat.o       \
   ada/gnatbind.o   \
   ada/gnatvsn.o    \
   ada/hostparm.o   \
   ada/init.o       \
   ada/initialize.o \
!  ada/interfac.o   \
   ada/krunch.o     \
   ada/lib.o        \
   ada/link.o       \
--- 523,538 ----
   ada/fmap.o       \
   ada/fname-uf.o   \
   ada/fname.o      \
!  ada/libgnat/g-byorma.o   \
!  ada/libgnat/g-hesora.o   \
!  ada/libgnat/g-htable.o   \
!  ada/libgnat/gnat.o       \
   ada/gnatbind.o   \
   ada/gnatvsn.o    \
   ada/hostparm.o   \
   ada/init.o       \
   ada/initialize.o \
!  ada/libgnat/interfac.o   \
   ada/krunch.o     \
   ada/lib.o        \
   ada/link.o       \
*************** GNATBIND_OBJS = \
*** 514,565 ****
   ada/osint.o      \
   ada/output.o     \
   ada/raise.o      \
   ada/restrict.o   \
   ada/rident.o     \
   ada/rtfinal.o    \
   ada/rtinit.o     \
!  ada/s-addope.o   \
!  ada/s-assert.o   \
!  ada/s-carun8.o   \
!  ada/s-casuti.o   \
!  ada/s-conca2.o   \
!  ada/s-conca3.o   \
!  ada/s-conca4.o   \
!  ada/s-conca5.o   \
!  ada/s-conca6.o   \
!  ada/s-conca7.o   \
!  ada/s-conca8.o   \
!  ada/s-conca9.o   \
!  ada/s-crc32.o    \
!  ada/s-crtl.o     \
!  ada/s-excdeb.o   \
!  ada/s-except.o   \
!  ada/s-exctab.o   \
!  ada/s-htable.o   \
!  ada/s-imenne.o   \
!  ada/s-imgenu.o   \
!  ada/s-mastop.o   \
!  ada/s-memory.o   \
!  ada/s-os_lib.o   \
!  ada/s-parame.o   \
!  ada/s-restri.o   \
!  ada/s-secsta.o   \
!  ada/s-soflin.o   \
!  ada/s-sopco3.o   \
!  ada/s-sopco4.o   \
!  ada/s-sopco5.o   \
!  ada/s-stache.o   \
!  ada/s-stalib.o   \
!  ada/s-stoele.o   \
!  ada/s-strhas.o   \
!  ada/s-string.o   \
!  ada/s-strops.o   \
!  ada/s-traent.o   \
!  ada/s-unstyp.o   \
!  ada/s-utf_32.o   \
!  ada/s-wchcnv.o   \
!  ada/s-wchcon.o   \
!  ada/s-wchjis.o   \
   ada/scans.o      \
   ada/scil_ll.o    \
   ada/scng.o       \
--- 543,601 ----
   ada/osint.o      \
   ada/output.o     \
   ada/raise.o      \
+  ada/raise-gcc.o  \
   ada/restrict.o   \
   ada/rident.o     \
   ada/rtfinal.o    \
   ada/rtinit.o     \
!  ada/libgnat/s-addope.o   \
!  ada/libgnat/s-assert.o   \
!  ada/libgnat/s-carun8.o   \
!  ada/libgnat/s-casuti.o   \
!  ada/libgnat/s-conca2.o   \
!  ada/libgnat/s-conca3.o   \
!  ada/libgnat/s-conca4.o   \
!  ada/libgnat/s-conca5.o   \
!  ada/libgnat/s-conca6.o   \
!  ada/libgnat/s-conca7.o   \
!  ada/libgnat/s-conca8.o   \
!  ada/libgnat/s-conca9.o   \
!  ada/libgnat/s-crc32.o    \
!  ada/libgnat/s-crtl.o     \
!  ada/libgnat/s-excdeb.o   \
!  ada/libgnat/s-except.o   \
!  ada/libgnat/s-excmac.o   \
!  ada/libgnat/s-exctab.o   \
!  ada/libgnat/s-htable.o   \
!  ada/libgnat/s-imenne.o   \
!  ada/libgnat/s-imgenu.o   \
!  ada/libgnat/s-imgint.o   \
!  ada/libgnat/s-mastop.o   \
!  ada/libgnat/s-memory.o   \
!  ada/libgnat/s-os_lib.o   \
!  ada/libgnat/s-parame.o   \
!  ada/libgnat/s-resfil.o   \
!  ada/libgnat/s-restri.o   \
!  ada/libgnat/s-secsta.o   \
!  ada/libgnat/s-soflin.o   \
!  ada/libgnat/s-soliin.o   \
!  ada/libgnat/s-sopco3.o   \
!  ada/libgnat/s-sopco4.o   \
!  ada/libgnat/s-sopco5.o   \
!  ada/libgnat/s-stache.o   \
!  ada/libgnat/s-stalib.o   \
!  ada/libgnat/s-stoele.o   \
!  ada/libgnat/s-strhas.o   \
!  ada/libgnat/s-string.o   \
!  ada/libgnat/s-strops.o   \
!  ada/libgnat/s-traent.o   \
!  ada/libgnat/s-traceb.o   \
!  ada/libgnat/s-unstyp.o   \
!  ada/libgnat/s-utf_32.o   \
!  ada/libgnat/s-wchcnv.o   \
!  ada/libgnat/s-wchcon.o   \
!  ada/libgnat/s-wchjis.o   \
!  ada/libgnat/s-wchstw.o   \
   ada/scans.o      \
   ada/scil_ll.o    \
   ada/scng.o       \
*************** GNATBIND_OBJS = \
*** 577,583 ****
   ada/stylesw.o    \
   ada/switch-b.o   \
   ada/switch.o     \
!  ada/system.o     \
   ada/table.o      \
   ada/targext.o    \
   ada/targparm.o   \
--- 613,619 ----
   ada/stylesw.o    \
   ada/switch-b.o   \
   ada/switch.o     \
!  ada/libgnat/system.o     \
   ada/table.o      \
   ada/targext.o    \
   ada/targparm.o   \
*************** ADA_BACKEND = $(BACKEND) attribs.o
*** 594,599 ****
--- 630,655 ----
  # List of target dependent sources, overridden below as necessary
  TARGET_ADA_SRCS =
  
+ # Select the right s-excmac according to exception layout (Itanium or arm)
+ host_cpu=$(word 1, $(subst -, ,$(host)))
+ EH_MECHANISM=gcc
+ ifeq ($(strip $(filter-out arm%,$(host_cpu))),)
+ EH_MECHANISM=arm
+ endif
+ 
+ # For unwind-pe.h
+ CFLAGS-ada/raise-gcc.o += -I$(srcdir)/../libgcc -DEH_MECHANISM_$(EH_MECHANISM)
+ 
+ ada/libgnat/s-excmac.o: ada/libgnat/s-excmac.ads ada/libgnat/s-excmac.adb
+ 
+ ada/libgnat/s-excmac.ads: $(srcdir)/ada/libgnat/s-excmac__$(EH_MECHANISM).ads
+ 	mkdir -p ada/libgnat
+ 	$(CP) $< $@
+ 
+ ada/libgnat/s-excmac.adb: $(srcdir)/ada/libgnat/s-excmac__$(EH_MECHANISM).adb
+ 	mkdir -p ada/libgnat
+ 	$(CP) $< $@
+ 
  # Needs to be built with CC=gcc
  # Since the RTL should be built with the latest compiler, remove the
  #  stamp target in the parent directory whenever gnat1 is rebuilt
*************** ada.uninstall:
*** 809,817 ****
--- 865,875 ----
  
  ada.mostlyclean:
  	-$(RM) ada/*$(objext) ada/*.ali ada/b_gnat*.ads ada/b_gnat*.adb
+ 	-$(RM) ada/*$(objext).gnatd.n
  	-$(RM) ada/*$(coverageexts)
  	-$(RM) ada/sdefault.adb ada/stamp-sdefault ada/stamp-snames
  	-$(RMDIR) ada/tools
+ 	-$(RMDIR) ada/libgnat
  	-$(RM) gnatbind$(exeext) gnat1$(exeext)
  ada.clean:
  ada.distclean:
*************** ada/b_gnat1.o : ada/b_gnat1.adb
*** 947,962 ****
          # Do not use ADAFLAGS to get rid of -gnatg which generates a lot
          # of style messages.
  	$(CC) -c $(CFLAGS) $(ADA_CFLAGS) -gnatp -gnatws $(ADA_INCLUDES) \
! 	    $< $(OUTPUT_OPTION)
  
! ada/b_gnatb.adb : $(GNATBIND_OBJS) ada/gnatbind.o ada/interfac.o
          # Old gnatbind do not allow a path for -o.
  	$(GNATBIND) $(ADA_INCLUDES) -o b_gnatb.adb ada/gnatbind.ali
  	$(MV) b_gnatb.adb b_gnatb.ads ada/
  
  ada/b_gnatb.o : ada/b_gnatb.adb
  	$(CC) -c $(CFLAGS) $(ADA_CFLAGS) -gnatp -gnatws $(ADA_INCLUDES) \
! 	    $< $(OUTPUT_OPTION)
  
  include $(srcdir)/ada/Make-generated.in
  
--- 1005,1020 ----
          # Do not use ADAFLAGS to get rid of -gnatg which generates a lot
          # of style messages.
  	$(CC) -c $(CFLAGS) $(ADA_CFLAGS) -gnatp -gnatws $(ADA_INCLUDES) \
! 	    $< $(ADA_OUTPUT_OPTION)
  
! ada/b_gnatb.adb : $(GNATBIND_OBJS) ada/gnatbind.o ada/libgnat/interfac.o
          # Old gnatbind do not allow a path for -o.
  	$(GNATBIND) $(ADA_INCLUDES) -o b_gnatb.adb ada/gnatbind.ali
  	$(MV) b_gnatb.adb b_gnatb.ads ada/
  
  ada/b_gnatb.o : ada/b_gnatb.adb
  	$(CC) -c $(CFLAGS) $(ADA_CFLAGS) -gnatp -gnatws $(ADA_INCLUDES) \
! 	    $< $(ADA_OUTPUT_OPTION)
  
  include $(srcdir)/ada/Make-generated.in
  
*************** update-sources : ada/treeprs.ads ada/ein
*** 965,999 ****
  	$(RM) $(addprefix $(srcdir)/ada/,$(notdir $^))
  	$(CP) $^ $(srcdir)/ada
  
! ada/sdefault.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
!    ada/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/hostparm.ads ada/namet.ads \
     ada/opt.ads ada/osint.ads ada/output.ads ada/sdefault.ads ada/sdefault.adb \
!    ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
!    ada/s-stalib.ads ada/s-strops.ads ada/s-sopco3.ads ada/s-sopco4.ads \
!    ada/s-sopco5.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
!    ada/s-wchcon.ads ada/system.ads ada/table.adb ada/table.ads ada/tree_io.ads \
!    ada/types.ads ada/unchdeal.ads ada/unchconv.ads
  
  # Special flags - see gcc-interface/Makefile.in for the template.
  
! ada/a-except.o  : ada/a-except.adb ada/a-except.ads
  	$(CC) -c $(ALL_ADAFLAGS) $(FORCE_DEBUG_ADAFLAGS) -O1 -fno-inline \
! 	 $(ADA_INCLUDES) $< $(OUTPUT_OPTION)
  	@$(ADA_DEPS)
  
! ada/s-excdeb.o  : ada/s-excdeb.adb ada/s-excdeb.ads
  	$(CC) -c $(ALL_ADAFLAGS) $(FORCE_DEBUG_ADAFLAGS) -O0 \
! 	 $(ADA_INCLUDES) $< $(OUTPUT_OPTION)
  	@$(ADA_DEPS)
  
! ada/s-assert.o  : ada/s-assert.adb ada/s-assert.ads
  	$(CC) -c $(ALL_ADAFLAGS) $(FORCE_DEBUG_ADAFLAGS) $(ADA_INCLUDES) \
! 	  $< $(OUTPUT_OPTION)
  	@$(ADA_DEPS)
  
! ada/a-tags.o  : ada/a-tags.adb ada/a-tags.ads
  	$(CC) -c $(ALL_ADAFLAGS) $(FORCE_DEBUG_ADAFLAGS) $(ADA_INCLUDES) \
! 	  $< $(OUTPUT_OPTION)
  	@$(ADA_DEPS)
  
  # Handling of gnatvsn version string
--- 1023,1057 ----
  	$(RM) $(addprefix $(srcdir)/ada/,$(notdir $^))
  	$(CP) $^ $(srcdir)/ada
  
! ada/sdefault.o : ada/libgnat/ada.ads ada/libgnat/a-except.ads ada/libgnat/a-unccon.ads \
!    ada/libgnat/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/hostparm.ads ada/namet.ads \
     ada/opt.ads ada/osint.ads ada/output.ads ada/sdefault.ads ada/sdefault.adb \
!    ada/libgnat/s-exctab.ads ada/libgnat/s-memory.ads ada/libgnat/s-os_lib.ads ada/libgnat/s-parame.ads \
!    ada/libgnat/s-stalib.ads ada/libgnat/s-strops.ads ada/libgnat/s-sopco3.ads ada/libgnat/s-sopco4.ads \
!    ada/libgnat/s-sopco5.ads ada/libgnat/s-string.ads ada/libgnat/s-traent.ads ada/libgnat/s-unstyp.ads \
!    ada/libgnat/s-wchcon.ads ada/libgnat/system.ads ada/table.adb ada/table.ads ada/tree_io.ads \
!    ada/types.ads ada/libgnat/unchdeal.ads ada/libgnat/unchconv.ads
  
  # Special flags - see gcc-interface/Makefile.in for the template.
  
! ada/libgnat/a-except.o : ada/libgnat/a-except.adb ada/libgnat/a-except.ads ada/libgnat/s-excmac.ads ada/libgnat/s-excmac.adb
  	$(CC) -c $(ALL_ADAFLAGS) $(FORCE_DEBUG_ADAFLAGS) -O1 -fno-inline \
! 	 $(ADA_INCLUDES) $< $(ADA_OUTPUT_OPTION)
  	@$(ADA_DEPS)
  
! ada/libgnat/s-excdeb.o : ada/libgnat/s-excdeb.adb ada/libgnat/s-excdeb.ads
  	$(CC) -c $(ALL_ADAFLAGS) $(FORCE_DEBUG_ADAFLAGS) -O0 \
! 	 $(ADA_INCLUDES) $< $(ADA_OUTPUT_OPTION)
  	@$(ADA_DEPS)
  
! ada/libgnat/s-assert.o  : ada/libgnat/s-assert.adb ada/libgnat/s-assert.ads
  	$(CC) -c $(ALL_ADAFLAGS) $(FORCE_DEBUG_ADAFLAGS) $(ADA_INCLUDES) \
! 	  $< $(ADA_OUTPUT_OPTION)
  	@$(ADA_DEPS)
  
! ada/libgnat/a-tags.o  : ada/libgnat/a-tags.adb ada/libgnat/a-tags.ads
  	$(CC) -c $(ALL_ADAFLAGS) $(FORCE_DEBUG_ADAFLAGS) $(ADA_INCLUDES) \
! 	  $< $(ADA_OUTPUT_OPTION)
  	@$(ADA_DEPS)
  
  # Handling of gnatvsn version string
*************** ada/generated/gnatvsn.ads: ada/gnatvsn.a
*** 1011,1029 ****
  	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) -Iada/generated -I../ada/generated $(ADA_INCLUDES) $< $(OUTPUT_OPTION)
  	@$(ADA_DEPS)
  
  # Dependencies for windows specific tool (mdll)
  
  ada/mdll.o : ada/mdll.adb ada/mdll.ads ada/mdll-fil.ads ada/mdll-utl.ads
! 	$(CC) -c $(ALL_ADAFLAGS) $(ADA_INCLUDES) $< $(OUTPUT_OPTION)
  
  ada/mdll-fil.o : ada/mdll-fil.adb ada/mdll.ads ada/mdll-fil.ads
! 	$(CC) -c $(ALL_ADAFLAGS) $(ADA_INCLUDES) $< $(OUTPUT_OPTION)
  
  ada/mdll-utl.o : ada/mdll-utl.adb ada/mdll.ads ada/mdll-utl.ads ada/sdefault.ads ada/types.ads
! 	$(CC) -c $(ALL_ADAFLAGS) $(ADA_INCLUDES) $< $(OUTPUT_OPTION)
  
  ada_generated_files = ada/sinfo.h ada/einfo.h ada/nmake.adb ada/nmake.ads \
  		      ada/treeprs.ads ada/snames.ads ada/snames.adb ada/snames.h \
--- 1069,1087 ----
  	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) -Iada/generated -I../ada/generated $(ADA_INCLUDES) $< $(ADA_OUTPUT_OPTION)
  	@$(ADA_DEPS)
  
  # Dependencies for windows specific tool (mdll)
  
  ada/mdll.o : ada/mdll.adb ada/mdll.ads ada/mdll-fil.ads ada/mdll-utl.ads
! 	$(CC) -c $(ALL_ADAFLAGS) $(ADA_INCLUDES) $< $(ADA_OUTPUT_OPTION)
  
  ada/mdll-fil.o : ada/mdll-fil.adb ada/mdll.ads ada/mdll-fil.ads
! 	$(CC) -c $(ALL_ADAFLAGS) $(ADA_INCLUDES) $< $(ADA_OUTPUT_OPTION)
  
  ada/mdll-utl.o : ada/mdll-utl.adb ada/mdll.ads ada/mdll-utl.ads ada/sdefault.ads ada/types.ads
! 	$(CC) -c $(ALL_ADAFLAGS) $(ADA_INCLUDES) $< $(ADA_OUTPUT_OPTION)
  
  ada_generated_files = ada/sinfo.h ada/einfo.h ada/nmake.adb ada/nmake.ads \
  		      ada/treeprs.ads ada/snames.ads ada/snames.adb ada/snames.h \
diff -Nrcpad gcc-7.3.0/gcc/ada/gcc-interface/Makefile.in gcc-8.1.0/gcc/ada/gcc-interface/Makefile.in
*** gcc-7.3.0/gcc/ada/gcc-interface/Makefile.in	Mon Dec  4 13:41:46 2017
--- gcc-8.1.0/gcc/ada/gcc-interface/Makefile.in	Wed Mar  7 12:10:24 2018
***************
*** 1,5 ****
  # Makefile for GNU Ada Compiler (GNAT).
! #   Copyright (C) 1994-2016 Free Software Foundation, Inc.
  
  #This file is part of GCC.
  
--- 1,5 ----
  # Makefile for GNU Ada Compiler (GNAT).
! #   Copyright (C) 1994-2017 Free Software Foundation, Inc.
  
  #This file is part of GCC.
  
*************** GNATMAKE_OBJS = a-except.o ali.o ali-uti
*** 322,335 ****
   atree.o binderr.o butil.o casing.o csets.o debug.o elists.o einfo.o errout.o \
   erroutc.o errutil.o err_vars.o fmap.o fname.o fname-uf.o fname-sf.o \
   gnatmake.o gnatvsn.o hostparm.o interfac.o i-c.o i-cstrin.o krunch.o lib.o \
!  make.o makeusg.o makeutl.o mlib.o mlib-fil.o mlib-prj.o mlib-tgt.o \
!  mlib-tgt-specific.o mlib-utl.o namet.o nlists.o opt.o osint.o osint-m.o \
!  output.o prj.o prj-attr.o prj-attr-pm.o prj-com.o prj-dect.o prj-env.o \
!  prj-conf.o prj-pp.o prj-err.o prj-ext.o prj-nmsc.o prj-pars.o prj-part.o \
!  prj-proc.o prj-strt.o prj-tree.o prj-util.o restrict.o rident.o s-exctab.o \
   s-secsta.o s-stalib.o s-stoele.o scans.o scng.o sdefault.o sfn_scan.o \
   s-purexc.o s-htable.o scil_ll.o sem_aux.o sinfo.o sinput.o sinput-c.o \
!  sinput-p.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 tree_io.o types.o uintp.o \
   uname.o urealp.o usage.o widechar.o \
   $(EXTRA_GNATMAKE_OBJS)
--- 322,332 ----
   atree.o binderr.o butil.o casing.o csets.o debug.o elists.o einfo.o errout.o \
   erroutc.o errutil.o err_vars.o fmap.o fname.o fname-uf.o fname-sf.o \
   gnatmake.o gnatvsn.o hostparm.o interfac.o i-c.o i-cstrin.o krunch.o lib.o \
!  make.o makeusg.o make_util.o namet.o nlists.o opt.o osint.o osint-m.o \
!  output.o restrict.o rident.o s-exctab.o \
   s-secsta.o s-stalib.o s-stoele.o scans.o scng.o sdefault.o sfn_scan.o \
   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 tree_io.o types.o uintp.o \
   uname.o urealp.o usage.o widechar.o \
   $(EXTRA_GNATMAKE_OBJS)
*************** endif
*** 358,370 ****
  # Non-tasking case:
  
  LIBGNAT_TARGET_PAIRS = \
! a-intnam.ads<a-intnam-dummy.ads \
! s-inmaop.adb<s-inmaop-dummy.adb \
! s-intman.adb<s-intman-dummy.adb \
! s-osinte.ads<s-osinte-dummy.ads \
! s-osprim.adb<s-osprim-posix.adb \
! s-taprop.adb<s-taprop-dummy.adb \
! s-taspri.ads<s-taspri-dummy.ads
  
  # When using the GCC exception handling mechanism, we need to use an
  # alternate body for a-exexpr.adb (a-exexpr-gcc.adb)
--- 355,367 ----
  # Non-tasking case:
  
  LIBGNAT_TARGET_PAIRS = \
! a-intnam.ads<libgnarl/a-intnam__dummy.ads \
! s-inmaop.adb<libgnarl/s-inmaop__dummy.adb \
! s-intman.adb<libgnarl/s-intman__dummy.adb \
! s-osinte.ads<libgnarl/s-osinte__dummy.ads \
! s-osprim.adb<libgnat/s-osprim__posix.adb \
! s-taprop.adb<libgnarl/s-taprop__dummy.adb \
! s-taspri.ads<libgnarl/s-taspri__dummy.ads
  
  # When using the GCC exception handling mechanism, we need to use an
  # alternate body for a-exexpr.adb (a-exexpr-gcc.adb)
*************** SO_OPTS = -Wl,-soname,
*** 383,391 ****
  # target when supported.
  GNATLIB_SHARED = gnatlib
  
- # default value for gnatmake's target dependent file
- MLIB_TGT = mlib-tgt
- 
  # By default, build socket support units. On platforms that do not support
  # sockets, reset this variable to empty and add DUMMY_SOCKETS_TARGET_PAIRS
  # to LIBGNAT_TARGET_PAIRS.
--- 380,385 ----
*************** GNATRTL_SOCKETS_OBJS = g-soccon$(objext)
*** 394,439 ****
    g-soliop$(objext) g-sothco$(objext)
  
  DUMMY_SOCKETS_TARGET_PAIRS = \
!   g-socket.adb<g-socket-dummy.adb \
!   g-socket.ads<g-socket-dummy.ads \
!   g-socthi.adb<g-socthi-dummy.adb \
!   g-socthi.ads<g-socthi-dummy.ads \
!   g-sothco.adb<g-sothco-dummy.adb \
!   g-sothco.ads<g-sothco-dummy.ads
  
  # On platforms where atomic increment/decrement operations are supported,
  # special version of Ada.Strings.Unbounded package can be used.
  
  ATOMICS_TARGET_PAIRS = \
!   a-coinho.adb<a-coinho-shared.adb \
!   a-coinho.ads<a-coinho-shared.ads \
!   a-stunau.adb<a-stunau-shared.adb \
!   a-suteio.adb<a-suteio-shared.adb \
!   a-strunb.ads<a-strunb-shared.ads \
!   a-strunb.adb<a-strunb-shared.adb \
!   a-stwiun.adb<a-stwiun-shared.adb \
!   a-stwiun.ads<a-stwiun-shared.ads \
!   a-swunau.adb<a-swunau-shared.adb \
!   a-swuwti.adb<a-swuwti-shared.adb \
!   a-stzunb.adb<a-stzunb-shared.adb \
!   a-stzunb.ads<a-stzunb-shared.ads \
!   a-szunau.adb<a-szunau-shared.adb \
!   a-szuzti.adb<a-szuzti-shared.adb
  
  ATOMICS_BUILTINS_TARGET_PAIRS = \
!   s-atocou.adb<s-atocou-builtin.adb
  
  # Special version of units for x86 and x86-64 platforms.
  
  X86_TARGET_PAIRS = \
!   a-numaux.ads<a-numaux-x86.ads \
!   a-numaux.adb<a-numaux-x86.adb \
!   s-atocou.adb<s-atocou-x86.adb
  
  X86_64_TARGET_PAIRS = \
!   a-numaux.ads<a-numaux-x86.ads \
!   a-numaux.adb<a-numaux-x86.adb \
!   s-atocou.adb<s-atocou-builtin.adb
  
  # Shared library version
  LIB_VERSION = $(strip $(shell grep ' Library_Version :' $(fsrcpfx)ada/gnatvsn.ads | sed -e 's/.*"\(.*\)".*/\1/'))
--- 388,452 ----
    g-soliop$(objext) g-sothco$(objext)
  
  DUMMY_SOCKETS_TARGET_PAIRS = \
!   g-socket.adb<libgnat/g-socket__dummy.adb \
!   g-socket.ads<libgnat/g-socket__dummy.ads \
!   g-socthi.adb<libgnat/g-socthi__dummy.adb \
!   g-socthi.ads<libgnat/g-socthi__dummy.ads \
!   g-sothco.adb<libgnat/g-sothco__dummy.adb \
!   g-sothco.ads<libgnat/g-sothco__dummy.ads
  
  # On platforms where atomic increment/decrement operations are supported,
  # special version of Ada.Strings.Unbounded package can be used.
  
  ATOMICS_TARGET_PAIRS = \
!   a-coinho.adb<libgnat/a-coinho__shared.adb \
!   a-coinho.ads<libgnat/a-coinho__shared.ads \
!   a-stunau.adb<libgnat/a-stunau__shared.adb \
!   a-suteio.adb<libgnat/a-suteio__shared.adb \
!   a-strunb.ads<libgnat/a-strunb__shared.ads \
!   a-strunb.adb<libgnat/a-strunb__shared.adb \
!   a-stwiun.adb<libgnat/a-stwiun__shared.adb \
!   a-stwiun.ads<libgnat/a-stwiun__shared.ads \
!   a-swunau.adb<libgnat/a-swunau__shared.adb \
!   a-swuwti.adb<libgnat/a-swuwti__shared.adb \
!   a-stzunb.adb<libgnat/a-stzunb__shared.adb \
!   a-stzunb.ads<libgnat/a-stzunb__shared.ads \
!   a-szunau.adb<libgnat/a-szunau__shared.adb \
!   a-szuzti.adb<libgnat/a-szuzti__shared.adb
  
  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-numaux.ads<libgnat/a-numaux__x86.ads \
!   a-numaux.adb<libgnat/a-numaux__x86.adb \
!   s-atocou.adb<libgnat/s-atocou__x86.adb
  
  X86_64_TARGET_PAIRS = \
!   a-numaux.ads<libgnat/a-numaux__x86.ads \
!   a-numaux.adb<libgnat/a-numaux__x86.adb \
!   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 \
!   s-mmosin.adb<libgnat/s-mmosin__unix.adb \
!   s-mmauni.ads<libgnat/s-mmauni__long.ads
! 
! TRASYM_DWARF_MINGW_PAIRS = \
!   s-trasym.adb<libgnat/s-trasym__dwarf.adb \
!   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)
  
  # Shared library version
  LIB_VERSION = $(strip $(shell grep ' Library_Version :' $(fsrcpfx)ada/gnatvsn.ads | sed -e 's/.*"\(.*\)".*/\1/'))
*************** GCC_SPEC_FILES=
*** 469,524 ****
  # $(strip STRING) removes leading and trailing spaces from STRING.
  # If what's left is null then it's a match.
  
- # m68k VxWorks
- ifeq ($(strip $(filter-out m68k% wrs vx%,$(target_cpu) $(target_vendor) $(target_os))),)
-   LIBGNAT_TARGET_PAIRS = \
-   a-intnam.ads<a-intnam-vxworks.ads \
-   a-numaux.ads<a-numaux-vxworks.ads \
-   s-inmaop.adb<s-inmaop-vxworks.adb \
-   s-interr.adb<s-interr-vxworks.adb \
-   s-intman.ads<s-intman-vxworks.ads \
-   s-intman.adb<s-intman-vxworks.adb \
-   s-osinte.adb<s-osinte-vxworks.adb \
-   s-osinte.ads<s-osinte-vxworks.ads \
-   s-osprim.adb<s-osprim-vxworks.adb \
-   s-parame.ads<s-parame-vxworks.ads \
-   s-parame.adb<s-parame-vxworks.adb \
-   s-stchop.ads<s-stchop-limit.ads \
-   s-stchop.adb<s-stchop-vxworks.adb \
-   s-taprop.adb<s-taprop-vxworks.adb \
-   s-tasinf.ads<s-tasinf-vxworks.ads \
-   s-taspri.ads<s-taspri-vxworks.ads \
-   s-tpopsp.adb<s-tpopsp-vxworks.adb \
-   s-vxwork.ads<s-vxwork-m68k.ads \
-   g-socthi.ads<g-socthi-vxworks.ads \
-   g-socthi.adb<g-socthi-vxworks.adb \
-   g-stsifd.adb<g-stsifd-sockets.adb \
-   system.ads<system-vxworks-m68k.ads
- 
-   TOOLS_TARGET_PAIRS=mlib-tgt-specific.adb<mlib-tgt-specific-vxworks.adb
- 
-   EXTRA_GNATRTL_NONTASKING_OBJS=i-vxwork.o i-vxwoio.o s-stchop.o
-   EXTRA_GNATRTL_TASKING_OBJS=i-vxinco.o s-vxwork.o s-vxwext.o
- 
-   EXTRA_LIBGNAT_OBJS+=vx_stack_info.o
- 
-   ifeq ($(strip $(filter-out yes,$(TRACE))),)
-     LIBGNAT_TARGET_PAIRS += \
-     s-traces.adb<s-traces-default.adb \
-     s-tratas.adb<s-tratas-default.adb \
-     s-trafor.adb<s-trafor-default.adb \
-     s-trafor.ads<s-trafor-default.ads \
-     s-tfsetr.adb<s-tfsetr-vxworks.adb
-   endif
- endif
- 
  # 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
    else
!      ARCH_STR=ppc
    endif
  
    ifeq ($(strip $(filter-out vxworks7%, $(target_os))),)
--- 482,502 ----
  # $(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
  
    ifeq ($(strip $(filter-out vxworks7%, $(target_os))),)
*************** ifeq ($(strip $(filter-out powerpc% wrs
*** 528,550 ****
    endif
  
    LIBGNAT_TARGET_PAIRS = \
!   a-intnam.ads<a-intnam-vxworks.ads \
!   a-numaux.ads<a-numaux-vxworks.ads \
!   s-inmaop.adb<s-inmaop-vxworks.adb \
!   s-intman.ads<s-intman-vxworks.ads \
!   s-intman.adb<s-intman-vxworks.adb \
!   s-osinte.ads<s-osinte-vxworks.ads \
!   s-osinte.adb<s-osinte-vxworks.adb \
!   s-osprim.adb<s-osprim-vxworks.adb \
!   s-parame.ads<s-parame-vxworks.ads \
!   s-parame.adb<s-parame-vxworks.adb \
!   s-taprop.adb<s-taprop-vxworks.adb \
!   s-tasinf.ads<s-tasinf-vxworks.ads \
!   s-taspri.ads<s-taspri-vxworks.ads \
!   s-vxwork.ads<s-vxwork-ppc.ads \
!   g-socthi.ads<g-socthi-vxworks.ads \
!   g-socthi.adb<g-socthi-vxworks.adb \
!   g-stsifd.adb<g-stsifd-sockets.adb \
    $(ATOMICS_TARGET_PAIRS) \
    $(ATOMICS_BUILTINS_TARGET_PAIRS)
  
--- 506,528 ----
    endif
  
    LIBGNAT_TARGET_PAIRS = \
!   a-intnam.ads<libgnarl/a-intnam__vxworks.ads \
!   a-numaux.ads<libgnat/a-numaux__vxworks.ads \
!   s-inmaop.adb<libgnarl/s-inmaop__vxworks.adb \
!   s-intman.ads<libgnarl/s-intman__vxworks.ads \
!   s-intman.adb<libgnarl/s-intman__vxworks.adb \
!   s-osinte.ads<libgnarl/s-osinte__vxworks.ads \
!   s-osinte.adb<libgnarl/s-osinte__vxworks.adb \
!   s-osprim.adb<libgnat/s-osprim__vxworks.adb \
!   s-parame.ads<libgnat/s-parame__vxworks.ads \
!   s-parame.adb<libgnat/s-parame__vxworks.adb \
!   s-taprop.adb<libgnarl/s-taprop__vxworks.adb \
!   s-tasinf.ads<libgnarl/s-tasinf__vxworks.ads \
!   s-taspri.ads<libgnarl/s-taspri__vxworks.ads \
!   s-vxwork.ads<libgnarl/s-vxwork__ppc.ads \
!   g-socthi.ads<libgnat/g-socthi__vxworks.ads \
!   g-socthi.adb<libgnat/g-socthi__vxworks.adb \
!   g-stsifd.adb<libgnat/g-stsifd__sockets.adb \
    $(ATOMICS_TARGET_PAIRS) \
    $(ATOMICS_BUILTINS_TARGET_PAIRS)
  
*************** ifeq ($(strip $(filter-out powerpc% wrs
*** 557,629 ****
  
    ifeq ($(strip $(filter-out default,$(THREAD_KIND))),)
      LIBGNAT_TARGET_PAIRS += \
!       s-stchop.ads<s-stchop-limit.ads \
!       s-stchop.adb<s-stchop-vxworks.adb
      EXTRA_GNATRTL_NONTASKING_OBJS+=s-stchop.o
    endif
  
!   TOOLS_TARGET_PAIRS=\
!   mlib-tgt-specific.adb<mlib-tgt-specific-vxworks.adb \
!   indepsw.adb<indepsw-gnu.adb
! 
!   ifeq ($(strip $(filter-out yes,$(TRACE))),)
!     LIBGNAT_TARGET_PAIRS += \
!     s-traces.adb<s-traces-default.adb \
!     s-trafor.adb<s-trafor-default.adb \
!     s-trafor.ads<s-trafor-default.ads \
!     s-tratas.adb<s-tratas-default.adb \
!     s-tfsetr.adb<s-tfsetr-vxworks.adb
!   endif
  
    ifeq ($(strip $(filter-out rtp,$(THREAD_KIND))),)
      LIBGNAT_TARGET_PAIRS += \
!     s-vxwext.ads<s-vxwext-rtp.ads \
!     s-vxwext.adb<s-vxwext-rtp.adb \
!     s-tpopsp.adb<s-tpopsp-vxworks-rtp.adb \
!     system.ads<system-vxworks-$(ARCH_STR)-rtp.ads
  
      EH_MECHANISM=-gcc
    else
      ifeq ($(strip $(filter-out rtp-smp,$(THREAD_KIND))),)
        LIBGNAT_TARGET_PAIRS += \
!       s-mudido.adb<s-mudido-affinity.adb \
!       s-vxwext.ads<s-vxwext-rtp.ads \
!       s-vxwext.adb<s-vxwext-rtp-smp.adb \
!       s-tpopsp.adb<s-tpopsp-vxworks-tls.adb \
!       system.ads<$(SVX)-$(ARCH_STR)-rtp-smp.ads
  
        EH_MECHANISM=-gcc
        EXTRA_LIBGNAT_OBJS+=affinity.o
      else
        ifeq ($(strip $(filter-out kernel-smp,$(THREAD_KIND))),)
          LIBGNAT_TARGET_PAIRS += \
!         s-interr.adb<s-interr-vxworks.adb \
!         s-mudido.adb<s-mudido-affinity.adb \
!         s-tpopsp.adb<s-tpopsp-vxworks-tls.adb \
!         s-vxwext.ads<s-vxwext-kernel.ads \
!         s-vxwext.adb<s-vxwext-kernel-smp.adb \
!         system.ads<system-vxworks-$(ARCH_STR)-kernel.ads
  
          EH_MECHANISM=-gcc
          EXTRA_LIBGNAT_OBJS+=affinity.o
        else
          LIBGNAT_TARGET_PAIRS += \
!         s-interr.adb<s-interr-vxworks.adb \
!         s-tpopsp.adb<s-tpopsp-vxworks.adb
  
          ifeq ($(strip $(filter-out kernel,$(THREAD_KIND))),)
            EH_MECHANISM=-gcc
            LIBGNAT_TARGET_PAIRS += \
!           s-vxwext.ads<s-vxwext-kernel.ads \
!           s-vxwext.adb<s-vxwext-kernel.adb \
!           system.ads<system-vxworks-$(ARCH_STR)-kernel.ads
          else
            LIBGNAT_TARGET_PAIRS += \
!           system.ads<system-vxworks-ppc.ads
          endif
        endif
!       EXTRA_GNATRTL_NONTASKING_OBJS=i-vxinco.o i-vxwork.o i-vxwoio.o
!       EXTRA_GNATRTL_TASKING_OBJS=s-vxwork.o s-vxwext.o
      endif
    endif
  
--- 535,595 ----
  
    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
  
!   TOOLS_TARGET_PAIRS=indepsw.adb<indepsw-gnu.adb
  
    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/system-vxworks-$(ARCH_STR)-rtp.ads
  
      EH_MECHANISM=-gcc
    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)-$(ARCH_STR)-rtp-smp.ads
  
        EH_MECHANISM=-gcc
        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-vxworks-$(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/system-vxworks-$(ARCH_STR)-kernel.ads
          else
            LIBGNAT_TARGET_PAIRS += \
!           system.ads<libgnat/system-vxworks-ppc.ads
          endif
        endif
!       EXTRA_GNATRTL_NONTASKING_OBJS+=i-vxinco.o i-vxwork.o i-vxwoio.o
      endif
    endif
  
*************** ifeq ($(strip $(filter-out powerpc% wrs
*** 636,642 ****
    GCC_SPEC_FILES+=vxworks-gnat-crtbe-link.spec
  
    ifeq ($(strip $(filter-out vxworks7%, $(target_os))),)
!     GCC_SPEC_FILES+=vxworks7-rtp-base-link.spec
    else
      GCC_SPEC_FILES+=vxworks-$(ARCH_STR)-link.spec
      GCC_SPEC_FILES+=vxworks-cert-$(ARCH_STR)-link.spec
--- 602,612 ----
    GCC_SPEC_FILES+=vxworks-gnat-crtbe-link.spec
  
    ifeq ($(strip $(filter-out vxworks7%, $(target_os))),)
!     ifeq ($(strip $(filter-out powerpc64, $(target_cpu))),)
!       GCC_SPEC_FILES+=vxworks7-ppc64-rtp-base-link.spec
!     else
!       GCC_SPEC_FILES+=vxworks7-rtp-base-link.spec
!     endif
    else
      GCC_SPEC_FILES+=vxworks-$(ARCH_STR)-link.spec
      GCC_SPEC_FILES+=vxworks-cert-$(ARCH_STR)-link.spec
*************** ifeq ($(strip $(filter-out powerpc% wrs
*** 644,896 ****
    endif
  endif
  
- # PowerPC and e500v2 VxWorks 653
- ifeq ($(strip $(filter-out powerpc% wrs vxworksae,$(target_cpu) $(target_vendor) $(target_os))),)
- 
-   ifeq ($(strip $(filter-out e500%, $(target_alias))),)
-      ARCH_STR=e500
-   else
-      ARCH_STR=ppc
-   endif
- 
-   # target pairs for vthreads runtime
-   LIBGNAT_TARGET_PAIRS = \
-   a-elchha.adb<a-elchha-vxworks-ppc-full.adb \
-   a-intnam.ads<a-intnam-vxworks.ads \
-   a-numaux.ads<a-numaux-vxworks.ads \
-   g-io.adb<g-io-vxworks-ppc-cert.adb \
-   s-inmaop.adb<s-inmaop-vxworks.adb \
-   s-interr.adb<s-interr-vxworks.adb \
-   s-intman.ads<s-intman-vxworks.ads \
-   s-intman.adb<s-intman-vxworks.adb \
-   s-osinte.adb<s-osinte-vxworks.adb \
-   s-osinte.ads<s-osinte-vxworks.ads \
-   s-osprim.adb<s-osprim-vxworks.adb \
-   s-parame.ads<s-parame-ae653.ads \
-   s-parame.adb<s-parame-vxworks.adb \
-   s-taprop.adb<s-taprop-vxworks.adb \
-   s-tasinf.ads<s-tasinf-vxworks.ads \
-   s-taspri.ads<s-taspri-vxworks.ads \
-   s-tpopsp.adb<s-tpopsp-vxworks.adb \
-   s-vxwext.adb<s-vxwext-noints.adb \
-   s-vxwext.ads<s-vxwext-vthreads.ads \
-   s-vxwork.ads<s-vxwork-ppc.ads \
-   system.ads<system-vxworks-$(ARCH_STR)-vthread.ads \
-   $(ATOMICS_TARGET_PAIRS) \
-   $(ATOMICS_BUILTINS_TARGET_PAIRS)
- 
-   EH_MECHANISM=-gcc
- 
-   TOOLS_TARGET_PAIRS=\
-   mlib-tgt-specific.adb<mlib-tgt-specific-vxworks.adb \
-   indepsw.adb<indepsw-gnu.adb
- 
-   EXTRA_GNATRTL_NONTASKING_OBJS=i-vxwork.o i-vxwoio.o
-   EXTRA_GNATRTL_TASKING_OBJS=i-vxinco.o s-vxwork.o s-vxwext.o
- 
-   EXTRA_LIBGNAT_OBJS+=sigtramp-vxworks.o
-   EXTRA_LIBGNAT_SRCS+=$(VX_SIGTRAMP_EXTRA_SRCS)
- 
-   # Extra pairs for the vthreads runtime
-   ifeq ($(strip $(filter-out vthreads,$(THREAD_KIND))),)
-     LIBGNAT_TARGET_PAIRS += \
-     s-thread.adb<s-thread-ae653.adb \
-     s-osvers.ads<s-osvers-vxworks-653.ads \
-     $(DUMMY_SOCKETS_TARGET_PAIRS)
- 
-     GNATRTL_SOCKETS_OBJS =
-     EXTRA_GNATRTL_NONTASKING_OBJS += s-thread.o s-osvers.o
-   else
-     LIBGNAT_TARGET_PAIRS += \
-     g-socthi.ads<g-socthi-vxworks.ads \
-     g-socthi.adb<g-socthi-vxworks.adb \
-     g-stsifd.adb<g-stsifd-sockets.adb
-   endif
- 
-   ifeq ($(strip $(filter-out yes,$(TRACE))),)
-     LIBGNAT_TARGET_PAIRS += \
-     s-traces.adb<s-traces-default.adb \
-     s-trafor.adb<s-trafor-default.adb \
-     s-trafor.ads<s-trafor-default.ads \
-     s-tratas.adb<s-tratas-default.adb \
-     s-tfsetr.adb<s-tfsetr-vxworks.adb
-   endif
- endif
- 
- # PowerPC and e500v2 VxWorks MILS
- ifeq ($(strip $(filter-out powerpc% wrs vxworksmils,$(target_cpu) $(target_vendor) $(target_os))),)
-   # target pairs for vthreads runtime
-   LIBGNAT_TARGET_PAIRS = \
-   a-elchha.adb<a-elchha-vx6-raven-cert.adb \
-   a-intnam.ads<a-intnam-vxworks.ads \
-   a-numaux.ads<a-numaux-vxworks.ads \
-   g-io.adb<g-io-vxworks-ppc-cert.adb \
-   s-inmaop.adb<s-inmaop-vxworks.adb \
-   s-interr.adb<s-interr-vxworks.adb \
-   s-intman.ads<s-intman-vxworks.ads \
-   s-intman.adb<s-intman-vxworks.adb \
-   s-osinte.adb<s-osinte-vxworks.adb \
-   s-osinte.ads<s-osinte-vxworks.ads \
-   s-osprim.adb<s-osprim-vxworks.adb \
-   s-osvers.ads<s-osvers-vxworks-mils.ads \
-   s-parame.ads<s-parame-ae653.ads \
-   s-parame.adb<s-parame-vxworks.adb \
-   s-stchop.adb<s-stchop-vxworks.adb \
-   s-stchop.ads<s-stchop-limit.ads \
-   s-taprop.adb<s-taprop-vxworks.adb \
-   s-tasinf.ads<s-tasinf-vxworks.ads \
-   s-taspri.ads<s-taspri-vxworks.ads \
-   s-thread.adb<s-thread-ae653.adb \
-   s-tpopsp.adb<s-tpopsp-vxworks.adb \
-   s-vxwork.ads<s-vxwork-ppc.ads \
-   system.ads<system-vxworks-ppc-mils.ads \
-   $(ATOMICS_TARGET_PAIRS) \
-   $(ATOMICS_BUILTINS_TARGET_PAIRS) \
-   $(DUMMY_SOCKETS_TARGET_PAIRS)
- 
-   TOOLS_TARGET_PAIRS=\
-   mlib-tgt-specific.adb<mlib-tgt-specific-vxworks.adb \
-   indepsw.adb<indepsw-gnu.adb
- 
-   EXTRA_GNATRTL_NONTASKING_OBJS=i-vxwork.o i-vxwoio.o \
-     s-thread.o s-osvers.o s-stchop.o
-   EXTRA_GNATRTL_TASKING_OBJS=i-vxinco.o s-vxwork.o s-vxwext.o
- 
-   EXTRA_LIBGNAT_OBJS+=vx_stack_info.o
- 
-   EXTRA_LIBGNAT_OBJS+=sigtramp-vxworks.o
-   EXTRA_LIBGNAT_SRCS+=$(VX_SIGTRAMP_EXTRA_SRCS)
- 
-   GNATRTL_SOCKETS_OBJS =
- 
-   ifeq ($(strip $(filter-out yes,$(TRACE))),)
-     LIBGNAT_TARGET_PAIRS += \
-     s-traces.adb<s-traces-default.adb \
-     s-trafor.adb<s-trafor-default.adb \
-     s-trafor.ads<s-trafor-default.ads \
-     s-tratas.adb<s-tratas-default.adb \
-     s-tfsetr.adb<s-tfsetr-vxworks.adb
-   endif
- endif
- 
- # VxWorksae / VxWorks 653 for x86 (vxsim) - ?? VxWorks mils not implemented
- ifeq ($(strip $(filter-out %86 wrs vxworksae,$(target_cpu) $(target_vendor) $(target_os))),)
-   # target pairs for kernel + vthreads runtime
-   LIBGNAT_TARGET_PAIRS = \
-   a-elchha.adb<a-elchha-vxworks-ppc-full.adb \
-   a-intnam.ads<a-intnam-vxworks.ads \
-   a-numaux.ads<a-numaux-vxworks.ads \
-   g-io.adb<g-io-vxworks-ppc-cert.adb \
-   s-inmaop.adb<s-inmaop-vxworks.adb \
-   s-interr.adb<s-interr-vxworks.adb \
-   s-intman.ads<s-intman-vxworks.ads \
-   s-intman.adb<s-intman-vxworks.adb \
-   s-osinte.adb<s-osinte-vxworks.adb \
-   s-osinte.ads<s-osinte-vxworks.ads \
-   s-osprim.adb<s-osprim-vxworks.adb \
-   s-parame.ads<s-parame-ae653.ads \
-   s-parame.adb<s-parame-vxworks.adb \
-   s-taprop.adb<s-taprop-vxworks.adb \
-   s-tasinf.ads<s-tasinf-vxworks.ads \
-   s-taspri.ads<s-taspri-vxworks.ads \
-   s-tpopsp.adb<s-tpopsp-vxworks.adb \
-   s-vxwext.adb<s-vxwext-noints.adb \
-   s-vxwext.ads<s-vxwext-vthreads.ads \
-   s-vxwork.ads<s-vxwork-x86.ads \
-   system.ads<system-vxworks-x86-vthread.ads \
-   $(ATOMICS_TARGET_PAIRS) \
-   $(ATOMICS_BUILTINS_TARGET_PAIRS)
- 
-   EH_MECHANISM=-gcc
- 
-   TOOLS_TARGET_PAIRS=\
-   mlib-tgt-specific.adb<mlib-tgt-specific-vxworks.adb \
-   indepsw.adb<indepsw-gnu.adb
- 
-   EXTRA_GNATRTL_NONTASKING_OBJS=i-vxwork.o i-vxwoio.o s-thread.o
-   EXTRA_GNATRTL_TASKING_OBJS=i-vxinco.o s-vxwork.o s-vxwext.o
- 
-   EXTRA_LIBGNAT_OBJS+=vx_stack_info.o
-   GNATRTL_SOCKETS_OBJS =
- 
-   # Extra pairs for the vthreads runtime
-   ifeq ($(strip $(filter-out vthreads,$(THREAD_KIND))),)
-     LIBGNAT_TARGET_PAIRS += \
-     s-thread.adb<s-thread-ae653.adb \
-     s-osvers.ads<s-osvers-vxworks-653.ads \
-     $(DUMMY_SOCKETS_TARGET_PAIRS)
- 
-     GNATRTL_SOCKETS_OBJS =
-     EXTRA_GNATRTL_NONTASKING_OBJS += s-thread.o s-osvers.o
-   else
-     LIBGNAT_TARGET_PAIRS += \
-     g-socthi.ads<g-socthi-vxworks.ads \
-     g-socthi.adb<g-socthi-vxworks.adb \
-     g-stsifd.adb<g-stsifd-sockets.adb
-   endif
- 
-   ifeq ($(strip $(filter-out yes,$(TRACE))),)
-     LIBGNAT_TARGET_PAIRS += \
-     s-traces.adb<s-traces-default.adb \
-     s-trafor.adb<s-trafor-default.adb \
-     s-trafor.ads<s-trafor-default.ads \
-     s-tratas.adb<s-tratas-default.adb \
-     s-tfsetr.adb<s-tfsetr-vxworks.adb
-   endif
- endif
- 
- # Sparc VxWorks
- ifeq ($(strip $(filter-out sparc% wrs vx%,$(target_cpu) $(target_vendor) $(target_os))),)
-   LIBGNAT_TARGET_PAIRS = \
-   a-intnam.ads<a-intnam-vxworks.ads \
-   a-numaux.ads<a-numaux-vxworks.ads \
-   s-inmaop.adb<s-inmaop-vxworks.adb \
-   s-interr.adb<s-interr-vxworks.adb \
-   s-intman.ads<s-intman-vxworks.ads \
-   s-intman.adb<s-intman-vxworks.adb \
-   s-osinte.adb<s-osinte-vxworks.adb \
-   s-osinte.ads<s-osinte-vxworks.ads \
-   s-osprim.adb<s-osprim-vxworks.adb \
-   s-parame.ads<s-parame-vxworks.ads \
-   s-parame.adb<s-parame-vxworks.adb \
-   s-stchop.ads<s-stchop-limit.ads \
-   s-stchop.adb<s-stchop-vxworks.adb \
-   s-taprop.adb<s-taprop-vxworks.adb \
-   s-tasinf.ads<s-tasinf-vxworks.ads \
-   s-taspri.ads<s-taspri-vxworks.ads \
-   s-tpopsp.adb<s-tpopsp-vxworks.adb \
-   g-socthi.ads<g-socthi-vxworks.ads \
-   g-socthi.adb<g-socthi-vxworks.adb \
-   g-stsifd.adb<g-stsifd-sockets.adb
- 
-   TOOLS_TARGET_PAIRS=\
-   mlib-tgt-specific.adb<mlib-tgt-specific-vxworks.adb \
-   indepsw.adb<indepsw-gnu.adb
- 
-   ifeq ($(strip $(filter-out sparc64 sparcv9, $(target_cpu))),)
-     # 64-bits
-     LIBGNAT_TARGET_PAIRS += \
-     s-vxwork.ads<s-vxwork-sparcv9.ads \
-     system.ads<system-vxworks-sparcv9.ads
-   else
-     # 32-bits
-     LIBGNAT_TARGET_PAIRS += \
-     s-vxwork.ads<s-vxwork-sparc.ads \
-     system.ads<system-vxworks-sparc-kernel.ads
-   endif
- 
-   ifeq ($(strip $(filter-out kernel,$(THREAD_KIND))),)
-     LIBGNAT_TARGET_PAIRS += \
-     s-vxwext.ads<s-vxwext-kernel.ads \
-     s-vxwext.adb<s-vxwext-kernel.adb
-   endif
- 
-   EXTRA_GNATRTL_NONTASKING_OBJS=i-vxwork.o i-vxwoio.o s-stchop.o
-   EXTRA_GNATRTL_TASKING_OBJS=i-vxinco.o s-vxwork.o s-vxwext.o
- 
-   EXTRA_LIBGNAT_OBJS+=vx_stack_info.o
- endif
- 
  # x86/x86_64 VxWorks
  ifeq ($(strip $(filter-out %86 x86_64 wrs vxworks vxworks7,$(target_cpu) $(target_vendor) $(target_os))),)
  
--- 614,619 ----
*************** ifeq ($(strip $(filter-out %86 x86_64 wr
*** 911,949 ****
    endif
  
    LIBGNAT_TARGET_PAIRS+= \
!   a-intnam.ads<a-intnam-vxworks.ads \
!   i-vxwork.ads<i-vxwork-x86.ads \
!   s-osinte.adb<s-osinte-vxworks.adb \
!   s-osinte.ads<s-osinte-vxworks.ads \
!   s-inmaop.adb<s-inmaop-vxworks.adb \
!   s-intman.ads<s-intman-vxworks.ads \
!   s-intman.adb<s-intman-vxworks.adb \
!   s-osprim.adb<s-osprim-vxworks.adb \
!   s-parame.ads<s-parame-vxworks.ads \
!   s-parame.adb<s-parame-vxworks.adb \
!   s-stchop.ads<s-stchop-limit.ads \
!   s-stchop.adb<s-stchop-vxworks.adb \
!   s-taprop.adb<s-taprop-vxworks.adb \
!   s-tasinf.ads<s-tasinf-vxworks.ads \
!   s-taspri.ads<s-taspri-vxworks.ads \
!   s-vxwork.ads<s-vxwork-x86.ads \
!   g-socthi.ads<g-socthi-vxworks.ads \
!   g-socthi.adb<g-socthi-vxworks.adb \
!   g-stsifd.adb<g-stsifd-sockets.adb \
    $(ATOMICS_TARGET_PAIRS)
  
!   TOOLS_TARGET_PAIRS=\
!   mlib-tgt-specific.adb<mlib-tgt-specific-vxworks.adb \
!   indepsw.adb<indepsw-gnu.adb
! 
!   ifeq ($(strip $(filter-out yes,$(TRACE))),)
!     LIBGNAT_TARGET_PAIRS += \
!     s-traces.adb<s-traces-default.adb \
!     s-trafor.adb<s-trafor-default.adb \
!     s-trafor.ads<s-trafor-default.ads \
!     s-tratas.adb<s-tratas-default.adb \
!     s-tfsetr.adb<s-tfsetr-vxworks.adb
!   endif
  
    # The CPU setting for VxSim varies with the
    # host (Windows or Linux)
--- 634,661 ----
    endif
  
    LIBGNAT_TARGET_PAIRS+= \
!   a-intnam.ads<libgnarl/a-intnam__vxworks.ads \
!   i-vxwork.ads<libgnat/i-vxwork__x86.ads \
!   s-osinte.adb<libgnarl/s-osinte__vxworks.adb \
!   s-osinte.ads<libgnarl/s-osinte__vxworks.ads \
!   s-inmaop.adb<libgnarl/s-inmaop__vxworks.adb \
!   s-intman.ads<libgnarl/s-intman__vxworks.ads \
!   s-intman.adb<libgnarl/s-intman__vxworks.adb \
!   s-osprim.adb<libgnat/s-osprim__vxworks.adb \
!   s-parame.ads<libgnat/s-parame__vxworks.ads \
!   s-parame.adb<libgnat/s-parame__vxworks.adb \
!   s-stchop.ads<libgnat/s-stchop__limit.ads \
!   s-stchop.adb<libgnat/s-stchop__vxworks.adb \
!   s-taprop.adb<libgnarl/s-taprop__vxworks.adb \
!   s-tasinf.ads<libgnarl/s-tasinf__vxworks.ads \
!   s-taspri.ads<libgnarl/s-taspri__vxworks.ads \
!   s-vxwork.ads<libgnarl/s-vxwork__x86.ads \
!   g-socthi.ads<libgnat/g-socthi__vxworks.ads \
!   g-socthi.adb<libgnat/g-socthi__vxworks.adb \
!   g-stsifd.adb<libgnat/g-stsifd__sockets.adb \
    $(ATOMICS_TARGET_PAIRS)
  
!   TOOLS_TARGET_PAIRS=indepsw.adb<indepsw-gnu.adb
  
    # The CPU setting for VxSim varies with the
    # host (Windows or Linux)
*************** ifeq ($(strip $(filter-out %86 x86_64 wr
*** 984,1028 ****
    ifeq ($(strip $(filter-out rtp,$(THREAD_KIND))),)
      # Runtime N/A for VxWorks7 (non-existent system file)
      LIBGNAT_TARGET_PAIRS += \
!     s-vxwext.ads<s-vxwext-rtp.ads \
!     s-vxwext.adb<s-vxwext-rtp.adb \
!     s-tpopsp.adb<s-tpopsp-vxworks-rtp.adb \
!     system.ads<system-vxworks-x86-rtp.ads
    else
      ifeq ($(strip $(filter-out rtp-smp, $(THREAD_KIND))),)
        LIBGNAT_TARGET_PAIRS += \
!       s-mudido.adb<s-mudido-affinity.adb \
!       s-vxwext.ads<s-vxwext-rtp.ads \
!       s-vxwext.adb<s-vxwext-rtp-smp.adb \
!       s-tpopsp.adb<s-tpopsp-vxworks-tls.adb \
!       system.ads<$(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<s-interr-vxworks.adb \
!         s-mudido.adb<s-mudido-affinity.adb \
!         s-tpopsp.adb<s-tpopsp-vxworks-tls.adb \
!         s-vxwext.ads<s-vxwext-kernel.ads \
!         s-vxwext.adb<s-vxwext-kernel-smp.adb \
!         system.ads<$(SVX)-$(X86CPU)-kernel.ads
  
          EXTRA_LIBGNAT_OBJS+=affinity.o
        else
          LIBGNAT_TARGET_PAIRS += \
!         s-interr.adb<s-interr-vxworks.adb \
!         s-tpopsp.adb<s-tpopsp-vxworks.adb
  
          ifeq ($(strip $(filter-out kernel,$(THREAD_KIND))),)
            # Runtime N/A for VxWorks7 (non-existent system file)
            LIBGNAT_TARGET_PAIRS += \
!           s-vxwext.ads<s-vxwext-kernel.ads \
!           s-vxwext.adb<s-vxwext-kernel.adb \
!           system.ads<$(SVX)-x86-kernel.ads
          else
            LIBGNAT_TARGET_PAIRS += \
!           system.ads<system-vxworks-x86.ads
          endif
        endif
  
--- 696,740 ----
    ifeq ($(strip $(filter-out rtp,$(THREAD_KIND))),)
      # Runtime N/A for VxWorks7 (non-existent system file)
      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/system-vxworks-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))),)
            # Runtime N/A for VxWorks7 (non-existent system file)
            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
          else
            LIBGNAT_TARGET_PAIRS += \
!           system.ads<libgnat/system-vxworks-x86.ads
          endif
        endif
  
*************** ifeq ($(strip $(filter-out %86 x86_64 wr
*** 1051,1102 ****
    endif
  endif
  
! # ARM VxWorks
! ifeq ($(strip $(filter-out arm% coff wrs vx%,$(target_cpu) $(target_vendor) $(target_os))),)
  
!   ifeq ($(strip $(filter-out vxworks7%, $(target_os))),)
!      SVX=system-vxworks7
!      EH_MECHANISM=-arm
!      SIGTRAMP_OBJ=sigtramp-armvxworks.o
    else
!      SVX=system-vxworks
!      EH_MECHANISM=-gcc
!      SIGTRAMP_OBJ=sigtramp-vxworks.o
    endif
  
    LIBGNAT_TARGET_PAIRS = \
!   a-intnam.ads<a-intnam-vxworks.ads \
!   a-numaux.ads<a-numaux-vxworks.ads \
!   s-inmaop.adb<s-inmaop-vxworks.adb \
!   s-interr.adb<s-interr-vxworks.adb \
!   s-intman.ads<s-intman-vxworks.ads \
!   s-intman.adb<s-intman-vxworks.adb \
!   s-osinte.adb<s-osinte-vxworks.adb \
!   s-osinte.ads<s-osinte-vxworks.ads \
!   s-osprim.adb<s-osprim-vxworks.adb \
!   s-parame.ads<s-parame-vxworks.ads \
!   s-parame.adb<s-parame-vxworks.adb \
!   s-stchop.ads<s-stchop-limit.ads \
!   s-stchop.adb<s-stchop-vxworks.adb \
!   s-taprop.adb<s-taprop-vxworks.adb \
!   s-tasinf.ads<s-tasinf-vxworks.ads \
!   s-taspri.ads<s-taspri-vxworks.ads \
!   s-vxwork.ads<s-vxwork-arm.ads \
!   g-socthi.ads<g-socthi-vxworks.ads \
!   g-socthi.adb<g-socthi-vxworks.adb \
!   g-stsifd.adb<g-stsifd-sockets.adb
  
!   TOOLS_TARGET_PAIRS=\
!   mlib-tgt-specific.adb<mlib-tgt-specific-vxworks.adb \
!   indepsw.adb<indepsw-gnu.adb
  
    ifeq ($(strip $(filter-out rtp-smp,$(THREAD_KIND))),)
      LIBGNAT_TARGET_PAIRS += \
!     s-mudido.adb<s-mudido-affinity.adb \
!     s-vxwext.ads<s-vxwext-rtp.ads \
!     s-vxwext.adb<s-vxwext-rtp-smp.adb \
!     s-tpopsp.adb<s-tpopsp-vxworks-tls.adb \
!     system.ads<$(SVX)-arm-rtp-smp.ads
  
      EXTRA_LIBGNAT_OBJS+=affinity.o
  
--- 763,824 ----
    endif
  endif
  
! # ARM and Aarch64 VxWorks
! ifeq ($(strip $(filter-out aarch64 arm% coff wrs vx%,$(target_cpu) $(target_vendor) $(target_os))),)
  
!   ifeq ($(strip $(filter-out aarch64, $(target_cpu))),)
!     ARCH_STR=aarch64
!     SVX=system-vxworks7
!     EH_MECHANISM=-gcc
!     SIGTRAMP_OBJ=sigtramp-vxworks.o
    else
!     ifeq ($(strip $(filter-out arm%, $(target_cpu))),)
!       ARCH_STR=arm
!       ifeq ($(strip $(filter-out vxworks7%, $(target_os))),)
!         SVX=system-vxworks7
!         EH_MECHANISM=-arm
!         SIGTRAMP_OBJ=sigtramp-armvxworks.o
!       else
!         SVX=system-vxworks
!         EH_MECHANISM=-gcc
!         SIGTRAMP_OBJ=sigtramp-vxworks.o
!       endif
!     else
!       ARCH_STR=coff
!     endif
    endif
  
    LIBGNAT_TARGET_PAIRS = \
!   a-intnam.ads<libgnarl/a-intnam__vxworks.ads \
!   a-numaux.ads<libgnat/a-numaux__vxworks.ads \
!   s-inmaop.adb<libgnarl/s-inmaop__vxworks.adb \
!   s-interr.adb<libgnarl/s-interr__vxworks.adb \
!   s-intman.ads<libgnarl/s-intman__vxworks.ads \
!   s-intman.adb<libgnarl/s-intman__vxworks.adb \
!   s-osinte.adb<libgnarl/s-osinte__vxworks.adb \
!   s-osinte.ads<libgnarl/s-osinte__vxworks.ads \
!   s-osprim.adb<libgnat/s-osprim__vxworks.adb \
!   s-parame.ads<libgnat/s-parame__vxworks.ads \
!   s-parame.adb<libgnat/s-parame__vxworks.adb \
!   s-stchop.ads<libgnat/s-stchop__limit.ads \
!   s-stchop.adb<libgnat/s-stchop__vxworks.adb \
!   s-taprop.adb<libgnarl/s-taprop__vxworks.adb \
!   s-tasinf.ads<libgnarl/s-tasinf__vxworks.ads \
!   s-taspri.ads<libgnarl/s-taspri__vxworks.ads \
!   s-vxwork.ads<libgnarl/s-vxwork__$(ARCH_STR).ads \
!   g-socthi.ads<libgnat/g-socthi__vxworks.ads \
!   g-socthi.adb<libgnat/g-socthi__vxworks.adb \
!   g-stsifd.adb<libgnat/g-stsifd__sockets.adb
  
!   TOOLS_TARGET_PAIRS=indepsw.adb<indepsw-gnu.adb
  
    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)-$(ARCH_STR)-rtp-smp.ads
  
      EXTRA_LIBGNAT_OBJS+=affinity.o
  
*************** ifeq ($(strip $(filter-out arm% coff wrs
*** 1105,1115 ****
    else
      ifeq ($(strip $(filter-out kernel-smp,$(THREAD_KIND))),)
        LIBGNAT_TARGET_PAIRS += \
!       s-mudido.adb<s-mudido-affinity.adb \
!       s-tpopsp.adb<s-tpopsp-vxworks-tls.adb \
!       s-vxwext.ads<s-vxwext-kernel.ads \
!       s-vxwext.adb<s-vxwext-kernel-smp.adb \
!       system.ads<$(SVX)-arm.ads
  
        EXTRA_LIBGNAT_OBJS+=affinity.o
  
--- 827,837 ----
    else
      ifeq ($(strip $(filter-out kernel-smp,$(THREAD_KIND))),)
        LIBGNAT_TARGET_PAIRS += \
!       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)-$(ARCH_STR).ads
  
        EXTRA_LIBGNAT_OBJS+=affinity.o
  
*************** ifeq ($(strip $(filter-out arm% coff wrs
*** 1117,1129 ****
        EXTRA_LIBGNAT_SRCS+=$(VX_SIGTRAMP_EXTRA_SRCS)
      else
        LIBGNAT_TARGET_PAIRS += \
!       s-tpopsp.adb<s-tpopsp-vxworks.adb \
!       system.ads<$(SVX)-arm.ads
  
        ifeq ($(strip $(filter-out kernel,$(THREAD_KIND))),)
          LIBGNAT_TARGET_PAIRS += \
!         s-vxwext.ads<s-vxwext-kernel.ads \
!         s-vxwext.adb<s-vxwext-kernel.adb
  
          EXTRA_LIBGNAT_OBJS+=$(SIGTRAMP_OBJ)
          EXTRA_LIBGNAT_SRCS+=$(VX_SIGTRAMP_EXTRA_SRCS)
--- 839,851 ----
        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)
*************** ifeq ($(strip $(filter-out arm% coff wrs
*** 1137,1244 ****
  
    EXTRA_LIBGNAT_OBJS+=vx_stack_info.o
  
!   ifeq ($(strip $(filter-out vxworks7%, $(target_os))),)
      GCC_SPEC_FILES+=vxworks7-rtp-base-link.spec
    else
      EXTRA_ADALIB_OBJS+=$(VX_CRTBE_EXTRA_ADALIB_OBJS)
      EXTRA_LIBGNAT_SRCS+=vx_crtbegin.inc
      GCC_SPEC_FILES+=vxworks-gnat-crtbe-link.spec
  
!     GCC_SPEC_FILES+=vxworks-arm-link.spec
!     GCC_SPEC_FILES+=vxworks-smp-arm-link.spec
!   endif
! endif
! 
! # MIPS VxWorks
! ifeq ($(strip $(filter-out mips% wrs vx%,$(target_cpu) $(target_vendor) $(target_os))),)
!   LIBGNAT_TARGET_PAIRS = \
!   a-intnam.ads<a-intnam-vxworks.ads \
!   a-numaux.ads<a-numaux-vxworks.ads \
!   s-inmaop.adb<s-inmaop-vxworks.adb \
!   s-interr.adb<s-interr-vxworks.adb \
!   s-intman.ads<s-intman-vxworks.ads \
!   s-intman.adb<s-intman-vxworks.adb \
!   s-osinte.adb<s-osinte-vxworks.adb \
!   s-osinte.ads<s-osinte-vxworks.ads \
!   s-osprim.adb<s-osprim-vxworks.adb \
!   s-parame.ads<s-parame-vxworks.ads \
!   s-parame.adb<s-parame-vxworks.adb \
!   s-stchop.ads<s-stchop-limit.ads \
!   s-stchop.adb<s-stchop-vxworks.adb \
!   s-taprop.adb<s-taprop-vxworks.adb \
!   s-tasinf.ads<s-tasinf-vxworks.ads \
!   s-taspri.ads<s-taspri-vxworks.ads \
!   s-tpopsp.adb<s-tpopsp-vxworks.adb \
!   s-vxwork.ads<s-vxwork-mips.ads \
!   g-socthi.ads<g-socthi-vxworks.ads \
!   g-socthi.adb<g-socthi-vxworks.adb \
!   g-stsifd.adb<g-stsifd-sockets.adb \
!   system.ads<system-vxworks-mips.ads
! 
!   TOOLS_TARGET_PAIRS=\
!   mlib-tgt-specific.adb<mlib-tgt-specific-vxworks.adb \
!   indepsw.adb<indepsw-gnu.adb
! 
!   ifeq ($(strip $(filter-out rtp-smp,$(THREAD_KIND))),)
!     EH_MECHANISM=-gcc
! 
!     LIBGNAT_TARGET_PAIRS += \
!     s-mudido.adb<s-mudido-affinity.adb \
!     s-vxwext.ads<s-vxwext-rtp.ads \
!     s-vxwext.adb<s-vxwext-rtp-smp.adb \
!     s-tpopsp.adb<s-tpopsp-vxworks-tls.adb
! 
!     EXTRA_LIBGNAT_OBJS+=affinity.o
! 
!     EXTRA_LIBGNAT_OBJS+=sigtramp-vxworks.o
!     EXTRA_LIBGNAT_SRCS+=$(VX_SIGTRAMP_EXTRA_SRCS)
!   else
!     ifeq ($(strip $(filter-out kernel-smp,$(THREAD_KIND))),)
!       LIBGNAT_TARGET_PAIRS += \
!       s-mudido.adb<s-mudido-affinity.adb \
!       s-tpopsp.adb<s-tpopsp-vxworks-tls.adb \
!       s-vxwext.ads<s-vxwext-kernel.ads \
!       s-vxwext.adb<s-vxwext-kernel-smp.adb
! 
!       EXTRA_LIBGNAT_OBJS+=affinity.o
!     else
!       LIBGNAT_TARGET_PAIRS += \
!       s-tpopsp.adb<s-tpopsp-vxworks.adb
! 
!       ifeq ($(strip $(filter-out kernel,$(THREAD_KIND))),)
!         LIBGNAT_TARGET_PAIRS += \
!         s-vxwext.ads<s-vxwext-kernel.ads \
!         s-vxwext.adb<s-vxwext-kernel.adb
!       endif
      endif
    endif
- 
-   EXTRA_GNATRTL_NONTASKING_OBJS=i-vxwork.o i-vxwoio.o s-stchop.o
-   EXTRA_GNATRTL_TASKING_OBJS=i-vxinco.o s-vxwork.o s-vxwext.o
- 
-   EXTRA_LIBGNAT_OBJS+=vx_stack_info.o
  endif
  
  # ARM android
  ifeq ($(strip $(filter-out arm% linux-androideabi,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
!   a-intnam.ads<a-intnam-linux.ads \
!   s-inmaop.adb<s-inmaop-posix.adb \
!   s-intman.adb<s-intman-android.adb \
!   s-linux.ads<s-linux-android.ads \
!   s-osinte.adb<s-osinte-android.adb \
!   s-osinte.ads<s-osinte-android.ads \
!   s-osprim.adb<s-osprim-posix.adb \
!   s-taprop.adb<s-taprop-posix.adb \
!   s-taspri.ads<s-taspri-posix.ads \
!   s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
    $(ATOMICS_TARGET_PAIRS) \
    $(ATOMICS_BUILTINS_TARGET_PAIRS) \
!   system.ads<system-linux-arm.ads
  
!   TOOLS_TARGET_PAIRS =  \
!     mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
!     indepsw.adb<indepsw-gnu.adb
  
    EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
    EXTRA_LIBGNAT_OBJS+=sigtramp-armdroid.o
--- 859,899 ----
  
    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
      EXTRA_ADALIB_OBJS+=$(VX_CRTBE_EXTRA_ADALIB_OBJS)
      EXTRA_LIBGNAT_SRCS+=vx_crtbegin.inc
      GCC_SPEC_FILES+=vxworks-gnat-crtbe-link.spec
  
!     ifneq ($(strip $(filter-out vxworks7%, $(target_os))),)
!       GCC_SPEC_FILES+=vxworks-arm-link.spec
!       GCC_SPEC_FILES+=vxworks-smp-arm-link.spec
      endif
    endif
  endif
  
  # ARM android
  ifeq ($(strip $(filter-out arm% linux-androideabi,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
!   a-intnam.ads<libgnarl/a-intnam__linux.ads \
!   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
!   s-intman.adb<libgnarl/s-intman__android.adb \
!   s-linux.ads<libgnarl/s-linux__android.ads \
!   s-osinte.adb<libgnarl/s-osinte__android.adb \
!   s-osinte.ads<libgnarl/s-osinte__android.ads \
!   s-osprim.adb<libgnat/s-osprim__posix.adb \
!   s-taprop.adb<libgnarl/s-taprop__posix.adb \
!   s-taspri.ads<libgnarl/s-taspri__posix.ads \
!   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
    $(ATOMICS_TARGET_PAIRS) \
    $(ATOMICS_BUILTINS_TARGET_PAIRS) \
!   system.ads<libgnat/system-linux-arm.ads
  
!   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
  
    EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
    EXTRA_LIBGNAT_OBJS+=sigtramp-armdroid.o
*************** ifeq ($(strip $(filter-out arm% linux-an
*** 1249,1275 ****
    LIBRARY_VERSION := $(LIB_VERSION)
  endif
  
  # Sparc Solaris
  ifeq ($(strip $(filter-out sparc% sun solaris%,$(target_cpu) $(target_vendor) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
!   a-intnam.ads<a-intnam-solaris.ads \
!   s-inmaop.adb<s-inmaop-posix.adb \
!   s-intman.adb<s-intman-solaris.adb \
!   s-mudido.adb<s-mudido-affinity.adb \
!   s-osinte.adb<s-osinte-solaris.adb \
!   s-osinte.ads<s-osinte-solaris.ads \
!   s-osprim.adb<s-osprim-solaris.adb \
!   s-taprop.adb<s-taprop-solaris.adb \
!   s-tasinf.adb<s-tasinf-solaris.adb \
!   s-tasinf.ads<s-tasinf-solaris.ads \
!   s-taspri.ads<s-taspri-solaris.ads \
!   s-tpopsp.adb<s-tpopsp-solaris.adb \
!   g-soliop.ads<g-soliop-solaris.ads \
    $(ATOMICS_TARGET_PAIRS) \
    $(ATOMICS_BUILTINS_TARGET_PAIRS) \
!   system.ads<system-solaris-sparc.ads
  
!   TOOLS_TARGET_PAIRS=mlib-tgt-specific.adb<mlib-tgt-specific-solaris.adb
  
    EH_MECHANISM=-gcc
    THREADSLIB = -lposix4 -lthread
--- 904,962 ----
    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 \
+   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
+   s-intman.adb<libgnarl/s-intman__qnx.adb \
+   s-osinte.adb<libgnarl/s-osinte__qnx.adb \
+   s-osinte.ads<libgnarl/s-osinte__qnx.ads \
+   s-osprim.adb<libgnat/s-osprim__posix.adb \
+   s-qnx.ads<libgnarl/s-qnx.ads \
+   s-taprop.adb<libgnarl/s-taprop__qnx.adb \
+   s-taspri.ads<libgnarl/s-taspri__posix.ads \
+   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
+   $(ATOMICS_TARGET_PAIRS) \
+   $(ATOMICS_BUILTINS_TARGET_PAIRS) \
+   system.ads<libgnat/system-qnx-aarch64.ads
+ 
+   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
+ 
+   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
+ 
  # Sparc Solaris
  ifeq ($(strip $(filter-out sparc% sun solaris%,$(target_cpu) $(target_vendor) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
!   a-intnam.ads<libgnarl/a-intnam__solaris.ads \
!   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
!   s-intman.adb<libgnarl/s-intman__solaris.adb \
!   s-mudido.adb<libgnarl/s-mudido__affinity.adb \
!   s-osinte.adb<libgnarl/s-osinte__solaris.adb \
!   s-osinte.ads<libgnarl/s-osinte__solaris.ads \
!   s-osprim.adb<libgnat/s-osprim__solaris.adb \
!   s-taprop.adb<libgnarl/s-taprop__solaris.adb \
!   s-tasinf.adb<libgnarl/s-tasinf__solaris.adb \
!   s-tasinf.ads<libgnarl/s-tasinf__solaris.ads \
!   s-taspri.ads<libgnarl/s-taspri__solaris.ads \
!   s-tpopsp.adb<libgnarl/s-tpopsp__solaris.adb \
!   g-soliop.ads<libgnat/g-soliop__solaris.ads \
!   $(TRASYM_DWARF_UNIX_PAIRS) \
    $(ATOMICS_TARGET_PAIRS) \
    $(ATOMICS_BUILTINS_TARGET_PAIRS) \
!   system.ads<libgnat/system-solaris-sparc.ads
  
!   EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
  
    EH_MECHANISM=-gcc
    THREADSLIB = -lposix4 -lthread
*************** ifeq ($(strip $(filter-out sparc% sun so
*** 1278,1324 ****
    GNATLIB_SHARED = gnatlib-shared-dual
    GMEM_LIB = gmemlib
    LIBRARY_VERSION := $(LIB_VERSION)
- 
-   ifeq ($(strip $(filter-out pthread PTHREAD,$(THREAD_KIND))),)
-     LIBGNAT_TARGET_PAIRS = \
-     a-intnam.ads<a-intnam-solaris.ads \
-     s-inmaop.adb<s-inmaop-posix.adb \
-     s-intman.adb<s-intman-posix.adb \
-     s-osinte.adb<s-osinte-posix.adb \
-     s-osinte.ads<s-osinte-solaris-posix.ads \
-     s-osprim.adb<s-osprim-solaris.adb \
-     s-taprop.adb<s-taprop-posix.adb \
-     s-taspri.ads<s-taspri-posix.ads \
-     s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
-     g-soliop.ads<g-soliop-solaris.ads \
-     system.ads<system-solaris-sparc.ads
- 
-     THREADSLIB = -lposix4 -lpthread
-   endif
- 
-   ifeq ($(strip $(filter-out m64,$(THREAD_KIND))),)
-     LIBGNAT_TARGET_PAIRS = $(LIBGNAT_TARGET_PAIRS_64)
-   endif
  endif
  
  # x86 and x86-64 solaris
  ifeq ($(strip $(filter-out %86 %x86_64 solaris2%,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS_COMMON = \
!   a-intnam.ads<a-intnam-solaris.ads \
!   s-inmaop.adb<s-inmaop-posix.adb \
!   s-intman.adb<s-intman-solaris.adb \
!   s-mudido.adb<s-mudido-affinity.adb \
!   s-osinte.adb<s-osinte-solaris.adb \
!   s-osinte.ads<s-osinte-solaris.ads \
!   s-osprim.adb<s-osprim-solaris.adb \
!   s-taprop.adb<s-taprop-solaris.adb \
!   s-tasinf.adb<s-tasinf-solaris.adb \
!   s-tasinf.ads<s-tasinf-solaris.ads \
!   s-taspri.ads<s-taspri-solaris.ads \
!   s-tpopsp.adb<s-tpopsp-solaris.adb \
!   g-soliop.ads<g-soliop-solaris.ads \
    $(ATOMICS_TARGET_PAIRS) \
!   system.ads<system-solaris-x86.ads
  
    ifeq ($(strip $(filter-out %86 solaris2%,$(target_cpu) $(target_os))),)
      ifeq ($(strip $(MULTISUBDIR)),/amd64)
--- 965,991 ----
    GNATLIB_SHARED = gnatlib-shared-dual
    GMEM_LIB = gmemlib
    LIBRARY_VERSION := $(LIB_VERSION)
  endif
  
  # x86 and x86-64 solaris
  ifeq ($(strip $(filter-out %86 %x86_64 solaris2%,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS_COMMON = \
!   a-intnam.ads<libgnarl/a-intnam__solaris.ads \
!   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
!   s-intman.adb<libgnarl/s-intman__solaris.adb \
!   s-mudido.adb<libgnarl/s-mudido__affinity.adb \
!   s-osinte.adb<libgnarl/s-osinte__solaris.adb \
!   s-osinte.ads<libgnarl/s-osinte__solaris.ads \
!   s-osprim.adb<libgnat/s-osprim__solaris.adb \
!   s-taprop.adb<libgnarl/s-taprop__solaris.adb \
!   s-tasinf.adb<libgnarl/s-tasinf__solaris.adb \
!   s-tasinf.ads<libgnarl/s-tasinf__solaris.ads \
!   s-taspri.ads<libgnarl/s-taspri__solaris.ads \
!   s-tpopsp.adb<libgnarl/s-tpopsp__solaris.adb \
!   g-soliop.ads<libgnat/g-soliop__solaris.ads \
!   $(TRASYM_DWARF_UNIX_PAIRS) \
    $(ATOMICS_TARGET_PAIRS) \
!   system.ads<libgnat/system-solaris-x86.ads
  
    ifeq ($(strip $(filter-out %86 solaris2%,$(target_cpu) $(target_os))),)
      ifeq ($(strip $(MULTISUBDIR)),/amd64)
*************** ifeq ($(strip $(filter-out %86 %x86_64 s
*** 1338,1346 ****
      endif
    endif
  
-   TOOLS_TARGET_PAIRS=mlib-tgt-specific.adb<mlib-tgt-specific-solaris.adb
- 
    EXTRA_GNATRTL_NONTASKING_OBJS += g-sse.o g-ssvety.o
  
    EH_MECHANISM=-gcc
    THREADSLIB = -lposix4 -lthread
--- 1005,1012 ----
      endif
    endif
  
    EXTRA_GNATRTL_NONTASKING_OBJS += g-sse.o g-ssvety.o
+   EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
  
    EH_MECHANISM=-gcc
    THREADSLIB = -lposix4 -lthread
*************** endif
*** 1354,1372 ****
  # x86 Linux
  ifeq ($(strip $(filter-out %86 linux%,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
!   a-intnam.ads<a-intnam-linux.ads \
!   a-synbar.adb<a-synbar-posix.adb \
!   a-synbar.ads<a-synbar-posix.ads \
!   s-inmaop.adb<s-inmaop-posix.adb \
!   s-intman.adb<s-intman-posix.adb \
!   s-tpopsp.adb<s-tpopsp-tls.adb \
!   g-sercom.adb<g-sercom-linux.adb \
!   a-exetim.adb<a-exetim-posix.adb \
!   a-exetim.ads<a-exetim-default.ads \
!   s-linux.ads<s-linux.ads \
!   s-osinte.adb<s-osinte-posix.adb \
    $(ATOMICS_TARGET_PAIRS) \
!   system.ads<system-linux-x86.ads
  
    ifeq ($(strip $(MULTISUBDIR)),/64)
      LIBGNAT_TARGET_PAIRS += $(X86_64_TARGET_PAIRS)
--- 1020,1040 ----
  # x86 Linux
  ifeq ($(strip $(filter-out %86 linux%,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
!   a-intnam.ads<libgnarl/a-intnam__linux.ads \
!   a-synbar.adb<libgnarl/a-synbar__posix.adb \
!   a-synbar.ads<libgnarl/a-synbar__posix.ads \
!   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
!   s-intman.adb<libgnarl/s-intman__posix.adb \
!   s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
!   $(TRASYM_DWARF_UNIX_PAIRS) \
!   g-sercom.adb<libgnat/g-sercom__linux.adb \
!   s-tsmona.adb<libgnat/s-tsmona__linux.adb \
!   a-exetim.adb<libgnarl/a-exetim__posix.adb \
!   a-exetim.ads<libgnarl/a-exetim__default.ads \
!   s-linux.ads<libgnarl/s-linux.ads \
!   s-osinte.adb<libgnarl/s-osinte__posix.adb \
    $(ATOMICS_TARGET_PAIRS) \
!   system.ads<libgnat/system-linux-x86.ads
  
    ifeq ($(strip $(MULTISUBDIR)),/64)
      LIBGNAT_TARGET_PAIRS += $(X86_64_TARGET_PAIRS)
*************** ifeq ($(strip $(filter-out %86 linux%,$(
*** 1374,1404 ****
      LIBGNAT_TARGET_PAIRS += $(X86_TARGET_PAIRS)
    endif
  
!   ifeq ($(strip $(filter-out xenomai,$(THREAD_KIND))),)
!     LIBGNAT_TARGET_PAIRS += \
!     s-osinte.ads<s-osinte-linux-xenomai.ads \
!     s-osprim.adb<s-osprim-linux-xenomai.adb \
!     s-taprop.adb<s-taprop-linux-xenomai.adb \
!     s-taspri.ads<s-taspri-linux-xenomai.ads
!   else
!     LIBGNAT_TARGET_PAIRS += \
!     s-mudido.adb<s-mudido-affinity.adb \
!     s-osinte.ads<s-osinte-linux.ads \
!     s-osprim.adb<s-osprim-posix.adb \
!     s-taprop.adb<s-taprop-linux.adb \
!     s-tasinf.ads<s-tasinf-linux.ads \
!     s-tasinf.adb<s-tasinf-linux.adb \
!     s-taspri.ads<s-taspri-posix.ads
!   endif
  
    EH_MECHANISM=-gcc
    THREADSLIB = -lpthread -lrt
    EXTRA_GNATRTL_NONTASKING_OBJS += g-sse.o g-ssvety.o
    EXTRA_GNATRTL_TASKING_OBJS=s-linux.o a-exetim.o
  
!   TOOLS_TARGET_PAIRS =  \
!     mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
!     indepsw.adb<indepsw-gnu.adb
  
    GNATLIB_SHARED = gnatlib-shared-dual
    MISCLIB = -ldl
--- 1042,1063 ----
      LIBGNAT_TARGET_PAIRS += $(X86_TARGET_PAIRS)
    endif
  
!   LIBGNAT_TARGET_PAIRS += \
!   s-mudido.adb<libgnarl/s-mudido__affinity.adb \
!   s-osinte.ads<libgnarl/s-osinte__linux.ads \
!   s-osprim.adb<libgnat/s-osprim__posix.adb \
!   s-taprop.adb<libgnarl/s-taprop__linux.adb \
!   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
!   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
!   s-taspri.ads<libgnarl/s-taspri__posix.ads
  
    EH_MECHANISM=-gcc
    THREADSLIB = -lpthread -lrt
    EXTRA_GNATRTL_NONTASKING_OBJS += g-sse.o g-ssvety.o
+   EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
    EXTRA_GNATRTL_TASKING_OBJS=s-linux.o a-exetim.o
  
!   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
  
    GNATLIB_SHARED = gnatlib-shared-dual
    MISCLIB = -ldl
*************** endif
*** 1409,1432 ****
  # x86 kfreebsd
  ifeq ($(strip $(filter-out %86 kfreebsd%,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
!   a-intnam.ads<a-intnam-freebsd.ads \
!   s-inmaop.adb<s-inmaop-posix.adb \
!   s-intman.adb<s-intman-posix.adb \
!   s-osinte.adb<s-osinte-posix.adb \
!   s-osinte.ads<s-osinte-kfreebsd-gnu.ads \
!   s-osprim.adb<s-osprim-posix.adb \
!   s-taprop.adb<s-taprop-posix.adb \
!   s-taspri.ads<s-taspri-posix.ads \
!   s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
    $(ATOMICS_TARGET_PAIRS) \
    $(X86_TARGET_PAIRS) \
!   system.ads<system-freebsd.ads
  
!   TOOLS_TARGET_PAIRS =  \
!     mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
!     indepsw.adb<indepsw-gnu.adb
  
    EXTRA_GNATRTL_NONTASKING_OBJS += g-sse.o g-ssvety.o
  
    EH_MECHANISM=-gcc
    THREADSLIB = -lpthread
--- 1068,1091 ----
  # x86 kfreebsd
  ifeq ($(strip $(filter-out %86 kfreebsd%,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
!   a-intnam.ads<libgnarl/a-intnam__freebsd.ads \
!   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
!   s-intman.adb<libgnarl/s-intman__posix.adb \
!   s-osinte.adb<libgnarl/s-osinte__posix.adb \
!   s-osinte.ads<libgnarl/s-osinte__kfreebsd-gnu.ads \
!   s-osprim.adb<libgnat/s-osprim__posix.adb \
!   s-taprop.adb<libgnarl/s-taprop__posix.adb \
!   s-taspri.ads<libgnarl/s-taspri__posix.ads \
!   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
!   $(TRASYM_DWARF_UNIX_PAIRS) \
    $(ATOMICS_TARGET_PAIRS) \
    $(X86_TARGET_PAIRS) \
!   system.ads<libgnat/system-freebsd.ads
  
!   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
  
    EXTRA_GNATRTL_NONTASKING_OBJS += g-sse.o g-ssvety.o
+   EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
  
    EH_MECHANISM=-gcc
    THREADSLIB = -lpthread
*************** endif
*** 1439,1460 ****
  # i[3456]86-pc-gnu i.e. GNU Hurd
  ifeq ($(strip $(filter-out %86 pc gnu,$(target_cpu) $(target_vendor) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
!   a-intnam.ads<a-intnam-freebsd.ads \
!   s-inmaop.adb<s-inmaop-posix.adb \
!   s-intman.adb<s-intman-posix.adb \
!   s-osinte.adb<s-osinte-gnu.adb \
!   s-osinte.ads<s-osinte-gnu.ads \
!   s-osprim.adb<s-osprim-posix.adb \
!   s-taprop.adb<s-taprop-posix.adb \
!   s-taspri.ads<s-taspri-posix.ads \
!   s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
    $(ATOMICS_TARGET_PAIRS) \
    $(X86_TARGET_PAIRS) \
!   system.ads<system-freebsd.ads
  
!   TOOLS_TARGET_PAIRS =  \
!     mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
!     indepsw.adb<indepsw-gnu.adb
  
    EXTRA_GNATRTL_NONTASKING_OBJS=g-sse.o g-ssvety.o
  
--- 1098,1117 ----
  # i[3456]86-pc-gnu i.e. GNU Hurd
  ifeq ($(strip $(filter-out %86 pc gnu,$(target_cpu) $(target_vendor) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
!   a-intnam.ads<libgnarl/a-intnam__freebsd.ads \
!   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
!   s-intman.adb<libgnarl/s-intman__posix.adb \
!   s-osinte.adb<libgnarl/s-osinte__gnu.adb \
!   s-osinte.ads<libgnarl/s-osinte__gnu.ads \
!   s-osprim.adb<libgnat/s-osprim__posix.adb \
!   s-taprop.adb<libgnarl/s-taprop__posix.adb \
!   s-taspri.ads<libgnarl/s-taspri__posix.ads \
!   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
    $(ATOMICS_TARGET_PAIRS) \
    $(X86_TARGET_PAIRS) \
!   system.ads<libgnat/system-freebsd.ads
  
!   TOOLS_TARGET_PAIRS =  indepsw.adb<indepsw-gnu.adb
  
    EXTRA_GNATRTL_NONTASKING_OBJS=g-sse.o g-ssvety.o
  
*************** endif
*** 1467,1488 ****
  
  ifeq ($(strip $(filter-out x86_64 kfreebsd%,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
!   a-intnam.ads<a-intnam-freebsd.ads \
!   a-numaux.adb<a-numaux-x86.adb \
!   a-numaux.ads<a-numaux-x86.ads \
!   s-inmaop.adb<s-inmaop-posix.adb \
!   s-intman.adb<s-intman-posix.adb \
!   s-osinte.adb<s-osinte-posix.adb \
!   s-osinte.ads<s-osinte-kfreebsd-gnu.ads \
!   s-osprim.adb<s-osprim-posix.adb \
!   s-taprop.adb<s-taprop-posix.adb \
!   s-taspri.ads<s-taspri-posix.ads \
!   s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
!   system.ads<system-freebsd.ads
  
!   TOOLS_TARGET_PAIRS =  \
!     mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
!     indepsw.adb<indepsw-gnu.adb
  
    EH_MECHANISM=-gcc
    THREADSLIB = -lpthread
--- 1124,1143 ----
  
  ifeq ($(strip $(filter-out x86_64 kfreebsd%,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
!   a-intnam.ads<libgnarl/a-intnam__freebsd.ads \
!   a-numaux.adb<libgnat/a-numaux__x86.adb \
!   a-numaux.ads<libgnat/a-numaux__x86.ads \
!   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
!   s-intman.adb<libgnarl/s-intman__posix.adb \
!   s-osinte.adb<libgnarl/s-osinte__posix.adb \
!   s-osinte.ads<libgnarl/s-osinte__kfreebsd-gnu.ads \
!   s-osprim.adb<libgnat/s-osprim__posix.adb \
!   s-taprop.adb<libgnarl/s-taprop__posix.adb \
!   s-taspri.ads<libgnarl/s-taspri__posix.ads \
!   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
!   system.ads<libgnat/system-freebsd.ads
  
!   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
  
    EH_MECHANISM=-gcc
    THREADSLIB = -lpthread
*************** endif
*** 1494,1515 ****
  # aarch64 FreeBSD
  ifeq ($(strip $(filter-out %aarch64 freebsd%,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
!   a-intnam.ads<a-intnam-freebsd.ads \
!   s-inmaop.adb<s-inmaop-posix.adb \
!   s-intman.adb<s-intman-posix.adb \
!   s-mudido.adb<s-mudido-affinity.adb \
!   s-osinte.adb<s-osinte-freebsd.adb \
!   s-osinte.ads<s-osinte-freebsd.ads \
!   s-osprim.adb<s-osprim-posix.adb \
!   s-taprop.adb<s-taprop-posix.adb \
!   s-taspri.ads<s-taspri-posix.ads \
!   s-tpopsp.adb<s-tpopsp-posix.adb \
    $(ATOMICS_TARGET_PAIRS) \
    $(ATOMICS_BUILTINS_TARGET_PAIRS) \
!   system.ads<system-freebsd.ads
  
-   TOOLS_TARGET_PAIRS = \
-   mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb
    GNATLIB_SHARED = gnatlib-shared-dual
  
    EH_MECHANISM=-gcc
--- 1149,1168 ----
  # aarch64 FreeBSD
  ifeq ($(strip $(filter-out %aarch64 freebsd%,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
!   a-intnam.ads<libgnarl/a-intnam__freebsd.ads \
!   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
!   s-intman.adb<libgnarl/s-intman__posix.adb \
!   s-mudido.adb<libgnarl/s-mudido__affinity.adb \
!   s-osinte.adb<libgnarl/s-osinte__freebsd.adb \
!   s-osinte.ads<libgnarl/s-osinte__freebsd.ads \
!   s-osprim.adb<libgnat/s-osprim__posix.adb \
!   s-taprop.adb<libgnarl/s-taprop__posix.adb \
!   s-taspri.ads<libgnarl/s-taspri__posix.ads \
!   s-tpopsp.adb<libgnarl/s-tpopsp__posix.adb \
    $(ATOMICS_TARGET_PAIRS) \
    $(ATOMICS_BUILTINS_TARGET_PAIRS) \
!   system.ads<libgnat/system-freebsd.ads
  
    GNATLIB_SHARED = gnatlib-shared-dual
  
    EH_MECHANISM=-gcc
*************** endif
*** 1522,1546 ****
  # x86 FreeBSD
  ifeq ($(strip $(filter-out %86 freebsd%,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
!   a-intnam.ads<a-intnam-freebsd.ads \
!   s-inmaop.adb<s-inmaop-posix.adb \
!   s-intman.adb<s-intman-posix.adb \
!   s-mudido.adb<s-mudido-affinity.adb \
!   s-osinte.adb<s-osinte-freebsd.adb \
!   s-osinte.ads<s-osinte-freebsd.ads \
!   s-osprim.adb<s-osprim-posix.adb \
!   s-taprop.adb<s-taprop-posix.adb \
!   s-taspri.ads<s-taspri-posix.ads \
!   s-tpopsp.adb<s-tpopsp-posix.adb \
    $(ATOMICS_TARGET_PAIRS) \
    $(X86_TARGET_PAIRS) \
!   system.ads<system-freebsd.ads
  
-   TOOLS_TARGET_PAIRS = \
-   mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb
    GNATLIB_SHARED = gnatlib-shared-dual
  
    EXTRA_GNATRTL_NONTASKING_OBJS += g-sse.o g-ssvety.o
  
    EH_MECHANISM=-gcc
    THREADSLIB= -lpthread
--- 1175,1199 ----
  # x86 FreeBSD
  ifeq ($(strip $(filter-out %86 freebsd%,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
!   a-intnam.ads<libgnarl/a-intnam__freebsd.ads \
!   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
!   s-intman.adb<libgnarl/s-intman__posix.adb \
!   s-mudido.adb<libgnarl/s-mudido__affinity.adb \
!   s-osinte.adb<libgnarl/s-osinte__freebsd.adb \
!   s-osinte.ads<libgnarl/s-osinte__freebsd.ads \
!   s-osprim.adb<libgnat/s-osprim__posix.adb \
!   s-taprop.adb<libgnarl/s-taprop__posix.adb \
!   s-taspri.ads<libgnarl/s-taspri__posix.ads \
!   s-tpopsp.adb<libgnarl/s-tpopsp__posix.adb \
!   $(TRASYM_DWARF_UNIX_PAIRS) \
    $(ATOMICS_TARGET_PAIRS) \
    $(X86_TARGET_PAIRS) \
!   system.ads<libgnat/system-freebsd.ads
  
    GNATLIB_SHARED = gnatlib-shared-dual
  
    EXTRA_GNATRTL_NONTASKING_OBJS += g-sse.o g-ssvety.o
+   EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
  
    EH_MECHANISM=-gcc
    THREADSLIB= -lpthread
*************** endif
*** 1552,1576 ****
  # x86-64 FreeBSD
  ifeq ($(strip $(filter-out %86_64 freebsd%,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
!   a-intnam.ads<a-intnam-freebsd.ads \
!   s-inmaop.adb<s-inmaop-posix.adb \
!   s-intman.adb<s-intman-posix.adb \
!   s-mudido.adb<s-mudido-affinity.adb \
!   s-osinte.adb<s-osinte-freebsd.adb \
!   s-osinte.ads<s-osinte-freebsd.ads \
!   s-osprim.adb<s-osprim-posix.adb \
!   s-taprop.adb<s-taprop-posix.adb \
!   s-taspri.ads<s-taspri-posix.ads \
!   s-tpopsp.adb<s-tpopsp-posix.adb \
    $(ATOMICS_TARGET_PAIRS) \
    $(X86_64_TARGET_PAIRS) \
!   system.ads<system-freebsd.ads
  
-   TOOLS_TARGET_PAIRS = \
-   mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb
    GNATLIB_SHARED = gnatlib-shared-dual
  
    EXTRA_GNATRTL_NONTASKING_OBJS += g-sse.o g-ssvety.o
  
    EH_MECHANISM=-gcc
    THREADSLIB= -lpthread
--- 1205,1229 ----
  # x86-64 FreeBSD
  ifeq ($(strip $(filter-out %86_64 freebsd%,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
!   a-intnam.ads<libgnarl/a-intnam__freebsd.ads \
!   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
!   s-intman.adb<libgnarl/s-intman__posix.adb \
!   s-mudido.adb<libgnarl/s-mudido__affinity.adb \
!   s-osinte.adb<libgnarl/s-osinte__freebsd.adb \
!   s-osinte.ads<libgnarl/s-osinte__freebsd.ads \
!   s-osprim.adb<libgnat/s-osprim__posix.adb \
!   s-taprop.adb<libgnarl/s-taprop__posix.adb \
!   s-taspri.ads<libgnarl/s-taspri__posix.ads \
!   s-tpopsp.adb<libgnarl/s-tpopsp__posix.adb \
!   $(TRASYM_DWARF_UNIX_PAIRS) \
    $(ATOMICS_TARGET_PAIRS) \
    $(X86_64_TARGET_PAIRS) \
!   system.ads<libgnat/system-freebsd.ads
  
    GNATLIB_SHARED = gnatlib-shared-dual
  
    EXTRA_GNATRTL_NONTASKING_OBJS += g-sse.o g-ssvety.o
+   EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
  
    EH_MECHANISM=-gcc
    THREADSLIB= -lpthread
*************** endif
*** 1582,1603 ****
  # x86-64 DragonFly
  ifeq ($(strip $(filter-out %86_64 dragonfly%,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
!   a-intnam.ads<a-intnam-dragonfly.ads \
!   s-inmaop.adb<s-inmaop-posix.adb \
!   s-intman.adb<s-intman-posix.adb \
!   s-mudido.adb<s-mudido-affinity.adb \
!   s-osinte.adb<s-osinte-dragonfly.adb \
!   s-osinte.ads<s-osinte-dragonfly.ads \
!   s-osprim.adb<s-osprim-posix.adb \
!   s-taprop.adb<s-taprop-posix.adb \
!   s-taspri.ads<s-taspri-posix.ads \
!   s-tpopsp.adb<s-tpopsp-posix.adb \
    $(ATOMICS_TARGET_PAIRS) \
    $(X86_64_TARGET_PAIRS) \
!   system.ads<system-dragonfly-x86_64.ads
  
-   TOOLS_TARGET_PAIRS = \
-   mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb
    GNATLIB_SHARED = gnatlib-shared-dual
  
    EXTRA_GNATRTL_NONTASKING_OBJS=g-sse.o g-ssvety.o
--- 1235,1254 ----
  # x86-64 DragonFly
  ifeq ($(strip $(filter-out %86_64 dragonfly%,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
!   a-intnam.ads<libgnarl/a-intnam__dragonfly.ads \
!   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
!   s-intman.adb<libgnarl/s-intman__posix.adb \
!   s-mudido.adb<libgnarl/s-mudido__affinity.adb \
!   s-osinte.adb<libgnarl/s-osinte__dragonfly.adb \
!   s-osinte.ads<libgnarl/s-osinte__dragonfly.ads \
!   s-osprim.adb<libgnat/s-osprim__posix.adb \
!   s-taprop.adb<libgnarl/s-taprop__posix.adb \
!   s-taspri.ads<libgnarl/s-taspri__posix.ads \
!   s-tpopsp.adb<libgnarl/s-tpopsp__posix.adb \
    $(ATOMICS_TARGET_PAIRS) \
    $(X86_64_TARGET_PAIRS) \
!   system.ads<libgnat/system-dragonfly-x86_64.ads
  
    GNATLIB_SHARED = gnatlib-shared-dual
  
    EXTRA_GNATRTL_NONTASKING_OBJS=g-sse.o g-ssvety.o
*************** endif
*** 1612,1634 ****
  # S390 Linux
  ifeq ($(strip $(filter-out s390% linux%,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
!   a-intnam.ads<a-intnam-linux.ads \
!   s-inmaop.adb<s-inmaop-posix.adb \
!   s-intman.adb<s-intman-posix.adb \
!   s-linux.ads<s-linux.ads \
!   s-osinte.adb<s-osinte-posix.adb \
!   s-osinte.ads<s-osinte-linux.ads \
!   s-osprim.adb<s-osprim-posix.adb \
!   s-taprop.adb<s-taprop-linux.adb \
!   s-tasinf.ads<s-tasinf-linux.ads \
!   s-tasinf.adb<s-tasinf-linux.adb \
!   s-taspri.ads<s-taspri-posix-noaltstack.ads \
!   s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
!   system.ads<system-linux-s390.ads
  
!   TOOLS_TARGET_PAIRS =  \
!     mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
!     indepsw.adb<indepsw-gnu.adb
  
    EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
    EH_MECHANISM=-gcc
--- 1263,1283 ----
  # S390 Linux
  ifeq ($(strip $(filter-out s390% linux%,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
!   a-intnam.ads<libgnarl/a-intnam__linux.ads \
!   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
!   s-intman.adb<libgnarl/s-intman__posix.adb \
!   s-linux.ads<libgnarl/s-linux.ads \
!   s-osinte.adb<libgnarl/s-osinte__posix.adb \
!   s-osinte.ads<libgnarl/s-osinte__linux.ads \
!   s-osprim.adb<libgnat/s-osprim__posix.adb \
!   s-taprop.adb<libgnarl/s-taprop__linux.adb \
!   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
!   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
!   s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
!   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
!   system.ads<libgnat/system-linux-s390.ads
  
!   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
  
    EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
    EH_MECHANISM=-gcc
*************** endif
*** 1640,1658 ****
  # HP/PA HP-UX 10
  ifeq ($(strip $(filter-out hppa% hp hpux10%,$(target_cpu) $(target_vendor) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
!   a-excpol.adb<a-excpol-abort.adb \
!   a-intnam.ads<a-intnam-hpux.ads \
!   s-inmaop.adb<s-inmaop-posix.adb \
!   s-interr.adb<s-interr-sigaction.adb \
!   s-intman.adb<s-intman-posix.adb \
!   s-osinte.adb<s-osinte-hpux-dce.adb \
!   s-osinte.ads<s-osinte-hpux-dce.ads \
!   s-parame.ads<s-parame-hpux.ads \
!   s-osprim.adb<s-osprim-posix.adb \
!   s-taprop.adb<s-taprop-hpux-dce.adb \
!   s-taspri.ads<s-taspri-hpux-dce.ads \
!   s-tpopsp.adb<s-tpopsp-posix.adb \
!   system.ads<system-hpux.ads
  
    EH_MECHANISM=-gcc
  endif
--- 1289,1307 ----
  # HP/PA HP-UX 10
  ifeq ($(strip $(filter-out hppa% hp hpux10%,$(target_cpu) $(target_vendor) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
!   a-excpol.adb<libgnat/a-excpol__abort.adb \
!   a-intnam.ads<libgnarl/a-intnam__hpux.ads \
!   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
!   s-interr.adb<libgnarl/s-interr__sigaction.adb \
!   s-intman.adb<libgnarl/s-intman__posix.adb \
!   s-osinte.adb<libgnarl/s-osinte__hpux-dce.adb \
!   s-osinte.ads<libgnarl/s-osinte__hpux-dce.ads \
!   s-parame.ads<libgnat/s-parame__hpux.ads \
!   s-osprim.adb<libgnat/s-osprim__posix.adb \
!   s-taprop.adb<libgnarl/s-taprop__hpux-dce.adb \
!   s-taspri.ads<libgnarl/s-taspri__hpux-dce.ads \
!   s-tpopsp.adb<libgnarl/s-tpopsp__posix.adb \
!   system.ads<libgnat/system-hpux.ads
  
    EH_MECHANISM=-gcc
  endif
*************** endif
*** 1660,1679 ****
  # HP/PA HP-UX 11
  ifeq ($(strip $(filter-out hppa% hp hpux11%,$(target_cpu) $(target_vendor) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
!   a-intnam.ads<a-intnam-hpux.ads \
!   s-inmaop.adb<s-inmaop-posix.adb \
!   s-intman.adb<s-intman-posix.adb \
!   s-osinte.adb<s-osinte-posix.adb \
!   s-osinte.ads<s-osinte-hpux.ads \
!   s-parame.ads<s-parame-hpux.ads \
!   s-osprim.adb<s-osprim-posix.adb \
!   s-traceb.adb<s-traceb-hpux.adb \
!   s-taprop.adb<s-taprop-posix.adb \
!   s-taspri.ads<s-taspri-posix.ads \
!   s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
!   system.ads<system-hpux.ads
  
-   TOOLS_TARGET_PAIRS = mlib-tgt-specific.adb<mlib-tgt-specific-hpux.adb
    EH_MECHANISM=-gcc
    TGT_LIB = /usr/lib/libcl.a
    THREADSLIB = -lpthread
--- 1309,1327 ----
  # HP/PA HP-UX 11
  ifeq ($(strip $(filter-out hppa% hp hpux11%,$(target_cpu) $(target_vendor) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
!   a-intnam.ads<libgnarl/a-intnam__hpux.ads \
!   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
!   s-intman.adb<libgnarl/s-intman__posix.adb \
!   s-osinte.adb<libgnarl/s-osinte__posix.adb \
!   s-osinte.ads<libgnarl/s-osinte__hpux.ads \
!   s-parame.ads<libgnat/s-parame__hpux.ads \
!   s-osprim.adb<libgnat/s-osprim__posix.adb \
!   s-traceb.adb<libgnat/s-traceb__hpux.adb \
!   s-taprop.adb<libgnarl/s-taprop__posix.adb \
!   s-taspri.ads<libgnarl/s-taspri__posix.ads \
!   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
!   system.ads<libgnat/system-hpux.ads
  
    EH_MECHANISM=-gcc
    TGT_LIB = /usr/lib/libcl.a
    THREADSLIB = -lpthread
*************** endif
*** 1687,1704 ****
  # IBM AIX
  ifeq ($(strip $(filter-out ibm aix%,$(target_vendor) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
!   a-intnam.ads<a-intnam-aix.ads \
!   s-inmaop.adb<s-inmaop-posix.adb \
!   s-intman.adb<s-intman-posix.adb \
!   s-osinte.adb<s-osinte-aix.adb \
!   s-osinte.ads<s-osinte-aix.ads \
!   s-osprim.adb<s-osprim-posix.adb \
!   s-taprop.adb<s-taprop-posix.adb \
!   s-taspri.ads<s-taspri-posix.ads \
!   s-tpopsp.adb<s-tpopsp-posix.adb \
    $(ATOMICS_TARGET_PAIRS) \
    $(ATOMICS_BUILTINS_TARGET_PAIRS) \
!   system.ads<system-aix.ads
  
    ifeq ($(findstring ppc64, \
  	  $(shell $(GCC_FOR_TARGET) $(GNATLIBCFLAGS) \
--- 1335,1353 ----
  # IBM AIX
  ifeq ($(strip $(filter-out ibm aix%,$(target_vendor) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
!   a-intnam.ads<libgnarl/a-intnam__aix.ads \
!   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
!   s-intman.adb<libgnarl/s-intman__posix.adb \
!   s-osinte.adb<libgnarl/s-osinte__aix.adb \
!   s-osinte.ads<libgnarl/s-osinte__aix.ads \
!   s-osprim.adb<libgnat/s-osprim__posix.adb \
!   s-taprop.adb<libgnarl/s-taprop__posix.adb \
!   s-taspri.ads<libgnarl/s-taspri__posix.ads \
!   s-tpopsp.adb<libgnarl/s-tpopsp__posix.adb \
!   $(TRASYM_DWARF_UNIX_PAIRS) \
    $(ATOMICS_TARGET_PAIRS) \
    $(ATOMICS_BUILTINS_TARGET_PAIRS) \
!   system.ads<libgnat/system-aix.ads
  
    ifeq ($(findstring ppc64, \
  	  $(shell $(GCC_FOR_TARGET) $(GNATLIBCFLAGS) \
*************** ifeq ($(strip $(filter-out ibm aix%,$(ta
*** 1709,1718 ****
      TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
    endif
  
    THREADSLIB = -lpthreads
    EH_MECHANISM=-gcc
-   TOOLS_TARGET_PAIRS += \
-   mlib-tgt-specific.adb<mlib-tgt-specific-aix.adb
  
    GMEM_LIB = gmemlib
  endif
--- 1358,1367 ----
      TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
    endif
  
+   EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
+ 
    THREADSLIB = -lpthreads
    EH_MECHANISM=-gcc
  
    GMEM_LIB = gmemlib
  endif
*************** endif
*** 1720,1766 ****
  # RTEMS
  ifeq ($(strip $(filter-out rtems%,$(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
!   system.ads<system-rtems.ads \
!   a-intnam.ads<a-intnam-rtems.ads \
!   s-inmaop.adb<s-inmaop-posix.adb \
!   s-intman.adb<s-intman-posix.adb \
!   s-osinte.adb<s-osinte-rtems.adb \
!   s-osinte.ads<s-osinte-rtems.ads \
!   s-osprim.adb<s-osprim-rtems.adb \
!   s-parame.adb<s-parame-rtems.adb \
!   s-taprop.adb<s-taprop-posix.adb \
!   s-taspri.ads<s-taspri-posix.ads \
!   s-tpopsp.adb<s-tpopsp-tls.adb \
!   s-stchop.adb<s-stchop-rtems.adb \
!   s-interr.adb<s-interr-hwint.adb
  endif
  
  # PikeOS
  ifeq ($(strip $(filter-out powerpc% %86 sysgo pikeos,$(target_cpu) $(target_vendor) $(target_os)))),)
!   TOOLS_TARGET_PAIRS=\
!   mlib-tgt-specific.adb<mlib-tgt-specific-xi.adb \
!   indepsw.adb<indepsw-gnu.adb
  endif
  
  # *-elf, *-eabi, or *-eabispe
  ifeq ($(strip $(filter-out elf eabi eabispe,$(target_os))),)
!   TOOLS_TARGET_PAIRS=\
!   mlib-tgt-specific.adb<mlib-tgt-specific-xi.adb \
!   indepsw.adb<indepsw-gnu.adb
  endif
  
  ifeq ($(strip $(filter-out %djgpp,$(target_os))),)
    GNATRTL_SOCKETS_OBJS =
  
    LIBGNAT_TARGET_PAIRS = \
! 	a-intnam.ads<a-intnam-dummy.ads \
! 	s-inmaop.adb<s-inmaop-dummy.adb \
! 	s-intman.adb<s-intman-dummy.adb \
! 	s-osinte.ads<s-osinte-dummy.ads \
! 	s-osprim.adb<s-osprim-unix.adb \
! 	s-taprop.adb<s-taprop-dummy.adb \
! 	s-taspri.ads<s-taspri-dummy.ads \
! 	system.ads<system-djgpp.ads \
  	$(DUMMY_SOCKETS_TARGET_PAIRS)
  
    EH_MECHANISM=-gcc
--- 1369,1416 ----
  # RTEMS
  ifeq ($(strip $(filter-out rtems%,$(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
!   system.ads<libgnat/system-rtems.ads \
!   a-intnam.ads<libgnarl/a-intnam__rtems.ads \
!   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
!   s-intman.adb<libgnarl/s-intman__posix.adb \
!   s-osinte.adb<libgnarl/s-osinte__rtems.adb \
!   s-osinte.ads<libgnarl/s-osinte__rtems.ads \
!   s-osprim.adb<libgnat/s-osprim__rtems.adb \
!   s-parame.adb<libgnat/s-parame__rtems.adb \
!   s-taprop.adb<libgnarl/s-taprop__posix.adb \
!   s-taspri.ads<libgnarl/s-taspri__posix.ads \
!   s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
!   s-stchop.adb<libgnat/s-stchop__rtems.adb \
!   s-interr.adb<libgnarl/s-interr__hwint.adb
!   ifeq ($(strip $(filter-out arm%, $(target_cpu))),)
!     EH_MECHANISM=-arm
!   else
!     EH_MECHANISM=-gcc
!   endif
  endif
  
  # PikeOS
  ifeq ($(strip $(filter-out powerpc% %86 sysgo pikeos,$(target_cpu) $(target_vendor) $(target_os)))),)
!   TOOLS_TARGET_PAIRS=indepsw.adb<indepsw-gnu.adb
  endif
  
  # *-elf, *-eabi, or *-eabispe
  ifeq ($(strip $(filter-out elf eabi eabispe,$(target_os))),)
!   TOOLS_TARGET_PAIRS=indepsw.adb<indepsw-gnu.adb
  endif
  
  ifeq ($(strip $(filter-out %djgpp,$(target_os))),)
    GNATRTL_SOCKETS_OBJS =
  
    LIBGNAT_TARGET_PAIRS = \
! 	a-intnam.ads<libgnarl/a-intnam__dummy.ads \
! 	s-inmaop.adb<libgnarl/s-inmaop__dummy.adb \
! 	s-intman.adb<libgnarl/s-intman__dummy.adb \
! 	s-osinte.ads<libgnarl/s-osinte__dummy.ads \
! 	s-osprim.adb<libgnat/s-osprim__unix.adb \
! 	s-taprop.adb<libgnarl/s-taprop__dummy.adb \
! 	s-taspri.ads<libgnarl/s-taspri__dummy.ads \
! 	system.ads<libgnat/system-djgpp.ads \
  	$(DUMMY_SOCKETS_TARGET_PAIRS)
  
    EH_MECHANISM=-gcc
*************** ifeq ($(strip $(filter-out cygwin% mingw
*** 1776,1814 ****
    # a long-term project to disentangle them.
    ifeq ($(strip $(filter-out cygwin%,$(target_os))),)
      LIBGNAT_TARGET_PAIRS = \
!     s-memory.adb<s-memory.adb \
!     g-socthi.ads<g-socthi.ads \
!     g-socthi.adb<g-socthi.adb
    else
      LIBGNAT_TARGET_PAIRS = \
!     s-memory.adb<s-memory-mingw.adb \
!     g-socthi.ads<g-socthi-mingw.ads \
!     g-socthi.adb<g-socthi-mingw.adb
    endif
    LIBGNAT_TARGET_PAIRS += \
!   a-dirval.adb<a-dirval-mingw.adb \
!   a-excpol.adb<a-excpol-abort.adb \
!   s-gloloc.adb<s-gloloc-mingw.adb \
!   s-inmaop.adb<s-inmaop-dummy.adb \
!   s-taspri.ads<s-taspri-mingw.ads \
!   s-tasinf.adb<s-tasinf-mingw.adb \
!   s-tasinf.ads<s-tasinf-mingw.ads \
!   g-stsifd.adb<g-stsifd-sockets.adb \
!   g-soliop.ads<g-soliop-mingw.ads \
    $(ATOMICS_TARGET_PAIRS) \
!   system.ads<system-mingw.ads
  
    LIBGNAT_TARGET_PAIRS += \
!   a-exetim.adb<a-exetim-mingw.adb \
!   a-exetim.ads<a-exetim-mingw.ads \
!   a-intnam.ads<a-intnam-mingw.ads \
!   g-sercom.adb<g-sercom-mingw.adb \
!   s-interr.adb<s-interr-sigaction.adb \
!   s-intman.adb<s-intman-mingw.adb \
!   s-mudido.adb<s-mudido-affinity.adb \
!   s-osinte.ads<s-osinte-mingw.ads \
!   s-osprim.adb<s-osprim-mingw.adb \
!   s-taprop.adb<s-taprop-mingw.adb
  
    ifeq ($(strip $(filter-out x86_64%,$(target_cpu))),)
      ifeq ($(strip $(MULTISUBDIR)),/32)
--- 1426,1466 ----
    # a long-term project to disentangle them.
    ifeq ($(strip $(filter-out cygwin%,$(target_os))),)
      LIBGNAT_TARGET_PAIRS = \
!     s-memory.adb<libgnat/s-memory.adb \
!     g-socthi.ads<libgnat/g-socthi.ads \
!     g-socthi.adb<libgnat/g-socthi.adb
    else
      LIBGNAT_TARGET_PAIRS = \
!     s-memory.adb<libgnat/s-memory__mingw.adb \
!     g-socthi.ads<libgnat/g-socthi__mingw.ads \
!     g-socthi.adb<libgnat/g-socthi__mingw.adb
    endif
    LIBGNAT_TARGET_PAIRS += \
!   a-dirval.adb<libgnat/a-dirval__mingw.adb \
!   a-excpol.adb<libgnat/a-excpol__abort.adb \
!   s-gloloc.adb<libgnat/s-gloloc__mingw.adb \
!   s-inmaop.adb<libgnarl/s-inmaop__dummy.adb \
!   s-taspri.ads<libgnarl/s-taspri__mingw.ads \
!   s-tasinf.adb<libgnarl/s-tasinf__mingw.adb \
!   s-tasinf.ads<libgnarl/s-tasinf__mingw.ads \
!   g-stsifd.adb<libgnat/g-stsifd__sockets.adb \
!   g-soliop.ads<libgnat/g-soliop__mingw.ads \
    $(ATOMICS_TARGET_PAIRS) \
!   system.ads<libgnat/system-mingw.ads
  
    LIBGNAT_TARGET_PAIRS += \
!   a-exetim.adb<libgnarl/a-exetim__mingw.adb \
!   a-exetim.ads<libgnarl/a-exetim__mingw.ads \
!   a-intnam.ads<libgnarl/a-intnam__mingw.ads \
!   g-sercom.adb<libgnat/g-sercom__mingw.adb \
!   $(TRASYM_DWARF_MINGW_PAIRS) \
!   s-tsmona.adb<libgnat/s-tsmona__mingw.adb \
!   s-interr.adb<libgnarl/s-interr__sigaction.adb \
!   s-intman.adb<libgnarl/s-intman__mingw.adb \
!   s-mudido.adb<libgnarl/s-mudido__affinity.adb \
!   s-osinte.ads<libgnarl/s-osinte__mingw.ads \
!   s-osprim.adb<libgnat/s-osprim__mingw.adb \
!   s-taprop.adb<libgnarl/s-taprop__mingw.adb
  
    ifeq ($(strip $(filter-out x86_64%,$(target_cpu))),)
      ifeq ($(strip $(MULTISUBDIR)),/32)
*************** ifeq ($(strip $(filter-out cygwin% mingw
*** 1830,1835 ****
--- 1482,1488 ----
  
    EXTRA_GNATRTL_NONTASKING_OBJS += \
      s-win32.o s-winext.o g-regist.o g-sse.o g-ssvety.o
+   EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_MINGW_OBJS)
    EXTRA_GNATRTL_TASKING_OBJS = a-exetim.o
    EXTRA_LIBGNAT_SRCS+=mingw32.h
    MISCLIB = -lws2_32
*************** ifeq ($(strip $(filter-out cygwin% mingw
*** 1840,1848 ****
  
    EH_MECHANISM=-gcc
  
!   TOOLS_TARGET_PAIRS= \
!   mlib-tgt-specific.adb<mlib-tgt-specific-mingw.adb \
!   indepsw.adb<indepsw-mingw.adb
  
    GMEM_LIB = gmemlib
    EXTRA_GNATTOOLS = ../../gnatdll$(exeext)
--- 1493,1499 ----
  
    EH_MECHANISM=-gcc
  
!   TOOLS_TARGET_PAIRS=indepsw.adb<indepsw-gnu.adb
  
    GMEM_LIB = gmemlib
    EXTRA_GNATTOOLS = ../../gnatdll$(exeext)
*************** endif
*** 1854,1877 ****
  # Mips Linux
  ifeq ($(strip $(filter-out mips% linux%,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
!   a-intnam.ads<a-intnam-linux.ads \
!   s-inmaop.adb<s-inmaop-posix.adb \
!   s-intman.adb<s-intman-posix.adb \
!   s-linux.ads<s-linux-mips.ads \
!   s-osinte.adb<s-osinte-posix.adb \
!   s-osinte.ads<s-osinte-linux.ads \
!   s-osprim.adb<s-osprim-posix.adb \
!   s-taprop.adb<s-taprop-linux.adb \
!   s-tasinf.ads<s-tasinf-linux.ads \
!   s-tasinf.adb<s-tasinf-linux.adb \
!   s-taspri.ads<s-taspri-posix-noaltstack.ads \
!   s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
!   g-sercom.adb<g-sercom-linux.adb \
!   system.ads<system-linux-mips.ads
  
!   TOOLS_TARGET_PAIRS =  \
!     mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
!     indepsw.adb<indepsw-gnu.adb
  
    EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
    EH_MECHANISM=-gcc
--- 1505,1526 ----
  # Mips Linux
  ifeq ($(strip $(filter-out mips% linux%,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
!   a-intnam.ads<libgnarl/a-intnam__linux.ads \
!   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
!   s-intman.adb<libgnarl/s-intman__posix.adb \
!   s-linux.ads<libgnarl/s-linux__mips.ads \
!   s-osinte.adb<libgnarl/s-osinte__posix.adb \
!   s-osinte.ads<libgnarl/s-osinte__linux.ads \
!   s-osprim.adb<libgnat/s-osprim__posix.adb \
!   s-taprop.adb<libgnarl/s-taprop__linux.adb \
!   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
!   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
!   s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
!   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
!   g-sercom.adb<libgnat/g-sercom__linux.adb \
!   system.ads<libgnat/system-linux-mips.ads
  
!   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
  
    EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
    EH_MECHANISM=-gcc
*************** endif
*** 1884,1932 ****
  # PowerPC and e500v2 Linux
  ifeq ($(strip $(filter-out powerpc% linux%,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS_COMMON = \
!   a-exetim.adb<a-exetim-posix.adb \
!   a-exetim.ads<a-exetim-default.ads \
!   a-intnam.ads<a-intnam-linux.ads \
!   a-synbar.adb<a-synbar-posix.adb \
!   a-synbar.ads<a-synbar-posix.ads \
!   s-inmaop.adb<s-inmaop-posix.adb \
!   s-intman.adb<s-intman-posix.adb \
!   s-linux.ads<s-linux.ads \
!   s-osinte.adb<s-osinte-posix.adb \
!   s-tpopsp.adb<s-tpopsp-tls.adb \
!   g-sercom.adb<g-sercom-linux.adb \
    $(ATOMICS_TARGET_PAIRS) \
    $(ATOMICS_BUILTINS_TARGET_PAIRS) \
!   system.ads<system-linux-ppc.ads
  
!   ifeq ($(strip $(filter-out xenomai,$(THREAD_KIND))),)
!     LIBGNAT_TARGET_PAIRS = \
!       $(LIBGNAT_TARGET_PAIRS_COMMON) \
!       s-osinte.ads<s-osinte-linux-xenomai.ads \
!       s-osprim.adb<s-osprim-linux-xenomai.adb \
!       s-taprop.adb<s-taprop-linux-xenomai.adb \
!       s-taspri.ads<s-taspri-linux-xenomai.ads
!   else
!     LIBGNAT_TARGET_PAIRS = \
!       $(LIBGNAT_TARGET_PAIRS_COMMON) \
!       s-mudido.adb<s-mudido-affinity.adb \
!       s-osinte.ads<s-osinte-linux.ads \
!       s-osprim.adb<s-osprim-posix.adb \
!       s-taprop.adb<s-taprop-linux.adb \
!       s-tasinf.ads<s-tasinf-linux.ads \
!       s-tasinf.adb<s-tasinf-linux.adb \
!       s-taspri.ads<s-taspri-posix-noaltstack.ads
!   endif
  
!   TOOLS_TARGET_PAIRS =  \
!     mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
!     indepsw.adb<indepsw-gnu.adb
  
    EXTRA_GNATRTL_TASKING_OBJS=s-linux.o a-exetim.o
  
    EH_MECHANISM=-gcc
    THREADSLIB = -lpthread -lrt
    GNATLIB_SHARED = gnatlib-shared-dual
    GMEM_LIB = gmemlib
    LIBRARY_VERSION := $(LIB_VERSION)
  endif
--- 1533,1574 ----
  # PowerPC and e500v2 Linux
  ifeq ($(strip $(filter-out powerpc% linux%,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS_COMMON = \
!   a-exetim.adb<libgnarl/a-exetim__posix.adb \
!   a-exetim.ads<libgnarl/a-exetim__default.ads \
!   a-intnam.ads<libgnarl/a-intnam__linux.ads \
!   a-synbar.adb<libgnarl/a-synbar__posix.adb \
!   a-synbar.ads<libgnarl/a-synbar__posix.ads \
!   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
!   s-intman.adb<libgnarl/s-intman__posix.adb \
!   s-linux.ads<libgnarl/s-linux.ads \
!   s-osinte.adb<libgnarl/s-osinte__posix.adb \
!   s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
!   g-sercom.adb<libgnat/g-sercom__linux.adb \
!   $(TRASYM_DWARF_UNIX_PAIRS) \
!   s-tsmona.adb<libgnat/s-tsmona__linux.adb \
    $(ATOMICS_TARGET_PAIRS) \
    $(ATOMICS_BUILTINS_TARGET_PAIRS) \
!   system.ads<libgnat/system-linux-ppc.ads
  
!   LIBGNAT_TARGET_PAIRS = \
!     $(LIBGNAT_TARGET_PAIRS_COMMON) \
!     s-mudido.adb<libgnarl/s-mudido__affinity.adb \
!     s-osinte.ads<libgnarl/s-osinte__linux.ads \
!     s-osprim.adb<libgnat/s-osprim__posix.adb \
!     s-taprop.adb<libgnarl/s-taprop__linux.adb \
!     s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
!     s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
!     s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads
  
!   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
  
+   EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
    EXTRA_GNATRTL_TASKING_OBJS=s-linux.o a-exetim.o
  
    EH_MECHANISM=-gcc
    THREADSLIB = -lpthread -lrt
    GNATLIB_SHARED = gnatlib-shared-dual
+   MISCLIB = -ldl
    GMEM_LIB = gmemlib
    LIBRARY_VERSION := $(LIB_VERSION)
  endif
*************** endif
*** 1934,1954 ****
  # ARM linux, GNU eabi
  ifeq ($(strip $(filter-out arm% linux-gnueabi%,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
!   a-intnam.ads<a-intnam-linux.ads \
!   s-inmaop.adb<s-inmaop-posix.adb \
!   s-intman.adb<s-intman-posix.adb \
!   s-linux.ads<s-linux.ads \
!   s-osinte.adb<s-osinte-posix.adb \
!   s-osinte.ads<s-osinte-linux.ads \
!   s-osprim.adb<s-osprim-posix.adb \
!   s-taprop.adb<s-taprop-linux.adb \
!   s-tasinf.ads<s-tasinf-linux.ads \
!   s-tasinf.adb<s-tasinf-linux.adb \
!   s-taspri.ads<s-taspri-posix-noaltstack.ads \
!   s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
    $(ATOMICS_TARGET_PAIRS) \
    $(ATOMICS_BUILTINS_TARGET_PAIRS) \
!   system.ads<system-linux-arm.ads
  
    ifeq ($(strip $(filter-out arm%b,$(target_cpu))),)
      EH_MECHANISM=
--- 1576,1596 ----
  # ARM linux, GNU eabi
  ifeq ($(strip $(filter-out arm% linux-gnueabi%,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
!   a-intnam.ads<libgnarl/a-intnam__linux.ads \
!   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
!   s-intman.adb<libgnarl/s-intman__posix.adb \
!   s-linux.ads<libgnarl/s-linux.ads \
!   s-osinte.adb<libgnarl/s-osinte__posix.adb \
!   s-osinte.ads<libgnarl/s-osinte__linux.ads \
!   s-osprim.adb<libgnat/s-osprim__posix.adb \
!   s-taprop.adb<libgnarl/s-taprop__linux.adb \
!   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
!   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
!   s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
!   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
    $(ATOMICS_TARGET_PAIRS) \
    $(ATOMICS_BUILTINS_TARGET_PAIRS) \
!   system.ads<libgnat/system-linux-arm.ads
  
    ifeq ($(strip $(filter-out arm%b,$(target_cpu))),)
      EH_MECHANISM=
*************** ifeq ($(strip $(filter-out arm% linux-gn
*** 1956,1964 ****
      EH_MECHANISM=-arm
    endif
  
!   TOOLS_TARGET_PAIRS =  \
!     mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
!     indepsw.adb<indepsw-gnu.adb
  
    EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
    THREADSLIB = -lpthread
--- 1598,1604 ----
      EH_MECHANISM=-arm
    endif
  
!   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
  
    EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
    THREADSLIB = -lpthread
*************** endif
*** 1970,2000 ****
  # AArch64 Linux
  ifeq ($(strip $(filter-out aarch64% linux%,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
!   a-exetim.adb<a-exetim-posix.adb \
!   a-exetim.ads<a-exetim-default.ads \
!   a-intnam.ads<a-intnam-linux.ads \
!   a-synbar.adb<a-synbar-posix.adb \
!   a-synbar.ads<a-synbar-posix.ads \
!   s-inmaop.adb<s-inmaop-posix.adb \
!   s-intman.adb<s-intman-posix.adb \
!   s-linux.ads<s-linux.ads \
!   s-mudido.adb<s-mudido-affinity.adb \
!   s-osinte.ads<s-osinte-linux.ads \
!   s-osinte.adb<s-osinte-posix.adb \
!   s-osprim.adb<s-osprim-posix.adb \
!   s-taprop.adb<s-taprop-linux.adb \
!   s-tasinf.ads<s-tasinf-linux.ads \
!   s-tasinf.adb<s-tasinf-linux.adb \
!   s-tpopsp.adb<s-tpopsp-tls.adb \
!   s-taspri.ads<s-taspri-posix.ads \
!   g-sercom.adb<g-sercom-linux.adb \
    $(ATOMICS_TARGET_PAIRS) \
    $(ATOMICS_BUILTINS_TARGET_PAIRS) \
!   system.ads<system-linux-arm.ads
  
!   TOOLS_TARGET_PAIRS =  \
!     mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
!     indepsw.adb<indepsw-gnu.adb
  
    EXTRA_GNATRTL_TASKING_OBJS=s-linux.o a-exetim.o
    EH_MECHANISM=-gcc
--- 1610,1638 ----
  # AArch64 Linux
  ifeq ($(strip $(filter-out aarch64% linux%,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
!   a-exetim.adb<libgnarl/a-exetim__posix.adb \
!   a-exetim.ads<libgnarl/a-exetim__default.ads \
!   a-intnam.ads<libgnarl/a-intnam__linux.ads \
!   a-synbar.adb<libgnarl/a-synbar__posix.adb \
!   a-synbar.ads<libgnarl/a-synbar__posix.ads \
!   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
!   s-intman.adb<libgnarl/s-intman__posix.adb \
!   s-linux.ads<libgnarl/s-linux.ads \
!   s-mudido.adb<libgnarl/s-mudido__affinity.adb \
!   s-osinte.ads<libgnarl/s-osinte__linux.ads \
!   s-osinte.adb<libgnarl/s-osinte__posix.adb \
!   s-osprim.adb<libgnat/s-osprim__posix.adb \
!   s-taprop.adb<libgnarl/s-taprop__linux.adb \
!   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
!   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
!   s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
!   s-taspri.ads<libgnarl/s-taspri__posix.ads \
!   g-sercom.adb<libgnat/g-sercom__linux.adb \
    $(ATOMICS_TARGET_PAIRS) \
    $(ATOMICS_BUILTINS_TARGET_PAIRS) \
!   system.ads<libgnat/system-linux-arm.ads
  
!   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
  
    EXTRA_GNATRTL_TASKING_OBJS=s-linux.o a-exetim.o
    EH_MECHANISM=-gcc
*************** endif
*** 2007,2029 ****
  # Sparc Linux
  ifeq ($(strip $(filter-out sparc% linux%,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
!   a-intnam.ads<a-intnam-linux.ads \
!   s-inmaop.adb<s-inmaop-posix.adb \
!   s-intman.adb<s-intman-posix.adb \
!   s-linux.ads<s-linux-sparc.ads \
!   s-osinte.adb<s-osinte-posix.adb \
!   s-osinte.ads<s-osinte-linux.ads \
!   s-osprim.adb<s-osprim-posix.adb \
!   s-taprop.adb<s-taprop-linux.adb \
!   s-tasinf.ads<s-tasinf-linux.ads \
!   s-tasinf.adb<s-tasinf-linux.adb \
!   s-taspri.ads<s-taspri-posix-noaltstack.ads \
!   s-tpopsp.adb<s-tpopsp-tls.adb \
!   system.ads<system-linux-sparc.ads
  
!   TOOLS_TARGET_PAIRS =  \
!     mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
!     indepsw.adb<indepsw-gnu.adb
  
    EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
    EH_MECHANISM=-gcc
--- 1645,1665 ----
  # Sparc Linux
  ifeq ($(strip $(filter-out sparc% linux%,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
!   a-intnam.ads<libgnarl/a-intnam__linux.ads \
!   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
!   s-intman.adb<libgnarl/s-intman__posix.adb \
!   s-linux.ads<libgnarl/s-linux__sparc.ads \
!   s-osinte.adb<libgnarl/s-osinte__posix.adb \
!   s-osinte.ads<libgnarl/s-osinte__linux.ads \
!   s-osprim.adb<libgnat/s-osprim__posix.adb \
!   s-taprop.adb<libgnarl/s-taprop__linux.adb \
!   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
!   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
!   s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
!   s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
!   system.ads<libgnat/system-linux-sparc.ads
  
!   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
  
    EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
    EH_MECHANISM=-gcc
*************** endif
*** 2036,2058 ****
  # HP/PA Linux
  ifeq ($(strip $(filter-out hppa% linux%,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
!   a-intnam.ads<a-intnam-linux.ads \
!   s-inmaop.adb<s-inmaop-posix.adb \
!   s-intman.adb<s-intman-posix.adb \
!   s-linux.ads<s-linux-hppa.ads \
!   s-osinte.adb<s-osinte-posix.adb \
!   s-osinte.ads<s-osinte-linux.ads \
!   s-osprim.adb<s-osprim-posix.adb \
!   s-taprop.adb<s-taprop-linux.adb \
!   s-tasinf.ads<s-tasinf-linux.ads \
!   s-tasinf.adb<s-tasinf-linux.adb \
!   s-taspri.ads<s-taspri-posix-noaltstack.ads \
!   s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
!   system.ads<system-linux-hppa.ads
  
!   TOOLS_TARGET_PAIRS =  \
!     mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
!     indepsw.adb<indepsw-gnu.adb
  
    EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
    EH_MECHANISM=-gcc
--- 1672,1692 ----
  # HP/PA Linux
  ifeq ($(strip $(filter-out hppa% linux%,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
!   a-intnam.ads<libgnarl/a-intnam__linux.ads \
!   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
!   s-intman.adb<libgnarl/s-intman__posix.adb \
!   s-linux.ads<libgnarl/s-linux__hppa.ads \
!   s-osinte.adb<libgnarl/s-osinte__posix.adb \
!   s-osinte.ads<libgnarl/s-osinte__linux.ads \
!   s-osprim.adb<libgnat/s-osprim__posix.adb \
!   s-taprop.adb<libgnarl/s-taprop__linux.adb \
!   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
!   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
!   s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
!   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
!   system.ads<libgnat/system-linux-hppa.ads
  
!   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
  
    EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
    EH_MECHANISM=-gcc
*************** endif
*** 2065,2087 ****
  # M68K Linux
  ifeq ($(strip $(filter-out m68k% linux%,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
!   a-intnam.ads<a-intnam-linux.ads \
!   s-inmaop.adb<s-inmaop-posix.adb \
!   s-intman.adb<s-intman-posix.adb \
!   s-linux.ads<s-linux.ads \
!   s-osinte.adb<s-osinte-posix.adb \
!   s-osinte.ads<s-osinte-linux.ads \
!   s-osprim.adb<s-osprim-posix.adb \
!   s-taprop.adb<s-taprop-linux.adb \
!   s-tasinf.ads<s-tasinf-linux.ads \
!   s-tasinf.adb<s-tasinf-linux.adb \
!   s-taspri.ads<s-taspri-posix.ads \
!   s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
!   system.ads<system-linux-m68k.ads
  
!   TOOLS_TARGET_PAIRS =  \
!     mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
!     indepsw.adb<indepsw-gnu.adb
  
    EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
    EH_MECHANISM=-gcc
--- 1699,1719 ----
  # M68K Linux
  ifeq ($(strip $(filter-out m68k% linux%,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
!   a-intnam.ads<libgnarl/a-intnam__linux.ads \
!   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
!   s-intman.adb<libgnarl/s-intman__posix.adb \
!   s-linux.ads<libgnarl/s-linux.ads \
!   s-osinte.adb<libgnarl/s-osinte__posix.adb \
!   s-osinte.ads<libgnarl/s-osinte__linux.ads \
!   s-osprim.adb<libgnat/s-osprim__posix.adb \
!   s-taprop.adb<libgnarl/s-taprop__linux.adb \
!   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
!   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
!   s-taspri.ads<libgnarl/s-taspri__posix.ads \
!   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
!   system.ads<libgnat/system-linux-m68k.ads
  
!   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
  
    EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
    EH_MECHANISM=-gcc
*************** endif
*** 2094,2116 ****
  # SH4 Linux
  ifeq ($(strip $(filter-out sh4% linux%,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
!   a-intnam.ads<a-intnam-linux.ads \
!   s-inmaop.adb<s-inmaop-posix.adb \
!   s-intman.adb<s-intman-posix.adb \
!   s-linux.ads<s-linux.ads \
!   s-osinte.adb<s-osinte-posix.adb \
!   s-osinte.ads<s-osinte-linux.ads \
!   s-osprim.adb<s-osprim-posix.adb \
!   s-taprop.adb<s-taprop-linux.adb \
!   s-tasinf.ads<s-tasinf-linux.ads \
!   s-tasinf.adb<s-tasinf-linux.adb \
!   s-taspri.ads<s-taspri-posix-noaltstack.ads \
!   s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
!   system.ads<system-linux-sh4.ads
  
!   TOOLS_TARGET_PAIRS =  \
!     mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
!     indepsw.adb<indepsw-linux.adb
  
    EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
    EH_MECHANISM=-gcc
--- 1726,1746 ----
  # SH4 Linux
  ifeq ($(strip $(filter-out sh4% linux%,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
!   a-intnam.ads<libgnarl/a-intnam__linux.ads \
!   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
!   s-intman.adb<libgnarl/s-intman__posix.adb \
!   s-linux.ads<libgnarl/s-linux.ads \
!   s-osinte.adb<libgnarl/s-osinte__posix.adb \
!   s-osinte.ads<libgnarl/s-osinte__linux.ads \
!   s-osprim.adb<libgnat/s-osprim__posix.adb \
!   s-taprop.adb<libgnarl/s-taprop__linux.adb \
!   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
!   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
!   s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
!   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
!   system.ads<libgnat/system-linux-sh4.ads
  
!   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-linux.adb
  
    EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
    EH_MECHANISM=-gcc
*************** endif
*** 2124,2161 ****
  # IA64 Linux
  ifeq ($(strip $(filter-out %ia64 linux%,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
!   a-exetim.adb<a-exetim-posix.adb \
!   a-exetim.ads<a-exetim-default.ads \
!   a-intnam.ads<a-intnam-linux.ads \
!   a-numaux.ads<a-numaux-libc-x86.ads \
!   a-synbar.adb<a-synbar-posix.adb \
!   a-synbar.ads<a-synbar-posix.ads \
!   s-inmaop.adb<s-inmaop-posix.adb \
!   s-intman.adb<s-intman-posix.adb \
!   s-linux.ads<s-linux.ads \
!   s-mudido.adb<s-mudido-affinity.adb \
!   s-osinte.ads<s-osinte-linux.ads \
!   s-osinte.adb<s-osinte-posix.adb \
!   s-osprim.adb<s-osprim-posix.adb \
!   s-taprop.adb<s-taprop-linux.adb \
!   s-tasinf.ads<s-tasinf-linux.ads \
!   s-tasinf.adb<s-tasinf-linux.adb \
!   s-tpopsp.adb<s-tpopsp-tls.adb \
!   s-taspri.ads<s-taspri-posix-noaltstack.ads \
!   g-sercom.adb<g-sercom-linux.adb \
    $(ATOMICS_TARGET_PAIRS) \
    $(ATOMICS_BUILTINS_TARGET_PAIRS) \
!   system.ads<system-linux-ia64.ads
  
!   TOOLS_TARGET_PAIRS =  \
!     mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
!     indepsw.adb<indepsw-gnu.adb
  
    EXTRA_GNATRTL_TASKING_OBJS=s-linux.o a-exetim.o
    EH_MECHANISM=-gcc
-   MISCLIB=
    THREADSLIB=-lpthread -lrt
    GNATLIB_SHARED=gnatlib-shared-dual
    GMEM_LIB = gmemlib
    LIBRARY_VERSION := $(LIB_VERSION)
  endif
--- 1754,1792 ----
  # IA64 Linux
  ifeq ($(strip $(filter-out %ia64 linux%,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
!   a-exetim.adb<libgnarl/a-exetim__posix.adb \
!   a-exetim.ads<libgnarl/a-exetim__default.ads \
!   a-intnam.ads<libgnarl/a-intnam__linux.ads \
!   a-numaux.ads<libgnat/a-numaux__libc-x86.ads \
!   a-synbar.adb<libgnarl/a-synbar__posix.adb \
!   a-synbar.ads<libgnarl/a-synbar__posix.ads \
!   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
!   s-intman.adb<libgnarl/s-intman__posix.adb \
!   s-linux.ads<libgnarl/s-linux.ads \
!   s-mudido.adb<libgnarl/s-mudido__affinity.adb \
!   s-osinte.ads<libgnarl/s-osinte__linux.ads \
!   s-osinte.adb<libgnarl/s-osinte__posix.adb \
!   s-osprim.adb<libgnat/s-osprim__posix.adb \
!   s-taprop.adb<libgnarl/s-taprop__linux.adb \
!   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
!   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
!   s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
!   s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
!   g-sercom.adb<libgnat/g-sercom__linux.adb \
!   $(TRASYM_DWARF_UNIX_PAIRS) \
!   s-tsmona.adb<libgnat/s-tsmona__linux.adb \
    $(ATOMICS_TARGET_PAIRS) \
    $(ATOMICS_BUILTINS_TARGET_PAIRS) \
!   system.ads<libgnat/system-linux-ia64.ads
  
!   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
  
+   EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
    EXTRA_GNATRTL_TASKING_OBJS=s-linux.o a-exetim.o
    EH_MECHANISM=-gcc
    THREADSLIB=-lpthread -lrt
    GNATLIB_SHARED=gnatlib-shared-dual
+   MISCLIB = -ldl
    GMEM_LIB = gmemlib
    LIBRARY_VERSION := $(LIB_VERSION)
  endif
*************** endif
*** 2163,2183 ****
  # IA64 HP-UX
  ifeq ($(strip $(filter-out ia64% hp hpux%,$(target_cpu) $(target_vendor) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
!   a-intnam.ads<a-intnam-hpux.ads \
!   s-inmaop.adb<s-inmaop-posix.adb \
!   s-intman.adb<s-intman-posix.adb \
!   s-osinte.adb<s-osinte-posix.adb \
!   s-osinte.ads<s-osinte-hpux.ads \
!   s-osprim.adb<s-osprim-posix.adb \
!   s-taprop.adb<s-taprop-posix.adb \
!   s-taspri.ads<s-taspri-posix.ads \
!   s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
    $(ATOMICS_TARGET_PAIRS) \
    $(ATOMICS_BUILTINS_TARGET_PAIRS) \
!   system.ads<system-hpux-ia64.ads
  
!   TOOLS_TARGET_PAIRS = \
!   mlib-tgt-specific.adb<mlib-tgt-specific-ia64-hpux.adb
  
    MISCLIB=
    EH_MECHANISM=-gcc
--- 1794,1814 ----
  # IA64 HP-UX
  ifeq ($(strip $(filter-out ia64% hp hpux%,$(target_cpu) $(target_vendor) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
!   a-intnam.ads<libgnarl/a-intnam__hpux.ads \
!   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
!   s-intman.adb<libgnarl/s-intman__posix.adb \
!   s-osinte.adb<libgnarl/s-osinte__posix.adb \
!   s-osinte.ads<libgnarl/s-osinte__hpux.ads \
!   s-osprim.adb<libgnat/s-osprim__posix.adb \
!   s-taprop.adb<libgnarl/s-taprop__posix.adb \
!   s-taspri.ads<libgnarl/s-taspri__posix.ads \
!   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
!   $(TRASYM_DWARF_UNIX_PAIRS) \
    $(ATOMICS_TARGET_PAIRS) \
    $(ATOMICS_BUILTINS_TARGET_PAIRS) \
!   system.ads<libgnat/system-hpux-ia64.ads
  
!   EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
  
    MISCLIB=
    EH_MECHANISM=-gcc
*************** endif
*** 2192,2216 ****
  # Alpha Linux
  ifeq ($(strip $(filter-out alpha% linux%,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
!   a-intnam.ads<a-intnam-linux.ads \
!   s-inmaop.adb<s-inmaop-posix.adb \
!   s-intman.adb<s-intman-posix.adb \
!   s-linux.ads<s-linux-alpha.ads \
!   s-osinte.ads<s-osinte-linux.ads \
!   s-osinte.adb<s-osinte-posix.adb \
!   s-osprim.adb<s-osprim-posix.adb \
!   s-taprop.adb<s-taprop-linux.adb \
!   s-tasinf.ads<s-tasinf-linux.ads \
!   s-tasinf.adb<s-tasinf-linux.adb \
!   s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
!   s-taspri.ads<s-taspri-posix-noaltstack.ads \
    $(ATOMICS_TARGET_PAIRS) \
    $(ATOMICS_BUILTINS_TARGET_PAIRS) \
!   system.ads<system-linux-alpha.ads
  
!   TOOLS_TARGET_PAIRS =  \
!     mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
!     indepsw.adb<indepsw-gnu.adb
  
    EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
    EH_MECHANISM=-gcc
--- 1823,1845 ----
  # Alpha Linux
  ifeq ($(strip $(filter-out alpha% linux%,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
!   a-intnam.ads<libgnarl/a-intnam__linux.ads \
!   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
!   s-intman.adb<libgnarl/s-intman__posix.adb \
!   s-linux.ads<libgnarl/s-linux__alpha.ads \
!   s-osinte.ads<libgnarl/s-osinte__linux.ads \
!   s-osinte.adb<libgnarl/s-osinte__posix.adb \
!   s-osprim.adb<libgnat/s-osprim__posix.adb \
!   s-taprop.adb<libgnarl/s-taprop__linux.adb \
!   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
!   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
!   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
!   s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
    $(ATOMICS_TARGET_PAIRS) \
    $(ATOMICS_BUILTINS_TARGET_PAIRS) \
!   system.ads<libgnat/system-linux-alpha.ads
  
!   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
  
    EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
    EH_MECHANISM=-gcc
*************** endif
*** 2223,2255 ****
  # x86-64 Linux
  ifeq ($(strip $(filter-out %x86_64 linux%,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
!   a-exetim.adb<a-exetim-posix.adb \
!   a-exetim.ads<a-exetim-default.ads \
!   a-intnam.ads<a-intnam-linux.ads \
!   a-synbar.adb<a-synbar-posix.adb \
!   a-synbar.ads<a-synbar-posix.ads \
!   s-inmaop.adb<s-inmaop-posix.adb \
!   s-intman.adb<s-intman-posix.adb \
!   s-linux.ads<s-linux.ads \
!   s-mudido.adb<s-mudido-affinity.adb \
!   s-osinte.ads<s-osinte-linux.ads \
!   s-osinte.adb<s-osinte-posix.adb \
!   s-osprim.adb<s-osprim-posix.adb \
!   s-taprop.adb<s-taprop-linux.adb \
!   s-tasinf.ads<s-tasinf-linux.ads \
!   s-tasinf.adb<s-tasinf-linux.adb \
!   s-tpopsp.adb<s-tpopsp-tls.adb \
!   s-taspri.ads<s-taspri-posix.ads \
!   g-sercom.adb<g-sercom-linux.adb \
    $(ATOMICS_TARGET_PAIRS) \
    $(X86_64_TARGET_PAIRS) \
!   system.ads<system-linux-x86.ads
  
!   TOOLS_TARGET_PAIRS =  \
!     mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
!     indepsw.adb<indepsw-gnu.adb
  
    EXTRA_GNATRTL_NONTASKING_OBJS += g-sse.o g-ssvety.o
    EXTRA_GNATRTL_TASKING_OBJS=s-linux.o a-exetim.o
  
    EH_MECHANISM=-gcc
--- 1852,1885 ----
  # x86-64 Linux
  ifeq ($(strip $(filter-out %x86_64 linux%,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
!   a-exetim.adb<libgnarl/a-exetim__posix.adb \
!   a-exetim.ads<libgnarl/a-exetim__default.ads \
!   a-intnam.ads<libgnarl/a-intnam__linux.ads \
!   a-synbar.adb<libgnarl/a-synbar__posix.adb \
!   a-synbar.ads<libgnarl/a-synbar__posix.ads \
!   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
!   s-intman.adb<libgnarl/s-intman__posix.adb \
!   s-linux.ads<libgnarl/s-linux.ads \
!   s-mudido.adb<libgnarl/s-mudido__affinity.adb \
!   s-osinte.ads<libgnarl/s-osinte__linux.ads \
!   s-osinte.adb<libgnarl/s-osinte__posix.adb \
!   s-osprim.adb<libgnat/s-osprim__posix.adb \
!   s-taprop.adb<libgnarl/s-taprop__linux.adb \
!   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
!   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
!   s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
!   s-taspri.ads<libgnarl/s-taspri__posix.ads \
!   g-sercom.adb<libgnat/g-sercom__linux.adb \
!   $(TRASYM_DWARF_UNIX_PAIRS) \
!   s-tsmona.adb<libgnat/s-tsmona__linux.adb \
    $(ATOMICS_TARGET_PAIRS) \
    $(X86_64_TARGET_PAIRS) \
!   system.ads<libgnat/system-linux-x86.ads
  
!   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
  
    EXTRA_GNATRTL_NONTASKING_OBJS += g-sse.o g-ssvety.o
+   EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
    EXTRA_GNATRTL_TASKING_OBJS=s-linux.o a-exetim.o
  
    EH_MECHANISM=-gcc
*************** endif
*** 2262,2292 ****
  
  ifeq ($(strip $(filter-out %x32 linux%,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
!   a-exetim.adb<a-exetim-posix.adb \
!   a-exetim.ads<a-exetim-default.ads \
!   a-intnam.ads<a-intnam-linux.ads \
!   a-synbar.adb<a-synbar-posix.adb \
!   a-synbar.ads<a-synbar-posix.ads \
!   s-inmaop.adb<s-inmaop-posix.adb \
!   s-intman.adb<s-intman-posix.adb \
!   s-linux.ads<s-linux-x32.ads \
!   s-mudido.adb<s-mudido-affinity.adb \
!   s-osinte.ads<s-osinte-linux.ads \
!   s-osinte.adb<s-osinte-x32.adb \
!   s-osprim.adb<s-osprim-x32.adb \
!   s-taprop.adb<s-taprop-linux.adb \
!   s-tasinf.ads<s-tasinf-linux.ads \
!   s-tasinf.adb<s-tasinf-linux.adb \
!   s-tpopsp.adb<s-tpopsp-tls.adb \
!   s-taspri.ads<s-taspri-posix.ads \
!   g-sercom.adb<g-sercom-linux.adb \
    $(ATOMICS_TARGET_PAIRS) \
    $(X86_64_TARGET_PAIRS) \
!   system.ads<system-linux-x86.ads
  
!   TOOLS_TARGET_PAIRS =  \
!     mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
!     indepsw.adb<indepsw-gnu.adb
  
    EXTRA_GNATRTL_NONTASKING_OBJS=g-sse.o g-ssvety.o
    EXTRA_GNATRTL_TASKING_OBJS=s-linux.o a-exetim.o
--- 1892,1920 ----
  
  ifeq ($(strip $(filter-out %x32 linux%,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
!   a-exetim.adb<libgnarl/a-exetim__posix.adb \
!   a-exetim.ads<libgnarl/a-exetim__default.ads \
!   a-intnam.ads<libgnarl/a-intnam__linux.ads \
!   a-synbar.adb<libgnarl/a-synbar__posix.adb \
!   a-synbar.ads<libgnarl/a-synbar__posix.ads \
!   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
!   s-intman.adb<libgnarl/s-intman__posix.adb \
!   s-linux.ads<libgnarl/s-linux__x32.ads \
!   s-mudido.adb<libgnarl/s-mudido__affinity.adb \
!   s-osinte.ads<libgnarl/s-osinte__linux.ads \
!   s-osinte.adb<libgnarl/s-osinte__x32.adb \
!   s-osprim.adb<libgnat/s-osprim__x32.adb \
!   s-taprop.adb<libgnarl/s-taprop__linux.adb \
!   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
!   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
!   s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
!   s-taspri.ads<libgnarl/s-taspri__posix.ads \
!   g-sercom.adb<libgnat/g-sercom__linux.adb \
    $(ATOMICS_TARGET_PAIRS) \
    $(X86_64_TARGET_PAIRS) \
!   system.ads<libgnat/system-linux-x86.ads
  
!   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
  
    EXTRA_GNATRTL_NONTASKING_OBJS=g-sse.o g-ssvety.o
    EXTRA_GNATRTL_TASKING_OBJS=s-linux.o a-exetim.o
*************** endif
*** 2301,2320 ****
  ifeq ($(strip $(filter-out darwin%,$(target_os))),)
    SO_OPTS = -shared-libgcc
    LIBGNAT_TARGET_PAIRS = \
!     a-intnam.ads<a-intnam-darwin.ads \
!     s-inmaop.adb<s-inmaop-posix.adb \
!     s-osinte.adb<s-osinte-darwin.adb \
!     s-osinte.ads<s-osinte-darwin.ads \
!     s-taprop.adb<s-taprop-posix.adb \
!     s-taspri.ads<s-taspri-posix.ads \
!     s-tpopsp.adb<s-tpopsp-posix-foreign.adb
  
    ifeq ($(strip $(filter-out %86,$(target_cpu))),)
      LIBGNAT_TARGET_PAIRS += \
!       s-intman.adb<s-intman-susv3.adb \
!       s-osprim.adb<s-osprim-darwin.adb \
        $(ATOMICS_TARGET_PAIRS) \
!       system.ads<system-darwin-x86.ads
  
      ifeq ($(strip $(MULTISUBDIR)),/x86_64)
        SO_OPTS += -m64
--- 1929,1949 ----
  ifeq ($(strip $(filter-out darwin%,$(target_os))),)
    SO_OPTS = -shared-libgcc
    LIBGNAT_TARGET_PAIRS = \
!     a-intnam.ads<libgnarl/a-intnam__darwin.ads \
!     s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
!     s-osinte.adb<libgnarl/s-osinte__darwin.adb \
!     s-osinte.ads<libgnarl/s-osinte__darwin.ads \
!     s-taprop.adb<libgnarl/s-taprop__posix.adb \
!     s-taspri.ads<libgnarl/s-taspri__posix.ads \
!     g-sercom.adb<libgnat/g-sercom__linux.adb \
!     s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb
  
    ifeq ($(strip $(filter-out %86,$(target_cpu))),)
      LIBGNAT_TARGET_PAIRS += \
!       s-intman.adb<libgnarl/s-intman__susv3.adb \
!       s-osprim.adb<libgnat/s-osprim__darwin.adb \
        $(ATOMICS_TARGET_PAIRS) \
!       system.ads<libgnat/system-darwin-x86.ads
  
      ifeq ($(strip $(MULTISUBDIR)),/x86_64)
        SO_OPTS += -m64
*************** ifeq ($(strip $(filter-out darwin%,$(tar
*** 2328,2339 ****
  
    ifeq ($(strip $(filter-out %x86_64,$(target_cpu))),)
      LIBGNAT_TARGET_PAIRS += \
!       s-intman.adb<s-intman-susv3.adb \
!       s-osprim.adb<s-osprim-darwin.adb \
!       a-exetim.ads<a-exetim-default.ads \
!       a-exetim.adb<a-exetim-darwin.adb \
        $(ATOMICS_TARGET_PAIRS) \
!       system.ads<system-darwin-x86.ads
  
      ifeq ($(strip $(MULTISUBDIR)),/i386)
        SO_OPTS += -m32
--- 1957,1968 ----
  
    ifeq ($(strip $(filter-out %x86_64,$(target_cpu))),)
      LIBGNAT_TARGET_PAIRS += \
!       s-intman.adb<libgnarl/s-intman__susv3.adb \
!       s-osprim.adb<libgnat/s-osprim__darwin.adb \
!       a-exetim.ads<libgnarl/a-exetim__default.ads \
!       a-exetim.adb<libgnarl/a-exetim__darwin.adb \
        $(ATOMICS_TARGET_PAIRS) \
!       system.ads<libgnat/system-darwin-x86.ads
  
      ifeq ($(strip $(MULTISUBDIR)),/i386)
        SO_OPTS += -m32
*************** ifeq ($(strip $(filter-out darwin%,$(tar
*** 2348,2360 ****
  
    ifeq ($(strip $(filter-out powerpc%,$(target_cpu))),)
      LIBGNAT_TARGET_PAIRS += \
!       s-intman.adb<s-intman-posix.adb \
!       s-osprim.adb<s-osprim-posix.adb \
!       a-numaux.ads<a-numaux-darwin.ads \
!       a-numaux.adb<a-numaux-darwin.adb \
        $(ATOMICS_TARGET_PAIRS) \
        $(ATOMICS_BUILTINS_TARGET_PAIRS) \
!       system.ads<system-darwin-ppc.ads
  
      ifeq ($(strip $(MULTISUBDIR)),/ppc64)
          SO_OPTS += -m64
--- 1977,1989 ----
  
    ifeq ($(strip $(filter-out powerpc%,$(target_cpu))),)
      LIBGNAT_TARGET_PAIRS += \
!       s-intman.adb<libgnarl/s-intman__posix.adb \
!       s-osprim.adb<libgnat/s-osprim__posix.adb \
!       a-numaux.ads<libgnat/a-numaux__darwin.ads \
!       a-numaux.adb<libgnat/a-numaux__darwin.adb \
        $(ATOMICS_TARGET_PAIRS) \
        $(ATOMICS_BUILTINS_TARGET_PAIRS) \
!       system.ads<libgnat/system-darwin-ppc.ads
  
      ifeq ($(strip $(MULTISUBDIR)),/ppc64)
          SO_OPTS += -m64
*************** ifeq ($(strip $(filter-out darwin%,$(tar
*** 2363,2393 ****
  
    ifeq ($(strip $(filter-out arm,$(target_cpu))),)
      LIBGNAT_TARGET_PAIRS += \
!       s-intman.adb<s-intman-susv3.adb \
!       s-osprim.adb<s-osprim-darwin.adb \
        $(ATOMICS_TARGET_PAIRS) \
        $(ATOMICS_BUILTINS_TARGET_PAIRS)
  
      LIBGNAT_TARGET_PAIRS += \
!       system.ads<system-darwin-arm.ads
    endif
  
    ifeq ($(strip $(filter-out arm64 aarch64,$(target_cpu))),)
      LIBGNAT_TARGET_PAIRS += \
!       s-intman.adb<s-intman-susv3.adb \
!       s-osprim.adb<s-osprim-darwin.adb \
        $(ATOMICS_TARGET_PAIRS) \
        $(ATOMICS_BUILTINS_TARGET_PAIRS)
  
      EXTRA_LIBGNAT_OBJS+=sigtramp-ios.o
      EXTRA_LIBGNAT_SRCS+=sigtramp.h
      LIBGNAT_TARGET_PAIRS += \
!       system.ads<system-darwin-arm.ads
    endif
  
!   TOOLS_TARGET_PAIRS =  \
!     mlib-tgt-specific.adb<mlib-tgt-specific-darwin.adb \
!     indepsw.adb<indepsw-darwin.adb
  
    EH_MECHANISM=-gcc
    GNATLIB_SHARED = gnatlib-shared-darwin
--- 1992,2020 ----
  
    ifeq ($(strip $(filter-out arm,$(target_cpu))),)
      LIBGNAT_TARGET_PAIRS += \
!       s-intman.adb<libgnarl/s-intman__susv3.adb \
!       s-osprim.adb<libgnat/s-osprim__darwin.adb \
        $(ATOMICS_TARGET_PAIRS) \
        $(ATOMICS_BUILTINS_TARGET_PAIRS)
  
      LIBGNAT_TARGET_PAIRS += \
!       system.ads<libgnat/system-darwin-arm.ads
    endif
  
    ifeq ($(strip $(filter-out arm64 aarch64,$(target_cpu))),)
      LIBGNAT_TARGET_PAIRS += \
!       s-intman.adb<libgnarl/s-intman__susv3.adb \
!       s-osprim.adb<libgnat/s-osprim__darwin.adb \
        $(ATOMICS_TARGET_PAIRS) \
        $(ATOMICS_BUILTINS_TARGET_PAIRS)
  
      EXTRA_LIBGNAT_OBJS+=sigtramp-ios.o
      EXTRA_LIBGNAT_SRCS+=sigtramp.h
      LIBGNAT_TARGET_PAIRS += \
!       system.ads<libgnat/system-darwin-arm.ads
    endif
  
!   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-darwin.adb
  
    EH_MECHANISM=-gcc
    GNATLIB_SHARED = gnatlib-shared-darwin
*************** endif
*** 2399,2430 ****
  
  ifeq ($(EH_MECHANISM),-gcc)
    LIBGNAT_TARGET_PAIRS += \
!     a-exexpr.adb<a-exexpr-gcc.adb \
!     s-excmac.ads<s-excmac-gcc.ads
    EXTRA_LIBGNAT_OBJS+=raise-gcc.o
    EXTRA_GNATRTL_NONTASKING_OBJS+=g-cppexc.o s-excmac.o
  endif
  
  ifeq ($(EH_MECHANISM),-arm)
    LIBGNAT_TARGET_PAIRS += \
!     a-exexpr.adb<a-exexpr-gcc.adb \
!     s-excmac.ads<s-excmac-arm.ads
    EXTRA_LIBGNAT_OBJS+=raise-gcc.o
    EXTRA_GNATRTL_NONTASKING_OBJS+=g-cppexc.o s-excmac.o
  endif
  
- # Use the Ada 2005 version of Ada.Exceptions by default, unless specified
- # explicitly already. The base files (a-except.ad?) are used only for building
- # the compiler and other basic tools.
- # These base versions lack Ada 2005 additions which would cause bootstrap
- # problems if included in the compiler and other basic tools.
- 
- ifeq ($(filter a-except%,$(LIBGNAT_TARGET_PAIRS)),)
-   LIBGNAT_TARGET_PAIRS += \
-     a-except.ads<a-except-2005.ads \
-     a-except.adb<a-except-2005.adb
- endif
- 
  # Configuration of host tools
  
  # Under linux, host tools need to be linked with -ldl
--- 2026,2045 ----
  
  ifeq ($(EH_MECHANISM),-gcc)
    LIBGNAT_TARGET_PAIRS += \
!     s-excmac.ads<libgnat/s-excmac__gcc.ads \
!     s-excmac.adb<libgnat/s-excmac__gcc.adb
    EXTRA_LIBGNAT_OBJS+=raise-gcc.o
    EXTRA_GNATRTL_NONTASKING_OBJS+=g-cppexc.o s-excmac.o
  endif
  
  ifeq ($(EH_MECHANISM),-arm)
    LIBGNAT_TARGET_PAIRS += \
!     s-excmac.ads<libgnat/s-excmac__arm.ads \
!     s-excmac.adb<libgnat/s-excmac__arm.adb
    EXTRA_LIBGNAT_OBJS+=raise-gcc.o
    EXTRA_GNATRTL_NONTASKING_OBJS+=g-cppexc.o s-excmac.o
  endif
  
  # Configuration of host tools
  
  # Under linux, host tools need to be linked with -ldl
*************** LIBGNAT_OBJS = adadecode.o adaint.o argv
*** 2451,2457 ****
  
  LIBGNAT_SRCS = $(patsubst %.o,%.c,$(LIBGNAT_OBJS))			\
    adadecode.h adaint.h env.h gsocket.h raise.h standard.ads.h		\
!   tb-gcc.c thread.c $(EXTRA_LIBGNAT_SRCS)
  
  # GNATRTL_NONTASKING_OBJS and GNATRTL_TASKING_OBJS can be found in
  # the following include file:
--- 2066,2072 ----
  
  LIBGNAT_SRCS = $(patsubst %.o,%.c,$(LIBGNAT_OBJS))			\
    adadecode.h adaint.h env.h gsocket.h raise.h standard.ads.h		\
!   tb-gcc.c libgnarl/thread.c $(EXTRA_LIBGNAT_SRCS)
  
  # GNATRTL_NONTASKING_OBJS and GNATRTL_TASKING_OBJS can be found in
  # the following include file:
*************** GNATRTL_OBJS = $(GNATRTL_NONTASKING_OBJS
*** 2463,2474 ****
    memtrack.o
  
  # Run time source files
  ADA_INCLUDE_SRCS =\
!  ada.ads calendar.ads directio.ads gnat.ads interfac.ads ioexcept.ads \
!  machcode.ads text_io.ads unchconv.ads unchdeal.ads \
!  sequenio.ads system.ads memtrack.adb \
!  a-[a-o]*.adb a-[p-z]*.adb a-[a-o]*.ads a-[p-z]*.ads g-*.ad? i-*.ad? \
!  s-[a-o]*.adb s-[p-z]*.adb s-[a-o]*.ads s-[p-z]*.ads
  
  # Files that are in ADA_INCLUDE_SRCS but not in all configurations.
  # They will be removed from the run time if not used.
--- 2078,2099 ----
    memtrack.o
  
  # Run time source files
+ # Note that libgnat contains a significant number of files. In orde to avoid
+ # command line length limitations the source regexp has been split for that
+ # directory.
  ADA_INCLUDE_SRCS =\
!  libgnat/ada.ads libgnat/calendar.ads libgnat/directio.ads libgnat/gnat.ads libgnat/interfac.ads libgnat/ioexcept.ads \
!  libgnat/machcode.ads libgnat/text_io.ads libgnat/unchconv.ads libgnat/unchdeal.ads \
!  libgnat/sequenio.ads libgnat/system.ads libgnat/memtrack.adb \
!  libgnat/a-[a-o]*.adb libgnat/a-[a-o]*.ads \
!  libgnat/a-[p-z]*.adb libgnat/a-[p-z]*.ads \
!  libgnat/g-[a-o]*.adb libgnat/g-[a-o]*.ads \
!  libgnat/g-[p-z]*.adb libgnat/g-[p-z]*.ads \
!  libgnat/s-[a-o]*.adb libgnat/s-[a-o]*.ads \
!  libgnat/s-[p-z]*.adb libgnat/s-[p-z]*.ads \
!  libgnat/i-[a-o]*.adb libgnat/i-[a-o]*.ads \
!  libgnat/i-[p-z]*.adb libgnat/i-[p-z]*.ads \
!  libgnarl/[agis]-[a-z]*.ad[sb]
  
  # Files that are in ADA_INCLUDE_SRCS but not in all configurations.
  # They will be removed from the run time if not used.
*************** ADA_EXCLUDE_SRCS =\
*** 2477,2483 ****
    g-altive.ads g-alveop.adb g-alveop.ads g-alvety.ads g-alvevi.ads \
    g-intpri.ads g-regist.adb g-regist.ads g-sse.ads    g-ssvety.ads \
    i-vxinco.adb i-vxinco.ads i-vxwoio.adb i-vxwoio.ads i-vxwork.ads \
-   i-bit_types.ads \
    s-bb.ads     s-bbbosu.ads s-bbcaco.ads s-bbcppr.ads s-bbexti.adb \
    s-bbexti.ads s-bbinte.adb s-bbinte.ads s-bbprot.adb s-bbprot.ads \
    s-bbsle3.ads s-bbsuer.ads s-bbsule.ads s-bbthqu.adb s-bbthqu.ads \
--- 2102,2107 ----
*************** ADA_EXCLUDE_SRCS =\
*** 2489,2498 ****
    s-memcom.adb s-memcom.ads s-memmov.adb s-memmov.ads s-memset.adb \
    s-memset.ads s-mufalo.adb s-mufalo.ads s-musplo.adb s-musplo.ads \
    s-sam4.ads   s-sopco3.adb s-sopco3.ads s-sopco4.adb s-sopco4.ads \
!   s-sopco5.adb s-sopco5.ads s-stchop.ads s-stchop.adb \
!   s-stm32.ads \
    s-strcom.adb s-strcom.ads s-thread.ads \
!   s-vxwexc.adb s-vxwexc.ads s-vxwext.adb s-vxwext.ads \
    s-win32.ads  s-winext.ads
  
  # ADA_EXCLUDE_SRCS without the sources used by the target
--- 2113,2121 ----
    s-memcom.adb s-memcom.ads s-memmov.adb s-memmov.ads s-memset.adb \
    s-memset.ads s-mufalo.adb s-mufalo.ads s-musplo.adb s-musplo.ads \
    s-sam4.ads   s-sopco3.adb s-sopco3.ads s-sopco4.adb s-sopco4.ads \
!   s-sopco5.adb s-sopco5.ads s-stchop.ads s-stchop.adb s-stm32.ads \
    s-strcom.adb s-strcom.ads s-thread.ads \
!   s-vxwext.adb s-vxwext.ads \
    s-win32.ads  s-winext.ads
  
  # ADA_EXCLUDE_SRCS without the sources used by the target
*************** TOOLS_FLAGS_TO_PASS=		\
*** 2519,2525 ****
  	"GNATLINK=$(GNATLINK)"	\
  	"GNATBIND=$(GNATBIND)"
  
! GCC_LINK=$(CXX) $(GCC_LINK_FLAGS) $(ADA_INCLUDES) $(LDFLAGS)
  
  # Build directory for the tools. Let's copy the target-dependent
  # sources using the same mechanism as for gnatlib. The other sources are
--- 2142,2148 ----
  	"GNATLINK=$(GNATLINK)"	\
  	"GNATBIND=$(GNATBIND)"
  
! GCC_LINK=$(CXX) $(GCC_LINK_FLAGS) $(LDFLAGS)
  
  # Build directory for the tools. Let's copy the target-dependent
  # sources using the same mechanism as for gnatlib. The other sources are
*************** common-tools: ../stamp-tools
*** 2591,2630 ****
  	  gnatchop gnatcmd gnatkr gnatls gnatprep gnatxref gnatfind gnatname \
  	  gnatclean -bargs $(ADA_INCLUDES) $(GNATBIND_FLAGS)
  	$(GNATLINK) -v gnatcmd -o ../../gnat$(exeext) \
! 		--GCC="$(GCC_LINK)" $(TOOLS_LIBS)
  	$(GNATLINK) -v gnatchop -o ../../gnatchop$(exeext) \
! 		--GCC="$(GCC_LINK)" $(TOOLS_LIBS)
  	$(GNATLINK) -v gnatkr -o ../../gnatkr$(exeext) \
! 		--GCC="$(GCC_LINK)" $(TOOLS_LIBS)
  	$(GNATLINK) -v gnatls -o ../../gnatls$(exeext) \
! 		--GCC="$(GCC_LINK)" $(TOOLS_LIBS)
  	$(GNATLINK) -v gnatprep -o ../../gnatprep$(exeext) \
! 		--GCC="$(GCC_LINK)" $(TOOLS_LIBS)
  	$(GNATLINK) -v gnatxref -o ../../gnatxref$(exeext) \
! 		--GCC="$(GCC_LINK)" $(TOOLS_LIBS)
  	$(GNATLINK) -v gnatfind -o ../../gnatfind$(exeext) \
! 		--GCC="$(GCC_LINK)" $(TOOLS_LIBS)
  	$(GNATLINK) -v gnatname -o ../../gnatname$(exeext) \
! 		--GCC="$(GCC_LINK)" $(TOOLS_LIBS)
  	$(GNATLINK) -v gnatclean -o ../../gnatclean$(exeext) \
! 		--GCC="$(GCC_LINK)" $(TOOLS_LIBS)
  
  ../../gnatdll$(exeext): ../stamp-tools
  	$(GNATMAKE) -c $(ADA_INCLUDES) gnatdll --GCC="$(CC) $(ALL_ADAFLAGS)"
  	$(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) gnatdll
! 	$(GNATLINK) -v gnatdll -o $@ --GCC="$(GCC_LINK)" $(TOOLS_LIBS)
  
  ../../vxaddr2line$(exeext): ../stamp-tools
  	$(GNATMAKE) -c  $(ADA_INCLUDES) vxaddr2line --GCC="$(CC) $(ALL_ADAFLAGS)"
  	$(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) vxaddr2line
! 	$(GNATLINK) -v vxaddr2line -o $@ --GCC="$(GCC_LINK)" ../targext.o $(CLIB)
  
  gnatmake-re: ../stamp-tools
  	$(GNATMAKE) -j0 $(ADA_INCLUDES) -u sdefault --GCC="$(CC) $(MOST_ADA_FLAGS)"
  	$(GNATMAKE) -j0 -c $(ADA_INCLUDES) gnatmake --GCC="$(CC) $(ALL_ADAFLAGS)"
  	$(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) gnatmake
  	$(GNATLINK) -v gnatmake -o ../../gnatmake$(exeext) \
! 		--GCC="$(GCC_LINK)" $(TOOLS_LIBS)
  
  # Note the use of the "mv" command in order to allow gnatlink to be linked with
  # with the former version of gnatlink itself which cannot override itself.
--- 2214,2255 ----
  	  gnatchop gnatcmd gnatkr gnatls gnatprep gnatxref gnatfind gnatname \
  	  gnatclean -bargs $(ADA_INCLUDES) $(GNATBIND_FLAGS)
  	$(GNATLINK) -v gnatcmd -o ../../gnat$(exeext) \
! 	  --GCC="$(CC) $(ADA_INCLUDES)" --LINK="$(GCC_LINK)" $(TOOLS_LIBS)
  	$(GNATLINK) -v gnatchop -o ../../gnatchop$(exeext) \
! 	  --GCC="$(CC) $(ADA_INCLUDES)" --LINK="$(GCC_LINK)" $(TOOLS_LIBS)
  	$(GNATLINK) -v gnatkr -o ../../gnatkr$(exeext) \
! 	  --GCC="$(CC) $(ADA_INCLUDES)" --LINK="$(GCC_LINK)" $(TOOLS_LIBS)
  	$(GNATLINK) -v gnatls -o ../../gnatls$(exeext) \
! 	  --GCC="$(CC) $(ADA_INCLUDES)" --LINK="$(GCC_LINK)" $(TOOLS_LIBS)
  	$(GNATLINK) -v gnatprep -o ../../gnatprep$(exeext) \
! 	  --GCC="$(CC) $(ADA_INCLUDES)" --LINK="$(GCC_LINK)" $(TOOLS_LIBS)
  	$(GNATLINK) -v gnatxref -o ../../gnatxref$(exeext) \
! 	  --GCC="$(CC) $(ADA_INCLUDES)" --LINK="$(GCC_LINK)" $(TOOLS_LIBS)
  	$(GNATLINK) -v gnatfind -o ../../gnatfind$(exeext) \
! 	  --GCC="$(CC) $(ADA_INCLUDES)" --LINK="$(GCC_LINK)" $(TOOLS_LIBS)
  	$(GNATLINK) -v gnatname -o ../../gnatname$(exeext) \
! 	  --GCC="$(CC) $(ADA_INCLUDES)" --LINK="$(GCC_LINK)" $(TOOLS_LIBS)
  	$(GNATLINK) -v gnatclean -o ../../gnatclean$(exeext) \
! 	  --GCC="$(CC) $(ADA_INCLUDES)" --LINK="$(GCC_LINK)" $(TOOLS_LIBS)
  
  ../../gnatdll$(exeext): ../stamp-tools
  	$(GNATMAKE) -c $(ADA_INCLUDES) gnatdll --GCC="$(CC) $(ALL_ADAFLAGS)"
  	$(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) gnatdll
! 	$(GNATLINK) -v gnatdll -o $@ \
! 	  --GCC="$(CC) $(ADA_INCLUDES)" --LINK="$(GCC_LINK)" $(TOOLS_LIBS)
  
  ../../vxaddr2line$(exeext): ../stamp-tools
  	$(GNATMAKE) -c  $(ADA_INCLUDES) vxaddr2line --GCC="$(CC) $(ALL_ADAFLAGS)"
  	$(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) vxaddr2line
! 	$(GNATLINK) -v vxaddr2line -o $@ \
! 	  --GCC="$(CC) $(ADA_INCLUDES)" --LINK="$(GCC_LINK)" ../targext.o $(CLIB)
  
  gnatmake-re: ../stamp-tools
  	$(GNATMAKE) -j0 $(ADA_INCLUDES) -u sdefault --GCC="$(CC) $(MOST_ADA_FLAGS)"
  	$(GNATMAKE) -j0 -c $(ADA_INCLUDES) gnatmake --GCC="$(CC) $(ALL_ADAFLAGS)"
  	$(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) gnatmake
  	$(GNATLINK) -v gnatmake -o ../../gnatmake$(exeext) \
! 	  --GCC="$(CC) $(ADA_INCLUDES)" --LINK="$(GCC_LINK)" $(TOOLS_LIBS)
  
  # Note the use of the "mv" command in order to allow gnatlink to be linked with
  # with the former version of gnatlink itself which cannot override itself.
*************** gnatlink-re: ../stamp-tools gnatmake-re
*** 2634,2640 ****
  	$(GNATMAKE) -j0 -c $(ADA_INCLUDES) gnatlink --GCC="$(CC) $(ALL_ADAFLAGS)"
  	$(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) gnatlink
  	$(GNATLINK) -v gnatlink -o ../../gnatlinknew$(exeext) \
! 		    --GCC="$(GCC_LINK)" $(TOOLS_LIBS)
  	$(MV)  ../../gnatlinknew$(exeext)  ../../gnatlink$(exeext)
  
  # Needs to be built with CC=gcc
--- 2259,2265 ----
  	$(GNATMAKE) -j0 -c $(ADA_INCLUDES) gnatlink --GCC="$(CC) $(ALL_ADAFLAGS)"
  	$(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) gnatlink
  	$(GNATLINK) -v gnatlink -o ../../gnatlinknew$(exeext) \
! 	  --GCC="$(CC) $(ADA_INCLUDES)" --LINK="$(GCC_LINK)" $(TOOLS_LIBS)
  	$(MV)  ../../gnatlinknew$(exeext)  ../../gnatlink$(exeext)
  
  # Needs to be built with CC=gcc
*************** gnatlink-re: ../stamp-tools gnatmake-re
*** 2642,2651 ****
  #  stamp target in the parent directory whenever gnat1 is rebuilt
  
  # Likewise for the tools
! ../../gnatmake$(exeext): $(P) b_gnatm.o $(GNATMAKE_OBJS)
  	+$(GCC_LINK) $(ALL_CFLAGS) -o $@ b_gnatm.o $(GNATMAKE_OBJS) $(TOOLS_LIBS) $(TOOLS1_LIBS)
  
! ../../gnatlink$(exeext): $(P) b_gnatl.o $(GNATLINK_OBJS)
  	+$(GCC_LINK) $(ALL_CFLAGS) -o $@ b_gnatl.o $(GNATLINK_OBJS) $(TOOLS_LIBS) $(TOOLS1_LIBS)
  
  ../stamp-gnatlib-$(RTSDIR):
--- 2267,2276 ----
  #  stamp target in the parent directory whenever gnat1 is rebuilt
  
  # Likewise for the tools
! ../../gnatmake$(exeext): b_gnatm.o $(GNATMAKE_OBJS)
  	+$(GCC_LINK) $(ALL_CFLAGS) -o $@ b_gnatm.o $(GNATMAKE_OBJS) $(TOOLS_LIBS) $(TOOLS1_LIBS)
  
! ../../gnatlink$(exeext): b_gnatl.o $(GNATLINK_OBJS)
  	+$(GCC_LINK) $(ALL_CFLAGS) -o $@ b_gnatl.o $(GNATLINK_OBJS) $(TOOLS_LIBS) $(TOOLS1_LIBS)
  
  ../stamp-gnatlib-$(RTSDIR):
*************** install-gnatlib: ../stamp-gnatlib-$(RTSD
*** 2730,2738 ****
  # Remove files to be replaced by target dependent sources
  	$(RM) $(foreach PAIR,$(LIBGNAT_TARGET_PAIRS), \
  	                $(RTSDIR)/$(word 1,$(subst <, ,$(PAIR))))
! 	for f in $(RTSDIR)/*-*-*.ads $(RTSDIR)/*-*-*.adb; do \
  	  case "$$f" in \
! 	    $(RTSDIR)/s-stratt-*) ;; \
  	    *) $(RM) $$f ;; \
  	  esac; \
  	done
--- 2355,2363 ----
  # Remove files to be replaced by target dependent sources
  	$(RM) $(foreach PAIR,$(LIBGNAT_TARGET_PAIRS), \
  	                $(RTSDIR)/$(word 1,$(subst <, ,$(PAIR))))
! 	for f in $(RTSDIR)/*-*__*.ads $(RTSDIR)/*-*__*.adb; do \
  	  case "$$f" in \
! 	    $(RTSDIR)/s-stratt__*) ;; \
  	    *) $(RM) $$f ;; \
  	  esac; \
  	done
*************** OSCONS_CC=$(subst ./xgcc,../../xgcc,$(su
*** 2756,2764 ****
  # ada/types.h does not conflict with a same-named system header (VxWorks
  # has a <types.h> header).
  
! OSCONS_CPP=$(OSCONS_CC) $(GNATLIBCFLAGS) $(GNATLIBCFLAGS_FOR_C) -E -C \
    -DTARGET=\"$(target)\" -iquote $(fsrcpfx)ada $(fsrcpfx)ada/s-oscons-tmplt.c > s-oscons-tmplt.i
! OSCONS_EXTRACT=$(OSCONS_CC) -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)
--- 2381,2389 ----
  # 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)\" -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)
diff -Nrcpad gcc-7.3.0/gcc/ada/gcc-interface/ada-tree.h gcc-8.1.0/gcc/ada/gcc-interface/ada-tree.h
*** gcc-7.3.0/gcc/ada/gcc-interface/ada-tree.h	Mon Jul 11 15:02:12 2016
--- gcc-8.1.0/gcc/ada/gcc-interface/ada-tree.h	Wed Jul 19 15:55:47 2017
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 1992-2016, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  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-2017, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is 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 {							 \
*** 209,229 ****
     this is a conflict on the minval field, but there doesn't seem to be
     simple fix, so we'll live with this kludge for now.  */
  #define TYPE_OBJECT_RECORD_TYPE(NODE) \
!   (TYPE_MINVAL (TREE_CHECK2 ((NODE), UNCONSTRAINED_ARRAY_TYPE, ENUMERAL_TYPE)))
  
  /* For numerical types, this is the GCC lower bound of the type.  The GCC
     type system is based on the invariant that an object X of a given type
     cannot hold at run time a value smaller than its lower bound; otherwise
     the behavior is undefined.  The optimizer takes advantage of this and
     considers that the assertion X >= LB is always true.  */
! #define TYPE_GCC_MIN_VALUE(NODE) (TYPE_MINVAL (NUMERICAL_TYPE_CHECK (NODE)))
  
  /* For numerical types, this is the GCC upper bound of the type.  The GCC
     type system is based on the invariant that an object X of a given type
     cannot hold at run time a value larger than its upper bound; otherwise
     the behavior is undefined.  The optimizer takes advantage of this and
     considers that the assertion X <= UB is always true.  */
! #define TYPE_GCC_MAX_VALUE(NODE) (TYPE_MAXVAL (NUMERICAL_TYPE_CHECK (NODE)))
  
  /* For a FUNCTION_TYPE, if the subprogram has parameters passed by copy in/
     copy out, this is the list of nodes used to specify the return values of
--- 209,232 ----
     this is a conflict on the minval field, but there doesn't seem to be
     simple fix, so we'll live with this kludge for now.  */
  #define TYPE_OBJECT_RECORD_TYPE(NODE) \
!   (TYPE_MIN_VALUE_RAW (TREE_CHECK2 ((NODE), UNCONSTRAINED_ARRAY_TYPE, \
! 				    ENUMERAL_TYPE)))
  
  /* For numerical types, this is the GCC lower bound of the type.  The GCC
     type system is based on the invariant that an object X of a given type
     cannot hold at run time a value smaller than its lower bound; otherwise
     the behavior is undefined.  The optimizer takes advantage of this and
     considers that the assertion X >= LB is always true.  */
! #define TYPE_GCC_MIN_VALUE(NODE) \
!   (TYPE_MIN_VALUE_RAW (NUMERICAL_TYPE_CHECK (NODE)))
  
  /* For numerical types, this is the GCC upper bound of the type.  The GCC
     type system is based on the invariant that an object X of a given type
     cannot hold at run time a value larger than its upper bound; otherwise
     the behavior is undefined.  The optimizer takes advantage of this and
     considers that the assertion X <= UB is always true.  */
! #define TYPE_GCC_MAX_VALUE(NODE) \
!   (TYPE_MAX_VALUE_RAW (NUMERICAL_TYPE_CHECK (NODE)))
  
  /* For a FUNCTION_TYPE, if the subprogram has parameters passed by copy in/
     copy out, this is the list of nodes used to specify the return values of
*************** do {						   \
*** 463,468 ****
--- 466,476 ----
     a discriminant of a discriminated type without default expression.  */
  #define DECL_INVARIANT_P(NODE) DECL_LANG_FLAG_4 (FIELD_DECL_CHECK (NODE))
  
+ /* Nonzero in a FUNCTION_DECL if this is a definition, i.e. if it was created
+    by a call to gnat_to_gnu_entity with definition set to True.  */
+ #define DECL_FUNCTION_IS_DEF(NODE) \
+   DECL_LANG_FLAG_4 (FUNCTION_DECL_CHECK (NODE))
+ 
  /* Nonzero in a VAR_DECL if it is a temporary created to hold the return
     value of a function call or 'reference to a function call.  */
  #define DECL_RETURN_VALUE_P(NODE) DECL_LANG_FLAG_5 (VAR_DECL_CHECK (NODE))
diff -Nrcpad gcc-7.3.0/gcc/ada/gcc-interface/decl.c gcc-8.1.0/gcc/ada/gcc-interface/decl.c
*** gcc-7.3.0/gcc/ada/gcc-interface/decl.c	Thu Dec 14 17:05:43 2017
--- gcc-8.1.0/gcc/ada/gcc-interface/decl.c	Tue Mar  6 12:21:27 2018
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2017, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  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-2018, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
*************** struct incomplete
*** 101,108 ****
  static int defer_incomplete_level = 0;
  static struct incomplete *defer_incomplete_list;
  
! /* This variable is used to delay expanding From_Limited_With types until the
!    end of the spec.  */
  static struct incomplete *defer_limited_with_list;
  
  typedef struct subst_pair_d {
--- 101,108 ----
  static int defer_incomplete_level = 0;
  static struct incomplete *defer_incomplete_list;
  
! /* This variable is used to delay expanding types coming from a limited with
!    clause and completed Taft Amendment types until the end of the spec.  */
  static struct incomplete *defer_limited_with_list;
  
  typedef struct subst_pair_d {
*************** static tree elaborate_expression_2 (tree
*** 204,209 ****
--- 204,210 ----
  static tree elaborate_reference (tree, Entity_Id, bool, tree *);
  static tree gnat_to_gnu_component_type (Entity_Id, bool, bool);
  static tree gnat_to_gnu_subprog_type (Entity_Id, bool, bool, tree *);
+ static int adjust_packed (tree, tree, int);
  static tree gnat_to_gnu_field (Entity_Id, tree, int, bool, bool);
  static tree gnu_ext_name_for_subprog (Entity_Id, tree);
  static tree change_qualified_type (tree, int);
*************** static bool constructor_address_p (tree)
*** 217,243 ****
  static bool allocatable_size_p (tree, bool);
  static bool initial_value_needs_conversion (tree, tree);
  static int compare_field_bitpos (const PTR, const PTR);
! static bool components_to_record (tree, Node_Id, tree, int, bool, bool, bool,
! 				  bool, bool, bool, bool, bool, tree, tree *);
  static Uint annotate_value (tree);
  static void annotate_rep (Entity_Id, tree);
  static tree build_position_list (tree, bool, tree, tree, unsigned int, tree);
  static vec<subst_pair> build_subst_list (Entity_Id, Entity_Id, bool);
! static vec<variant_desc> build_variant_list (tree,
! 						   vec<subst_pair> ,
! 						   vec<variant_desc> );
  static tree validate_size (Uint, tree, Entity_Id, enum tree_code, bool, bool);
  static void set_rm_size (Uint, tree, Entity_Id);
  static unsigned int validate_alignment (Uint, Entity_Id, unsigned int);
  static unsigned int promote_object_alignment (tree, Entity_Id);
  static void check_ok_for_atomic_type (tree, Entity_Id, bool);
  static tree create_field_decl_from (tree, tree, tree, tree, tree,
! 				    vec<subst_pair> );
  static tree create_rep_part (tree, tree, tree);
  static tree get_rep_part (tree);
! static tree create_variant_part_from (tree, vec<variant_desc> , tree,
! 				      tree, vec<subst_pair> );
! static void copy_and_substitute_in_size (tree, tree, vec<subst_pair> );
  static void associate_original_type_to_packed_array (tree, Entity_Id);
  static const char *get_entity_char (Entity_Id);
  
--- 218,246 ----
  static bool allocatable_size_p (tree, bool);
  static bool initial_value_needs_conversion (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 *);
  static Uint annotate_value (tree);
  static void annotate_rep (Entity_Id, tree);
  static tree build_position_list (tree, bool, tree, tree, unsigned int, tree);
  static vec<subst_pair> build_subst_list (Entity_Id, Entity_Id, bool);
! static vec<variant_desc> build_variant_list (tree, vec<subst_pair>,
! 					     vec<variant_desc>);
  static tree validate_size (Uint, tree, Entity_Id, enum tree_code, bool, bool);
  static void set_rm_size (Uint, tree, Entity_Id);
  static unsigned int validate_alignment (Uint, Entity_Id, unsigned int);
  static unsigned int promote_object_alignment (tree, Entity_Id);
  static void check_ok_for_atomic_type (tree, Entity_Id, bool);
  static tree create_field_decl_from (tree, tree, tree, tree, tree,
! 				    vec<subst_pair>);
  static tree create_rep_part (tree, tree, tree);
  static tree get_rep_part (tree);
! static tree create_variant_part_from (tree, vec<variant_desc>, tree,
! 				      tree, vec<subst_pair>, bool);
! static void copy_and_substitute_in_size (tree, tree, vec<subst_pair>);
! static void copy_and_substitute_in_layout (Entity_Id, Entity_Id, tree, tree,
! 					   vec<subst_pair>, bool);
  static void associate_original_type_to_packed_array (tree, Entity_Id);
  static const char *get_entity_char (Entity_Id);
  
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 342,355 ****
  	    gnat_temp
  	      = Corresponding_Spec (Parent (Declaration_Node (gnat_temp)));
  
! 	  if (IN (Ekind (gnat_temp), Subprogram_Kind)
  	      && Present (Protected_Body_Subprogram (gnat_temp)))
  	    gnat_temp = Protected_Body_Subprogram (gnat_temp);
  
  	  if (Ekind (gnat_temp) == E_Entry
  	      || Ekind (gnat_temp) == E_Entry_Family
  	      || Ekind (gnat_temp) == E_Task_Type
! 	      || (IN (Ekind (gnat_temp), Subprogram_Kind)
  		  && present_gnu_tree (gnat_temp)
  		  && (current_function_decl
  		      == gnat_to_gnu_entity (gnat_temp, NULL_TREE, false))))
--- 345,358 ----
  	    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);
  
  	  if (Ekind (gnat_temp) == E_Entry
  	      || Ekind (gnat_temp) == E_Entry_Family
  	      || Ekind (gnat_temp) == E_Task_Type
! 	      || (Is_Subprogram (gnat_temp)
  		  && present_gnu_tree (gnat_temp)
  		  && (current_function_decl
  		      == gnat_to_gnu_entity (gnat_temp, NULL_TREE, false))))
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 427,433 ****
       inherit another source location.  */
    gnu_entity_name = get_entity_name (gnat_entity);
    if (Sloc (gnat_entity) != No_Location
!       && !renaming_from_generic_instantiation_p (gnat_entity))
      Sloc_to_locus (Sloc (gnat_entity), &input_location);
  
    /* For cases when we are not defining (i.e., we are referencing from
--- 430,436 ----
       inherit another source location.  */
    gnu_entity_name = get_entity_name (gnat_entity);
    if (Sloc (gnat_entity) != No_Location
!       && !renaming_from_instantiation_p (gnat_entity))
      Sloc_to_locus (Sloc (gnat_entity), &input_location);
  
    /* For cases when we are not defining (i.e., we are referencing from
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 491,498 ****
  
  	/* If the entity is a discriminant of an extended tagged type used to
  	   rename a discriminant of the parent type, return the latter.  */
! 	if (Is_Tagged_Type (gnat_record)
! 	    && Present (Corresponding_Discriminant (gnat_entity)))
  	  {
  	    gnu_decl
  	      = gnat_to_gnu_entity (Corresponding_Discriminant (gnat_entity),
--- 494,502 ----
  
  	/* If the entity is a discriminant of an extended tagged type used to
  	   rename a discriminant of the parent type, return the latter.  */
! 	if (kind == E_Discriminant
! 	    && Present (Corresponding_Discriminant (gnat_entity))
! 	    && Is_Tagged_Type (gnat_record))
  	  {
  	    gnu_decl
  	      = gnat_to_gnu_entity (Corresponding_Discriminant (gnat_entity),
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 512,518 ****
  	    gnu_decl
  	      = gnat_to_gnu_entity (Original_Record_Component (gnat_entity),
  				    gnu_expr, definition);
! 	    saved = true;
  	    break;
  	  }
  
--- 516,524 ----
  	    gnu_decl
  	      = gnat_to_gnu_entity (Original_Record_Component (gnat_entity),
  				    gnu_expr, definition);
! 	    /* GNU_DECL contains a PLACEHOLDER_EXPR for discriminants.  */
! 	    if (kind == E_Discriminant)
! 	      saved = true;
  	    break;
  	  }
  
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 707,754 ****
  	  }
  
  	/* If an alignment is specified, use it if valid.  Note that exceptions
! 	   are objects but don't have an alignment.  We must do this before we
! 	   validate the size, since the alignment can affect the size.  */
! 	if (kind != E_Exception && Known_Alignment (gnat_entity))
! 	  {
! 	    gcc_assert (Present (Alignment (gnat_entity)));
! 
! 	    align = validate_alignment (Alignment (gnat_entity), gnat_entity,
! 					TYPE_ALIGN (gnu_type));
! 
! 	    /* No point in changing the type if there is an address clause
! 	       as the final type of the object will be a reference type.  */
! 	    if (Present (Address_Clause (gnat_entity)))
! 	      align = 0;
! 	    else
! 	      {
! 		tree orig_type = gnu_type;
! 
! 		gnu_type
! 		  = maybe_pad_type (gnu_type, NULL_TREE, align, gnat_entity,
! 				    false, false, definition, true);
! 
! 		/* If a padding record was made, declare it now since it will
! 		   never be declared otherwise.  This is necessary to ensure
! 		   that its subtrees are properly marked.  */
! 		if (gnu_type != orig_type && !DECL_P (TYPE_NAME (gnu_type)))
! 		  create_type_decl (TYPE_NAME (gnu_type), gnu_type, true,
! 				    debug_info_p, gnat_entity);
! 	      }
! 	  }
! 
! 	/* If we are defining the object, see if it has a Size and validate it
! 	   if so.  If we are not defining the object and a Size clause applies,
! 	   simply retrieve the value.  We don't want to ignore the clause and
! 	   it is expected to have been validated already.  Then get the new
! 	   type, if any.  */
! 	if (definition)
! 	  gnu_size = validate_size (Esize (gnat_entity), gnu_type,
! 				    gnat_entity, VAR_DECL, false,
! 				    Has_Size_Clause (gnat_entity));
! 	else if (Has_Size_Clause (gnat_entity))
! 	  gnu_size = UI_To_gnu (Esize (gnat_entity), bitsizetype);
  
  	if (gnu_size)
  	  {
  	    gnu_type
--- 713,732 ----
  	  }
  
  	/* If an alignment is specified, use it if valid.  Note that exceptions
! 	   are objects but don't have an alignment and there is also no point in
! 	   setting it for an address clause, since the final type of the object
! 	   will be a reference type.  */
! 	if (Known_Alignment (gnat_entity)
! 	    && kind != E_Exception
! 	    && No (Address_Clause (gnat_entity)))
! 	  align = validate_alignment (Alignment (gnat_entity), gnat_entity,
! 				      TYPE_ALIGN (gnu_type));
  
+ 	/* Likewise, if a size is specified, use it if valid.  */
+ 	if (Known_Esize (gnat_entity))
+ 	  gnu_size
+ 	    = validate_size (Esize (gnat_entity), gnu_type, gnat_entity,
+ 			     VAR_DECL, false, Has_Size_Clause (gnat_entity));
  	if (gnu_size)
  	  {
  	    gnu_type
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 1352,1358 ****
  	      = create_var_decl (create_concat_name (gnat_entity, "ALIGN"),
  				 NULL_TREE, gnu_new_type, NULL_TREE,
  				 false, false, false, false, false,
! 				 true, debug_info_p, NULL, gnat_entity);
  
  	    /* Initialize the aligned field if we have an initializer.  */
  	    if (gnu_expr)
--- 1330,1337 ----
  	      = create_var_decl (create_concat_name (gnat_entity, "ALIGN"),
  				 NULL_TREE, gnu_new_type, NULL_TREE,
  				 false, false, false, false, false,
! 				 true, debug_info_p && definition, NULL,
! 				 gnat_entity);
  
  	    /* Initialize the aligned field if we have an initializer.  */
  	    if (gnu_expr)
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 1414,1420 ****
  				      NULL_TREE, gnu_type, gnu_expr,
  				      const_flag, Is_Public (gnat_entity),
  				      imported_p || !definition, static_flag,
! 				      volatile_flag, true, debug_info_p,
  				      NULL, gnat_entity);
  		gnu_expr = build_unary_op (ADDR_EXPR, NULL_TREE, gnu_unc_var);
  		TREE_CONSTANT (gnu_expr) = 1;
--- 1393,1400 ----
  				      NULL_TREE, gnu_type, gnu_expr,
  				      const_flag, Is_Public (gnat_entity),
  				      imported_p || !definition, static_flag,
! 				      volatile_flag, true,
! 				      debug_info_p && definition,
  				      NULL, gnat_entity);
  		gnu_expr = build_unary_op (ADDR_EXPR, NULL_TREE, gnu_unc_var);
  		TREE_CONSTANT (gnu_expr) = 1;
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 1453,1460 ****
  	  = create_var_decl (gnu_entity_name, gnu_ext_name, gnu_type,
  			     gnu_expr, const_flag, Is_Public (gnat_entity),
  			     imported_p || !definition, static_flag,
! 			     volatile_flag, artificial_p, debug_info_p,
! 			     attr_list, gnat_entity, !renamed_obj);
  	DECL_BY_REF_P (gnu_decl) = used_by_ref;
  	DECL_POINTS_TO_READONLY_P (gnu_decl) = used_by_ref && inner_const_flag;
  	DECL_CAN_NEVER_BE_NULL_P (gnu_decl) = Can_Never_Be_Null (gnat_entity);
--- 1433,1441 ----
  	  = create_var_decl (gnu_entity_name, gnu_ext_name, gnu_type,
  			     gnu_expr, const_flag, Is_Public (gnat_entity),
  			     imported_p || !definition, static_flag,
! 			     volatile_flag, artificial_p,
! 			     debug_info_p && definition, attr_list,
! 			     gnat_entity, !renamed_obj);
  	DECL_BY_REF_P (gnu_decl) = used_by_ref;
  	DECL_POINTS_TO_READONLY_P (gnu_decl) = used_by_ref && inner_const_flag;
  	DECL_CAN_NEVER_BE_NULL_P (gnu_decl) = Can_Never_Be_Null (gnat_entity);
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 1506,1513 ****
  	      = create_var_decl (gnu_entity_name, gnu_ext_name, gnu_type,
  				 gnu_expr, true, Is_Public (gnat_entity),
  				 !definition, static_flag, volatile_flag,
! 				 artificial_p, debug_info_p, attr_list,
! 				 gnat_entity, false);
  
  	    SET_DECL_CONST_CORRESPONDING_VAR (gnu_decl, gnu_corr_var);
  	  }
--- 1487,1494 ----
  	      = create_var_decl (gnu_entity_name, gnu_ext_name, gnu_type,
  				 gnu_expr, true, Is_Public (gnat_entity),
  				 !definition, static_flag, volatile_flag,
! 				 artificial_p, debug_info_p && definition,
! 				 attr_list, gnat_entity, false);
  
  	    SET_DECL_CONST_CORRESPONDING_VAR (gnu_decl, gnu_corr_var);
  	  }
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 2130,2136 ****
  	   index to the template.  */
  	for (index = (convention_fortran_p ? ndim - 1 : 0),
  	     gnat_index = First_Index (gnat_entity);
! 	     0 <= index && index < ndim;
  	     index += (convention_fortran_p ? - 1 : 1),
  	     gnat_index = Next_Index (gnat_index))
  	  {
--- 2111,2117 ----
  	   index to the template.  */
  	for (index = (convention_fortran_p ? ndim - 1 : 0),
  	     gnat_index = First_Index (gnat_entity);
! 	     IN_RANGE (index, 0, ndim - 1);
  	     index += (convention_fortran_p ? - 1 : 1),
  	     gnat_index = Next_Index (gnat_index))
  	  {
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 2381,2387 ****
  	       gnat_index = First_Index (gnat_entity),
  	       gnat_base_index
  		 = First_Index (Implementation_Base_Type (gnat_entity));
! 	       0 <= index && index < ndim;
  	       index += (convention_fortran_p ? - 1 : 1),
  	       gnat_index = Next_Index (gnat_index),
  	       gnat_base_index = Next_Index (gnat_base_index))
--- 2362,2368 ----
  	       gnat_index = First_Index (gnat_entity),
  	       gnat_base_index
  		 = First_Index (Implementation_Base_Type (gnat_entity));
! 	       IN_RANGE (index, 0, ndim - 1);
  	       index += (convention_fortran_p ? - 1 : 1),
  	       gnat_index = Next_Index (gnat_index),
  	       gnat_base_index = Next_Index (gnat_base_index))
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 2880,2886 ****
        /* Create the type for a string literal.  */
        {
  	Entity_Id gnat_full_type
! 	  = (IN (Ekind (Etype (gnat_entity)), Private_Kind)
  	     && Present (Full_View (Etype (gnat_entity)))
  	     ? Full_View (Etype (gnat_entity)) : Etype (gnat_entity));
  	tree gnu_string_type = get_unpadded_type (gnat_full_type);
--- 2861,2867 ----
        /* Create the type for a string literal.  */
        {
  	Entity_Id gnat_full_type
! 	  = (Is_Private_Type (Etype (gnat_entity))
  	     && Present (Full_View (Etype (gnat_entity)))
  	     ? Full_View (Etype (gnat_entity)) : Etype (gnat_entity));
  	tree gnu_string_type = get_unpadded_type (gnat_full_type);
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 2963,2969 ****
  	Node_Id full_definition = Declaration_Node (gnat_entity);
  	Node_Id record_definition = Type_Definition (full_definition);
  	Node_Id gnat_constr;
! 	Entity_Id gnat_field;
  	tree gnu_field, gnu_field_list = NULL_TREE;
  	tree gnu_get_parent;
  	/* Set PACKED in keeping with gnat_to_gnu_field.  */
--- 2944,2950 ----
  	Node_Id full_definition = Declaration_Node (gnat_entity);
  	Node_Id record_definition = Type_Definition (full_definition);
  	Node_Id gnat_constr;
! 	Entity_Id gnat_field, gnat_parent_type;
  	tree gnu_field, gnu_field_list = NULL_TREE;
  	tree gnu_get_parent;
  	/* Set PACKED in keeping with gnat_to_gnu_field.  */
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 3058,3063 ****
--- 3039,3045 ----
  	    Entity_Id gnat_parent = Parent_Subtype (gnat_entity);
  	    tree gnu_dummy_parent_type = make_node (RECORD_TYPE);
  	    tree gnu_parent;
+ 	    int parent_packed = 0;
  
  	    /* A major complexity here is that the parent subtype will
  	       reference our discriminants in its Stored_Constraint list.
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 3136,3142 ****
  	       be created with a component clause below, then we need
  	       to apply the same adjustment as in gnat_to_gnu_field.  */
  	    if (has_rep && TYPE_ALIGN (gnu_type) < TYPE_ALIGN (gnu_parent))
! 	      SET_TYPE_ALIGN (gnu_type, TYPE_ALIGN (gnu_parent));
  
  	    /* Finally we fix up both kinds of twisted COMPONENT_REF we have
  	       initially built.  The discriminants must reference the fields
--- 3118,3134 ----
  	       be created with a component clause below, then we need
  	       to apply the same adjustment as in gnat_to_gnu_field.  */
  	    if (has_rep && TYPE_ALIGN (gnu_type) < TYPE_ALIGN (gnu_parent))
! 	      {
! 		/* ??? For historical reasons, we do it on strict-alignment
! 		   platforms only, where it is really required.  This means
! 		   that a confirming representation clause will change the
! 		   behavior of the compiler on the other platforms.  */
! 		if (STRICT_ALIGNMENT)
! 		  SET_TYPE_ALIGN (gnu_type, TYPE_ALIGN (gnu_parent));
! 		else
! 		  parent_packed
! 		    = adjust_packed (gnu_parent, gnu_type, parent_packed);
! 	      }
  
  	    /* Finally we fix up both kinds of twisted COMPONENT_REF we have
  	       initially built.  The discriminants must reference the fields
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 3145,3151 ****
  	    if (has_discr)
  	      {
  		/* The actual parent subtype is the full view.  */
! 		if (IN (Ekind (gnat_parent), Private_Kind))
  		  {
  		    if (Present (Full_View (gnat_parent)))
  		      gnat_parent = Full_View (gnat_parent);
--- 3137,3143 ----
  	    if (has_discr)
  	      {
  		/* The actual parent subtype is the full view.  */
! 		if (Is_Private_Type (gnat_parent))
  		  {
  		    if (Present (Full_View (gnat_parent)))
  		      gnat_parent = Full_View (gnat_parent);
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 3182,3188 ****
  				   ? TYPE_SIZE (gnu_parent) : NULL_TREE,
  				   has_rep
  				   ? bitsize_zero_node : NULL_TREE,
! 				   0, 1);
  	    DECL_INTERNAL_P (gnu_field) = 1;
  	    TREE_OPERAND (gnu_get_parent, 1) = gnu_field;
  	    TYPE_FIELDS (gnu_type) = gnu_field;
--- 3174,3180 ----
  				   ? TYPE_SIZE (gnu_parent) : NULL_TREE,
  				   has_rep
  				   ? bitsize_zero_node : NULL_TREE,
! 				   parent_packed, 1);
  	    DECL_INTERNAL_P (gnu_field) = 1;
  	    TREE_OPERAND (gnu_get_parent, 1) = gnu_field;
  	    TYPE_FIELDS (gnu_type) = gnu_field;
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 3197,3211 ****
  	    {
  	      /* If this is a record extension and this discriminant is the
  		 renaming of another discriminant, we've handled it above.  */
! 	      if (Present (Parent_Subtype (gnat_entity))
! 		  && Present (Corresponding_Discriminant (gnat_field)))
! 		continue;
! 
! 	      /* However, if we are just annotating types, the Parent_Subtype
! 		 doesn't exist so we need skip the discriminant altogether.  */
! 	      if (type_annotate_only
! 		  && Is_Tagged_Type (gnat_entity)
! 		  && Is_Derived_Type (gnat_entity)
  		  && Present (Corresponding_Discriminant (gnat_field)))
  		continue;
  
--- 3189,3195 ----
  	    {
  	      /* If this is a record extension and this discriminant is the
  		 renaming of another discriminant, we've handled it above.  */
! 	      if (is_extension
  		  && Present (Corresponding_Discriminant (gnat_field)))
  		continue;
  
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 3230,3241 ****
  	    }
  
  	/* If we have a derived untagged type that renames discriminants in
! 	   the root type, the (stored) discriminants are a just copy of the
! 	   discriminants of the root type.  This means that any constraints
! 	   added by the renaming in the derivation are disregarded as far
! 	   as the layout of the derived type is concerned.  To rescue them,
! 	   we change the type of the (stored) discriminants to a subtype
! 	   with the bounds of the type of the visible discriminants.  */
  	if (has_discr
  	    && !is_extension
  	    && Stored_Constraint (gnat_entity) != No_Elist)
--- 3214,3225 ----
  	    }
  
  	/* If we have a derived untagged type that renames discriminants in
! 	   the parent type, the (stored) discriminants are just a copy of the
! 	   discriminants of the parent type.  This means that any constraints
! 	   added by the renaming in the derivation are disregarded as far as
! 	   the layout of the derived type is concerned.  To rescue them, we
! 	   change the type of the (stored) discriminants to a subtype with
! 	   the bounds of the type of the visible discriminants.  */
  	if (has_discr
  	    && !is_extension
  	    && Stored_Constraint (gnat_entity) != No_Elist)
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 3248,3277 ****
  		&& Ekind (Entity (Node (gnat_constr))) == E_Discriminant)
  	      {
  		Entity_Id gnat_discr = Entity (Node (gnat_constr));
! 		tree gnu_discr_type, gnu_ref;
! 
! 		/* If the scope of the discriminant is not the record type,
! 		   this means that we're processing the implicit full view
! 		   of a type derived from a private discriminated type: in
! 		   this case, the Stored_Constraint list is simply copied
! 		   from the partial view, see Build_Derived_Private_Type.
! 		   So we need to retrieve the corresponding discriminant
! 		   of the implicit full view, otherwise we will abort.  */
! 		if (Scope (gnat_discr) != gnat_entity)
! 		  {
! 		    Entity_Id field;
! 		    for (field = First_Entity (gnat_entity);
! 			 Present (field);
! 			 field = Next_Entity (field))
! 		      if (Ekind (field) == E_Discriminant
! 			  && same_discriminant_p (gnat_discr, field))
! 			break;
! 		    gcc_assert (Present (field));
! 		    gnat_discr = field;
! 		  }
! 
! 		gnu_discr_type = gnat_to_gnu_type (Etype (gnat_discr));
! 		gnu_ref
  		  = gnat_to_gnu_entity (Original_Record_Component (gnat_discr),
  					NULL_TREE, false);
  
--- 3232,3239 ----
  		&& Ekind (Entity (Node (gnat_constr))) == E_Discriminant)
  	      {
  		Entity_Id gnat_discr = Entity (Node (gnat_constr));
! 		tree gnu_discr_type = gnat_to_gnu_type (Etype (gnat_discr));
! 		tree gnu_ref
  		  = gnat_to_gnu_entity (Original_Record_Component (gnat_discr),
  					NULL_TREE, false);
  
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 3296,3324 ****
  		  }
  	      }
  
! 	/* Add the fields into the record type and finish it up.  */
! 	components_to_record (gnu_type, Component_List (record_definition),
! 			      gnu_field_list, packed, definition, false,
! 			      all_rep, is_unchecked_union,
! 			      artificial_p, debug_info_p,
! 			      false, OK_To_Reorder_Components (gnat_entity),
! 			      all_rep ? NULL_TREE : bitsize_zero_node, NULL);
  
  	/* Fill in locations of fields.  */
  	annotate_rep (gnat_entity, gnu_type);
  
- 	/* If there are any entities in the chain corresponding to components
- 	   that we did not elaborate, ensure we elaborate their types if they
- 	   are Itypes.  */
- 	for (gnat_temp = First_Entity (gnat_entity);
- 	     Present (gnat_temp);
- 	     gnat_temp = Next_Entity (gnat_temp))
- 	  if ((Ekind (gnat_temp) == E_Component
- 	       || Ekind (gnat_temp) == E_Discriminant)
- 	      && Is_Itype (Etype (gnat_temp))
- 	      && !present_gnu_tree (gnat_temp))
- 	    gnat_to_gnu_entity (Etype (gnat_temp), NULL_TREE, false);
- 
  	/* If this is a record type associated with an exception definition,
  	   equate its fields to those of the standard exception type.  This
  	   will make it possible to convert between them.  */
--- 3258,3321 ----
  		  }
  	      }
  
! 	/* If this is a derived type with discriminants and these discriminants
! 	   affect the initial shape it has inherited, factor them in.  */
! 	if (has_discr
! 	    && !is_extension
! 	    && !Has_Record_Rep_Clause (gnat_entity)
! 	    && Stored_Constraint (gnat_entity) != No_Elist
! 	    && (gnat_parent_type = Underlying_Type (Etype (gnat_entity)))
! 	    && Is_Record_Type (gnat_parent_type)
! 	    && Is_Unchecked_Union (gnat_entity)
! 	       == Is_Unchecked_Union (gnat_parent_type)
! 	    && No_Reordering (gnat_entity) == No_Reordering (gnat_parent_type))
! 	  {
! 	    tree gnu_parent_type
! 	      = TYPE_MAIN_VARIANT (gnat_to_gnu_type (gnat_parent_type));
! 
! 	    if (TYPE_IS_PADDING_P (gnu_parent_type))
! 	      gnu_parent_type = TREE_TYPE (TYPE_FIELDS (gnu_parent_type));
! 
! 	    vec<subst_pair> gnu_subst_list
! 	      = build_subst_list (gnat_entity, gnat_parent_type, definition);
! 
! 	    /* Set the layout of the type to match that of the parent type,
! 	       doing required substitutions.  If we are in minimal GNAT
! 	       encodings mode, we don't need debug info for the inner record
! 	       types, as they will be part of the embedding variant record's
! 	       debug info.  */
! 	    copy_and_substitute_in_layout
! 	      (gnat_entity, gnat_parent_type, gnu_type, gnu_parent_type,
! 	       gnu_subst_list,
! 	       debug_info_p && gnat_encodings != DWARF_GNAT_ENCODINGS_MINIMAL);
! 	  }
! 	else
! 	  {
! 	    /* Add the fields into the record type and finish it up.  */
! 	    components_to_record (Component_List (record_definition),
! 				  gnat_entity, gnu_field_list, gnu_type,
! 				  packed, definition, false, all_rep,
! 				  is_unchecked_union, artificial_p,
! 				  debug_info_p, false,
! 				  all_rep ? NULL_TREE : bitsize_zero_node,
! 				  NULL);
! 
! 	    /* If there are entities in the chain corresponding to components
! 	       that we did not elaborate, ensure we elaborate their types if
! 	       they are Itypes.  */
! 	    for (gnat_temp = First_Entity (gnat_entity);
! 		 Present (gnat_temp);
! 		 gnat_temp = Next_Entity (gnat_temp))
! 	      if ((Ekind (gnat_temp) == E_Component
! 		   || Ekind (gnat_temp) == E_Discriminant)
! 		  && Is_Itype (Etype (gnat_temp))
! 		  && !present_gnu_tree (gnat_temp))
! 		gnat_to_gnu_entity (Etype (gnat_temp), NULL_TREE, false);
! 	  }
  
  	/* Fill in locations of fields.  */
  	annotate_rep (gnat_entity, gnu_type);
  
  	/* If this is a record type associated with an exception definition,
  	   equate its fields to those of the standard exception type.  This
  	   will make it possible to convert between them.  */
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 3372,3378 ****
        else
  	{
  	  Entity_Id gnat_base_type = Implementation_Base_Type (gnat_entity);
- 	  tree gnu_base_type;
  
  	  if (!definition)
  	    {
--- 3369,3374 ----
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 3380,3386 ****
  	      this_deferred = true;
  	    }
  
! 	  gnu_base_type
  	    = TYPE_MAIN_VARIANT (gnat_to_gnu_type (gnat_base_type));
  
  	  if (present_gnu_tree (gnat_entity))
--- 3376,3382 ----
  	      this_deferred = true;
  	    }
  
! 	  tree gnu_base_type
  	    = TYPE_MAIN_VARIANT (gnat_to_gnu_type (gnat_base_type));
  
  	  if (present_gnu_tree (gnat_entity))
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 3405,3440 ****
  
  	  /* When the subtype has discriminants and these discriminants affect
  	     the initial shape it has inherited, factor them in.  But for an
! 	     Unchecked_Union (it must be an Itype), just return the type.
! 	     We can't just test Is_Constrained because private subtypes without
! 	     discriminants of types with discriminants with default expressions
! 	     are Is_Constrained but aren't constrained!  */
! 	  if (IN (Ekind (gnat_base_type), Record_Kind)
! 	      && !Is_Unchecked_Union (gnat_base_type)
  	      && !Is_For_Access_Subtype (gnat_entity)
! 	      && Has_Discriminants (gnat_entity)
! 	      && Is_Constrained (gnat_entity)
! 	      && Stored_Constraint (gnat_entity) != No_Elist)
  	    {
  	      vec<subst_pair> gnu_subst_list
  		= build_subst_list (gnat_entity, gnat_base_type, definition);
! 	      tree gnu_unpad_base_type, gnu_rep_part, gnu_variant_part;
! 	      tree gnu_pos_list, gnu_field_list = NULL_TREE;
! 	      bool selected_variant = false, all_constant_pos = true;
! 	      Entity_Id gnat_field;
! 	      vec<variant_desc> gnu_variant_list;
  
  	      gnu_type = make_node (RECORD_TYPE);
  	      TYPE_NAME (gnu_type) = gnu_entity_name;
  	      if (gnat_encodings == DWARF_GNAT_ENCODINGS_MINIMAL)
! 		SET_TYPE_DEBUG_TYPE (gnu_type, gnu_base_type);
  	      TYPE_PACKED (gnu_type) = TYPE_PACKED (gnu_base_type);
  	      TYPE_REVERSE_STORAGE_ORDER (gnu_type)
  		= Reverse_Storage_Order (gnat_entity);
  	      process_attributes (&gnu_type, &attr_list, true, gnat_entity);
  
! 	      /* Set the size, alignment and alias set of the new type to
! 		 match that of the old one, doing required substitutions.  */
  	      copy_and_substitute_in_size (gnu_type, gnu_base_type,
  					   gnu_subst_list);
  
--- 3401,3438 ----
  
  	  /* When the subtype has discriminants and these discriminants affect
  	     the initial shape it has inherited, factor them in.  But for an
! 	     Unchecked_Union (it must be an Itype), just return the type.  */
! 	  if (Has_Discriminants (gnat_entity)
! 	      && Stored_Constraint (gnat_entity) != No_Elist
  	      && !Is_For_Access_Subtype (gnat_entity)
! 	      && Is_Record_Type (gnat_base_type)
! 	      && !Is_Unchecked_Union (gnat_base_type))
  	    {
  	      vec<subst_pair> gnu_subst_list
  		= build_subst_list (gnat_entity, gnat_base_type, definition);
! 	      tree gnu_unpad_base_type;
  
  	      gnu_type = make_node (RECORD_TYPE);
  	      TYPE_NAME (gnu_type) = gnu_entity_name;
  	      if (gnat_encodings == DWARF_GNAT_ENCODINGS_MINIMAL)
! 		{
! 		  /* Use the ultimate base record type as the debug type.
! 		     Subtypes and derived types bring no useful
! 		     information.  */
! 		  Entity_Id gnat_debug_type = gnat_entity;
! 		  while (Etype (gnat_debug_type) != gnat_debug_type)
! 		    gnat_debug_type = Etype (gnat_debug_type);
! 		  tree gnu_debug_type
! 		    = TYPE_MAIN_VARIANT (gnat_to_gnu_type (gnat_debug_type));
! 		  SET_TYPE_DEBUG_TYPE (gnu_type, gnu_debug_type);
! 		}
  	      TYPE_PACKED (gnu_type) = TYPE_PACKED (gnu_base_type);
  	      TYPE_REVERSE_STORAGE_ORDER (gnu_type)
  		= Reverse_Storage_Order (gnat_entity);
  	      process_attributes (&gnu_type, &attr_list, true, gnat_entity);
  
! 	      /* Set the size, alignment and alias set of the type to match
! 		 those of the base type, doing required substitutions.  */
  	      copy_and_substitute_in_size (gnu_type, gnu_base_type,
  					   gnu_subst_list);
  
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 3443,3707 ****
  	      else
  		gnu_unpad_base_type = gnu_base_type;
  
! 	      /* Look for REP and variant parts in the base type.  */
! 	      gnu_rep_part = get_rep_part (gnu_unpad_base_type);
! 	      gnu_variant_part = get_variant_part (gnu_unpad_base_type);
! 
! 	      /* If there is a variant part, we must compute whether the
! 		 constraints statically select a particular variant.  If
! 		 so, we simply drop the qualified union and flatten the
! 		 list of fields.  Otherwise we'll build a new qualified
! 		 union for the variants that are still relevant.  */
! 	      if (gnu_variant_part)
! 		{
! 		  variant_desc *v;
! 		  unsigned int i;
! 
! 		  gnu_variant_list
! 		    = build_variant_list (TREE_TYPE (gnu_variant_part),
! 					  gnu_subst_list,
! 					  vNULL);
! 
! 		  /* If all the qualifiers are unconditionally true, the
! 		     innermost variant is statically selected.  */
! 		  selected_variant = true;
! 		  FOR_EACH_VEC_ELT (gnu_variant_list, i, v)
! 		    if (!integer_onep (v->qual))
! 		      {
! 			selected_variant = false;
! 			break;
! 		      }
! 
! 		  /* Otherwise, create the new variants.  */
! 		  if (!selected_variant)
! 		    FOR_EACH_VEC_ELT (gnu_variant_list, i, v)
! 		      {
! 			tree old_variant = v->type;
! 			tree new_variant = make_node (RECORD_TYPE);
! 			tree suffix
! 			  = concat_name (DECL_NAME (gnu_variant_part),
! 					 IDENTIFIER_POINTER
! 					 (DECL_NAME (v->field)));
! 			TYPE_NAME (new_variant)
! 			  = concat_name (TYPE_NAME (gnu_type),
! 					 IDENTIFIER_POINTER (suffix));
! 			TYPE_REVERSE_STORAGE_ORDER (new_variant)
! 			  = TYPE_REVERSE_STORAGE_ORDER (gnu_type);
! 			copy_and_substitute_in_size (new_variant, old_variant,
! 						     gnu_subst_list);
! 			v->new_type = new_variant;
! 		      }
! 		}
! 	      else
! 		{
! 		  gnu_variant_list.create (0);
! 		  selected_variant = false;
! 		}
! 
! 	      /* Make a list of fields and their position in the base type.  */
! 	      gnu_pos_list
! 		= build_position_list (gnu_unpad_base_type,
! 				       gnu_variant_list.exists ()
! 				       && !selected_variant,
! 				       size_zero_node, bitsize_zero_node,
! 				       BIGGEST_ALIGNMENT, NULL_TREE);
! 
! 	      /* Now go down every component in the subtype and compute its
! 		 size and position from those of the component in the base
! 		 type and from the constraints of the subtype.  */
! 	      for (gnat_field = First_Entity (gnat_entity);
! 		   Present (gnat_field);
! 		   gnat_field = Next_Entity (gnat_field))
! 		if ((Ekind (gnat_field) == E_Component
! 		     || Ekind (gnat_field) == E_Discriminant)
! 		    && !(Present (Corresponding_Discriminant (gnat_field))
! 			 && Is_Tagged_Type (gnat_base_type))
! 		    && Underlying_Type
! 		       (Scope (Original_Record_Component (gnat_field)))
! 		       == gnat_base_type)
! 		  {
! 		    Name_Id gnat_name = Chars (gnat_field);
! 		    Entity_Id gnat_old_field
! 		      = Original_Record_Component (gnat_field);
! 		    tree gnu_old_field
! 		      = gnat_to_gnu_field_decl (gnat_old_field);
! 		    tree gnu_context = DECL_CONTEXT (gnu_old_field);
! 		    tree gnu_field, gnu_field_type, gnu_size, gnu_pos;
! 		    tree gnu_cont_type, gnu_last = NULL_TREE;
! 
! 		    /* If the type is the same, retrieve the GCC type from the
! 		       old field to take into account possible adjustments.  */
! 		    if (Etype (gnat_field) == Etype (gnat_old_field))
! 		      gnu_field_type = TREE_TYPE (gnu_old_field);
! 		    else
! 		      gnu_field_type = gnat_to_gnu_type (Etype (gnat_field));
! 
! 		    /* If there was a component clause, the field types must be
! 		       the same for the type and subtype, so copy the data from
! 		       the old field to avoid recomputation here.  Also if the
! 		       field is justified modular and the optimization in
! 		       gnat_to_gnu_field was applied.  */
! 		    if (Present (Component_Clause (gnat_old_field))
! 			|| (TREE_CODE (gnu_field_type) == RECORD_TYPE
! 			    && TYPE_JUSTIFIED_MODULAR_P (gnu_field_type)
! 			    && TREE_TYPE (TYPE_FIELDS (gnu_field_type))
! 			       == TREE_TYPE (gnu_old_field)))
! 		      {
! 			gnu_size = DECL_SIZE (gnu_old_field);
! 			gnu_field_type = TREE_TYPE (gnu_old_field);
! 		      }
! 
! 		    /* If the old field was packed and of constant size, we
! 		       have to get the old size here, as it might differ from
! 		       what the Etype conveys and the latter might overlap
! 		       onto the following field.  Try to arrange the type for
! 		       possible better packing along the way.  */
! 		    else if (DECL_PACKED (gnu_old_field)
! 			     && TREE_CODE (DECL_SIZE (gnu_old_field))
! 			        == INTEGER_CST)
! 		      {
! 			gnu_size = DECL_SIZE (gnu_old_field);
! 			if (RECORD_OR_UNION_TYPE_P (gnu_field_type)
! 			    && !TYPE_FAT_POINTER_P (gnu_field_type)
! 			    && tree_fits_uhwi_p (TYPE_SIZE (gnu_field_type)))
! 			  gnu_field_type
! 			    = make_packable_type (gnu_field_type, true);
! 		      }
! 
! 		    else
! 		      gnu_size = TYPE_SIZE (gnu_field_type);
! 
! 		    /* If the context of the old field is the base type or its
! 		       REP part (if any), put the field directly in the new
! 		       type; otherwise look up the context in the variant list
! 		       and put the field either in the new type if there is a
! 		       selected variant or in one of the new variants.  */
! 		    if (gnu_context == gnu_unpad_base_type
! 		        || (gnu_rep_part
! 			    && gnu_context == TREE_TYPE (gnu_rep_part)))
! 		      gnu_cont_type = gnu_type;
! 		    else
! 		      {
! 			variant_desc *v;
! 			unsigned int i;
! 			tree rep_part;
! 
! 			FOR_EACH_VEC_ELT (gnu_variant_list, i, v)
! 			  if (gnu_context == v->type
! 			      || ((rep_part = get_rep_part (v->type))
! 				  && gnu_context == TREE_TYPE (rep_part)))
! 			    break;
! 			if (v)
! 			  {
! 			    if (selected_variant)
! 			      gnu_cont_type = gnu_type;
! 			    else
! 			      gnu_cont_type = v->new_type;
! 			  }
! 			else
! 			  /* The front-end may pass us "ghost" components if
! 			     it fails to recognize that a constrained subtype
! 			     is statically constrained.  Discard them.  */
! 			  continue;
! 		      }
! 
! 		    /* Now create the new field modeled on the old one.  */
! 		    gnu_field
! 		      = create_field_decl_from (gnu_old_field, gnu_field_type,
! 						gnu_cont_type, gnu_size,
! 						gnu_pos_list, gnu_subst_list);
! 		    gnu_pos = DECL_FIELD_OFFSET (gnu_field);
! 
! 		    /* Put it in one of the new variants directly.  */
! 		    if (gnu_cont_type != gnu_type)
! 		      {
! 			DECL_CHAIN (gnu_field) = TYPE_FIELDS (gnu_cont_type);
! 			TYPE_FIELDS (gnu_cont_type) = gnu_field;
! 		      }
! 
! 		    /* To match the layout crafted in components_to_record,
! 		       if this is the _Tag or _Parent field, put it before
! 		       any other fields.  */
! 		    else if (gnat_name == Name_uTag
! 			     || gnat_name == Name_uParent)
! 		      gnu_field_list = chainon (gnu_field_list, gnu_field);
! 
! 		    /* Similarly, if this is the _Controller field, put
! 		       it before the other fields except for the _Tag or
! 		       _Parent field.  */
! 		    else if (gnat_name == Name_uController && gnu_last)
! 		      {
! 			DECL_CHAIN (gnu_field) = DECL_CHAIN (gnu_last);
! 			DECL_CHAIN (gnu_last) = gnu_field;
! 		      }
! 
! 		    /* Otherwise, if this is a regular field, put it after
! 		       the other fields.  */
! 		    else
! 		      {
! 			DECL_CHAIN (gnu_field) = gnu_field_list;
! 			gnu_field_list = gnu_field;
! 			if (!gnu_last)
! 			  gnu_last = gnu_field;
! 			if (TREE_CODE (gnu_pos) != INTEGER_CST)
! 			  all_constant_pos = false;
! 		      }
! 
! 		    save_gnu_tree (gnat_field, gnu_field, false);
! 		  }
! 
! 	      /* If there is a variant list, a selected variant and the fields
! 		 all have a constant position, put them in order of increasing
! 		 position to match that of constant CONSTRUCTORs.  Likewise if
! 		 there is no variant list but a REP part, since the latter has
! 		 been flattened in the process.  */
! 	      if (((gnu_variant_list.exists () && selected_variant)
! 		   || (!gnu_variant_list.exists () && gnu_rep_part))
! 		  && all_constant_pos)
! 		{
! 		  const int len = list_length (gnu_field_list);
! 		  tree *field_arr = XALLOCAVEC (tree, len), t;
! 		  int i;
! 
! 		  for (t = gnu_field_list, i = 0; t; t = DECL_CHAIN (t), i++)
! 		    field_arr[i] = t;
! 
! 		  qsort (field_arr, len, sizeof (tree), compare_field_bitpos);
! 
! 		  gnu_field_list = NULL_TREE;
! 		  for (i = 0; i < len; i++)
! 		    {
! 		      DECL_CHAIN (field_arr[i]) = gnu_field_list;
! 		      gnu_field_list = field_arr[i];
! 		    }
! 		}
! 
! 	      /* If there is a variant list and no selected variant, we need
! 		 to create the nest of variant parts from the old nest.  */
! 	      else if (gnu_variant_list.exists () && !selected_variant)
! 		{
! 		  tree new_variant_part
! 		    = create_variant_part_from (gnu_variant_part,
! 						gnu_variant_list, gnu_type,
! 						gnu_pos_list, gnu_subst_list);
! 		  DECL_CHAIN (new_variant_part) = gnu_field_list;
! 		  gnu_field_list = new_variant_part;
! 		}
! 
! 	      /* Now go through the entities again looking for Itypes that
! 		 we have not elaborated but should (e.g., Etypes of fields
! 		 that have Original_Components).  */
! 	      for (gnat_field = First_Entity (gnat_entity);
! 		   Present (gnat_field); gnat_field = Next_Entity (gnat_field))
! 		if ((Ekind (gnat_field) == E_Discriminant
! 		     || Ekind (gnat_field) == E_Component)
! 		    && !present_gnu_tree (Etype (gnat_field)))
! 		  gnat_to_gnu_entity (Etype (gnat_field), NULL_TREE, false);
! 
! 	      /* We will output additional debug info manually below.  */
! 	      finish_record_type (gnu_type, nreverse (gnu_field_list), 2,
! 				  false);
! 	      compute_record_mode (gnu_type);
  
  	      /* Fill in locations of fields.  */
  	      annotate_rep (gnat_entity, gnu_type);
--- 3441,3452 ----
  	      else
  		gnu_unpad_base_type = gnu_base_type;
  
! 	      /* Set the layout of the type to match that of the base type,
! 	         doing required substitutions.  We will output debug info
! 	         manually below so pass false as last argument.  */
! 	      copy_and_substitute_in_layout (gnat_entity, gnat_base_type,
! 					     gnu_type, gnu_unpad_base_type,
! 					     gnu_subst_list, false);
  
  	      /* Fill in locations of fields.  */
  	      annotate_rep (gnat_entity, gnu_type);
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 3741,3749 ****
  					 true, debug_info_p,
  					 NULL, gnat_entity);
  		}
- 
- 	      gnu_variant_list.release ();
- 	      gnu_subst_list.release ();
  	    }
  
  	  /* Otherwise, go down all the components in the new type and make
--- 3486,3491 ----
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 3795,3802 ****
  	Entity_Id gnat_desig_equiv = Gigi_Equivalent_Type (gnat_desig_type);
  	/* Whether it comes from a limited with.  */
  	const bool is_from_limited_with
! 	  = (IN (Ekind (gnat_desig_equiv), Incomplete_Kind)
  	     && From_Limited_With (gnat_desig_equiv));
  	/* The "full view" of the designated type.  If this is an incomplete
  	   entity from a limited with, treat its non-limited view as the full
  	   view.  Otherwise, if this is an incomplete or private type, use the
--- 3537,3552 ----
  	Entity_Id gnat_desig_equiv = Gigi_Equivalent_Type (gnat_desig_type);
  	/* Whether it comes from a limited with.  */
  	const bool is_from_limited_with
! 	  = (Is_Incomplete_Type (gnat_desig_equiv)
  	     && From_Limited_With (gnat_desig_equiv));
+ 	/* Whether it is a completed Taft Amendment type.  Such a type is to
+ 	   be treated as coming from a limited with clause if it is not in
+ 	   the main unit, i.e. we break potential circularities here in case
+ 	   the body of an external unit is loaded for inter-unit inlining.  */
+         const bool is_completed_taft_type
+ 	  = (Is_Incomplete_Type (gnat_desig_equiv)
+ 	     && Has_Completion_In_Body (gnat_desig_equiv)
+ 	     && Present (Full_View (gnat_desig_equiv)));
  	/* The "full view" of the designated type.  If this is an incomplete
  	   entity from a limited with, treat its non-limited view as the full
  	   view.  Otherwise, if this is an incomplete or private type, use the
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 3807,3818 ****
  	Entity_Id gnat_desig_full_direct_first
  	  = (is_from_limited_with
  	     ? Non_Limited_View (gnat_desig_equiv)
! 	     : (IN (Ekind (gnat_desig_equiv), Incomplete_Or_Private_Kind)
  		? Full_View (gnat_desig_equiv) : Empty));
  	Entity_Id gnat_desig_full_direct
  	  = ((is_from_limited_with
  	      && Present (gnat_desig_full_direct_first)
! 	      && IN (Ekind (gnat_desig_full_direct_first), Private_Kind))
  	     ? Full_View (gnat_desig_full_direct_first)
  	     : gnat_desig_full_direct_first);
  	Entity_Id gnat_desig_full
--- 3557,3568 ----
  	Entity_Id gnat_desig_full_direct_first
  	  = (is_from_limited_with
  	     ? Non_Limited_View (gnat_desig_equiv)
! 	     : (Is_Incomplete_Or_Private_Type (gnat_desig_equiv)
  		? Full_View (gnat_desig_equiv) : Empty));
  	Entity_Id gnat_desig_full_direct
  	  = ((is_from_limited_with
  	      && Present (gnat_desig_full_direct_first)
! 	      && Is_Private_Type (gnat_desig_full_direct_first))
  	     ? Full_View (gnat_desig_full_direct_first)
  	     : gnat_desig_full_direct_first);
  	Entity_Id gnat_desig_full
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 3829,3839 ****
  	/* True if we make a dummy type here.  */
  	bool made_dummy = false;
  	/* The mode to be used for the pointer type.  */
! 	machine_mode p_mode = mode_for_size (esize, MODE_INT, 0);
  	/* The GCC type used for the designated type.  */
  	tree gnu_desig_type = NULL_TREE;
  
! 	if (!targetm.valid_pointer_mode (p_mode))
  	  p_mode = ptr_mode;
  
  	/* If either the designated type or its full view is an unconstrained
--- 3579,3590 ----
  	/* True if we make a dummy type here.  */
  	bool made_dummy = false;
  	/* The mode to be used for the pointer type.  */
! 	scalar_int_mode p_mode;
  	/* The GCC type used for the designated type.  */
  	tree gnu_desig_type = NULL_TREE;
  
! 	if (!int_mode_for_size (esize, 0).exists (&p_mode)
! 	    || !targetm.valid_pointer_mode (p_mode))
  	  p_mode = ptr_mode;
  
  	/* If either the designated type or its full view is an unconstrained
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 3863,3875 ****
  
  	/* Get the type of the thing we are to point to and build a pointer to
  	   it.  If it is a reference to an incomplete or private type with a
! 	   full view that is a record or an array, make a dummy type node and
! 	   get the actual type later when we have verified it is safe.  */
  	else if ((!in_main_unit
  		  && !present_gnu_tree (gnat_desig_equiv)
  		  && Present (gnat_desig_full)
  		  && (Is_Record_Type (gnat_desig_full)
! 		      || Is_Array_Type (gnat_desig_full)))
  		 /* Likewise if this is a reference to a record, an array or a
  		    subprogram type and we are to defer elaborating incomplete
  		    types.  We do this because this access type may be the full
--- 3614,3627 ----
  
  	/* Get the type of the thing we are to point to and build a pointer to
  	   it.  If it is a reference to an incomplete or private type with a
! 	   full view that is a record, an array or an access, make a dummy type
! 	   and get the actual type later when we have verified it is safe.  */
  	else if ((!in_main_unit
  		  && !present_gnu_tree (gnat_desig_equiv)
  		  && Present (gnat_desig_full)
  		  && (Is_Record_Type (gnat_desig_full)
! 		      || Is_Array_Type (gnat_desig_full)
! 		      || Is_Access_Type (gnat_desig_full)))
  		 /* Likewise if this is a reference to a record, an array or a
  		    subprogram type and we are to defer elaborating incomplete
  		    types.  We do this because this access type may be the full
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 3980,3986 ****
  	    save_gnu_tree (gnat_entity, gnu_decl, false);
  	    saved = true;
  
! 	    if (defer_incomplete_level == 0 && !is_from_limited_with)
  	      {
  		update_pointer_to (TYPE_MAIN_VARIANT (gnu_desig_type),
  				   gnat_to_gnu_type (gnat_desig_equiv));
--- 3732,3740 ----
  	    save_gnu_tree (gnat_entity, gnu_decl, false);
  	    saved = true;
  
! 	    if (defer_incomplete_level == 0
! 		&& !is_from_limited_with
! 		&& !is_completed_taft_type)
  	      {
  		update_pointer_to (TYPE_MAIN_VARIANT (gnu_desig_type),
  				   gnat_to_gnu_type (gnat_desig_equiv));
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 3989,3995 ****
  	      {
  		struct incomplete *p = XNEW (struct incomplete);
  		struct incomplete **head
! 		  = (is_from_limited_with
  		     ? &defer_limited_with_list : &defer_incomplete_list);
  
  		p->old_type = gnu_desig_type;
--- 3743,3749 ----
  	      {
  		struct incomplete *p = XNEW (struct incomplete);
  		struct incomplete **head
! 		  = (is_from_limited_with || is_completed_taft_type
  		     ? &defer_limited_with_list : &defer_incomplete_list);
  
  		p->old_type = gnu_desig_type;
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 4056,4064 ****
  	      p->next = defer_incomplete_list;
  	      defer_incomplete_list = p;
  	    }
! 	  else if (!IN (Ekind (Base_Type
! 			       (Directly_Designated_Type (gnat_entity))),
! 		        Incomplete_Or_Private_Kind))
  	    gnat_to_gnu_entity (Directly_Designated_Type (gnat_entity),
  				NULL_TREE, false);
  	}
--- 3810,3817 ----
  	      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);
  	}
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 4287,4293 ****
  					 gnu_type, gnu_param_list,
  					 inline_status, public_flag,
  					 extern_flag, artificial_p,
! 					 debug_info_p, attr_list, gnat_entity);
  
  		DECL_STUBBED_P (gnu_decl)
  		  = (Convention (gnat_entity) == Convention_Stubbed);
--- 4040,4048 ----
  					 gnu_type, gnu_param_list,
  					 inline_status, public_flag,
  					 extern_flag, artificial_p,
! 					 debug_info_p,
! 					 definition && imported_p, attr_list,
! 					 gnat_entity);
  
  		DECL_STUBBED_P (gnu_decl)
  		  = (Convention (gnat_entity) == Convention_Stubbed);
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 4785,4791 ****
  			     ? ALIAS_SET_COPY : ALIAS_SET_SUPERSET);
  	}
  
!       if (Treat_As_Volatile (gnat_entity))
  	{
  	  const int quals
  	    = TYPE_QUAL_VOLATILE
--- 4540,4550 ----
  			     ? ALIAS_SET_COPY : ALIAS_SET_SUPERSET);
  	}
  
!       /* Finally get to the appropriate variant, except for the implementation
! 	 type of a packed array because the GNU type might be further adjusted
! 	 when the original array type is itself processed.  */
!       if (Treat_As_Volatile (gnat_entity)
! 	  && !Is_Packed_Array_Impl_Type (gnat_entity))
  	{
  	  const int quals
  	    = TYPE_QUAL_VOLATILE
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 4793,4807 ****
  	  gnu_type = change_qualified_type (gnu_type, quals);
  	}
  
!       if (!gnu_decl)
! 	gnu_decl = create_type_decl (gnu_entity_name, gnu_type,
! 				     artificial_p, debug_info_p,
! 				     gnat_entity);
!       else
  	{
  	  TREE_TYPE (gnu_decl) = gnu_type;
  	  TYPE_STUB_DECL (gnu_type) = gnu_decl;
  	}
      }
  
    /* If we got a type that is not dummy, back-annotate the alignment of the
--- 4552,4566 ----
  	  gnu_type = change_qualified_type (gnu_type, quals);
  	}
  
!       /* If we already made a decl, just set the type, otherwise create it.  */
!       if (gnu_decl)
  	{
  	  TREE_TYPE (gnu_decl) = gnu_type;
  	  TYPE_STUB_DECL (gnu_type) = gnu_decl;
  	}
+       else
+ 	gnu_decl = create_type_decl (gnu_entity_name, gnu_type, artificial_p,
+ 				     debug_info_p, gnat_entity);
      }
  
    /* If we got a type that is not dummy, back-annotate the alignment of the
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 4982,4988 ****
  	  }
  
        for (p = defer_limited_with_list; p; p = p->next)
! 	if (p->old_type && Non_Limited_View (p->full_type) == gnat_entity)
  	  {
  	    update_pointer_to (TYPE_MAIN_VARIANT (p->old_type),
  			       TREE_TYPE (gnu_decl));
--- 4741,4749 ----
  	  }
  
        for (p = defer_limited_with_list; p; p = p->next)
! 	if (p->old_type
! 	    && (Non_Limited_View (p->full_type) == gnat_entity
! 		|| Full_View (p->full_type) == gnat_entity))
  	  {
  	    update_pointer_to (TYPE_MAIN_VARIANT (p->old_type),
  			       TREE_TYPE (gnu_decl));
*************** finalize_from_limited_with (void)
*** 5183,5194 ****
      }
  }
  
! /* 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 its representation, return GNAT_ENTITY.  If a type is supposed to
!    exist, but does not, abort unless annotating types, in which case
!    return Empty.  If GNAT_ENTITY is Empty, return Empty.  */
  
  Entity_Id
  Gigi_Equivalent_Type (Entity_Id gnat_entity)
--- 4944,4953 ----
      }
  }
  
! /* 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
!    its representation, return GNAT_ENTITY.  */
  
  Entity_Id
  Gigi_Equivalent_Type (Entity_Id gnat_entity)
*************** gnat_to_gnu_component_type (Entity_Id gn
*** 5263,5271 ****
        && tree_fits_uhwi_p (TYPE_SIZE (gnu_type)))
      gnu_type = make_packable_type (gnu_type, false, max_align);
  
-   if (Has_Atomic_Components (gnat_array))
-     check_ok_for_atomic_type (gnu_type, gnat_array, true);
- 
    /* Get and validate any specified Component_Size.  */
    gnu_comp_size
      = validate_size (Component_Size (gnat_array), gnu_type, gnat_array,
--- 5022,5027 ----
*************** gnat_to_gnu_component_type (Entity_Id gn
*** 5312,5317 ****
--- 5068,5076 ----
  			  gnat_array);
      }
  
+   if (Has_Atomic_Components (gnat_array) || Is_Atomic_Or_VFA (gnat_type))
+     check_ok_for_atomic_type (gnu_type, gnat_array, true);
+ 
    /* If the component type is a padded type made for a non-bit-packed array
       of scalars with reverse storage order, we need to propagate the reverse
       storage order to the padding type since it is the innermost enclosing
*************** gnat_to_gnu_profile_type (Entity_Id gnat
*** 5682,5698 ****
       ought to be merged at some point.  */
    Entity_Id gnat_equiv = Gigi_Equivalent_Type (gnat_type);
    const bool is_from_limited_with
!     = (IN (Ekind (gnat_equiv), Incomplete_Kind)
         && From_Limited_With (gnat_equiv));
    Entity_Id gnat_full_direct_first
      = (is_from_limited_with
         ? Non_Limited_View (gnat_equiv)
!        : (IN (Ekind (gnat_equiv), Incomplete_Or_Private_Kind)
  	  ? Full_View (gnat_equiv) : Empty));
    Entity_Id gnat_full_direct
      = ((is_from_limited_with
  	&& Present (gnat_full_direct_first)
! 	&& IN (Ekind (gnat_full_direct_first), Private_Kind))
         ? Full_View (gnat_full_direct_first)
         : gnat_full_direct_first);
    Entity_Id gnat_full = Gigi_Equivalent_Type (gnat_full_direct);
--- 5441,5457 ----
       ought to be merged at some point.  */
    Entity_Id gnat_equiv = Gigi_Equivalent_Type (gnat_type);
    const bool is_from_limited_with
!     = (Is_Incomplete_Type (gnat_equiv)
         && From_Limited_With (gnat_equiv));
    Entity_Id gnat_full_direct_first
      = (is_from_limited_with
         ? Non_Limited_View (gnat_equiv)
!        : (Is_Incomplete_Or_Private_Type (gnat_equiv)
  	  ? Full_View (gnat_equiv) : Empty));
    Entity_Id gnat_full_direct
      = ((is_from_limited_with
  	&& Present (gnat_full_direct_first)
! 	&& Is_Private_Type (gnat_full_direct_first))
         ? Full_View (gnat_full_direct_first)
         : gnat_full_direct_first);
    Entity_Id gnat_full = Gigi_Equivalent_Type (gnat_full_direct);
*************** gnat_to_gnu_subprog_type (Entity_Id gnat
*** 6016,6022 ****
  		       && (gnat_decl = Parent (gnat_subprog))
  		       && Nkind (gnat_decl) == N_Procedure_Specification
  		       && Null_Present (gnat_decl)
! 		       && IN (Ekind (gnat_param_type), Incomplete_Kind))
  		gnu_param = create_param_decl (gnu_param_name, ptr_type_node);
  
  	      else
--- 5775,5781 ----
  		       && (gnat_decl = Parent (gnat_subprog))
  		       && Nkind (gnat_decl) == N_Procedure_Specification
  		       && Null_Present (gnat_decl)
! 		       && Is_Incomplete_Type (gnat_param_type))
  		gnu_param = create_param_decl (gnu_param_name, ptr_type_node);
  
  	      else
*************** gnat_to_gnu_subprog_type (Entity_Id gnat
*** 6138,6149 ****
  	      unsigned int size
  		= TREE_INT_CST_LOW (TYPE_SIZE (gnu_cico_return_type));
  	      unsigned int i = BITS_PER_UNIT;
! 	      machine_mode mode;
  
  	      while (i < size)
  		i <<= 1;
! 	      mode = mode_for_size (i, MODE_INT, 0);
! 	      if (mode != BLKmode)
  		{
  		  SET_TYPE_MODE (gnu_cico_return_type, mode);
  		  SET_TYPE_ALIGN (gnu_cico_return_type,
--- 5897,5907 ----
  	      unsigned int size
  		= TREE_INT_CST_LOW (TYPE_SIZE (gnu_cico_return_type));
  	      unsigned int i = BITS_PER_UNIT;
! 	      scalar_int_mode mode;
  
  	      while (i < size)
  		i <<= 1;
! 	      if (int_mode_for_size (i, 0).exists (&mode))
  		{
  		  SET_TYPE_MODE (gnu_cico_return_type, mode);
  		  SET_TYPE_ALIGN (gnu_cico_return_type,
*************** array_type_has_nonaliased_component (tre
*** 6355,6360 ****
--- 6113,6123 ----
        return TYPE_NONALIASED_COMPONENT (gnu_parent_type);
      }
  
+   /* Consider that an array of pointers has an aliased component, which is
+      sort of logical and helps with Taft Amendment types in LTO mode.  */
+   if (POINTER_TYPE_P (TREE_TYPE (gnu_type)))
+     return false;
+ 
    /* Otherwise, rely exclusively on properties of the element type.  */
    return type_for_nonaliased_component_p (TREE_TYPE (gnu_type));
  }
*************** gnat_to_gnu_field (Entity_Id gnat_field,
*** 7001,7019 ****
  {
    const Entity_Id gnat_record_type = Underlying_Type (Scope (gnat_field));
    const Entity_Id gnat_field_type = Etype (gnat_field);
-   const bool is_aliased
-     = Is_Aliased (gnat_field);
    const bool is_atomic
      = (Is_Atomic_Or_VFA (gnat_field) || Is_Atomic_Or_VFA (gnat_field_type));
    const bool is_independent
      = (Is_Independent (gnat_field) || Is_Independent (gnat_field_type));
    const bool is_volatile
      = (Treat_As_Volatile (gnat_field) || Treat_As_Volatile (gnat_field_type));
    const bool needs_strict_alignment
!     = (is_aliased
!        || is_independent
!        || is_volatile
!        || Strict_Alignment (gnat_field_type));
    tree gnu_field_type = gnat_to_gnu_type (gnat_field_type);
    tree gnu_field_id = get_entity_name (gnat_field);
    tree gnu_field, gnu_size, gnu_pos;
--- 6764,6787 ----
  {
    const Entity_Id gnat_record_type = Underlying_Type (Scope (gnat_field));
    const Entity_Id gnat_field_type = Etype (gnat_field);
    const bool is_atomic
      = (Is_Atomic_Or_VFA (gnat_field) || Is_Atomic_Or_VFA (gnat_field_type));
+   const bool is_aliased = Is_Aliased (gnat_field);
    const bool is_independent
      = (Is_Independent (gnat_field) || Is_Independent (gnat_field_type));
    const bool is_volatile
      = (Treat_As_Volatile (gnat_field) || Treat_As_Volatile (gnat_field_type));
+   const bool is_strict_alignment = Strict_Alignment (gnat_field_type);
+   /* We used to consider that volatile fields also require strict alignment,
+      but that was an interpolation and would cause us to reject a pragma
+      volatile on a packed record type containing boolean components, while
+      there is no basis to do so in the RM.  In such cases, the writes will
+      involve load-modify-store sequences, but that's OK for volatile.  The
+      only constraint is the implementation advice whereby only the bits of
+      the components should be accessed if they both start and end on byte
+      boundaries, but that should be guaranteed by the GCC memory model.  */
    const bool needs_strict_alignment
!     = (is_atomic || is_aliased || is_independent || is_strict_alignment);
    tree gnu_field_type = gnat_to_gnu_type (gnat_field_type);
    tree gnu_field_id = get_entity_name (gnat_field);
    tree gnu_field, gnu_size, gnu_pos;
*************** gnat_to_gnu_field (Entity_Id gnat_field,
*** 7144,7152 ****
  		s = "position of aliased field& must be multiple of ^ bits";
  	      else if (is_independent)
  		s = "position of independent field& must be multiple of ^ bits";
! 	      else if (is_volatile)
! 		s = "position of volatile field& must be multiple of ^ bits";
! 	      else if (Strict_Alignment (gnat_field_type))
  		s = "position of & with aliased or tagged part must be"
  		    " multiple of ^ bits";
  	      else
--- 6912,6918 ----
  		s = "position of aliased field& must be multiple of ^ bits";
  	      else if (is_independent)
  		s = "position of independent field& must be multiple of ^ bits";
! 	      else if (is_strict_alignment)
  		s = "position of & with aliased or tagged part must be"
  		    " multiple of ^ bits";
  	      else
*************** gnat_to_gnu_field (Entity_Id gnat_field,
*** 7174,7182 ****
  		    s = "size of aliased field& must be ^ bits";
  		  else if (is_independent)
  		    s = "size of independent field& must be at least ^ bits";
! 		  else if (is_volatile)
! 		    s = "size of volatile field& must be at least ^ bits";
! 		  else if (Strict_Alignment (gnat_field_type))
  		    s = "size of & with aliased or tagged part must be"
  			" at least ^ bits";
  		  else
--- 6940,6946 ----
  		    s = "size of aliased field& must be ^ bits";
  		  else if (is_independent)
  		    s = "size of independent field& must be at least ^ bits";
! 		  else if (is_strict_alignment)
  		    s = "size of & with aliased or tagged part must be"
  			" at least ^ bits";
  		  else
*************** gnat_to_gnu_field (Entity_Id gnat_field,
*** 7196,7205 ****
  		  if (is_independent)
  		    s = "size of independent field& must be multiple of"
  			" Storage_Unit";
! 		  else if (is_volatile)
! 		    s = "size of volatile field& must be multiple of"
! 			" Storage_Unit";
! 		  else if (Strict_Alignment (gnat_field_type))
  		    s = "size of & with aliased or tagged part must be"
  			" multiple of Storage_Unit";
  		  else
--- 6960,6966 ----
  		  if (is_independent)
  		    s = "size of independent field& must be multiple of"
  			" Storage_Unit";
! 		  else if (is_strict_alignment)
  		    s = "size of & with aliased or tagged part must be"
  			" multiple of Storage_Unit";
  		  else
*************** gnat_to_gnu_field (Entity_Id gnat_field,
*** 7306,7314 ****
    /* Now create the decl for the field.  */
    gnu_field
      = create_field_decl (gnu_field_id, gnu_field_type, gnu_record_type,
! 			 gnu_size, gnu_pos, packed, Is_Aliased (gnat_field));
    Sloc_to_locus (Sloc (gnat_field), &DECL_SOURCE_LOCATION (gnu_field));
!   DECL_ALIASED_P (gnu_field) = Is_Aliased (gnat_field);
    TREE_SIDE_EFFECTS (gnu_field) = TREE_THIS_VOLATILE (gnu_field) = is_volatile;
  
    if (Ekind (gnat_field) == E_Discriminant)
--- 7067,7075 ----
    /* Now create the decl for the field.  */
    gnu_field
      = create_field_decl (gnu_field_id, gnu_field_type, gnu_record_type,
! 			 gnu_size, gnu_pos, packed, is_aliased);
    Sloc_to_locus (Sloc (gnat_field), &DECL_SOURCE_LOCATION (gnu_field));
!   DECL_ALIASED_P (gnu_field) = is_aliased;
    TREE_SIDE_EFFECTS (gnu_field) = TREE_THIS_VOLATILE (gnu_field) = is_volatile;
  
    if (Ekind (gnat_field) == E_Discriminant)
*************** field_is_artificial (tree field)
*** 7387,7403 ****
    return false;
  }
  
- /* Return true if FIELD is a non-artificial aliased field.  */
- 
- static bool
- field_is_aliased (tree field)
- {
-   if (field_is_artificial (field))
-     return false;
- 
-   return DECL_ALIASED_P (field);
- }
- 
  /* Return true if FIELD is a non-artificial field with self-referential
     size.  */
  
--- 7148,7153 ----
*************** compare_field_bitpos (const PTR rt1, con
*** 7440,7445 ****
--- 7190,7264 ----
    return ret ? ret : (int) (DECL_UID (field1) - DECL_UID (field2));
  }
  
+ /* Reverse function from gnat_to_gnu_field: return the GNAT field present in
+    either GNAT_COMPONENT_LIST or the discriminants of GNAT_RECORD_TYPE, and
+    corresponding to the GNU tree GNU_FIELD.  */
+ 
+ static Entity_Id
+ gnu_field_to_gnat (tree gnu_field, Node_Id gnat_component_list,
+ 		   Entity_Id gnat_record_type)
+ {
+   Entity_Id gnat_component_decl, gnat_field;
+ 
+   if (Present (Component_Items (gnat_component_list)))
+     for (gnat_component_decl
+ 	   = First_Non_Pragma (Component_Items (gnat_component_list));
+ 	 Present (gnat_component_decl);
+ 	 gnat_component_decl = Next_Non_Pragma (gnat_component_decl))
+       {
+ 	gnat_field = Defining_Entity (gnat_component_decl);
+ 	if (gnat_to_gnu_field_decl (gnat_field) == gnu_field)
+ 	  return gnat_field;
+       }
+ 
+   if (Has_Discriminants (gnat_record_type))
+     for (gnat_field = First_Stored_Discriminant (gnat_record_type);
+ 	 Present (gnat_field);
+ 	 gnat_field = Next_Stored_Discriminant (gnat_field))
+       if (gnat_to_gnu_field_decl (gnat_field) == gnu_field)
+ 	return gnat_field;
+ 
+   return Empty;
+ }
+ 
+ /* Issue a warning for the problematic placement of GNU_FIELD present in
+    either GNAT_COMPONENT_LIST or the discriminants of GNAT_RECORD_TYPE.
+    IN_VARIANT is true if GNAT_COMPONENT_LIST is the list of a variant.
+    DO_REORDER is true if fields of GNAT_RECORD_TYPE are being reordered.  */
+ 
+ static void
+ warn_on_field_placement (tree gnu_field, Node_Id gnat_component_list,
+ 			 Entity_Id gnat_record_type, bool in_variant,
+ 			 bool do_reorder)
+ {
+   if (!Comes_From_Source (gnat_record_type))
+     return;
+ 
+   const char *msg1
+     = in_variant
+       ? "?variant layout may cause performance issues"
+       : "?record layout may cause performance issues";
+   const char *msg2
+     = 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";
+ 
+   Entity_Id gnat_field
+     = gnu_field_to_gnat (gnu_field, gnat_component_list, gnat_record_type);
+ 
+   gcc_assert (Present (gnat_field));
+ 
+   post_error (msg1, gnat_field);
+   post_error_ne (msg2, gnat_field, gnat_field);
+   post_error (msg3, gnat_field);
+ }
+ 
  /* Structure holding information for a given variant.  */
  typedef struct vinfo
  {
*************** typedef struct vinfo
*** 7460,7473 ****
  
  } vinfo_t;
  
! /* Translate and chain the GNAT_COMPONENT_LIST to the GNU_FIELD_LIST, set the
!    result as the field list of GNU_RECORD_TYPE and finish it up.  Return true
!    if GNU_RECORD_TYPE has a rep clause which affects the layout (see below).
!    When called from gnat_to_gnu_entity during the processing of a record type
!    definition, the GCC node for the parent, if any, will be the single field
!    of GNU_RECORD_TYPE and the GCC nodes for the discriminants will be on the
!    GNU_FIELD_LIST.  The other calls to this function are recursive calls for
!    the component list of a variant and, in this case, GNU_FIELD_LIST is empty.
  
     PACKED is 1 if this is for a packed record or -1 if this is for a record
     with Component_Alignment of Storage_Unit.
--- 7279,7293 ----
  
  } vinfo_t;
  
! /* Translate and chain GNAT_COMPONENT_LIST present in GNAT_RECORD_TYPE to
!    GNU_FIELD_LIST, set the result as the field list of GNU_RECORD_TYPE and
!    finish it up.  Return true if GNU_RECORD_TYPE has a rep clause that affects
!    the layout (see below).  When called from gnat_to_gnu_entity during the
!    processing of a record definition, the GCC node for the parent, if any,
!    will be the single field of GNU_RECORD_TYPE and the GCC nodes for the
!    discriminants will be on GNU_FIELD_LIST.  The other call to this function
!    is a recursive call for the component list of a variant and, in this case,
!    GNU_FIELD_LIST is empty.
  
     PACKED is 1 if this is for a packed record or -1 if this is for a record
     with Component_Alignment of Storage_Unit.
*************** typedef struct vinfo
*** 7491,7498 ****
     MAYBE_UNUSED is true if this type may be unused in the end; this doesn't
     mean that its contents may be unused as well, only the container itself.
  
-    REORDER is true if we are permitted to reorder components of this type.
- 
     FIRST_FREE_POS, if nonzero, is the first (lowest) free field position in
     the outer record type down to this variant level.  It is nonzero only if
     all the fields down to this level have a rep clause and ALL_REP is false.
--- 7311,7316 ----
*************** typedef struct vinfo
*** 7502,7513 ****
     be done with such fields and the return value will be false.  */
  
  static bool
! components_to_record (tree gnu_record_type, Node_Id gnat_component_list,
! 		      tree gnu_field_list, int packed, bool definition,
! 		      bool cancel_alignment, bool all_rep,
! 		      bool unchecked_union, bool artificial,
! 		      bool debug_info, bool maybe_unused, bool reorder,
! 		      tree first_free_pos, tree *p_gnu_rep_list)
  {
    const bool needs_xv_encodings
      = debug_info && gnat_encodings != DWARF_GNAT_ENCODINGS_MINIMAL;
--- 7320,7331 ----
     be done with such fields and the return value will be false.  */
  
  static bool
! components_to_record (Node_Id gnat_component_list, Entity_Id gnat_record_type,
! 		      tree gnu_field_list, tree gnu_record_type, int packed,
! 		      bool definition, bool cancel_alignment, bool all_rep,
! 		      bool unchecked_union, bool artificial, bool debug_info,
! 		      bool maybe_unused, tree first_free_pos,
! 		      tree *p_gnu_rep_list)
  {
    const bool needs_xv_encodings
      = debug_info && gnat_encodings != DWARF_GNAT_ENCODINGS_MINIMAL;
*************** components_to_record (tree gnu_record_ty
*** 7516,7539 ****
    bool layout_with_rep = false;
    bool has_self_field = false;
    bool has_aliased_after_self_field = false;
!   Node_Id component_decl, variant_part;
    tree gnu_field, gnu_next, gnu_last;
    tree gnu_variant_part = NULL_TREE;
    tree gnu_rep_list = NULL_TREE;
-   tree gnu_var_list = NULL_TREE;
-   tree gnu_self_list = NULL_TREE;
-   tree gnu_zero_list = NULL_TREE;
  
    /* For each component referenced in a component declaration create a GCC
       field and add it to the list, skipping pragmas in the GNAT list.  */
    gnu_last = tree_last (gnu_field_list);
    if (Present (Component_Items (gnat_component_list)))
!     for (component_decl
  	   = First_Non_Pragma (Component_Items (gnat_component_list));
! 	 Present (component_decl);
! 	 component_decl = Next_Non_Pragma (component_decl))
        {
! 	Entity_Id gnat_field = Defining_Entity (component_decl);
  	Name_Id gnat_name = Chars (gnat_field);
  
  	/* If present, the _Parent field must have been created as the single
--- 7334,7354 ----
    bool layout_with_rep = false;
    bool has_self_field = false;
    bool has_aliased_after_self_field = false;
!   Entity_Id gnat_component_decl, gnat_variant_part;
    tree gnu_field, gnu_next, gnu_last;
    tree gnu_variant_part = NULL_TREE;
    tree gnu_rep_list = NULL_TREE;
  
    /* For each component referenced in a component declaration create a GCC
       field and add it to the list, skipping pragmas in the GNAT list.  */
    gnu_last = tree_last (gnu_field_list);
    if (Present (Component_Items (gnat_component_list)))
!     for (gnat_component_decl
  	   = First_Non_Pragma (Component_Items (gnat_component_list));
! 	 Present (gnat_component_decl);
! 	 gnat_component_decl = Next_Non_Pragma (gnat_component_decl))
        {
! 	Entity_Id gnat_field = Defining_Entity (gnat_component_decl);
  	Name_Id gnat_name = Chars (gnat_field);
  
  	/* If present, the _Parent field must have been created as the single
*************** components_to_record (tree gnu_record_ty
*** 7571,7577 ****
  		/* And record information for the final layout.  */
  		if (field_has_self_size (gnu_field))
  		  has_self_field = true;
! 		else if (has_self_field && field_is_aliased (gnu_field))
  		  has_aliased_after_self_field = true;
  	      }
  	  }
--- 7386,7392 ----
  		/* And record information for the final layout.  */
  		if (field_has_self_size (gnu_field))
  		  has_self_field = true;
! 		else if (has_self_field && DECL_ALIASED_P (gnu_field))
  		  has_aliased_after_self_field = true;
  	      }
  	  }
*************** components_to_record (tree gnu_record_ty
*** 7580,7586 ****
        }
  
    /* At the end of the component list there may be a variant part.  */
!   variant_part = Variant_Part (gnat_component_list);
  
    /* We create a QUAL_UNION_TYPE for the variant part since the variants are
       mutually exclusive and should go in the same memory.  To do this we need
--- 7395,7401 ----
        }
  
    /* At the end of the component list there may be a variant part.  */
!   gnat_variant_part = Variant_Part (gnat_component_list);
  
    /* We create a QUAL_UNION_TYPE for the variant part since the variants are
       mutually exclusive and should go in the same memory.  To do this we need
*************** components_to_record (tree gnu_record_ty
*** 7589,7597 ****
       lists for the variants and put them all into the QUAL_UNION_TYPE.
       If this is an Unchecked_Union, we make a UNION_TYPE instead or
       use GNU_RECORD_TYPE if there are no fields so far.  */
!   if (Present (variant_part))
      {
!       Node_Id gnat_discr = Name (variant_part), variant;
        tree gnu_discr = gnat_to_gnu (gnat_discr);
        tree gnu_name = TYPE_IDENTIFIER (gnu_record_type);
        tree gnu_var_name
--- 7404,7412 ----
       lists for the variants and put them all into the QUAL_UNION_TYPE.
       If this is an Unchecked_Union, we make a UNION_TYPE instead or
       use GNU_RECORD_TYPE if there are no fields so far.  */
!   if (Present (gnat_variant_part))
      {
!       Node_Id gnat_discr = Name (gnat_variant_part), variant;
        tree gnu_discr = gnat_to_gnu (gnat_discr);
        tree gnu_name = TYPE_IDENTIFIER (gnu_record_type);
        tree gnu_var_name
*************** components_to_record (tree gnu_record_ty
*** 7653,7659 ****
  	 the container types and computing the associated properties.  However
  	 we cannot finish up the container types during this pass because we
  	 don't know where the variant part will be placed until the end.  */
!       for (variant = First_Non_Pragma (Variants (variant_part));
  	   Present (variant);
  	   variant = Next_Non_Pragma (variant))
  	{
--- 7468,7474 ----
  	 the container types and computing the associated properties.  However
  	 we cannot finish up the container types during this pass because we
  	 don't know where the variant part will be placed until the end.  */
!       for (variant = First_Non_Pragma (Variants (gnat_variant_part));
  	   Present (variant);
  	   variant = Next_Non_Pragma (variant))
  	{
*************** components_to_record (tree gnu_record_ty
*** 7689,7700 ****
  	  /* Add the fields into the record type for the variant.  Note that
  	     we aren't sure to really use it at this point, see below.  */
  	  has_rep
! 	    = components_to_record (gnu_variant_type, Component_List (variant),
! 				    NULL_TREE, packed, definition,
! 				    !all_rep_and_size, all_rep,
! 				    unchecked_union,
! 				    true, needs_xv_encodings, true, reorder,
! 				    this_first_free_pos,
  				    all_rep || this_first_free_pos
  				    ? NULL : &gnu_rep_list);
  
--- 7504,7514 ----
  	  /* Add the fields into the record type for the variant.  Note that
  	     we aren't sure to really use it at this point, see below.  */
  	  has_rep
! 	    = components_to_record (Component_List (variant), gnat_record_type,
! 				    NULL_TREE, gnu_variant_type, packed,
! 				    definition, !all_rep_and_size, all_rep,
! 				    unchecked_union, true, needs_xv_encodings,
! 				    true, this_first_free_pos,
  				    all_rep || this_first_free_pos
  				    ? NULL : &gnu_rep_list);
  
*************** components_to_record (tree gnu_record_ty
*** 7850,7868 ****
  	}
      }
  
!   /* Scan GNU_FIELD_LIST and see if any fields have rep clauses and, if we are
!      permitted to reorder components, self-referential sizes or variable sizes.
!      If they do, pull them out and put them onto the appropriate list.  We have
!      to do this in a separate pass since we want to handle the discriminants
!      but can't play with them until we've used them in debugging data above.
  
       Similarly, pull out the fields with zero size and no rep clause, as they
       would otherwise modify the layout and thus very likely run afoul of the
       Ada semantics, which are different from those of C here.
  
!      ??? If we reorder them, debugging information will be wrong but there is
!      nothing that can be done about this at the moment.  */
!   gnu_last = NULL_TREE;
  
  #define MOVE_FROM_FIELD_LIST_TO(LIST)	\
    do {					\
--- 7664,7713 ----
  	}
      }
  
!   /* Scan GNU_FIELD_LIST and see if any fields have rep clauses.  If they do,
!      pull them out and put them onto the appropriate list.
  
       Similarly, pull out the fields with zero size and no rep clause, as they
       would otherwise modify the layout and thus very likely run afoul of the
       Ada semantics, which are different from those of C here.
  
!      Finally, if there is an aliased field placed in the list after fields
!      with self-referential size, pull out the latter in the same way.
! 
!      Optionally, if the reordering mechanism is enabled, pull out the fields
!      with self-referential size, variable size and fixed size not a multiple
!      of a byte, so that they don't cause the regular fields to be either at
!      self-referential/variable offset or misaligned.  Note, in the latter
!      case, that this can only happen in packed record types so the alignment
!      is effectively capped to the byte for the whole record.  But we don't
!      do it for non-packed record types if pragma Optimize_Alignment (Space)
!      is specified because this can prevent alignment gaps from being filled.
! 
!      Optionally, if the layout warning is enabled, keep track of the above 4
!      different kinds of fields and issue a warning if some of them would be
!      (or are being) reordered by the reordering mechanism.
! 
!      ??? If we reorder fields, the debugging information will be affected and
!      the debugger print fields in a different order from the source code.  */
!   const bool do_reorder
!     = (Convention (gnat_record_type) == Convention_Ada
!        && !No_Reordering (gnat_record_type)
!        && (!Optimize_Alignment_Space (gnat_record_type)
! 	   || Is_Packed (gnat_record_type))
!        && !debug__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));
!   const bool in_variant = (p_gnu_rep_list != NULL);
!   tree gnu_zero_list = NULL_TREE;
!   tree gnu_self_list = NULL_TREE;
!   tree gnu_var_list = NULL_TREE;
!   tree gnu_bitp_list = NULL_TREE;
!   tree gnu_tmp_bitp_list = NULL_TREE;
!   unsigned int tmp_bitp_size = 0;
!   unsigned int last_reorder_field_type = -1;
!   unsigned int tmp_last_reorder_field_type = -1;
  
  #define MOVE_FROM_FIELD_LIST_TO(LIST)	\
    do {					\
*************** components_to_record (tree gnu_record_ty
*** 7875,7880 ****
--- 7720,7726 ----
      (LIST) = gnu_field;			\
    } while (0)
  
+   gnu_last = NULL_TREE;
    for (gnu_field = gnu_field_list; gnu_field; gnu_field = gnu_next)
      {
        gnu_next = DECL_CHAIN (gnu_field);
*************** components_to_record (tree gnu_record_ty
*** 7885,7909 ****
  	  continue;
  	}
  
-       if ((reorder || has_aliased_after_self_field)
- 	  && field_has_self_size (gnu_field))
- 	{
- 	  MOVE_FROM_FIELD_LIST_TO (gnu_self_list);
- 	  continue;
- 	}
- 
-       if (reorder && field_has_variable_size (gnu_field))
- 	{
- 	  MOVE_FROM_FIELD_LIST_TO (gnu_var_list);
- 	  continue;
- 	}
- 
        if (DECL_SIZE (gnu_field) && integer_zerop (DECL_SIZE (gnu_field)))
  	{
  	  DECL_FIELD_OFFSET (gnu_field) = size_zero_node;
  	  SET_DECL_OFFSET_ALIGN (gnu_field, BIGGEST_ALIGNMENT);
  	  DECL_FIELD_BIT_OFFSET (gnu_field) = bitsize_zero_node;
! 	  if (field_is_aliased (gnu_field))
  	    SET_TYPE_ALIGN (gnu_record_type,
  			    MAX (TYPE_ALIGN (gnu_record_type),
  				 TYPE_ALIGN (TREE_TYPE (gnu_field))));
--- 7731,7742 ----
  	  continue;
  	}
  
        if (DECL_SIZE (gnu_field) && integer_zerop (DECL_SIZE (gnu_field)))
  	{
  	  DECL_FIELD_OFFSET (gnu_field) = size_zero_node;
  	  SET_DECL_OFFSET_ALIGN (gnu_field, BIGGEST_ALIGNMENT);
  	  DECL_FIELD_BIT_OFFSET (gnu_field) = bitsize_zero_node;
! 	  if (DECL_ALIASED_P (gnu_field))
  	    SET_TYPE_ALIGN (gnu_record_type,
  			    MAX (TYPE_ALIGN (gnu_record_type),
  				 TYPE_ALIGN (TREE_TYPE (gnu_field))));
*************** components_to_record (tree gnu_record_ty
*** 7911,7916 ****
--- 7744,7872 ----
  	  continue;
  	}
  
+       if (has_aliased_after_self_field && field_has_self_size (gnu_field))
+ 	{
+ 	  MOVE_FROM_FIELD_LIST_TO (gnu_self_list);
+ 	  continue;
+ 	}
+ 
+       /* We don't need further processing in default mode.  */
+       if (!w_reorder && !do_reorder)
+ 	{
+ 	  gnu_last = gnu_field;
+ 	  continue;
+ 	}
+ 
+       if (field_has_self_size (gnu_field))
+ 	{
+ 	  if (w_reorder)
+ 	    {
+ 	      if (last_reorder_field_type < 4)
+ 		warn_on_field_placement (gnu_field, gnat_component_list,
+ 					 gnat_record_type, in_variant,
+ 					 do_reorder);
+ 	      else
+ 		last_reorder_field_type = 4;
+ 	    }
+ 
+ 	  if (do_reorder)
+ 	    {
+ 	      MOVE_FROM_FIELD_LIST_TO (gnu_self_list);
+ 	      continue;
+ 	    }
+ 	}
+ 
+       else if (field_has_variable_size (gnu_field))
+ 	{
+ 	  if (w_reorder)
+ 	    {
+ 	      if (last_reorder_field_type < 3)
+ 		warn_on_field_placement (gnu_field, gnat_component_list,
+ 					 gnat_record_type, in_variant,
+ 					 do_reorder);
+ 	      else
+ 		last_reorder_field_type = 3;
+ 	    }
+ 
+ 	  if (do_reorder)
+ 	    {
+ 	      MOVE_FROM_FIELD_LIST_TO (gnu_var_list);
+ 	      continue;
+ 	    }
+ 	}
+ 
+       else
+ 	{
+ 	  /* If the field has no size, then it cannot be bit-packed.  */
+ 	  const unsigned int bitp_size
+ 	    = DECL_SIZE (gnu_field)
+ 	      ? TREE_INT_CST_LOW (DECL_SIZE (gnu_field)) % BITS_PER_UNIT
+ 	      : 0;
+ 
+ 	  /* If the field is bit-packed, we move it to a temporary list that
+ 	     contains the contiguously preceding bit-packed fields, because
+ 	     we want to be able to put them back if the misalignment happens
+ 	     to cancel itself after several bit-packed fields.  */
+ 	  if (bitp_size != 0)
+ 	    {
+ 	      tmp_bitp_size = (tmp_bitp_size + bitp_size) % BITS_PER_UNIT;
+ 
+ 	      if (last_reorder_field_type != 2)
+ 		{
+ 		  tmp_last_reorder_field_type = last_reorder_field_type;
+ 		  last_reorder_field_type = 2;
+ 		}
+ 
+ 	      if (do_reorder)
+ 		{
+ 		  MOVE_FROM_FIELD_LIST_TO (gnu_tmp_bitp_list);
+ 		  continue;
+ 		}
+ 	    }
+ 
+ 	  /* No more bit-packed fields, move the existing ones to the end or
+ 	     put them back at their original location.  */
+ 	  else if (last_reorder_field_type == 2 || gnu_tmp_bitp_list)
+ 	    {
+ 	      last_reorder_field_type = 1;
+ 
+ 	      if (tmp_bitp_size != 0)
+ 		{
+ 		  if (w_reorder && tmp_last_reorder_field_type < 2)
+ 		    warn_on_field_placement (gnu_tmp_bitp_list
+ 					     ? gnu_tmp_bitp_list : gnu_last,
+ 					     gnat_component_list,
+ 					     gnat_record_type, in_variant,
+ 					     do_reorder);
+ 
+ 		  if (do_reorder)
+ 		    gnu_bitp_list = chainon (gnu_tmp_bitp_list, gnu_bitp_list);
+ 
+ 		  gnu_tmp_bitp_list = NULL_TREE;
+ 		  tmp_bitp_size = 0;
+ 		}
+ 	      else
+ 		{
+ 		  /* Rechain the temporary list in front of GNU_FIELD.  */
+ 		  tree gnu_bitp_field = gnu_field;
+ 		  while (gnu_tmp_bitp_list)
+ 		    {
+ 		      tree gnu_bitp_next = DECL_CHAIN (gnu_tmp_bitp_list);
+ 		      DECL_CHAIN (gnu_tmp_bitp_list) = gnu_bitp_field;
+ 		      if (gnu_last)
+ 			DECL_CHAIN (gnu_last) = gnu_tmp_bitp_list;
+ 		      else
+ 			gnu_field_list = gnu_tmp_bitp_list;
+ 		      gnu_bitp_field = gnu_tmp_bitp_list;
+ 		      gnu_tmp_bitp_list = gnu_bitp_next;
+ 		    }
+ 		}
+ 	    }
+ 
+ 	  else
+ 	    last_reorder_field_type = 1;
+ 	}
+ 
        gnu_last = gnu_field;
      }
  
*************** components_to_record (tree gnu_record_ty
*** 7920,7934 ****
  
    /* If permitted, we reorder the fields as follows:
  
!        1) all fixed length fields,
!        2) all fields whose length doesn't depend on discriminants,
!        3) all fields whose length depends on discriminants,
!        4) the variant part,
  
       within the record and within each variant recursively.  */
!   if (reorder)
!     gnu_field_list
!       = chainon (gnu_field_list, chainon (gnu_var_list, gnu_self_list));
  
    /* Otherwise, if there is an aliased field placed after a field whose length
       depends on discriminants, we put all the fields of the latter sort, last.
--- 7876,7919 ----
  
    /* If permitted, we reorder the fields as follows:
  
!       1) all (groups of) fields whose length is fixed and multiple of a byte,
!       2) the remaining fields whose length is fixed and not multiple of a byte,
!       3) the remaining fields whose length doesn't depend on discriminants,
!       4) all fields whose length depends on discriminants,
!       5) the variant part,
  
       within the record and within each variant recursively.  */
! 
!   if (w_reorder)
!     {
!       /* If we have pending bit-packed fields, warn if they would be moved
! 	 to after regular fields.  */
!       if (last_reorder_field_type == 2
! 	  && tmp_bitp_size != 0
! 	  && tmp_last_reorder_field_type < 2)
! 	warn_on_field_placement (gnu_tmp_bitp_list
! 				 ? gnu_tmp_bitp_list : gnu_field_list,
! 				 gnat_component_list, gnat_record_type,
! 				 in_variant, do_reorder);
!     }
! 
!   if (do_reorder)
!     {
!       /* If we have pending bit-packed fields on the temporary list, we put
! 	 them either on the bit-packed list or back on the regular list.  */
!       if (gnu_tmp_bitp_list)
! 	{
! 	  if (tmp_bitp_size != 0)
! 	    gnu_bitp_list = chainon (gnu_tmp_bitp_list, gnu_bitp_list);
! 	  else
! 	    gnu_field_list = chainon (gnu_tmp_bitp_list, gnu_field_list);
! 	}
! 
!       gnu_field_list
! 	= chainon (gnu_field_list,
! 		   chainon (gnu_bitp_list,
! 			    chainon (gnu_var_list, gnu_self_list)));
!     }
  
    /* Otherwise, if there is an aliased field placed after a field whose length
       depends on discriminants, we put all the fields of the latter sort, last.
*************** components_to_record (tree gnu_record_ty
*** 8039,8051 ****
  static Uint
  annotate_value (tree gnu_size)
  {
    TCode tcode;
!   Node_Ref_Or_Val ops[3], ret, pre_op1 = No_Uint;
    struct tree_int_map in;
-   int i;
  
    /* See if we've already saved the value for this node.  */
!   if (EXPR_P (gnu_size))
      {
        struct tree_int_map *e;
  
--- 8024,8036 ----
  static Uint
  annotate_value (tree gnu_size)
  {
+   static int var_count = 0;
    TCode tcode;
!   Node_Ref_Or_Val ops[3] = { No_Uint, No_Uint, No_Uint };
    struct tree_int_map in;
  
    /* See if we've already saved the value for this node.  */
!   if (EXPR_P (gnu_size) || DECL_P (gnu_size))
      {
        struct tree_int_map *e;
  
*************** annotate_value (tree gnu_size)
*** 8059,8067 ****
      in.base.from = NULL_TREE;
  
    /* If we do not return inside this switch, TCODE will be set to the
!      code to use for a Create_Node operand and LEN (set above) will be
!      the number of recursive calls for us to make.  */
! 
    switch (TREE_CODE (gnu_size))
      {
      case INTEGER_CST:
--- 8044,8050 ----
      in.base.from = NULL_TREE;
  
    /* If we do not return inside this switch, TCODE will be set to the
!      code to be used in a call to Create_Node.  */
    switch (TREE_CODE (gnu_size))
      {
      case INTEGER_CST:
*************** annotate_value (tree gnu_size)
*** 8069,8107 ****
  	 can appear for discriminants in expressions for variants.  */
        if (tree_int_cst_sgn (gnu_size) < 0)
  	{
! 	  tree t = wide_int_to_tree (sizetype, wi::neg (gnu_size));
! 	  return annotate_value (build1 (NEGATE_EXPR, sizetype, t));
  	}
! 
!       return TREE_OVERFLOW (gnu_size) ? No_Uint : UI_From_gnu (gnu_size);
  
      case COMPONENT_REF:
        /* The only case we handle here is a simple discriminant reference.  */
        if (DECL_DISCRIMINANT_NUMBER (TREE_OPERAND (gnu_size, 1)))
  	{
! 	  tree n = DECL_DISCRIMINANT_NUMBER (TREE_OPERAND (gnu_size, 1));
  
  	  /* Climb up the chain of successive extensions, if any.  */
! 	  while (TREE_CODE (TREE_OPERAND (gnu_size, 0)) == COMPONENT_REF
! 		 && DECL_NAME (TREE_OPERAND (TREE_OPERAND (gnu_size, 0), 1))
  		    == parent_name_id)
! 	    gnu_size = TREE_OPERAND (gnu_size, 0);
  
! 	  if (TREE_CODE (TREE_OPERAND (gnu_size, 0)) == PLACEHOLDER_EXPR)
! 	    return
! 	      Create_Node (Discrim_Val, annotate_value (n), No_Uint, No_Uint);
  	}
  
!       return No_Uint;
  
!     CASE_CONVERT:   case NON_LVALUE_EXPR:
        return annotate_value (TREE_OPERAND (gnu_size, 0));
  
        /* Now just list the operations we handle.  */
      case COND_EXPR:		tcode = Cond_Expr; break;
-     case PLUS_EXPR:		tcode = Plus_Expr; break;
      case MINUS_EXPR:		tcode = Minus_Expr; break;
-     case MULT_EXPR:		tcode = Mult_Expr; break;
      case TRUNC_DIV_EXPR:	tcode = Trunc_Div_Expr; break;
      case CEIL_DIV_EXPR:		tcode = Ceil_Div_Expr; break;
      case FLOOR_DIV_EXPR:	tcode = Floor_Div_Expr; break;
--- 8052,8103 ----
  	 can appear for discriminants in expressions for variants.  */
        if (tree_int_cst_sgn (gnu_size) < 0)
  	{
! 	  tree t = wide_int_to_tree (sizetype, -wi::to_wide (gnu_size));
! 	  tcode = Negate_Expr;
! 	  ops[0] = UI_From_gnu (t);
  	}
!       else
! 	return TREE_OVERFLOW (gnu_size) ? No_Uint : UI_From_gnu (gnu_size);
!       break;
  
      case COMPONENT_REF:
        /* The only case we handle here is a simple discriminant reference.  */
        if (DECL_DISCRIMINANT_NUMBER (TREE_OPERAND (gnu_size, 1)))
  	{
! 	  tree ref = gnu_size;
! 	  gnu_size = TREE_OPERAND (ref, 1);
  
  	  /* Climb up the chain of successive extensions, if any.  */
! 	  while (TREE_CODE (TREE_OPERAND (ref, 0)) == COMPONENT_REF
! 		 && DECL_NAME (TREE_OPERAND (TREE_OPERAND (ref, 0), 1))
  		    == parent_name_id)
! 	    ref = TREE_OPERAND (ref, 0);
  
! 	  if (TREE_CODE (TREE_OPERAND (ref, 0)) == PLACEHOLDER_EXPR)
! 	    {
! 	      /* Fall through to common processing as a FIELD_DECL.  */
! 	      tcode = Discrim_Val;
! 	      ops[0] = UI_From_gnu (DECL_DISCRIMINANT_NUMBER (gnu_size));
! 	    }
! 	  else
! 	    return No_Uint;
  	}
+       else
+ 	return No_Uint;
+       break;
  
!     case VAR_DECL:
!       tcode = Dynamic_Val;
!       ops[0] = UI_From_Int (++var_count);
!       break;
  
!     CASE_CONVERT:
!     case NON_LVALUE_EXPR:
        return annotate_value (TREE_OPERAND (gnu_size, 0));
  
        /* Now just list the operations we handle.  */
      case COND_EXPR:		tcode = Cond_Expr; break;
      case MINUS_EXPR:		tcode = Minus_Expr; break;
      case TRUNC_DIV_EXPR:	tcode = Trunc_Div_Expr; break;
      case CEIL_DIV_EXPR:		tcode = Ceil_Div_Expr; break;
      case FLOOR_DIV_EXPR:	tcode = Floor_Div_Expr; break;
*************** annotate_value (tree gnu_size)
*** 8126,8131 ****
--- 8122,8153 ----
      case EQ_EXPR:		tcode = Eq_Expr; break;
      case NE_EXPR:		tcode = Ne_Expr; break;
  
+     case MULT_EXPR:
+     case PLUS_EXPR:
+       tcode = (TREE_CODE (gnu_size) == MULT_EXPR ? Mult_Expr : Plus_Expr);
+       /* Fold conversions from bytes to bits into inner operations.  */
+       if (TREE_CODE (TREE_OPERAND (gnu_size, 1)) == INTEGER_CST
+ 	  && CONVERT_EXPR_P (TREE_OPERAND (gnu_size, 0)))
+ 	{
+ 	  tree inner_op = TREE_OPERAND (TREE_OPERAND (gnu_size, 0), 0);
+ 	  if (TREE_CODE (inner_op) == TREE_CODE (gnu_size)
+ 	      && TREE_CODE (TREE_OPERAND (inner_op, 1)) == INTEGER_CST)
+ 	    {
+ 	      tree inner_op_op1 = TREE_OPERAND (inner_op, 1);
+ 	      tree gnu_size_op1 = TREE_OPERAND (gnu_size, 1);
+ 	      widest_int op1;
+ 	      if (TREE_CODE (gnu_size) == MULT_EXPR)
+ 		op1 = (wi::to_widest (inner_op_op1)
+ 		       * wi::to_widest (gnu_size_op1));
+ 	      else
+ 		op1 = (wi::to_widest (inner_op_op1)
+ 		       + wi::to_widest (gnu_size_op1));
+ 	      ops[1] = UI_From_gnu (wide_int_to_tree (sizetype, op1));
+ 	      ops[0] = annotate_value (TREE_OPERAND (inner_op, 0));
+ 	    }
+ 	}
+       break;
+ 
      case BIT_AND_EXPR:
        tcode = Bit_And_Expr;
        /* For negative values in sizetype, build NEGATE_EXPR of the opposite.
*************** annotate_value (tree gnu_size)
*** 8134,8144 ****
        if (TREE_CODE (TREE_OPERAND (gnu_size, 1)) == INTEGER_CST)
  	{
  	  tree op1 = TREE_OPERAND (gnu_size, 1);
! 	  wide_int signed_op1 = wi::sext (op1, TYPE_PRECISION (sizetype));
  	  if (wi::neg_p (signed_op1))
  	    {
  	      op1 = wide_int_to_tree (sizetype, wi::neg (signed_op1));
! 	      pre_op1 = annotate_value (build1 (NEGATE_EXPR, sizetype, op1));
  	    }
  	}
        break;
--- 8156,8167 ----
        if (TREE_CODE (TREE_OPERAND (gnu_size, 1)) == INTEGER_CST)
  	{
  	  tree op1 = TREE_OPERAND (gnu_size, 1);
! 	  wide_int signed_op1 = wi::sext (wi::to_wide (op1),
! 					  TYPE_PRECISION (sizetype));
  	  if (wi::neg_p (signed_op1))
  	    {
  	      op1 = wide_int_to_tree (sizetype, wi::neg (signed_op1));
! 	      ops[1] = annotate_value (build1 (NEGATE_EXPR, sizetype, op1));
  	    }
  	}
        break;
*************** annotate_value (tree gnu_size)
*** 8150,8183 ****
        if (List_Representation_Info == 3 || type_annotate_only)
  	{
  	  tree t = maybe_inline_call_in_expr (gnu_size);
! 	  if (t)
! 	    return annotate_value (t);
  	}
        else
  	return Uint_Minus_1;
  
-       /* Fall through... */
- 
      default:
        return No_Uint;
      }
  
    /* Now get each of the operands that's relevant for this code.  If any
       cannot be expressed as a repinfo node, say we can't.  */
!   for (i = 0; i < 3; i++)
!     ops[i] = No_Uint;
! 
!   for (i = 0; i < TREE_CODE_LENGTH (TREE_CODE (gnu_size)); i++)
!     {
!       if (i == 1 && pre_op1 != No_Uint)
! 	ops[i] = pre_op1;
!       else
  	ops[i] = annotate_value (TREE_OPERAND (gnu_size, i));
!       if (ops[i] == No_Uint)
! 	return No_Uint;
!     }
  
!   ret = Create_Node (tcode, ops[0], ops[1], ops[2]);
  
    /* Save the result in the cache.  */
    if (in.base.from)
--- 8173,8198 ----
        if (List_Representation_Info == 3 || type_annotate_only)
  	{
  	  tree t = maybe_inline_call_in_expr (gnu_size);
! 	  return t ? annotate_value (t) : No_Uint;
  	}
        else
  	return Uint_Minus_1;
  
      default:
        return No_Uint;
      }
  
    /* Now get each of the operands that's relevant for this code.  If any
       cannot be expressed as a repinfo node, say we can't.  */
!   for (int i = 0; i < TREE_CODE_LENGTH (TREE_CODE (gnu_size)); i++)
!     if (ops[i] == No_Uint)
!       {
  	ops[i] = annotate_value (TREE_OPERAND (gnu_size, i));
! 	if (ops[i] == No_Uint)
! 	  return No_Uint;
!       }
  
!   Node_Ref_Or_Val ret = Create_Node (tcode, ops[0], ops[1], ops[2]);
  
    /* Save the result in the cache.  */
    if (in.base.from)
*************** annotate_value (tree gnu_size)
*** 8190,8196 ****
        h = annotate_value_cache->find_slot (&in, INSERT);
        gcc_assert (!*h);
        *h = ggc_alloc<tree_int_map> ();
!       (*h)->base.from = gnu_size;
        (*h)->to = ret;
      }
  
--- 8205,8211 ----
        h = annotate_value_cache->find_slot (&in, INSERT);
        gcc_assert (!*h);
        *h = ggc_alloc<tree_int_map> ();
!       (*h)->base.from = in.base.from;
        (*h)->to = ret;
      }
  
*************** purpose_member_field (const_tree elem, t
*** 8253,8271 ****
  static void
  annotate_rep (Entity_Id gnat_entity, tree gnu_type)
  {
!   Entity_Id gnat_field;
!   tree gnu_list;
  
    /* We operate by first making a list of all fields and their position (we
       can get the size easily) and then update all the sizes in the tree.  */
!   gnu_list
      = build_position_list (gnu_type, false, size_zero_node, bitsize_zero_node,
  			   BIGGEST_ALIGNMENT, NULL_TREE);
  
!   for (gnat_field = First_Entity (gnat_entity);
         Present (gnat_field);
         gnat_field = Next_Entity (gnat_field))
!     if (Ekind (gnat_field) == E_Component
  	|| (Ekind (gnat_field) == E_Discriminant
  	    && !Is_Unchecked_Union (Scope (gnat_field))))
        {
--- 8268,8289 ----
  static void
  annotate_rep (Entity_Id gnat_entity, tree gnu_type)
  {
!   /* For an extension, the inherited components have not been translated because
!      they are fetched from the _Parent component on the fly.  */
!   const bool is_extension
!     = Is_Tagged_Type (gnat_entity) && Is_Derived_Type (gnat_entity);
  
    /* We operate by first making a list of all fields and their position (we
       can get the size easily) and then update all the sizes in the tree.  */
!   tree gnu_list
      = build_position_list (gnu_type, false, size_zero_node, bitsize_zero_node,
  			   BIGGEST_ALIGNMENT, NULL_TREE);
  
!   for (Entity_Id gnat_field = First_Entity (gnat_entity);
         Present (gnat_field);
         gnat_field = Next_Entity (gnat_field))
!     if ((Ekind (gnat_field) == E_Component
! 	 && (is_extension || present_gnu_tree (gnat_field)))
  	|| (Ekind (gnat_field) == E_Discriminant
  	    && !Is_Unchecked_Union (Scope (gnat_field))))
        {
*************** annotate_rep (Entity_Id gnat_entity, tre
*** 8312,8318 ****
  	    Set_Esize (gnat_field,
  		       annotate_value (DECL_SIZE (TREE_PURPOSE (t))));
  	  }
! 	else if (Is_Tagged_Type (gnat_entity) && Is_Derived_Type (gnat_entity))
  	  {
  	    /* If there is no entry, this is an inherited component whose
  	       position is the same as in the parent type.  */
--- 8330,8336 ----
  	    Set_Esize (gnat_field,
  		       annotate_value (DECL_SIZE (TREE_PURPOSE (t))));
  	  }
! 	else if (is_extension)
  	  {
  	    /* If there is no entry, this is an inherited component whose
  	       position is the same as in the parent type.  */
*************** build_subst_list (Entity_Id gnat_subtype
*** 8413,8419 ****
  				    (Node (gnat_constr), gnat_subtype,
  				     get_entity_char (gnat_discrim),
  				     definition, true, false));
! 	subst_pair s = {gnu_field, replacement};
  	gnu_list.safe_push (s);
        }
  
--- 8431,8437 ----
  				    (Node (gnat_constr), gnat_subtype,
  				     get_entity_char (gnat_discrim),
  				     definition, true, false));
! 	subst_pair s = { gnu_field, replacement };
  	gnu_list.safe_push (s);
        }
  
*************** build_variant_list (tree qual_union_type
*** 8447,8453 ****
        if (!integer_zerop (qual))
  	{
  	  tree variant_type = TREE_TYPE (gnu_field), variant_subpart;
! 	  variant_desc v = {variant_type, gnu_field, qual, NULL_TREE};
  
  	  gnu_list.safe_push (v);
  
--- 8465,8471 ----
        if (!integer_zerop (qual))
  	{
  	  tree variant_type = TREE_TYPE (gnu_field), variant_subpart;
! 	  variant_desc v = { variant_type, gnu_field, qual, NULL_TREE };
  
  	  gnu_list.safe_push (v);
  
*************** validate_size (Uint uint_size, tree gnu_
*** 8563,8571 ****
       by the smallest integral mode that's valid for pointers.  */
    if (TREE_CODE (gnu_type) == POINTER_TYPE || TYPE_IS_FAT_POINTER_P (gnu_type))
      {
!       machine_mode p_mode = GET_CLASS_NARROWEST_MODE (MODE_INT);
        while (!targetm.valid_pointer_mode (p_mode))
! 	p_mode = GET_MODE_WIDER_MODE (p_mode);
        type_size = bitsize_int (GET_MODE_BITSIZE (p_mode));
      }
  
--- 8581,8589 ----
       by the smallest integral mode that's valid for pointers.  */
    if (TREE_CODE (gnu_type) == POINTER_TYPE || TYPE_IS_FAT_POINTER_P (gnu_type))
      {
!       scalar_int_mode p_mode = NARROWEST_INT_MODE;
        while (!targetm.valid_pointer_mode (p_mode))
! 	p_mode = GET_MODE_WIDER_MODE (p_mode).require ();
        type_size = bitsize_int (GET_MODE_BITSIZE (p_mode));
      }
  
*************** check_ok_for_atomic_type (tree type, Ent
*** 8837,8845 ****
  
    /* Consider all aligned floating-point types atomic and any aligned types
       that are represented by integers no wider than a machine word.  */
    if ((mclass == MODE_FLOAT
!        || ((mclass == MODE_INT || mclass == MODE_PARTIAL_INT)
! 	   && GET_MODE_BITSIZE (mode) <= BITS_PER_WORD))
        && align >= GET_MODE_ALIGNMENT (mode))
      return;
  
--- 8855,8864 ----
  
    /* Consider all aligned floating-point types atomic and any aligned types
       that are represented by integers no wider than a machine word.  */
+   scalar_int_mode int_mode;
    if ((mclass == MODE_FLOAT
!        || (is_a <scalar_int_mode> (mode, &int_mode)
! 	   && GET_MODE_BITSIZE (int_mode) <= BITS_PER_WORD))
        && align >= GET_MODE_ALIGNMENT (mode))
      return;
  
*************** get_variant_part (tree record_type)
*** 9145,9157 ****
     the list of variants to be used and RECORD_TYPE is the type of the parent.
     POS_LIST is a position list describing the layout of fields present in
     OLD_VARIANT_PART and SUBST_LIST a substitution list to be applied to this
!    layout.  */
  
  static tree
  create_variant_part_from (tree old_variant_part,
  			  vec<variant_desc> variant_list,
  			  tree record_type, tree pos_list,
! 			  vec<subst_pair> subst_list)
  {
    tree offset = DECL_FIELD_OFFSET (old_variant_part);
    tree old_union_type = TREE_TYPE (old_variant_part);
--- 9164,9177 ----
     the list of variants to be used and RECORD_TYPE is the type of the parent.
     POS_LIST is a position list describing the layout of fields present in
     OLD_VARIANT_PART and SUBST_LIST a substitution list to be applied to this
!    layout.  DEBUG_INFO_P is true if we need to write debug information.  */
  
  static tree
  create_variant_part_from (tree old_variant_part,
  			  vec<variant_desc> variant_list,
  			  tree record_type, tree pos_list,
! 			  vec<subst_pair> subst_list,
! 			  bool debug_info_p)
  {
    tree offset = DECL_FIELD_OFFSET (old_variant_part);
    tree old_union_type = TREE_TYPE (old_variant_part);
*************** create_variant_part_from (tree old_varia
*** 9169,9175 ****
    /* If the position of the variant part is constant, subtract it from the
       size of the type of the parent to get the new size.  This manual CSE
       reduces the code size when not optimizing.  */
!   if (TREE_CODE (offset) == INTEGER_CST)
      {
        tree bitpos = DECL_FIELD_BIT_OFFSET (old_variant_part);
        tree first_bit = bit_from_pos (offset, bitpos);
--- 9189,9197 ----
    /* If the position of the variant part is constant, subtract it from the
       size of the type of the parent to get the new size.  This manual CSE
       reduces the code size when not optimizing.  */
!   if (TREE_CODE (offset) == INTEGER_CST
!       && TYPE_SIZE (record_type)
!       && TYPE_SIZE_UNIT (record_type))
      {
        tree bitpos = DECL_FIELD_BIT_OFFSET (old_variant_part);
        tree first_bit = bit_from_pos (offset, bitpos);
*************** create_variant_part_from (tree old_varia
*** 9209,9225 ****
  	{
  	  tree new_variant_subpart
  	    = create_variant_part_from (old_variant_subpart, variant_list,
! 					new_variant, pos_list, subst_list);
  	  DECL_CHAIN (new_variant_subpart) = field_list;
  	  field_list = new_variant_subpart;
  	}
  
!       /* Finish up the new variant and create the field.  No need for debug
! 	 info thanks to the XVS type.  */
!       finish_record_type (new_variant, nreverse (field_list), 2, false);
        compute_record_mode (new_variant);
!       create_type_decl (TYPE_NAME (new_variant), new_variant, true, false,
! 			Empty);
  
        new_field
  	= create_field_decl_from (old_field, new_variant, new_union_type,
--- 9231,9247 ----
  	{
  	  tree new_variant_subpart
  	    = create_variant_part_from (old_variant_subpart, variant_list,
! 					new_variant, pos_list, subst_list,
! 					debug_info_p);
  	  DECL_CHAIN (new_variant_subpart) = field_list;
  	  field_list = new_variant_subpart;
  	}
  
!       /* Finish up the new variant and create the field.  */
!       finish_record_type (new_variant, nreverse (field_list), 2, debug_info_p);
        compute_record_mode (new_variant);
!       create_type_decl (TYPE_NAME (new_variant), new_variant, true,
! 			debug_info_p, Empty);
  
        new_field
  	= create_field_decl_from (old_field, new_variant, new_union_type,
*************** create_variant_part_from (tree old_varia
*** 9231,9243 ****
        union_field_list = new_field;
      }
  
!   /* Finish up the union type and create the variant part.  No need for debug
!      info thanks to the XVS type.  Note that we don't reverse the field list
!      because VARIANT_LIST has been traversed in reverse order.  */
!   finish_record_type (new_union_type, union_field_list, 2, false);
    compute_record_mode (new_union_type);
!   create_type_decl (TYPE_NAME (new_union_type), new_union_type, true, false,
! 		    Empty);
  
    new_variant_part
      = create_field_decl_from (old_variant_part, new_union_type, record_type,
--- 9253,9265 ----
        union_field_list = new_field;
      }
  
!   /* Finish up the union type and create the variant part.  Note that we don't
!      reverse the field list because VARIANT_LIST has been traversed in reverse
!      order.  */
!   finish_record_type (new_union_type, union_field_list, 2, debug_info_p);
    compute_record_mode (new_union_type);
!   create_type_decl (TYPE_NAME (new_union_type), new_union_type, true,
! 		    debug_info_p, Empty);
  
    new_variant_part
      = create_field_decl_from (old_variant_part, new_union_type, record_type,
*************** copy_and_substitute_in_size (tree new_ty
*** 9304,9309 ****
--- 9326,9619 ----
    TYPE_SIZE_UNIT (new_type) = variable_size (TYPE_SIZE_UNIT (new_type));
  }
  
+ /* Return true if DISC is a stored discriminant of RECORD_TYPE.  */
+ 
+ static inline bool
+ is_stored_discriminant (Entity_Id discr, Entity_Id record_type)
+ {
+   if (Is_Unchecked_Union (record_type))
+     return false;
+   else if (Is_Tagged_Type (record_type))
+     return No (Corresponding_Discriminant (discr));
+   else if (Ekind (record_type) == E_Record_Type)
+     return Original_Record_Component (discr) == discr;
+   else
+     return true;
+ }
+ 
+ /* Copy the layout from {GNAT,GNU}_OLD_TYPE to {GNAT,GNU}_NEW_TYPE, which are
+    both record types, after applying the substitutions described in SUBST_LIST.
+    DEBUG_INFO_P is true if we need to write debug information for NEW_TYPE.  */
+ 
+ static void
+ copy_and_substitute_in_layout (Entity_Id gnat_new_type,
+ 			       Entity_Id gnat_old_type,
+ 			       tree gnu_new_type,
+ 			       tree gnu_old_type,
+ 			       vec<subst_pair> gnu_subst_list,
+ 			       bool debug_info_p)
+ {
+   const bool is_subtype = (Ekind (gnat_new_type) == E_Record_Subtype);
+   tree gnu_field_list = NULL_TREE;
+   bool selected_variant, all_constant_pos = true;
+   vec<variant_desc> gnu_variant_list;
+ 
+   /* Look for REP and variant parts in the old type.  */
+   tree gnu_rep_part = get_rep_part (gnu_old_type);
+   tree gnu_variant_part = get_variant_part (gnu_old_type);
+ 
+   /* If there is a variant part, we must compute whether the constraints
+      statically select a particular variant.  If so, we simply drop the
+      qualified union and flatten the list of fields.  Otherwise we will
+      build a new qualified union for the variants that are still relevant.  */
+   if (gnu_variant_part)
+     {
+       variant_desc *v;
+       unsigned int i;
+ 
+       gnu_variant_list = build_variant_list (TREE_TYPE (gnu_variant_part),
+ 					     gnu_subst_list, vNULL);
+ 
+       /* If all the qualifiers are unconditionally true, the innermost variant
+ 	 is statically selected.  */
+       selected_variant = true;
+       FOR_EACH_VEC_ELT (gnu_variant_list, i, v)
+ 	if (!integer_onep (v->qual))
+ 	  {
+ 	    selected_variant = false;
+ 	    break;
+ 	  }
+ 
+       /* Otherwise, create the new variants.  */
+       if (!selected_variant)
+ 	FOR_EACH_VEC_ELT (gnu_variant_list, i, v)
+ 	  {
+ 	    tree old_variant = v->type;
+ 	    tree new_variant = make_node (RECORD_TYPE);
+ 	    tree suffix
+ 	      = concat_name (DECL_NAME (gnu_variant_part),
+ 			     IDENTIFIER_POINTER (DECL_NAME (v->field)));
+ 	    TYPE_NAME (new_variant)
+ 	      = concat_name (TYPE_NAME (gnu_new_type),
+ 			     IDENTIFIER_POINTER (suffix));
+ 	    TYPE_REVERSE_STORAGE_ORDER (new_variant)
+ 	      = TYPE_REVERSE_STORAGE_ORDER (gnu_new_type);
+ 	    copy_and_substitute_in_size (new_variant, old_variant,
+ 					 gnu_subst_list);
+ 	    v->new_type = new_variant;
+ 	  }
+     }
+   else
+     {
+       gnu_variant_list.create (0);
+       selected_variant = false;
+     }
+ 
+   /* Make a list of fields and their position in the old type.  */
+   tree gnu_pos_list
+     = build_position_list (gnu_old_type,
+ 			   gnu_variant_list.exists () && !selected_variant,
+ 			   size_zero_node, bitsize_zero_node,
+ 			   BIGGEST_ALIGNMENT, NULL_TREE);
+ 
+   /* Now go down every component in the new type and compute its size and
+      position from those of the component in the old type and the stored
+      constraints of the new type.  */
+   Entity_Id gnat_field, gnat_old_field;
+   for (gnat_field = First_Entity (gnat_new_type);
+        Present (gnat_field);
+        gnat_field = Next_Entity (gnat_field))
+     if ((Ekind (gnat_field) == E_Component
+ 	 || (Ekind (gnat_field) == E_Discriminant
+ 	     && is_stored_discriminant (gnat_field, gnat_new_type)))
+         && (gnat_old_field = is_subtype
+ 			     ? Original_Record_Component (gnat_field)
+ 			     : Corresponding_Record_Component (gnat_field))
+ 	&& Underlying_Type (Scope (gnat_old_field)) == gnat_old_type
+ 	&& present_gnu_tree (gnat_old_field))
+       {
+ 	Name_Id gnat_name = Chars (gnat_field);
+ 	tree gnu_old_field = get_gnu_tree (gnat_old_field);
+ 	if (TREE_CODE (gnu_old_field) == COMPONENT_REF)
+ 	  gnu_old_field = TREE_OPERAND (gnu_old_field, 1);
+         tree gnu_context = DECL_CONTEXT (gnu_old_field);
+ 	tree gnu_field, gnu_field_type, gnu_size, gnu_pos;
+ 	tree gnu_cont_type, gnu_last = NULL_TREE;
+ 
+ 	/* If the type is the same, retrieve the GCC type from the
+ 	   old field to take into account possible adjustments.  */
+ 	if (Etype (gnat_field) == Etype (gnat_old_field))
+ 	  gnu_field_type = TREE_TYPE (gnu_old_field);
+ 	else
+ 	  gnu_field_type = gnat_to_gnu_type (Etype (gnat_field));
+ 
+ 	/* If there was a component clause, the field types must be the same
+ 	   for the old and new types, so copy the data from the old field to
+ 	   avoid recomputation here.  Also if the field is justified modular
+ 	   and the optimization in gnat_to_gnu_field was applied.  */
+ 	if (Present (Component_Clause (gnat_old_field))
+ 	    || (TREE_CODE (gnu_field_type) == RECORD_TYPE
+ 		&& TYPE_JUSTIFIED_MODULAR_P (gnu_field_type)
+ 		&& TREE_TYPE (TYPE_FIELDS (gnu_field_type))
+ 		   == TREE_TYPE (gnu_old_field)))
+ 	  {
+ 	    gnu_size = DECL_SIZE (gnu_old_field);
+ 	    gnu_field_type = TREE_TYPE (gnu_old_field);
+ 	  }
+ 
+ 	/* If the old field was packed and of constant size, we have to get the
+ 	   old size here as it might differ from what the Etype conveys and the
+ 	   latter might overlap with the following field.  Try to arrange the
+ 	   type for possible better packing along the way.  */
+ 	else if (DECL_PACKED (gnu_old_field)
+ 		 && TREE_CODE (DECL_SIZE (gnu_old_field)) == INTEGER_CST)
+ 	  {
+ 	    gnu_size = DECL_SIZE (gnu_old_field);
+ 	    if (RECORD_OR_UNION_TYPE_P (gnu_field_type)
+ 		&& !TYPE_FAT_POINTER_P (gnu_field_type)
+ 		&& tree_fits_uhwi_p (TYPE_SIZE (gnu_field_type)))
+ 	      gnu_field_type = make_packable_type (gnu_field_type, true);
+ 	  }
+ 
+ 	else
+ 	  gnu_size = TYPE_SIZE (gnu_field_type);
+ 
+ 	/* If the context of the old field is the old type or its REP part,
+ 	   put the field directly in the new type; otherwise look up the
+ 	   context in the variant list and put the field either in the new
+ 	   type if there is a selected variant or in one new variant.  */
+ 	if (gnu_context == gnu_old_type
+ 	    || (gnu_rep_part && gnu_context == TREE_TYPE (gnu_rep_part)))
+ 	  gnu_cont_type = gnu_new_type;
+ 	else
+ 	  {
+ 	    variant_desc *v;
+ 	    unsigned int i;
+ 	    tree rep_part;
+ 
+ 	    FOR_EACH_VEC_ELT (gnu_variant_list, i, v)
+ 	      if (gnu_context == v->type
+ 		  || ((rep_part = get_rep_part (v->type))
+ 		      && gnu_context == TREE_TYPE (rep_part)))
+ 		break;
+ 
+ 	    if (v)
+ 	      gnu_cont_type = selected_variant ? gnu_new_type : v->new_type;
+ 	    else
+ 	      /* The front-end may pass us "ghost" components if it fails to
+ 		 recognize that a constrain statically selects a particular
+ 		 variant.  Discard them.  */
+ 	      continue;
+ 	  }
+ 
+ 	/* Now create the new field modeled on the old one.  */
+ 	gnu_field
+ 	  = create_field_decl_from (gnu_old_field, gnu_field_type,
+ 				    gnu_cont_type, gnu_size,
+ 				    gnu_pos_list, gnu_subst_list);
+ 	gnu_pos = DECL_FIELD_OFFSET (gnu_field);
+ 
+ 	/* If the context is a variant, put it in the new variant directly.  */
+ 	if (gnu_cont_type != gnu_new_type)
+ 	  {
+ 	    DECL_CHAIN (gnu_field) = TYPE_FIELDS (gnu_cont_type);
+ 	    TYPE_FIELDS (gnu_cont_type) = gnu_field;
+ 	  }
+ 
+ 	/* To match the layout crafted in components_to_record, if this is
+ 	   the _Tag or _Parent field, put it before any other fields.  */
+ 	else if (gnat_name == Name_uTag || gnat_name == Name_uParent)
+ 	  gnu_field_list = chainon (gnu_field_list, gnu_field);
+ 
+ 	/* Similarly, if this is the _Controller field, put it before the
+ 	   other fields except for the _Tag or _Parent field.  */
+ 	else if (gnat_name == Name_uController && gnu_last)
+ 	  {
+ 	    DECL_CHAIN (gnu_field) = DECL_CHAIN (gnu_last);
+ 	    DECL_CHAIN (gnu_last) = gnu_field;
+ 	  }
+ 
+ 	/* Otherwise, put it after the other fields.  */
+ 	else
+ 	  {
+ 	    DECL_CHAIN (gnu_field) = gnu_field_list;
+ 	    gnu_field_list = gnu_field;
+ 	    if (!gnu_last)
+ 	      gnu_last = gnu_field;
+ 	    if (TREE_CODE (gnu_pos) != INTEGER_CST)
+ 	      all_constant_pos = false;
+ 	  }
+ 
+ 	/* For a stored discriminant in a derived type, replace the field.  */
+ 	if (!is_subtype && Ekind (gnat_field) == E_Discriminant)
+ 	  {
+ 	    tree gnu_ref = get_gnu_tree (gnat_field);
+ 	    TREE_OPERAND (gnu_ref, 1) = gnu_field;
+ 	  }
+ 	else
+ 	  save_gnu_tree (gnat_field, gnu_field, false);
+       }
+ 
+   /* If there is no variant list or a selected variant and the fields all have
+      constant position, put them in order of increasing position to match that
+      of constant CONSTRUCTORs.  */
+   if ((!gnu_variant_list.exists () || selected_variant) && all_constant_pos)
+     {
+       const int len = list_length (gnu_field_list);
+       tree *field_arr = XALLOCAVEC (tree, len), t = gnu_field_list;
+ 
+       for (int i = 0; t; t = DECL_CHAIN (t), i++)
+ 	field_arr[i] = t;
+ 
+       qsort (field_arr, len, sizeof (tree), compare_field_bitpos);
+ 
+       gnu_field_list = NULL_TREE;
+       for (int i = 0; i < len; i++)
+ 	{
+ 	  DECL_CHAIN (field_arr[i]) = gnu_field_list;
+ 	  gnu_field_list = field_arr[i];
+ 	}
+     }
+ 
+   /* If there is a variant list and no selected variant, we need to create the
+      nest of variant parts from the old nest.  */
+   else if (gnu_variant_list.exists () && !selected_variant)
+     {
+       tree new_variant_part
+ 	= create_variant_part_from (gnu_variant_part, gnu_variant_list,
+ 				    gnu_new_type, gnu_pos_list,
+ 				    gnu_subst_list, debug_info_p);
+       DECL_CHAIN (new_variant_part) = gnu_field_list;
+       gnu_field_list = new_variant_part;
+     }
+ 
+   gnu_variant_list.release ();
+   gnu_subst_list.release ();
+ 
+   gnu_field_list = nreverse (gnu_field_list);
+ 
+   /* If NEW_TYPE is a subtype, it inherits all the attributes from OLD_TYPE.
+      Otherwise sizes and alignment must be computed independently.  */
+   if (is_subtype)
+     {
+       finish_record_type (gnu_new_type, gnu_field_list, 2, debug_info_p);
+       compute_record_mode (gnu_new_type);
+     }
+   else
+     finish_record_type (gnu_new_type, gnu_field_list, 1, debug_info_p);
+ 
+   /* Now go through the entities again looking for Itypes that we have not yet
+      elaborated (e.g. Etypes of fields that have Original_Components).  */
+   for (Entity_Id gnat_field = First_Entity (gnat_new_type);
+        Present (gnat_field);
+        gnat_field = Next_Entity (gnat_field))
+     if ((Ekind (gnat_field) == E_Component
+ 	 || Ekind (gnat_field) == E_Discriminant)
+ 	&& Is_Itype (Etype (gnat_field))
+ 	&& !present_gnu_tree (Etype (gnat_field)))
+       gnat_to_gnu_entity (Etype (gnat_field), NULL_TREE, false);
+ }
+ 
  /* Associate to GNU_TYPE, the translation of GNAT_ENTITY, which is
     the implementation type of a packed array type (Is_Packed_Array_Impl_Type),
     the original array type if it has been translated.  This association is a
*************** associate_original_type_to_packed_array
*** 9339,9347 ****
      add_parallel_type (gnu_type, gnu_original_array_type);
  }
  
! /* Given a type T, a FIELD_DECL F, and a replacement value R, return a
!    type with all size expressions that contain F in a PLACEHOLDER_EXPR
!    updated by replacing F with R.
  
     The function doesn't update the layout of the type, i.e. it assumes
     that the substitution is purely formal.  That's why the replacement
--- 9649,9657 ----
      add_parallel_type (gnu_type, gnu_original_array_type);
  }
  
! /* Given a type T, a FIELD_DECL F, and a replacement value R, return an
!    equivalent type with adjusted size expressions where all occurrences
!    of references to F in a PLACEHOLDER_EXPR have been replaced by R.
  
     The function doesn't update the layout of the type, i.e. it assumes
     that the substitution is purely formal.  That's why the replacement
diff -Nrcpad gcc-7.3.0/gcc/ada/gcc-interface/gigi.h gcc-8.1.0/gcc/ada/gcc-interface/gigi.h
*** gcc-7.3.0/gcc/ada/gcc-interface/gigi.h	Tue Oct 11 10:35:43 2016
--- gcc-8.1.0/gcc/ada/gcc-interface/gigi.h	Thu Dec 14 11:47:24 2017
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 1992-2016, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  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-2017, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is 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 mark_visited (tree t);
*** 88,94 ****
  
  /* This macro calls the above function but short-circuits the common
     case of a constant to save time and also checks for NULL.  */
- 
  #define MARK_VISITED(EXP)		\
  do {					\
    if((EXP) && !CONSTANT_CLASS_P (EXP))	\
--- 88,93 ----
*************** do {					\
*** 98,109 ****
  /* Finalize the processing of From_Limited_With incomplete types.  */
  extern void finalize_from_limited_with (void);
  
! /* 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 its representation, return GNAT_ENTITY.  If a type is supposed to
!    exist, but does not, abort unless annotating types, in which case
!    return Empty.   If GNAT_ENTITY is Empty, return Empty.  */
  extern Entity_Id Gigi_Equivalent_Type (Entity_Id gnat_entity);
  
  /* Given GNAT_ENTITY, elaborate all expressions that are required to
--- 97,106 ----
  /* Finalize the processing of From_Limited_With incomplete types.  */
  extern void finalize_from_limited_with (void);
  
! /* 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
!    its representation, return GNAT_ENTITY.  */
  extern Entity_Id Gigi_Equivalent_Type (Entity_Id gnat_entity);
  
  /* Given GNAT_ENTITY, elaborate all expressions that are required to
*************** extern tree maybe_pad_type (tree type, t
*** 154,159 ****
--- 151,159 ----
  			    bool is_user_type, bool definition,
  			    bool set_rm_size);
  
+ /* Return true if padded TYPE was built with an RM size.  */
+ extern bool pad_type_has_rm_size (tree type);
+ 
  /* Return a copy of the padded TYPE but with reverse storage order.  */
  extern tree set_reverse_storage_order_on_pad_type (tree type);
  
*************** extern void post_error_ne_tree (const ch
*** 315,326 ****
  extern void post_error_ne_tree_2 (const char *msg, Node_Id node, Entity_Id ent,
                                    tree t, int num);
  
! /* Return a label to branch to for the exception type in KIND or NULL_TREE
     if none.  */
! extern tree get_exception_label (char kind);
! 
! /* Return the decl for the current elaboration procedure.  */
! extern tree get_elaboration_procedure (void);
  
  /* If nonzero, pretend we are allocating at global level.  */
  extern int force_global;
--- 315,323 ----
  extern void post_error_ne_tree_2 (const char *msg, Node_Id node, Entity_Id ent,
                                    tree t, int num);
  
! /* Return a label to branch to for the exception type in KIND or Empty
     if none.  */
! extern Entity_Id get_exception_label (char kind);
  
  /* If nonzero, pretend we are allocating at global level.  */
  extern int force_global;
*************** enum standard_datatypes
*** 429,435 ****
    ADT_all_others_decl,
    ADT_unhandled_others_decl,
  
!   ADT_LAST};
  
  /* Define kind of exception information associated with raise statements.  */
  enum exception_info_kind
--- 426,433 ----
    ADT_all_others_decl,
    ADT_unhandled_others_decl,
  
!   ADT_LAST
! };
  
  /* Define kind of exception information associated with raise statements.  */
  enum exception_info_kind
*************** extern tree create_label_decl (tree name
*** 726,731 ****
--- 724,731 ----
  
     DEBUG_INFO_P is true if we need to write debug information for it.
  
+    DEFINITION is true if the subprogram is to be considered as a definition.
+ 
     ATTR_LIST is the list of attributes to be attached to the subprogram.
  
     GNAT_NODE is used for the position of the decl.  */
*************** extern tree create_subprog_decl (tree na
*** 734,740 ****
  				 enum inline_status_t inline_status,
  				 bool public_flag, bool extern_flag,
  				 bool artificial_p, bool debug_info_p,
! 				 struct attrib *attr_list, Node_Id gnat_node);
  
  /* Given a subprogram declaration DECL, its assembler name and its type,
     finish constructing the subprogram declaration from ASM_NAME and TYPE.  */
--- 734,741 ----
  				 enum inline_status_t inline_status,
  				 bool public_flag, bool extern_flag,
  				 bool artificial_p, bool debug_info_p,
! 				 bool definition, struct attrib *attr_list,
! 				 Node_Id gnat_node);
  
  /* Given a subprogram declaration DECL, its assembler name and its type,
     finish constructing the subprogram declaration from ASM_NAME and TYPE.  */
*************** extern int fp_size_to_prec (int size);
*** 1001,1007 ****
     from the parameter association for the instantiation of a generic.  We do
     not want to emit source location for them: the code generated for their
     initialization is likely to disturb debugging.  */
! extern bool renaming_from_generic_instantiation_p (Node_Id gnat_node);
  
  /* Try to process all nodes in the deferred context queue.  Keep in the queue
     the ones that cannot be processed yet, remove the other ones.  If FORCE is
--- 1002,1008 ----
     from the parameter association for the instantiation of a generic.  We do
     not want to emit source location for them: the code generated for their
     initialization is likely to disturb debugging.  */
! extern bool renaming_from_instantiation_p (Node_Id gnat_node);
  
  /* Try to process all nodes in the deferred context queue.  Keep in the queue
     the ones that cannot be processed yet, remove the other ones.  If FORCE is
diff -Nrcpad gcc-7.3.0/gcc/ada/gcc-interface/lang.opt gcc-8.1.0/gcc/ada/gcc-interface/lang.opt
*** gcc-7.3.0/gcc/ada/gcc-interface/lang.opt	Mon Jan 16 21:33:07 2017
--- gcc-8.1.0/gcc/ada/gcc-interface/lang.opt	Thu Sep 21 02:18:02 2017
*************** Ada AdaWhy AdaSCIL
*** 81,95 ****
  Make \"char\" signed by default.
  
  gant
! Ada AdaWhy AdaSCIL Driver Joined Undocumented
  Catch typos.
  
  gnatO
! Ada AdaWhy AdaSCIL Driver Separate
  Set name of output ALI file (internal switch).
  
  gnat
! Ada AdaWhy AdaSCIL Driver Joined
  -gnat<options>	Specify options to GNAT.
  
  fbuiltin-printf
--- 81,95 ----
  Make \"char\" signed by default.
  
  gant
! Ada AdaWhy AdaSCIL Driver Joined Undocumented RejectNegative
  Catch typos.
  
  gnatO
! Ada AdaWhy AdaSCIL Driver Separate RejectNegative
  Set name of output ALI file (internal switch).
  
  gnat
! Ada AdaWhy AdaSCIL Driver Joined RejectNegative
  -gnat<options>	Specify options to GNAT.
  
  fbuiltin-printf
diff -Nrcpad gcc-7.3.0/gcc/ada/gcc-interface/misc.c gcc-8.1.0/gcc/ada/gcc-interface/misc.c
*** gcc-7.3.0/gcc/ada/gcc-interface/misc.c	Fri Feb 24 23:15:56 2017
--- gcc-8.1.0/gcc/ada/gcc-interface/misc.c	Mon Mar 12 22:40:05 2018
***************
*** 6,12 ****
   *                                                                          *
   *                           C Implementation File                          *
   *                                                                          *
!  *          Copyright (C) 1992-2017, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  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-2018, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is 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_post_options (const char **pfilenam
*** 262,275 ****
    /* No psABI change warnings for Ada.  */
    warn_psabi = 0;
  
    /* No caret by default for Ada.  */
    if (!global_options_set.x_flag_diagnostics_show_caret)
      global_dc->show_caret = false;
  
-   /* Set strict overflow by default for Ada.  */
-   if (!global_options_set.x_flag_strict_overflow)
-     global_options.x_flag_strict_overflow = true;
- 
    /* Warn only if STABS is not the default: we don't want to emit a warning if
       the user did not use a -gstabs option.  */
    if (PREFERRED_DEBUGGING_TYPE != DBX_DEBUG && write_symbols == DBX_DEBUG)
--- 262,277 ----
    /* No psABI change warnings for Ada.  */
    warn_psabi = 0;
  
+   /* No return type warnings for Ada.  */
+   warn_return_type = 0;
+ 
+   /* No string overflow warnings for Ada.  */
+   warn_stringop_overflow = 0;
+ 
    /* No caret by default for Ada.  */
    if (!global_options_set.x_flag_diagnostics_show_caret)
      global_dc->show_caret = false;
  
    /* Warn only if STABS is not the default: we don't want to emit a warning if
       the user did not use a -gstabs option.  */
    if (PREFERRED_DEBUGGING_TYPE != DBX_DEBUG && write_symbols == DBX_DEBUG)
*************** gnat_get_array_descr_info (const_tree co
*** 954,960 ****
       structure.  */
    for (i = (convention_fortran_p ? info->ndimensions - 1 : 0),
         dimen = first_dimen;
!        0 <= i && i < info->ndimensions;
         i += (convention_fortran_p ? -1 : 1),
         dimen = TREE_TYPE (dimen))
      {
--- 956,962 ----
       structure.  */
    for (i = (convention_fortran_p ? info->ndimensions - 1 : 0),
         dimen = first_dimen;
!        IN_RANGE (i, 0, info->ndimensions - 1);
         i += (convention_fortran_p ? -1 : 1),
         dimen = TREE_TYPE (dimen))
      {
*************** default_pass_by_ref (tree gnu_type)
*** 1145,1160 ****
       is an In Out parameter, but it's probably best to err on the side of
       passing more things by reference.  */
  
!   if (pass_by_reference (NULL, TYPE_MODE (gnu_type), gnu_type, true))
      return true;
  
!   if (targetm.calls.return_in_memory (gnu_type, NULL_TREE))
      return true;
  
!   if (AGGREGATE_TYPE_P (gnu_type)
!       && (!valid_constant_size_p (TYPE_SIZE_UNIT (gnu_type))
! 	  || 0 < compare_tree_int (TYPE_SIZE_UNIT (gnu_type),
! 				   TYPE_ALIGN (gnu_type))))
      return true;
  
    return false;
--- 1147,1162 ----
       is an In Out parameter, but it's probably best to err on the side of
       passing more things by reference.  */
  
!   if (AGGREGATE_TYPE_P (gnu_type)
!       && (!valid_constant_size_p (TYPE_SIZE_UNIT (gnu_type))
! 	  || compare_tree_int (TYPE_SIZE_UNIT (gnu_type),
! 			       TYPE_ALIGN (gnu_type)) > 0))
      return true;
  
!   if (pass_by_reference (NULL, TYPE_MODE (gnu_type), gnu_type, true))
      return true;
  
!   if (targetm.calls.return_in_memory (gnu_type, NULL_TREE))
      return true;
  
    return false;
*************** enumerate_modes (void (*f) (const char *
*** 1302,1312 ****
  	  }
  
        /* If no predefined C types were found, register the mode itself.  */
!       if (!skip_p)
  	f (GET_MODE_NAME (i), digs, complex_p,
! 	   vector_p ? GET_MODE_NUNITS (i) : 0, float_rep,
! 	   GET_MODE_PRECISION (i), GET_MODE_BITSIZE (i),
! 	   GET_MODE_ALIGNMENT (i));
      }
  }
  
--- 1304,1317 ----
  	  }
  
        /* If no predefined C types were found, register the mode itself.  */
!       int nunits, precision, bitsize;
!       if (!skip_p
! 	  && GET_MODE_NUNITS (i).is_constant (&nunits)
! 	  && GET_MODE_PRECISION (i).is_constant (&precision)
! 	  && GET_MODE_BITSIZE (i).is_constant (&bitsize))
  	f (GET_MODE_NAME (i), digs, complex_p,
! 	   vector_p ? nunits : 0, float_rep,
! 	   precision, bitsize, GET_MODE_ALIGNMENT (i));
      }
  }
  
*************** enumerate_modes (void (*f) (const char *
*** 1315,1326 ****
  int
  fp_prec_to_size (int prec)
  {
!   machine_mode mode;
  
!   for (mode = GET_CLASS_NARROWEST_MODE (MODE_FLOAT); mode != VOIDmode;
!        mode = GET_MODE_WIDER_MODE (mode))
!     if (GET_MODE_PRECISION (mode) == prec)
!       return GET_MODE_BITSIZE (mode);
  
    gcc_unreachable ();
  }
--- 1320,1333 ----
  int
  fp_prec_to_size (int prec)
  {
!   opt_scalar_float_mode opt_mode;
  
!   FOR_EACH_MODE_IN_CLASS (opt_mode, MODE_FLOAT)
!     {
!       scalar_float_mode mode = opt_mode.require ();
!       if (GET_MODE_PRECISION (mode) == prec)
! 	return GET_MODE_BITSIZE (mode);
!     }
  
    gcc_unreachable ();
  }
*************** fp_prec_to_size (int prec)
*** 1330,1341 ****
  int
  fp_size_to_prec (int size)
  {
!   machine_mode mode;
  
!   for (mode = GET_CLASS_NARROWEST_MODE (MODE_FLOAT); mode != VOIDmode;
!        mode = GET_MODE_WIDER_MODE (mode))
!     if (GET_MODE_BITSIZE (mode) == size)
!       return GET_MODE_PRECISION (mode);
  
    gcc_unreachable ();
  }
--- 1337,1350 ----
  int
  fp_size_to_prec (int size)
  {
!   opt_scalar_float_mode opt_mode;
  
!   FOR_EACH_MODE_IN_CLASS (opt_mode, MODE_FLOAT)
!     {
!       scalar_mode mode = opt_mode.require ();
!       if (GET_MODE_BITSIZE (mode) == size)
! 	return GET_MODE_PRECISION (mode);
!     }
  
    gcc_unreachable ();
  }
*************** gnat_init_ts (void)
*** 1370,1375 ****
--- 1379,1401 ----
    MARK_TS_TYPED (EXIT_STMT);
  }
  
+ /* Return the size of a tree with CODE, which is a language-specific tree code
+    in category tcc_constant, tcc_exceptional or tcc_type.  The default expects
+    never to be called.  */
+ 
+ static size_t
+ gnat_tree_size (enum tree_code code)
+ {
+   gcc_checking_assert (code >= NUM_TREE_CODES);
+   switch (code)
+     {
+     case UNCONSTRAINED_ARRAY_TYPE:
+       return sizeof (tree_type_non_common);
+     default:
+       gcc_unreachable ();
+     }
+ }
+ 
  /* Return the lang specific structure attached to NODE.  Allocate it (cleared)
     if needed.  */
  
*************** get_lang_specific (tree node)
*** 1387,1392 ****
--- 1413,1420 ----
  #define LANG_HOOKS_NAME			"GNU Ada"
  #undef  LANG_HOOKS_IDENTIFIER_SIZE
  #define LANG_HOOKS_IDENTIFIER_SIZE	sizeof (struct tree_identifier)
+ #undef  LANG_HOOKS_TREE_SIZE
+ #define LANG_HOOKS_TREE_SIZE		gnat_tree_size
  #undef  LANG_HOOKS_INIT
  #define LANG_HOOKS_INIT			gnat_init
  #undef  LANG_HOOKS_OPTION_LANG_MASK
diff -Nrcpad gcc-7.3.0/gcc/ada/gcc-interface/trans.c gcc-8.1.0/gcc/ada/gcc-interface/trans.c
*** gcc-7.3.0/gcc/ada/gcc-interface/trans.c	Wed Dec 13 09:30:42 2017
--- gcc-8.1.0/gcc/ada/gcc-interface/trans.c	Sat Mar 10 10:11:29 2018
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2017, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  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-2018, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is 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,53 ----
  #include "gimplify.h"
  #include "opts.h"
  #include "common/common-target.h"
+ #include "stringpool.h"
+ #include "attribs.h"
  
  #include "ada.h"
  #include "adadecode.h"
*************** typedef struct loop_info_d *loop_info;
*** 209,229 ****
  static GTY(()) vec<loop_info, va_gc> *gnu_loop_stack;
  
  /* The stacks for N_{Push,Pop}_*_Label.  */
! static GTY(()) vec<tree, va_gc> *gnu_constraint_error_label_stack;
! static GTY(()) vec<tree, va_gc> *gnu_storage_error_label_stack;
! static GTY(()) vec<tree, va_gc> *gnu_program_error_label_stack;
  
  /* Map GNAT tree codes to GCC tree codes for simple expressions.  */
  static enum tree_code gnu_codes[Number_Node_Kinds];
  
  static void init_code_table (void);
  static void Compilation_Unit_to_gnu (Node_Id);
  static bool empty_stmt_list_p (tree);
  static void record_code_position (Node_Id);
  static void insert_code_for (Node_Id);
  static void add_cleanup (tree, Node_Id);
  static void add_stmt_list (List_Id);
- static void push_exception_label_stack (vec<tree, va_gc> **, Entity_Id);
  static tree build_stmt_group (List_Id, bool);
  static inline bool stmt_group_may_fallthru (void);
  static enum gimplify_status gnat_gimplify_stmt (tree *);
--- 211,231 ----
  static GTY(()) vec<loop_info, va_gc> *gnu_loop_stack;
  
  /* The stacks for N_{Push,Pop}_*_Label.  */
! static vec<Entity_Id> gnu_constraint_error_label_stack;
! static vec<Entity_Id> gnu_storage_error_label_stack;
! static vec<Entity_Id> gnu_program_error_label_stack;
  
  /* Map GNAT tree codes to GCC tree codes for simple expressions.  */
  static enum tree_code gnu_codes[Number_Node_Kinds];
  
  static void init_code_table (void);
+ static tree get_elaboration_procedure (void);
  static void Compilation_Unit_to_gnu (Node_Id);
  static bool empty_stmt_list_p (tree);
  static void record_code_position (Node_Id);
  static void insert_code_for (Node_Id);
  static void add_cleanup (tree, Node_Id);
  static void add_stmt_list (List_Id);
  static tree build_stmt_group (List_Id, bool);
  static inline bool stmt_group_may_fallthru (void);
  static enum gimplify_status gnat_gimplify_stmt (tree *);
*************** static tree build_binary_op_trapv (enum
*** 237,245 ****
  static tree convert_with_check (Entity_Id, tree, bool, bool, bool, Node_Id);
  static bool addressable_p (tree, tree);
  static tree assoc_to_constructor (Entity_Id, Node_Id, tree);
- static tree extract_values (tree, tree);
  static tree pos_to_constructor (Node_Id, tree, Entity_Id);
  static void validate_unchecked_conversion (Node_Id);
  static tree maybe_implicit_deref (tree);
  static void set_expr_location_from_node (tree, Node_Id, bool = false);
  static void set_gnu_expr_location_from_node (tree, Node_Id);
--- 239,247 ----
  static tree convert_with_check (Entity_Id, tree, bool, bool, bool, Node_Id);
  static bool addressable_p (tree, tree);
  static tree assoc_to_constructor (Entity_Id, Node_Id, tree);
  static tree pos_to_constructor (Node_Id, tree, Entity_Id);
  static void validate_unchecked_conversion (Node_Id);
+ static Node_Id adjust_for_implicit_deref (Node_Id);
  static tree maybe_implicit_deref (tree);
  static void set_expr_location_from_node (tree, Node_Id, bool = false);
  static void set_gnu_expr_location_from_node (tree, Node_Id);
*************** gigi (Node_Id gnat_root,
*** 393,420 ****
    ptr_void_ftype = build_pointer_type (void_ftype);
  
    /* Now declare run-time functions.  */
-   ftype = build_function_type_list (ptr_type_node, sizetype, NULL_TREE);
    malloc_decl
      = create_subprog_decl (get_identifier ("__gnat_malloc"), NULL_TREE,
! 			   ftype,
  			   NULL_TREE, is_disabled, true, true, true, false,
! 			   NULL, Empty);
    DECL_IS_MALLOC (malloc_decl) = 1;
  
-   ftype = build_function_type_list (void_type_node, ptr_type_node, NULL_TREE);
    free_decl
      = create_subprog_decl (get_identifier ("__gnat_free"), NULL_TREE,
! 			   ftype,
  			   NULL_TREE, is_disabled, true, true, true, false,
! 			   NULL, Empty);
  
-   ftype = build_function_type_list (ptr_type_node, ptr_type_node, sizetype,
- 				    NULL_TREE);
    realloc_decl
      = create_subprog_decl (get_identifier ("__gnat_realloc"), NULL_TREE,
! 			   ftype,
  			   NULL_TREE, is_disabled, true, true, true, false,
! 			   NULL, Empty);
  
    /* This is used for 64-bit multiplication with overflow checking.  */
    int64_type = gnat_type_for_size (64, 0);
--- 395,422 ----
    ptr_void_ftype = build_pointer_type (void_ftype);
  
    /* Now declare run-time functions.  */
    malloc_decl
      = create_subprog_decl (get_identifier ("__gnat_malloc"), NULL_TREE,
! 			   build_function_type_list (ptr_type_node, sizetype,
! 						     NULL_TREE),
  			   NULL_TREE, is_disabled, true, true, true, false,
! 			   false, NULL, Empty);
    DECL_IS_MALLOC (malloc_decl) = 1;
  
    free_decl
      = create_subprog_decl (get_identifier ("__gnat_free"), NULL_TREE,
! 			   build_function_type_list (void_type_node,
! 						     ptr_type_node, NULL_TREE),
  			   NULL_TREE, is_disabled, true, true, true, false,
! 			   false, NULL, Empty);
  
    realloc_decl
      = create_subprog_decl (get_identifier ("__gnat_realloc"), NULL_TREE,
! 			   build_function_type_list (ptr_type_node,
! 						     ptr_type_node, sizetype,
! 						     NULL_TREE),
  			   NULL_TREE, is_disabled, true, true, true, false,
! 			   false, NULL, Empty);
  
    /* This is used for 64-bit multiplication with overflow checking.  */
    int64_type = gnat_type_for_size (64, 0);
*************** gigi (Node_Id gnat_root,
*** 423,429 ****
  			   build_function_type_list (int64_type, int64_type,
  						     int64_type, NULL_TREE),
  			   NULL_TREE, is_disabled, true, true, true, false,
! 			   NULL, Empty);
  
    /* Name of the _Parent field in tagged record types.  */
    parent_name_id = get_identifier (Get_Name_String (Name_uParent));
--- 425,431 ----
  			   build_function_type_list (int64_type, int64_type,
  						     int64_type, NULL_TREE),
  			   NULL_TREE, is_disabled, true, true, true, false,
! 			   false, NULL, Empty);
  
    /* Name of the _Parent field in tagged record types.  */
    parent_name_id = get_identifier (Get_Name_String (Name_uParent));
*************** gigi (Node_Id gnat_root,
*** 446,466 ****
      = 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_disabled, true, true, true, 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_disabled, true, true, true, 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_disabled, true, true, true, false, NULL, Empty);
  
    not_handled_by_others_decl = get_identifier ("not_handled_by_others");
    for (t = TYPE_FIELDS (except_type_node); t; t = DECL_CHAIN (t))
--- 448,468 ----
      = 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_disabled, 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_disabled, 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_disabled, true, true, true, false, false, NULL, Empty);
  
    not_handled_by_others_decl = get_identifier ("not_handled_by_others");
    for (t = TYPE_FIELDS (except_type_node); t; t = DECL_CHAIN (t))
*************** gigi (Node_Id gnat_root,
*** 478,484 ****
        (get_identifier ("__builtin_setjmp"), NULL_TREE,
         build_function_type_list (integer_type_node, jmpbuf_ptr_type,
  				 NULL_TREE),
!        NULL_TREE, is_disabled, true, true, true, false, NULL, Empty);
    DECL_BUILT_IN_CLASS (setjmp_decl) = BUILT_IN_NORMAL;
    DECL_FUNCTION_CODE (setjmp_decl) = BUILT_IN_SETJMP;
  
--- 480,486 ----
        (get_identifier ("__builtin_setjmp"), NULL_TREE,
         build_function_type_list (integer_type_node, jmpbuf_ptr_type,
  				 NULL_TREE),
!        NULL_TREE, is_disabled, true, true, true, false, false, NULL, Empty);
    DECL_BUILT_IN_CLASS (setjmp_decl) = BUILT_IN_NORMAL;
    DECL_FUNCTION_CODE (setjmp_decl) = BUILT_IN_SETJMP;
  
*************** gigi (Node_Id gnat_root,
*** 488,494 ****
      = 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_disabled, true, true, true, false, NULL, Empty);
    DECL_BUILT_IN_CLASS (update_setjmp_buf_decl) = BUILT_IN_NORMAL;
    DECL_FUNCTION_CODE (update_setjmp_buf_decl) = BUILT_IN_UPDATE_SETJMP_BUF;
  
--- 490,496 ----
      = 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_disabled, true, true, true, false, false, NULL, Empty);
    DECL_BUILT_IN_CLASS (update_setjmp_buf_decl) = BUILT_IN_NORMAL;
    DECL_FUNCTION_CODE (update_setjmp_buf_decl) = BUILT_IN_UPDATE_SETJMP_BUF;
  
*************** gigi (Node_Id gnat_root,
*** 500,513 ****
    raise_nodefer_decl
      = create_subprog_decl
        (get_identifier ("__gnat_raise_nodefer_with_msg"), NULL_TREE, ftype,
!        NULL_TREE, is_disabled, true, true, true, false, NULL, Empty);
  
    set_exception_parameter_decl
      = create_subprog_decl
        (get_identifier ("__gnat_set_exception_parameter"), NULL_TREE,
         build_function_type_list (void_type_node, ptr_type_node, ptr_type_node,
  				 NULL_TREE),
!        NULL_TREE, is_disabled, true, true, true, false, NULL, Empty);
  
    /* Hooks to call when entering/leaving an exception handler.  */
    ftype = build_function_type_list (void_type_node, ptr_type_node, NULL_TREE);
--- 502,515 ----
    raise_nodefer_decl
      = create_subprog_decl
        (get_identifier ("__gnat_raise_nodefer_with_msg"), NULL_TREE, ftype,
!        NULL_TREE, is_disabled, true, true, true, false, false, NULL, Empty);
  
    set_exception_parameter_decl
      = create_subprog_decl
        (get_identifier ("__gnat_set_exception_parameter"), NULL_TREE,
         build_function_type_list (void_type_node, ptr_type_node, ptr_type_node,
  				 NULL_TREE),
!        NULL_TREE, is_disabled, true, true, true, false, false, NULL, Empty);
  
    /* Hooks to call when entering/leaving an exception handler.  */
    ftype = build_function_type_list (void_type_node, ptr_type_node, NULL_TREE);
*************** gigi (Node_Id gnat_root,
*** 515,538 ****
    begin_handler_decl
      = create_subprog_decl (get_identifier ("__gnat_begin_handler"), NULL_TREE,
  			   ftype, NULL_TREE,
! 			   is_disabled, true, true, true, false, NULL, Empty);
  
    end_handler_decl
      = create_subprog_decl (get_identifier ("__gnat_end_handler"), NULL_TREE,
  			   ftype, NULL_TREE,
! 			   is_disabled, true, true, true, false, NULL, Empty);
  
    unhandled_except_decl
      = create_subprog_decl (get_identifier ("__gnat_unhandled_except_handler"),
  			   NULL_TREE, ftype, NULL_TREE,
! 			   is_disabled, true, true, true, false, NULL, Empty);
  
    /* Indicate that it never returns.  */
    ftype = build_qualified_type (ftype, TYPE_QUAL_VOLATILE);
    reraise_zcx_decl
      = create_subprog_decl (get_identifier ("__gnat_reraise_zcx"), NULL_TREE,
  			   ftype, NULL_TREE,
! 			   is_disabled, true, true, true, false, NULL, Empty);
  
    /* Dummy objects to materialize "others" and "all others" in the exception
       tables.  These are exported by a-exexpr-gcc.adb, so see this unit for
--- 517,546 ----
    begin_handler_decl
      = create_subprog_decl (get_identifier ("__gnat_begin_handler"), NULL_TREE,
  			   ftype, NULL_TREE,
! 			   is_disabled, true, true, true, false, false, NULL,
! 			   Empty);
!   /* __gnat_begin_handler is a dummy procedure.  */
!   TREE_NOTHROW (begin_handler_decl) = 1;
  
    end_handler_decl
      = create_subprog_decl (get_identifier ("__gnat_end_handler"), NULL_TREE,
  			   ftype, NULL_TREE,
! 			   is_disabled, true, true, true, false, false, NULL,
! 			   Empty);
  
    unhandled_except_decl
      = create_subprog_decl (get_identifier ("__gnat_unhandled_except_handler"),
  			   NULL_TREE, ftype, NULL_TREE,
! 			   is_disabled, true, true, true, false, false, NULL,
! 			   Empty);
  
    /* Indicate that it never returns.  */
    ftype = build_qualified_type (ftype, TYPE_QUAL_VOLATILE);
    reraise_zcx_decl
      = create_subprog_decl (get_identifier ("__gnat_reraise_zcx"), NULL_TREE,
  			   ftype, NULL_TREE,
! 			   is_disabled, true, true, true, false, false, NULL,
! 			   Empty);
  
    /* Dummy objects to materialize "others" and "all others" in the exception
       tables.  These are exported by a-exexpr-gcc.adb, so see this unit for
*************** gigi (Node_Id gnat_root,
*** 571,577 ****
        tree decl
  	= create_subprog_decl
  	  (get_identifier ("__gnat_last_chance_handler"), NULL_TREE, ftype,
! 	   NULL_TREE, is_disabled, true, true, true, false, NULL, Empty);
        for (i = 0; i < (int) ARRAY_SIZE (gnat_raise_decls); i++)
  	gnat_raise_decls[i] = decl;
      }
--- 579,586 ----
        tree decl
  	= create_subprog_decl
  	  (get_identifier ("__gnat_last_chance_handler"), NULL_TREE, ftype,
! 	   NULL_TREE, is_disabled, true, true, true, false, false, NULL,
! 	   Empty);
        for (i = 0; i < (int) ARRAY_SIZE (gnat_raise_decls); i++)
  	gnat_raise_decls[i] = decl;
      }
*************** gigi (Node_Id gnat_root,
*** 637,645 ****
    gnat_install_builtins ();
  
    vec_safe_push (gnu_except_ptr_stack, NULL_TREE);
!   vec_safe_push (gnu_constraint_error_label_stack, NULL_TREE);
!   vec_safe_push (gnu_storage_error_label_stack, NULL_TREE);
!   vec_safe_push (gnu_program_error_label_stack, NULL_TREE);
  
    /* Process any Pragma Ident for the main unit.  */
    if (Present (Ident_String (Main_Unit)))
--- 646,655 ----
    gnat_install_builtins ();
  
    vec_safe_push (gnu_except_ptr_stack, NULL_TREE);
! 
!   gnu_constraint_error_label_stack.safe_push (Empty);
!   gnu_storage_error_label_stack.safe_push (Empty);
!   gnu_program_error_label_stack.safe_push (Empty);
  
    /* Process any Pragma Ident for the main unit.  */
    if (Present (Ident_String (Main_Unit)))
*************** build_raise_check (int check, enum excep
*** 737,743 ****
    result
      = create_subprog_decl (get_identifier (Name_Buffer), NULL_TREE, ftype,
  			   NULL_TREE, is_disabled, true, true, true, false,
! 			   NULL, Empty);
  
    return result;
  }
--- 747,753 ----
    result
      = create_subprog_decl (get_identifier (Name_Buffer), NULL_TREE, ftype,
  			   NULL_TREE, is_disabled, true, true, true, false,
! 			   false, NULL, Empty);
  
    return result;
  }
*************** Identifier_to_gnu (Node_Id gnat_node, tr
*** 1043,1056 ****
  		  && (Etype (gnat_node)
  		      == Packed_Array_Impl_Type (gnat_temp_type)))
  	      || (Is_Class_Wide_Type (Etype (gnat_node)))
! 	      || (IN (Ekind (gnat_temp_type), Private_Kind)
  		  && Present (Full_View (gnat_temp_type))
  		  && ((Etype (gnat_node) == Full_View (gnat_temp_type))
  		      || (Is_Packed (Full_View (gnat_temp_type))
  			  && (Etype (gnat_node)
  			      == Packed_Array_Impl_Type
  			           (Full_View (gnat_temp_type))))))
! 	      || (IN (Ekind (gnat_temp_type), Incomplete_Kind)
  		  && From_Limited_With (gnat_temp_type)
  		  && Present (Non_Limited_View (gnat_temp_type))
  		  && Etype (gnat_node) == Non_Limited_View (gnat_temp_type))
--- 1053,1066 ----
  		  && (Etype (gnat_node)
  		      == Packed_Array_Impl_Type (gnat_temp_type)))
  	      || (Is_Class_Wide_Type (Etype (gnat_node)))
! 	      || (Is_Incomplete_Or_Private_Type (gnat_temp_type)
  		  && Present (Full_View (gnat_temp_type))
  		  && ((Etype (gnat_node) == Full_View (gnat_temp_type))
  		      || (Is_Packed (Full_View (gnat_temp_type))
  			  && (Etype (gnat_node)
  			      == Packed_Array_Impl_Type
  			           (Full_View (gnat_temp_type))))))
! 	      || (Is_Incomplete_Type (gnat_temp_type)
  		  && From_Limited_With (gnat_temp_type)
  		  && Present (Non_Limited_View (gnat_temp_type))
  		  && Etype (gnat_node) == Non_Limited_View (gnat_temp_type))
*************** Identifier_to_gnu (Node_Id gnat_node, tr
*** 1059,1065 ****
  		   || Ekind (gnat_temp) == E_Component
  		   || Ekind (gnat_temp) == E_Constant
  		   || Ekind (gnat_temp) == E_Loop_Parameter
! 		   || IN (Ekind (gnat_temp), Formal_Kind)));
  
    /* 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
--- 1069,1075 ----
  		   || Ekind (gnat_temp) == E_Component
  		   || Ekind (gnat_temp) == E_Constant
  		   || Ekind (gnat_temp) == E_Loop_Parameter
! 		   || Is_Formal (gnat_temp)));
  
    /* 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
*************** Pragma_to_gnu (Node_Id gnat_node)
*** 1268,1273 ****
--- 1278,1284 ----
  	  tree gnu_expr = gnat_to_gnu (gnat_expr);
  	  int use_address;
  	  machine_mode mode;
+ 	  scalar_int_mode int_mode;
  	  tree asm_constraint = NULL_TREE;
  #ifdef ASM_COMMENT_START
  	  char *comment;
*************** Pragma_to_gnu (Node_Id gnat_node)
*** 1279,1287 ****
  	  /* Use the value only if it fits into a normal register,
  	     otherwise use the address.  */
  	  mode = TYPE_MODE (TREE_TYPE (gnu_expr));
! 	  use_address = ((GET_MODE_CLASS (mode) != MODE_INT
! 			  && GET_MODE_CLASS (mode) != MODE_PARTIAL_INT)
! 			 || GET_MODE_SIZE (mode) > UNITS_PER_WORD);
  
  	  if (use_address)
  	    gnu_expr = build_unary_op (ADDR_EXPR, NULL_TREE, gnu_expr);
--- 1290,1297 ----
  	  /* Use the value only if it fits into a normal register,
  	     otherwise use the address.  */
  	  mode = TYPE_MODE (TREE_TYPE (gnu_expr));
! 	  use_address = (!is_a <scalar_int_mode> (mode, &int_mode)
! 			 || GET_MODE_SIZE (int_mode) > UNITS_PER_WORD);
  
  	  if (use_address)
  	    gnu_expr = build_unary_op (ADDR_EXPR, NULL_TREE, gnu_expr);
*************** Attribute_to_gnu (Node_Id gnat_node, tre
*** 1619,1628 ****
  
      case Attr_Address:
      case Attr_Unrestricted_Access:
!       /* Conversions don't change addresses but can cause us to miss the
! 	 COMPONENT_REF case below, so strip them off.  */
!       gnu_prefix = remove_conversions (gnu_prefix,
! 				       !Must_Be_Byte_Aligned (gnat_node));
  
        /* If we are taking 'Address of an unconstrained object, this is the
  	 pointer to the underlying array.  */
--- 1629,1642 ----
  
      case Attr_Address:
      case Attr_Unrestricted_Access:
!       /* Conversions don't change the address of references but can cause
! 	 build_unary_op to miss the references below, so strip them off.
! 	 On the contrary, if the address-of operation causes a temporary
! 	 to be created, then it must be created with the proper type.  */
!       gnu_expr = remove_conversions (gnu_prefix,
! 				     !Must_Be_Byte_Aligned (gnat_node));
!       if (REFERENCE_CLASS_P (gnu_expr))
! 	gnu_prefix = gnu_expr;
  
        /* If we are taking 'Address of an unconstrained object, this is the
  	 pointer to the underlying array.  */
*************** Attribute_to_gnu (Node_Id gnat_node, tre
*** 1836,1842 ****
  	 This is in keeping with the object case of gnat_to_gnu_entity.  */
        else if ((TREE_CODE (gnu_prefix) != TYPE_DECL
  		&& !(TYPE_IS_PADDING_P (gnu_type)
! 		     && TREE_CODE (gnu_expr) == COMPONENT_REF))
  	       || attribute == Attr_Object_Size
  	       || attribute == Attr_Max_Size_In_Storage_Elements)
  	{
--- 1850,1857 ----
  	 This is in keeping with the object case of gnat_to_gnu_entity.  */
        else if ((TREE_CODE (gnu_prefix) != TYPE_DECL
  		&& !(TYPE_IS_PADDING_P (gnu_type)
! 		     && TREE_CODE (gnu_expr) == COMPONENT_REF
! 		     && pad_type_has_rm_size (gnu_type)))
  	       || attribute == Attr_Object_Size
  	       || attribute == Attr_Max_Size_In_Storage_Elements)
  	{
*************** Attribute_to_gnu (Node_Id gnat_node, tre
*** 2172,2179 ****
      case Attr_Last_Bit:
      case Attr_Bit:
        {
! 	HOST_WIDE_INT bitsize;
! 	HOST_WIDE_INT bitpos;
  	tree gnu_offset;
  	tree gnu_field_bitpos;
  	tree gnu_field_offset;
--- 2187,2194 ----
      case Attr_Last_Bit:
      case Attr_Bit:
        {
! 	poly_int64 bitsize;
! 	poly_int64 bitpos;
  	tree gnu_offset;
  	tree gnu_field_bitpos;
  	tree gnu_field_offset;
*************** Attribute_to_gnu (Node_Id gnat_node, tre
*** 2240,2250 ****
  
  	  case Attr_First_Bit:
  	  case Attr_Bit:
! 	    gnu_result = size_int (bitpos % BITS_PER_UNIT);
  	    break;
  
  	  case Attr_Last_Bit:
! 	    gnu_result = bitsize_int (bitpos % BITS_PER_UNIT);
  	    gnu_result = size_binop (PLUS_EXPR, gnu_result,
  				     TYPE_SIZE (TREE_TYPE (gnu_prefix)));
  	    /* ??? Avoid a large unsigned result that will overflow when
--- 2255,2265 ----
  
  	  case Attr_First_Bit:
  	  case Attr_Bit:
! 	    gnu_result = size_int (num_trailing_bits (bitpos));
  	    break;
  
  	  case Attr_Last_Bit:
! 	    gnu_result = bitsize_int (num_trailing_bits (bitpos));
  	    gnu_result = size_binop (PLUS_EXPR, gnu_result,
  				     TYPE_SIZE (TREE_TYPE (gnu_prefix)));
  	    /* ??? Avoid a large unsigned result that will overflow when
*************** Case_Statement_to_gnu (Node_Id gnat_node
*** 2548,2554 ****
  	    case N_Expanded_Name:
  	      /* This represents either a subtype range or a static value of
  		 some kind; Ekind says which.  */
! 	      if (IN (Ekind (Entity (gnat_choice)), Type_Kind))
  		{
  		  tree gnu_type = get_unpadded_type (Entity (gnat_choice));
  
--- 2563,2569 ----
  	    case N_Expanded_Name:
  	      /* This represents either a subtype range or a static value of
  		 some kind; Ekind says which.  */
! 	      if (Is_Type (Entity (gnat_choice)))
  		{
  		  tree gnu_type = get_unpadded_type (Entity (gnat_choice));
  
*************** Case_Statement_to_gnu (Node_Id gnat_node
*** 2611,2618 ****
    /* Now emit a definition of the label the cases branch to, if any.  */
    if (may_fallthru)
      add_stmt (build1 (LABEL_EXPR, void_type_node, gnu_label));
!   gnu_result
!     = build3 (SWITCH_EXPR, gnu_type, gnu_expr, end_stmt_group (), NULL_TREE);
  
    return gnu_result;
  }
--- 2626,2632 ----
    /* Now emit a definition of the label the cases branch to, if any.  */
    if (may_fallthru)
      add_stmt (build1 (LABEL_EXPR, void_type_node, gnu_label));
!   gnu_result = build2 (SWITCH_EXPR, gnu_type, gnu_expr, end_stmt_group ());
  
    return gnu_result;
  }
*************** Loop_Statement_to_gnu (Node_Id gnat_node
*** 3176,3183 ****
  
  	  /* Note that loop unswitching can only be applied a small number of
  	     times to a given loop (PARAM_MAX_UNSWITCH_LEVEL default to 3).  */
! 	  if (0 < n_remaining_checks && n_remaining_checks <= 3
! 	      && optimize > 1 && !optimize_size)
  	    FOR_EACH_VEC_ELT (*gnu_loop_info->checks, i, rci)
  	      if (rci->invariant_cond != boolean_false_node)
  		{
--- 3190,3198 ----
  
  	  /* Note that loop unswitching can only be applied a small number of
  	     times to a given loop (PARAM_MAX_UNSWITCH_LEVEL default to 3).  */
! 	  if (IN_RANGE (n_remaining_checks, 1, 3)
! 	      && optimize > 1
! 	      && !optimize_size)
  	    FOR_EACH_VEC_ELT (*gnu_loop_info->checks, i, rci)
  	      if (rci->invariant_cond != boolean_false_node)
  		{
*************** Loop_Statement_to_gnu (Node_Id gnat_node
*** 3237,3244 ****
       RETURN_EXPR [<retval> = Ri]
         [...]
  
!    and we try to fulfill a simple criterion that would make it possible to
!    replace one or several Ri variables with the RESULT_DECL of the function.
  
     The first observation is that RETURN_EXPRs that don't directly reference
     any of the Ri variables on the RHS of their assignment are transparent wrt
--- 3252,3260 ----
       RETURN_EXPR [<retval> = Ri]
         [...]
  
!    where the Ri are not addressable and we try to fulfill a simple criterion
!    that would make it possible to replace one or several Ri variables by the
!    single RESULT_DECL of the function.
  
     The first observation is that RETURN_EXPRs that don't directly reference
     any of the Ri variables on the RHS of their assignment are transparent wrt
*************** Loop_Statement_to_gnu (Node_Id gnat_node
*** 3270,3277 ****
     because the anonymous return object is allocated on the secondary stack
     and RESULT_DECL is only a pointer to it.  Each return object can be of a
     different size and is allocated separately so we need not care about the
!    aforementioned overlapping issues.  Therefore, we don't collect the other
!    expressions and skip step #2 in the algorithm.  */
  
  struct nrv_data
  {
--- 3286,3293 ----
     because the anonymous return object is allocated on the secondary stack
     and RESULT_DECL is only a pointer to it.  Each return object can be of a
     different size and is allocated separately so we need not care about the
!    addressability and the aforementioned overlapping issues.  Therefore, we
!    don't collect the other expressions and skip step #2 in the algorithm.  */
  
  struct nrv_data
  {
*************** return_value_ok_for_nrv_p (tree ret_obj,
*** 3611,3617 ****
    if (TREE_STATIC (ret_val))
      return false;
  
!   if (TREE_ADDRESSABLE (ret_val))
      return false;
  
    /* For the constrained case, test for overalignment.  */
--- 3627,3634 ----
    if (TREE_STATIC (ret_val))
      return false;
  
!   /* For the constrained case, test for addressability.  */
!   if (ret_obj && TREE_ADDRESSABLE (ret_val))
      return false;
  
    /* For the constrained case, test for overalignment.  */
*************** Subprogram_Body_to_gnu (Node_Id gnat_nod
*** 3741,3746 ****
--- 3758,3764 ----
      = 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);
*************** Subprogram_Body_to_gnu (Node_Id gnat_nod
*** 3761,3766 ****
--- 3779,3789 ----
      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))
+     DECL_DISREGARD_INLINE_LIMITS (gnu_subprog_decl) = 1;
+ 
    /* Initialize the information structure for the function.  */
    allocate_struct_function (gnu_subprog_decl, false);
    gnu_subprog_language = ggc_cleared_alloc<language_function> ();
*************** node_has_volatile_full_access (Node_Id g
*** 4059,4064 ****
--- 4082,4089 ----
      case N_Identifier:
      case N_Expanded_Name:
        gnat_entity = Entity (gnat_node);
+       if (!Is_Object (gnat_entity))
+ 	break;
        return Is_Volatile_Full_Access (gnat_entity)
  	     || Is_Volatile_Full_Access (Etype (gnat_entity));
  
*************** Call_to_gnu (Node_Id gnat_node, tree *gn
*** 4284,4293 ****
        return call_expr;
      }
  
!   /* For a call to a nested function, check the inlining status.  */
!   if (TREE_CODE (gnu_subprog) == FUNCTION_DECL
!       && decl_function_context (gnu_subprog))
!     check_inlining_for_nested_subprog (gnu_subprog);
  
    /* The only way we can be making a call via an access type is if Name is an
       explicit dereference.  In that case, get the list of formal args from the
--- 4309,4324 ----
        return call_expr;
      }
  
!   if (TREE_CODE (gnu_subprog) == FUNCTION_DECL)
!     {
!       /* For a call to a nested function, check the inlining status.  */
!       if (decl_function_context (gnu_subprog))
! 	check_inlining_for_nested_subprog (gnu_subprog);
! 
!       /* For a recursive call, avoid explosion due to recursive inlining.  */
!       if (gnu_subprog == current_function_decl)
! 	DECL_DISREGARD_INLINE_LIMITS (gnu_subprog) = 0;
!     }
  
    /* The only way we can be making a call via an access type is if Name is an
       explicit dereference.  In that case, get the list of formal args from the
*************** Exception_Handler_to_gnu_fe_sjlj (Node_I
*** 5257,5262 ****
--- 5288,5323 ----
    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
+ stmt_list_cannot_alter_control_flow_p (List_Id gnat_list)
+ {
+   if (No (gnat_list))
+     return true;
+ 
+   /* This is very conservative, we reject everything except for simple
+      assignments between identifiers or literals.  */
+   for (Node_Id gnat_node = First (gnat_list);
+        Present (gnat_node);
+        gnat_node = Next (gnat_node))
+     {
+       if (Nkind (gnat_node) != N_Assignment_Statement)
+ 	return false;
+ 
+       if (Nkind (Name (gnat_node)) != N_Identifier)
+ 	return false;
+ 
+       Node_Kind nkind = Nkind (Expression (gnat_node));
+       if (nkind != N_Identifier
+ 	  && nkind != N_Integer_Literal
+ 	  && nkind != N_Real_Literal)
+ 	return false;
+     }
+ 
+   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
*** 5265,5280 ****
  Exception_Handler_to_gnu_gcc (Node_Id gnat_node)
  {
    tree gnu_etypes_list = NULL_TREE;
-   tree gnu_current_exc_ptr, prev_gnu_incoming_exc_ptr;
-   Node_Id gnat_temp;
  
    /* We build a TREE_LIST of nodes representing what exception types this
       handler can catch, with special cases for others and all others cases.
  
       Each exception type is actually identified by a pointer to the exception
       id, or to a dummy object for "others" and "all others".  */
!   for (gnat_temp = First (Exception_Choices (gnat_node));
!        gnat_temp; gnat_temp = Next (gnat_temp))
      {
        tree gnu_expr, gnu_etype;
  
--- 5326,5340 ----
  Exception_Handler_to_gnu_gcc (Node_Id gnat_node)
  {
    tree gnu_etypes_list = NULL_TREE;
  
    /* We build a TREE_LIST of nodes representing what exception types this
       handler can catch, with special cases for others and all others cases.
  
       Each exception type is actually identified by a pointer to the exception
       id, or to a dummy object for "others" and "all others".  */
!   for (Node_Id gnat_temp = First (Exception_Choices (gnat_node));
!        gnat_temp;
!        gnat_temp = Next (gnat_temp))
      {
        tree gnu_expr, gnu_etype;
  
*************** Exception_Handler_to_gnu_gcc (Node_Id gn
*** 5330,5339 ****
       We use a local variable to retrieve the incoming value at handler entry
       time, and reuse it to feed the end_handler hook's argument at exit.  */
  
!   gnu_current_exc_ptr
      = build_call_expr (builtin_decl_explicit (BUILT_IN_EH_POINTER),
  		       1, integer_zero_node);
!   prev_gnu_incoming_exc_ptr = gnu_incoming_exc_ptr;
    gnu_incoming_exc_ptr
      = create_var_decl (get_identifier ("EXPTR"), NULL_TREE,
  		       ptr_type_node, gnu_current_exc_ptr,
--- 5390,5399 ----
       We use a local variable to retrieve the incoming value at handler entry
       time, and reuse it to feed the end_handler hook's argument at exit.  */
  
!   tree gnu_current_exc_ptr
      = build_call_expr (builtin_decl_explicit (BUILT_IN_EH_POINTER),
  		       1, integer_zero_node);
!   tree prev_gnu_incoming_exc_ptr = gnu_incoming_exc_ptr;
    gnu_incoming_exc_ptr
      = create_var_decl (get_identifier ("EXPTR"), NULL_TREE,
  		       ptr_type_node, gnu_current_exc_ptr,
*************** Exception_Handler_to_gnu_gcc (Node_Id gn
*** 5356,5366 ****
  		 gnu_incoming_exc_ptr));
      }
  
    /* We don't have an End_Label at hand to set the location of the cleanup
       actions, so we use that of the exception handler itself instead.  */
!   add_cleanup (build_call_n_expr (end_handler_decl, 1, gnu_incoming_exc_ptr),
! 	       gnat_node);
!   add_stmt_list (Statements (gnat_node));
    gnat_poplevel ();
  
    gnu_incoming_exc_ptr = prev_gnu_incoming_exc_ptr;
--- 5416,5431 ----
  		 gnu_incoming_exc_ptr));
      }
  
+   add_stmt_list (Statements (gnat_node));
+ 
    /* We don't have an End_Label at hand to set the location of the cleanup
       actions, so we use that of the exception handler itself instead.  */
!   tree stmt = build_call_n_expr (end_handler_decl, 1, gnu_incoming_exc_ptr);
!   if (stmt_list_cannot_alter_control_flow_p (Statements (gnat_node)))
!     add_stmt_with_node (stmt, gnat_node);
!   else
!     add_cleanup (stmt, gnat_node);
! 
    gnat_poplevel ();
  
    gnu_incoming_exc_ptr = prev_gnu_incoming_exc_ptr;
*************** Compilation_Unit_to_gnu (Node_Id gnat_no
*** 5380,5391 ****
    const Entity_Id gnat_unit_entity = Defining_Entity (gnat_unit);
    Entity_Id gnat_entity;
    Node_Id gnat_pragma;
!   /* Make the decl for the elaboration procedure.  */
    tree gnu_elab_proc_decl
      = create_subprog_decl
        (create_concat_name (gnat_unit_entity, body_p ? "elabb" : "elabs"),
         NULL_TREE, void_ftype, NULL_TREE,
!        is_disabled, true, false, true, true, NULL, gnat_unit);
    struct elab_info *info;
  
    vec_safe_push (gnu_elab_proc_stack, gnu_elab_proc_decl);
--- 5445,5459 ----
    const Entity_Id gnat_unit_entity = Defining_Entity (gnat_unit);
    Entity_Id gnat_entity;
    Node_Id gnat_pragma;
!   /* Make the decl for the elaboration procedure.  Emit debug info for it, so
!      that users can break into their elaboration code in debuggers.  Kludge:
!      don't consider it as a definition so that we have a line map for its body,
!      but no subprogram description in debug info. */
    tree gnu_elab_proc_decl
      = create_subprog_decl
        (create_concat_name (gnat_unit_entity, body_p ? "elabb" : "elabs"),
         NULL_TREE, void_ftype, NULL_TREE,
!        is_disabled, true, false, true, true, false, NULL, gnat_unit);
    struct elab_info *info;
  
    vec_safe_push (gnu_elab_proc_stack, gnu_elab_proc_decl);
*************** Compilation_Unit_to_gnu (Node_Id gnat_no
*** 5438,5443 ****
--- 5506,5520 ----
        if (!optimize && !Has_Pragma_Inline_Always (gnat_entity))
  	continue;
  
+       /* The set of inlined subprograms is computed from data recorded early
+ 	 during expansion and it can be a strict superset of the final set
+ 	 computed after semantic analysis, for example if a call to such a
+ 	 subprogram occurs in a pragma Assert and assertions are disabled.
+ 	 In that case, semantic analysis resets Is_Public to false but the
+ 	 entry for the subprogram in the inlining tables is stalled.  */
+       if (!Is_Public (gnat_entity))
+ 	continue;
+ 
        gnat_body = Parent (Declaration_Node (gnat_entity));
        if (Nkind (gnat_body) != N_Subprogram_Body)
  	{
*************** Raise_Error_to_gnu (Node_Id gnat_node, t
*** 5547,5553 ****
    const bool with_extra_info
      = Exception_Extra_Info
        && !No_Exception_Handlers_Set ()
!       && !get_exception_label (kind);
    tree gnu_result = NULL_TREE, gnu_cond = NULL_TREE;
  
    /* The following processing is not required for correctness.  Its purpose is
--- 5624,5630 ----
    const bool with_extra_info
      = Exception_Extra_Info
        && !No_Exception_Handlers_Set ()
!       && No (get_exception_label (kind));
    tree gnu_result = NULL_TREE, gnu_cond = NULL_TREE;
  
    /* The following processing is not required for correctness.  Its purpose is
*************** gnat_to_gnu (Node_Id gnat_node)
*** 5828,5834 ****
    tree gnu_result_type = void_type_node;
    tree gnu_expr, gnu_lhs, gnu_rhs;
    Node_Id gnat_temp;
!   bool sync;
  
    /* Save node number for error message and set location information.  */
    error_gnat_node = gnat_node;
--- 5905,5911 ----
    tree gnu_result_type = void_type_node;
    tree gnu_expr, gnu_lhs, gnu_rhs;
    Node_Id gnat_temp;
!   bool sync = false;
  
    /* Save node number for error message and set location information.  */
    error_gnat_node = gnat_node;
*************** gnat_to_gnu (Node_Id gnat_node)
*** 5947,5953 ****
  
        /* If this is of a fixed-point type, the value we want is the value of
  	 the corresponding integer.  */
!       if (IN (Ekind (Underlying_Type (Etype (gnat_node))), Fixed_Point_Kind))
  	{
  	  gnu_result = UI_To_gnu (Corresponding_Integer_Value (gnat_node),
  				  gnu_result_type);
--- 6024,6030 ----
  
        /* If this is of a fixed-point type, the value we want is the value of
  	 the corresponding integer.  */
!       if (Is_Fixed_Point_Type (Underlying_Type (Etype (gnat_node))))
  	{
  	  gnu_result = UI_To_gnu (Corresponding_Integer_Value (gnat_node),
  				  gnu_result_type);
*************** gnat_to_gnu (Node_Id gnat_node)
*** 6078,6084 ****
  	  && (((Is_Array_Type (Etype (gnat_temp))
  		|| Is_Record_Type (Etype (gnat_temp)))
  	       && !Is_Constrained (Etype (gnat_temp)))
! 	    || Is_Concurrent_Type (Etype (gnat_temp))))
  	break;
  
        if (Present (Expression (gnat_node))
--- 6155,6161 ----
  	  && (((Is_Array_Type (Etype (gnat_temp))
  		|| Is_Record_Type (Etype (gnat_temp)))
  	       && !Is_Constrained (Etype (gnat_temp)))
! 	      || Is_Concurrent_Type (Etype (gnat_temp))))
  	break;
  
        if (Present (Expression (gnat_node))
*************** gnat_to_gnu (Node_Id gnat_node)
*** 6215,6222 ****
      /*************************************/
  
      case N_Explicit_Dereference:
!       gnu_result = gnat_to_gnu (Prefix (gnat_node));
        gnu_result_type = get_unpadded_type (Etype (gnat_node));
        gnu_result = build_unary_op (INDIRECT_REF, NULL_TREE, gnu_result);
  
        /* If atomic access is required on the RHS, build the atomic load.  */
--- 6292,6300 ----
      /*************************************/
  
      case N_Explicit_Dereference:
!       /* Make sure the designated type is complete before dereferencing.  */
        gnu_result_type = get_unpadded_type (Etype (gnat_node));
+       gnu_result = gnat_to_gnu (Prefix (gnat_node));
        gnu_result = build_unary_op (INDIRECT_REF, NULL_TREE, gnu_result);
  
        /* If atomic access is required on the RHS, build the atomic load.  */
*************** gnat_to_gnu (Node_Id gnat_node)
*** 6227,6233 ****
  
      case N_Indexed_Component:
        {
! 	tree gnu_array_object = gnat_to_gnu (Prefix (gnat_node));
  	tree gnu_type;
  	int ndim;
  	int i;
--- 6305,6312 ----
  
      case N_Indexed_Component:
        {
! 	tree gnu_array_object
! 	  = gnat_to_gnu (adjust_for_implicit_deref (Prefix (gnat_node)));
  	tree gnu_type;
  	int ndim;
  	int i;
*************** gnat_to_gnu (Node_Id gnat_node)
*** 6340,6346 ****
  
      case N_Slice:
        {
! 	tree gnu_array_object = gnat_to_gnu (Prefix (gnat_node));
  
  	gnu_result_type = get_unpadded_type (Etype (gnat_node));
  
--- 6419,6426 ----
  
      case N_Slice:
        {
! 	tree gnu_array_object
! 	  = gnat_to_gnu (adjust_for_implicit_deref (Prefix (gnat_node)));
  
  	gnu_result_type = get_unpadded_type (Etype (gnat_node));
  
*************** gnat_to_gnu (Node_Id gnat_node)
*** 6364,6386 ****
  
      case N_Selected_Component:
        {
! 	Entity_Id gnat_prefix = Prefix (gnat_node);
  	Entity_Id gnat_field = Entity (Selector_Name (gnat_node));
  	tree gnu_prefix = gnat_to_gnu (gnat_prefix);
- 	tree gnu_field;
  
  	gnu_prefix = maybe_implicit_deref (gnu_prefix);
  
! 	/* For discriminant references in tagged types always substitute the
! 	   corresponding discriminant as the actual selected component.  */
! 	if (Is_Tagged_Type (Underlying_Type (Etype (gnat_prefix))))
! 	  while (Present (Corresponding_Discriminant (gnat_field)))
! 	    gnat_field = Corresponding_Discriminant (gnat_field);
  
! 	/* For discriminant references of untagged types always substitute the
! 	   corresponding stored discriminant.  */
! 	else if (Present (Corresponding_Discriminant (gnat_field)))
! 	  gnat_field = Original_Record_Component (gnat_field);
  
  	/* Handle extracting the real or imaginary part of a complex.
  	   The real part is the first field and the imaginary the last.  */
--- 6444,6472 ----
  
      case N_Selected_Component:
        {
! 	Entity_Id gnat_prefix
! 	  = adjust_for_implicit_deref (Prefix (gnat_node));
  	Entity_Id gnat_field = Entity (Selector_Name (gnat_node));
  	tree gnu_prefix = gnat_to_gnu (gnat_prefix);
  
  	gnu_prefix = maybe_implicit_deref (gnu_prefix);
  
! 	/* gnat_to_gnu_entity does not save the GNU tree made for renamed
! 	   discriminants so avoid making recursive calls on each reference
! 	   to them by following the appropriate link directly here.  */
! 	if (Ekind (gnat_field) == E_Discriminant)
! 	  {
! 	    /* For discriminant references in tagged types always substitute
! 	       the corresponding discriminant as the actual component.  */
! 	    if (Is_Tagged_Type (Underlying_Type (Etype (gnat_prefix))))
! 	      while (Present (Corresponding_Discriminant (gnat_field)))
! 		gnat_field = Corresponding_Discriminant (gnat_field);
  
! 	    /* For discriminant references in untagged types always substitute
! 	       the corresponding stored discriminant.  */
! 	    else if (Present (Corresponding_Discriminant (gnat_field)))
! 	      gnat_field = Original_Record_Component (gnat_field);
! 	  }
  
  	/* Handle extracting the real or imaginary part of a complex.
  	   The real part is the first field and the imaginary the last.  */
*************** gnat_to_gnu (Node_Id gnat_node)
*** 6390,6396 ****
  				       NULL_TREE, gnu_prefix);
  	else
  	  {
! 	    gnu_field = gnat_to_gnu_field_decl (gnat_field);
  
  	    gnu_result
  	      = build_component_ref (gnu_prefix, gnu_field,
--- 6476,6482 ----
  				       NULL_TREE, gnu_prefix);
  	else
  	  {
! 	    tree gnu_field = gnat_to_gnu_field_decl (gnat_field);
  
  	    gnu_result
  	      = build_component_ref (gnu_prefix, gnu_field,
*************** gnat_to_gnu (Node_Id gnat_node)
*** 6422,6428 ****
  				 (Entity (Prefix (gnat_node)),
  				  attr == Attr_Elab_Body ? "elabb" : "elabs"),
  				 NULL_TREE, void_ftype, NULL_TREE, is_disabled,
! 				 true, true, true, true, NULL, gnat_node);
  
  	gnu_result = Attribute_to_gnu (gnat_node, &gnu_result_type, attr);
        }
--- 6508,6515 ----
  				 (Entity (Prefix (gnat_node)),
  				  attr == Attr_Elab_Body ? "elabb" : "elabs"),
  				 NULL_TREE, void_ftype, NULL_TREE, is_disabled,
! 				 true, true, true, true, false, NULL,
! 				 gnat_node);
  
  	gnu_result = Attribute_to_gnu (gnat_node, &gnu_result_type, attr);
        }
*************** gnat_to_gnu (Node_Id gnat_node)
*** 6456,6463 ****
  	  gnu_aggr_type = TYPE_REPRESENTATIVE_ARRAY (gnu_result_type);
  
  	if (Null_Record_Present (gnat_node))
! 	  gnu_result = gnat_build_constructor (gnu_aggr_type,
! 					       NULL);
  
  	else if (TREE_CODE (gnu_aggr_type) == RECORD_TYPE
  		 || TREE_CODE (gnu_aggr_type) == UNION_TYPE)
--- 6543,6549 ----
  	  gnu_aggr_type = TYPE_REPRESENTATIVE_ARRAY (gnu_result_type);
  
  	if (Null_Record_Present (gnat_node))
! 	  gnu_result = gnat_build_constructor (gnu_aggr_type, NULL);
  
  	else if (TREE_CODE (gnu_aggr_type) == RECORD_TYPE
  		 || TREE_CODE (gnu_aggr_type) == UNION_TYPE)
*************** gnat_to_gnu (Node_Id gnat_node)
*** 6516,6521 ****
--- 6602,6608 ----
        break;
  
      case N_Unchecked_Type_Conversion:
+       gnu_result_type = get_unpadded_type (Etype (gnat_node));
        gnu_expr = maybe_character_value (gnat_to_gnu (Expression (gnat_node)));
  
        /* Skip further processing if the conversion is deemed a no-op.  */
*************** gnat_to_gnu (Node_Id gnat_node)
*** 6526,6537 ****
  	  break;
  	}
  
-       gnu_result_type = get_unpadded_type (Etype (gnat_node));
- 
        /* If the result is a pointer type, see if we are improperly
  	 converting to a stricter alignment.  */
        if (STRICT_ALIGNMENT && POINTER_TYPE_P (gnu_result_type)
! 	  && IN (Ekind (Etype (gnat_node)), Access_Kind))
  	{
  	  unsigned int align = known_alignment (gnu_expr);
  	  tree gnu_obj_type = TREE_TYPE (gnu_result_type);
--- 6613,6622 ----
  	  break;
  	}
  
        /* If the result is a pointer type, see if we are improperly
  	 converting to a stricter alignment.  */
        if (STRICT_ALIGNMENT && POINTER_TYPE_P (gnu_result_type)
! 	  && Is_Access_Type (Etype (gnat_node)))
  	{
  	  unsigned int align = known_alignment (gnu_expr);
  	  tree gnu_obj_type = TREE_TYPE (gnu_result_type);
*************** gnat_to_gnu (Node_Id gnat_node)
*** 6818,6824 ****
  
      case N_Allocator:
        {
! 	tree gnu_init = 0;
  	tree gnu_type;
  	bool ignore_init_type = false;
  
--- 6903,6909 ----
  
      case N_Allocator:
        {
! 	tree gnu_init = NULL_TREE;
  	tree gnu_type;
  	bool ignore_init_type = false;
  
*************** gnat_to_gnu (Node_Id gnat_node)
*** 6965,6978 ****
  	  /* Or else, use memset when the conditions are met.  */
  	  else if (use_memset_p)
  	    {
! 	      tree value = fold_convert (integer_type_node, gnu_rhs);
  	      tree to = gnu_lhs;
  	      tree type = TREE_TYPE (to);
  	      tree size
  	        = SUBSTITUTE_PLACEHOLDER_IN_EXPR (TYPE_SIZE_UNIT (type), to);
  	      tree to_ptr = build_fold_addr_expr (to);
  	      tree t = builtin_decl_explicit (BUILT_IN_MEMSET);
! 	      if (TREE_CODE (value) == INTEGER_CST)
  		{
  		  tree mask
  		    = build_int_cst (integer_type_node,
--- 7050,7066 ----
  	  /* Or else, use memset when the conditions are met.  */
  	  else if (use_memset_p)
  	    {
! 	      tree value
! 		= real_zerop (gnu_rhs)
! 		  ? integer_zero_node
! 		  : fold_convert (integer_type_node, gnu_rhs);
  	      tree to = gnu_lhs;
  	      tree type = TREE_TYPE (to);
  	      tree size
  	        = SUBSTITUTE_PLACEHOLDER_IN_EXPR (TYPE_SIZE_UNIT (type), to);
  	      tree to_ptr = build_fold_addr_expr (to);
  	      tree t = builtin_decl_explicit (BUILT_IN_MEMSET);
! 	      if (TREE_CODE (value) == INTEGER_CST && !integer_zerop (value))
  		{
  		  tree mask
  		    = build_int_cst (integer_type_node,
*************** gnat_to_gnu (Node_Id gnat_node)
*** 7193,7200 ****
        break;
  
      case N_Goto_Statement:
!       gnu_result
! 	= build1 (GOTO_EXPR, void_type_node, gnat_to_gnu (Name (gnat_node)));
        break;
  
      /***************************/
--- 7281,7289 ----
        break;
  
      case N_Goto_Statement:
!       gnu_expr = gnat_to_gnu (Name (gnat_node));
!       gnu_result = build1 (GOTO_EXPR, void_type_node, gnu_expr);
!       TREE_USED (gnu_expr) = 1;
        break;
  
      /***************************/
*************** gnat_to_gnu (Node_Id gnat_node)
*** 7414,7443 ****
        break;
  
      case N_Push_Constraint_Error_Label:
!       push_exception_label_stack (&gnu_constraint_error_label_stack,
! 				  Exception_Label (gnat_node));
        break;
  
      case N_Push_Storage_Error_Label:
!       push_exception_label_stack (&gnu_storage_error_label_stack,
! 				  Exception_Label (gnat_node));
        break;
  
      case N_Push_Program_Error_Label:
!       push_exception_label_stack (&gnu_program_error_label_stack,
! 				  Exception_Label (gnat_node));
        break;
  
      case N_Pop_Constraint_Error_Label:
!       gnu_constraint_error_label_stack->pop ();
        break;
  
      case N_Pop_Storage_Error_Label:
!       gnu_storage_error_label_stack->pop ();
        break;
  
      case N_Pop_Program_Error_Label:
!       gnu_program_error_label_stack->pop ();
        break;
  
      /******************************/
--- 7503,7538 ----
        break;
  
      case N_Push_Constraint_Error_Label:
!       gnu_constraint_error_label_stack.safe_push (Exception_Label (gnat_node));
        break;
  
      case N_Push_Storage_Error_Label:
!       gnu_storage_error_label_stack.safe_push (Exception_Label (gnat_node));
        break;
  
      case N_Push_Program_Error_Label:
!       gnu_program_error_label_stack.safe_push (Exception_Label (gnat_node));
        break;
  
      case N_Pop_Constraint_Error_Label:
!       gnat_temp = gnu_constraint_error_label_stack.pop ();
!       if (Present (gnat_temp)
! 	  && !TREE_USED (gnat_to_gnu_entity (gnat_temp, NULL_TREE, false)))
! 	Warn_If_No_Local_Raise (gnat_temp);
        break;
  
      case N_Pop_Storage_Error_Label:
!       gnat_temp = gnu_storage_error_label_stack.pop ();
!       if (Present (gnat_temp)
! 	  && !TREE_USED (gnat_to_gnu_entity (gnat_temp, NULL_TREE, false)))
! 	Warn_If_No_Local_Raise (gnat_temp);
        break;
  
      case N_Pop_Program_Error_Label:
!       gnat_temp = gnu_program_error_label_stack.pop ();
!       if (Present (gnat_temp)
! 	  && !TREE_USED (gnat_to_gnu_entity (gnat_temp, NULL_TREE, false)))
! 	Warn_If_No_Local_Raise (gnat_temp);
        break;
  
      /******************************/
*************** gnat_to_gnu (Node_Id gnat_node)
*** 7610,7615 ****
--- 7705,7719 ----
      /* Added Nodes  */
      /****************/
  
+     /* Markers are created by the ABE mechanism to capture information which
+        is either unavailable of expensive to recompute.  Markers do not have
+        and runtime semantics, and should be ignored.  */
+ 
+     case N_Call_Marker:
+     case N_Variable_Reference_Marker:
+       gnu_result = alloc_stmt_list ();
+       break;
+ 
      case N_Expression_With_Actions:
        /* This construct doesn't define a scope so we don't push a binding
  	 level around the statement list, but we wrap it in a SAVE_EXPR to
*************** gnat_to_gnu (Node_Id gnat_node)
*** 7651,7657 ****
      case N_Free_Statement:
        if (!type_annotate_only)
  	{
! 	  tree gnu_ptr = gnat_to_gnu (Expression (gnat_node));
  	  tree gnu_ptr_type = TREE_TYPE (gnu_ptr);
  	  tree gnu_obj_type, gnu_actual_obj_type;
  
--- 7755,7762 ----
      case N_Free_Statement:
        if (!type_annotate_only)
  	{
! 	  tree gnu_ptr
! 	    = gnat_to_gnu (adjust_for_implicit_deref (Expression (gnat_node)));
  	  tree gnu_ptr_type = TREE_TYPE (gnu_ptr);
  	  tree gnu_obj_type, gnu_actual_obj_type;
  
*************** gnat_to_gnu_external (Node_Id gnat_node)
*** 7941,7960 ****
    return gnu_result;
  }
  
- /* Subroutine of above to push the exception label stack.  GNU_STACK is
-    a pointer to the stack to update and GNAT_LABEL, if present, is the
-    label to push onto the stack.  */
- 
- static void
- push_exception_label_stack (vec<tree, va_gc> **gnu_stack, Entity_Id gnat_label)
- {
-   tree gnu_label = (Present (gnat_label)
- 		    ? gnat_to_gnu_entity (gnat_label, NULL_TREE, false)
- 		    : NULL_TREE);
- 
-   vec_safe_push (*gnu_stack, gnu_label);
- }
- 
  /* Return true if the statement list STMT_LIST is empty.  */
  
  static bool
--- 8046,8051 ----
*************** add_stmt_with_node (tree gnu_stmt, Node_
*** 8041,8048 ****
  {
    /* Do not emit a location for renamings that come from generic instantiation,
       they are likely to disturb debugging.  */
!   if (Present (gnat_node)
!       && !renaming_from_generic_instantiation_p (gnat_node))
      set_expr_location_from_node (gnu_stmt, gnat_node);
    add_stmt (gnu_stmt);
  }
--- 8132,8138 ----
  {
    /* Do not emit a location for renamings that come from generic instantiation,
       they are likely to disturb debugging.  */
!   if (Present (gnat_node) && !renaming_from_instantiation_p (gnat_node))
      set_expr_location_from_node (gnu_stmt, gnat_node);
    add_stmt (gnu_stmt);
  }
*************** gnat_gimplify_stmt (tree *stmt_p)
*** 8426,8442 ****
  	  {
  	    /* Deal with the optimization hints.  */
  	    if (LOOP_STMT_IVDEP (stmt))
! 	      gnu_cond = build2 (ANNOTATE_EXPR, TREE_TYPE (gnu_cond), gnu_cond,
  				 build_int_cst (integer_type_node,
! 						annot_expr_ivdep_kind));
  	    if (LOOP_STMT_NO_VECTOR (stmt))
! 	      gnu_cond = build2 (ANNOTATE_EXPR, TREE_TYPE (gnu_cond), gnu_cond,
  				 build_int_cst (integer_type_node,
! 						annot_expr_no_vector_kind));
  	    if (LOOP_STMT_VECTOR (stmt))
! 	      gnu_cond = build2 (ANNOTATE_EXPR, TREE_TYPE (gnu_cond), gnu_cond,
  				 build_int_cst (integer_type_node,
! 						annot_expr_vector_kind));
  
  	    gnu_cond
  	      = build3 (COND_EXPR, void_type_node, gnu_cond, NULL_TREE,
--- 8516,8545 ----
  	  {
  	    /* Deal with the optimization hints.  */
  	    if (LOOP_STMT_IVDEP (stmt))
! 	      gnu_cond = build3 (ANNOTATE_EXPR, TREE_TYPE (gnu_cond), gnu_cond,
  				 build_int_cst (integer_type_node,
! 						annot_expr_ivdep_kind),
! 				 integer_zero_node);
! 	    if (LOOP_STMT_NO_UNROLL (stmt))
! 	      gnu_cond = build3 (ANNOTATE_EXPR, TREE_TYPE (gnu_cond), gnu_cond,
! 				 build_int_cst (integer_type_node,
! 						annot_expr_unroll_kind),
! 				 integer_one_node);
! 	    if (LOOP_STMT_UNROLL (stmt))
! 	      gnu_cond = build3 (ANNOTATE_EXPR, TREE_TYPE (gnu_cond), gnu_cond,
! 				 build_int_cst (integer_type_node,
! 						annot_expr_unroll_kind),
! 				 build_int_cst (NULL_TREE, USHRT_MAX));
  	    if (LOOP_STMT_NO_VECTOR (stmt))
! 	      gnu_cond = build3 (ANNOTATE_EXPR, TREE_TYPE (gnu_cond), gnu_cond,
  				 build_int_cst (integer_type_node,
! 						annot_expr_no_vector_kind),
! 				 integer_zero_node);
  	    if (LOOP_STMT_VECTOR (stmt))
! 	      gnu_cond = build3 (ANNOTATE_EXPR, TREE_TYPE (gnu_cond), gnu_cond,
  				 build_int_cst (integer_type_node,
! 						annot_expr_vector_kind),
! 				 integer_zero_node);
  
  	    gnu_cond
  	      = build3 (COND_EXPR, void_type_node, gnu_cond, NULL_TREE,
*************** process_freeze_entity (Node_Id gnat_node
*** 8667,8673 ****
  	   && TYPE_IS_DUMMY_P (TREE_TYPE (gnu_old))))
      {
        gcc_assert (Is_Concurrent_Type (gnat_entity)
! 		  || (IN (kind, Record_Kind)
  		      && Is_Concurrent_Record_Type (gnat_entity)));
        return;
      }
--- 8770,8776 ----
  	   && TYPE_IS_DUMMY_P (TREE_TYPE (gnu_old))))
      {
        gcc_assert (Is_Concurrent_Type (gnat_entity)
! 		  || (Is_Record_Type (gnat_entity)
  		      && Is_Concurrent_Record_Type (gnat_entity)));
        return;
      }
*************** process_freeze_entity (Node_Id gnat_node
*** 8679,8692 ****
      {
        save_gnu_tree (gnat_entity, NULL_TREE, false);
  
!       if (IN (kind, Incomplete_Or_Private_Kind)
  	  && Present (Full_View (gnat_entity)))
  	{
  	  Entity_Id full_view = Full_View (gnat_entity);
  
  	  save_gnu_tree (full_view, NULL_TREE, false);
  
!           if (IN (Ekind (full_view), Private_Kind)
  	      && Present (Underlying_Full_View (full_view)))
  	    {
  	      full_view = Underlying_Full_View (full_view);
--- 8782,8795 ----
      {
        save_gnu_tree (gnat_entity, NULL_TREE, false);
  
!       if (Is_Incomplete_Or_Private_Type (gnat_entity)
  	  && Present (Full_View (gnat_entity)))
  	{
  	  Entity_Id full_view = Full_View (gnat_entity);
  
  	  save_gnu_tree (full_view, NULL_TREE, false);
  
!           if (Is_Private_Type (full_view)
  	      && Present (Underlying_Full_View (full_view)))
  	    {
  	      full_view = Underlying_Full_View (full_view);
*************** process_freeze_entity (Node_Id gnat_node
*** 8694,8711 ****
  	    }
  	}
  
!       if (IN (kind, Type_Kind)
  	  && Present (Class_Wide_Type (gnat_entity))
  	  && Root_Type (Class_Wide_Type (gnat_entity)) == gnat_entity)
  	save_gnu_tree (Class_Wide_Type (gnat_entity), NULL_TREE, false);
      }
  
!   if (IN (kind, Incomplete_Or_Private_Kind)
        && Present (Full_View (gnat_entity)))
      {
        Entity_Id full_view = Full_View (gnat_entity);
  
!       if (IN (Ekind (full_view), Private_Kind)
  	  && Present (Underlying_Full_View (full_view)))
  	full_view = Underlying_Full_View (full_view);
  
--- 8797,8814 ----
  	    }
  	}
  
!       if (Is_Type (gnat_entity)
  	  && Present (Class_Wide_Type (gnat_entity))
  	  && Root_Type (Class_Wide_Type (gnat_entity)) == gnat_entity)
  	save_gnu_tree (Class_Wide_Type (gnat_entity), NULL_TREE, false);
      }
  
!   if (Is_Incomplete_Or_Private_Type (gnat_entity)
        && Present (Full_View (gnat_entity)))
      {
        Entity_Id full_view = Full_View (gnat_entity);
  
!       if (Is_Private_Type (full_view)
  	  && Present (Underlying_Full_View (full_view)))
  	full_view = Underlying_Full_View (full_view);
  
*************** process_freeze_entity (Node_Id gnat_node
*** 8737,8743 ****
        gnu_new = gnat_to_gnu_entity (gnat_entity, gnu_init, true);
      }
  
!   if (IN (kind, Type_Kind)
        && Present (Class_Wide_Type (gnat_entity))
        && Root_Type (Class_Wide_Type (gnat_entity)) == gnat_entity)
      save_gnu_tree (Class_Wide_Type (gnat_entity), gnu_new, false);
--- 8840,8846 ----
        gnu_new = gnat_to_gnu_entity (gnat_entity, gnu_init, true);
      }
  
!   if (Is_Type (gnat_entity)
        && Present (Class_Wide_Type (gnat_entity))
        && Root_Type (Class_Wide_Type (gnat_entity)) == gnat_entity)
      save_gnu_tree (Class_Wide_Type (gnat_entity), gnu_new, false);
*************** emit_check (tree gnu_cond, tree gnu_expr
*** 9180,9242 ****
  
  /* Return an expression that converts GNU_EXPR to GNAT_TYPE, doing overflow
     checks if OVERFLOW_P is true and range checks if RANGE_P is true.
!    GNAT_TYPE is known to be an integral type.  If TRUNCATE_P true, do a
!    float to integer conversion with truncation; otherwise round.
!    GNAT_NODE is the GNAT node conveying the source location for which the
!    error should be signaled.  */
  
  static tree
! convert_with_check (Entity_Id gnat_type, tree gnu_expr, bool overflowp,
! 		    bool rangep, bool truncatep, Node_Id gnat_node)
  {
    tree gnu_type = get_unpadded_type (gnat_type);
-   tree gnu_in_type = TREE_TYPE (gnu_expr);
-   tree gnu_in_basetype = get_base_type (gnu_in_type);
    tree gnu_base_type = get_base_type (gnu_type);
    tree gnu_result = gnu_expr;
  
    /* If we are not doing any checks, the output is an integral type and the
       input is not a floating-point type, just do the conversion.  This is
       required for packed array types and is simpler in all cases anyway.   */
!   if (!rangep
!       && !overflowp
        && INTEGRAL_TYPE_P (gnu_base_type)
!       && !FLOAT_TYPE_P (gnu_in_type))
      return convert (gnu_type, gnu_expr);
  
!   /* First convert the expression to its base type.  This
!      will never generate code, but makes the tests below much simpler.
!      But don't do this if converting from an integer type to an unconstrained
!      array type since then we need to get the bounds from the original
!      (unpacked) type.  */
    if (TREE_CODE (gnu_type) != UNCONSTRAINED_ARRAY_TYPE)
!     gnu_result = convert (gnu_in_basetype, gnu_result);
  
!   /* If overflow checks are requested,  we need to be sure the result will
!      fit in the output base type.  But don't do this if the input
!      is integer and the output floating-point.  */
!   if (overflowp
!       && !(FLOAT_TYPE_P (gnu_base_type) && INTEGRAL_TYPE_P (gnu_in_basetype)))
      {
        /* Ensure GNU_EXPR only gets evaluated once.  */
        tree gnu_input = gnat_protect_expr (gnu_result);
        tree gnu_cond = boolean_false_node;
!       tree gnu_in_lb = TYPE_MIN_VALUE (gnu_in_basetype);
!       tree gnu_in_ub = TYPE_MAX_VALUE (gnu_in_basetype);
        tree gnu_out_lb = TYPE_MIN_VALUE (gnu_base_type);
        tree gnu_out_ub = TYPE_MAX_VALUE (gnu_base_type);
  
        /* Convert the lower bounds to signed types, so we're sure we're
  	 comparing them properly.  Likewise, convert the upper bounds
  	 to unsigned types.  */
!       if (INTEGRAL_TYPE_P (gnu_in_basetype) && TYPE_UNSIGNED (gnu_in_basetype))
  	gnu_in_lb
! 	  = convert (gnat_signed_type_for (gnu_in_basetype), gnu_in_lb);
  
!       if (INTEGRAL_TYPE_P (gnu_in_basetype)
! 	  && !TYPE_UNSIGNED (gnu_in_basetype))
  	gnu_in_ub
! 	  = convert (gnat_unsigned_type_for (gnu_in_basetype), gnu_in_ub);
  
        if (INTEGRAL_TYPE_P (gnu_base_type) && TYPE_UNSIGNED (gnu_base_type))
  	gnu_out_lb
--- 9283,9353 ----
  
  /* Return an expression that converts GNU_EXPR to GNAT_TYPE, doing overflow
     checks if OVERFLOW_P is true and range checks if RANGE_P is true.
!    If TRUNCATE_P true, do a float-to-integer conversion with truncation,
!    otherwise round.  GNAT_NODE is the GNAT node conveying the source location
!    for which the error should be signaled.  */
  
  static tree
! convert_with_check (Entity_Id gnat_type, tree gnu_expr, bool overflow_p,
! 		    bool range_p, bool truncate_p, Node_Id gnat_node)
  {
    tree gnu_type = get_unpadded_type (gnat_type);
    tree gnu_base_type = get_base_type (gnu_type);
+   tree gnu_in_type = TREE_TYPE (gnu_expr);
+   tree gnu_in_base_type = get_base_type (gnu_in_type);
    tree gnu_result = gnu_expr;
  
    /* If we are not doing any checks, the output is an integral type and the
       input is not a floating-point type, just do the conversion.  This is
       required for packed array types and is simpler in all cases anyway.   */
!   if (!range_p
!       && !overflow_p
        && INTEGRAL_TYPE_P (gnu_base_type)
!       && !FLOAT_TYPE_P (gnu_in_base_type))
      return convert (gnu_type, gnu_expr);
  
!   /* If the mode of the input base type is larger, then converting to it below
!      may pessimize the final conversion step, for example generate a libcall
!      instead of a simple instruction, so use a narrower type in this case.  */
!   if (TYPE_MODE (gnu_in_base_type) != TYPE_MODE (gnu_in_type)
!       && !(TREE_CODE (gnu_in_type) == INTEGER_TYPE
! 	   && TYPE_BIASED_REPRESENTATION_P (gnu_in_type)))
!     gnu_in_base_type = gnat_type_for_mode (TYPE_MODE (gnu_in_type),
! 					   TYPE_UNSIGNED (gnu_in_type));
! 
!   /* First convert the expression to the base type.  This will never generate
!      code, but makes the tests below simpler.  But don't do this if converting
!      from an integer type to an unconstrained array type since then we need to
!      get the bounds from the original (unpacked) type.  */
    if (TREE_CODE (gnu_type) != UNCONSTRAINED_ARRAY_TYPE)
!     gnu_result = convert (gnu_in_base_type, gnu_result);
  
!   /* If overflow checks are requested,  we need to be sure the result will fit
!      in the output base type.  But don't do this if the input is integer and
!      the output floating-point.  */
!   if (overflow_p
!       && !(FLOAT_TYPE_P (gnu_base_type) && INTEGRAL_TYPE_P (gnu_in_base_type)))
      {
        /* Ensure GNU_EXPR only gets evaluated once.  */
        tree gnu_input = gnat_protect_expr (gnu_result);
        tree gnu_cond = boolean_false_node;
!       tree gnu_in_lb = TYPE_MIN_VALUE (gnu_in_base_type);
!       tree gnu_in_ub = TYPE_MAX_VALUE (gnu_in_base_type);
        tree gnu_out_lb = TYPE_MIN_VALUE (gnu_base_type);
        tree gnu_out_ub = TYPE_MAX_VALUE (gnu_base_type);
  
        /* Convert the lower bounds to signed types, so we're sure we're
  	 comparing them properly.  Likewise, convert the upper bounds
  	 to unsigned types.  */
!       if (INTEGRAL_TYPE_P (gnu_in_base_type)
! 	  && TYPE_UNSIGNED (gnu_in_base_type))
  	gnu_in_lb
! 	  = convert (gnat_signed_type_for (gnu_in_base_type), gnu_in_lb);
  
!       if (INTEGRAL_TYPE_P (gnu_in_base_type)
! 	  && !TYPE_UNSIGNED (gnu_in_base_type))
  	gnu_in_ub
! 	  = convert (gnat_unsigned_type_for (gnu_in_base_type), gnu_in_ub);
  
        if (INTEGRAL_TYPE_P (gnu_base_type) && TYPE_UNSIGNED (gnu_base_type))
  	gnu_out_lb
*************** convert_with_check (Entity_Id gnat_type,
*** 9256,9262 ****
  	 Note that we have to do the comparison which would *fail* in the
  	 case of an error since if it's an FP comparison and one of the
  	 values is a NaN or Inf, the comparison will fail.  */
!       if (INTEGRAL_TYPE_P (gnu_in_basetype)
  	  ? tree_int_cst_lt (gnu_in_lb, gnu_out_lb)
  	  : (FLOAT_TYPE_P (gnu_base_type)
  	     ? real_less (&TREE_REAL_CST (gnu_in_lb),
--- 9367,9373 ----
  	 Note that we have to do the comparison which would *fail* in the
  	 case of an error since if it's an FP comparison and one of the
  	 values is a NaN or Inf, the comparison will fail.  */
!       if (INTEGRAL_TYPE_P (gnu_in_base_type)
  	  ? tree_int_cst_lt (gnu_in_lb, gnu_out_lb)
  	  : (FLOAT_TYPE_P (gnu_base_type)
  	     ? real_less (&TREE_REAL_CST (gnu_in_lb),
*************** convert_with_check (Entity_Id gnat_type,
*** 9265,9285 ****
  	gnu_cond
  	  = invert_truthvalue
  	    (build_binary_op (GE_EXPR, boolean_type_node,
! 			      gnu_input, convert (gnu_in_basetype,
  						  gnu_out_lb)));
  
!       if (INTEGRAL_TYPE_P (gnu_in_basetype)
  	  ? tree_int_cst_lt (gnu_out_ub, gnu_in_ub)
  	  : (FLOAT_TYPE_P (gnu_base_type)
  	     ? real_less (&TREE_REAL_CST (gnu_out_ub),
! 			  &TREE_REAL_CST (gnu_in_lb))
  	     : 1))
  	gnu_cond
  	  = build_binary_op (TRUTH_ORIF_EXPR, boolean_type_node, gnu_cond,
  			     invert_truthvalue
  			     (build_binary_op (LE_EXPR, boolean_type_node,
  					       gnu_input,
! 					       convert (gnu_in_basetype,
  							gnu_out_ub))));
  
        if (!integer_zerop (gnu_cond))
--- 9376,9396 ----
  	gnu_cond
  	  = invert_truthvalue
  	    (build_binary_op (GE_EXPR, boolean_type_node,
! 			      gnu_input, convert (gnu_in_base_type,
  						  gnu_out_lb)));
  
!       if (INTEGRAL_TYPE_P (gnu_in_base_type)
  	  ? tree_int_cst_lt (gnu_out_ub, gnu_in_ub)
  	  : (FLOAT_TYPE_P (gnu_base_type)
  	     ? real_less (&TREE_REAL_CST (gnu_out_ub),
! 			  &TREE_REAL_CST (gnu_in_ub))
  	     : 1))
  	gnu_cond
  	  = build_binary_op (TRUTH_ORIF_EXPR, boolean_type_node, gnu_cond,
  			     invert_truthvalue
  			     (build_binary_op (LE_EXPR, boolean_type_node,
  					       gnu_input,
! 					       convert (gnu_in_base_type,
  							gnu_out_ub))));
  
        if (!integer_zerop (gnu_cond))
*************** convert_with_check (Entity_Id gnat_type,
*** 9290,9297 ****
    /* Now convert to the result base type.  If this is a non-truncating
       float-to-integer conversion, round.  */
    if (INTEGRAL_TYPE_P (gnu_base_type)
!       && FLOAT_TYPE_P (gnu_in_basetype)
!       && !truncatep)
      {
        REAL_VALUE_TYPE half_minus_pred_half, pred_half;
        tree gnu_conv, gnu_zero, gnu_comp, calc_type;
--- 9401,9408 ----
    /* Now convert to the result base type.  If this is a non-truncating
       float-to-integer conversion, round.  */
    if (INTEGRAL_TYPE_P (gnu_base_type)
!       && FLOAT_TYPE_P (gnu_in_base_type)
!       && !truncate_p)
      {
        REAL_VALUE_TYPE half_minus_pred_half, pred_half;
        tree gnu_conv, gnu_zero, gnu_comp, calc_type;
*************** convert_with_check (Entity_Id gnat_type,
*** 9303,9309 ****
  	 precision from spoiling this property, use the widest hardware
  	 floating-point type if FP_ARITH_MAY_WIDEN is true.  */
        calc_type
! 	= fp_arith_may_widen ? longest_float_type_node : gnu_in_basetype;
  
        /* Compute the exact value calc_type'Pred (0.5) at compile time.  */
        fmt = REAL_MODE_FORMAT (TYPE_MODE (calc_type));
--- 9414,9420 ----
  	 precision from spoiling this property, use the widest hardware
  	 floating-point type if FP_ARITH_MAY_WIDEN is true.  */
        calc_type
! 	= fp_arith_may_widen ? longest_float_type_node : gnu_in_base_type;
  
        /* Compute the exact value calc_type'Pred (0.5) at compile time.  */
        fmt = REAL_MODE_FORMAT (TYPE_MODE (calc_type));
*************** convert_with_check (Entity_Id gnat_type,
*** 9328,9334 ****
  	 to be scheduled in parallel with retrieval of the constant and
  	 conversion of the input to the calc_type (if necessary).  */
  
!       gnu_zero = build_real (gnu_in_basetype, dconst0);
        gnu_result = gnat_protect_expr (gnu_result);
        gnu_conv = convert (calc_type, gnu_result);
        gnu_comp
--- 9439,9445 ----
  	 to be scheduled in parallel with retrieval of the constant and
  	 conversion of the input to the calc_type (if necessary).  */
  
!       gnu_zero = build_real (gnu_in_base_type, dconst0);
        gnu_result = gnat_protect_expr (gnu_result);
        gnu_conv = convert (calc_type, gnu_result);
        gnu_comp
*************** convert_with_check (Entity_Id gnat_type,
*** 9350,9358 ****
  
    /* Finally, do the range check if requested.  Note that if the result type
       is a modular type, the range check is actually an overflow check.  */
!   if (rangep
!       || (TREE_CODE (gnu_base_type) == INTEGER_TYPE
! 	  && TYPE_MODULAR_P (gnu_base_type) && overflowp))
      gnu_result = emit_range_check (gnu_result, gnat_type, gnat_node);
  
    return convert (gnu_type, gnu_result);
--- 9461,9470 ----
  
    /* Finally, do the range check if requested.  Note that if the result type
       is a modular type, the range check is actually an overflow check.  */
!   if (range_p
!       || (overflow_p
! 	  && TREE_CODE (gnu_base_type) == INTEGER_TYPE
! 	  && TYPE_MODULAR_P (gnu_base_type)))
      gnu_result = emit_range_check (gnu_result, gnat_type, gnat_node);
  
    return convert (gnu_type, gnu_result);
*************** process_type (Entity_Id gnat_entity)
*** 9557,9563 ****
  	{
  	  tree gnu_decl = TYPE_STUB_DECL (make_dummy_type (gnat_entity));
  	  save_gnu_tree (gnat_entity, gnu_decl, false);
! 	  if (IN (Ekind (gnat_entity), Incomplete_Or_Private_Kind)
  	      && Present (Full_View (gnat_entity)))
  	    {
  	      if (Has_Completion_In_Body (gnat_entity))
--- 9669,9675 ----
  	{
  	  tree gnu_decl = TYPE_STUB_DECL (make_dummy_type (gnat_entity));
  	  save_gnu_tree (gnat_entity, gnu_decl, false);
! 	  if (Is_Incomplete_Or_Private_Type (gnat_entity)
  	      && Present (Full_View (gnat_entity)))
  	    {
  	      if (Has_Completion_In_Body (gnat_entity))
*************** process_type (Entity_Id gnat_entity)
*** 9601,9607 ****
    /* If this is a record type corresponding to a task or protected type
       that is a completion of an incomplete type, perform a similar update
       on the type.  ??? Including protected types here is a guess.  */
!   if (IN (Ekind (gnat_entity), Record_Kind)
        && Is_Concurrent_Record_Type (gnat_entity)
        && present_gnu_tree (Corresponding_Concurrent_Type (gnat_entity)))
      {
--- 9713,9719 ----
    /* If this is a record type corresponding to a task or protected type
       that is a completion of an incomplete type, perform a similar update
       on the type.  ??? Including protected types here is a guess.  */
!   if (Is_Record_Type (gnat_entity)
        && Is_Concurrent_Record_Type (gnat_entity)
        && present_gnu_tree (Corresponding_Concurrent_Type (gnat_entity)))
      {
*************** process_type (Entity_Id gnat_entity)
*** 9618,9623 ****
--- 9730,9784 ----
      }
  }
  
+ /* Subroutine of assoc_to_constructor: VALUES is a list of field associations,
+    some of which are from RECORD_TYPE.  Return a CONSTRUCTOR consisting of the
+    associations that are from RECORD_TYPE.  If we see an internal record, make
+    a recursive call to fill it in as well.  */
+ 
+ static tree
+ extract_values (tree values, tree record_type)
+ {
+   vec<constructor_elt, va_gc> *v = NULL;
+   tree field;
+ 
+   for (field = TYPE_FIELDS (record_type); field; field = DECL_CHAIN (field))
+     {
+       tree tem, value = NULL_TREE;
+ 
+       /* _Parent is an internal field, but may have values in the aggregate,
+ 	 so check for values first.  */
+       if ((tem = purpose_member (field, values)))
+ 	{
+ 	  value = TREE_VALUE (tem);
+ 	  TREE_ADDRESSABLE (tem) = 1;
+ 	}
+ 
+       else if (DECL_INTERNAL_P (field))
+ 	{
+ 	  value = extract_values (values, TREE_TYPE (field));
+ 	  if (TREE_CODE (value) == CONSTRUCTOR
+ 	      && vec_safe_is_empty (CONSTRUCTOR_ELTS (value)))
+ 	    value = NULL_TREE;
+ 	}
+       else
+ 	/* If we have a record subtype, the names will match, but not the
+ 	   actual FIELD_DECLs.  */
+ 	for (tem = values; tem; tem = TREE_CHAIN (tem))
+ 	  if (DECL_NAME (TREE_PURPOSE (tem)) == DECL_NAME (field))
+ 	    {
+ 	      value = convert (TREE_TYPE (field), TREE_VALUE (tem));
+ 	      TREE_ADDRESSABLE (tem) = 1;
+ 	    }
+ 
+       if (!value)
+ 	continue;
+ 
+       CONSTRUCTOR_APPEND_ELT (v, field, value);
+     }
+ 
+   return gnat_build_constructor (record_type, v);
+ }
+ 
  /* GNAT_ENTITY is the type of the resulting constructor, GNAT_ASSOC is the
     front of the Component_Associations of an N_Aggregate and GNU_TYPE is the
     GCC type of the corresponding record type.  Return the CONSTRUCTOR.  */
*************** assoc_to_constructor (Entity_Id gnat_ent
*** 9642,9656 ****
  	 in every record component association.  */
        gcc_assert (No (Next (gnat_field)));
  
!       /* Ignore fields that have Corresponding_Discriminants since we'll
! 	 be setting that field in the parent.  */
!       if (Present (Corresponding_Discriminant (Entity (gnat_field)))
  	  && Is_Tagged_Type (Scope (Entity (gnat_field))))
  	continue;
  
        /* Also ignore discriminants of Unchecked_Unions.  */
!       if (Is_Unchecked_Union (gnat_entity)
! 	  && Ekind (Entity (gnat_field)) == E_Discriminant)
  	continue;
  
        /* Before assigning a value in an aggregate make sure range checks
--- 9803,9818 ----
  	 in every record component association.  */
        gcc_assert (No (Next (gnat_field)));
  
!       /* Ignore discriminants that have Corresponding_Discriminants in tagged
! 	 types since we'll be setting those fields in the parent subtype.  */
!       if (Ekind (Entity (gnat_field)) == E_Discriminant
! 	  && Present (Corresponding_Discriminant (Entity (gnat_field)))
  	  && Is_Tagged_Type (Scope (Entity (gnat_field))))
  	continue;
  
        /* Also ignore discriminants of Unchecked_Unions.  */
!       if (Ekind (Entity (gnat_field)) == E_Discriminant
! 	  && Is_Unchecked_Union (gnat_entity))
  	continue;
  
        /* Before assigning a value in an aggregate make sure range checks
*************** pos_to_constructor (Node_Id gnat_expr, t
*** 9687,9697 ****
  		    Entity_Id gnat_component_type)
  {
    tree gnu_index = TYPE_MIN_VALUE (TYPE_DOMAIN (gnu_array_type));
-   tree gnu_expr;
    vec<constructor_elt, va_gc> *gnu_expr_vec = NULL;
  
!   for ( ; Present (gnat_expr); gnat_expr = Next (gnat_expr))
      {
        /* If the expression is itself an array aggregate then first build the
  	 innermost constructor if it is part of our array (multi-dimensional
  	 case).  */
--- 9849,9860 ----
  		    Entity_Id gnat_component_type)
  {
    tree gnu_index = TYPE_MIN_VALUE (TYPE_DOMAIN (gnu_array_type));
    vec<constructor_elt, va_gc> *gnu_expr_vec = NULL;
  
!   for (; Present (gnat_expr); gnat_expr = Next (gnat_expr))
      {
+       tree gnu_expr;
+ 
        /* If the expression is itself an array aggregate then first build the
  	 innermost constructor if it is part of our array (multi-dimensional
  	 case).  */
*************** pos_to_constructor (Node_Id gnat_expr, t
*** 9729,9783 ****
    return gnat_build_constructor (gnu_array_type, gnu_expr_vec);
  }
  
- /* Subroutine of assoc_to_constructor: VALUES is a list of field associations,
-    some of which are from RECORD_TYPE.  Return a CONSTRUCTOR consisting of the
-    associations that are from RECORD_TYPE.  If we see an internal record, make
-    a recursive call to fill it in as well.  */
- 
- static tree
- extract_values (tree values, tree record_type)
- {
-   tree field, tem;
-   vec<constructor_elt, va_gc> *v = NULL;
- 
-   for (field = TYPE_FIELDS (record_type); field; field = DECL_CHAIN (field))
-     {
-       tree value = 0;
- 
-       /* _Parent is an internal field, but may have values in the aggregate,
- 	 so check for values first.  */
-       if ((tem = purpose_member (field, values)))
- 	{
- 	  value = TREE_VALUE (tem);
- 	  TREE_ADDRESSABLE (tem) = 1;
- 	}
- 
-       else if (DECL_INTERNAL_P (field))
- 	{
- 	  value = extract_values (values, TREE_TYPE (field));
- 	  if (TREE_CODE (value) == CONSTRUCTOR
- 	      && vec_safe_is_empty (CONSTRUCTOR_ELTS (value)))
- 	    value = 0;
- 	}
-       else
- 	/* If we have a record subtype, the names will match, but not the
- 	   actual FIELD_DECLs.  */
- 	for (tem = values; tem; tem = TREE_CHAIN (tem))
- 	  if (DECL_NAME (TREE_PURPOSE (tem)) == DECL_NAME (field))
- 	    {
- 	      value = convert (TREE_TYPE (field), TREE_VALUE (tem));
- 	      TREE_ADDRESSABLE (tem) = 1;
- 	    }
- 
-       if (!value)
- 	continue;
- 
-       CONSTRUCTOR_APPEND_ELT (v, field, value);
-     }
- 
-   return gnat_build_constructor (record_type, v);
- }
- 
  /* Process a N_Validate_Unchecked_Conversion node.  */
  
  static void
--- 9892,9897 ----
*************** validate_unchecked_conversion (Node_Id g
*** 9837,9842 ****
--- 9951,9971 ----
      }
  }
  
+ /* EXP is to be used in a context where access objects are implicitly
+    dereferenced.  Handle the cases when it is an access object.  */
+ 
+ static Node_Id
+ adjust_for_implicit_deref (Node_Id exp)
+ {
+   Entity_Id type = Underlying_Type (Etype (exp));
+ 
+   /* Make sure the designated type is complete before dereferencing.  */
+   if (Is_Access_Type (type))
+     gnat_to_gnu_entity (Designated_Type (type), NULL_TREE, false);
+ 
+   return exp;
+ }
+ 
  /* EXP is to be treated as an array or record.  Handle the cases when it is
     an access object and perform the required dereferences.  */
  
*************** Sloc_to_locus (Source_Ptr Sloc, location
*** 9881,9888 ****
      line = 1;
  
    /* Translate the location.  */
!   *locus = linemap_position_for_line_and_column (line_table, map,
! 						 line, column);
  
    return true;
  }
--- 10010,10017 ----
      line = 1;
  
    /* Translate the location.  */
!   *locus
!     = linemap_position_for_line_and_column (line_table, map, line, column);
  
    return true;
  }
*************** post_error_ne_tree_2 (const char *msg, N
*** 10113,10145 ****
    post_error_ne_tree (msg, node, ent, t);
  }
  
! /* Return a label to branch to for the exception type in KIND or NULL_TREE
     if none.  */
  
! tree
  get_exception_label (char kind)
  {
    switch (kind)
      {
      case N_Raise_Constraint_Error:
!       return gnu_constraint_error_label_stack->last ();
  
      case N_Raise_Storage_Error:
!       return gnu_storage_error_label_stack->last ();
  
      case N_Raise_Program_Error:
!       return gnu_program_error_label_stack->last ();
  
      default:
!       break;
      }
  
!   return NULL_TREE;
  }
  
  /* Return the decl for the current elaboration procedure.  */
  
! tree
  get_elaboration_procedure (void)
  {
    return gnu_elab_proc_stack->last ();
--- 10242,10274 ----
    post_error_ne_tree (msg, node, ent, t);
  }
  
! /* Return a label to branch to for the exception type in KIND or Empty
     if none.  */
  
! Entity_Id
  get_exception_label (char kind)
  {
    switch (kind)
      {
      case N_Raise_Constraint_Error:
!       return gnu_constraint_error_label_stack.last ();
  
      case N_Raise_Storage_Error:
!       return gnu_storage_error_label_stack.last ();
  
      case N_Raise_Program_Error:
!       return gnu_program_error_label_stack.last ();
  
      default:
!       return Empty;
      }
  
!   gcc_unreachable ();
  }
  
  /* Return the decl for the current elaboration procedure.  */
  
! static tree
  get_elaboration_procedure (void)
  {
    return gnu_elab_proc_stack->last ();
diff -Nrcpad gcc-7.3.0/gcc/ada/gcc-interface/utils.c gcc-8.1.0/gcc/ada/gcc-interface/utils.c
*** gcc-7.3.0/gcc/ada/gcc-interface/utils.c	Fri Nov 10 08:23:20 2017
--- gcc-8.1.0/gcc/ada/gcc-interface/utils.c	Tue Mar  6 12:09:33 2018
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2016, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  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-2018, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is 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_vector_type_attribute
*** 101,154 ****
  
  /* Fake handler for attributes we don't properly support, typically because
     they'd require dragging a lot of the common-c front-end circuitry.  */
! static tree fake_attribute_handler      (tree *, tree, tree, int, bool *);
  
  /* Table of machine-independent internal attributes for Ada.  We support
     this minimal set of attributes to accommodate the needs of builtins.  */
  const struct attribute_spec gnat_internal_attribute_table[] =
  {
!   /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler,
!        affects_type_identity } */
!   { "const",        0, 0,  true,  false, false, handle_const_attribute,
!     false },
!   { "nothrow",      0, 0,  true,  false, false, handle_nothrow_attribute,
!     false },
!   { "pure",         0, 0,  true,  false, false, handle_pure_attribute,
!     false },
!   { "no vops",      0, 0,  true,  false, false, handle_novops_attribute,
!     false },
!   { "nonnull",      0, -1, false, true,  true,  handle_nonnull_attribute,
!     false },
!   { "sentinel",     0, 1,  false, true,  true,  handle_sentinel_attribute,
!     false },
!   { "noreturn",     0, 0,  true,  false, false, handle_noreturn_attribute,
!     false },
!   { "noinline",     0, 0,  true,  false, false, handle_noinline_attribute,
!     false },
!   { "noclone",      0, 0,  true,  false, false, handle_noclone_attribute,
!     false },
!   { "leaf",         0, 0,  true,  false, false, handle_leaf_attribute,
!     false },
!   { "always_inline",0, 0,  true,  false, false, handle_always_inline_attribute,
!     false },
!   { "malloc",       0, 0,  true,  false, false, handle_malloc_attribute,
!     false },
!   { "type generic", 0, 0,  false, true, true, handle_type_generic_attribute,
!     false },
  
!   { "vector_size",  1, 1,  false, true, false,  handle_vector_size_attribute,
!     false },
!   { "vector_type",  0, 0,  false, true, false,  handle_vector_type_attribute,
!     false },
!   { "may_alias",    0, 0, false, true, false, NULL, false },
  
    /* ??? format and format_arg are heavy and not supported, which actually
       prevents support for stdio builtins, which we however declare as part
       of the common builtins.def contents.  */
!   { "format",     3, 3,  false, true,  true,  fake_attribute_handler, false },
!   { "format_arg", 1, 1,  false, true,  true,  fake_attribute_handler, false },
  
!   { NULL,         0, 0, false, false, false, NULL, false }
  };
  
  /* Associates a GNAT tree node to a GCC tree node. It is used in
--- 101,156 ----
  
  /* Fake handler for attributes we don't properly support, typically because
     they'd require dragging a lot of the common-c front-end circuitry.  */
! static tree fake_attribute_handler (tree *, tree, tree, int, bool *);
  
  /* Table of machine-independent internal attributes for Ada.  We support
     this minimal set of attributes to accommodate the needs of builtins.  */
  const struct attribute_spec gnat_internal_attribute_table[] =
  {
!   /* { name, min_len, max_len, decl_req, type_req, fn_type_req,
!        affects_type_identity, handler, exclude } */
!   { "const",        0, 0,  true,  false, false, false,
!     handle_const_attribute, NULL },
!   { "nothrow",      0, 0,  true,  false, false, false,
!     handle_nothrow_attribute, NULL },
!   { "pure",         0, 0,  true,  false, false, false,
!     handle_pure_attribute, NULL },
!   { "no vops",      0, 0,  true,  false, false, false,
!     handle_novops_attribute, NULL },
!   { "nonnull",      0, -1, false, true,  true,  false,
!     handle_nonnull_attribute, NULL },
!   { "sentinel",     0, 1,  false, true,  true,  false,
!     handle_sentinel_attribute, NULL },
!   { "noreturn",     0, 0,  true,  false, false, false,
!     handle_noreturn_attribute, NULL },
!   { "noinline",     0, 0,  true,  false, false, false,
!     handle_noinline_attribute, NULL },
!   { "noclone",      0, 0,  true,  false, false, false,
!     handle_noclone_attribute, NULL },
!   { "leaf",         0, 0,  true,  false, false, false,
!     handle_leaf_attribute, NULL },
!   { "always_inline",0, 0,  true,  false, false, false,
!     handle_always_inline_attribute, NULL },
!   { "malloc",       0, 0,  true,  false, false, false,
!     handle_malloc_attribute, NULL },
!   { "type generic", 0, 0,  false, true, true, false,
!     handle_type_generic_attribute, NULL },
  
!   { "vector_size",  1, 1,  false, true, false,  false,
!     handle_vector_size_attribute, NULL },
!   { "vector_type",  0, 0,  false, true, false,  false,
!     handle_vector_type_attribute, NULL },
!   { "may_alias",    0, 0, false, true, false, false, NULL, NULL },
  
    /* ??? format and format_arg are heavy and not supported, which actually
       prevents support for stdio builtins, which we however declare as part
       of the common builtins.def contents.  */
!   { "format",     3, 3,  false, true,  true,  false, fake_attribute_handler,
!     NULL },
!   { "format_arg", 1, 1,  false, true,  true,  false, fake_attribute_handler,
!     NULL },
  
!   { NULL,         0, 0, false, false, false, false, NULL, NULL }
  };
  
  /* Associates a GNAT tree node to a GCC tree node. It is used in
*************** static GTY((deletable)) tree free_block_
*** 222,229 ****
  /* A hash table of padded types.  It is modelled on the generic type
     hash table in tree.c, which must thus be used as a reference.  */
  
! struct GTY((for_user)) pad_type_hash {
!   unsigned long hash;
    tree type;
  };
  
--- 224,232 ----
  /* A hash table of padded types.  It is modelled on the generic type
     hash table in tree.c, which must thus be used as a reference.  */
  
! struct GTY((for_user)) pad_type_hash
! {
!   hashval_t hash;
    tree type;
  };
  
*************** struct pad_type_hasher : ggc_cache_ptr_h
*** 231,241 ****
  {
    static inline hashval_t hash (pad_type_hash *t) { return t->hash; }
    static bool equal (pad_type_hash *a, pad_type_hash *b);
!   static int keep_cache_entry (pad_type_hash *&);
  };
  
! static GTY ((cache))
!   hash_table<pad_type_hasher> *pad_type_hash_table;
  
  static tree merge_sizes (tree, tree, tree, bool, bool);
  static tree fold_bit_position (const_tree);
--- 234,248 ----
  {
    static inline hashval_t hash (pad_type_hash *t) { return t->hash; }
    static bool equal (pad_type_hash *a, pad_type_hash *b);
! 
!   static int
!   keep_cache_entry (pad_type_hash *&t)
!   {
!     return ggc_marked_p (t->type);
!   }
  };
  
! static GTY ((cache)) hash_table<pad_type_hasher> *pad_type_hash_table;
  
  static tree merge_sizes (tree, tree, tree, bool, bool);
  static tree fold_bit_position (const_tree);
*************** tree
*** 359,365 ****
  make_dummy_type (Entity_Id gnat_type)
  {
    Entity_Id gnat_equiv = Gigi_Equivalent_Type (Underlying_Type (gnat_type));
!   tree gnu_type;
  
    /* If there was no equivalent type (can only happen when just annotating
       types) or underlying type, go back to the original type.  */
--- 366,372 ----
  make_dummy_type (Entity_Id gnat_type)
  {
    Entity_Id gnat_equiv = Gigi_Equivalent_Type (Underlying_Type (gnat_type));
!   tree gnu_type, debug_type;
  
    /* If there was no equivalent type (can only happen when just annotating
       types) or underlying type, go back to the original type.  */
*************** make_dummy_type (Entity_Id gnat_type)
*** 384,389 ****
--- 391,407 ----
  
    SET_DUMMY_NODE (gnat_equiv, gnu_type);
  
+   /* Create a debug type so that debug info consumers only see an unspecified
+      type.  */
+   if (Needs_Debug_Info (gnat_type))
+     {
+       debug_type = make_node (LANG_TYPE);
+       SET_TYPE_DEBUG_TYPE (gnu_type, debug_type);
+ 
+       TYPE_NAME (debug_type) = TYPE_NAME (gnu_type);
+       TYPE_ARTIFICIAL (debug_type) = TYPE_ARTIFICIAL (gnu_type);
+     }
+ 
    return gnu_type;
  }
  
*************** gnat_pushdecl (tree decl, Node_Id gnat_n
*** 739,745 ****
    TREE_NO_WARNING (decl) = (No (gnat_node) || Warnings_Off (gnat_node));
  
    /* Set the location of DECL and emit a declaration for it.  */
!   if (Present (gnat_node) && !renaming_from_generic_instantiation_p (gnat_node))
      Sloc_to_locus (Sloc (gnat_node), &DECL_SOURCE_LOCATION (decl));
  
    add_decl_expr (decl, gnat_node);
--- 757,763 ----
    TREE_NO_WARNING (decl) = (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))
      Sloc_to_locus (Sloc (gnat_node), &DECL_SOURCE_LOCATION (decl));
  
    add_decl_expr (decl, gnat_node);
*************** gnat_pushdecl (tree decl, Node_Id gnat_n
*** 752,762 ****
    if (!(TREE_CODE (decl) == TYPE_DECL
          && TREE_CODE (TREE_TYPE (decl)) == UNCONSTRAINED_ARRAY_TYPE))
      {
!       if (DECL_EXTERNAL (decl))
! 	{
! 	  if (TREE_CODE (decl) == FUNCTION_DECL && DECL_BUILT_IN (decl))
! 	    vec_safe_push (builtin_decls, decl);
! 	}
        else if (global_bindings_p ())
  	vec_safe_push (global_decls, decl);
        else
--- 770,782 ----
    if (!(TREE_CODE (decl) == TYPE_DECL
          && TREE_CODE (TREE_TYPE (decl)) == UNCONSTRAINED_ARRAY_TYPE))
      {
!       /* External declarations must go to the binding level they belong to.
! 	 This will make corresponding imported entities are available in the
! 	 debugger at the proper time.  */
!       if (DECL_EXTERNAL (decl)
! 	  && TREE_CODE (decl) == FUNCTION_DECL
! 	  && DECL_BUILT_IN (decl))
! 	vec_safe_push (builtin_decls, decl);
        else if (global_bindings_p ())
  	vec_safe_push (global_decls, decl);
        else
*************** make_packable_type (tree type, bool in_r
*** 1063,1069 ****
       in case the record itself contains a BLKmode field.  */
    if (in_record && TYPE_MODE (new_type) == BLKmode)
      SET_TYPE_MODE (new_type,
! 		   mode_for_size_tree (TYPE_SIZE (new_type), MODE_INT, 1));
  
    /* If neither mode nor size nor alignment shrunk, return the old type.  */
    if (TYPE_MODE (new_type) == BLKmode && new_size >= size && max_align == 0)
--- 1083,1090 ----
       in case the record itself contains a BLKmode field.  */
    if (in_record && TYPE_MODE (new_type) == BLKmode)
      SET_TYPE_MODE (new_type,
! 		   mode_for_size_tree (TYPE_SIZE (new_type),
! 				       MODE_INT, 1).else_blk ());
  
    /* If neither mode nor size nor alignment shrunk, return the old type.  */
    if (TYPE_MODE (new_type) == BLKmode && new_size >= size && max_align == 0)
*************** make_type_from_size (tree type, tree siz
*** 1153,1160 ****
  	 may need to return the thin pointer.  */
        if (TYPE_FAT_POINTER_P (type) && size < POINTER_SIZE * 2)
  	{
! 	  machine_mode p_mode = mode_for_size (size, MODE_INT, 0);
! 	  if (!targetm.valid_pointer_mode (p_mode))
  	    p_mode = ptr_mode;
  	  return
  	    build_pointer_type_for_mode
--- 1174,1182 ----
  	 may need to return the thin pointer.  */
        if (TYPE_FAT_POINTER_P (type) && size < POINTER_SIZE * 2)
  	{
! 	  scalar_int_mode p_mode;
! 	  if (!int_mode_for_size (size, 0).exists (&p_mode)
! 	      || !targetm.valid_pointer_mode (p_mode))
  	    p_mode = ptr_mode;
  	  return
  	    build_pointer_type_for_mode
*************** make_type_from_size (tree type, tree siz
*** 1178,1191 ****
    return type;
  }
  
- /* See if the data pointed to by the hash table slot is marked.  */
- 
- int
- pad_type_hasher::keep_cache_entry (pad_type_hash *&t)
- {
-   return ggc_marked_p (t->type);
- }
- 
  /* Return true iff the padded types are equivalent.  */
  
  bool
--- 1200,1205 ----
*************** pad_type_hasher::equal (pad_type_hash *t
*** 1210,1223 ****
      && TYPE_REVERSE_STORAGE_ORDER (type1) == TYPE_REVERSE_STORAGE_ORDER (type2);
  }
  
! /* Look up the padded TYPE in the hash table and return its canonical version
!    if it exists; otherwise, insert it into the hash table.  */
  
! static tree
! lookup_and_insert_pad_type (tree type)
  {
    hashval_t hashcode;
-   struct pad_type_hash in, *h;
  
    hashcode
      = iterative_hash_object (TYPE_HASH (TREE_TYPE (TYPE_FIELDS (type))), 0);
--- 1224,1235 ----
      && TYPE_REVERSE_STORAGE_ORDER (type1) == TYPE_REVERSE_STORAGE_ORDER (type2);
  }
  
! /* Compute the hash value for the padded TYPE.  */
  
! static hashval_t
! hash_pad_type (tree type)
  {
    hashval_t hashcode;
  
    hashcode
      = iterative_hash_object (TYPE_HASH (TREE_TYPE (TYPE_FIELDS (type))), 0);
*************** lookup_and_insert_pad_type (tree type)
*** 1225,1241 ****
    hashcode = iterative_hash_hashval_t (TYPE_ALIGN (type), hashcode);
    hashcode = iterative_hash_expr (TYPE_ADA_SIZE (type), hashcode);
  
    in.hash = hashcode;
    in.type = type;
!   h = pad_type_hash_table->find_with_hash (&in, hashcode);
!   if (h)
!     return h->type;
  
!   h = ggc_alloc<pad_type_hash> ();
!   h->hash = hashcode;
!   h->type = type;
!   *pad_type_hash_table->find_slot_with_hash (h, hashcode, INSERT) = h;
!   return NULL_TREE;
  }
  
  /* Ensure that TYPE has SIZE and ALIGN.  Make and return a new padded type
--- 1237,1267 ----
    hashcode = iterative_hash_hashval_t (TYPE_ALIGN (type), hashcode);
    hashcode = iterative_hash_expr (TYPE_ADA_SIZE (type), hashcode);
  
+   return hashcode;
+ }
+ 
+ /* Look up the padded TYPE in the hash table and return its canonical version
+    if it exists; otherwise, insert it into the hash table.  */
+ 
+ static tree
+ canonicalize_pad_type (tree type)
+ {
+   const hashval_t hashcode = hash_pad_type (type);
+   struct pad_type_hash in, *h, **slot;
+ 
    in.hash = hashcode;
    in.type = type;
!   slot = pad_type_hash_table->find_slot_with_hash (&in, hashcode, INSERT);
!   h = *slot;
!   if (!h)
!     {
!       h = ggc_alloc<pad_type_hash> ();
!       h->hash = hashcode;
!       h->type = type;
!       *slot = h;
!     }
  
!   return h->type;
  }
  
  /* Ensure that TYPE has SIZE and ALIGN.  Make and return a new padded type
*************** maybe_pad_type (tree type, tree size, un
*** 1366,1393 ****
    /* We will output additional debug info manually below.  */
    finish_record_type (record, field, 1, false);
  
-   if (gnat_encodings == DWARF_GNAT_ENCODINGS_MINIMAL)
-     SET_TYPE_DEBUG_TYPE (record, type);
- 
    /* Set the RM size if requested.  */
    if (set_rm_size)
      {
-       tree canonical_pad_type;
- 
        SET_TYPE_ADA_SIZE (record, size ? size : orig_size);
  
        /* If the padded type is complete and has constant size, we canonicalize
  	 it by means of the hash table.  This is consistent with the language
  	 semantics and ensures that gigi and the middle-end have a common view
  	 of these padded types.  */
!       if (TREE_CONSTANT (TYPE_SIZE (record))
! 	  && (canonical_pad_type = lookup_and_insert_pad_type (record)))
  	{
! 	  record = canonical_pad_type;
! 	  goto built;
  	}
      }
  
    /* Unless debugging information isn't being written for the input type,
       write a record that shows what we are a subtype of and also make a
       variable that indicates our size, if still variable.  */
--- 1392,1420 ----
    /* We will output additional debug info manually below.  */
    finish_record_type (record, field, 1, false);
  
    /* Set the RM size if requested.  */
    if (set_rm_size)
      {
        SET_TYPE_ADA_SIZE (record, size ? size : orig_size);
  
        /* If the padded type is complete and has constant size, we canonicalize
  	 it by means of the hash table.  This is consistent with the language
  	 semantics and ensures that gigi and the middle-end have a common view
  	 of these padded types.  */
!       if (TREE_CONSTANT (TYPE_SIZE (record)))
  	{
! 	  tree canonical = canonicalize_pad_type (record);
! 	  if (canonical != record)
! 	    {
! 	      record = canonical;
! 	      goto built;
! 	    }
  	}
      }
  
+   if (gnat_encodings == DWARF_GNAT_ENCODINGS_MINIMAL)
+     SET_TYPE_DEBUG_TYPE (record, type);
+ 
    /* Unless debugging information isn't being written for the input type,
       write a record that shows what we are a subtype of and also make a
       variable that indicates our size, if still variable.  */
*************** built:
*** 1506,1518 ****
    return record;
  }
  
  /* Return a copy of the padded TYPE but with reverse storage order.  */
  
  tree
  set_reverse_storage_order_on_pad_type (tree type)
  {
-   tree field, canonical_pad_type;
- 
    if (flag_checking)
      {
        /* If the inner type is not scalar then the function does nothing.  */
--- 1533,1563 ----
    return record;
  }
  
+ /* Return true if padded TYPE was built with an RM size.  */
+ 
+ bool
+ pad_type_has_rm_size (tree type)
+ {
+   /* This is required for the lookup.  */
+   if (!TREE_CONSTANT (TYPE_SIZE (type)))
+     return false;
+ 
+   const hashval_t hashcode = hash_pad_type (type);
+   struct pad_type_hash in, *h;
+ 
+   in.hash = hashcode;
+   in.type = type;
+   h = pad_type_hash_table->find_with_hash (&in, hashcode);
+ 
+   /* The types built with an RM size are the canonicalized ones.  */
+   return h && h->type == type;
+ }
+ 
  /* Return a copy of the padded TYPE but with reverse storage order.  */
  
  tree
  set_reverse_storage_order_on_pad_type (tree type)
  {
    if (flag_checking)
      {
        /* If the inner type is not scalar then the function does nothing.  */
*************** set_reverse_storage_order_on_pad_type (t
*** 1524,1536 ****
    /* This is required for the canonicalization.  */
    gcc_assert (TREE_CONSTANT (TYPE_SIZE (type)));
  
!   field = copy_node (TYPE_FIELDS (type));
    type = copy_type (type);
    DECL_CONTEXT (field) = type;
    TYPE_FIELDS (type) = field;
    TYPE_REVERSE_STORAGE_ORDER (type) = 1;
!   canonical_pad_type = lookup_and_insert_pad_type (type);
!   return canonical_pad_type ? canonical_pad_type : type;
  }
  
  /* Relate the alias sets of GNU_NEW_TYPE and GNU_OLD_TYPE according to OP.
--- 1569,1580 ----
    /* This is required for the canonicalization.  */
    gcc_assert (TREE_CONSTANT (TYPE_SIZE (type)));
  
!   tree field = copy_node (TYPE_FIELDS (type));
    type = copy_type (type);
    DECL_CONTEXT (field) = type;
    TYPE_FIELDS (type) = field;
    TYPE_REVERSE_STORAGE_ORDER (type) = 1;
!   return canonicalize_pad_type (type);
  }
  
  /* Relate the alias sets of GNU_NEW_TYPE and GNU_OLD_TYPE according to OP.
*************** value_factor_p (tree value, HOST_WIDE_IN
*** 2885,2894 ****
     initialization is likely to disturb debugging.  */
  
  bool
! renaming_from_generic_instantiation_p (Node_Id gnat_node)
  {
    if (Nkind (gnat_node) != N_Defining_Identifier
!       || !IN (Ekind (gnat_node), Object_Kind)
        || Comes_From_Source (gnat_node)
        || !Present (Renamed_Object (gnat_node)))
      return false;
--- 2929,2938 ----
     initialization is likely to disturb debugging.  */
  
  bool
! renaming_from_instantiation_p (Node_Id gnat_node)
  {
    if (Nkind (gnat_node) != N_Defining_Identifier
!       || !Is_Object (gnat_node)
        || Comes_From_Source (gnat_node)
        || !Present (Renamed_Object (gnat_node)))
      return false;
*************** process_deferred_decl_context (bool forc
*** 2981,2987 ****
    struct deferred_decl_context_node **it = &deferred_decl_context_queue;
    struct deferred_decl_context_node *node;
  
!   while (*it != NULL)
      {
        bool processed = false;
        tree context = NULL_TREE;
--- 3025,3031 ----
    struct deferred_decl_context_node **it = &deferred_decl_context_queue;
    struct deferred_decl_context_node *node;
  
!   while (*it)
      {
        bool processed = false;
        tree context = NULL_TREE;
*************** process_deferred_decl_context (bool forc
*** 2989,2995 ****
  
        node = *it;
  
!       /* If FORCE, get the innermost elaborated scope. Otherwise, just try to
  	 get the first scope.  */
        gnat_scope = node->gnat_scope;
        while (Present (gnat_scope))
--- 3033,3039 ----
  
        node = *it;
  
!       /* If FORCE, get the innermost elaborated scope.  Otherwise, just try to
  	 get the first scope.  */
        gnat_scope = node->gnat_scope;
        while (Present (gnat_scope))
*************** process_deferred_decl_context (bool forc
*** 3047,3053 ****
      }
  }
  
- 
  /* Return VALUE scaled by the biggest power-of-2 factor of EXPR.  */
  
  static unsigned int
--- 3091,3096 ----
*************** create_label_decl (tree name, Node_Id gn
*** 3179,3184 ****
--- 3222,3229 ----
  
     DEBUG_INFO_P is true if we need to write debug information for it.
  
+    DEFINITION is true if the subprogram is to be considered as a definition.
+ 
     ATTR_LIST is the list of attributes to be attached to the subprogram.
  
     GNAT_NODE is used for the position of the decl.  */
*************** tree
*** 3187,3193 ****
  create_subprog_decl (tree name, tree asm_name, tree type, tree param_decl_list,
  		     enum inline_status_t inline_status, bool public_flag,
  		     bool extern_flag, bool artificial_p, bool debug_info_p,
! 		     struct attrib *attr_list, Node_Id gnat_node)
  {
    tree subprog_decl = build_decl (input_location, FUNCTION_DECL, name, type);
    DECL_ARGUMENTS (subprog_decl) = param_decl_list;
--- 3232,3239 ----
  create_subprog_decl (tree name, tree asm_name, tree type, tree param_decl_list,
  		     enum inline_status_t inline_status, bool public_flag,
  		     bool extern_flag, bool artificial_p, bool debug_info_p,
! 		     bool definition, struct attrib *attr_list,
! 		     Node_Id gnat_node)
  {
    tree subprog_decl = build_decl (input_location, FUNCTION_DECL, name, type);
    DECL_ARGUMENTS (subprog_decl) = param_decl_list;
*************** create_subprog_decl (tree name, tree asm
*** 3198,3203 ****
--- 3244,3251 ----
  
    if (!debug_info_p)
      DECL_IGNORED_P (subprog_decl) = 1;
+   if (definition)
+     DECL_FUNCTION_IS_DEF (subprog_decl) = 1;
  
    switch (inline_status)
      {
*************** create_subprog_decl (tree name, tree asm
*** 3210,3219 ****
  
      case is_required:
        if (Back_End_Inlining)
! 	decl_attributes (&subprog_decl,
! 			 tree_cons (get_identifier ("always_inline"),
! 				    NULL_TREE, NULL_TREE),
! 			 ATTR_FLAG_TYPE_IN_PLACE);
  
        /* ... fall through ... */
  
--- 3258,3276 ----
  
      case is_required:
        if (Back_End_Inlining)
! 	{
! 	  decl_attributes (&subprog_decl,
! 			   tree_cons (get_identifier ("always_inline"),
! 				      NULL_TREE, NULL_TREE),
! 			   ATTR_FLAG_TYPE_IN_PLACE);
! 
! 	  /* Inline_Always guarantees that every direct call is inlined and
! 	     that there is no indirect reference to the subprogram, so the
! 	     instance in the original package (as well as its clones in the
! 	     client packages created for inter-unit inlining) can be made
! 	     private, which causes the out-of-line body to be eliminated.  */
! 	  TREE_PUBLIC (subprog_decl) = 0;
! 	}
  
        /* ... fall through ... */
  
*************** gnat_type_for_size (unsigned precision,
*** 3384,3389 ****
--- 3441,3447 ----
      t = make_unsigned_type (precision);
    else
      t = make_signed_type (precision);
+   TYPE_ARTIFICIAL (t) = 1;
  
    if (precision <= 2 * MAX_BITS_PER_WORD)
      signed_and_unsigned_types[precision][unsignedp] = t;
*************** gnat_type_for_mode (machine_mode mode, i
*** 3437,3447 ****
    if (COMPLEX_MODE_P (mode))
      return NULL_TREE;
  
!   if (SCALAR_FLOAT_MODE_P (mode))
!     return float_type_for_precision (GET_MODE_PRECISION (mode), mode);
  
!   if (SCALAR_INT_MODE_P (mode))
!     return gnat_type_for_size (GET_MODE_BITSIZE (mode), unsignedp);
  
    if (VECTOR_MODE_P (mode))
      {
--- 3495,3508 ----
    if (COMPLEX_MODE_P (mode))
      return NULL_TREE;
  
!   scalar_float_mode float_mode;
!   if (is_a <scalar_float_mode> (mode, &float_mode))
!     return float_type_for_precision (GET_MODE_PRECISION (float_mode),
! 				     float_mode);
  
!   scalar_int_mode int_mode;
!   if (is_a <scalar_int_mode> (mode, &int_mode))
!     return gnat_type_for_size (GET_MODE_BITSIZE (int_mode), unsignedp);
  
    if (VECTOR_MODE_P (mode))
      {
*************** gnat_types_compatible_p (tree t1, tree t
*** 3500,3506 ****
    /* Vector types are also compatible if they have the same number of subparts
       and the same form of (scalar) element type.  */
    if (code == VECTOR_TYPE
!       && TYPE_VECTOR_SUBPARTS (t1) == TYPE_VECTOR_SUBPARTS (t2)
        && TREE_CODE (TREE_TYPE (t1)) == TREE_CODE (TREE_TYPE (t2))
        && TYPE_PRECISION (TREE_TYPE (t1)) == TYPE_PRECISION (TREE_TYPE (t2)))
      return 1;
--- 3561,3567 ----
    /* Vector types are also compatible if they have the same number of subparts
       and the same form of (scalar) element type.  */
    if (code == VECTOR_TYPE
!       && known_eq (TYPE_VECTOR_SUBPARTS (t1), TYPE_VECTOR_SUBPARTS (t2))
        && TREE_CODE (TREE_TYPE (t1)) == TREE_CODE (TREE_TYPE (t2))
        && TYPE_PRECISION (TREE_TYPE (t1)) == TYPE_PRECISION (TREE_TYPE (t2)))
      return 1;
*************** max_size (tree exp, bool max_p)
*** 3567,3572 ****
--- 3628,3637 ----
      case tcc_constant:
        return exp;
  
+     case tcc_exceptional:
+       gcc_assert (code == SSA_NAME);
+       return exp;
+ 
      case tcc_vl_exp:
        if (code == CALL_EXPR)
  	{
*************** convert (tree type, tree expr)
*** 4191,4198 ****
       constructor to build the record, unless a variable size is involved.  */
    else if (code == RECORD_TYPE && TYPE_PADDING_P (type))
      {
-       vec<constructor_elt, va_gc> *v;
- 
        /* If we previously converted from another type and our type is
  	 of variable size, remove the conversion to avoid the need for
  	 variable-sized temporaries.  Likewise for a conversion between
--- 4256,4261 ----
*************** convert (tree type, tree expr)
*** 4219,4228 ****
  	return convert (type, TREE_OPERAND (expr, 0));
  
        /* If the inner type is of self-referential size and the expression type
! 	 is a record, do this as an unchecked conversion.  But first pad the
! 	 expression if possible to have the same size on both sides.  */
        if (ecode == RECORD_TYPE
! 	  && CONTAINS_PLACEHOLDER_P (DECL_SIZE (TYPE_FIELDS (type))))
  	{
  	  if (TREE_CODE (TYPE_SIZE (etype)) == INTEGER_CST)
  	    expr = convert (maybe_pad_type (etype, TYPE_SIZE (type), 0, Empty,
--- 4282,4294 ----
  	return convert (type, TREE_OPERAND (expr, 0));
  
        /* If the inner type is of self-referential size and the expression type
! 	 is a record, do this as an unchecked conversion unless both types are
! 	 essentially the same.  But first pad the expression if possible to
! 	 have the same size on both sides.  */
        if (ecode == RECORD_TYPE
! 	  && CONTAINS_PLACEHOLDER_P (DECL_SIZE (TYPE_FIELDS (type)))
! 	  && TYPE_MAIN_VARIANT (etype)
! 	     != TYPE_MAIN_VARIANT (TREE_TYPE (TYPE_FIELDS (type))))
  	{
  	  if (TREE_CODE (TYPE_SIZE (etype)) == INTEGER_CST)
  	    expr = convert (maybe_pad_type (etype, TYPE_SIZE (type), 0, Empty,
*************** convert (tree type, tree expr)
*** 4244,4252 ****
  					   expr),
  				  false);
  
        vec_alloc (v, 1);
!       CONSTRUCTOR_APPEND_ELT (v, TYPE_FIELDS (type),
! 			      convert (TREE_TYPE (TYPE_FIELDS (type)), expr));
        return gnat_build_constructor (type, v);
      }
  
--- 4310,4330 ----
  					   expr),
  				  false);
  
+       tree t = convert (TREE_TYPE (TYPE_FIELDS (type)), expr);
+ 
+       /* If converting to the inner type has already created a CONSTRUCTOR with
+          the right size, then reuse it instead of creating another one.  This
+          can happen for the padding type built to overalign local variables.  */
+       if (TREE_CODE (t) == VIEW_CONVERT_EXPR
+ 	  && TREE_CODE (TREE_OPERAND (t, 0)) == CONSTRUCTOR
+ 	  && TREE_CONSTANT (TYPE_SIZE (TREE_TYPE (TREE_OPERAND (t, 0))))
+ 	  && tree_int_cst_equal (TYPE_SIZE (type),
+ 				 TYPE_SIZE (TREE_TYPE (TREE_OPERAND (t, 0)))))
+ 	return build1 (VIEW_CONVERT_EXPR, type, TREE_OPERAND (t, 0));
+ 
+       vec<constructor_elt, va_gc> *v;
        vec_alloc (v, 1);
!       CONSTRUCTOR_APPEND_ELT (v, TYPE_FIELDS (type), t);
        return gnat_build_constructor (type, v);
      }
  
*************** can_materialize_object_renaming_p (Node_
*** 5436,5446 ****
  {
    while (true)
      {
        switch Nkind (expr)
  	{
  	case N_Identifier:
  	case N_Expanded_Name:
! 	  return true;
  
  	case N_Selected_Component:
  	  {
--- 5514,5529 ----
  {
    while (true)
      {
+       expr = Original_Node (expr);
+ 
        switch Nkind (expr)
  	{
  	case N_Identifier:
  	case N_Expanded_Name:
! 	  if (!Present (Renamed_Object (Entity (expr))))
! 	    return true;
! 	  expr = Renamed_Object (Entity (expr));
! 	  break;
  
  	case N_Selected_Component:
  	  {
*************** gnat_write_global_declarations (void)
*** 5523,5532 ****
      if (TREE_CODE (iter) == TYPE_DECL && !DECL_IGNORED_P (iter))
        debug_hooks->type_decl (iter, false);
  
    /* Then output the global variables.  We need to do that after the debug
!      information for global types is emitted so that they are finalized.  */
    FOR_EACH_VEC_SAFE_ELT (global_decls, i, iter)
!     if (TREE_CODE (iter) == VAR_DECL)
        rest_of_decl_compilation (iter, true, 0);
  
    /* Output the imported modules/declarations.  In GNAT, these are only
--- 5606,5627 ----
      if (TREE_CODE (iter) == TYPE_DECL && !DECL_IGNORED_P (iter))
        debug_hooks->type_decl (iter, false);
  
+   /* Output imported functions.  */
+   FOR_EACH_VEC_SAFE_ELT (global_decls, i, iter)
+     if (TREE_CODE (iter) == FUNCTION_DECL
+ 	&& DECL_EXTERNAL (iter)
+ 	&& DECL_INITIAL (iter) == NULL
+ 	&& !DECL_IGNORED_P (iter)
+ 	&& DECL_FUNCTION_IS_DEF (iter))
+       debug_hooks->early_global_decl (iter);
+ 
    /* Then output the global variables.  We need to do that after the debug
!      information for global types is emitted so that they are finalized.  Skip
!      external global variables, unless we need to emit debug info for them:
!      this is useful for imported variables, for instance.  */
    FOR_EACH_VEC_SAFE_ELT (global_decls, i, iter)
!     if (TREE_CODE (iter) == VAR_DECL
! 	&& (!DECL_EXTERNAL (iter) || !DECL_IGNORED_P (iter)))
        rest_of_decl_compilation (iter, true, 0);
  
    /* Output the imported modules/declarations.  In GNAT, these are only
*************** gnat_write_global_declarations (void)
*** 5534,5540 ****
    FOR_EACH_VEC_SAFE_ELT (global_decls, i, iter)
     if (TREE_CODE (iter) == IMPORTED_DECL && !DECL_IGNORED_P (iter))
       debug_hooks->imported_module_or_decl (iter, DECL_NAME (iter),
! 					   DECL_CONTEXT (iter), 0);
  }
  
  /* ************************************************************************
--- 5629,5635 ----
    FOR_EACH_VEC_SAFE_ELT (global_decls, i, iter)
     if (TREE_CODE (iter) == IMPORTED_DECL && !DECL_IGNORED_P (iter))
       debug_hooks->imported_module_or_decl (iter, DECL_NAME (iter),
! 					   DECL_CONTEXT (iter), false, false);
  }
  
  /* ************************************************************************
*************** def_builtin_1 (enum built_in_function fn
*** 6348,6353 ****
--- 6443,6451 ----
    if (builtin_decl_explicit (fncode))
      return;
  
+   if (fntype == error_mark_node)
+     return;
+ 
    gcc_assert ((!both_p && !fallback_p)
  	      || !strncmp (name, "__builtin_",
  			   strlen ("__builtin_")));
diff -Nrcpad gcc-7.3.0/gcc/ada/gcc-interface/utils2.c gcc-8.1.0/gcc/ada/gcc-interface/utils2.c
*** gcc-7.3.0/gcc/ada/gcc-interface/utils2.c	Sun Nov 13 18:08:25 2016
--- gcc-8.1.0/gcc/ada/gcc-interface/utils2.c	Thu Dec 21 06:57:41 2017
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2016, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  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-2017, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is 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_load_modify_store (tree dest, tree
*** 800,806 ****
  		{
  		  unsigned int size = tree_to_uhwi (TYPE_SIZE (type));
  		  type = copy_type (type);
! 		  SET_TYPE_MODE (type, mode_for_size (size, MODE_INT, 0));
  		}
  
  	      /* Create the temporary by inserting a SAVE_EXPR.  */
--- 800,807 ----
  		{
  		  unsigned int size = tree_to_uhwi (TYPE_SIZE (type));
  		  type = copy_type (type);
! 		  machine_mode mode = int_mode_for_size (size, 0).else_blk ();
! 		  SET_TYPE_MODE (type, mode);
  		}
  
  	      /* Create the temporary by inserting a SAVE_EXPR.  */
*************** build_unary_op (enum tree_code op_code,
*** 1438,1445 ****
  	       the offset to the field.  Otherwise, do this the normal way.  */
  	  if (op_code == ATTR_ADDR_EXPR)
  	    {
! 	      HOST_WIDE_INT bitsize;
! 	      HOST_WIDE_INT bitpos;
  	      tree offset, inner;
  	      machine_mode mode;
  	      int unsignedp, reversep, volatilep;
--- 1439,1446 ----
  	       the offset to the field.  Otherwise, do this the normal way.  */
  	  if (op_code == ATTR_ADDR_EXPR)
  	    {
! 	      poly_int64 bitsize;
! 	      poly_int64 bitpos;
  	      tree offset, inner;
  	      machine_mode mode;
  	      int unsignedp, reversep, volatilep;
*************** build_unary_op (enum tree_code op_code,
*** 1459,1466 ****
  	      if (!offset)
  		offset = size_zero_node;
  
! 	      offset = size_binop (PLUS_EXPR, offset,
! 				   size_int (bitpos / BITS_PER_UNIT));
  
  	      /* Take the address of INNER, convert it to a pointer to our type
  		 and add the offset.  */
--- 1460,1468 ----
  	      if (!offset)
  		offset = size_zero_node;
  
! 	      offset
! 		= size_binop (PLUS_EXPR, offset,
! 			      size_int (bits_to_bytes_round_down (bitpos)));
  
  	      /* Take the address of INNER, convert it to a pointer to our type
  		 and add the offset.  */
*************** build_call_n_expr (tree fndecl, int n, .
*** 1786,1794 ****
     MSG gives the exception's identity for the call to Local_Raise, if any.  */
  
  static tree
! build_goto_raise (tree label, int msg)
  {
!   tree gnu_result = build1 (GOTO_EXPR, void_type_node, label);
    Entity_Id local_raise = Get_Local_Raise_Call_Entity ();
  
    /* If Local_Raise is present, build Local_Raise (Exception'Identity).  */
--- 1788,1797 ----
     MSG gives the exception's identity for the call to Local_Raise, if any.  */
  
  static tree
! build_goto_raise (Entity_Id gnat_label, int msg)
  {
!   tree gnu_label = gnat_to_gnu_entity (gnat_label, NULL_TREE, false);
!   tree gnu_result = build1 (GOTO_EXPR, void_type_node, gnu_label);
    Entity_Id local_raise = Get_Local_Raise_Call_Entity ();
  
    /* If Local_Raise is present, build Local_Raise (Exception'Identity).  */
*************** build_goto_raise (tree label, int msg)
*** 1806,1811 ****
--- 1809,1815 ----
  	= build2 (COMPOUND_EXPR, void_type_node, gnu_call, gnu_result);
      }
  
+   TREE_USED (gnu_label) = 1;
    return gnu_result;
  }
  
*************** expand_sloc (Node_Id gnat_node, tree *fi
*** 1858,1870 ****
  tree
  build_call_raise (int msg, Node_Id gnat_node, char kind)
  {
    tree fndecl = gnat_raise_decls[msg];
-   tree label = get_exception_label (kind);
    tree filename, line;
  
    /* If this is to be done as a goto, handle that case.  */
!   if (label)
!     return build_goto_raise (label, msg);
  
    expand_sloc (gnat_node, &filename, &line, NULL);
  
--- 1862,1874 ----
  tree
  build_call_raise (int msg, Node_Id gnat_node, char kind)
  {
+   Entity_Id gnat_label = get_exception_label (kind);
    tree fndecl = gnat_raise_decls[msg];
    tree filename, line;
  
    /* If this is to be done as a goto, handle that case.  */
!   if (Present (gnat_label))
!     return build_goto_raise (gnat_label, msg);
  
    expand_sloc (gnat_node, &filename, &line, NULL);
  
*************** build_call_raise (int msg, Node_Id gnat_
*** 1882,1894 ****
  tree
  build_call_raise_column (int msg, Node_Id gnat_node, char kind)
  {
    tree fndecl = gnat_raise_decls_ext[msg];
-   tree label = get_exception_label (kind);
    tree filename, line, col;
  
    /* If this is to be done as a goto, handle that case.  */
!   if (label)
!     return build_goto_raise (label, msg);
  
    expand_sloc (gnat_node, &filename, &line, &col);
  
--- 1886,1898 ----
  tree
  build_call_raise_column (int msg, Node_Id gnat_node, char kind)
  {
+   Entity_Id gnat_label = get_exception_label (kind);
    tree fndecl = gnat_raise_decls_ext[msg];
    tree filename, line, col;
  
    /* If this is to be done as a goto, handle that case.  */
!   if (Present (gnat_label))
!     return build_goto_raise (gnat_label, msg);
  
    expand_sloc (gnat_node, &filename, &line, &col);
  
*************** tree
*** 1907,1919 ****
  build_call_raise_range (int msg, Node_Id gnat_node, char kind,
  			tree index, tree first, tree last)
  {
    tree fndecl = gnat_raise_decls_ext[msg];
-   tree label = get_exception_label (kind);
    tree filename, line, col;
  
    /* If this is to be done as a goto, handle that case.  */
!   if (label)
!     return build_goto_raise (label, msg);
  
    expand_sloc (gnat_node, &filename, &line, &col);
  
--- 1911,1923 ----
  build_call_raise_range (int msg, Node_Id gnat_node, char kind,
  			tree index, tree first, tree last)
  {
+   Entity_Id gnat_label = get_exception_label (kind);
    tree fndecl = gnat_raise_decls_ext[msg];
    tree filename, line, col;
  
    /* If this is to be done as a goto, handle that case.  */
!   if (Present (gnat_label))
!     return build_goto_raise (gnat_label, msg);
  
    expand_sloc (gnat_node, &filename, &line, &col);
  
*************** build_call_raise_range (int msg, Node_Id
*** 1934,1941 ****
  static int
  compare_elmt_bitpos (const PTR rt1, const PTR rt2)
  {
!   const constructor_elt * const elmt1 = (const constructor_elt * const) rt1;
!   const constructor_elt * const elmt2 = (const constructor_elt * const) rt2;
    const_tree const field1 = elmt1->index;
    const_tree const field2 = elmt2->index;
    const int ret
--- 1938,1945 ----
  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;
    const_tree const field1 = elmt1->index;
    const_tree const field2 = elmt2->index;
    const int ret
*************** build_allocator (tree type, tree init, t
*** 2349,2354 ****
--- 2353,2364 ----
    if (init && TREE_CODE (init) == NULL_EXPR)
      return build1 (NULL_EXPR, result_type, TREE_OPERAND (init, 0));
  
+   /* If we are just annotating types, also return a NULL_EXPR.  */
+   else if (type_annotate_only)
+     return build1 (NULL_EXPR, result_type,
+ 		   build_call_raise (CE_Range_Check_Failed, gnat_node,
+ 				     N_Raise_Constraint_Error));
+ 
    /* If the initializer, if present, is a COND_EXPR, deal with each branch.  */
    else if (init && TREE_CODE (init) == COND_EXPR)
      return build3 (COND_EXPR, result_type, TREE_OPERAND (init, 0),
diff -Nrcpad gcc-7.3.0/gcc/ada/get_scos.adb gcc-8.1.0/gcc/ada/get_scos.adb
*** gcc-7.3.0/gcc/ada/get_scos.adb	Fri Jan 13 10:19:19 2017
--- gcc-8.1.0/gcc/ada/get_scos.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2009-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or 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-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/get_scos.ads gcc-8.1.0/gcc/ada/get_scos.ads
*** gcc-7.3.0/gcc/ada/get_scos.ads	Tue Aug  2 14:54:14 2011
--- gcc-8.1.0/gcc/ada/get_scos.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2011, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or 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-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/get_spark_xrefs.adb gcc-8.1.0/gcc/ada/get_spark_xrefs.adb
*** gcc-7.3.0/gcc/ada/get_spark_xrefs.adb	Fri Jan 13 10:19:19 2017
--- gcc-8.1.0/gcc/ada/get_spark_xrefs.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,493 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                       G E T _ S P A R K _ X R E F S                      --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2011-2016, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 SPARK_Xrefs; use SPARK_Xrefs;
- with Types;       use Types;
- 
- with Ada.IO_Exceptions; use Ada.IO_Exceptions;
- 
- procedure Get_SPARK_Xrefs is
-    C : Character;
- 
-    use ASCII;
-    --  For CR/LF
- 
-    Cur_File : Nat;
-    --  Dependency number for the current file
- 
-    Cur_Scope : Nat;
-    --  Scope number for the current scope entity
- 
-    Cur_File_Idx : File_Index;
-    --  Index in SPARK_File_Table of the current file
- 
-    Cur_Scope_Idx : Scope_Index;
-    --  Index in SPARK_Scope_Table of the current scope
- 
-    Name_Str : String (1 .. 32768);
-    Name_Len : Natural := 0;
-    --  Local string used to store name of File/entity scanned as
-    --  Name_Str (1 .. Name_Len).
- 
-    File_Name : String_Ptr;
-    Unit_File_Name : String_Ptr;
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    function At_EOL return Boolean;
-    --  Skips any spaces, then checks if at the end of a line. If so, returns
-    --  True (but does not skip the EOL sequence). If not, then returns False.
- 
-    procedure Check (C : Character);
-    --  Checks that file is positioned at given character, and if so skips past
-    --  it, If not, raises Data_Error.
- 
-    function Get_Nat return Nat;
-    --  On entry the file is positioned to a digit. On return, the file is
-    --  positioned past the last digit, and the returned result is the decimal
-    --  value read. Data_Error is raised for overflow (value greater than
-    --  Int'Last), or if the initial character is not a digit.
- 
-    procedure Get_Name;
-    --  On entry the file is positioned to a name. On return, the file is
-    --  positioned past the last character, and the name scanned is returned
-    --  in Name_Str (1 .. Name_Len).
- 
-    procedure Skip_EOL;
-    --  Called with the current character about to be read being LF or CR. Skips
-    --  past CR/LF characters until either a non-CR/LF character is found, or
-    --  the end of file is encountered.
- 
-    procedure Skip_Spaces;
-    --  Skips zero or more spaces at the current position, leaving the file
-    --  positioned at the first non-blank character (or Types.EOF).
- 
-    ------------
-    -- At_EOL --
-    ------------
- 
-    function At_EOL return Boolean is
-    begin
-       Skip_Spaces;
-       return Nextc = CR or else Nextc = LF;
-    end At_EOL;
- 
-    -----------
-    -- Check --
-    -----------
- 
-    procedure Check (C : Character) is
-    begin
-       if Nextc = C then
-          Skipc;
-       else
-          raise Data_Error;
-       end if;
-    end Check;
- 
-    -------------
-    -- Get_Nat --
-    -------------
- 
-    function Get_Nat return Nat is
-       C   : Character := Nextc;
-       Val : Nat := 0;
- 
-    begin
-       if C not in '0' .. '9' then
-          raise Data_Error;
-       end if;
- 
-       --  Loop to read digits of integer value
- 
-       loop
-          declare
-             pragma Unsuppress (Overflow_Check);
-          begin
-             Val := Val * 10 + (Character'Pos (C) - Character'Pos ('0'));
-          end;
- 
-          Skipc;
-          C := Nextc;
- 
-          exit when C not in '0' .. '9';
-       end loop;
- 
-       return Val;
- 
-    exception
-       when Constraint_Error =>
-          raise Data_Error;
-    end Get_Nat;
- 
-    --------------
-    -- Get_Name --
-    --------------
- 
-    procedure Get_Name is
-       N : Natural := 0;
- 
-    begin
-       while Nextc > ' ' loop
-          N := N + 1;
-          Name_Str (N) := Getc;
-       end loop;
- 
-       Name_Len := N;
-    end Get_Name;
- 
-    --------------
-    -- Skip_EOL --
-    --------------
- 
-    procedure Skip_EOL is
-       C : Character;
- 
-    begin
-       loop
-          Skipc;
-          C := Nextc;
-          exit when C /= LF and then C /= CR;
- 
-          if C = ' ' then
-             Skip_Spaces;
-             C := Nextc;
-             exit when C /= LF and then C /= CR;
-          end if;
-       end loop;
-    end Skip_EOL;
- 
-    -----------------
-    -- Skip_Spaces --
-    -----------------
- 
-    procedure Skip_Spaces is
-    begin
-       while Nextc = ' ' loop
-          Skipc;
-       end loop;
-    end Skip_Spaces;
- 
- --  Start of processing for Get_SPARK_Xrefs
- 
- begin
-    Initialize_SPARK_Tables;
- 
-    Cur_File      := 0;
-    Cur_Scope     := 0;
-    Cur_File_Idx  := 1;
-    Cur_Scope_Idx := 0;
- 
-    --  Loop through lines of SPARK cross-reference information
- 
-    while Nextc = 'F' loop
-       Skipc;
- 
-       C := Getc;
- 
-       --  Make sure first line is a File line
- 
-       if SPARK_File_Table.Last = 0 and then C /= 'D' then
-          raise Data_Error;
-       end if;
- 
-       --  Otherwise dispatch on type of line
- 
-       case C is
- 
-          --  Header entry for scope section
- 
-          when 'D' =>
- 
-             --  Complete previous entry if any
- 
-             if SPARK_File_Table.Last /= 0 then
-                SPARK_File_Table.Table (SPARK_File_Table.Last).To_Scope :=
-                  SPARK_Scope_Table.Last;
-             end if;
- 
-             --  Scan out dependency number and file name
- 
-             Skip_Spaces;
-             Cur_File := Get_Nat;
-             Skip_Spaces;
- 
-             Get_Name;
-             File_Name := new String'(Name_Str (1 .. Name_Len));
-             Skip_Spaces;
- 
-             --  Scan out unit file name when present (for subunits)
- 
-             if Nextc = '-' then
-                Skipc;
-                Check ('>');
-                Skip_Spaces;
-                Get_Name;
-                Unit_File_Name := new String'(Name_Str (1 .. Name_Len));
- 
-             else
-                Unit_File_Name := null;
-             end if;
- 
-             --  Make new File table entry (will fill in To_Scope later)
- 
-             SPARK_File_Table.Append (
-               (File_Name      => File_Name,
-                Unit_File_Name => Unit_File_Name,
-                File_Num       => Cur_File,
-                From_Scope     => SPARK_Scope_Table.Last + 1,
-                To_Scope       => 0));
- 
-             --  Initialize counter for scopes
- 
-             Cur_Scope := 1;
- 
-          --  Scope entry
- 
-          when 'S' =>
-             declare
-                Spec_File  : Nat;
-                Spec_Scope : Nat;
-                Scope      : Nat;
-                Line       : Nat;
-                Col        : Nat;
-                Typ        : Character;
- 
-             begin
-                --  Scan out location
- 
-                Skip_Spaces;
-                Check ('.');
-                Scope := Get_Nat;
-                Check (' ');
-                Line  := Get_Nat;
-                Typ   := Getc;
-                Col   := Get_Nat;
- 
-                pragma Assert (Scope = Cur_Scope);
- 
-                --  Scan out scope entity name
- 
-                Skip_Spaces;
-                Get_Name;
-                Skip_Spaces;
- 
-                if Nextc = '-' then
-                   Skipc;
-                   Check ('>');
-                   Skip_Spaces;
-                   Spec_File := Get_Nat;
-                   Check ('.');
-                   Spec_Scope := Get_Nat;
- 
-                else
-                   Spec_File  := 0;
-                   Spec_Scope := 0;
-                end if;
- 
-                --  Make new scope table entry (will fill in From_Xref and
-                --  To_Xref later). Initial range (From_Xref .. To_Xref) is
-                --  empty for scopes without entities.
- 
-                SPARK_Scope_Table.Append (
-                  (Scope_Entity   => Empty,
-                   Scope_Name     => new String'(Name_Str (1 .. Name_Len)),
-                   File_Num       => Cur_File,
-                   Scope_Num      => Cur_Scope,
-                   Spec_File_Num  => Spec_File,
-                   Spec_Scope_Num => Spec_Scope,
-                   Line           => Line,
-                   Stype          => Typ,
-                   Col            => Col,
-                   From_Xref      => 1,
-                   To_Xref        => 0));
-             end;
- 
-             --  Update counter for scopes
- 
-             Cur_Scope := Cur_Scope + 1;
- 
-          --  Header entry for cross-ref section
- 
-          when 'X' =>
- 
-             --  Scan out dependency number and file name (ignored)
- 
-             Skip_Spaces;
-             Cur_File := Get_Nat;
-             Skip_Spaces;
-             Get_Name;
- 
-             --  Update component From_Xref of current file if first reference
-             --  in this file.
- 
-             while SPARK_File_Table.Table (Cur_File_Idx).File_Num /= Cur_File
-             loop
-                Cur_File_Idx := Cur_File_Idx + 1;
-             end loop;
- 
-             --  Scan out scope entity number and entity name (ignored)
- 
-             Skip_Spaces;
-             Check ('.');
-             Cur_Scope := Get_Nat;
-             Skip_Spaces;
-             Get_Name;
- 
-             --  Update component To_Xref of previous scope
- 
-             if Cur_Scope_Idx /= 0 then
-                SPARK_Scope_Table.Table (Cur_Scope_Idx).To_Xref :=
-                  SPARK_Xref_Table.Last;
-             end if;
- 
-             --  Update component From_Xref of current scope
- 
-             Cur_Scope_Idx := SPARK_File_Table.Table (Cur_File_Idx).From_Scope;
- 
-             while SPARK_Scope_Table.Table (Cur_Scope_Idx).Scope_Num /=
-               Cur_Scope
-             loop
-                Cur_Scope_Idx := Cur_Scope_Idx + 1;
-             end loop;
- 
-             SPARK_Scope_Table.Table (Cur_Scope_Idx).From_Xref :=
-               SPARK_Xref_Table.Last + 1;
- 
-          --  Cross reference entry
- 
-          when ' ' =>
-             declare
-                XR_Entity      : String_Ptr;
-                XR_Entity_Line : Nat;
-                XR_Entity_Col  : Nat;
-                XR_Entity_Typ  : Character;
- 
-                XR_File : Nat;
-                --  Keeps track of the current file (changed by nn|)
- 
-                XR_Scope : Nat;
-                --  Keeps track of the current scope (changed by nn:)
- 
-             begin
-                XR_File  := Cur_File;
-                XR_Scope := Cur_Scope;
- 
-                XR_Entity_Line := Get_Nat;
-                XR_Entity_Typ  := Getc;
-                XR_Entity_Col  := Get_Nat;
- 
-                Skip_Spaces;
-                Get_Name;
-                XR_Entity := new String'(Name_Str (1 .. Name_Len));
- 
-                --  Initialize to scan items on one line
- 
-                Skip_Spaces;
- 
-                --  Loop through cross-references for this entity
- 
-                loop
-                   declare
-                      Line  : Nat;
-                      Col   : Nat;
-                      N     : Nat;
-                      Rtype : Character;
- 
-                   begin
-                      Skip_Spaces;
- 
-                      if At_EOL then
-                         Skip_EOL;
-                         exit when Nextc /= '.';
-                         Skipc;
-                         Skip_Spaces;
-                      end if;
- 
-                      if Nextc = '.' then
-                         Skipc;
-                         XR_Scope := Get_Nat;
-                         Check (':');
- 
-                      else
-                         N := Get_Nat;
- 
-                         if Nextc = '|' then
-                            XR_File := N;
-                            Skipc;
- 
-                         else
-                            Line  := N;
-                            Rtype := Getc;
-                            Col   := Get_Nat;
- 
-                            pragma Assert
-                              (Rtype = 'r' or else
-                               Rtype = 'c' or else
-                               Rtype = 'm' or else
-                               Rtype = 's');
- 
-                            SPARK_Xref_Table.Append (
-                              (Entity_Name => XR_Entity,
-                               Entity_Line => XR_Entity_Line,
-                               Etype       => XR_Entity_Typ,
-                               Entity_Col  => XR_Entity_Col,
-                               File_Num    => XR_File,
-                               Scope_Num   => XR_Scope,
-                               Line        => Line,
-                               Rtype       => Rtype,
-                               Col         => Col));
-                         end if;
-                      end if;
-                   end;
-                end loop;
-             end;
- 
-          --  No other SPARK lines are possible
- 
-          when others =>
-             raise Data_Error;
-       end case;
- 
-       --  For cross reference lines, the EOL character has been skipped already
- 
-       if C /= ' ' then
-          Skip_EOL;
-       end if;
-    end loop;
- 
-    --  Here with all Xrefs stored, complete last entries in File/Scope tables
- 
-    if SPARK_File_Table.Last /= 0 then
-       SPARK_File_Table.Table (SPARK_File_Table.Last).To_Scope :=
-         SPARK_Scope_Table.Last;
-    end if;
- 
-    if Cur_Scope_Idx /= 0 then
-       SPARK_Scope_Table.Table (Cur_Scope_Idx).To_Xref := SPARK_Xref_Table.Last;
-    end if;
- end Get_SPARK_Xrefs;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/get_spark_xrefs.ads gcc-8.1.0/gcc/ada/get_spark_xrefs.ads
*** gcc-7.3.0/gcc/ada/get_spark_xrefs.ads	Wed Apr 24 14:14:27 2013
--- gcc-8.1.0/gcc/ada/get_spark_xrefs.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,60 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                       G E T _ S P A R K _ X R E F S                      --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2011-2013, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This package contains the function used to read SPARK cross-reference
- --  information from an ALI file and populate the tables defined in package
- --  SPARK_Xrefs with the result.
- 
- generic
-    --  These subprograms provide access to the ALI file. Locating, opening and
-    --  providing access to the ALI file is the callers' responsibility.
- 
-    with function Getc return Character is <>;
-    --  Get next character, positioning the ALI file ready to read the following
-    --  character (equivalent to calling Nextc, then Skipc). If the end of file
-    --  is encountered, the value Types.EOF is returned.
- 
-    with function Nextc return Character is <>;
-    --  Look at the next character, and return it, leaving the position of the
-    --  file unchanged, so that a subsequent call to Getc or Nextc will return
-    --  this same character. If the file is positioned at the end of file, then
-    --  Types.EOF is returned.
- 
-    with procedure Skipc is <>;
-    --  Skip past the current character (which typically was read with Nextc),
-    --  and position to the next character, which will be returned by the next
-    --  call to Getc or Nextc.
- 
- procedure Get_SPARK_Xrefs;
- --  Load SPARK cross-reference information from ALI file text format into
- --  internal SPARK tables (SPARK_Xrefs.SPARK_Xref_Table,
- --  SPARK_Xrefs.SPARK_Scope_Table and SPARK_Xrefs.SPARK_File_Table). On entry
- --  the input file is positioned to the initial 'F' of the first SPARK specific
- --  line in the ALI file. On return, the file is positioned either to the end
- --  of file, or to the first character of the line following the SPARK specific
- --  information (which will never start with an 'F').
- --
- --  If a format error is detected in the input, then an exception is raised
- --  (Ada.IO_Exceptions.Data_Error), with the file positioned to the error.
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/get_targ.adb gcc-8.1.0/gcc/ada/get_targ.adb
*** gcc-7.3.0/gcc/ada/get_targ.adb	Mon May 25 21:12:39 2015
--- gcc-8.1.0/gcc/ada/get_targ.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/get_targ.ads gcc-8.1.0/gcc/ada/get_targ.ads
*** gcc-7.3.0/gcc/ada/get_targ.ads	Tue Jan  6 09:24:33 2015
--- gcc-8.1.0/gcc/ada/get_targ.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/ghost.adb gcc-8.1.0/gcc/ada/ghost.adb
*** gcc-7.3.0/gcc/ada/ghost.adb	Mon Jan 23 13:28:58 2017
--- gcc-8.1.0/gcc/ada/ghost.adb	Thu Jan 11 08:55:57 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2014-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or 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-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with Alloc;    use Alloc;
  with Aspects;  use Aspects;
  with Atree;    use Atree;
  with Einfo;    use Einfo;
--- 23,29 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with Alloc;
  with Aspects;  use Aspects;
  with Atree;    use Atree;
  with Einfo;    use Einfo;
*************** package body Ghost is
*** 281,286 ****
--- 281,293 ----
                    if Chars (Subp_Id) = Name_uPostconditions then
                       return True;
  
+                   --  The context is the internally built predicate function,
+                   --  which is OK because the real check was done before the
+                   --  predicate function was generated.
+ 
+                   elsif Is_Predicate_Function (Subp_Id) then
+                      return True;
+ 
                    else
                       Subp_Decl :=
                         Original_Node (Unit_Declaration_Node (Subp_Id));
*************** package body Ghost is
*** 362,371 ****
                    return True;
  
                 --  An assertion expression pragma is Ghost when it contains a
!                --  reference to a Ghost entity (SPARK RM 6.9(10)).
! 
!                elsif Assertion_Expression_Pragma (Prag_Id) then
  
                    --  Ensure that the assertion policy and the Ghost policy are
                    --  compatible (SPARK RM 6.9(18)).
  
--- 369,380 ----
                    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)).
  
+                elsif Assertion_Expression_Pragma (Prag_Id)
+                  and then Prag_Id /= Pragma_Predicate
+                then
                    --  Ensure that the assertion policy and the Ghost policy are
                    --  compatible (SPARK RM 6.9(18)).
  
*************** package body Ghost is
*** 464,472 ****
                    return True;
  
                 --  A reference to a Ghost entity can appear within an aspect
!                --  specification (SPARK RM 6.9(10)).
  
!                elsif Nkind (Par) = N_Aspect_Specification then
                    return True;
  
                 elsif Is_OK_Declaration (Par) then
--- 473,488 ----
                    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
!                --  exception for predicate aspects that only allow referencing
!                --  a Ghost entity when the corresponding type declaration is
!                --  Ghost (SPARK RM 6.9(11)).
  
!                elsif Nkind (Par) = N_Aspect_Specification
!                  and then not Same_Aspect
!                                 (Get_Aspect_Id (Par), Aspect_Predicate)
!                then
                    return True;
  
                 elsif Is_OK_Declaration (Par) then
*************** package body Ghost is
*** 790,795 ****
--- 806,847 ----
        end if;
     end Check_Ghost_Refinement;
  
+    ----------------------
+    -- Check_Ghost_Type --
+    ----------------------
+ 
+    procedure Check_Ghost_Type (Typ : Entity_Id) is
+       Conc_Typ : Entity_Id;
+       Full_Typ : Entity_Id;
+ 
+    begin
+       if Is_Ghost_Entity (Typ) then
+          Conc_Typ := Empty;
+          Full_Typ := Typ;
+ 
+          if Is_Single_Concurrent_Type (Typ) then
+             Conc_Typ := Anonymous_Object (Typ);
+             Full_Typ := Conc_Typ;
+ 
+          elsif Is_Concurrent_Type (Typ) then
+             Conc_Typ := Typ;
+          end if;
+ 
+          --  A Ghost type cannot be concurrent (SPARK RM 6.9(19)). Verify this
+          --  legality rule first to give a finer-grained diagnostic.
+ 
+          if Present (Conc_Typ) then
+             Error_Msg_N ("ghost type & cannot be concurrent", Conc_Typ);
+          end if;
+ 
+          --  A Ghost type cannot be effectively volatile (SPARK RM 6.9(7))
+ 
+          if Is_Effectively_Volatile (Full_Typ) then
+             Error_Msg_N ("ghost type & cannot be volatile", Full_Typ);
+          end if;
+       end if;
+    end Check_Ghost_Type;
+ 
     ------------------
     -- Ghost_Entity --
     ------------------
*************** package body Ghost is
*** 1091,1115 ****
  
     procedure Lock is
     begin
-       Ignored_Ghost_Units.Locked := True;
        Ignored_Ghost_Units.Release;
     end Lock;
  
     -----------------------------------
     -- Mark_And_Set_Ghost_Assignment --
     -----------------------------------
  
!    procedure Mark_And_Set_Ghost_Assignment
!      (N    : Node_Id;
!       Mode : out Ghost_Mode_Type)
!    is
        Id : Entity_Id;
  
     begin
-       --  Save the previous Ghost mode in effect
- 
-       Mode := Ghost_Mode;
- 
        --  An assignment statement becomes Ghost when its target denotes a Ghost
        --  object. Install the Ghost mode of the target.
  
--- 1143,1160 ----
  
     procedure Lock is
     begin
        Ignored_Ghost_Units.Release;
+       Ignored_Ghost_Units.Locked := True;
     end Lock;
  
     -----------------------------------
     -- Mark_And_Set_Ghost_Assignment --
     -----------------------------------
  
!    procedure Mark_And_Set_Ghost_Assignment (N : Node_Id) is
        Id : Entity_Id;
  
     begin
        --  An assignment statement becomes Ghost when its target denotes a Ghost
        --  object. Install the Ghost mode of the target.
  
*************** package body Ghost is
*** 1134,1150 ****
  
     procedure Mark_And_Set_Ghost_Body
       (N       : Node_Id;
!       Spec_Id : Entity_Id;
!       Mode    : out Ghost_Mode_Type)
     is
        Body_Id : constant Entity_Id := Defining_Entity (N);
        Policy  : Name_Id := No_Name;
  
     begin
-       --  Save the previous Ghost mode in effect
- 
-       Mode := Ghost_Mode;
- 
        --  A body becomes Ghost when it is subject to aspect or pragma Ghost
  
        if Is_Subject_To_Ghost (N) then
--- 1179,1190 ----
  
     procedure Mark_And_Set_Ghost_Body
       (N       : Node_Id;
!       Spec_Id : Entity_Id)
     is
        Body_Id : constant Entity_Id := Defining_Entity (N);
        Policy  : Name_Id := No_Name;
  
     begin
        --  A body becomes Ghost when it is subject to aspect or pragma Ghost
  
        if Is_Subject_To_Ghost (N) then
*************** package body Ghost is
*** 1193,1209 ****
  
     procedure Mark_And_Set_Ghost_Completion
       (N       : Node_Id;
!       Prev_Id : Entity_Id;
!       Mode    : out Ghost_Mode_Type)
     is
        Compl_Id : constant Entity_Id := Defining_Entity (N);
        Policy   : Name_Id := No_Name;
  
     begin
-       --  Save the previous Ghost mode in effect
- 
-       Mode := Ghost_Mode;
- 
        --  A completion elaborated in a Ghost region is automatically Ghost
        --  (SPARK RM 6.9(2)).
  
--- 1233,1244 ----
  
     procedure Mark_And_Set_Ghost_Completion
       (N       : Node_Id;
!       Prev_Id : Entity_Id)
     is
        Compl_Id : constant Entity_Id := Defining_Entity (N);
        Policy   : Name_Id := No_Name;
  
     begin
        --  A completion elaborated in a Ghost region is automatically Ghost
        --  (SPARK RM 6.9(2)).
  
*************** package body Ghost is
*** 1243,1260 ****
     -- Mark_And_Set_Ghost_Declaration --
     ------------------------------------
  
!    procedure Mark_And_Set_Ghost_Declaration
!      (N    : Node_Id;
!       Mode : out Ghost_Mode_Type)
!    is
        Par_Id : Entity_Id;
        Policy : Name_Id := No_Name;
  
     begin
-       --  Save the previous Ghost mode in effect
- 
-       Mode := Ghost_Mode;
- 
        --  A declaration becomes Ghost when it is subject to aspect or pragma
        --  Ghost.
  
--- 1278,1288 ----
     -- Mark_And_Set_Ghost_Declaration --
     ------------------------------------
  
!    procedure Mark_And_Set_Ghost_Declaration (N : Node_Id) is
        Par_Id : Entity_Id;
        Policy : Name_Id := No_Name;
  
     begin
        --  A declaration becomes Ghost when it is subject to aspect or pragma
        --  Ghost.
  
*************** package body Ghost is
*** 1309,1324 ****
  
     procedure Mark_And_Set_Ghost_Instantiation
       (N      : Node_Id;
!       Gen_Id : Entity_Id;
!       Mode   : out Ghost_Mode_Type)
     is
!       Policy : Name_Id := No_Name;
  
!    begin
!       --  Save the previous Ghost mode in effect
  
!       Mode := Ghost_Mode;
  
        --  An instantiation becomes Ghost when it is subject to pragma Ghost
  
        if Is_Subject_To_Ghost (N) then
--- 1337,1384 ----
  
     procedure Mark_And_Set_Ghost_Instantiation
       (N      : Node_Id;
!       Gen_Id : Entity_Id)
     is
!       procedure Check_Ghost_Actuals;
!       --  Check the context of ghost actuals
  
!       -------------------------
!       -- Check_Ghost_Actuals --
!       -------------------------
  
!       procedure Check_Ghost_Actuals is
!          Assoc : Node_Id := First (Generic_Associations (N));
!          Act   : Node_Id;
! 
!       begin
!          while Present (Assoc) loop
!             if Nkind (Assoc) /= N_Others_Choice then
!                Act := Explicit_Generic_Actual_Parameter (Assoc);
! 
!                --  Within a nested instantiation, a defaulted actual is an
!                --  empty association, so nothing to check.
! 
!                if No (Act) then
!                   null;
! 
!                elsif Comes_From_Source (Act)
!                   and then Nkind (Act) in N_Has_Etype
!                   and then Present (Etype (Act))
!                   and then Is_Ghost_Entity (Etype (Act))
!                then
!                   Check_Ghost_Context (Etype (Act), Act);
!                end if;
!             end if;
! 
!             Next (Assoc);
!          end loop;
!       end Check_Ghost_Actuals;
! 
!       --  Local variables
  
+       Policy : Name_Id := No_Name;
+ 
+    begin
        --  An instantiation becomes Ghost when it is subject to pragma Ghost
  
        if Is_Subject_To_Ghost (N) then
*************** package body Ghost is
*** 1349,1371 ****
        --  Install the appropriate Ghost mode
  
        Install_Ghost_Mode (Policy);
     end Mark_And_Set_Ghost_Instantiation;
  
     ---------------------------------------
     -- Mark_And_Set_Ghost_Procedure_Call --
     ---------------------------------------
  
!    procedure Mark_And_Set_Ghost_Procedure_Call
!      (N    : Node_Id;
!       Mode : out Ghost_Mode_Type)
!    is
        Id : Entity_Id;
  
     begin
-       --  Save the previous Ghost mode in effect
- 
-       Mode := Ghost_Mode;
- 
        --  A procedure call becomes Ghost when the procedure being invoked is
        --  Ghost. Install the Ghost mode of the procedure.
  
--- 1409,1431 ----
        --  Install the appropriate Ghost mode
  
        Install_Ghost_Mode (Policy);
+ 
+       --  Check ghost actuals. Given that this routine is unconditionally
+       --  invoked with subprogram and package instantiations, this check
+       --  verifies the context of all the ghost entities passed in generic
+       --  instantiations.
+ 
+       Check_Ghost_Actuals;
     end Mark_And_Set_Ghost_Instantiation;
  
     ---------------------------------------
     -- Mark_And_Set_Ghost_Procedure_Call --
     ---------------------------------------
  
!    procedure Mark_And_Set_Ghost_Procedure_Call (N : Node_Id) is
        Id : Entity_Id;
  
     begin
        --  A procedure call becomes Ghost when the procedure being invoked is
        --  Ghost. Install the Ghost mode of the procedure.
  
*************** package body Ghost is
*** 1453,1462 ****
  
     begin
        if Nkind (N) = N_Use_Package_Clause then
!          Nam := First (Names (N));
  
        elsif Nkind (N) = N_Use_Type_Clause then
!          Nam := First (Subtype_Marks (N));
  
        elsif Nkind (N) = N_With_Clause then
           Nam := Name (N);
--- 1513,1522 ----
  
     begin
        if Nkind (N) = N_Use_Package_Clause then
!          Nam := Name (N);
  
        elsif Nkind (N) = N_Use_Type_Clause then
!          Nam := Subtype_Mark (N);
  
        elsif Nkind (N) = N_With_Clause then
           Nam := Name (N);
*************** package body Ghost is
*** 1695,1704 ****
     -- Set_Ghost_Mode --
     --------------------
  
!    procedure Set_Ghost_Mode
!      (N    : Node_Or_Entity_Id;
!       Mode : out Ghost_Mode_Type)
!    is
        procedure Set_Ghost_Mode_From_Entity (Id : Entity_Id);
        --  Install the Ghost mode of entity Id
  
--- 1755,1761 ----
     -- Set_Ghost_Mode --
     --------------------
  
!    procedure Set_Ghost_Mode (N : Node_Or_Entity_Id) is
        procedure Set_Ghost_Mode_From_Entity (Id : Entity_Id);
        --  Install the Ghost mode of entity Id
  
*************** package body Ghost is
*** 1724,1733 ****
     --  Start of processing for Set_Ghost_Mode
  
     begin
-       --  Save the previous Ghost mode in effect
- 
-       Mode := Ghost_Mode;
- 
        --  The Ghost mode of an assignment statement depends on the Ghost mode
        --  of the target.
  
--- 1781,1786 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/ghost.ads gcc-8.1.0/gcc/ada/ghost.ads
*** gcc-7.3.0/gcc/ada/ghost.ads	Mon Jan 23 13:28:58 2017
--- gcc-8.1.0/gcc/ada/ghost.ads	Thu Jan 11 08:55:57 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2014-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or 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-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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
*** 68,73 ****
--- 68,77 ----
     --  Verify that the Ghost policy of constituent Constit_Id is compatible
     --  with the Ghost policy of abstract state State_I.
  
+    procedure Check_Ghost_Type (Typ : Entity_Id);
+    --  Verify that Ghost type Typ is neither concurrent, nor effectively
+    --  volatile.
+ 
     function Implements_Ghost_Interface (Typ : Entity_Id) return Boolean;
     --  Determine whether type Typ implements at least one Ghost interface
  
*************** package Ghost is
*** 101,121 ****
     procedure Lock;
     --  Lock internal tables before calling backend
  
!    procedure Mark_And_Set_Ghost_Assignment
!      (N    : Node_Id;
!       Mode : out Ghost_Mode_Type);
     --  Mark assignment statement N as Ghost when:
     --
     --    * The left hand side denotes a Ghost entity
     --
!    --  Install the Ghost mode of the assignment statement. Mode is the Ghost
!    --  mode in effect prior to processing the assignment. This routine starts
     --  a Ghost region and must be used in conjunction with Restore_Ghost_Mode.
  
     procedure Mark_And_Set_Ghost_Body
       (N       : Node_Id;
!       Spec_Id : Entity_Id;
!       Mode    : out Ghost_Mode_Type);
     --  Mark package or subprogram body N as Ghost when:
     --
     --    * The body is subject to pragma Ghost
--- 105,121 ----
     procedure Lock;
     --  Lock internal tables before calling backend
  
!    procedure Mark_And_Set_Ghost_Assignment (N : Node_Id);
     --  Mark assignment statement N as Ghost when:
     --
     --    * The left hand side denotes a Ghost entity
     --
!    --  Install the Ghost mode of the assignment statement. This routine starts
     --  a Ghost region and must be used in conjunction with Restore_Ghost_Mode.
  
     procedure Mark_And_Set_Ghost_Body
       (N       : Node_Id;
!       Spec_Id : Entity_Id);
     --  Mark package or subprogram body N as Ghost when:
     --
     --    * The body is subject to pragma Ghost
*************** package Ghost is
*** 125,138 ****
     --
     --    * The body appears within a Ghost region
     --
!    --  Install the Ghost mode of the body. Mode is the Ghost mode prior to
!    --  processing the body. This routine starts a Ghost region and must be
!    --  used in conjunction with Restore_Ghost_Mode.
  
     procedure Mark_And_Set_Ghost_Completion
       (N       : Node_Id;
!       Prev_Id : Entity_Id;
!       Mode    : out Ghost_Mode_Type);
     --  Mark completion N of a deferred constant or private type [extension]
     --  Ghost when:
     --
--- 125,136 ----
     --
     --    * The body appears within a Ghost region
     --
!    --  Install the Ghost mode of the body. This routine starts a Ghost region
!    --  and must be used in conjunction with Restore_Ghost_Mode.
  
     procedure Mark_And_Set_Ghost_Completion
       (N       : Node_Id;
!       Prev_Id : Entity_Id);
     --  Mark completion N of a deferred constant or private type [extension]
     --  Ghost when:
     --
*************** package Ghost is
*** 140,152 ****
     --
     --    * The completion appears within a Ghost region
     --
!    --  Install the Ghost mode of the completion. Mode is the Ghost mode prior
!    --  to processing the completion. This routine starts a Ghost region and
!    --  must be used in conjunction with Restore_Ghost_Mode.
  
!    procedure Mark_And_Set_Ghost_Declaration
!      (N    : Node_Id;
!       Mode : out Ghost_Mode_Type);
     --  Mark declaration N as Ghost when:
     --
     --    * The declaration is subject to pragma Ghost
--- 138,147 ----
     --
     --    * The completion appears within a Ghost region
     --
!    --  Install the Ghost mode of the completion. This routine starts a Ghost
!    --  region and must be used in conjunction with Restore_Ghost_Mode.
  
!    procedure Mark_And_Set_Ghost_Declaration (N : Node_Id);
     --  Mark declaration N as Ghost when:
     --
     --    * The declaration is subject to pragma Ghost
*************** package Ghost is
*** 156,169 ****
     --
     --    * The declaration appears within a Ghost region
     --
!    --  Install the Ghost mode of the declaration. Mode is the Ghost mode prior
!    --  to processing the declaration. This routine starts a Ghost region and
!    --  must be used in conjunction with Restore_Ghost_Mode.
  
     procedure Mark_And_Set_Ghost_Instantiation
       (N      : Node_Id;
!       Gen_Id : Entity_Id;
!       Mode   : out Ghost_Mode_Type);
     --  Mark instantiation N as Ghost when:
     --
     --    * The instantiation is subject to pragma Ghost
--- 151,162 ----
     --
     --    * The declaration appears within a Ghost region
     --
!    --  Install the Ghost mode of the declaration. This routine starts a Ghost
!    --  region and must be used in conjunction with Restore_Ghost_Mode.
  
     procedure Mark_And_Set_Ghost_Instantiation
       (N      : Node_Id;
!       Gen_Id : Entity_Id);
     --  Mark instantiation N as Ghost when:
     --
     --    * The instantiation is subject to pragma Ghost
*************** package Ghost is
*** 172,191 ****
     --
     --    * The instantiation appears within a Ghost region
     --
!    --  Install the Ghost mode of the instantiation. Mode is the Ghost mode
!    --  prior to processing the instantiation. This routine starts a Ghost
     --  region and must be used in conjunction with Restore_Ghost_Mode.
  
!    procedure Mark_And_Set_Ghost_Procedure_Call
!      (N    : Node_Id;
!       Mode : out Ghost_Mode_Type);
     --  Mark procedure call N as Ghost when:
     --
     --    * The procedure being invoked is a Ghost entity
     --
!    --  Install the Ghost mode of the procedure call. Mode is the Ghost mode
!    --  prior to processing the procedure call. This routine starts a Ghost
!    --  region and must be used in conjunction with Restore_Ghost_Mode.
  
     procedure Mark_Ghost_Clause (N : Node_Id);
     --  Mark use package, use type, or with clause N as Ghost when:
--- 165,180 ----
     --
     --    * The instantiation appears within a Ghost region
     --
!    --  Install the Ghost mode of the instantiation. This routine starts a Ghost
     --  region and must be used in conjunction with Restore_Ghost_Mode.
  
!    procedure Mark_And_Set_Ghost_Procedure_Call (N : Node_Id);
     --  Mark procedure call N as Ghost when:
     --
     --    * The procedure being invoked is a Ghost entity
     --
!    --  Install the Ghost mode of the procedure call. This routine starts a
!    --  Ghost region and must be used in conjunction with Restore_Ghost_Mode.
  
     procedure Mark_Ghost_Clause (N : Node_Id);
     --  Mark use package, use type, or with clause N as Ghost when:
*************** package Ghost is
*** 220,231 ****
     --  region denoted by Mode. This routine must be used in conjunction
     --  with Mark_And_Set_xxx routines as well as Set_Ghost_Mode.
  
!    procedure Set_Ghost_Mode
!      (N    : Node_Or_Entity_Id;
!       Mode : out Ghost_Mode_Type);
!    --  Install the Ghost mode of arbitrary node N. Mode is the Ghost mode prior
!    --  to processing the node. This routine starts a Ghost region and must be
!    --  used in conjunction with Restore_Ghost_Mode.
  
     procedure Set_Is_Ghost_Entity (Id : Entity_Id);
     --  Set the relevant Ghost attributes of entity Id depending on the current
--- 209,217 ----
     --  region denoted by Mode. This routine must be used in conjunction
     --  with Mark_And_Set_xxx routines as well as Set_Ghost_Mode.
  
!    procedure Set_Ghost_Mode (N : Node_Or_Entity_Id);
!    --  Install the Ghost mode of arbitrary node N. This routine starts a Ghost
!    --  region and must be used in conjunction with Restore_Ghost_Mode.
  
     procedure Set_Is_Ghost_Entity (Id : Entity_Id);
     --  Set the relevant Ghost attributes of entity Id depending on the current
diff -Nrcpad gcc-7.3.0/gcc/ada/gnat.ads gcc-8.1.0/gcc/ada/gnat.ads
*** gcc-7.3.0/gcc/ada/gnat.ads	Fri Aug  1 08:32:27 2014
--- gcc-8.1.0/gcc/ada/gnat.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,37 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                                 G N A T                                  --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --                     Copyright (C) 1992-2014, AdaCore                     --
- --                                                                          --
- -- GNAT is 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 parent package for a library of useful units provided with GNAT
- 
- package GNAT is
-    pragma Pure;
- 
- end GNAT;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/gnat1drv.adb gcc-8.1.0/gcc/ada/gnat1drv.adb
*** gcc-7.3.0/gcc/ada/gnat1drv.adb	Mon Jan 23 13:28:58 2017
--- gcc-8.1.0/gcc/ada/gnat1drv.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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,58 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with Atree;    use Atree;
! with Back_End; use Back_End;
  with Checks;
  with Comperr;
! with Csets;    use Csets;
! with Debug;    use Debug;
  with Elists;
! with Errout;   use Errout;
  with Exp_CG;
  with Fmap;
! with Fname;    use Fname;
! with Fname.UF; use Fname.UF;
  with Frontend;
! with Ghost;    use Ghost;
! with Gnatvsn;  use Gnatvsn;
  with Inline;
! with Lib;      use Lib;
! with Lib.Writ; use Lib.Writ;
  with Lib.Xref;
! with Namet;    use Namet;
  with Nlists;
! with Opt;      use Opt;
! with Osint;    use Osint;
! with Osint.C;  use Osint.C;
! with Output;   use Output;
  with Par_SCO;
  with Prepcomp;
! with Repinfo;  use Repinfo;
  with Restrict;
! with Rident;   use Rident;
  with Rtsfind;
  with SCOs;
  with Sem;
--- 23,58 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with Atree;     use Atree;
! with Back_End;  use Back_End;
  with Checks;
  with Comperr;
! with Csets;
! with Debug;     use Debug;
  with Elists;
! with Errout;    use Errout;
  with Exp_CG;
  with Fmap;
! with Fname;     use Fname;
! with Fname.UF;  use Fname.UF;
  with Frontend;
! with Ghost;     use Ghost;
! with Gnatvsn;   use Gnatvsn;
  with Inline;
! with Lib;       use Lib;
! with Lib.Writ;  use Lib.Writ;
  with Lib.Xref;
! with Namet;     use Namet;
  with Nlists;
! with Opt;       use Opt;
! with Osint;     use Osint;
! with Osint.C;   use Osint.C;
! with Output;    use Output;
  with Par_SCO;
  with Prepcomp;
! with Repinfo;   use Repinfo;
  with Restrict;
! with Rident;    use Rident;
  with Rtsfind;
  with SCOs;
  with Sem;
*************** with Sem_Ch12;
*** 61,85 ****
  with Sem_Ch13;
  with Sem_Elim;
  with Sem_Eval;
  with Sem_Type;
  with Set_Targ;
! with Sinfo;    use Sinfo;
! with Sinput.L; use Sinput.L;
! with Snames;
! with Sprint;   use Sprint;
  with Stringt;
! with Stylesw;  use Stylesw;
! with Targparm; use Targparm;
  with Tbuild;
  with Tree_Gen;
! with Treepr;   use Treepr;
  with Ttypes;
! with Types;    use Types;
! with Uintp;    use Uintp;
! with Uname;    use Uname;
  with Urealp;
  with Usage;
! with Validsw;  use Validsw;
  
  with System.Assertions;
  with System.OS_Lib;
--- 61,86 ----
  with Sem_Ch13;
  with Sem_Elim;
  with Sem_Eval;
+ with Sem_SPARK; use Sem_SPARK;
  with Sem_Type;
  with Set_Targ;
! with Sinfo;     use Sinfo;
! with Sinput.L;  use Sinput.L;
! with Snames;    use Snames;
! with Sprint;    use Sprint;
  with Stringt;
! with Stylesw;   use Stylesw;
! with Targparm;  use Targparm;
  with Tbuild;
  with Tree_Gen;
! with Treepr;    use Treepr;
  with Ttypes;
! with Types;     use Types;
! with Uintp;
! with Uname;     use Uname;
  with Urealp;
  with Usage;
! with Validsw;   use Validsw;
  
  with System.Assertions;
  with System.OS_Lib;
*************** procedure Gnat1drv is
*** 116,122 ****
--- 117,148 ----
     ----------------------------
  
     procedure Adjust_Global_Switches is
+       procedure SPARK_Library_Warning (Kind : String);
+       --  Issue a warning in GNATprove mode if the run-time library does not
+       --  fully support IEEE-754 floating-point semantics.
+ 
+       ---------------------------
+       -- SPARK_Library_Warning --
+       ---------------------------
+ 
+       procedure SPARK_Library_Warning (Kind : String) is
+       begin
+          Write_Line
+            ("warning: run-time library may be configured incorrectly");
+          Write_Line
+            ("warning: (SPARK analysis requires support for " & Kind & ')');
+       end SPARK_Library_Warning;
+ 
+    --  Start of processing for Adjust_Global_Switches
+ 
     begin
+       --  Define pragma GNAT_Annotate as an alias of pragma Annotate, to be
+       --  able to work around bootstrap limitations with the old syntax of
+       --  pragma Annotate, and use pragma GNAT_Annotate in compiler sources
+       --  when needed.
+ 
+       Map_Pragma_Name (From => Name_Gnat_Annotate, To => Name_Annotate);
+ 
        --  -gnatd.M enables Relaxed_RM_Semantics
  
        if Debug_Flag_Dot_MM then
*************** procedure Gnat1drv is
*** 140,146 ****
--- 166,174 ----
        if Generate_C_Code then
           Modify_Tree_For_C := True;
           Unnest_Subprogram_Mode := True;
+          Building_Static_Dispatch_Tables := False;
           Minimize_Expression_With_Actions := True;
+          Expand_Nonbinary_Modular_Ops := True;
  
           --  Set operating mode to Generate_Code to benefit from full front-end
           --  expansion (e.g. generics).
*************** procedure Gnat1drv is
*** 160,165 ****
--- 188,200 ----
           Error_To_Warning := True;
        end if;
  
+       --  -gnatdJ sets Include_Subprogram_In_Messages, adding the related
+       --  subprogram as part of the error and warning messages.
+ 
+       if Debug_Flag_JJ then
+          Include_Subprogram_In_Messages := True;
+       end if;
+ 
        --  Disable CodePeer_Mode in Check_Syntax, since we need front-end
        --  expansion.
  
*************** procedure Gnat1drv is
*** 246,252 ****
           Restrict.Restrictions.Set   (Max_Asynchronous_Select_Nesting) := True;
           Restrict.Restrictions.Value (Max_Asynchronous_Select_Nesting) := 0;
  
!          --  Suppress division by zero and access checks since they are handled
           --  implicitly by CodePeer.
  
           --  Turn off dynamic elaboration checks: generates inconsistencies in
--- 281,295 ----
           Restrict.Restrictions.Set   (Max_Asynchronous_Select_Nesting) := True;
           Restrict.Restrictions.Value (Max_Asynchronous_Select_Nesting) := 0;
  
!          --  Enable pragma Ignore_Pragma (Global) to support legacy code. As a
!          --  consequence, Refined_Global pragma should be ignored as well, as
!          --  it is only allowed on a body when pragma Global is given for the
!          --  spec.
! 
!          Set_Name_Table_Boolean3 (Name_Global, True);
!          Set_Name_Table_Boolean3 (Name_Refined_Global, True);
! 
!          --  Suppress division by zero checks since they are handled
           --  implicitly by CodePeer.
  
           --  Turn off dynamic elaboration checks: generates inconsistencies in
*************** procedure Gnat1drv is
*** 286,291 ****
--- 329,339 ----
  
           Debug_Generated_Code := False;
  
+          --  Ditto for -gnateG which interacts badly with handling of pragma
+          --  Annotate in gnat2scil.
+ 
+          Generate_Processed_File := False;
+ 
           --  Disable Exception_Extra_Info (-gnateE) which generates more
           --  complex trees with no added value, and may confuse CodePeer.
  
*************** procedure Gnat1drv is
*** 322,327 ****
--- 370,376 ----
           Reset_Validity_Check_Options;
           Validity_Check_Default       := True;
           Validity_Check_Copies        := True;
+          Check_Validity_Of_Parameters := False;
  
           --  Turn off style check options and ignore any style check pragmas
           --  since we are not interested in any front-end warnings when we are
*************** procedure Gnat1drv is
*** 343,348 ****
--- 392,406 ----
  
           Relaxed_RM_Semantics := True;
  
+          if not Generate_CodePeer_Messages then
+ 
+             --  Suppress compiler warnings by default when generating SCIL for
+             --  CodePeer, except when combined with -gnateC where we do want to
+             --  emit GNAT warnings.
+ 
+             Warning_Mode := Suppress;
+          end if;
+ 
           --  Disable all simple value propagation. This is an optimization
           --  which is valuable for code optimization, and also for generation
           --  of compiler warnings, but these are being turned off by default,
*************** procedure Gnat1drv is
*** 376,381 ****
--- 434,455 ----
  
        if GNATprove_Mode then
  
+          --  Turn off CodePeer mode (which can be set via e.g. -gnatC or
+          --  -gnateC), not compatible with GNATprove mode.
+ 
+          CodePeer_Mode := False;
+          Generate_SCIL := False;
+ 
+          --  Turn off C tree generation, not compatible with GNATprove mode. We
+          --  do not expect this to happen in normal use, since both modes are
+          --  enabled by special tools, but it is useful to turn off these flags
+          --  this way when we are doing GNATprove tests on existing test suites
+          --  that may have -gnateg set, to avoid the need for special casing.
+ 
+          Modify_Tree_For_C := False;
+          Generate_C_Code := False;
+          Unnest_Subprogram_Mode := False;
+ 
           --  Turn off inlining, which would confuse formal verification output
           --  and gain nothing.
  
*************** procedure Gnat1drv is
*** 458,463 ****
--- 532,538 ----
           --  data is directly detected by GNATprove's flow analysis.
  
           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.
*************** procedure Gnat1drv is
*** 475,480 ****
--- 550,568 ----
           --  which is more complex to formally verify than the original source.
  
           Tagged_Type_Expansion := False;
+ 
+          --  Detect that the runtime library support for floating-point numbers
+          --  may not be compatible with SPARK analysis of IEEE-754 floats.
+ 
+          if Denorm_On_Target = False then
+             SPARK_Library_Warning ("float subnormals");
+ 
+          elsif Machine_Rounds_On_Target = False then
+             SPARK_Library_Warning ("float rounding");
+ 
+          elsif Signed_Zeros_On_Target = False then
+             SPARK_Library_Warning ("signed zeros");
+          end if;
        end if;
  
        --  Set Configurable_Run_Time mode if system.ads flag set or if the
*************** procedure Gnat1drv is
*** 484,490 ****
           Configurable_Run_Time_Mode := True;
        end if;
  
!       --  Set -gnatR3m mode if debug flag A set
  
        if Debug_Flag_AA then
           Back_Annotate_Rep_Info := True;
--- 572,578 ----
           Configurable_Run_Time_Mode := True;
        end if;
  
!       --  Set -gnatRm mode if debug flag A set
  
        if Debug_Flag_AA then
           Back_Annotate_Rep_Info := True;
*************** procedure Gnat1drv is
*** 504,517 ****
           Atree.Num_Extension_Nodes := Atree.Num_Extension_Nodes + 1;
        end if;
  
!       --  Disable static allocation of dispatch tables if -gnatd.t or if layout
!       --  is enabled. The front end's layout phase currently treats types that
!       --  have discriminant-dependent arrays as not being static even when a
        --  discriminant constraint on the type is static, and this leads to
        --  problems with subtypes of type Ada.Tags.Dispatch_Table_Wrapper. ???
  
!       if Debug_Flag_Dot_T or else Frontend_Layout_On_Target then
!          Static_Dispatch_Tables := False;
        end if;
  
        --  Flip endian mode if -gnatd8 set
--- 592,605 ----
           Atree.Num_Extension_Nodes := Atree.Num_Extension_Nodes + 1;
        end if;
  
!       --  Disable static allocation of dispatch tables if -gnatd.t is enabled.
!       --  The front end's layout phase currently treats types that have
!       --  discriminant-dependent arrays as not being static even when a
        --  discriminant constraint on the type is static, and this leads to
        --  problems with subtypes of type Ada.Tags.Dispatch_Table_Wrapper. ???
  
!       if Debug_Flag_Dot_T then
!          Building_Static_Dispatch_Tables := False;
        end if;
  
        --  Flip endian mode if -gnatd8 set
*************** procedure Gnat1drv is
*** 520,531 ****
           Ttypes.Bytes_Big_Endian := not Ttypes.Bytes_Big_Endian;
        end if;
  
-       --  Activate front-end layout if debug flag -gnatdF is set
- 
-       if Debug_Flag_FF then
-          Targparm.Frontend_Layout_On_Target := True;
-       end if;
- 
        --  Set and check exception mechanism. This is only meaningful when
        --  compiling, and in particular not meaningful for special modes used
        --  for program analysis rather than compilation: ASIS mode, CodePeer
--- 608,613 ----
*************** procedure Gnat1drv is
*** 788,794 ****
           --  pragma, to be used this way and to cause the body file to be
           --  ignored in this context).
  
!          if Src_Ind /= No_Source_File
             and then Source_File_Is_Body (Src_Ind)
           then
              Errout.Finalize (Last_Call => False);
--- 870,876 ----
           --  pragma, to be used this way and to cause the body file to be
           --  ignored in this context).
  
!          if Src_Ind > No_Source_File
             and then Source_File_Is_Body (Src_Ind)
           then
              Errout.Finalize (Last_Call => False);
*************** procedure Gnat1drv is
*** 910,919 ****
        --  Validate independence pragmas (again using values annotated by the
        --  back end for component layout where possible) but only for non-GCC
        --  back ends, as this is done a priori for GCC back ends.
! 
!       if AAMP_On_Target then
!          Sem_Ch13.Validate_Independence;
!       end if;
     end Post_Compilation_Validation_Checks;
  
     --  Local variables
--- 992,1002 ----
        --  Validate independence pragmas (again using values annotated by the
        --  back end for component layout where possible) but only for non-GCC
        --  back ends, as this is done a priori for GCC back ends.
!       --  ??? We use to test for AAMP_On_Target which is now gone, consider
!       --
!       --  if AAMP_On_Target then
!       --     Sem_Ch13.Validate_Independence;
!       --  end if;
     end Post_Compilation_Validation_Checks;
  
     --  Local variables
*************** begin
*** 1001,1006 ****
--- 1084,1095 ----
                 Write_Line ("cannot locate file system.ads");
                 raise Unrecoverable_Error;
  
+             elsif S = No_Access_To_Source_File then
+                Write_Line
+                  ("fatal error, run-time library not installed correctly");
+                Write_Line ("no read access for file system.ads");
+                raise Unrecoverable_Error;
+ 
              --  Read system.ads successfully, remember its source index
  
              else
*************** begin
*** 1076,1082 ****
  
        --  Exit with errors if the main source could not be parsed
  
!       if Sinput.Main_Source_File = No_Source_File then
           Errout.Finalize (Last_Call => True);
           Errout.Output_Messages;
           Exit_Program (E_Errors);
--- 1165,1171 ----
  
        --  Exit with errors if the main source could not be parsed
  
!       if Sinput.Main_Source_File <= No_Source_File then
           Errout.Finalize (Last_Call => True);
           Errout.Output_Messages;
           Exit_Program (E_Errors);
*************** begin
*** 1109,1114 ****
--- 1198,1204 ----
        if Compilation_Errors then
           Treepr.Tree_Dump;
           Post_Compilation_Validation_Checks;
+          Errout.Finalize (Last_Call => True);
           Errout.Output_Messages;
           Namet.Finalize;
  
*************** begin
*** 1119,1125 ****
              Tree_Gen;
           end if;
  
-          Errout.Finalize (Last_Call => True);
           Exit_Program (E_Errors);
        end if;
  
--- 1209,1214 ----
*************** begin
*** 1297,1305 ****
                 Write_Str (" (subunit)");
                 Write_Eol;
  
!                --  Force generation of ALI file, for backward compatibility
! 
!                Opt.Force_ALI_Tree_File := True;
  
              elsif Main_Unit_Kind = N_Subprogram_Declaration then
                 Write_Str (" (subprogram spec)");
--- 1386,1394 ----
                 Write_Str (" (subunit)");
                 Write_Eol;
  
!                --  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)");
*************** begin
*** 1365,1371 ****
          and then
            (not (Back_Annotate_Rep_Info or Generate_SCIL or GNATprove_Mode)
              or else Main_Unit_Kind = N_Subunit
-             or else Frontend_Layout_On_Target
              or else ASIS_GNSA_Mode)
        then
           Post_Compilation_Validation_Checks;
--- 1454,1459 ----
*************** begin
*** 1390,1401 ****
  
        Prepcomp.Add_Dependencies;
  
-       --  In gnatprove mode we're writing the ALI much earlier than usual
-       --  as flow analysis needs the file present in order to append its
-       --  own globals to it.
- 
        if GNATprove_Mode then
  
           --  Note: In GNATprove mode, an "object" file is always generated as
           --  the result of calling gnat1 or gnat2why, although this is not the
           --  same as the object file produced for compilation.
--- 1478,1496 ----
  
        Prepcomp.Add_Dependencies;
  
        if GNATprove_Mode then
  
+          --  Perform the new SPARK checking rules for pointer aliasing. This is
+          --  only activated in GNATprove mode and on SPARK code.
+ 
+          if Debug_Flag_FF then
+             Check_Safe_Pointers (Main_Unit_Node);
+          end if;
+ 
+          --  In GNATprove mode we're writing the ALI much earlier than usual
+          --  as flow analysis needs the file present in order to append its
+          --  own globals to it.
+ 
           --  Note: In GNATprove mode, an "object" file is always generated as
           --  the result of calling gnat1 or gnat2why, although this is not the
           --  same as the object file produced for compilation.
diff -Nrcpad gcc-7.3.0/gcc/ada/gnat1drv.ads gcc-8.1.0/gcc/ada/gnat1drv.ads
*** gcc-7.3.0/gcc/ada/gnat1drv.ads	Mon Sep 10 12:47:10 2007
--- gcc-8.1.0/gcc/ada/gnat1drv.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2007, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/gnat_rm.texi gcc-8.1.0/gcc/ada/gnat_rm.texi
*** gcc-7.3.0/gcc/ada/gnat_rm.texi	Fri Jan 13 11:23:42 2017
--- gcc-8.1.0/gcc/ada/gnat_rm.texi	Thu Jan 11 08:52:55 2018
***************
*** 3,9 ****
  @setfilename gnat_rm.info
  @documentencoding UTF-8
  @ifinfo
! @*Generated by Sphinx 1.3b2.@*
  @end ifinfo
  @settitle GNAT Reference Manual
  @defindex ge
--- 3,9 ----
  @setfilename gnat_rm.info
  @documentencoding UTF-8
  @ifinfo
! @*Generated by Sphinx 1.4.6.@*
  @end ifinfo
  @settitle GNAT Reference Manual
  @defindex ge
***************
*** 21,31 ****
  
  @copying
  @quotation
! GNAT Reference Manual , January 13, 2017
  
  AdaCore
  
! Copyright @copyright{} 2008-2017, Free Software Foundation
  @end quotation
  
  @end copying
--- 21,31 ----
  
  @copying
  @quotation
! GNAT Reference Manual , Jan 10, 2018
  
  AdaCore
  
! Copyright @copyright{} 2008-2018, Free Software Foundation
  @end quotation
  
  @end copying
*************** Implementation Defined Pragmas
*** 135,140 ****
--- 135,141 ----
  * Pragma CPP_Virtual:: 
  * Pragma CPP_Vtable:: 
  * Pragma CPU:: 
+ * Pragma Deadline_Floor:: 
  * Pragma Default_Initial_Condition:: 
  * Pragma Debug:: 
  * Pragma Debug_Policy:: 
*************** Implementation Defined Pragmas
*** 202,208 ****
--- 203,211 ----
  * Pragma Main_Storage:: 
  * Pragma Max_Queue_Length:: 
  * Pragma No_Body:: 
+ * Pragma No_Component_Reordering:: 
  * Pragma No_Elaboration_Code_All:: 
+ * Pragma No_Heap_Finalization:: 
  * Pragma No_Inline:: 
  * Pragma No_Return:: 
  * Pragma No_Run_Time:: 
*************** Implementation Defined Pragmas
*** 299,305 ****
  Implementation Defined Aspects
  
  * Aspect Abstract_State:: 
! * Annotate:: 
  * Aspect Async_Readers:: 
  * Aspect Async_Writers:: 
  * Aspect Constant_After_Elaboration:: 
--- 302,308 ----
  Implementation Defined Aspects
  
  * Aspect Abstract_State:: 
! * Aspect Annotate:: 
  * Aspect Async_Readers:: 
  * Aspect Async_Writers:: 
  * Aspect Constant_After_Elaboration:: 
*************** Implementation Defined Aspects
*** 325,330 ****
--- 328,334 ----
  * Aspect Lock_Free:: 
  * Aspect Max_Queue_Length:: 
  * Aspect No_Elaboration_Code_All:: 
+ * Aspect No_Inline:: 
  * Aspect No_Tagged_Streams:: 
  * Aspect Object_Size:: 
  * Aspect Obsolescent:: 
*************** Program Unit Level Restrictions
*** 531,536 ****
--- 535,541 ----
  * No_Implicit_Loops:: 
  * No_Obsolescent_Features:: 
  * No_Wide_Characters:: 
+ * Static_Dispatch_Tables:: 
  * SPARK_05:: 
  
  Implementation Advice
*************** Implementation Advice
*** 603,608 ****
--- 608,614 ----
  Intrinsic Subprograms
  
  * Intrinsic Operators:: 
+ * Compilation_ISO_Date:: 
  * Compilation_Date:: 
  * Compilation_Time:: 
  * Enclosing_Entity:: 
*************** The GNAT Library
*** 687,692 ****
--- 693,701 ----
  * 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. 
*************** GNAT Implementation of Tasking
*** 848,853 ****
--- 857,863 ----
  
  * Mapping Ada Tasks onto the Underlying Kernel Threads:: 
  * Ensuring Compliance with the Real-Time Annex:: 
+ * Support for Locking Policies:: 
  
  Code Generation for Array Aggregates
  
*************** in this guide:
*** 1058,1074 ****
  @itemize *
  
  @item 
! @cite{Functions}, @cite{utility program names}, @cite{standard names},
! and @cite{classes}.
  
  @item 
! @cite{Option flags}
  
  @item 
  @code{File names}
  
  @item 
! @cite{Variables}
  
  @item 
  @emph{Emphasis}
--- 1068,1084 ----
  @itemize *
  
  @item 
! @code{Functions}, @code{utility program names}, @code{standard names},
! and @code{classes}.
  
  @item 
! @code{Option flags}
  
  @item 
  @code{File names}
  
  @item 
! @code{Variables}
  
  @item 
  @emph{Emphasis}
*************** consideration, the use of these pragmas
*** 1195,1200 ****
--- 1205,1211 ----
  * Pragma CPP_Virtual:: 
  * Pragma CPP_Vtable:: 
  * Pragma CPU:: 
+ * Pragma Deadline_Floor:: 
  * Pragma Default_Initial_Condition:: 
  * Pragma Debug:: 
  * Pragma Debug_Policy:: 
*************** consideration, the use of these pragmas
*** 1262,1268 ****
--- 1273,1281 ----
  * Pragma Main_Storage:: 
  * Pragma Max_Queue_Length:: 
  * Pragma No_Body:: 
+ * Pragma No_Component_Reordering:: 
  * Pragma No_Elaboration_Code_All:: 
+ * Pragma No_Heap_Finalization:: 
  * Pragma No_Inline:: 
  * Pragma No_Return:: 
  * Pragma No_Run_Time:: 
*************** pragma Abort_Defer;
*** 1372,1378 ****
  @end example
  
  This pragma must appear at the start of the statement sequence of a
! handled sequence of statements (right after the @cite{begin}).  It has
  the effect of deferring aborts for the sequence of statements (but not
  for the declarations or handlers, if any, associated with this statement
  sequence).
--- 1385,1391 ----
  @end example
  
  This pragma must appear at the start of the statement sequence of a
! handled sequence of statements (right after the @code{begin}).  It has
  the effect of deferring aborts for the sequence of statements (but not
  for the declarations or handlers, if any, associated with this statement
  sequence).
*************** STATE_NAME ::= defining_identifier
*** 1424,1430 ****
  ABSTRACT_STATE ::= name
  @end example
  
! For the semantics of this pragma, see the entry for aspect @cite{Abstract_State} in
  the SPARK 2014 Reference Manual, section 7.1.4.
  
  @node Pragma Ada_83,Pragma Ada_95,Pragma Abstract_State,Implementation Defined Pragmas
--- 1437,1443 ----
  ABSTRACT_STATE ::= name
  @end example
  
! For the semantics of this pragma, see the entry for aspect @code{Abstract_State} in
  the SPARK 2014 Reference Manual, section 7.1.4.
  
  @node Pragma Ada_83,Pragma Ada_95,Pragma Abstract_State,Implementation Defined Pragmas
*************** the syntax and semantics of Ada 83, as d
*** 1445,1451 ****
  83 Reference Manual as possible.  In particular, the keywords added by Ada 95
  and Ada 2005 are not recognized, optional package bodies are allowed,
  and generics may name types with unknown discriminants without using
! the @cite{(<>)} notation.  In addition, some but not all of the additional
  restrictions of Ada 83 are enforced.
  
  Ada 83 mode is intended for two purposes.  Firstly, it allows existing
--- 1458,1464 ----
  83 Reference Manual as possible.  In particular, the keywords added by Ada 95
  and Ada 2005 are not recognized, optional package bodies are allowed,
  and generics may name types with unknown discriminants without using
! the @code{(<>)} notation.  In addition, some but not all of the additional
  restrictions of Ada 83 are enforced.
  
  Ada 83 mode is intended for two purposes.  Firstly, it allows existing
*************** pragma Ada_95;
*** 1469,1475 ****
  
  A configuration pragma that establishes Ada 95 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 @cite{Ada} and @cite{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 95 features, but which is intended to be usable from
--- 1482,1488 ----
  
  A configuration pragma that establishes Ada 95 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 95 features, but which is intended to be usable from
*************** pragma Ada_12 (local_NAME);
*** 1532,1538 ****
  
  A configuration pragma that establishes Ada 2012 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 @cite{Ada} and @cite{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 2012 features, but which is intended to be usable from
--- 1545,1551 ----
  
  A configuration pragma that establishes Ada 2012 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 2012 features, but which is intended to be usable from
*************** Syntax:
*** 1574,1588 ****
  pragma Allow_Integer_Address;
  @end example
  
! In almost all versions of GNAT, @cite{System.Address} is a private
  type in accordance with the implementation advice in the RM. This
  means that integer values,
  in particular integer literals, are not allowed as address values.
  If the configuration pragma
! @cite{Allow_Integer_Address} is given, then integer expressions may
! be used anywhere a value of type @cite{System.Address} is required.
  The effect is to introduce an implicit unchecked conversion from the
! integer value to type @cite{System.Address}. The reverse case of using
  an address where an integer type is required is handled analogously.
  The following example compiles without errors:
  
--- 1587,1601 ----
  pragma Allow_Integer_Address;
  @end example
  
! In almost all versions of GNAT, @code{System.Address} is a private
  type in accordance with the implementation advice in the RM. This
  means that integer values,
  in particular integer literals, are not allowed as address values.
  If the configuration pragma
! @code{Allow_Integer_Address} is given, then integer expressions may
! be used anywhere a value of type @code{System.Address} is required.
  The effect is to introduce an implicit unchecked conversion from the
! integer value to type @code{System.Address}. The reverse case of using
  an address where an integer type is required is handled analogously.
  The following example compiles without errors:
  
*************** package AddrAsInt is
*** 1606,1613 ****
  end AddrAsInt;
  @end example
  
! Note that pragma @cite{Allow_Integer_Address} is ignored if @cite{System.Address}
! is not a private type. In implementations of @cite{GNAT} where
  System.Address is a visible integer type,
  this pragma serves no purpose but is ignored
  rather than rejected to allow common sets of sources to be used
--- 1619,1626 ----
  end AddrAsInt;
  @end example
  
! Note that pragma @code{Allow_Integer_Address} is ignored if @code{System.Address}
! is not a private type. In implementations of @code{GNAT} where
  System.Address is a visible integer type,
  this pragma serves no purpose but is ignored
  rather than rejected to allow common sets of sources to be used
*************** pragma Annotate (IDENTIFIER [, IDENTIFIE
*** 1626,1643 ****
  ARG ::= NAME | EXPRESSION
  @end example
  
! This pragma is used to annotate programs.  @cite{identifier} identifies
  the type of annotation.  GNAT verifies that it is an identifier, but does
  not otherwise analyze it. The second optional identifier is also left
  unanalyzed, and by convention is used to control the action of the tool to
! which the annotation is addressed.  The remaining @cite{arg} arguments
  can be either string literals or more generally expressions.
  String literals are assumed to be either of type
! @cite{Standard.String} or else @cite{Wide_String} or @cite{Wide_Wide_String}
  depending on the character literals they contain.
  All other kinds of arguments are analyzed as expressions, and must be
  unambiguous. The last argument if present must have the identifier
! @cite{Entity} and GNAT verifies that a local name is given.
  
  The analyzed pragma is retained in the tree, but not otherwise processed
  by any part of the GNAT compiler, except to generate corresponding note
--- 1639,1656 ----
  ARG ::= NAME | EXPRESSION
  @end example
  
! This pragma is used to annotate programs.  IDENTIFIER identifies
  the type of annotation.  GNAT verifies that it is an identifier, but does
  not otherwise analyze it. The second optional identifier is also left
  unanalyzed, and by convention is used to control the action of the tool to
! which the annotation is addressed.  The remaining ARG arguments
  can be either string literals or more generally expressions.
  String literals are assumed to be either of type
! @code{Standard.String} or else @code{Wide_String} or @code{Wide_Wide_String}
  depending on the character literals they contain.
  All other kinds of arguments are analyzed as expressions, and must be
  unambiguous. The last argument if present must have the identifier
! @code{Entity} and GNAT verifies that a local name is given.
  
  The analyzed pragma is retained in the tree, but not otherwise processed
  by any part of the GNAT compiler, except to generate corresponding note
*************** end if;
*** 1675,1692 ****
  
  The string argument, if given, is the message that will be associated
  with the exception occurrence if the exception is raised.  If no second
! argument is given, the default message is @cite{file}:@cite{nnn},
! where @cite{file} is the name of the source file containing the assert,
! and @cite{nnn} is the line number of the assert.
  
! Note that, as with the @cite{if} statement to which it is equivalent, the
! type of the expression is either @cite{Standard.Boolean}, or any type derived
  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 @cite{Assertion_Policy} or @cite{Check_Policy} pragma is used
! to enable @cite{Assert_Checks}.
  
  If assertions are ignored, then there
  is no run-time effect (and in particular, any side effects from the
--- 1688,1705 ----
  
  The string argument, if given, is the message that will be associated
  with the exception occurrence if the exception is raised.  If no second
! argument is given, the default message is @code{file}:@code{nnn},
! where @code{file} is the name of the source file containing the assert,
! and @code{nnn} is the line number of the assert.
  
! Note that, as with the @code{if} statement to which it is equivalent, the
! type of the expression is either @code{Standard.Boolean}, or any type derived
  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}.
  
  If assertions are ignored, then there
  is no run-time effect (and in particular, any side effects from the
*************** analyzed at compile time, and may cause
*** 1695,1702 ****
  mentioned here for the first time).
  
  If assertions are checked, then the given expression is tested, and if
! it is @cite{False} then @cite{System.Assertions.Raise_Assert_Failure} is called
! which results in the raising of @cite{Assert_Failure} with the given message.
  
  You should generally avoid side effects in the expression arguments of
  this pragma, because these side effects will turn on and off with the
--- 1708,1715 ----
  mentioned here for the first time).
  
  If assertions are checked, then the given expression is tested, and if
! it is @code{False} then @code{System.Assertions.Raise_Assert_Failure} is called
! which results in the raising of @code{Assert_Failure} with the given message.
  
  You should generally avoid side effects in the expression arguments of
  this pragma, because these side effects will turn on and off with the
*************** effect on the program.  However, the exp
*** 1705,1712 ****
  semantic correctness whether or not assertions are enabled, so turning
  assertions on and off cannot affect the legality of a program.
  
! Note that the implementation defined policy @cite{DISABLE}, given in a
! pragma @cite{Assertion_Policy}, can be used to suppress this semantic analysis.
  
  Note: this is a standard language-defined pragma in versions
  of Ada from 2005 on. In GNAT, it is implemented in all versions
--- 1718,1725 ----
  semantic correctness whether or not assertions are enabled, so turning
  assertions on and off cannot affect the legality of a program.
  
! Note that the implementation defined policy @code{DISABLE}, given in a
! pragma @code{Assertion_Policy}, can be used to suppress this semantic analysis.
  
  Note: this is a standard language-defined pragma in versions
  of Ada from 2005 on. In GNAT, it is implemented in all versions
*************** pragma Assert_And_Cut (
*** 1726,1734 ****
    [, string_EXPRESSION]);
  @end example
  
! The effect of this pragma is identical to that of pragma @cite{Assert},
! except that in an @cite{Assertion_Policy} pragma, the identifier
! @cite{Assert_And_Cut} is used to control whether it is ignored or checked
  (or disabled).
  
  The intention is that this be used within a subprogram when the
--- 1739,1747 ----
    [, string_EXPRESSION]);
  @end example
  
! The effect of this pragma is identical to that of pragma @code{Assert},
! except that in an @code{Assertion_Policy} pragma, the identifier
! @code{Assert_And_Cut} is used to control whether it is ignored or checked
  (or disabled).
  
  The intention is that this be used within a subprogram when the
*************** ID_ASSERTION_KIND ::= Assertions
*** 1771,1776 ****
--- 1784,1790 ----
                        Assume               |
                        Contract_Cases       |
                        Debug                |
+                       Ghost                |
                        Invariant            |
                        Invariant'Class      |
                        Loop_Invariant       |
*************** POLICY_IDENTIFIER ::= Check | Disable |
*** 1786,1827 ****
  
  This is a standard Ada 2012 pragma that is available as an
  implementation-defined pragma in earlier versions of Ada.
! The assertion kinds @cite{RM_ASSERTION_KIND} are those defined in
! the Ada standard. The assertion kinds @cite{ID_ASSERTION_KIND}
  are implementation defined additions recognized by the GNAT compiler.
  
  The pragma applies in both cases to pragmas and aspects with matching
! names, e.g. @cite{Pre} applies to the Pre aspect, and @cite{Precondition}
! applies to both the @cite{Precondition} pragma
! and the aspect @cite{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 @cite{CHECK}, then assertions are enabled, i.e.
  the corresponding pragma or aspect is activated.
! If the policy is @cite{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 @cite{SUPPRESSIBLE}, then assertions are enabled by default,
  however, if the @emph{-gnatp} switch is specified all assertions are ignored.
  
! The implementation defined policy @cite{DISABLE} is like
! @cite{IGNORE} except that it completely disables semantic
  checking of the corresponding pragma or aspect. This is
  useful when the pragma or aspect argument references subprograms
  in a with'ed package which is replaced by a dummy package
  for the final build.
  
! The implementation defined assertion kind @cite{Assertions} applies to all
  assertion kinds. The form with no assertion kind given implies this
  choice, so it applies to all assertion kinds (RM defined, and
  implementation defined).
  
! The implementation defined assertion kind @cite{Statement_Assertions}
! applies to @cite{Assert}, @cite{Assert_And_Cut},
! @cite{Assume}, @cite{Loop_Invariant}, and @cite{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{2a}
--- 1800,1841 ----
  
  This is a standard Ada 2012 pragma that is available as an
  implementation-defined pragma in earlier versions of Ada.
! The assertion kinds @code{RM_ASSERTION_KIND} are those defined in
! the Ada standard. The assertion kinds @code{ID_ASSERTION_KIND}
  are implementation defined additions recognized by the GNAT compiler.
  
  The pragma applies in both cases to pragmas and aspects with matching
! names, e.g. @code{Pre} applies to the Pre aspect, and @code{Precondition}
! applies to both the @code{Precondition} pragma
! 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
  checking of the corresponding pragma or aspect. This is
  useful when the pragma or aspect argument references subprograms
  in a with'ed package which is replaced by a dummy package
  for the final build.
  
! The implementation defined assertion kind @code{Assertions} applies to all
  assertion kinds. The form with no assertion kind given implies this
  choice, so it applies to all assertion kinds (RM defined, and
  implementation defined).
  
! The implementation defined assertion kind @code{Statement_Assertions}
! applies to @code{Assert}, @code{Assert_And_Cut},
! @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{2a}
*************** pragma Assume (
*** 1836,1844 ****
    [, string_EXPRESSION]);
  @end example
  
! The effect of this pragma is identical to that of pragma @cite{Assert},
! except that in an @cite{Assertion_Policy} pragma, the identifier
! @cite{Assume} is used to control whether it is ignored or checked
  (or disabled).
  
  The intention is that this be used for assumptions about the
--- 1850,1858 ----
    [, string_EXPRESSION]);
  @end example
  
! The effect of this pragma is identical to that of pragma @code{Assert},
! except that in an @code{Assertion_Policy} pragma, the identifier
! @code{Assume} is used to control whether it is ignored or checked
  (or disabled).
  
  The intention is that this be used for assumptions about the
*************** external environment. So you cannot expe
*** 1846,1852 ****
  or informally that the condition is met, this must be
  established by examining things outside the program itself.
  For example, we may have code that depends on the size of
! @cite{Long_Long_Integer} being at least 64. So we could write:
  
  @example
  pragma Assume (Long_Long_Integer'Size >= 64);
--- 1860,1866 ----
  or informally that the condition is met, this must be
  established by examining things outside the program itself.
  For example, we may have code that depends on the size of
! @code{Long_Long_Integer} being at least 64. So we could write:
  
  @example
  pragma Assume (Long_Long_Integer'Size >= 64);
*************** end loop;
*** 1892,1903 ****
  if V1 and V2 have valid values, then the loop is known at compile
  time not to execute since the lower bound must be greater than the
  upper bound. However in default mode, no such assumption is made,
! and the loop may execute. If @cite{Assume_No_Invalid_Values (On)}
  is given, the compiler will assume that any occurrence of a variable
! other than in an explicit @cite{'Valid} test always has a valid
  value, and the loop above will be optimized away.
  
! The use of @cite{Assume_No_Invalid_Values (On)} is appropriate if
  you know your code is free of uninitialized variables and other
  possible sources of invalid representations, and may result in
  more efficient code. A program that accesses an invalid representation
--- 1906,1917 ----
  if V1 and V2 have valid values, then the loop is known at compile
  time not to execute since the lower bound must be greater than the
  upper bound. However in default mode, no such assumption is made,
! and the loop may execute. If @code{Assume_No_Invalid_Values (On)}
  is given, the compiler will assume that any occurrence of a variable
! other than in an explicit @code{'Valid} test always has a valid
  value, and the loop above will be optimized away.
  
! The use of @code{Assume_No_Invalid_Values (On)} is appropriate if
  you know your code is free of uninitialized variables and other
  possible sources of invalid representations, and may result in
  more efficient code. A program that accesses an invalid representation
*************** case, and it is recommended that these t
*** 1918,1927 ****
  Syntax:
  
  @example
! pragma Asynch_Readers   [ (boolean_EXPRESSION) ];
  @end example
  
! For the semantics of this pragma, see the entry for aspect @cite{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
--- 1932,1941 ----
  Syntax:
  
  @example
! pragma Asynch_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
*************** the SPARK 2014 Reference Manual, section
*** 1932,1941 ****
  Syntax:
  
  @example
! pragma Asynch_Writers   [ (boolean_EXPRESSION) ];
  @end example
  
! For the semantics of this pragma, see the entry for aspect @cite{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
--- 1946,1955 ----
  Syntax:
  
  @example
! pragma Asynch_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
*************** pragma Attribute_Definition
*** 1952,1965 ****
     [Expression =>] EXPRESSION | NAME);
  @end example
  
! If @cite{Attribute} is a known attribute name, this pragma is equivalent to
  the attribute definition clause:
  
  @example
  for Entity'Attribute use Expression;
  @end example
  
! If @cite{Attribute} is not a recognized attribute name, the pragma is
  ignored, and a warning is emitted. This allows source
  code to be written that takes advantage of some new attribute, while remaining
  compilable with earlier compilers.
--- 1966,1979 ----
     [Expression =>] EXPRESSION | NAME);
  @end example
  
! If @code{Attribute} is a known attribute name, this pragma is equivalent to
  the attribute definition clause:
  
  @example
  for Entity'Attribute use Expression;
  @end example
  
! If @code{Attribute} is not a recognized attribute name, the pragma is
  ignored, and a warning is emitted. This allows source
  code to be written that takes advantage of some new attribute, while remaining
  compilable with earlier compilers.
*************** pragma C_Pass_By_Copy
*** 1980,1986 ****
  
  Normally the default mechanism for passing C convention records to C
  convention subprograms is to pass them by reference, as suggested by RM
! B.3(69).  Use the configuration pragma @cite{C_Pass_By_Copy} to change
  this default, by requiring that record formal parameters be passed by
  copy if all of the following conditions are met:
  
--- 1994,2000 ----
  
  Normally the default mechanism for passing C convention records to C
  convention subprograms is to pass them by reference, as suggested by RM
! B.3(69).  Use the configuration pragma @code{C_Pass_By_Copy} to change
  this default, by requiring that record formal parameters be passed by
  copy if all of the following conditions are met:
  
*************** copy if all of the following conditions
*** 1989,1998 ****
  
  @item 
  The size of the record type does not exceed the value specified for
! @cite{Max_Size}.
  
  @item 
! The record type has @cite{Convention C}.
  
  @item 
  The formal parameter has this record type, and the subprogram has a
--- 2003,2012 ----
  
  @item 
  The size of the record type does not exceed the value specified for
! @code{Max_Size}.
  
  @item 
! The record type has @code{Convention C}.
  
  @item 
  The formal parameter has this record type, and the subprogram has a
*************** manner consistent with what C expects if
*** 2004,2011 ****
  C prototype is a struct (rather than a pointer to a struct).
  
  You can also pass records by copy by specifying the convention
! @cite{C_Pass_By_Copy} for the record type, or by using the extended
! @cite{Import} and @cite{Export} pragmas, which allow specification of
  passing mechanisms on a parameter by parameter basis.
  
  @node Pragma Check,Pragma Check_Float_Overflow,Pragma C_Pass_By_Copy,Implementation Defined Pragmas
--- 2018,2025 ----
  C prototype is a struct (rather than a pointer to a struct).
  
  You can also pass records by copy by specifying the convention
! @code{C_Pass_By_Copy} for the record type, or by using the extended
! @code{Import} and @code{Export} pragmas, which allow specification of
  passing mechanisms on a parameter by parameter basis.
  
  @node Pragma Check,Pragma Check_Float_Overflow,Pragma C_Pass_By_Copy,Implementation Defined Pragmas
*************** CHECK_KIND ::= IDENTIFIER           |
*** 2032,2050 ****
                 Invariant'Class
  @end example
  
! This pragma is similar to the predefined pragma @cite{Assert} except that an
  extra identifier argument is present. In conjunction with pragma
! @cite{Check_Policy}, this can be used to define groups of assertions that can
! be independently controlled. The identifier @cite{Assertion} is special, it
! refers to the normal set of pragma @cite{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 @cite{Check_Policy}.
  
! The identifiers @cite{Assertions} and @cite{Statement_Assertions} are not
  permitted as check kinds, since this would cause confusion with the use
! of these identifiers in @cite{Assertion_Policy} and @cite{Check_Policy}
  pragmas, where they are used to refer to sets of assertions.
  
  @node Pragma Check_Float_Overflow,Pragma Check_Name,Pragma Check,Implementation Defined Pragmas
--- 2046,2064 ----
                 Invariant'Class
  @end example
  
! This pragma is similar to the predefined pragma @code{Assert} except that an
  extra identifier argument is present. In conjunction with pragma
! @code{Check_Policy}, this can be used to define groups of assertions that can
! be independently controlled. The identifier @code{Assertion} is special, it
! 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
  permitted as check kinds, since this would cause confusion with the use
! of these identifiers in @code{Assertion_Policy} and @code{Check_Policy}
  pragmas, where they are used to refer to sets of assertions.
  
  @node Pragma Check_Float_Overflow,Pragma Check_Name,Pragma Check,Implementation Defined Pragmas
*************** Syntax:
*** 2060,2067 ****
  pragma Check_Float_Overflow;
  @end example
  
! In Ada, the predefined floating-point types (@cite{Short_Float},
! @cite{Float}, @cite{Long_Float}, @cite{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.
--- 2074,2081 ----
  pragma Check_Float_Overflow;
  @end example
  
! 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.
*************** can have the same base range as its base
*** 2082,2103 ****
  subtype My_Float is Float range Float'Range;
  @end example
  
! Here @cite{My_Float} has the same range as
! @cite{Float} but is constrained, so operations on
! @cite{My_Float} values will be checked for overflow
  against this range.
  
  This style will achieve the desired goal, but
  it is often more convenient to be able to simply use
  the standard predefined floating-point types as long
  as overflow checking could be guaranteed.
! The @cite{Check_Float_Overflow}
  configuration pragma achieves this effect. If a unit is compiled
  subject to this configuration pragma, then all operations
  on predefined floating-point types including operations on
  base types of these floating-point types will be treated as
  though those types were constrained, and overflow checks
! will be generated. The @cite{Constraint_Error}
  exception is raised if the result is out of range.
  
  This mode can also be set by use of the compiler
--- 2096,2117 ----
  subtype My_Float is Float range Float'Range;
  @end example
  
! Here @code{My_Float} has the same range as
! @code{Float} but is constrained, so operations on
! @code{My_Float} values will be checked for overflow
  against this range.
  
  This style will achieve the desired goal, but
  it is often more convenient to be able to simply use
  the standard predefined floating-point types as long
  as overflow checking could be guaranteed.
! The @code{Check_Float_Overflow}
  configuration pragma achieves this effect. If a unit is compiled
  subject to this configuration pragma, then all operations
  on predefined floating-point types including operations on
  base types of these floating-point types will be treated as
  though those types were constrained, and overflow checks
! will be generated. The @code{Constraint_Error}
  exception is raised if the result is out of range.
  
  This mode can also be set by use of the compiler
*************** are present in a partition mentioning th
*** 2127,2140 ****
  check name is introduced.
  
  An implementation defined check name introduced with this pragma may
! be used in only three contexts: @cite{pragma Suppress},
! @cite{pragma Unsuppress},
! and as the prefix of a @cite{Check_Name'Enabled} attribute reference. For
  any of these three cases, the check name must be visible. A check
  name is visible if it is in the configuration pragmas applying to
  the current unit, or if it appears at the start of any unit that
  is part of the dependency set of the current unit (e.g., units that
! are mentioned in @cite{with} clauses).
  
  Check names introduced by this pragma are subject to control by compiler
  switches (in particular -gnatp) in the usual manner.
--- 2141,2154 ----
  check name is introduced.
  
  An implementation defined check name introduced with this pragma may
! be used in only three contexts: @code{pragma Suppress},
! @code{pragma Unsuppress},
! and as the prefix of a @code{Check_Name'Enabled} attribute reference. For
  any of these three cases, the check name must be visible. A check
  name is visible if it is in the configuration pragmas applying to
  the current unit, or if it appears at the start of any unit that
  is part of the dependency set of the current unit (e.g., units that
! are mentioned in @code{with} clauses).
  
  Check names introduced by this pragma are subject to control by compiler
  switches (in particular -gnatp) in the usual manner.
*************** POLICY_IDENTIFIER ::= ON | OFF | CHECK |
*** 2179,2223 ****
  @end example
  
  This pragma is used to set the checking policy for assertions (specified
! by aspects or pragmas), the @cite{Debug} pragma, or additional checks
! to be checked using the @cite{Check} pragma. It may appear either as
  a configuration pragma, or within a declarative part of package. In the
  latter case, it applies from the point where it appears to the end of
! the declarative region (like pragma @cite{Suppress}).
  
! The @cite{Check_Policy} pragma is similar to the
! predefined @cite{Assertion_Policy} pragma,
  and if the check kind corresponds to one of the assertion kinds that
! are allowed by @cite{Assertion_Policy}, then the effect is identical.
  
  If the first argument is Debug, then the policy applies to Debug pragmas,
! disabling their effect if the policy is @cite{OFF}, @cite{DISABLE}, or
! @cite{IGNORE}, and allowing them to execute with normal semantics if
! the policy is @cite{ON} or @cite{CHECK}. In addition if the policy is
! @cite{DISABLE}, then the procedure call in @cite{Debug} pragmas will
  be totally ignored and not analyzed semantically.
  
  Finally the first argument may be some other identifier than the above
  possibilities, in which case it controls a set of named assertions
! that can be checked using pragma @cite{Check}. For example, if the pragma:
  
  @example
  pragma Check_Policy (Critical_Error, OFF);
  @end example
  
! is given, then subsequent @cite{Check} pragmas whose first argument is also
! @cite{Critical_Error} will be disabled.
  
! The check policy is @cite{OFF} to turn off corresponding checks, and @cite{ON}
  to turn on corresponding checks. The default for a set of checks for which no
! @cite{Check_Policy} is given is @cite{OFF} unless the compiler switch
  @emph{-gnata} is given, which turns on all checks by default.
  
! The check policy settings @cite{CHECK} and @cite{IGNORE} are recognized
! as synonyms for @cite{ON} and @cite{OFF}. These synonyms are provided for
! compatibility with the standard @cite{Assertion_Policy} pragma. The check
! policy setting @cite{DISABLE} causes the second argument of a corresponding
! @cite{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{36}
--- 2193,2237 ----
  @end example
  
  This pragma is used to set the checking policy for assertions (specified
! by aspects or pragmas), the @code{Debug} pragma, or additional checks
! to be checked using the @code{Check} pragma. It may appear either as
  a configuration pragma, or within a declarative part of package. In the
  latter case, it applies from the point where it appears to the end of
! the declarative region (like pragma @code{Suppress}).
  
! The @code{Check_Policy} pragma is similar to the
! predefined @code{Assertion_Policy} pragma,
  and if the check kind corresponds to one of the assertion kinds that
! are allowed by @code{Assertion_Policy}, then the effect is identical.
  
  If the first argument is Debug, then the policy applies to Debug pragmas,
! disabling their effect if the policy is @code{OFF}, @code{DISABLE}, or
! @code{IGNORE}, and allowing them to execute with normal semantics if
! the policy is @code{ON} or @code{CHECK}. In addition if the policy is
! @code{DISABLE}, then the procedure call in @code{Debug} pragmas will
  be totally ignored and not analyzed semantically.
  
  Finally the first argument may be some other identifier than the above
  possibilities, in which case it controls a set of named assertions
! that can be checked using pragma @code{Check}. For example, if the pragma:
  
  @example
  pragma Check_Policy (Critical_Error, OFF);
  @end example
  
! is given, then subsequent @code{Check} pragmas whose first argument is also
! @code{Critical_Error} will be disabled.
  
! 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
! compatibility with the standard @code{Assertion_Policy} pragma. The check
! policy setting @code{DISABLE} causes the second argument of a corresponding
! @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{36}
*************** Syntax:
*** 2230,2239 ****
  pragma Comment (static_string_EXPRESSION);
  @end example
  
! This is almost identical in effect to pragma @cite{Ident}.  It allows the
  placement of a comment into the object file and hence into the
  executable file if the operating system permits such usage.  The
! difference is that @cite{Comment}, unlike @cite{Ident}, has
  no limitations on placement of the pragma (it can be placed
  anywhere in the main source unit), and if more than one pragma
  is used, all comments are retained.
--- 2244,2253 ----
  pragma Comment (static_string_EXPRESSION);
  @end example
  
! This is almost identical in effect to pragma @code{Ident}.  It allows the
  placement of a comment into the object file and hence into the
  executable file if the operating system permits such usage.  The
! difference is that @code{Comment}, unlike @code{Ident}, has
  no limitations on placement of the pragma (it can be placed
  anywhere in the main source unit), and if more than one pragma
  is used, all comments are retained.
*************** EXTERNAL_SYMBOL ::=
*** 2257,2271 ****
  @end example
  
  This pragma enables the shared use of variables stored in overlaid
! linker areas corresponding to the use of @cite{COMMON}
  in Fortran.  The single
! object @cite{LOCAL_NAME} is assigned to the area designated by
! the @cite{External} argument.
  You may define a record to correspond to a series
! of fields.  The @cite{Size} argument
  is syntax checked in GNAT, but otherwise ignored.
  
! @cite{Common_Object} is not supported on all platforms.  If no
  support is available, then the code generator will issue a message
  indicating that the necessary attribute for implementation of this
  pragma is not available.
--- 2271,2285 ----
  @end example
  
  This pragma enables the shared use of variables stored in overlaid
! linker areas corresponding to the use of @code{COMMON}
  in Fortran.  The single
! object @code{LOCAL_NAME} is assigned to the area designated by
! the @code{External} argument.
  You may define a record to correspond to a series
! of fields.  The @code{Size} argument
  is syntax checked in GNAT, but otherwise ignored.
  
! @code{Common_Object} is not supported on all platforms.  If no
  support is available, then the code generator will issue a message
  indicating that the necessary attribute for implementation of this
  pragma is not available.
*************** pragma Complex_Representation
*** 2384,2390 ****
          ([Entity =>] LOCAL_NAME);
  @end example
  
! The @cite{Entity} argument must be the name of a record type which has
  two fields of the same floating-point type.  The effect of this pragma is
  to force gcc to use the special internal complex representation form for
  this record, which may be more efficient.  Note that this may result in
--- 2398,2404 ----
          ([Entity =>] LOCAL_NAME);
  @end example
  
! The @code{Entity} argument must be the name of a record type which has
  two fields of the same floating-point type.  The effect of this pragma is
  to force gcc to use the special internal complex representation form for
  this record, which may be more efficient.  Note that this may result in
*************** ALIGNMENT_CHOICE ::=
*** 2418,2424 ****
  @end example
  
  Specifies the alignment of components in array or record types.
! The meaning of the @cite{Form} argument is as follows:
  
  @quotation
  
--- 2432,2438 ----
  @end example
  
  Specifies the alignment of components in array or record types.
! The meaning of the @code{Form} argument is as follows:
  
  @quotation
  
*************** bytes.  Components that are larger than
*** 2452,2458 ****
  
  Specifies that array or record components are byte aligned, i.e.,
  aligned on boundaries determined by the value of the constant
! @cite{System.Storage_Unit}.
  
  @geindex Default (in pragma Component_Alignment)
  
--- 2466,2472 ----
  
  Specifies that array or record components are byte aligned, i.e.,
  aligned on boundaries determined by the value of the constant
! @code{System.Storage_Unit}.
  
  @geindex Default (in pragma Component_Alignment)
  
*************** aligned on boundaries determined by the
*** 2460,2478 ****
  
  Specifies that array or record components are aligned on default
  boundaries, appropriate to the underlying hardware or operating system or
! both. The @cite{Default} choice is the same as @cite{Component_Size} (natural
  alignment).
  @end table
  
! If the @cite{Name} parameter is present, @cite{type_LOCAL_NAME} must
  refer to a local record or array type, and the specified alignment
  choice applies to the specified type.  The use of
! @cite{Component_Alignment} together with a pragma @cite{Pack} causes the
! @cite{Component_Alignment} pragma to be ignored.  The use of
! @cite{Component_Alignment} together with a record representation clause
  is only effective for fields not specified by the representation clause.
  
! If the @cite{Name} parameter is absent, the pragma can be used as either
  a configuration pragma, in which case it applies to one or more units in
  accordance with the normal rules for configuration pragmas, or it can be
  used within a declarative part, in which case it applies to types that
--- 2474,2492 ----
  
  Specifies that array or record components are aligned on default
  boundaries, appropriate to the underlying hardware or operating system or
! both. The @code{Default} choice is the same as @code{Component_Size} (natural
  alignment).
  @end table
  
! If the @code{Name} parameter is present, @code{type_LOCAL_NAME} must
  refer to a local record or array type, and the specified alignment
  choice applies to the specified type.  The use of
! @code{Component_Alignment} together with a pragma @code{Pack} causes the
! @code{Component_Alignment} pragma to be ignored.  The use of
! @code{Component_Alignment} together with a record representation clause
  is only effective for fields not specified by the representation clause.
  
! If the @code{Name} parameter is absent, the pragma can be used as either
  a configuration pragma, in which case it applies to one or more units in
  accordance with the normal rules for configuration pragmas, or it can be
  used within a declarative part, in which case it applies to types that
*************** to be applied to any record or array typ
*** 2482,2488 ****
  representation.
  
  If the alignment for a record or array type is not specified (using
! pragma @cite{Pack}, pragma @cite{Component_Alignment}, or a record rep
  clause), the GNAT uses the default alignment as described previously.
  
  @node Pragma Constant_After_Elaboration,Pragma Contract_Cases,Pragma Component_Alignment,Implementation Defined Pragmas
--- 2496,2502 ----
  representation.
  
  If the alignment for a record or array type is not specified (using
! pragma @code{Pack}, pragma @code{Component_Alignment}, or a record rep
  clause), the GNAT uses the default alignment as described previously.
  
  @node Pragma Constant_After_Elaboration,Pragma Contract_Cases,Pragma Component_Alignment,Implementation Defined Pragmas
*************** pragma Constant_After_Elaboration [ (boo
*** 2497,2503 ****
  @end example
  
  For the semantics of this pragma, see the entry for aspect
! @cite{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{41}@anchor{gnat_rm/implementation_defined_pragmas pragma-contract-cases}@anchor{42}
--- 2511,2517 ----
  @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{41}@anchor{gnat_rm/implementation_defined_pragmas pragma-contract-cases}@anchor{42}
*************** CASE_GUARD ::= boolean_EXPRESSION | othe
*** 2518,2526 ****
  CONSEQUENCE ::= boolean_EXPRESSION
  @end example
  
! The @cite{Contract_Cases} pragma allows defining fine-grain specifications
  that can complement or replace the contract given by a precondition and a
! postcondition. Additionally, the @cite{Contract_Cases} pragma can be used
  by testing and formal verification tools. The compiler checks its validity and,
  depending on the assertion policy at the point of declaration of the pragma,
  it may insert a check in the executable. For code generation, the contract
--- 2532,2540 ----
  CONSEQUENCE ::= boolean_EXPRESSION
  @end example
  
! The @code{Contract_Cases} pragma allows defining fine-grain specifications
  that can complement or replace the contract given by a precondition and a
! postcondition. Additionally, the @code{Contract_Cases} pragma can be used
  by testing and formal verification tools. The compiler checks its validity and,
  depending on the assertion policy at the point of declaration of the pragma,
  it may insert a check in the executable. For code generation, the contract
*************** The postcondition ensures that for the c
*** 2548,2570 ****
  the corrresponding consequence is True on exit. Other consequence expressions
  are not evaluated.
  
! A precondition @cite{P} and postcondition @cite{Q} can also be
  expressed as contract cases:
  
  @example
  pragma Contract_Cases (P => Q);
  @end example
  
! The placement and visibility rules for @cite{Contract_Cases} pragmas are
  identical to those described for preconditions and postconditions.
  
  The compiler checks that boolean expressions given in conditions and
  consequences are valid, where the rules for conditions are the same as
! the rule for an expression in @cite{Precondition} and the rules for
  consequences are the same as the rule for an expression in
! @cite{Postcondition}. In particular, attributes @cite{'Old} and
! @cite{'Result} can only be used within consequence expressions.
! The condition for the last contract case may be @cite{others}, to denote
  any case not captured by the previous cases. The
  following is an example of use within a package spec:
  
--- 2562,2584 ----
  the corrresponding consequence is True on exit. Other consequence expressions
  are not evaluated.
  
! A precondition @code{P} and postcondition @code{Q} can also be
  expressed as contract cases:
  
  @example
  pragma Contract_Cases (P => Q);
  @end example
  
! The placement and visibility rules for @code{Contract_Cases} pragmas are
  identical to those described for preconditions and postconditions.
  
  The compiler checks that boolean expressions given in conditions and
  consequences are valid, where the rules for conditions are the same as
! the rule for an expression in @code{Precondition} and the rules for
  consequences are the same as the rule for an expression in
! @code{Postcondition}. In particular, attributes @code{'Old} and
! @code{'Result} can only be used within consequence expressions.
! The condition for the last contract case may be @code{others}, to denote
  any case not captured by the previous cases. The
  following is an example of use within a package spec:
  
*************** following is an example of use within a
*** 2572,2580 ****
  package Math_Functions is
     ...
     function Sqrt (Arg : Float) return Float;
!    pragma Contract_Cases ((Arg in 0 .. 99) => Sqrt'Result < 10,
!                           Arg >= 100       => Sqrt'Result >= 10,
!                           others           => Sqrt'Result = 0);
     ...
  end Math_Functions;
  @end example
--- 2586,2594 ----
  package Math_Functions is
     ...
     function Sqrt (Arg : Float) return Float;
!    pragma Contract_Cases (((Arg in 0.0 .. 99.0) => Sqrt'Result < 10.0,
!                            Arg >= 100.0         => Sqrt'Result >= 10.0,
!                            others               => Sqrt'Result = 0.0));
     ...
  end Math_Functions;
  @end example
*************** pragma Convention_Identifier (
*** 2601,2609 ****
  @end example
  
  This pragma provides a mechanism for supplying synonyms for existing
! convention identifiers. The @cite{Name} identifier can subsequently
  be used as a synonym for the given convention in other pragmas (including
! for example pragma @cite{Import} or another @cite{Convention_Identifier}
  pragma). As an example of the use of this, suppose you had legacy code
  which used Fortran77 as the identifier for Fortran. Then the pragma:
  
--- 2615,2623 ----
  @end example
  
  This pragma provides a mechanism for supplying synonyms for existing
! convention identifiers. The @code{Name} identifier can subsequently
  be used as a synonym for the given convention in other pragmas (including
! for example pragma @code{Import} or another @code{Convention_Identifier}
  pragma). As an example of the use of this, suppose you had legacy code
  which used Fortran77 as the identifier for Fortran. Then the pragma:
  
*************** which used Fortran77 as the identifier f
*** 2611,2623 ****
  pragma Convention_Identifier (Fortran77, Fortran);
  @end example
  
! would allow the use of the convention identifier @cite{Fortran77} in
  subsequent code, avoiding the need to modify the sources. As another
  example, you could use this to parameterize convention requirements
! according to systems. Suppose you needed to use @cite{Stdcall} on
! windows systems, and @cite{C} on some other system, then you could
! define a convention identifier @cite{Library} and use a single
! @cite{Convention_Identifier} pragma to specify which convention
  would be used system-wide.
  
  @node Pragma CPP_Class,Pragma CPP_Constructor,Pragma Convention_Identifier,Implementation Defined Pragmas
--- 2625,2637 ----
  pragma Convention_Identifier (Fortran77, Fortran);
  @end example
  
! would allow the use of the convention identifier @code{Fortran77} in
  subsequent code, avoiding the need to modify the sources. As another
  example, you could use this to parameterize convention requirements
! according to systems. Suppose you needed to use @code{Stdcall} on
! windows systems, and @code{C} on some other system, then you could
! define a convention identifier @code{Library} and use a single
! @code{Convention_Identifier} pragma to specify which convention
  would be used system-wide.
  
  @node Pragma CPP_Class,Pragma CPP_Constructor,Pragma Convention_Identifier,Implementation Defined Pragmas
*************** externally declared C++ class type, and
*** 2639,2656 ****
  that C++ would lay out the type. If the C++ class has virtual primitives
  then the record must be declared as a tagged record type.
  
! Types for which @cite{CPP_Class} is specified do not have assignment or
  equality operators defined (such operations can be imported or declared
  as subprograms as required). Initialization is allowed only by constructor
! functions (see pragma @cite{CPP_Constructor}). Such types are implicitly
  limited if not explicitly declared as limited or derived from a limited
  type, and an error is issued in that case.
  
  See @ref{45,,Interfacing to C++} for related information.
  
! Note: Pragma @cite{CPP_Class} is currently obsolete. It is supported
  for backward compatibility but its functionality is available
! using pragma @cite{Import} with @cite{Convention} = @cite{CPP}.
  
  @node Pragma CPP_Constructor,Pragma CPP_Virtual,Pragma CPP_Class,Implementation Defined Pragmas
  @anchor{gnat_rm/implementation_defined_pragmas pragma-cpp-constructor}@anchor{46}
--- 2653,2670 ----
  that C++ would lay out the type. If the C++ class has virtual primitives
  then the record must be declared as a tagged record type.
  
! Types for which @code{CPP_Class} is specified do not have assignment or
  equality operators defined (such operations can be imported or declared
  as subprograms as required). Initialization is allowed only by constructor
! functions (see pragma @code{CPP_Constructor}). Such types are implicitly
  limited if not explicitly declared as limited or derived from a limited
  type, and an error is issued in that case.
  
  See @ref{45,,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{46}
*************** pragma CPP_Constructor ([Entity =>] LOCA
*** 2668,2708 ****
  @end example
  
  This pragma identifies an imported function (imported in the usual way
! with pragma @cite{Import}) as corresponding to a C++ constructor. If
! @cite{External_Name} and @cite{Link_Name} are not specified then the
! @cite{Entity} argument is a name that must have been previously mentioned
! in a pragma @cite{Import} with @cite{Convention} = @cite{CPP}. Such name
  must be of one of the following forms:
  
  
  @itemize *
  
  @item 
! @strong{function} @cite{Fname} @strong{return} T`
  
  @item 
! @strong{function} @cite{Fname} @strong{return} T'Class
  
  @item 
! @strong{function} @cite{Fname} (...) @strong{return} T`
  
  @item 
! @strong{function} @cite{Fname} (...) @strong{return} T'Class
  @end itemize
  
! where @cite{T} is a limited record type imported from C++ with pragma
! @cite{Import} and @cite{Convention} = @cite{CPP}.
  
  The first two forms import the default constructor, used when an object
! of type @cite{T} is created on the Ada side with no explicit constructor.
  The latter two forms cover all the non-default constructors of the type.
  See the GNAT User's Guide for details.
  
  If no constructors are imported, it is impossible to create any objects
  on the Ada side and the type is implicitly declared abstract.
  
! Pragma @cite{CPP_Constructor} is intended primarily for automatic generation
! using an automatic binding generator tool (such as the @cite{-fdump-ada-spec}
  GCC switch).
  See @ref{45,,Interfacing to C++} for more related information.
  
--- 2682,2722 ----
  @end example
  
  This pragma identifies an imported function (imported in the usual way
! with pragma @code{Import}) as corresponding to a C++ constructor. If
! @code{External_Name} and @code{Link_Name} are not specified then the
! @code{Entity} argument is a name that must have been previously mentioned
! in a pragma @code{Import} with @code{Convention} = @code{CPP}. Such name
  must be of one of the following forms:
  
  
  @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
! @code{Import} and @code{Convention} = @code{CPP}.
  
  The first two forms import the default constructor, used when an object
! of type @code{T} is created on the Ada side with no explicit constructor.
  The latter two forms cover all the non-default constructors of the type.
  See the GNAT User's Guide for details.
  
  If no constructors are imported, it is impossible to create any objects
  on the Ada side and the type is implicitly declared abstract.
  
! 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{45,,Interfacing to C++} for more related information.
  
*************** the same object layout as the G++ compil
*** 2743,2749 ****
  
  See @ref{45,,Interfacing to C++} for related information.
  
! @node Pragma CPU,Pragma Default_Initial_Condition,Pragma CPP_Vtable,Implementation Defined Pragmas
  @anchor{gnat_rm/implementation_defined_pragmas pragma-cpu}@anchor{49}
  @section Pragma CPU
  
--- 2757,2763 ----
  
  See @ref{45,,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{49}
  @section Pragma CPU
  
*************** This pragma is standard in Ada 2012, but
*** 2758,2765 ****
  versions of Ada as an implementation-defined pragma.
  See Ada 2012 Reference Manual for details.
  
! @node Pragma Default_Initial_Condition,Pragma Debug,Pragma CPU,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id8}@anchor{4a}@anchor{gnat_rm/implementation_defined_pragmas pragma-default-initial-condition}@anchor{4b}
  @section Pragma Default_Initial_Condition
  
  
--- 2772,2794 ----
  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{4a}
! @section Pragma Deadline_Floor
! 
! 
! Syntax:
! 
! @example
! pragma Deadline_Floor (time_span_EXPRESSION);
! @end example
! 
! This pragma applies only to protected types and specifies the floor
! 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{4b}@anchor{gnat_rm/implementation_defined_pragmas pragma-default-initial-condition}@anchor{4c}
  @section Pragma Default_Initial_Condition
  
  
*************** pragma Default_Initial_Condition [ (null
*** 2770,2779 ****
  @end example
  
  For the semantics of this pragma, see the entry for aspect
! @cite{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{4c}
  @section Pragma Debug
  
  
--- 2799,2808 ----
  @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{4d}
  @section Pragma Debug
  
  
*************** If debug pragmas are not enabled or if t
*** 2794,2807 ****
  to False, this pragma has no effect. If debug pragmas are enabled, the
  semantics of the pragma is exactly equivalent to the procedure call statement
  corresponding to the argument with a terminating semicolon. Pragmas are
! permitted in sequences of declarations, so you can use pragma @cite{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 @cite{Check_Policy} with a first argument of
! @cite{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{4d}
  @section Pragma Debug_Policy
  
  
--- 2823,2836 ----
  to False, this pragma has no effect. If debug pragmas are enabled, the
  semantics of the pragma is exactly equivalent to the procedure call statement
  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{4e}
  @section Pragma Debug_Policy
  
  
*************** Syntax:
*** 2811,2822 ****
  pragma Debug_Policy (CHECK | DISABLE | IGNORE | ON | OFF);
  @end example
  
! This pragma is equivalent to a corresponding @cite{Check_Policy} pragma
! with a first argument of @cite{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{4e}
  @section Pragma Default_Scalar_Storage_Order
  
  
--- 2840,2851 ----
  pragma Debug_Policy (CHECK | DISABLE | IGNORE | ON | OFF);
  @end example
  
! This pragma is equivalent to a corresponding @code{Check_Policy} pragma
! 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{4f}
  @section Pragma Default_Scalar_Storage_Order
  
  
*************** Syntax:
*** 2830,2836 ****
  pragma Default_Scalar_Storage_Order (High_Order_First | Low_Order_First);
  @end example
  
! Normally if no explicit @cite{Scalar_Storage_Order} is given for a record
  type or array type, then the scalar storage order defaults to the ordinary
  default for the target. But this default may be overridden using this pragma.
  The pragma may appear as a configuration pragma, or locally within a package
--- 2859,2865 ----
  pragma Default_Scalar_Storage_Order (High_Order_First | Low_Order_First);
  @end example
  
! Normally if no explicit @code{Scalar_Storage_Order} is given for a record
  type or array type, then the scalar storage order defaults to the ordinary
  default for the target. But this default may be overridden using this pragma.
  The pragma may appear as a configuration pragma, or locally within a package
*************** package DSSO1 is
*** 2874,2883 ****
  end DSSO1;
  @end example
  
! In this example record types L.. have @cite{Low_Order_First} scalar
! storage order, and record types H.. have @cite{High_Order_First}.
! Note that in the case of @cite{H4a}, the order is not inherited
! from the parent type. Only an explicitly set @cite{Scalar_Storage_Order}
  gets inherited on type derivation.
  
  If this pragma is used as a configuration pragma which appears within a
--- 2903,2912 ----
  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.
  
  If this pragma is used as a configuration pragma which appears within a
*************** it may significantly degrade the run-tim
*** 2889,2895 ****
  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{4f}
  @section Pragma Default_Storage_Pool
  
  
--- 2918,2924 ----
  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{50}
  @section Pragma Default_Storage_Pool
  
  
*************** versions of Ada as an implementation-def
*** 2906,2912 ****
  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 pragma-depends}@anchor{50}@anchor{gnat_rm/implementation_defined_pragmas id9}@anchor{51}
  @section Pragma Depends
  
  
--- 2935,2941 ----
  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 pragma-depends}@anchor{51}@anchor{gnat_rm/implementation_defined_pragmas id9}@anchor{52}
  @section Pragma Depends
  
  
*************** INPUT  ::= NAME
*** 2935,2945 ****
  where FUNCTION_RESULT is a function Result attribute_reference
  @end example
  
! For the semantics of this pragma, see the entry for aspect @cite{Depends} in the
  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{52}
  @section Pragma Detect_Blocking
  
  
--- 2964,2974 ----
  where FUNCTION_RESULT is a function Result attribute_reference
  @end example
  
! For the semantics of this pragma, see the entry for aspect @code{Depends} in the
  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{53}
  @section Pragma Detect_Blocking
  
  
*************** blocking operations within a protected o
*** 2957,2963 ****
  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{53}
  @section Pragma Disable_Atomic_Synchronization
  
  
--- 2986,2992 ----
  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{54}
  @section Pragma Disable_Atomic_Synchronization
  
  
*************** be turned off using this pragma in cases
*** 2977,2989 ****
  required.
  
  The placement and scope rules for this pragma are the same as those
! for @cite{pragma Suppress}. In particular it can be used as a
  configuration  pragma, or in a declaration sequence where it applies
! till the end of the scope. If an @cite{Entity} argument is present,
  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{54}
  @section Pragma Dispatching_Domain
  
  
--- 3006,3018 ----
  required.
  
  The placement and scope rules for this pragma are the same as those
! for @code{pragma Suppress}. In particular it can be used as a
  configuration  pragma, or in a declaration sequence where it applies
! till the end of the scope. If an @code{Entity} argument is present,
  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{55}
  @section Pragma Dispatching_Domain
  
  
*************** versions of Ada as an implementation-def
*** 2998,3018 ****
  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{55}@anchor{gnat_rm/implementation_defined_pragmas pragma-effective-reads}@anchor{56}
  @section Pragma Effective_Reads
  
  
  Syntax:
  
  @example
! pragma Effective_Reads  [ (boolean_EXPRESSION) ];
  @end example
  
! For the semantics of this pragma, see the entry for aspect @cite{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{57}@anchor{gnat_rm/implementation_defined_pragmas pragma-effective-writes}@anchor{58}
  @section Pragma Effective_Writes
  
  
--- 3027,3047 ----
  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{56}@anchor{gnat_rm/implementation_defined_pragmas pragma-effective-reads}@anchor{57}
  @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{58}@anchor{gnat_rm/implementation_defined_pragmas pragma-effective-writes}@anchor{59}
  @section Pragma Effective_Writes
  
  
*************** Syntax:
*** 3022,3032 ****
  pragma Effective_Writes [ (boolean_EXPRESSION) ];
  @end example
  
! For the semantics of this pragma, see the entry for aspect @cite{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{59}
  @section Pragma Elaboration_Checks
  
  
--- 3051,3061 ----
  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{5a}
  @section Pragma Elaboration_Checks
  
  
*************** pragma Elaboration_Checks (Dynamic | Sta
*** 3040,3057 ****
  
  This is a configuration pragma that provides control over the
  elaboration model used by the compilation affected by the
! pragma.  If the parameter is @cite{Dynamic},
  then the dynamic elaboration
  model described in the Ada Reference Manual is used, as though
  the @emph{-gnatE} switch had been specified on the command
! line.  If the parameter is @cite{Static}, then the default GNAT static
  model is used.  This configuration pragma overrides the setting
  of the command line.  For full details on the elaboration models
  used by the GNAT compiler, see the chapter on elaboration order handling
  in the @emph{GNAT User's Guide}.
  
  @node Pragma Eliminate,Pragma Enable_Atomic_Synchronization,Pragma Elaboration_Checks,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-eliminate}@anchor{5a}
  @section Pragma Eliminate
  
  
--- 3069,3086 ----
  
  This is a configuration pragma that provides control over the
  elaboration model used by the compilation affected by the
! pragma.  If the parameter is @code{Dynamic},
  then the dynamic elaboration
  model described in the Ada Reference Manual is used, as though
  the @emph{-gnatE} switch had been specified on the command
! line.  If the parameter is @code{Static}, then the default GNAT static
  model is used.  This configuration pragma overrides the setting
  of the command line.  For full details on the elaboration models
  used by the GNAT compiler, see the chapter on elaboration order handling
  in the @emph{GNAT User's Guide}.
  
  @node Pragma Eliminate,Pragma Enable_Atomic_Synchronization,Pragma Elaboration_Checks,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-eliminate}@anchor{5b}
  @section Pragma Eliminate
  
  
*************** in the @emph{GNAT User's Guide}.
*** 3060,3135 ****
  Syntax:
  
  @example
! pragma Eliminate ([Entity          =>] DEFINING_DESIGNATOR,
!                   [Source_Location =>] STRING_LITERAL);
  @end example
  
! The string literal given for the source location is a string which
! specifies the line number of the occurrence of the entity, using
! the syntax for SOURCE_TRACE given below:
  
! @example
! SOURCE_TRACE     ::= SOURCE_REFERENCE [LBRACKET SOURCE_TRACE RBRACKET]
  
- LBRACKET         ::= [
- RBRACKET         ::= ]
  
! SOURCE_REFERENCE ::= FILE_NAME : LINE_NUMBER
  
! LINE_NUMBER      ::= DIGIT @{DIGIT@}
! @end example
  
! Spaces around the colon in a @cite{Source_Reference} are optional.
  
! The @cite{DEFINING_DESIGNATOR} matches the defining designator used in an
! explicit subprogram declaration, where the @cite{entity} name in this
! designator appears on the source line specified by the source location.
  
! The source trace that is given as the @cite{Source_Location} shall obey the
! following rules. The @cite{FILE_NAME} is the short name (with no directory
! information) of an Ada source file, given using exactly the required syntax
! for the underlying file system (e.g. case is important if the underlying
! operating system is case sensitive). @cite{LINE_NUMBER} gives the line
! number of the occurrence of the @cite{entity}
! as a decimal literal without an exponent or point. If an @cite{entity} is not
! declared in a generic instantiation (this includes generic subprogram
! instances), the source trace includes only one source reference. If an entity
! is declared inside a generic instantiation, its source trace (when parsing
! from left to right) starts with the source location of the declaration of the
! entity in the generic unit and ends with the source location of the
! instantiation (it is given in square brackets). This approach is recursively
! used in case of nested instantiations: the rightmost (nested most deeply in
! square brackets) element of the source trace is the location of the outermost
! instantiation, the next to left element is the location of the next (first
! nested) instantiation in the code of the corresponding generic unit, and so
! on, and the leftmost element (that is out of any square brackets) is the
! location of the declaration of the entity to eliminate in a generic unit.
  
! Note that the @cite{Source_Location} argument specifies which of a set of
! similarly named entities is being eliminated, dealing both with overloading,
! and also appearance of the same entity name in different scopes.
  
! This pragma indicates that the given entity is not used in the program to be
! compiled and built. The effect of the pragma is to allow the compiler to
! eliminate the code or data associated with the named entity. Any reference to
! an eliminated entity causes a compile-time or link-time error.
  
! The intention of pragma @cite{Eliminate} is to allow a program to be compiled
! in a system-independent manner, with unused entities eliminated, without
  needing to modify the source text. Normally the required set of
! @cite{Eliminate} pragmas is constructed automatically using the gnatelim tool.
  
  Any source file change that removes, splits, or
! adds lines may make the set of Eliminate pragmas invalid because their
! @cite{Source_Location} argument values may get out of date.
  
! Pragma @cite{Eliminate} may be used where the referenced entity is a dispatching
  operation. In this case all the subprograms to which the given operation can
  dispatch are considered to be unused (are never called as a result of a direct
  or a dispatching call).
  
  @node Pragma Enable_Atomic_Synchronization,Pragma Export_Function,Pragma Eliminate,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-enable-atomic-synchronization}@anchor{5b}
  @section Pragma Enable_Atomic_Synchronization
  
  
--- 3089,3246 ----
  Syntax:
  
  @example
! pragma Eliminate (
!             [  Unit_Name       => ] IDENTIFIER | SELECTED_COMPONENT ,
!             [  Entity          => ] IDENTIFIER |
!                                     SELECTED_COMPONENT |
!                                     STRING_LITERAL
!             [, Source_Location =>   SOURCE_TRACE ] );
! 
!         SOURCE_TRACE    ::= STRING_LITERAL
  @end example
  
! This pragma indicates that the given entity is not used in the program to be
! compiled and built, thus allowing the compiler to
! eliminate the code or data associated with the named entity. Any reference to
! an eliminated entity causes a compile-time or link-time error.
  
! The pragma has the following semantics, where @code{U} is the unit specified by
! the @code{Unit_Name} argument and @code{E} is the entity specified by the @code{Entity}
! argument:
  
  
! @itemize *
  
! @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.
  
! @item 
! If @code{E} is overloaded within @code{U} then, in the absence of a
! @code{Source_Location} argument, all overloadings are eliminated.
  
! @item 
! If @code{E} is overloaded within @code{U} and only some overloadings
! are to be eliminated, then each overloading to be eliminated
! must be specified in a corresponding pragma @code{Eliminate}
! with a @code{Source_Location} argument identifying the line where the
! declaration appears, as described below.
! 
! @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
! manner, so that unused entities are eliminated but without
  needing to modify the source text. Normally the required set of
! @code{Eliminate} pragmas is constructed automatically using the @code{gnatelim} tool.
  
  Any source file change that removes, splits, or
! adds lines may make the set of @code{Eliminate} pragmas invalid because their
! @code{Source_Location} argument values may get out of date.
  
! Pragma @code{Eliminate} may be used where the referenced entity is a dispatching
  operation. In this case all the subprograms to which the given operation can
  dispatch are considered to be unused (are never called as a result of a direct
  or a dispatching call).
  
+ The string literal given for the source location specifies the line number
+ of the declaration of the entity, using the following syntax for @code{SOURCE_TRACE}:
+ 
+ @example
+ SOURCE_TRACE     ::= SOURCE_REFERENCE [ LBRACKET SOURCE_TRACE RBRACKET ]
+ 
+ LBRACKET         ::= '['
+ RBRACKET         ::= ']'
+ 
+ SOURCE_REFERENCE ::= FILE_NAME : LINE_NUMBER
+ 
+ LINE_NUMBER      ::= DIGIT @{DIGIT@}
+ @end example
+ 
+ Spaces around the colon in a @code{SOURCE_REFERENCE} are optional.
+ 
+ The source trace that is given as the @code{Source_Location} must obey the
+ following rules (or else the pragma is ignored), where @code{U} is
+ the unit @code{U} specified by the @code{Unit_Name} argument and @code{E} is the
+ subprogram specified by the @code{Entity} argument:
+ 
+ 
+ @itemize *
+ 
+ @item 
+ @code{FILE_NAME} is the short name (with no directory
+ information) of the Ada source file for @code{U}, using the required syntax
+ for the underlying file system (e.g. case is significant if the underlying
+ operating system is case sensitive).
+ If @code{U} is a package and @code{E} is a subprogram declared in the package
+ specification and its full declaration appears in the package body,
+ then the  relevant source file is the one for the package specification;
+ analogously if @code{U} is a generic package.
+ 
+ @item 
+ If @code{E} is not declared in a generic instantiation (this includes
+ generic subprogram instances), the source trace includes only one source
+ line reference. @code{LINE_NUMBER} gives the line number of the occurrence
+ of the declaration of @code{E} within the source file (as a decimal literal
+ without an exponent or point).
+ 
+ @item 
+ If @code{E} is declared by a generic instantiation, its source trace
+ (from left to right) starts with the source location of the
+ declaration of @code{E} in the generic unit and ends with the source
+ location of the instantiation, given in square brackets. This approach is
+ applied recursively with nested instantiations: the rightmost (nested
+ most deeply in square brackets) element of the source trace is the location
+ of the outermost instantiation, and the leftmost element (that is, outside
+ of any square brackets) is the location of the declaration of @code{E} in
+ the generic unit.
+ @end itemize
+ 
+ Examples:
+ 
+ @quotation
+ 
+ @example
+ pragma Eliminate (Pkg0, Proc);
+ -- Eliminate (all overloadings of) Proc in Pkg0
+ 
+ pragma Eliminate (Pkg1, Proc,
+                   Source_Location => "pkg1.ads:8");
+ -- Eliminate overloading of Proc at line 8 in pkg1.ads
+ 
+ -- Assume the following file contents:
+ --   gen_pkg.ads
+ --   1: generic
+ --   2:   type T is private;
+ --   3: package Gen_Pkg is
+ --   4:   procedure Proc(N : T);
+ --  ...   ...
+ --  ... end Gen_Pkg;
+ --
+ --    q.adb
+ --   1: with Gen_Pkg;
+ --   2: procedure Q is
+ --   3:   package Inst_Pkg is new Gen_Pkg(Integer);
+ --  ...   -- No calls on Inst_Pkg.Proc
+ --  ... end Q;
+ 
+ -- The following pragma eliminates Inst_Pkg.Proc from Q
+ pragma Eliminate (Q, Proc,
+                   Source_Location => "gen_pkg.ads:4[q.adb:3]");
+ @end example
+ @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{5c}
  @section Pragma Enable_Atomic_Synchronization
  
  
*************** regarded as synchronization points in th
*** 3146,3163 ****
  Particularly in the case of multi-processors this may require special
  handling, e.g. the generation of memory barriers. This synchronization
  is performed by default, but can be turned off using
! @cite{pragma Disable_Atomic_Synchronization}. The
! @cite{Enable_Atomic_Synchronization} pragma can be used to turn
  it back on.
  
  The placement and scope rules for this pragma are the same as those
! for @cite{pragma Unsuppress}. In particular it can be used as a
  configuration  pragma, or in a declaration sequence where it applies
! till the end of the scope. If an @cite{Entity} argument is present,
  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{5c}
  @section Pragma Export_Function
  
  
--- 3257,3274 ----
  Particularly in the case of multi-processors this may require special
  handling, e.g. the generation of memory barriers. This synchronization
  is performed by default, but can be turned off using
! @code{pragma Disable_Atomic_Synchronization}. The
! @code{Enable_Atomic_Synchronization} pragma can be used to turn
  it back on.
  
  The placement and scope rules for this pragma are the same as those
! for @code{pragma Unsuppress}. In particular it can be used as a
  configuration  pragma, or in a declaration sequence where it applies
! till the end of the scope. If an @code{Entity} argument is present,
  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{5d}
  @section Pragma Export_Function
  
  
*************** Use this pragma to make a function exter
*** 3201,3221 ****
  provide information on mechanisms to be used for passing parameter and
  result values.  We recommend, for the purposes of improving portability,
  this pragma always be used in conjunction with a separate pragma
! @cite{Export}, which must precede the pragma @cite{Export_Function}.
! GNAT does not require a separate pragma @cite{Export}, but if none is
! present, @cite{Convention Ada} is assumed, which is usually
  not what is wanted, so it is usually appropriate to use this
! pragma in conjunction with a @cite{Export} or @cite{Convention}
  pragma that specifies the desired foreign convention.
! Pragma @cite{Export_Function}
! (and @cite{Export}, if present) must appear in the same declarative
  region as the function to which they apply.
  
! @cite{internal_name} must uniquely designate the function to which the
  pragma applies.  If more than one function name exists of this name in
! the declarative part you must use the @cite{Parameter_Types} and
! @cite{Result_Type} parameters is mandatory to achieve the required
! unique designation.  @cite{subtype_mark`s in these parameters must exactly match the subtypes in the corresponding function specification@comma{} using positional notation to match parameters with subtype marks. The form with an `'Access} attribute can be used to match an
  anonymous access parameter.
  
  @geindex Suppressing external name
--- 3312,3335 ----
  provide information on mechanisms to be used for passing parameter and
  result values.  We recommend, for the purposes of improving portability,
  this pragma always be used in conjunction with a separate pragma
! @code{Export}, which must precede the pragma @code{Export_Function}.
! GNAT does not require a separate pragma @code{Export}, but if none is
! present, @code{Convention Ada} is assumed, which is usually
  not what is wanted, so it is usually appropriate to use this
! pragma in conjunction with a @code{Export} or @code{Convention}
  pragma that specifies the desired foreign convention.
! Pragma @code{Export_Function}
! (and @code{Export}, if present) must appear in the same declarative
  region as the function to which they apply.
  
! The @code{internal_name} must uniquely designate the function to which the
  pragma applies.  If more than one function name exists of this name in
! the declarative part you must use the @code{Parameter_Types} and
! @code{Result_Type} parameters to achieve the required
! unique designation.  The @cite{subtype_mark}s in these parameters must
! exactly match the subtypes in the corresponding function specification,
! using positional notation to match parameters with subtype marks.
! The form with an @code{'Access} attribute can be used to match an
  anonymous access parameter.
  
  @geindex Suppressing external name
*************** string. In this case, no external name i
*** 3226,3232 ****
  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{5d}
  @section Pragma Export_Object
  
  
--- 3340,3346 ----
  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{5e}
  @section Pragma Export_Object
  
  
*************** EXTERNAL_SYMBOL ::=
*** 3245,3257 ****
  
  This pragma designates an object as exported, and apart from the
  extended rules for external symbols, is identical in effect to the use of
! the normal @cite{Export} pragma applied to an object.  You may use a
  separate Export pragma (and you probably should from the point of view
! of portability), but it is not required.  @cite{Size} is syntax checked,
  but otherwise ignored by GNAT.
  
  @node Pragma Export_Procedure,Pragma Export_Value,Pragma Export_Object,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-export-procedure}@anchor{5e}
  @section Pragma Export_Procedure
  
  
--- 3359,3371 ----
  
  This pragma designates an object as exported, and apart from the
  extended rules for external symbols, is identical in effect to the use of
! the normal @code{Export} pragma applied to an object.  You may use a
  separate Export pragma (and you probably should from the point of view
! of portability), but it is not required.  @code{Size} is syntax checked,
  but otherwise ignored by GNAT.
  
  @node Pragma Export_Procedure,Pragma Export_Value,Pragma Export_Object,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-export-procedure}@anchor{5f}
  @section Pragma Export_Procedure
  
  
*************** MECHANISM_ASSOCIATION ::=
*** 3287,3299 ****
  MECHANISM_NAME ::= Value | Reference
  @end example
  
! This pragma is identical to @cite{Export_Function} except that it
  applies to a procedure rather than a function and the parameters
! @cite{Result_Type} and @cite{Result_Mechanism} are not permitted.
! GNAT does not require a separate pragma @cite{Export}, but if none is
! present, @cite{Convention Ada} is assumed, which is usually
  not what is wanted, so it is usually appropriate to use this
! pragma in conjunction with a @cite{Export} or @cite{Convention}
  pragma that specifies the desired foreign convention.
  
  @geindex Suppressing external name
--- 3401,3413 ----
  MECHANISM_NAME ::= Value | Reference
  @end example
  
! This pragma is identical to @code{Export_Function} except that it
  applies to a procedure rather than a function and the parameters
! @code{Result_Type} and @code{Result_Mechanism} are not permitted.
! GNAT does not require a separate pragma @code{Export}, but if none is
! present, @code{Convention Ada} is assumed, which is usually
  not what is wanted, so it is usually appropriate to use this
! pragma in conjunction with a @code{Export} or @code{Convention}
  pragma that specifies the desired foreign convention.
  
  @geindex Suppressing external name
*************** string. In this case, no external name i
*** 3304,3310 ****
  still allows the specification of parameter mechanisms.
  
  @node Pragma Export_Value,Pragma Export_Valued_Procedure,Pragma Export_Procedure,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-export-value}@anchor{5f}
  @section Pragma Export_Value
  
  
--- 3418,3424 ----
  still allows the specification of parameter mechanisms.
  
  @node Pragma Export_Value,Pragma Export_Valued_Procedure,Pragma Export_Procedure,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-export-value}@anchor{60}
  @section Pragma Export_Value
  
  
*************** the application. This pragma is currentl
*** 3325,3331 ****
  AAMP target and is ignored for other targets.
  
  @node Pragma Export_Valued_Procedure,Pragma Extend_System,Pragma Export_Value,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-export-valued-procedure}@anchor{60}
  @section Pragma Export_Valued_Procedure
  
  
--- 3439,3445 ----
  AAMP target and is ignored for other targets.
  
  @node Pragma Export_Valued_Procedure,Pragma Extend_System,Pragma Export_Value,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-export-valued-procedure}@anchor{61}
  @section Pragma Export_Valued_Procedure
  
  
*************** MECHANISM_ASSOCIATION ::=
*** 3361,3378 ****
  MECHANISM_NAME ::= Value | Reference
  @end example
  
! This pragma is identical to @cite{Export_Procedure} except that the
! first parameter of @cite{LOCAL_NAME}, which must be present, must be of
! mode @cite{OUT}, and externally the subprogram is treated as a function
  with this parameter as the result of the function.  GNAT provides for
! this capability to allow the use of @cite{OUT} and @cite{IN OUT}
  parameters in interfacing to external functions (which are not permitted
  in Ada functions).
! GNAT does not require a separate pragma @cite{Export}, but if none is
! present, @cite{Convention Ada} is assumed, which is almost certainly
  not what is wanted since the whole point of this pragma is to interface
  with foreign language functions, so it is usually appropriate to use this
! pragma in conjunction with a @cite{Export} or @cite{Convention}
  pragma that specifies the desired foreign convention.
  
  @geindex Suppressing external name
--- 3475,3492 ----
  MECHANISM_NAME ::= Value | Reference
  @end example
  
! This pragma is identical to @code{Export_Procedure} except that the
! first parameter of @code{LOCAL_NAME}, which must be present, must be of
! mode @code{out}, and externally the subprogram is treated as a function
  with this parameter as the result of the function.  GNAT provides for
! this capability to allow the use of @code{out} and @code{in out}
  parameters in interfacing to external functions (which are not permitted
  in Ada functions).
! GNAT does not require a separate pragma @code{Export}, but if none is
! present, @code{Convention Ada} is assumed, which is almost certainly
  not what is wanted since the whole point of this pragma is to interface
  with foreign language functions, so it is usually appropriate to use this
! pragma in conjunction with a @code{Export} or @code{Convention}
  pragma that specifies the desired foreign convention.
  
  @geindex Suppressing external name
*************** string. In this case, no external name i
*** 3383,3389 ****
  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{61}
  @section Pragma Extend_System
  
  
--- 3497,3503 ----
  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
  
  
*************** pragma Extend_System ([Name =>] IDENTIFI
*** 3399,3440 ****
  @end example
  
  This pragma is used to provide backwards compatibility with other
! implementations that extend the facilities of package @cite{System}.  In
! GNAT, @cite{System} contains only the definitions that are present in
  the Ada RM.  However, other implementations, notably the DEC Ada 83
! implementation, provide many extensions to package @cite{System}.
  
  For each such implementation accommodated by this pragma, GNAT provides a
! package @cite{Aux_`xxx`}, e.g., @cite{Aux_DEC} for the DEC Ada 83
  implementation, which provides the required additional definitions.  You
! can use this package in two ways.  You can @cite{with} it in the normal
! way and access entities either by selection or using a @cite{use}
  clause.  In this case no special processing is required.
  
  However, if existing code contains references such as
! @cite{System.`xxx`} where @cite{xxx} is an entity in the extended
! definitions provided in package @cite{System}, you may use this pragma
! to extend visibility in @cite{System} in a non-standard way that
  provides greater compatibility with the existing code.  Pragma
! @cite{Extend_System} is a configuration pragma whose single argument is
  the name of the package containing the extended definition
! (e.g., @cite{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 @cite{System.Aux_`xxx`} where
! @cite{Aux_`xxx`} is the pragma argument for any entity referenced in
! package @cite{System}, but not found in package @cite{System}.
  
! You can use this pragma either to access a predefined @cite{System}
! extension supplied with the compiler, for example @cite{Aux_DEC} or
  you can construct your own extension unit following the above
! definition.  Note that such a package is a child of @cite{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{62}
  @section Pragma Extensions_Allowed
  
  
--- 3513,3554 ----
  @end example
  
  This pragma is used to provide backwards compatibility with other
! implementations that extend the facilities of package @code{System}.  In
! GNAT, @code{System} contains only the definitions that are present in
  the Ada RM.  However, other implementations, notably the DEC Ada 83
! 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
! @code{Extend_System} is a configuration pragma whose single argument is
  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}
! extension supplied with the compiler, for example @code{Aux_DEC} or
  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
  
  
*************** of GNAT specific extensions are recogniz
*** 3461,3473 ****
  
  @item @emph{Constrained attribute for generic objects}
  
! The @cite{Constrained} attribute is permitted for objects of
  generic types. The result indicates if the corresponding actual
  is constrained.
  @end table
  
  @node Pragma Extensions_Visible,Pragma External,Pragma Extensions_Allowed,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id12}@anchor{63}@anchor{gnat_rm/implementation_defined_pragmas pragma-extensions-visible}@anchor{64}
  @section Pragma Extensions_Visible
  
  
--- 3575,3587 ----
  
  @item @emph{Constrained attribute for generic objects}
  
! The @code{Constrained} attribute is permitted for objects of
  generic types. The result indicates if the corresponding actual
  is constrained.
  @end table
  
  @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:
*** 3477,3487 ****
  pragma Extensions_Visible [ (boolean_EXPRESSION) ];
  @end example
  
! For the semantics of this pragma, see the entry for aspect @cite{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{65}
  @section Pragma External
  
  
--- 3591,3601 ----
  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
  
  
*************** pragma External (
*** 3496,3508 ****
  @end example
  
  This pragma is identical in syntax and semantics to pragma
! @cite{Export} as defined in the Ada Reference Manual.  It is
  provided for compatibility with some Ada 83 compilers that
  used this pragma for exactly the same purposes as pragma
! @cite{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{66}
  @section Pragma External_Name_Casing
  
  
--- 3610,3622 ----
  @end example
  
  This pragma is identical in syntax and semantics to pragma
! @code{Export} as defined in the Ada Reference Manual.  It is
  provided for compatibility with some Ada 83 compilers that
  used this pragma for exactly the same purposes as pragma
! @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
  
  
*************** the Ada source program does not provide
*** 3543,3551 ****
  casing of the external name, and so a convention is needed.  In GNAT the
  default treatment is that such names are converted to all lower case
  letters.  This corresponds to the normal C style in many environments.
! The first argument of pragma @cite{External_Name_Casing} can be used to
! control this treatment.  If @cite{Uppercase} is specified, then the name
! will be forced to all uppercase letters.  If @cite{Lowercase} is specified,
  then the normal default of all lower case letters will be used.
  
  This same implicit treatment is also used in the case of extended DEC Ada 83
--- 3657,3665 ----
  casing of the external name, and so a convention is needed.  In GNAT the
  default treatment is that such names are converted to all lower case
  letters.  This corresponds to the normal C style in many environments.
! The first argument of pragma @code{External_Name_Casing} can be used to
! control this treatment.  If @code{Uppercase} is specified, then the name
! will be forced to all uppercase letters.  If @code{Lowercase} is specified,
  then the normal default of all lower case letters will be used.
  
  This same implicit treatment is also used in the case of extended DEC Ada 83
*************** pragma Import (C, C_Routine, "C_routine"
*** 3565,3575 ****
  
  In this case, the string literal normally provides the exact casing required
  for the external name.  The second argument of pragma
! @cite{External_Name_Casing} may be used to modify this behavior.
! If @cite{Uppercase} is specified, then the name
! will be forced to all uppercase letters.  If @cite{Lowercase} is specified,
  then the name will be forced to all lowercase letters.  A specification of
! @cite{As_Is} provides the normal default behavior in which the casing is
  taken from the string provided.
  @end itemize
  
--- 3679,3689 ----
  
  In this case, the string literal normally provides the exact casing required
  for the external name.  The second argument of pragma
! @code{External_Name_Casing} may be used to modify this behavior.
! If @code{Uppercase} is specified, then the name
! will be forced to all uppercase letters.  If @code{Lowercase} is specified,
  then the name will be forced to all lowercase letters.  A specification of
! @code{As_Is} provides the normal default behavior in which the casing is
  taken from the string provided.
  @end itemize
  
*************** pragma External_Name_Casing (Uppercase,
*** 3591,3597 ****
  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{67}
  @section Pragma Fast_Math
  
  
--- 3705,3711 ----
  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
  
  
*************** The normal simple formula for complex mu
*** 3615,3626 ****
  overflows for numbers near the end of the range. The Ada standard requires that
  this situation be detected and corrected by scaling, but in Fast_Math mode such
  cases will simply result in overflow. Note that to take advantage of this you
! must instantiate your own version of @cite{Ada.Numerics.Generic_Complex_Types}
  under control of the pragma, rather than use the preinstantiated versions.
  @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{68}@anchor{gnat_rm/implementation_defined_pragmas pragma-favor-top-level}@anchor{69}
  @section Pragma Favor_Top_Level
  
  
--- 3729,3740 ----
  overflows for numbers near the end of the range. The Ada standard requires that
  this situation be detected and corrected by scaling, but in Fast_Math mode such
  cases will simply result in overflow. Note that to take advantage of this you
! must instantiate your own version of @code{Ada.Numerics.Generic_Complex_Types}
  under control of the pragma, rather than use the preinstantiated versions.
  @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
  
  
*************** Syntax:
*** 3630,3646 ****
  pragma Favor_Top_Level (type_NAME);
  @end example
  
! The named type must be an access-to-subprogram type. This pragma is an
! efficiency hint to the compiler, regarding the use of 'Access or
! 'Unrestricted_Access on nested (non-library-level) subprograms. The
! pragma means that nested subprograms are not used with this type, or
! are rare, so that the generated code should be efficient in the
! top-level case. When this pragma is used, dynamically generated
! trampolines may be used on some targets for nested subprograms.
! See also the No_Implicit_Dynamic_Code restriction.
  
  @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{6a}
  @section Pragma Finalize_Storage_Only
  
  
--- 3744,3759 ----
  pragma Favor_Top_Level (type_NAME);
  @end example
  
! The argument of pragma @code{Favor_Top_Level} must be a named access-to-subprogram
! type. This pragma is an efficiency hint to the compiler, regarding the use of
! @code{'Access} or @code{'Unrestricted_Access} on nested (non-library-level) subprograms.
! The pragma means that nested subprograms are not used with this type, or are
! rare, so that the generated code should be efficient in the top-level case.
! When this pragma is used, dynamically generated trampolines may be used on some
! 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
  
  
*************** Syntax:
*** 3650,3663 ****
  pragma Finalize_Storage_Only (first_subtype_LOCAL_NAME);
  @end example
  
! This pragma allows the compiler not to emit a Finalize call for objects
! defined at the library level.  This is mostly useful for types where
! finalization is only used to deal with storage reclamation since in most
! environments it is not necessary to reclaim memory just before terminating
! execution, hence the name.
  
  @node Pragma Float_Representation,Pragma Ghost,Pragma Finalize_Storage_Only,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-float-representation}@anchor{6b}
  @section Pragma Float_Representation
  
  
--- 3763,3779 ----
  pragma Finalize_Storage_Only (first_subtype_LOCAL_NAME);
  @end example
  
! The argument of pragma @code{Finalize_Storage_Only} must denote a local type which
! is derived from @code{Ada.Finalization.Controlled} or @code{Limited_Controlled}. The
! pragma suppresses the call to @code{Finalize} for declared library-level objects
! of the argument type. This is mostly useful for types where finalization is
! only used to deal with storage reclamation since in most environments it is
! not necessary to reclaim memory just before terminating execution, hence the
! name. Note that this pragma does not suppress Finalize calls for library-level
! 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
  
  
*************** FLOAT_REP ::= VAX_Float | IEEE_Float
*** 3671,3682 ****
  
  In the one argument form, this pragma is a configuration pragma which
  allows control over the internal representation chosen for the predefined
! floating point types declared in the packages @cite{Standard} and
! @cite{System}. This pragma is only provided for compatibility and has no effect.
  
  The two argument form specifies the representation to be used for
  the specified floating-point type. The argument must
! be @cite{IEEE_Float} to specify the use of IEEE format, as follows:
  
  
  @itemize *
--- 3787,3798 ----
  
  In the one argument form, this pragma is a configuration pragma which
  allows control over the internal representation chosen for the predefined
! floating point types declared in the packages @code{Standard} and
! @code{System}. This pragma is only provided for compatibility and has no effect.
  
  The two argument form specifies the representation to be used for
  the specified floating-point type. The argument must
! be @code{IEEE_Float} to specify the use of IEEE format, as follows:
  
  
  @itemize *
*************** No other value of digits is permitted.
*** 3692,3698 ****
  @end itemize
  
  @node Pragma Ghost,Pragma Global,Pragma Float_Representation,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ghost}@anchor{6c}@anchor{gnat_rm/implementation_defined_pragmas id14}@anchor{6d}
  @section Pragma Ghost
  
  
--- 3808,3814 ----
  @end itemize
  
  @node Pragma Ghost,Pragma Global,Pragma Float_Representation,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ghost}@anchor{6d}@anchor{gnat_rm/implementation_defined_pragmas id14}@anchor{6e}
  @section Pragma Ghost
  
  
*************** Syntax:
*** 3702,3712 ****
  pragma Ghost [ (boolean_EXPRESSION) ];
  @end example
  
! For the semantics of this pragma, see the entry for aspect @cite{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 pragma-global}@anchor{6e}@anchor{gnat_rm/implementation_defined_pragmas id15}@anchor{6f}
  @section Pragma Global
  
  
--- 3818,3828 ----
  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 pragma-global}@anchor{6f}@anchor{gnat_rm/implementation_defined_pragmas id15}@anchor{70}
  @section Pragma Global
  
  
*************** GLOBAL_LIST   ::= GLOBAL_ITEM | (GLOBAL_
*** 3727,3737 ****
  GLOBAL_ITEM   ::= NAME
  @end example
  
! For the semantics of this pragma, see the entry for aspect @cite{Global} in the
  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{70}
  @section Pragma Ident
  
  
--- 3843,3853 ----
  GLOBAL_ITEM   ::= NAME
  @end example
  
! For the semantics of this pragma, see the entry for aspect @code{Global} in the
  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
  
  
*************** Syntax:
*** 3741,3751 ****
  pragma Ident (static_string_EXPRESSION);
  @end example
  
! This pragma is identical in effect to pragma @cite{Comment}. It is provided
  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{71}
  @section Pragma Ignore_Pragma
  
  
--- 3857,3867 ----
  pragma Ident (static_string_EXPRESSION);
  @end example
  
! This pragma is identical in effect to pragma @code{Comment}. It is provided
  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
  
  
*************** that takes a single argument that is a s
*** 3760,3771 ****
  use of a pragma whose pragma identifier matches this argument will be
  silently ignored. This may be useful when legacy code or code intended
  for compilation with some other compiler contains pragmas that match the
! name, but not the exact implementation, of a @cite{GNAT} pragma. The use of this
! pragma allows such pragmas to be ignored, which may be useful in @cite{CodePeer}
  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{72}
  @section Pragma Implementation_Defined
  
  
--- 3876,3887 ----
  use of a pragma whose pragma identifier matches this argument will be
  silently ignored. This may be useful when legacy code or code intended
  for compilation with some other compiler contains pragmas that match the
! name, but not the exact implementation, of a GNAT pragma. The use of this
! pragma allows such pragmas to be ignored, which may be useful in CodePeer
  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
  
  
*************** for the purpose of implementing the No_I
*** 3792,3798 ****
  restriction.
  
  @node Pragma Implemented,Pragma Implicit_Packing,Pragma Implementation_Defined,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-implemented}@anchor{73}
  @section Pragma Implemented
  
  
--- 3908,3914 ----
  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
  
  
*************** By_Any shares the behavior of By_Entry a
*** 3838,3844 ****
  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{74}
  @section Pragma Implicit_Packing
  
  
--- 3954,3960 ----
  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
  
  
*************** sufficient. The use of pragma Implicit_P
*** 3892,3898 ****
  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{75}
  @section Pragma Import_Function
  
  
--- 4008,4014 ----
  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
  
  
*************** MECHANISM_NAME ::=
*** 3931,3954 ****
  | Reference
  @end example
  
! This pragma is used in conjunction with a pragma @cite{Import} to
  specify additional information for an imported function.  The pragma
! @cite{Import} (or equivalent pragma @cite{Interface}) must precede the
! @cite{Import_Function} pragma and both must appear in the same
  declarative part as the function specification.
  
! The @cite{Internal} argument must uniquely designate
  the function to which the
  pragma applies.  If more than one function name exists of this name in
! the declarative part you must use the @cite{Parameter_Types} and
! @cite{Result_Type} parameters to achieve the required unique
  designation.  Subtype marks in these parameters must exactly match the
  subtypes in the corresponding function specification, using positional
  notation to match parameters with subtype marks.
! The form with an @cite{'Access} attribute can be used to match an
  anonymous access parameter.
  
! You may optionally use the @cite{Mechanism} and @cite{Result_Mechanism}
  parameters to specify passing mechanisms for the
  parameters and result.  If you specify a single mechanism name, it
  applies to all parameters.  Otherwise you may specify a mechanism on a
--- 4047,4070 ----
  | Reference
  @end example
  
! This pragma is used in conjunction with a pragma @code{Import} to
  specify additional information for an imported function.  The pragma
! @code{Import} (or equivalent pragma @code{Interface}) must precede the
! @code{Import_Function} pragma and both must appear in the same
  declarative part as the function specification.
  
! The @code{Internal} argument must uniquely designate
  the function to which the
  pragma applies.  If more than one function name exists of this name in
! the declarative part you must use the @code{Parameter_Types} and
! @code{Result_Type} parameters to achieve the required unique
  designation.  Subtype marks in these parameters must exactly match the
  subtypes in the corresponding function specification, using positional
  notation to match parameters with subtype marks.
! The form with an @code{'Access} attribute can be used to match an
  anonymous access parameter.
  
! You may optionally use the @code{Mechanism} and @code{Result_Mechanism}
  parameters to specify passing mechanisms for the
  parameters and result.  If you specify a single mechanism name, it
  applies to all parameters.  Otherwise you may specify a mechanism on a
*************** notation.  If the mechanism is not speci
*** 3957,3963 ****
  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{76}
  @section Pragma Import_Object
  
  
--- 4073,4079 ----
  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
  
  
*************** EXTERNAL_SYMBOL ::=
*** 3976,3989 ****
  
  This pragma designates an object as imported, and apart from the
  extended rules for external symbols, is identical in effect to the use of
! the normal @cite{Import} pragma applied to an object.  Unlike the
! subprogram case, you need not use a separate @cite{Import} pragma,
  although you may do so (and probably should do so from a portability
! point of view).  @cite{size} is syntax checked, but otherwise ignored by
  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{77}
  @section Pragma Import_Procedure
  
  
--- 4092,4105 ----
  
  This pragma designates an object as imported, and apart from the
  extended rules for external symbols, is identical in effect to the use of
! the normal @code{Import} pragma applied to an object.  Unlike the
! subprogram case, you need not use a separate @code{Import} pragma,
  although you may do so (and probably should do so from a portability
! point of view).  @code{size} is syntax checked, but otherwise ignored by
  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
  
  
*************** MECHANISM_ASSOCIATION ::=
*** 4018,4029 ****
  MECHANISM_NAME ::= Value | Reference
  @end example
  
! This pragma is identical to @cite{Import_Function} except that it
  applies to a procedure rather than a function and the parameters
! @cite{Result_Type} and @cite{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{78}
  @section Pragma Import_Valued_Procedure
  
  
--- 4134,4145 ----
  MECHANISM_NAME ::= Value | Reference
  @end example
  
! This pragma is identical to @code{Import_Function} except that it
  applies to a procedure rather than a function and the parameters
! @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
  
  
*************** MECHANISM_ASSOCIATION ::=
*** 4058,4070 ****
  MECHANISM_NAME ::= Value | Reference
  @end example
  
! This pragma is identical to @cite{Import_Procedure} except that the
! first parameter of @cite{LOCAL_NAME}, which must be present, must be of
! mode @cite{OUT}, and externally the subprogram is treated as a function
  with this parameter as the result of the function.  The purpose of this
! capability is to allow the use of @cite{OUT} and @cite{IN OUT}
  parameters in interfacing to external functions (which are not permitted
! in Ada functions).  You may optionally use the @cite{Mechanism}
  parameters to specify passing mechanisms for the parameters.
  If you specify a single mechanism name, it applies to all parameters.
  Otherwise you may specify a mechanism on a parameter by parameter
--- 4174,4186 ----
  MECHANISM_NAME ::= Value | Reference
  @end example
  
! This pragma is identical to @code{Import_Procedure} except that the
! first parameter of @code{LOCAL_NAME}, which must be present, must be of
! mode @code{out}, and externally the subprogram is treated as a function
  with this parameter as the result of the function.  The purpose of this
! capability is to allow the use of @code{out} and @code{in out}
  parameters in interfacing to external functions (which are not permitted
! in Ada functions).  You may optionally use the @code{Mechanism}
  parameters to specify passing mechanisms for the parameters.
  If you specify a single mechanism name, it applies to all parameters.
  Otherwise you may specify a mechanism on a parameter by parameter
*************** pragma Import that specifies the desired
*** 4076,4082 ****
  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{79}
  @section Pragma Independent
  
  
--- 4192,4198 ----
  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
  
  
*************** constraints on the representation of the
*** 4098,4104 ****
  tight packing).
  
  @node Pragma Independent_Components,Pragma Initial_Condition,Pragma Independent,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-independent-components}@anchor{7a}
  @section Pragma Independent_Components
  
  
--- 4214,4220 ----
  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
  
  
*************** constraints on the representation of the
*** 4119,4125 ****
  tight packing).
  
  @node Pragma Initial_Condition,Pragma Initialize_Scalars,Pragma Independent_Components,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id16}@anchor{7b}@anchor{gnat_rm/implementation_defined_pragmas pragma-initial-condition}@anchor{7c}
  @section Pragma Initial_Condition
  
  
--- 4235,4241 ----
  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
  
  
*************** Syntax:
*** 4129,4139 ****
  pragma Initial_Condition (boolean_EXPRESSION);
  @end example
  
! For the semantics of this pragma, see the entry for aspect @cite{Initial_Condition}
  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{7d}
  @section Pragma Initialize_Scalars
  
  
--- 4245,4255 ----
  pragma Initial_Condition (boolean_EXPRESSION);
  @end example
  
! For the semantics of this pragma, see the entry for aspect @code{Initial_Condition}
  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
  
  
*************** Syntax:
*** 4145,4151 ****
  pragma Initialize_Scalars;
  @end example
  
! This pragma is similar to @cite{Normalize_Scalars} conceptually but has
  two important differences.  First, there is no requirement for the pragma
  to be used uniformly in all units of a partition, in particular, it is fine
  to use this just for some or all of the application units of a partition,
--- 4261,4267 ----
  pragma Initialize_Scalars;
  @end example
  
! This pragma is similar to @code{Normalize_Scalars} conceptually but has
  two important differences.  First, there is no requirement for the pragma
  to be used uniformly in all units of a partition, in particular, it is fine
  to use this just for some or all of the application units of a partition,
*************** It is even possible to change the value
*** 4179,4194 ****
  the need to rebind with a different switch using an environment variable.
  See the GNAT User's Guide for details.
  
! Note that pragma @cite{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 @cite{Initialize_Scalars}
  provides a powerful new tool to assist in the detection of problems
  caused by uninitialized variables.
  
! Note: the use of @cite{Initialize_Scalars} has a fairly extensive
  effect on the generated code. This may cause your code to be
  substantially larger. It may also cause an increase in the amount
  of stack required, so it is probably a good idea to turn on stack
--- 4295,4310 ----
  the need to rebind with a different switch using an environment variable.
  See the GNAT User's Guide for details.
  
! 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.
  
! Note: the use of @code{Initialize_Scalars} has a fairly extensive
  effect on the generated code. This may cause your code to be
  substantially larger. It may also cause an increase in the amount
  of stack required, so it is probably a good idea to turn on stack
*************** checking (see description of stack check
*** 4196,4202 ****
  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 pragma-initializes}@anchor{7e}@anchor{gnat_rm/implementation_defined_pragmas id17}@anchor{7f}
  @section Pragma Initializes
  
  
--- 4312,4318 ----
  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 pragma-initializes}@anchor{7f}@anchor{gnat_rm/implementation_defined_pragmas id17}@anchor{80}
  @section Pragma Initializes
  
  
*************** INPUT_LIST ::=
*** 4219,4229 ****
  INPUT ::= name
  @end example
  
! For the semantics of this pragma, see the entry for aspect @cite{Initializes} in the
  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{80}@anchor{gnat_rm/implementation_defined_pragmas pragma-inline-always}@anchor{81}
  @section Pragma Inline_Always
  
  
--- 4335,4345 ----
  INPUT ::= name
  @end example
  
! For the semantics of this pragma, see the entry for aspect @code{Initializes} in the
  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
  
  
*************** Syntax:
*** 4233,4244 ****
  pragma Inline_Always (NAME [, NAME]);
  @end example
  
! Similar to pragma @cite{Inline} except that inlining is not subject to
! the use of option @emph{-gnatn} or @emph{-gnatN} and the inlining
! happens regardless of whether these options are used.
  
  @node Pragma Inline_Generic,Pragma Interface,Pragma Inline_Always,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-inline-generic}@anchor{82}
  @section Pragma Inline_Generic
  
  
--- 4349,4364 ----
  pragma Inline_Always (NAME [, NAME]);
  @end example
  
! 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
  
  
*************** GNAME ::= generic_unit_NAME | generic_in
*** 4251,4262 ****
  @end example
  
  This pragma is provided for compatibility with Dec Ada 83. It has
! no effect in @cite{GNAT} (which always inlines generics), other
  than to check that the given names are all names of generic units or
  generic instances.
  
  @node Pragma Interface,Pragma Interface_Name,Pragma Inline_Generic,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-interface}@anchor{83}
  @section Pragma Interface
  
  
--- 4371,4382 ----
  @end example
  
  This pragma is provided for compatibility with Dec Ada 83. It has
! no effect in GNAT (which always inlines generics), other
  than to check that the given names are all names of generic units or
  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
  
  
*************** pragma Interface (
*** 4271,4289 ****
  @end example
  
  This pragma is identical in syntax and semantics to
! the standard Ada pragma @cite{Import}.  It is provided for compatibility
  with Ada 83.  The definition is upwards compatible both with pragma
! @cite{Interface} as defined in the Ada 83 Reference Manual, and also
  with some extended implementations of this pragma in certain Ada 83
! implementations.  The only difference between pragma @cite{Interface}
! and pragma @cite{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 @cite{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{84}
  @section Pragma Interface_Name
  
  
--- 4391,4409 ----
  @end example
  
  This pragma is identical in syntax and semantics to
! the standard Ada pragma @code{Import}.  It is provided for compatibility
  with Ada 83.  The definition is upwards compatible both with pragma
! @code{Interface} as defined in the Ada 83 Reference Manual, and also
  with some extended implementations of this pragma in certain Ada 83
! 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
  
  
*************** pragma Interface_Name (
*** 4299,4308 ****
  This pragma provides an alternative way of specifying the interface name
  for an interfaced subprogram, and is provided for compatibility with Ada
  83 compilers that use the pragma for this purpose.  You must provide at
! least one of @cite{External_Name} or @cite{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{85}
  @section Pragma Interrupt_Handler
  
  
--- 4419,4428 ----
  This pragma provides an alternative way of specifying the interface name
  for an interfaced subprogram, and is provided for compatibility with Ada
  83 compilers that use the pragma for this purpose.  You must provide at
! 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
  
  
*************** the pragma can also be specified for non
*** 4318,4328 ****
  that are declared at the library level (which includes procedures
  declared at the top level of a library package). In the case of AAMP,
  when this pragma is applied to a nonprotected procedure, the instruction
! @cite{IERET} is generated for returns from the procedure, enabling
  maskable interrupts, in place of the normal return instruction.
  
  @node Pragma Interrupt_State,Pragma Invariant,Pragma Interrupt_Handler,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-interrupt-state}@anchor{86}
  @section Pragma Interrupt_State
  
  
--- 4438,4448 ----
  that are declared at the library level (which includes procedures
  declared at the top level of a library package). In the case of AAMP,
  when this pragma is applied to a nonprotected procedure, the instruction
! @code{IERET} is generated for returns from the procedure, enabling
  maskable interrupts, in place of the normal return instruction.
  
  @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
  
  
*************** pragma Interrupt_State
*** 4336,4352 ****
  
  Normally certain interrupts are reserved to the implementation.  Any attempt
  to attach an interrupt causes Program_Error to be raised, as described in
! RM C.3.2(22).  A typical example is the @cite{SIGINT} interrupt used in
  many systems for an @code{Ctrl-C} interrupt.  Normally this interrupt is
  reserved to the implementation, so that @code{Ctrl-C} can be used to
! interrupt execution.  Additionally, signals such as @cite{SIGSEGV},
! @cite{SIGABRT}, @cite{SIGFPE} and @cite{SIGILL} are often mapped to specific
  Ada exceptions, or used to implement run-time functions such as the
! @cite{abort} statement and stack overflow checking.
  
! Pragma @cite{Interrupt_State} provides a general mechanism for overriding
  such uses of interrupts.  It subsumes the functionality of pragma
! @cite{Unreserve_All_Interrupts}.  Pragma @cite{Interrupt_State} is not
  available on Windows or VMS.  On all other platforms than VxWorks,
  it applies to signals; on VxWorks, it applies to vectored hardware interrupts
  and may be used to mark interrupts required by the board support package
--- 4456,4472 ----
  
  Normally certain interrupts are reserved to the implementation.  Any attempt
  to attach an interrupt causes Program_Error to be raised, as described in
! RM C.3.2(22).  A typical example is the @code{SIGINT} interrupt used in
  many systems for an @code{Ctrl-C} interrupt.  Normally this interrupt is
  reserved to the implementation, so that @code{Ctrl-C} can be used to
! interrupt execution.  Additionally, signals such as @code{SIGSEGV},
! @code{SIGABRT}, @code{SIGFPE} and @code{SIGILL} are often mapped to specific
  Ada exceptions, or used to implement run-time functions such as the
! @code{abort} statement and stack overflow checking.
  
! Pragma @code{Interrupt_State} provides a general mechanism for overriding
  such uses of interrupts.  It subsumes the functionality of pragma
! @code{Unreserve_All_Interrupts}.  Pragma @code{Interrupt_State} is not
  available on Windows or VMS.  On all other platforms than VxWorks,
  it applies to signals; on VxWorks, it applies to vectored hardware interrupts
  and may be used to mark interrupts required by the board support package
*************** System
*** 4362,4368 ****
  
  The interrupt is reserved (no Ada handler can be installed), and the
  Ada run-time may not install a handler. As a result you are guaranteed
! standard system default action if this interrupt is raised.
  
  @item 
  Runtime
--- 4482,4490 ----
  
  The interrupt is reserved (no Ada handler can be installed), and the
  Ada run-time may not install a handler. As a result you are guaranteed
! standard system default action if this interrupt is raised. This also allows
! installing a low level handler via C APIs such as sigaction(), outside
! of Ada control.
  
  @item 
  Runtime
*************** not required to do so.
*** 4374,4387 ****
  @item 
  User
  
! The interrupt is unreserved.  The user may install a handler to provide
  some other action.
  @end itemize
  
! These states are the allowed values of the @cite{State} parameter of the
! pragma.  The @cite{Name} parameter is a value of the type
! @cite{Ada.Interrupts.Interrupt_ID}.  Typically, it is a name declared in
! @cite{Ada.Interrupts.Names}.
  
  This is a configuration pragma, and the binder will check that there
  are no inconsistencies between different units in a partition in how a
--- 4496,4510 ----
  @item 
  User
  
! The interrupt is unreserved.  The user may install an Ada handler via
! Ada.Interrupts and pragma Interrupt_Handler or Attach_Handler to provide
  some other action.
  @end itemize
  
! These states are the allowed values of the @code{State} parameter of the
! pragma.  The @code{Name} parameter is a value of the type
! @code{Ada.Interrupts.Interrupt_ID}.  Typically, it is a name declared in
! @code{Ada.Interrupts.Names}.
  
  This is a configuration pragma, and the binder will check that there
  are no inconsistencies between different units in a partition in how a
*************** a handler.
*** 4397,4411 ****
  
  Note that certain signals on many operating systems cannot be caught and
  handled by applications.  In such cases, the pragma is ignored.  See the
! operating system documentation, or the value of the array @cite{Reserved}
! declared in the spec of package @cite{System.OS_Interface}.
  
  Overriding the default state of signals used by the Ada runtime may interfere
  with an application's runtime behavior in the cases of the synchronous signals,
! and in the case of the signal used to implement the @cite{abort} statement.
  
  @node Pragma Invariant,Pragma Keep_Names,Pragma Interrupt_State,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id19}@anchor{87}@anchor{gnat_rm/implementation_defined_pragmas pragma-invariant}@anchor{88}
  @section Pragma Invariant
  
  
--- 4520,4534 ----
  
  Note that certain signals on many operating systems cannot be caught and
  handled by applications.  In such cases, the pragma is ignored.  See the
! operating system documentation, or the value of the array @code{Reserved}
! declared in the spec of package @code{System.OS_Interface}.
  
  Overriding the default state of signals used by the Ada runtime may interfere
  with an application's runtime behavior in the cases of the synchronous signals,
! 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
  
  
*************** For further details on the use of this p
*** 4444,4450 ****
  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{89}
  @section Pragma Keep_Names
  
  
--- 4567,4573 ----
  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
  
  
*************** Syntax:
*** 4454,4470 ****
  pragma Keep_Names ([On =>] enumeration_first_subtype_LOCAL_NAME);
  @end example
  
! The @cite{LOCAL_NAME} argument
  must refer to an enumeration first subtype
  in the current declarative part. The effect is to retain the enumeration
! literal names for use by @cite{Image} and @cite{Value} even if a global
! @cite{Discard_Names} pragma applies. This is useful when you want to
  generally suppress enumeration literal names and for example you therefore
! use a @cite{Discard_Names} pragma in the @code{gnat.adc} file, but you
  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{8a}
  @section Pragma License
  
  
--- 4577,4593 ----
  pragma Keep_Names ([On =>] enumeration_first_subtype_LOCAL_NAME);
  @end example
  
! The @code{LOCAL_NAME} argument
  must refer to an enumeration first subtype
  in the current declarative part. The effect is to retain the enumeration
! literal names for use by @code{Image} and @code{Value} even if a global
! @code{Discard_Names} pragma applies. This is useful when you want to
  generally suppress enumeration literal names and for example you therefore
! use a @code{Discard_Names} pragma in the @code{gnat.adc} file, but you
  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
  
  
*************** pragma License (Unrestricted | GPL | Mod
*** 4478,4484 ****
  
  This pragma is provided to allow automated checking for appropriate license
  conditions with respect to the standard and modified GPL.  A pragma
! @cite{License}, which is a configuration pragma that typically appears at
  the start of a source file or in a separate @code{gnat.adc} file, specifies
  the licensing conditions of a unit as follows:
  
--- 4601,4607 ----
  
  This pragma is provided to allow automated checking for appropriate license
  conditions with respect to the standard and modified GPL.  A pragma
! @code{License}, which is a configuration pragma that typically appears at
  the start of a source file or in a separate @code{gnat.adc} file, specifies
  the licensing conditions of a unit as follows:
  
*************** Reference Manual.
*** 4494,4500 ****
  @item 
  GPL
  This is used for a unit that is licensed under the unmodified GPL, and which
! therefore cannot be @cite{with}'ed by a restricted unit.
  
  @item 
  Modified_GPL
--- 4617,4623 ----
  @item 
  GPL
  This is used for a unit that is licensed under the unmodified GPL, and which
! therefore cannot be @code{with}ed by a restricted unit.
  
  @item 
  Modified_GPL
*************** Restricted
*** 4508,4519 ****
  This is used for a unit that is restricted in that it is not permitted to
  depend on units that are licensed under the GPL.  Typical examples are
  proprietary code that is to be released under more restrictive license
! conditions.  Note that restricted units are permitted to @cite{with} units
  which are licensed under the modified GPL (this is the whole point of the
  modified GPL).
  @end itemize
  
! Normally a unit with no @cite{License} pragma is considered to have an
  unknown license, and no checking is done.  However, standard GNAT headers
  are recognized, and license information is derived from them as follows.
  
--- 4631,4642 ----
  This is used for a unit that is restricted in that it is not permitted to
  depend on units that are licensed under the GPL.  Typical examples are
  proprietary code that is to be released under more restrictive license
! conditions.  Note that restricted units are permitted to @code{with} units
  which are licensed under the modified GPL (this is the whole point of the
  modified GPL).
  @end itemize
  
! Normally a unit with no @code{License} pragma is considered to have an
  unknown license, and no checking is done.  However, standard GNAT headers
  are recognized, and license information is derived from them as follows.
  
*************** then the unit is assumed to be unrestric
*** 4531,4537 ****
  
  These default actions means that a program with a restricted license pragma
  will automatically get warnings if a GPL unit is inappropriately
! @cite{with}'ed.  For example, the program:
  
  @example
  with Sem_Ch3;
--- 4654,4660 ----
  
  These default actions means that a program with a restricted license pragma
  will automatically get warnings if a GPL unit is inappropriately
! @code{with}ed.  For example, the program:
  
  @example
  with Sem_Ch3;
*************** procedure Secret_Stuff is
*** 4541,4547 ****
  end Secret_Stuff
  @end example
  
! if compiled with pragma @cite{License} (@cite{Restricted}) in a
  @code{gnat.adc} file will generate the warning:
  
  @example
--- 4664,4670 ----
  end Secret_Stuff
  @end example
  
! if compiled with pragma @code{License} (@code{Restricted}) in a
  @code{gnat.adc} file will generate the warning:
  
  @example
*************** if compiled with pragma @cite{License} (
*** 4553,4565 ****
  3.  procedure Secret_Stuff is
  @end example
  
! Here we get a warning on @cite{Sem_Ch3} since it is part of the GNAT
  compiler and is licensed under the
! GPL, but no warning for @cite{GNAT.Sockets} which is part of the GNAT
  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{8b}
  @section Pragma Link_With
  
  
--- 4676,4688 ----
  3.  procedure Secret_Stuff is
  @end example
  
! Here we get a warning on @code{Sem_Ch3} since it is part of the GNAT
  compiler and is licensed under the
! GPL, but no warning for @code{GNAT.Sockets} which is part of the GNAT
  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
  
  
*************** pragma Link_With (static_string_EXPRESSI
*** 4570,4576 ****
  @end example
  
  This pragma is provided for compatibility with certain Ada 83 compilers.
! It has exactly the same effect as pragma @cite{Linker_Options} except
  that spaces occurring within one of the string expressions are treated
  as separators. For example, in the following case:
  
--- 4693,4699 ----
  @end example
  
  This pragma is provided for compatibility with certain Ada 83 compilers.
! It has exactly the same effect as pragma @code{Linker_Options} except
  that spaces occurring within one of the string expressions are treated
  as separators. For example, in the following case:
  
*************** as separators. For example, in the follo
*** 4578,4589 ****
  pragma Link_With ("-labc -ldef");
  @end example
  
! results in passing the strings @cite{-labc} and @cite{-ldef} as two
  separate arguments to the linker. In addition pragma Link_With allows
  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{8c}
  @section Pragma Linker_Alias
  
  
--- 4701,4712 ----
  pragma Link_With ("-labc -ldef");
  @end example
  
! results in passing the strings @code{-labc} and @code{-ldef} as two
  separate arguments to the linker. In addition pragma Link_With allows
  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
  
  
*************** pragma Linker_Alias (
*** 4595,4615 ****
    [Target =>] static_string_EXPRESSION);
  @end example
  
! @cite{LOCAL_NAME} must refer to an object that is declared at the library
  level. This pragma establishes the given entity as a linker alias for the
! given target. It is equivalent to @cite{__attribute__((alias))} in GNU C
! and causes @cite{LOCAL_NAME} to be emitted as an alias for the symbol
! @cite{static_string_EXPRESSION} in the object file, that is to say no space
! is reserved for @cite{LOCAL_NAME} by the assembler and it will be resolved
! to the same address as @cite{static_string_EXPRESSION} by the linker.
  
  The actual linker name for the target must be used (e.g., the fully
  encoded name with qualification in Ada, or the mangled name in C++),
! or it must be declared using the C convention with @cite{pragma Import}
! or @cite{pragma Export}.
  
  Not all target machines support this pragma. On some of them it is accepted
! only if @cite{pragma Weak_External} has been applied to @cite{LOCAL_NAME}.
  
  @example
  --  Example of the use of pragma Linker_Alias
--- 4718,4738 ----
    [Target =>] static_string_EXPRESSION);
  @end example
  
! @code{LOCAL_NAME} must refer to an object that is declared at the library
  level. This pragma establishes the given entity as a linker alias for the
! given target. It is equivalent to @code{__attribute__((alias))} in GNU C
! and causes @code{LOCAL_NAME} to be emitted as an alias for the symbol
! @code{static_string_EXPRESSION} in the object file, that is to say no space
! is reserved for @code{LOCAL_NAME} by the assembler and it will be resolved
! to the same address as @code{static_string_EXPRESSION} by the linker.
  
  The actual linker name for the target must be used (e.g., the fully
  encoded name with qualification in Ada, or the mangled name in C++),
! or it must be declared using the C convention with @code{pragma Import}
! or @code{pragma Export}.
  
  Not all target machines support this pragma. On some of them it is accepted
! only if @code{pragma Weak_External} has been applied to @code{LOCAL_NAME}.
  
  @example
  --  Example of the use of pragma Linker_Alias
*************** end p;
*** 4624,4630 ****
  @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{8d}
  @section Pragma Linker_Constructor
  
  
--- 4747,4753 ----
  @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
  
  
*************** Syntax:
*** 4634,4644 ****
  pragma Linker_Constructor (procedure_LOCAL_NAME);
  @end example
  
! @cite{procedure_LOCAL_NAME} must refer to a parameterless procedure that
  is declared at the library level. A procedure to which this pragma is
  applied will be treated as an initialization routine by the linker.
! It is equivalent to @cite{__attribute__((constructor))} in GNU C and
! causes @cite{procedure_LOCAL_NAME} to be invoked before the entry point
  of the executable is called (or immediately after the shared library is
  loaded if the procedure is linked in a shared library), in particular
  before the Ada run-time environment is set up.
--- 4757,4767 ----
  pragma Linker_Constructor (procedure_LOCAL_NAME);
  @end example
  
! @code{procedure_LOCAL_NAME} must refer to a parameterless procedure that
  is declared at the library level. A procedure to which this pragma is
  applied will be treated as an initialization routine by the linker.
! It is equivalent to @code{__attribute__((constructor))} in GNU C and
! causes @code{procedure_LOCAL_NAME} to be invoked before the entry point
  of the executable is called (or immediately after the shared library is
  loaded if the procedure is linked in a shared library), in particular
  before the Ada run-time environment is set up.
*************** listed above. Where possible, the use of
*** 4654,4660 ****
  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{8e}
  @section Pragma Linker_Destructor
  
  
--- 4777,4783 ----
  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
  
  
*************** Syntax:
*** 4664,4683 ****
  pragma Linker_Destructor (procedure_LOCAL_NAME);
  @end example
  
! @cite{procedure_LOCAL_NAME} must refer to a parameterless procedure that
  is declared at the library level. A procedure to which this pragma is
  applied will be treated as a finalization routine by the linker.
! It is equivalent to @cite{__attribute__((destructor))} in GNU C and
! causes @cite{procedure_LOCAL_NAME} to be invoked after the entry point
  of the executable has exited (or immediately before the shared library
  is unloaded if the procedure is linked in a shared library), in particular
  after the Ada run-time environment is shut down.
  
! See @cite{pragma Linker_Constructor} for the set of restrictions that apply
  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{8f}@anchor{gnat_rm/implementation_defined_pragmas pragma-linker-section}@anchor{90}
  @section Pragma Linker_Section
  
  
--- 4787,4806 ----
  pragma Linker_Destructor (procedure_LOCAL_NAME);
  @end example
  
! @code{procedure_LOCAL_NAME} must refer to a parameterless procedure that
  is declared at the library level. A procedure to which this pragma is
  applied will be treated as a finalization routine by the linker.
! It is equivalent to @code{__attribute__((destructor))} in GNU C and
! causes @code{procedure_LOCAL_NAME} to be invoked after the entry point
  of the executable has exited (or immediately before the shared library
  is unloaded if the procedure is linked in a shared library), in particular
  after the Ada run-time environment is shut down.
  
! See @code{pragma Linker_Constructor} for the set of restrictions that apply
  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
  
  
*************** pragma Linker_Section (
*** 4689,4706 ****
    [Section =>] static_string_EXPRESSION);
  @end example
  
! @cite{LOCAL_NAME} must refer to an object, type, or subprogram that is
  declared at the library level. This pragma specifies the name of the
  linker section for the given entity. It is equivalent to
! @cite{__attribute__((section))} in GNU C and causes @cite{LOCAL_NAME} to
! be placed in the @cite{static_string_EXPRESSION} section of the
  executable (assuming the linker doesn't rename the section).
  GNAT also provides an implementation defined aspect of the same name.
  
  In the case of specifying this aspect for a type, the effect is to
! specify the corresponding for all library level objects of the type which
! do not have an explicit linker section set. Note that this only applies to
! whole objects, not to components of composite objects.
  
  In the case of a subprogram, the linker section applies to all previously
  declared matching overloaded subprograms in the current declarative part
--- 4812,4829 ----
    [Section =>] static_string_EXPRESSION);
  @end example
  
! @code{LOCAL_NAME} must refer to an object, type, or subprogram that is
  declared at the library level. This pragma specifies the name of the
  linker section for the given entity. It is equivalent to
! @code{__attribute__((section))} in GNU C and causes @code{LOCAL_NAME} to
! be placed in the @code{static_string_EXPRESSION} section of the
  executable (assuming the linker doesn't rename the section).
  GNAT also provides an implementation defined aspect of the same name.
  
  In the case of specifying this aspect for a type, the effect is to
! specify the corresponding section for all library-level objects of
! the type that do not have an explicit linker section set. Note that
! this only applies to whole objects, not to components of composite objects.
  
  In the case of a subprogram, the linker section applies to all previously
  declared matching overloaded subprograms in the current declarative part
*************** linker section is specified should has t
*** 4716,4723 ****
  
  The compiler normally places library-level entities in standard sections
  depending on the class: procedures and functions generally go in the
! @cite{.text} section, initialized variables in the @cite{.data} section
! and uninitialized variables in the @cite{.bss} section.
  
  Other, special sections may exist on given target machines to map special
  hardware, for example I/O ports or flash memory. This pragma is a means to
--- 4839,4846 ----
  
  The compiler normally places library-level entities in standard sections
  depending on the class: procedures and functions generally go in the
! @code{.text} section, initialized variables in the @code{.data} section
! and uninitialized variables in the @code{.bss} section.
  
  Other, special sections may exist on given target machines to map special
  hardware, for example I/O ports or flash memory. This pragma is a means to
*************** at the symbolic level with the compiler.
*** 4727,4734 ****
  Some file formats do not support arbitrary sections so not all target
  machines support this pragma. The use of this pragma may cause a program
  execution to be erroneous if it is used to place an entity into an
! inappropriate section (e.g., a modified variable into the @cite{.text}
! section). See also @cite{pragma Persistent_BSS}.
  
  @example
  --  Example of the use of pragma Linker_Section
--- 4850,4857 ----
  Some file formats do not support arbitrary sections so not all target
  machines support this pragma. The use of this pragma may cause a program
  execution to be erroneous if it is used to place an entity into an
! inappropriate section (e.g., a modified variable into the @code{.text}
! section). See also @code{pragma Persistent_BSS}.
  
  @example
  --  Example of the use of pragma Linker_Section
*************** end IO_Card;
*** 4751,4757 ****
  @end example
  
  @node Pragma Lock_Free,Pragma Loop_Invariant,Pragma Linker_Section,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id21}@anchor{91}@anchor{gnat_rm/implementation_defined_pragmas pragma-lock-free}@anchor{92}
  @section Pragma Lock_Free
  
  
--- 4874,4880 ----
  @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
  
  
*************** Compilation fails if the compiler cannot
*** 4762,4768 ****
  operations.
  
  @node Pragma Loop_Invariant,Pragma Loop_Optimize,Pragma Lock_Free,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-loop-invariant}@anchor{93}
  @section Pragma Loop_Invariant
  
  
--- 4885,4891 ----
  operations.
  
  @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
  
  
*************** Syntax:
*** 4772,4783 ****
  pragma Loop_Invariant ( boolean_EXPRESSION );
  @end example
  
! The effect of this pragma is similar to that of pragma @cite{Assert},
! except that in an @cite{Assertion_Policy} pragma, the identifier
! @cite{Loop_Invariant} is used to control whether it is ignored or checked
  (or disabled).
  
! @cite{Loop_Invariant} can only appear as 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.
  The intention is that it be used to
--- 4895,4906 ----
  pragma Loop_Invariant ( boolean_EXPRESSION );
  @end example
  
! The effect of this pragma is similar to that of pragma @code{Assert},
! except that in an @code{Assertion_Policy} pragma, the identifier
! @code{Loop_Invariant} is used to control whether it is ignored or checked
  (or disabled).
  
! @code{Loop_Invariant} can only appear as 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.
  The intention is that it be used to
*************** represent a "loop invariant" assertion,
*** 4785,4801 ****
  time through the loop, and which can be used to show that the loop is
  achieving its purpose.
  
! Multiple @cite{Loop_Invariant} and @cite{Loop_Variant} pragmas that
  apply to the same loop should be grouped in the same sequence of
  statements.
  
! To aid in writing such invariants, the special attribute @cite{Loop_Entry}
  may be used to refer to the value of an expression on entry to the loop. This
! attribute can only be used within the expression of a @cite{Loop_Invariant}
! pragma. For full details, see documentation of attribute @cite{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{94}
  @section Pragma Loop_Optimize
  
  
--- 4908,4924 ----
  time through the loop, and which can be used to show that the loop is
  achieving its purpose.
  
! Multiple @code{Loop_Invariant} and @code{Loop_Variant} pragmas that
  apply to the same loop should be grouped in the same sequence of
  statements.
  
! To aid in writing such invariants, the special attribute @code{Loop_Entry}
  may be used to refer to the value of an expression on entry to the loop. This
! attribute can only be used within the expression of a @code{Loop_Invariant}
! 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
  
  
*************** compiler in order to enable the relevant
*** 4857,4863 ****
  vectorization.
  
  @node Pragma Loop_Variant,Pragma Machine_Attribute,Pragma Loop_Optimize,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-loop-variant}@anchor{95}
  @section Pragma Loop_Variant
  
  
--- 4980,4986 ----
  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
  
  
*************** LOOP_VARIANT_ITEM ::= CHANGE_DIRECTION =
*** 4869,4875 ****
  CHANGE_DIRECTION ::= Increases | Decreases
  @end example
  
! @cite{Loop_Variant} can only appear as 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.
  It allows the specification of quantities which must always
--- 4992,4998 ----
  CHANGE_DIRECTION ::= Increases | Decreases
  @end example
  
! @code{Loop_Variant} can only appear as 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.
  It allows the specification of quantities which must always
*************** pragma Loop_Variant (Increases => X, Dec
*** 4885,4910 ****
  @end example
  
  specifies that each time through the loop either X increases, or X stays
! the same and Y decreases. A @cite{Loop_Variant} pragma ensures that the
  loop is making progress. It can be useful in helping to show informally
  or prove formally that the loop always terminates.
  
! @cite{Loop_Variant} is an assertion whose effect can be controlled using
! an @cite{Assertion_Policy} with a check name of @cite{Loop_Variant}. The
! policy can be @cite{Check} to enable the loop variant check, @cite{Ignore}
  to ignore the check (in which case the pragma has no effect on the program),
! or @cite{Disable} in which case the pragma is not even checked for correct
  syntax.
  
! Multiple @cite{Loop_Invariant} and @cite{Loop_Variant} pragmas that
  apply to the same loop should be grouped in the same sequence of
  statements.
  
! The @cite{Loop_Entry} attribute may be used within the expressions of the
! @cite{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{96}
  @section Pragma Machine_Attribute
  
  
--- 5008,5033 ----
  @end example
  
  specifies that each time through the loop either X increases, or X stays
! the same and Y decreases. A @code{Loop_Variant} pragma ensures that the
  loop is making progress. It can be useful in helping to show informally
  or prove formally that the loop always terminates.
  
! @code{Loop_Variant} is an assertion whose effect can be controlled using
! an @code{Assertion_Policy} with a check name of @code{Loop_Variant}. The
! policy can be @code{Check} to enable the loop variant check, @code{Ignore}
  to ignore the check (in which case the pragma has no effect on the program),
! or @code{Disable} in which case the pragma is not even checked for correct
  syntax.
  
! Multiple @code{Loop_Invariant} and @code{Loop_Variant} pragmas that
  apply to the same loop should be grouped in the same sequence of
  statements.
  
! The @code{Loop_Entry} attribute may be used within the expressions of the
! @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
  
  
*************** pragma Machine_Attribute (
*** 4919,4935 ****
  
  Machine-dependent attributes can be specified for types and/or
  declarations.  This pragma is semantically equivalent to
! @cite{__attribute__((`attribute_name}))` (if @cite{info} is not
! specified) or @cite{__attribute__((`attribute_name`(`info})))
! in GNU C, where @code{attribute_name} is recognized by the
! compiler middle-end or the @cite{TARGET_ATTRIBUTE_TABLE} machine
! specific macro.  A string literal for the optional parameter @cite{info}
  is transformed into an identifier, which may make this pragma unusable
  for some attributes.
  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{97}
  @section Pragma Main
  
  
--- 5042,5058 ----
  
  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})))}
! in GNU C, where @emph{attribute_name} is recognized by the
! compiler middle-end or the @code{TARGET_ATTRIBUTE_TABLE} machine
! specific macro.  A string literal for the optional parameter @code{info}
  is transformed into an identifier, which may make this pragma unusable
  for some attributes.
  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
  
  
*************** This pragma is provided for compatibilit
*** 4949,4955 ****
  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{98}
  @section Pragma Main_Storage
  
  
--- 5072,5078 ----
  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
  
  
*************** This pragma is provided for compatibilit
*** 4968,4974 ****
  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 pragma-max-queue-length}@anchor{99}
  @section Pragma Max_Queue_Length
  
  
--- 5091,5097 ----
  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
  
  
*************** individual protected entries and entry f
*** 4983,4990 ****
  positive integer as a parameter and must appear after the declaration
  of an entry.
  
! @node Pragma No_Body,Pragma No_Elaboration_Code_All,Pragma Max_Queue_Length,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-no-body}@anchor{9a}
  @section Pragma No_Body
  
  
--- 5106,5113 ----
  positive integer as a parameter and must appear after the declaration
  of an entry.
  
! @node Pragma No_Body,Pragma No_Component_Reordering,Pragma Max_Queue_Length,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-no-body}@anchor{9c}
  @section Pragma No_Body
  
  
*************** such a way that a body needed before is
*** 5006,5013 ****
  dummy body with a No_Body pragma ensures that there is no interference from
  earlier versions of the package body.
  
! @node Pragma No_Elaboration_Code_All,Pragma No_Inline,Pragma No_Body,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id22}@anchor{9b}@anchor{gnat_rm/implementation_defined_pragmas pragma-no-elaboration-code-all}@anchor{9c}
  @section Pragma No_Elaboration_Code_All
  
  
--- 5129,5155 ----
  dummy body with a No_Body pragma ensures that there is no interference from
  earlier versions of the package body.
  
! @node Pragma No_Component_Reordering,Pragma No_Elaboration_Code_All,Pragma No_Body,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-no-component-reordering}@anchor{9d}
! @section Pragma No_Component_Reordering
! 
! 
! Syntax:
! 
! @example
! pragma No_Component_Reordering [([Entity =>] type_LOCAL_NAME)];
! @end example
! 
! @code{type_LOCAL_NAME} must refer to a record type declaration in the current
! declarative part. The effect is to preclude any reordering of components
! for the layout of the record, i.e. the record is laid out by the compiler
! in the order in which the components are declared textually. The form with
! no argument is a configuration pragma which applies to all record types
! declared in units to which the pragma applies and there is a requirement
! 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 id23}@anchor{9e}@anchor{gnat_rm/implementation_defined_pragmas pragma-no-elaboration-code-all}@anchor{9f}
  @section Pragma No_Elaboration_Code_All
  
  
*************** pragma No_Elaboration_Code_All [(program
*** 5018,5032 ****
  @end example
  
  This is a program unit pragma (there is also an equivalent aspect of the
! same name) that establishes the restriction @cite{No_Elaboration_Code} for
! the current unit and any extended main source units (body and subunits.
! It also has has the effect of enforcing a transitive application of this
! aspect, so that if any unit is implicitly or explicitly WITH'ed by the
  current unit, it must also have the No_Elaboration_Code_All aspect set.
  It may be applied to package or subprogram specs or their generic versions.
  
! @node Pragma No_Inline,Pragma No_Return,Pragma No_Elaboration_Code_All,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-no-inline}@anchor{9d}
  @section Pragma No_Inline
  
  
--- 5160,5206 ----
  @end example
  
  This is a program unit pragma (there is also an equivalent aspect of the
! same name) that establishes the restriction @code{No_Elaboration_Code} for
! the current unit and any extended main source units (body and subunits).
! It also has the effect of enforcing a transitive application of this
! aspect, so that if any unit is implicitly or explicitly with'ed by the
  current unit, it must also have the No_Elaboration_Code_All aspect set.
  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{a0}
! @section Pragma No_Heap_Finalization
! 
! 
! Syntax:
! 
! @example
! pragma No_Heap_Finalization [ (first_subtype_LOCAL_NAME) ];
! @end example
! 
! Pragma @code{No_Heap_Finalization} may be used as a configuration pragma or as a
! type-specific pragma.
! 
! In its configuration form, the pragma must appear within a configuration file
! such as gnat.adc, without an argument. The pragma suppresses the call to
! @code{Finalize} for heap-allocated objects created through library-level named
! access-to-object types in cases where the designated type requires finalization
! actions.
! 
! In its type-specific form, the argument of the pragma must denote a
! library-level named access-to-object type. The pragma suppresses the call to
! @code{Finalize} for heap-allocated objects created through the specific access type
! in cases where the designated type requires finalization actions.
! 
! It is still possible to finalize such heap-allocated objects by explicitly
! deallocating them.
! 
! A library-level named access-to-object type declared within a generic unit will
! lose its @code{No_Heap_Finalization} pragma when the corresponding instance does not
! 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 id24}@anchor{a1}@anchor{gnat_rm/implementation_defined_pragmas pragma-no-inline}@anchor{a2}
  @section Pragma No_Inline
  
  
*************** pragma No_Inline (NAME @{, NAME@});
*** 5037,5050 ****
  @end example
  
  This pragma suppresses inlining for the callable entity or the instances of
! the generic subprogram designated by @cite{NAME}, including inlining that
! results from the use of pragma @cite{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 @cite{No_Inline} and
! pragma @cite{Inline_Always} for the same @cite{NAME}.
  
  @node Pragma No_Return,Pragma No_Run_Time,Pragma No_Inline,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-no-return}@anchor{9e}
  @section Pragma No_Return
  
  
--- 5211,5224 ----
  @end example
  
  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_Run_Time,Pragma No_Inline,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-no-return}@anchor{a3}
  @section Pragma No_Return
  
  
*************** Syntax:
*** 5054,5062 ****
  pragma No_Return (procedure_LOCAL_NAME @{, procedure_LOCAL_NAME@});
  @end example
  
! Each @cite{procedure_LOCAL_NAME} argument must refer to one or more procedure
  declarations in the current declarative part.  A procedure to which this
! pragma is applied may not contain any explicit @cite{return} statements.
  In addition, if the procedure contains any implicit returns from falling
  off the end of a statement sequence, then execution of that implicit
  return will cause Program_Error to be raised.
--- 5228,5236 ----
  pragma No_Return (procedure_LOCAL_NAME @{, procedure_LOCAL_NAME@});
  @end example
  
! Each @code{procedure_LOCAL_NAME} argument must refer to one or more procedure
  declarations in the current declarative part.  A procedure to which this
! pragma is applied may not contain any explicit @code{return} statements.
  In addition, if the procedure contains any implicit returns from falling
  off the end of a statement sequence, then execution of that implicit
  return will cause Program_Error to be raised.
*************** available in all earlier versions of Ada
*** 5071,5077 ****
  pragma.
  
  @node Pragma No_Run_Time,Pragma No_Strict_Aliasing,Pragma No_Return,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-no-run-time}@anchor{9f}
  @section Pragma No_Run_Time
  
  
--- 5245,5251 ----
  pragma.
  
  @node Pragma No_Run_Time,Pragma No_Strict_Aliasing,Pragma No_Return,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-no-run-time}@anchor{a4}
  @section Pragma No_Run_Time
  
  
*************** pragma No_Run_Time;
*** 5084,5093 ****
  This is an obsolete configuration pragma that historically was used to
  set up a runtime library with no object code. It is now used only for
  internal testing. The pragma has been superseded by the reconfigurable
! runtime capability of @cite{GNAT}.
  
  @node Pragma No_Strict_Aliasing,Pragma No_Tagged_Streams,Pragma No_Run_Time,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-no-strict-aliasing}@anchor{a0}
  @section Pragma No_Strict_Aliasing
  
  
--- 5258,5267 ----
  This is an obsolete configuration pragma that historically was used to
  set up a runtime library with no object code. It is now used only for
  internal testing. The pragma has been superseded by the reconfigurable
! runtime capability of GNAT.
  
  @node Pragma No_Strict_Aliasing,Pragma No_Tagged_Streams,Pragma No_Run_Time,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-no-strict-aliasing}@anchor{a5}
  @section Pragma No_Strict_Aliasing
  
  
*************** Syntax:
*** 5097,5103 ****
  pragma No_Strict_Aliasing [([Entity =>] type_LOCAL_NAME)];
  @end example
  
! @cite{type_LOCAL_NAME} must refer to an access type
  declaration in the current declarative part.  The effect is to inhibit
  strict aliasing optimization for the given type.  The form with no
  arguments is a configuration pragma which applies to all access types
--- 5271,5277 ----
  pragma No_Strict_Aliasing [([Entity =>] type_LOCAL_NAME)];
  @end example
  
! @code{type_LOCAL_NAME} must refer to an access type
  declaration in the current declarative part.  The effect is to inhibit
  strict aliasing optimization for the given type.  The form with no
  arguments is a configuration pragma which applies to all access types
*************** in the @cite{GNAT User's Guide}.
*** 5109,5122 ****
  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 pragma-no-tagged-streams}@anchor{a1}@anchor{gnat_rm/implementation_defined_pragmas id23}@anchor{a2}
  @section Pragma No_Tagged_Streams
  
  
  Syntax:
  
  @example
- pragma No_Tagged_Streams;
  pragma No_Tagged_Streams [([Entity =>] tagged_type_LOCAL_NAME)];
  @end example
  
--- 5283,5295 ----
  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 pragma-no-tagged-streams}@anchor{a6}@anchor{gnat_rm/implementation_defined_pragmas id25}@anchor{a7}
  @section Pragma No_Tagged_Streams
  
  
  Syntax:
  
  @example
  pragma No_Tagged_Streams [([Entity =>] tagged_type_LOCAL_NAME)];
  @end example
  
*************** or derived types). This can involve the
*** 5127,5133 ****
  of code which is wasted space if stream routines are not needed for the
  type in question.
  
! The @cite{No_Tagged_Streams} pragma causes the generation of these stream
  routines to be skipped, and any attempt to use stream operations on
  types subject to this pragma will be statically rejected as illegal.
  
--- 5300,5306 ----
  of code which is wasted space if stream routines are not needed for the
  type in question.
  
! The @code{No_Tagged_Streams} pragma causes the generation of these stream
  routines to be skipped, and any attempt to use stream operations on
  types subject to this pragma will be statically rejected as illegal.
  
*************** applies to a complete hierarchy (this is
*** 5144,5150 ****
  dispatching versions of the stream routines).
  
  @node Pragma Normalize_Scalars,Pragma Obsolescent,Pragma No_Tagged_Streams,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-normalize-scalars}@anchor{a3}
  @section Pragma Normalize_Scalars
  
  
--- 5317,5323 ----
  dispatching versions of the stream routines).
  
  @node Pragma Normalize_Scalars,Pragma Obsolescent,Pragma No_Tagged_Streams,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-normalize-scalars}@anchor{a8}
  @section Pragma Normalize_Scalars
  
  
*************** invalid value if one exists.
*** 5220,5232 ****
  @item @emph{Enumeration types}
  
  Objects of an enumeration type are initialized to all one-bits, i.e., to
! the value @cite{2 ** typ'Size - 1} unless the subtype excludes the literal
  whose Pos value is zero, in which case a code of zero is used. This choice
  will always generate an invalid value if one exists.
  @end table
  
  @node Pragma Obsolescent,Pragma Optimize_Alignment,Pragma Normalize_Scalars,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-obsolescent}@anchor{a4}@anchor{gnat_rm/implementation_defined_pragmas id24}@anchor{a5}
  @section Pragma Obsolescent
  
  
--- 5393,5405 ----
  @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
  whose Pos value is zero, in which case a code of zero is used. This choice
  will always generate an invalid value if one exists.
  @end table
  
  @node Pragma Obsolescent,Pragma Optimize_Alignment,Pragma Normalize_Scalars,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-obsolescent}@anchor{a9}@anchor{gnat_rm/implementation_defined_pragmas id26}@anchor{aa}
  @section Pragma Obsolescent
  
  
*************** removed later.
*** 5262,5286 ****
  
  The effect of this pragma is to output a warning message on a reference to
  an entity thus marked that the subprogram is obsolescent if the appropriate
! warning option in the compiler is activated. If the Message parameter is
  present, then a second warning message is given containing this text. In
  addition, a reference to the entity is considered to be a violation of pragma
! Restrictions (No_Obsolescent_Features).
  
  This pragma can also be used as a program unit pragma for a package,
  in which case the entity name is the name of the package, and the
  pragma indicates that the entire package is considered
! obsolescent. In this case a client @cite{with}'ing such a package
! violates the restriction, and the @cite{with} statement is
  flagged with warnings if the warning option is set.
  
! If the Version parameter is present (which must be exactly
! the identifier Ada_05, no other argument is allowed), then the
  indication of obsolescence applies only when compiling in Ada 2005
  mode. This is primarily intended for dealing with the situations
  in the predefined library where subprograms or packages
  have become defined as obsolescent in Ada 2005
! (e.g., in Ada.Characters.Handling), but may be used anywhere.
  
  The following examples show typical uses of this pragma:
  
--- 5435,5459 ----
  
  The effect of this pragma is to output a warning message on a reference to
  an entity thus marked that the subprogram is obsolescent if the appropriate
! warning option in the compiler is activated. If the @code{Message} parameter is
  present, then a second warning message is given containing this text. In
  addition, a reference to the entity is considered to be a violation of pragma
! @code{Restrictions (No_Obsolescent_Features)}.
  
  This pragma can also be used as a program unit pragma for a package,
  in which case the entity name is the name of the package, and the
  pragma indicates that the entire package is considered
! obsolescent. In this case a client @code{with}ing such a package
! violates the restriction, and the @code{with} clause is
  flagged with warnings if the warning option is set.
  
! If the @code{Version} parameter is present (which must be exactly
! the identifier @code{Ada_05}, no other argument is allowed), then the
  indication of obsolescence applies only when compiling in Ada 2005
  mode. This is primarily intended for dealing with the situations
  in the predefined library where subprograms or packages
  have become defined as obsolescent in Ada 2005
! (e.g., in @code{Ada.Characters.Handling}), but may be used anywhere.
  
  The following examples show typical uses of this pragma:
  
*************** end;
*** 5318,5328 ****
  
  Note that, as for all pragmas, if you use a pragma argument identifier,
  then all subsequent parameters must also use a pragma argument identifier.
! So if you specify "Entity =>" for the Entity argument, and a Message
! argument is present, it must be preceded by "Message =>".
  
  @node Pragma Optimize_Alignment,Pragma Ordered,Pragma Obsolescent,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-optimize-alignment}@anchor{a6}
  @section Pragma Optimize_Alignment
  
  
--- 5491,5501 ----
  
  Note that, as for all pragmas, if you use a pragma argument identifier,
  then all subsequent parameters must also use a pragma argument identifier.
! So if you specify @code{Entity =>} for the @code{Entity} argument, and a @code{Message}
! 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{ab}
  @section Pragma Optimize_Alignment
  
  
*************** Integer field X are efficient. But this
*** 5364,5370 ****
  with a size of 8 bytes. This is a valid choice, since sizes of objects are
  allowed to be bigger than the size of the type, but it can waste space if for
  example fields of type R appear in an enclosing record. If the above type is
! compiled in @cite{Optimize_Alignment (Space)} mode, the alignment is set to 1.
  
  However, there is one case in which SPACE is ignored. If a variable length
  record (that is a discriminated record with a component which is an array
--- 5537,5543 ----
  with a size of 8 bytes. This is a valid choice, since sizes of objects are
  allowed to be bigger than the size of the type, but it can waste space if for
  example fields of type R appear in an enclosing record. If the above type is
! compiled in @code{Optimize_Alignment (Space)} mode, the alignment is set to 1.
  
  However, there is one case in which SPACE is ignored. If a variable length
  record (that is a discriminated record with a component which is an array
*************** Specifying SPACE also disables alignment
*** 5376,5381 ****
--- 5549,5557 ----
  which occur when the compiler increases the alignment of a specific object
  without changing the alignment of its type.
  
+ Specifying SPACE also disables component reordering in unpacked record types,
+ which can result in larger sizes in order to meet alignment requirements.
+ 
  Specifying TIME causes larger default alignments to be chosen in the case of
  small types with sizes that are not a power of 2. For example, consider:
  
*************** for R'Size use 17;
*** 5391,5397 ****
  @end example
  
  The default alignment for this record is normally 1, but if this type is
! compiled in @cite{Optimize_Alignment (Time)} mode, then the alignment is set
  to 4, which wastes space for objects of the type, since they are now 4 bytes
  long, but results in more efficient access when the whole record is referenced.
  
--- 5567,5573 ----
  @end example
  
  The default alignment for this record is normally 1, but if this type is
! compiled in @code{Optimize_Alignment (Time)} mode, then the alignment is set
  to 4, which wastes space for objects of the type, since they are now 4 bytes
  long, but results in more efficient access when the whole record is referenced.
  
*************** latter are compiled by default in pragma
*** 5405,5411 ****
  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{a7}
  @section Pragma Ordered
  
  
--- 5581,5587 ----
  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{ac}
  @section Pragma Ordered
  
  
*************** For example, consider:
*** 5422,5428 ****
  type Color is (Red, Blue, Green, Yellow);
  @end example
  
! By Ada semantics @cite{Blue > Red} and @cite{Green > Blue},
  but really these relations make no sense; the enumeration type merely
  specifies a set of possible colors, and the order is unimportant.
  
--- 5598,5604 ----
  type Color is (Red, Blue, Green, Yellow);
  @end example
  
! By Ada semantics @code{Blue > Red} and @code{Green > Blue},
  but really these relations make no sense; the enumeration type merely
  specifies a set of possible colors, and the order is unimportant.
  
*************** entries have to be added to the enumerat
*** 5443,5449 ****
  the code in the client should list the possibilities, or an
  appropriate subtype should be declared in the unit that declares
  the original enumeration type. E.g., the following subtype could
! be declared along with the type @cite{Color}:
  
  @example
  subtype RBG is Color range Red .. Green;
--- 5619,5625 ----
  the code in the client should list the possibilities, or an
  appropriate subtype should be declared in the unit that declares
  the original enumeration type. E.g., the following subtype could
! be declared along with the type @code{Color}:
  
  @example
  subtype RBG is Color range Red .. Green;
*************** on the ordering. GNAT provides a pragma
*** 5477,5492 ****
  rather than one to mark them as unordered, since in our experience,
  the great majority of enumeration types are conceptually unordered.
  
! The types @cite{Boolean}, @cite{Character}, @cite{Wide_Character},
! and @cite{Wide_Wide_Character}
  are considered to be ordered types, so each is declared with a
! pragma @cite{Ordered} in package @cite{Standard}.
  
! Normally pragma @cite{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 @cite{Ordered} will be considered
  as unordered, and will generate warnings for inappropriate uses.
  
  Note that generic types are not considered ordered or unordered (since the
--- 5653,5668 ----
  rather than one to mark them as unordered, since in our experience,
  the great majority of enumeration types are conceptually unordered.
  
! The types @code{Boolean}, @code{Character}, @code{Wide_Character},
! and @code{Wide_Wide_Character}
  are considered to be ordered types, so each is declared with a
! 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
  as unordered, and will generate warnings for inappropriate uses.
  
  Note that generic types are not considered ordered or unordered (since the
*************** For additional information please refer
*** 5497,5503 ****
  @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{a8}
  @section Pragma Overflow_Mode
  
  
--- 5673,5679 ----
  @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{ad}
  @section Pragma Overflow_Mode
  
  
*************** MODE ::= STRICT | MINIMIZED | ELIMINATED
*** 5514,5542 ****
  This pragma sets the current overflow mode to the given setting. For details
  of the meaning of these modes, please refer to the
  'Overflow Check Handling in GNAT' appendix in the
! GNAT User's Guide. If only the @cite{General} parameter is present,
  the given mode applies to all expressions. If both parameters are present,
! the @cite{General} mode applies to expressions outside assertions, and
! the @cite{Eliminated} mode applies to expressions within assertions.
  
! The case of the @cite{MODE} parameter is ignored,
! so @cite{MINIMIZED}, @cite{Minimized} and
! @cite{minimized} all have the same effect.
  
! The @cite{Overflow_Mode} pragma has the same scoping and placement
! rules as pragma @cite{Suppress}, so it can occur either as a
  configuration pragma, specifying a default for the whole
  program, or in a declarative scope, where it applies to the
  remaining declarations and statements in that scope.
  
! The pragma @cite{Suppress (Overflow_Check)} suppresses
  overflow checking, but does not affect the overflow mode.
  
! The pragma @cite{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{a9}
  @section Pragma Overriding_Renamings
  
  
--- 5690,5718 ----
  This pragma sets the current overflow mode to the given setting. For details
  of the meaning of these modes, please refer to the
  'Overflow Check Handling in GNAT' appendix in the
! GNAT User's Guide. If only the @code{General} parameter is present,
  the given mode applies to all expressions. If both parameters are present,
! the @code{General} mode applies to expressions outside assertions, and
! the @code{Eliminated} mode applies to expressions within assertions.
  
! The case of the @code{MODE} parameter is ignored,
! so @code{MINIMIZED}, @code{Minimized} and
! @code{minimized} all have the same effect.
  
! The @code{Overflow_Mode} pragma has the same scoping and placement
! rules as pragma @code{Suppress}, so it can occur either as a
  configuration pragma, specifying a default for the whole
  program, or in a declarative scope, where it applies to the
  remaining declarations and statements in that scope.
  
! The pragma @code{Suppress (Overflow_Check)} suppresses
  overflow checking, but does not affect the overflow mode.
  
! 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{ae}
  @section Pragma Overriding_Renamings
  
  
*************** RM 8.3 (15) stipulates that an overridde
*** 5571,5577 ****
  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{aa}
  @section Pragma Partition_Elaboration_Policy
  
  
--- 5747,5753 ----
  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{af}
  @section Pragma Partition_Elaboration_Policy
  
  
*************** versions of Ada as an implementation-def
*** 5588,5594 ****
  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 id25}@anchor{ab}@anchor{gnat_rm/implementation_defined_pragmas pragma-part-of}@anchor{ac}
  @section Pragma Part_Of
  
  
--- 5764,5770 ----
  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 id27}@anchor{b0}@anchor{gnat_rm/implementation_defined_pragmas pragma-part-of}@anchor{b1}
  @section Pragma Part_Of
  
  
*************** pragma Part_Of (ABSTRACT_STATE);
*** 5600,5610 ****
  ABSTRACT_STATE ::= NAME
  @end example
  
! For the semantics of this pragma, see the entry for aspect @cite{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{ad}
  @section Pragma Passive
  
  
--- 5776,5786 ----
  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{b2}
  @section Pragma Passive
  
  
*************** pragma Passive [(Semaphore | No)];
*** 5617,5626 ****
  Syntax checked, but otherwise ignored by GNAT.  This is recognized for
  compatibility with DEC Ada 83 implementations, where it is used within a
  task definition to request that a task be made passive.  If the argument
! @cite{Semaphore} is present, or the argument is omitted, then DEC Ada 83
  treats the pragma as an assertion that the containing task is passive
  and that optimization of context switch with this task is permitted and
! desired.  If the argument @cite{No} is present, the task must not be
  optimized.  GNAT does not attempt to optimize any tasks in this manner
  (since protected objects are available in place of passive tasks).
  
--- 5793,5802 ----
  Syntax checked, but otherwise ignored by GNAT.  This is recognized for
  compatibility with DEC Ada 83 implementations, where it is used within a
  task definition to request that a task be made passive.  If the argument
! @code{Semaphore} is present, or the argument is omitted, then DEC Ada 83
  treats the pragma as an assertion that the containing task is passive
  and that optimization of context switch with this task is permitted and
! desired.  If the argument @code{No} is present, the task must not be
  optimized.  GNAT does not attempt to optimize any tasks in this manner
  (since protected objects are available in place of passive tasks).
  
*************** For more information on the subject of p
*** 5628,5634 ****
  'Passive Task Optimization' in the GNAT Users Guide.
  
  @node Pragma Persistent_BSS,Pragma Polling,Pragma Passive,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-persistent-bss}@anchor{ae}@anchor{gnat_rm/implementation_defined_pragmas id26}@anchor{af}
  @section Pragma Persistent_BSS
  
  
--- 5804,5810 ----
  'Passive Task Optimization' in the GNAT Users Guide.
  
  @node Pragma Persistent_BSS,Pragma Polling,Pragma Passive,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id28}@anchor{b3}@anchor{gnat_rm/implementation_defined_pragmas pragma-persistent-bss}@anchor{b4}
  @section Pragma Persistent_BSS
  
  
*************** Syntax:
*** 5638,5652 ****
  pragma Persistent_BSS [(LOCAL_NAME)]
  @end example
  
! This pragma allows selected objects to be placed in the @cite{.persistent_bss}
  section. On some targets the linker and loader provide for special
  treatment of this section, allowing a program to be reloaded without
  affecting the contents of this data (hence the name persistent).
  
  There are two forms of usage. If an argument is given, it must be the
! local name of a library level object, with no explicit initialization
  and whose type is potentially persistent. If no argument is given, then
! the pragma is a configuration pragma, and applies to all library level
  objects with no explicit initialization of potentially persistent types.
  
  A potentially persistent type is a scalar type, or an untagged,
--- 5814,5828 ----
  pragma Persistent_BSS [(LOCAL_NAME)]
  @end example
  
! This pragma allows selected objects to be placed in the @code{.persistent_bss}
  section. On some targets the linker and loader provide for special
  treatment of this section, allowing a program to be reloaded without
  affecting the contents of this data (hence the name persistent).
  
  There are two forms of usage. If an argument is given, it must be the
! local name of a library-level object, with no explicit initialization
  and whose type is potentially persistent. If no argument is given, then
! the pragma is a configuration pragma, and applies to all library-level
  objects with no explicit initialization of potentially persistent types.
  
  A potentially persistent type is a scalar type, or an untagged,
*************** or an array, all of whose constraints ar
*** 5656,5665 ****
  type is potentially persistent.
  
  If this pragma is used on a target where this feature is not supported,
! then the pragma will be ignored. See also @cite{pragma Linker_Section}.
  
  @node Pragma Polling,Pragma Post,Pragma Persistent_BSS,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-polling}@anchor{b0}
  @section Pragma Polling
  
  
--- 5832,5841 ----
  type is potentially persistent.
  
  If this pragma is used on a target where this feature is not supported,
! then the pragma will be ignored. See also @code{pragma Linker_Section}.
  
  @node Pragma Polling,Pragma Post,Pragma Persistent_BSS,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-polling}@anchor{b5}
  @section Pragma Polling
  
  
*************** pragma Polling (ON | OFF);
*** 5670,5707 ****
  @end example
  
  This pragma controls the generation of polling code.  This is normally off.
! If @cite{pragma Polling (ON)} is used then periodic calls are generated to
! the routine @cite{Ada.Exceptions.Poll}.  This routine is a separate unit in the
  runtime library, and can be found in file @code{a-excpol.adb}.
  
! Pragma @cite{Polling} can appear as a configuration pragma (for example it
  can be placed in the @code{gnat.adc} file) to enable polling globally, or it
  can be used in the statement or declaration sequence to control polling
  more locally.
  
  A call to the polling routine is generated at the start of every loop and
! at the start of every subprogram call.  This guarantees that the @cite{Poll}
  routine is called frequently, and places an upper bound (determined by
! the complexity of the code) on the period between two @cite{Poll} calls.
  
  The primary purpose of the polling interface is to enable asynchronous
  aborts on targets that cannot otherwise support it (for example Windows
  NT), but it may be used for any other purpose requiring periodic polling.
  The standard version is null, and can be replaced by a user program.  This
! will require re-compilation of the @cite{Ada.Exceptions} package that can
  be found in files @code{a-except.ads} and @code{a-except.adb}.
  
  A standard alternative unit (in file @code{4wexcpol.adb} in the standard GNAT
  distribution) is used to enable the asynchronous abort capability on
  targets that do not normally support the capability.  The version of
! @cite{Poll} in this file makes a call to the appropriate runtime routine
  to test for an abort condition.
  
  Note that polling can also be enabled by use of the @emph{-gnatP} switch.
  See the section on switches for gcc in the @cite{GNAT User's Guide}.
  
  @node Pragma Post,Pragma Postcondition,Pragma Polling,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-post}@anchor{b1}
  @section Pragma Post
  
  
--- 5846,5883 ----
  @end example
  
  This pragma controls the generation of polling code.  This is normally off.
! If @code{pragma Polling (ON)} is used then periodic calls are generated to
! the routine @code{Ada.Exceptions.Poll}.  This routine is a separate unit in the
  runtime library, and can be found in file @code{a-excpol.adb}.
  
! Pragma @code{Polling} can appear as a configuration pragma (for example it
  can be placed in the @code{gnat.adc} file) to enable polling globally, or it
  can be used in the statement or declaration sequence to control polling
  more locally.
  
  A call to the polling routine is generated at the start of every loop and
! at the start of every subprogram call.  This guarantees that the @code{Poll}
  routine is called frequently, and places an upper bound (determined by
! the complexity of the code) on the period between two @code{Poll} calls.
  
  The primary purpose of the polling interface is to enable asynchronous
  aborts on targets that cannot otherwise support it (for example Windows
  NT), but it may be used for any other purpose requiring periodic polling.
  The standard version is null, and can be replaced by a user program.  This
! will require re-compilation of the @code{Ada.Exceptions} package that can
  be found in files @code{a-except.ads} and @code{a-except.adb}.
  
  A standard alternative unit (in file @code{4wexcpol.adb} in the standard GNAT
  distribution) is used to enable the asynchronous abort capability on
  targets that do not normally support the capability.  The version of
! @code{Poll} in this file makes a call to the appropriate runtime routine
  to test for an abort condition.
  
  Note that polling can also be enabled by use of the @emph{-gnatP} switch.
  See the section on switches for gcc in the @cite{GNAT User's Guide}.
  
  @node Pragma Post,Pragma Postcondition,Pragma Polling,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-post}@anchor{b6}
  @section Pragma Post
  
  
*************** Syntax:
*** 5716,5724 ****
  pragma Post (Boolean_Expression);
  @end example
  
! The @cite{Post} pragma is intended to be an exact replacement for
  the language-defined
! @cite{Post} aspect, and shares its restrictions and semantics.
  It must appear either immediately following the corresponding
  subprogram declaration (only other pragmas may intervene), or
  if there is no separate subprogram declaration, then it can
--- 5892,5900 ----
  pragma Post (Boolean_Expression);
  @end example
  
! The @code{Post} pragma is intended to be an exact replacement for
  the language-defined
! @code{Post} aspect, and shares its restrictions and semantics.
  It must appear either immediately following the corresponding
  subprogram declaration (only other pragmas may intervene), or
  if there is no separate subprogram declaration, then it can
*************** appear at the start of the declarations
*** 5726,5732 ****
  (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{b2}
  @section Pragma Postcondition
  
  
--- 5902,5908 ----
  (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
  
  
*************** pragma Postcondition (
*** 5743,5749 ****
   [,[Message =>] String_Expression]);
  @end example
  
! The @cite{Postcondition} pragma allows specification of automatic
  postcondition checks for subprograms. These checks are similar to
  assertions, but are automatically inserted just prior to the return
  statements of the subprogram with which they are associated (including
--- 5919,5925 ----
   [,[Message =>] String_Expression]);
  @end example
  
! The @code{Postcondition} pragma allows specification of automatic
  postcondition checks for subprograms. These checks are similar to
  assertions, but are automatically inserted just prior to the return
  statements of the subprogram with which they are associated (including
*************** In addition, the boolean expression whic
*** 5754,5760 ****
  must be true may contain references to function'Result in the case
  of a function to refer to the returned value.
  
! @cite{Postcondition} pragmas may appear either immediately following the
  (separate) declaration of a subprogram, or at the start of the
  declarations of a subprogram body. Only other pragmas may intervene
  (that is appear between the subprogram declaration and its
--- 5930,5936 ----
  must be true may contain references to function'Result in the case
  of a function to refer to the returned value.
  
! @code{Postcondition} pragmas may appear either immediately following the
  (separate) declaration of a subprogram, or at the start of the
  declarations of a subprogram body. Only other pragmas may intervene
  (that is appear between the subprogram declaration and its
*************** The postconditions are collected and aut
*** 5768,5775 ****
  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 @cite{Check_Policy}
! with an identifier of @cite{Postcondition} can also be used to
  control whether postconditions are active.
  
  The general approach is that postconditions are placed in the spec
--- 5944,5951 ----
  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.
  
  The general approach is that postconditions are placed in the spec
*************** function Sqrt (Arg : Float) return Float
*** 5805,5811 ****
  end Sqrt
  @end example
  
! As this example, shows, the use of the @cite{Old} attribute
  is often useful in postconditions to refer to the state on
  entry to the subprogram.
  
--- 5981,5987 ----
  end Sqrt
  @end example
  
! As this example, shows, the use of the @code{Old} attribute
  is often useful in postconditions to refer to the state on
  entry to the subprogram.
  
*************** from the subprogram. If an abnormal retu
*** 5814,5820 ****
  raising an exception, then the postconditions are not checked.
  
  If a postcondition fails, then the exception
! @cite{System.Assertions.Assert_Failure} is raised. If
  a message argument was supplied, then the given string
  will be used as the exception message. If no message
  argument was supplied, then the default message has
--- 5990,5996 ----
  raising an exception, then the postconditions are not checked.
  
  If a postcondition fails, then the exception
! @code{System.Assertions.Assert_Failure} is raised. If
  a message argument was supplied, then the given string
  will be used as the exception message. If no message
  argument was supplied, then the default message has
*************** end Parity_Functions;
*** 5854,5860 ****
  @end example
  
  There are no restrictions on the complexity or form of
! conditions used within @cite{Postcondition} pragmas.
  The following example shows that it is even possible
  to verify performance behavior.
  
--- 6030,6036 ----
  @end example
  
  There are no restrictions on the complexity or form of
! conditions used within @code{Postcondition} pragmas.
  The following example shows that it is even possible
  to verify performance behavior.
  
*************** inlining (-gnatN option set) are accepte
*** 5881,5897 ****
  by the compiler, but are ignored at run-time even if postcondition
  checking is enabled.
  
! Note that pragma @cite{Postcondition} differs from the language-defined
! @cite{Post} aspect (and corresponding @cite{Post} pragma) in allowing
  multiple occurrences, allowing occurences in the body even if there
  is a separate spec, and allowing a second string parameter, and the
! use of the pragma identifier @cite{Check}. Historically, pragma
! @cite{Postcondition} was implemented prior to the development of
  Ada 2012, and has been retained in its original form for
  compatibility purposes.
  
  @node Pragma Post_Class,Pragma Rename_Pragma,Pragma Postcondition,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-post-class}@anchor{b3}
  @section Pragma Post_Class
  
  
--- 6057,6073 ----
  by the compiler, but are ignored at run-time even if postcondition
  checking is enabled.
  
! Note that pragma @code{Postcondition} differs from the language-defined
! @code{Post} aspect (and corresponding @code{Post} pragma) in allowing
  multiple occurrences, allowing occurences in the body even if there
  is a separate spec, and allowing a second string parameter, and the
! use of the pragma identifier @code{Check}. Historically, pragma
! @code{Postcondition} was implemented prior to the development of
  Ada 2012, and has been retained in its original form for
  compatibility purposes.
  
  @node Pragma Post_Class,Pragma Rename_Pragma,Pragma Postcondition,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-post-class}@anchor{b8}
  @section Pragma Post_Class
  
  
*************** Syntax:
*** 5906,5932 ****
  pragma Post_Class (Boolean_Expression);
  @end example
  
! The @cite{Post_Class} pragma is intended to be an exact replacement for
  the language-defined
! @cite{Post'Class} aspect, and shares its restrictions and semantics.
  It must appear either immediately following the corresponding
  subprogram declaration (only other pragmas may intervene), or
  if there is no separate subprogram declaration, then it can
  appear at the start of the declarations in a subprogram body
  (preceded only by other pragmas).
  
! Note: This pragma is called @cite{Post_Class} rather than
! @cite{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
! policy that controls this pragma is @cite{Post'Class}, not
! @cite{Post_Class}.
  
  @node Pragma Rename_Pragma,Pragma Pre,Pragma Post_Class,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-rename-pragma}@anchor{b4}
  @section Pragma Rename_Pragma
  
  
--- 6082,6108 ----
  pragma Post_Class (Boolean_Expression);
  @end example
  
! The @code{Post_Class} pragma is intended to be an exact replacement for
  the language-defined
! @code{Post'Class} aspect, and shares its restrictions and semantics.
  It must appear either immediately following the corresponding
  subprogram declaration (only other pragmas may intervene), or
  if there is no separate subprogram declaration, then it can
  appear at the start of the declarations in a subprogram body
  (preceded only by other pragmas).
  
! 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
! policy that controls this pragma is @code{Post'Class}, not
! @code{Post_Class}.
  
  @node Pragma Rename_Pragma,Pragma Pre,Pragma Post_Class,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-rename-pragma}@anchor{b9}
  @section Pragma Rename_Pragma
  
  
*************** pragma Rename_Pragma (
*** 5942,5948 ****
  @end example
  
  This pragma provides a mechanism for supplying new names for existing
! pragmas. The @cite{New_Name} identifier can subsequently be used as a synonym for
  the Renamed pragma. For example, suppose you have code that was originally
  developed on a compiler that supports Inline_Only as an implementation defined
  pragma. And suppose the semantics of pragma Inline_Only are identical to (or at
--- 6118,6124 ----
  @end example
  
  This pragma provides a mechanism for supplying new names for existing
! pragmas. The @code{New_Name} identifier can subsequently be used as a synonym for
  the Renamed pragma. For example, suppose you have code that was originally
  developed on a compiler that supports Inline_Only as an implementation defined
  pragma. And suppose the semantics of pragma Inline_Only are identical to (or at
*************** Pragma Inline_Only will not necessarily
*** 5965,5971 ****
  compiler; it's up to you to make sure the semantics are close enough.
  
  @node Pragma Pre,Pragma Precondition,Pragma Rename_Pragma,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-pre}@anchor{b5}
  @section Pragma Pre
  
  
--- 6141,6147 ----
  compiler; it's up to you to make sure the semantics are close enough.
  
  @node Pragma Pre,Pragma Precondition,Pragma Rename_Pragma,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-pre}@anchor{ba}
  @section Pragma Pre
  
  
*************** Syntax:
*** 5980,5988 ****
  pragma Pre (Boolean_Expression);
  @end example
  
! The @cite{Pre} pragma is intended to be an exact replacement for
  the language-defined
! @cite{Pre} aspect, and shares its restrictions and semantics.
  It must appear either immediately following the corresponding
  subprogram declaration (only other pragmas may intervene), or
  if there is no separate subprogram declaration, then it can
--- 6156,6164 ----
  pragma Pre (Boolean_Expression);
  @end example
  
! The @code{Pre} pragma is intended to be an exact replacement for
  the language-defined
! @code{Pre} aspect, and shares its restrictions and semantics.
  It must appear either immediately following the corresponding
  subprogram declaration (only other pragmas may intervene), or
  if there is no separate subprogram declaration, then it can
*************** appear at the start of the declarations
*** 5990,5996 ****
  (preceded only by other pragmas).
  
  @node Pragma Precondition,Pragma Predicate,Pragma Pre,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-precondition}@anchor{b6}
  @section Pragma Precondition
  
  
--- 6166,6172 ----
  (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
  
  
*************** pragma Precondition (
*** 6007,6013 ****
   [,[Message =>] String_Expression]);
  @end example
  
! The @cite{Precondition} pragma is similar to @cite{Postcondition}
  except that the corresponding checks take place immediately upon
  entry to the subprogram, and if a precondition fails, the exception
  is raised in the context of the caller, and the attribute 'Result
--- 6183,6189 ----
   [,[Message =>] String_Expression]);
  @end example
  
! The @code{Precondition} pragma is similar to @code{Postcondition}
  except that the corresponding checks take place immediately upon
  entry to the subprogram, and if a precondition fails, the exception
  is raised in the context of the caller, and the attribute 'Result
*************** package Math_Functions is
*** 6026,6032 ****
  end Math_Functions;
  @end example
  
! @cite{Precondition} pragmas may appear either immediately following the
  (separate) declaration of a subprogram, or at the start of the
  declarations of a subprogram body. Only other pragmas may intervene
  (that is appear between the subprogram declaration and its
--- 6202,6208 ----
  end Math_Functions;
  @end example
  
! @code{Precondition} pragmas may appear either immediately following the
  (separate) declaration of a subprogram, or at the start of the
  declarations of a subprogram body. Only other pragmas may intervene
  (that is appear between the subprogram declaration and its
*************** inlining (-gnatN option set) are accepte
*** 6039,6055 ****
  by the compiler, but are ignored at run-time even if precondition
  checking is enabled.
  
! Note that pragma @cite{Precondition} differs from the language-defined
! @cite{Pre} aspect (and corresponding @cite{Pre} pragma) in allowing
  multiple occurrences, allowing occurences in the body even if there
  is a separate spec, and allowing a second string parameter, and the
! use of the pragma identifier @cite{Check}. Historically, pragma
! @cite{Precondition} was implemented prior to the development of
  Ada 2012, and has been retained in its original form for
  compatibility purposes.
  
  @node Pragma Predicate,Pragma Predicate_Failure,Pragma Precondition,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-predicate}@anchor{b7}@anchor{gnat_rm/implementation_defined_pragmas id27}@anchor{b8}
  @section Pragma Predicate
  
  
--- 6215,6231 ----
  by the compiler, but are ignored at run-time even if precondition
  checking is enabled.
  
! Note that pragma @code{Precondition} differs from the language-defined
! @code{Pre} aspect (and corresponding @code{Pre} pragma) in allowing
  multiple occurrences, allowing occurences in the body even if there
  is a separate spec, and allowing a second string parameter, and the
! use of the pragma identifier @code{Check}. Historically, pragma
! @code{Precondition} was implemented prior to the development of
  Ada 2012, and has been retained in its original form for
  compatibility purposes.
  
  @node Pragma Predicate,Pragma Predicate_Failure,Pragma Precondition,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id29}@anchor{bc}@anchor{gnat_rm/implementation_defined_pragmas pragma-predicate}@anchor{bd}
  @section Pragma Predicate
  
  
*************** pragma Predicate
*** 6062,6071 ****
  @end example
  
  This pragma (available in all versions of Ada in GNAT) encompasses both
! the @cite{Static_Predicate} and @cite{Dynamic_Predicate} aspects in
  Ada 2012. A predicate is regarded as static if it has an allowed form
! for @cite{Static_Predicate} and is otherwise treated as a
! @cite{Dynamic_Predicate}. Otherwise, predicates specified by this
  pragma behave exactly as described in the Ada 2012 reference manual.
  For example, if we have
  
--- 6238,6247 ----
  @end example
  
  This pragma (available in all versions of Ada in GNAT) encompasses both
! the @code{Static_Predicate} and @code{Dynamic_Predicate} aspects in
  Ada 2012. A predicate is regarded as static if it has an allowed form
! for @code{Static_Predicate} and is otherwise treated as a
! @code{Dynamic_Predicate}. Otherwise, predicates specified by this
  pragma behave exactly as described in the Ada 2012 reference manual.
  For example, if we have
  
*************** subtype Q is R with
*** 6087,6094 ****
    Dynamic_Predicate => F(Q) or G(Q);
  @end example
  
! Note that there are no pragmas @cite{Dynamic_Predicate}
! or @cite{Static_Predicate}. That is
  because these pragmas would affect legality and semantics of
  the program and thus do not have a neutral effect if ignored.
  The motivation behind providing pragmas equivalent to
--- 6263,6270 ----
    Dynamic_Predicate => F(Q) or G(Q);
  @end example
  
! Note that there are no pragmas @code{Dynamic_Predicate}
! or @code{Static_Predicate}. That is
  because these pragmas would affect legality and semantics of
  the program and thus do not have a neutral effect if ignored.
  The motivation behind providing pragmas equivalent to
*************** will ignore the pragmas. That doesn't wo
*** 6098,6109 ****
  static and dynamic predicates, since if the corresponding
  pragmas are ignored, then the behavior of the program is
  fundamentally changed (for example a membership test
! @cite{A in B} would not take into account a predicate
  defined for subtype B). When following this approach, the
  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{b9}
  @section Pragma Predicate_Failure
  
  
--- 6274,6285 ----
  static and dynamic predicates, since if the corresponding
  pragmas are ignored, then the behavior of the program is
  fundamentally changed (for example a membership test
! @code{A in B} would not take into account a predicate
  defined for subtype B). When following this approach, the
  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
  
  
*************** pragma Predicate_Failure
*** 6115,6126 ****
     [Message =>] String_Expression);
  @end example
  
! The @cite{Predicate_Failure} pragma is intended to be an exact replacement for
  the language-defined
! @cite{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{ba}
  @section Pragma Preelaborable_Initialization
  
  
--- 6291,6302 ----
     [Message =>] String_Expression);
  @end example
  
! The @code{Predicate_Failure} pragma is intended to be an exact replacement for
  the language-defined
! @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
*** 6135,6141 ****
  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{bb}
  @section Pragma Prefix_Exception_Messages
  
  
--- 6311,6317 ----
  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
  
  
*************** The pragma has no effect if the message
*** 6163,6172 ****
  than a static string constant, since the assumption in this case is that
  the program computes exactly the string it wants. If you still want the
  prefixing in this case, you can always call
! @cite{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{bc}
  @section Pragma Pre_Class
  
  
--- 6339,6348 ----
  than a static string constant, since the assumption in this case is that
  the program computes exactly the string it wants. If you still want the
  prefixing in this case, you can always call
! @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
  
  
*************** Syntax:
*** 6181,6207 ****
  pragma Pre_Class (Boolean_Expression);
  @end example
  
! The @cite{Pre_Class} pragma is intended to be an exact replacement for
  the language-defined
! @cite{Pre'Class} aspect, and shares its restrictions and semantics.
  It must appear either immediately following the corresponding
  subprogram declaration (only other pragmas may intervene), or
  if there is no separate subprogram declaration, then it can
  appear at the start of the declarations in a subprogram body
  (preceded only by other pragmas).
  
! Note: This pragma is called @cite{Pre_Class} rather than
! @cite{Pre'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 @cite{Pre'Class}, not
! @cite{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{bd}
  @section Pragma Priority_Specific_Dispatching
  
  
--- 6357,6383 ----
  pragma Pre_Class (Boolean_Expression);
  @end example
  
! The @code{Pre_Class} pragma is intended to be an exact replacement for
  the language-defined
! @code{Pre'Class} aspect, and shares its restrictions and semantics.
  It must appear either immediately following the corresponding
  subprogram declaration (only other pragmas may intervene), or
  if there is no separate subprogram declaration, then it can
  appear at the start of the declarations in a subprogram body
  (preceded only by other pragmas).
  
! Note: This pragma is called @code{Pre_Class} rather than
! @code{Pre'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 @code{Pre'Class}, not
! @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
*** 6225,6245 ****
  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{be}
  @section Pragma Profile
  
  
  Syntax:
  
  @example
! pragma Profile (Ravenscar | Restricted | Rational | GNAT_Extended_Ravenscar);
  @end example
  
  This pragma is standard in Ada 2005, but is available in all earlier
  versions of Ada as an implementation-defined pragma. This is a
  configuration pragma that establishes a set of configuration pragmas
! that depend on the argument. @cite{Ravenscar} is standard in Ada 2005.
! The other possibilities (@cite{Restricted}, @cite{Rational}, @cite{GNAT_Extended_Ravenscar})
  are implementation-defined. The set of configuration pragmas
  is defined in the following sections.
  
--- 6401,6423 ----
  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
  
  
  Syntax:
  
  @example
! pragma Profile (Ravenscar | Restricted | Rational |
!                 GNAT_Extended_Ravenscar | GNAT_Ravenscar_EDF );
  @end example
  
  This pragma is standard in Ada 2005, but is available in all earlier
  versions of Ada as an implementation-defined pragma. This is a
  configuration pragma that establishes a set of configuration pragmas
! that depend on the argument. @code{Ravenscar} is standard in Ada 2005.
! The other possibilities (@code{Restricted}, @code{Rational},
! @code{GNAT_Extended_Ravenscar}, @code{GNAT_Ravenscar_EDF})
  are implementation-defined. The set of configuration pragmas
  is defined in the following sections.
  
*************** is defined in the following sections.
*** 6249,6255 ****
  @item 
  Pragma Profile (Ravenscar)
  
! The @cite{Ravenscar} profile is standard in Ada 2005,
  but is available in all earlier
  versions of Ada as an implementation-defined pragma. This profile
  establishes the following set of configuration pragmas:
--- 6427,6433 ----
  @item 
  Pragma Profile (Ravenscar)
  
! The @code{Ravenscar} profile is standard in Ada 2005,
  but is available in all earlier
  versions of Ada as an implementation-defined pragma. This profile
  establishes the following set of configuration pragmas:
*************** The @code{Max_Protected_Entries}, @code{
*** 6411,6416 ****
--- 6589,6600 ----
  @code{No_Relative_Delay} restrictions have been removed.
  
  @item 
+ Pragma Profile (GNAT_Ravenscar_EDF)
+ 
+ This profile corresponds to the Ravenscar profile but using
+ EDF_Across_Priority as the Task_Scheduling_Policy.
+ 
+ @item 
  Pragma Profile (Restricted)
  
  This profile corresponds to the GNAT restricted run time. It
*************** conforming Ada constructs.  The profile
*** 6491,6497 ****
  @end itemize
  
  @node Pragma Profile_Warnings,Pragma Propagate_Exceptions,Pragma Profile,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-profile-warnings}@anchor{bf}
  @section Pragma Profile_Warnings
  
  
--- 6675,6681 ----
  @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
  
  
*************** pragma Profile_Warnings (Ravenscar | Res
*** 6502,6515 ****
  @end example
  
  This is an implementation-defined pragma that is similar in
! effect to @cite{pragma Profile} except that instead of
! generating @cite{Restrictions} pragmas, it generates
! @cite{Restriction_Warnings} pragmas. The result is that
  violations of the profile generate warning messages instead
  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{c0}
  @section Pragma Propagate_Exceptions
  
  
--- 6686,6699 ----
  @end example
  
  This is an implementation-defined pragma that is similar in
! effect to @code{pragma Profile} except that instead of
! generating @code{Restrictions} pragmas, it generates
! @code{Restriction_Warnings} pragmas. The result is that
  violations of the profile generate warning messages instead
  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
*** 6528,6534 ****
  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{c1}
  @section Pragma Provide_Shift_Operators
  
  
--- 6712,6718 ----
  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
*** 6548,6554 ****
  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{c2}
  @section Pragma Psect_Object
  
  
--- 6732,6738 ----
  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 ::=
*** 6565,6574 ****
  | static_string_EXPRESSION
  @end example
  
! This pragma is identical in effect to pragma @cite{Common_Object}.
  
  @node Pragma Pure_Function,Pragma Rational,Pragma Psect_Object,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-pure-function}@anchor{c3}@anchor{gnat_rm/implementation_defined_pragmas id28}@anchor{c4}
  @section Pragma Pure_Function
  
  
--- 6749,6758 ----
  | static_string_EXPRESSION
  @end example
  
! 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 pragma-pure-function}@anchor{c8}@anchor{gnat_rm/implementation_defined_pragmas id30}@anchor{c9}
  @section Pragma Pure_Function
  
  
*************** pragma Pure_Function ([Entity =>] functi
*** 6581,6587 ****
  This pragma appears in the same declarative part as a function
  declaration (or a set of function declarations if more than one
  overloaded declaration exists, in which case the pragma applies
! to all entities).  It specifies that the function @cite{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
--- 6765,6771 ----
  This pragma appears in the same declarative part as a function
  declaration (or a set of function declarations if more than one
  overloaded declaration exists, in which case the pragma applies
! 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 fun
*** 6589,6595 ****
  address clause.
  
  Note that, quite deliberately, there are no static checks to try
! to ensure that this promise is met, so @cite{Pure_Function} can be used
  with functions that are conceptually pure, even if they do modify
  global variables.  For example, a square root function that is
  instrumented to count the number of times it is called is still
--- 6773,6779 ----
  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
  with functions that are conceptually pure, even if they do modify
  global variables.  For example, a square root function that is
  instrumented to count the number of times it is called is still
*************** the compiler may optimize away calls wit
*** 6606,6636 ****
  if that results in unexpected behavior, the proper action is not to
  use the pragma for subprograms that are not (conceptually) pure.
  
! Note: Most functions in a @cite{Pure} package are automatically pure, and
! there is no need to use pragma @cite{Pure_Function} for such functions.  One
  exception is any function that has at least one formal of type
! @cite{System.Address} or a type derived from it.  Such functions are not
  considered pure by default, since the compiler assumes that the
! @cite{Address} parameter may be functioning as a pointer and that the
  referenced data may change even if the address value does not.
  Similarly, imported functions are not considered to be pure by default,
  since there is no way of checking that they are in fact pure.  The use
! of pragma @cite{Pure_Function} for such a function will override these default
  assumption, and cause the compiler to treat a designated subprogram as pure
  in these cases.
  
! Note: If pragma @cite{Pure_Function} is applied to a renamed function, it
  applies to the underlying renamed function.  This can be used to
  disambiguate cases of overloading where some but not all functions
  in a set of overloaded functions are to be designated as pure.
  
! If pragma @cite{Pure_Function} is applied to a library level function, the
  function is also considered pure from an optimization point of view, but the
  unit is not a Pure unit in the categorization sense. So for example, a function
! thus marked is free to @cite{with} non-pure units.
  
  @node Pragma Rational,Pragma Ravenscar,Pragma Pure_Function,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-rational}@anchor{c5}
  @section Pragma Rational
  
  
--- 6790,6820 ----
  if that results in unexpected behavior, the proper action is not to
  use the pragma for subprograms that are not (conceptually) pure.
  
! Note: Most functions in a @code{Pure} package are automatically pure, and
! there is no need to use pragma @code{Pure_Function} for such functions.  One
  exception is any function that has at least one formal of type
! @code{System.Address} or a type derived from it.  Such functions are not
  considered pure by default, since the compiler assumes that the
! @code{Address} parameter may be functioning as a pointer and that the
  referenced data may change even if the address value does not.
  Similarly, imported functions are not considered to be pure by default,
  since there is no way of checking that they are in fact pure.  The use
! of pragma @code{Pure_Function} for such a function will override these default
  assumption, and cause the compiler to treat a designated subprogram as pure
  in these cases.
  
! Note: If pragma @code{Pure_Function} is applied to a renamed function, it
  applies to the underlying renamed function.  This can be used to
  disambiguate cases of overloading where some but not all functions
  in a set of overloaded functions are to be designated as pure.
  
! If pragma @code{Pure_Function} is applied to a library-level function, the
  function is also considered pure from an optimization point of view, but the
  unit is not a Pure unit in the categorization sense. So for example, a function
! 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);
*** 6648,6654 ****
  @end example
  
  @node Pragma Ravenscar,Pragma Refined_Depends,Pragma Rational,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ravenscar}@anchor{c6}
  @section Pragma Ravenscar
  
  
--- 6832,6838 ----
  @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
  
  
*************** compatibility purposes. It is equivalent
*** 6665,6674 ****
  pragma Profile (Ravenscar);
  @end example
  
! which is the preferred method of setting the @cite{Ravenscar} profile.
  
  @node Pragma Refined_Depends,Pragma Refined_Global,Pragma Ravenscar,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id29}@anchor{c7}@anchor{gnat_rm/implementation_defined_pragmas pragma-refined-depends}@anchor{c8}
  @section Pragma Refined_Depends
  
  
--- 6849,6858 ----
  pragma Profile (Ravenscar);
  @end example
  
! 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 pragma-refined-depends}@anchor{cc}@anchor{gnat_rm/implementation_defined_pragmas id31}@anchor{cd}
  @section Pragma Refined_Depends
  
  
*************** INPUT  ::= NAME
*** 6697,6707 ****
  where FUNCTION_RESULT is a function Result attribute_reference
  @end example
  
! For the semantics of this pragma, see the entry for aspect @cite{Refined_Depends} in
  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 pragma-refined-global}@anchor{c9}@anchor{gnat_rm/implementation_defined_pragmas id30}@anchor{ca}
  @section Pragma Refined_Global
  
  
--- 6881,6891 ----
  where FUNCTION_RESULT is a function Result attribute_reference
  @end example
  
! For the semantics of this pragma, see the entry for aspect @code{Refined_Depends} in
  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 pragma-refined-global}@anchor{ce}@anchor{gnat_rm/implementation_defined_pragmas id32}@anchor{cf}
  @section Pragma Refined_Global
  
  
*************** GLOBAL_LIST   ::= GLOBAL_ITEM | (GLOBAL_
*** 6722,6732 ****
  GLOBAL_ITEM   ::= NAME
  @end example
  
! For the semantics of this pragma, see the entry for aspect @cite{Refined_Global} in
  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 pragma-refined-post}@anchor{cb}@anchor{gnat_rm/implementation_defined_pragmas id31}@anchor{cc}
  @section Pragma Refined_Post
  
  
--- 6906,6916 ----
  GLOBAL_ITEM   ::= NAME
  @end example
  
! For the semantics of this pragma, see the entry for aspect @code{Refined_Global} in
  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 pragma-refined-post}@anchor{d0}@anchor{gnat_rm/implementation_defined_pragmas id33}@anchor{d1}
  @section Pragma Refined_Post
  
  
*************** Syntax:
*** 6736,6746 ****
  pragma Refined_Post (boolean_EXPRESSION);
  @end example
  
! For the semantics of this pragma, see the entry for aspect @cite{Refined_Post} in
  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 pragma-refined-state}@anchor{cd}@anchor{gnat_rm/implementation_defined_pragmas id32}@anchor{ce}
  @section Pragma Refined_State
  
  
--- 6920,6930 ----
  pragma Refined_Post (boolean_EXPRESSION);
  @end example
  
! For the semantics of this pragma, see the entry for aspect @code{Refined_Post} in
  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 pragma-refined-state}@anchor{d2}@anchor{gnat_rm/implementation_defined_pragmas id34}@anchor{d3}
  @section Pragma Refined_State
  
  
*************** CONSTITUENT_LIST ::=
*** 6762,6772 ****
  CONSTITUENT ::= object_NAME | state_NAME
  @end example
  
! For the semantics of this pragma, see the entry for aspect @cite{Refined_State} in
  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{cf}
  @section Pragma Relative_Deadline
  
  
--- 6946,6956 ----
  CONSTITUENT ::= object_NAME | state_NAME
  @end example
  
! For the semantics of this pragma, see the entry for aspect @code{Refined_State} in
  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
*** 6781,6787 ****
  See Ada 2012 Reference Manual for details.
  
  @node Pragma Remote_Access_Type,Pragma Restricted_Run_Time,Pragma Relative_Deadline,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id33}@anchor{d0}@anchor{gnat_rm/implementation_defined_pragmas pragma-remote-access-type}@anchor{d1}
  @section Pragma Remote_Access_Type
  
  
--- 6965,6971 ----
  See Ada 2012 Reference Manual for details.
  
  @node Pragma Remote_Access_Type,Pragma Restricted_Run_Time,Pragma Relative_Deadline,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id35}@anchor{d5}@anchor{gnat_rm/implementation_defined_pragmas pragma-remote-access-type}@anchor{d6}
  @section Pragma Remote_Access_Type
  
  
*************** It specifies an exception to the RM rule
*** 6796,6802 ****
  the use of a remote access to class-wide type as actual for a formal
  access type.
  
! When this pragma applies to a formal access type @cite{Entity}, that
  type is treated as a remote access to class-wide type in the generic.
  It must be a formal general access type, and its designated type must
  be the class-wide type of a formal tagged limited private type from the
--- 6980,6986 ----
  the use of a remote access to class-wide type as actual for a formal
  access type.
  
! When this pragma applies to a formal access type @code{Entity}, that
  type is treated as a remote access to class-wide type in the generic.
  It must be a formal general access type, and its designated type must
  be the class-wide type of a formal tagged limited private type from the
*************** pertaining to remote access to class-wid
*** 6807,6813 ****
  actual type must be a remote access to class-wide type.
  
  @node Pragma Restricted_Run_Time,Pragma Restriction_Warnings,Pragma Remote_Access_Type,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-restricted-run-time}@anchor{d2}
  @section Pragma Restricted_Run_Time
  
  
--- 6991,6997 ----
  actual type must be a remote access to class-wide type.
  
  @node Pragma Restricted_Run_Time,Pragma Restriction_Warnings,Pragma Remote_Access_Type,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-restricted-run-time}@anchor{d7}
  @section Pragma Restricted_Run_Time
  
  
*************** which is the preferred method of setting
*** 6828,6834 ****
  profile.
  
  @node Pragma Restriction_Warnings,Pragma Reviewable,Pragma Restricted_Run_Time,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-restriction-warnings}@anchor{d3}
  @section Pragma Restriction_Warnings
  
  
--- 7012,7018 ----
  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
  
  
*************** pragma Restriction_Warnings
*** 6841,6847 ****
  
  This pragma allows a series of restriction identifiers to be
  specified (the list of allowed identifiers is the same as for
! pragma @cite{Restrictions}). For each of these identifiers
  the compiler checks for violations of the restriction, but
  generates a warning message rather than an error message
  if the restriction is violated.
--- 7025,7031 ----
  
  This pragma allows a series of restriction identifiers to be
  specified (the list of allowed identifiers is the same as for
! pragma @code{Restrictions}). For each of these identifiers
  the compiler checks for violations of the restriction, but
  generates a warning message rather than an error message
  if the restriction is violated.
*************** generating a warning, but any other use
*** 6866,6872 ****
  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{d4}
  @section Pragma Reviewable
  
  
--- 7050,7056 ----
  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
  
  
*************** comprehensive messages identifying possi
*** 6970,6976 ****
  information.
  
  @node Pragma Secondary_Stack_Size,Pragma Share_Generic,Pragma Reviewable,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id34}@anchor{d5}@anchor{gnat_rm/implementation_defined_pragmas pragma-secondary-stack-size}@anchor{d6}
  @section Pragma Secondary_Stack_Size
  
  
--- 7154,7160 ----
  information.
  
  @node Pragma Secondary_Stack_Size,Pragma Share_Generic,Pragma Reviewable,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id36}@anchor{da}@anchor{gnat_rm/implementation_defined_pragmas pragma-secondary-stack-size}@anchor{db}
  @section Pragma Secondary_Stack_Size
  
  
*************** pragma Secondary_Stack_Size (integer_EXP
*** 6981,6987 ****
  @end example
  
  This pragma appears within the task definition of a single task declaration
! or a task type declaration (like pragma @cite{Storage_Size}) and applies to all
  task objects of that type. The argument specifies the size of the secondary
  stack to be used by these task objects, and must be of an integer type. The
  secondary stack is used to handle functions that return a variable-sized
--- 7165,7171 ----
  @end example
  
  This pragma appears within the task definition of a single task declaration
! or a task type declaration (like pragma @code{Storage_Size}) and applies to all
  task objects of that type. The argument specifies the size of the secondary
  stack to be used by these task objects, and must be of an integer type. The
  secondary stack is used to handle functions that return a variable-sized
*************** Note this pragma only applies to targets
*** 6991,7012 ****
  VxWorks 653 and bare board targets, where a fixed block for the
  secondary stack is allocated from the primary stack of the task. By default,
  these targets assign a percentage of the primary stack for the secondary stack,
! as defined by @cite{System.Parameter.Sec_Stack_Percentage}. With this pragma,
! an @cite{integer_EXPRESSION} of bytes is assigned from the primary stack instead.
  
  For most targets, the pragma does not apply as the secondary stack grows on
  demand: allocated as a chain of blocks in the heap. The default size of these
! blocks can be modified via the @cite{-D} binder option as described in
  @cite{GNAT User's Guide}.
  
  Note that no check is made to see if the secondary stack can fit inside the
  primary stack.
  
! Note the pragma cannot appear when the restriction @cite{No_Secondary_Stack}
  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{d7}
  @section Pragma Share_Generic
  
  
--- 7175,7196 ----
  VxWorks 653 and bare board targets, where a fixed block for the
  secondary stack is allocated from the primary stack of the task. By default,
  these targets assign a percentage of the primary stack for the secondary stack,
! as defined by @code{System.Parameter.Sec_Stack_Percentage}. With this pragma,
! an @code{integer_EXPRESSION} of bytes is assigned from the primary stack instead.
  
  For most targets, the pragma does not apply as the secondary stack grows on
  demand: allocated as a chain of blocks in the heap. The default size of these
! blocks can be modified via the @code{-D} binder option as described in
  @cite{GNAT User's Guide}.
  
  Note that no check is made to see if the secondary stack can fit inside the
  primary stack.
  
! Note the pragma cannot appear when the restriction @code{No_Secondary_Stack}
  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
  
  
*************** GNAME ::= generic_unit_NAME | generic_in
*** 7019,7030 ****
  @end example
  
  This pragma is provided for compatibility with Dec Ada 83. It has
! no effect in @cite{GNAT} (which does not implement shared generics), other
  than to check that the given names are all names of generic units or
  generic instances.
  
  @node Pragma Shared,Pragma Short_Circuit_And_Or,Pragma Share_Generic,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id35}@anchor{d8}@anchor{gnat_rm/implementation_defined_pragmas pragma-shared}@anchor{d9}
  @section Pragma Shared
  
  
--- 7203,7214 ----
  @end example
  
  This pragma is provided for compatibility with Dec Ada 83. It has
! no effect in GNAT (which does not implement shared generics), other
  than to check that the given names are all names of generic units or
  generic instances.
  
  @node Pragma Shared,Pragma Short_Circuit_And_Or,Pragma Share_Generic,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id37}@anchor{dd}@anchor{gnat_rm/implementation_defined_pragmas pragma-shared}@anchor{de}
  @section Pragma Shared
  
  
*************** This pragma is provided for compatibilit
*** 7032,7038 ****
  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{da}
  @section Pragma Short_Circuit_And_Or
  
  
--- 7216,7222 ----
  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
  
  
*************** within the file being compiled, it appli
*** 7051,7057 ****
  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{db}
  @section Pragma Short_Descriptors
  
  
--- 7235,7241 ----
  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
  
  
*************** This pragma is provided for compatibilit
*** 7065,7071 ****
  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 pragma-simple-storage-pool-type}@anchor{dc}@anchor{gnat_rm/implementation_defined_pragmas id36}@anchor{dd}
  @section Pragma Simple_Storage_Pool_Type
  
  
--- 7249,7255 ----
  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 pragma-simple-storage-pool-type}@anchor{e1}@anchor{gnat_rm/implementation_defined_pragmas id38}@anchor{e2}
  @section Pragma Simple_Storage_Pool_Type
  
  
*************** pragma Simple_Storage_Pool_Type (type_LO
*** 7081,7094 ****
  @end example
  
  A type can be established as a 'simple storage pool type' by applying
! the representation pragma @cite{Simple_Storage_Pool_Type} to the type.
  A type named in the pragma must be a library-level immutably limited record
  type or limited tagged type declared immediately within a package declaration.
  The type can also be a limited private type whose full type is allowed as
  a simple storage pool type.
  
! For a simple storage pool type @cite{SSP}, nonabstract primitive subprograms
! @cite{Allocate}, @cite{Deallocate}, and @cite{Storage_Size} can be declared that
  are subtype conformant with the following subprogram declarations:
  
  @example
--- 7265,7278 ----
  @end example
  
  A type can be established as a 'simple storage pool type' by applying
! the representation pragma @code{Simple_Storage_Pool_Type} to the type.
  A type named in the pragma must be a library-level immutably limited record
  type or limited tagged type declared immediately within a package declaration.
  The type can also be a limited private type whose full type is allowed as
  a simple storage pool type.
  
! For a simple storage pool type @code{SSP}, nonabstract primitive subprograms
! @code{Allocate}, @code{Deallocate}, and @code{Storage_Size} can be declared that
  are subtype conformant with the following subprogram declarations:
  
  @example
*************** function Storage_Size (Pool : SSP)
*** 7108,7125 ****
    return System.Storage_Elements.Storage_Count;
  @end example
  
! Procedure @cite{Allocate} must be declared, whereas @cite{Deallocate} and
! @cite{Storage_Size} are optional. If @cite{Deallocate} is not declared, then
  applying an unchecked deallocation has no effect other than to set its actual
! parameter to null. If @cite{Storage_Size} is not declared, then the
! @cite{Storage_Size} attribute applied to an access type associated with
  a pool object of type SSP returns zero. Additional operations can be declared
  for a simple storage pool type (such as for supporting a mark/release
  storage-management discipline).
  
  An object of a simple storage pool type can be associated with an access
  type by specifying the attribute
! @ref{de,,Simple_Storage_Pool}. For example:
  
  @example
  My_Pool : My_Simple_Storage_Pool_Type;
--- 7292,7309 ----
    return System.Storage_Elements.Storage_Count;
  @end example
  
! Procedure @code{Allocate} must be declared, whereas @code{Deallocate} and
! @code{Storage_Size} are optional. If @code{Deallocate} is not declared, then
  applying an unchecked deallocation has no effect other than to set its actual
! parameter to null. If @code{Storage_Size} is not declared, then the
! @code{Storage_Size} attribute applied to an access type associated with
  a pool object of type SSP returns zero. Additional operations can be declared
  for a simple storage pool type (such as for supporting a mark/release
  storage-management discipline).
  
  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;
*************** type Acc is access My_Data_Type;
*** 7129,7139 ****
  for Acc'Simple_Storage_Pool use My_Pool;
  @end example
  
! See attribute @ref{de,,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 id37}@anchor{df}@anchor{gnat_rm/implementation_defined_pragmas pragma-source-file-name}@anchor{e0}
  @section Pragma Source_File_Name
  
  
--- 7313,7323 ----
  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 pragma-source-file-name}@anchor{e4}@anchor{gnat_rm/implementation_defined_pragmas id39}@anchor{e5}
  @section Pragma Source_File_Name
  
  
*************** Use this to override the normal naming c
*** 7155,7166 ****
  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.
! @cite{unit_name} is mapped to @cite{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.
  
  The optional Index argument should be used when a file contains multiple
! units, and when you do not want to use @cite{gnatchop} to separate then
  into multiple files (which is the recommended procedure to limit the
  number of recompilations that are needed when some sources change).
  For instance, if the source file @code{source.ada} contains
--- 7339,7350 ----
  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.
  
  The optional Index argument should be used when a file contains multiple
! units, and when you do not want to use @code{gnatchop} to separate then
  into multiple files (which is the recommended procedure to limit the
  number of recompilations that are needed when some sources change).
  For instance, if the source file @code{source.ada} contains
*************** pragma Source_File_Name
*** 7186,7195 ****
    (A, Body_File_Name => "source.ada", Index => 2);
  @end example
  
! Note that the @cite{gnatname} utility can also be used to generate those
  configuration pragmas.
  
! Another form of the @cite{Source_File_Name} pragma allows
  the specification of patterns defining alternative file naming schemes
  to apply to all files.
  
--- 7370,7379 ----
    (A, Body_File_Name => "source.ada", Index => 2);
  @end example
  
! Note that the @code{gnatname} utility can also be used to generate those
  configuration pragmas.
  
! Another form of the @code{Source_File_Name} pragma allows
  the specification of patterns defining alternative file naming schemes
  to apply to all files.
  
*************** aware of these pragmas, and so other too
*** 7225,7243 ****
  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{e1,,Pragma Source_File_Name_Project}.
  
! For more details on the use of the @cite{Source_File_Name} pragma, see the
! sections on @cite{Using Other File Names} and @cite{Alternative File Naming Schemes' in the :title:`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 pragma-source-file-name-project}@anchor{e1}@anchor{gnat_rm/implementation_defined_pragmas id38}@anchor{e2}
  @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{e0,,Pragma Source_File_Name}, and
  most importantly, once pragma Source_File_Name_Project appears,
  no further Source_File_Name pragmas are allowed.
  
--- 7409,7427 ----
  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 @code{Using Other File Names} and @cite{Alternative File Naming Schemes' in the :title:`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 pragma-source-file-name-project}@anchor{e6}@anchor{gnat_rm/implementation_defined_pragmas id40}@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{e4,,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
*** 7249,7255 ****
  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{e3}
  @section Pragma Source_Reference
  
  
--- 7433,7439 ----
  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
  
  
*************** pragma Source_Reference (INTEGER_LITERAL
*** 7260,7270 ****
  @end example
  
  This pragma must appear as the first line of a source file.
! @cite{integer_literal} is the logical line number of the line following
  the pragma line (for use in error messages and debugging
! information).  @cite{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 @cite{gnatchop}
  with the @emph{-r} switch, to make sure that the original unchopped
  source file is the one referred to.
  
--- 7444,7454 ----
  @end example
  
  This pragma must appear as the first line of a source file.
! @code{integer_literal} is the logical line number of the line following
  the pragma line (for use in error messages and debugging
! 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.
  
*************** string expression other than a string li
*** 7273,7279 ****
  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 pragma-spark-mode}@anchor{e4}@anchor{gnat_rm/implementation_defined_pragmas id39}@anchor{e5}
  @section Pragma SPARK_Mode
  
  
--- 7457,7463 ----
  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 pragma-spark-mode}@anchor{e9}@anchor{gnat_rm/implementation_defined_pragmas id41}@anchor{ea}
  @section Pragma SPARK_Mode
  
  
*************** Immediately following a library-level su
*** 7305,7315 ****
  Immediately within a library-level package body
  
  @item 
! Immediately following the @cite{private} keyword of a library-level
  package spec
  
  @item 
! Immediately following the @cite{begin} keyword of a library-level
  package body
  
  @item 
--- 7489,7499 ----
  Immediately within a library-level package body
  
  @item 
! Immediately following the @code{private} keyword of a library-level
  package spec
  
  @item 
! Immediately following the @code{begin} keyword of a library-level
  package body
  
  @item 
*************** that is active at the point it is declar
*** 7321,7331 ****
  by pragma within the spec or body as above.
  
  The basic consistency rule is that you can't turn SPARK_Mode back
! @cite{On}, once you have explicitly (with a pragma) turned if
! @cite{Off}. So the following rules apply:
  
! If a subprogram spec has SPARK_Mode @cite{Off}, then the body must
! also have SPARK_Mode @cite{Off}.
  
  For a package, we have four parts:
  
--- 7505,7515 ----
  by pragma within the spec or body as above.
  
  The basic consistency rule is that you can't turn SPARK_Mode back
! @code{On}, once you have explicitly (with a pragma) turned if
! @code{Off}. So the following rules apply:
  
! If a subprogram spec has SPARK_Mode @code{Off}, then the body must
! also have SPARK_Mode @code{Off}.
  
  For a package, we have four parts:
  
*************** the package private part
*** 7342,7361 ****
  the body of the package
  
  @item 
! the elaboration code after @cite{begin}
  @end itemize
  
  For a package, the rule is that if you explicitly turn SPARK_Mode
! @cite{Off} for any part, then all the following parts must have
! SPARK_Mode @cite{Off}. Note that this may require repeating a pragma
! SPARK_Mode (@cite{Off}) in the body. For example, if we have a
! configuration pragma SPARK_Mode (@cite{On}) that turns the mode on by
  default everywhere, and one particular package spec has pragma
! SPARK_Mode (@cite{Off}), then that pragma will need to be repeated in
  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{e6}
  @section Pragma Static_Elaboration_Desired
  
  
--- 7526,7545 ----
  the body of the package
  
  @item 
! the elaboration code after @code{begin}
  @end itemize
  
  For a package, the rule is that if you explicitly turn SPARK_Mode
! @code{Off} for any part, then all the following parts must have
! SPARK_Mode @code{Off}. Note that this may require repeating a pragma
! SPARK_Mode (@code{Off}) in the body. For example, if we have a
! configuration pragma SPARK_Mode (@code{On}) that turns the mode on by
  default everywhere, and one particular package spec has pragma
! SPARK_Mode (@code{Off}), then that pragma will need to be repeated in
  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
  
  
*************** construction of larger aggregates with s
*** 7379,7385 ****
  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{e7}
  @section Pragma Stream_Convert
  
  
--- 7563,7569 ----
  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
  
  
*************** of this type.  It must name a function w
*** 7406,7418 ****
  subtype, and whose returned type must be the type given as the first
  argument to the pragma.
  
! The meaning of the @cite{Read} parameter is that if a stream attribute directly
  or indirectly specifies reading of the type given as the first parameter,
  then a value of the type given as the argument to the Read function is
  read from the stream, and then the Read function is used to convert this
  to the required target type.
  
! Similarly the @cite{Write} parameter specifies how to treat write attributes
  that directly or indirectly apply to the type given as the first parameter.
  It must have an input parameter of the type specified by the first parameter,
  and the return type must be the same as the input type of the Read function.
--- 7590,7602 ----
  subtype, and whose returned type must be the type given as the first
  argument to the pragma.
  
! The meaning of the @code{Read} parameter is that if a stream attribute directly
  or indirectly specifies reading of the type given as the first parameter,
  then a value of the type given as the argument to the Read function is
  read from the stream, and then the Read function is used to convert this
  to the required target type.
  
! Similarly the @code{Write} parameter specifies how to treat write attributes
  that directly or indirectly apply to the type given as the first parameter.
  It must have an input parameter of the type specified by the first parameter,
  and the return type must be the same as the input type of the Read function.
*************** function To_String (Source : Unbounded_S
*** 7445,7462 ****
  
  The effect is that if the value of an unbounded string is written to a stream,
  then the representation of the item in the stream is in the same format that
! would be used for @cite{Standard.String'Output}, and this same representation
  is expected when a value of this type is read from the stream. Note that the
  value written always includes the bounds, even for Unbounded_String'Write,
  since Unbounded_String is not an array type.
  
! Note that the @cite{Stream_Convert} pragma is not effective in the case of
  a derived type of a non-limited tagged type. If such a type is specified then
  the pragma is silently ignored, and the default implementation of the stream
  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{e8}
  @section Pragma Style_Checks
  
  
--- 7629,7646 ----
  
  The effect is that if the value of an unbounded string is written to a stream,
  then the representation of the item in the stream is in the same format that
! would be used for @code{Standard.String'Output}, and this same representation
  is expected when a value of this type is read from the stream. Note that the
  value written always includes the bounds, even for Unbounded_String'Write,
  since Unbounded_String is not an array type.
  
! Note that the @code{Stream_Convert} pragma is not effective in the case of
  a derived type of a non-limited tagged type. If such a type is specified then
  the pragma is silently ignored, and the default implementation of the stream
  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
  
  
*************** gcc -c -gnatyl ...
*** 7496,7510 ****
  @end example
  @end itemize
  
! The form ALL_CHECKS activates all standard checks (its use is equivalent
! to the use of the @cite{gnaty} switch with no options.
  See the @cite{GNAT User's Guide} for details.)
  
! Note: the behavior is slightly different in GNAT mode (@emph{-gnatg} used).
! In this case, ALL_CHECKS implies the standard set of GNAT mode style check
! options (i.e. equivalent to @emph{-gnatyg}).
  
! The forms with @cite{Off} and @cite{On}
  can be used to temporarily disable style checks
  as shown in the following example:
  
--- 7680,7694 ----
  @end example
  @end itemize
  
! The form @code{ALL_CHECKS} activates all standard checks (its use is equivalent
! to the use of the @code{gnaty} switch with no options.
  See the @cite{GNAT User's Guide} for details.)
  
! Note: the behavior is slightly different in GNAT mode (@code{-gnatg} used).
! In this case, @code{ALL_CHECKS} implies the standard set of GNAT mode style check
! options (i.e. equivalent to @code{-gnatyg}).
  
! The forms with @code{Off} and @code{On}
  can be used to temporarily disable style checks
  as shown in the following example:
  
*************** NULL;                      -- this will
*** 7517,7523 ****
  @end example
  
  Finally the two argument form is allowed only if the first argument is
! @cite{On} or @cite{Off}.  The effect is to turn of semantic style checks
  for the specified entity, as shown in the following example:
  
  @example
--- 7701,7707 ----
  @end example
  
  Finally the two argument form is allowed only if the first argument is
! @code{On} or @code{Off}.  The effect is to turn of semantic style checks
  for the specified entity, as shown in the following example:
  
  @example
*************** Rf2 : Integer := ARG;      -- OK, no err
*** 7529,7535 ****
  @end example
  
  @node Pragma Subtitle,Pragma Suppress,Pragma Style_Checks,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-subtitle}@anchor{e9}
  @section Pragma Subtitle
  
  
--- 7713,7719 ----
  @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
  
  
*************** This pragma is recognized for compatibil
*** 7543,7549 ****
  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{ea}
  @section Pragma Suppress
  
  
--- 7727,7733 ----
  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
  
  
*************** names that are implementation defined (a
*** 7561,7606 ****
  @itemize *
  
  @item 
! @cite{Alignment_Check} can be used to suppress alignment checks
  on addresses used in address clauses. Such checks can also be suppressed
! by suppressing range checks, but the specific use of @cite{Alignment_Check}
  allows suppression of alignment checks without suppressing other range checks.
! Note that @cite{Alignment_Check} is suppressed by default on machines (such as
  the x86) with non-strict alignment.
  
  @item 
! @cite{Atomic_Synchronization} can be used to suppress the special memory
  synchronization instructions that are normally generated for access to
! @cite{Atomic} variables to ensure correct synchronization between tasks
  that use such variables for synchronization purposes.
  
  @item 
! @cite{Duplicated_Tag_Check} Can be used to suppress the check that is generated
  for a duplicated tag value when a tagged type is declared.
  
  @item 
! @cite{Container_Checks} Can be used to suppress all checks within Ada.Containers
  and instances of its children, including Tampering_Check.
  
  @item 
! @cite{Tampering_Check} Can be used to suppress tampering check in the containers.
  
  @item 
! @cite{Predicate_Check} can be used to control whether predicate checks are
  active. It is applicable only to predicates for which the policy is
! @cite{Check}. Unlike @cite{Assertion_Policy}, which determines if a given
  predicate is ignored or checked for the whole program, the use of
! @cite{Suppress} and @cite{Unsuppress} with this check name allows a given
  predicate to be turned on and off at specific points in the program.
  
  @item 
! @cite{Validity_Check} can be used specifically to control validity checks.
! If @cite{Suppress} is used to suppress validity checks, then no validity
  checks are performed, including those specified by the appropriate compiler
! switch or the @cite{Validity_Checks} pragma.
  
  @item 
! Additional check names previously introduced by use of the @cite{Check_Name}
  pragma are also allowed.
  @end itemize
  
--- 7745,7790 ----
  @itemize *
  
  @item 
! @code{Alignment_Check} can be used to suppress alignment checks
  on addresses used in address clauses. Such checks can also be suppressed
! by suppressing range checks, but the specific use of @code{Alignment_Check}
  allows suppression of alignment checks without suppressing other range checks.
! Note that @code{Alignment_Check} is suppressed by default on machines (such as
  the x86) with non-strict alignment.
  
  @item 
! @code{Atomic_Synchronization} can be used to suppress the special memory
  synchronization instructions that are normally generated for access to
! @code{Atomic} variables to ensure correct synchronization between tasks
  that use such variables for synchronization purposes.
  
  @item 
! @code{Duplicated_Tag_Check} Can be used to suppress the check that is generated
  for a duplicated tag value when a tagged type is declared.
  
  @item 
! @code{Container_Checks} Can be used to suppress all checks within Ada.Containers
  and instances of its children, including Tampering_Check.
  
  @item 
! @code{Tampering_Check} Can be used to suppress tampering check in the containers.
  
  @item 
! @code{Predicate_Check} can be used to control whether predicate checks are
  active. It is applicable only to predicates for which the policy is
! @code{Check}. Unlike @code{Assertion_Policy}, which determines if a given
  predicate is ignored or checked for the whole program, the use of
! @code{Suppress} and @code{Unsuppress} with this check name allows a given
  predicate to be turned on and off at specific points in the program.
  
  @item 
! @code{Validity_Check} can be used specifically to control validity checks.
! If @code{Suppress} is used to suppress validity checks, then no validity
  checks are performed, including those specified by the appropriate compiler
! switch or the @code{Validity_Checks} pragma.
  
  @item 
! Additional check names previously introduced by use of the @code{Check_Name}
  pragma are also allowed.
  @end itemize
  
*************** Of course, run-time checks are omitted w
*** 7616,7622 ****
  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{eb}
  @section Pragma Suppress_All
  
  
--- 7800,7806 ----
  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
  
  
*************** pragma Suppress_All;
*** 7627,7641 ****
  @end example
  
  This pragma can appear anywhere within a unit.
! The effect is to apply @cite{Suppress (All_Checks)} to the unit
  in which it appears.  This pragma is implemented for compatibility with DEC
  Ada 83 usage where it appears at the end of a unit, and for compatibility
  with Rational Ada, where it appears as a program unit pragma.
! The use of the standard Ada pragma @cite{Suppress (All_Checks)}
  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 pragma-suppress-debug-info}@anchor{ec}@anchor{gnat_rm/implementation_defined_pragmas id40}@anchor{ed}
  @section Pragma Suppress_Debug_Info
  
  
--- 7811,7825 ----
  @end example
  
  This pragma can appear anywhere within a unit.
! The effect is to apply @code{Suppress (All_Checks)} to the unit
  in which it appears.  This pragma is implemented for compatibility with DEC
  Ada 83 usage where it appears at the end of a unit, and for compatibility
  with Rational Ada, where it appears as a program unit pragma.
! The use of the standard Ada pragma @code{Suppress (All_Checks)}
  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 pragma-suppress-debug-info}@anchor{f1}@anchor{gnat_rm/implementation_defined_pragmas id42}@anchor{f2}
  @section Pragma Suppress_Debug_Info
  
  
*************** for the specified entity. It is intended
*** 7650,7656 ****
  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{ee}
  @section Pragma Suppress_Exception_Locations
  
  
--- 7834,7840 ----
  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
  
  
*************** In normal mode, a raise statement for an
*** 7664,7670 ****
  an exception message giving the file name and line number for the location
  of the raise. This is useful for debugging and logging purposes, but this
  entails extra space for the strings for the messages. The configuration
! pragma @cite{Suppress_Exception_Locations} can be used to suppress the
  generation of these strings, with the result that space is saved, but the
  exception message for such raises is null. This configuration pragma may
  appear in a global configuration pragma file, or in a specific unit as
--- 7848,7854 ----
  an exception message giving the file name and line number for the location
  of the raise. This is useful for debugging and logging purposes, but this
  entails extra space for the strings for the messages. The configuration
! pragma @code{Suppress_Exception_Locations} can be used to suppress the
  generation of these strings, with the result that space is saved, but the
  exception message for such raises is null. This configuration pragma may
  appear in a global configuration pragma file, or in a specific unit as
*************** a partition, so it is fine to have some
*** 7673,7679 ****
  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 id41}@anchor{ef}@anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-initialization}@anchor{f0}
  @section Pragma Suppress_Initialization
  
  
--- 7857,7863 ----
  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 id43}@anchor{f4}@anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-initialization}@anchor{f5}
  @section Pragma Suppress_Initialization
  
  
*************** is suppressed, just as though its subtyp
*** 7718,7724 ****
  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{f1}
  @section Pragma Task_Name
  
  
--- 7902,7908 ----
  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
  
  
*************** pragma Task_Name (string_EXPRESSION);
*** 7729,7735 ****
  @end example
  
  This pragma appears within a task definition (like pragma
! @cite{Priority}) and applies to the task in which it appears.  The
  argument must be of type String, and provides a name to be used for
  the task instance when the task is created.  Note that this expression
  is not required to be static, and in particular, it can contain
--- 7913,7919 ----
  @end example
  
  This pragma appears within a task definition (like pragma
! @code{Priority}) and applies to the task in which it appears.  The
  argument must be of type String, and provides a name to be used for
  the task instance when the task is created.  Note that this expression
  is not required to be static, and in particular, it can contain
*************** as illustrated in the example below.
*** 7739,7745 ****
  
  The task name is recorded internally in the run-time structures
  and is accessible to tools like the debugger.  In addition the
! routine @cite{Ada.Task_Identification.Image} will return this
  string, with a unique task address appended.
  
  @example
--- 7923,7929 ----
  
  The task name is recorded internally in the run-time structures
  and is accessible to tools like the debugger.  In addition the
! routine @code{Ada.Task_Identification.Image} will return this
  string, with a unique task address appended.
  
  @example
*************** end;
*** 7774,7780 ****
  @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{f2}
  @section Pragma Task_Storage
  
  
--- 7958,7964 ----
  @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
  
  
*************** This pragma specifies the length of the
*** 7790,7800 ****
  area is an additional storage area allocated to a task.  A value of zero
  means that either no guard area is created or a minimal guard area is
  created, depending on the target.  This pragma can appear anywhere a
! @cite{Storage_Size} attribute definition clause is allowed for a task
  type.
  
  @node Pragma Test_Case,Pragma Thread_Local_Storage,Pragma Task_Storage,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-test-case}@anchor{f3}@anchor{gnat_rm/implementation_defined_pragmas id42}@anchor{f4}
  @section Pragma Test_Case
  
  
--- 7974,7984 ----
  area is an additional storage area allocated to a task.  A value of zero
  means that either no guard area is created or a minimal guard area is
  created, depending on the target.  This pragma can appear anywhere a
! @code{Storage_Size} attribute definition clause is allowed for a task
  type.
  
  @node Pragma Test_Case,Pragma Thread_Local_Storage,Pragma Task_Storage,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-test-case}@anchor{f8}@anchor{gnat_rm/implementation_defined_pragmas id44}@anchor{f9}
  @section Pragma Test_Case
  
  
*************** pragma Test_Case (
*** 7810,7832 ****
   [, Ensures  =>  Boolean_Expression]);
  @end example
  
! The @cite{Test_Case} pragma allows defining fine-grain specifications
  for use by testing tools.
! The compiler checks the validity of the @cite{Test_Case} pragma, but its
  presence does not lead to any modification of the code generated by the
  compiler.
  
! @cite{Test_Case} pragmas may only appear immediately following the
  (separate) declaration of a subprogram in a package declaration, inside
  a package spec unit. Only other pragmas may intervene (that is appear
  between the subprogram declaration and a test case).
  
! The compiler checks that boolean expressions given in @cite{Requires} and
! @cite{Ensures} are valid, where the rules for @cite{Requires} are the
! same as the rule for an expression in @cite{Precondition} and the rules
! for @cite{Ensures} are the same as the rule for an expression in
! @cite{Postcondition}. In particular, attributes @cite{'Old} and
! @cite{'Result} can only be used within the @cite{Ensures}
  expression. The following is an example of use within a package spec:
  
  @example
--- 7994,8016 ----
   [, Ensures  =>  Boolean_Expression]);
  @end example
  
! The @code{Test_Case} pragma allows defining fine-grain specifications
  for use by testing tools.
! The compiler checks the validity of the @code{Test_Case} pragma, but its
  presence does not lead to any modification of the code generated by the
  compiler.
  
! @code{Test_Case} pragmas may only appear immediately following the
  (separate) declaration of a subprogram in a package declaration, inside
  a package spec unit. Only other pragmas may intervene (that is appear
  between the subprogram declaration and a test case).
  
! The compiler checks that boolean expressions given in @code{Requires} and
! @code{Ensures} are valid, where the rules for @code{Requires} are the
! same as the rule for an expression in @code{Precondition} and the rules
! for @code{Ensures} are the same as the rule for an expression in
! @code{Postcondition}. In particular, attributes @code{'Old} and
! @code{'Result} can only be used within the @code{Ensures}
  expression. The following is an example of use within a package spec:
  
  @example
*************** end Math_Functions;
*** 7842,7856 ****
  @end example
  
  The meaning of a test case is that there is at least one context where
! @cite{Requires} holds such that, if the associated subprogram is executed in
! that context, then @cite{Ensures} holds when the subprogram returns.
! Mode @cite{Nominal} indicates that the input context should also satisfy the
  precondition of the subprogram, and the output context should also satisfy its
! postcondition. Mode @cite{Robustness} indicates that the precondition and
  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 pragma-thread-local-storage}@anchor{f5}@anchor{gnat_rm/implementation_defined_pragmas id43}@anchor{f6}
  @section Pragma Thread_Local_Storage
  
  
--- 8026,8040 ----
  @end example
  
  The meaning of a test case is that there is at least one context where
! @code{Requires} holds such that, if the associated subprogram is executed in
! that context, then @code{Ensures} holds when the subprogram returns.
! Mode @code{Nominal} indicates that the input context should also satisfy the
  precondition of the subprogram, and the output context should also satisfy its
! postcondition. Mode @code{Robustness} indicates that the precondition and
  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 pragma-thread-local-storage}@anchor{fa}@anchor{gnat_rm/implementation_defined_pragmas id45}@anchor{fb}
  @section Pragma Thread_Local_Storage
  
  
*************** pragma Thread_Local_Storage ([Entity =>]
*** 7867,7890 ****
  @end example
  
  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" (@cite{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 may not have default initialization, and if there is
! an explicit initialization, it must be either @cite{null} for an
  access variable, or a static expression for a scalar variable.
  This provides a low level mechanism similar to that provided by
! the @cite{Ada.Task_Attributes} package, but much more efficient
  and is also useful in writing interface code that will interact
  with foreign threads.
  
! If this pragma is used on a system where @cite{TLS} is not supported,
  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{f7}
  @section Pragma Time_Slice
  
  
--- 8051,8074 ----
  @end example
  
  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 may not have default initialization, and if there is
! an explicit initialization, it must be either @code{null} for an
  access variable, or a static expression for a scalar variable.
  This provides a low level mechanism similar to that provided by
! the @code{Ada.Task_Attributes} package, but much more efficient
  and is also useful in writing interface code that will interact
  with foreign threads.
  
! If this pragma is used on a system where @code{TLS} is not supported,
  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
  
  
*************** It is ignored if it is used in a system
*** 7900,7906 ****
  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{f8}
  @section Pragma Title
  
  
--- 8084,8090 ----
  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
  
  
*************** notation is used, and named and position
*** 7925,7931 ****
  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{f9}
  @section Pragma Type_Invariant
  
  
--- 8109,8115 ----
  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
  
  
*************** pragma Type_Invariant
*** 7937,7952 ****
     [Check  =>] EXPRESSION);
  @end example
  
! The @cite{Type_Invariant} pragma is intended to be an exact
! replacement for the language-defined @cite{Type_Invariant}
  aspect, and shares its restrictions and semantics. It differs
! from the language defined @cite{Invariant} pragma in that it
  does not permit a string parameter, and it is
! controlled by the assertion identifier @cite{Type_Invariant}
! rather than @cite{Invariant}.
  
  @node Pragma Type_Invariant_Class,Pragma Unchecked_Union,Pragma Type_Invariant,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id44}@anchor{fa}@anchor{gnat_rm/implementation_defined_pragmas pragma-type-invariant-class}@anchor{fb}
  @section Pragma Type_Invariant_Class
  
  
--- 8121,8136 ----
     [Check  =>] EXPRESSION);
  @end example
  
! The @code{Type_Invariant} pragma is intended to be an exact
! replacement for the language-defined @code{Type_Invariant}
  aspect, and shares its restrictions and semantics. It differs
! from the language defined @code{Invariant} pragma in that it
  does not permit a string parameter, and it is
! controlled by the assertion identifier @code{Type_Invariant}
! rather than @code{Invariant}.
  
  @node Pragma Type_Invariant_Class,Pragma Unchecked_Union,Pragma Type_Invariant,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id46}@anchor{ff}@anchor{gnat_rm/implementation_defined_pragmas pragma-type-invariant-class}@anchor{100}
  @section Pragma Type_Invariant_Class
  
  
*************** pragma Type_Invariant_Class
*** 7958,7979 ****
     [Check  =>] EXPRESSION);
  @end example
  
! The @cite{Type_Invariant_Class} pragma is intended to be an exact
! replacement for the language-defined @cite{Type_Invariant'Class}
  aspect, and shares its restrictions and semantics.
  
! Note: This pragma is called @cite{Type_Invariant_Class} rather than
! @cite{Type_Invariant'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 @cite{Type_Invariant'Class},
! not @cite{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{fc}
  @section Pragma Unchecked_Union
  
  
--- 8142,8163 ----
     [Check  =>] EXPRESSION);
  @end example
  
! The @code{Type_Invariant_Class} pragma is intended to be an exact
! replacement for the language-defined @code{Type_Invariant'Class}
  aspect, and shares its restrictions and semantics.
  
! Note: This pragma is called @code{Type_Invariant_Class} rather than
! @code{Type_Invariant'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 @code{Type_Invariant'Class},
! 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
  
  
*************** version in all language modes (Ada 83, A
*** 7993,7999 ****
  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{fd}
  @section Pragma Unevaluated_Use_Of_Old
  
  
--- 8177,8183 ----
  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
  
  
*************** on entry even though the value would not
*** 8035,8045 ****
  Although the rule guarantees against this possibility, it is sometimes
  too restrictive. For example if we know that the string has a lower
  bound of 1, then we will never raise an exception.
! The pragma @cite{Unevaluated_Use_Of_Old} can be
! used to modify this behavior. If the argument is @cite{Error} then an
  error is given (this is the default RM behavior). If the argument is
! @cite{Warn} then the usage is allowed as legal but with a warning
! that an exception might be raised. If the argument is @cite{Allow}
  then the usage is allowed as legal without generating a warning.
  
  This pragma may appear as a configuration pragma, or in a declarative
--- 8219,8229 ----
  Although the rule guarantees against this possibility, it is sometimes
  too restrictive. For example if we know that the string has a lower
  bound of 1, then we will never raise an exception.
! The pragma @code{Unevaluated_Use_Of_Old} can be
! used to modify this behavior. If the argument is @code{Error} then an
  error is given (this is the default RM behavior). If the argument is
! @code{Warn} then the usage is allowed as legal but with a warning
! that an exception might be raised. If the argument is @code{Allow}
  then the usage is allowed as legal without generating a warning.
  
  This pragma may appear as a configuration pragma, or in a declarative
*************** uses up to the end of the corresponding
*** 8048,8054 ****
  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{fe}
  @section Pragma Unimplemented_Unit
  
  
--- 8232,8238 ----
  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
  
  
*************** pragma Unimplemented_Unit;
*** 8060,8066 ****
  
  If this pragma occurs in a unit that is processed by the compiler, GNAT
  aborts with the message @code{xxx not implemented}, where
! @cite{xxx} is the name of the current compilation unit.  This pragma is
  intended to allow the compiler to handle unimplemented library units in
  a clean manner.
  
--- 8244,8250 ----
  
  If this pragma occurs in a unit that is processed by the compiler, GNAT
  aborts with the message @code{xxx not implemented}, where
! @code{xxx} is the name of the current compilation unit.  This pragma is
  intended to allow the compiler to handle unimplemented library units in
  a clean manner.
  
*************** The abort only happens if code is being
*** 8068,8074 ****
  specs of unimplemented packages in syntax or semantic checking mode.
  
  @node Pragma Universal_Aliasing,Pragma Universal_Data,Pragma Unimplemented_Unit,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id45}@anchor{ff}@anchor{gnat_rm/implementation_defined_pragmas pragma-universal-aliasing}@anchor{100}
  @section Pragma Universal_Aliasing
  
  
--- 8252,8258 ----
  specs of unimplemented packages in syntax or semantic checking mode.
  
  @node Pragma Universal_Aliasing,Pragma Universal_Data,Pragma Unimplemented_Unit,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id47}@anchor{104}@anchor{gnat_rm/implementation_defined_pragmas pragma-universal-aliasing}@anchor{105}
  @section Pragma Universal_Aliasing
  
  
*************** Syntax:
*** 8078,8093 ****
  pragma Universal_Aliasing [([Entity =>] type_LOCAL_NAME)];
  @end example
  
! @cite{type_LOCAL_NAME} must refer to a type declaration in the current
  declarative part.  The effect is to inhibit strict type-based aliasing
  optimization for the given type.  In other words, the effect is as though
  access types designating this type were subject to pragma No_Strict_Aliasing.
  For a detailed description of the strict aliasing optimization, and the
  situations in which it must be suppressed, see the section on
! @cite{Optimization and Strict Aliasing} in the @cite{GNAT User's Guide}.
  
  @node Pragma Universal_Data,Pragma Unmodified,Pragma Universal_Aliasing,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-universal-data}@anchor{101}@anchor{gnat_rm/implementation_defined_pragmas id46}@anchor{102}
  @section Pragma Universal_Data
  
  
--- 8262,8277 ----
  pragma Universal_Aliasing [([Entity =>] type_LOCAL_NAME)];
  @end example
  
! @code{type_LOCAL_NAME} must refer to a type declaration in the current
  declarative part.  The effect is to inhibit strict type-based aliasing
  optimization for the given type.  In other words, the effect is as though
  access types designating this type were subject to pragma No_Strict_Aliasing.
  For a detailed description of the strict aliasing optimization, and the
  situations in which it must be suppressed, see the section on
! @code{Optimization and Strict Aliasing} in the @cite{GNAT User's Guide}.
  
  @node Pragma Universal_Data,Pragma Unmodified,Pragma Universal_Aliasing,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-universal-data}@anchor{106}@anchor{gnat_rm/implementation_defined_pragmas id48}@anchor{107}
  @section Pragma Universal_Data
  
  
*************** of this pragma is also available by appl
*** 8111,8117 ****
  compilations of units where universal addressing of the data is desired.
  
  @node Pragma Unmodified,Pragma Unreferenced,Pragma Universal_Data,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id47}@anchor{103}@anchor{gnat_rm/implementation_defined_pragmas pragma-unmodified}@anchor{104}
  @section Pragma Unmodified
  
  
--- 8295,8301 ----
  compilations of units where universal addressing of the data is desired.
  
  @node Pragma Unmodified,Pragma Unreferenced,Pragma Universal_Data,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-unmodified}@anchor{108}@anchor{gnat_rm/implementation_defined_pragmas id49}@anchor{109}
  @section Pragma Unmodified
  
  
*************** pragma Unmodified (LOCAL_NAME @{, LOCAL_
*** 8125,8131 ****
  @end example
  
  This pragma signals that the assignable entities (variables,
! @cite{out} parameters, @cite{in out} parameters) whose names are listed are
  deliberately not assigned in the current source unit. This
  suppresses warnings about the
  entities being referenced but not assigned, and in addition a warning will be
--- 8309,8315 ----
  @end example
  
  This pragma signals that the assignable entities (variables,
! @code{out} parameters, @code{in out} parameters) whose names are listed are
  deliberately not assigned in the current source unit. This
  suppresses warnings about the
  entities being referenced but not assigned, and in addition a warning will be
*************** be.
*** 8139,8151 ****
  
  For the variable case, warnings are never given for unreferenced variables
  whose name contains one of the substrings
! @cite{DISCARD@comma{} DUMMY@comma{} IGNORE@comma{} JUNK@comma{} 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 @cite{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 pragma-unreferenced}@anchor{105}@anchor{gnat_rm/implementation_defined_pragmas id48}@anchor{106}
  @section Pragma Unreferenced
  
  
--- 8323,8335 ----
  
  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 pragma-unreferenced}@anchor{10a}@anchor{gnat_rm/implementation_defined_pragmas id50}@anchor{10b}
  @section Pragma Unreferenced
  
  
*************** and that this is deliberate. It can also
*** 8174,8183 ****
  objects declared only for their initialization or finalization side
  effects.
  
! If @cite{LOCAL_NAME} identifies more than one matching homonym in the
  current scope, then the entity most recently declared is the one to which
  the pragma applies. Note that in the case of accept formals, the pragma
! Unreferenced may appear immediately after the keyword @cite{do} which
  allows the indication of whether or not accept formals are referenced
  or not to be given individually for each accept statement.
  
--- 8358,8367 ----
  objects declared only for their initialization or finalization side
  effects.
  
! If @code{LOCAL_NAME} identifies more than one matching homonym in the
  current scope, then the entity most recently declared is the one to which
  the pragma applies. Note that in the case of accept formals, the pragma
! Unreferenced may appear immediately after the keyword @code{do} which
  allows the indication of whether or not accept formals are referenced
  or not to be given individually for each accept statement.
  
*************** Note that if a warning is desired for al
*** 8189,8211 ****
  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{a4,,Pragma Obsolescent}.
  
! The second form of pragma @cite{Unreferenced} is used within a context
  clause. In this case the arguments must be unit names of units previously
! mentioned in @cite{with} clauses (similar to the usage of pragma
! @cite{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
  whose name contains one of the substrings
! @cite{DISCARD@comma{} DUMMY@comma{} IGNORE@comma{} JUNK@comma{} 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 @cite{pragma Unreferenced} for such
  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 pragma-unreferenced-objects}@anchor{107}@anchor{gnat_rm/implementation_defined_pragmas id49}@anchor{108}
  @section Pragma Unreferenced_Objects
  
  
--- 8373,8395 ----
  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{a9,,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
  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 Unreferenced} for such
  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 pragma-unreferenced-objects}@anchor{10c}@anchor{gnat_rm/implementation_defined_pragmas id51}@anchor{10d}
  @section Pragma Unreferenced_Objects
  
  
*************** compiler will automatically suppress unw
*** 8230,8236 ****
  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{109}
  @section Pragma Unreserve_All_Interrupts
  
  
--- 8414,8420 ----
  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{10e}
  @section Pragma Unreserve_All_Interrupts
  
  
*************** pragma Unreserve_All_Interrupts;
*** 8242,8272 ****
  
  Normally certain interrupts are reserved to the implementation.  Any attempt
  to attach an interrupt causes Program_Error to be raised, as described in
! RM C.3.2(22).  A typical example is the @cite{SIGINT} interrupt used in
  many systems for a @code{Ctrl-C} interrupt.  Normally this interrupt is
  reserved to the implementation, so that @code{Ctrl-C} can be used to
  interrupt execution.
  
! If the pragma @cite{Unreserve_All_Interrupts} appears anywhere in any unit in
  a program, then all such interrupts are unreserved.  This allows the
  program to handle these interrupts, but disables their standard
  functions.  For example, if this pragma is used, then pressing
  @code{Ctrl-C} will not automatically interrupt execution.  However,
! a program can then handle the @cite{SIGINT} interrupt as it chooses.
  
  For a full list of the interrupts handled in a specific implementation,
! see the source code for the spec of @cite{Ada.Interrupts.Names} in
  file @code{a-intnam.ads}.  This is a target dependent file that contains the
  list of interrupts recognized for a given target.  The documentation in
  this file also specifies what interrupts are affected by the use of
! the @cite{Unreserve_All_Interrupts} pragma.
  
  For a more general facility for controlling what interrupts can be
! handled, see pragma @cite{Interrupt_State}, which subsumes the functionality
! of the @cite{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{10a}
  @section Pragma Unsuppress
  
  
--- 8426,8456 ----
  
  Normally certain interrupts are reserved to the implementation.  Any attempt
  to attach an interrupt causes Program_Error to be raised, as described in
! RM C.3.2(22).  A typical example is the @code{SIGINT} interrupt used in
  many systems for a @code{Ctrl-C} interrupt.  Normally this interrupt is
  reserved to the implementation, so that @code{Ctrl-C} can be used to
  interrupt execution.
  
! If the pragma @code{Unreserve_All_Interrupts} appears anywhere in any unit in
  a program, then all such interrupts are unreserved.  This allows the
  program to handle these interrupts, but disables their standard
  functions.  For example, if this pragma is used, then pressing
  @code{Ctrl-C} will not automatically interrupt execution.  However,
! a program can then handle the @code{SIGINT} interrupt as it chooses.
  
  For a full list of the interrupts handled in a specific implementation,
! see the source code for the spec of @code{Ada.Interrupts.Names} in
  file @code{a-intnam.ads}.  This is a target dependent file that contains the
  list of interrupts recognized for a given target.  The documentation in
  this file also specifies what interrupts are affected by the use of
! the @code{Unreserve_All_Interrupts} pragma.
  
  For a more general facility for controlling what interrupts can be
! 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{10f}
  @section Pragma Unsuppress
  
  
*************** Syntax:
*** 8276,8286 ****
  pragma Unsuppress (IDENTIFIER [, [On =>] NAME]);
  @end example
  
! This pragma undoes the effect of a previous pragma @cite{Suppress}.  If
! there is no corresponding pragma @cite{Suppress} in effect, it has no
  effect.  The range of the effect is the same as for pragma
! @cite{Suppress}.  The meaning of the arguments is identical to that used
! in pragma @cite{Suppress}.
  
  One important application is to ensure that checks are on in cases where
  code depends on the checks for its correct functioning, so that the code
--- 8460,8470 ----
  pragma Unsuppress (IDENTIFIER [, [On =>] NAME]);
  @end example
  
! This pragma undoes the effect of a previous pragma @code{Suppress}.  If
! there is no corresponding pragma @code{Suppress} in effect, it has no
  effect.  The range of the effect is the same as for pragma
! @code{Suppress}.  The meaning of the arguments is identical to that used
! in pragma @code{Suppress}.
  
  One important application is to ensure that checks are on in cases where
  code depends on the checks for its correct functioning, so that the code
*************** of Ada as an implementation-defined prag
*** 8299,8308 ****
  
  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
! @cite{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{10b}
  @section Pragma Use_VADS_Size
  
  
--- 8483,8492 ----
  
  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{110}
  @section Pragma Use_VADS_Size
  
  
*************** as implemented in the VADS compiler.  Se
*** 8326,8332 ****
  attribute for further details.
  
  @node Pragma Unused,Pragma Validity_Checks,Pragma Use_VADS_Size,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-unused}@anchor{10c}@anchor{gnat_rm/implementation_defined_pragmas id50}@anchor{10d}
  @section Pragma Unused
  
  
--- 8510,8516 ----
  attribute for further details.
  
  @node Pragma Unused,Pragma Validity_Checks,Pragma Use_VADS_Size,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-unused}@anchor{111}@anchor{gnat_rm/implementation_defined_pragmas id52}@anchor{112}
  @section Pragma Unused
  
  
*************** pragma Unused (LOCAL_NAME @{, LOCAL_NAME
*** 8340,8346 ****
  @end example
  
  This pragma signals that the assignable entities (variables,
! @cite{out} parameters, and @cite{in out} parameters) whose names are listed
  deliberately do not get assigned or referenced in the current source unit
  after the occurrence of the pragma in the current source unit. This
  suppresses warnings about the entities that are unreferenced and/or not
--- 8524,8530 ----
  @end example
  
  This pragma signals that the assignable entities (variables,
! @code{out} parameters, and @code{in out} parameters) whose names are listed
  deliberately do not get assigned or referenced in the current source unit
  after the occurrence of the pragma in the current source unit. This
  suppresses warnings about the entities that are unreferenced and/or not
*************** that it might be.
*** 8354,8366 ****
  
  For the variable case, warnings are never given for unreferenced
  variables whose name contains one of the substrings
! @cite{DISCARD@comma{} DUMMY@comma{} IGNORE@comma{} JUNK@comma{} 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 @cite{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{10e}
  @section Pragma Validity_Checks
  
  
--- 8538,8550 ----
  
  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 Validity_Checks,Pragma Volatile,Pragma Unused,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-validity-checks}@anchor{113}
  @section Pragma Validity_Checks
  
  
*************** reference manual settings, and then a st
*** 8384,8391 ****
  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 @cite{in} and
! @cite{in out} subprogram parameters:
  
  
  @itemize *
--- 8568,8575 ----
  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:
  
  
  @itemize *
*************** $ gcc -c -gnatVim ...
*** 8402,8410 ****
  @end itemize
  
  The form ALL_CHECKS activates all standard checks (its use is equivalent
! to the use of the @cite{gnatva} switch.
  
! The forms with @cite{Off} and @cite{On}
  can be used to temporarily disable validity checks
  as shown in the following example:
  
--- 8586,8594 ----
  @end itemize
  
  The form ALL_CHECKS activates all standard checks (its use is equivalent
! to the use of the @code{gnatva} switch.
  
! The forms with @code{Off} and @code{On}
  can be used to temporarily disable validity checks
  as shown in the following example:
  
*************** A := C;                       -- C will
*** 8417,8423 ****
  @end example
  
  @node Pragma Volatile,Pragma Volatile_Full_Access,Pragma Validity_Checks,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-volatile}@anchor{10f}
  @section Pragma Volatile
  
  
--- 8601,8607 ----
  @end example
  
  @node Pragma Volatile,Pragma Volatile_Full_Access,Pragma Validity_Checks,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-volatile}@anchor{114}
  @section Pragma Volatile
  
  
*************** implementation of pragma Volatile is upw
*** 8435,8441 ****
  implementation in DEC Ada 83.
  
  @node Pragma Volatile_Full_Access,Pragma Volatile_Function,Pragma Volatile,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-volatile-full-access}@anchor{110}@anchor{gnat_rm/implementation_defined_pragmas id51}@anchor{111}
  @section Pragma Volatile_Full_Access
  
  
--- 8619,8625 ----
  implementation in DEC Ada 83.
  
  @node Pragma Volatile_Full_Access,Pragma Volatile_Function,Pragma Volatile,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-volatile-full-access}@anchor{115}@anchor{gnat_rm/implementation_defined_pragmas id53}@anchor{116}
  @section Pragma Volatile_Full_Access
  
  
*************** write all the bits of the object.
*** 8453,8473 ****
  
  The intention is that this be suitable for use with memory-mapped I/O devices
  on some machines. Note that there are two important respects in which this is
! different from @cite{pragma Atomic}. First a reference to a @cite{Volatile_Full_Access}
  object is not a sequential action in the RM 9.10 sense and, therefore, does
! not create a synchronization point. Second, in the case of @cite{pragma Atomic},
  there is no guarantee that all the bits will be accessed if the reference
  is not to the whole object; the compiler is allowed (and generally will)
  access only part of the object in this case.
  
! It is not permissible to specify @cite{Atomic} and @cite{Volatile_Full_Access} for
  the same object.
  
! It is not permissible to specify @cite{Volatile_Full_Access} for a composite
! (record or array) type or object that has at least one @cite{Aliased} component.
  
  @node Pragma Volatile_Function,Pragma Warning_As_Error,Pragma Volatile_Full_Access,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id52}@anchor{112}@anchor{gnat_rm/implementation_defined_pragmas pragma-volatile-function}@anchor{113}
  @section Pragma Volatile_Function
  
  
--- 8637,8657 ----
  
  The intention is that this be suitable for use with memory-mapped I/O devices
  on some machines. Note that there are two important respects in which this is
! different from @code{pragma Atomic}. First a reference to a @code{Volatile_Full_Access}
  object is not a sequential action in the RM 9.10 sense and, therefore, does
! not create a synchronization point. Second, in the case of @code{pragma Atomic},
  there is no guarantee that all the bits will be accessed if the reference
  is not to the whole object; the compiler is allowed (and generally will)
  access only part of the object in this case.
  
! It is not permissible to specify @code{Atomic} and @code{Volatile_Full_Access} for
  the same object.
  
! It is not permissible to specify @code{Volatile_Full_Access} for a composite
! (record or array) type or object that has at least one @code{Aliased} component.
  
  @node Pragma Volatile_Function,Pragma Warning_As_Error,Pragma Volatile_Full_Access,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id54}@anchor{117}@anchor{gnat_rm/implementation_defined_pragmas pragma-volatile-function}@anchor{118}
  @section Pragma Volatile_Function
  
  
*************** Syntax:
*** 8477,8487 ****
  pragma Volatile_Function [ (boolean_EXPRESSION) ];
  @end example
  
! For the semantics of this pragma, see the entry for aspect @cite{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{114}
  @section Pragma Warning_As_Error
  
  
--- 8661,8671 ----
  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{119}
  @section Pragma Warning_As_Error
  
  
*************** which treats all warnings as errors.
*** 8499,8506 ****
  
  The pattern may contain asterisks, which match zero or more characters in
  the message. For example, you can use
! @cite{pragma Warning_As_Error ("bits of*unused")} to treat the warning
! message @cite{warning: 960 bits of "a" unused} as an error. No other regular
  expression notations are permitted. All characters other than asterisk in
  these three specific cases are treated as literal characters in the match.
  The match is case insensitive, for example XYZ matches xyz.
--- 8683,8690 ----
  
  The pattern may contain asterisks, which match zero or more characters in
  the message. For example, you can use
! @code{pragma Warning_As_Error ("bits of*unused")} to treat the warning
! message @code{warning: 960 bits of "a" unused} as an error. No other regular
  expression notations are permitted. All characters other than asterisk in
  these three specific cases are treated as literal characters in the match.
  The match is case insensitive, for example XYZ matches xyz.
*************** as shown in the example below, to treat
*** 8516,8522 ****
  
  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{115,,Pragma Warnings}.
  By using a single full @emph{-Wxxx} switch in the pragma, such warnings
  can also be treated as errors.
  
--- 8700,8706 ----
  
  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 @emph{-Wxxx} switch in the pragma, such warnings
  can also be treated as errors.
  
*************** the tag is changed from "warning:" to "e
*** 8566,8572 ****
  "[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 pragma-warnings}@anchor{115}@anchor{gnat_rm/implementation_defined_pragmas id53}@anchor{116}
  @section Pragma Warnings
  
  
--- 8750,8756 ----
  "[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 id55}@anchor{11b}@anchor{gnat_rm/implementation_defined_pragmas pragma-warnings}@anchor{11a}
  @section Pragma Warnings
  
  
*************** REASON ::= Reason => STRING_LITERAL @{&
*** 8588,8628 ****
  Note: in Ada 83 mode, a string literal may be used in place of a static string
  expression (which does not exist in Ada 83).
  
! Note if the second argument of @cite{DETAILS} is a @cite{local_NAME} then the
  second form is always understood. If the intention is to use
! the fourth form, then you can write @cite{NAME & ""} to force the
! intepretation as a @cite{static_string_EXPRESSION}.
  
! Note: if the first argument is a valid @cite{TOOL_NAME}, it will be interpreted
! that way. The use of the @cite{TOOL_NAME} argument is relevant only to users
  of SPARK and GNATprove, see last part of this section for details.
  
  Normally warnings are enabled, with the output being controlled by
! the command line switch.  Warnings (@cite{Off}) turns off generation of
! warnings until a Warnings (@cite{On}) is encountered or the end of the
  current unit.  If generation of warnings is turned off using this
  pragma, then some or all of the warning messages are suppressed,
  regardless of the setting of the command line switches.
  
! The @cite{Reason} parameter may optionally appear as the last argument
  in any of the forms of this pragma. It is intended purely for the
! purposes of documenting the reason for the @cite{Warnings} pragma.
  The compiler will check that the argument is a static string but
  otherwise ignore this argument. Other tools may provide specialized
  processing for this string.
  
  The form with a single argument (or two arguments if Reason present),
! where the first argument is @cite{ON} or @cite{OFF}
  may be used as a configuration pragma.
  
! If the @cite{LOCAL_NAME} parameter is present, warnings are suppressed for
  the specified entity.  This suppression is effective from the point where
  it occurs till the end of the extended scope of the variable (similar to
! the scope of @cite{Suppress}). This form cannot be used as a configuration
  pragma.
  
! In the case where the first argument is other than @cite{ON} or
! @cite{OFF},
  the third form with a single static_string_EXPRESSION argument (and possible
  reason) provides more precise
  control over which warnings are active. The string is a list of letters
--- 8772,8812 ----
  Note: in Ada 83 mode, a string literal may be used in place of a static string
  expression (which does not exist in Ada 83).
  
! 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
  of SPARK and GNATprove, see last part of this section for details.
  
  Normally warnings are enabled, with the output being controlled by
! the command line switch.  Warnings (@code{Off}) turns off generation of
! warnings until a Warnings (@code{On}) is encountered or the end of the
  current unit.  If generation of warnings is turned off using this
  pragma, then some or all of the warning messages are suppressed,
  regardless of the setting of the command line switches.
  
! The @code{Reason} parameter may optionally appear as the last argument
  in any of the forms of this pragma. It is intended purely for the
! purposes of documenting the reason for the @code{Warnings} pragma.
  The compiler will check that the argument is a static string but
  otherwise ignore this argument. Other tools may provide specialized
  processing for this string.
  
  The form with a single argument (or two arguments if Reason present),
! where the first argument is @code{ON} or @code{OFF}
  may be used as a configuration pragma.
  
! If the @code{LOCAL_NAME} parameter is present, warnings are suppressed for
  the specified entity.  This suppression is effective from the point where
  it occurs till the end of the extended scope of the variable (similar to
! the scope of @code{Suppress}). This form cannot be used as a configuration
  pragma.
  
! In the case where the first argument is other than @code{ON} or
! @code{OFF},
  the third form with a single static_string_EXPRESSION argument (and possible
  reason) provides more precise
  control over which warnings are active. The string is a list of letters
*************** code for these letters is the same as th
*** 8631,8665 ****
  line switch controlling warnings. For a brief summary, use the gnatmake
  command with no arguments, which will generate usage information containing
  the list of warnings switches supported. For
! full details see the section on @cite{Warning Message Control} in the
  @cite{GNAT User's Guide}.
  This form can also be used as a configuration pragma.
  
! The warnings controlled by the @emph{-gnatw} switch are generated by the
  front end of the compiler. The GCC back end can provide additional warnings
! and they are controlled by the @emph{-W} switch. Such warnings can be
! identified by the appearance of a string of the form @cite{[-Wxxx]} in the
! message which designates the @emph{-Wxxx} 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 @emph{-Wxxx} 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
! or another pragma Warnings is encountered. The effect of the pragma is
  cumulative. Initially the set of warnings is the standard default set
  as possibly modified by compiler switches. Then each pragma Warning
  modifies this set of warnings as specified. This form of the pragma may
  also be used as a configuration pragma.
  
! The fourth form, with an @cite{On|Off} parameter and a string, is used to
  control individual messages, based on their text. The string argument
  is a pattern that is used to match against the text of individual
  warning messages (not including the initial "warning: " tag).
  
  The pattern may contain asterisks, which match zero or more characters in
  the message. For example, you can use
! @cite{pragma Warnings (Off@comma{} "bits of*unused")} to suppress the warning
! message @cite{warning: 960 bits of "a" unused}. No other regular
  expression notations are permitted. All characters other than asterisk in
  these three specific cases are treated as literal characters in the match.
  The match is case insensitive, for example XYZ matches xyz.
--- 8815,8849 ----
  line switch controlling warnings. For a brief summary, use the gnatmake
  command with no arguments, which will generate usage information containing
  the list of warnings switches supported. For
! full details see the section on @code{Warning Message Control} in the
  @cite{GNAT User's Guide}.
  This form can also be used as a configuration pragma.
  
! The warnings controlled by the @code{-gnatw} switch are generated by the
  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
! or another pragma @code{Warnings} is encountered. The effect of the pragma is
  cumulative. Initially the set of warnings is the standard default set
  as possibly modified by compiler switches. Then each pragma Warning
  modifies this set of warnings as specified. This form of the pragma may
  also be used as a configuration pragma.
  
! The fourth form, with an @code{On|Off} parameter and a string, is used to
  control individual messages, based on their text. The string argument
  is a pattern that is used to match against the text of individual
  warning messages (not including the initial "warning: " tag).
  
  The pattern may contain asterisks, which match zero or more characters in
  the message. For example, you can use
! @code{pragma Warnings (Off, "bits of*unused")} to suppress the warning
! message @code{warning: 960 bits of "a" unused}. No other regular
  expression notations are permitted. All characters other than asterisk in
  these three specific cases are treated as literal characters in the match.
  The match is case insensitive, for example XYZ matches xyz.
*************** the end of the message, since this is im
*** 8671,8677 ****
  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 @emph{-Wxxx} 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
--- 8855,8861 ----
  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
*************** pragmas, and (if @emph{-gnatw.w} is give
*** 8693,8705 ****
  warning must be suppressed.
  
  Note: to write a string that will match any warning, use the string
! @cite{"***"}. It will not work to use a single asterisk or two
  asterisks since this looks like an operator name. This form with three
! asterisks is similar in effect to specifying @cite{pragma Warnings (Off)} except (if @emph{-gnatw.w} is given) that a matching
! @cite{pragma Warnings (On@comma{} "***")} will be required. This can be
  helpful in avoiding forgetting to turn warnings back on.
  
! Note: the debug flag -gnatd.i (@cite{/NOWARNINGS_PRAGMAS} in VMS) can be
  used to cause the compiler to entirely ignore all WARNINGS pragmas. This can
  be useful in checking whether obsolete pragmas in existing programs are hiding
  real problems.
--- 8877,8889 ----
  warning must be suppressed.
  
  Note: to write a string that will match any warning, use the string
! @code{"***"}. It will not work to use a single asterisk or two
  asterisks since this looks like an operator name. This form with three
! asterisks is similar in effect to specifying @code{pragma Warnings (Off)} except (if @code{-gnatw.w} is given) that a matching
! @code{pragma Warnings (On, "***")} will be required. This can be
  helpful in avoiding forgetting to turn warnings back on.
  
! Note: the debug flag @code{-gnatd.i} (@code{/NOWARNINGS_PRAGMAS} in VMS) can be
  used to cause the compiler to entirely ignore all WARNINGS pragmas. This can
  be useful in checking whether obsolete pragmas in existing programs are hiding
  real problems.
*************** Note: pragma Warnings does not affect th
*** 8708,8724 ****
  separate entry for pragma Style_Checks for control of style messages.
  
  Users of the formal verification tool GNATprove for the SPARK subset of Ada may
! use the version of the pragma with a @cite{TOOL_NAME} parameter.
  
! If present, @cite{TOOL_NAME} is the name of a tool, currently either @cite{GNAT} for the
! compiler or @cite{GNATprove} for the formal verification tool. A given tool only
  takes into account pragma Warnings that do not specify a tool name, or that
  specify the matching tool name. This makes it possible to disable warnings
  selectively for each tool, and as a consequence to detect useless pragma
! Warnings with switch @cite{-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{117}
  @section Pragma Weak_External
  
  
--- 8892,8908 ----
  separate entry for pragma Style_Checks for control of style messages.
  
  Users of the formal verification tool GNATprove for the SPARK subset of Ada may
! use the version of the pragma with a @code{TOOL_NAME} parameter.
  
! If present, @code{TOOL_NAME} is the name of a tool, currently either @code{GNAT} for the
! compiler or @code{GNATprove} for the formal verification tool. A given tool only
  takes into account pragma Warnings that do not specify a tool name, or that
  specify the matching tool name. This makes it possible to disable warnings
  selectively for each tool, and as a consequence to detect useless pragma
! 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
  
  
*************** Syntax:
*** 8728,8737 ****
  pragma Weak_External ([Entity =>] LOCAL_NAME);
  @end example
  
! @cite{LOCAL_NAME} must refer to an object that is declared at the library
  level. This pragma specifies that the given entity should be marked as a
! weak symbol for the linker. It is equivalent to @cite{__attribute__((weak))}
! in GNU C and causes @cite{LOCAL_NAME} to be emitted as a weak symbol instead
  of a regular symbol, that is to say a symbol that does not have to be
  resolved by the linker if used in conjunction with a pragma Import.
  
--- 8912,8921 ----
  pragma Weak_External ([Entity =>] LOCAL_NAME);
  @end example
  
! @code{LOCAL_NAME} must refer to an object that is declared at the library
  level. This pragma specifies that the given entity should be marked as a
! weak symbol for the linker. It is equivalent to @code{__attribute__((weak))}
! in GNU C and causes @code{LOCAL_NAME} to be emitted as a weak symbol instead
  of a regular symbol, that is to say a symbol that does not have to be
  resolved by the linker if used in conjunction with a pragma Import.
  
*************** end External_Module;
*** 8769,8775 ****
  @end example
  
  @node Pragma Wide_Character_Encoding,,Pragma Weak_External,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-wide-character-encoding}@anchor{118}
  @section Pragma Wide_Character_Encoding
  
  
--- 8953,8959 ----
  @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
  
  
*************** also be used at any point that a pragma
*** 8785,8793 ****
  to have more than one such pragma in a file, allowing multiple encodings
  to appear within the same file.
  
  The argument can be an identifier or a character literal. In the identifier
! case, it is one of @cite{HEX}, @cite{UPPER}, @cite{SHIFT_JIS},
! @cite{EUC}, @cite{UTF8}, or @cite{BRACKETS}. In the character literal
  case it is correspondingly one of the characters @code{h}, @code{u},
  @code{s}, @code{e}, @code{8}, or @code{b}.
  
--- 8969,8981 ----
  to have more than one such pragma in a file, allowing multiple encodings
  to appear within the same file.
  
+ However, note that the pragma cannot immediately precede the relevant
+ wide character, because then the previous encoding will still be in
+ effect, causing "illegal character" errors.
+ 
  The argument can be an identifier or a character literal. In the identifier
! case, it is one of @code{HEX}, @code{UPPER}, @code{SHIFT_JIS},
! @code{EUC}, @code{UTF8}, or @code{BRACKETS}. In the character literal
  case it is correspondingly one of the characters @code{h}, @code{u},
  @code{s}, @code{e}, @code{8}, or @code{b}.
  
*************** encoding within that file, and does not
*** 8796,8802 ****
  or subunits.
  
  @node Implementation Defined Aspects,Implementation Defined Attributes,Implementation Defined Pragmas,Top
! @anchor{gnat_rm/implementation_defined_aspects implementation-defined-aspects}@anchor{119}@anchor{gnat_rm/implementation_defined_aspects doc}@anchor{11a}@anchor{gnat_rm/implementation_defined_aspects id1}@anchor{11b}
  @chapter Implementation Defined Aspects
  
  
--- 8984,8990 ----
  or subunits.
  
  @node Implementation Defined Aspects,Implementation Defined Attributes,Implementation Defined Pragmas,Top
! @anchor{gnat_rm/implementation_defined_aspects implementation-defined-aspects}@anchor{11e}@anchor{gnat_rm/implementation_defined_aspects doc}@anchor{11f}@anchor{gnat_rm/implementation_defined_aspects id1}@anchor{120}
  @chapter Implementation Defined Aspects
  
  
*************** or attribute definition clause.
*** 8852,8858 ****
  
  @menu
  * Aspect Abstract_State:: 
! * Annotate:: 
  * Aspect Async_Readers:: 
  * Aspect Async_Writers:: 
  * Aspect Constant_After_Elaboration:: 
--- 9040,9046 ----
  
  @menu
  * Aspect Abstract_State:: 
! * Aspect Annotate:: 
  * Aspect Async_Readers:: 
  * Aspect Async_Writers:: 
  * Aspect Constant_After_Elaboration:: 
*************** or attribute definition clause.
*** 8878,8883 ****
--- 9066,9072 ----
  * Aspect Lock_Free:: 
  * Aspect Max_Queue_Length:: 
  * Aspect No_Elaboration_Code_All:: 
+ * Aspect No_Inline:: 
  * Aspect No_Tagged_Streams:: 
  * Aspect Object_Size:: 
  * Aspect Obsolescent:: 
*************** or attribute definition clause.
*** 8912,8919 ****
  
  @end menu
  
! @node Aspect Abstract_State,Annotate,,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-abstract-state}@anchor{11c}
  @section Aspect Abstract_State
  
  
--- 9101,9108 ----
  
  @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.
*** 8921,8929 ****
  
  This aspect is equivalent to @ref{1c,,pragma Abstract_State}.
  
! @node Annotate,Aspect Async_Readers,Aspect Abstract_State,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects annotate}@anchor{11d}
! @section Annotate
  
  
  @geindex Annotate
--- 9110,9118 ----
  
  This aspect is equivalent to @ref{1c,,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
  
  
  @geindex Annotate
*************** corresponding to @ref{25,,pragma Annotat
*** 8937,8955 ****
  
  @item @emph{Annotate => ID}
  
! Equivalent to @cite{pragma Annotate (ID@comma{} Entity => Name);}
  
  @item @emph{Annotate => (ID)}
  
! Equivalent to @cite{pragma Annotate (ID@comma{} Entity => Name);}
  
  @item @emph{Annotate => (ID ,ID @{, ARG@})}
  
! Equivalent to @cite{pragma Annotate (ID@comma{} ID @{@comma{} ARG@}@comma{} Entity => Name);}
  @end table
  
! @node Aspect Async_Readers,Aspect Async_Writers,Annotate,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-async-readers}@anchor{11e}
  @section Aspect Async_Readers
  
  
--- 9126,9144 ----
  
  @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{123}
  @section Aspect Async_Readers
  
  
*************** Equivalent to @cite{pragma Annotate (ID@
*** 8958,8964 ****
  This boolean aspect is equivalent to @ref{2c,,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{11f}
  @section Aspect Async_Writers
  
  
--- 9147,9153 ----
  This boolean aspect is equivalent to @ref{2c,,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
  
  
*************** This boolean aspect is equivalent to @re
*** 8967,8973 ****
  This boolean aspect is equivalent to @ref{2f,,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{120}
  @section Aspect Constant_After_Elaboration
  
  
--- 9156,9162 ----
  This boolean aspect is equivalent to @ref{2f,,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
  
  
*************** This boolean aspect is equivalent to @re
*** 8976,8982 ****
  This aspect is equivalent to @ref{40,,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{121}
  @section Aspect Contract_Cases
  
  
--- 9165,9171 ----
  This aspect is equivalent to @ref{40,,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
  
  
*************** of clauses being enclosed in parentheses
*** 8987,9017 ****
  aggregate.
  
  @node Aspect Depends,Aspect Default_Initial_Condition,Aspect Contract_Cases,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-depends}@anchor{122}
  @section Aspect Depends
  
  
  @geindex Depends
  
! This aspect is equivalent to @ref{50,,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{123}
  @section Aspect Default_Initial_Condition
  
  
  @geindex Default_Initial_Condition
  
! This aspect is equivalent to @ref{4b,,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{124}
  @section Aspect Dimension
  
  
  @geindex Dimension
  
! The @cite{Dimension} aspect is used to specify the dimensions of a given
  subtype of a dimensioned numeric type. The aspect also specifies a symbol
  used when doing formatted output of dimensioned quantities. The syntax is:
  
--- 9176,9206 ----
  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{51,,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{4c,,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
  
  
  @geindex Dimension
  
! The @code{Dimension} aspect is used to specify the dimensions of a given
  subtype of a dimensioned numeric type. The aspect also specifies a symbol
  used when doing formatted output of dimensioned quantities. The syntax is:
  
*************** RATIONAL ::= [-] NUMERIC_LITERAL [/ NUME
*** 9030,9055 ****
  @end example
  
  This aspect can only be applied to a subtype whose parent type has
! a @cite{Dimension_Systen} aspect. The aspect must specify values for
  all dimensions of the system. The rational values are the powers of the
  corresponding dimensions that are used by the compiler to verify that
  physical (numeric) computations are dimensionally consistent. For example,
  the computation of a force must result in dimensions (L => 1, M => 1, T => -2).
  For further examples of the usage
! of this aspect, see package @cite{System.Dim.Mks}.
  Note that when the dimensioned type is an integer type, then any
  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{125}
  @section Aspect Dimension_System
  
  
  @geindex Dimension_System
  
! The @cite{Dimension_System} aspect is used to define a system of
  dimensions that will be used in subsequent subtype declarations with
! @cite{Dimension} aspects that reference this system. The syntax is:
  
  @example
  with Dimension_System => (DIMENSION @{, DIMENSION@});
--- 9219,9244 ----
  @end example
  
  This aspect can only be applied to a subtype whose parent type has
! a @code{Dimension_System} aspect. The aspect must specify values for
  all dimensions of the system. The rational values are the powers of the
  corresponding dimensions that are used by the compiler to verify that
  physical (numeric) computations are dimensionally consistent. For example,
  the computation of a force must result in dimensions (L => 1, M => 1, T => -2).
  For further examples of the usage
! of this aspect, see package @code{System.Dim.Mks}.
  Note that when the dimensioned type is an integer type, then any
  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
  
  
  @geindex Dimension_System
  
! The @code{Dimension_System} aspect is used to define a system of
  dimensions that will be used in subsequent subtype declarations with
! @code{Dimension} aspects that reference this system. The syntax is:
  
  @example
  with Dimension_System => (DIMENSION @{, DIMENSION@});
*************** SYMBOL ::= CHARACTER_LITERAL | STRING_LI
*** 9063,9082 ****
  
  This aspect is applied to a type, which must be a numeric derived type
  (typically a floating-point type), that
! will represent values within the dimension system. Each @cite{DIMENSION}
  corresponds to one particular dimension. A maximum of 7 dimensions may
! be specified. @cite{Unit_Name} is the name of the dimension (for example
! @cite{Meter}). @cite{Unit_Symbol} is the shorthand used for quantities
! of this dimension (for example @cite{m} for @cite{Meter}).
! @cite{Dim_Symbol} gives
  the identification within the dimension system (typically this is a
! single letter, e.g. @cite{L} standing for length for unit name @cite{Meter}).
! The @cite{Unit_Symbol} is used in formatted output of dimensioned quantities.
! The @cite{Dim_Symbol} is used in error messages when numeric operations have
  inconsistent dimensions.
  
  GNAT provides the standard definition of the International MKS system in
! the run-time package @cite{System.Dim.Mks}. You can easily define
  similar packages for cgs units or British units, and define conversion factors
  between values in different systems. The MKS system is characterized by the
  following aspect:
--- 9252,9271 ----
  
  This aspect is applied to a type, which must be a numeric derived type
  (typically a floating-point type), that
! will represent values within the dimension system. Each @code{DIMENSION}
  corresponds to one particular dimension. A maximum of 7 dimensions may
! be specified. @code{Unit_Name} is the name of the dimension (for example
! @code{Meter}). @code{Unit_Symbol} is the shorthand used for quantities
! of this dimension (for example @code{m} for @code{Meter}).
! @code{Dim_Symbol} gives
  the identification within the dimension system (typically this is a
! single letter, e.g. @code{L} standing for length for unit name @code{Meter}).
! The @code{Unit_Symbol} is used in formatted output of dimensioned quantities.
! The @code{Dim_Symbol} is used in error messages when numeric operations have
  inconsistent dimensions.
  
  GNAT provides the standard definition of the International MKS system in
! the run-time package @code{System.Dim.Mks}. You can easily define
  similar packages for cgs units or British units, and define conversion factors
  between values in different systems. The MKS system is characterized by the
  following aspect:
*************** type Mks_Type is new Long_Long_Float wit
*** 9093,9099 ****
      (Unit_Name => Candela,  Unit_Symbol => "cd",  Dim_Symbol => 'J'));
  @end example
  
! Note that in the above type definition, we use the @cite{at} symbol (@code{@@}) to
  represent a theta character (avoiding the use of extended Latin-1
  characters in this context).
  
--- 9282,9288 ----
      (Unit_Name => Candela,  Unit_Symbol => "cd",  Dim_Symbol => 'J'));
  @end example
  
! Note that in the above type definition, we use the @code{at} symbol (@code{@@}) to
  represent a theta character (avoiding the use of extended Latin-1
  characters in this context).
  
*************** See section 'Performing Dimensionality A
*** 9101,9223 ****
  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{126}
  @section Aspect Disable_Controlled
  
  
  @geindex Disable_Controlled
  
! The aspect  @cite{Disable_Controlled} is defined for controlled record types. If
! active, this aspect causes suppression of all related calls to @cite{Initialize},
! @cite{Adjust}, and @cite{Finalize}. The intended use is for conditional compilation,
  where for example you might want a record to be controlled or not depending on
  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{127}
  @section Aspect Effective_Reads
  
  
  @geindex Effective_Reads
  
! This aspect is equivalent to @ref{56,,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{128}
  @section Aspect Effective_Writes
  
  
  @geindex Effective_Writes
  
! This aspect is equivalent to @ref{58,,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{129}
  @section Aspect Extensions_Visible
  
  
  @geindex Extensions_Visible
  
! This aspect is equivalent to @ref{64,,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{12a}
  @section Aspect Favor_Top_Level
  
  
  @geindex Favor_Top_Level
  
! This boolean aspect is equivalent to @ref{69,,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{12b}
  @section Aspect Ghost
  
  
  @geindex Ghost
  
! This aspect is equivalent to @ref{6c,,pragma Ghost}.
  
  @node Aspect Global,Aspect Initial_Condition,Aspect Ghost,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-global}@anchor{12c}
  @section Aspect Global
  
  
  @geindex Global
  
! This aspect is equivalent to @ref{6e,,pragma Global}.
  
  @node Aspect Initial_Condition,Aspect Initializes,Aspect Global,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-initial-condition}@anchor{12d}
  @section Aspect Initial_Condition
  
  
  @geindex Initial_Condition
  
! This aspect is equivalent to @ref{7c,,pragma Initial_Condition}.
  
  @node Aspect Initializes,Aspect Inline_Always,Aspect Initial_Condition,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-initializes}@anchor{12e}
  @section Aspect Initializes
  
  
  @geindex Initializes
  
! This aspect is equivalent to @ref{7e,,pragma Initializes}.
  
  @node Aspect Inline_Always,Aspect Invariant,Aspect Initializes,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-inline-always}@anchor{12f}
  @section Aspect Inline_Always
  
  
  @geindex Inline_Always
  
! This boolean aspect is equivalent to @ref{81,,pragma Inline_Always}.
  
  @node Aspect Invariant,Aspect Invariant'Class,Aspect Inline_Always,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-invariant}@anchor{130}
  @section Aspect Invariant
  
  
  @geindex Invariant
  
! This aspect is equivalent to @ref{88,,pragma Invariant}. It is a
! synonym for the language defined aspect @cite{Type_Invariant} except
! that it is separately controllable using pragma @cite{Assertion_Policy}.
  
  @node Aspect Invariant'Class,Aspect Iterable,Aspect Invariant,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-invariant-class}@anchor{131}
  @section Aspect Invariant'Class
  
  
  @geindex Invariant'Class
  
! This aspect is equivalent to @ref{fb,,pragma Type_Invariant_Class}. It is a
! synonym for the language defined aspect @cite{Type_Invariant'Class} except
! that it is separately controllable using pragma @cite{Assertion_Policy}.
  
  @node Aspect Iterable,Aspect Linker_Section,Aspect Invariant'Class,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-iterable}@anchor{132}
  @section Aspect Iterable
  
  
--- 9290,9412 ----
  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
  
  
  @geindex Disable_Controlled
  
! The aspect  @code{Disable_Controlled} is defined for controlled record types. If
! active, this aspect causes suppression of all related calls to @code{Initialize},
! @code{Adjust}, and @code{Finalize}. The intended use is for conditional compilation,
  where for example you might want a record to be controlled or not depending on
  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{57,,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{59,,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{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{12f}
  @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{130}
  @section Aspect Ghost
  
  
  @geindex Ghost
  
! This aspect is equivalent to @ref{6d,,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{6f,,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{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{133}
  @section Aspect Initializes
  
  
  @geindex Initializes
  
! This aspect is equivalent to @ref{7f,,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{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{135}
  @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{136}
  @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{137}
  @section Aspect Iterable
  
  
*************** that it is separately controllable using
*** 9226,9236 ****
  This aspect provides a light-weight mechanism for loops and quantified
  expressions over container types, without the overhead imposed by the tampering
  checks of standard Ada 2012 iterators. The value of the aspect is an aggregate
! with four named components: @cite{First}, @cite{Next}, @cite{Has_Element}, and @cite{Element} (the
! last one being optional). When only 3 components are specified, only the
! @cite{for .. in} form of iteration over cursors is available. When all 4 components
! are specified, both this form and the @cite{for .. of} form of iteration over
! elements are available. The following is a typical example of use:
  
  @example
  type List is private with
--- 9415,9429 ----
  This aspect provides a light-weight mechanism for loops and quantified
  expressions over container types, without the overhead imposed by the tampering
  checks of standard Ada 2012 iterators. The value of the aspect is an aggregate
! with six named components, of which the last three are optional: @code{First},
! @code{Next}, @code{Has_Element}, @code{Element}, @code{Last}, and @code{Previous}.
! When only the first three components are specified, only the
! @code{for .. in} form of iteration over cursors is available. When @code{Element}
! is specified, both this form and the @code{for .. of} form of iteration over
! elements are available. If the last two components are specified, reverse
! iterations over the container can be specified (analogous to what can be done
! over predefined containers that support the @code{Reverse_Iterator} interface).
! The following is a typical example of use:
  
  @example
  type List is private with
*************** type List is private with
*** 9244,9251 ****
  @itemize *
  
  @item 
! The value denoted by @cite{First} must denote a primitive operation of the
! container type that returns a @cite{Cursor}, which must a be a type declared in
  the container package or visible from it. For example:
  @end itemize
  
--- 9437,9444 ----
  @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
  
*************** function First_Cursor (Cont : Container)
*** 9257,9263 ****
  @itemize *
  
  @item 
! The value of @cite{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
  
--- 9450,9456 ----
  @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
  
*************** function Advance (Cont : Container; Posi
*** 9269,9275 ****
  @itemize *
  
  @item 
! The value of @cite{Has_Element} is a primitive operation of the container type
  that takes both a container and a cursor and yields a boolean. For example:
  @end itemize
  
--- 9462,9468 ----
  @itemize *
  
  @item 
! The value of @code{Has_Element} is a primitive operation of the container type
  that takes both a container and a cursor and yields a boolean. For example:
  @end itemize
  
*************** function Cursor_Has_Element (Cont : Cont
*** 9281,9288 ****
  @itemize *
  
  @item 
! The value of @cite{Element} is a primitive operation of the container type that
! takes both a container and a cursor and yields an @cite{Element_Type}, which must
  be a type declared in the container package or visible from it. For example:
  @end itemize
  
--- 9474,9481 ----
  @itemize *
  
  @item 
! The value of @code{Element} is a primitive operation of the container type that
! takes both a container and a cursor and yields an @code{Element_Type}, which must
  be a type declared in the container package or visible from it. For example:
  @end itemize
  
*************** function Get_Element (Cont : Container;
*** 9293,9631 ****
  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{133}
  @section Aspect Linker_Section
  
  
  @geindex Linker_Section
  
! This aspect is equivalent to @ref{90,,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{134}
  @section Aspect Lock_Free
  
  
  @geindex Lock_Free
  
! This boolean aspect is equivalent to @ref{92,,pragma Lock_Free}.
  
  @node Aspect Max_Queue_Length,Aspect No_Elaboration_Code_All,Aspect Lock_Free,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-max-queue-length}@anchor{135}
  @section Aspect Max_Queue_Length
  
  
  @geindex Max_Queue_Length
  
! This aspect is equivalent to @emph{pragma Max_Queue_Length}.
  
! @node Aspect No_Elaboration_Code_All,Aspect No_Tagged_Streams,Aspect Max_Queue_Length,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-no-elaboration-code-all}@anchor{136}
  @section Aspect No_Elaboration_Code_All
  
  
  @geindex No_Elaboration_Code_All
  
! This aspect is equivalent to @ref{9c,,pragma No_Elaboration_Code_All}
  for a program unit.
  
! @node Aspect No_Tagged_Streams,Aspect Object_Size,Aspect No_Elaboration_Code_All,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-no-tagged-streams}@anchor{137}
  @section Aspect No_Tagged_Streams
  
  
  @geindex No_Tagged_Streams
  
! This aspect is equivalent to @ref{a1,,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 Object_Size,Aspect Obsolescent,Aspect No_Tagged_Streams,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-object-size}@anchor{138}
  @section Aspect Object_Size
  
  
  @geindex Object_Size
  
! This aspect is equivalent to @ref{139,,attribute Object_Size}.
  
  @node Aspect Obsolescent,Aspect Part_Of,Aspect Object_Size,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-obsolescent}@anchor{13a}
  @section Aspect Obsolescent
  
  
  @geindex Obsolsecent
  
! This aspect is equivalent to @ref{a4,,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{13b}
  @section Aspect Part_Of
  
  
  @geindex Part_Of
  
! This aspect is equivalent to @ref{ac,,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{13c}
  @section Aspect Persistent_BSS
  
  
  @geindex Persistent_BSS
  
! This boolean aspect is equivalent to @ref{ae,,pragma Persistent_BSS}.
  
  @node Aspect Predicate,Aspect Pure_Function,Aspect Persistent_BSS,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-predicate}@anchor{13d}
  @section Aspect Predicate
  
  
  @geindex Predicate
  
! This aspect is equivalent to @ref{b7,,pragma Predicate}. It is thus
! similar to the language defined aspects @cite{Dynamic_Predicate}
! and @cite{Static_Predicate} except that whether the resulting
  predicate is static or dynamic is controlled by the form of the
  expression. It is also separately controllable using pragma
! @cite{Assertion_Policy}.
  
  @node Aspect Pure_Function,Aspect Refined_Depends,Aspect Predicate,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-pure-function}@anchor{13e}
  @section Aspect Pure_Function
  
  
  @geindex Pure_Function
  
! This boolean aspect is equivalent to @ref{c3,,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{13f}
  @section Aspect Refined_Depends
  
  
  @geindex Refined_Depends
  
! This aspect is equivalent to @ref{c8,,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{140}
  @section Aspect Refined_Global
  
  
  @geindex Refined_Global
  
! This aspect is equivalent to @ref{c9,,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{141}
  @section Aspect Refined_Post
  
  
  @geindex Refined_Post
  
! This aspect is equivalent to @ref{cb,,pragma Refined_Post}.
  
  @node Aspect Refined_State,Aspect Remote_Access_Type,Aspect Refined_Post,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-refined-state}@anchor{142}
  @section Aspect Refined_State
  
  
  @geindex Refined_State
  
! This aspect is equivalent to @ref{cd,,pragma Refined_State}.
  
  @node Aspect Remote_Access_Type,Aspect Secondary_Stack_Size,Aspect Refined_State,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-remote-access-type}@anchor{143}
  @section Aspect Remote_Access_Type
  
  
  @geindex Remote_Access_Type
  
! This aspect is equivalent to @ref{d1,,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{144}
  @section Aspect Secondary_Stack_Size
  
  
  @geindex Secondary_Stack_Size
  
! This aspect is equivalent to @ref{d6,,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{145}
  @section Aspect Scalar_Storage_Order
  
  
  @geindex Scalar_Storage_Order
  
! This aspect is equivalent to a @ref{146,,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{147}
  @section Aspect Shared
  
  
  @geindex Shared
  
! This boolean aspect is equivalent to @ref{d9,,pragma Shared}
! and is thus a synonym for aspect @cite{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{148}
  @section Aspect Simple_Storage_Pool
  
  
  @geindex Simple_Storage_Pool
  
! This aspect is equivalent to @ref{de,,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{149}
  @section Aspect Simple_Storage_Pool_Type
  
  
  @geindex Simple_Storage_Pool_Type
  
! This boolean aspect is equivalent to @ref{dc,,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{14a}
  @section Aspect SPARK_Mode
  
  
  @geindex SPARK_Mode
  
! This aspect is equivalent to @ref{e4,,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{14b}
  @section Aspect Suppress_Debug_Info
  
  
  @geindex Suppress_Debug_Info
  
! This boolean aspect is equivalent to @ref{ec,,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{14c}
  @section Aspect Suppress_Initialization
  
  
  @geindex Suppress_Initialization
  
! This boolean aspect is equivalent to @ref{f0,,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{14d}
  @section Aspect Test_Case
  
  
  @geindex Test_Case
  
! This aspect is equivalent to @ref{f3,,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{14e}
  @section Aspect Thread_Local_Storage
  
  
  @geindex Thread_Local_Storage
  
! This boolean aspect is equivalent to @ref{f5,,pragma Thread_Local_Storage}.
  
  @node Aspect Universal_Aliasing,Aspect Universal_Data,Aspect Thread_Local_Storage,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-universal-aliasing}@anchor{14f}
  @section Aspect Universal_Aliasing
  
  
  @geindex Universal_Aliasing
  
! This boolean aspect is equivalent to @ref{100,,pragma Universal_Aliasing}.
  
  @node Aspect Universal_Data,Aspect Unmodified,Aspect Universal_Aliasing,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-universal-data}@anchor{150}
  @section Aspect Universal_Data
  
  
  @geindex Universal_Data
  
! This aspect is equivalent to @ref{101,,pragma Universal_Data}.
  
  @node Aspect Unmodified,Aspect Unreferenced,Aspect Universal_Data,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-unmodified}@anchor{151}
  @section Aspect Unmodified
  
  
  @geindex Unmodified
  
! This boolean aspect is equivalent to @ref{104,,pragma Unmodified}.
  
  @node Aspect Unreferenced,Aspect Unreferenced_Objects,Aspect Unmodified,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-unreferenced}@anchor{152}
  @section Aspect Unreferenced
  
  
  @geindex Unreferenced
  
! This boolean aspect is equivalent to @ref{105,,pragma Unreferenced}. Note that
  in the case of formal parameters, it is not permitted to have aspects for
  a formal parameter, so in this case the pragma form must be used.
  
  @node Aspect Unreferenced_Objects,Aspect Value_Size,Aspect Unreferenced,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-unreferenced-objects}@anchor{153}
  @section Aspect Unreferenced_Objects
  
  
  @geindex Unreferenced_Objects
  
! This boolean aspect is equivalent to @ref{107,,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{154}
  @section Aspect Value_Size
  
  
  @geindex Value_Size
  
! This aspect is equivalent to @ref{155,,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{156}
  @section Aspect Volatile_Full_Access
  
  
  @geindex Volatile_Full_Access
  
! This boolean aspect is equivalent to @ref{110,,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{157}
  @section Aspect Volatile_Function
  
  
  @geindex Volatile_Function
  
! This boolean aspect is equivalent to @ref{113,,pragma Volatile_Function}.
  
  @node Aspect Warnings,,Aspect Volatile_Function,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-warnings}@anchor{158}
  @section Aspect Warnings
  
  
  @geindex Warnings
  
! This aspect is equivalent to the two argument form of @ref{115,,pragma Warnings},
! where the first argument is @cite{ON} or @cite{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{159}@anchor{gnat_rm/implementation_defined_attributes implementation-defined-attributes}@anchor{8}@anchor{gnat_rm/implementation_defined_attributes id1}@anchor{15a}
  @chapter Implementation Defined Attributes
  
  
--- 9486,9833 ----
  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{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{139}
  @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_Elaboration_Code_All,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{9b,,pragma Max_Queue_Length}.
  
! @node Aspect No_Elaboration_Code_All,Aspect No_Inline,Aspect Max_Queue_Length,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{9f,,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{a2,,pragma No_Inline}.
! 
! @node Aspect No_Tagged_Streams,Aspect Object_Size,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{a6,,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 Object_Size,Aspect Obsolescent,Aspect No_Tagged_Streams,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-object-size}@anchor{13e}
  @section Aspect Object_Size
  
  
  @geindex Object_Size
  
! This aspect is equivalent to @ref{13f,,attribute Object_Size}.
  
  @node Aspect Obsolescent,Aspect Part_Of,Aspect Object_Size,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-obsolescent}@anchor{140}
  @section Aspect Obsolescent
  
  
  @geindex Obsolsecent
  
! This aspect is equivalent to @ref{a9,,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{141}
  @section Aspect Part_Of
  
  
  @geindex Part_Of
  
! This aspect is equivalent to @ref{b1,,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{142}
  @section Aspect Persistent_BSS
  
  
  @geindex Persistent_BSS
  
! This boolean aspect is equivalent to @ref{b4,,pragma Persistent_BSS}.
  
  @node Aspect Predicate,Aspect Pure_Function,Aspect Persistent_BSS,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-predicate}@anchor{143}
  @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 controllable using pragma
! @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{144}
  @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{145}
  @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{146}
  @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{147}
  @section Aspect Refined_Post
  
  
  @geindex Refined_Post
  
! This aspect is equivalent to @ref{d0,,pragma Refined_Post}.
  
  @node Aspect Refined_State,Aspect Remote_Access_Type,Aspect Refined_Post,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-refined-state}@anchor{148}
  @section Aspect Refined_State
  
  
  @geindex Refined_State
  
! This aspect is equivalent to @ref{d2,,pragma Refined_State}.
  
  @node Aspect Remote_Access_Type,Aspect Secondary_Stack_Size,Aspect Refined_State,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-remote-access-type}@anchor{149}
  @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{14a}
  @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{14b}
  @section Aspect Scalar_Storage_Order
  
  
  @geindex Scalar_Storage_Order
  
! This aspect is equivalent to a @ref{14c,,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{14d}
  @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{14e}
  @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{14f}
  @section Aspect Simple_Storage_Pool_Type
  
  
  @geindex Simple_Storage_Pool_Type
  
! This boolean aspect is equivalent to @ref{e1,,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{150}
  @section Aspect SPARK_Mode
  
  
  @geindex SPARK_Mode
  
! This aspect is equivalent to @ref{e9,,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{151}
  @section Aspect Suppress_Debug_Info
  
  
  @geindex Suppress_Debug_Info
  
! This boolean aspect is equivalent to @ref{f1,,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{152}
  @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{153}
  @section Aspect Test_Case
  
  
  @geindex Test_Case
  
! This aspect is equivalent to @ref{f8,,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{154}
  @section Aspect Thread_Local_Storage
  
  
  @geindex Thread_Local_Storage
  
! This boolean aspect is equivalent to @ref{fa,,pragma Thread_Local_Storage}.
  
  @node Aspect Universal_Aliasing,Aspect Universal_Data,Aspect Thread_Local_Storage,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-universal-aliasing}@anchor{155}
  @section Aspect Universal_Aliasing
  
  
  @geindex Universal_Aliasing
  
! This boolean aspect is equivalent to @ref{105,,pragma Universal_Aliasing}.
  
  @node Aspect Universal_Data,Aspect Unmodified,Aspect Universal_Aliasing,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-universal-data}@anchor{156}
  @section Aspect Universal_Data
  
  
  @geindex Universal_Data
  
! This aspect is equivalent to @ref{106,,pragma Universal_Data}.
  
  @node Aspect Unmodified,Aspect Unreferenced,Aspect Universal_Data,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-unmodified}@anchor{157}
  @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{158}
  @section Aspect Unreferenced
  
  
  @geindex Unreferenced
  
! This boolean aspect is equivalent to @ref{10a,,pragma Unreferenced}. Note that
  in the case of formal parameters, it is not permitted to have aspects for
  a formal parameter, so in this case the pragma form must be used.
  
  @node Aspect Unreferenced_Objects,Aspect Value_Size,Aspect Unreferenced,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-unreferenced-objects}@anchor{159}
  @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{15a}
  @section Aspect Value_Size
  
  
  @geindex Value_Size
  
! This aspect is equivalent to @ref{15b,,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{15c}
  @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{15d}
  @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{15e}
  @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{15f}@anchor{gnat_rm/implementation_defined_attributes implementation-defined-attributes}@anchor{8}@anchor{gnat_rm/implementation_defined_attributes id1}@anchor{160}
  @chapter Implementation Defined Attributes
  
  
*************** consideration, you should minimize the u
*** 9726,9738 ****
  @end menu
  
  @node Attribute Abort_Signal,Attribute Address_Size,,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-abort-signal}@anchor{15b}
  @section Attribute Abort_Signal
  
  
  @geindex Abort_Signal
  
! @cite{Standard'Abort_Signal} (@cite{Standard} is the only allowed
  prefix) provides the entity for the special exception used to signal
  task abort or asynchronous transfer of control.  Normally this attribute
  should only be used in the tasking runtime (it is highly peculiar, and
--- 9928,9940 ----
  @end menu
  
  @node Attribute Abort_Signal,Attribute Address_Size,,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-abort-signal}@anchor{161}
  @section Attribute Abort_Signal
  
  
  @geindex Abort_Signal
  
! @code{Standard'Abort_Signal} (@code{Standard} is the only allowed
  prefix) provides the entity for the special exception used to signal
  task abort or asynchronous transfer of control.  Normally this attribute
  should only be used in the tasking runtime (it is highly peculiar, and
*************** completely outside the normal semantics
*** 9740,9768 ****
  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{15c}
  @section Attribute Address_Size
  
  
! @geindex Size of `Address`
  
  @geindex Address_Size
  
! @cite{Standard'Address_Size} (@cite{Standard} is the only allowed
  prefix) is a static constant giving the number of bits in an
! @cite{Address}. It is the same value as System.Address'Size,
  but has the advantage of being static, while a direct
  reference to System.Address'Size is nonstatic because Address
  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{15d}
  @section Attribute Asm_Input
  
  
  @geindex Asm_Input
  
! The @cite{Asm_Input} attribute denotes a function that takes two
  parameters.  The first is a string, the second is an expression of the
  type designated by the prefix.  The first (string) argument is required
  to be a static expression, and is the constraint for the parameter,
--- 9942,9970 ----
  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{162}
  @section Attribute Address_Size
  
  
! @geindex Size of `@w{`}Address`@w{`}
  
  @geindex Address_Size
  
! @code{Standard'Address_Size} (@code{Standard} is the only allowed
  prefix) is a static constant giving the number of bits in an
! @code{Address}. It is the same value as System.Address'Size,
  but has the advantage of being static, while a direct
  reference to System.Address'Size is nonstatic because Address
  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{163}
  @section Attribute Asm_Input
  
  
  @geindex Asm_Input
  
! The @code{Asm_Input} attribute denotes a function that takes two
  parameters.  The first is a string, the second is an expression of the
  type designated by the prefix.  The first (string) argument is required
  to be a static expression, and is the constraint for the parameter,
*************** to be a static expression, and is the co
*** 9770,9785 ****
  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{15e,,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{15f}
  @section Attribute Asm_Output
  
  
  @geindex Asm_Output
  
! The @cite{Asm_Output} attribute denotes a function that takes two
  parameters.  The first is a string, the second is the name of a variable
  of the type designated by the attribute prefix.  The first (string)
  argument is required to be a static expression and designates the
--- 9972,9987 ----
  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{164,,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{165}
  @section Attribute Asm_Output
  
  
  @geindex Asm_Output
  
! The @code{Asm_Output} attribute denotes a function that takes two
  parameters.  The first is a string, the second is the name of a variable
  of the type designated by the attribute prefix.  The first (string)
  argument is required to be a static expression and designates the
*************** required).  The second argument is the v
*** 9788,9820 ****
  result.  The possible values for constraint are the same as those used in
  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 @cite{No_Output_Operands}.
! @ref{15e,,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{160}
  @section Attribute Atomic_Always_Lock_Free
  
  
  @geindex Atomic_Always_Lock_Free
  
! The prefix of the @cite{Atomic_Always_Lock_Free} attribute is a type.
  The result is a Boolean value which is True if the type has discriminants,
  and False otherwise.  The result indicate whether atomic operations are
  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{161}
  @section Attribute Bit
  
  
  @geindex Bit
  
! @code{obj'Bit}, where @cite{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 @cite{Universal_Integer}, and is always a non-negative number not
! exceeding the value of @cite{System.Storage_Unit}.
  
  For an object that is a variable or a constant allocated in a register,
  the value is zero.  (The use of this attribute does not force the
--- 9990,10022 ----
  result.  The possible values for constraint are the same as those used in
  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{164,,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{166}
  @section Attribute Atomic_Always_Lock_Free
  
  
  @geindex Atomic_Always_Lock_Free
  
! The prefix of the @code{Atomic_Always_Lock_Free} attribute is a type.
  The result is a Boolean value which is True if the type has discriminants,
  and False otherwise.  The result indicate whether atomic operations are
  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{167}
  @section Attribute Bit
  
  
  @geindex Bit
  
! @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 non-negative number not
! exceeding the value of @code{System.Storage_Unit}.
  
  For an object that is a variable or a constant allocated in a register,
  the value is zero.  (The use of this attribute does not force the
*************** to either the matching actual parameter
*** 9825,9856 ****
  matching actual parameter.
  
  For an access object the value is zero.  Note that
! @code{obj.all'Bit} is subject to an @cite{Access_Check} for the
  designated object.  Similarly for a record component
  @code{X.C'Bit} is subject to a discriminant check and
  @code{X(I).Bit} and @code{X(I1..I2)'Bit}
  are subject to index checks.
  
  This attribute is designed to be compatible with the DEC Ada 83 definition
! and implementation of the @cite{Bit} attribute.
  
  @node Attribute Bit_Position,Attribute Code_Address,Attribute Bit,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-bit-position}@anchor{162}
  @section Attribute Bit_Position
  
  
  @geindex Bit_Position
  
! @code{R.C'Bit_Position}, where @cite{R} is a record object and @cite{C} is one
  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 @cite{Universal_Integer}.  The value depends only on the field
! @cite{C} and is independent of the alignment of
! the containing record @cite{R}.
  
  @node Attribute Code_Address,Attribute Compiler_Version,Attribute Bit_Position,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-code-address}@anchor{163}
  @section Attribute Code_Address
  
  
--- 10027,10058 ----
  matching actual parameter.
  
  For an access object the value is zero.  Note that
! @code{obj.all'Bit} is subject to an @code{Access_Check} for the
  designated object.  Similarly for a record component
  @code{X.C'Bit} is subject to a discriminant check and
  @code{X(I).Bit} and @code{X(I1..I2)'Bit}
  are subject to index checks.
  
  This attribute is designed to be compatible with the DEC Ada 83 definition
! 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{168}
  @section Attribute Bit_Position
  
  
  @geindex Bit_Position
  
! @code{R.C'Bit_Position}, where @code{R} is a record object and @code{C} is one
  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{169}
  @section Attribute Code_Address
  
  
*************** the containing record @cite{R}.
*** 9860,9866 ****
  
  @geindex Address of subprogram code
  
! The @cite{'Address}
  attribute may be applied to subprograms in Ada 95 and Ada 2005, but the
  intended effect seems to be to provide
  an address value which can be used to call the subprogram by means of
--- 10062,10068 ----
  
  @geindex Address of subprogram code
  
! The @code{'Address}
  attribute may be applied to subprograms in Ada 95 and Ada 2005, but the
  intended effect seems to be to provide
  an address value which can be used to call the subprogram by means of
*************** for L'Address use K'Address;
*** 9874,9925 ****
  pragma Import (Ada, L);
  @end example
  
! A call to @cite{L} is then expected to result in a call to @cite{K}.
  In Ada 83, where there were no access-to-subprogram values, this was
  a common work-around for getting the effect of an indirect call.
! GNAT implements the above use of @cite{Address} and the technique
  illustrated by the example code works correctly.
  
  However, for some purposes, it is useful to have the address of the start
  of the generated code for the subprogram.  On some architectures, this is
! not necessarily the same as the @cite{Address} value described above.
! For example, the @cite{Address} value may reference a subprogram
  descriptor rather than the subprogram itself.
  
! The @cite{'Code_Address} attribute, which can only be applied to
  subprogram entities, always returns the address of the start of the
  generated code of the specified subprogram, which may or may not be
! the same value as is returned by the corresponding @cite{'Address}
  attribute.
  
  @node Attribute Compiler_Version,Attribute Constrained,Attribute Code_Address,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-compiler-version}@anchor{164}
  @section Attribute Compiler_Version
  
  
  @geindex Compiler_Version
  
! @cite{Standard'Compiler_Version} (@cite{Standard} is the only allowed
  prefix) yields a static string identifying the version of the compiler
  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{165}
  @section Attribute Constrained
  
  
  @geindex Constrained
  
! In addition to the usage of this attribute in the Ada RM, @cite{GNAT}
! also permits the use of the @cite{'Constrained} attribute
  in a generic template
  for any type, including types without discriminants. The value of this
  attribute in the generic instance when applied to a scalar type or a
! record type without discriminants is always @cite{True}. This usage is
  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{166}
  @section Attribute Default_Bit_Order
  
  
--- 10076,10127 ----
  pragma Import (Ada, L);
  @end example
  
! A call to @code{L} is then expected to result in a call to @code{K}.
  In Ada 83, where there were no access-to-subprogram values, this was
  a common work-around for getting the effect of an indirect call.
! GNAT implements the above use of @code{Address} and the technique
  illustrated by the example code works correctly.
  
  However, for some purposes, it is useful to have the address of the start
  of the generated code for the subprogram.  On some architectures, this is
! not necessarily the same as the @code{Address} value described above.
! For example, the @code{Address} value may reference a subprogram
  descriptor rather than the subprogram itself.
  
! The @code{'Code_Address} attribute, which can only be applied to
  subprogram entities, always returns the address of the start of the
  generated code of the specified subprogram, which may or may not be
! the same value as is returned by the corresponding @code{'Address}
  attribute.
  
  @node Attribute Compiler_Version,Attribute Constrained,Attribute Code_Address,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-compiler-version}@anchor{16a}
  @section Attribute Compiler_Version
  
  
  @geindex Compiler_Version
  
! @code{Standard'Compiler_Version} (@code{Standard} is the only allowed
  prefix) yields a static string identifying the version of the compiler
  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{16b}
  @section Attribute Constrained
  
  
  @geindex Constrained
  
! In addition to the usage of this attribute in the Ada RM, GNAT
! also permits the use of the @code{'Constrained} attribute
  in a generic template
  for any type, including types without discriminants. The value of this
  attribute in the generic instance when applied to a scalar type or a
! record type without discriminants is always @code{True}. This usage is
  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{16c}
  @section Attribute Default_Bit_Order
  
  
*************** compatible with older Ada compilers, inc
*** 9929,9942 ****
  
  @geindex Default_Bit_Order
  
! @cite{Standard'Default_Bit_Order} (@cite{Standard} is the only
! permissible prefix), provides the value @cite{System.Default_Bit_Order}
! as a @cite{Pos} value (0 for @cite{High_Order_First}, 1 for
! @cite{Low_Order_First}).  This is used to construct the definition of
! @cite{Default_Bit_Order} in package @cite{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{167}
  @section Attribute Default_Scalar_Storage_Order
  
  
--- 10131,10144 ----
  
  @geindex Default_Bit_Order
  
! @code{Standard'Default_Bit_Order} (@code{Standard} is the only
! permissible prefix), provides the value @code{System.Default_Bit_Order}
! as a @code{Pos} value (0 for @code{High_Order_First}, 1 for
! @code{Low_Order_First}).  This is used to construct the definition of
! @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{16d}
  @section Attribute Default_Scalar_Storage_Order
  
  
*************** as a @cite{Pos} value (0 for @cite{High_
*** 9946,9972 ****
  
  @geindex Default_Scalar_Storage_Order
  
! @cite{Standard'Default_Scalar_Storage_Order} (@cite{Standard} is the only
  permissible prefix), provides the current value of the default scalar storage
! order (as specified using pragma @cite{Default_Scalar_Storage_Order}, or
! equal to @cite{Default_Bit_Order} if unspecified) as a
! @cite{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{168}
  @section Attribute Deref
  
  
  @geindex Deref
  
! The attribute @cite{typ'Deref(expr)} where @cite{expr} is of type @cite{System.Address} yields
! the variable of type @cite{typ} that is located at the given address. It is similar
! to @cite{(totyp (expr).all)}, where @cite{totyp} is an unchecked conversion from address to
  a named access-to-@cite{typ} type, except that it yields a variable, so it can be
  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{169}
  @section Attribute Descriptor_Size
  
  
--- 10148,10174 ----
  
  @geindex Default_Scalar_Storage_Order
  
! @code{Standard'Default_Scalar_Storage_Order} (@code{Standard} is the only
  permissible prefix), provides the current value of the default scalar storage
! order (as specified using pragma @code{Default_Scalar_Storage_Order}, or
! equal to @code{Default_Bit_Order} if unspecified) as a
! @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{16e}
  @section Attribute Deref
  
  
  @geindex Deref
  
! The attribute @code{typ'Deref(expr)} where @code{expr} is of type @code{System.Address} yields
! the variable of type @code{typ} that is located at the given address. It is similar
! to @code{(totyp (expr).all)}, where @code{totyp} is an unchecked conversion from address to
  a named access-to-@cite{typ} type, except that it yields a variable, so it can be
  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{16f}
  @section Attribute Descriptor_Size
  
  
*************** used on the left side of an assignment.
*** 9976,9982 ****
  
  @geindex Descriptor_Size
  
! Nonstatic attribute @cite{Descriptor_Size} returns the size in bits of the
  descriptor allocated for a type.  The result is non-zero only for unconstrained
  array types and the returned value is of type universal integer.  In GNAT, an
  array descriptor contains bounds information and is located immediately before
--- 10178,10184 ----
  
  @geindex Descriptor_Size
  
! Nonstatic attribute @code{Descriptor_Size} returns the size in bits of the
  descriptor allocated for a type.  The result is non-zero only for unconstrained
  array types and the returned value is of type universal integer.  In GNAT, an
  array descriptor contains bounds information and is located immediately before
*************** Put_Line ("Descriptor size = " & Unconst
*** 9989,10005 ****
  
  The attribute takes into account any additional padding due to type alignment.
  In the example above, the descriptor contains two values of type
! @cite{Positive} representing the low and high bound.  Since @cite{Positive} has
! a size of 31 bits and an alignment of 4, the descriptor size is @cite{2 * Positive'Size + 2} or 64 bits.
  
  @node Attribute Elaborated,Attribute Elab_Body,Attribute Descriptor_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-elaborated}@anchor{16a}
  @section Attribute Elaborated
  
  
  @geindex Elaborated
  
! The prefix of the @cite{'Elaborated} attribute must be a unit name.  The
  value is a Boolean which indicates whether or not the given unit has been
  elaborated.  This attribute is primarily intended for internal use by the
  generated code for dynamic elaboration checking, but it can also be used
--- 10191,10207 ----
  
  The attribute takes into account any additional padding due to type alignment.
  In the example above, the descriptor contains two values of type
! @code{Positive} representing the low and high bound.  Since @code{Positive} has
! a size of 31 bits and an alignment of 4, the descriptor size is @code{2 * Positive'Size + 2} or 64 bits.
  
  @node Attribute Elaborated,Attribute Elab_Body,Attribute Descriptor_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-elaborated}@anchor{170}
  @section Attribute Elaborated
  
  
  @geindex Elaborated
  
! The prefix of the @code{'Elaborated} attribute must be a unit name.  The
  value is a Boolean which indicates whether or not the given unit has been
  elaborated.  This attribute is primarily intended for internal use by the
  generated code for dynamic elaboration checking, but it can also be used
*************** units has been completed.  An exception
*** 10008,10014 ****
  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{16b}
  @section Attribute Elab_Body
  
  
--- 10210,10216 ----
  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{171}
  @section Attribute Elab_Body
  
  
*************** e.g., if it is necessary to do selective
*** 10024,10030 ****
  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{16c}
  @section Attribute Elab_Spec
  
  
--- 10226,10232 ----
  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{172}
  @section Attribute Elab_Spec
  
  
*************** Ada code, e.g., if it is necessary to do
*** 10040,10046 ****
  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{16d}
  @section Attribute Elab_Subp_Body
  
  
--- 10242,10248 ----
  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{173}
  @section Attribute Elab_Subp_Body
  
  
*************** elaboration procedure by the binder in C
*** 10054,10060 ****
  otherwise.
  
  @node Attribute Emax,Attribute Enabled,Attribute Elab_Subp_Body,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-emax}@anchor{16e}
  @section Attribute Emax
  
  
--- 10256,10262 ----
  otherwise.
  
  @node Attribute Emax,Attribute Enabled,Attribute Elab_Subp_Body,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-emax}@anchor{174}
  @section Attribute Emax
  
  
*************** otherwise.
*** 10062,10097 ****
  
  @geindex Emax
  
! The @cite{Emax} attribute is provided for compatibility with Ada 83.  See
  the Ada 83 reference manual for an exact description of the semantics of
  this attribute.
  
  @node Attribute Enabled,Attribute Enum_Rep,Attribute Emax,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-enabled}@anchor{16f}
  @section Attribute Enabled
  
  
  @geindex Enabled
  
! The @cite{Enabled} attribute allows an application program to check at compile
  time to see if the designated check is currently enabled. The prefix is a
  simple identifier, referencing any predefined check name (other than
! @cite{All_Checks}) or a check name introduced by pragma Check_Name. If
  no argument is given for the attribute, the check is for the general state
  of the check, if an argument is given, then it is an entity name, and the
! check indicates whether an @cite{Suppress} or @cite{Unsuppress} has been
  given naming the entity (if not, then the argument is ignored).
  
  Note that instantiations inherit the check status at the point of the
  instantiation, so a useful idiom is to have a library package that
! introduces a check name with @cite{pragma Check_Name}, and then contains
! generic packages or subprograms which use the @cite{Enabled} attribute
  to see if the check is enabled. A user of this package can then issue
! a @cite{pragma Suppress} or @cite{pragma Unsuppress} before instantiating
  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{170}
  @section Attribute Enum_Rep
  
  
--- 10264,10299 ----
  
  @geindex Emax
  
! The @code{Emax} attribute is provided for compatibility with Ada 83.  See
  the Ada 83 reference manual for an exact description of the semantics of
  this attribute.
  
  @node Attribute Enabled,Attribute Enum_Rep,Attribute Emax,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-enabled}@anchor{175}
  @section Attribute Enabled
  
  
  @geindex Enabled
  
! The @code{Enabled} attribute allows an application program to check at compile
  time to see if the designated check is currently enabled. The prefix is a
  simple identifier, referencing any predefined check name (other than
! @code{All_Checks}) or a check name introduced by pragma Check_Name. If
  no argument is given for the attribute, the check is for the general state
  of the check, if an argument is given, then it is an entity name, and the
! check indicates whether an @code{Suppress} or @code{Unsuppress} has been
  given naming the entity (if not, then the argument is ignored).
  
  Note that instantiations inherit the check status at the point of the
  instantiation, so a useful idiom is to have a library package that
! introduces a check name with @code{pragma Check_Name}, and then contains
! generic packages or subprograms which use the @code{Enabled} attribute
  to see if the check is enabled. A user of this package can then issue
! a @code{pragma Suppress} or @code{pragma Unsuppress} before instantiating
  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{176}
  @section Attribute Enum_Rep
  
  
*************** the package or subprogram, controlling w
*** 10099,10134 ****
  
  @geindex Enum_Rep
  
! For every enumeration subtype @cite{S}, @code{S'Enum_Rep} denotes a
  function with the following spec:
  
  @example
  function S'Enum_Rep (Arg : S'Base) return <Universal_Integer>;
  @end example
  
! It is also allowable to apply @cite{Enum_Rep} directly to an object of an
  enumeration type or to a non-overloaded enumeration
  literal.  In this case @code{S'Enum_Rep} is equivalent to
! @code{typ'Enum_Rep(S)} where @cite{typ} is the type of the
  enumeration literal or object.
  
  The function returns the representation value for the given enumeration
! value.  This will be equal to value of the @cite{Pos} attribute in the
  absence of an enumeration representation clause.  This is a static
  attribute (i.e.,:the result is static if the argument is static).
  
  @code{S'Enum_Rep} can also be used with integer types and objects,
  in which case it simply returns the integer value.  The reason for this
! is to allow it to be used for @cite{(<>)} discrete formal arguments in
  a generic unit that can be instantiated with either enumeration types
! or integer types.  Note that if @cite{Enum_Rep} is used on a modular
  type whose upper bound exceeds the upper bound of the largest signed
  integer type, and the argument is a variable, so that the universal
! integer calculation is done at run time, then the call to @cite{Enum_Rep}
! may raise @cite{Constraint_Error}.
  
  @node Attribute Enum_Val,Attribute Epsilon,Attribute Enum_Rep,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-enum-val}@anchor{171}
  @section Attribute Enum_Val
  
  
--- 10301,10336 ----
  
  @geindex Enum_Rep
  
! For every enumeration subtype @code{S}, @code{S'Enum_Rep} denotes a
  function with the following spec:
  
  @example
  function S'Enum_Rep (Arg : S'Base) return <Universal_Integer>;
  @end example
  
! It is also allowable to apply @code{Enum_Rep} directly to an object of an
  enumeration type or to a non-overloaded enumeration
  literal.  In this case @code{S'Enum_Rep} is equivalent to
! @code{typ'Enum_Rep(S)} where @code{typ} is the type of the
  enumeration literal or object.
  
  The function returns the representation value for the given enumeration
! value.  This will be equal to value of the @code{Pos} attribute in the
  absence of an enumeration representation clause.  This is a static
  attribute (i.e.,:the result is static if the argument is static).
  
  @code{S'Enum_Rep} can also be used with integer types and objects,
  in which case it simply returns the integer value.  The reason for this
! is to allow it to be used for @code{(<>)} discrete formal arguments in
  a generic unit that can be instantiated with either enumeration types
! or integer types.  Note that if @code{Enum_Rep} is used on a modular
  type whose upper bound exceeds the upper bound of the largest signed
  integer type, and the argument is a variable, so that the universal
! integer calculation is done at run time, then the call to @code{Enum_Rep}
! 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{177}
  @section Attribute Enum_Val
  
  
*************** may raise @cite{Constraint_Error}.
*** 10136,10142 ****
  
  @geindex Enum_Val
  
! For every enumeration subtype @cite{S}, @code{S'Enum_Val} denotes a
  function with the following spec:
  
  @example
--- 10338,10344 ----
  
  @geindex Enum_Val
  
! For every enumeration subtype @code{S}, @code{S'Enum_Val} denotes a
  function with the following spec:
  
  @example
*************** function S'Enum_Val (Arg : <Universal_In
*** 10146,10157 ****
  The function returns the enumeration value whose representation matches the
  argument, or raises Constraint_Error if no enumeration literal of the type
  has the matching value.
! This will be equal to value of the @cite{Val} attribute in the
  absence of an enumeration representation clause.  This is a static
  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{172}
  @section Attribute Epsilon
  
  
--- 10348,10359 ----
  The function returns the enumeration value whose representation matches the
  argument, or raises Constraint_Error if no enumeration literal of the type
  has the matching value.
! This will be equal to value of the @code{Val} attribute in the
  absence of an enumeration representation clause.  This is a static
  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{178}
  @section Attribute Epsilon
  
  
*************** attribute (i.e., the result is static if
*** 10159,10226 ****
  
  @geindex Epsilon
  
! The @cite{Epsilon} attribute is provided for compatibility with Ada 83.  See
  the Ada 83 reference manual for an exact description of the semantics of
  this attribute.
  
  @node Attribute Fast_Math,Attribute Finalization_Size,Attribute Epsilon,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-fast-math}@anchor{173}
  @section Attribute Fast_Math
  
  
  @geindex Fast_Math
  
! @cite{Standard'Fast_Math} (@cite{Standard} is the only allowed
  prefix) yields a static Boolean value that is True if pragma
! @cite{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{174}
  @section Attribute Finalization_Size
  
  
  @geindex Finalization_Size
  
! The prefix of attribute @cite{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 @cite{universal_integer}.
  
! @cite{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 with no controlled parts.
  
  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{175}
  @section Attribute Fixed_Value
  
  
  @geindex Fixed_Value
  
! For every fixed-point type @cite{S}, @code{S'Fixed_Value} denotes a
  function with the following specification:
  
  @example
  function S'Fixed_Value (Arg : <Universal_Integer>) return S;
  @end example
  
! The value returned is the fixed-point value @cite{V} such that:
  
  @example
  V = Arg * S'Small
  @end example
  
  The effect is thus similar to first converting the argument to the
! integer type used to represent @cite{S}, and then doing an unchecked
  conversion to the fixed-point type.  The difference is
  that there are full range checks, to ensure that the result is in range.
  This attribute is primarily intended for use in implementation of the
  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{176}
  @section Attribute From_Any
  
  
--- 10361,10428 ----
  
  @geindex Epsilon
  
! The @code{Epsilon} attribute is provided for compatibility with Ada 83.  See
  the Ada 83 reference manual for an exact description of the semantics of
  this attribute.
  
  @node Attribute Fast_Math,Attribute Finalization_Size,Attribute Epsilon,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-fast-math}@anchor{179}
  @section Attribute Fast_Math
  
  
  @geindex Fast_Math
  
! @code{Standard'Fast_Math} (@code{Standard} is the only allowed
  prefix) yields a static Boolean value that is True if pragma
! @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{17a}
  @section Attribute Finalization_Size
  
  
  @geindex Finalization_Size
  
! 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
  class-wide type whose tag denotes a type with no controlled parts.
  
  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{17b}
  @section Attribute Fixed_Value
  
  
  @geindex Fixed_Value
  
! For every fixed-point type @code{S}, @code{S'Fixed_Value} denotes a
  function with the following specification:
  
  @example
  function S'Fixed_Value (Arg : <Universal_Integer>) return S;
  @end example
  
! The value returned is the fixed-point value @code{V} such that:
  
  @example
  V = Arg * S'Small
  @end example
  
  The effect is thus similar to first converting the argument to the
! integer type used to represent @code{S}, and then doing an unchecked
  conversion to the fixed-point type.  The difference is
  that there are full range checks, to ensure that the result is in range.
  This attribute is primarily intended for use in implementation of the
  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{17c}
  @section Attribute From_Any
  
  
*************** This internal attribute is used for the
*** 10230,10236 ****
  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{177}
  @section Attribute Has_Access_Values
  
  
--- 10432,10438 ----
  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{17d}
  @section Attribute Has_Access_Values
  
  
*************** stubs in the context of the Distributed
*** 10239,10245 ****
  
  @geindex Has_Access_Values
  
! The prefix of the @cite{Has_Access_Values} attribute is a type.  The result
  is a Boolean value which is True if the is an access type, or is a composite
  type with a component (at any nesting depth) that is an access type, and is
  False otherwise.
--- 10441,10447 ----
  
  @geindex Has_Access_Values
  
! The prefix of the @code{Has_Access_Values} attribute is a type.  The result
  is a Boolean value which is True if the is an access type, or is a composite
  type with a component (at any nesting depth) that is an access type, and is
  False otherwise.
*************** definitions.  If the attribute is applie
*** 10248,10254 ****
  indicates whether or not the corresponding actual type has access values.
  
  @node Attribute Has_Discriminants,Attribute Img,Attribute Has_Access_Values,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-has-discriminants}@anchor{178}
  @section Attribute Has_Discriminants
  
  
--- 10450,10456 ----
  indicates whether or not the corresponding actual type has access values.
  
  @node Attribute Has_Discriminants,Attribute Img,Attribute Has_Access_Values,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-has-discriminants}@anchor{17e}
  @section Attribute Has_Discriminants
  
  
*************** indicates whether or not the correspondi
*** 10257,10278 ****
  
  @geindex Has_Discriminants
  
! The prefix of the @cite{Has_Discriminants} attribute is a type.  The result
  is a Boolean value which is True if the type has discriminants, and False
  otherwise.  The intended use of this attribute is in conjunction with generic
  definitions.  If the attribute is applied to a generic private type, it
  indicates whether or not the corresponding actual type has discriminants.
  
  @node Attribute Img,Attribute Integer_Value,Attribute Has_Discriminants,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-img}@anchor{179}
  @section Attribute Img
  
  
  @geindex Img
  
! The @cite{Img} attribute differs from @cite{Image} in that it is applied
  directly to an object, and yields the same result as
! @cite{Image} for the subtype of the object.  This is convenient for
  debugging:
  
  @example
--- 10459,10480 ----
  
  @geindex Has_Discriminants
  
! The prefix of the @code{Has_Discriminants} attribute is a type.  The result
  is a Boolean value which is True if the type has discriminants, and False
  otherwise.  The intended use of this attribute is in conjunction with generic
  definitions.  If the attribute is applied to a generic private type, it
  indicates whether or not the corresponding actual type has discriminants.
  
  @node Attribute Img,Attribute Integer_Value,Attribute Has_Discriminants,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-img}@anchor{17f}
  @section Attribute Img
  
  
  @geindex Img
  
! The @code{Img} attribute differs from @code{Image} in that it is applied
  directly to an object, and yields the same result as
! @code{Image} for the subtype of the object.  This is convenient for
  debugging:
  
  @example
*************** has the same meaning as the more verbose
*** 10285,10319 ****
  Put_Line ("X = " & T'Image (X));
  @end example
  
! where @cite{T} is the (sub)type of the object @cite{X}.
  
! Note that technically, in analogy to @cite{Image},
! @cite{X'Img} returns a parameterless function
  that returns the appropriate string when called. This means that
! @cite{X'Img} can be renamed as a function-returning-string, or used
  in an instantiation as a function parameter.
  
  @node Attribute Integer_Value,Attribute Invalid_Value,Attribute Img,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-integer-value}@anchor{17a}
  @section Attribute Integer_Value
  
  
  @geindex Integer_Value
  
! For every integer type @cite{S}, @code{S'Integer_Value} denotes a
  function with the following spec:
  
  @example
  function S'Integer_Value (Arg : <Universal_Fixed>) return S;
  @end example
  
! The value returned is the integer value @cite{V}, such that:
  
  @example
  Arg = V * T'Small
  @end example
  
! where @cite{T} is the type of @cite{Arg}.
  The effect is thus similar to first doing an unchecked conversion from
  the fixed-point type to its corresponding implementation type, and then
  converting the result to the target integer type.  The difference is
--- 10487,10521 ----
  Put_Line ("X = " & T'Image (X));
  @end example
  
! where @code{T} is the (sub)type of the object @code{X}.
  
! Note that technically, in analogy to @code{Image},
! @code{X'Img} returns a parameterless function
  that returns the appropriate string when called. This means that
! @code{X'Img} can be renamed as a function-returning-string, or used
  in an instantiation as a function parameter.
  
  @node Attribute Integer_Value,Attribute Invalid_Value,Attribute Img,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-integer-value}@anchor{180}
  @section Attribute Integer_Value
  
  
  @geindex Integer_Value
  
! For every integer type @code{S}, @code{S'Integer_Value} denotes a
  function with the following spec:
  
  @example
  function S'Integer_Value (Arg : <Universal_Fixed>) return S;
  @end example
  
! The value returned is the integer value @code{V}, such that:
  
  @example
  Arg = V * T'Small
  @end example
  
! where @code{T} is the type of @code{Arg}.
  The effect is thus similar to first doing an unchecked conversion from
  the fixed-point type to its corresponding implementation type, and then
  converting the result to the target integer type.  The difference is
*************** This attribute is primarily intended for
*** 10322,10328 ****
  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{17b}
  @section Attribute Invalid_Value
  
  
--- 10524,10530 ----
  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{181}
  @section Attribute Invalid_Value
  
  
*************** including the ability to modify the valu
*** 10336,10342 ****
  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{17c}
  @section Attribute Iterable
  
  
--- 10538,10544 ----
  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{182}
  @section Attribute Iterable
  
  
*************** relevant environment variables at run ti
*** 10345,10351 ****
  Equivalent to Aspect Iterable.
  
  @node Attribute Large,Attribute Library_Level,Attribute Iterable,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-large}@anchor{17d}
  @section Attribute Large
  
  
--- 10547,10553 ----
  Equivalent to Aspect Iterable.
  
  @node Attribute Large,Attribute Library_Level,Attribute Iterable,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-large}@anchor{183}
  @section Attribute Large
  
  
*************** Equivalent to Aspect Iterable.
*** 10353,10370 ****
  
  @geindex Large
  
! The @cite{Large} attribute is provided for compatibility with Ada 83.  See
  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{17e}
  @section Attribute Library_Level
  
  
  @geindex Library_Level
  
! @cite{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
--- 10555,10572 ----
  
  @geindex Large
  
! The @code{Large} attribute is provided for compatibility with Ada 83.  See
  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{184}
  @section Attribute Library_Level
  
  
  @geindex Library_Level
  
! @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
*************** end Gen;
*** 10384,10400 ****
  @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{17f}
  @section Attribute Lock_Free
  
  
  @geindex Lock_Free
  
! @cite{P'Lock_Free}, where P is a protected object, returns True if a
! pragma @cite{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{180}
  @section Attribute Loop_Entry
  
  
--- 10586,10602 ----
  @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{185}
  @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{186}
  @section Attribute Loop_Entry
  
  
*************** Syntax:
*** 10406,10440 ****
  X'Loop_Entry [(loop_name)]
  @end example
  
! The @cite{Loop_Entry} attribute is used to refer to the value that an
  expression had upon entry to a given loop in much the same way that the
! @cite{Old} attribute in a subprogram postcondition can be used to refer
  to the value an expression had upon entry to the subprogram. The
  relevant loop is either identified by the given loop name, or it is the
  innermost enclosing loop when no loop name is given.
  
! A @cite{Loop_Entry} attribute can only occur within a
! @cite{Loop_Variant} or @cite{Loop_Invariant} pragma. A common use of
! @cite{Loop_Entry} is to compare the current value of objects with their
! initial value at loop entry, in a @cite{Loop_Invariant} pragma.
  
! The effect of using @cite{X'Loop_Entry} is the same as declaring
! a constant initialized with the initial value of @cite{X} at loop
  entry. This copy is not performed if the loop is not entered, or if the
  corresponding pragmas are ignored or disabled.
  
  @node Attribute Machine_Size,Attribute Mantissa,Attribute Loop_Entry,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-machine-size}@anchor{181}
  @section Attribute Machine_Size
  
  
  @geindex Machine_Size
  
! This attribute is identical to the @cite{Object_Size} attribute.  It is
  provided for compatibility with the DEC Ada 83 attribute of this name.
  
  @node Attribute Mantissa,Attribute Maximum_Alignment,Attribute Machine_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-mantissa}@anchor{182}
  @section Attribute Mantissa
  
  
--- 10608,10642 ----
  X'Loop_Entry [(loop_name)]
  @end example
  
! The @code{Loop_Entry} attribute is used to refer to the value that an
  expression had upon entry to a given loop in much the same way that the
! @code{Old} attribute in a subprogram postcondition can be used to refer
  to the value an expression had upon entry to the subprogram. The
  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
  entry. This copy is not performed if the loop is not entered, or if the
  corresponding pragmas are ignored or disabled.
  
  @node Attribute Machine_Size,Attribute Mantissa,Attribute Loop_Entry,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-machine-size}@anchor{187}
  @section Attribute Machine_Size
  
  
  @geindex Machine_Size
  
! This attribute is identical to the @code{Object_Size} attribute.  It is
  provided for compatibility with the DEC Ada 83 attribute of this name.
  
  @node Attribute Mantissa,Attribute Maximum_Alignment,Attribute Machine_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-mantissa}@anchor{188}
  @section Attribute Mantissa
  
  
*************** provided for compatibility with the DEC
*** 10442,10453 ****
  
  @geindex Mantissa
  
! The @cite{Mantissa} attribute is provided for compatibility with Ada 83.  See
  the Ada 83 reference manual for an exact description of the semantics of
  this attribute.
  
  @node Attribute Maximum_Alignment,Attribute Mechanism_Code,Attribute Mantissa,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-maximum-alignment}@anchor{183}@anchor{gnat_rm/implementation_defined_attributes id2}@anchor{184}
  @section Attribute Maximum_Alignment
  
  
--- 10644,10655 ----
  
  @geindex Mantissa
  
! The @code{Mantissa} attribute is provided for compatibility with Ada 83.  See
  the Ada 83 reference manual for an exact description of the semantics of
  this attribute.
  
  @node Attribute Maximum_Alignment,Attribute Mechanism_Code,Attribute Mantissa,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-maximum-alignment}@anchor{189}@anchor{gnat_rm/implementation_defined_attributes id2}@anchor{18a}
  @section Attribute Maximum_Alignment
  
  
*************** this attribute.
*** 10456,10469 ****
  
  @geindex Maximum_Alignment
  
! @cite{Standard'Maximum_Alignment} (@cite{Standard} is the only
  permissible prefix) provides the maximum useful alignment value for the
  target.  This is a static value that can be used to specify the alignment
  for an object, guaranteeing that it is properly aligned in all
  cases.
  
  @node Attribute Mechanism_Code,Attribute Null_Parameter,Attribute Maximum_Alignment,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-mechanism-code}@anchor{185}
  @section Attribute Mechanism_Code
  
  
--- 10658,10671 ----
  
  @geindex Maximum_Alignment
  
! @code{Standard'Maximum_Alignment} (@code{Standard} is the only
  permissible prefix) provides the maximum useful alignment value for the
  target.  This is a static value that can be used to specify the alignment
  for an object, guaranteeing that it is properly aligned in all
  cases.
  
  @node Attribute Mechanism_Code,Attribute Null_Parameter,Attribute Maximum_Alignment,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-mechanism-code}@anchor{18b}
  @section Attribute Mechanism_Code
  
  
*************** cases.
*** 10475,10485 ****
  
  @geindex Mechanism_Code
  
! @code{function'Mechanism_Code} yields an integer code for the
! mechanism used for the result of function, and
! @code{subprogram'Mechanism_Code (n)} yields the mechanism
! used for formal parameter number @cite{n} (a static integer value with 1
! meaning the first parameter) of @cite{subprogram}.  The code returned is:
  
  
  @table @asis
--- 10677,10687 ----
  
  @geindex Mechanism_Code
  
! @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
*************** by reference
*** 10494,10500 ****
  @end table
  
  @node Attribute Null_Parameter,Attribute Object_Size,Attribute Mechanism_Code,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-null-parameter}@anchor{186}
  @section Attribute Null_Parameter
  
  
--- 10696,10702 ----
  @end table
  
  @node Attribute Null_Parameter,Attribute Object_Size,Attribute Mechanism_Code,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-null-parameter}@anchor{18c}
  @section Attribute Null_Parameter
  
  
*************** by reference
*** 10504,10510 ****
  @geindex Null_Parameter
  
  A reference @code{T'Null_Parameter} denotes an imaginary object of
! type or subtype @cite{T} allocated at machine address zero.  The attribute
  is allowed only as the default expression of a formal parameter, or as
  an actual expression of a subprogram call.  In either case, the
  subprogram must be imported.
--- 10706,10712 ----
  @geindex Null_Parameter
  
  A reference @code{T'Null_Parameter} denotes an imaginary object of
! type or subtype @code{T} allocated at machine address zero.  The attribute
  is allowed only as the default expression of a formal parameter, or as
  an actual expression of a subprogram call.  In either case, the
  subprogram must be imported.
*************** default).
*** 10515,10525 ****
  
  This capability is needed to specify that a zero address should be
  passed for a record or other composite object passed by reference.
! There is no way of indicating this without the @cite{Null_Parameter}
  attribute.
  
  @node Attribute Object_Size,Attribute Old,Attribute Null_Parameter,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-object-size}@anchor{139}@anchor{gnat_rm/implementation_defined_attributes id3}@anchor{187}
  @section Attribute Object_Size
  
  
--- 10717,10727 ----
  
  This capability is needed to specify that a zero address should be
  passed for a record or other composite object passed by reference.
! There is no way of indicating this without the @code{Null_Parameter}
  attribute.
  
  @node Attribute Object_Size,Attribute Old,Attribute Null_Parameter,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-object-size}@anchor{13f}@anchor{gnat_rm/implementation_defined_attributes id3}@anchor{18d}
  @section Attribute Object_Size
  
  
*************** attribute.
*** 10531,10538 ****
  The size of an object is not necessarily the same as the size of the type
  of an object.  This is because by default object sizes are increased to be
  a multiple of the alignment of the object.  For example,
! @cite{Natural'Size} is
! 31, but by default objects of type @cite{Natural} will have a size of 32 bits.
  Similarly, a record containing an integer and a character:
  
  @example
--- 10733,10740 ----
  The size of an object is not necessarily the same as the size of the type
  of an object.  This is because by default object sizes are increased to be
  a multiple of the alignment of the object.  For example,
! @code{Natural'Size} is
! 31, but by default objects of type @code{Natural} will have a size of 32 bits.
  Similarly, a record containing an integer and a character:
  
  @example
*************** type Rec is record
*** 10542,10548 ****
  end record;
  @end example
  
! will have a size of 40 (that is @cite{Rec'Size} will be 40).  The
  alignment will be 4, because of the
  integer field, and so the default size of record objects for this type
  will be 64 (8 bytes).
--- 10744,10750 ----
  end record;
  @end example
  
! will have a size of 40 (that is @code{Rec'Size} will be 40).  The
  alignment will be 4, because of the
  integer field, and so the default size of record objects for this type
  will be 64 (8 bytes).
*************** an object size of 40 can be explicitly s
*** 10554,10560 ****
  A consequence of this capability is that different object sizes can be
  given to subtypes that would otherwise be considered in Ada to be
  statically matching.  But it makes no sense to consider such subtypes
! as statically matching.  Consequently, in @cite{GNAT} we add a rule
  to the static matching rules that requires object sizes to match.
  Consider this example:
  
--- 10756,10762 ----
  A consequence of this capability is that different object sizes can be
  given to subtypes that would otherwise be considered in Ada to be
  statically matching.  But it makes no sense to consider such subtypes
! as statically matching.  Consequently, GNAT adds a rule
  to the static matching rules that requires object sizes to match.
  Consider this example:
  
*************** Consider this example:
*** 10579,10610 ****
  @end example
  
  In the absence of lines 5 and 6,
! types @cite{R1} and @cite{R2} statically match and
  hence the conversion on line 12 is legal. But since lines 5 and 6
! cause the object sizes to differ, @cite{GNAT} considers that types
! @cite{R1} and @cite{R2} are not statically matching, and line 12
  generates the diagnostic shown above.
  
  Similar additional checks are performed in other contexts requiring
  statically matching subtypes.
  
  @node Attribute Old,Attribute Passed_By_Reference,Attribute Object_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-old}@anchor{188}
  @section Attribute Old
  
  
  @geindex Old
  
! In addition to the usage of @cite{Old} defined in the Ada 2012 RM (usage
! within @cite{Post} aspect), GNAT also permits the use of this attribute
! in implementation defined pragmas @cite{Postcondition},
! @cite{Contract_Cases} and @cite{Test_Case}. Also usages of
! @cite{Old} which would be illegal according to the Ada 2012 RM
  definition are allowed under control of
! implementation defined pragma @cite{Unevaluated_Use_Of_Old}.
  
  @node Attribute Passed_By_Reference,Attribute Pool_Address,Attribute Old,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-passed-by-reference}@anchor{189}
  @section Attribute Passed_By_Reference
  
  
--- 10781,10812 ----
  @end example
  
  In the absence of lines 5 and 6,
! types @code{R1} and @code{R2} statically match and
  hence the conversion on line 12 is legal. But since lines 5 and 6
! cause the object sizes to differ, GNAT considers that types
! @code{R1} and @code{R2} are not statically matching, and line 12
  generates the diagnostic shown above.
  
  Similar additional checks are performed in other contexts requiring
  statically matching subtypes.
  
  @node Attribute Old,Attribute Passed_By_Reference,Attribute Object_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-old}@anchor{18e}
  @section Attribute Old
  
  
  @geindex Old
  
! In addition to the usage of @code{Old} defined in the Ada 2012 RM (usage
! within @code{Post} aspect), GNAT also permits the use of this attribute
! in implementation defined pragmas @code{Postcondition},
! @code{Contract_Cases} and @code{Test_Case}. Also usages of
! @code{Old} which would be illegal according to the Ada 2012 RM
  definition are allowed under control of
! implementation defined pragma @code{Unevaluated_Use_Of_Old}.
  
  @node Attribute Passed_By_Reference,Attribute Pool_Address,Attribute Old,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-passed-by-reference}@anchor{18f}
  @section Attribute Passed_By_Reference
  
  
*************** implementation defined pragma @cite{Unev
*** 10613,10626 ****
  
  @geindex Passed_By_Reference
  
! @code{type'Passed_By_Reference} for any subtype @cite{type} returns
! a value of type @cite{Boolean} value that is @cite{True} if the type is
! normally passed by reference and @cite{False} if the type is normally
! passed by copy in calls.  For scalar types, the result is always @cite{False}
  and is static.  For non-scalar types, the result is nonstatic.
  
  @node Attribute Pool_Address,Attribute Range_Length,Attribute Passed_By_Reference,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-pool-address}@anchor{18a}
  @section Attribute Pool_Address
  
  
--- 10815,10828 ----
  
  @geindex Passed_By_Reference
  
! @code{typ'Passed_By_Reference} for any subtype @cite{typ} returns
! a value of type @code{Boolean} value that is @code{True} if the type is
! normally passed by reference and @code{False} if the type is normally
! passed by copy in calls.  For scalar types, the result is always @code{False}
  and is static.  For non-scalar types, the result is nonstatic.
  
  @node Attribute Pool_Address,Attribute Range_Length,Attribute Passed_By_Reference,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-pool-address}@anchor{190}
  @section Attribute Pool_Address
  
  
*************** and is static.  For non-scalar types, th
*** 10629,10635 ****
  
  @geindex Pool_Address
  
! @code{X'Pool_Address} for any object @cite{X} returns the address
  of X within its storage pool. This is the same as
  @code{X'Address}, except that for an unconstrained array whose
  bounds are allocated just before the first component,
--- 10831,10837 ----
  
  @geindex Pool_Address
  
! @code{X'Pool_Address} for any object @code{X} returns the address
  of X within its storage pool. This is the same as
  @code{X'Address}, except that for an unconstrained array whose
  bounds are allocated just before the first component,
*************** Here, we are interpreting 'storage pool'
*** 10641,10664 ****
  @code{wherever the object is allocated}, which could be a
  user-defined storage pool,
  the global heap, on the stack, or in a static memory area.
! For an object created by @cite{new}, @code{Ptr.all'Pool_Address} is
! what is passed to @cite{Allocate} and returned from @cite{Deallocate}.
  
  @node Attribute Range_Length,Attribute Restriction_Set,Attribute Pool_Address,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-range-length}@anchor{18b}
  @section Attribute Range_Length
  
  
  @geindex Range_Length
  
! @code{type'Range_Length} for any discrete type @cite{type} yields
  the number of values represented by the subtype (zero for a null
! range).  The result is static for static subtypes.  @cite{Range_Length}
  applied to the index subtype of a one dimensional array always gives the
! same result as @cite{Length} applied to the array itself.
  
  @node Attribute Restriction_Set,Attribute Result,Attribute Range_Length,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-restriction-set}@anchor{18c}
  @section Attribute Restriction_Set
  
  
--- 10843,10866 ----
  @code{wherever the object is allocated}, which could be a
  user-defined storage pool,
  the global heap, on the stack, or in a static memory area.
! For an object created by @code{new}, @code{Ptr.all'Pool_Address} is
! what is passed to @code{Allocate} and returned from @code{Deallocate}.
  
  @node Attribute Range_Length,Attribute Restriction_Set,Attribute Pool_Address,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-range-length}@anchor{191}
  @section Attribute Range_Length
  
  
  @geindex Range_Length
  
! @code{typ'Range_Length} for any discrete type @cite{typ} yields
  the number of values represented by the subtype (zero for a null
! range).  The result is static for static subtypes.  @code{Range_Length}
  applied to the index subtype of a one dimensional array always gives the
! same result as @code{Length} applied to the array itself.
  
  @node Attribute Restriction_Set,Attribute Result,Attribute Range_Length,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-restriction-set}@anchor{192}
  @section Attribute Restriction_Set
  
  
*************** System'Restriction_Set (No_Dependence =>
*** 10682,10688 ****
  In the case of the first form, the only restriction names
  allowed are parameterless restrictions that are checked
  for consistency at bind time. For a complete list see the
! subtype @cite{System.Rident.Partition_Boolean_Restrictions}.
  
  The result returned is True if the restriction is known to
  be in effect, and False if the restriction is known not to
--- 10884,10890 ----
  In the case of the first form, the only restriction names
  allowed are parameterless restrictions that are checked
  for consistency at bind time. For a complete list see the
! subtype @code{System.Rident.Partition_Boolean_Restrictions}.
  
  The result returned is True if the restriction is known to
  be in effect, and False if the restriction is known not to
*************** Restrictions pragma, they are not analyz
*** 10728,10734 ****
  so they do not have a type.
  
  @node Attribute Result,Attribute Safe_Emax,Attribute Restriction_Set,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-result}@anchor{18d}
  @section Attribute Result
  
  
--- 10930,10936 ----
  so they do not have a type.
  
  @node Attribute Result,Attribute Safe_Emax,Attribute Restriction_Set,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-result}@anchor{193}
  @section Attribute Result
  
  
*************** For a further discussion of the use of t
*** 10741,10747 ****
  see the description of pragma Postcondition.
  
  @node Attribute Safe_Emax,Attribute Safe_Large,Attribute Result,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-safe-emax}@anchor{18e}
  @section Attribute Safe_Emax
  
  
--- 10943,10949 ----
  see the description of pragma Postcondition.
  
  @node Attribute Safe_Emax,Attribute Safe_Large,Attribute Result,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-safe-emax}@anchor{194}
  @section Attribute Safe_Emax
  
  
*************** see the description of pragma Postcondit
*** 10749,10760 ****
  
  @geindex Safe_Emax
  
! The @cite{Safe_Emax} attribute is provided for compatibility with Ada 83.  See
  the Ada 83 reference manual for an exact description of the semantics of
  this attribute.
  
  @node Attribute Safe_Large,Attribute Safe_Small,Attribute Safe_Emax,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-safe-large}@anchor{18f}
  @section Attribute Safe_Large
  
  
--- 10951,10962 ----
  
  @geindex Safe_Emax
  
! The @code{Safe_Emax} attribute is provided for compatibility with Ada 83.  See
  the Ada 83 reference manual for an exact description of the semantics of
  this attribute.
  
  @node Attribute Safe_Large,Attribute Safe_Small,Attribute Safe_Emax,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-safe-large}@anchor{195}
  @section Attribute Safe_Large
  
  
*************** this attribute.
*** 10762,10773 ****
  
  @geindex Safe_Large
  
! The @cite{Safe_Large} attribute is provided for compatibility with Ada 83.  See
  the Ada 83 reference manual for an exact description of the semantics of
  this attribute.
  
  @node Attribute Safe_Small,Attribute Scalar_Storage_Order,Attribute Safe_Large,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-safe-small}@anchor{190}
  @section Attribute Safe_Small
  
  
--- 10964,10975 ----
  
  @geindex Safe_Large
  
! The @code{Safe_Large} attribute is provided for compatibility with Ada 83.  See
  the Ada 83 reference manual for an exact description of the semantics of
  this attribute.
  
  @node Attribute Safe_Small,Attribute Scalar_Storage_Order,Attribute Safe_Large,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-safe-small}@anchor{196}
  @section Attribute Safe_Small
  
  
*************** this attribute.
*** 10775,10786 ****
  
  @geindex Safe_Small
  
! The @cite{Safe_Small} attribute is provided for compatibility with Ada 83.  See
  the Ada 83 reference manual for an exact description of the semantics of
  this attribute.
  
  @node Attribute Scalar_Storage_Order,Attribute Simple_Storage_Pool,Attribute Safe_Small,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes id4}@anchor{191}@anchor{gnat_rm/implementation_defined_attributes attribute-scalar-storage-order}@anchor{146}
  @section Attribute Scalar_Storage_Order
  
  
--- 10977,10988 ----
  
  @geindex Safe_Small
  
! The @code{Safe_Small} attribute is provided for compatibility with Ada 83.  See
  the Ada 83 reference manual for an exact description of the semantics of
  this attribute.
  
  @node Attribute Scalar_Storage_Order,Attribute Simple_Storage_Pool,Attribute Safe_Small,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes id4}@anchor{197}@anchor{gnat_rm/implementation_defined_attributes attribute-scalar-storage-order}@anchor{14c}
  @section Attribute Scalar_Storage_Order
  
  
*************** this attribute.
*** 10790,10797 ****
  
  @geindex Scalar_Storage_Order
  
! For every array or record type @cite{S}, the representation attribute
! @cite{Scalar_Storage_Order} denotes the order in which storage elements
  that make up scalar components are ordered within S. The value given must
  be a static expression of type System.Bit_Order. The following is an example
  of the use of this feature:
--- 10992,10999 ----
  
  @geindex Scalar_Storage_Order
  
! For every array or record type @code{S}, the representation attribute
! @code{Scalar_Storage_Order} denotes the order in which storage elements
  that make up scalar components are ordered within S. The value given must
  be a static expression of type System.Bit_Order. The following is an example
  of the use of this feature:
*************** for Date'Scalar_Storage_Order use System
*** 10828,10840 ****
  --  the former is used.
  @end example
  
! Other properties are as for standard representation attribute @cite{Bit_Order},
! as defined by Ada RM 13.5.3(4). The default is @cite{System.Default_Bit_Order}.
  
! For a record type @cite{T}, if @code{T'Scalar_Storage_Order} is
  specified explicitly, it shall be equal to @code{T'Bit_Order}. Note:
! this means that if a @cite{Scalar_Storage_Order} attribute definition
! clause is not confirming, then the type's @cite{Bit_Order} shall be
  specified explicitly and set to the same value.
  
  Derived types inherit an explicitly set scalar storage order from their parent
--- 11030,11042 ----
  --  the former is used.
  @end example
  
! Other properties are as for standard representation attribute @code{Bit_Order},
! as defined by Ada RM 13.5.3(4). The default is @code{System.Default_Bit_Order}.
  
! For a record type @code{T}, if @code{T'Scalar_Storage_Order} is
  specified explicitly, it shall be equal to @code{T'Bit_Order}. Note:
! this means that if a @code{Scalar_Storage_Order} attribute definition
! clause is not confirming, then the type's @code{Bit_Order} shall be
  specified explicitly and set to the same value.
  
  Derived types inherit an explicitly set scalar storage order from their parent
*************** types. This may be overridden for the de
*** 10842,10859 ****
  storage order for the derived type. For a record extension, the derived type
  must have the same scalar storage order as the parent type.
  
! A component of a record or array type that is a bit-packed array, or that
! does not start on a byte boundary, must have the same scalar storage order
! as the enclosing record or array type.
  
! No component of a type that has an explicit @cite{Scalar_Storage_Order}
  attribute definition may be aliased.
  
! A confirming @cite{Scalar_Storage_Order} attribute definition clause (i.e.
! with a value equal to @cite{System.Default_Bit_Order}) has no effect.
  
  If the opposite storage order is specified, then whenever the value of
! a scalar component of an object of type @cite{S} is read, the storage
  elements of the enclosing machine scalar are first reversed (before
  retrieving the component value, possibly applying some shift and mask
  operatings on the enclosing machine scalar), and the opposite operation
--- 11044,11062 ----
  storage order for the derived type. For a record extension, the derived type
  must have the same scalar storage order as the parent type.
  
! A component of a record type that is itself a record or an array and that does
! not start and end on a byte boundary must have have the same scalar storage
! order as the record type. A component of a bit-packed array type that is itself
! a record or an array must have the same scalar storage order as the array type.
  
! No component of a type that has an explicit @code{Scalar_Storage_Order}
  attribute definition may be aliased.
  
! A confirming @code{Scalar_Storage_Order} attribute definition clause (i.e.
! with a value equal to @code{System.Default_Bit_Order}) has no effect.
  
  If the opposite storage order is specified, then whenever the value of
! a scalar component of an object of type @code{S} is read, the storage
  elements of the enclosing machine scalar are first reversed (before
  retrieving the component value, possibly applying some shift and mask
  operatings on the enclosing machine scalar), and the opposite operation
*************** are relaxed. Instead, the following rule
*** 10867,10873 ****
  
  @item 
  the underlying storage elements are those at positions
! @cite{(position + first_bit / storage_element_size) .. (position + (last_bit + storage_element_size - 1) / storage_element_size)}
  
  @item 
  the sequence of underlying storage elements shall have
--- 11070,11076 ----
  
  @item 
  the underlying storage elements are those at positions
! @code{(position + first_bit / storage_element_size) .. (position + (last_bit + storage_element_size - 1) / storage_element_size)}
  
  @item 
  the sequence of underlying storage elements shall have
*************** a size no greater than the largest machi
*** 10876,10883 ****
  @item 
  the enclosing machine scalar is defined as the smallest machine
  scalar starting at a position no greater than
! @cite{position + first_bit / storage_element_size} and covering
! storage elements at least up to @cite{position + (last_bit + storage_element_size - 1) / storage_element_size}
  
  @item 
  the position of the component is interpreted relative to that machine
--- 11079,11086 ----
  @item 
  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
*************** scalar.
*** 10887,10896 ****
  If no scalar storage order is specified for a type (either directly, or by
  inheritance in the case of a derived type), then the default is normally
  the native ordering of the target, but this default can be overridden using
! pragma @cite{Default_Scalar_Storage_Order}.
  
! Note that if a component of @cite{T} is itself of a record or array type,
! the specfied @cite{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.
  
--- 11090,11099 ----
  If no scalar storage order is specified for a type (either directly, or by
  inheritance in the case of a derived type), then the default is normally
  the native ordering of the target, but this default can be overridden using
! pragma @code{Default_Scalar_Storage_Order}.
  
! Note that 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.
  
*************** representation. It has no effect on the
*** 10899,10905 ****
  attributes.
  
  @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{de}@anchor{gnat_rm/implementation_defined_attributes id5}@anchor{192}
  @section Attribute Simple_Storage_Pool
  
  
--- 11102,11108 ----
  attributes.
  
  @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{198}
  @section Attribute Simple_Storage_Pool
  
  
*************** attributes.
*** 10910,10917 ****
  
  @geindex Simple_Storage_Pool
  
! For every nonformal, nonderived access-to-object type @cite{Acc}, the
! representation attribute @cite{Simple_Storage_Pool} may be specified
  via an attribute_definition_clause (or by specifying the equivalent aspect):
  
  @example
--- 11113,11120 ----
  
  @geindex Simple_Storage_Pool
  
! For every nonformal, nonderived access-to-object type @code{Acc}, the
! representation attribute @code{Simple_Storage_Pool} may be specified
  via an attribute_definition_clause (or by specifying the equivalent aspect):
  
  @example
*************** for Acc'Simple_Storage_Pool use My_Pool;
*** 10923,10929 ****
  @end example
  
  The name given in an attribute_definition_clause for the
! @cite{Simple_Storage_Pool} attribute shall denote a variable of
  a 'simple storage pool type' (see pragma @cite{Simple_Storage_Pool_Type}).
  
  The use of this attribute is only allowed for a prefix denoting a type
--- 11126,11132 ----
  @end example
  
  The name given in an attribute_definition_clause for the
! @code{Simple_Storage_Pool} attribute shall denote a variable of
  a 'simple storage pool type' (see pragma @cite{Simple_Storage_Pool_Type}).
  
  The use of this attribute is only allowed for a prefix denoting a type
*************** for which it has been specified. The typ
*** 10931,10968 ****
  of the variable specified as the simple storage pool of the access type,
  and the attribute denotes that variable.
  
! It is illegal to specify both @cite{Storage_Pool} and @cite{Simple_Storage_Pool}
  for the same access type.
  
! If the @cite{Simple_Storage_Pool} attribute has been specified for an access
! type, then applying the @cite{Storage_Pool} attribute to the type is flagged
! with a warning and its evaluation raises the exception @cite{Program_Error}.
  
  If the Simple_Storage_Pool attribute has been specified for an access
! type @cite{S}, then the evaluation of the attribute @code{S'Storage_Size}
  returns the result of calling @code{Storage_Size (S'Simple_Storage_Pool)},
  which is intended to indicate the number of storage elements reserved for
  the simple storage pool. If the Storage_Size function has not been defined
  for the simple storage pool type, then this attribute returns zero.
  
! If an access type @cite{S} has a specified simple storage pool of type
! @cite{SSP}, then the evaluation of an allocator for that access type calls
! the primitive @cite{Allocate} procedure for type @cite{SSP}, passing
  @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
! @cite{simple storage pool} substituted for @cite{storage pool}.
  
! If an access type @cite{S} has a specified simple storage pool of type
! @cite{SSP}, then a call to an instance of the @cite{Ada.Unchecked_Deallocation}
! for that access type invokes the primitive @cite{Deallocate} procedure
! for type @cite{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 Storage_Unit,Attribute Simple_Storage_Pool,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-small}@anchor{193}
  @section Attribute Small
  
  
--- 11134,11171 ----
  of the variable specified as the simple storage pool of the access type,
  and the attribute denotes that variable.
  
! It is illegal to specify both @code{Storage_Pool} and @code{Simple_Storage_Pool}
  for the same access type.
  
! If the @code{Simple_Storage_Pool} attribute has been specified for an access
! type, then applying the @code{Storage_Pool} attribute to the type is flagged
! with a warning and its evaluation raises the exception @code{Program_Error}.
  
  If the Simple_Storage_Pool attribute has been specified for an access
! type @code{S}, then the evaluation of the attribute @code{S'Storage_Size}
  returns the result of calling @code{Storage_Size (S'Simple_Storage_Pool)},
  which is intended to indicate the number of storage elements reserved for
  the simple storage pool. If the Storage_Size function has not been defined
  for the simple storage pool type, then this attribute returns zero.
  
! If an access type @code{S} has a specified simple storage pool of type
! @code{SSP}, then the evaluation of an allocator for that access type calls
! the primitive @code{Allocate} procedure for type @code{SSP}, passing
  @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}
! for that access type invokes the primitive @code{Deallocate} procedure
! 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 Storage_Unit,Attribute Simple_Storage_Pool,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-small}@anchor{199}
  @section Attribute Small
  
  
*************** term 'simple storage pool' is substitute
*** 10970,10976 ****
  
  @geindex Small
  
! The @cite{Small} attribute is defined in Ada 95 (and Ada 2005) only for
  fixed-point types.
  GNAT also allows this attribute to be applied to floating-point types
  for compatibility with Ada 83.  See
--- 11173,11179 ----
  
  @geindex Small
  
! The @code{Small} attribute is defined in Ada 95 (and Ada 2005) only for
  fixed-point types.
  GNAT also allows this attribute to be applied to floating-point types
  for compatibility with Ada 83.  See
*************** the Ada 83 reference manual for an exact
*** 10978,10994 ****
  this attribute when applied to floating-point types.
  
  @node Attribute Storage_Unit,Attribute Stub_Type,Attribute Small,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-storage-unit}@anchor{194}
  @section Attribute Storage_Unit
  
  
  @geindex Storage_Unit
  
! @cite{Standard'Storage_Unit} (@cite{Standard} is the only permissible
! prefix) provides the same value as @cite{System.Storage_Unit}.
  
  @node Attribute Stub_Type,Attribute System_Allocator_Alignment,Attribute Storage_Unit,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-stub-type}@anchor{195}
  @section Attribute Stub_Type
  
  
--- 11181,11197 ----
  this attribute when applied to floating-point types.
  
  @node Attribute Storage_Unit,Attribute Stub_Type,Attribute Small,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-storage-unit}@anchor{19a}
  @section Attribute Storage_Unit
  
  
  @geindex Storage_Unit
  
! @code{Standard'Storage_Unit} (@code{Standard} is the only permissible
! prefix) provides the same value as @code{System.Storage_Unit}.
  
  @node Attribute Stub_Type,Attribute System_Allocator_Alignment,Attribute Storage_Unit,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-stub-type}@anchor{19b}
  @section Attribute Stub_Type
  
  
*************** call on any dispatching operation of suc
*** 11003,11018 ****
  remote call, if necessary, using the information in the stub object
  to locate the target partition, etc.
  
! For a prefix @cite{T} that denotes a remote access-to-classwide type,
! @cite{T'Stub_Type} denotes the type of the corresponding stub objects.
  
! By construction, the layout of @cite{T'Stub_Type} is identical to that of
! type @cite{RACW_Stub_Type} declared in the internal implementation-defined
! unit @cite{System.Partition_Interface}. Use of this attribute will create
  an implicit dependency on this unit.
  
  @node Attribute System_Allocator_Alignment,Attribute Target_Name,Attribute Stub_Type,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-system-allocator-alignment}@anchor{196}
  @section Attribute System_Allocator_Alignment
  
  
--- 11206,11221 ----
  remote call, if necessary, using the information in the stub object
  to locate the target partition, etc.
  
! For a prefix @code{T} that denotes a remote access-to-classwide type,
! @code{T'Stub_Type} denotes the type of the corresponding stub objects.
  
! By construction, the layout of @code{T'Stub_Type} is identical to that of
! type @code{RACW_Stub_Type} declared in the internal implementation-defined
! unit @code{System.Partition_Interface}. Use of this attribute will create
  an implicit dependency on this unit.
  
  @node Attribute System_Allocator_Alignment,Attribute Target_Name,Attribute Stub_Type,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-system-allocator-alignment}@anchor{19c}
  @section Attribute System_Allocator_Alignment
  
  
*************** an implicit dependency on this unit.
*** 11021,11027 ****
  
  @geindex System_Allocator_Alignment
  
! @cite{Standard'System_Allocator_Alignment} (@cite{Standard} is the only
  permissible 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
--- 11224,11230 ----
  
  @geindex System_Allocator_Alignment
  
! @code{Standard'System_Allocator_Alignment} (@code{Standard} is the only
  permissible 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
*** 11029,11057 ****
  alignment request is larger than this value.
  
  @node Attribute Target_Name,Attribute To_Address,Attribute System_Allocator_Alignment,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-target-name}@anchor{197}
  @section Attribute Target_Name
  
  
  @geindex Target_Name
  
! @cite{Standard'Target_Name} (@cite{Standard} is the only permissible
  prefix) provides a static string value that identifies the target
  for the current compilation. For GCC implementations, this is the
  standard gcc target name without the terminating slash (for
  example, GNAT 5.0 on windows yields "i586-pc-mingw32msv").
  
  @node Attribute To_Address,Attribute To_Any,Attribute Target_Name,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-to-address}@anchor{198}
  @section Attribute To_Address
  
  
  @geindex To_Address
  
! The @cite{System'To_Address}
! (@cite{System} is the only permissible prefix)
  denotes a function identical to
! @cite{System.Storage_Elements.To_Address} except that
  it is a static attribute.  This means that if its argument is
  a static expression, then the result of the attribute is a
  static expression.  This means that such an expression can be
--- 11232,11260 ----
  alignment request is larger than this value.
  
  @node Attribute Target_Name,Attribute To_Address,Attribute System_Allocator_Alignment,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-target-name}@anchor{19d}
  @section Attribute Target_Name
  
  
  @geindex Target_Name
  
! @code{Standard'Target_Name} (@code{Standard} is the only permissible
  prefix) provides a static string value that identifies the target
  for the current compilation. For GCC implementations, this is the
  standard gcc target name without the terminating slash (for
  example, GNAT 5.0 on windows yields "i586-pc-mingw32msv").
  
  @node Attribute To_Address,Attribute To_Any,Attribute Target_Name,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-to-address}@anchor{19e}
  @section Attribute To_Address
  
  
  @geindex To_Address
  
! The @code{System'To_Address}
! (@code{System} is the only permissible prefix)
  denotes a function identical to
! @code{System.Storage_Elements.To_Address} except that
  it is a static attribute.  This means that if its argument is
  a static expression, then the result of the attribute is a
  static expression.  This means that such an expression can be
*************** used in contexts (e.g., preelaborable pa
*** 11059,11071 ****
  static expression and where the function call could not be used
  (since the function call is always nonstatic, even if its
  argument is static). The argument must be in the range
! -(2**(m-1) .. 2**m-1, where m is the memory size
  (typically 32 or 64). Negative values are intepreted in a
  modular manner (e.g., -1 means the same as 16#FFFF_FFFF# on
  a 32 bits machine).
  
  @node Attribute To_Any,Attribute Type_Class,Attribute To_Address,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-to-any}@anchor{199}
  @section Attribute To_Any
  
  
--- 11262,11274 ----
  static expression and where the function call could not be used
  (since the function call is always nonstatic, even if its
  argument is static). The argument must be in the range
! -(2**(m-1)) .. 2**m-1, where m is the memory size
  (typically 32 or 64). Negative values are intepreted in a
  modular manner (e.g., -1 means the same as 16#FFFF_FFFF# on
  a 32 bits machine).
  
  @node Attribute To_Any,Attribute Type_Class,Attribute To_Address,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-to-any}@anchor{19f}
  @section Attribute To_Any
  
  
*************** This internal attribute is used for the
*** 11075,11089 ****
  stubs in the context of the Distributed Systems Annex.
  
  @node Attribute Type_Class,Attribute Type_Key,Attribute To_Any,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-type-class}@anchor{19a}
  @section Attribute Type_Class
  
  
  @geindex Type_Class
  
! @code{type'Type_Class} for any type or subtype @cite{type} yields
! the value of the type class for the full type of @cite{type}.  If
! @cite{type} is a generic formal type, the value is the value for the
  corresponding actual subtype.  The value of this attribute is of type
  @code{System.Aux_DEC.Type_Class}, which has the following definition:
  
--- 11278,11292 ----
  stubs in the context of the Distributed Systems Annex.
  
  @node Attribute Type_Class,Attribute Type_Key,Attribute To_Any,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-type-class}@anchor{1a0}
  @section Attribute Type_Class
  
  
  @geindex Type_Class
  
! @code{typ'Type_Class} for any type or subtype @cite{typ} yields
! the value of the type class for the full type of @cite{typ}.  If
! @cite{typ} is a generic formal type, the value is the value for the
  corresponding actual subtype.  The value of this attribute is of type
  @code{System.Aux_DEC.Type_Class}, which has the following definition:
  
*************** type Type_Class is
*** 11100,11123 ****
     Type_Class_Address);
  @end example
  
! Protected types yield the value @cite{Type_Class_Task}, which thus
  applies to all concurrent types.  This attribute is designed to
  be compatible with the DEC Ada 83 attribute of the same name.
  
  @node Attribute Type_Key,Attribute TypeCode,Attribute Type_Class,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-type-key}@anchor{19b}
  @section Attribute Type_Key
  
  
  @geindex Type_Key
  
! The @cite{Type_Key} attribute is applicable to a type or subtype and
  yields a value of type Standard.String containing encoded information
  about the type or subtype. This provides improved compatibility with
  other implementations that support this attribute.
  
  @node Attribute TypeCode,Attribute Unconstrained_Array,Attribute Type_Key,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-typecode}@anchor{19c}
  @section Attribute TypeCode
  
  
--- 11303,11326 ----
     Type_Class_Address);
  @end example
  
! Protected types yield the value @code{Type_Class_Task}, which thus
  applies to all concurrent types.  This attribute is designed to
  be compatible with the DEC Ada 83 attribute of the same name.
  
  @node Attribute Type_Key,Attribute TypeCode,Attribute Type_Class,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-type-key}@anchor{1a1}
  @section Attribute Type_Key
  
  
  @geindex Type_Key
  
! The @code{Type_Key} attribute is applicable to a type or subtype and
  yields a value of type Standard.String containing encoded information
  about the type or subtype. This provides improved compatibility with
  other implementations that support this attribute.
  
  @node Attribute TypeCode,Attribute Unconstrained_Array,Attribute Type_Key,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-typecode}@anchor{1a2}
  @section Attribute TypeCode
  
  
*************** This internal attribute is used for the
*** 11127,11147 ****
  stubs in the context of the Distributed Systems Annex.
  
  @node Attribute Unconstrained_Array,Attribute Universal_Literal_String,Attribute TypeCode,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-unconstrained-array}@anchor{19d}
  @section Attribute Unconstrained_Array
  
  
  @geindex Unconstrained_Array
  
! The @cite{Unconstrained_Array} attribute can be used with a prefix that
  denotes any type or subtype. It is a static attribute that yields
! @cite{True} if the prefix designates an unconstrained array,
! and @cite{False} otherwise. In a generic instance, the result is
  still static, and yields the result of applying this test to the
  generic actual.
  
  @node Attribute Universal_Literal_String,Attribute Unrestricted_Access,Attribute Unconstrained_Array,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-universal-literal-string}@anchor{19e}
  @section Attribute Universal_Literal_String
  
  
--- 11330,11350 ----
  stubs in the context of the Distributed Systems Annex.
  
  @node Attribute Unconstrained_Array,Attribute Universal_Literal_String,Attribute TypeCode,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-unconstrained-array}@anchor{1a3}
  @section Attribute Unconstrained_Array
  
  
  @geindex Unconstrained_Array
  
! The @code{Unconstrained_Array} attribute can be used with a prefix that
  denotes any type or subtype. It is a static attribute that yields
! @code{True} if the prefix designates an unconstrained array,
! and @code{False} otherwise. In a generic instance, the result is
  still static, and yields the result of applying this test to the
  generic actual.
  
  @node Attribute Universal_Literal_String,Attribute Unrestricted_Access,Attribute Unconstrained_Array,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-universal-literal-string}@anchor{1a4}
  @section Attribute Universal_Literal_String
  
  
*************** generic actual.
*** 11150,11156 ****
  
  @geindex Universal_Literal_String
  
! The prefix of @cite{Universal_Literal_String} must be a named
  number.  The static result is the string consisting of the characters of
  the number as defined in the original source.  This allows the user
  program to access the actual text of named numbers without intermediate
--- 11353,11359 ----
  
  @geindex Universal_Literal_String
  
! The prefix of @code{Universal_Literal_String} must be a named
  number.  The static result is the string consisting of the characters of
  the number as defined in the original source.  This allows the user
  program to access the actual text of named numbers without intermediate
*************** end;
*** 11169,11175 ****
  @end example
  
  @node Attribute Unrestricted_Access,Attribute Update,Attribute Universal_Literal_String,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-unrestricted-access}@anchor{19f}
  @section Attribute Unrestricted_Access
  
  
--- 11372,11378 ----
  @end example
  
  @node Attribute Unrestricted_Access,Attribute Update,Attribute Universal_Literal_String,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-unrestricted-access}@anchor{1a5}
  @section Attribute Unrestricted_Access
  
  
*************** end;
*** 11178,11195 ****
  
  @geindex Unrestricted_Access
  
! The @cite{Unrestricted_Access} attribute is similar to @cite{Access}
  except that all accessibility and aliased view checks are omitted.  This
  is a user-beware attribute.
  
! For objects, it is similar to @cite{Address}, for which it is a
  desirable replacement where the value desired is an access type.
  In other words, its effect is similar to first applying the
! @cite{Address} attribute and then doing an unchecked conversion to a
  desired access type.
  
! For subprograms, @cite{P'Unrestricted_Access} may be used where
! @cite{P'Access} would be illegal, to construct a value of a
  less-nested named access type that designates a more-nested
  subprogram. This value may be used in indirect calls, so long as the
  more-nested subprogram still exists; once the subprogram containing it
--- 11381,11398 ----
  
  @geindex Unrestricted_Access
  
! The @code{Unrestricted_Access} attribute is similar to @code{Access}
  except that all accessibility and aliased view checks are omitted.  This
  is a user-beware attribute.
  
! For objects, it is similar to @code{Address}, for which it is a
  desirable replacement where the value desired is an access type.
  In other words, its effect is similar to first applying the
! @code{Address} attribute and then doing an unchecked conversion to a
  desired access type.
  
! For subprograms, @code{P'Unrestricted_Access} may be used where
! @code{P'Access} would be illegal, to construct a value of a
  less-nested named access type that designates a more-nested
  subprogram. This value may be used in indirect calls, so long as the
  more-nested subprogram still exists; once the subprogram containing it
*************** When P1 is called from P2, the call via
*** 11225,11235 ****
  called after P2 returns, it would be an erroneous use of a dangling
  pointer.
  
! For objects, it is possible to use @cite{Unrestricted_Access} for any
  type. However, if the result is of an access-to-unconstrained array
  subtype, then the resulting pointer has the same scope as the context
  of the attribute, and must not be returned to some enclosing scope.
! For instance, if a function uses @cite{Unrestricted_Access} to create
  an access-to-unconstrained-array and returns that value to the caller,
  the result will involve dangling pointers. In addition, it is only
  valid to create pointers to unconstrained arrays using this attribute
--- 11428,11438 ----
  called after P2 returns, it would be an erroneous use of a dangling
  pointer.
  
! For objects, it is possible to use @code{Unrestricted_Access} for any
  type. However, if the result is of an access-to-unconstrained array
  subtype, then the resulting pointer has the same scope as the context
  of the attribute, and must not be returned to some enclosing scope.
! For instance, if a function uses @code{Unrestricted_Access} to create
  an access-to-unconstrained-array and returns that value to the caller,
  the result will involve dangling pointers. In addition, it is only
  valid to create pointers to unconstrained arrays using this attribute
*************** end;
*** 11307,11323 ****
  A normal unconstrained array value
  or a constrained array object marked as aliased has the bounds in memory
  just before the array, so a thin pointer can retrieve both the data and
! the bounds.  But in this case, the non-aliased object @cite{X} does not have the
! bounds before the string.  If the size clause for type @cite{A}
  were not present, then the pointer
  would be a fat pointer, where one component is a pointer to the bounds,
  and all would be well.  But with the size clause present, the conversion from
  fat pointer to thin pointer in the call loses the bounds, and so this
! is erroneous, and the program likely raises a @cite{Program_Error} exception.
  
  In general, it is advisable to completely
  avoid mixing the use of thin pointers and the use of
! @cite{Unrestricted_Access} where the designated type is an
  unconstrained array.  The use of thin pointers should be restricted to
  cases of porting legacy code that implicitly assumes the size of pointers,
  and such code should not in any case be using this attribute.
--- 11510,11526 ----
  A normal unconstrained array value
  or a constrained array object marked as aliased has the bounds in memory
  just before the array, so a thin pointer can retrieve both the data and
! the bounds.  But in this case, the non-aliased object @code{X} does not have the
! bounds before the string.  If the size clause for type @code{A}
  were not present, then the pointer
  would be a fat pointer, where one component is a pointer to the bounds,
  and all would be well.  But with the size clause present, the conversion from
  fat pointer to thin pointer in the call loses the bounds, and so this
! is erroneous, and the program likely raises a @code{Program_Error} exception.
  
  In general, it is advisable to completely
  avoid mixing the use of thin pointers and the use of
! @code{Unrestricted_Access} where the designated type is an
  unconstrained array.  The use of thin pointers should be restricted to
  cases of porting legacy code that implicitly assumes the size of pointers,
  and such code should not in any case be using this attribute.
*************** Here we attempt to modify the constant P
*** 11339,11346 ****
  or may not notice this attempt, and subsequent references to P may yield
  either the value 3 or the value 4 or the assignment may blow up if the
  compiler decides to put P in read-only memory. One particular case where
! @cite{Unrestricted_Access} can be used in this way is to modify the
! value of an @cite{IN} parameter:
  
  @example
  procedure K (S : in String) is
--- 11542,11549 ----
  or may not notice this attempt, and subsequent references to P may yield
  either the value 3 or the value 4 or the assignment may blow up if the
  compiler decides to put P in read-only memory. One particular case where
! @code{Unrestricted_Access} can be used in this way is to modify the
! value of an @code{in} parameter:
  
  @example
  procedure K (S : in String) is
*************** end;
*** 11352,11368 ****
  @end example
  
  In general this is a risky approach. It may appear to "work" but such uses of
! @cite{Unrestricted_Access} are potentially non-portable, even from one version
! of @cite{GNAT} to another, so are best avoided if possible.
  
  @node Attribute Update,Attribute Valid_Scalars,Attribute Unrestricted_Access,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-update}@anchor{1a0}
  @section Attribute Update
  
  
  @geindex Update
  
! The @cite{Update} attribute creates a copy of an array or record value
  with one or more modified components. The syntax is:
  
  @example
--- 11555,11571 ----
  @end example
  
  In general this is a risky approach. It may appear to "work" but such uses of
! @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_Scalars,Attribute Unrestricted_Access,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-update}@anchor{1a6}
  @section Attribute Update
  
  
  @geindex Update
  
! The @code{Update} attribute creates a copy of an array or record value
  with one or more modified components. The syntax is:
  
  @example
*************** INDEX_EXPRESSION_LIST_LIST
*** 11376,11384 ****
  INDEX_EXPRESSION_LIST                        ::= ( EXPRESSION @{, EXPRESSION @} )
  @end example
  
! where @cite{PREFIX} is the name of an array or record object, the
! association list in parentheses does not contain an @cite{others}
! choice and the box symbol @cite{<>} may not appear in any
  expression. The effect is to yield a copy of the array or record value
  which is unchanged apart from the components mentioned in the
  association list, which are changed to the indicated value. The
--- 11579,11587 ----
  INDEX_EXPRESSION_LIST                        ::= ( EXPRESSION @{, EXPRESSION @} )
  @end example
  
! where @code{PREFIX} is the name of an array or record object, the
! association list in parentheses does not contain an @code{others}
! choice and the box symbol @code{<>} may not appear in any
  expression. The effect is to yield a copy of the array or record value
  which is unchanged apart from the components mentioned in the
  association list, which are changed to the indicated value. The
*************** Avar1 : Arr := (1,2,3,4,5);
*** 11392,11398 ****
  Avar2 : Arr := Avar1'Update (2 => 10, 3 .. 4 => 20);
  @end example
  
! yields a value for @cite{Avar2} of 1,10,20,20,5 with @cite{Avar1}
  begin unmodified. Similarly:
  
  @example
--- 11595,11601 ----
  Avar2 : Arr := Avar1'Update (2 => 10, 3 .. 4 => 20);
  @end example
  
! yields a value for @code{Avar2} of 1,10,20,20,5 with @code{Avar1}
  begin unmodified. Similarly:
  
  @example
*************** Rvar1 : Rec := (A => 1, B => 2, C => 3);
*** 11402,11409 ****
  Rvar2 : Rec := Rvar1'Update (B => 20);
  @end example
  
! yields a value for @cite{Rvar2} of (A => 1, B => 20, C => 3),
! with @cite{Rvar1} being unmodifed.
  Note that the value of the attribute reference is computed
  completely before it is used. This means that if you write:
  
--- 11605,11612 ----
  Rvar2 : Rec := Rvar1'Update (B => 20);
  @end example
  
! yields a value for @code{Rvar2} of (A => 1, B => 20, C => 3),
! with @code{Rvar1} being unmodifed.
  Note that the value of the attribute reference is computed
  completely before it is used. This means that if you write:
  
*************** completely before it is used. This means
*** 11411,11423 ****
  Avar1 := Avar1'Update (1 => 10, 2 => Function_Call);
  @end example
  
! then the value of @cite{Avar1} is not modified if @cite{Function_Call}
  raises an exception, unlike the effect of a series of direct assignments
! to elements of @cite{Avar1}. In general this requires that
  two extra complete copies of the object are required, which should be
  kept in mind when considering efficiency.
  
! The @cite{Update} attribute cannot be applied to prefixes of a limited
  type, and cannot reference discriminants in the case of a record type.
  The accessibility level of an Update attribute result object is defined
  as for an aggregate.
--- 11614,11626 ----
  Avar1 := Avar1'Update (1 => 10, 2 => Function_Call);
  @end example
  
! then the value of @code{Avar1} is not modified if @code{Function_Call}
  raises an exception, unlike the effect of a series of direct assignments
! to elements of @code{Avar1}. In general this requires that
  two extra complete copies of the object are required, which should be
  kept in mind when considering efficiency.
  
! The @code{Update} attribute cannot be applied to prefixes of a limited
  type, and cannot reference discriminants in the case of a record type.
  The accessibility level of an Update attribute result object is defined
  as for an aggregate.
*************** A := A'Update ((1, 2) => 20, (3, 4) => 3
*** 11437,11478 ****
  which changes element (1,2) to 20 and (3,4) to 30.
  
  @node Attribute Valid_Scalars,Attribute VADS_Size,Attribute Update,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-valid-scalars}@anchor{1a1}
  @section Attribute Valid_Scalars
  
  
  @geindex Valid_Scalars
  
! The @cite{'Valid_Scalars} attribute is intended to make it easier to
  check the validity of scalar subcomponents of composite objects. It
! is defined for any prefix @cite{X} that denotes an object.
  The value of this attribute is of the predefined type Boolean.
! @cite{X'Valid_Scalars} yields True if and only if evaluation of
! @cite{P'Valid} yields True for every scalar part P of X or if X has
  no scalar parts. It is not specified in what order the scalar parts
  are checked, nor whether any more are checked after any one of them
! is determined to be invalid. If the prefix @cite{X} is of a class-wide
! type @cite{T'Class} (where @cite{T} is the associated specific type),
! or if the prefix @cite{X} is of a specific tagged type @cite{T}, then
! only the scalar parts of components of @cite{T} are traversed; in other
! words, components of extensions of @cite{T} are not traversed even if
! @cite{T'Class (X)'Tag /= T'Tag} . The compiler will issue a warning if it can
  be determined at compile time that the prefix of the attribute has no
  scalar parts (e.g., if the prefix is of an access type, an interface type,
  an undiscriminated task type, or an undiscriminated protected type).
  
! For scalar types, @cite{Valid_Scalars} is equivalent to @cite{Valid}. The use
! of this attribute is not permitted for @cite{Unchecked_Union} types for which
  in general it is not possible to determine the values of the discriminants.
  
! Note: @cite{Valid_Scalars} can generate a lot of code, especially in the case
  of a large variant record. If the attribute is called in many places in the
  same program applied to objects of the same type, it can reduce program size
  to write a function with a single use of the attribute, and then call that
  function from multiple places.
  
  @node Attribute VADS_Size,Attribute Value_Size,Attribute Valid_Scalars,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-vads-size}@anchor{1a2}
  @section Attribute VADS_Size
  
  
--- 11640,11681 ----
  which changes element (1,2) to 20 and (3,4) to 30.
  
  @node Attribute Valid_Scalars,Attribute VADS_Size,Attribute Update,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-valid-scalars}@anchor{1a7}
  @section Attribute Valid_Scalars
  
  
  @geindex Valid_Scalars
  
! The @code{'Valid_Scalars} attribute is intended to make it easier to
  check the validity of scalar subcomponents of composite objects. It
! is defined for any prefix @code{X} that denotes an object.
  The value of this attribute is of the predefined type Boolean.
! @code{X'Valid_Scalars} yields True if and only if evaluation of
! @code{P'Valid} yields True for every scalar part P of X or if X has
  no scalar parts. It is not specified in what order the scalar parts
  are checked, nor whether any more are checked after any one of them
! is determined to be invalid. If the prefix @code{X} is of a class-wide
! type @code{T'Class} (where @code{T} is the associated specific type),
! or if the prefix @code{X} is of a specific tagged type @code{T}, then
! only the scalar parts of components of @code{T} are traversed; in other
! words, components of extensions of @code{T} are not traversed even if
! @code{T'Class (X)'Tag /= T'Tag} . The compiler will issue a warning if it can
  be determined at compile time that the prefix of the attribute has no
  scalar parts (e.g., if the prefix is of an access type, an interface type,
  an undiscriminated task type, or an undiscriminated protected type).
  
! For scalar types, @code{Valid_Scalars} is equivalent to @code{Valid}. The use
! of this attribute is not permitted for @code{Unchecked_Union} types for which
  in general it is not possible to determine the values of the discriminants.
  
! Note: @code{Valid_Scalars} can generate a lot of code, especially in the case
  of a large variant record. If the attribute is called in many places in the
  same program applied to objects of the same type, it can reduce program size
  to write a function with a single use of the attribute, and then call that
  function from multiple places.
  
  @node Attribute VADS_Size,Attribute Value_Size,Attribute Valid_Scalars,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-vads-size}@anchor{1a8}
  @section Attribute VADS_Size
  
  
*************** function from multiple places.
*** 11481,11498 ****
  
  @geindex VADS_Size
  
! The @cite{'VADS_Size} attribute is intended to make it easier to port
! legacy code which relies on the semantics of @cite{'Size} as implemented
  by the VADS Ada 83 compiler.  GNAT makes a best effort at duplicating the
! same semantic interpretation.  In particular, @cite{'VADS_Size} applied
  to a predefined or other primitive type with no Size clause yields the
! Object_Size (for example, @cite{Natural'Size} is 32 rather than 31 on
! typical machines).  In addition @cite{'VADS_Size} applied to an object
  gives the result that would be obtained by applying the attribute to
  the corresponding type.
  
  @node Attribute Value_Size,Attribute Wchar_T_Size,Attribute VADS_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes id6}@anchor{1a3}@anchor{gnat_rm/implementation_defined_attributes attribute-value-size}@anchor{155}
  @section Attribute Value_Size
  
  
--- 11684,11701 ----
  
  @geindex VADS_Size
  
! The @code{'VADS_Size} attribute is intended to make it easier to port
! legacy code which relies on the semantics of @code{'Size} as implemented
  by the VADS Ada 83 compiler.  GNAT makes a best effort at duplicating the
! same semantic interpretation.  In particular, @code{'VADS_Size} applied
  to a predefined or other primitive type with no Size clause yields the
! Object_Size (for example, @code{Natural'Size} is 32 rather than 31 on
! typical machines).  In addition @code{'VADS_Size} applied to an object
  gives the result that would be obtained by applying the attribute to
  the corresponding type.
  
  @node Attribute Value_Size,Attribute Wchar_T_Size,Attribute VADS_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes id6}@anchor{1a9}@anchor{gnat_rm/implementation_defined_attributes attribute-value-size}@anchor{15b}
  @section Attribute Value_Size
  
  
*************** the corresponding type.
*** 11503,11535 ****
  
  @code{type'Value_Size} is the number of bits required to represent
  a value of the given subtype.  It is the same as @code{type'Size},
! but, unlike @cite{Size}, may be set for non-first subtypes.
  
  @node Attribute Wchar_T_Size,Attribute Word_Size,Attribute Value_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-wchar-t-size}@anchor{1a4}
  @section Attribute Wchar_T_Size
  
  
  @geindex Wchar_T_Size
  
! @cite{Standard'Wchar_T_Size} (@cite{Standard} is the only permissible
! prefix) provides the size in bits of the C @cite{wchar_t} type
  primarily for constructing the definition of this type in
! package @cite{Interfaces.C}. The result is a static constant.
  
  @node Attribute Word_Size,,Attribute Wchar_T_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-word-size}@anchor{1a5}
  @section Attribute Word_Size
  
  
  @geindex Word_Size
  
! @cite{Standard'Word_Size} (@cite{Standard} is the only permissible
! prefix) provides the value @cite{System.Word_Size}. The result is
  a static constant.
  
  @node Standard and Implementation Defined Restrictions,Implementation Advice,Implementation Defined Attributes,Top
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions standard-and-implementation-defined-restrictions}@anchor{9}@anchor{gnat_rm/standard_and_implementation_defined_restrictions doc}@anchor{1a6}@anchor{gnat_rm/standard_and_implementation_defined_restrictions id1}@anchor{1a7}
  @chapter Standard and Implementation Defined Restrictions
  
  
--- 11706,11738 ----
  
  @code{type'Value_Size} is the number of bits required to represent
  a value of the given subtype.  It is the same as @code{type'Size},
! but, unlike @code{Size}, may be set for non-first subtypes.
  
  @node Attribute Wchar_T_Size,Attribute Word_Size,Attribute Value_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-wchar-t-size}@anchor{1aa}
  @section Attribute Wchar_T_Size
  
  
  @geindex Wchar_T_Size
  
! @code{Standard'Wchar_T_Size} (@code{Standard} is the only permissible
! prefix) provides the size in bits of the C @code{wchar_t} type
  primarily for constructing the definition of this type in
! package @code{Interfaces.C}. The result is a static constant.
  
  @node Attribute Word_Size,,Attribute Wchar_T_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-word-size}@anchor{1ab}
  @section Attribute Word_Size
  
  
  @geindex Word_Size
  
! @code{Standard'Word_Size} (@code{Standard} is the only permissible
! prefix) provides the value @code{System.Word_Size}. The result is
  a static constant.
  
  @node Standard and Implementation Defined Restrictions,Implementation Advice,Implementation Defined Attributes,Top
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions standard-and-implementation-defined-restrictions}@anchor{9}@anchor{gnat_rm/standard_and_implementation_defined_restrictions doc}@anchor{1ac}@anchor{gnat_rm/standard_and_implementation_defined_restrictions id1}@anchor{1ad}
  @chapter Standard and Implementation Defined Restrictions
  
  
*************** language defined or GNAT-specific, are l
*** 11558,11564 ****
  @end menu
  
  @node Partition-Wide Restrictions,Program Unit Level Restrictions,,Standard and Implementation Defined Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions partition-wide-restrictions}@anchor{1a8}@anchor{gnat_rm/standard_and_implementation_defined_restrictions id2}@anchor{1a9}
  @section Partition-Wide Restrictions
  
  
--- 11761,11767 ----
  @end menu
  
  @node Partition-Wide Restrictions,Program Unit Level Restrictions,,Standard and Implementation Defined Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions partition-wide-restrictions}@anchor{1ae}@anchor{gnat_rm/standard_and_implementation_defined_restrictions id2}@anchor{1af}
  @section Partition-Wide Restrictions
  
  
*************** then all compilation units in the partit
*** 11647,11653 ****
  @end menu
  
  @node Immediate_Reclamation,Max_Asynchronous_Select_Nesting,,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions immediate-reclamation}@anchor{1aa}
  @subsection Immediate_Reclamation
  
  
--- 11850,11856 ----
  @end menu
  
  @node Immediate_Reclamation,Max_Asynchronous_Select_Nesting,,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions immediate-reclamation}@anchor{1b0}
  @subsection Immediate_Reclamation
  
  
*************** deallocation, any storage reserved at ru
*** 11659,11665 ****
  immediately reclaimed when the object no longer exists.
  
  @node Max_Asynchronous_Select_Nesting,Max_Entry_Queue_Length,Immediate_Reclamation,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions max-asynchronous-select-nesting}@anchor{1ab}
  @subsection Max_Asynchronous_Select_Nesting
  
  
--- 11862,11868 ----
  immediately reclaimed when the object no longer exists.
  
  @node Max_Asynchronous_Select_Nesting,Max_Entry_Queue_Length,Immediate_Reclamation,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions max-asynchronous-select-nesting}@anchor{1b1}
  @subsection Max_Asynchronous_Select_Nesting
  
  
*************** detected at compile time. Violations of
*** 11671,11677 ****
  other than zero cause Storage_Error to be raised.
  
  @node Max_Entry_Queue_Length,Max_Protected_Entries,Max_Asynchronous_Select_Nesting,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions max-entry-queue-length}@anchor{1ac}
  @subsection Max_Entry_Queue_Length
  
  
--- 11874,11880 ----
  other than zero cause Storage_Error to be raised.
  
  @node Max_Entry_Queue_Length,Max_Protected_Entries,Max_Asynchronous_Select_Nesting,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions max-entry-queue-length}@anchor{1b2}
  @subsection Max_Entry_Queue_Length
  
  
*************** the call.
*** 11686,11698 ****
  
  @geindex Max_Entry_Queue_Depth
  
! The restriction @cite{Max_Entry_Queue_Depth} is recognized as a
! synonym for @cite{Max_Entry_Queue_Length}. This is retained for historical
  compatibility purposes (and a warning will be generated for its use if
  warnings on obsolescent features are activated).
  
  @node Max_Protected_Entries,Max_Select_Alternatives,Max_Entry_Queue_Length,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions max-protected-entries}@anchor{1ad}
  @subsection Max_Protected_Entries
  
  
--- 11889,11901 ----
  
  @geindex Max_Entry_Queue_Depth
  
! The restriction @code{Max_Entry_Queue_Depth} is recognized as a
! synonym for @code{Max_Entry_Queue_Length}. This is retained for historical
  compatibility purposes (and a warning will be generated for its use if
  warnings on obsolescent features are activated).
  
  @node Max_Protected_Entries,Max_Select_Alternatives,Max_Entry_Queue_Length,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions max-protected-entries}@anchor{1b3}
  @subsection Max_Protected_Entries
  
  
*************** bounds of every entry family of a protec
*** 11703,11709 ****
  defined by a discriminant of a subtype whose corresponding bound is static.
  
  @node Max_Select_Alternatives,Max_Storage_At_Blocking,Max_Protected_Entries,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions max-select-alternatives}@anchor{1ae}
  @subsection Max_Select_Alternatives
  
  
--- 11906,11912 ----
  defined by a discriminant of a subtype whose corresponding bound is static.
  
  @node Max_Select_Alternatives,Max_Storage_At_Blocking,Max_Protected_Entries,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions max-select-alternatives}@anchor{1b4}
  @subsection Max_Select_Alternatives
  
  
*************** defined by a discriminant of a subtype w
*** 11712,11718 ****
  [RM D.7] Specifies the maximum number of alternatives in a selective accept.
  
  @node Max_Storage_At_Blocking,Max_Task_Entries,Max_Select_Alternatives,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions max-storage-at-blocking}@anchor{1af}
  @subsection Max_Storage_At_Blocking
  
  
--- 11915,11921 ----
  [RM D.7] Specifies the maximum number of alternatives in a selective accept.
  
  @node Max_Storage_At_Blocking,Max_Task_Entries,Max_Select_Alternatives,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions max-storage-at-blocking}@anchor{1b5}
  @subsection Max_Storage_At_Blocking
  
  
*************** Storage_Size that can be retained by a b
*** 11723,11729 ****
  restriction causes Storage_Error to be raised.
  
  @node Max_Task_Entries,Max_Tasks,Max_Storage_At_Blocking,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions max-task-entries}@anchor{1b0}
  @subsection Max_Task_Entries
  
  
--- 11926,11932 ----
  restriction causes Storage_Error to be raised.
  
  @node Max_Task_Entries,Max_Tasks,Max_Storage_At_Blocking,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions max-task-entries}@anchor{1b6}
  @subsection Max_Task_Entries
  
  
*************** defined by a discriminant of a subtype w
*** 11736,11742 ****
  corresponding bound is static.
  
  @node Max_Tasks,No_Abort_Statements,Max_Task_Entries,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions max-tasks}@anchor{1b1}
  @subsection Max_Tasks
  
  
--- 11939,11945 ----
  corresponding bound is static.
  
  @node Max_Tasks,No_Abort_Statements,Max_Task_Entries,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions max-tasks}@anchor{1b7}
  @subsection Max_Tasks
  
  
*************** time. Violations of this restriction wit
*** 11749,11755 ****
  Storage_Error to be raised.
  
  @node No_Abort_Statements,No_Access_Parameter_Allocators,Max_Tasks,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-abort-statements}@anchor{1b2}
  @subsection No_Abort_Statements
  
  
--- 11952,11958 ----
  Storage_Error to be raised.
  
  @node No_Abort_Statements,No_Access_Parameter_Allocators,Max_Tasks,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-abort-statements}@anchor{1b8}
  @subsection No_Abort_Statements
  
  
*************** Storage_Error to be raised.
*** 11759,11765 ****
  no calls to Task_Identification.Abort_Task.
  
  @node No_Access_Parameter_Allocators,No_Access_Subprograms,No_Abort_Statements,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-access-parameter-allocators}@anchor{1b3}
  @subsection No_Access_Parameter_Allocators
  
  
--- 11962,11968 ----
  no calls to Task_Identification.Abort_Task.
  
  @node No_Access_Parameter_Allocators,No_Access_Subprograms,No_Abort_Statements,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-access-parameter-allocators}@anchor{1b9}
  @subsection No_Access_Parameter_Allocators
  
  
*************** occurrences of an allocator as the actua
*** 11770,11776 ****
  parameter.
  
  @node No_Access_Subprograms,No_Allocators,No_Access_Parameter_Allocators,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-access-subprograms}@anchor{1b4}
  @subsection No_Access_Subprograms
  
  
--- 11973,11979 ----
  parameter.
  
  @node No_Access_Subprograms,No_Allocators,No_Access_Parameter_Allocators,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-access-subprograms}@anchor{1ba}
  @subsection No_Access_Subprograms
  
  
*************** parameter.
*** 11780,11786 ****
  declarations of access-to-subprogram types.
  
  @node No_Allocators,No_Anonymous_Allocators,No_Access_Subprograms,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-allocators}@anchor{1b5}
  @subsection No_Allocators
  
  
--- 11983,11989 ----
  declarations of access-to-subprogram types.
  
  @node No_Allocators,No_Anonymous_Allocators,No_Access_Subprograms,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-allocators}@anchor{1bb}
  @subsection No_Allocators
  
  
*************** declarations of access-to-subprogram typ
*** 11790,11796 ****
  occurrences of an allocator.
  
  @node No_Anonymous_Allocators,No_Asynchronous_Control,No_Allocators,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-anonymous-allocators}@anchor{1b6}
  @subsection No_Anonymous_Allocators
  
  
--- 11993,11999 ----
  occurrences of an allocator.
  
  @node No_Anonymous_Allocators,No_Asynchronous_Control,No_Allocators,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-anonymous-allocators}@anchor{1bc}
  @subsection No_Anonymous_Allocators
  
  
*************** occurrences of an allocator.
*** 11800,11806 ****
  occurrences of an allocator of anonymous access type.
  
  @node No_Asynchronous_Control,No_Calendar,No_Anonymous_Allocators,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-asynchronous-control}@anchor{1b7}
  @subsection No_Asynchronous_Control
  
  
--- 12003,12009 ----
  occurrences of an allocator of anonymous access type.
  
  @node No_Asynchronous_Control,No_Calendar,No_Anonymous_Allocators,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-asynchronous-control}@anchor{1bd}
  @subsection No_Asynchronous_Control
  
  
*************** occurrences of an allocator of anonymous
*** 11810,11816 ****
  dependences on the predefined package Asynchronous_Task_Control.
  
  @node No_Calendar,No_Coextensions,No_Asynchronous_Control,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-calendar}@anchor{1b8}
  @subsection No_Calendar
  
  
--- 12013,12019 ----
  dependences on the predefined package Asynchronous_Task_Control.
  
  @node No_Calendar,No_Coextensions,No_Asynchronous_Control,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-calendar}@anchor{1be}
  @subsection No_Calendar
  
  
*************** dependences on the predefined package As
*** 11820,11826 ****
  dependences on package Calendar.
  
  @node No_Coextensions,No_Default_Initialization,No_Calendar,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-coextensions}@anchor{1b9}
  @subsection No_Coextensions
  
  
--- 12023,12029 ----
  dependences on package Calendar.
  
  @node No_Coextensions,No_Default_Initialization,No_Calendar,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-coextensions}@anchor{1bf}
  @subsection No_Coextensions
  
  
*************** dependences on package Calendar.
*** 11830,11836 ****
  coextensions. See 3.10.2.
  
  @node No_Default_Initialization,No_Delay,No_Coextensions,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-default-initialization}@anchor{1ba}
  @subsection No_Default_Initialization
  
  
--- 12033,12039 ----
  coextensions. See 3.10.2.
  
  @node No_Default_Initialization,No_Delay,No_Coextensions,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-default-initialization}@anchor{1c0}
  @subsection No_Default_Initialization
  
  
*************** is to prohibit all cases of variables de
*** 11847,11853 ****
  initializer (including the case of OUT scalar parameters).
  
  @node No_Delay,No_Dependence,No_Default_Initialization,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-delay}@anchor{1bb}
  @subsection No_Delay
  
  
--- 12050,12056 ----
  initializer (including the case of OUT scalar parameters).
  
  @node No_Delay,No_Dependence,No_Default_Initialization,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-delay}@anchor{1c1}
  @subsection No_Delay
  
  
*************** initializer (including the case of OUT s
*** 11857,11863 ****
  delay statements and no semantic dependences on package Calendar.
  
  @node No_Dependence,No_Direct_Boolean_Operators,No_Delay,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dependence}@anchor{1bc}
  @subsection No_Dependence
  
  
--- 12060,12066 ----
  delay statements and no semantic dependences on package Calendar.
  
  @node No_Dependence,No_Direct_Boolean_Operators,No_Delay,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dependence}@anchor{1c2}
  @subsection No_Dependence
  
  
*************** delay statements and no semantic depende
*** 11867,11873 ****
  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{1bd}
  @subsection No_Direct_Boolean_Operators
  
  
--- 12070,12076 ----
  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{1c3}
  @subsection No_Direct_Boolean_Operators
  
  
*************** protocol requires the use of short-circu
*** 11880,11896 ****
  composite boolean operations.
  
  @node No_Dispatch,No_Dispatching_Calls,No_Direct_Boolean_Operators,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dispatch}@anchor{1be}
  @subsection No_Dispatch
  
  
  @geindex No_Dispatch
  
  [RM H.4] This restriction ensures at compile time that there are no
! occurrences of @cite{T'Class}, for any (tagged) subtype @cite{T}.
  
  @node No_Dispatching_Calls,No_Dynamic_Attachment,No_Dispatch,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dispatching-calls}@anchor{1bf}
  @subsection No_Dispatching_Calls
  
  
--- 12083,12099 ----
  composite boolean operations.
  
  @node No_Dispatch,No_Dispatching_Calls,No_Direct_Boolean_Operators,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dispatch}@anchor{1c4}
  @subsection No_Dispatch
  
  
  @geindex No_Dispatch
  
  [RM H.4] This restriction ensures at compile time that there are no
! occurrences of @code{T'Class}, for any (tagged) subtype @code{T}.
  
  @node No_Dispatching_Calls,No_Dynamic_Attachment,No_Dispatch,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dispatching-calls}@anchor{1c5}
  @subsection No_Dispatching_Calls
  
  
*************** in the implementation of class-wide obje
*** 11906,11912 ****
  membership test is allowed in the presence of this restriction, because its
  implementation requires no dispatching.
  This restriction is comparable to the official Ada restriction
! @cite{No_Dispatch} except that it is a bit less restrictive in that it allows
  all classwide constructs that do not imply dispatching.
  The following example indicates constructs that violate this restriction.
  
--- 12109,12115 ----
  membership test is allowed in the presence of this restriction, because its
  implementation requires no dispatching.
  This restriction is comparable to the official Ada restriction
! @code{No_Dispatch} except that it is a bit less restrictive in that it allows
  all classwide constructs that do not imply dispatching.
  The following example indicates constructs that violate this restriction.
  
*************** end Example;
*** 11951,11957 ****
  @end example
  
  @node No_Dynamic_Attachment,No_Dynamic_Priorities,No_Dispatching_Calls,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-attachment}@anchor{1c0}
  @subsection No_Dynamic_Attachment
  
  
--- 12154,12160 ----
  @end example
  
  @node No_Dynamic_Attachment,No_Dynamic_Priorities,No_Dispatching_Calls,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-attachment}@anchor{1c6}
  @subsection No_Dynamic_Attachment
  
  
*************** Detach_Handler, and Reference).
*** 11964,11976 ****
  
  @geindex No_Dynamic_Interrupts
  
! The restriction @cite{No_Dynamic_Interrupts} is recognized as a
! synonym for @cite{No_Dynamic_Attachment}. This is retained for historical
  compatibility purposes (and a warning will be generated for its use if
  warnings on obsolescent features are activated).
  
  @node No_Dynamic_Priorities,No_Entry_Calls_In_Elaboration_Code,No_Dynamic_Attachment,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-priorities}@anchor{1c1}
  @subsection No_Dynamic_Priorities
  
  
--- 12167,12179 ----
  
  @geindex No_Dynamic_Interrupts
  
! The restriction @code{No_Dynamic_Interrupts} is recognized as a
! synonym for @code{No_Dynamic_Attachment}. This is retained for historical
  compatibility purposes (and a warning will be generated for its use if
  warnings on obsolescent features are activated).
  
  @node No_Dynamic_Priorities,No_Entry_Calls_In_Elaboration_Code,No_Dynamic_Attachment,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-priorities}@anchor{1c7}
  @subsection No_Dynamic_Priorities
  
  
*************** warnings on obsolescent features are act
*** 11979,11985 ****
  [RM D.7] There are no semantic dependencies on the package Dynamic_Priorities.
  
  @node No_Entry_Calls_In_Elaboration_Code,No_Enumeration_Maps,No_Dynamic_Priorities,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-entry-calls-in-elaboration-code}@anchor{1c2}
  @subsection No_Entry_Calls_In_Elaboration_Code
  
  
--- 12182,12188 ----
  [RM D.7] There are no semantic dependencies on the package Dynamic_Priorities.
  
  @node No_Entry_Calls_In_Elaboration_Code,No_Enumeration_Maps,No_Dynamic_Priorities,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-entry-calls-in-elaboration-code}@anchor{1c8}
  @subsection No_Entry_Calls_In_Elaboration_Code
  
  
*************** restriction, the compiler can assume tha
*** 11991,11997 ****
  in a task can be executed at elaboration time.
  
  @node No_Enumeration_Maps,No_Exception_Handlers,No_Entry_Calls_In_Elaboration_Code,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-enumeration-maps}@anchor{1c3}
  @subsection No_Enumeration_Maps
  
  
--- 12194,12200 ----
  in a task can be executed at elaboration time.
  
  @node No_Enumeration_Maps,No_Exception_Handlers,No_Entry_Calls_In_Elaboration_Code,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-enumeration-maps}@anchor{1c9}
  @subsection No_Enumeration_Maps
  
  
*************** enumeration maps are used (that is Image
*** 12002,12008 ****
  to enumeration types).
  
  @node No_Exception_Handlers,No_Exception_Propagation,No_Enumeration_Maps,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exception-handlers}@anchor{1c4}
  @subsection No_Exception_Handlers
  
  
--- 12205,12211 ----
  to enumeration types).
  
  @node No_Exception_Handlers,No_Exception_Propagation,No_Enumeration_Maps,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exception-handlers}@anchor{1ca}
  @subsection No_Exception_Handlers
  
  
*************** statement generated by the compiler). Th
*** 12027,12033 ****
  represents the line number in the source program where the raise occurs.
  
  @node No_Exception_Propagation,No_Exception_Registration,No_Exception_Handlers,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exception-propagation}@anchor{1c5}
  @subsection No_Exception_Propagation
  
  
--- 12230,12236 ----
  represents the line number in the source program where the raise occurs.
  
  @node No_Exception_Propagation,No_Exception_Registration,No_Exception_Handlers,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exception-propagation}@anchor{1cb}
  @subsection No_Exception_Propagation
  
  
*************** the package GNAT.Current_Exception is no
*** 12044,12050 ****
  statements (raise with no operand) are not permitted.
  
  @node No_Exception_Registration,No_Exceptions,No_Exception_Propagation,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exception-registration}@anchor{1c6}
  @subsection No_Exception_Registration
  
  
--- 12247,12253 ----
  statements (raise with no operand) are not permitted.
  
  @node No_Exception_Registration,No_Exceptions,No_Exception_Propagation,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exception-registration}@anchor{1cc}
  @subsection No_Exception_Registration
  
  
*************** code is simplified by omitting the other
*** 12058,12064 ****
  of exceptions when they are declared.
  
  @node No_Exceptions,No_Finalization,No_Exception_Registration,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exceptions}@anchor{1c7}
  @subsection No_Exceptions
  
  
--- 12261,12267 ----
  of exceptions when they are declared.
  
  @node No_Exceptions,No_Finalization,No_Exception_Registration,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exceptions}@anchor{1cd}
  @subsection No_Exceptions
  
  
*************** of exceptions when they are declared.
*** 12068,12074 ****
  raise statements and no exception handlers.
  
  @node No_Finalization,No_Fixed_Point,No_Exceptions,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-finalization}@anchor{1c8}
  @subsection No_Finalization
  
  
--- 12271,12277 ----
  raise statements and no exception handlers.
  
  @node No_Finalization,No_Fixed_Point,No_Exceptions,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-finalization}@anchor{1ce}
  @subsection No_Finalization
  
  
*************** are no longer considered controlled when
*** 12083,12095 ****
  @itemize *
  
  @item 
! @cite{Ada.Finalization.Controlled}
  
  @item 
! @cite{Ada.Finalization.Limited_Controlled}
  
  @item 
! Derivations from @cite{Controlled} or @cite{Limited_Controlled}
  
  @item 
  Class-wide types
--- 12286,12298 ----
  @itemize *
  
  @item 
! @code{Ada.Finalization.Controlled}
  
  @item 
! @code{Ada.Finalization.Limited_Controlled}
  
  @item 
! Derivations from @code{Controlled} or @code{Limited_Controlled}
  
  @item 
  Class-wide types
*************** object or a nested component, either dec
*** 12109,12115 ****
  deallocation of a controlled object no longer finalizes its contents.
  
  @node No_Fixed_Point,No_Floating_Point,No_Finalization,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-fixed-point}@anchor{1c9}
  @subsection No_Fixed_Point
  
  
--- 12312,12318 ----
  deallocation of a controlled object no longer finalizes its contents.
  
  @node No_Fixed_Point,No_Floating_Point,No_Finalization,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-fixed-point}@anchor{1cf}
  @subsection No_Fixed_Point
  
  
*************** deallocation of a controlled object no l
*** 12119,12125 ****
  occurrences of fixed point types and operations.
  
  @node No_Floating_Point,No_Implicit_Conditionals,No_Fixed_Point,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-floating-point}@anchor{1ca}
  @subsection No_Floating_Point
  
  
--- 12322,12328 ----
  occurrences of fixed point types and operations.
  
  @node No_Floating_Point,No_Implicit_Conditionals,No_Fixed_Point,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-floating-point}@anchor{1d0}
  @subsection No_Floating_Point
  
  
*************** occurrences of fixed point types and ope
*** 12129,12135 ****
  occurrences of floating point types and operations.
  
  @node No_Implicit_Conditionals,No_Implicit_Dynamic_Code,No_Floating_Point,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-conditionals}@anchor{1cb}
  @subsection No_Implicit_Conditionals
  
  
--- 12332,12338 ----
  occurrences of floating point types and operations.
  
  @node No_Implicit_Conditionals,No_Implicit_Dynamic_Code,No_Floating_Point,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-conditionals}@anchor{1d1}
  @subsection No_Implicit_Conditionals
  
  
*************** normal manner. Constructs generating imp
*** 12145,12151 ****
  of composite objects and the Max/Min attributes.
  
  @node No_Implicit_Dynamic_Code,No_Implicit_Heap_Allocations,No_Implicit_Conditionals,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-dynamic-code}@anchor{1cc}
  @subsection No_Implicit_Dynamic_Code
  
  
--- 12348,12354 ----
  of composite objects and the Max/Min attributes.
  
  @node No_Implicit_Dynamic_Code,No_Implicit_Heap_Allocations,No_Implicit_Conditionals,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-dynamic-code}@anchor{1d2}
  @subsection No_Implicit_Dynamic_Code
  
  
*************** of composite objects and the Max/Min att
*** 12156,12163 ****
  [GNAT] This restriction prevents the compiler from building 'trampolines'.
  This is a structure that is built on the stack and contains dynamic
  code to be executed at run time. On some targets, a trampoline is
! built for the following features: @cite{Access},
! @cite{Unrestricted_Access}, or @cite{Address} of a nested subprogram;
  nested task bodies; primitive operations of nested tagged types.
  Trampolines do not work on machines that prevent execution of stack
  data. For example, on windows systems, enabling DEP (data execution
--- 12359,12366 ----
  [GNAT] This restriction prevents the compiler from building 'trampolines'.
  This is a structure that is built on the stack and contains dynamic
  code to be executed at run time. On some targets, a trampoline is
! built for the following features: @code{Access},
! @code{Unrestricted_Access}, or @code{Address} of a nested subprogram;
  nested task bodies; primitive operations of nested tagged types.
  Trampolines do not work on machines that prevent execution of stack
  data. For example, on windows systems, enabling DEP (data execution
*************** On many targets, trampolines have been l
*** 12168,12181 ****
  version of system.ads for your target --- if it has
  Always_Compatible_Rep equal to False, then trampolines are largely
  eliminated. In particular, a trampoline is built for the following
! features: @cite{Address} of a nested subprogram;
! @cite{Access} or @cite{Unrestricted_Access} of a nested subprogram,
  but only if pragma Favor_Top_Level applies, or the access type has a
  foreign-language convention; primitive operations of nested tagged
  types.
  
  @node No_Implicit_Heap_Allocations,No_Implicit_Protected_Object_Allocations,No_Implicit_Dynamic_Code,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-heap-allocations}@anchor{1cd}
  @subsection No_Implicit_Heap_Allocations
  
  
--- 12371,12384 ----
  version of system.ads for your target --- if it has
  Always_Compatible_Rep equal to False, then trampolines are largely
  eliminated. In particular, a trampoline is built for the following
! features: @code{Address} of a nested subprogram;
! @code{Access} or @code{Unrestricted_Access} of a nested subprogram,
  but only if pragma Favor_Top_Level applies, or the access type has a
  foreign-language convention; primitive operations of nested tagged
  types.
  
  @node No_Implicit_Heap_Allocations,No_Implicit_Protected_Object_Allocations,No_Implicit_Dynamic_Code,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-heap-allocations}@anchor{1d3}
  @subsection No_Implicit_Heap_Allocations
  
  
*************** types.
*** 12184,12190 ****
  [RM D.7] No constructs are allowed to cause implicit heap allocation.
  
  @node No_Implicit_Protected_Object_Allocations,No_Implicit_Task_Allocations,No_Implicit_Heap_Allocations,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-protected-object-allocations}@anchor{1ce}
  @subsection No_Implicit_Protected_Object_Allocations
  
  
--- 12387,12393 ----
  [RM D.7] No constructs are allowed to cause implicit heap allocation.
  
  @node No_Implicit_Protected_Object_Allocations,No_Implicit_Task_Allocations,No_Implicit_Heap_Allocations,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-protected-object-allocations}@anchor{1d4}
  @subsection No_Implicit_Protected_Object_Allocations
  
  
*************** types.
*** 12194,12200 ****
  protected object.
  
  @node No_Implicit_Task_Allocations,No_Initialize_Scalars,No_Implicit_Protected_Object_Allocations,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-task-allocations}@anchor{1cf}
  @subsection No_Implicit_Task_Allocations
  
  
--- 12397,12403 ----
  protected object.
  
  @node No_Implicit_Task_Allocations,No_Initialize_Scalars,No_Implicit_Protected_Object_Allocations,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-task-allocations}@anchor{1d5}
  @subsection No_Implicit_Task_Allocations
  
  
*************** protected object.
*** 12203,12209 ****
  [GNAT] No constructs are allowed to cause implicit heap allocation of a task.
  
  @node No_Initialize_Scalars,No_IO,No_Implicit_Task_Allocations,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-initialize-scalars}@anchor{1d0}
  @subsection No_Initialize_Scalars
  
  
--- 12406,12412 ----
  [GNAT] No constructs are allowed to cause implicit heap allocation of a task.
  
  @node No_Initialize_Scalars,No_IO,No_Implicit_Task_Allocations,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-initialize-scalars}@anchor{1d6}
  @subsection No_Initialize_Scalars
  
  
*************** code, and in particular eliminates dummy
*** 12215,12221 ****
  are otherwise generated for some record and array types.
  
  @node No_IO,No_Local_Allocators,No_Initialize_Scalars,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-io}@anchor{1d1}
  @subsection No_IO
  
  
--- 12418,12424 ----
  are otherwise generated for some record and array types.
  
  @node No_IO,No_Local_Allocators,No_Initialize_Scalars,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-io}@anchor{1d7}
  @subsection No_IO
  
  
*************** dependences on any of the library units
*** 12226,12232 ****
  Text_IO, Wide_Text_IO, Wide_Wide_Text_IO, or Stream_IO.
  
  @node No_Local_Allocators,No_Local_Protected_Objects,No_IO,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-allocators}@anchor{1d2}
  @subsection No_Local_Allocators
  
  
--- 12429,12435 ----
  Text_IO, Wide_Text_IO, Wide_Wide_Text_IO, or Stream_IO.
  
  @node No_Local_Allocators,No_Local_Protected_Objects,No_IO,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-allocators}@anchor{1d8}
  @subsection No_Local_Allocators
  
  
*************** occurrences of an allocator in subprogra
*** 12237,12243 ****
  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{1d3}
  @subsection No_Local_Protected_Objects
  
  
--- 12440,12446 ----
  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{1d9}
  @subsection No_Local_Protected_Objects
  
  
*************** and entry bodies.
*** 12247,12253 ****
  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{1d4}
  @subsection No_Local_Timing_Events
  
  
--- 12450,12456 ----
  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{1da}
  @subsection No_Local_Timing_Events
  
  
*************** only declared at the library level.
*** 12257,12263 ****
  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{1d5}
  @subsection No_Long_Long_Integers
  
  
--- 12460,12466 ----
  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{1db}
  @subsection No_Long_Long_Integers
  
  
*************** implicit base type is Long_Long_Integer,
*** 12269,12275 ****
  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{1d6}
  @subsection No_Multiple_Elaboration
  
  
--- 12472,12478 ----
  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{1dc}
  @subsection No_Multiple_Elaboration
  
  
*************** programs and Stand Alone libraries, are
*** 12286,12292 ****
  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{1d7}
  @subsection No_Nested_Finalization
  
  
--- 12489,12495 ----
  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{1dd}
  @subsection No_Nested_Finalization
  
  
*************** by the binder.
*** 12295,12301 ****
  [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{1d8}
  @subsection No_Protected_Type_Allocators
  
  
--- 12498,12504 ----
  [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{1de}
  @subsection No_Protected_Type_Allocators
  
  
*************** by the binder.
*** 12305,12311 ****
  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{1d9}
  @subsection No_Protected_Types
  
  
--- 12508,12514 ----
  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{1df}
  @subsection No_Protected_Types
  
  
*************** expressions that attempt to allocate pro
*** 12315,12321 ****
  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{1da}
  @subsection No_Recursion
  
  
--- 12518,12524 ----
  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{1e0}
  @subsection No_Recursion
  
  
*************** declarations of protected types or prote
*** 12325,12331 ****
  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{1db}
  @subsection No_Reentrancy
  
  
--- 12528,12534 ----
  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{1e1}
  @subsection No_Reentrancy
  
  
*************** part of its execution.
*** 12335,12370 ****
  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{1dc}
  @subsection No_Relative_Delay
  
  
  @geindex No_Relative_Delay
  
  [RM D.7] This restriction ensures at compile time that there are no delay
! relative statements and prevents expressions such as @cite{delay 1.23;} from
  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{1dd}
  @subsection No_Requeue_Statements
  
  
  @geindex No_Requeue_Statements
  
  [RM D.7] This restriction ensures at compile time that no requeue statements
! are permitted and prevents keyword @cite{requeue} from being used in source
  code.
  
  @geindex No_Requeue
  
! The restriction @cite{No_Requeue} is recognized as a
! synonym for @cite{No_Requeue_Statements}. This is retained for historical
  compatibility purposes (and a warning will be generated for its use if
  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{1de}
  @subsection No_Secondary_Stack
  
  
--- 12538,12573 ----
  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{1e2}
  @subsection No_Relative_Delay
  
  
  @geindex No_Relative_Delay
  
  [RM D.7] This restriction ensures at compile time that there are no delay
! relative statements and prevents expressions such as @code{delay 1.23;} from
  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{1e3}
  @subsection No_Requeue_Statements
  
  
  @geindex No_Requeue_Statements
  
  [RM D.7] This restriction ensures at compile time that no requeue statements
! are permitted and prevents keyword @code{requeue} from being used in source
  code.
  
  @geindex No_Requeue
  
! The restriction @code{No_Requeue} is recognized as a
! synonym for @code{No_Requeue_Statements}. This is retained for historical
  compatibility purposes (and a warning will be generated for its use if
  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{1e4}
  @subsection No_Secondary_Stack
  
  
*************** stack is used to implement functions ret
*** 12377,12393 ****
  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{1df}
  @subsection No_Select_Statements
  
  
  @geindex No_Select_Statements
  
  [RM D.7] This restriction ensures at compile time no select statements of any
! kind are permitted, that is the keyword @cite{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{1e0}
  @subsection No_Specific_Termination_Handlers
  
  
--- 12580,12596 ----
  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{1e5}
  @subsection No_Select_Statements
  
  
  @geindex No_Select_Statements
  
  [RM D.7] This restriction ensures at compile time no select statements of any
! 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{1e6}
  @subsection No_Specific_Termination_Handlers
  
  
*************** kind are permitted, that is the keyword
*** 12397,12403 ****
  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{1e1}
  @subsection No_Specification_of_Aspect
  
  
--- 12600,12606 ----
  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{1e7}
  @subsection No_Specification_of_Aspect
  
  
*************** specification, attribute definition clau
*** 12408,12414 ****
  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{1e2}
  @subsection No_Standard_Allocators_After_Elaboration
  
  
--- 12611,12617 ----
  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{1e8}
  @subsection No_Standard_Allocators_After_Elaboration
  
  
*************** library items of the partition has compl
*** 12420,12426 ****
  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{1e3}
  @subsection No_Standard_Storage_Pools
  
  
--- 12623,12629 ----
  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{1e9}
  @subsection No_Standard_Storage_Pools
  
  
*************** have an explicit Storage_Pool attribute
*** 12432,12451 ****
  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{1e4}
  @subsection No_Stream_Optimizations
  
  
  @geindex No_Stream_Optimizations
  
  [GNAT] This restriction affects the performance of stream operations on types
! @cite{String}, @cite{Wide_String} and @cite{Wide_Wide_String}. By default, the
! compiler uses block reads and writes when manipulating @cite{String} objects
  due to their supperior performance. When this restriction is in effect, the
  compiler performs all IO operations on a per-character basis.
  
  @node No_Streams,No_Task_Allocators,No_Stream_Optimizations,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-streams}@anchor{1e5}
  @subsection No_Streams
  
  
--- 12635,12654 ----
  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{1ea}
  @subsection No_Stream_Optimizations
  
  
  @geindex No_Stream_Optimizations
  
  [GNAT] This restriction affects the performance of stream operations on types
! @code{String}, @code{Wide_String} and @code{Wide_Wide_String}. By default, the
! compiler uses block reads and writes when manipulating @code{String} objects
  due to their supperior performance. When this restriction is in effect, the
  compiler performs all IO operations on a per-character basis.
  
  @node No_Streams,No_Task_Allocators,No_Stream_Optimizations,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-streams}@anchor{1eb}
  @subsection No_Streams
  
  
*************** compiler performs all IO operations on a
*** 12454,12461 ****
  [GNAT] This restriction ensures at compile/bind time that there are no
  stream objects created and no use of stream attributes.
  This restriction does not forbid dependences on the package
! @cite{Ada.Streams}. So it is permissible to with
! @cite{Ada.Streams} (or another package that does so itself)
  as long as no actual stream objects are created and no
  stream attributes are used.
  
--- 12657,12664 ----
  [GNAT] This restriction ensures at compile/bind time that there are no
  stream objects created and no use of stream attributes.
  This restriction does not forbid dependences on the package
! @code{Ada.Streams}. So it is permissible to with
! @code{Ada.Streams} (or another package that does so itself)
  as long as no actual stream objects are created and no
  stream attributes are used.
  
*************** unit declaring a tagged type should be c
*** 12466,12472 ****
  though this is not required.
  
  @node No_Task_Allocators,No_Task_At_Interrupt_Priority,No_Streams,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-allocators}@anchor{1e6}
  @subsection No_Task_Allocators
  
  
--- 12669,12675 ----
  though this is not required.
  
  @node No_Task_Allocators,No_Task_At_Interrupt_Priority,No_Streams,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-allocators}@anchor{1ec}
  @subsection No_Task_Allocators
  
  
*************** though this is not required.
*** 12476,12482 ****
  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{1e7}
  @subsection No_Task_At_Interrupt_Priority
  
  
--- 12679,12685 ----
  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{1ed}
  @subsection No_Task_At_Interrupt_Priority
  
  
*************** a consequence, the tasks are always crea
*** 12488,12511 ****
  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{1e8}
  @subsection No_Task_Attributes_Package
  
  
  @geindex No_Task_Attributes_Package
  
  [GNAT] This restriction ensures at compile time that there are no implicit or
! explicit dependencies on the package @cite{Ada.Task_Attributes}.
  
  @geindex No_Task_Attributes
  
! The restriction @cite{No_Task_Attributes} is recognized as a synonym
! for @cite{No_Task_Attributes_Package}. This is retained for historical
  compatibility purposes (and a warning will be generated for its use if
  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{1e9}
  @subsection No_Task_Hierarchy
  
  
--- 12691,12714 ----
  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{1ee}
  @subsection No_Task_Attributes_Package
  
  
  @geindex No_Task_Attributes_Package
  
  [GNAT] This restriction ensures at compile time that there are no implicit or
! explicit dependencies on the package @code{Ada.Task_Attributes}.
  
  @geindex No_Task_Attributes
  
! The restriction @code{No_Task_Attributes} is recognized as a synonym
! for @code{No_Task_Attributes_Package}. This is retained for historical
  compatibility purposes (and a warning will be generated for its use if
  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{1ef}
  @subsection No_Task_Hierarchy
  
  
*************** warnings on obsolescent features are act
*** 12515,12521 ****
  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{1ea}
  @subsection No_Task_Termination
  
  
--- 12718,12724 ----
  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{1f0}
  @subsection No_Task_Termination
  
  
*************** directly on the environment task of the
*** 12524,12530 ****
  [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{1eb}
  @subsection No_Tasking
  
  
--- 12727,12733 ----
  [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{1f1}
  @subsection No_Tasking
  
  
*************** directly on the environment task of the
*** 12532,12543 ****
  
  [GNAT] This restriction prevents the declaration of tasks or task types
  throughout the partition.  It is similar in effect to the use of
! @cite{Max_Tasks => 0} except that violations are caught at compile time
  and cause an error message to be output either by the compiler or
  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{1ec}
  @subsection No_Terminate_Alternatives
  
  
--- 12735,12746 ----
  
  [GNAT] This restriction prevents the declaration of tasks or task types
  throughout the partition.  It is similar in effect to the use of
! @code{Max_Tasks => 0} except that violations are caught at compile time
  and cause an error message to be output either by the compiler or
  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{1f2}
  @subsection No_Terminate_Alternatives
  
  
*************** binder.
*** 12546,12552 ****
  [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{1ed}
  @subsection No_Unchecked_Access
  
  
--- 12749,12755 ----
  [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{1f3}
  @subsection No_Unchecked_Access
  
  
*************** binder.
*** 12556,12562 ****
  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{1ee}
  @subsection No_Unchecked_Conversion
  
  
--- 12759,12765 ----
  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{1f4}
  @subsection No_Unchecked_Conversion
  
  
*************** occurrences of the Unchecked_Access attr
*** 12566,12572 ****
  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{1ef}
  @subsection No_Unchecked_Deallocation
  
  
--- 12769,12775 ----
  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{1f5}
  @subsection No_Unchecked_Deallocation
  
  
*************** dependences on the predefined generic fu
*** 12576,12582 ****
  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{1f0}
  @subsection No_Use_Of_Entity
  
  
--- 12779,12785 ----
  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{1f6}
  @subsection No_Use_Of_Entity
  
  
*************** No_Use_Of_Entity => Ada.Text_IO.Put_Line
*** 12596,12602 ****
  @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{1f1}
  @subsection Pure_Barriers
  
  
--- 12799,12805 ----
  @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{1f7}
  @subsection Pure_Barriers
  
  
*************** barriers are restricted to:
*** 12609,12616 ****
  @itemize *
  
  @item 
! simple variables defined in the private part of the
! protected type/object,
  
  @item 
  constant declarations,
--- 12812,12818 ----
  @itemize *
  
  @item 
! components of the protected object (excluding selection from dereferences),
  
  @item 
  constant declarations,
*************** implicitly defined comparison operators,
*** 12637,12643 ****
  uses of the Standard."not" operator,
  
  @item 
! short-circuit operator
  @end itemize
  
  This restriction is a relaxation of the Simple_Barriers restriction,
--- 12839,12848 ----
  uses of the Standard."not" operator,
  
  @item 
! short-circuit operator,
! 
! @item 
! the Count attribute
  @end itemize
  
  This restriction is a relaxation of the Simple_Barriers restriction,
*************** but still ensures absence of side effect
*** 12645,12651 ****
  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{1f2}
  @subsection Simple_Barriers
  
  
--- 12850,12856 ----
  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{1f8}
  @subsection Simple_Barriers
  
  
*************** part of the protected type.  No other fo
*** 12658,12670 ****
  
  @geindex Boolean_Entry_Barriers
  
! The restriction @cite{Boolean_Entry_Barriers} is recognized as a
! synonym for @cite{Simple_Barriers}. This is retained for historical
  compatibility purposes (and a warning will be generated for its use if
  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{1f3}
  @subsection Static_Priorities
  
  
--- 12863,12875 ----
  
  @geindex Boolean_Entry_Barriers
  
! The restriction @code{Boolean_Entry_Barriers} is recognized as a
! synonym for @code{Simple_Barriers}. This is retained for historical
  compatibility purposes (and a warning will be generated for its use if
  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{1f9}
  @subsection Static_Priorities
  
  
*************** warnings on obsolescent features are act
*** 12672,12681 ****
  
  [GNAT] This restriction ensures at compile time that all priority expressions
  are static, and that there are no dependences on the package
! @cite{Ada.Dynamic_Priorities}.
  
  @node Static_Storage_Size,,Static_Priorities,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions static-storage-size}@anchor{1f4}
  @subsection Static_Storage_Size
  
  
--- 12877,12886 ----
  
  [GNAT] This restriction ensures at compile time that all priority expressions
  are static, and that there are no dependences on the package
! @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{1fa}
  @subsection Static_Storage_Size
  
  
*************** are static, and that there are no depend
*** 12685,12691 ****
  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 program-unit-level-restrictions}@anchor{1f5}@anchor{gnat_rm/standard_and_implementation_defined_restrictions id3}@anchor{1f6}
  @section Program Unit Level Restrictions
  
  
--- 12890,12896 ----
  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 program-unit-level-restrictions}@anchor{1fb}@anchor{gnat_rm/standard_and_implementation_defined_restrictions id3}@anchor{1fc}
  @section Program Unit Level Restrictions
  
  
*************** other compilation units in the partition
*** 12709,12720 ****
  * No_Implicit_Loops:: 
  * No_Obsolescent_Features:: 
  * No_Wide_Characters:: 
  * SPARK_05:: 
  
  @end menu
  
  @node No_Elaboration_Code,No_Dynamic_Sized_Objects,,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-elaboration-code}@anchor{1f7}
  @subsection No_Elaboration_Code
  
  
--- 12914,12926 ----
  * No_Implicit_Loops:: 
  * No_Obsolescent_Features:: 
  * No_Wide_Characters:: 
+ * Static_Dispatch_Tables:: 
  * SPARK_05:: 
  
  @end menu
  
  @node No_Elaboration_Code,No_Dynamic_Sized_Objects,,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-elaboration-code}@anchor{1fd}
  @subsection No_Elaboration_Code
  
  
*************** other compilation units in the partition
*** 12722,12731 ****
  
  [GNAT] This restriction ensures at compile time that no elaboration code is
  generated.  Note that this is not the same condition as is enforced
! by pragma @cite{Preelaborate}.  There are cases in which pragma
! @cite{Preelaborate} still permits code to be generated (e.g., code
  to initialize a large array to all zeroes), and there are cases of units
! which do not meet the requirements for pragma @cite{Preelaborate},
  but for which no elaboration code is generated.  Generally, it is
  the case that preelaborable units will meet the restrictions, with
  the exception of large aggregates initialized with an others_clause,
--- 12928,12937 ----
  
  [GNAT] This restriction ensures at compile time that no elaboration code is
  generated.  Note that this is not the same condition as is enforced
! by pragma @code{Preelaborate}.  There are cases in which pragma
! @code{Preelaborate} still permits code to be generated (e.g., code
  to initialize a large array to all zeroes), and there are cases of units
! which do not meet the requirements for pragma @code{Preelaborate},
  but for which no elaboration code is generated.  Generally, it is
  the case that preelaborable units will meet the restrictions, with
  the exception of large aggregates initialized with an others_clause,
*************** throughout a partition.
*** 12736,12742 ****
  
  In the case of aggregates with others, if the aggregate has a dynamic
  size, there is no way to eliminate the elaboration code (such dynamic
! bounds would be incompatible with @cite{Preelaborate} in any case). If
  the bounds are static, then use of this restriction actually modifies
  the code choice of the compiler to avoid generating a loop, and instead
  generate the aggregate statically if possible, no matter how many times
--- 12942,12948 ----
  
  In the case of aggregates with others, if the aggregate has a dynamic
  size, there is no way to eliminate the elaboration code (such dynamic
! bounds would be incompatible with @code{Preelaborate} in any case). If
  the bounds are static, then use of this restriction actually modifies
  the code choice of the compiler to avoid generating a loop, and instead
  generate the aggregate statically if possible, no matter how many times
*************** associated with the unit. This counter i
*** 12770,12776 ****
  before elaboration and to control multiple elaboration attempts.
  
  @node No_Dynamic_Sized_Objects,No_Entry_Queue,No_Elaboration_Code,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-sized-objects}@anchor{1f8}
  @subsection No_Dynamic_Sized_Objects
  
  
--- 12976,12982 ----
  before elaboration and to control multiple elaboration attempts.
  
  @node No_Dynamic_Sized_Objects,No_Entry_Queue,No_Elaboration_Code,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-sized-objects}@anchor{1fe}
  @subsection No_Dynamic_Sized_Objects
  
  
*************** access discriminants. It is often a good
*** 12788,12794 ****
  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{1f9}
  @subsection No_Entry_Queue
  
  
--- 12994,13000 ----
  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{1ff}
  @subsection No_Entry_Queue
  
  
*************** checked at compile time.  A program exec
*** 12801,12807 ****
  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{1fa}
  @subsection No_Implementation_Aspect_Specifications
  
  
--- 13007,13013 ----
  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{200}
  @subsection No_Implementation_Aspect_Specifications
  
  
*************** GNAT-defined aspects are present.  With
*** 12812,12818 ****
  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{1fb}
  @subsection No_Implementation_Attributes
  
  
--- 13018,13024 ----
  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{201}
  @subsection No_Implementation_Attributes
  
  
*************** attributes that can be used are those de
*** 12824,12830 ****
  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{1fc}
  @subsection No_Implementation_Identifiers
  
  
--- 13030,13036 ----
  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{202}
  @subsection No_Implementation_Identifiers
  
  
*************** implementation-defined identifiers (mark
*** 12835,12841 ****
  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{1fd}
  @subsection No_Implementation_Pragmas
  
  
--- 13041,13047 ----
  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{203}
  @subsection No_Implementation_Pragmas
  
  
*************** GNAT-defined pragmas are present.  With
*** 12846,12864 ****
  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{1fe}
  @subsection No_Implementation_Restrictions
  
  
  @geindex No_Implementation_Restrictions
  
  [GNAT] This restriction checks at compile time that no GNAT-defined restriction
! identifiers (other than @cite{No_Implementation_Restrictions} itself)
  are present.  With this restriction, the only other restriction identifiers
  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{1ff}
  @subsection No_Implementation_Units
  
  
--- 13052,13070 ----
  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{204}
  @subsection No_Implementation_Restrictions
  
  
  @geindex No_Implementation_Restrictions
  
  [GNAT] This restriction checks at compile time that no GNAT-defined restriction
! identifiers (other than @code{No_Implementation_Restrictions} itself)
  are present.  With this restriction, the only other restriction identifiers
  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{205}
  @subsection No_Implementation_Units
  
  
*************** mention in the context clause of any imp
*** 12869,12875 ****
  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{200}
  @subsection No_Implicit_Aliasing
  
  
--- 13075,13081 ----
  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{206}
  @subsection No_Implicit_Aliasing
  
  
*************** to be aliased, and in such cases, it can
*** 12884,12899 ****
  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{201}
  @subsection No_Implicit_Loops
  
  
  @geindex No_Implicit_Loops
  
  [GNAT] This restriction ensures that the generated code of the unit marked
! with this restriction does not contain any implicit @cite{for} loops, either by
  modifying the generated code where possible, or by rejecting any construct
! that would otherwise generate an implicit @cite{for} loop. If this restriction is
  active, it is possible to build large array aggregates with all static
  components without generating an intermediate temporary, and without generating
  a loop to initialize individual components. Otherwise, a loop is created for
--- 13090,13105 ----
  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{207}
  @subsection No_Implicit_Loops
  
  
  @geindex No_Implicit_Loops
  
  [GNAT] This restriction ensures that the generated code of the unit marked
! with this restriction does not contain any implicit @code{for} loops, either by
  modifying the generated code where possible, or by rejecting any construct
! that would otherwise generate an implicit @code{for} loop. If this restriction is
  active, it is possible to build large array aggregates with all static
  components without generating an intermediate temporary, and without generating
  a loop to initialize individual components. Otherwise, a loop is created for
*************** arrays larger than about 5000 scalar com
*** 12901,12907 ****
  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{202}
  @subsection No_Obsolescent_Features
  
  
--- 13107,13113 ----
  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{208}
  @subsection No_Obsolescent_Features
  
  
*************** is set in the spec of a package, it will
*** 12910,12939 ****
  [RM 13.12.1] This restriction checks at compile time that no obsolescent
  features are used, as defined in Annex J of the Ada Reference Manual.
  
! @node No_Wide_Characters,SPARK_05,No_Obsolescent_Features,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-wide-characters}@anchor{203}
  @subsection No_Wide_Characters
  
  
  @geindex No_Wide_Characters
  
  [GNAT] This restriction ensures at compile time that no uses of the types
! @cite{Wide_Character} or @cite{Wide_String} or corresponding wide
  wide types
  appear, and that no wide or wide wide string or character literals
  appear in the program (that is literals representing characters not in
! type @cite{Character}).
  
! @node SPARK_05,,No_Wide_Characters,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions spark-05}@anchor{204}
  @subsection SPARK_05
  
  
  @geindex SPARK_05
  
! [GNAT] This restriction checks at compile time that some constructs
! forbidden in SPARK 2005 are not present. Error messages related to
! SPARK restriction have the form:
  
  @example
  violation of restriction "SPARK_05" at <source-location>
--- 13116,13171 ----
  [RM 13.12.1] This restriction checks at compile time that no obsolescent
  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{209}
  @subsection No_Wide_Characters
  
  
  @geindex No_Wide_Characters
  
  [GNAT] This restriction ensures at compile time that no uses of the types
! @code{Wide_Character} or @code{Wide_String} or corresponding wide
  wide types
  appear, and that no wide or wide wide string or character literals
  appear in the program (that is literals representing characters not in
! 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{20a}
! @subsection Static_Dispatch_Tables
! 
! 
! @geindex Static_Dispatch_Tables
! 
! [GNAT] This restriction checks at compile time that all the artifacts
! 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{20b}
  @subsection SPARK_05
  
  
  @geindex SPARK_05
  
! [GNAT] This restriction checks at compile time that some constructs forbidden
! in SPARK 2005 are not present. Note that SPARK 2005 has been superseded by
! SPARK 2014, whose restrictions are checked by the tool GNATprove. To check that
! a codebase respects SPARK 2014 restrictions, mark the code with pragma or
! aspect @code{SPARK_Mode}, and run the tool GNATprove at Stone assurance level, as
! follows:
! 
! @example
! gnatprove -P project.gpr --mode=stone
! @end example
! 
! or equivalently:
! 
! @example
! gnatprove -P project.gpr --mode=check_all
! @end example
! 
! With restriction @code{SPARK_05}, error messages related to SPARK 2005 restriction
! have the form:
  
  @example
  violation of restriction "SPARK_05" at <source-location>
*************** violation of restriction "SPARK_05" at <
*** 12942,12951 ****
  
  @geindex SPARK
  
! The restriction @cite{SPARK} is recognized as a
! synonym for @cite{SPARK_05}. This is retained for historical
! compatibility purposes (and an unconditional warning will be generated
! for its use, advising replacement by @cite{SPARK}).
  
  This is not a replacement for the semantic checks performed by the
  SPARK Examiner tool, as the compiler currently only deals with code,
--- 13174,13182 ----
  
  @geindex SPARK
  
! The restriction @code{SPARK} is recognized as a synonym for @code{SPARK_05}. This is
! retained for historical compatibility purposes (and an unconditional warning
! will be generated for its use, advising replacement by @code{SPARK_05}).
  
  This is not a replacement for the semantic checks performed by the
  SPARK Examiner tool, as the compiler currently only deals with code,
*************** not SPARK 2005 annotations, and does not
*** 12953,12965 ****
  cases of constructs forbidden by SPARK 2005.
  
  Thus it may well be the case that code which passes the compiler with
! the SPARK restriction is rejected by the SPARK Examiner, e.g. due to
  the different visibility rules of the Examiner based on SPARK 2005
! @cite{inherit} annotations.
  
  This restriction can be useful in providing an initial filter for code
  developed using SPARK 2005, or in examining legacy code to see how far
! it is from meeting SPARK restrictions.
  
  The list below summarizes the checks that are performed when this
  restriction is in force:
--- 13184,13196 ----
  cases of constructs forbidden by SPARK 2005.
  
  Thus it may well be the case that code which passes the compiler with
! the SPARK 2005 restriction is rejected by the SPARK Examiner, e.g. due to
  the different visibility rules of the Examiner based on SPARK 2005
! @code{inherit} annotations.
  
  This restriction can be useful in providing an initial filter for code
  developed using SPARK 2005, or in examining legacy code to see how far
! it is from meeting SPARK 2005 restrictions.
  
  The list below summarizes the checks that are performed when this
  restriction is in force:
*************** Access types not allowed
*** 13118,13124 ****
  Incomplete type declaration not allowed
  
  @item 
! Object and subtype declarations must respect SPARK restrictions
  
  @item 
  Digits or delta constraint not allowed
--- 13349,13355 ----
  Incomplete type declaration not allowed
  
  @item 
! Object and subtype declarations must respect SPARK 2005 restrictions
  
  @item 
  Digits or delta constraint not allowed
*************** Untagged record cannot be null
*** 13145,13151 ****
  No class-wide operations
  
  @item 
! Initialization expressions must respect SPARK restrictions
  
  @item 
  Nonstatic ranges not allowed except in iteration schemes
--- 13376,13382 ----
  No class-wide operations
  
  @item 
! Initialization expressions must respect SPARK 2005 restrictions
  
  @item 
  Nonstatic ranges not allowed except in iteration schemes
*************** currently checked by the SPARK_05 restri
*** 13207,13213 ****
  @itemize *
  
  @item 
! SPARK annotations are treated as comments so are not checked at all
  
  @item 
  Based real literals not allowed
--- 13438,13444 ----
  @itemize *
  
  @item 
! SPARK 2005 annotations are treated as comments so are not checked at all
  
  @item 
  Based real literals not allowed
*************** Pragma import must be immediately after
*** 13279,13290 ****
  No mutual recursion between multiple units (this can be checked with gnatcheck)
  @end itemize
  
! Note that if a unit is compiled in Ada 95 mode with the SPARK restriction,
  violations will be reported for constructs forbidden in SPARK 95,
  instead of SPARK 2005.
  
  @node Implementation Advice,Implementation Defined Characteristics,Standard and Implementation Defined Restrictions,Top
! @anchor{gnat_rm/implementation_advice doc}@anchor{205}@anchor{gnat_rm/implementation_advice implementation-advice}@anchor{a}@anchor{gnat_rm/implementation_advice id1}@anchor{206}
  @chapter Implementation Advice
  
  
--- 13510,13521 ----
  No mutual recursion between multiple units (this can be checked with gnatcheck)
  @end itemize
  
! Note that if a unit is compiled in Ada 95 mode with the SPARK 2005 restriction,
  violations will be reported for constructs forbidden in SPARK 95,
  instead of SPARK 2005.
  
  @node Implementation Advice,Implementation Defined Characteristics,Standard and Implementation Defined Restrictions,Top
! @anchor{gnat_rm/implementation_advice doc}@anchor{20c}@anchor{gnat_rm/implementation_advice implementation-advice}@anchor{a}@anchor{gnat_rm/implementation_advice id1}@anchor{20d}
  @chapter Implementation Advice
  
  
*************** case the text describes what GNAT does a
*** 13381,13394 ****
  @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{207}
  @section RM 1.1.3(20): Error Detection
  
  
  @quotation
  
  "If an implementation detects the use of an unsupported Specialized Needs
! Annex feature at run time, it should raise @cite{Program_Error} if
  feasible."
  @end quotation
  
--- 13612,13625 ----
  @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{20e}
  @section RM 1.1.3(20): Error Detection
  
  
  @quotation
  
  "If an implementation detects the use of an unsupported Specialized Needs
! Annex feature at run time, it should raise @code{Program_Error} if
  feasible."
  @end quotation
  
*************** or diagnosed at compile time.
*** 13398,13404 ****
  @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{208}
  @section RM 1.1.3(31): Child Units
  
  
--- 13629,13635 ----
  @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{20f}
  @section RM 1.1.3(31): Child Units
  
  
*************** Followed.
*** 13414,13427 ****
  @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{209}
  @section RM 1.1.5(12): Bounded Errors
  
  
  @quotation
  
  "If an implementation detects a bounded error or erroneous
! execution, it should raise @cite{Program_Error}."
  @end quotation
  
  Followed in all cases in which the implementation detects a bounded
--- 13645,13658 ----
  @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{210}
  @section RM 1.1.5(12): Bounded Errors
  
  
  @quotation
  
  "If an implementation detects a bounded error or erroneous
! execution, it should raise @code{Program_Error}."
  @end quotation
  
  Followed in all cases in which the implementation detects a bounded
*************** runtime.
*** 13431,13437 ****
  @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{20a}@anchor{gnat_rm/implementation_advice rm-2-8-16-pragmas}@anchor{20b}
  @section RM 2.8(16): Pragmas
  
  
--- 13662,13668 ----
  @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{211}@anchor{gnat_rm/implementation_advice rm-2-8-16-pragmas}@anchor{212}
  @section RM 2.8(16): Pragmas
  
  
*************** that this advice not be followed.  For d
*** 13544,13550 ****
  @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{20c}
  @section RM 2.8(17-19): Pragmas
  
  
--- 13775,13781 ----
  @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{213}
  @section RM 2.8(17-19): Pragmas
  
  
*************** make an illegal program legal, except as
*** 13557,13593 ****
  @itemize *
  
  @item 
! A pragma used to complete a declaration, such as a pragma @cite{Import};
  
  @item 
  A pragma used to configure the environment by adding, removing, or
! replacing @cite{library_items}."
  @end itemize
  @end quotation
  
! See @ref{20b,,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{20d}
  @section RM 3.5.2(5): Alternative Character Sets
  
  
  @quotation
  
  "If an implementation supports a mode with alternative interpretations
! for @cite{Character} and @cite{Wide_Character}, the set of graphic
! characters of @cite{Character} should nevertheless remain a proper
! subset of the set of graphic characters of @cite{Wide_Character}.  Any
  character set 'localizations' should be reflected in the results of
  the subprograms defined in the language-defined package
! @cite{Characters.Handling} (see A.3) available in such a mode.  In a mode with
! an alternative interpretation of @cite{Character}, the implementation should
  also support a corresponding change in what is a legal
! @cite{identifier_letter}."
  @end quotation
  
  Not all wide character modes follow this advice, in particular the JIS
--- 13788,13824 ----
  @itemize *
  
  @item 
! A pragma used to complete a declaration, such as a pragma @code{Import};
  
  @item 
  A pragma used to configure the environment by adding, removing, or
! replacing @code{library_items}."
  @end itemize
  @end quotation
  
! See @ref{212,,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{214}
  @section RM 3.5.2(5): Alternative Character Sets
  
  
  @quotation
  
  "If an implementation supports a mode with alternative interpretations
! for @code{Character} and @code{Wide_Character}, the set of graphic
! characters of @code{Character} should nevertheless remain a proper
! subset of the set of graphic characters of @code{Wide_Character}.  Any
  character set 'localizations' should be reflected in the results of
  the subprograms defined in the language-defined package
! @code{Characters.Handling} (see A.3) available in such a mode.  In a mode with
! an alternative interpretation of @code{Character}, the implementation should
  also support a corresponding change in what is a legal
! @code{identifier_letter}."
  @end quotation
  
  Not all wide character modes follow this advice, in particular the JIS
*************** there is no such restriction.
*** 13600,13625 ****
  @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{20e}
  @section RM 3.5.4(28): Integer Types
  
  
  @quotation
  
! "An implementation should support @cite{Long_Integer} in addition to
! @cite{Integer} if the target machine supports 32-bit (or longer)
  arithmetic.  No other named integer subtypes are recommended for package
! @cite{Standard}.  Instead, appropriate named integer subtypes should be
! provided in the library package @cite{Interfaces} (see B.2)."
  @end quotation
  
! @cite{Long_Integer} is supported.  Other standard integer types are supported
  so this advice is not fully followed.  These types
  are supported for convenient interface to C, and so that all hardware
  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{20f}
  @section RM 3.5.4(29): Integer Types
  
  
--- 13831,13856 ----
  @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{215}
  @section RM 3.5.4(28): Integer Types
  
  
  @quotation
  
! "An implementation should support @code{Long_Integer} in addition to
! @code{Integer} if the target machine supports 32-bit (or longer)
  arithmetic.  No other named integer subtypes are recommended for package
! @code{Standard}.  Instead, appropriate named integer subtypes should be
! provided in the library package @code{Interfaces} (see B.2)."
  @end quotation
  
! @code{Long_Integer} is supported.  Other standard integer types are supported
  so this advice is not fully followed.  These types
  are supported for convenient interface to C, and so that all hardware
  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{216}
  @section RM 3.5.4(29): Integer Types
  
  
*************** types of the machine are easily availabl
*** 13627,13633 ****
  
  "An implementation for a two's complement machine should support
  modular types with a binary modulus up to @code{System.Max_Int*2+2}.  An
! implementation should support a non-binary modules up to @cite{Integer'Last}."
  @end quotation
  
  Followed.
--- 13858,13864 ----
  
  "An implementation for a two's complement machine should support
  modular types with a binary modulus up to @code{System.Max_Int*2+2}.  An
! implementation should support a non-binary modules up to @code{Integer'Last}."
  @end quotation
  
  Followed.
*************** Followed.
*** 13635,13641 ****
  @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{210}
  @section RM 3.5.5(8): Enumeration Values
  
  
--- 13866,13872 ----
  @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{217}
  @section RM 3.5.5(8): Enumeration Values
  
  
*************** Followed.
*** 13645,13651 ****
  subtype, if the value of the operand does not correspond to the internal
  code for any enumeration literal of its type (perhaps due to an
  un-initialized variable), then the implementation should raise
! @cite{Program_Error}.  This is particularly important for enumeration
  types with noncontiguous internal codes specified by an
  enumeration_representation_clause."
  @end quotation
--- 13876,13882 ----
  subtype, if the value of the operand does not correspond to the internal
  code for any enumeration literal of its type (perhaps due to an
  un-initialized variable), then the implementation should raise
! @code{Program_Error}.  This is particularly important for enumeration
  types with noncontiguous internal codes specified by an
  enumeration_representation_clause."
  @end quotation
*************** Followed.
*** 13655,13680 ****
  @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{211}
  @section RM 3.5.7(17): Float Types
  
  
  @quotation
  
! "An implementation should support @cite{Long_Float} in addition to
! @cite{Float} if the target machine supports 11 or more digits of
  precision.  No other named floating point subtypes are recommended for
! package @cite{Standard}.  Instead, appropriate named floating point subtypes
! should be provided in the library package @cite{Interfaces} (see B.2)."
  @end quotation
  
! @cite{Short_Float} and @cite{Long_Long_Float} are also provided.  The
  former provides improved compatibility with other implementations
  supporting this type.  The latter corresponds to the highest precision
  floating-point type supported by the hardware.  On most machines, this
! will be the same as @cite{Long_Float}, but on some machines, it will
  correspond to the IEEE extended form.  The notable case is all ia32
! (x86) implementations, where @cite{Long_Long_Float} corresponds to
  the 80-bit extended precision format supported in hardware on this
  processor.  Note that the 128-bit format on SPARC is not supported,
  since this is a software rather than a hardware format.
--- 13886,13911 ----
  @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{218}
  @section RM 3.5.7(17): Float Types
  
  
  @quotation
  
! "An implementation should support @code{Long_Float} in addition to
! @code{Float} if the target machine supports 11 or more digits of
  precision.  No other named floating point subtypes are recommended for
! package @code{Standard}.  Instead, appropriate named floating point subtypes
! should be provided in the library package @code{Interfaces} (see B.2)."
  @end quotation
  
! @code{Short_Float} and @code{Long_Long_Float} are also provided.  The
  former provides improved compatibility with other implementations
  supporting this type.  The latter corresponds to the highest precision
  floating-point type supported by the hardware.  On most machines, this
! will be the same as @code{Long_Float}, but on some machines, it will
  correspond to the IEEE extended form.  The notable case is all ia32
! (x86) implementations, where @code{Long_Long_Float} corresponds to
  the 80-bit extended precision format supported in hardware on this
  processor.  Note that the 128-bit format on SPARC is not supported,
  since this is a software rather than a hardware format.
*************** since this is a software rather than a h
*** 13685,13691 ****
  @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{212}
  @section RM 3.6.2(11): Multidimensional Arrays
  
  
--- 13916,13922 ----
  @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{219}
  @section RM 3.6.2(11): Multidimensional Arrays
  
  
*************** since this is a software rather than a h
*** 13693,13701 ****
  
  "An implementation should normally represent multidimensional arrays in
  row-major order, consistent with the notation used for multidimensional
! array aggregates (see 4.3.3).  However, if a pragma @cite{Convention}
! (@cite{Fortran}, ...) applies to a multidimensional array type, then
! column-major order should be used instead (see B.5, @cite{Interfacing with Fortran})."
  @end quotation
  
  Followed.
--- 13924,13932 ----
  
  "An implementation should normally represent multidimensional arrays in
  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.
*************** Followed.
*** 13703,13730 ****
  @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{213}
  @section RM 9.6(30-31): Duration'Small
  
  
  @quotation
  
! "Whenever possible in an implementation, the value of @cite{Duration'Small}
  should be no greater than 100 microseconds."
  @end quotation
  
! Followed.  (@cite{Duration'Small} = 10**(-9)).
  
  @quotation
  
! "The time base for @cite{delay_relative_statements} should be monotonic;
! it need not be the same time base as used for @cite{Calendar.Clock}."
  @end quotation
  
  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{214}
  @section RM 10.2.1(12): Consistent Representation
  
  
--- 13934,13961 ----
  @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{21a}
  @section RM 9.6(30-31): Duration'Small
  
  
  @quotation
  
! "Whenever possible in an implementation, the value of @code{Duration'Small}
  should be no greater than 100 microseconds."
  @end quotation
  
! Followed.  (@code{Duration'Small} = 10**(-9)).
  
  @quotation
  
! "The time base for @code{delay_relative_statements} should be monotonic;
! it need not be the same time base as used for @code{Calendar.Clock}."
  @end quotation
  
  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{21b}
  @section RM 10.2.1(12): Consistent Representation
  
  
*************** advice without severely impacting effici
*** 13746,13775 ****
  @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{215}
  @section RM 11.4.1(19): Exception Information
  
  
  @quotation
  
! "@cite{Exception_Message} by default and @cite{Exception_Information}
  should produce information useful for
! debugging.  @cite{Exception_Message} should be short, about one
! line.  @cite{Exception_Information} can be long.  @cite{Exception_Message}
  should not include the
! @cite{Exception_Name}.  @cite{Exception_Information} should include both
! the @cite{Exception_Name} and the @cite{Exception_Message}."
  @end quotation
  
  Followed.  For each exception that doesn't have a specified
! @cite{Exception_Message}, the compiler generates one containing the location
  of the raise statement.  This location has the form 'file_name:line', where
  file_name is the short file name (without path information) and line is the line
  number in the file.  Note that in the case of the Zero Cost Exception
  mechanism, these messages become redundant with the Exception_Information that
  contains a full backtrace of the calling sequence, so they are disabled.
  To disable explicitly the generation of the source location message, use the
! Pragma @cite{Discard_Names}.
  
  @geindex Suppression of checks
  
--- 13977,14006 ----
  @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{21c}
  @section RM 11.4.1(19): Exception Information
  
  
  @quotation
  
! "@code{Exception_Message} by default and @code{Exception_Information}
  should produce information useful for
! debugging.  @code{Exception_Message} should be short, about one
! line.  @code{Exception_Information} can be long.  @code{Exception_Message}
  should not include the
! @code{Exception_Name}.  @code{Exception_Information} should include both
! the @code{Exception_Name} and the @code{Exception_Message}."
  @end quotation
  
  Followed.  For each exception that doesn't have a specified
! @code{Exception_Message}, the compiler generates one containing the location
  of the raise statement.  This location has the form 'file_name:line', where
  file_name is the short file name (without path information) and line is the line
  number in the file.  Note that in the case of the Zero Cost Exception
  mechanism, these messages become redundant with the Exception_Information that
  contains a full backtrace of the calling sequence, so they are disabled.
  To disable explicitly the generation of the source location message, use the
! Pragma @code{Discard_Names}.
  
  @geindex Suppression of checks
  
*************** Pragma @cite{Discard_Names}.
*** 13777,13783 ****
  @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{216}
  @section RM 11.5(28): Suppression of Checks
  
  
--- 14008,14014 ----
  @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{21d}
  @section RM 11.5(28): Suppression of Checks
  
  
*************** Followed.
*** 13792,13798 ****
  @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{217}
  @section RM 13.1 (21-24): Representation Clauses
  
  
--- 14023,14029 ----
  @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{21e}
  @section RM 13.1 (21-24): Representation Clauses
  
  
*************** For example:
*** 13820,13826 ****
    for Y'Address use X'Address;>>
  
  
! "An implementation need not support a specification for the `Size`
  for a given composite subtype, nor the size or storage place for an
  object (including a component) of a given composite subtype, unless the
  constraints on the subtype and its composite subcomponents (if any) are
--- 14051,14057 ----
    for Y'Address use X'Address;>>
  
  
! "An implementation need not support a specification for the `@w{`}Size`@w{`}
  for a given composite subtype, nor the size or storage place for an
  object (including a component) of a given composite subtype, unless the
  constraints on the subtype and its composite subcomponents (if any) are
*************** Followed.
*** 13841,13847 ****
  @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{218}
  @section RM 13.2(6-8): Packed Types
  
  
--- 14072,14078 ----
  @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{21f}
  @section RM 13.2(6-8): Packed Types
  
  
*************** storage allocated to objects of the type
*** 13852,13864 ****
  speed of accessing components, subject to reasonable complexity in
  addressing calculations.
  
! The recommended level of support pragma @cite{Pack} is:
  
  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 @cite{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 @cite{Size} is
  greater than the word size may be allocated an integral number of words."
  @end quotation
  
--- 14083,14095 ----
  speed of accessing components, subject to reasonable complexity in
  addressing calculations.
  
! The recommended level of support pragma @code{Pack} is:
  
  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."
  @end quotation
  
*************** Followed.
*** 13880,13892 ****
  @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{219}
  @section RM 13.3(14-19): Address Clauses
  
  
  @quotation
  
! "For an array @cite{X}, @code{X'Address} should point at the first
  component of the array, and not at the array bounds."
  @end quotation
  
--- 14111,14123 ----
  @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{220}
  @section RM 13.3(14-19): Address Clauses
  
  
  @quotation
  
! "For an array @code{X}, @code{X'Address} should point at the first
  component of the array, and not at the array bounds."
  @end quotation
  
*************** Followed.
*** 13894,13904 ****
  
  @quotation
  
! "The recommended level of support for the @cite{Address} attribute is:
  
! @code{X'Address} should produce a useful result if @cite{X} is an
  object that is aliased or of a by-reference type, or is an entity whose
! @cite{Address} has been specified."
  @end quotation
  
  Followed.  A valid address will be produced even if none of those
--- 14125,14135 ----
  
  @quotation
  
! "The recommended level of support for the @code{Address} attribute is:
  
! @code{X'Address} should produce a useful result if @code{X} is an
  object that is aliased or of a by-reference type, or is an entity whose
! @code{Address} has been specified."
  @end quotation
  
  Followed.  A valid address will be produced even if none of those
*************** memory to ensure the address is valid.
*** 13907,13913 ****
  
  @quotation
  
! "An implementation should support @cite{Address} clauses for imported
  subprograms."
  @end quotation
  
--- 14138,14144 ----
  
  @quotation
  
! "An implementation should support @code{Address} clauses for imported
  subprograms."
  @end quotation
  
*************** Followed.
*** 13923,13929 ****
  
  @quotation
  
! "If the @cite{Address} of an object is specified, or it is imported or exported,
  then the implementation should not perform optimizations based on
  assumptions of no aliases."
  @end quotation
--- 14154,14160 ----
  
  @quotation
  
! "If the @code{Address} of an object is specified, or it is imported or exported,
  then the implementation should not perform optimizations based on
  assumptions of no aliases."
  @end quotation
*************** Followed.
*** 13933,13945 ****
  @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{21a}
  @section RM 13.3(29-35): Alignment Clauses
  
  
  @quotation
  
! "The recommended level of support for the @cite{Alignment} attribute for
  subtypes is:
  
  An implementation should support specified Alignments that are factors
--- 14164,14176 ----
  @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{221}
  @section RM 13.3(29-35): Alignment Clauses
  
  
  @quotation
  
! "The recommended level of support for the @code{Alignment} attribute for
  subtypes is:
  
  An implementation should support specified Alignments that are factors
*************** Followed.
*** 13961,13967 ****
  @quotation
  
  "An implementation need not support specified Alignments that are
! greater than the maximum @cite{Alignment} the implementation ever returns by
  default."
  @end quotation
  
--- 14192,14198 ----
  @quotation
  
  "An implementation need not support specified Alignments that are
! greater than the maximum @code{Alignment} the implementation ever returns by
  default."
  @end quotation
  
*************** Followed.
*** 13969,13975 ****
  
  @quotation
  
! "The recommended level of support for the @cite{Alignment} attribute for
  objects is:
  
  Same as above, for subtypes, but in addition:"
--- 14200,14206 ----
  
  @quotation
  
! "The recommended level of support for the @code{Alignment} attribute for
  objects is:
  
  Same as above, for subtypes, but in addition:"
*************** Followed.
*** 13990,14023 ****
  @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{21b}
  @section RM 13.3(42-43): Size Clauses
  
  
  @quotation
  
! "The recommended level of support for the @cite{Size} attribute of
  objects is:
  
! A @cite{Size} clause should be supported for an object if the specified
! @cite{Size} is at least as large as its subtype's @cite{Size}, and
  corresponds to a size in storage elements that is a multiple of the
! object's @cite{Alignment} (if the @cite{Alignment} is nonzero)."
  @end quotation
  
  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{21c}
  @section RM 13.3(50-56): Size Clauses
  
  
  @quotation
  
! "If the @cite{Size} of a subtype is specified, and allows for efficient
  independent addressability (see 9.10) on the target architecture, then
! the @cite{Size} of the following objects of the subtype should equal the
! @cite{Size} of the subtype:
  
  Aliased objects (including components)."
  @end quotation
--- 14221,14254 ----
  @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{222}
  @section RM 13.3(42-43): Size Clauses
  
  
  @quotation
  
! "The recommended level of support for the @code{Size} attribute of
  objects is:
  
! A @code{Size} clause should be supported for an object if the specified
! @code{Size} is at least as large as its subtype's @code{Size}, and
  corresponds to a size in storage elements that is a multiple of the
! object's @code{Alignment} (if the @code{Alignment} is nonzero)."
  @end quotation
  
  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{223}
  @section RM 13.3(50-56): Size Clauses
  
  
  @quotation
  
! "If the @code{Size} of a subtype is specified, and allows for efficient
  independent addressability (see 9.10) on the target architecture, then
! the @code{Size} of the following objects of the subtype should equal the
! @code{Size} of the subtype:
  
  Aliased objects (including components)."
  @end quotation
*************** pragma Implicit_Packing in the case of p
*** 14035,14055 ****
  
  @quotation
  
! "The recommended level of support for the @cite{Size} attribute of subtypes is:
  
! The @cite{Size} (if not specified) of a static discrete or fixed point
  subtype should be the number of bits needed to represent each value
  belonging to the subtype using an unbiased representation, leaving space
  for a sign bit only if the subtype contains negative values.  If such a
  subtype is a first subtype, then an implementation should support a
! specified @cite{Size} for it that reflects this representation."
  @end quotation
  
  Followed.
  
  @quotation
  
! "For a subtype implemented with levels of indirection, the @cite{Size}
  should include the size of the pointers, but not the size of what they
  point at."
  @end quotation
--- 14266,14286 ----
  
  @quotation
  
! "The recommended level of support for the @code{Size} attribute of subtypes is:
  
! The @code{Size} (if not specified) of a static discrete or fixed point
  subtype should be the number of bits needed to represent each value
  belonging to the subtype using an unbiased representation, leaving space
  for a sign bit only if the subtype contains negative values.  If such a
  subtype is a first subtype, then an implementation should support a
! specified @code{Size} for it that reflects this representation."
  @end quotation
  
  Followed.
  
  @quotation
  
! "For a subtype implemented with levels of indirection, the @code{Size}
  should include the size of the pointers, but not the size of what they
  point at."
  @end quotation
*************** Followed.
*** 14059,14075 ****
  @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{21d}
  @section RM 13.3(71-73): Component Size Clauses
  
  
  @quotation
  
! "The recommended level of support for the @cite{Component_Size}
  attribute is:
  
! An implementation need not support specified @cite{Component_Sizes} that are
! less than the @cite{Size} of the component subtype."
  @end quotation
  
  Followed.
--- 14290,14306 ----
  @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{224}
  @section RM 13.3(71-73): Component Size Clauses
  
  
  @quotation
  
! "The recommended level of support for the @code{Component_Size}
  attribute is:
  
! An implementation need not support specified @code{Component_Sizes} that are
! less than the @code{Size} of the component subtype."
  @end quotation
  
  Followed.
*************** Followed.
*** 14093,14099 ****
  @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{21e}
  @section RM 13.4(9-10): Enumeration Representation Clauses
  
  
--- 14324,14330 ----
  @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{225}
  @section RM 13.4(9-10): Enumeration Representation Clauses
  
  
*************** is:
*** 14104,14110 ****
  
  An implementation need not support enumeration representation clauses
  for boolean types, but should at minimum support the internal codes in
! the range @cite{System.Min_Int .. System.Max_Int}."
  @end quotation
  
  Followed.
--- 14335,14341 ----
  
  An implementation need not support enumeration representation clauses
  for boolean types, but should at minimum support the internal codes in
! the range @code{System.Min_Int .. System.Max_Int}."
  @end quotation
  
  Followed.
*************** Followed.
*** 14115,14128 ****
  @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{21f}
  @section RM 13.5.1(17-22): Record Representation Clauses
  
  
  @quotation
  
  "The recommended level of support for
! @cite{record_representation_clauses} 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,
--- 14346,14359 ----
  @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{226}
  @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,
*************** Followed.
*** 14135,14142 ****
  @quotation
  
  "A storage place should be supported if its size is equal to the
! @cite{Size} of the component subtype, and it starts and ends on a
! boundary that obeys the @cite{Alignment} of the component subtype."
  @end quotation
  
  Followed.
--- 14366,14373 ----
  @quotation
  
  "A storage place should be supported if its size is equal to the
! @code{Size} of the component subtype, and it starts and ends on a
! boundary that obeys the @code{Alignment} of the component subtype."
  @end quotation
  
  Followed.
*************** Followed.
*** 14144,14150 ****
  @quotation
  
  "If the default bit ordering applies to the declaration of a given type,
! then for a component whose subtype's @cite{Size} is less than the word
  size, any storage place that does not cross an aligned word boundary
  should be supported."
  @end quotation
--- 14375,14381 ----
  @quotation
  
  "If the default bit ordering applies to the declaration of a given type,
! then for a component whose subtype's @code{Size} is less than the word
  size, any storage place that does not cross an aligned word boundary
  should be supported."
  @end quotation
*************** clause for the tag field.
*** 14163,14169 ****
  
  @quotation
  
! "An implementation need not support a @cite{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."
--- 14394,14400 ----
  
  @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."
*************** and all mentioned features are implement
*** 14175,14181 ****
  @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{220}
  @section RM 13.5.2(5): Storage Place Attributes
  
  
--- 14406,14412 ----
  @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{227}
  @section RM 13.5.2(5): Storage Place Attributes
  
  
*************** Followed.  There are no such components
*** 14195,14201 ****
  @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{221}
  @section RM 13.5.3(7-8): Bit Ordering
  
  
--- 14426,14432 ----
  @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{228}
  @section RM 13.5.3(7-8): Bit Ordering
  
  
*************** Followed.  There are no such components
*** 14203,14209 ****
  
  "The recommended level of support for the non-default bit ordering is:
  
! If @cite{Word_Size} = @cite{Storage_Unit}, then the implementation
  should support the non-default bit ordering in addition to the default
  bit ordering."
  @end quotation
--- 14434,14440 ----
  
  "The recommended level of support for the non-default bit ordering is:
  
! If @code{Word_Size} = @code{Storage_Unit}, then the implementation
  should support the non-default bit ordering in addition to the default
  bit ordering."
  @end quotation
*************** Thus non-default bit ordering is not sup
*** 14215,14221 ****
  @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{222}
  @section RM 13.7(37): Address as Private
  
  
--- 14446,14452 ----
  @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{229}
  @section RM 13.7(37): Address as Private
  
  
*************** Thus non-default bit ordering is not sup
*** 14227,14263 ****
  Followed.
  
  @geindex Operations
! @geindex on `Address`
  
  @geindex Address
  @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{223}
  @section RM 13.7.1(16): Address Operations
  
  
  @quotation
  
! "Operations in @cite{System} and its children should reflect the target
  environment semantics as closely as is reasonable.  For example, on most
  machines, it makes sense for address arithmetic to 'wrap around'.
! Operations that do not make sense should raise @cite{Program_Error}."
  @end quotation
  
  Followed.  Address arithmetic is modular arithmetic that wraps around.  No
! operation raises @cite{Program_Error}, since all operations make sense.
  
  @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{224}
  @section RM 13.9(14-17): Unchecked Conversion
  
  
  @quotation
  
! "The @cite{Size} of an array object should not include its bounds; hence,
  the bounds should not be part of the converted data."
  @end quotation
  
--- 14458,14494 ----
  Followed.
  
  @geindex Operations
! @geindex on `@w{`}Address`@w{`}
  
  @geindex Address
  @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{22a}
  @section RM 13.7.1(16): Address Operations
  
  
  @quotation
  
! "Operations in @code{System} and its children should reflect the target
  environment semantics as closely as is reasonable.  For example, on most
  machines, it makes sense for address arithmetic to 'wrap around'.
! Operations that do not make sense should raise @code{Program_Error}."
  @end quotation
  
  Followed.  Address arithmetic is modular arithmetic that wraps around.  No
! operation raises @code{Program_Error}, since all operations make sense.
  
  @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{22b}
  @section RM 13.9(14-17): Unchecked Conversion
  
  
  @quotation
  
! "The @code{Size} of an array object should not include its bounds; hence,
  the bounds should not be part of the converted data."
  @end quotation
  
*************** Followed.
*** 14266,14272 ****
  @quotation
  
  "The implementation should not generate unnecessary run-time checks to
! ensure that the representation of @cite{S} is a representation of the
  target type.  It should take advantage of the permission to return by
  reference when possible.  Restrictions on unchecked conversions should be
  avoided unless required by the target environment."
--- 14497,14503 ----
  @quotation
  
  "The implementation should not generate unnecessary run-time checks to
! ensure that the representation of @code{S} is a representation of the
  target type.  It should take advantage of the permission to return by
  reference when possible.  Restrictions on unchecked conversions should be
  avoided unless required by the target environment."
*************** Followed.
*** 14295,14301 ****
  @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{225}
  @section RM 13.11(23-25): Implicit Heap Usage
  
  
--- 14526,14532 ----
  @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{22c}
  @section RM 13.11(23-25): Implicit Heap Usage
  
  
*************** Followed.
*** 14346,14358 ****
  @geindex Unchecked deallocation
  
  @node RM 13 11 2 17 Unchecked Deallocation,RM 13 13 2 17 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{226}
  @section RM 13.11.2(17): Unchecked Deallocation
  
  
  @quotation
  
! "For a standard storage pool, @cite{Free} should actually reclaim the
  storage."
  @end quotation
  
--- 14577,14589 ----
  @geindex Unchecked deallocation
  
  @node RM 13 11 2 17 Unchecked Deallocation,RM 13 13 2 17 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{22d}
  @section RM 13.11.2(17): Unchecked Deallocation
  
  
  @quotation
  
! "For a standard storage pool, @code{Free} should actually reclaim the
  storage."
  @end quotation
  
*************** Followed.
*** 14361,14375 ****
  @geindex Stream oriented attributes
  
  @node RM 13 13 2 17 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-17-stream-oriented-attributes}@anchor{227}
  @section RM 13.13.2(17): Stream Oriented Attributes
  
  
  @quotation
  
  "If a stream element is the same size as a storage element, then the
! normal in-memory representation should be used by @cite{Read} and
! @cite{Write} for scalar objects.  Otherwise, @cite{Read} and @cite{Write}
  should use the smallest number of stream elements needed to represent
  all values in the base range of the scalar type."
  @end quotation
--- 14592,14606 ----
  @geindex Stream oriented attributes
  
  @node RM 13 13 2 17 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-17-stream-oriented-attributes}@anchor{22e}
  @section RM 13.13.2(17): Stream Oriented Attributes
  
  
  @quotation
  
  "If a stream element is the same size as a storage element, then the
! normal in-memory representation should be used by @code{Read} and
! @code{Write} for scalar objects.  Otherwise, @code{Read} and @code{Write}
  should use the smallest number of stream elements needed to represent
  all values in the base range of the scalar type."
  @end quotation
*************** which specifies using the size of the fi
*** 14379,14385 ****
  However, such an implementation is based on direct binary
  representations and is therefore target- and endianness-dependent.
  To address this issue, GNAT also supplies an alternate implementation
! of the stream attributes @cite{Read} and @cite{Write},
  which uses the target-independent XDR standard representation
  for scalar types.
  
--- 14610,14616 ----
  However, such an implementation is based on direct binary
  representations and is therefore target- and endianness-dependent.
  To address this issue, GNAT also supplies an alternate implementation
! of the stream attributes @code{Read} and @code{Write},
  which uses the target-independent XDR standard representation
  for scalar types.
  
*************** for scalar types.
*** 14392,14398 ****
  @geindex Stream oriented attributes
  
  The XDR implementation is provided as an alternative body of the
! @cite{System.Stream_Attributes} package, in the file
  @code{s-stratt-xdr.adb} in the GNAT library.
  There is no @code{s-stratt-xdr.ads} file.
  In order to install the XDR implementation, do the following:
--- 14623,14629 ----
  @geindex Stream oriented attributes
  
  The XDR implementation is provided as an alternative body of the
! @code{System.Stream_Attributes} package, in the file
  @code{s-stratt-xdr.adb} in the GNAT library.
  There is no @code{s-stratt-xdr.ads} file.
  In order to install the XDR implementation, do the following:
*************** In order to install the XDR implementati
*** 14402,14408 ****
  
  @item 
  Replace the default implementation of the
! @cite{System.Stream_Attributes} package with the XDR implementation.
  For example on a Unix platform issue the commands:
  
  @example
--- 14633,14639 ----
  
  @item 
  Replace the default implementation of the
! @code{System.Stream_Attributes} package with the XDR implementation.
  For example on a Unix platform issue the commands:
  
  @example
*************** $ mv s-stratt-xdr.adb s-stratt.adb
*** 14412,14422 ****
  
  @item 
  Rebuild the GNAT run-time library as documented in
! the @cite{GNAT and Libraries} section of the @cite{GNAT User's Guide}.
  @end itemize
  
  @node RM A 1 52 Names of Predefined Numeric Types,RM A 3 2 49 Ada Characters Handling,RM 13 13 2 17 Stream Oriented Attributes,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-a-1-52-names-of-predefined-numeric-types}@anchor{228}
  @section RM A.1(52): Names of Predefined Numeric Types
  
  
--- 14643,14653 ----
  
  @item 
  Rebuild the GNAT run-time library as documented in
! the @emph{GNAT and Libraries} section of the @cite{GNAT User's Guide}.
  @end itemize
  
  @node RM A 1 52 Names of Predefined Numeric Types,RM A 3 2 49 Ada Characters Handling,RM 13 13 2 17 Stream Oriented Attributes,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-a-1-52-names-of-predefined-numeric-types}@anchor{22f}
  @section RM A.1(52): Names of Predefined Numeric Types
  
  
*************** Followed.
*** 14434,14448 ****
  @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{229}
! @section RM A.3.2(49): @cite{Ada.Characters.Handling}
  
  
  @quotation
  
! "If an implementation provides a localized definition of @cite{Character}
! or @cite{Wide_Character}, then the effects of the subprograms in
! @cite{Characters.Handling} should reflect the localizations.
  See also 3.5.2."
  @end quotation
  
--- 14665,14679 ----
  @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{230}
! @section RM A.3.2(49): @code{Ada.Characters.Handling}
  
  
  @quotation
  
! "If an implementation provides a localized definition of @code{Character}
! or @code{Wide_Character}, then the effects of the subprograms in
! @code{Characters.Handling} should reflect the localizations.
  See also 3.5.2."
  @end quotation
  
*************** Followed.  GNAT provides no such localiz
*** 14451,14457 ****
  @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{22a}
  @section RM A.4.4(106): Bounded-Length String Handling
  
  
--- 14682,14688 ----
  @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{231}
  @section RM A.4.4(106): Bounded-Length String Handling
  
  
*************** Followed.  No implicit pointers or dynam
*** 14466,14478 ****
  @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{22b}
  @section RM A.5.2(46-47): Random Number Generation
  
  
  @quotation
  
! "Any storage associated with an object of type @cite{Generator} should be
  reclaimed on exit from the scope of the object."
  @end quotation
  
--- 14697,14709 ----
  @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{232}
  @section RM A.5.2(46-47): Random Number Generation
  
  
  @quotation
  
! "Any storage associated with an object of type @code{Generator} should be
  reclaimed on exit from the scope of the object."
  @end quotation
  
*************** Followed.
*** 14482,14488 ****
  
  "If the generator period is sufficiently long in relation to the number
  of distinct initiator values, then each possible value of
! @cite{Initiator} passed to @cite{Reset} should initiate a sequence of
  random numbers that does not, in a practical sense, overlap the sequence
  initiated by any other value.  If this is not possible, then the mapping
  between initiator values and generator states should be a rapidly
--- 14713,14719 ----
  
  "If the generator period is sufficiently long in relation to the number
  of distinct initiator values, then each possible value of
! @code{Initiator} passed to @code{Reset} should initiate a sequence of
  random numbers that does not, in a practical sense, overlap the sequence
  initiated by any other value.  If this is not possible, then the mapping
  between initiator values and generator states should be a rapidly
*************** condition here to hold true.
*** 14495,14538 ****
  @geindex Get_Immediate
  
  @node RM A 10 7 23 Get_Immediate,RM B 1 39-41 Pragma Export,RM A 5 2 46-47 Random Number Generation,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-a-10-7-23-get-immediate}@anchor{22c}
! @section RM A.10.7(23): @cite{Get_Immediate}
  
  
  @quotation
  
! "The @cite{Get_Immediate} procedures should be implemented with
  unbuffered input.  For a device such as a keyboard, input should be
  available if a key has already been typed, whereas for a disk
  file, input should always be available except at end of file.  For a file
  associated with a keyboard-like device, any line-editing features of the
  underlying operating system should be disabled during the execution of
! @cite{Get_Immediate}."
  @end quotation
  
  Followed on all targets except VxWorks. For VxWorks, there is no way to
  provide this functionality that does not result in the input buffer being
! flushed before the @cite{Get_Immediate} call. A special unit
! @cite{Interfaces.Vxworks.IO} is provided that contains routines to enable
  this functionality.
  
  @geindex Export
  
  @node RM B 1 39-41 Pragma Export,RM B 2 12-13 Package Interfaces,RM A 10 7 23 Get_Immediate,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-b-1-39-41-pragma-export}@anchor{22d}
! @section RM B.1(39-41): Pragma @cite{Export}
  
  
  @quotation
  
! "If an implementation supports pragma @cite{Export} to a given language,
  then it should also allow the main subprogram to be written in that
  language.  It should support some mechanism for invoking the elaboration
  of the Ada library units included in the system, and for invoking the
  finalization of the environment task.  On typical systems, the
  recommended mechanism is to provide two subprograms whose link names are
! @cite{adainit} and @cite{adafinal}.  @cite{adainit} should contain the
! elaboration code for library units.  @cite{adafinal} should contain the
  finalization code.  These subprograms should have no effect the second
  and subsequent time they are called."
  @end quotation
--- 14726,14769 ----
  @geindex Get_Immediate
  
  @node RM A 10 7 23 Get_Immediate,RM B 1 39-41 Pragma Export,RM A 5 2 46-47 Random Number Generation,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-a-10-7-23-get-immediate}@anchor{233}
! @section RM A.10.7(23): @code{Get_Immediate}
  
  
  @quotation
  
! "The @code{Get_Immediate} procedures should be implemented with
  unbuffered input.  For a device such as a keyboard, input should be
  available if a key has already been typed, whereas for a disk
  file, input should always be available except at end of file.  For a file
  associated with a keyboard-like device, any line-editing features of the
  underlying operating system should be disabled during the execution of
! @code{Get_Immediate}."
  @end quotation
  
  Followed on all targets except VxWorks. For VxWorks, there is no way to
  provide this functionality that does not result in the input buffer being
! flushed before the @code{Get_Immediate} call. A special unit
! @code{Interfaces.Vxworks.IO} is provided that contains routines to enable
  this functionality.
  
  @geindex Export
  
  @node RM B 1 39-41 Pragma Export,RM B 2 12-13 Package Interfaces,RM A 10 7 23 Get_Immediate,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-b-1-39-41-pragma-export}@anchor{234}
! @section RM B.1(39-41): Pragma @code{Export}
  
  
  @quotation
  
! "If an implementation supports pragma @code{Export} to a given language,
  then it should also allow the main subprogram to be written in that
  language.  It should support some mechanism for invoking the elaboration
  of the Ada library units included in the system, and for invoking the
  finalization of the environment task.  On typical systems, the
  recommended mechanism is to provide two subprograms whose link names are
! @code{adainit} and @code{adafinal}.  @code{adainit} should contain the
! elaboration code for library units.  @code{adafinal} should contain the
  finalization code.  These subprograms should have no effect the second
  and subsequent time they are called."
  @end quotation
*************** Followed.
*** 14542,14563 ****
  @quotation
  
  "Automatic elaboration of pre-elaborated packages should be
! provided when pragma @cite{Export} is supported."
  @end quotation
  
  Followed when the main program is in Ada.  If the main program is in a
  foreign language, then
! @cite{adainit} must be called to elaborate pre-elaborated
  packages.
  
  @quotation
  
! "For each supported convention @cite{L} other than @cite{Intrinsic}, an
! implementation should support @cite{Import} and @cite{Export} pragmas
! for objects of @cite{L}-compatible types and for subprograms, and pragma
! @cite{Convention} for @cite{L}-eligible types and for subprograms,
  presuming the other language has corresponding features.  Pragma
! @cite{Convention} need not be supported for scalar types."
  @end quotation
  
  Followed.
--- 14773,14794 ----
  @quotation
  
  "Automatic elaboration of pre-elaborated packages should be
! provided when pragma @code{Export} is supported."
  @end quotation
  
  Followed when the main program is in Ada.  If the main program is in a
  foreign language, then
! @code{adainit} must be called to elaborate pre-elaborated
  packages.
  
  @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
  
  Followed.
*************** Followed.
*** 14567,14574 ****
  @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{22e}
! @section RM B.2(12-13): Package @cite{Interfaces}
  
  
  @quotation
--- 14798,14805 ----
  @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{235}
! @section RM B.2(12-13): Package @code{Interfaces}
  
  
  @quotation
*************** package should contain any declarations
*** 14579,14585 ****
  interfacing to the language (implementation) represented by the
  convention.  Any declarations useful for interfacing to any language on
  the given hardware architecture should be provided directly in
! @cite{Interfaces}."
  @end quotation
  
  Followed.
--- 14810,14816 ----
  interfacing to the language (implementation) represented by the
  convention.  Any declarations useful for interfacing to any language on
  the given hardware architecture should be provided directly in
! @code{Interfaces}."
  @end quotation
  
  Followed.
*************** Followed.  GNAT provides all the package
*** 14597,14603 ****
  @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{22f}
  @section RM B.3(63-71): Interfacing with C
  
  
--- 14828,14834 ----
  @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{236}
  @section RM B.3(63-71): Interfacing with C
  
  
*************** Followed.
*** 14625,14631 ****
  
  @quotation
  
! "An Ada @cite{in} scalar parameter is passed as a scalar argument to a C
  function."
  @end quotation
  
--- 14856,14862 ----
  
  @quotation
  
! "An Ada @code{in} scalar parameter is passed as a scalar argument to a C
  function."
  @end quotation
  
*************** Followed.
*** 14633,14652 ****
  
  @quotation
  
! "An Ada @cite{in} parameter of an access-to-object type with designated
! type @cite{T} is passed as a @code{t*} argument to a C function,
! where @code{t} is the C type corresponding to the Ada type @cite{T}."
  @end quotation
  
  Followed.
  
  @quotation
  
! "An Ada access @cite{T} parameter, or an Ada @cite{out} or @cite{in out}
! parameter of an elementary type @cite{T}, is passed as a @code{t*}
  argument to a C function, where @code{t} is the C type corresponding to
! the Ada type @cite{T}.  In the case of an elementary @cite{out} or
! @cite{in out} parameter, a pointer to a temporary copy is used to
  preserve by-copy semantics."
  @end quotation
  
--- 14864,14883 ----
  
  @quotation
  
! "An Ada @code{in} parameter of an access-to-object type with designated
! type @code{T} is passed as a @code{t*} argument to a C function,
! where @code{t} is the C type corresponding to the Ada type @code{T}."
  @end quotation
  
  Followed.
  
  @quotation
  
! "An Ada access @code{T} parameter, or an Ada @code{out} or @code{in out}
! parameter of an elementary type @code{T}, is passed as a @code{t*}
  argument to a C function, where @code{t} is the C type corresponding to
! the Ada type @code{T}.  In the case of an elementary @code{out} or
! @code{in out} parameter, a pointer to a temporary copy is used to
  preserve by-copy semantics."
  @end quotation
  
*************** Followed.
*** 14654,14662 ****
  
  @quotation
  
! "An Ada parameter of a record type @cite{T}, of any mode, is passed as a
  @code{t*} argument to a C function, where @code{t} is the C
! structure corresponding to the Ada type @cite{T}."
  @end quotation
  
  Followed.  This convention may be overridden by the use of the C_Pass_By_Copy
--- 14885,14893 ----
  
  @quotation
  
! "An Ada parameter of a record type @code{T}, of any mode, is passed as a
  @code{t*} argument to a C function, where @code{t} is the C
! structure corresponding to the Ada type @code{T}."
  @end quotation
  
  Followed.  This convention may be overridden by the use of the C_Pass_By_Copy
*************** call using an extended import or export
*** 14665,14673 ****
  
  @quotation
  
! "An Ada parameter of an array type with component type @cite{T}, of any
  mode, is passed as a @code{t*} argument to a C function, where
! @code{t} is the C type corresponding to the Ada type @cite{T}."
  @end quotation
  
  Followed.
--- 14896,14904 ----
  
  @quotation
  
! "An Ada parameter of an array type with component type @code{T}, of any
  mode, is passed as a @code{t*} argument to a C function, where
! @code{t} is the C type corresponding to the Ada type @code{T}."
  @end quotation
  
  Followed.
*************** Followed.
*** 14685,14691 ****
  @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{230}
  @section RM B.4(95-98): Interfacing with COBOL
  
  
--- 14916,14922 ----
  @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{237}
  @section RM B.4(95-98): Interfacing with COBOL
  
  
*************** Followed.
*** 14699,14706 ****
  
  @quotation
  
! "An Ada access @cite{T} parameter is passed as a @code{BY REFERENCE} data item of
! the COBOL type corresponding to @cite{T}."
  @end quotation
  
  Followed.
--- 14930,14937 ----
  
  @quotation
  
! "An Ada access @code{T} parameter is passed as a @code{BY REFERENCE} data item of
! the COBOL type corresponding to @code{T}."
  @end quotation
  
  Followed.
*************** Followed.
*** 14726,14732 ****
  @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{231}
  @section RM B.5(22-26): Interfacing with Fortran
  
  
--- 14957,14963 ----
  @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{238}
  @section RM B.5(22-26): Interfacing with Fortran
  
  
*************** Followed.
*** 14754,14762 ****
  
  @quotation
  
! "An Ada parameter of an elementary, array, or record type @cite{T} is
! passed as a @cite{T} argument to a Fortran procedure, where @cite{T} is
! the Fortran type corresponding to the Ada type @cite{T}, and where the
  INTENT attribute of the corresponding dummy argument matches the Ada
  formal parameter mode; the Fortran implementation's parameter passing
  conventions are used.  For elementary types, a local copy is used if
--- 14985,14993 ----
  
  @quotation
  
! "An Ada parameter of an elementary, array, or record type @code{T} is
! passed as a @code{T} argument to a Fortran procedure, where @code{T} is
! the Fortran type corresponding to the Ada type @code{T}, and where the
  INTENT attribute of the corresponding dummy argument matches the Ada
  formal parameter mode; the Fortran implementation's parameter passing
  conventions are used.  For elementary types, a local copy is used if
*************** Followed.
*** 14777,14783 ****
  @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{232}
  @section RM C.1(3-5): Access to Machine Operations
  
  
--- 15008,15014 ----
  @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{239}
  @section RM C.1(3-5): Access to Machine Operations
  
  
*************** Followed.
*** 14794,14800 ****
  
  "The interfacing pragmas (see Annex B) should support interface to
  assembler; the default assembler should be associated with the
! convention identifier @cite{Assembler}."
  @end quotation
  
  Followed.
--- 15025,15031 ----
  
  "The interfacing pragmas (see Annex B) should support interface to
  assembler; the default assembler should be associated with the
! convention identifier @code{Assembler}."
  @end quotation
  
  Followed.
*************** object that is specified as exported."
*** 14812,14818 ****
  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{233}
  @section RM C.1(10-16): Access to Machine Operations
  
  
--- 15043,15049 ----
  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{23a}
  @section RM C.1(10-16): Access to Machine Operations
  
  
*************** Followed on any target supporting such o
*** 14873,14885 ****
  @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{234}
  @section RM C.3(28): Interrupt Support
  
  
  @quotation
  
! "If the @cite{Ceiling_Locking} policy is not in effect, the
  implementation should provide means for the application to specify which
  interrupts are to be blocked during protected actions, if the underlying
  system allows for a finer-grain control of interrupt blocking."
--- 15104,15116 ----
  @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{23b}
  @section RM C.3(28): Interrupt Support
  
  
  @quotation
  
! "If the @code{Ceiling_Locking} policy is not in effect, the
  implementation should provide means for the application to specify which
  interrupts are to be blocked during protected actions, if the underlying
  system allows for a finer-grain control of interrupt blocking."
*************** of interrupt blocking.
*** 14891,14897 ****
  @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{235}
  @section RM C.3.1(20-21): Protected Procedure Handlers
  
  
--- 15122,15128 ----
  @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{23c}
  @section RM C.3.1(20-21): Protected Procedure Handlers
  
  
*************** implementation-defined restrictions shou
*** 14912,14932 ****
  
  Followed.  Compile time warnings are given when possible.
  
! @geindex Package `Interrupts`
  
  @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{236}
! @section RM C.3.2(25): Package @cite{Interrupts}
  
  
  @quotation
  
  "If implementation-defined forms of interrupt handler procedures are
  supported, such as protected procedures with parameters, then for each
! such form of a handler, a type analogous to @cite{Parameterless_Handler}
! should be specified in a child package of @cite{Interrupts}, with the
  same operations as in the predefined package Interrupts."
  @end quotation
  
--- 15143,15163 ----
  
  Followed.  Compile time warnings are given when possible.
  
! @geindex Package `@w{`}Interrupts`@w{`}
  
  @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{23d}
! @section RM C.3.2(25): Package @code{Interrupts}
  
  
  @quotation
  
  "If implementation-defined forms of interrupt handler procedures are
  supported, such as protected procedures with parameters, then for each
! such form of a handler, a type analogous to @code{Parameterless_Handler}
! should be specified in a child package of @code{Interrupts}, with the
  same operations as in the predefined package Interrupts."
  @end quotation
  
*************** Followed.
*** 14935,14941 ****
  @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{237}
  @section RM C.4(14): Pre-elaboration Requirements
  
  
--- 15166,15172 ----
  @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{23e}
  @section RM C.4(14): Pre-elaboration Requirements
  
  
*************** Followed.  Executable code is generated
*** 14951,14958 ****
  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{238}
! @section RM C.5(8): Pragma @cite{Discard_Names}
  
  
  @quotation
--- 15182,15189 ----
  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{23f}
! @section RM C.5(8): Pragma @code{Discard_Names}
  
  
  @quotation
*************** Followed.
*** 14969,14975 ****
  @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{239}
  @section RM C.7.2(30): The Package Task_Attributes
  
  
--- 15200,15206 ----
  @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{240}
  @section RM C.7.2(30): The Package Task_Attributes
  
  
*************** time must be completely deterministic.
*** 14980,14988 ****
  recommended that the storage for task attributes will be pre-allocated
  statically and not from the heap.  This can be accomplished by either
  placing restrictions on the number and the size of the task's
! attributes, or by using the pre-allocated storage for the first @cite{N}
  attribute objects, and the heap for the others.  In the latter case,
! @cite{N} should be documented."
  @end quotation
  
  Not followed.  This implementation is not targeted to such a domain.
--- 15211,15219 ----
  recommended that the storage for task attributes will be pre-allocated
  statically and not from the heap.  This can be accomplished by either
  placing restrictions on the number and the size of the task's
! attributes, or by using the pre-allocated storage for the first @code{N}
  attribute objects, and the heap for the others.  In the latter case,
! @code{N} should be documented."
  @end quotation
  
  Not followed.  This implementation is not targeted to such a domain.
*************** Not followed.  This implementation is no
*** 14990,14996 ****
  @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{23a}
  @section RM D.3(17): Locking Policies
  
  
--- 15221,15227 ----
  @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{241}
  @section RM D.3(17): Locking Policies
  
  
*************** locking policies defined by the implemen
*** 15001,15013 ****
  @end quotation
  
  Followed.  Two implementation-defined locking policies are defined,
! whose names (@cite{Inheritance_Locking} and
! @cite{Concurrent_Readers_Locking}) follow this suggestion.
  
  @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{23b}
  @section RM D.4(16): Entry Queuing Policies
  
  
--- 15232,15244 ----
  @end quotation
  
  Followed.  Two implementation-defined locking policies are defined,
! whose names (@code{Inheritance_Locking} and
! @code{Concurrent_Readers_Locking}) follow this suggestion.
  
  @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{242}
  @section RM D.4(16): Entry Queuing Policies
  
  
*************** Followed.  No such implementation-define
*** 15022,15037 ****
  @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{23c}
  @section RM D.6(9-10): Preemptive Abort
  
  
  @quotation
  
! "Even though the @cite{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 @cite{abort_statement} to block."
  @end quotation
  
  Followed.
--- 15253,15268 ----
  @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{243}
  @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.
*************** Followed.
*** 15048,15054 ****
  @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{23d}
  @section RM D.7(21): Tasking Restrictions
  
  
--- 15279,15285 ----
  @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{244}
  @section RM D.7(21): Tasking Restrictions
  
  
*************** restrictions to produce a more efficient
*** 15060,15080 ****
  
  GNAT currently takes advantage of these restrictions by providing an optimized
  run time when the Ravenscar profile and the GNAT restricted run time set
! of restrictions are specified.  See pragma @cite{Profile (Ravenscar)} and
! pragma @cite{Profile (Restricted)} for more details.
  
  @geindex Time
  @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{23e}
  @section RM D.8(47-49): Monotonic Time
  
  
  @quotation
  
  "When appropriate, implementations should provide configuration
! mechanisms to change the value of @cite{Tick}."
  @end quotation
  
  Such configuration mechanisms are not appropriate to this implementation
--- 15291,15311 ----
  
  GNAT currently takes advantage of these restrictions by providing an optimized
  run time when the Ravenscar profile and the GNAT restricted run time set
! of restrictions are specified.  See pragma @code{Profile (Ravenscar)} and
! pragma @code{Profile (Restricted)} for more details.
  
  @geindex Time
  @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{245}
  @section RM D.8(47-49): Monotonic Time
  
  
  @quotation
  
  "When appropriate, implementations should provide configuration
! mechanisms to change the value of @code{Tick}."
  @end quotation
  
  Such configuration mechanisms are not appropriate to this implementation
*************** and are thus not supported.
*** 15082,15088 ****
  
  @quotation
  
! "It is recommended that @cite{Calendar.Clock} and @cite{Real_Time.Clock}
  be implemented as transformations of the same time base."
  @end quotation
  
--- 15313,15319 ----
  
  @quotation
  
! "It is recommended that @code{Calendar.Clock} and @code{Real_Time.Clock}
  be implemented as transformations of the same time base."
  @end quotation
  
*************** Followed.
*** 15092,15098 ****
  
  "It is recommended that the best time base which exists in
  the underlying system be available to the application through
! @cite{Clock}.  @cite{Best} may mean highest accuracy or largest range."
  @end quotation
  
  Followed.
--- 15323,15329 ----
  
  "It is recommended that the best time base which exists in
  the underlying system be available to the application through
! @code{Clock}.  @cite{Best} may mean highest accuracy or largest range."
  @end quotation
  
  Followed.
*************** Followed.
*** 15102,15108 ****
  @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{23f}
  @section RM E.5(28-29): Partition Communication Subsystem
  
  
--- 15333,15339 ----
  @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{246}
  @section RM E.5(28-29): Partition Communication Subsystem
  
  
*************** GNAT.
*** 15119,15127 ****
  
  @quotation
  
! "The @cite{Write} operation on a stream of type @cite{Params_Stream_Type}
! should raise @cite{Storage_Error} if it runs out of space trying to
! write the @cite{Item} into the stream."
  @end quotation
  
  Followed by GLADE, a separately supplied PCS that can be used with
--- 15350,15358 ----
  
  @quotation
  
! "The @code{Write} operation on a stream of type @code{Params_Stream_Type}
! should raise @code{Storage_Error} if it runs out of space trying to
! write the @code{Item} into the stream."
  @end quotation
  
  Followed by GLADE, a separately supplied PCS that can be used with
*************** GNAT.
*** 15130,15136 ****
  @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{240}
  @section RM F(7): COBOL Support
  
  
--- 15361,15367 ----
  @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{247}
  @section RM F(7): COBOL Support
  
  
*************** GNAT.
*** 15138,15146 ****
  
  "If COBOL (respectively, C) is widely supported in the target
  environment, implementations supporting the Information Systems Annex
! should provide the child package @cite{Interfaces.COBOL} (respectively,
! @cite{Interfaces.C}) specified in Annex B and should support a
! @cite{convention_identifier} of COBOL (respectively, C) in the interfacing
  pragmas (see Annex B), thus allowing Ada programs to interface with
  programs written in that language."
  @end quotation
--- 15369,15377 ----
  
  "If COBOL (respectively, C) is widely supported in the target
  environment, implementations supporting the Information Systems Annex
! should provide the child package @code{Interfaces.COBOL} (respectively,
! @code{Interfaces.C}) specified in Annex B and should support a
! @code{convention_identifier} of COBOL (respectively, C) in the interfacing
  pragmas (see Annex B), thus allowing Ada programs to interface with
  programs written in that language."
  @end quotation
*************** Followed.
*** 15150,15172 ****
  @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{241}
  @section RM F.1(2): Decimal Radix Support
  
  
  @quotation
  
  "Packed decimal should be used as the internal representation for objects
! of subtype @cite{S} when @cite{S}'Machine_Radix = 10."
  @end quotation
  
! Not followed.  GNAT ignores @cite{S}'Machine_Radix and always uses binary
  representations.
  
  @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{242}
  @section RM G: Numerics
  
  
--- 15381,15403 ----
  @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{248}
  @section RM F.1(2): Decimal Radix Support
  
  
  @quotation
  
  "Packed decimal should be used as the internal representation for objects
! of subtype @code{S} when @code{S}'Machine_Radix = 10."
  @end quotation
  
! Not followed.  GNAT ignores @code{S}'Machine_Radix and always uses binary
  representations.
  
  @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{249}
  @section RM G: Numerics
  
  
*************** representations.
*** 15174,15182 ****
  
  "If Fortran (respectively, C) is widely supported in the target
  environment, implementations supporting the Numerics Annex
! should provide the child package @cite{Interfaces.Fortran} (respectively,
! @cite{Interfaces.C}) specified in Annex B and should support a
! @cite{convention_identifier} of Fortran (respectively, C) in the interfacing
  pragmas (see Annex B), thus allowing Ada programs to interface with
  programs written in that language."
  @end quotation
--- 15405,15413 ----
  
  "If Fortran (respectively, C) is widely supported in the target
  environment, implementations supporting the Numerics Annex
! should provide the child package @code{Interfaces.Fortran} (respectively,
! @code{Interfaces.C}) specified in Annex B and should support a
! @code{convention_identifier} of Fortran (respectively, C) in the interfacing
  pragmas (see Annex B), thus allowing Ada programs to interface with
  programs written in that language."
  @end quotation
*************** Followed.
*** 15186,15192 ****
  @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{243}
  @section RM G.1.1(56-58): Complex Types
  
  
--- 15417,15423 ----
  @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{24a}
  @section RM G.1.1(56-58): Complex Types
  
  
*************** Not followed.
*** 15215,15222 ****
  complex operand and a real operand is that the imaginary operand remains
  unchanged, an implementation should not perform this operation by first
  promoting the real operand to complex type and then performing a full
! complex addition.  In implementations in which the @cite{Signed_Zeros}
! attribute of the component type is @cite{True} (and which therefore
  conform to IEC 559:1989 in regard to the handling of the sign of zero in
  predefined arithmetic operations), the latter technique will not
  generate the required result when the imaginary component of the complex
--- 15446,15453 ----
  complex operand and a real operand is that the imaginary operand remains
  unchanged, an implementation should not perform this operation by first
  promoting the real operand to complex type and then performing a full
! complex addition.  In implementations in which the @code{Signed_Zeros}
! attribute of the component type is @code{True} (and which therefore
  conform to IEC 559:1989 in regard to the handling of the sign of zero in
  predefined arithmetic operations), the latter technique will not
  generate the required result when the imaginary component of the complex
*************** Not followed.
*** 15231,15245 ****
  
  @quotation
  
! "Implementations in which @cite{Real'Signed_Zeros} is @cite{True} should
  attempt to provide a rational treatment of the signs of zero results and
! result components.  As one example, the result of the @cite{Argument}
  function should have the sign of the imaginary component of the
! parameter @cite{X} when the point represented by that parameter lies on
  the positive real axis; as another, the sign of the imaginary component
! of the @cite{Compose_From_Polar} function should be the same as
! (respectively, the opposite of) that of the @cite{Argument} parameter when that
! parameter has a value of zero and the @cite{Modulus} parameter has a
  nonnegative (respectively, negative) value."
  @end quotation
  
--- 15462,15476 ----
  
  @quotation
  
! "Implementations in which @code{Real'Signed_Zeros} is @code{True} should
  attempt to provide a rational treatment of the signs of zero results and
! result components.  As one example, the result of the @code{Argument}
  function should have the sign of the imaginary component of the
! parameter @code{X} when the point represented by that parameter lies on
  the positive real axis; as another, the sign of the imaginary component
! of the @code{Compose_From_Polar} function should be the same as
! (respectively, the opposite of) that of the @code{Argument} parameter when that
! parameter has a value of zero and the @code{Modulus} parameter has a
  nonnegative (respectively, negative) value."
  @end quotation
  
*************** Followed.
*** 15248,15261 ****
  @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{244}
  @section RM G.1.2(49): Complex Elementary Functions
  
  
  @quotation
  
! "Implementations in which @cite{Complex_Types.Real'Signed_Zeros} is
! @cite{True} should attempt to provide a rational treatment of the signs
  of zero results and result components.  For example, many of the complex
  elementary functions have components that are odd functions of one of
  the parameter components; in these cases, the result component should
--- 15479,15492 ----
  @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{24b}
  @section RM G.1.2(49): Complex Elementary Functions
  
  
  @quotation
  
! "Implementations in which @code{Complex_Types.Real'Signed_Zeros} is
! @code{True} should attempt to provide a rational treatment of the signs
  of zero results and result components.  For example, many of the complex
  elementary functions have components that are odd functions of one of
  the parameter components; in these cases, the result component should
*************** Followed.
*** 15270,15289 ****
  @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{245}
  @section RM G.2.4(19): Accuracy Requirements
  
  
  @quotation
  
  "The versions of the forward trigonometric functions without a
! @cite{Cycle} parameter should not be implemented by calling the
! corresponding version with a @cite{Cycle} parameter of
! @cite{2.0*Numerics.Pi}, since this will not provide the required
  accuracy in some portions of the domain.  For the same reason, the
! version of @cite{Log} without a @cite{Base} parameter should not be
! implemented by calling the corresponding version with a @cite{Base}
! parameter of @cite{Numerics.e}."
  @end quotation
  
  Followed.
--- 15501,15520 ----
  @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{24c}
  @section RM G.2.4(19): Accuracy Requirements
  
  
  @quotation
  
  "The versions of the forward trigonometric functions without a
! @code{Cycle} parameter should not be implemented by calling the
! corresponding version with a @code{Cycle} parameter of
! @code{2.0*Numerics.Pi}, since this will not provide the required
  accuracy in some portions of the domain.  For the same reason, the
! version of @code{Log} without a @code{Base} parameter should not be
! implemented by calling the corresponding version with a @code{Base}
! parameter of @code{Numerics.e}."
  @end quotation
  
  Followed.
*************** Followed.
*** 15294,15309 ****
  @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{246}
  @section RM G.2.6(15): Complex Arithmetic Accuracy
  
  
  @quotation
  
! "The version of the @cite{Compose_From_Polar} function without a
! @cite{Cycle} parameter should not be implemented by calling the
! corresponding version with a @cite{Cycle} parameter of
! @cite{2.0*Numerics.Pi}, since this will not provide the required
  accuracy in some portions of the domain."
  @end quotation
  
--- 15525,15540 ----
  @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{24d}
  @section RM G.2.6(15): Complex Arithmetic Accuracy
  
  
  @quotation
  
! "The version of the @code{Compose_From_Polar} function without a
! @code{Cycle} parameter should not be implemented by calling the
! corresponding version with a @code{Cycle} parameter of
! @code{2.0*Numerics.Pi}, since this will not provide the required
  accuracy in some portions of the domain."
  @end quotation
  
*************** Followed.
*** 15312,15324 ****
  @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{247}
  @section RM H.6(15/2): Pragma Partition_Elaboration_Policy
  
  
  @quotation
  
! "If the partition elaboration policy is @cite{Sequential} and the
  Environment task becomes permanently blocked during elaboration then the
  partition is deadlocked and it is recommended that the partition be
  immediately terminated."
--- 15543,15555 ----
  @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{24e}
  @section RM H.6(15/2): Pragma Partition_Elaboration_Policy
  
  
  @quotation
  
! "If the partition elaboration policy is @code{Sequential} and the
  Environment task becomes permanently blocked during elaboration then the
  partition is deadlocked and it is recommended that the partition be
  immediately terminated."
*************** immediately terminated."
*** 15327,15333 ****
  Not followed.
  
  @node Implementation Defined Characteristics,Intrinsic Subprograms,Implementation Advice,Top
! @anchor{gnat_rm/implementation_defined_characteristics implementation-defined-characteristics}@anchor{b}@anchor{gnat_rm/implementation_defined_characteristics doc}@anchor{248}@anchor{gnat_rm/implementation_defined_characteristics id1}@anchor{249}
  @chapter Implementation Defined Characteristics
  
  
--- 15558,15564 ----
  Not followed.
  
  @node Implementation Defined Characteristics,Intrinsic Subprograms,Implementation Advice,Top
! @anchor{gnat_rm/implementation_defined_characteristics implementation-defined-characteristics}@anchor{b}@anchor{gnat_rm/implementation_defined_characteristics doc}@anchor{24f}@anchor{gnat_rm/implementation_defined_characteristics id1}@anchor{250}
  @chapter Implementation Defined Characteristics
  
  
*************** There are no variations from the standar
*** 15388,15394 ****
  interactions.  See 1.1.3(10)."
  @end itemize
  
! Any @cite{code_statement} can potentially cause external interactions.
  
  
  @itemize *
--- 15619,15625 ----
  interactions.  See 1.1.3(10)."
  @end itemize
  
! Any @emph{code_statement} can potentially cause external interactions.
  
  
  @itemize *
*************** See @ref{7,,Implementation Defined Pragm
*** 15446,15455 ****
  @itemize *
  
  @item 
! "Effect of pragma @cite{Optimize}.  See 2.8(27)."
  @end itemize
  
! Pragma @cite{Optimize}, if given with a @cite{Time} or @cite{Space}
  parameter, checks that the optimization flag is set, and aborts if it is
  not.
  
--- 15677,15686 ----
  @itemize *
  
  @item 
! "Effect of pragma @code{Optimize}.  See 2.8(27)."
  @end itemize
  
! Pragma @code{Optimize}, if given with a @code{Time} or @code{Space}
  parameter, checks that the optimization flag is set, and aborts if it is
  not.
  
*************** not.
*** 15459,15465 ****
  @item 
  "The sequence of characters of the value returned by
  @code{S'Image} when some of the graphic characters of
! @code{S'Wide_Image} are not defined in @cite{Character}.  See
  3.5(37)."
  @end itemize
  
--- 15690,15696 ----
  @item 
  "The sequence of characters of the value returned by
  @code{S'Image} when some of the graphic characters of
! @code{S'Wide_Image} are not defined in @code{Character}.  See
  3.5(37)."
  @end itemize
  
*************** further details.
*** 15472,15478 ****
  
  @item 
  "The predefined integer types declared in
! @cite{Standard}.  See 3.5.4(25)."
  @end itemize
  
  
--- 15703,15709 ----
  
  @item 
  "The predefined integer types declared in
! @code{Standard}.  See 3.5.4(25)."
  @end itemize
  
  
*************** The precision and range is as defined by
*** 15565,15571 ****
  
  @item 
  "The predefined floating point types declared in
! @cite{Standard}.  See 3.5.7(16)."
  @end itemize
  
  
--- 15796,15802 ----
  
  @item 
  "The predefined floating point types declared in
! @code{Standard}.  See 3.5.7(16)."
  @end itemize
  
  
*************** Representation
*** 15620,15626 ****
  "The small of an ordinary fixed point type.  See 3.5.9(8)."
  @end itemize
  
! @cite{Fine_Delta} is 2**(-63)
  
  
  @itemize *
--- 15851,15857 ----
  "The small of an ordinary fixed point type.  See 3.5.9(8)."
  @end itemize
  
! @code{Fine_Delta} is 2**(-63)
  
  
  @itemize *
*************** supported for fixed point types.  See 3.
*** 15631,15637 ****
  @end itemize
  
  Any combinations are permitted that do not result in a small less than
! @cite{Fine_Delta} and do not result in a mantissa larger than 63 bits.
  If the mantissa is larger than 53 bits on machines where Long_Long_Float
  is 64 bits (true of all architectures except ia32), then the output from
  Text_IO is accurate to only 53 bits, rather than the full mantissa.  This
--- 15862,15868 ----
  @end itemize
  
  Any combinations are permitted that do not result in a small less than
! @code{Fine_Delta} and do not result in a mantissa larger than 63 bits.
  If the mantissa is larger than 53 bits on machines where Long_Long_Float
  is 64 bits (true of all architectures except ia32), then the output from
  Text_IO is accurate to only 53 bits, rather than the full mantissa.  This
*************** is because floating-point conversions ar
*** 15641,15651 ****
  @itemize *
  
  @item 
! "The result of @cite{Tags.Expanded_Name} for types declared
! within an unnamed @cite{block_statement}.  See 3.9(10)."
  @end itemize
  
! Block numbers of the form @cite{B`nnn`}, where @cite{nnn} is a
  decimal integer are allocated.
  
  
--- 15872,15882 ----
  @itemize *
  
  @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.
  
  
*************** There are no implementation-defined time
*** 15674,15710 ****
  @end itemize
  
  See 9.6(20).  The time base used is that provided by the C library
! function @cite{gettimeofday}.
  
  
  @itemize *
  
  @item 
! "The time base of the type @cite{Calendar.Time}.  See
  9.6(23)."
  @end itemize
  
  The time base used is that provided by the C library function
! @cite{gettimeofday}.
  
  
  @itemize *
  
  @item 
! "The time zone used for package @cite{Calendar}
  operations.  See 9.6(24)."
  @end itemize
  
! The time zone used by package @cite{Calendar} is the current system time zone
  setting for local time, as accessed by the C library function
! @cite{localtime}.
  
  
  @itemize *
  
  @item 
! "Any limit on @cite{delay_until_statements} of
! @cite{select_statements}.  See 9.6(29)."
  @end itemize
  
  There are no such limits.
--- 15905,15941 ----
  @end itemize
  
  See 9.6(20).  The time base used is that provided by the C library
! function @code{gettimeofday}.
  
  
  @itemize *
  
  @item 
! "The time base of the type @code{Calendar.Time}.  See
  9.6(23)."
  @end itemize
  
  The time base used is that provided by the C library function
! @code{gettimeofday}.
  
  
  @itemize *
  
  @item 
! "The time zone used for package @code{Calendar}
  operations.  See 9.6(24)."
  @end itemize
  
! The time zone used by package @code{Calendar} is the current system time zone
  setting for local time, as accessed by the C library function
! @code{localtime}.
  
  
  @itemize *
  
  @item 
! "Any limit on @emph{delay_until_statements} of
! @emph{select_statements}.  See 9.6(29)."
  @end itemize
  
  There are no such limits.
*************** There are no such limits.
*** 15715,15721 ****
  @item 
  "Whether or not two non-overlapping parts of a composite
  object are independently addressable, in the case where packing, record
! layout, or @cite{Component_Size} is specified for the object.  See
  9.10(1)."
  @end itemize
  
--- 15946,15952 ----
  @item 
  "Whether or not two non-overlapping parts of a composite
  object are independently addressable, in the case where packing, record
! layout, or @code{Component_Size} is specified for the object.  See
  9.10(1)."
  @end itemize
  
*************** provides the binder options @emph{-z} an
*** 15778,15784 ****
  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 the @cite{GNAT Make Program gnatmake} in the
  @cite{GNAT User's Guide}.
  
  
--- 16009,16015 ----
  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}.
  
  
*************** corresponding @code{ALI} file as the inp
*** 15810,15816 ****
  @itemize *
  
  @item 
! "The order of elaboration of @cite{library_items}.  See
  10.2(18)."
  @end itemize
  
--- 16041,16047 ----
  @itemize *
  
  @item 
! "The order of elaboration of @emph{library_items}.  See
  10.2(18)."
  @end itemize
  
*************** subprogram.  See 10.2(21)."
*** 15834,15840 ****
  The main program has no parameters.  It may be a procedure, or a function
  returning an integer type.  In the latter case, the returned integer
  value is the return code of the program (overriding any value that
! may have been set by a call to @cite{Ada.Command_Line.Set_Exit_Status}).
  
  
  @itemize *
--- 16065,16071 ----
  The main program has no parameters.  It may be a procedure, or a function
  returning an integer type.  In the latter case, the returned integer
  value is the return code of the program (overriding any value that
! may have been set by a call to @code{Ada.Command_Line.Set_Exit_Status}).
  
  
  @itemize *
*************** further details.
*** 15876,15882 ****
  @itemize *
  
  @item 
! "The information returned by @cite{Exception_Message}.  See
  11.4.1(10)."
  @end itemize
  
--- 16107,16113 ----
  @itemize *
  
  @item 
! "The information returned by @code{Exception_Message}.  See
  11.4.1(10)."
  @end itemize
  
*************** been passed by the program.
*** 15887,15908 ****
  @itemize *
  
  @item 
! "The result of @cite{Exceptions.Exception_Name} for types
! declared within an unnamed @cite{block_statement}.  See 11.4.1(12)."
  @end itemize
  
! Blocks have implementation defined names of the form @cite{B`nnn`}
! where @cite{nnn} is an integer.
  
  
  @itemize *
  
  @item 
  "The information returned by
! @cite{Exception_Information}.  See 11.4.1(13)."
  @end itemize
  
! @cite{Exception_Information} returns a string in the following format:
  
  @example
  *Exception_Name:* nnnnn
--- 16118,16139 ----
  @itemize *
  
  @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 *
  
  @item 
  "The information returned by
! @code{Exception_Information}.  See 11.4.1(13)."
  @end itemize
  
! @code{Exception_Information} returns a string in the following format:
  
  @example
  *Exception_Name:* nnnnn
*************** where
*** 15921,15934 ****
  @itemize *
  
  @item 
! @cite{nnnn} is the fully qualified name of the exception in all upper
  case letters. This line is always present.
  
  @item 
! @cite{mmmm} is the message (this line present only if message is non-null)
  
  @item 
! @cite{ppp} is the Process Id value as a decimal integer (this line is
  present only if the Process Id is nonzero). Currently we are
  not making use of this field.
  
--- 16152,16165 ----
  @itemize *
  
  @item 
! @code{nnnn} is the fully qualified name of the exception in all upper
  case letters. This line is always present.
  
  @item 
! @code{mmmm} is the message (this line present only if message is non-null)
  
  @item 
! @code{ppp} is the Process Id value as a decimal integer (this line is
  present only if the Process Id is nonzero). Currently we are
  not making use of this field.
  
*************** was loaded; this line may not be present
*** 15940,15946 ****
  the main executable. The values are given in C style format, with lower case
  letters for a-f, and only as many digits present as are necessary.
  The line terminator sequence at the end of each line, including
! the last line is a single @cite{LF} character (@cite{16#0A#}).
  @end itemize
  @end quotation
  
--- 16171,16177 ----
  the main executable. The values are given in C style format, with lower case
  letters for a-f, and only as many digits present as are necessary.
  The line terminator sequence at the end of each line, including
! the last line is a single @code{LF} character (@code{16#0A#}).
  @end itemize
  @end quotation
  
*************** The implementation defined check names i
*** 15955,15961 ****
  Atomic_Synchronization, Duplicated_Tag_Check, Container_Checks,
  Tampering_Check, Predicate_Check, and Validity_Check. In addition, a user
  program can add implementation-defined check names by means of the pragma
! Check_Name. See the description of pragma @cite{Suppress} for full details.
  
  
  @itemize *
--- 16186,16192 ----
  Atomic_Synchronization, Duplicated_Tag_Check, Container_Checks,
  Tampering_Check, Predicate_Check, and Validity_Check. In addition, a user
  program can add implementation-defined check names by means of the pragma
! Check_Name. See the description of pragma @code{Suppress} for full details.
  
  
  @itemize *
*************** See separate section on data representat
*** 15981,15987 ****
  @itemize *
  
  @item 
! "The meaning of @cite{Size} for indefinite subtypes.  See
  13.3(48)."
  @end itemize
  
--- 16212,16218 ----
  @itemize *
  
  @item 
! "The meaning of @code{Size} for indefinite subtypes.  See
  13.3(48)."
  @end itemize
  
*************** which contains a pointer to the dispatch
*** 16025,16035 ****
  @itemize *
  
  @item 
! "If @cite{Word_Size} = @cite{Storage_Unit}, the default bit
  ordering.  See 13.5.3(5)."
  @end itemize
  
! @cite{Word_Size} (32) is not the same as @cite{Storage_Unit} (8) for this
  implementation, so no non-default bit ordering is supported.  The default
  bit ordering corresponds to the natural endianness of the target architecture.
  
--- 16256,16266 ----
  @itemize *
  
  @item 
! "If @code{Word_Size} = @code{Storage_Unit}, the default bit
  ordering.  See 13.5.3(5)."
  @end itemize
  
! @code{Word_Size} (32) is not the same as @code{Storage_Unit} (8) for this
  implementation, so no non-default bit ordering is supported.  The default
  bit ordering corresponds to the natural endianness of the target architecture.
  
*************** bit ordering corresponds to the natural
*** 16037,16043 ****
  @itemize *
  
  @item 
! "The contents of the visible part of package @cite{System}
  and its language-defined children.  See 13.7(2)."
  @end itemize
  
--- 16268,16274 ----
  @itemize *
  
  @item 
! "The contents of the visible part of package @code{System}
  and its language-defined children.  See 13.7(2)."
  @end itemize
  
*************** Max_Interrupt_Priority : constant Positi
*** 16055,16062 ****
  
  @item 
  "The contents of the visible part of package
! @cite{System.Machine_Code}, and the meaning of
! @cite{code_statements}.  See 13.8(7)."
  @end itemize
  
  See the definition and documentation in file @code{s-maccod.ads}.
--- 16286,16293 ----
  
  @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}.
*************** on the simple assignment of the invalid
*** 16116,16129 ****
  
  @item 
  "The manner of choosing a storage pool for an access type
! when @cite{Storage_Pool} is not specified for the type.  See 13.11(17)."
  @end itemize
  
  There are 3 different standard pools used by the compiler when
! @cite{Storage_Pool} is not specified depending whether the type is local
  to a subprogram or defined at the library level and whether
! @cite{Storage_Size`is specified or not. See documentation in the runtime library units `System.Pool_Global}, @cite{System.Pool_Size} and
! @cite{System.Pool_Local} in files @code{s-poosiz.ads},
  @code{s-pooglo.ads} and @code{s-pooloc.ads} for full details on the
  default pools used.
  
--- 16347,16361 ----
  
  @item 
  "The manner of choosing a storage pool for an access type
! when @code{Storage_Pool} is not specified for the type.  See 13.11(17)."
  @end itemize
  
  There are 3 different standard pools used by the compiler when
! @code{Storage_Pool} is not specified depending whether the type is local
  to a subprogram or defined at the library level and whether
! @code{Storage_Size`@w{`}is specified or not.  See documentation in the runtime
! library units `@w{`}System.Pool_Global}, @code{System.Pool_Size} and
! @code{System.Pool_Local} in files @code{s-poosiz.ads},
  @code{s-pooglo.ads} and @code{s-pooloc.ads} for full details on the
  default pools used.
  
*************** names for the standard pool type(s).  Se
*** 16136,16152 ****
  @end itemize
  
  See documentation in the sources of the run time mentioned in the previous
! paragraph.  All these pools are accessible by means of @cite{with}'ing
  these units.
  
  
  @itemize *
  
  @item 
! "The meaning of @cite{Storage_Size}.  See 13.11(18)."
  @end itemize
  
! @cite{Storage_Size} is measured in storage units, and refers to the
  total space available for an access type collection, or to the primary
  stack space for a task.
  
--- 16368,16384 ----
  @end itemize
  
  See documentation in the sources of the run time mentioned in the previous
! paragraph.  All these pools are accessible by means of @cite{with}ing
  these units.
  
  
  @itemize *
  
  @item 
! "The meaning of @code{Storage_Size}.  See 13.11(18)."
  @end itemize
  
! @code{Storage_Size} is measured in storage units, and refers to the
  total space available for an access type collection, or to the primary
  stack space for a task.
  
*************** for details on GNAT-defined aspects of s
*** 16167,16173 ****
  
  @item 
  "The set of restrictions allowed in a pragma
! @cite{Restrictions}.  See 13.12(7)."
  @end itemize
  
  See @ref{9,,Standard and Implementation Defined Restrictions}.
--- 16399,16405 ----
  
  @item 
  "The set of restrictions allowed in a pragma
! @code{Restrictions}.  See 13.12(7)."
  @end itemize
  
  See @ref{9,,Standard and Implementation Defined Restrictions}.
*************** See @ref{9,,Standard and Implementation
*** 16177,16183 ****
  
  @item 
  "The consequences of violating limitations on
! @cite{Restrictions} pragmas.  See 13.12(9)."
  @end itemize
  
  Restrictions that can be checked at compile time result in illegalities
--- 16409,16415 ----
  
  @item 
  "The consequences of violating limitations on
! @code{Restrictions} pragmas.  See 13.12(9)."
  @end itemize
  
  Restrictions that can be checked at compile time result in illegalities
*************** restrictions.
*** 16188,16195 ****
  @itemize *
  
  @item 
! "The representation used by the @cite{Read} and
! @cite{Write} attributes of elementary types in terms of stream
  elements.  See 13.13.2(9)."
  @end itemize
  
--- 16420,16427 ----
  @itemize *
  
  @item 
! "The representation used by the @code{Read} and
! @code{Write} attributes of elementary types in terms of stream
  elements.  See 13.13.2(9)."
  @end itemize
  
*************** the type, using the number of bits corre
*** 16202,16208 ****
  
  @item 
  "The names and characteristics of the numeric subtypes
! declared in the visible part of package @cite{Standard}.  See A.1(3)."
  @end itemize
  
  See items describing the integer and floating-point types supported.
--- 16434,16440 ----
  
  @item 
  "The names and characteristics of the numeric subtypes
! declared in the visible part of package @code{Standard}.  See A.1(3)."
  @end itemize
  
  See items describing the integer and floating-point types supported.
*************** See items describing the integer and flo
*** 16211,16221 ****
  @itemize *
  
  @item 
! "The string returned by @cite{Character_Set_Version}.
  See A.3.5(3)."
  @end itemize
  
! @cite{Ada.Wide_Characters.Handling.Character_Set_Version} returns
  the string "Unicode 4.0", referring to version 4.0 of the
  Unicode specification.
  
--- 16443,16453 ----
  @itemize *
  
  @item 
! "The string returned by @code{Character_Set_Version}.
  See A.3.5(3)."
  @end itemize
  
! @code{Ada.Wide_Characters.Handling.Character_Set_Version} returns
  the string "Unicode 4.0", referring to version 4.0 of the
  Unicode specification.
  
*************** library.  Only fast math mode is impleme
*** 16235,16242 ****
  
  @item 
  "The sign of a zero result from some of the operators or
! functions in @cite{Numerics.Generic_Elementary_Functions}, when
! @cite{Float_Type'Signed_Zeros} is @cite{True}.  See A.5.1(46)."
  @end itemize
  
  The sign of zeroes follows the requirements of the IEEE 754 standard on
--- 16467,16474 ----
  
  @item 
  "The sign of a zero result from some of the operators or
! functions in @code{Numerics.Generic_Elementary_Functions}, when
! @code{Float_Type'Signed_Zeros} is @code{True}.  See A.5.1(46)."
  @end itemize
  
  The sign of zeroes follows the requirements of the IEEE 754 standard on
*************** floating-point.
*** 16247,16253 ****
  
  @item 
  "The value of
! @cite{Numerics.Float_Random.Max_Image_Width}.  See A.5.2(27)."
  @end itemize
  
  Maximum image width is 6864, see library file @code{s-rannum.ads}.
--- 16479,16485 ----
  
  @item 
  "The value of
! @code{Numerics.Float_Random.Max_Image_Width}.  See A.5.2(27)."
  @end itemize
  
  Maximum image width is 6864, see library file @code{s-rannum.ads}.
*************** Maximum image width is 6864, see library
*** 16257,16263 ****
  
  @item 
  "The value of
! @cite{Numerics.Discrete_Random.Max_Image_Width}.  See A.5.2(27)."
  @end itemize
  
  Maximum image width is 6864, see library file @code{s-rannum.ads}.
--- 16489,16495 ----
  
  @item 
  "The value of
! @code{Numerics.Discrete_Random.Max_Image_Width}.  See A.5.2(27)."
  @end itemize
  
  Maximum image width is 6864, see library file @code{s-rannum.ads}.
*************** random numbers is one microsecond.
*** 16302,16315 ****
  @itemize *
  
  @item 
! "The values of the @cite{Model_Mantissa},
! @cite{Model_Emin}, @cite{Model_Epsilon}, @cite{Model},
! @cite{Safe_First}, and @cite{Safe_Last} attributes, if the Numerics
  Annex is not supported.  See A.5.3(72)."
  @end itemize
  
  Run the compiler with @emph{-gnatS} to produce a listing of package
! @cite{Standard}, has the values of all numeric attributes.
  
  
  @itemize *
--- 16534,16547 ----
  @itemize *
  
  @item 
! "The values of the @code{Model_Mantissa},
! @code{Model_Emin}, @code{Model_Epsilon}, @code{Model},
! @code{Safe_First}, and @code{Safe_Last} attributes, if the Numerics
  Annex is not supported.  See A.5.3(72)."
  @end itemize
  
  Run the compiler with @emph{-gnatS} to produce a listing of package
! @code{Standard}, has the values of all numeric attributes.
  
  
  @itemize *
*************** packages.
*** 16326,16336 ****
  @itemize *
  
  @item 
! "The value of @cite{Buffer_Size} in @cite{Storage_IO}.  See
  A.9(10)."
  @end itemize
  
! All type representations are contiguous, and the @cite{Buffer_Size} is
  the value of @code{type'Size} rounded up to the next storage unit
  boundary.
  
--- 16558,16568 ----
  @itemize *
  
  @item 
! "The value of @code{Buffer_Size} in @code{Storage_IO}.  See
  A.9(10)."
  @end itemize
  
! All type representations are contiguous, and the @code{Buffer_Size} is
  the value of @code{type'Size} rounded up to the next storage unit
  boundary.
  
*************** libraries.  See source file @code{i-cstr
*** 16349,16355 ****
  @itemize *
  
  @item 
! "The accuracy of the value produced by @cite{Put}.  See
  A.10.9(36)."
  @end itemize
  
--- 16581,16587 ----
  @itemize *
  
  @item 
! "The accuracy of the value produced by @code{Put}.  See
  A.10.9(36)."
  @end itemize
  
*************** significant digit positions.
*** 16361,16403 ****
  @itemize *
  
  @item 
! "The meaning of @cite{Argument_Count}, @cite{Argument}, and
! @cite{Command_Name}.  See A.15(1)."
  @end itemize
  
! These are mapped onto the @cite{argv} and @cite{argc} parameters of the
  main program in the natural manner.
  
  
  @itemize *
  
  @item 
! "The interpretation of the @cite{Form} parameter in procedure
! @cite{Create_Directory}.  See A.16(56)."
  @end itemize
  
! The @cite{Form} parameter is not used.
  
  
  @itemize *
  
  @item 
! "The interpretation of the @cite{Form} parameter in procedure
! @cite{Create_Path}.  See A.16(60)."
  @end itemize
  
! The @cite{Form} parameter is not used.
  
  
  @itemize *
  
  @item 
! "The interpretation of the @cite{Form} parameter in procedure
! @cite{Copy_File}.  See A.16(68)."
  @end itemize
  
! The @cite{Form} parameter is case-insensitive.
! Two fields are recognized in the @cite{Form} parameter:
  
  @example
  *preserve=<value>*
--- 16593,16635 ----
  @itemize *
  
  @item 
! "The meaning of @code{Argument_Count}, @code{Argument}, and
! @code{Command_Name}.  See A.15(1)."
  @end itemize
  
! These are mapped onto the @code{argv} and @code{argc} parameters of the
  main program in the natural manner.
  
  
  @itemize *
  
  @item 
! "The interpretation of the @code{Form} parameter in procedure
! @code{Create_Directory}.  See A.16(56)."
  @end itemize
  
! The @code{Form} parameter is not used.
  
  
  @itemize *
  
  @item 
! "The interpretation of the @code{Form} parameter in procedure
! @code{Create_Path}.  See A.16(60)."
  @end itemize
  
! The @code{Form} parameter is not used.
  
  
  @itemize *
  
  @item 
! "The interpretation of the @code{Form} parameter in procedure
! @code{Copy_File}.  See A.16(68)."
  @end itemize
  
! The @code{Form} parameter is case-insensitive.
! Two fields are recognized in the @code{Form} parameter:
  
  @example
  *preserve=<value>*
*************** Form => "mode=internal, preserve=timesta
*** 16513,16528 ****
  @itemize *
  
  @item 
! "The interpretation of the @cite{Pattern} parameter, when not the null string,
! in the @cite{Start_Search} and @cite{Search} procedures.
  See A.16(104) and A.16(112)."
  @end itemize
  
! When the @cite{Pattern} parameter is not the null string, it is interpreted
  according to the syntax of regular expressions as defined in the
! @cite{GNAT.Regexp} package.
  
! See @ref{24a,,GNAT.Regexp (g-regexp.ads)}.
  
  
  @itemize *
--- 16745,16760 ----
  @itemize *
  
  @item 
! "The interpretation of the @code{Pattern} parameter, when not the null string,
! in the @code{Start_Search} and @code{Search} procedures.
  See A.16(104) and A.16(112)."
  @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{251,,GNAT.Regexp (g-regexp.ads)}.
  
  
  @itemize *
*************** Fortran
*** 16658,16664 ****
  
  @tab
  
! For support of pragma @cite{Import} with convention Intrinsic, see
  separate section on Intrinsic Subprograms.
  
  @item
--- 16890,16896 ----
  
  @tab
  
! For support of pragma @code{Import} with convention Intrinsic, see
  separate section on Intrinsic Subprograms.
  
  @item
*************** Synonym for Stdcall
*** 16696,16703 ****
  
  Stubbed is a special convention used to indicate that the body of the
  subprogram will be entirely ignored.  Any call to the subprogram
! is converted into a raise of the @cite{Program_Error} exception.  If a
! pragma @cite{Import} specifies convention @cite{stubbed} then no body need
  be present at all.  This convention is useful during development for the
  inclusion of subprograms whose body has not yet been written.
  In addition, all otherwise unrecognized convention names are also
--- 16928,16935 ----
  
  Stubbed is a special convention used to indicate that the body of the
  subprogram will be entirely ignored.  Any call to the subprogram
! is converted into a raise of the @code{Program_Error} exception.  If a
! pragma @code{Import} specifies convention @code{stubbed} then no body need
  be present at all.  This convention is useful during development for the
  inclusion of subprograms whose body has not yet been written.
  In addition, all otherwise unrecognized convention names are also
*************** letters.
*** 16734,16743 ****
  @itemize *
  
  @item 
! "The effect of pragma @cite{Linker_Options}.  See B.1(37)."
  @end itemize
  
! The string passed to @cite{Linker_Options} is presented uninterpreted as
  an argument to the link command, unless it contains ASCII.NUL characters.
  NUL characters if they appear act as argument separators, so for example
  
--- 16966,16975 ----
  @itemize *
  
  @item 
! "The effect of pragma @code{Linker_Options}.  See B.1(37)."
  @end itemize
  
! The string passed to @code{Linker_Options} is presented uninterpreted as
  an argument to the link command, unless it contains ASCII.NUL characters.
  NUL characters if they appear act as argument separators, so for example
  
*************** NUL characters if they appear act as arg
*** 16745,16751 ****
  pragma Linker_Options ("-labc" & ASCII.NUL & "-ldef");
  @end example
  
! causes two separate arguments @cite{-labc} and @cite{-ldef} to be passed to the
  linker. The order of linker options is preserved for a given unit. The final
  list of options passed to the linker is in reverse order of the elaboration
  order. For example, linker options for a body always appear before the options
--- 16977,16983 ----
  pragma Linker_Options ("-labc" & ASCII.NUL & "-ldef");
  @end example
  
! causes two separate arguments @code{-labc} and @code{-ldef} to be passed to the
  linker. The order of linker options is preserved for a given unit. The final
  list of options passed to the linker is in reverse order of the elaboration
  order. For example, linker options for a body always appear before the options
*************** from the corresponding package spec.
*** 16756,16762 ****
  
  @item 
  "The contents of the visible part of package
! @cite{Interfaces} and its language-defined descendants.  See B.2(1)."
  @end itemize
  
  See files with prefix @code{i-} in the distributed library.
--- 16988,16994 ----
  
  @item 
  "The contents of the visible part of package
! @code{Interfaces} and its language-defined descendants.  See B.2(1)."
  @end itemize
  
  See files with prefix @code{i-} in the distributed library.
*************** See files with prefix @code{i-} in the d
*** 16766,16773 ****
  
  @item 
  "Implementation-defined children of package
! @cite{Interfaces}.  The contents of the visible part of package
! @cite{Interfaces}.  See B.2(11)."
  @end itemize
  
  See files with prefix @code{i-} in the distributed library.
--- 16998,17005 ----
  
  @item 
  "Implementation-defined children of package
! @code{Interfaces}.  The contents of the visible part of package
! @code{Interfaces}.  See B.2(11)."
  @end itemize
  
  See files with prefix @code{i-} in the distributed library.
*************** See files with prefix @code{i-} in the d
*** 16776,16786 ****
  @itemize *
  
  @item 
! "The types @cite{Floating}, @cite{Long_Floating},
! @cite{Binary}, @cite{Long_Binary}, @cite{Decimal_ Element}, and
! @cite{COBOL_Character}; and the initialization of the variables
! @cite{Ada_To_COBOL} and @cite{COBOL_To_Ada}, in
! @cite{Interfaces.COBOL}.  See B.4(50)."
  @end itemize
  
  
--- 17008,17018 ----
  @itemize *
  
  @item 
! "The types @code{Floating}, @code{Long_Floating},
! @code{Binary}, @code{Long_Binary}, @code{Decimal_ Element}, and
! @code{COBOL_Character}; and the initialization of the variables
! @code{Ada_To_COBOL} and @code{COBOL_To_Ada}, in
! @code{Interfaces.COBOL}.  See B.4(50)."
  @end itemize
  
  
*************** See documentation in file @code{s-maccod
*** 16874,16880 ****
  
  Interrupts are mapped to signals or conditions as appropriate.  See
  definition of unit
! @cite{Ada.Interrupt_Names} in source file @code{a-intnam.ads} for details
  on the interrupts supported on a particular target.
  
  
--- 17106,17112 ----
  
  Interrupts are mapped to signals or conditions as appropriate.  See
  definition of unit
! @code{Ada.Interrupt_Names} in source file @code{a-intnam.ads} for details
  on the interrupts supported on a particular target.
  
  
*************** except under control of the debugger.
*** 16892,16901 ****
  @itemize *
  
  @item 
! "The semantics of pragma @cite{Discard_Names}.  See C.5(7)."
  @end itemize
  
! Pragma @cite{Discard_Names} causes names of enumeration literals to
  be suppressed.  In the presence of this pragma, the Image attribute
  provides the image of the Pos of the literal, and Value accepts
  Pos values.
--- 17124,17133 ----
  @itemize *
  
  @item 
! "The semantics of pragma @code{Discard_Names}.  See C.5(7)."
  @end itemize
  
! Pragma @code{Discard_Names} causes names of enumeration literals to
  be suppressed.  In the presence of this pragma, the Image attribute
  provides the image of the Pos of the literal, and Value accepts
  Pos values.
*************** Pos values.
*** 16904,16921 ****
  @itemize *
  
  @item 
! "The result of the @cite{Task_Identification.Image}
  attribute.  See C.7.1(7)."
  @end itemize
  
  The result of this attribute is a string that identifies
! the object or component that denotes a given task. If a variable @cite{Var}
! has a task type, the image for this task will have the form @cite{Var_`XXXXXXXX`},
! where the suffix
  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., @cite{Group(5)_`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
--- 17136,17153 ----
  @itemize *
  
  @item 
! "The result of the @code{Task_Identification.Image}
  attribute.  See C.7.1(7)."
  @end itemize
  
  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
*************** virtual address of the control block of
*** 16936,16975 ****
  @itemize *
  
  @item 
! "The value of @cite{Current_Task} when in a protected entry
  or interrupt handler.  See C.7.1(17)."
  @end itemize
  
  Protected entries or interrupt handlers can be executed by any
! convenient thread, so the value of @cite{Current_Task} is undefined.
  
  
  @itemize *
  
  @item 
! "The effect of calling @cite{Current_Task} from an entry
  body or interrupt handler.  See C.7.1(19)."
  @end itemize
  
! The effect of calling @cite{Current_Task} from an entry body or
! interrupt handler is to return the identification of the task currently
! executing the code.
  
  
  @itemize *
  
  @item 
  "Implementation-defined aspects of
! @cite{Task_Attributes}.  See C.7.2(19)."
  @end itemize
  
! There are no implementation-defined aspects of @cite{Task_Attributes}.
  
  
  @itemize *
  
  @item 
! "Values of all @cite{Metrics}.  See D(2)."
  @end itemize
  
  The metrics information for GNAT depends on the performance of the
--- 17168,17209 ----
  @itemize *
  
  @item 
! "The value of @code{Current_Task} when in a protected entry
  or interrupt handler.  See C.7.1(17)."
  @end itemize
  
  Protected entries or interrupt handlers can be executed by any
! convenient thread, so the value of @code{Current_Task} is undefined.
  
  
  @itemize *
  
  @item 
! "The effect of calling @code{Current_Task} from an entry
  body or interrupt handler.  See C.7.1(19)."
  @end itemize
  
! When GNAT can determine statically that @code{Current_Task} is called directly in
! the body of an entry (or barrier) then a warning is emitted and @code{Program_Error}
! is raised at run time. Otherwise, the effect of calling @code{Current_Task} from an
! entry body or interrupt handler is to return the identification of the task
! currently executing the code.
  
  
  @itemize *
  
  @item 
  "Implementation-defined aspects of
! @code{Task_Attributes}.  See C.7.2(19)."
  @end itemize
  
! There are no implementation-defined aspects of @code{Task_Attributes}.
  
  
  @itemize *
  
  @item 
! "Values of all @code{Metrics}.  See D(2)."
  @end itemize
  
  The metrics information for GNAT depends on the performance of the
*************** the required metrics.
*** 16985,16992 ****
  @itemize *
  
  @item 
! "The declarations of @cite{Any_Priority} and
! @cite{Priority}.  See D.1(11)."
  @end itemize
  
  See declarations in file @code{system.ads}.
--- 17219,17226 ----
  @itemize *
  
  @item 
! "The declarations of @code{Any_Priority} and
! @code{Priority}.  See D.1(11)."
  @end itemize
  
  See declarations in file @code{system.ads}.
*************** underlying operating system.
*** 17027,17034 ****
  @itemize *
  
  @item 
! "Implementation-defined @cite{policy_identifiers} allowed
! in a pragma @cite{Task_Dispatching_Policy}.  See D.2.2(3)."
  @end itemize
  
  There are no implementation-defined policy-identifiers allowed in this
--- 17261,17268 ----
  @itemize *
  
  @item 
! "Implementation-defined @emph{policy_identifiers} allowed
! in a pragma @code{Task_Dispatching_Policy}.  See D.2.2(3)."
  @end itemize
  
  There are no implementation-defined policy-identifiers allowed in this
*************** The policy is the same as that of the un
*** 17058,17075 ****
  @itemize *
  
  @item 
! "Implementation-defined @cite{policy_identifiers} allowed
! in a pragma @cite{Locking_Policy}.  See D.3(4)."
  @end itemize
  
  The two implementation defined policies permitted in GNAT are
! @cite{Inheritance_Locking} and  @cite{Conccurent_Readers_Locking}.  On
! targets that support the @cite{Inheritance_Locking} policy, locking is
  implemented by inheritance, i.e., the task owning the lock operates
  at a priority equal to the highest priority of any task currently
! requesting the lock.  On targets that support the
! @cite{Conccurent_Readers_Locking} policy, locking is implemented with a
! read/write lock allowing multiple propected object functions to enter
  concurrently.
  
  
--- 17292,17309 ----
  @itemize *
  
  @item 
! "Implementation-defined @emph{policy_identifiers} allowed
! in a pragma @code{Locking_Policy}.  See D.3(4)."
  @end itemize
  
  The two implementation defined policies permitted in GNAT are
! @code{Inheritance_Locking} and  @code{Concurrent_Readers_Locking}. On
! targets that support the @code{Inheritance_Locking} policy, locking is
  implemented by inheritance, i.e., the task owning the lock operates
  at a priority equal to the highest priority of any task currently
! requesting the lock. On targets that support the
! @code{Concurrent_Readers_Locking} policy, locking is implemented with a
! read/write lock allowing multiple protected object functions to enter
  concurrently.
  
  
*************** concurrently.
*** 17080,17086 ****
  @end itemize
  
  The ceiling priority of protected objects of the type
! @cite{System.Interrupt_Priority'Last} as described in the Ada
  Reference Manual D.3(10),
  
  
--- 17314,17320 ----
  @end itemize
  
  The ceiling priority of protected objects of the type
! @code{System.Interrupt_Priority'Last} as described in the Ada
  Reference Manual D.3(10),
  
  
*************** the implementation.  See D.3(16)."
*** 17092,17098 ****
  @end itemize
  
  The ceiling priority of internal protected objects is
! @cite{System.Priority'Last}.
  
  
  @itemize *
--- 17326,17332 ----
  @end itemize
  
  The ceiling priority of internal protected objects is
! @code{System.Priority'Last}.
  
  
  @itemize *
*************** task creation.
*** 17131,17137 ****
  
  @item 
  "What happens when a task terminates in the presence of
! pragma @cite{No_Task_Termination}. See D.7(15)."
  @end itemize
  
  Execution is erroneous in that case.
--- 17365,17371 ----
  
  @item 
  "What happens when a task terminates in the presence of
! pragma @code{No_Task_Termination}. See D.7(15)."
  @end itemize
  
  Execution is erroneous in that case.
*************** Execution is erroneous in that case.
*** 17141,17147 ****
  
  @item 
  "Implementation-defined aspects of pragma
! @cite{Restrictions}.  See D.7(20)."
  @end itemize
  
  There are no such implementation-defined aspects.
--- 17375,17381 ----
  
  @item 
  "Implementation-defined aspects of pragma
! @code{Restrictions}.  See D.7(20)."
  @end itemize
  
  There are no such implementation-defined aspects.
*************** There are no such implementation-defined
*** 17151,17167 ****
  
  @item 
  "Implementation-defined aspects of package
! @cite{Real_Time}.  See D.8(17)."
  @end itemize
  
! There are no implementation defined aspects of package @cite{Real_Time}.
  
  
  @itemize *
  
  @item 
  "Implementation-defined aspects of
! @cite{delay_statements}.  See D.9(8)."
  @end itemize
  
  Any difference greater than one microsecond will cause the task to be
--- 17385,17401 ----
  
  @item 
  "Implementation-defined aspects of package
! @code{Real_Time}.  See D.8(17)."
  @end itemize
  
! There are no implementation defined aspects of package @code{Real_Time}.
  
  
  @itemize *
  
  @item 
  "Implementation-defined aspects of
! @emph{delay_statements}.  See D.9(8)."
  @end itemize
  
  Any difference greater than one microsecond will cause the task to be
*************** implementation defined interfaces.
*** 17262,17268 ****
  
  @item 
  "The values of named numbers in the package
! @cite{Decimal}.  See F.2(7)."
  @end itemize
  
  
--- 17496,17502 ----
  
  @item 
  "The values of named numbers in the package
! @code{Decimal}.  See F.2(7)."
  @end itemize
  
  
*************** Value
*** 17322,17329 ****
  @itemize *
  
  @item 
! "The value of @cite{Max_Picture_Length} in the package
! @cite{Text_IO.Editing}.  See F.3.3(16)."
  @end itemize
  
  64
--- 17556,17563 ----
  @itemize *
  
  @item 
! "The value of @code{Max_Picture_Length} in the package
! @code{Text_IO.Editing}.  See F.3.3(16)."
  @end itemize
  
  64
*************** Value
*** 17332,17339 ****
  @itemize *
  
  @item 
! "The value of @cite{Max_Picture_Length} in the package
! @cite{Wide_Text_IO.Editing}.  See F.3.4(5)."
  @end itemize
  
  64
--- 17566,17573 ----
  @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
*************** operations.  Only fast math mode is curr
*** 17354,17361 ****
  
  @item 
  "The sign of a zero result (or a component thereof) from
! any operator or function in @cite{Numerics.Generic_Complex_Types}, when
! @cite{Real'Signed_Zeros} is True.  See G.1.1(53)."
  @end itemize
  
  The signs of zero values are as recommended by the relevant
--- 17588,17595 ----
  
  @item 
  "The sign of a zero result (or a component thereof) from
! any operator or function in @code{Numerics.Generic_Complex_Types}, when
! @code{Real'Signed_Zeros} is True.  See G.1.1(53)."
  @end itemize
  
  The signs of zero values are as recommended by the relevant
*************** implementation advice.
*** 17367,17374 ****
  @item 
  "The sign of a zero result (or a component thereof) from
  any operator or function in
! @cite{Numerics.Generic_Complex_Elementary_Functions}, when
! @cite{Real'Signed_Zeros} is @cite{True}.  See G.1.2(45)."
  @end itemize
  
  The signs of zero values are as recommended by the relevant
--- 17601,17608 ----
  @item 
  "The sign of a zero result (or a component thereof) from
  any operator or function in
! @code{Numerics.Generic_Complex_Elementary_Functions}, when
! @code{Real'Signed_Zeros} is @code{True}.  See G.1.2(45)."
  @end itemize
  
  The signs of zero values are as recommended by the relevant
*************** floating-point format.
*** 17402,17409 ****
  
  @item 
  "The result of a floating point arithmetic operation in
! overflow situations, when the @cite{Machine_Overflows} attribute of the
! result type is @cite{False}.  See G.2.1(13)."
  @end itemize
  
  Infinite and NaN values are produced as dictated by the IEEE
--- 17636,17643 ----
  
  @item 
  "The result of a floating point arithmetic operation in
! overflow situations, when the @code{Machine_Overflows} attribute of the
! result type is @code{False}.  See G.2.1(13)."
  @end itemize
  
  Infinite and NaN values are produced as dictated by the IEEE
*************** is converted to the target type.
*** 17443,17449 ****
  @itemize *
  
  @item 
! "Conditions on a @cite{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
--- 17677,17683 ----
  @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
*************** representable in 64-bits.
*** 17457,17467 ****
  
  @item 
  "The result of a fixed point arithmetic operation in
! overflow situations, when the @cite{Machine_Overflows} attribute of the
! result type is @cite{False}.  See G.2.3(27)."
  @end itemize
  
! Not relevant, @cite{Machine_Overflows} is @cite{True} for fixed-point
  types.
  
  
--- 17691,17701 ----
  
  @item 
  "The result of a fixed point arithmetic operation in
! overflow situations, when the @code{Machine_Overflows} attribute of the
! result type is @code{False}.  See G.2.3(27)."
  @end itemize
  
! Not relevant, @code{Machine_Overflows} is @code{True} for fixed-point
  types.
  
  
*************** types.
*** 17469,17476 ****
  
  @item 
  "The result of an elementary function reference in
! overflow situations, when the @cite{Machine_Overflows} attribute of the
! result type is @cite{False}.  See G.2.4(4)."
  @end itemize
  
  IEEE infinite and Nan values are produced as appropriate.
--- 17703,17710 ----
  
  @item 
  "The result of an elementary function reference in
! overflow situations, when the @code{Machine_Overflows} attribute of the
! result type is @code{False}.  See G.2.4(4)."
  @end itemize
  
  IEEE infinite and Nan values are produced as appropriate.
*************** Information on this subject is not yet a
*** 17503,17510 ****
  @item 
  "The result of a complex arithmetic operation or complex
  elementary function reference in overflow situations, when the
! @cite{Machine_Overflows} attribute of the corresponding real type is
! @cite{False}.  See G.2.6(5)."
  @end itemize
  
  IEEE infinite and Nan values are produced as appropriate.
--- 17737,17744 ----
  @item 
  "The result of a complex arithmetic operation or complex
  elementary function reference in overflow situations, when the
! @code{Machine_Overflows} attribute of the corresponding real type is
! @code{False}.  See G.2.6(5)."
  @end itemize
  
  IEEE infinite and Nan values are produced as appropriate.
*************** Information on this subject is not yet a
*** 17535,17544 ****
  
  @item 
  "Implementation-defined aspects of pragma
! @cite{Inspection_Point}.  See H.3.2(8)."
  @end itemize
  
! Pragma @cite{Inspection_Point} ensures that the variable is live and can
  be examined by the debugger at the inspection point.
  
  
--- 17769,17778 ----
  
  @item 
  "Implementation-defined aspects of pragma
! @code{Inspection_Point}.  See H.3.2(8)."
  @end itemize
  
! Pragma @code{Inspection_Point} ensures that the variable is live and can
  be examined by the debugger at the inspection point.
  
  
*************** be examined by the debugger at the inspe
*** 17546,17570 ****
  
  @item 
  "Implementation-defined aspects of pragma
! @cite{Restrictions}.  See H.4(25)."
  @end itemize
  
! There are no implementation-defined aspects of pragma @cite{Restrictions}.  The
! use of pragma @cite{Restrictions [No_Exceptions]} has no effect on the
! generated code.  Checks must suppressed by use of pragma @cite{Suppress}.
  
  
  @itemize *
  
  @item 
! "Any restrictions on pragma @cite{Restrictions}.  See
  H.4(27)."
  @end itemize
  
! There are no restrictions on pragma @cite{Restrictions}.
  
  @node Intrinsic Subprograms,Representation Clauses and Pragmas,Implementation Defined Characteristics,Top
! @anchor{gnat_rm/intrinsic_subprograms doc}@anchor{24b}@anchor{gnat_rm/intrinsic_subprograms intrinsic-subprograms}@anchor{c}@anchor{gnat_rm/intrinsic_subprograms id1}@anchor{24c}
  @chapter Intrinsic Subprograms
  
  
--- 17780,17804 ----
  
  @item 
  "Implementation-defined aspects of pragma
! @code{Restrictions}.  See H.4(25)."
  @end itemize
  
! There are no implementation-defined aspects of pragma @code{Restrictions}.  The
! use of pragma @code{Restrictions [No_Exceptions]} has no effect on the
! generated code.  Checks must suppressed by use of pragma @code{Suppress}.
  
  
  @itemize *
  
  @item 
! "Any restrictions on pragma @code{Restrictions}.  See
  H.4(27)."
  @end itemize
  
! There are no restrictions on pragma @code{Restrictions}.
  
  @node Intrinsic Subprograms,Representation Clauses and Pragmas,Implementation Defined Characteristics,Top
! @anchor{gnat_rm/intrinsic_subprograms doc}@anchor{252}@anchor{gnat_rm/intrinsic_subprograms intrinsic-subprograms}@anchor{c}@anchor{gnat_rm/intrinsic_subprograms id1}@anchor{253}
  @chapter Intrinsic Subprograms
  
  
*************** Ada standard does not require Ada compil
*** 17587,17592 ****
--- 17821,17827 ----
  
  @menu
  * Intrinsic Operators:: 
+ * Compilation_ISO_Date:: 
  * Compilation_Date:: 
  * Compilation_Time:: 
  * Enclosing_Entity:: 
*************** Ada standard does not require Ada compil
*** 17600,17620 ****
  
  @end menu
  
! @node Intrinsic Operators,Compilation_Date,,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms id2}@anchor{24d}@anchor{gnat_rm/intrinsic_subprograms intrinsic-operators}@anchor{24e}
  @section Intrinsic Operators
  
  
  @geindex Intrinsic operator
  
  All the predefined numeric operators in package Standard
! in @cite{pragma Import (Intrinsic@comma{}..)}
  declarations.  In the binary operator case, the operands must have the same
  size.  The operand or operands must also be appropriate for
  the operator.  For example, for addition, the operands must
  both be floating-point or both be fixed-point, and the
! right operand for @cite{"**"} must have a root type of
! @cite{Standard.Integer'Base}.
  You can use an intrinsic operator declaration as in the following example:
  
  @example
--- 17835,17855 ----
  
  @end menu
  
! @node Intrinsic Operators,Compilation_ISO_Date,,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms id2}@anchor{254}@anchor{gnat_rm/intrinsic_subprograms intrinsic-operators}@anchor{255}
  @section Intrinsic Operators
  
  
  @geindex Intrinsic operator
  
  All the predefined numeric operators in package Standard
! in @code{pragma Import (Intrinsic,..)}
  declarations.  In the binary operator case, the operands must have the same
  size.  The operand or operands must also be appropriate for
  the operator.  For example, for addition, the operands must
  both be floating-point or both be fixed-point, and the
! right operand for @code{"**"} must have a root type of
! @code{Standard.Integer'Base}.
  You can use an intrinsic operator declaration as in the following example:
  
  @example
*************** pragma Import (Intrinsic, "+");
*** 17627,17750 ****
  @end example
  
  This declaration would permit 'mixed mode' arithmetic on items
! of the differing types @cite{Int1} and @cite{Int2}.
  It is also possible to specify such operators for private types, if the
  full views are appropriate arithmetic types.
  
! @node Compilation_Date,Compilation_Time,Intrinsic Operators,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms compilation-date}@anchor{24f}@anchor{gnat_rm/intrinsic_subprograms id3}@anchor{250}
! @section Compilation_Date
  
  
! @geindex Compilation_Date
  
  This intrinsic subprogram is used in the implementation of the
! library package @cite{GNAT.Source_Info}.  The only useful use of the
  intrinsic import in this case is the one in this unit, so an
  application program should simply call the function
! @cite{GNAT.Source_Info.Compilation_Date} to obtain the date of
! the current compilation (in local time format MMM DD YYYY).
  
  @node Compilation_Time,Enclosing_Entity,Compilation_Date,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms compilation-time}@anchor{251}@anchor{gnat_rm/intrinsic_subprograms id4}@anchor{252}
  @section Compilation_Time
  
  
  @geindex Compilation_Time
  
  This intrinsic subprogram is used in the implementation of the
! library package @cite{GNAT.Source_Info}.  The only useful use of the
  intrinsic import in this case is the one in this unit, so an
  application program should simply call the function
! @cite{GNAT.Source_Info.Compilation_Time} to obtain the time of
  the current compilation (in local time format HH:MM:SS).
  
  @node Enclosing_Entity,Exception_Information,Compilation_Time,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms id5}@anchor{253}@anchor{gnat_rm/intrinsic_subprograms enclosing-entity}@anchor{254}
  @section Enclosing_Entity
  
  
  @geindex Enclosing_Entity
  
  This intrinsic subprogram is used in the implementation of the
! library package @cite{GNAT.Source_Info}.  The only useful use of the
  intrinsic import in this case is the one in this unit, so an
  application program should simply call the function
! @cite{GNAT.Source_Info.Enclosing_Entity} to obtain the name of
  the current subprogram, package, task, entry, or protected subprogram.
  
  @node Exception_Information,Exception_Message,Enclosing_Entity,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms id6}@anchor{255}@anchor{gnat_rm/intrinsic_subprograms exception-information}@anchor{256}
  @section Exception_Information
  
  
  @geindex Exception_Information'
  
  This intrinsic subprogram is used in the implementation of the
! library package @cite{GNAT.Current_Exception}.  The only useful
  use of the intrinsic import in this case is the one in this unit,
  so an application program should simply call the function
! @cite{GNAT.Current_Exception.Exception_Information} to obtain
  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{257}@anchor{gnat_rm/intrinsic_subprograms id7}@anchor{258}
  @section Exception_Message
  
  
  @geindex Exception_Message
  
  This intrinsic subprogram is used in the implementation of the
! library package @cite{GNAT.Current_Exception}.  The only useful
  use of the intrinsic import in this case is the one in this unit,
  so an application program should simply call the function
! @cite{GNAT.Current_Exception.Exception_Message} to obtain
  the message associated with the current exception.
  
  @node Exception_Name,File,Exception_Message,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms exception-name}@anchor{259}@anchor{gnat_rm/intrinsic_subprograms id8}@anchor{25a}
  @section Exception_Name
  
  
  @geindex Exception_Name
  
  This intrinsic subprogram is used in the implementation of the
! library package @cite{GNAT.Current_Exception}.  The only useful
  use of the intrinsic import in this case is the one in this unit,
  so an application program should simply call the function
! @cite{GNAT.Current_Exception.Exception_Name} to obtain
  the name of the current exception.
  
  @node File,Line,Exception_Name,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms file}@anchor{25b}@anchor{gnat_rm/intrinsic_subprograms id9}@anchor{25c}
  @section File
  
  
  @geindex File
  
  This intrinsic subprogram is used in the implementation of the
! library package @cite{GNAT.Source_Info}.  The only useful use of the
  intrinsic import in this case is the one in this unit, so an
  application program should simply call the function
! @cite{GNAT.Source_Info.File} to obtain the name of the current
  file.
  
  @node Line,Shifts and Rotates,File,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms id10}@anchor{25d}@anchor{gnat_rm/intrinsic_subprograms line}@anchor{25e}
  @section Line
  
  
  @geindex Line
  
  This intrinsic subprogram is used in the implementation of the
! library package @cite{GNAT.Source_Info}.  The only useful use of the
  intrinsic import in this case is the one in this unit, so an
  application program should simply call the function
! @cite{GNAT.Source_Info.Line} to obtain the number of the current
  source line.
  
  @node Shifts and Rotates,Source_Location,Line,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms id11}@anchor{25f}@anchor{gnat_rm/intrinsic_subprograms shifts-and-rotates}@anchor{260}
  @section Shifts and Rotates
  
  
--- 17862,17995 ----
  @end example
  
  This declaration would permit 'mixed mode' arithmetic on items
! of the differing types @code{Int1} and @code{Int2}.
  It is also possible to specify such operators for private types, if the
  full views are appropriate arithmetic types.
  
! @node Compilation_ISO_Date,Compilation_Date,Intrinsic Operators,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms id3}@anchor{256}@anchor{gnat_rm/intrinsic_subprograms compilation-iso-date}@anchor{257}
! @section Compilation_ISO_Date
  
  
! @geindex Compilation_ISO_Date
  
  This intrinsic subprogram is used in the implementation of the
! library package @code{GNAT.Source_Info}.  The only useful use of the
  intrinsic import in this case is the one in this unit, so an
  application program should simply call the function
! @code{GNAT.Source_Info.Compilation_ISO_Date} to obtain the date of
! 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{258}@anchor{gnat_rm/intrinsic_subprograms id4}@anchor{259}
! @section Compilation_Date
! 
! 
! @geindex Compilation_Date
! 
! Same as Compilation_ISO_Date, except the string is in the form
! MMM DD YYYY.
  
  @node Compilation_Time,Enclosing_Entity,Compilation_Date,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms compilation-time}@anchor{25a}@anchor{gnat_rm/intrinsic_subprograms id5}@anchor{25b}
  @section Compilation_Time
  
  
  @geindex Compilation_Time
  
  This intrinsic subprogram is used in the implementation of the
! library package @code{GNAT.Source_Info}.  The only useful use of the
  intrinsic import in this case is the one in this unit, so an
  application program should simply call the function
! @code{GNAT.Source_Info.Compilation_Time} to obtain the time of
  the current compilation (in local time format HH:MM:SS).
  
  @node Enclosing_Entity,Exception_Information,Compilation_Time,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms id6}@anchor{25c}@anchor{gnat_rm/intrinsic_subprograms enclosing-entity}@anchor{25d}
  @section Enclosing_Entity
  
  
  @geindex Enclosing_Entity
  
  This intrinsic subprogram is used in the implementation of the
! library package @code{GNAT.Source_Info}.  The only useful use of the
  intrinsic import in this case is the one in this unit, so an
  application program should simply call the function
! @code{GNAT.Source_Info.Enclosing_Entity} to obtain the name of
  the current subprogram, package, task, entry, or protected subprogram.
  
  @node Exception_Information,Exception_Message,Enclosing_Entity,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms id7}@anchor{25e}@anchor{gnat_rm/intrinsic_subprograms exception-information}@anchor{25f}
  @section Exception_Information
  
  
  @geindex Exception_Information'
  
  This intrinsic subprogram is used in the implementation of the
! library package @code{GNAT.Current_Exception}.  The only useful
  use of the intrinsic import in this case is the one in this unit,
  so an application program should simply call the function
! @code{GNAT.Current_Exception.Exception_Information} to obtain
  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{260}@anchor{gnat_rm/intrinsic_subprograms id8}@anchor{261}
  @section Exception_Message
  
  
  @geindex Exception_Message
  
  This intrinsic subprogram is used in the implementation of the
! library package @code{GNAT.Current_Exception}.  The only useful
  use of the intrinsic import in this case is the one in this unit,
  so an application program should simply call the function
! @code{GNAT.Current_Exception.Exception_Message} to obtain
  the message associated with the current exception.
  
  @node Exception_Name,File,Exception_Message,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms exception-name}@anchor{262}@anchor{gnat_rm/intrinsic_subprograms id9}@anchor{263}
  @section Exception_Name
  
  
  @geindex Exception_Name
  
  This intrinsic subprogram is used in the implementation of the
! library package @code{GNAT.Current_Exception}.  The only useful
  use of the intrinsic import in this case is the one in this unit,
  so an application program should simply call the function
! @code{GNAT.Current_Exception.Exception_Name} to obtain
  the name of the current exception.
  
  @node File,Line,Exception_Name,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms id10}@anchor{264}@anchor{gnat_rm/intrinsic_subprograms file}@anchor{265}
  @section File
  
  
  @geindex File
  
  This intrinsic subprogram is used in the implementation of the
! library package @code{GNAT.Source_Info}.  The only useful use of the
  intrinsic import in this case is the one in this unit, so an
  application program should simply call the function
! @code{GNAT.Source_Info.File} to obtain the name of the current
  file.
  
  @node Line,Shifts and Rotates,File,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms id11}@anchor{266}@anchor{gnat_rm/intrinsic_subprograms line}@anchor{267}
  @section Line
  
  
  @geindex Line
  
  This intrinsic subprogram is used in the implementation of the
! library package @code{GNAT.Source_Info}.  The only useful use of the
  intrinsic import in this case is the one in this unit, so an
  application program should simply call the function
! @code{GNAT.Source_Info.Line} to obtain the number of the current
  source line.
  
  @node Shifts and Rotates,Source_Location,Line,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms shifts-and-rotates}@anchor{268}@anchor{gnat_rm/intrinsic_subprograms id12}@anchor{269}
  @section Shifts and Rotates
  
  
*************** source line.
*** 17759,17765 ****
  @geindex Rotate_Right
  
  In standard Ada, the shift and rotate functions are available only
! for the predefined modular types in package @cite{Interfaces}.  However, in
  GNAT it is possible to define these functions for any integer
  type (signed or modular), as in this example:
  
--- 18004,18010 ----
  @geindex Rotate_Right
  
  In standard Ada, the shift and rotate functions are available only
! for the predefined modular types in package @code{Interfaces}.  However, in
  GNAT it is possible to define these functions for any integer
  type (signed or modular), as in this example:
  
*************** Shift_Left, Shift_Right, Shift_Right_Ari
*** 17774,17780 ****
  Rotate_Right. T must be an integer type. T'Size must be
  8, 16, 32 or 64 bits; if T is modular, the modulus
  must be 2**8, 2**16, 2**32 or 2**64.
! The result type must be the same as the type of @cite{Value}.
  The shift amount must be Natural.
  The formal parameter names can be anything.
  
--- 18019,18025 ----
  Rotate_Right. T must be an integer type. T'Size must be
  8, 16, 32 or 64 bits; if T is modular, the modulus
  must be 2**8, 2**16, 2**32 or 2**64.
! The result type must be the same as the type of @code{Value}.
  The shift amount must be Natural.
  The formal parameter names can be anything.
  
*************** the Provide_Shift_Operators pragma, whic
*** 17783,17803 ****
  and corresponding pragma Import's for all five shift functions.
  
  @node Source_Location,,Shifts and Rotates,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms source-location}@anchor{261}@anchor{gnat_rm/intrinsic_subprograms id12}@anchor{262}
  @section Source_Location
  
  
  @geindex Source_Location
  
  This intrinsic subprogram is used in the implementation of the
! library routine @cite{GNAT.Source_Info}.  The only useful use of the
  intrinsic import in this case is the one in this unit, so an
  application program should simply call the function
! @cite{GNAT.Source_Info.Source_Location} to obtain the current
  source file location.
  
  @node Representation Clauses and Pragmas,Standard Library Routines,Intrinsic Subprograms,Top
! @anchor{gnat_rm/representation_clauses_and_pragmas representation-clauses-and-pragmas}@anchor{d}@anchor{gnat_rm/representation_clauses_and_pragmas doc}@anchor{263}@anchor{gnat_rm/representation_clauses_and_pragmas id1}@anchor{264}
  @chapter Representation Clauses and Pragmas
  
  
--- 18028,18048 ----
  and corresponding pragma Import's for all five shift functions.
  
  @node Source_Location,,Shifts and Rotates,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms source-location}@anchor{26a}@anchor{gnat_rm/intrinsic_subprograms id13}@anchor{26b}
  @section Source_Location
  
  
  @geindex Source_Location
  
  This intrinsic subprogram is used in the implementation of the
! library routine @code{GNAT.Source_Info}.  The only useful use of the
  intrinsic import in this case is the one in this unit, so an
  application program should simply call the function
! @code{GNAT.Source_Info.Source_Location} to obtain the current
  source file location.
  
  @node Representation Clauses and Pragmas,Standard Library Routines,Intrinsic Subprograms,Top
! @anchor{gnat_rm/representation_clauses_and_pragmas representation-clauses-and-pragmas}@anchor{d}@anchor{gnat_rm/representation_clauses_and_pragmas doc}@anchor{26c}@anchor{gnat_rm/representation_clauses_and_pragmas id1}@anchor{26d}
  @chapter Representation Clauses and Pragmas
  
  
*************** and this section describes the additiona
*** 17843,17849 ****
  @end menu
  
  @node Alignment Clauses,Size Clauses,,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas id2}@anchor{265}@anchor{gnat_rm/representation_clauses_and_pragmas alignment-clauses}@anchor{266}
  @section Alignment Clauses
  
  
--- 18088,18094 ----
  @end menu
  
  @node Alignment Clauses,Size Clauses,,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas id2}@anchor{26e}@anchor{gnat_rm/representation_clauses_and_pragmas alignment-clauses}@anchor{26f}
  @section Alignment Clauses
  
  
*************** values are as follows:
*** 17860,17876 ****
  @emph{Elementary Types}.
  
  For elementary types, the alignment is the minimum of the actual size of
! objects of the type divided by @cite{Storage_Unit},
  and the maximum alignment supported by the target.
  (This maximum alignment is given by the GNAT-specific attribute
! @cite{Standard'Maximum_Alignment}; see @ref{183,,Attribute Maximum_Alignment}.)
  
  @geindex Maximum_Alignment attribute
  
! For example, for type @cite{Long_Float}, the object size is 8 bytes, and the
  default alignment will be 8 on any target that supports alignments
  this large, but on some targets, the maximum alignment may be smaller
! than 8, in which case objects of type @cite{Long_Float} will be maximally
  aligned.
  
  @item 
--- 18105,18121 ----
  @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},
  and the maximum alignment supported by the target.
  (This maximum alignment is given by the GNAT-specific attribute
! @code{Standard'Maximum_Alignment}; see @ref{189,,Attribute Maximum_Alignment}.)
  
  @geindex Maximum_Alignment attribute
  
! For example, for type @code{Long_Float}, the object size is 8 bytes, and the
  default alignment will be 8 on any target that supports alignments
  this large, but on some targets, the maximum alignment may be smaller
! than 8, in which case objects of type @code{Long_Float} will be maximally
  aligned.
  
  @item 
*************** will be as described for elementary type
*** 17889,17899 ****
  @item 
  @emph{Records}.
  
! For the normal non-packed case, the alignment of a record is equal to
  the maximum alignment of any of its components.  For tagged records, this
! includes the implicit access type used for the tag.  If a pragma @cite{Pack}
  is used and all components are packable (see separate section on pragma
! @cite{Pack}), then the resulting alignment is 1, unless the layout of the
  record makes it profitable to increase it.
  
  A special case is when:
--- 18134,18144 ----
  @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
! includes the implicit access type used for the tag.  If a pragma @code{Pack}
  is used and all components are packable (see separate section on pragma
! @code{Pack}), then the resulting alignment is 1, unless the layout of the
  record makes it profitable to increase it.
  
  A special case is when:
*************** end record;
*** 17919,17933 ****
  for Small'Size use 16;
  @end example
  
! then the default alignment of the record type @cite{Small} is 2, not 1. This
  leads to more efficient code when the record is treated as a unit, and also
! allows the type to specified as @cite{Atomic} on architectures requiring
  strict alignment.
  @end itemize
  
  An alignment clause may specify a larger alignment than the default value
  up to some maximum value dependent on the target (obtainable by using the
! attribute reference @cite{Standard'Maximum_Alignment}). It may also specify
  a smaller alignment than the default value for enumeration, integer and
  fixed point types, as well as for record types, for example
  
--- 18164,18178 ----
  for Small'Size use 16;
  @end example
  
! then the default alignment of the record type @code{Small} is 2, not 1. This
  leads to more efficient code when the record is treated as a unit, and also
! allows the type to specified as @code{Atomic} on architectures requiring
  strict alignment.
  @end itemize
  
  An alignment clause may specify a larger alignment than the default value
  up to some maximum value dependent on the target (obtainable by using the
! attribute reference @code{Standard'Maximum_Alignment}). It may also specify
  a smaller alignment than the default value for enumeration, integer and
  fixed point types, as well as for record types, for example
  
*************** for V'alignment use 1;
*** 17942,17948 ****
  @geindex Alignment
  @geindex default
  
! The default alignment for the type @cite{V} is 4, as a result of the
  Integer field in the record, but it is permissible, as shown, to
  override the default alignment of the record with a smaller value.
  
--- 18187,18193 ----
  @geindex Alignment
  @geindex default
  
! The default alignment for the type @code{V} is 4, as a result of the
  Integer field in the record, but it is permissible, as shown, to
  override the default alignment of the record with a smaller value.
  
*************** subtype RS is R range 1 .. 1000;
*** 17961,17990 ****
  @end example
  
  The alignment clause specifies an alignment of 1 for the first named subtype
! @cite{R} but this does not necessarily apply to @cite{RS}. When writing
  portable Ada code, you should avoid writing code that explicitly or
  implicitly relies on the alignment of such subtypes.
  
  For the GNAT compiler, if an explicit alignment clause is given, this
  value is also used for any subsequent subtypes. So for GNAT, in the
! above example, you can count on the alignment of @cite{RS} being 1. But this
  assumption is non-portable, and other compilers may choose different
! alignments for the subtype @cite{RS}.
  
  @node Size Clauses,Storage_Size Clauses,Alignment Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas id3}@anchor{267}@anchor{gnat_rm/representation_clauses_and_pragmas size-clauses}@anchor{268}
  @section Size Clauses
  
  
  @geindex Size Clause
  
! The default size for a type @cite{T} is obtainable through the
! language-defined attribute @cite{T'Size} and also through the
! equivalent GNAT-defined attribute @cite{T'Value_Size}.
! For objects of type @cite{T}, GNAT will generally increase the type size
  so that the object size (obtainable through the GNAT-defined attribute
! @cite{T'Object_Size})
! is a multiple of @cite{T'Alignment * Storage_Unit}.
  
  For example:
  
--- 18206,18235 ----
  @end example
  
  The alignment clause specifies an alignment of 1 for the first named subtype
! @code{R} but this does not necessarily apply to @code{RS}. When writing
  portable Ada code, you should avoid writing code that explicitly or
  implicitly relies on the alignment of such subtypes.
  
  For the GNAT compiler, if an explicit alignment clause is given, this
  value is also used for any subsequent subtypes. So for GNAT, in the
! above example, you can count on the alignment of @code{RS} being 1. But this
  assumption is non-portable, and other compilers may choose different
! 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{270}@anchor{gnat_rm/representation_clauses_and_pragmas size-clauses}@anchor{271}
  @section Size Clauses
  
  
  @geindex Size Clause
  
! The default size for a type @code{T} is obtainable through the
! language-defined attribute @code{T'Size} and also through the
! equivalent GNAT-defined attribute @code{T'Value_Size}.
! For objects of type @code{T}, GNAT will generally increase the type size
  so that the object size (obtainable through the GNAT-defined attribute
! @code{T'Object_Size})
! is a multiple of @code{T'Alignment * Storage_Unit}.
  
  For example:
  
*************** type Rec is record
*** 17997,18014 ****
  end record;
  @end example
  
! In this example, @cite{Smallint'Size} = @cite{Smallint'Value_Size} = 3,
  as specified by the RM rules,
  but objects of this type will have a size of 8
! (@cite{Smallint'Object_Size} = 8),
  since objects by default occupy an integral number
  of storage units.  On some targets, notably older
  versions of the Digital Alpha, the size of stand
  alone objects of this type may be 32, reflecting
  the inability of the hardware to do byte load/stores.
  
! Similarly, the size of type @cite{Rec} is 40 bits
! (@cite{Rec'Size} = @cite{Rec'Value_Size} = 40), but
  the alignment is 4, so objects of this type will have
  their size increased to 64 bits so that it is a multiple
  of the alignment (in bits).  This decision is
--- 18242,18259 ----
  end record;
  @end example
  
! In this example, @code{Smallint'Size} = @code{Smallint'Value_Size} = 3,
  as specified by the RM rules,
  but objects of this type will have a size of 8
! (@code{Smallint'Object_Size} = 8),
  since objects by default occupy an integral number
  of storage units.  On some targets, notably older
  versions of the Digital Alpha, the size of stand
  alone objects of this type may be 32, reflecting
  the inability of the hardware to do byte load/stores.
  
! Similarly, the size of type @code{Rec} is 40 bits
! (@code{Rec'Size} = @code{Rec'Value_Size} = 40), but
  the alignment is 4, so objects of this type will have
  their size increased to 64 bits so that it is a multiple
  of the alignment (in bits).  This decision is
*************** in accordance with the specific Implemen
*** 18016,18025 ****
  
  @quotation
  
! "A @cite{Size} clause should be supported for an object if the specified
! @cite{Size} is at least as large as its subtype's @cite{Size}, and corresponds
  to a size in storage elements that is a multiple of the object's
! @cite{Alignment} (if the @cite{Alignment} is nonzero)."
  @end quotation
  
  An explicit size clause may be used to override the default size by
--- 18261,18270 ----
  
  @quotation
  
! "A @code{Size} clause should be supported for an object if the specified
! @code{Size} is at least as large as its subtype's @code{Size}, and corresponds
  to a size in storage elements that is a multiple of the object's
! @code{Alignment} (if the @code{Alignment} is nonzero)."
  @end quotation
  
  An explicit size clause may be used to override the default size by
*************** if it is known that a Size value can be
*** 18049,18065 ****
  type Integer.
  
  @node Storage_Size Clauses,Size of Variant Record Objects,Size Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas storage-size-clauses}@anchor{269}@anchor{gnat_rm/representation_clauses_and_pragmas id4}@anchor{26a}
  @section Storage_Size Clauses
  
  
  @geindex Storage_Size Clause
  
! For tasks, the @cite{Storage_Size} clause specifies the amount of space
  to be allocated for the task stack.  This cannot be extended, and if the
! stack is exhausted, then @cite{Storage_Error} will be raised (if stack
! checking is enabled).  Use a @cite{Storage_Size} attribute definition clause,
! or a @cite{Storage_Size} pragma in the task definition to set the
  appropriate required size.  A useful technique is to include in every
  task definition a pragma of the form:
  
--- 18294,18310 ----
  type Integer.
  
  @node Storage_Size Clauses,Size of Variant Record Objects,Size Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas storage-size-clauses}@anchor{272}@anchor{gnat_rm/representation_clauses_and_pragmas id4}@anchor{273}
  @section Storage_Size Clauses
  
  
  @geindex Storage_Size Clause
  
! For tasks, the @code{Storage_Size} clause specifies the amount of space
  to be allocated for the task stack.  This cannot be extended, and if the
! stack is exhausted, then @code{Storage_Error} will be raised (if stack
! checking is enabled).  Use a @code{Storage_Size} attribute definition clause,
! or a @code{Storage_Size} pragma in the task definition to set the
  appropriate required size.  A useful technique is to include in every
  task definition a pragma of the form:
  
*************** task definition a pragma of the form:
*** 18067,18090 ****
  pragma Storage_Size (Default_Stack_Size);
  @end example
  
! Then @cite{Default_Stack_Size} can be defined in a global package, and
  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 @cite{Storage_Size} clause specifies the maximum
  space available for allocation of objects of the type.  If this space is
! exceeded then @cite{Storage_Error} will be raised by an allocation attempt.
  In the case where the access type is declared local to a subprogram, the
! use of a @cite{Storage_Size} clause triggers automatic use of a special
! predefined storage pool (@cite{System.Pool_Size}) that ensures that all
  space for the pool is automatically reclaimed on exit from the scope in
  which the type is declared.
  
  A special case recognized by the compiler is the specification of a
! @cite{Storage_Size} of zero for an access type.  This means that no
  items can be allocated from the pool, and this is recognized at compile
  time, and all the overhead normally associated with maintaining a fixed
  size storage pool is eliminated.  Consider the following example:
--- 18312,18335 ----
  pragma Storage_Size (Default_Stack_Size);
  @end example
  
! Then @code{Default_Stack_Size} can be defined in a global package, and
  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
  space available for allocation of objects of the type.  If this space is
! exceeded then @code{Storage_Error} will be raised by an allocation attempt.
  In the case where the access type is declared local to a subprogram, the
! use of a @code{Storage_Size} clause triggers automatic use of a special
! predefined storage pool (@code{System.Pool_Size}) that ensures that all
  space for the pool is automatically reclaimed on exit from the scope in
  which the type is declared.
  
  A special case recognized by the compiler is the specification of a
! @code{Storage_Size} of zero for an access type.  This means that no
  items can be allocated from the pool, and this is recognized at compile
  time, and all the overhead normally associated with maintaining a fixed
  size storage pool is eliminated.  Consider the following example:
*************** Of course in practice, there will not be
*** 18122,18128 ****
  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{26b}@anchor{gnat_rm/representation_clauses_and_pragmas size-of-variant-record-objects}@anchor{26c}
  @section Size of Variant Record Objects
  
  
--- 18367,18373 ----
  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{274}@anchor{gnat_rm/representation_clauses_and_pragmas size-of-variant-record-objects}@anchor{275}
  @section Size of Variant Record Objects
  
  
*************** variant value to V2, therefore 16 bits m
*** 18175,18181 ****
  in the general case, even fewer bits may be needed at any particular
  point during the program execution.
  
! As can be seen from the output of this program, the @cite{'Size}
  attribute applied to such an object in GNAT gives the actual allocated
  size of the variable, which is the largest size of any of the variants.
  The Ada Reference Manual is not completely clear on what choice should
--- 18420,18426 ----
  in the general case, even fewer bits may be needed at any particular
  point during the program execution.
  
! As can be seen from the output of this program, the @code{'Size}
  attribute applied to such an object in GNAT gives the actual allocated
  size of the variable, which is the largest size of any of the variants.
  The Ada Reference Manual is not completely clear on what choice should
*************** The output from this program is
*** 18226,18238 ****
  16
  @end example
  
! Here we see that while the @cite{'Size} attribute always returns
  the maximum size, regardless of the current variant value, the
! @cite{Size} function does indeed return the size of the current
  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 id6}@anchor{26d}@anchor{gnat_rm/representation_clauses_and_pragmas biased-representation}@anchor{26e}
  @section Biased Representation
  
  
--- 18471,18483 ----
  16
  @end example
  
! Here we see that while the @code{'Size} attribute always returns
  the maximum size, regardless of the current variant value, the
! @code{Size} function does indeed return the size of the current
  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 id6}@anchor{276}@anchor{gnat_rm/representation_clauses_and_pragmas biased-representation}@anchor{277}
  @section Biased Representation
  
  
*************** type Small is range -7 .. -4;
*** 18253,18259 ****
  for Small'Size use 2;
  @end example
  
! Although the default size of type @cite{Small} is 4, the @cite{Size}
  clause is accepted by GNAT and results in the following representation
  scheme:
  
--- 18498,18504 ----
  for Small'Size use 2;
  @end example
  
! Although the default size of type @code{Small} is 4, the @code{Size}
  clause is accepted by GNAT and results in the following representation
  scheme:
  
*************** scheme:
*** 18264,18276 ****
  -4 is represented as 2#11#
  @end example
  
! Biased representation is only used if the specified @cite{Size} clause
  cannot be accepted in any other manner.  These reduced sizes that force
  biased representation can be used for all discrete types except for
  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{26f}@anchor{gnat_rm/representation_clauses_and_pragmas value-size-and-object-size-clauses}@anchor{270}
  @section Value_Size and Object_Size Clauses
  
  
--- 18509,18521 ----
  -4 is represented as 2#11#
  @end example
  
! Biased representation is only used if the specified @code{Size} clause
  cannot be accepted in any other manner.  These reduced sizes that force
  biased representation can be used for all discrete types except for
  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{278}@anchor{gnat_rm/representation_clauses_and_pragmas value-size-and-object-size-clauses}@anchor{279}
  @section Value_Size and Object_Size Clauses
  
  
*************** enumeration types for which a representa
*** 18281,18293 ****
  @geindex Size
  @geindex of objects
  
! In Ada 95 and Ada 2005, @cite{T'Size} for a type @cite{T} is the minimum
! number of bits required to hold values of type @cite{T}.
  Although this interpretation was allowed in Ada 83, it was not required,
  and this requirement in practice can cause some significant difficulties.
! For example, in most Ada 83 compilers, @cite{Natural'Size} was 32.
  However, in Ada 95 and Ada 2005,
! @cite{Natural'Size} is
  typically 31.  This means that code may change in behavior when moving
  from Ada 83 to Ada 95 or Ada 2005.  For example, consider:
  
--- 18526,18538 ----
  @geindex Size
  @geindex of objects
  
! In Ada 95 and Ada 2005, @code{T'Size} for a type @code{T} is the minimum
! number of bits required to hold values of type @code{T}.
  Although this interpretation was allowed in Ada 83, it was not required,
  and this requirement in practice can cause some significant difficulties.
! For example, in most Ada 83 compilers, @code{Natural'Size} was 32.
  However, in Ada 95 and Ada 2005,
! @code{Natural'Size} is
  typically 31.  This means that code may change in behavior when moving
  from Ada 83 to Ada 95 or Ada 2005.  For example, consider:
  
*************** for Rec use record
*** 18303,18409 ****
  end record;
  @end example
  
! In the above code, since the typical size of @cite{Natural} objects
! is 32 bits and @cite{Natural'Size} is 31, the above code can cause
  unexpected inefficient packing in Ada 95 and Ada 2005, and in general
  there are cases where the fact that the object size can exceed the
  size of the type causes surprises.
  
  To help get around this problem GNAT provides two implementation
! defined attributes, @cite{Value_Size} and @cite{Object_Size}.  When
  applied to a type, these attributes yield the size of the type
  (corresponding to the RM defined size attribute), and the size of
  objects of the type respectively.
  
! The @cite{Object_Size} is used for determining the default size of
  objects and components.  This size value can be referred to using the
! @cite{Object_Size} attribute.  The phrase 'is used' here means that it is
  the basis of the determination of the size.  The backend is free to
  pad this up if necessary for efficiency, e.g., an 8-bit stand-alone
  character might be stored in 32 bits on a machine with no efficient
  byte access instructions such as the Alpha.
  
! The default rules for the value of @cite{Object_Size} for
  discrete types are as follows:
  
  
  @itemize *
  
  @item 
! The @cite{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.
  
  @item 
! The @cite{Object_Size} of a subtype is the same as the
! @cite{Object_Size} of
  the type from which it is obtained.
  
  @item 
! The @cite{Object_Size} of a derived base type is copied from the parent
! base type, and the @cite{Object_Size} of a derived first subtype is copied
  from the parent first subtype.
  @end itemize
  
! The @cite{Value_Size} attribute
  is the (minimum) number of bits required to store a value
  of the type.
  This value is used to determine how tightly to pack
  records or arrays with components of this type, and also affects
  the semantics of unchecked conversion (unchecked conversions where
! the @cite{Value_Size} values differ generate a warning, and are potentially
  target dependent).
  
! The default rules for the value of @cite{Value_Size} are as follows:
  
  
  @itemize *
  
  @item 
! The @cite{Value_Size} for a base subtype is the minimum number of bits
  required to store all values of the type (including the sign bit
  only if negative values are possible).
  
  @item 
  If a subtype statically matches the first subtype of a given type, then it has
! by default the same @cite{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".)
  
  @item 
! All other subtypes have a @cite{Value_Size} corresponding to the minimum
  number of bits required to store all values of the subtype.  For
  dynamic bounds, it is assumed that the value can range down or up
  to the corresponding bound of the ancestor
  @end itemize
  
! The RM defined attribute @cite{Size} corresponds to the
! @cite{Value_Size} attribute.
  
! The @cite{Size} attribute may be defined for a first-named subtype.  This sets
! the @cite{Value_Size} of
  the first-named subtype to the given value, and the
! @cite{Object_Size} of this first-named subtype to the given value padded up
  to an appropriate boundary.  It is a consequence of the default rules
! above that this @cite{Object_Size} will apply to all further subtypes.  On the
! other hand, @cite{Value_Size} is affected only for the first subtype, any
  dynamic subtypes obtained from it directly, and any statically matching
! subtypes.  The @cite{Value_Size} of any other static subtypes is not affected.
  
! @cite{Value_Size} and
! @cite{Object_Size} may be explicitly set for any subtype using
  an attribute definition clause.  Note that the use of these attributes
  can cause the RM 13.1(14) rule to be violated.  If two access types
! reference aliased objects whose subtypes have differing @cite{Object_Size}
  values as a result of explicit attribute definition clauses, then it
  is illegal to convert from one access subtype to the other. For a more
  complete description of this additional legality rule, see the
! description of the @cite{Object_Size} attribute.
  
  To get a feel for the difference, consider the following examples (note
! that in each case the base is @cite{Short_Short_Integer} with a size of 8):
  
  
  @multitable {xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx} {xxxxxxxxxxxxxxx} {xxxxxxxxxxxxxxx} 
--- 18548,18654 ----
  end record;
  @end example
  
! In the above code, since the typical size of @code{Natural} objects
! is 32 bits and @code{Natural'Size} is 31, the above code can cause
  unexpected inefficient packing in Ada 95 and Ada 2005, and in general
  there are cases where the fact that the object size can exceed the
  size of the type causes surprises.
  
  To help get around this problem GNAT provides two implementation
! defined attributes, @code{Value_Size} and @code{Object_Size}.  When
  applied to a type, these attributes yield the size of the type
  (corresponding to the RM defined size attribute), and the size of
  objects of the type respectively.
  
! The @code{Object_Size} is used for determining the default size of
  objects and components.  This size value can be referred to using the
! @code{Object_Size} attribute.  The phrase 'is used' here means that it is
  the basis of the determination of the size.  The backend is free to
  pad this up if necessary for efficiency, e.g., an 8-bit stand-alone
  character might be stored in 32 bits on a machine with no efficient
  byte access instructions such as the Alpha.
  
! The default rules for the value of @code{Object_Size} for
  discrete types are as follows:
  
  
  @itemize *
  
  @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.
  
  @item 
! The @code{Object_Size} of a subtype is the same as the
! @code{Object_Size} of
  the type from which it is obtained.
  
  @item 
! The @code{Object_Size} of a derived base type is copied from the parent
! base type, and the @code{Object_Size} of a derived first subtype is copied
  from the parent first subtype.
  @end itemize
  
! The @code{Value_Size} attribute
  is the (minimum) number of bits required to store a value
  of the type.
  This value is used to determine how tightly to pack
  records or arrays with components of this type, and also affects
  the semantics of unchecked conversion (unchecked conversions where
! the @code{Value_Size} values differ generate a warning, and are potentially
  target dependent).
  
! The default rules for the value of @code{Value_Size} are as follows:
  
  
  @itemize *
  
  @item 
! The @code{Value_Size} for a base subtype is the minimum number of bits
  required to store all values of the type (including the sign bit
  only if negative values are possible).
  
  @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".)
  
  @item 
! All other subtypes have a @code{Value_Size} corresponding to the minimum
  number of bits required to store all values of the subtype.  For
  dynamic bounds, it is assumed that the value can range down or up
  to the corresponding bound of the ancestor
  @end itemize
  
! The RM defined attribute @code{Size} corresponds to the
! @code{Value_Size} attribute.
  
! The @code{Size} attribute may be defined for a first-named subtype.  This sets
! the @code{Value_Size} of
  the first-named subtype to the given value, and the
! @code{Object_Size} of this first-named subtype to the given value padded up
  to an appropriate boundary.  It is a consequence of the default rules
! above that this @code{Object_Size} will apply to all further subtypes.  On the
! other hand, @code{Value_Size} is affected only for the first subtype, any
  dynamic subtypes obtained from it directly, and any statically matching
! subtypes.  The @code{Value_Size} of any other static subtypes is not affected.
  
! @code{Value_Size} and
! @code{Object_Size} may be explicitly set for any subtype using
  an attribute definition clause.  Note that the use of these attributes
  can cause the RM 13.1(14) rule to be violated.  If two access types
! reference aliased objects whose subtypes have differing @code{Object_Size}
  values as a result of explicit attribute definition clauses, then it
  is illegal to convert from one access subtype to the other. For a more
  complete description of this additional legality rule, see the
! description of the @code{Object_Size} attribute.
  
  To get a feel for the difference, consider the following examples (note
! that in each case the base is @code{Short_Short_Integer} with a size of 8):
  
  
  @multitable {xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx} {xxxxxxxxxxxxxxx} {xxxxxxxxxxxxxxx} 
*************** case. What GNAT does is to allocate suff
*** 18509,18517 ****
  possible dynamic values for the bounds at run-time.
  
  So far, so good, but GNAT has to obey the RM rules, so the question is
! under what conditions must the RM @cite{Size} be used.
  The following is a list
! of the occasions on which the RM @cite{Size} must be used:
  
  
  @itemize *
--- 18754,18762 ----
  possible dynamic values for the bounds at run-time.
  
  So far, so good, but GNAT has to obey the RM rules, so the question is
! under what conditions must the RM @code{Size} be used.
  The following is a list
! of the occasions on which the RM @code{Size} must be used:
  
  
  @itemize *
*************** of the occasions on which the RM @cite{S
*** 18520,18534 ****
  Component size for packed arrays or records
  
  @item 
! Value of the attribute @cite{Size} for a type
  
  @item 
  Warning about sizes not matching for unchecked conversion
  @end itemize
  
! For record types, the @cite{Object_Size} is always a multiple of the
  alignment of the type (this is true for all types). In some cases the
! @cite{Value_Size} can be smaller. Consider:
  
  @example
  type R is record
--- 18765,18779 ----
  Component size for packed arrays or records
  
  @item 
! Value of the attribute @code{Size} for a type
  
  @item 
  Warning about sizes not matching for unchecked conversion
  @end itemize
  
! For record types, the @code{Object_Size} is always a multiple of the
  alignment of the type (this is true for all types). In some cases the
! @code{Value_Size} can be smaller. Consider:
  
  @example
  type R is record
*************** end record;
*** 18539,18556 ****
  
  On a typical 32-bit architecture, the X component will be four bytes, and
  require four-byte alignment, and the Y component will be one byte. In this
! case @cite{R'Value_Size} will be 40 (bits) since this is the minimum size
  required to store a value of this type, and for example, it is permissible
  to have a component of type R in an outer array whose component size is
! specified to be 48 bits. However, @cite{R'Object_Size} will be 64 (bits),
  since it must be rounded up so that this value is a multiple of the
  alignment (4 bytes = 32 bits).
  
! For all other types, the @cite{Object_Size}
! and @cite{Value_Size} are the same (and equivalent to the RM attribute @cite{Size}).
! Only @cite{Size} may be specified for such types.
  
! Note that @cite{Value_Size} can be used to force biased representation
  for a particular subtype. Consider this example:
  
  @example
--- 18784,18801 ----
  
  On a typical 32-bit architecture, the X component will be four bytes, and
  require four-byte alignment, and the Y component will be one byte. In this
! case @code{R'Value_Size} will be 40 (bits) since this is the minimum size
  required to store a value of this type, and for example, it is permissible
  to have a component of type R in an outer array whose component size is
! specified to be 48 bits. However, @code{R'Object_Size} will be 64 (bits),
  since it must be rounded up so that this value is a multiple of the
  alignment (4 bytes = 32 bits).
  
! For all other types, the @code{Object_Size}
! and @code{Value_Size} are the same (and equivalent to the RM attribute @code{Size}).
! Only @code{Size} may be specified for such types.
  
! Note that @code{Value_Size} can be used to force biased representation
  for a particular subtype. Consider this example:
  
  @example
*************** subtype RAB is R range A .. B;
*** 18559,18583 ****
  subtype REF is R range E .. F;
  @end example
  
! By default, @cite{RAB}
  has a size of 1 (sufficient to accommodate the representation
! of @cite{A} and @cite{B}, 0 and 1), and @cite{REF}
  has a size of 3 (sufficient to accommodate the representation
! of @cite{E} and @cite{F}, 4 and 5). But if we add the
! following @cite{Value_Size} attribute definition clause:
  
  @example
  for REF'Value_Size use 1;
  @end example
  
! then biased representation is forced for @cite{REF},
! and 0 will represent @cite{E} and 1 will represent @cite{F}.
! A warning is issued when a @cite{Value_Size} attribute
  definition clause forces biased representation. This
! warning can be turned off using @cite{-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 id8}@anchor{271}@anchor{gnat_rm/representation_clauses_and_pragmas component-size-clauses}@anchor{272}
  @section Component_Size Clauses
  
  
--- 18804,18828 ----
  subtype REF is R range E .. F;
  @end example
  
! By default, @code{RAB}
  has a size of 1 (sufficient to accommodate the representation
! of @code{A} and @code{B}, 0 and 1), and @code{REF}
  has a size of 3 (sufficient to accommodate the representation
! of @code{E} and @code{F}, 4 and 5). But if we add the
! following @code{Value_Size} attribute definition clause:
  
  @example
  for REF'Value_Size use 1;
  @end example
  
! then biased representation is forced for @code{REF},
! and 0 will represent @code{E} and 1 will represent @code{F}.
! A warning is issued when a @code{Value_Size} attribute
  definition clause forces biased representation. This
! 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 id8}@anchor{27a}@anchor{gnat_rm/representation_clauses_and_pragmas component-size-clauses}@anchor{27b}
  @section Component_Size Clauses
  
  
*************** and a pragma Pack for the same array typ
*** 18624,18630 ****
  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{273}@anchor{gnat_rm/representation_clauses_and_pragmas id9}@anchor{274}
  @section Bit_Order Clauses
  
  
--- 18869,18875 ----
  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{27c}@anchor{gnat_rm/representation_clauses_and_pragmas id9}@anchor{27d}
  @section Bit_Order Clauses
  
  
*************** clauses are given, the pragma Pack will
*** 18635,18641 ****
  @geindex ordering
  @geindex of bits
  
! For record subtypes, GNAT permits the specification of the @cite{Bit_Order}
  attribute.  The specification may either correspond to the default bit
  order for the target, in which case the specification has no effect and
  places no additional restrictions, or it may be for the non-standard
--- 18880,18886 ----
  @geindex ordering
  @geindex of bits
  
! For record subtypes, GNAT permits the specification of the @code{Bit_Order}
  attribute.  The specification may either correspond to the default bit
  order for the target, in which case the specification has no effect and
  places no additional restrictions, or it may be for the non-standard
*************** restrictions placed on component clauses
*** 18653,18659 ****
  Components fitting within a single storage unit.
  
  These are unrestricted, and the effect is merely to renumber bits.  For
! example if we are on a little-endian machine with @cite{Low_Order_First}
  being the default, then the following two declarations have exactly
  the same effect:
  
--- 18898,18904 ----
  Components fitting within a single storage unit.
  
  These are unrestricted, and the effect is merely to renumber bits.  For
! example if we are on a little-endian machine with @code{Low_Order_First}
  being the default, then the following two declarations have exactly
  the same effect:
  
*************** end record;
*** 18682,18688 ****
  @end example
  
  The useful application here is to write the second declaration with the
! @cite{Bit_Order} attribute definition clause, and know that it will be treated
  the same, regardless of whether the target is little-endian or big-endian.
  
  @item 
--- 18927,18933 ----
  @end example
  
  The useful application here is to write the second declaration with the
! @code{Bit_Order} attribute definition clause, and know that it will be treated
  the same, regardless of whether the target is little-endian or big-endian.
  
  @item 
*************** Components occupying an integral number
*** 18690,18696 ****
  
  These are components that exactly fit in two or more bytes.  Such component
  declarations are allowed, but have no effect, since it is important to realize
! that the @cite{Bit_Order} specification does not affect the ordering of bytes.
  In particular, the following attempt at getting an endian-independent integer
  does not work:
  
--- 18935,18941 ----
  
  These are components that exactly fit in two or more bytes.  Such component
  declarations are allowed, but have no effect, since it is important to realize
! that the @code{Bit_Order} specification does not affect the ordering of bytes.
  In particular, the following attempt at getting an endian-independent integer
  does not work:
  
*************** This declaration will result in a little
*** 18710,18716 ****
  little-endian machine, and a big-endian integer on a big-endian machine.
  If byte flipping is required for interoperability between big- and
  little-endian machines, this must be explicitly programmed.  This capability
! is not provided by @cite{Bit_Order}.
  
  @item 
  Components that are positioned across byte boundaries.
--- 18955,18961 ----
  little-endian machine, and a big-endian integer on a big-endian machine.
  If byte flipping is required for interoperability between big- and
  little-endian machines, this must be explicitly programmed.  This capability
! is not provided by @code{Bit_Order}.
  
  @item 
  Components that are positioned across byte boundaries.
*************** will be flagged as illegal by GNAT.
*** 18725,18736 ****
  Since the misconception that Bit_Order automatically deals with all
  endian-related incompatibilities is a common one, the specification of
  a component field that is an integral number of bytes will always
! generate a warning.  This warning may be suppressed using @cite{pragma Warnings (Off)}
  if desired.  The following section contains additional
  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 id10}@anchor{275}@anchor{gnat_rm/representation_clauses_and_pragmas effect-of-bit-order-on-byte-ordering}@anchor{276}
  @section Effect of Bit_Order on Byte Ordering
  
  
--- 18970,18981 ----
  Since the misconception that Bit_Order automatically deals with all
  endian-related incompatibilities is a common one, the specification of
  a component field that is an integral number of bytes will always
! generate a warning.  This warning may be suppressed using @code{pragma Warnings (Off)}
  if desired.  The following section contains additional
  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 id10}@anchor{27e}@anchor{gnat_rm/representation_clauses_and_pragmas effect-of-bit-order-on-byte-ordering}@anchor{27f}
  @section Effect of Bit_Order on Byte Ordering
  
  
*************** details regarding the issue of byte orde
*** 18739,18749 ****
  @geindex ordering
  @geindex of bytes
  
! In this section we will review the effect of the @cite{Bit_Order} attribute
  definition clause on byte ordering.  Briefly, it has no effect at all, but
  a detailed example will be helpful.  Before giving this
  example, let us review the precise
! definition of the effect of defining @cite{Bit_Order}.  The effect of a
  non-standard bit order is described in section 13.5.3 of the Ada
  Reference Manual:
  
--- 18984,18994 ----
  @geindex ordering
  @geindex of bytes
  
! In this section we will review the effect of the @code{Bit_Order} attribute
  definition clause on byte ordering.  Briefly, it has no effect at all, but
  a detailed example will be helpful.  Before giving this
  example, let us review the precise
! definition of the effect of defining @code{Bit_Order}.  The effect of a
  non-standard bit order is described in section 13.5.3 of the Ada
  Reference Manual:
  
*************** less than Storage_Unit."
*** 18766,18772 ****
  @end quotation
  
  The critical point here is that storage places are taken from
! the values after normalization, not before.  So the @cite{Bit_Order}
  interpretation applies to normalized values.  The interpretation
  is described in the later part of the 13.5.3 paragraph:
  
--- 19011,19017 ----
  @end quotation
  
  The critical point here is that storage places are taken from
! the values after normalization, not before.  So the @code{Bit_Order}
  interpretation applies to normalized values.  The interpretation
  is described in the later part of the 13.5.3 paragraph:
  
*************** end record;
*** 18865,18871 ****
  It is a nuisance to have to rewrite the clause, especially if
  the code has to be maintained on both machines.  However,
  this is a case that we can handle with the
! @cite{Bit_Order} attribute if it is implemented.
  Note that the implementation is not required on byte addressed
  machines, but it is indeed implemented in GNAT.
  This means that we can simply use the
--- 19110,19116 ----
  It is a nuisance to have to rewrite the clause, especially if
  the code has to be maintained on both machines.  However,
  this is a case that we can handle with the
! @code{Bit_Order} attribute if it is implemented.
  Note that the implementation is not required on byte addressed
  machines, but it is indeed implemented in GNAT.
  This means that we can simply use the
*************** independent of whether the code is compi
*** 18880,18886 ****
  machine.
  
  The important point to understand is that byte ordering is not affected.
! A @cite{Bit_Order} attribute definition never affects which byte a field
  ends up in, only where it ends up in that byte.
  To make this clear, let us rewrite the record rep clause of the previous
  example as:
--- 19125,19131 ----
  machine.
  
  The important point to understand is that byte ordering is not affected.
! A @code{Bit_Order} attribute definition never affects which byte a field
  ends up in, only where it ends up in that byte.
  To make this clear, let us rewrite the record rep clause of the previous
  example as:
*************** for Data use record
*** 18931,18943 ****
  end record;
  @end example
  
! Why are they equivalent? Well take a specific field, the @cite{Slave_V2}
  field.  The storage place attributes are obtained by normalizing the
! values given so that the @cite{First_Bit} value is less than 8.  After
  normalizing the values (0,10,10) we get (1,2,2) which is exactly what
  we specified in the other case.
  
! Now one might expect that the @cite{Bit_Order} attribute might affect
  bit numbering within the entire record component (two bytes in this
  case, thus affecting which byte fields end up in), but that is not
  the way this feature is defined, it only affects numbering of bits,
--- 19176,19188 ----
  end record;
  @end example
  
! Why are they equivalent? Well take a specific field, the @code{Slave_V2}
  field.  The storage place attributes are obtained by normalizing the
! values given so that the @code{First_Bit} value is less than 8.  After
  normalizing the values (0,10,10) we get (1,2,2) which is exactly what
  we specified in the other case.
  
! Now one might expect that the @code{Bit_Order} attribute might affect
  bit numbering within the entire record component (two bytes in this
  case, thus affecting which byte fields end up in), but that is not
  the way this feature is defined, it only affects numbering of bits,
*************** not which byte they end up in.
*** 18945,18951 ****
  
  Consequently it never makes sense to specify a starting bit number
  greater than 7 (for a byte addressable field) if an attribute
! definition for @cite{Bit_Order} has been given, and indeed it
  may be actively confusing to specify such a value, so the compiler
  generates a warning for such usage.
  
--- 19190,19196 ----
  
  Consequently it never makes sense to specify a starting bit number
  greater than 7 (for a byte addressable field) if an attribute
! definition for @code{Bit_Order} has been given, and indeed it
  may be actively confusing to specify such a value, so the compiler
  generates a warning for such usage.
  
*************** end record;
*** 18983,18999 ****
  @end example
  
  Now to switch between machines, all that is necessary is
! to set the boolean constant @cite{Master_Byte_First} in
  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 pragma-pack-for-arrays}@anchor{277}@anchor{gnat_rm/representation_clauses_and_pragmas id11}@anchor{278}
  @section Pragma Pack for Arrays
  
  
  @geindex Pragma Pack (for arrays)
  
! Pragma @cite{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:
  
--- 19228,19244 ----
  @end example
  
  Now to switch between machines, all that is necessary is
! to set the boolean constant @code{Master_Byte_First} in
  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 pragma-pack-for-arrays}@anchor{280}@anchor{gnat_rm/representation_clauses_and_pragmas id11}@anchor{281}
  @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:
  
*************** Any small simple record type with a stat
*** 19011,19017 ****
  @end itemize
  
  For all these cases, if the component subtype size is in the range
! 1 through 64, then the effect of the pragma @cite{Pack} is exactly as though a
  component size were specified giving the component subtype size.
  
  All other types are non-packable, they occupy an integral number of storage
--- 19256,19262 ----
  @end itemize
  
  For all these cases, if the component subtype size is in the range
! 1 through 64, then the effect of the pragma @code{Pack} is exactly as though a
  component size were specified giving the component subtype size.
  
  All other types are non-packable, they occupy an integral number of storage
*************** type ar is array (1 .. 8) of r;
*** 19026,19043 ****
  pragma Pack (ar);
  @end example
  
! Then the component size of @cite{ar} will be set to 5 (i.e., to @cite{r'size},
! and the size of the array @cite{ar} will be exactly 40 bits).
  
  Note that in some cases this rather fierce approach to packing can produce
  unexpected effects.  For example, in Ada 95 and Ada 2005,
! subtype @cite{Natural} typically has a size of 31, meaning that if you
! pack an array of @cite{Natural}, you get 31-bit
  close packing, which saves a few bits, but results in far less efficient
  access.  Since many other Ada compilers will ignore such a packing request,
! GNAT will generate a warning on some uses of pragma @cite{Pack} that it guesses
  might not be what is intended.  You can easily remove this warning by
! using an explicit @cite{Component_Size} setting instead, which never generates
  a warning, since the intention of the programmer is clear in this case.
  
  GNAT treats packed arrays in one of two ways.  If the size of the array is
--- 19271,19288 ----
  pragma Pack (ar);
  @end example
  
! Then the component size of @code{ar} will be set to 5 (i.e., to @code{r'size},
! and the size of the array @code{ar} will be exactly 40 bits).
  
  Note that in some cases this rather fierce approach to packing can produce
  unexpected effects.  For example, in Ada 95 and Ada 2005,
! subtype @code{Natural} typically has a size of 31, meaning that if you
! pack an array of @code{Natural}, you get 31-bit
  close packing, which saves a few bits, but results in far less efficient
  access.  Since many other Ada compilers will ignore such a packing request,
! GNAT will generate a warning on some uses of pragma @code{Pack} that it guesses
  might not be what is intended.  You can easily remove this warning by
! using an explicit @code{Component_Size} setting instead, which never generates
  a warning, since the intention of the programmer is clear in this case.
  
  GNAT treats packed arrays in one of two ways.  If the size of the array is
*************** rejecting the size clause and noting tha
*** 19077,19083 ****
  
  One special case that is worth noting occurs when the base type of the
  component size is 8/16/32 and the subtype is one bit less. Notably this
! occurs with subtype @cite{Natural}. Consider:
  
  @example
  type Arr is array (1 .. 32) of Natural;
--- 19322,19328 ----
  
  One special case that is worth noting occurs when the base type of the
  component size is 8/16/32 and the subtype is one bit less. Notably this
! occurs with subtype @code{Natural}. Consider:
  
  @example
  type Arr is array (1 .. 32) of Natural;
*************** pragma Pack (Arr);
*** 19085,19094 ****
  @end example
  
  In all commonly used Ada 83 compilers, this pragma Pack would be ignored,
! since typically @cite{Natural'Size} is 32 in Ada 83, and in any case most
  Ada 83 compilers did not attempt 31 bit packing.
  
! In Ada 95 and Ada 2005, @cite{Natural'Size} is required to be 31. Furthermore,
  GNAT really does pack 31-bit subtype to 31 bits. This may result in a
  substantial unintended performance penalty when porting legacy Ada 83 code.
  To help prevent this, GNAT generates a warning in such cases. If you really
--- 19330,19339 ----
  @end example
  
  In all commonly used Ada 83 compilers, this pragma Pack would be ignored,
! since typically @code{Natural'Size} is 32 in Ada 83, and in any case most
  Ada 83 compilers did not attempt 31 bit packing.
  
! In Ada 95 and Ada 2005, @code{Natural'Size} is required to be 31. Furthermore,
  GNAT really does pack 31-bit subtype to 31 bits. This may result in a
  substantial unintended performance penalty when porting legacy Ada 83 code.
  To help prevent this, GNAT generates a warning in such cases. If you really
*************** Here 31-bit packing is achieved as requi
*** 19104,19116 ****
  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 pragma-pack-for-records}@anchor{279}@anchor{gnat_rm/representation_clauses_and_pragmas id12}@anchor{27a}
  @section Pragma Pack for Records
  
  
  @geindex Pragma Pack (for records)
  
! Pragma @cite{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.
--- 19349,19361 ----
  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 pragma-pack-for-records}@anchor{282}@anchor{gnat_rm/representation_clauses_and_pragmas id12}@anchor{283}
  @section Pragma Pack for Records
  
  
  @geindex Pragma Pack (for records)
  
! 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.
*************** internally as modular integers, and so t
*** 19131,19143 ****
  Small simple records, where the size is statically known, are also packable.
  @end itemize
  
! For all these cases, if the 'Size value is in the range 1 through 64, the
  components occupy the exact number of bits corresponding to this value
  and are packed with no padding bits, i.e. they can start on an arbitrary
  bit boundary.
  
  All other types are non-packable, they occupy an integral number of storage
! units and the only effect of pragma Pack is to remove alignment gaps.
  
  For example, consider the record
  
--- 19376,19388 ----
  Small simple records, where the size is statically known, are also packable.
  @end itemize
  
! For all these cases, if the @code{'Size} value is in the range 1 through 64, the
  components occupy the exact number of bits corresponding to this value
  and are packed with no padding bits, i.e. they can start on an arbitrary
  bit boundary.
  
  All other types are non-packable, they occupy an integral number of storage
! units and the only effect of pragma @code{Pack} is to remove alignment gaps.
  
  For example, consider the record
  
*************** end record;
*** 19161,19167 ****
  pragma Pack (X2);
  @end example
  
! The representation for the record X2 is as follows:
  
  @example
  for X2'Size use 224;
--- 19406,19412 ----
  pragma Pack (X2);
  @end example
  
! The representation for the record @code{X2} is as follows:
  
  @example
  for X2'Size use 224;
*************** for X2 use record
*** 19175,19195 ****
  end record;
  @end example
  
! Studying this example, we see that the packable fields @cite{L1}
! and @cite{L2} are
  of length equal to their sizes, and placed at specific bit boundaries (and
  not byte boundaries) to
! eliminate padding.  But @cite{L3} is of a non-packable float type (because
  it is aliased), so it is on the next appropriate alignment boundary.
  
! The next two fields are fully packable, so @cite{L4} and @cite{L5} are
! minimally packed with no gaps.  However, type @cite{Rb2} is a packed
  array that is longer than 64 bits, so it is itself non-packable.  Thus
! the @cite{L6} field is aligned to the next byte 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{27b}@anchor{gnat_rm/representation_clauses_and_pragmas record-representation-clauses}@anchor{27c}
  @section Record Representation Clauses
  
  
--- 19420,19440 ----
  end record;
  @end example
  
! Studying this example, we see that the packable fields @code{L1}
! and @code{L2} are
  of length equal to their sizes, and placed at specific bit boundaries (and
  not byte boundaries) to
! eliminate padding.  But @code{L3} is of a non-packable float type (because
  it is aliased), so it is on the next appropriate alignment boundary.
  
! The next two fields are fully packable, so @code{L4} and @code{L5} are
! minimally packed with no gaps.  However, type @code{Rb2} is a packed
  array that is longer than 64 bits, so it is itself non-packable.  Thus
! the @code{L6} field is aligned to the next byte 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{284}@anchor{gnat_rm/representation_clauses_and_pragmas record-representation-clauses}@anchor{285}
  @section Record Representation Clauses
  
  
*************** of the component.
*** 19203,19209 ****
  @geindex Component Clause
  
  For all components of an elementary type, the only restriction on component
! clauses is that the size must be at least the 'Size value of the type
  (actually the Value_Size).  There are no restrictions due to alignment,
  and such components may freely cross storage boundaries.
  
--- 19448,19454 ----
  @geindex Component Clause
  
  For all components of an elementary type, the only restriction on component
! clauses is that the size must be at least the @code{'Size} value of the type
  (actually the Value_Size).  There are no restrictions due to alignment,
  and such components may freely cross storage boundaries.
  
*************** pragma Pack (R);
*** 19217,19223 ****
  for R'Size use 49;
  @end example
  
! then a component clause for a component of type R may start on any
  specified bit boundary, and may specify a value of 49 bits or greater.
  
  For packed bit arrays that are longer than 64 bits, there are two
--- 19462,19468 ----
  for R'Size use 49;
  @end example
  
! then a component clause for a component of type @code{R} may start on any
  specified bit boundary, and may specify a value of 49 bits or greater.
  
  For packed bit arrays that are longer than 64 bits, there are two
*************** the start of the record.  No component c
*** 19241,19249 ****
  tag. When a tagged type appears as a component, the tag field must have
  proper alignment
  
! In the case of a record extension T1, of a type T, no component clause applied
! to the type T1 can specify a storage location that would overlap the first
! T'Size bytes of the record.
  
  For all other component types, including non-bit-packed arrays,
  the component can be placed at an arbitrary bit boundary,
--- 19486,19494 ----
  tag. When a tagged type appears as a component, the tag field must have
  proper alignment
  
! In the case of a record extension @code{T1}, of a type @code{T}, no component clause applied
! to the type @code{T1} can specify a storage location that would overlap the first
! @code{T'Size} bytes of the record.
  
  For all other component types, including non-bit-packed arrays,
  the component can be placed at an arbitrary bit boundary,
*************** for Q use record
*** 19266,19280 ****
  end record;
  @end example
  
- Note: the above rules apply to recent releases of GNAT 5.
- In GNAT 3, there are more severe restrictions on larger components.
- For composite types, including packed arrays with a size greater than
- 64 bits, component clauses must respect the alignment requirement of the
- type, in particular, always starting on a byte boundary, and the length
- must be a multiple of the storage unit.
- 
  @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{27d}@anchor{gnat_rm/representation_clauses_and_pragmas id14}@anchor{27e}
  @section Handling of Records with Holes
  
  
--- 19511,19518 ----
  end record;
  @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{286}@anchor{gnat_rm/representation_clauses_and_pragmas id14}@anchor{287}
  @section Handling of Records with Holes
  
  
*************** for Hrec'Size use 64;
*** 19351,19357 ****
  @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{27f}@anchor{gnat_rm/representation_clauses_and_pragmas id15}@anchor{280}
  @section Enumeration Clauses
  
  
--- 19589,19595 ----
  @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{288}@anchor{gnat_rm/representation_clauses_and_pragmas id15}@anchor{289}
  @section Enumeration Clauses
  
  
*************** type t is array (r) of Character;
*** 19388,19400 ****
  @end example
  
  The array type t corresponds to a vector with exactly three elements and
! has a default size equal to @cite{3*Character'Size}.  This ensures efficient
  use of space, but means that accesses to elements of the array will incur
  the overhead of converting representation values to the corresponding
! positional values, (i.e., the value delivered by the @cite{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 id16}@anchor{281}@anchor{gnat_rm/representation_clauses_and_pragmas address-clauses}@anchor{282}
  @section Address Clauses
  
  
--- 19626,19638 ----
  @end example
  
  The array type t corresponds to a vector with exactly three elements and
! has a default size equal to @code{3*Character'Size}.  This ensures efficient
  use of space, but means that accesses to elements of the array will incur
  the overhead of converting representation values to the corresponding
! 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 id16}@anchor{28a}@anchor{gnat_rm/representation_clauses_and_pragmas address-clauses}@anchor{28b}
  @section Address Clauses
  
  
*************** thus when used as an address clause valu
*** 19502,19508 ****
  Additionally, GNAT treats as static an address clause that is an
  unchecked_conversion of a static integer value.  This simplifies the porting
  of legacy code, and provides a portable equivalent to the GNAT attribute
! @cite{To_Address}.
  
  Another issue with address clauses is the interaction with alignment
  requirements.  When an address clause is given for an object, the address
--- 19740,19746 ----
  Additionally, GNAT treats as static an address clause that is an
  unchecked_conversion of a static integer value.  This simplifies the porting
  of legacy code, and provides a portable equivalent to the GNAT attribute
! @code{To_Address}.
  
  Another issue with address clauses is the interaction with alignment
  requirements.  When an address clause is given for an object, the address
*************** Since this source of erroneous behavior
*** 19515,19530 ****
  machines with strict alignment requirements, GNAT
  checks (at compile time if possible, generating a warning, or at execution
  time with a run-time check) that the alignment is appropriate.  If the
! run-time check fails, then @cite{Program_Error} is raised.  This run-time
  check is suppressed if range checks are suppressed, or if the special GNAT
  check Alignment_Check is suppressed, or if
! @cite{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 controlled types or
! composite types containing a controlled component. 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
  
--- 19753,19767 ----
  machines with strict alignment requirements, GNAT
  checks (at compile time if possible, generating a warning, or at execution
  time with a run-time check) that the alignment is appropriate.  If the
! run-time check fails, then @code{Program_Error} is raised.  This run-time
  check is suppressed if range checks are suppressed, or if the special GNAT
  check Alignment_Check is suppressed, or if
! @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
  
*************** B    : Integer;
*** 19604,19616 ****
  for B'Address use Addr;
  @end example
  
! In both of these cases, @cite{A} and @cite{B} become aliased to one another
  via the address clause. This use of address clauses to overlay
  variables, achieving an effect similar to unchecked conversion
  was erroneous in Ada 83, but in Ada 95 and Ada 2005
  the effect is implementation defined. Furthermore, the
  Ada RM specifically recommends that in a situation
! like this, @cite{B} should be subject to the following
  implementation advice (RM 13.3(19)):
  
  @quotation
--- 19841,19853 ----
  for B'Address use Addr;
  @end example
  
! In both of these cases, @code{A} and @code{B} become aliased to one another
  via the address clause. This use of address clauses to overlay
  variables, achieving an effect similar to unchecked conversion
  was erroneous in Ada 83, but in Ada 95 and Ada 2005
  the effect is implementation defined. Furthermore, the
  Ada RM specifically recommends that in a situation
! like this, @code{B} should be subject to the following
  implementation advice (RM 13.3(19)):
  
  @quotation
*************** optimizations based on assumptions of no
*** 19621,19633 ****
  @end quotation
  
  GNAT follows this recommendation, and goes further by also applying
! this recommendation to the overlaid variable (@cite{A} in the above example)
  in this case. This means that the overlay works "as expected", in that
  a modification to one of the variables will affect the value of the other.
  
  More generally, GNAT interprets this recommendation conservatively for
  address clauses: in the cases other than overlays, it considers that the
! object is effectively subject to pragma @cite{Volatile} and implements the
  associated semantics.
  
  Note that when address clause overlays are used in this way, there is an
--- 19858,19870 ----
  @end quotation
  
  GNAT follows this recommendation, and goes further by also applying
! this recommendation to the overlaid variable (@code{A} in the above example)
  in this case. This means that the overlay works "as expected", in that
  a modification to one of the variables will affect the value of the other.
  
  More generally, GNAT interprets this recommendation conservatively for
  address clauses: in the cases other than overlays, it considers that the
! object is effectively subject to pragma @code{Volatile} and implements the
  associated semantics.
  
  Note that when address clause overlays are used in this way, there is an
*************** package Overwrite_Record is
*** 19650,19658 ****
  end Overwrite_Record;
  @end example
  
! Here the default initialization of @cite{Y} will clobber the value
! of @cite{X}, which justifies the warning. The warning notes that
! this effect can be eliminated by adding a @cite{pragma Import}
  which suppresses the initialization:
  
  @example
--- 19887,19895 ----
  end Overwrite_Record;
  @end example
  
! Here the default initialization of @code{Y} will clobber the value
! of @code{X}, which justifies the warning. The warning notes that
! this effect can be eliminated by adding a @code{pragma Import}
  which suppresses the initialization:
  
  @example
*************** package Overwrite_Record is
*** 19668,19679 ****
  end Overwrite_Record;
  @end example
  
! Note that the use of @cite{pragma Initialize_Scalars} may cause variables to
  be initialized when they would not otherwise have been in the absence
  of the use of this pragma. This may cause an overlay to have this
  unintended clobbering effect. The compiler avoids this for scalar
  types, but not for composite objects (where in general the effect
! of @cite{Initialize_Scalars} is part of the initialization routine
  for the composite object:
  
  @example
--- 19905,19916 ----
  end Overwrite_Record;
  @end example
  
! Note that the use of @code{pragma Initialize_Scalars} may cause variables to
  be initialized when they would not otherwise have been in the absence
  of the use of this pragma. This may cause an overlay to have this
  unintended clobbering effect. The compiler avoids this for scalar
  types, but not for composite objects (where in general the effect
! of @code{Initialize_Scalars} is part of the initialization routine
  for the composite object:
  
  @example
*************** end Overwrite_Array;
*** 19699,19705 ****
  @end example
  
  The above program generates the warning as shown, and at execution
! time, prints @cite{X was clobbered}. If the @cite{pragma Import} is
  added as suggested:
  
  @example
--- 19936,19942 ----
  @end example
  
  The above program generates the warning as shown, and at execution
! time, prints @code{X was clobbered}. If the @code{pragma Import} is
  added as suggested:
  
  @example
*************** end Overwrite_Array;
*** 19721,19730 ****
  @end example
  
  then the program compiles without the warning and when run will generate
! the output @cite{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{283}@anchor{gnat_rm/representation_clauses_and_pragmas use-of-address-clauses-for-memory-mapped-i-o}@anchor{284}
  @section Use of Address Clauses for Memory-Mapped I/O
  
  
--- 19958,19967 ----
  @end example
  
  then the program compiles without the warning and when run will generate
! 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{28c}@anchor{gnat_rm/representation_clauses_and_pragmas use-of-address-clauses-for-memory-mapped-i-o}@anchor{28d}
  @section Use of Address Clauses for Memory-Mapped I/O
  
  
*************** It is best to be explicit in this situat
*** 19778,19788 ****
  components to be atomic if you want the byte store, or explicitly writing
  the full word access sequence if that is what the hardware requires.
  Alternatively, if the full word access sequence is required, GNAT also
! provides the pragma @cite{Volatile_Full_Access} which can be used in lieu of
! pragma @cite{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 id18}@anchor{285}@anchor{gnat_rm/representation_clauses_and_pragmas effect-of-convention-on-representation}@anchor{286}
  @section Effect of Convention on Representation
  
  
--- 20015,20025 ----
  components to be atomic if you want the byte store, or explicitly writing
  the full word access sequence if that is what the hardware requires.
  Alternatively, if the full word access sequence is required, GNAT also
! provides the pragma @code{Volatile_Full_Access} which can be used in lieu of
! 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 id18}@anchor{28e}@anchor{gnat_rm/representation_clauses_and_pragmas effect-of-convention-on-representation}@anchor{28f}
  @section Effect of Convention on Representation
  
  
*************** type Color is (Red, Green, Blue);
*** 19821,19829 ****
  @end example
  
  8 bits is sufficient to store all values of the type, so by default, objects
! of type @cite{Color} will be represented using 8 bits.  However, normal C
  convention is to use 32 bits for all enum values in C, since enum values
! are essentially of type int.  If pragma @cite{Convention C} is specified for an
  Ada enumeration type, then the size is modified as necessary (usually to
  32 bits) to be consistent with the C convention for enum values.
  
--- 20058,20066 ----
  @end example
  
  8 bits is sufficient to store all values of the type, so by default, objects
! of type @code{Color} will be represented using 8 bits.  However, normal C
  convention is to use 32 bits for all enum values in C, since enum values
! are essentially of type int.  If pragma @code{Convention C} is specified for an
  Ada enumeration type, then the size is modified as necessary (usually to
  32 bits) to be consistent with the C convention for enum values.
  
*************** conditions, is that zero represents fals
*** 19843,19849 ****
  true.  In Ada, the normal convention is that two specific values, typically
  0/1, are used to represent false/true respectively.
  
! Fortran has a similar convention for @cite{LOGICAL} values (any nonzero
  value represents true).
  
  To accommodate the Fortran and C conventions, if a pragma Convention specifies
--- 20080,20086 ----
  true.  In Ada, the normal convention is that two specific values, typically
  0/1, are used to represent false/true respectively.
  
! Fortran has a similar convention for @code{LOGICAL} values (any nonzero
  value represents true).
  
  To accommodate the Fortran and C conventions, if a pragma Convention specifies
*************** when one of these values is read, any no
*** 19860,19866 ****
  @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{287}@anchor{gnat_rm/representation_clauses_and_pragmas id19}@anchor{288}
  @section Conventions and Anonymous Access Types
  
  
--- 20097,20103 ----
  @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{290}@anchor{gnat_rm/representation_clauses_and_pragmas id19}@anchor{291}
  @section Conventions and Anonymous Access Types
  
  
*************** package ConvComp is
*** 19936,19942 ****
  @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 id20}@anchor{289}@anchor{gnat_rm/representation_clauses_and_pragmas determining-the-representations-chosen-by-gnat}@anchor{28a}
  @section Determining the Representations chosen by GNAT
  
  
--- 20173,20179 ----
  @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 id20}@anchor{292}@anchor{gnat_rm/representation_clauses_and_pragmas determining-the-representations-chosen-by-gnat}@anchor{293}
  @section Determining the Representations chosen by GNAT
  
  
*************** representation clause or pragma is accep
*** 19955,19962 ****
  of what the compiler actually does.  For example, if a partial record
  representation clause specifies the location of some components and not
  others, then where are the non-specified components placed? Or if pragma
! @cite{Pack} is used on a record, then exactly where are the resulting
! fields placed? The section on pragma @cite{Pack} in this chapter can be
  used to answer the second question, but it is often easier to just see
  what the compiler does.
  
--- 20192,20199 ----
  of what the compiler actually does.  For example, if a partial record
  representation clause specifies the location of some components and not
  others, then where are the non-specified components placed? Or if pragma
! @code{Pack} is used on a record, then exactly where are the resulting
! fields placed? The section on pragma @code{Pack} in this chapter can be
  used to answer the second question, but it is often easier to just see
  what the compiler does.
  
*************** fields present, including the parent fie
*** 20079,20085 ****
  of the parent type of r2, i.e., r1.
  
  The component size and size clauses for types rb1 and rb2 show
! the exact effect of pragma @cite{Pack} on these arrays, and the record
  representation clause for type x2 shows how pragma @cite{Pack} affects
  this record type.
  
--- 20316,20322 ----
  of the parent type of r2, i.e., r1.
  
  The component size and size clauses for types rb1 and rb2 show
! the exact effect of pragma @code{Pack} on these arrays, and the record
  representation clause for type x2 shows how pragma @cite{Pack} affects
  this record type.
  
*************** generated by the compiler into the origi
*** 20088,20094 ****
  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 standard-library-routines}@anchor{e}@anchor{gnat_rm/standard_library_routines doc}@anchor{28b}@anchor{gnat_rm/standard_library_routines id1}@anchor{28c}
  @chapter Standard Library Routines
  
  
--- 20325,20331 ----
  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 standard-library-routines}@anchor{e}@anchor{gnat_rm/standard_library_routines doc}@anchor{294}@anchor{gnat_rm/standard_library_routines id1}@anchor{295}
  @chapter Standard Library Routines
  
  
*************** useful data or routines.
*** 20127,20157 ****
  
  @item @code{Ada.Assertions} @emph{(11.4.2)}
  
! @cite{Assertions} provides the @cite{Assert} subprograms, and also
! the declaration of the @cite{Assertion_Error} exception.
  
  @item @code{Ada.Asynchronous_Task_Control} @emph{(D.11)}
  
! @cite{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)}
  
! @cite{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 @cite{Calendar}.
  
  @item @code{Ada.Calendar.Formatting} @emph{(9.6.1)}
  
! This package provides formatting operations for @cite{Calendar}.
  
  @item @code{Ada.Calendar.Time_Zones} @emph{(9.6.1)}
  
! This package provides additional @cite{Calendar} facilities
  for handling time zones.
  
  @item @code{Ada.Characters} @emph{(A.3.1)}
--- 20364,20394 ----
  
  @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 package includes a complete set of
*** 20174,20187 ****
  that appear in type CHARACTER.  It is useful for writing programs that
  will run in international environments.  For example, if you want an
  upper case E with an acute accent in a string, it is often better to use
! the definition of @cite{UC_E_Acute} in this package.  Then your program
  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 @cite{argc} and @cite{argv}
  in C), and also allows the exit status for the program to be set in a
  system-independent manner.
  
--- 20411,20424 ----
  that appear in type CHARACTER.  It is useful for writing programs that
  will run in international environments.  For example, if you want an
  upper case E with an acute accent in a string, it is often better to use
! the definition of @code{UC_E_Acute} in this package.  Then your program
  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.
  
*************** exceptions with associated messages.
*** 20304,20310 ****
  
  @item @code{Ada.Execution_Time} @emph{(D.14)}
  
! Not implemented in GNAT.
  
  @item @code{Ada.Execution_Time.Group_Budgets} @emph{(D.14.2)}
  
--- 20541,20548 ----
  
  @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)}
  
*************** This package provides a generic interfac
*** 20367,20373 ****
  @item @code{Ada.Locales} @emph{(A.19)}
  
  This package provides declarations providing information (Language
! and Country) about the current locale.
  
  @item @code{Ada.Numerics}
  
--- 20605,20613 ----
  @item @code{Ada.Locales} @emph{(A.19)}
  
  This package provides declarations providing information (Language
! and Country) about the current locale. This package is currently not
! implemented other than by providing stubs which will always return
! Language_Unknown/Country_Unknown.
  
  @item @code{Ada.Numerics}
  
*************** Provides operations on arrays of complex
*** 20384,20397 ****
  
  Provides the implementation of standard elementary functions (such as
  log and trigonometric functions) operating on complex numbers using the
! standard @cite{Float} and the @cite{Complex} and @cite{Imaginary} types
! created by the package @cite{Numerics.Complex_Types}.
  
  @item @code{Ada.Numerics.Complex_Types}
  
  This is a predefined instantiation of
! @cite{Numerics.Generic_Complex_Types} using @cite{Standard.Float} to
! build the type @cite{Complex} and @cite{Imaginary}.
  
  @item @code{Ada.Numerics.Discrete_Random}
  
--- 20624,20637 ----
  
  Provides the implementation of standard elementary functions (such as
  log and trigonometric functions) operating on complex numbers using the
! standard @code{Float} and the @code{Complex} and @code{Imaginary} types
! created by the package @code{Numerics.Complex_Types}.
  
  @item @code{Ada.Numerics.Complex_Types}
  
  This is a predefined instantiation of
! @code{Numerics.Generic_Complex_Types} using @code{Standard.Float} to
! build the type @code{Complex} and @code{Imaginary}.
  
  @item @code{Ada.Numerics.Discrete_Random}
  
*************** The following predefined instantiations
*** 20417,20433 ****
  @item 
  @code{Short_Float}
  
! @cite{Ada.Numerics.Short_Complex_Elementary_Functions}
  
  @item 
  @code{Float}
  
! @cite{Ada.Numerics.Complex_Elementary_Functions}
  
  @item 
  @code{Long_Float}
  
! @cite{Ada.Numerics.Long_Complex_Elementary_Functions}
  @end itemize
  
  @item @code{Ada.Numerics.Generic_Complex_Types}
--- 20657,20673 ----
  @item 
  @code{Short_Float}
  
! @code{Ada.Numerics.Short_Complex_Elementary_Functions}
  
  @item 
  @code{Float}
  
! @code{Ada.Numerics.Complex_Elementary_Functions}
  
  @item 
  @code{Long_Float}
  
! @code{Ada.Numerics.Long_Complex_Elementary_Functions}
  @end itemize
  
  @item @code{Ada.Numerics.Generic_Complex_Types}
*************** The following predefined instantiations
*** 20443,20459 ****
  @item 
  @code{Short_Float}
  
! @cite{Ada.Numerics.Short_Complex_Complex_Types}
  
  @item 
  @code{Float}
  
! @cite{Ada.Numerics.Complex_Complex_Types}
  
  @item 
  @code{Long_Float}
  
! @cite{Ada.Numerics.Long_Complex_Complex_Types}
  @end itemize
  
  @item @code{Ada.Numerics.Generic_Elementary_Functions}
--- 20683,20699 ----
  @item 
  @code{Short_Float}
  
! @code{Ada.Numerics.Short_Complex_Complex_Types}
  
  @item 
  @code{Float}
  
! @code{Ada.Numerics.Complex_Complex_Types}
  
  @item 
  @code{Long_Float}
  
! @code{Ada.Numerics.Long_Complex_Complex_Types}
  @end itemize
  
  @item @code{Ada.Numerics.Generic_Elementary_Functions}
*************** The following predefined instantiations
*** 20470,20486 ****
  @item 
  @code{Short_Float}
  
! @cite{Ada.Numerics.Short_Elementary_Functions}
  
  @item 
  @code{Float}
  
! @cite{Ada.Numerics.Elementary_Functions}
  
  @item 
  @code{Long_Float}
  
! @cite{Ada.Numerics.Long_Elementary_Functions}
  @end itemize
  
  @item @code{Ada.Numerics.Generic_Real_Arrays} @emph{(G.3.1)}
--- 20710,20726 ----
  @item 
  @code{Short_Float}
  
! @code{Ada.Numerics.Short_Elementary_Functions}
  
  @item 
  @code{Float}
  
! @code{Ada.Numerics.Elementary_Functions}
  
  @item 
  @code{Long_Float}
  
! @code{Ada.Numerics.Long_Elementary_Functions}
  @end itemize
  
  @item @code{Ada.Numerics.Generic_Real_Arrays} @emph{(G.3.1)}
*************** Preinstantiation of Ada.Numerics.Generic
*** 20493,20499 ****
  
  @item @code{Ada.Real_Time} @emph{(D.8)}
  
! This package provides facilities similar to those of @cite{Calendar}, but
  operating with a finer clock suitable for real time control. Note that
  annex D requires that there be no backward clock jumps, and GNAT generally
  guarantees this behavior, but of course if the external clock on which
--- 20733,20739 ----
  
  @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
  annex D requires that there be no backward clock jumps, and GNAT generally
  guarantees this behavior, but of course if the external clock on which
*************** IO packages.
*** 20519,20531 ****
  @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 (@cite{Input},
! @cite{Output}, @cite{Read} and @cite{Write}).
  
  @item @code{Ada.Streams.Stream_IO} @emph{(A.12.1)}
  
! This package is a specialization of the type @cite{Streams} defined in
! package @cite{Streams} together with a set of operations providing
  Stream_IO capability.  The Stream_IO model permits both random and
  sequential access to a file which can contain an arbitrary set of values
  of one or more Ada types.
--- 20759,20771 ----
  @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
  Stream_IO capability.  The Stream_IO model permits both random and
  sequential access to a file which can contain an arbitrary set of values
  of one or more Ada types.
*************** Strings, Wide_Strings and Wide_Wide_Stri
*** 20668,20675 ****
  
  These packages provide analogous capabilities to the corresponding
  packages without @code{Wide_} in the name, but operate with the types
! @cite{Wide_String} and @cite{Wide_Character} instead of @cite{String}
! and @cite{Character}. Versions of all the child packages are available.
  @end table
  
  @code{Ada.Strings.Wide_Wide_Bounded} @emph{(A.4.7)}
--- 20908,20915 ----
  
  These packages provide analogous capabilities to the corresponding
  packages without @code{Wide_} in the name, but operate with the types
! @code{Wide_String} and @code{Wide_Character} instead of @code{String}
! and @code{Character}. Versions of all the child packages are available.
  @end table
  
  @code{Ada.Strings.Wide_Wide_Bounded} @emph{(A.4.7)}
*************** and @cite{Character}. Versions of all th
*** 20685,20692 ****
  
  These packages provide analogous capabilities to the corresponding
  packages without @code{Wide_} in the name, but operate with the types
! @cite{Wide_Wide_String} and @cite{Wide_Wide_Character} instead
! of @cite{String} and @cite{Character}.
  
  @item @code{Ada.Synchronous_Barriers} @emph{(D.10.1)}
  
--- 20925,20932 ----
  
  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)}
  
*************** predefined instantiations of this generi
*** 20757,20773 ****
  @item 
  @code{Short_Float}
  
! @cite{Short_Float_Text_IO}
  
  @item 
  @code{Float}
  
! @cite{Float_Text_IO}
  
  @item 
  @code{Long_Float}
  
! @cite{Long_Float_Text_IO}
  @end itemize
  
  @item @code{Ada.Text_IO.Integer_IO}
--- 20997,21013 ----
  @item 
  @code{Short_Float}
  
! @code{Short_Float_Text_IO}
  
  @item 
  @code{Float}
  
! @code{Float_Text_IO}
  
  @item 
  @code{Long_Float}
  
! @code{Long_Float_Text_IO}
  @end itemize
  
  @item @code{Ada.Text_IO.Integer_IO}
*************** predefined instantiations of this generi
*** 20781,20807 ****
  @item 
  @code{Short_Short_Integer}
  
! @cite{Ada.Short_Short_Integer_Text_IO}
  
  @item 
  @code{Short_Integer}
  
! @cite{Ada.Short_Integer_Text_IO}
  
  @item 
  @code{Integer}
  
! @cite{Ada.Integer_Text_IO}
  
  @item 
  @code{Long_Integer}
  
! @cite{Ada.Long_Integer_Text_IO}
  
  @item 
  @code{Long_Long_Integer}
  
! @cite{Ada.Long_Long_Integer_Text_IO}
  @end itemize
  
  @item @code{Ada.Text_IO.Modular_IO}
--- 21021,21047 ----
  @item 
  @code{Short_Short_Integer}
  
! @code{Ada.Short_Short_Integer_Text_IO}
  
  @item 
  @code{Short_Integer}
  
! @code{Ada.Short_Integer_Text_IO}
  
  @item 
  @code{Integer}
  
! @code{Ada.Integer_Text_IO}
  
  @item 
  @code{Long_Integer}
  
! @code{Ada.Long_Integer_Text_IO}
  
  @item 
  @code{Long_Long_Integer}
  
! @code{Ada.Long_Long_Integer_Text_IO}
  @end itemize
  
  @item @code{Ada.Text_IO.Modular_IO}
*************** allocated by use of an allocator.
*** 20892,20909 ****
  
  @item @code{Ada.Wide_Text_IO} @emph{(A.11)}
  
! This package is similar to @cite{Ada.Text_IO}, except that the external
  file supports wide character representations, and the internal types are
! @cite{Wide_Character} and @cite{Wide_String} instead of @cite{Character}
! and @cite{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 @cite{Ada.Text_IO}, except that the external
  file supports wide character representations, and the internal types are
! @cite{Wide_Character} and @cite{Wide_String} instead of @cite{Character}
! and @cite{String}. The corresponding set of nested packages and child
  packages are defined.
  @end table
  
--- 21132,21149 ----
  
  @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
! @code{Wide_Character} and @code{Wide_String} instead of @code{Character}
! 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
! @code{Wide_Character} and @code{Wide_String} instead of @code{Character}
! and @code{String}. The corresponding set of nested packages and child
  packages are defined.
  @end table
  
*************** For packages in Interfaces and System, a
*** 20911,20917 ****
  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 the-implementation-of-standard-i-o}@anchor{f}@anchor{gnat_rm/the_implementation_of_standard_i_o doc}@anchor{28d}@anchor{gnat_rm/the_implementation_of_standard_i_o id1}@anchor{28e}
  @chapter The Implementation of Standard I/O
  
  
--- 21151,21157 ----
  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 the-implementation-of-standard-i-o}@anchor{f}@anchor{gnat_rm/the_implementation_of_standard_i_o doc}@anchor{296}@anchor{gnat_rm/the_implementation_of_standard_i_o id1}@anchor{297}
  @chapter The Implementation of Standard I/O
  
  
*************** these additional facilities are also des
*** 20963,20969 ****
  @end menu
  
  @node Standard I/O Packages,FORM Strings,,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o standard-i-o-packages}@anchor{28f}@anchor{gnat_rm/the_implementation_of_standard_i_o id2}@anchor{290}
  @section Standard I/O Packages
  
  
--- 21203,21209 ----
  @end menu
  
  @node Standard I/O Packages,FORM Strings,,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o standard-i-o-packages}@anchor{298}@anchor{gnat_rm/the_implementation_of_standard_i_o id2}@anchor{299}
  @section Standard I/O Packages
  
  
*************** library streams facility; where
*** 21016,21025 ****
  @itemize *
  
  @item 
! All files are opened using @cite{fopen}.
  
  @item 
! All input/output operations use @cite{fread}/@cite{fwrite}.
  @end itemize
  
  There is no internal buffering of any kind at the Ada library level. The only
--- 21256,21265 ----
  @itemize *
  
  @item 
! All files are opened using @code{fopen}.
  
  @item 
! All input/output operations use @code{fread}/@cite{fwrite}.
  @end itemize
  
  There is no internal buffering of any kind at the Ada library level. The only
*************** flush the common I/O streams and in part
*** 21034,21040 ****
  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{291}@anchor{gnat_rm/the_implementation_of_standard_i_o id3}@anchor{292}
  @section FORM Strings
  
  
--- 21274,21280 ----
  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{29a}@anchor{gnat_rm/the_implementation_of_standard_i_o id3}@anchor{29b}
  @section FORM Strings
  
  
*************** unrecognized keyword appears in a form s
*** 21060,21066 ****
  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{293}@anchor{gnat_rm/the_implementation_of_standard_i_o id4}@anchor{294}
  @section Direct_IO
  
  
--- 21300,21306 ----
  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{29c}@anchor{gnat_rm/the_implementation_of_standard_i_o id4}@anchor{29d}
  @section Direct_IO
  
  
*************** The records of a Direct_IO file are simp
*** 21073,21086 ****
  sequence, with the first record starting at offset zero, and subsequent
  records following.  There is no control information of any kind.  For
  example, if 32-bit integers are being written, each record takes
! 4-bytes, so the record at index @cite{K} starts at offset
! (@cite{K}-1)*4.
  
  There is no limit on the size of Direct_IO files, they are expanded as
  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 sequential-io}@anchor{295}@anchor{gnat_rm/the_implementation_of_standard_i_o id5}@anchor{296}
  @section Sequential_IO
  
  
--- 21313,21326 ----
  sequence, with the first record starting at offset zero, and subsequent
  records following.  There is no control information of any kind.  For
  example, if 32-bit integers are being written, each record takes
! 4-bytes, so the record at index @code{K} starts at offset
! (@code{K}-1)*4.
  
  There is no limit on the size of Direct_IO files, they are expanded as
  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 sequential-io}@anchor{29e}@anchor{gnat_rm/the_implementation_of_standard_i_o id5}@anchor{29f}
  @section Sequential_IO
  
  
*************** checking is performed on input.
*** 21094,21110 ****
  
  For the indefinite type case, the elements written consist of two
  parts.  First is the size of the data item, written as the memory image
! of a @cite{Interfaces.C.size_t} value, followed by the memory image of
  the data value.  The resulting file can only be read using the same
  (unconstrained) type.  Normal assignment checks are performed on these
! read operations, and if these checks fail, @cite{Data_Error} is
  raised.  In particular, in the array case, the lengths must match, and in
  the variant record case, if the variable for a particular read operation
  is constrained, the discriminants must match.
  
  Note that it is not possible to use Sequential_IO to write variable
  length array items, and then read the data back into different length
! arrays.  For example, the following will raise @cite{Data_Error}:
  
  @example
  package IO is new Sequential_IO (String);
--- 21334,21350 ----
  
  For the indefinite type case, the elements written consist of two
  parts.  First is the size of the data item, written as the memory image
! of a @code{Interfaces.C.size_t} value, followed by the memory image of
  the data value.  The resulting file can only be read using the same
  (unconstrained) type.  Normal assignment checks are performed on these
! read operations, and if these checks fail, @code{Data_Error} is
  raised.  In particular, in the array case, the lengths must match, and in
  the variant record case, if the variable for a particular read operation
  is constrained, the discriminants must match.
  
  Note that it is not possible to use Sequential_IO to write variable
  length array items, and then read the data back into different length
! arrays.  For example, the following will raise @code{Data_Error}:
  
  @example
  package IO is new Sequential_IO (String);
*************** IO.Read (F, S);
*** 21118,21133 ****
  Put_Line (S);
  @end example
  
! On some Ada implementations, this will print @cite{hell}, but the program is
  clearly incorrect, since there is only one element in the file, and that
! element is the string @cite{hello!}.
  
  In Ada 95 and Ada 2005, this kind of behavior can be legitimately achieved
  using Stream_IO, and this is the preferred mechanism.  In particular, the
  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{297}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io}@anchor{298}
  @section Text_IO
  
  
--- 21358,21373 ----
  Put_Line (S);
  @end example
  
! On some Ada implementations, this will print @code{hell}, but the program is
  clearly incorrect, since there is only one element in the file, and that
! element is the string @code{hello!}.
  
  In Ada 95 and Ada 2005, this kind of behavior can be legitimately achieved
  using Stream_IO, and this is the preferred mechanism.  In particular, the
  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{2a0}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io}@anchor{2a1}
  @section Text_IO
  
  
*************** conditions are met:
*** 21146,21169 ****
  @itemize *
  
  @item 
! The character @cite{LF} is used only as a line mark, i.e., to mark the end
  of the line.
  
  @item 
! The character @cite{FF} is used only as a page mark, i.e., to mark the
  end of a page and consequently can appear only immediately following a
! @cite{LF} (line mark) character.
  
  @item 
! The file ends with either @cite{LF} (line mark) or @cite{LF}-@cite{FF}
  (line mark, page mark).  In the former case, the page mark is implicitly
  assumed to be present.
  @end itemize
  
  A file written using Text_IO will be in canonical form provided that no
! explicit @cite{LF} or @cite{FF} characters are written using @cite{Put}
! or @cite{Put_Line}.  There will be no @cite{FF} character at the end of
! the file unless an explicit @cite{New_Page} operation was performed
  before closing the file.
  
  A canonical Text_IO file that is a regular file (i.e., not a device or a
--- 21386,21409 ----
  @itemize *
  
  @item 
! The character @code{LF} is used only as a line mark, i.e., to mark the end
  of the line.
  
  @item 
! The character @code{FF} is used only as a page mark, i.e., to mark the
  end of a page and consequently can appear only immediately following a
! @code{LF} (line mark) character.
  
  @item 
! The file ends with either @code{LF} (line mark) or @code{LF}-@cite{FF}
  (line mark, page mark).  In the former case, the page mark is implicitly
  assumed to be present.
  @end itemize
  
  A file written using Text_IO will be in canonical form provided that no
! explicit @code{LF} or @code{FF} characters are written using @code{Put}
! or @code{Put_Line}.  There will be no @code{FF} character at the end of
! the file unless an explicit @code{New_Page} operation was performed
  before closing the file.
  
  A canonical Text_IO file that is a regular file (i.e., not a device or a
*************** file has one of the following:
*** 21178,21202 ****
  @itemize *
  
  @item 
! The file contains @cite{FF} characters not immediately following a
! @cite{LF} character.
  
  @item 
! The file contains @cite{LF} or @cite{FF} characters written by
! @cite{Put} or @cite{Put_Line}, which are not logically considered to be
  line marks or page marks.
  
  @item 
! The file ends in a character other than @cite{LF} or @cite{FF},
  i.e., there is no explicit line mark or page mark at the end of the file.
  @end itemize
  
  Text_IO can be used to read such non-standard text files but subprograms
  to do with line or page numbers do not have defined meanings.  In
! particular, a @cite{FF} character that does not follow a @cite{LF}
  character may or may not be treated as a page mark from the point of
! view of page and line numbering.  Every @cite{LF} character is considered
! to end a line, and there is an implied @cite{LF} character at the end of
  the file.
  
  @menu
--- 21418,21442 ----
  @itemize *
  
  @item 
! The file contains @code{FF} characters not immediately following a
! @code{LF} character.
  
  @item 
! The file contains @code{LF} or @code{FF} characters written by
! @code{Put} or @code{Put_Line}, which are not logically considered to be
  line marks or page marks.
  
  @item 
! The file ends in a character other than @code{LF} or @code{FF},
  i.e., there is no explicit line mark or page mark at the end of the file.
  @end itemize
  
  Text_IO can be used to read such non-standard text files but subprograms
  to do with line or page numbers do not have defined meanings.  In
! particular, a @code{FF} character that does not follow a @code{LF}
  character may or may not be treated as a page mark from the point of
! view of page and line numbering.  Every @code{LF} character is considered
! to end a line, and there is an implied @code{LF} character at the end of
  the file.
  
  @menu
*************** the file.
*** 21210,21220 ****
  @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{299}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning}@anchor{29a}
  @subsection Stream Pointer Positioning
  
  
! @cite{Ada.Text_IO} has a definition of current position for a file that
  is being read.  No internal buffering occurs in Text_IO, and usually the
  physical position in the stream used to implement the file corresponds
  to this logical position defined by Text_IO.  There are two exceptions:
--- 21450,21460 ----
  @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{2a2}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning}@anchor{2a3}
  @subsection Stream Pointer Positioning
  
  
! @code{Ada.Text_IO} has a definition of current position for a file that
  is being read.  No internal buffering occurs in Text_IO, and usually the
  physical position in the stream used to implement the file corresponds
  to this logical position defined by Text_IO.  There are two exceptions:
*************** to this logical position defined by Text
*** 21223,21236 ****
  @itemize *
  
  @item 
! After a call to @cite{End_Of_Page} that returns @cite{True}, the stream
! is positioned past the @cite{LF} (line mark) that precedes the page
  mark.  Text_IO maintains an internal flag so that subsequent read
  operations properly handle the logical position which is unchanged by
! the @cite{End_Of_Page} call.
  
  @item 
! After a call to @cite{End_Of_File} that returns @cite{True}, if the
  Text_IO file was positioned before the line mark at the end of file
  before the call, then the logical position is unchanged, but the stream
  is physically positioned right at the end of file (past the line mark,
--- 21463,21476 ----
  @itemize *
  
  @item 
! After a call to @code{End_Of_Page} that returns @code{True}, the stream
! is positioned past the @code{LF} (line mark) that precedes the page
  mark.  Text_IO maintains an internal flag so that subsequent read
  operations properly handle the logical position which is unchanged by
! the @code{End_Of_Page} call.
  
  @item 
! After a call to @code{End_Of_File} that returns @code{True}, if the
  Text_IO file was positioned before the line mark at the end of file
  before the call, then the logical position is unchanged, but the stream
  is physically positioned right at the end of file (past the line mark,
*************** between two Ada files, then the differen
*** 21246,21252 ****
  situations.
  
  @node Reading and Writing Non-Regular Files,Get_Immediate,Stream Pointer Positioning,Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files}@anchor{29b}@anchor{gnat_rm/the_implementation_of_standard_i_o id8}@anchor{29c}
  @subsection Reading and Writing Non-Regular Files
  
  
--- 21486,21492 ----
  situations.
  
  @node Reading and Writing Non-Regular Files,Get_Immediate,Stream Pointer Positioning,Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files}@anchor{2a4}@anchor{gnat_rm/the_implementation_of_standard_i_o id8}@anchor{2a5}
  @subsection Reading and Writing Non-Regular Files
  
  
*************** for reading, the behavior of Text_IO is
*** 21257,21263 ****
  look-ahead as follows:
  
  An input file that is not a regular file is considered to have no page
! marks.  Any @cite{Ascii.FF} characters (the character normally used for a
  page mark) appearing in the file are considered to be data
  characters.  In particular:
  
--- 21497,21503 ----
  look-ahead as follows:
  
  An input file that is not a regular file is considered to have no page
! marks.  Any @code{Ascii.FF} characters (the character normally used for a
  page mark) appearing in the file are considered to be data
  characters.  In particular:
  
*************** characters.  In particular:
*** 21265,21271 ****
  @itemize *
  
  @item 
! @cite{Get_Line} and @cite{Skip_Line} do not test for a page mark
  following a line mark.  If a page mark appears, it will be treated as a
  data character.
  
--- 21505,21511 ----
  @itemize *
  
  @item 
! @code{Get_Line} and @code{Skip_Line} do not test for a page mark
  following a line mark.  If a page mark appears, it will be treated as a
  data character.
  
*************** This avoids the need to wait for an extr
*** 21274,21288 ****
  entered from the pipe to complete one of these operations.
  
  @item 
! @cite{End_Of_Page} always returns @cite{False}
  
  @item 
! @cite{End_Of_File} will return @cite{False} if there is a page mark at
  the end of the file.
  @end itemize
  
  Output to non-regular files is the same as for regular files.  Page marks
! may be written to non-regular files using @cite{New_Page}, but as noted
  above they will not be treated as page marks on input if the output is
  piped to another Ada program.
  
--- 21514,21528 ----
  entered from the pipe to complete one of these operations.
  
  @item 
! @code{End_Of_Page} always returns @code{False}
  
  @item 
! @code{End_Of_File} will return @code{False} if there is a page mark at
  the end of the file.
  @end itemize
  
  Output to non-regular files is the same as for regular files.  Page marks
! may be written to non-regular files using @code{New_Page}, but as noted
  above they will not be treated as page marks on input if the output is
  piped to another Ada program.
  
*************** Another important discrepancy when readi
*** 21290,21303 ****
  of file indication is not 'sticky'.  If an end of file is entered, e.g., by
  pressing the @code{EOT} key,
  then end of file
! is signaled once (i.e., the test @cite{End_Of_File}
! will yield @cite{True}, or a read will
! raise @cite{End_Error}), but then reading can resume
  to read data past that end of
  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{29d}@anchor{gnat_rm/the_implementation_of_standard_i_o id9}@anchor{29e}
  @subsection Get_Immediate
  
  
--- 21530,21543 ----
  of file indication is not 'sticky'.  If an end of file is entered, e.g., by
  pressing the @code{EOT} key,
  then end of file
! is signaled once (i.e., the test @code{End_Of_File}
! will yield @code{True}, or a read will
! raise @code{End_Error}), but then reading can resume
  to read data past that end of
  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{2a6}@anchor{gnat_rm/the_implementation_of_standard_i_o id9}@anchor{2a7}
  @subsection Get_Immediate
  
  
*************** possible), it is undefined whether the F
*** 21315,21344 ****
  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{29f}@anchor{gnat_rm/the_implementation_of_standard_i_o treating-text-io-files-as-streams}@anchor{2a0}
  @subsection Treating Text_IO Files as Streams
  
  
  @geindex Stream files
  
! The package @cite{Text_IO.Streams} allows a Text_IO file to be treated
! as a stream.  Data written to a Text_IO file in this stream mode is
! binary data.  If this binary data contains bytes 16#0A# (@cite{LF}) or
! 16#0C# (@cite{FF}), the resulting file may have non-standard
  format.  Similarly if read operations are used to read from a Text_IO
! file treated as a stream, then @cite{LF} and @cite{FF} characters may be
  skipped and the effect is similar to that described above for
! @cite{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{2a1}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io-extensions}@anchor{2a2}
  @subsection Text_IO Extensions
  
  
  @geindex Text_IO extensions
  
  A package GNAT.IO_Aux in the GNAT library provides some useful extensions
! to the standard @cite{Text_IO} package:
  
  
  @itemize *
--- 21555,21584 ----
  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{2a8}@anchor{gnat_rm/the_implementation_of_standard_i_o treating-text-io-files-as-streams}@anchor{2a9}
  @subsection Treating Text_IO Files as Streams
  
  
  @geindex Stream files
  
! The package @code{Text_IO.Streams} allows a @code{Text_IO} file to be treated
! as a stream.  Data written to a @code{Text_IO} file in this stream mode is
! binary data.  If this binary data contains bytes 16#0A# (@code{LF}) or
! 16#0C# (@code{FF}), the resulting file may have non-standard
  format.  Similarly if read operations are used to read from a Text_IO
! file treated as a stream, then @code{LF} and @code{FF} characters may be
  skipped and the effect is similar to that described above for
! @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{2aa}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io-extensions}@anchor{2ab}
  @subsection Text_IO Extensions
  
  
  @geindex Text_IO extensions
  
  A package GNAT.IO_Aux in the GNAT library provides some useful extensions
! to the standard @code{Text_IO} package:
  
  
  @itemize *
*************** the string is to be read.
*** 21359,21365 ****
  @end itemize
  
  @node Text_IO Facilities for Unbounded Strings,,Text_IO Extensions,Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o text-io-facilities-for-unbounded-strings}@anchor{2a3}@anchor{gnat_rm/the_implementation_of_standard_i_o id12}@anchor{2a4}
  @subsection Text_IO Facilities for Unbounded Strings
  
  
--- 21599,21605 ----
  @end itemize
  
  @node Text_IO Facilities for Unbounded Strings,,Text_IO Extensions,Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o text-io-facilities-for-unbounded-strings}@anchor{2ac}@anchor{gnat_rm/the_implementation_of_standard_i_o id12}@anchor{2ad}
  @subsection Text_IO Facilities for Unbounded Strings
  
  
*************** the string is to be read.
*** 21368,21375 ****
  @geindex Unbounded_String
  @geindex Text_IO operations
  
! The package @cite{Ada.Strings.Unbounded.Text_IO}
! in library files @cite{a-suteio.ads/adb} contains some GNAT-specific
  subprograms useful for Text_IO operations on unbounded strings:
  
  
--- 21608,21615 ----
  @geindex Unbounded_String
  @geindex Text_IO operations
  
! The package @code{Ada.Strings.Unbounded.Text_IO}
! in library files @code{a-suteio.ads/adb} contains some GNAT-specific
  subprograms useful for Text_IO operations on unbounded strings:
  
  
*************** and returns the result as an unbounded s
*** 21384,21417 ****
  procedure Put (File : File_Type; U : Unbounded_String);
  Writes the value of the given unbounded string to the specified file
  Similar to the effect of
! @cite{Put (To_String (U))} except that an extra copy is avoided.
  
  @item 
  procedure Put_Line (File : File_Type; U : Unbounded_String);
  Writes the value of the given unbounded string to the specified file,
! followed by a @cite{New_Line}.
! Similar to the effect of @cite{Put_Line (To_String (U))} except
  that an extra copy is avoided.
  @end itemize
  
! In the above procedures, @cite{File} is of type @cite{Ada.Text_IO.File_Type}
  and is optional.  If the parameter is omitted, then the standard input or
  output file is referenced as appropriate.
  
! The package @cite{Ada.Strings.Wide_Unbounded.Wide_Text_IO} in library
  files @code{a-swuwti.ads} and @code{a-swuwti.adb} provides similar extended
! @cite{Wide_Text_IO} functionality for unbounded wide strings.
  
! The package @cite{Ada.Strings.Wide_Wide_Unbounded.Wide_Wide_Text_IO} in library
  files @code{a-szuzti.ads} and @code{a-szuzti.adb} provides similar extended
! @cite{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 wide-text-io}@anchor{2a5}@anchor{gnat_rm/the_implementation_of_standard_i_o id13}@anchor{2a6}
  @section Wide_Text_IO
  
  
! @cite{Wide_Text_IO} is similar in most respects to Text_IO, except that
  both input and output files may contain special sequences that represent
  wide character values.  The encoding scheme for a given file may be
  specified using a FORM parameter:
--- 21624,21657 ----
  procedure Put (File : File_Type; U : Unbounded_String);
  Writes the value of the given unbounded string to the specified file
  Similar to the effect of
! @code{Put (To_String (U))} except that an extra copy is avoided.
  
  @item 
  procedure Put_Line (File : File_Type; U : Unbounded_String);
  Writes the value of the given unbounded string to the specified file,
! followed by a @code{New_Line}.
! Similar to the effect of @code{Put_Line (To_String (U))} except
  that an extra copy is avoided.
  @end itemize
  
! In the above procedures, @code{File} is of type @code{Ada.Text_IO.File_Type}
  and is optional.  If the parameter is omitted, then the standard input or
  output file is referenced as appropriate.
  
! The package @code{Ada.Strings.Wide_Unbounded.Wide_Text_IO} in library
  files @code{a-swuwti.ads} and @code{a-swuwti.adb} provides similar extended
! @code{Wide_Text_IO} functionality for unbounded wide strings.
  
! The package @code{Ada.Strings.Wide_Wide_Unbounded.Wide_Wide_Text_IO} in library
  files @code{a-szuzti.ads} and @code{a-szuzti.adb} provides similar extended
! @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 wide-text-io}@anchor{2ae}@anchor{gnat_rm/the_implementation_of_standard_i_o id13}@anchor{2af}
  @section Wide_Text_IO
  
  
! @code{Wide_Text_IO} is similar in most respects to Text_IO, except that
  both input and output files may contain special sequences that represent
  wide character values.  The encoding scheme for a given file may be
  specified using a FORM parameter:
*************** WCEM=`x`
*** 21421,21427 ****
  @end example
  
  as part of the FORM string (WCEM = wide character encoding method),
! where @cite{x} is one of the following characters
  
  
  @multitable {xxxxxxxxxxxx} {xxxxxxxxxxxxxxxxxxxxxx} 
--- 21661,21667 ----
  @end example
  
  as part of the FORM string (WCEM = wide character encoding method),
! where @code{x} is one of the following characters
  
  
  @multitable {xxxxxxxxxxxx} {xxxxxxxxxxxxxxxxxxxxxx} 
*************** ESC a b c d
*** 21511,21521 ****
  
  @quotation
  
! where @cite{a}, @cite{b}, @cite{c}, @cite{d} are the four hexadecimal
  characters (using upper case letters) of the wide character code.  For
  example, ESC A345 is used to represent the wide character with code
  16#A345#.  This scheme is compatible with use of the full
! @cite{Wide_Character} set.
  @end quotation
  
  
--- 21751,21761 ----
  
  @quotation
  
! where @code{a}, @code{b}, @code{c}, @code{d} are the four hexadecimal
  characters (using upper case letters) of the wide character code.  For
  example, ESC A345 is used to represent the wide character with code
  16#A345#.  This scheme is compatible with use of the full
! @code{Wide_Character} set.
  @end quotation
  
  
*************** is a one, two, or three byte sequence:
*** 21563,21569 ****
  
  @quotation
  
! where the @cite{xxx} bits correspond to the left-padded bits of the
  16-bit character value.  Note that all lower half ASCII characters
  are represented as ASCII bytes and all upper half characters and
  other wide characters are represented as sequences of upper-half
--- 21803,21809 ----
  
  @quotation
  
! where the @code{xxx} bits correspond to the left-padded bits of the
  16-bit character value.  Note that all lower half ASCII characters
  are represented as ASCII bytes and all upper half characters and
  other wide characters are represented as sequences of upper-half
*************** character sequence:
*** 21589,21602 ****
  
  @quotation
  
! where @cite{a}, @cite{b}, @cite{c}, @cite{d} are the four hexadecimal
  characters (using uppercase letters) of the wide character code.  For
! example, @cite{["A345"]} is used to represent the wide character with code
! @cite{16#A345#}.
  This scheme is compatible with use of the full Wide_Character set.
  On input, brackets coding can also be used for upper half characters,
! e.g., @cite{["C1"]} for lower case a.  However, on output, brackets notation
! is only used for wide characters with a code greater than @cite{16#FF#}.
  
  Note that brackets coding is not normally used in the context of
  Wide_Text_IO or Wide_Wide_Text_IO, since it is really just designed as
--- 21829,21842 ----
  
  @quotation
  
! where @code{a}, @code{b}, @code{c}, @code{d} are the four hexadecimal
  characters (using uppercase letters) of the wide character code.  For
! example, @code{["A345"]} is used to represent the wide character with code
! @code{16#A345#}.
  This scheme is compatible with use of the full Wide_Character set.
  On input, brackets coding can also be used for upper half characters,
! e.g., @code{["C1"]} for lower case a.  However, on output, brackets notation
! is only used for wide characters with a code greater than @code{16#FF#}.
  
  Note that brackets coding is not normally used in the context of
  Wide_Text_IO or Wide_Wide_Text_IO, since it is really just designed as
*************** input also causes Constraint_Error to be
*** 21654,21668 ****
  @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 stream-pointer-positioning-1}@anchor{2a7}@anchor{gnat_rm/the_implementation_of_standard_i_o id14}@anchor{2a8}
  @subsection Stream Pointer Positioning
  
  
! @cite{Ada.Wide_Text_IO} is similar to @cite{Ada.Text_IO} in its handling
! of stream pointer positioning (@ref{298,,Text_IO}).  There is one additional
  case:
  
! If @cite{Ada.Wide_Text_IO.Look_Ahead} reads a character outside the
  normal lower ASCII set (i.e., a character in the range:
  
  @example
--- 21894,21908 ----
  @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 stream-pointer-positioning-1}@anchor{2b0}@anchor{gnat_rm/the_implementation_of_standard_i_o id14}@anchor{2b1}
  @subsection Stream Pointer Positioning
  
  
! @code{Ada.Wide_Text_IO} is similar to @code{Ada.Text_IO} in its handling
! of stream pointer positioning (@ref{2a1,,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_Ch
*** 21670,21699 ****
  @end example
  
  then although the logical position of the file pointer is unchanged by
! the @cite{Look_Ahead} call, the stream is physically positioned past the
  wide character sequence.  Again this is to avoid the need for buffering
! or backup, and all @cite{Wide_Text_IO} routines check the internal
  indication that this situation has occurred so that this is not visible
! to a normal program using @cite{Wide_Text_IO}.  However, this discrepancy
  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 reading-and-writing-non-regular-files-1}@anchor{2a9}@anchor{gnat_rm/the_implementation_of_standard_i_o id15}@anchor{2aa}
  @subsection Reading and Writing Non-Regular Files
  
  
  As in the case of Text_IO, when a non-regular file is read, it is
  assumed that the file contains no page marks (any form characters are
! treated as data characters), and @cite{End_Of_Page} always returns
! @cite{False}.  Similarly, the end of file indication is not sticky, so
  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{2ab}@anchor{gnat_rm/the_implementation_of_standard_i_o wide-wide-text-io}@anchor{2ac}
  @section Wide_Wide_Text_IO
  
  
! @cite{Wide_Wide_Text_IO} is similar in most respects to Text_IO, except that
  both input and output files may contain special sequences that represent
  wide wide character values.  The encoding scheme for a given file may be
  specified using a FORM parameter:
--- 21910,21939 ----
  @end example
  
  then although the logical position of the file pointer is unchanged by
! the @code{Look_Ahead} call, the stream is physically positioned past the
  wide character sequence.  Again this is to avoid the need for buffering
! or backup, and all @code{Wide_Text_IO} routines check the internal
  indication that this situation has occurred so that this is not visible
! to a normal program using @code{Wide_Text_IO}.  However, this discrepancy
  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 reading-and-writing-non-regular-files-1}@anchor{2b2}@anchor{gnat_rm/the_implementation_of_standard_i_o id15}@anchor{2b3}
  @subsection Reading and Writing Non-Regular Files
  
  
  As in the case of Text_IO, when a non-regular file is read, it is
  assumed that the file contains no page marks (any form characters are
! treated as data characters), and @code{End_Of_Page} always returns
! @code{False}.  Similarly, the end of file indication is not sticky, so
  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{2b4}@anchor{gnat_rm/the_implementation_of_standard_i_o wide-wide-text-io}@anchor{2b5}
  @section Wide_Wide_Text_IO
  
  
! @code{Wide_Wide_Text_IO} is similar in most respects to Text_IO, except that
  both input and output files may contain special sequences that represent
  wide wide character values.  The encoding scheme for a given file may be
  specified using a FORM parameter:
*************** WCEM=`x`
*** 21703,21709 ****
  @end example
  
  as part of the FORM string (WCEM = wide character encoding method),
! where @cite{x} is one of the following characters
  
  
  @multitable {xxxxxxxxxxxx} {xxxxxxxxxxxxxxxxxxxxxx} 
--- 21943,21949 ----
  @end example
  
  as part of the FORM string (WCEM = wide character encoding method),
! where @code{x} is one of the following characters
  
  
  @multitable {xxxxxxxxxxxx} {xxxxxxxxxxxxxxxxxxxxxx} 
*************** is a one, two, three, or four byte seque
*** 21798,21804 ****
  
  @quotation
  
! where the @cite{xxx} bits correspond to the left-padded bits of the
  21-bit character value.  Note that all lower half ASCII characters
  are represented as ASCII bytes and all upper half characters and
  other wide characters are represented as sequences of upper-half
--- 22038,22044 ----
  
  @quotation
  
! where the @code{xxx} bits correspond to the left-padded bits of the
  21-bit character value.  Note that all lower half ASCII characters
  are represented as ASCII bytes and all upper half characters and
  other wide characters are represented as sequences of upper-half
*************** and by the following ten character seque
*** 21831,21846 ****
  
  @quotation
  
! where @cite{a}, @cite{b}, @cite{c}, @cite{d}, @cite{e}, and @cite{f}
  are the four or six hexadecimal
  characters (using uppercase letters) of the wide wide character code.  For
! example, @cite{["01A345"]} is used to represent the wide wide character
! with code @cite{16#01A345#}.
  
  This scheme is compatible with use of the full Wide_Wide_Character set.
  On input, brackets coding can also be used for upper half characters,
! e.g., @cite{["C1"]} for lower case a.  However, on output, brackets notation
! is only used for wide characters with a code greater than @cite{16#FF#}.
  @end quotation
  
  If is also possible to use the other Wide_Character encoding methods,
--- 22071,22086 ----
  
  @quotation
  
! where @code{a}, @code{b}, @code{c}, @code{d}, @code{e}, and @code{f}
  are the four or six hexadecimal
  characters (using uppercase letters) of the wide wide character code.  For
! example, @code{["01A345"]} is used to represent the wide wide character
! with code @code{16#01A345#}.
  
  This scheme is compatible with use of the full Wide_Wide_Character set.
  On input, brackets coding can also be used for upper half characters,
! e.g., @code{["C1"]} for lower case a.  However, on output, brackets notation
! is only used for wide characters with a code greater than @code{16#FF#}.
  @end quotation
  
  If is also possible to use the other Wide_Character encoding methods,
*************** input also causes Constraint_Error to be
*** 21858,21872 ****
  @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 stream-pointer-positioning-2}@anchor{2ad}@anchor{gnat_rm/the_implementation_of_standard_i_o id17}@anchor{2ae}
  @subsection Stream Pointer Positioning
  
  
! @cite{Ada.Wide_Wide_Text_IO} is similar to @cite{Ada.Text_IO} in its handling
! of stream pointer positioning (@ref{298,,Text_IO}).  There is one additional
  case:
  
! If @cite{Ada.Wide_Wide_Text_IO.Look_Ahead} reads a character outside the
  normal lower ASCII set (i.e., a character in the range:
  
  @example
--- 22098,22112 ----
  @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 stream-pointer-positioning-2}@anchor{2b6}@anchor{gnat_rm/the_implementation_of_standard_i_o id17}@anchor{2b7}
  @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{2a1,,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#) .. Wi
*** 21874,21912 ****
  @end example
  
  then although the logical position of the file pointer is unchanged by
! the @cite{Look_Ahead} call, the stream is physically positioned past the
  wide character sequence.  Again this is to avoid the need for buffering
! or backup, and all @cite{Wide_Wide_Text_IO} routines check the internal
  indication that this situation has occurred so that this is not visible
! to a normal program using @cite{Wide_Wide_Text_IO}.  However, this discrepancy
  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{2af}@anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files-2}@anchor{2b0}
  @subsection Reading and Writing Non-Regular Files
  
  
  As in the case of Text_IO, when a non-regular file is read, it is
  assumed that the file contains no page marks (any form characters are
! treated as data characters), and @cite{End_Of_Page} always returns
! @cite{False}.  Similarly, the end of file indication is not sticky, so
  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{2b1}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-io}@anchor{2b2}
  @section Stream_IO
  
  
  A stream file is a sequence of bytes, where individual elements are
  written to the file as described in the Ada Reference Manual.  The type
! @cite{Stream_Element} is simply a byte.  There are two ways to read or
  write a stream file.
  
  
  @itemize *
  
  @item 
! The operations @cite{Read} and @cite{Write} directly read or write a
  sequence of stream elements with no control information.
  
  @item 
--- 22114,22152 ----
  @end example
  
  then although the logical position of the file pointer is unchanged by
! the @code{Look_Ahead} call, the stream is physically positioned past the
  wide character sequence.  Again this is to avoid the need for buffering
! or backup, and all @code{Wide_Wide_Text_IO} routines check the internal
  indication that this situation has occurred so that this is not visible
! to a normal program using @code{Wide_Wide_Text_IO}.  However, this discrepancy
  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{2b8}@anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files-2}@anchor{2b9}
  @subsection Reading and Writing Non-Regular Files
  
  
  As in the case of Text_IO, when a non-regular file is read, it is
  assumed that the file contains no page marks (any form characters are
! treated as data characters), and @code{End_Of_Page} always returns
! @code{False}.  Similarly, the end of file indication is not sticky, so
  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{2ba}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-io}@anchor{2bb}
  @section Stream_IO
  
  
  A stream file is a sequence of bytes, where individual elements are
  written to the file as described in the Ada Reference Manual.  The type
! @code{Stream_Element} is simply a byte.  There are two ways to read or
  write a stream file.
  
  
  @itemize *
  
  @item 
! The operations @code{Read} and @code{Write} directly read or write a
  sequence of stream elements with no control information.
  
  @item 
*************** manner described for stream attributes.
*** 21915,21921 ****
  @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{2b3}@anchor{gnat_rm/the_implementation_of_standard_i_o text-translation}@anchor{2b4}
  @section Text Translation
  
  
--- 22155,22161 ----
  @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{2bc}@anchor{gnat_rm/the_implementation_of_standard_i_o text-translation}@anchor{2bd}
  @section Text Translation
  
  
*************** mode. (corresponds to_O_U16TEXT).
*** 21949,21955 ****
  @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{2b5}@anchor{gnat_rm/the_implementation_of_standard_i_o shared-files}@anchor{2b6}
  @section Shared Files
  
  
--- 22189,22195 ----
  @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{2be}@anchor{gnat_rm/the_implementation_of_standard_i_o shared-files}@anchor{2bf}
  @section Shared Files
  
  
*************** dependence, GNAT handles file sharing as
*** 21967,21973 ****
  @item 
  In the absence of a @code{shared=xxx} form parameter, an attempt
  to open two or more files with the same full name is considered an error
! and is not supported.  The exception @cite{Use_Error} will be
  raised.  Note that a file that is not explicitly closed by the program
  remains open until the program terminates.
  
--- 22207,22213 ----
  @item 
  In the absence of a @code{shared=xxx} form parameter, an attempt
  to open two or more files with the same full name is considered an error
! and is not supported.  The exception @code{Use_Error} will be
  raised.  Note that a file that is not explicitly closed by the program
  remains open until the program terminates.
  
*************** in Ada Reference Manual, Section A.14.
*** 21987,21998 ****
  
  When a program that opens multiple files with the same name is ported
  from another Ada compiler to GNAT, the effect will be that
! @cite{Use_Error} is raised.
  
  The documentation of the original compiler and the documentation of the
  program should then be examined to determine if file sharing was
! expected, and @code{shared=xxx} parameters added to @cite{Open}
! and @cite{Create} calls as required.
  
  When a program is ported from GNAT to some other Ada compiler, no
  special attention is required unless the @code{shared=xxx} form
--- 22227,22238 ----
  
  When a program that opens multiple files with the same name is ported
  from another Ada compiler to GNAT, the effect will be that
! @code{Use_Error} is raised.
  
  The documentation of the original compiler and the documentation of the
  program should then be examined to determine if file sharing was
! expected, and @code{shared=xxx} parameters added to @code{Open}
! and @code{Create} calls as required.
  
  When a program is ported from GNAT to some other Ada compiler, no
  special attention is required unless the @code{shared=xxx} form
*************** heterogeneous input-output.  Although th
*** 22012,22018 ****
  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{2b7}@anchor{gnat_rm/the_implementation_of_standard_i_o id22}@anchor{2b8}
  @section Filenames encoding
  
  
--- 22252,22258 ----
  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{2c0}@anchor{gnat_rm/the_implementation_of_standard_i_o id22}@anchor{2c1}
  @section Filenames encoding
  
  
*************** platform. On the other Operating Systems
*** 22052,22058 ****
  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{2b9}@anchor{gnat_rm/the_implementation_of_standard_i_o id23}@anchor{2ba}
  @section File content encoding
  
  
--- 22292,22298 ----
  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{2c2}@anchor{gnat_rm/the_implementation_of_standard_i_o id23}@anchor{2c3}
  @section File content encoding
  
  
*************** Unicode 8-bit encoding
*** 22085,22102 ****
  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 open-modes}@anchor{2bb}@anchor{gnat_rm/the_implementation_of_standard_i_o id24}@anchor{2bc}
  @section Open Modes
  
  
! @cite{Open} and @cite{Create} calls result in a call to @cite{fopen}
  using the mode shown in the following table:
  
  
  @multitable {xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx} {xxxxxxxxxxxxxxxxx} {xxxxxxxxxxxxxxxxxxxx} 
  @headitem
  
! @cite{Open} and @cite{Create} Call Modes
  
  @tab
  
--- 22325,22342 ----
  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 open-modes}@anchor{2c4}@anchor{gnat_rm/the_implementation_of_standard_i_o id24}@anchor{2c5}
  @section Open Modes
  
  
! @code{Open} and @code{Create} calls result in a call to @code{fopen}
  using the mode shown in the following table:
  
  
  @multitable {xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx} {xxxxxxxxxxxxxxxxx} {xxxxxxxxxxxxxxxxxxxx} 
  @headitem
  
! @code{Open} and @code{Create} Call Modes
  
  @tab
  
*************** DOS-like systems, and is not relevant to
*** 22183,22198 ****
  
  A special case occurs with Stream_IO.  As shown in the above table, the
  file is initially opened in @code{r} or @code{w} mode for the
! @cite{In_File} and @cite{Out_File} cases.  If a @cite{Set_Mode} operation
  subsequently requires switching from reading to writing or vice-versa,
  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 operations-on-c-streams}@anchor{2bd}@anchor{gnat_rm/the_implementation_of_standard_i_o id25}@anchor{2be}
  @section Operations on C Streams
  
  
! The package @cite{Interfaces.C_Streams} provides an Ada program with direct
  access to the C library functions for operations on C streams:
  
  @example
--- 22423,22438 ----
  
  A special case occurs with Stream_IO.  As shown in the above table, the
  file is initially opened in @code{r} or @code{w} mode for the
! @code{In_File} and @code{Out_File} cases.  If a @code{Set_Mode} operation
  subsequently requires switching from reading to writing or vice-versa,
  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 operations-on-c-streams}@anchor{2c6}@anchor{gnat_rm/the_implementation_of_standard_i_o id25}@anchor{2c7}
  @section Operations on C Streams
  
  
! The package @code{Interfaces.C_Streams} provides an Ada program with direct
  access to the C library functions for operations on C streams:
  
  @example
*************** end Interfaces.C_Streams;
*** 22348,22354 ****
  @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 interfacing-to-c-streams}@anchor{2bf}@anchor{gnat_rm/the_implementation_of_standard_i_o id26}@anchor{2c0}
  @section Interfacing to C Streams
  
  
--- 22588,22594 ----
  @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 interfacing-to-c-streams}@anchor{2c8}@anchor{gnat_rm/the_implementation_of_standard_i_o id26}@anchor{2c9}
  @section Interfacing to C Streams
  
  
*************** package Ada.Stream_IO.C_Streams is
*** 22423,22447 ****
  end Ada.Stream_IO.C_Streams;
  @end example
  
! In each of these six packages, the @cite{C_Stream} function obtains the
! @cite{FILE} pointer from a currently opened Ada file.  It is then
! possible to use the @cite{Interfaces.C_Streams} package to operate on
  this stream, or the stream can be passed to a C program which can
  operate on it directly.  Of course the program is responsible for
  ensuring that only appropriate sequences of operations are executed.
  
  One particular use of relevance to an Ada program is that the
! @cite{setvbuf} function can be used to control the buffering of the
  stream used by an Ada file.  In the absence of such a call the standard
  default buffering is used.
  
! The @cite{Open} procedures in these packages open a file giving an
  existing C Stream instead of a file name.  Typically this stream is
  imported from a C program, allowing an Ada file to operate on an
  existing C file.
  
  @node The GNAT Library,Interfacing to Other Languages,The Implementation of Standard I/O,Top
! @anchor{gnat_rm/the_gnat_library the-gnat-library}@anchor{10}@anchor{gnat_rm/the_gnat_library doc}@anchor{2c1}@anchor{gnat_rm/the_gnat_library id1}@anchor{2c2}
  @chapter The GNAT Library
  
  
--- 22663,22687 ----
  end Ada.Stream_IO.C_Streams;
  @end example
  
! In each of these six packages, the @code{C_Stream} function obtains the
! @code{FILE} pointer from a currently opened Ada file.  It is then
! possible to use the @code{Interfaces.C_Streams} package to operate on
  this stream, or the stream can be passed to a C program which can
  operate on it directly.  Of course the program is responsible for
  ensuring that only appropriate sequences of operations are executed.
  
  One particular use of relevance to an Ada program is that the
! @code{setvbuf} function can be used to control the buffering of the
  stream used by an Ada file.  In the absence of such a call the standard
  default buffering is used.
  
! The @code{Open} procedures in these packages open a file giving an
  existing C Stream instead of a file name.  Typically this stream is
  imported from a C program, allowing an Ada file to operate on an
  existing C file.
  
  @node The GNAT Library,Interfacing to Other Languages,The Implementation of Standard I/O,Top
! @anchor{gnat_rm/the_gnat_library the-gnat-library}@anchor{10}@anchor{gnat_rm/the_gnat_library doc}@anchor{2ca}@anchor{gnat_rm/the_gnat_library id1}@anchor{2cb}
  @chapter The GNAT Library
  
  
*************** with all GNAT releases.  For example, to
*** 22459,22476 ****
  the SPITBOL pattern matching capability, including a full tutorial and
  extensive examples, look in the @code{g-spipat.ads} file in the library.
  
! For each entry here, the package name (as it would appear in a @cite{with}
  clause) is given, followed by the name of the corresponding spec file in
! parentheses.  The packages are children in four hierarchies, @cite{Ada},
! @cite{Interfaces}, @cite{System}, and @cite{GNAT}, the latter being a
  GNAT-specific hierarchy.
  
  Note that an application program should only use packages in one of these
  four hierarchies if the package is defined in the Ada Reference Manual,
  or is listed in this section of the GNAT Programmers Reference Manual.
  All other units should be considered internal implementation units and
! should not be directly @cite{with}'ed by application code.  The use of
! a @cite{with} statement that references one of these internal implementation
  units makes an application potentially dependent on changes in versions
  of GNAT, and will generate a warning message.
  
--- 22699,22716 ----
  the SPITBOL pattern matching capability, including a full tutorial and
  extensive examples, look in the @code{g-spipat.ads} file in the library.
  
! For each entry here, the package name (as it would appear in a @code{with}
  clause) is given, followed by the name of the corresponding spec file in
! parentheses.  The packages are children in four hierarchies, @code{Ada},
! @code{Interfaces}, @code{System}, and @code{GNAT}, the latter being a
  GNAT-specific hierarchy.
  
  Note that an application program should only use packages in one of these
  four hierarchies if the package is defined in the Ada Reference Manual,
  or is listed in this section of the GNAT Programmers Reference Manual.
  All other units should be considered internal implementation units and
! should not be directly @code{with}ed by application code.  The use of
! a @code{with} clause that references one of these internal implementation
  units makes an application potentially dependent on changes in versions
  of GNAT, and will generate a warning message.
  
*************** of GNAT, and will generate a warning mes
*** 22487,22492 ****
--- 22727,22735 ----
  * 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. 
*************** of GNAT, and will generate a warning mes
*** 22630,22729 ****
  @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 id2}@anchor{2c3}@anchor{gnat_rm/the_gnat_library ada-characters-latin-9-a-chlat9-ads}@anchor{2c4}
! @section @cite{Ada.Characters.Latin_9} (@code{a-chlat9.ads})
  
  
  @geindex Ada.Characters.Latin_9 (a-chlat9.ads)
  
  @geindex Latin_9 constants for Character
  
! This child of @cite{Ada.Characters}
  provides a set of definitions corresponding to those in the
! RM-defined package @cite{Ada.Characters.Latin_1} but with the
! few modifications required for @cite{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{2c5}@anchor{gnat_rm/the_gnat_library id3}@anchor{2c6}
! @section @cite{Ada.Characters.Wide_Latin_1} (@code{a-cwila1.ads})
  
  
  @geindex Ada.Characters.Wide_Latin_1 (a-cwila1.ads)
  
  @geindex Latin_1 constants for Wide_Character
  
! This child of @cite{Ada.Characters}
  provides a set of definitions corresponding to those in the
! RM-defined package @cite{Ada.Characters.Latin_1} but with the
! types of the constants being @cite{Wide_Character}
! instead of @cite{Character}.  The provision of such a package
  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 id4}@anchor{2c7}@anchor{gnat_rm/the_gnat_library ada-characters-wide-latin-9-a-cwila1-ads}@anchor{2c8}
! @section @cite{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
  
! This child of @cite{Ada.Characters}
  provides a set of definitions corresponding to those in the
! GNAT defined package @cite{Ada.Characters.Latin_9} but with the
! types of the constants being @cite{Wide_Character}
! instead of @cite{Character}.  The provision of such a package
  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{2c9}@anchor{gnat_rm/the_gnat_library id5}@anchor{2ca}
! @section @cite{Ada.Characters.Wide_Wide_Latin_1} (@code{a-chzla1.ads})
  
  
  @geindex Ada.Characters.Wide_Wide_Latin_1 (a-chzla1.ads)
  
  @geindex Latin_1 constants for Wide_Wide_Character
  
! This child of @cite{Ada.Characters}
  provides a set of definitions corresponding to those in the
! RM-defined package @cite{Ada.Characters.Latin_1} but with the
! types of the constants being @cite{Wide_Wide_Character}
! instead of @cite{Character}.  The provision of such a package
  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{2cb}@anchor{gnat_rm/the_gnat_library id6}@anchor{2cc}
! @section @cite{Ada.Characters.Wide_Wide_Latin_9} (@code{a-chzla9.ads})
  
  
  @geindex Ada.Characters.Wide_Wide_Latin_9 (a-chzla9.ads)
  
  @geindex Latin_9 constants for Wide_Wide_Character
  
! This child of @cite{Ada.Characters}
  provides a set of definitions corresponding to those in the
! GNAT defined package @cite{Ada.Characters.Latin_9} but with the
! types of the constants being @cite{Wide_Wide_Character}
! instead of @cite{Character}.  The provision of such a package
  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 id7}@anchor{2cd}@anchor{gnat_rm/the_gnat_library ada-containers-formal-doubly-linked-lists-a-cfdlli-ads}@anchor{2ce}
! @section @cite{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 @cite{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.
--- 22873,22972 ----
  @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 id2}@anchor{2cc}@anchor{gnat_rm/the_gnat_library ada-characters-latin-9-a-chlat9-ads}@anchor{2cd}
! @section @code{Ada.Characters.Latin_9} (@code{a-chlat9.ads})
  
  
  @geindex Ada.Characters.Latin_9 (a-chlat9.ads)
  
  @geindex Latin_9 constants for Character
  
! 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{2ce}@anchor{gnat_rm/the_gnat_library id3}@anchor{2cf}
! @section @code{Ada.Characters.Wide_Latin_1} (@code{a-cwila1.ads})
  
  
  @geindex Ada.Characters.Wide_Latin_1 (a-cwila1.ads)
  
  @geindex Latin_1 constants for Wide_Character
  
! 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
! types of the constants being @code{Wide_Character}
! instead of @code{Character}.  The provision of such a package
  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 id4}@anchor{2d0}@anchor{gnat_rm/the_gnat_library ada-characters-wide-latin-9-a-cwila1-ads}@anchor{2d1}
! @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
  
! This child of @code{Ada.Characters}
  provides a set of definitions corresponding to those in the
! GNAT defined package @code{Ada.Characters.Latin_9} but with the
! types of the constants being @code{Wide_Character}
! instead of @code{Character}.  The provision of such a package
  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{2d2}@anchor{gnat_rm/the_gnat_library id5}@anchor{2d3}
! @section @code{Ada.Characters.Wide_Wide_Latin_1} (@code{a-chzla1.ads})
  
  
  @geindex Ada.Characters.Wide_Wide_Latin_1 (a-chzla1.ads)
  
  @geindex Latin_1 constants for Wide_Wide_Character
  
! 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
! types of the constants being @code{Wide_Wide_Character}
! instead of @code{Character}.  The provision of such a package
  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{2d4}@anchor{gnat_rm/the_gnat_library id6}@anchor{2d5}
! @section @code{Ada.Characters.Wide_Wide_Latin_9} (@code{a-chzla9.ads})
  
  
  @geindex Ada.Characters.Wide_Wide_Latin_9 (a-chzla9.ads)
  
  @geindex Latin_9 constants for Wide_Wide_Character
  
! This child of @code{Ada.Characters}
  provides a set of definitions corresponding to those in the
! GNAT defined package @code{Ada.Characters.Latin_9} but with the
! types of the constants being @code{Wide_Wide_Character}
! instead of @code{Character}.  The provision of such a package
  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 id7}@anchor{2d6}@anchor{gnat_rm/the_gnat_library ada-containers-formal-doubly-linked-lists-a-cfdlli-ads}@anchor{2d7}
! @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.
*************** efficient version than the one defined i
*** 22734,22748 ****
  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 id8}@anchor{2cf}@anchor{gnat_rm/the_gnat_library ada-containers-formal-hashed-maps-a-cfhama-ads}@anchor{2d0}
! @section @cite{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 @cite{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.
--- 22977,22991 ----
  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 id8}@anchor{2d8}@anchor{gnat_rm/the_gnat_library ada-containers-formal-hashed-maps-a-cfhama-ads}@anchor{2d9}
! @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.
*************** efficient version than the one defined i
*** 22753,22767 ****
  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 id9}@anchor{2d1}@anchor{gnat_rm/the_gnat_library ada-containers-formal-hashed-sets-a-cfhase-ads}@anchor{2d2}
! @section @cite{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 @cite{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.
--- 22996,23010 ----
  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 id9}@anchor{2da}@anchor{gnat_rm/the_gnat_library ada-containers-formal-hashed-sets-a-cfhase-ads}@anchor{2db}
! @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.
*************** efficient version than the one defined i
*** 22772,22786 ****
  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 id10}@anchor{2d3}@anchor{gnat_rm/the_gnat_library ada-containers-formal-ordered-maps-a-cforma-ads}@anchor{2d4}
! @section @cite{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 @cite{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.
--- 23015,23029 ----
  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 id10}@anchor{2dc}@anchor{gnat_rm/the_gnat_library ada-containers-formal-ordered-maps-a-cforma-ads}@anchor{2dd}
! @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.
*************** efficient version than the one defined i
*** 22791,22805 ****
  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{2d5}@anchor{gnat_rm/the_gnat_library id11}@anchor{2d6}
! @section @cite{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 @cite{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.
--- 23034,23048 ----
  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{2de}@anchor{gnat_rm/the_gnat_library id11}@anchor{2df}
! @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.
*************** efficient version than the one defined i
*** 22810,22824 ****
  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 id12}@anchor{2d7}@anchor{gnat_rm/the_gnat_library ada-containers-formal-vectors-a-cofove-ads}@anchor{2d8}
! @section @cite{Ada.Containers.Formal_Vectors} (@code{a-cofove.ads})
  
  
  @geindex Ada.Containers.Formal_Vectors (a-cofove.ads)
  
  @geindex Formal container for vectors
  
! This child of @cite{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.
--- 23053,23067 ----
  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 id12}@anchor{2e0}@anchor{gnat_rm/the_gnat_library ada-containers-formal-vectors-a-cofove-ads}@anchor{2e1}
! @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.
*************** in mind, it may well be generally useful
*** 22828,22843 ****
  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 Bounded_Holders a-coboho ads,Ada Containers Formal_Vectors a-cofove ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id13}@anchor{2d9}@anchor{gnat_rm/the_gnat_library ada-containers-formal-indefinite-vectors-a-cfinve-ads}@anchor{2da}
! @section @cite{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 @cite{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.
--- 23071,23086 ----
  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 id13}@anchor{2e2}@anchor{gnat_rm/the_gnat_library ada-containers-formal-indefinite-vectors-a-cfinve-ads}@anchor{2e3}
! @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.
*************** in mind, it may well be generally useful
*** 22847,22880 ****
  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 Bounded_Holders a-coboho ads,Ada Command_Line Environment a-colien ads,Ada Containers Formal_Indefinite_Vectors a-cfinve ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id14}@anchor{2db}@anchor{gnat_rm/the_gnat_library ada-containers-bounded-holders-a-coboho-ads}@anchor{2dc}
! @section @cite{Ada.Containers.Bounded_Holders} (@code{a-coboho.ads})
  
  
  @geindex Ada.Containers.Bounded_Holders (a-coboho.ads)
  
  @geindex Formal container for vectors
  
! This child of @cite{Ada.Containers} defines a modified version of
  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{2dd}@anchor{gnat_rm/the_gnat_library id15}@anchor{2de}
! @section @cite{Ada.Command_Line.Environment} (@code{a-colien.ads})
  
  
  @geindex Ada.Command_Line.Environment (a-colien.ads)
  
  @geindex Environment entries
  
! This child of @cite{Ada.Command_Line}
  provides a mechanism for obtaining environment values on systems
  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 id16}@anchor{2df}@anchor{gnat_rm/the_gnat_library ada-command-line-remove-a-colire-ads}@anchor{2e0}
! @section @cite{Ada.Command_Line.Remove} (@code{a-colire.ads})
  
  
  @geindex Ada.Command_Line.Remove (a-colire.ads)
--- 23090,23189 ----
  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 id14}@anchor{2e4}@anchor{gnat_rm/the_gnat_library ada-containers-functional-vectors-a-cofuve-ads}@anchor{2e5}
! @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{2e6}@anchor{gnat_rm/the_gnat_library id15}@anchor{2e7}
! @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 id16}@anchor{2e8}@anchor{gnat_rm/the_gnat_library ada-containers-functional-maps-a-cofuma-ads}@anchor{2e9}
! @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{2ea}@anchor{gnat_rm/the_gnat_library id17}@anchor{2eb}
! @section @code{Ada.Containers.Bounded_Holders} (@code{a-coboho.ads})
  
  
  @geindex Ada.Containers.Bounded_Holders (a-coboho.ads)
  
  @geindex Formal container for vectors
  
! This child of @code{Ada.Containers} defines a modified version of
  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{2ec}@anchor{gnat_rm/the_gnat_library id18}@anchor{2ed}
! @section @code{Ada.Command_Line.Environment} (@code{a-colien.ads})
  
  
  @geindex Ada.Command_Line.Environment (a-colien.ads)
  
  @geindex Environment entries
  
! This child of @code{Ada.Command_Line}
  provides a mechanism for obtaining environment values on systems
  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 id19}@anchor{2ee}@anchor{gnat_rm/the_gnat_library ada-command-line-remove-a-colire-ads}@anchor{2ef}
! @section @code{Ada.Command_Line.Remove} (@code{a-colire.ads})
  
  
  @geindex Ada.Command_Line.Remove (a-colire.ads)
*************** where this concept makes sense.
*** 22884,22898 ****
  @geindex Command line
  @geindex argument removal
  
! This child of @cite{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 @cite{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{2e1}@anchor{gnat_rm/the_gnat_library id17}@anchor{2e2}
! @section @cite{Ada.Command_Line.Response_File} (@code{a-clrefi.ads})
  
  
  @geindex Ada.Command_Line.Response_File (a-clrefi.ads)
--- 23193,23207 ----
  @geindex Command line
  @geindex argument removal
  
! 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 id20}@anchor{2f0}@anchor{gnat_rm/the_gnat_library ada-command-line-response-file-a-clrefi-ads}@anchor{2f1}
! @section @code{Ada.Command_Line.Response_File} (@code{a-clrefi.ads})
  
  
  @geindex Ada.Command_Line.Response_File (a-clrefi.ads)
*************** see the removed argument.
*** 22905,22918 ****
  @geindex Command line
  @geindex handling long command lines
  
! This child of @cite{Ada.Command_Line} provides a mechanism facilities for
  getting command line arguments from a text file, called a "response file".
  Using a response file allow passing a set of arguments to an executable longer
  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 id18}@anchor{2e3}@anchor{gnat_rm/the_gnat_library ada-direct-io-c-streams-a-diocst-ads}@anchor{2e4}
! @section @cite{Ada.Direct_IO.C_Streams} (@code{a-diocst.ads})
  
  
  @geindex Ada.Direct_IO.C_Streams (a-diocst.ads)
--- 23214,23227 ----
  @geindex Command line
  @geindex handling long command lines
  
! This child of @code{Ada.Command_Line} provides a mechanism facilities for
  getting command line arguments from a text file, called a "response file".
  Using a response file allow passing a set of arguments to an executable longer
  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 id21}@anchor{2f2}@anchor{gnat_rm/the_gnat_library ada-direct-io-c-streams-a-diocst-ads}@anchor{2f3}
! @section @code{Ada.Direct_IO.C_Streams} (@code{a-diocst.ads})
  
  
  @geindex Ada.Direct_IO.C_Streams (a-diocst.ads)
*************** than the maximum allowed by the system o
*** 22921,22933 ****
  @geindex Interfacing with Direct_IO
  
  This package provides subprograms that allow interfacing between
! C streams and @cite{Direct_IO}.  The stream identifier can be
  extracted from a file opened on the Ada side, and an Ada file
  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 id19}@anchor{2e5}@anchor{gnat_rm/the_gnat_library ada-exceptions-is-null-occurrence-a-einuoc-ads}@anchor{2e6}
! @section @cite{Ada.Exceptions.Is_Null_Occurrence} (@code{a-einuoc.ads})
  
  
  @geindex Ada.Exceptions.Is_Null_Occurrence (a-einuoc.ads)
--- 23230,23242 ----
  @geindex Interfacing with Direct_IO
  
  This package provides subprograms that allow interfacing between
! C streams and @code{Direct_IO}.  The stream identifier can be
  extracted from a file opened on the Ada side, and an Ada file
  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 id22}@anchor{2f4}@anchor{gnat_rm/the_gnat_library ada-exceptions-is-null-occurrence-a-einuoc-ads}@anchor{2f5}
! @section @code{Ada.Exceptions.Is_Null_Occurrence} (@code{a-einuoc.ads})
  
  
  @geindex Ada.Exceptions.Is_Null_Occurrence (a-einuoc.ads)
*************** can be constructed from a stream opened
*** 22936,22947 ****
  @geindex testing for
  
  This child subprogram provides a way of testing for the null
! exception occurrence (@cite{Null_Occurrence}) without raising
  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 id20}@anchor{2e7}@anchor{gnat_rm/the_gnat_library ada-exceptions-last-chance-handler-a-elchha-ads}@anchor{2e8}
! @section @cite{Ada.Exceptions.Last_Chance_Handler} (@code{a-elchha.ads})
  
  
  @geindex Ada.Exceptions.Last_Chance_Handler (a-elchha.ads)
--- 23245,23256 ----
  @geindex testing for
  
  This child subprogram provides a way of testing for the null
! exception occurrence (@code{Null_Occurrence}) without raising
  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 id23}@anchor{2f6}@anchor{gnat_rm/the_gnat_library ada-exceptions-last-chance-handler-a-elchha-ads}@anchor{2f7}
! @section @code{Ada.Exceptions.Last_Chance_Handler} (@code{a-elchha.ads})
  
  
  @geindex Ada.Exceptions.Last_Chance_Handler (a-elchha.ads)
*************** exceptions (hence the name last chance),
*** 22954,22974 ****
  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{2e9}@anchor{gnat_rm/the_gnat_library id21}@anchor{2ea}
! @section @cite{Ada.Exceptions.Traceback} (@code{a-exctra.ads})
  
  
  @geindex Ada.Exceptions.Traceback (a-exctra.ads)
  
  @geindex Traceback for Exception Occurrence
  
! This child package provides the subprogram (@cite{Tracebacks}) to
  give a traceback array of addresses based on an exception
  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{2eb}@anchor{gnat_rm/the_gnat_library id22}@anchor{2ec}
! @section @cite{Ada.Sequential_IO.C_Streams} (@code{a-siocst.ads})
  
  
  @geindex Ada.Sequential_IO.C_Streams (a-siocst.ads)
--- 23263,23283 ----
  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{2f8}@anchor{gnat_rm/the_gnat_library id24}@anchor{2f9}
! @section @code{Ada.Exceptions.Traceback} (@code{a-exctra.ads})
  
  
  @geindex Ada.Exceptions.Traceback (a-exctra.ads)
  
  @geindex Traceback for Exception Occurrence
  
! This child package provides the subprogram (@code{Tracebacks}) to
  give a traceback array of addresses based on an exception
  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{2fa}@anchor{gnat_rm/the_gnat_library id25}@anchor{2fb}
! @section @code{Ada.Sequential_IO.C_Streams} (@code{a-siocst.ads})
  
  
  @geindex Ada.Sequential_IO.C_Streams (a-siocst.ads)
*************** occurrence.
*** 22977,22989 ****
  @geindex Interfacing with Sequential_IO
  
  This package provides subprograms that allow interfacing between
! C streams and @cite{Sequential_IO}.  The stream identifier can be
  extracted from a file opened on the Ada side, and an Ada file
  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 id23}@anchor{2ed}@anchor{gnat_rm/the_gnat_library ada-streams-stream-io-c-streams-a-ssicst-ads}@anchor{2ee}
! @section @cite{Ada.Streams.Stream_IO.C_Streams} (@code{a-ssicst.ads})
  
  
  @geindex Ada.Streams.Stream_IO.C_Streams (a-ssicst.ads)
--- 23286,23298 ----
  @geindex Interfacing with Sequential_IO
  
  This package provides subprograms that allow interfacing between
! C streams and @code{Sequential_IO}.  The stream identifier can be
  extracted from a file opened on the Ada side, and an Ada file
  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 id26}@anchor{2fc}@anchor{gnat_rm/the_gnat_library ada-streams-stream-io-c-streams-a-ssicst-ads}@anchor{2fd}
! @section @code{Ada.Streams.Stream_IO.C_Streams} (@code{a-ssicst.ads})
  
  
  @geindex Ada.Streams.Stream_IO.C_Streams (a-ssicst.ads)
*************** can be constructed from a stream opened
*** 22992,23004 ****
  @geindex Interfacing with Stream_IO
  
  This package provides subprograms that allow interfacing between
! C streams and @cite{Stream_IO}.  The stream identifier can be
  extracted from a file opened on the Ada side, and an Ada file
  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{2ef}@anchor{gnat_rm/the_gnat_library id24}@anchor{2f0}
! @section @cite{Ada.Strings.Unbounded.Text_IO} (@code{a-suteio.ads})
  
  
  @geindex Ada.Strings.Unbounded.Text_IO (a-suteio.ads)
--- 23301,23313 ----
  @geindex Interfacing with Stream_IO
  
  This package provides subprograms that allow interfacing between
! C streams and @code{Stream_IO}.  The stream identifier can be
  extracted from a file opened on the Ada side, and an Ada file
  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{2fe}@anchor{gnat_rm/the_gnat_library id27}@anchor{2ff}
! @section @code{Ada.Strings.Unbounded.Text_IO} (@code{a-suteio.ads})
  
  
  @geindex Ada.Strings.Unbounded.Text_IO (a-suteio.ads)
*************** strings, avoiding the necessity for an i
*** 23014,23021 ****
  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 id25}@anchor{2f1}@anchor{gnat_rm/the_gnat_library ada-strings-wide-unbounded-wide-text-io-a-swuwti-ads}@anchor{2f2}
! @section @cite{Ada.Strings.Wide_Unbounded.Wide_Text_IO} (@code{a-swuwti.ads})
  
  
  @geindex Ada.Strings.Wide_Unbounded.Wide_Text_IO (a-swuwti.ads)
--- 23323,23330 ----
  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 id28}@anchor{300}@anchor{gnat_rm/the_gnat_library ada-strings-wide-unbounded-wide-text-io-a-swuwti-ads}@anchor{301}
! @section @code{Ada.Strings.Wide_Unbounded.Wide_Text_IO} (@code{a-swuwti.ads})
  
  
  @geindex Ada.Strings.Wide_Unbounded.Wide_Text_IO (a-swuwti.ads)
*************** wide strings, avoiding the necessity for
*** 23031,23038 ****
  with ordinary wide strings.
  
  @node Ada Strings Wide_Wide_Unbounded Wide_Wide_Text_IO a-szuzti ads,Ada Text_IO C_Streams a-tiocst 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{2f3}@anchor{gnat_rm/the_gnat_library id26}@anchor{2f4}
! @section @cite{Ada.Strings.Wide_Wide_Unbounded.Wide_Wide_Text_IO} (@code{a-szuzti.ads})
  
  
  @geindex Ada.Strings.Wide_Wide_Unbounded.Wide_Wide_Text_IO (a-szuzti.ads)
--- 23340,23347 ----
  with ordinary wide strings.
  
  @node Ada Strings Wide_Wide_Unbounded Wide_Wide_Text_IO a-szuzti ads,Ada Text_IO C_Streams a-tiocst ads,Ada Strings Wide_Unbounded Wide_Text_IO a-swuwti ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id29}@anchor{302}@anchor{gnat_rm/the_gnat_library ada-strings-wide-wide-unbounded-wide-wide-text-io-a-szuzti-ads}@anchor{303}
! @section @code{Ada.Strings.Wide_Wide_Unbounded.Wide_Wide_Text_IO} (@code{a-szuzti.ads})
  
  
  @geindex Ada.Strings.Wide_Wide_Unbounded.Wide_Wide_Text_IO (a-szuzti.ads)
*************** wide wide strings, avoiding the necessit
*** 23048,23070 ****
  with ordinary wide wide strings.
  
  @node Ada Text_IO C_Streams a-tiocst ads,Ada Text_IO Reset_Standard_Files a-tirsfi ads,Ada Strings Wide_Wide_Unbounded Wide_Wide_Text_IO a-szuzti ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-text-io-c-streams-a-tiocst-ads}@anchor{2f5}@anchor{gnat_rm/the_gnat_library id27}@anchor{2f6}
! @section @cite{Ada.Text_IO.C_Streams} (@code{a-tiocst.ads})
  
  
  @geindex Ada.Text_IO.C_Streams (a-tiocst.ads)
  
  @geindex C Streams
! @geindex Interfacing with `Text_IO`
  
  This package provides subprograms that allow interfacing between
! C streams and @cite{Text_IO}.  The stream identifier can be
  extracted from a file opened on the Ada side, and an Ada file
  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 id28}@anchor{2f7}@anchor{gnat_rm/the_gnat_library ada-text-io-reset-standard-files-a-tirsfi-ads}@anchor{2f8}
! @section @cite{Ada.Text_IO.Reset_Standard_Files} (@code{a-tirsfi.ads})
  
  
  @geindex Ada.Text_IO.Reset_Standard_Files (a-tirsfi.ads)
--- 23357,23379 ----
  with ordinary wide wide strings.
  
  @node Ada Text_IO C_Streams a-tiocst ads,Ada Text_IO Reset_Standard_Files a-tirsfi ads,Ada Strings Wide_Wide_Unbounded Wide_Wide_Text_IO a-szuzti ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-text-io-c-streams-a-tiocst-ads}@anchor{304}@anchor{gnat_rm/the_gnat_library id30}@anchor{305}
! @section @code{Ada.Text_IO.C_Streams} (@code{a-tiocst.ads})
  
  
  @geindex Ada.Text_IO.C_Streams (a-tiocst.ads)
  
  @geindex C Streams
! @geindex Interfacing with `@w{`}Text_IO`@w{`}
  
  This package provides subprograms that allow interfacing between
! C streams and @code{Text_IO}.  The stream identifier can be
  extracted from a file opened on the Ada side, and an Ada file
  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{306}@anchor{gnat_rm/the_gnat_library id31}@anchor{307}
! @section @code{Ada.Text_IO.Reset_Standard_Files} (@code{a-tirsfi.ads})
  
  
  @geindex Ada.Text_IO.Reset_Standard_Files (a-tirsfi.ads)
*************** execution (for example a standard input
*** 23078,23085 ****
  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 id29}@anchor{2f9}@anchor{gnat_rm/the_gnat_library ada-wide-characters-unicode-a-wichun-ads}@anchor{2fa}
! @section @cite{Ada.Wide_Characters.Unicode} (@code{a-wichun.ads})
  
  
  @geindex Ada.Wide_Characters.Unicode (a-wichun.ads)
--- 23387,23394 ----
  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 id32}@anchor{308}@anchor{gnat_rm/the_gnat_library ada-wide-characters-unicode-a-wichun-ads}@anchor{309}
! @section @code{Ada.Wide_Characters.Unicode} (@code{a-wichun.ads})
  
  
  @geindex Ada.Wide_Characters.Unicode (a-wichun.ads)
*************** This package provides subprograms that a
*** 23091,23113 ****
  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{2fb}@anchor{gnat_rm/the_gnat_library id30}@anchor{2fc}
! @section @cite{Ada.Wide_Text_IO.C_Streams} (@code{a-wtcstr.ads})
  
  
  @geindex Ada.Wide_Text_IO.C_Streams (a-wtcstr.ads)
  
  @geindex C Streams
! @geindex Interfacing with `Wide_Text_IO`
  
  This package provides subprograms that allow interfacing between
! C streams and @cite{Wide_Text_IO}.  The stream identifier can be
  extracted from a file opened on the Ada side, and an Ada file
  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{2fd}@anchor{gnat_rm/the_gnat_library id31}@anchor{2fe}
! @section @cite{Ada.Wide_Text_IO.Reset_Standard_Files} (@code{a-wrstfi.ads})
  
  
  @geindex Ada.Wide_Text_IO.Reset_Standard_Files (a-wrstfi.ads)
--- 23400,23422 ----
  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{30a}@anchor{gnat_rm/the_gnat_library id33}@anchor{30b}
! @section @code{Ada.Wide_Text_IO.C_Streams} (@code{a-wtcstr.ads})
  
  
  @geindex Ada.Wide_Text_IO.C_Streams (a-wtcstr.ads)
  
  @geindex C Streams
! @geindex Interfacing with `@w{`}Wide_Text_IO`@w{`}
  
  This package provides subprograms that allow interfacing between
! C streams and @code{Wide_Text_IO}.  The stream identifier can be
  extracted from a file opened on the Ada side, and an Ada file
  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{30c}@anchor{gnat_rm/the_gnat_library id34}@anchor{30d}
! @section @code{Ada.Wide_Text_IO.Reset_Standard_Files} (@code{a-wrstfi.ads})
  
  
  @geindex Ada.Wide_Text_IO.Reset_Standard_Files (a-wrstfi.ads)
*************** execution (for example a standard input
*** 23121,23128 ****
  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 id32}@anchor{2ff}@anchor{gnat_rm/the_gnat_library ada-wide-wide-characters-unicode-a-zchuni-ads}@anchor{300}
! @section @cite{Ada.Wide_Wide_Characters.Unicode} (@code{a-zchuni.ads})
  
  
  @geindex Ada.Wide_Wide_Characters.Unicode (a-zchuni.ads)
--- 23430,23437 ----
  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 id35}@anchor{30e}@anchor{gnat_rm/the_gnat_library ada-wide-wide-characters-unicode-a-zchuni-ads}@anchor{30f}
! @section @code{Ada.Wide_Wide_Characters.Unicode} (@code{a-zchuni.ads})
  
  
  @geindex Ada.Wide_Wide_Characters.Unicode (a-zchuni.ads)
*************** This package provides subprograms that a
*** 23134,23156 ****
  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 id33}@anchor{301}@anchor{gnat_rm/the_gnat_library ada-wide-wide-text-io-c-streams-a-ztcstr-ads}@anchor{302}
! @section @cite{Ada.Wide_Wide_Text_IO.C_Streams} (@code{a-ztcstr.ads})
  
  
  @geindex Ada.Wide_Wide_Text_IO.C_Streams (a-ztcstr.ads)
  
  @geindex C Streams
! @geindex Interfacing with `Wide_Wide_Text_IO`
  
  This package provides subprograms that allow interfacing between
! C streams and @cite{Wide_Wide_Text_IO}.  The stream identifier can be
  extracted from a file opened on the Ada side, and an Ada file
  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 id34}@anchor{303}@anchor{gnat_rm/the_gnat_library ada-wide-wide-text-io-reset-standard-files-a-zrstfi-ads}@anchor{304}
! @section @cite{Ada.Wide_Wide_Text_IO.Reset_Standard_Files} (@code{a-zrstfi.ads})
  
  
  @geindex Ada.Wide_Wide_Text_IO.Reset_Standard_Files (a-zrstfi.ads)
--- 23443,23465 ----
  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 id36}@anchor{310}@anchor{gnat_rm/the_gnat_library ada-wide-wide-text-io-c-streams-a-ztcstr-ads}@anchor{311}
! @section @code{Ada.Wide_Wide_Text_IO.C_Streams} (@code{a-ztcstr.ads})
  
  
  @geindex Ada.Wide_Wide_Text_IO.C_Streams (a-ztcstr.ads)
  
  @geindex C Streams
! @geindex Interfacing with `@w{`}Wide_Wide_Text_IO`@w{`}
  
  This package provides subprograms that allow interfacing between
! C streams and @code{Wide_Wide_Text_IO}.  The stream identifier can be
  extracted from a file opened on the Ada side, and an Ada file
  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 id37}@anchor{312}@anchor{gnat_rm/the_gnat_library ada-wide-wide-text-io-reset-standard-files-a-zrstfi-ads}@anchor{313}
! @section @code{Ada.Wide_Wide_Text_IO.Reset_Standard_Files} (@code{a-zrstfi.ads})
  
  
  @geindex Ada.Wide_Wide_Text_IO.Reset_Standard_Files (a-zrstfi.ads)
*************** change during execution (for example a s
*** 23164,23171 ****
  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{305}@anchor{gnat_rm/the_gnat_library id35}@anchor{306}
! @section @cite{GNAT.Altivec} (@code{g-altive.ads})
  
  
  @geindex GNAT.Altivec (g-altive.ads)
--- 23473,23480 ----
  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{314}@anchor{gnat_rm/the_gnat_library id38}@anchor{315}
! @section @code{GNAT.Altivec} (@code{g-altive.ads})
  
  
  @geindex GNAT.Altivec (g-altive.ads)
*************** definitions of constants and types commo
*** 23177,23184 ****
  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 id36}@anchor{307}@anchor{gnat_rm/the_gnat_library gnat-altivec-conversions-g-altcon-ads}@anchor{308}
! @section @cite{GNAT.Altivec.Conversions} (@code{g-altcon.ads})
  
  
  @geindex GNAT.Altivec.Conversions (g-altcon.ads)
--- 23486,23493 ----
  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{316}@anchor{gnat_rm/the_gnat_library id39}@anchor{317}
! @section @code{GNAT.Altivec.Conversions} (@code{g-altcon.ads})
  
  
  @geindex GNAT.Altivec.Conversions (g-altcon.ads)
*************** binding.
*** 23188,23195 ****
  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 id37}@anchor{309}@anchor{gnat_rm/the_gnat_library gnat-altivec-vector-operations-g-alveop-ads}@anchor{30a}
! @section @cite{GNAT.Altivec.Vector_Operations} (@code{g-alveop.ads})
  
  
  @geindex GNAT.Altivec.Vector_Operations (g-alveop.ads)
--- 23497,23504 ----
  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{318}@anchor{gnat_rm/the_gnat_library id40}@anchor{319}
! @section @code{GNAT.Altivec.Vector_Operations} (@code{g-alveop.ads})
  
  
  @geindex GNAT.Altivec.Vector_Operations (g-alveop.ads)
*************** library. The hard binding is provided as
*** 23202,23209 ****
  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{30b}@anchor{gnat_rm/the_gnat_library id38}@anchor{30c}
! @section @cite{GNAT.Altivec.Vector_Types} (@code{g-alvety.ads})
  
  
  @geindex GNAT.Altivec.Vector_Types (g-alvety.ads)
--- 23511,23518 ----
  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{31a}@anchor{gnat_rm/the_gnat_library id41}@anchor{31b}
! @section @code{GNAT.Altivec.Vector_Types} (@code{g-alvety.ads})
  
  
  @geindex GNAT.Altivec.Vector_Types (g-alvety.ads)
*************** This package exposes the various vector
*** 23214,23221 ****
  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{30d}@anchor{gnat_rm/the_gnat_library id39}@anchor{30e}
! @section @cite{GNAT.Altivec.Vector_Views} (@code{g-alvevi.ads})
  
  
  @geindex GNAT.Altivec.Vector_Views (g-alvevi.ads)
--- 23523,23530 ----
  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{31c}@anchor{gnat_rm/the_gnat_library id42}@anchor{31d}
! @section @code{GNAT.Altivec.Vector_Views} (@code{g-alvevi.ads})
  
  
  @geindex GNAT.Altivec.Vector_Views (g-alvevi.ads)
*************** vector elements and provides a simple wa
*** 23229,23236 ****
  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{30f}@anchor{gnat_rm/the_gnat_library id40}@anchor{310}
! @section @cite{GNAT.Array_Split} (@code{g-arrspl.ads})
  
  
  @geindex GNAT.Array_Split (g-arrspl.ads)
--- 23538,23545 ----
  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{31e}@anchor{gnat_rm/the_gnat_library id43}@anchor{31f}
! @section @code{GNAT.Array_Split} (@code{g-arrspl.ads})
  
  
  @geindex GNAT.Array_Split (g-arrspl.ads)
*************** an array wherever the separators appear,
*** 23242,23249 ****
  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 id41}@anchor{311}@anchor{gnat_rm/the_gnat_library gnat-awk-g-awk-ads}@anchor{312}
! @section @cite{GNAT.AWK} (@code{g-awk.ads})
  
  
  @geindex GNAT.AWK (g-awk.ads)
--- 23551,23558 ----
  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 id44}@anchor{320}@anchor{gnat_rm/the_gnat_library gnat-awk-g-awk-ads}@anchor{321}
! @section @code{GNAT.AWK} (@code{g-awk.ads})
  
  
  @geindex GNAT.AWK (g-awk.ads)
*************** or more files containing formatted data.
*** 23257,23264 ****
  where each record is a line and a field is a data element in this line.
  
  @node GNAT Bind_Environment g-binenv ads,GNAT Bounded_Buffers g-boubuf ads,GNAT AWK g-awk ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-bind-environment-g-binenv-ads}@anchor{313}@anchor{gnat_rm/the_gnat_library id42}@anchor{314}
! @section @cite{GNAT.Bind_Environment} (@code{g-binenv.ads})
  
  
  @geindex GNAT.Bind_Environment (g-binenv.ads)
--- 23566,23573 ----
  where each record is a line and a field is a data element in this line.
  
  @node GNAT Bind_Environment g-binenv ads,GNAT Bounded_Buffers g-boubuf ads,GNAT AWK g-awk ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-bind-environment-g-binenv-ads}@anchor{322}@anchor{gnat_rm/the_gnat_library id45}@anchor{323}
! @section @code{GNAT.Bind_Environment} (@code{g-binenv.ads})
  
  
  @geindex GNAT.Bind_Environment (g-binenv.ads)
*************** where each record is a line and a field
*** 23266,23277 ****
  @geindex Bind environment
  
  Provides access to key=value associations captured at bind time.
! These associations can be specified using the @cite{-V} binder command
  line switch.
  
  @node GNAT Bounded_Buffers g-boubuf ads,GNAT Bounded_Mailboxes g-boumai ads,GNAT Bind_Environment g-binenv ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-bounded-buffers-g-boubuf-ads}@anchor{315}@anchor{gnat_rm/the_gnat_library id43}@anchor{316}
! @section @cite{GNAT.Bounded_Buffers} (@code{g-boubuf.ads})
  
  
  @geindex GNAT.Bounded_Buffers (g-boubuf.ads)
--- 23575,23586 ----
  @geindex Bind environment
  
  Provides access to key=value associations captured at bind time.
! These associations can be specified using the @code{-V} binder command
  line switch.
  
  @node GNAT Bounded_Buffers g-boubuf ads,GNAT Bounded_Mailboxes g-boumai ads,GNAT Bind_Environment g-binenv ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id46}@anchor{324}@anchor{gnat_rm/the_gnat_library gnat-bounded-buffers-g-boubuf-ads}@anchor{325}
! @section @code{GNAT.Bounded_Buffers} (@code{g-boubuf.ads})
  
  
  @geindex GNAT.Bounded_Buffers (g-boubuf.ads)
*************** useful directly or as parts of the imple
*** 23285,23292 ****
  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 id44}@anchor{317}@anchor{gnat_rm/the_gnat_library gnat-bounded-mailboxes-g-boumai-ads}@anchor{318}
! @section @cite{GNAT.Bounded_Mailboxes} (@code{g-boumai.ads})
  
  
  @geindex GNAT.Bounded_Mailboxes (g-boumai.ads)
--- 23594,23601 ----
  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 id47}@anchor{326}@anchor{gnat_rm/the_gnat_library gnat-bounded-mailboxes-g-boumai-ads}@anchor{327}
! @section @code{GNAT.Bounded_Mailboxes} (@code{g-boumai.ads})
  
  
  @geindex GNAT.Bounded_Mailboxes (g-boumai.ads)
*************** such as mailboxes.
*** 23298,23305 ****
  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{319}@anchor{gnat_rm/the_gnat_library id45}@anchor{31a}
! @section @cite{GNAT.Bubble_Sort} (@code{g-bubsor.ads})
  
  
  @geindex GNAT.Bubble_Sort (g-bubsor.ads)
--- 23607,23614 ----
  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{328}@anchor{gnat_rm/the_gnat_library id48}@anchor{329}
! @section @code{GNAT.Bubble_Sort} (@code{g-bubsor.ads})
  
  
  @geindex GNAT.Bubble_Sort (g-bubsor.ads)
*************** data items.  Exchange and comparison pro
*** 23313,23320 ****
  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 id46}@anchor{31b}@anchor{gnat_rm/the_gnat_library gnat-bubble-sort-a-g-busora-ads}@anchor{31c}
! @section @cite{GNAT.Bubble_Sort_A} (@code{g-busora.ads})
  
  
  @geindex GNAT.Bubble_Sort_A (g-busora.ads)
--- 23622,23629 ----
  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 id49}@anchor{32a}@anchor{gnat_rm/the_gnat_library gnat-bubble-sort-a-g-busora-ads}@anchor{32b}
! @section @code{GNAT.Bubble_Sort_A} (@code{g-busora.ads})
  
  
  @geindex GNAT.Bubble_Sort_A (g-busora.ads)
*************** access-to-procedure values.
*** 23326,23336 ****
  Provides a general implementation of bubble sort usable for sorting arbitrary
  data items.  Move and comparison procedures are provided by passing
  access-to-procedure values. This is an older version, retained for
! compatibility. Usually @cite{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 id47}@anchor{31d}@anchor{gnat_rm/the_gnat_library gnat-bubble-sort-g-g-busorg-ads}@anchor{31e}
! @section @cite{GNAT.Bubble_Sort_G} (@code{g-busorg.ads})
  
  
  @geindex GNAT.Bubble_Sort_G (g-busorg.ads)
--- 23635,23645 ----
  Provides a general implementation of bubble sort usable for sorting arbitrary
  data items.  Move and comparison procedures are provided by passing
  access-to-procedure values. This is an older version, retained for
! 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{32c}@anchor{gnat_rm/the_gnat_library id50}@anchor{32d}
! @section @code{GNAT.Bubble_Sort_G} (@code{g-busorg.ads})
  
  
  @geindex GNAT.Bubble_Sort_G (g-busorg.ads)
*************** compatibility. Usually @cite{GNAT.Bubble
*** 23339,23352 ****
  
  @geindex Bubble sort
  
! Similar to @cite{Bubble_Sort_A} except that the move and sorting procedures
  are provided as generic parameters, this improves efficiency, especially
  if the procedures can be inlined, at the expense of duplicating code for
  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{31f}@anchor{gnat_rm/the_gnat_library id48}@anchor{320}
! @section @cite{GNAT.Byte_Order_Mark} (@code{g-byorma.ads})
  
  
  @geindex GNAT.Byte_Order_Mark (g-byorma.ads)
--- 23648,23661 ----
  
  @geindex Bubble sort
  
! Similar to @code{Bubble_Sort_A} except that the move and sorting procedures
  are provided as generic parameters, this improves efficiency, especially
  if the procedures can be inlined, at the expense of duplicating code for
  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{32e}@anchor{gnat_rm/the_gnat_library id51}@anchor{32f}
! @section @code{GNAT.Byte_Order_Mark} (@code{g-byorma.ads})
  
  
  @geindex GNAT.Byte_Order_Mark (g-byorma.ads)
*************** the encoding of the string. The routine
*** 23361,23368 ****
  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{321}@anchor{gnat_rm/the_gnat_library id49}@anchor{322}
! @section @cite{GNAT.Byte_Swapping} (@code{g-bytswa.ads})
  
  
  @geindex GNAT.Byte_Swapping (g-bytswa.ads)
--- 23670,23677 ----
  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{330}@anchor{gnat_rm/the_gnat_library id52}@anchor{331}
! @section @code{GNAT.Byte_Swapping} (@code{g-bytswa.ads})
  
  
  @geindex GNAT.Byte_Swapping (g-bytswa.ads)
*************** General routines for swapping the bytes
*** 23375,23396 ****
  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 id50}@anchor{323}@anchor{gnat_rm/the_gnat_library gnat-calendar-g-calend-ads}@anchor{324}
! @section @cite{GNAT.Calendar} (@code{g-calend.ads})
  
  
  @geindex GNAT.Calendar (g-calend.ads)
  
  @geindex Calendar
  
! Extends the facilities provided by @cite{Ada.Calendar} to include handling
! of days of the week, an extended @cite{Split} and @cite{Time_Of} capability.
! Also provides conversion of @cite{Ada.Calendar.Time} values to and from the
! C @cite{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{325}@anchor{gnat_rm/the_gnat_library id51}@anchor{326}
! @section @cite{GNAT.Calendar.Time_IO} (@code{g-catiio.ads})
  
  
  @geindex Calendar
--- 23684,23705 ----
  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{332}@anchor{gnat_rm/the_gnat_library id53}@anchor{333}
! @section @code{GNAT.Calendar} (@code{g-calend.ads})
  
  
  @geindex GNAT.Calendar (g-calend.ads)
  
  @geindex Calendar
  
! Extends the facilities provided by @code{Ada.Calendar} to include handling
! of days of the week, an extended @code{Split} and @code{Time_Of} capability.
! Also provides conversion of @code{Ada.Calendar.Time} values to and from the
! 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 id54}@anchor{334}@anchor{gnat_rm/the_gnat_library gnat-calendar-time-io-g-catiio-ads}@anchor{335}
! @section @code{GNAT.Calendar.Time_IO} (@code{g-catiio.ads})
  
  
  @geindex Calendar
*************** C @cite{timeval} format.
*** 23400,23407 ****
  @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 id52}@anchor{327}@anchor{gnat_rm/the_gnat_library gnat-crc32-g-crc32-ads}@anchor{328}
! @section @cite{GNAT.CRC32} (@code{g-crc32.ads})
  
  
  @geindex GNAT.CRC32 (g-crc32.ads)
--- 23709,23716 ----
  @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 id55}@anchor{336}@anchor{gnat_rm/the_gnat_library gnat-crc32-g-crc32-ads}@anchor{337}
! @section @code{GNAT.CRC32} (@code{g-crc32.ads})
  
  
  @geindex GNAT.CRC32 (g-crc32.ads)
*************** of this algorithm see
*** 23417,23439 ****
  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{329}@anchor{gnat_rm/the_gnat_library id53}@anchor{32a}
! @section @cite{GNAT.Case_Util} (@code{g-casuti.ads})
  
  
  @geindex GNAT.Case_Util (g-casuti.ads)
  
  @geindex Casing utilities
  
! @geindex Character handling (`GNAT.Case_Util`)
  
  A set of simple routines for handling upper and lower casing of strings
  without the overhead of the full casing tables
! in @cite{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 id54}@anchor{32b}@anchor{gnat_rm/the_gnat_library gnat-cgi-g-cgi-ads}@anchor{32c}
! @section @cite{GNAT.CGI} (@code{g-cgi.ads})
  
  
  @geindex GNAT.CGI (g-cgi.ads)
--- 23726,23748 ----
  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 id56}@anchor{338}@anchor{gnat_rm/the_gnat_library gnat-case-util-g-casuti-ads}@anchor{339}
! @section @code{GNAT.Case_Util} (@code{g-casuti.ads})
  
  
  @geindex GNAT.Case_Util (g-casuti.ads)
  
  @geindex Casing utilities
  
! @geindex Character handling (`@w{`}GNAT.Case_Util`@w{`})
  
  A set of simple routines for handling upper and lower casing of strings
  without the overhead of the full casing tables
! 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 id57}@anchor{33a}@anchor{gnat_rm/the_gnat_library gnat-cgi-g-cgi-ads}@anchor{33b}
! @section @code{GNAT.CGI} (@code{g-cgi.ads})
  
  
  @geindex GNAT.CGI (g-cgi.ads)
*************** builds a table whose index is the key an
*** 23447,23454 ****
  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{32d}@anchor{gnat_rm/the_gnat_library id55}@anchor{32e}
! @section @cite{GNAT.CGI.Cookie} (@code{g-cgicoo.ads})
  
  
  @geindex GNAT.CGI.Cookie (g-cgicoo.ads)
--- 23756,23763 ----
  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{33c}@anchor{gnat_rm/the_gnat_library id58}@anchor{33d}
! @section @code{GNAT.CGI.Cookie} (@code{g-cgicoo.ads})
  
  
  @geindex GNAT.CGI.Cookie (g-cgicoo.ads)
*************** Common Gateway Interface (CGI).  It expo
*** 23462,23469 ****
  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{32f}@anchor{gnat_rm/the_gnat_library id56}@anchor{330}
! @section @cite{GNAT.CGI.Debug} (@code{g-cgideb.ads})
  
  
  @geindex GNAT.CGI.Debug (g-cgideb.ads)
--- 23771,23778 ----
  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{33e}@anchor{gnat_rm/the_gnat_library id59}@anchor{33f}
! @section @code{GNAT.CGI.Debug} (@code{g-cgideb.ads})
  
  
  @geindex GNAT.CGI.Debug (g-cgideb.ads)
*************** This is a package to help debugging CGI
*** 23474,23494 ****
  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 id57}@anchor{331}@anchor{gnat_rm/the_gnat_library gnat-command-line-g-comlin-ads}@anchor{332}
! @section @cite{GNAT.Command_Line} (@code{g-comlin.ads})
  
  
  @geindex GNAT.Command_Line (g-comlin.ads)
  
  @geindex Command line
  
! Provides a high level interface to @cite{Ada.Command_Line} facilities,
  including the ability to scan for named switches with optional parameters
  and expand file names using wild card 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{333}@anchor{gnat_rm/the_gnat_library id58}@anchor{334}
! @section @cite{GNAT.Compiler_Version} (@code{g-comver.ads})
  
  
  @geindex GNAT.Compiler_Version (g-comver.ads)
--- 23783,23803 ----
  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 id60}@anchor{340}@anchor{gnat_rm/the_gnat_library gnat-command-line-g-comlin-ads}@anchor{341}
! @section @code{GNAT.Command_Line} (@code{g-comlin.ads})
  
  
  @geindex GNAT.Command_Line (g-comlin.ads)
  
  @geindex Command line
  
! Provides a high level interface to @code{Ada.Command_Line} facilities,
  including the ability to scan for named switches with optional parameters
  and expand file names using wild card 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{342}@anchor{gnat_rm/the_gnat_library id61}@anchor{343}
! @section @code{GNAT.Compiler_Version} (@code{g-comver.ads})
  
  
  @geindex GNAT.Compiler_Version (g-comver.ads)
*************** of the compiler if a consistent tool set
*** 23505,23512 ****
  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{335}@anchor{gnat_rm/the_gnat_library id59}@anchor{336}
! @section @cite{GNAT.Ctrl_C} (@code{g-ctrl_c.ads})
  
  
  @geindex GNAT.Ctrl_C (g-ctrl_c.ads)
--- 23814,23821 ----
  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{344}@anchor{gnat_rm/the_gnat_library id62}@anchor{345}
! @section @code{GNAT.Ctrl_C} (@code{g-ctrl_c.ads})
  
  
  @geindex GNAT.Ctrl_C (g-ctrl_c.ads)
*************** of a partition).
*** 23516,23523 ****
  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 id60}@anchor{337}@anchor{gnat_rm/the_gnat_library gnat-current-exception-g-curexc-ads}@anchor{338}
! @section @cite{GNAT.Current_Exception} (@code{g-curexc.ads})
  
  
  @geindex GNAT.Current_Exception (g-curexc.ads)
--- 23825,23832 ----
  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 id63}@anchor{346}@anchor{gnat_rm/the_gnat_library gnat-current-exception-g-curexc-ads}@anchor{347}
! @section @code{GNAT.Current_Exception} (@code{g-curexc.ads})
  
  
  @geindex GNAT.Current_Exception (g-curexc.ads)
*************** This is particularly useful in simulatin
*** 23533,23540 ****
  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{339}@anchor{gnat_rm/the_gnat_library id61}@anchor{33a}
! @section @cite{GNAT.Debug_Pools} (@code{g-debpoo.ads})
  
  
  @geindex GNAT.Debug_Pools (g-debpoo.ads)
--- 23842,23849 ----
  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{348}@anchor{gnat_rm/the_gnat_library id64}@anchor{349}
! @section @code{GNAT.Debug_Pools} (@code{g-debpoo.ads})
  
  
  @geindex GNAT.Debug_Pools (g-debpoo.ads)
*************** obtaining information about exceptions p
*** 23547,23557 ****
  
  Provide a debugging storage pools that helps tracking memory corruption
  problems.
! See @cite{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{33b}@anchor{gnat_rm/the_gnat_library id62}@anchor{33c}
! @section @cite{GNAT.Debug_Utilities} (@code{g-debuti.ads})
  
  
  @geindex GNAT.Debug_Utilities (g-debuti.ads)
--- 23856,23866 ----
  
  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 id65}@anchor{34a}@anchor{gnat_rm/the_gnat_library gnat-debug-utilities-g-debuti-ads}@anchor{34b}
! @section @code{GNAT.Debug_Utilities} (@code{g-debuti.ads})
  
  
  @geindex GNAT.Debug_Utilities (g-debuti.ads)
*************** to and from string images of address val
*** 23563,23570 ****
  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{33d}@anchor{gnat_rm/the_gnat_library id63}@anchor{33e}
! @section @cite{GNAT.Decode_String} (@code{g-decstr.ads})
  
  
  @geindex GNAT.Decode_String (g-decstr.ads)
--- 23872,23879 ----
  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{34c}@anchor{gnat_rm/the_gnat_library id66}@anchor{34d}
! @section @code{GNAT.Decode_String} (@code{g-decstr.ads})
  
  
  @geindex GNAT.Decode_String (g-decstr.ads)
*************** Useful in conjunction with Unicode chara
*** 23587,23594 ****
  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{33f}@anchor{gnat_rm/the_gnat_library id64}@anchor{340}
! @section @cite{GNAT.Decode_UTF8_String} (@code{g-deutst.ads})
  
  
  @geindex GNAT.Decode_UTF8_String (g-deutst.ads)
--- 23896,23903 ----
  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{34e}@anchor{gnat_rm/the_gnat_library id67}@anchor{34f}
! @section @code{GNAT.Decode_UTF8_String} (@code{g-deutst.ads})
  
  
  @geindex GNAT.Decode_UTF8_String (g-deutst.ads)
*************** preinstantiation for UTF-8. See next ent
*** 23608,23615 ****
  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 id65}@anchor{341}@anchor{gnat_rm/the_gnat_library gnat-directory-operations-g-dirope-ads}@anchor{342}
! @section @cite{GNAT.Directory_Operations} (@code{g-dirope.ads})
  
  
  @geindex GNAT.Directory_Operations (g-dirope.ads)
--- 23917,23924 ----
  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{350}@anchor{gnat_rm/the_gnat_library id68}@anchor{351}
! @section @code{GNAT.Directory_Operations} (@code{g-dirope.ads})
  
  
  @geindex GNAT.Directory_Operations (g-dirope.ads)
*************** the current directory, making new direct
*** 23621,23628 ****
  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 id66}@anchor{343}@anchor{gnat_rm/the_gnat_library gnat-directory-operations-iteration-g-diopit-ads}@anchor{344}
! @section @cite{GNAT.Directory_Operations.Iteration} (@code{g-diopit.ads})
  
  
  @geindex GNAT.Directory_Operations.Iteration (g-diopit.ads)
--- 23930,23937 ----
  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 id69}@anchor{352}@anchor{gnat_rm/the_gnat_library gnat-directory-operations-iteration-g-diopit-ads}@anchor{353}
! @section @code{GNAT.Directory_Operations.Iteration} (@code{g-diopit.ads})
  
  
  @geindex GNAT.Directory_Operations.Iteration (g-diopit.ads)
*************** A child unit of GNAT.Directory_Operation
*** 23633,23640 ****
  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 id67}@anchor{345}@anchor{gnat_rm/the_gnat_library gnat-dynamic-htables-g-dynhta-ads}@anchor{346}
! @section @cite{GNAT.Dynamic_HTables} (@code{g-dynhta.ads})
  
  
  @geindex GNAT.Dynamic_HTables (g-dynhta.ads)
--- 23942,23949 ----
  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 id70}@anchor{354}@anchor{gnat_rm/the_gnat_library gnat-dynamic-htables-g-dynhta-ads}@anchor{355}
! @section @code{GNAT.Dynamic_HTables} (@code{g-dynhta.ads})
  
  
  @geindex GNAT.Dynamic_HTables (g-dynhta.ads)
*************** A generic implementation of hash tables
*** 23645,23658 ****
  data.  Provided in two forms, a simple form with built in hash functions,
  and a more complex form in which the hash function is supplied.
  
! This package provides a facility similar to that of @cite{GNAT.HTable},
  except that this package declares a type that can be used to define
  dynamic instances of the hash table, while an instantiation of
! @cite{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{347}@anchor{gnat_rm/the_gnat_library id68}@anchor{348}
! @section @cite{GNAT.Dynamic_Tables} (@code{g-dyntab.ads})
  
  
  @geindex GNAT.Dynamic_Tables (g-dyntab.ads)
--- 23954,23967 ----
  data.  Provided in two forms, a simple form with built in hash functions,
  and a more complex form in which the hash function is supplied.
  
! This package provides a facility similar to that of @code{GNAT.HTable},
  except that this package declares a type that can be used to define
  dynamic instances of the hash table, while an instantiation of
! @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{356}@anchor{gnat_rm/the_gnat_library id71}@anchor{357}
! @section @code{GNAT.Dynamic_Tables} (@code{g-dyntab.ads})
  
  
  @geindex GNAT.Dynamic_Tables (g-dyntab.ads)
*************** dynamic instances of the hash table, whi
*** 23665,23678 ****
  A generic package providing a single dimension array abstraction where the
  length of the array can be dynamically modified.
  
! This package provides a facility similar to that of @cite{GNAT.Table},
  except that this package declares a type that can be used to define
  dynamic instances of the table, while an instantiation of
! @cite{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 id69}@anchor{349}@anchor{gnat_rm/the_gnat_library gnat-encode-string-g-encstr-ads}@anchor{34a}
! @section @cite{GNAT.Encode_String} (@code{g-encstr.ads})
  
  
  @geindex GNAT.Encode_String (g-encstr.ads)
--- 23974,23987 ----
  A generic package providing a single dimension array abstraction where the
  length of the array can be dynamically modified.
  
! This package provides a facility similar to that of @code{GNAT.Table},
  except that this package declares a type that can be used to define
  dynamic instances of the table, while an instantiation of
! @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 id72}@anchor{358}@anchor{gnat_rm/the_gnat_library gnat-encode-string-g-encstr-ads}@anchor{359}
! @section @code{GNAT.Encode_String} (@code{g-encstr.ads})
  
  
  @geindex GNAT.Encode_String (g-encstr.ads)
*************** encoding method. Useful in conjunction w
*** 23693,23700 ****
  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{34b}@anchor{gnat_rm/the_gnat_library id70}@anchor{34c}
! @section @cite{GNAT.Encode_UTF8_String} (@code{g-enutst.ads})
  
  
  @geindex GNAT.Encode_UTF8_String (g-enutst.ads)
--- 24002,24009 ----
  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{35a}@anchor{gnat_rm/the_gnat_library id73}@anchor{35b}
! @section @code{GNAT.Encode_UTF8_String} (@code{g-enutst.ads})
  
  
  @geindex GNAT.Encode_UTF8_String (g-enutst.ads)
*************** Note there is a preinstantiation for UTF
*** 23714,23721 ****
  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 id71}@anchor{34d}@anchor{gnat_rm/the_gnat_library gnat-exception-actions-g-excact-ads}@anchor{34e}
! @section @cite{GNAT.Exception_Actions} (@code{g-excact.ads})
  
  
  @geindex GNAT.Exception_Actions (g-excact.ads)
--- 24023,24030 ----
  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{35c}@anchor{gnat_rm/the_gnat_library id74}@anchor{35d}
! @section @code{GNAT.Exception_Actions} (@code{g-excact.ads})
  
  
  @geindex GNAT.Exception_Actions (g-excact.ads)
*************** for specific exceptions, or when any exc
*** 23727,23734 ****
  can be used for instance to force a core dump to ease debugging.
  
  @node GNAT Exception_Traces g-exctra ads,GNAT Exceptions g-expect ads,GNAT Exception_Actions g-excact ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id72}@anchor{34f}@anchor{gnat_rm/the_gnat_library gnat-exception-traces-g-exctra-ads}@anchor{350}
! @section @cite{GNAT.Exception_Traces} (@code{g-exctra.ads})
  
  
  @geindex GNAT.Exception_Traces (g-exctra.ads)
--- 24036,24043 ----
  can be used for instance to force a core dump to ease debugging.
  
  @node GNAT Exception_Traces g-exctra ads,GNAT Exceptions g-expect ads,GNAT Exception_Actions g-excact ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-exception-traces-g-exctra-ads}@anchor{35e}@anchor{gnat_rm/the_gnat_library id75}@anchor{35f}
! @section @code{GNAT.Exception_Traces} (@code{g-exctra.ads})
  
  
  @geindex GNAT.Exception_Traces (g-exctra.ads)
*************** Provides an interface allowing to contro
*** 23741,23748 ****
  occurrences.
  
  @node GNAT Exceptions g-expect ads,GNAT Expect g-expect ads,GNAT Exception_Traces g-exctra ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id73}@anchor{351}@anchor{gnat_rm/the_gnat_library gnat-exceptions-g-expect-ads}@anchor{352}
! @section @cite{GNAT.Exceptions} (@code{g-expect.ads})
  
  
  @geindex GNAT.Exceptions (g-expect.ads)
--- 24050,24057 ----
  occurrences.
  
  @node GNAT Exceptions g-expect ads,GNAT Expect g-expect ads,GNAT Exception_Traces g-exctra ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id76}@anchor{360}@anchor{gnat_rm/the_gnat_library gnat-exceptions-g-expect-ads}@anchor{361}
! @section @code{GNAT.Exceptions} (@code{g-expect.ads})
  
  
  @geindex GNAT.Exceptions (g-expect.ads)
*************** occurrences.
*** 23755,23769 ****
  
  Normally it is not possible to raise an exception with
  a message from a subprogram in a pure package, since the
! necessary types and subprograms are in @cite{Ada.Exceptions}
! which is not a pure unit. @cite{GNAT.Exceptions} provides a
  facility for getting around this limitation for a few
  predefined exceptions, and for example allow raising
! @cite{Constraint_Error} with a message from a pure subprogram.
  
  @node GNAT Expect g-expect ads,GNAT Expect TTY g-exptty ads,GNAT Exceptions g-expect ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-expect-g-expect-ads}@anchor{353}@anchor{gnat_rm/the_gnat_library id74}@anchor{354}
! @section @cite{GNAT.Expect} (@code{g-expect.ads})
  
  
  @geindex GNAT.Expect (g-expect.ads)
--- 24064,24078 ----
  
  Normally it is not possible to raise an exception with
  a message from a subprogram in a pure package, since the
! 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-expect ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-expect-g-expect-ads}@anchor{362}@anchor{gnat_rm/the_gnat_library id77}@anchor{363}
! @section @code{GNAT.Expect} (@code{g-expect.ads})
  
  
  @geindex GNAT.Expect (g-expect.ads)
*************** Provides a set of subprograms similar to
*** 23772,23797 ****
  with the standard Tcl Expect tool.
  It allows you to easily spawn and communicate with an external process.
  You can send commands or inputs to the process, and compare the output
! with some expected regular expression. Currently @cite{GNAT.Expect}
  is implemented on all native GNAT ports.
  It is not implemented for cross ports, and in particular is not
  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{355}@anchor{gnat_rm/the_gnat_library id75}@anchor{356}
! @section @cite{GNAT.Expect.TTY} (@code{g-exptty.ads})
  
  
  @geindex GNAT.Expect.TTY (g-exptty.ads)
  
  As GNAT.Expect but using pseudo-terminal.
! Currently @cite{GNAT.Expect.TTY} is implemented on all native GNAT
  ports. It is not implemented for cross ports, and
  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 id76}@anchor{357}@anchor{gnat_rm/the_gnat_library gnat-float-control-g-flocon-ads}@anchor{358}
! @section @cite{GNAT.Float_Control} (@code{g-flocon.ads})
  
  
  @geindex GNAT.Float_Control (g-flocon.ads)
--- 24081,24106 ----
  with the standard Tcl Expect tool.
  It allows you to easily spawn and communicate with an external process.
  You can send commands or inputs to the process, and compare the output
! with some expected regular expression. Currently @code{GNAT.Expect}
  is implemented on all native GNAT ports.
  It is not implemented for cross ports, and in particular is not
  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 id78}@anchor{364}@anchor{gnat_rm/the_gnat_library gnat-expect-tty-g-exptty-ads}@anchor{365}
! @section @code{GNAT.Expect.TTY} (@code{g-exptty.ads})
  
  
  @geindex GNAT.Expect.TTY (g-exptty.ads)
  
  As GNAT.Expect but using pseudo-terminal.
! Currently @code{GNAT.Expect.TTY} is implemented on all native GNAT
  ports. It is not implemented for cross ports, and
  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 id79}@anchor{366}@anchor{gnat_rm/the_gnat_library gnat-float-control-g-flocon-ads}@anchor{367}
! @section @code{GNAT.Float_Control} (@code{g-flocon.ads})
  
  
  @geindex GNAT.Float_Control (g-flocon.ads)
*************** library calls may cause this mode to be
*** 23804,23811 ****
  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{359}@anchor{gnat_rm/the_gnat_library id77}@anchor{35a}
! @section @cite{GNAT.Formatted_String} (@code{g-forstr.ads})
  
  
  @geindex GNAT.Formatted_String (g-forstr.ads)
--- 24113,24120 ----
  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 id80}@anchor{368}@anchor{gnat_rm/the_gnat_library gnat-formatted-string-g-forstr-ads}@anchor{369}
! @section @code{GNAT.Formatted_String} (@code{g-forstr.ads})
  
  
  @geindex GNAT.Formatted_String (g-forstr.ads)
*************** derived from Integer, Float or enumerati
*** 23819,23826 ****
  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{35b}@anchor{gnat_rm/the_gnat_library id78}@anchor{35c}
! @section @cite{GNAT.Heap_Sort} (@code{g-heasor.ads})
  
  
  @geindex GNAT.Heap_Sort (g-heasor.ads)
--- 24128,24135 ----
  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{36a}@anchor{gnat_rm/the_gnat_library id81}@anchor{36b}
! @section @code{GNAT.Heap_Sort} (@code{g-heasor.ads})
  
  
  @geindex GNAT.Heap_Sort (g-heasor.ads)
*************** access-to-procedure values.  The algorit
*** 23833,23840 ****
  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 id79}@anchor{35d}@anchor{gnat_rm/the_gnat_library gnat-heap-sort-a-g-hesora-ads}@anchor{35e}
! @section @cite{GNAT.Heap_Sort_A} (@code{g-hesora.ads})
  
  
  @geindex GNAT.Heap_Sort_A (g-hesora.ads)
--- 24142,24149 ----
  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 id82}@anchor{36c}@anchor{gnat_rm/the_gnat_library gnat-heap-sort-a-g-hesora-ads}@anchor{36d}
! @section @code{GNAT.Heap_Sort_A} (@code{g-hesora.ads})
  
  
  @geindex GNAT.Heap_Sort_A (g-hesora.ads)
*************** Provides a general implementation of hea
*** 23845,23870 ****
  data items. Move and comparison procedures are provided by passing
  access-to-procedure values.  The algorithm used is a modified heap sort
  that performs approximately N*log(N) comparisons in the worst case.
! This differs from @cite{GNAT.Heap_Sort} in having a less convenient
  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 id80}@anchor{35f}@anchor{gnat_rm/the_gnat_library gnat-heap-sort-g-g-hesorg-ads}@anchor{360}
! @section @cite{GNAT.Heap_Sort_G} (@code{g-hesorg.ads})
  
  
  @geindex GNAT.Heap_Sort_G (g-hesorg.ads)
  
  @geindex Sorting
  
! Similar to @cite{Heap_Sort_A} except that the move and sorting procedures
  are provided as generic parameters, this improves efficiency, especially
  if the procedures can be inlined, at the expense of duplicating code for
  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 id81}@anchor{361}@anchor{gnat_rm/the_gnat_library gnat-htable-g-htable-ads}@anchor{362}
! @section @cite{GNAT.HTable} (@code{g-htable.ads})
  
  
  @geindex GNAT.HTable (g-htable.ads)
--- 24154,24179 ----
  data items. Move and comparison procedures are provided by passing
  access-to-procedure values.  The algorithm used is a modified heap sort
  that performs approximately N*log(N) comparisons in the worst case.
! This differs from @code{GNAT.Heap_Sort} in having a less convenient
  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 id83}@anchor{36e}@anchor{gnat_rm/the_gnat_library gnat-heap-sort-g-g-hesorg-ads}@anchor{36f}
! @section @code{GNAT.Heap_Sort_G} (@code{g-hesorg.ads})
  
  
  @geindex GNAT.Heap_Sort_G (g-hesorg.ads)
  
  @geindex Sorting
  
! Similar to @code{Heap_Sort_A} except that the move and sorting procedures
  are provided as generic parameters, this improves efficiency, especially
  if the procedures can be inlined, at the expense of duplicating code for
  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 id84}@anchor{370}@anchor{gnat_rm/the_gnat_library gnat-htable-g-htable-ads}@anchor{371}
! @section @code{GNAT.HTable} (@code{g-htable.ads})
  
  
  @geindex GNAT.HTable (g-htable.ads)
*************** data.  Provides two approaches, one a si
*** 23876,23883 ****
  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 id82}@anchor{363}@anchor{gnat_rm/the_gnat_library gnat-io-g-io-ads}@anchor{364}
! @section @cite{GNAT.IO} (@code{g-io.ads})
  
  
  @geindex GNAT.IO (g-io.ads)
--- 24185,24192 ----
  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 id85}@anchor{372}@anchor{gnat_rm/the_gnat_library gnat-io-g-io-ads}@anchor{373}
! @section @code{GNAT.IO} (@code{g-io.ads})
  
  
  @geindex GNAT.IO (g-io.ads)
*************** Standard_Input, and writing characters,
*** 23892,23899 ****
  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 id83}@anchor{365}@anchor{gnat_rm/the_gnat_library gnat-io-aux-g-io-aux-ads}@anchor{366}
! @section @cite{GNAT.IO_Aux} (@code{g-io_aux.ads})
  
  
  @geindex GNAT.IO_Aux (g-io_aux.ads)
--- 24201,24208 ----
  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{374}@anchor{gnat_rm/the_gnat_library id86}@anchor{375}
! @section @code{GNAT.IO_Aux} (@code{g-io_aux.ads})
  
  
  @geindex GNAT.IO_Aux (g-io_aux.ads)
*************** Provides some auxiliary functions for us
*** 23906,23913 ****
  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{367}@anchor{gnat_rm/the_gnat_library id84}@anchor{368}
! @section @cite{GNAT.Lock_Files} (@code{g-locfil.ads})
  
  
  @geindex GNAT.Lock_Files (g-locfil.ads)
--- 24215,24222 ----
  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 id87}@anchor{376}@anchor{gnat_rm/the_gnat_library gnat-lock-files-g-locfil-ads}@anchor{377}
! @section @code{GNAT.Lock_Files} (@code{g-locfil.ads})
  
  
  @geindex GNAT.Lock_Files (g-locfil.ads)
*************** Provides a general interface for using f
*** 23920,23951 ****
  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 id85}@anchor{369}@anchor{gnat_rm/the_gnat_library gnat-mbbs-discrete-random-g-mbdira-ads}@anchor{36a}
! @section @cite{GNAT.MBBS_Discrete_Random} (@code{g-mbdira.ads})
  
  
  @geindex GNAT.MBBS_Discrete_Random (g-mbdira.ads)
  
  @geindex Random number generation
  
! The original implementation of @cite{Ada.Numerics.Discrete_Random}.  Uses
  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 id86}@anchor{36b}@anchor{gnat_rm/the_gnat_library gnat-mbbs-float-random-g-mbflra-ads}@anchor{36c}
! @section @cite{GNAT.MBBS_Float_Random} (@code{g-mbflra.ads})
  
  
  @geindex GNAT.MBBS_Float_Random (g-mbflra.ads)
  
  @geindex Random number generation
  
! The original implementation of @cite{Ada.Numerics.Float_Random}.  Uses
  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 id87}@anchor{36d}@anchor{gnat_rm/the_gnat_library gnat-md5-g-md5-ads}@anchor{36e}
! @section @cite{GNAT.MD5} (@code{g-md5.ads})
  
  
  @geindex GNAT.MD5 (g-md5.ads)
--- 24229,24260 ----
  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 id88}@anchor{378}@anchor{gnat_rm/the_gnat_library gnat-mbbs-discrete-random-g-mbdira-ads}@anchor{379}
! @section @code{GNAT.MBBS_Discrete_Random} (@code{g-mbdira.ads})
  
  
  @geindex GNAT.MBBS_Discrete_Random (g-mbdira.ads)
  
  @geindex Random number generation
  
! The original implementation of @code{Ada.Numerics.Discrete_Random}.  Uses
  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 id89}@anchor{37a}@anchor{gnat_rm/the_gnat_library gnat-mbbs-float-random-g-mbflra-ads}@anchor{37b}
! @section @code{GNAT.MBBS_Float_Random} (@code{g-mbflra.ads})
  
  
  @geindex GNAT.MBBS_Float_Random (g-mbflra.ads)
  
  @geindex Random number generation
  
! The original implementation of @code{Ada.Numerics.Float_Random}.  Uses
  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 id90}@anchor{37c}@anchor{gnat_rm/the_gnat_library gnat-md5-g-md5-ads}@anchor{37d}
! @section @code{GNAT.MD5} (@code{g-md5.ads})
  
  
  @geindex GNAT.MD5 (g-md5.ads)
*************** the HMAC-MD5 message authentication func
*** 23957,23964 ****
  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 id88}@anchor{36f}@anchor{gnat_rm/the_gnat_library gnat-memory-dump-g-memdum-ads}@anchor{370}
! @section @cite{GNAT.Memory_Dump} (@code{g-memdum.ads})
  
  
  @geindex GNAT.Memory_Dump (g-memdum.ads)
--- 24266,24273 ----
  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 id91}@anchor{37e}@anchor{gnat_rm/the_gnat_library gnat-memory-dump-g-memdum-ads}@anchor{37f}
! @section @code{GNAT.Memory_Dump} (@code{g-memdum.ads})
  
  
  @geindex GNAT.Memory_Dump (g-memdum.ads)
*************** standard output or standard error files.
*** 23970,23977 ****
  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 id89}@anchor{371}@anchor{gnat_rm/the_gnat_library gnat-most-recent-exception-g-moreex-ads}@anchor{372}
! @section @cite{GNAT.Most_Recent_Exception} (@code{g-moreex.ads})
  
  
  @geindex GNAT.Most_Recent_Exception (g-moreex.ads)
--- 24279,24286 ----
  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 id92}@anchor{380}@anchor{gnat_rm/the_gnat_library gnat-most-recent-exception-g-moreex-ads}@anchor{381}
! @section @code{GNAT.Most_Recent_Exception} (@code{g-moreex.ads})
  
  
  @geindex GNAT.Most_Recent_Exception (g-moreex.ads)
*************** various logging purposes, including dupl
*** 23984,23991 ****
  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 id90}@anchor{373}@anchor{gnat_rm/the_gnat_library gnat-os-lib-g-os-lib-ads}@anchor{374}
! @section @cite{GNAT.OS_Lib} (@code{g-os_lib.ads})
  
  
  @geindex GNAT.OS_Lib (g-os_lib.ads)
--- 24293,24300 ----
  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{382}@anchor{gnat_rm/the_gnat_library id93}@anchor{383}
! @section @code{GNAT.OS_Lib} (@code{g-os_lib.ads})
  
  
  @geindex GNAT.OS_Lib (g-os_lib.ads)
*************** including a portable spawn procedure, an
*** 24000,24007 ****
  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{375}@anchor{gnat_rm/the_gnat_library id91}@anchor{376}
! @section @cite{GNAT.Perfect_Hash_Generators} (@code{g-pehage.ads})
  
  
  @geindex GNAT.Perfect_Hash_Generators (g-pehage.ads)
--- 24309,24316 ----
  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{384}@anchor{gnat_rm/the_gnat_library id94}@anchor{385}
! @section @code{GNAT.Perfect_Hash_Generators} (@code{g-pehage.ads})
  
  
  @geindex GNAT.Perfect_Hash_Generators (g-pehage.ads)
*************** hashcode are in the same order. These ha
*** 24018,24025 ****
  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{377}@anchor{gnat_rm/the_gnat_library id92}@anchor{378}
! @section @cite{GNAT.Random_Numbers} (@code{g-rannum.ads})
  
  
  @geindex GNAT.Random_Numbers (g-rannum.ads)
--- 24327,24334 ----
  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{386}@anchor{gnat_rm/the_gnat_library id95}@anchor{387}
! @section @code{GNAT.Random_Numbers} (@code{g-rannum.ads})
  
  
  @geindex GNAT.Random_Numbers (g-rannum.ads)
*************** Provides random number capabilities whic
*** 24030,24037 ****
  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{24a}@anchor{gnat_rm/the_gnat_library id93}@anchor{379}
! @section @cite{GNAT.Regexp} (@code{g-regexp.ads})
  
  
  @geindex GNAT.Regexp (g-regexp.ads)
--- 24339,24346 ----
  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{251}@anchor{gnat_rm/the_gnat_library id96}@anchor{388}
! @section @code{GNAT.Regexp} (@code{g-regexp.ads})
  
  
  @geindex GNAT.Regexp (g-regexp.ads)
*************** simplest of the three pattern matching p
*** 24046,24053 ****
  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 id94}@anchor{37a}@anchor{gnat_rm/the_gnat_library gnat-registry-g-regist-ads}@anchor{37b}
! @section @cite{GNAT.Registry} (@code{g-regist.ads})
  
  
  @geindex GNAT.Registry (g-regist.ads)
--- 24355,24362 ----
  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{389}@anchor{gnat_rm/the_gnat_library id97}@anchor{38a}
! @section @code{GNAT.Registry} (@code{g-regist.ads})
  
  
  @geindex GNAT.Registry (g-regist.ads)
*************** registry API, but at a lower level of ab
*** 24060,24067 ****
  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{37c}@anchor{gnat_rm/the_gnat_library id95}@anchor{37d}
! @section @cite{GNAT.Regpat} (@code{g-regpat.ads})
  
  
  @geindex GNAT.Regpat (g-regpat.ads)
--- 24369,24376 ----
  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 id98}@anchor{38b}@anchor{gnat_rm/the_gnat_library gnat-regpat-g-regpat-ads}@anchor{38c}
! @section @code{GNAT.Regpat} (@code{g-regpat.ads})
  
  
  @geindex GNAT.Regpat (g-regpat.ads)
*************** from the original V7 style regular expre
*** 24075,24082 ****
  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 id96}@anchor{37e}@anchor{gnat_rm/the_gnat_library gnat-rewrite-data-g-rewdat-ads}@anchor{37f}
! @section @cite{GNAT.Rewrite_Data} (@code{g-rewdat.ads})
  
  
  @geindex GNAT.Rewrite_Data (g-rewdat.ads)
--- 24384,24391 ----
  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 id99}@anchor{38d}@anchor{gnat_rm/the_gnat_library gnat-rewrite-data-g-rewdat-ads}@anchor{38e}
! @section @code{GNAT.Rewrite_Data} (@code{g-rewdat.ads})
  
  
  @geindex GNAT.Rewrite_Data (g-rewdat.ads)
*************** full content to be processed is not load
*** 24089,24096 ****
  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{380}@anchor{gnat_rm/the_gnat_library id97}@anchor{381}
! @section @cite{GNAT.Secondary_Stack_Info} (@code{g-sestin.ads})
  
  
  @geindex GNAT.Secondary_Stack_Info (g-sestin.ads)
--- 24398,24405 ----
  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 id100}@anchor{38f}@anchor{gnat_rm/the_gnat_library gnat-secondary-stack-info-g-sestin-ads}@anchor{390}
! @section @code{GNAT.Secondary_Stack_Info} (@code{g-sestin.ads})
  
  
  @geindex GNAT.Secondary_Stack_Info (g-sestin.ads)
*************** Provide the capability to query the high
*** 24101,24108 ****
  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 id98}@anchor{382}@anchor{gnat_rm/the_gnat_library gnat-semaphores-g-semaph-ads}@anchor{383}
! @section @cite{GNAT.Semaphores} (@code{g-semaph.ads})
  
  
  @geindex GNAT.Semaphores (g-semaph.ads)
--- 24410,24417 ----
  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 id101}@anchor{391}@anchor{gnat_rm/the_gnat_library gnat-semaphores-g-semaph-ads}@anchor{392}
! @section @code{GNAT.Semaphores} (@code{g-semaph.ads})
  
  
  @geindex GNAT.Semaphores (g-semaph.ads)
*************** secondary stack.
*** 24112,24119 ****
  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{384}@anchor{gnat_rm/the_gnat_library id99}@anchor{385}
! @section @cite{GNAT.Serial_Communications} (@code{g-sercom.ads})
  
  
  @geindex GNAT.Serial_Communications (g-sercom.ads)
--- 24421,24428 ----
  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{393}@anchor{gnat_rm/the_gnat_library id102}@anchor{394}
! @section @code{GNAT.Serial_Communications} (@code{g-sercom.ads})
  
  
  @geindex GNAT.Serial_Communications (g-sercom.ads)
*************** Provides a simple interface to send and
*** 24124,24131 ****
  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{386}@anchor{gnat_rm/the_gnat_library id100}@anchor{387}
! @section @cite{GNAT.SHA1} (@code{g-sha1.ads})
  
  
  @geindex GNAT.SHA1 (g-sha1.ads)
--- 24433,24440 ----
  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{395}@anchor{gnat_rm/the_gnat_library id103}@anchor{396}
! @section @code{GNAT.SHA1} (@code{g-sha1.ads})
  
  
  @geindex GNAT.SHA1 (g-sha1.ads)
*************** and RFC 3174, and the HMAC-SHA1 message
*** 24137,24144 ****
  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 id101}@anchor{388}@anchor{gnat_rm/the_gnat_library gnat-sha224-g-sha224-ads}@anchor{389}
! @section @cite{GNAT.SHA224} (@code{g-sha224.ads})
  
  
  @geindex GNAT.SHA224 (g-sha224.ads)
--- 24446,24453 ----
  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{397}@anchor{gnat_rm/the_gnat_library id104}@anchor{398}
! @section @code{GNAT.SHA224} (@code{g-sha224.ads})
  
  
  @geindex GNAT.SHA224 (g-sha224.ads)
*************** and the HMAC-SHA224 message authenticati
*** 24150,24157 ****
  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 id102}@anchor{38a}@anchor{gnat_rm/the_gnat_library gnat-sha256-g-sha256-ads}@anchor{38b}
! @section @cite{GNAT.SHA256} (@code{g-sha256.ads})
  
  
  @geindex GNAT.SHA256 (g-sha256.ads)
--- 24459,24466 ----
  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 id105}@anchor{399}@anchor{gnat_rm/the_gnat_library gnat-sha256-g-sha256-ads}@anchor{39a}
! @section @code{GNAT.SHA256} (@code{g-sha256.ads})
  
  
  @geindex GNAT.SHA256 (g-sha256.ads)
*************** and the HMAC-SHA256 message authenticati
*** 24163,24170 ****
  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 id103}@anchor{38c}@anchor{gnat_rm/the_gnat_library gnat-sha384-g-sha384-ads}@anchor{38d}
! @section @cite{GNAT.SHA384} (@code{g-sha384.ads})
  
  
  @geindex GNAT.SHA384 (g-sha384.ads)
--- 24472,24479 ----
  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{39b}@anchor{gnat_rm/the_gnat_library id106}@anchor{39c}
! @section @code{GNAT.SHA384} (@code{g-sha384.ads})
  
  
  @geindex GNAT.SHA384 (g-sha384.ads)
*************** and the HMAC-SHA384 message authenticati
*** 24176,24183 ****
  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{38e}@anchor{gnat_rm/the_gnat_library id104}@anchor{38f}
! @section @cite{GNAT.SHA512} (@code{g-sha512.ads})
  
  
  @geindex GNAT.SHA512 (g-sha512.ads)
--- 24485,24492 ----
  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{39d}@anchor{gnat_rm/the_gnat_library id107}@anchor{39e}
! @section @code{GNAT.SHA512} (@code{g-sha512.ads})
  
  
  @geindex GNAT.SHA512 (g-sha512.ads)
*************** and the HMAC-SHA512 message authenticati
*** 24189,24196 ****
  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{390}@anchor{gnat_rm/the_gnat_library id105}@anchor{391}
! @section @cite{GNAT.Signals} (@code{g-signal.ads})
  
  
  @geindex GNAT.Signals (g-signal.ads)
--- 24498,24505 ----
  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{39f}@anchor{gnat_rm/the_gnat_library id108}@anchor{3a0}
! @section @code{GNAT.Signals} (@code{g-signal.ads})
  
  
  @geindex GNAT.Signals (g-signal.ads)
*************** Provides the ability to manipulate the b
*** 24201,24208 ****
  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{392}@anchor{gnat_rm/the_gnat_library id106}@anchor{393}
! @section @cite{GNAT.Sockets} (@code{g-socket.ads})
  
  
  @geindex GNAT.Sockets (g-socket.ads)
--- 24510,24517 ----
  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 id109}@anchor{3a1}@anchor{gnat_rm/the_gnat_library gnat-sockets-g-socket-ads}@anchor{3a2}
! @section @code{GNAT.Sockets} (@code{g-socket.ads})
  
  
  @geindex GNAT.Sockets (g-socket.ads)
*************** targets.
*** 24211,24223 ****
  
  A high level and portable interface to develop sockets based applications.
  This package is based on the sockets thin binding found in
! @cite{GNAT.Sockets.Thin}. Currently @cite{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{394}@anchor{gnat_rm/the_gnat_library id107}@anchor{395}
! @section @cite{GNAT.Source_Info} (@code{g-souinf.ads})
  
  
  @geindex GNAT.Source_Info (g-souinf.ads)
--- 24520,24532 ----
  
  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{3a3}@anchor{gnat_rm/the_gnat_library id110}@anchor{3a4}
! @section @code{GNAT.Source_Info} (@code{g-souinf.ads})
  
  
  @geindex GNAT.Source_Info (g-souinf.ads)
*************** the LynxOS cross port.
*** 24227,24237 ****
  Provides subprograms that give access to source code information known at
  compile time, such as the current file name and line number. Also provides
  subprograms yielding the date and time of the current compilation (like the
! C macros @cite{__DATE__} and @cite{__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{396}@anchor{gnat_rm/the_gnat_library id108}@anchor{397}
! @section @cite{GNAT.Spelling_Checker} (@code{g-speche.ads})
  
  
  @geindex GNAT.Spelling_Checker (g-speche.ads)
--- 24536,24546 ----
  Provides subprograms that give access to source code information known at
  compile time, such as the current file name and line number. Also provides
  subprograms yielding the date and time of the current compilation (like the
! 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{3a5}@anchor{gnat_rm/the_gnat_library id111}@anchor{3a6}
! @section @code{GNAT.Spelling_Checker} (@code{g-speche.ads})
  
  
  @geindex GNAT.Spelling_Checker (g-speche.ads)
*************** Provides a function for determining whet
*** 24242,24249 ****
  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 id109}@anchor{398}@anchor{gnat_rm/the_gnat_library gnat-spelling-checker-generic-g-spchge-ads}@anchor{399}
! @section @cite{GNAT.Spelling_Checker_Generic} (@code{g-spchge.ads})
  
  
  @geindex GNAT.Spelling_Checker_Generic (g-spchge.ads)
--- 24551,24558 ----
  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 id112}@anchor{3a7}@anchor{gnat_rm/the_gnat_library gnat-spelling-checker-generic-g-spchge-ads}@anchor{3a8}
! @section @code{GNAT.Spelling_Checker_Generic} (@code{g-spchge.ads})
  
  
  @geindex GNAT.Spelling_Checker_Generic (g-spchge.ads)
*************** determining whether one string is a plau
*** 24255,24262 ****
  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 id110}@anchor{39a}@anchor{gnat_rm/the_gnat_library gnat-spitbol-patterns-g-spipat-ads}@anchor{39b}
! @section @cite{GNAT.Spitbol.Patterns} (@code{g-spipat.ads})
  
  
  @geindex GNAT.Spitbol.Patterns (g-spipat.ads)
--- 24564,24571 ----
  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 id113}@anchor{3a9}@anchor{gnat_rm/the_gnat_library gnat-spitbol-patterns-g-spipat-ads}@anchor{3aa}
! @section @code{GNAT.Spitbol.Patterns} (@code{g-spipat.ads})
  
  
  @geindex GNAT.Spitbol.Patterns (g-spipat.ads)
*************** the SNOBOL4 dynamic pattern construction
*** 24271,24278 ****
  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 id111}@anchor{39c}@anchor{gnat_rm/the_gnat_library gnat-spitbol-g-spitbo-ads}@anchor{39d}
! @section @cite{GNAT.Spitbol} (@code{g-spitbo.ads})
  
  
  @geindex GNAT.Spitbol (g-spitbo.ads)
--- 24580,24587 ----
  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{3ab}@anchor{gnat_rm/the_gnat_library id114}@anchor{3ac}
! @section @code{GNAT.Spitbol} (@code{g-spitbo.ads})
  
  
  @geindex GNAT.Spitbol (g-spitbo.ads)
*************** useful for constructing arbitrary mappin
*** 24286,24293 ****
  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 id112}@anchor{39e}@anchor{gnat_rm/the_gnat_library gnat-spitbol-table-boolean-g-sptabo-ads}@anchor{39f}
! @section @cite{GNAT.Spitbol.Table_Boolean} (@code{g-sptabo.ads})
  
  
  @geindex GNAT.Spitbol.Table_Boolean (g-sptabo.ads)
--- 24595,24602 ----
  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{3ad}@anchor{gnat_rm/the_gnat_library id115}@anchor{3ae}
! @section @code{GNAT.Spitbol.Table_Boolean} (@code{g-sptabo.ads})
  
  
  @geindex GNAT.Spitbol.Table_Boolean (g-sptabo.ads)
*************** the SNOBOL4 TABLE function.
*** 24296,24308 ****
  
  @geindex SPITBOL Tables
  
! A library level of instantiation of @cite{GNAT.Spitbol.Patterns.Table}
! for type @cite{Standard.Boolean}, giving an implementation of sets of
  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 id113}@anchor{3a0}@anchor{gnat_rm/the_gnat_library gnat-spitbol-table-integer-g-sptain-ads}@anchor{3a1}
! @section @cite{GNAT.Spitbol.Table_Integer} (@code{g-sptain.ads})
  
  
  @geindex GNAT.Spitbol.Table_Integer (g-sptain.ads)
--- 24605,24617 ----
  
  @geindex SPITBOL Tables
  
! A library level of instantiation of @code{GNAT.Spitbol.Patterns.Table}
! for type @code{Standard.Boolean}, giving an implementation of sets of
  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{3af}@anchor{gnat_rm/the_gnat_library id116}@anchor{3b0}
! @section @code{GNAT.Spitbol.Table_Integer} (@code{g-sptain.ads})
  
  
  @geindex GNAT.Spitbol.Table_Integer (g-sptain.ads)
*************** string values.
*** 24313,24325 ****
  
  @geindex SPITBOL Tables
  
! A library level of instantiation of @cite{GNAT.Spitbol.Patterns.Table}
! for type @cite{Standard.Integer}, giving an implementation of maps
  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 id114}@anchor{3a2}@anchor{gnat_rm/the_gnat_library gnat-spitbol-table-vstring-g-sptavs-ads}@anchor{3a3}
! @section @cite{GNAT.Spitbol.Table_VString} (@code{g-sptavs.ads})
  
  
  @geindex GNAT.Spitbol.Table_VString (g-sptavs.ads)
--- 24622,24634 ----
  
  @geindex SPITBOL Tables
  
! A library level of instantiation of @code{GNAT.Spitbol.Patterns.Table}
! for type @code{Standard.Integer}, giving an implementation of maps
  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 id117}@anchor{3b1}@anchor{gnat_rm/the_gnat_library gnat-spitbol-table-vstring-g-sptavs-ads}@anchor{3b2}
! @section @code{GNAT.Spitbol.Table_VString} (@code{g-sptavs.ads})
  
  
  @geindex GNAT.Spitbol.Table_VString (g-sptavs.ads)
*************** from string to integer values.
*** 24330,24342 ****
  
  @geindex SPITBOL Tables
  
! A library level of instantiation of @cite{GNAT.Spitbol.Patterns.Table} for
  a variable length string type, giving an implementation of general
  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 id115}@anchor{3a4}@anchor{gnat_rm/the_gnat_library gnat-sse-g-sse-ads}@anchor{3a5}
! @section @cite{GNAT.SSE} (@code{g-sse.ads})
  
  
  @geindex GNAT.SSE (g-sse.ads)
--- 24639,24651 ----
  
  @geindex SPITBOL Tables
  
! A library level of instantiation of @code{GNAT.Spitbol.Patterns.Table} for
  a variable length string type, giving an implementation of general
  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 id118}@anchor{3b3}@anchor{gnat_rm/the_gnat_library gnat-sse-g-sse-ads}@anchor{3b4}
! @section @code{GNAT.SSE} (@code{g-sse.ads})
  
  
  @geindex GNAT.SSE (g-sse.ads)
*************** targets.  It exposes vector component ty
*** 24347,24354 ****
  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{3a6}@anchor{gnat_rm/the_gnat_library id116}@anchor{3a7}
! @section @cite{GNAT.SSE.Vector_Types} (@code{g-ssvety.ads})
  
  
  @geindex GNAT.SSE.Vector_Types (g-ssvety.ads)
--- 24656,24663 ----
  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{3b5}@anchor{gnat_rm/the_gnat_library id119}@anchor{3b6}
! @section @code{GNAT.SSE.Vector_Types} (@code{g-ssvety.ads})
  
  
  @geindex GNAT.SSE.Vector_Types (g-ssvety.ads)
*************** introduction to the binding contents and
*** 24356,24363 ****
  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{3a8}@anchor{gnat_rm/the_gnat_library id117}@anchor{3a9}
! @section @cite{GNAT.String_Hash} (@code{g-strhas.ads})
  
  
  @geindex GNAT.String_Hash (g-strhas.ads)
--- 24665,24672 ----
  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{3b7}@anchor{gnat_rm/the_gnat_library id120}@anchor{3b8}
! @section @code{GNAT.String_Hash} (@code{g-strhas.ads})
  
  
  @geindex GNAT.String_Hash (g-strhas.ads)
*************** Provides a generic hash function working
*** 24368,24375 ****
  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 id118}@anchor{3aa}@anchor{gnat_rm/the_gnat_library gnat-strings-g-string-ads}@anchor{3ab}
! @section @cite{GNAT.Strings} (@code{g-string.ads})
  
  
  @geindex GNAT.Strings (g-string.ads)
--- 24677,24684 ----
  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{3b9}@anchor{gnat_rm/the_gnat_library id121}@anchor{3ba}
! @section @code{GNAT.Strings} (@code{g-string.ads})
  
  
  @geindex GNAT.Strings (g-string.ads)
*************** Common String access types and related s
*** 24378,24385 ****
  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{3ac}@anchor{gnat_rm/the_gnat_library id119}@anchor{3ad}
! @section @cite{GNAT.String_Split} (@code{g-strspl.ads})
  
  
  @geindex GNAT.String_Split (g-strspl.ads)
--- 24687,24694 ----
  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{3bb}@anchor{gnat_rm/the_gnat_library id122}@anchor{3bc}
! @section @code{GNAT.String_Split} (@code{g-strspl.ads})
  
  
  @geindex GNAT.String_Split (g-strspl.ads)
*************** defines a string access and an array of
*** 24389,24399 ****
  Useful string manipulation routines: given a set of separators, split
  a string wherever the separators appear, and provide direct access
  to the resulting slices. This package is instantiated from
! @cite{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{3ae}@anchor{gnat_rm/the_gnat_library id120}@anchor{3af}
! @section @cite{GNAT.Table} (@code{g-table.ads})
  
  
  @geindex GNAT.Table (g-table.ads)
--- 24698,24708 ----
  Useful string manipulation routines: given a set of separators, split
  a string wherever the separators appear, and provide direct access
  to the resulting slices. This package is instantiated from
! @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{3bd}@anchor{gnat_rm/the_gnat_library id123}@anchor{3be}
! @section @code{GNAT.Table} (@code{g-table.ads})
  
  
  @geindex GNAT.Table (g-table.ads)
*************** to the resulting slices. This package is
*** 24406,24419 ****
  A generic package providing a single dimension array abstraction where the
  length of the array can be dynamically modified.
  
! This package provides a facility similar to that of @cite{GNAT.Dynamic_Tables},
  except that this package declares a single instance of the table type,
! while an instantiation of @cite{GNAT.Dynamic_Tables} creates a type that can be
  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{3b0}@anchor{gnat_rm/the_gnat_library id121}@anchor{3b1}
! @section @cite{GNAT.Task_Lock} (@code{g-tasloc.ads})
  
  
  @geindex GNAT.Task_Lock (g-tasloc.ads)
--- 24715,24728 ----
  A generic package providing a single dimension array abstraction where the
  length of the array can be dynamically modified.
  
! This package provides a facility similar to that of @code{GNAT.Dynamic_Tables},
  except that this package declares a single instance of the table type,
! while an instantiation of @code{GNAT.Dynamic_Tables} creates a type that can be
  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 id124}@anchor{3bf}@anchor{gnat_rm/the_gnat_library gnat-task-lock-g-tasloc-ads}@anchor{3c0}
! @section @code{GNAT.Task_Lock} (@code{g-tasloc.ads})
  
  
  @geindex GNAT.Task_Lock (g-tasloc.ads)
*************** single global task lock.  Appropriate fo
*** 24429,24436 ****
  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{3b2}@anchor{gnat_rm/the_gnat_library id122}@anchor{3b3}
! @section @cite{GNAT.Time_Stamp} (@code{g-timsta.ads})
  
  
  @geindex GNAT.Time_Stamp (g-timsta.ads)
--- 24738,24745 ----
  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 id125}@anchor{3c1}@anchor{gnat_rm/the_gnat_library gnat-time-stamp-g-timsta-ads}@anchor{3c2}
! @section @code{GNAT.Time_Stamp} (@code{g-timsta.ads})
  
  
  @geindex GNAT.Time_Stamp (g-timsta.ads)
*************** represents the current date and time in
*** 24444,24451 ****
  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{3b4}@anchor{gnat_rm/the_gnat_library id123}@anchor{3b5}
! @section @cite{GNAT.Threads} (@code{g-thread.ads})
  
  
  @geindex GNAT.Threads (g-thread.ads)
--- 24753,24760 ----
  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{3c3}@anchor{gnat_rm/the_gnat_library id126}@anchor{3c4}
! @section @code{GNAT.Threads} (@code{g-thread.ads})
  
  
  @geindex GNAT.Threads (g-thread.ads)
*************** further details if your program has thre
*** 24461,24468 ****
  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 id124}@anchor{3b6}@anchor{gnat_rm/the_gnat_library gnat-traceback-g-traceb-ads}@anchor{3b7}
! @section @cite{GNAT.Traceback} (@code{g-traceb.ads})
  
  
  @geindex GNAT.Traceback (g-traceb.ads)
--- 24770,24777 ----
  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 id127}@anchor{3c5}@anchor{gnat_rm/the_gnat_library gnat-traceback-g-traceb-ads}@anchor{3c6}
! @section @code{GNAT.Traceback} (@code{g-traceb.ads})
  
  
  @geindex GNAT.Traceback (g-traceb.ads)
*************** Provides a facility for obtaining non-sy
*** 24473,24480 ****
  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{3b8}@anchor{gnat_rm/the_gnat_library id125}@anchor{3b9}
! @section @cite{GNAT.Traceback.Symbolic} (@code{g-trasym.ads})
  
  
  @geindex GNAT.Traceback.Symbolic (g-trasym.ads)
--- 24782,24789 ----
  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{3c7}@anchor{gnat_rm/the_gnat_library id128}@anchor{3c8}
! @section @code{GNAT.Traceback.Symbolic} (@code{g-trasym.ads})
  
  
  @geindex GNAT.Traceback.Symbolic (g-trasym.ads)
*************** in various debugging situations.
*** 24482,24489 ****
  @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 id126}@anchor{3ba}@anchor{gnat_rm/the_gnat_library gnat-utf-32-g-table-ads}@anchor{3bb}
! @section @cite{GNAT.UTF_32} (@code{g-table.ads})
  
  
  @geindex GNAT.UTF_32 (g-table.ads)
--- 24791,24798 ----
  @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 id129}@anchor{3c9}@anchor{gnat_rm/the_gnat_library gnat-utf-32-g-table-ads}@anchor{3ca}
! @section @code{GNAT.UTF_32} (@code{g-table.ads})
  
  
  @geindex GNAT.UTF_32 (g-table.ads)
*************** in various debugging situations.
*** 24491,24499 ****
  @geindex Wide character codes
  
  This is a package intended to be used in conjunction with the
! @cite{Wide_Character} type in Ada 95 and the
! @cite{Wide_Wide_Character} type in Ada 2005 (available
! in @cite{GNAT} in Ada 2005 mode). This package contains
  Unicode categorization routines, as well as lexical
  categorization routines corresponding to the Ada 2005
  lexical rules for identifiers and strings, and also a
--- 24800,24808 ----
  @geindex Wide character codes
  
  This is a package intended to be used in conjunction with the
! @code{Wide_Character} type in Ada 95 and the
! @code{Wide_Wide_Character} type in Ada 2005 (available
! in @code{GNAT} in Ada 2005 mode). This package contains
  Unicode categorization routines, as well as lexical
  categorization routines corresponding to the Ada 2005
  lexical rules for identifiers and strings, and also a
*************** lower case to upper case fold routine co
*** 24501,24508 ****
  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{3bc}@anchor{gnat_rm/the_gnat_library id127}@anchor{3bd}
! @section @cite{GNAT.Wide_Spelling_Checker} (@code{g-u3spch.ads})
  
  
  @geindex GNAT.Wide_Spelling_Checker (g-u3spch.ads)
--- 24810,24817 ----
  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{3cb}@anchor{gnat_rm/the_gnat_library id130}@anchor{3cc}
! @section @code{GNAT.Wide_Spelling_Checker} (@code{g-u3spch.ads})
  
  
  @geindex GNAT.Wide_Spelling_Checker (g-u3spch.ads)
*************** near misspelling of another wide wide st
*** 24514,24521 ****
  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{3be}@anchor{gnat_rm/the_gnat_library id128}@anchor{3bf}
! @section @cite{GNAT.Wide_Spelling_Checker} (@code{g-wispch.ads})
  
  
  @geindex GNAT.Wide_Spelling_Checker (g-wispch.ads)
--- 24823,24830 ----
  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{3cd}@anchor{gnat_rm/the_gnat_library id131}@anchor{3ce}
! @section @code{GNAT.Wide_Spelling_Checker} (@code{g-wispch.ads})
  
  
  @geindex GNAT.Wide_Spelling_Checker (g-wispch.ads)
*************** Provides a function for determining whet
*** 24526,24533 ****
  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{3c0}@anchor{gnat_rm/the_gnat_library id129}@anchor{3c1}
! @section @cite{GNAT.Wide_String_Split} (@code{g-wistsp.ads})
  
  
  @geindex GNAT.Wide_String_Split (g-wistsp.ads)
--- 24835,24842 ----
  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 id132}@anchor{3cf}@anchor{gnat_rm/the_gnat_library gnat-wide-string-split-g-wistsp-ads}@anchor{3d0}
! @section @code{GNAT.Wide_String_Split} (@code{g-wistsp.ads})
  
  
  @geindex GNAT.Wide_String_Split (g-wistsp.ads)
*************** near misspelling of another wide string.
*** 24537,24547 ****
  Useful wide string manipulation routines: given a set of separators, split
  a wide string wherever the separators appear, and provide direct access
  to the resulting slices. This package is instantiated from
! @cite{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{3c2}@anchor{gnat_rm/the_gnat_library id130}@anchor{3c3}
! @section @cite{GNAT.Wide_Wide_Spelling_Checker} (@code{g-zspche.ads})
  
  
  @geindex GNAT.Wide_Wide_Spelling_Checker (g-zspche.ads)
--- 24846,24856 ----
  Useful wide string manipulation routines: given a set of separators, split
  a wide string wherever the separators appear, and provide direct access
  to the resulting slices. This package is instantiated from
! @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{3d1}@anchor{gnat_rm/the_gnat_library id133}@anchor{3d2}
! @section @code{GNAT.Wide_Wide_Spelling_Checker} (@code{g-zspche.ads})
  
  
  @geindex GNAT.Wide_Wide_Spelling_Checker (g-zspche.ads)
*************** Provides a function for determining whet
*** 24552,24559 ****
  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{3c4}@anchor{gnat_rm/the_gnat_library id131}@anchor{3c5}
! @section @cite{GNAT.Wide_Wide_String_Split} (@code{g-zistsp.ads})
  
  
  @geindex GNAT.Wide_Wide_String_Split (g-zistsp.ads)
--- 24861,24868 ----
  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{3d3}@anchor{gnat_rm/the_gnat_library id134}@anchor{3d4}
! @section @code{GNAT.Wide_Wide_String_Split} (@code{g-zistsp.ads})
  
  
  @geindex GNAT.Wide_Wide_String_Split (g-zistsp.ads)
*************** near misspelling of another wide wide st
*** 24563,24573 ****
  Useful wide wide string manipulation routines: given a set of separators, split
  a wide wide string wherever the separators appear, and provide direct access
  to the resulting slices. This package is instantiated from
! @cite{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 interfaces-c-extensions-i-cexten-ads}@anchor{3c6}@anchor{gnat_rm/the_gnat_library id132}@anchor{3c7}
! @section @cite{Interfaces.C.Extensions} (@code{i-cexten.ads})
  
  
  @geindex Interfaces.C.Extensions (i-cexten.ads)
--- 24872,24882 ----
  Useful wide wide string manipulation routines: given a set of separators, split
  a wide wide string wherever the separators appear, and provide direct access
  to the resulting slices. This package is instantiated from
! @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 interfaces-c-extensions-i-cexten-ads}@anchor{3d5}@anchor{gnat_rm/the_gnat_library id135}@anchor{3d6}
! @section @code{Interfaces.C.Extensions} (@code{i-cexten.ads})
  
  
  @geindex Interfaces.C.Extensions (i-cexten.ads)
*************** for use with either manually or automati
*** 24577,24584 ****
  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 id133}@anchor{3c8}@anchor{gnat_rm/the_gnat_library interfaces-c-streams-i-cstrea-ads}@anchor{3c9}
! @section @cite{Interfaces.C.Streams} (@code{i-cstrea.ads})
  
  
  @geindex Interfaces.C.Streams (i-cstrea.ads)
--- 24886,24893 ----
  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 interfaces-c-streams-i-cstrea-ads}@anchor{3d7}@anchor{gnat_rm/the_gnat_library id136}@anchor{3d8}
! @section @code{Interfaces.C.Streams} (@code{i-cstrea.ads})
  
  
  @geindex Interfaces.C.Streams (i-cstrea.ads)
*************** This package is a binding for the most c
*** 24590,24597 ****
  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 interfaces-packed-decimal-i-pacdec-ads}@anchor{3ca}@anchor{gnat_rm/the_gnat_library id134}@anchor{3cb}
! @section @cite{Interfaces.Packed_Decimal} (@code{i-pacdec.ads})
  
  
  @geindex Interfaces.Packed_Decimal (i-pacdec.ads)
--- 24899,24906 ----
  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 interfaces-packed-decimal-i-pacdec-ads}@anchor{3d9}@anchor{gnat_rm/the_gnat_library id137}@anchor{3da}
! @section @code{Interfaces.Packed_Decimal} (@code{i-pacdec.ads})
  
  
  @geindex Interfaces.Packed_Decimal (i-pacdec.ads)
*************** from a packed decimal format compatible
*** 24605,24612 ****
  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 interfaces-vxworks-i-vxwork-ads}@anchor{3cc}@anchor{gnat_rm/the_gnat_library id135}@anchor{3cd}
! @section @cite{Interfaces.VxWorks} (@code{i-vxwork.ads})
  
  
  @geindex Interfaces.VxWorks (i-vxwork.ads)
--- 24914,24921 ----
  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 id138}@anchor{3db}@anchor{gnat_rm/the_gnat_library interfaces-vxworks-i-vxwork-ads}@anchor{3dc}
! @section @code{Interfaces.VxWorks} (@code{i-vxwork.ads})
  
  
  @geindex Interfaces.VxWorks (i-vxwork.ads)
*************** In particular, it interfaces with the
*** 24621,24628 ****
  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 interfaces-vxworks-int-connection-i-vxinco-ads}@anchor{3ce}@anchor{gnat_rm/the_gnat_library id136}@anchor{3cf}
! @section @cite{Interfaces.VxWorks.Int_Connection} (@code{i-vxinco.ads})
  
  
  @geindex Interfaces.VxWorks.Int_Connection (i-vxinco.ads)
--- 24930,24937 ----
  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 interfaces-vxworks-int-connection-i-vxinco-ads}@anchor{3dd}@anchor{gnat_rm/the_gnat_library id139}@anchor{3de}
! @section @code{Interfaces.VxWorks.Int_Connection} (@code{i-vxinco.ads})
  
  
  @geindex Interfaces.VxWorks.Int_Connection (i-vxinco.ads)
*************** intConnect() with a custom routine for i
*** 24637,24644 ****
  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 interfaces-vxworks-io-i-vxwoio-ads}@anchor{3d0}@anchor{gnat_rm/the_gnat_library id137}@anchor{3d1}
! @section @cite{Interfaces.VxWorks.IO} (@code{i-vxwoio.ads})
  
  
  @geindex Interfaces.VxWorks.IO (i-vxwoio.ads)
--- 24946,24953 ----
  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 interfaces-vxworks-io-i-vxwoio-ads}@anchor{3df}@anchor{gnat_rm/the_gnat_library id140}@anchor{3e0}
! @section @code{Interfaces.VxWorks.IO} (@code{i-vxwoio.ads})
  
  
  @geindex Interfaces.VxWorks.IO (i-vxwoio.ads)
*************** function codes. A particular use of this
*** 24660,24667 ****
  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 id138}@anchor{3d2}@anchor{gnat_rm/the_gnat_library system-address-image-s-addima-ads}@anchor{3d3}
! @section @cite{System.Address_Image} (@code{s-addima.ads})
  
  
  @geindex System.Address_Image (s-addima.ads)
--- 24969,24976 ----
  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 id141}@anchor{3e1}@anchor{gnat_rm/the_gnat_library system-address-image-s-addima-ads}@anchor{3e2}
! @section @code{System.Address_Image} (@code{s-addima.ads})
  
  
  @geindex System.Address_Image (s-addima.ads)
*************** function that gives an (implementation d
*** 24676,24683 ****
  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 id139}@anchor{3d4}@anchor{gnat_rm/the_gnat_library system-assertions-s-assert-ads}@anchor{3d5}
! @section @cite{System.Assertions} (@code{s-assert.ads})
  
  
  @geindex System.Assertions (s-assert.ads)
--- 24985,24992 ----
  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 system-assertions-s-assert-ads}@anchor{3e3}@anchor{gnat_rm/the_gnat_library id142}@anchor{3e4}
! @section @code{System.Assertions} (@code{s-assert.ads})
  
  
  @geindex System.Assertions (s-assert.ads)
*************** by an run-time assertion failure, as wel
*** 24692,24699 ****
  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 id140}@anchor{3d6}@anchor{gnat_rm/the_gnat_library system-atomic-counters-s-atocou-ads}@anchor{3d7}
! @section @cite{System.Atomic_Counters} (@code{s-atocou.ads})
  
  
  @geindex System.Atomic_Counters (s-atocou.ads)
--- 25001,25008 ----
  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 id143}@anchor{3e5}@anchor{gnat_rm/the_gnat_library system-atomic-counters-s-atocou-ads}@anchor{3e6}
! @section @code{System.Atomic_Counters} (@code{s-atocou.ads})
  
  
  @geindex System.Atomic_Counters (s-atocou.ads)
*************** on most targets, including all Alpha, ia
*** 24706,24713 ****
  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 system-memory-s-memory-ads}@anchor{3d8}@anchor{gnat_rm/the_gnat_library id141}@anchor{3d9}
! @section @cite{System.Memory} (@code{s-memory.ads})
  
  
  @geindex System.Memory (s-memory.ads)
--- 25015,25022 ----
  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 system-memory-s-memory-ads}@anchor{3e7}@anchor{gnat_rm/the_gnat_library id144}@anchor{3e8}
! @section @code{System.Memory} (@code{s-memory.ads})
  
  
  @geindex System.Memory (s-memory.ads)
*************** It also provides a reallocation interfac
*** 24721,24731 ****
  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 level allocation uses (for
! example see the body of @cite{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 system-multiprocessors-s-multip-ads}@anchor{3da}@anchor{gnat_rm/the_gnat_library id142}@anchor{3db}
! @section @cite{System.Multiprocessors} (@code{s-multip.ads})
  
  
  @geindex System.Multiprocessors (s-multip.ads)
--- 25030,25040 ----
  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 level allocation uses (for
! 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 id145}@anchor{3e9}@anchor{gnat_rm/the_gnat_library system-multiprocessors-s-multip-ads}@anchor{3ea}
! @section @code{System.Multiprocessors} (@code{s-multip.ads})
  
  
  @geindex System.Multiprocessors (s-multip.ads)
*************** in GNAT we also make it available in Ada
*** 24737,24744 ****
  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 system-multiprocessors-dispatching-domains-s-mudido-ads}@anchor{3dc}@anchor{gnat_rm/the_gnat_library id143}@anchor{3dd}
! @section @cite{System.Multiprocessors.Dispatching_Domains} (@code{s-mudido.ads})
  
  
  @geindex System.Multiprocessors.Dispatching_Domains (s-mudido.ads)
--- 25046,25053 ----
  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 system-multiprocessors-dispatching-domains-s-mudido-ads}@anchor{3eb}@anchor{gnat_rm/the_gnat_library id146}@anchor{3ec}
! @section @code{System.Multiprocessors.Dispatching_Domains} (@code{s-mudido.ads})
  
  
  @geindex System.Multiprocessors.Dispatching_Domains (s-mudido.ads)
*************** in GNAT we also make it available in Ada
*** 24750,24757 ****
  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 id144}@anchor{3de}@anchor{gnat_rm/the_gnat_library system-partition-interface-s-parint-ads}@anchor{3df}
! @section @cite{System.Partition_Interface} (@code{s-parint.ads})
  
  
  @geindex System.Partition_Interface (s-parint.ads)
--- 25059,25066 ----
  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 id147}@anchor{3ed}@anchor{gnat_rm/the_gnat_library system-partition-interface-s-parint-ads}@anchor{3ee}
! @section @code{System.Partition_Interface} (@code{s-parint.ads})
  
  
  @geindex System.Partition_Interface (s-parint.ads)
*************** technically an implementation-defined ad
*** 24760,24770 ****
  
  This package provides facilities for partition interfacing.  It
  is used primarily in a distribution context when using Annex E
! with @cite{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 id145}@anchor{3e0}@anchor{gnat_rm/the_gnat_library system-pool-global-s-pooglo-ads}@anchor{3e1}
! @section @cite{System.Pool_Global} (@code{s-pooglo.ads})
  
  
  @geindex System.Pool_Global (s-pooglo.ads)
--- 25069,25079 ----
  
  This package provides facilities for partition interfacing.  It
  is used primarily in a distribution context when using Annex E
! 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 id148}@anchor{3ef}@anchor{gnat_rm/the_gnat_library system-pool-global-s-pooglo-ads}@anchor{3f0}
! @section @code{System.Pool_Global} (@code{s-pooglo.ads})
  
  
  @geindex System.Pool_Global (s-pooglo.ads)
*************** declared. It uses malloc/free to allocat
*** 24780,24787 ****
  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 system-pool-local-s-pooloc-ads}@anchor{3e2}@anchor{gnat_rm/the_gnat_library id146}@anchor{3e3}
! @section @cite{System.Pool_Local} (@code{s-pooloc.ads})
  
  
  @geindex System.Pool_Local (s-pooloc.ads)
--- 25089,25096 ----
  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 system-pool-local-s-pooloc-ads}@anchor{3f1}@anchor{gnat_rm/the_gnat_library id149}@anchor{3f2}
! @section @code{System.Pool_Local} (@code{s-pooloc.ads})
  
  
  @geindex System.Pool_Local (s-pooloc.ads)
*************** a list of allocated blocks, so that all
*** 24797,24804 ****
  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 id147}@anchor{3e4}@anchor{gnat_rm/the_gnat_library system-restrictions-s-restri-ads}@anchor{3e5}
! @section @cite{System.Restrictions} (@code{s-restri.ads})
  
  
  @geindex System.Restrictions (s-restri.ads)
--- 25106,25113 ----
  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 id150}@anchor{3f3}@anchor{gnat_rm/the_gnat_library system-restrictions-s-restri-ads}@anchor{3f4}
! @section @code{System.Restrictions} (@code{s-restri.ads})
  
  
  @geindex System.Restrictions (s-restri.ads)
*************** compiler determined information on which
*** 24813,24820 ****
  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 system-rident-s-rident-ads}@anchor{3e6}@anchor{gnat_rm/the_gnat_library id148}@anchor{3e7}
! @section @cite{System.Rident} (@code{s-rident.ads})
  
  
  @geindex System.Rident (s-rident.ads)
--- 25122,25129 ----
  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 system-rident-s-rident-ads}@anchor{3f5}@anchor{gnat_rm/the_gnat_library id151}@anchor{3f6}
! @section @code{System.Rident} (@code{s-rident.ads})
  
  
  @geindex System.Rident (s-rident.ads)
*************** are violated by one or more packages in
*** 24824,24836 ****
  This package provides definitions of the restrictions
  identifiers supported by GNAT, and also the format of
  the restrictions provided in package System.Restrictions.
! It is not normally necessary to @cite{with} this generic package
  since the necessary instantiation is included in
  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 id149}@anchor{3e8}@anchor{gnat_rm/the_gnat_library system-strings-stream-ops-s-ststop-ads}@anchor{3e9}
! @section @cite{System.Strings.Stream_Ops} (@code{s-ststop.ads})
  
  
  @geindex System.Strings.Stream_Ops (s-ststop.ads)
--- 25133,25145 ----
  This package provides definitions of the restrictions
  identifiers supported by GNAT, and also the format of
  the restrictions provided in package System.Restrictions.
! It is not normally necessary to @code{with} this generic package
  since the necessary instantiation is included in
  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 id152}@anchor{3f7}@anchor{gnat_rm/the_gnat_library system-strings-stream-ops-s-ststop-ads}@anchor{3f8}
! @section @code{System.Strings.Stream_Ops} (@code{s-ststop.ads})
  
  
  @geindex System.Strings.Stream_Ops (s-ststop.ads)
*************** stream attributes are applied to string
*** 24845,24852 ****
  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 system-unsigned-types-s-unstyp-ads}@anchor{3ea}@anchor{gnat_rm/the_gnat_library id150}@anchor{3eb}
! @section @cite{System.Unsigned_Types} (@code{s-unstyp.ads})
  
  
  @geindex System.Unsigned_Types (s-unstyp.ads)
--- 25154,25161 ----
  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 system-unsigned-types-s-unstyp-ads}@anchor{3f9}@anchor{gnat_rm/the_gnat_library id153}@anchor{3fa}
! @section @code{System.Unsigned_Types} (@code{s-unstyp.ads})
  
  
  @geindex System.Unsigned_Types (s-unstyp.ads)
*************** also contains some related definitions f
*** 24858,24865 ****
  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 system-wch-cnv-s-wchcnv-ads}@anchor{3ec}@anchor{gnat_rm/the_gnat_library id151}@anchor{3ed}
! @section @cite{System.Wch_Cnv} (@code{s-wchcnv.ads})
  
  
  @geindex System.Wch_Cnv (s-wchcnv.ads)
--- 25167,25174 ----
  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 system-wch-cnv-s-wchcnv-ads}@anchor{3fb}@anchor{gnat_rm/the_gnat_library id154}@anchor{3fc}
! @section @code{System.Wch_Cnv} (@code{s-wchcnv.ads})
  
  
  @geindex System.Wch_Cnv (s-wchcnv.ads)
*************** used by the compiler in connection with
*** 24874,24886 ****
  
  This package provides routines for converting between
  wide and wide wide characters and a representation as a value of type
! @cite{Standard.String}, using a specified wide character
  encoding method.  It uses definitions in
! package @cite{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 system-wch-con-s-wchcon-ads}@anchor{3ee}@anchor{gnat_rm/the_gnat_library id152}@anchor{3ef}
! @section @cite{System.Wch_Con} (@code{s-wchcon.ads})
  
  
  @geindex System.Wch_Con (s-wchcon.ads)
--- 25183,25195 ----
  
  This package provides routines for converting between
  wide and wide wide characters and a representation as a value of type
! @code{Standard.String}, using a specified wide character
  encoding method.  It uses definitions in
! 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 system-wch-con-s-wchcon-ads}@anchor{3fd}@anchor{gnat_rm/the_gnat_library id155}@anchor{3fe}
! @section @code{System.Wch_Con} (@code{s-wchcon.ads})
  
  
  @geindex System.Wch_Con (s-wchcon.ads)
*************** package @cite{System.Wch_Con}.
*** 24888,24897 ****
  This package provides definitions and descriptions of
  the various methods used for encoding wide characters
  in ordinary strings.  These definitions are used by
! the package @cite{System.Wch_Cnv}.
  
  @node Interfacing to Other Languages,Specialized Needs Annexes,The GNAT Library,Top
! @anchor{gnat_rm/interfacing_to_other_languages interfacing-to-other-languages}@anchor{11}@anchor{gnat_rm/interfacing_to_other_languages doc}@anchor{3f0}@anchor{gnat_rm/interfacing_to_other_languages id1}@anchor{3f1}
  @chapter Interfacing to Other Languages
  
  
--- 25197,25206 ----
  This package provides definitions and descriptions of
  the various methods used for encoding wide characters
  in ordinary strings.  These definitions are used by
! 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 interfacing-to-other-languages}@anchor{11}@anchor{gnat_rm/interfacing_to_other_languages doc}@anchor{3ff}@anchor{gnat_rm/interfacing_to_other_languages id1}@anchor{400}
  @chapter Interfacing to Other Languages
  
  
*************** provided.
*** 24909,24915 ****
  @end menu
  
  @node Interfacing to C,Interfacing to C++,,Interfacing to Other Languages
! @anchor{gnat_rm/interfacing_to_other_languages interfacing-to-c}@anchor{3f2}@anchor{gnat_rm/interfacing_to_other_languages id2}@anchor{3f3}
  @section Interfacing to C
  
  
--- 25218,25224 ----
  @end menu
  
  @node Interfacing to C,Interfacing to C++,,Interfacing to Other Languages
! @anchor{gnat_rm/interfacing_to_other_languages interfacing-to-c}@anchor{401}@anchor{gnat_rm/interfacing_to_other_languages id2}@anchor{402}
  @section Interfacing to C
  
  
*************** Interfacing to C with GNAT can use one o
*** 24919,24925 ****
  @itemize *
  
  @item 
! The types in the package @cite{Interfaces.C} may be used.
  
  @item 
  Standard Ada types may be used directly.  This may be less portable to
--- 25228,25234 ----
  @itemize *
  
  @item 
! The types in the package @code{Interfaces.C} may be used.
  
  @item 
  Standard Ada types may be used directly.  This may be less portable to
*************** other compilers, but will work on all GN
*** 24927,24933 ****
  correspondence between the C and Ada types.
  @end itemize
  
! Pragma @cite{Convention C} may be applied to Ada types, but mostly has no
  effect, since this is the default.  The following table shows the
  correspondence between Ada scalar types and the corresponding C types.
  
--- 25236,25242 ----
  correspondence between the C and Ada types.
  @end itemize
  
! Pragma @code{Convention C} may be applied to Ada types, but mostly has no
  effect, since this is the default.  The following table shows the
  correspondence between Ada scalar types and the corresponding C types.
  
*************** and C types:
*** 25024,25034 ****
  
  @item 
  Ada enumeration types map to C enumeration types directly if pragma
! @cite{Convention C} is specified, which causes them to have int
! length.  Without pragma @cite{Convention C}, Ada enumeration types map to
! 8, 16, or 32 bits (i.e., C types @cite{signed char}, @cite{short},
! @cite{int}, respectively) depending on the number of values passed.
! This is the only case in which pragma @cite{Convention C} affects the
  representation of an Ada type.
  
  @item 
--- 25333,25343 ----
  
  @item 
  Ada enumeration types map to C enumeration types directly if pragma
! @code{Convention C} is specified, which causes them to have int
! length.  Without pragma @code{Convention C}, Ada enumeration types map to
! 8, 16, or 32 bits (i.e., C types @code{signed char}, @code{short},
! @code{int}, respectively) depending on the number of values passed.
! This is the only case in which pragma @code{Convention C} affects the
  representation of an Ada type.
  
  @item 
*************** of the length corresponding to the @code
*** 25047,25053 ****
  @end itemize
  
  @node Interfacing to C++,Interfacing to COBOL,Interfacing to C,Interfacing to Other Languages
! @anchor{gnat_rm/interfacing_to_other_languages id4}@anchor{3f4}@anchor{gnat_rm/interfacing_to_other_languages id3}@anchor{45}
  @section Interfacing to C++
  
  
--- 25356,25362 ----
  @end itemize
  
  @node Interfacing to C++,Interfacing to COBOL,Interfacing to C,Interfacing to Other Languages
! @anchor{gnat_rm/interfacing_to_other_languages id4}@anchor{403}@anchor{gnat_rm/interfacing_to_other_languages id3}@anchor{45}
  @section Interfacing to C++
  
  
*************** See @ref{7,,Implementation Defined Pragm
*** 25062,25092 ****
  
  @table @asis
  
! @item @emph{pragma CPP_Class ([Entity =>] `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
  corresponds to an externally declared C++ class type, and is to be laid
  out the same way that C++ would lay out the type.
  
! Note: Pragma @cite{CPP_Class} is currently obsolete. It is supported
  for backward compatibility but its functionality is available
! using pragma @cite{Import} with @cite{Convention} = @cite{CPP}.
  
! @item @emph{pragma CPP_Constructor ([Entity =>] `LOCAL_NAME`)}
  
  This pragma identifies an imported function (imported in the usual way
! with pragma @cite{Import}) as corresponding to a C++ constructor.
  @end table
  
! A few restrictions are placed on the use of the @cite{Access} attribute
! in conjunction with subprograms subject to convention @cite{CPP}: the
  attribute may be used neither on primitive operations of a tagged
! record type with convention @cite{CPP}, imported or not, nor on
! subprograms imported with pragma @cite{CPP_Constructor}.
  
  In addition, C++ exceptions are propagated and can be handled in an
! @cite{others} choice of an exception handler. The corresponding Ada
  occurrence has no message, and the simple name of the exception identity
  contains @code{Foreign_Exception}. Finalization and awaiting dependent
  tasks works properly when such foreign exceptions are propagated.
--- 25371,25401 ----
  
  @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
  corresponds to an externally declared C++ class type, and is to be laid
  out the same way that C++ would lay out the type.
  
! 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}.
  
! @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.
  @end table
  
! A few restrictions are placed on the use of the @code{Access} attribute
! in conjunction with subprograms subject to convention @code{CPP}: the
  attribute may be used neither on primitive operations of a tagged
! record type with convention @code{CPP}, imported or not, nor on
! subprograms imported with pragma @code{CPP_Constructor}.
  
  In addition, C++ exceptions are propagated and can be handled in an
! @code{others} choice of an exception handler. The corresponding Ada
  occurrence has no message, and the simple name of the exception identity
  contains @code{Foreign_Exception}. Finalization and awaiting dependent
  tasks works properly when such foreign exceptions are propagated.
*************** pragma Import (Cpp,
*** 25100,25110 ****
    [External_Name =>] static_string_EXPRESSION);
  @end example
  
! The @cite{External_Name} is the name of the C++ RTTI symbol. You can then
  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{3f5}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-cobol}@anchor{3f6}
  @section Interfacing to COBOL
  
  
--- 25409,25419 ----
    [External_Name =>] static_string_EXPRESSION);
  @end example
  
! The @code{External_Name} is the name of the C++ RTTI symbol. You can then
  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{404}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-cobol}@anchor{405}
  @section Interfacing to COBOL
  
  
*************** Interfacing to COBOL is achieved as desc
*** 25112,25133 ****
  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{3f7}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-fortran}@anchor{3f8}
  @section Interfacing to Fortran
  
  
  Interfacing to Fortran is achieved as described in section B.5 of the
! Ada Reference Manual.  The pragma @cite{Convention Fortran}, applied to a
  multi-dimensional array causes the array to be stored in column-major
  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 interfacing-to-non-gnat-ada-code}@anchor{3f9}@anchor{gnat_rm/interfacing_to_other_languages id7}@anchor{3fa}
  @section Interfacing to non-GNAT Ada code
  
  
! It is possible to specify the convention @cite{Ada} in a pragma
! @cite{Import} or pragma @cite{Export}.  However this refers to
  the calling conventions used by GNAT, which may or may not be
  similar enough to those used by some other Ada 83 / Ada 95 / Ada 2005
  compiler to allow interoperation.
--- 25421,25442 ----
  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{406}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-fortran}@anchor{407}
  @section Interfacing to Fortran
  
  
  Interfacing to Fortran is achieved as described in section B.5 of the
! Ada Reference Manual.  The pragma @code{Convention Fortran}, applied to a
  multi-dimensional array causes the array to be stored in column-major
  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 interfacing-to-non-gnat-ada-code}@anchor{408}@anchor{gnat_rm/interfacing_to_other_languages id7}@anchor{409}
  @section Interfacing to non-GNAT Ada code
  
  
! It is possible to specify the convention @code{Ada} in a pragma
! @code{Import} or pragma @code{Export}.  However this refers to
  the calling conventions used by GNAT, which may or may not be
  similar enough to those used by some other Ada 83 / Ada 95 / Ada 2005
  compiler to allow interoperation.
*************** values or simple record types without va
*** 25146,25152 ****
  types with fixed bounds.
  
  @node Specialized Needs Annexes,Implementation of Specific Ada Features,Interfacing to Other Languages,Top
! @anchor{gnat_rm/specialized_needs_annexes specialized-needs-annexes}@anchor{12}@anchor{gnat_rm/specialized_needs_annexes doc}@anchor{3fb}@anchor{gnat_rm/specialized_needs_annexes id1}@anchor{3fc}
  @chapter Specialized Needs Annexes
  
  
--- 25455,25461 ----
  types with fixed bounds.
  
  @node Specialized Needs Annexes,Implementation of Specific Ada Features,Interfacing to Other Languages,Top
! @anchor{gnat_rm/specialized_needs_annexes specialized-needs-annexes}@anchor{12}@anchor{gnat_rm/specialized_needs_annexes doc}@anchor{40a}@anchor{gnat_rm/specialized_needs_annexes id1}@anchor{40b}
  @chapter Specialized Needs Annexes
  
  
*************** in Ada 2005) is fully implemented.
*** 25187,25193 ****
  @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 implementation-of-specific-ada-features}@anchor{13}@anchor{gnat_rm/implementation_of_specific_ada_features doc}@anchor{3fd}@anchor{gnat_rm/implementation_of_specific_ada_features id1}@anchor{3fe}
  @chapter Implementation of Specific Ada Features
  
  
--- 25496,25502 ----
  @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 implementation-of-specific-ada-features}@anchor{13}@anchor{gnat_rm/implementation_of_specific_ada_features doc}@anchor{40c}@anchor{gnat_rm/implementation_of_specific_ada_features id1}@anchor{40d}
  @chapter Implementation of Specific Ada Features
  
  
*************** facilities.
*** 25205,25217 ****
  @end menu
  
  @node Machine Code Insertions,GNAT Implementation of Tasking,,Implementation of Specific Ada Features
! @anchor{gnat_rm/implementation_of_specific_ada_features machine-code-insertions}@anchor{15e}@anchor{gnat_rm/implementation_of_specific_ada_features id2}@anchor{3ff}
  @section Machine Code Insertions
  
  
  @geindex Machine Code insertions
  
! Package @cite{Machine_Code} provides machine code support as described
  in the Ada Reference Manual in two separate forms:
  
  
--- 25514,25526 ----
  @end menu
  
  @node Machine Code Insertions,GNAT Implementation of Tasking,,Implementation of Specific Ada Features
! @anchor{gnat_rm/implementation_of_specific_ada_features machine-code-insertions}@anchor{164}@anchor{gnat_rm/implementation_of_specific_ada_features id2}@anchor{40e}
  @section Machine Code Insertions
  
  
  @geindex Machine Code insertions
  
! Package @code{Machine_Code} provides machine code support as described
  in the Ada Reference Manual in two separate forms:
  
  
*************** and use of the facilities in this packag
*** 25232,25243 ****
  instruction, see the section on Extended Asm in
  @cite{Using_the_GNU_Compiler_Collection_(GCC)}.
  
! Calls to the function @cite{Asm} and the procedure @cite{Asm} have identical
  semantic restrictions and effects as described below.  Both are provided so
  that the procedure call can be used as a statement, and the function call
  can be used to form a code_statement.
  
! Consider this C @cite{asm} instruction:
  
  @example
  asm ("fsinx %1 %0" : "=f" (result) : "f" (angle));
--- 25541,25552 ----
  instruction, see the section on Extended Asm in
  @cite{Using_the_GNU_Compiler_Collection_(GCC)}.
  
! Calls to the function @code{Asm} and the procedure @code{Asm} have identical
  semantic restrictions and effects as described below.  Both are provided so
  that the procedure call can be used as a statement, and the function call
  can be used to form a code_statement.
  
! Consider this C @code{asm} instruction:
  
  @example
  asm ("fsinx %1 %0" : "=f" (result) : "f" (angle));
*************** Asm ("fsinx %1 %0",
*** 25251,25264 ****
       My_Float'Asm_Input  ("f",  angle));
  @end example
  
! The first argument to @cite{Asm} is the assembler template, and is
  identical to what is used in GNU C.  This string must be a static
  expression.  The second argument is the output operand list.  It is
! either a single @cite{Asm_Output} attribute reference, or a list of such
  references enclosed in parentheses (technically an array aggregate of
  such references).
  
! The @cite{Asm_Output} attribute denotes a function that takes two
  parameters.  The first is a string, the second is the name of a variable
  of the type designated by the attribute prefix.  The first (string)
  argument is required to be a static expression and designates the
--- 25560,25573 ----
       My_Float'Asm_Input  ("f",  angle));
  @end example
  
! The first argument to @code{Asm} is the assembler template, and is
  identical to what is used in GNU C.  This string must be a static
  expression.  The second argument is the output operand list.  It is
! either a single @code{Asm_Output} attribute reference, or a list of such
  references enclosed in parentheses (technically an array aggregate of
  such references).
  
! The @code{Asm_Output} attribute denotes a function that takes two
  parameters.  The first is a string, the second is the name of a variable
  of the type designated by the attribute prefix.  The first (string)
  argument is required to be a static expression and designates the
*************** argument is the variable to be written o
*** 25269,25287 ****
  result.  The possible values for constraint are the same as those used in
  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 @cite{No_Output_Operands}.
  No support is provided for GNU C's symbolic names for output parameters.
  
  The second argument of @code{my_float'Asm_Output} functions as
! though it were an @cite{out} parameter, which is a little curious, but
  all names have the form of expressions, so there is no syntactic
  irregularity, even though normally functions would not be permitted
! @cite{out} parameters.  The third argument is the list of input
! operands.  It is either a single @cite{Asm_Input} attribute reference, or
  a list of such references enclosed in parentheses (technically an array
  aggregate of such references).
  
! The @cite{Asm_Input} attribute denotes a function that takes two
  parameters.  The first is a string, the second is an expression of the
  type designated by the prefix.  The first (string) argument is required
  to be a static expression, and is the constraint for the parameter,
--- 25578,25596 ----
  result.  The possible values for constraint are the same as those used in
  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}.
  No support is provided for GNU C's symbolic names for output parameters.
  
  The second argument of @code{my_float'Asm_Output} functions as
! though it were an @code{out} parameter, which is a little curious, but
  all names have the form of expressions, so there is no syntactic
  irregularity, even though normally functions would not be permitted
! @code{out} parameters.  The third argument is the list of input
! operands.  It is either a single @code{Asm_Input} attribute reference, or
  a list of such references enclosed in parentheses (technically an array
  aggregate of such references).
  
! The @code{Asm_Input} attribute denotes a function that takes two
  parameters.  The first is a string, the second is an expression of the
  type designated by the prefix.  The first (string) argument is required
  to be a static expression, and is the constraint for the parameter,
*************** the configuration file used to built the
*** 25292,25310 ****
  No support is provided for GNU C's symbolic names for input parameters.
  
  If there are no input operands, this argument may either be omitted, or
! explicitly given as @cite{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 @cite{Asm} call.  If
  this argument is the null string (the default value), then the code
  generator assumes that no additional registers are destroyed.
! In addition to registers, the special clobbers @cite{memory} and
! @cite{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 @cite{False}.  It can be set to
! the literal value @cite{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
  will still be generated, even if none of the outputs are
--- 25601,25619 ----
  No support is provided for GNU C's symbolic names for input parameters.
  
  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
  generator assumes that no additional registers are destroyed.
! In addition to registers, the special clobbers @code{memory} and
! @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
  will still be generated, even if none of the outputs are
*************** Generally it is strongly advisable to us
*** 25314,25327 ****
  that is missing either input or output operands or to avoid unwanted
  optimizations. A warning is generated if this advice is not followed.
  
! No support is provided for GNU C's @cite{asm goto} feature.
  
! The @cite{Asm} subprograms may be used in two ways.  First the procedure
  forms can be used anywhere a procedure call would be valid, and
  correspond to what the RM calls 'intrinsic' routines.  Such calls can
  be used to intersperse machine instructions with other Ada statements.
  Second, the function forms, which return a dummy value of the limited
! private type @cite{Asm_Insn}, can be used in code statements, and indeed
  this is the only context where such calls are allowed.  Code statements
  appear as aggregates of the form:
  
--- 25623,25636 ----
  that is missing either input or output operands or to avoid unwanted
  optimizations. A warning is generated if this advice is not followed.
  
! No support is provided for GNU C's @code{asm goto} feature.
  
! The @code{Asm} subprograms may be used in two ways.  First the procedure
  forms can be used anywhere a procedure call would be valid, and
  correspond to what the RM calls 'intrinsic' routines.  Such calls can
  be used to intersperse machine instructions with other Ada statements.
  Second, the function forms, which return a dummy value of the limited
! private type @code{Asm_Insn}, can be used in code statements, and indeed
  this is the only context where such calls are allowed.  Code statements
  appear as aggregates of the form:
  
*************** not permissible to intermix such stateme
*** 25337,25343 ****
  Typically the form using intrinsic procedure calls is more convenient
  and more flexible.  The code statement form is provided to meet the RM
  suggestion that such a facility should be made available.  The following
! is the exact syntax of the call to @cite{Asm}. As usual, if named notation
  is used, the arguments may be given in arbitrary order, following the
  normal rules for use of positional and named arguments:
  
--- 25646,25652 ----
  Typically the form using intrinsic procedure calls is more convenient
  and more flexible.  The code statement form is provided to meet the RM
  suggestion that such a facility should be made available.  The following
! is the exact syntax of the call to @code{Asm}. As usual, if named notation
  is used, the arguments may be given in arbitrary order, following the
  normal rules for use of positional and named arguments:
  
*************** INPUT_OPERAND_ATTRIBUTE ::=
*** 25366,25379 ****
    SUBTYPE_MARK'Asm_Input (static_string_EXPRESSION, EXPRESSION)
  @end example
  
! The identifiers @cite{No_Input_Operands} and @cite{No_Output_Operands}
! are declared in the package @cite{Machine_Code} and must be referenced
  according to normal visibility rules. In particular if there is no
! @cite{use} clause for this package, then appropriate package name
  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 id3}@anchor{400}@anchor{gnat_rm/implementation_of_specific_ada_features gnat-implementation-of-tasking}@anchor{401}
  @section GNAT Implementation of Tasking
  
  
--- 25675,25688 ----
    SUBTYPE_MARK'Asm_Input (static_string_EXPRESSION, EXPRESSION)
  @end example
  
! The identifiers @code{No_Input_Operands} and @code{No_Output_Operands}
! are declared in the package @code{Machine_Code} and must be referenced
  according to normal visibility rules. In particular if there is no
! @code{use} clause for this package, then appropriate package name
  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 id3}@anchor{40f}@anchor{gnat_rm/implementation_of_specific_ada_features gnat-implementation-of-tasking}@anchor{410}
  @section GNAT Implementation of Tasking
  
  
*************** to compliance with the Real-Time Systems
*** 25384,25394 ****
  @menu
  * Mapping Ada Tasks onto the Underlying Kernel Threads:: 
  * Ensuring Compliance with the Real-Time Annex:: 
  
  @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 mapping-ada-tasks-onto-the-underlying-kernel-threads}@anchor{402}@anchor{gnat_rm/implementation_of_specific_ada_features id4}@anchor{403}
  @subsection Mapping Ada Tasks onto the Underlying Kernel Threads
  
  
--- 25693,25704 ----
  @menu
  * Mapping Ada Tasks onto the Underlying Kernel Threads:: 
  * Ensuring Compliance with the Real-Time Annex:: 
+ * Support for Locking Policies:: 
  
  @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 mapping-ada-tasks-onto-the-underlying-kernel-threads}@anchor{411}@anchor{gnat_rm/implementation_of_specific_ada_features id4}@anchor{412}
  @subsection Mapping Ada Tasks onto the Underlying Kernel Threads
  
  
*************** support this functionality when the pare
*** 25456,25463 ****
  
  @geindex Forking a new process
  
! @node Ensuring Compliance with the Real-Time Annex,,Mapping Ada Tasks onto the Underlying Kernel Threads,GNAT Implementation of Tasking
! @anchor{gnat_rm/implementation_of_specific_ada_features id5}@anchor{404}@anchor{gnat_rm/implementation_of_specific_ada_features ensuring-compliance-with-the-real-time-annex}@anchor{405}
  @subsection Ensuring Compliance with the Real-Time Annex
  
  
--- 25766,25773 ----
  
  @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 id5}@anchor{413}@anchor{gnat_rm/implementation_of_specific_ada_features ensuring-compliance-with-the-real-time-annex}@anchor{414}
  @subsection Ensuring Compliance with the Real-Time Annex
  
  
*************** the underlying threads has significant a
*** 25468,25474 ****
  complications when it comes to respecting the scheduling semantics
  specified in the real-time annex (Annex D).
  
! For instance the Annex D requirement for the @cite{FIFO_Within_Priorities}
  scheduling policy states:
  
  @quotation
--- 25778,25784 ----
  complications when it comes to respecting the scheduling semantics
  specified in the real-time annex (Annex D).
  
! For instance the Annex D requirement for the @code{FIFO_Within_Priorities}
  scheduling policy states:
  
  @quotation
*************** Note that this simple scheme preserves t
*** 25505,25512 ****
  that were ready to execute in the priority queue where R has been
  placed at the end.
  
  @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 id6}@anchor{406}@anchor{gnat_rm/implementation_of_specific_ada_features gnat-implementation-of-shared-passive-packages}@anchor{407}
  @section GNAT Implementation of Shared Passive Packages
  
  
--- 25815,25858 ----
  that were ready to execute in the priority queue where R has been
  placed at the end.
  
+ @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{415}
+ @subsection Support for Locking Policies
+ 
+ 
+ This section specifies which policies specified by pragma Locking_Policy
+ are supported on which platforms.
+ 
+ GNAT supports the standard @code{Ceiling_Locking} policy, and the
+ implementation defined @code{Inheritance_Locking} and
+ @code{Concurrent_Readers_Locking} policies.
+ 
+ @code{Ceiling_Locking} is supported on all platforms if the operating system
+ supports it. In particular, @code{Ceiling_Locking} is not supported on
+ VxWorks.
+ @code{Inheritance_Locking} is supported on
+ Linux,
+ Darwin (Mac OS X),
+ LynxOS 178,
+ and VxWorks.
+ @code{Concurrent_Readers_Locking} is supported on Linux.
+ 
+ Notes about @code{Ceiling_Locking} on Linux:
+ If the process is running as 'root', ceiling locking is used.
+ If the capabilities facility is installed
+ ("sudo apt-get --assume-yes install libcap-dev" on Ubuntu,
+ for example),
+ and the program is linked against that library
+ ("-largs -lcap"),
+ and the executable file has the cap_sys_nice capability
+ ("sudo /sbin/setcap cap_sys_nice=ep executable_file_name"),
+ then ceiling locking is used.
+ 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 id6}@anchor{416}@anchor{gnat_rm/implementation_of_specific_ada_features gnat-implementation-of-shared-passive-packages}@anchor{417}
  @section GNAT Implementation of Shared Passive Packages
  
  
*************** placed at the end.
*** 25515,25521 ****
  GNAT fully implements the 
  @geindex pragma Shared_Passive
  pragma
! @cite{Shared_Passive} for
  the purpose of designating shared passive packages.
  This allows the use of passive partitions in the
  context described in the Ada Reference Manual; i.e., for communication
--- 25861,25867 ----
  GNAT fully implements the 
  @geindex pragma Shared_Passive
  pragma
! @code{Shared_Passive} for
  the purpose of designating shared passive packages.
  This allows the use of passive partitions in the
  context described in the Ada Reference Manual; i.e., for communication
*************** written.
*** 25556,25562 ****
  
  @geindex SHARED_MEMORY_DIRECTORY environment variable
  
! The environment variable @cite{SHARED_MEMORY_DIRECTORY} should be
  set to the directory to be used for these files.
  The files in this directory
  have names that correspond to their fully qualified names. For
--- 25902,25908 ----
  
  @geindex SHARED_MEMORY_DIRECTORY environment variable
  
! The environment variable @code{SHARED_MEMORY_DIRECTORY} should be
  set to the directory to be used for these files.
  The files in this directory
  have names that correspond to their fully qualified names. For
*************** package X is
*** 25570,25576 ****
  end X;
  @end example
  
! and the environment variable is set to @cite{/stemp/}, then the files created
  will have the names:
  
  @example
--- 25916,25922 ----
  end X;
  @end example
  
! and the environment variable is set to @code{/stemp/}, then the files created
  will have the names:
  
  @example
*************** will be used. This model ensures that th
*** 25586,25592 ****
  the elaboration process, since elaboration of passive packages elaborates the
  initial values, but does not create the files.
  
! The files are written using normal @cite{Stream_IO} access.
  If you want to be able
  to communicate between programs or partitions running on different
  architectures, then you should use the XDR versions of the stream attribute
--- 25932,25938 ----
  the elaboration process, since elaboration of passive packages elaborates the
  initial values, but does not create the files.
  
! The files are written using normal @code{Stream_IO} access.
  If you want to be able
  to communicate between programs or partitions running on different
  architectures, then you should use the XDR versions of the stream attribute
*************** GNAT supports shared passive packages on
*** 25607,25613 ****
  except for OpenVMS.
  
  @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{408}@anchor{gnat_rm/implementation_of_specific_ada_features id7}@anchor{409}
  @section Code Generation for Array Aggregates
  
  
--- 25953,25959 ----
  except for OpenVMS.
  
  @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{418}@anchor{gnat_rm/implementation_of_specific_ada_features id7}@anchor{419}
  @section Code Generation for Array Aggregates
  
  
*************** component values and static subtypes als
*** 25638,25644 ****
  @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 static-constant-aggregates-with-static-bounds}@anchor{40a}@anchor{gnat_rm/implementation_of_specific_ada_features id8}@anchor{40b}
  @subsection Static constant aggregates with static bounds
  
  
--- 25984,25990 ----
  @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 static-constant-aggregates-with-static-bounds}@anchor{41a}@anchor{gnat_rm/implementation_of_specific_ada_features id8}@anchor{41b}
  @subsection Static constant aggregates with static bounds
  
  
*************** Zero2: constant two_dim := (others => (o
*** 25685,25696 ****
  @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{40c}@anchor{gnat_rm/implementation_of_specific_ada_features id9}@anchor{40d}
  @subsection Constant aggregates with unconstrained nominal types
  
  
  In such cases the aggregate itself establishes the subtype, so that
! associations with @cite{others} cannot be used.  GNAT determines the
  bounds for the actual subtype of the aggregate, and allocates the
  aggregate statically as well.  No code is generated for the following:
  
--- 26031,26042 ----
  @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{41c}@anchor{gnat_rm/implementation_of_specific_ada_features id9}@anchor{41d}
  @subsection Constant aggregates with unconstrained nominal types
  
  
  In such cases the aggregate itself establishes the subtype, so that
! associations with @code{others} cannot be used.  GNAT determines the
  bounds for the actual subtype of the aggregate, and allocates the
  aggregate statically as well.  No code is generated for the following:
  
*************** Cr_Unc : constant One_Unc := (12,24,36);
*** 25700,25706 ****
  @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 id10}@anchor{40e}@anchor{gnat_rm/implementation_of_specific_ada_features aggregates-with-static-bounds}@anchor{40f}
  @subsection Aggregates with static bounds
  
  
--- 26046,26052 ----
  @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 id10}@anchor{41e}@anchor{gnat_rm/implementation_of_specific_ada_features aggregates-with-static-bounds}@anchor{41f}
  @subsection Aggregates with static bounds
  
  
*************** end loop;
*** 25728,25734 ****
  @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 id11}@anchor{410}@anchor{gnat_rm/implementation_of_specific_ada_features aggregates-with-nonstatic-bounds}@anchor{411}
  @subsection Aggregates with nonstatic bounds
  
  
--- 26074,26080 ----
  @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 id11}@anchor{420}@anchor{gnat_rm/implementation_of_specific_ada_features aggregates-with-nonstatic-bounds}@anchor{421}
  @subsection Aggregates with nonstatic bounds
  
  
*************** have to be applied to sub-arrays individ
*** 25739,25745 ****
  compatible subtypes.
  
  @node Aggregates in assignment statements,,Aggregates with nonstatic bounds,Code Generation for Array Aggregates
! @anchor{gnat_rm/implementation_of_specific_ada_features id12}@anchor{412}@anchor{gnat_rm/implementation_of_specific_ada_features aggregates-in-assignment-statements}@anchor{413}
  @subsection Aggregates in assignment statements
  
  
--- 26085,26091 ----
  compatible subtypes.
  
  @node Aggregates in assignment statements,,Aggregates with nonstatic bounds,Code Generation for Array Aggregates
! @anchor{gnat_rm/implementation_of_specific_ada_features id12}@anchor{422}@anchor{gnat_rm/implementation_of_specific_ada_features aggregates-in-assignment-statements}@anchor{423}
  @subsection Aggregates in assignment statements
  
  
*************** a temporary (created either by the front
*** 25781,25791 ****
  that temporary will be copied onto the target.
  
  @node The Size of Discriminated Records with Default Discriminants,Strict Conformance to the Ada Reference Manual,Code Generation for Array Aggregates,Implementation of Specific Ada Features
! @anchor{gnat_rm/implementation_of_specific_ada_features id13}@anchor{414}@anchor{gnat_rm/implementation_of_specific_ada_features the-size-of-discriminated-records-with-default-discriminants}@anchor{415}
  @section The Size of Discriminated Records with Default Discriminants
  
  
! If a discriminated type @cite{T} has discriminants with default values, it is
  possible to declare an object of this type without providing an explicit
  constraint:
  
--- 26127,26137 ----
  that temporary will be copied onto the target.
  
  @node The Size of Discriminated Records with Default Discriminants,Strict Conformance to the Ada Reference Manual,Code Generation for Array Aggregates,Implementation of Specific Ada Features
! @anchor{gnat_rm/implementation_of_specific_ada_features id13}@anchor{424}@anchor{gnat_rm/implementation_of_specific_ada_features the-size-of-discriminated-records-with-default-discriminants}@anchor{425}
  @section The Size of Discriminated Records with Default Discriminants
  
  
! If a discriminated type @code{T} has discriminants with default values, it is
  possible to declare an object of this type without providing an explicit
  constraint:
  
*************** Word := (5, "no"); -- raises Constraint_
*** 25815,25826 ****
  
  In order to support this behavior efficiently, an unconstrained object is
  given the maximum size that any value of the type requires. In the case
! above, @cite{Word} has storage for the discriminant and for
! a @cite{String} of length 100.
  It is important to note that unconstrained objects do not require dynamic
  allocation. It would be an improper implementation to place on the heap those
  components whose size depends on discriminants. (This improper implementation
! was used by some Ada83 compilers, where the @cite{Name} component above
  would have
  been stored as a pointer to a dynamic string). Following the principle that
  dynamic storage management should never be introduced implicitly,
--- 26161,26172 ----
  
  In order to support this behavior efficiently, an unconstrained object is
  given the maximum size that any value of the type requires. In the case
! above, @code{Word} has storage for the discriminant and for
! a @code{String} of length 100.
  It is important to note that unconstrained objects do not require dynamic
  allocation. It would be an improper implementation to place on the heap those
  components whose size depends on discriminants. (This improper implementation
! was used by some Ada83 compilers, where the @code{Name} component above
  would have
  been stored as a pointer to a dynamic string). Following the principle that
  dynamic storage management should never be introduced implicitly,
*************** Too_Large : Rec;
*** 25845,25857 ****
  @end example
  
  is flagged by the compiler with a warning:
! an attempt to create @cite{Too_Large} will raise @cite{Storage_Error},
! because the required size includes @cite{Positive'Last}
  bytes. As the first example indicates, the proper approach is to declare an
  index type of 'reasonable' range so that unconstrained objects are not too
  large.
  
! One final wrinkle: if the object is declared to be @cite{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
--- 26191,26203 ----
  @end example
  
  is flagged by the compiler with a warning:
! an attempt to create @code{Too_Large} will raise @code{Storage_Error},
! because the required size includes @code{Positive'Last}
  bytes. As the first example indicates, the proper approach is to declare an
  index type of 'reasonable' range so that unconstrained objects are not too
  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
*************** say) must be consistent, so it is impera
*** 25861,25867 ****
  remain invariant.
  
  @node 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 strict-conformance-to-the-ada-reference-manual}@anchor{416}@anchor{gnat_rm/implementation_of_specific_ada_features id14}@anchor{417}
  @section Strict Conformance to the Ada Reference Manual
  
  
--- 26207,26213 ----
  remain invariant.
  
  @node 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 strict-conformance-to-the-ada-reference-manual}@anchor{426}@anchor{gnat_rm/implementation_of_specific_ada_features id14}@anchor{427}
  @section Strict Conformance to the Ada Reference Manual
  
  
*************** calls and generic instantiations (@emph{
*** 25879,25886 ****
  (@emph{-fstack-check}).
  
  Note that the result of a floating point arithmetic operation in overflow and
! invalid situations, when the @cite{Machine_Overflows} attribute of the result
! type is @cite{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
--- 26225,26232 ----
  (@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 sign
*** 25888,25894 ****
  infinite and NaN values are properly generated.
  
  @node Implementation of Ada 2012 Features,Obsolescent Features,Implementation of Specific Ada Features,Top
! @anchor{gnat_rm/implementation_of_ada_2012_features doc}@anchor{418}@anchor{gnat_rm/implementation_of_ada_2012_features implementation-of-ada-2012-features}@anchor{14}@anchor{gnat_rm/implementation_of_ada_2012_features id1}@anchor{419}
  @chapter Implementation of Ada 2012 Features
  
  
--- 26234,26240 ----
  infinite and NaN values are properly generated.
  
  @node Implementation of Ada 2012 Features,Obsolescent Features,Implementation of Specific Ada Features,Top
! @anchor{gnat_rm/implementation_of_ada_2012_features doc}@anchor{428}@anchor{gnat_rm/implementation_of_ada_2012_features implementation-of-ada-2012-features}@anchor{14}@anchor{gnat_rm/implementation_of_ada_2012_features id1}@anchor{429}
  @chapter Implementation of Ada 2012 Features
  
  
*************** implemented.
*** 25907,25913 ****
  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 @cite{Ada_2012} is used.
  
  However, new pragmas, attributes, and restrictions are
  unconditionally available, since the Ada 95 standard allows the addition of
--- 26253,26259 ----
  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.
  
  However, new pragmas, attributes, and restrictions are
  unconditionally available, since the Ada 95 standard allows the addition of
*************** RM References:  2.08 (7)
*** 26000,26006 ****
  @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 @cite{null} statement to make the sequence legal.
  
  RM References:  2.08 (7)   2.08 (16)
  @end itemize
--- 26346,26352 ----
  @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.
  
  RM References:  2.08 (7)   2.08 (16)
  @end itemize
*************** list of the aspects supported (with GNAT
*** 26033,26039 ****
  @end itemize
  
  
! @multitable {xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx} {xxxxxxxxxxxxx} 
  @headitem
  
  Supported Aspect
--- 26379,26385 ----
  @end itemize
  
  
! @multitable {xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx} {xxxxxxxxxxxxx} 
  @headitem
  
  Supported Aspect
*************** Source
*** 26044,26050 ****
  
  @item
  
! @cite{Ada_2005}
  
  @tab
  
--- 26390,26396 ----
  
  @item
  
! @code{Ada_2005}
  
  @tab
  
*************** Source
*** 26052,26058 ****
  
  @item
  
! @cite{Ada_2012}
  
  @tab
  
--- 26398,26404 ----
  
  @item
  
! @code{Ada_2012}
  
  @tab
  
*************** Source
*** 26060,26102 ****
  
  @item
  
! @cite{Address}
  
  @tab
  
  @item
  
! @cite{Alignment}
  
  @tab
  
  @item
  
! @cite{Atomic}
  
  @tab
  
  @item
  
! @cite{Atomic_Components}
  
  @tab
  
  @item
  
! @cite{Bit_Order}
  
  @tab
  
  @item
  
! @cite{Component_Size}
  
  @tab
  
  @item
  
! @cite{Contract_Cases}
  
  @tab
  
--- 26406,26448 ----
  
  @item
  
! @code{Address}
  
  @tab
  
  @item
  
! @code{Alignment}
  
  @tab
  
  @item
  
! @code{Atomic}
  
  @tab
  
  @item
  
! @code{Atomic_Components}
  
  @tab
  
  @item
  
! @code{Bit_Order}
  
  @tab
  
  @item
  
! @code{Component_Size}
  
  @tab
  
  @item
  
! @code{Contract_Cases}
  
  @tab
  
*************** Source
*** 26104,26122 ****
  
  @item
  
! @cite{Discard_Names}
  
  @tab
  
  @item
  
! @cite{External_Tag}
  
  @tab
  
  @item
  
! @cite{Favor_Top_Level}
  
  @tab
  
--- 26450,26468 ----
  
  @item
  
! @code{Discard_Names}
  
  @tab
  
  @item
  
! @code{External_Tag}
  
  @tab
  
  @item
  
! @code{Favor_Top_Level}
  
  @tab
  
*************** Source
*** 26124,26136 ****
  
  @item
  
! @cite{Inline}
  
  @tab
  
  @item
  
! @cite{Inline_Always}
  
  @tab
  
--- 26470,26482 ----
  
  @item
  
! @code{Inline}
  
  @tab
  
  @item
  
! @code{Inline_Always}
  
  @tab
  
*************** Source
*** 26138,26144 ****
  
  @item
  
! @cite{Invariant}
  
  @tab
  
--- 26484,26490 ----
  
  @item
  
! @code{Invariant}
  
  @tab
  
*************** Source
*** 26146,26164 ****
  
  @item
  
! @cite{Machine_Radix}
  
  @tab
  
  @item
  
! @cite{No_Return}
  
  @tab
  
  @item
  
! @cite{Object_Size}
  
  @tab
  
--- 26492,26510 ----
  
  @item
  
! @code{Machine_Radix}
  
  @tab
  
  @item
  
! @code{No_Return}
  
  @tab
  
  @item
  
! @code{Object_Size}
  
  @tab
  
*************** Source
*** 26166,26178 ****
  
  @item
  
! @cite{Pack}
  
  @tab
  
  @item
  
! @cite{Persistent_BSS}
  
  @tab
  
--- 26512,26524 ----
  
  @item
  
! @code{Pack}
  
  @tab
  
  @item
  
! @code{Persistent_BSS}
  
  @tab
  
*************** Source
*** 26180,26210 ****
  
  @item
  
! @cite{Post}
  
  @tab
  
  @item
  
! @cite{Pre}
  
  @tab
  
  @item
  
! @cite{Predicate}
  
  @tab
  
  @item
  
! @cite{Preelaborable_Initialization}
  
  @tab
  
  @item
  
! @cite{Pure_Function}
  
  @tab
  
--- 26526,26556 ----
  
  @item
  
! @code{Post}
  
  @tab
  
  @item
  
! @code{Pre}
  
  @tab
  
  @item
  
! @code{Predicate}
  
  @tab
  
  @item
  
! @code{Preelaborable_Initialization}
  
  @tab
  
  @item
  
! @code{Pure_Function}
  
  @tab
  
*************** Source
*** 26212,26218 ****
  
  @item
  
! @cite{Remote_Access_Type}
  
  @tab
  
--- 26558,26564 ----
  
  @item
  
! @code{Remote_Access_Type}
  
  @tab
  
*************** Source
*** 26220,26226 ****
  
  @item
  
! @cite{Shared}
  
  @tab
  
--- 26566,26572 ----
  
  @item
  
! @code{Shared}
  
  @tab
  
*************** Source
*** 26228,26264 ****
  
  @item
  
! @cite{Size}
  
  @tab
  
  @item
  
! @cite{Storage_Pool}
  
  @tab
  
  @item
  
! @cite{Storage_Size}
  
  @tab
  
  @item
  
! @cite{Stream_Size}
  
  @tab
  
  @item
  
! @cite{Suppress}
  
  @tab
  
  @item
  
! @cite{Suppress_Debug_Info}
  
  @tab
  
--- 26574,26610 ----
  
  @item
  
! @code{Size}
  
  @tab
  
  @item
  
! @code{Storage_Pool}
  
  @tab
  
  @item
  
! @code{Storage_Size}
  
  @tab
  
  @item
  
! @code{Stream_Size}
  
  @tab
  
  @item
  
! @code{Suppress}
  
  @tab
  
  @item
  
! @code{Suppress_Debug_Info}
  
  @tab
  
*************** Source
*** 26266,26272 ****
  
  @item
  
! @cite{Test_Case}
  
  @tab
  
--- 26612,26618 ----
  
  @item
  
! @code{Test_Case}
  
  @tab
  
*************** Source
*** 26274,26280 ****
  
  @item
  
! @cite{Thread_Local_Storage}
  
  @tab
  
--- 26620,26626 ----
  
  @item
  
! @code{Thread_Local_Storage}
  
  @tab
  
*************** Source
*** 26282,26300 ****
  
  @item
  
! @cite{Type_Invariant}
  
  @tab
  
  @item
  
! @cite{Unchecked_Union}
  
  @tab
  
  @item
  
! @cite{Universal_Aliasing}
  
  @tab
  
--- 26628,26646 ----
  
  @item
  
! @code{Type_Invariant}
  
  @tab
  
  @item
  
! @code{Unchecked_Union}
  
  @tab
  
  @item
  
! @code{Universal_Aliasing}
  
  @tab
  
*************** Source
*** 26302,26308 ****
  
  @item
  
! @cite{Unmodified}
  
  @tab
  
--- 26648,26654 ----
  
  @item
  
! @code{Unmodified}
  
  @tab
  
*************** Source
*** 26310,26316 ****
  
  @item
  
! @cite{Unreferenced}
  
  @tab
  
--- 26656,26662 ----
  
  @item
  
! @code{Unreferenced}
  
  @tab
  
*************** Source
*** 26318,26324 ****
  
  @item
  
! @cite{Unreferenced_Objects}
  
  @tab
  
--- 26664,26670 ----
  
  @item
  
! @code{Unreferenced_Objects}
  
  @tab
  
*************** Source
*** 26326,26338 ****
  
  @item
  
! @cite{Unsuppress}
  
  @tab
  
  @item
  
! @cite{Value_Size}
  
  @tab
  
--- 26672,26684 ----
  
  @item
  
! @code{Unsuppress}
  
  @tab
  
  @item
  
! @code{Value_Size}
  
  @tab
  
*************** Source
*** 26340,26358 ****
  
  @item
  
! @cite{Volatile}
  
  @tab
  
  @item
  
! @cite{Volatile_Components}
  
  @tab
  
  @item
  
! @cite{Warnings}
  
  @tab
  
--- 26686,26704 ----
  
  @item
  
! @code{Volatile}
  
  @tab
  
  @item
  
! @code{Volatile_Components}
  
  @tab
  
  @item
  
! @code{Warnings}
  
  @tab
  
*************** Source
*** 26363,26369 ****
  
  @quotation
  
! Note that for aspects with an expression, e.g. @cite{Size}, the expression is
  treated like a default expression (visibility is analyzed at the point of
  occurrence of the aspect, but evaluation of the expression occurs at the
  freeze point of the entity involved).
--- 26709,26715 ----
  
  @quotation
  
! Note that for aspects with an expression, e.g. @code{Size}, the expression is
  treated like a default expression (visibility is analyzed at the point of
  occurrence of the aspect, but evaluation of the expression occurs at the
  freeze point of the entity involved).
*************** RM References:  3.02.03 (6)   6.06 (6)
*** 26401,26407 ****
  @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 @cite{A'(F(X)).B} are now legal. This is
  useful in disambiguating some cases of overloading.
  
  RM References:  3.03 (11)   3.03 (21)   4.01 (2)   4.04 (7)   4.07 (3)
--- 26747,26753 ----
  @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
  useful in disambiguating some cases of overloading.
  
  RM References:  3.03 (11)   3.03 (21)   4.01 (2)   4.04 (7)   4.07 (3)
*************** RM References:  3.03 (21)
*** 26434,26440 ****
  
  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
! obviously not intended. @cite{Constraint_Error} should be raised, and GNAT
  has always done so in this situation.
  
  RM References:  3.03 (23)   3.10.02 (26/2)   4.01 (9)   6.04.01 (17)   8.05.01 (5/2)
--- 26780,26786 ----
  
  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
! obviously not intended. @code{Constraint_Error} should be raised, and GNAT
  has always done so in this situation.
  
  RM References:  3.03 (23)   3.10.02 (26/2)   4.01 (9)   6.04.01 (17)   8.05.01 (5/2)
*************** RM References:  3.04 (5.1/2)   6.02 (7)
*** 26480,26487 ****
  @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 (@cite{SOFT_HYPHEN}) in conjunction with the
! @cite{Image} and @cite{Value} attributes for the character types. Strictly
  speaking this is an inconsistency with Ada 95, but in practice the use of
  these attributes is so obscure that it will not cause problems.
  
--- 26826,26833 ----
  @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
! @code{Image} and @code{Value} attributes for the character types. Strictly
  speaking this is an inconsistency with Ada 95, but in practice the use of
  these attributes is so obscure that it will not cause problems.
  
*************** RM References:  3.05.02 (2/2)   A.01 (35
*** 26494,26506 ****
  @itemize *
  
  @item 
! @emph{AI-0182 Additional forms for `Character'Value} (0000-00-00)`
  
! This AI allows @cite{Character'Value} to accept the string @cite{'?'} where
! @cite{?} is any character including non-graphic control characters. GNAT has
  always accepted such strings. It also allows strings such as
! @cite{HEX_00000041} to be accepted, but GNAT does not take advantage of this
! permission and raises @cite{Constraint_Error}, as is certainly still
  permitted.
  
  RM References:  3.05 (56/2)
--- 26840,26852 ----
  @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
  always accepted such strings. It also allows strings such as
! @code{HEX_00000041} to be accepted, but GNAT does not take advantage of this
! permission and raises @code{Constraint_Error}, as is certainly still
  permitted.
  
  RM References:  3.05 (56/2)
*************** RM References:  3.08.01 (5)   4.04 (3)
*** 26561,26568 ****
  @item 
  @emph{AI-0173 Testing if tags represent abstract types (2010-07-03)}
  
! The function @cite{Ada.Tags.Type_Is_Abstract} returns @cite{True} if invoked
! with the tag of an abstract type, and @cite{False} otherwise.
  
  RM References:  3.09 (7.4/2)   3.09 (12.4/2)
  @end itemize
--- 26907,26914 ----
  @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.
  
  RM References:  3.09 (7.4/2)   3.09 (12.4/2)
  @end itemize
*************** RM References:  4.03.03 (15)   4.04 (1)
*** 26783,26790 ****
  @item 
  @emph{AI-0037 Out-of-range box associations in aggregate (0000-00-00)}
  
! This AI confirms that an association of the form @cite{Indx => <>} in an
! array aggregate must raise @cite{Constraint_Error} if @cite{Indx}
  is out of range. The RM specified a range check on other associations, but
  not when the value of the association was defaulted. GNAT has always inserted
  a constraint check on the index value.
--- 27129,27136 ----
  @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}
  is out of range. The RM specified a range check on other associations, but
  not when the value of the association was defaulted. GNAT has always inserted
  a constraint check on the index value.
*************** RM References:  4.03.03 (29)
*** 26802,26808 ****
  
  Equality of untagged record composes, so that the predefined equality for a
  composite type that includes a component of some untagged record type
! @cite{R} uses the equality operation of @cite{R} (which may be user-defined
  or predefined). This makes the behavior of untagged records identical to that
  of tagged types in this respect.
  
--- 27148,27154 ----
  
  Equality of untagged record composes, so that the predefined equality for a
  composite type that includes a component of some untagged record type
! @code{R} uses the equality operation of @code{R} (which may be user-defined
  or predefined). This makes the behavior of untagged records identical to that
  of tagged types in this respect.
  
*************** RM References:  5.01 (2)
*** 26909,26915 ****
  
  The new syntax for iterating over arrays and containers is now implemented.
  Iteration over containers is for now limited to read-only iterators. Only
! default iterators are supported, with the syntax:  @cite{for Elem of C}.
  
  RM References:  5.05
  @end itemize
--- 27255,27261 ----
  
  The new syntax for iterating over arrays and containers is now implemented.
  Iteration over containers is for now limited to read-only iterators. Only
! default iterators are supported, with the syntax:  @code{for Elem of C}.
  
  RM References:  5.05
  @end itemize
*************** RM References:  6.04.01 (2)   12.03 (9)
*** 26979,26985 ****
  @item 
  @emph{AI-0196 Null exclusion tests for out parameters (0000-00-00)}
  
! Null exclusion checks are not made for @cite{**out**} parameters when
  evaluating the actual parameters. GNAT has never generated these checks.
  
  RM References:  6.04.01 (13)
--- 27325,27331 ----
  @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.
  
  RM References:  6.04.01 (13)
*************** RM References:  6.05 (22/2)
*** 27056,27062 ****
  @item 
  @emph{AI-0050 Raising Constraint_Error early for function call (0000-00-00)}
  
! The implementation permissions for raising @cite{Constraint_Error} early on a function call
  when it was clear an exception would be raised were over-permissive and allowed
  mishandling of discriminants in some cases. GNAT did
  not take advantage of these incorrect permissions in any case.
--- 27402,27408 ----
  @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
  mishandling of discriminants in some cases. GNAT did
  not take advantage of these incorrect permissions in any case.
*************** RM References:  9.01 (9.2/2)   9.04 (11.
*** 27213,27219 ****
  Requeue is permitted to a protected, synchronized or task interface primitive
  providing it is known that the overriding operation is an entry. Otherwise
  the requeue statement has the same effect as a procedure call. Use of pragma
! @cite{Implemented} provides a way to impose a static requirement on the
  overriding operation by adhering to one of the implementation kinds: entry,
  protected procedure or any of the above.
  
--- 27559,27565 ----
  Requeue is permitted to a protected, synchronized or task interface primitive
  providing it is known that the overriding operation is an entry. Otherwise
  the requeue statement has the same effect as a procedure call. Use of pragma
! @code{Implemented} provides a way to impose a static requirement on the
  overriding operation by adhering to one of the implementation kinds: entry,
  protected procedure or any of the above.
  
*************** RM References:  9.05 (9)   9.05.04 (2)
*** 27229,27235 ****
  @item 
  @emph{AI-0201 Independence of atomic object components (2010-07-22)}
  
! If an Atomic object has a pragma @cite{Pack} or a @cite{Component_Size}
  attribute, then individual components may not be addressable by independent
  tasks. However, if the representation clause has no effect (is confirming),
  then independence is not compromised. Furthermore, in GNAT, specification of
--- 27575,27581 ----
  @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
  tasks. However, if the representation clause has no effect (is confirming),
  then independence is not compromised. Furthermore, in GNAT, specification of
*************** RM References:  9.10 (1/3)   C.06 (22/2)
*** 27248,27255 ****
  @item 
  @emph{AI-0009 Pragma Independent[_Components] (2010-07-23)}
  
! This AI introduces the new pragmas @cite{Independent} and
! @cite{Independent_Components},
  which control guaranteeing independence of access to objects and components.
  The AI also requires independence not unaffected by confirming rep clauses.
  
--- 27594,27601 ----
  @item 
  @emph{AI-0009 Pragma Independent[_Components] (2010-07-23)}
  
! This AI introduces the new pragmas @code{Independent} and
! @code{Independent_Components},
  which control guaranteeing independence of access to objects and components.
  The AI also requires independence not unaffected by confirming rep clauses.
  
*************** C.06 (4)   C.06 (6)   C.06 (9)   C.06 (1
*** 27265,27271 ****
  @item 
  @emph{AI-0072 Task signalling using 'Terminated (0000-00-00)}
  
! This AI clarifies that task signalling for reading @cite{'Terminated} only
  occurs if the result is True. GNAT semantics has always been consistent with
  this notion of task signalling.
  
--- 27611,27617 ----
  @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
  this notion of task signalling.
  
*************** RM References:  12.07 (16)
*** 27447,27455 ****
  
  This AI concerns giving names to various representation aspects, but the
  practical effect is simply to make the use of duplicate
! @cite{Atomic[_Components]},
! @cite{Volatile[_Components]}, and
! @cite{Independent[_Components]} pragmas illegal, and GNAT
  now performs this required check.
  
  RM References:  13.01 (8)
--- 27793,27801 ----
  
  This AI concerns giving names to various representation aspects, but the
  practical effect is simply to make the use of duplicate
! @code{Atomic[_Components]},
! @code{Volatile[_Components]}, and
! @code{Independent[_Components]} pragmas illegal, and GNAT
  now performs this required check.
  
  RM References:  13.01 (8)
*************** RM References:  13.01 (9.1/1)
*** 27478,27484 ****
  @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
! @cite{Pack} that attempts to change the component size in the case of atomic
  or aliased components. Previously GNAT ignored such an attempt with a
  warning.
  
--- 27824,27830 ----
  @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
  or aliased components. Previously GNAT ignored such an attempt with a
  warning.
  
*************** RM References:  13.03 (4)   13.03 (6)
*** 27508,27517 ****
  @item 
  @emph{AI-0095 Address of intrinsic subprograms (0000-00-00)}
  
! The prefix of @cite{'Address} cannot statically denote a subprogram with
! convention @cite{Intrinsic}. The use of the @cite{Address} attribute raises
! @cite{Program_Error} if the prefix denotes a subprogram with convention
! @cite{Intrinsic}.
  
  RM References:  13.03 (11/1)
  @end itemize
--- 27854,27863 ----
  @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
! @code{Program_Error} if the prefix denotes a subprogram with convention
! @code{Intrinsic}.
  
  RM References:  13.03 (11/1)
  @end itemize
*************** RM References:  13.03 (29)   13.11 (16)
*** 27540,27547 ****
  @emph{AI-0146 Type invariants (2009-09-21)}
  
  Type invariants may be specified for private types using the aspect notation.
! Aspect @cite{Type_Invariant} may be specified for any private type,
! @cite{Type_Invariant'Class} can
  only be specified for tagged types, and is inherited by any descendent of the
  tagged types. The invariant is a boolean expression that is tested for being
  true in the following situations: conversions to the private type, object
--- 27886,27893 ----
  @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,
! @code{Type_Invariant'Class} can
  only be specified for tagged types, and is inherited by any descendent of the
  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 a
*** 27549,27556 ****
  [@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 @cite{Invariant} for @cite{Type_Invariant} and
! @cite{Invariant'Class} for @cite{Type_Invariant'Class}.
  
  RM References:  13.03.03 (00)
  @end itemize
--- 27895,27902 ----
  [@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
! @code{Invariant'Class} for @code{Type_Invariant'Class}.
  
  RM References:  13.03.03 (00)
  @end itemize
*************** RM References:  13.09.01 (10)
*** 27599,27606 ****
  @item 
  @emph{AI-0193 Alignment of allocators (2010-09-16)}
  
! This AI introduces a new attribute @cite{Max_Alignment_For_Allocation},
! analogous to @cite{Max_Size_In_Storage_Elements}, but for alignment instead
  of size.
  
  RM References:  13.11 (16)   13.11 (21)   13.11.01 (0)   13.11.01 (1)
--- 27945,27952 ----
  @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
  of size.
  
  RM References:  13.11 (16)   13.11 (21)   13.11.01 (0)   13.11.01 (1)
*************** RM References:  13.11.02 (16)   C.03.01
*** 27651,27657 ****
  @item 
  @emph{AI-0161 Restriction No_Default_Stream_Attributes (2010-09-11)}
  
! A new restriction @cite{No_Default_Stream_Attributes} prevents the use of any
  of the default stream attributes for elementary types. If this restriction is
  in force, then it is necessary to provide explicit subprograms for any
  stream attributes used.
--- 27997,28003 ----
  @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
  in force, then it is necessary to provide explicit subprograms for any
  stream attributes used.
*************** RM References:  13.12.01 (4/2)   13.13.0
*** 27667,27673 ****
  @item 
  @emph{AI-0194 Value of Stream_Size attribute (0000-00-00)}
  
! The @cite{Stream_Size} attribute returns the default number of bits in the
  stream representation of the given type.
  This value is not affected by the presence
  of stream subprogram attributes for the type. GNAT has always implemented
--- 28013,28019 ----
  @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.
  This value is not affected by the presence
  of stream subprogram attributes for the type. GNAT has always implemented
*************** RM References:  A (4)   E.02.02 (9/1)
*** 27774,27785 ****
  @item 
  @emph{AI-0114 Classification of letters (0000-00-00)}
  
! The code points 170 (@cite{FEMININE ORDINAL INDICATOR}),
! 181 (@cite{MICRO SIGN}), and
! 186 (@cite{MASCULINE ORDINAL INDICATOR}) are technically considered
  lower case letters by Unicode.
  However, they are not allowed in identifiers, and they
! return @cite{False} to @cite{Ada.Characters.Handling.Is_Letter/Is_Lower}.
  This behavior is consistent with that defined in Ada 95.
  
  RM References:  A.03.02 (59)   A.04.06 (7)
--- 28120,28131 ----
  @item 
  @emph{AI-0114 Classification of letters (0000-00-00)}
  
! The code points 170 (@code{FEMININE ORDINAL INDICATOR}),
! 181 (@code{MICRO SIGN}), and
! 186 (@code{MASCULINE ORDINAL INDICATOR}) are technically considered
  lower case letters by Unicode.
  However, they are not allowed in identifiers, and they
! return @code{False} to @code{Ada.Characters.Handling.Is_Letter/Is_Lower}.
  This behavior is consistent with that defined in Ada 95.
  
  RM References:  A.03.02 (59)   A.04.06 (7)
*************** RM References:  A.03.02 (59)   A.04.06 (
*** 27793,27803 ****
  @item 
  @emph{AI-0185 Ada.Wide_[Wide_]Characters.Handling (2010-07-06)}
  
! Two new packages @cite{Ada.Wide_[Wide_]Characters.Handling} provide
! classification functions for @cite{Wide_Character} and
! @cite{Wide_Wide_Character}, as well as providing
! case folding routines for @cite{Wide_[Wide_]Character} and
! @cite{Wide_[Wide_]String}.
  
  RM References:  A.03.05 (0)   A.03.06 (0)
  @end itemize
--- 28139,28149 ----
  @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
! @code{Wide_Wide_Character}, as well as providing
! case folding routines for @code{Wide_[Wide_]Character} and
! @code{Wide_[Wide_]String}.
  
  RM References:  A.03.05 (0)   A.03.06 (0)
  @end itemize
*************** RM References:  A.03.05 (0)   A.03.06 (0
*** 27810,27819 ****
  @item 
  @emph{AI-0031 Add From parameter to Find_Token (2010-07-25)}
  
! A new version of @cite{Find_Token} is added to all relevant string packages,
! with an extra parameter @cite{From}. Instead of starting at the first
  character of the string, the search for a matching Token starts at the
! character indexed by the value of @cite{From}.
  These procedures are available in all versions of Ada
  but if used in versions earlier than Ada 2012 they will generate a warning
  that an Ada 2012 subprogram is being used.
--- 28156,28165 ----
  @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
  character of the string, the search for a matching Token starts at the
! character indexed by the value of @code{From}.
  These procedures are available in all versions of Ada
  but if used in versions earlier than Ada 2012 they will generate a warning
  that an Ada 2012 subprogram is being used.
*************** A.04.05 (46)
*** 27831,27837 ****
  @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
! @cite{Index} functions, resulting in raising an exception instead of
  returning zero in some situations.
  This was not intended and has been corrected.
  GNAT always returned zero, and is thus consistent with this AI.
--- 28177,28183 ----
  @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
  returning zero in some situations.
  This was not intended and has been corrected.
  GNAT always returned zero, and is thus consistent with this AI.
*************** RM References:  A.04.03 (56.2/2)   A.04.
*** 27847,27866 ****
  @item 
  @emph{AI-0137 String encoding package (2010-03-25)}
  
! The packages @cite{Ada.Strings.UTF_Encoding}, together with its child
! packages, @cite{Conversions}, @cite{Strings}, @cite{Wide_Strings},
! and @cite{Wide_Wide_Strings} have been
  implemented. These packages (whose documentation can be found in the spec
  files @code{a-stuten.ads}, @code{a-suenco.ads}, @code{a-suenst.ads},
  @code{a-suewst.ads}, @code{a-suezst.ads}) allow encoding and decoding of
! @cite{String}, @cite{Wide_String}, and @cite{Wide_Wide_String}
  values using UTF coding schemes (including UTF-8, UTF-16LE, UTF-16BE, and
  UTF-16), as well as conversions between the different UTF encodings. With
! the exception of @cite{Wide_Wide_Strings}, these packages are available in
  Ada 95 and Ada 2005 mode as well as Ada 2012 mode.
! The @cite{Wide_Wide_Strings package}
  is available in Ada 2005 mode as well as Ada 2012 mode (but not in Ada 95
! mode since it uses @cite{Wide_Wide_Character}).
  
  RM References:  A.04.11
  @end itemize
--- 28193,28212 ----
  @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},
! and @code{Wide_Wide_Strings} have been
  implemented. These packages (whose documentation can be found in the spec
  files @code{a-stuten.ads}, @code{a-suenco.ads}, @code{a-suenst.ads},
  @code{a-suewst.ads}, @code{a-suezst.ads}) allow encoding and decoding of
! @code{String}, @code{Wide_String}, and @code{Wide_Wide_String}
  values using UTF coding schemes (including UTF-8, UTF-16LE, UTF-16BE, and
  UTF-16), as well as conversions between the different UTF encodings. With
! the exception of @code{Wide_Wide_Strings}, these packages are available in
  Ada 95 and Ada 2005 mode as well as Ada 2012 mode.
! The @code{Wide_Wide_Strings} package
  is available in Ada 2005 mode as well as Ada 2012 mode (but not in Ada 95
! mode since it uses @code{Wide_Wide_Character}).
  
  RM References:  A.04.11
  @end itemize
*************** A.19.07    A.19.08    A.19.09    A.19.10
*** 27919,27925 ****
  
  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
! array type (such as @cite{String}). GNAT allows such declarations but
  generates warnings. It is possible, but complicated, to write the
  corresponding C code and certainly such code would be specific to GNAT and
  non-portable.
--- 28265,28271 ----
  
  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
! array type (such as @code{String}). GNAT allows such declarations but
  generates warnings. It is possible, but complicated, to write the
  corresponding C code and certainly such code would be specific to GNAT and
  non-portable.
*************** RM References:  B.01 (17)   B.03 (62)
*** 27935,27941 ****
  @item 
  @emph{AI-0216 No_Task_Hierarchy forbids local tasks (0000-00-00)}
  
! It is clearly the intention that @cite{No_Task_Hierarchy} is intended to
  forbid tasks declared locally within subprograms, or functions returning task
  objects, and that is the implementation that GNAT has always provided.
  However the language in the RM was not sufficiently clear on this point.
--- 28281,28287 ----
  @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
  objects, and that is the implementation that GNAT has always provided.
  However the language in the RM was not sufficiently clear on this point.
*************** RM References:  D.07 (3/3)
*** 27952,27959 ****
  @item 
  @emph{AI-0211 No_Relative_Delays forbids Set_Handler use (2010-07-09)}
  
! The restriction @cite{No_Relative_Delays} forbids any calls to the subprogram
! @cite{Ada.Real_Time.Timing_Events.Set_Handler}.
  
  RM References:  D.07 (5)   D.07 (10/2)   D.07 (10.4/2)   D.07 (10.7/2)
  @end itemize
--- 28298,28305 ----
  @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}.
  
  RM References:  D.07 (5)   D.07 (10/2)   D.07 (10.4/2)   D.07 (10.7/2)
  @end itemize
*************** RM References:  D.07 (5)   D.07 (10/2)
*** 27966,27972 ****
  @item 
  @emph{AI-0190 pragma Default_Storage_Pool (2010-09-15)}
  
! This AI introduces a new pragma @cite{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,
--- 28312,28318 ----
  @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,
*************** RM References:  D.07 (8)
*** 27984,27990 ****
  @item 
  @emph{AI-0189 No_Allocators_After_Elaboration (2010-01-23)}
  
! This AI introduces a new restriction @cite{No_Allocators_After_Elaboration},
  which says that no dynamic allocation will occur once elaboration is
  completed.
  In general this requires a run-time check, which is not required, and which
--- 28330,28336 ----
  @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
  completed.
  In general this requires a run-time check, which is not required, and which
*************** RM References:  D.07 (19.1/2)   H.04 (23
*** 28003,28011 ****
  @item 
  @emph{AI-0171 Pragma CPU and Ravenscar Profile (2010-09-24)}
  
! A new package @cite{System.Multiprocessors} is added, together with the
! definition of pragma @cite{CPU} for controlling task affinity. A new no
! dependence restriction, on @cite{System.Multiprocessors.Dispatching_Domains},
  is added to the Ravenscar profile.
  
  RM References:  D.13.01 (4/2)   D.16
--- 28349,28357 ----
  @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
! dependence restriction, on @code{System.Multiprocessors.Dispatching_Domains},
  is added to the Ravenscar profile.
  
  RM References:  D.13.01 (4/2)   D.16
*************** RM References:  E.02.02 (6)
*** 28047,28060 ****
  @item 
  @emph{AI-0152 Restriction No_Anonymous_Allocators (2010-09-08)}
  
! Restriction @cite{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)
  @end itemize
  
  @node Obsolescent Features,Compatibility and Porting Guide,Implementation of Ada 2012 Features,Top
! @anchor{gnat_rm/obsolescent_features id1}@anchor{41a}@anchor{gnat_rm/obsolescent_features doc}@anchor{41b}@anchor{gnat_rm/obsolescent_features obsolescent-features}@anchor{15}
  @chapter Obsolescent Features
  
  
--- 28393,28406 ----
  @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.
  
  RM References:  H.04 (8/1)
  @end itemize
  
  @node Obsolescent Features,Compatibility and Porting Guide,Implementation of Ada 2012 Features,Top
! @anchor{gnat_rm/obsolescent_features id1}@anchor{42a}@anchor{gnat_rm/obsolescent_features doc}@anchor{42b}@anchor{gnat_rm/obsolescent_features obsolescent-features}@anchor{15}
  @chapter Obsolescent Features
  
  
*************** compatibility purposes.
*** 28073,28083 ****
  @end menu
  
  @node pragma No_Run_Time,pragma Ravenscar,,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features id2}@anchor{41c}@anchor{gnat_rm/obsolescent_features pragma-no-run-time}@anchor{41d}
  @section pragma No_Run_Time
  
  
! The pragma @cite{No_Run_Time} is used to achieve an affect similar
  to the use of the "Zero Foot Print" configurable run time, but without
  requiring a specially configured run time. The result of using this
  pragma, which must be used for all units in a partition, is to restrict
--- 28419,28429 ----
  @end menu
  
  @node pragma No_Run_Time,pragma Ravenscar,,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features id2}@anchor{42c}@anchor{gnat_rm/obsolescent_features pragma-no-run-time}@anchor{42d}
  @section pragma No_Run_Time
  
  
! The pragma @code{No_Run_Time} is used to achieve an affect similar
  to the use of the "Zero Foot Print" configurable run time, but without
  requiring a specially configured run time. The result of using this
  pragma, which must be used for all units in a partition, is to restrict
*************** preferred usage is to use an appropriate
*** 28086,28117 ****
  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{41e}@anchor{gnat_rm/obsolescent_features pragma-ravenscar}@anchor{41f}
  @section pragma Ravenscar
  
  
! The pragma @cite{Ravenscar} has exactly the same effect as pragma
! @cite{Profile (Ravenscar)}. The latter usage is preferred since it
  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 pragma-restricted-run-time}@anchor{420}@anchor{gnat_rm/obsolescent_features id4}@anchor{421}
  @section pragma Restricted_Run_Time
  
  
! The pragma @cite{Restricted_Run_Time} has exactly the same effect as
! pragma @cite{Profile (Restricted)}. The latter usage is
! preferred since the Ada 2005 pragma @cite{Profile} is intended for
  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 pragma-task-info}@anchor{422}@anchor{gnat_rm/obsolescent_features id5}@anchor{423}
  @section pragma Task_Info
  
  
! The functionality provided by pragma @cite{Task_Info} is now part of the
! Ada language. The @cite{CPU} aspect and the package
! @cite{System.Multiprocessors} offer a less system-dependent way to specify
  task affinity or to query the number of processsors.
  
  Syntax
--- 28432,28463 ----
  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{42e}@anchor{gnat_rm/obsolescent_features pragma-ravenscar}@anchor{42f}
  @section pragma Ravenscar
  
  
! The pragma @code{Ravenscar} has exactly the same effect as pragma
! @code{Profile (Ravenscar)}. The latter usage is preferred since it
  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 pragma-restricted-run-time}@anchor{430}@anchor{gnat_rm/obsolescent_features id4}@anchor{431}
  @section pragma Restricted_Run_Time
  
  
! The pragma @code{Restricted_Run_Time} has exactly the same effect as
! pragma @code{Profile (Restricted)}. The latter usage is
! preferred since the Ada 2005 pragma @code{Profile} is intended for
  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 pragma-task-info}@anchor{432}@anchor{gnat_rm/obsolescent_features id5}@anchor{433}
  @section pragma Task_Info
  
  
! The functionality provided by pragma @code{Task_Info} is now part of the
! Ada language. The @code{CPU} aspect and the package
! @code{System.Multiprocessors} offer a less system-dependent way to specify
  task affinity or to query the number of processsors.
  
  Syntax
*************** pragma Task_Info (EXPRESSION);
*** 28121,28129 ****
  @end example
  
  This pragma appears within a task definition (like pragma
! @cite{Priority}) and applies to the task in which it appears.  The
! argument must be of type @cite{System.Task_Info.Task_Info_Type}.
! The @cite{Task_Info} pragma provides system dependent control over
  aspects of tasking implementation, for example, the ability to map
  tasks to specific processors.  For details on the facilities available
  for the version of GNAT that you are using, see the documentation
--- 28467,28475 ----
  @end example
  
  This pragma appears within a task definition (like pragma
! @code{Priority}) and applies to the task in which it appears.  The
! argument must be of type @code{System.Task_Info.Task_Info_Type}.
! The @code{Task_Info} pragma provides system dependent control over
  aspects of tasking implementation, for example, the ability to map
  tasks to specific processors.  For details on the facilities available
  for the version of GNAT that you are using, see the documentation
*************** in the spec of package System.Task_Info
*** 28131,28147 ****
  library.
  
  @node package System Task_Info s-tasinf ads,,pragma Task_Info,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features package-system-task-info}@anchor{424}@anchor{gnat_rm/obsolescent_features package-system-task-info-s-tasinf-ads}@anchor{425}
  @section package System.Task_Info (@code{s-tasinf.ads})
  
  
  This package provides target dependent functionality that is used
! to support the @cite{Task_Info} pragma. The predefined Ada package
! @cite{System.Multiprocessors} and the @cite{CPU} aspect now provide a
! standard replacement for GNAT's @cite{Task_Info} functionality.
  
  @node Compatibility and Porting Guide,GNU Free Documentation License,Obsolescent Features,Top
! @anchor{gnat_rm/compatibility_and_porting_guide compatibility-and-porting-guide}@anchor{16}@anchor{gnat_rm/compatibility_and_porting_guide doc}@anchor{426}@anchor{gnat_rm/compatibility_and_porting_guide id1}@anchor{427}
  @chapter Compatibility and Porting Guide
  
  
--- 28477,28493 ----
  library.
  
  @node package System Task_Info s-tasinf ads,,pragma Task_Info,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features package-system-task-info}@anchor{434}@anchor{gnat_rm/obsolescent_features package-system-task-info-s-tasinf-ads}@anchor{435}
  @section package System.Task_Info (@code{s-tasinf.ads})
  
  
  This package provides target dependent functionality that is used
! to support the @code{Task_Info} pragma. The predefined Ada package
! @code{System.Multiprocessors} and the @code{CPU} aspect now provide a
! 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 compatibility-and-porting-guide}@anchor{16}@anchor{gnat_rm/compatibility_and_porting_guide doc}@anchor{436}@anchor{gnat_rm/compatibility_and_porting_guide id1}@anchor{437}
  @chapter Compatibility and Porting Guide
  
  
*************** applications developed in other Ada envi
*** 28163,28174 ****
  @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{428}@anchor{gnat_rm/compatibility_and_porting_guide writing-portable-fixed-point-declarations}@anchor{429}
  @section Writing Portable Fixed-Point Declarations
  
  
  The Ada Reference Manual gives an implementation freedom to choose bounds
! that are narrower by @cite{Small} from the given bounds.
  For example, if we write
  
  @example
--- 28509,28520 ----
  @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{438}@anchor{gnat_rm/compatibility_and_porting_guide writing-portable-fixed-point-declarations}@anchor{439}
  @section Writing Portable Fixed-Point Declarations
  
  
  The Ada Reference Manual gives an implementation freedom to choose bounds
! that are narrower by @code{Small} from the given bounds.
  For example, if we write
  
  @example
*************** look at this, and figure out how to avoi
*** 28183,28189 ****
  
  First, why does this freedom exist, and why would an implementation
  take advantage of it? To answer this, take a closer look at the type
! declaration for @cite{F1} above. If the compiler uses the given bounds,
  it would need 9 bits to hold the largest positive value (and typically
  that means 16 bits on all machines). But if the implementation chooses
  the +127.0 bound then it can fit values of the type in 8 bits.
--- 28529,28535 ----
  
  First, why does this freedom exist, and why would an implementation
  take advantage of it? To answer this, take a closer look at the type
! declaration for @code{F1} above. If the compiler uses the given bounds,
  it would need 9 bits to hold the largest positive value (and typically
  that means 16 bits on all machines). But if the implementation chooses
  the +127.0 bound then it can fit values of the type in 8 bits.
*************** those that narrow the range automaticall
*** 28224,28230 ****
  out that the narrower range will allow storage in a smaller machine unit,
  
  @item 
! those that will narrow only if forced to by a @cite{'Size} clause, and
  
  @item 
  those that will never narrow.
--- 28570,28576 ----
  out that the narrower range will allow storage in a smaller machine unit,
  
  @item 
! those that will narrow only if forced to by a @code{'Size} clause, and
  
  @item 
  those that will never narrow.
*************** and no real compiler would do this. All
*** 28248,28256 ****
  the categories (a), (b) or (c) above.
  
  So, how do you get the compiler to do what you want? The answer is give the
! actual bounds you want, and then use a @cite{'Small} clause and a
! @cite{'Size} clause to absolutely pin down what the compiler does.
! E.g., for @cite{F2} above, we will write:
  
  @example
  My_Small : constant := 2.0**(-15);
--- 28594,28602 ----
  the categories (a), (b) or (c) above.
  
  So, how do you get the compiler to do what you want? The answer is give the
! actual bounds you want, and then use a @code{'Small} clause and a
! @code{'Size} clause to absolutely pin down what the compiler does.
! E.g., for @code{F2} above, we will write:
  
  @example
  My_Small : constant := 2.0**(-15);
*************** If you follow this scheme you will be gu
*** 28285,28291 ****
  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{42a}@anchor{gnat_rm/compatibility_and_porting_guide id3}@anchor{42b}
  @section Compatibility with Ada 83
  
  
--- 28631,28637 ----
  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{43a}@anchor{gnat_rm/compatibility_and_porting_guide id3}@anchor{43b}
  @section Compatibility with Ada 83
  
  
*************** following subsections treat the most lik
*** 28313,28319 ****
  @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{42c}@anchor{gnat_rm/compatibility_and_porting_guide legal-ada-83-programs-that-are-illegal-in-ada-95}@anchor{42d}
  @subsection Legal Ada 83 programs that are illegal in Ada 95
  
  
--- 28659,28665 ----
  @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{43c}@anchor{gnat_rm/compatibility_and_porting_guide legal-ada-83-programs-that-are-illegal-in-ada-95}@anchor{43d}
  @subsection Legal Ada 83 programs that are illegal in Ada 95
  
  
*************** Ada 95 and later versions of the standar
*** 28327,28333 ****
  @emph{Character literals}
  
  Some uses of character literals are ambiguous.  Since Ada 95 has introduced
! @cite{Wide_Character} as a new predefined character type, some uses of
  character literals that were legal in Ada 83 are illegal in Ada 95.
  For example:
  
--- 28673,28679 ----
  @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
  character literals that were legal in Ada 83 are illegal in Ada 95.
  For example:
  
*************** for Char in 'A' .. 'Z' loop ... end loop
*** 28336,28342 ****
  @end example
  
  The problem is that 'A' and 'Z' could be from either
! @cite{Character} or @cite{Wide_Character}.  The simplest correction
  is to make the type explicit; e.g.:
  
  @example
--- 28682,28688 ----
  @end example
  
  The problem is that 'A' and 'Z' could be from either
! @code{Character} or @code{Wide_Character}.  The simplest correction
  is to make the type explicit; e.g.:
  
  @example
*************** for Char in Character range 'A' .. 'Z' l
*** 28346,28353 ****
  @item 
  @emph{New reserved words}
  
! The identifiers @cite{abstract}, @cite{aliased}, @cite{protected},
! @cite{requeue}, @cite{tagged}, and @cite{until} are reserved in Ada 95.
  Existing Ada 83 code using any of these identifiers must be edited to
  use some alternative name.
  
--- 28692,28699 ----
  @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.
  Existing Ada 83 code using any of these identifiers must be edited to
  use some alternative name.
  
*************** permitted to have a body.  To fix this p
*** 28376,28419 ****
  body if it is empty, or, if it is non-empty, introduce a dummy declaration
  into the spec that makes the body required.  One approach is to add a private
  part to the package declaration (if necessary), and define a parameterless
! procedure called @cite{Requires_Body}, which must then be given a dummy
  procedure body in the package body, which then becomes required.
  Another approach (assuming that this does not introduce elaboration
! circularities) is to add an @cite{Elaborate_Body} pragma to the package spec,
  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 @cite{Numeric_Error} is a renaming of @cite{Constraint_Error}.
  This means that it is illegal to have separate exception handlers for
  the two exceptions.  The fix is simply to remove the handler for the
! @cite{Numeric_Error} case (since even in Ada 83, a compiler was free to raise
! @cite{Constraint_Error} in place of @cite{Numeric_Error} in all cases).
  
  @item 
  @emph{Indefinite subtypes in generics}
  
! In Ada 83, it was permissible to pass an indefinite type (e.g, @cite{String})
  as the actual for a generic formal private type, but then the instantiation
  would be illegal if there were any instances of declarations of variables
  of this type in the generic body.  In Ada 95, to avoid this clear violation
  of the methodological principle known as the 'contract model',
  the generic declaration explicitly indicates whether
  or not such instantiations are permitted.  If a generic formal parameter
! has explicit unknown discriminants, indicated by using @cite{(<>)} after the
  subtype name, then it can be instantiated with indefinite types, but no
  stand-alone variables can be declared of this type.  Any attempt to declare
  such a variable will result in an illegality at the time the generic is
! declared.  If the @cite{(<>)} notation is not used, then it is illegal
  to instantiate the generic with an indefinite type.
  This is the potential incompatibility issue when porting Ada 83 code to Ada 95.
  It will show up as a compile time error, and
! the fix is usually simply to add the @cite{(<>)} to the generic declaration.
  @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 more-deterministic-semantics}@anchor{42e}@anchor{gnat_rm/compatibility_and_porting_guide id5}@anchor{42f}
  @subsection More deterministic semantics
  
  
--- 28722,28765 ----
  body if it is empty, or, if it is non-empty, introduce a dummy declaration
  into the spec that makes the body required.  One approach is to add a private
  part to the package declaration (if necessary), and define a parameterless
! procedure called @code{Requires_Body}, which must then be given a dummy
  procedure body in the package body, which then becomes required.
  Another approach (assuming that this does not introduce elaboration
! circularities) is to add an @code{Elaborate_Body} pragma to the package spec,
  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
  the two exceptions.  The fix is simply to remove the handler for the
! @code{Numeric_Error} case (since even in Ada 83, a compiler was free to raise
! @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
  would be illegal if there were any instances of declarations of variables
  of this type in the generic body.  In Ada 95, to avoid this clear violation
  of the methodological principle known as the 'contract model',
  the generic declaration explicitly indicates whether
  or not such instantiations are permitted.  If a generic formal parameter
! has explicit unknown discriminants, indicated by using @code{(<>)} after the
  subtype name, then it can be instantiated with indefinite types, but no
  stand-alone variables can be declared of this type.  Any attempt to declare
  such a variable will result in an illegality at the time the generic is
! declared.  If the @code{(<>)} notation is not used, then it is illegal
  to instantiate the generic with an indefinite type.
  This is the potential incompatibility issue when porting Ada 83 code to Ada 95.
  It will show up as a compile time error, and
! the fix is usually simply to add the @code{(<>)} to the generic declaration.
  @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 more-deterministic-semantics}@anchor{43e}@anchor{gnat_rm/compatibility_and_porting_guide id5}@anchor{43f}
  @subsection More deterministic semantics
  
  
*************** which open select branches are executed.
*** 28441,28447 ****
  @end itemize
  
  @node Changed semantics,Other language compatibility issues,More deterministic semantics,Compatibility with Ada 83
! @anchor{gnat_rm/compatibility_and_porting_guide id6}@anchor{430}@anchor{gnat_rm/compatibility_and_porting_guide changed-semantics}@anchor{431}
  @subsection Changed semantics
  
  
--- 28787,28793 ----
  @end itemize
  
  @node Changed semantics,Other language compatibility issues,More deterministic semantics,Compatibility with Ada 83
! @anchor{gnat_rm/compatibility_and_porting_guide id6}@anchor{440}@anchor{gnat_rm/compatibility_and_porting_guide changed-semantics}@anchor{441}
  @subsection Changed semantics
  
  
*************** The worst kind of incompatibility is one
*** 28449,28455 ****
  Ada 83 is also legal in Ada 95 but can have an effect in Ada 95 that was not
  possible in Ada 83.  Fortunately this is extremely rare, but the one
  situation that you should be alert to is the change in the predefined type
! @cite{Character} from 7-bit ASCII to 8-bit Latin-1.
  
  @quotation
  
--- 28795,28801 ----
  Ada 83 is also legal in Ada 95 but can have an effect in Ada 95 that was not
  possible in Ada 83.  Fortunately this is extremely rare, but the one
  situation that you should be alert to is the change in the predefined type
! @code{Character} from 7-bit ASCII to 8-bit Latin-1.
  
  @quotation
  
*************** situation that you should be alert to is
*** 28460,28476 ****
  @itemize *
  
  @item 
! @emph{Range of type `Character`}
  
! The range of @cite{Standard.Character} is now the full 256 characters
  of Latin-1, whereas in most Ada 83 implementations it was restricted
  to 128 characters. Although some of the effects of
  this change will be manifest in compile-time rejection of legal
  Ada 83 programs it is possible for a working Ada 83 program to have
  a different effect in Ada 95, one that was not permitted in Ada 83.
  As an example, the expression
! @cite{Character'Pos(Character'Last)} returned @cite{127} in Ada 83 and now
! delivers @cite{255} as its value.
  In general, you should look at the logic of any
  character-processing Ada 83 program and see whether it needs to be adapted
  to work correctly with Latin-1.  Note that the predefined Ada 95 API has a
--- 28806,28822 ----
  @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
  to 128 characters. Although some of the effects of
  this change will be manifest in compile-time rejection of legal
  Ada 83 programs it is possible for a working Ada 83 program to have
  a different effect in Ada 95, one that was not permitted in Ada 83.
  As an example, the expression
! @code{Character'Pos(Character'Last)} returned @code{127} in Ada 83 and now
! delivers @code{255} as its value.
  In general, you should look at the logic of any
  character-processing Ada 83 program and see whether it needs to be adapted
  to work correctly with Latin-1.  Note that the predefined Ada 95 API has a
*************** covers only the restricted range.
*** 28483,28489 ****
  @end itemize
  
  @node Other language compatibility issues,,Changed semantics,Compatibility with Ada 83
! @anchor{gnat_rm/compatibility_and_porting_guide other-language-compatibility-issues}@anchor{432}@anchor{gnat_rm/compatibility_and_porting_guide id7}@anchor{433}
  @subsection Other language compatibility issues
  
  
--- 28829,28835 ----
  @end itemize
  
  @node Other language compatibility issues,,Changed semantics,Compatibility with Ada 83
! @anchor{gnat_rm/compatibility_and_porting_guide other-language-compatibility-issues}@anchor{442}@anchor{gnat_rm/compatibility_and_porting_guide id7}@anchor{443}
  @subsection Other language compatibility issues
  
  
*************** new reserved words introduced in Ada 95
*** 28500,28506 ****
  as identifiers as in Ada 83.  However,
  in practice, it is usually advisable to make the necessary modifications
  to the program to remove the need for using this switch.
! See the @cite{Compiling Different Versions of Ada} section in
  the @cite{GNAT User's Guide}.
  
  @item 
--- 28846,28852 ----
  as identifiers as in Ada 83.  However,
  in practice, it is usually advisable to make the necessary modifications
  to the program to remove the need for using this switch.
! See the @code{Compiling Different Versions of Ada} section in
  the @cite{GNAT User's Guide}.
  
  @item 
*************** generally because they were replaced by
*** 28511,28522 ****
  compilers are allowed, but not required, to implement these missing
  elements.  In contrast with some other compilers, GNAT implements all
  such pragmas and attributes, eliminating this compatibility concern.  These
! include @cite{pragma Interface} and the floating point type attributes
! (@cite{Emax}, @cite{Mantissa}, etc.), among other items.
  @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{434}@anchor{gnat_rm/compatibility_and_porting_guide id8}@anchor{435}
  @section Compatibility between Ada 95 and Ada 2005
  
  
--- 28857,28868 ----
  compilers are allowed, but not required, to implement these missing
  elements.  In contrast with some other compilers, GNAT implements all
  such pragmas and attributes, eliminating this compatibility concern.  These
! include @code{pragma Interface} and the floating point type attributes
! (@code{Emax}, @code{Mantissa}, etc.), among other items.
  @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{444}@anchor{gnat_rm/compatibility_and_porting_guide id8}@anchor{445}
  @section Compatibility between Ada 95 and Ada 2005
  
  
*************** for a complete description please see th
*** 28534,28540 ****
  @item 
  @emph{New reserved words.}
  
! The words @cite{interface}, @cite{overriding} and @cite{synchronized} are
  reserved in Ada 2005.
  A pre-Ada 2005 program that uses any of these as an identifier will be
  illegal.
--- 28880,28886 ----
  @item 
  @emph{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 these as an identifier will be
  illegal.
*************** illegal.
*** 28543,28554 ****
  @emph{New declarations in predefined packages.}
  
  A number of packages in the predefined environment contain new declarations:
! @cite{Ada.Exceptions}, @cite{Ada.Real_Time}, @cite{Ada.Strings},
! @cite{Ada.Strings.Fixed}, @cite{Ada.Strings.Bounded},
! @cite{Ada.Strings.Unbounded}, @cite{Ada.Strings.Wide_Fixed},
! @cite{Ada.Strings.Wide_Bounded}, @cite{Ada.Strings.Wide_Unbounded},
! @cite{Ada.Tags}, @cite{Ada.Text_IO}, and @cite{Interfaces.C}.
! If an Ada 95 program does a @cite{with} and @cite{use} of any of these
  packages, the new declarations may cause name clashes.
  
  @item 
--- 28889,28900 ----
  @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},
! @code{Ada.Strings.Fixed}, @code{Ada.Strings.Bounded},
! @code{Ada.Strings.Unbounded}, @code{Ada.Strings.Wide_Fixed},
! @code{Ada.Strings.Wide_Bounded}, @code{Ada.Strings.Wide_Unbounded},
! @code{Ada.Tags}, @code{Ada.Text_IO}, and @code{Interfaces.C}.
! If an Ada 95 program does a @code{with} and @code{use} of any of these
  packages, the new declarations may cause name clashes.
  
  @item 
*************** were legal in Ada 95 and invoked the pre
*** 28578,28584 ****
  are now ambiguous.
  The ambiguity may be resolved either by applying a type conversion to the
  expression, or by explicitly invoking the operation from package
! @cite{Standard}.
  
  @item 
  @emph{Return-by-reference types.}
--- 28924,28930 ----
  are now ambiguous.
  The ambiguity may be resolved either by applying a type conversion to the
  expression, or by explicitly invoking the operation from package
! @code{Standard}.
  
  @item 
  @emph{Return-by-reference types.}
*************** can declare a function returning a value
*** 28588,28594 ****
  @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 implementation-dependent-characteristics}@anchor{436}@anchor{gnat_rm/compatibility_and_porting_guide id9}@anchor{437}
  @section Implementation-dependent characteristics
  
  
--- 28934,28940 ----
  @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 implementation-dependent-characteristics}@anchor{446}@anchor{gnat_rm/compatibility_and_porting_guide id9}@anchor{447}
  @section Implementation-dependent characteristics
  
  
*************** transition from certain Ada 83 compilers
*** 28611,28653 ****
  @end menu
  
  @node Implementation-defined pragmas,Implementation-defined attributes,,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide implementation-defined-pragmas}@anchor{438}@anchor{gnat_rm/compatibility_and_porting_guide id10}@anchor{439}
  @subsection Implementation-defined pragmas
  
  
  Ada compilers are allowed to supplement the language-defined pragmas, and
  these are a potential source of non-portability.  All GNAT-defined pragmas
! are described in the @cite{Implementation Defined Pragmas} chapter of the
! @cite{GNAT Reference Manual}, and these include several that are specifically
  intended to correspond to other vendors' Ada 83 pragmas.
! For migrating from VADS, the pragma @cite{Use_VADS_Size} may be useful.
  For compatibility with HP Ada 83, GNAT supplies the pragmas
! @cite{Extend_System}, @cite{Ident}, @cite{Inline_Generic},
! @cite{Interface_Name}, @cite{Passive}, @cite{Suppress_All},
! and @cite{Volatile}.
! Other relevant pragmas include @cite{External} and @cite{Link_With}.
  Some vendor-specific
! Ada 83 pragmas (@cite{Share_Generic}, @cite{Subtitle}, and @cite{Title}) are
  recognized, thus
  avoiding compiler rejection of units that contain such pragmas; they are not
  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{43a}@anchor{gnat_rm/compatibility_and_porting_guide implementation-defined-attributes}@anchor{43b}
  @subsection Implementation-defined attributes
  
  
  Analogous to pragmas, the set of attributes may be extended by an
  implementation.  All GNAT-defined attributes are described in
! @cite{Implementation Defined Attributes} section of the
! @cite{GNAT Reference Manual}, and these include several that are specifically intended
  to correspond to other vendors' Ada 83 attributes.  For migrating from VADS,
! the attribute @cite{VADS_Size} may be useful.  For compatibility with HP
! Ada 83, GNAT supplies the attributes @cite{Bit}, @cite{Machine_Size} and
! @cite{Type_Class}.
  
  @node Libraries,Elaboration order,Implementation-defined attributes,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide libraries}@anchor{43c}@anchor{gnat_rm/compatibility_and_porting_guide id12}@anchor{43d}
  @subsection Libraries
  
  
--- 28957,28999 ----
  @end menu
  
  @node Implementation-defined pragmas,Implementation-defined attributes,,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide implementation-defined-pragmas}@anchor{448}@anchor{gnat_rm/compatibility_and_porting_guide id10}@anchor{449}
  @subsection Implementation-defined pragmas
  
  
  Ada compilers are allowed to supplement the language-defined pragmas, and
  these are a potential source of non-portability.  All GNAT-defined pragmas
! are described in @ref{7,,Implementation Defined Pragmas},
! and these include several that are specifically
  intended to correspond to other vendors' Ada 83 pragmas.
! For migrating from VADS, the pragma @code{Use_VADS_Size} may be useful.
  For compatibility with HP Ada 83, GNAT supplies the pragmas
! @code{Extend_System}, @code{Ident}, @code{Inline_Generic},
! @code{Interface_Name}, @code{Passive}, @code{Suppress_All},
! and @code{Volatile}.
! Other relevant pragmas include @code{External} and @code{Link_With}.
  Some vendor-specific
! Ada 83 pragmas (@code{Share_Generic}, @code{Subtitle}, and @code{Title}) are
  recognized, thus
  avoiding compiler rejection of units that contain such pragmas; they are not
  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{44a}@anchor{gnat_rm/compatibility_and_porting_guide implementation-defined-attributes}@anchor{44b}
  @subsection Implementation-defined attributes
  
  
  Analogous to pragmas, the set of attributes may be extended by an
  implementation.  All GNAT-defined attributes are described in
! @ref{8,,Implementation Defined Attributes},
! and these include several that are specifically intended
  to correspond to other vendors' Ada 83 attributes.  For migrating from VADS,
! the attribute @code{VADS_Size} may be useful.  For compatibility with HP
! Ada 83, GNAT supplies the attributes @code{Bit}, @code{Machine_Size} and
! @code{Type_Class}.
  
  @node Libraries,Elaboration order,Implementation-defined attributes,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide libraries}@anchor{44c}@anchor{gnat_rm/compatibility_and_porting_guide id12}@anchor{44d}
  @subsection Libraries
  
  
*************** be preferable to retrofit the applicatio
*** 28676,28682 ****
  @end itemize
  
  @node Elaboration order,Target-specific aspects,Libraries,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide elaboration-order}@anchor{43e}@anchor{gnat_rm/compatibility_and_porting_guide id13}@anchor{43f}
  @subsection Elaboration order
  
  
--- 29022,29028 ----
  @end itemize
  
  @node Elaboration order,Target-specific aspects,Libraries,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide elaboration-order}@anchor{44e}@anchor{gnat_rm/compatibility_and_porting_guide id13}@anchor{44f}
  @subsection Elaboration order
  
  
*************** Program_Error being raised due to an 'Ac
*** 28686,28696 ****
  to invoke a subprogram before its body has been elaborated, or to instantiate
  a generic before the generic body has been elaborated.  By default GNAT
  attempts to choose a safe order (one that will not encounter access before
! elaboration problems) by implicitly inserting @cite{Elaborate} or
! @cite{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 @cite{Elaboration Order Handling in GNAT} appendix
  in the @cite{GNAT User's Guide}.
  In brief, there are several
  ways to deal with this situation:
--- 29032,29042 ----
  to invoke a subprogram before its body has been elaborated, or to instantiate
  a generic before the generic body has been elaborated.  By default GNAT
  attempts to choose a safe order (one that will not encounter access before
! elaboration problems) by implicitly inserting @code{Elaborate} or
! @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:
*************** Modify the program to eliminate the circ
*** 28703,28718 ****
  elaboration-time code into explicitly-invoked procedures
  
  @item 
! Constrain the elaboration order by including explicit @cite{Elaborate_Body} or
! @cite{Elaborate} pragmas, and then inhibit the generation of implicit
! @cite{Elaborate_All}
  pragmas either globally (as an effect of the @emph{-gnatE} switch) or locally
  (by selectively suppressing elaboration checks via pragma
! @cite{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 target-specific-aspects}@anchor{440}@anchor{gnat_rm/compatibility_and_porting_guide id14}@anchor{441}
  @subsection Target-specific aspects
  
  
--- 29049,29064 ----
  elaboration-time code into explicitly-invoked procedures
  
  @item 
! 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 target-specific-aspects}@anchor{450}@anchor{gnat_rm/compatibility_and_porting_guide id14}@anchor{451}
  @subsection Target-specific aspects
  
  
*************** on the robustness of the original design
*** 28725,28734 ****
  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{442,,Representation Clauses}.
  
  @node Compatibility with Other Ada Systems,Representation Clauses,Implementation-dependent characteristics,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide id15}@anchor{443}@anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-other-ada-systems}@anchor{444}
  @section Compatibility with Other Ada Systems
  
  
--- 29071,29080 ----
  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{452,,Representation Clauses}.
  
  @node Compatibility with Other Ada Systems,Representation Clauses,Implementation-dependent characteristics,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide id15}@anchor{453}@anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-other-ada-systems}@anchor{454}
  @section Compatibility with Other Ada Systems
  
  
*************** far beyond this minimal set, as describe
*** 28771,28777 ****
  @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 representation-clauses}@anchor{442}@anchor{gnat_rm/compatibility_and_porting_guide id16}@anchor{445}
  @section Representation Clauses
  
  
--- 29117,29123 ----
  @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 representation-clauses}@anchor{452}@anchor{gnat_rm/compatibility_and_porting_guide id16}@anchor{455}
  @section Representation Clauses
  
  
*************** and this recommendation is represented e
*** 28807,28813 ****
  Reference Manuals as implementation advice that is followed by GNAT.
  The problem will show up as an error
  message rejecting the size clause.  The fix is simply to provide
! the explicit pragma @cite{Pack}, or for more fine tuned control, provide
  a Component_Size clause.
  
  @item 
--- 29153,29159 ----
  Reference Manuals as implementation advice that is followed by GNAT.
  The problem will show up as an error
  message rejecting the size clause.  The fix is simply to provide
! the explicit pragma @code{Pack}, or for more fine tuned control, provide
  a Component_Size clause.
  
  @item 
*************** a Component_Size clause.
*** 28815,28821 ****
  
  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,
! on a 32-bit machine, the size of @cite{Natural} will typically be 31 and not
  32 (since no sign bit is required).  Some Ada 83 compilers gave 31, and
  some 32 in this situation.  This problem will usually show up as a compile
  time error, but not always.  It is a good idea to check all uses of the
--- 29161,29167 ----
  
  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,
! on a 32-bit machine, the size of @code{Natural} will typically be 31 and not
  32 (since no sign bit is required).  Some Ada 83 compilers gave 31, and
  some 32 in this situation.  This problem will usually show up as a compile
  time error, but not always.  It is a good idea to check all uses of the
*************** with thin pointers.
*** 28864,28870 ****
  @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{446}@anchor{gnat_rm/compatibility_and_porting_guide id17}@anchor{447}
  @section Compatibility with HP Ada 83
  
  
--- 29210,29216 ----
  @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{456}@anchor{gnat_rm/compatibility_and_porting_guide id17}@anchor{457}
  @section Compatibility with HP Ada 83
  
  
*************** extension of package System.
*** 28894,28900 ****
  @end itemize
  
  @node GNU Free Documentation License,Index,Compatibility and Porting Guide,Top
! @anchor{share/gnu_free_documentation_license gnu-fdl}@anchor{1}@anchor{share/gnu_free_documentation_license doc}@anchor{448}@anchor{share/gnu_free_documentation_license gnu-free-documentation-license}@anchor{449}
  @chapter GNU Free Documentation License
  
  
--- 29240,29246 ----
  @end itemize
  
  @node GNU Free Documentation License,Index,Compatibility and Porting Guide,Top
! @anchor{share/gnu_free_documentation_license gnu-fdl}@anchor{1}@anchor{share/gnu_free_documentation_license doc}@anchor{458}@anchor{share/gnu_free_documentation_license gnu-free-documentation-license}@anchor{459}
  @chapter GNU Free Documentation License
  
  
diff -Nrcpad gcc-7.3.0/gcc/ada/gnat_ugn.texi gcc-8.1.0/gcc/ada/gnat_ugn.texi
*** gcc-7.3.0/gcc/ada/gnat_ugn.texi	Mon Apr  3 22:30:56 2017
--- gcc-8.1.0/gcc/ada/gnat_ugn.texi	Wed Apr 25 10:01:55 2018
***************
*** 3,9 ****
  @setfilename gnat_ugn.info
  @documentencoding UTF-8
  @ifinfo
! @*Generated by Sphinx 1.3b2.@*
  @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 1.3.6.@*
  @end ifinfo
  @settitle GNAT User's Guide for Native Platforms
  @defindex ge
***************
*** 21,31 ****
  
  @copying
  @quotation
! GNAT User's Guide for Native Platforms , January 13, 2017
  
  AdaCore
  
! Copyright @copyright{} 2008-2017, Free Software Foundation
  @end quotation
  
  @end copying
--- 21,31 ----
  
  @copying
  @quotation
! GNAT User's Guide for Native Platforms , April 25, 2018
  
  AdaCore
  
! Copyright @copyright{} 2008-2018, Free Software Foundation
  @end quotation
  
  @end copying
*************** The Cross-Referencing Tools gnatxref and
*** 331,337 ****
  
  * gnatxref Switches:: 
  * gnatfind Switches:: 
! * Project Files for gnatxref and gnatfind:: 
  * Regular Expressions in gnatfind and gnatxref:: 
  * Examples of gnatxref Usage:: 
  * Examples of gnatfind Usage:: 
--- 331,337 ----
  
  * gnatxref Switches:: 
  * gnatfind Switches:: 
! * Configuration Files for gnatxref and gnatfind:: 
  * Regular Expressions in gnatfind and gnatxref:: 
  * Examples of gnatxref Usage:: 
  * Examples of gnatfind Usage:: 
*************** Running and Debugging Ada Programs
*** 372,377 ****
--- 372,378 ----
  * Naming Conventions for GNAT Source Files:: 
  * Getting Internal Debugging Information:: 
  * Stack Traceback:: 
+ * Pretty-Printers for the GNAT runtime:: 
  
  Stack Traceback
  
*************** Platform-Specific Information
*** 445,450 ****
--- 446,452 ----
  
  * Run-Time Libraries:: 
  * Specifying a Run-Time Library:: 
+ * GNU/Linux Topics:: 
  * Microsoft Windows Topics:: 
  * Mac OS Topics:: 
  
*************** Run-Time Libraries
*** 455,463 ****
  Specifying a Run-Time Library
  
  * Choosing the Scheduling Policy:: 
! * Solaris-Specific Considerations:: 
! * Solaris Threads Issues:: 
! * AIX-Specific Considerations:: 
  
  Microsoft Windows Topics
  
--- 457,466 ----
  Specifying a Run-Time Library
  
  * Choosing the Scheduling Policy:: 
! 
! GNU/Linux Topics
! 
! * Required Packages on GNU/Linux:: 
  
  Microsoft Windows Topics
  
*************** Mac OS Topics
*** 531,549 ****
  Elaboration Order Handling in GNAT
  
  * Elaboration Code:: 
  * Checking the Elaboration Order:: 
! * Controlling the Elaboration Order:: 
! * Controlling Elaboration in GNAT - Internal Calls:: 
! * Controlling Elaboration in GNAT - External Calls:: 
! * Default Behavior in GNAT - Ensuring Safety:: 
! * Treatment of Pragma Elaborate:: 
! * Elaboration Issues for Library Tasks:: 
  * Mixing Elaboration Models:: 
! * What to Do If the Default Elaboration Behavior Fails:: 
! * Elaboration for Indirect Calls:: 
  * Summary of Procedures for Elaboration Control:: 
! * Other Elaboration Order Considerations:: 
! * Determining the Chosen Elaboration Order:: 
  
  Inline Assembler
  
--- 534,555 ----
  Elaboration Order Handling in GNAT
  
  * Elaboration Code:: 
+ * Elaboration Order:: 
  * Checking the Elaboration Order:: 
! * Controlling the Elaboration Order in Ada:: 
! * Controlling the Elaboration Order in GNAT:: 
! * Common Elaboration-model Traits:: 
! * Dynamic Elaboration Model in GNAT:: 
! * Static Elaboration Model in GNAT:: 
! * SPARK Elaboration Model in GNAT:: 
! * Legacy Elaboration Model in GNAT:: 
  * Mixing Elaboration Models:: 
! * Elaboration Circularities:: 
! * Resolving Elaboration Circularities:: 
! * Resolving Task Issues:: 
! * Elaboration-related Compiler Switches:: 
  * Summary of Procedures for Elaboration Control:: 
! * Inspecting the Chosen Elaboration Order:: 
  
  Inline Assembler
  
*************** the following material:
*** 725,731 ****
  @itemize -
  
  @item 
! The @cite{gnatname}, @cite{gnatkr}, and @cite{gnatchop} tools
  
  @item 
  @ref{14,,Configuration Pragmas}
--- 731,737 ----
  @itemize -
  
  @item 
! The @code{gnatname}, @code{gnatkr}, and @code{gnatchop} tools
  
  @item 
  @ref{14,,Configuration Pragmas}
*************** GNAT tools:
*** 833,841 ****
  @end itemize
  
  @item 
! The @cite{Compatibility and Porting Guide} appendix has been moved to the
  @cite{GNAT Reference Manual}. It now includes a section
! @cite{Writing Portable Fixed-Point Declarations} which was previously
  a separate chapter in the @cite{GNAT User's Guide}.
  @end itemize
  
--- 839,847 ----
  @end itemize
  
  @item 
! The @emph{Compatibility and Porting Guide} appendix has been moved to the
  @cite{GNAT Reference Manual}. It now includes a section
! @emph{Writing Portable Fixed-Point Declarations} which was previously
  a separate chapter in the @cite{GNAT User's Guide}.
  @end itemize
  
*************** in this guide:
*** 856,872 ****
  @itemize *
  
  @item 
! @cite{Functions}, @cite{utility program names}, @cite{standard names},
! and @cite{classes}.
  
  @item 
! @cite{Option flags}
  
  @item 
  @code{File names}
  
  @item 
! @cite{Variables}
  
  @item 
  @emph{Emphasis}
--- 862,878 ----
  @itemize *
  
  @item 
! @code{Functions}, @code{utility program names}, @code{standard names},
! and @code{classes}.
  
  @item 
! @code{Option flags}
  
  @item 
  @code{File names}
  
  @item 
! @code{Variables}
  
  @item 
  @emph{Emphasis}
*************** The file(s) must be bound using the GNAT
*** 936,942 ****
  All appropriate object files must be linked to produce an executable.
  @end itemize
  
! All three steps are most commonly handled by using the @emph{gnatmake}
  utility program that, given the name of the main program, automatically
  performs the necessary compilation, binding and linking steps.
  
--- 942,948 ----
  All appropriate object files must be linked to produce an executable.
  @end itemize
  
! All three steps are most commonly handled by using the @code{gnatmake}
  utility program that, given the name of the main program, automatically
  performs the necessary compilation, binding and linking steps.
  
*************** with periods replaced by hyphens; the
*** 969,997 ****
  extension is @code{ads} for a
  spec and @code{adb} for a body.
  You can override this default file naming convention by use of the
! special pragma @cite{Source_File_Name} (for further information please
  see @ref{35,,Using Other File Names}).
  Alternatively, if you want to rename your files according to this default
  convention, which is probably more convenient if you will be using GNAT
! for all your compilations, then the @cite{gnatchop} utility
  can be used to generate correctly-named source files
  (see @ref{36,,Renaming Files with gnatchop}).
  
! You can compile the program using the following command (@cite{$} is used
  as the command prompt in the examples in this document):
  
  @example
  $ gcc -c hello.adb
  @end example
  
! @emph{gcc} is the command used to run the compiler. This compiler is
  capable of compiling programs in several languages, including Ada and
  C. It assumes that you have given it an Ada program if the file extension is
  either @code{.ads} or @code{.adb}, and it will then call
  the GNAT compiler to compile the specified file.
  
! The @code{-c} switch is required. It tells @emph{gcc} to only do a
! compilation. (For C programs, @emph{gcc} can also do linking, but this
  capability is not used directly for Ada programs, so the @code{-c}
  switch must always be present.)
  
--- 975,1003 ----
  extension is @code{ads} for a
  spec and @code{adb} for a body.
  You can override this default file naming convention by use of the
! special pragma @code{Source_File_Name} (for further information please
  see @ref{35,,Using Other File Names}).
  Alternatively, if you want to rename your files according to this default
  convention, which is probably more convenient if you will be using GNAT
! for all your compilations, then the @code{gnatchop} utility
  can be used to generate correctly-named source files
  (see @ref{36,,Renaming Files with gnatchop}).
  
! You can compile the program using the following command (@code{$} is used
  as the command prompt in the examples in this document):
  
  @example
  $ gcc -c hello.adb
  @end example
  
! @code{gcc} is the command used to run the compiler. This compiler is
  capable of compiling programs in several languages, including Ada and
  C. It assumes that you have given it an Ada program if the file extension is
  either @code{.ads} or @code{.adb}, and it will then call
  the GNAT compiler to compile the specified file.
  
! The @code{-c} switch is required. It tells @code{gcc} to only do a
! compilation. (For C programs, @code{gcc} can also do linking, but this
  capability is not used directly for Ada programs, so the @code{-c}
  switch must always be present.)
  
*************** an 'Ada Library Information' file @code{
*** 1002,1010 ****
  which contains additional information used to check
  that an Ada program is consistent.
  To build an executable file,
! use @cite{gnatbind} to bind the program
! and @emph{gnatlink} to link it. The
! argument to both @cite{gnatbind} and @emph{gnatlink} is the name of the
  @code{ALI} file, but the default extension of @code{.ali} can
  be omitted. This means that in the most common case, the argument
  is simply the name of the main program:
--- 1008,1016 ----
  which contains additional information used to check
  that an Ada program is consistent.
  To build an executable file,
! use @code{gnatbind} to bind the program
! and @code{gnatlink} to link it. The
! argument to both @code{gnatbind} and @code{gnatlink} is the name of the
  @code{ALI} file, but the default extension of @code{.ali} can
  be omitted. This means that in the most common case, the argument
  is simply the name of the main program:
*************** $ gnatbind hello
*** 1014,1027 ****
  $ gnatlink hello
  @end example
  
! A simpler method of carrying out these steps is to use @emph{gnatmake},
  a master program that invokes all the required
  compilation, binding and linking tools in the correct order. In particular,
! @emph{gnatmake} automatically recompiles any sources that have been
  modified since they were last compiled, or sources that depend
  on such modified sources, so that 'version skew' is avoided.
  
! @geindex Version skew (avoided by *gnatmake*)
  
  @example
  $ gnatmake hello.adb
--- 1020,1033 ----
  $ gnatlink hello
  @end example
  
! A simpler method of carrying out these steps is to use @code{gnatmake},
  a master program that invokes all the required
  compilation, binding and linking tools in the correct order. In particular,
! @code{gnatmake} automatically recompiles any sources that have been
  modified since they were last compiled, or sources that depend
  on such modified sources, so that 'version skew' is avoided.
  
! @geindex Version skew (avoided by `@w{`}gnatmake`@w{`})
  
  @example
  $ gnatmake hello.adb
*************** following three separate files:
*** 1088,1098 ****
  
  @item @emph{greetings.ads}
  
! spec of package @cite{Greetings}
  
  @item @emph{greetings.adb}
  
! body of package @cite{Greetings}
  
  @item @emph{gmain.adb}
  
--- 1094,1104 ----
  
  @item @emph{greetings.ads}
  
! spec of package @code{Greetings}
  
  @item @emph{greetings.adb}
  
! body of package @code{Greetings}
  
  @item @emph{gmain.adb}
  
*************** $ gcc -c greetings.ads -gnatc
*** 1123,1129 ****
  
  Although the compilation can be done in separate steps as in the
  above example, in practice it is almost always more convenient
! to use the @emph{gnatmake} tool. All you need to know in this case
  is the name of the main program's source file. The effect of the above four
  commands can be achieved with a single one:
  
--- 1129,1135 ----
  
  Although the compilation can be done in separate steps as in the
  above example, in practice it is almost always more convenient
! to use the @code{gnatmake} tool. All you need to know in this case
  is the name of the main program's source file. The effect of the above four
  commands can be achieved with a single one:
  
*************** commands can be achieved with a single o
*** 1131,1146 ****
  $ gnatmake gmain.adb
  @end example
  
! In the next section we discuss the advantages of using @emph{gnatmake} in
  more detail.
  
  @node Using the gnatmake Utility,,Running a Program with Multiple Units,Getting Started with GNAT
  @anchor{gnat_ugn/getting_started_with_gnat using-the-gnatmake-utility}@anchor{39}@anchor{gnat_ugn/getting_started_with_gnat id5}@anchor{3a}
! @section Using the @emph{gnatmake} Utility
  
  
  If you work on a program by compiling single components at a time using
! @emph{gcc}, you typically keep track of the units you modify. In order to
  build a consistent system, you compile not only these units, but also any
  units that depend on the units you have modified.
  For example, in the preceding case,
--- 1137,1152 ----
  $ gnatmake gmain.adb
  @end example
  
! In the next section we discuss the advantages of using @code{gnatmake} in
  more detail.
  
  @node Using the gnatmake Utility,,Running a Program with Multiple Units,Getting Started with GNAT
  @anchor{gnat_ugn/getting_started_with_gnat using-the-gnatmake-utility}@anchor{39}@anchor{gnat_ugn/getting_started_with_gnat id5}@anchor{3a}
! @section Using the @code{gnatmake} Utility
  
  
  If you work on a program by compiling single components at a time using
! @code{gcc}, you typically keep track of the units you modify. In order to
  build a consistent system, you compile not only these units, but also any
  units that depend on the units you have modified.
  For example, in the preceding case,
*************** you edit @code{greetings.ads}, you must
*** 1149,1155 ****
  @code{greetings.adb} and @code{gmain.adb}, because both files contain
  units that depend on @code{greetings.ads}.
  
! @emph{gnatbind} will warn you if you forget one of these compilation
  steps, so that it is impossible to generate an inconsistent program as a
  result of forgetting to do a compilation. Nevertheless it is tedious and
  error-prone to keep track of dependencies among units.
--- 1155,1161 ----
  @code{greetings.adb} and @code{gmain.adb}, because both files contain
  units that depend on @code{greetings.ads}.
  
! @code{gnatbind} will warn you if you forget one of these compilation
  steps, so that it is impossible to generate an inconsistent program as a
  result of forgetting to do a compilation. Nevertheless it is tedious and
  error-prone to keep track of dependencies among units.
*************** if the dependencies change as you change
*** 1159,1165 ****
  sure that the makefile is kept up-to-date manually, which is also an
  error-prone process.
  
! The @emph{gnatmake} utility takes care of these details automatically.
  Invoke it using either one of the following forms:
  
  @example
--- 1165,1171 ----
  sure that the makefile is kept up-to-date manually, which is also an
  error-prone process.
  
! The @code{gnatmake} utility takes care of these details automatically.
  Invoke it using either one of the following forms:
  
  @example
*************** $ gnatmake gmain
*** 1168,1188 ****
  @end example
  
  The argument is the name of the file containing the main program;
! you may omit the extension. @emph{gnatmake}
  examines the environment, automatically recompiles any files that need
  recompiling, and binds and links the resulting set of object files,
  generating the executable file, @code{gmain}.
  In a large program, it
! can be extremely helpful to use @emph{gnatmake}, because working out by hand
  what needs to be recompiled can be difficult.
  
! Note that @emph{gnatmake} takes into account all the Ada rules that
  establish dependencies among units. These include dependencies that result
  from inlining subprogram bodies, and from
  generic instantiation. Unlike some other
! Ada make tools, @emph{gnatmake} does not rely on the dependencies that were
  found by the compiler on a previous compilation, which may possibly
! be wrong when sources change. @emph{gnatmake} determines the exact set of
  dependencies from scratch each time it is run.
  
  @c -- Example: A |withing| unit has a |with| clause, it |withs| a |withed| unit
--- 1174,1194 ----
  @end example
  
  The argument is the name of the file containing the main program;
! you may omit the extension. @code{gnatmake}
  examines the environment, automatically recompiles any files that need
  recompiling, and binds and links the resulting set of object files,
  generating the executable file, @code{gmain}.
  In a large program, it
! can be extremely helpful to use @code{gnatmake}, because working out by hand
  what needs to be recompiled can be difficult.
  
! Note that @code{gnatmake} takes into account all the Ada rules that
  establish dependencies among units. These include dependencies that result
  from inlining subprogram bodies, and from
  generic instantiation. Unlike some other
! Ada make tools, @code{gnatmake} does not rely on the dependencies that were
  found by the compiler on a previous compilation, which may possibly
! be wrong when sources change. @code{gnatmake} determines the exact set of
  dependencies from scratch each time it is run.
  
  @c -- Example: A |withing| unit has a |with| clause, it |withs| a |withed| unit
*************** are represented using their standard ASC
*** 1292,1298 ****
  @quotation
  
  
! @multitable {xxxxxxxxxxxxx} {xxxxxxxxxxxxxxxxxxxxxxxxx} {xxxxxxxxxxx} 
  @item
  
  Character
--- 1298,1304 ----
  @quotation
  
  
! @multitable {xxxxxxxxxxxxx} {xxxxxxxxxxxxxxxxxxxxxxxxx} {xxxxxxxxxxxxx} 
  @item
  
  Character
*************** Vertical tab
*** 1315,1321 ****
  
  @tab
  
! @cite{16#0B#}
  
  @item
  
--- 1321,1327 ----
  
  @tab
  
! @code{16#0B#}
  
  @item
  
*************** Horizontal tab
*** 1327,1333 ****
  
  @tab
  
! @cite{16#09#}
  
  @item
  
--- 1333,1339 ----
  
  @tab
  
! @code{16#09#}
  
  @item
  
*************** Carriage return
*** 1339,1345 ****
  
  @tab
  
! @cite{16#0D#}
  
  @item
  
--- 1345,1351 ----
  
  @tab
  
! @code{16#0D#}
  
  @item
  
*************** Line feed
*** 1351,1357 ****
  
  @tab
  
! @cite{16#0A#}
  
  @item
  
--- 1357,1363 ----
  
  @tab
  
! @code{16#0A#}
  
  @item
  
*************** Form feed
*** 1363,1369 ****
  
  @tab
  
! @cite{16#0C#}
  
  @end multitable
  
--- 1369,1375 ----
  
  @tab
  
! @code{16#0C#}
  
  @end multitable
  
*************** Form feed
*** 1372,1378 ****
  Source files are in standard text file format. In addition, GNAT will
  recognize a wide variety of stream formats, in which the end of
  physical lines is marked by any of the following sequences:
! @cite{LF}, @cite{CR}, @cite{CR-LF}, or @cite{LF-CR}. This is useful
  in accommodating files that are imported from other operating systems.
  
  @geindex End of source file; Source file@comma{} end
--- 1378,1384 ----
  Source files are in standard text file format. In addition, GNAT will
  recognize a wide variety of stream formats, in which the end of
  physical lines is marked by any of the following sequences:
! @code{LF}, @code{CR}, @code{CR-LF}, or @code{LF-CR}. This is useful
  in accommodating files that are imported from other operating systems.
  
  @geindex End of source file; Source file@comma{} end
*************** in accommodating files that are imported
*** 1380,1386 ****
  @geindex SUB (control character)
  
  The end of a source file is normally represented by the physical end of
! file. However, the control character @cite{16#1A#} (@code{SUB}) is also
  recognized as signalling the end of the source file. Again, this is
  provided for compatibility with other operating systems where this
  code is used to represent the end of file.
--- 1386,1392 ----
  @geindex SUB (control character)
  
  The end of a source file is normally represented by the physical end of
! file. However, the control character @code{16#1A#} (@code{SUB}) is also
  recognized as signalling the end of the source file. Again, this is
  provided for compatibility with other operating systems where this
  code is used to represent the end of file.
*************** code is used to represent the end of fil
*** 1390,1397 ****
  
  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 @cite{spec}) and the corresponding body in
! separate files. An Ada @cite{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.
  
--- 1396,1403 ----
  
  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.
  
*************** of the compiler (@ref{48,,Character Set
*** 1420,1427 ****
  @geindex Latin-1
  
  The basic character set is Latin-1. This character set is defined by ISO
! standard 8859, part 1. The lower half (character codes @cite{16#00#}
! ... @cite{16#7F#)} is identical to standard ASCII coding, but the upper
  half is used to represent additional characters. These include extended letters
  used by European languages, such as French accents, the vowels with umlauts
  used in German, and the extra letter A-ring used in Swedish.
--- 1426,1433 ----
  @geindex Latin-1
  
  The basic character set is Latin-1. This character set is defined by ISO
! standard 8859, part 1. The lower half (character codes @code{16#00#}
! ... @code{16#7F#)} is identical to standard ASCII coding, but the upper
  half is used to represent additional characters. These include extended letters
  used by European languages, such as French accents, the vowels with umlauts
  used in German, and the extra letter A-ring used in Swedish.
*************** used in German, and the extra letter A-r
*** 1429,1435 ****
  @geindex Ada.Characters.Latin_1
  
  For a complete list of Latin-1 codes and their encodings, see the source
! file of library unit @cite{Ada.Characters.Latin_1} in file
  @code{a-chlat1.ads}.
  You may use any of these extended characters freely in character or
  string literals. In addition, the extended characters that represent
--- 1435,1441 ----
  @geindex Ada.Characters.Latin_1
  
  For a complete list of Latin-1 codes and their encodings, see the source
! file of library unit @code{Ada.Characters.Latin_1} in file
  @code{a-chlat1.ads}.
  You may use any of these extended characters freely in character or
  string literals. In addition, the extended characters that represent
*************** character sequence:
*** 1573,1591 ****
  ESC a b c d
  @end example
  
! where @cite{a}, @cite{b}, @cite{c}, @cite{d} are the four hexadecimal
  characters (using uppercase letters) of the wide character code. For
  example, ESC A345 is used to represent the wide character with code
! @cite{16#A345#}.
  This scheme is compatible with use of the full Wide_Character set.
  
  @item @emph{Upper-Half Coding}
  
  @geindex Upper-Half Coding
  
! The wide character with encoding @cite{16#abcd#} where the upper bit is on
  (in other words, 'a' is in the range 8-F) is represented as two bytes,
! @cite{16#ab#} and @cite{16#cd#}. The second byte cannot be a format control
  character, but is 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.
--- 1579,1597 ----
  ESC a b c d
  @end example
  
! where @code{a}, @code{b}, @code{c}, @code{d} are the four hexadecimal
  characters (using uppercase letters) of the wide character code. For
  example, ESC A345 is used to represent the wide character with code
! @code{16#A345#}.
  This scheme is compatible with use of the full Wide_Character set.
  
  @item @emph{Upper-Half Coding}
  
  @geindex Upper-Half Coding
  
! The wide character with encoding @code{16#abcd#} where the upper bit is on
  (in other words, 'a' is in the range 8-F) is represented as two bytes,
! @code{16#ab#} and @code{16#cd#}. The second byte cannot be a format control
  character, but is 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.
*************** external coding.
*** 1595,1602 ****
  @geindex Shift JIS Coding
  
  A wide character is represented by a two-character sequence,
! @cite{16#ab#} and
! @cite{16#cd#}, with the restrictions described for upper-half encoding as
  described above. The internal character code is the corresponding JIS
  character according to the standard algorithm for Shift-JIS
  conversion. Only characters defined in the JIS code set table can be
--- 1601,1608 ----
  @geindex Shift JIS Coding
  
  A wide character is represented by a two-character sequence,
! @code{16#ab#} and
! @code{16#cd#}, with the restrictions described for upper-half encoding as
  described above. The internal character code is the corresponding JIS
  character according to the standard algorithm for Shift-JIS
  conversion. Only characters defined in the JIS code set table can be
*************** used with this encoding method.
*** 1607,1614 ****
  @geindex EUC Coding
  
  A wide character is represented by a two-character sequence
! @cite{16#ab#} and
! @cite{16#cd#}, with both characters being in the upper half. The internal
  character code is the corresponding JIS character according to the EUC
  encoding algorithm. Only characters defined in the JIS code set table
  can be used with this encoding method.
--- 1613,1620 ----
  @geindex EUC Coding
  
  A wide character is represented by a two-character sequence
! @code{16#ab#} and
! @code{16#cd#}, with both characters being in the upper half. The internal
  character code is the corresponding JIS character according to the EUC
  encoding algorithm. Only characters defined in the JIS code set table
  can be used with this encoding method.
*************** UCS Transformation Format 8 (UTF-8) as d
*** 1621,1632 ****
  is a one, two, or three byte sequence:
  
  @example
! 16#0000#-16#007f#: 2#0`xxxxxxx`#
! 16#0080#-16#07ff#: 2#110`xxxxx`# 2#10`xxxxxx`#
! 16#0800#-16#ffff#: 2#1110`xxxx`# 2#10`xxxxxx`# 2#10`xxxxxx`#
  @end example
  
! where the @cite{xxx} bits correspond to the left-padded bits of the
  16-bit character value. Note that all lower half ASCII characters
  are represented as ASCII bytes and all upper half characters and
  other wide characters are represented as sequences of upper-half
--- 1627,1638 ----
  is a one, two, or three byte sequence:
  
  @example
! 16#0000#-16#007f#: 2#0xxxxxxx#
! 16#0080#-16#07ff#: 2#110xxxxx# 2#10xxxxxx#
! 16#0800#-16#ffff#: 2#1110xxxx# 2#10xxxxxx# 2#10xxxxxx#
  @end example
  
! where the @code{xxx} bits correspond to the left-padded bits of the
  16-bit character value. Note that all lower half ASCII characters
  are represented as ASCII bytes and all upper half characters and
  other wide characters are represented as sequences of upper-half
*************** character sequence:
*** 1643,1654 ****
  [ " a b c d " ]
  @end example
  
! where @cite{a}, @cite{b}, @cite{c}, @cite{d} are the four hexadecimal
  characters (using uppercase letters) of the wide character code. For
  example, ['A345'] is used to represent the wide character with code
! @cite{16#A345#}. It is also possible (though not required) to use the
  Brackets coding for upper half characters. For example, the code
! @cite{16#A3#} can be represented as @cite{['A3']}.
  
  This scheme is compatible with use of the full Wide_Character set,
  and is also the method used for wide character encoding in some standard
--- 1649,1660 ----
  [ " a b c d " ]
  @end example
  
! where @code{a}, @code{b}, @code{c}, @code{d} are the four hexadecimal
  characters (using uppercase letters) of the wide character code. For
  example, ['A345'] is used to represent the wide character with code
! @code{16#A345#}. It is also possible (though not required) to use the
  Brackets coding for upper half characters. For example, the code
! @code{16#A3#} can be represented as @code{['A3']}.
  
  This scheme is compatible with use of the full Wide_Character set,
  and is also the method used for wide character encoding in some standard
*************** is a four, five, or six byte sequence:
*** 1692,1698 ****
                               10xxxxxx 10xxxxxx 10xxxxxx
  @end example
  
! where the @cite{xxx} bits correspond to the left-padded bits of the
  32-bit character value.
  
  @item @emph{Brackets Coding}
--- 1698,1704 ----
                               10xxxxxx 10xxxxxx 10xxxxxx
  @end example
  
! where the @code{xxx} bits correspond to the left-padded bits of the
  32-bit character value.
  
  @item @emph{Brackets Coding}
*************** twelve byte character sequence:
*** 1705,1714 ****
  [ " a b c d e f g h " ]
  @end example
  
! where @cite{a-h} are the six or eight hexadecimal
  characters (using uppercase letters) of the wide wide character code. For
  example, ["1F4567"] is used to represent the wide wide character with code
! @cite{16#001F_4567#}.
  
  This scheme is compatible with use of the full Wide_Wide_Character set,
  and is also the method used for wide wide character encoding in some standard
--- 1711,1720 ----
  [ " a b c d e f g h " ]
  @end example
  
! where @code{a-h} are the six or eight hexadecimal
  characters (using uppercase letters) of the wide wide character code. For
  example, ["1F4567"] is used to represent the wide wide character with code
! @code{16#001F_4567#}.
  
  This scheme is compatible with use of the full Wide_Wide_Character set,
  and is also the method used for wide wide character encoding in some standard
*************** lowercase for all letters.
*** 1746,1757 ****
  
  An exception arises if the file name generated by the above rules starts
  with one of the characters
! @cite{a}, @cite{g}, @cite{i}, or @cite{s}, and the second character is a
  minus. In this case, the character tilde is used in place
  of the minus. The reason for this special rule is to avoid clashes with
  the standard names for child units of the packages System, Ada,
  Interfaces, and GNAT, which use the prefixes
! @cite{s-}, @cite{a-}, @cite{i-}, and @cite{g-},
  respectively.
  
  The file extension is @code{.ads} for a spec and
--- 1752,1763 ----
  
  An exception arises if the file name generated by the above rules starts
  with one of the characters
! @code{a}, @code{g}, @code{i}, or @code{s}, and the second character is a
  minus. In this case, the character tilde is used in place
  of the minus. The reason for this special rule is to avoid clashes with
  the standard names for child units of the packages System, Ada,
  Interfaces, and GNAT, which use the prefixes
! @code{s-}, @code{a-}, @code{i-}, and @code{g-},
  respectively.
  
  The file extension is @code{.ads} for a spec and
*************** utility to produce source files that fol
*** 1856,1863 ****
  (For details see @ref{36,,Renaming Files with gnatchop}.)
  
  Note: in the case of Windows or Mac OS operating systems, case is not
! significant. So for example on @cite{Windows} if the canonical name is
! @cite{main-sub.adb}, you can use the file name @code{Main-Sub.adb} instead.
  However, case is significant for other operating systems, so for example,
  if you want to use other than canonically cased file names on a Unix system,
  you need to follow the procedures described in the next section.
--- 1862,1869 ----
  (For details see @ref{36,,Renaming Files with gnatchop}.)
  
  Note: in the case of Windows or Mac OS operating systems, case is not
! significant. So for example on Windows if the canonical name is
! @code{main-sub.adb}, you can use the file name @code{Main-Sub.adb} instead.
  However, case is significant for other operating systems, so for example,
  if you want to use other than canonically cased file names on a Unix system,
  you need to follow the procedures described in the next section.
*************** GNAT allows completely arbitrary file na
*** 1909,1925 ****
  source file name pragma. However, if the file name specified has an
  extension other than @code{.ads} or @code{.adb} it is necessary to use
  a special syntax when compiling the file. The name in this case must be
! preceded by the special sequence @emph{-x} followed by a space and the name
! of the language, here @cite{ada}, as in:
  
  @example
  $ gcc -c -x ada peculiar_file_name.sim
  @end example
  
! @cite{gnatmake} handles non-standard file names in the usual manner (the
  non-standard file name for the main program is simply used as the
  argument to gnatmake). Note that if the extension is also non-standard,
! then it must be included in the @cite{gnatmake} command, it may not
  be omitted.
  
  @node Alternative File Naming Schemes,Handling Arbitrary File Naming Conventions with gnatname,Using Other File Names,File Naming Topics and Utilities
--- 1915,1931 ----
  source file name pragma. However, if the file name specified has an
  extension other than @code{.ads} or @code{.adb} it is necessary to use
  a special syntax when compiling the file. The name in this case must be
! preceded by the special sequence @code{-x} followed by a space and the name
! of the language, here @code{ada}, as in:
  
  @example
  $ gcc -c -x ada peculiar_file_name.sim
  @end example
  
! @code{gnatmake} handles non-standard file names in the usual manner (the
  non-standard file name for the main program is simply used as the
  argument to gnatmake). Note that if the extension is also non-standard,
! then it must be included in the @code{gnatmake} command, it may not
  be omitted.
  
  @node Alternative File Naming Schemes,Handling Arbitrary File Naming Conventions with gnatname,Using Other File Names,File Naming Topics and Utilities
*************** be omitted.
*** 1932,1938 ****
  
  @geindex File names
  
! The previous section described the use of the @cite{Source_File_Name}
  pragma to allow arbitrary names to be assigned to individual source files.
  However, this approach requires one pragma for each file, and especially in
  large systems can result in very long @code{gnat.adc} files, and also create
--- 1938,1944 ----
  
  @geindex File names
  
! The previous section described the use of the @code{Source_File_Name}
  pragma to allow arbitrary names to be assigned to individual source files.
  However, this approach requires one pragma for each file, and especially in
  large systems can result in very long @code{gnat.adc} files, and also create
*************** a maintenance problem.
*** 1943,1949 ****
  GNAT also provides a facility for specifying systematic file naming schemes
  other than the standard default naming scheme previously described. An
  alternative scheme for naming is specified by the use of
! @cite{Source_File_Name} pragmas having the following format:
  
  @example
  pragma Source_File_Name (
--- 1949,1955 ----
  GNAT also provides a facility for specifying systematic file naming schemes
  other than the standard default naming scheme previously described. An
  alternative scheme for naming is specified by the use of
! @code{Source_File_Name} pragmas having the following format:
  
  @example
  pragma Source_File_Name (
*************** FILE_NAME_PATTERN ::= STRING_LITERAL
*** 1965,1993 ****
  CASING_SPEC ::= Lowercase | Uppercase | Mixedcase
  @end example
  
! The @cite{FILE_NAME_PATTERN} string shows how the file name is constructed.
  It contains a single asterisk character, and the unit name is substituted
  systematically for this asterisk. The optional parameter
! @cite{Casing} indicates
  whether the unit name is to be all upper-case letters, all lower-case letters,
  or mixed-case. If no
! @cite{Casing} parameter is used, then the default is all
  lower-case.
  
! The optional @cite{Dot_Replacement} string is used to replace any periods
! that occur in subunit or child unit names. If no @cite{Dot_Replacement}
  argument is used then separating dots appear unchanged in the resulting
  file name.
  Although the above syntax indicates that the
! @cite{Casing} argument must appear
! before the @cite{Dot_Replacement} argument, but it
  is also permissible to write these arguments in the opposite order.
  
  As indicated, it is possible to specify different naming schemes for
  bodies, specs, and subunits. Quite often the rule for subunits is the
  same as the rule for bodies, in which case, there is no need to give
! a separate @cite{Subunit_File_Name} rule, and in this case the
! @cite{Body_File_name} rule is used for subunits as well.
  
  The separate rule for subunits can also be used to implement the rather
  unusual case of a compilation environment (e.g., a single directory) which
--- 1971,1999 ----
  CASING_SPEC ::= Lowercase | Uppercase | Mixedcase
  @end example
  
! The @code{FILE_NAME_PATTERN} string shows how the file name is constructed.
  It contains a single asterisk character, and the unit name is substituted
  systematically for this asterisk. The optional parameter
! @code{Casing} indicates
  whether the unit name is to be all upper-case letters, all lower-case letters,
  or mixed-case. If no
! @code{Casing} parameter is used, then the default is all
  lower-case.
  
! The optional @code{Dot_Replacement} string is used to replace any periods
! that occur in subunit or child unit names. If no @code{Dot_Replacement}
  argument is used then separating dots appear unchanged in the resulting
  file name.
  Although the above syntax indicates that the
! @code{Casing} argument must appear
! before the @code{Dot_Replacement} argument, but it
  is also permissible to write these arguments in the opposite order.
  
  As indicated, it is possible to specify different naming schemes for
  bodies, specs, and subunits. Quite often the rule for subunits is the
  same as the rule for bodies, in which case, there is no need to give
! a separate @code{Subunit_File_Name} rule, and in this case the
! @code{Body_File_name} rule is used for subunits as well.
  
  The separate rule for subunits can also be used to implement the rather
  unusual case of a compilation environment (e.g., a single directory) which
*************** The file name translation works in the f
*** 2002,2018 ****
  @itemize *
  
  @item 
! If there is a specific @cite{Source_File_Name} pragma for the given unit,
  then this is always used, and any general pattern rules are ignored.
  
  @item 
! If there is a pattern type @cite{Source_File_Name} pragma that applies to
  the unit, then the resulting file name will be used if the file exists. If
  more than one pattern matches, the latest one will be tried first, and the
  first attempt resulting in a reference to a file that exists will be used.
  
  @item 
! If no pattern type @cite{Source_File_Name} pragma that applies to the unit
  for which the corresponding file exists, then the standard GNAT default
  naming rules are used.
  @end itemize
--- 2008,2024 ----
  @itemize *
  
  @item 
! If there is a specific @code{Source_File_Name} pragma for the given unit,
  then this is always used, and any general pattern rules are ignored.
  
  @item 
! If there is a pattern type @code{Source_File_Name} pragma that applies to
  the unit, then the resulting file name will be used if the file exists. If
  more than one pattern matches, the latest one will be tried first, and the
  first attempt resulting in a reference to a file that exists will be used.
  
  @item 
! If no pattern type @code{Source_File_Name} pragma that applies to the unit
  for which the corresponding file exists, then the standard GNAT default
  naming rules are used.
  @end itemize
*************** pragma Source_File_Name
*** 2068,2074 ****
  
  @node Handling Arbitrary File Naming Conventions with gnatname,File Name Krunching with gnatkr,Alternative File Naming Schemes,File Naming Topics and Utilities
  @anchor{gnat_ugn/the_gnat_compilation_model handling-arbitrary-file-naming-conventions-with-gnatname}@anchor{59}@anchor{gnat_ugn/the_gnat_compilation_model id12}@anchor{5a}
! @subsection Handling Arbitrary File Naming Conventions with @cite{gnatname}
  
  
  @geindex File Naming Conventions
--- 2074,2080 ----
  
  @node Handling Arbitrary File Naming Conventions with gnatname,File Name Krunching with gnatkr,Alternative File Naming Schemes,File Naming Topics and Utilities
  @anchor{gnat_ugn/the_gnat_compilation_model handling-arbitrary-file-naming-conventions-with-gnatname}@anchor{59}@anchor{gnat_ugn/the_gnat_compilation_model id12}@anchor{5a}
! @subsection Handling Arbitrary File Naming Conventions with @code{gnatname}
  
  
  @geindex File Naming Conventions
*************** pragma Source_File_Name
*** 2088,2094 ****
  
  The GNAT compiler must be able to know the source file name of a compilation
  unit.  When using the standard GNAT default file naming conventions
! (@cite{.ads} for specs, @cite{.adb} for bodies), the GNAT compiler
  does not need additional information.
  
  When the source file names do not follow the standard GNAT default file naming
--- 2094,2100 ----
  
  The GNAT compiler must be able to know the source file name of a compilation
  unit.  When using the standard GNAT default file naming conventions
! (@code{.ads} for specs, @code{.adb} for bodies), the GNAT compiler
  does not need additional information.
  
  When the source file names do not follow the standard GNAT default file naming
*************** conventions, the GNAT compiler must be g
*** 2096,2142 ****
  a configuration pragmas file (@ref{14,,Configuration Pragmas})
  or a project file.
  When the non-standard file naming conventions are well-defined,
! a small number of pragmas @cite{Source_File_Name} specifying a naming pattern
  (@ref{58,,Alternative File Naming Schemes}) may be sufficient. However,
  if the file naming conventions are irregular or arbitrary, a number
! of pragma @cite{Source_File_Name} for individual compilation units
  must be defined.
  To help maintain the correspondence between compilation unit names and
  source file names within the compiler,
! GNAT provides a tool @cite{gnatname} to generate the required pragmas for a
  set of files.
  
  @node Running gnatname,Switches for gnatname,Arbitrary File Naming Conventions,Handling Arbitrary File Naming Conventions with gnatname
  @anchor{gnat_ugn/the_gnat_compilation_model running-gnatname}@anchor{5d}@anchor{gnat_ugn/the_gnat_compilation_model id14}@anchor{5e}
! @subsubsection Running @cite{gnatname}
  
  
! The usual form of the @cite{gnatname} command is:
  
  @example
! $ gnatname [`switches`] `naming_pattern` [`naming_patterns`]
!     [--and [`switches`] `naming_pattern` [`naming_patterns`]]
  @end example
  
  All of the arguments are optional. If invoked without any argument,
! @cite{gnatname} will display its usage.
  
! When used with at least one naming pattern, @cite{gnatname} will attempt to
  find all the compilation units in files that follow at least one of the
  naming patterns. To find these compilation units,
! @cite{gnatname} will use the GNAT compiler in syntax-check-only mode on all
  regular files.
  
! One or several Naming Patterns may be given as arguments to @cite{gnatname}.
  Each Naming Pattern is enclosed between double quotes (or single
  quotes on Windows).
  A Naming Pattern is a regular expression similar to the wildcard patterns
  used in file names by the Unix shells or the DOS prompt.
  
! @cite{gnatname} may be called with several sections of directories/patterns.
! Sections are separated by switch @cite{--and}. In each section, there must be
  at least one pattern. If no directory is specified in a section, the current
! directory (or the project directory is @cite{-P} is used) is implied.
  The options other that the directory switches and the patterns apply globally
  even if they are in different sections.
  
--- 2102,2148 ----
  a configuration pragmas file (@ref{14,,Configuration Pragmas})
  or a project file.
  When the non-standard file naming conventions are well-defined,
! a small number of pragmas @code{Source_File_Name} specifying a naming pattern
  (@ref{58,,Alternative File Naming Schemes}) may be sufficient. However,
  if the file naming conventions are irregular or arbitrary, a number
! of pragma @code{Source_File_Name} for individual compilation units
  must be defined.
  To help maintain the correspondence between compilation unit names and
  source file names within the compiler,
! GNAT provides a tool @code{gnatname} to generate the required pragmas for a
  set of files.
  
  @node Running gnatname,Switches for gnatname,Arbitrary File Naming Conventions,Handling Arbitrary File Naming Conventions with gnatname
  @anchor{gnat_ugn/the_gnat_compilation_model running-gnatname}@anchor{5d}@anchor{gnat_ugn/the_gnat_compilation_model id14}@anchor{5e}
! @subsubsection Running @code{gnatname}
  
  
! The usual form of the @code{gnatname} command is:
  
  @example
! $ gnatname [ switches ]  naming_pattern  [ naming_patterns ]
!     [--and [ switches ]  naming_pattern  [ naming_patterns ]]
  @end example
  
  All of the arguments are optional. If invoked without any argument,
! @code{gnatname} will display its usage.
  
! When used with at least one naming pattern, @code{gnatname} will attempt to
  find all the compilation units in files that follow at least one of the
  naming patterns. To find these compilation units,
! @code{gnatname} will use the GNAT compiler in syntax-check-only mode on all
  regular files.
  
! One or several Naming Patterns may be given as arguments to @code{gnatname}.
  Each Naming Pattern is enclosed between double quotes (or single
  quotes on Windows).
  A Naming Pattern is a regular expression similar to the wildcard patterns
  used in file names by the Unix shells or the DOS prompt.
  
! @code{gnatname} may be called with several sections of directories/patterns.
! Sections are separated by the switch @code{--and}. In each section, there must be
  at least one pattern. If no directory is specified in a section, the current
! directory (or the project directory if @code{-P} is used) is implied.
  The options other that the directory switches and the patterns apply globally
  even if they are in different sections.
  
*************** For a more complete description of the s
*** 2152,2170 ****
  see the second kind of regular expressions described in @code{g-regexp.ads}
  (the 'Glob' regular expressions).
  
! When invoked with no switch @cite{-P}, @cite{gnatname} will create a
  configuration pragmas file @code{gnat.adc} in the current working directory,
! with pragmas @cite{Source_File_Name} for each file that contains a valid Ada
  unit.
  
  @node Switches for gnatname,Examples of gnatname Usage,Running gnatname,Handling Arbitrary File Naming Conventions with gnatname
  @anchor{gnat_ugn/the_gnat_compilation_model id15}@anchor{5f}@anchor{gnat_ugn/the_gnat_compilation_model switches-for-gnatname}@anchor{60}
! @subsubsection Switches for @cite{gnatname}
  
  
! Switches for @cite{gnatname} must precede any specified Naming Pattern.
  
! You may specify any of the following switches to @cite{gnatname}:
  
  @geindex --version (gnatname)
  
--- 2158,2176 ----
  see the second kind of regular expressions described in @code{g-regexp.ads}
  (the 'Glob' regular expressions).
  
! When invoked without the switch @code{-P}, @code{gnatname} will create a
  configuration pragmas file @code{gnat.adc} in the current working directory,
! with pragmas @code{Source_File_Name} for each file that contains a valid Ada
  unit.
  
  @node Switches for gnatname,Examples of gnatname Usage,Running gnatname,Handling Arbitrary File Naming Conventions with gnatname
  @anchor{gnat_ugn/the_gnat_compilation_model id15}@anchor{5f}@anchor{gnat_ugn/the_gnat_compilation_model switches-for-gnatname}@anchor{60}
! @subsubsection Switches for @code{gnatname}
  
  
! Switches for @code{gnatname} must precede any specified Naming Pattern.
  
! You may specify any of the following switches to @code{gnatname}:
  
  @geindex --version (gnatname)
  
*************** Display Copyright and version, then exit
*** 2183,2189 ****
  
  @item @code{--help}
  
! If @emph{--version} was not used, display usage, then exit disregarding
  all other options.
  
  @item @code{--subdirs=@emph{dir}}
--- 2189,2195 ----
  
  @item @code{--help}
  
! If @code{--version} was not used, display usage, then exit disregarding
  all other options.
  
  @item @code{--subdirs=@emph{dir}}
*************** Start another section of directories/pat
*** 2209,2220 ****
  
  Create a configuration pragmas file @code{filename} (instead of the default
  @code{gnat.adc}).
! There may be zero, one or more space between @emph{-c} and
  @code{filename}.
  @code{filename} may include directory information. @code{filename} must be
! writable. There may be only one switch @emph{-c}.
! When a switch @emph{-c} is
! specified, no switch @emph{-P} may be specified (see below).
  @end table
  
  @geindex -d (gnatname)
--- 2215,2226 ----
  
  Create a configuration pragmas file @code{filename} (instead of the default
  @code{gnat.adc}).
! There may be zero, one or more space between @code{-c} and
  @code{filename}.
  @code{filename} may include directory information. @code{filename} must be
! writable. There may be only one switch @code{-c}.
! When a switch @code{-c} is
! specified, no switch @code{-P} may be specified (see below).
  @end table
  
  @geindex -d (gnatname)
*************** specified, no switch @emph{-P} may be sp
*** 2225,2248 ****
  @item @code{-d@emph{dir}}
  
  Look for source files in directory @code{dir}. There may be zero, one or more
! spaces between @emph{-d} and @code{dir}.
! @code{dir} may end with @cite{/**}, that is it may be of the form
! @cite{root_dir/**}. In this case, the directory @cite{root_dir} and all of its
  subdirectories, recursively, have to be searched for sources.
! When a switch @emph{-d}
  is specified, the current working directory will not be searched for source
! files, unless it is explicitly specified with a @emph{-d}
! or @emph{-D} switch.
! Several switches @emph{-d} may be specified.
  If @code{dir} is a relative path, it is relative to the directory of
  the configuration pragmas file specified with switch
! @emph{-c},
  or to the directory of the project file specified with switch
! @emph{-P} or,
! if neither switch @emph{-c}
! nor switch @emph{-P} are specified, it is relative to the
  current working directory. The directory
! specified with switch @emph{-d} must exist and be readable.
  @end table
  
  @geindex -D (gnatname)
--- 2231,2254 ----
  @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}.
! @code{dir} may end with @code{/**}, that is it may be of the form
! @code{root_dir/**}. In this case, the directory @code{root_dir} and all of its
  subdirectories, recursively, have to be searched for sources.
! When a switch @code{-d}
  is specified, the current working directory will not be searched for source
! files, unless it is explicitly specified with a @code{-d}
! or @code{-D} switch.
! Several switches @code{-d} may be specified.
  If @code{dir} is a relative path, it is relative to the directory of
  the configuration pragmas file specified with switch
! @code{-c},
  or to the directory of the project file specified with switch
! @code{-P} or,
! if neither switch @code{-c}
! nor switch @code{-P} are specified, it is relative to the
  current working directory. The directory
! specified with switch @code{-d} must exist and be readable.
  @end table
  
  @geindex -D (gnatname)
*************** specified with switch @emph{-d} must exi
*** 2253,2264 ****
  @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 @emph{-D}
  and @code{filename}.
  @code{filename} must be an existing, readable text file.
  Each nonempty line in @code{filename} must be a directory.
! Specifying switch @emph{-D} is equivalent to specifying as many
! switches @emph{-d} as there are nonempty lines in
  @code{file}.
  
  @item @code{-eL}
--- 2259,2270 ----
  @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}
  and @code{filename}.
  @code{filename} must be an existing, readable text file.
  Each nonempty line in @code{filename} must be a directory.
! Specifying switch @code{-D} is equivalent to specifying as many
! switches @code{-d} as there are nonempty lines in
  @code{file}.
  
  @item @code{-eL}
*************** Output usage (help) information. The out
*** 2293,2304 ****
  @item @code{-P@emph{proj}}
  
  Create or update project file @code{proj}. There may be zero, one or more space
! between @emph{-P} and @code{proj}. @code{proj} may include directory
  information. @code{proj} must be writable.
! There may be only one switch @emph{-P}.
! When a switch @emph{-P} is specified,
! no switch @emph{-c} may be specified.
! On all platforms, except on VMS, when @cite{gnatname} is invoked for an
  existing project file <proj>.gpr, a backup copy of the project file is created
  in the project directory with file name <proj>.gpr.saved_x. 'x' is the first
  non negative number that makes this backup copy a new file.
--- 2299,2310 ----
  @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
  information. @code{proj} must be writable.
! There may be only one switch @code{-P}.
! When a switch @code{-P} is specified,
! no switch @code{-c} may be specified.
! On all platforms, except on VMS, when @code{gnatname} is invoked for an
  existing project file <proj>.gpr, a backup copy of the project file is created
  in the project directory with file name <proj>.gpr.saved_x. 'x' is the first
  non negative number that makes this backup copy a new file.
*************** except those whose names end with @code{
*** 2342,2348 ****
  
  @node Examples of gnatname Usage,,Switches for gnatname,Handling Arbitrary File Naming Conventions with gnatname
  @anchor{gnat_ugn/the_gnat_compilation_model examples-of-gnatname-usage}@anchor{61}@anchor{gnat_ugn/the_gnat_compilation_model id16}@anchor{62}
! @subsubsection Examples of @cite{gnatname} Usage
  
  
  @example
--- 2348,2354 ----
  
  @node Examples of gnatname Usage,,Switches for gnatname,Handling Arbitrary File Naming Conventions with gnatname
  @anchor{gnat_ugn/the_gnat_compilation_model examples-of-gnatname-usage}@anchor{61}@anchor{gnat_ugn/the_gnat_compilation_model id16}@anchor{62}
! @subsubsection Examples of @code{gnatname} Usage
  
  
  @example
*************** $ gnatname -c /home/me/names.adc -d sour
*** 2352,2374 ****
  In this example, the directory @code{/home/me} must already exist
  and be writable. In addition, the directory
  @code{/home/me/sources} (specified by
! @emph{-d sources}) must exist and be readable.
  
! Note the optional spaces after @emph{-c} and @emph{-d}.
  
  @example
  $ gnatname -P/home/me/proj -x "*_nt_body.ada"
  -dsources -dsources/plus -Dcommon_dirs.txt "body_*" "spec_*"
  @end example
  
! Note that several switches @emph{-d} may be used,
  even in conjunction with one or several switches
! @emph{-D}. Several Naming Patterns and one excluded pattern
  are used in this example.
  
  @node File Name Krunching with gnatkr,Renaming Files with gnatchop,Handling Arbitrary File Naming Conventions with gnatname,File Naming Topics and Utilities
  @anchor{gnat_ugn/the_gnat_compilation_model file-name-krunching-with-gnatkr}@anchor{63}@anchor{gnat_ugn/the_gnat_compilation_model id17}@anchor{64}
! @subsection File Name Krunching with @cite{gnatkr}
  
  
  @geindex gnatkr
--- 2358,2380 ----
  In this example, the directory @code{/home/me} must already exist
  and be writable. In addition, the directory
  @code{/home/me/sources} (specified by
! @code{-d sources}) must exist and be readable.
  
! Note the optional spaces after @code{-c} and @code{-d}.
  
  @example
  $ gnatname -P/home/me/proj -x "*_nt_body.ada"
  -dsources -dsources/plus -Dcommon_dirs.txt "body_*" "spec_*"
  @end example
  
! Note that several switches @code{-d} may be used,
  even in conjunction with one or several switches
! @code{-D}. Several Naming Patterns and one excluded pattern
  are used in this example.
  
  @node File Name Krunching with gnatkr,Renaming Files with gnatchop,Handling Arbitrary File Naming Conventions with gnatname,File Naming Topics and Utilities
  @anchor{gnat_ugn/the_gnat_compilation_model file-name-krunching-with-gnatkr}@anchor{63}@anchor{gnat_ugn/the_gnat_compilation_model id17}@anchor{64}
! @subsection File Name Krunching with @code{gnatkr}
  
  
  @geindex gnatkr
*************** are used in this example.
*** 2376,2382 ****
  This section discusses the method used by the compiler to shorten
  the default file names chosen for Ada units so that they do not
  exceed the maximum length permitted. It also describes the
! @cite{gnatkr} utility that can be used to determine the result of
  applying this shortening.
  
  @menu
--- 2382,2388 ----
  This section discusses the method used by the compiler to shorten
  the default file names chosen for Ada units so that they do not
  exceed the maximum length permitted. It also describes the
! @code{gnatkr} utility that can be used to determine the result of
  applying this shortening.
  
  @menu
*************** applying this shortening.
*** 2389,2395 ****
  
  @node About gnatkr,Using gnatkr,,File Name Krunching with gnatkr
  @anchor{gnat_ugn/the_gnat_compilation_model id18}@anchor{65}@anchor{gnat_ugn/the_gnat_compilation_model about-gnatkr}@anchor{66}
! @subsubsection About @cite{gnatkr}
  
  
  The default file naming rule in GNAT
--- 2395,2401 ----
  
  @node About gnatkr,Using gnatkr,,File Name Krunching with gnatkr
  @anchor{gnat_ugn/the_gnat_compilation_model id18}@anchor{65}@anchor{gnat_ugn/the_gnat_compilation_model about-gnatkr}@anchor{66}
! @subsubsection About @code{gnatkr}
  
  
  The default file naming rule in GNAT
*************** switch of the compiler activates a 'krun
*** 2422,2442 ****
  circuit that limits file names to nn characters (where nn is a decimal
  integer).
  
! The @cite{gnatkr} utility can be used to determine the krunched name for
  a given file, when krunched to a specified maximum length.
  
  @node Using gnatkr,Krunching Method,About gnatkr,File Name Krunching with gnatkr
  @anchor{gnat_ugn/the_gnat_compilation_model id19}@anchor{67}@anchor{gnat_ugn/the_gnat_compilation_model using-gnatkr}@anchor{54}
! @subsubsection Using @cite{gnatkr}
  
  
! The @cite{gnatkr} command has the form:
  
  @example
! $ gnatkr `name` [`length`]
  @end example
  
! @cite{name} is the uncrunched file name, derived from the name of the unit
  in the standard manner described in the previous section (i.e., in particular
  all dots are replaced by hyphens). The file name may or may not have an
  extension (defined as a suffix of the form period followed by arbitrary
--- 2428,2448 ----
  circuit that limits file names to nn characters (where nn is a decimal
  integer).
  
! The @code{gnatkr} utility can be used to determine the krunched name for
  a given file, when krunched to a specified maximum length.
  
  @node Using gnatkr,Krunching Method,About gnatkr,File Name Krunching with gnatkr
  @anchor{gnat_ugn/the_gnat_compilation_model id19}@anchor{67}@anchor{gnat_ugn/the_gnat_compilation_model using-gnatkr}@anchor{54}
! @subsubsection Using @code{gnatkr}
  
  
! The @code{gnatkr} command has the form:
  
  @example
! $ gnatkr name [ length ]
  @end example
  
! @code{name} is the uncrunched file name, derived from the name of the unit
  in the standard manner described in the previous section (i.e., in particular
  all dots are replaced by hyphens). The file name may or may not have an
  extension (defined as a suffix of the form period followed by arbitrary
*************** characters other than period). If an ext
*** 2444,2452 ****
  be preserved in the output. For example, when krunching @code{hellofile.ads}
  to eight characters, the result will be hellofil.ads.
  
! Note: for compatibility with previous versions of @cite{gnatkr} dots may
  appear in the name instead of hyphens, but the last dot will always be
! taken as the start of an extension. So if @cite{gnatkr} is given an argument
  such as @code{Hello.World.adb} it will be treated exactly as if the first
  period had been a hyphen, and for example krunching to eight characters
  gives the result @code{hellworl.adb}.
--- 2450,2458 ----
  be preserved in the output. For example, when krunching @code{hellofile.ads}
  to eight characters, the result will be hellofil.ads.
  
! Note: for compatibility with previous versions of @code{gnatkr} dots may
  appear in the name instead of hyphens, but the last dot will always be
! taken as the start of an extension. So if @code{gnatkr} is given an argument
  such as @code{Hello.World.adb} it will be treated exactly as if the first
  period had been a hyphen, and for example krunching to eight characters
  gives the result @code{hellworl.adb}.
*************** gives the result @code{hellworl.adb}.
*** 2454,2460 ****
  Note that the result is always all lower case.
  Characters of the other case are folded as required.
  
! @cite{length} represents the length of the krunched name. The default
  when no argument is given is 8 characters. A length of zero stands for
  unlimited, in other words do not chop except for system files where the
  implied crunching length is always eight characters.
--- 2460,2466 ----
  Note that the result is always all lower case.
  Characters of the other case are folded as required.
  
! @code{length} represents the length of the krunched name. The default
  when no argument is given is 8 characters. A length of zero stands for
  unlimited, in other words do not chop except for system files where the
  implied crunching length is always eight characters.
*************** using lowercase
*** 2474,2481 ****
  for all letters, except that a hyphen in the second character position is
  replaced by a tilde if the first character is
  @code{a}, @code{i}, @code{g}, or @code{s}.
! The extension is @cite{.ads} for a
! spec and @cite{.adb} for a body.
  Krunching does not affect the extension, but the file name is shortened to
  the specified length by following these rules:
  
--- 2480,2487 ----
  for all letters, except that a hyphen in the second character position is
  replaced by a tilde if the first character is
  @code{a}, @code{i}, @code{g}, or @code{s}.
! The extension is @code{.ads} for a
! spec and @code{.adb} for a body.
  Krunching does not affect the extension, but the file name is shortened to
  the specified length by following these rules:
  
*************** Final file name: a-stwifi.adb
*** 2589,2600 ****
  Of course no file shortening algorithm can guarantee uniqueness over all
  possible unit names, and if file name krunching is used then it is your
  responsibility to ensure that no name clashes occur. The utility
! program @cite{gnatkr} is supplied for conveniently determining the
  krunched name of a file.
  
  @node Examples of gnatkr Usage,,Krunching Method,File Name Krunching with gnatkr
  @anchor{gnat_ugn/the_gnat_compilation_model id21}@anchor{6a}@anchor{gnat_ugn/the_gnat_compilation_model examples-of-gnatkr-usage}@anchor{6b}
! @subsubsection Examples of @cite{gnatkr} Usage
  
  
  @example
--- 2595,2606 ----
  Of course no file shortening algorithm can guarantee uniqueness over all
  possible unit names, and if file name krunching is used then it is your
  responsibility to ensure that no name clashes occur. The utility
! program @code{gnatkr} is supplied for conveniently determining the
  krunched name of a file.
  
  @node Examples of gnatkr Usage,,Krunching Method,File Name Krunching with gnatkr
  @anchor{gnat_ugn/the_gnat_compilation_model id21}@anchor{6a}@anchor{gnat_ugn/the_gnat_compilation_model examples-of-gnatkr-usage}@anchor{6b}
! @subsubsection Examples of @code{gnatkr} Usage
  
  
  @example
*************** $ gnatkr very_long_unit_name.ads/count=0
*** 2608,2620 ****
  
  @node Renaming Files with gnatchop,,File Name Krunching with gnatkr,File Naming Topics and Utilities
  @anchor{gnat_ugn/the_gnat_compilation_model id22}@anchor{6c}@anchor{gnat_ugn/the_gnat_compilation_model renaming-files-with-gnatchop}@anchor{36}
! @subsection Renaming Files with @cite{gnatchop}
  
  
  @geindex gnatchop
  
  This section discusses how to handle files with multiple units by using
! the @cite{gnatchop} utility. This utility is also useful in renaming
  files to meet the standard GNAT default file naming conventions.
  
  @menu
--- 2614,2626 ----
  
  @node Renaming Files with gnatchop,,File Name Krunching with gnatkr,File Naming Topics and Utilities
  @anchor{gnat_ugn/the_gnat_compilation_model id22}@anchor{6c}@anchor{gnat_ugn/the_gnat_compilation_model renaming-files-with-gnatchop}@anchor{36}
! @subsection Renaming Files with @code{gnatchop}
  
  
  @geindex gnatchop
  
  This section discusses how to handle files with multiple units by using
! the @code{gnatchop} utility. This utility is also useful in renaming
  files to meet the standard GNAT default file naming conventions.
  
  @menu
*************** The basic compilation model of GNAT requ
*** 2635,2655 ****
  compiler have only one unit and there be a strict correspondence
  between the file name and the unit name.
  
! The @cite{gnatchop} utility allows both of these rules to be relaxed,
  allowing GNAT to process files which contain multiple compilation units
! and files with arbitrary file names. @cite{gnatchop}
  reads the specified file and generates one or more output files,
  containing one unit per file. The unit and the file name correspond,
  as required by GNAT.
  
  If you want to permanently restructure a set of 'foreign' files so that
  they match the GNAT rules, and do the remaining development using the
! GNAT structure, you can simply use @emph{gnatchop} once, generate the
  new set of files and work with them from that point on.
  
  Alternatively, if you want to keep your files in the 'foreign' format,
  perhaps to maintain compatibility with some other Ada compilation
! system, you can set up a procedure where you use @emph{gnatchop} each
  time you compile, regarding the source files that it writes as temporary
  files that you throw away.
  
--- 2641,2661 ----
  compiler have only one unit and there be a strict correspondence
  between the file name and the unit name.
  
! The @code{gnatchop} utility allows both of these rules to be relaxed,
  allowing GNAT to process files which contain multiple compilation units
! and files with arbitrary file names. @code{gnatchop}
  reads the specified file and generates one or more output files,
  containing one unit per file. The unit and the file name correspond,
  as required by GNAT.
  
  If you want to permanently restructure a set of 'foreign' files so that
  they match the GNAT rules, and do the remaining development using the
! GNAT structure, you can simply use @code{gnatchop} once, generate the
  new set of files and work with them from that point on.
  
  Alternatively, if you want to keep your files in the 'foreign' format,
  perhaps to maintain compatibility with some other Ada compilation
! system, you can set up a procedure where you use @code{gnatchop} each
  time you compile, regarding the source files that it writes as temporary
  files that you throw away.
  
*************** automatically in UTF-8 mode without need
*** 2663,2669 ****
  @subsubsection Operating gnatchop in Compilation Mode
  
  
! The basic function of @cite{gnatchop} is to take a file with multiple units
  and split it into separate files. The boundary between files is reasonably
  clear, except for the issue of comments and pragmas. In default mode, the
  rule is that any pragmas between units belong to the previous unit, except
--- 2669,2675 ----
  @subsubsection Operating gnatchop in Compilation Mode
  
  
! The basic function of @code{gnatchop} is to take a file with multiple units
  and split it into separate files. The boundary between files is reasonably
  clear, except for the issue of comments and pragmas. In default mode, the
  rule is that any pragmas between units belong to the previous unit, except
*************** almost always result in the right choice
*** 2673,2689 ****
  the split point without needing to mark it explicitly and most users will
  find this default to be what they want. In this default mode it is incorrect to
  submit a file containing only configuration pragmas, or one that ends in
! configuration pragmas, to @cite{gnatchop}.
  
  However, using a special option to activate 'compilation mode',
! @cite{gnatchop}
  can perform another function, which is to provide exactly the semantics
  required by the RM for handling of configuration pragmas in a compilation.
  In the absence of configuration pragmas (at the main file level), this
  option has no effect, but it causes such configuration pragmas to be handled
  in a quite different manner.
  
! First, in compilation mode, if @cite{gnatchop} is given a file that consists of
  only configuration pragmas, then this file is appended to the
  @code{gnat.adc} file in the current directory. This behavior provides
  the required behavior described in the RM for the actions to be taken
--- 2679,2695 ----
  the split point without needing to mark it explicitly and most users will
  find this default to be what they want. In this default mode it is incorrect to
  submit a file containing only configuration pragmas, or one that ends in
! configuration pragmas, to @code{gnatchop}.
  
  However, using a special option to activate 'compilation mode',
! @code{gnatchop}
  can perform another function, which is to provide exactly the semantics
  required by the RM for handling of configuration pragmas in a compilation.
  In the absence of configuration pragmas (at the main file level), this
  option has no effect, but it causes such configuration pragmas to be handled
  in a quite different manner.
  
! First, in compilation mode, if @code{gnatchop} is given a file that consists of
  only configuration pragmas, then this file is appended to the
  @code{gnat.adc} file in the current directory. This behavior provides
  the required behavior described in the RM for the actions to be taken
*************** environment. Using GNAT, the current dir
*** 2694,2700 ****
  of a compilation environment. For more information on the
  @code{gnat.adc} file, see @ref{56,,Handling of Configuration Pragmas}.
  
! Second, in compilation mode, if @cite{gnatchop}
  is given a file that starts with
  configuration pragmas, and contains one or more units, then these
  configuration pragmas are prepended to each of the chopped files. This
--- 2700,2706 ----
  of a compilation environment. For more information on the
  @code{gnat.adc} file, see @ref{56,,Handling of Configuration Pragmas}.
  
! Second, in compilation mode, if @code{gnatchop}
  is given a file that starts with
  configuration pragmas, and contains one or more units, then these
  configuration pragmas are prepended to each of the chopped files. This
*************** a unit. This provides the required RM be
*** 2710,2729 ****
  pragmas other than those preceding the first compilation unit of a
  compilation.
  
! For most purposes, @cite{gnatchop} will be used in default mode. The
  compilation mode described above is used only if you need exactly
  accurate behavior with respect to compilations, and you have files
  that contain multiple units and configuration pragmas. In this
! circumstance the use of @cite{gnatchop} with the compilation mode
  switch provides the required behavior, and is for example the mode
  in which GNAT processes the ACVC tests.
  
  @node Command Line for gnatchop,Switches for gnatchop,Operating gnatchop in Compilation Mode,Renaming Files with gnatchop
  @anchor{gnat_ugn/the_gnat_compilation_model id25}@anchor{71}@anchor{gnat_ugn/the_gnat_compilation_model command-line-for-gnatchop}@anchor{72}
! @subsubsection Command Line for @cite{gnatchop}
  
  
! The @cite{gnatchop} command has the form:
  
  @example
  $ gnatchop switches file_name [file_name ...]
--- 2716,2735 ----
  pragmas other than those preceding the first compilation unit of a
  compilation.
  
! For most purposes, @code{gnatchop} will be used in default mode. The
  compilation mode described above is used only if you need exactly
  accurate behavior with respect to compilations, and you have files
  that contain multiple units and configuration pragmas. In this
! circumstance the use of @code{gnatchop} with the compilation mode
  switch provides the required behavior, and is for example the mode
  in which GNAT processes the ACVC tests.
  
  @node Command Line for gnatchop,Switches for gnatchop,Operating gnatchop in Compilation Mode,Renaming Files with gnatchop
  @anchor{gnat_ugn/the_gnat_compilation_model id25}@anchor{71}@anchor{gnat_ugn/the_gnat_compilation_model command-line-for-gnatchop}@anchor{72}
! @subsubsection Command Line for @code{gnatchop}
  
  
! The @code{gnatchop} command has the form:
  
  @example
  $ gnatchop switches file_name [file_name ...]
*************** There are no restrictions on the form of
*** 2735,2744 ****
  contains one or more Ada units, in normal GNAT format, concatenated
  together. As shown, more than one file may be presented to be chopped.
  
! When run in default mode, @cite{gnatchop} generates one output file in
  the current directory for each unit in each of the files.
  
! @cite{directory}, if specified, gives the name of the directory to which
  the output files will be written. If it is not specified, all files are
  written to the current directory.
  
--- 2741,2750 ----
  contains one or more Ada units, in normal GNAT format, concatenated
  together. As shown, more than one file may be presented to be chopped.
  
! When run in default mode, @code{gnatchop} generates one output file in
  the current directory for each unit in each of the files.
  
! @code{directory}, if specified, gives the name of the directory to which
  the output files will be written. If it is not specified, all files are
  written to the current directory.
  
*************** no source files written
*** 2794,2803 ****
  
  @node Switches for gnatchop,Examples of gnatchop Usage,Command Line for gnatchop,Renaming Files with gnatchop
  @anchor{gnat_ugn/the_gnat_compilation_model switches-for-gnatchop}@anchor{73}@anchor{gnat_ugn/the_gnat_compilation_model id26}@anchor{74}
! @subsubsection Switches for @cite{gnatchop}
  
  
! @emph{gnatchop} recognizes the following switches:
  
  @geindex --version (gnatchop)
  
--- 2800,2809 ----
  
  @node Switches for gnatchop,Examples of gnatchop Usage,Command Line for gnatchop,Renaming Files with gnatchop
  @anchor{gnat_ugn/the_gnat_compilation_model switches-for-gnatchop}@anchor{73}@anchor{gnat_ugn/the_gnat_compilation_model id26}@anchor{74}
! @subsubsection Switches for @code{gnatchop}
  
  
! @code{gnatchop} recognizes the following switches:
  
  @geindex --version (gnatchop)
  
*************** Display Copyright and version, then exit
*** 2816,2822 ****
  
  @item @code{--help}
  
! If @emph{--version} was not used, display usage, then exit disregarding
  all other options.
  @end table
  
--- 2822,2828 ----
  
  @item @code{--help}
  
! If @code{--version} was not used, display usage, then exit disregarding
  all other options.
  @end table
  
*************** all other options.
*** 2827,2846 ****
  
  @item @code{-c}
  
! Causes @cite{gnatchop} to operate in compilation mode, in which
  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 @emph{-gnat`xxx*` switch to `gnat` which is
! used to parse the given file. Not all `xxx` options make sense,
! but for example, the use of *-gnati2} allows @cite{gnatchop} to
  process a source file that uses Latin-2 coding for identifiers.
  
  @item @code{-h}
  
! Causes @cite{gnatchop} to generate a brief help summary to the standard
  output file showing usage information.
  @end table
  
--- 2833,2852 ----
  
  @item @code{-c}
  
! Causes @code{gnatchop} to operate in compilation mode, in which
  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.
  
  @item @code{-h}
  
! Causes @code{gnatchop} to generate a brief help summary to the standard
  output file showing usage information.
  @end table
  
*************** output file showing usage information.
*** 2851,2865 ****
  
  @item @code{-k@emph{mm}}
  
! Limit generated file names to the specified number @cite{mm}
  of characters.
  This is useful if the
  resulting set of files is required to be interoperable with systems
  which limit the length of file names.
! No space is allowed between the @emph{-k} and the numeric value. The numeric
! value may be omitted in which case a default of @emph{-k8},
  suitable for use
! with DOS-like file systems, is used. If no @emph{-k} switch
  is present then
  there is no limit on the length of file names.
  @end table
--- 2857,2871 ----
  
  @item @code{-k@emph{mm}}
  
! Limit generated file names to the specified number @code{mm}
  of characters.
  This is useful if the
  resulting set of files is required to be interoperable with systems
  which limit the length of file names.
! No space is allowed between the @code{-k} and the numeric value. The numeric
! value may be omitted in which case a default of @code{-k8},
  suitable for use
! with DOS-like file systems, is used. If no @code{-k} switch
  is present then
  there is no limit on the length of file names.
  @end table
*************** there is no limit on the length of file
*** 2874,2880 ****
  Causes the file modification time stamp of the input file to be
  preserved and used for the time stamp of the output file(s). This may be
  useful for preserving coherency of time stamps in an environment where
! @cite{gnatchop} is used as part of a standard build process.
  @end table
  
  @geindex -q (gnatchop)
--- 2880,2886 ----
  Causes the file modification time stamp of the input file to be
  preserved and used for the time stamp of the output file(s). This may be
  useful for preserving coherency of time stamps in an environment where
! @code{gnatchop} is used as part of a standard build process.
  @end table
  
  @geindex -q (gnatchop)
*************** files to be suppressed. Warnings and err
*** 2897,2922 ****
  
  @item @code{-r}
  
! Generate @cite{Source_Reference} pragmas. Use this switch if the output
  files are regarded as temporary and development is to be done in terms
  of the original unchopped file. This switch causes
! @cite{Source_Reference} pragmas to be inserted into each of the
  generated files to refers back to the original file name and line number.
  The result is that all error messages refer back to the original
  unchopped file.
  In addition, the debugging information placed into the object file (when
! the @emph{-g} switch of @emph{gcc} or @emph{gnatmake} is
  specified)
  also refers back to this original file so that tools like profilers and
  debuggers will give information in terms of the original unchopped file.
  
  If the original file to be chopped itself contains
! a @cite{Source_Reference}
  pragma referencing a third file, then gnatchop respects
! this pragma, and the generated @cite{Source_Reference} pragmas
  in the chopped file refer to the original file, with appropriate
! line numbers. This is particularly useful when @cite{gnatchop}
! is used in conjunction with @cite{gnatprep} to compile files that
  contain preprocessing statements and multiple units.
  @end table
  
--- 2903,2928 ----
  
  @item @code{-r}
  
! Generate @code{Source_Reference} pragmas. Use this switch if the output
  files are regarded as temporary and development is to be done in terms
  of the original unchopped file. This switch causes
! @code{Source_Reference} pragmas to be inserted into each of the
  generated files to refers back to the original file name and line number.
  The result is that all error messages refer back to the original
  unchopped file.
  In addition, the debugging information placed into the object file (when
! the @code{-g} switch of @code{gcc} or @code{gnatmake} is
  specified)
  also refers back to this original file so that tools like profilers and
  debuggers will give information in terms of the original unchopped file.
  
  If the original file to be chopped itself contains
! a @code{Source_Reference}
  pragma referencing a third file, then gnatchop respects
! this pragma, and the generated @code{Source_Reference} pragmas
  in the chopped file refer to the original file, with appropriate
! line numbers. This is particularly useful when @code{gnatchop}
! is used in conjunction with @code{gnatprep} to compile files that
  contain preprocessing statements and multiple units.
  @end table
  
*************** contain preprocessing statements and mul
*** 2927,2933 ****
  
  @item @code{-v}
  
! Causes @cite{gnatchop} to operate in verbose mode. The version
  number and copyright notice are output, as well as exact copies of
  the gnat1 commands spawned to obtain the chop control information.
  @end table
--- 2933,2939 ----
  
  @item @code{-v}
  
! Causes @code{gnatchop} to operate in verbose mode. The version
  number and copyright notice are output, as well as exact copies of
  the gnat1 commands spawned to obtain the chop control information.
  @end table
*************** the gnat1 commands spawned to obtain the
*** 2939,2945 ****
  
  @item @code{-w}
  
! Overwrite existing file names. Normally @cite{gnatchop} regards it as a
  fatal error if there is already a file with the same name as a
  file it would otherwise output, in other words if the files to be
  chopped contain duplicated units. This switch bypasses this
--- 2945,2951 ----
  
  @item @code{-w}
  
! Overwrite existing file names. Normally @code{gnatchop} regards it as a
  fatal error if there is already a file with the same name as a
  file it would otherwise output, in other words if the files to be
  chopped contain duplicated units. This switch bypasses this
*************** no attempt is made to add the prefix to
*** 2960,2966 ****
  
  @node Examples of gnatchop Usage,,Switches for gnatchop,Renaming Files with gnatchop
  @anchor{gnat_ugn/the_gnat_compilation_model id27}@anchor{75}@anchor{gnat_ugn/the_gnat_compilation_model examples-of-gnatchop-usage}@anchor{76}
! @subsubsection Examples of @cite{gnatchop} Usage
  
  
  @example
--- 2966,2972 ----
  
  @node Examples of gnatchop Usage,,Switches for gnatchop,Renaming Files with gnatchop
  @anchor{gnat_ugn/the_gnat_compilation_model id27}@anchor{75}@anchor{gnat_ugn/the_gnat_compilation_model examples-of-gnatchop-usage}@anchor{76}
! @subsubsection Examples of @code{gnatchop} Usage
  
  
  @example
*************** $ gnatchop archive
*** 2979,2989 ****
  
  Chops the source file @code{archive}
  into the current directory. One
! useful application of @cite{gnatchop} is in sending sets of sources
  around, for example in email messages. The required sources are simply
! concatenated (for example, using a Unix @cite{cat}
  command), and then
! @emph{gnatchop} is used at the other end to reconstitute the original
  file names.
  
  @example
--- 2985,2995 ----
  
  Chops the source file @code{archive}
  into the current directory. One
! useful application of @code{gnatchop} is in sending sets of sources
  around, for example in email messages. The required sources are simply
! concatenated (for example, using a Unix @code{cat}
  command), and then
! @code{gnatchop} is used at the other end to reconstitute the original
  file names.
  
  @example
*************** Chops all units in files @code{file1}, @
*** 2994,3000 ****
  the resulting files in the directory @code{direc}. Note that if any units
  occur more than once anywhere within this set of files, an error message
  is generated, and no files are written. To override this check, use the
! @emph{-w} switch,
  in which case the last occurrence in the last file will
  be the one that is output, and earlier duplicate occurrences for a given
  unit will be skipped.
--- 3000,3006 ----
  the resulting files in the directory @code{direc}. Note that if any units
  occur more than once anywhere within this set of files, an error message
  is generated, and no files are written. To override this check, use the
! @code{-w} switch,
  in which case the last occurrence in the last file will
  be the one that is output, and earlier duplicate occurrences for a given
  unit will be skipped.
*************** unit will be skipped.
*** 3012,3021 ****
  Configuration pragmas include those pragmas described as
  such in the Ada Reference Manual, as well as
  implementation-dependent pragmas that are configuration pragmas.
! See the @cite{Implementation_Defined_Pragmas} chapter in the
  @cite{GNAT_Reference_Manual} for details on these
  additional GNAT-specific configuration pragmas.
! Most notably, the pragma @cite{Source_File_Name}, which allows
  specifying non-default names for source files, is a configuration
  pragma. The following is a complete list of configuration pragmas
  recognized by GNAT:
--- 3018,3027 ----
  Configuration pragmas include those pragmas described as
  such in the Ada Reference Manual, as well as
  implementation-dependent pragmas that are configuration pragmas.
! See the @code{Implementation_Defined_Pragmas} chapter in the
  @cite{GNAT_Reference_Manual} for details on these
  additional GNAT-specific configuration pragmas.
! Most notably, the pragma @code{Source_File_Name}, which allows
  specifying non-default names for source files, is a configuration
  pragma. The following is a complete list of configuration pragmas
  recognized by GNAT:
*************** Annotate
*** 3032,3073 ****
  Assertion_Policy
  Assume_No_Invalid_Values
  C_Pass_By_Copy
  Check_Name
  Check_Policy
  Compile_Time_Error
  Compile_Time_Warning
  Compiler_Unit
  Component_Alignment
  Convention_Identifier
  Debug_Policy
  Detect_Blocking
  Default_Storage_Pool
  Discard_Names
  Elaboration_Checks
  Eliminate
  Extend_System
  Extensions_Allowed
  External_Name_Casing
  Fast_Math
  Favor_Top_Level
! Float_Representation
  Implicit_Packing
  Initialize_Scalars
  Interrupt_State
  License
  Locking_Policy
! Long_Float
  No_Run_Time
  No_Strict_Aliasing
  Normalize_Scalars
  Optimize_Alignment
  Persistent_BSS
  Polling
  Priority_Specific_Dispatching
  Profile
  Profile_Warnings
  Propagate_Exceptions
  Queuing_Policy
  Ravenscar
  Rename_Pragma
  Restricted_Run_Time
--- 3038,3090 ----
  Assertion_Policy
  Assume_No_Invalid_Values
  C_Pass_By_Copy
+ Check_Float_Overflow
  Check_Name
  Check_Policy
  Compile_Time_Error
  Compile_Time_Warning
  Compiler_Unit
+ Compiler_Unit_Warning
  Component_Alignment
  Convention_Identifier
  Debug_Policy
  Detect_Blocking
+ Default_Scalar_Storage_Order
  Default_Storage_Pool
+ Disable_Atomic_Synchronization
  Discard_Names
  Elaboration_Checks
  Eliminate
+ Enable_Atomic_Synchronization
  Extend_System
  Extensions_Allowed
  External_Name_Casing
  Fast_Math
  Favor_Top_Level
! Ignore_Pragma
  Implicit_Packing
  Initialize_Scalars
  Interrupt_State
  License
  Locking_Policy
! No_Component_Reordering
! No_Heap_Finalization
  No_Run_Time
  No_Strict_Aliasing
  Normalize_Scalars
  Optimize_Alignment
+ Overflow_Mode
+ Overriding_Renamings
+ Partition_Elaboration_Policy
  Persistent_BSS
  Polling
+ Prefix_Exception_Messages
  Priority_Specific_Dispatching
  Profile
  Profile_Warnings
  Propagate_Exceptions
  Queuing_Policy
+ Rational
  Ravenscar
  Rename_Pragma
  Restricted_Run_Time
*************** Restrictions
*** 3075,3080 ****
--- 3092,3098 ----
  Restrictions_Warnings
  Reviewable
  Short_Circuit_And_Or
+ Short_Descriptors
  Source_File_Name
  Source_File_Name_Project
  SPARK_Mode
*************** Style_Checks
*** 3082,3091 ****
--- 3100,3111 ----
  Suppress
  Suppress_Exception_Locations
  Task_Dispatching_Policy
+ Unevaluated_Use_Of_Old
  Universal_Data
  Unsuppress
  Use_VADS_Size
  Validity_Checks
+ Warning_As_Error
  Warnings
  Wide_Character_Encoding
  @end example
*************** Configuration pragmas may either appear
*** 3105,3111 ****
  unit, or they can appear in a configuration pragma file to apply to
  all compilations performed in a given compilation environment.
  
! GNAT also provides the @cite{gnatchop} utility to provide an automatic
  way to handle configuration pragmas following the semantics for
  compilations (that is, files with multiple units), described in the RM.
  See @ref{6f,,Operating gnatchop in Compilation Mode} for details.
--- 3125,3131 ----
  unit, or they can appear in a configuration pragma file to apply to
  all compilations performed in a given compilation environment.
  
! GNAT also provides the @code{gnatchop} utility to provide an automatic
  way to handle configuration pragmas following the semantics for
  compilations (that is, files with multiple units), described in the RM.
  See @ref{6f,,Operating gnatchop in Compilation Mode} for details.
*************** However, for most purposes, it will be m
*** 3113,3124 ****
  @code{gnat.adc} file that contains configuration pragmas directly,
  as described in the following section.
  
! In the case of @cite{Restrictions} pragmas appearing as configuration
  pragmas in individual compilation units, the exact handling depends on
  the type of restriction.
  
  Restrictions that require partition-wide consistency (like
! @cite{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
--- 3133,3144 ----
  @code{gnat.adc} file that contains configuration pragmas directly,
  as described in the following section.
  
! In the case of @code{Restrictions} pragmas appearing as configuration
  pragmas in individual compilation units, the exact handling depends on
  the type of restriction.
  
  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
*************** directory at the time that a compile com
*** 3149,3187 ****
  directory is searched for a file whose name is @code{gnat.adc}. If
  this file is present, it is expected to contain one or more
  configuration pragmas that will be applied to the current compilation.
! However, if the switch @emph{-gnatA} is used, @code{gnat.adc} is not
  considered. When taken into account, @code{gnat.adc} is added to the
  dependencies, so that if @code{gnat.adc} is modified later, an invocation of
! @emph{gnatmake} will recompile the source.
  
  Configuration pragmas may be entered into the @code{gnat.adc} file
! either by running @cite{gnatchop} on a source file that consists only of
  configuration pragmas, or more conveniently by direct editing of the
  @code{gnat.adc} file, which is a standard format source file.
  
  Besides @code{gnat.adc}, additional files containing configuration
  pragmas may be applied to the current compilation using the switch
! @code{-gnatec=@emph{path}} where @cite{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 @emph{-gnatA} is not used).
  
! It is allowable to specify several switches @emph{-gnatec=}, all of which
  will be taken into account.
  
  Files containing configuration pragmas specified with switches
! @emph{-gnatec=} are added to the dependencies, unless they are
  temporary files. A file is considered temporary if its name ends in
  @code{.tmp} or @code{.TMP}. Certain tools follow this naming
! convention because they pass information to @emph{gcc} via
  temporary files that are immediately deleted; it doesn't make sense to
  depend on a file that no longer exists. Such tools include
! @emph{gprbuild}, @emph{gnatmake}, and @emph{gnatcheck}.
  
  If you are using project file, a separate mechanism is provided using
  project attributes.
  
! @c --Comment:
  @c See :ref:`Specifying_Configuration_Pragmas` for more details.
  
  @node Generating Object Files,Source Dependencies,Configuration Pragmas,The GNAT Compilation Model
--- 3169,3207 ----
  directory is searched for a file whose name is @code{gnat.adc}. If
  this file is present, it is expected to contain one or more
  configuration pragmas that will be applied to the current compilation.
! However, if the switch @code{-gnatA} is used, @code{gnat.adc} is not
  considered. When taken into account, @code{gnat.adc} is added to the
  dependencies, so that if @code{gnat.adc} is modified later, an invocation of
! @code{gnatmake} will recompile the source.
  
  Configuration pragmas may be entered into the @code{gnat.adc} file
! either by running @code{gnatchop} on a source file that consists only of
  configuration pragmas, or more conveniently by direct editing of the
  @code{gnat.adc} file, which is a standard format source file.
  
  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).
  
! It is allowable to specify several switches @code{-gnatec=}, all of which
  will be taken into account.
  
  Files containing configuration pragmas specified with switches
! @code{-gnatec=} are added to the dependencies, unless they are
  temporary files. A file is considered temporary if its name ends in
  @code{.tmp} or @code{.TMP}. Certain tools follow this naming
! convention because they pass information to @code{gcc} via
  temporary files that are immediately deleted; it doesn't make sense to
  depend on a file that no longer exists. Such tools include
! @code{gprbuild}, @code{gnatmake}, and @code{gnatcheck}.
  
  If you are using project file, a separate mechanism is provided using
  project attributes.
  
! @c --Comment
  @c See :ref:`Specifying_Configuration_Pragmas` for more details.
  
  @node Generating Object Files,Source Dependencies,Configuration Pragmas,The GNAT Compilation Model
*************** compilations will fail if there is an er
*** 3253,3259 ****
  GNAT provides an option for compiling such files purely for the
  purposes of checking correctness; such compilations are not required as
  part of the process of building a program. To compile a file in this
! checking mode, use the @emph{-gnatc} switch.
  
  @node Source Dependencies,The Ada Library Information Files,Generating Object Files,The GNAT Compilation Model
  @anchor{gnat_ugn/the_gnat_compilation_model id32}@anchor{7c}@anchor{gnat_ugn/the_gnat_compilation_model source-dependencies}@anchor{41}
--- 3273,3279 ----
  GNAT provides an option for compiling such files purely for the
  purposes of checking correctness; such compilations are not required as
  part of the process of building a program. To compile a file in this
! checking mode, use the @code{-gnatc} switch.
  
  @node Source Dependencies,The Ada Library Information Files,Generating Object Files,The GNAT Compilation Model
  @anchor{gnat_ugn/the_gnat_compilation_model id32}@anchor{7c}@anchor{gnat_ugn/the_gnat_compilation_model source-dependencies}@anchor{41}
*************** checking mode, use the @emph{-gnatc} swi
*** 3262,3268 ****
  
  A given object file clearly depends on the source file which is compiled
  to produce it. Here we are using "depends" in the sense of a typical
! @cite{make} utility; in other words, an object file depends on a source
  file if changes to the source file require the object file to be
  recompiled.
  In addition to this basic dependency, a given object may depend on
--- 3282,3288 ----
  
  A given object file clearly depends on the source file which is compiled
  to produce it. Here we are using "depends" in the sense of a typical
! @code{make} utility; in other words, an object file depends on a source
  file if changes to the source file require the object file to be
  recompiled.
  In addition to this basic dependency, a given object may depend on
*************** additional source files as follows:
*** 3272,3279 ****
  @itemize *
  
  @item 
! If a file being compiled @emph{with}s a unit @cite{X}, the object file
! depends on the file containing the spec of unit @cite{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.
--- 3292,3299 ----
  @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.
*************** well as the spec file.
*** 3298,3319 ****
  
  @item 
  If a file being compiled contains a call to a subprogram for which
! pragma @cite{Inline} applies and inlining is activated with the
! @emph{-gnatn} switch, the object file depends on the file containing the
  body of this subprogram as well as on the file containing the spec. Note
  that for inlining to actually occur as a result of the use of this switch,
  it is necessary to compile in optimizing mode.
  
  @geindex -gnatN switch
  
! The use of @emph{-gnatN} activates  inlining optimization
  that is performed by the front end of the compiler. This inlining does
! not require that the code generation be optimized. Like @emph{-gnatn},
  the use of this switch generates additional dependencies.
  
  When using a gcc-based back end (in practice this means using any version
  of GNAT other than for the JVM, .NET or GNAAMP platforms), then the use of
! @emph{-gnatN} is deprecated, and the use of @emph{-gnatn} is preferred.
  Historically front end inlining was more extensive than the gcc back end
  inlining, but that is no longer the case.
  
--- 3318,3339 ----
  
  @item 
  If a file being compiled contains a call to a subprogram for which
! pragma @code{Inline} applies and inlining is activated with the
! @code{-gnatn} switch, the object file depends on the file containing the
  body of this subprogram as well as on the file containing the spec. Note
  that for inlining to actually occur as a result of the use of this switch,
  it is necessary to compile in optimizing mode.
  
  @geindex -gnatN switch
  
! The use of @code{-gnatN} activates  inlining optimization
  that is performed by the front end of the compiler. This inlining does
! not require that the code generation be optimized. Like @code{-gnatn},
  the use of this switch generates additional dependencies.
  
  When using a gcc-based back end (in practice this means using any version
  of GNAT other than for the JVM, .NET or GNAAMP platforms), then the use of
! @code{-gnatN} is deprecated, and the use of @code{-gnatn} is preferred.
  Historically front end inlining was more extensive than the gcc back end
  inlining, but that is no longer the case.
  
*************** The object file for a parent unit depend
*** 3330,3339 ****
  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 @cite{A} @emph{with}s
! unit @cite{B}, whose elaboration calls an inlined procedure in package
! @cite{C}, the object file for unit @cite{A} will depend on the body of
! @cite{C}, in file @code{c.adb}.
  
  The set of dependent files described by these rules includes all the
  files on which the unit is semantically dependent, as dictated by the
--- 3350,3359 ----
  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}.
  
  The set of dependent files described by these rules includes all the
  files on which the unit is semantically dependent, as dictated by the
*************** dependencies.
*** 3343,3353 ****
  
  An object file must be recreated by recompiling the corresponding source
  file if any of the source files on which it depends are modified. For
! example, if the @cite{make} utility is used to control compilation,
  the rule for an Ada object file must mention all the source files on
  which the object file depends, according to the above definition.
  The determination of the necessary
! recompilations is done automatically when one uses @emph{gnatmake}.
  @end itemize
  
  @node The Ada Library Information Files,Binding an Ada Program,Source Dependencies,The GNAT Compilation Model
--- 3363,3373 ----
  
  An object file must be recreated by recompiling the corresponding source
  file if any of the source files on which it depends are modified. For
! example, if the @code{make} utility is used to control compilation,
  the rule for an Ada object file must mention all the source files on
  which the object file depends, according to the above definition.
  The determination of the necessary
! recompilations is done automatically when one uses @code{gnatmake}.
  @end itemize
  
  @node The Ada Library Information Files,Binding an Ada Program,Source Dependencies,The GNAT Compilation Model
*************** Main program information (including prio
*** 3378,3384 ****
  as well as the wide character encoding used during compilation).
  
  @item 
! List of arguments used in the @emph{gcc} command for the compilation
  
  @item 
  Attributes of the unit, including configuration pragmas used, an indication
--- 3398,3404 ----
  as well as the wide character encoding used during compilation).
  
  @item 
! List of arguments used in the @code{gcc} command for the compilation
  
  @item 
  Attributes of the unit, including configuration pragmas used, an indication
*************** A list of relevant restrictions applying
*** 3389,3405 ****
  checking.
  
  @item 
! Categorization information (e.g., use of pragma @cite{Pure}).
  
  @item 
  Information on all @emph{with}ed units, including presence of
! Elaborate` or @cite{Elaborate_All} pragmas.
  
  @item 
! Information from any @cite{Linker_Options} pragmas used in the unit
  
  @item 
! Information on the use of @cite{Body_Version} or @cite{Version}
  attributes in the unit.
  
  @item 
--- 3409,3425 ----
  checking.
  
  @item 
! 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 
! Information from any @code{Linker_Options} pragmas used in the unit
  
  @item 
! Information on the use of @code{Body_Version} or @code{Version}
  attributes in the unit.
  
  @item 
*************** if any of these units are modified.
*** 3410,3421 ****
  
  @item 
  Cross-reference data. Contains information on all entities referenced
! in the unit. Used by tools like @cite{gnatxref} and @cite{gnatfind} to
  provide cross-reference information.
  @end itemize
  
  For a full detailed description of the format of the @code{ALI} file,
! see the source of the body of unit @cite{Lib.Writ}, contained in file
  @code{lib-writ.adb} in the GNAT compiler sources.
  
  @node Binding an Ada Program,GNAT and Libraries,The Ada Library Information Files,The GNAT Compilation Model
--- 3430,3441 ----
  
  @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,
! see the source of the body of unit @code{Lib.Writ}, contained in file
  @code{lib-writ.adb} in the GNAT compiler sources.
  
  @node Binding an Ada Program,GNAT and Libraries,The Ada Library Information Files,The GNAT Compilation Model
*************** compilation unit that require them, foll
*** 3447,3453 ****
  a call to the main program. This Ada program is compiled to generate the
  object file for the main program. The name of
  the Ada file is @code{b~xxx}.adb` (with the corresponding spec
! @code{b~xxx}.ads`) where @cite{xxx} is the name of the
  main program unit.
  
  Finally, the linker is used to build the resulting executable program,
--- 3467,3473 ----
  a call to the main program. This Ada program is compiled to generate the
  object file for the main program. The name of
  the Ada file is @code{b~xxx}.adb` (with the corresponding spec
! @code{b~xxx}.ads`) where @code{xxx} is the name of the
  main program unit.
  
  Finally, the linker is used to build the resulting executable program,
*************** which supports a special type of project
*** 3547,3553 ****
  chapter of the @emph{GPRbuild User's Guide}).
  
  A project is considered a library project, when two project-level attributes
! are defined in it: @cite{Library_Name} and @cite{Library_Dir}. In order to
  control different aspects of library configuration, additional optional
  project-level attributes can be specified:
  
--- 3567,3573 ----
  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
  control different aspects of library configuration, additional optional
  project-level attributes can be specified:
  
*************** project-level attributes can be specifie
*** 3558,3564 ****
  
  @table @asis
  
! @item @emph{Library_Kind}
  
  This attribute controls whether the library is to be static or dynamic
  @end table
--- 3578,3584 ----
  
  @table @asis
  
! @item @code{Library_Kind}
  
  This attribute controls whether the library is to be static or dynamic
  @end table
*************** This attribute controls whether the libr
*** 3567,3573 ****
  
  @table @asis
  
! @item @emph{Library_Version}
  
  This attribute specifies the library version; this value is used
  during dynamic linking of shared libraries to determine if the currently
--- 3587,3593 ----
  
  @table @asis
  
! @item @code{Library_Version}
  
  This attribute specifies the library version; this value is used
  during dynamic linking of shared libraries to determine if the currently
*************** installed versions of the binaries are c
*** 3575,3587 ****
  @end table
  
  @item 
! @emph{Library_Options}
  
  @item 
  
  @table @asis
  
! @item @emph{Library_GCC}
  
  These attributes specify additional low-level options to be used during
  library generation, and redefine the actual application used to generate
--- 3595,3607 ----
  @end table
  
  @item 
! @code{Library_Options}
  
  @item 
  
  @table @asis
  
! @item @code{Library_GCC}
  
  These attributes specify additional low-level options to be used during
  library generation, and redefine the actual application used to generate
*************** library: for example with a Makefile (@r
*** 3623,3629 ****
  with a conventional script. For simple libraries, it is also possible to create
  a dummy main program which depends upon all the packages that comprise the
  interface of the library. This dummy main program can then be given to
! @emph{gnatmake}, which will ensure that all necessary objects are built.
  
  After this task is accomplished, you should follow the standard procedure
  of the underlying operating system to produce the static or shared library.
--- 3643,3649 ----
  with a conventional script. For simple libraries, it is also possible to create
  a dummy main program which depends upon all the packages that comprise the
  interface of the library. This dummy main program can then be given to
! @code{gnatmake}, which will ensure that all necessary objects are built.
  
  After this task is accomplished, you should follow the standard procedure
  of the underlying operating system to produce the static or shared library.
*************** contain the location for the GNAT run-ti
*** 3716,3725 ****
  be @code{adalib}).
  
  You can also specify a new default path to the run-time library at compilation
! time with the switch @emph{--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 @emph{gcc}, @emph{gnatmake}, @emph{gnatbind},
! @emph{gnatls}, @emph{gnatfind} and @emph{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
--- 3736,3745 ----
  be @code{adalib}).
  
  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
*************** any part of it.
*** 3734,3740 ****
  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 @cite{My_Lib} shown in examples in earlier sections, you can
  write:
  
  @example
--- 3754,3760 ----
  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:
  
  @example
*************** project Liba is
*** 3759,3765 ****
  end Liba;
  @end example
  
! This is an alternative to the use of @cite{pragma Linker_Options}. It is
  especially interesting in the context of systems with several interdependent
  static libraries where finding a proper linker order is not easy and best be
  left to the tools having visibility over project dependence information.
--- 3779,3785 ----
  end Liba;
  @end example
  
! This is an alternative to the use of @code{pragma Linker_Options}. It is
  especially interesting in the context of systems with several interdependent
  static libraries where finding a proper linker order is not easy and best be
  left to the tools having visibility over project dependence information.
*************** variable
*** 3807,3813 ****
  @code{ada_object_path}
  
  @item 
! a pragma @cite{Linker_Options} has been added to one of the sources.
  For example:
  
  @example
--- 3827,3833 ----
  @code{ada_object_path}
  
  @item 
! a pragma @code{Linker_Options} has been added to one of the sources.
  For example:
  
  @example
*************** The main purpose of a SAL is to minimize
*** 3860,3866 ****
  applications when a new version of the library is installed. Specifically,
  if the interface sources have not changed, client applications do not need to
  be recompiled. If, furthermore, a SAL is provided in the shared form and its
! version, controlled by @cite{Library_Version} attribute, is not changed,
  then the clients do not need to be relinked.
  
  SALs also allow the library providers to minimize the amount of library source
--- 3880,3886 ----
  applications when a new version of the library is installed. Specifically,
  if the interface sources have not changed, client applications do not need to
  be recompiled. If, furthermore, a SAL is provided in the shared form and its
! version, controlled by @code{Library_Version} attribute, is not changed,
  then the clients do not need to be relinked.
  
  SALs also allow the library providers to minimize the amount of library source
*************** GNAT's Project facility provides a simpl
*** 3879,3888 ****
  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 (@cite{Library_Name} and
! @cite{Library_Dir}; see the @emph{Library Projects} section in the
  @emph{GNAT Project Manager} chapter of the @emph{GPRbuild User's Guide}),
! the attribute @cite{Library_Interface} must be defined.  For example:
  
  @example
  for Library_Dir use "lib_dir";
--- 3899,3908 ----
  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
  for Library_Dir use "lib_dir";
*************** for Library_Name use "dummy";
*** 3890,3896 ****
  for Library_Interface use ("int1", "int1.child");
  @end example
  
! Attribute @cite{Library_Interface} has a non-empty string list value,
  each string in the list designating a unit contained in an immediate source
  of the project file.
  
--- 3910,3916 ----
  for Library_Interface use ("int1", "int1.child");
  @end example
  
! Attribute @code{Library_Interface} has a non-empty string list value,
  each string in the list designating a unit contained in an immediate source
  of the project file.
  
*************** a package whose name depends on the libr
*** 3899,3916 ****
  (@code{b~dummy.ads/b} in the example above).
  This binder-generated package includes initialization and
  finalization procedures whose
! names depend on the library name (@cite{dummyinit} and @cite{dummyfinal}
  in the example
  above). The object corresponding to this package is included in the library.
  
  You must ensure timely (e.g., prior to any use of interfaces in the SAL)
  calling of these procedures if a static SAL is built, or if a shared SAL
  is built
! with the project-level attribute @cite{Library_Auto_Init} set to
! @cite{"false"}.
  
  For a Stand-Alone Library, only the @code{ALI} files of the Interface Units
! (those that are listed in attribute @cite{Library_Interface}) are copied to
  the Library Directory. As a consequence, only the Interface Units may be
  imported from Ada units outside of the library. If other units are imported,
  the binding phase will fail.
--- 3919,3936 ----
  (@code{b~dummy.ads/b} in the example above).
  This binder-generated package includes initialization and
  finalization procedures whose
! names depend on the library name (@code{dummyinit} and @code{dummyfinal}
  in the example
  above). The object corresponding to this package is included in the library.
  
  You must ensure timely (e.g., prior to any use of interfaces in the SAL)
  calling of these procedures if a static SAL is built, or if a shared SAL
  is built
! with the project-level attribute @code{Library_Auto_Init} set to
! @code{"false"}.
  
  For a Stand-Alone Library, only the @code{ALI} files of the Interface Units
! (those that are listed in attribute @code{Library_Interface}) are copied to
  the Library Directory. As a consequence, only the Interface Units may be
  imported from Ada units outside of the library. If other units are imported,
  the binding phase will fail.
*************** ensuring that the library is linked only
*** 3921,3927 ****
  libraries. So an encapsulated library only depends on system
  libraries, all other code, including the GNAT runtime, is embedded. To
  build an encapsulated library the attribute
! @cite{Library_Standalone} must be set to @cite{encapsulated}:
  
  @example
  for Library_Dir use "lib_dir";
--- 3941,3947 ----
  libraries. So an encapsulated library only depends on system
  libraries, all other code, including the GNAT runtime, is embedded. To
  build an encapsulated library the attribute
! @code{Library_Standalone} must be set to @code{encapsulated}:
  
  @example
  for Library_Dir use "lib_dir";
*************** for Library_Interface use ("int1", "int1
*** 3931,3941 ****
  for Library_Standalone use "encapsulated";
  @end example
  
! The default value for this attribute is @cite{standard} in which case
  a stand-alone library is built.
  
! The attribute @cite{Library_Src_Dir} may be specified for a
! Stand-Alone Library. @cite{Library_Src_Dir} is a simple attribute that has a
  single string value. Its value must be the path (absolute or relative to the
  project directory) of an existing directory. This directory cannot be the
  object directory or one of the source directories, but it can be the same as
--- 3951,3961 ----
  for Library_Standalone use "encapsulated";
  @end example
  
! The default value for this attribute is @code{standard} in which case
  a stand-alone library is built.
  
! The attribute @code{Library_Src_Dir} may be specified for a
! Stand-Alone Library. @code{Library_Src_Dir} is a simple attribute that has a
  single string value. Its value must be the path (absolute or relative to the
  project directory) of an existing directory. This directory cannot be the
  object directory or one of the source directories, but it can be the same as
*************** the library directory. The sources of th
*** 3943,3949 ****
  Units of the library that are needed by an Ada client of the library will be
  copied to the designated directory, called the Interface Copy directory.
  These sources include the specs of the Interface Units, but they may also
! include bodies and subunits, when pragmas @cite{Inline} or @cite{Inline_Always}
  are used, or when there is a generic unit in the spec. Before the sources
  are copied to the Interface Copy directory, an attempt is made to delete all
  files in the Interface Copy directory.
--- 3963,3969 ----
  Units of the library that are needed by an Ada client of the library will be
  copied to the designated directory, called the Interface Copy directory.
  These sources include the specs of the Interface Units, but they may also
! include bodies and subunits, when pragmas @code{Inline} or @code{Inline_Always}
  are used, or when there is a generic unit in the spec. Before the sources
  are copied to the Interface Copy directory, an attempt is made to delete all
  files in the Interface Copy directory.
*************** occasions when it is necessary here are
*** 3958,3967 ****
  Compile all library sources.
  
  @item 
! Invoke the binder with the switch @emph{-n} (No Ada main program),
  with all the @code{ALI} files of the interfaces, and
! with the switch @emph{-L} to give specific names to the @cite{init}
! and @cite{final} procedures.  For example:
  
  @example
  $ gnatbind -n int1.ali int2.ali -Lsal1
--- 3978,3987 ----
  Compile all library sources.
  
  @item 
! Invoke the binder with the switch @code{-n} (No Ada main program),
  with all the @code{ALI} files of the interfaces, and
! with the switch @code{-L} to give specific names to the @code{init}
! and @code{final} procedures.  For example:
  
  @example
  $ gnatbind -n int1.ali int2.ali -Lsal1
*************** $ gcc -c b~int2.adb
*** 3976,3990 ****
  
  @item 
  Link the dynamic library with all the necessary object files,
! indicating to the linker the names of the @cite{init} (and possibly
! @cite{final}) procedures for automatic initialization (and finalization).
  The built library should be placed in a directory different from
  the object directory.
  
  @item 
! Copy the @cite{ALI} files of the interface to the library directory,
  add in this copy an indication that it is an interface to a SAL
! (i.e., add a word @emph{SL} on the line in the @code{ALI} file that starts
  with letter 'P') and make the modified copy of the @code{ALI} file
  read-only.
  @end itemize
--- 3996,4010 ----
  
  @item 
  Link the dynamic library with all the necessary object files,
! indicating to the linker the names of the @code{init} (and possibly
! @code{final}) procedures for automatic initialization (and finalization).
  The built library should be placed in a directory different from
  the object directory.
  
  @item 
! Copy the @code{ALI} files of the interface to the library directory,
  add in this copy an indication that it is an interface to a SAL
! (i.e., add a word @code{SL} on the line in the @code{ALI} file that starts
  with letter 'P') and make the modified copy of the @code{ALI} file
  read-only.
  @end itemize
*************** It is easy to adapt the SAL build proced
*** 4001,4008 ****
  a non-Ada context.
  
  The only extra step required is to ensure that library interface subprograms
! are compatible with the main program, by means of @cite{pragma Export}
! or @cite{pragma Convention}.
  
  Here is an example of simple library interface for use with C main program:
  
--- 4021,4028 ----
  a non-Ada context.
  
  The only extra step required is to ensure that library interface subprograms
! are compatible with the main program, by means of @code{pragma Export}
! or @code{pragma Convention}.
  
  Here is an example of simple library interface for use with C main program:
  
*************** On the foreign language side, you must p
*** 4022,4028 ****
  library interface; remember that it should contain elaboration routines in
  addition to interface subprograms.
  
! The example below shows the content of @cite{mylib_interface.h} (note
  that there is no rule for the naming of this file, any name can be used)
  
  @example
--- 4042,4048 ----
  library interface; remember that it should contain elaboration routines in
  addition to interface subprograms.
  
! The example below shows the content of @code{mylib_interface.h} (note
  that there is no rule for the naming of this file, any name can be used)
  
  @example
*************** extern void do_something_else (void);
*** 4038,4049 ****
  @end example
  
  Libraries built as explained above can be used from any program, provided
! that the elaboration procedures (named @cite{mylibinit} in the previous
  example) are called before the library services are used. Any number of
  libraries can be used simultaneously, as long as the elaboration
  procedure of each library is called.
  
! Below is an example of a C program that uses the @cite{mylib} library.
  
  @example
  #include "mylib_interface.h"
--- 4058,4069 ----
  @end example
  
  Libraries built as explained above can be used from any program, provided
! that the elaboration procedures (named @code{mylibinit} in the previous
  example) are called before the library services are used. Any number of
  libraries can be used simultaneously, as long as the elaboration
  procedure of each library is called.
  
! Below is an example of a C program that uses the @code{mylib} library.
  
  @example
  #include "mylib_interface.h"
*************** main (void)
*** 4065,4071 ****
  @end example
  
  Note that invoking any library finalization procedure generated by
! @cite{gnatbind} shuts down the Ada run-time environment.
  Consequently, the
  finalization of all Ada libraries must be performed at the end of the program.
  No call to these libraries or to the Ada run-time library should be made
--- 4085,4091 ----
  @end example
  
  Note that invoking any library finalization procedure generated by
! @code{gnatbind} shuts down the Ada run-time environment.
  Consequently, the
  finalization of all Ada libraries must be performed at the end of the program.
  No call to these libraries or to the Ada run-time library should be made
*************** as they can create incompatibilities wit
*** 4089,4112 ****
  @itemize *
  
  @item 
! pragma @cite{Locking_Policy}
  
  @item 
! pragma @cite{Partition_Elaboration_Policy}
  
  @item 
! pragma @cite{Queuing_Policy}
  
  @item 
! pragma @cite{Task_Dispatching_Policy}
  
  @item 
! pragma @cite{Unreserve_All_Interrupts}
  @end itemize
  
  When using a library that contains such pragmas, the user must make sure
  that all libraries use the same pragmas with the same values. Otherwise,
! @cite{Program_Error} will
  be raised during the elaboration of the conflicting
  libraries. The usage of these pragmas and its consequences for the user
  should therefore be well documented.
--- 4109,4132 ----
  @itemize *
  
  @item 
! pragma @code{Locking_Policy}
  
  @item 
! pragma @code{Partition_Elaboration_Policy}
  
  @item 
! pragma @code{Queuing_Policy}
  
  @item 
! pragma @code{Task_Dispatching_Policy}
  
  @item 
! pragma @code{Unreserve_All_Interrupts}
  @end itemize
  
  When using a library that contains such pragmas, the user must make sure
  that all libraries use the same pragmas with the same values. Otherwise,
! @code{Program_Error} will
  be raised during the elaboration of the conflicting
  libraries. The usage of these pragmas and its consequences for the user
  should therefore be well documented.
*************** enabled or disabled in a consistent mann
*** 4116,4124 ****
  Otherwise, Program_Error will be raised during the elaboration of the
  conflicting libraries.
  
! If the @cite{Version} or @cite{Body_Version}
  attributes are used inside a library, then you need to
! perform a @cite{gnatbind} step that specifies all @code{ALI} files in all
  libraries, so that version identifiers can be properly computed.
  In practice these attributes are rarely used, so this is unlikely
  to be a consideration.
--- 4136,4144 ----
  Otherwise, Program_Error will be raised during the elaboration of the
  conflicting libraries.
  
! If the @code{Version} or @code{Body_Version}
  attributes are used inside a library, then you need to
! perform a @code{gnatbind} step that specifies all @code{ALI} files in all
  libraries, so that version identifiers can be properly computed.
  In practice these attributes are rarely used, so this is unlikely
  to be a consideration.
*************** to be a consideration.
*** 4140,4147 ****
  
  It may be useful to recompile the GNAT library in various contexts, the
  most important one being the use of partition-wide configuration pragmas
! such as @cite{Normalize_Scalars}. A special Makefile called
! @cite{Makefile.adalib} is provided to that effect and can be found in
  the directory containing the GNAT library. The location of this
  directory depends on the way the GNAT environment has been installed and can
  be determined by means of the command:
--- 4160,4167 ----
  
  It may be useful to recompile the GNAT library in various contexts, the
  most important one being the use of partition-wide configuration pragmas
! such as @code{Normalize_Scalars}. A special Makefile called
! @code{Makefile.adalib} is provided to that effect and can be found in
  the directory containing the GNAT library. The location of this
  directory depends on the way the GNAT environment has been installed and can
  be determined by means of the command:
*************** if FP_Initialize_Required then
*** 4242,4251 ****
  end if;
  @end example
  
! Not only will the code inside the @cite{if} statement not be executed if
! the constant Boolean is @cite{False}, but it will also be completely
  deleted from the program.
! However, the code is only deleted after the @cite{if} statement
  has been checked for syntactic and semantic correctness.
  (In contrast, with preprocessors the code is deleted before the
  compiler ever gets to see it, so it is not checked until the switch
--- 4262,4271 ----
  end if;
  @end example
  
! Not only will the code inside the @code{if} statement not be executed if
! the constant Boolean is @code{False}, but it will also be completely
  deleted from the program.
! However, the code is only deleted after the @code{if} statement
  has been checked for syntactic and semantic correctness.
  (In contrast, with preprocessors the code is deleted before the
  compiler ever gets to see it, so it is not checked until the switch
*************** package Config is
*** 4264,4273 ****
  end Config;
  @end example
  
! The @cite{Config} package exists in multiple forms for the various targets,
! with an appropriate script selecting the version of @cite{Config} needed.
  Then any other unit requiring conditional compilation can do a @emph{with}
! of @cite{Config} to make the constants visible.
  
  @node Debugging - A Special Case,Conditionalizing Declarations,Use of Boolean Constants,Modeling Conditional Compilation in Ada
  @anchor{gnat_ugn/the_gnat_compilation_model debugging-a-special-case}@anchor{9d}@anchor{gnat_ugn/the_gnat_compilation_model id50}@anchor{9e}
--- 4284,4293 ----
  end Config;
  @end example
  
! 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
  @anchor{gnat_ugn/the_gnat_compilation_model debugging-a-special-case}@anchor{9d}@anchor{gnat_ugn/the_gnat_compilation_model id50}@anchor{9e}
*************** end if;
*** 4298,4307 ****
  
  Since this is a common case, there are special features to deal with
  this in a convenient manner. For the case of tests, Ada 2005 has added
! a pragma @cite{Assert} that can be used for such tests. This pragma is modeled
! on the @cite{Assert} pragma that has always been available in GNAT, so this
  feature may be used with GNAT even if you are not using Ada 2005 features.
! The use of pragma @cite{Assert} is described in the
  @cite{GNAT_Reference_Manual}, but as an
  example, the last test could be written:
  
--- 4318,4327 ----
  
  Since this is a common case, there are special features to deal with
  this in a convenient manner. For the case of tests, Ada 2005 has added
! a pragma @code{Assert} that can be used for such tests. This pragma is modeled
! on the @code{Assert} pragma that has always been available in GNAT, so this
  feature may be used with GNAT even if you are not using Ada 2005 features.
! The use of pragma @code{Assert} is described in the
  @cite{GNAT_Reference_Manual}, but as an
  example, the last test could be written:
  
*************** pragma Assert (Temperature <= 999.0);
*** 4316,4377 ****
  @end example
  
  In both cases, if assertions are active and the temperature is excessive,
! the exception @cite{Assert_Failure} will be raised, with the given string in
  the first case or a string indicating the location of the pragma in the second
  case used as the exception message.
  
  @geindex pragma Assertion_Policy
  
! You can turn assertions on and off by using the @cite{Assertion_Policy}
  pragma.
  
  @geindex -gnata switch
  
  This is an Ada 2005 pragma which is implemented in all modes by
! GNAT. Alternatively, you can use the @emph{-gnata} switch
  to enable assertions from the command line, which applies to
  all versions of Ada.
  
  @geindex pragma Debug
  
! For the example above with the @cite{Put_Line}, the GNAT-specific pragma
! @cite{Debug} can be used:
  
  @example
  pragma Debug (Put_Line ("got to the first stage!"));
  @end example
  
  If debug pragmas are enabled, the argument, which must be of the form of
! a procedure call, is executed (in this case, @cite{Put_Line} will be called).
  Only one call can be present, but of course a special debugging procedure
  containing any code you like can be included in the program and then
! called in a pragma @cite{Debug} argument as needed.
  
! One advantage of pragma @cite{Debug} over the @cite{if Debugging then}
! construct is that pragma @cite{Debug} can appear in declarative contexts,
  such as at the very beginning of a procedure, before local declarations have
  been elaborated.
  
  @geindex pragma Debug_Policy
  
! Debug pragmas are enabled using either the @emph{-gnata} switch that also
  controls assertions, or with a separate Debug_Policy pragma.
  
  The latter pragma is new in the Ada 2005 versions of GNAT (but it can be used
  in Ada 95 and Ada 83 programs as well), and is analogous to
! pragma @cite{Assertion_Policy} to control assertions.
  
! @cite{Assertion_Policy} and @cite{Debug_Policy} are configuration pragmas,
  and thus they can appear in @code{gnat.adc} if you are not using a
  project file, or in the file designated to contain configuration pragmas
  in a project file.
  They then apply to all subsequent compilations. In practice the use of
! the @emph{-gnata} switch is often the most convenient method of controlling
  the status of these pragmas.
  
  Note that a pragma is not a statement, so in contexts where a statement
  sequence is required, you can't just write a pragma on its own. You have
! to add a @cite{null} statement.
  
  @example
  if ... then
--- 4336,4397 ----
  @end example
  
  In both cases, if assertions are active and the temperature is excessive,
! the exception @code{Assert_Failure} will be raised, with the given string in
  the first case or a string indicating the location of the pragma in the second
  case used as the exception message.
  
  @geindex pragma Assertion_Policy
  
! You can turn assertions on and off by using the @code{Assertion_Policy}
  pragma.
  
  @geindex -gnata switch
  
  This is an Ada 2005 pragma which is implemented in all modes by
! GNAT. Alternatively, you can use the @code{-gnata} switch
  to enable assertions from the command line, which applies to
  all versions of Ada.
  
  @geindex pragma Debug
  
! For the example above with the @code{Put_Line}, the GNAT-specific pragma
! @code{Debug} can be used:
  
  @example
  pragma Debug (Put_Line ("got to the first stage!"));
  @end example
  
  If debug pragmas are enabled, the argument, which must be of the form of
! a procedure call, is executed (in this case, @code{Put_Line} will be called).
  Only one call can be present, but of course a special debugging procedure
  containing any code you like can be included in the program and then
! called in a pragma @code{Debug} argument as needed.
  
! One advantage of pragma @code{Debug} over the @code{if Debugging then}
! construct is that pragma @code{Debug} can appear in declarative contexts,
  such as at the very beginning of a procedure, before local declarations have
  been elaborated.
  
  @geindex pragma Debug_Policy
  
! Debug pragmas are enabled using either the @code{-gnata} switch that also
  controls assertions, or with a separate Debug_Policy pragma.
  
  The latter pragma is new in the Ada 2005 versions of GNAT (but it can be used
  in Ada 95 and Ada 83 programs as well), and is analogous to
! pragma @code{Assertion_Policy} to control assertions.
  
! @code{Assertion_Policy} and @code{Debug_Policy} are configuration pragmas,
  and thus they can appear in @code{gnat.adc} if you are not using a
  project file, or in the file designated to contain configuration pragmas
  in a project file.
  They then apply to all subsequent compilations. In practice the use of
! the @code{-gnata} switch is often the most convenient method of controlling
  the status of these pragmas.
  
  Note that a pragma is not a statement, so in contexts where a statement
  sequence is required, you can't just write a pragma on its own. You have
! to add a @code{null} statement.
  
  @example
  if ... then
*************** Note that in this approach, both declara
*** 4414,4421 ****
  compiler so this can only be used where both declarations are legal,
  even though one of them will not be used.
  
! Another approach is to define integer constants, e.g., @cite{Bits_Per_Word},
! or Boolean constants, e.g., @cite{Little_Endian}, and then write declarations
  that are parameterized by these constants. For example
  
  @example
--- 4434,4441 ----
  compiler so this can only be used where both declarations are legal,
  even though one of them will not be used.
  
! Another approach is to define integer constants, e.g., @code{Bits_Per_Word},
! or Boolean constants, e.g., @code{Little_Endian}, and then write declarations
  that are parameterized by these constants. For example
  
  @example
*************** for Rec use
*** 4424,4430 ****
  end record;
  @end example
  
! If @cite{Bits_Per_Word} is set to 32, this generates either
  
  @example
  for Rec use
--- 4444,4450 ----
  end record;
  @end example
  
! If @code{Bits_Per_Word} is set to 32, this generates either
  
  @example
  for Rec use
*************** for the little endian case. Since a powe
*** 4444,4450 ****
  notation is usable for creating static constants, clever use of this
  feature can often solve quite difficult problems in conditionalizing
  compilation (note incidentally that in Ada 95, the little endian
! constant was introduced as @cite{System.Default_Bit_Order}, so you do not
  need to define this one yourself).
  
  @node Use of Alternative Implementations,Preprocessing,Conditionalizing Declarations,Modeling Conditional Compilation in Ada
--- 4464,4470 ----
  notation is usable for creating static constants, clever use of this
  feature can often solve quite difficult problems in conditionalizing
  compilation (note incidentally that in Ada 95, the little endian
! constant was introduced as @code{System.Default_Bit_Order}, so you do not
  need to define this one yourself).
  
  @node Use of Alternative Implementations,Preprocessing,Conditionalizing Declarations,Modeling Conditional Compilation in Ada
*************** else
*** 4480,4489 ****
  end if;
  @end example
  
! where @cite{Ada_2005} is a Boolean constant.
  
! But this won't work when @cite{Ada_2005} is set to @cite{False},
! since the @cite{then} clause will be illegal for an Ada 95 compiler.
  (Recall that although such unreachable code would eventually be deleted
  by the compiler, it still needs to be legal.  If it uses features
  introduced in Ada 2005, it will be illegal in Ada 95.)
--- 4500,4509 ----
  end if;
  @end example
  
! where @code{Ada_2005} is a Boolean constant.
  
! But this won't work when @code{Ada_2005} is set to @code{False},
! since the @code{then} clause will be illegal for an Ada 95 compiler.
  (Recall that although such unreachable code would eventually be deleted
  by the compiler, it still needs to be legal.  If it uses features
  introduced in Ada 2005, it will be illegal in Ada 95.)
*************** So instead we write
*** 4494,4502 ****
  procedure Insert is separate;
  @end example
  
! Then we have two files for the subunit @cite{Insert}, with the two sets of
  code.
! If the package containing this is called @cite{File_Queries}, then we might
  have two files
  
  
--- 4514,4522 ----
  procedure Insert is separate;
  @end example
  
! Then we have two files for the subunit @code{Insert}, with the two sets of
  code.
! If the package containing this is called @code{File_Queries}, then we might
  have two files
  
  
*************** renaming it if necessary to @code{s-asth
*** 4571,4581 ****
  Another style for arranging alternative implementations is through Ada's
  access-to-subprogram facility.
  In case some functionality is to be conditionally included,
! you can declare an access-to-procedure variable @cite{Ref} that is initialized
! to designate a 'do nothing' procedure, and then invoke @cite{Ref.all}
  when appropriate.
! In some library package, set @cite{Ref} to @cite{Proc'Access} for some
! procedure @cite{Proc} that performs the relevant processing.
  The initialization only occurs if the library package is included in the
  program.
  The same idea can also be implemented using tagged types and dispatching
--- 4591,4601 ----
  Another style for arranging alternative implementations is through Ada's
  access-to-subprogram facility.
  In case some functionality is to be conditionally included,
! you can declare an access-to-procedure variable @code{Ref} that is initialized
! to designate a 'do nothing' procedure, and then invoke @code{Ref.all}
  when appropriate.
! In some library package, set @code{Ref} to @code{Proc'Access} for some
! procedure @code{Proc} that performs the relevant processing.
  The initialization only occurs if the library package is included in the
  program.
  The same idea can also be implemented using tagged types and dispatching
*************** with legacy code on other compilers, to
*** 4604,4644 ****
  The preprocessor may be used in two separate modes. It can be used quite
  separately from the compiler, to generate a separate output source file
  that is then fed to the compiler as a separate step. This is the
! @cite{gnatprep} utility, whose use is fully described in
  @ref{17,,Preprocessing with gnatprep}.
  
  The preprocessing language allows such constructs as
  
  @example
  #if DEBUG or else (PRIORITY > 4) then
!    bunch of declarations
  #else
!    completely different bunch of declarations
  #end if;
  @end example
  
! The values of the symbols @cite{DEBUG} and @cite{PRIORITY} can be
  defined either on the command line or in a separate file.
  
  The other way of running the preprocessor is even closer to the C style and
  often more convenient. In this approach the preprocessing is integrated into
! the compilation process. The compiler is fed the preprocessor input which
! includes @cite{#if} lines etc, and then the compiler carries out the
  preprocessing internally and processes the resulting output.
  For more details on this approach, see @ref{18,,Integrated Preprocessing}.
  
  @node Preprocessing with gnatprep,Integrated Preprocessing,Modeling Conditional Compilation in Ada,Conditional Compilation
  @anchor{gnat_ugn/the_gnat_compilation_model id54}@anchor{a5}@anchor{gnat_ugn/the_gnat_compilation_model preprocessing-with-gnatprep}@anchor{17}
! @subsection Preprocessing with @cite{gnatprep}
  
  
  @geindex gnatprep
  
  @geindex Preprocessing (gnatprep)
  
! This section discusses how to use GNAT's @cite{gnatprep} utility for simple
  preprocessing.
! Although designed for use with GNAT, @cite{gnatprep} does not depend on any
  special GNAT features.
  For further discussion of conditional compilation in general, see
  @ref{16,,Conditional Compilation}.
--- 4624,4664 ----
  The preprocessor may be used in two separate modes. It can be used quite
  separately from the compiler, to generate a separate output source file
  that is then fed to the compiler as a separate step. This is the
! @code{gnatprep} utility, whose use is fully described in
  @ref{17,,Preprocessing with gnatprep}.
  
  The preprocessing language allows such constructs as
  
  @example
  #if DEBUG or else (PRIORITY > 4) then
!    sequence of declarations
  #else
!    completely different sequence of declarations
  #end if;
  @end example
  
! The values of the symbols @code{DEBUG} and @code{PRIORITY} can be
  defined either on the command line or in a separate file.
  
  The other way of running the preprocessor is even closer to the C style and
  often more convenient. In this approach the preprocessing is integrated into
! the compilation process. The compiler is given the preprocessor input which
! includes @code{#if} lines etc, and then the compiler carries out the
  preprocessing internally and processes the resulting output.
  For more details on this approach, see @ref{18,,Integrated Preprocessing}.
  
  @node Preprocessing with gnatprep,Integrated Preprocessing,Modeling Conditional Compilation in Ada,Conditional Compilation
  @anchor{gnat_ugn/the_gnat_compilation_model id54}@anchor{a5}@anchor{gnat_ugn/the_gnat_compilation_model preprocessing-with-gnatprep}@anchor{17}
! @subsection Preprocessing with @code{gnatprep}
  
  
  @geindex gnatprep
  
  @geindex Preprocessing (gnatprep)
  
! This section discusses how to use GNAT's @code{gnatprep} utility for simple
  preprocessing.
! Although designed for use with GNAT, @code{gnatprep} does not depend on any
  special GNAT features.
  For further discussion of conditional compilation in general, see
  @ref{16,,Conditional Compilation}.
*************** For further discussion of conditional co
*** 4657,4676 ****
  @subsubsection Preprocessing Symbols
  
  
! Preprocessing symbols are defined in definition files and referred to in
! 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).
  
  @node Using gnatprep,Switches for gnatprep,Preprocessing Symbols,Preprocessing with gnatprep
  @anchor{gnat_ugn/the_gnat_compilation_model using-gnatprep}@anchor{a8}@anchor{gnat_ugn/the_gnat_compilation_model id56}@anchor{a9}
! @subsubsection Using @cite{gnatprep}
  
  
! To call @cite{gnatprep} use:
  
  @example
! $ gnatprep [`switches`] `infile` `outfile` [`deffile`]
  @end example
  
  where
--- 4677,4696 ----
  @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).
  
  @node Using gnatprep,Switches for gnatprep,Preprocessing Symbols,Preprocessing with gnatprep
  @anchor{gnat_ugn/the_gnat_compilation_model using-gnatprep}@anchor{a8}@anchor{gnat_ugn/the_gnat_compilation_model id56}@anchor{a9}
! @subsubsection Using @code{gnatprep}
  
  
! To call @code{gnatprep} use:
  
  @example
! $ gnatprep [ switches ] infile outfile [ deffile ]
  @end example
  
  where
*************** file containing preprocessor directives.
*** 4705,4728 ****
  
  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
! normally have an ads or adb suffix.
  @end table
  
  @item 
  
  @table @asis
  
! @item @emph{deffile}
  
  is the full name of a text file containing definitions of
  preprocessing symbols to be referenced by the preprocessor. This argument is
! optional, and can be replaced by the use of the @emph{-D} switch.
  @end table
  @end itemize
  
  @node Switches for gnatprep,Form of Definitions File,Using gnatprep,Preprocessing with gnatprep
  @anchor{gnat_ugn/the_gnat_compilation_model switches-for-gnatprep}@anchor{aa}@anchor{gnat_ugn/the_gnat_compilation_model id57}@anchor{ab}
! @subsubsection Switches for @cite{gnatprep}
  
  
  @geindex --version (gnatprep)
--- 4725,4748 ----
  
  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
! normally have an @code{ads} or @code{adb} suffix.
  @end table
  
  @item 
  
  @table @asis
  
! @item @code{deffile}
  
  is the full name of a text file containing definitions of
  preprocessing symbols to be referenced by the preprocessor. This argument is
! optional, and can be replaced by the use of the @code{-D} switch.
  @end table
  @end itemize
  
  @node Switches for gnatprep,Form of Definitions File,Using gnatprep,Preprocessing with gnatprep
  @anchor{gnat_ugn/the_gnat_compilation_model switches-for-gnatprep}@anchor{aa}@anchor{gnat_ugn/the_gnat_compilation_model id57}@anchor{ab}
! @subsubsection Switches for @code{gnatprep}
  
  
  @geindex --version (gnatprep)
*************** Display Copyright and version, then exit
*** 4742,4748 ****
  
  @item @code{--help}
  
! If @emph{--version} was not used, display usage, then exit disregarding
  all other options.
  @end table
  
--- 4762,4768 ----
  
  @item @code{--help}
  
! If @code{--version} was not used, display usage and then exit disregarding
  all other options.
  @end table
  
*************** preserving line numbers in the output fi
*** 4767,4773 ****
  
  Causes both preprocessor lines and the lines deleted
  by preprocessing to be retained in the output source as comments marked
! with the special string @cite{"--! "}. This option will result in line numbers
  being preserved in the output file.
  @end table
  
--- 4787,4793 ----
  
  Causes both preprocessor lines and the lines deleted
  by preprocessing to be retained in the output source as comments marked
! with the special string @code{"--! "}. This option will result in line numbers
  being preserved in the output file.
  @end table
  
*************** being preserved in the output file.
*** 4781,4790 ****
  Causes comments to be scanned. Normally comments are ignored by gnatprep.
  If this option is specified, then comments are scanned and any $symbol
  substitutions performed as in program text. This is particularly useful
! when structured comments are used (e.g., when writing programs in the
! SPARK dialect of Ada). Note that this switch is not available when
! doing integrated preprocessing (it would be useless in this context
! since comments are ignored by the compiler in any case).
  @end table
  
  @geindex -D (gnatprep)
--- 4801,4810 ----
  Causes comments to be scanned. Normally comments are ignored by gnatprep.
  If this option is specified, then comments are scanned and any $symbol
  substitutions performed as in program text. This is particularly useful
! when structured comments are used (e.g., for programs written in a
! pre-2014 version of the SPARK Ada subset). Note that this switch is not
! available when  doing integrated preprocessing (it would be useless in
! this context since comments are ignored by the compiler in any case).
  @end table
  
  @geindex -D (gnatprep)
*************** since comments are ignored by the compil
*** 4792,4801 ****
  
  @table @asis
  
! @item @code{-D@emph{symbol}=@emph{value}}
  
! Defines a new preprocessing symbol, associated with value. If no value is given
! on the command line, then symbol is considered to be @cite{True}. This switch
  can be used in place of a definition file.
  @end table
  
--- 4812,4821 ----
  
  @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
  can be used in place of a definition file.
  @end table
  
*************** can be used in place of a definition fil
*** 4806,4825 ****
  
  @item @code{-r}
  
! Causes a @cite{Source_Reference} pragma to be generated that
  references the original input file, so that error messages will use
  the file name of this original file. The use of this switch implies
  that preprocessor lines are not to be removed from the file, so its
! use will force @emph{-b} mode if @emph{-c}
  has not been specified explicitly.
  
  Note that if the file to be preprocessed contains multiple units, then
! it will be necessary to @cite{gnatchop} the output file from
! @cite{gnatprep}. If a @cite{Source_Reference} pragma is present
  in the preprocessed file, it will be respected by
! @cite{gnatchop -r}
  so that the final chopped files will correctly refer to the original
! input source file for @cite{gnatprep}.
  @end table
  
  @geindex -s (gnatprep)
--- 4826,4845 ----
  
  @item @code{-r}
  
! Causes a @code{Source_Reference} pragma to be generated that
  references the original input file, so that error messages will use
  the file name of this original file. The use of this switch implies
  that preprocessor lines are not to be removed from the file, so its
! use will force @code{-b} mode if @code{-c}
  has not been specified explicitly.
  
  Note that if the file to be preprocessed contains multiple units, then
! it will be necessary to @code{gnatchop} the output file from
! @code{gnatprep}. If a @code{Source_Reference} pragma is present
  in the preprocessed file, it will be respected by
! @code{gnatchop -r}
  so that the final chopped files will correctly refer to the original
! input source file for @code{gnatprep}.
  @end table
  
  @geindex -s (gnatprep)
*************** of the host (LF under unix, CR/LF under
*** 4853,4859 ****
  
  Causes undefined symbols to be treated as having the value FALSE in the context
  of a preprocessor test. In the absence of this option, an undefined symbol in
! a @cite{#if} or @cite{#elsif} test will be treated as an error.
  @end table
  
  @geindex -v (gnatprep)
--- 4873,4879 ----
  
  Causes undefined symbols to be treated as having the value FALSE in the context
  of a preprocessor test. In the absence of this option, an undefined symbol in
! a @code{#if} or @code{#elsif} test will be treated as an error.
  @end table
  
  @geindex -v (gnatprep)
*************** a @cite{#if} or @cite{#elsif} test will
*** 4866,4872 ****
  Verbose mode: generates more output about work done.
  @end table
  
! Note: if neither @emph{-b} nor @emph{-c} is present,
  then preprocessor lines and
  deleted lines are completely removed from the output, unless -r is
  specified, in which case -b is assumed.
--- 4886,4892 ----
  Verbose mode: generates more output about work done.
  @end table
  
! Note: if neither @code{-b} nor @code{-c} is present,
  then preprocessor lines and
  deleted lines are completely removed from the output, unless -r is
  specified, in which case -b is assumed.
*************** The definitions file contains lines of t
*** 4882,4888 ****
  symbol := value
  @end example
  
! where @cite{symbol} is a preprocessing symbol, and @cite{value} is one of the following:
  
  
  @itemize *
--- 4902,4908 ----
  symbol := value
  @end example
  
! where @code{symbol} is a preprocessing symbol, and @code{value} is one of the following:
  
  
  @itemize *
*************** and comments may be added to the definit
*** 4903,4909 ****
  
  @node Form of Input Text for gnatprep,,Form of Definitions File,Preprocessing with gnatprep
  @anchor{gnat_ugn/the_gnat_compilation_model id59}@anchor{ae}@anchor{gnat_ugn/the_gnat_compilation_model form-of-input-text-for-gnatprep}@anchor{af}
! @subsubsection Form of Input Text for @cite{gnatprep}
  
  
  The input text may contain preprocessor conditional inclusion lines,
--- 4923,4929 ----
  
  @node Form of Input Text for gnatprep,,Form of Definitions File,Preprocessing with gnatprep
  @anchor{gnat_ugn/the_gnat_compilation_model id59}@anchor{ae}@anchor{gnat_ugn/the_gnat_compilation_model form-of-input-text-for-gnatprep}@anchor{af}
! @subsubsection Form of Input Text for @code{gnatprep}
  
  
  The input text may contain preprocessor conditional inclusion lines,
*************** not (X or Y)
*** 4962,4968 ****
  For the first test (<expression> ::= <symbol>) the symbol must have
  either the value true or false, that is to say the right-hand of the
  symbol definition must be one of the (case-insensitive) literals
! @cite{True} or @cite{False}. If the value is true, then the
  corresponding lines are included, and if the value is false, they are
  excluded.
  
--- 4982,4988 ----
  For the first test (<expression> ::= <symbol>) the symbol must have
  either the value true or false, that is to say the right-hand of the
  symbol definition must be one of the (case-insensitive) literals
! @code{True} or @code{False}. If the value is true, then the
  corresponding lines are included, and if the value is false, they are
  excluded.
  
*************** literal integer as defined in the Ada Re
*** 4972,5006 ****
  in the range 0 .. 2**31-1 are supported.
  
  The test (<expression> ::= <symbol>'Defined) is true only if
! the symbol has been defined in the definition file or by a @emph{-D}
  switch on the command line. Otherwise, the test is false.
  
  The equality tests are case insensitive, as are all the preprocessor lines.
  
  If the symbol referenced is not defined in the symbol definitions file,
! then the effect depends on whether or not switch @emph{-u}
  is specified. If so, then the symbol is treated as if it had the value
  false and the test fails. If this switch is not specified, then
  it is an error to reference an undefined symbol. It is also an error to
! reference a symbol that is defined with a value other than @cite{True}
! or @cite{False}.
  
! The use of the @cite{not} operator inverts the sense of this logical test.
! The @cite{not} operator cannot be combined with the @cite{or} or @cite{and}
  operators, without parentheses. For example, "if not X or Y then" is not
  allowed, but "if (not X) or Y then" and "if not (X or Y) then" are.
  
! The @cite{then} keyword is optional as shown
  
! The @cite{#} must be the first non-blank character on a line, but
  otherwise the format is free form. Spaces or tabs may appear between
! the @cite{#} and the keyword. The keywords and the symbols are case
  insensitive as in normal Ada code. Comments may be used on a
  preprocessor line, but other than that, no other tokens may appear on a
! preprocessor line. Any number of @cite{elsif} clauses can be present,
! including none at all. The @cite{else} is optional, as in Ada.
  
! The @cite{#} marking the start of a preprocessor line must be the first
  non-blank character on the line, i.e., it must be preceded only by
  spaces or horizontal tabs.
  
--- 4992,5026 ----
  in the range 0 .. 2**31-1 are supported.
  
  The test (<expression> ::= <symbol>'Defined) is true only if
! the symbol has been defined in the definition file or by a @code{-D}
  switch on the command line. Otherwise, the test is false.
  
  The equality tests are case insensitive, as are all the preprocessor lines.
  
  If the symbol referenced is not defined in the symbol definitions file,
! then the effect depends on whether or not switch @code{-u}
  is specified. If so, then the symbol is treated as if it had the value
  false and the test fails. If this switch is not specified, then
  it is an error to reference an undefined symbol. It is also an error to
! reference a symbol that is defined with a value other than @code{True}
! or @code{False}.
  
! The use of the @code{not} operator inverts the sense of this logical test.
! The @code{not} operator cannot be combined with the @code{or} or @code{and}
  operators, without parentheses. For example, "if not X or Y then" is not
  allowed, but "if (not X) or Y then" and "if not (X or Y) then" are.
  
! The @code{then} keyword is optional as shown
  
! The @code{#} must be the first non-blank character on a line, but
  otherwise the format is free form. Spaces or tabs may appear between
! the @code{#} and the keyword. The keywords and the symbols are case
  insensitive as in normal Ada code. Comments may be used on a
  preprocessor line, but other than that, no other tokens may appear on a
! preprocessor line. Any number of @code{elsif} clauses can be present,
! including none at all. The @code{else} is optional, as in Ada.
  
! The @code{#} marking the start of a preprocessor line must be the first
  non-blank character on the line, i.e., it must be preceded only by
  spaces or horizontal tabs.
  
*************** $symbol
*** 5013,5031 ****
  
  anywhere within a source line, except in a comment or within a
  string literal. The identifier
! following the @cite{$} must match one of the symbols defined in the symbol
  definition file, and the result is to substitute the value of the
! symbol in place of @cite{$symbol} in the output file.
  
  Note that although the substitution of strings within a string literal
  is not possible, it is possible to have a symbol whose defined value is
! a string literal. So instead of setting XYZ to @cite{hello} and writing:
  
  @example
  Header : String := "$XYZ";
  @end example
  
! you should set XYZ to @cite{"hello"} and write:
  
  @example
  Header : String := $XYZ;
--- 5033,5051 ----
  
  anywhere within a source line, except in a comment or within a
  string literal. The identifier
! following the @code{$} must match one of the symbols defined in the symbol
  definition file, and the result is to substitute the value of the
! symbol in place of @code{$symbol} in the output file.
  
  Note that although the substitution of strings within a string literal
  is not possible, it is possible to have a symbol whose defined value is
! a string literal. So instead of setting XYZ to @code{hello} and writing:
  
  @example
  Header : String := "$XYZ";
  @end example
  
! you should set XYZ to @code{"hello"} and write:
  
  @example
  Header : String := $XYZ;
*************** and then the substitution will occur as
*** 5038,5085 ****
  @subsection Integrated Preprocessing
  
  
! GNAT sources may be preprocessed immediately before compilation.
! In this case, the actual
! text of the source is not the text of the source file, but is derived from it
! through a process called preprocessing. Integrated preprocessing is specified
! through switches @emph{-gnatep} and/or @emph{-gnateD}. @emph{-gnatep}
! indicates, through a text file, the preprocessing data to be used.
! @code{-gnateD} specifies or modifies the values of preprocessing symbol.
! Note that integrated preprocessing applies only to Ada source files, it is
  not available for configuration pragma files.
  
! Note that when integrated preprocessing is used, the output from the
! preprocessor is not written to any external file. Instead it is passed
! internally to the compiler. If you need to preserve the result of
! preprocessing in a file, then you should use @emph{gnatprep}
! to perform the desired preprocessing in stand-alone mode.
  
! It is recommended that @emph{gnatmake} switch -s should be
! used when Integrated Preprocessing is used. The reason is that preprocessing
! with another Preprocessing Data file without changing the sources will
! not trigger recompilation without this switch.
  
! Note that @emph{gnatmake} switch -m will almost
  always trigger recompilation for sources that are preprocessed,
! because @emph{gnatmake} cannot compute the checksum of the source after
  preprocessing.
  
! The actual preprocessing function is described in detail in section
! @ref{17,,Preprocessing with gnatprep}. This section only describes how integrated
! preprocessing is triggered and parameterized.
  
  @geindex -gnatep (gcc)
  
  
  @table @asis
  
! @item @code{-gnatep=@emph{file}}
  
! This switch indicates to the compiler the file name (without directory
! information) of the preprocessor data file to use. The preprocessor data file
! should be found in the source directories. Alternatively when using project
! files, you can reference to the project file's directory via the
! @code{project name'Project_Dir} project attribute, e.g:
  
  @example
  project Prj is
--- 5058,5137 ----
  @subsection Integrated Preprocessing
  
  
! As noted above, a file to be preprocessed consists of Ada source code
! 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:
! 
! @quotation
! 
! 
! @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).
! 
! @item 
! @code{-gnateD}, which defines values for preprocessing symbols.
! @end itemize
! @end quotation
! 
! Integrated preprocessing applies only to Ada source files, it is
  not available for configuration pragma files.
  
! With integrated preprocessing, the output from the preprocessor is not,
! by default, written to any external file. Instead it is passed
! internally to the compiler. To preserve the result of
! preprocessing in a file, either run @code{gnatprep}
! in standalone mode or else supply the @code{-gnateG} switch
! (described below) to the compiler.
  
! When using project files:
  
! @quotation
! 
! 
! @itemize *
! 
! @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
! located in the source directories of the project.
! @end itemize
! @end quotation
! 
! Note that the @code{gnatmake} switch @code{-m} will almost
  always trigger recompilation for sources that are preprocessed,
! because @code{gnatmake} cannot compute the checksum of the source after
  preprocessing.
  
! The actual preprocessing function is described in detail in
! @ref{17,,Preprocessing with gnatprep}. This section explains the switches
! that relate to integrated preprocessing.
  
  @geindex -gnatep (gcc)
  
  
  @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
! in one of the source directories, or, when using project
! files, reference the project file's directory via the
! @code{project_name'Project_Dir} project attribute; e.g:
! 
! @quotation
  
  @example
  project Prj is
*************** project Prj is
*** 5089,5118 ****
     end Compiler;
  end Prj;
  @end example
  
! A preprocessing data file is a text file with significant lines indicating
! how should be preprocessed either a specific source or all sources not
! mentioned in other lines. A significant line is a nonempty, non-comment line.
! Comments are similar to Ada comments.
  
! Each significant line starts with either a literal string or the character '*'.
  A literal string is the file name (without directory information) of the source
! to preprocess. A character '*' indicates the preprocessing for all the sources
! that are not specified explicitly on other lines (order of the lines is not
! significant). It is an error to have two lines with the same file name or two
  lines starting with the character '*'.
  
! After the file name or the character '*', another optional literal string
! indicating the file name of the definition file to be used for preprocessing
  (@ref{ac,,Form of Definitions File}). The definition files are found by the
  compiler in one of the source directories. In some cases, when compiling
  a source in a directory other than the current directory, if the definition
  file is in the current directory, it may be necessary to add the current
! directory as a source directory through switch -I., otherwise
  the compiler would not find the definition file.
  
! Then, optionally, switches similar to those of @cite{gnatprep} may
! be found. Those switches are:
  
  
  @table @asis
--- 5141,5227 ----
     end Compiler;
  end Prj;
  @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
! semantic effect.
  
! Here's an example of a preprocessor data file:
! 
! @quotation
! 
! @example
! "toto.adb"  "prep.def" -u
! --  Preprocess toto.adb, using definition file prep.def
! --  Undefined symbols are treated as False
! 
! * -c -DVERSION=V101
! --  Preprocess all other sources without using a definition file
! --  Suppressed lined are commented
! --  Symbol VERSION has the value V101
! 
! "tata.adb" "prep2.def" -s
! --  Preprocess tata.adb, using definition file prep2.def
! --  List all symbols with their values
! @end example
! @end quotation
! 
! A preprocessor control line has the following syntax:
! 
! @quotation
! 
! @example
! <preprocessor_control_line> ::=
!    <preprocessor_input> [ <definition_file_name> ] @{ <switch> @}
! 
! <preprocessor_input> ::= <source_file_name> | '*'
! 
! <definition_file_name> ::= <string_literal>
! 
! <source_file_name> := <string_literal>
! 
! <switch> := (See below for list)
! @end example
! @end quotation
! 
! Thus  each preprocessor control line starts with either a literal string or
! the character '*':
! 
! 
! @itemize *
! 
! @item 
  A literal string is the file name (without directory information) of the source
! file that will be input to the preprocessor.
! 
! @item 
! The character '*' is a wild-card indicator; the additional parameters on the line
! indicate the preprocessing for all the sources
! that are not specified explicitly on other lines (the order of the lines is not
! significant).
! @end itemize
! 
! It is an error to have two lines with the same file name or two
  lines starting with the character '*'.
  
! After the file name or '*', an optional literal string specifies the name of
! the definition file to be used for preprocessing
  (@ref{ac,,Form of Definitions File}). The definition files are found by the
  compiler in one of the source directories. In some cases, when compiling
  a source in a directory other than the current directory, if the definition
  file is in the current directory, it may be necessary to add the current
! directory as a source directory through the @code{-I} switch; otherwise
  the compiler would not find the definition file.
  
! Finally, switches similar to those of @code{gnatprep} may optionally appear:
  
  
  @table @asis
*************** be found. Those switches are:
*** 5121,5128 ****
  
  Causes both preprocessor lines and the lines deleted by
  preprocessing to be replaced by blank lines, preserving the line number.
! This switch is always implied; however, if specified after @emph{-c}
! it cancels the effect of @emph{-c}.
  
  @item @code{-c}
  
--- 5230,5237 ----
  
  Causes both preprocessor lines and the lines deleted by
  preprocessing to be replaced by blank lines, preserving the line number.
! This switch is always implied; however, if specified after @code{-c}
! it cancels the effect of @code{-c}.
  
  @item @code{-c}
  
*************** Causes both preprocessor lines and the l
*** 5130,5141 ****
  by preprocessing to be retained as comments marked
  with the special string '@cite{--!}'.
  
! @item @code{-Dsymbol=@emph{value}}
  
! Define or redefine a symbol, associated with value. A symbol is an Ada
! identifier, or an Ada reserved word, with the exception of @cite{if},
! @cite{else}, @cite{elsif}, @cite{end}, @cite{and}, @cite{or} and @cite{then}.
! @cite{value} is either a literal string, an Ada identifier or any Ada reserved
  word. A symbol declared with this switch replaces a symbol with the
  same name defined in a definition file.
  
--- 5239,5251 ----
  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
! aside from @code{if},
! @code{else}, @code{elsif}, @code{end}, @code{and}, @code{or} and @code{then}.
! The permitted form for @code{new_value} is a literal string, an Ada identifier or any Ada reserved
  word. A symbol declared with this switch replaces a symbol with the
  same name defined in a definition file.
  
*************** listed on the standard output file.
*** 5146,5172 ****
  
  @item @code{-u}
  
! Causes undefined symbols to be treated as having the value @cite{FALSE}
  in the context
  of a preprocessor test. In the absence of this option, an undefined symbol in
! a @cite{#if} or @cite{#elsif} test will be treated as an error.
  @end table
- 
- Examples of valid lines in a preprocessor data file:
- 
- @example
- "toto.adb"  "prep.def" -u
- --  preprocess "toto.adb", using definition file "prep.def",
- --  undefined symbol are False.
- 
- * -c -DVERSION=V101
- --  preprocess all other sources without a definition file;
- --  suppressed lined are commented; symbol VERSION has the value V101.
- 
- "titi.adb" "prep2.def" -s
- --  preprocess "titi.adb", using definition file "prep2.def";
- --  list all symbols with their values.
- @end example
  @end table
  
  @geindex -gnateD (gcc)
--- 5256,5266 ----
  
  @item @code{-u}
  
! Causes undefined symbols to be treated as having the value @code{FALSE}
  in the context
  of a preprocessor test. In the absence of this option, an undefined symbol in
! a @code{#if} or @code{#elsif} test will be treated as an error.
  @end table
  @end table
  
  @geindex -gnateD (gcc)
*************** Examples of valid lines in a preprocesso
*** 5174,5209 ****
  
  @table @asis
  
! @item @code{-gnateDsymbol[=value]}
  
! Define or redefine a preprocessing symbol, associated with value. If no value
! is given on the command line, then the value of the symbol is @cite{True}.
! A symbol is an identifier, following normal Ada (case-insensitive)
! rules for its syntax, and value is either an arbitrary string between double
  quotes or any sequence (including an empty sequence) of characters from the
  set (letters, digits, period, underline).
! Ada reserved words may be used as symbols, with the exceptions of @cite{if},
! @cite{else}, @cite{elsif}, @cite{end}, @cite{and}, @cite{or} and @cite{then}.
  
  Examples:
  
  @example
! -gnateDToto=Titi
  -gnateDFoo
  -gnateDFoo=\"Foo-Bar\"
  @end example
  
  A symbol declared with this switch on the command line replaces a
  symbol with the same name either in a definition file or specified with a
! switch -D in the preprocessor data file.
  
! This switch is similar to switch @emph{-D} of @cite{gnatprep}.
  
  @item @code{-gnateG}
  
! When integrated preprocessing is performed and the preprocessor modifies
! the source text, write the result of this preprocessing into a file
! <source>.prep.
  @end table
  
  @node Mixed Language Programming,GNAT and Other Compilation Models,Conditional Compilation,The GNAT Compilation Model
--- 5268,5308 ----
  
  @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}.
! The form of @code{symbol} is an identifier, following normal Ada (case-insensitive)
! rules for its syntax, and @code{new_value} is either an arbitrary string between double
  quotes or any sequence (including an empty sequence) of characters from the
  set (letters, digits, period, underline).
! Ada reserved words may be used as symbols, with the exceptions of @code{if},
! @code{else}, @code{elsif}, @code{end}, @code{and}, @code{or} and @code{then}.
  
  Examples:
  
+ @quotation
+ 
  @example
! -gnateDToto=Tata
  -gnateDFoo
  -gnateDFoo=\"Foo-Bar\"
  @end example
+ @end quotation
  
  A symbol declared with this switch on the command line replaces a
  symbol with the same name either in a definition file or specified with a
! switch @code{-D} in the preprocessor data file.
  
! This switch is similar to switch @code{-D} of @code{gnatprep}.
  
  @item @code{-gnateG}
  
! When integrated preprocessing is performed on source file @code{filename.extension},
! create or overwrite @code{filename.extension.prep} to contain
! the result of the preprocessing.
! For example if the source file is @code{foo.adb} then
! the output file will be @code{foo.adb.prep}.
  @end table
  
  @node Mixed Language Programming,GNAT and Other Compilation Models,Conditional Compilation,The GNAT Compilation Model
*************** with a focus on combining Ada with C or
*** 5232,5239 ****
  
  Interfacing Ada with a foreign language such as C involves using
  compiler directives to import and/or export entity definitions in each
! language -- using @cite{extern} statements in C, for instance, and the
! @cite{Import}, @cite{Export}, and @cite{Convention} pragmas in Ada.
  A full treatment of these topics is provided in Appendix B, section 1
  of the Ada Reference Manual.
  
--- 5331,5338 ----
  
  Interfacing Ada with a foreign language such as C involves using
  compiler directives to import and/or export entity definitions in each
! language -- using @code{extern} statements in C, for instance, and the
! @code{Import}, @code{Export}, and @code{Convention} pragmas in Ada.
  A full treatment of these topics is provided in Appendix B, section 1
  of the Ada Reference Manual.
  
*************** procedure My_Main is
*** 5281,5287 ****
     --  Declare an Ada procedure spec for Print_Num, then use
     --  C function print_num for the implementation.
     procedure Print_Num (Num : Integer);
!    pragma Import (C, Print_Num, "print_num";
  
  begin
     Print_Num (Get_Num);
--- 5380,5386 ----
     --  Declare an Ada procedure spec for Print_Num, then use
     --  C function print_num for the implementation.
     procedure Print_Num (Num : Integer);
!    pragma Import (C, Print_Num, "print_num");
  
  begin
     Print_Num (Get_Num);
*************** This procedure yields a binary executabl
*** 5448,5456 ****
  @end itemize
  
  Depending on the circumstances (for example when your non-Ada main object
! does not provide symbol @cite{main}), you may also need to instruct the
  GNAT linker not to include the standard startup objects by passing the
! @code{-nostartfiles} switch to @cite{gnatlink}.
  
  @node Calling Conventions,Building Mixed Ada and C++ Programs,Interfacing to C,Mixed Language Programming
  @anchor{gnat_ugn/the_gnat_compilation_model calling-conventions}@anchor{b5}@anchor{gnat_ugn/the_gnat_compilation_model id63}@anchor{b6}
--- 5547,5555 ----
  @end itemize
  
  Depending on the circumstances (for example when your non-Ada main object
! does not provide symbol @code{main}), you may also need to instruct the
  GNAT linker not to include the standard startup objects by passing the
! @code{-nostartfiles} switch to @code{gnatlink}.
  
  @node Calling Conventions,Building Mixed Ada and C++ Programs,Interfacing to C,Mixed Language Programming
  @anchor{gnat_ugn/the_gnat_compilation_model calling-conventions}@anchor{b5}@anchor{gnat_ugn/the_gnat_compilation_model id63}@anchor{b6}
*************** Convention identifiers are recognized by
*** 5474,5480 ****
  
  @table @asis
  
! @item @emph{Ada}
  
  This indicates that the standard Ada calling sequence will be
  used and all Ada data items may be passed without any limitations in the
--- 5573,5579 ----
  
  @table @asis
  
! @item @code{Ada}
  
  This indicates that the standard Ada calling sequence will be
  used and all Ada data items may be passed without any limitations in the
*************** compiled sections of the program.
*** 5512,5518 ****
  
  @table @asis
  
! @item @emph{Assembler}
  
  Specifies assembler as the convention. In practice this has the
  same effect as convention Ada (but is not equivalent in the sense of being
--- 5611,5617 ----
  
  @table @asis
  
! @item @code{Assembler}
  
  Specifies assembler as the convention. In practice this has the
  same effect as convention Ada (but is not equivalent in the sense of being
*************** considered the same convention).
*** 5526,5532 ****
  
  @table @asis
  
! @item @emph{Asm}
  
  Equivalent to Assembler.
  
--- 5625,5631 ----
  
  @table @asis
  
! @item @code{Asm}
  
  Equivalent to Assembler.
  
*************** Equivalent to Assembler.
*** 5540,5546 ****
  
  @table @asis
  
! @item @emph{COBOL}
  
  Data will be passed according to the conventions described
  in section B.4 of the Ada Reference Manual.
--- 5639,5645 ----
  
  @table @asis
  
! @item @code{COBOL}
  
  Data will be passed according to the conventions described
  in section B.4 of the Ada Reference Manual.
*************** in section B.4 of the Ada Reference Manu
*** 5555,5561 ****
  
  @table @asis
  
! @item @emph{C}
  
  Data will be passed according to the conventions described
  in section B.3 of the Ada Reference Manual.
--- 5654,5660 ----
  
  @table @asis
  
! @item @code{C}
  
  Data will be passed according to the conventions described
  in section B.3 of the Ada Reference Manual.
*************** A note on interfacing to a C 'varargs' f
*** 5570,5591 ****
  
  @geindex varargs function interfaces
  
! In C, @cite{varargs} allows a function to take a variable number of
  arguments. There is no direct equivalent in this to Ada. One
  approach that can be used is to create a C wrapper for each
  different profile and then interface to this C wrapper. For
! example, to print an @cite{int} value using @cite{printf},
! create a C function @cite{printfi} that takes two arguments, a
! pointer to a string and an int, and calls @cite{printf}.
! Then in the Ada program, use pragma @cite{Import} to
! interface to @cite{printfi}.
  
  It may work on some platforms to directly interface to
! a @cite{varargs} function by providing a specific Ada profile
  for a particular call. However, this does not work on
  all platforms, since there is no guarantee that the
  calling sequence for a two argument normal C function
! is the same as for calling a @cite{varargs} C function with
  the same two arguments.
  @end quotation
  @end table
--- 5669,5690 ----
  
  @geindex varargs function interfaces
  
! In C, @code{varargs} allows a function to take a variable number of
  arguments. There is no direct equivalent in this to Ada. One
  approach that can be used is to create a C wrapper for each
  different profile and then interface to this C wrapper. For
! example, to print an @code{int} value using @code{printf},
! create a C function @code{printfi} that takes two arguments, a
! pointer to a string and an int, and calls @code{printf}.
! Then in the Ada program, use pragma @code{Import} to
! interface to @code{printfi}.
  
  It may work on some platforms to directly interface to
! a @code{varargs} function by providing a specific Ada profile
  for a particular call. However, this does not work on
  all platforms, since there is no guarantee that the
  calling sequence for a two argument normal C function
! is the same as for calling a @code{varargs} C function with
  the same two arguments.
  @end quotation
  @end table
*************** the same two arguments.
*** 5597,5603 ****
  
  @table @asis
  
! @item @emph{Default}
  
  Equivalent to C.
  @end table
--- 5696,5702 ----
  
  @table @asis
  
! @item @code{Default}
  
  Equivalent to C.
  @end table
*************** Equivalent to C.
*** 5609,5615 ****
  
  @table @asis
  
! @item @emph{External}
  
  Equivalent to C.
  @end table
--- 5708,5714 ----
  
  @table @asis
  
! @item @code{External}
  
  Equivalent to C.
  @end table
*************** Equivalent to C.
*** 5623,5629 ****
  
  @table @asis
  
! @item @emph{C_Plus_Plus (or CPP)}
  
  This stands for C++. For most purposes this is identical to C.
  See the separate description of the specialized GNAT pragmas relating to
--- 5722,5728 ----
  
  @table @asis
  
! @item @code{C_Plus_Plus} (or @code{CPP})
  
  This stands for C++. For most purposes this is identical to C.
  See the separate description of the specialized GNAT pragmas relating to
*************** C++ interfacing for further details.
*** 5639,5650 ****
  
  @table @asis
  
! @item @emph{Fortran}
  
  Data will be passed according to the conventions described
  in section B.5 of the Ada Reference Manual.
  
! @item @emph{Intrinsic}
  
  This applies to an intrinsic operation, as defined in the Ada
  Reference Manual. If a pragma Import (Intrinsic) applies to a subprogram,
--- 5738,5749 ----
  
  @table @asis
  
! @item @code{Fortran}
  
  Data will be passed according to the conventions described
  in section B.5 of the Ada Reference Manual.
  
! @item @code{Intrinsic}
  
  This applies to an intrinsic operation, as defined in the Ada
  Reference Manual. If a pragma Import (Intrinsic) applies to a subprogram,
*************** implemented as a single machine instruct
*** 5694,5700 ****
  General subprogram entities. This is used  to bind an Ada subprogram
  declaration to
  a compiler builtin by name with back-ends where such interfaces are
! available. A typical example is the set of @cite{__builtin} functions
  exposed by the GCC back-end, as in the following example:
  
  @example
--- 5793,5799 ----
  General subprogram entities. This is used  to bind an Ada subprogram
  declaration to
  a compiler builtin by name with back-ends where such interfaces are
! available. A typical example is the set of @code{__builtin} functions
  exposed by the GCC back-end, as in the following example:
  
  @example
*************** expectations.
*** 5716,5727 ****
  
  @table @asis
  
! @item @emph{Stdcall}
  
  This is relevant only to Windows implementations of GNAT,
! and specifies that the @cite{Stdcall} calling sequence will be used,
  as defined by the NT API. Nevertheless, to ease building
! cross-platform bindings this convention will be handled as a @cite{C} calling
  convention on non-Windows platforms.
  @end table
  
--- 5815,5826 ----
  
  @table @asis
  
! @item @code{Stdcall}
  
  This is relevant only to Windows implementations of GNAT,
! and specifies that the @code{Stdcall} calling sequence will be used,
  as defined by the NT API. Nevertheless, to ease building
! cross-platform bindings this convention will be handled as a @code{C} calling
  convention on non-Windows platforms.
  @end table
  
*************** convention on non-Windows platforms.
*** 5732,5740 ****
  
  @table @asis
  
! @item @emph{DLL}
  
! This is equivalent to @cite{Stdcall}.
  @end table
  
  @geindex Win32
--- 5831,5839 ----
  
  @table @asis
  
! @item @code{DLL}
  
! This is equivalent to @code{Stdcall}.
  @end table
  
  @geindex Win32
*************** This is equivalent to @cite{Stdcall}.
*** 5744,5752 ****
  
  @table @asis
  
! @item @emph{Win32}
  
! This is equivalent to @cite{Stdcall}.
  @end table
  
  @geindex Stubbed
--- 5843,5851 ----
  
  @table @asis
  
! @item @code{Win32}
  
! This is equivalent to @code{Stdcall}.
  @end table
  
  @geindex Stubbed
*************** This is equivalent to @cite{Stdcall}.
*** 5756,5768 ****
  
  @table @asis
  
! @item @emph{Stubbed}
  
  This is a special convention that indicates that the compiler
! should provide a stub body that raises @cite{Program_Error}.
  @end table
  
! GNAT additionally provides a useful pragma @cite{Convention_Identifier}
  that can be used to parameterize conventions and allow additional synonyms
  to be specified. For example if you have legacy code in which the convention
  identifier Fortran77 was used for Fortran, you can use the configuration
--- 5855,5867 ----
  
  @table @asis
  
! @item @code{Stubbed}
  
  This is a special convention that indicates that the compiler
! should provide a stub body that raises @code{Program_Error}.
  @end table
  
! GNAT additionally provides a useful pragma @code{Convention_Identifier}
  that can be used to parameterize conventions and allow additional synonyms
  to be specified. For example if you have legacy code in which the convention
  identifier Fortran77 was used for Fortran, you can use the configuration
*************** pragma Convention_Identifier (Fortran77,
*** 5773,5779 ****
  @end example
  
  And from now on the identifier Fortran77 may be used as a convention
! identifier (for example in an @cite{Import} pragma) with the same
  meaning as Fortran.
  
  @node Building Mixed Ada and C++ Programs,Generating Ada Bindings for C and C++ headers,Calling Conventions,Mixed Language Programming
--- 5872,5878 ----
  @end example
  
  And from now on the identifier Fortran77 may be used as a convention
! identifier (for example in an @code{Import} pragma) with the same
  meaning as Fortran.
  
  @node Building Mixed Ada and C++ Programs,Generating Ada Bindings for C and C++ headers,Calling Conventions,Mixed Language Programming
*************** generating code that is compatible with
*** 5804,5811 ****
  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 @cite{Convention C_Plus_Plus}
! (or @cite{CPP}) that behaves exactly like @cite{Convention C}.
  Usually, C++ mangles the names of subprograms. To generate proper mangled
  names automatically, see @ref{19,,Generating Ada Bindings for C and C++ headers}).
  This problem can also be addressed manually in two ways:
--- 5903,5910 ----
  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}
! (or @code{CPP}) that behaves exactly like @code{Convention C}.
  Usually, C++ mangles the names of subprograms. To generate proper mangled
  names automatically, see @ref{19,,Generating Ada Bindings for C and C++ headers}).
  This problem can also be addressed manually in two ways:
*************** This problem can also be addressed manua
*** 5815,5829 ****
  
  @item 
  by modifying the C++ code in order to force a C convention using
! the @cite{extern "C"} syntax.
  
  @item 
! by figuring out the mangled name (using e.g. @emph{nm}) and using it as the
  Link_Name argument of the pragma import.
  @end itemize
  
  Interfacing at the class level can be achieved by using the GNAT specific
! pragmas such as @cite{CPP_Constructor}.  See the @cite{GNAT_Reference_Manual} for additional information.
  
  @node Linking a Mixed C++ & Ada Program,A Simple Example,Interfacing to C++,Building Mixed Ada and C++ Programs
  @anchor{gnat_ugn/the_gnat_compilation_model linking-a-mixed-c-ada-program}@anchor{bb}@anchor{gnat_ugn/the_gnat_compilation_model linking-a-mixed-c-and-ada-program}@anchor{bc}
--- 5914,5928 ----
  
  @item 
  by modifying the C++ code in order to force a C convention using
! the @code{extern "C"} syntax.
  
  @item 
! by figuring out the mangled name (using e.g. @code{nm}) and using it as the
  Link_Name argument of the pragma import.
  @end itemize
  
  Interfacing at the class level can be achieved by using the GNAT specific
! pragmas such as @code{CPP_Constructor}.  See the @cite{GNAT_Reference_Manual} for additional information.
  
  @node Linking a Mixed C++ & Ada Program,A Simple Example,Interfacing to C++,Building Mixed Ada and C++ Programs
  @anchor{gnat_ugn/the_gnat_compilation_model linking-a-mixed-c-ada-program}@anchor{bb}@anchor{gnat_ugn/the_gnat_compilation_model linking-a-mixed-c-and-ada-program}@anchor{bc}
*************** considered:
*** 5843,5852 ****
  @item 
  Using GNAT and G++ (GNU C++ compiler) from the same GCC installation:
  The C++ linker can simply be called by using the C++ specific driver
! called @cite{g++}.
  
  Note that if the C++ code uses inline functions, you will need to
! compile your C++ code with the @cite{-fkeep-inline-functions} switch in
  order to provide an existing function implementation that the Ada code can
  link with.
  
--- 5942,5951 ----
  @item 
  Using GNAT and G++ (GNU C++ compiler) from the same GCC installation:
  The C++ linker can simply be called by using the C++ specific driver
! called @code{g++}.
  
  Note that if the C++ code uses inline functions, you will need to
! compile your C++ code with the @code{-fkeep-inline-functions} switch in
  order to provide an existing function implementation that the Ada code can
  link with.
  
*************** at the same time and may make one of the
*** 5876,5882 ****
  improperly if set during invocation of the wrong compiler.  It is also
  very important that the linker uses the proper @code{libgcc.a} GCC
  library -- that is, the one from the C++ compiler installation. The
! implicit link command as suggested in the @cite{gnatmake} command
  from the former example can be replaced by an explicit link command with
  the full-verbosity option in order to verify which library is used:
  
--- 5975,5981 ----
  improperly if set during invocation of the wrong compiler.  It is also
  very important that the linker uses the proper @code{libgcc.a} GCC
  library -- that is, the one from the C++ compiler installation. The
! implicit link command as suggested in the @code{gnatmake} command
  from the former example can be replaced by an explicit link command with
  the full-verbosity option in order to verify which library is used:
  
*************** used to insure that the C++ linker is us
*** 5905,5932 ****
  a few more parameters to the link command line, depending on the exception
  mechanism used.
  
! If the @cite{setjmp/longjmp} exception mechanism is used, only the paths
! to the libgcc libraries are required:
  
  @example
  $ cat ./my_script
  #!/bin/sh
! CC $* `gcc -print-file-name=libgcc.a` `gcc -print-file-name=libgcc_eh.a`
  $ gnatlink ada_unit file1.o file2.o --LINK=./my_script
  @end example
  
  where CC is the name of the non-GNU C++ compiler.
  
! If the @cite{zero cost} exception mechanism is used, and the platform
  supports automatic registration of exception tables (e.g., Solaris),
  paths to more objects are required:
  
  @example
  $ cat ./my_script
  #!/bin/sh
! CC `gcc -print-file-name=crtbegin.o` $* \\
! `gcc -print-file-name=libgcc.a` `gcc -print-file-name=libgcc_eh.a` \\
! `gcc -print-file-name=crtend.o`
  $ gnatlink ada_unit file1.o file2.o --LINK=./my_script
  @end example
  
--- 6004,6031 ----
  a few more parameters to the link command line, depending on the exception
  mechanism used.
  
! If the @code{setjmp} / @code{longjmp} exception mechanism is used, only the paths
! to the @code{libgcc} libraries are required:
  
  @example
  $ cat ./my_script
  #!/bin/sh
! CC $* gcc -print-file-name=libgcc.a gcc -print-file-name=libgcc_eh.a
  $ gnatlink ada_unit file1.o file2.o --LINK=./my_script
  @end example
  
  where CC is the name of the non-GNU C++ compiler.
  
! If the "zero cost" exception mechanism is used, and the platform
  supports automatic registration of exception tables (e.g., Solaris),
  paths to more objects are required:
  
  @example
  $ cat ./my_script
  #!/bin/sh
! CC gcc -print-file-name=crtbegin.o $* \\
! gcc -print-file-name=libgcc.a gcc -print-file-name=libgcc_eh.a \\
! gcc -print-file-name=crtend.o
  $ gnatlink ada_unit file1.o file2.o --LINK=./my_script
  @end example
  
*************** end Simple_Cpp_Interface;
*** 6075,6081 ****
  
  
  In order to interface with C++ constructors GNAT provides the
! @cite{pragma CPP_Constructor} (see the @cite{GNAT_Reference_Manual}
  for additional information).
  In this section we present some common uses of C++ constructors
  in mixed-languages programs in GNAT.
--- 6174,6180 ----
  
  
  In order to interface with C++ constructors GNAT provides the
! @code{pragma CPP_Constructor} (see the @cite{GNAT_Reference_Manual}
  for additional information).
  In this section we present some common uses of C++ constructors
  in mixed-languages programs in GNAT.
*************** Constructors can only appear in the foll
*** 6137,6146 ****
  @itemize *
  
  @item 
! On the right side of an initialization of an object of type @cite{T}.
  
  @item 
! On the right side of an initialization of a record component of type @cite{T}.
  
  @item 
  In an Ada 2005 limited aggregate.
--- 6236,6245 ----
  @itemize *
  
  @item 
! On the right side of an initialization of an object of type @code{T}.
  
  @item 
! On the right side of an initialization of a record component of type @code{T}.
  
  @item 
  In an Ada 2005 limited aggregate.
*************** Obj4 : Root := Constructor (30, 40);
*** 6168,6175 ****
  The first two declarations are equivalent: in both cases the default C++
  constructor is invoked (in the former case the call to the constructor is
  implicit, and in the latter case the call is explicit in the object
! declaration). @cite{Obj3} is initialized by the C++ non-default constructor
! that takes an integer argument, and @cite{Obj4} is initialized by the
  non-default C++ constructor that takes two integers.
  
  Let us derive the imported C++ class in the Ada side. For example:
--- 6267,6274 ----
  The first two declarations are equivalent: in both cases the default C++
  constructor is invoked (in the former case the call to the constructor is
  implicit, and in the latter case the call is explicit in the object
! declaration). @code{Obj3} is initialized by the C++ non-default constructor
! that takes an integer argument, and @code{Obj4} is initialized by the
  non-default C++ constructor that takes two integers.
  
  Let us derive the imported C++ class in the Ada side. For example:
*************** Obj6 : DT := Function_Returning_DT (50);
*** 6192,6202 ****
  Obj7 : DT := (Constructor (30,40) with C_Value => 50);
  @end example
  
! The declaration of @cite{Obj5} invokes the default constructors: the
  C++ default constructor of the parent type takes care of the initialization
  of the components inherited from Root, and GNAT takes care of the default
  initialization of the additional Ada components of type DT (that is,
! @cite{C_Value} is initialized to value 2009). The order of invocation of
  the constructors is consistent with the order of elaboration required by
  Ada and C++. That is, the constructor of the parent type is always called
  before the constructor of the derived type.
--- 6291,6301 ----
  Obj7 : DT := (Constructor (30,40) with C_Value => 50);
  @end example
  
! The declaration of @code{Obj5} invokes the default constructors: the
  C++ default constructor of the parent type takes care of the initialization
  of the components inherited from Root, and GNAT takes care of the default
  initialization of the additional Ada components of type DT (that is,
! @code{C_Value} is initialized to value 2009). The order of invocation of
  the constructors is consistent with the order of elaboration required by
  Ada and C++. That is, the constructor of the parent type is always called
  before the constructor of the derived type.
*************** type Rec2 (D : Integer := 20) is limited
*** 6216,6222 ****
  end record;
  @end example
  
! The initialization of an object of type @cite{Rec2} will call the
  non-default C++ constructors specified for the imported components.
  For example:
  
--- 6315,6321 ----
  end record;
  @end example
  
! The initialization of an object of type @code{Rec2} will call the
  non-default C++ constructors specified for the imported components.
  For example:
  
*************** Obj9 : Rec2 := (Rec => (Data1 => Constru
*** 6235,6249 ****
  @end example
  
  The above declaration uses an Ada 2005 limited aggregate to
! initialize @cite{Obj9}, and the C++ constructor that has two integer
! arguments is invoked to initialize the @cite{Data1} component instead
! of the constructor specified in the declaration of type @cite{Rec1}. In
  Ada 2005 the box in the aggregate indicates that unspecified components
  are initialized using the expression (if any) available in the component
! declaration. That is, in this case discriminant @cite{D} is initialized
! to value @cite{20}, @cite{Value} is initialized to value 1000, and the
  non-default C++ constructor that handles two integers takes care of
! initializing component @cite{Data2} with values @cite{20@comma{}30}.
  
  In Ada 2005 we can use the extended return statement to build the Ada
  equivalent to C++ non-default constructors. For example:
--- 6334,6348 ----
  @end example
  
  The above declaration uses an Ada 2005 limited aggregate to
! initialize @code{Obj9}, and the C++ constructor that has two integer
! arguments is invoked to initialize the @code{Data1} component instead
! of the constructor specified in the declaration of type @code{Rec1}. In
  Ada 2005 the box in the aggregate indicates that unspecified components
  are initialized using the expression (if any) available in the component
! declaration. That is, in this case discriminant @code{D} is initialized
! to value @code{20}, @code{Value} is initialized to value 1000, and the
  non-default C++ constructor that handles two integers takes care of
! initializing component @code{Data2} with values @code{20,30}.
  
  In Ada 2005 we can use the extended return statement to build the Ada
  equivalent to C++ non-default constructors. For example:
*************** classifications. We first demonstrate a
*** 6280,6287 ****
  constructors are defined on the C++ side and imported from the Ada
  side, and latter the reverse case.
  
! The root of our derivation will be the @cite{Animal} class, with a
! single private attribute (the @cite{Age} of the animal), a constructor,
  and two public primitives to set and get the value of this attribute.
  
  @example
--- 6379,6386 ----
  constructors are defined on the C++ side and imported from the Ada
  side, and latter the reverse case.
  
! The root of our derivation will be the @code{Animal} class, with a
! single private attribute (the @code{Age} of the animal), a constructor,
  and two public primitives to set and get the value of this attribute.
  
  @example
*************** class Animal @{
*** 6297,6304 ****
  
  Abstract interface types are defined in C++ by means of classes with pure
  virtual functions and no data members. In our example we will use two
! interfaces that provide support for the common management of @cite{Carnivore}
! and @cite{Domestic} animals:
  
  @example
  class Carnivore @{
--- 6396,6403 ----
  
  Abstract interface types are defined in C++ by means of classes with pure
  virtual functions and no data members. In our example we will use two
! interfaces that provide support for the common management of @code{Carnivore}
! and @code{Domestic} animals:
  
  @example
  class Carnivore @{
*************** public:
*** 6312,6318 ****
  @};
  @end example
  
! Using these declarations, we can now say that a @cite{Dog} is an animal that is
  both Carnivore and Domestic, that is:
  
  @example
--- 6411,6417 ----
  @};
  @end example
  
! Using these declarations, we can now say that a @code{Dog} is an animal that is
  both Carnivore and Domestic, that is:
  
  @example
*************** class Dog : Animal, Carnivore, Domestic
*** 6329,6335 ****
  @end example
  
  In the following examples we will assume that the previous declarations are
! located in a file named @cite{animals.h}. The following package demonstrates
  how to import these C++ declarations from the Ada side:
  
  @example
--- 6428,6434 ----
  @end example
  
  In the following examples we will assume that the previous declarations are
! located in a file named @code{animals.h}. The following package demonstrates
  how to import these C++ declarations from the Ada side:
  
  @example
*************** package Animals is
*** 6363,6369 ****
  
    type Dog is new Animal and Carnivore and Domestic with record
      Tooth_Count : Natural;
!     Owner       : String (1 .. 30);
    end record;
    pragma Import (C_Plus_Plus, Dog);
  
--- 6462,6468 ----
  
    type Dog is new Animal and Carnivore and Domestic with record
      Tooth_Count : Natural;
!     Owner       : Chars_Ptr;
    end record;
    pragma Import (C_Plus_Plus, Dog);
  
*************** the primitives and components must be de
*** 6385,6393 ****
  the two languages.
  
  Regarding the abstract interfaces, we must indicate to the GNAT compiler by
! means of a @cite{pragma Convention (C_Plus_Plus)}, the convention used to pass
  the arguments to the called primitives will be the same as for C++. For the
! imported classes we use @cite{pragma Import} with convention @cite{C_Plus_Plus}
  to indicate that they have been defined on the C++ side; this is required
  because the dispatch table associated with these tagged types will be built
  in the C++ side and therefore will not contain the predefined Ada primitives
--- 6484,6492 ----
  the two languages.
  
  Regarding the abstract interfaces, we must indicate to the GNAT compiler by
! means of a @code{pragma Convention (C_Plus_Plus)}, the convention used to pass
  the arguments to the called primitives will be the same as for C++. For the
! imported classes we use @code{pragma Import} with convention @code{C_Plus_Plus}
  to indicate that they have been defined on the C++ side; this is required
  because the dispatch table associated with these tagged types will be built
  in the C++ side and therefore will not contain the predefined Ada primitives
*************** As the reader can see there is no need t
*** 6397,6403 ****
  associated with each subprogram because it is assumed that all the calls to
  these primitives will be dispatching calls. The only exception is the
  constructor, which must be registered with the compiler by means of
! @cite{pragma CPP_Constructor} and needs to provide its associated C++
  mangled name because the Ada compiler generates direct calls to it.
  
  With the above packages we can now declare objects of type Dog on the Ada side
--- 6496,6502 ----
  associated with each subprogram because it is assumed that all the calls to
  these primitives will be dispatching calls. The only exception is the
  constructor, which must be registered with the compiler by means of
! @code{pragma CPP_Constructor} and needs to provide its associated C++
  mangled name because the Ada compiler generates direct calls to it.
  
  With the above packages we can now declare objects of type Dog on the Ada side
*************** end Animals;
*** 6469,6482 ****
  @end example
  
  Compared with our previous example the only differences are the use of
! @cite{pragma Convention} (instead of @cite{pragma Import}), and the use of
! @cite{pragma Export} to indicate to the GNAT compiler that the primitives will
  be available to C++. Thanks to the ABI compatibility, on the C++ side there is
  nothing else to be done; as explained above, the only requirement is that all
  the primitives and components are declared in exactly the same order.
  
  For completeness, let us see a brief C++ main program that uses the
! declarations available in @cite{animals.h} (presented in our first example) to
  import and use the declarations from the Ada side, properly initializing and
  finalizing the Ada run-time system along the way:
  
--- 6568,6581 ----
  @end example
  
  Compared with our previous example the only differences are the use of
! @code{pragma Convention} (instead of @code{pragma Import}), and the use of
! @code{pragma Export} to indicate to the GNAT compiler that the primitives will
  be available to C++. Thanks to the ABI compatibility, on the C++ side there is
  nothing else to be done; as explained above, the only requirement is that all
  the primitives and components are declared in exactly the same order.
  
  For completeness, let us see a brief C++ main program that uses the
! declarations available in @code{animals.h} (presented in our first example) to
  import and use the declarations from the Ada side, properly initializing and
  finalizing the Ada run-time system along the way:
  
*************** pointers to pointers or complex structur
*** 6549,6555 ****
  
  @item 
  identifiers with identical name (except casing) will generate compilation
! errors (e.g. @cite{shm_get} vs @cite{SHM_GET}).
  @end itemize
  
  The code generated is using the Ada 2005 syntax, which makes it
--- 6648,6654 ----
  
  @item 
  identifiers with identical name (except casing) will generate compilation
! errors (e.g. @code{shm_get} vs @code{SHM_GET}).
  @end itemize
  
  The code generated is using the Ada 2005 syntax, which makes it
*************** easier to interface with other languages
*** 6567,6574 ****
  @subsubsection Running the Binding Generator
  
  
! The binding generator is part of the @emph{gcc} compiler and can be
! invoked via the @emph{-fdump-ada-spec} switch, which will generate Ada
  spec files for the header files specified on the command line, and all
  header files needed by these files transitively. For example:
  
--- 6666,6673 ----
  @subsubsection Running the Binding Generator
  
  
! The binding generator is part of the @code{gcc} compiler and can be
! invoked via the @code{-fdump-ada-spec} switch, which will generate Ada
  spec files for the header files specified on the command line, and all
  header files needed by these files transitively. For example:
  
*************** $ gcc -c -gnat05 *.ads
*** 6580,6596 ****
  will generate, under GNU/Linux, the following files: @code{time_h.ads},
  @code{bits_time_h.ads}, @code{stddef_h.ads}, @code{bits_types_h.ads} which
  correspond to the files @code{/usr/include/time.h},
! @code{/usr/include/bits/time.h}, etc..., and will then compile in Ada 2005
! mode these Ada specs.
  
! The @cite{-C} switch tells @emph{gcc} to extract comments from headers,
  and will attempt to generate corresponding Ada comments.
  
  If you want to generate a single Ada file and not the transitive closure, you
! can use instead the @emph{-fdump-ada-spec-slim} switch.
  
  You can optionally specify a parent unit, of which all generated units will
! be children, using @cite{-fada-spec-parent=<unit>}.
  
  Note that we recommend when possible to use the @emph{g++} driver to
  generate bindings, even for most C headers, since this will in general
--- 6679,6695 ----
  will generate, under GNU/Linux, the following files: @code{time_h.ads},
  @code{bits_time_h.ads}, @code{stddef_h.ads}, @code{bits_types_h.ads} which
  correspond to the files @code{/usr/include/time.h},
! @code{/usr/include/bits/time.h}, etc..., and will then compile these Ada specs
! in Ada 2005 mode.
  
! The @code{-C} switch tells @code{gcc} to extract comments from headers,
  and will attempt to generate corresponding Ada comments.
  
  If you want to generate a single Ada file and not the transitive closure, you
! 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}}.
  
  Note that we recommend when possible to use the @emph{g++} driver to
  generate bindings, even for most C headers, since this will in general
*************** generate better Ada specs. For generatin
*** 6598,6604 ****
  mandatory to use the @emph{g++} command, or @emph{gcc -x c++} which
  is equivalent in this case. If @emph{g++} cannot work on your C headers
  because of incompatibilities between C and C++, then you can fallback to
! @emph{gcc} instead.
  
  For an example of better bindings generated from the C++ front-end,
  the name of the parameters (when available) are actually ignored by the C
--- 6697,6703 ----
  mandatory to use the @emph{g++} command, or @emph{gcc -x c++} which
  is equivalent in this case. If @emph{g++} cannot work on your C headers
  because of incompatibilities between C and C++, then you can fallback to
! @code{gcc} instead.
  
  For an example of better bindings generated from the C++ front-end,
  the name of the parameters (when available) are actually ignored by the C
*************** front-end. Consider the following C head
*** 6608,6614 ****
  extern void foo (int variable);
  @end example
  
! with the C front-end, @cite{variable} is ignored, and the above is handled as:
  
  @example
  extern void foo (int);
--- 6707,6713 ----
  extern void foo (int variable);
  @end example
  
! with the C front-end, @code{variable} is ignored, and the above is handled as:
  
  @example
  extern void foo (int);
*************** procedure foo (variable : int);
*** 6627,6633 ****
  @end example
  
  In some cases, the generated bindings will be more complete or more meaningful
! when defining some macros, which you can do via the @emph{-D} switch. This
  is for example the case with @code{Xlib.h} under GNU/Linux:
  
  @example
--- 6726,6732 ----
  @end example
  
  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
  is for example the case with @code{Xlib.h} under GNU/Linux:
  
  @example
*************** $ g++ -c -fdump-ada-spec -DXLIB_ILLEGAL_
*** 6635,6646 ****
  @end example
  
  The above will generate more complete bindings than a straight call without
! the @emph{-DXLIB_ILLEGAL_ACCESS} switch.
  
  In other cases, it is not possible to parse a header file in a stand-alone
  manner, because other include files need to be included first. In this
  case, the solution is to create a small header file including the needed
! @cite{#include} and possible @cite{#define} directives. For example, to
  generate Ada bindings for @code{readline/readline.h}, you need to first
  include @code{stdio.h}, so you can create a file with the following two
  lines in e.g. @code{readline1.h}:
--- 6734,6745 ----
  @end example
  
  The above will generate more complete bindings than a straight call without
! the @code{-DXLIB_ILLEGAL_ACCESS} switch.
  
  In other cases, it is not possible to parse a header file in a stand-alone
  manner, because other include files need to be included first. In this
  case, the solution is to create a small header file including the needed
! @code{#include} and possible @code{#define} directives. For example, to
  generate Ada bindings for @code{readline/readline.h}, you need to first
  include @code{stdio.h}, so you can create a file with the following two
  lines in e.g. @code{readline1.h}:
*************** support for C headers. As a result, you
*** 6668,6674 ****
  bindings by hand more extensively when using C++ headers.
  
  In this mode, C++ classes will be mapped to Ada tagged types, constructors
! will be mapped using the @cite{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++).
--- 6767,6773 ----
  bindings by hand more extensively when using C++ headers.
  
  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++).
*************** only.
*** 6791,6797 ****
  
  @item @code{-fada-spec-parent=@emph{unit}}
  
! Specifies that all files generated by @emph{-fdump-ada-spec*} are
  to be child units of the specified parent unit.
  @end table
  
--- 6890,6896 ----
  
  @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.
  @end table
  
*************** Subprogram declarations
*** 6854,6860 ****
  
  
  The C header generator is part of the GNAT compiler and can be invoked via
! the @emph{-gnatceg} combination of switches, which will generate a @code{.h}
  file corresponding to the given input file (Ada spec or body). Note that
  only spec files are processed in any case, so giving a spec or a body file
  as input is equivalent. For example:
--- 6953,6959 ----
  
  
  The C header generator is part of the GNAT compiler and can be invoked via
! the @code{-gnatceg} combination of switches, which will generate a @code{.h}
  file corresponding to the given input file (Ada spec or body). Note that
  only spec files are processed in any case, so giving a spec or a body file
  as input is equivalent. For example:
*************** package Pack1 is
*** 6891,6897 ****
  end Pack1;
  @end example
  
! The above @cite{gcc} command will generate the following @code{pack1.h} file:
  
  @example
  /* Standard definitions skipped */
--- 6990,6996 ----
  end Pack1;
  @end example
  
! The above @code{gcc} command will generate the following @code{pack1.h} file:
  
  @example
  /* Standard definitions skipped */
*************** extern void pack1__proc2(pack1__rec *r);
*** 6913,6919 ****
  #endif /* PACK1_ADS */
  @end example
  
! You can then @cite{include} @code{pack1.h} from a C source file and use the types,
  call subprograms, reference objects, and constants.
  
  @node GNAT and Other Compilation Models,Using GNAT Files with External Tools,Mixed Language Programming,The GNAT Compilation Model
--- 7012,7018 ----
  #endif /* PACK1_ADS */
  @end example
  
! You can then @code{include} @code{pack1.h} from a C source file and use the types,
  call subprograms, reference objects, and constants.
  
  @node GNAT and Other Compilation Models,Using GNAT Files with External Tools,Mixed Language Programming,The GNAT Compilation Model
*************** used for Ada 83.
*** 6940,6946 ****
  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 @cite{#include} of a C
  header.
  
  One notable difference is that, in Ada, you may compile specs separately
--- 7039,7045 ----
  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
*************** The other important function of the bind
*** 6962,6968 ****
  issues. There are also elaboration issues in C++ that are handled
  automatically. This automatic handling has the advantage of being
  simpler to use, but the C++ programmer has no control over elaboration.
! Where @cite{gnatbind} might complain there was no valid order of
  elaboration, a C++ compiler would simply construct a program that
  malfunctioned at run time.
  
--- 7061,7067 ----
  issues. There are also elaboration issues in C++ that are handled
  automatically. This automatic handling has the advantage of being
  simpler to use, but the C++ programmer has no control over elaboration.
! Where @code{gnatbind} might complain there was no valid order of
  elaboration, a C++ compiler would simply construct a program that
  malfunctioned at run time.
  
*************** end QRS;
*** 7086,7094 ****
  
  @geindex pragma Export
  
! The variable @cite{MN} has a full expanded Ada name of @cite{QRS.MN}, so
! the corresponding link name is @cite{qrs__mn}.
! Of course if a @cite{pragma Export} is used this may be overridden:
  
  @example
  package Exports is
--- 7185,7193 ----
  
  @geindex pragma Export
  
! The variable @code{MN} has a full expanded Ada name of @code{QRS.MN}, so
! the corresponding link name is @code{qrs__mn}.
! Of course if a @code{pragma Export} is used this may be overridden:
  
  @example
  package Exports is
*************** package Exports is
*** 7099,7124 ****
  end Exports;
  @end example
  
! In this case, the link name for @cite{Var1} is whatever link name the
! C compiler would assign for the C function @cite{var1_name}. This typically
! would be either @cite{var1_name} or @cite{_var1_name}, depending on operating
  system conventions, but other possibilities exist. The link name for
! @cite{Var2} is @cite{var2_link_name}, and this is not operating system
  dependent.
  
  One exception occurs for library level procedures. A potential ambiguity
! arises between the required name @cite{_main} for the C main program,
  and the name we would otherwise assign to an Ada library level procedure
! called @cite{Main} (which might well not be the main program).
  
! To avoid this ambiguity, we attach the prefix @cite{_ada_} to such
  names. So if we have a library level procedure such as:
  
  @example
  procedure Hello (S : String);
  @end example
  
! the external name of this procedure will be @cite{_ada_hello}.
  
  @c -- Example: A |withing| unit has a |with| clause, it |withs| a |withed| unit
  
--- 7198,7223 ----
  end Exports;
  @end example
  
! In this case, the link name for @code{Var1} is whatever link name the
! C compiler would assign for the C function @code{var1_name}. This typically
! would be either @code{var1_name} or @code{_var1_name}, depending on operating
  system conventions, but other possibilities exist. The link name for
! @code{Var2} is @code{var2_link_name}, and this is not operating system
  dependent.
  
  One exception occurs for library level procedures. A potential ambiguity
! arises between the required name @code{_main} for the C main program,
  and the name we would otherwise assign to an Ada library level procedure
! called @code{Main} (which might well not be the main program).
  
! To avoid this ambiguity, we attach the prefix @code{_ada_} to such
  names. So if we have a library level procedure such as:
  
  @example
  procedure Hello (S : String);
  @end example
  
! the external name of this procedure will be @code{_ada_hello}.
  
  @c -- Example: A |withing| unit has a |with| clause, it |withs| a |withed| unit
  
*************** in a GNAT context (see @ref{1f,,Using th
*** 7155,7161 ****
  
  @node Building with gnatmake,Compiling with gcc,,Building Executable Programs with GNAT
  @anchor{gnat_ugn/building_executable_programs_with_gnat the-gnat-make-program-gnatmake}@anchor{1b}@anchor{gnat_ugn/building_executable_programs_with_gnat building-with-gnatmake}@anchor{d9}
! @section Building with @emph{gnatmake}
  
  
  @geindex gnatmake
--- 7254,7260 ----
  
  @node Building with gnatmake,Compiling with gcc,,Building Executable Programs with GNAT
  @anchor{gnat_ugn/building_executable_programs_with_gnat the-gnat-make-program-gnatmake}@anchor{1b}@anchor{gnat_ugn/building_executable_programs_with_gnat building-with-gnatmake}@anchor{d9}
! @section Building with @code{gnatmake}
  
  
  @geindex gnatmake
*************** Test.
*** 7187,7196 ****
  The third step in particular can be tricky, because not only do the modified
  files have to be compiled, but any files depending on these files must also be
  recompiled. The dependency rules in Ada can be quite complex, especially
! in the presence of overloading, @cite{use} clauses, generics and inlined
  subprograms.
  
! @emph{gnatmake} automatically takes care of the third and fourth steps
  of this process. It determines which sources need to be compiled,
  compiles them, and binds and links the resulting object files.
  
--- 7286,7295 ----
  The third step in particular can be tricky, because not only do the modified
  files have to be compiled, but any files depending on these files must also be
  recompiled. The dependency rules in Ada can be quite complex, especially
! in the presence of overloading, @code{use} clauses, generics and inlined
  subprograms.
  
! @code{gnatmake} automatically takes care of the third and fourth steps
  of this process. It determines which sources need to be compiled,
  compiles them, and binds and links the resulting object files.
  
*************** accurately recomputed from the new sourc
*** 7199,7211 ****
  the GNAT compilation model makes this possible. This means that if
  changes to the source program cause corresponding changes in
  dependencies, they will always be tracked exactly correctly by
! @emph{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
! @emph{gprbuild} tool which supports building with project files and works similarly
! to @emph{gnatmake}.
  
  @menu
  * Running gnatmake:: 
--- 7298,7310 ----
  the GNAT compilation model makes this possible. This means that if
  changes to the source program cause corresponding changes in
  dependencies, they will always be tracked exactly correctly by
! @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}.
  
  @menu
  * Running gnatmake:: 
*************** to @emph{gnatmake}.
*** 7219,7263 ****
  
  @node Running gnatmake,Switches for gnatmake,,Building with gnatmake
  @anchor{gnat_ugn/building_executable_programs_with_gnat running-gnatmake}@anchor{da}@anchor{gnat_ugn/building_executable_programs_with_gnat id2}@anchor{db}
! @subsection Running @emph{gnatmake}
  
  
! The usual form of the @emph{gnatmake} command is
  
  @example
  $ gnatmake [<switches>] <file_name> [<file_names>] [<mode_switches>]
  @end example
  
! The only required argument is one @cite{file_name}, which specifies
! a compilation unit that is a main program. Several @cite{file_names} can be
  specified: this will result in several executables being built.
! If @cite{switches} are present, they can be placed before the first
! @cite{file_name}, between @cite{file_names} or after the last @cite{file_name}.
! If @cite{mode_switches} are present, they must always be placed after
! the last @cite{file_name} and all @cite{switches}.
  
  If you are using standard file extensions (@code{.adb} and
  @code{.ads}), then the
! extension may be omitted from the @cite{file_name} arguments. However, if
  you are using non-standard extensions, then it is required that the
  extension be given. A relative or absolute directory path can be
! specified in a @cite{file_name}, in which case, the input source file will
  be searched for in the specified directory only. Otherwise, the input
  source file will first be searched in the directory where
! @emph{gnatmake} was invoked and if it is not found, it will be search on
  the source path of the compiler as described in
  @ref{89,,Search Paths and the Run-Time Library (RTL)}.
  
! All @emph{gnatmake} output (except when you specify @emph{-M}) is sent to
  @code{stderr}. The output produced by the
! @emph{-M} switch is sent to @code{stdout}.
  
  @node Switches for gnatmake,Mode Switches for gnatmake,Running gnatmake,Building with gnatmake
  @anchor{gnat_ugn/building_executable_programs_with_gnat switches-for-gnatmake}@anchor{dc}@anchor{gnat_ugn/building_executable_programs_with_gnat id3}@anchor{dd}
! @subsection Switches for @emph{gnatmake}
  
  
! You may specify any of the following switches to @emph{gnatmake}:
  
  @geindex --version (gnatmake)
  
--- 7318,7362 ----
  
  @node Running gnatmake,Switches for gnatmake,,Building with gnatmake
  @anchor{gnat_ugn/building_executable_programs_with_gnat running-gnatmake}@anchor{da}@anchor{gnat_ugn/building_executable_programs_with_gnat id2}@anchor{db}
! @subsection Running @code{gnatmake}
  
  
! The usual form of the @code{gnatmake} command is
  
  @example
  $ gnatmake [<switches>] <file_name> [<file_names>] [<mode_switches>]
  @end example
  
! The only required argument is one @code{file_name}, which specifies
! a compilation unit that is a main program. Several @code{file_names} can be
  specified: this will result in several executables being built.
! If @code{switches} are present, they can be placed before the first
! @code{file_name}, between @code{file_names} or after the last @code{file_name}.
! If @code{mode_switches} are present, they must always be placed after
! the last @code{file_name} and all @code{switches}.
  
  If you are using standard file extensions (@code{.adb} and
  @code{.ads}), then the
! extension may be omitted from the @code{file_name} arguments. However, if
  you are using non-standard extensions, then it is required that the
  extension be given. A relative or absolute directory path can be
! specified in a @code{file_name}, in which case, the input source file will
  be searched for in the specified directory only. Otherwise, the input
  source file will first be searched in the directory where
! @code{gnatmake} was invoked and if it is not found, it will be search on
  the source path of the compiler as described in
  @ref{89,,Search Paths and the Run-Time Library (RTL)}.
  
! All @code{gnatmake} output (except when you specify @code{-M}) is sent to
  @code{stderr}. The output produced by the
! @code{-M} switch is sent to @code{stdout}.
  
  @node Switches for gnatmake,Mode Switches for gnatmake,Running gnatmake,Building with gnatmake
  @anchor{gnat_ugn/building_executable_programs_with_gnat switches-for-gnatmake}@anchor{dc}@anchor{gnat_ugn/building_executable_programs_with_gnat id3}@anchor{dd}
! @subsection Switches for @code{gnatmake}
  
  
! You may specify any of the following switches to @code{gnatmake}:
  
  @geindex --version (gnatmake)
  
*************** all other options.
*** 7288,7303 ****
  @item @code{--GCC=@emph{compiler_name}}
  
  Program used for compiling. The default is @code{gcc}. You need to use
! quotes around @cite{compiler_name} if @cite{compiler_name} contains
  spaces or other separator characters.
  As an example @code{--GCC="foo -x  -y"}
! will instruct @emph{gnatmake} to use @code{foo -x -y} as your
  compiler. A limitation of this syntax is that the name and path name of
  the executable itself must not include any embedded spaces. Note that
  switch @code{-c} is always inserted after your command name. Thus in the
! above example the compiler command that will be used by @emph{gnatmake}
  will be @code{foo -c -x -y}. If several @code{--GCC=compiler_name} are
! used, only the last @cite{compiler_name} is taken into account. However,
  all the additional switches are also taken into account. Thus,
  @code{--GCC="foo -x -y" --GCC="bar -z -t"} is equivalent to
  @code{--GCC="bar -x -y -z -t"}.
--- 7387,7402 ----
  @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
  spaces or other separator characters.
  As an example @code{--GCC="foo -x  -y"}
! will instruct @code{gnatmake} to use @code{foo -x -y} as your
  compiler. A limitation of this syntax is that the name and path name of
  the executable itself must not include any embedded spaces. Note that
  switch @code{-c} is always inserted after your command name. Thus in the
! above example the compiler command that will be used by @code{gnatmake}
  will be @code{foo -c -x -y}. If several @code{--GCC=compiler_name} are
! used, only the last @code{compiler_name} is taken into account. However,
  all the additional switches are also taken into account. Thus,
  @code{--GCC="foo -x -y" --GCC="bar -z -t"} is equivalent to
  @code{--GCC="bar -x -y -z -t"}.
*************** all the additional switches are also tak
*** 7311,7322 ****
  @item @code{--GNATBIND=@emph{binder_name}}
  
  Program used for binding. The default is @code{gnatbind}. You need to
! use quotes around @cite{binder_name} if @cite{binder_name} contains spaces
  or other separator characters.
  As an example @code{--GNATBIND="bar -x  -y"}
! will instruct @emph{gnatmake} to use @cite{bar -x -y} as your
! binder. Binder switches that are normally appended by @emph{gnatmake}
! to @code{gnatbind} are now appended to the end of @cite{bar -x -y}.
  A limitation of this syntax is that the name and path name of the executable
  itself must not include any embedded spaces.
  @end table
--- 7410,7421 ----
  @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
  or other separator characters.
  As an example @code{--GNATBIND="bar -x  -y"}
! will instruct @code{gnatmake} to use @code{bar -x -y} as your
! binder. Binder switches that are normally appended by @code{gnatmake}
! to @code{gnatbind} are now appended to the end of @code{bar -x -y}.
  A limitation of this syntax is that the name and path name of the executable
  itself must not include any embedded spaces.
  @end table
*************** itself must not include any embedded spa
*** 7329,7338 ****
  @item @code{--GNATLINK=@emph{linker_name}}
  
  Program used for linking. The default is @code{gnatlink}. You need to
! use quotes around @cite{linker_name} if @cite{linker_name} contains spaces
  or other separator characters.
  As an example @code{--GNATLINK="lan -x  -y"}
! will instruct @emph{gnatmake} to use @code{lan -x -y} as your
  linker. Linker switches that are normally appended by @code{gnatmake} to
  @code{gnatlink} are now appended to the end of @code{lan -x -y}.
  A limitation of this syntax is that the name and path name of the executable
--- 7428,7437 ----
  @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
  or other separator characters.
  As an example @code{--GNATLINK="lan -x  -y"}
! will instruct @code{gnatmake} to use @code{lan -x -y} as your
  linker. Linker switches that are normally appended by @code{gnatmake} to
  @code{gnatlink} are now appended to the end of @code{lan -x -y}.
  A limitation of this syntax is that the name and path name of the executable
*************** to process the project files, especially
*** 7389,7395 ****
  long time. If the source info file exists but cannot be parsed successfully,
  the Project Manager will attempt to recreate it. If the Project Manager fails
  to create the source info file, a message is issued, but gnatmake does not
! fail. @emph{gnatmake} "trusts" the source info file. This means that
  if the source files have changed (addition, deletion, moving to a different
  source directory), then the source info file need to be deleted and recreated.
  @end table
--- 7488,7494 ----
  long time. If the source info file exists but cannot be parsed successfully,
  the Project Manager will attempt to recreate it. If the Project Manager fails
  to create the source info file, a message is issued, but gnatmake does not
! fail. @code{gnatmake} "trusts" the source info file. This means that
  if the source files have changed (addition, deletion, moving to a different
  source directory), then the source info file need to be deleted and recreated.
  @end table
*************** Consider all files in the make process,
*** 7405,7411 ****
  files (for example, the predefined Ada library files), as well as any
  locked files. Locked files are files whose ALI file is write-protected.
  By default,
! @emph{gnatmake} does not check these files,
  because the assumption is that the GNAT internal files are properly up
  to date, and also that any write protected ALI files have been properly
  installed. Note that if there is an installation problem, such that one
--- 7504,7510 ----
  files (for example, the predefined Ada library files), as well as any
  locked files. Locked files are files whose ALI file is write-protected.
  By default,
! @code{gnatmake} does not check these files,
  because the assumption is that the GNAT internal files are properly up
  to date, and also that any write protected ALI files have been properly
  installed. Note that if there is an installation problem, such that one
*************** itself. The switch @code{-a} is also use
*** 7416,7422 ****
  in conjunction with @code{-f}
  if you need to recompile an entire application,
  including run-time files, using special configuration pragmas,
! such as a @cite{Normalize_Scalars} pragma.
  
  By default
  @code{gnatmake -a} compiles all GNAT
--- 7515,7521 ----
  in conjunction with @code{-f}
  if you need to recompile an entire application,
  including run-time files, using special configuration pragmas,
! such as a @code{Normalize_Scalars} pragma.
  
  By default
  @code{gnatmake -a} compiles all GNAT
*************** internal files with
*** 7431,7443 ****
  
  @item @code{-b}
  
! Bind only. Can be combined with @emph{-c} to do
  compilation and binding, but no link.
! Can be combined with @emph{-l}
  to do binding and linking. When not combined with
! @emph{-c}
  all the units in the closure of the main program must have been previously
! compiled and must be up to date. The root unit specified by @cite{file_name}
  may be given without extension, with the source extension or, if no GNAT
  Project File is specified, with the ALI file extension.
  @end table
--- 7530,7542 ----
  
  @item @code{-b}
  
! Bind only. Can be combined with @code{-c} to do
  compilation and binding, but no link.
! Can be combined with @code{-l}
  to do binding and linking. When not combined with
! @code{-c}
  all the units in the closure of the main program must have been previously
! compiled and must be up to date. The root unit specified by @code{file_name}
  may be given without extension, with the source extension or, if no GNAT
  Project File is specified, with the ALI file extension.
  @end table
*************** Project File is specified, with the ALI
*** 7449,7460 ****
  
  @item @code{-c}
  
! Compile only. Do not perform binding, except when @emph{-b}
  is also specified. Do not perform linking, except if both
! @emph{-b} and
! @emph{-l} are also specified.
! If the root unit specified by @cite{file_name} is not a main unit, this is the
! default. Otherwise @emph{gnatmake} will attempt binding and linking
  unless all objects are up to date and the executable is more recent than
  the objects.
  @end table
--- 7548,7559 ----
  
  @item @code{-c}
  
! Compile only. Do not perform binding, except when @code{-b}
  is also specified. Do not perform linking, except if both
! @code{-b} and
! @code{-l} are also specified.
! If the root unit specified by @code{file_name} is not a main unit, this is the
! default. Otherwise @code{gnatmake} will attempt binding and linking
  unless all objects are up to date and the executable is more recent than
  the objects.
  @end table
*************** any directory information) and from file
*** 7472,7482 ****
  full directory information). A mapping file can make the compiler's
  file searches faster, especially if there are many source directories,
  or the sources are read over a slow network connection. If
! @emph{-P} is used, a mapping file is always used, so
! @emph{-C} is unnecessary; in this case the mapping file
  is initially populated based on the project file. If
! @emph{-C} is used without
! @emph{-P},
  the mapping file is initially empty. Each invocation of the compiler
  will add any newly accessed sources to the mapping file.
  @end table
--- 7571,7581 ----
  full directory information). A mapping file can make the compiler's
  file searches faster, especially if there are many source directories,
  or the sources are read over a slow network connection. If
! @code{-P} is used, a mapping file is always used, so
! @code{-C} is unnecessary; in this case the mapping file
  is initially populated based on the project file. If
! @code{-C} is used without
! @code{-P},
  the mapping file is initially empty. Each invocation of the compiler
  will add any newly accessed sources to the mapping file.
  @end table
*************** the compiler. These lines are displayed
*** 7520,7527 ****
  
  @item @code{-D @emph{dir}}
  
! Put all object files and ALI file in directory @cite{dir}.
! If the @emph{-D} switch is not used, all object files
  and ALI files go in the current working directory.
  
  This switch cannot be used when using a project file.
--- 7619,7626 ----
  
  @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
  and ALI files go in the current working directory.
  
  This switch cannot be used when using a project file.
*************** This switch cannot be used when using a
*** 7536,7542 ****
  
  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
! index in the source. This switch cannot be used when @emph{gnatmake} is
  invoked for several mains.
  @end table
  
--- 7635,7641 ----
  
  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
! index in the source. This switch cannot be used when @code{gnatmake} is
  invoked for several mains.
  @end table
  
*************** instead of standard error.
*** 7587,7593 ****
  Force recompilations. Recompile all sources, even though some object
  files may be up to date, but don't recompile predefined or GNAT internal
  files or locked files (files with a write-protected ALI file),
! unless the @emph{-a} switch is also specified.
  @end table
  
  @geindex -F (gnatmake)
--- 7686,7692 ----
  Force recompilations. Recompile all sources, even though some object
  files may be up to date, but don't recompile predefined or GNAT internal
  files or locked files (files with a write-protected ALI file),
! unless the @code{-a} switch is also specified.
  @end table
  
  @geindex -F (gnatmake)
*************** linker.
*** 7621,7638 ****
  
  @item @code{-i}
  
! In normal mode, @emph{gnatmake} compiles all object files and ALI files
! into the current directory. If the @emph{-i} switch is used,
  then instead object files and ALI files that already exist are overwritten
  in place. This means that once a large project is organized into separate
! directories in the desired manner, then @emph{gnatmake} will automatically
  maintain and update this organization. If no ALI files are found on the
  Ada object path (see @ref{89,,Search Paths and the Run-Time Library (RTL)}),
  the new object and ALI files are created in the
  directory containing the source being compiled. If another organization
  is desired, where objects and sources are kept in different directories,
  a useful technique is to create dummy ALI files in the desired directories.
! When detecting such a dummy file, @emph{gnatmake} will be forced to
  recompile the corresponding source file, and it will be put the resulting
  object and ALI files in the directory where it found the dummy file.
  @end table
--- 7720,7737 ----
  
  @item @code{-i}
  
! In normal mode, @code{gnatmake} compiles all object files and ALI files
! into the current directory. If the @code{-i} switch is used,
  then instead object files and ALI files that already exist are overwritten
  in place. This means that once a large project is organized into separate
! directories in the desired manner, then @code{gnatmake} will automatically
  maintain and update this organization. If no ALI files are found on the
  Ada object path (see @ref{89,,Search Paths and the Run-Time Library (RTL)}),
  the new object and ALI files are created in the
  directory containing the source being compiled. If another organization
  is desired, where objects and sources are kept in different directories,
  a useful technique is to create dummy ALI files in the desired directories.
! When detecting such a dummy file, @code{gnatmake} will be forced to
  recompile the corresponding source file, and it will be put the resulting
  object and ALI files in the directory where it found the dummy file.
  @end table
*************** object and ALI files in the directory wh
*** 7646,7656 ****
  
  @item @code{-j@emph{n}}
  
! Use @cite{n} processes to carry out the (re)compilations. On a multiprocessor
! machine compilations will occur in parallel. If @cite{n} is 0, then the
  maximum number of parallel compilations is the number of core processors
  on the platform. In the event of compilation errors, messages from various
! compilations might get interspersed (but @emph{gnatmake} will give you the
  full ordered list of failing compiles at the end). If this is problematic,
  rerun the make process with n set to 1 to get a clean list of messages.
  @end table
--- 7745,7755 ----
  
  @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
  maximum number of parallel compilations is the number of core processors
  on the platform. In the event of compilation errors, messages from various
! compilations might get interspersed (but @code{gnatmake} will give you the
  full ordered list of failing compiles at the end). If this is problematic,
  rerun the make process with n set to 1 to get a clean list of messages.
  @end table
*************** rerun the make process with n set to 1 t
*** 7664,7675 ****
  
  Keep going. Continue as much as possible after a compilation error. To
  ease the programmer's task in case of compilation errors, the list of
! sources for which the compile fails is given when @emph{gnatmake}
  terminates.
  
! If @emph{gnatmake} is invoked with several @code{file_names} and with this
  switch, if there are compilation errors when building an executable,
! @emph{gnatmake} will not attempt to build the following executables.
  @end table
  
  @geindex -l (gnatmake)
--- 7763,7774 ----
  
  Keep going. Continue as much as possible after a compilation error. To
  ease the programmer's task in case of compilation errors, the list of
! sources for which the compile fails is given when @code{gnatmake}
  terminates.
  
! If @code{gnatmake} is invoked with several @code{file_names} and with this
  switch, if there are compilation errors when building an executable,
! @code{gnatmake} will not attempt to build the following executables.
  @end table
  
  @geindex -l (gnatmake)
*************** switch, if there are compilation errors
*** 7679,7692 ****
  
  @item @code{-l}
  
! Link only. Can be combined with @emph{-b} to binding
  and linking. Linking will not be performed if combined with
! @emph{-c}
! but not with @emph{-b}.
! When not combined with @emph{-b}
  all the units in the closure of the main program must have been previously
  compiled and must be up to date, and the main program needs to have been bound.
! The root unit specified by @cite{file_name}
  may be given without extension, with the source extension or, if no GNAT
  Project File is specified, with the ALI file extension.
  @end table
--- 7778,7791 ----
  
  @item @code{-l}
  
! Link only. Can be combined with @code{-b} to binding
  and linking. Linking will not be performed if combined with
! @code{-c}
! but not with @code{-b}.
! When not combined with @code{-b}
  all the units in the closure of the main program must have been previously
  compiled and must be up to date, and the main program needs to have been bound.
! The root unit specified by @code{file_name}
  may be given without extension, with the source extension or, if no GNAT
  Project File is specified, with the ALI file extension.
  @end table
*************** Project File is specified, with the ALI
*** 7699,7713 ****
  @item @code{-m}
  
  Specify that the minimum necessary amount of recompilations
! be performed. In this mode @emph{gnatmake} ignores time
  stamp differences when the only
  modifications to a source file consist in adding/removing comments,
  empty lines, spaces or tabs. This means that if you have changed the
  comments in a source file or have simply reformatted it, using this
! switch will tell @emph{gnatmake} not to recompile files that depend on it
  (provided other sources on which these files depend have undergone no
  semantic modifications). Note that the debugging information may be
! out of date with respect to the sources if the @emph{-m} switch causes
  a compilation to be switched, so the use of this switch represents a
  trade-off between compilation time and accurate debugging information.
  @end table
--- 7798,7812 ----
  @item @code{-m}
  
  Specify that the minimum necessary amount of recompilations
! be performed. In this mode @code{gnatmake} ignores time
  stamp differences when the only
  modifications to a source file consist in adding/removing comments,
  empty lines, spaces or tabs. This means that if you have changed the
  comments in a source file or have simply reformatted it, using this
! switch will tell @code{gnatmake} not to recompile files that depend on it
  (provided other sources on which these files depend have undergone no
  semantic modifications). Note that the debugging information may be
! out of date with respect to the sources if the @code{-m} switch causes
  a compilation to be switched, so the use of this switch represents a
  trade-off between compilation time and accurate debugging information.
  @end table
*************** Check if all objects are up to date. If
*** 7726,7739 ****
  dependences to @code{stdout} in a form that can be directly exploited in
  a @code{Makefile}. By default, each source file is prefixed with its
  (relative or absolute) directory name. This name is whatever you
! specified in the various @emph{-aI}
! and @emph{-I} switches. If you use
! @cite{gnatmake -M}  @emph{-q}
  (see below), only the source file names,
! without relative paths, are output. If you just specify the  @emph{-M}
  switch, dependencies of the GNAT internal system files are omitted. This
  is typically what you want. If you also specify
! the @emph{-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)
--- 7825,7838 ----
  dependences to @code{stdout} in a form that can be directly exploited in
  a @code{Makefile}. By default, each source file is prefixed with its
  (relative or absolute) directory name. This name is whatever you
! specified in the various @code{-aI}
! and @code{-I} switches. If you use
! @code{gnatmake -M}  @code{-q}
  (see below), only the source file names,
! without relative paths, are output. If you just specify the  @code{-M}
  switch, dependencies of the GNAT internal system files are omitted. This
  is typically what you want. If you also specify
! 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)
*************** file, will eventually result in recompil
*** 7762,7772 ****
  @item @code{-o @emph{exec_name}}
  
  Output executable name. The name of the final executable program will be
! @cite{exec_name}. If the @emph{-o} switch is omitted the default
  name for the executable will be the name of the input file in appropriate form
  for an executable file on the host system.
  
! This switch cannot be used when invoking @emph{gnatmake} with several
  @code{file_names}.
  @end table
  
--- 7861,7871 ----
  @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
  name for the executable will be the name of the input file in appropriate form
  for an executable file on the host system.
  
! This switch cannot be used when invoking @code{gnatmake} with several
  @code{file_names}.
  @end table
  
*************** Same as @code{--create-missing-dirs}
*** 7787,7793 ****
  
  @item @code{-P@emph{project}}
  
! Use project file @cite{project}. Only one such switch can be used.
  @end table
  
  @c -- Comment:
--- 7886,7892 ----
  
  @item @code{-P@emph{project}}
  
! Use project file @code{project}. Only one such switch can be used.
  @end table
  
  @c -- Comment:
*************** Use project file @cite{project}. Only on
*** 7801,7807 ****
  @item @code{-q}
  
  Quiet. When this flag is not set, the commands carried out by
! @emph{gnatmake} are displayed.
  @end table
  
  @geindex -s (gnatmake)
--- 7900,7906 ----
  @item @code{-q}
  
  Quiet. When this flag is not set, the commands carried out by
! @code{gnatmake} are displayed.
  @end table
  
  @geindex -s (gnatmake)
*************** All compiler switches but -I and -o are
*** 7816,7823 ****
  following way:
  orders between different 'first letter' switches are ignored, but
  orders between same switches are taken into account. For example,
! @emph{-O -O2} is different than @emph{-O2 -O}, but @emph{-g -O}
! is equivalent to @emph{-O -g}.
  
  This switch is recommended when Integrated Preprocessing is used.
  @end table
--- 7915,7922 ----
  following way:
  orders between different 'first letter' switches are ignored, but
  orders between same switches are taken into account. For example,
! @code{-O -O2} is different than @code{-O2 -O}, but @code{-g -O}
! is equivalent to @code{-O -g}.
  
  This switch is recommended when Integrated Preprocessing is used.
  @end table
*************** Unique. Recompile at most the main files
*** 7834,7840 ****
  -u with a project file and no main has a special meaning.
  @end table
  
! @c --Comment:
  @c (See :ref:`Project_Files_and_Main_Subprograms`.)
  
  @geindex -U (gnatmake)
--- 7933,7939 ----
  -u with a project file and no main has a special meaning.
  @end table
  
! @c --Comment
  @c (See :ref:`Project_Files_and_Main_Subprograms`.)
  
  @geindex -U (gnatmake)
*************** if not up to date, and libraries are reb
*** 7857,7863 ****
  
  @item @code{-v}
  
! Verbose. Display the reason for all recompilations @emph{gnatmake}
  decides are necessary, with the highest verbosity level.
  @end table
  
--- 7956,7962 ----
  
  @item @code{-v}
  
! Verbose. Display the reason for all recompilations @code{gnatmake}
  decides are necessary, with the highest verbosity level.
  @end table
  
*************** File may be compile. When this switch is
*** 7909,7922 ****
  Files may be compiled. The ALI file and the object file will be put in the
  object directory of the main Project. The compilation switches used will only
  be those specified on the command line. Even when
! @emph{-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 @cite{name} has the value @cite{value}.
  The Project Manager will use this value for occurrences of
! @cite{external(name)} when parsing the project file.
  @ref{de,,Switches Related to Project Files}.
  @end table
  
--- 8008,8021 ----
  Files may be compiled. The ALI file and the object file will be put in the
  object directory of the main Project. The compilation switches used will only
  be those specified on the command line. Even when
! @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
! @code{external(name)} when parsing the project file.
  @ref{de,,Switches Related to Project Files}.
  @end table
  
*************** then the finalization routines.
*** 7936,7943 ****
  @subsubheading GCC switches
  
  
! Any uppercase or multi-character switch that is not a @emph{gnatmake} switch
! is passed to @emph{gcc} (e.g., @emph{-O}, @emph{-gnato,} etc.)
  
  @subsubheading Source and library search path switches
  
--- 8035,8042 ----
  @subsubheading GCC switches
  
  
! Any uppercase or multi-character switch that is not a @code{gnatmake} switch
! is passed to @code{gcc} (e.g., @code{-O}, @code{-gnato,} etc.)
  
  @subsubheading Source and library search path switches
  
*************** is passed to @emph{gcc} (e.g., @emph{-O}
*** 7949,7955 ****
  
  @item @code{-aI@emph{dir}}
  
! When looking for source files also look in directory @cite{dir}.
  The order in which source files search is undertaken is
  described in @ref{89,,Search Paths and the Run-Time Library (RTL)}.
  @end table
--- 8048,8054 ----
  
  @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
  described in @ref{89,,Search Paths and the Run-Time Library (RTL)}.
  @end table
*************** described in @ref{89,,Search Paths and t
*** 7961,7975 ****
  
  @item @code{-aL@emph{dir}}
  
! Consider @cite{dir} as being an externally provided Ada library.
! Instructs @emph{gnatmake} to skip compilation units whose @code{.ALI}
! files have been located in directory @cite{dir}. This allows you to have
! missing bodies for the units in @cite{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 @emph{gnatmake}. The easier method of causing standard libraries
  to be excluded from consideration is to write-protect the corresponding
  ALI files.
  @end table
--- 8060,8074 ----
  
  @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}
! files have been located in directory @code{dir}. This allows you to have
! 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
  ALI files.
  @end table
*************** ALI files.
*** 7982,7988 ****
  @item @code{-aO@emph{dir}}
  
  When searching for library and object files, look in directory
! @cite{dir}. The order in which library files are searched is described in
  @ref{8c,,Search Paths for gnatbind}.
  @end table
  
--- 8081,8087 ----
  @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
  @ref{8c,,Search Paths for gnatbind}.
  @end table
  
*************** Equivalent to @code{-aO@emph{dir} -aI@em
*** 8018,8024 ****
  Do not look for source files in the directory containing the source
  file named in the command line.
  Do not look for ALI or object files in the directory
! where @emph{gnatmake} was invoked.
  @end table
  
  @geindex -L (gnatmake)
--- 8117,8123 ----
  Do not look for source files in the directory containing the source
  file named in the command line.
  Do not look for ALI or object files in the directory
! where @code{gnatmake} was invoked.
  @end table
  
  @geindex -L (gnatmake)
*************** where @emph{gnatmake} was invoked.
*** 8030,8036 ****
  
  @item @code{-L@emph{dir}}
  
! Add directory @cite{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
--- 8129,8135 ----
  
  @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
*************** The selected path is handled like a norm
*** 8089,8098 ****
  
  @node Mode Switches for gnatmake,Notes on the Command Line,Switches for gnatmake,Building with gnatmake
  @anchor{gnat_ugn/building_executable_programs_with_gnat id4}@anchor{df}@anchor{gnat_ugn/building_executable_programs_with_gnat mode-switches-for-gnatmake}@anchor{e0}
! @subsection Mode Switches for @emph{gnatmake}
  
  
! The mode switches (referred to as @cite{mode_switches}) allow the
  inclusion of switches that are to be passed to the compiler itself, the
  binder or the linker. The effect of a mode switch is to cause all
  subsequent switches up to the end of the switch list, or up to the next
--- 8188,8197 ----
  
  @node Mode Switches for gnatmake,Notes on the Command Line,Switches for gnatmake,Building with gnatmake
  @anchor{gnat_ugn/building_executable_programs_with_gnat id4}@anchor{df}@anchor{gnat_ugn/building_executable_programs_with_gnat mode-switches-for-gnatmake}@anchor{e0}
! @subsection Mode Switches for @code{gnatmake}
  
  
! The mode switches (referred to as @code{mode_switches}) allow the
  inclusion of switches that are to be passed to the compiler itself, the
  binder or the linker. The effect of a mode switch is to cause all
  subsequent switches up to the end of the switch list, or up to the next
*************** designated component of GNAT.
*** 8106,8114 ****
  
  @item @code{-cargs @emph{switches}}
  
! Compiler switches. Here @cite{switches} is a list of switches
! that are valid switches for @emph{gcc}. They will be passed on to
! all compile steps performed by @emph{gnatmake}.
  @end table
  
  @geindex -bargs (gnatmake)
--- 8205,8213 ----
  
  @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
! all compile steps performed by @code{gnatmake}.
  @end table
  
  @geindex -bargs (gnatmake)
*************** all compile steps performed by @emph{gna
*** 8118,8126 ****
  
  @item @code{-bargs @emph{switches}}
  
! Binder switches. Here @cite{switches} is a list of switches
! that are valid switches for @cite{gnatbind}. They will be passed on to
! all bind steps performed by @emph{gnatmake}.
  @end table
  
  @geindex -largs (gnatmake)
--- 8217,8225 ----
  
  @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
! all bind steps performed by @code{gnatmake}.
  @end table
  
  @geindex -largs (gnatmake)
*************** all bind steps performed by @emph{gnatma
*** 8130,8138 ****
  
  @item @code{-largs @emph{switches}}
  
! Linker switches. Here @cite{switches} is a list of switches
! that are valid switches for @emph{gnatlink}. They will be passed on to
! all link steps performed by @emph{gnatmake}.
  @end table
  
  @geindex -margs (gnatmake)
--- 8229,8237 ----
  
  @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
! all link steps performed by @code{gnatmake}.
  @end table
  
  @geindex -margs (gnatmake)
*************** all link steps performed by @emph{gnatma
*** 8142,8150 ****
  
  @item @code{-margs @emph{switches}}
  
! Make switches. The switches are directly interpreted by @emph{gnatmake},
! regardless of any previous occurrence of @emph{-cargs}, @emph{-bargs}
! or @emph{-largs}.
  @end table
  
  @node Notes on the Command Line,How gnatmake Works,Mode Switches for gnatmake,Building with gnatmake
--- 8241,8249 ----
  
  @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}
! or @code{-largs}.
  @end table
  
  @node Notes on the Command Line,How gnatmake Works,Mode Switches for gnatmake,Building with gnatmake
*************** or @emph{-largs}.
*** 8153,8159 ****
  
  
  This section contains some additional useful notes on the operation
! of the @emph{gnatmake} command.
  
  @geindex Recompilation (by gnatmake)
  
--- 8252,8258 ----
  
  
  This section contains some additional useful notes on the operation
! of the @code{gnatmake} command.
  
  @geindex Recompilation (by gnatmake)
  
*************** of the @emph{gnatmake} command.
*** 8161,8209 ****
  @itemize *
  
  @item 
! If @emph{gnatmake} finds no ALI files, it recompiles the main program
  and all other units required by the main program.
! This means that @emph{gnatmake}
  can be used for the initial compile, as well as during subsequent steps of
  the development cycle.
  
  @item 
  If you enter @code{gnatmake foo.adb}, where @code{foo}
! is a subunit or body of a generic unit, @emph{gnatmake} recompiles
  @code{foo.adb} (because it finds no ALI) and stops, issuing a
  warning.
  
  @item 
! In @emph{gnatmake} the switch @emph{-I}
  is used to specify both source and
! library file paths. Use @emph{-aI}
  instead if you just want to specify
! source paths only and @emph{-aO}
  if you want to specify library paths
  only.
  
  @item 
! @emph{gnatmake} will ignore any files whose ALI file is write-protected.
  This may conveniently be used to exclude standard libraries from
  consideration and in particular it means that the use of the
! @emph{-f} switch will not recompile these files
! unless @emph{-a} is also specified.
  
  @item 
! @emph{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 @cite{main.adb}, which uses this Ada library you would just type:
  
  @example
  $ gnatmake -aI`include-dir`  -aL`obj-dir`  main
  @end example
  
  @item 
! Using @emph{gnatmake} along with the @emph{-m (minimal recompilation)}
  switch provides a mechanism for avoiding unnecessary recompilations. Using
  this switch,
  you can update the comments/format of your
--- 8260,8308 ----
  @itemize *
  
  @item 
! If @code{gnatmake} finds no ALI files, it recompiles the main program
  and all other units required by the main program.
! This means that @code{gnatmake}
  can be used for the initial compile, as well as during subsequent steps of
  the development cycle.
  
  @item 
  If you enter @code{gnatmake foo.adb}, where @code{foo}
! is a subunit or body of a generic unit, @code{gnatmake} recompiles
  @code{foo.adb} (because it finds no ALI) and stops, issuing a
  warning.
  
  @item 
! In @code{gnatmake} the switch @code{-I}
  is used to specify both source and
! library file paths. Use @code{-aI}
  instead if you just want to specify
! source paths only and @code{-aO}
  if you want to specify library paths
  only.
  
  @item 
! @code{gnatmake} will ignore any files whose ALI file is write-protected.
  This may conveniently be used to exclude standard libraries from
  consideration and in particular it means that the use of the
! @code{-f} switch will not recompile these files
! unless @code{-a} is also specified.
  
  @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:
  
  @example
  $ gnatmake -aI`include-dir`  -aL`obj-dir`  main
  @end example
  
  @item 
! Using @code{gnatmake} along with the @code{-m (minimal recompilation)}
  switch provides a mechanism for avoiding unnecessary recompilations. Using
  this switch,
  you can update the comments/format of your
*************** that the debugging information may be ou
*** 8219,8230 ****
  
  @node How gnatmake Works,Examples of gnatmake Usage,Notes on the Command Line,Building with gnatmake
  @anchor{gnat_ugn/building_executable_programs_with_gnat id6}@anchor{e3}@anchor{gnat_ugn/building_executable_programs_with_gnat how-gnatmake-works}@anchor{e4}
! @subsection How @emph{gnatmake} Works
  
  
! Generally @emph{gnatmake} automatically performs all necessary
  recompilations and you don't need to worry about how it works. However,
! it may be useful to have some basic understanding of the @emph{gnatmake}
  approach and in particular to understand how it uses the results of
  previous compilations without incorrectly depending on them.
  
--- 8318,8329 ----
  
  @node How gnatmake Works,Examples of gnatmake Usage,Notes on the Command Line,Building with gnatmake
  @anchor{gnat_ugn/building_executable_programs_with_gnat id6}@anchor{e3}@anchor{gnat_ugn/building_executable_programs_with_gnat how-gnatmake-works}@anchor{e4}
! @subsection How @code{gnatmake} Works
  
  
! Generally @code{gnatmake} automatically performs all necessary
  recompilations and you don't need to worry about how it works. However,
! it may be useful to have some basic understanding of the @code{gnatmake}
  approach and in particular to understand how it uses the results of
  previous compilations without incorrectly depending on them.
  
*************** the ALI file. This means that neither th
*** 8235,8249 ****
  files that it depends on have been modified, and hence there is no need
  to recompile this file.
  
! @emph{gnatmake} works by first checking if the specified main unit is up
  to date. If so, no compilations are required for the main unit. If not,
! @emph{gnatmake} compiles the main program to build a new ALI file that
  reflects the latest sources. Then the ALI file of the main unit is
  examined to find all the source files on which the main program depends,
! and @emph{gnatmake} recursively applies the above procedure on all these
  files.
  
! This process ensures that @emph{gnatmake} only trusts the dependencies
  in an existing ALI file if they are known to be correct. Otherwise it
  always recompiles to determine a new, guaranteed accurate set of
  dependencies. As a result the program is compiled 'upside down' from what may
--- 8334,8348 ----
  files that it depends on have been modified, and hence there is no need
  to recompile this file.
  
! @code{gnatmake} works by first checking if the specified main unit is up
  to date. If so, no compilations are required for the main unit. If not,
! @code{gnatmake} compiles the main program to build a new ALI file that
  reflects the latest sources. Then the ALI file of the main unit is
  examined to find all the source files on which the main program depends,
! and @code{gnatmake} recursively applies the above procedure on all these
  files.
  
! This process ensures that @code{gnatmake} only trusts the dependencies
  in an existing ALI file if they are known to be correct. Otherwise it
  always recompiles to determine a new, guaranteed accurate set of
  dependencies. As a result the program is compiled 'upside down' from what may
*************** be more familiar as the required order o
*** 8251,8272 ****
  systems. In particular, clients are compiled before the units on which
  they depend. The ability of GNAT to compile in any order is critical in
  allowing an order of compilation to be chosen that guarantees that
! @emph{gnatmake} will recompute a correct set of new dependencies if
  necessary.
  
! When invoking @emph{gnatmake} with several @cite{file_names}, if a unit is
  imported by several of the executables, it will be recompiled at most once.
  
  Note: when using non-standard naming conventions
  (@ref{35,,Using Other File Names}), changing through a configuration pragmas
! file the version of a source and invoking @emph{gnatmake} to recompile may
  have no effect, if the previous version of the source is still accessible
! by @emph{gnatmake}. It may be necessary to use the switch
  -f.
  
  @node Examples of gnatmake Usage,,How gnatmake Works,Building with gnatmake
  @anchor{gnat_ugn/building_executable_programs_with_gnat examples-of-gnatmake-usage}@anchor{e5}@anchor{gnat_ugn/building_executable_programs_with_gnat id7}@anchor{e6}
! @subsection Examples of @emph{gnatmake} Usage
  
  
  
--- 8350,8371 ----
  systems. In particular, clients are compiled before the units on which
  they depend. The ability of GNAT to compile in any order is critical in
  allowing an order of compilation to be chosen that guarantees that
! @code{gnatmake} will recompute a correct set of new dependencies if
  necessary.
  
! When invoking @code{gnatmake} with several @code{file_names}, if a unit is
  imported by several of the executables, it will be recompiled at most once.
  
  Note: when using non-standard naming conventions
  (@ref{35,,Using Other File Names}), changing through a configuration pragmas
! file the version of a source and invoking @code{gnatmake} to recompile may
  have no effect, if the previous version of the source is still accessible
! by @code{gnatmake}. It may be necessary to use the switch
  -f.
  
  @node Examples of gnatmake Usage,,How gnatmake Works,Building with gnatmake
  @anchor{gnat_ugn/building_executable_programs_with_gnat examples-of-gnatmake-usage}@anchor{e5}@anchor{gnat_ugn/building_executable_programs_with_gnat id7}@anchor{e6}
! @subsection Examples of @code{gnatmake} Usage
  
  
  
*************** by @emph{gnatmake}. It may be necessary
*** 8275,8307 ****
  @item @emph{gnatmake hello.adb}
  
  Compile all files necessary to bind and link the main program
! @code{hello.adb} (containing unit @cite{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 @cite{Main1}), @code{main2.adb}
! (containing unit @cite{Main2}) and @code{main3.adb}
! (containing unit @cite{Main3}) and bind and link the resulting object files
  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
! @cite{Main_Unit} (from file @code{main_unit.adb}). All compilations will
  be done with optimization level 2 and the order of elaboration will be
! listed by the binder. @emph{gnatmake} will operate in quiet mode, not
  displaying commands it is executing.
  @end table
  
  @node Compiling with gcc,Compiler Switches,Building with gnatmake,Building Executable Programs with GNAT
  @anchor{gnat_ugn/building_executable_programs_with_gnat compiling-with-gcc}@anchor{1c}@anchor{gnat_ugn/building_executable_programs_with_gnat id8}@anchor{e7}
! @section Compiling with @emph{gcc}
  
  
! This section discusses how to compile Ada programs using the @emph{gcc}
  command. It also describes the set of switches
  that can be used to control the behavior of the compiler.
  
--- 8374,8406 ----
  @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}
! (containing unit @code{Main2}) and @code{main3.adb}
! (containing unit @code{Main3}) and bind and link the resulting object files
  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
  be done with optimization level 2 and the order of elaboration will be
! listed by the binder. @code{gnatmake} will operate in quiet mode, not
  displaying commands it is executing.
  @end table
  
  @node Compiling with gcc,Compiler Switches,Building with gnatmake,Building Executable Programs with GNAT
  @anchor{gnat_ugn/building_executable_programs_with_gnat compiling-with-gcc}@anchor{1c}@anchor{gnat_ugn/building_executable_programs_with_gnat id8}@anchor{e7}
! @section Compiling with @code{gcc}
  
  
! This section discusses how to compile Ada programs using the @code{gcc}
  command. It also describes the set of switches
  that can be used to control the behavior of the compiler.
  
*************** that can be used to control the behavior
*** 8319,8325 ****
  
  
  The first step in creating an executable program is to compile the units
! of the program using the @emph{gcc} command. You must compile the
  following files:
  
  
--- 8418,8424 ----
  
  
  The first step in creating an executable program is to compile the units
! of the program using the @code{gcc} command. You must compile the
  following files:
  
  
*************** compiled.
*** 8358,8386 ****
  @geindex cannot generate code
  
  If you attempt to compile any of these files, you will get one of the
! following error messages (where @cite{fff} is the name of the file you
  compiled):
  
  @quotation
  
  @example
! cannot generate code for file `fff` (package spec)
  to check package spec, use -gnatc
  
! cannot generate code for file `fff` (missing subunits)
  to check parent unit, use -gnatc
  
! cannot generate code for file `fff` (subprogram spec)
  to check subprogram spec, use -gnatc
  
! cannot generate code for file `fff` (subunit)
  to check subunit, use -gnatc
  @end example
  @end quotation
  
  As indicated by the above error messages, if you want to submit
  one of these files to the compiler to check for correct semantics
! without generating code, then use the @emph{-gnatc} switch.
  
  The basic command for compiling a file containing an Ada unit is:
  
--- 8457,8485 ----
  @geindex cannot generate code
  
  If you attempt to compile any of these files, you will get one of the
! following error messages (where @code{fff} is the name of the file you
  compiled):
  
  @quotation
  
  @example
! cannot generate code for file `@w{`}fff`@w{`} (package spec)
  to check package spec, use -gnatc
  
! cannot generate code for file `@w{`}fff`@w{`} (missing subunits)
  to check parent unit, use -gnatc
  
! cannot generate code for file `@w{`}fff`@w{`} (subprogram spec)
  to check subprogram spec, use -gnatc
  
! cannot generate code for file `@w{`}fff`@w{`} (subunit)
  to check subunit, use -gnatc
  @end example
  @end quotation
  
  As indicated by the above error messages, if you want to submit
  one of these files to the compiler to check for correct semantics
! without generating code, then use the @code{-gnatc} switch.
  
  The basic command for compiling a file containing an Ada unit is:
  
*************** The basic command for compiling a file c
*** 8388,8397 ****
  $ gcc -c [switches] <file name>
  @end example
  
! where @cite{file name} is the name of the Ada file (usually
  having an extension @code{.ads} for a spec or @code{.adb} for a body).
  You specify the
! @code{-c} switch to tell @emph{gcc} to compile, but not link, the file.
  The result of a successful compilation is an object file, which has the
  same name as the source file but an extension of @code{.o} and an Ada
  Library Information (ALI) file, which also has the same name as the
--- 8487,8496 ----
  $ gcc -c [switches] <file name>
  @end example
  
! where @code{file name} is the name of the Ada file (usually
  having an extension @code{.ads} for a spec or @code{.adb} for a body).
  You specify the
! @code{-c} switch to tell @code{gcc} to compile, but not link, the file.
  The result of a successful compilation is an object file, which has the
  same name as the source file but an extension of @code{.o} and an Ada
  Library Information (ALI) file, which also has the same name as the
*************** two output files in the current director
*** 8400,8418 ****
  file in any directory using an absolute or relative path specification
  containing the directory information.
  
  @geindex gnat1
  
! @emph{gcc} is actually a driver program that looks at the extensions of
  the file arguments and loads the appropriate compiler. For example, the
  GNU C compiler is @code{cc1}, and the Ada compiler is @code{gnat1}.
  These programs are in directories known to the driver program (in some
  configurations via environment variables you set), but need not be in
! your path. The @emph{gcc} driver also calls the assembler and any other
  utilities needed to complete the generation of the required object
  files.
  
! It is possible to supply several file names on the same @emph{gcc}
! command. This causes @emph{gcc} to call the appropriate compiler for
  each file. For example, the following command lists two separate
  files to be compiled:
  
--- 8499,8519 ----
  file in any directory using an absolute or relative path specification
  containing the directory information.
  
+ TESTING: the @code{--foobar@emph{NN}} switch
+ 
  @geindex gnat1
  
! @code{gcc} is actually a driver program that looks at the extensions of
  the file arguments and loads the appropriate compiler. For example, the
  GNU C compiler is @code{cc1}, and the Ada compiler is @code{gnat1}.
  These programs are in directories known to the driver program (in some
  configurations via environment variables you set), but need not be in
! your path. The @code{gcc} driver also calls the assembler and any other
  utilities needed to complete the generation of the required object
  files.
  
! It is possible to supply several file names on the same @code{gcc}
! command. This causes @code{gcc} to call the appropriate compiler for
  each file. For example, the following command lists two separate
  files to be compiled:
  
*************** files to be compiled:
*** 8420,8432 ****
  $ gcc -c x.adb y.adb
  @end example
  
! calls @cite{gnat1} (the Ada compiler) twice to compile @code{x.adb} and
  @code{y.adb}.
  The compiler generates two object files @code{x.o} and @code{y.o}
  and the two ALI files @code{x.ali} and @code{y.ali}.
  
  Any switches apply to all the files listed, see @ref{ea,,Compiler Switches} for a
! list of available @emph{gcc} switches.
  
  @node Search Paths and the Run-Time Library RTL,Order of Compilation Issues,Compiling Programs,Compiling with gcc
  @anchor{gnat_ugn/building_executable_programs_with_gnat id10}@anchor{eb}@anchor{gnat_ugn/building_executable_programs_with_gnat search-paths-and-the-run-time-library-rtl}@anchor{89}
--- 8521,8533 ----
  $ gcc -c x.adb y.adb
  @end example
  
! calls @code{gnat1} (the Ada compiler) twice to compile @code{x.adb} and
  @code{y.adb}.
  The compiler generates two object files @code{x.o} and @code{y.o}
  and the two ALI files @code{x.ali} and @code{y.ali}.
  
  Any switches apply to all the files listed, see @ref{ea,,Compiler Switches} for a
! list of available @code{gcc} switches.
  
  @node Search Paths and the Run-Time Library RTL,Order of Compilation Issues,Compiling Programs,Compiling with gcc
  @anchor{gnat_ugn/building_executable_programs_with_gnat id10}@anchor{eb}@anchor{gnat_ugn/building_executable_programs_with_gnat search-paths-and-the-run-time-library-rtl}@anchor{89}
*************** The directory containing the source file
*** 8451,8457 ****
  (the file name on the command line).
  
  @item 
! Each directory named by an @emph{-I} switch given on the @emph{gcc}
  command line, in the order given.
  
  @geindex ADA_PRJ_INCLUDE_FILE
--- 8552,8558 ----
  (the file name on the command line).
  
  @item 
! Each directory named by an @code{-I} switch given on the @code{gcc}
  command line, in the order given.
  
  @geindex ADA_PRJ_INCLUDE_FILE
*************** GNAT Run Time Library (RTL) source files
*** 8489,8525 ****
  @ref{87,,Installing a library}
  @end itemize
  
! Specifying the switch @emph{-I-}
  inhibits the use of the directory
  containing the source file named in the command line. You can still
  have this directory on your search path, but in this case it must be
! explicitly requested with a @emph{-I} switch.
  
! Specifying the switch @emph{-nostdinc}
  inhibits the search of the default location for the GNAT Run Time
  Library (RTL) source files.
  
  The compiler outputs its object files and ALI files in the current
  working directory.
! Caution: The object file can be redirected with the @emph{-o} switch;
! however, @emph{gcc} and @cite{gnat1} have not been coordinated on this
  so the @code{ALI} file will not go to the right place. Therefore, you should
! avoid using the @emph{-o} switch.
  
  @geindex System.IO
  
! The packages @cite{Ada}, @cite{System}, and @cite{Interfaces} and their
! children make up the GNAT RTL, together with the simple @cite{System.IO}
! package used in the @cite{"Hello World"} example. The sources for these units
  are needed by the compiler and are kept together in one directory. Not
  all of the bodies are needed, but all of the sources are kept together
  anyway. In a normal installation, you need not specify these directory
  names when compiling or binding. Either the environment variables or
  the built-in defaults cause these files to be found.
  
! In addition to the language-defined hierarchies (@cite{System}, @cite{Ada} and
! @cite{Interfaces}), the GNAT distribution provides a fourth hierarchy,
! consisting of child units of @cite{GNAT}. This is a collection of generally
  useful types, subprograms, etc. See the @cite{GNAT_Reference_Manual}
  for further details.
  
--- 8590,8626 ----
  @ref{87,,Installing a library}
  @end itemize
  
! Specifying the switch @code{-I-}
  inhibits the use of the directory
  containing the source file named in the command line. You can still
  have this directory on your search path, but in this case it must be
! explicitly requested with a @code{-I} switch.
  
! Specifying the switch @code{-nostdinc}
  inhibits the search of the default location for the GNAT Run Time
  Library (RTL) source files.
  
  The compiler outputs its object files and ALI files in the current
  working directory.
! Caution: The object file can be redirected with the @code{-o} switch;
! however, @code{gcc} and @code{gnat1} have not been coordinated on this
  so the @code{ALI} file will not go to the right place. Therefore, you should
! avoid using the @code{-o} switch.
  
  @geindex System.IO
  
! The packages @code{Ada}, @code{System}, and @code{Interfaces} and their
! children make up the GNAT RTL, together with the simple @code{System.IO}
! package used in the @code{"Hello World"} example. The sources for these units
  are needed by the compiler and are kept together in one directory. Not
  all of the bodies are needed, but all of the sources are kept together
  anyway. In a normal installation, you need not specify these directory
  names when compiling or binding. Either the environment variables or
  the built-in defaults cause these files to be found.
  
! In addition to the language-defined hierarchies (@code{System}, @code{Ada} and
! @code{Interfaces}), the GNAT distribution provides a fourth hierarchy,
! consisting of child units of @code{GNAT}. This is a collection of generally
  useful types, subprograms, etc. See the @cite{GNAT_Reference_Manual}
  for further details.
  
*************** development environments much more flexi
*** 8532,8538 ****
  @subsection Order of Compilation Issues
  
  
! If, in our earlier example, there was a spec for the @cite{hello}
  procedure, it would be contained in the file @code{hello.ads}; yet this
  file would not have to be explicitly compiled. This is the result of the
  model we chose to implement library management. Some of the consequences
--- 8633,8639 ----
  @subsection Order of Compilation Issues
  
  
! If, in our earlier example, there was a spec for the @code{hello}
  procedure, it would be contained in the file @code{hello.ads}; yet this
  file would not have to be explicitly compiled. This is the result of the
  model we chose to implement library management. Some of the consequences
*************** $ gcc -c -O2 -gnata xyz-def.adb
*** 8586,8592 ****
  @end example
  
  Compile the child unit package in file @code{xyz-def.adb} with extensive
! optimizations, and pragma @cite{Assert}/@cite{Debug} statements
  enabled.
  
  @example
--- 8687,8693 ----
  @end example
  
  Compile the child unit package in file @code{xyz-def.adb} with extensive
! optimizations, and pragma @code{Assert}/@cite{Debug} statements
  enabled.
  
  @example
*************** mode.
*** 8601,8607 ****
  @section Compiler Switches
  
  
! The @emph{gcc} command accepts switches that control the
  compilation process. These switches are fully described in this section:
  first an alphabetical listing of all switches with a brief description,
  and then functionally grouped sets of switches with more detailed
--- 8702,8708 ----
  @section Compiler Switches
  
  
! The @code{gcc} command accepts switches that control the
  compilation process. These switches are fully described in this section:
  first an alphabetical listing of all switches with a brief description,
  and then functionally grouped sets of switches with more detailed
*************** compilation units.
*** 8647,8655 ****
  
  @item @code{-b @emph{target}}
  
! Compile your program to run on @cite{target}, which is the name of a
  system configuration. You must have a GNAT cross-compiler built if
! @cite{target} is not the same as your host system.
  @end table
  
  @geindex -B (gcc)
--- 8748,8756 ----
  
  @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
! @code{target} is not the same as your host system.
  @end table
  
  @geindex -B (gcc)
*************** system configuration. You must have a GN
*** 8659,8670 ****
  
  @item @code{-B@emph{dir}}
  
! Load compiler executables (for example, @cite{gnat1}, the Ada compiler)
! from @cite{dir} instead of the default location. Only use this switch
  when multiple versions of the GNAT compiler are available.
  See the "Options for Directory Search" section in the
  @cite{Using the GNU Compiler Collection (GCC)} manual for further details.
! You would normally use the @emph{-b} or @emph{-V} switch instead.
  @end table
  
  @geindex -c (gcc)
--- 8760,8771 ----
  
  @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
  when multiple versions of the GNAT compiler are available.
  See the "Options for Directory Search" section in the
  @cite{Using the GNU Compiler Collection (GCC)} manual for further details.
! You would normally use the @code{-b} or @code{-V} switch instead.
  @end table
  
  @geindex -c (gcc)
*************** You would normally use the @emph{-b} or
*** 8676,8687 ****
  
  Compile. Always use this switch when compiling Ada programs.
  
! Note: for some other languages when using @emph{gcc}, notably in
  the case of C and C++, it is possible to use
! use @emph{gcc} without a @emph{-c} switch to
  compile and link in one step. In the case of GNAT, you
  cannot use this approach, because the binder must be run
! and @emph{gcc} cannot be used to run the GNAT binder.
  @end table
  
  @geindex -fcallgraph-info (gcc)
--- 8777,8788 ----
  
  Compile. Always use this switch when compiling Ada programs.
  
! Note: for some other languages when using @code{gcc}, notably in
  the case of C and C++, it is possible to use
! use @code{gcc} without a @code{-c} switch to
  compile and link in one step. In the case of GNAT, you
  cannot use this approach, because the binder must be run
! and @code{gcc} cannot be used to run the GNAT binder.
  @end table
  
  @geindex -fcallgraph-info (gcc)
*************** Makes the compiler output callgraph info
*** 8695,8702 ****
  per-file basis. The information is generated in the VCG format.  It can
  be decorated with additional, per-node and/or per-edge information, if a
  list of comma-separated markers is additionally specified. When the
! @cite{su} marker is specified, the callgraph is decorated with stack usage
! information; it is equivalent to @emph{-fstack-usage}. When the @cite{da}
  marker is specified, the callgraph is decorated with information about
  dynamically allocated objects.
  @end table
--- 8796,8803 ----
  per-file basis. The information is generated in the VCG format.  It can
  be decorated with additional, per-node and/or per-edge information, if a
  list of comma-separated markers is additionally specified. When the
! @code{su} marker is specified, the callgraph is decorated with stack usage
! information; it is equivalent to @code{-fstack-usage}. When the @code{da}
  marker is specified, the callgraph is decorated with information about
  dynamically allocated objects.
  @end table
*************** in the compiler sources for details in f
*** 8714,8732 ****
  @code{scos.adb}.
  @end table
  
- @geindex -fdump-xref (gcc)
- 
- 
- @table @asis
- 
- @item @code{-fdump-xref}
- 
- Generates cross reference information in GLI files for C and C++ sources.
- The GLI files have the same syntax as the ALI files for Ada, and can be used
- for source navigation in IDEs and on the command line using e.g. gnatxref
- and the @emph{--ext=gli} switch.
- @end table
- 
  @geindex -flto (gcc)
  
  
--- 8815,8820 ----
*************** and the @emph{--ext=gli} switch.
*** 8735,8755 ****
  @item @code{-flto[=@emph{n}]}
  
  Enables Link Time Optimization. This switch must be used in conjunction
! with the traditional @emph{-Ox} switches and instructs the compiler to
! defer most optimizations until the link stage. The advantage of this
  approach is that the compiler can do a whole-program analysis and choose
  the best interprocedural optimization strategy based on a complete view
  of the program, instead of a fragmentary view with the usual approach.
  This can also speed up the compilation of big programs and reduce the
  size of the executable, compared with a traditional per-unit compilation
! with inlining across modules enabled by the @emph{-gnatn} switch.
  The drawback of this approach is that it may require more memory and that
  the debugging information generated by -g with it might be hardly usable.
! The switch, as well as the accompanying @emph{-Ox} switches, must be
  specified both for the compilation and the link phases.
! If the @cite{n} parameter is specified, the optimization and final code
! generation at link time are executed using @cite{n} parallel jobs by
! means of an installed @emph{make} program.
  @end table
  
  @geindex -fno-inline (gcc)
--- 8823,8844 ----
  @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
! since it is a full replacement for the latter) and instructs the compiler
! to defer most optimizations until the link stage. The advantage of this
  approach is that the compiler can do a whole-program analysis and choose
  the best interprocedural optimization strategy based on a complete view
  of the program, instead of a fragmentary view with the usual approach.
  This can also speed up the compilation of big programs and reduce the
  size of the executable, compared with a traditional per-unit compilation
! with inlining across modules enabled by the @code{-gnatn} switch.
  The drawback of this approach is that it may require more memory and that
  the debugging information generated by -g with it might be hardly usable.
! The switch, as well as the accompanying @code{-Ox} switches, must be
  specified both for the compilation and the link phases.
! If the @code{n} parameter is specified, the optimization and final code
! generation at link time are executed using @code{n} parallel jobs by
! means of an installed @code{make} program.
  @end table
  
  @geindex -fno-inline (gcc)
*************** means of an installed @emph{make} progra
*** 8759,8768 ****
  
  @item @code{-fno-inline}
  
! Suppresses all inlining, unless requested with pragma @cite{Inline_Always}. The
  effect is enforced regardless of other optimization or inlining switches.
  Note that inlining can also be suppressed on a finer-grained basis with
! pragma @cite{No_Inline}.
  @end table
  
  @geindex -fno-inline-functions (gcc)
--- 8848,8857 ----
  
  @item @code{-fno-inline}
  
! Suppresses all inlining, unless requested with pragma @code{Inline_Always}. The
  effect is enforced regardless of other optimization or inlining switches.
  Note that inlining can also be suppressed on a finer-grained basis with
! pragma @code{No_Inline}.
  @end table
  
  @geindex -fno-inline-functions (gcc)
*************** pragma @cite{No_Inline}.
*** 8773,8779 ****
  @item @code{-fno-inline-functions}
  
  Suppresses automatic inlining of subprograms, which is enabled
! if @emph{-O3} is used.
  @end table
  
  @geindex -fno-inline-small-functions (gcc)
--- 8862,8868 ----
  @item @code{-fno-inline-functions}
  
  Suppresses automatic inlining of subprograms, which is enabled
! if @code{-O3} is used.
  @end table
  
  @geindex -fno-inline-small-functions (gcc)
*************** if @emph{-O3} is used.
*** 8784,8790 ****
  @item @code{-fno-inline-small-functions}
  
  Suppresses automatic inlining of small subprograms, which is enabled
! if @emph{-O2} is used.
  @end table
  
  @geindex -fno-inline-functions-called-once (gcc)
--- 8873,8879 ----
  @item @code{-fno-inline-small-functions}
  
  Suppresses automatic inlining of small subprograms, which is enabled
! if @code{-O2} is used.
  @end table
  
  @geindex -fno-inline-functions-called-once (gcc)
*************** if @emph{-O2} is used.
*** 8795,8801 ****
  @item @code{-fno-inline-functions-called-once}
  
  Suppresses inlining of subprograms local to the unit and called once
! from within it, which is enabled if @emph{-O1} is used.
  @end table
  
  @geindex -fno-ivopts (gcc)
--- 8884,8890 ----
  @item @code{-fno-inline-functions-called-once}
  
  Suppresses inlining of subprograms local to the unit and called once
! from within it, which is enabled if @code{-O1} is used.
  @end table
  
  @geindex -fno-ivopts (gcc)
*************** from within it, which is enabled if @emp
*** 8806,8812 ****
  @item @code{-fno-ivopts}
  
  Suppresses high-level loop induction variable optimizations, which are
! enabled if @emph{-O1} is used. These optimizations are generally
  profitable but, for some specific cases of loops with numerous uses
  of the iteration variable that follow a common pattern, they may end
  up destroying the regularity that could be exploited at a lower level
--- 8895,8901 ----
  @item @code{-fno-ivopts}
  
  Suppresses high-level loop induction variable optimizations, which are
! enabled if @code{-O1} is used. These optimizations are generally
  profitable but, for some specific cases of loops with numerous uses
  of the iteration variable that follow a common pattern, they may end
  up destroying the regularity that could be exploited at a lower level
*************** Causes the compiler to avoid assumptions
*** 8836,8842 ****
  integer overflow. These rules specify that signed integer overflow will
  result in a Constraint_Error exception at run time and are enforced in
  default mode by the compiler, so this switch should not be necessary in
! normal operating mode. It might be useful in conjunction with @emph{-gnato0}
  for very peculiar cases of low-level programming.
  @end table
  
--- 8925,8931 ----
  integer overflow. These rules specify that signed integer overflow will
  result in a Constraint_Error exception at run time and are enforced in
  default mode by the compiler, so this switch should not be necessary in
! normal operating mode. It might be useful in conjunction with @code{-gnato0}
  for very peculiar cases of low-level programming.
  @end table
  
*************** per-subprogram basis. See @ref{f5,,Stati
*** 8872,8878 ****
  Generate debugging information. This information is stored in the object
  file and copied from there to the final executable file by the linker,
  where it can be read by the debugger. You must use the
! @emph{-g} switch if you plan on using the debugger.
  @end table
  
  @geindex -gnat05 (gcc)
--- 8961,8967 ----
  Generate debugging information. This information is stored in the object
  file and copied from there to the final executable file by the linker,
  where it can be read by the debugger. You must use the
! @code{-g} switch if you plan on using the debugger.
  @end table
  
  @geindex -gnat05 (gcc)
*************** Allow full Ada 2012 features.
*** 8904,8910 ****
  
  @item @code{-gnat2005}
  
! Allow full Ada 2005 features (same as @emph{-gnat05})
  @end table
  
  @geindex -gnat2012 (gcc)
--- 8993,8999 ----
  
  @item @code{-gnat2005}
  
! Allow full Ada 2005 features (same as @code{-gnat05})
  @end table
  
  @geindex -gnat2012 (gcc)
*************** Allow full Ada 2005 features (same as @e
*** 8914,8920 ****
  
  @item @code{-gnat2012}
  
! Allow full Ada 2012 features (same as @emph{-gnat12})
  
  @item @code{-gnat83}
  
--- 9003,9009 ----
  
  @item @code{-gnat2012}
  
! Allow full Ada 2012 features (same as @code{-gnat12})
  
  @item @code{-gnat83}
  
*************** Enforce Ada 83 restrictions.
*** 8931,8940 ****
  Enforce Ada 95 restrictions.
  
  Note: for compatibility with some Ada 95 compilers which support only
! the @cite{overriding} keyword of Ada 2005, the @emph{-gnatd.D} switch can
! be used along with @emph{-gnat95} to achieve a similar effect with GNAT.
  
! @emph{-gnatd.D} instructs GNAT to consider @cite{overriding} as a keyword
  and handle its associated semantic checks, even in Ada 95 mode.
  @end table
  
--- 9020,9029 ----
  Enforce Ada 95 restrictions.
  
  Note: for compatibility with some Ada 95 compilers which support only
! the @code{overriding} keyword of Ada 2005, the @code{-gnatd.D} switch can
! be used along with @code{-gnat95} to achieve a similar effect with GNAT.
  
! @code{-gnatd.D} instructs GNAT to consider @code{overriding} as a keyword
  and handle its associated semantic checks, even in Ada 95 mode.
  @end table
  
*************** and handle its associated semantic check
*** 8945,8956 ****
  
  @item @code{-gnata}
  
! Assertions enabled. @cite{Pragma Assert} and @cite{pragma Debug} to be
  activated. Note that these pragmas can also be controlled using the
! configuration pragmas @cite{Assertion_Policy} and @cite{Debug_Policy}.
! It also activates pragmas @cite{Check}, @cite{Precondition}, and
! @cite{Postcondition}. Note that these pragmas can also be controlled
! using the configuration pragma @cite{Check_Policy}. In Ada 2012, it
  also activates all assertions defined in the RM as aspects: preconditions,
  postconditions, type invariants and (sub)type predicates. In all Ada modes,
  corresponding pragmas for type invariants and (sub)type predicates are
--- 9034,9045 ----
  
  @item @code{-gnata}
  
! Assertions enabled. @code{Pragma Assert} and @code{pragma Debug} to be
  activated. Note that these pragmas can also be controlled using the
! configuration pragmas @code{Assertion_Policy} and @code{Debug_Policy}.
! It also activates pragmas @code{Check}, @code{Precondition}, and
! @code{Postcondition}. Note that these pragmas can also be controlled
! using the configuration pragma @code{Check_Policy}. In Ada 2012, it
  also activates all assertions defined in the RM as aspects: preconditions,
  postconditions, type invariants and (sub)type predicates. In all Ada modes,
  corresponding pragmas for type invariants and (sub)type predicates are
*************** Assume no invalid (bad) values except fo
*** 9000,9011 ****
  @item @code{-gnatc}
  
  Check syntax and semantics only (no code generation attempted). When the
! compiler is invoked by @emph{gnatmake}, if the switch @emph{-gnatc} is
! only given to the compiler (after @emph{-cargs} or in package Compiler of
! the project file, @emph{gnatmake} will fail because it will not find the
! object file after compilation. If @emph{gnatmake} is called with
! @emph{-gnatc} as a builder switch (before @emph{-cargs} or in package
! Builder of the project file) then @emph{gnatmake} will not fail because
  it will not look for the object files after compilation, and it will not try
  to build and link.
  @end table
--- 9089,9100 ----
  @item @code{-gnatc}
  
  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
  it will not look for the object files after compilation, and it will not try
  to build and link.
  @end table
*************** as -gnatn, and enable others such as -gn
*** 9032,9038 ****
  @item @code{-gnatd}
  
  Specify debug options for the compiler. The string of characters after
! the @emph{-gnatd} specify the specific debug options. The possible
  characters are 0-9, a-z, A-Z, optionally preceded by a dot. See
  compiler source file @code{debug.adb} for details of the implemented
  debug options. Certain debug options are relevant to applications
--- 9121,9127 ----
  @item @code{-gnatd}
  
  Specify debug options for the compiler. The string of characters after
! the @code{-gnatd} specify the specific debug options. The possible
  characters are 0-9, a-z, A-Z, optionally preceded by a dot. See
  compiler source file @code{debug.adb} for details of the implemented
  debug options. Certain debug options are relevant to applications
*************** users guide.
*** 9049,9055 ****
  
  Create expanded source files for source level debugging. This switch
  also suppresses generation of cross-reference information
! (see @emph{-gnatx}). Note that this switch is not allowed if a previous
  -gnatR switch has been given, since these two switches are not compatible.
  @end table
  
--- 9138,9144 ----
  
  Create expanded source files for source level debugging. This switch
  also suppresses generation of cross-reference information
! (see @code{-gnatx}). Note that this switch is not allowed if a previous
  -gnatR switch has been given, since these two switches are not compatible.
  @end table
  
*************** Detect_Aliasing (Obj, Obj);
*** 9086,9096 ****
  Detect_Aliasing (Obj, Self (Obj));
  @end example
  
! In the example above, the first call to @cite{Detect_Aliasing} fails with a
! @cite{Program_Error} at runtime because the actuals for @cite{Val_1} and
! @cite{Val_2} denote the same object. The second call executes without raising
! an exception because @cite{Self(Obj)} produces an anonymous object which does
! not share the memory location of @cite{Obj}.
  @end table
  
  @geindex -gnatec (gcc)
--- 9175,9185 ----
  Detect_Aliasing (Obj, Self (Obj));
  @end example
  
! In the example above, the first call to @code{Detect_Aliasing} fails with a
! @code{Program_Error} at runtime because the actuals for @code{Val_1} and
! @code{Val_2} denote the same object. The second call executes without raising
! an exception because @code{Self(Obj)} produces an anonymous object which does
! not share the memory location of @code{Obj}.
  @end table
  
  @geindex -gnatec (gcc)
*************** Specify a configuration pragma file
*** 9113,9119 ****
  @item @code{-gnateC}
  
  Generate CodePeer messages in a compiler-like format. This switch is only
! effective if @emph{-gnatcC} is also specified and requires an installation
  of CodePeer.
  @end table
  
--- 9202,9208 ----
  @item @code{-gnateC}
  
  Generate CodePeer messages in a compiler-like format. This switch is only
! effective if @code{-gnatcC} is also specified and requires an installation
  of CodePeer.
  @end table
  
*************** Disable atomic synchronization
*** 9134,9140 ****
  
  @item @code{-gnateDsymbol[=@emph{value}]}
  
! Defines a symbol, associated with @cite{value}, for preprocessing.
  (@ref{18,,Integrated Preprocessing}).
  @end table
  
--- 9223,9229 ----
  
  @item @code{-gnateDsymbol[=@emph{value}]}
  
! Defines a symbol, associated with @code{value}, for preprocessing.
  (@ref{18,,Integrated Preprocessing}).
  @end table
  
*************** Display full source path name in brief e
*** 9172,9178 ****
  
  Check for overflow on all floating-point operations, including those
  for unconstrained predefined types. See description of pragma
! @cite{Check_Float_Overflow} in GNAT RM.
  @end table
  
  @geindex -gnateg (gcc)
--- 9261,9267 ----
  
  Check for overflow on all floating-point operations, including those
  for unconstrained predefined types. See description of pragma
! @code{Check_Float_Overflow} in GNAT RM.
  @end table
  
  @geindex -gnateg (gcc)
*************** for unconstrained predefined types. See
*** 9182,9189 ****
  
  @quotation
  
! The @cite{-gnatc} switch must always be specified before this switch, e.g.
! @cite{-gnatceg}. Generate a C header from the Ada input file. See
  @ref{ca,,Generating C Headers for Ada Specifications} for more
  information.
  @end quotation
--- 9271,9278 ----
  
  @quotation
  
! The @code{-gnatc} switch must always be specified before this switch, e.g.
! @code{-gnatceg}. Generate a C header from the Ada input file. See
  @ref{ca,,Generating C Headers for Ada Specifications} for more
  information.
  @end quotation
*************** Save result of preprocessing in a text f
*** 9206,9212 ****
  @item @code{-gnatei@emph{nnn}}
  
  Set maximum number of instantiations during compilation of a single unit to
! @cite{nnn}. This may be useful in increasing the default maximum of 8000 for
  the rare case when a single unit legitimately exceeds this limit.
  @end table
  
--- 9295,9301 ----
  @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
  the rare case when a single unit legitimately exceeds this limit.
  @end table
  
*************** the rare case when a single unit legitim
*** 9218,9224 ****
  @item @code{-gnateI@emph{nnn}}
  
  Indicates that the source is a multi-unit source and that the index of the
! unit to compile is @cite{nnn}. @cite{nnn} needs to be a positive number and need
  to be a valid index in the multi-unit source.
  @end table
  
--- 9307,9313 ----
  @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
  to be a valid index in the multi-unit source.
  @end table
  
*************** to be a valid index in the multi-unit so
*** 9231,9237 ****
  
  This switch can be used with the static elaboration model to issue info
  messages showing
! where implicit @cite{pragma Elaborate} and @cite{pragma Elaborate_All}
  are generated. This is useful in diagnosing elaboration circularities
  caused by these implicit pragmas when using the static elaboration
  model. See See the section in this guide on elaboration checking for
--- 9320,9326 ----
  
  This switch can be used with the static elaboration model to issue info
  messages showing
! where implicit @code{pragma Elaborate} and @code{pragma Elaborate_All}
  are generated. This is useful in diagnosing elaboration circularities
  caused by these implicit pragmas when using the static elaboration
  model. See See the section in this guide on elaboration checking for
*************** temporary use of special test software.
*** 9295,9301 ****
  
  @item @code{-gnateS}
  
! Synonym of @emph{-fdump-scos}, kept for backwards compatibility.
  @end table
  
  @geindex -gnatet=file (gcc)
--- 9384,9390 ----
  
  @item @code{-gnateS}
  
! Synonym of @code{-fdump-scos}, kept for backwards compatibility.
  @end table
  
  @geindex -gnatet=file (gcc)
*************** Synonym of @emph{-fdump-scos}, kept for
*** 9306,9312 ****
  @item @code{-gnatet=@emph{path}}
  
  Generate target dependent information. The format of the output file is
! described in the section about switch @emph{-gnateT}.
  @end table
  
  @geindex -gnateT (gcc)
--- 9395,9401 ----
  @item @code{-gnatet=@emph{path}}
  
  Generate target dependent information. The format of the output file is
! described in the section about switch @code{-gnateT}.
  @end table
  
  @geindex -gnateT (gcc)
*************** semantic analysis of programs that will
*** 9324,9330 ****
  the machine on which the tool is run.
  
  The following target dependent values should be defined,
! where @cite{Nat} denotes a natural integer value, @cite{Pos} denotes a
  positive integer value, and fields marked with a question mark are
  boolean fields, where a value of 0 is False, and a value of 1 is True:
  
--- 9413,9419 ----
  the machine on which the tool is run.
  
  The following target dependent values should be defined,
! where @code{Nat} denotes a natural integer value, @code{Pos} denotes a
  positive integer value, and fields marked with a question mark are
  boolean fields, where a value of 0 is False, and a value of 1 is True:
  
*************** the variables defined above, with one li
*** 9361,9368 ****
  name  value
  @end example
  
! where @cite{name} is the name of the parameter, spelled out in full,
! and cased as in the above list, and @cite{value} is an unsigned decimal
  integer. Two or more blanks separates the name from the value.
  
  All the variables must be present, in alphabetical order (i.e. the
--- 9450,9457 ----
  name  value
  @end example
  
! where @code{name} is the name of the parameter, spelled out in full,
! and cased as in the above list, and @code{value} is an unsigned decimal
  integer. Two or more blanks separates the name from the value.
  
  All the variables must be present, in alphabetical order (i.e. the
*************** one line per registered mode:
*** 9376,9386 ****
  name  digs float_rep size alignment
  @end example
  
! where @cite{name} is the string name of the type (which can have
! single spaces embedded in the name (e.g. long double), @cite{digs} is
! the number of digits for the floating-point type, @cite{float_rep} is
  the float representation (I/V/A for IEEE-754-Binary, Vax_Native,
! AAMP), @cite{size} is the size in bits, @cite{alignment} is the
  alignment in bits. The name is followed by at least two blanks, fields
  are separated by at least one blank, and a LF character immediately
  follows the alignment field.
--- 9465,9475 ----
  name  digs float_rep size alignment
  @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/V/A for IEEE-754-Binary, Vax_Native,
! AAMP), @code{size} is the size in bits, @code{alignment} is the
  alignment in bits. The name is followed by at least two blanks, fields
  are separated by at least one blank, and a LF character immediately
  follows the alignment field.
*************** Externals names are folded to all upperc
*** 9497,9505 ****
  Internal GNAT implementation mode. This should not be used for
  applications programs, it is intended only for use by the compiler
  and its run-time library. For documentation, see the GNAT sources.
! Note that @emph{-gnatg} implies
! @emph{-gnatw.ge} and
! @emph{-gnatyg}
  so that all standard warnings and all standard style options are turned on.
  All warnings and style messages are treated as errors.
  @end table
--- 9586,9594 ----
  Internal GNAT implementation mode. This should not be used for
  applications programs, it is intended only for use by the compiler
  and its run-time library. For documentation, see the GNAT sources.
! Note that @code{-gnatg} implies
! @code{-gnatw.ge} and
! @code{-gnatyg}
  so that all standard warnings and all standard style options are turned on.
  All warnings and style messages are treated as errors.
  @end table
*************** Output usage information. The output is
*** 9531,9538 ****
  
  @item @code{-gnati@emph{c}}
  
! Identifier character set (@cite{c} = 1/2/3/4/8/9/p/f/n/w).
! For details of the possible selections for @cite{c},
  see @ref{48,,Character Set Control}.
  @end table
  
--- 9620,9627 ----
  
  @item @code{-gnati@emph{c}}
  
! Identifier character set (@code{c} = 1/2/3/4/8/9/p/f/n/w).
! For details of the possible selections for @code{c},
  see @ref{48,,Character Set Control}.
  @end table
  
*************** for use with ASIS). The representation c
*** 9551,9562 ****
  are: enumeration_representation_clause, record_representation_clause,
  and attribute_definition_clause for the following attributes:
  Address, Alignment, Bit_Order, Component_Size, Machine_Radix,
! Object_Size, Size, Small, Stream_Size, and Value_Size.
  Note that this option should be used only for compiling -- the
  code is likely to malfunction at run time.
  
! Note that when @cite{-gnatct} is used to generate trees for input
! into @cite{ASIS} tools, these representation clauses are removed
  from the tree and ignored. This means that the tool will not see them.
  @end table
  
--- 9640,9652 ----
  are: enumeration_representation_clause, record_representation_clause,
  and attribute_definition_clause for the following attributes:
  Address, Alignment, Bit_Order, Component_Size, Machine_Radix,
! Object_Size, Scalar_Storage_Order, Size, Small, Stream_Size,
! and Value_Size. Pragma Default_Scalar_Storage_Order is also ignored.
  Note that this option should be used only for compiling -- the
  code is likely to malfunction at run time.
  
! Note that when @code{-gnatct} is used to generate trees for input
! into ASIS tools, these representation clauses are removed
  from the tree and ignored. This means that the tool will not see them.
  @end table
  
*************** from the tree and ignored. This means th
*** 9567,9573 ****
  
  @item @code{-gnatj@emph{nn}}
  
! Reformat error messages to fit on @cite{nn} character lines
  @end table
  
  @geindex -gnatk (gcc)
--- 9657,9663 ----
  
  @item @code{-gnatj@emph{nn}}
  
! Reformat error messages to fit on @code{nn} character lines
  @end table
  
  @geindex -gnatk (gcc)
*************** Reformat error messages to fit on @cite{
*** 9577,9583 ****
  
  @item @code{-gnatk=@emph{n}}
  
! Limit file names to @cite{n} (1-999) characters (@cite{k} = krunch).
  @end table
  
  @geindex -gnatl (gcc)
--- 9667,9673 ----
  
  @item @code{-gnatk=@emph{n}}
  
! Limit file names to @code{n} (1-999) characters (@code{k} = krunch).
  @end table
  
  @geindex -gnatl (gcc)
*************** source output.
*** 9609,9616 ****
  
  @item @code{-gnatm=@emph{n}}
  
! Limit number of detected error or warning messages to @cite{n}
! where @cite{n} is in the range 1..999999. The default setting if
  no switch is given is 9999. If the number of warnings reaches this
  limit, then a message is output and further warnings are suppressed,
  but the compilation is continued. If the number of error messages
--- 9699,9706 ----
  
  @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
  no switch is given is 9999. If the number of warnings reaches this
  limit, then a message is output and further warnings are suppressed,
  but the compilation is continued. If the number of error messages
*************** means that no limit applies.
*** 9626,9632 ****
  
  @item @code{-gnatn[12]}
  
! Activate inlining across modules for subprograms for which pragma @cite{Inline}
  is specified. This inlining is performed by the GCC back-end. An optional
  digit sets the inlining level: 1 for moderate inlining across modules
  or 2 for full inlining across modules. If no inlining level is specified,
--- 9716,9722 ----
  
  @item @code{-gnatn[12]}
  
! Activate inlining across modules for subprograms for which pragma @code{Inline}
  is specified. This inlining is performed by the GCC back-end. An optional
  digit sets the inlining level: 1 for moderate inlining across modules
  or 2 for full inlining across modules. If no inlining level is specified,
*************** the compiler will pick it based on the o
*** 9641,9653 ****
  @item @code{-gnatN}
  
  Activate front end inlining for subprograms for which
! pragma @cite{Inline} is specified. This inlining is performed
  by the front end and will be visible in the
! @emph{-gnatG} output.
  
  When using a gcc-based back end (in practice this means using any version
  of GNAT other than the JGNAT, .NET or GNAAMP versions), then the use of
! @emph{-gnatN} is deprecated, and the use of @emph{-gnatn} is preferred.
  Historically front end inlining was more extensive than the gcc back end
  inlining, but that is no longer the case.
  @end table
--- 9731,9743 ----
  @item @code{-gnatN}
  
  Activate front end inlining for subprograms for which
! pragma @code{Inline} is specified. This inlining is performed
  by the front end and will be visible in the
! @code{-gnatG} output.
  
  When using a gcc-based back end (in practice this means using any version
  of GNAT other than the JGNAT, .NET or GNAAMP versions), then the use of
! @code{-gnatN} is deprecated, and the use of @code{-gnatn} is preferred.
  Historically front end inlining was more extensive than the gcc back end
  inlining, but that is no longer the case.
  @end table
*************** inlining, but that is no longer the case
*** 9662,9668 ****
  Suppresses overflow checking. This causes the behavior of the compiler to
  match the default for older versions where overflow checking was suppressed
  by default. This is equivalent to having
! @cite{pragma Suppress (Overflow_Mode)} in a configuration pragma file.
  @end table
  
  @geindex -gnato?? (gcc)
--- 9752,9758 ----
  Suppresses overflow checking. This causes the behavior of the compiler to
  match the default for older versions where overflow checking was suppressed
  by default. This is equivalent to having
! @code{pragma Suppress (Overflow_Check)} in a configuration pragma file.
  @end table
  
  @geindex -gnato?? (gcc)
*************** by default. This is equivalent to having
*** 9673,9684 ****
  @item @code{-gnato??}
  
  Set default mode for handling generation of code to avoid intermediate
! arithmetic overflow. Here @cite{??} is two digits, a
! single digit, or nothing. Each digit is one of the digits @cite{1}
! through @cite{3}:
  
  
! @multitable {xxxxxxx} {xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx} 
  @item
  
  Digit
--- 9763,9774 ----
  @item @code{-gnato??}
  
  Set default mode for handling generation of code to avoid intermediate
! arithmetic overflow. Here @code{??} is two digits, a
! single digit, or nothing. Each digit is one of the digits @code{1}
! through @code{3}:
  
  
! @multitable {xxxxxxx} {xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx} 
  @item
  
  Digit
*************** Interpretation
*** 9693,9699 ****
  
  @tab
  
! All intermediate overflows checked against base type (@cite{STRICT})
  
  @item
  
--- 9783,9789 ----
  
  @tab
  
! All intermediate overflows checked against base type (@code{STRICT})
  
  @item
  
*************** All intermediate overflows checked again
*** 9701,9707 ****
  
  @tab
  
! Minimize intermediate overflows (@cite{MINIMIZED})
  
  @item
  
--- 9791,9797 ----
  
  @tab
  
! Minimize intermediate overflows (@code{MINIMIZED})
  
  @item
  
*************** Minimize intermediate overflows (@cite{M
*** 9709,9715 ****
  
  @tab
  
! Eliminate intermediate overflows (@cite{ELIMINATED})
  
  @end multitable
  
--- 9799,9805 ----
  
  @tab
  
! Eliminate intermediate overflows (@code{ELIMINATED})
  
  @end multitable
  
*************** cases; if two digits are given, then the
*** 9719,9734 ****
  assertions, pre/postconditions, and type invariants, and the second
  applies within assertions, pre/postconditions, and type invariants.
  
! If no digits follow the @emph{-gnato}, then it is equivalent to
! @emph{-gnato11},
  causing all intermediate overflows to be handled in strict
  mode.
  
  This switch also causes arithmetic overflow checking to be performed
! (as though @cite{pragma Unsuppress (Overflow_Mode)} had been specified).
  
! The default if no option @emph{-gnato} is given is that overflow handling
! is in @cite{STRICT} mode (computations done using the base type), and that
  overflow checking is enabled.
  
  Note that division by zero is a separate check that is not
--- 9809,9824 ----
  assertions, pre/postconditions, and type invariants, and the second
  applies within assertions, pre/postconditions, and type invariants.
  
! If no digits follow the @code{-gnato}, then it is equivalent to
! @code{-gnato11},
  causing all intermediate overflows to be handled in strict
  mode.
  
  This switch also causes arithmetic overflow checking to be performed
! (as though @code{pragma Unsuppress (Overflow_Check)} had been specified).
  
! The default if no option @code{-gnato} is given is that overflow handling
! is in @code{STRICT} mode (computations done using the base type), and that
  overflow checking is enabled.
  
  Note that division by zero is a separate check that is not
*************** See also @ref{f8,,Specifying the Desired
*** 9745,9751 ****
  @item @code{-gnatp}
  
  Suppress all checks. See @ref{f9,,Run-Time Checks} for details. This switch
! has no effect if cancelled by a subsequent @emph{-gnat-p} switch.
  @end table
  
  @geindex -gnat-p (gcc)
--- 9835,9841 ----
  @item @code{-gnatp}
  
  Suppress all checks. See @ref{f9,,Run-Time Checks} for details. This switch
! has no effect if cancelled by a subsequent @code{-gnat-p} switch.
  @end table
  
  @geindex -gnat-p (gcc)
*************** has no effect if cancelled by a subseque
*** 9755,9761 ****
  
  @item @code{-gnat-p}
  
! Cancel effect of previous @emph{-gnatp} switch.
  @end table
  
  @geindex -gnatP (gcc)
--- 9845,9851 ----
  
  @item @code{-gnat-p}
  
! Cancel effect of previous @code{-gnatp} switch.
  @end table
  
  @geindex -gnatP (gcc)
*************** Cancel effect of previous @emph{-gnatp}
*** 9767,9773 ****
  
  Enable polling. This is required on some systems (notably Windows NT) to
  obtain asynchronous abort and asynchronous transfer of control capability.
! See @cite{Pragma_Polling} in the @cite{GNAT_Reference_Manual} for full
  details.
  @end table
  
--- 9857,9863 ----
  
  Enable polling. This is required on some systems (notably Windows NT) to
  obtain asynchronous abort and asynchronous transfer of control capability.
! See @code{Pragma_Polling} in the @cite{GNAT_Reference_Manual} for full
  details.
  @end table
  
*************** Don't quit. Try semantics, even if parse
*** 9790,9796 ****
  
  Don't quit. Generate @code{ALI} and tree files even if illegalities.
  Note that code generation is still suppressed in the presence of any
! errors, so even with @emph{-gnatQ} no object file is generated.
  @end table
  
  @geindex -gnatr (gcc)
--- 9880,9886 ----
  
  Don't quit. Generate @code{ALI} and tree files even if illegalities.
  Note that code generation is still suppressed in the presence of any
! errors, so even with @code{-gnatQ} no object file is generated.
  @end table
  
  @geindex -gnatr (gcc)
*************** Treat pragma Restrictions as Restriction
*** 9808,9822 ****
  
  @table @asis
  
! @item @code{-gnatR[0/1/2/3[s]]}
! 
! Output representation information for declared types and objects.
! Note that this switch is not allowed if a previous @cite{-gnatD} switch has
! been given, since these two switches are not compatible.
! 
! @item @code{-gnatRm[s]}
  
! Output convention and parameter passing mechanisms for all subprograms.
  @end table
  
  @geindex -gnats (gcc)
--- 9898,9909 ----
  
  @table @asis
  
! @item @code{-gnatR[0/1/2/3][e][m][s]}
  
! Output representation information for declared types, objects and
! subprograms. Note that this switch is not allowed if a previous
! @code{-gnatD} switch has been given, since these two switches
! are not compatible.
  @end table
  
  @geindex -gnats (gcc)
*************** Generate tree output file.
*** 9856,9862 ****
  
  @item @code{-gnatT@emph{nnn}}
  
! All compiler tables start at @cite{nnn} times usual starting size.
  @end table
  
  @geindex -gnatu (gcc)
--- 9943,9949 ----
  
  @item @code{-gnatT@emph{nnn}}
  
! All compiler tables start at @code{nnn} times usual starting size.
  @end table
  
  @geindex -gnatu (gcc)
*************** Control level of validity checking (@ref
*** 9907,9913 ****
  @item @code{-gnatw@emph{xxx}}
  
  Warning mode where
! @cite{xxx} is a string of option letters that denotes
  the exact warnings that
  are enabled or disabled (@ref{fa,,Warning Message Control}).
  @end table
--- 9994,10000 ----
  @item @code{-gnatw@emph{xxx}}
  
  Warning mode where
! @code{xxx} is a string of option letters that denotes
  the exact warnings that
  are enabled or disabled (@ref{fa,,Warning Message Control}).
  @end table
*************** are enabled or disabled (@ref{fa,,Warnin
*** 9920,9926 ****
  @item @code{-gnatW@emph{e}}
  
  Wide character encoding method
! (@cite{e}=n/h/u/s/e/8).
  @end table
  
  @geindex -gnatx (gcc)
--- 10007,10013 ----
  @item @code{-gnatW@emph{e}}
  
  Wide character encoding method
! (@code{e}=n/h/u/s/e/8).
  @end table
  
  @geindex -gnatx (gcc)
*************** Enable built-in style checks (@ref{fb,,S
*** 9961,9967 ****
  @item @code{-gnatz@emph{m}}
  
  Distribution stub generation and compilation
! (@cite{m}=r/c for receiver/caller stubs).
  @end table
  
  @geindex -I (gcc)
--- 10048,10054 ----
  @item @code{-gnatz@emph{m}}
  
  Distribution stub generation and compilation
! (@code{m}=r/c for receiver/caller stubs).
  @end table
  
  @geindex -I (gcc)
*************** Distribution stub generation and compila
*** 9973,9979 ****
  
  @geindex RTL
  
! Direct GNAT to search the @cite{dir} directory for source files needed by
  the current compilation
  (see @ref{89,,Search Paths and the Run-Time Library (RTL)}).
  @end table
--- 10060,10066 ----
  
  @geindex RTL
  
! Direct GNAT to search the @code{dir} directory for source files needed by
  the current compilation
  (see @ref{89,,Search Paths and the Run-Time Library (RTL)}).
  @end table
*************** files in the directory containing the so
*** 9999,10005 ****
  
  @item @code{-o @emph{file}}
  
! This switch is used in @emph{gcc} to redirect the generated object file
  and its associated ALI file. Beware of this switch with GNAT, because it may
  cause the object file and ALI file to have different names which in turn
  may confuse the binder and the linker.
--- 10086,10092 ----
  
  @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
  cause the object file and ALI file to have different names which in turn
  may confuse the binder and the linker.
*************** Library (RTL) ALI files.
*** 10034,10043 ****
  
  @item @code{-O[@emph{n}]}
  
! @cite{n} controls the optimization level:
  
  
! @multitable {xxxxxxxxx} {xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx} 
  @item
  
  @emph{n}
--- 10121,10130 ----
  
  @item @code{-O[@emph{n}]}
  
! @code{n} controls the optimization level:
  
  
! @multitable {xxxxxxxxx} {xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx} 
  @item
  
  @emph{n}
*************** Effect
*** 10052,10058 ****
  
  @tab
  
! No optimization, the default setting if no @emph{-O} appears
  
  @item
  
--- 10139,10145 ----
  
  @tab
  
! No optimization, the default setting if no @code{-O} appears
  
  @item
  
*************** No optimization, the default setting if
*** 10060,10066 ****
  
  @tab
  
! Normal optimization, the default if you specify @emph{-O} without an
  operand. A good compromise between code quality and compilation
  time.
  
--- 10147,10153 ----
  
  @tab
  
! Normal optimization, the default if you specify @code{-O} without an
  operand. A good compromise between code quality and compilation
  time.
  
*************** the cost of substantially increased comp
*** 10079,10085 ****
  
  @tab
  
! Same as @emph{-O2}, and also includes inline expansion for small
  subprograms in the same unit.
  
  @item
--- 10166,10172 ----
  
  @tab
  
! Same as @code{-O2}, and also includes inline expansion for small
  subprograms in the same unit.
  
  @item
*************** exit status.
*** 10115,10121 ****
  @item @code{--RTS=@emph{rts-path}}
  
  Specifies the default location of the runtime library. Same meaning as the
! equivalent @emph{gnatmake} flag (@ref{dc,,Switches for gnatmake}).
  @end table
  
  @geindex -S (gcc)
--- 10202,10208 ----
  @item @code{--RTS=@emph{rts-path}}
  
  Specifies the default location of the runtime library. Same meaning as the
! equivalent @code{gnatmake} flag (@ref{dc,,Switches for gnatmake}).
  @end table
  
  @geindex -S (gcc)
*************** equivalent @emph{gnatmake} flag (@ref{dc
*** 10125,10131 ****
  
  @item @code{-S}
  
! Used in place of @emph{-c} to
  cause the assembler source file to be
  generated, using @code{.s} as the extension,
  instead of the object file.
--- 10212,10218 ----
  
  @item @code{-S}
  
! Used in place of @code{-c} to
  cause the assembler source file to be
  generated, using @code{.s} as the extension,
  instead of the object file.
*************** This may be useful if you need to examin
*** 10139,10145 ****
  
  @item @code{-fverbose-asm}
  
! Used in conjunction with @emph{-S}
  to cause the generated assembly code file to be annotated with variable
  names, making it significantly easier to follow.
  @end table
--- 10226,10232 ----
  
  @item @code{-fverbose-asm}
  
! Used in conjunction with @code{-S}
  to cause the generated assembly code file to be annotated with variable
  names, making it significantly easier to follow.
  @end table
*************** names, making it significantly easier to
*** 10151,10157 ****
  
  @item @code{-v}
  
! Show commands generated by the @emph{gcc} driver. Normally used only for
  debugging purposes or if you need to be sure what version of the
  compiler you are executing.
  @end table
--- 10238,10244 ----
  
  @item @code{-v}
  
! Show commands generated by the @code{gcc} driver. Normally used only for
  debugging purposes or if you need to be sure what version of the
  compiler you are executing.
  @end table
*************** compiler you are executing.
*** 10163,10169 ****
  
  @item @code{-V @emph{ver}}
  
! Execute @cite{ver} version of the compiler. This is the @emph{gcc}
  version, not the GNAT version.
  @end table
  
--- 10250,10256 ----
  
  @item @code{-V @emph{ver}}
  
! Execute @code{ver} version of the compiler. This is the @code{gcc}
  version, not the GNAT version.
  @end table
  
*************** version, not the GNAT version.
*** 10176,10182 ****
  
  Turn off warnings generated by the back end of the compiler. Use of
  this switch also causes the default for front end warnings to be set
! to suppress (as though @emph{-gnatws} had appeared at the start of
  the options).
  @end table
  
--- 10263,10269 ----
  
  Turn off warnings generated by the back end of the compiler. Use of
  this switch also causes the default for front end warnings to be set
! to suppress (as though @code{-gnatws} had appeared at the start of
  the options).
  @end table
  
*************** in this manner:
*** 10208,10245 ****
  @itemize *
  
  @item 
! The switch @emph{-gnatc} if combined with other switches must come
  first in the string.
  
  @item 
! The switch @emph{-gnats} if combined with other switches must come
  first in the string.
  
  @item 
  The switches
! @emph{-gnatzc} and @emph{-gnatzr} may not be combined with any other
  switches, and only one of them may appear in the command line.
  
  @item 
! The switch @emph{-gnat-p} may not be combined with any other switch.
  
  @item 
! Once a 'y' appears in the string (that is a use of the @emph{-gnaty}
  switch), then all further characters in the switch are interpreted
! as style modifiers (see description of @emph{-gnaty}).
  
  @item 
! Once a 'd' appears in the string (that is a use of the @emph{-gnatd}
  switch), then all further characters in the switch are interpreted
! as debug flags (see description of @emph{-gnatd}).
  
  @item 
! Once a 'w' appears in the string (that is a use of the @emph{-gnatw}
  switch), then all further characters in the switch are interpreted
! as warning mode modifiers (see description of @emph{-gnatw}).
  
  @item 
! Once a 'V' appears in the string (that is a use of the @emph{-gnatV}
  switch), then all further characters in the switch are interpreted
  as validity checking options (@ref{f6,,Validity Checking}).
  
--- 10295,10332 ----
  @itemize *
  
  @item 
! The switch @code{-gnatc} if combined with other switches must come
  first in the string.
  
  @item 
! The switch @code{-gnats} if combined with other switches must come
  first in the string.
  
  @item 
  The switches
! @code{-gnatzc} and @code{-gnatzr} may not be combined with any other
  switches, and only one of them may appear in the command line.
  
  @item 
! The switch @code{-gnat-p} may not be combined with any other switch.
  
  @item 
! Once a 'y' appears in the string (that is a use of the @code{-gnaty}
  switch), then all further characters in the switch are interpreted
! as style modifiers (see description of @code{-gnaty}).
  
  @item 
! Once a 'd' appears in the string (that is a use of the @code{-gnatd}
  switch), then all further characters in the switch are interpreted
! as debug flags (see description of @code{-gnatd}).
  
  @item 
! Once a 'w' appears in the string (that is a use of the @code{-gnatw}
  switch), then all further characters in the switch are interpreted
! as warning mode modifiers (see description of @code{-gnatw}).
  
  @item 
! Once a 'V' appears in the string (that is a use of the @code{-gnatV}
  switch), then all further characters in the switch are interpreted
  as validity checking options (@ref{f6,,Validity Checking}).
  
*************** e.adb:4:20: ";" should be "is"
*** 10266,10272 ****
  
  The first integer after the file name is the line number in the file,
  and the second integer is the column number within the line.
! @cite{GPS} can parse the error messages
  and point to the referenced character.
  The following switches provide control over the error message
  format:
--- 10353,10359 ----
  
  The first integer after the file name is the line number in the file,
  and the second integer is the column number within the line.
! @code{GPS} can parse the error messages
  and point to the referenced character.
  The following switches provide control over the error message
  format:
*************** format:
*** 10278,10288 ****
  
  @item @code{-gnatv}
  
! The @cite{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
! @emph{-gnatv} switch would generate:
  
  @example
  3. funcion X (Q : Integer)
--- 10365,10375 ----
  
  @item @code{-gnatv}
  
! 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:
  
  @example
  3. funcion X (Q : Integer)
*************** used the only source lines output are th
*** 10305,10311 ****
  
  @item @code{-gnatl}
  
! The @cite{l} stands for list.
  This switch causes a full listing of
  the file to be generated. In the case where a body is
  compiled, the corresponding spec is also listed, along
--- 10392,10398 ----
  
  @item @code{-gnatl}
  
! The @code{l} stands for list.
  This switch causes a full listing of
  the file to be generated. In the case where a body is
  compiled, the corresponding spec is also listed, along
*************** Compiling: p-a.adb
*** 10349,10355 ****
       5. end;
  @end example
  
! When you specify the @emph{-gnatv} or @emph{-gnatl} switches and
  standard output is redirected, a brief summary is written to
  @code{stderr} (standard error) giving the number of error messages and
  warning messages generated.
--- 10436,10442 ----
       5. end;
  @end example
  
! When you specify the @code{-gnatv} or @code{-gnatl} switches and
  standard output is redirected, a brief summary is written to
  @code{stderr} (standard error) giving the number of error messages and
  warning messages generated.
*************** warning messages generated.
*** 10362,10373 ****
  
  @item @code{-gnatl=@emph{fname}}
  
! This has the same effect as @emph{-gnatl} except that the output is
  written to a file instead of to standard output. If the given name
  @code{fname} does not start with a period, then it is the full name
  of the file to be written. If @code{fname} is an extension, it is
  appended to the name of the file being compiled. For example, if
! file @code{xyz.adb} is compiled with @emph{-gnatl=.lst},
  then the output is written to file xyz.adb.lst.
  @end table
  
--- 10449,10460 ----
  
  @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
  @code{fname} does not start with a period, then it is the full name
  of the file to be written. If @code{fname} is an extension, it is
  appended to the name of the file being compiled. For example, if
! file @code{xyz.adb} is compiled with @code{-gnatl=.lst},
  then the output is written to file xyz.adb.lst.
  @end table
  
*************** of error messages.
*** 10391,10397 ****
  
  @item @code{-gnatb}
  
! The @cite{b} stands for brief.
  This switch causes GNAT to generate the
  brief format error messages to @code{stderr} (the standard error
  file) as well as the verbose
--- 10478,10484 ----
  
  @item @code{-gnatb}
  
! The @code{b} stands for brief.
  This switch causes GNAT to generate the
  brief format error messages to @code{stderr} (the standard error
  file) as well as the verbose
*************** format message or full listing (which as
*** 10406,10416 ****
  
  @item @code{-gnatm=@emph{n}}
  
! The @cite{m} stands for maximum.
! @cite{n} is a decimal integer in the
  range of 1 to 999999 and limits the number of error or warning
  messages to be generated. For example, using
! @emph{-gnatm2} might yield
  
  @example
  e.adb:3:04: Incorrect spelling of keyword "function"
--- 10493,10503 ----
  
  @item @code{-gnatm=@emph{n}}
  
! The @code{m} stands for maximum.
! @code{n} is a decimal integer in the
  range of 1 to 999999 and limits the number of error or warning
  messages to be generated. For example, using
! @code{-gnatm2} might yield
  
  @example
  e.adb:3:04: Incorrect spelling of keyword "function"
*************** reaches this limit, then a message is ou
*** 10427,10433 ****
  is abandoned. A value of zero means that no limit applies.
  
  Note that the equal sign is optional, so the switches
! @emph{-gnatm2} and @emph{-gnatm=2} are equivalent.
  @end table
  
  @geindex -gnatf (gcc)
--- 10514,10520 ----
  is abandoned. A value of zero means that no limit applies.
  
  Note that the equal sign is optional, so the switches
! @code{-gnatm2} and @code{-gnatm=2} are equivalent.
  @end table
  
  @geindex -gnatf (gcc)
*************** Note that the equal sign is optional, so
*** 10440,10446 ****
  @geindex Error messages
  @geindex suppressing
  
! The @cite{f} stands for full.
  Normally, the compiler suppresses error messages that are likely to be
  redundant. This switch causes all error
  messages to be generated. In particular, in the case of
--- 10527,10533 ----
  @geindex Error messages
  @geindex suppressing
  
! The @code{f} stands for full.
  Normally, the compiler suppresses error messages that are likely to be
  redundant. This switch causes all error
  messages to be generated. In particular, in the case of
*************** e.adb:7:07: "V" is undefined (more refer
*** 10452,10459 ****
  @end example
  
  where the parenthetical comment warns that there are additional
! references to the variable @cite{V}. Compiling the same program with the
! @emph{-gnatf} switch yields
  
  @example
  e.adb:7:07: "V" is undefined
--- 10539,10546 ----
  @end example
  
  where the parenthetical comment warns that there are additional
! references to the variable @code{V}. Compiling the same program with the
! @code{-gnatf} switch yields
  
  @example
  e.adb:7:07: "V" is undefined
*************** e.adb:9:07: "V" is undefined
*** 10464,10470 ****
  e.adb:9:12: "V" is undefined
  @end example
  
! The @emph{-gnatf} switch also generates additional information for
  some error messages.  Some examples are:
  
  
--- 10551,10557 ----
  e.adb:9:12: "V" is undefined
  @end example
  
! The @code{-gnatf} switch also generates additional information for
  some error messages.  Some examples are:
  
  
*************** Additional details on incorrect paramete
*** 10488,10499 ****
  
  @item @code{-gnatjnn}
  
! In normal operation mode (or if @emph{-gnatj0} is used), then error messages
  with continuation lines are treated as though the continuation lines were
  separate messages (and so a warning with two continuation lines counts as
  three warnings, and is listed as three separate messages).
  
! If the @emph{-gnatjnn} switch is used with a positive value for nn, then
  messages are output in a different manner. A message and all its continuation
  lines are treated as a unit, and count as only one warning or message in the
  statistics totals. Furthermore, the message is reformatted so that no line
--- 10575,10586 ----
  
  @item @code{-gnatjnn}
  
! In normal operation mode (or if @code{-gnatj0} is used), then error messages
  with continuation lines are treated as though the continuation lines were
  separate messages (and so a warning with two continuation lines counts as
  three warnings, and is listed as three separate messages).
  
! If the @code{-gnatjnn} switch is used with a positive value for nn, then
  messages are output in a different manner. A message and all its continuation
  lines are treated as a unit, and count as only one warning or message in the
  statistics totals. Furthermore, the message is reformatted so that no line
*************** is longer than nn characters.
*** 10507,10513 ****
  
  @item @code{-gnatq}
  
! The @cite{q} stands for quit (really 'don't quit').
  In normal operation mode, the compiler first parses the program and
  determines if there are any syntax errors. If there are, appropriate
  error messages are generated and compilation is immediately terminated.
--- 10594,10600 ----
  
  @item @code{-gnatq}
  
! The @code{q} stands for quit (really 'don't quit').
  In normal operation mode, the compiler first parses the program and
  determines if there are any syntax errors. If there are, appropriate
  error messages are generated and compilation is immediately terminated.
*************** internal fatal error when given a syntac
*** 10526,10554 ****
  @item @code{-gnatQ}
  
  In normal operation mode, the @code{ALI} file is not generated if any
! illegalities are detected in the program. The use of @emph{-gnatQ} forces
  generation of the @code{ALI} file. This file is marked as being in
  error, so it cannot be used for binding purposes, but it does contain
  reasonably complete cross-reference information, and thus may be useful
  for use by tools (e.g., semantic browsing tools or integrated development
  environments) that are driven from the @code{ALI} file. This switch
! implies @emph{-gnatq}, since the semantic phase must be run to get a
  meaningful ALI file.
  
! In addition, if @emph{-gnatt} is also specified, then the tree file is
  generated even if there are illegalities. It may be useful in this case
! to also specify @emph{-gnatq} to ensure that full semantic processing
  occurs. The resulting tree file can be processed by ASIS, for the purpose
  of providing partial information about illegal units, but if the error
  causes the tree to be badly malformed, then ASIS may crash during the
  analysis.
  
! When @emph{-gnatQ} is used and the generated @code{ALI} file is marked as
! being in error, @emph{gnatmake} will attempt to recompile the source when it
! finds such an @code{ALI} file, including with switch @emph{-gnatc}.
  
! Note that @emph{-gnatQ} has no effect if @emph{-gnats} is specified,
! since ALI files are never generated if @emph{-gnats} is set.
  @end table
  
  @node Warning Message Control,Debugging and Assertion Control,Output and Error Message Control,Compiler Switches
--- 10613,10641 ----
  @item @code{-gnatQ}
  
  In normal operation mode, the @code{ALI} file is not generated if any
! illegalities are detected in the program. The use of @code{-gnatQ} forces
  generation of the @code{ALI} file. This file is marked as being in
  error, so it cannot be used for binding purposes, but it does contain
  reasonably complete cross-reference information, and thus may be useful
  for use by tools (e.g., semantic browsing tools or integrated development
  environments) that are driven from the @code{ALI} file. This switch
! implies @code{-gnatq}, since the semantic phase must be run to get a
  meaningful ALI file.
  
! In addition, if @code{-gnatt} is also specified, then the tree file is
  generated even if there are illegalities. It may be useful in this case
! to also specify @code{-gnatq} to ensure that full semantic processing
  occurs. The resulting tree file can be processed by ASIS, for the purpose
  of providing partial information about illegal units, but if the error
  causes the tree to be badly malformed, then ASIS may crash during the
  analysis.
  
! When @code{-gnatQ} is used and the generated @code{ALI} file is marked as
! being in error, @code{gnatmake} will attempt to recompile the source when it
! finds such an @code{ALI} file, including with switch @code{-gnatc}.
  
! Note that @code{-gnatQ} has no effect if @code{-gnats} is specified,
! since ALI files are never generated if @code{-gnats} is set.
  @end table
  
  @node Warning Message Control,Debugging and Assertion Control,Output and Error Message Control,Compiler Switches
*************** GNAT considers a large number of situati
*** 10578,10584 ****
  for the generation of warning messages. As always, warnings are not
  definite indications of errors. For example, if you do an out-of-range
  assignment with the deliberate intention of raising a
! @cite{Constraint_Error} exception, then the warning that may be
  issued does not indicate an error. Some of the situations for which GNAT
  issues warnings (at least some of the time) are given in the following
  list. This list is not complete, and new warnings are often added to
--- 10665,10671 ----
  for the generation of warning messages. As always, warnings are not
  definite indications of errors. For example, if you do an out-of-range
  assignment with the deliberate intention of raising a
! @code{Constraint_Error} exception, then the warning that may be
  issued does not indicate an error. Some of the situations for which GNAT
  issues warnings (at least some of the time) are given in the following
  list. This list is not complete, and new warnings are often added to
*************** Variables that are never assigned a valu
*** 10623,10632 ****
  Variables that are referenced before being initialized
  
  @item 
! Task entries with no corresponding @cite{accept} statement
  
  @item 
! Duplicate accepts for the same task entry in a @cite{select}
  
  @item 
  Objects that take too much storage
--- 10710,10719 ----
  Variables that are referenced before being initialized
  
  @item 
! Task entries with no corresponding @code{accept} statement
  
  @item 
! Duplicate accepts for the same task entry in a @code{select}
  
  @item 
  Objects that take too much storage
*************** Objects that take too much storage
*** 10635,10641 ****
  Unchecked conversion between types of differing sizes
  
  @item 
! Missing @cite{return} statement along some execution path in a function
  
  @item 
  Incorrect (unrecognized) pragmas
--- 10722,10728 ----
  Unchecked conversion between types of differing sizes
  
  @item 
! Missing @code{return} statement along some execution path in a function
  
  @item 
  Incorrect (unrecognized) pragmas
*************** Violations of style rules if style check
*** 10677,10686 ****
  Unused @emph{with} clauses
  
  @item 
! @cite{Bit_Order} usage that does not have any effect
  
  @item 
! @cite{Standard.Duration} used to resolve universal fixed expression
  
  @item 
  Dereference of possibly null value
--- 10764,10773 ----
  Unused @emph{with} clauses
  
  @item 
! @code{Bit_Order} usage that does not have any effect
  
  @item 
! @code{Standard.Duration} used to resolve universal fixed expression
  
  @item 
  Dereference of possibly null value
*************** Values known to be out of range at compi
*** 10697,10703 ****
  @item 
  Unreferenced or unmodified variables. Note that a special
  exemption applies to variables which contain any of the substrings
! @cite{DISCARD@comma{} DUMMY@comma{} IGNORE@comma{} JUNK@comma{} UNUSED}, in any casing. Such variables
  are considered likely to be intentionally used in a situation where
  otherwise a warning would be given, so warnings of this kind are
  always suppressed for such variables.
--- 10784,10790 ----
  @item 
  Unreferenced or unmodified variables. Note that a special
  exemption applies to variables which contain any of the substrings
! @code{DISCARD, DUMMY, IGNORE, JUNK, UNUSED}, in any casing. Such variables
  are considered likely to be intentionally used in a situation where
  otherwise a warning would be given, so warnings of this kind are
  always suppressed for such variables.
*************** Accidental hiding of name by child unit
*** 10727,10733 ****
  Access before elaboration detected at compile time
  
  @item 
! A range in a @cite{for} loop that is known to be null or might be null
  @end itemize
  
  The following section lists compiler switches that are available
--- 10814,10820 ----
  Access before elaboration detected at compile time
  
  @item 
! A range in a @code{for} loop that is known to be null or might be null
  @end itemize
  
  The following section lists compiler switches that are available
*************** switch are:
*** 10766,10771 ****
--- 10853,10861 ----
  @code{-gnatw.h} (holes in record layouts)
  
  @item 
+ @code{-gnatw.j} (late primitives of tagged types)
+ 
+ @item 
  @code{-gnatw.k} (redefinition of names in standard)
  
  @item 
*************** switch are:
*** 10784,10789 ****
--- 10874,10882 ----
  @code{-gnatw.o} (values set by out parameters ignored)
  
  @item 
+ @code{-gnatw.q} (questionable layout of record types)
+ 
+ @item 
  @code{-gnatw.s} (overridden size clause)
  
  @item 
*************** All other optional warnings are turned o
*** 10813,10826 ****
  
  This switch suppresses all optional warning messages, see remaining list
  in this section for details on optional warning messages that can be
! individually controlled. Note that unlike switch @emph{-gnatws}, the
! use of switch @emph{-gnatwA} does not suppress warnings that are
  normally given unconditionally and cannot be individually controlled
  (for example, the warning about a missing exit path in a function).
! Also, again unlike switch @emph{-gnatws}, warnings suppressed by
! the use of switch @emph{-gnatwA} can be individually turned back
! on. For example the use of switch @emph{-gnatwA} followed by
! switch @emph{-gnatwd} will suppress all optional warnings except
  the warnings for implicit dereferencing.
  @end table
  
--- 10906,10919 ----
  
  This switch suppresses all optional warning messages, see remaining list
  in this section for details on optional warning messages that can be
! individually controlled. Note that unlike switch @code{-gnatws}, the
! use of switch @code{-gnatwA} does not suppress warnings that are
  normally given unconditionally and cannot be individually controlled
  (for example, the warning about a missing exit path in a function).
! Also, again unlike switch @code{-gnatws}, warnings suppressed by
! the use of switch @code{-gnatwA} can be individually turned back
! on. For example the use of switch @code{-gnatwA} followed by
! switch @code{-gnatwd} will suppress all optional warnings except
  the warnings for implicit dereferencing.
  @end table
  
*************** the operators '>=' and' <='.
*** 10949,10955 ****
  If the compiler can tell that only the equality condition is possible,
  then it will warn that the '>' or '<' part of the test
  is useless and that the operator could be replaced by '='.
! An example would be comparing a @cite{Natural} variable <= 0.
  
  This warning option also generates warnings if
  one or both tests is optimized away in a membership test for integer
--- 11042,11048 ----
  If the compiler can tell that only the equality condition is possible,
  then it will warn that the '>' or '<' part of the test
  is useless and that the operator could be replaced by '='.
! An example would be comparing a @code{Natural} variable <= 0.
  
  This warning option also generates warnings if
  one or both tests is optimized away in a membership test for integer
*************** values if the result can be determined a
*** 10957,10963 ****
  enumeration types are not included, since it is common for such tests
  to include an end point.
  
! This warning can also be turned on using @emph{-gnatwa}.
  @end table
  
  @geindex -gnatwC (gcc)
--- 11050,11056 ----
  enumeration types are not included, since it is common for such tests
  to include an end point.
  
! This warning can also be turned on using @code{-gnatwa}.
  @end table
  
  @geindex -gnatwC (gcc)
*************** missing a component clause in the situat
*** 11015,11023 ****
  
  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
! explicit @cite{.all} will generate a warning. With this warning
  enabled, access checks occur only at points where an explicit
! @cite{.all} appears in the source code (assuming no warnings are
  generated as a result of this switch). The default is that such
  warnings are not generated.
  @end table
--- 11108,11116 ----
  
  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
! explicit @code{.all} will generate a warning. With this warning
  enabled, access checks occur only at points where an explicit
! @code{.all} appears in the source code (assuming no warnings are
  generated as a result of this switch). The default is that such
  warnings are not generated.
  @end table
*************** following strings:
*** 11059,11081 ****
  
  @item 
  @emph{[-gnatw?]}
! Used to tag warnings controlled by the switch @emph{-gnatwx} where x
  is a letter a-z.
  
  @item 
  @emph{[-gnatw.?]}
! Used to tag warnings controlled by the switch @emph{-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 @emph{-gnatel} switch is set.
  
  @item 
  @emph{[restriction warning]}
  Used to tag warning messages for restriction violations, activated by use
! of the pragma @emph{Restriction_Warnings}.
  
  @item 
  @emph{[warning-as-error]}
--- 11152,11174 ----
  
  @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]}
*************** the string "error: " rather than "warnin
*** 11087,11093 ****
  @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 @emph{-gnatws}.
  @end itemize
  @end quotation
  @end table
--- 11180,11186 ----
  @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
  @end table
*************** the switch @emph{-gnatws}.
*** 11103,11109 ****
  
  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
! @cite{-gnatw.d}.
  @end table
  
  @geindex -gnatwe (gcc)
--- 11196,11202 ----
  
  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
! @code{-gnatw.d}.
  @end table
  
  @geindex -gnatwe (gcc)
*************** are not treated as errors if this switch
*** 11140,11153 ****
  @geindex activate every optional warning
  
  This switch activates all optional warnings, including those which
! are not activated by @cite{-gnatwa}. The use of this switch is not
  recommended for normal use. If you turn this switch on, it is almost
  certain that you will get large numbers of useless warnings. The
! warnings that are excluded from @cite{-gnatwa} are typically highly
  specialized warnings that are suitable for use only in code that has
  been specifically designed according to specialized coding rules.
  @end table
  
  @geindex -gnatwf (gcc)
  
  
--- 11233,11262 ----
  @geindex activate every optional warning
  
  This switch activates all optional warnings, including those which
! are not activated by @code{-gnatwa}. The use of this switch is not
  recommended for normal use. If you turn this switch on, it is almost
  certain that you will get large numbers of useless warnings. The
! warnings that are excluded from @code{-gnatwa} are typically highly
  specialized warnings that are suitable for use only in code that has
  been specifically designed according to specialized coding rules.
  @end table
  
+ @geindex -gnatwE (gcc)
+ 
+ @geindex Warnings
+ @geindex treat as error
+ 
+ 
+ @table @asis
+ 
+ @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.
+ @end table
+ 
  @geindex -gnatwf (gcc)
  
  
*************** been specifically designed according to
*** 11162,11168 ****
  
  This switch causes a warning to be generated if a formal parameter
  is not referenced in the body of the subprogram. This warning can
! also be turned on using @emph{-gnatwu}. The
  default is that these warnings are not generated.
  @end table
  
--- 11271,11277 ----
  
  This switch causes a warning to be generated if a formal parameter
  is not referenced in the body of the subprogram. This warning can
! also be turned on using @code{-gnatwu}. The
  default is that these warnings are not generated.
  @end table
  
*************** default is that these warnings are not g
*** 11177,11183 ****
  
  This switch suppresses warnings for unreferenced formal
  parameters. Note that the
! combination @emph{-gnatwu} followed by @emph{-gnatwF} has the
  effect of warning on unreferenced entities other than subprogram
  formals.
  @end table
--- 11286,11292 ----
  
  This switch suppresses warnings for unreferenced formal
  parameters. Note that the
! combination @code{-gnatwu} followed by @code{-gnatwF} has the
  effect of warning on unreferenced entities other than subprogram
  formals.
  @end table
*************** This switch suppresses warnings for unre
*** 11224,11230 ****
  
  This switch sets the warning categories that are used by the standard
  GNAT style. Currently this is equivalent to
! @emph{-gnatwAao.sI.C.V.X}
  but more warnings may be added in the future without advanced notice.
  @end table
  
--- 11333,11339 ----
  
  This switch sets the warning categories that are used by the standard
  GNAT style. Currently this is equivalent to
! @code{-gnatwAao.q.s.CI.V.X.Z}
  but more warnings may be added in the future without advanced notice.
  @end table
  
*************** representation clauses that leave holes
*** 11297,11305 ****
  @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 @cite{Ada},
! @cite{Interfaces}, @cite{GNAT},
! or @cite{System}
  hierarchies that is not
  documented in either the Ada Reference Manual or the GNAT
  Programmer's Reference Manual. Such units are intended only
--- 11406,11414 ----
  @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
*************** This switch disables warnings on overlap
*** 11361,11386 ****
  @geindex Obsolescent features
  
  If this warning option is activated, then warnings are generated for
! calls to subprograms marked with @cite{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 @cite{Text_IO}) and use of package
! @cite{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.
  
  In addition to the above cases, warnings are also generated for
  GNAT features that have been provided in past versions but which
  have been superseded (typically by features in the new Ada standard).
! For example, @cite{pragma Ravenscar} will be flagged since its
! function is replaced by @cite{pragma Profile(Ravenscar)}, and
! @cite{pragma Interface_Name} will be flagged since its function
! is replaced by @cite{pragma Import}.
  
  Note that this warning option functions differently from the
! restriction @cite{No_Obsolescent_Features} in two respects.
  First, the restriction applies only to annex J features.
! Second, the restriction does flag uses of package @cite{ASCII}.
  @end table
  
  @geindex -gnatwJ (gcc)
--- 11470,11495 ----
  @geindex Obsolescent features
  
  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.
  
  In addition to the above cases, warnings are also generated for
  GNAT features that have been provided in past versions but which
  have been superseded (typically by features in the new Ada standard).
! For example, @code{pragma Ravenscar} will be flagged since its
! function is replaced by @code{pragma Profile(Ravenscar)}, and
! @code{pragma Interface_Name} will be flagged since its function
! is replaced by @code{pragma Import}.
  
  Note that this warning option functions differently from the
! restriction @code{No_Obsolescent_Features} in two respects.
  First, the restriction applies only to annex J features.
! Second, the restriction does flag uses of package @code{ASCII}.
  @end table
  
  @geindex -gnatwJ (gcc)
*************** Second, the restriction does flag uses o
*** 11395,11400 ****
--- 11504,11535 ----
  This switch disables warnings on use of obsolescent features.
  @end table
  
+ @geindex -gnatw.j (gcc)
+ 
+ 
+ @table @asis
+ 
+ @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.
+ @end table
+ 
+ @geindex -gnatw.J (gcc)
+ 
+ 
+ @table @asis
+ 
+ @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.
+ @end table
+ 
  @geindex -gnatwk (gcc)
  
  
*************** is defined in package Standard.
*** 11465,11472 ****
  
  This switch activates warnings for possible elaboration problems,
  including suspicious use
! of @cite{Elaborate} pragmas, when using the static elaboration model, and
! possible situations that may raise @cite{Program_Error} when using the
  dynamic elaboration model.
  See the section in this guide on elaboration checking for further details.
  The default is that such warnings
--- 11600,11607 ----
  
  This switch activates warnings for possible elaboration problems,
  including suspicious use
! of @code{Elaborate} pragmas, when using the static elaboration model, and
! possible situations that may raise @code{Program_Error} when using the
  dynamic elaboration model.
  See the section in this guide on elaboration checking for further details.
  The default is that such warnings
*************** This switch disables warnings for suspic
*** 11582,11592 ****
  
  This switch sets normal warning mode, in which enabled warnings are
  issued and treated as warnings rather than errors. This is the default
! mode. the switch @emph{-gnatwn} can be used to cancel the effect of
! an explicit @emph{-gnatws} or
! @emph{-gnatwe}. It also cancels the effect of the
! implicit @emph{-gnatwe} that is activated by the
! use of @emph{-gnatg}.
  @end table
  
  @geindex -gnatw.n (gcc)
--- 11717,11727 ----
  
  This switch sets normal warning mode, in which enabled warnings are
  issued and treated as warnings rather than errors. This is the default
! mode. the switch @code{-gnatwn} can be used to cancel the effect of
! an explicit @code{-gnatws} or
! @code{-gnatwe}. It also cancels the effect of the
! implicit @code{-gnatwe} that is activated by the
! use of @code{-gnatg}.
  @end table
  
  @geindex -gnatw.n (gcc)
*************** the resulting assigned value is never re
*** 11700,11706 ****
  @emph{Activate warnings on ineffective pragma Inlines.}
  
  This switch activates warnings for failure of front end inlining
! (activated by @emph{-gnatN}) to inline a particular call. There are
  many reasons for not being able to inline a call, including most
  commonly that the call is too complex to inline. The default is
  that such warnings are not given.
--- 11835,11841 ----
  @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
  many reasons for not being able to inline a call, including most
  commonly that the call is too complex to inline. The default is
  that such warnings are not given.
*************** This switch suppresses warnings for case
*** 11791,11796 ****
--- 11926,12001 ----
  clear and the use of parentheses is preferred.
  @end table
  
+ @geindex -gnatw.q (gcc)
+ 
+ @geindex Layout
+ @geindex warnings
+ 
+ 
+ @table @asis
+ 
+ @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
+ order of the source code, would very likely cause inefficiencies in
+ the code generated by the compiler, both in terms of space and speed
+ during execution. One warning is issued for each problematic component
+ without representation clause in the nonvariant part and then in each
+ variant recursively, if any.
+ 
+ The purpose of these warnings is neither to prescribe an optimal layout
+ nor to force the use of representation clauses, but rather to get rid of
+ the most blatant inefficiencies in the layout. Therefore, the default
+ layout is matched against the following synthetic ordered layout and
+ the deviations are flagged on a component-by-component basis:
+ 
+ 
+ @itemize *
+ 
+ @item 
+ first all components or groups of components whose length is fixed
+ and a multiple of the storage unit,
+ 
+ @item 
+ then the remaining components whose length is fixed and not a multiple
+ of the storage unit,
+ 
+ @item 
+ then the remaining components whose length doesn't depend on discriminants
+ (that is to say, with variable but uniform length for all objects),
+ 
+ @item 
+ then all components whose length depends on discriminants,
+ 
+ @item 
+ finally the variant part (if any),
+ @end itemize
+ 
+ for the nonvariant part and for each variant recursively, if any.
+ 
+ The exact wording of the warning depends on whether the compiler is allowed
+ to reorder the components in the record type or precluded from doing it by
+ means of pragma @code{No_Component_Reordering}.
+ 
+ The default is that these warnings are not given.
+ @end table
+ 
+ @geindex -gnatw.Q (gcc)
+ 
+ 
+ @table @asis
+ 
+ @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)
  
  
*************** Assignment of an item to itself.
*** 11813,11823 ****
  Type conversion that converts an expression to its own type.
  
  @item 
! Use of the attribute @cite{Base} where @cite{typ'Base} is the same
! as @cite{typ}.
  
  @item 
! Use of pragma @cite{Pack} when all components are placed by a record
  representation clause.
  
  @item 
--- 12018,12028 ----
  Type conversion that converts an expression to its own type.
  
  @item 
! Use of the attribute @code{Base} where @code{typ'Base} is the same
! as @code{typ}.
  
  @item 
! Use of pragma @code{Pack} when all components are placed by a record
  representation clause.
  
  @item 
*************** Use of the operator abs on an operand th
*** 11829,11835 ****
  to be non-negative
  
  @item 
! Comparison of boolean expressions to an explicit True value.
  @end itemize
  
  The default is that warnings for redundant constructs are not given.
--- 12034,12041 ----
  to be non-negative
  
  @item 
! Comparison of an object or (unary or binary) operation of boolean type to
! an explicit True value.
  @end itemize
  
  The default is that warnings for redundant constructs are not given.
*************** output of all warning messages from the
*** 11888,11899 ****
  both warnings that can be controlled by switches described in this
  section, and those that are normally given unconditionally. The
  effect of this suppress action can only be cancelled by a subsequent
! use of the switch @emph{-gnatwn}.
  
! Note that switch @emph{-gnatws} does not suppress
! warnings from the @emph{gcc} back end.
! To suppress these back end warnings as well, use the switch @emph{-w}
! in addition to @emph{-gnatws}. Also this switch has no effect on the
  handling of style check messages.
  @end table
  
--- 12094,12105 ----
  both warnings that can be controlled by switches described in this
  section, and those that are normally given unconditionally. The
  effect of this suppress action can only be cancelled by a subsequent
! use of the switch @code{-gnatwn}.
  
! Note that switch @code{-gnatws} does not suppress
! warnings from the @code{gcc} back end.
! To suppress these back end warnings as well, use the switch @code{-w}
! in addition to @code{-gnatws}. Also this switch has no effect on the
  handling of style check messages.
  @end table
  
*************** This switch suppresses warnings for trac
*** 11973,11981 ****
  @emph{Activate warnings on suspicious contracts.}
  
  This switch activates warnings on suspicious contracts. This includes
! warnings on suspicious postconditions (whether a pragma @cite{Postcondition} or a
! @cite{Post} aspect in Ada 2012) and suspicious contract cases (pragma or aspect
! @cite{Contract_Cases}). A function postcondition or contract case is suspicious
  when no postcondition or contract case for this function mentions the result
  of the function.  A procedure postcondition or contract case is suspicious
  when it only refers to the pre-state of the procedure, because in that case
--- 12179,12187 ----
  @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
! @code{Post} aspect in Ada 2012) and suspicious contract cases (pragma or aspect
! @code{Contract_Cases}). A function postcondition or contract case is suspicious
  when no postcondition or contract case for this function mentions the result
  of the function.  A procedure postcondition or contract case is suspicious
  when it only refers to the pre-state of the procedure, because in that case
*************** are declared but not referenced, and for
*** 12011,12018 ****
  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 @cite{use}
! clauses or @cite{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
--- 12217,12224 ----
  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
*************** a warning is also generated, noting that
*** 12022,12028 ****
  @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 @emph{-gnatwf}).
  @end table
  
  @geindex -gnatwU (gcc)
--- 12228,12234 ----
  @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}).
  @end table
  
  @geindex -gnatwU (gcc)
*************** This switch also activates warnings on u
*** 12036,12042 ****
  
  This switch suppresses warnings for unused entities and packages.
  It also turns off warnings on unreferenced formals (and thus includes
! the effect of @emph{-gnatwF}).
  @end table
  
  @geindex -gnatw.u (gcc)
--- 12242,12248 ----
  
  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}).
  @end table
  
  @geindex -gnatw.u (gcc)
*************** the effect of @emph{-gnatwF}).
*** 12049,12060 ****
  @emph{Activate warnings on unordered enumeration types.}
  
  This switch causes enumeration types to be considered as conceptually
! unordered, unless an explicit pragma @cite{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 @cite{Ordered} in the
  @cite{GNAT Reference Manual} for further details.
  The default is that such warnings are not generated.
  @end table
--- 12255,12266 ----
  @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.
  The default is that such warnings are not generated.
  @end table
*************** procedure K (S : String) is
*** 12193,12202 ****
  
  @emph{Activate warnings on Warnings Off pragmas.}
  
! This switch activates warnings for use of @cite{pragma Warnings (Off@comma{} entity)}
  where either the pragma is entirely useless (because it suppresses no
! warnings), or it could be replaced by @cite{pragma Unreferenced} or
! @cite{pragma Unmodified}.
  Also activates warnings for the case of
  Warnings (Off, String), where either there is no matching
  Warnings (On, String), or the Warnings (Off) did not suppress any warning.
--- 12399,12408 ----
  
  @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
! warnings), or it could be replaced by @code{pragma Unreferenced} or
! @code{pragma Unmodified}.
  Also activates warnings for the case of
  Warnings (Off, String), where either there is no matching
  Warnings (On, String), or the Warnings (Off) did not suppress any warning.
*************** The default is that these warnings are n
*** 12212,12218 ****
  
  @emph{Suppress warnings on unnecessary Warnings Off pragmas.}
  
! This switch suppresses warnings for use of @cite{pragma Warnings (Off@comma{} ...)}.
  @end table
  
  @geindex -gnatwx (gcc)
--- 12418,12424 ----
  
  @emph{Suppress warnings on unnecessary Warnings Off pragmas.}
  
! This switch suppresses warnings for use of @code{pragma Warnings (Off, ...)}.
  @end table
  
  @geindex -gnatwx (gcc)
*************** should not complain at you.
*** 12262,12269 ****
  This switch activates warnings for exception usage when pragma Restrictions
  (No_Exception_Propagation) is in effect. Warnings are given for implicit or
  explicit exception raises which are not covered by a local handler, and for
! exception handlers which do not cover a local raise. The default is that these
! warnings are not given.
  
  @item @code{-gnatw.X}
  
--- 12468,12475 ----
  This switch activates warnings for exception usage when pragma Restrictions
  (No_Exception_Propagation) is in effect. Warnings are given for implicit or
  explicit exception raises which are not covered by a local handler, and for
! exception handlers which do not cover a local raise. The default is that
! these warnings are given for units that contain exception handlers.
  
  @item @code{-gnatw.X}
  
*************** For the most part, newer versions of Ada
*** 12288,12294 ****
  with older versions. For example, Ada 2005 programs will almost
  always work when compiled as Ada 2012.
  However there are some exceptions (for example the fact that
! @cite{some} is now a reserved word in Ada 2012). This
  switch activates several warnings to help in identifying
  and correcting such incompatibilities. The default is that
  these warnings are generated. Note that at one point Ada 2005
--- 12494,12500 ----
  with older versions. For example, Ada 2005 programs will almost
  always work when compiled as Ada 2012.
  However there are some exceptions (for example the fact that
! @code{some} is now a reserved word in Ada 2012). This
  switch activates several warnings to help in identifying
  and correcting such incompatibilities. The default is that
  these warnings are generated. Note that at one point Ada 2005
*************** sizes or conventions.
*** 12388,12394 ****
  @emph{Activate warnings for size not a multiple of alignment.}
  
  This switch activates warnings for cases of record types with
! specified @cite{Size} and @cite{Alignment} attributes where the
  size is not a multiple of the alignment, resulting in an object
  size that is greater than the specified size. The default
  is that such warnings are generated.
--- 12594,12600 ----
  @emph{Activate warnings for size not a multiple of alignment.}
  
  This switch activates warnings for cases of record types with
! specified @code{Size} and @code{Alignment} attributes where the
  size is not a multiple of the alignment, resulting in an object
  size that is greater than the specified size. The default
  is that such warnings are generated.
*************** is that such warnings are generated.
*** 12406,12416 ****
  @emph{Suppress warnings for size not a multiple of alignment.}
  
  This switch suppresses warnings for cases of record types with
! specified @cite{Size} and @cite{Alignment} attributes where the
  size is not a multiple of the alignment, resulting in an object
  size that is greater than the specified size.
  The warning can also be
! suppressed by giving an explicit @cite{Object_Size} value.
  @end table
  
  @geindex -Wunused (gcc)
--- 12612,12622 ----
  @emph{Suppress warnings for size not a multiple of alignment.}
  
  This switch suppresses warnings for cases of record types with
! specified @code{Size} and @code{Alignment} attributes where the
  size is not a multiple of the alignment, resulting in an object
  size that is greater than the specified size.
  The warning can also be
! suppressed by giving an explicit @code{Object_Size} value.
  @end table
  
  @geindex -Wunused (gcc)
*************** suppressed by giving an explicit @cite{O
*** 12420,12429 ****
  
  @item @code{-Wunused}
  
! The warnings controlled by the @emph{-gnatw} switch are generated by
! the front end of the compiler. The @emph{GCC} back end can provide
! additional warnings and they are controlled by the @emph{-W} switch.
! For example, @emph{-Wunused} activates back end
  warnings for entities that are declared but not referenced.
  @end table
  
--- 12626,12635 ----
  
  @item @code{-Wunused}
  
! The warnings controlled by the @code{-gnatw} switch are generated by
! the front end of the compiler. The GCC back end can provide
! additional warnings and they are controlled by the @code{-W} switch.
! For example, @code{-Wunused} activates back end
  warnings for entities that are declared but not referenced.
  @end table
  
*************** warnings for entities that are declared
*** 12434,12440 ****
  
  @item @code{-Wuninitialized}
  
! Similarly, @emph{-Wuninitialized} activates
  the back end warning for uninitialized variables. This switch must be
  used in conjunction with an optimization level greater than zero.
  @end table
--- 12640,12646 ----
  
  @item @code{-Wuninitialized}
  
! Similarly, @code{-Wuninitialized} activates
  the back end warning for uninitialized variables. This switch must be
  used in conjunction with an optimization level greater than zero.
  @end table
*************** used in conjunction with an optimization
*** 12446,12452 ****
  
  @item @code{-Wstack-usage=@emph{len}}
  
! Warn if the stack usage of a subprogram might be larger than @cite{len} bytes.
  See @ref{f5,,Static Stack Usage Analysis} for details.
  @end table
  
--- 12652,12658 ----
  
  @item @code{-Wstack-usage=@emph{len}}
  
! Warn if the stack usage of a subprogram might be larger than @code{len} bytes.
  See @ref{f5,,Static Stack Usage Analysis} for details.
  @end table
  
*************** See @ref{f5,,Static Stack Usage Analysis
*** 12457,12467 ****
  
  @item @code{-Wall}
  
! This switch enables most warnings from the @emph{GCC} back end.
  The code generator detects a number of warning situations that are missed
! by the @emph{GNAT} front end, and this switch can be used to activate them.
  The use of this switch also sets the default front end warning mode to
! @emph{-gnatwa}, that is, most front end warnings activated as well.
  @end table
  
  @geindex -w (gcc)
--- 12663,12673 ----
  
  @item @code{-Wall}
  
! This switch enables most warnings from the GCC back end.
  The code generator detects a number of warning situations that are missed
! by the GNAT front end, and this switch can be used to activate them.
  The use of this switch also sets the default front end warning mode to
! @code{-gnatwa}, that is, most front end warnings activated as well.
  @end table
  
  @geindex -w (gcc)
*************** The use of this switch also sets the def
*** 12471,12479 ****
  
  @item @code{-w}
  
! Conversely, this switch suppresses warnings from the @emph{GCC} back end.
  The use of this switch also sets the default front end warning mode to
! @emph{-gnatws}, that is, front end warnings suppressed as well.
  @end table
  
  @geindex -Werror (gcc)
--- 12677,12685 ----
  
  @item @code{-w}
  
! Conversely, this switch suppresses warnings from the GCC back end.
  The use of this switch also sets the default front end warning mode to
! @code{-gnatws}, that is, front end warnings suppressed as well.
  @end table
  
  @geindex -Werror (gcc)
*************** The use of this switch also sets the def
*** 12483,12489 ****
  
  @item @code{-Werror}
  
! This switch causes warnings from the @emph{GCC} back end to be treated as
  errors.  The warning string still appears, but the warning messages are
  counted as errors, and prevent the generation of an object file.
  @end table
--- 12689,12695 ----
  
  @item @code{-Werror}
  
! This switch causes warnings from the GCC back end to be treated as
  errors.  The warning string still appears, but the warning messages are
  counted as errors, and prevent the generation of an object file.
  @end table
*************** A string of warning parameters can be us
*** 12497,12503 ****
  will turn on all optional warnings except for unrecognized pragma warnings,
  and also specify that warnings should be treated as errors.
  
! When no switch @emph{-gnatw} is used, this is equivalent to:
  
  @quotation
  
--- 12703,12709 ----
  will turn on all optional warnings except for unrecognized pragma warnings,
  and also specify that warnings should be treated as errors.
  
! When no switch @code{-gnatw} is used, this is equivalent to:
  
  @quotation
  
*************** When no switch @emph{-gnatw} is used, th
*** 12523,12549 ****
  @code{-gnatwD}
  
  @item 
  @code{-gnatwF}
  
  @item 
  @code{-gnatwg}
  
  @item 
  @code{-gnatwH}
  
  @item 
! @code{-gnatwi}
  
  @item 
! @code{-gnatw.I}
  
  @item 
  @code{-gnatwJ}
  
  @item 
  @code{-gnatwK}
  
  @item 
  @code{-gnatwL}
  
  @item 
--- 12729,12767 ----
  @code{-gnatwD}
  
  @item 
+ @code{-gnatw.D}
+ 
+ @item 
  @code{-gnatwF}
  
  @item 
+ @code{-gnatw.F}
+ 
+ @item 
  @code{-gnatwg}
  
  @item 
  @code{-gnatwH}
  
  @item 
! @code{-gnatw.H}
  
  @item 
! @code{-gnatwi}
  
  @item 
  @code{-gnatwJ}
  
  @item 
+ @code{-gnatw.J}
+ 
+ @item 
  @code{-gnatwK}
  
  @item 
+ @code{-gnatw.K}
+ 
+ @item 
  @code{-gnatwL}
  
  @item 
*************** When no switch @emph{-gnatw} is used, th
*** 12559,12564 ****
--- 12777,12785 ----
  @code{-gnatwn}
  
  @item 
+ @code{-gnatw.N}
+ 
+ @item 
  @code{-gnatwo}
  
  @item 
*************** When no switch @emph{-gnatw} is used, th
*** 12574,12579 ****
--- 12795,12803 ----
  @code{-gnatwq}
  
  @item 
+ @code{-gnatw.Q}
+ 
+ @item 
  @code{-gnatwR}
  
  @item 
*************** When no switch @emph{-gnatw} is used, th
*** 12586,12600 ****
  @code{-gnatwT}
  
  @item 
! @code{-gnatw.T}
  
  @item 
  @code{-gnatwU}
  
  @item 
  @code{-gnatwv}
  
  @item 
  @code{-gnatww}
  
  @item 
--- 12810,12830 ----
  @code{-gnatwT}
  
  @item 
! @code{-gnatw.t}
  
  @item 
  @code{-gnatwU}
  
  @item 
+ @code{-gnatw.U}
+ 
+ @item 
  @code{-gnatwv}
  
  @item 
+ @code{-gnatw.v}
+ 
+ @item 
  @code{-gnatww}
  
  @item 
*************** When no switch @emph{-gnatw} is used, th
*** 12610,12616 ****
--- 12840,12852 ----
  @code{-gnatwy}
  
  @item 
+ @code{-gnatw.Y}
+ 
+ @item 
  @code{-gnatwz}
+ 
+ @item 
+ @code{-gnatw.z}
  @end itemize
  @end quotation
  
*************** When no switch @emph{-gnatw} is used, th
*** 12640,12646 ****
  
  @geindex Subtype predicates
  
! The @cite{-gnata} option is equivalent to the following Assertion_Policy pragma:
  
  @example
  pragma Assertion_Policy (Check);
--- 12876,12882 ----
  
  @geindex Subtype predicates
  
! The @code{-gnata} option is equivalent to the following @code{Assertion_Policy} pragma:
  
  @example
  pragma Assertion_Policy (Check);
*************** pragma Assertion_Policy
*** 12661,12669 ****
     Type_Invariant'Class => Check);
  @end example
  
! The pragmas @cite{Assert} and @cite{Debug} normally have no effect and
! are ignored. This switch, where @code{a} stands for assert, causes
! pragmas @cite{Assert} and @cite{Debug} to be activated. This switch also
  causes preconditions, postconditions, subtype predicates, and
  type invariants to be activated.
  
--- 12897,12905 ----
     Type_Invariant'Class => Check);
  @end example
  
! The pragmas @code{Assert} and @code{Debug} normally have no effect and
! are ignored. This switch, where @code{a} stands for 'assert', causes
! pragmas @code{Assert} and @code{Debug} to be activated. This switch also
  causes preconditions, postconditions, subtype predicates, and
  type invariants to be activated.
  
*************** with [Pre|Post|Type_Invariant|Dynamic_Pr
*** 12685,12706 ****
    => <Boolean-expression>;
  @end example
  
! The @cite{Assert} pragma causes @cite{Boolean-expression} to be tested.
! If the result is @cite{True}, the pragma has no effect (other than
  possible side effects from evaluating the expression). If the result is
! @cite{False}, the exception @cite{Assert_Failure} declared in the package
! @cite{System.Assertions} is raised (passing @cite{static-string-expression}, if
  present, as the message associated with the exception). If no string
  expression is given, the default is a string containing the file name and
  line number of the pragma.
  
! The @cite{Debug} pragma causes @cite{procedure} to be called. Note that
! @cite{pragma Debug} may appear within a declaration sequence, allowing
  debugging procedures to be called between declarations.
  
! For the aspect specification, the @cite{<Boolean-expression>} is evaluated.
! If the result is @cite{True}, the aspect has no effect. If the result
! is @cite{False}, the exception @cite{Assert_Failure} is raised.
  @end table
  
  @node Validity Checking,Style Checking,Debugging and Assertion Control,Compiler Switches
--- 12921,12942 ----
    => <Boolean-expression>;
  @end example
  
! The @code{Assert} pragma causes @code{Boolean-expression} to be tested.
! If the result is @code{True}, the pragma has no effect (other than
  possible side effects from evaluating the expression). If the result is
! @code{False}, the exception @code{Assert_Failure} declared in the package
! @code{System.Assertions} is raised (passing @code{static-string-expression}, if
  present, as the message associated with the exception). If no string
  expression is given, the default is a string containing the file name and
  line number of the pragma.
  
! The @code{Debug} pragma causes @code{procedure} to be called. Note that
! @code{pragma Debug} may appear within a declaration sequence, allowing
  debugging procedures to be called between declarations.
  
! For the aspect specification, the @code{Boolean-expression} is evaluated.
! If the result is @code{True}, the aspect has no effect. If the result
! is @code{False}, the exception @code{Assert_Failure} is raised.
  @end table
  
  @node Validity Checking,Style Checking,Debugging and Assertion Control,Compiler Switches
*************** composite types.
*** 12719,12732 ****
  It is an error to read an invalid value, but the RM does not require
  run-time checks to detect such errors, except for some minimal
  checking to prevent erroneous execution (i.e. unpredictable
! behavior). This corresponds to the @emph{-gnatVd} switch below,
  which is the default. For example, by default, if the expression of a
  case statement is invalid, it will raise Constraint_Error rather than
  causing a wild jump, and if an array index on the left-hand side of an
  assignment is invalid, it will raise Constraint_Error rather than
  overwriting an arbitrary memory location.
  
! The @emph{-gnatVa} may be used to enable additional validity checks,
  which are not required by the RM. These checks are often very
  expensive (which is why the RM does not require them). These checks
  are useful in tracking down uninitialized variables, but they are
--- 12955,12968 ----
  It is an error to read an invalid value, but the RM does not require
  run-time checks to detect such errors, except for some minimal
  checking to prevent erroneous execution (i.e. unpredictable
! behavior). This corresponds to the @code{-gnatVd} switch below,
  which is the default. For example, by default, if the expression of a
  case statement is invalid, it will raise Constraint_Error rather than
  causing a wild jump, and if an array index on the left-hand side of an
  assignment is invalid, it will raise Constraint_Error rather than
  overwriting an arbitrary memory location.
  
! The @code{-gnatVa} may be used to enable additional validity checks,
  which are not required by the RM. These checks are often very
  expensive (which is why the RM does not require them). These checks
  are useful in tracking down uninitialized variables, but they are
*************** combination with optimization, since thi
*** 12736,12755 ****
  If performance is a consideration, leading to the need to optimize,
  then the validity checking options should not be used.
  
! The other @emph{-gnatV}@code{x} switches below allow finer-grained
  control; you can enable whichever validity checks you desire. However,
! for most debugging purposes, @emph{-gnatVa} is sufficient, and the
! default @emph{-gnatVd} (i.e. standard Ada behavior) is usually
  sufficient for non-debugging use.
  
! The @emph{-gnatB} switch tells the compiler to assume that all
  values are valid (that is, within their declared subtype range)
  except in the context of a use of the Valid attribute. This means
  the compiler can generate more efficient code, since the range
  of values is better known at compile time. However, an uninitialized
  variable can cause wild jumps and memory corruption in this mode.
  
! The @emph{-gnatV}@code{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
--- 12972,12991 ----
  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
  sufficient for non-debugging use.
  
! The @code{-gnatB} switch tells the compiler to assume that all
  values are valid (that is, within their declared subtype range)
  except in the context of a use of the Valid attribute. This means
  the compiler can generate more efficient code, since the range
  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
*************** to the default checks required by Ada as
*** 12765,12772 ****
  @emph{All validity checks.}
  
  All validity checks are turned on.
! That is, @emph{-gnatVa} is
! equivalent to @emph{gnatVcdfimorst}.
  @end table
  
  @geindex -gnatVc (gcc)
--- 13001,13008 ----
  @emph{All validity checks.}
  
  All validity checks are turned on.
! That is, @code{-gnatVa} is
! equivalent to @code{gnatVcdfimorst}.
  @end table
  
  @geindex -gnatVc (gcc)
*************** A check is done in case statements that
*** 12797,12806 ****
  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 @emph{-gnatVD}.
! They are turned on by default. If @emph{-gnatVD} is specified, a subsequent
! switch @emph{-gnatVd} will leave the checks turned on.
! Switch @emph{-gnatVD} should be used only if you are sure that all such
  expressions have valid values. If you use this switch and invalid values
  are present, then the program is erroneous, and wild jumps or memory
  overwriting may occur.
--- 13033,13042 ----
  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.
! Switch @code{-gnatVD} should be used only if you are sure that all such
  expressions have valid values. If you use this switch and invalid values
  are present, then the program is erroneous, and wild jumps or memory
  overwriting may occur.
*************** overwriting may occur.
*** 12817,12823 ****
  
  In the absence of this switch, assignments to record or array components are
  not validity checked, even if validity checks for assignments generally
! (@emph{-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
--- 13053,13059 ----
  
  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
*************** are assigned component by component.
*** 12835,12848 ****
  @emph{Validity checks for floating-point values.}
  
  In the absence of this switch, validity checking occurs only for discrete
! values. If @emph{-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, @emph{-gnatVif} or @emph{-gnatVfi}
  (the order does not matter) specifies that floating-point parameters of mode
! @cite{in} should be validity checked.
  @end table
  
  @geindex -gnatVi (gcc)
--- 13071,13084 ----
  @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
! @code{in} should be validity checked.
  @end table
  
  @geindex -gnatVi (gcc)
*************** options. For example, @emph{-gnatVif} or
*** 12852,12860 ****
  
  @item @code{-gnatVi}
  
! @emph{Validity checks for `in` mode parameters.}
  
! Arguments for parameters of mode @cite{in} are validity checked in function
  and procedure calls at the point of call.
  @end table
  
--- 13088,13096 ----
  
  @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.
  @end table
  
*************** and procedure calls at the point of call
*** 12865,12876 ****
  
  @item @code{-gnatVm}
  
! @emph{Validity checks for `in out` mode parameters.}
  
! Arguments for parameters of mode @cite{in out} are validity checked in
! procedure calls at the point of call. The @cite{'m'} here stands for
  modify, since this concerns parameters that can be modified by the call.
! Note that there is no specific option to test @cite{out} parameters,
  but any reference within the subprogram will be tested in the usual
  manner, and if an invalid value is copied back, any reference to it
  will be subject to validity checking.
--- 13101,13112 ----
  
  @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
  modify, since this concerns parameters that can be modified by the call.
! Note that there is no specific option to test @code{out} parameters,
  but any reference within the subprogram will be tested in the usual
  manner, and if an invalid value is copied back, any reference to it
  will be subject to validity checking.
*************** will be subject to validity checking.
*** 12887,12895 ****
  
  This switch turns off all validity checking, including the default checking
  for case statements and left hand side subscripts. Note that the use of
! the switch @emph{-gnatp} suppresses all run-time checks, including
! validity checks, and thus implies @emph{-gnatVn}. When this switch
! is used, it cancels any other @emph{-gnatV} previously issued.
  @end table
  
  @geindex -gnatVo (gcc)
--- 13123,13131 ----
  
  This switch turns off all validity checking, including the default checking
  for case statements and left hand side subscripts. Note that the use of
! the switch @code{-gnatp} suppresses all run-time checks, including
! validity checks, and thus implies @code{-gnatVn}. When this switch
! is used, it cancels any other @code{-gnatV} previously issued.
  @end table
  
  @geindex -gnatVo (gcc)
*************** is used, it cancels any other @emph{-gna
*** 12902,12910 ****
  @emph{Validity checks for operator and attribute operands.}
  
  Arguments for predefined operators and attributes are validity checked.
! This includes all operators in package @cite{Standard},
! the shift operators defined as intrinsic in package @cite{Interfaces}
! and operands for attributes such as @cite{Pos}. Checks are also made
  on individual component values for composite comparisons, and on the
  expressions in type conversions and qualified expressions. Checks are
  also made on explicit ranges using @code{..} (e.g., slices, loops etc).
--- 13138,13146 ----
  @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
  on individual component values for composite comparisons, and on the
  expressions in type conversions and qualified expressions. Checks are
  also made on explicit ranges using @code{..} (e.g., slices, loops etc).
*************** also made on explicit ranges using @code
*** 12920,12930 ****
  @emph{Validity checks for parameters.}
  
  This controls the treatment of parameters within a subprogram (as opposed
! to @emph{-gnatVi} and @emph{-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 @emph{-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
--- 13156,13166 ----
  @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
*************** will be checked (or rechecked) within th
*** 12938,12944 ****
  
  @emph{Validity checks for function returns.}
  
! The expression in @cite{return} statements in functions is validity
  checked.
  @end table
  
--- 13174,13180 ----
  
  @emph{Validity checks for function returns.}
  
! The expression in @code{return} statements in functions is validity
  checked.
  @end table
  
*************** are validity checked).
*** 12965,12994 ****
  
  @emph{Validity checks for tests.}
  
! Expressions used as conditions in @cite{if}, @cite{while} or @cite{exit}
  statements are checked, as well as guard expressions in entry calls.
  @end table
  
! The @emph{-gnatV} switch may be followed by a string of letters
  to turn on a series of validity checking options.
  For example, @code{-gnatVcr}
  specifies that in addition to the default validity checking, copies and
  function return expressions are to be validity checked.
  In order to make it easier to specify the desired combination of effects,
! the upper case letters @cite{CDFIMORST} may
  be used to turn off the corresponding lower case option.
  Thus @code{-gnatVaM} turns on all validity checking options except for
! checking of @cite{**in out**} procedure arguments.
  
  The specification of additional validity checking generates extra code (and
! in the case of @emph{-gnatVa} the code expansion can be substantial).
  However, these additional checks can be very useful in detecting
  uninitialized variables, incorrect use of unchecked conversion, and other
! errors leading to invalid values. The use of pragma @cite{Initialize_Scalars}
  is useful in conjunction with the extra validity checking, since this
  ensures that wherever possible uninitialized variables have invalid values.
  
! See also the pragma @cite{Validity_Checks} which allows modification of
  the validity checking mode at the program source level, and also allows for
  temporary disabling of validity checks.
  
--- 13201,13230 ----
  
  @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.
  @end table
  
! The @code{-gnatV} switch may be followed by a string of letters
  to turn on a series of validity checking options.
  For example, @code{-gnatVcr}
  specifies that in addition to the default validity checking, copies and
  function return expressions are to be validity checked.
  In order to make it easier to specify the desired combination of effects,
! the upper case letters @code{CDFIMORST} may
  be used to turn off the corresponding lower case option.
  Thus @code{-gnatVaM} turns on all validity checking options except for
! checking of @code{in out} parameters.
  
  The specification of additional validity checking generates extra code (and
! in the case of @code{-gnatVa} the code expansion can be substantial).
  However, these additional checks can be very useful in detecting
  uninitialized variables, incorrect use of unchecked conversion, and other
! errors leading to invalid values. The use of pragma @code{Initialize_Scalars}
  is useful in conjunction with the extra validity checking, since this
  ensures that wherever possible uninitialized variables have invalid values.
  
! See also the pragma @code{Validity_Checks} which allows modification of
  the validity checking mode at the program source level, and also allows for
  temporary disabling of validity checks.
  
*************** temporary disabling of validity checks.
*** 13001,13013 ****
  
  @geindex -gnaty (gcc)
  
! The @emph{-gnatyx} switch causes the compiler to
  enforce specified style rules. A limited set of style rules has been used
  in writing the GNAT sources themselves. This switch allows user programs
  to activate all or some of these checks. If the source program fails a
  specified style check, an appropriate message is given, preceded by
  the character sequence '(style)'. This message does not prevent
! successful compilation (unless the @emph{-gnatwe} switch is used).
  
  Note that this is by no means intended to be a general facility for
  checking arbitrary coding standards. It is simply an embedding of the
--- 13237,13249 ----
  
  @geindex -gnaty (gcc)
  
! The @code{-gnatyx} switch causes the compiler to
  enforce specified style rules. A limited set of style rules has been used
  in writing the GNAT sources themselves. This switch allows user programs
  to activate all or some of these checks. If the source program fails a
  specified style check, an appropriate message is given, preceded by
  the character sequence '(style)'. This message does not prevent
! successful compilation (unless the @code{-gnatwe} switch is used).
  
  Note that this is by no means intended to be a general facility for
  checking arbitrary coding standards. It is simply an embedding of the
*************** find it useful to adopt the entire set o
*** 13017,13023 ****
  some subset of them.
  
  
! The string @cite{x} is a sequence of letters or digits
  indicating the particular style
  checks to be performed. The following checks are defined:
  
--- 13253,13259 ----
  some subset of them.
  
  
! The string @code{x} is a sequence of letters or digits
  indicating the particular style
  checks to be performed. The following checks are defined:
  
*************** checks to be performed. The following ch
*** 13031,13042 ****
  @emph{Specify indentation level.}
  
  If a digit from 1-9 appears
! in the string after @emph{-gnaty}
  then proper indentation is checked, with the digit indicating the
  indentation level required. A value of zero turns off this style check.
  The general style of required indentation is as specified by
  the examples in the Ada Reference Manual. Full line comments must be
! aligned with the @cite{--} starting on a column that is a multiple of
  the alignment level, or they may be aligned the same way as the following
  non-blank line (this is useful when full line comments appear in the middle
  of a statement, or they may be aligned with the source line on the previous
--- 13267,13278 ----
  @emph{Specify indentation level.}
  
  If a digit from 1-9 appears
! in the string after @code{-gnaty}
  then proper indentation is checked, with the digit indicating the
  indentation level required. A value of zero turns off this style check.
  The general style of required indentation is as specified by
  the examples in the Ada Reference Manual. Full line comments must be
! aligned with the @code{--} starting on a column that is a multiple of
  the alignment level, or they may be aligned the same way as the following
  non-blank line (this is useful when full line comments appear in the middle
  of a statement, or they may be aligned with the source line on the previous
*************** non-blank line.
*** 13052,13058 ****
  
  @emph{Check attribute casing.}
  
! Attribute names, including the case of keywords such as @cite{digits}
  used as attributes names, must be written in mixed case, that is, the
  initial letter and any letter following an underscore must be uppercase.
  All other letters must be lowercase.
--- 13288,13294 ----
  
  @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
  initial letter and any letter following an underscore must be uppercase.
  All other letters must be lowercase.
*************** for the use of blanks to separate source
*** 13097,13103 ****
  
  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
! boolean constants. In all other cases @cite{and then}/@cite{or else} are
  required.
  @end table
  
--- 13333,13339 ----
  
  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
! boolean constants. In all other cases @code{and then}/@cite{or else} are
  required.
  @end table
  
*************** Comments must meet the following set of
*** 13116,13147 ****
  @itemize *
  
  @item 
! The '@cite{--}' that starts the column must either start in column one,
  or else at least one blank must precede this sequence.
  
  @item 
  Comments that follow other tokens on a line must have at least one blank
! following the '@cite{--}' at the start of the comment.
  
  @item 
  Full line comments must have at least two blanks following the
! '@cite{--}' that starts the comment, with the following exceptions.
  
  @item 
! A line consisting only of the '@cite{--}' characters, possibly preceded
  by blanks is permitted.
  
  @item 
! A comment starting with '@cite{--x}' where @cite{x} is a special character
  is permitted.
! This allows proper processing of the output generated by specialized tools
! including @emph{gnatprep} (where '@cite{--!}' is used) and the SPARK
  annotation
! language (where '@cite{--#}' is used). For the purposes of this rule, a
  special character is defined as being in one of the ASCII ranges
! @cite{16#21#...16#2F#} or @cite{16#3A#...16#3F#}.
  Note that this usage is not permitted
! in GNAT implementation units (i.e., when @emph{-gnatg} is used).
  
  @item 
  A line consisting entirely of minus signs, possibly preceded by blanks, is
--- 13352,13383 ----
  @itemize *
  
  @item 
! The @code{--} that starts the column must either start in column one,
  or else at least one blank must precede this sequence.
  
  @item 
  Comments that follow other tokens on a line must have at least one blank
! following the @code{--} at the start of the comment.
  
  @item 
  Full line comments must have at least two blanks following the
! @code{--} that starts the comment, with the following exceptions.
  
  @item 
! A line consisting only of the @code{--} characters, possibly preceded
  by blanks is permitted.
  
  @item 
! A comment starting with @code{--x} where @code{x} is a special character
  is permitted.
! This allows proper processing of the output from specialized tools
! such as @code{gnatprep} (where @code{--!} is used) and in earlier versions of the SPARK
  annotation
! language (where @code{--#} is used). For the purposes of this rule, a
  special character is defined as being in one of the ASCII ranges
! @code{16#21#...16#2F#} or @code{16#3A#...16#3F#}.
  Note that this usage is not permitted
! in GNAT implementation units (i.e., when @code{-gnatg} is used).
  
  @item 
  A line consisting entirely of minus signs, possibly preceded by blanks, is
*************** permitted. This allows the construction
*** 13149,13156 ****
  signs are used to form the top and bottom of the box.
  
  @item 
! A comment that starts and ends with '@cite{--}' is permitted as long as at
! least one blank follows the initial '@cite{--}'. Together with the preceding
  rule, this allows the construction of box comments, as shown in the following
  example:
  
--- 13385,13392 ----
  signs are used to form the top and bottom of the box.
  
  @item 
! A comment that starts and ends with @code{--} is permitted as long as at
! least one blank follows the initial @code{--}. Together with the preceding
  rule, this allows the construction of box comments, as shown in the following
  example:
  
*************** example:
*** 13172,13179 ****
  
  @emph{Check comments, single space.}
  
! This is identical to @cite{c} except that only one space
! is required following the @cite{--} of a comment instead of two.
  @end table
  
  @geindex -gnatyd (gcc)
--- 13408,13415 ----
  
  @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.
  @end table
  
  @geindex -gnatyd (gcc)
*************** allowed).
*** 13199,13206 ****
  
  @emph{Check end/exit labels.}
  
! Optional labels on @cite{end} statements ending subprograms and on
! @cite{exit} statements exiting named loops, are required to be present.
  @end table
  
  @geindex -gnatyf (gcc)
--- 13435,13442 ----
  
  @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.
  @end table
  
  @geindex -gnatyf (gcc)
*************** in the source text.
*** 13227,13233 ****
  
  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
! incorporated into GNAT. Currently this is equivalent to @emph{-gnatwydISux})
  but additional style switches may be added to this set in the future without
  advance notice.
  @end table
--- 13463,13469 ----
  
  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
! incorporated into GNAT. Currently this is equivalent to @code{-gnatwydISux})
  but additional style switches may be added to this set in the future without
  advance notice.
  @end table
*************** source tokens.
*** 13256,13264 ****
  
  @emph{Check if-then layout.}
  
! The keyword @cite{then} must appear either on the same
! line as corresponding @cite{if}, or on a line on its own, lined
! up under the @cite{if}.
  @end table
  
  @geindex -gnatyI (gcc)
--- 13492,13500 ----
  
  @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
! up under the @code{if}.
  @end table
  
  @geindex -gnatyI (gcc)
*************** up under the @cite{if}.
*** 13270,13278 ****
  
  @emph{check mode IN keywords.}
  
! Mode @cite{in} (the default mode) is not
! allowed to be given explicitly. @cite{in out} is fine,
! but not @cite{in} on its own.
  @end table
  
  @geindex -gnatyk (gcc)
--- 13506,13514 ----
  
  @emph{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.
  @end table
  
  @geindex -gnatyk (gcc)
*************** but not @cite{in} on its own.
*** 13285,13291 ****
  @emph{Check keyword casing.}
  
  All keywords must be in lower case (with the exception of keywords
! such as @cite{digits} used as attribute names to which this check
  does not apply).
  @end table
  
--- 13521,13527 ----
  @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
  does not apply).
  @end table
  
*************** does not apply).
*** 13300,13313 ****
  
  Layout of statement and declaration constructs must follow the
  recommendations in the Ada Reference Manual, as indicated by the
! form of the syntax rules. For example an @cite{else} keyword must
! be lined up with the corresponding @cite{if} keyword.
  
  There are two respects in which the style rule enforced by this check
  option are more liberal than those in the Ada Reference Manual. First
  in the case of record declarations, it is permissible to put the
! @cite{record} keyword on the same line as the @cite{type} keyword, and
! then the @cite{end} in @cite{end record} must line up under @cite{type}.
  This is also permitted when the type declaration is split on two lines.
  For example, any of the following three layouts is acceptable:
  
--- 13536,13549 ----
  
  Layout of statement and declaration constructs must follow the
  recommendations in the Ada Reference Manual, as indicated by the
! form of the syntax rules. For example an @code{else} keyword must
! be lined up with the corresponding @code{if} keyword.
  
  There are two respects in which the style rule enforced by this check
  option are more liberal than those in the Ada Reference Manual. First
  in the case of record declarations, it is permissible to put the
! @code{record} keyword on the same line as the @code{type} keyword, and
! then the @code{end} in @code{end record} must line up under @code{type}.
  This is also permitted when the type declaration is split on two lines.
  For example, any of the following three layouts is acceptable:
  
*************** end record;
*** 13331,13338 ****
  @end example
  
  Second, in the case of a block statement, a permitted alternative
! is to put the block label on the same line as the @cite{declare} or
! @cite{begin} keyword, and then line the @cite{end} keyword up under
  the block label. For example both the following are permitted:
  
  @example
--- 13567,13574 ----
  @end example
  
  Second, in the case of a block statement, a permitted alternative
! is to put the block label on the same line as the @code{declare} or
! @code{begin} keyword, and then line the @code{end} keyword up under
  the block label. For example both the following are permitted:
  
  @example
*************** where the only restriction is that they
*** 13424,13430 ****
  
  Any identifier from Standard must be cased
  to match the presentation in the Ada Reference Manual (for example,
! @cite{Integer} and @cite{ASCII.NUL}).
  @end table
  
  @geindex -gnatyN (gcc)
--- 13660,13666 ----
  
  Any identifier from Standard must be cased
  to match the presentation in the Ada Reference Manual (for example,
! @code{Integer} and @code{ASCII.NUL}).
  @end table
  
  @geindex -gnatyN (gcc)
*************** the most frequent form of main program p
*** 13529,13537 ****
  @emph{Check no statements after then/else.}
  
  No statements are allowed
! on the same line as a @cite{then} or @cite{else} keyword following the
! keyword in an @cite{if} statement. @cite{or else} and @cite{and then} are not
! affected, and a special exception allows a pragma to appear after @cite{else}.
  @end table
  
  @geindex -gnatyt (gcc)
--- 13765,13773 ----
  @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
! keyword in an @code{if} statement. @code{or else} and @code{and then} are not
! affected, and a special exception allows a pragma to appear after @code{else}.
  @end table
  
  @geindex -gnatyt (gcc)
*************** The following token spacing rules are en
*** 13549,13565 ****
  @itemize *
  
  @item 
! The keywords @cite{abs} and @cite{not} must be followed by a space.
  
  @item 
! The token @cite{=>} must be surrounded by spaces.
  
  @item 
! The token @cite{<>} must be preceded by a space or a left parenthesis.
  
  @item 
! Binary operators other than @cite{**} must be surrounded by spaces.
! There is no restriction on the layout of the @cite{**} binary operator.
  
  @item 
  Colon must be surrounded by spaces.
--- 13785,13801 ----
  @itemize *
  
  @item 
! The keywords @code{abs} and @code{not} must be followed by a space.
  
  @item 
! The token @code{=>} must be surrounded by spaces.
  
  @item 
! The token @code{<>} must be preceded by a space or a left parenthesis.
  
  @item 
! Binary operators other than @code{**} must be surrounded by spaces.
! There is no restriction on the layout of the @code{**} binary operator.
  
  @item 
  Colon must be surrounded by spaces.
*************** A vertical bar must be surrounded by spa
*** 13596,13602 ****
  @end itemize
  
  Exactly one blank (and no other white space) must appear between
! a @cite{not} token and a following @cite{in} token.
  @end table
  
  @geindex -gnatyu (gcc)
--- 13832,13838 ----
  @end itemize
  
  Exactly one blank (and no other white space) must appear between
! a @code{not} token and a following @code{in} token.
  @end table
  
  @geindex -gnatyu (gcc)
*************** one blank line occurs in sequence.
*** 13623,13630 ****
  @emph{Check extra parentheses.}
  
  Unnecessary extra level of parentheses (C-style) are not allowed
! around conditions in @cite{if} statements, @cite{while} statements and
! @cite{exit} statements.
  @end table
  
  @geindex -gnatyy (gcc)
--- 13859,13866 ----
  @emph{Check extra parentheses.}
  
  Unnecessary extra level of parentheses (C-style) are not allowed
! around conditions in @code{if} statements, @code{while} statements and
! @code{exit} statements.
  @end table
  
  @geindex -gnatyy (gcc)
*************** around conditions in @cite{if} statement
*** 13636,13645 ****
  
  @emph{Set all standard style check options.}
  
! This is equivalent to @cite{gnaty3aAbcefhiklmnprst}, that is all checking
! options enabled with the exception of @emph{-gnatyB}, @emph{-gnatyd},
! @emph{-gnatyI}, @emph{-gnatyLnnn}, @emph{-gnatyo}, @emph{-gnatyO},
! @emph{-gnatyS}, @emph{-gnatyu}, and @emph{-gnatyx}.
  @end table
  
  @geindex -gnaty- (gcc)
--- 13872,13881 ----
  
  @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},
! @code{-gnatyI}, @code{-gnatyLnnn}, @code{-gnatyo}, @code{-gnatyO},
! @code{-gnatyS}, @code{-gnatyu}, and @code{-gnatyx}.
  @end table
  
  @geindex -gnaty- (gcc)
*************** options enabled with the exception of @e
*** 13653,13662 ****
  
  This causes any subsequent options in the string to act as canceling the
  corresponding style check option. To cancel maximum nesting level control,
! use @emph{L} parameter witout any integer value after that, because any
! digit following @emph{-} in the parameter string of the @emph{-gnaty}
! option will be threated as canceling indentation check. The same is true
! for @emph{M} parameter. @emph{y} and @emph{N} parameters are not
  allowed after @emph{-}.
  @end table
  
--- 13889,13898 ----
  
  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
  
*************** If any of these style rules is violated,
*** 13690,13701 ****
  details on the violation. The initial characters of such messages are
  always '@cite{(style)}'. Note that these messages are treated as warning
  messages, so they normally do not prevent the generation of an object
! file. The @emph{-gnatwe} switch can be used to treat warning messages,
  including style messages, as fatal errors.
  
  The switch @code{-gnaty} on its own (that is not
  followed by any letters or digits) is equivalent
! to the use of @emph{-gnatyy} as described above, that is all
  built-in standard style check options are enabled.
  
  The switch @code{-gnatyN} clears any previously set style checks.
--- 13926,13937 ----
  details on the violation. The initial characters of such messages are
  always '@cite{(style)}'. Note that these messages are treated as warning
  messages, so they normally do not prevent the generation of an object
! file. The @code{-gnatwe} switch can be used to treat warning messages,
  including style messages, as fatal errors.
  
  The switch @code{-gnaty} on its own (that is not
  followed by any letters or digits) is equivalent
! to the use of @code{-gnatyy} as described above, that is all
  built-in standard style check options are enabled.
  
  The switch @code{-gnatyN} clears any previously set style checks.
*************** The switch @code{-gnatyN} clears any pre
*** 13721,13727 ****
  By default, the following checks are suppressed: stack overflow
  checks, and checks for access before elaboration on subprogram
  calls. All other checks, including overflow checks, range checks and
! array bounds checks, are turned on by default. The following @emph{gcc}
  switches refine this default behavior.
  
  @geindex -gnatp (gcc)
--- 13957,13963 ----
  By default, the following checks are suppressed: stack overflow
  checks, and checks for access before elaboration on subprogram
  calls. All other checks, including overflow checks, range checks and
! array bounds checks, are turned on by default. The following @code{gcc}
  switches refine this default behavior.
  
  @geindex -gnatp (gcc)
*************** switches refine this default behavior.
*** 13737,13745 ****
  @geindex suppressing
  
  This switch causes the unit to be compiled
! as though @cite{pragma Suppress (All_checks)}
  had been present in the source. Validity checks are also eliminated (in
! other words @emph{-gnatp} also implies @emph{-gnatVn}.
  Use this switch to improve the performance
  of the code at the expense of safety in the presence of invalid data or
  program bugs.
--- 13973,13981 ----
  @geindex suppressing
  
  This switch causes the unit to be compiled
! as though @code{pragma Suppress (All_checks)}
  had been present in the source. Validity checks are also eliminated (in
! other words @code{-gnatp} also implies @code{-gnatVn}.
  Use this switch to improve the performance
  of the code at the expense of safety in the presence of invalid data or
  program bugs.
*************** the condition being checked is true, whi
*** 13767,13784 ****
  execution if that assumption is wrong.
  
  The checks subject to suppression include all the checks defined by the Ada
! standard, the additional implementation defined checks @cite{Alignment_Check},
! @cite{Duplicated_Tag_Check}, @cite{Predicate_Check}, Container_Checks, Tampering_Check,
! and @cite{Validity_Check}, as well as any checks introduced using @cite{pragma Check_Name}. Note that @cite{Atomic_Synchronization} is not automatically
! suppressed by use of this option.
  
  If the code depends on certain checks being active, you can use
! pragma @cite{Unsuppress} either as a configuration pragma or as
  a local pragma to make sure that a specified check is performed
! even if @emph{gnatp} is specified.
  
! The @emph{-gnatp} switch has no effect if a subsequent
! @emph{-gnat-p} switch appears.
  @end table
  
  @geindex -gnat-p (gcc)
--- 14003,14020 ----
  execution if that assumption is wrong.
  
  The checks subject to suppression include all the checks defined by the Ada
! standard, the additional implementation defined checks @code{Alignment_Check},
! @code{Duplicated_Tag_Check}, @code{Predicate_Check}, @code{Container_Checks}, @code{Tampering_Check},
! and @code{Validity_Check}, as well as any checks introduced using @code{pragma Check_Name}.
! Note that @code{Atomic_Synchronization} is not automatically suppressed by use of this option.
  
  If the code depends on certain checks being active, you can use
! pragma @code{Unsuppress} either as a configuration pragma or as
  a local pragma to make sure that a specified check is performed
! even if @code{gnatp} is specified.
  
! The @code{-gnatp} switch has no effect if a subsequent
! @code{-gnat-p} switch appears.
  @end table
  
  @geindex -gnat-p (gcc)
*************** The @emph{-gnatp} switch has no effect i
*** 13795,13801 ****
  
  @item @code{-gnat-p}
  
! This switch cancels the effect of a previous @emph{gnatp} switch.
  @end table
  
  @geindex -gnato?? (gcc)
--- 14031,14037 ----
  
  @item @code{-gnat-p}
  
! This switch cancels the effect of a previous @code{gnatp} switch.
  @end table
  
  @geindex -gnato?? (gcc)
*************** the base type range.
*** 13834,13840 ****
  
  In MINIMIZED mode, overflows in intermediate operations are avoided
  where possible by using a larger integer type for the computation
! (typically @cite{Long_Long_Integer}). Overflow checking ensures that
  the result fits in this larger integer type.
  
  @item @emph{3 = ELIMINATED}
--- 14070,14076 ----
  
  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}
*************** by using multi-precision arithmetic. In
*** 13844,13850 ****
  has no effect on intermediate operations (since overflow is impossible).
  @end table
  
! If two digits are present after @emph{-gnato} then the first digit
  sets the mode for expressions outside assertions, and the second digit
  sets the mode for expressions within assertions. Here assertions is used
  in the technical sense (which includes for example precondition and
--- 14080,14086 ----
  has no effect on intermediate operations (since overflow is impossible).
  @end table
  
! If two digits are present after @code{-gnato} then the first digit
  sets the mode for expressions outside assertions, and the second digit
  sets the mode for expressions within assertions. Here assertions is used
  in the technical sense (which includes for example precondition and
*************** expressions within and outside assertion
*** 13855,13868 ****
  
  If no digits are present, the default is to enable overflow checks
  and set STRICT mode for both kinds of expressions. This is compatible
! with the use of @emph{-gnato} in previous versions of GNAT.
  
  @geindex Machine_Overflows
  
! Note that the @emph{-gnato??} switch does not affect the code generated
  for any floating-point operations; it applies only to integer semantics.
! For floating-point, GNAT has the @cite{Machine_Overflows}
! attribute set to @cite{False} and the normal mode of operation is to
  generate IEEE NaN and infinite values on overflow or invalid operations
  (such as dividing 0.0 by 0.0).
  
--- 14091,14104 ----
  
  If no digits are present, the default is to enable overflow checks
  and set STRICT mode for both kinds of expressions. This is compatible
! with the use of @code{-gnato} in previous versions of GNAT.
  
  @geindex Machine_Overflows
  
! Note that the @code{-gnato??} switch does not affect the code generated
  for any floating-point operations; it applies only to integer semantics.
! For floating-point, GNAT has the @code{Machine_Overflows}
! attribute set to @code{False} and the normal mode of operation is to
  generate IEEE NaN and infinite values on overflow or invalid operations
  (such as dividing 0.0 by 0.0).
  
*************** subscript), or a wild jump (from an out
*** 13874,13880 ****
  checking is also quite expensive in time and space, since in general it
  requires the use of double length arithmetic.
  
! Note again that the default is @emph{-gnato11} (equivalent to @emph{-gnato1}),
  so overflow checking is performed in STRICT mode by default.
  @end table
  
--- 14110,14116 ----
  checking is also quite expensive in time and space, since in general it
  requires the use of double length arithmetic.
  
! Note again that the default is @code{-gnato11} (equivalent to @code{-gnato1}),
  so overflow checking is performed in STRICT mode by default.
  @end table
  
*************** so overflow checking is performed in STR
*** 13892,13898 ****
  
  Enables dynamic checks for access-before-elaboration
  on subprogram calls and generic instantiations.
! Note that @emph{-gnatE} is not necessary for safety, because in the
  default mode, GNAT ensures statically that the checks would not fail.
  For full details of the effect and use of this switch,
  @ref{1c,,Compiling with gcc}.
--- 14128,14134 ----
  
  Enables dynamic checks for access-before-elaboration
  on subprogram calls and generic instantiations.
! Note that @code{-gnatE} is not necessary for safety, because in the
  default mode, GNAT ensures statically that the checks would not fail.
  For full details of the effect and use of this switch,
  @ref{1c,,Compiling with gcc}.
*************** this switch see @ref{f4,,Stack Overflow
*** 13917,13929 ****
  @geindex Unsuppress
  
  The setting of these switches only controls the default setting of the
! checks. You may modify them using either @cite{Suppress} (to remove
! checks) or @cite{Unsuppress} (to add back suppressed checks) pragmas in
  the program source.
  
  @node Using gcc for Syntax Checking,Using gcc for Semantic Checking,Run-Time Checks,Compiler Switches
  @anchor{gnat_ugn/building_executable_programs_with_gnat id20}@anchor{105}@anchor{gnat_ugn/building_executable_programs_with_gnat using-gcc-for-syntax-checking}@anchor{106}
! @subsection Using @emph{gcc} for Syntax Checking
  
  
  @geindex -gnats (gcc)
--- 14153,14165 ----
  @geindex Unsuppress
  
  The setting of these switches only controls the default setting of the
! checks. You may modify them using either @code{Suppress} (to remove
! checks) or @code{Unsuppress} (to add back suppressed checks) pragmas in
  the program source.
  
  @node Using gcc for Syntax Checking,Using gcc for Semantic Checking,Run-Time Checks,Compiler Switches
  @anchor{gnat_ugn/building_executable_programs_with_gnat id20}@anchor{105}@anchor{gnat_ugn/building_executable_programs_with_gnat using-gcc-for-syntax-checking}@anchor{106}
! @subsection Using @code{gcc} for Syntax Checking
  
  
  @geindex -gnats (gcc)
*************** the program source.
*** 13933,13939 ****
  
  @item @code{-gnats}
  
! The @cite{s} stands for 'syntax'.
  
  Run GNAT in syntax checking only mode. For
  example, the command
--- 14169,14175 ----
  
  @item @code{-gnats}
  
! The @code{s} stands for 'syntax'.
  
  Run GNAT in syntax checking only mode. For
  example, the command
*************** $ gcc -c -gnats x.adb
*** 13945,13955 ****
  compiles file @code{x.adb} in syntax-check-only mode. You can check a
  series of files in a single command
  , and can use wild cards to specify such a group of files.
! Note that you must specify the @emph{-c} (compile
! only) flag in addition to the @emph{-gnats} flag.
  
! You may use other switches in conjunction with @emph{-gnats}. In
! particular, @emph{-gnatl} and @emph{-gnatv} are useful to control the
  format of any generated error messages.
  
  When the source file is empty or contains only empty lines and/or comments,
--- 14181,14191 ----
  compiles file @code{x.adb} in syntax-check-only mode. You can check a
  series of files in a single command
  , and can use wild cards to specify such a group of files.
! Note that you must specify the @code{-c} (compile
! only) flag in addition to the @code{-gnats} flag.
  
! You may use other switches in conjunction with @code{-gnats}. In
! particular, @code{-gnatl} and @code{-gnatv} are useful to control the
  format of any generated error messages.
  
  When the source file is empty or contains only empty lines and/or comments,
*************** $
*** 13963,13972 ****
  
  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 @cite{X}
! @emph{with}s a unit @cite{Y}, compiling unit @cite{X} in syntax
  check only mode does not access the source file containing unit
! @cite{Y}.
  
  @geindex Multiple units
  @geindex syntax checking
--- 14199,14208 ----
  
  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}.
  
  @geindex Multiple units
  @geindex syntax checking
*************** check only mode does not access the sour
*** 13974,13986 ****
  Normally, GNAT allows only a single unit in a source file. However, this
  restriction does not apply in syntax-check-only mode, and it is possible
  to check a file containing multiple compilation units concatenated
! together. This is primarily used by the @cite{gnatchop} utility
  (@ref{36,,Renaming Files with gnatchop}).
  @end table
  
  @node Using gcc for Semantic Checking,Compiling Different Versions of Ada,Using gcc for Syntax Checking,Compiler Switches
  @anchor{gnat_ugn/building_executable_programs_with_gnat id21}@anchor{107}@anchor{gnat_ugn/building_executable_programs_with_gnat using-gcc-for-semantic-checking}@anchor{108}
! @subsection Using @emph{gcc} for Semantic Checking
  
  
  @geindex -gnatc (gcc)
--- 14210,14222 ----
  Normally, GNAT allows only a single unit in a source file. However, this
  restriction does not apply in syntax-check-only mode, and it is possible
  to check a file containing multiple compilation units concatenated
! together. This is primarily used by the @code{gnatchop} utility
  (@ref{36,,Renaming Files with gnatchop}).
  @end table
  
  @node Using gcc for Semantic Checking,Compiling Different Versions of Ada,Using gcc for Syntax Checking,Compiler Switches
  @anchor{gnat_ugn/building_executable_programs_with_gnat id21}@anchor{107}@anchor{gnat_ugn/building_executable_programs_with_gnat using-gcc-for-semantic-checking}@anchor{108}
! @subsection Using @code{gcc} for Semantic Checking
  
  
  @geindex -gnatc (gcc)
*************** together. This is primarily used by the
*** 13990,13996 ****
  
  @item @code{-gnatc}
  
! The @cite{c} stands for 'check'.
  Causes the compiler to operate in semantic check mode,
  with full checking for all illegalities specified in the
  Ada Reference Manual, but without generation of any object code
--- 14226,14232 ----
  
  @item @code{-gnatc}
  
! The @code{c} stands for 'check'.
  Causes the compiler to operate in semantic check mode,
  with full checking for all illegalities specified in the
  Ada Reference Manual, but without generation of any object code
*************** indicate Ada 83 compatibility mode.
*** 14052,14058 ****
  
  Although GNAT is primarily an Ada 95 / Ada 2005 compiler, this switch
  specifies that the program is to be compiled in Ada 83 mode. With
! @emph{-gnat83}, GNAT rejects most post-Ada 83 extensions and applies Ada 83
  semantics where this can be done easily.
  It is not possible to guarantee this switch does a perfect
  job; some subtle tests, such as are
--- 14288,14294 ----
  
  Although GNAT is primarily an Ada 95 / Ada 2005 compiler, this switch
  specifies that the program is to be compiled in Ada 83 mode. With
! @code{-gnat83}, GNAT rejects most post-Ada 83 extensions and applies Ada 83
  semantics where this can be done easily.
  It is not possible to guarantee this switch does a perfect
  job; some subtle tests, such as are
*************** Nevertheless, this switch may be useful
*** 14062,14079 ****
  where, due to contractual reasons, existing code needs to be maintained
  using only Ada 83 features.
  
! With few exceptions (most notably the need to use @cite{<>} on
  unconstrained 
  @geindex Generic formal parameters
  generic formal parameters,
  the use of the new Ada 95 / Ada 2005
  reserved words, and the use of packages
  with optional bodies), it is not necessary to specify the
! @emph{-gnat83} switch when compiling Ada 83 programs, because, with rare
  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 @cite{Compatibility_and_Porting_Guide} chapter in the
  @cite{GNAT Reference Manual}.
  @end table
  
--- 14298,14315 ----
  where, due to contractual reasons, existing code needs to be maintained
  using only Ada 83 features.
  
! With few exceptions (most notably the need to use @code{<>} on
  unconstrained 
  @geindex Generic formal parameters
  generic formal parameters,
  the use of the new Ada 95 / Ada 2005
  reserved words, and the use of packages
  with optional bodies), it is not necessary to specify the
! @code{-gnat83} switch when compiling Ada 83 programs, because, with rare
  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
  
*************** This switch directs the compiler to impl
*** 14090,14103 ****
  language.
  Since Ada 95 is almost completely upwards
  compatible with Ada 83, Ada 83 programs may generally be compiled using
! this switch (see the description of the @emph{-gnat83} switch for further
  information about Ada 83 mode).
  If an Ada 2005 program is compiled in Ada 95 mode,
  uses of the new Ada 2005 features will cause error
  messages or warnings.
  
  This switch also can be used to cancel the effect of a previous
! @emph{-gnat83}, @emph{-gnat05/2005}, or @emph{-gnat12/2012}
  switch earlier in the command line.
  @end table
  
--- 14326,14339 ----
  language.
  Since Ada 95 is almost completely upwards
  compatible with Ada 83, Ada 83 programs may generally be compiled using
! this switch (see the description of the @code{-gnat83} switch for further
  information about Ada 83 mode).
  If an Ada 2005 program is compiled in Ada 95 mode,
  uses of the new Ada 2005 features will cause error
  messages or warnings.
  
  This switch also can be used to cancel the effect of a previous
! @code{-gnat83}, @code{-gnat05/2005}, or @code{-gnat12/2012}
  switch earlier in the command line.
  @end table
  
*************** language, as documented in the official
*** 14117,14123 ****
  Since Ada 2005 is almost completely upwards
  compatible with Ada 95 (and thus also with Ada 83), Ada 83 and Ada 95 programs
  may generally be compiled using this switch (see the description of the
! @emph{-gnat83} and @emph{-gnat95} switches for further
  information).
  @end table
  
--- 14353,14359 ----
  Since Ada 2005 is almost completely upwards
  compatible with Ada 95 (and thus also with Ada 83), Ada 83 and Ada 95 programs
  may generally be compiled using this switch (see the description of the
! @code{-gnat83} and @code{-gnat95} switches for further
  information).
  @end table
  
*************** Since Ada 2012 is almost completely upwa
*** 14138,14144 ****
  compatible with Ada 2005 (and thus also with Ada 83, and Ada 95),
  Ada 83 and Ada 95 programs
  may generally be compiled using this switch (see the description of the
! @emph{-gnat83}, @emph{-gnat95}, and @emph{-gnat05/2005} switches
  for further information).
  @end table
  
--- 14374,14380 ----
  compatible with Ada 2005 (and thus also with Ada 83, and Ada 95),
  Ada 83 and Ada 95 programs
  may generally be compiled using this switch (see the description of the
! @code{-gnat83}, @code{-gnat95}, and @code{-gnat05/2005} switches
  for further information).
  @end table
  
*************** extensions, see the GNAT reference manua
*** 14174,14180 ****
  Normally GNAT recognizes the Latin-1 character set in source program
  identifiers, as described in the Ada Reference Manual.
  This switch causes
! GNAT to recognize alternate character sets in identifiers. @cite{c} is a
  single character  indicating the character set, as follows:
  
  
--- 14410,14416 ----
  Normally GNAT recognizes the Latin-1 character set in source program
  identifiers, as described in the Ada Reference Manual.
  This switch causes
! GNAT to recognize alternate character sets in identifiers. @code{c} is a
  single character  indicating the character set, as follows:
  
  
*************** implementation of these character sets.
*** 14283,14289 ****
  @item @code{-gnatW@emph{e}}
  
  Specify the method of encoding for wide characters.
! @cite{e} is one of the following:
  
  
  @multitable {xxxxxxxxxxxx} {xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx} 
--- 14519,14525 ----
  @item @code{-gnatW@emph{e}}
  
  Specify the method of encoding for wide characters.
! @code{e} is one of the following:
  
  
  @multitable {xxxxxxxxxxxx} {xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx} 
*************** Brackets encoding only (default value)
*** 14341,14347 ****
  For full details on these encoding
  methods see @ref{4e,,Wide_Character Encodings}.
  Note that brackets coding is always accepted, even if one of the other
! options is specified, so for example @emph{-gnatW8} specifies that both
  brackets and UTF-8 encodings will be recognized. The units that are
  with'ed directly or indirectly will be scanned using the specified
  representation scheme, and so if one of the non-brackets scheme is
--- 14577,14583 ----
  For full details on these encoding
  methods see @ref{4e,,Wide_Character Encodings}.
  Note that brackets coding is always accepted, even if one of the other
! options is specified, so for example @code{-gnatW8} specifies that both
  brackets and UTF-8 encodings will be recognized. The units that are
  with'ed directly or indirectly will be scanned using the specified
  representation scheme, and so if one of the non-brackets scheme is
*************** Note that brackets encoding only applies
*** 14354,14360 ****
  brackets are considered to be normal graphic characters, and bracket sequences
  are never recognized as wide characters.
  
! If no @emph{-gnatW?} parameter is present, then the default
  representation is normally Brackets encoding only. However, if the
  first three characters of the file are 16#EF# 16#BB# 16#BF# (the standard
  byte order mark or BOM for UTF-8), then these three characters are
--- 14590,14596 ----
  brackets are considered to be normal graphic characters, and bracket sequences
  are never recognized as wide characters.
  
! If no @code{-gnatW?} parameter is present, then the default
  representation is normally Brackets encoding only. However, if the
  first three characters of the file are 16#EF# 16#BB# 16#BF# (the standard
  byte order mark or BOM for UTF-8), then these three characters are
*************** for Wide_Text_IO files if not specifical
*** 14366,14372 ****
  parameter.
  @end table
  
! When no @emph{-gnatW?} is specified, then characters (other than wide
  characters represented using brackets notation) are treated as 8-bit
  Latin-1 codes. The codes recognized are the Latin-1 graphic characters,
  and ASCII format effectors (CR, LF, HT, VT). Other lower half control
--- 14602,14608 ----
  parameter.
  @end table
  
! When no @code{-gnatW?} is specified, then characters (other than wide
  characters represented using brackets notation) are treated as 8-bit
  Latin-1 codes. The codes recognized are the Latin-1 graphic characters,
  and ASCII format effectors (CR, LF, HT, VT). Other lower half control
*************** This is a common mode for many programs
*** 14398,14404 ****
  
  @item @code{-gnatk@emph{n}}
  
! Activates file name 'krunching'. @cite{n}, a decimal integer in the range
  1-999, indicates the maximum allowable length of a file name (not
  including the @code{.ads} or @code{.adb} extension). The default is not
  to enable file name krunching.
--- 14634,14640 ----
  
  @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
  including the @code{.ads} or @code{.adb} extension). The default is not
  to enable file name krunching.
*************** For the source file naming rules, @ref{5
*** 14418,14440 ****
  
  @item @code{-gnatn[12]}
  
! The @cite{n} here is intended to suggest the first syllable of the word 'inline'.
! GNAT recognizes and processes @cite{Inline} pragmas. However, for inlining to
  actually occur, optimization must be enabled and, by default, inlining of
  subprograms across modules is not performed. If you want to additionally
! enable inlining of subprograms specified by pragma @cite{Inline} across modules,
  you must also specify this switch.
  
  In the absence of this switch, GNAT does not attempt inlining across modules
! and does not access the bodies of subprograms for which @cite{pragma Inline} is
  specified if they are not in the current unit.
  
  You can optionally specify the inlining level: 1 for moderate inlining across
  modules, which is a good compromise between compilation times and performances
  at run time, or 2 for full inlining across modules, which may bring about
  longer compilation times. If no inlining level is specified, the compiler will
! pick it based on the optimization level: 1 for @emph{-O1}, @emph{-O2} or
! @emph{-Os} and 2 for @emph{-O3}.
  
  If you specify this switch the compiler will access these bodies,
  creating an extra source dependency for the resulting object file, and
--- 14654,14676 ----
  
  @item @code{-gnatn[12]}
  
! The @code{n} here is intended to suggest the first syllable of the word 'inline'.
! GNAT recognizes and processes @code{Inline} pragmas. However, for inlining to
  actually occur, optimization must be enabled and, by default, inlining of
  subprograms across modules is not performed. If you want to additionally
! enable inlining of subprograms specified by pragma @code{Inline} across modules,
  you must also specify this switch.
  
  In the absence of this switch, GNAT does not attempt inlining across modules
! and does not access the bodies of subprograms for which @code{pragma Inline} is
  specified if they are not in the current unit.
  
  You can optionally specify the inlining level: 1 for moderate inlining across
  modules, which is a good compromise between compilation times and performances
  at run time, or 2 for full inlining across modules, which may bring about
  longer compilation times. If no inlining level is specified, the compiler will
! pick it based on the optimization level: 1 for @code{-O1}, @code{-O2} or
! @code{-Os} and 2 for @code{-O3}.
  
  If you specify this switch the compiler will access these bodies,
  creating an extra source dependency for the resulting object file, and
*************** generates additional dependencies.
*** 14455,14461 ****
  
  When using a gcc-based back end (in practice this means using any version
  of GNAT other than the JGNAT, .NET or GNAAMP versions), then the use of
! @emph{-gnatN} is deprecated, and the use of @emph{-gnatn} is preferred.
  Historically front end inlining was more extensive than the gcc back end
  inlining, but that is no longer the case.
  @end table
--- 14691,14697 ----
  
  When using a gcc-based back end (in practice this means using any version
  of GNAT other than the JGNAT, .NET or GNAAMP versions), then the use of
! @code{-gnatN} is deprecated, and the use of @code{-gnatn} is preferred.
  Historically front end inlining was more extensive than the gcc back end
  inlining, but that is no longer the case.
  @end table
*************** This not normally required, but is used
*** 14483,14489 ****
  Typically
  these tools do the necessary compilations automatically, so you should
  not have to specify this switch in normal operation.
! Note that the combination of switches @emph{-gnatct}
  generates a tree in the form required by ASIS applications.
  @end table
  
--- 14719,14725 ----
  Typically
  these tools do the necessary compilations automatically, so you should
  not have to specify this switch in normal operation.
! Note that the combination of switches @code{-gnatct}
  generates a tree in the form required by ASIS applications.
  @end table
  
*************** either directly or indirectly.
*** 14506,14516 ****
  
  @item @code{-pass-exit-codes}
  
! If this switch is not used, the exit code returned by @emph{gcc} when
  compiling multiple files indicates whether all source files have
  been successfully used to generate object files or not.
  
! When @emph{-pass-exit-codes} is used, @emph{gcc} exits with an extended
  exit status and allows an integrated development environment to better
  react to a compilation failure. Those exit status are:
  
--- 14742,14752 ----
  
  @item @code{-pass-exit-codes}
  
! If this switch is not used, the exit code returned by @code{gcc} when
  compiling multiple files indicates whether all source files have
  been successfully used to generate object files or not.
  
! When @code{-pass-exit-codes} is used, @code{gcc} exits with an extended
  exit status and allows an integrated development environment to better
  react to a compilation failure. Those exit status are:
  
*************** An object file has been generated for ev
*** 14569,14579 ****
  
  @item @code{-gnatd@emph{x}}
  
! Activate internal debugging switches. @cite{x} is a letter or digit, or
  string of letters or digits, which specifies the type of debugging
  outputs desired. Normally these are used only for internal development
  or system debugging purposes. You can find full documentation for these
! switches in the body of the @cite{Debug} unit in the compiler source
  file @code{debug.adb}.
  @end table
  
--- 14805,14815 ----
  
  @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
  outputs desired. Normally these are used only for internal development
  or system debugging purposes. You can find full documentation for these
! switches in the body of the @code{Debug} unit in the compiler source
  file @code{debug.adb}.
  @end table
  
*************** is to list this expanded code in a form
*** 14593,14603 ****
  This is very useful in understanding the implications of various Ada
  usage on the efficiency of the generated code. There are many cases in
  Ada (e.g., the use of controlled types), where simple Ada statements can
! generate a lot of run-time code. By using @emph{-gnatG} you can identify
  these cases, and consider whether it may be desirable to modify the coding
  approach to improve efficiency.
  
! The optional parameter @cite{nn} if present after -gnatG specifies an
  alternative maximum line length that overrides the normal default of 72.
  This value is in the range 40-999999, values less than 40 being silently
  reset to 40. The equal sign is optional.
--- 14829,14839 ----
  This is very useful in understanding the implications of various Ada
  usage on the efficiency of the generated code. There are many cases in
  Ada (e.g., the use of controlled types), where simple Ada statements can
! generate a lot of run-time code. By using @code{-gnatG} you can identify
  these cases, and consider whether it may be desirable to modify the coding
  approach to improve efficiency.
  
! The optional parameter @code{nn} if present after -gnatG specifies an
  alternative maximum line length that overrides the normal default of 72.
  This value is in the range 40-999999, values less than 40 being silently
  reset to 40. The equal sign is optional.
*************** easily understood by an Ada programmer.
*** 14607,14618 ****
  additions correspond to low level features used in the generated code that
  do not have any exact analogies in pure Ada source form. The following
  is a partial list of these special constructions. See the spec
! of package @cite{Sprint} in file @code{sprint.ads} for a full list.
  
  @geindex -gnatL (gcc)
  
! If the switch @emph{-gnatL} is used in conjunction with
! @emph{-gnatG}, then the original source lines are interspersed
  in the expanded source (as comment lines with the original line number).
  
  
--- 14843,14854 ----
  additions correspond to low level features used in the generated code that
  do not have any exact analogies in pure Ada source form. The following
  is a partial list of these special constructions. See the spec
! of package @code{Sprint} in file @code{sprint.ads} for a full list.
  
  @geindex -gnatL (gcc)
  
! If the switch @code{-gnatL} is used in conjunction with
! @code{-gnatG}, then the original source lines are interspersed
  in the expanded source (as comment lines with the original line number).
  
  
*************** Shows the finalization (cleanup) procedu
*** 14628,14634 ****
  
  @item @code{(if @emph{expr} then @emph{expr} else @emph{expr})}
  
! Conditional expression equivalent to the @cite{x?y:z} construction in C.
  
  @item @code{@emph{target}^(@emph{source})}
  
--- 14864,14870 ----
  
  @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})}
  
*************** integers without any kind of scaling.
*** 14660,14666 ****
  
  @item @code{free @emph{expr} [storage_pool = @emph{xxx}]}
  
! Shows the storage pool associated with a @cite{free} statement.
  
  @item @code{[subtype or type declaration]}
  
--- 14896,14902 ----
  
  @item @code{free @emph{expr} [storage_pool = @emph{xxx}]}
  
! Shows the storage pool associated with a @code{free} statement.
  
  @item @code{[subtype or type declaration]}
  
*************** type that is referenced elsewhere in the
*** 14669,14680 ****
  
  @item @code{freeze @emph{type-name} [@emph{actions}]}
  
! Shows the point at which @cite{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 @cite{itype}.
  
  @item @code{@emph{function-name}! (@emph{arg}, @emph{arg}, @emph{arg})}
  
--- 14905,14916 ----
  
  @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.
*** 14682,14688 ****
  
  @item @code{@emph{label-name} : label}
  
! Declaration of label @cite{labelname}.
  
  @item @code{#$ @emph{subprogram-name}}
  
--- 14918,14924 ----
  
  @item @code{@emph{label-name} : label}
  
! Declaration of label @code{labelname}.
  
  @item @code{#$ @emph{subprogram-name}}
  
*************** convenient manner).
*** 14692,14703 ****
  
  @item @code{@emph{expr} && @emph{expr} && @emph{expr} ... && @emph{expr}}
  
! A multiple concatenation (same effect as @cite{expr} & @cite{expr} &
! @cite{expr}, but handled more efficiently).
  
  @item @code{[constraint_error]}
  
! Raise the @cite{Constraint_Error} exception.
  
  @item @code{@emph{expression}'reference}
  
--- 14928,14939 ----
  
  @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).
  
  @item @code{[constraint_error]}
  
! Raise the @code{Constraint_Error} exception.
  
  @item @code{@emph{expression}'reference}
  
*************** A pointer to the result of evaluating @{
*** 14705,14711 ****
  
  @item @code{@emph{target-type}!(@emph{source-expression})}
  
! An unchecked conversion of @cite{source-expression} to @cite{target-type}.
  
  @item @code{[@emph{numerator}/@emph{denominator}]}
  
--- 14941,14947 ----
  
  @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}]}
  
*************** evaluation of the expression 1.0/27.0).
*** 14722,14755 ****
  
  @item @code{-gnatD[=nn]}
  
! When used in conjunction with @emph{-gnatG}, this switch causes
  the expanded source, as described above for
! @emph{-gnatG} to be written to files with names
  @code{xxx.dg}, where @code{xxx} is the normal file name,
  instead of to the standard output file. For
  example, if the source file name is @code{hello.adb}, then a file
  @code{hello.adb.dg} will be written.  The debugging
! information generated by the @emph{gcc} @emph{-g} switch
  will refer to the generated @code{xxx.dg} file. This allows
  you to do source level debugging using the generated code which is
  sometimes useful for complex code, for example to find out exactly
  which part of a complex construction raised an exception. This switch
  also suppresses generation of cross-reference information (see
! @emph{-gnatx}) since otherwise the cross-reference information
  would refer to the @code{.dg} file, which would cause
  confusion since this is not the original source file.
  
! Note that @emph{-gnatD} actually implies @emph{-gnatG}
  automatically, so it is not necessary to give both options.
! In other words @emph{-gnatD} is equivalent to @emph{-gnatDG}).
  
  @geindex -gnatL (gcc)
  
! If the switch @emph{-gnatL} is used in conjunction with
! @emph{-gnatDG}, then the original source lines are interspersed
  in the expanded source (as comment lines with the original line number).
  
! The optional parameter @cite{nn} if present after -gnatD specifies an
  alternative maximum line length that overrides the normal default of 72.
  This value is in the range 40-999999, values less than 40 being silently
  reset to 40. The equal sign is optional.
--- 14958,14991 ----
  
  @item @code{-gnatD[=nn]}
  
! When used in conjunction with @code{-gnatG}, this switch causes
  the expanded source, as described above for
! @code{-gnatG} to be written to files with names
  @code{xxx.dg}, where @code{xxx} is the normal file name,
  instead of to the standard output file. For
  example, if the source file name is @code{hello.adb}, then a file
  @code{hello.adb.dg} will be written.  The debugging
! information generated by the @code{gcc} @code{-g} switch
  will refer to the generated @code{xxx.dg} file. This allows
  you to do source level debugging using the generated code which is
  sometimes useful for complex code, for example to find out exactly
  which part of a complex construction raised an exception. This switch
  also suppresses generation of cross-reference information (see
! @code{-gnatx}) since otherwise the cross-reference information
  would refer to the @code{.dg} file, which would cause
  confusion since this is not the original source file.
  
! Note that @code{-gnatD} actually implies @code{-gnatG}
  automatically, so it is not necessary to give both options.
! In other words @code{-gnatD} is equivalent to @code{-gnatDG}).
  
  @geindex -gnatL (gcc)
  
! If the switch @code{-gnatL} is used in conjunction with
! @code{-gnatDG}, then the original source lines are interspersed
  in the expanded source (as comment lines with the original line number).
  
! The optional parameter @code{nn} if present after -gnatD specifies an
  alternative maximum line length that overrides the normal default of 72.
  This value is in the range 40-999999, values less than 40 being silently
  reset to 40. The equal sign is optional.
*************** restriction warnings rather than restric
*** 14777,14815 ****
  
  @table @asis
  
! @item @code{-gnatR[0|1|2|3[s]]}
  
  This switch controls output from the compiler of a listing showing
! representation information for declared types and objects. For
! @emph{-gnatR0}, no information is output (equivalent to omitting
! the @emph{-gnatR} switch). For @emph{-gnatR1} (which is the default,
! so @emph{-gnatR} with no parameter has the same effect), size and alignment
! information is listed for declared array and record types. For
! @emph{-gnatR2}, size and alignment information is listed for all
! declared types and objects. The @cite{Linker_Section} is also listed for any
! entity for which the @cite{Linker_Section} is set explicitly or implicitly (the
! latter case occurs for objects of a type for which a @cite{Linker_Section}
  is set).
  
! Finally @emph{-gnatR3} includes symbolic
! expressions for values that are computed at run time for
! variant records. These symbolic expressions have a mostly obvious
! format with #n being used to represent the value of the n'th
! discriminant. See source files @code{repinfo.ads/adb} in the
! @cite{GNAT} sources for full details on the format of @emph{-gnatR3}
! output. If the switch is followed by an s (e.g., @emph{-gnatR2s}), then
! the output is to a file with the name @code{file.rep} where
! file is the name of the corresponding source file.
  
! @item @code{-gnatRm[s]}
  
! This form of the switch controls output of subprogram conventions
! and parameter passing mechanisms for all subprograms. A following
! @cite{s} means output to a file as described above.
  
  Note that it is possible for record components to have zero size. In
  this case, the component clause uses an obvious extension of permitted
! Ada syntax, for example @cite{at 0 range 0 .. -1}.
  @end table
  
  @geindex -gnatS (gcc)
--- 15013,15053 ----
  
  @table @asis
  
! @item @code{-gnatR[0|1|2|3][e][m][s]}
  
  This switch controls output from the compiler of a listing showing
! representation information for declared types, objects and subprograms.
! For @code{-gnatR0}, no information is output (equivalent to omitting
! the @code{-gnatR} switch). For @code{-gnatR1} (which is the default,
! so @code{-gnatR} with no parameter has the same effect), size and
! alignment information is listed for declared array and record types.
! For @code{-gnatR2}, size and alignment information is listed for all
! declared types and objects. The @code{Linker_Section} is also listed for any
! entity for which the @code{Linker_Section} is set explicitly or implicitly (the
! latter case occurs for objects of a type for which a @code{Linker_Section}
  is set).
  
! For @code{-gnatR3}, symbolic expressions for values that are computed
! at run time for records are included. These symbolic expressions have
! a mostly obvious format with #n being used to represent the value of the
! n'th discriminant. See source files @code{repinfo.ads/adb} in the
! GNAT sources for full details on the format of @code{-gnatR3} output.
  
! If the switch is followed by an @code{e} (e.g. @code{-gnatR2e}), then
! extended representation information for record sub-components of records
! are included.
  
! If the switch is followed by an @code{m} (e.g. @code{-gnatRm}), then
! subprogram conventions and parameter passing mechanisms for all the
! subprograms are included.
! 
! If the switch is followed by an @code{s} (e.g., @code{-gnatR3s}), then
! the output is to a file with the name @code{file.rep} where file is
! the name of the corresponding source file.
  
  Note that it is possible for record components to have zero size. In
  this case, the component clause uses an obvious extension of permitted
! Ada syntax, for example @code{at 0 range 0 .. -1}.
  @end table
  
  @geindex -gnatS (gcc)
*************** Ada syntax, for example @cite{at 0 range
*** 14819,14825 ****
  
  @item @code{-gnatS}
  
! The use of the switch @emph{-gnatS} for an
  Ada compilation will cause the compiler to output a
  representation of package Standard in a form very
  close to standard Ada. It is not quite possible to
--- 15057,15063 ----
  
  @item @code{-gnatS}
  
! The use of the switch @code{-gnatS} for an
  Ada compilation will cause the compiler to output a
  representation of package Standard in a form very
  close to standard Ada. It is not quite possible to
*************** types in package Standard.
*** 14840,14846 ****
  
  Normally the compiler generates full cross-referencing information in
  the @code{ALI} file. This information is used by a number of tools,
! including @cite{gnatfind} and @cite{gnatxref}. The @emph{-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
--- 15078,15084 ----
  
  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
*************** speed up compilation, but means that the
*** 14851,14857 ****
  
  
  GNAT uses two methods for handling exceptions at run-time. The
! @cite{setjmp/longjmp} method saves the context when entering
  a frame with an exception handler. Then when an exception is
  raised, the context can be restored immediately, without the
  need for tracing stack frames. This method provides very fast
--- 15089,15095 ----
  
  
  GNAT uses two methods for handling exceptions at run-time. The
! @code{setjmp/longjmp} method saves the context when entering
  a frame with an exception handler. Then when an exception is
  raised, the context can be restored immediately, without the
  need for tracing stack frames. This method provides very fast
*************** the propagation of exceptions, but there
*** 14869,14875 ****
  exception handlers if no exception is raised. Note that in this
  mode and in the context of mixed Ada and C/C++ programming,
  to propagate an exception through a C/C++ code, the C/C++ code
! must be compiled with the @emph{-funwind-tables} GCC's
  option.
  
  The following switches may be used to control which of the
--- 15107,15113 ----
  exception handlers if no exception is raised. Note that in this
  mode and in the context of mixed Ada and C/C++ programming,
  to propagate an exception through a C/C++ code, the C/C++ code
! must be compiled with the @code{-funwind-tables} GCC's
  option.
  
  The following switches may be used to control which of the
*************** This option can only be used if the zero
*** 14912,14919 ****
  is available for the target in use, otherwise it will generate an error.
  @end table
  
! The same option @emph{--RTS} must be used both for @emph{gcc}
! and @emph{gnatbind}. Passing this option to @emph{gnatmake}
  (@ref{dc,,Switches for gnatmake}) will ensure the required consistency
  through the compilation and binding steps.
  
--- 15150,15157 ----
  is available for the target in use, otherwise it will generate an error.
  @end table
  
! The same option @code{--RTS} must be used both for @code{gcc}
! and @code{gnatbind}. Passing this option to @code{gnatmake}
  (@ref{dc,,Switches for gnatmake}) will ensure the required consistency
  through the compilation and binding steps.
  
*************** The use of mapping files is not required
*** 14938,14952 ****
  compiler, but mapping files can improve efficiency, particularly when
  sources are read over a slow network connection. In normal operation,
  you need not be concerned with the format or use of mapping files,
! and the @emph{-gnatem} switch is not a switch that you would use
  explicitly. It is intended primarily for use by automatic tools such as
! @emph{gnatmake} running under the project file facility. The
  description here of the format of mapping files is provided
  for completeness and for possible use by other tools.
  
  A mapping file is a sequence of sets of three lines. In each set, the
! first line is the unit name, in lower case, with @cite{%s} appended
! for specs and @cite{%b} appended for bodies; the second line is the
  file name; and the third line is the path name.
  
  Example:
--- 15176,15190 ----
  compiler, but mapping files can improve efficiency, particularly when
  sources are read over a slow network connection. In normal operation,
  you need not be concerned with the format or use of mapping files,
! and the @code{-gnatem} switch is not a switch that you would use
  explicitly. It is intended primarily for use by automatic tools such as
! @code{gnatmake} running under the project file facility. The
  description here of the format of mapping files is provided
  for completeness and for possible use by other tools.
  
  A mapping file is a sequence of sets of three lines. In each set, the
! first line is the unit name, in lower case, with @code{%s} appended
! for specs and @code{%b} appended for bodies; the second line is the
  file name; and the third line is the path name.
  
  Example:
*************** main.2.ada
*** 14957,14971 ****
  /gnat/project1/sources/main.2.ada
  @end example
  
! When the switch @emph{-gnatem} is specified, the compiler will
  create in memory the two mappings from the specified file. If there is
  any problem (nonexistent file, truncated file or duplicate entries),
  no mapping will be created.
  
! Several @emph{-gnatem} switches may be specified; however, only the
  last one on the command line will be taken into account.
  
! When using a project file, @emph{gnatmake} creates a temporary
  mapping file and communicates it to the compiler using this switch.
  @end table
  
--- 15195,15209 ----
  /gnat/project1/sources/main.2.ada
  @end example
  
! When the switch @code{-gnatem} is specified, the compiler will
  create in memory the two mappings from the specified file. If there is
  any problem (nonexistent file, truncated file or duplicate entries),
  no mapping will be created.
  
! Several @code{-gnatem} switches may be specified; however, only the
  last one on the command line will be taken into account.
  
! When using a project file, @code{gnatmake} creates a temporary
  mapping file and communicates it to the compiler using this switch.
  @end table
  
*************** details of code generation with respect
*** 14980,14989 ****
  architectures. This includes variations in instruction sets (e.g.,
  different members of the power pc family), and different requirements
  for optimal arrangement of instructions (e.g., different members of
! the x86 family). The list of available @emph{-m} switches may be
  found in the GCC documentation.
  
! Use of these @emph{-m} switches may in some cases result in improved
  code performance.
  
  The GNAT technology is tested and qualified without any
--- 15218,15227 ----
  architectures. This includes variations in instruction sets (e.g.,
  different members of the power pc family), and different requirements
  for optimal arrangement of instructions (e.g., different members of
! the x86 family). The list of available @code{-m} switches may be
  found in the GCC documentation.
  
! Use of these @code{-m} switches may in some cases result in improved
  code performance.
  
  The GNAT technology is tested and qualified without any
*************** switches. However, we generally expect m
*** 14993,15001 ****
  successfully with GNAT, and many customers have reported successful
  use of these options.
  
! Our general advice is to avoid the use of @emph{-m} switches unless
  special needs lead to requirements in this area. In particular,
! there is no point in using @emph{-m} switches to improve performance
  unless you actually see a performance improvement.
  
  @node Linker Switches,Binding with gnatbind,Compiler Switches,Building Executable Programs with GNAT
--- 15231,15239 ----
  successfully with GNAT, and many customers have reported successful
  use of these options.
  
! Our general advice is to avoid the use of @code{-m} switches unless
  special needs lead to requirements in this area. In particular,
! there is no point in using @code{-m} switches to improve performance
  unless you actually see a performance improvement.
  
  @node Linker Switches,Binding with gnatbind,Compiler Switches,Building Executable Programs with GNAT
*************** platforms.
*** 15020,15037 ****
  
  @node Binding with gnatbind,Linking with gnatlink,Linker Switches,Building Executable Programs with GNAT
  @anchor{gnat_ugn/building_executable_programs_with_gnat binding-with-gnatbind}@anchor{1d}@anchor{gnat_ugn/building_executable_programs_with_gnat id32}@anchor{11b}
! @section Binding with @cite{gnatbind}
  
  
  @geindex gnatbind
  
! This chapter describes the GNAT binder, @cite{gnatbind}, which is used
  to bind compiled GNAT objects.
  
! Note: to invoke @cite{gnatbind} with a project file, use the @cite{gnat}
! driver (see @emph{The_GNAT_Driver_and_Project_Files}).
! 
! The @cite{gnatbind} program performs four separate functions:
  
  
  @itemize *
--- 15258,15272 ----
  
  @node Binding with gnatbind,Linking with gnatlink,Linker Switches,Building Executable Programs with GNAT
  @anchor{gnat_ugn/building_executable_programs_with_gnat binding-with-gnatbind}@anchor{1d}@anchor{gnat_ugn/building_executable_programs_with_gnat id32}@anchor{11b}
! @section Binding with @code{gnatbind}
  
  
  @geindex gnatbind
  
! This chapter describes the GNAT binder, @code{gnatbind}, which is used
  to bind compiled GNAT objects.
  
! The @code{gnatbind} program performs four separate functions:
  
  
  @itemize *
*************** Generates a main program incorporating t
*** 15052,15058 ****
  This program is a small Ada package (body and spec) that
  must be subsequently compiled
  using the GNAT compiler. The necessary compilation step is usually
! performed automatically by @emph{gnatlink}. The two most important
  functions of this program
  are to call the elaboration routines of units in an appropriate order
  and to call the main program.
--- 15287,15293 ----
  This program is a small Ada package (body and spec) that
  must be subsequently compiled
  using the GNAT compiler. The necessary compilation step is usually
! performed automatically by @code{gnatlink}. The two most important
  functions of this program
  are to call the elaboration routines of units in an appropriate order
  and to call the main program.
*************** and to call the main program.
*** 15060,15066 ****
  @item 
  Determines the set of object files required by the given main program.
  This information is output in the forms of comments in the generated program,
! to be read by the @emph{gnatlink} utility used to link the Ada application.
  @end itemize
  
  @menu
--- 15295,15301 ----
  @item 
  Determines the set of object files required by the given main program.
  This information is output in the forms of comments in the generated program,
! to be read by the @code{gnatlink} utility used to link the Ada application.
  @end itemize
  
  @menu
*************** to be read by the @emph{gnatlink} utilit
*** 15074,15090 ****
  
  @node Running gnatbind,Switches for gnatbind,,Binding with gnatbind
  @anchor{gnat_ugn/building_executable_programs_with_gnat running-gnatbind}@anchor{11c}@anchor{gnat_ugn/building_executable_programs_with_gnat id33}@anchor{11d}
! @subsection Running @cite{gnatbind}
  
  
! The form of the @cite{gnatbind} command is
  
  @example
! $ gnatbind [`switches`] `mainprog`[.ali] [`switches`]
  @end example
  
  where @code{mainprog.adb} is the Ada file containing the main program
! unit body. @cite{gnatbind} constructs an Ada
  package in two files whose names are
  @code{b~mainprog.ads}, and @code{b~mainprog.adb}.
  For example, if given the
--- 15309,15325 ----
  
  @node Running gnatbind,Switches for gnatbind,,Binding with gnatbind
  @anchor{gnat_ugn/building_executable_programs_with_gnat running-gnatbind}@anchor{11c}@anchor{gnat_ugn/building_executable_programs_with_gnat id33}@anchor{11d}
! @subsection Running @code{gnatbind}
  
  
! The form of the @code{gnatbind} command is
  
  @example
! $ gnatbind [ switches ] mainprog[.ali] [ switches ]
  @end example
  
  where @code{mainprog.adb} is the Ada file containing the main program
! unit body. @code{gnatbind} constructs an Ada
  package in two files whose names are
  @code{b~mainprog.ads}, and @code{b~mainprog.adb}.
  For example, if given the
*************** and @code{b~hello.adb}.
*** 15094,15105 ****
  
  When doing consistency checking, the binder takes into consideration
  any source files it can locate. For example, if the binder determines
! that the given main program requires the package @cite{Pack}, whose
  @code{.ALI}
  file is @code{pack.ali} and whose corresponding source spec file is
  @code{pack.ads}, it attempts to locate the source file @code{pack.ads}
  (using the same search path conventions as previously described for the
! @emph{gcc} command). If it can locate this source file, it checks that
  the time stamps
  or source checksums of the source and its references to in @code{ALI} files
  match. In other words, any @code{ALI} files that mentions this spec must have
--- 15329,15340 ----
  
  When doing consistency checking, the binder takes into consideration
  any source files it can locate. For example, if the binder determines
! that the given main program requires the package @code{Pack}, whose
  @code{.ALI}
  file is @code{pack.ali} and whose corresponding source spec file is
  @code{pack.ads}, it attempts to locate the source file @code{pack.ads}
  (using the same search path conventions as previously described for the
! @code{gcc} command). If it can locate this source file, it checks that
  the time stamps
  or source checksums of the source and its references to in @code{ALI} files
  match. In other words, any @code{ALI} files that mentions this spec must have
*************** source file without compiling files that
*** 15117,15139 ****
  error messages to be generated by the binder.
  
  For example, suppose you have a main program @code{hello.adb} and a
! package @cite{P}, from file @code{p.ads} and you perform the following
  steps:
  
  
  @itemize *
  
  @item 
! Enter @cite{gcc -c hello.adb} to compile the main program.
  
  @item 
! Enter @cite{gcc -c p.ads} to compile package @cite{P}.
  
  @item 
  Edit file @code{p.ads}.
  
  @item 
! Enter @cite{gnatbind hello}.
  @end itemize
  
  At this point, the file @code{p.ali} contains an out-of-date time stamp
--- 15352,15374 ----
  error messages to be generated by the binder.
  
  For example, suppose you have a main program @code{hello.adb} and a
! package @code{P}, from file @code{p.ads} and you perform the following
  steps:
  
  
  @itemize *
  
  @item 
! Enter @code{gcc -c hello.adb} to compile the main program.
  
  @item 
! Enter @code{gcc -c p.ads} to compile package @code{P}.
  
  @item 
  Edit file @code{p.ads}.
  
  @item 
! Enter @code{gnatbind hello}.
  @end itemize
  
  At this point, the file @code{p.ali} contains an out-of-date time stamp
*************** succeed, generating a main program. You
*** 15150,15168 ****
  with the contents of this file, but for reference purposes a sample
  binder output file is given in @ref{e,,Example of Binder Output File}.
  
! In most normal usage, the default mode of @emph{gnatbind} which is to
  generate the main package in Ada, as described in the previous section.
  In particular, this means that any Ada programmer can read and understand
  the generated main program. It can also be debugged just like any other
! Ada code provided the @emph{-g} switch is used for
! @emph{gnatbind} and @emph{gnatlink}.
  
  @node Switches for gnatbind,Command-Line Access,Running gnatbind,Binding with gnatbind
  @anchor{gnat_ugn/building_executable_programs_with_gnat id34}@anchor{11e}@anchor{gnat_ugn/building_executable_programs_with_gnat switches-for-gnatbind}@anchor{11f}
! @subsection Switches for @emph{gnatbind}
  
  
! The following switches are available with @cite{gnatbind}; details will
  be presented in subsequent sections.
  
  @geindex --version (gnatbind)
--- 15385,15403 ----
  with the contents of this file, but for reference purposes a sample
  binder output file is given in @ref{e,,Example of Binder Output File}.
  
! In most normal usage, the default mode of @code{gnatbind} which is to
  generate the main package in Ada, as described in the previous section.
  In particular, this means that any Ada programmer can read and understand
  the generated main program. It can also be debugged just like any other
! Ada code provided the @code{-g} switch is used for
! @code{gnatbind} and @code{gnatlink}.
  
  @node Switches for gnatbind,Command-Line Access,Running gnatbind,Binding with gnatbind
  @anchor{gnat_ugn/building_executable_programs_with_gnat id34}@anchor{11e}@anchor{gnat_ugn/building_executable_programs_with_gnat switches-for-gnatbind}@anchor{11f}
! @subsection Switches for @code{gnatbind}
  
  
! The following switches are available with @code{gnatbind}; details will
  be presented in subsequent sections.
  
  @geindex --version (gnatbind)
*************** Display Copyright and version, then exit
*** 15182,15188 ****
  
  @item @code{--help}
  
! If @emph{--version} was not used, display usage, then exit disregarding
  all other options.
  @end table
  
--- 15417,15423 ----
  
  @item @code{--help}
  
! If @code{--version} was not used, display usage, then exit disregarding
  all other options.
  @end table
  
*************** Check only, no generation of binder outp
*** 15257,15265 ****
  @item @code{-d@emph{nn}[k|m]}
  
  This switch can be used to change the default task stack size value
! to a specified size @cite{nn}, which is expressed in bytes by default, or
! in kilobytes when suffixed with @cite{k} or in megabytes when suffixed
! with @cite{m}.
  In the absence of a @code{[k|m]} suffix, this switch is equivalent,
  in effect, to completing all task specs with
  
--- 15492,15500 ----
  @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
! in kilobytes when suffixed with @code{k} or in megabytes when suffixed
! with @code{m}.
  In the absence of a @code{[k|m]} suffix, this switch is equivalent,
  in effect, to completing all task specs with
  
*************** When they do not already have such a pra
*** 15278,15292 ****
  @item @code{-D@emph{nn}[k|m]}
  
  This switch can be used to change the default secondary stack size value
! to a specified size @cite{nn}, which is expressed in bytes by default, or
! in kilobytes when suffixed with @cite{k} or in megabytes when suffixed
! with @cite{m}.
  
  The secondary stack is used to deal with functions that return a variable
  sized result, for example a function returning an unconstrained
  String. There are two ways in which this secondary stack is allocated.
  
! For most targets, the secondary stack is growing on demand and is allocated
  as a chain of blocks in the heap. The -D option is not very
  relevant. It only give some control over the size of the allocated
  blocks (whose size is the minimum of the default secondary stack size value,
--- 15513,15527 ----
  @item @code{-D@emph{nn}[k|m]}
  
  This switch can be used to change the default secondary stack size value
! to a specified size @code{nn}, which is expressed in bytes by default, or
! in kilobytes when suffixed with @code{k} or in megabytes when suffixed
! with @code{m}.
  
  The secondary stack is used to deal with functions that return a variable
  sized result, for example a function returning an unconstrained
  String. There are two ways in which this secondary stack is allocated.
  
! For most targets, the secondary stack grows on demand and is allocated
  as a chain of blocks in the heap. The -D option is not very
  relevant. It only give some control over the size of the allocated
  blocks (whose size is the minimum of the default secondary stack size value,
*************** Store tracebacks in exception occurrence
*** 15321,15330 ****
  The "a" is for "address"; tracebacks will contain hexadecimal addresses,
  unless symbolic tracebacks are enabled.
  
! See also the packages @cite{GNAT.Traceback} and
! @cite{GNAT.Traceback.Symbolic} for more information.
! Note that on x86 ports, you must not use @emph{-fomit-frame-pointer}
! @emph{gcc} option.
  @end table
  
  @geindex -Es (gnatbind)
--- 15556,15565 ----
  The "a" is for "address"; tracebacks will contain hexadecimal addresses,
  unless symbolic tracebacks are enabled.
  
! See also the packages @code{GNAT.Traceback} and
! @code{GNAT.Traceback.Symbolic} for more information.
! Note that on x86 ports, you must not use @code{-fomit-frame-pointer}
! @code{gcc} option.
  @end table
  
  @geindex -Es (gnatbind)
*************** The "s" is for "symbolic"; symbolic trac
*** 15345,15351 ****
  
  @item @code{-E}
  
! Currently the same as @cite{-Ea}.
  @end table
  
  @geindex -f (gnatbind)
--- 15580,15586 ----
  
  @item @code{-E}
  
! Currently the same as @code{-Ea}.
  @end table
  
  @geindex -f (gnatbind)
*************** Force elaboration order.
*** 15365,15371 ****
  
  @item @code{-F}
  
! Force the checks of elaboration flags. @emph{gnatbind} does not normally
  generate checks of elaboration flags for the main executable, except when
  a Stand-Alone Library is used. However, there are cases when this cannot be
  detected by gnatbind. An example is importing an interface of a Stand-Alone
--- 15600,15606 ----
  
  @item @code{-F}
  
! Force the checks of elaboration flags. @code{gnatbind} does not normally
  generate checks of elaboration flags for the main executable, except when
  a Stand-Alone Library is used. However, there are cases when this cannot be
  detected by gnatbind. An example is importing an interface of a Stand-Alone
*************** Output usage (help) information.
*** 15387,15393 ****
  
  @item @code{-H32}
  
! Use 32-bit allocations for @cite{__gnat_malloc} (and thus for access types).
  For further details see @ref{120,,Dynamic Allocation Control}.
  
  @geindex -H64 (gnatbind)
--- 15622,15628 ----
  
  @item @code{-H32}
  
! Use 32-bit allocations for @code{__gnat_malloc} (and thus for access types).
  For further details see @ref{120,,Dynamic Allocation Control}.
  
  @geindex -H64 (gnatbind)
*************** For further details see @ref{120,,Dynami
*** 15396,15402 ****
  
  @item @code{-H64}
  
! Use 64-bit allocations for @cite{__gnat_malloc} (and thus for access types).
  For further details see @ref{120,,Dynamic Allocation Control}.
  
  @geindex -I (gnatbind)
--- 15631,15637 ----
  
  @item @code{-H64}
  
! Use 64-bit allocations for @code{__gnat_malloc} (and thus for access types).
  For further details see @ref{120,,Dynamic Allocation Control}.
  
  @geindex -I (gnatbind)
*************** Specify directory to be searched for sou
*** 15409,15417 ****
  
  @item @code{-I-}
  
! Do not look for sources in the current directory where @cite{gnatbind} was
  invoked, and do not look for ALI files in the directory containing the
! ALI file named in the @cite{gnatbind} command line.
  
  @geindex -l (gnatbind)
  
--- 15644,15652 ----
  
  @item @code{-I-}
  
! Do not look for sources in the current directory where @code{gnatbind} was
  invoked, and do not look for ALI files in the directory containing the
! ALI file named in the @code{gnatbind} command line.
  
  @geindex -l (gnatbind)
  
*************** Output chosen elaboration order.
*** 15423,15431 ****
  
  @item @code{-L@emph{xxx}}
  
! Bind the units for library building. In this case the adainit and
! adafinal procedures (@ref{b4,,Binding with Non-Ada Main Programs})
! are renamed to @cite{xxx`init and `xxx`final. Implies -n. (:ref:`GNAT_and_Libraries}, for more details.)
  
  @geindex -M (gnatbind)
  
--- 15658,15669 ----
  
  @item @code{-L@emph{xxx}}
  
! Bind the units for library building. In this case the @code{adainit} and
! @code{adafinal} procedures (@ref{b4,,Binding with Non-Ada Main Programs})
! are renamed to @code{@emph{xxx}init} and
! @code{@emph{xxx}final}.
! Implies -n.
! (@ref{15,,GNAT and Libraries}, for more details.)
  
  @geindex -M (gnatbind)
  
*************** supported on cross environments only.
*** 15438,15444 ****
  
  @item @code{-m@emph{n}}
  
! Limit number of detected errors or warnings to @cite{n}, where @cite{n} is
  in the range 1..999999. The default value if no switch is
  given is 9999. If the number of warnings reaches this limit, then a
  message is output and further warnings are suppressed, the bind
--- 15676,15682 ----
  
  @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
  given is 9999. If the number of warnings reaches this limit, then a
  message is output and further warnings are suppressed, the bind
*************** Do not look for library files in the sys
*** 15470,15482 ****
  @item @code{--RTS=@emph{rts-path}}
  
  Specifies the default location of the runtime library. Same meaning as the
! equivalent @emph{gnatmake} flag (@ref{dc,,Switches for gnatmake}).
  
  @geindex -o (gnatbind)
  
  @item @code{-o @emph{file}}
  
! Name the output file @cite{file} (default is @code{b~`xxx}.adb`).
  Note that if this option is used, then linking must be done manually,
  gnatlink cannot be used.
  
--- 15708,15720 ----
  @item @code{--RTS=@emph{rts-path}}
  
  Specifies the default location of the runtime library. Same meaning as the
! equivalent @code{gnatmake} flag (@ref{dc,,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,
  gnatlink cannot be used.
  
*************** included in the bind.
*** 15509,15515 ****
  
  @item @code{-Ra}
  
! Like @emph{-R} but the list includes run-time units.
  
  @geindex -s (gnatbind)
  
--- 15747,15753 ----
  
  @item @code{-Ra}
  
! Like @code{-R} but the list includes run-time units.
  
  @geindex -s (gnatbind)
  
*************** Require all source files to be present.
*** 15523,15529 ****
  
  Specifies the value to be used when detecting uninitialized scalar
  objects with pragma Initialize_Scalars.
! The @cite{xxx} string specified with the switch is one of:
  
  
  @itemize *
--- 15761,15767 ----
  
  Specifies the value to be used when detecting uninitialized scalar
  objects with pragma Initialize_Scalars.
! The @code{xxx} string specified with the switch is one of:
  
  
  @itemize *
*************** one bits. For floating-point, a large va
*** 15562,15568 ****
  (see body of package System.Scalar_Values for exact values).
  
  @item 
! @cite{xx} for hex value (two hex digits).
  
  The underlying scalar is set to a value consisting of repeated bytes, whose
  value corresponds to the given value. For example if @code{BF} is given,
--- 15800,15806 ----
  (see body of package System.Scalar_Values for exact values).
  
  @item 
! @code{xx} for hex value (two hex digits).
  
  The underlying scalar is set to a value consisting of repeated bytes, whose
  value corresponds to the given value. For example if @code{BF} is given,
*************** then a 32-bit scalar value will be set t
*** 15571,15582 ****
  
  @geindex GNAT_INIT_SCALARS
  
! In addition, you can specify @emph{-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 @cite{yy} is one
! of @emph{in/lo/hi/`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 *in} (invalid values).
  @end table
  
  @geindex -static (gnatbind)
--- 15809,15820 ----
  
  @geindex GNAT_INIT_SCALARS
  
! 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
  
  @geindex -static (gnatbind)
*************** Tolerate time stamp and other consistenc
*** 15604,15610 ****
  
  @item @code{-T@emph{n}}
  
! Set the time slice value to @cite{n} milliseconds. If the system supports
  the specification of a specific time slice value, then the indicated value
  is used. If the system does not support specific time slice values, but
  does support some general notion of round-robin scheduling, then any
--- 15842,15848 ----
  
  @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
  is used. If the system does not support specific time slice values, but
  does support some general notion of round-robin scheduling, then any
*************** A value of zero is treated specially. It
*** 15614,15626 ****
  slicing, and in addition, indicates to the tasking run time that the
  semantics should match as closely as possible the Annex D
  requirements of the Ada RM, and in particular sets the default
! scheduling policy to @cite{FIFO_Within_Priorities}.
  
  @geindex -u (gnatbind)
  
  @item @code{-u@emph{n}}
  
! Enable dynamic stack usage, with @cite{n} results stored and displayed
  at program termination. A result is generated when a task
  terminates. Results that can't be stored are displayed on the fly, at
  task termination. This option is currently not supported on Itanium
--- 15852,15864 ----
  slicing, and in addition, indicates to the tasking run time that the
  semantics should match as closely as possible the Annex D
  requirements of the Ada RM, and in particular sets the default
! scheduling policy to @code{FIFO_Within_Priorities}.
  
  @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
  terminates. Results that can't be stored are displayed on the fly, at
  task termination. This option is currently not supported on Itanium
*************** Verbose mode. Write error messages, head
*** 15637,15651 ****
  
  @item @code{-V@emph{key}=@emph{value}}
  
! Store the given association of @cite{key} to @cite{value} in the bind environment.
  Values stored this way can be retrieved at run time using
! @cite{GNAT.Bind_Environment}.
  
  @geindex -w (gnatbind)
  
  @item @code{-w@emph{x}}
  
! Warning mode; @cite{x} = s/e for suppress/treat as error.
  
  @geindex -Wx (gnatbind)
  
--- 15875,15889 ----
  
  @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
! @code{GNAT.Bind_Environment}.
  
  @geindex -w (gnatbind)
  
  @item @code{-w@emph{x}}
  
! Warning mode; @code{x} = s/e for suppress/treat as error.
  
  @geindex -Wx (gnatbind)
  
*************** Set default exit status value, normally
*** 15669,15675 ****
  
  @item @code{-y}
  
! Enable leap seconds support in @cite{Ada.Calendar} and its children.
  
  @geindex -z (gnatbind)
  
--- 15907,15913 ----
  
  @item @code{-y}
  
! Enable leap seconds support in @code{Ada.Calendar} and its children.
  
  @geindex -z (gnatbind)
  
*************** Enable leap seconds support in @cite{Ada
*** 15678,15684 ****
  No main subprogram.
  @end table
  
! You may obtain this listing of switches by running @cite{gnatbind} with
  no arguments.
  
  @menu
--- 15916,15922 ----
  No main subprogram.
  @end table
  
! You may obtain this listing of switches by running @code{gnatbind} with
  no arguments.
  
  @menu
*************** no arguments.
*** 15697,15703 ****
  @subsubsection Consistency-Checking Modes
  
  
! As described earlier, by default @cite{gnatbind} checks
  that object files are consistent with one another and are consistent
  with any source files it can locate. The following switches control binder
  access to sources.
--- 15935,15941 ----
  @subsubsection Consistency-Checking Modes
  
  
! As described earlier, by default @code{gnatbind} checks
  that object files are consistent with one another and are consistent
  with any source files it can locate. The following switches control binder
  access to sources.
*************** Override default wide character encoding
*** 15726,15732 ****
  Normally the default wide character encoding method used for standard
  [Wide_[Wide_]]Text_IO files is taken from the encoding specified for
  the main source input (see description of switch
! @emph{-gnatWx} for the compiler). The
  use of this switch for the binder (which has the same set of
  possible arguments) overrides this default as specified.
  
--- 15964,15970 ----
  Normally the default wide character encoding method used for standard
  [Wide_[Wide_]]Text_IO files is taken from the encoding specified for
  the main source input (see description of switch
! @code{-gnatWx} for the compiler). The
  use of this switch for the binder (which has the same set of
  possible arguments) overrides this default as specified.
  
*************** the resulting program is self-consistent
*** 15741,15749 ****
  If a source file has been edited since it was last compiled, and you
  specify this switch, the binder will not detect that the object
  file is out of date with respect to the source file. Note that this is the
! mode that is automatically used by @emph{gnatmake} because in this
  case the checking against sources has already been performed by
! @emph{gnatmake} in the course of compilation (i.e., before binding).
  @end table
  
  @node Binder Error Message Control,Elaboration Control,Consistency-Checking Modes,Switches for gnatbind
--- 15979,15987 ----
  If a source file has been edited since it was last compiled, and you
  specify this switch, the binder will not detect that the object
  file is out of date with respect to the source file. Note that this is the
! mode that is automatically used by @code{gnatmake} because in this
  case the checking against sources has already been performed by
! @code{gnatmake} in the course of compilation (i.e., before binding).
  @end table
  
  @node Binder Error Message Control,Elaboration Control,Consistency-Checking Modes,Switches for gnatbind
*************** All that is written to @code{stderr} is
*** 15775,15797 ****
  
  Generate brief error messages to @code{stderr} even if verbose mode is
  specified. This is relevant only when used with the
! @emph{-v} switch.
  
  @geindex -m (gnatbind)
  
  @item @code{-m@emph{n}}
  
! Limits the number of error messages to @cite{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 @cite{main} to @cite{xxx}.
  This is useful in the case of some cross-building environments, where
  the actual main program is separate from the one generated
! by @cite{gnatbind}.
  
  @geindex -ws (gnatbind)
  
--- 16013,16035 ----
  
  Generate brief error messages to @code{stderr} even if verbose mode is
  specified. This is relevant only when used with the
! @code{-v} switch.
  
  @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
  the actual main program is separate from the one generated
! by @code{gnatbind}.
  
  @geindex -ws (gnatbind)
  
*************** Check that time stamps of a given source
*** 15831,15837 ****
  Check that checksums of a given source unit are consistent
  
  @item 
! Check that consistent versions of @cite{GNAT} were used for compilation
  
  @item 
  Check consistency of configuration pragmas as required
--- 16069,16075 ----
  Check that checksums of a given source unit are consistent
  
  @item 
! Check that consistent versions of @code{GNAT} were used for compilation
  
  @item 
  Check consistency of configuration pragmas as required
*************** requirements of the Ada Reference Manual
*** 15842,15848 ****
  generated which abort the binder and prevent the output of a binder
  file and subsequent link to obtain an executable.
  
! The @emph{-t} switch converts these error messages
  into warnings, so that
  binding and linking can continue to completion even in the presence of such
  errors. The result may be a failed link (due to missing symbols), or a
--- 16080,16086 ----
  generated which abort the binder and prevent the output of a binder
  file and subsequent link to obtain an executable.
  
! The @code{-t} switch converts these error messages
  into warnings, so that
  binding and linking can continue to completion even in the presence of such
  errors. The result may be a failed link (due to missing symbols), or a
*************** non-functional executable which has unde
*** 15850,15856 ****
  
  @cartouche
  @quotation Note 
! This means that @emph{-t} should be used only in unusual situations,
  with extreme care.
  @end quotation
  @end cartouche
--- 16088,16094 ----
  
  @cartouche
  @quotation Note 
! This means that @code{-t} should be used only in unusual situations,
  with extreme care.
  @end quotation
  @end cartouche
*************** order. For full details see @ref{f,,Elab
*** 15873,15879 ****
  
  Force elaboration order.
  
! @cite{elab-order} should be the name of a "forced elaboration order file", that
  is, a text file containing library item names, one per line. A name of the
  form "some.unit%s" or "some.unit (spec)" denotes the spec of Some.Unit. A
  name of the form "some.unit%b" or "some.unit (body)" denotes the body of
--- 16111,16117 ----
  
  Force elaboration order.
  
! @code{elab-order} should be the name of a "forced elaboration order file", that
  is, a text file containing library item names, one per line. A name of the
  form "some.unit%s" or "some.unit (spec)" denotes the spec of Some.Unit. A
  name of the form "some.unit%b" or "some.unit (body)" denotes the body of
*************** will be elaborated before the body of Th
*** 15894,15900 ****
  dependences are already required by Ada rules, so this file is really just
  forcing the body of This to be elaborated before the spec of That.
  
! The given order must be consistent with Ada rules, or else @cite{gnatbind} will
  give elaboration cycle errors. For example, if you say x (body) should be
  elaborated before x (spec), there will be a cycle, because Ada rules require
  x (spec) to be elaborated before x (body); you can't have the spec and body
--- 16132,16138 ----
  dependences are already required by Ada rules, so this file is really just
  forcing the body of This to be elaborated before the spec of That.
  
! The given order must be consistent with Ada rules, or else @code{gnatbind} will
  give elaboration cycle errors. For example, if you say x (body) should be
  elaborated before x (spec), there will be a cycle, because Ada rules require
  x (spec) to be elaborated before x (body); you can't have the spec and body
*************** ignored.
*** 15914,15935 ****
  
  Normally the binder attempts to choose an elaboration order that is
  likely to minimize the likelihood of an elaboration order error resulting
! in raising a @cite{Program_Error} exception. This switch reverses the
  action of the binder, and requests that it deliberately choose an order
  that is likely to maximize the likelihood of an elaboration error.
  This is useful in ensuring portability and avoiding dependence on
  accidental fortuitous elaboration ordering.
  
! Normally it only makes sense to use the @emph{-p}
  switch if dynamic
! elaboration checking is used (@emph{-gnatE} switch used for compilation).
  This is because in the default static elaboration mode, all necessary
! @cite{Elaborate} and @cite{Elaborate_All} pragmas are implicitly inserted.
  These implicit pragmas are still respected by the binder in
! @emph{-p} mode, so a
  safe elaboration order is assured.
  
! Note that @emph{-p} is not intended for
  production use; it is more for debugging/experimental use.
  @end table
  
--- 16152,16173 ----
  
  Normally the binder attempts to choose an elaboration order that is
  likely to minimize the likelihood of an elaboration order error resulting
! in raising a @code{Program_Error} exception. This switch reverses the
  action of the binder, and requests that it deliberately choose an order
  that is likely to maximize the likelihood of an elaboration error.
  This is useful in ensuring portability and avoiding dependence on
  accidental fortuitous elaboration ordering.
  
! Normally it only makes sense to use the @code{-p}
  switch if dynamic
! elaboration checking is used (@code{-gnatE} switch used for compilation).
  This is because in the default static elaboration mode, all necessary
! @code{Elaborate} and @code{Elaborate_All} pragmas are implicitly inserted.
  These implicit pragmas are still respected by the binder in
! @code{-p} mode, so a
  safe elaboration order is assured.
  
! Note that @code{-p} is not intended for
  production use; it is more for debugging/experimental use.
  @end table
  
*************** Output usage information. The output is
*** 15975,15981 ****
  
  Output linker options to @code{stdout}. Includes library search paths,
  contents of pragmas Ident and Linker_Options, and libraries added
! by @cite{gnatbind}.
  
  @geindex -l (gnatbind)
  
--- 16213,16219 ----
  
  Output linker options to @code{stdout}. Includes library search paths,
  contents of pragmas Ident and Linker_Options, and libraries added
! by @code{gnatbind}.
  
  @geindex -l (gnatbind)
  
*************** directory names for the run-time units d
*** 15998,16005 ****
  
  @item @code{-o @emph{file}}
  
! Set name of output file to @cite{file} instead of the normal
! @code{b~`mainprog}.adb` default. Note that @cite{file} denote the Ada
  binder generated body filename.
  Note that if this option is used, then linking must be done manually.
  It is not possible to use gnatlink in this case, since it cannot locate
--- 16236,16243 ----
  
  @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
  binder generated body filename.
  Note that if this option is used, then linking must be done manually.
  It is not possible to use gnatlink in this case, since it cannot locate
*************** the binder file.
*** 16009,16015 ****
  
  @item @code{-r}
  
! Generate list of @cite{pragma Restrictions} that could be applied to
  the current unit. This is useful for code audit purposes, and also may
  be used to improve code generation in some cases.
  @end table
--- 16247,16253 ----
  
  @item @code{-r}
  
! Generate list of @code{pragma Restrictions} that could be applied to
  the current unit. This is useful for code audit purposes, and also may
  be used to improve code generation in some cases.
  @end table
*************** be used to improve code generation in so
*** 16019,16028 ****
  @subsubsection Dynamic Allocation Control
  
  
! The heap control switches -- @emph{-H32} and @emph{-H64} --
  determine whether dynamic allocation uses 32-bit or 64-bit memory.
! They only affect compiler-generated allocations via @cite{__gnat_malloc};
! explicit calls to @cite{malloc} and related functions from the C
  run-time library are unaffected.
  
  
--- 16257,16266 ----
  @subsubsection Dynamic Allocation Control
  
  
! The heap control switches -- @code{-H32} and @code{-H64} --
  determine whether dynamic allocation uses 32-bit or 64-bit memory.
! They only affect compiler-generated allocations via @code{__gnat_malloc};
! explicit calls to @code{malloc} and related functions from the C
  run-time library are unaffected.
  
  
*************** Allocate memory on 32-bit heap
*** 16035,16041 ****
  @item @code{-H64}
  
  Allocate memory on 64-bit heap.  This is the default
! unless explicitly overridden by a @cite{'Size} clause on the access type.
  @end table
  
  These switches are only effective on VMS platforms.
--- 16273,16279 ----
  @item @code{-H64}
  
  Allocate memory on 64-bit heap.  This is the default
! unless explicitly overridden by a @code{'Size} clause on the access type.
  @end table
  
  These switches are only effective on VMS platforms.
*************** These switches are only effective on VMS
*** 16047,16053 ****
  
  The description so far has assumed that the main
  program is in Ada, and that the task of the binder is to generate a
! corresponding function @cite{main} that invokes this Ada main
  program. GNAT also supports the building of executable programs where
  the main program is not in Ada, but some of the called routines are
  written in Ada and compiled using GNAT (@ref{44,,Mixed Language Programming}).
--- 16285,16291 ----
  
  The description so far has assumed that the main
  program is in Ada, and that the task of the binder is to generate a
! corresponding function @code{main} that invokes this Ada main
  program. GNAT also supports the building of executable programs where
  the main program is not in Ada, but some of the called routines are
  written in Ada and compiled using GNAT (@ref{44,,Mixed Language Programming}).
*************** containing the following callable routin
*** 16077,16086 ****
  
  @table @asis
  
! @item @emph{adainit}
  
  You must call this routine to initialize the Ada part of the program by
! calling the necessary elaboration routines. A call to @cite{adainit} is
  required before the first call to an Ada subprogram.
  
  Note that it is assumed that the basic execution environment must be setup
--- 16315,16324 ----
  
  @table @asis
  
! @item @code{adainit}
  
  You must call this routine to initialize the Ada part of the program by
! calling the necessary elaboration routines. A call to @code{adainit} is
  required before the first call to an Ada subprogram.
  
  Note that it is assumed that the basic execution environment must be setup
*************** that the FPU is in the right state.
*** 16097,16106 ****
  
  @table @asis
  
! @item @emph{adafinal}
  
  You must call this routine to perform any library-level finalization
! required by the Ada subprograms. A call to @cite{adafinal} is required
  after the last call to an Ada subprogram, and before the program
  terminates.
  @end table
--- 16335,16344 ----
  
  @table @asis
  
! @item @code{adafinal}
  
  You must call this routine to perform any library-level finalization
! required by the Ada subprograms. A call to @code{adafinal} is required
  after the last call to an Ada subprogram, and before the program
  terminates.
  @end table
*************** terminates.
*** 16111,16119 ****
  @geindex Binder
  @geindex multiple input files
  
! If the @emph{-n} switch
  is given, more than one ALI file may appear on
! the command line for @cite{gnatbind}. The normal @emph{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
--- 16349,16357 ----
  @geindex Binder
  @geindex multiple input files
  
! If the @code{-n} switch
  is given, more than one ALI file may appear on
! 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
*** 16121,16132 ****
  more quite separate groups of Ada units.
  
  The binder takes the name of its output file from the last specified ALI
! file, unless overridden by the use of the @emph{-o file}.
  
  @geindex -o (gnatbind)
  
  The output is an Ada unit in source form that can be compiled with GNAT.
! This compilation occurs automatically as part of the @emph{gnatlink}
  processing.
  
  Currently the GNAT run time requires a FPU using 80 bits mode
--- 16359,16370 ----
  more quite separate groups of Ada units.
  
  The binder takes the name of its output file from the last specified ALI
! file, unless overridden by the use of the @code{-o file}.
  
  @geindex -o (gnatbind)
  
  The output is an Ada unit in source form that can be compiled with GNAT.
! This compilation occurs automatically as part of the @code{gnatlink}
  processing.
  
  Currently the GNAT run time requires a FPU using 80 bits mode
*************** consists of elaboration of these units i
*** 16164,16170 ****
  that the default wide character encoding method for standard Text_IO
  files is always set to Brackets if this switch is set (you can use
  the binder switch
! @emph{-Wx} to override this default).
  @end table
  
  @node Command-Line Access,Search Paths for gnatbind,Switches for gnatbind,Binding with gnatbind
--- 16402,16408 ----
  that the default wide character encoding method for standard Text_IO
  files is always set to Brackets if this switch is set (you can use
  the binder switch
! @code{-Wx} to override this default).
  @end table
  
  @node Command-Line Access,Search Paths for gnatbind,Switches for gnatbind,Binding with gnatbind
*************** the binder switch
*** 16172,16178 ****
  @subsection Command-Line Access
  
  
! The package @cite{Ada.Command_Line} provides access to the command-line
  arguments and program name. In order for this interface to operate
  correctly, the two variables
  
--- 16410,16416 ----
  @subsection Command-Line Access
  
  
! The package @code{Ada.Command_Line} provides access to the command-line
  arguments and program name. In order for this interface to operate
  correctly, the two variables
  
*************** char **gnat_argv;
*** 16186,16211 ****
  @geindex gnat_argc
  
  are declared in one of the GNAT library routines. These variables must
! be set from the actual @cite{argc} and @cite{argv} values passed to the
! main program. With no @emph{n} present, @cite{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
! @cite{Ada.Command_Line} will not be available, and any attempt to use
! them will raise @cite{Constraint_Error}. If command line access is
! required, your main program must set @cite{gnat_argc} and
! @cite{gnat_argv} from the @cite{argc} and @cite{argv} values passed to
  it.
  
  @node Search Paths for gnatbind,Examples of gnatbind Usage,Command-Line Access,Binding with gnatbind
  @anchor{gnat_ugn/building_executable_programs_with_gnat search-paths-for-gnatbind}@anchor{8c}@anchor{gnat_ugn/building_executable_programs_with_gnat id43}@anchor{130}
! @subsection Search Paths for @cite{gnatbind}
  
  
  The binder takes the name of an ALI file as its argument and needs to
  locate source files as well as other ALI files to verify object consistency.
  
! For source files, it follows exactly the same search rules as @emph{gcc}
  (see @ref{89,,Search Paths and the Run-Time Library (RTL)}). For ALI files the
  directories searched are:
  
--- 16424,16449 ----
  @geindex gnat_argc
  
  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
! required, your main program must set @code{gnat_argc} and
! @code{gnat_argv} from the @code{argc} and @code{argv} values passed to
  it.
  
  @node Search Paths for gnatbind,Examples of gnatbind Usage,Command-Line Access,Binding with gnatbind
  @anchor{gnat_ugn/building_executable_programs_with_gnat search-paths-for-gnatbind}@anchor{8c}@anchor{gnat_ugn/building_executable_programs_with_gnat id43}@anchor{130}
! @subsection Search Paths for @code{gnatbind}
  
  
  The binder takes the name of an ALI file as its argument and needs to
  locate source files as well as other ALI files to verify object consistency.
  
! For source files, it follows exactly the same search rules as @code{gcc}
  (see @ref{89,,Search Paths and the Run-Time Library (RTL)}). For ALI files the
  directories searched are:
  
*************** directories searched are:
*** 16214,16224 ****
  
  @item 
  The directory containing the ALI file named in the command line, unless
! the switch @emph{-I-} is specified.
  
  @item 
! All directories specified by @emph{-I}
! switches on the @cite{gnatbind}
  command line, in the order given.
  
  @geindex ADA_PRJ_OBJECTS_FILE
--- 16452,16462 ----
  
  @item 
  The directory containing the ALI file named in the command line, unless
! the switch @code{-I-} is specified.
  
  @item 
! All directories specified by @code{-I}
! switches on the @code{gnatbind}
  command line, in the order given.
  
  @geindex ADA_PRJ_OBJECTS_FILE
*************** of GNAT).
*** 16254,16260 ****
  @item 
  The content of the @code{ada_object_path} file which is part of the GNAT
  installation tree and is used to store standard libraries such as the
! GNAT Run Time Library (RTL) unless the switch @emph{-nostdlib} is
  specified. See @ref{87,,Installing a library}
  @end itemize
  
--- 16492,16498 ----
  @item 
  The content of the @code{ada_object_path} file which is part of the GNAT
  installation tree and is used to store standard libraries such as the
! GNAT Run Time Library (RTL) unless the switch @code{-nostdlib} is
  specified. See @ref{87,,Installing a library}
  @end itemize
  
*************** specified. See @ref{87,,Installing a lib
*** 16264,16274 ****
  
  @geindex -aO (gnatbind)
  
! In the binder the switch @emph{-I}
  is used to specify both source and
! library file paths. Use @emph{-aI}
  instead if you want to specify
! source paths only, and @emph{-aO}
  if you want to specify library paths
  only. This means that for the binder
  @code{-I@emph{dir}} is equivalent to
--- 16502,16512 ----
  
  @geindex -aO (gnatbind)
  
! In the binder the switch @code{-I}
  is used to specify both source and
! library file paths. Use @code{-aI}
  instead if you want to specify
! 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
*************** current working directory.
*** 16285,16291 ****
  
  @geindex GNAT
  
! The packages @cite{Ada}, @cite{System}, and @cite{Interfaces} and their
  children make up the GNAT Run-Time Library, together with the package
  GNAT and its children, which contain a set of useful additional
  library functions provided by GNAT. The sources for these units are
--- 16523,16529 ----
  
  @geindex GNAT
  
! The packages @code{Ada}, @code{System}, and @code{Interfaces} and their
  children make up the GNAT Run-Time Library, together with the package
  GNAT and its children, which contain a set of useful additional
  library functions provided by GNAT. The sources for these units are
*************** development environments much more flexi
*** 16303,16312 ****
  
  @node Examples of gnatbind Usage,,Search Paths for gnatbind,Binding with gnatbind
  @anchor{gnat_ugn/building_executable_programs_with_gnat id44}@anchor{131}@anchor{gnat_ugn/building_executable_programs_with_gnat examples-of-gnatbind-usage}@anchor{132}
! @subsection Examples of @cite{gnatbind} Usage
  
  
! Here are some examples of @cite{gnatbind} invovations:
  
  @quotation
  
--- 16541,16550 ----
  
  @node Examples of gnatbind Usage,,Search Paths for gnatbind,Binding with gnatbind
  @anchor{gnat_ugn/building_executable_programs_with_gnat id44}@anchor{131}@anchor{gnat_ugn/building_executable_programs_with_gnat examples-of-gnatbind-usage}@anchor{132}
! @subsection Examples of @code{gnatbind} Usage
  
  
! Here are some examples of @code{gnatbind} invovations:
  
  @quotation
  
*************** Here are some examples of @cite{gnatbind
*** 16314,16320 ****
  gnatbind hello
  @end example
  
! The main program @cite{Hello} (source program in @code{hello.adb}) is
  bound using the standard switch settings. The generated main program is
  @code{b~hello.adb}. This is the normal, default use of the binder.
  
--- 16552,16558 ----
  gnatbind hello
  @end example
  
! The main program @code{Hello} (source program in @code{hello.adb}) is
  bound using the standard switch settings. The generated main program is
  @code{b~hello.adb}. This is the normal, default use of the binder.
  
*************** bound using the standard switch settings
*** 16322,16328 ****
  gnatbind hello -o mainprog.adb
  @end example
  
! The main program @cite{Hello} (source program in @code{hello.adb}) is
  bound using the standard switch settings. The generated main program is
  @code{mainprog.adb} with the associated spec in
  @code{mainprog.ads}. Note that you must specify the body here not the
--- 16560,16566 ----
  gnatbind hello -o mainprog.adb
  @end example
  
! The main program @code{Hello} (source program in @code{hello.adb}) is
  bound using the standard switch settings. The generated main program is
  @code{mainprog.adb} with the associated spec in
  @code{mainprog.ads}. Note that you must specify the body here not the
*************** since gnatlink will not be able to find
*** 16332,16352 ****
  
  @node Linking with gnatlink,Using the GNU make Utility,Binding with gnatbind,Building Executable Programs with GNAT
  @anchor{gnat_ugn/building_executable_programs_with_gnat id45}@anchor{133}@anchor{gnat_ugn/building_executable_programs_with_gnat linking-with-gnatlink}@anchor{1e}
! @section Linking with @emph{gnatlink}
  
  
  @geindex gnatlink
  
! This chapter discusses @emph{gnatlink}, a tool that links
  an Ada program and builds an executable file. This utility
! invokes the system linker (via the @emph{gcc} command)
  with a correct list of object files and library references.
! @emph{gnatlink} automatically determines the list of files and
  references for the Ada part of a program. It uses the binder file
! generated by the @emph{gnatbind} to determine this list.
! 
! Note: to invoke @cite{gnatlink} with a project file, use the @cite{gnat}
! driver (see @emph{The_GNAT_Driver_and_Project_Files}).
  
  @menu
  * Running gnatlink:: 
--- 16570,16587 ----
  
  @node Linking with gnatlink,Using the GNU make Utility,Binding with gnatbind,Building Executable Programs with GNAT
  @anchor{gnat_ugn/building_executable_programs_with_gnat id45}@anchor{133}@anchor{gnat_ugn/building_executable_programs_with_gnat linking-with-gnatlink}@anchor{1e}
! @section Linking with @code{gnatlink}
  
  
  @geindex gnatlink
  
! This chapter discusses @code{gnatlink}, a tool that links
  an Ada program and builds an executable file. This utility
! invokes the system linker (via the @code{gcc} command)
  with a correct list of object files and library references.
! @code{gnatlink} automatically determines the list of files and
  references for the Ada part of a program. It uses the binder file
! generated by the @code{gnatbind} to determine this list.
  
  @menu
  * Running gnatlink:: 
*************** driver (see @emph{The_GNAT_Driver_and_Pr
*** 16356,16372 ****
  
  @node Running gnatlink,Switches for gnatlink,,Linking with gnatlink
  @anchor{gnat_ugn/building_executable_programs_with_gnat id46}@anchor{134}@anchor{gnat_ugn/building_executable_programs_with_gnat running-gnatlink}@anchor{135}
! @subsection Running @emph{gnatlink}
  
  
! The form of the @emph{gnatlink} command is
  
  @example
! $ gnatlink [`switches`] `mainprog`[.ali]
!            [`non-Ada objects`] [`linker options`]
  @end example
  
! The arguments of @emph{gnatlink} (switches, main @code{ALI} file,
  non-Ada objects
  or linker options) may be in any order, provided that no non-Ada object may
  be mistaken for a main @code{ALI} file.
--- 16591,16607 ----
  
  @node Running gnatlink,Switches for gnatlink,,Linking with gnatlink
  @anchor{gnat_ugn/building_executable_programs_with_gnat id46}@anchor{134}@anchor{gnat_ugn/building_executable_programs_with_gnat running-gnatlink}@anchor{135}
! @subsection Running @code{gnatlink}
  
  
! The form of the @code{gnatlink} command is
  
  @example
! $ gnatlink [ switches ] mainprog [.ali]
!            [ non-Ada objects ] [ linker options ]
  @end example
  
! The arguments of @code{gnatlink} (switches, main @code{ALI} file,
  non-Ada objects
  or linker options) may be in any order, provided that no non-Ada object may
  be mistaken for a main @code{ALI} file.
*************** whose name is the concatenation of @code
*** 16376,16407 ****
  
  @code{mainprog.ali} references the ALI file of the main program.
  The @code{.ali} extension of this file can be omitted. From this
! reference, @emph{gnatlink} locates the corresponding binder file
  @code{b~mainprog.adb} and, using the information in this file along
  with the list of non-Ada objects and linker options, constructs a
  linker command file to create the executable.
  
! The arguments other than the @emph{gnatlink} switches and the main
  @code{ALI} file are passed to the linker uninterpreted.
  They typically include the names of
  object files for units written in other languages than Ada and any library
  references required to resolve references in any of these foreign language
! units, or in @cite{Import} pragmas in any Ada units.
  
! @cite{linker options} is an optional list of linker specific
  switches.
! The default linker called by gnatlink is @emph{gcc} which in
  turn calls the appropriate system linker.
  
! One useful option for the linker is @emph{-s}: it reduces the size of the
  executable by removing all symbol table and relocation information from the
  executable.
  
! Standard options for the linker such as @emph{-lmy_lib} or
! @emph{-Ldir} can be added as is.
  For options that are not recognized by
! @emph{gcc} as linker options, use the @emph{gcc} switches
! @emph{-Xlinker} or @emph{-Wl,}.
  
  Refer to the GCC documentation for
  details.
--- 16611,16642 ----
  
  @code{mainprog.ali} references the ALI file of the main program.
  The @code{.ali} extension of this file can be omitted. From this
! reference, @code{gnatlink} locates the corresponding binder file
  @code{b~mainprog.adb} and, using the information in this file along
  with the list of non-Ada objects and linker options, constructs a
  linker command file to create the executable.
  
! The arguments other than the @code{gnatlink} switches and the main
  @code{ALI} file are passed to the linker uninterpreted.
  They typically include the names of
  object files for units written in other languages than Ada and any library
  references required to resolve references in any of these foreign language
! units, or in @code{Import} pragmas in any Ada units.
  
! @code{linker options} is an optional list of linker specific
  switches.
! The default linker called by gnatlink is @code{gcc} which in
  turn calls the appropriate system linker.
  
! One useful option for the linker is @code{-s}: it reduces the size of the
  executable by removing all symbol table and relocation information from the
  executable.
  
! Standard options for the linker such as @code{-lmy_lib} or
! @code{-Ldir} can be added as is.
  For options that are not recognized by
! @code{gcc} as linker options, use the @code{gcc} switches
! @code{-Xlinker} or @code{-Wl,}.
  
  Refer to the GCC documentation for
  details.
*************** Here is an example showing how to genera
*** 16412,16434 ****
  $ gnatlink my_prog -Wl,-Map,MAPFILE
  @end example
  
! Using @cite{linker options} it is possible to set the program stack and
  heap size.
  See @ref{136,,Setting Stack Size from gnatlink} and
  @ref{137,,Setting Heap Size from gnatlink}.
  
! @emph{gnatlink} determines the list of objects required by the Ada
  program and prepends them to the list of objects passed to the linker.
! @emph{gnatlink} also gathers any arguments set by the use of
! @cite{pragma Linker_Options} and adds them to the list of arguments
  presented to the linker.
  
  @node Switches for gnatlink,,Running gnatlink,Linking with gnatlink
  @anchor{gnat_ugn/building_executable_programs_with_gnat id47}@anchor{138}@anchor{gnat_ugn/building_executable_programs_with_gnat switches-for-gnatlink}@anchor{139}
! @subsection Switches for @emph{gnatlink}
  
  
! The following switches are available with the @emph{gnatlink} utility:
  
  @geindex --version (gnatlink)
  
--- 16647,16669 ----
  $ gnatlink my_prog -Wl,-Map,MAPFILE
  @end example
  
! Using @code{linker options} it is possible to set the program stack and
  heap size.
  See @ref{136,,Setting Stack Size from gnatlink} and
  @ref{137,,Setting Heap Size from gnatlink}.
  
! @code{gnatlink} determines the list of objects required by the Ada
  program and prepends them to the list of objects passed to the linker.
! @code{gnatlink} also gathers any arguments set by the use of
! @code{pragma Linker_Options} and adds them to the list of arguments
  presented to the linker.
  
  @node Switches for gnatlink,,Running gnatlink,Linking with gnatlink
  @anchor{gnat_ugn/building_executable_programs_with_gnat id47}@anchor{138}@anchor{gnat_ugn/building_executable_programs_with_gnat switches-for-gnatlink}@anchor{139}
! @subsection Switches for @code{gnatlink}
  
  
! The following switches are available with the @code{gnatlink} utility:
  
  @geindex --version (gnatlink)
  
*************** Display Copyright and version, then exit
*** 16447,16453 ****
  
  @item @code{--help}
  
! If @emph{--version} was not used, display usage, then exit disregarding
  all other options.
  @end table
  
--- 16682,16688 ----
  
  @item @code{--help}
  
! If @code{--version} was not used, display usage, then exit disregarding
  all other options.
  @end table
  
*************** all other options.
*** 16460,16469 ****
  
  @item @code{-f}
  
! On some targets, the command line length is limited, and @emph{gnatlink}
  will generate a separate file for the linker if the list of object files
  is too long.
! The @emph{-f} switch forces this file
  to be generated even if
  the limit is not exceeded. This is useful in some cases to deal with
  special situations where the command line length is exceeded.
--- 16695,16704 ----
  
  @item @code{-f}
  
! On some targets, the command line length is limited, and @code{gnatlink}
  will generate a separate file for the linker if the list of object files
  is too long.
! The @code{-f} switch forces this file
  to be generated even if
  the limit is not exceeded. This is useful in some cases to deal with
  special situations where the command line length is exceeded.
*************** special situations where the command lin
*** 16480,16489 ****
  @item @code{-g}
  
  The option to include debugging information causes the Ada bind file (in
! other words, @code{b~mainprog.adb}) to be compiled with @emph{-g}.
  In addition, the binder does not delete the @code{b~mainprog.adb},
  @code{b~mainprog.o} and @code{b~mainprog.ali} files.
! Without @emph{-g}, the binder removes these files by default.
  @end table
  
  @geindex -n (gnatlink)
--- 16715,16724 ----
  @item @code{-g}
  
  The option to include debugging information causes the Ada bind file (in
! other words, @code{b~mainprog.adb}) to be compiled with @code{-g}.
  In addition, the binder does not delete the @code{b~mainprog.adb},
  @code{b~mainprog.o} and @code{b~mainprog.ali} files.
! Without @code{-g}, the binder removes these files by default.
  @end table
  
  @geindex -n (gnatlink)
*************** it compiles the binder file, and that th
*** 16529,16552 ****
  
  @item @code{-o @emph{exec-name}}
  
! @cite{exec-name} specifies an alternate name for the generated
  executable program. If this switch is omitted, the executable has the same
! name as the main unit. For example, @cite{gnatlink try.ali} creates
  an executable called @code{try}.
  @end table
  
- @geindex -b (gnatlink)
- 
- 
- @table @asis
- 
- @item @code{-b @emph{target}}
- 
- Compile your program to run on @cite{target}, which is the name of a
- system configuration. You must have a GNAT cross-compiler built if
- @cite{target} is not the same as your host system.
- @end table
- 
  @geindex -B (gnatlink)
  
  
--- 16764,16775 ----
  
  @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
! name as the main unit. For example, @code{gnatlink try.ali} creates
  an executable called @code{try}.
  @end table
  
  @geindex -B (gnatlink)
  
  
*************** system configuration. You must have a GN
*** 16554,16565 ****
  
  @item @code{-B@emph{dir}}
  
! Load compiler executables (for example, @cite{gnat1}, the Ada compiler)
! from @cite{dir} instead of the default location. Only use this switch
  when multiple versions of the GNAT compiler are available.
! See the @cite{Directory Options} section in @cite{The_GNU_Compiler_Collection}
! for further details. You would normally use the @emph{-b} or
! @emph{-V} switch instead.
  @end table
  
  @geindex -M (gnatlink)
--- 16777,16788 ----
  
  @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
  when multiple versions of the GNAT compiler are available.
! See the @code{Directory Options} section in @cite{The_GNU_Compiler_Collection}
! for further details. You would normally use the @code{-b} or
! @code{-V} switch instead.
  @end table
  
  @geindex -M (gnatlink)
*************** has the same name as the executable with
*** 16581,16587 ****
  @item @code{-M=@emph{mapfile}}
  
  When linking an executable, create a map file. The name of the map file is
! @cite{mapfile}.
  @end table
  
  @geindex --GCC=compiler_name (gnatlink)
--- 16804,16810 ----
  @item @code{-M=@emph{mapfile}}
  
  When linking an executable, create a map file. The name of the map file is
! @code{mapfile}.
  @end table
  
  @geindex --GCC=compiler_name (gnatlink)
*************** When linking an executable, create a map
*** 16592,16610 ****
  @item @code{--GCC=@emph{compiler_name}}
  
  Program used for compiling the binder file. The default is
! @code{gcc}. You need to use quotes around @cite{compiler_name} if
! @cite{compiler_name} contains spaces or other separator characters.
! As an example @code{--GCC="foo -x -y"} will instruct @emph{gnatlink} to
  use @code{foo -x -y} as your compiler. Note that switch @code{-c} is always
  inserted after your command name. Thus in the above example the compiler
! command that will be used by @emph{gnatlink} will be @code{foo -c -x -y}.
  A limitation of this syntax is that the name and path name of the executable
  itself must not include any embedded spaces. If the compiler executable is
  different from the default one (gcc or <prefix>-gcc), then the back-end
  switches in the ALI file are not used to compile the binder generated source.
  For example, this is the case with @code{--GCC="foo -x -y"}. But the back end
  switches will be used for @code{--GCC="gcc -gnatv"}. If several
! @code{--GCC=compiler_name} are used, only the last @cite{compiler_name}
  is taken into account. However, all the additional switches are also taken
  into account. Thus,
  @code{--GCC="foo -x -y" --GCC="bar -z -t"} is equivalent to
--- 16815,16833 ----
  @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
! @code{compiler_name} contains spaces or other separator characters.
! As an example @code{--GCC="foo -x -y"} will instruct @code{gnatlink} to
  use @code{foo -x -y} as your compiler. Note that switch @code{-c} is always
  inserted after your command name. Thus in the above example the compiler
! command that will be used by @code{gnatlink} will be @code{foo -c -x -y}.
  A limitation of this syntax is that the name and path name of the executable
  itself must not include any embedded spaces. If the compiler executable is
  different from the default one (gcc or <prefix>-gcc), then the back-end
  switches in the ALI file are not used to compile the binder generated source.
  For example, this is the case with @code{--GCC="foo -x -y"}. But the back end
  switches will be used for @code{--GCC="gcc -gnatv"}. If several
! @code{--GCC=compiler_name} are used, only the last @code{compiler_name}
  is taken into account. However, all the additional switches are also taken
  into account. Thus,
  @code{--GCC="foo -x -y" --GCC="bar -z -t"} is equivalent to
*************** into account. Thus,
*** 16618,16629 ****
  
  @item @code{--LINK=@emph{name}}
  
! @cite{name} is the name of the linker to be invoked. This is especially
  useful in mixed language programs since languages such as C++ require
  their own linker to be used. When this switch is omitted, the default
! name for the linker is @emph{gcc}. When this switch is used, the
! specified linker is called instead of @emph{gcc} with exactly the same
! parameters that would have been passed to @emph{gcc} so if the desired
  linker requires different parameters it is necessary to use a wrapper
  script that massages the parameters before invoking the real linker. It
  may be useful to control the exact invocation by using the verbose
--- 16841,16852 ----
  
  @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
  their own linker to be used. When this switch is omitted, the default
! name for the linker is @code{gcc}. When this switch is used, the
! specified linker is called instead of @code{gcc} with exactly the same
! parameters that would have been passed to @code{gcc} so if the desired
  linker requires different parameters it is necessary to use a wrapper
  script that massages the parameters before invoking the real linker. It
  may be useful to control the exact invocation by using the verbose
*************** switch.
*** 16632,16638 ****
  
  @node Using the GNU make Utility,,Linking with gnatlink,Building Executable Programs with GNAT
  @anchor{gnat_ugn/building_executable_programs_with_gnat using-the-gnu-make-utility}@anchor{1f}@anchor{gnat_ugn/building_executable_programs_with_gnat id48}@anchor{13a}
! @section Using the GNU @cite{make} Utility
  
  
  @geindex make (GNU)
--- 16855,16861 ----
  
  @node Using the GNU make Utility,,Linking with gnatlink,Building Executable Programs with GNAT
  @anchor{gnat_ugn/building_executable_programs_with_gnat using-the-gnu-make-utility}@anchor{1f}@anchor{gnat_ugn/building_executable_programs_with_gnat id48}@anchor{13a}
! @section Using the GNU @code{make} Utility
  
  
  @geindex make (GNU)
*************** switch.
*** 16640,16651 ****
  
  This chapter offers some examples of makefiles that solve specific
  problems. It does not explain how to write a makefile, nor does it try to replace the
! @emph{gnatmake} utility (@ref{1b,,Building with gnatmake}).
  
  All the examples in this section are specific to the GNU version of
! make. Although @emph{make} is a standard utility, and the basic language
  is the same, these examples use some advanced features found only in
! @cite{GNU make}.
  
  @menu
  * Using gnatmake in a Makefile:: 
--- 16863,16874 ----
  
  This chapter offers some examples of makefiles that solve specific
  problems. It does not explain how to write a makefile, nor does it try to replace the
! @code{gnatmake} utility (@ref{1b,,Building with gnatmake}).
  
  All the examples in this section are specific to the GNU version of
! make. Although @code{make} is a standard utility, and the basic language
  is the same, these examples use some advanced features found only in
! @code{GNU make}.
  
  @menu
  * Using gnatmake in a Makefile:: 
*************** time of very big applications while main
*** 16670,16676 ****
  each step of the build process.
  
  The list of dependencies are handled automatically by
! @emph{gnatmake}. The Makefile is simply used to call gnatmake in each of
  the appropriate directories.
  
  Note that you should also read the example on how to automatically
--- 16893,16899 ----
  each step of the build process.
  
  The list of dependencies are handled automatically by
! @code{gnatmake}. The Makefile is simply used to call gnatmake in each of
  the appropriate directories.
  
  Note that you should also read the example on how to automatically
*************** automatically.
*** 16771,16783 ****
  
  The example below presents two methods. The first one, although less
  general, gives you more control over the list. It involves wildcard
! characters, that are automatically expanded by @emph{make}. Its
  shortcoming is that you need to explicitly specify some of the
  organization of your project, such as for instance the directory tree
  depth, whether some directories are found in a separate tree, etc.
  
  The second method is the most general one. It requires an external
! program, called @emph{find}, which is standard on all Unix systems. All
  the directories found under a given root directory will be added to the
  list.
  
--- 16994,17006 ----
  
  The example below presents two methods. The first one, although less
  general, gives you more control over the list. It involves wildcard
! characters, that are automatically expanded by @code{make}. Its
  shortcoming is that you need to explicitly specify some of the
  organization of your project, such as for instance the directory tree
  depth, whether some directories are found in a separate tree, etc.
  
  The second method is the most general one. It requires an external
! program, called @code{find}, which is standard on all Unix systems. All
  the directories found under a given root directory will be added to the
  list.
  
*************** DIRS := a/aa/ a/ab/ b/ba/
*** 16808,16814 ****
  # Note that the argument(s) to wildcard below should end with a '/'.
  # Since wildcards also return file names, we have to filter them out
  # to avoid duplicate directory names.
! # We thus use make's `dir` and `sort` functions.
  # It sets DIRs to the following value (note that the directories aaa and baa
  # are not given, unless you change the arguments to wildcard).
  # DIRS= ./a/a/ ./b/ ./a/aa/ ./a/ab/ ./a/ac/ ./b/ba/ ./b/bb/ ./b/bc/
--- 17031,17037 ----
  # Note that the argument(s) to wildcard below should end with a '/'.
  # Since wildcards also return file names, we have to filter them out
  # to avoid duplicate directory names.
! # We thus use make's `@w{`}dir`@w{`} and `@w{`}sort`@w{`} functions.
  # It sets DIRs to the following value (note that the directories aaa and baa
  # are not given, unless you change the arguments to wildcard).
  # DIRS= ./a/a/ ./b/ ./a/aa/ ./a/ab/ ./a/ac/ ./b/ba/ ./b/bb/ ./b/bc/
*************** operating systems limit the length of th
*** 16863,16869 ****
  gnatmake the list of source and object directories.
  
  This example shows how you can set up environment variables, which will
! make @emph{gnatmake} behave exactly as if the directories had been
  specified on the command line, but have a much higher length limit (or
  even none on most systems).
  
--- 17086,17092 ----
  gnatmake the list of source and object directories.
  
  This example shows how you can set up environment variables, which will
! make @code{gnatmake} behave exactly as if the directories had been
  specified on the command line, but have a much higher length limit (or
  even none on most systems).
  
*************** path (where the ALI files are found) is
*** 16875,16881 ****
  
  Note a small trick in the Makefile below: for efficiency reasons, we
  create two temporary variables (SOURCE_LIST and OBJECT_LIST), that are
! expanded immediately by @cite{make}. This way we overcome the standard
  make behavior which is to expand the variables only when they are
  actually used.
  
--- 17098,17104 ----
  
  Note a small trick in the Makefile below: for efficiency reasons, we
  create two temporary variables (SOURCE_LIST and OBJECT_LIST), that are
! expanded immediately by @code{make}. This way we overcome the standard
  make behavior which is to expand the variables only when they are
  actually used.
  
*************** Other GNAT utilities are described elsew
*** 16963,16976 ****
  
  @node The File Cleanup Utility gnatclean,The GNAT Library Browser gnatls,,GNAT Utility Programs
  @anchor{gnat_ugn/gnat_utility_programs id2}@anchor{145}@anchor{gnat_ugn/gnat_utility_programs the-file-cleanup-utility-gnatclean}@anchor{20}
! @section The File Cleanup Utility @emph{gnatclean}
  
  
  @geindex File cleanup tool
  
  @geindex gnatclean
  
! @cite{gnatclean} is a tool that allows the deletion of files produced by the
  compiler, binder and linker, including ALI files, object files, tree files,
  expanded source files, library files, interface copy source files, binder
  generated files and executable files.
--- 17186,17199 ----
  
  @node The File Cleanup Utility gnatclean,The GNAT Library Browser gnatls,,GNAT Utility Programs
  @anchor{gnat_ugn/gnat_utility_programs id2}@anchor{145}@anchor{gnat_ugn/gnat_utility_programs the-file-cleanup-utility-gnatclean}@anchor{20}
! @section The File Cleanup Utility @code{gnatclean}
  
  
  @geindex File cleanup tool
  
  @geindex gnatclean
  
! @code{gnatclean} is a tool that allows the deletion of files produced by the
  compiler, binder and linker, including ALI files, object files, tree files,
  expanded source files, library files, interface copy source files, binder
  generated files and executable files.
*************** generated files and executable files.
*** 16983,17016 ****
  
  @node Running gnatclean,Switches for gnatclean,,The File Cleanup Utility gnatclean
  @anchor{gnat_ugn/gnat_utility_programs running-gnatclean}@anchor{146}@anchor{gnat_ugn/gnat_utility_programs id3}@anchor{147}
! @subsection Running @cite{gnatclean}
  
  
! The @cite{gnatclean} command has the form:
  
  @quotation
  
  @example
! $ gnatclean switches `names`
  @end example
  @end quotation
  
! where @cite{names} is a list of source file names. Suffixes @code{.ads} and
  @code{adb} may be omitted. If a project file is specified using switch
! @code{-P}, then @cite{names} may be completely omitted.
  
! In normal mode, @cite{gnatclean} delete the files produced by the compiler and,
! if switch @cite{-c} is not specified, by the binder and
  the linker. In informative-only mode, specified by switch
! @cite{-n}, the list of files that would have been deleted in
  normal mode is listed, but no file is actually deleted.
  
  @node Switches for gnatclean,,Running gnatclean,The File Cleanup Utility gnatclean
  @anchor{gnat_ugn/gnat_utility_programs id4}@anchor{148}@anchor{gnat_ugn/gnat_utility_programs switches-for-gnatclean}@anchor{149}
! @subsection Switches for @cite{gnatclean}
  
  
! @cite{gnatclean} recognizes the following switches:
  
  @geindex --version (gnatclean)
  
--- 17206,17239 ----
  
  @node Running gnatclean,Switches for gnatclean,,The File Cleanup Utility gnatclean
  @anchor{gnat_ugn/gnat_utility_programs running-gnatclean}@anchor{146}@anchor{gnat_ugn/gnat_utility_programs id3}@anchor{147}
! @subsection Running @code{gnatclean}
  
  
! The @code{gnatclean} command has the form:
  
  @quotation
  
  @example
! $ gnatclean switches names
  @end example
  @end quotation
  
! where @code{names} is a list of source file names. Suffixes @code{.ads} and
  @code{adb} may be omitted. If a project file is specified using switch
! @code{-P}, then @code{names} may be completely omitted.
  
! In normal mode, @code{gnatclean} delete the files produced by the compiler and,
! if switch @code{-c} is not specified, by the binder and
  the linker. In informative-only mode, specified by switch
! @code{-n}, the list of files that would have been deleted in
  normal mode is listed, but no file is actually deleted.
  
  @node Switches for gnatclean,,Running gnatclean,The File Cleanup Utility gnatclean
  @anchor{gnat_ugn/gnat_utility_programs id4}@anchor{148}@anchor{gnat_ugn/gnat_utility_programs switches-for-gnatclean}@anchor{149}
! @subsection Switches for @code{gnatclean}
  
  
! @code{gnatclean} recognizes the following switches:
  
  @geindex --version (gnatclean)
  
*************** Display Copyright and version, then exit
*** 17029,17035 ****
  
  @item @code{--help}
  
! If @emph{--version} was not used, display usage, then exit disregarding
  all other options.
  
  @item @code{--subdirs=@emph{subdir}}
--- 17252,17258 ----
  
  @item @code{--help}
  
! If @code{--version} was not used, display usage, then exit disregarding
  all other options.
  
  @item @code{--subdirs=@emph{subdir}}
*************** files, interface copy files, binder gene
*** 17063,17069 ****
  
  @item @code{-D @emph{dir}}
  
! Indicate that ALI and object files should normally be found in directory @cite{dir}.
  @end table
  
  @geindex -F (gnatclean)
--- 17286,17292 ----
  
  @item @code{-D @emph{dir}}
  
! Indicate that ALI and object files should normally be found in directory @code{dir}.
  @end table
  
  @geindex -F (gnatclean)
*************** file, rather than its simple file name.
*** 17086,17092 ****
  
  @item @code{-h}
  
! Output a message explaining the usage of @cite{gnatclean}.
  @end table
  
  @geindex -n (gnatclean)
--- 17309,17315 ----
  
  @item @code{-h}
  
! Output a message explaining the usage of @code{gnatclean}.
  @end table
  
  @geindex -n (gnatclean)
*************** that would have been deleted if this swi
*** 17107,17113 ****
  
  @item @code{-P@emph{project}}
  
! Use project file @cite{project}. Only one such switch can be used.
  When cleaning a project file, the files produced by the compilation of the
  immediate sources or inherited sources of the project files are to be
  deleted. This is not depending on the presence or not of executable names
--- 17330,17336 ----
  
  @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
  immediate sources or inherited sources of the project files are to be
  deleted. This is not depending on the presence or not of executable names
*************** Indicates the verbosity of the parsing o
*** 17167,17176 ****
  
  @item @code{-X@emph{name}=@emph{value}}
  
! Indicates that external variable @cite{name} has the value @cite{value}.
  The Project Manager will use this value for occurrences of
! @cite{external(name)} when parsing the project file.
! @ref{de,,Switches Related to Project Files}.
  @end table
  
  @geindex -aO (gnatclean)
--- 17390,17399 ----
  
  @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
! @code{external(name)} when parsing the project file.
! See @ref{de,,Switches Related to Project Files}.
  @end table
  
  @geindex -aO (gnatclean)
*************** The Project Manager will use this value
*** 17180,17186 ****
  
  @item @code{-aO@emph{dir}}
  
! When searching for ALI and object files, look in directory @cite{dir}.
  @end table
  
  @geindex -I (gnatclean)
--- 17403,17409 ----
  
  @item @code{-aO@emph{dir}}
  
! When searching for ALI and object files, look in directory @code{dir}.
  @end table
  
  @geindex -I (gnatclean)
*************** Equivalent to @code{-aO@emph{dir}}.
*** 17204,17229 ****
  @item @code{-I-}
  
  Do not look for ALI or object files in the directory
! where @cite{gnatclean} was invoked.
  @end table
  
  @node The GNAT Library Browser gnatls,The Cross-Referencing Tools gnatxref and gnatfind,The File Cleanup Utility gnatclean,GNAT Utility Programs
  @anchor{gnat_ugn/gnat_utility_programs the-gnat-library-browser-gnatls}@anchor{21}@anchor{gnat_ugn/gnat_utility_programs id5}@anchor{14a}
! @section The GNAT Library Browser @cite{gnatls}
  
  
  @geindex Library browser
  
  @geindex gnatls
  
! @cite{gnatls} is a tool that outputs information about compiled
  units. It gives the relationship between objects, unit names and source
  files. It can also be used to check the source dependencies of a unit
  as well as various characteristics.
  
- Note: to invoke @cite{gnatls} with a project file, use the @cite{gnat}
- driver (see @emph{The_GNAT_Driver_and_Project_Files}).
- 
  @menu
  * Running gnatls:: 
  * Switches for gnatls:: 
--- 17427,17449 ----
  @item @code{-I-}
  
  Do not look for ALI or object files in the directory
! where @code{gnatclean} was invoked.
  @end table
  
  @node The GNAT Library Browser gnatls,The Cross-Referencing Tools gnatxref and gnatfind,The File Cleanup Utility gnatclean,GNAT Utility Programs
  @anchor{gnat_ugn/gnat_utility_programs the-gnat-library-browser-gnatls}@anchor{21}@anchor{gnat_ugn/gnat_utility_programs id5}@anchor{14a}
! @section The GNAT Library Browser @code{gnatls}
  
  
  @geindex Library browser
  
  @geindex gnatls
  
! @code{gnatls} is a tool that outputs information about compiled
  units. It gives the relationship between objects, unit names and source
  files. It can also be used to check the source dependencies of a unit
  as well as various characteristics.
  
  @menu
  * Running gnatls:: 
  * Switches for gnatls:: 
*************** driver (see @emph{The_GNAT_Driver_and_Pr
*** 17233,17247 ****
  
  @node Running gnatls,Switches for gnatls,,The GNAT Library Browser gnatls
  @anchor{gnat_ugn/gnat_utility_programs id6}@anchor{14b}@anchor{gnat_ugn/gnat_utility_programs running-gnatls}@anchor{14c}
! @subsection Running @cite{gnatls}
  
  
! The @cite{gnatls} command has the form
  
  @quotation
  
  @example
! $ gnatls switches `object_or_ali_file`
  @end example
  @end quotation
  
--- 17453,17467 ----
  
  @node Running gnatls,Switches for gnatls,,The GNAT Library Browser gnatls
  @anchor{gnat_ugn/gnat_utility_programs id6}@anchor{14b}@anchor{gnat_ugn/gnat_utility_programs running-gnatls}@anchor{14c}
! @subsection Running @code{gnatls}
  
  
! The @code{gnatls} command has the form
  
  @quotation
  
  @example
! $ gnatls switches object_or_ali_file
  @end example
  @end quotation
  
*************** The main argument is the list of object
*** 17249,17255 ****
  (see @ref{42,,The Ada Library Information Files})
  for which information is requested.
  
! In normal mode, without additional option, @cite{gnatls} produces a
  four-column listing. Each line represents information for a specific
  object. The first column gives the full path of the object, the second
  column gives the name of the principal unit in this object, the third
--- 17469,17475 ----
  (see @ref{42,,The Ada Library Information Files})
  for which information is requested.
  
! In normal mode, without additional option, @code{gnatls} produces a
  four-column listing. Each line represents information for a specific
  object. The first column gives the full path of the object, the second
  column gives the name of the principal unit in this object, the third
*************** specified unit corresponds exactly to th
*** 17291,17298 ****
  
  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 gnatmake with the qualifier
! @emph{-m (minimal recompilation)}, a file marked
  MOK will not be recompiled.
  
  @item @emph{DIF (modified)}
--- 17511,17518 ----
  
  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 gnatmake with the option
! @code{-m} (minimal recompilation), a file marked
  MOK will not be recompiled.
  
  @item @emph{DIF (modified)}
*************** version of the same source that has been
*** 17313,17322 ****
  
  @node Switches for gnatls,Example of gnatls Usage,Running gnatls,The GNAT Library Browser gnatls
  @anchor{gnat_ugn/gnat_utility_programs id7}@anchor{14d}@anchor{gnat_ugn/gnat_utility_programs switches-for-gnatls}@anchor{14e}
! @subsection Switches for @cite{gnatls}
  
  
! @cite{gnatls} recognizes the following switches:
  
  @geindex --version (gnatls)
  
--- 17533,17542 ----
  
  @node Switches for gnatls,Example of gnatls Usage,Running gnatls,The GNAT Library Browser gnatls
  @anchor{gnat_ugn/gnat_utility_programs id7}@anchor{14d}@anchor{gnat_ugn/gnat_utility_programs switches-for-gnatls}@anchor{14e}
! @subsection Switches for @code{gnatls}
  
  
! @code{gnatls} recognizes the following switches:
  
  @geindex --version (gnatls)
  
*************** Display Copyright and version, then exit
*** 17333,17341 ****
  
  @table @asis
  
! @item @code{*--help}
  
! If @emph{--version} was not used, display usage, then exit disregarding
  all other options.
  @end table
  
--- 17553,17561 ----
  
  @table @asis
  
! @item @code{--help}
  
! If @code{--version} was not used, display usage, then exit disregarding
  all other options.
  @end table
  
*************** all other options.
*** 17347,17353 ****
  @item @code{-a}
  
  Consider all units, including those of the predefined Ada library.
! Especially useful with @emph{-d}.
  @end table
  
  @geindex -d (gnatls)
--- 17567,17573 ----
  @item @code{-a}
  
  Consider all units, including those of the predefined Ada library.
! Especially useful with @code{-d}.
  @end table
  
  @geindex -d (gnatls)
*************** Only output information about compilatio
*** 17407,17414 ****
  
  @item @code{-files=@emph{file}}
  
! Take as arguments the files listed in text file @cite{file}.
! Text file @cite{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.
  @end table
--- 17627,17634 ----
  
  @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.
  Each nonempty line should contain the name of an existing file.
  Several such switches may be specified simultaneously.
  @end table
*************** Several such switches may be specified s
*** 17426,17432 ****
  
  @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 @emph{gnatmake}
  flags (@ref{dc,,Switches for gnatmake}).
  @end table
  
--- 17646,17652 ----
  
  @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{dc,,Switches for gnatmake}).
  @end table
  
*************** flags (@ref{dc,,Switches for gnatmake}).
*** 17437,17443 ****
  
  @item @code{-aP@emph{dir}}
  
! Add @cite{dir} at the beginning of the project search dir.
  @end table
  
  @geindex --RTS (gnatls)
--- 17657,17663 ----
  
  @item @code{-aP@emph{dir}}
  
! Add @code{dir} at the beginning of the project search dir.
  @end table
  
  @geindex --RTS (gnatls)
*************** Add @cite{dir} at the beginning of the p
*** 17445,17454 ****
  
  @table @asis
  
! @item @code{--RTS=@emph{rts-path}`}
  
  Specifies the default location of the runtime library. Same meaning as the
! equivalent @emph{gnatmake} flag (@ref{dc,,Switches for gnatmake}).
  @end table
  
  @geindex -v (gnatls)
--- 17665,17674 ----
  
  @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{dc,,Switches for gnatmake}).
  @end table
  
  @geindex -v (gnatls)
*************** by the user.
*** 17495,17501 ****
  
  @node Example of gnatls Usage,,Switches for gnatls,The GNAT Library Browser gnatls
  @anchor{gnat_ugn/gnat_utility_programs id8}@anchor{14f}@anchor{gnat_ugn/gnat_utility_programs example-of-gnatls-usage}@anchor{150}
! @subsection Example of @cite{gnatls} Usage
  
  
  Example of using the verbose switch. Note how the source and
--- 17715,17721 ----
  
  @node Example of gnatls Usage,,Switches for gnatls,The GNAT Library Browser gnatls
  @anchor{gnat_ugn/gnat_utility_programs id8}@anchor{14f}@anchor{gnat_ugn/gnat_utility_programs example-of-gnatls-usage}@anchor{150}
! @subsection Example of @code{gnatls} Usage
  
  
  Example of using the verbose switch. Note how the source and
*************** instr.ads
*** 17575,17581 ****
  
  @node The Cross-Referencing Tools gnatxref and gnatfind,The Ada to HTML Converter gnathtml,The GNAT Library Browser gnatls,GNAT Utility Programs
  @anchor{gnat_ugn/gnat_utility_programs the-cross-referencing-tools-gnatxref-and-gnatfind}@anchor{22}@anchor{gnat_ugn/gnat_utility_programs id9}@anchor{151}
! @section The Cross-Referencing Tools @cite{gnatxref} and @cite{gnatfind}
  
  
  @geindex gnatxref
--- 17795,17801 ----
  
  @node The Cross-Referencing Tools gnatxref and gnatfind,The Ada to HTML Converter gnathtml,The GNAT Library Browser gnatls,GNAT Utility Programs
  @anchor{gnat_ugn/gnat_utility_programs the-cross-referencing-tools-gnatxref-and-gnatfind}@anchor{22}@anchor{gnat_ugn/gnat_utility_programs id9}@anchor{151}
! @section The Cross-Referencing Tools @code{gnatxref} and @code{gnatfind}
  
  
  @geindex gnatxref
*************** Before using any of these two tools, you
*** 17592,17617 ****
  application, so that GNAT gets a chance to generate the cross-referencing
  information.
  
! The two tools @cite{gnatxref} and @cite{gnatfind} take advantage of this
  information to provide the user with the capability to easily locate the
  declaration and references to an entity. These tools are quite similar,
! the difference being that @cite{gnatfind} is intended for locating
  definitions and/or references to a specified entity or entities, whereas
! @cite{gnatxref} is oriented to generating a full report of all
  cross-references.
  
  To use these tools, you must not compile your application using the
! @emph{-gnatx} switch on the @emph{gnatmake} command line
  (see @ref{1b,,Building with gnatmake}). Otherwise, cross-referencing
  information will not be generated.
  
- Note: to invoke @cite{gnatxref} or @cite{gnatfind} with a project file,
- use the @cite{gnat} driver (see @emph{The_GNAT_Driver_and_Project_Files}).
- 
  @menu
  * gnatxref Switches:: 
  * gnatfind Switches:: 
! * Project Files for gnatxref and gnatfind:: 
  * Regular Expressions in gnatfind and gnatxref:: 
  * Examples of gnatxref Usage:: 
  * Examples of gnatfind Usage:: 
--- 17812,17834 ----
  application, so that GNAT gets a chance to generate the cross-referencing
  information.
  
! The two tools @code{gnatxref} and @code{gnatfind} take advantage of this
  information to provide the user with the capability to easily locate the
  declaration and references to an entity. These tools are quite similar,
! the difference being that @code{gnatfind} is intended for locating
  definitions and/or references to a specified entity or entities, whereas
! @code{gnatxref} is oriented to generating a full report of all
  cross-references.
  
  To use these tools, you must not compile your application using the
! @code{-gnatx} switch on the @code{gnatmake} command line
  (see @ref{1b,,Building with gnatmake}). Otherwise, cross-referencing
  information will not be generated.
  
  @menu
  * gnatxref Switches:: 
  * gnatfind Switches:: 
! * Configuration Files for gnatxref and gnatfind:: 
  * Regular Expressions in gnatfind and gnatxref:: 
  * Examples of gnatxref Usage:: 
  * Examples of gnatfind Usage:: 
*************** use the @cite{gnat} driver (see @emph{Th
*** 17620,17634 ****
  
  @node gnatxref Switches,gnatfind Switches,,The Cross-Referencing Tools gnatxref and gnatfind
  @anchor{gnat_ugn/gnat_utility_programs id10}@anchor{152}@anchor{gnat_ugn/gnat_utility_programs gnatxref-switches}@anchor{153}
! @subsection @cite{gnatxref} Switches
  
  
! The command invocation for @cite{gnatxref} is:
  
  @quotation
  
  @example
! $ gnatxref [`switches`] `sourcefile1` [`sourcefile2` ...]
  @end example
  @end quotation
  
--- 17837,17851 ----
  
  @node gnatxref Switches,gnatfind Switches,,The Cross-Referencing Tools gnatxref and gnatfind
  @anchor{gnat_ugn/gnat_utility_programs id10}@anchor{152}@anchor{gnat_ugn/gnat_utility_programs gnatxref-switches}@anchor{153}
! @subsection @code{gnatxref} Switches
  
  
! The command invocation for @code{gnatxref} is:
  
  @quotation
  
  @example
! $ gnatxref [ switches ] sourcefile1 [ sourcefile2 ... ]
  @end example
  @end quotation
  
*************** where
*** 17637,17665 ****
  
  @table @asis
  
! @item @emph{sourcefile1} [, @emph{sourcefile2} ...]
  
  identify the source files for which a report is to be generated. The
! 'with'ed units will be processed too. You must provide at least one file.
  
  These file names are considered to be regular expressions, so for instance
  specifying @code{source*.adb} is the same as giving every file in the current
  directory whose name starts with @code{source} and whose extension is
  @code{adb}.
  
! You shouldn't specify any directory name, just base names. @emph{gnatxref}
! and @emph{gnatfind} will be able to locate these files by themselves using
  the source path. If you specify directories, no result is produced.
  @end table
  
! The following switches are available for @emph{gnatxref}:
  
  @geindex --version (gnatxref)
  
  
  @table @asis
  
! @item @code{-version}
  
  Display Copyright and version, then exit disregarding all other options.
  @end table
--- 17854,17882 ----
  
  @table @asis
  
! @item @code{sourcefile1} [, @code{sourcefile2} ...]
  
  identify the source files for which a report is to be generated. The
! @code{with}ed units will be processed too. You must provide at least one file.
  
  These file names are considered to be regular expressions, so for instance
  specifying @code{source*.adb} is the same as giving every file in the current
  directory whose name starts with @code{source} and whose extension is
  @code{adb}.
  
! You shouldn't specify any directory name, just base names. @code{gnatxref}
! and @code{gnatfind} will be able to locate these files by themselves using
  the source path. If you specify directories, no result is produced.
  @end table
  
! The following switches are available for @code{gnatxref}:
  
  @geindex --version (gnatxref)
  
  
  @table @asis
  
! @item @code{--version}
  
  Display Copyright and version, then exit disregarding all other options.
  @end table
*************** Display Copyright and version, then exit
*** 17669,17677 ****
  
  @table @asis
  
! @item @code{-help}
  
! If @emph{--version} was not used, display usage, then exit disregarding
  all other options.
  @end table
  
--- 17886,17894 ----
  
  @table @asis
  
! @item @code{--help}
  
! If @code{--version} was not used, display usage, then exit disregarding
  all other options.
  @end table
  
*************** all other options.
*** 17680,17691 ****
  
  @table @asis
  
! @item @code{a}
  
! If this switch is present, @cite{gnatfind} and @cite{gnatxref} will parse
  the read-only files found in the library search path. Otherwise, these files
  will be ignored. This option can be used to protect Gnat sources or your own
! libraries from being parsed, thus making @cite{gnatfind} and @cite{gnatxref}
  much faster, and their output much smaller. Read-only here refers to access
  or permissions status in the file system for the current user.
  @end table
--- 17897,17908 ----
  
  @table @asis
  
! @item @code{-a}
  
! If this switch is present, @code{gnatfind} and @code{gnatxref} will parse
  the read-only files found in the library search path. Otherwise, these files
  will be ignored. This option can be used to protect Gnat sources or your own
! libraries from being parsed, thus making @code{gnatfind} and @code{gnatxref}
  much faster, and their output much smaller. Read-only here refers to access
  or permissions status in the file system for the current user.
  @end table
*************** or permissions status in the file system
*** 17695,17704 ****
  
  @table @asis
  
! @item @code{aI@emph{DIR}}
  
  When looking for source files also look in directory DIR. The order in which
! source file search is undertaken is the same as for @emph{gnatmake}.
  @end table
  
  @geindex -aODIR (gnatxref)
--- 17912,17921 ----
  
  @table @asis
  
! @item @code{-aI@emph{DIR}}
  
  When looking for source files also look in directory DIR. The order in which
! source file search is undertaken is the same as for @code{gnatmake}.
  @end table
  
  @geindex -aODIR (gnatxref)
*************** source file search is undertaken is the
*** 17708,17716 ****
  
  @item @code{aO@emph{DIR}}
  
! When searching for library and object files, look in directory
  DIR. The order in which library files are searched is the same as for
! @emph{gnatmake}.
  @end table
  
  @geindex -nostdinc (gnatxref)
--- 17925,17933 ----
  
  @item @code{aO@emph{DIR}}
  
! When -searching for library and object files, look in directory
  DIR. The order in which library files are searched is the same as for
! @code{gnatmake}.
  @end table
  
  @geindex -nostdinc (gnatxref)
*************** DIR. The order in which library files ar
*** 17718,17724 ****
  
  @table @asis
  
! @item @code{nostdinc}
  
  Do not look for sources in the system default directory.
  @end table
--- 17935,17941 ----
  
  @table @asis
  
! @item @code{-nostdinc}
  
  Do not look for sources in the system default directory.
  @end table
*************** Do not look for sources in the system de
*** 17728,17734 ****
  
  @table @asis
  
! @item @code{nostdlib}
  
  Do not look for library files in the system default directory.
  @end table
--- 17945,17951 ----
  
  @table @asis
  
! @item @code{-nostdlib}
  
  Do not look for library files in the system default directory.
  @end table
*************** Do not look for library files in the sys
*** 17738,17749 ****
  
  @table @asis
  
! @item @code{-ext=@emph{extension}}
  
! Specify an alternate ali file extension. The default is @cite{ali} and other
! extensions (e.g. @cite{gli} for C/C++ sources when using @emph{-fdump-xref})
! may be specified via this switch. Note that if this switch overrides the
! default, which means that only the new extension will be considered.
  @end table
  
  @geindex --RTS (gnatxref)
--- 17955,17966 ----
  
  @table @asis
  
! @item @code{--ext=@emph{extension}}
  
! Specify an alternate ali file extension. The default is @code{ali} and other
! extensions (e.g. @code{gli} for C/C++ sources) may be specified via this switch.
! Note that if this switch overrides the default, only the new extension will
! be considered.
  @end table
  
  @geindex --RTS (gnatxref)
*************** default, which means that only the new e
*** 17751,17760 ****
  
  @table @asis
  
! @item @code{-RTS=@emph{rts-path}}
  
  Specifies the default location of the runtime library. Same meaning as the
! equivalent @emph{gnatmake} flag (@ref{dc,,Switches for gnatmake}).
  @end table
  
  @geindex -d (gnatxref)
--- 17968,17977 ----
  
  @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{dc,,Switches for gnatmake}).
  @end table
  
  @geindex -d (gnatxref)
*************** equivalent @emph{gnatmake} flag (@ref{dc
*** 17762,17770 ****
  
  @table @asis
  
! @item @code{d}
  
! If this switch is set @cite{gnatxref} will output the parent type
  reference for each matching derived types.
  @end table
  
--- 17979,17987 ----
  
  @table @asis
  
! @item @code{-d}
  
! If this switch is set @code{gnatxref} will output the parent type
  reference for each matching derived types.
  @end table
  
*************** reference for each matching derived type
*** 17773,17779 ****
  
  @table @asis
  
! @item @code{f}
  
  If this switch is set, the output file names will be preceded by their
  directory (if the file was found in the search path). If this switch is
--- 17990,17996 ----
  
  @table @asis
  
! @item @code{-f}
  
  If this switch is set, the output file names will be preceded by their
  directory (if the file was found in the search path). If this switch is
*************** not set, the directory will not be print
*** 17785,17795 ****
  
  @table @asis
  
! @item @code{g}
  
  If this switch is set, information is output only for library-level
  entities, ignoring local entities. The use of this switch may accelerate
! @cite{gnatfind} and @cite{gnatxref}.
  @end table
  
  @geindex -IDIR (gnatxref)
--- 18002,18012 ----
  
  @table @asis
  
! @item @code{-g}
  
  If this switch is set, information is output only for library-level
  entities, ignoring local entities. The use of this switch may accelerate
! @code{gnatfind} and @code{gnatxref}.
  @end table
  
  @geindex -IDIR (gnatxref)
*************** entities, ignoring local entities. The u
*** 17797,17803 ****
  
  @table @asis
  
! @item @code{I@emph{DIR}}
  
  Equivalent to @code{-aODIR -aIDIR}.
  @end table
--- 18014,18020 ----
  
  @table @asis
  
! @item @code{-I@emph{DIR}}
  
  Equivalent to @code{-aODIR -aIDIR}.
  @end table
*************** Equivalent to @code{-aODIR -aIDIR}.
*** 17807,17835 ****
  
  @table @asis
  
! @item @code{p@emph{FILE}}
  
! Specify a project file to use.
  
! By default, @cite{gnatxref} and @cite{gnatfind} will try to locate a
! project file in the current directory.
  
! If a project file is either specified or found by the tools, then the content
! of the source directory and object directory lines are added as if they
! had been specified respectively by @code{-aI}
! and @code{-aO}.
  
! @item @code{u}
  
  Output only unused symbols. This may be really useful if you give your
! main compilation unit on the command line, as @cite{gnatxref} will then
  display every unused entity and 'with'ed package.
  
! @item @code{v}
  
! Instead of producing the default output, @cite{gnatxref} will generate a
  @code{tags} file that can be used by vi. For examples how to use this
! feature, see @ref{154,,Examples of gnatxref Usage}. The tags file is output
  to the standard output, thus you will have to redirect it to a file.
  @end table
  
--- 18024,18051 ----
  
  @table @asis
  
! @item @code{-p@emph{FILE}}
  
! Specify a configuration file to use to list the source and object directories.
  
! If a file is specified, then the content of the source directory and object
! directory lines are added as if they had been specified respectively
! by @code{-aI} and @code{-aO}.
  
! See @ref{154,,Configuration Files for gnatxref and gnatfind} for the syntax
! of this configuration file.
  
! @item @code{-u}
  
  Output only unused symbols. This may be really useful if you give your
! main compilation unit on the command line, as @code{gnatxref} will then
  display every unused entity and 'with'ed package.
  
! @item @code{-v}
  
! Instead of producing the default output, @code{gnatxref} will generate a
  @code{tags} file that can be used by vi. For examples how to use this
! feature, see @ref{155,,Examples of gnatxref Usage}. The tags file is output
  to the standard output, thus you will have to redirect it to a file.
  @end table
  
*************** All these switches may be in any order o
*** 17837,17854 ****
  appear after the file names. They need not be separated by spaces, thus
  you can say @code{gnatxref -ag} instead of @code{gnatxref -a -g}.
  
! @node gnatfind Switches,Project Files for gnatxref and gnatfind,gnatxref Switches,The Cross-Referencing Tools gnatxref and gnatfind
! @anchor{gnat_ugn/gnat_utility_programs id11}@anchor{155}@anchor{gnat_ugn/gnat_utility_programs gnatfind-switches}@anchor{156}
! @subsection @cite{gnatfind} Switches
  
  
! The command invocation for @cite{gnatfind} is:
  
  @quotation
  
  @example
! $ gnatfind [`switches`] `pattern`[:`sourcefile`[:`line`[:`column`]]]
!       [`file1` `file2` ...]
  @end example
  @end quotation
  
--- 18053,18070 ----
  appear after the file names. They need not be separated by spaces, thus
  you can say @code{gnatxref -ag} instead of @code{gnatxref -a -g}.
  
! @node gnatfind Switches,Configuration Files for gnatxref and gnatfind,gnatxref Switches,The Cross-Referencing Tools gnatxref and gnatfind
! @anchor{gnat_ugn/gnat_utility_programs id11}@anchor{156}@anchor{gnat_ugn/gnat_utility_programs gnatfind-switches}@anchor{157}
! @subsection @code{gnatfind} Switches
  
  
! The command invocation for @code{gnatfind} is:
  
  @quotation
  
  @example
! $ gnatfind [ switches ]  pattern[:sourcefile[:line[:column]]]
!       [file1 file2 ...]
  @end example
  @end quotation
  
*************** with the following iterpretation of the
*** 17860,17866 ****
  @item @emph{pattern}
  
  An entity will be output only if it matches the regular expression found
! in @cite{pattern}, see @ref{157,,Regular Expressions in gnatfind and gnatxref}.
  
  Omitting the pattern is equivalent to specifying @code{*}, which
  will match any entity. Note that if you do not provide a pattern, you
--- 18076,18082 ----
  @item @emph{pattern}
  
  An entity will be output only if it matches the regular expression found
! in @emph{pattern}, see @ref{158,,Regular Expressions in gnatfind and gnatxref}.
  
  Omitting the pattern is equivalent to specifying @code{*}, which
  will match any entity. Note that if you do not provide a pattern, you
*************** for matching purposes. At the current ti
*** 17872,17880 ****
  
  @item @emph{sourcefile}
  
! @cite{gnatfind} will look for references, bodies or declarations
! of symbols referenced in @code{sourcefile}, at line @cite{line}
! and column @cite{column}. See @ref{158,,Examples of gnatfind Usage}
  for syntax examples.
  
  @item @emph{line}
--- 18088,18096 ----
  
  @item @emph{sourcefile}
  
! @code{gnatfind} will look for references, bodies or declarations
! of symbols referenced in @code{sourcefile}, at line @code{line}
! and column @code{column}. See @ref{159,,Examples of gnatfind Usage}
  for syntax examples.
  
  @item @emph{line}
*************** isn't in one of @code{file1}, @code{file
*** 17904,17910 ****
  occurrences of the entity in the separate units of the ones given on the
  command line will also be displayed.
  
! Note that if you specify at least one file in this part, @cite{gnatfind} may
  sometimes not be able to find the body of the subprograms.
  @end table
  
--- 18120,18126 ----
  occurrences of the entity in the separate units of the ones given on the
  command line will also be displayed.
  
! Note that if you specify at least one file in this part, @code{gnatfind} may
  sometimes not be able to find the body of the subprograms.
  @end table
  
*************** Display Copyright and version, then exit
*** 17928,17936 ****
  
  @table @asis
  
! @item @code{-help}
  
! If @emph{--version} was not used, display usage, then exit disregarding
  all other options.
  @end table
  
--- 18144,18152 ----
  
  @table @asis
  
! @item @code{--help}
  
! If @code{--version} was not used, display usage, then exit disregarding
  all other options.
  @end table
  
*************** all other options.
*** 17939,17950 ****
  
  @table @asis
  
! @item @code{a}
  
! If this switch is present, @cite{gnatfind} and @cite{gnatxref} will parse
  the read-only files found in the library search path. Otherwise, these files
  will be ignored. This option can be used to protect Gnat sources or your own
! libraries from being parsed, thus making @cite{gnatfind} and @cite{gnatxref}
  much faster, and their output much smaller. Read-only here refers to access
  or permission status in the file system for the current user.
  @end table
--- 18155,18166 ----
  
  @table @asis
  
! @item @code{-a}
  
! If this switch is present, @code{gnatfind} and @code{gnatxref} will parse
  the read-only files found in the library search path. Otherwise, these files
  will be ignored. This option can be used to protect Gnat sources or your own
! libraries from being parsed, thus making @code{gnatfind} and @code{gnatxref}
  much faster, and their output much smaller. Read-only here refers to access
  or permission status in the file system for the current user.
  @end table
*************** or permission status in the file system
*** 17954,17963 ****
  
  @table @asis
  
! @item @code{aI@emph{DIR}}
  
  When looking for source files also look in directory DIR. The order in which
! source file search is undertaken is the same as for @emph{gnatmake}.
  @end table
  
  @geindex -aODIR (gnatfind)
--- 18170,18179 ----
  
  @table @asis
  
! @item @code{-aI@emph{DIR}}
  
  When looking for source files also look in directory DIR. The order in which
! source file search is undertaken is the same as for @code{gnatmake}.
  @end table
  
  @geindex -aODIR (gnatfind)
*************** source file search is undertaken is the
*** 17965,17975 ****
  
  @table @asis
  
! @item @code{aO@emph{DIR}}
  
  When searching for library and object files, look in directory
  DIR. The order in which library files are searched is the same as for
! @emph{gnatmake}.
  @end table
  
  @geindex -nostdinc (gnatfind)
--- 18181,18191 ----
  
  @table @asis
  
! @item @code{-aO@emph{DIR}}
  
  When searching for library and object files, look in directory
  DIR. The order in which library files are searched is the same as for
! @code{gnatmake}.
  @end table
  
  @geindex -nostdinc (gnatfind)
*************** DIR. The order in which library files ar
*** 17977,17983 ****
  
  @table @asis
  
! @item @code{nostdinc}
  
  Do not look for sources in the system default directory.
  @end table
--- 18193,18199 ----
  
  @table @asis
  
! @item @code{-nostdinc}
  
  Do not look for sources in the system default directory.
  @end table
*************** Do not look for sources in the system de
*** 17987,17993 ****
  
  @table @asis
  
! @item @code{nostdlib}
  
  Do not look for library files in the system default directory.
  @end table
--- 18203,18209 ----
  
  @table @asis
  
! @item @code{-nostdlib}
  
  Do not look for library files in the system default directory.
  @end table
*************** Do not look for library files in the sys
*** 17997,18008 ****
  
  @table @asis
  
! @item @code{-ext=@emph{extension}}
  
! Specify an alternate ali file extension. The default is @cite{ali} and other
! extensions (e.g. @cite{gli} for C/C++ sources when using @emph{-fdump-xref})
! may be specified via this switch. Note that if this switch overrides the
! default, which means that only the new extension will be considered.
  @end table
  
  @geindex --RTS (gnatfind)
--- 18213,18223 ----
  
  @table @asis
  
! @item @code{--ext=@emph{extension}}
  
! Specify an alternate ali file extension. The default is @code{ali} and other
! extensions may be specified via this switch. Note that if this switch
! overrides the default, only the new extension will be considered.
  @end table
  
  @geindex --RTS (gnatfind)
*************** default, which means that only the new e
*** 18010,18019 ****
  
  @table @asis
  
! @item @code{-RTS=@emph{rts-path}}
  
  Specifies the default location of the runtime library. Same meaning as the
! equivalent @emph{gnatmake} flag (@ref{dc,,Switches for gnatmake}).
  @end table
  
  @geindex -d (gnatfind)
--- 18225,18234 ----
  
  @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{dc,,Switches for gnatmake}).
  @end table
  
  @geindex -d (gnatfind)
*************** equivalent @emph{gnatmake} flag (@ref{dc
*** 18021,18029 ****
  
  @table @asis
  
! @item @code{d}
  
! If this switch is set, then @cite{gnatfind} will output the parent type
  reference for each matching derived types.
  @end table
  
--- 18236,18244 ----
  
  @table @asis
  
! @item @code{-d}
  
! If this switch is set, then @code{gnatfind} will output the parent type
  reference for each matching derived types.
  @end table
  
*************** reference for each matching derived type
*** 18032,18041 ****
  
  @table @asis
  
! @item @code{e}
  
! By default, @cite{gnatfind} accept the simple regular expression set for
! @cite{pattern}. If this switch is set, then the pattern will be
  considered as full Unix-style regular expression.
  @end table
  
--- 18247,18256 ----
  
  @table @asis
  
! @item @code{-e}
  
! By default, @code{gnatfind} accept the simple regular expression set for
! @code{pattern}. If this switch is set, then the pattern will be
  considered as full Unix-style regular expression.
  @end table
  
*************** considered as full Unix-style regular ex
*** 18044,18050 ****
  
  @table @asis
  
! @item @code{f}
  
  If this switch is set, the output file names will be preceded by their
  directory (if the file was found in the search path). If this switch is
--- 18259,18265 ----
  
  @table @asis
  
! @item @code{-f}
  
  If this switch is set, the output file names will be preceded by their
  directory (if the file was found in the search path). If this switch is
*************** not set, the directory will not be print
*** 18056,18066 ****
  
  @table @asis
  
! @item @code{g}
  
  If this switch is set, information is output only for library-level
  entities, ignoring local entities. The use of this switch may accelerate
! @cite{gnatfind} and @cite{gnatxref}.
  @end table
  
  @geindex -IDIR (gnatfind)
--- 18271,18281 ----
  
  @table @asis
  
! @item @code{-g}
  
  If this switch is set, information is output only for library-level
  entities, ignoring local entities. The use of this switch may accelerate
! @code{gnatfind} and @code{gnatxref}.
  @end table
  
  @geindex -IDIR (gnatfind)
*************** entities, ignoring local entities. The u
*** 18068,18074 ****
  
  @table @asis
  
! @item @code{I@emph{DIR}}
  
  Equivalent to @code{-aODIR -aIDIR}.
  @end table
--- 18283,18289 ----
  
  @table @asis
  
! @item @code{-I@emph{DIR}}
  
  Equivalent to @code{-aODIR -aIDIR}.
  @end table
*************** Equivalent to @code{-aODIR -aIDIR}.
*** 18078,18093 ****
  
  @table @asis
  
! @item @code{p@emph{FILE}}
  
! Specify a project file.
! By default, @cite{gnatxref} and @cite{gnatfind} will try to locate a
! project file in the current directory.
  
! If a project file is either specified or found by the tools, then the content
! of the source directory and object directory lines are added as if they
! had been specified respectively by @code{-aI} and
! @code{-aO}.
  @end table
  
  @geindex -r (gnatfind)
--- 18293,18308 ----
  
  @table @asis
  
! @item @code{-p@emph{FILE}}
  
! Specify a configuration file to use to list the source and object directories.
  
! If a file is specified, then the content of the source directory and object
! directory lines are added as if they had been specified respectively
! by @code{-aI} and @code{-aO}.
! 
! See @ref{154,,Configuration Files for gnatxref and gnatfind} for the syntax
! of this configuration file.
  @end table
  
  @geindex -r (gnatfind)
*************** had been specified respectively by @code
*** 18095,18105 ****
  
  @table @asis
  
! @item @code{r}
  
! By default, @cite{gnatfind} will output only the information about the
  declaration, body or type completion of the entities. If this switch is
! set, the @cite{gnatfind} will locate every reference to the entities in
  the files specified on the command line (or in every file in the search
  path if no file is given on the command line).
  @end table
--- 18310,18320 ----
  
  @table @asis
  
! @item @code{-r}
  
! By default, @code{gnatfind} will output only the information about the
  declaration, body or type completion of the entities. If this switch is
! set, the @code{gnatfind} will locate every reference to the entities in
  the files specified on the command line (or in every file in the search
  path if no file is given on the command line).
  @end table
*************** path if no file is given on the command
*** 18109,18117 ****
  
  @table @asis
  
! @item @code{s}
  
! If this switch is set, then @cite{gnatfind} will output the content
  of the Ada source file lines were the entity was found.
  @end table
  
--- 18324,18332 ----
  
  @table @asis
  
! @item @code{-s}
  
! If this switch is set, then @code{gnatfind} will output the content
  of the Ada source file lines were the entity was found.
  @end table
  
*************** of the Ada source file lines were the en
*** 18120,18128 ****
  
  @table @asis
  
! @item @code{t}
  
! If this switch is set, then @cite{gnatfind} will output the type hierarchy for
  the specified type. It act like -d option but recursively from parent
  type to parent type. When this switch is set it is not possible to
  specify more than one file.
--- 18335,18343 ----
  
  @table @asis
  
! @item @code{-t}
  
! If this switch is set, then @code{gnatfind} will output the type hierarchy for
  the specified type. It act like -d option but recursively from parent
  type to parent type. When this switch is set it is not possible to
  specify more than one file.
*************** appear after the file names. They need n
*** 18133,18164 ****
  you can say @code{gnatxref -ag} instead of
  @code{gnatxref -a -g}.
  
! As stated previously, gnatfind will search in every directory in the
  search path. You can force it to look only in the current directory if
! you specify @cite{*} at the end of the command line.
  
! @node Project Files for gnatxref and gnatfind,Regular Expressions in gnatfind and gnatxref,gnatfind Switches,The Cross-Referencing Tools gnatxref and gnatfind
! @anchor{gnat_ugn/gnat_utility_programs project-files-for-gnatxref-and-gnatfind}@anchor{159}@anchor{gnat_ugn/gnat_utility_programs id12}@anchor{15a}
! @subsection Project Files for @emph{gnatxref} and @emph{gnatfind}
  
  
! Project files allow a programmer to specify how to compile its
! application, where to find sources, etc.  These files are used
! primarily by GPS, but they can also be used
! by the two tools @cite{gnatxref} and @cite{gnatfind}.
! 
! A project file name must end with @code{.gpr}. If a single one is
! present in the current directory, then @cite{gnatxref} and @cite{gnatfind} will
! extract the information from it. If multiple project files are found, none of
! them is read, and you have to use the @code{-p} switch to specify the one
! you want to use.
  
! The following lines can be included, even though most of them have default
! values which can be used in most cases.
! The lines can be entered in any order in the file.
! Except for @code{src_dir} and @code{obj_dir}, you can only have one instance of
! each line. If you have multiple instances, only the last one is taken into
! account.
  
  
  @itemize *
--- 18348,18367 ----
  you can say @code{gnatxref -ag} instead of
  @code{gnatxref -a -g}.
  
! As stated previously, @code{gnatfind} will search in every directory in the
  search path. You can force it to look only in the current directory if
! you specify @code{*} at the end of the command line.
  
! @node Configuration Files for gnatxref and gnatfind,Regular Expressions in gnatfind and gnatxref,gnatfind Switches,The Cross-Referencing Tools gnatxref and gnatfind
! @anchor{gnat_ugn/gnat_utility_programs configuration-files-for-gnatxref-and-gnatfind}@anchor{154}@anchor{gnat_ugn/gnat_utility_programs id12}@anchor{15a}
! @subsection Configuration Files for @code{gnatxref} and @code{gnatfind}
  
  
! Configuration files are used by @code{gnatxref} and @code{gnatfind} to specify
! the list of source and object directories to consider. They can be
! specified via the @code{-p} switch.
  
! The following lines can be included, in any order in the file:
  
  
  @itemize *
*************** account.
*** 18169,18176 ****
  
  @item @emph{src_dir=DIR}
  
! [default: @cite{"./"}].
! Specifies a directory where to look for source files. Multiple @cite{src_dir}
  lines can be specified and they will be searched in the order they
  are specified.
  @end table
--- 18372,18379 ----
  
  @item @emph{src_dir=DIR}
  
! [default: @code{"./"}].
! Specifies a directory where to look for source files. Multiple @code{src_dir}
  lines can be specified and they will be searched in the order they
  are specified.
  @end table
*************** are specified.
*** 18181,18289 ****
  
  @item @emph{obj_dir=DIR}
  
! [default: @cite{"./"}].
  Specifies a directory where to look for object and library files. Multiple
! @cite{obj_dir} lines can be specified, and they will be searched in the order
  they are specified
  @end table
- 
- @item 
- 
- @table @asis
- 
- @item @emph{comp_opt=SWITCHES}
- 
- [default: @cite{""}].
- Creates a variable which can be referred to subsequently by using
- the @cite{$@{comp_opt@}} notation. This is intended to store the default
- switches given to @emph{gnatmake} and @emph{gcc}.
- @end table
- 
- @item 
- 
- @table @asis
- 
- @item @emph{bind_opt=SWITCHES}
- 
- [default: @cite{""}].
- Creates a variable which can be referred to subsequently by using
- the @code{$@emph{bind_opt}} notation. This is intended to store the default
- switches given to @emph{gnatbind}.
- @end table
- 
- @item 
- 
- @table @asis
- 
- @item @emph{link_opt=SWITCHES}
- 
- [default: @cite{""}].
- Creates a variable which can be referred to subsequently by using
- the @code{$@emph{link_opt}} notation. This is intended to store the default
- switches given to @emph{gnatlink}.
- @end table
- 
- @item 
- 
- @table @asis
- 
- @item @emph{main=EXECUTABLE}
- 
- [default: @cite{""}].
- Specifies the name of the executable for the application. This variable can
- be referred to in the following lines by using the @code{@emph{$@{main}} notation.
- @end table
- 
- @item 
- 
- @table @asis
- 
- @item @emph{comp_cmd=COMMAND}
- 
- [default: @cite{"gcc -c -I$@{src_dir@} -g -gnatq"}].
- Specifies the command used to compile a single file in the application.
- @end table
- 
- @item 
- 
- @table @asis
- 
- @item @emph{make_cmd=COMMAND}
- 
- [default: @cite{"gnatmake $@{main@} -aI$@{src_dir@} -aO$@{obj_dir@} -g -gnatq -cargs $@{comp_opt@} -bargs $@{bind_opt@} -largs $@{link_opt@}"}].
- Specifies the command used to recompile the whole application.
- @end table
- 
- @item 
- 
- @table @asis
- 
- @item @emph{run_cmd=COMMAND}
- 
- [default: @cite{"$@{main@}"}].
- Specifies the command used to run the application.
- @end table
- 
- @item 
- 
- @table @asis
- 
- @item @emph{debug_cmd=COMMAND}
- 
- [default: @cite{"gdb $@{main@}"}].
- Specifies the command used to debug the application
- @end table
  @end itemize
  
! @emph{gnatxref} and @emph{gnatfind} only take into account the
! @cite{src_dir} and @cite{obj_dir} lines, and ignore the others.
  
! @node Regular Expressions in gnatfind and gnatxref,Examples of gnatxref Usage,Project Files for gnatxref and gnatfind,The Cross-Referencing Tools gnatxref and gnatfind
! @anchor{gnat_ugn/gnat_utility_programs id13}@anchor{15b}@anchor{gnat_ugn/gnat_utility_programs regular-expressions-in-gnatfind-and-gnatxref}@anchor{157}
! @subsection Regular Expressions in @cite{gnatfind} and @cite{gnatxref}
  
  
! As specified in the section about @emph{gnatfind}, the pattern can be a
  regular expression. Two kinds of regular expressions
  are recognized:
  
--- 18384,18404 ----
  
  @item @emph{obj_dir=DIR}
  
! [default: @code{"./"}].
  Specifies a directory where to look for object and library files. Multiple
! @code{obj_dir} lines can be specified, and they will be searched in the order
  they are specified
  @end table
  @end itemize
  
! Any other line will be silently ignored.
  
! @node Regular Expressions in gnatfind and gnatxref,Examples of gnatxref Usage,Configuration Files for gnatxref and gnatfind,The Cross-Referencing Tools gnatxref and gnatfind
! @anchor{gnat_ugn/gnat_utility_programs id13}@anchor{15b}@anchor{gnat_ugn/gnat_utility_programs regular-expressions-in-gnatfind-and-gnatxref}@anchor{158}
! @subsection Regular Expressions in @code{gnatfind} and @code{gnatxref}
  
  
! As specified in the section about @code{gnatfind}, the pattern can be a
  regular expression. Two kinds of regular expressions
  are recognized:
  
*************** least one character.
*** 18372,18379 ****
  @end itemize
  
  @node Examples of gnatxref Usage,Examples of gnatfind Usage,Regular Expressions in gnatfind and gnatxref,The Cross-Referencing Tools gnatxref and gnatfind
! @anchor{gnat_ugn/gnat_utility_programs examples-of-gnatxref-usage}@anchor{154}@anchor{gnat_ugn/gnat_utility_programs id14}@anchor{15c}
! @subsection Examples of @cite{gnatxref} Usage
  
  
  @menu
--- 18487,18494 ----
  @end itemize
  
  @node Examples of gnatxref Usage,Examples of gnatfind Usage,Regular Expressions in gnatfind and gnatxref,The Cross-Referencing Tools gnatxref and gnatfind
! @anchor{gnat_ugn/gnat_utility_programs examples-of-gnatxref-usage}@anchor{155}@anchor{gnat_ugn/gnat_utility_programs id14}@anchor{15c}
! @subsection Examples of @code{gnatxref} Usage
  
  
  @menu
*************** You can then issue any of the following
*** 18431,18437 ****
  
  @item 
  @code{gnatxref main.adb}
! @cite{gnatxref} generates cross-reference information for main.adb
  and every unit 'with'ed by main.adb.
  
  The output would be:
--- 18546,18552 ----
  
  @item 
  @code{gnatxref main.adb}
! @code{gnatxref} generates cross-reference information for main.adb
  and every unit 'with'ed by main.adb.
  
  The output would be:
*************** Print
*** 18468,18496 ****
  @end example
  @end quotation
  
! This shows that the entity @cite{Main} is declared in main.ads, line 2, column 9,
  its body is in main.adb, line 1, column 14 and is not referenced any where.
  
! The entity @cite{Print} is declared in bar.ads, line 2, column 15 and it
! is referenced in main.adb, line 6 column 12 and line 7 column 12.
  
  @item 
  @code{gnatxref package1.adb package2.ads}
! @cite{gnatxref} will generates cross-reference information for
! package1.adb, package2.ads and any other package 'with'ed by any
  of these.
  @end itemize
  @end quotation
  
  @node Using gnatxref with vi,,General Usage,Examples of gnatxref Usage
  @anchor{gnat_ugn/gnat_utility_programs using-gnatxref-with-vi}@anchor{15e}
! @subsubsection Using gnatxref with vi
  
  
! @cite{gnatxref} can generate a tags file output, which can be used
! directly from @emph{vi}. Note that the standard version of @emph{vi}
  will not work properly with overloaded symbols. Consider using another
! free implementation of @emph{vi}, such as @emph{vim}.
  
  @quotation
  
--- 18583,18611 ----
  @end example
  @end quotation
  
! This shows that the entity @code{Main} is declared in main.ads, line 2, column 9,
  its body is in main.adb, line 1, column 14 and is not referenced any where.
  
! The entity @code{Print} is declared in @code{bar.ads}, line 2, column 15 and it
! is referenced in @code{main.adb}, line 6 column 12 and line 7 column 12.
  
  @item 
  @code{gnatxref package1.adb package2.ads}
! @code{gnatxref} will generates cross-reference information for
! @code{package1.adb}, @code{package2.ads} and any other package @code{with}ed by any
  of these.
  @end itemize
  @end quotation
  
  @node Using gnatxref with vi,,General Usage,Examples of gnatxref Usage
  @anchor{gnat_ugn/gnat_utility_programs using-gnatxref-with-vi}@anchor{15e}
! @subsubsection Using @code{gnatxref} with @code{vi}
  
  
! @code{gnatxref} can generate a tags file output, which can be used
! directly from @code{vi}. Note that the standard version of @code{vi}
  will not work properly with overloaded symbols. Consider using another
! free implementation of @code{vi}, such as @code{vim}.
  
  @quotation
  
*************** $ gnatxref -v gnatfind.adb > tags
*** 18499,18505 ****
  @end example
  @end quotation
  
! The following command will generate the tags file for @cite{gnatfind} itself
  (if the sources are in the search path!):
  
  @quotation
--- 18614,18620 ----
  @end example
  @end quotation
  
! The following command will generate the tags file for @code{gnatfind} itself
  (if the sources are in the search path!):
  
  @quotation
*************** $ gnatxref -v gnatfind.adb > tags
*** 18509,18521 ****
  @end example
  @end quotation
  
! From @emph{vi}, you can then use the command @code{:tag @emph{entity}}
! (replacing @cite{entity} by whatever you are looking for), and vi will
  display a new file with the corresponding declaration of entity.
  
  @node Examples of gnatfind Usage,,Examples of gnatxref Usage,The Cross-Referencing Tools gnatxref and gnatfind
! @anchor{gnat_ugn/gnat_utility_programs id15}@anchor{15f}@anchor{gnat_ugn/gnat_utility_programs examples-of-gnatfind-usage}@anchor{158}
! @subsection Examples of @cite{gnatfind} Usage
  
  
  
--- 18624,18636 ----
  @end example
  @end quotation
  
! From @code{vi}, you can then use the command @code{:tag @emph{entity}}
! (replacing @code{entity} by whatever you are looking for), and vi will
  display a new file with the corresponding declaration of entity.
  
  @node Examples of gnatfind Usage,,Examples of gnatxref Usage,The Cross-Referencing Tools gnatxref and gnatfind
! @anchor{gnat_ugn/gnat_utility_programs id15}@anchor{15f}@anchor{gnat_ugn/gnat_utility_programs examples-of-gnatfind-usage}@anchor{159}
! @subsection Examples of @code{gnatfind} Usage
  
  
  
*************** declared at line 45 of foo.ads
*** 18547,18553 ****
  
  @item 
  @code{gnatfind -fs xyz:main.adb}
! This is the same command as the previous one, but @cite{gnatfind} will
  display the content of the Ada source file lines.
  
  The output will look like:
--- 18662,18668 ----
  
  @item 
  @code{gnatfind -fs xyz:main.adb}
! This is the same command as the previous one, but @code{gnatfind} will
  display the content of the Ada source file lines.
  
  The output will look like:
*************** point to any character in the middle of
*** 18590,18605 ****
  
  @node The Ada to HTML Converter gnathtml,,The Cross-Referencing Tools gnatxref and gnatfind,GNAT Utility Programs
  @anchor{gnat_ugn/gnat_utility_programs the-ada-to-html-converter-gnathtml}@anchor{23}@anchor{gnat_ugn/gnat_utility_programs id16}@anchor{160}
! @section The Ada to HTML Converter @cite{gnathtml}
  
  
  @geindex gnathtml
  
! @emph{gnathtml} is a Perl script that allows Ada source files to be browsed using
  standard Web browsers. For installation information, see @ref{161,,Installing gnathtml}.
  
  Ada reserved keywords are highlighted in a bold font and Ada comments in
! a blue font. Unless your program was compiled with the gcc @emph{-gnatx}
  switch to suppress the generation of cross-referencing information, user
  defined variables and types will appear in a different color; you will
  be able to click on any identifier and go to its declaration.
--- 18705,18720 ----
  
  @node The Ada to HTML Converter gnathtml,,The Cross-Referencing Tools gnatxref and gnatfind,GNAT Utility Programs
  @anchor{gnat_ugn/gnat_utility_programs the-ada-to-html-converter-gnathtml}@anchor{23}@anchor{gnat_ugn/gnat_utility_programs id16}@anchor{160}
! @section The Ada to HTML Converter @code{gnathtml}
  
  
  @geindex gnathtml
  
! @code{gnathtml} is a Perl script that allows Ada source files to be browsed using
  standard Web browsers. For installation information, see @ref{161,,Installing gnathtml}.
  
  Ada reserved keywords are highlighted in a bold font and Ada comments in
! a blue font. Unless your program was compiled with the gcc @code{-gnatx}
  switch to suppress the generation of cross-referencing information, user
  defined variables and types will appear in a different color; you will
  be able to click on any identifier and go to its declaration.
*************** be able to click on any identifier and g
*** 18612,18618 ****
  
  @node Invoking gnathtml,Installing gnathtml,,The Ada to HTML Converter gnathtml
  @anchor{gnat_ugn/gnat_utility_programs invoking-gnathtml}@anchor{162}@anchor{gnat_ugn/gnat_utility_programs id17}@anchor{163}
! @subsection Invoking @emph{gnathtml}
  
  
  The command line is as follows:
--- 18727,18733 ----
  
  @node Invoking gnathtml,Installing gnathtml,,The Ada to HTML Converter gnathtml
  @anchor{gnat_ugn/gnat_utility_programs invoking-gnathtml}@anchor{162}@anchor{gnat_ugn/gnat_utility_programs id17}@anchor{163}
! @subsection Invoking @code{gnathtml}
  
  
  The command line is as follows:
*************** The command line is as follows:
*** 18620,18630 ****
  @quotation
  
  @example
! $ perl gnathtml.pl [`switches`] `ada-files`
  @end example
  @end quotation
  
! You can specify as many Ada files as you want. @cite{gnathtml} will generate
  an html file for every ada file, and a global file called @code{index.htm}.
  This file is an index of every identifier defined in the files.
  
--- 18735,18745 ----
  @quotation
  
  @example
! $ perl gnathtml.pl [ switches ] ada-files
  @end example
  @end quotation
  
! You can specify as many Ada files as you want. @code{gnathtml} will generate
  an html file for every ada file, and a global file called @code{index.htm}.
  This file is an index of every identifier defined in the files.
  
*************** value is green. The color argument can b
*** 18659,18665 ****
  @item @code{d}
  
  If the Ada files depend on some other files (for instance through
! @cite{with} clauses, the latter files will also be converted to html.
  Only the files in the user project will be converted to html, not the files
  in the run-time library itself.
  @end table
--- 18774,18780 ----
  @item @code{d}
  
  If the Ada files depend on some other files (for instance through
! @code{with} clauses, the latter files will also be converted to html.
  Only the files in the user project will be converted to html, not the files
  in the run-time library itself.
  @end table
*************** in the run-time library itself.
*** 18671,18677 ****
  
  @item @code{D}
  
! This command is the same as @emph{-d} above, but @emph{gnathtml} will
  also look for files in the run-time library, and generate html files for them.
  @end table
  
--- 18786,18792 ----
  
  @item @code{D}
  
! This command is the same as @code{-d} above, but @code{gnathtml} will
  also look for files in the run-time library, and generate html files for them.
  @end table
  
*************** If you do not specify an extension, it w
*** 18695,18701 ****
  
  By default, gnathtml will generate html links only for global entities
  ('with'ed units, global variables and types,...).  If you specify
! @emph{-f} on the command line, then links will be generated for local
  entities too.
  @end table
  
--- 18810,18816 ----
  
  By default, gnathtml will generate html links only for global entities
  ('with'ed units, global variables and types,...).  If you specify
! @code{-f} on the command line, then links will be generated for local
  entities too.
  @end table
  
*************** entities too.
*** 18706,18713 ****
  
  @item @code{l @emph{number}}
  
! If this switch is provided and @cite{number} is not 0, then
! @cite{gnathtml} will number the html files every @cite{number} line.
  @end table
  
  @geindex -I (gnathtml)
--- 18821,18828 ----
  
  @item @code{l @emph{number}}
  
! If this switch is provided and @code{number} is not 0, then
! @code{gnathtml} will number the html files every @code{number} line.
  @end table
  
  @geindex -I (gnathtml)
*************** systems.
*** 18778,18792 ****
  
  @node Installing gnathtml,,Invoking gnathtml,The Ada to HTML Converter gnathtml
  @anchor{gnat_ugn/gnat_utility_programs installing-gnathtml}@anchor{161}@anchor{gnat_ugn/gnat_utility_programs id18}@anchor{164}
! @subsection Installing @cite{gnathtml}
  
  
! @cite{Perl} needs to be installed on your machine to run this script.
! @cite{Perl} is freely available for almost every architecture and
  operating system via the Internet.
  
  On Unix systems, you  may want to modify  the  first line of  the script
! @cite{gnathtml},  to explicitly  specify  where Perl
  is located. The syntax of this line is:
  
  @quotation
--- 18893,18907 ----
  
  @node Installing gnathtml,,Invoking gnathtml,The Ada to HTML Converter gnathtml
  @anchor{gnat_ugn/gnat_utility_programs installing-gnathtml}@anchor{161}@anchor{gnat_ugn/gnat_utility_programs id18}@anchor{164}
! @subsection Installing @code{gnathtml}
  
  
! @code{Perl} needs to be installed on your machine to run this script.
! @code{Perl} is freely available for almost every architecture and
  operating system via the Internet.
  
  On Unix systems, you  may want to modify  the  first line of  the script
! @code{gnathtml},  to explicitly  specify  where Perl
  is located. The syntax of this line is:
  
  @quotation
*************** Alternatively, you may run the script us
*** 18801,18807 ****
  @quotation
  
  @example
! $ perl gnathtml.pl [`switches`] `files`
  @end example
  @end quotation
  
--- 18916,18922 ----
  @quotation
  
  @example
! $ perl gnathtml.pl [ switches ] files
  @end example
  @end quotation
  
*************** $ perl gnathtml.pl [`switches`] `files`
*** 18818,18823 ****
--- 18933,18939 ----
  
  
  
+ 
  @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
*************** the incorrect user program.
*** 18913,18918 ****
--- 19029,19035 ----
  * Naming Conventions for GNAT Source Files:: 
  * Getting Internal Debugging Information:: 
  * Stack Traceback:: 
+ * Pretty-Printers for the GNAT runtime:: 
  
  @end menu
  
*************** the incorrect user program.
*** 18921,18937 ****
  @subsection The GNAT Debugger GDB
  
  
! @cite{GDB} is a general purpose, platform-independent debugger that
! can be used to debug mixed-language programs compiled with @emph{gcc},
  and in particular is capable of debugging Ada programs compiled with
! GNAT. The latest versions of @cite{GDB} are Ada-aware and can handle
  complex Ada data structures.
  
  See @cite{Debugging with GDB},
! for full details on the usage of @cite{GDB}, including a section on
  its usage on programs. This manual should be consulted for full
  details. The section that follows is a brief introduction to the
! philosophy and use of @cite{GDB}.
  
  When GNAT programs are compiled, the compiler optionally writes debugging
  information into the generated object file, including information on
--- 19038,19054 ----
  @subsection The GNAT Debugger GDB
  
  
! @code{GDB} is a general purpose, platform-independent debugger that
! can be used to debug mixed-language programs compiled with @code{gcc},
  and in particular is capable of debugging Ada programs compiled with
! GNAT. The latest versions of @code{GDB} are Ada-aware and can handle
  complex Ada data structures.
  
  See @cite{Debugging with GDB},
! for full details on the usage of @code{GDB}, including a section on
  its usage on programs. This manual should be consulted for full
  details. The section that follows is a brief introduction to the
! philosophy and use of @code{GDB}.
  
  When GNAT programs are compiled, the compiler optionally writes debugging
  information into the generated object file, including information on
*************** separate from the generated code. It mak
*** 18940,18946 ****
  larger, but it does not add to the size of the actual executable that
  will be loaded into memory, and has no impact on run-time performance. The
  generation of debug information is triggered by the use of the
! -g switch in the @emph{gcc} or @emph{gnatmake} command
  used to carry out the compilations. It is important to emphasize that
  the use of these options does not change the generated code.
  
--- 19057,19063 ----
  larger, but it does not add to the size of the actual executable that
  will be loaded into memory, and has no impact on run-time performance. The
  generation of debug information is triggered by the use of the
! @code{-g} switch in the @code{gcc} or @code{gnatmake} command
  used to carry out the compilations. It is important to emphasize that
  the use of these options does not change the generated code.
  
*************** details about Ada types and variables to
*** 18952,18958 ****
  standard C formats. Details of this encoding scheme may be found in
  the file exp_dbug.ads in the GNAT source distribution. However, the
  details of this encoding are, in general, of no interest to a user,
! since @cite{GDB} automatically performs the necessary decoding.
  
  When a program is bound and linked, the debugging information is
  collected from the object files, and stored in the executable image of
--- 19069,19075 ----
  standard C formats. Details of this encoding scheme may be found in
  the file exp_dbug.ads in the GNAT source distribution. However, the
  details of this encoding are, in general, of no interest to a user,
! since @code{GDB} automatically performs the necessary decoding.
  
  When a program is bound and linked, the debugging information is
  collected from the object files, and stored in the executable image of
*************** the executable program itself. Furthermo
*** 18962,18975 ****
  the normal manner, it runs exactly as if the debug information were
  not present, and takes no more actual memory.
  
! However, if the program is run under control of @cite{GDB}, the
  debugger is activated.  The image of the program is loaded, at which
  point it is ready to run.  If a run command is given, then the program
! will run exactly as it would have if @cite{GDB} were not present. This
! is a crucial part of the @cite{GDB} design philosophy.  @cite{GDB} is
  entirely non-intrusive until a breakpoint is encountered.  If no
  breakpoint is ever hit, the program will run exactly as it would if no
! debugger were present. When a breakpoint is hit, @cite{GDB} accesses
  the debugging information and can respond to user commands to inspect
  variables, and more generally to report on the state of execution.
  
--- 19079,19092 ----
  the normal manner, it runs exactly as if the debug information were
  not present, and takes no more actual memory.
  
! However, if the program is run under control of @code{GDB}, the
  debugger is activated.  The image of the program is loaded, at which
  point it is ready to run.  If a run command is given, then the program
! will run exactly as it would have if @code{GDB} were not present. This
! is a crucial part of the @code{GDB} design philosophy.  @code{GDB} is
  entirely non-intrusive until a breakpoint is encountered.  If no
  breakpoint is ever hit, the program will run exactly as it would if no
! debugger were present. When a breakpoint is hit, @code{GDB} accesses
  the debugging information and can respond to user commands to inspect
  variables, and more generally to report on the state of execution.
  
*************** variables, and more generally to report
*** 18980,18991 ****
  
  This section describes how to initiate the debugger.
  
! The debugger can be launched from a @cite{GPS} menu or
  directly from the command line. The description below covers the latter use.
! All the commands shown can be used in the @cite{GPS} debug console window,
  but there are usually more GUI-based ways to achieve the same effect.
  
! The command to run @cite{GDB} is
  
  @quotation
  
--- 19097,19108 ----
  
  This section describes how to initiate the debugger.
  
! The debugger can be launched from a @code{GPS} menu or
  directly from the command line. The description below covers the latter use.
! All the commands shown can be used in the @code{GPS} debug console window,
  but there are usually more GUI-based ways to achieve the same effect.
  
! The command to run @code{GDB} is
  
  @quotation
  
*************** $ gdb program
*** 18994,19019 ****
  @end example
  @end quotation
  
! where @cite{program} is the name of the executable file. This
  activates the debugger and results in a prompt for debugger commands.
! The simplest command is simply @cite{run}, which causes the program to run
  exactly as if the debugger were not present. The following section
! describes some of the additional commands that can be given to @cite{GDB}.
  
  @node Introduction to GDB Commands,Using Ada Expressions,Running GDB,Running and Debugging Ada Programs
  @anchor{gnat_ugn/gnat_and_program_execution introduction-to-gdb-commands}@anchor{172}@anchor{gnat_ugn/gnat_and_program_execution id5}@anchor{173}
  @subsection Introduction to GDB Commands
  
  
! @cite{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 @cite{GDB} is about. You should create
  a simple program with debugging information and experiment with the use of
! these @cite{GDB} commands on the program as you read through the
  following section.
  
  
--- 19111,19136 ----
  @end example
  @end quotation
  
! where @code{program} is the name of the executable file. This
  activates the debugger and results in a prompt for debugger commands.
! The simplest command is simply @code{run}, which causes the program to run
  exactly as if the debugger were not present. The following section
! describes some of the additional commands that can be given to @code{GDB}.
  
  @node Introduction to GDB Commands,Using Ada Expressions,Running GDB,Running and Debugging Ada Programs
  @anchor{gnat_ugn/gnat_and_program_execution introduction-to-gdb-commands}@anchor{172}@anchor{gnat_ugn/gnat_and_program_execution id5}@anchor{173}
  @subsection Introduction to GDB Commands
  
  
! @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
  a simple program with debugging information and experiment with the use of
! these @code{GDB} commands on the program as you read through the
  following section.
  
  
*************** following section.
*** 19023,19033 ****
  
  @table @asis
  
! @item @emph{set args `arguments`}
  
! The @cite{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 @cite{set args}
  command is not needed if the program does not require arguments.
  @end table
  
--- 19140,19150 ----
  
  @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.
  @end table
  
*************** command is not needed if the program doe
*** 19035,19043 ****
  
  @table @asis
  
! @item @emph{run}
  
! The @cite{run} command causes execution of the program to start from
  the beginning. If the program is already running, that is to say if
  you are currently positioned at a breakpoint, then a prompt will ask
  for confirmation that you want to abandon the current execution and
--- 19152,19160 ----
  
  @table @asis
  
! @item @code{run}
  
! The @code{run} command causes execution of the program to start from
  the beginning. If the program is already running, that is to say if
  you are currently positioned at a breakpoint, then a prompt will ask
  for confirmation that you want to abandon the current execution and
*************** restart.
*** 19048,19065 ****
  
  @table @asis
  
! @item @emph{breakpoint `location`}
  
  The breakpoint command sets a breakpoint, that is to say a point at which
! execution will halt and @cite{GDB} will await further
! commands. @cite{location} is
! either a line number within a file, given in the format @cite{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
  those subprograms you want to breakpoint. You can also
  specify that all of them should be breakpointed. If the program is run
  and execution encounters the breakpoint, then the program
! stops and @cite{GDB} signals that the breakpoint was encountered by
  printing the line of code before which the program is halted.
  @end table
  
--- 19165,19182 ----
  
  @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
  those subprograms you want to breakpoint. You can also
  specify that all of them should be breakpointed. If the program is run
  and execution encounters the breakpoint, then the program
! stops and @code{GDB} signals that the breakpoint was encountered by
  printing the line of code before which the program is halted.
  @end table
  
*************** printing the line of code before which t
*** 19067,19076 ****
  
  @table @asis
  
! @item @emph{catch exception `name`}
  
  This command causes the program execution to stop whenever exception
! @cite{name} is raised.  If @cite{name} is omitted, then the execution is
  suspended when any exception is raised.
  @end table
  
--- 19184,19193 ----
  
  @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
  suspended when any exception is raised.
  @end table
  
*************** suspended when any exception is raised.
*** 19078,19087 ****
  
  @table @asis
  
! @item @emph{print `expression`}
  
  This will print the value of the given expression. Most simple
! Ada expression formats are properly handled by @cite{GDB}, so the expression
  can contain function calls, variables, operators, and attribute references.
  @end table
  
--- 19195,19204 ----
  
  @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
  can contain function calls, variables, operators, and attribute references.
  @end table
  
*************** can contain function calls, variables, o
*** 19089,19095 ****
  
  @table @asis
  
! @item @emph{continue}
  
  Continues execution following a breakpoint, until the next breakpoint or the
  termination of the program.
--- 19206,19212 ----
  
  @table @asis
  
! @item @code{continue}
  
  Continues execution following a breakpoint, until the next breakpoint or the
  termination of the program.
*************** termination of the program.
*** 19099,19105 ****
  
  @table @asis
  
! @item @emph{step}
  
  Executes a single line after a breakpoint. If the next statement
  is a subprogram call, execution continues into (the first statement of)
--- 19216,19222 ----
  
  @table @asis
  
! @item @code{step}
  
  Executes a single line after a breakpoint. If the next statement
  is a subprogram call, execution continues into (the first statement of)
*************** the called subprogram.
*** 19110,19116 ****
  
  @table @asis
  
! @item @emph{next}
  
  Executes a single line. If this line is a subprogram call, executes and
  returns from the call.
--- 19227,19233 ----
  
  @table @asis
  
! @item @code{next}
  
  Executes a single line. If this line is a subprogram call, executes and
  returns from the call.
*************** returns from the call.
*** 19120,19126 ****
  
  @table @asis
  
! @item @emph{list}
  
  Lists a few lines around the current source location. In practice, it
  is usually more convenient to have a separate edit window open with the
--- 19237,19243 ----
  
  @table @asis
  
! @item @code{list}
  
  Lists a few lines around the current source location. In practice, it
  is usually more convenient to have a separate edit window open with the
*************** line number, in which case it displays a
*** 19133,19139 ****
  
  @table @asis
  
! @item @emph{backtrace}
  
  Displays a backtrace of the call chain. This command is typically
  used after a breakpoint has occurred, to examine the sequence of calls that
--- 19250,19256 ----
  
  @table @asis
  
! @item @code{backtrace}
  
  Displays a backtrace of the call chain. This command is typically
  used after a breakpoint has occurred, to examine the sequence of calls that
*************** activation record (frame) corresponding
*** 19145,19154 ****
  
  @table @asis
  
! @item @emph{up}
  
! At a breakpoint, @cite{GDB} can display the values of variables local
! to the current frame. The command @cite{up} can be used to
  examine the contents of other active frames, by moving the focus up
  the stack, that is to say from callee to caller, one frame at a time.
  @end table
--- 19262,19271 ----
  
  @table @asis
  
! @item @code{up}
  
! At a breakpoint, @code{GDB} can display the values of variables local
! to the current frame. The command @code{up} can be used to
  examine the contents of other active frames, by moving the focus up
  the stack, that is to say from callee to caller, one frame at a time.
  @end table
*************** the stack, that is to say from callee to
*** 19157,19165 ****
  
  @table @asis
  
! @item @emph{down}
  
! Moves the focus of @cite{GDB} down from the frame currently being
  examined to the frame of its callee (the reverse of the previous command),
  @end table
  
--- 19274,19282 ----
  
  @table @asis
  
! @item @code{down}
  
! Moves the focus of @code{GDB} down from the frame currently being
  examined to the frame of its callee (the reverse of the previous command),
  @end table
  
*************** examined to the frame of its callee (the
*** 19167,19173 ****
  
  @table @asis
  
! @item @emph{frame `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.
--- 19284,19290 ----
  
  @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.
*************** of the current breakpoint, that is to sa
*** 19177,19183 ****
  
  @table @asis
  
! @item @emph{kill}
  
  Kills the child process in which the program is running under GDB.
  This may be useful for several purposes:
--- 19294,19300 ----
  
  @table @asis
  
! @item @code{kill}
  
  Kills the child process in which the program is running under GDB.
  This may be useful for several purposes:
*************** It allows you to debug a core dump rathe
*** 19201,19207 ****
  @end itemize
  
  The above list is a very short introduction to the commands that
! @cite{GDB} provides. Important additional capabilities, including conditional
  breakpoints, the ability to execute command sequences on a breakpoint,
  the ability to debug at the machine instruction level and many other
  features are described in detail in @cite{Debugging with GDB}.
--- 19318,19324 ----
  @end itemize
  
  The above list is a very short introduction to the commands that
! @code{GDB} provides. Important additional capabilities, including conditional
  breakpoints, the ability to execute command sequences on a breakpoint,
  the ability to debug at the machine instruction level and many other
  features are described in detail in @cite{Debugging with GDB}.
*************** Note that most commands can be abbreviat
*** 19215,19221 ****
  
  @geindex Ada expressions (in gdb)
  
! @cite{GDB} supports a fairly large subset of Ada expression syntax, with some
  extensions. The philosophy behind the design of this subset is
  
  @quotation
--- 19332,19338 ----
  
  @geindex Ada expressions (in gdb)
  
! @code{GDB} supports a fairly large subset of Ada expression syntax, with some
  extensions. The philosophy behind the design of this subset is
  
  @quotation
*************** extensions. The philosophy behind the de
*** 19224,19248 ****
  @itemize *
  
  @item 
! That @cite{GDB} should provide basic literals and access to operations for
  arithmetic, dereferencing, field selection, indexing, and subprogram calls,
  leaving more sophisticated computations to subprograms written into the
! program (which therefore may be called from @cite{GDB}).
  
  @item 
  That type safety and strict adherence to Ada language restrictions
  are not particularly relevant in a debugging context.
  
  @item 
! That brevity is important to the @cite{GDB} user.
  @end itemize
  @end quotation
  
  Thus, for brevity, the debugger acts as if there were
! implicit @cite{with} and @cite{use} clauses in effect for all user-written
  packages, thus making it unnecessary to fully qualify most names with
  their packages, regardless of context. Where this causes ambiguity,
! @cite{GDB} asks the user's intent.
  
  For details on the supported Ada syntax, see @cite{Debugging with GDB}.
  
--- 19341,19365 ----
  @itemize *
  
  @item 
! That @code{GDB} should provide basic literals and access to operations for
  arithmetic, dereferencing, field selection, indexing, and subprogram calls,
  leaving more sophisticated computations to subprograms written into the
! program (which therefore may be called from @code{GDB}).
  
  @item 
  That type safety and strict adherence to Ada language restrictions
  are not particularly relevant in a debugging context.
  
  @item 
! That brevity is important to the @code{GDB} user.
  @end itemize
  @end quotation
  
  Thus, for brevity, the debugger acts as if there were
! implicit @code{with} and @code{use} clauses in effect for all user-written
  packages, thus making it unnecessary to fully qualify most names with
  their packages, regardless of context. Where this causes ambiguity,
! @code{GDB} asks the user's intent.
  
  For details on the supported Ada syntax, see @cite{Debugging with GDB}.
  
*************** For details on the supported Ada syntax,
*** 19251,19257 ****
  @subsection Calling User-Defined Subprograms
  
  
! An important capability of @cite{GDB} is the ability to call user-defined
  subprograms while debugging. This is achieved simply by entering
  a subprogram call statement in the form:
  
--- 19368,19374 ----
  @subsection Calling User-Defined Subprograms
  
  
! An important capability of @code{GDB} is the ability to call user-defined
  subprograms while debugging. This is achieved simply by entering
  a subprogram call statement in the form:
  
*************** call subprogram-name (parameters)
*** 19262,19276 ****
  @end example
  @end quotation
  
! The keyword @cite{call} can be omitted in the normal case where the
! @cite{subprogram-name} does not coincide with any of the predefined
! @cite{GDB} commands.
  
  The effect is to invoke the given subprogram, passing it the
  list of parameters that is supplied. The parameters can be expressions and
  can include variables from the program being debugged. The
  subprogram must be defined
! at the library level within your program, and @cite{GDB} will call the
  subprogram within the environment of your program execution (which
  means that the subprogram is free to access or even modify variables
  within your program).
--- 19379,19393 ----
  @end example
  @end quotation
  
! The keyword @code{call} can be omitted in the normal case where the
! @code{subprogram-name} does not coincide with any of the predefined
! @code{GDB} commands.
  
  The effect is to invoke the given subprogram, passing it the
  list of parameters that is supplied. The parameters can be expressions and
  can include variables from the program being debugged. The
  subprogram must be defined
! at the library level within your program, and @code{GDB} will call the
  subprogram within the environment of your program execution (which
  means that the subprogram is free to access or even modify variables
  within your program).
*************** debugging routines that are tailored to
*** 19280,19286 ****
  in your program. Such debugging routines can be written to provide a suitably
  high-level description of an abstract type, rather than a low-level dump
  of its physical layout. After all, the standard
! @cite{GDB print} command only knows the physical layout of your
  types, not their abstract meaning. Debugging routines can provide information
  at the desired semantic level and are thus enormously useful.
  
--- 19397,19403 ----
  in your program. Such debugging routines can be written to provide a suitably
  high-level description of an abstract type, rather than a low-level dump
  of its physical layout. After all, the standard
! @code{GDB print} command only knows the physical layout of your
  types, not their abstract meaning. Debugging routines can provide information
  at the desired semantic level and are thus enormously useful.
  
*************** For example, when debugging GNAT itself,
*** 19288,19294 ****
  the contents of the tree nodes used to represent the program internally.
  But tree nodes are represented simply by an integer value (which in turn
  is an index into a table of nodes).
! Using the @cite{print} command on a tree node would simply print this integer
  value, which is not very useful. But the PN routine (defined in file
  treepr.adb in the GNAT sources) takes a tree node as input, and displays
  a useful high level representation of the tree node, which includes the
--- 19405,19411 ----
  the contents of the tree nodes used to represent the program internally.
  But tree nodes are represented simply by an integer value (which in turn
  is an index into a table of nodes).
! Using the @code{print} command on a tree node would simply print this integer
  value, which is not very useful. But the PN routine (defined in file
  treepr.adb in the GNAT sources) takes a tree node as input, and displays
  a useful high level representation of the tree node, which includes the
*************** the elements in the desired format.
*** 19310,19318 ****
  @subsection Using the @emph{next} Command in a Function
  
  
! When you use the @cite{next} command in a function, the current source
  location will advance to the next statement as usual. A special case
! arises in the case of a @cite{return} statement.
  
  Part of the code for a return statement is the 'epilogue' of the function.
  This is the code that returns to the caller. There is only one copy of
--- 19427,19435 ----
  @subsection Using the @emph{next} Command in a Function
  
  
! When you use the @code{next} command in a function, the current source
  location will advance to the next statement as usual. A special case
! arises in the case of a @code{return} statement.
  
  Part of the code for a return statement is the 'epilogue' of the function.
  This is the code that returns to the caller. There is only one copy of
*************** statement in the function if there is mo
*** 19321,19327 ****
  implementations, this epilogue is associated with the first statement
  of the function.
  
! The result is that if you use the @cite{next} command from a return
  statement that is not the last return statement of the function you
  may see a strange apparent jump to the last return statement or to
  the start of the function. You should simply ignore this odd jump.
--- 19438,19444 ----
  implementations, this epilogue is associated with the first statement
  of the function.
  
! The result is that if you use the @code{next} command from a return
  statement that is not the last return statement of the function you
  may see a strange apparent jump to the last return statement or to
  the start of the function. You should simply ignore this odd jump.
*************** raises selected exceptions.
*** 19345,19351 ****
  
  @table @asis
  
! @item @emph{catch exception}
  
  Set a catchpoint that stops execution whenever (any task in the) program
  raises any exception.
--- 19462,19468 ----
  
  @table @asis
  
! @item @code{catch exception}
  
  Set a catchpoint that stops execution whenever (any task in the) program
  raises any exception.
*************** raises any exception.
*** 19355,19371 ****
  
  @table @asis
  
! @item @emph{catch exception `name`}
  
  Set a catchpoint that stops execution whenever (any task in the) program
! raises the exception @cite{name}.
  @end table
  
  @item 
  
  @table @asis
  
! @item @emph{catch exception unhandled}
  
  Set a catchpoint that stops executing whenever (any task in the) program
  raises an exception for which there is no handler.
--- 19472,19488 ----
  
  @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 
  
  @table @asis
  
! @item @code{catch exception unhandled}
  
  Set a catchpoint that stops executing whenever (any task in the) program
  raises an exception for which there is no handler.
*************** raises an exception for which there is n
*** 19375,19385 ****
  
  @table @asis
  
! @item @emph{info exceptions}, @emph{info exceptions `regexp`}
  
! The @cite{info exceptions} command permits the user to examine all defined
! exceptions within Ada programs. With a regular expression, @cite{regexp}, as
! argument, prints out only those exceptions whose name matches @cite{regexp}.
  @end table
  @end itemize
  
--- 19492,19502 ----
  
  @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
  
*************** argument, prints out only those exceptio
*** 19390,19396 ****
  @subsection Ada Tasks
  
  
! @cite{GDB} allows the following task-related commands:
  
  
  @itemize *
--- 19507,19513 ----
  @subsection Ada Tasks
  
  
! @code{GDB} allows the following task-related commands:
  
  
  @itemize *
*************** argument, prints out only those exceptio
*** 19399,19405 ****
  
  @table @asis
  
! @item @emph{info tasks}
  
  This command shows a list of current Ada tasks, as in the following example:
  
--- 19516,19522 ----
  
  @table @asis
  
! @item @code{info tasks}
  
  This command shows a list of current Ada tasks, as in the following example:
  
*************** to refer to tasks in the following comma
*** 19424,19449 ****
  @itemize *
  
  @item 
! @emph{break `linespec` task `taskid`}, @emph{break `linespec` task `taskid` if ...}
  
  @quotation
  
! These commands are like the @cite{break ... thread ...}.
! @cite{linespec} specifies source lines.
  
  Use the qualifier @code{task @emph{taskid}} with a breakpoint command
! to specify that you only want @cite{GDB} to stop the program when a
! particular Ada task reaches this breakpoint. @cite{taskid} is one of the
! numeric task identifiers assigned by @cite{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 @cite{task} qualifier on conditional breakpoints as
  well; in this case, place @code{task @emph{taskid}} before the
! breakpoint condition (before the @cite{if}).
  @end quotation
  @end itemize
  
--- 19541,19566 ----
  @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
  
*************** breakpoint condition (before the @cite{i
*** 19453,19463 ****
  @itemize *
  
  @item 
! @emph{task `taskno`}
  
  @quotation
  
! This command allows switching to the task referred by @cite{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
--- 19570,19580 ----
  @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
*************** each time an instantiation occurs, a com
*** 19482,19488 ****
  made, with appropriate substitutions of formals by actuals.
  
  It is not possible to refer to the original generic entities in
! @cite{GDB}, but it is always possible to debug a particular instance of
  a generic, by using the appropriate expanded names. For example, if we have
  
  @quotation
--- 19599,19605 ----
  made, with appropriate substitutions of formals by actuals.
  
  It is not possible to refer to the original generic entities in
! @code{GDB}, but it is always possible to debug a particular instance of
  a generic, by using the appropriate expanded names. For example, if we have
  
  @quotation
*************** familiarity with compiler internals.
*** 19612,19629 ****
  @itemize *
  
  @item 
! Run @emph{gcc} with the @emph{-gnatf}. This first
  switch causes all errors on a given line to be reported. In its absence,
  only the first error on a line is displayed.
  
! The @emph{-gnatdO} switch causes errors to be displayed as soon as they
  are encountered, rather than after compilation is terminated. If GNAT
  terminates prematurely or goes into an infinite loop, the last error
  message displayed may help to pinpoint the culprit.
  
  @item 
! Run @emph{gcc} with the @emph{-v (verbose)} switch. In this
! mode, @emph{gcc} produces ongoing information about the progress of the
  compilation and provides the name of each procedure as code is
  generated. This switch allows you to find which Ada procedure was being
  compiled when it encountered a code generation problem.
--- 19729,19746 ----
  @itemize *
  
  @item 
! Run @code{gcc} with the @code{-gnatf}. This first
  switch causes all errors on a given line to be reported. In its absence,
  only the first error on a line is displayed.
  
! The @code{-gnatdO} switch causes errors to be displayed as soon as they
  are encountered, rather than after compilation is terminated. If GNAT
  terminates prematurely or goes into an infinite loop, the last error
  message displayed may help to pinpoint the culprit.
  
  @item 
! Run @code{gcc} with the @code{-v} (verbose) switch. In this
! mode, @code{gcc} produces ongoing information about the progress of the
  compilation and provides the name of each procedure as code is
  generated. This switch allows you to find which Ada procedure was being
  compiled when it encountered a code generation problem.
*************** compiled when it encountered a code gene
*** 19635,19655 ****
  @itemize *
  
  @item 
! Run @emph{gcc} with the @emph{-gnatdc} switch. This is a GNAT specific
! switch that does for the front-end what @emph{-v} does
  for the back end. The system prints the name of each unit,
  either a compilation unit or nested unit, as it is being analyzed.
  
  @item 
  Finally, you can start
! @cite{gdb} directly on the @cite{gnat1} executable. @cite{gnat1} is the
  front-end of GNAT, and can be run independently (normally it is just
! called from @emph{gcc}). You can use @cite{gdb} on @cite{gnat1} as you
  would on a C program (but @ref{16e,,The GNAT Debugger GDB} for caveats). The
! @cite{where} command is the first line of attack; the variable
! @cite{lineno} (seen by @cite{print lineno}), used by the second phase of
! @cite{gnat1} and by the @emph{gcc} backend, indicates the source line at
! which the execution stopped, and @cite{input_file name} indicates the name of
  the source file.
  @end itemize
  
--- 19752,19772 ----
  @itemize *
  
  @item 
! Run @code{gcc} with the @code{-gnatdc} switch. This is a GNAT specific
! switch that does for the front-end what @code{-v} does
  for the back end. The system prints the name of each unit,
  either a compilation unit or nested unit, as it is being analyzed.
  
  @item 
  Finally, you can start
! @code{gdb} directly on the @code{gnat1} executable. @code{gnat1} is the
  front-end of GNAT, and can be run independently (normally it is just
! called from @code{gcc}). You can use @code{gdb} on @code{gnat1} as you
  would on a C program (but @ref{16e,,The GNAT Debugger GDB} for caveats). The
! @code{where} command is the first line of attack; the variable
! @code{lineno} (seen by @code{print lineno}), used by the second phase of
! @code{gnat1} and by the @code{gcc} backend, indicates the source line at
! which the execution stopped, and @code{input_file name} indicates the name of
  the source file.
  @end itemize
  
*************** Library management issues are dealt with
*** 19711,19737 ****
  @geindex Annex A (in Ada Reference Manual)
  
  @item 
! Ada files with the prefix @code{a-} are children of @cite{Ada}, as
  defined in Annex A.
  
  @geindex Annex B (in Ada reference Manual)
  
  @item 
! Files with prefix @code{i-} are children of @cite{Interfaces}, as
  defined in Annex B.
  
  @geindex System (package in Ada Reference Manual)
  
  @item 
! Files with prefix @code{s-} are children of @cite{System}. This includes
  both language-defined children and GNAT run-time routines.
  
  @geindex GNAT (package)
  
  @item 
! Files with prefix @code{g-} are children of @cite{GNAT}. These are useful
  general-purpose packages, fully documented in their specs. All
! the other @code{.c} files are modifications of common @emph{gcc} files.
  @end itemize
  
  @node Getting Internal Debugging Information,Stack Traceback,Naming Conventions for GNAT Source Files,Running and Debugging Ada Programs
--- 19828,19854 ----
  @geindex Annex A (in Ada Reference Manual)
  
  @item 
! Ada files with the prefix @code{a-} are children of @code{Ada}, as
  defined in Annex A.
  
  @geindex Annex B (in Ada reference Manual)
  
  @item 
! Files with prefix @code{i-} are children of @code{Interfaces}, as
  defined in Annex B.
  
  @geindex System (package in Ada Reference Manual)
  
  @item 
! Files with prefix @code{s-} are children of @code{System}. This includes
  both language-defined children and GNAT run-time routines.
  
  @geindex GNAT (package)
  
  @item 
! Files with prefix @code{g-} are children of @code{GNAT}. These are useful
  general-purpose packages, fully documented in their specs. All
! the other @code{.c} files are modifications of common @code{gcc} files.
  @end itemize
  
  @node Getting Internal Debugging Information,Stack Traceback,Naming Conventions for GNAT Source Files,Running and Debugging Ada Programs
*************** are replaced with run-time calls.
*** 19762,19768 ****
  
  @geindex stack unwinding
  
! @node Stack Traceback,,Getting Internal Debugging Information,Running and Debugging Ada Programs
  @anchor{gnat_ugn/gnat_and_program_execution stack-traceback}@anchor{188}@anchor{gnat_ugn/gnat_and_program_execution id16}@anchor{189}
  @subsection Stack Traceback
  
--- 19879,19885 ----
  
  @geindex stack unwinding
  
! @node Stack Traceback,Pretty-Printers for the GNAT runtime,Getting Internal Debugging Information,Running and Debugging Ada Programs
  @anchor{gnat_ugn/gnat_and_program_execution stack-traceback}@anchor{188}@anchor{gnat_ugn/gnat_and_program_execution id16}@anchor{189}
  @subsection Stack Traceback
  
*************** for a complete list of supported platfor
*** 19804,19813 ****
  
  
  A runtime non-symbolic traceback is a list of addresses of call instructions.
! To enable this feature you must use the @emph{-E}
! @cite{gnatbind}'s option. With this option a stack traceback is stored as part
  of exception information. You can retrieve this information using the
! @cite{addr2line} tool.
  
  Here is a simple example:
  
--- 19921,19930 ----
  
  
  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:
  
*************** Call stack traceback locations:
*** 19844,19853 ****
  @end quotation
  
  As we see the traceback lists a sequence of addresses for the unhandled
! exception @cite{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
! @cite{addr2line} tool, described below, is invaluable. The use of this tool
  requires the program to be compiled with debug information.
  
  @quotation
--- 19961,19970 ----
  @end quotation
  
  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
*************** $ addr2line --exe=stb 0x401373 0x40138b
*** 19875,19881 ****
  @end example
  @end quotation
  
! The @cite{addr2line} tool has several other useful options:
  
  @quotation
  
--- 19992,19998 ----
  @end example
  @end quotation
  
! The @code{addr2line} tool has several other useful options:
  
  @quotation
  
*************** which contains the call to the main prog
*** 19922,19928 ****
  @ref{11c,,Running gnatbind}. The remaining entries are assorted runtime routines,
  and the output will vary from platform to platform.
  
! It is also possible to use @cite{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:
  
--- 20039,20045 ----
  @ref{11c,,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:
  
*************** of calls with the same program compiled
*** 19954,19963 ****
  @subsubheading Tracebacks From Exception Occurrences
  
  
! Non-symbolic tracebacks are obtained by using the @emph{-E} binder argument.
  The stack traceback is attached to the exception information string, and can
  be retrieved in an exception handler within the Ada program, by means of the
! Ada facilities defined in @cite{Ada.Exceptions}. Here is a simple example:
  
  @quotation
  
--- 20071,20080 ----
  @subsubheading Tracebacks From Exception Occurrences
  
  
! Non-symbolic tracebacks are obtained by using the @code{-E} binder argument.
  The stack traceback is attached to the exception information string, and can
  be retrieved in an exception handler within the Ada program, by means of the
! Ada facilities defined in @code{Ada.Exceptions}. Here is a simple example:
  
  @quotation
  
*************** Call stack traceback locations:
*** 20009,20022 ****
  
  It is also possible to retrieve a stack traceback from anywhere in a
  program. For this you need to
! use the @cite{GNAT.Traceback} API. This package includes a procedure called
! @cite{Call_Chain} that computes a complete stack traceback, as well as useful
  display procedures described below. It is not necessary to use the
! @emph{-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 @cite{GNAT.Debug_Utilities.Image} to
  convert addresses to strings:
  
  @quotation
--- 20126,20139 ----
  
  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
*************** In STB.P1 : 16#0040_F1E4# 16#0040_14F2#
*** 20069,20075 ****
  @end example
  @end quotation
  
! You can then get further information by invoking the @cite{addr2line}
  tool as described earlier (note that the hexadecimal addresses
  need to be specified in C format, with a leading '0x').
  
--- 20186,20192 ----
  @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').
  
*************** $ stb
*** 20143,20155 ****
  @end example
  @end quotation
  
! In the above example the @code{.\} syntax in the @emph{gnatmake} command
! is currently required by @emph{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 @emph{-largs} section is for Windows platforms. By contrast,
! under Unix there is no need for the @emph{-largs} section.
  Differences across platforms are due to details of linker implementation.
  
  @subsubheading Tracebacks From Anywhere in a Program
--- 20260,20272 ----
  @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
*************** Differences across platforms are due to
*** 20158,20164 ****
  It is possible to get a symbolic stack traceback
  from anywhere in a program, just as for non-symbolic tracebacks.
  The first step is to obtain a non-symbolic
! traceback, and then call @cite{Symbolic_Traceback} to compute the symbolic
  information. Here is an example:
  
  @quotation
--- 20275,20281 ----
  It is possible to get a symbolic stack traceback
  from anywhere in a program, just as for non-symbolic tracebacks.
  The first step is to obtain a non-symbolic
! traceback, and then call @code{Symbolic_Traceback} to compute the symbolic
  information. Here is an example:
  
  @quotation
*************** end STB;
*** 20199,20220 ****
  
  
  Symbolic tracebacks may also be enabled by using the -Es switch to gnatbind (as
! in @cite{gprbuild -g ... -bargs -Es}).
  This will cause the Exception_Information to contain a symbolic traceback,
  which will also be printed if an unhandled exception terminates the
  program.
  
  @geindex Code Coverage
  
  @geindex Profiling
  
  @node Code Coverage and Profiling,Improving Performance,Running and Debugging Ada Programs,GNAT and Program Execution
! @anchor{gnat_ugn/gnat_and_program_execution id19}@anchor{168}@anchor{gnat_ugn/gnat_and_program_execution code-coverage-and-profiling}@anchor{25}
  @section Code Coverage and Profiling
  
  
! This section describes how to use the @cite{gcov} coverage testing tool and
! the @cite{gprof} profiler tool on Ada programs.
  
  @geindex gcov
  
--- 20316,20442 ----
  
  
  Symbolic tracebacks may also be enabled by using the -Es switch to gnatbind (as
! in @code{gprbuild -g ... -bargs -Es}).
  This will cause the Exception_Information to contain a symbolic traceback,
  which will also be printed if an unhandled exception terminates the
  program.
  
+ @node Pretty-Printers for the GNAT runtime,,Stack Traceback,Running and Debugging Ada Programs
+ @anchor{gnat_ugn/gnat_and_program_execution id19}@anchor{18e}@anchor{gnat_ugn/gnat_and_program_execution pretty-printers-for-the-gnat-runtime}@anchor{18f}
+ @subsection Pretty-Printers for the GNAT runtime
+ 
+ 
+ As discussed in @cite{Calling User-Defined Subprograms}, GDB's
+ @code{print} command only knows about the physical layout of program data
+ structures and therefore normally displays only low-level dumps, which
+ are often hard to understand.
+ 
+ An example of this is when trying to display the contents of an Ada
+ standard container, such as @code{Ada.Containers.Ordered_Maps.Map}:
+ 
+ @quotation
+ 
+ @example
+ with Ada.Containers.Ordered_Maps;
+ 
+ procedure PP is
+    package Int_To_Nat is
+       new Ada.Containers.Ordered_Maps (Integer, Natural);
+ 
+    Map : Int_To_Nat.Map;
+ begin
+    Map.Insert (1, 10);
+    Map.Insert (2, 20);
+    Map.Insert (3, 30);
+ 
+    Map.Clear; --  BREAK HERE
+ end PP;
+ @end example
+ @end quotation
+ 
+ When this program is built with debugging information and run under
+ GDB up to the @code{Map.Clear} statement, trying to print @code{Map} will
+ yield information that is only relevant to the developers of our standard
+ containers:
+ 
+ @quotation
+ 
+ @example
+ (gdb) print map
+ $1 = (
+   tree => (
+     first => 0x64e010,
+     last => 0x64e070,
+     root => 0x64e040,
+     length => 3,
+     tc => (
+       busy => 0,
+       lock => 0
+     )
+   )
+ )
+ @end example
+ @end quotation
+ 
+ Fortunately, GDB has a feature called pretty-printers@footnote{http://docs.adacore.com/gdb-docs/html/gdb.html#Pretty_002dPrinter-Introduction},
+ which allows customizing how GDB displays data structures. The GDB
+ shipped with GNAT embeds such pretty-printers for the most common
+ containers in the standard library.  To enable them, either run the
+ following command manually under GDB or add it to your @code{.gdbinit} file:
+ 
+ @quotation
+ 
+ @example
+ python import gnatdbg; gnatdbg.setup()
+ @end example
+ @end quotation
+ 
+ Once this is done, GDB's @code{print} command will automatically use
+ these pretty-printers when appropriate. Using the previous example:
+ 
+ @quotation
+ 
+ @example
+ (gdb) print map
+ $1 = pp.int_to_nat.map of length 3 = @{
+   [1] = 10,
+   [2] = 20,
+   [3] = 30
+ @}
+ @end example
+ @end quotation
+ 
+ Pretty-printers are invoked each time GDB tries to display a value,
+ including when displaying the arguments of a called subprogram (in
+ GDB's @code{backtrace} command) or when printing the value returned by a
+ function (in GDB's @code{finish} command).
+ 
+ To display a value without involving pretty-printers, @code{print} can be
+ invoked with its @code{/r} option:
+ 
+ @quotation
+ 
+ @example
+ (gdb) print/r map
+ $1 = (
+   tree => (...
+ @end example
+ @end quotation
+ 
+ Finer control of pretty-printers is also possible: see GDB's online documentation@footnote{http://docs.adacore.com/gdb-docs/html/gdb.html#Pretty_002dPrinter-Commands}
+ for more information.
+ 
  @geindex Code Coverage
  
  @geindex Profiling
  
  @node Code Coverage and Profiling,Improving Performance,Running and Debugging Ada Programs,GNAT and Program Execution
! @anchor{gnat_ugn/gnat_and_program_execution id20}@anchor{168}@anchor{gnat_ugn/gnat_and_program_execution code-coverage-and-profiling}@anchor{25}
  @section Code Coverage and Profiling
  
  
! This section describes how to use the @code{gcov} coverage testing tool and
! the @code{gprof} profiler tool on Ada programs.
  
  @geindex gcov
  
*************** the @cite{gprof} profiler tool on Ada pr
*** 20225,20239 ****
  @end menu
  
  @node Code Coverage of Ada Programs with gcov,Profiling an Ada Program with gprof,,Code Coverage and Profiling
! @anchor{gnat_ugn/gnat_and_program_execution id20}@anchor{18e}@anchor{gnat_ugn/gnat_and_program_execution code-coverage-of-ada-programs-with-gcov}@anchor{18f}
  @subsection Code Coverage of Ada Programs with gcov
  
  
! @cite{gcov} is a test coverage program: it analyzes the execution of a given
  program on selected tests, to help you determine the portions of the program
  that are still untested.
  
! @cite{gcov} is part of the GCC suite, and is described in detail in the GCC
  User's Guide. You can refer to this documentation for a more complete
  description.
  
--- 20447,20461 ----
  @end menu
  
  @node Code Coverage of Ada Programs with gcov,Profiling an Ada Program with gprof,,Code Coverage and Profiling
! @anchor{gnat_ugn/gnat_and_program_execution id21}@anchor{190}@anchor{gnat_ugn/gnat_and_program_execution code-coverage-of-ada-programs-with-gcov}@anchor{191}
  @subsection Code Coverage of Ada Programs with gcov
  
  
! @code{gcov} is a test coverage program: it analyzes the execution of a given
  program on selected tests, to help you determine the portions of the program
  that are still untested.
  
! @code{gcov} is part of the GCC suite, and is described in detail in the GCC
  User's Guide. You can refer to this documentation for a more complete
  description.
  
*************** details some GNAT-specific features.
*** 20247,20257 ****
  @end menu
  
  @node Quick startup guide,GNAT specifics,,Code Coverage of Ada Programs with gcov
! @anchor{gnat_ugn/gnat_and_program_execution id21}@anchor{190}@anchor{gnat_ugn/gnat_and_program_execution quick-startup-guide}@anchor{191}
  @subsubsection Quick startup guide
  
  
! In order to perform coverage analysis of a program using @cite{gcov}, several
  steps are needed:
  
  
--- 20469,20479 ----
  @end menu
  
  @node Quick startup guide,GNAT specifics,,Code Coverage of Ada Programs with gcov
! @anchor{gnat_ugn/gnat_and_program_execution id22}@anchor{192}@anchor{gnat_ugn/gnat_and_program_execution quick-startup-guide}@anchor{193}
  @subsubsection Quick startup guide
  
  
! In order to perform coverage analysis of a program using @code{gcov}, several
  steps are needed:
  
  
*************** Instrument the code during the compilati
*** 20264,20270 ****
  Execute the instrumented program, and
  
  @item 
! Invoke the @cite{gcov} tool to generate the coverage results.
  @end enumerate
  
  @geindex -fprofile-arcs (gcc)
--- 20486,20492 ----
  Execute the instrumented program, and
  
  @item 
! Invoke the @code{gcov} tool to generate the coverage results.
  @end enumerate
  
  @geindex -fprofile-arcs (gcc)
*************** The source code is not modified in any w
*** 20278,20285 ****
  inserted by gcc during the compilation process. To compile your code with code
  coverage activated, you need to recompile your whole project using the
  switches
! @cite{-fprofile-arcs} and @cite{-ftest-coverage}, and link it using
! @cite{-fprofile-arcs}.
  
  @quotation
  
--- 20500,20507 ----
  inserted by gcc during the compilation process. To compile your code with code
  coverage activated, you need to recompile your whole project using the
  switches
! @code{-fprofile-arcs} and @code{-ftest-coverage}, and link it using
! @code{-fprofile-arcs}.
  
  @quotation
  
*************** same location as the @code{.gcno} files.
*** 20299,20312 ****
  will update those files, so that a cumulative result of the covered
  portions of the program is generated.
  
! Finally, you need to call the @cite{gcov} tool. The different options of
! @cite{gcov} are described in the GCC User's Guide, section 'Invoking gcov'.
  
  This will create annotated source files with a @code{.gcov} extension:
  @code{my_main.adb} file will be analyzed in @code{my_main.adb.gcov}.
  
  @node GNAT specifics,,Quick startup guide,Code Coverage of Ada Programs with gcov
! @anchor{gnat_ugn/gnat_and_program_execution gnat-specifics}@anchor{192}@anchor{gnat_ugn/gnat_and_program_execution id22}@anchor{193}
  @subsubsection GNAT specifics
  
  
--- 20521,20534 ----
  will update those files, so that a cumulative result of the covered
  portions of the program is generated.
  
! Finally, you need to call the @code{gcov} tool. The different options of
! @code{gcov} are described in the GCC User's Guide, section @emph{Invoking gcov}.
  
  This will create annotated source files with a @code{.gcov} extension:
  @code{my_main.adb} file will be analyzed in @code{my_main.adb.gcov}.
  
  @node GNAT specifics,,Quick startup guide,Code Coverage of Ada Programs with gcov
! @anchor{gnat_ugn/gnat_and_program_execution gnat-specifics}@anchor{194}@anchor{gnat_ugn/gnat_and_program_execution id23}@anchor{195}
  @subsubsection GNAT specifics
  
  
*************** Because of Ada semantics, portions of th
*** 20314,20329 ****
  several object files. This is the case for example when generics are
  involved, when inlining is active  or when declarations generate  initialisation
  calls. In order to take
! into account this shared code, you need to call @cite{gcov} on all
  source files of the tested program at once.
  
  The list of source files might exceed the system's maximum command line
  length. In order to bypass this limitation, a new mechanism has been
! implemented in @cite{gcov}: you can now list all your project's files into a
  text file, and provide this file to gcov as a parameter,  preceded by a @code{@@}
  (e.g. @code{gcov @@mysrclist.txt}).
  
! Note that on AIX compiling a static library with @cite{-fprofile-arcs} is
  not supported as there can be unresolved symbols during the final link.
  
  @geindex gprof
--- 20536,20551 ----
  several object files. This is the case for example when generics are
  involved, when inlining is active  or when declarations generate  initialisation
  calls. In order to take
! into account this shared code, you need to call @code{gcov} on all
  source files of the tested program at once.
  
  The list of source files might exceed the system's maximum command line
  length. In order to bypass this limitation, a new mechanism has been
! implemented in @code{gcov}: you can now list all your project's files into a
  text file, and provide this file to gcov as a parameter,  preceded by a @code{@@}
  (e.g. @code{gcov @@mysrclist.txt}).
  
! Note that on AIX compiling a static library with @code{-fprofile-arcs} is
  not supported as there can be unresolved symbols during the final link.
  
  @geindex gprof
*************** not supported as there can be unresolved
*** 20331,20348 ****
  @geindex Profiling
  
  @node Profiling an Ada Program with gprof,,Code Coverage of Ada Programs with gcov,Code Coverage and Profiling
! @anchor{gnat_ugn/gnat_and_program_execution profiling-an-ada-program-with-gprof}@anchor{194}@anchor{gnat_ugn/gnat_and_program_execution id23}@anchor{195}
  @subsection Profiling an Ada Program with gprof
  
  
! This section is not meant to be an exhaustive documentation of @cite{gprof}.
  Full documentation for it can be found in the @cite{GNU Profiler User's Guide}
  documentation that is part of this GNAT distribution.
  
  Profiling a program helps determine the parts of a program that are executed
  most often, and are therefore the most time-consuming.
  
! @cite{gprof} is the standard GNU profiling tool; it has been enhanced to
  better handle Ada programs and multitasking.
  It is currently supported on the following platforms
  
--- 20553,20570 ----
  @geindex Profiling
  
  @node Profiling an Ada Program with gprof,,Code Coverage of Ada Programs with gcov,Code Coverage and Profiling
! @anchor{gnat_ugn/gnat_and_program_execution profiling-an-ada-program-with-gprof}@anchor{196}@anchor{gnat_ugn/gnat_and_program_execution id24}@anchor{197}
  @subsection Profiling an Ada Program with gprof
  
  
! This section is not meant to be an exhaustive documentation of @code{gprof}.
  Full documentation for it can be found in the @cite{GNU Profiler User's Guide}
  documentation that is part of this GNAT distribution.
  
  Profiling a program helps determine the parts of a program that are executed
  most often, and are therefore the most time-consuming.
  
! @code{gprof} is the standard GNU profiling tool; it has been enhanced to
  better handle Ada programs and multitasking.
  It is currently supported on the following platforms
  
*************** solaris sparc/sparc64/x86
*** 20359,20365 ****
  windows x86
  @end itemize
  
! In order to profile a program using @cite{gprof}, several steps are needed:
  
  
  @enumerate 
--- 20581,20587 ----
  windows x86
  @end itemize
  
! In order to profile a program using @code{gprof}, several steps are needed:
  
  
  @enumerate 
*************** Execute the program under the analysis c
*** 20373,20379 ****
  input.
  
  @item 
! Analyze the results using the @cite{gprof} tool.
  @end enumerate
  
  The following sections detail the different steps, and indicate how
--- 20595,20601 ----
  input.
  
  @item 
! Analyze the results using the @code{gprof} tool.
  @end enumerate
  
  The following sections detail the different steps, and indicate how
*************** to interpret the results.
*** 20388,20394 ****
  @end menu
  
  @node Compilation for profiling,Program execution,,Profiling an Ada Program with gprof
! @anchor{gnat_ugn/gnat_and_program_execution id24}@anchor{196}@anchor{gnat_ugn/gnat_and_program_execution compilation-for-profiling}@anchor{197}
  @subsubsection Compilation for profiling
  
  
--- 20610,20616 ----
  @end menu
  
  @node Compilation for profiling,Program execution,,Profiling an Ada Program with gprof
! @anchor{gnat_ugn/gnat_and_program_execution id25}@anchor{198}@anchor{gnat_ugn/gnat_and_program_execution compilation-for-profiling}@anchor{199}
  @subsubsection Compilation for profiling
  
  
*************** be profiled; if you need to profile your
*** 20416,20422 ****
  gnatmake switch to force full recompilation.
  
  @node Program execution,Running gprof,Compilation for profiling,Profiling an Ada Program with gprof
! @anchor{gnat_ugn/gnat_and_program_execution program-execution}@anchor{198}@anchor{gnat_ugn/gnat_and_program_execution id25}@anchor{199}
  @subsubsection Program execution
  
  
--- 20638,20644 ----
  gnatmake switch to force full recompilation.
  
  @node Program execution,Running gprof,Compilation for profiling,Profiling an Ada Program with gprof
! @anchor{gnat_ugn/gnat_and_program_execution program-execution}@anchor{19a}@anchor{gnat_ugn/gnat_and_program_execution id26}@anchor{19b}
  @subsubsection Program execution
  
  
*************** generated in the directory where the pro
*** 20431,20441 ****
  already exists, it will be overwritten.
  
  @node Running gprof,Interpretation of profiling results,Program execution,Profiling an Ada Program with gprof
! @anchor{gnat_ugn/gnat_and_program_execution running-gprof}@anchor{19a}@anchor{gnat_ugn/gnat_and_program_execution id26}@anchor{19b}
  @subsubsection Running gprof
  
  
! The @cite{gprof} tool is called as follow:
  
  @quotation
  
--- 20653,20663 ----
  already exists, it will be overwritten.
  
  @node Running gprof,Interpretation of profiling results,Program execution,Profiling an Ada Program with gprof
! @anchor{gnat_ugn/gnat_and_program_execution running-gprof}@anchor{19c}@anchor{gnat_ugn/gnat_and_program_execution id27}@anchor{19d}
  @subsubsection Running gprof
  
  
! The @code{gprof} tool is called as follow:
  
  @quotation
  
*************** $ gprof [switches] [executable [data-fil
*** 20462,20468 ****
  @end example
  @end quotation
  
! @cite{gprof} supports numerous switches. The order of these
  switch does not matter. The full list of options can be found in
  the GNU Profiler User's Guide documentation that comes with this documentation.
  
--- 20684,20690 ----
  @end example
  @end quotation
  
! @code{gprof} supports numerous switches. The order of these
  switch does not matter. The full list of options can be found in
  the GNU Profiler User's Guide documentation that comes with this documentation.
  
*************** compiler, in particular Ada symbols gene
*** 20491,20502 ****
  
  @item @code{-e @emph{function_name}}
  
! The @code{-e @emph{function}} option tells @cite{gprof} not to print
! information about the function @cite{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
  shown as @code{[not printed]}.  More than one @code{-e} option may be
! given; only one @cite{function_name} may be indicated with each @code{-e}
  option.
  @end table
  
--- 20713,20724 ----
  
  @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
  shown as @code{[not printed]}.  More than one @code{-e} option may be
! given; only one @code{function_name} may be indicated with each @code{-e}
  option.
  @end table
  
*************** The @code{-E @emph{function}} option wor
*** 20511,20517 ****
  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
! @cite{function_name} may be indicated with each @code{-E} option.
  @end table
  
  @geindex -f (gprof)
--- 20733,20739 ----
  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
! @code{function_name} may be indicated with each @code{-E`} option.
  @end table
  
  @geindex -f (gprof)
*************** the call graph.  More than one @code{-E}
*** 20521,20530 ****
  
  @item @code{-f @emph{function_name}}
  
! The @code{-f @emph{function}} option causes @cite{gprof} to limit the
! call graph to the function @cite{function_name} and its children (and
  their children...).  More than one @code{-f} option may be given;
! only one @cite{function_name} may be indicated with each @code{-f}
  option.
  @end table
  
--- 20743,20752 ----
  
  @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}
  option.
  @end table
  
*************** The @code{-F @emph{function}} option wor
*** 20539,20550 ****
  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
! may be given; only one @cite{function_name} may be indicated with each
  @code{-F} option.  The @code{-F} option overrides the @code{-E} option.
  @end table
  
  @node Interpretation of profiling results,,Running gprof,Profiling an Ada Program with gprof
! @anchor{gnat_ugn/gnat_and_program_execution id27}@anchor{19c}@anchor{gnat_ugn/gnat_and_program_execution interpretation-of-profiling-results}@anchor{19d}
  @subsubsection Interpretation of profiling results
  
  
--- 20761,20772 ----
  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
! may be given; only one @code{function_name} may be indicated with each
  @code{-F} option.  The @code{-F} option overrides the @code{-E} option.
  @end table
  
  @node Interpretation of profiling results,,Running gprof,Profiling an Ada Program with gprof
! @anchor{gnat_ugn/gnat_and_program_execution id28}@anchor{19e}@anchor{gnat_ugn/gnat_and_program_execution interpretation-of-profiling-results}@anchor{19f}
  @subsubsection Interpretation of profiling results
  
  
*************** and the subprograms that it calls. It al
*** 20561,20567 ****
  spent in each of those callers/called subprograms.
  
  @node Improving Performance,Overflow Check Handling in GNAT,Code Coverage and Profiling,GNAT and Program Execution
! @anchor{gnat_ugn/gnat_and_program_execution improving-performance}@anchor{26}@anchor{gnat_ugn/gnat_and_program_execution id28}@anchor{169}
  @section Improving Performance
  
  
--- 20783,20789 ----
  spent in each of those callers/called subprograms.
  
  @node Improving Performance,Overflow Check Handling in GNAT,Code Coverage and Profiling,GNAT and Program Execution
! @anchor{gnat_ugn/gnat_and_program_execution id29}@anchor{169}@anchor{gnat_ugn/gnat_and_program_execution improving-performance}@anchor{26}
  @section Improving Performance
  
  
*************** which can reduce the size of program exe
*** 20583,20589 ****
  @end menu
  
  @node Performance Considerations,Text_IO Suggestions,,Improving Performance
! @anchor{gnat_ugn/gnat_and_program_execution id29}@anchor{19e}@anchor{gnat_ugn/gnat_and_program_execution performance-considerations}@anchor{19f}
  @subsection Performance Considerations
  
  
--- 20805,20811 ----
  @end menu
  
  @node Performance Considerations,Text_IO Suggestions,,Improving Performance
! @anchor{gnat_ugn/gnat_and_program_execution performance-considerations}@anchor{1a0}@anchor{gnat_ugn/gnat_and_program_execution id30}@anchor{1a1}
  @subsection Performance Considerations
  
  
*************** some guidelines on debugging optimized c
*** 20644,20650 ****
  @end menu
  
  @node Controlling Run-Time Checks,Use of Restrictions,,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution controlling-run-time-checks}@anchor{1a0}@anchor{gnat_ugn/gnat_and_program_execution id30}@anchor{1a1}
  @subsubsection Controlling Run-Time Checks
  
  
--- 20866,20872 ----
  @end menu
  
  @node Controlling Run-Time Checks,Use of Restrictions,,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution controlling-run-time-checks}@anchor{1a2}@anchor{gnat_ugn/gnat_and_program_execution id31}@anchor{1a3}
  @subsubsection Controlling Run-Time Checks
  
  
*************** necessary checking is done at compile ti
*** 20657,20663 ****
  
  @geindex -gnato (gcc)
  
! The gnat switch, @emph{-gnatp} allows this default to be modified. See
  @ref{f9,,Run-Time Checks}.
  
  Our experience is that the default is suitable for most development
--- 20879,20885 ----
  
  @geindex -gnato (gcc)
  
! The gnat switch, @code{-gnatp} allows this default to be modified. See
  @ref{f9,,Run-Time Checks}.
  
  Our experience is that the default is suitable for most development
*************** you should read this chapter.
*** 20671,20681 ****
  
  For validity checks, the minimal checks required by the Ada Reference
  Manual (for case statements and assignments to array elements) are on
! by default. These can be suppressed by use of the @emph{-gnatVn} switch.
  Note that in Ada 83, there were no validity checks, so if the Ada 83 mode
  is acceptable (or when comparing GNAT performance with an Ada 83 compiler),
! it may be reasonable to routinely use @emph{-gnatVn}. Validity checks
! are also suppressed entirely if @emph{-gnatp} is used.
  
  @geindex Overflow checks
  
--- 20893,20903 ----
  
  For validity checks, the minimal checks required by the Ada Reference
  Manual (for case statements and assignments to array elements) are on
! by default. These can be suppressed by use of the @code{-gnatVn} switch.
  Note that in Ada 83, there were no validity checks, so if the Ada 83 mode
  is acceptable (or when comparing GNAT performance with an Ada 83 compiler),
! it may be reasonable to routinely use @code{-gnatVn}. Validity checks
! are also suppressed entirely if @code{-gnatp} is used.
  
  @geindex Overflow checks
  
*************** are also suppressed entirely if @emph{-g
*** 20691,20702 ****
  @geindex pragma Unsuppress
  
  Note that the setting of the switches controls the default setting of
! the checks. They may be modified using either @cite{pragma Suppress} (to
! remove checks) or @cite{pragma Unsuppress} (to add back suppressed
  checks) in the program source.
  
  @node Use of Restrictions,Optimization Levels,Controlling Run-Time Checks,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution use-of-restrictions}@anchor{1a2}@anchor{gnat_ugn/gnat_and_program_execution id31}@anchor{1a3}
  @subsubsection Use of Restrictions
  
  
--- 20913,20924 ----
  @geindex pragma Unsuppress
  
  Note that the setting of the switches controls the default setting of
! the checks. They may be modified using either @code{pragma Suppress} (to
! remove checks) or @code{pragma Unsuppress} (to add back suppressed
  checks) in the program source.
  
  @node Use of Restrictions,Optimization Levels,Controlling Run-Time Checks,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution id32}@anchor{1a4}@anchor{gnat_ugn/gnat_and_program_execution use-of-restrictions}@anchor{1a5}
  @subsubsection Use of Restrictions
  
  
*************** results in some distributed overhead, pa
*** 20711,20718 ****
  exception handlers are used. The reason is that certain sections of code
  have to be marked as non-abortable.
  
! If you use neither the @cite{abort} statement, nor asynchronous transfer
! of control (@cite{select ... then abort}), then this distributed overhead
  is removed, which may have a general positive effect in improving
  overall performance.  Especially code involving frequent use of tasking
  constructs and controlled types will show much improved performance.
--- 20933,20940 ----
  exception handlers are used. The reason is that certain sections of code
  have to be marked as non-abortable.
  
! If you use neither the @code{abort} statement, nor asynchronous transfer
! of control (@code{select ... then abort}), then this distributed overhead
  is removed, which may have a general positive effect in improving
  overall performance.  Especially code involving frequent use of tasking
  constructs and controlled types will show much improved performance.
*************** that this also means that you can write
*** 20731,20737 ****
  possibility of an immediate abort at any point.
  
  @node Optimization Levels,Debugging Optimized Code,Use of Restrictions,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution id32}@anchor{1a4}@anchor{gnat_ugn/gnat_and_program_execution optimization-levels}@anchor{fc}
  @subsubsection Optimization Levels
  
  
--- 20953,20959 ----
  possibility of an immediate abort at any point.
  
  @node Optimization Levels,Debugging Optimized Code,Use of Restrictions,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution id33}@anchor{1a6}@anchor{gnat_ugn/gnat_and_program_execution optimization-levels}@anchor{fc}
  @subsubsection Optimization Levels
  
  
*************** The default is optimization off. This re
*** 20757,20765 ****
  times, but GNAT makes absolutely no attempt to optimize, and the
  generated programs are considerably larger and slower than when
  optimization is enabled. You can use the
! @emph{-O} switch (the permitted forms are @emph{-O0}, @emph{-O1}
! @emph{-O2}, @emph{-O3}, and @emph{-Os})
! to @emph{gcc} to control the optimization level:
  
  
  @itemize *
--- 20979,20987 ----
  times, but GNAT makes absolutely no attempt to optimize, and the
  generated programs are considerably larger and slower than when
  optimization is enabled. You can use the
! @code{-O} switch (the permitted forms are @code{-O0}, @code{-O1}
! @code{-O2}, @code{-O3}, and @code{-Os})
! to @code{gcc} to control the optimization level:
  
  
  @itemize *
*************** to @emph{gcc} to control the optimizatio
*** 20768,20793 ****
  
  @table @asis
  
! @item @emph{-O0}
  
  No optimization (the default);
  generates unoptimized code but has
  the fastest compilation time.
  
! Note that many other compilers do fairly extensive optimization
! even if 'no optimization' is specified. With gcc, it is
! very unusual to use -O0 for production if
! execution time is of any concern, since -O0
! really does mean no optimization at all. This difference between
! gcc and other compilers should be kept in mind when doing
! performance comparisons.
  @end table
  
  @item 
  
  @table @asis
  
! @item @emph{-O1}
  
  Moderate optimization;
  optimizes reasonably well but does not
--- 20990,21014 ----
  
  @table @asis
  
! @item @code{-O0}
  
  No optimization (the default);
  generates unoptimized code but has
  the fastest compilation time.
  
! Note that many other compilers do substantial optimization even
! if 'no optimization' is specified. With gcc, it is very unusual
! to use @code{-O0} for production if execution time is of any concern,
! since @code{-O0} means (almost) no optimization. This difference
! between gcc and other compilers should be kept in mind when
! doing performance comparisons.
  @end table
  
  @item 
  
  @table @asis
  
! @item @code{-O1}
  
  Moderate optimization;
  optimizes reasonably well but does not
*************** degrade compilation time significantly.
*** 20798,20804 ****
  
  @table @asis
  
! @item @emph{-O2}
  
  Full optimization;
  generates highly optimized code and has
--- 21019,21025 ----
  
  @table @asis
  
! @item @code{-O2}
  
  Full optimization;
  generates highly optimized code and has
*************** the slowest compilation time.
*** 20809,20817 ****
  
  @table @asis
  
! @item @emph{-O3}
  
! Full optimization as in @emph{-O2};
  also uses more aggressive automatic inlining of subprograms within a unit
  (@ref{10f,,Inlining of Subprograms}) and attempts to vectorize loops.
  @end table
--- 21030,21038 ----
  
  @table @asis
  
! @item @code{-O3}
  
! Full optimization as in @code{-O2};
  also uses more aggressive automatic inlining of subprograms within a unit
  (@ref{10f,,Inlining of Subprograms}) and attempts to vectorize loops.
  @end table
*************** also uses more aggressive automatic inli
*** 20820,20826 ****
  
  @table @asis
  
! @item @emph{-Os}
  
  Optimize space usage (code and data) of resulting program.
  @end table
--- 21041,21047 ----
  
  @table @asis
  
! @item @code{-Os}
  
  Optimize space usage (code and data) of resulting program.
  @end table
*************** of the optimization settings in general
*** 20839,20848 ****
  See the @emph{Options That Control Optimization} section in
  @cite{Using the GNU Compiler Collection (GCC)}
  for details about
! the @emph{-O} settings and a number of @emph{-f} options that
  individually enable or disable specific optimizations.
  
! Unlike some other compilation systems, @emph{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
--- 21060,21069 ----
  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
  individually enable or disable specific optimizations.
  
! 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 t
*** 20850,20862 ****
  generator, which in practice is highly reliable at all optimization
  levels.
  
! Note regarding the use of @emph{-O3}: The use of this optimization level
! is generally discouraged with GNAT, since it often results in larger
! executables which may run more slowly. See further discussion of this point
! in @ref{10f,,Inlining of Subprograms}.
  
  @node Debugging Optimized Code,Inlining of Subprograms,Optimization Levels,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution id33}@anchor{1a5}@anchor{gnat_ugn/gnat_and_program_execution debugging-optimized-code}@anchor{1a6}
  @subsubsection Debugging Optimized Code
  
  
--- 21071,21083 ----
  generator, which in practice is highly reliable at all optimization
  levels.
  
! Note regarding the use of @code{-O3}: The use of this optimization level
! ought not to be automatically preferred over that of level @code{-O2},
! since it often results in larger executables which may run more slowly.
! See further discussion of this point in @ref{10f,,Inlining of Subprograms}.
  
  @node Debugging Optimized Code,Inlining of Subprograms,Optimization Levels,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution id34}@anchor{1a7}@anchor{gnat_ugn/gnat_and_program_execution debugging-optimized-code}@anchor{1a8}
  @subsubsection Debugging Optimized Code
  
  
*************** source-level constructs will have been e
*** 20871,20883 ****
  For example, if a loop is strength-reduced, the loop
  control variable may be completely eliminated and thus cannot be
  displayed in the debugger.
! This can only happen at @emph{-O2} or @emph{-O3}.
  Explicit temporary variables that you code might be eliminated at
! level @emph{-O1} or higher.
  
  @geindex -g (gcc)
  
! The use of the @emph{-g} switch,
  which is needed for source-level debugging,
  affects the size of the program executable on disk,
  and indeed the debugging information can be quite large.
--- 21092,21104 ----
  For example, if a loop is strength-reduced, the loop
  control variable may be completely eliminated and thus cannot be
  displayed in the debugger.
! This can only happen at @code{-O2} or @code{-O3}.
  Explicit temporary variables that you code might be eliminated at
! level @code{-O1} or higher.
  
  @geindex -g (gcc)
  
! The use of the @code{-g} switch,
  which is needed for source-level debugging,
  affects the size of the program executable on disk,
  and indeed the debugging information can be quite large.
*************** These are the most common cases:
*** 20894,20900 ****
  @itemize *
  
  @item 
! @emph{The 'hopping Program Counter':}  Repeated @cite{step} or @cite{next}
  commands show
  the PC bouncing back and forth in the code.  This may result from any of
  the following optimizations:
--- 21115,21121 ----
  @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:
*************** two identical pieces of code are merged
*** 20928,20935 ****
  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 @cite{goto}, a @cite{return}, or
! a @cite{break} in a C @cite{switch} statement.
  
  @item 
  @emph{The 'roving variable':} The symptom is an unexpected value in a variable.
--- 21149,21156 ----
  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.
*************** strange value to see if code motion had
*** 20973,20990 ****
  assignments later.
  @end itemize
  
! In light of such anomalies, a recommended technique is to use @emph{-O0}
  early in the software development cycle, when extensive debugging capabilities
! are most needed, and then move to @emph{-O1} and later @emph{-O2} as
  the debugger becomes less critical.
! Whether to use the @emph{-g} switch in the release version is
  a release management issue.
! Note that if you use @emph{-g} you can then use the @emph{strip} program
  on the resulting executable,
  which removes both debugging information and global symbols.
  
  @node Inlining of Subprograms,Floating_Point_Operations,Debugging Optimized Code,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution id34}@anchor{1a7}@anchor{gnat_ugn/gnat_and_program_execution inlining-of-subprograms}@anchor{10f}
  @subsubsection Inlining of Subprograms
  
  
--- 21194,21211 ----
  assignments later.
  @end itemize
  
! In light of such anomalies, a recommended technique is to use @code{-O0}
  early in the software development cycle, when extensive debugging capabilities
! are most needed, and then move to @code{-O1} and later @code{-O2} as
  the debugger becomes less critical.
! Whether to use the @code{-g} switch in the release version is
  a release management issue.
! Note that if you use @code{-g} you can then use the @code{strip} program
  on the resulting executable,
  which removes both debugging information and global symbols.
  
  @node Inlining of Subprograms,Floating_Point_Operations,Debugging Optimized Code,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution id35}@anchor{1a9}@anchor{gnat_ugn/gnat_and_program_execution inlining-of-subprograms}@anchor{10f}
  @subsubsection Inlining of Subprograms
  
  
*************** following conditions are met:
*** 20995,21005 ****
  @itemize *
  
  @item 
! The optimization level is at least @emph{-O1}.
  
  @item 
  The called subprogram is suitable for inlining: It must be small enough
! and not contain something that @emph{gcc} cannot support in inlined
  subprograms.
  
  @geindex pragma Inline
--- 21216,21226 ----
  @itemize *
  
  @item 
! The optimization level is at least @code{-O1}.
  
  @item 
  The called subprogram is suitable for inlining: It must be small enough
! and not contain something that @code{gcc} cannot support in inlined
  subprograms.
  
  @geindex pragma Inline
*************** subprograms.
*** 21007,21016 ****
  @geindex Inline
  
  @item 
! Any one of the following applies: @cite{pragma Inline} is applied to the
  subprogram; the subprogram is local to the unit and called once from
! within it; the subprogram is small and optimization level @emph{-O2} is
! specified; optimization level @emph{-O3} is specified.
  @end itemize
  
  Calls to subprograms in @emph{with}ed units are normally not inlined.
--- 21228,21237 ----
  @geindex Inline
  
  @item 
! Any one of the following applies: @code{pragma Inline} is applied to the
  subprogram; the subprogram is local to the unit and called once from
! within it; the subprogram is small and optimization level @code{-O2} is
! specified; optimization level @code{-O3} is specified.
  @end itemize
  
  Calls to subprograms in @emph{with}ed units are normally not inlined.
*************** in the body of the subprogram), the foll
*** 21021,21038 ****
  @itemize *
  
  @item 
! The optimization level is at least @emph{-O1}.
  
  @item 
  The called subprogram is suitable for inlining: It must be small enough
! and not contain something that @emph{gcc} cannot support in inlined
  subprograms.
  
  @item 
! There is a @cite{pragma Inline} for the subprogram.
  
  @item 
! The @emph{-gnatn} switch is used on the command line.
  @end itemize
  
  Even if all these conditions are met, it may not be possible for
--- 21242,21259 ----
  @itemize *
  
  @item 
! The optimization level is at least @code{-O1}.
  
  @item 
  The called subprogram is suitable for inlining: It must be small enough
! and not contain something that @code{gcc} cannot support in inlined
  subprograms.
  
  @item 
! There is a @code{pragma Inline} for the subprogram.
  
  @item 
! The @code{-gnatn} switch is used on the command line.
  @end itemize
  
  Even if all these conditions are met, it may not be possible for
*************** the compiler to inline the call, due to
*** 21040,21046 ****
  or features in the body that make it impossible for the compiler
  to do the inlining.
  
! Note that specifying the @emph{-gnatn} switch causes additional
  compilation dependencies. Consider the following:
  
  @quotation
--- 21261,21267 ----
  or features in the body that make it impossible for the compiler
  to do the inlining.
  
! Note that specifying the @code{-gnatn} switch causes additional
  compilation dependencies. Consider the following:
  
  @quotation
*************** end Main;
*** 21063,21129 ****
  @end example
  @end quotation
  
! With the default behavior (no @emph{-gnatn} switch specified), the
! compilation of the @cite{Main} procedure depends only on its own source,
  @code{main.adb}, and the spec of the package in file @code{r.ads}. This
! means that editing the body of @cite{R} does not require recompiling
! @cite{Main}.
  
! On the other hand, the call @cite{R.Q} is not inlined under these
! circumstances. If the @emph{-gnatn} switch is present when @cite{Main}
! is compiled, the call will be inlined if the body of @cite{Q} is small
! enough, but now @cite{Main} depends on the body of @cite{R} in
  @code{r.adb} as well as on the spec. This means that if this body is edited,
  the main program must be recompiled. Note that this extra dependency
! occurs whether or not the call is in fact inlined by @emph{gcc}.
  
! The use of front end inlining with @emph{-gnatN} generates similar
  additional dependencies.
  
  @geindex -fno-inline (gcc)
  
! Note: The @emph{-fno-inline} switch overrides all other conditions and ensures that
! no inlining occurs, unless requested with pragma Inline_Always for @emph{gcc}
! back-ends. The extra dependences resulting from @emph{-gnatn} will still be active,
  even if this switch is used to suppress the resulting inlining actions.
  
  @geindex -fno-inline-functions (gcc)
  
! Note: The @emph{-fno-inline-functions} switch can be used to prevent
! automatic inlining of subprograms if @emph{-O3} is used.
  
  @geindex -fno-inline-small-functions (gcc)
  
! Note: The @emph{-fno-inline-small-functions} switch can be used to prevent
! automatic inlining of small subprograms if @emph{-O2} is used.
  
  @geindex -fno-inline-functions-called-once (gcc)
  
! Note: The @emph{-fno-inline-functions-called-once} switch
  can be used to prevent inlining of subprograms local to the unit
! and called once from within it if @emph{-O1} is used.
  
! Note regarding the use of @emph{-O3}: @emph{-gnatn} is made up of two
! sub-switches @emph{-gnatn1} and @emph{-gnatn2} that can be directly
! specified in lieu of it, @emph{-gnatn} being translated into one of them
! based on the optimization level. With @emph{-O2} or below, @emph{-gnatn}
! is equivalent to @emph{-gnatn1} which activates pragma @cite{Inline} with
! moderate inlining across modules. With @emph{-O3}, @emph{-gnatn} is
! equivalent to @emph{-gnatn2} which activates pragma @cite{Inline} with
! full inlining across modules. If you have used pragma @cite{Inline} in
! appropriate cases, then it is usually much better to use @emph{-O2}
! and @emph{-gnatn} and avoid the use of @emph{-O3} which has the additional
  effect of inlining subprograms you did not think should be inlined. We have
! found that the use of @emph{-O3} may slow down the compilation and increase
  the code size by performing excessive inlining, leading to increased
  instruction cache pressure from the increased code size and thus minor
  performance improvements. So the bottom line here is that you should not
! automatically assume that @emph{-O3} is better than @emph{-O2}, and
! indeed you should use @emph{-O3} only if tests show that it actually
  improves performance for your program.
  
  @node Floating_Point_Operations,Vectorization of loops,Inlining of Subprograms,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution floating-point-operations}@anchor{1a8}@anchor{gnat_ugn/gnat_and_program_execution id35}@anchor{1a9}
  @subsubsection Floating_Point_Operations
  
  
--- 21284,21350 ----
  @end example
  @end quotation
  
! With the default behavior (no @code{-gnatn} switch specified), the
! compilation of the @code{Main} procedure depends only on its own source,
  @code{main.adb}, and the spec of the package in file @code{r.ads}. This
! means that editing the body of @code{R} does not require recompiling
! @code{Main}.
  
! On the other hand, the call @code{R.Q} is not inlined under these
! circumstances. If the @code{-gnatn} switch is present when @code{Main}
! is compiled, the call will be inlined if the body of @code{Q} is small
! enough, but now @code{Main} depends on the body of @code{R} in
  @code{r.adb} as well as on the spec. This means that if this body is edited,
  the main program must be recompiled. Note that this extra dependency
! occurs whether or not the call is in fact inlined by @code{gcc}.
  
! The use of front end inlining with @code{-gnatN} generates similar
  additional dependencies.
  
  @geindex -fno-inline (gcc)
  
! Note: The @code{-fno-inline} switch overrides all other conditions and ensures that
! no inlining occurs, unless requested with pragma Inline_Always for @code{gcc}
! back-ends. The extra dependences resulting from @code{-gnatn} will still be active,
  even if this switch is used to suppress the resulting inlining actions.
  
  @geindex -fno-inline-functions (gcc)
  
! Note: The @code{-fno-inline-functions} switch can be used to prevent
! automatic inlining of subprograms if @code{-O3} is used.
  
  @geindex -fno-inline-small-functions (gcc)
  
! Note: The @code{-fno-inline-small-functions} switch can be used to prevent
! automatic inlining of small subprograms if @code{-O2} is used.
  
  @geindex -fno-inline-functions-called-once (gcc)
  
! Note: The @code{-fno-inline-functions-called-once} switch
  can be used to prevent inlining of subprograms local to the unit
! and called once from within it if @code{-O1} is used.
  
! Note regarding the use of @code{-O3}: @code{-gnatn} is made up of two
! sub-switches @code{-gnatn1} and @code{-gnatn2} that can be directly
! specified in lieu of it, @code{-gnatn} being translated into one of them
! based on the optimization level. With @code{-O2} or below, @code{-gnatn}
! is equivalent to @code{-gnatn1} which activates pragma @code{Inline} with
! moderate inlining across modules. With @code{-O3}, @code{-gnatn} is
! equivalent to @code{-gnatn2} which activates pragma @code{Inline} with
! full inlining across modules. If you have used pragma @code{Inline} in
! appropriate cases, then it is usually much better to use @code{-O2}
! and @code{-gnatn} and avoid the use of @code{-O3} which has the additional
  effect of inlining subprograms you did not think should be inlined. We have
! found that the use of @code{-O3} may slow down the compilation and increase
  the code size by performing excessive inlining, leading to increased
  instruction cache pressure from the increased code size and thus minor
  performance improvements. So the bottom line here is that you should not
! automatically assume that @code{-O3} is better than @code{-O2}, and
! indeed you should use @code{-O3} only if tests show that it actually
  improves performance for your program.
  
  @node Floating_Point_Operations,Vectorization of loops,Inlining of Subprograms,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution id36}@anchor{1aa}@anchor{gnat_ugn/gnat_and_program_execution floating-point-operations}@anchor{1ab}
  @subsubsection Floating_Point_Operations
  
  
*************** so it is permissible to mix units compil
*** 21171,21199 ****
  switches.
  
  @node Vectorization of loops,Other Optimization Switches,Floating_Point_Operations,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution id36}@anchor{1aa}@anchor{gnat_ugn/gnat_and_program_execution vectorization-of-loops}@anchor{1ab}
  @subsubsection Vectorization of loops
  
  
  @geindex Optimization Switches
  
! You can take advantage of the auto-vectorizer present in the @emph{gcc}
  back end to vectorize loops with GNAT.  The corresponding command line switch
! is @emph{-ftree-vectorize} but, as it is enabled by default at @emph{-O3}
  and other aggressive optimizations helpful for vectorization also are enabled
! by default at this level, using @emph{-O3} directly is recommended.
  
  You also need to make sure that the target architecture features a supported
  SIMD instruction set.  For example, for the x86 architecture, you should at
! least specify @emph{-msse2} to get significant vectorization (but you don't
  need to specify it for x86-64 as it is part of the base 64-bit architecture).
! Similarly, for the PowerPC architecture, you should specify @emph{-maltivec}.
  
! The preferred loop form for vectorization is the @cite{for} iteration scheme.
! Loops with a @cite{while} iteration scheme can also be vectorized if they are
  very simple, but the vectorizer will quickly give up otherwise.  With either
  iteration scheme, the flow of control must be straight, in particular no
! @cite{exit} statement may appear in the loop body.  The loop may however
  contain a single nested loop, if it can be vectorized when considered alone:
  
  @quotation
--- 21392,21420 ----
  switches.
  
  @node Vectorization of loops,Other Optimization Switches,Floating_Point_Operations,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution id37}@anchor{1ac}@anchor{gnat_ugn/gnat_and_program_execution vectorization-of-loops}@anchor{1ad}
  @subsubsection Vectorization of loops
  
  
  @geindex Optimization Switches
  
! You can take advantage of the auto-vectorizer present in the @code{gcc}
  back end to vectorize loops with GNAT.  The corresponding command line switch
! is @code{-ftree-vectorize} but, as it is enabled by default at @code{-O3}
  and other aggressive optimizations helpful for vectorization also are enabled
! by default at this level, using @code{-O3} directly is recommended.
  
  You also need to make sure that the target architecture features a supported
  SIMD instruction set.  For example, for the x86 architecture, you should at
! least specify @code{-msse2} to get significant vectorization (but you don't
  need to specify it for x86-64 as it is part of the base 64-bit architecture).
! Similarly, for the PowerPC architecture, you should specify @code{-maltivec}.
  
! The preferred loop form for vectorization is the @code{for} iteration scheme.
! Loops with a @code{while} iteration scheme can also be vectorized if they are
  very simple, but the vectorizer will quickly give up otherwise.  With either
  iteration scheme, the flow of control must be straight, in particular no
! @code{exit} statement may appear in the loop body.  The loop may however
  contain a single nested loop, if it can be vectorized when considered alone:
  
  @quotation
*************** end Sum;
*** 21216,21222 ****
  The vectorizable operations depend on the targeted SIMD instruction set, but
  the adding and some of the multiplying operators are generally supported, as
  well as the logical operators for modular types. Note that compiling
! with @emph{-gnatp} might well reveal cases where some checks do thwart
  vectorization.
  
  Type conversions may also prevent vectorization if they involve semantics that
--- 21437,21443 ----
  The vectorizable operations depend on the targeted SIMD instruction set, but
  the adding and some of the multiplying operators are generally supported, as
  well as the logical operators for modular types. Note that compiling
! with @code{-gnatp} might well reveal cases where some checks do thwart
  vectorization.
  
  Type conversions may also prevent vectorization if they involve semantics that
*************** Integer (S'Truncation (F))
*** 21231,21237 ****
  @end example
  @end quotation
  
! if @cite{S} is the subtype of floating-point object @cite{F}.
  
  In most cases, the vectorizable loops are loops that iterate over arrays.
  All kinds of array types are supported, i.e. constrained array types with
--- 21452,21458 ----
  @end example
  @end quotation
  
! if @code{S} is the subtype of floating-point object @code{F}.
  
  In most cases, the vectorizable loops are loops that iterate over arrays.
  All kinds of array types are supported, i.e. constrained array types with
*************** bounds of the array, the more fallback c
*** 21273,21279 ****
  fix things up at run time.
  
  It is possible to specify that a given loop should be subject to vectorization
! preferably to other optimizations by means of pragma @cite{Loop_Optimize}:
  
  @quotation
  
--- 21494,21500 ----
  fix things up at run time.
  
  It is possible to specify that a given loop should be subject to vectorization
! preferably to other optimizations by means of pragma @code{Loop_Optimize}:
  
  @quotation
  
*************** placed immediately within the loop will
*** 21322,21345 ****
  omit the non-vectorized version of the loop as well as the run-time test.
  
  @node Other Optimization Switches,Optimization and Strict Aliasing,Vectorization of loops,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution id37}@anchor{1ac}@anchor{gnat_ugn/gnat_and_program_execution other-optimization-switches}@anchor{1ad}
  @subsubsection Other Optimization Switches
  
  
  @geindex Optimization Switches
  
! Since @cite{GNAT} uses the @emph{gcc} back end, all the specialized
! @emph{gcc} optimization switches are potentially usable. These switches
  have not been extensively tested with GNAT but can generally be expected
! to work. Examples of switches in this category are @emph{-funroll-loops}
! and the various target-specific @emph{-m} options (in particular, it has
! been observed that @emph{-march=xxx} can significantly improve performance
  on appropriate machines). For full details of these switches, see
! the @cite{Submodel Options} section in the @cite{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
! @anchor{gnat_ugn/gnat_and_program_execution optimization-and-strict-aliasing}@anchor{f3}@anchor{gnat_ugn/gnat_and_program_execution id38}@anchor{1ae}
  @subsubsection Optimization and Strict Aliasing
  
  
--- 21543,21566 ----
  omit the non-vectorized version of the loop as well as the run-time test.
  
  @node Other Optimization Switches,Optimization and Strict Aliasing,Vectorization of loops,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution other-optimization-switches}@anchor{1ae}@anchor{gnat_ugn/gnat_and_program_execution id38}@anchor{1af}
  @subsubsection Other Optimization Switches
  
  
  @geindex Optimization Switches
  
! Since GNAT uses the @code{gcc} back end, all the specialized
! @code{gcc} optimization switches are potentially usable. These switches
  have not been extensively tested with GNAT but can generally be expected
! to work. Examples of switches in this category are @code{-funroll-loops}
! 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
! @anchor{gnat_ugn/gnat_and_program_execution optimization-and-strict-aliasing}@anchor{f3}@anchor{gnat_ugn/gnat_and_program_execution id39}@anchor{1b0}
  @subsubsection Optimization and Strict Aliasing
  
  
*************** end R;
*** 21378,21399 ****
  @end example
  @end quotation
  
! In this example, since the variable @cite{Int1V} can only access objects
! of type @cite{Int1}, and @cite{Int2V} can only access objects of type
! @cite{Int2}, there is no possibility that the assignment to
! @cite{Int2V.all} affects the value of @cite{Int1V.all}. This means that
! the compiler optimizer can "know" that the value @cite{Int1V.all} is constant
  for all iterations of the loop and avoid the extra memory reference
  required to dereference it each time through the loop.
  
  This kind of optimization, called strict aliasing analysis, is
! triggered by specifying an optimization level of @emph{-O2} or
! higher or @emph{-Os} and allows @cite{GNAT} to generate more efficient code
  when access values are involved.
  
  However, although this optimization is always correct in terms of
  the formal semantics of the Ada Reference Manual, difficulties can
! arise if features like @cite{Unchecked_Conversion} are used to break
  the typing system. Consider the following complete program example:
  
  @quotation
--- 21599,21620 ----
  @end example
  @end quotation
  
! In this example, since the variable @code{Int1V} can only access objects
! of type @code{Int1}, and @code{Int2V} can only access objects of type
! @code{Int2}, there is no possibility that the assignment to
! @code{Int2V.all} affects the value of @code{Int1V.all}. This means that
! the compiler optimizer can "know" that the value @code{Int1V.all} is constant
  for all iterations of the loop and avoid the extra memory reference
  required to dereference it each time through the loop.
  
  This kind of optimization, called strict aliasing analysis, is
! triggered by specifying an optimization level of @code{-O2} or
! higher or @code{-Os} and allows GNAT to generate more efficient code
  when access values are involved.
  
  However, although this optimization is always correct in terms of
  the formal semantics of the Ada Reference Manual, difficulties can
! arise if features like @code{Unchecked_Conversion} are used to break
  the typing system. Consider the following complete program example:
  
  @quotation
*************** end;
*** 21435,21445 ****
  @end example
  @end quotation
  
! This program prints out 0 in @emph{-O0} or @emph{-O1}
! mode, but it prints out 1 in @emph{-O2} mode. That's
  because in strict aliasing mode, the compiler can and
! does assume that the assignment to @cite{v2.all} could not
! affect the value of @cite{v1.all}, since different types
  are involved.
  
  This behavior is not a case of non-conformance with the standard, since
--- 21656,21666 ----
  @end example
  @end quotation
  
! This program prints out 0 in @code{-O0} or @code{-O1}
! mode, but it prints out 1 in @code{-O2} mode. That's
  because in strict aliasing mode, the compiler can and
! does assume that the assignment to @code{v2.all} could not
! affect the value of @code{v1.all}, since different types
  are involved.
  
  This behavior is not a case of non-conformance with the standard, since
*************** the Ada RM specifies that an unchecked c
*** 21447,21453 ****
  bit pattern is not a correct value of the target type can result in an
  abnormal value and attempting to reference an abnormal value makes the
  execution of a program erroneous.  That's the case here since the result
! does not point to an object of type @cite{int2}.  This means that the
  effect is entirely unpredictable.
  
  However, although that explanation may satisfy a language
--- 21668,21674 ----
  bit pattern is not a correct value of the target type can result in an
  abnormal value and attempting to reference an abnormal value makes the
  execution of a program erroneous.  That's the case here since the result
! does not point to an object of type @code{int2}.  This means that the
  effect is entirely unpredictable.
  
  However, although that explanation may satisfy a language
*************** p2.adb:5:07: warning:  or use "pragma No
*** 21469,21500 ****
  @end quotation
  
  Unfortunately the problem is recognized when compiling the body of
! package @cite{p2}, but the actual "bad" code is generated while
! compiling the body of @cite{m} and this latter compilation does not see
! the suspicious @cite{Unchecked_Conversion}.
  
  As implied by the warning message, there are approaches you can use to
  avoid the unwanted strict aliasing optimization in a case like this.
  
! One possibility is to simply avoid the use of @emph{-O2}, but
  that is a bit drastic, since it throws away a number of useful
  optimizations that do not involve strict aliasing assumptions.
  
  A less drastic approach is to compile the program using the
! option @emph{-fno-strict-aliasing}. Actually it is only the
  unit containing the dereferencing of the suspicious pointer
  that needs to be compiled. So in this case, if we compile
! unit @cite{m} with this switch, then we get the expected
  value of zero printed. Analyzing which units might need
  the switch can be painful, so a more reasonable approach
! is to compile the entire program with options @emph{-O2}
! and @emph{-fno-strict-aliasing}. If the performance is
  satisfactory with this combination of options, then the
  advantage is that the entire issue of possible "wrong"
  optimization due to strict aliasing is avoided.
  
  To avoid the use of compiler switches, the configuration
! pragma @cite{No_Strict_Aliasing} with no parameters may be
  used to specify that for all access types, the strict
  aliasing optimization should be suppressed.
  
--- 21690,21721 ----
  @end quotation
  
  Unfortunately the problem is recognized when compiling the body of
! package @code{p2}, but the actual "bad" code is generated while
! compiling the body of @code{m} and this latter compilation does not see
! the suspicious @code{Unchecked_Conversion}.
  
  As implied by the warning message, there are approaches you can use to
  avoid the unwanted strict aliasing optimization in a case like this.
  
! One possibility is to simply avoid the use of @code{-O2}, but
  that is a bit drastic, since it throws away a number of useful
  optimizations that do not involve strict aliasing assumptions.
  
  A less drastic approach is to compile the program using the
! option @code{-fno-strict-aliasing}. Actually it is only the
  unit containing the dereferencing of the suspicious pointer
  that needs to be compiled. So in this case, if we compile
! unit @code{m} with this switch, then we get the expected
  value of zero printed. Analyzing which units might need
  the switch can be painful, so a more reasonable approach
! is to compile the entire program with options @code{-O2}
! and @code{-fno-strict-aliasing}. If the performance is
  satisfactory with this combination of options, then the
  advantage is that the entire issue of possible "wrong"
  optimization due to strict aliasing is avoided.
  
  To avoid the use of compiler switches, the configuration
! pragma @code{No_Strict_Aliasing} with no parameters may be
  used to specify that for all access types, the strict
  aliasing optimization should be suppressed.
  
*************** access type identified as problematic.
*** 21506,21512 ****
  First, if a careful analysis of uses of the pointer shows
  that there are no possible problematic references, then
  the warning can be suppressed by bracketing the
! instantiation of @cite{Unchecked_Conversion} to turn
  the warning off:
  
  @quotation
--- 21727,21733 ----
  First, if a careful analysis of uses of the pointer shows
  that there are no possible problematic references, then
  the warning can be suppressed by bracketing the
! instantiation of @code{Unchecked_Conversion} to turn
  the warning off:
  
  @quotation
*************** case we can take one of two other approa
*** 21526,21533 ****
  The first possibility is to move the instantiation of unchecked
  conversion to the unit in which the type is declared. In
  this example, we would move the instantiation of
! @cite{Unchecked_Conversion} from the body of package
! @cite{p2} to the spec of package @cite{p1}. Now the
  warning disappears. That's because any use of the
  access type knows there is a suspicious unchecked
  conversion, and the strict aliasing optimization
--- 21747,21754 ----
  The first possibility is to move the instantiation of unchecked
  conversion to the unit in which the type is declared. In
  this example, we would move the instantiation of
! @code{Unchecked_Conversion} from the body of package
! @code{p2} to the spec of package @code{p1}. Now the
  warning disappears. That's because any use of the
  access type knows there is a suspicious unchecked
  conversion, and the strict aliasing optimization
*************** is automatically suppressed for the type
*** 21536,21542 ****
  If it is not practical to move the unchecked conversion to the same unit
  in which the destination access type is declared (perhaps because the
  source type is not visible in that unit), you may use pragma
! @cite{No_Strict_Aliasing} for the type. This pragma must occur in the
  same declarative sequence as the declaration of the access type:
  
  @quotation
--- 21757,21763 ----
  If it is not practical to move the unchecked conversion to the same unit
  in which the destination access type is declared (perhaps because the
  source type is not visible in that unit), you may use pragma
! @code{No_Strict_Aliasing} for the type. This pragma must occur in the
  same declarative sequence as the declaration of the access type:
  
  @quotation
*************** pragma No_Strict_Aliasing (a2);
*** 21548,21554 ****
  @end quotation
  
  Here again, the compiler now knows that the strict aliasing optimization
! should be suppressed for any reference to type @cite{a2} and the
  expected behavior is obtained.
  
  Finally, note that although the compiler can generate warnings for
--- 21769,21775 ----
  @end quotation
  
  Here again, the compiler now knows that the strict aliasing optimization
! should be suppressed for any reference to type @code{a2} and the
  expected behavior is obtained.
  
  Finally, note that although the compiler can generate warnings for
*************** have significant benefits. We have seen
*** 21568,21585 ****
  application code where the time is increased by up to 5% by turning
  this optimization off. If you have code that includes significant
  usage of unchecked conversion, you might want to just stick with
! @emph{-O1} and avoid the entire issue. If you get adequate
  performance at this level of optimization level, that's probably
  the safest approach. If tests show that you really need higher
! levels of optimization, then you can experiment with @emph{-O2}
! and @emph{-O2 -fno-strict-aliasing} to see how much effect this
  has on size and speed of the code. If you really need to use
! @emph{-O2} with strict aliasing in effect, then you should
  review any uses of unchecked conversion of access types,
  particularly if you are getting the warnings described above.
  
  @node Aliased Variables and Optimization,Atomic Variables and Optimization,Optimization and Strict Aliasing,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution aliased-variables-and-optimization}@anchor{1af}@anchor{gnat_ugn/gnat_and_program_execution id39}@anchor{1b0}
  @subsubsection Aliased Variables and Optimization
  
  
--- 21789,21806 ----
  application code where the time is increased by up to 5% by turning
  this optimization off. If you have code that includes significant
  usage of unchecked conversion, you might want to just stick with
! @code{-O1} and avoid the entire issue. If you get adequate
  performance at this level of optimization level, that's probably
  the safest approach. If tests show that you really need higher
! levels of optimization, then you can experiment with @code{-O2}
! and @code{-O2 -fno-strict-aliasing} to see how much effect this
  has on size and speed of the code. If you really need to use
! @code{-O2} with strict aliasing in effect, then you should
  review any uses of unchecked conversion of access types,
  particularly if you are getting the warnings described above.
  
  @node Aliased Variables and Optimization,Atomic Variables and Optimization,Optimization and Strict Aliasing,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution aliased-variables-and-optimization}@anchor{1b1}@anchor{gnat_ugn/gnat_and_program_execution id40}@anchor{1b2}
  @subsubsection Aliased Variables and Optimization
  
  
*************** end;
*** 21621,21629 ****
  @end quotation
  
  where Get_String is a C function that uses the address in Temp to
! modify the variable @cite{Name}. This code is dubious, and arguably
  erroneous, and the compiler would be entitled to assume that
! @cite{Name} is never modified, and generate code accordingly.
  
  However, in practice, this would cause some existing code that
  seems to work with no optimization to start failing at high
--- 21842,21850 ----
  @end quotation
  
  where Get_String is a C function that uses the address in Temp to
! modify the variable @code{Name}. This code is dubious, and arguably
  erroneous, and the compiler would be entitled to assume that
! @code{Name} is never modified, and generate code accordingly.
  
  However, in practice, this would cause some existing code that
  seems to work with no optimization to start failing at high
*************** This means that the above example will i
*** 21637,21643 ****
  that is, it will produce the expected results.
  
  @node Atomic Variables and Optimization,Passive Task Optimization,Aliased Variables and Optimization,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution atomic-variables-and-optimization}@anchor{1b1}@anchor{gnat_ugn/gnat_and_program_execution id40}@anchor{1b2}
  @subsubsection Atomic Variables and Optimization
  
  
--- 21858,21864 ----
  that is, it will produce the expected results.
  
  @node Atomic Variables and Optimization,Passive Task Optimization,Aliased Variables and Optimization,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution atomic-variables-and-optimization}@anchor{1b3}@anchor{gnat_ugn/gnat_and_program_execution id41}@anchor{1b4}
  @subsubsection Atomic Variables and Optimization
  
  
*************** X := RV.B;
*** 21675,21681 ****
  @end example
  @end quotation
  
! You cannot assume that the reference to @cite{RV.B}
  will read the entire 32-bit
  variable with a single load instruction. It is perfectly legitimate if
  the hardware allows it to do a byte read of just the B field. This read
--- 21896,21902 ----
  @end example
  @end quotation
  
! You cannot assume that the reference to @code{RV.B}
  will read the entire 32-bit
  variable with a single load instruction. It is perfectly legitimate if
  the hardware allows it to do a byte read of just the B field. This read
*************** Any assumption to the contrary is non-po
*** 21685,21691 ****
  examine the assembly language and see a full 32-bit load, this might
  change in a future version of the compiler.
  
! If your application requires that all accesses to @cite{RV} in this
  example be full 32-bit loads, you need to make a copy for the access
  as in:
  
--- 21906,21912 ----
  examine the assembly language and see a full 32-bit load, this might
  change in a future version of the compiler.
  
! If your application requires that all accesses to @code{RV} in this
  example be full 32-bit loads, you need to make a copy for the access
  as in:
  
*************** such synchronization code is not require
*** 21718,21724 ****
  useful to disable it.
  
  @node Passive Task Optimization,,Atomic Variables and Optimization,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution id41}@anchor{1b3}@anchor{gnat_ugn/gnat_and_program_execution passive-task-optimization}@anchor{1b4}
  @subsubsection Passive Task Optimization
  
  
--- 21939,21945 ----
  useful to disable it.
  
  @node Passive Task Optimization,,Atomic Variables and Optimization,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution id42}@anchor{1b5}@anchor{gnat_ugn/gnat_and_program_execution passive-task-optimization}@anchor{1b6}
  @subsubsection Passive Task Optimization
  
  
*************** that typically clients of the tasks who
*** 21763,21792 ****
  to be modified, only the task definition itself.
  
  @node Text_IO Suggestions,Reducing Size of Executables with Unused Subprogram/Data Elimination,Performance Considerations,Improving Performance
! @anchor{gnat_ugn/gnat_and_program_execution text-io-suggestions}@anchor{1b5}@anchor{gnat_ugn/gnat_and_program_execution id42}@anchor{1b6}
! @subsection @cite{Text_IO} Suggestions
  
  
  @geindex Text_IO and performance
  
! The @cite{Ada.Text_IO} package has fairly high overheads due in part to
  the requirement of maintaining page and line counts. If performance
! is critical, a recommendation is to use @cite{Stream_IO} instead of
! @cite{Text_IO} for volume output, since this package has less overhead.
  
! If @cite{Text_IO} must be used, note that by default output to the standard
  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 @cite{Text_IO} and
  performance is an important factor, use a designated file instead
  of the standard output file, or change the standard output file to
! be buffered using @cite{Interfaces.C_Streams.setvbuf}.
  
  @node Reducing Size of Executables with Unused Subprogram/Data Elimination,,Text_IO Suggestions,Improving Performance
! @anchor{gnat_ugn/gnat_and_program_execution id43}@anchor{1b7}@anchor{gnat_ugn/gnat_and_program_execution reducing-size-of-executables-with-unused-subprogram-data-elimination}@anchor{1b8}
  @subsection Reducing Size of Executables with Unused Subprogram/Data Elimination
  
  
--- 21984,22013 ----
  to be modified, only the task definition itself.
  
  @node Text_IO Suggestions,Reducing Size of Executables with Unused Subprogram/Data Elimination,Performance Considerations,Improving Performance
! @anchor{gnat_ugn/gnat_and_program_execution text-io-suggestions}@anchor{1b7}@anchor{gnat_ugn/gnat_and_program_execution id43}@anchor{1b8}
! @subsection @code{Text_IO} Suggestions
  
  
  @geindex Text_IO and performance
  
! The @code{Ada.Text_IO} package has fairly high overheads due in part to
  the requirement of maintaining page and line counts. If performance
! is critical, a recommendation is to use @code{Stream_IO} instead of
! @code{Text_IO} for volume output, since this package has less overhead.
  
! If @code{Text_IO} must be used, note that by default output to the standard
  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
  of the standard output file, or change the standard output file to
! be buffered using @code{Interfaces.C_Streams.setvbuf}.
  
  @node Reducing Size of Executables with Unused Subprogram/Data Elimination,,Text_IO Suggestions,Improving Performance
! @anchor{gnat_ugn/gnat_and_program_execution id44}@anchor{1b9}@anchor{gnat_ugn/gnat_and_program_execution reducing-size-of-executables-with-unused-subprogram-data-elimination}@anchor{1ba}
  @subsection Reducing Size of Executables with Unused Subprogram/Data Elimination
  
  
*************** your executable just by setting options
*** 21803,21809 ****
  @end menu
  
  @node About unused subprogram/data elimination,Compilation options,,Reducing Size of Executables with Unused Subprogram/Data Elimination
! @anchor{gnat_ugn/gnat_and_program_execution id44}@anchor{1b9}@anchor{gnat_ugn/gnat_and_program_execution about-unused-subprogram-data-elimination}@anchor{1ba}
  @subsubsection About unused subprogram/data elimination
  
  
--- 22024,22030 ----
  @end menu
  
  @node About unused subprogram/data elimination,Compilation options,,Reducing Size of Executables with Unused Subprogram/Data Elimination
! @anchor{gnat_ugn/gnat_and_program_execution id45}@anchor{1bb}@anchor{gnat_ugn/gnat_and_program_execution about-unused-subprogram-data-elimination}@anchor{1bc}
  @subsubsection About unused subprogram/data elimination
  
  
*************** architecture and on all cross platforms
*** 21819,21825 ****
  In both cases GNU binutils version 2.16 or later are required to enable it.
  
  @node Compilation options,Example of unused subprogram/data elimination,About unused subprogram/data elimination,Reducing Size of Executables with Unused Subprogram/Data Elimination
! @anchor{gnat_ugn/gnat_and_program_execution id45}@anchor{1bb}@anchor{gnat_ugn/gnat_and_program_execution compilation-options}@anchor{1bc}
  @subsubsection Compilation options
  
  
--- 22040,22046 ----
  In both cases GNU binutils version 2.16 or later are required to enable it.
  
  @node Compilation options,Example of unused subprogram/data elimination,About unused subprogram/data elimination,Reducing Size of Executables with Unused Subprogram/Data Elimination
! @anchor{gnat_ugn/gnat_and_program_execution id46}@anchor{1bd}@anchor{gnat_ugn/gnat_and_program_execution compilation-options}@anchor{1be}
  @subsubsection Compilation options
  
  
*************** is directly performed by the linker.
*** 21832,21838 ****
  
  In order to do this, it has to work with objects compiled with the
  following options:
! @emph{-ffunction-sections} @emph{-fdata-sections}.
  
  These options are usable with C and Ada files.
  They will place respectively each
--- 22053,22059 ----
  
  In order to do this, it has to work with objects compiled with the
  following options:
! @code{-ffunction-sections} @code{-fdata-sections}.
  
  These options are usable with C and Ada files.
  They will place respectively each
*************** function or data in a separate section i
*** 21840,21855 ****
  
  Once the objects and static libraries are created with these options, the
  linker can perform the dead code elimination. You can do this by setting
! the @emph{-Wl,--gc-sections} option to gcc command or in the
! @emph{-largs} section of @emph{gnatmake}. This will perform a
  garbage collection of code and data never referenced.
  
! If the linker performs a partial link (@emph{-r} linker option), then you
! will need to provide the entry point using the @emph{-e} / @emph{--entry}
  linker option.
  
! Note that objects compiled without the @emph{-ffunction-sections} and
! @emph{-fdata-sections} options can still be linked with the executable.
  However, no dead code elimination will be performed on those objects (they will
  be linked as is).
  
--- 22061,22076 ----
  
  Once the objects and static libraries are created with these options, the
  linker can perform the dead code elimination. You can do this by setting
! the @code{-Wl,--gc-sections} option to gcc command or in the
! @code{-largs} section of @code{gnatmake}. This will perform a
  garbage collection of code and data never referenced.
  
! If the linker performs a partial link (@code{-r} linker option), then you
! will need to provide the entry point using the @code{-e} / @code{--entry}
  linker option.
  
! Note that objects compiled without the @code{-ffunction-sections} and
! @code{-fdata-sections} options can still be linked with the executable.
  However, no dead code elimination will be performed on those objects (they will
  be linked as is).
  
*************** The GNAT static library is now compiled
*** 21858,21864 ****
  and data of the GNAT library from your executable.
  
  @node Example of unused subprogram/data elimination,,Compilation options,Reducing Size of Executables with Unused Subprogram/Data Elimination
! @anchor{gnat_ugn/gnat_and_program_execution id46}@anchor{1bd}@anchor{gnat_ugn/gnat_and_program_execution example-of-unused-subprogram-data-elimination}@anchor{1be}
  @subsubsection Example of unused subprogram/data elimination
  
  
--- 22079,22085 ----
  and data of the GNAT library from your executable.
  
  @node Example of unused subprogram/data elimination,,Compilation options,Reducing Size of Executables with Unused Subprogram/Data Elimination
! @anchor{gnat_ugn/gnat_and_program_execution id47}@anchor{1bf}@anchor{gnat_ugn/gnat_and_program_execution example-of-unused-subprogram-data-elimination}@anchor{1c0}
  @subsubsection Example of unused subprogram/data elimination
  
  
*************** end Aux;
*** 21896,21902 ****
  @end example
  @end quotation
  
! @cite{Unused} and @cite{Unused_Data} are never referenced in this code
  excerpt, and hence they may be safely removed from the final executable.
  
  @quotation
--- 22117,22123 ----
  @end example
  @end quotation
  
! @code{Unused} and @code{Unused_Data} are never referenced in this code
  excerpt, and hence they may be safely removed from the final executable.
  
  @quotation
*************** $ nm test | grep used
*** 21919,21926 ****
  @end example
  @end quotation
  
! It can be observed that the procedure @cite{Unused} and the object
! @cite{Unused_Data} are removed by the linker when using the
  appropriate options.
  
  @geindex Overflow checks
--- 22140,22147 ----
  @end example
  @end quotation
  
! It can be observed that the procedure @code{Unused} and the object
! @code{Unused_Data} are removed by the linker when using the
  appropriate options.
  
  @geindex Overflow checks
*************** appropriate options.
*** 21929,21935 ****
  
  
  @node Overflow Check Handling in GNAT,Performing Dimensionality Analysis in GNAT,Improving Performance,GNAT and Program Execution
! @anchor{gnat_ugn/gnat_and_program_execution id54}@anchor{16a}@anchor{gnat_ugn/gnat_and_program_execution overflow-check-handling-in-gnat}@anchor{27}
  @section Overflow Check Handling in GNAT
  
  
--- 22150,22156 ----
  
  
  @node Overflow Check Handling in GNAT,Performing Dimensionality Analysis in GNAT,Improving Performance,GNAT and Program Execution
! @anchor{gnat_ugn/gnat_and_program_execution id55}@anchor{16a}@anchor{gnat_ugn/gnat_and_program_execution overflow-check-handling-in-gnat}@anchor{27}
  @section Overflow Check Handling in GNAT
  
  
*************** This section explains how to control the
*** 21945,21951 ****
  @end menu
  
  @node Background,Management of Overflows in GNAT,,Overflow Check Handling in GNAT
! @anchor{gnat_ugn/gnat_and_program_execution id55}@anchor{1bf}@anchor{gnat_ugn/gnat_and_program_execution background}@anchor{1c0}
  @subsection Background
  
  
--- 22166,22172 ----
  @end menu
  
  @node Background,Management of Overflows in GNAT,,Overflow Check Handling in GNAT
! @anchor{gnat_ugn/gnat_and_program_execution id56}@anchor{1c1}@anchor{gnat_ugn/gnat_and_program_execution background}@anchor{1c2}
  @subsection Background
  
  
*************** A := A + 1;
*** 21961,21969 ****
  @end example
  @end quotation
  
! If @cite{A} has the value @cite{Integer'Last}, then the addition may cause
! overflow since the result is out of range of the type @cite{Integer}.
! In this case @cite{Constraint_Error} will be raised if checks are
  enabled.
  
  A trickier situation arises in examples like the following:
--- 22182,22190 ----
  @end example
  @end quotation
  
! If @code{A} has the value @code{Integer'Last}, then the addition may cause
! overflow since the result is out of range of the type @code{Integer}.
! In this case @code{Constraint_Error} will be raised if checks are
  enabled.
  
  A trickier situation arises in examples like the following:
*************** A := (A + 1) + C;
*** 21977,21986 ****
  @end example
  @end quotation
  
! where @cite{A} is @cite{Integer'Last} and @cite{C} is @cite{-1}.
  Now the final result of the expression on the right hand side is
! @cite{Integer'Last} which is in range, but the question arises whether the
! intermediate addition of @cite{(A + 1)} raises an overflow error.
  
  The (perhaps surprising) answer is that the Ada language
  definition does not answer this question. Instead it leaves
--- 22198,22207 ----
  @end example
  @end quotation
  
! where @code{A} is @code{Integer'Last} and @code{C} is @code{-1}.
  Now the final result of the expression on the right hand side is
! @code{Integer'Last} which is in range, but the question arises whether the
! intermediate addition of @code{(A + 1)} raises an overflow error.
  
  The (perhaps surprising) answer is that the Ada language
  definition does not answer this question. Instead it leaves
*************** checks are enabled.
*** 21991,21997 ****
  @itemize *
  
  @item 
! raise an exception (@cite{Constraint_Error}), or
  
  @item 
  yield the correct mathematical result which is then used in
--- 22212,22218 ----
  @itemize *
  
  @item 
! raise an exception (@code{Constraint_Error}), or
  
  @item 
  yield the correct mathematical result which is then used in
*************** subsequent operations.
*** 21999,22005 ****
  @end itemize
  
  If the compiler chooses the first approach, then the assignment of this
! example will indeed raise @cite{Constraint_Error} if overflow checking is
  enabled, or result in erroneous execution if overflow checks are suppressed.
  
  But if the compiler
--- 22220,22226 ----
  @end itemize
  
  If the compiler chooses the first approach, then the assignment of this
! example will indeed raise @code{Constraint_Error} if overflow checking is
  enabled, or result in erroneous execution if overflow checks are suppressed.
  
  But if the compiler
*************** procedure P (A, B : Integer) with
*** 22035,22049 ****
  
  One often wants to regard arithmetic in a context like this from
  a mathematical point of view. So for example, if the two actual parameters
! for a call to @cite{P} are both @cite{Integer'Last}, then
  the precondition should be regarded as False. If we are executing
  in a mode with run-time checks enabled for preconditions, then we would
  like this precondition to fail, rather than raising an exception
  because of the intermediate overflow.
  
  However, the language definition leaves the specification of
! whether the above condition fails (raising @cite{Assert_Error}) or
! causes an intermediate overflow (raising @cite{Constraint_Error})
  up to the implementation.
  
  The situation is worse in a case such as the following:
--- 22256,22270 ----
  
  One often wants to regard arithmetic in a context like this from
  a mathematical point of view. So for example, if the two actual parameters
! for a call to @code{P} are both @code{Integer'Last}, then
  the precondition should be regarded as False. If we are executing
  in a mode with run-time checks enabled for preconditions, then we would
  like this precondition to fail, rather than raising an exception
  because of the intermediate overflow.
  
  However, the language definition leaves the specification of
! whether the above condition fails (raising @code{Assert_Error}) or
! causes an intermediate overflow (raising @code{Constraint_Error})
  up to the implementation.
  
  The situation is worse in a case such as the following:
*************** exception raised because of the intermed
*** 22071,22077 ****
  would prefer this precondition to be considered True at run time).
  
  @node Management of Overflows in GNAT,Specifying the Desired Mode,Background,Overflow Check Handling in GNAT
! @anchor{gnat_ugn/gnat_and_program_execution id56}@anchor{1c1}@anchor{gnat_ugn/gnat_and_program_execution management-of-overflows-in-gnat}@anchor{1c2}
  @subsection Management of Overflows in GNAT
  
  
--- 22292,22298 ----
  would prefer this precondition to be considered True at run time).
  
  @node Management of Overflows in GNAT,Specifying the Desired Mode,Background,Overflow Check Handling in GNAT
! @anchor{gnat_ugn/gnat_and_program_execution id57}@anchor{1c3}@anchor{gnat_ugn/gnat_and_program_execution management-of-overflows-in-gnat}@anchor{1c4}
  @subsection Management of Overflows in GNAT
  
  
*************** The three modes are:
*** 22090,22096 ****
  @itemize *
  
  @item 
! @emph{Use base type for intermediate operations} (@cite{STRICT})
  
  In this mode, all intermediate results for predefined arithmetic
  operators are computed using the base type, and the result must
--- 22311,22317 ----
  @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
*************** enabled) or the execution is erroneous (
*** 22100,22109 ****
  This is the normal default mode.
  
  @item 
! @emph{Most intermediate overflows avoided} (@cite{MINIMIZED})
  
  In this mode, the compiler attempts to avoid intermediate overflows by
! using a larger integer type, typically @cite{Long_Long_Integer},
  as the type in which arithmetic is
  performed for predefined arithmetic operators. This may be slightly more
  expensive at
--- 22321,22330 ----
  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},
  as the type in which arithmetic is
  performed for predefined arithmetic operators. This may be slightly more
  expensive at
*************** run time (compared to suppressing interm
*** 22111,22122 ****
  the cost is negligible on modern 64-bit machines. For the examples given
  earlier, no intermediate overflows would have resulted in exceptions,
  since the intermediate results are all in the range of
! @cite{Long_Long_Integer} (typically 64-bits on nearly all implementations
  of GNAT). In addition, if checks are enabled, this reduces the number of
  checks that must be made, so this choice may actually result in an
  improvement in space and time behavior.
  
! However, there are cases where @cite{Long_Long_Integer} is not large
  enough, consider the following example:
  
  @quotation
--- 22332,22343 ----
  the cost is negligible on modern 64-bit machines. For the examples given
  earlier, no intermediate overflows would have resulted in exceptions,
  since the intermediate results are all in the range of
! @code{Long_Long_Integer} (typically 64-bits on nearly all implementations
  of GNAT). In addition, if checks are enabled, this reduces the number of
  checks that must be made, so this choice may actually result in an
  improvement in space and time behavior.
  
! However, there are cases where @code{Long_Long_Integer} is not large
  enough, consider the following example:
  
  @quotation
*************** procedure R (A, B, C, D : Integer) with
*** 22127,22135 ****
  @end example
  @end quotation
  
! where @cite{A} = @cite{B} = @cite{C} = @cite{D} = @cite{Integer'Last}.
  Now the intermediate results are
! out of the range of @cite{Long_Long_Integer} even though the final result
  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
--- 22348,22356 ----
  @end example
  @end quotation
  
! where @code{A} = @code{B} = @code{C} = @code{D} = @code{Integer'Last}.
  Now the intermediate results are
! out of the range of @code{Long_Long_Integer} even though the final result
  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
*************** an exception is raised if overflow check
*** 22138,22148 ****
  execution is erroneous if overflow checks are suppressed.
  
  @item 
! @emph{All intermediate overflows avoided} (@cite{ELIMINATED})
  
  In this mode, the compiler  avoids all intermediate overflows
  by using arbitrary precision arithmetic as required. In this
! mode, the above example with @cite{A**2 * B**2} would
  not cause intermediate overflow, because the intermediate result
  would be evaluated using sufficient precision, and the result
  of evaluating the precondition would be True.
--- 22359,22369 ----
  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
! mode, the above example with @code{A**2 * B**2} would
  not cause intermediate overflow, because the intermediate result
  would be evaluated using sufficient precision, and the result
  of evaluating the precondition would be True.
*************** run-time behavior.
*** 22161,22168 ****
  Note that in this mode, the behavior is unaffected by whether or
  not overflow checks are suppressed, since overflow does not occur.
  It is possible for gigantic intermediate expressions to raise
! @cite{Storage_Error} as a result of attempting to compute the
! results of such expressions (e.g. @cite{Integer'Last ** Integer'Last})
  but overflow is impossible.
  @end itemize
  
--- 22382,22389 ----
  Note that in this mode, the behavior is unaffected by whether or
  not overflow checks are suppressed, since overflow does not occur.
  It is possible for gigantic intermediate expressions to raise
! @code{Storage_Error} as a result of attempting to compute the
! results of such expressions (e.g. @code{Integer'Last ** Integer'Last})
  but overflow is impossible.
  @end itemize
  
*************** For fixed-point arithmetic, checks can b
*** 22174,22182 ****
  are enabled
  then fixed-point values are always checked for overflow against the
  base type for intermediate expressions (that is such checks always
! operate in the equivalent of @cite{STRICT} mode).
  
! For floating-point, on nearly all architectures, @cite{Machine_Overflows}
  is False, and IEEE infinities are generated, so overflow exceptions
  are never raised. If you want to avoid infinities, and check that
  final results of expressions are in range, then you can declare a
--- 22395,22403 ----
  are enabled
  then fixed-point values are always checked for overflow against the
  base type for intermediate expressions (that is such checks always
! operate in the equivalent of @code{STRICT} mode).
  
! For floating-point, on nearly all architectures, @code{Machine_Overflows}
  is False, and IEEE infinities are generated, so overflow exceptions
  are never raised. If you want to avoid infinities, and check that
  final results of expressions are in range, then you can declare a
*************** out in the normal manner (with infinite
*** 22185,22198 ****
  range checks).
  
  @node Specifying the Desired Mode,Default Settings,Management of Overflows in GNAT,Overflow Check Handling in GNAT
! @anchor{gnat_ugn/gnat_and_program_execution specifying-the-desired-mode}@anchor{f8}@anchor{gnat_ugn/gnat_and_program_execution id57}@anchor{1c3}
  @subsection Specifying the Desired Mode
  
  
  @geindex pragma Overflow_Mode
  
  The desired mode of for handling intermediate overflow can be specified using
! either the @cite{Overflow_Mode} pragma or an equivalent compiler switch.
  The pragma has the form
  
  @quotation
--- 22406,22419 ----
  range checks).
  
  @node Specifying the Desired Mode,Default Settings,Management of Overflows in GNAT,Overflow Check Handling in GNAT
! @anchor{gnat_ugn/gnat_and_program_execution specifying-the-desired-mode}@anchor{f8}@anchor{gnat_ugn/gnat_and_program_execution id58}@anchor{1c5}
  @subsection Specifying the Desired Mode
  
  
  @geindex pragma Overflow_Mode
  
  The desired mode of for handling intermediate overflow can be specified using
! either the @code{Overflow_Mode} pragma or an equivalent compiler switch.
  The pragma has the form
  
  @quotation
*************** pragma Overflow_Mode ([General =>] MODE
*** 22202,22230 ****
  @end example
  @end quotation
  
! where @cite{MODE} is one of
  
  
  @itemize *
  
  @item 
! @cite{STRICT}:  intermediate overflows checked (using base type)
  
  @item 
! @cite{MINIMIZED}: minimize intermediate overflows
  
  @item 
! @cite{ELIMINATED}: eliminate intermediate overflows
  @end itemize
  
! The case is ignored, so @cite{MINIMIZED}, @cite{Minimized} and
! @cite{minimized} all have the same effect.
  
! If only the @cite{General} parameter is present, then the given @cite{MODE}
! applies
  to expressions both within and outside assertions. If both arguments
! are present, then @cite{General} applies to expressions outside assertions,
! and @cite{Assertions} applies to expressions within assertions. For example:
  
  @quotation
  
--- 22423,22450 ----
  @end example
  @end quotation
  
! where @code{MODE} is one of
  
  
  @itemize *
  
  @item 
! @code{STRICT}:  intermediate overflows checked (using base type)
  
  @item 
! @code{MINIMIZED}: minimize intermediate overflows
  
  @item 
! @code{ELIMINATED}: eliminate intermediate overflows
  @end itemize
  
! The case is ignored, so @code{MINIMIZED}, @code{Minimized} and
! @code{minimized} all have the same effect.
  
! If only the @code{General} parameter is present, then the given @code{MODE} applies
  to expressions both within and outside assertions. If both arguments
! are present, then @code{General} applies to expressions outside assertions,
! and @code{Assertions} applies to expressions within assertions. For example:
  
  @quotation
  
*************** the extra overhead for assertion express
*** 22244,22266 ****
  the behavior at run time matches the expected mathematical
  behavior.
  
! The @cite{Overflow_Mode} pragma has the same scoping and placement
! rules as pragma @cite{Suppress}, so it can occur either as a
  configuration pragma, specifying a default for the whole
  program, or in a declarative scope, where it applies to the
  remaining declarations and statements in that scope.
  
! Note that pragma @cite{Overflow_Mode} does not affect whether
  overflow checks are enabled or suppressed. It only controls the
  method used to compute intermediate values. To control whether
! overflow checking is enabled or suppressed, use pragma @cite{Suppress}
! or @cite{Unsuppress} in the usual manner
  
  @geindex -gnato? (gcc)
  
  @geindex -gnato?? (gcc)
  
! Additionally, a compiler switch @emph{-gnato?} or @emph{-gnato??}
  can be used to control the checking mode default (which can be subsequently
  overridden using pragmas).
  
--- 22464,22486 ----
  the behavior at run time matches the expected mathematical
  behavior.
  
! The @code{Overflow_Mode} pragma has the same scoping and placement
! rules as pragma @code{Suppress}, so it can occur either as a
  configuration pragma, specifying a default for the whole
  program, or in a declarative scope, where it applies to the
  remaining declarations and statements in that scope.
  
! Note that pragma @code{Overflow_Mode} does not affect whether
  overflow checks are enabled or suppressed. It only controls the
  method used to compute intermediate values. To control whether
! overflow checking is enabled or suppressed, use pragma @code{Suppress}
! or @code{Unsuppress} in the usual manner.
  
  @geindex -gnato? (gcc)
  
  @geindex -gnato?? (gcc)
  
! Additionally, a compiler switch @code{-gnato?} or @code{-gnato??}
  can be used to control the checking mode default (which can be subsequently
  overridden using pragmas).
  
*************** Here @code{?} is one of the digits @code
*** 22269,22282 ****
  @quotation
  
  
! @multitable {xxxxxxxx} {xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx} 
  @item
  
  @code{1}
  
  @tab
  
! use base type for intermediate operations (@cite{STRICT})
  
  @item
  
--- 22489,22502 ----
  @quotation
  
  
! @multitable {xxxxxxxx} {xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx} 
  @item
  
  @code{1}
  
  @tab
  
! use base type for intermediate operations (@code{STRICT})
  
  @item
  
*************** use base type for intermediate operation
*** 22284,22290 ****
  
  @tab
  
! minimize intermediate overflows (@cite{MINIMIZED})
  
  @item
  
--- 22504,22510 ----
  
  @tab
  
! minimize intermediate overflows (@code{MINIMIZED})
  
  @item
  
*************** minimize intermediate overflows (@cite{M
*** 22292,22298 ****
  
  @tab
  
! eliminate intermediate overflows (@cite{ELIMINATED})
  
  @end multitable
  
--- 22512,22518 ----
  
  @tab
  
! eliminate intermediate overflows (@code{ELIMINATED})
  
  @end multitable
  
*************** As with the pragma, if only one digit ap
*** 22302,22316 ****
  cases; if two digits are given, then the first applies outside
  assertions, and the second within assertions. Thus the equivalent
  of the example pragma above would be
! @emph{-gnato23}.
  
! If no digits follow the @emph{-gnato}, then it is equivalent to
! @emph{-gnato11},
  causing all intermediate operations to be computed using the base
! type (@cite{STRICT} mode).
  
  @node Default Settings,Implementation Notes,Specifying the Desired Mode,Overflow Check Handling in GNAT
! @anchor{gnat_ugn/gnat_and_program_execution id58}@anchor{1c4}@anchor{gnat_ugn/gnat_and_program_execution default-settings}@anchor{1c5}
  @subsection Default Settings
  
  
--- 22522,22536 ----
  cases; if two digits are given, then the first applies outside
  assertions, and the second within assertions. Thus the equivalent
  of the example pragma above would be
! @code{-gnato23}.
  
! If no digits follow the @code{-gnato}, then it is equivalent to
! @code{-gnato11},
  causing all intermediate operations to be computed using the base
! type (@code{STRICT} mode).
  
  @node Default Settings,Implementation Notes,Specifying the Desired Mode,Overflow Check Handling in GNAT
! @anchor{gnat_ugn/gnat_and_program_execution id59}@anchor{1c6}@anchor{gnat_ugn/gnat_and_program_execution default-settings}@anchor{1c7}
  @subsection Default Settings
  
  
*************** used the base type for computation of in
*** 22335,22341 ****
  
  The 
  @geindex -gnato (gcc)
! switch @emph{-gnato} (with no digits following)
  is equivalent to
  
  @quotation
--- 22555,22561 ----
  
  The 
  @geindex -gnato (gcc)
! switch @code{-gnato} (with no digits following)
  is equivalent to
  
  @quotation
*************** General => Strict
*** 22348,22372 ****
  which causes overflow checking of all intermediate overflows
  both inside and outside assertions against the base type.
  
! The pragma @cite{Suppress (Overflow_Check)} disables overflow
  checking, but it has no effect on the method used for computing
  intermediate results.
  
! The pragma @cite{Unsuppress (Overflow_Check)} enables overflow
  checking, but it has no effect on the method used for computing
  intermediate results.
  
  @node Implementation Notes,,Default Settings,Overflow Check Handling in GNAT
! @anchor{gnat_ugn/gnat_and_program_execution implementation-notes}@anchor{1c6}@anchor{gnat_ugn/gnat_and_program_execution id59}@anchor{1c7}
  @subsection Implementation Notes
  
  
! In practice on typical 64-bit machines, the @cite{MINIMIZED} mode is
  reasonably efficient, and can be generally used. It also helps
  to ensure compatibility with code imported from some other
  compiler to GNAT.
  
! Setting all intermediate overflows checking (@cite{CHECKED} mode)
  makes sense if you want to
  make sure that your code is compatible with any other possible
  Ada implementation. This may be useful in ensuring portability
--- 22568,22592 ----
  which causes overflow checking of all intermediate overflows
  both inside and outside assertions against the base type.
  
! The pragma @code{Suppress (Overflow_Check)} disables overflow
  checking, but it has no effect on the method used for computing
  intermediate results.
  
! The pragma @code{Unsuppress (Overflow_Check)} enables overflow
  checking, but it has no effect on the method used for computing
  intermediate results.
  
  @node Implementation Notes,,Default Settings,Overflow Check Handling in GNAT
! @anchor{gnat_ugn/gnat_and_program_execution implementation-notes}@anchor{1c8}@anchor{gnat_ugn/gnat_and_program_execution id60}@anchor{1c9}
  @subsection Implementation Notes
  
  
! In practice on typical 64-bit machines, the @code{MINIMIZED} mode is
  reasonably efficient, and can be generally used. It also helps
  to ensure compatibility with code imported from some other
  compiler to GNAT.
  
! Setting all intermediate overflows checking (@code{CHECKED} mode)
  makes sense if you want to
  make sure that your code is compatible with any other possible
  Ada implementation. This may be useful in ensuring portability
*************** for code that is to be exported to some
*** 22374,22411 ****
  
  The Ada standard allows the reassociation of expressions at
  the same precedence level if no parentheses are present. For
! example, @cite{A+B+C} parses as though it were @cite{(A+B)+C}, but
! the compiler can reintepret this as @cite{A+(B+C)}, possibly
  introducing or eliminating an overflow exception. The GNAT
  compiler never takes advantage of this freedom, and the
! expression @cite{A+B+C} will be evaluated as @cite{(A+B)+C}.
  If you need the other order, you can write the parentheses
! explicitly @cite{A+(B+C)} and GNAT will respect this order.
  
! The use of @cite{ELIMINATED} mode will cause the compiler to
  automatically include an appropriate arbitrary precision
  integer arithmetic package. The compiler will make calls
  to this package, though only in cases where it cannot be
! sure that @cite{Long_Long_Integer} is sufficient to guard against
  intermediate overflows. This package does not use dynamic
  alllocation, but it does use the secondary stack, so an
  appropriate secondary stack package must be present (this
  is always true for standard full Ada, but may require
  specific steps for restricted run times such as ZFP).
  
! Although @cite{ELIMINATED} mode causes expressions to use arbitrary
  precision arithmetic, avoiding overflow, the final result
  must be in an appropriate range. This is true even if the
! final result is of type @cite{[Long_[Long_]]Integer'Base}, which
  still has the same bounds as its associated constrained
  type at run-time.
  
! Currently, the @cite{ELIMINATED} mode is only available on target
! platforms for which @cite{Long_Long_Integer} is 64-bits (nearly all GNAT
  platforms).
  
  @node Performing Dimensionality Analysis in GNAT,Stack Related Facilities,Overflow Check Handling in GNAT,GNAT and Program Execution
! @anchor{gnat_ugn/gnat_and_program_execution performing-dimensionality-analysis-in-gnat}@anchor{28}@anchor{gnat_ugn/gnat_and_program_execution id60}@anchor{16b}
  @section Performing Dimensionality Analysis in GNAT
  
  
--- 22594,22631 ----
  
  The Ada standard allows the reassociation of expressions at
  the same precedence level if no parentheses are present. For
! example, @code{A+B+C} parses as though it were @code{(A+B)+C}, but
! the compiler can reintepret this as @code{A+(B+C)}, possibly
  introducing or eliminating an overflow exception. The GNAT
  compiler never takes advantage of this freedom, and the
! expression @code{A+B+C} will be evaluated as @code{(A+B)+C}.
  If you need the other order, you can write the parentheses
! explicitly @code{A+(B+C)} and GNAT will respect this order.
  
! The use of @code{ELIMINATED} mode will cause the compiler to
  automatically include an appropriate arbitrary precision
  integer arithmetic package. The compiler will make calls
  to this package, though only in cases where it cannot be
! sure that @code{Long_Long_Integer} is sufficient to guard against
  intermediate overflows. This package does not use dynamic
  alllocation, but it does use the secondary stack, so an
  appropriate secondary stack package must be present (this
  is always true for standard full Ada, but may require
  specific steps for restricted run times such as ZFP).
  
! Although @code{ELIMINATED} mode causes expressions to use arbitrary
  precision arithmetic, avoiding overflow, the final result
  must be in an appropriate range. This is true even if the
! final result is of type @code{[Long_[Long_]]Integer'Base}, which
  still has the same bounds as its associated constrained
  type at run-time.
  
! Currently, the @code{ELIMINATED} mode is only available on target
! platforms for which @code{Long_Long_Integer} is 64-bits (nearly all GNAT
  platforms).
  
  @node Performing Dimensionality Analysis in GNAT,Stack Related Facilities,Overflow Check Handling in GNAT,GNAT and Program Execution
! @anchor{gnat_ugn/gnat_and_program_execution id61}@anchor{16b}@anchor{gnat_ugn/gnat_and_program_execution performing-dimensionality-analysis-in-gnat}@anchor{28}
  @section Performing Dimensionality Analysis in GNAT
  
  
*************** familiar to engineering practice. The di
*** 22423,22430 ****
  
  This feature depends on Ada 2012 aspect specifications, and is available from
  version 7.0.1 of GNAT onwards.
! The GNAT-specific aspect @cite{Dimension_System}
! allows you to define a system of units; the aspect @cite{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}).
--- 22643,22650 ----
  
  This feature depends on Ada 2012 aspect specifications, and is available from
  version 7.0.1 of GNAT onwards.
! 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}).
*************** to use the proper subtypes in object dec
*** 22438,22446 ****
  @geindex MKS_Type type
  
  The simplest way to impose dimensionality checking on a computation is to make
! use of the package @cite{System.Dim.Mks},
  which is part of the GNAT library. This
! package defines a floating-point type @cite{MKS_Type},
  for which a sequence of
  dimension names are specified, together with their conventional abbreviations.
  The following should be read together with the full specification of the
--- 22658,22666 ----
  @geindex MKS_Type type
  
  The simplest way to impose dimensionality checking on a computation is to make
! use of the package @code{System.Dim.Mks},
  which is part of the GNAT library. This
! package defines a floating-point type @code{MKS_Type},
  for which a sequence of
  dimension names are specified, together with their conventional abbreviations.
  The following should be read together with the full specification of the
*************** subtype Length is Mks_Type
*** 22476,22496 ****
  @end example
  @end quotation
  
! and similarly for @cite{Mass}, @cite{Time}, @cite{Electric_Current},
! @cite{Thermodynamic_Temperature}, @cite{Amount_Of_Substance}, and
! @cite{Luminous_Intensity} (the standard set of units of the SI system).
  
  The package also defines conventional names for values of each unit, for
  example:
  
  @quotation
  
! @c code-block":: ada
! @c 
! @c m   : constant Length           := 1.0;
! @c kg  : constant Mass             := 1.0;
! @c s   : constant Time             := 1.0;
! @c A   : constant Electric_Current := 1.0;
  @end quotation
  
  as well as useful multiples of these units:
--- 22696,22716 ----
  @end example
  @end quotation
  
! and similarly for @code{Mass}, @code{Time}, @code{Electric_Current},
! @code{Thermodynamic_Temperature}, @code{Amount_Of_Substance}, and
! @code{Luminous_Intensity} (the standard set of units of the SI system).
  
  The package also defines conventional names for values of each unit, for
  example:
  
  @quotation
  
! @example
! m   : constant Length           := 1.0;
! kg  : constant Mass             := 1.0;
! s   : constant Time             := 1.0;
! A   : constant Electric_Current := 1.0;
! @end example
  @end quotation
  
  as well as useful multiples of these units:
*************** However, incorrect assignments such as:
*** 22564,22570 ****
  
  @example
  Distance := 5.0;
! Distance := 5.0 * kg:
  @end example
  @end quotation
  
--- 22784,22790 ----
  
  @example
  Distance := 5.0;
! Distance := 5.0 * kg;
  @end example
  @end quotation
  
*************** then the output includes:
*** 22604,22613 ****
  @example
  Final velocity: 98.10 m.s**(-1)
  @end example
  @end quotation
  
  @node Stack Related Facilities,Memory Management Issues,Performing Dimensionality Analysis in GNAT,GNAT and Program Execution
! @anchor{gnat_ugn/gnat_and_program_execution id61}@anchor{16c}@anchor{gnat_ugn/gnat_and_program_execution stack-related-facilities}@anchor{29}
  @section Stack Related Facilities
  
  
--- 22824,23004 ----
  @example
  Final velocity: 98.10 m.s**(-1)
  @end example
+ 
+ @geindex Dimensionable type
+ 
+ @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
+ 
+ @geindex Dimension Vector (for a dimensioned subtype)
+ 
+ @geindex Dimension aspect
+ 
+ @geindex Dimension_System aspect
+ @end quotation
+ 
+ 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:
+ 
+ @quotation
+ 
+ @example
+ declare
+    Acc : Acceleration;
+    ...
+ begin
+    ...
+ end;
+ @end example
+ @end quotation
+ 
+ Here @code{DV(Acc)} = @code{DV(Acceleration)} =
+ @code{(Meter=>1, Kilogram=>0, Second=>-2, Ampere=>0, Kelvin=>0, Mole=>0, Candela=>0)}.
+ Symbolically, we can express this as @code{Meter / Second**2}.
+ 
+ The dimension vector of an arithmetic expression is synthesized from the
+ dimension vectors of its components, with compile-time dimensionality checks
+ 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
+ 
+ Note that, by the above rules, it is illegal to use binary "+" or "-" to
+ combine a dimensioned and dimensionless value.  Thus an expression such as
+ @code{acc-10.0} is illegal, where @code{acc} is an object of subtype
+ @code{Acceleration}.
+ 
+ The dimensionality checks for relationals use the same rules as
+ for "+" and "-", except when comparing to a literal; thus
+ 
+ @quotation
+ 
+ @example
+ acc > len
+ @end example
+ @end quotation
+ 
+ is equivalent to
+ 
+ @quotation
+ 
+ @example
+ acc-len > 0.0
+ @end example
+ @end quotation
+ 
+ and is thus illegal, but
+ 
+ @quotation
+ 
+ @example
+ acc > 10.0
+ @end example
+ @end quotation
+ 
+ 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.
+ 
+ As a consequence of the above rule, it is possible to convert between
+ different dimension systems that follow the same international system
+ of units, with the seven physical components given in the standard order
+ (length, mass, time, etc.). Thus a length in meters can be converted to
+ a length in inches (with a suitable conversion factor) but cannot be
+ 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
+ with compatible dimensioned subtypes.  The generic unit will contain
+ conversions that will consequently be present in instantiations, but
+ conversions to the base type will preserve dimensionality and make it
+ possible to write generic code that is correct with respect to
+ dimensionality.
+ 
+ @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
+ 
+ @quotation
+ 
+ @example
+ Source := Target;
+ @end example
  @end quotation
  
+ requires @code{DV(Source)} = @code{DV(Target)}, and analogously for parameter
+ passing (the dimension vector for the actual parameter must be equal to the
+ dimension vector for the formal parameter).
+ 
  @node Stack Related Facilities,Memory Management Issues,Performing Dimensionality Analysis in GNAT,GNAT and Program Execution
! @anchor{gnat_ugn/gnat_and_program_execution stack-related-facilities}@anchor{29}@anchor{gnat_ugn/gnat_and_program_execution id62}@anchor{16c}
  @section Stack Related Facilities
  
  
*************** particular, it deals with dynamic and st
*** 22623,22629 ****
  @end menu
  
  @node Stack Overflow Checking,Static Stack Usage Analysis,,Stack Related Facilities
! @anchor{gnat_ugn/gnat_and_program_execution id62}@anchor{1c8}@anchor{gnat_ugn/gnat_and_program_execution stack-overflow-checking}@anchor{f4}
  @subsection Stack Overflow Checking
  
  
--- 23014,23020 ----
  @end menu
  
  @node Stack Overflow Checking,Static Stack Usage Analysis,,Stack Related Facilities
! @anchor{gnat_ugn/gnat_and_program_execution id63}@anchor{1ca}@anchor{gnat_ugn/gnat_and_program_execution stack-overflow-checking}@anchor{f4}
  @subsection Stack Overflow Checking
  
  
*************** particular, it deals with dynamic and st
*** 22631,22637 ****
  
  @geindex -fstack-check (gcc)
  
! For most operating systems, @emph{gcc} does not perform stack overflow
  checking by default. This means that if the main environment task or
  some other task exceeds the available stack space, then unpredictable
  behavior will occur. Most native systems offer some level of protection by
--- 23022,23028 ----
  
  @geindex -fstack-check (gcc)
  
! For most operating systems, @code{gcc} does not perform stack overflow
  checking by default. This means that if the main environment task or
  some other task exceeds the available stack space, then unpredictable
  behavior will occur. Most native systems offer some level of protection by
*************** guard page is hit, there may not be any
*** 22643,22650 ****
  the exception propagation code. Enabling stack checking avoids
  such situations.
  
! To activate stack checking, compile all units with the gcc option
! @cite{-fstack-check}. For example:
  
  @quotation
  
--- 23034,23041 ----
  the exception propagation code. Enabling stack checking avoids
  such situations.
  
! To activate stack checking, compile all units with the @code{gcc} option
! @code{-fstack-check}. For example:
  
  @quotation
  
*************** $ gcc -c -fstack-check package1.adb
*** 22656,22698 ****
  Units compiled with this option will generate extra instructions to check
  that any use of the stack (for procedure calls or for declaring local
  variables in declare blocks) does not exceed the available stack space.
! If the space is exceeded, then a @cite{Storage_Error} exception is raised.
! 
! For declared tasks, the stack size is controlled by the size
! given in an applicable @cite{Storage_Size} pragma or by the value specified
! at bind time with @code{-d} (@ref{11f,,Switches for gnatbind}) or is set to
! the default size as defined in the GNAT runtime otherwise.
! 
! @geindex GNAT_STACK_LIMIT
! 
! For the environment task, the stack size depends on
! system defaults and is unknown to the compiler. Stack checking
! may still work correctly if a fixed
! size stack is allocated, but this cannot be guaranteed.
! To ensure that a clean exception is signalled for stack
! overflow, set the environment variable
! @geindex GNAT_STACK_LIMIT
! @geindex environment variable; GNAT_STACK_LIMIT
! @code{GNAT_STACK_LIMIT} to indicate the maximum
! stack area that can be used, as in:
! 
! @quotation
  
! @example
! $ SET GNAT_STACK_LIMIT 1600
! @end example
! @end quotation
  
! The limit is given in kilobytes, so the above declaration would
! set the stack limit of the environment task to 1.6 megabytes.
! Note that the only purpose of this usage is to limit the amount
! of stack used by the environment task. If it is necessary to
! increase the amount of stack for the environment task, then this
! is an operating systems issue, and must be addressed with the
! appropriate operating systems commands.
  
  @node Static Stack Usage Analysis,Dynamic Stack Usage Analysis,Stack Overflow Checking,Stack Related Facilities
! @anchor{gnat_ugn/gnat_and_program_execution static-stack-usage-analysis}@anchor{f5}@anchor{gnat_ugn/gnat_and_program_execution id63}@anchor{1c9}
  @subsection Static Stack Usage Analysis
  
  
--- 23047,23065 ----
  Units compiled with this option will generate extra instructions to check
  that any use of the stack (for procedure calls or for declaring local
  variables in declare blocks) does not exceed the available stack space.
! If the space is exceeded, then a @code{Storage_Error} exception is raised.
  
! For declared tasks, the default stack size is defined by the GNAT runtime,
! whose size may be modified at bind time through the @code{-d} bind switch
! (@ref{11f,,Switches for gnatbind}). Task specific stack sizes may be set using the
! @code{Storage_Size} pragma.
  
! For the environment task, the stack size is determined by the operating system.
! Consequently, to modify the size of the environment task please refer to your
! operating system documentation.
  
  @node Static Stack Usage Analysis,Dynamic Stack Usage Analysis,Stack Overflow Checking,Stack Related Facilities
! @anchor{gnat_ugn/gnat_and_program_execution id64}@anchor{1cb}@anchor{gnat_ugn/gnat_and_program_execution static-stack-usage-analysis}@anchor{f5}
  @subsection Static Stack Usage Analysis
  
  
*************** The name of the function.
*** 22717,22738 ****
  A number of bytes.
  
  @item 
! One or more qualifiers: @cite{static}, @cite{dynamic}, @cite{bounded}.
  @end itemize
  
  The second field corresponds to the size of the known part of the function
  frame.
  
! The qualifier @cite{static} means that the function frame size
  is purely static.
  It usually means that all local variables have a static size.
  In this case, the second field is a reliable measure of the function stack
  utilization.
  
! The qualifier @cite{dynamic} means that the function frame size is not static.
  It happens mainly when some local variables have a dynamic size. When this
  qualifier appears alone, the second field is not a reliable measure
! of the function stack analysis. When it is qualified with  @cite{bounded}, it
  means that the second field is a reliable maximum of the function stack
  utilization.
  
--- 23084,23105 ----
  A number of bytes.
  
  @item 
! One or more qualifiers: @code{static}, @code{dynamic}, @code{bounded}.
  @end itemize
  
  The second field corresponds to the size of the known part of the function
  frame.
  
! The qualifier @code{static} means that the function frame size
  is purely static.
  It usually means that all local variables have a static size.
  In this case, the second field is a reliable measure of the function stack
  utilization.
  
! The qualifier @code{dynamic} means that the function frame size is not static.
  It happens mainly when some local variables have a dynamic size. When this
  qualifier appears alone, the second field is not a reliable measure
! of the function stack analysis. When it is qualified with  @code{bounded}, it
  means that the second field is a reliable maximum of the function stack
  utilization.
  
*************** subprogram whose stack usage might be la
*** 22741,22752 ****
  bytes.  The wording is in keeping with the qualifier documented above.
  
  @node Dynamic Stack Usage Analysis,,Static Stack Usage Analysis,Stack Related Facilities
! @anchor{gnat_ugn/gnat_and_program_execution id64}@anchor{1ca}@anchor{gnat_ugn/gnat_and_program_execution dynamic-stack-usage-analysis}@anchor{121}
  @subsection Dynamic Stack Usage Analysis
  
  
  It is possible to measure the maximum amount of stack used by a task, by
! adding a switch to @emph{gnatbind}, as:
  
  @quotation
  
--- 23108,23119 ----
  bytes.  The wording is in keeping with the qualifier documented above.
  
  @node Dynamic Stack Usage Analysis,,Static Stack Usage Analysis,Stack Related Facilities
! @anchor{gnat_ugn/gnat_and_program_execution id65}@anchor{1cc}@anchor{gnat_ugn/gnat_and_program_execution dynamic-stack-usage-analysis}@anchor{121}
  @subsection Dynamic Stack Usage Analysis
  
  
  It is possible to measure the maximum amount of stack used by a task, by
! adding a switch to @code{gnatbind}, as:
  
  @quotation
  
*************** is not entirely analyzed, and it's not p
*** 22801,22814 ****
  much has actually been used.
  @end itemize
  
! The environment task stack, e.g., the stack that contains the main unit, is
! only processed when the environment variable GNAT_STACK_LIMIT is set.
  
! The package @cite{GNAT.Task_Stack_Usage} provides facilities to get
! stack usage reports at run-time. See its body for the details.
  
  @node Memory Management Issues,,Stack Related Facilities,GNAT and Program Execution
! @anchor{gnat_ugn/gnat_and_program_execution id65}@anchor{16d}@anchor{gnat_ugn/gnat_and_program_execution memory-management-issues}@anchor{2a}
  @section Memory Management Issues
  
  
--- 23168,23193 ----
  much has actually been used.
  @end itemize
  
! By default the environment task stack, the stack that contains the main unit,
! is not processed. To enable processing of the environment task stack, the
! environment variable GNAT_STACK_LIMIT needs to be set to the maximum size of
! the environment task stack. This amount is given in kilobytes. For example:
  
! @quotation
! 
! @example
! $ set GNAT_STACK_LIMIT 1600
! @end example
! @end quotation
! 
! would specify to the analyzer that the environment task stack has a limit
! of 1.6 megabytes. Any stack usage beyond this will be ignored by the analysis.
! 
! The package @code{GNAT.Task_Stack_Usage} provides facilities to get
! stack-usage reports at run time. See its body for the details.
  
  @node Memory Management Issues,,Stack Related Facilities,GNAT and Program Execution
! @anchor{gnat_ugn/gnat_and_program_execution id66}@anchor{16d}@anchor{gnat_ugn/gnat_and_program_execution memory-management-issues}@anchor{2a}
  @section Memory Management Issues
  
  
*************** incorrect uses of access values (includi
*** 22824,22830 ****
  @end menu
  
  @node Some Useful Memory Pools,The GNAT Debug Pool Facility,,Memory Management Issues
! @anchor{gnat_ugn/gnat_and_program_execution id66}@anchor{1cb}@anchor{gnat_ugn/gnat_and_program_execution some-useful-memory-pools}@anchor{1cc}
  @subsection Some Useful Memory Pools
  
  
--- 23203,23209 ----
  @end menu
  
  @node Some Useful Memory Pools,The GNAT Debug Pool Facility,,Memory Management Issues
! @anchor{gnat_ugn/gnat_and_program_execution id67}@anchor{1cd}@anchor{gnat_ugn/gnat_and_program_execution some-useful-memory-pools}@anchor{1ce}
  @subsection Some Useful Memory Pools
  
  
*************** incorrect uses of access values (includi
*** 22833,22841 ****
  @geindex storage
  @geindex pool
  
! The @cite{System.Pool_Global} package offers the Unbounded_No_Reclaim_Pool
! storage pool. Allocations use the standard system call @cite{malloc} while
! deallocations use the standard system call @cite{free}. No reclamation is
  performed when the pool goes out of scope. For performance reasons, the
  standard default Ada allocators/deallocators do not use any explicit storage
  pools but if they did, they could use this storage pool without any change in
--- 23212,23220 ----
  @geindex storage
  @geindex pool
  
! The @code{System.Pool_Global} package offers the Unbounded_No_Reclaim_Pool
! storage pool. Allocations use the standard system call @code{malloc} while
! deallocations use the standard system call @code{free}. No reclamation is
  performed when the pool goes out of scope. For performance reasons, the
  standard default Ada allocators/deallocators do not use any explicit storage
  pools but if they did, they could use this storage pool without any change in
*************** for T2'Storage_Pool use System.Pool_Glob
*** 22855,22862 ****
  @end example
  @end quotation
  
! The @cite{System.Pool_Local} package offers the Unbounded_Reclaim_Pool storage
! pool. The allocation strategy is similar to @cite{Pool_Local}'s
  except that the all
  storage allocated with this pool is reclaimed when the pool object goes out of
  scope. This pool provides a explicit mechanism similar to the implicit one
--- 23234,23241 ----
  @end example
  @end quotation
  
! The @code{System.Pool_Local} package offers the @code{Unbounded_Reclaim_Pool} storage
! pool. The allocation strategy is similar to @code{Pool_Local}
  except that the all
  storage allocated with this pool is reclaimed when the pool object goes out of
  scope. This pool provides a explicit mechanism similar to the implicit one
*************** end Pooloc1;
*** 22888,22895 ****
  @end example
  @end quotation
  
! The @cite{System.Pool_Size} package implements the Stack_Bounded_Pool used when
! @cite{Storage_Size} is specified for an access type.
  The whole storage for the pool is
  allocated at once, usually on the stack at the point where the access type is
  elaborated. It is automatically reclaimed when exiting the scope where the
--- 23267,23274 ----
  @end example
  @end quotation
  
! The @code{System.Pool_Size} package implements the @code{Stack_Bounded_Pool} used when
! @code{Storage_Size} is specified for an access type.
  The whole storage for the pool is
  allocated at once, usually on the stack at the point where the access type is
  elaborated. It is automatically reclaimed when exiting the scope where the
*************** for T1'Storage_Size use 10_000;
*** 22905,22911 ****
  @end quotation
  
  @node The GNAT Debug Pool Facility,,Some Useful Memory Pools,Memory Management Issues
! @anchor{gnat_ugn/gnat_and_program_execution id67}@anchor{1cd}@anchor{gnat_ugn/gnat_and_program_execution the-gnat-debug-pool-facility}@anchor{1ce}
  @subsection The GNAT Debug Pool Facility
  
  
--- 23284,23290 ----
  @end quotation
  
  @node The GNAT Debug Pool Facility,,Some Useful Memory Pools,Memory Management Issues
! @anchor{gnat_ugn/gnat_and_program_execution id68}@anchor{1cf}@anchor{gnat_ugn/gnat_and_program_execution the-gnat-debug-pool-facility}@anchor{1d0}
  @subsection The GNAT Debug Pool Facility
  
  
*************** lead to incorrect memory references. The
*** 22920,22926 ****
  references are usually difficult to tackle because the symptoms can be
  very remote from the origin of the problem. In such cases, it is
  very helpful to detect the problem as early as possible. This is the
! purpose of the Storage Pool provided by @cite{GNAT.Debug_Pools}.
  
  In order to use the GNAT specific debugging pool, the user must
  associate a debug pool object with each of the access types that may be
--- 23299,23305 ----
  references are usually difficult to tackle because the symptoms can be
  very remote from the origin of the problem. In such cases, it is
  very helpful to detect the problem as early as possible. This is the
! purpose of the Storage Pool provided by @code{GNAT.Debug_Pools}.
  
  In order to use the GNAT specific debugging pool, the user must
  associate a debug pool object with each of the access types that may be
*************** for Ptr'Storage_Pool use Pool;
*** 22935,22945 ****
  @end example
  @end quotation
  
! @cite{GNAT.Debug_Pools} is derived from a GNAT-specific kind of
! pool: the @cite{Checked_Pool}. Such pools, like standard Ada storage pools,
  allow the user to redefine allocation and deallocation strategies. They
  also provide a checkpoint for each dereference, through the use of
! the primitive operation @cite{Dereference} which is implicitly called at
  each dereference of an access value.
  
  Once an access type has been associated with a debug pool, operations on
--- 23314,23324 ----
  @end example
  @end quotation
  
! @code{GNAT.Debug_Pools} is derived from a GNAT-specific kind of
! pool: the @code{Checked_Pool}. Such pools, like standard Ada storage pools,
  allow the user to redefine allocation and deallocation strategies. They
  also provide a checkpoint for each dereference, through the use of
! the primitive operation @code{Dereference} which is implicitly called at
  each dereference of an access value.
  
  Once an access type has been associated with a debug pool, operations on
*************** which correspond to four potential kinds
*** 22950,22965 ****
  @itemize *
  
  @item 
! @cite{GNAT.Debug_Pools.Accessing_Not_Allocated_Storage}
  
  @item 
! @cite{GNAT.Debug_Pools.Accessing_Deallocated_Storage}
  
  @item 
! @cite{GNAT.Debug_Pools.Freeing_Not_Allocated_Storage}
  
  @item 
! @cite{GNAT.Debug_Pools.Freeing_Deallocated_Storage}
  @end itemize
  
  For types associated with a Debug_Pool, dynamic allocation is performed using
--- 23329,23344 ----
  @itemize *
  
  @item 
! @code{GNAT.Debug_Pools.Accessing_Not_Allocated_Storage}
  
  @item 
! @code{GNAT.Debug_Pools.Accessing_Deallocated_Storage}
  
  @item 
! @code{GNAT.Debug_Pools.Freeing_Not_Allocated_Storage}
  
  @item 
! @code{GNAT.Debug_Pools.Freeing_Deallocated_Storage}
  @end itemize
  
  For types associated with a Debug_Pool, dynamic allocation is performed using
*************** memory are kept in an internal dictionar
*** 22968,22981 ****
  provided, whereupon the user can choose to release the memory to the system,
  keep it allocated for further invalid access checks, or fill it with an easily
  recognizable pattern for debug sessions. The memory pattern is the old IBM
! hexadecimal convention: @cite{16#DEADBEEF#}.
  
  See the documentation in the file g-debpoo.ads for more information on the
  various strategies.
  
  Upon each dereference, a check is made that the access value denotes a
  properly allocated memory location. Here is a complete example of use of
! @cite{Debug_Pools}, that includes typical instances of  memory corruption:
  
  @quotation
  
--- 23347,23360 ----
  provided, whereupon the user can choose to release the memory to the system,
  keep it allocated for further invalid access checks, or fill it with an easily
  recognizable pattern for debug sessions. The memory pattern is the old IBM
! hexadecimal convention: @code{16#DEADBEEF#}.
  
  See the documentation in the file g-debpoo.ads for more information on the
  various strategies.
  
  Upon each dereference, a check is made that the access value denotes a
  properly allocated memory location. Here is a complete example of use of
! @code{Debug_Pools}, that includes typical instances of  memory corruption:
  
  @quotation
  
*************** Debug Pool info:
*** 23068,23074 ****
  @c -- E.g. Ada |nbsp| 95
  
  @node Platform-Specific Information,Example of Binder Output File,GNAT and Program Execution,Top
! @anchor{gnat_ugn/platform_specific_information platform-specific-information}@anchor{d}@anchor{gnat_ugn/platform_specific_information doc}@anchor{1cf}@anchor{gnat_ugn/platform_specific_information id1}@anchor{1d0}
  @chapter Platform-Specific Information
  
  
--- 23447,23453 ----
  @c -- E.g. Ada |nbsp| 95
  
  @node Platform-Specific Information,Example of Binder Output File,GNAT and Program Execution,Top
! @anchor{gnat_ugn/platform_specific_information platform-specific-information}@anchor{d}@anchor{gnat_ugn/platform_specific_information doc}@anchor{1d1}@anchor{gnat_ugn/platform_specific_information id1}@anchor{1d2}
  @chapter Platform-Specific Information
  
  
*************** topics related to the GNAT implementatio
*** 23079,23091 ****
  @menu
  * Run-Time Libraries:: 
  * Specifying a Run-Time Library:: 
  * Microsoft Windows Topics:: 
  * Mac OS Topics:: 
  
  @end menu
  
  @node Run-Time Libraries,Specifying a Run-Time Library,,Platform-Specific Information
! @anchor{gnat_ugn/platform_specific_information id2}@anchor{1d1}@anchor{gnat_ugn/platform_specific_information run-time-libraries}@anchor{2b}
  @section Run-Time Libraries
  
  
--- 23458,23471 ----
  @menu
  * Run-Time Libraries:: 
  * Specifying a Run-Time Library:: 
+ * GNU/Linux Topics:: 
  * Microsoft Windows Topics:: 
  * Mac OS Topics:: 
  
  @end menu
  
  @node Run-Time Libraries,Specifying a Run-Time Library,,Platform-Specific Information
! @anchor{gnat_ugn/platform_specific_information id2}@anchor{1d3}@anchor{gnat_ugn/platform_specific_information run-time-libraries}@anchor{2b}
  @section Run-Time Libraries
  
  
*************** topics related to the GNAT implementatio
*** 23096,23115 ****
  @geindex Run-time libraries (platform-specific information)
  
  The GNAT run-time implementation may vary with respect to both the
! underlying threads library and the exception handling scheme.
! For threads support, one or more of the following are supplied:
! 
! 
! @itemize *
! 
! @item 
! @strong{native threads library}, a binding to the thread package from
! the underlying operating system
! 
! @item 
! @strong{pthreads library} (Sparc Solaris only), a binding to the Solaris
! POSIX thread package
! @end itemize
  
  For exception handling, either or both of two models are supplied:
  
--- 23476,23484 ----
  @geindex Run-time libraries (platform-specific information)
  
  The GNAT run-time implementation may vary with respect to both the
! underlying threads library and the exception-handling scheme.
! For threads support, the default run-time will bind to the thread
! package of the underlying operating system.
  
  For exception handling, either or both of two models are supplied:
  
*************** information about several specific platf
*** 23157,23163 ****
  @end menu
  
  @node Summary of Run-Time Configurations,,,Run-Time Libraries
! @anchor{gnat_ugn/platform_specific_information summary-of-run-time-configurations}@anchor{1d2}@anchor{gnat_ugn/platform_specific_information id3}@anchor{1d3}
  @subsection Summary of Run-Time Configurations
  
  
--- 23526,23532 ----
  @end menu
  
  @node Summary of Run-Time Configurations,,,Run-Time Libraries
! @anchor{gnat_ugn/platform_specific_information summary-of-run-time-configurations}@anchor{1d4}@anchor{gnat_ugn/platform_specific_information id3}@anchor{1d5}
  @subsection Summary of Run-Time Configurations
  
  
*************** Exceptions
*** 23181,23277 ****
  
  @item
  
! ppc-aix
! 
! @tab
! 
! rts-native
! (default)
! 
! @tab
! 
! native AIX threads
! 
! @tab
! 
! ZCX
! 
! @item
! 
! rts-sjlj
! 
! @tab
! 
! native AIX threads
! 
! @tab
! 
! SJLJ
! 
! @item
! 
! sparc-solaris
! 
! @tab
! 
! rts-native
! (default)
! 
! @tab
! 
! native Solaris
! threads library
! 
! @tab
! 
! ZCX
! 
! @item
! 
! rts-pthread
! 
! @tab
! 
! pthread library
! 
! @tab
! 
! ZCX
! 
! @item
! 
! rts-sjlj
! 
! @tab
! 
! native Solaris
! threads library
! 
! @tab
! 
! SJLJ
! 
! @item
! 
! sparc64-solaris
! 
! @tab
! 
! rts-native
! (default)
! 
! @tab
! 
! native Solaris
! threads library
! 
! @tab
! 
! ZCX
! 
! @item
! 
! x86-linux
  
  @tab
  
--- 23550,23556 ----
  
  @item
  
! GNU/Linux
  
  @tab
  
*************** SJLJ
*** 23300,23354 ****
  
  @item
  
! x86-lynx
! 
! @tab
! 
! rts-native
! (default)
! 
! @tab
! 
! native LynxOS threads
! 
! @tab
! 
! SJLJ
! 
! @item
! 
! x86-solaris
! 
! @tab
! 
! rts-native
! (default)
! 
! @tab
! 
! native Solaris
! threads library
! 
! @tab
! 
! ZCX
! 
! @item
! 
! rts-sjlj
! 
! @tab
! 
! native Solaris
! threads library
! 
! @tab
! 
! SJLJ
! 
! @item
! 
! x86-windows
  
  @tab
  
--- 23579,23585 ----
  
  @item
  
! Windows
  
  @tab
  
*************** SJLJ
*** 23377,23388 ****
  
  @item
  
! x86_64-linux
  
  @tab
  
  rts-native
- (default)
  
  @tab
  
--- 23608,23618 ----
  
  @item
  
! Mac OS
  
  @tab
  
  rts-native
  
  @tab
  
*************** pthread library
*** 23392,23414 ****
  
  ZCX
  
- @item
- 
- rts-sjlj
- 
- @tab
- 
- pthread library
- 
- @tab
- 
- SJLJ
- 
  @end multitable
  
  
! @node Specifying a Run-Time Library,Microsoft Windows Topics,Run-Time Libraries,Platform-Specific Information
! @anchor{gnat_ugn/platform_specific_information specifying-a-run-time-library}@anchor{1d4}@anchor{gnat_ugn/platform_specific_information id4}@anchor{1d5}
  @section Specifying a Run-Time Library
  
  
--- 23622,23632 ----
  
  ZCX
  
  @end multitable
  
  
! @node Specifying a Run-Time Library,GNU/Linux Topics,Run-Time Libraries,Platform-Specific Information
! @anchor{gnat_ugn/platform_specific_information specifying-a-run-time-library}@anchor{1d6}@anchor{gnat_ugn/platform_specific_information id4}@anchor{1d7}
  @section Specifying a Run-Time Library
  
  
*************** below explains the differences between t
*** 23431,23459 ****
  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:
  
! @example
! --
! --  $(target-dir)
! --      |
! --      +--- adainclude----------+
! --      |                        |
! --      +--- adalib-----------+  |
! --      |                     |  |
! --      +--- rts-native       |  |
! --      |    |                |  |
! --      |    +--- adainclude <---+
! --      |    |                |
! --      |    +--- adalib <----+
! --      |
! --      +--- rts-sjlj
! --           |
! --           +--- adainclude
! --           |
! --           +--- adalib
! @end example
  
  
  @example
--- 23649,23675 ----
  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:
  
! @c --
! @c --  $(target-dir)
! @c --      |
! @c --      +--- adainclude----------+
! @c --      |                        |
! @c --      +--- adalib-----------+  |
! @c --      |                     |  |
! @c --      +--- rts-native       |  |
! @c --      |    |                |  |
! @c --      |    +--- adainclude <---+
! @c --      |    |                |
! @c --      |    +--- adalib <----+
! @c --      |
! @c --      +--- rts-sjlj
! @c --           |
! @c --           +--- adainclude
! @c --           |
! @c --           +--- adalib
  
  
  @example
*************** Alternatively, you can specify @code{rts
*** 23496,23503 ****
  @geindex --RTS option
  
  Selecting another run-time library temporarily can be
! achieved by using the @emph{--RTS} switch, e.g., @emph{--RTS=sjlj}
! @anchor{gnat_ugn/platform_specific_information choosing-the-scheduling-policy}@anchor{1d6}
  @geindex SCHED_FIFO scheduling policy
  
  @geindex SCHED_RR scheduling policy
--- 23712,23719 ----
  @geindex --RTS option
  
  Selecting another run-time library temporarily can be
! achieved by using the @code{--RTS} switch, e.g., @code{--RTS=sjlj}
! @anchor{gnat_ugn/platform_specific_information choosing-the-scheduling-policy}@anchor{1d8}
  @geindex SCHED_FIFO scheduling policy
  
  @geindex SCHED_RR scheduling policy
*************** achieved by using the @emph{--RTS} switc
*** 23506,23527 ****
  
  @menu
  * Choosing the Scheduling Policy:: 
- * Solaris-Specific Considerations:: 
- * Solaris Threads Issues:: 
- * AIX-Specific Considerations:: 
  
  @end menu
  
! @node Choosing the Scheduling Policy,Solaris-Specific Considerations,,Specifying a Run-Time Library
! @anchor{gnat_ugn/platform_specific_information id5}@anchor{1d7}
  @subsection Choosing the Scheduling Policy
  
  
  When using a POSIX threads implementation, you have a choice of several
! scheduling policies: @cite{SCHED_FIFO}, @cite{SCHED_RR} and @cite{SCHED_OTHER}.
  
! Typically, the default is @cite{SCHED_OTHER}, while using @cite{SCHED_FIFO}
! or @cite{SCHED_RR} requires special (e.g., root) privileges.
  
  @geindex pragma Time_Slice
  
--- 23722,23740 ----
  
  @menu
  * Choosing the Scheduling Policy:: 
  
  @end menu
  
! @node Choosing the Scheduling Policy,,,Specifying a Run-Time Library
! @anchor{gnat_ugn/platform_specific_information id5}@anchor{1d9}
  @subsection Choosing the Scheduling Policy
  
  
  When using a POSIX threads implementation, you have a choice of several
! scheduling policies: @code{SCHED_FIFO}, @code{SCHED_RR} and @code{SCHED_OTHER}.
  
! Typically, the default is @code{SCHED_OTHER}, while using @code{SCHED_FIFO}
! or @code{SCHED_RR} requires special (e.g., root) privileges.
  
  @geindex pragma Time_Slice
  
*************** or @cite{SCHED_RR} requires special (e.g
*** 23529,23686 ****
  
  @geindex pragma Task_Dispatching_Policy
  
! By default, GNAT uses the @cite{SCHED_OTHER} policy. To specify
! @cite{SCHED_FIFO},
  you can use one of the following:
  
  
  @itemize *
  
  @item 
! @cite{pragma Time_Slice (0.0)}
  
  @item 
! the corresponding binder option @emph{-T0}
  
  @item 
! @cite{pragma Task_Dispatching_Policy (FIFO_Within_Priorities)}
  @end itemize
  
! To specify @cite{SCHED_RR},
! you should use @cite{pragma Time_Slice} with a
! value greater than 0.0, or else use the corresponding @emph{-T}
  binder option.
  
! @geindex Solaris Sparc threads libraries
! 
! @node Solaris-Specific Considerations,Solaris Threads Issues,Choosing the Scheduling Policy,Specifying a Run-Time Library
! @anchor{gnat_ugn/platform_specific_information id6}@anchor{1d8}@anchor{gnat_ugn/platform_specific_information solaris-specific-considerations}@anchor{1d9}
! @subsection Solaris-Specific Considerations
! 
! 
! This section addresses some topics related to the various threads libraries
! on Sparc Solaris.
! 
! @geindex rts-pthread threads library
! 
! @node Solaris Threads Issues,AIX-Specific Considerations,Solaris-Specific Considerations,Specifying a Run-Time Library
! @anchor{gnat_ugn/platform_specific_information id7}@anchor{1da}@anchor{gnat_ugn/platform_specific_information solaris-threads-issues}@anchor{1db}
! @subsection Solaris Threads Issues
! 
! 
! GNAT under Solaris/Sparc 32 bits comes with an alternate tasking run-time
! library based on POSIX threads --- @emph{rts-pthread}.
! 
! @geindex PTHREAD_PRIO_INHERIT policy (under rts-pthread)
! 
! @geindex PTHREAD_PRIO_PROTECT policy (under rts-pthread)
! 
! @geindex pragma Locking_Policy (under rts-pthread)
! 
! @geindex Inheritance_Locking (under rts-pthread)
! 
! @geindex Ceiling_Locking (under rts-pthread)
! 
! This run-time library has the advantage of being mostly shared across all
! POSIX-compliant thread implementations, and it also provides under
! Solaris 8 the @cite{PTHREAD_PRIO_INHERIT}
! and @cite{PTHREAD_PRIO_PROTECT}
! semantics that can be selected using the predefined pragma
! @cite{Locking_Policy}
! with respectively
! @cite{Inheritance_Locking} and @cite{Ceiling_Locking} as the policy.
! 
! As explained above, the native run-time library is based on the Solaris thread
! library (@cite{libthread}) and is the default library.
! 
! @geindex GNAT_PROCESSOR environment variable (on Sparc Solaris)
! 
! When the Solaris threads library is used (this is the default), programs
! compiled with GNAT can automatically take advantage of
! and can thus execute on multiple processors.
! The user can alternatively specify a processor on which the program should run
! to emulate a single-processor system. The multiprocessor / uniprocessor choice
! is made by
! setting the environment variable 
! @geindex GNAT_PROCESSOR
! @geindex environment variable; GNAT_PROCESSOR
! @code{GNAT_PROCESSOR}
! to one of the following:
  
  @quotation
  
  
! @multitable {xxxxxxxxxxxxxxxxxxxxxxxxxxx} {xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx} 
! @headitem
! 
! @code{GNAT_PROCESSOR} Value
! 
! @tab
! 
! Effect
! 
! @item
  
! @emph{-2}
  
! @tab
  
! Use the default configuration (run the program on all
! available processors) - this is the same as having @cite{GNAT_PROCESSOR}
! unset
  
- @item
  
! @emph{-1}
  
! @tab
  
! Let the run-time implementation choose one processor and run the
! program on that processor
  
! @item
  
- @emph{0 .. Last_Proc}
  
! @tab
  
- Run the program on the specified processor.
- @cite{Last_Proc} is equal to @cite{_SC_NPROCESSORS_CONF - 1}
- (where @cite{_SC_NPROCESSORS_CONF} is a system variable).
  
! @end multitable
  
! @end quotation
  
! @node AIX-Specific Considerations,,Solaris Threads Issues,Specifying a Run-Time Library
! @anchor{gnat_ugn/platform_specific_information aix-specific-considerations}@anchor{1dc}@anchor{gnat_ugn/platform_specific_information id8}@anchor{1dd}
! @subsection AIX-Specific Considerations
  
  
- @geindex AIX resolver library
  
! On AIX, the resolver library initializes some internal structure on
! the first call to @cite{get*by*} functions, which are used to implement
! @cite{GNAT.Sockets.Get_Host_By_Name} and
! @cite{GNAT.Sockets.Get_Host_By_Address}.
! If such initialization occurs within an Ada task, and the stack size for
! the task is the default size, a stack overflow may occur.
  
! To avoid this overflow, the user should either ensure that the first call
! to @cite{GNAT.Sockets.Get_Host_By_Name} or
! @cite{GNAT.Sockets.Get_Host_By_Addrss}
! occurs in the environment task, or use @cite{pragma Storage_Size} to
! specify a sufficiently large size for the stack of the task that contains
! this call.
  
! @geindex Windows NT
  
! @geindex Windows 95
  
! @geindex Windows 98
  
! @node Microsoft Windows Topics,Mac OS Topics,Specifying a Run-Time Library,Platform-Specific Information
! @anchor{gnat_ugn/platform_specific_information microsoft-windows-topics}@anchor{2c}@anchor{gnat_ugn/platform_specific_information id9}@anchor{1de}
  @section Microsoft Windows Topics
  
  
--- 23742,23839 ----
  
  @geindex pragma Task_Dispatching_Policy
  
! By default, GNAT uses the @code{SCHED_OTHER} policy. To specify
! @code{SCHED_FIFO},
  you can use one of the following:
  
  
  @itemize *
  
  @item 
! @code{pragma Time_Slice (0.0)}
  
  @item 
! the corresponding binder option @code{-T0}
  
  @item 
! @code{pragma Task_Dispatching_Policy (FIFO_Within_Priorities)}
  @end itemize
  
! To specify @code{SCHED_RR},
! you should use @code{pragma Time_Slice} with a
! value greater than 0.0, or else use the corresponding @code{-T}
  binder option.
  
! To make sure a program is running as root, you can put something like
! this in a library package body in your application:
  
  @quotation
  
+ @example
+ function geteuid return Integer;
+ pragma Import (C, geteuid, "geteuid");
+ Ignore : constant Boolean :=
+   (if geteuid = 0 then True else raise Program_Error with "must be root");
+ @end example
+ @end quotation
  
! It gets the effective user id, and if it's not 0 (i.e. root), it raises
! Program_Error.
  
! @geindex Linux
  
! @geindex GNU/Linux
  
! @node GNU/Linux Topics,Microsoft Windows Topics,Specifying a Run-Time Library,Platform-Specific Information
! @anchor{gnat_ugn/platform_specific_information id6}@anchor{1da}@anchor{gnat_ugn/platform_specific_information gnu-linux-topics}@anchor{1db}
! @section GNU/Linux Topics
  
  
! This section describes topics that are specific to GNU/Linux platforms.
  
! @menu
! * Required Packages on GNU/Linux:: 
  
! @end menu
  
! @node Required Packages on GNU/Linux,,,GNU/Linux Topics
! @anchor{gnat_ugn/platform_specific_information id7}@anchor{1dc}@anchor{gnat_ugn/platform_specific_information required-packages-on-gnu-linux}@anchor{1dd}
! @subsection Required Packages on GNU/Linux
  
  
! GNAT requires the C library developer's package to be installed.
! The name of of that package depends on your GNU/Linux distribution:
  
  
! @itemize *
  
! @item 
! RedHat, SUSE: @code{glibc-devel};
  
! @item 
! Debian, Ubuntu: @code{libc6-dev} (normally installed by default).
! @end itemize
  
+ If using the 32-bit version of GNAT on a 64-bit version of GNU/Linux,
+ you'll need the 32-bit version of the glibc and glibc-devel packages:
  
  
! @itemize *
  
! @item 
! RedHat, SUSE: @code{glibc.i686}, @code{glibc-devel.i686}
  
! @item 
! Debian, Ubuntu: @code{libc6:i386}, @code{libc6-dev:i386}
! @end itemize
  
! Other GNU/Linux distributions might be choosing a different name
! for that package.
  
! @geindex Windows
  
! @node Microsoft Windows Topics,Mac OS Topics,GNU/Linux Topics,Platform-Specific Information
! @anchor{gnat_ugn/platform_specific_information microsoft-windows-topics}@anchor{2c}@anchor{gnat_ugn/platform_specific_information id8}@anchor{1de}
  @section Microsoft Windows Topics
  
  
*************** platforms.
*** 23703,23715 ****
  @end menu
  
  @node Using GNAT on Windows,Using a network installation of GNAT,,Microsoft Windows Topics
! @anchor{gnat_ugn/platform_specific_information using-gnat-on-windows}@anchor{1df}@anchor{gnat_ugn/platform_specific_information id10}@anchor{1e0}
  @subsection Using GNAT on Windows
  
  
  One of the strengths of the GNAT technology is that its tool set
! (@emph{gcc}, @emph{gnatbind}, @emph{gnatlink}, @emph{gnatmake}, the
! @cite{gdb} debugger, etc.) is used in the same way regardless of the
  platform.
  
  On Windows this tool set is complemented by a number of Microsoft-specific
--- 23856,23868 ----
  @end menu
  
  @node Using GNAT on Windows,Using a network installation of GNAT,,Microsoft Windows Topics
! @anchor{gnat_ugn/platform_specific_information using-gnat-on-windows}@anchor{1df}@anchor{gnat_ugn/platform_specific_information id9}@anchor{1e0}
  @subsection Using GNAT on Windows
  
  
  One of the strengths of the GNAT technology is that its tool set
! (@code{gcc}, @code{gnatbind}, @code{gnatlink}, @code{gnatmake}, the
! @code{gdb} debugger, etc.) is used in the same way regardless of the
  platform.
  
  On Windows this tool set is complemented by a number of Microsoft-specific
*************** when this is required. With these tools:
*** 23720,23726 ****
  @itemize *
  
  @item 
! You can build applications using the @cite{CONSOLE} or @cite{WINDOWS}
  subsystems.
  
  @item 
--- 23873,23879 ----
  @itemize *
  
  @item 
! You can build applications using the @code{CONSOLE} or @code{WINDOWS}
  subsystems.
  
  @item 
*************** are listed in separate sections below.
*** 23747,23758 ****
  @itemize *
  
  @item 
! It is not possible to use @cite{GetLastError} and @cite{SetLastError}
  when tasking, protected records, or exceptions are used. In these
  cases, in order to implement Ada semantics, the GNAT run-time system
  calls certain Win32 routines that set the last error variable to 0 upon
! success. It should be possible to use @cite{GetLastError} and
! @cite{SetLastError} when tasking, protected record, and exception
  features are not used, but it is not guaranteed to work.
  
  @item 
--- 23900,23911 ----
  @itemize *
  
  @item 
! It is not possible to use @code{GetLastError} and @code{SetLastError}
  when tasking, protected records, or exceptions are used. In these
  cases, in order to implement Ada semantics, the GNAT run-time system
  calls certain Win32 routines that set the last error variable to 0 upon
! success. It should be possible to use @code{GetLastError} and
! @code{SetLastError} when tasking, protected record, and exception
  features are not used, but it is not guaranteed to work.
  
  @item 
*************** uninstall or integrate different GNAT pr
*** 23780,23793 ****
  @end itemize
  
  @node Using a network installation of GNAT,CONSOLE and WINDOWS subsystems,Using GNAT on Windows,Microsoft Windows Topics
! @anchor{gnat_ugn/platform_specific_information id11}@anchor{1e1}@anchor{gnat_ugn/platform_specific_information using-a-network-installation-of-gnat}@anchor{1e2}
  @subsection Using a network installation of GNAT
  
  
  Make sure the system on which GNAT is installed is accessible from the
  current machine, i.e., the install location is shared over the network.
  Shared resources are accessed on Windows by means of UNC paths, which
! have the format @cite{\\server\sharename\path}
  
  In order to use such a network installation, simply add the UNC path of the
  @code{bin} directory of your GNAT installation in front of your PATH. For
--- 23933,23946 ----
  @end itemize
  
  @node Using a network installation of GNAT,CONSOLE and WINDOWS subsystems,Using GNAT on Windows,Microsoft Windows Topics
! @anchor{gnat_ugn/platform_specific_information id10}@anchor{1e1}@anchor{gnat_ugn/platform_specific_information using-a-network-installation-of-gnat}@anchor{1e2}
  @subsection Using a network installation of GNAT
  
  
  Make sure the system on which GNAT is installed is accessible from the
  current machine, i.e., the install location is shared over the network.
  Shared resources are accessed on Windows by means of UNC paths, which
! have the format @code{\\\\server\\sharename\\path}
  
  In order to use such a network installation, simply add the UNC path of the
  @code{bin} directory of your GNAT installation in front of your PATH. For
*************** transfer of large amounts of data across
*** 23807,23813 ****
  serious performance penalty.
  
  @node CONSOLE and WINDOWS subsystems,Temporary Files,Using a network installation of GNAT,Microsoft Windows Topics
! @anchor{gnat_ugn/platform_specific_information id12}@anchor{1e3}@anchor{gnat_ugn/platform_specific_information console-and-windows-subsystems}@anchor{1e4}
  @subsection CONSOLE and WINDOWS subsystems
  
  
--- 23960,23966 ----
  serious performance penalty.
  
  @node CONSOLE and WINDOWS subsystems,Temporary Files,Using a network installation of GNAT,Microsoft Windows Topics
! @anchor{gnat_ugn/platform_specific_information id11}@anchor{1e3}@anchor{gnat_ugn/platform_specific_information console-and-windows-subsystems}@anchor{1e4}
  @subsection CONSOLE and WINDOWS subsystems
  
  
*************** serious performance penalty.
*** 23817,23828 ****
  
  @geindex -mwindows
  
! There are two main subsystems under Windows. The @cite{CONSOLE} subsystem
  (which is the default subsystem) will always create a console when
  launching the application. This is not something desirable when the
  application has a Windows GUI. To get rid of this console the
! application must be using the @cite{WINDOWS} subsystem. To do so
! the @emph{-mwindows} linker option must be specified.
  
  @quotation
  
--- 23970,23981 ----
  
  @geindex -mwindows
  
! There are two main subsystems under Windows. The @code{CONSOLE} subsystem
  (which is the default subsystem) will always create a console when
  launching the application. This is not something desirable when the
  application has a Windows GUI. To get rid of this console the
! application must be using the @code{WINDOWS} subsystem. To do so
! the @code{-mwindows} linker option must be specified.
  
  @quotation
  
*************** $ gnatmake winprog -largs -mwindows
*** 23832,23838 ****
  @end quotation
  
  @node Temporary Files,Disabling Command Line Argument Expansion,CONSOLE and WINDOWS subsystems,Microsoft Windows Topics
! @anchor{gnat_ugn/platform_specific_information id13}@anchor{1e5}@anchor{gnat_ugn/platform_specific_information temporary-files}@anchor{1e6}
  @subsection Temporary Files
  
  
--- 23985,23991 ----
  @end quotation
  
  @node Temporary Files,Disabling Command Line Argument Expansion,CONSOLE and WINDOWS subsystems,Microsoft Windows Topics
! @anchor{gnat_ugn/platform_specific_information id12}@anchor{1e5}@anchor{gnat_ugn/platform_specific_information temporary-files}@anchor{1e6}
  @subsection Temporary Files
  
  
*************** directories.
*** 23877,23883 ****
  
  @geindex Command Line Argument Expansion
  
! By default, an executable compiled for the @strong{Windows} platform will do
  the following postprocessing on the arguments passed on the command
  line:
  
--- 24030,24036 ----
  
  @geindex Command Line Argument Expansion
  
! By default, an executable compiled for the Windows platform will do
  the following postprocessing on the arguments passed on the command
  line:
  
*************** Ada.Command_Line.Argument (1) -> "*.txt"
*** 23916,23928 ****
  @end example
  @end itemize
  
! Note that if the program is launched from a shell such as @strong{Cygwin} @strong{Bash}
  then quote removal might be performed by the shell.
  
  In some contexts it might be useful to disable this feature (for example if
  the program performs its own argument expansion). In order to do this, a C
  symbol needs to be defined and set to @code{0}. You can do this by
! adding the following code fragment in one of your @strong{Ada} units:
  
  @example
  Do_Argv_Expansion : Integer := 0;
--- 24069,24081 ----
  @end example
  @end itemize
  
! Note that if the program is launched from a shell such as Cygwin Bash
  then quote removal might be performed by the shell.
  
  In some contexts it might be useful to disable this feature (for example if
  the program performs its own argument expansion). In order to do this, a C
  symbol needs to be defined and set to @code{0}. You can do this by
! adding the following code fragment in one of your Ada units:
  
  @example
  Do_Argv_Expansion : Integer := 0;
*************** Ada.Command_Line.Argument (1) -> "'*.txt
*** 23942,23948 ****
  @end example
  
  @node Mixed-Language Programming on Windows,Windows Specific Add-Ons,Disabling Command Line Argument Expansion,Microsoft Windows Topics
! @anchor{gnat_ugn/platform_specific_information mixed-language-programming-on-windows}@anchor{1e8}@anchor{gnat_ugn/platform_specific_information id14}@anchor{1e9}
  @subsection Mixed-Language Programming on Windows
  
  
--- 24095,24101 ----
  @end example
  
  @node Mixed-Language Programming on Windows,Windows Specific Add-Ons,Disabling Command Line Argument Expansion,Microsoft Windows Topics
! @anchor{gnat_ugn/platform_specific_information id13}@anchor{1e8}@anchor{gnat_ugn/platform_specific_information mixed-language-programming-on-windows}@anchor{1e9}
  @subsection Mixed-Language Programming on Windows
  
  
*************** application that contains a mix of Ada a
*** 23952,23958 ****
  Windows C/C++ development environment conditions your overall
  interoperability strategy.
  
! If you use @emph{gcc} or Microsoft C to compile the non-Ada part of
  your application, there are no Windows-specific restrictions that
  affect the overall interoperability with your Ada code. If you do want
  to use the Microsoft tools for your C++ code, you have two choices:
--- 24105,24111 ----
  Windows C/C++ development environment conditions your overall
  interoperability strategy.
  
! If you use @code{gcc} or Microsoft C to compile the non-Ada part of
  your application, there are no Windows-specific restrictions that
  affect the overall interoperability with your Ada code. If you do want
  to use the Microsoft tools for your C++ code, you have two choices:
*************** native SEH support is used.
*** 24026,24032 ****
  @end menu
  
  @node Windows Calling Conventions,Introduction to Dynamic Link Libraries DLLs,,Mixed-Language Programming on Windows
! @anchor{gnat_ugn/platform_specific_information windows-calling-conventions}@anchor{1ec}@anchor{gnat_ugn/platform_specific_information id15}@anchor{1ed}
  @subsubsection Windows Calling Conventions
  
  
--- 24179,24185 ----
  @end menu
  
  @node Windows Calling Conventions,Introduction to Dynamic Link Libraries DLLs,,Mixed-Language Programming on Windows
! @anchor{gnat_ugn/platform_specific_information windows-calling-conventions}@anchor{1ec}@anchor{gnat_ugn/platform_specific_information id14}@anchor{1ed}
  @subsubsection Windows Calling Conventions
  
  
*************** This section pertain only to Win32. On W
*** 24038,24065 ****
  calling convention. All convention specifiers are ignored on this
  platform.
  
! When a subprogram @cite{F} (caller) calls a subprogram @cite{G}
! (callee), there are several ways to push @cite{G}'s parameters on the
  stack and there are several possible scenarios to clean up the stack
! upon @cite{G}'s return. A calling convention is an agreed upon software
! protocol whereby the responsibilities between the caller (@cite{F}) and
! the callee (@cite{G}) are clearly defined. Several calling conventions
  are available for Windows:
  
  
  @itemize *
  
  @item 
! @cite{C} (Microsoft defined)
  
  @item 
! @cite{Stdcall} (Microsoft defined)
  
  @item 
! @cite{Win32} (GNAT specific)
  
  @item 
! @cite{DLL} (GNAT specific)
  @end itemize
  
  @menu
--- 24191,24218 ----
  calling convention. All convention specifiers are ignored on this
  platform.
  
! When a subprogram @code{F} (caller) calls a subprogram @code{G}
! (callee), there are several ways to push @code{G}'s parameters on the
  stack and there are several possible scenarios to clean up the stack
! upon @code{G}'s return. A calling convention is an agreed upon software
! protocol whereby the responsibilities between the caller (@code{F}) and
! the callee (@code{G}) are clearly defined. Several calling conventions
  are available for Windows:
  
  
  @itemize *
  
  @item 
! @code{C} (Microsoft defined)
  
  @item 
! @code{Stdcall} (Microsoft defined)
  
  @item 
! @code{Win32} (GNAT specific)
  
  @item 
! @code{DLL} (GNAT specific)
  @end itemize
  
  @menu
*************** are available for Windows:
*** 24071,24090 ****
  @end menu
  
  @node C Calling Convention,Stdcall Calling Convention,,Windows Calling Conventions
! @anchor{gnat_ugn/platform_specific_information c-calling-convention}@anchor{1ee}@anchor{gnat_ugn/platform_specific_information id16}@anchor{1ef}
! @subsubsection @cite{C} Calling Convention
  
  
  This is the default calling convention used when interfacing to C/C++
! routines compiled with either @emph{gcc} or Microsoft Visual C++.
  
! In the @cite{C} calling convention subprogram parameters are pushed on the
  stack by the caller from right to left. The caller itself is in charge of
  cleaning up the stack after the call. In addition, the name of a routine
! with @cite{C} calling convention is mangled by adding a leading underscore.
  
  The name to use on the Ada side when importing (or exporting) a routine
! with @cite{C} calling convention is the name of the routine. For
  instance the C function:
  
  @quotation
--- 24224,24243 ----
  @end menu
  
  @node C Calling Convention,Stdcall Calling Convention,,Windows Calling Conventions
! @anchor{gnat_ugn/platform_specific_information c-calling-convention}@anchor{1ee}@anchor{gnat_ugn/platform_specific_information id15}@anchor{1ef}
! @subsubsection @code{C} Calling Convention
  
  
  This is the default calling convention used when interfacing to C/C++
! routines compiled with either @code{gcc} or Microsoft Visual C++.
  
! In the @code{C} calling convention subprogram parameters are pushed on the
  stack by the caller from right to left. The caller itself is in charge of
  cleaning up the stack after the call. In addition, the name of a routine
! with @code{C} calling convention is mangled by adding a leading underscore.
  
  The name to use on the Ada side when importing (or exporting) a routine
! with @code{C} calling convention is the name of the routine. For
  instance the C function:
  
  @quotation
*************** pragma Import (C, Get_Val, External_Name
*** 24104,24123 ****
  @end example
  @end quotation
  
! Note that in this particular case the @cite{External_Name} parameter could
  have been omitted since, when missing, this parameter is taken to be the
! name of the Ada entity in lower case. When the @cite{Link_Name} parameter
  is missing, as in the above example, this parameter is set to be the
! @cite{External_Name} with a leading underscore.
  
! When importing a variable defined in C, you should always use the @cite{C}
  calling convention unless the object containing the variable is part of a
! DLL (in which case you should use the @cite{Stdcall} calling
  convention, @ref{1f0,,Stdcall Calling Convention}).
  
  @node Stdcall Calling Convention,Win32 Calling Convention,C Calling Convention,Windows Calling Conventions
! @anchor{gnat_ugn/platform_specific_information stdcall-calling-convention}@anchor{1f0}@anchor{gnat_ugn/platform_specific_information id17}@anchor{1f1}
! @subsubsection @cite{Stdcall} Calling Convention
  
  
  This convention, which was the calling convention used for Pascal
--- 24257,24276 ----
  @end example
  @end quotation
  
! Note that in this particular case the @code{External_Name} parameter could
  have been omitted since, when missing, this parameter is taken to be the
! name of the Ada entity in lower case. When the @code{Link_Name} parameter
  is missing, as in the above example, this parameter is set to be the
! @code{External_Name} with a leading underscore.
  
! When importing a variable defined in C, you should always use the @code{C}
  calling convention unless the object containing the variable is part of a
! DLL (in which case you should use the @code{Stdcall} calling
  convention, @ref{1f0,,Stdcall Calling Convention}).
  
  @node Stdcall Calling Convention,Win32 Calling Convention,C Calling Convention,Windows Calling Conventions
! @anchor{gnat_ugn/platform_specific_information stdcall-calling-convention}@anchor{1f0}@anchor{gnat_ugn/platform_specific_information id16}@anchor{1f1}
! @subsubsection @code{Stdcall} Calling Convention
  
  
  This convention, which was the calling convention used for Pascal
*************** programs, is used by Microsoft for all t
*** 24125,24140 ****
  efficiency reasons. It must be used to import any routine for which this
  convention was specified.
  
! In the @cite{Stdcall} calling convention subprogram parameters are pushed
  on the stack by the caller from right to left. The callee (and not the
  caller) is in charge of cleaning the stack on routine exit. In addition,
! the name of a routine with @cite{Stdcall} calling convention is mangled by
! adding a leading underscore (as for the @cite{C} calling convention) and a
! trailing @code{@@@emph{nn}}, where @cite{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
! @cite{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:
  
--- 24278,24293 ----
  efficiency reasons. It must be used to import any routine for which this
  convention was specified.
  
! In the @code{Stdcall} calling convention subprogram parameters are pushed
  on the stack by the caller from right to left. The callee (and not the
  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:
  
*************** pragma Import (Stdcall, Get_Val);
*** 24156,24162 ****
  @end example
  @end quotation
  
! As for the @cite{C} calling convention, when the @cite{External_Name}
  parameter is missing, it is taken to be the name of the Ada entity in lower
  case. If instead of writing the above import pragma you write:
  
--- 24309,24315 ----
  @end example
  @end quotation
  
! As for the @code{C} calling convention, when the @code{External_Name}
  parameter is missing, it is taken to be the name of the Ada entity in lower
  case. If instead of writing the above import pragma you write:
  
*************** pragma Import (Stdcall, Get_Val, Externa
*** 24168,24176 ****
  @end example
  @end quotation
  
! then the imported routine is @cite{_retrieve_val@@4}. However, if instead
! of specifying the @cite{External_Name} parameter you specify the
! @cite{Link_Name} as in the following example:
  
  @quotation
  
--- 24321,24329 ----
  @end example
  @end quotation
  
! then the imported routine is @code{_retrieve_val@@4}. However, if instead
! of specifying the @code{External_Name} parameter you specify the
! @code{Link_Name} as in the following example:
  
  @quotation
  
*************** pragma Import (Stdcall, Get_Val, Link_Na
*** 24180,24186 ****
  @end example
  @end quotation
  
! then the imported routine is @cite{retrieve_val}, that is, there is no
  decoration at all. No leading underscore and no Stdcall suffix
  @code{@@@emph{nn}}.
  
--- 24333,24339 ----
  @end example
  @end quotation
  
! 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}}.
  
*************** pragma Import (Stdcall, My_Var);
*** 24210,24235 ****
  @end quotation
  
  Note that to ease building cross-platform bindings this convention
! will be handled as a @cite{C} calling convention on non-Windows platforms.
  
  @node Win32 Calling Convention,DLL Calling Convention,Stdcall Calling Convention,Windows Calling Conventions
! @anchor{gnat_ugn/platform_specific_information id18}@anchor{1f2}@anchor{gnat_ugn/platform_specific_information win32-calling-convention}@anchor{1f3}
! @subsubsection @cite{Win32} Calling Convention
  
  
  This convention, which is GNAT-specific is fully equivalent to the
! @cite{Stdcall} calling convention described above.
  
  @node DLL Calling Convention,,Win32 Calling Convention,Windows Calling Conventions
! @anchor{gnat_ugn/platform_specific_information id19}@anchor{1f4}@anchor{gnat_ugn/platform_specific_information dll-calling-convention}@anchor{1f5}
! @subsubsection @cite{DLL} Calling Convention
  
  
  This convention, which is GNAT-specific is fully equivalent to the
! @cite{Stdcall} calling convention described above.
  
  @node Introduction to Dynamic Link Libraries DLLs,Using DLLs with GNAT,Windows Calling Conventions,Mixed-Language Programming on Windows
! @anchor{gnat_ugn/platform_specific_information id20}@anchor{1f6}@anchor{gnat_ugn/platform_specific_information introduction-to-dynamic-link-libraries-dlls}@anchor{1f7}
  @subsubsection Introduction to Dynamic Link Libraries (DLLs)
  
  
--- 24363,24388 ----
  @end quotation
  
  Note that to ease building cross-platform bindings this convention
! will be handled as a @code{C} calling convention on non-Windows platforms.
  
  @node Win32 Calling Convention,DLL Calling Convention,Stdcall Calling Convention,Windows Calling Conventions
! @anchor{gnat_ugn/platform_specific_information win32-calling-convention}@anchor{1f2}@anchor{gnat_ugn/platform_specific_information id17}@anchor{1f3}
! @subsubsection @code{Win32} Calling Convention
  
  
  This convention, which is GNAT-specific is fully equivalent to the
! @code{Stdcall} calling convention described above.
  
  @node DLL Calling Convention,,Win32 Calling Convention,Windows Calling Conventions
! @anchor{gnat_ugn/platform_specific_information id18}@anchor{1f4}@anchor{gnat_ugn/platform_specific_information dll-calling-convention}@anchor{1f5}
! @subsubsection @code{DLL} Calling Convention
  
  
  This convention, which is GNAT-specific is fully equivalent to the
! @code{Stdcall} calling convention described above.
  
  @node Introduction to Dynamic Link Libraries DLLs,Using DLLs with GNAT,Windows Calling Conventions,Mixed-Language Programming on Windows
! @anchor{gnat_ugn/platform_specific_information id19}@anchor{1f6}@anchor{gnat_ugn/platform_specific_information introduction-to-dynamic-link-libraries-dlls}@anchor{1f7}
  @subsubsection Introduction to Dynamic Link Libraries (DLLs)
  
  
*************** which is part of your application are in
*** 24291,24298 ****
  of the routines and variables in @code{API.dll}.
  
  @item 
! If present in @code{API.dll}, routines @cite{DllMain} or
! @cite{DllMainCRTStartup} are invoked. These routines typically contain
  the initialization code needed for the well-being of the routines and
  variables exported by the DLL.
  @end itemize
--- 24444,24451 ----
  of the routines and variables in @code{API.dll}.
  
  @item 
! If present in @code{API.dll}, routines @code{DllMain} or
! @code{DllMainCRTStartup} are invoked. These routines typically contain
  the initialization code needed for the well-being of the routines and
  variables exported by the DLL.
  @end itemize
*************** non-relocatable DLLs overlap and these h
*** 24305,24311 ****
  application, a conflict will occur and the application will run
  incorrectly. Hence, when possible, it is always preferable to use and
  build relocatable DLLs. Both relocatable and non-relocatable DLLs are
! supported by GNAT. Note that the @emph{-s} linker option (see GNU Linker
  User's Guide) removes the debugging symbols from the DLL but the DLL can
  still be relocated.
  
--- 24458,24464 ----
  application, a conflict will occur and the application will run
  incorrectly. Hence, when possible, it is always preferable to use and
  build relocatable DLLs. Both relocatable and non-relocatable DLLs are
! supported by GNAT. Note that the @code{-s} linker option (see GNU Linker
  User's Guide) removes the debugging symbols from the DLL but the DLL can
  still be relocated.
  
*************** Windows it is possible (but not required
*** 24316,24322 ****
  a definition file (see @ref{1f8,,The Definition File}).
  
  @node Using DLLs with GNAT,Building DLLs with GNAT Project files,Introduction to Dynamic Link Libraries DLLs,Mixed-Language Programming on Windows
! @anchor{gnat_ugn/platform_specific_information id21}@anchor{1f9}@anchor{gnat_ugn/platform_specific_information using-dlls-with-gnat}@anchor{1ea}
  @subsubsection Using DLLs with GNAT
  
  
--- 24469,24475 ----
  a definition file (see @ref{1f8,,The Definition File}).
  
  @node Using DLLs with GNAT,Building DLLs with GNAT Project files,Introduction to Dynamic Link Libraries DLLs,Mixed-Language Programming on Windows
! @anchor{gnat_ugn/platform_specific_information id20}@anchor{1f9}@anchor{gnat_ugn/platform_specific_information using-dlls-with-gnat}@anchor{1ea}
  @subsubsection Using DLLs with GNAT
  
  
*************** The actual DLL, @code{API.dll}.
*** 24344,24350 ****
  @end itemize
  
  Once you have all the above, to compile an Ada application that uses the
! services of @code{API.dll} and whose main subprogram is @cite{My_Ada_App},
  you simply issue the command
  
  @quotation
--- 24497,24503 ----
  @end itemize
  
  Once you have all the above, to compile an Ada application that uses the
! services of @code{API.dll} and whose main subprogram is @code{My_Ada_App},
  you simply issue the command
  
  @quotation
*************** $ gnatmake my_ada_app -largs -lAPI
*** 24354,24360 ****
  @end example
  @end quotation
  
! The argument @emph{-largs -lAPI} at the end of the @emph{gnatmake} command
  tells the GNAT linker to look for an import library. The linker will
  look for a library name in this specific order:
  
--- 24507,24513 ----
  @end example
  @end quotation
  
! The argument @code{-largs -lAPI} at the end of the @code{gnatmake} command
  tells the GNAT linker to look for an import library. The linker will
  look for a library name in this specific order:
  
*************** pragma Linker_Options ("-lAPI");
*** 24393,24400 ****
  @end example
  @end quotation
  
! you do not have to add @emph{-largs -lAPI} at the end of the
! @emph{gnatmake} command.
  
  If any one of the items above is missing you will have to create it
  yourself. The following sections explain how to do so using as an
--- 24546,24553 ----
  @end example
  @end quotation
  
! you do not have to add @code{-largs -lAPI} at the end of the
! @code{gnatmake} command.
  
  If any one of the items above is missing you will have to create it
  yourself. The following sections explain how to do so using as an
*************** example a fictitious DLL called @code{AP
*** 24407,24413 ****
  @end menu
  
  @node Creating an Ada Spec for the DLL Services,Creating an Import Library,,Using DLLs with GNAT
! @anchor{gnat_ugn/platform_specific_information creating-an-ada-spec-for-the-dll-services}@anchor{1fa}@anchor{gnat_ugn/platform_specific_information id22}@anchor{1fb}
  @subsubsection Creating an Ada Spec for the DLL Services
  
  
--- 24560,24566 ----
  @end menu
  
  @node Creating an Ada Spec for the DLL Services,Creating an Import Library,,Using DLLs with GNAT
! @anchor{gnat_ugn/platform_specific_information id21}@anchor{1fa}@anchor{gnat_ugn/platform_specific_information creating-an-ada-spec-for-the-dll-services}@anchor{1fb}
  @subsubsection Creating an Ada Spec for the DLL Services
  
  
*************** end API;
*** 24447,24453 ****
  @end quotation
  
  @node Creating an Import Library,,Creating an Ada Spec for the DLL Services,Using DLLs with GNAT
! @anchor{gnat_ugn/platform_specific_information id23}@anchor{1fc}@anchor{gnat_ugn/platform_specific_information creating-an-import-library}@anchor{1fd}
  @subsubsection Creating an Import Library
  
  
--- 24600,24606 ----
  @end quotation
  
  @node Creating an Import Library,,Creating an Ada Spec for the DLL Services,Using DLLs with GNAT
! @anchor{gnat_ugn/platform_specific_information id22}@anchor{1fc}@anchor{gnat_ugn/platform_specific_information creating-an-import-library}@anchor{1fd}
  @subsubsection Creating an Import Library
  
  
*************** DLL. Otherwise read on.
*** 24468,24484 ****
  As previously mentioned, and unlike Unix systems, the list of symbols
  that are exported from a DLL must be provided explicitly in Windows.
  The main goal of a definition file is precisely that: list the symbols
! exported by a DLL. A definition file (usually a file with a @cite{.def}
  suffix) has the following structure:
  
  @quotation
  
  @example
! [LIBRARY `name`]
! [DESCRIPTION `string`]
  EXPORTS
!    `symbol1`
!    `symbol2`
     ...
  @end example
  @end quotation
--- 24621,24637 ----
  As previously mentioned, and unlike Unix systems, the list of symbols
  that are exported from a DLL must be provided explicitly in Windows.
  The main goal of a definition file is precisely that: list the symbols
! exported by a DLL. A definition file (usually a file with a @code{.def}
  suffix) has the following structure:
  
  @quotation
  
  @example
! [LIBRARY `@w{`}name`@w{`}]
! [DESCRIPTION `@w{`}string`@w{`}]
  EXPORTS
!    `@w{`}symbol1`@w{`}
!    `@w{`}symbol2`@w{`}
     ...
  @end example
  @end quotation
*************** EXPORTS
*** 24486,24496 ****
  
  @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.
--- 24639,24649 ----
  
  @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.
*************** embedded in the import library.
*** 24498,24504 ****
  @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 @cite{EXPORTS}
  section of @code{API.def} looks like:
  
  @example
--- 24651,24657 ----
  @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}
  section of @code{API.def} looks like:
  
  @example
*************** sections are not relevant to the discuss
*** 24520,24526 ****
  
  You can automatically create the definition file @code{API.def}
  (see @ref{1f8,,The Definition File}) from a DLL.
! For that use the @cite{dlltool} program as follows:
  
  @quotation
  
--- 24673,24679 ----
  
  You can automatically create the definition file @code{API.def}
  (see @ref{1f8,,The Definition File}) from a DLL.
! For that use the @code{dlltool} program as follows:
  
  @quotation
  
*************** For that use the @cite{dlltool} program
*** 24528,24537 ****
  $ dlltool API.dll -z API.def --export-all-symbols
  @end example
  
! Note that if some routines in the DLL have the @cite{Stdcall} convention
  (@ref{1ec,,Windows Calling Conventions}) with stripped @code{@@@emph{nn}}
  suffix then you'll have to edit @code{api.def} to add it, and specify
! @emph{-k} to @emph{gnatdll} when creating the import library.
  
  Here are some hints to find the right @code{@@@emph{nn}} suffix.
  
--- 24681,24690 ----
  $ dlltool API.dll -z API.def --export-all-symbols
  @end example
  
! Note that if some routines in the DLL have the @code{Stdcall} convention
  (@ref{1ec,,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.
  
*************** Here are some hints to find the right @c
*** 24540,24546 ****
  
  @item 
  If you have the Microsoft import library (.lib), it is possible to get
! the right symbols by using Microsoft @cite{dumpbin} tool (see the
  corresponding Microsoft documentation for further details).
  
  @example
--- 24693,24699 ----
  
  @item 
  If you have the Microsoft import library (.lib), it is possible to get
! the right symbols by using Microsoft @code{dumpbin} tool (see the
  corresponding Microsoft documentation for further details).
  
  @example
*************** definition file and add the right suffix
*** 24558,24564 ****
  
  
  To create a static import library from @code{API.dll} with the GNAT tools
! you should create the .def file, then use @cite{gnatdll} tool
  (see @ref{200,,Using gnatdll}) as follows:
  
  @quotation
--- 24711,24717 ----
  
  
  To create a static import library from @code{API.dll} with the GNAT tools
! you should create the .def file, then use @code{gnatdll} tool
  (see @ref{200,,Using gnatdll}) as follows:
  
  @quotation
*************** you should create the .def file, then us
*** 24567,24581 ****
  $ gnatdll -e API.def -d API.dll
  @end example
  
! @cite{gnatdll} takes as input a definition file @code{API.def} and the
  name of the DLL containing the services listed in the definition file
  @code{API.dll}. The name of the static import library generated is
  computed from the name of the definition file as follows: if the
! definition file name is @cite{xyz`}.def`, the import library name will
! be @cite{lib`@w{`}xyz`}.a`. Note that in the previous example option
! @emph{-e} could have been removed because the name of the definition
! file (before the '@cite{.def}' suffix) is the same as the name of the
! DLL (@ref{200,,Using gnatdll} for more information about @cite{gnatdll}).
  @end quotation
  @anchor{gnat_ugn/platform_specific_information msvs-style-import-library}@anchor{201}
  @subsubheading Microsoft-Style Import Library
--- 24720,24734 ----
  $ gnatdll -e API.def -d API.dll
  @end example
  
! @code{gnatdll} takes as input a definition file @code{API.def} and the
  name of the DLL containing the services listed in the definition file
  @code{API.dll}. The name of the static import library generated is
  computed from the name of the definition file as follows: if the
! definition file name is @code{xyz.def}, the import library name will
! be @code{libxyz.a}. Note that in the previous example option
! @code{-e} could have been removed because the name of the definition
! file (before the @code{.def} suffix) is the same as the name of the
! DLL (@ref{200,,Using gnatdll} for more information about @code{gnatdll}).
  @end quotation
  @anchor{gnat_ugn/platform_specific_information msvs-style-import-library}@anchor{201}
  @subsubheading Microsoft-Style Import Library
*************** DLL (@ref{200,,Using gnatdll} for more i
*** 24583,24593 ****
  
  A Microsoft import library is needed only if you plan to make an
  Ada DLL available to applications developed with Microsoft
! tools (@ref{1e8,,Mixed-Language Programming on Windows}).
  
  To create a Microsoft-style import library for @code{API.dll} you
  should create the .def file, then build the actual import library using
! Microsoft's @cite{lib} utility:
  
  @quotation
  
--- 24736,24746 ----
  
  A Microsoft import library is needed only if you plan to make an
  Ada DLL available to applications developed with Microsoft
! tools (@ref{1e9,,Mixed-Language Programming on Windows}).
  
  To create a Microsoft-style import library for @code{API.dll} you
  should create the .def file, then build the actual import library using
! Microsoft's @code{lib} utility:
  
  @quotation
  
*************** LIBRARY      "API"
*** 24603,24613 ****
  @end example
  
  See the Microsoft documentation for further details about the usage of
! @cite{lib}.
  @end quotation
  
  @node Building DLLs with GNAT Project files,Building DLLs with GNAT,Using DLLs with GNAT,Mixed-Language Programming on Windows
! @anchor{gnat_ugn/platform_specific_information id24}@anchor{202}@anchor{gnat_ugn/platform_specific_information building-dlls-with-gnat-project-files}@anchor{1eb}
  @subsubsection Building DLLs with GNAT Project files
  
  
--- 24756,24766 ----
  @end example
  
  See the Microsoft documentation for further details about the usage of
! @code{lib}.
  @end quotation
  
  @node Building DLLs with GNAT Project files,Building DLLs with GNAT,Using DLLs with GNAT,Mixed-Language Programming on Windows
! @anchor{gnat_ugn/platform_specific_information id23}@anchor{202}@anchor{gnat_ugn/platform_specific_information building-dlls-with-gnat-project-files}@anchor{1eb}
  @subsubsection Building DLLs with GNAT Project files
  
  
*************** See the @emph{Library Projects} section
*** 24619,24629 ****
  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 @cite{DllMain} routine which is used for auto-initialization
  of shared libraries, so it is not possible to have library level tasks in SALs.
  
  @node Building DLLs with GNAT,Building DLLs with gnatdll,Building DLLs with GNAT Project files,Mixed-Language Programming on Windows
! @anchor{gnat_ugn/platform_specific_information building-dlls-with-gnat}@anchor{203}@anchor{gnat_ugn/platform_specific_information id25}@anchor{204}
  @subsubsection Building DLLs with GNAT
  
  
--- 24772,24782 ----
  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
  of shared libraries, so it is not possible to have library level tasks in SALs.
  
  @node Building DLLs with GNAT,Building DLLs with gnatdll,Building DLLs with GNAT Project files,Mixed-Language Programming on Windows
! @anchor{gnat_ugn/platform_specific_information building-dlls-with-gnat}@anchor{203}@anchor{gnat_ugn/platform_specific_information id24}@anchor{204}
  @subsubsection Building DLLs with GNAT
  
  
*************** and use DLLs with GNAT.
*** 24640,24651 ****
  @item 
  Building object files.
  The first step is to build all objects files that are to be included
! into the DLL. This is done by using the standard @emph{gnatmake} tool.
  
  @item 
  Building the DLL.
! To build the DLL you must use @emph{gcc}'s @emph{-shared} and
! @emph{-shared-libgcc} options. It is quite simple to use this method:
  
  @example
  $ gcc -shared -shared-libgcc -o api.dll obj1.o obj2.o ...
--- 24793,24804 ----
  @item 
  Building object files.
  The first step is to build all objects files that are to be included
! into the DLL. This is done by using the standard @code{gnatmake} tool.
  
  @item 
  Building the DLL.
! To build the DLL you must use the @code{gcc} @code{-shared} and
! @code{-shared-libgcc} options. It is quite simple to use this method:
  
  @example
  $ gcc -shared -shared-libgcc -o api.dll obj1.o obj2.o ...
*************** $ gcc -shared -shared-libgcc -o api.dll
*** 24653,24659 ****
  
  It is important to note that in this case all symbols found in the
  object files are automatically exported. It is possible to restrict
! the set of symbols to export by passing to @emph{gcc} a definition
  file (see @ref{1f8,,The Definition File}).
  For example:
  
--- 24806,24812 ----
  
  It is important to note that in this case all symbols found in the
  object files are automatically exported. It is possible to restrict
! the set of symbols to export by passing to @code{gcc} a definition
  file (see @ref{1f8,,The Definition File}).
  For example:
  
*************** $ attrib +R apilib\\*.ali
*** 24681,24687 ****
  
  At this point it is possible to use the DLL by directly linking
  against it. Note that you must use the GNAT shared runtime when using
! GNAT shared libraries. This is achieved by using @emph{-shared} binder's
  option.
  
  @quotation
--- 24834,24840 ----
  
  At this point it is possible to use the DLL by directly linking
  against it. Note that you must use the GNAT shared runtime when using
! GNAT shared libraries. This is achieved by using the @code{-shared} binder
  option.
  
  @quotation
*************** $ gnatmake main -Iapilib -bargs -shared
*** 24692,24698 ****
  @end quotation
  
  @node Building DLLs with gnatdll,Ada DLLs and Finalization,Building DLLs with GNAT,Mixed-Language Programming on Windows
! @anchor{gnat_ugn/platform_specific_information building-dlls-with-gnatdll}@anchor{205}@anchor{gnat_ugn/platform_specific_information id26}@anchor{206}
  @subsubsection Building DLLs with gnatdll
  
  
--- 24845,24851 ----
  @end quotation
  
  @node Building DLLs with gnatdll,Ada DLLs and Finalization,Building DLLs with GNAT,Mixed-Language Programming on Windows
! @anchor{gnat_ugn/platform_specific_information building-dlls-with-gnatdll}@anchor{205}@anchor{gnat_ugn/platform_specific_information id25}@anchor{206}
  @subsubsection Building DLLs with gnatdll
  
  
*************** Note that it is preferred to use GNAT Pr
*** 24704,24710 ****
  DLL support (@ref{203,,Building DLLs with GNAT}) or to build DLLs.
  
  This section explains how to build DLLs containing Ada code using
! @cite{gnatdll}. These DLLs will be referred to as Ada DLLs in the
  remainder of this section.
  
  The steps required to build an Ada DLL that is to be used by Ada as well as
--- 24857,24863 ----
  DLL support (@ref{203,,Building DLLs with GNAT}) or to build DLLs.
  
  This section explains how to build DLLs containing Ada code using
! @code{gnatdll}. These DLLs will be referred to as Ada DLLs in the
  remainder of this section.
  
  The steps required to build an Ada DLL that is to be used by Ada as well as
*************** non-Ada applications are as follows:
*** 24714,24735 ****
  @itemize *
  
  @item 
! You need to mark each Ada @emph{entity} exported by the DLL with a @cite{C} or
! @cite{Stdcall} calling convention to avoid any Ada name mangling for the
  entities exported by the DLL
  (see @ref{207,,Exporting Ada Entities}). You can
  skip this step if you plan to use the Ada DLL only from Ada applications.
  
  @item 
  Your Ada code must export an initialization routine which calls the routine
! @cite{adainit} generated by @emph{gnatbind} to perform the elaboration of
  the Ada code in the DLL (@ref{208,,Ada DLLs and Elaboration}). The initialization
  routine exported by the Ada DLL must be invoked by the clients of the DLL
  to initialize the DLL.
  
  @item 
  When useful, the DLL should also export a finalization routine which calls
! routine @cite{adafinal} generated by @emph{gnatbind} to perform the
  finalization of the Ada code in the DLL (@ref{209,,Ada DLLs and Finalization}).
  The finalization routine exported by the Ada DLL must be invoked by the
  clients of the DLL when the DLL services are no further needed.
--- 24867,24888 ----
  @itemize *
  
  @item 
! You need to mark each Ada entity exported by the DLL with a @code{C} or
! @code{Stdcall} calling convention to avoid any Ada name mangling for the
  entities exported by the DLL
  (see @ref{207,,Exporting Ada Entities}). You can
  skip this step if you plan to use the Ada DLL only from Ada applications.
  
  @item 
  Your Ada code must export an initialization routine which calls the routine
! @code{adainit} generated by @code{gnatbind} to perform the elaboration of
  the Ada code in the DLL (@ref{208,,Ada DLLs and Elaboration}). The initialization
  routine exported by the Ada DLL must be invoked by the clients of the DLL
  to initialize the DLL.
  
  @item 
  When useful, the DLL should also export a finalization routine which calls
! routine @code{adafinal} generated by @code{gnatbind} to perform the
  finalization of the Ada code in the DLL (@ref{209,,Ada DLLs and Finalization}).
  The finalization routine exported by the Ada DLL must be invoked by the
  clients of the DLL when the DLL services are no further needed.
*************** You must provide a definition file listi
*** 24743,24755 ****
  (@ref{1f8,,The Definition File}).
  
  @item 
! Finally you must use @cite{gnatdll} to produce the DLL and the import
  library (@ref{200,,Using gnatdll}).
  @end itemize
  
! Note that a relocatable DLL stripped using the @cite{strip}
  binutils tool will not be relocatable anymore. To build a DLL without
! debug information pass @cite{-largs -s} to @cite{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}.
--- 24896,24908 ----
  (@ref{1f8,,The Definition File}).
  
  @item 
! Finally you must use @code{gnatdll} to produce the DLL and the import
  library (@ref{200,,Using gnatdll}).
  @end itemize
  
! Note that a relocatable DLL stripped using the @code{strip}
  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}.
*************** chapter of the @emph{GPRbuild User's Gui
*** 24769,24791 ****
  
  
  When using Ada DLLs from Ada applications there is a limitation users
! should be aware of. Because on Windows the GNAT run time is not in a DLL of
! its own, each Ada DLL includes a part of the GNAT run time. Specifically,
! each Ada DLL includes the services of the GNAT run time that are necessary
  to the Ada code inside the DLL. As a result, when an Ada program uses an
! Ada DLL there are two independent GNAT run times: one in the Ada DLL and
  one in the main program.
  
  It is therefore not possible to exchange GNAT run-time objects between the
  Ada DLL and the main Ada program. Example of GNAT run-time objects are file
! handles (e.g., @cite{Text_IO.File_Type}), tasks types, protected objects
  types, etc.
  
  It is completely safe to exchange plain elementary, array or record types,
  Windows object handles, etc.
  
  @node Exporting Ada Entities,Ada DLLs and Elaboration,Limitations When Using Ada DLLs from Ada,Building DLLs with gnatdll
! @anchor{gnat_ugn/platform_specific_information exporting-ada-entities}@anchor{207}@anchor{gnat_ugn/platform_specific_information id27}@anchor{20b}
  @subsubsection Exporting Ada Entities
  
  
--- 24922,24944 ----
  
  
  When using Ada DLLs from Ada applications there is a limitation users
! should be aware of. Because on Windows the GNAT run-time is not in a DLL of
! its own, each Ada DLL includes a part of the GNAT run-time. Specifically,
! each Ada DLL includes the services of the GNAT run-time that are necessary
  to the Ada code inside the DLL. As a result, when an Ada program uses an
! Ada DLL there are two independent GNAT run-times: one in the Ada DLL and
  one in the main program.
  
  It is therefore not possible to exchange GNAT run-time objects between the
  Ada DLL and the main Ada program. Example of GNAT run-time objects are file
! handles (e.g., @code{Text_IO.File_Type}), tasks types, protected objects
  types, etc.
  
  It is completely safe to exchange plain elementary, array or record types,
  Windows object handles, etc.
  
  @node Exporting Ada Entities,Ada DLLs and Elaboration,Limitations When Using Ada DLLs from Ada,Building DLLs with gnatdll
! @anchor{gnat_ugn/platform_specific_information exporting-ada-entities}@anchor{207}@anchor{gnat_ugn/platform_specific_information id26}@anchor{20b}
  @subsubsection Exporting Ada Entities
  
  
*************** Windows object handles, etc.
*** 24793,24801 ****
  
  Building a DLL is a way to encapsulate a set of services usable from any
  application. As a result, the Ada entities exported by a DLL should be
! exported with the @cite{C} or @cite{Stdcall} calling conventions to avoid
  any Ada name mangling. As an example here is an Ada package
! @cite{API}, spec and body, exporting two procedures, a function, and a
  variable:
  
  @quotation
--- 24946,24954 ----
  
  Building a DLL is a way to encapsulate a set of services usable from any
  application. As a result, the Ada entities exported by a DLL should be
! exported with the @code{C} or @code{Stdcall} calling conventions to avoid
  any Ada name mangling. As an example here is an Ada package
! @code{API}, spec and body, exporting two procedures, a function, and a
  variable:
  
  @quotation
*************** end API;
*** 24847,24853 ****
  @end quotation
  
  If the Ada DLL you are building will only be used by Ada applications
! you do not have to export Ada entities with a @cite{C} or @cite{Stdcall}
  convention. As an example, the previous package could be written as
  follows:
  
--- 25000,25006 ----
  @end quotation
  
  If the Ada DLL you are building will only be used by Ada applications
! you do not have to export Ada entities with a @code{C} or @code{Stdcall}
  convention. As an example, the previous package could be written as
  follows:
  
*************** end API;
*** 24882,24894 ****
  @end example
  @end quotation
  
! Note that if you do not export the Ada entities with a @cite{C} or
! @cite{Stdcall} convention you will have to provide the mangled Ada names
  in the definition file of the Ada DLL
  (@ref{20c,,Creating the Definition File}).
  
  @node Ada DLLs and Elaboration,,Exporting Ada Entities,Building DLLs with gnatdll
! @anchor{gnat_ugn/platform_specific_information ada-dlls-and-elaboration}@anchor{208}@anchor{gnat_ugn/platform_specific_information id28}@anchor{20d}
  @subsubsection Ada DLLs and Elaboration
  
  
--- 25035,25047 ----
  @end example
  @end quotation
  
! Note that if you do not export the Ada entities with a @code{C} or
! @code{Stdcall} convention you will have to provide the mangled Ada names
  in the definition file of the Ada DLL
  (@ref{20c,,Creating the Definition File}).
  
  @node Ada DLLs and Elaboration,,Exporting Ada Entities,Building DLLs with gnatdll
! @anchor{gnat_ugn/platform_specific_information ada-dlls-and-elaboration}@anchor{208}@anchor{gnat_ugn/platform_specific_information id27}@anchor{20d}
  @subsubsection Ada DLLs and Elaboration
  
  
*************** user of your DLL must do is elaborate th
*** 24900,24925 ****
  (@ref{f,,Elaboration Order Handling in GNAT}).
  
  To achieve this you must export an initialization routine
! (@cite{Initialize_API} in the previous example), which must be invoked
  before using any of the DLL services. This elaboration routine must call
! the Ada elaboration routine @cite{adainit} generated by the GNAT binder
  (@ref{b4,,Binding with Non-Ada Main Programs}). See the body of
! @cite{Initialize_Api} for an example. Note that the GNAT binder is
! automatically invoked during the DLL build process by the @cite{gnatdll}
  tool (@ref{200,,Using gnatdll}).
  
  When a DLL is loaded, Windows systematically invokes a routine called
! @cite{DllMain}. It would therefore be possible to call @cite{adainit}
! directly from @cite{DllMain} without having to provide an explicit
  initialization routine. Unfortunately, it is not possible to call
! @cite{adainit} from the @cite{DllMain} if your program has library level
! tasks because access to the @cite{DllMain} entry point is serialized by
  the system (that is, only a single thread can execute 'through' it at a
! time), which means that the GNAT run time will deadlock waiting for the
  newly created task to complete its initialization.
  
  @node Ada DLLs and Finalization,Creating a Spec for Ada DLLs,Building DLLs with gnatdll,Mixed-Language Programming on Windows
! @anchor{gnat_ugn/platform_specific_information id29}@anchor{20e}@anchor{gnat_ugn/platform_specific_information ada-dlls-and-finalization}@anchor{209}
  @subsubsection Ada DLLs and Finalization
  
  
--- 25053,25078 ----
  (@ref{f,,Elaboration Order Handling in GNAT}).
  
  To achieve this you must export an initialization routine
! (@code{Initialize_API} in the previous example), which must be invoked
  before using any of the DLL services. This elaboration routine must call
! the Ada elaboration routine @code{adainit} generated by the GNAT binder
  (@ref{b4,,Binding with Non-Ada Main Programs}). See the body of
! @code{Initialize_Api} for an example. Note that the GNAT binder is
! automatically invoked during the DLL build process by the @code{gnatdll}
  tool (@ref{200,,Using gnatdll}).
  
  When a DLL is loaded, Windows systematically invokes a routine called
! @code{DllMain}. It would therefore be possible to call @code{adainit}
! directly from @code{DllMain} without having to provide an explicit
  initialization routine. Unfortunately, it is not possible to call
! @code{adainit} from the @code{DllMain} if your program has library level
! tasks because access to the @code{DllMain} entry point is serialized by
  the system (that is, only a single thread can execute 'through' it at a
! time), which means that the GNAT run-time will deadlock waiting for the
  newly created task to complete its initialization.
  
  @node Ada DLLs and Finalization,Creating a Spec for Ada DLLs,Building DLLs with gnatdll,Mixed-Language Programming on Windows
! @anchor{gnat_ugn/platform_specific_information id28}@anchor{20e}@anchor{gnat_ugn/platform_specific_information ada-dlls-and-finalization}@anchor{209}
  @subsubsection Ada DLLs and Finalization
  
  
*************** When the services of an Ada DLL are no l
*** 24929,24949 ****
  invoke the DLL finalization routine, if available. The DLL finalization
  routine is in charge of releasing all resources acquired by the DLL. In the
  case of the Ada code contained in the DLL, this is achieved by calling
! routine @cite{adafinal} generated by the GNAT binder
  (@ref{b4,,Binding with Non-Ada Main Programs}).
! See the body of @cite{Finalize_Api} for an
  example. As already pointed out the GNAT binder is automatically invoked
! during the DLL build process by the @cite{gnatdll} tool
  (@ref{200,,Using gnatdll}).
  
  @node Creating a Spec for Ada DLLs,GNAT and Windows Resources,Ada DLLs and Finalization,Mixed-Language Programming on Windows
! @anchor{gnat_ugn/platform_specific_information id30}@anchor{20f}@anchor{gnat_ugn/platform_specific_information creating-a-spec-for-ada-dlls}@anchor{210}
  @subsubsection Creating a Spec for Ada DLLs
  
  
  To use the services exported by the Ada DLL from another programming
  language (e.g., C), you have to translate the specs of the exported Ada
! entities in that language. For instance in the case of @cite{API.dll},
  the corresponding C header file could look like:
  
  @quotation
--- 25082,25102 ----
  invoke the DLL finalization routine, if available. The DLL finalization
  routine is in charge of releasing all resources acquired by the DLL. In the
  case of the Ada code contained in the DLL, this is achieved by calling
! routine @code{adafinal} generated by the GNAT binder
  (@ref{b4,,Binding with Non-Ada Main Programs}).
! See the body of @code{Finalize_Api} for an
  example. As already pointed out the GNAT binder is automatically invoked
! during the DLL build process by the @code{gnatdll} tool
  (@ref{200,,Using gnatdll}).
  
  @node Creating a Spec for Ada DLLs,GNAT and Windows Resources,Ada DLLs and Finalization,Mixed-Language Programming on Windows
! @anchor{gnat_ugn/platform_specific_information id29}@anchor{20f}@anchor{gnat_ugn/platform_specific_information creating-a-spec-for-ada-dlls}@anchor{210}
  @subsubsection Creating a Spec for Ada DLLs
  
  
  To use the services exported by the Ada DLL from another programming
  language (e.g., C), you have to translate the specs of the exported Ada
! entities in that language. For instance in the case of @code{API.dll},
  the corresponding C header file could look like:
  
  @quotation
*************** int factorial (int);
*** 24958,24967 ****
  It is important to understand that when building an Ada DLL to be used by
  other Ada applications, you need two different specs for the packages
  contained in the DLL: one for building the DLL and the other for using
! the DLL. This is because the @cite{DLL} calling convention is needed to
  use a variable defined in a DLL, but when building the DLL, the variable
! must have either the @cite{Ada} or @cite{C} calling convention. As an
! example consider a DLL comprising the following package @cite{API}:
  
  @quotation
  
--- 25111,25120 ----
  It is important to understand that when building an Ada DLL to be used by
  other Ada applications, you need two different specs for the packages
  contained in the DLL: one for building the DLL and the other for using
! the DLL. This is because the @code{DLL} calling convention is needed to
  use a variable defined in a DLL, but when building the DLL, the variable
! must have either the @code{Ada} or @code{C} calling convention. As an
! example consider a DLL comprising the following package @code{API}:
  
  @quotation
  
*************** end API;
*** 24974,24981 ****
  @end example
  @end quotation
  
! After producing a DLL containing package @cite{API}, the spec that
! must be used to import @cite{API.Count} from Ada code outside of the
  DLL is:
  
  @quotation
--- 25127,25134 ----
  @end example
  @end quotation
  
! After producing a DLL containing package @code{API}, the spec that
! must be used to import @code{API.Count} from Ada code outside of the
  DLL is:
  
  @quotation
*************** end API;
*** 24995,25008 ****
  @end menu
  
  @node Creating the Definition File,Using gnatdll,,Creating a Spec for Ada DLLs
! @anchor{gnat_ugn/platform_specific_information creating-the-definition-file}@anchor{20c}@anchor{gnat_ugn/platform_specific_information id31}@anchor{211}
  @subsubsection Creating the Definition File
  
  
  The definition file is the last file needed to build the DLL. It lists
  the exported symbols. As an example, the definition file for a DLL
! containing only package @cite{API} (where all the entities are exported
! with a @cite{C} calling convention) is:
  
  @quotation
  
--- 25148,25161 ----
  @end menu
  
  @node Creating the Definition File,Using gnatdll,,Creating a Spec for Ada DLLs
! @anchor{gnat_ugn/platform_specific_information creating-the-definition-file}@anchor{20c}@anchor{gnat_ugn/platform_specific_information id30}@anchor{211}
  @subsubsection Creating the Definition File
  
  
  The definition file is the last file needed to build the DLL. It lists
  the exported symbols. As an example, the definition file for a DLL
! containing only package @code{API} (where all the entities are exported
! with a @code{C} calling convention) is:
  
  @quotation
  
*************** EXPORTS
*** 25015,25021 ****
  @end example
  @end quotation
  
! If the @cite{C} calling convention is missing from package @cite{API},
  then the definition file contains the mangled Ada names of the above
  entities, which in this case are:
  
--- 25168,25174 ----
  @end example
  @end quotation
  
! If the @code{C} calling convention is missing from package @code{API},
  then the definition file contains the mangled Ada names of the above
  entities, which in this case are:
  
*************** EXPORTS
*** 25031,25063 ****
  @end quotation
  
  @node Using gnatdll,,Creating the Definition File,Creating a Spec for Ada DLLs
! @anchor{gnat_ugn/platform_specific_information using-gnatdll}@anchor{200}@anchor{gnat_ugn/platform_specific_information id32}@anchor{212}
! @subsubsection Using @cite{gnatdll}
  
  
  @geindex gnatdll
  
! @cite{gnatdll} is a tool to automate the DLL build process once all the Ada
  and non-Ada sources that make up your DLL have been compiled.
! @cite{gnatdll} is actually in charge of two distinct tasks: build the
  static import library for the DLL and the actual DLL. The form of the
! @cite{gnatdll} command is
  
  @quotation
  
  @example
! $ gnatdll [`switches`] `list-of-files` [-largs `opts`]
  @end example
  @end quotation
  
! where @cite{list-of-files} is a list of ALI and object files. The object
  file list must be the exact list of objects corresponding to the non-Ada
  sources whose services are to be included in the DLL. The ALI file list
  must be the exact list of ALI files for the corresponding Ada sources
! whose services are to be included in the DLL. If @cite{list-of-files} is
  missing, only the static import library is generated.
  
! You may specify any of the following switches to @cite{gnatdll}:
  
  @quotation
  
--- 25184,25216 ----
  @end quotation
  
  @node Using gnatdll,,Creating the Definition File,Creating a Spec for Ada DLLs
! @anchor{gnat_ugn/platform_specific_information using-gnatdll}@anchor{200}@anchor{gnat_ugn/platform_specific_information id31}@anchor{212}
! @subsubsection Using @code{gnatdll}
  
  
  @geindex gnatdll
  
! @code{gnatdll} is a tool to automate the DLL build process once all the Ada
  and non-Ada sources that make up your DLL have been compiled.
! @code{gnatdll} is actually in charge of two distinct tasks: build the
  static import library for the DLL and the actual DLL. The form of the
! @code{gnatdll} command is
  
  @quotation
  
  @example
! $ gnatdll [ switches ] list-of-files [ -largs opts ]
  @end example
  @end quotation
  
! where @code{list-of-files} is a list of ALI and object files. The object
  file list must be the exact list of objects corresponding to the non-Ada
  sources whose services are to be included in the DLL. The ALI file list
  must be the exact list of ALI files for the corresponding Ada sources
! whose services are to be included in the DLL. If @code{list-of-files} is
  missing, only the static import library is generated.
  
! You may specify any of the following switches to @code{gnatdll}:
  
  @quotation
  
*************** You may specify any of the following swi
*** 25069,25077 ****
  
  @item @code{-a[@emph{address}]}
  
! Build a non-relocatable DLL at @cite{address}. If @cite{address} is not
! specified the default address @cite{0x11000000} will be used. By default,
! when this switch is missing, @cite{gnatdll} builds relocatable DLL. We
  advise the reader to build relocatable DLL.
  
  @geindex -b (gnatdll)
--- 25222,25230 ----
  
  @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,
! when this switch is missing, @code{gnatdll} builds relocatable DLL. We
  advise the reader to build relocatable DLL.
  
  @geindex -b (gnatdll)
*************** advise the reader to build relocatable D
*** 25079,25111 ****
  @item @code{-b @emph{address}}
  
  Set the relocatable DLL base address. By default the address is
! @cite{0x11000000}.
  
  @geindex -bargs (gnatdll)
  
  @item @code{-bargs @emph{opts}}
  
! Binder options. Pass @cite{opts} to the binder.
  
  @geindex -d (gnatdll)
  
  @item @code{-d @emph{dllfile}}
  
! @cite{dllfile} is the name of the DLL. This switch must be present for
! @cite{gnatdll} to do anything. The name of the generated import library is
! obtained algorithmically from @cite{dllfile} as shown in the following
! example: if @cite{dllfile} is @cite{xyz.dll}, the import library name is
! @cite{libxyz.dll.a}. The name of the definition file to use (if not specified
! by option @emph{-e}) is obtained algorithmically from @cite{dllfile}
  as shown in the following example:
! if @cite{dllfile} is @cite{xyz.dll}, the definition
! file used is @cite{xyz.def}.
  
  @geindex -e (gnatdll)
  
  @item @code{-e @emph{deffile}}
  
! @cite{deffile} is the name of the definition file.
  
  @geindex -g (gnatdll)
  
--- 25232,25264 ----
  @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
! obtained algorithmically from @code{dllfile} as shown in the following
! example: if @code{dllfile} is @code{xyz.dll}, the import library name is
! @code{libxyz.dll.a}. The name of the definition file to use (if not specified
! by option @code{-e}) is obtained algorithmically from @code{dllfile}
  as shown in the following example:
! if @code{dllfile} is @code{xyz.dll}, the definition
! file used is @code{xyz.def}.
  
  @geindex -e (gnatdll)
  
  @item @code{-e @emph{deffile}}
  
! @code{deffile} is the name of the definition file.
  
  @geindex -g (gnatdll)
  
*************** file used is @cite{xyz.def}.
*** 25114,25133 ****
  Generate debugging information. This information is stored in the object
  file and copied from there to the final DLL file by the linker,
  where it can be read by the debugger. You must use the
! @emph{-g} switch if you plan on using the debugger or the symbolic
  stack traceback.
  
  @geindex -h (gnatdll)
  
  @item @code{-h}
  
! Help mode. Displays @cite{gnatdll} switch usage information.
  
  @geindex -I (gnatdll)
  
  @item @code{-I@emph{dir}}
  
! Direct @cite{gnatdll} to search the @cite{dir} directory for source and
  object files needed to build the DLL.
  (@ref{89,,Search Paths and the Run-Time Library (RTL)}).
  
--- 25267,25286 ----
  Generate debugging information. This information is stored in the object
  file and copied from there to the final DLL file by the linker,
  where it can be read by the debugger. You must use the
! @code{-g} switch if you plan on using the debugger or the symbolic
  stack traceback.
  
  @geindex -h (gnatdll)
  
  @item @code{-h}
  
! Help mode. Displays @code{gnatdll} switch usage information.
  
  @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.
  (@ref{89,,Search Paths and the Run-Time Library (RTL)}).
  
*************** object files needed to build the DLL.
*** 25137,25154 ****
  
  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 @cite{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
! @emph{-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
! @cite{file}, instead of being given in the command line. Each line in
! @cite{file} contains the name of an ALI or object file.
  
  @geindex -n (gnatdll)
  
--- 25290,25307 ----
  
  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
! @code{file} contains the name of an ALI or object file.
  
  @geindex -n (gnatdll)
  
*************** Verbose mode. Display extra information.
*** 25172,25181 ****
  
  @item @code{-largs @emph{opts}}
  
! Linker options. Pass @cite{opts} to the linker.
  @end table
  
! @subsubheading @cite{gnatdll} Example
  
  
  As an example the command to build a relocatable DLL from @code{api.adb}
--- 25325,25334 ----
  
  @item @code{-largs @emph{opts}}
  
! Linker options. Pass @code{opts} to the linker.
  @end table
  
! @subsubheading @code{gnatdll} Example
  
  
  As an example the command to build a relocatable DLL from @code{api.adb}
*************** $ gnatdll -d api.dll
*** 25208,25232 ****
  @end example
  @end quotation
  
! @subsubheading @cite{gnatdll} behind the Scenes
  
  
! This section details the steps involved in creating a DLL. @cite{gnatdll}
  does these steps for you. Unless you are interested in understanding what
  goes on behind the scenes, you should skip this section.
  
! We use the previous example of a DLL containing the Ada package @cite{API},
  to illustrate the steps necessary to build a DLL. The starting point is a
  set of objects that will make up the DLL and the corresponding ALI
  files. In the case of this example this means that @code{api.o} and
! @code{api.ali} are available. To build a relocatable DLL, @cite{gnatdll} does
  the following:
  
  
  @itemize *
  
  @item 
! @cite{gnatdll} builds the base file (@code{api.base}). A base file gives
  the information necessary to generate relocation information for the
  DLL.
  
--- 25361,25385 ----
  @end example
  @end quotation
  
! @subsubheading @code{gnatdll} behind the Scenes
  
  
! This section details the steps involved in creating a DLL. @code{gnatdll}
  does these steps for you. Unless you are interested in understanding what
  goes on behind the scenes, you should skip this section.
  
! We use the previous example of a DLL containing the Ada package @code{API},
  to illustrate the steps necessary to build a DLL. The starting point is a
  set of objects that will make up the DLL and the corresponding ALI
  files. In the case of this example this means that @code{api.o} and
! @code{api.ali} are available. To build a relocatable DLL, @code{gnatdll} does
  the following:
  
  
  @itemize *
  
  @item 
! @code{gnatdll} builds the base file (@code{api.base}). A base file gives
  the information necessary to generate relocation information for the
  DLL.
  
*************** $ gnatbind -n api
*** 25235,25248 ****
  $ gnatlink api -o api.jnk -mdll -Wl,--base-file,api.base
  @end example
  
! In addition to the base file, the @emph{gnatlink} command generates an
! output file @code{api.jnk} which can be discarded. The @emph{-mdll} switch
! asks @emph{gnatlink} to generate the routines @cite{DllMain} and
! @cite{DllMainCRTStartup} that are called by the Windows loader when the DLL
  is loaded into memory.
  
  @item 
! @cite{gnatdll} uses @cite{dlltool} (see @ref{213,,Using dlltool}) to build the
  export table (@code{api.exp}). The export table contains the relocation
  information in a form which can be used during the final link to ensure
  that the Windows loader is able to place the DLL anywhere in memory.
--- 25388,25401 ----
  $ gnatlink api -o api.jnk -mdll -Wl,--base-file,api.base
  @end example
  
! In addition to the base file, the @code{gnatlink} command generates an
! output file @code{api.jnk} which can be discarded. The @code{-mdll} switch
! asks @code{gnatlink} to generate the routines @code{DllMain} and
! @code{DllMainCRTStartup} that are called by the Windows loader when the DLL
  is loaded into memory.
  
  @item 
! @code{gnatdll} uses @code{dlltool} (see @ref{213,,Using dlltool}) to build the
  export table (@code{api.exp}). The export table contains the relocation
  information in a form which can be used during the final link to ensure
  that the Windows loader is able to place the DLL anywhere in memory.
*************** $ dlltool --dllname api.dll --def api.de
*** 25253,25261 ****
  @end example
  
  @item 
! @cite{gnatdll} builds the base file using the new export table. Note that
! @emph{gnatbind} must be called once again since the binder generated file
! has been deleted during the previous call to @emph{gnatlink}.
  
  @example
  $ gnatbind -n api
--- 25406,25414 ----
  @end example
  
  @item 
! @code{gnatdll} builds the base file using the new export table. Note that
! @code{gnatbind} must be called once again since the binder generated file
! has been deleted during the previous call to @code{gnatlink}.
  
  @example
  $ gnatbind -n api
*************** $ gnatlink api -o api.jnk api.exp -mdll
*** 25264,25270 ****
  @end example
  
  @item 
! @cite{gnatdll} builds the new export table using the new base file and
  generates the DLL import library @code{libAPI.dll.a}.
  
  @example
--- 25417,25423 ----
  @end example
  
  @item 
! @code{gnatdll} builds the new export table using the new base file and
  generates the DLL import library @code{libAPI.dll.a}.
  
  @example
*************** $ dlltool --dllname api.dll --def api.de
*** 25273,25279 ****
  @end example
  
  @item 
! Finally @cite{gnatdll} builds the relocatable DLL using the final export
  table.
  
  @example
--- 25426,25432 ----
  @end example
  
  @item 
! Finally @code{gnatdll} builds the relocatable DLL using the final export
  table.
  
  @example
*************** $ gnatlink api api.exp -o api.dll -mdll
*** 25282,25293 ****
  @end example
  @end itemize
  @anchor{gnat_ugn/platform_specific_information using-dlltool}@anchor{213}
! @subsubheading Using @cite{dlltool}
  
  
! @cite{dlltool} is the low-level tool used by @cite{gnatdll} to build
  DLLs and static import libraries. This section summarizes the most
! common @cite{dlltool} switches. The form of the @cite{dlltool} command
  is
  
  @quotation
--- 25435,25446 ----
  @end example
  @end itemize
  @anchor{gnat_ugn/platform_specific_information using-dlltool}@anchor{213}
! @subsubheading Using @code{dlltool}
  
  
! @code{dlltool} is the low-level tool used by @code{gnatdll} to build
  DLLs and static import libraries. This section summarizes the most
! common @code{dlltool} switches. The form of the @code{dlltool} command
  is
  
  @quotation
*************** $ dlltool [`switches`]
*** 25297,25303 ****
  @end example
  @end quotation
  
! @cite{dlltool} switches include:
  
  @geindex --base-file (dlltool)
  
--- 25450,25456 ----
  @end example
  @end quotation
  
! @code{dlltool} switches include:
  
  @geindex --base-file (dlltool)
  
*************** $ dlltool [`switches`]
*** 25306,25312 ****
  
  @item @code{--base-file @emph{basefile}}
  
! Read the base file @cite{basefile} generated by the linker. This switch
  is used to create a relocatable DLL.
  @end table
  
--- 25459,25465 ----
  
  @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.
  @end table
  
*************** Read the definition file.
*** 25328,25335 ****
  @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 @cite{dlltool} with switch
! @emph{--output-lib}.
  @end table
  
  @geindex -k (dlltool)
--- 25481,25488 ----
  @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
! @code{--output-lib}.
  @end table
  
  @geindex -k (dlltool)
*************** DLL in the static import library generat
*** 25341,25347 ****
  
  Kill @code{@@@emph{nn}} from exported names
  (@ref{1ec,,Windows Calling Conventions}
! for a discussion about @cite{Stdcall}-style symbols.
  @end table
  
  @geindex --help (dlltool)
--- 25494,25500 ----
  
  Kill @code{@@@emph{nn}} from exported names
  (@ref{1ec,,Windows Calling Conventions}
! for a discussion about @code{Stdcall}-style symbols.
  @end table
  
  @geindex --help (dlltool)
*************** for a discussion about @cite{Stdcall}-st
*** 25351,25357 ****
  
  @item @code{--help}
  
! Prints the @cite{dlltool} switches with a concise description.
  @end table
  
  @geindex --output-exp (dlltool)
--- 25504,25510 ----
  
  @item @code{--help}
  
! Prints the @code{dlltool} switches with a concise description.
  @end table
  
  @geindex --output-exp (dlltool)
*************** Prints the @cite{dlltool} switches with
*** 25361,25367 ****
  
  @item @code{--output-exp @emph{exportfile}}
  
! Generate an export file @cite{exportfile}. The export file contains the
  export table (list of symbols in the DLL) and is used to create the DLL.
  @end table
  
--- 25514,25520 ----
  
  @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.
  @end table
  
*************** export table (list of symbols in the DLL
*** 25372,25378 ****
  
  @item @code{--output-lib @emph{libfile}}
  
! Generate a static import library @cite{libfile}.
  @end table
  
  @geindex -v (dlltool)
--- 25525,25531 ----
  
  @item @code{--output-lib @emph{libfile}}
  
! Generate a static import library @code{libfile}.
  @end table
  
  @geindex -v (dlltool)
*************** Verbose mode.
*** 25392,25402 ****
  
  @item @code{--as @emph{assembler-name}}
  
! Use @cite{assembler-name} as the assembler. The default is @cite{as}.
  @end table
  
  @node GNAT and Windows Resources,Using GNAT DLLs from Microsoft Visual Studio Applications,Creating a Spec for Ada DLLs,Mixed-Language Programming on Windows
! @anchor{gnat_ugn/platform_specific_information gnat-and-windows-resources}@anchor{214}@anchor{gnat_ugn/platform_specific_information id33}@anchor{215}
  @subsubsection GNAT and Windows Resources
  
  
--- 25545,25555 ----
  
  @item @code{--as @emph{assembler-name}}
  
! Use @code{assembler-name} as the assembler. The default is @code{as}.
  @end table
  
  @node GNAT and Windows Resources,Using GNAT DLLs from Microsoft Visual Studio Applications,Creating a Spec for Ada DLLs,Mixed-Language Programming on Windows
! @anchor{gnat_ugn/platform_specific_information gnat-and-windows-resources}@anchor{214}@anchor{gnat_ugn/platform_specific_information id32}@anchor{215}
  @subsubsection GNAT and Windows Resources
  
  
*************** END
*** 25475,25482 ****
  @end example
  @end quotation
  
! The value @cite{0809} (langID) is for the U.K English language and
! @cite{04E4} (charsetID), which is equal to @cite{1252} decimal, for
  multilingual.
  
  This section explains how to build, compile and use resources. Note that this
--- 25628,25635 ----
  @end example
  @end quotation
  
! The value @code{0809} (langID) is for the U.K English language and
! @code{04E4} (charsetID), which is equal to @code{1252} decimal, for
  multilingual.
  
  This section explains how to build, compile and use resources. Note that this
*************** the corresponding Microsoft documentatio
*** 25491,25497 ****
  @end menu
  
  @node Building Resources,Compiling Resources,,GNAT and Windows Resources
! @anchor{gnat_ugn/platform_specific_information building-resources}@anchor{216}@anchor{gnat_ugn/platform_specific_information id34}@anchor{217}
  @subsubsection Building Resources
  
  
--- 25644,25650 ----
  @end menu
  
  @node Building Resources,Compiling Resources,,GNAT and Windows Resources
! @anchor{gnat_ugn/platform_specific_information building-resources}@anchor{216}@anchor{gnat_ugn/platform_specific_information id33}@anchor{217}
  @subsubsection Building Resources
  
  
*************** the corresponding Microsoft documentatio
*** 25501,25508 ****
  A resource file is an ASCII file. By convention resource files have an
  @code{.rc} extension.
  The easiest way to build a resource file is to use Microsoft tools
! such as @cite{imagedit.exe} to build bitmaps, icons and cursors and
! @cite{dlgedit.exe} to build dialogs.
  It is always possible to build an @code{.rc} file yourself by writing a
  resource script.
  
--- 25654,25661 ----
  A resource file is an ASCII file. By convention resource files have an
  @code{.rc} extension.
  The easiest way to build a resource file is to use Microsoft tools
! such as @code{imagedit.exe} to build bitmaps, icons and cursors and
! @code{dlgedit.exe} to build dialogs.
  It is always possible to build an @code{.rc} file yourself by writing a
  resource script.
  
*************** complete description of the resource scr
*** 25511,25517 ****
  Microsoft documentation.
  
  @node Compiling Resources,Using Resources,Building Resources,GNAT and Windows Resources
! @anchor{gnat_ugn/platform_specific_information compiling-resources}@anchor{218}@anchor{gnat_ugn/platform_specific_information id35}@anchor{219}
  @subsubsection Compiling Resources
  
  
--- 25664,25670 ----
  Microsoft documentation.
  
  @node Compiling Resources,Using Resources,Building Resources,GNAT and Windows Resources
! @anchor{gnat_ugn/platform_specific_information compiling-resources}@anchor{218}@anchor{gnat_ugn/platform_specific_information id34}@anchor{219}
  @subsubsection Compiling Resources
  
  
*************** Microsoft documentation.
*** 25524,25530 ****
  
  This section describes how to build a GNAT-compatible (COFF) object file
  containing the resources. This is done using the Resource Compiler
! @cite{windres} as follows:
  
  @quotation
  
--- 25677,25683 ----
  
  This section describes how to build a GNAT-compatible (COFF) object file
  containing the resources. This is done using the Resource Compiler
! @code{windres} as follows:
  
  @quotation
  
*************** $ windres -i myres.rc -o myres.o
*** 25533,25548 ****
  @end example
  @end quotation
  
! By default @cite{windres} will run @emph{gcc} to preprocess the @code{.rc}
  file. You can specify an alternate preprocessor (usually named
! @code{cpp.exe}) using the @cite{windres} @emph{--preprocessor}
  parameter. A list of all possible options may be obtained by entering
! the command @cite{windres} @emph{--help}.
  
! It is also possible to use the Microsoft resource compiler @cite{rc.exe}
  to produce a @code{.res} file (binary resource file). See the
  corresponding Microsoft documentation for further details. In this case
! you need to use @cite{windres} to translate the @code{.res} file to a
  GNAT-compatible object file as follows:
  
  @quotation
--- 25686,25701 ----
  @end example
  @end quotation
  
! By default @code{windres} will run @code{gcc} to preprocess the @code{.rc}
  file. You can specify an alternate preprocessor (usually named
! @code{cpp.exe}) using the @code{windres} @code{--preprocessor}
  parameter. A list of all possible options may be obtained by entering
! the command @code{windres} @code{--help}.
  
! It is also possible to use the Microsoft resource compiler @code{rc.exe}
  to produce a @code{.res} file (binary resource file). See the
  corresponding Microsoft documentation for further details. In this case
! you need to use @code{windres} to translate the @code{.res} file to a
  GNAT-compatible object file as follows:
  
  @quotation
*************** $ windres -i myres.res -o myres.o
*** 25553,25559 ****
  @end quotation
  
  @node Using Resources,,Compiling Resources,GNAT and Windows Resources
! @anchor{gnat_ugn/platform_specific_information id36}@anchor{21a}@anchor{gnat_ugn/platform_specific_information using-resources}@anchor{21b}
  @subsubsection Using Resources
  
  
--- 25706,25712 ----
  @end quotation
  
  @node Using Resources,,Compiling Resources,GNAT and Windows Resources
! @anchor{gnat_ugn/platform_specific_information using-resources}@anchor{21a}@anchor{gnat_ugn/platform_specific_information id35}@anchor{21b}
  @subsubsection Using Resources
  
  
*************** $ windres -i myres.res -o myres.o
*** 25562,25568 ****
  
  To include the resource file in your program just add the
  GNAT-compatible object file for the resource(s) to the linker
! arguments. With @emph{gnatmake} this is done by using the @emph{-largs}
  option:
  
  @quotation
--- 25715,25721 ----
  
  To include the resource file in your program just add the
  GNAT-compatible object file for the resource(s) to the linker
! arguments. With @code{gnatmake} this is done by using the @code{-largs}
  option:
  
  @quotation
*************** cookbook-style sequence of steps to foll
*** 25591,25597 ****
  
  @item 
  First develop and build the GNAT shared library using a library project
! (let's assume the project is @cite{mylib.gpr}, producing the library @cite{libmylib.dll}):
  @end enumerate
  
  @quotation
--- 25744,25750 ----
  
  @item 
  First develop and build the GNAT shared library using a library project
! (let's assume the project is @code{mylib.gpr}, producing the library @code{libmylib.dll}):
  @end enumerate
  
  @quotation
*************** or copy the DLL into into the directory
*** 25666,25672 ****
  @end enumerate
  
  @node Debugging a DLL,Setting Stack Size from gnatlink,Using GNAT DLLs from Microsoft Visual Studio Applications,Mixed-Language Programming on Windows
! @anchor{gnat_ugn/platform_specific_information id37}@anchor{21e}@anchor{gnat_ugn/platform_specific_information debugging-a-dll}@anchor{21f}
  @subsubsection Debugging a DLL
  
  
--- 25819,25825 ----
  @end enumerate
  
  @node Debugging a DLL,Setting Stack Size from gnatlink,Using GNAT DLLs from Microsoft Visual Studio Applications,Mixed-Language Programming on Windows
! @anchor{gnat_ugn/platform_specific_information id36}@anchor{21e}@anchor{gnat_ugn/platform_specific_information debugging-a-dll}@anchor{21f}
  @subsubsection Debugging a DLL
  
  
*************** program that uses it. We have the follow
*** 25680,25699 ****
  @itemize *
  
  @item 
! The program and the DLL are built with @cite{GCC/GNAT}.
  
  @item 
  The program is built with foreign tools and the DLL is built with
! @cite{GCC/GNAT}.
  
  @item 
! The program is built with @cite{GCC/GNAT} and the DLL is built with
  foreign tools.
  @end itemize
  
  In this section we address only cases one and two above.
  There is no point in trying to debug
! a DLL with @cite{GNU/GDB}, if there is no GDB-compatible debugging
  information in it. To do so you must use a debugger compatible with the
  tools suite used to build the DLL.
  
--- 25833,25852 ----
  @itemize *
  
  @item 
! The program and the DLL are built with GCC/GNAT.
  
  @item 
  The program is built with foreign tools and the DLL is built with
! GCC/GNAT.
  
  @item 
! The program is built with GCC/GNAT and the DLL is built with
  foreign tools.
  @end itemize
  
  In this section we address only cases one and two above.
  There is no point in trying to debug
! a DLL with GNU/GDB, if there is no GDB-compatible debugging
  information in it. To do so you must use a debugger compatible with the
  tools suite used to build the DLL.
  
*************** tools suite used to build the DLL.
*** 25704,25718 ****
  @end menu
  
  @node Program and DLL Both Built with GCC/GNAT,Program Built with Foreign Tools and DLL Built with GCC/GNAT,,Debugging a DLL
! @anchor{gnat_ugn/platform_specific_information program-and-dll-both-built-with-gcc-gnat}@anchor{220}@anchor{gnat_ugn/platform_specific_information id38}@anchor{221}
  @subsubsection Program and DLL Both Built with GCC/GNAT
  
  
! This is the simplest case. Both the DLL and the program have @cite{GDB}
  compatible debugging information. It is then possible to break anywhere in
  the process. Let's suppose here that the main procedure is named
! @cite{ada_main} and that in the DLL there is an entry point named
! @cite{ada_dll}.
  
  The DLL (@ref{1f7,,Introduction to Dynamic Link Libraries (DLLs)}) and
  program must have been built with the debugging information (see GNAT -g
--- 25857,25871 ----
  @end menu
  
  @node Program and DLL Both Built with GCC/GNAT,Program Built with Foreign Tools and DLL Built with GCC/GNAT,,Debugging a DLL
! @anchor{gnat_ugn/platform_specific_information id37}@anchor{220}@anchor{gnat_ugn/platform_specific_information program-and-dll-both-built-with-gcc-gnat}@anchor{221}
  @subsubsection Program and DLL Both Built with GCC/GNAT
  
  
! This is the simplest case. Both the DLL and the program have @code{GDB}
  compatible debugging information. It is then possible to break anywhere in
  the process. Let's suppose here that the main procedure is named
! @code{ada_main} and that in the DLL there is an entry point named
! @code{ada_dll}.
  
  The DLL (@ref{1f7,,Introduction to Dynamic Link Libraries (DLLs)}) and
  program must have been built with the debugging information (see GNAT -g
*************** switch). Here are the step-by-step instr
*** 25722,25728 ****
  @itemize *
  
  @item 
! Launch @cite{GDB} on the main program.
  
  @example
  $ gdb -nw ada_main
--- 25875,25881 ----
  @itemize *
  
  @item 
! Launch @code{GDB} on the main program.
  
  @example
  $ gdb -nw ada_main
*************** you can use the standard approach to deb
*** 25754,25778 ****
  (@ref{24,,Running and Debugging Ada Programs}).
  
  @node Program Built with Foreign Tools and DLL Built with GCC/GNAT,,Program and DLL Both Built with GCC/GNAT,Debugging a DLL
! @anchor{gnat_ugn/platform_specific_information program-built-with-foreign-tools-and-dll-built-with-gcc-gnat}@anchor{222}@anchor{gnat_ugn/platform_specific_information id39}@anchor{223}
  @subsubsection Program Built with Foreign Tools and DLL Built with GCC/GNAT
  
  
  In this case things are slightly more complex because it is not possible to
  start the main program and then break at the beginning to load the DLL and the
  associated DLL debugging information. It is not possible to break at the
! beginning of the program because there is no @cite{GDB} debugging information,
  and therefore there is no direct way of getting initial control. This
  section addresses this issue by describing some methods that can be used
  to break somewhere in the DLL to debug it.
  
! First suppose that the main procedure is named @cite{main} (this is for
  example some C code built with Microsoft Visual C) and that there is a
! DLL named @cite{test.dll} containing an Ada entry point named
! @cite{ada_dll}.
  
  The DLL (see @ref{1f7,,Introduction to Dynamic Link Libraries (DLLs)}) must have
! been built with debugging information (see GNAT @cite{-g} option).
  
  @subsubheading Debugging the DLL Directly
  
--- 25907,25931 ----
  (@ref{24,,Running and Debugging Ada Programs}).
  
  @node Program Built with Foreign Tools and DLL Built with GCC/GNAT,,Program and DLL Both Built with GCC/GNAT,Debugging a DLL
! @anchor{gnat_ugn/platform_specific_information program-built-with-foreign-tools-and-dll-built-with-gcc-gnat}@anchor{222}@anchor{gnat_ugn/platform_specific_information id38}@anchor{223}
  @subsubsection Program Built with Foreign Tools and DLL Built with GCC/GNAT
  
  
  In this case things are slightly more complex because it is not possible to
  start the main program and then break at the beginning to load the DLL and the
  associated DLL debugging information. It is not possible to break at the
! beginning of the program because there is no @code{GDB} debugging information,
  and therefore there is no direct way of getting initial control. This
  section addresses this issue by describing some methods that can be used
  to break somewhere in the DLL to debug it.
  
! First suppose that the main procedure is named @code{main} (this is for
  example some C code built with Microsoft Visual C) and that there is a
! DLL named @code{test.dll} containing an Ada entry point named
! @code{ada_dll}.
  
  The DLL (see @ref{1f7,,Introduction to Dynamic Link Libraries (DLLs)}) must have
! been built with debugging information (see the GNAT @code{-g} option).
  
  @subsubheading Debugging the DLL Directly
  
*************** It is also possible to debug the DLL by
*** 25848,25854 ****
  @geindex DLL debugging
  @geindex attach to process
  
! With @cite{GDB} it is always possible to debug a running process by
  attaching to it. It is possible to debug a DLL this way. The limitation
  of this approach is that the DLL must run long enough to perform the
  attach operation. It may be useful for instance to insert a time wasting
--- 26001,26007 ----
  @geindex DLL debugging
  @geindex attach to process
  
! With @code{GDB} it is always possible to debug a running process by
  attaching to it. It is possible to debug a DLL this way. The limitation
  of this approach is that the DLL must run long enough to perform the
  attach operation. It may be useful for instance to insert a time wasting
*************** approach to debug a program as described
*** 25910,25917 ****
  @ref{24,,Running and Debugging Ada Programs}.
  
  @node Setting Stack Size from gnatlink,Setting Heap Size from gnatlink,Debugging a DLL,Mixed-Language Programming on Windows
! @anchor{gnat_ugn/platform_specific_information setting-stack-size-from-gnatlink}@anchor{136}@anchor{gnat_ugn/platform_specific_information id40}@anchor{224}
! @subsubsection Setting Stack Size from @emph{gnatlink}
  
  
  It is possible to specify the program stack size at link time. On modern
--- 26063,26070 ----
  @ref{24,,Running and Debugging Ada Programs}.
  
  @node Setting Stack Size from gnatlink,Setting Heap Size from gnatlink,Debugging a DLL,Mixed-Language Programming on Windows
! @anchor{gnat_ugn/platform_specific_information setting-stack-size-from-gnatlink}@anchor{136}@anchor{gnat_ugn/platform_specific_information id39}@anchor{224}
! @subsubsection Setting Stack Size from @code{gnatlink}
  
  
  It is possible to specify the program stack size at link time. On modern
*************** tasks, and pragma Storage_Size has no ef
*** 25925,25937 ****
  In particular, Stack Overflow checks are made against this
  link-time specified size.
  
! This setting can be done with @emph{gnatlink} using either of the following:
  
  
  @itemize *
  
  @item 
! @emph{-Xlinker} linker option
  
  @example
  $ gnatlink hello -Xlinker --stack=0x10000,0x1000
--- 26078,26090 ----
  In particular, Stack Overflow checks are made against this
  link-time specified size.
  
! This setting can be done with @code{gnatlink} using either of the following:
  
  
  @itemize *
  
  @item 
! @code{-Xlinker} linker option
  
  @example
  $ gnatlink hello -Xlinker --stack=0x10000,0x1000
*************** This sets the stack reserve size to 0x10
*** 25941,25970 ****
  size to 0x1000 bytes.
  
  @item 
! @emph{-Wl} linker option
  
  @example
  $ gnatlink hello -Wl,--stack=0x1000000
  @end example
  
  This sets the stack reserve size to 0x1000000 bytes. Note that with
! @emph{-Wl} option it is not possible to set the stack commit size
! because the coma is a separator for this option.
  @end itemize
  
  @node Setting Heap Size from gnatlink,,Setting Stack Size from gnatlink,Mixed-Language Programming on Windows
! @anchor{gnat_ugn/platform_specific_information setting-heap-size-from-gnatlink}@anchor{137}@anchor{gnat_ugn/platform_specific_information id41}@anchor{225}
! @subsubsection Setting Heap Size from @emph{gnatlink}
  
  
  Under Windows systems, it is possible to specify the program heap size from
! @emph{gnatlink} using either of the following:
  
  
  @itemize *
  
  @item 
! @emph{-Xlinker} linker option
  
  @example
  $ gnatlink hello -Xlinker --heap=0x10000,0x1000
--- 26094,26123 ----
  size to 0x1000 bytes.
  
  @item 
! @code{-Wl} linker option
  
  @example
  $ gnatlink hello -Wl,--stack=0x1000000
  @end example
  
  This sets the stack reserve size to 0x1000000 bytes. Note that with
! @code{-Wl} option it is not possible to set the stack commit size
! because the comma is a separator for this option.
  @end itemize
  
  @node Setting Heap Size from gnatlink,,Setting Stack Size from gnatlink,Mixed-Language Programming on Windows
! @anchor{gnat_ugn/platform_specific_information setting-heap-size-from-gnatlink}@anchor{137}@anchor{gnat_ugn/platform_specific_information id40}@anchor{225}
! @subsubsection Setting Heap Size from @code{gnatlink}
  
  
  Under Windows systems, it is possible to specify the program heap size from
! @code{gnatlink} using either of the following:
  
  
  @itemize *
  
  @item 
! @code{-Xlinker} linker option
  
  @example
  $ gnatlink hello -Xlinker --heap=0x10000,0x1000
*************** This sets the heap reserve size to 0x100
*** 25974,25988 ****
  size to 0x1000 bytes.
  
  @item 
! @emph{-Wl} linker option
  
  @example
  $ gnatlink hello -Wl,--heap=0x1000000
  @end example
  
  This sets the heap reserve size to 0x1000000 bytes. Note that with
! @emph{-Wl} option it is not possible to set the heap commit size
! because the coma is a separator for this option.
  @end itemize
  
  @node Windows Specific Add-Ons,,Mixed-Language Programming on Windows,Microsoft Windows Topics
--- 26127,26141 ----
  size to 0x1000 bytes.
  
  @item 
! @code{-Wl} linker option
  
  @example
  $ gnatlink hello -Wl,--heap=0x1000000
  @end example
  
  This sets the heap reserve size to 0x1000000 bytes. Note that with
! @code{-Wl} option it is not possible to set the heap commit size
! because the comma is a separator for this option.
  @end itemize
  
  @node Windows Specific Add-Ons,,Mixed-Language Programming on Windows,Microsoft Windows Topics
*************** This section describes the Windows speci
*** 25999,26005 ****
  @end menu
  
  @node Win32Ada,wPOSIX,,Windows Specific Add-Ons
! @anchor{gnat_ugn/platform_specific_information win32ada}@anchor{228}@anchor{gnat_ugn/platform_specific_information id42}@anchor{229}
  @subsubsection Win32Ada
  
  
--- 26152,26158 ----
  @end menu
  
  @node Win32Ada,wPOSIX,,Windows Specific Add-Ons
! @anchor{gnat_ugn/platform_specific_information win32ada}@anchor{228}@anchor{gnat_ugn/platform_specific_information id41}@anchor{229}
  @subsubsection Win32Ada
  
  
*************** gprbuild p.gpr
*** 26030,26036 ****
  @end quotation
  
  @node wPOSIX,,Win32Ada,Windows Specific Add-Ons
! @anchor{gnat_ugn/platform_specific_information id43}@anchor{22a}@anchor{gnat_ugn/platform_specific_information wposix}@anchor{22b}
  @subsubsection wPOSIX
  
  
--- 26183,26189 ----
  @end quotation
  
  @node wPOSIX,,Win32Ada,Windows Specific Add-Ons
! @anchor{gnat_ugn/platform_specific_information id42}@anchor{22a}@anchor{gnat_ugn/platform_specific_information wposix}@anchor{22b}
  @subsubsection wPOSIX
  
  
*************** gprbuild p.gpr
*** 26063,26069 ****
  @end quotation
  
  @node Mac OS Topics,,Microsoft Windows Topics,Platform-Specific Information
! @anchor{gnat_ugn/platform_specific_information mac-os-topics}@anchor{2d}@anchor{gnat_ugn/platform_specific_information id44}@anchor{22c}
  @section Mac OS Topics
  
  
--- 26216,26222 ----
  @end quotation
  
  @node Mac OS Topics,,Microsoft Windows Topics,Platform-Specific Information
! @anchor{gnat_ugn/platform_specific_information mac-os-topics}@anchor{2d}@anchor{gnat_ugn/platform_specific_information id43}@anchor{22c}
  @section Mac OS Topics
  
  
*************** end ada_main;
*** 26888,26900 ****
  
  The Ada code in the above example is exactly what is generated by the
  binder. We have added comments to more clearly indicate the function
! of each part of the generated @cite{Ada_Main} package.
  
  The code is standard Ada in all respects, and can be processed by any
  tools that handle Ada. In particular, it is possible to use the debugger
! in Ada mode to debug the generated @cite{Ada_Main} package. For example,
  suppose that for reasons that you do not understand, your program is crashing
! during elaboration of the body of @cite{Ada.Text_IO}. To locate this bug,
  you can place a breakpoint on the call:
  
  @quotation
--- 27041,27053 ----
  
  The Ada code in the above example is exactly what is generated by the
  binder. We have added comments to more clearly indicate the function
! of each part of the generated @code{Ada_Main} package.
  
  The code is standard Ada in all respects, and can be processed by any
  tools that handle Ada. In particular, it is possible to use the debugger
! in Ada mode to debug the generated @code{Ada_Main} package. For example,
  suppose that for reasons that you do not understand, your program is crashing
! during elaboration of the body of @code{Ada.Text_IO}. To locate this bug,
  you can place a breakpoint on the call:
  
  @quotation
*************** elaboration code in your own application
*** 26919,27240 ****
  
  @geindex Elaboration control
  
! This appendix describes the handling of elaboration code in Ada and
! in GNAT, and discusses how the order of elaboration of program units can
! be controlled in GNAT, either automatically or with explicit programming
! features.
  
  @menu
  * Elaboration Code:: 
  * Checking the Elaboration Order:: 
! * Controlling the Elaboration Order:: 
! * Controlling Elaboration in GNAT - Internal Calls:: 
! * Controlling Elaboration in GNAT - External Calls:: 
! * Default Behavior in GNAT - Ensuring Safety:: 
! * Treatment of Pragma Elaborate:: 
! * Elaboration Issues for Library Tasks:: 
  * Mixing Elaboration Models:: 
! * What to Do If the Default Elaboration Behavior Fails:: 
! * Elaboration for Indirect Calls:: 
  * Summary of Procedures for Elaboration Control:: 
! * Other Elaboration Order Considerations:: 
! * Determining the Chosen Elaboration Order:: 
  
  @end menu
  
! @node Elaboration Code,Checking the Elaboration Order,,Elaboration Order Handling in GNAT
  @anchor{gnat_ugn/elaboration_order_handling_in_gnat elaboration-code}@anchor{232}@anchor{gnat_ugn/elaboration_order_handling_in_gnat id2}@anchor{233}
  @section Elaboration Code
  
  
! Ada provides rather general mechanisms for executing code at elaboration
! time, that is to say before the main program starts executing. Such code arises
! in three contexts:
  
  
  @itemize *
  
  @item 
! @emph{Initializers for variables}
  
! Variables declared at the library level, in package specs or bodies, can
! require initialization that is performed at elaboration time, as in:
  
! @example
! Sqrt_Half : Float := Sqrt (0.5);
! @end example
  
  @item 
! @emph{Package initialization code}
  
! Code in a @cite{BEGIN-END} section at the outer level of a package body is
! executed as part of the package body elaboration code.
  
  @item 
! @emph{Library level task allocators}
  
! Tasks that are declared using task allocators at the library level
! start executing immediately and hence can execute at elaboration time.
  @end itemize
  
! Subprogram calls are possible in any of these contexts, which means that
! any arbitrary part of the program may be executed as part of the elaboration
! code. It is even possible to write a program which does all its work at
! elaboration time, with a null main program, although stylistically this
! would usually be considered an inappropriate way to structure
! a program.
  
! An important concern arises in the context of elaboration code:
! we have to be sure that it is executed in an appropriate order. What we
! have is a series of elaboration code sections, potentially one section
! for each unit in the program. It is important that these execute
! in the correct order. Correctness here means that, taking the above
! example of the declaration of @cite{Sqrt_Half},
! if some other piece of
! elaboration code references @cite{Sqrt_Half},
! then it must run after the
! section of elaboration code that contains the declaration of
! @cite{Sqrt_Half}.
  
- There would never be any order of elaboration problem if we made a rule
- that whenever you @emph{with} a unit, you must elaborate both the spec and body
- of that unit before elaborating the unit doing the @emph{with}ing:
  
! @example
! with Unit_1;
! package Unit_2 is ...
! @end example
  
! would require that both the body and spec of @cite{Unit_1} be elaborated
! before the spec of @cite{Unit_2}. However, a rule like that would be far too
! restrictive. In particular, it would make it impossible to have routines
! in separate packages that were mutually recursive.
  
! You might think that a clever enough compiler could look at the actual
! elaboration code and determine an appropriate correct order of elaboration,
! but in the general case, this is not possible. Consider the following
! example.
  
! In the body of @cite{Unit_1}, we have a procedure @cite{Func_1}
! that references
! the variable @cite{Sqrt_1}, which is declared in the elaboration code
! of the body of @cite{Unit_1}:
  
! @example
! Sqrt_1 : Float := Sqrt (0.1);
! @end example
  
! The elaboration code of the body of @cite{Unit_1} also contains:
  
- @example
- if expression_1 = 1 then
-    Q := Unit_2.Func_2;
- end if;
- @end example
  
! @cite{Unit_2} is exactly parallel,
! it has a procedure @cite{Func_2} that references
! the variable @cite{Sqrt_2}, which is declared in the elaboration code of
! the body @cite{Unit_2}:
  
! @example
! Sqrt_2 : Float := Sqrt (0.1);
! @end example
  
! The elaboration code of the body of @cite{Unit_2} also contains:
  
  @example
! if expression_2 = 2 then
!    Q := Unit_1.Func_1;
! end if;
  @end example
  
! Now the question is, which of the following orders of elaboration is
! acceptable:
  
  @example
! Spec of Unit_1
! Spec of Unit_2
! Body of Unit_1
! Body of Unit_2
  @end example
  
! or
  
  @example
! Spec of Unit_2
! Spec of Unit_1
! Body of Unit_2
! Body of Unit_1
  @end example
  
! If you carefully analyze the flow here, you will see that you cannot tell
! at compile time the answer to this question.
! If @cite{expression_1} is not equal to 1,
! and @cite{expression_2} is not equal to 2,
! then either order is acceptable, because neither of the function calls is
! executed. If both tests evaluate to true, then neither order is acceptable
! and in fact there is no correct order.
  
- If one of the two expressions is true, and the other is false, then one
- of the above orders is correct, and the other is incorrect. For example,
- if @cite{expression_1} /= 1 and @cite{expression_2} = 2,
- then the call to @cite{Func_1}
- will occur, but not the call to @cite{Func_2.}
- This means that it is essential
- to elaborate the body of @cite{Unit_1} before
- the body of @cite{Unit_2}, so the first
- order of elaboration is correct and the second is wrong.
  
! By making @cite{expression_1} and @cite{expression_2}
! depend on input data, or perhaps
! the time of day, we can make it impossible for the compiler or binder
! to figure out which of these expressions will be true, and hence it
! is impossible to guarantee a safe order of elaboration at run time.
  
! @node Checking the Elaboration Order,Controlling the Elaboration Order,Elaboration Code,Elaboration Order Handling in GNAT
! @anchor{gnat_ugn/elaboration_order_handling_in_gnat checking-the-elaboration-order}@anchor{234}@anchor{gnat_ugn/elaboration_order_handling_in_gnat id3}@anchor{235}
! @section Checking the Elaboration Order
  
  
! In some languages that involve the same kind of elaboration problems,
! e.g., Java and C++, the programmer needs to take these
! ordering problems into account, and it is common to
! write a program in which an incorrect elaboration order  gives
! surprising results, because it references variables before they
! are initialized.
! Ada is designed to be a safe language, and a programmer-beware approach is
! clearly not sufficient. Consequently, the language provides three lines
! of defense:
  
  
  @itemize *
  
  @item 
! @emph{Standard rules}
  
! Some standard rules restrict the possible choice of elaboration
! order. In particular, if you @emph{with} a unit, then its spec is always
! elaborated before the unit doing the @emph{with}. Similarly, a parent
! spec is always elaborated before the child spec, and finally
! a spec is always elaborated before its corresponding body.
! @end itemize
  
! @geindex Elaboration checks
  
! @geindex Checks
! @geindex elaboration
  
  
  @itemize *
  
  @item 
! @emph{Dynamic elaboration checks}
  
! Dynamic checks are made at run time, so that if some entity is accessed
! before it is elaborated (typically  by means of a subprogram call)
! then the exception (@cite{Program_Error}) is raised.
  
  @item 
! @emph{Elaboration control}
  
! Facilities are provided for the programmer to specify the desired order
! of elaboration.
  @end itemize
  
! Let's look at these facilities in more detail. First, the rules for
! dynamic checking. One possible rule would be simply to say that the
! exception is raised if you access a variable which has not yet been
! elaborated. The trouble with this approach is that it could require
! expensive checks on every variable reference. Instead Ada has two
! rules which are a little more restrictive, but easier to check, and
! easier to state:
  
  
  @itemize *
  
  @item 
  @emph{Restrictions on calls}
  
! A subprogram can only be called at elaboration time if its body
! has been elaborated. The rules for elaboration given above guarantee
! that the spec of the subprogram has been elaborated before the
! call, but not the body. If this rule is violated, then the
! exception @cite{Program_Error} is raised.
  
  @item 
  @emph{Restrictions on instantiations}
  
! A generic unit can only be instantiated if the body of the generic
! unit has been elaborated. Again, the rules for elaboration given above
! guarantee that the spec of the generic unit has been elaborated
! before the instantiation, but not the body. If this rule is
! violated, then the exception @cite{Program_Error} is raised.
  @end itemize
  
! The idea is that if the body has been elaborated, then any variables
! it references must have been elaborated; by checking for the body being
! elaborated we guarantee that none of its references causes any
! trouble. As we noted above, this is a little too restrictive, because a
! subprogram that has no non-local references in its body may in fact be safe
! to call. However, it really would be unsafe to rely on this, because
! it would mean that the caller was aware of details of the implementation
! in the body. This goes against the basic tenets of Ada.
  
! A plausible implementation can be described as follows.
! A Boolean variable is associated with each subprogram
! and each generic unit. This variable is initialized to False, and is set to
! True at the point body is elaborated. Every call or instantiation checks the
! variable, and raises @cite{Program_Error} if the variable is False.
  
! Note that one might think that it would be good enough to have one Boolean
! variable for each package, but that would not deal with cases of trying
! to call a body in the same package as the call
! that has not been elaborated yet.
! Of course a compiler may be able to do enough analysis to optimize away
! some of the Boolean variables as unnecessary, and @cite{GNAT} indeed
! does such optimizations, but still the easiest conceptual model is to
! think of there being one variable per subprogram.
  
! @node Controlling the Elaboration Order,Controlling Elaboration in GNAT - Internal Calls,Checking the Elaboration Order,Elaboration Order Handling in GNAT
! @anchor{gnat_ugn/elaboration_order_handling_in_gnat id4}@anchor{236}@anchor{gnat_ugn/elaboration_order_handling_in_gnat controlling-the-elaboration-order}@anchor{237}
! @section Controlling the Elaboration Order
  
  
- In the previous section we discussed the rules in Ada which ensure
- that @cite{Program_Error} is raised if an incorrect elaboration order is
- chosen. This prevents erroneous executions, but we need mechanisms to
- specify a correct execution and avoid the exception altogether.
- To achieve this, Ada provides a number of features for controlling
- the order of elaboration. We discuss these features in this section.
  
! First, there are several ways of indicating to the compiler that a given
! unit has no elaboration problems:
  
  
  @itemize *
  
  @item 
! @emph{packages that do not require a body}
  
! A library package that does not require a body does not permit
! a body (this rule was introduced in Ada 95).
! Thus if we have a such a package, as in:
  
  @example
! package Definitions is
     generic
!       type m is new integer;
!    package Subp is
!       type a is array (1 .. 10) of m;
!       type b is array (1 .. 20) of m;
!    end Subp;
! end Definitions;
  @end example
  
! A package that @emph{with}s @cite{Definitions} may safely instantiate
! @cite{Definitions.Subp} because the compiler can determine that there
! definitely is no package body to worry about in this case
  @end itemize
  
  @geindex pragma Pure
--- 27072,27487 ----
  
  @geindex Elaboration control
  
! This appendix describes the handling of elaboration code in Ada and GNAT, and
! discusses how the order of elaboration of program units can be controlled in
! GNAT, either automatically or with explicit programming features.
  
  @menu
  * Elaboration Code:: 
+ * Elaboration Order:: 
  * Checking the Elaboration Order:: 
! * Controlling the Elaboration Order in Ada:: 
! * Controlling the Elaboration Order in GNAT:: 
! * Common Elaboration-model Traits:: 
! * Dynamic Elaboration Model in GNAT:: 
! * Static Elaboration Model in GNAT:: 
! * SPARK Elaboration Model in GNAT:: 
! * Legacy Elaboration Model in GNAT:: 
  * Mixing Elaboration Models:: 
! * Elaboration Circularities:: 
! * Resolving Elaboration Circularities:: 
! * Resolving Task Issues:: 
! * Elaboration-related Compiler Switches:: 
  * Summary of Procedures for Elaboration Control:: 
! * Inspecting the Chosen Elaboration Order:: 
  
  @end menu
  
! @node Elaboration Code,Elaboration Order,,Elaboration Order Handling in GNAT
  @anchor{gnat_ugn/elaboration_order_handling_in_gnat elaboration-code}@anchor{232}@anchor{gnat_ugn/elaboration_order_handling_in_gnat id2}@anchor{233}
  @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:
  
  
  @itemize *
  
  @item 
! All partitions of an Ada program are executed in parallel with one another,
! possibly in a separate address space, and possibly on a separate computer.
  
! @item 
! The execution of a partition involves running the environment task for that
! partition.
  
! @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
! partition.
! @end itemize
  
! In addition to the Ada terminology, this appendix defines the following terms:
! 
! 
! @itemize *
  
  @item 
! @emph{Scenario}
  
! A construct that is elaborated or executed by elaboration code is referred to
! as an @emph{elaboration scenario} or simply a @strong{scenario}. GNAT recognizes the
! following scenarios:
! 
! 
! @itemize -
! 
! @item 
! @code{'Access} of entries, operators, and subprograms
! 
! @item 
! Activation of tasks
! 
! @item 
! Calls to entries, operators, and subprograms
! 
! @item 
! Instantiations of generic templates
  @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 -
  
! @item 
! For @code{'Access} of entries, operators, and subprograms, the target is the
! entry, operator, or subprogram being aliased.
  
! @item 
! For activation of tasks, the target is the task body
  
! @item 
! For calls to entries, operators, and subprograms, the target is the entry,
! operator, or subprogram being invoked.
  
! @item 
! For instantiations of generic templates, the target is the generic template
! being instantiated.
! @end itemize
! @end itemize
  
! Elaboration code may appear in two distinct contexts:
  
  
! @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
! between.
  
  @example
! with Server;
! package Client is
!    procedure Proc;
! 
!    package Nested is
!       Val : ... := Server.Func;
!    end Nested;
! end Client;
  @end example
  
! In the example above, the call to @code{Server.Func} is an elaboration scenario
! because it appears at the library level of package @code{Client}. Note that the
! declaration of package @code{Nested} is ignored according to the definition
! given above. As a result, the call to @code{Server.Func} will be executed when
! 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
! and ending at the @code{end} keyword of the package body.
  
  @example
! package body Client is
!    procedure Proc is
!    begin
!       ...
!    end Proc;
! begin
!    Proc;
! end Client;
  @end example
  
! In the example above, the call to @code{Proc} is an elaboration scenario because
! it appears within the statement sequence of package body @code{Client}. As a
! result, the call to @code{Proc} will be executed when the body of @code{Client} is
! elaborated.
! @end itemize
! 
! @node Elaboration Order,Checking the Elaboration Order,Elaboration Code,Elaboration Order Handling in GNAT
! @anchor{gnat_ugn/elaboration_order_handling_in_gnat elaboration-order}@anchor{234}@anchor{gnat_ugn/elaboration_order_handling_in_gnat id3}@anchor{235}
! @section Elaboration Order
! 
! 
! 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.
  
  @example
! package body Client is
!    Result : ... := Server.Func;
! 
!    procedure Proc is
!       package Inst is new Server.Gen;
!    begin
!       Inst.Eval (Result);
!    end Proc;
! begin
!    Proc;
! end Client;
  @end example
  
! In the example above, the elaboration order within package body @code{Client} is
! as follows:
  
  
! @enumerate 
  
! @item 
! The object declaration of @code{Result} is elaborated.
  
  
! @itemize *
! 
! @item 
! Function @code{Server.Func} is invoked.
! @end itemize
! 
! @item 
! The subprogram body of @code{Proc} is elaborated.
! 
! @item 
! Procedure @code{Proc} is invoked.
  
  
  @itemize *
  
  @item 
! Generic unit @code{Server.Gen} is instantiated as @code{Inst}.
  
! @item 
! Instance @code{Inst} is elaborated.
  
! @item 
! Procedure @code{Inst.Eval} is invoked.
! @end itemize
! @end enumerate
  
! The elaboration order of all units within a partition depends on the following
! factors:
  
  
  @itemize *
  
  @item 
! @emph{with}ed units
  
! @item 
! purity of units
  
  @item 
! preelaborability of units
  
! @item 
! presence of elaboration control pragmas
  @end itemize
  
! A program may have several elaboration orders depending on its structure.
! 
! @example
! package Server is
!    function Func (Index : Integer) return Integer;
! end Server;
! @end example
! 
! @example
! package body Server is
!    Results : array (1 .. 5) of Integer := (1, 2, 3, 4, 5);
! 
!    function Func (Index : Integer) return Integer is
!    begin
!       return Results (Index);
!    end Func;
! end Server;
! @end example
! 
! @example
! with Server;
! package Client is
!    Val : constant Integer := Server.Func (3);
! end Client;
! @end example
! 
! @example
! with Client;
! procedure Main is begin null; end Main;
! @end example
! 
! The following elaboration order exhibits a fundamental problem referred to as
! @emph{access-before-elaboration} or simply @strong{ABE}.
! 
! @example
! spec of Server
! spec of Client
! body of Server
! body of Main
! @end example
! 
! The elaboration of @code{Server}'s spec materializes function @code{Func}, making it
! callable. The elaboration of @code{Client}'s spec elaborates the declaration of
! @code{Val}. This invokes function @code{Server.Func}, however the body of
! @code{Server.Func} has not been elaborated yet because @code{Server}'s body comes
! after @code{Client}'s spec in the elaboration order. As a result, the value of
! constant @code{Val} is now undefined.
! 
! Without any guarantees from the language, an undetected ABE problem may hinder
! proper initialization of data, which in turn may lead to undefined behavior at
! run time. To prevent such ABE problems, Ada employs dynamic checks in the same
! vein as index or null exclusion checks. A failed ABE check raises exception
! @code{Program_Error}.
! 
! The following elaboration order avoids the ABE problem and the program can be
! successfully elaborated.
! 
! @example
! spec of Server
! body of Server
! spec of Client
! body of Main
! @end example
! 
! 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, and elaboration control pragmas. Ideally an order which
! avoids ABE problems should be chosen, however a compiler may not always find
! such an order due to complications with respect to control and data flow.
! 
! @node Checking the Elaboration Order,Controlling the Elaboration Order in Ada,Elaboration Order,Elaboration Order Handling in GNAT
! @anchor{gnat_ugn/elaboration_order_handling_in_gnat id4}@anchor{236}@anchor{gnat_ugn/elaboration_order_handling_in_gnat checking-the-elaboration-order}@anchor{237}
! @section Checking the Elaboration Order
! 
! 
! To avoid placing the entire elaboration order burden on the programmer, Ada
! provides three lines of defense:
  
  
  @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 executes it, thus avoiding ABE problems.
+ A failed run-time check raises exception @code{Program_Error}. The following
+ restrictions apply:
+ 
+ 
+ @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.
  @end itemize
  
! 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
! execution of the scenario that invokes, instantiates, or activates the
! target.}
  
! @item 
! @emph{Elaboration control}
  
! Pragmas are provided for the programmer to specify the desired elaboration
! order.
! @end itemize
  
+ @node Controlling the Elaboration Order in Ada,Controlling the Elaboration Order in GNAT,Checking the Elaboration Order,Elaboration Order Handling in GNAT
+ @anchor{gnat_ugn/elaboration_order_handling_in_gnat controlling-the-elaboration-order-in-ada}@anchor{238}@anchor{gnat_ugn/elaboration_order_handling_in_gnat id5}@anchor{239}
+ @section Controlling the Elaboration Order in Ada
  
  
! Ada provides several idioms and pragmas to aid the programmer with specifying
! the desired elaboration order and avoiding ABE problems altogether.
  
  
  @itemize *
  
  @item 
! @emph{Packages without a body}
  
! A library package which does not require a completing body does not suffer
! from ABE problems.
  
  @example
! package Pack is
     generic
!       type Element is private;
!    package Containers is
!       type Element_Array is array (1 .. 10) of Element;
!    end Containers;
! end Pack;
  @end example
  
! In the example above, package @code{Pack} does not require a body because it
! does not contain any constructs which require completion in a body. As a
! result, generic @code{Pack.Containers} can be instantiated without encountering
! any ABE problems.
  @end itemize
  
  @geindex pragma Pure
*************** definitely is no package body to worry a
*** 27245,27256 ****
  @item 
  @emph{pragma Pure}
  
! This pragma places sufficient restrictions on a unit to guarantee that
! no call to any subprogram in the unit can result in an
! elaboration problem. This means that the compiler does not need
! to worry about the point of elaboration of such units, and in
! particular, does not need to check any calls to any subprograms
! in this unit.
  @end itemize
  
  @geindex pragma Preelaborate
--- 27492,27499 ----
  @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.
  @end itemize
  
  @geindex pragma Preelaborate
*************** in this unit.
*** 27261,27270 ****
  @item 
  @emph{pragma Preelaborate}
  
! This pragma places slightly less stringent restrictions on a unit than
! does pragma Pure,
! but these restrictions are still sufficient to ensure that there
! are no elaboration problems with any calls to the unit.
  @end itemize
  
  @geindex pragma Elaborate_Body
--- 27504,27511 ----
  @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.
  @end itemize
  
  @geindex pragma Elaborate_Body
*************** are no elaboration problems with any cal
*** 27275,28783 ****
  @item 
  @emph{pragma Elaborate_Body}
  
! This pragma requires that the body of a unit be elaborated immediately
! after its spec. Suppose a unit @cite{A} has such a pragma,
! and unit @cite{B} does
! a @emph{with} of unit @cite{A}. Recall that the standard rules require
! the spec of unit @cite{A}
! to be elaborated before the @emph{with}ing unit; given the pragma in
! @cite{A}, we also know that the body of @cite{A}
! will be elaborated before @cite{B}, so
! that calls to @cite{A} are safe and do not need a check.
  
! Note that, unlike pragma @cite{Pure} and pragma @cite{Preelaborate},
! the use of @cite{Elaborate_Body} does not guarantee that the program is
! free of elaboration problems, because it may not be possible
! to satisfy the requested elaboration order.
! Let's go back to the example with @cite{Unit_1} and @cite{Unit_2}.
! If a programmer marks @cite{Unit_1} as @cite{Elaborate_Body},
! and not @cite{Unit_2@comma{}} then the order of
! elaboration will be:
  
  @example
! Spec of Unit_2
! Spec of Unit_1
! Body of Unit_1
! Body of Unit_2
  @end example
  
! Now that means that the call to @cite{Func_1} in @cite{Unit_2}
! need not be checked,
! it must be safe. But the call to @cite{Func_2} in
! @cite{Unit_1} may still fail if
! @cite{Expression_1} is equal to 1,
! and the programmer must still take
! responsibility for this not being the case.
  
! If all units carry a pragma @cite{Elaborate_Body}, then all problems are
! eliminated, except for calls entirely within a body, which are
! in any case fully under programmer control. However, using the pragma
! everywhere is not always possible.
! In particular, for our @cite{Unit_1}/@cite{Unit_2} example, if
! we marked both of them as having pragma @cite{Elaborate_Body}, then
! clearly there would be no possible elaboration order.
  @end itemize
  
! The above pragmas allow a server to guarantee safe use by clients, and
! clearly this is the preferable approach. Consequently a good rule
! is to mark units as @cite{Pure} or @cite{Preelaborate} if possible,
! and if this is not possible,
! mark them as @cite{Elaborate_Body} if possible.
! As we have seen, there are situations where neither of these
! three pragmas can be used.
! So we also provide methods for clients to control the
! order of elaboration of the servers on which they depend:
  
! @geindex pragma Elaborate
  
  
  @itemize *
  
  @item 
! @emph{pragma Elaborate (unit)}
  
! This pragma is placed in the context clause, after a @emph{with} clause,
! and it requires that the body of the named unit be elaborated before
! the unit in which the pragma occurs. The idea is to use this pragma
! if the current unit calls at elaboration time, directly or indirectly,
! some subprogram in the named unit.
  @end itemize
  
! @geindex pragma Elaborate_All
  
  
  @itemize *
  
  @item 
! @emph{pragma Elaborate_All (unit)}
  
! This is a stronger version of the Elaborate pragma. Consider the
! following example:
  
  @example
! Unit A |withs| unit B and calls B.Func in elab code
! Unit B |withs| unit C, and B.Func calls C.Func
  @end example
  
! Now if we put a pragma @cite{Elaborate (B)}
! in unit @cite{A}, this ensures that the
! body of @cite{B} is elaborated before the call, but not the
! body of @cite{C}, so
! the call to @cite{C.Func} could still cause @cite{Program_Error} to
! be raised.
  
! The effect of a pragma @cite{Elaborate_All} is stronger, it requires
! not only that the body of the named unit be elaborated before the
! unit doing the @emph{with}, but also the bodies of all units that the
! named unit uses, following @emph{with} links transitively. For example,
! if we put a pragma @cite{Elaborate_All (B)} in unit @cite{A},
! then it requires not only that the body of @cite{B} be elaborated before @cite{A},
! but also the body of @cite{C}, because @cite{B} @emph{with}s @cite{C}.
  @end itemize
  
! We are now in a position to give a usage rule in Ada for avoiding
! elaboration problems, at least if dynamic dispatching and access to
! subprogram values are not used. We will handle these cases separately
! later.
  
! The rule is simple:
  
! @emph{If a unit has elaboration code that can directly or
! indirectly make a call to a subprogram in a |withed| unit, or instantiate
! a generic package in a |withed| unit,
! then if the |withed| unit does not have
! pragma `Pure` or `Preelaborate`, then the client should have
! a pragma `Elaborate_All`for the |withed| unit.*}
  
- By following this rule a client is
- assured that calls can be made without risk of an exception.
  
! For generic subprogram instantiations, the rule can be relaxed to
! require only a pragma @cite{Elaborate} since elaborating the body
! of a subprogram cannot cause any transitive elaboration (we are
! not calling the subprogram in this case, just elaborating its
! declaration).
  
! If this rule is not followed, then a program may be in one of four
! states:
  
  
  @itemize *
  
  @item 
! @emph{No order exists}
  
! No order of elaboration exists which follows the rules, taking into
! account any @cite{Elaborate}, @cite{Elaborate_All},
! or @cite{Elaborate_Body} pragmas. In
! this case, an Ada compiler must diagnose the situation at bind
! time, and refuse to build an executable program.
  
  @item 
! @emph{One or more orders exist, all incorrect}
  
! One or more acceptable elaboration orders exist, and all of them
! generate an elaboration order problem. In this case, the binder
! can build an executable program, but @cite{Program_Error} will be raised
! when the program is run.
  
  @item 
! @emph{Several orders exist, some right, some incorrect}
  
! One or more acceptable elaboration orders exists, and some of them
! work, and some do not. The programmer has not controlled
! the order of elaboration, so the binder may or may not pick one of
! the correct orders, and the program may or may not raise an
! exception when it is run. This is the worst case, because it means
! that the program may fail when moved to another compiler, or even
! another version of the same compiler.
  
  @item 
! @emph{One or more orders exists, all correct}
  
! One ore more acceptable elaboration orders exist, and all of them
! work. In this case the program runs successfully. This state of
! affairs can be guaranteed by following the rule we gave above, but
! may be true even if the rule is not followed.
  @end itemize
  
! Note that one additional advantage of following our rules on the use
! of @cite{Elaborate} and @cite{Elaborate_All}
! is that the program continues to stay in the ideal (all orders OK) state
! even if maintenance
! changes some bodies of some units. Conversely, if a program that does
! not follow this rule happens to be safe at some point, this state of affairs
! may deteriorate silently as a result of maintenance changes.
  
! You may have noticed that the above discussion did not mention
! the use of @cite{Elaborate_Body}. This was a deliberate omission. If you
! @emph{with} an @cite{Elaborate_Body} unit, it still may be the case that
! code in the body makes calls to some other unit, so it is still necessary
! to use @cite{Elaborate_All} on such units.
  
! @node Controlling Elaboration in GNAT - Internal Calls,Controlling Elaboration in GNAT - External Calls,Controlling the Elaboration Order,Elaboration Order Handling in GNAT
! @anchor{gnat_ugn/elaboration_order_handling_in_gnat id5}@anchor{238}@anchor{gnat_ugn/elaboration_order_handling_in_gnat controlling-elaboration-in-gnat-internal-calls}@anchor{239}
! @section Controlling Elaboration in GNAT - Internal Calls
  
  
! In the case of internal calls, i.e., calls within a single package, the
! programmer has full control over the order of elaboration, and it is up
! to the programmer to elaborate declarations in an appropriate order. For
! example writing:
  
  @example
! function One return Float;
  
! Q : Float := One;
  
! function One return Float is
! begin
!      return 1.0;
! end One;
  @end example
  
! will obviously raise @cite{Program_Error} at run time, because function
! One will be called before its body is elaborated. In this case GNAT will
! generate a warning that the call will raise @cite{Program_Error}:
  
  @example
!  1. procedure y is
!  2.    function One return Float;
!  3.
!  4.    Q : Float := One;
!                     |
!     >>> warning: cannot call "One" before body is elaborated
!     >>> warning: Program_Error will be raised at run time
  
!  5.
!  6.    function One return Float is
!  7.    begin
!  8.         return 1.0;
!  9.    end One;
! 10.
! 11. begin
! 12.    null;
! 13. end;
  @end example
  
! Note that in this particular case, it is likely that the call is safe, because
! the function @cite{One} does not access any global variables.
! Nevertheless in Ada, we do not want the validity of the check to depend on
! the contents of the body (think about the separate compilation case), so this
! is still wrong, as we discussed in the previous sections.
  
! The error is easily corrected by rearranging the declarations so that the
! body of @cite{One} appears before the declaration containing the call
! (note that in Ada 95 as well as later versions of the Ada standard,
! declarations can appear in any order, so there is no restriction that
! would prevent this reordering, and if we write:
  
  @example
! function One return Float;
  
- function One return Float is
  begin
!      return 1.0;
! end One;
  
! Q : Float := One;
  @end example
  
! then all is well, no warning is generated, and no
! @cite{Program_Error} exception
! will be raised.
! Things are more complicated when a chain of subprograms is executed:
  
  @example
! function A return Integer;
! function B return Integer;
! function C return Integer;
  
! function B return Integer is begin return A; end;
! function C return Integer is begin return B; end;
  
! X : Integer := C;
  
! function A return Integer is begin return 1; end;
  @end example
  
! Now the call to @cite{C}
! at elaboration time in the declaration of @cite{X} is correct, because
! the body of @cite{C} is already elaborated,
! and the call to @cite{B} within the body of
! @cite{C} is correct, but the call
! to @cite{A} within the body of @cite{B} is incorrect, because the body
! of @cite{A} has not been elaborated, so @cite{Program_Error}
! will be raised on the call to @cite{A}.
! In this case GNAT will generate a
! warning that @cite{Program_Error} may be
! raised at the point of the call. Let's look at the warning:
  
  @example
!  1. procedure x is
!  2.    function A return Integer;
!  3.    function B return Integer;
!  4.    function C return Integer;
!  5.
!  6.    function B return Integer is begin return A; end;
!                                                     |
!     >>> warning: call to "A" before body is elaborated may
!                  raise Program_Error
!     >>> warning: "B" called at line 7
!     >>> warning: "C" called at line 9
  
!  7.    function C return Integer is begin return B; end;
   8.
!  9.    X : Integer := C;
! 10.
! 11.    function A return Integer is begin return 1; end;
! 12.
! 13. begin
! 14.    null;
! 15. end;
  @end example
  
! Note that the message here says 'may raise', instead of the direct case,
! where the message says 'will be raised'. That's because whether
! @cite{A} is
! actually called depends in general on run-time flow of control.
! For example, if the body of @cite{B} said
  
  @example
! function B return Integer is
! begin
!    if some-condition-depending-on-input-data then
!       return A;
!    else
!       return 1;
!    end if;
! end B;
  @end example
  
! then we could not know until run time whether the incorrect call to A would
! actually occur, so @cite{Program_Error} might
! or might not be raised. It is possible for a compiler to
! do a better job of analyzing bodies, to
! determine whether or not @cite{Program_Error}
! might be raised, but it certainly
! couldn't do a perfect job (that would require solving the halting problem
! and is provably impossible), and because this is a warning anyway, it does
! not seem worth the effort to do the analysis. Cases in which it
! would be relevant are rare.
  
! In practice, warnings of either of the forms given
! above will usually correspond to
! real errors, and should be examined carefully and eliminated.
! In the rare case where a warning is bogus, it can be suppressed by any of
! the following methods:
  
  
  @itemize *
  
  @item 
! Compile with the @emph{-gnatws} switch set
  
  @item 
! Suppress @cite{Elaboration_Check} for the called subprogram
  
  @item 
! Use pragma @cite{Warnings_Off} to turn warnings off for the call
  @end itemize
  
! For the internal elaboration check case,
! GNAT by default generates the
! necessary run-time checks to ensure
! that @cite{Program_Error} is raised if any
! call fails an elaboration check. Of course this can only happen if a
! warning has been issued as described above. The use of pragma
! @cite{Suppress (Elaboration_Check)} may (but is not guaranteed to) suppress
! some of these checks, meaning that it may be possible (but is not
! guaranteed) for a program to be able to call a subprogram whose body
! is not yet elaborated, without raising a @cite{Program_Error} exception.
  
! @node Controlling Elaboration in GNAT - External Calls,Default Behavior in GNAT - Ensuring Safety,Controlling Elaboration in GNAT - Internal Calls,Elaboration Order Handling in GNAT
! @anchor{gnat_ugn/elaboration_order_handling_in_gnat id6}@anchor{23a}@anchor{gnat_ugn/elaboration_order_handling_in_gnat controlling-elaboration-in-gnat-external-calls}@anchor{23b}
! @section Controlling Elaboration in GNAT - External Calls
  
  
! The previous section discussed the case in which the execution of a
! particular thread of elaboration code occurred entirely within a
! single unit. This is the easy case to handle, because a programmer
! has direct and total control over the order of elaboration, and
! furthermore, checks need only be generated in cases which are rare
! and which the compiler can easily detect.
! The situation is more complex when separate compilation is taken into account.
! Consider the following:
  
- @example
- package Math is
-    function Sqrt (Arg : Float) return Float;
- end Math;
  
! package body Math is
!    function Sqrt (Arg : Float) return Float is
!    begin
!          ...
!    end Sqrt;
! end Math;
  
! with Math;
! package Stuff is
!    X : Float := Math.Sqrt (0.5);
! end Stuff;
  
! with Stuff;
! procedure Main is
! begin
!    ...
! end Main;
  @end example
  
! where @cite{Main} is the main program. When this program is executed, the
! elaboration code must first be executed, and one of the jobs of the
! binder is to determine the order in which the units of a program are
! to be elaborated. In this case we have four units: the spec and body
! of @cite{Math},
! the spec of @cite{Stuff} and the body of @cite{Main}).
! In what order should the four separate sections of elaboration code
! be executed?
  
! There are some restrictions in the order of elaboration that the binder
! can choose. In particular, if unit U has a @emph{with}
! for a package @cite{X}, then you
! are assured that the spec of @cite{X}
! is elaborated before U , but you are
! not assured that the body of @cite{X}
! is elaborated before U.
! This means that in the above case, the binder is allowed to choose the
! order:
  
  @example
! spec of Math
! spec of Stuff
! body of Math
! body of Main
  @end example
  
! but that's not good, because now the call to @cite{Math.Sqrt}
! that happens during
! the elaboration of the @cite{Stuff}
! spec happens before the body of @cite{Math.Sqrt} is
! elaborated, and hence causes @cite{Program_Error} exception to be raised.
! At first glance, one might say that the binder is misbehaving, because
! obviously you want to elaborate the body of something you @emph{with} first, but
! that is not a general rule that can be followed in all cases. Consider
  
! @example
! package X is ...
  
- package Y is ...
  
! with X;
! package body Y is ...
  
- with Y;
- package body X is ...
- @end example
  
! This is a common arrangement, and, apart from the order of elaboration
! problems that might arise in connection with elaboration code, this works fine.
! A rule that says that you must first elaborate the body of anything you
! @emph{with} cannot work in this case:
! the body of @cite{X} @emph{with}s @cite{Y},
! which means you would have to
! elaborate the body of @cite{Y} first, but that @emph{with}s @cite{X},
! which means
! you have to elaborate the body of @cite{X} first, but ... and we have a
! loop that cannot be broken.
  
! It is true that the binder can in many cases guess an order of elaboration
! that is unlikely to cause a @cite{Program_Error}
! exception to be raised, and it tries to do so (in the
! above example of @cite{Math/Stuff/Spec}, the GNAT binder will
! by default
! elaborate the body of @cite{Math} right after its spec, so all will be well).
  
! However, a program that blindly relies on the binder to be helpful can
! get into trouble, as we discussed in the previous sections, so GNAT
! provides a number of facilities for assisting the programmer in
! developing programs that are robust with respect to elaboration order.
  
! @node Default Behavior in GNAT - Ensuring Safety,Treatment of Pragma Elaborate,Controlling Elaboration in GNAT - External Calls,Elaboration Order Handling in GNAT
! @anchor{gnat_ugn/elaboration_order_handling_in_gnat id7}@anchor{23c}@anchor{gnat_ugn/elaboration_order_handling_in_gnat default-behavior-in-gnat-ensuring-safety}@anchor{23d}
! @section Default Behavior in GNAT - Ensuring Safety
  
  
! The default behavior in GNAT ensures elaboration safety. In its
! default mode GNAT implements the
! rule we previously described as the right approach. Let's restate it:
  
- @emph{If a unit has elaboration code that can directly or indirectly make a
- call to a subprogram in a |withed| unit, or instantiate a generic
- package in a |withed| unit, then if the |withed| unit
- does not have pragma `Pure` or `Preelaborate`, then the client should have an
- `Elaborate_All` pragma for the |withed| unit.}
  
! @emph{In the case of instantiating a generic subprogram, it is always
! sufficient to have only an `Elaborate` pragma for the
! |withed| unit.}
  
! By following this rule a client is assured that calls and instantiations
! can be made without risk of an exception.
  
! In this mode GNAT traces all calls that are potentially made from
! elaboration code, and puts in any missing implicit @cite{Elaborate}
! and @cite{Elaborate_All} pragmas.
! The advantage of this approach is that no elaboration problems
! are possible if the binder can find an elaboration order that is
! consistent with these implicit @cite{Elaborate} and
! @cite{Elaborate_All} pragmas. The
! disadvantage of this approach is that no such order may exist.
  
! If the binder does not generate any diagnostics, then it means that it has
! found an elaboration order that is guaranteed to be safe. However, the binder
! may still be relying on implicitly generated @cite{Elaborate} and
! @cite{Elaborate_All} pragmas so portability to other compilers than GNAT is not
! guaranteed.
  
! If it is important to guarantee portability, then the compilations should
! use the @emph{-gnatel}
! (info messages for elaboration pragmas) switch. This will cause info messages
! to be generated indicating the missing @cite{Elaborate} and
! @cite{Elaborate_All} pragmas.
! Consider the following source program:
  
! @example
! with k;
! package j is
!   m : integer := k.r;
! end;
! @end example
  
! where it is clear that there
! should be a pragma @cite{Elaborate_All}
! for unit @cite{k}. An implicit pragma will be generated, and it is
! likely that the binder will be able to honor it. However, if you want
! to port this program to some other Ada compiler than GNAT.
! it is safer to include the pragma explicitly in the source. If this
! unit is compiled with the @emph{-gnatel}
! switch, then the compiler outputs an information message:
  
! @example
! 1. with k;
! 2. package j is
! 3.   m : integer := k.r;
!                      |
!    >>> info: call to "r" may raise Program_Error
!    >>> info: missing pragma Elaborate_All for "k"
  
! 4. end;
! @end example
  
- and these messages can be used as a guide for supplying manually
- the missing pragmas. It is usually a bad idea to use this
- option during development. That's because it will tell you when
- you need to put in a pragma, but cannot tell you when it is time
- to take it out. So the use of pragma @cite{Elaborate_All} may lead to
- unnecessary dependencies and even false circularities.
  
! This default mode is more restrictive than the Ada Reference
! Manual, and it is possible to construct programs which will compile
! using the dynamic model described there, but will run into a
! circularity using the safer static model we have described.
  
! Of course any Ada compiler must be able to operate in a mode
! consistent with the requirements of the Ada Reference Manual,
! and in particular must have the capability of implementing the
! standard dynamic model of elaboration with run-time checks.
  
! In GNAT, this standard mode can be achieved either by the use of
! the @emph{-gnatE} switch on the compiler (@emph{gcc} or
! @emph{gnatmake}) command, or by the use of the configuration pragma:
  
  @example
! pragma Elaboration_Checks (DYNAMIC);
  @end example
  
! Either approach will cause the unit affected to be compiled using the
! standard dynamic run-time elaboration checks described in the Ada
! Reference Manual. The static model is generally preferable, since it
! is clearly safer to rely on compile and link time checks rather than
! run-time checks. However, in the case of legacy code, it may be
! difficult to meet the requirements of the static model. This
! issue is further discussed in
! @ref{23e,,What to Do If the Default Elaboration Behavior Fails}.
  
! Note that the static model provides a strict subset of the allowed
! behavior and programs of the Ada Reference Manual, so if you do
! adhere to the static model and no circularities exist,
! then you are assured that your program will
! work using the dynamic model, providing that you remove any
! pragma Elaborate statements from the source.
  
! @node Treatment of Pragma Elaborate,Elaboration Issues for Library Tasks,Default Behavior in GNAT - Ensuring Safety,Elaboration Order Handling in GNAT
! @anchor{gnat_ugn/elaboration_order_handling_in_gnat treatment-of-pragma-elaborate}@anchor{23f}@anchor{gnat_ugn/elaboration_order_handling_in_gnat id8}@anchor{240}
! @section Treatment of Pragma Elaborate
  
  
! @geindex Pragma Elaborate
  
! The use of @cite{pragma Elaborate}
! should generally be avoided in Ada 95 and Ada 2005 programs,
! since there is no guarantee that transitive calls
! will be properly handled. Indeed at one point, this pragma was placed
! in Annex J (Obsolescent Features), on the grounds that it is never useful.
  
! Now that's a bit restrictive. In practice, the case in which
! @cite{pragma Elaborate} is useful is when the caller knows that there
! are no transitive calls, or that the called unit contains all necessary
! transitive @cite{pragma Elaborate} statements, and legacy code often
! contains such uses.
  
! Strictly speaking the static mode in GNAT should ignore such pragmas,
! since there is no assurance at compile time that the necessary safety
! conditions are met. In practice, this would cause GNAT to be incompatible
! with correctly written Ada 83 code that had all necessary
! @cite{pragma Elaborate} statements in place. Consequently, we made the
! decision that GNAT in its default mode will believe that if it encounters
! a @cite{pragma Elaborate} then the programmer knows what they are doing,
! and it will trust that no elaboration errors can occur.
  
! The result of this decision is two-fold. First to be safe using the
! static mode, you should remove all @cite{pragma Elaborate} statements.
! Second, when fixing circularities in existing code, you can selectively
! use @cite{pragma Elaborate} statements to convince the static mode of
! GNAT that it need not generate an implicit @cite{pragma Elaborate_All}
! statement.
  
! When using the static mode with @emph{-gnatwl}, any use of
! @cite{pragma Elaborate} will generate a warning about possible
! problems.
  
! @node Elaboration Issues for Library Tasks,Mixing Elaboration Models,Treatment of Pragma Elaborate,Elaboration Order Handling in GNAT
! @anchor{gnat_ugn/elaboration_order_handling_in_gnat elaboration-issues-for-library-tasks}@anchor{241}@anchor{gnat_ugn/elaboration_order_handling_in_gnat id9}@anchor{242}
! @section Elaboration Issues for Library Tasks
  
  
! @geindex Library tasks
! @geindex elaboration issues
  
! @geindex Elaboration of library tasks
  
- In this section we examine special elaboration issues that arise for
- programs that declare library level tasks.
  
! Generally the model of execution of an Ada program is that all units are
! elaborated, and then execution of the program starts. However, the
! declaration of library tasks definitely does not fit this model. The
! reason for this is that library tasks start as soon as they are declared
! (more precisely, as soon as the statement part of the enclosing package
! body is reached), that is to say before elaboration
! of the program is complete. This means that if such a task calls a
! subprogram, or an entry in another task, the callee may or may not be
! elaborated yet, and in the standard
! Reference Manual model of dynamic elaboration checks, you can even
! get timing dependent Program_Error exceptions, since there can be
! a race between the elaboration code and the task code.
  
! The static model of elaboration in GNAT seeks to avoid all such
! dynamic behavior, by being conservative, and the conservative
! approach in this particular case is to assume that all the code
! in a task body is potentially executed at elaboration time if
! a task is declared at the library level.
  
! This can definitely result in unexpected circularities. Consider
! the following example
  
  @example
  package Decls is
!   task Lib_Task is
!      entry Start;
!   end Lib_Task;
  
!   type My_Int is new Integer;
  
!   function Ident (M : My_Int) return My_Int;
  end Decls;
  
  with Utils;
  package body Decls is
!   task body Lib_Task is
!   begin
!      accept Start;
!      Utils.Put_Val (2);
!   end Lib_Task;
  
!   function Ident (M : My_Int) return My_Int is
!   begin
!      return M;
!   end Ident;
  end Decls;
  
  with Decls;
  package Utils is
!   procedure Put_Val (Arg : Decls.My_Int);
  end Utils;
  
! with Text_IO;
  package body Utils is
!   procedure Put_Val (Arg : Decls.My_Int) is
!   begin
!      Text_IO.Put_Line (Decls.My_Int'Image (Decls.Ident (Arg)));
!   end Put_Val;
  end Utils;
  
  with Decls;
  procedure Main is
  begin
     Decls.Lib_Task.Start;
! end;
  @end example
  
! If the above example is compiled in the default static elaboration
! mode, then a circularity occurs. The circularity comes from the call
! @cite{Utils.Put_Val} in the task body of @cite{Decls.Lib_Task}. Since
! this call occurs in elaboration code, we need an implicit pragma
! @cite{Elaborate_All} for @cite{Utils}. This means that not only must
! the spec and body of @cite{Utils} be elaborated before the body
! of @cite{Decls}, but also the spec and body of any unit that is
! @emph{with}ed by the body of @cite{Utils} must also be elaborated before
! the body of @cite{Decls}. This is the transitive implication of
! pragma @cite{Elaborate_All} and it makes sense, because in general
! the body of @cite{Put_Val} might have a call to something in a
! @emph{with}ed unit.
! 
! In this case, the body of Utils (actually its spec) @emph{with}s
! @cite{Decls}. Unfortunately this means that the body of @cite{Decls}
! must be elaborated before itself, in case there is a call from the
! body of @cite{Utils}.
! 
! Here is the exact chain of events we are worrying about:
! 
! 
! @itemize *
! 
! @item 
! In the body of @cite{Decls} a call is made from within the body of a library
! task to a subprogram in the package @cite{Utils}. Since this call may
! occur at elaboration time (given that the task is activated at elaboration
! time), we have to assume the worst, i.e., that the
! call does happen at elaboration time.
! 
! @item 
! This means that the body and spec of @cite{Util} must be elaborated before
! the body of @cite{Decls} so that this call does not cause an access before
! elaboration.
! 
! @item 
! Within the body of @cite{Util}, specifically within the body of
! @cite{Util.Put_Val} there may be calls to any unit @emph{with}ed
! by this package.
! 
! @item 
! One such @emph{with}ed package is package @cite{Decls}, so there
! might be a call to a subprogram in @cite{Decls} in @cite{Put_Val}.
! In fact there is such a call in this example, but we would have to
! assume that there was such a call even if it were not there, since
! we are not supposed to write the body of @cite{Decls} knowing what
! is in the body of @cite{Utils}; certainly in the case of the
! static elaboration model, the compiler does not know what is in
! other bodies and must assume the worst.
! 
! @item 
! This means that the spec and body of @cite{Decls} must also be
! elaborated before we elaborate the unit containing the call, but
! that unit is @cite{Decls}! This means that the body of @cite{Decls}
! must be elaborated before itself, and that's a circularity.
! @end itemize
  
! Indeed, if you add an explicit pragma @cite{Elaborate_All} for @cite{Utils} in
! the body of @cite{Decls} you will get a true Ada Reference Manual
! circularity that makes the program illegal.
  
! In practice, we have found that problems with the static model of
! elaboration in existing code often arise from library tasks, so
! we must address this particular situation.
  
! Note that if we compile and run the program above, using the dynamic model of
! elaboration (that is to say use the @emph{-gnatE} switch),
! then it compiles, binds,
! links, and runs, printing the expected result of 2. Therefore in some sense
! the circularity here is only apparent, and we need to capture
! the properties of this program that  distinguish it from other library-level
! tasks that have real elaboration problems.
  
! We have four possible answers to this question:
  
  
  @itemize *
  
  @item 
! Use the dynamic model of elaboration.
  
! If we use the @emph{-gnatE} switch, then as noted above, the program works.
! Why is this? If we examine the task body, it is apparent that the task cannot
! proceed past the
! @cite{accept} statement until after elaboration has been completed, because
! the corresponding entry call comes from the main program, not earlier.
! This is why the dynamic model works here. But that's really giving
! up on a precise analysis, and we prefer to take this approach only if we cannot
! solve the
! problem in any other manner. So let us examine two ways to reorganize
! the program to avoid the potential elaboration problem.
  
  @item 
! Split library tasks into separate packages.
  
! Write separate packages, so that library tasks are isolated from
! other declarations as much as possible. Let us look at a variation on
! the above program.
  
  @example
! package Decls1 is
!   task Lib_Task is
!      entry Start;
!   end Lib_Task;
  end Decls1;
  
  with Utils;
! package body Decls1 is
!   task body Lib_Task is
!   begin
!      accept Start;
!      Utils.Put_Val (2);
!   end Lib_Task;
  end Decls1;
  
! package Decls2 is
!   type My_Int is new Integer;
!   function Ident (M : My_Int) return My_Int;
  end Decls2;
  
  with Utils;
! package body Decls2 is
!   function Ident (M : My_Int) return My_Int is
!   begin
!      return M;
!   end Ident;
  end Decls2;
  
  with Decls2;
  package Utils is
!   procedure Put_Val (Arg : Decls2.My_Int);
  end Utils;
  
! with Text_IO;
  package body Utils is
!   procedure Put_Val (Arg : Decls2.My_Int) is
!   begin
!      Text_IO.Put_Line (Decls2.My_Int'Image (Decls2.Ident (Arg)));
!   end Put_Val;
  end Utils;
  
  with Decls1;
  procedure Main is
  begin
     Decls1.Lib_Task.Start;
! end;
  @end example
  
- All we have done is to split @cite{Decls} into two packages, one
- containing the library task, and one containing everything else. Now
- there is no cycle, and the program compiles, binds, links and executes
- using the default static model of elaboration.
- 
  @item 
! Declare separate task types.
  
! A significant part of the problem arises because of the use of the
! single task declaration form. This means that the elaboration of
! the task type, and the elaboration of the task itself (i.e., the
! creation of the task) happen at the same time. A good rule
! of style in Ada is to always create explicit task types. By
! following the additional step of placing task objects in separate
! packages from the task type declaration, many elaboration problems
! are avoided. Here is another modified example of the example program:
  
  @example
  package Decls is
!   task type Lib_Task_Type is
!      entry Start;
!   end Lib_Task_Type;
  
!   type My_Int is new Integer;
  
!   function Ident (M : My_Int) return My_Int;
  end Decls;
  
  with Utils;
  package body Decls is
!   task body Lib_Task_Type is
!   begin
!      accept Start;
!      Utils.Put_Val (2);
!   end Lib_Task_Type;
  
!   function Ident (M : My_Int) return My_Int is
!   begin
!      return M;
!   end Ident;
  end Decls;
  
  with Decls;
  package Utils is
!   procedure Put_Val (Arg : Decls.My_Int);
  end Utils;
  
! with Text_IO;
  package body Utils is
!   procedure Put_Val (Arg : Decls.My_Int) is
!   begin
!      Text_IO.Put_Line (Decls.My_Int'Image (Decls.Ident (Arg)));
!   end Put_Val;
  end Utils;
  
  with Decls;
! package Declst is
!    Lib_Task : Decls.Lib_Task_Type;
! end Declst;
  
! with Declst;
  procedure Main is
  begin
!    Declst.Lib_Task.Start;
! end;
  @end example
  
- What we have done here is to replace the @cite{task} declaration in
- package @cite{Decls} with a @cite{task type} declaration. Then we
- introduce a separate package @cite{Declst} to contain the actual
- task object. This separates the elaboration issues for
- the @cite{task type}
- declaration, which causes no trouble, from the elaboration issues
- of the task object, which is also unproblematic, since it is now independent
- of the elaboration of  @cite{Utils}.
- This separation of concerns also corresponds to
- a generally sound engineering principle of separating declarations
- from instances. This version of the program also compiles, binds, links,
- and executes, generating the expected output.
- @end itemize
- 
- @geindex No_Entry_Calls_In_Elaboration_Code restriction
- 
- 
- @itemize *
- 
  @item 
! Use No_Entry_Calls_In_Elaboration_Code restriction.
! 
! The previous two approaches described how a program can be restructured
! to avoid the special problems caused by library task bodies. in practice,
! however, such restructuring may be difficult to apply to existing legacy code,
! so we must consider solutions that do not require massive rewriting.
! 
! Let us consider more carefully why our original sample program works
! under the dynamic model of elaboration. The reason is that the code
! in the task body blocks immediately on the @cite{accept}
! statement. Now of course there is nothing to prohibit elaboration
! code from making entry calls (for example from another library level task),
! so we cannot tell in isolation that
! the task will not execute the accept statement  during elaboration.
  
! However, in practice it is very unusual to see elaboration code
! make any entry calls, and the pattern of tasks starting
! at elaboration time and then immediately blocking on @cite{accept} or
! @cite{select} statements is very common. What this means is that
! the compiler is being too pessimistic when it analyzes the
! whole package body as though it might be executed at elaboration
! time.
  
! If we know that the elaboration code contains no entry calls, (a very safe
! assumption most of the time, that could almost be made the default
! behavior), then we can compile all units of the program under control
! of the following configuration pragma:
  
  @example
  pragma Restrictions (No_Entry_Calls_In_Elaboration_Code);
  @end example
  
! This pragma can be placed in the @code{gnat.adc} file in the usual
! manner. If we take our original unmodified program and compile it
! in the presence of a @code{gnat.adc} containing the above pragma,
! then once again, we can compile, bind, link, and execute, obtaining
! the expected result. In the presence of this pragma, the compiler does
! not trace calls in a task body, that appear after the first @cite{accept}
! or @cite{select} statement, and therefore does not report a potential
! circularity in the original program.
! 
! The compiler will check to the extent it can that the above
! restriction is not violated, but it is not always possible to do a
! complete check at compile time, so it is important to use this
! pragma only if the stated restriction is in fact met, that is to say
! no task receives an entry call before elaboration of all units is completed.
! @end itemize
! 
! @node Mixing Elaboration Models,What to Do If the Default Elaboration Behavior Fails,Elaboration Issues for Library Tasks,Elaboration Order Handling in GNAT
! @anchor{gnat_ugn/elaboration_order_handling_in_gnat id10}@anchor{243}@anchor{gnat_ugn/elaboration_order_handling_in_gnat mixing-elaboration-models}@anchor{244}
! @section Mixing Elaboration Models
! 
! 
! So far, we have assumed that the entire program is either compiled
! using the dynamic model or static model, ensuring consistency. It
! is possible to mix the two models, but rules have to be followed
! if this mixing is done to ensure that elaboration checks are not
! omitted.
! 
! The basic rule is that
! @strong{a unit compiled with the static model cannot
! be |withed| by a unit compiled with the dynamic model}.
! The reason for this is that in the static model, a unit assumes that
! its clients guarantee to use (the equivalent of) pragma
! @cite{Elaborate_All} so that no elaboration checks are required
! in inner subprograms, and this assumption is violated if the
! client is compiled with dynamic checks.
! 
! The precise rule is as follows. A unit that is compiled with dynamic
! checks can only @emph{with} a unit that meets at least one of the
! following criteria:
! 
! 
! @itemize *
! 
! @item 
! The @emph{with}ed unit is itself compiled with dynamic elaboration
! checks (that is with the @emph{-gnatE} switch.
! 
! @item 
! The @emph{with}ed unit is an internal GNAT implementation unit from
! the System, Interfaces, Ada, or GNAT hierarchies.
! 
! @item 
! The @emph{with}ed unit has pragma Preelaborate or pragma Pure.
! 
! @item 
! The @emph{with}ing unit (that is the client) has an explicit pragma
! @cite{Elaborate_All} for the @emph{with}ed unit.
  @end itemize
  
! If this rule is violated, that is if a unit with dynamic elaboration
! checks @emph{with}s a unit that does not meet one of the above four
! criteria, then the binder (@cite{gnatbind}) will issue a warning
! similar to that in the following example:
  
- @example
- warning: "x.ads" has dynamic elaboration checks and with's
- warning:   "y.ads" which has static elaboration checks
- @end example
  
! These warnings indicate that the rule has been violated, and that as a result
! elaboration checks may be missed in the resulting executable file.
! This warning may be suppressed using the @emph{-ws} binder switch
! in the usual manner.
  
! One useful application of this mixing rule is in the case of a subsystem
! which does not itself @emph{with} units from the remainder of the
! application. In this case, the entire subsystem can be compiled with
! dynamic checks to resolve a circularity in the subsystem, while
! allowing the main application that uses this subsystem to be compiled
! using the more reliable default static model.
  
- @node What to Do If the Default Elaboration Behavior Fails,Elaboration for Indirect Calls,Mixing Elaboration Models,Elaboration Order Handling in GNAT
- @anchor{gnat_ugn/elaboration_order_handling_in_gnat id11}@anchor{245}@anchor{gnat_ugn/elaboration_order_handling_in_gnat what-to-do-if-the-default-elaboration-behavior-fails}@anchor{23e}
- @section What to Do If the Default Elaboration Behavior Fails
  
  
! If the binder cannot find an acceptable order, it outputs detailed
! diagnostics. For example:
  
! @example
! error: elaboration circularity detected
! info:   "proc (body)" must be elaborated before "pack (body)"
! info:     reason: Elaborate_All probably needed in unit "pack (body)"
! info:     recompile "pack (body)" with -gnatel
! info:                             for full details
! info:       "proc (body)"
! info:         is needed by its spec:
! info:       "proc (spec)"
! info:         which is withed by:
! info:       "pack (body)"
! info:  "pack (body)" must be elaborated before "proc (body)"
! info:     reason: pragma Elaborate in unit "proc (body)"
! @end example
  
! In this case we have a cycle that the binder cannot break. On the one
! hand, there is an explicit pragma Elaborate in @cite{proc} for
! @cite{pack}. This means that the body of @cite{pack} must be elaborated
! before the body of @cite{proc}. On the other hand, there is elaboration
! code in @cite{pack} that calls a subprogram in @cite{proc}. This means
! that for maximum safety, there should really be a pragma
! Elaborate_All in @cite{pack} for @cite{proc} which would require that
! the body of @cite{proc} be elaborated before the body of
! @cite{pack}. Clearly both requirements cannot be satisfied.
! Faced with a circularity of this kind, you have three different options.
  
  
- @itemize *
  
! @item 
! @emph{Fix the program}
  
! 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 called 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.
  
! @item 
! @emph{Perform dynamic checks}
  
! If the compilations are done using the @emph{-gnatE}
! (dynamic elaboration check) switch, then GNAT behaves in a quite different
! manner. Dynamic checks are generated for all calls that could possibly result
! in raising an exception. With this switch, the compiler does not generate
! implicit @cite{Elaborate} or @cite{Elaborate_All} pragmas. The behavior then is
! exactly as specified in the @cite{Ada Reference Manual}.
! The binder will generate
! an executable program that may or may not raise @cite{Program_Error}, and then
! it is the programmer's job to ensure that it does not raise an exception. Note
! that it is important to compile all units with the switch, it cannot be used
! selectively.
  
- @item 
- @emph{Suppress checks}
  
! The drawback of dynamic checks is that they generate a
! significant overhead at run time, both in space and time. If you
! are absolutely sure that your program cannot raise any elaboration
! exceptions, and you still want to use the dynamic elaboration model,
! then you can use the configuration pragma
! @cite{Suppress (Elaboration_Check)} to suppress all such checks. For
! example this pragma could be placed in the @code{gnat.adc} file.
  
  @item 
! @emph{Suppress checks selectively}
! 
! When you know that certain calls or instantiations in elaboration code cannot
! possibly lead to an elaboration error, and the binder nevertheless complains
! about implicit @cite{Elaborate} and @cite{Elaborate_All} pragmas that lead to
! elaboration circularities, it is possible to remove those warnings locally and
! obtain a program that will bind. Clearly this can be unsafe, and it is the
! responsibility of the programmer to make sure that the resulting program has no
! elaboration anomalies. The pragma @cite{Suppress (Elaboration_Check)} can be
! used with different granularity to suppress warnings and break elaboration
! circularities:
! 
  
! @itemize *
  
  @item 
! Place the pragma that names the called subprogram in the declarative part
! that contains the call.
  
! @item 
! Place the pragma in the declarative part, without naming an entity. This
! disables warnings on all calls in the corresponding  declarative region.
  
  @item 
! Place the pragma in the package spec that declares the called subprogram,
! and name the subprogram. This disables warnings on all elaboration calls to
! that subprogram.
  
! @item 
! Place the pragma in the package spec that declares the called subprogram,
! without naming any entity. This disables warnings on all elaboration calls to
! all subprograms declared in this spec.
  
! @item 
! Use Pragma Elaborate.
  
! As previously described in section @ref{23f,,Treatment of Pragma Elaborate},
! GNAT in static mode assumes that a @cite{pragma} Elaborate indicates correctly
! that no elaboration checks are required on calls to the designated unit.
! There may be cases in which the caller knows that no transitive calls
! can occur, so that a @cite{pragma Elaborate} will be sufficient in a
! case where @cite{pragma Elaborate_All} would cause a circularity.
  @end itemize
  
! These five cases are listed in order of decreasing safety, and therefore
! require increasing programmer care in their application. Consider the
! following program:
! 
! @example
! package Pack1 is
!   function F1 return Integer;
!   X1 : Integer;
! end Pack1;
  
- package Pack2 is
-   function F2 return Integer;
-   function Pure (x : integer) return integer;
-   --  pragma Suppress (Elaboration_Check, On => Pure);  -- (3)
-   --  pragma Suppress (Elaboration_Check);              -- (4)
- end Pack2;
  
! with Pack2;
! package body Pack1 is
!   function F1 return Integer is
!   begin
!     return 100;
!   end F1;
!   Val : integer := Pack2.Pure (11);    --  Elab. call (1)
! begin
!   declare
!     --  pragma Suppress(Elaboration_Check, Pack2.F2);   -- (1)
!     --  pragma Suppress(Elaboration_Check);             -- (2)
!   begin
!     X1 := Pack2.F2 + 1;                --  Elab. call (2)
!   end;
! end Pack1;
  
! with Pack1;
! package body Pack2 is
!   function F2 return Integer is
!   begin
!      return Pack1.F1;
!   end F2;
!   function Pure (x : integer) return integer is
!   begin
!      return x ** 3 - 3 * x;
!   end;
! end Pack2;
  
! with Pack1, Ada.Text_IO;
! procedure Proc3 is
! begin
!   Ada.Text_IO.Put_Line(Pack1.X1'Img); -- 101
! end Proc3;
! @end example
  
! In the absence of any pragmas, an attempt to bind this program produces
! the following diagnostics:
  
! @example
! error: elaboration circularity detected
! info:    "pack1 (body)" must be elaborated before "pack1 (body)"
! info:       reason: Elaborate_All probably needed in unit "pack1 (body)"
! info:       recompile "pack1 (body)" with -gnatel for full details
! info:          "pack1 (body)"
! info:             must be elaborated along with its spec:
! info:          "pack1 (spec)"
! info:             which is withed by:
! info:          "pack2 (body)"
! info:             which must be elaborated along with its spec:
! info:          "pack2 (spec)"
! info:             which is withed by:
! info:          "pack1 (body)"
! @end example
  
- The sources of the circularity are the two calls to @cite{Pack2.Pure} and
- @cite{Pack2.F2} in the body of @cite{Pack1}. We can see that the call to
- F2 is safe, even though F2 calls F1, because the call appears after the
- elaboration of the body of F1. Therefore the pragma (1) is safe, and will
- remove the warning on the call. It is also possible to use pragma (2)
- because there are no other potentially unsafe calls in the block.
  
! The call to @cite{Pure} is safe because this function does not depend on the
! state of @cite{Pack2}. Therefore any call to this function is safe, and it
! is correct to place pragma (3) in the corresponding package spec.
  
! Finally, we could place pragma (4) in the spec of @cite{Pack2} to disable
! warnings on all calls to functions declared therein. Note that this is not
! necessarily safe, and requires more detailed examination of the subprogram
! bodies involved. In particular, a call to @cite{F2} requires that @cite{F1}
! be already elaborated.
! @end itemize
  
! It is hard to generalize on which of these four approaches should be
! taken. Obviously if it is possible to fix the program so that the default
! treatment works, this is preferable, but this may not always be practical.
! It is certainly simple enough to use @emph{-gnatE}
! but the danger in this case is that, even if the GNAT binder
! finds a correct elaboration order, it may not always do so,
! and certainly a binder from another Ada compiler might not. A
! combination of testing and analysis (for which the
! information messages generated with the @emph{-gnatel}
! switch can be useful) must be used to ensure that the program is free
! of errors. One switch that is useful in this testing is the
! @emph{-p (pessimistic elaboration order)} switch for @cite{gnatbind}.
! Normally the binder tries to find an order that has the best chance
! of avoiding elaboration problems. However, if this switch is used, the binder
! plays a devil's advocate role, and tries to choose the order that
! has the best chance of failing. If your program works even with this
! switch, then it has a better chance of being error free, but this is still
! not a guarantee.
  
! For an example of this approach in action, consider the C-tests (executable
! tests) from the ACATS suite. If these are compiled and run with the default
! treatment, then all but one of them succeed without generating any error
! diagnostics from the binder. However, there is one test that fails, and
! this is not surprising, because the whole point of this test is to ensure
! that the compiler can handle cases where it is impossible to determine
! a correct order statically, and it checks that an exception is indeed
! raised at run time.
  
! This one test must be compiled and run using the @emph{-gnatE}
! switch, and then it passes. Alternatively, the entire suite can
! be run using this switch. It is never wrong to run with the dynamic
! elaboration switch if your code is correct, and we assume that the
! C-tests are indeed correct (it is less efficient, but efficiency is
! not a factor in running the ACATS tests.)
  
- @node Elaboration for Indirect Calls,Summary of Procedures for Elaboration Control,What to Do If the Default Elaboration Behavior Fails,Elaboration Order Handling in GNAT
- @anchor{gnat_ugn/elaboration_order_handling_in_gnat id12}@anchor{246}@anchor{gnat_ugn/elaboration_order_handling_in_gnat elaboration-for-indirect-calls}@anchor{247}
- @section Elaboration for Indirect Calls
  
  
! @geindex Dispatching calls
  
! @geindex Indirect calls
  
! In rare cases, the static elaboration model fails to prevent
! dispatching calls to not-yet-elaborated subprograms. In such cases, we
! fall back to run-time checks; premature calls to any primitive
! operation of a tagged type before the body of the operation has been
! elaborated will raise @cite{Program_Error}.
  
! Access-to-subprogram types, however, are handled conservatively in many
! cases. This was not true in earlier versions of the compiler; you can use
! the @emph{-gnatd.U} debug switch to revert to the old behavior if the new
! conservative behavior causes elaboration cycles. Here, 'conservative' means
! that if you do @cite{P'Access} during elaboration, the compiler will normally
! assume that you might call @cite{P} indirectly during elaboration, so it adds an
! implicit @cite{pragma Elaborate_All} on the library unit containing @cite{P}. The
! @emph{-gnatd.U} switch is safe if you know there are no such calls. If the
! program worked before, it will continue to work with @emph{-gnatd.U}. But beware
! that code modifications such as adding an indirect call can cause erroneous
! behavior in the presence of @emph{-gnatd.U}.
  
! These implicit Elaborate_All pragmas are not added in all cases, because
! they cause elaboration cycles in certain common code patterns. If you want
! even more conservative handling of P'Access, you can use the @emph{-gnatd.o}
! switch.
  
! See @cite{debug.adb} for documentation on the @emph{-gnatd...} debug switches.
  
! @node Summary of Procedures for Elaboration Control,Other Elaboration Order Considerations,Elaboration for Indirect Calls,Elaboration Order Handling in GNAT
! @anchor{gnat_ugn/elaboration_order_handling_in_gnat id13}@anchor{248}@anchor{gnat_ugn/elaboration_order_handling_in_gnat summary-of-procedures-for-elaboration-control}@anchor{249}
! @section Summary of Procedures for Elaboration Control
  
  
! @geindex Elaboration control
  
! First, compile your program with the default options, using none of
! the special elaboration-control switches. If the binder successfully
! binds your program, then you can be confident that, apart from issues
! raised by the use of access-to-subprogram types and dynamic dispatching,
! the program is free of elaboration errors. If it is important that the
! program be portable to other compilers than GNAT, then use the
! @emph{-gnatel}
! switch to generate messages about missing @cite{Elaborate} or
! @cite{Elaborate_All} pragmas, and supply the missing pragmas.
  
! If the program fails to bind using the default static elaboration
! handling, then you can fix the program to eliminate the binder
! message, or recompile the entire program with the
! @emph{-gnatE} switch to generate dynamic elaboration checks,
! and, if you are sure there really are no elaboration problems,
! use a global pragma @cite{Suppress (Elaboration_Check)}.
  
! @node Other Elaboration Order Considerations,Determining the Chosen Elaboration Order,Summary of Procedures for Elaboration Control,Elaboration Order Handling in GNAT
! @anchor{gnat_ugn/elaboration_order_handling_in_gnat id14}@anchor{24a}@anchor{gnat_ugn/elaboration_order_handling_in_gnat other-elaboration-order-considerations}@anchor{24b}
! @section Other Elaboration Order Considerations
  
  
! This section has been entirely concerned with the issue of finding a valid
! elaboration order, as defined by the Ada Reference Manual. In a case
! where several elaboration orders are valid, the task is to find one
! of the possible valid elaboration orders (and the static model in GNAT
! will ensure that this is achieved).
  
! The purpose of the elaboration rules in the Ada Reference Manual is to
! make sure that no entity is accessed before it has been elaborated. For
! a subprogram, this means that the spec and body must have been elaborated
! before the subprogram is called. For an object, this means that the object
! must have been elaborated before its value is read or written. A violation
! of either of these two requirements is an access before elaboration order,
! and this section has been all about avoiding such errors.
  
! In the case where more than one order of elaboration is possible, in the
! sense that access before elaboration errors are avoided, then any one of
! the orders is 'correct' in the sense that it meets the requirements of
! the Ada Reference Manual, and no such error occurs.
  
! However, it may be the case for a given program, that there are
! constraints on the order of elaboration that come not from consideration
! of avoiding elaboration errors, but rather from extra-lingual logic
! requirements. Consider this example:
  
! @example
! with Init_Constants;
! package Constants is
!    X : Integer := 0;
!    Y : Integer := 0;
! end Constants;
  
! package Init_Constants is
!    procedure P; --* require a body*
! end Init_Constants;
  
- with Constants;
- package body Init_Constants is
-    procedure P is begin null; end;
- begin
-    Constants.X := 3;
-    Constants.Y := 4;
- end Init_Constants;
  
! with Constants;
! package Calc is
!    Z : Integer := Constants.X + Constants.Y;
! end Calc;
  
! with Calc;
! with Text_IO; use Text_IO;
! procedure Main is
! begin
!    Put_Line (Calc.Z'Img);
! end Main;
! @end example
  
! In this example, there is more than one valid order of elaboration. For
! example both the following are correct orders:
  
- @example
- Init_Constants spec
- Constants spec
- Calc spec
- Init_Constants body
- Main body
- @end example
  
! and
  
! @example
! Init_Constants spec
! Constants spec
! Init_Constants body
! Calc spec
! Main body
! @end example
  
! There is no language rule to prefer one or the other, both are correct
! from an order of elaboration point of view. But the programmatic effects
! of the two orders are very different. In the first, the elaboration routine
! of @cite{Calc} initializes @cite{Z} to zero, and then the main program
! runs with this value of zero. But in the second order, the elaboration
! routine of @cite{Calc} runs after the body of Init_Constants has set
! @cite{X} and @cite{Y} and thus @cite{Z} is set to 7 before @cite{Main} runs.
  
! One could perhaps by applying pretty clever non-artificial intelligence
! to the situation guess that it is more likely that the second order of
! elaboration is the one desired, but there is no formal linguistic reason
! to prefer one over the other. In fact in this particular case, GNAT will
! prefer the second order, because of the rule that bodies are elaborated
! as soon as possible, but it's just luck that this is what was wanted
! (if indeed the second order was preferred).
  
! If the program cares about the order of elaboration routines in a case like
! this, it is important to specify the order required. In this particular
! case, that could have been achieved by adding to the spec of Calc:
  
- @example
- pragma Elaborate_All (Constants);
- @end example
  
! which requires that the body (if any) and spec of @cite{Constants},
! as well as the body and spec of any unit @emph{with}ed by
! @cite{Constants} be elaborated before @cite{Calc} is elaborated.
  
! Clearly no automatic method can always guess which alternative you require,
! and if you are working with legacy code that had constraints of this kind
! which were not properly specified by adding @cite{Elaborate} or
! @cite{Elaborate_All} pragmas, then indeed it is possible that two different
! compilers can choose different orders.
  
! However, GNAT does attempt to diagnose the common situation where there
! are uninitialized variables in the visible part of a package spec, and the
! corresponding package body has an elaboration block that directly or
! indirectly initializes one or more of these variables. This is the situation
! in which a pragma Elaborate_Body is usually desirable, and GNAT will generate
! a warning that suggests this addition if it detects this situation.
  
! The @cite{gnatbind} @emph{-p} switch may be useful in smoking
! out problems. This switch causes bodies to be elaborated as late as possible
! instead of as early as possible. In the example above, it would have forced
! the choice of the first elaboration order. If you get different results
! when using this switch, and particularly if one set of results is right,
! and one is wrong as far as you are concerned, it shows that you have some
! missing @cite{Elaborate} pragmas. For the example above, we have the
! following output:
  
! @example
! $ gnatmake -f -q main
! $ main
!  7
! $ gnatmake -f -q main -bargs -p
! $ main
!  0
! @end example
  
! It is of course quite unlikely that both these results are correct, so
! it is up to you in a case like this to investigate the source of the
! difference, by looking at the two elaboration orders that are chosen,
! and figuring out which is correct, and then adding the necessary
! @cite{Elaborate} or @cite{Elaborate_All} pragmas to ensure the desired order.
  
! @node Determining the Chosen Elaboration Order,,Other Elaboration Order Considerations,Elaboration Order Handling in GNAT
! @anchor{gnat_ugn/elaboration_order_handling_in_gnat determining-the-chosen-elaboration-order}@anchor{24c}@anchor{gnat_ugn/elaboration_order_handling_in_gnat id15}@anchor{24d}
! @section Determining the Chosen Elaboration Order
  
  
! To see the elaboration order that the binder chooses, you can look at
! the last part of the file:@cite{b~xxx.adb} binder output file. Here is an example:
  
  @example
  System.Soft_Links'Elab_Body;
--- 27516,28982 ----
  @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
! scenario can execute a server target before the target body has been
! elaborated because the spec and body are effectively "glued" together.
  
! @example
! package Server is
!    pragma Elaborate_Body;
! 
!    function Func return Integer;
! end Server;
! @end example
  
  @example
! package body Server is
!    function Func return Integer is
!    begin
!       ...
!    end Func;
! end Server;
  @end example
  
! @example
! with Server;
! package Client is
!    Val : constant Integer := Server.Func;
! end Client;
! @end example
  
! In the example above, pragma @code{Elaborate_Body} guarantees the following
! elaboration order:
! 
! @example
! spec of Server
! body of Server
! spec of Client
! @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
! elaboration order:
! 
! @example
! spec of Server
! spec of Client
! body of Server
! @end example
! 
! where @code{Client} invokes @code{Server.Func}, but the body of @code{Server.Func} has
! not been elaborated yet.
  @end itemize
  
! The pragmas outlined above allow a server unit to guarantee safe elaboration
! use by client units. Thus it is a good rule to mark units as @code{Pure} or
! @code{Preelaborate}, and if this is not possible, mark them as @code{Elaborate_Body}.
  
! There are however situations where @code{Pure}, @code{Preelaborate}, and
! @code{Elaborate_Body} are not applicable. Ada provides another set of pragmas for
! use by client units to help ensure the elaboration safety of server units they
! depend on.
! 
! @geindex pragma Elaborate (Unit)
  
  
  @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.
! 
! @example
! package Server is
!    function Func return Integer;
! end Server;
! @end example
! 
! @example
! package body Server is
!    function Func return Integer is
!    begin
!       ...
!    end Func;
! end Server;
! @end example
! 
! @example
! with Server;
! pragma Elaborate (Server);
! package Client is
!    Val : constant Integer := Server.Func;
! end Client;
! @end example
! 
! In the example above, pragma @code{Elaborate} guarantees the following
! elaboration order:
! 
! @example
! spec of Server
! body of Server
! spec of Client
! @end example
! 
! Removing pragma @code{Elaborate} could result in the following incorrect
! elaboration order:
! 
! @example
! spec of Server
! spec of Client
! body of Server
! @end example
! 
! where @code{Client} invokes @code{Server.Func}, but the body of @code{Server.Func}
! has not been elaborated yet.
  @end itemize
  
! @geindex pragma Elaborate_All (Unit)
  
  
  @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
! package Math is
!    function Factorial (Val : Natural) return Natural;
! end Math;
  @end example
  
! @example
! package body Math is
!    function Factorial (Val : Natural) return Natural is
!    begin
!       ...;
!    end Factorial;
! end Math;
! @end example
  
! @example
! package Computer is
!    type Operation_Kind is (None, Op_Factorial);
! 
!    function Compute
!      (Val : Natural;
!       Op  : Operation_Kind) return Natural;
! end Computer;
! @end example
! 
! @example
! with Math;
! package body Computer is
!    function Compute
!      (Val : Natural;
!       Op  : Operation_Kind) return Natural
!    is
!       if Op = Op_Factorial then
!          return Math.Factorial (Val);
!       end if;
! 
!       return 0;
!    end Compute;
! end Computer;
! @end example
! 
! @example
! with Computer;
! pragma Elaborate_All (Computer);
! package Client is
!    Val : constant Natural :=
!            Computer.Compute (123, Computer.Op_Factorial);
! end Client;
! @end example
! 
! In the example above, pragma @code{Elaborate_All} can result in the following
! elaboration order:
! 
! @example
! spec of Math
! body of Math
! spec of Computer
! body of Computer
! spec of Client
! @end example
! 
! Note that there are several allowable suborders for the specs and bodies of
! @code{Math} and @code{Computer}, but the point is that these specs and bodies will
! be elaborated prior to @code{Client}.
! 
! Removing pragma @code{Elaborate_All} could result in the following incorrect
! elaboration order
! 
! @example
! spec of Math
! spec of Computer
! body of Computer
! spec of Client
! body of Math
! @end example
! 
! where @code{Client} invokes @code{Computer.Compute}, which in turn invokes
! @code{Math.Factorial}, but the body of @code{Math.Factorial} has not been
! elaborated yet.
  @end itemize
  
! 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:
  
  
! @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
! program may or may not raise @code{Program_Error} when it is run. This is the
! worst possible state because the program may fail on another compiler, or
! 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
! rules, or may be the result of good program architecture.
! @end itemize
! 
! Note that one additional advantage of using @code{Elaborate} and @code{Elaborate_All}
! is that the program continues to stay in the last state (one or more correct
! orders exist) even if maintenance changes the bodies of targets.
! 
! @node Controlling the Elaboration Order in GNAT,Common Elaboration-model Traits,Controlling the Elaboration Order in Ada,Elaboration Order Handling in GNAT
! @anchor{gnat_ugn/elaboration_order_handling_in_gnat id6}@anchor{23a}@anchor{gnat_ugn/elaboration_order_handling_in_gnat controlling-the-elaboration-order-in-gnat}@anchor{23b}
! @section Controlling the Elaboration Order in GNAT
! 
! 
! In addition to Ada semantics and rules synthesized from them, GNAT offers
! three elaboration models to aid the programmer with specifying the correct
! elaboration order and to diagnose elaboration problems.
! 
! @geindex Dynamic elaboration model
  
  
  @itemize *
  
  @item 
! @emph{Dynamic elaboration model}
  
! This is the most permissive of the three elaboration models. When the
! dynamic model is in effect, GNAT assumes that all code within all units in
! a partition is elaboration code. GNAT performs very few diagnostics and
! generates run-time checks to verify the elaboration order of a program. This
! behavior is identical to that specified by the Ada Reference Manual. The
! dynamic model is enabled with compiler switch @code{-gnatE}.
! @end itemize
! 
! @geindex Static elaboration model
! 
! 
! @itemize *
  
  @item 
! @emph{Static elaboration model}
  
! This is the middle ground of the three models. When the static model is in
! effect, GNAT performs extensive diagnostics on a unit-by-unit basis for all
! scenarios that elaborate or execute internal targets. GNAT also generates
! run-time checks for all external targets and for all scenarios that may
! exhibit ABE problems. Finally, GNAT installs implicit @code{Elaborate} and
! @code{Elaborate_All} pragmas for server units based on the dependencies of
! client units. The static model is the default model in GNAT.
! @end itemize
! 
! @geindex SPARK elaboration model
! 
! 
! @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.
! The SPARK model is in effect only when a scenario and a target reside in a
! region subject to SPARK_Mode On, otherwise the dynamic or static model is in
! effect.
! @end itemize
! 
! @geindex Legacy elaboration model
! 
! 
! @itemize *
  
  @item 
! @emph{Legacy elaboration model}
  
! In addition to the three elaboration models outlined above, GNAT provides the
! elaboration model of pre-18.x versions referred to as @cite{legacy elaboration model}. The legacy elaboration model is enabled with compiler switch
! @code{-gnatH}.
  @end itemize
  
! @geindex Relaxed elaboration mode
  
! The dynamic, legacy, and static models can be relaxed using compiler switch
! @code{-gnatJ}, making them more permissive. Note that in this mode, GNAT
! may not diagnose certain elaboration issues or install run-time checks.
  
! @node Common Elaboration-model Traits,Dynamic Elaboration Model in GNAT,Controlling the Elaboration Order in GNAT,Elaboration Order Handling in GNAT
! @anchor{gnat_ugn/elaboration_order_handling_in_gnat common-elaboration-model-traits}@anchor{23c}@anchor{gnat_ugn/elaboration_order_handling_in_gnat id7}@anchor{23d}
! @section Common Elaboration-model Traits
  
  
! All three GNAT models are able to detect elaboration problems related to
! dispatching calls and a particular kind of ABE referred to as @emph{guaranteed ABE}.
! 
! 
! @itemize *
! 
! @item 
! @emph{Dispatching calls}
! 
! GNAT installs run-time checks for each primitive subprogram of each tagged
! type defined in a partition on the assumption that a dispatching call
! invoked at elaboration time will execute one of these primitives. As a
! result, a dispatching call that executes a primitive whose body has not
! been elaborated yet will raise exception @code{Program_Error} at run time. The
! checks can be suppressed using pragma @code{Suppress (Elaboration_Check)}.
! 
! @item 
! @emph{Guaranteed ABE}
! 
! A guaranteed ABE arises when the body of a target is not elaborated early
! enough, and causes all scenarios that directly execute the target to fail.
  
  @example
! package body Guaranteed_ABE is
!    function ABE return Integer;
  
!    Val : constant Integer := ABE;
  
!    function ABE return Integer is
!    begin
!       ...
!    end ABE;
! end Guaranteed_ABE;
  @end example
  
! In the example above, the elaboration of @code{Guaranteed_ABE}'s body elaborates
! the declaration of @code{Val}. This invokes function @code{ABE}, however the body
! of @code{ABE} has not been elaborated yet. GNAT emits similar diagnostics in all
! three models:
  
  @example
! 1. package body Guaranteed_ABE is
! 2.    function ABE return Integer;
! 3.
! 4.    Val : constant Integer := ABE;
!                                 |
!    >>> warning: cannot call "ABE" before body seen
!    >>> warning: Program_Error will be raised at run time
  
! 5.
! 6.    function ABE return Integer is
! 7.    begin
! 8.       ...
! 9.    end ABE;
! 10. end Guaranteed_ABE;
  @end example
+ @end itemize
  
! Note that GNAT emits warnings rather than hard errors whenever it encounters an
! elaboration problem. This is because the elaboration model in effect may be too
! conservative, or a particular scenario may not be elaborated or executed due to
! data and control flow. The warnings can be suppressed selectively with @code{pragma
! Warnigns (Off)} or globally with compiler switch @code{-gnatwL}.
! 
! @node Dynamic Elaboration Model in GNAT,Static Elaboration Model in GNAT,Common Elaboration-model Traits,Elaboration Order Handling in GNAT
! @anchor{gnat_ugn/elaboration_order_handling_in_gnat dynamic-elaboration-model-in-gnat}@anchor{23e}@anchor{gnat_ugn/elaboration_order_handling_in_gnat id8}@anchor{23f}
! @section Dynamic Elaboration Model in GNAT
  
! 
! The dynamic model assumes that all code within all units in a partition is
! elaboration code. As a result, run-time checks are installed for each scenario
! regardless of whether the target is internal or external. The checks can be
! suppressed using pragma @code{Suppress (Elaboration_Check)}. This behavior is
! identical to that specified by the Ada Reference Manual. The following example
! showcases run-time checks installed by GNAT to verify the elaboration state of
! package @code{Dynamic_Model}.
  
  @example
! with Server;
! package body Dynamic_Model is
!    procedure API is
!    begin
!       ...
!    end API;
! 
!    <check that the body of Server.Gen is elaborated>
!    package Inst is new Server.Gen;
! 
!    T : Server.Task_Type;
  
  begin
!    <check that the body of Server.Task_Type is elaborated>
  
!    <check that the body of Server.Proc is elaborated>
!    Server.Proc;
! end Dynamic_Model;
  @end example
  
! The checks verify that the body of a target has been successfully elaborated
! before a scenario activates, calls, or instantiates a target.
! 
! Note that no scenario within package @code{Dynamic_Model} calls procedure @code{API}.
! In fact, procedure @code{API} may not be invoked by elaboration code within the
! partition, however the dynamic model assumes that this can happen.
! 
! The dynamic model emits very few diagnostics, but can make suggestions on
! missing @code{Elaborate} and @code{Elaborate_All} pragmas for library-level
! scenarios. This information is available when compiler switch @code{-gnatel}
! is in effect.
  
  @example
! 1. with Server;
! 2. package body Dynamic_Model is
! 3.    Val : constant Integer := Server.Func;
!                                       |
!    >>> info: call to "Func" during elaboration
!    >>> info: missing pragma "Elaborate_All" for unit "Server"
  
! 4. end Dynamic_Model;
! @end example
  
! @node Static Elaboration Model in GNAT,SPARK Elaboration Model in GNAT,Dynamic Elaboration Model in GNAT,Elaboration Order Handling in GNAT
! @anchor{gnat_ugn/elaboration_order_handling_in_gnat static-elaboration-model-in-gnat}@anchor{240}@anchor{gnat_ugn/elaboration_order_handling_in_gnat id9}@anchor{241}
! @section Static Elaboration Model in GNAT
  
! 
! In contrast to the dynamic model, the static model is more precise in its
! analysis of elaboration code. The model makes a clear distinction between
! internal and external targets, and resorts to different diagnostics and
! run-time checks based on the nature of the target.
! 
! 
! @itemize *
! 
! @item 
! @emph{Internal targets}
! 
! The static model performs extensive diagnostics on scenarios which elaborate
! or execute internal targets. The warnings resulting from these diagnostics
! are enabled by default, but can be suppressed selectively with @code{pragma
! Warnings (Off)} or globally with compiler switch @code{-gnatwL}.
! 
! @example
!  1. package body Static_Model is
!  2.    generic
!  3.       with function Func return Integer;
!  4.    package Gen is
!  5.       Val : constant Integer := Func;
!  6.    end Gen;
!  7.
!  8.    function ABE return Integer;
!  9.
! 10.    function Cause_ABE return Boolean is
! 11.       package Inst is new Gen (ABE);
!           |
!     >>> warning: in instantiation at line 5
!     >>> warning: cannot call "ABE" before body seen
!     >>> warning: Program_Error may be raised at run time
!     >>> warning:   body of unit "Static_Model" elaborated
!     >>> warning:   function "Cause_ABE" called at line 16
!     >>> warning:   function "ABE" called at line 5, instance at line 11
! 
! 12.    begin
! 13.       ...
! 14.    end Cause_ABE;
! 15.
! 16.    Val : constant Boolean := Cause_ABE;
! 17.
! 18.    function ABE return Integer is
! 19.    begin
! 20.       ...
! 21.    end ABE;
! 22. end Static_Model;
  @end example
  
! The example above illustrates an ABE problem within package @code{Static_Model},
! which is hidden by several layers of indirection. The elaboration of package
! body @code{Static_Model} elaborates the declaration of @code{Val}. This invokes
! function @code{Cause_ABE}, which instantiates generic unit @code{Gen} as @code{Inst}.
! The elaboration of @code{Inst} invokes function @code{ABE}, however the body of
! @code{ABE} has not been elaborated yet.
! 
! @item 
! @emph{External targets}
! 
! The static model installs run-time checks to verify the elaboration status
! of server targets only when the scenario that elaborates or executes that
! target is part of the elaboration code of the client unit. The checks can be
! suppressed using pragma @code{Suppress (Elaboration_Check)}.
  
  @example
! with Server;
! package body Static_Model is
!    generic
!       with function Func return Integer;
!    package Gen is
!       Val : constant Integer := Func;
!    end Gen;
  
!    function Call_Func return Boolean is
!       <check that the body of Server.Func is elaborated>
!       package Inst is new Gen (Server.Func);
!    begin
!       ...
!    end Call_Func;
! 
!    Val : constant Boolean := Call_Func;
! end Static_Model;
! @end example
! 
! In the example above, the elaboration of package body @code{Static_Model}
! elaborates the declaration of @code{Val}. This invokes function @code{Call_Func},
! which instantiates generic unit @code{Gen} as @code{Inst}. The elaboration of
! @code{Inst} invokes function @code{Server.Func}. Since @code{Server.Func} is an
! external target, GNAT installs a run-time check to verify that its body has
! been elaborated.
! 
! In addition to checks, the static model installs implicit @code{Elaborate} and
! @code{Elaborate_All} pragmas to guarantee safe elaboration use of server units.
! This information is available when compiler switch @code{-gnatel} is in
! effect.
! 
! @example
!  1. with Server;
!  2. package body Static_Model is
!  3.    generic
!  4.       with function Func return Integer;
!  5.    package Gen is
!  6.       Val : constant Integer := Func;
!  7.    end Gen;
   8.
!  9.    function Call_Func return Boolean is
! 10.       package Inst is new Gen (Server.Func);
!           |
!     >>> info: instantiation of "Gen" during elaboration
!     >>> info: in instantiation at line 6
!     >>> info: call to "Func" during elaboration
!     >>> info: in instantiation at line 6
!     >>> info: implicit pragma "Elaborate_All" generated for unit "Server"
!     >>> info:   body of unit "Static_Model" elaborated
!     >>> info:   function "Call_Func" called at line 15
!     >>> info:   function "Func" called at line 6, instance at line 10
! 
! 11.    begin
! 12.       ...
! 13.    end Call_Func;
! 14.
! 15.    Val : constant Boolean := Call_Func;
!                                  |
!     >>> info: call to "Call_Func" during elaboration
! 
! 16. end Static_Model;
  @end example
  
! In the example above, the elaboration of package body @code{Static_Model}
! elaborates the declaration of @code{Val}. This invokes function @code{Call_Func},
! which instantiates generic unit @code{Gen} as @code{Inst}. The elaboration of
! @code{Inst} invokes function @code{Server.Func}. Since @code{Server.Func} is an
! external target, GNAT installs an implicit @code{Elaborate_All} pragma for unit
! @code{Server}. The pragma guarantees that both the spec and body of @code{Server},
! along with any additional dependencies that @code{Server} may require, are
! elaborated prior to the body of @code{Static_Model}.
! @end itemize
! 
! @node SPARK Elaboration Model in GNAT,Legacy Elaboration Model in GNAT,Static Elaboration Model in GNAT,Elaboration Order Handling in GNAT
! @anchor{gnat_ugn/elaboration_order_handling_in_gnat id10}@anchor{242}@anchor{gnat_ugn/elaboration_order_handling_in_gnat spark-elaboration-model-in-gnat}@anchor{243}
! @section SPARK Elaboration Model in GNAT
! 
! 
! The SPARK model is identical to the static model in its handling of internal
! targets. The SPARK model, however, requires explicit @code{Elaborate} or
! @code{Elaborate_All} pragmas to be present in the program when a target is
! external, and compiler switch @code{-gnatd.v} is in effect.
  
  @example
! 1. with Server;
! 2. package body SPARK_Model with SPARK_Mode is
! 3.    Val : constant Integer := Server.Func;
!                                       |
!    >>> call to "Func" during elaboration in SPARK
!    >>> unit "SPARK_Model" requires pragma "Elaborate_All" for "Server"
!    >>>   body of unit "SPARK_Model" elaborated
!    >>>   function "Func" called at line 3
! 
! 4. end SPARK_Model;
  @end example
  
! @node Legacy Elaboration Model in GNAT,Mixing Elaboration Models,SPARK Elaboration Model in GNAT,Elaboration Order Handling in GNAT
! @anchor{gnat_ugn/elaboration_order_handling_in_gnat legacy-elaboration-model-in-gnat}@anchor{244}
! @section Legacy Elaboration Model in GNAT
  
! 
! The legacy elaboration model is provided for compatibility with code bases
! developed with pre-18.x versions of GNAT. It is similar in functionality to
! the dynamic and static models of post-18.x version of GNAT, but may differ
! in terms of diagnostics and run-time checks. The legacy elaboration model is
! enabled with compiler switch @code{-gnatH}.
! 
! @node Mixing Elaboration Models,Elaboration Circularities,Legacy Elaboration Model in GNAT,Elaboration Order Handling in GNAT
! @anchor{gnat_ugn/elaboration_order_handling_in_gnat mixing-elaboration-models}@anchor{245}@anchor{gnat_ugn/elaboration_order_handling_in_gnat id11}@anchor{246}
! @section Mixing Elaboration Models
! 
! 
! It is possible to mix units compiled with a different elaboration model,
! however the following rules must be observed:
  
  
  @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:
! 
! 
! @itemize -
  
  @item 
! The server unit is compiled with the dynamic model.
  
  @item 
! The server unit is a GNAT implementation unit from the Ada, GNAT,
! Interfaces, or System hierarchies.
! 
! @item 
! The server unit has pragma @code{Pure} or @code{Preelaborate}.
! 
! @item 
! The client unit has an explicit @code{Elaborate_All} pragma for the server
! unit.
! @end itemize
  @end itemize
  
! These rules ensure that elaboration checks are not omitted. If the rules are
! violated, the binder emits a warning:
  
! @example
! warning: "x.ads" has dynamic elaboration checks and with's
! warning:   "y.ads" which has static elaboration checks
! @end example
  
+ The warnings can be suppressed by binder switch @code{-ws}.
  
! @node Elaboration Circularities,Resolving Elaboration Circularities,Mixing Elaboration Models,Elaboration Order Handling in GNAT
! @anchor{gnat_ugn/elaboration_order_handling_in_gnat id12}@anchor{247}@anchor{gnat_ugn/elaboration_order_handling_in_gnat elaboration-circularities}@anchor{248}
! @section Elaboration Circularities
  
  
! If the binder cannot find an acceptable elaboration order, it outputs detailed
! diagnostics describing an @strong{elaboration circularity}.
  
! @example
! package Server is
!    function Func return Integer;
! end Server;
! @end example
  
! @example
! with Client;
! package body Server is
!    function Func return Integer is
!    begin
!       ...
!    end Func;
! end Server;
  @end example
  
! @example
! with Server;
! package Client is
!    Val : constant Integer := Server.Func;
! end Client;
! @end example
  
! @example
! with Client;
! procedure Main is begin null; end Main;
! @end example
  
  @example
! error: elaboration circularity detected
! info:    "server (body)" must be elaborated before "client (spec)"
! info:       reason: implicit Elaborate_All in unit "client (spec)"
! info:       recompile "client (spec)" with -gnatel for full details
! info:          "server (body)"
! info:             must be elaborated along with its spec:
! info:          "server (spec)"
! info:             which is withed by:
! info:          "client (spec)"
! info:    "client (spec)" must be elaborated before "server (body)"
! info:       reason: with clause
  @end example
  
! In the example above, @code{Client} must be elaborated prior to @code{Main} by virtue
! of a @emph{with} clause. The elaboration of @code{Client} invokes @code{Server.Func}, and
! static model generates an implicit @code{Elaborate_All} pragma for @code{Server}. The
! pragma implies that both the spec and body of @code{Server}, along with any units
! they @emph{with}, must be elaborated prior to @code{Client}. However, @code{Server}'s body
! @emph{with}s @code{Client}, implying that @code{Client} must be elaborated prior to
! @code{Server}. The end result is that @code{Client} must be elaborated prior to
! @code{Client}, and this leads to a circularity.
  
! @node Resolving Elaboration Circularities,Resolving Task Issues,Elaboration Circularities,Elaboration Order Handling in GNAT
! @anchor{gnat_ugn/elaboration_order_handling_in_gnat id13}@anchor{249}@anchor{gnat_ugn/elaboration_order_handling_in_gnat resolving-elaboration-circularities}@anchor{24a}
! @section Resolving Elaboration Circularities
  
  
! When faced with an elaboration circularity, a programmer has several options
! available.
  
  
! @itemize *
  
! @item 
! @emph{Fix the program}
  
! 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.
  
! @item 
! @emph{Switch to more permissive elaboration model}
  
+ If the compilation was performed using the static model, enable the dynamic
+ model with compiler switch @code{-gnatE}. GNAT will no longer generate
+ implicit @code{Elaborate} and @code{Elaborate_All} pragmas, resulting in a behavior
+ identical to that specified by the Ada Reference Manual. The binder will
+ generate an executable program that may or may not raise @code{Program_Error},
+ and it is the programmer's responsibility to ensure that it does not raise
+ @code{Program_Error}.
  
! If the compilation was performed using a post-18.x version of GNAT, consider
! using the legacy elaboration model, in the following order:
  
  
! @itemize -
  
! @item 
! Use the legacy static elaboration model, with compiler switch
! @code{-gnatH}.
  
! @item 
! Use the legacy dynamic elaboration model, with compiler switches
! @code{-gnatH} @code{-gnatE}.
  
! @item 
! Use the relaxed legacy static elaboration model, with compiler switches
! @code{-gnatH} @code{-gnatJ}.
  
! @item 
! Use the relaxed legacy dynamic elaboration model, with compiler switches
! @code{-gnatH} @code{-gnatJ} @code{-gnatE}.
! @end itemize
  
! @item 
! @emph{Suppress all elaboration checks}
  
! The drawback of run-time checks is that they generate overhead at run time,
! both in space and time. If the programmer is absolutely sure that a program
! will not raise an elaboration-related @code{Program_Error}, then using the
! pragma @code{Suppress (Elaboration_Check)} globally (as a configuration pragma)
! will eliminate all run-time checks.
  
! @item 
! @emph{Suppress elaboration checks selectively}
  
! If a scenario cannot possibly lead to an elaboration @code{Program_Error},
! and the binder nevertheless complains about implicit @code{Elaborate} and
! @code{Elaborate_All} pragmas that lead to elaboration circularities, it
! is possible to suppress the generation of implicit @code{Elaborate} and
! @code{Elaborate_All} pragmas, as well as run-time checks. Clearly this can
! be unsafe, and it is the responsibility of the programmer to make sure
! that the resulting program has no elaboration anomalies. Pragma
! @code{Suppress (Elaboration_Check)} can be used with different levels of
! granularity to achieve these effects.
  
  
! @itemize -
  
! @item 
! @emph{Target suppression}
  
! When the pragma is placed in a declarative part, without a second argument
! naming an entity, it will suppress implicit @code{Elaborate} and
! @code{Elaborate_All} pragma generation, as well as run-time checks, on all
! targets within the region.
  
  @example
! package Range_Suppress is
!    pragma Suppress (Elaboration_Check);
! 
!    function Func return Integer;
! 
!    generic
!    procedure Gen;
! 
!    pragma Unsuppress (Elaboration_Check);
! 
!    task type Tsk;
! end Range_Suppress;
  @end example
  
! In the example above, a pair of Suppress/Unsuppress pragmas define a region
! of suppression within package @code{Range_Suppress}. As a result, no implicit
! @code{Elaborate} and @code{Elaborate_All} pragmas, nor any run-time checks, will
! be generated by callers of @code{Func} and instantiators of @code{Gen}. Note that
! task type @code{Tsk} is not within this region.
  
! An alternative to the region-based suppression is to use multiple
! @code{Suppress} pragmas with arguments naming specific entities for which
! elaboration checks should be suppressed:
  
! @example
! package Range_Suppress is
!    function Func return Integer;
!    pragma Suppress (Elaboration_Check, Func);
  
+    generic
+    procedure Gen;
+    pragma Suppress (Elaboration_Check, Gen);
  
!    task type Tsk;
! end Range_Suppress;
! @end example
  
! @item 
! @emph{Scenario suppression}
  
! When the pragma @code{Suppress} is placed in a declarative or statement
! part, without an entity argument, it will suppress implicit @code{Elaborate}
! and @code{Elaborate_All} pragma generation, as well as run-time checks, on
! all scenarios within the region.
  
! @example
! with Server;
! package body Range_Suppress is
!    pragma Suppress (Elaboration_Check);
  
!    function Func return Integer is
!    begin
!       return Server.Func;
!    end Func;
  
!    procedure Gen is
!    begin
!       Server.Proc;
!    end Gen;
  
!    pragma Unsuppress (Elaboration_Check);
  
+    task body Tsk is
+    begin
+       Server.Proc;
+    end Tsk;
+ end Range_Suppress;
+ @end example
  
! In the example above, a pair of Suppress/Unsuppress pragmas define a region
! of suppression within package body @code{Range_Suppress}. As a result, the
! calls to @code{Server.Func} in @code{Func} and @code{Server.Proc} in @code{Gen} will
! not generate any implicit @code{Elaborate} and @code{Elaborate_All} pragmas or
! run-time checks.
! @end itemize
! @end itemize
  
! @node Resolving Task Issues,Elaboration-related Compiler Switches,Resolving Elaboration Circularities,Elaboration Order Handling in GNAT
! @anchor{gnat_ugn/elaboration_order_handling_in_gnat id14}@anchor{24b}@anchor{gnat_ugn/elaboration_order_handling_in_gnat resolving-task-issues}@anchor{24c}
! @section Resolving Task Issues
  
  
! The model of execution in Ada dictates that elaboration must first take place,
! and only then can the main program be started. Tasks which are activated during
! elaboration violate this model and may lead to serious concurrent problems at
! elaboration time.
  
! A task can be activated in two different ways:
  
! 
! @itemize *
! 
! @item 
! The task is created by an allocator in which case it is activated immediately
! after the allocator is evaluated.
! 
! @item 
! The task is declared at the library level or within some nested master in
! which case it is activated before starting execution of the statement
! sequence of the master defining the task.
! @end itemize
! 
! Since the elaboration of a partition is performed by the environment task
! servicing that partition, any tasks activated during elaboration may be in
! a race with the environment task, and lead to unpredictable state and behavior.
! The static model seeks to avoid such interactions by assuming that all code in
! the task body is executed at elaboration time, if the task was activated by
! elaboration code.
  
  @example
  package Decls is
!    task Lib_Task is
!       entry Start;
!    end Lib_Task;
  
!    type My_Int is new Integer;
  
!    function Ident (M : My_Int) return My_Int;
  end Decls;
+ @end example
  
+ @example
  with Utils;
  package body Decls is
!    task body Lib_Task is
!    begin
!       accept Start;
!       Utils.Put_Val (2);
!    end Lib_Task;
  
!    function Ident (M : My_Int) return My_Int is
!    begin
!       return M;
!    end Ident;
  end Decls;
+ @end example
  
+ @example
  with Decls;
  package Utils is
!    procedure Put_Val (Arg : Decls.My_Int);
  end Utils;
+ @end example
  
! @example
! with Ada.Text_IO; use Ada.Text_IO;
  package body Utils is
!    procedure Put_Val (Arg : Decls.My_Int) is
!    begin
!       Put_Line (Arg'Img);
!    end Put_Val;
  end Utils;
+ @end example
  
+ @example
  with Decls;
  procedure Main is
  begin
     Decls.Lib_Task.Start;
! end Main;
  @end example
  
! When the above example is compiled with the static model, an elaboration
! circularity arises:
  
! @example
! error: elaboration circularity detected
! info:    "decls (body)" must be elaborated before "decls (body)"
! info:       reason: implicit Elaborate_All in unit "decls (body)"
! info:       recompile "decls (body)" with -gnatel for full details
! info:          "decls (body)"
! info:             must be elaborated along with its spec:
! info:          "decls (spec)"
! info:             which is withed by:
! info:          "utils (spec)"
! info:             which is withed by:
! info:          "decls (body)"
! @end example
  
! In the above example, @code{Decls} must be elaborated prior to @code{Main} by virtue
! of a with clause. The elaboration of @code{Decls} activates task @code{Lib_Task}. The
! static model conservatibely assumes that all code within the body of
! @code{Lib_Task} is executed, and generates an implicit @code{Elaborate_All} pragma
! for @code{Units} due to the call to @code{Utils.Put_Val}. The pragma implies that
! both the spec and body of @code{Utils}, along with any units they @emph{with},
! must be elaborated prior to @code{Decls}. However, @code{Utils}'s spec @emph{with}s
! @code{Decls}, implying that @code{Decls} must be elaborated before @code{Utils}. The end
! result is that @code{Utils} must be elaborated prior to @code{Utils}, and this
! leads to a circularity.
  
! In reality, the example above will not exhibit an ABE problem at run time.
! When the body of task @code{Lib_Task} is activated, execution will wait for entry
! @code{Start} to be accepted, and the call to @code{Utils.Put_Val} will not take place
! at elaboration time. Task @code{Lib_Task} will resume its execution after the main
! program is executed because @code{Main} performs a rendezvous with
! @code{Lib_Task.Start}, and at that point all units have already been elaborated.
! As a result, the static model may seem overly conservative, partly because it
! does not take control and data flow into account.
  
! When faced with a task elaboration circularity, a programmer has several
! options available:
  
  
  @itemize *
  
  @item 
! @emph{Use the dynamic model}
  
! The dynamic model does not generate implicit @code{Elaborate} and
! @code{Elaborate_All} pragmas. Instead, it will install checks prior to every
! call in the example above, thus verifying the successful elaboration of
! @code{Utils.Put_Val} in case the call to it takes place at elaboration time.
! The dynamic model is enabled with compiler switch @code{-gnatE}.
  
  @item 
! @emph{Isolate the tasks}
  
! Relocating tasks in their own separate package could decouple them from
! dependencies that would otherwise cause an elaboration circularity. The
! example above can be rewritten as follows:
  
  @example
! package Decls1 is                --  new
!    task Lib_Task is
!       entry Start;
!    end Lib_Task;
  end Decls1;
+ @end example
  
+ @example
  with Utils;
! package body Decls1 is           --  new
!    task body Lib_Task is
!    begin
!       accept Start;
!       Utils.Put_Val (2);
!    end Lib_Task;
  end Decls1;
+ @end example
  
! @example
! package Decls2 is                --  new
!    type My_Int is new Integer;
!    function Ident (M : My_Int) return My_Int;
  end Decls2;
+ @end example
  
+ @example
  with Utils;
! package body Decls2 is           --  new
!    function Ident (M : My_Int) return My_Int is
!    begin
!       return M;
!    end Ident;
  end Decls2;
+ @end example
  
+ @example
  with Decls2;
  package Utils is
!    procedure Put_Val (Arg : Decls2.My_Int);
  end Utils;
+ @end example
  
! @example
! with Ada.Text_IO; use Ada.Text_IO;
  package body Utils is
!    procedure Put_Val (Arg : Decls2.My_Int) is
!    begin
!       Put_Line (Arg'Img);
!    end Put_Val;
  end Utils;
+ @end example
  
+ @example
  with Decls1;
  procedure Main is
  begin
     Decls1.Lib_Task.Start;
! end Main;
  @end example
  
  @item 
! @emph{Declare the tasks}
  
! The original example uses a single task declaration for @code{Lib_Task}. An
! explicit task type declaration and a properly placed task object could avoid
! the dependencies that would otherwise cause an elaboration circularity. The
! example can be rewritten as follows:
  
  @example
  package Decls is
!    task type Lib_Task is         --  new
!       entry Start;
!    end Lib_Task;
  
!    type My_Int is new Integer;
  
!    function Ident (M : My_Int) return My_Int;
  end Decls;
+ @end example
  
+ @example
  with Utils;
  package body Decls is
!    task body Lib_Task is
!    begin
!       accept Start;
!       Utils.Put_Val (2);
!    end Lib_Task;
  
!    function Ident (M : My_Int) return My_Int is
!    begin
!       return M;
!    end Ident;
  end Decls;
+ @end example
  
+ @example
  with Decls;
  package Utils is
!    procedure Put_Val (Arg : Decls.My_Int);
  end Utils;
+ @end example
  
! @example
! with Ada.Text_IO; use Ada.Text_IO;
  package body Utils is
!    procedure Put_Val (Arg : Decls.My_Int) is
!    begin
!       Put_Line (Arg'Img);
!    end Put_Val;
  end Utils;
+ @end example
  
+ @example
  with Decls;
! package Obj_Decls is             --  new
!    Task_Obj : Decls.Lib_Task;
! end Obj_Decls;
! @end example
  
! @example
! with Obj_Decls;
  procedure Main is
  begin
!    Obj_Decls.Task_Obj.Start;     --  new
! end Main;
  @end example
  
  @item 
! @emph{Use restriction No_Entry_Calls_In_Elaboration_Code}
  
! The issue exhibited in the original example under this section revolves
! around the body of @code{Lib_Task} blocking on an accept statement. There is
! no rule to prevent elaboration code from performing entry calls, however in
! practice this is highly unusual. In addition, the pattern of starting tasks
! at elaboration time and then immediately blocking on accept or select
! statements is quite common.
  
! If a programmer knows that elaboration code will not perform any entry
! calls, then the programmer can indicate that the static model should not
! process the remainder of a task body once an accept or select statement has
! been encountered. This behavior can be specified by a configuration pragma:
  
  @example
  pragma Restrictions (No_Entry_Calls_In_Elaboration_Code);
  @end example
  
! In addition to the change in behavior with respect to task bodies, the
! static model will verify that no entry calls take place at elaboration time.
  @end itemize
  
! @node Elaboration-related Compiler Switches,Summary of Procedures for Elaboration Control,Resolving Task Issues,Elaboration Order Handling in GNAT
! @anchor{gnat_ugn/elaboration_order_handling_in_gnat elaboration-related-compiler-switches}@anchor{24d}@anchor{gnat_ugn/elaboration_order_handling_in_gnat id15}@anchor{24e}
! @section Elaboration-related Compiler Switches
  
  
! GNAT has several switches that affect the elaboration model and consequently
! the elaboration order chosen by the binder.
  
! @geindex -gnatE (gnat)
  
  
+ @table @asis
  
! @item @code{-gnatE}
  
! Dynamic elaboration checking mode enabled
  
! When this switch is in effect, GNAT activates the dynamic elaboration model.
! @end table
  
+ @geindex -gnatel (gnat)
  
  
! @table @asis
  
! @item @code{-gnatel}
  
! Turn on info messages on generated Elaborate[_All] pragmas
  
! When this switch is in effect, GNAT will emit the following supplementary
! information depending on the elaboration model in effect.
  
  
! @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 executed 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}.
  
! @example
! 1. with Server; pragma Elaborate_All (Server);
! 2. package Client with SPARK_Mode is
! 3.    Val : constant Integer := Server.Func;
!                                       |
!    >>> info: call to "Func" during elaboration in SPARK
!    >>> info: "Elaborate_All" requirement for unit "Server" met by pragma at line 1
  
! 4. end Client;
! @end example
  @end itemize
+ @end table
  
! @geindex -gnatH (gnat)
  
  
! @table @asis
  
! @item @code{-gnatH}
  
! Legacy elaboration checking mode enabled
  
! When this switch is in effect, GNAT will utilize the pre-18.x elaboration
! model.
! @end table
  
! @geindex -gnatJ (gnat)
  
  
! @table @asis
  
! @item @code{-gnatJ}
  
! Relaxed elaboration checking mode enabled
  
! When this switch is in effect, GNAT will not process certain scenarios,
! resulting in a more permissive elaboration model. Note that this may
! eliminate some diagnostics and run-time checks.
! @end table
  
! @geindex -gnatw.f (gnat)
  
  
+ @table @asis
  
! @item @code{-gnatw.f}
  
! Turn on warnings for suspicious Subp'Access
  
! When this switch is in effect, GNAT will treat @code{'Access} of an entry,
! operator, or subprogram as a potential call to the target and issue warnings:
  
! @example
!  1. package body Attribute_Call is
!  2.    function Func return Integer;
!  3.    type Func_Ptr is access function return Integer;
!  4.
!  5.    Ptr : constant Func_Ptr := Func'Access;
!                                       |
!     >>> warning: "Access" attribute of "Func" before body seen
!     >>> warning: possible Program_Error on later references
!     >>> warning:   body of unit "Attribute_Call" elaborated
!     >>> warning:   "Access" of "Func" taken at line 5
  
!  6.
!  7.    function Func return Integer is
!  8.    begin
!  9.       ...
! 10.    end Func;
! 11. end Attribute_Call;
! @end example
  
! In the example above, the elaboration of declaration @code{Ptr} is assigned
! @code{Func'Access} before the body of @code{Func} has been elaborated.
! @end table
  
! @geindex -gnatwl (gnat)
  
  
! @table @asis
  
! @item @code{-gnatwl}
  
! Turn on warnings for elaboration problems
  
! When this switch is in effect, GNAT emits diagnostics in the form of warnings
! concerning various elaboration problems. The warnings are enabled by default.
! The switch is provided in case all warnings are suppressed, but elaboration
! warnings are still desired.
  
+ @item @code{-gnatwL}
  
! Turn off warnings for elaboration problems
  
! When this switch is in effect, GNAT no longer emits any diagnostics in the
! form of warnings. Selective suppression of elaboration problems is possible
! using @code{pragma Warnings (Off)}.
  
! @example
!  1. package body Selective_Suppression is
!  2.    function ABE return Integer;
!  3.
!  4.    Val_1 : constant Integer := ABE;
!                                    |
!     >>> warning: cannot call "ABE" before body seen
!     >>> warning: Program_Error will be raised at run time
  
!  5.
!  6.    pragma Warnings (Off);
!  7.    Val_2 : constant Integer := ABE;
!  8.    pragma Warnings (On);
!  9.
! 10.    function ABE return Integer is
! 11.    begin
! 12.       ...
! 13.    end ABE;
! 14. end Selective_Suppression;
! @end example
  
! Note that suppressing elaboration warnings does not eliminate run-time
! checks. The example above will still fail at run time with an ABE.
! @end table
  
! @node Summary of Procedures for Elaboration Control,Inspecting the Chosen Elaboration Order,Elaboration-related Compiler Switches,Elaboration Order Handling in GNAT
! @anchor{gnat_ugn/elaboration_order_handling_in_gnat summary-of-procedures-for-elaboration-control}@anchor{24f}@anchor{gnat_ugn/elaboration_order_handling_in_gnat id16}@anchor{250}
! @section Summary of Procedures for Elaboration Control
  
  
! 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,
! then the programmer should use compiler switch @code{-gnatel} and consider
! the messages about missing or implicitly created @code{Elaborate} and
! @code{Elaborate_All} pragmas.
  
! If the binder reports an elaboration circularity, the programmer has several
! options:
  
  
! @itemize *
  
! @item 
! Ensure that elaboration warnings are enabled. This will allow the static
! model to output trace information of elaboration issues. The trace
! information could shed light on previously unforeseen dependencies, as well
! as their origins. Elaboration warnings are enabled with compiler switch
! @code{-gnatwl}.
  
! @item 
! Use switch @code{-gnatel} to obtain messages on generated implicit
! @code{Elaborate} and @code{Elaborate_All} pragmas. The trace information could
! indicate why a server unit must be elaborated prior to a client unit.
  
! @item 
! If the warnings produced by the static model indicate that a task is
! involved, consider the options in section @ref{24b,,Resolving Task Issues}.
  
! @item 
! If none of the steps outlined above resolve the circularity, use a more
! permissive elaboration model, in the following order:
  
  
! @itemize -
  
! @item 
! Use the dynamic elaboration model, with compiler switch @code{-gnatE}.
  
! @item 
! Use the legacy static elaboration model, with compiler switch
! @code{-gnatH}.
  
! @item 
! Use the legacy dynamic elaboration model, with compiler switches
! @code{-gnatH} @code{-gnatE}.
  
! @item 
! Use the relaxed legacy static elaboration model, with compiler switches
! @code{-gnatH} @code{-gnatJ}.
  
! @item 
! Use the relaxed legacy dynamic elaboration model, with compiler switches
! @code{-gnatH} @code{-gnatJ} @code{-gnatE}.
! @end itemize
! @end itemize
  
! @node Inspecting the Chosen Elaboration Order,,Summary of Procedures for Elaboration Control,Elaboration Order Handling in GNAT
! @anchor{gnat_ugn/elaboration_order_handling_in_gnat inspecting-the-chosen-elaboration-order}@anchor{251}@anchor{gnat_ugn/elaboration_order_handling_in_gnat id17}@anchor{252}
! @section Inspecting the Chosen Elaboration Order
  
  
! To see the elaboration order chosen by the binder, inspect the contents of file
! @cite{b~xxx.adb}. On certain targets, this file appears as @cite{b_xxx.adb}. The
! elaboration order appears as a sequence of calls to @code{Elab_Body} and
! @code{Elab_Spec}, interspersed with assignments to @cite{Exxx} which indicates that a
! particular unit is elaborated. For example:
  
  @example
  System.Soft_Links'Elab_Body;
*************** Ada.Text_Io'Elab_Body;
*** 28815,28828 ****
  E07 := True;
  @end example
  
! Here Elab_Spec elaborates the spec
! and Elab_Body elaborates the body. The assignments to the @code{E@emph{xx}} flags
! flag that the corresponding body is now elaborated.
! 
! You can also ask the binder to generate a more
! readable list of the elaboration order using the
! @cite{-l} switch when invoking the binder. Here is
! an example of the output generated by this switch:
  
  @example
  ada (spec)
--- 29014,29021 ----
  E07 := True;
  @end example
  
! Note also binder switch @code{-l}, which outputs the chosen elaboration
! order and provides a more readable form of the above:
  
  @example
  ada (spec)
*************** gdbstr (body)
*** 28912,28918 ****
  @end example
  
  @node Inline Assembler,GNU Free Documentation License,Elaboration Order Handling in GNAT,Top
! @anchor{gnat_ugn/inline_assembler inline-assembler}@anchor{10}@anchor{gnat_ugn/inline_assembler doc}@anchor{24e}@anchor{gnat_ugn/inline_assembler id1}@anchor{24f}
  @chapter Inline Assembler
  
  
--- 29105,29111 ----
  @end example
  
  @node Inline Assembler,GNU Free Documentation License,Elaboration Order Handling in GNAT,Top
! @anchor{gnat_ugn/inline_assembler inline-assembler}@anchor{10}@anchor{gnat_ugn/inline_assembler doc}@anchor{253}@anchor{gnat_ugn/inline_assembler id1}@anchor{254}
  @chapter Inline Assembler
  
  
*************** external routines written in assembly la
*** 28925,28931 ****
  supported by GNAT.  However, for small sections of code it may be simpler
  or more efficient to include assembly language statements directly
  in your Ada source program, using the facilities of the implementation-defined
! package @cite{System.Machine_Code}, which incorporates the gcc
  Inline Assembler.  The Inline Assembler approach offers a number of advantages,
  including the following:
  
--- 29118,29124 ----
  supported by GNAT.  However, for small sections of code it may be simpler
  or more efficient to include assembly language statements directly
  in your Ada source program, using the facilities of the implementation-defined
! package @code{System.Machine_Code}, which incorporates the gcc
  Inline Assembler.  The Inline Assembler approach offers a number of advantages,
  including the following:
  
*************** and with assembly language programming.
*** 28971,28994 ****
  @end menu
  
  @node Basic Assembler Syntax,A Simple Example of Inline Assembler,,Inline Assembler
! @anchor{gnat_ugn/inline_assembler id2}@anchor{250}@anchor{gnat_ugn/inline_assembler basic-assembler-syntax}@anchor{251}
  @section Basic Assembler Syntax
  
  
  The assembler used by GNAT and gcc is based not on the Intel assembly
  language, but rather on a language that descends from the AT&T Unix
! assembler @emph{as} (and which is often referred to as 'AT&T syntax').
! The following table summarizes the main features of @emph{as} syntax
  and points out the differences from the Intel conventions.
! See the gcc @emph{as} and @emph{gas} (an @emph{as} macro
  pre-processor) documentation for further information.
  
  
  @display
  @emph{Register names}@w{ }
  @display
! gcc / @emph{as}: Prefix with '%'; for example @cite{%eax}@w{ }
! Intel: No extra punctuation; for example @cite{eax}@w{ }
  @end display
  @end display
  
--- 29164,29187 ----
  @end menu
  
  @node Basic Assembler Syntax,A Simple Example of Inline Assembler,,Inline Assembler
! @anchor{gnat_ugn/inline_assembler id2}@anchor{255}@anchor{gnat_ugn/inline_assembler basic-assembler-syntax}@anchor{256}
  @section Basic Assembler Syntax
  
  
  The assembler used by GNAT and gcc is based not on the Intel assembly
  language, but rather on a language that descends from the AT&T Unix
! assembler @code{as} (and which is often referred to as 'AT&T syntax').
! The following table summarizes the main features of @code{as} syntax
  and points out the differences from the Intel conventions.
! See the gcc @code{as} and @code{gas} (an @code{as} macro
  pre-processor) documentation for further information.
  
  
  @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{ }
  @end display
  @end display
  
*************** Intel: No extra punctuation; for example
*** 28998,29005 ****
  @display
  @emph{Immediate operand}@w{ }
  @display
! gcc / @emph{as}: Prefix with '$'; for example @cite{$4}@w{ }
! Intel: No extra punctuation; for example @cite{4}@w{ }
  @end display
  @end display
  
--- 29191,29198 ----
  @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{ }
  @end display
  @end display
  
*************** Intel: No extra punctuation; for example
*** 29009,29016 ****
  @display
  @emph{Address}@w{ }
  @display
! gcc / @emph{as}: Prefix with '$'; for example @cite{$loc}@w{ }
! Intel: No extra punctuation; for example @cite{loc}@w{ }
  @end display
  @end display
  
--- 29202,29209 ----
  @display
  @emph{Address}@w{ }
  @display
! gcc / @code{as}: Prefix with '$'; for example @code{$loc}@w{ }
! Intel: No extra punctuation; for example @code{loc}@w{ }
  @end display
  @end display
  
*************** Intel: No extra punctuation; for example
*** 29020,29027 ****
  @display
  @emph{Memory contents}@w{ }
  @display
! gcc / @emph{as}: No extra punctuation; for example @cite{loc}@w{ }
! Intel: Square brackets; for example @cite{[loc]}@w{ }
  @end display
  @end display
  
--- 29213,29220 ----
  @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{ }
  @end display
  @end display
  
*************** Intel: Square brackets; for example @cit
*** 29031,29038 ****
  @display
  @emph{Register contents}@w{ }
  @display
! gcc / @emph{as}: Parentheses; for example @cite{(%eax)}@w{ }
! Intel: Square brackets; for example @cite{[eax]}@w{ }
  @end display
  @end display
  
--- 29224,29231 ----
  @display
  @emph{Register contents}@w{ }
  @display
! gcc / @code{as}: Parentheses; for example @code{(%eax)}@w{ }
! Intel: Square brackets; for example @code{[eax]}@w{ }
  @end display
  @end display
  
*************** Intel: Square brackets; for example @cit
*** 29042,29049 ****
  @display
  @emph{Hexadecimal numbers}@w{ }
  @display
! gcc / @emph{as}: Leading '0x' (C language syntax); for example @cite{0xA0}@w{ }
! Intel: Trailing 'h'; for example @cite{A0h}@w{ }
  @end display
  @end display
  
--- 29235,29242 ----
  @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{ }
  @end display
  @end display
  
*************** Intel: Trailing 'h'; for example @cite{A
*** 29053,29060 ****
  @display
  @emph{Operand size}@w{ }
  @display
! gcc / @emph{as}: Explicit in op code; for example @cite{movw} to move a 16-bit word@w{ }
! Intel: Implicit, deduced by assembler; for example @cite{mov}@w{ }
  @end display
  @end display
  
--- 29246,29253 ----
  @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{ }
  @end display
  @end display
  
*************** Intel: Implicit, deduced by assembler; f
*** 29064,29075 ****
  @display
  @emph{Instruction repetition}@w{ }
  @display
! gcc / @emph{as}: Split into two lines; for example@w{ }
  @display
! @cite{rep}@w{ }
! @cite{stosl}@w{ }
  @end display
! Intel: Keep on one line; for example @cite{rep stosl}@w{ }
  @end display
  @end display
  
--- 29257,29268 ----
  @display
  @emph{Instruction repetition}@w{ }
  @display
! gcc / @code{as}: Split into two lines; for example@w{ }
  @display
! @code{rep}@w{ }
! @code{stosl}@w{ }
  @end display
! Intel: Keep on one line; for example @code{rep stosl}@w{ }
  @end display
  @end display
  
*************** Intel: Keep on one line; for example @ci
*** 29079,29098 ****
  @display
  @emph{Order of operands}@w{ }
  @display
! gcc / @emph{as}: Source first; for example @cite{movw $4@comma{} %eax}@w{ }
! Intel: Destination first; for example @cite{mov eax@comma{} 4}@w{ }
  @end display
  @end display
  
  
  
  @node A Simple Example of Inline Assembler,Output Variables in Inline Assembler,Basic Assembler Syntax,Inline Assembler
! @anchor{gnat_ugn/inline_assembler a-simple-example-of-inline-assembler}@anchor{252}@anchor{gnat_ugn/inline_assembler id3}@anchor{253}
  @section A Simple Example of Inline Assembler
  
  
  The following example will generate a single assembly language statement,
! @cite{nop}, which does nothing.  Despite its lack of run-time effect,
  the example will be useful in illustrating the basics of
  the Inline Assembler facility.
  
--- 29272,29291 ----
  @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{ }
  @end display
  @end display
  
  
  
  @node A Simple Example of Inline Assembler,Output Variables in Inline Assembler,Basic Assembler Syntax,Inline Assembler
! @anchor{gnat_ugn/inline_assembler a-simple-example-of-inline-assembler}@anchor{257}@anchor{gnat_ugn/inline_assembler id3}@anchor{258}
  @section A Simple Example of Inline Assembler
  
  
  The following example will generate a single assembly language statement,
! @code{nop}, which does nothing.  Despite its lack of run-time effect,
  the example will be useful in illustrating the basics of
  the Inline Assembler facility.
  
*************** end Nothing;
*** 29107,29125 ****
  @end example
  @end quotation
  
! @cite{Asm} is a procedure declared in package @cite{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.
! @cite{Asm} may be regarded as a compile-time procedure that parses
  the template string and additional parameters (none here),
  from which it generates a sequence of assembly language instructions.
  
  The examples in this chapter will illustrate several of the forms
! for invoking @cite{Asm}; a complete specification of the syntax
! is found in the @cite{Machine_Code_Insertions} section of the
  @cite{GNAT Reference Manual}.
  
! Under the standard GNAT conventions, the @cite{Nothing} procedure
  should be in a file named @code{nothing.adb}.
  You can build the executable in the usual way:
  
--- 29300,29318 ----
  @end example
  @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),
  from which it generates a sequence of assembly language instructions.
  
  The examples in this chapter will illustrate several of the forms
! for invoking @code{Asm}; a complete specification of the syntax
! is found in the @code{Machine_Code_Insertions} section of the
  @cite{GNAT Reference Manual}.
  
! Under the standard GNAT conventions, the @code{Nothing} procedure
  should be in a file named @code{nothing.adb}.
  You can build the executable in the usual way:
  
*************** do not add runtime checks
*** 29184,29190 ****
  @end itemize
  
  This gives a human-readable assembler version of the code. The resulting
! file will have the same name as the Ada source file, but with a @cite{.s}
  extension. In our example, the file @code{nothing.s} has the following
  contents:
  
--- 29377,29383 ----
  @end itemize
  
  This gives a human-readable assembler version of the code. The resulting
! file will have the same name as the Ada source file, but with a @code{.s}
  extension. In our example, the file @code{nothing.s} has the following
  contents:
  
*************** L1:
*** 29209,29215 ****
  @end quotation
  
  The assembly code you included is clearly indicated by
! the compiler, between the @cite{#APP} and @cite{#NO_APP}
  delimiters. The character before the 'APP' and 'NOAPP'
  can differ on different targets. For example, GNU/Linux uses '#APP' while
  on NT you will see '/APP'.
--- 29402,29408 ----
  @end quotation
  
  The assembly code you included is clearly indicated by
! the compiler, between the @code{#APP} and @code{#NO_APP}
  delimiters. The character before the 'APP' and 'NOAPP'
  can differ on different targets. For example, GNU/Linux uses '#APP' while
  on NT you will see '/APP'.
*************** wrong size modifier, or using a wrong op
*** 29219,29225 ****
  will report this error in a temporary file, which will be deleted when
  the compilation is finished.  Generating an assembler file will help
  in such cases, since you can assemble this file separately using the
! @emph{as} assembler that comes with gcc.
  
  Assembling the file using the command
  
--- 29412,29418 ----
  will report this error in a temporary file, which will be deleted when
  the compilation is finished.  Generating an assembler file will help
  in such cases, since you can assemble this file separately using the
! @code{as} assembler that comes with gcc.
  
  Assembling the file using the command
  
*************** $ as nothing.s
*** 29232,29242 ****
  
  will give you error messages whose lines correspond to the assembler
  input file, so you can easily find and correct any mistakes you made.
! If there are no errors, @emph{as} will generate an object file
  @code{nothing.out}.
  
  @node Output Variables in Inline Assembler,Input Variables in Inline Assembler,A Simple Example of Inline Assembler,Inline Assembler
! @anchor{gnat_ugn/inline_assembler id4}@anchor{254}@anchor{gnat_ugn/inline_assembler output-variables-in-inline-assembler}@anchor{255}
  @section Output Variables in Inline Assembler
  
  
--- 29425,29435 ----
  
  will give you error messages whose lines correspond to the assembler
  input file, so you can easily find and correct any mistakes you made.
! If there are no errors, @code{as} will generate an object file
  @code{nothing.out}.
  
  @node Output Variables in Inline Assembler,Input Variables in Inline Assembler,A Simple Example of Inline Assembler,Inline Assembler
! @anchor{gnat_ugn/inline_assembler id4}@anchor{259}@anchor{gnat_ugn/inline_assembler output-variables-in-inline-assembler}@anchor{25a}
  @section Output Variables in Inline Assembler
  
  
*************** actually do.  This is a useful conventio
*** 29308,29319 ****
  When writing Inline Assembler instructions, you need to precede each register
  and variable name with a percent sign.  Since the assembler already requires
  a percent sign at the beginning of a register name, you need two consecutive
! percent signs for such names in the Asm template string, thus @cite{%%eax}.
  In the generated assembly code, one of the percent signs will be stripped off.
  
! Names such as @cite{%0}, @cite{%1}, @cite{%2}, etc., denote input or output
! variables: operands you later define using @cite{Input} or @cite{Output}
! parameters to @cite{Asm}.
  An output variable is illustrated in
  the third statement in the Asm template string:
  
--- 29501,29512 ----
  When writing Inline Assembler instructions, you need to precede each register
  and variable name with a percent sign.  Since the assembler already requires
  a percent sign at the beginning of a register name, you need two consecutive
! percent signs for such names in the Asm template string, thus @code{%%eax}.
  In the generated assembly code, one of the percent signs will be stripped off.
  
! Names such as @code{%0}, @code{%1}, @code{%2}, etc., denote input or output
! variables: operands you later define using @code{Input} or @code{Output}
! parameters to @code{Asm}.
  An output variable is illustrated in
  the third statement in the Asm template string:
  
*************** movl %%eax, %0
*** 29325,29339 ****
  @end quotation
  
  The intent is to store the contents of the eax register in a variable that can
! be accessed in Ada.  Simply writing @cite{movl %%eax@comma{} Flags} would not
  necessarily work, since the compiler might optimize by using a register
! to hold Flags, and the expansion of the @cite{movl} instruction would not be
  aware of this optimization.  The solution is not to store the result directly
  but rather to advise the compiler to choose the correct operand form;
! that is the purpose of the @cite{%0} output variable.
  
! Information about the output variable is supplied in the @cite{Outputs}
! parameter to @cite{Asm}:
  
  @quotation
  
--- 29518,29532 ----
  @end quotation
  
  The intent is to store the contents of the eax register in a variable that can
! be accessed in Ada.  Simply writing @code{movl %%eax, Flags} would not
  necessarily work, since the compiler might optimize by using a register
! to hold Flags, and the expansion of the @code{movl} instruction would not be
  aware of this optimization.  The solution is not to store the result directly
  but rather to advise the compiler to choose the correct operand form;
! that is the purpose of the @code{%0} output variable.
  
! Information about the output variable is supplied in the @code{Outputs}
! parameter to @code{Asm}:
  
  @quotation
  
*************** Outputs => Unsigned_32'Asm_Output ("=g",
*** 29342,29348 ****
  @end example
  @end quotation
  
! The output is defined by the @cite{Asm_Output} attribute of the target type;
  the general format is
  
  @quotation
--- 29535,29541 ----
  @end example
  @end quotation
  
! The output is defined by the @code{Asm_Output} attribute of the target type;
  the general format is
  
  @quotation
*************** Unsigned_32'Asm_Output ("=m", Flags);
*** 29362,29369 ****
  @end example
  @end quotation
  
! the @cite{"m"} (memory) constraint tells the compiler that the variable
! @cite{Flags} should be stored in a memory variable, thus preventing
  the optimizer from keeping it in a register.  In contrast,
  
  @quotation
--- 29555,29562 ----
  @end example
  @end quotation
  
! the @code{"m"} (memory) constraint tells the compiler that the variable
! @code{Flags} should be stored in a memory variable, thus preventing
  the optimizer from keeping it in a register.  In contrast,
  
  @quotation
*************** Unsigned_32'Asm_Output ("=r", Flags);
*** 29373,29385 ****
  @end example
  @end quotation
  
! uses the @cite{"r"} (register) constraint, telling the compiler to
  store the variable in a register.
  
  If the constraint is preceded by the equal character '=', it tells
  the compiler that the variable will be used to store data into it.
  
! In the @cite{Get_Flags} example, we used the @cite{"g"} (global) constraint,
  allowing the optimizer to choose whatever it deems best.
  
  There are a fairly large number of constraints, but the ones that are
--- 29566,29578 ----
  @end example
  @end quotation
  
! uses the @code{"r"} (register) constraint, telling the compiler to
  store the variable in a register.
  
  If the constraint is preceded by the equal character '=', it tells
  the compiler that the variable will be used to store data into it.
  
! In the @code{Get_Flags} example, we used the @code{"g"} (global) constraint,
  allowing the optimizer to choose whatever it deems best.
  
  There are a fairly large number of constraints, but the ones that are
*************** use one of eax, ebx, ecx, edx, esi or ed
*** 29489,29495 ****
  
  @end quotation
  
! The full set of constraints is described in the gcc and @emph{as}
  documentation; note that it is possible to combine certain constraints
  in one constraint string.
  
--- 29682,29688 ----
  
  @end quotation
  
! The full set of constraints is described in the gcc and @code{as}
  documentation; note that it is possible to combine certain constraints
  in one constraint string.
  
*************** Asm ("pushfl"          & LF & HT & -- pu
*** 29507,29515 ****
  @end example
  @end quotation
  
! @cite{%0} will be replaced in the expanded code by the appropriate operand,
  whatever
! the compiler decided for the @cite{Flags} variable.
  
  In general, you may have any number of output variables:
  
--- 29700,29708 ----
  @end example
  @end quotation
  
! @code{%0} will be replaced in the expanded code by the appropriate operand,
  whatever
! the compiler decided for the @code{Flags} variable.
  
  In general, you may have any number of output variables:
  
*************** In general, you may have any number of o
*** 29517,29527 ****
  @itemize *
  
  @item 
! Count the operands starting at 0; thus @cite{%0}, @cite{%1}, etc.
  
  @item 
! Specify the @cite{Outputs} parameter as a parenthesized comma-separated list
! of @cite{Asm_Output} attributes
  @end itemize
  
  For example:
--- 29710,29720 ----
  @itemize *
  
  @item 
! Count the operands starting at 0; thus @code{%0}, @code{%1}, etc.
  
  @item 
! Specify the @code{Outputs} parameter as a parenthesized comma-separated list
! of @code{Asm_Output} attributes
  @end itemize
  
  For example:
*************** Asm ("movl %%eax, %0" & LF & HT &
*** 29538,29550 ****
  @end example
  @end quotation
  
! where @cite{Var_A}, @cite{Var_B}, and @cite{Var_C} are variables
  in the Ada program.
  
! As a variation on the @cite{Get_Flags} example, we can use the constraints
! string to direct the compiler to store the eax register into the @cite{Flags}
  variable, instead of including the store instruction explicitly in the
! @cite{Asm} template string:
  
  @quotation
  
--- 29731,29743 ----
  @end example
  @end quotation
  
! where @code{Var_A}, @code{Var_B}, and @code{Var_C} are variables
  in the Ada program.
  
! As a variation on the @code{Get_Flags} example, we can use the constraints
! string to direct the compiler to store the eax register into the @code{Flags}
  variable, instead of including the store instruction explicitly in the
! @code{Asm} template string:
  
  @quotation
  
*************** end Get_Flags_2;
*** 29564,29570 ****
  @end example
  @end quotation
  
! The @cite{"a"} constraint tells the compiler that the @cite{Flags}
  variable will come from the eax register. Here is the resulting code:
  
  @quotation
--- 29757,29763 ----
  @end example
  @end quotation
  
! The @code{"a"} constraint tells the compiler that the @code{Flags}
  variable will come from the eax register. Here is the resulting code:
  
  @quotation
*************** end Get_Flags_3;
*** 29603,29609 ****
  @end quotation
  
  @node Input Variables in Inline Assembler,Inlining Inline Assembler Code,Output Variables in Inline Assembler,Inline Assembler
! @anchor{gnat_ugn/inline_assembler id5}@anchor{256}@anchor{gnat_ugn/inline_assembler input-variables-in-inline-assembler}@anchor{257}
  @section Input Variables in Inline Assembler
  
  
--- 29796,29802 ----
  @end quotation
  
  @node Input Variables in Inline Assembler,Inlining Inline Assembler Code,Output Variables in Inline Assembler,Inline Assembler
! @anchor{gnat_ugn/inline_assembler id5}@anchor{25b}@anchor{gnat_ugn/inline_assembler input-variables-in-inline-assembler}@anchor{25c}
  @section Input Variables in Inline Assembler
  
  
*************** end Increment;
*** 29639,29651 ****
  @end example
  @end quotation
  
! The @cite{Outputs} parameter to @cite{Asm} specifies
  that the result will be in the eax register and that it is to be stored
! in the @cite{Result} variable.
  
! The @cite{Inputs} parameter looks much like the @cite{Outputs} parameter,
! but with an @cite{Asm_Input} attribute.
! The @cite{"="} constraint, indicating an output value, is not present.
  
  You can have multiple input variables, in the same way that you can have more
  than one output variable.
--- 29832,29844 ----
  @end example
  @end quotation
  
! The @code{Outputs} parameter to @code{Asm} specifies
  that the result will be in the eax register and that it is to be stored
! in the @code{Result} variable.
  
! The @code{Inputs} parameter looks much like the @code{Outputs} parameter,
! but with an @code{Asm_Input} attribute.
! The @code{"="} constraint, indicating an output value, is not present.
  
  You can have multiple input variables, in the same way that you can have more
  than one output variable.
*************** than one output variable.
*** 29653,29679 ****
  The parameter count (%0, %1) etc, still starts at the first output statement,
  and continues with the input statements.
  
! Just as the @cite{Outputs} parameter causes the register to be stored into the
  target variable after execution of the assembler statements, so does the
! @cite{Inputs} parameter cause its variable to be loaded into the register
  before execution of the assembler statements.
  
! Thus the effect of the @cite{Asm} invocation is:
  
  
  @itemize *
  
  @item 
! load the 32-bit value of @cite{Value} into eax
  
  @item 
! execute the @cite{incl %eax} instruction
  
  @item 
! store the contents of eax into the @cite{Result} variable
  @end itemize
  
! The resulting assembler file (with @emph{-O2} optimization) contains:
  
  @quotation
  
--- 29846,29872 ----
  The parameter count (%0, %1) etc, still starts at the first output statement,
  and continues with the input statements.
  
! Just as the @code{Outputs} parameter causes the register to be stored into the
  target variable after execution of the assembler statements, so does the
! @code{Inputs} parameter cause its variable to be loaded into the register
  before execution of the assembler statements.
  
! Thus the effect of the @code{Asm} invocation is:
  
  
  @itemize *
  
  @item 
! load the 32-bit value of @code{Value} into eax
  
  @item 
! execute the @code{incl %eax} instruction
  
  @item 
! store the contents of eax into the @code{Result} variable
  @end itemize
  
! The resulting assembler file (with @code{-O2} optimization) contains:
  
  @quotation
  
*************** _increment__incr.1:
*** 29692,29705 ****
  @end quotation
  
  @node Inlining Inline Assembler Code,Other Asm Functionality,Input Variables in Inline Assembler,Inline Assembler
! @anchor{gnat_ugn/inline_assembler id6}@anchor{258}@anchor{gnat_ugn/inline_assembler inlining-inline-assembler-code}@anchor{259}
  @section Inlining Inline Assembler Code
  
  
! For a short subprogram such as the @cite{Incr} function in the previous
  section, the overhead of the call and return (creating / deleting the stack
  frame) can be significant, compared to the amount of code in the subprogram
! body.  A solution is to apply Ada's @cite{Inline} pragma to the subprogram,
  which directs the compiler to expand invocations of the subprogram at the
  point(s) of call, instead of setting up a stack frame for out-of-line calls.
  Here is the resulting program:
--- 29885,29898 ----
  @end quotation
  
  @node Inlining Inline Assembler Code,Other Asm Functionality,Input Variables in Inline Assembler,Inline Assembler
! @anchor{gnat_ugn/inline_assembler id6}@anchor{25d}@anchor{gnat_ugn/inline_assembler inlining-inline-assembler-code}@anchor{25e}
  @section Inlining Inline Assembler Code
  
  
! For a short subprogram such as the @code{Incr} function in the previous
  section, the overhead of the call and return (creating / deleting the stack
  frame) can be significant, compared to the amount of code in the subprogram
! body.  A solution is to apply Ada's @code{Inline} pragma to the subprogram,
  which directs the compiler to expand invocations of the subprogram at the
  point(s) of call, instead of setting up a stack frame for out-of-line calls.
  Here is the resulting program:
*************** end Increment_2;
*** 29733,29743 ****
  @end example
  @end quotation
  
! Compile the program with both optimization (@emph{-O2}) and inlining
! (@emph{-gnatn}) enabled.
  
! The @cite{Incr} function is still compiled as usual, but at the
! point in @cite{Increment} where our function used to be called:
  
  @quotation
  
--- 29926,29936 ----
  @end example
  @end quotation
  
! Compile the program with both optimization (@code{-O2}) and inlining
! (@code{-gnatn}) enabled.
  
! The @code{Incr} function is still compiled as usual, but at the
! point in @code{Increment} where our function used to be called:
  
  @quotation
  
*************** movl %esi,%eax
*** 29763,29775 ****
  thus saving the overhead of stack frame setup and an out-of-line call.
  
  @node Other Asm Functionality,,Inlining Inline Assembler Code,Inline Assembler
! @anchor{gnat_ugn/inline_assembler other-asm-functionality}@anchor{25a}@anchor{gnat_ugn/inline_assembler id7}@anchor{25b}
! @section Other @cite{Asm} Functionality
  
  
! This section describes two important parameters to the @cite{Asm}
! procedure: @cite{Clobber}, which identifies register usage;
! and @cite{Volatile}, which inhibits unwanted optimizations.
  
  @menu
  * The Clobber Parameter:: 
--- 29956,29968 ----
  thus saving the overhead of stack frame setup and an out-of-line call.
  
  @node Other Asm Functionality,,Inlining Inline Assembler Code,Inline Assembler
! @anchor{gnat_ugn/inline_assembler other-asm-functionality}@anchor{25f}@anchor{gnat_ugn/inline_assembler id7}@anchor{260}
! @section Other @code{Asm} Functionality
  
  
! This section describes two important parameters to the @code{Asm}
! procedure: @code{Clobber}, which identifies register usage;
! and @code{Volatile}, which inhibits unwanted optimizations.
  
  @menu
  * The Clobber Parameter:: 
*************** and @cite{Volatile}, which inhibits unwa
*** 29778,29798 ****
  @end menu
  
  @node The Clobber Parameter,The Volatile Parameter,,Other Asm Functionality
! @anchor{gnat_ugn/inline_assembler the-clobber-parameter}@anchor{25c}@anchor{gnat_ugn/inline_assembler id8}@anchor{25d}
! @subsection The @cite{Clobber} Parameter
  
  
  One of the dangers of intermixing assembly language and a compiled language
  such as Ada is that the compiler needs to be aware of which registers are
  being used by the assembly code.  In some cases, such as the earlier examples,
  the constraint string is sufficient to indicate register usage (e.g.,
! @cite{"a"} for
  the eax register).  But more generally, the compiler needs an explicit
  identification of the registers that are used by the Inline Assembly
  statements.
  
  Using a register that the compiler doesn't know about
! could be a side effect of an instruction (like @cite{mull}
  storing its result in both eax and edx).
  It can also arise from explicit register usage in your
  assembly code; for example:
--- 29971,29991 ----
  @end menu
  
  @node The Clobber Parameter,The Volatile Parameter,,Other Asm Functionality
! @anchor{gnat_ugn/inline_assembler the-clobber-parameter}@anchor{261}@anchor{gnat_ugn/inline_assembler id8}@anchor{262}
! @subsection The @code{Clobber} Parameter
  
  
  One of the dangers of intermixing assembly language and a compiled language
  such as Ada is that the compiler needs to be aware of which registers are
  being used by the assembly code.  In some cases, such as the earlier examples,
  the constraint string is sufficient to indicate register usage (e.g.,
! @code{"a"} for
  the eax register).  But more generally, the compiler needs an explicit
  identification of the registers that are used by the Inline Assembly
  statements.
  
  Using a register that the compiler doesn't know about
! could be a side effect of an instruction (like @code{mull}
  storing its result in both eax and edx).
  It can also arise from explicit register usage in your
  assembly code; for example:
*************** Asm ("movl %0, %%ebx" & LF & HT &
*** 29807,29816 ****
  @end example
  @end quotation
  
! where the compiler (since it does not analyze the @cite{Asm} template string)
  does not know you are using the ebx register.
  
! In such cases you need to supply the @cite{Clobber} parameter to @cite{Asm},
  to identify the registers that will be used by your assembly code:
  
  @quotation
--- 30000,30009 ----
  @end example
  @end quotation
  
! where the compiler (since it does not analyze the @code{Asm} template string)
  does not know you are using the ebx register.
  
! In such cases you need to supply the @code{Clobber} parameter to @code{Asm},
  to identify the registers that will be used by your assembly code:
  
  @quotation
*************** Asm ("movl %0, %%ebx" & LF & HT &
*** 29827,29860 ****
  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., @cite{"eax@comma{} ebx"}
  
! The @cite{Clobber} parameter has several additional uses:
  
  
  @itemize *
  
  @item 
! Use 'register' name @cite{cc} to indicate that flags might have changed
  
  @item 
! Use 'register' name @cite{memory} if you changed a memory location
  @end itemize
  
  @node The Volatile Parameter,,The Clobber Parameter,Other Asm Functionality
! @anchor{gnat_ugn/inline_assembler the-volatile-parameter}@anchor{25e}@anchor{gnat_ugn/inline_assembler id9}@anchor{25f}
! @subsection The @cite{Volatile} Parameter
  
  
  @geindex Volatile parameter
  
  Compiler optimizations in the presence of Inline Assembler may sometimes have
! unwanted effects.  For example, when an @cite{Asm} invocation with an input
  variable is inside a loop, the compiler might move the loading of the input
  variable outside the loop, regarding it as a one-time initialization.
  
  If this effect is not desired, you can disable such optimizations by setting
! the @cite{Volatile} parameter to @cite{True}; for example:
  
  @quotation
  
--- 30020,30053 ----
  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"}
  
! The @code{Clobber} parameter has several additional uses:
  
  
  @itemize *
  
  @item 
! Use 'register' name @code{cc} to indicate that flags might have changed
  
  @item 
! Use 'register' name @code{memory} if you changed a memory location
  @end itemize
  
  @node The Volatile Parameter,,The Clobber Parameter,Other Asm Functionality
! @anchor{gnat_ugn/inline_assembler the-volatile-parameter}@anchor{263}@anchor{gnat_ugn/inline_assembler id9}@anchor{264}
! @subsection The @code{Volatile} Parameter
  
  
  @geindex Volatile parameter
  
  Compiler optimizations in the presence of Inline Assembler may sometimes have
! unwanted effects.  For example, when an @code{Asm} invocation with an input
  variable is inside a loop, the compiler might move the loading of the input
  variable outside the loop, regarding it as a one-time initialization.
  
  If this effect is not desired, you can disable such optimizations by setting
! the @code{Volatile} parameter to @code{True}; for example:
  
  @quotation
  
*************** Asm ("movl %0, %%ebx" & LF & HT &
*** 29868,29884 ****
  @end example
  @end quotation
  
! By default, @cite{Volatile} is set to @cite{False} unless there is no
! @cite{Outputs} parameter.
  
! Although setting @cite{Volatile} to @cite{True} prevents unwanted
  optimizations, it will also disable other optimizations that might be
! important for efficiency. In general, you should set @cite{Volatile}
! to @cite{True} only if the compiler's optimizations have created
  problems.
  
  @node GNU Free Documentation License,Index,Inline Assembler,Top
! @anchor{share/gnu_free_documentation_license gnu-fdl}@anchor{1}@anchor{share/gnu_free_documentation_license doc}@anchor{260}@anchor{share/gnu_free_documentation_license gnu-free-documentation-license}@anchor{261}
  @chapter GNU Free Documentation License
  
  
--- 30061,30077 ----
  @end example
  @end quotation
  
! By default, @code{Volatile} is set to @code{False} unless there is no
! @code{Outputs} parameter.
  
! Although setting @code{Volatile} to @code{True} prevents unwanted
  optimizations, it will also disable other optimizations that might be
! important for efficiency. In general, you should set @code{Volatile}
! to @code{True} only if the compiler's optimizations have created
  problems.
  
  @node GNU Free Documentation License,Index,Inline Assembler,Top
! @anchor{share/gnu_free_documentation_license gnu-fdl}@anchor{1}@anchor{share/gnu_free_documentation_license doc}@anchor{265}@anchor{share/gnu_free_documentation_license gnu-free-documentation-license}@anchor{266}
  @chapter GNU Free Documentation License
  
  
diff -Nrcpad gcc-7.3.0/gcc/ada/gnatbind.adb gcc-8.1.0/gcc/ada/gnatbind.adb
*** gcc-7.3.0/gcc/ada/gnatbind.adb	Fri Jan 13 10:54:43 2017
--- gcc-8.1.0/gcc/ada/gnatbind.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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;
*** 36,42 ****
--- 36,47 ----
  with Fmap;
  with Namet;    use Namet;
  with Opt;      use Opt;
+ 
  with Osint;    use Osint;
+ --  Note that we use low-level routines in Osint to read command-line
+ --  arguments. We cannot depend on Ada.Command_Line, because it contains modern
+ --  Ada features that would break bootstrapping with old base compilers.
+ 
  with Osint.B;  use Osint.B;
  with Output;   use Output;
  with Rident;   use Rident;
*************** with Targparm; use Targparm;
*** 47,56 ****
  with Types;    use Types;
  
  with System.Case_Util; use System.Case_Util;
  with System.OS_Lib;    use System.OS_Lib;
  
- with Ada.Command_Line.Response_File; use Ada.Command_Line;
- 
  procedure Gnatbind is
  
     Total_Errors : Nat := 0;
--- 52,60 ----
  with Types;    use Types;
  
  with System.Case_Util; use System.Case_Util;
+ with System.Response_File;
  with System.OS_Lib;    use System.OS_Lib;
  
  procedure Gnatbind is
  
     Total_Errors : Nat := 0;
*************** procedure Gnatbind is
*** 326,334 ****
        then
           Output_File_Name_Seen := True;
  
!          if Argv'Length = 0
!            or else (Argv'Length >= 1 and then Argv (1) = '-')
!          then
              Fail ("output File_Name missing after -o");
  
           else
--- 330,336 ----
        then
           Output_File_Name_Seen := True;
  
!          if Argv'Length = 0 or else Argv (1) = '-' then
              Fail ("output File_Name missing after -o");
  
           else
*************** procedure Gnatbind is
*** 505,512 ****
        Next_Arg : Positive := 1;
  
     begin
-       --  Use low level argument routines to avoid dragging in secondary stack
- 
        while Next_Arg < Arg_Count loop
           declare
              Next_Argv : String (1 .. Len_Arg (Next_Arg));
--- 507,512 ----
*************** procedure Gnatbind is
*** 519,529 ****
                    if Next_Argv'Length > 1 then
                       declare
                          Arguments : constant Argument_List :=
!                                       Response_File.Arguments_From
!                                         (Response_File_Name        =>
!                                            Next_Argv (2 .. Next_Argv'Last),
!                                          Recursive                 => True,
!                                          Ignore_Non_Existing_Files => True);
                       begin
                          for J in Arguments'Range loop
                             Action (Arguments (J).all);
--- 519,529 ----
                    if Next_Argv'Length > 1 then
                       declare
                          Arguments : constant Argument_List :=
!                           System.Response_File.Arguments_From
!                             (Response_File_Name        =>
!                                Next_Argv (2 .. Next_Argv'Last),
!                              Recursive                 => True,
!                              Ignore_Non_Existing_Files => True);
                       begin
                          for J in Arguments'Range loop
                             Action (Arguments (J).all);
*************** begin
*** 598,604 ****
     Scan_Bind_Args;
  
     if Verbose_Mode then
!       Write_Str (Command_Name);
        Put_Bind_Args;
        Write_Eol;
     end if;
--- 598,610 ----
     Scan_Bind_Args;
  
     if Verbose_Mode then
!       declare
!          Command_Name : String (1 .. Len_Arg (0));
!       begin
!          Fill_Arg (Command_Name'Address, 0);
!          Write_Str (Command_Name);
!       end;
! 
        Put_Bind_Args;
        Write_Eol;
     end if;
*************** begin
*** 669,675 ****
     --  Output usage information if no arguments
  
     if not More_Lib_Files then
!       if Argument_Count = 0 then
           Bindusg.Display;
        else
           Write_Line ("try ""gnatbind --help"" for more information.");
--- 675,681 ----
     --  Output usage information if no arguments
  
     if not More_Lib_Files then
!       if Arg_Count = 0 then
           Bindusg.Display;
        else
           Write_Line ("try ""gnatbind --help"" for more information.");
diff -Nrcpad gcc-7.3.0/gcc/ada/gnatbind.ads gcc-8.1.0/gcc/ada/gnatbind.ads
*** gcc-7.3.0/gcc/ada/gnatbind.ads	Wed Jul 22 15:35:52 2009
--- gcc-8.1.0/gcc/ada/gnatbind.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          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 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/gnatchop.adb gcc-8.1.0/gcc/ada/gnatchop.adb
*** gcc-7.3.0/gcc/ada/gnatchop.adb	Fri Aug  1 08:17:20 2014
--- gcc-8.1.0/gcc/ada/gnatchop.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1998-2014, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or 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-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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
*** 1424,1430 ****
  
        --  Test for presence of BOM
  
!       Read_BOM (Buffer.all, BOM_Length, BOM, False);
        BOM_Present := BOM /= Unknown;
  
        --  Only chop those units that come from this file
--- 1424,1430 ----
  
        --  Test for presence of BOM
  
!       Read_BOM (Buffer.all, BOM_Length, BOM, XML_Support => False);
        BOM_Present := BOM /= Unknown;
  
        --  Only chop those units that come from this file
diff -Nrcpad gcc-7.3.0/gcc/ada/gnatclean.adb gcc-8.1.0/gcc/ada/gnatclean.adb
*** gcc-7.3.0/gcc/ada/gnatclean.adb	Mon Sep 10 12:47:10 2007
--- gcc-8.1.0/gcc/ada/gnatclean.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2003-2007, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or 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-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/gnatcmd.adb gcc-8.1.0/gcc/ada/gnatcmd.adb
*** gcc-7.3.0/gcc/ada/gnatcmd.adb	Fri Jan 13 10:19:19 2017
--- gcc-8.1.0/gcc/ada/gnatcmd.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1996-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or 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-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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,55 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
- with Csets;
  with Gnatvsn;
- with Makeutl;  use Makeutl;
  with Namet;    use Namet;
  with Opt;      use Opt;
  with Osint;    use Osint;
  with Output;   use Output;
- with Prj;      use Prj;
- with Prj.Env;
- with Prj.Ext;  use Prj.Ext;
- with Prj.Pars;
- with Prj.Tree; use Prj.Tree;
- with Prj.Util; use Prj.Util;
- with Sdefault;
- with Sinput.P;
- with Snames;   use Snames;
- with Stringt;
  with Switch;   use Switch;
  with Table;
- with Tempdir;
- with Types;    use Types;
  
  with Ada.Characters.Handling; use Ada.Characters.Handling;
  with Ada.Command_Line;        use Ada.Command_Line;
  with Ada.Text_IO;             use Ada.Text_IO;
  
- with GNAT.Directory_Operations; use GNAT.Directory_Operations;
  with GNAT.OS_Lib;               use GNAT.OS_Lib;
  
  procedure GNATCmd is
--- 23,40 ----
*************** procedure GNATCmd is
*** 97,121 ****
        Pp    => Pretty);
     --  Mapping of alternate commands to commands
  
-    Call_GPR_Tool : Boolean := False;
-    --  True when a GPR tool should be called, if available
- 
-    Project_Node_Tree : Project_Node_Tree_Ref;
-    Project_File      : String_Access;
-    Project           : Prj.Project_Id;
-    Current_Verbosity : Prj.Verbosity := Prj.Default;
-    Tool_Package_Name : Name_Id       := No_Name;
- 
-    Project_Tree : constant Project_Tree_Ref :=
-                     new Project_Tree_Data (Is_Root_Tree => True);
-    --  The project tree
- 
-    All_Projects : Boolean := False;
- 
-    Temp_File_Name : Path_Name_Type := No_Path;
-    --  The name of the temporary text file to put a list of source/object
-    --  files to pass to a tool.
- 
     package First_Switches is new Table.Table
       (Table_Component_Type => String_Access,
        Table_Index_Type     => Integer,
--- 82,87 ----
*************** procedure GNATCmd is
*** 256,433 ****
           Unixsws  => null)
       );
  
-    subtype SA is String_Access;
- 
-    Naming_String      : constant SA := new String'("naming");
-    Gnatls_String      : constant SA := new String'("gnatls");
- 
-    Packages_To_Check_By_Gnatls    : constant String_List_Access :=
-      new String_List'((Naming_String, Gnatls_String));
- 
-    Packages_To_Check : String_List_Access := Prj.All_Packages;
- 
     -----------------------
     -- Local Subprograms --
     -----------------------
  
-    procedure Check_Files;
-    --  For GNAT LIST -V, check if a project file is specified, without any file
-    --  arguments and without a switch -files=. If it is the case, invoke the
-    --  GNAT tool with the proper list of files, derived from the sources of
-    --  the project.
- 
     procedure Output_Version;
     --  Output the version of this program
  
     procedure Usage;
     --  Display usage
  
-    -----------------
-    -- Check_Files --
-    -----------------
- 
-    procedure Check_Files is
-       Add_Sources : Boolean := True;
-       Unit        : Prj.Unit_Index;
-       Subunit     : Boolean := False;
-       FD          : File_Descriptor := Invalid_FD;
-       Status      : Integer;
-       Success     : Boolean;
- 
-       procedure Add_To_Response_File
-         (File_Name  : String;
-          Check_File : Boolean := True);
-       --  Include the file name passed as parameter in the response file for
-       --  the tool being called. If the response file can not be written then
-       --  the file name is passed in the parameter list of the tool. If the
-       --  Check_File parameter is True then the procedure verifies the
-       --  existence of the file before adding it to the response file.
- 
-       --------------------------
-       -- Add_To_Response_File --
-       --------------------------
- 
-       procedure Add_To_Response_File
-         (File_Name  : String;
-          Check_File : Boolean := True)
-       is
-       begin
-          Name_Len := 0;
- 
-          Add_Str_To_Name_Buffer (File_Name);
- 
-          if not Check_File or else
-            Is_Regular_File (Name_Buffer (1 .. Name_Len))
-          then
-             if FD /= Invalid_FD then
-                Name_Len := Name_Len + 1;
-                Name_Buffer (Name_Len) := ASCII.LF;
- 
-                Status := Write (FD, Name_Buffer (1)'Address, Name_Len);
- 
-                if Status /= Name_Len then
-                   Osint.Fail ("disk full");
-                end if;
-             else
-                Last_Switches.Increment_Last;
-                Last_Switches.Table (Last_Switches.Last) :=
-                  new String'(File_Name);
-             end if;
-          end if;
-       end Add_To_Response_File;
- 
-    --  Start of processing for Check_Files
- 
-    begin
-       --  Check if there is at least one argument that is not a switch
- 
-       for Index in 1 .. Last_Switches.Last loop
-          if Last_Switches.Table (Index) (1) /= '-'
-            or else (Last_Switches.Table (Index).all'Length > 7
-                      and then Last_Switches.Table (Index) (1 .. 7) = "-files=")
-          then
-             Add_Sources := False;
-             exit;
-          end if;
-       end loop;
- 
-       --  If all arguments are switches and there is no switch -files=, add the
-       --  path names of all the sources of the main project.
- 
-       if Add_Sources then
-          Tempdir.Create_Temp_File (FD, Temp_File_Name);
-          Record_Temp_File (Project_Tree.Shared, Temp_File_Name);
-          Last_Switches.Increment_Last;
-          Last_Switches.Table (Last_Switches.Last) :=
-            new String'("-files=" & Get_Name_String (Temp_File_Name));
- 
-          Unit := Units_Htable.Get_First (Project_Tree.Units_HT);
-          while Unit /= No_Unit_Index loop
- 
-             --  We only need to put the library units, body or spec, but not
-             --  the subunits.
- 
-             if Unit.File_Names (Impl) /= null
-               and then not Unit.File_Names (Impl).Locally_Removed
-             then
-                --  There is a body, check if it is for this project
- 
-                if All_Projects
-                  or else Unit.File_Names (Impl).Project = Project
-                then
-                   Subunit := False;
- 
-                   if Unit.File_Names (Spec) = null
-                     or else Unit.File_Names (Spec).Locally_Removed
-                   then
-                      --  We have a body with no spec: we need to check if
-                      --  this is a subunit, because gnatls will complain
-                      --  about subunits.
- 
-                      declare
-                         Src_Ind : constant Source_File_Index :=
-                                     Sinput.P.Load_Project_File
-                                       (Get_Name_String
-                                          (Unit.File_Names (Impl).Path.Name));
-                      begin
-                         Subunit := Sinput.P.Source_File_Is_Subunit (Src_Ind);
-                      end;
-                   end if;
- 
-                   if not Subunit then
-                      Add_To_Response_File
-                        (Get_Name_String (Unit.File_Names (Impl).Display_File),
-                         Check_File => False);
-                   end if;
-                end if;
- 
-             elsif Unit.File_Names (Spec) /= null
-               and then not Unit.File_Names (Spec).Locally_Removed
-             then
-                --  We have a spec with no body. Check if it is for this project
- 
-                if All_Projects
-                  or else Unit.File_Names (Spec).Project = Project
-                then
-                   Add_To_Response_File
-                     (Get_Name_String (Unit.File_Names (Spec).Display_File),
-                      Check_File => False);
-                end if;
-             end if;
- 
-             Unit := Units_Htable.Get_Next (Project_Tree.Units_HT);
-          end loop;
- 
-          if FD /= Invalid_FD then
-             Close (FD, Success);
- 
-             if not Success then
-                Osint.Fail ("disk full");
-             end if;
-          end if;
-       end if;
-    end Check_Files;
- 
     --------------------
     -- Output_Version --
     --------------------
--- 222,237 ----
*************** begin
*** 485,501 ****
  
     --  Initializations
  
-    Csets.Initialize;
-    Snames.Initialize;
-    Stringt.Initialize;
- 
-    Prj.Tree.Initialize (Root_Environment, Gnatmake_Flags);
- 
-    Project_Node_Tree := new Project_Node_Tree_Data;
-    Prj.Tree.Initialize (Project_Node_Tree);
- 
-    Prj.Initialize (Project_Tree);
- 
     Last_Switches.Init;
     Last_Switches.Set_Last (0);
  
--- 289,294 ----
*************** begin
*** 601,607 ****
        begin
           --  Check if an argument file is specified
  
!          if The_Arg (The_Arg'First) = '@' then
              declare
                 Arg_File : Ada.Text_IO.File_Type;
                 Line     : String (1 .. 256);
--- 394,400 ----
        begin
           --  Check if an argument file is specified
  
!          if The_Arg'Length > 0 and then The_Arg (The_Arg'First) = '@' then
              declare
                 Arg_File : Ada.Text_IO.File_Type;
                 Line     : String (1 .. 256);
*************** begin
*** 639,645 ****
                 Close (Arg_File);
              end;
  
!          else
              --  It is not an argument file; just put the argument in
              --  the Last_Switches table.
  
--- 432,438 ----
                 Close (Arg_File);
              end;
  
!          elsif The_Arg'Length > 0 then
              --  It is not an argument file; just put the argument in
              --  the Last_Switches table.
  
*************** begin
*** 679,701 ****
             or else The_Command = List
           then
              declare
!                Switch            : String_Access;
!                Dash_V_Switch     : constant String := "-V";
! 
              begin
                 for J in 1 .. Last_Switches.Last loop
                    Switch := Last_Switches.Table (J);
  
-                   if The_Command = List and then Switch.all = Dash_V_Switch
-                   then
-                      Call_GPR_Tool := False;
-                      exit;
-                   end if;
- 
                    if Switch'Length >= 2
                      and then Switch (Switch'First .. Switch'First + 1) = "-P"
                    then
                       Call_GPR_Tool := True;
                    end if;
                 end loop;
  
--- 472,488 ----
             or else The_Command = List
           then
              declare
!                Switch        : String_Access;
!                Call_GPR_Tool : Boolean := False;
              begin
                 for J in 1 .. Last_Switches.Last loop
                    Switch := Last_Switches.Table (J);
  
                    if Switch'Length >= 2
                      and then Switch (Switch'First .. Switch'First + 1) = "-P"
                    then
                       Call_GPR_Tool := True;
+                      exit;
                    end if;
                 end loop;
  
*************** begin
*** 786,794 ****
        --  report an error indicating that the command is no longer supporting
        --  project files.
  
!       if The_Command = Find or else  The_Command = Xref then
           declare
!             Argv    : String_Access;
           begin
              for Arg_Num in 1 .. Last_Switches.Last loop
                 Argv := Last_Switches.Table (Arg_Num);
--- 573,581 ----
        --  report an error indicating that the command is no longer supporting
        --  project files.
  
!       if The_Command = Find or else The_Command = Xref then
           declare
!             Argv : String_Access;
           begin
              for Arg_Num in 1 .. Last_Switches.Last loop
                 Argv := Last_Switches.Table (Arg_Num);
*************** begin
*** 806,1195 ****
           end;
        end if;
  
-       if The_Command = List and then not Call_GPR_Tool then
-          Tool_Package_Name := Name_Gnatls;
-          Packages_To_Check := Packages_To_Check_By_Gnatls;
- 
-          --  Check that the switches are consistent. Detect project file
-          --  related switches.
- 
-          Inspect_Switches : declare
-             Arg_Num : Positive := 1;
-             Argv    : String_Access;
- 
-             procedure Remove_Switch (Num : Positive);
-             --  Remove a project related switch from table Last_Switches
- 
-             -------------------
-             -- Remove_Switch --
-             -------------------
- 
-             procedure Remove_Switch (Num : Positive) is
-             begin
-                Last_Switches.Table (Num .. Last_Switches.Last - 1) :=
-                  Last_Switches.Table (Num + 1 .. Last_Switches.Last);
-                Last_Switches.Decrement_Last;
-             end Remove_Switch;
- 
-          --  Start of processing for Inspect_Switches
- 
-          begin
-             while Arg_Num <= Last_Switches.Last loop
-                Argv := Last_Switches.Table (Arg_Num);
- 
-                if Argv (Argv'First) = '-' then
-                   if Argv'Length = 1 then
-                      Fail ("switch character cannot be followed by a blank");
-                   end if;
- 
-                   --  --subdirs=... Specify Subdirs
- 
-                   if Argv'Length > Makeutl.Subdirs_Option'Length
-                     and then
-                       Argv
-                        (Argv'First ..
-                         Argv'First + Makeutl.Subdirs_Option'Length - 1) =
-                                                         Makeutl.Subdirs_Option
-                   then
-                      Subdirs :=
-                        new String'
-                          (Argv (Argv'First + Makeutl.Subdirs_Option'Length ..
-                                 Argv'Last));
- 
-                      Remove_Switch (Arg_Num);
- 
-                   --  -aPdir  Add dir to the project search path
- 
-                   elsif Argv'Length > 3
-                     and then Argv (Argv'First + 1 .. Argv'First + 2) = "aP"
-                   then
-                      Prj.Env.Add_Directories
-                        (Root_Environment.Project_Path,
-                         Argv (Argv'First + 3 .. Argv'Last));
- 
-                      --  Pass -aPdir to gnatls, but not to other tools
- 
-                      if The_Command = List then
-                         Arg_Num := Arg_Num + 1;
-                      else
-                         Remove_Switch (Arg_Num);
-                      end if;
- 
-                   --  -eL  Follow links for files
- 
-                   elsif Argv.all = "-eL" then
-                      Follow_Links_For_Files := True;
-                      Follow_Links_For_Dirs  := True;
- 
-                      Remove_Switch (Arg_Num);
- 
-                   --  -vPx  Specify verbosity while parsing project files
- 
-                   elsif Argv'Length >= 3
-                     and then  Argv (Argv'First + 1 .. Argv'First + 2) = "vP"
-                   then
-                      if Argv'Length = 4
-                        and then Argv (Argv'Last) in '0' .. '2'
-                      then
-                         case Argv (Argv'Last) is
-                            when '0' =>
-                               Current_Verbosity := Prj.Default;
-                            when '1' =>
-                               Current_Verbosity := Prj.Medium;
-                            when '2' =>
-                               Current_Verbosity := Prj.High;
-                            when others =>
- 
-                               --  Cannot happen
- 
-                               raise Program_Error;
-                         end case;
-                      else
-                         Fail ("invalid verbosity level: "
-                               & Argv (Argv'First + 3 .. Argv'Last));
-                      end if;
- 
-                      Remove_Switch (Arg_Num);
- 
-                   --  -Pproject_file  Specify project file to be used
- 
-                   elsif Argv (Argv'First + 1) = 'P' then
- 
-                      --  Only one -P switch can be used
- 
-                      if Project_File /= null then
-                         Fail
-                           (Argv.all
-                            & ": second project file forbidden (first is """
-                            & Project_File.all & """)");
- 
-                      elsif Argv'Length = 2 then
- 
-                         --  There is space between -P and the project file
-                         --  name. -P cannot be the last option.
- 
-                         if Arg_Num = Last_Switches.Last then
-                            Fail ("project file name missing after -P");
- 
-                         else
-                            Remove_Switch (Arg_Num);
-                            Argv := Last_Switches.Table (Arg_Num);
- 
-                            --  After -P, there must be a project file name,
-                            --  not another switch.
- 
-                            if Argv (Argv'First) = '-' then
-                               Fail ("project file name missing after -P");
- 
-                            else
-                               Project_File := new String'(Argv.all);
-                            end if;
-                         end if;
- 
-                      else
-                         --  No space between -P and project file name
- 
-                         Project_File :=
-                           new String'(Argv (Argv'First + 2 .. Argv'Last));
-                      end if;
- 
-                      Remove_Switch (Arg_Num);
- 
-                   --  -Xexternal=value Specify an external reference to be
-                   --                   used in project files
- 
-                   elsif Argv'Length >= 5
-                     and then Argv (Argv'First + 1) = 'X'
-                   then
-                      if not Check (Root_Environment.External,
-                                     Argv (Argv'First + 2 .. Argv'Last))
-                      then
-                         Fail
-                           (Argv.all & " is not a valid external assignment.");
-                      end if;
- 
-                      Remove_Switch (Arg_Num);
- 
-                   --  --unchecked-shared-lib-imports
- 
-                   elsif Argv.all = "--unchecked-shared-lib-imports" then
-                      Opt.Unchecked_Shared_Lib_Imports := True;
-                      Remove_Switch (Arg_Num);
- 
-                   --  gnat list -U
- 
-                   elsif
-                     The_Command = List
-                     and then Argv'Length = 2
-                     and then Argv (2) = 'U'
-                   then
-                      All_Projects := True;
-                      Remove_Switch (Arg_Num);
- 
-                   else
-                      Arg_Num := Arg_Num + 1;
-                   end if;
- 
-                else
-                   Arg_Num := Arg_Num + 1;
-                end if;
-             end loop;
-          end Inspect_Switches;
-       end if;
- 
-       --  Add the default project search directories now, after the directories
-       --  that have been specified by switches -aP<dir>.
- 
-       Prj.Env.Initialize_Default_Project_Path
-         (Root_Environment.Project_Path,
-          Target_Name => Sdefault.Target_Name.all);
- 
-       --  If there is a project file specified, parse it, get the switches
-       --  for the tool and setup PATH environment variables.
- 
-       if Project_File /= null then
-          Prj.Pars.Set_Verbosity (To => Current_Verbosity);
- 
-          Prj.Pars.Parse
-            (Project           => Project,
-             In_Tree           => Project_Tree,
-             In_Node_Tree      => Project_Node_Tree,
-             Project_File_Name => Project_File.all,
-             Env               => Root_Environment,
-             Packages_To_Check => Packages_To_Check);
- 
-          --  Prj.Pars.Parse calls Set_Standard_Output, reset to stderr
- 
-          Set_Standard_Error;
- 
-          if Project = Prj.No_Project then
-             Fail ("""" & Project_File.all & """ processing failed");
- 
-          elsif Project.Qualifier = Aggregate then
-             Fail ("aggregate projects are not supported");
- 
-          elsif Aggregate_Libraries_In (Project_Tree) then
-             Fail ("aggregate library projects are not supported");
-          end if;
- 
-          --  Check if a package with the name of the tool is in the project
-          --  file and if there is one, get the switches, if any, and scan them.
- 
-          declare
-             Pkg : constant Prj.Package_Id :=
-                     Prj.Util.Value_Of
-                       (Name        => Tool_Package_Name,
-                        In_Packages => Project.Decl.Packages,
-                        Shared      => Project_Tree.Shared);
- 
-             Element : Package_Element;
- 
-             Switches_Array : Array_Element_Id;
- 
-             The_Switches : Prj.Variable_Value;
-             Current      : Prj.String_List_Id;
-             The_String   : String_Element;
- 
-             Main : String_Access := null;
- 
-          begin
-             if Pkg /= No_Package then
-                Element := Project_Tree.Shared.Packages.Table (Pkg);
- 
-                --  Package Gnatls has a single attribute Switches, that is not
-                --  an associative array.
- 
-                if The_Command = List then
-                   The_Switches :=
-                     Prj.Util.Value_Of
-                     (Variable_Name => Snames.Name_Switches,
-                      In_Variables  => Element.Decl.Attributes,
-                      Shared        => Project_Tree.Shared);
- 
-                --  Packages Binder (for gnatbind), Cross_Reference (for
-                --  gnatxref), Linker (for gnatlink), Finder (for gnatfind),
-                --  have an attributed Switches, an associative array, indexed
-                --  by the name of the file.
- 
-                --  They also have an attribute Default_Switches, indexed by the
-                --  name of the programming language.
- 
-                else
-                   --  First check if there is a single main
- 
-                   for J in 1 .. Last_Switches.Last loop
-                      if Last_Switches.Table (J) (1) /= '-' then
-                         if Main = null then
-                            Main := Last_Switches.Table (J);
-                         else
-                            Main := null;
-                            exit;
-                         end if;
-                      end if;
-                   end loop;
- 
-                   if Main /= null then
-                      Switches_Array :=
-                        Prj.Util.Value_Of
-                          (Name      => Name_Switches,
-                           In_Arrays => Element.Decl.Arrays,
-                           Shared    => Project_Tree.Shared);
-                      Name_Len := 0;
- 
-                      --  If the single main has been specified as an absolute
-                      --  path, use only the simple file name. If the absolute
-                      --  path is incorrect, an error will be reported by the
-                      --  underlying tool and it does not make a difference
-                      --  what switches are used.
- 
-                      if Is_Absolute_Path (Main.all) then
-                         Add_Str_To_Name_Buffer (File_Name (Main.all));
-                      else
-                         Add_Str_To_Name_Buffer (Main.all);
-                      end if;
- 
-                      The_Switches := Prj.Util.Value_Of
-                        (Index     => Name_Find,
-                         Src_Index => 0,
-                         In_Array  => Switches_Array,
-                         Shared    => Project_Tree.Shared);
-                   end if;
- 
-                   if The_Switches.Kind = Prj.Undefined then
-                      Switches_Array :=
-                        Prj.Util.Value_Of
-                          (Name      => Name_Default_Switches,
-                           In_Arrays => Element.Decl.Arrays,
-                           Shared    => Project_Tree.Shared);
-                      The_Switches := Prj.Util.Value_Of
-                        (Index     => Name_Ada,
-                         Src_Index => 0,
-                         In_Array  => Switches_Array,
-                         Shared    => Project_Tree.Shared);
-                   end if;
-                end if;
- 
-                --  If there are switches specified in the package of the
-                --  project file corresponding to the tool, scan them.
- 
-                case The_Switches.Kind is
-                   when Prj.Undefined =>
-                      null;
- 
-                   when Prj.Single =>
-                      declare
-                         Switch : constant String :=
-                                    Get_Name_String (The_Switches.Value);
-                      begin
-                         if Switch'Length > 0 then
-                            First_Switches.Increment_Last;
-                            First_Switches.Table (First_Switches.Last) :=
-                              new String'(Switch);
-                         end if;
-                      end;
- 
-                   when Prj.List =>
-                      Current := The_Switches.Values;
-                      while Current /= Prj.Nil_String loop
-                         The_String := Project_Tree.Shared.String_Elements.
-                                         Table (Current);
- 
-                         declare
-                            Switch : constant String :=
-                                       Get_Name_String (The_String.Value);
-                         begin
-                            if Switch'Length > 0 then
-                               First_Switches.Increment_Last;
-                               First_Switches.Table (First_Switches.Last) :=
-                                 new String'(Switch);
-                            end if;
-                         end;
- 
-                         Current := The_String.Next;
-                      end loop;
-                end case;
-             end if;
-          end;
- 
-          if The_Command = Bind or else The_Command = Link then
-             if Project.Object_Directory.Name = No_Path then
-                Fail ("project " & Get_Name_String (Project.Display_Name)
-                      & " has no object directory");
-             end if;
- 
-             Change_Dir (Get_Name_String (Project.Object_Directory.Name));
-          end if;
- 
-          --  Set up the env vars for project path files
- 
-          Prj.Env.Set_Ada_Paths
-            (Project, Project_Tree, Including_Libraries => True);
- 
-          if The_Command = List then
-             Check_Files;
-          end if;
-       end if;
- 
        --  Gather all the arguments and invoke the executable
  
        declare
--- 593,598 ----
*************** begin
*** 1220,1229 ****
  
           My_Exit_Status := Exit_Status (Spawn (Exec_Path.all, The_Args));
  
-          if not Keep_Temporary_Files then
-             Delete_All_Temp_Files (Project_Tree.Shared);
-          end if;
- 
           Set_Exit_Status (My_Exit_Status);
        end;
     end;
--- 623,628 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/gnatcmd.ads gcc-8.1.0/gcc/ada/gnatcmd.ads
*** gcc-7.3.0/gcc/ada/gnatcmd.ads	Fri Aug  1 09:32:00 2014
--- gcc-8.1.0/gcc/ada/gnatcmd.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1996-2014, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or 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-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/gnatdll.adb gcc-8.1.0/gcc/ada/gnatdll.adb
*** gcc-7.3.0/gcc/ada/gnatdll.adb	Fri Jan 13 10:19:19 2017
--- gcc-8.1.0/gcc/ada/gnatdll.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or 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-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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 ****
  
  with Gnatvsn;
  with MDLL.Fil; use MDLL.Fil;
! with MDLL.Utl; use MDLL.Utl;
  with Switch;   use Switch;
  
  with Ada.Text_IO;           use Ada.Text_IO;
--- 28,34 ----
  
  with Gnatvsn;
  with MDLL.Fil; use MDLL.Fil;
! with MDLL.Utl;
  with Switch;   use Switch;
  
  with Ada.Text_IO;           use Ada.Text_IO;
*************** with GNAT.Command_Line; use GNAT.Command
*** 41,48 ****
  
  procedure Gnatdll is
  
-    use type GNAT.OS_Lib.Argument_List;
- 
     procedure Syntax;
     --  Print out usage
  
--- 41,46 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/gnatfind.adb gcc-8.1.0/gcc/ada/gnatfind.adb
*** gcc-7.3.0/gcc/ada/gnatfind.adb	Thu Jul 17 06:47:15 2014
--- gcc-8.1.0/gcc/ada/gnatfind.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1998-2014, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or 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-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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;
*** 27,33 ****
  with Osint;    use Osint;
  with Switch;   use Switch;
  with Types;    use Types;
! with Xr_Tabls; use Xr_Tabls;
  with Xref_Lib; use Xref_Lib;
  
  with Ada.Command_Line;  use Ada.Command_Line;
--- 27,33 ----
  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;
*************** procedure Gnatfind is
*** 322,328 ****
        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 default project file");
        Put_Line ("   -r        Find all references (default to find declaration"
                  & " only)");
        Put_Line ("   -s        Print source line");
--- 322,328 ----
        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");
diff -Nrcpad gcc-7.3.0/gcc/ada/gnatkr.adb gcc-8.1.0/gcc/ada/gnatkr.adb
*** gcc-7.3.0/gcc/ada/gnatkr.adb	Tue Sep 10 15:17:44 2013
--- gcc-8.1.0/gcc/ada/gnatkr.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2013, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/gnatkr.ads gcc-8.1.0/gcc/ada/gnatkr.ads
*** gcc-7.3.0/gcc/ada/gnatkr.ads	Mon Sep 10 12:47:10 2007
--- gcc-8.1.0/gcc/ada/gnatkr.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2007, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/gnatlink.adb gcc-8.1.0/gcc/ada/gnatlink.adb
*** gcc-7.3.0/gcc/ada/gnatlink.adb	Mon May  2 09:11:03 2016
--- gcc-8.1.0/gcc/ada/gnatlink.adb	Fri Mar 23 23:20:59 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1996-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or 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-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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,43 ****
  with Switch;   use Switch;
  with System;   use System;
  with Table;
! with Targparm; use Targparm;
  with Types;
  
  with Ada.Command_Line; use Ada.Command_Line;
--- 37,43 ----
  with Switch;   use Switch;
  with System;   use System;
  with Table;
! with Targparm;
  with Types;
  
  with Ada.Command_Line; use Ada.Command_Line;
*************** procedure Gnatlink is
*** 425,460 ****
  
                 elsif Arg'Length = 2 then
                    case Arg (2) is
-                      when 'b' =>
-                         Linker_Options.Increment_Last;
-                         Linker_Options.Table (Linker_Options.Last) :=
-                           new String'(Arg);
- 
-                         Binder_Options.Increment_Last;
-                         Binder_Options.Table (Binder_Options.Last) :=
-                           Linker_Options.Table (Linker_Options.Last);
- 
-                         Next_Arg := Next_Arg + 1;
- 
-                         if Next_Arg > Argument_Count then
-                            Exit_With_Error ("Missing argument for -b");
-                         end if;
- 
-                         Get_Machine_Name : declare
-                            Name_Arg : constant String_Access :=
-                                         new String'(Argument (Next_Arg));
- 
-                         begin
-                            Linker_Options.Increment_Last;
-                            Linker_Options.Table (Linker_Options.Last) :=
-                              Name_Arg;
- 
-                            Binder_Options.Increment_Last;
-                            Binder_Options.Table (Binder_Options.Last) :=
-                              Name_Arg;
- 
-                         end Get_Machine_Name;
- 
                       when 'f' =>
                          if Object_List_File_Supported then
                             Object_List_File_Required := True;
--- 425,430 ----
*************** procedure Gnatlink is
*** 529,543 ****
                       Exit_With_Error ("Missing argument for --LINK=");
                    end if;
  
!                   Linker_Path :=
!                     System.OS_Lib.Locate_Exec_On_Path (Arg (8 .. Arg'Last));
  
!                   if Linker_Path = null then
!                      Exit_With_Error
!                        ("Could not locate linker: " & Arg (8 .. Arg'Last));
                    end if;
  
-                elsif Arg'Length > 6 and then Arg (1 .. 6) = "--GCC=" then
                    declare
                       Program_Args : constant Argument_List_Access :=
                                        Argument_String_To_List
--- 499,538 ----
                       Exit_With_Error ("Missing argument for --LINK=");
                    end if;
  
!                   declare
!                      L_Args : constant Argument_List_Access :=
!                                Argument_String_To_List (Arg (8 .. Arg'Last));
!                   begin
!                      --  The linker program is the first argument
  
!                      Linker_Path :=
!                       System.OS_Lib.Locate_Exec_On_Path (L_Args.all (1).all);
! 
!                      if Linker_Path = null then
!                         Exit_With_Error
!                           ("Could not locate linker: " & L_Args.all (1).all);
!                      end if;
! 
!                      --  The other arguments are passed as-is to the linker
!                      --  and override those coming from --GCC= if any.
! 
!                      if L_Args.all'Last >= 2 then
!                         Gcc_Linker_Options.Set_Last (0);
!                      end if;
! 
!                      for J in 2 .. L_Args.all'Last loop
!                         Gcc_Linker_Options.Increment_Last;
!                         Gcc_Linker_Options.Table
!                           (Gcc_Linker_Options.Last) :=
!                                              new String'(L_Args.all (J).all);
!                      end loop;
!                   end;
! 
!                elsif Arg'Length >= 6 and then Arg (1 .. 6) = "--GCC=" then
!                   if Arg'Length = 6 then
!                      Exit_With_Error ("Missing argument for --GCC=");
                    end if;
  
                    declare
                       Program_Args : constant Argument_List_Access :=
                                        Argument_String_To_List
*************** procedure Gnatlink is
*** 1405,1411 ****
        Write_Line ("  -v -v Very verbose mode");
        Write_Eol;
        Write_Line ("  -o nam     Use 'nam' as the name of the executable");
-       Write_Line ("  -b target  Compile the binder source to run on target");
        Write_Line ("  -Bdir      Load compiler executables from dir");
  
        if Is_Supported (Map_File) then
--- 1400,1405 ----
*************** procedure Gnatlink is
*** 1413,1420 ****
           Write_Line ("  -M         Create map file mainprog.map");
        end if;
  
!       Write_Line ("  --GCC=comp Use comp as the compiler");
!       Write_Line ("  --LINK=nam Use 'nam' for the linking rather than 'gcc'");
        Write_Eol;
        Write_Line ("  [non-Ada-objects]  list of non Ada object files");
        Write_Line ("  [linker-options]   other options for the linker");
--- 1407,1414 ----
           Write_Line ("  -M         Create map file mainprog.map");
        end if;
  
!       Write_Line ("  --GCC=comp Use 'comp' as the compiler rather than 'gcc'");
!       Write_Line ("  --LINK=lnk Use 'lnk' as the linker rather than 'gcc'");
        Write_Eol;
        Write_Line ("  [non-Ada-objects]  list of non Ada object files");
        Write_Line ("  [linker-options]   other options for the linker");
diff -Nrcpad gcc-7.3.0/gcc/ada/gnatlink.ads gcc-8.1.0/gcc/ada/gnatlink.ads
*** gcc-7.3.0/gcc/ada/gnatlink.ads	Mon Sep 10 12:47:10 2007
--- gcc-8.1.0/gcc/ada/gnatlink.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1996-2007, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or 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-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/gnatls.adb gcc-8.1.0/gcc/ada/gnatls.adb
*** gcc-7.3.0/gcc/ada/gnatls.adb	Tue Jan  6 09:14:09 2015
--- gcc-8.1.0/gcc/ada/gnatls.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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,42 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
  with ALI;         use ALI;
  with ALI.Util;    use ALI.Util;
  with Binderr;     use Binderr;
  with Butil;       use Butil;
! with Csets;       use Csets;
  with Fname;       use Fname;
  with Gnatvsn;     use Gnatvsn;
! with GNAT.OS_Lib; use GNAT.OS_Lib;
  with Namet;       use Namet;
  with Opt;         use Opt;
  with Osint;       use Osint;
  with Osint.L;     use Osint.L;
  with Output;      use Output;
- with Prj.Env;     use Prj.Env;
  with Rident;      use Rident;
  with Sdefault;
  with Snames;
--- 23,43 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
+ pragma Ada_2012;
+ 
  with ALI;         use ALI;
  with ALI.Util;    use ALI.Util;
  with Binderr;     use Binderr;
  with Butil;       use Butil;
! with Csets;
  with Fname;       use Fname;
  with Gnatvsn;     use Gnatvsn;
! with Make_Util;   use Make_Util;
  with Namet;       use Namet;
  with Opt;         use Opt;
  with Osint;       use Osint;
  with Osint.L;     use Osint.L;
  with Output;      use Output;
  with Rident;      use Rident;
  with Sdefault;
  with Snames;
*************** with Stringt;
*** 44,53 ****
  with Switch;      use Switch;
  with Types;       use Types;
  
! with Ada.Command_Line; use Ada.Command_Line;
! 
! with GNAT.Command_Line; use GNAT.Command_Line;
! with GNAT.Case_Util;    use GNAT.Case_Util;
  
  procedure Gnatls is
     pragma Ident (Gnat_Static_Version_String);
--- 45,54 ----
  with Switch;      use Switch;
  with Types;       use Types;
  
! with GNAT.Case_Util;            use GNAT.Case_Util;
! with GNAT.Command_Line;         use GNAT.Command_Line;
! with GNAT.Directory_Operations; use GNAT.Directory_Operations;
! with GNAT.OS_Lib;               use GNAT.OS_Lib;
  
  procedure Gnatls is
     pragma Ident (Gnat_Static_Version_String);
*************** procedure Gnatls is
*** 59,65 ****
     --  Label displayed in verbose mode before the directories in the project
     --  search path. Do not modify without checking NOTE above.
  
!    Prj_Path : Prj.Env.Project_Search_Path;
  
     Max_Column : constant := 80;
  
--- 60,66 ----
     --  Label displayed in verbose mode before the directories in the project
     --  search path. Do not modify without checking NOTE above.
  
!    Prj_Path : String_Access;
  
     Max_Column : constant := 80;
  
*************** procedure Gnatls is
*** 212,217 ****
--- 213,258 ----
  
     end GNATDIST;
  
+    ------------------------------
+    -- Support for project path --
+    ------------------------------
+ 
+    package Prj_Env is
+ 
+       procedure Initialize_Default_Project_Path
+         (Self         : in out String_Access;
+          Target_Name  : String;
+          Runtime_Name : String := "");
+       --  Initialize Self. It will then contain the default project path on
+       --  the given target and runtime (including directories specified by the
+       --  environment variables GPR_PROJECT_PATH_FILE, GPR_PROJECT_PATH and
+       --  ADA_PROJECT_PATH). If one of the directory or Target_Name is "-",
+       --  then the path contains only those directories specified by the
+       --  environment variables (except "-"). This does nothing if Self has
+       --  already been initialized.
+ 
+       procedure Add_Directories
+         (Self    : in out String_Access;
+          Path    : String;
+          Prepend : Boolean := False);
+       --  Add one or more directories to the path. Directories added with this
+       --  procedure are added in order after the current directory and before
+       --  the path given by the environment variable GPR_PROJECT_PATH. A value
+       --  of "-" will remove the default project directory from the project
+       --  path.
+       --
+       --  Calls to this subprogram must be performed before the first call to
+       --  Find_Project below, or PATH will be added at the end of the search
+       --  path.
+ 
+       function Get_Runtime_Path
+         (Self : String_Access;
+          Path : String) return String_Access;
+       --  Compute the full path for the project-based runtime name.
+       --  Path is simply searched on the project path.
+ 
+    end Prj_Env;
+ 
     -----------------
     -- Add_Lib_Dir --
     -----------------
*************** procedure Gnatls is
*** 1187,1192 ****
--- 1228,1645 ----
        end if;
     end Output_Unit;
  
+    package body Prj_Env is
+ 
+       Uninitialized_Prefix : constant String := '#' & Path_Separator;
+       --  Prefix to indicate that the project path has not been initialized
+       --  yet. Must be two characters long.
+ 
+       ---------------------
+       -- Add_Directories --
+       ---------------------
+ 
+       procedure Add_Directories
+         (Self    : in out String_Access;
+          Path    : String;
+          Prepend : Boolean := False)
+       is
+          Tmp : String_Access;
+ 
+       begin
+          if Self = null then
+             Self := new String'(Uninitialized_Prefix & Path);
+          else
+             Tmp := Self;
+             if Prepend then
+                Self := new String'(Path & Path_Separator & Tmp.all);
+             else
+                Self := new String'(Tmp.all & Path_Separator & Path);
+             end if;
+             Free (Tmp);
+          end if;
+       end Add_Directories;
+ 
+       -------------------------------------
+       -- Initialize_Default_Project_Path --
+       -------------------------------------
+ 
+       procedure Initialize_Default_Project_Path
+         (Self         : in out String_Access;
+          Target_Name  : String;
+          Runtime_Name : String := "")
+       is
+          Add_Default_Dir : Boolean := Target_Name /= "-";
+          First           : Positive;
+          Last            : Positive;
+ 
+          Ada_Project_Path      : constant String := "ADA_PROJECT_PATH";
+          Gpr_Project_Path      : constant String := "GPR_PROJECT_PATH";
+          Gpr_Project_Path_File : constant String := "GPR_PROJECT_PATH_FILE";
+          --  Names of alternate env. variables that contain path name(s) of
+          --  directories where project files may reside. They are taken into
+          --  account in this order: GPR_PROJECT_PATH_FILE, GPR_PROJECT_PATH,
+          --  ADA_PROJECT_PATH.
+ 
+          Gpr_Prj_Path_File : String_Access;
+          Gpr_Prj_Path      : String_Access;
+          Ada_Prj_Path      : String_Access;
+          --  The path name(s) of directories where project files may reside.
+          --  May be empty.
+ 
+          Prefix  : String_Ptr;
+          Runtime : String_Ptr;
+ 
+          procedure Add_Target (Suffix : String);
+          --  Add :<prefix>/<target>/Suffix to the project path
+ 
+          FD  : File_Descriptor;
+          Len : Integer;
+ 
+          ----------------
+          -- Add_Target --
+          ----------------
+ 
+          procedure Add_Target (Suffix : String) is
+             Extra_Sep : constant String :=
+                (if Target_Name (Target_Name'Last) = '/' then
+                   ""
+                 else
+                   (1 => Directory_Separator));
+             --  Note: Target_Name has a trailing / when it comes from Sdefault
+ 
+          begin
+             Add_Str_To_Name_Buffer
+               (Path_Separator & Prefix.all & Target_Name & Extra_Sep & Suffix);
+          end Add_Target;
+ 
+       --  Start of processing for Initialize_Default_Project_Path
+ 
+       begin
+          if Self /= null
+            and then (Self'Length = 0
+                       or else Self (Self'First) /= '#')
+          then
+             return;
+          end if;
+ 
+          --  The current directory is always first in the search path. Since
+          --  the Project_Path currently starts with '#:' as a sign that it is
+          --  not initialized, we simply replace '#' with '.'
+ 
+          if Self = null then
+             Self := new String'('.' & Path_Separator);
+          else
+             Self (Self'First) := '.';
+          end if;
+ 
+          --  Then the reset of the project path (if any) currently contains the
+          --  directories added through Add_Search_Project_Directory
+ 
+          --  If environment variables are defined and not empty, add their
+          --  content
+ 
+          Gpr_Prj_Path_File := Getenv (Gpr_Project_Path_File);
+          Gpr_Prj_Path      := Getenv (Gpr_Project_Path);
+          Ada_Prj_Path      := Getenv (Ada_Project_Path);
+ 
+          if Gpr_Prj_Path_File.all /= "" then
+             FD := Open_Read (Gpr_Prj_Path_File.all, GNAT.OS_Lib.Text);
+ 
+             if FD = Invalid_FD then
+                Osint.Fail
+                  ("warning: could not read project path file """
+                   & Gpr_Prj_Path_File.all & """");
+             end if;
+ 
+             Len := Integer (File_Length (FD));
+ 
+             declare
+                Buffer : String (1 .. Len);
+                Index  : Positive := 1;
+                Last   : Positive;
+                Tmp    : String_Access;
+ 
+             begin
+                --  Read the file
+ 
+                Len := Read (FD, Buffer (1)'Address, Len);
+                Close (FD);
+ 
+                --  Scan the file line by line
+ 
+                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;
+ 
+                   --  Ignore empty lines
+ 
+                   if Last > Index then
+                      Tmp := Self;
+                      Self :=
+                        new String'
+                          (Tmp.all & Path_Separator &
+                           Buffer (Index .. Last - 1));
+                      Free (Tmp);
+                   end if;
+ 
+                   --  Find the beginning of the next line
+ 
+                   Index := Last;
+                   while Buffer (Index) = ASCII.CR or else
+                         Buffer (Index) = ASCII.LF
+                   loop
+                      Index := Index + 1;
+                   end loop;
+                end loop;
+             end;
+ 
+          end if;
+ 
+          if Gpr_Prj_Path.all /= "" then
+             Add_Directories (Self, Gpr_Prj_Path.all);
+          end if;
+ 
+          Free (Gpr_Prj_Path);
+ 
+          if Ada_Prj_Path.all /= "" then
+             Add_Directories (Self, Ada_Prj_Path.all);
+          end if;
+ 
+          Free (Ada_Prj_Path);
+ 
+          --  Copy to Name_Buffer, since we will need to manipulate the path
+ 
+          Name_Len := Self'Length;
+          Name_Buffer (1 .. Name_Len) := Self.all;
+ 
+          --  Scan the directory path to see if "-" is one of the directories.
+          --  Remove each occurrence of "-" and set Add_Default_Dir to False.
+          --  Also resolve relative paths and symbolic links.
+ 
+          First := 3;
+          loop
+             while First <= Name_Len
+               and then (Name_Buffer (First) = Path_Separator)
+             loop
+                First := First + 1;
+             end loop;
+ 
+             exit when First > Name_Len;
+ 
+             Last := First;
+ 
+             while Last < Name_Len
+               and then Name_Buffer (Last + 1) /= Path_Separator
+             loop
+                Last := Last + 1;
+             end loop;
+ 
+             --  If the directory is "-", set Add_Default_Dir to False and
+             --  remove from path.
+ 
+             if Name_Buffer (First .. Last) = "-" then
+                Add_Default_Dir := False;
+ 
+                for J in Last + 1 .. Name_Len loop
+                   Name_Buffer (J - 2) := Name_Buffer (J);
+                end loop;
+ 
+                Name_Len := Name_Len - 2;
+ 
+                --  After removing the '-', go back one character to get the
+                --  next directory correctly.
+ 
+                Last := Last - 1;
+ 
+             else
+                declare
+                   New_Dir : constant String :=
+                               Normalize_Pathname
+                                 (Name_Buffer (First .. Last),
+                                  Resolve_Links => Opt.Follow_Links_For_Dirs);
+                   New_Len  : Positive;
+                   New_Last : Positive;
+ 
+                begin
+                   --  If the absolute path was resolved and is different from
+                   --  the original, replace original with the resolved path.
+ 
+                   if New_Dir /= Name_Buffer (First .. Last)
+                     and then New_Dir'Length /= 0
+                   then
+                      New_Len := Name_Len + New_Dir'Length - (Last - First + 1);
+                      New_Last := First + New_Dir'Length - 1;
+                      Name_Buffer (New_Last + 1 .. New_Len) :=
+                        Name_Buffer (Last + 1 .. Name_Len);
+                      Name_Buffer (First .. New_Last) := New_Dir;
+                      Name_Len := New_Len;
+                      Last := New_Last;
+                   end if;
+                end;
+             end if;
+ 
+             First := Last + 1;
+          end loop;
+ 
+          Free (Self);
+ 
+          --  Set the initial value of Current_Project_Path
+ 
+          if Add_Default_Dir then
+             if Sdefault.Search_Dir_Prefix = null then
+ 
+                --  gprbuild case
+ 
+                Prefix := new String'(Executable_Prefix_Path);
+ 
+             else
+                Prefix := new String'(Sdefault.Search_Dir_Prefix.all
+                                      & ".." & Dir_Separator
+                                      & ".." & Dir_Separator
+                                      & ".." & Dir_Separator
+                                      & ".." & Dir_Separator);
+             end if;
+ 
+             if Prefix.all /= "" then
+                if Target_Name /= "" then
+ 
+                   if Runtime_Name /= "" then
+                      if Base_Name (Runtime_Name) = Runtime_Name then
+ 
+                         --  $prefix/$target/$runtime/lib/gnat
+ 
+                         Add_Target
+                           (Runtime_Name & Directory_Separator &
+                            "lib" & Directory_Separator & "gnat");
+ 
+                         --  $prefix/$target/$runtime/share/gpr
+ 
+                         Add_Target
+                           (Runtime_Name & Directory_Separator &
+                              "share" & Directory_Separator & "gpr");
+ 
+                      else
+                         Runtime :=
+                           new String'(Normalize_Pathname (Runtime_Name));
+ 
+                         --  $runtime_dir/lib/gnat
+ 
+                         Add_Str_To_Name_Buffer
+                           (Path_Separator & Runtime.all & Directory_Separator &
+                            "lib" & Directory_Separator & "gnat");
+ 
+                         --  $runtime_dir/share/gpr
+ 
+                         Add_Str_To_Name_Buffer
+                           (Path_Separator & Runtime.all & Directory_Separator &
+                            "share" & Directory_Separator & "gpr");
+                      end if;
+                   end if;
+ 
+                   --  $prefix/$target/lib/gnat
+ 
+                   Add_Target
+                     ("lib" & Directory_Separator & "gnat");
+ 
+                   --  $prefix/$target/share/gpr
+ 
+                   Add_Target
+                     ("share" & Directory_Separator & "gpr");
+                end if;
+ 
+                --  $prefix/share/gpr
+ 
+                Add_Str_To_Name_Buffer
+                  (Path_Separator & Prefix.all & "share"
+                   & Directory_Separator & "gpr");
+ 
+                --  $prefix/lib/gnat
+ 
+                Add_Str_To_Name_Buffer
+                  (Path_Separator & Prefix.all & "lib"
+                   & Directory_Separator & "gnat");
+             end if;
+ 
+             Free (Prefix);
+          end if;
+ 
+          Self := new String'(Name_Buffer (1 .. Name_Len));
+       end Initialize_Default_Project_Path;
+ 
+       -----------------------
+       -- Get_Runtime_Path --
+       -----------------------
+ 
+       function Get_Runtime_Path
+         (Self : String_Access;
+          Path : String) return String_Access
+       is
+          First : Natural;
+          Last  : Natural;
+ 
+       begin
+ 
+          if Is_Absolute_Path (Path) then
+             if Is_Directory (Path) then
+                return new String'(Path);
+             else
+                return null;
+             end if;
+ 
+          else
+             --  Because we do not want to resolve symbolic links, we cannot
+             --  use Locate_Regular_File. Instead we try each possible path
+             --  successively.
+ 
+             First := Self'First;
+             while First <= Self'Last loop
+                while First <= Self'Last
+                  and then Self (First) = Path_Separator
+                loop
+                   First := First + 1;
+                end loop;
+ 
+                exit when First > Self'Last;
+ 
+                Last := First;
+                while Last < Self'Last
+                  and then Self (Last + 1) /= Path_Separator
+                loop
+                   Last := Last + 1;
+                end loop;
+ 
+                Name_Len := 0;
+ 
+                if not Is_Absolute_Path (Self (First .. Last)) then
+                   Add_Str_To_Name_Buffer (Get_Current_Dir);  -- ??? System call
+                   Add_Char_To_Name_Buffer (Directory_Separator);
+                end if;
+ 
+                Add_Str_To_Name_Buffer (Self (First .. Last));
+                Add_Char_To_Name_Buffer (Directory_Separator);
+                Add_Str_To_Name_Buffer (Path);
+ 
+                if Is_Directory (Name_Buffer (1 .. Name_Len)) then
+                   return new String'(Name_Buffer (1 .. Name_Len));
+                end if;
+ 
+                First := Last + 1;
+             end loop;
+          end if;
+ 
+          return null;
+       end Get_Runtime_Path;
+ 
+    end Prj_Env;
+ 
     -----------------
     -- Reset_Print --
     -----------------
*************** procedure Gnatls is
*** 1225,1231 ****
        if Src_Path /= null and then Lib_Path /= null then
           Add_Search_Dirs (Src_Path, Include);
           Add_Search_Dirs (Lib_Path, Objects);
!          Initialize_Default_Project_Path
             (Prj_Path,
              Target_Name  => Sdefault.Target_Name.all,
              Runtime_Name => Name);
--- 1678,1684 ----
        if Src_Path /= null and then Lib_Path /= null then
           Add_Search_Dirs (Src_Path, Include);
           Add_Search_Dirs (Lib_Path, Objects);
!          Prj_Env.Initialize_Default_Project_Path
             (Prj_Path,
              Target_Name  => Sdefault.Target_Name.all,
              Runtime_Name => Name);
*************** procedure Gnatls is
*** 1240,1251 ****
  
        --  Try to find the RTS on the project path. First setup the project path
  
!       Initialize_Default_Project_Path
          (Prj_Path,
           Target_Name  => Sdefault.Target_Name.all,
           Runtime_Name => Name);
  
!       Rts_Full_Path := Get_Runtime_Path (Prj_Path, Name);
  
        if Rts_Full_Path /= null then
  
--- 1693,1704 ----
  
        --  Try to find the RTS on the project path. First setup the project path
  
!       Prj_Env.Initialize_Default_Project_Path
          (Prj_Path,
           Target_Name  => Sdefault.Target_Name.all,
           Runtime_Name => Name);
  
!       Rts_Full_Path := Prj_Env.Get_Runtime_Path (Prj_Path, Name);
  
        if Rts_Full_Path /= null then
  
*************** procedure Gnatls is
*** 1330,1336 ****
           --  Processing for -aP<dir>
  
           elsif Argv'Length > 3 and then Argv (1 .. 3) = "-aP" then
!             Add_Directories (Prj_Path, Argv (4 .. Argv'Last));
  
           --  Processing for -nostdinc
  
--- 1783,1789 ----
           --  Processing for -aP<dir>
  
           elsif Argv'Length > 3 and then Argv (1 .. 3) = "-aP" then
!             Prj_Env.Add_Directories (Prj_Path, Argv (4 .. Argv'Last));
  
           --  Processing for -nostdinc
  
*************** begin
*** 1644,1649 ****
--- 2097,2103 ----
  
     if RTS_Specified = null then
        declare
+          FD   : File_Descriptor;
           Text : Source_Buffer_Ptr;
           Hi   : Source_Ptr;
  
*************** begin
*** 1651,1659 ****
           Name_Buffer (1 .. 10) := "system.ads";
           Name_Len := 10;
  
!          Read_Source_File (Name_Find, Lo => 0, Hi => Hi, Src => Text);
  
!          if Text = null then
              No_Runtime := True;
           end if;
        end;
--- 2105,2113 ----
           Name_Buffer (1 .. 10) := "system.ads";
           Name_Len := 10;
  
!          Read_Source_File (Name_Find, 0, Hi, Text, FD);
  
!          if Null_Source_Buffer_Ptr (Text) then
              No_Runtime := True;
           end if;
        end;
*************** begin
*** 1719,1754 ****
        Write_Str ("   <Current_Directory>");
        Write_Eol;
  
!       Initialize_Default_Project_Path
          (Prj_Path, Target_Name => Sdefault.Target_Name.all);
  
        declare
-          Project_Path : String_Access;
           First        : Natural;
           Last         : Natural;
  
        begin
-          Get_Path (Prj_Path, Project_Path);
  
!          if Project_Path.all /= "" then
!             First := Project_Path'First;
              loop
!                while First <= Project_Path'Last
!                  and then (Project_Path (First) = Path_Separator)
                 loop
                    First := First + 1;
                 end loop;
  
!                exit when First > Project_Path'Last;
  
                 Last := First;
!                while Last < Project_Path'Last
!                  and then Project_Path (Last + 1) /= Path_Separator
                 loop
                    Last := Last + 1;
                 end loop;
  
!                if First /= Last or else Project_Path (First) /= '.' then
  
                    --  If the directory is ".", skip it as it is the current
                    --  directory and it is already the first directory in the
--- 2173,2206 ----
        Write_Str ("   <Current_Directory>");
        Write_Eol;
  
!       Prj_Env.Initialize_Default_Project_Path
          (Prj_Path, Target_Name => Sdefault.Target_Name.all);
  
        declare
           First        : Natural;
           Last         : Natural;
  
        begin
  
!          if Prj_Path.all /= "" then
!             First := Prj_Path'First;
              loop
!                while First <= Prj_Path'Last
!                  and then (Prj_Path (First) = Path_Separator)
                 loop
                    First := First + 1;
                 end loop;
  
!                exit when First > Prj_Path'Last;
  
                 Last := First;
!                while Last < Prj_Path'Last
!                  and then Prj_Path (Last + 1) /= Path_Separator
                 loop
                    Last := Last + 1;
                 end loop;
  
!                if First /= Last or else Prj_Path (First) /= '.' then
  
                    --  If the directory is ".", skip it as it is the current
                    --  directory and it is already the first directory in the
*************** begin
*** 1758,1764 ****
                    Write_Str
                      (Normalize
                        (To_Host_Dir_Spec
!                         (Project_Path (First .. Last), True).all));
                    Write_Eol;
                 end if;
  
--- 2210,2216 ----
                    Write_Str
                      (Normalize
                        (To_Host_Dir_Spec
!                         (Prj_Path (First .. Last), True).all));
                    Write_Eol;
                 end if;
  
*************** begin
*** 1778,1784 ****
  
     if not More_Lib_Files then
        if not Print_Usage and then not Verbose_Mode then
!          if Argument_Count = 0 then
              Usage;
           else
              Try_Help;
--- 2230,2236 ----
  
     if not More_Lib_Files then
        if not Print_Usage and then not Verbose_Mode then
!          if Arg_Count = 1 then
              Usage;
           else
              Try_Help;
diff -Nrcpad gcc-7.3.0/gcc/ada/gnatls.ads gcc-8.1.0/gcc/ada/gnatls.ads
*** gcc-7.3.0/gcc/ada/gnatls.ads	Mon Sep 10 12:47:10 2007
--- gcc-8.1.0/gcc/ada/gnatls.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                S p e c                                   --
  --                                                                          --
! --          Copyright (C) 1992-2007, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                S p e c                                   --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/gnatmake.adb gcc-8.1.0/gcc/ada/gnatmake.adb
*** gcc-7.3.0/gcc/ada/gnatmake.adb	Mon Sep 10 12:47:10 2007
--- gcc-8.1.0/gcc/ada/gnatmake.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2007, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/gnatmake.ads gcc-8.1.0/gcc/ada/gnatmake.ads
*** gcc-7.3.0/gcc/ada/gnatmake.ads	Mon Sep 10 12:47:10 2007
--- gcc-8.1.0/gcc/ada/gnatmake.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2007, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/gnatname.adb gcc-8.1.0/gcc/ada/gnatname.adb
*** gcc-7.3.0/gcc/ada/gnatname.adb	Wed Apr 20 09:11:42 2016
--- gcc-8.1.0/gcc/ada/gnatname.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2015, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or 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-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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,47 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with Ada.Command_Line;  use Ada.Command_Line;
! with Ada.Text_IO;       use Ada.Text_IO;
  
! with GNAT.Command_Line; use GNAT.Command_Line;
  with GNAT.Dynamic_Tables;
! with GNAT.OS_Lib;       use GNAT.OS_Lib;
  
  with Opt;
! with Osint;    use Osint;
! with Output;   use Output;
! with Prj;      use Prj;
! with Prj.Makr;
! with Switch;   use Switch;
  with Table;
  
! with System.Regexp; use System.Regexp;
  
  procedure Gnatname is
  
     Subdirs_Switch : constant String := "--subdirs=";
  
     Usage_Output : Boolean := False;
--- 23,58 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with Ada.Characters.Handling;   use Ada.Characters.Handling;
! with Ada.Command_Line;          use Ada.Command_Line;
! with Ada.Text_IO;               use Ada.Text_IO;
  
! with GNAT.Command_Line;         use GNAT.Command_Line;
! with GNAT.Directory_Operations; use GNAT.Directory_Operations;
  with GNAT.Dynamic_Tables;
! with GNAT.OS_Lib;               use GNAT.OS_Lib;
  
+ with Make_Util; use Make_Util;
+ with Namet;     use Namet;
  with Opt;
! with Osint;     use Osint;
! with Output;
! with Switch;    use Switch;
  with Table;
+ with Tempdir;
+ with Types;     use Types;
  
! with System.CRTL;
! with System.Regexp;    use System.Regexp;
  
  procedure Gnatname is
  
+    pragma Warnings (Off);
+    type Matched_Type is (True, False, Excluded);
+    pragma Warnings (On);
+ 
+    Create_Project : Boolean := False;
+ 
     Subdirs_Switch : constant String := "--subdirs=";
  
     Usage_Output : Boolean := False;
*************** procedure Gnatname is
*** 56,64 ****
     Very_Verbose : Boolean := False;
     --  Set to True with -v -v
  
-    Create_Project : Boolean := False;
-    --  Set to True with a -P switch
- 
     File_Path : String_Access := new String'("gnat.adc");
     --  Path name of the file specified by -c or -P switch
  
--- 67,72 ----
*************** procedure Gnatname is
*** 66,71 ****
--- 74,96 ----
     --  Set to True by -c or -P switch.
     --  Used to detect multiple -c/-P switches.
  
+    Args : Argument_List_Access;
+    --  The list of arguments for calls to the compiler to get the unit names
+    --  and kinds (spec or body) in the Ada sources.
+ 
+    Path_Name : String_Access;
+ 
+    Path_Last : Natural;
+ 
+    Directory_Last    : Natural := 0;
+ 
+    function Dup (Fd : File_Descriptor) return File_Descriptor;
+ 
+    procedure Dup2 (Old_Fd, New_Fd : File_Descriptor);
+ 
+    Gcc      : constant String := "gcc";
+    Gcc_Path : String_Access := null;
+ 
     package Patterns is new GNAT.Dynamic_Tables
       (Table_Component_Type => String_Access,
        Table_Index_Type     => Natural,
*************** procedure Gnatname is
*** 100,105 ****
--- 125,157 ----
     --  Table to store the preprocessor switches to be used in the call
     --  to the compiler.
  
+    type Source is record
+       File_Name : Name_Id;
+       Unit_Name : Name_Id;
+       Index     : Int := 0;
+       Spec      : Boolean;
+    end record;
+ 
+    package Processed_Directories is new Table.Table
+      (Table_Component_Type => String_Access,
+       Table_Index_Type     => Natural,
+       Table_Low_Bound      => 0,
+       Table_Initial        => 10,
+       Table_Increment      => 100,
+       Table_Name           => "Prj.Makr.Processed_Directories");
+    --  The list of already processed directories for each section, to avoid
+    --  processing several times the same directory in the same section.
+ 
+    package Sources is new Table.Table
+      (Table_Component_Type => Source,
+       Table_Index_Type     => Natural,
+       Table_Low_Bound      => 0,
+       Table_Initial        => 10,
+       Table_Increment      => 100,
+       Table_Name           => "Gnatname.Sources");
+    --  The list of Ada sources found, with their unit name and kind, to be put
+    --  in the pragmas Source_File_Name in the configuration pragmas file.
+ 
     procedure Output_Version;
     --  Print name and version
  
*************** procedure Gnatname is
*** 115,120 ****
--- 167,215 ----
     procedure Get_Directories (From_File : String);
     --  Read a source directory text file
  
+    procedure Write_Eol;
+    --  Output an empty line
+ 
+    procedure Write_A_String (S : String);
+    --  Write a String to Output_FD
+ 
+    procedure Initialize
+      (File_Path         : String;
+       Preproc_Switches  : Argument_List);
+    --  Start the creation of a configuration pragmas file
+    --
+    --  File_Path is the name of the configuration pragmas file to create
+    --
+    --  Preproc_Switches is a list of switches to be used when invoking the
+    --  compiler to get the name and kind of unit of a source file.
+ 
+    type Regexp_List is array (Positive range <>) of Regexp;
+ 
+    procedure Process
+      (Directories       : Argument_List;
+       Name_Patterns     : Regexp_List;
+       Excluded_Patterns : Regexp_List;
+       Foreign_Patterns  : Regexp_List);
+    --  Look for source files in the specified directories, with the specified
+    --  patterns.
+    --
+    --  Directories is the list of source directories where to look for sources.
+    --
+    --  Name_Patterns is a potentially empty list of file name patterns to check
+    --  for Ada Sources.
+    --
+    --  Excluded_Patterns is a potentially empty list of file name patterns that
+    --  should not be checked for Ada or non Ada sources.
+    --
+    --  Foreign_Patterns is a potentially empty list of file name patterns to
+    --  check for non Ada sources.
+    --
+    --  At least one of Name_Patterns and Foreign_Patterns is not empty
+ 
+    procedure Finalize;
+    --  Write the configuration pragmas file indicated in a call to procedure
+    --  Initialize, after one or several calls to procedure Process.
+ 
     --------------------------
     -- Add_Source_Directory --
     --------------------------
*************** procedure Gnatname is
*** 125,130 ****
--- 220,245 ----
          (Arguments.Table (Arguments.Last).Directories, new String'(S));
     end Add_Source_Directory;
  
+    ---------
+    -- Dup --
+    ---------
+ 
+    function Dup  (Fd : File_Descriptor) return File_Descriptor is
+    begin
+       return File_Descriptor (System.CRTL.dup (Integer (Fd)));
+    end Dup;
+ 
+    ----------
+    -- Dup2 --
+    ----------
+ 
+    procedure Dup2 (Old_Fd, New_Fd : File_Descriptor) is
+       Fd : Integer;
+       pragma Warnings (Off, Fd);
+    begin
+       Fd := System.CRTL.dup2 (Integer (Old_Fd), Integer (New_Fd));
+    end Dup2;
+ 
     ---------------------
     -- Get_Directories --
     ---------------------
*************** procedure Gnatname is
*** 152,157 ****
--- 267,770 ----
           Fail ("cannot open source directory file """ & From_File & '"');
     end Get_Directories;
  
+    --------------
+    -- Finalize --
+    --------------
+ 
+    procedure Finalize is
+       Discard : Boolean;
+       pragma Warnings (Off, Discard);
+ 
+    begin
+       --  Delete the file if it already exists
+ 
+       Delete_File
+         (Path_Name (Directory_Last + 1 .. Path_Last),
+          Success => Discard);
+ 
+       --  Create a new one
+ 
+       if Opt.Verbose_Mode then
+          Output.Write_Str ("Creating new file """);
+          Output.Write_Str (Path_Name (Directory_Last + 1 .. Path_Last));
+          Output.Write_Line ("""");
+       end if;
+ 
+       Output_FD := Create_New_File
+         (Path_Name (Directory_Last + 1 .. Path_Last),
+          Fmode => Text);
+ 
+       --  Fails if file cannot be created
+ 
+       if Output_FD = Invalid_FD then
+          Fail_Program
+            ("cannot create new """ & Path_Name (1 .. Path_Last) & """");
+       end if;
+ 
+       --  For each Ada source, write a pragma Source_File_Name to the
+       --  configuration pragmas file.
+ 
+       for Index in 1 .. Sources.Last loop
+          if Sources.Table (Index).Unit_Name /= No_Name then
+             Write_A_String ("pragma Source_File_Name");
+             Write_Eol;
+             Write_A_String ("  (");
+             Write_A_String
+               (Get_Name_String (Sources.Table (Index).Unit_Name));
+             Write_A_String (",");
+             Write_Eol;
+ 
+             if Sources.Table (Index).Spec then
+                Write_A_String ("   Spec_File_Name => """);
+ 
+             else
+                Write_A_String ("   Body_File_Name => """);
+             end if;
+ 
+             Write_A_String
+               (Get_Name_String (Sources.Table (Index).File_Name));
+ 
+             Write_A_String ("""");
+ 
+             if Sources.Table (Index).Index /= 0 then
+                Write_A_String (", Index =>");
+                Write_A_String (Sources.Table (Index).Index'Img);
+             end if;
+ 
+             Write_A_String (");");
+             Write_Eol;
+          end if;
+       end loop;
+ 
+       Close (Output_FD);
+    end Finalize;
+ 
+    ----------------
+    -- Initialize --
+    ----------------
+ 
+    procedure Initialize
+      (File_Path         : String;
+       Preproc_Switches  : Argument_List)
+    is
+    begin
+       Sources.Set_Last (0);
+ 
+       --  Initialize the compiler switches
+ 
+       Args := new Argument_List (1 .. Preproc_Switches'Length + 6);
+       Args (1) := new String'("-c");
+       Args (2) := new String'("-gnats");
+       Args (3) := new String'("-gnatu");
+       Args (4 .. 3 + Preproc_Switches'Length) := Preproc_Switches;
+       Args (4 + Preproc_Switches'Length) := new String'("-x");
+       Args (5 + Preproc_Switches'Length) := new String'("ada");
+ 
+       --  Get the path and file names
+ 
+       Path_Name := new
+         String (1 .. File_Path'Length);
+       Path_Last := File_Path'Length;
+ 
+       if File_Names_Case_Sensitive then
+          Path_Name (1 .. Path_Last) := File_Path;
+       else
+          Path_Name (1 .. Path_Last) := To_Lower (File_Path);
+       end if;
+ 
+       --  Get the end of directory information, if any
+ 
+       for Index in reverse 1 .. Path_Last loop
+          if Path_Name (Index) = Directory_Separator then
+             Directory_Last := Index;
+             exit;
+          end if;
+       end loop;
+ 
+       --  Change the current directory to the directory of the project file,
+       --  if any directory information is specified.
+ 
+       if Directory_Last /= 0 then
+          begin
+             Change_Dir (Path_Name (1 .. Directory_Last));
+          exception
+             when Directory_Error =>
+                Fail_Program
+                  ("unknown directory """
+                   & Path_Name (1 .. Directory_Last)
+                   & """");
+          end;
+       end if;
+    end Initialize;
+ 
+    -------------
+    -- Process --
+    -------------
+ 
+    procedure Process
+      (Directories       : Argument_List;
+       Name_Patterns     : Regexp_List;
+       Excluded_Patterns : Regexp_List;
+       Foreign_Patterns  : Regexp_List)
+   is
+       procedure Process_Directory (Dir_Name : String);
+       --  Look for Ada and foreign sources in a directory, according to the
+       --  patterns.
+ 
+       -----------------------
+       -- Process_Directory --
+       -----------------------
+ 
+       procedure Process_Directory (Dir_Name : String) is
+          Matched : Matched_Type := False;
+          Str     : String (1 .. 2_000);
+          Canon   : String (1 .. 2_000);
+          Last    : Natural;
+          Dir     : Dir_Type;
+          Do_Process : Boolean := True;
+ 
+          Temp_File_Name         : String_Access := null;
+          Save_Last_Source_Index : Natural := 0;
+          File_Name_Id           : Name_Id := No_Name;
+ 
+          Current_Source : Source;
+ 
+       begin
+          --  Avoid processing the same directory more than once
+ 
+          for Index in 1 .. Processed_Directories.Last loop
+             if Processed_Directories.Table (Index).all = Dir_Name then
+                Do_Process := False;
+                exit;
+             end if;
+          end loop;
+ 
+          if Do_Process then
+             if Opt.Verbose_Mode then
+                Output.Write_Str ("Processing directory """);
+                Output.Write_Str (Dir_Name);
+                Output.Write_Line ("""");
+             end if;
+ 
+             Processed_Directories. Increment_Last;
+             Processed_Directories.Table (Processed_Directories.Last) :=
+               new String'(Dir_Name);
+ 
+             --  Get the source file names from the directory. Fails if the
+             --  directory does not exist.
+ 
+             begin
+                Open (Dir, Dir_Name);
+             exception
+                when Directory_Error =>
+                   Fail_Program ("cannot open directory """ & Dir_Name & """");
+             end;
+ 
+             --  Process each regular file in the directory
+ 
+             File_Loop : loop
+                Read (Dir, Str, Last);
+                exit File_Loop when Last = 0;
+ 
+                --  Copy the file name and put it in canonical case to match
+                --  against the patterns that have themselves already been put
+                --  in canonical case.
+ 
+                Canon (1 .. Last) := Str (1 .. Last);
+                Canonical_Case_File_Name (Canon (1 .. Last));
+ 
+                if Is_Regular_File
+                     (Dir_Name & Directory_Separator & Str (1 .. Last))
+                then
+                   Matched := True;
+ 
+                   Name_Len := Last;
+                   Name_Buffer (1 .. Name_Len) := Str (1 .. Last);
+                   File_Name_Id := Name_Find;
+ 
+                   --  First, check if the file name matches at least one of
+                   --  the excluded expressions;
+ 
+                   for Index in Excluded_Patterns'Range loop
+                      if
+                        Match (Canon (1 .. Last), Excluded_Patterns (Index))
+                      then
+                         Matched := Excluded;
+                         exit;
+                      end if;
+                   end loop;
+ 
+                   --  If it does not match any of the excluded expressions,
+                   --  check if the file name matches at least one of the
+                   --  regular expressions.
+ 
+                   if Matched = True then
+                      Matched := False;
+ 
+                      for Index in Name_Patterns'Range loop
+                         if
+                           Match
+                             (Canon (1 .. Last), Name_Patterns (Index))
+                         then
+                            Matched := True;
+                            exit;
+                         end if;
+                      end loop;
+                   end if;
+ 
+                   if Very_Verbose
+                     or else (Matched = True and then Opt.Verbose_Mode)
+                   then
+                      Output.Write_Str ("   Checking """);
+                      Output.Write_Str (Str (1 .. Last));
+                      Output.Write_Line (""": ");
+                   end if;
+ 
+                   --  If the file name matches one of the regular expressions,
+                   --  parse it to get its unit name.
+ 
+                   if Matched = True then
+                      declare
+                         FD : File_Descriptor;
+                         Success : Boolean;
+                         Saved_Output : File_Descriptor;
+                         Saved_Error  : File_Descriptor;
+                         Tmp_File     : Path_Name_Type;
+ 
+                      begin
+                         --  If we don't have the path of the compiler yet,
+                         --  get it now. The compiler name may have a prefix,
+                         --  so we get the potentially prefixed name.
+ 
+                         if Gcc_Path = null then
+                            declare
+                               Prefix_Gcc : String_Access :=
+                                              Program_Name (Gcc, "gnatname");
+                            begin
+                               Gcc_Path :=
+                                 Locate_Exec_On_Path (Prefix_Gcc.all);
+                               Free (Prefix_Gcc);
+                            end;
+ 
+                            if Gcc_Path = null then
+                               Fail_Program ("could not locate " & Gcc);
+                            end if;
+                         end if;
+ 
+                         --  Create the temporary file
+ 
+                         Tempdir.Create_Temp_File (FD, Tmp_File);
+ 
+                         if FD = Invalid_FD then
+                            Fail_Program
+                              ("could not create temporary file");
+ 
+                         else
+                            Temp_File_Name :=
+                              new String'(Get_Name_String (Tmp_File));
+                         end if;
+ 
+                         Args (Args'Last) :=
+                           new String'
+                             (Dir_Name & Directory_Separator & Str (1 .. Last));
+ 
+                         --  Save the standard output and error
+ 
+                         Saved_Output := Dup (Standout);
+                         Saved_Error  := Dup (Standerr);
+ 
+                         --  Set standard output and error to the temporary file
+ 
+                         Dup2 (FD, Standout);
+                         Dup2 (FD, Standerr);
+ 
+                         --  And spawn the compiler
+ 
+                         Spawn (Gcc_Path.all, Args.all, Success);
+ 
+                         --  Restore the standard output and error
+ 
+                         Dup2 (Saved_Output, Standout);
+                         Dup2 (Saved_Error, Standerr);
+ 
+                         --  Close the temporary file
+ 
+                         Close (FD);
+ 
+                         --  And close the saved standard output and error to
+                         --  avoid too many file descriptors.
+ 
+                         Close (Saved_Output);
+                         Close (Saved_Error);
+ 
+                         --  Now that standard output is restored, check if
+                         --  the compiler ran correctly.
+ 
+                         --  Read the lines of the temporary file:
+                         --  they should contain the kind and name of the unit.
+ 
+                         declare
+                            File      : Ada.Text_IO.File_Type;
+                            Text_Line : String (1 .. 1_000);
+                            Text_Last : Natural;
+ 
+                         begin
+                            begin
+                               Open (File, In_File, Temp_File_Name.all);
+ 
+                            exception
+                               when others =>
+                                  Fail_Program
+                                    ("could not read temporary file " &
+                                       Temp_File_Name.all);
+                            end;
+ 
+                            Save_Last_Source_Index := Sources.Last;
+ 
+                            if End_Of_File (File) then
+                               if Opt.Verbose_Mode then
+                                  if not Success then
+                                     Output.Write_Str ("      (process died) ");
+                                  end if;
+                               end if;
+ 
+                            else
+                               Line_Loop : while not End_Of_File (File) loop
+                                  Get_Line (File, Text_Line, Text_Last);
+ 
+                                  --  Find the first closing parenthesis
+ 
+                                  Char_Loop : for J in 1 .. Text_Last loop
+                                     if Text_Line (J) = ')' then
+                                        if J >= 13 and then
+                                          Text_Line (1 .. 4) = "Unit"
+                                        then
+                                           --  Add entry to Sources table
+ 
+                                           Name_Len := J - 12;
+                                           Name_Buffer (1 .. Name_Len) :=
+                                             Text_Line (6 .. J - 7);
+                                           Current_Source :=
+                                             (Unit_Name  => Name_Find,
+                                              File_Name  => File_Name_Id,
+                                              Index => 0,
+                                              Spec  => Text_Line (J - 5 .. J) =
+                                                         "(spec)");
+ 
+                                           Sources.Append (Current_Source);
+                                        end if;
+ 
+                                        exit Char_Loop;
+                                     end if;
+                                  end loop Char_Loop;
+                               end loop Line_Loop;
+                            end if;
+ 
+                            if Save_Last_Source_Index = Sources.Last then
+                               if Opt.Verbose_Mode then
+                                  Output.Write_Line ("      not a unit");
+                               end if;
+ 
+                            else
+                               if Sources.Last >
+                                    Save_Last_Source_Index + 1
+                               then
+                                  for Index in Save_Last_Source_Index + 1 ..
+                                                 Sources.Last
+                                  loop
+                                     Sources.Table (Index).Index :=
+                                       Int (Index - Save_Last_Source_Index);
+                                  end loop;
+                               end if;
+ 
+                               for Index in Save_Last_Source_Index + 1 ..
+                                              Sources.Last
+                               loop
+                                  Current_Source := Sources.Table (Index);
+ 
+                                  if Opt.Verbose_Mode then
+                                     if Current_Source.Spec then
+                                        Output.Write_Str ("      spec of ");
+ 
+                                     else
+                                        Output.Write_Str ("      body of ");
+                                     end if;
+ 
+                                     Output.Write_Line
+                                       (Get_Name_String
+                                          (Current_Source.Unit_Name));
+                                  end if;
+                               end loop;
+                            end if;
+ 
+                            Close (File);
+ 
+                            Delete_File (Temp_File_Name.all, Success);
+                         end;
+                      end;
+ 
+                   --  File name matches none of the regular expressions
+ 
+                   else
+                      --  If file is not excluded, see if this is foreign source
+ 
+                      if Matched /= Excluded then
+                         for Index in Foreign_Patterns'Range loop
+                            if Match (Canon (1 .. Last),
+                                      Foreign_Patterns (Index))
+                            then
+                               Matched := True;
+                               exit;
+                            end if;
+                         end loop;
+                      end if;
+ 
+                      if Very_Verbose then
+                         case Matched is
+                            when False =>
+                               Output.Write_Line ("no match");
+ 
+                            when Excluded =>
+                               Output.Write_Line ("excluded");
+ 
+                            when True =>
+                               Output.Write_Line ("foreign source");
+                         end case;
+                      end if;
+ 
+                      if Matched = True then
+ 
+                         --  Add source file name without unit name
+ 
+                         Name_Len := 0;
+                         Add_Str_To_Name_Buffer (Canon (1 .. Last));
+                         Sources.Append
+                           ((File_Name => Name_Find,
+                             Unit_Name => No_Name,
+                             Index     => 0,
+                             Spec      => False));
+                      end if;
+                   end if;
+                end if;
+             end loop File_Loop;
+ 
+             Close (Dir);
+          end if;
+ 
+       end Process_Directory;
+ 
+    --  Start of processing for Process
+ 
+    begin
+       Processed_Directories.Set_Last (0);
+ 
+       --  Process each directory
+ 
+       for Index in Directories'Range  loop
+          Process_Directory (Directories (Index).all);
+       end loop;
+    end Process;
+ 
     --------------------
     -- Output_Version --
     --------------------
*************** procedure Gnatname is
*** 243,249 ****
                 elsif Pragmas_File_Expected then
                    File_Set := True;
                    File_Path := new String'(Arg);
-                   Create_Project := False;
                    Pragmas_File_Expected := False;
  
                 --  -d xxx
--- 856,861 ----
*************** procedure Gnatname is
*** 343,350 ****
                 elsif Arg'Length > Subdirs_Switch'Length
                   and then Arg (1 .. Subdirs_Switch'Length) = Subdirs_Switch
                 then
!                   Subdirs :=
!                     new String'(Arg (Subdirs_Switch'Length + 1 .. Arg'Last));
  
                 --  --no-backup
  
--- 955,962 ----
                 elsif Arg'Length > Subdirs_Switch'Length
                   and then Arg (1 .. Subdirs_Switch'Length) = Subdirs_Switch
                 then
!                   null;
!                   --  Subdirs are only used in gprname
  
                 --  --no-backup
  
*************** procedure Gnatname is
*** 368,374 ****
                    else
                       File_Set := True;
                       File_Path := new String'(Arg (3 .. Arg'Last));
-                      Create_Project := False;
                    end if;
  
                 --  -d
--- 980,985 ----
*************** procedure Gnatname is
*** 510,548 ****
        if not Usage_Output then
           Usage_Needed := False;
           Usage_Output := True;
!          Write_Str ("Usage: ");
           Osint.Write_Program_Name;
!          Write_Line (" [switches] naming-pattern [naming-patterns]");
!          Write_Line ("   {--and [switches] naming-pattern [naming-patterns]}");
!          Write_Eol;
!          Write_Line ("switches:");
  
           Display_Usage_Version_And_Help;
  
!          Write_Line ("  --subdirs=dir real obj/lib/exec dirs are subdirs");
!          Write_Line ("  --no-backup   do not create backup of project file");
!          Write_Eol;
  
!          Write_Line ("  --and        use different patterns");
!          Write_Eol;
  
!          Write_Line ("  -cfile       create configuration pragmas file");
!          Write_Line ("  -ddir        use dir as one of the source " &
!                      "directories");
!          Write_Line ("  -Dfile       get source directories from file");
!          Write_Line ("  -eL          follow symbolic links when processing " &
!                      "project files");
!          Write_Line ("  -fpat        foreign pattern");
!          Write_Line ("  -gnateDsym=v preprocess with symbol definition");
!          Write_Line ("  -gnatep=data preprocess files with data file");
!          Write_Line ("  -h           output this help message");
!          Write_Line ("  -Pproj       update or create project file proj");
!          Write_Line ("  -v           verbose output");
!          Write_Line ("  -v -v        very verbose output");
!          Write_Line ("  -xpat        exclude pattern pat");
        end if;
     end Usage;
  
  --  Start of processing for Gnatname
  
  begin
--- 1121,1192 ----
        if not Usage_Output then
           Usage_Needed := False;
           Usage_Output := True;
!          Output.Write_Str ("Usage: ");
           Osint.Write_Program_Name;
!          Output.Write_Line (" [switches] naming-pattern [naming-patterns]");
!          Output.Write_Line
!            ("   {--and [switches] naming-pattern [naming-patterns]}");
!          Output.Write_Eol;
!          Output.Write_Line ("switches:");
  
           Display_Usage_Version_And_Help;
  
!          Output.Write_Line
!            ("  --subdirs=dir real obj/lib/exec dirs are subdirs");
!          Output.Write_Line
!            ("  --no-backup   do not create backup of project file");
!          Output.Write_Eol;
  
!          Output.Write_Line ("  --and        use different patterns");
!          Output.Write_Eol;
  
!          Output.Write_Line
!            ("  -cfile       create configuration pragmas file");
!          Output.Write_Line ("  -ddir        use dir as one of the source " &
!                             "directories");
!          Output.Write_Line ("  -Dfile       get source directories from file");
!          Output.Write_Line
!            ("  -eL          follow symbolic links when processing " &
!             "project files");
!          Output.Write_Line ("  -fpat        foreign pattern");
!          Output.Write_Line
!            ("  -gnateDsym=v preprocess with symbol definition");
!          Output.Write_Line ("  -gnatep=data preprocess files with data file");
!          Output.Write_Line ("  -h           output this help message");
!          Output.Write_Line
!            ("  -Pproj       update or create project file proj");
!          Output.Write_Line ("  -v           verbose output");
!          Output.Write_Line ("  -v -v        very verbose output");
!          Output.Write_Line ("  -xpat        exclude pattern pat");
        end if;
     end Usage;
  
+    ---------------
+    -- Write_Eol --
+    ---------------
+ 
+    procedure Write_Eol is
+    begin
+       Write_A_String ((1 => ASCII.LF));
+    end Write_Eol;
+ 
+    --------------------
+    -- Write_A_String --
+    --------------------
+ 
+    procedure Write_A_String (S : String) is
+       Str : String (1 .. S'Length);
+ 
+    begin
+       if S'Length > 0 then
+          Str := S;
+ 
+          if Write (Output_FD, Str (1)'Address, Str'Length) /= Str'Length then
+             Fail_Program ("disk full");
+          end if;
+       end if;
+    end Write_A_String;
+ 
  --  Start of processing for Gnatname
  
  begin
*************** begin
*** 601,667 ****
  
     Scan_Args;
  
-    if Opt.Verbose_Mode then
-       Output_Version;
-    end if;
- 
-    if Usage_Needed then
-       Usage;
-    end if;
- 
     if Create_Project then
        declare
!          Gnatname : constant String_Access :=
!                       Program_Name ("gnatname", "gnatname");
!          Arg_Len  : Positive      := Argument_Count;
!          Target   : String_Access := null;
! 
        begin
!          --  Find the target, if any
  
!          if Gnatname.all /= "gnatname" then
!             Target :=
!               new String'(Gnatname (Gnatname'First .. Gnatname'Last - 9));
              Arg_Len := Arg_Len + 1;
           end if;
  
           declare
!             Args    : Argument_List (1 .. Arg_Len);
!             Gprname : String_Access :=
!                         Locate_Exec_On_Path (Exec_Name => "gprname");
!             Success : Boolean;
! 
           begin
!             if Gprname /= null then
!                for J in 1 .. Argument_Count loop
!                   Args (J) := new String'(Argument (J));
!                end loop;
! 
!                --  Add the target if there is one
! 
!                if Target /= null then
!                   Args (Args'Last) := new String'("--target=" & Target.all);
!                end if;
  
!                Spawn (Gprname.all, Args, Success);
  
!                Free (Gprname);
  
!                if Success then
!                   Exit_Program (E_Success);
!                end if;
              end if;
           end;
        end;
     end if;
  
!    --  This only happens if gprname is not found or if the invocation of
!    --  gprname did not succeed.
  
!    if Create_Project then
!       Write_Line
!         ("warning: gnatname -P is obsolete and will not be available in the" &
!          " next release; use gprname instead");
     end if;
  
     --  If no Ada or foreign pattern was specified, print the usage and return
--- 1245,1304 ----
  
     Scan_Args;
  
     if Create_Project then
        declare
!          Gprname_Path : constant String_Access :=
!            Locate_Exec_On_Path ("gprname");
!          Arg_Len : Natural       := Argument_Count;
!          Pos     : Natural       := 0;
!          Target  : String_Access := null;
!          Success : Boolean       := False;
        begin
!          if Gprname_Path = null then
!             Fail_Program
!               ("project files are no longer supported by gnatname;" &
!                " use gprname instead");
!          end if;
  
!          Find_Program_Name;
! 
!          if Name_Len > 9
!             and then Name_Buffer (Name_Len - 7 .. Name_Len) = "gnatname"
!          then
!             Target  := new String'(Name_Buffer (1 .. Name_Len - 9));
              Arg_Len := Arg_Len + 1;
           end if;
  
           declare
!             Args : Argument_List (1 .. Arg_Len);
           begin
!             if Target /= null then
!                Args (1) := new String'("--target=" & Target.all);
!                Pos := 1;
!             end if;
  
!             for J in 1 .. Argument_Count loop
!                Pos := Pos + 1;
!                Args (Pos) := new String'(Argument (J));
!             end loop;
  
!             Spawn (Gprname_Path.all, Args, Success);
  
!             if Success then
!                Exit_Program (E_Success);
!             else
!                Exit_Program (E_Errors);
              end if;
           end;
        end;
     end if;
  
!    if Opt.Verbose_Mode then
!       Output_Version;
!    end if;
  
!    if Usage_Needed then
!       Usage;
     end if;
  
     --  If no Ada or foreign pattern was specified, print the usage and return
*************** begin
*** 700,711 ****
           Prep_Switches (Index) := Preprocessor_Switches.Table (Index);
        end loop;
  
!       Prj.Makr.Initialize
          (File_Path         => File_Path.all,
!          Project_File      => Create_Project,
!          Preproc_Switches  => Prep_Switches,
!          Very_Verbose      => Very_Verbose,
!          Flags             => Gnatmake_Flags);
     end;
  
     --  Process each section successively
--- 1337,1345 ----
           Prep_Switches (Index) := Preprocessor_Switches.Table (Index);
        end loop;
  
!       Initialize
          (File_Path         => File_Path.all,
!          Preproc_Switches  => Prep_Switches);
     end;
  
     --  Process each section successively
*************** begin
*** 715,727 ****
           Directories   : Argument_List
             (1 .. Integer
                     (Patterns.Last (Arguments.Table (J).Directories)));
!          Name_Patterns : Prj.Makr.Regexp_List
             (1 .. Integer
                     (Patterns.Last (Arguments.Table (J).Name_Patterns)));
!          Excl_Patterns : Prj.Makr.Regexp_List
             (1 .. Integer
                     (Patterns.Last (Arguments.Table (J).Excluded_Patterns)));
!          Frgn_Patterns : Prj.Makr.Regexp_List
             (1 .. Integer
                     (Patterns.Last (Arguments.Table (J).Foreign_Patterns)));
  
--- 1349,1361 ----
           Directories   : Argument_List
             (1 .. Integer
                     (Patterns.Last (Arguments.Table (J).Directories)));
!          Name_Patterns : Regexp_List
             (1 .. Integer
                     (Patterns.Last (Arguments.Table (J).Name_Patterns)));
!          Excl_Patterns : Regexp_List
             (1 .. Integer
                     (Patterns.Last (Arguments.Table (J).Excluded_Patterns)));
!          Frgn_Patterns : Regexp_List
             (1 .. Integer
                     (Patterns.Last (Arguments.Table (J).Foreign_Patterns)));
  
*************** begin
*** 756,762 ****
  
           --  Call Prj.Makr.Process where the real work is done
  
!          Prj.Makr.Process
             (Directories       => Directories,
              Name_Patterns     => Name_Patterns,
              Excluded_Patterns => Excl_Patterns,
--- 1390,1396 ----
  
           --  Call Prj.Makr.Process where the real work is done
  
!          Process
             (Directories       => Directories,
              Name_Patterns     => Name_Patterns,
              Excluded_Patterns => Excl_Patterns,
*************** begin
*** 766,774 ****
  
     --  Finalize
  
!    Prj.Makr.Finalize;
  
     if Opt.Verbose_Mode then
!       Write_Eol;
     end if;
  end Gnatname;
--- 1400,1408 ----
  
     --  Finalize
  
!    Finalize;
  
     if Opt.Verbose_Mode then
!       Output.Write_Eol;
     end if;
  end Gnatname;
diff -Nrcpad gcc-7.3.0/gcc/ada/gnatname.ads gcc-8.1.0/gcc/ada/gnatname.ads
*** gcc-7.3.0/gcc/ada/gnatname.ads	Mon Sep 10 12:47:10 2007
--- gcc-8.1.0/gcc/ada/gnatname.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2007, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or 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-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/gnatprep.adb gcc-8.1.0/gcc/ada/gnatprep.adb
*** gcc-7.3.0/gcc/ada/gnatprep.adb	Mon Sep 10 12:47:10 2007
--- gcc-8.1.0/gcc/ada/gnatprep.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1996-2007, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or 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-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/gnatprep.ads gcc-8.1.0/gcc/ada/gnatprep.ads
*** gcc-7.3.0/gcc/ada/gnatprep.ads	Mon Sep 10 12:47:10 2007
--- gcc-8.1.0/gcc/ada/gnatprep.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2007, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/gnatvsn.ads gcc-8.1.0/gcc/ada/gnatvsn.ads
*** gcc-7.3.0/gcc/ada/gnatvsn.ads	Sun Jan  1 18:08:36 2017
--- gcc-8.1.0/gcc/ada/gnatvsn.ads	Thu Jan  4 07:20:19 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2017, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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
*** 38,51 ****
     --  Static string identifying this version, that can be used as an argument
     --  to e.g. pragma Ident.
  
!    Library_Version : constant String := "7";
!    --  Library version. It needs to be updated whenever the major or
!    --  minor version number is changed.
     --
     --  Note: Makefile.in uses the library version string to construct the
     --  soname value.
  
!    Current_Year : constant String := "2017";
     --  Used in printing copyright messages
  
     Verbose_Library_Version : constant String := "GNAT Lib v" & Library_Version;
--- 38,51 ----
     --  Static string identifying this version, that can be used as an argument
     --  to e.g. pragma Ident.
  
!    Library_Version : constant String := "8";
!    --  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 := "2018";
     --  Used in printing copyright messages
  
     Verbose_Library_Version : constant String := "GNAT Lib v" & Library_Version;
*************** package Gnatvsn is
*** 70,76 ****
     --
     --    GPL
     --       GNAT GPL Edition. This is a special version of GNAT, released by
!    --       Ada Core Technologies and intended for academic users, and free
     --       software developers. The bug box generated by the package Comperr
     --       gives appropriate bug submission instructions that do not reference
     --       customer number etc.
--- 70,76 ----
     --
     --    GPL
     --       GNAT GPL Edition. This is a special version of GNAT, released by
!    --       Ada Core Technologies and intended for academic users and free
     --       software developers. The bug box generated by the package Comperr
     --       gives appropriate bug submission instructions that do not reference
     --       customer number etc.
diff -Nrcpad gcc-7.3.0/gcc/ada/gnatxref.adb gcc-8.1.0/gcc/ada/gnatxref.adb
*** gcc-7.3.0/gcc/ada/gnatxref.adb	Tue Oct 20 12:29:00 2015
--- gcc-8.1.0/gcc/ada/gnatxref.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1998-2015, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or 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-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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;
*** 27,37 ****
  with Osint;    use Osint;
  with Types;    use Types;
  with Switch;   use Switch;
! with Xr_Tabls; use 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;
--- 27,37 ----
  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;
*************** procedure Gnatxref is
*** 278,284 ****
        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 default project file");
        Put_Line ("   -u        List unused entities");
        Put_Line ("   -v        Print a 'tags' file for vi");
        New_Line;
--- 278,284 ----
        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;
diff -Nrcpad gcc-7.3.0/gcc/ada/gprep.adb gcc-8.1.0/gcc/ada/gprep.adb
*** gcc-7.3.0/gcc/ada/gprep.adb	Thu Jan 19 13:13:19 2017
--- gcc-8.1.0/gcc/ada/gprep.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or 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-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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 GPrep is
*** 249,254 ****
--- 249,258 ----
                 Fail ("unable to find definition file """
                       & Get_Name_String (Deffile_Name)
                       & """");
+             elsif Deffile = No_Access_To_Source_File then
+                Fail ("unabled to read definition file """
+                      & Get_Name_String (Deffile_Name)
+                      & """");
              end if;
  
              Scanner.Initialize_Scanner (Deffile);
*************** package body GPrep is
*** 514,519 ****
--- 518,527 ----
              Fail ("unable to find input file """
                    & Get_Name_String (Infile_Name)
                    & """");
+          elsif Infile = No_Access_To_Source_File then
+             Fail ("unable to read input file """
+                   & Get_Name_String (Infile_Name)
+                   & """");
           end if;
  
           --  Set Main_Source_File to the input file for the benefit of
diff -Nrcpad gcc-7.3.0/gcc/ada/gprep.ads gcc-8.1.0/gcc/ada/gprep.ads
*** gcc-7.3.0/gcc/ada/gprep.ads	Mon Sep 10 12:47:10 2007
--- gcc-8.1.0/gcc/ada/gprep.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2007, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or 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-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/gsocket.h gcc-8.1.0/gcc/ada/gsocket.h
*** gcc-7.3.0/gcc/ada/gsocket.h	Fri Jan 20 14:49:28 2017
--- gcc-8.1.0/gcc/ada/gsocket.h	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *         Copyright (C) 2004-2016, Free Software Foundation, Inc.          *
   *                                                                          *
   * GNAT is free software;  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-2018, Free Software Foundation, Inc.          *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-7.3.0/gcc/ada/hostparm.ads gcc-8.1.0/gcc/ada/hostparm.ads
*** gcc-7.3.0/gcc/ada/hostparm.ads	Fri Aug  1 10:01:31 2014
--- gcc-8.1.0/gcc/ada/hostparm.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/i-c.adb gcc-8.1.0/gcc/ada/i-c.adb
*** gcc-7.3.0/gcc/ada/i-c.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/i-c.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,826 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                         I N T E R F A C E S . C                          --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          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- --
- -- 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 Interfaces.C is
- 
-    -----------------------
-    -- Is_Nul_Terminated --
-    -----------------------
- 
-    --  Case of char_array
- 
-    function Is_Nul_Terminated (Item : char_array) return Boolean is
-    begin
-       for J in Item'Range loop
-          if Item (J) = nul then
-             return True;
-          end if;
-       end loop;
- 
-       return False;
-    end Is_Nul_Terminated;
- 
-    --  Case of wchar_array
- 
-    function Is_Nul_Terminated (Item : wchar_array) return Boolean is
-    begin
-       for J in Item'Range loop
-          if Item (J) = wide_nul then
-             return True;
-          end if;
-       end loop;
- 
-       return False;
-    end Is_Nul_Terminated;
- 
-    --  Case of char16_array
- 
-    function Is_Nul_Terminated (Item : char16_array) return Boolean is
-    begin
-       for J in Item'Range loop
-          if Item (J) = char16_nul then
-             return True;
-          end if;
-       end loop;
- 
-       return False;
-    end Is_Nul_Terminated;
- 
-    --  Case of char32_array
- 
-    function Is_Nul_Terminated (Item : char32_array) return Boolean is
-    begin
-       for J in Item'Range loop
-          if Item (J) = char32_nul then
-             return True;
-          end if;
-       end loop;
- 
-       return False;
-    end Is_Nul_Terminated;
- 
-    ------------
-    -- To_Ada --
-    ------------
- 
-    --  Convert char to Character
- 
-    function To_Ada (Item : char) return Character is
-    begin
-       return Character'Val (char'Pos (Item));
-    end To_Ada;
- 
-    --  Convert char_array to String (function form)
- 
-    function To_Ada
-      (Item     : char_array;
-       Trim_Nul : Boolean := True) return String
-    is
-       Count : Natural;
-       From  : size_t;
- 
-    begin
-       if Trim_Nul then
-          From := Item'First;
- 
-          loop
-             if From > Item'Last then
-                raise Terminator_Error;
-             elsif Item (From) = nul then
-                exit;
-             else
-                From := From + 1;
-             end if;
-          end loop;
- 
-          Count := Natural (From - Item'First);
- 
-       else
-          Count := Item'Length;
-       end if;
- 
-       declare
-          R : String (1 .. Count);
- 
-       begin
-          for J in R'Range loop
-             R (J) := To_Ada (Item (size_t (J) + (Item'First - 1)));
-          end loop;
- 
-          return R;
-       end;
-    end To_Ada;
- 
-    --  Convert char_array to String (procedure form)
- 
-    procedure To_Ada
-      (Item     : char_array;
-       Target   : out String;
-       Count    : out Natural;
-       Trim_Nul : Boolean := True)
-    is
-       From : size_t;
-       To   : Positive;
- 
-    begin
-       if Trim_Nul then
-          From := Item'First;
-          loop
-             if From > Item'Last then
-                raise Terminator_Error;
-             elsif Item (From) = nul then
-                exit;
-             else
-                From := From + 1;
-             end if;
-          end loop;
- 
-          Count := Natural (From - Item'First);
- 
-       else
-          Count := Item'Length;
-       end if;
- 
-       if Count > Target'Length then
-          raise Constraint_Error;
- 
-       else
-          From := Item'First;
-          To   := Target'First;
- 
-          for J in 1 .. Count loop
-             Target (To) := Character (Item (From));
-             From := From + 1;
-             To   := To + 1;
-          end loop;
-       end if;
- 
-    end To_Ada;
- 
-    --  Convert wchar_t to Wide_Character
- 
-    function To_Ada (Item : wchar_t) return Wide_Character is
-    begin
-       return Wide_Character (Item);
-    end To_Ada;
- 
-    --  Convert wchar_array to Wide_String (function form)
- 
-    function To_Ada
-      (Item     : wchar_array;
-       Trim_Nul : Boolean := True) return Wide_String
-    is
-       Count : Natural;
-       From  : size_t;
- 
-    begin
-       if Trim_Nul then
-          From := Item'First;
- 
-          loop
-             if From > Item'Last then
-                raise Terminator_Error;
-             elsif Item (From) = wide_nul then
-                exit;
-             else
-                From := From + 1;
-             end if;
-          end loop;
- 
-          Count := Natural (From - Item'First);
- 
-       else
-          Count := Item'Length;
-       end if;
- 
-       declare
-          R : Wide_String (1 .. Count);
- 
-       begin
-          for J in R'Range loop
-             R (J) := To_Ada (Item (size_t (J) + (Item'First - 1)));
-          end loop;
- 
-          return R;
-       end;
-    end To_Ada;
- 
-    --  Convert wchar_array to Wide_String (procedure form)
- 
-    procedure To_Ada
-      (Item     : wchar_array;
-       Target   : out Wide_String;
-       Count    : out Natural;
-       Trim_Nul : Boolean := True)
-    is
-       From : size_t;
-       To   : Positive;
- 
-    begin
-       if Trim_Nul then
-          From := Item'First;
-          loop
-             if From > Item'Last then
-                raise Terminator_Error;
-             elsif Item (From) = wide_nul then
-                exit;
-             else
-                From := From + 1;
-             end if;
-          end loop;
- 
-          Count := Natural (From - Item'First);
- 
-       else
-          Count := Item'Length;
-       end if;
- 
-       if Count > Target'Length then
-          raise Constraint_Error;
- 
-       else
-          From := Item'First;
-          To   := Target'First;
- 
-          for J in 1 .. Count loop
-             Target (To) := To_Ada (Item (From));
-             From := From + 1;
-             To   := To + 1;
-          end loop;
-       end if;
-    end To_Ada;
- 
-    --  Convert char16_t to Wide_Character
- 
-    function To_Ada (Item : char16_t) return Wide_Character is
-    begin
-       return Wide_Character'Val (char16_t'Pos (Item));
-    end To_Ada;
- 
-    --  Convert char16_array to Wide_String (function form)
- 
-    function To_Ada
-      (Item     : char16_array;
-       Trim_Nul : Boolean := True) return Wide_String
-    is
-       Count : Natural;
-       From  : size_t;
- 
-    begin
-       if Trim_Nul then
-          From := Item'First;
- 
-          loop
-             if From > Item'Last then
-                raise Terminator_Error;
-             elsif Item (From) = char16_t'Val (0) then
-                exit;
-             else
-                From := From + 1;
-             end if;
-          end loop;
- 
-          Count := Natural (From - Item'First);
- 
-       else
-          Count := Item'Length;
-       end if;
- 
-       declare
-          R : Wide_String (1 .. Count);
- 
-       begin
-          for J in R'Range loop
-             R (J) := To_Ada (Item (size_t (J) + (Item'First - 1)));
-          end loop;
- 
-          return R;
-       end;
-    end To_Ada;
- 
-    --  Convert char16_array to Wide_String (procedure form)
- 
-    procedure To_Ada
-      (Item     : char16_array;
-       Target   : out Wide_String;
-       Count    : out Natural;
-       Trim_Nul : Boolean := True)
-    is
-       From : size_t;
-       To   : Positive;
- 
-    begin
-       if Trim_Nul then
-          From := Item'First;
-          loop
-             if From > Item'Last then
-                raise Terminator_Error;
-             elsif Item (From) = char16_t'Val (0) then
-                exit;
-             else
-                From := From + 1;
-             end if;
-          end loop;
- 
-          Count := Natural (From - Item'First);
- 
-       else
-          Count := Item'Length;
-       end if;
- 
-       if Count > Target'Length then
-          raise Constraint_Error;
- 
-       else
-          From := Item'First;
-          To   := Target'First;
- 
-          for J in 1 .. Count loop
-             Target (To) := To_Ada (Item (From));
-             From := From + 1;
-             To   := To + 1;
-          end loop;
-       end if;
-    end To_Ada;
- 
-    --  Convert char32_t to Wide_Wide_Character
- 
-    function To_Ada (Item : char32_t) return Wide_Wide_Character is
-    begin
-       return Wide_Wide_Character'Val (char32_t'Pos (Item));
-    end To_Ada;
- 
-    --  Convert char32_array to Wide_Wide_String (function form)
- 
-    function To_Ada
-      (Item     : char32_array;
-       Trim_Nul : Boolean := True) return Wide_Wide_String
-    is
-       Count : Natural;
-       From  : size_t;
- 
-    begin
-       if Trim_Nul then
-          From := Item'First;
- 
-          loop
-             if From > Item'Last then
-                raise Terminator_Error;
-             elsif Item (From) = char32_t'Val (0) then
-                exit;
-             else
-                From := From + 1;
-             end if;
-          end loop;
- 
-          Count := Natural (From - Item'First);
- 
-       else
-          Count := Item'Length;
-       end if;
- 
-       declare
-          R : Wide_Wide_String (1 .. Count);
- 
-       begin
-          for J in R'Range loop
-             R (J) := To_Ada (Item (size_t (J) + (Item'First - 1)));
-          end loop;
- 
-          return R;
-       end;
-    end To_Ada;
- 
-    --  Convert char32_array to Wide_Wide_String (procedure form)
- 
-    procedure To_Ada
-      (Item     : char32_array;
-       Target   : out Wide_Wide_String;
-       Count    : out Natural;
-       Trim_Nul : Boolean := True)
-    is
-       From : size_t;
-       To   : Positive;
- 
-    begin
-       if Trim_Nul then
-          From := Item'First;
-          loop
-             if From > Item'Last then
-                raise Terminator_Error;
-             elsif Item (From) = char32_t'Val (0) then
-                exit;
-             else
-                From := From + 1;
-             end if;
-          end loop;
- 
-          Count := Natural (From - Item'First);
- 
-       else
-          Count := Item'Length;
-       end if;
- 
-       if Count > Target'Length then
-          raise Constraint_Error;
- 
-       else
-          From := Item'First;
-          To   := Target'First;
- 
-          for J in 1 .. Count loop
-             Target (To) := To_Ada (Item (From));
-             From := From + 1;
-             To   := To + 1;
-          end loop;
-       end if;
-    end To_Ada;
- 
-    ----------
-    -- To_C --
-    ----------
- 
-    --  Convert Character to char
- 
-    function To_C (Item : Character) return char is
-    begin
-       return char'Val (Character'Pos (Item));
-    end To_C;
- 
-    --  Convert String to char_array (function form)
- 
-    function To_C
-      (Item       : String;
-       Append_Nul : Boolean := True) return char_array
-    is
-    begin
-       if Append_Nul then
-          declare
-             R : char_array (0 .. Item'Length);
- 
-          begin
-             for J in Item'Range loop
-                R (size_t (J - Item'First)) := To_C (Item (J));
-             end loop;
- 
-             R (R'Last) := nul;
-             return R;
-          end;
- 
-       --  Append_Nul False
- 
-       else
-          --  A nasty case, if the string is null, we must return a null
-          --  char_array. The lower bound of this array is required to be zero
-          --  (RM B.3(50)) but that is of course impossible given that size_t
-          --  is unsigned. According to Ada 2005 AI-258, the result is to raise
-          --  Constraint_Error. This is also the appropriate behavior in Ada 95,
-          --  since nothing else makes sense.
- 
-          if Item'Length = 0 then
-             raise Constraint_Error;
- 
-          --  Normal case
- 
-          else
-             declare
-                R : char_array (0 .. Item'Length - 1);
- 
-             begin
-                for J in Item'Range loop
-                   R (size_t (J - Item'First)) := To_C (Item (J));
-                end loop;
- 
-                return R;
-             end;
-          end if;
-       end if;
-    end To_C;
- 
-    --  Convert String to char_array (procedure form)
- 
-    procedure To_C
-      (Item       : String;
-       Target     : out char_array;
-       Count      : out size_t;
-       Append_Nul : Boolean := True)
-    is
-       To : size_t;
- 
-    begin
-       if Target'Length < Item'Length then
-          raise Constraint_Error;
- 
-       else
-          To := Target'First;
-          for From in Item'Range loop
-             Target (To) := char (Item (From));
-             To := To + 1;
-          end loop;
- 
-          if Append_Nul then
-             if To > Target'Last then
-                raise Constraint_Error;
-             else
-                Target (To) := nul;
-                Count := Item'Length + 1;
-             end if;
- 
-          else
-             Count := Item'Length;
-          end if;
-       end if;
-    end To_C;
- 
-    --  Convert Wide_Character to wchar_t
- 
-    function To_C (Item : Wide_Character) return wchar_t is
-    begin
-       return wchar_t (Item);
-    end To_C;
- 
-    --  Convert Wide_String to wchar_array (function form)
- 
-    function To_C
-      (Item       : Wide_String;
-       Append_Nul : Boolean := True) return wchar_array
-    is
-    begin
-       if Append_Nul then
-          declare
-             R : wchar_array (0 .. Item'Length);
- 
-          begin
-             for J in Item'Range loop
-                R (size_t (J - Item'First)) := To_C (Item (J));
-             end loop;
- 
-             R (R'Last) := wide_nul;
-             return R;
-          end;
- 
-       else
-          --  A nasty case, if the string is null, we must return a null
-          --  wchar_array. The lower bound of this array is required to be zero
-          --  (RM B.3(50)) but that is of course impossible given that size_t
-          --  is unsigned. According to Ada 2005 AI-258, the result is to raise
-          --  Constraint_Error. This is also the appropriate behavior in Ada 95,
-          --  since nothing else makes sense.
- 
-          if Item'Length = 0 then
-             raise Constraint_Error;
- 
-          else
-             declare
-                R : wchar_array (0 .. Item'Length - 1);
- 
-             begin
-                for J in size_t range 0 .. Item'Length - 1 loop
-                   R (J) := To_C (Item (Integer (J) + Item'First));
-                end loop;
- 
-                return R;
-             end;
-          end if;
-       end if;
-    end To_C;
- 
-    --  Convert Wide_String to wchar_array (procedure form)
- 
-    procedure To_C
-      (Item       : Wide_String;
-       Target     : out wchar_array;
-       Count      : out size_t;
-       Append_Nul : Boolean := True)
-    is
-       To : size_t;
- 
-    begin
-       if Target'Length < Item'Length then
-          raise Constraint_Error;
- 
-       else
-          To := Target'First;
-          for From in Item'Range loop
-             Target (To) := To_C (Item (From));
-             To := To + 1;
-          end loop;
- 
-          if Append_Nul then
-             if To > Target'Last then
-                raise Constraint_Error;
-             else
-                Target (To) := wide_nul;
-                Count := Item'Length + 1;
-             end if;
- 
-          else
-             Count := Item'Length;
-          end if;
-       end if;
-    end To_C;
- 
-    --  Convert Wide_Character to char16_t
- 
-    function To_C (Item : Wide_Character) return char16_t is
-    begin
-       return char16_t'Val (Wide_Character'Pos (Item));
-    end To_C;
- 
-    --  Convert Wide_String to char16_array (function form)
- 
-    function To_C
-      (Item       : Wide_String;
-       Append_Nul : Boolean := True) return char16_array
-    is
-    begin
-       if Append_Nul then
-          declare
-             R : char16_array (0 .. Item'Length);
- 
-          begin
-             for J in Item'Range loop
-                R (size_t (J - Item'First)) := To_C (Item (J));
-             end loop;
- 
-             R (R'Last) := char16_t'Val (0);
-             return R;
-          end;
- 
-       else
-          --  A nasty case, if the string is null, we must return a null
-          --  char16_array. The lower bound of this array is required to be zero
-          --  (RM B.3(50)) but that is of course impossible given that size_t
-          --  is unsigned. According to Ada 2005 AI-258, the result is to raise
-          --  Constraint_Error. This is also the appropriate behavior in Ada 95,
-          --  since nothing else makes sense.
- 
-          if Item'Length = 0 then
-             raise Constraint_Error;
- 
-          else
-             declare
-                R : char16_array (0 .. Item'Length - 1);
- 
-             begin
-                for J in size_t range 0 .. Item'Length - 1 loop
-                   R (J) := To_C (Item (Integer (J) + Item'First));
-                end loop;
- 
-                return R;
-             end;
-          end if;
-       end if;
-    end To_C;
- 
-    --  Convert Wide_String to char16_array (procedure form)
- 
-    procedure To_C
-      (Item       : Wide_String;
-       Target     : out char16_array;
-       Count      : out size_t;
-       Append_Nul : Boolean := True)
-    is
-       To : size_t;
- 
-    begin
-       if Target'Length < Item'Length then
-          raise Constraint_Error;
- 
-       else
-          To := Target'First;
-          for From in Item'Range loop
-             Target (To) := To_C (Item (From));
-             To := To + 1;
-          end loop;
- 
-          if Append_Nul then
-             if To > Target'Last then
-                raise Constraint_Error;
-             else
-                Target (To) := char16_t'Val (0);
-                Count := Item'Length + 1;
-             end if;
- 
-          else
-             Count := Item'Length;
-          end if;
-       end if;
-    end To_C;
- 
-    --  Convert Wide_Character to char32_t
- 
-    function To_C (Item : Wide_Wide_Character) return char32_t is
-    begin
-       return char32_t'Val (Wide_Wide_Character'Pos (Item));
-    end To_C;
- 
-    --  Convert Wide_Wide_String to char32_array (function form)
- 
-    function To_C
-      (Item       : Wide_Wide_String;
-       Append_Nul : Boolean := True) return char32_array
-    is
-    begin
-       if Append_Nul then
-          declare
-             R : char32_array (0 .. Item'Length);
- 
-          begin
-             for J in Item'Range loop
-                R (size_t (J - Item'First)) := To_C (Item (J));
-             end loop;
- 
-             R (R'Last) := char32_t'Val (0);
-             return R;
-          end;
- 
-       else
-          --  A nasty case, if the string is null, we must return a null
-          --  char32_array. The lower bound of this array is required to be zero
-          --  (RM B.3(50)) but that is of course impossible given that size_t
-          --  is unsigned. According to Ada 2005 AI-258, the result is to raise
-          --  Constraint_Error.
- 
-          if Item'Length = 0 then
-             raise Constraint_Error;
- 
-          else
-             declare
-                R : char32_array (0 .. Item'Length - 1);
- 
-             begin
-                for J in size_t range 0 .. Item'Length - 1 loop
-                   R (J) := To_C (Item (Integer (J) + Item'First));
-                end loop;
- 
-                return R;
-             end;
-          end if;
-       end if;
-    end To_C;
- 
-    --  Convert Wide_Wide_String to char32_array (procedure form)
- 
-    procedure To_C
-      (Item       : Wide_Wide_String;
-       Target     : out char32_array;
-       Count      : out size_t;
-       Append_Nul : Boolean := True)
-    is
-       To : size_t;
- 
-    begin
-       if Target'Length < Item'Length then
-          raise Constraint_Error;
- 
-       else
-          To := Target'First;
-          for From in Item'Range loop
-             Target (To) := To_C (Item (From));
-             To := To + 1;
-          end loop;
- 
-          if Append_Nul then
-             if To > Target'Last then
-                raise Constraint_Error;
-             else
-                Target (To) := char32_t'Val (0);
-                Count := Item'Length + 1;
-             end if;
- 
-          else
-             Count := Item'Length;
-          end if;
-       end if;
-    end To_C;
- 
- end Interfaces.C;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/i-c.ads gcc-8.1.0/gcc/ada/i-c.ads
*** gcc-7.3.0/gcc/ada/i-c.ads	Mon Aug  1 14:36:39 2011
--- gcc-8.1.0/gcc/ada/i-c.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,230 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                         I N T E R F A C E S . C                          --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with System.Parameters;
- 
- package Interfaces.C is
-    pragma Pure;
- 
-    --  Declaration's based on C's <limits.h>
- 
-    CHAR_BIT  : constant := 8;
-    SCHAR_MIN : constant := -128;
-    SCHAR_MAX : constant := 127;
-    UCHAR_MAX : constant := 255;
- 
-    --  Signed and Unsigned Integers. Note that in GNAT, we have ensured that
-    --  the standard predefined Ada types correspond to the standard C types
- 
-    --  Note: the Integer qualifications used in the declaration of type long
-    --  avoid ambiguities when compiling in the presence of s-auxdec.ads and
-    --  a non-private system.address type.
- 
-    type int   is new Integer;
-    type short is new Short_Integer;
-    type long  is range -(2 ** (System.Parameters.long_bits - Integer'(1)))
-      .. +(2 ** (System.Parameters.long_bits - Integer'(1))) - 1;
- 
-    type signed_char is range SCHAR_MIN .. SCHAR_MAX;
-    for signed_char'Size use CHAR_BIT;
- 
-    type unsigned       is mod 2 ** int'Size;
-    type unsigned_short is mod 2 ** short'Size;
-    type unsigned_long  is mod 2 ** long'Size;
- 
-    type unsigned_char is mod (UCHAR_MAX + 1);
-    for unsigned_char'Size use CHAR_BIT;
- 
-    subtype plain_char is unsigned_char; -- ??? should be parameterized
- 
-    --  Note: the Integer qualifications used in the declaration of ptrdiff_t
-    --  avoid ambiguities when compiling in the presence of s-auxdec.ads and
-    --  a non-private system.address type.
- 
-    type ptrdiff_t is
-      range -(2 ** (System.Parameters.ptr_bits - Integer'(1))) ..
-            +(2 ** (System.Parameters.ptr_bits - Integer'(1)) - 1);
- 
-    type size_t is mod 2 ** System.Parameters.ptr_bits;
- 
-    --  Floating-Point
- 
-    type C_float     is new Float;
-    type double      is new Standard.Long_Float;
-    type long_double is new Standard.Long_Long_Float;
- 
-    ----------------------------
-    -- Characters and Strings --
-    ----------------------------
- 
-    type char is new Character;
- 
-    nul : constant char := char'First;
- 
-    function To_C   (Item : Character) return char;
-    function To_Ada (Item : char)      return Character;
- 
-    type char_array is array (size_t range <>) of aliased char;
-    for char_array'Component_Size use CHAR_BIT;
- 
-    function Is_Nul_Terminated (Item : char_array) return Boolean;
- 
-    function To_C
-      (Item       : String;
-       Append_Nul : Boolean := True) return char_array;
- 
-    function To_Ada
-      (Item     : char_array;
-       Trim_Nul : Boolean := True) return String;
- 
-    procedure To_C
-      (Item       : String;
-       Target     : out char_array;
-       Count      : out size_t;
-       Append_Nul : Boolean := True);
- 
-    procedure To_Ada
-      (Item     : char_array;
-       Target   : out String;
-       Count    : out Natural;
-       Trim_Nul : Boolean := True);
- 
-    ------------------------------------
-    -- Wide Character and Wide String --
-    ------------------------------------
- 
-    type wchar_t is new Wide_Character;
-    for wchar_t'Size use Standard'Wchar_T_Size;
- 
-    wide_nul : constant wchar_t := wchar_t'First;
- 
-    function To_C   (Item : Wide_Character) return wchar_t;
-    function To_Ada (Item : wchar_t)        return Wide_Character;
- 
-    type wchar_array is array (size_t range <>) of aliased wchar_t;
- 
-    function Is_Nul_Terminated (Item : wchar_array) return Boolean;
- 
-    function To_C
-      (Item       : Wide_String;
-       Append_Nul : Boolean := True) return wchar_array;
- 
-    function To_Ada
-      (Item     : wchar_array;
-       Trim_Nul : Boolean := True) return Wide_String;
- 
-    procedure To_C
-      (Item       : Wide_String;
-       Target     : out wchar_array;
-       Count      : out size_t;
-       Append_Nul : Boolean := True);
- 
-    procedure To_Ada
-      (Item     : wchar_array;
-       Target   : out Wide_String;
-       Count    : out Natural;
-       Trim_Nul : Boolean := True);
- 
-    Terminator_Error : exception;
- 
-    --  The remaining declarations are for Ada 2005 (AI-285)
- 
-    --  ISO/IEC 10646:2003 compatible types defined by SC22/WG14 document N1010
- 
-    type char16_t is new Wide_Character;
-    pragma Ada_05 (char16_t);
- 
-    char16_nul : constant char16_t := char16_t'Val (0);
-    pragma Ada_05 (char16_nul);
- 
-    function To_C (Item : Wide_Character) return char16_t;
-    pragma Ada_05 (To_C);
- 
-    function To_Ada (Item : char16_t) return Wide_Character;
-    pragma Ada_05 (To_Ada);
- 
-    type char16_array is array (size_t range <>) of aliased char16_t;
-    pragma Ada_05 (char16_array);
- 
-    function Is_Nul_Terminated (Item : char16_array) return Boolean;
-    pragma Ada_05 (Is_Nul_Terminated);
- 
-    function To_C
-      (Item       : Wide_String;
-       Append_Nul : Boolean := True) return char16_array;
-    pragma Ada_05 (To_C);
- 
-    function To_Ada
-      (Item     : char16_array;
-       Trim_Nul : Boolean := True) return Wide_String;
-    pragma Ada_05 (To_Ada);
- 
-    procedure To_C
-      (Item       : Wide_String;
-       Target     : out char16_array;
-       Count      : out size_t;
-       Append_Nul : Boolean := True);
-    pragma Ada_05 (To_C);
- 
-    procedure To_Ada
-      (Item     : char16_array;
-       Target   : out Wide_String;
-       Count    : out Natural;
-       Trim_Nul : Boolean := True);
-    pragma Ada_05 (To_Ada);
- 
-    type char32_t is new Wide_Wide_Character;
-    pragma Ada_05 (char32_t);
- 
-    char32_nul : constant char32_t := char32_t'Val (0);
-    pragma Ada_05 (char32_nul);
- 
-    function To_C (Item : Wide_Wide_Character) return char32_t;
-    pragma Ada_05 (To_C);
- 
-    function To_Ada (Item : char32_t) return Wide_Wide_Character;
-    pragma Ada_05 (To_Ada);
- 
-    type char32_array is array (size_t range <>) of aliased char32_t;
-    pragma Ada_05 (char32_array);
- 
-    function Is_Nul_Terminated (Item : char32_array) return Boolean;
-    pragma Ada_05 (Is_Nul_Terminated);
- 
-    function To_C
-      (Item       : Wide_Wide_String;
-       Append_Nul : Boolean := True) return char32_array;
-    pragma Ada_05 (To_C);
- 
-    function To_Ada
-      (Item     : char32_array;
-       Trim_Nul : Boolean := True) return Wide_Wide_String;
-    pragma Ada_05 (To_Ada);
- 
-    procedure To_C
-      (Item       : Wide_Wide_String;
-       Target     : out char32_array;
-       Count      : out size_t;
-       Append_Nul : Boolean := True);
-    pragma Ada_05 (To_C);
- 
-    procedure To_Ada
-      (Item     : char32_array;
-       Target   : out Wide_Wide_String;
-       Count    : out Natural;
-       Trim_Nul : Boolean := True);
-    pragma Ada_05 (To_Ada);
- 
- end Interfaces.C;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/i-cexten.ads gcc-8.1.0/gcc/ada/i-cexten.ads
*** gcc-7.3.0/gcc/ada/i-cexten.ads	Fri Jan 24 14:23:03 2014
--- gcc-8.1.0/gcc/ada/i-cexten.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,458 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --              I N T E R F A C E S . C . E X T E N S I O N S               --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1992-2013, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 additional C-related definitions, intended for use
- --  with either manually or automatically generated bindings to C libraries.
- 
- with System;
- 
- package Interfaces.C.Extensions is
-    pragma Pure;
- 
-    --  Definitions for C "void" and "void *" types
- 
-    subtype void     is System.Address;
-    subtype void_ptr is System.Address;
- 
-    --  Definitions for C incomplete/unknown structs
- 
-    subtype opaque_structure_def is System.Address;
-    type opaque_structure_def_ptr is access opaque_structure_def;
-    for opaque_structure_def_ptr'Storage_Size use 0;
- 
-    --  Definitions for C++ incomplete/unknown classes
- 
-    subtype incomplete_class_def is System.Address;
-    type incomplete_class_def_ptr is access incomplete_class_def;
-    for incomplete_class_def_ptr'Storage_Size use 0;
- 
-    --  C bool
- 
-    subtype bool is plain_char;
- 
-    --  64-bit integer types
- 
-    subtype long_long is Long_Long_Integer;
-    type unsigned_long_long is mod 2 ** 64;
- 
-    --  128-bit integer type available on 64-bit platforms:
-    --  typedef int signed_128 __attribute__ ((mode (TI)));
- 
-    type Signed_128 is record
-       low, high : unsigned_long_long;
-    end record;
-    pragma Convention (C_Pass_By_Copy, Signed_128);
-    for Signed_128'Alignment use unsigned_long_long'Alignment * 2;
- 
-    --  Types for bitfields
- 
-    type Unsigned_1 is mod 2 ** 1;
-    for Unsigned_1'Size use 1;
- 
-    type Unsigned_2 is mod 2 ** 2;
-    for Unsigned_2'Size use 2;
- 
-    type Unsigned_3 is mod 2 ** 3;
-    for Unsigned_3'Size use 3;
- 
-    type Unsigned_4 is mod 2 ** 4;
-    for Unsigned_4'Size use 4;
- 
-    type Unsigned_5 is mod 2 ** 5;
-    for Unsigned_5'Size use 5;
- 
-    type Unsigned_6 is mod 2 ** 6;
-    for Unsigned_6'Size use 6;
- 
-    type Unsigned_7 is mod 2 ** 7;
-    for Unsigned_7'Size use 7;
- 
-    type Unsigned_8 is mod 2 ** 8;
-    for Unsigned_8'Size use 8;
- 
-    type Unsigned_9 is mod 2 ** 9;
-    for Unsigned_9'Size use 9;
- 
-    type Unsigned_10 is mod 2 ** 10;
-    for Unsigned_10'Size use 10;
- 
-    type Unsigned_11 is mod 2 ** 11;
-    for Unsigned_11'Size use 11;
- 
-    type Unsigned_12 is mod 2 ** 12;
-    for Unsigned_12'Size use 12;
- 
-    type Unsigned_13 is mod 2 ** 13;
-    for Unsigned_13'Size use 13;
- 
-    type Unsigned_14 is mod 2 ** 14;
-    for Unsigned_14'Size use 14;
- 
-    type Unsigned_15 is mod 2 ** 15;
-    for Unsigned_15'Size use 15;
- 
-    type Unsigned_16 is mod 2 ** 16;
-    for Unsigned_16'Size use 16;
- 
-    type Unsigned_17 is mod 2 ** 17;
-    for Unsigned_17'Size use 17;
- 
-    type Unsigned_18 is mod 2 ** 18;
-    for Unsigned_18'Size use 18;
- 
-    type Unsigned_19 is mod 2 ** 19;
-    for Unsigned_19'Size use 19;
- 
-    type Unsigned_20 is mod 2 ** 20;
-    for Unsigned_20'Size use 20;
- 
-    type Unsigned_21 is mod 2 ** 21;
-    for Unsigned_21'Size use 21;
- 
-    type Unsigned_22 is mod 2 ** 22;
-    for Unsigned_22'Size use 22;
- 
-    type Unsigned_23 is mod 2 ** 23;
-    for Unsigned_23'Size use 23;
- 
-    type Unsigned_24 is mod 2 ** 24;
-    for Unsigned_24'Size use 24;
- 
-    type Unsigned_25 is mod 2 ** 25;
-    for Unsigned_25'Size use 25;
- 
-    type Unsigned_26 is mod 2 ** 26;
-    for Unsigned_26'Size use 26;
- 
-    type Unsigned_27 is mod 2 ** 27;
-    for Unsigned_27'Size use 27;
- 
-    type Unsigned_28 is mod 2 ** 28;
-    for Unsigned_28'Size use 28;
- 
-    type Unsigned_29 is mod 2 ** 29;
-    for Unsigned_29'Size use 29;
- 
-    type Unsigned_30 is mod 2 ** 30;
-    for Unsigned_30'Size use 30;
- 
-    type Unsigned_31 is mod 2 ** 31;
-    for Unsigned_31'Size use 31;
- 
-    type Unsigned_32 is mod 2 ** 32;
-    for Unsigned_32'Size use 32;
- 
-    type Unsigned_33 is mod 2 ** 33;
-    for Unsigned_33'Size use 33;
- 
-    type Unsigned_34 is mod 2 ** 34;
-    for Unsigned_34'Size use 34;
- 
-    type Unsigned_35 is mod 2 ** 35;
-    for Unsigned_35'Size use 35;
- 
-    type Unsigned_36 is mod 2 ** 36;
-    for Unsigned_36'Size use 36;
- 
-    type Unsigned_37 is mod 2 ** 37;
-    for Unsigned_37'Size use 37;
- 
-    type Unsigned_38 is mod 2 ** 38;
-    for Unsigned_38'Size use 38;
- 
-    type Unsigned_39 is mod 2 ** 39;
-    for Unsigned_39'Size use 39;
- 
-    type Unsigned_40 is mod 2 ** 40;
-    for Unsigned_40'Size use 40;
- 
-    type Unsigned_41 is mod 2 ** 41;
-    for Unsigned_41'Size use 41;
- 
-    type Unsigned_42 is mod 2 ** 42;
-    for Unsigned_42'Size use 42;
- 
-    type Unsigned_43 is mod 2 ** 43;
-    for Unsigned_43'Size use 43;
- 
-    type Unsigned_44 is mod 2 ** 44;
-    for Unsigned_44'Size use 44;
- 
-    type Unsigned_45 is mod 2 ** 45;
-    for Unsigned_45'Size use 45;
- 
-    type Unsigned_46 is mod 2 ** 46;
-    for Unsigned_46'Size use 46;
- 
-    type Unsigned_47 is mod 2 ** 47;
-    for Unsigned_47'Size use 47;
- 
-    type Unsigned_48 is mod 2 ** 48;
-    for Unsigned_48'Size use 48;
- 
-    type Unsigned_49 is mod 2 ** 49;
-    for Unsigned_49'Size use 49;
- 
-    type Unsigned_50 is mod 2 ** 50;
-    for Unsigned_50'Size use 50;
- 
-    type Unsigned_51 is mod 2 ** 51;
-    for Unsigned_51'Size use 51;
- 
-    type Unsigned_52 is mod 2 ** 52;
-    for Unsigned_52'Size use 52;
- 
-    type Unsigned_53 is mod 2 ** 53;
-    for Unsigned_53'Size use 53;
- 
-    type Unsigned_54 is mod 2 ** 54;
-    for Unsigned_54'Size use 54;
- 
-    type Unsigned_55 is mod 2 ** 55;
-    for Unsigned_55'Size use 55;
- 
-    type Unsigned_56 is mod 2 ** 56;
-    for Unsigned_56'Size use 56;
- 
-    type Unsigned_57 is mod 2 ** 57;
-    for Unsigned_57'Size use 57;
- 
-    type Unsigned_58 is mod 2 ** 58;
-    for Unsigned_58'Size use 58;
- 
-    type Unsigned_59 is mod 2 ** 59;
-    for Unsigned_59'Size use 59;
- 
-    type Unsigned_60 is mod 2 ** 60;
-    for Unsigned_60'Size use 60;
- 
-    type Unsigned_61 is mod 2 ** 61;
-    for Unsigned_61'Size use 61;
- 
-    type Unsigned_62 is mod 2 ** 62;
-    for Unsigned_62'Size use 62;
- 
-    type Unsigned_63 is mod 2 ** 63;
-    for Unsigned_63'Size use 63;
- 
-    type Unsigned_64 is mod 2 ** 64;
-    for Unsigned_64'Size use 64;
- 
-    type Signed_2 is range -2 ** 1 .. 2 ** 1 - 1;
-    for Signed_2'Size use 2;
- 
-    type Signed_3 is range -2 ** 2 .. 2 ** 2 - 1;
-    for Signed_3'Size use 3;
- 
-    type Signed_4 is range -2 ** 3 .. 2 ** 3 - 1;
-    for Signed_4'Size use 4;
- 
-    type Signed_5 is range -2 ** 4 .. 2 ** 4 - 1;
-    for Signed_5'Size use 5;
- 
-    type Signed_6 is range -2 ** 5 .. 2 ** 5 - 1;
-    for Signed_6'Size use 6;
- 
-    type Signed_7 is range -2 ** 6 .. 2 ** 6 - 1;
-    for Signed_7'Size use 7;
- 
-    type Signed_8 is range -2 ** 7 .. 2 ** 7 - 1;
-    for Signed_8'Size use 8;
- 
-    type Signed_9 is range -2 ** 8 .. 2 ** 8 - 1;
-    for Signed_9'Size use 9;
- 
-    type Signed_10 is range -2 ** 9 .. 2 ** 9 - 1;
-    for Signed_10'Size use 10;
- 
-    type Signed_11 is range -2 ** 10 .. 2 ** 10 - 1;
-    for Signed_11'Size use 11;
- 
-    type Signed_12 is range -2 ** 11 .. 2 ** 11 - 1;
-    for Signed_12'Size use 12;
- 
-    type Signed_13 is range -2 ** 12 .. 2 ** 12 - 1;
-    for Signed_13'Size use 13;
- 
-    type Signed_14 is range -2 ** 13 .. 2 ** 13 - 1;
-    for Signed_14'Size use 14;
- 
-    type Signed_15 is range -2 ** 14 .. 2 ** 14 - 1;
-    for Signed_15'Size use 15;
- 
-    type Signed_16 is range -2 ** 15 .. 2 ** 15 - 1;
-    for Signed_16'Size use 16;
- 
-    type Signed_17 is range -2 ** 16 .. 2 ** 16 - 1;
-    for Signed_17'Size use 17;
- 
-    type Signed_18 is range -2 ** 17 .. 2 ** 17 - 1;
-    for Signed_18'Size use 18;
- 
-    type Signed_19 is range -2 ** 18 .. 2 ** 18 - 1;
-    for Signed_19'Size use 19;
- 
-    type Signed_20 is range -2 ** 19 .. 2 ** 19 - 1;
-    for Signed_20'Size use 20;
- 
-    type Signed_21 is range -2 ** 20 .. 2 ** 20 - 1;
-    for Signed_21'Size use 21;
- 
-    type Signed_22 is range -2 ** 21 .. 2 ** 21 - 1;
-    for Signed_22'Size use 22;
- 
-    type Signed_23 is range -2 ** 22 .. 2 ** 22 - 1;
-    for Signed_23'Size use 23;
- 
-    type Signed_24 is range -2 ** 23 .. 2 ** 23 - 1;
-    for Signed_24'Size use 24;
- 
-    type Signed_25 is range -2 ** 24 .. 2 ** 24 - 1;
-    for Signed_25'Size use 25;
- 
-    type Signed_26 is range -2 ** 25 .. 2 ** 25 - 1;
-    for Signed_26'Size use 26;
- 
-    type Signed_27 is range -2 ** 26 .. 2 ** 26 - 1;
-    for Signed_27'Size use 27;
- 
-    type Signed_28 is range -2 ** 27 .. 2 ** 27 - 1;
-    for Signed_28'Size use 28;
- 
-    type Signed_29 is range -2 ** 28 .. 2 ** 28 - 1;
-    for Signed_29'Size use 29;
- 
-    type Signed_30 is range -2 ** 29 .. 2 ** 29 - 1;
-    for Signed_30'Size use 30;
- 
-    type Signed_31 is range -2 ** 30 .. 2 ** 30 - 1;
-    for Signed_31'Size use 31;
- 
-    type Signed_32 is range -2 ** 31 .. 2 ** 31 - 1;
-    for Signed_32'Size use 32;
- 
-    type Signed_33 is range -2 ** 32 .. 2 ** 32 - 1;
-    for Signed_33'Size use 33;
- 
-    type Signed_34 is range -2 ** 33 .. 2 ** 33 - 1;
-    for Signed_34'Size use 34;
- 
-    type Signed_35 is range -2 ** 34 .. 2 ** 34 - 1;
-    for Signed_35'Size use 35;
- 
-    type Signed_36 is range -2 ** 35 .. 2 ** 35 - 1;
-    for Signed_36'Size use 36;
- 
-    type Signed_37 is range -2 ** 36 .. 2 ** 36 - 1;
-    for Signed_37'Size use 37;
- 
-    type Signed_38 is range -2 ** 37 .. 2 ** 37 - 1;
-    for Signed_38'Size use 38;
- 
-    type Signed_39 is range -2 ** 38 .. 2 ** 38 - 1;
-    for Signed_39'Size use 39;
- 
-    type Signed_40 is range -2 ** 39 .. 2 ** 39 - 1;
-    for Signed_40'Size use 40;
- 
-    type Signed_41 is range -2 ** 40 .. 2 ** 40 - 1;
-    for Signed_41'Size use 41;
- 
-    type Signed_42 is range -2 ** 41 .. 2 ** 41 - 1;
-    for Signed_42'Size use 42;
- 
-    type Signed_43 is range -2 ** 42 .. 2 ** 42 - 1;
-    for Signed_43'Size use 43;
- 
-    type Signed_44 is range -2 ** 43 .. 2 ** 43 - 1;
-    for Signed_44'Size use 44;
- 
-    type Signed_45 is range -2 ** 44 .. 2 ** 44 - 1;
-    for Signed_45'Size use 45;
- 
-    type Signed_46 is range -2 ** 45 .. 2 ** 45 - 1;
-    for Signed_46'Size use 46;
- 
-    type Signed_47 is range -2 ** 46 .. 2 ** 46 - 1;
-    for Signed_47'Size use 47;
- 
-    type Signed_48 is range -2 ** 47 .. 2 ** 47 - 1;
-    for Signed_48'Size use 48;
- 
-    type Signed_49 is range -2 ** 48 .. 2 ** 48 - 1;
-    for Signed_49'Size use 49;
- 
-    type Signed_50 is range -2 ** 49 .. 2 ** 49 - 1;
-    for Signed_50'Size use 50;
- 
-    type Signed_51 is range -2 ** 50 .. 2 ** 50 - 1;
-    for Signed_51'Size use 51;
- 
-    type Signed_52 is range -2 ** 51 .. 2 ** 51 - 1;
-    for Signed_52'Size use 52;
- 
-    type Signed_53 is range -2 ** 52 .. 2 ** 52 - 1;
-    for Signed_53'Size use 53;
- 
-    type Signed_54 is range -2 ** 53 .. 2 ** 53 - 1;
-    for Signed_54'Size use 54;
- 
-    type Signed_55 is range -2 ** 54 .. 2 ** 54 - 1;
-    for Signed_55'Size use 55;
- 
-    type Signed_56 is range -2 ** 55 .. 2 ** 55 - 1;
-    for Signed_56'Size use 56;
- 
-    type Signed_57 is range -2 ** 56 .. 2 ** 56 - 1;
-    for Signed_57'Size use 57;
- 
-    type Signed_58 is range -2 ** 57 .. 2 ** 57 - 1;
-    for Signed_58'Size use 58;
- 
-    type Signed_59 is range -2 ** 58 .. 2 ** 58 - 1;
-    for Signed_59'Size use 59;
- 
-    type Signed_60 is range -2 ** 59 .. 2 ** 59 - 1;
-    for Signed_60'Size use 60;
- 
-    type Signed_61 is range -2 ** 60 .. 2 ** 60 - 1;
-    for Signed_61'Size use 61;
- 
-    type Signed_62 is range -2 ** 61 .. 2 ** 61 - 1;
-    for Signed_62'Size use 62;
- 
-    type Signed_63 is range -2 ** 62 .. 2 ** 62 - 1;
-    for Signed_63'Size use 63;
- 
-    type Signed_64 is range -2 ** 63 .. 2 ** 63 - 1;
-    for Signed_64'Size use 64;
- 
- end Interfaces.C.Extensions;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/i-cobol.adb gcc-8.1.0/gcc/ada/i-cobol.adb
*** gcc-7.3.0/gcc/ada/i-cobol.adb	Fri Jan 13 10:19:19 2017
--- gcc-8.1.0/gcc/ada/i-cobol.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,993 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                     I N T E R F A C E S . C O B O L                      --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  The body of Interfaces.COBOL is implementation independent (i.e. the same
- --  version is used with all versions of GNAT). The specialization to a
- --  particular COBOL format is completely contained in the private part of
- --  the spec.
- 
- with Interfaces; use Interfaces;
- with System;     use System;
- with Ada.Unchecked_Conversion;
- 
- package body Interfaces.COBOL is
- 
-    -----------------------------------------------
-    -- Declarations for External Binary Handling --
-    -----------------------------------------------
- 
-    subtype B1 is Byte_Array (1 .. 1);
-    subtype B2 is Byte_Array (1 .. 2);
-    subtype B4 is Byte_Array (1 .. 4);
-    subtype B8 is Byte_Array (1 .. 8);
-    --  Representations for 1,2,4,8 byte binary values
- 
-    function To_B1 is new Ada.Unchecked_Conversion (Integer_8,  B1);
-    function To_B2 is new Ada.Unchecked_Conversion (Integer_16, B2);
-    function To_B4 is new Ada.Unchecked_Conversion (Integer_32, B4);
-    function To_B8 is new Ada.Unchecked_Conversion (Integer_64, B8);
-    --  Conversions from native binary to external binary
- 
-    function From_B1 is new Ada.Unchecked_Conversion (B1, Integer_8);
-    function From_B2 is new Ada.Unchecked_Conversion (B2, Integer_16);
-    function From_B4 is new Ada.Unchecked_Conversion (B4, Integer_32);
-    function From_B8 is new Ada.Unchecked_Conversion (B8, Integer_64);
-    --  Conversions from external binary to signed native binary
- 
-    function From_B1U is new Ada.Unchecked_Conversion (B1, Unsigned_8);
-    function From_B2U is new Ada.Unchecked_Conversion (B2, Unsigned_16);
-    function From_B4U is new Ada.Unchecked_Conversion (B4, Unsigned_32);
-    function From_B8U is new Ada.Unchecked_Conversion (B8, Unsigned_64);
-    --  Conversions from external binary to unsigned native binary
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    function Binary_To_Decimal
-      (Item   : Byte_Array;
-       Format : Binary_Format) return Integer_64;
-    --  This function converts a numeric value in the given format to its
-    --  corresponding integer value. This is the non-generic implementation
-    --  of Decimal_Conversions.To_Decimal. The generic routine does the
-    --  final conversion to the fixed-point format.
- 
-    function Numeric_To_Decimal
-      (Item   : Numeric;
-       Format : Display_Format) return Integer_64;
-    --  This function converts a numeric value in the given format to its
-    --  corresponding integer value. This is the non-generic implementation
-    --  of Decimal_Conversions.To_Decimal. The generic routine does the
-    --  final conversion to the fixed-point format.
- 
-    function Packed_To_Decimal
-      (Item   : Packed_Decimal;
-       Format : Packed_Format) return Integer_64;
-    --  This function converts a packed value in the given format to its
-    --  corresponding integer value. This is the non-generic implementation
-    --  of Decimal_Conversions.To_Decimal. The generic routine does the
-    --  final conversion to the fixed-point format.
- 
-    procedure Swap (B : in out Byte_Array; F : Binary_Format);
-    --  Swaps the bytes if required by the binary format F
- 
-    function To_Display
-      (Item   : Integer_64;
-       Format : Display_Format;
-       Length : Natural) return Numeric;
-    --  This function converts the given integer value into display format,
-    --  using the given format, with the length in bytes of the result given
-    --  by the last parameter. This is the non-generic implementation of
-    --  Decimal_Conversions.To_Display. The conversion of the item from its
-    --  original decimal format to Integer_64 is done by the generic routine.
- 
-    function To_Packed
-      (Item   : Integer_64;
-       Format : Packed_Format;
-       Length : Natural) return Packed_Decimal;
-    --  This function converts the given integer value into packed format,
-    --  using the given format, with the length in digits of the result given
-    --  by the last parameter. This is the non-generic implementation of
-    --  Decimal_Conversions.To_Display. The conversion of the item from its
-    --  original decimal format to Integer_64 is done by the generic routine.
- 
-    function Valid_Numeric
-      (Item   : Numeric;
-       Format : Display_Format) return Boolean;
-    --  This is the non-generic implementation of Decimal_Conversions.Valid
-    --  for the display case.
- 
-    function Valid_Packed
-      (Item   : Packed_Decimal;
-       Format : Packed_Format) return Boolean;
-    --  This is the non-generic implementation of Decimal_Conversions.Valid
-    --  for the packed case.
- 
-    -----------------------
-    -- Binary_To_Decimal --
-    -----------------------
- 
-    function Binary_To_Decimal
-      (Item   : Byte_Array;
-       Format : Binary_Format) return Integer_64
-    is
-       Len : constant Natural := Item'Length;
- 
-    begin
-       if Len = 1 then
-          if Format in Binary_Unsigned_Format then
-             return Integer_64 (From_B1U (Item));
-          else
-             return Integer_64 (From_B1 (Item));
-          end if;
- 
-       elsif Len = 2 then
-          declare
-             R : B2 := Item;
- 
-          begin
-             Swap (R, Format);
- 
-             if Format in Binary_Unsigned_Format then
-                return Integer_64 (From_B2U (R));
-             else
-                return Integer_64 (From_B2 (R));
-             end if;
-          end;
- 
-       elsif Len = 4 then
-          declare
-             R : B4 := Item;
- 
-          begin
-             Swap (R, Format);
- 
-             if Format in Binary_Unsigned_Format then
-                return Integer_64 (From_B4U (R));
-             else
-                return Integer_64 (From_B4 (R));
-             end if;
-          end;
- 
-       elsif Len = 8 then
-          declare
-             R : B8 := Item;
- 
-          begin
-             Swap (R, Format);
- 
-             if Format in Binary_Unsigned_Format then
-                return Integer_64 (From_B8U (R));
-             else
-                return Integer_64 (From_B8 (R));
-             end if;
-          end;
- 
-       --  Length is not 1, 2, 4 or 8
- 
-       else
-          raise Conversion_Error;
-       end if;
-    end Binary_To_Decimal;
- 
-    ------------------------
-    -- Numeric_To_Decimal --
-    ------------------------
- 
-    --  The following assumptions are made in the coding of this routine:
- 
-    --    The range of COBOL_Digits is compact and the ten values
-    --    represent the digits 0-9 in sequence
- 
-    --    The range of COBOL_Plus_Digits is compact and the ten values
-    --    represent the digits 0-9 in sequence with a plus sign.
- 
-    --    The range of COBOL_Minus_Digits is compact and the ten values
-    --    represent the digits 0-9 in sequence with a minus sign.
- 
-    --    The COBOL_Minus_Digits set is disjoint from COBOL_Digits
- 
-    --  These assumptions are true for all COBOL representations we know of
- 
-    function Numeric_To_Decimal
-      (Item   : Numeric;
-       Format : Display_Format) return Integer_64
-    is
-       pragma Unsuppress (Range_Check);
-       Sign   : COBOL_Character := COBOL_Plus;
-       Result : Integer_64 := 0;
- 
-    begin
-       if not Valid_Numeric (Item, Format) then
-          raise Conversion_Error;
-       end if;
- 
-       for J in Item'Range loop
-          declare
-             K : constant COBOL_Character := Item (J);
- 
-          begin
-             if K in COBOL_Digits then
-                Result := Result * 10 +
-                            (COBOL_Character'Pos (K) -
-                              COBOL_Character'Pos (COBOL_Digits'First));
- 
-             elsif K in COBOL_Plus_Digits then
-                Result := Result * 10 +
-                            (COBOL_Character'Pos (K) -
-                              COBOL_Character'Pos (COBOL_Plus_Digits'First));
- 
-             elsif K in COBOL_Minus_Digits then
-                Result := Result * 10 +
-                            (COBOL_Character'Pos (K) -
-                              COBOL_Character'Pos (COBOL_Minus_Digits'First));
-                Sign := COBOL_Minus;
- 
-             --  Only remaining possibility is COBOL_Plus or COBOL_Minus
- 
-             else
-                Sign := K;
-             end if;
-          end;
-       end loop;
- 
-       if Sign = COBOL_Plus then
-          return Result;
-       else
-          return -Result;
-       end if;
- 
-    exception
-       when Constraint_Error =>
-          raise Conversion_Error;
- 
-    end Numeric_To_Decimal;
- 
-    -----------------------
-    -- Packed_To_Decimal --
-    -----------------------
- 
-    function Packed_To_Decimal
-      (Item   : Packed_Decimal;
-       Format : Packed_Format) return Integer_64
-    is
-       pragma Unsuppress (Range_Check);
-       Result : Integer_64 := 0;
-       Sign   : constant Decimal_Element := Item (Item'Last);
- 
-    begin
-       if not Valid_Packed (Item, Format) then
-          raise Conversion_Error;
-       end if;
- 
-       case Packed_Representation is
-          when IBM =>
-             for J in Item'First .. Item'Last - 1 loop
-                Result := Result * 10 + Integer_64 (Item (J));
-             end loop;
- 
-             if Sign = 16#0B# or else Sign = 16#0D# then
-                return -Result;
-             else
-                return +Result;
-             end if;
-       end case;
- 
-    exception
-       when Constraint_Error =>
-          raise Conversion_Error;
-    end Packed_To_Decimal;
- 
-    ----------
-    -- Swap --
-    ----------
- 
-    procedure Swap (B : in out Byte_Array; F : Binary_Format) is
-       Little_Endian : constant Boolean :=
-                         System.Default_Bit_Order = System.Low_Order_First;
- 
-    begin
-       --  Return if no swap needed
- 
-       case F is
-          when H | HU =>
-             if not Little_Endian then
-                return;
-             end if;
- 
-          when L | LU =>
-             if Little_Endian then
-                return;
-             end if;
- 
-          when N | NU =>
-             return;
-       end case;
- 
-       --  Here a swap is needed
- 
-       declare
-          Len : constant Natural := B'Length;
- 
-       begin
-          for J in 1 .. Len / 2 loop
-             declare
-                Temp : constant Byte := B (J);
- 
-             begin
-                B (J) := B (Len + 1 - J);
-                B (Len + 1 - J) := Temp;
-             end;
-          end loop;
-       end;
-    end Swap;
- 
-    -----------------------
-    -- To_Ada (function) --
-    -----------------------
- 
-    function To_Ada (Item : Alphanumeric) return String is
-       Result : String (Item'Range);
- 
-    begin
-       for J in Item'Range loop
-          Result (J) := COBOL_To_Ada (Item (J));
-       end loop;
- 
-       return Result;
-    end To_Ada;
- 
-    ------------------------
-    -- To_Ada (procedure) --
-    ------------------------
- 
-    procedure To_Ada
-      (Item   : Alphanumeric;
-       Target : out String;
-       Last   : out Natural)
-    is
-       Last_Val : Integer;
- 
-    begin
-       if Item'Length > Target'Length then
-          raise Constraint_Error;
-       end if;
- 
-       Last_Val := Target'First - 1;
-       for J in Item'Range loop
-          Last_Val := Last_Val + 1;
-          Target (Last_Val) := COBOL_To_Ada (Item (J));
-       end loop;
- 
-       Last := Last_Val;
-    end To_Ada;
- 
-    -------------------------
-    -- To_COBOL (function) --
-    -------------------------
- 
-    function To_COBOL (Item : String) return Alphanumeric is
-       Result : Alphanumeric (Item'Range);
- 
-    begin
-       for J in Item'Range loop
-          Result (J) := Ada_To_COBOL (Item (J));
-       end loop;
- 
-       return Result;
-    end To_COBOL;
- 
-    --------------------------
-    -- To_COBOL (procedure) --
-    --------------------------
- 
-    procedure To_COBOL
-      (Item   : String;
-       Target : out Alphanumeric;
-       Last   : out Natural)
-    is
-       Last_Val : Integer;
- 
-    begin
-       if Item'Length > Target'Length then
-          raise Constraint_Error;
-       end if;
- 
-       Last_Val := Target'First - 1;
-       for J in Item'Range loop
-          Last_Val := Last_Val + 1;
-          Target (Last_Val) := Ada_To_COBOL (Item (J));
-       end loop;
- 
-       Last := Last_Val;
-    end To_COBOL;
- 
-    ----------------
-    -- To_Display --
-    ----------------
- 
-    function To_Display
-      (Item   : Integer_64;
-       Format : Display_Format;
-       Length : Natural) return Numeric
-    is
-       Result : Numeric (1 .. Length);
-       Val    : Integer_64 := Item;
- 
-       procedure Convert (First, Last : Natural);
-       --  Convert the number in Val into COBOL_Digits, storing the result
-       --  in Result (First .. Last). Raise Conversion_Error if too large.
- 
-       procedure Embed_Sign (Loc : Natural);
-       --  Used for the nonseparate formats to embed the appropriate sign
-       --  at the specified location (i.e. at Result (Loc))
- 
-       -------------
-       -- Convert --
-       -------------
- 
-       procedure Convert (First, Last : Natural) is
-          J : Natural;
- 
-       begin
-          J := Last;
-          while J >= First loop
-             Result (J) :=
-               COBOL_Character'Val
-                 (COBOL_Character'Pos (COBOL_Digits'First) +
-                                                    Integer (Val mod 10));
-             Val := Val / 10;
- 
-             if Val = 0 then
-                for K in First .. J - 1 loop
-                   Result (J) := COBOL_Digits'First;
-                end loop;
- 
-                return;
- 
-             else
-                J := J - 1;
-             end if;
-          end loop;
- 
-          raise Conversion_Error;
-       end Convert;
- 
-       ----------------
-       -- Embed_Sign --
-       ----------------
- 
-       procedure Embed_Sign (Loc : Natural) is
-          Digit : Natural range 0 .. 9;
- 
-       begin
-          Digit := COBOL_Character'Pos (Result (Loc)) -
-                   COBOL_Character'Pos (COBOL_Digits'First);
- 
-          if Item >= 0 then
-             Result (Loc) :=
-               COBOL_Character'Val
-                 (COBOL_Character'Pos (COBOL_Plus_Digits'First) + Digit);
-          else
-             Result (Loc) :=
-               COBOL_Character'Val
-                 (COBOL_Character'Pos (COBOL_Minus_Digits'First) + Digit);
-          end if;
-       end Embed_Sign;
- 
-    --  Start of processing for To_Display
- 
-    begin
-       case Format is
-          when Unsigned =>
-             if Val < 0 then
-                raise Conversion_Error;
-             else
-                Convert (1, Length);
-             end if;
- 
-          when Leading_Separate =>
-             if Val < 0 then
-                Result (1) := COBOL_Minus;
-                Val := -Val;
-             else
-                Result (1) := COBOL_Plus;
-             end if;
- 
-             Convert (2, Length);
- 
-          when Trailing_Separate =>
-             if Val < 0 then
-                Result (Length) := COBOL_Minus;
-                Val := -Val;
-             else
-                Result (Length) := COBOL_Plus;
-             end if;
- 
-             Convert (1, Length - 1);
- 
-          when Leading_Nonseparate =>
-             Val := abs Val;
-             Convert (1, Length);
-             Embed_Sign (1);
- 
-          when Trailing_Nonseparate =>
-             Val := abs Val;
-             Convert (1, Length);
-             Embed_Sign (Length);
-       end case;
- 
-       return Result;
-    end To_Display;
- 
-    ---------------
-    -- To_Packed --
-    ---------------
- 
-    function To_Packed
-      (Item   : Integer_64;
-       Format : Packed_Format;
-       Length : Natural) return Packed_Decimal
-    is
-       Result : Packed_Decimal (1 .. Length);
-       Val    : Integer_64;
- 
-       procedure Convert (First, Last : Natural);
-       --  Convert the number in Val into a sequence of Decimal_Element values,
-       --  storing the result in Result (First .. Last). Raise Conversion_Error
-       --  if the value is too large to fit.
- 
-       -------------
-       -- Convert --
-       -------------
- 
-       procedure Convert (First, Last : Natural) is
-          J : Natural := Last;
- 
-       begin
-          while J >= First loop
-             Result (J) := Decimal_Element (Val mod 10);
- 
-             Val := Val / 10;
- 
-             if Val = 0 then
-                for K in First .. J - 1 loop
-                   Result (K) := 0;
-                end loop;
- 
-                return;
- 
-             else
-                J := J - 1;
-             end if;
-          end loop;
- 
-          raise Conversion_Error;
-       end Convert;
- 
-    --  Start of processing for To_Packed
- 
-    begin
-       case Packed_Representation is
-          when IBM =>
-             if Format = Packed_Unsigned then
-                if Item < 0 then
-                   raise Conversion_Error;
-                else
-                   Result (Length) := 16#F#;
-                   Val := Item;
-                end if;
- 
-             elsif Item >= 0 then
-                Result (Length) := 16#C#;
-                Val := Item;
- 
-             else -- Item < 0
-                Result (Length) := 16#D#;
-                Val := -Item;
-             end if;
- 
-             Convert (1, Length - 1);
-             return Result;
-       end case;
-    end To_Packed;
- 
-    -------------------
-    -- Valid_Numeric --
-    -------------------
- 
-    function Valid_Numeric
-      (Item   : Numeric;
-       Format : Display_Format) return Boolean
-    is
-    begin
-       if Item'Length = 0 then
-          return False;
-       end if;
- 
-       --  All character positions except first and last must be Digits.
-       --  This is true for all the formats.
- 
-       for J in Item'First + 1 .. Item'Last - 1 loop
-          if Item (J) not in COBOL_Digits then
-             return False;
-          end if;
-       end loop;
- 
-       case Format is
-          when Unsigned =>
-             return Item (Item'First) in COBOL_Digits
-               and then Item (Item'Last) in COBOL_Digits;
- 
-          when Leading_Separate =>
-             return (Item (Item'First) = COBOL_Plus or else
-                     Item (Item'First) = COBOL_Minus)
-               and then Item (Item'Last) in COBOL_Digits;
- 
-          when Trailing_Separate =>
-             return Item (Item'First) in COBOL_Digits
-               and then
-                 (Item (Item'Last) = COBOL_Plus or else
-                  Item (Item'Last) = COBOL_Minus);
- 
-          when Leading_Nonseparate =>
-             return (Item (Item'First) in COBOL_Plus_Digits or else
-                     Item (Item'First) in COBOL_Minus_Digits)
-               and then Item (Item'Last) in COBOL_Digits;
- 
-          when Trailing_Nonseparate =>
-             return Item (Item'First) in COBOL_Digits
-               and then
-                 (Item (Item'Last) in COBOL_Plus_Digits or else
-                  Item (Item'Last) in COBOL_Minus_Digits);
- 
-       end case;
-    end Valid_Numeric;
- 
-    ------------------
-    -- Valid_Packed --
-    ------------------
- 
-    function Valid_Packed
-      (Item   : Packed_Decimal;
-       Format : Packed_Format) return Boolean
-    is
-    begin
-       case Packed_Representation is
-          when IBM =>
-             for J in Item'First .. Item'Last - 1 loop
-                if Item (J) > 9 then
-                   return False;
-                end if;
-             end loop;
- 
-             --  For unsigned, sign digit must be F
- 
-             if Format = Packed_Unsigned then
-                return Item (Item'Last) = 16#F#;
- 
-             --  For signed, accept all standard and non-standard signs
- 
-             else
-                return Item (Item'Last) in 16#A# .. 16#F#;
-             end if;
-       end case;
-    end Valid_Packed;
- 
-    -------------------------
-    -- Decimal_Conversions --
-    -------------------------
- 
-    package body Decimal_Conversions is
- 
-       ---------------------
-       -- Length (binary) --
-       ---------------------
- 
-       --  Note that the tests here are all compile time tests
- 
-       function Length (Format : Binary_Format) return Natural is
-          pragma Unreferenced (Format);
-       begin
-          if Num'Digits <= 2 then
-             return 1;
-          elsif Num'Digits <= 4 then
-             return 2;
-          elsif Num'Digits <= 9 then
-             return 4;
-          else -- Num'Digits in 10 .. 18
-             return 8;
-          end if;
-       end Length;
- 
-       ----------------------
-       -- Length (display) --
-       ----------------------
- 
-       function Length (Format : Display_Format) return Natural is
-       begin
-          if Format = Leading_Separate or else Format = Trailing_Separate then
-             return Num'Digits + 1;
-          else
-             return Num'Digits;
-          end if;
-       end Length;
- 
-       ---------------------
-       -- Length (packed) --
-       ---------------------
- 
-       --  Note that the tests here are all compile time checks
- 
-       function Length
-         (Format : Packed_Format) return Natural
-       is
-          pragma Unreferenced (Format);
-       begin
-          case Packed_Representation is
-             when IBM =>
-                return (Num'Digits + 2) / 2 * 2;
-          end case;
-       end Length;
- 
-       ---------------
-       -- To_Binary --
-       ---------------
- 
-       function To_Binary
-         (Item   : Num;
-          Format : Binary_Format) return Byte_Array
-       is
-       begin
-          --  Note: all these tests are compile time tests
- 
-          if Num'Digits <= 2 then
-             return To_B1 (Integer_8'Integer_Value (Item));
- 
-          elsif Num'Digits <= 4 then
-             declare
-                R : B2 := To_B2 (Integer_16'Integer_Value (Item));
- 
-             begin
-                Swap (R, Format);
-                return R;
-             end;
- 
-          elsif Num'Digits <= 9 then
-             declare
-                R : B4 := To_B4 (Integer_32'Integer_Value (Item));
- 
-             begin
-                Swap (R, Format);
-                return R;
-             end;
- 
-          else -- Num'Digits in 10 .. 18
-             declare
-                R : B8 := To_B8 (Integer_64'Integer_Value (Item));
- 
-             begin
-                Swap (R, Format);
-                return R;
-             end;
-          end if;
- 
-       exception
-          when Constraint_Error =>
-             raise Conversion_Error;
-       end To_Binary;
- 
-       ---------------------------------
-       -- To_Binary (internal binary) --
-       ---------------------------------
- 
-       function To_Binary (Item : Num) return Binary is
-          pragma Unsuppress (Range_Check);
-       begin
-          return Binary'Integer_Value (Item);
-       exception
-          when Constraint_Error =>
-             raise Conversion_Error;
-       end To_Binary;
- 
-       -------------------------
-       -- To_Decimal (binary) --
-       -------------------------
- 
-       function To_Decimal
-         (Item   : Byte_Array;
-          Format : Binary_Format) return Num
-       is
-          pragma Unsuppress (Range_Check);
-       begin
-          return Num'Fixed_Value (Binary_To_Decimal (Item, Format));
-       exception
-          when Constraint_Error =>
-             raise Conversion_Error;
-       end To_Decimal;
- 
-       ----------------------------------
-       -- To_Decimal (internal binary) --
-       ----------------------------------
- 
-       function To_Decimal (Item : Binary) return Num is
-          pragma Unsuppress (Range_Check);
-       begin
-          return Num'Fixed_Value (Item);
-       exception
-          when Constraint_Error =>
-             raise Conversion_Error;
-       end To_Decimal;
- 
-       --------------------------
-       -- To_Decimal (display) --
-       --------------------------
- 
-       function To_Decimal
-         (Item   : Numeric;
-          Format : Display_Format) return Num
-       is
-          pragma Unsuppress (Range_Check);
- 
-       begin
-          return Num'Fixed_Value (Numeric_To_Decimal (Item, Format));
-       exception
-          when Constraint_Error =>
-             raise Conversion_Error;
-       end To_Decimal;
- 
-       ---------------------------------------
-       -- To_Decimal (internal long binary) --
-       ---------------------------------------
- 
-       function To_Decimal (Item : Long_Binary) return Num is
-          pragma Unsuppress (Range_Check);
-       begin
-          return Num'Fixed_Value (Item);
-       exception
-          when Constraint_Error =>
-             raise Conversion_Error;
-       end To_Decimal;
- 
-       -------------------------
-       -- To_Decimal (packed) --
-       -------------------------
- 
-       function To_Decimal
-         (Item   : Packed_Decimal;
-          Format : Packed_Format) return Num
-       is
-          pragma Unsuppress (Range_Check);
-       begin
-          return Num'Fixed_Value (Packed_To_Decimal (Item, Format));
-       exception
-          when Constraint_Error =>
-             raise Conversion_Error;
-       end To_Decimal;
- 
-       ----------------
-       -- To_Display --
-       ----------------
- 
-       function To_Display
-         (Item   : Num;
-          Format : Display_Format) return Numeric
-       is
-          pragma Unsuppress (Range_Check);
-       begin
-          return
-            To_Display
-              (Integer_64'Integer_Value (Item),
-               Format,
-               Length (Format));
-       exception
-          when Constraint_Error =>
-             raise Conversion_Error;
-       end To_Display;
- 
-       --------------------
-       -- To_Long_Binary --
-       --------------------
- 
-       function To_Long_Binary (Item : Num) return Long_Binary is
-          pragma Unsuppress (Range_Check);
-       begin
-          return Long_Binary'Integer_Value (Item);
-       exception
-          when Constraint_Error =>
-             raise Conversion_Error;
-       end To_Long_Binary;
- 
-       ---------------
-       -- To_Packed --
-       ---------------
- 
-       function To_Packed
-         (Item   : Num;
-          Format : Packed_Format) return Packed_Decimal
-       is
-          pragma Unsuppress (Range_Check);
-       begin
-          return
-            To_Packed
-              (Integer_64'Integer_Value (Item),
-               Format,
-               Length (Format));
-       exception
-          when Constraint_Error =>
-             raise Conversion_Error;
-       end To_Packed;
- 
-       --------------------
-       -- Valid (binary) --
-       --------------------
- 
-       function Valid
-         (Item   : Byte_Array;
-          Format : Binary_Format) return Boolean
-       is
-          Val : Num;
-          pragma Unreferenced (Val);
-       begin
-          Val := To_Decimal (Item, Format);
-          return True;
-       exception
-          when Conversion_Error =>
-             return False;
-       end Valid;
- 
-       ---------------------
-       -- Valid (display) --
-       ---------------------
- 
-       function Valid
-         (Item   : Numeric;
-          Format : Display_Format) return Boolean
-       is
-       begin
-          return Valid_Numeric (Item, Format);
-       end Valid;
- 
-       --------------------
-       -- Valid (packed) --
-       --------------------
- 
-       function Valid
-         (Item   : Packed_Decimal;
-          Format : Packed_Format) return Boolean
-       is
-       begin
-          return Valid_Packed (Item, Format);
-       end Valid;
- 
-    end Decimal_Conversions;
- 
- end Interfaces.COBOL;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/i-cobol.ads gcc-8.1.0/gcc/ada/i-cobol.ads
*** gcc-7.3.0/gcc/ada/i-cobol.ads	Mon Apr 18 12:58:22 2016
--- gcc-8.1.0/gcc/ada/i-cobol.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,553 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                      I N T E R F A C E S . C O B O L                     --
- --                                                                          --
- --                                 S p e c                                  --
- --                             (ASCII Version)                              --
- --                                                                          --
- --          Copyright (C) 1993-2015, Free Software Foundation, 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 version of the COBOL interfaces package assumes that the COBOL
- --  compiler uses ASCII as its internal representation of characters, i.e.
- --  that the type COBOL_Character has the same representation as the Ada
- --  type Standard.Character.
- 
- package Interfaces.COBOL is
-    pragma Preelaborate (COBOL);
- 
-    ------------------------------------------------------------
-    -- Types And Operations For Internal Data Representations --
-    ------------------------------------------------------------
- 
-    type Floating      is new Float;
-    type Long_Floating is new Long_Float;
- 
-    type Binary        is new Integer;
-    type Long_Binary   is new Long_Long_Integer;
- 
-    Max_Digits_Binary      : constant := 9;
-    Max_Digits_Long_Binary : constant := 18;
- 
-    type Decimal_Element is mod 2**4;
-    type Packed_Decimal is array (Positive range <>) of Decimal_Element;
-    pragma Pack (Packed_Decimal);
- 
-    type COBOL_Character is new Character;
- 
-    Ada_To_COBOL : array (Standard.Character) of COBOL_Character := (
-      COBOL_Character'Val (000), COBOL_Character'Val (001),
-      COBOL_Character'Val (002), COBOL_Character'Val (003),
-      COBOL_Character'Val (004), COBOL_Character'Val (005),
-      COBOL_Character'Val (006), COBOL_Character'Val (007),
-      COBOL_Character'Val (008), COBOL_Character'Val (009),
-      COBOL_Character'Val (010), COBOL_Character'Val (011),
-      COBOL_Character'Val (012), COBOL_Character'Val (013),
-      COBOL_Character'Val (014), COBOL_Character'Val (015),
-      COBOL_Character'Val (016), COBOL_Character'Val (017),
-      COBOL_Character'Val (018), COBOL_Character'Val (019),
-      COBOL_Character'Val (020), COBOL_Character'Val (021),
-      COBOL_Character'Val (022), COBOL_Character'Val (023),
-      COBOL_Character'Val (024), COBOL_Character'Val (025),
-      COBOL_Character'Val (026), COBOL_Character'Val (027),
-      COBOL_Character'Val (028), COBOL_Character'Val (029),
-      COBOL_Character'Val (030), COBOL_Character'Val (031),
-      COBOL_Character'Val (032), COBOL_Character'Val (033),
-      COBOL_Character'Val (034), COBOL_Character'Val (035),
-      COBOL_Character'Val (036), COBOL_Character'Val (037),
-      COBOL_Character'Val (038), COBOL_Character'Val (039),
-      COBOL_Character'Val (040), COBOL_Character'Val (041),
-      COBOL_Character'Val (042), COBOL_Character'Val (043),
-      COBOL_Character'Val (044), COBOL_Character'Val (045),
-      COBOL_Character'Val (046), COBOL_Character'Val (047),
-      COBOL_Character'Val (048), COBOL_Character'Val (049),
-      COBOL_Character'Val (050), COBOL_Character'Val (051),
-      COBOL_Character'Val (052), COBOL_Character'Val (053),
-      COBOL_Character'Val (054), COBOL_Character'Val (055),
-      COBOL_Character'Val (056), COBOL_Character'Val (057),
-      COBOL_Character'Val (058), COBOL_Character'Val (059),
-      COBOL_Character'Val (060), COBOL_Character'Val (061),
-      COBOL_Character'Val (062), COBOL_Character'Val (063),
-      COBOL_Character'Val (064), COBOL_Character'Val (065),
-      COBOL_Character'Val (066), COBOL_Character'Val (067),
-      COBOL_Character'Val (068), COBOL_Character'Val (069),
-      COBOL_Character'Val (070), COBOL_Character'Val (071),
-      COBOL_Character'Val (072), COBOL_Character'Val (073),
-      COBOL_Character'Val (074), COBOL_Character'Val (075),
-      COBOL_Character'Val (076), COBOL_Character'Val (077),
-      COBOL_Character'Val (078), COBOL_Character'Val (079),
-      COBOL_Character'Val (080), COBOL_Character'Val (081),
-      COBOL_Character'Val (082), COBOL_Character'Val (083),
-      COBOL_Character'Val (084), COBOL_Character'Val (085),
-      COBOL_Character'Val (086), COBOL_Character'Val (087),
-      COBOL_Character'Val (088), COBOL_Character'Val (089),
-      COBOL_Character'Val (090), COBOL_Character'Val (091),
-      COBOL_Character'Val (092), COBOL_Character'Val (093),
-      COBOL_Character'Val (094), COBOL_Character'Val (095),
-      COBOL_Character'Val (096), COBOL_Character'Val (097),
-      COBOL_Character'Val (098), COBOL_Character'Val (099),
-      COBOL_Character'Val (100), COBOL_Character'Val (101),
-      COBOL_Character'Val (102), COBOL_Character'Val (103),
-      COBOL_Character'Val (104), COBOL_Character'Val (105),
-      COBOL_Character'Val (106), COBOL_Character'Val (107),
-      COBOL_Character'Val (108), COBOL_Character'Val (109),
-      COBOL_Character'Val (110), COBOL_Character'Val (111),
-      COBOL_Character'Val (112), COBOL_Character'Val (113),
-      COBOL_Character'Val (114), COBOL_Character'Val (115),
-      COBOL_Character'Val (116), COBOL_Character'Val (117),
-      COBOL_Character'Val (118), COBOL_Character'Val (119),
-      COBOL_Character'Val (120), COBOL_Character'Val (121),
-      COBOL_Character'Val (122), COBOL_Character'Val (123),
-      COBOL_Character'Val (124), COBOL_Character'Val (125),
-      COBOL_Character'Val (126), COBOL_Character'Val (127),
-      COBOL_Character'Val (128), COBOL_Character'Val (129),
-      COBOL_Character'Val (130), COBOL_Character'Val (131),
-      COBOL_Character'Val (132), COBOL_Character'Val (133),
-      COBOL_Character'Val (134), COBOL_Character'Val (135),
-      COBOL_Character'Val (136), COBOL_Character'Val (137),
-      COBOL_Character'Val (138), COBOL_Character'Val (139),
-      COBOL_Character'Val (140), COBOL_Character'Val (141),
-      COBOL_Character'Val (142), COBOL_Character'Val (143),
-      COBOL_Character'Val (144), COBOL_Character'Val (145),
-      COBOL_Character'Val (146), COBOL_Character'Val (147),
-      COBOL_Character'Val (148), COBOL_Character'Val (149),
-      COBOL_Character'Val (150), COBOL_Character'Val (151),
-      COBOL_Character'Val (152), COBOL_Character'Val (153),
-      COBOL_Character'Val (154), COBOL_Character'Val (155),
-      COBOL_Character'Val (156), COBOL_Character'Val (157),
-      COBOL_Character'Val (158), COBOL_Character'Val (159),
-      COBOL_Character'Val (160), COBOL_Character'Val (161),
-      COBOL_Character'Val (162), COBOL_Character'Val (163),
-      COBOL_Character'Val (164), COBOL_Character'Val (165),
-      COBOL_Character'Val (166), COBOL_Character'Val (167),
-      COBOL_Character'Val (168), COBOL_Character'Val (169),
-      COBOL_Character'Val (170), COBOL_Character'Val (171),
-      COBOL_Character'Val (172), COBOL_Character'Val (173),
-      COBOL_Character'Val (174), COBOL_Character'Val (175),
-      COBOL_Character'Val (176), COBOL_Character'Val (177),
-      COBOL_Character'Val (178), COBOL_Character'Val (179),
-      COBOL_Character'Val (180), COBOL_Character'Val (181),
-      COBOL_Character'Val (182), COBOL_Character'Val (183),
-      COBOL_Character'Val (184), COBOL_Character'Val (185),
-      COBOL_Character'Val (186), COBOL_Character'Val (187),
-      COBOL_Character'Val (188), COBOL_Character'Val (189),
-      COBOL_Character'Val (190), COBOL_Character'Val (191),
-      COBOL_Character'Val (192), COBOL_Character'Val (193),
-      COBOL_Character'Val (194), COBOL_Character'Val (195),
-      COBOL_Character'Val (196), COBOL_Character'Val (197),
-      COBOL_Character'Val (198), COBOL_Character'Val (199),
-      COBOL_Character'Val (200), COBOL_Character'Val (201),
-      COBOL_Character'Val (202), COBOL_Character'Val (203),
-      COBOL_Character'Val (204), COBOL_Character'Val (205),
-      COBOL_Character'Val (206), COBOL_Character'Val (207),
-      COBOL_Character'Val (208), COBOL_Character'Val (209),
-      COBOL_Character'Val (210), COBOL_Character'Val (211),
-      COBOL_Character'Val (212), COBOL_Character'Val (213),
-      COBOL_Character'Val (214), COBOL_Character'Val (215),
-      COBOL_Character'Val (216), COBOL_Character'Val (217),
-      COBOL_Character'Val (218), COBOL_Character'Val (219),
-      COBOL_Character'Val (220), COBOL_Character'Val (221),
-      COBOL_Character'Val (222), COBOL_Character'Val (223),
-      COBOL_Character'Val (224), COBOL_Character'Val (225),
-      COBOL_Character'Val (226), COBOL_Character'Val (227),
-      COBOL_Character'Val (228), COBOL_Character'Val (229),
-      COBOL_Character'Val (230), COBOL_Character'Val (231),
-      COBOL_Character'Val (232), COBOL_Character'Val (233),
-      COBOL_Character'Val (234), COBOL_Character'Val (235),
-      COBOL_Character'Val (236), COBOL_Character'Val (237),
-      COBOL_Character'Val (238), COBOL_Character'Val (239),
-      COBOL_Character'Val (240), COBOL_Character'Val (241),
-      COBOL_Character'Val (242), COBOL_Character'Val (243),
-      COBOL_Character'Val (244), COBOL_Character'Val (245),
-      COBOL_Character'Val (246), COBOL_Character'Val (247),
-      COBOL_Character'Val (248), COBOL_Character'Val (249),
-      COBOL_Character'Val (250), COBOL_Character'Val (251),
-      COBOL_Character'Val (252), COBOL_Character'Val (253),
-      COBOL_Character'Val (254), COBOL_Character'Val (255));
- 
-    COBOL_To_Ada : array (COBOL_Character) of Standard.Character := (
-      Standard.Character'Val (000), Standard.Character'Val (001),
-      Standard.Character'Val (002), Standard.Character'Val (003),
-      Standard.Character'Val (004), Standard.Character'Val (005),
-      Standard.Character'Val (006), Standard.Character'Val (007),
-      Standard.Character'Val (008), Standard.Character'Val (009),
-      Standard.Character'Val (010), Standard.Character'Val (011),
-      Standard.Character'Val (012), Standard.Character'Val (013),
-      Standard.Character'Val (014), Standard.Character'Val (015),
-      Standard.Character'Val (016), Standard.Character'Val (017),
-      Standard.Character'Val (018), Standard.Character'Val (019),
-      Standard.Character'Val (020), Standard.Character'Val (021),
-      Standard.Character'Val (022), Standard.Character'Val (023),
-      Standard.Character'Val (024), Standard.Character'Val (025),
-      Standard.Character'Val (026), Standard.Character'Val (027),
-      Standard.Character'Val (028), Standard.Character'Val (029),
-      Standard.Character'Val (030), Standard.Character'Val (031),
-      Standard.Character'Val (032), Standard.Character'Val (033),
-      Standard.Character'Val (034), Standard.Character'Val (035),
-      Standard.Character'Val (036), Standard.Character'Val (037),
-      Standard.Character'Val (038), Standard.Character'Val (039),
-      Standard.Character'Val (040), Standard.Character'Val (041),
-      Standard.Character'Val (042), Standard.Character'Val (043),
-      Standard.Character'Val (044), Standard.Character'Val (045),
-      Standard.Character'Val (046), Standard.Character'Val (047),
-      Standard.Character'Val (048), Standard.Character'Val (049),
-      Standard.Character'Val (050), Standard.Character'Val (051),
-      Standard.Character'Val (052), Standard.Character'Val (053),
-      Standard.Character'Val (054), Standard.Character'Val (055),
-      Standard.Character'Val (056), Standard.Character'Val (057),
-      Standard.Character'Val (058), Standard.Character'Val (059),
-      Standard.Character'Val (060), Standard.Character'Val (061),
-      Standard.Character'Val (062), Standard.Character'Val (063),
-      Standard.Character'Val (064), Standard.Character'Val (065),
-      Standard.Character'Val (066), Standard.Character'Val (067),
-      Standard.Character'Val (068), Standard.Character'Val (069),
-      Standard.Character'Val (070), Standard.Character'Val (071),
-      Standard.Character'Val (072), Standard.Character'Val (073),
-      Standard.Character'Val (074), Standard.Character'Val (075),
-      Standard.Character'Val (076), Standard.Character'Val (077),
-      Standard.Character'Val (078), Standard.Character'Val (079),
-      Standard.Character'Val (080), Standard.Character'Val (081),
-      Standard.Character'Val (082), Standard.Character'Val (083),
-      Standard.Character'Val (084), Standard.Character'Val (085),
-      Standard.Character'Val (086), Standard.Character'Val (087),
-      Standard.Character'Val (088), Standard.Character'Val (089),
-      Standard.Character'Val (090), Standard.Character'Val (091),
-      Standard.Character'Val (092), Standard.Character'Val (093),
-      Standard.Character'Val (094), Standard.Character'Val (095),
-      Standard.Character'Val (096), Standard.Character'Val (097),
-      Standard.Character'Val (098), Standard.Character'Val (099),
-      Standard.Character'Val (100), Standard.Character'Val (101),
-      Standard.Character'Val (102), Standard.Character'Val (103),
-      Standard.Character'Val (104), Standard.Character'Val (105),
-      Standard.Character'Val (106), Standard.Character'Val (107),
-      Standard.Character'Val (108), Standard.Character'Val (109),
-      Standard.Character'Val (110), Standard.Character'Val (111),
-      Standard.Character'Val (112), Standard.Character'Val (113),
-      Standard.Character'Val (114), Standard.Character'Val (115),
-      Standard.Character'Val (116), Standard.Character'Val (117),
-      Standard.Character'Val (118), Standard.Character'Val (119),
-      Standard.Character'Val (120), Standard.Character'Val (121),
-      Standard.Character'Val (122), Standard.Character'Val (123),
-      Standard.Character'Val (124), Standard.Character'Val (125),
-      Standard.Character'Val (126), Standard.Character'Val (127),
-      Standard.Character'Val (128), Standard.Character'Val (129),
-      Standard.Character'Val (130), Standard.Character'Val (131),
-      Standard.Character'Val (132), Standard.Character'Val (133),
-      Standard.Character'Val (134), Standard.Character'Val (135),
-      Standard.Character'Val (136), Standard.Character'Val (137),
-      Standard.Character'Val (138), Standard.Character'Val (139),
-      Standard.Character'Val (140), Standard.Character'Val (141),
-      Standard.Character'Val (142), Standard.Character'Val (143),
-      Standard.Character'Val (144), Standard.Character'Val (145),
-      Standard.Character'Val (146), Standard.Character'Val (147),
-      Standard.Character'Val (148), Standard.Character'Val (149),
-      Standard.Character'Val (150), Standard.Character'Val (151),
-      Standard.Character'Val (152), Standard.Character'Val (153),
-      Standard.Character'Val (154), Standard.Character'Val (155),
-      Standard.Character'Val (156), Standard.Character'Val (157),
-      Standard.Character'Val (158), Standard.Character'Val (159),
-      Standard.Character'Val (160), Standard.Character'Val (161),
-      Standard.Character'Val (162), Standard.Character'Val (163),
-      Standard.Character'Val (164), Standard.Character'Val (165),
-      Standard.Character'Val (166), Standard.Character'Val (167),
-      Standard.Character'Val (168), Standard.Character'Val (169),
-      Standard.Character'Val (170), Standard.Character'Val (171),
-      Standard.Character'Val (172), Standard.Character'Val (173),
-      Standard.Character'Val (174), Standard.Character'Val (175),
-      Standard.Character'Val (176), Standard.Character'Val (177),
-      Standard.Character'Val (178), Standard.Character'Val (179),
-      Standard.Character'Val (180), Standard.Character'Val (181),
-      Standard.Character'Val (182), Standard.Character'Val (183),
-      Standard.Character'Val (184), Standard.Character'Val (185),
-      Standard.Character'Val (186), Standard.Character'Val (187),
-      Standard.Character'Val (188), Standard.Character'Val (189),
-      Standard.Character'Val (190), Standard.Character'Val (191),
-      Standard.Character'Val (192), Standard.Character'Val (193),
-      Standard.Character'Val (194), Standard.Character'Val (195),
-      Standard.Character'Val (196), Standard.Character'Val (197),
-      Standard.Character'Val (198), Standard.Character'Val (199),
-      Standard.Character'Val (200), Standard.Character'Val (201),
-      Standard.Character'Val (202), Standard.Character'Val (203),
-      Standard.Character'Val (204), Standard.Character'Val (205),
-      Standard.Character'Val (206), Standard.Character'Val (207),
-      Standard.Character'Val (208), Standard.Character'Val (209),
-      Standard.Character'Val (210), Standard.Character'Val (211),
-      Standard.Character'Val (212), Standard.Character'Val (213),
-      Standard.Character'Val (214), Standard.Character'Val (215),
-      Standard.Character'Val (216), Standard.Character'Val (217),
-      Standard.Character'Val (218), Standard.Character'Val (219),
-      Standard.Character'Val (220), Standard.Character'Val (221),
-      Standard.Character'Val (222), Standard.Character'Val (223),
-      Standard.Character'Val (224), Standard.Character'Val (225),
-      Standard.Character'Val (226), Standard.Character'Val (227),
-      Standard.Character'Val (228), Standard.Character'Val (229),
-      Standard.Character'Val (230), Standard.Character'Val (231),
-      Standard.Character'Val (232), Standard.Character'Val (233),
-      Standard.Character'Val (234), Standard.Character'Val (235),
-      Standard.Character'Val (236), Standard.Character'Val (237),
-      Standard.Character'Val (238), Standard.Character'Val (239),
-      Standard.Character'Val (240), Standard.Character'Val (241),
-      Standard.Character'Val (242), Standard.Character'Val (243),
-      Standard.Character'Val (244), Standard.Character'Val (245),
-      Standard.Character'Val (246), Standard.Character'Val (247),
-      Standard.Character'Val (248), Standard.Character'Val (249),
-      Standard.Character'Val (250), Standard.Character'Val (251),
-      Standard.Character'Val (252), Standard.Character'Val (253),
-      Standard.Character'Val (254), Standard.Character'Val (255));
- 
-    type Alphanumeric is array (Positive range <>) of COBOL_Character;
-    --  pragma Pack (Alphanumeric);
- 
-    function To_COBOL (Item : String) return Alphanumeric;
-    function To_Ada   (Item : Alphanumeric) return String;
- 
-    procedure To_COBOL
-      (Item   : String;
-       Target : out Alphanumeric;
-       Last   : out Natural);
- 
-    procedure To_Ada
-      (Item   : Alphanumeric;
-       Target : out String;
-       Last   : out Natural);
- 
-    type Numeric is array (Positive range <>) of COBOL_Character;
-    --  pragma Pack (Numeric);
- 
-    --------------------------------------------
-    -- Formats For COBOL Data Representations --
-    --------------------------------------------
- 
-    type Display_Format is private;
- 
-    Unsigned             : constant Display_Format;
-    Leading_Separate     : constant Display_Format;
-    Trailing_Separate    : constant Display_Format;
-    Leading_Nonseparate  : constant Display_Format;
-    Trailing_Nonseparate : constant Display_Format;
- 
-    type Binary_Format is private;
- 
-    High_Order_First          : constant Binary_Format;
-    Low_Order_First           : constant Binary_Format;
-    Native_Binary             : constant Binary_Format;
-    High_Order_First_Unsigned : constant Binary_Format;
-    Low_Order_First_Unsigned  : constant Binary_Format;
-    Native_Binary_Unsigned    : constant Binary_Format;
- 
-    type Packed_Format is private;
- 
-    Packed_Unsigned   : constant Packed_Format;
-    Packed_Signed     : constant Packed_Format;
- 
-    ------------------------------------------------------------
-    -- Types For External Representation Of COBOL Binary Data --
-    ------------------------------------------------------------
- 
-    type Byte is mod 2 ** COBOL_Character'Size;
-    type Byte_Array is array (Positive range <>) of Byte;
-    --  pragma Pack (Byte_Array);
- 
-    Conversion_Error : exception;
- 
-    generic
-       type Num is delta <> digits <>;
- 
-    package Decimal_Conversions is
- 
-       --  Display Formats: data values are represented as Numeric
- 
-       function Valid
-         (Item   : Numeric;
-          Format : Display_Format) return Boolean;
- 
-       function Length
-         (Format : Display_Format) return Natural;
- 
-       function To_Decimal
-         (Item   : Numeric;
-          Format : Display_Format)
-          return   Num;
- 
-       function To_Display
-         (Item   : Num;
-          Format : Display_Format) return Numeric;
- 
-       --  Packed Formats: data values are represented as Packed_Decimal
- 
-       function Valid
-         (Item   : Packed_Decimal;
-          Format : Packed_Format) return Boolean;
- 
-       function Length
-         (Format : Packed_Format) return Natural;
- 
-       function To_Decimal
-         (Item   : Packed_Decimal;
-          Format : Packed_Format) return Num;
- 
-       function To_Packed
-         (Item   : Num;
-          Format : Packed_Format) return Packed_Decimal;
- 
-       --  Binary Formats: external data values are represented as Byte_Array
- 
-       function Valid
-         (Item   : Byte_Array;
-          Format : Binary_Format) return Boolean;
- 
-       function Length
-         (Format : Binary_Format)
-          return   Natural;
- 
-       function To_Decimal
-         (Item   : Byte_Array;
-          Format : Binary_Format) return Num;
- 
-       function To_Binary
-         (Item   : Num;
-          Format : Binary_Format) return Byte_Array;
- 
-       --  Internal Binary formats: data values are of type Binary/Long_Binary
- 
-       function To_Decimal (Item : Binary)      return Num;
-       function To_Decimal (Item : Long_Binary) return Num;
- 
-       function To_Binary      (Item : Num) return Binary;
-       function To_Long_Binary (Item : Num) return Long_Binary;
- 
-    private
-       pragma Inline (Length);
-       pragma Inline (To_Binary);
-       pragma Inline (To_Decimal);
-       pragma Inline (To_Display);
-       pragma Inline (To_Long_Binary);
-       pragma Inline (Valid);
- 
-    end Decimal_Conversions;
- 
-    ------------------------------------------
-    -- Implementation Dependent Definitions --
-    ------------------------------------------
- 
-    --  The implementation dependent definitions are wholly contained in the
-    --  private part of this spec (the body is implementation independent)
- 
- private
-    -------------------
-    -- Binary Format --
-    -------------------
- 
-    type Binary_Format is (H, L, N, HU, LU, NU);
- 
-    subtype Binary_Unsigned_Format is Binary_Format range HU .. NU;
- 
-    High_Order_First          : constant Binary_Format := H;
-    Low_Order_First           : constant Binary_Format := L;
-    Native_Binary             : constant Binary_Format := N;
-    High_Order_First_Unsigned : constant Binary_Format := HU;
-    Low_Order_First_Unsigned  : constant Binary_Format := LU;
-    Native_Binary_Unsigned    : constant Binary_Format := NU;
- 
-    ---------------------------
-    -- Packed Decimal Format --
-    ---------------------------
- 
-    --  Packed decimal numbers use the IBM mainframe format:
- 
-    --     dd dd ... dd dd ds
- 
-    --  where d are the Digits, in natural left to right order, and s is
-    --  the sign digit. If the number of Digits os even, then the high
-    --  order (leftmost) Digits is always a 0. For example, a six digit
-    --  number has the format:
- 
-    --     0d dd dd ds
- 
-    --  The sign digit has the possible values
- 
-    --     16#0A#     non-standard plus sign
-    --     16#0B#     non-standard minus sign
-    --     16#0C#     standard plus sign
-    --     16#0D#     standard minus sign
-    --     16#0E#     non-standard plus sign
-    --     16#0F#     standard unsigned sign
- 
-    --  The non-standard signs are recognized on input, but never generated
-    --  for output numbers. The 16#0F# distinguishes unsigned numbers from
-    --  signed positive numbers, but is treated as positive for computational
-    --  purposes. This format provides distinguished positive and negative
-    --  zero values, which behave the same in all operations.
- 
-    type Packed_Format is (U, S);
- 
-    Packed_Unsigned : constant Packed_Format := U;
-    Packed_Signed   : constant Packed_Format := S;
- 
-    type Packed_Representation_Type is (IBM);
-    --  Indicator for format used for packed decimal
- 
-    Packed_Representation : constant Packed_Representation_Type := IBM;
-    --  This version of the spec uses IBM internal format, as described above
- 
-    -----------------------------
-    -- Display Decimal Formats --
-    -----------------------------
- 
-    --  Display numbers are stored in standard ASCII format, as ASCII strings.
-    --  For the embedded signs, the following codes are used:
- 
-    --     0-9 positive:  16#30# .. 16#39# (i.e. natural ASCII digit code)
-    --     0-9 negative:  16#20# .. 16#29# (ASCII digit code - 16#10#)
- 
-    type Display_Format is (U, LS, TS, LN, TN);
- 
-    Unsigned             : constant Display_Format := U;
-    Leading_Separate     : constant Display_Format := LS;
-    Trailing_Separate    : constant Display_Format := TS;
-    Leading_Nonseparate  : constant Display_Format := LN;
-    Trailing_Nonseparate : constant Display_Format := TN;
- 
-    subtype COBOL_Digits is COBOL_Character range '0' .. '9';
-    --  Digit values in display decimal
- 
-    COBOL_Space : constant COBOL_Character := ' ';
-    COBOL_Plus  : constant COBOL_Character := '+';
-    COBOL_Minus : constant COBOL_Character := '-';
-    --  Sign values for Leading_Separate and Trailing_Separate formats
- 
-    subtype COBOL_Plus_Digits is COBOL_Character
-      range COBOL_Character'Val (16#30#) .. COBOL_Character'Val (16#39#);
-    --  Values used for embedded plus signs in nonseparate formats
- 
-    subtype COBOL_Minus_Digits is COBOL_Character
-      range COBOL_Character'Val (16#20#) .. COBOL_Character'Val (16#29#);
-    --  Values used for embedded minus signs in nonseparate formats
- 
- end Interfaces.COBOL;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/i-cpoint.adb gcc-8.1.0/gcc/ada/i-cpoint.adb
*** gcc-7.3.0/gcc/ada/i-cpoint.adb	Tue May 12 08:21:47 2015
--- gcc-8.1.0/gcc/ada/i-cpoint.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,295 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                I N T E R F A C E S . C . P O I N T E R S                 --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 Interfaces.C.Strings; use Interfaces.C.Strings;
- with System;               use System;
- 
- with Ada.Unchecked_Conversion;
- 
- package body Interfaces.C.Pointers is
- 
-    type Addr is mod 2 ** System.Parameters.ptr_bits;
- 
-    function To_Pointer is new Ada.Unchecked_Conversion (Addr,      Pointer);
-    function To_Addr    is new Ada.Unchecked_Conversion (Pointer,   Addr);
-    function To_Addr    is new Ada.Unchecked_Conversion (ptrdiff_t, Addr);
-    function To_Ptrdiff is new Ada.Unchecked_Conversion (Addr,      ptrdiff_t);
- 
-    Elmt_Size : constant ptrdiff_t :=
-                  (Element_Array'Component_Size
-                    + Storage_Unit - 1) / Storage_Unit;
- 
-    subtype Index_Base is Index'Base;
- 
-    ---------
-    -- "+" --
-    ---------
- 
-    function "+" (Left : Pointer; Right : ptrdiff_t) return Pointer is
-    begin
-       if Left = null then
-          raise Pointer_Error;
-       end if;
- 
-       return To_Pointer (To_Addr (Left) + To_Addr (Elmt_Size * Right));
-    end "+";
- 
-    function "+" (Left : ptrdiff_t; Right : Pointer) return Pointer is
-    begin
-       if Right = null then
-          raise Pointer_Error;
-       end if;
- 
-       return To_Pointer (To_Addr (Elmt_Size * Left) + To_Addr (Right));
-    end "+";
- 
-    ---------
-    -- "-" --
-    ---------
- 
-    function "-" (Left : Pointer; Right : ptrdiff_t) return Pointer is
-    begin
-       if Left = null then
-          raise Pointer_Error;
-       end if;
- 
-       return To_Pointer (To_Addr (Left) - To_Addr (Right * Elmt_Size));
-    end "-";
- 
-    function "-" (Left : Pointer; Right : Pointer) return ptrdiff_t is
-    begin
-       if Left = null or else Right = null then
-          raise Pointer_Error;
-       end if;
- 
-       return To_Ptrdiff (To_Addr (Left) - To_Addr (Right)) / Elmt_Size;
-    end "-";
- 
-    ----------------
-    -- Copy_Array --
-    ----------------
- 
-    procedure Copy_Array
-      (Source  : Pointer;
-       Target  : Pointer;
-       Length  : ptrdiff_t)
-    is
-       T : Pointer;
-       S : Pointer;
- 
-    begin
-       if Source = null or else Target = null then
-          raise Dereference_Error;
- 
-       --  Forward copy
- 
-       elsif To_Addr (Target) <= To_Addr (Source) then
-          T := Target;
-          S := Source;
-          for J in 1 .. Length loop
-             T.all := S.all;
-             Increment (T);
-             Increment (S);
-          end loop;
- 
-       --  Backward copy
- 
-       else
-          T := Target + Length;
-          S := Source + Length;
-          for J in 1 .. Length loop
-             Decrement (T);
-             Decrement (S);
-             T.all := S.all;
-          end loop;
-       end if;
-    end Copy_Array;
- 
-    ---------------------------
-    -- Copy_Terminated_Array --
-    ---------------------------
- 
-    procedure Copy_Terminated_Array
-      (Source     : Pointer;
-       Target     : Pointer;
-       Limit      : ptrdiff_t := ptrdiff_t'Last;
-       Terminator : Element := Default_Terminator)
-    is
-       L : ptrdiff_t;
-       S : Pointer := Source;
- 
-    begin
-       if Source = null or Target = null then
-          raise Dereference_Error;
-       end if;
- 
-       --  Compute array limited length (including the terminator)
- 
-       L := 0;
-       while L < Limit loop
-          L := L + 1;
-          exit when S.all = Terminator;
-          Increment (S);
-       end loop;
- 
-       Copy_Array (Source, Target, L);
-    end Copy_Terminated_Array;
- 
-    ---------------
-    -- Decrement --
-    ---------------
- 
-    procedure Decrement (Ref : in out Pointer) is
-    begin
-       Ref := Ref - 1;
-    end Decrement;
- 
-    ---------------
-    -- Increment --
-    ---------------
- 
-    procedure Increment (Ref : in out Pointer) is
-    begin
-       Ref := Ref + 1;
-    end Increment;
- 
-    -----------
-    -- Value --
-    -----------
- 
-    function Value
-      (Ref        : Pointer;
-       Terminator : Element := Default_Terminator) return Element_Array
-    is
-       P : Pointer;
-       L : constant Index_Base := Index'First;
-       H : Index_Base;
- 
-    begin
-       if Ref = null then
-          raise Dereference_Error;
- 
-       else
-          H := L;
-          P := Ref;
- 
-          loop
-             exit when P.all = Terminator;
-             H := Index_Base'Succ (H);
-             Increment (P);
-          end loop;
- 
-          declare
-             subtype A is Element_Array (L .. H);
- 
-             type PA is access A;
-             for PA'Size use System.Parameters.ptr_bits;
-             function To_PA is new Ada.Unchecked_Conversion (Pointer, PA);
- 
-          begin
-             return To_PA (Ref).all;
-          end;
-       end if;
-    end Value;
- 
-    function Value
-      (Ref    : Pointer;
-       Length : ptrdiff_t) return Element_Array
-    is
-       L : Index_Base;
-       H : Index_Base;
- 
-    begin
-       if Ref = null then
-          raise Dereference_Error;
- 
-       --  For length zero, we need to return a null slice, but we can't make
-       --  the bounds of this slice Index'First, since this could cause a
-       --  Constraint_Error if Index'First = Index'Base'First.
- 
-       elsif Length <= 0 then
-          declare
-             pragma Warnings (Off); -- kill warnings since X not assigned
-             X : Element_Array (Index'Succ (Index'First) .. Index'First);
-             pragma Warnings (On);
- 
-          begin
-             return X;
-          end;
- 
-       --  Normal case (length non-zero)
- 
-       else
-          L := Index'First;
-          H := Index'Val (Index'Pos (Index'First) + Length - 1);
- 
-          declare
-             subtype A is Element_Array (L .. H);
- 
-             type PA is access A;
-             for PA'Size use System.Parameters.ptr_bits;
-             function To_PA is new Ada.Unchecked_Conversion (Pointer, PA);
- 
-          begin
-             return To_PA (Ref).all;
-          end;
-       end if;
-    end Value;
- 
-    --------------------
-    -- Virtual_Length --
-    --------------------
- 
-    function Virtual_Length
-      (Ref        : Pointer;
-       Terminator : Element := Default_Terminator) return ptrdiff_t
-    is
-       P : Pointer;
-       C : ptrdiff_t;
- 
-    begin
-       if Ref = null then
-          raise Dereference_Error;
- 
-       else
-          C := 0;
-          P := Ref;
- 
-          while P.all /= Terminator loop
-             C := C + 1;
-             Increment (P);
-          end loop;
- 
-          return C;
-       end if;
-    end Virtual_Length;
- 
- end Interfaces.C.Pointers;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/i-cpoint.ads gcc-8.1.0/gcc/ada/i-cpoint.ads
*** gcc-7.3.0/gcc/ada/i-cpoint.ads	Fri Jan  4 12:49:55 2013
--- gcc-8.1.0/gcc/ada/i-cpoint.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,102 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                I N T E R F A C E S . C . P O I N T E R S                 --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1993-2011, Free Software Foundation, 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.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with System.Parameters;
- 
- generic
-    type Index is (<>);
-    type Element is private;
-    type Element_Array is array (Index range <>) of aliased Element;
-    Default_Terminator : Element;
- 
- package Interfaces.C.Pointers is
-    pragma Preelaborate;
- 
-    type Pointer is access all Element;
-    for Pointer'Size use System.Parameters.ptr_bits;
- 
-    pragma No_Strict_Aliasing (Pointer);
-    --  We turn off any strict aliasing assumptions for the pointer type,
-    --  since it is possible to create "improperly" aliased values.
- 
-    function Value
-      (Ref        : Pointer;
-       Terminator : Element := Default_Terminator) return Element_Array;
- 
-    function Value
-      (Ref    : Pointer;
-       Length : ptrdiff_t) return Element_Array;
- 
-    Pointer_Error : exception;
- 
-    --------------------------------
-    -- C-style Pointer Arithmetic --
-    --------------------------------
- 
-    function "+" (Left : Pointer;   Right : ptrdiff_t) return Pointer;
-    function "+" (Left : ptrdiff_t; Right : Pointer)   return Pointer;
-    function "-" (Left : Pointer;   Right : ptrdiff_t) return Pointer;
-    function "-" (Left : Pointer;   Right : Pointer)   return ptrdiff_t;
- 
-    procedure Increment (Ref : in out Pointer);
-    procedure Decrement (Ref : in out Pointer);
- 
-    pragma Convention (Intrinsic, "+");
-    pragma Convention (Intrinsic, "-");
-    pragma Convention (Intrinsic, Increment);
-    pragma Convention (Intrinsic, Decrement);
- 
-    function Virtual_Length
-      (Ref        : Pointer;
-       Terminator : Element := Default_Terminator) return ptrdiff_t;
- 
-    procedure Copy_Terminated_Array
-      (Source     : Pointer;
-       Target     : Pointer;
-       Limit      : ptrdiff_t := ptrdiff_t'Last;
-       Terminator : Element := Default_Terminator);
- 
-    procedure Copy_Array
-      (Source  : Pointer;
-       Target  : Pointer;
-       Length  : ptrdiff_t);
- 
- private
-    pragma Inline ("+");
-    pragma Inline ("-");
-    pragma Inline (Decrement);
-    pragma Inline (Increment);
- 
- end Interfaces.C.Pointers;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/i-cstrea.adb gcc-8.1.0/gcc/ada/i-cstrea.adb
*** gcc-7.3.0/gcc/ada/i-cstrea.adb	Fri Aug  1 09:38:48 2014
--- gcc-8.1.0/gcc/ada/i-cstrea.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,133 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                 I N T E R F A C E S . C _ S T R E A M S                  --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1996-2014, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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.Unchecked_Conversion;
- 
- package body Interfaces.C_Streams is
- 
-    use type System.CRTL.size_t;
- 
-    ----------------------------
-    -- Interfaced C functions --
-    ----------------------------
- 
-    function C_fread
-      (buffer : voids;
-       size   : size_t;
-       count  : size_t;
-       stream : FILEs) return size_t;
-    pragma Import (C, C_fread, "fread");
- 
-    function C_fwrite
-      (buffer : voids;
-       size   : size_t;
-       count  : size_t;
-       stream : FILEs) return size_t;
-    pragma Import (C, C_fwrite, "fwrite");
- 
-    function C_setvbuf
-      (stream : FILEs;
-       buffer : chars;
-       mode   : int;
-       size   : size_t) return int;
-    pragma Import (C, C_setvbuf, "setvbuf");
- 
-    ------------
-    -- fread --
-    ------------
- 
-    function fread
-      (buffer : voids;
-       size   : size_t;
-       count  : size_t;
-       stream : FILEs) return size_t
-    is
-    begin
-       return C_fread (buffer, size, count, stream);
-    end fread;
- 
-    ------------
-    -- fread --
-    ------------
- 
-    --  The following declarations should really be nested within fread, but
-    --  limitations in front end inlining make this undesirable right now ???
- 
-    type Byte_Buffer is array (0 .. size_t'Last / 2 - 1) of Unsigned_8;
-    --  This should really be 0 .. size_t'last, but there is a problem
-    --  in gigi in handling such types (introduced in GCC 3 Sep 2001)
-    --  since the size in bytes of this array overflows ???
- 
-    type Acc_Bytes is access all Byte_Buffer;
- 
-    function To_Acc_Bytes is new Ada.Unchecked_Conversion (voids, Acc_Bytes);
- 
-    function fread
-      (buffer : voids;
-       index  : size_t;
-       size   : size_t;
-       count  : size_t;
-       stream : FILEs) return size_t
-    is
-    begin
-       return C_fread
-         (To_Acc_Bytes (buffer) (index * size)'Address, size, count, stream);
-    end fread;
- 
-    ------------
-    -- fwrite --
-    ------------
- 
-    function fwrite
-      (buffer : voids;
-       size   : size_t;
-       count  : size_t;
-       stream : FILEs) return size_t
-    is
-    begin
-       return C_fwrite (buffer, size, count, stream);
-    end fwrite;
- 
-    -------------
-    -- setvbuf --
-    -------------
- 
-    function setvbuf
-      (stream : FILEs;
-       buffer : chars;
-       mode   : int;
-       size   : size_t) return int
-    is
-    begin
-       return C_setvbuf (stream, buffer, mode, size);
-    end setvbuf;
- 
- end Interfaces.C_Streams;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/i-cstrea.ads gcc-8.1.0/gcc/ada/i-cstrea.ads
*** gcc-7.3.0/gcc/ada/i-cstrea.ads	Fri Aug  1 10:04:35 2014
--- gcc-8.1.0/gcc/ada/i-cstrea.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,315 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                 I N T E R F A C E S . C _ S T R E A M S                  --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1995-2014, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 is a thin binding to selected functions in the C
- --  library that provide a complete interface for handling C streams.
- 
- with System.CRTL;
- 
- package Interfaces.C_Streams is
-    pragma Preelaborate;
- 
-    subtype chars is System.CRTL.chars;
-    subtype FILEs is System.CRTL.FILEs;
-    subtype int is System.CRTL.int;
-    subtype long is System.CRTL.long;
-    subtype size_t is System.CRTL.size_t;
-    subtype ssize_t is System.CRTL.ssize_t;
-    subtype int64 is System.CRTL.int64;
-    subtype voids is System.Address;
- 
-    NULL_Stream : constant FILEs;
-    --  Value returned (NULL in C) to indicate an fdopen/fopen/tmpfile error
- 
-    ----------------------------------
-    -- Constants Defined in stdio.h --
-    ----------------------------------
- 
-    EOF : constant int;
-    --  Used by a number of routines to indicate error or end of file
- 
-    IOFBF : constant int;
-    IOLBF : constant int;
-    IONBF : constant int;
-    --  Used to indicate buffering mode for setvbuf call
- 
-    L_tmpnam : constant int;
-    --  Maximum length of file name that can be returned by tmpnam
- 
-    SEEK_CUR : constant int;
-    SEEK_END : constant int;
-    SEEK_SET : constant int;
-    --  Used to indicate origin for fseek call
- 
-    function stdin  return FILEs;
-    function stdout return FILEs;
-    function stderr return FILEs;
-    --  Streams associated with standard files
- 
-    --------------------------
-    -- Standard C functions --
-    --------------------------
- 
-    --  The functions selected below are ones that are available in
-    --  UNIX (but not necessarily in ANSI C). These are very thin
-    --  interfaces which copy exactly the C headers. For more
-    --  documentation on these functions, see the Microsoft C "Run-Time
-    --  Library Reference" (Microsoft Press, 1990, ISBN 1-55615-225-6),
-    --  which includes useful information on system compatibility.
- 
-    procedure clearerr (stream : FILEs) renames System.CRTL.clearerr;
- 
-    function fclose (stream : FILEs) return int renames System.CRTL.fclose;
- 
-    function fdopen (handle : int; mode : chars) return FILEs
-      renames System.CRTL.fdopen;
- 
-    function feof (stream : FILEs) return int;
- 
-    function ferror (stream : FILEs) return int;
- 
-    function fflush (stream : FILEs) return int renames System.CRTL.fflush;
- 
-    function fgetc (stream : FILEs) return int renames System.CRTL.fgetc;
- 
-    function fgets (strng : chars; n : int; stream : FILEs) return chars
-      renames System.CRTL.fgets;
- 
-    function fileno (stream : FILEs) return int;
- 
-    function fopen
-      (filename : chars;
-       mode     : chars;
-       encoding : System.CRTL.Filename_Encoding := System.CRTL.UTF8)
-      return FILEs renames System.CRTL.fopen;
-    --  Note: to maintain target independence, use text_translation_required,
-    --  a boolean variable defined in sysdep.c to deal with the target
-    --  dependent text translation requirement. If this variable is set,
-    --  then b/t should be appended to the standard mode argument to set
-    --  the text translation mode off or on as required.
- 
-    function fputc (C : int; stream : FILEs) return int
-      renames System.CRTL.fputc;
- 
-    function fputwc (C : int; stream : FILEs) return int
-      renames System.CRTL.fputwc;
- 
-    function fputs (Strng : chars; Stream : FILEs) return int
-      renames System.CRTL.fputs;
- 
-    function fread
-      (buffer : voids;
-       size   : size_t;
-       count  : size_t;
-       stream : FILEs) return size_t;
- 
-    function fread
-      (buffer : voids;
-       index  : size_t;
-       size   : size_t;
-       count  : size_t;
-       stream : FILEs) return size_t;
-    --  Same as normal fread, but has a parameter 'index' that indicates
-    --  the starting index for the read within 'buffer' (which must be the
-    --  address of the beginning of a whole array object with an assumed
-    --  zero base). This is needed for systems that do not support taking
-    --  the address of an element within an array.
- 
-    function freopen
-      (filename : chars;
-       mode     : chars;
-       stream   : FILEs;
-       encoding : System.CRTL.Filename_Encoding := System.CRTL.UTF8)
-      return FILEs renames System.CRTL.freopen;
- 
-    function fseek
-      (stream : FILEs;
-       offset : long;
-       origin : int) return int
-      renames System.CRTL.fseek;
- 
-    function fseek64
-      (stream : FILEs;
-       offset : int64;
-       origin : int) return int
-      renames System.CRTL.fseek64;
- 
-    function ftell (stream : FILEs) return long
-      renames System.CRTL.ftell;
- 
-    function ftell64 (stream : FILEs) return int64
-      renames System.CRTL.ftell64;
- 
-    function fwrite
-      (buffer : voids;
-       size   : size_t;
-       count  : size_t;
-       stream : FILEs) return size_t;
- 
-    function isatty (handle : int) return int renames System.CRTL.isatty;
- 
-    procedure mktemp (template : chars) renames System.CRTL.mktemp;
-    --  The return value (which is just a pointer to template) is discarded
- 
-    procedure rewind (stream : FILEs) renames System.CRTL.rewind;
- 
-    function setvbuf
-      (stream : FILEs;
-       buffer : chars;
-       mode   : int;
-       size   : size_t) return int;
- 
-    procedure tmpnam (str : chars) renames System.CRTL.tmpnam;
-    --  The parameter must be a pointer to a string buffer of at least L_tmpnam
-    --  bytes (the call with a null parameter is not supported). The returned
-    --  value, which is just a copy of the input argument, is discarded.
- 
-    function tmpfile return FILEs renames System.CRTL.tmpfile;
- 
-    function ungetc (c : int; stream : FILEs) return int
-      renames System.CRTL.ungetc;
- 
-    function unlink (filename : chars) return int
-      renames System.CRTL.unlink;
- 
-    ---------------------
-    -- Extra functions --
-    ---------------------
- 
-    --  These functions supply slightly thicker bindings than those above.
-    --  They are derived from functions in the C Run-Time Library, but may
-    --  do a bit more work than just directly calling one of the Library
-    --  functions.
- 
-    function file_exists (name : chars) return int;
-    --  Tests if given name corresponds to an existing file
- 
-    function is_regular_file (handle : int) return int;
-    --  Tests if given handle is for a regular file (result 1) or for a
-    --  non-regular file (pipe or device, result 0).
- 
-    ---------------------------------
-    -- Control of Text/Binary Mode --
-    ---------------------------------
- 
-    procedure set_binary_mode (handle : int);
-    procedure set_text_mode   (handle : int);
-    --  If text_translation_required is true, then these two functions may
-    --  be used to dynamically switch a file from binary to text mode or vice
-    --  versa. These functions have no effect if text_translation_required is
-    --  false (e.g. in normal unix mode). Use fileno to get a stream handle.
- 
-    type Content_Encoding is (None, Default_Text, Text, U8text, Wtext, U16text);
-    for Content_Encoding use (0,    1,            2,    3,      4,     5);
-    pragma Convention (C, Content_Encoding);
-    --  Content_Encoding describes the text encoding for file content:
-    --    None         : No text encoding, this file is treated as a binary file
-    --    Default_Text : A text file but not from Text_Translation form string
-    --                   In this mode we are eventually using the system-wide
-    --                   translation if activated.
-    --    Text         : Text encoding activated
-    --    Wtext        : Unicode mode
-    --    U16text      : Unicode UTF-16 encoding
-    --    U8text       : Unicode UTF-8 encoding
-    --
-    --  This encoding is system dependent and only used on Windows systems.
-    --
-    --  Note that modifications to Content_Encoding must be synchronized with
-    --  sysdep.c:__gnat_set_mode.
- 
-    subtype Text_Content_Encoding
-      is Content_Encoding range Default_Text .. U16text;
- 
-    subtype Non_Default_Text_Content_Encoding
-      is Content_Encoding range Text .. U16text;
- 
-    procedure set_mode (handle : int; Mode : Content_Encoding);
-    --  As above but can set the handle to any mode. On Windows this can be used
-    --  to have proper 16-bit wide-string output on the console for example.
- 
-    ----------------------------
-    -- Full Path Name support --
-    ----------------------------
- 
-    procedure full_name (nam : chars; buffer : chars);
-    --  Given a NUL terminated string representing a file name, returns in
-    --  buffer a NUL terminated string representing the full path name for
-    --  the file name. On systems where it is relevant the drive is also part
-    --  of the full path name. It is the responsibility of the caller to
-    --  pass an actual parameter for buffer that is big enough for any full
-    --  path name. Use max_path_len given below as the size of buffer.
- 
-    max_path_len : constant Integer;
-    --  Maximum length of an allowable full path name on the system,including a
-    --  terminating NUL character. Declared as a constant to allow references
-    --  from other preelaborated GNAT library packages.
- 
- private
-    --  The following functions are specialized in the body depending on the
-    --  operating system.
- 
-    pragma Inline (fread);
-    pragma Inline (fwrite);
-    pragma Inline (setvbuf);
- 
-    pragma Import (C, file_exists, "__gnat_file_exists");
-    pragma Import (C, is_regular_file, "__gnat_is_regular_file_fd");
- 
-    pragma Import (C, set_binary_mode, "__gnat_set_binary_mode");
-    pragma Import (C, set_text_mode, "__gnat_set_text_mode");
-    pragma Import (C, set_mode, "__gnat_set_mode");
- 
-    pragma Import (C, max_path_len, "__gnat_max_path_len");
-    pragma Import (C, full_name, "__gnat_full_name");
- 
-    --  The following may be implemented as macros, and so are supported
-    --  via an interface function in the a-cstrea.c file.
- 
-    pragma Import (C, feof,   "__gnat_feof");
-    pragma Import (C, ferror, "__gnat_ferror");
-    pragma Import (C, fileno, "__gnat_fileno");
- 
-    pragma Import (C, EOF, "__gnat_constant_eof");
-    pragma Import (C, IOFBF, "__gnat_constant_iofbf");
-    pragma Import (C, IOLBF, "__gnat_constant_iolbf");
-    pragma Import (C, IONBF, "__gnat_constant_ionbf");
-    pragma Import (C, SEEK_CUR, "__gnat_constant_seek_cur");
-    pragma Import (C, SEEK_END, "__gnat_constant_seek_end");
-    pragma Import (C, SEEK_SET, "__gnat_constant_seek_set");
-    pragma Import (C, L_tmpnam, "__gnat_constant_l_tmpnam");
- 
-    pragma Import (C, stderr, "__gnat_constant_stderr");
-    pragma Import (C, stdin,  "__gnat_constant_stdin");
-    pragma Import (C, stdout, "__gnat_constant_stdout");
- 
-    NULL_Stream : constant FILEs := System.Null_Address;
- 
- end Interfaces.C_Streams;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/i-cstrin.adb gcc-8.1.0/gcc/ada/i-cstrin.adb
*** gcc-7.3.0/gcc/ada/i-cstrin.adb	Fri Jan  4 12:49:55 2013
--- gcc-8.1.0/gcc/ada/i-cstrin.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,360 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                 I N T E R F A C E S . C . S T R I N G S                  --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1992-2011, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 System; use System;
- with System.Storage_Elements; use System.Storage_Elements;
- 
- 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,
-    --  since arbitrary addresses can be converted, and it is quite likely that
-    --  this type will in fact be used for aliasing values of other types.
- 
-    function To_chars_ptr is
-       new Ada.Unchecked_Conversion (System.Parameters.C_Address, chars_ptr);
- 
-    function To_Address is
-       new Ada.Unchecked_Conversion (chars_ptr, System.Parameters.C_Address);
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    function Peek (From : chars_ptr) return char;
-    pragma Inline (Peek);
-    --  Given a chars_ptr value, obtain referenced character
- 
-    procedure Poke (Value : char; Into : chars_ptr);
-    pragma Inline (Poke);
-    --  Given a chars_ptr, modify referenced Character value
- 
-    function "+" (Left : chars_ptr; Right : size_t) return chars_ptr;
-    pragma Inline ("+");
-    --  Address arithmetic on chars_ptr value
- 
-    function Position_Of_Nul (Into : char_array) return size_t;
-    --  Returns position of the first Nul in Into or Into'Last + 1 if none
- 
-    --  We can't use directly System.Memory because the categorization is not
-    --  compatible, so we directly import here the malloc and free routines.
- 
-    function Memory_Alloc (Size : size_t) return chars_ptr;
-    pragma Import (C, Memory_Alloc, System.Parameters.C_Malloc_Linkname);
- 
-    procedure Memory_Free (Address : chars_ptr);
-    pragma Import (C, Memory_Free, "__gnat_free");
- 
-    ---------
-    -- "+" --
-    ---------
- 
-    function "+" (Left : chars_ptr; Right : size_t) return chars_ptr is
-    begin
-       return To_chars_ptr (To_Address (Left) + Storage_Offset (Right));
-    end "+";
- 
-    ----------
-    -- Free --
-    ----------
- 
-    procedure Free (Item : in out chars_ptr) is
-    begin
-       if Item = Null_Ptr then
-          return;
-       end if;
- 
-       Memory_Free (Item);
-       Item := Null_Ptr;
-    end Free;
- 
-    --------------------
-    -- New_Char_Array --
-    --------------------
- 
-    function New_Char_Array (Chars : char_array) return chars_ptr is
-       Index   : size_t;
-       Pointer : chars_ptr;
- 
-    begin
-       --  Get index of position of null. If Index > Chars'Last,
-       --  nul is absent and must be added explicitly.
- 
-       Index := Position_Of_Nul (Into => Chars);
-       Pointer := Memory_Alloc ((Index - Chars'First + 1));
- 
-       --  If nul is present, transfer string up to and including nul
- 
-       if Index <= Chars'Last then
-          Update (Item   => Pointer,
-                  Offset => 0,
-                  Chars  => Chars (Chars'First .. Index),
-                  Check  => False);
-       else
-          --  If original string has no nul, transfer whole string and add
-          --  terminator explicitly.
- 
-          Update (Item   => Pointer,
-                  Offset => 0,
-                  Chars  => Chars,
-                  Check  => False);
-          Poke (nul, Into => Pointer + size_t'(Chars'Length));
-       end if;
- 
-       return Pointer;
-    end New_Char_Array;
- 
-    ----------------
-    -- New_String --
-    ----------------
- 
-    function New_String (Str : String) return chars_ptr is
- 
-       --  It's important that this subprogram uses the heap directly to compute
-       --  the result, and doesn't copy the string on the stack, otherwise its
-       --  use is limited when used from tasks on large strings.
- 
-       Result : constant chars_ptr := Memory_Alloc (Str'Length + 1);
- 
-       Result_Array : char_array  (1 .. Str'Length + 1);
-       for Result_Array'Address use To_Address (Result);
-       pragma Import (Ada, Result_Array);
- 
-       Count : size_t;
- 
-    begin
-       To_C
-         (Item       => Str,
-          Target     => Result_Array,
-          Count      => Count,
-          Append_Nul => True);
-       return Result;
-    end New_String;
- 
-    ----------
-    -- Peek --
-    ----------
- 
-    function Peek (From : chars_ptr) return char is
-    begin
-       return char (From.all);
-    end Peek;
- 
-    ----------
-    -- Poke --
-    ----------
- 
-    procedure Poke (Value : char; Into : chars_ptr) is
-    begin
-       Into.all := Character (Value);
-    end Poke;
- 
-    ---------------------
-    -- Position_Of_Nul --
-    ---------------------
- 
-    function Position_Of_Nul (Into : char_array) return size_t is
-    begin
-       for J in Into'Range loop
-          if Into (J) = nul then
-             return J;
-          end if;
-       end loop;
- 
-       return Into'Last + 1;
-    end Position_Of_Nul;
- 
-    ------------
-    -- Strlen --
-    ------------
- 
-    function Strlen (Item : chars_ptr) return size_t is
-       Item_Index : size_t := 0;
- 
-    begin
-       if Item = Null_Ptr then
-          raise Dereference_Error;
-       end if;
- 
-       loop
-          if Peek (Item + Item_Index) = nul then
-             return Item_Index;
-          end if;
- 
-          Item_Index := Item_Index + 1;
-       end loop;
-    end Strlen;
- 
-    ------------------
-    -- To_Chars_Ptr --
-    ------------------
- 
-    function To_Chars_Ptr
-      (Item      : char_array_access;
-       Nul_Check : Boolean := False) return chars_ptr
-    is
-    begin
-       if Item = null then
-          return Null_Ptr;
-       elsif Nul_Check
-         and then Position_Of_Nul (Into => Item.all) > Item'Last
-       then
-          raise Terminator_Error;
-       else
-          return To_chars_ptr (Item (Item'First)'Address);
-       end if;
-    end To_Chars_Ptr;
- 
-    ------------
-    -- Update --
-    ------------
- 
-    procedure Update
-      (Item   : chars_ptr;
-       Offset : size_t;
-       Chars  : char_array;
-       Check  : Boolean := True)
-    is
-       Index : chars_ptr := Item + Offset;
- 
-    begin
-       if Check and then Offset + Chars'Length  > Strlen (Item) then
-          raise Update_Error;
-       end if;
- 
-       for J in Chars'Range loop
-          Poke (Chars (J), Into => Index);
-          Index := Index + size_t'(1);
-       end loop;
-    end Update;
- 
-    procedure Update
-      (Item   : chars_ptr;
-       Offset : size_t;
-       Str    : String;
-       Check  : Boolean := True)
-    is
-    begin
-       --  Note: in RM 95, the Append_Nul => False parameter is omitted. But
-       --  this has the unintended consequence of truncating the string after
-       --  an update. As discussed in Ada 2005 AI-242, this was unintended,
-       --  and should be corrected. Since this is a clear error, it seems
-       --  appropriate to apply the correction in Ada 95 mode as well.
- 
-       Update (Item, Offset, To_C (Str, Append_Nul => False), Check);
-    end Update;
- 
-    -----------
-    -- Value --
-    -----------
- 
-    function Value (Item : chars_ptr) return char_array is
-       Result : char_array (0 .. Strlen (Item));
- 
-    begin
-       if Item = Null_Ptr then
-          raise Dereference_Error;
-       end if;
- 
-       --  Note that the following loop will also copy the terminating Nul
- 
-       for J in Result'Range loop
-          Result (J) := Peek (Item + J);
-       end loop;
- 
-       return Result;
-    end Value;
- 
-    function Value
-      (Item   : chars_ptr;
-       Length : size_t) return char_array
-    is
-    begin
-       if Item = Null_Ptr then
-          raise Dereference_Error;
-       end if;
- 
-       --  ACATS cxb3010 checks that Constraint_Error gets raised when Length
-       --  is 0. Seems better to check that Length is not null before declaring
-       --  an array with size_t bounds of 0 .. Length - 1 anyway.
- 
-       if Length = 0 then
-          raise Constraint_Error;
-       end if;
- 
-       declare
-          Result : char_array (0 .. Length - 1);
- 
-       begin
-          for J in Result'Range loop
-             Result (J) := Peek (Item + J);
- 
-             if Result (J) = nul then
-                return Result (0 .. J);
-             end if;
-          end loop;
- 
-          return Result;
-       end;
-    end Value;
- 
-    function Value (Item : chars_ptr) return String is
-    begin
-       return To_Ada (Value (Item));
-    end Value;
- 
-    function Value (Item : chars_ptr; Length : size_t) return String is
-       Result : char_array (0 .. Length);
- 
-    begin
-       --  As per AI-00177, this is equivalent to:
- 
-       --    To_Ada (Value (Item, Length) & nul);
- 
-       if Item = Null_Ptr then
-          raise Dereference_Error;
-       end if;
- 
-       for J in 0 .. Length - 1 loop
-          Result (J) := Peek (Item + J);
- 
-          if Result (J) = nul then
-             return To_Ada (Result (0 .. J));
-          end if;
-       end loop;
- 
-       Result (Length) := nul;
-       return To_Ada (Result);
-    end Value;
- 
- end Interfaces.C.Strings;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/i-cstrin.ads gcc-8.1.0/gcc/ada/i-cstrin.ads
*** gcc-7.3.0/gcc/ada/i-cstrin.ads	Wed Jun 11 12:29:22 2014
--- gcc-8.1.0/gcc/ada/i-cstrin.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,106 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                 I N T E R F A C E S . C . S T R I N G S                  --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1993-2014, Free Software Foundation, 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 Interfaces.C.Strings is
-    pragma Preelaborate;
- 
-    type char_array_access is access all char_array;
-    for char_array_access'Size use System.Parameters.ptr_bits;
- 
-    pragma No_Strict_Aliasing (char_array_access);
-    --  Since this type is used for external interfacing, with the pointer
-    --  coming from who knows where, it seems a good idea to turn off any
-    --  strict aliasing assumptions for this type.
- 
-    type chars_ptr is private;
-    pragma Preelaborable_Initialization (chars_ptr);
- 
-    type chars_ptr_array is array (size_t range <>) of aliased chars_ptr;
- 
-    Null_Ptr : constant chars_ptr;
- 
-    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;
- 
-    pragma No_Strict_Aliasing (chars_ptr);
-    --  Since this type is used for external interfacing, with the pointer
-    --  coming from who knows where, it seems a good idea to turn off any
-    --  strict aliasing assumptions for this type.
- 
-    Null_Ptr : constant chars_ptr := null;
- end Interfaces.C.Strings;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/i-fortra.adb gcc-8.1.0/gcc/ada/i-fortra.adb
*** gcc-7.3.0/gcc/ada/i-fortra.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/i-fortra.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,142 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                   I N T E R F A C E S . F O R T R A N                    --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          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- --
- -- 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 Interfaces.Fortran is
- 
-    ------------
-    -- To_Ada --
-    ------------
- 
-    --  Single character case
- 
-    function To_Ada (Item : Character_Set) return Character is
-    begin
-       return Character (Item);
-    end To_Ada;
- 
-    --  String case (function returning converted result)
- 
-    function To_Ada (Item : Fortran_Character) return String is
-       T : String (1 .. Item'Length);
- 
-    begin
-       for J in T'Range loop
-          T (J) := Character (Item (J - 1 + Item'First));
-       end loop;
- 
-       return T;
-    end To_Ada;
- 
-    --  String case (procedure copying converted string to given buffer)
- 
-    procedure To_Ada
-      (Item   : Fortran_Character;
-       Target : out String;
-       Last   : out Natural)
-    is
-    begin
-       if Item'Length = 0 then
-          Last := 0;
-          return;
- 
-       elsif Target'Length = 0 then
-          raise Constraint_Error;
- 
-       else
-          Last := Target'First - 1;
- 
-          for J in Item'Range loop
-             Last := Last + 1;
- 
-             if Last > Target'Last then
-                raise Constraint_Error;
-             else
-                Target (Last) := Character (Item (J));
-             end if;
-          end loop;
-       end if;
-    end To_Ada;
- 
-    ----------------
-    -- To_Fortran --
-    ----------------
- 
-    --  Character case
- 
-    function To_Fortran (Item : Character) return Character_Set is
-    begin
-       return Character_Set (Item);
-    end To_Fortran;
- 
-    --  String case (function returning converted result)
- 
-    function To_Fortran (Item : String) return Fortran_Character is
-       T : Fortran_Character (1 .. Item'Length);
- 
-    begin
-       for J in T'Range loop
-          T (J) := Character_Set (Item (J - 1 + Item'First));
-       end loop;
- 
-       return T;
-    end To_Fortran;
- 
-    --  String case (procedure copying converted string to given buffer)
- 
-    procedure To_Fortran
-      (Item   : String;
-       Target : out Fortran_Character;
-       Last   : out Natural)
-    is
-    begin
-       if Item'Length = 0 then
-          Last := 0;
-          return;
- 
-       elsif Target'Length = 0 then
-          raise Constraint_Error;
- 
-       else
-          Last := Target'First - 1;
- 
-          for J in Item'Range loop
-             Last := Last + 1;
- 
-             if Last > Target'Last then
-                raise Constraint_Error;
-             else
-                Target (Last) := Character_Set (Item (J));
-             end if;
-          end loop;
-       end if;
-    end To_Fortran;
- 
- end Interfaces.Fortran;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/i-fortra.ads gcc-8.1.0/gcc/ada/i-fortra.ads
*** gcc-7.3.0/gcc/ada/i-fortra.ads	Fri Oct 10 12:18:17 2014
--- gcc-8.1.0/gcc/ada/i-fortra.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,107 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                   I N T E R F A C E S . F O R T R A N                    --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Numerics.Generic_Complex_Types;
- pragma Elaborate_All (Ada.Numerics.Generic_Complex_Types);
- 
- package Interfaces.Fortran is
-    pragma Pure;
- 
-    type Fortran_Integer  is new Integer;
-    type Real             is new Float;
-    type Double_Precision is new Long_Float;
- 
-    type Logical is new Boolean;
-    for Logical'Size use Integer'Size;
-    pragma Convention (Fortran, Logical);
-    --  As required by Fortran standard, logical allocates same space as
-    --  an integer. The convention is important, since in Fortran, Booleans
-    --  are implemented with zero/non-zero semantics for False/True, and the
-    --  pragma Convention (Fortran) activates the special handling required
-    --  in this case.
- 
-    package Single_Precision_Complex_Types is
-       new Ada.Numerics.Generic_Complex_Types (Real);
- 
-    package Double_Precision_Complex_Types is
-       new Ada.Numerics.Generic_Complex_Types (Double_Precision);
- 
-    type Complex is new Single_Precision_Complex_Types.Complex;
- 
-    type Double_Complex is new Double_Precision_Complex_Types.Complex;
- 
-    subtype Imaginary is Single_Precision_Complex_Types.Imaginary;
-    i : Imaginary renames Single_Precision_Complex_Types.i;
-    j : Imaginary renames Single_Precision_Complex_Types.j;
- 
-    type Character_Set is new Character;
- 
-    type Fortran_Character is array (Positive range <>) of Character_Set;
- 
-    --  Additional declarations as permitted by Ada 2012, p.608, paragraph 21.
-    --  Interoperability with Fortran 77's vendor extension using star
-    --  notation and Fortran 90's intrinsic types with kind=n parameter.
-    --  The following assumes that `n' matches the byte size, which
-    --  most Fortran compiler, including GCC's follow.
- 
-    type Integer_Star_1  is new Integer_8;
-    type Integer_Kind_1  is new Integer_8;
-    type Integer_Star_2  is new Integer_16;
-    type Integer_Kind_2  is new Integer_16;
-    type Integer_Star_4  is new Integer_32;
-    type Integer_Kind_4  is new Integer_32;
-    type Integer_Star_8  is new Integer_64;
-    type Integer_Kind_8  is new Integer_64;
- 
-    type Logical_Star_1  is new Boolean with Convention => Fortran, Size =>  8;
-    type Logical_Star_2  is new Boolean with Convention => Fortran, Size => 16;
-    type Logical_Star_4  is new Boolean with Convention => Fortran, Size => 32;
-    type Logical_Star_8  is new Boolean with Convention => Fortran, Size => 64;
-    type Logical_Kind_1  is new Boolean with Convention => Fortran, Size =>  8;
-    type Logical_Kind_2  is new Boolean with Convention => Fortran, Size => 16;
-    type Logical_Kind_4  is new Boolean with Convention => Fortran, Size => 32;
-    type Logical_Kind_8  is new Boolean with Convention => Fortran, Size => 64;
- 
-    type Real_Star_4  is new Float;
-    type Real_Kind_4  is new Float;
-    type Real_Star_8  is new Long_Float;
-    type Real_Kind_8  is new Long_Float;
-    --  In the kind syntax, n is the same as the associated real kind
- 
-    type Complex_Star_8  is new Complex;
-    type Complex_Kind_4  is new Complex;
-    type Complex_Star_16 is new Double_Complex;
-    type Complex_Kind_8  is new Double_Complex;
-    --  In the star syntax, n is twice as large (real+imaginary size)
- 
-    type Character_Kind_n is new Fortran_Character;
- 
-    function To_Fortran (Item : Character)     return Character_Set;
-    function To_Ada     (Item : Character_Set) return Character;
- 
-    function To_Fortran (Item : String)            return Fortran_Character;
-    function To_Ada     (Item : Fortran_Character) return String;
- 
-    procedure To_Fortran
-      (Item   : String;
-       Target : out Fortran_Character;
-       Last   : out Natural);
- 
-    procedure To_Ada
-      (Item   : Fortran_Character;
-       Target : out String;
-       Last   : out Natural);
- 
- end Interfaces.Fortran;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/i-pacdec.adb gcc-8.1.0/gcc/ada/i-pacdec.adb
*** gcc-7.3.0/gcc/ada/i-pacdec.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/i-pacdec.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,352 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --            I N T E R F A C E S . P A C K E D _ D E C I M A L             --
- --                                                                          --
- --                                 B o d y                                  --
- --            (Version for IBM Mainframe Packed Decimal Format)             --
- --                                                                          --
- --          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- --
- -- 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 System; use System;
- 
- with Ada.Unchecked_Conversion;
- 
- package body Interfaces.Packed_Decimal is
- 
-    type Packed is array (Byte_Length) of Unsigned_8;
-    --  The type used internally to represent packed decimal
- 
-    type Packed_Ptr is access Packed;
-    function To_Packed_Ptr is
-      new Ada.Unchecked_Conversion (Address, Packed_Ptr);
- 
-    --  The following array is used to convert a value in the range 0-99 to
-    --  a packed decimal format with two hexadecimal nibbles. It is worth
-    --  using table look up in this direction because divides are expensive.
- 
-    Packed_Byte : constant array (00 .. 99) of Unsigned_8 :=
-       (16#00#, 16#01#, 16#02#, 16#03#, 16#04#,
-        16#05#, 16#06#, 16#07#, 16#08#, 16#09#,
-        16#10#, 16#11#, 16#12#, 16#13#, 16#14#,
-        16#15#, 16#16#, 16#17#, 16#18#, 16#19#,
-        16#20#, 16#21#, 16#22#, 16#23#, 16#24#,
-        16#25#, 16#26#, 16#27#, 16#28#, 16#29#,
-        16#30#, 16#31#, 16#32#, 16#33#, 16#34#,
-        16#35#, 16#36#, 16#37#, 16#38#, 16#39#,
-        16#40#, 16#41#, 16#42#, 16#43#, 16#44#,
-        16#45#, 16#46#, 16#47#, 16#48#, 16#49#,
-        16#50#, 16#51#, 16#52#, 16#53#, 16#54#,
-        16#55#, 16#56#, 16#57#, 16#58#, 16#59#,
-        16#60#, 16#61#, 16#62#, 16#63#, 16#64#,
-        16#65#, 16#66#, 16#67#, 16#68#, 16#69#,
-        16#70#, 16#71#, 16#72#, 16#73#, 16#74#,
-        16#75#, 16#76#, 16#77#, 16#78#, 16#79#,
-        16#80#, 16#81#, 16#82#, 16#83#, 16#84#,
-        16#85#, 16#86#, 16#87#, 16#88#, 16#89#,
-        16#90#, 16#91#, 16#92#, 16#93#, 16#94#,
-        16#95#, 16#96#, 16#97#, 16#98#, 16#99#);
- 
-    ---------------------
-    -- Int32_To_Packed --
-    ---------------------
- 
-    procedure Int32_To_Packed (V : Integer_32; P : System.Address; D : D32) is
-       PP           : constant Packed_Ptr  := To_Packed_Ptr (P);
-       Empty_Nibble : constant Boolean     := ((D rem 2) = 0);
-       B            : constant Byte_Length := (D / 2) + 1;
-       VV           : Integer_32 := V;
- 
-    begin
-       --  Deal with sign byte first
- 
-       if VV >= 0 then
-          PP (B) := Unsigned_8 (VV rem 10) * 16 + 16#C#;
-          VV := VV / 10;
- 
-       else
-          VV := -VV;
-          PP (B) := Unsigned_8 (VV rem 10) * 16 + 16#D#;
-       end if;
- 
-       for J in reverse B - 1 .. 2 loop
-          if VV = 0 then
-             for K in 1 .. J loop
-                PP (K) := 16#00#;
-             end loop;
- 
-             return;
- 
-          else
-             PP (J) := Packed_Byte (Integer (VV rem 100));
-             VV := VV / 100;
-          end if;
-       end loop;
- 
-       --  Deal with leading byte
- 
-       if Empty_Nibble then
-          if VV > 9 then
-             raise Constraint_Error;
-          else
-             PP (1) := Unsigned_8 (VV);
-          end if;
- 
-       else
-          if VV > 99 then
-             raise Constraint_Error;
-          else
-             PP (1) := Packed_Byte (Integer (VV));
-          end if;
-       end if;
- 
-    end Int32_To_Packed;
- 
-    ---------------------
-    -- Int64_To_Packed --
-    ---------------------
- 
-    procedure Int64_To_Packed (V : Integer_64; P : System.Address; D : D64) is
-       PP           : constant Packed_Ptr  := To_Packed_Ptr (P);
-       Empty_Nibble : constant Boolean     := ((D rem 2) = 0);
-       B            : constant Byte_Length := (D / 2) + 1;
-       VV           : Integer_64 := V;
- 
-    begin
-       --  Deal with sign byte first
- 
-       if VV >= 0 then
-          PP (B) := Unsigned_8 (VV rem 10) * 16 + 16#C#;
-          VV := VV / 10;
- 
-       else
-          VV := -VV;
-          PP (B) := Unsigned_8 (VV rem 10) * 16 + 16#D#;
-       end if;
- 
-       for J in reverse B - 1 .. 2 loop
-          if VV = 0 then
-             for K in 1 .. J loop
-                PP (K) := 16#00#;
-             end loop;
- 
-             return;
- 
-          else
-             PP (J) := Packed_Byte (Integer (VV rem 100));
-             VV := VV / 100;
-          end if;
-       end loop;
- 
-       --  Deal with leading byte
- 
-       if Empty_Nibble then
-          if VV > 9 then
-             raise Constraint_Error;
-          else
-             PP (1) := Unsigned_8 (VV);
-          end if;
- 
-       else
-          if VV > 99 then
-             raise Constraint_Error;
-          else
-             PP (1) := Packed_Byte (Integer (VV));
-          end if;
-       end if;
- 
-    end Int64_To_Packed;
- 
-    ---------------------
-    -- Packed_To_Int32 --
-    ---------------------
- 
-    function Packed_To_Int32 (P : System.Address; D : D32) return Integer_32 is
-       PP           : constant Packed_Ptr  := To_Packed_Ptr (P);
-       Empty_Nibble : constant Boolean     := ((D mod 2) = 0);
-       B            : constant Byte_Length := (D / 2) + 1;
-       V            : Integer_32;
-       Dig          : Unsigned_8;
-       Sign         : Unsigned_8;
-       J            : Positive;
- 
-    begin
-       --  Cases where there is an unused (zero) nibble in the first byte.
-       --  Deal with the single digit nibble at the right of this byte
- 
-       if Empty_Nibble then
-          V := Integer_32 (PP (1));
-          J := 2;
- 
-          if V > 9 then
-             raise Constraint_Error;
-          end if;
- 
-       --  Cases where all nibbles are used
- 
-       else
-          V := 0;
-          J := 1;
-       end if;
- 
-       --  Loop to process bytes containing two digit nibbles
- 
-       while J < B loop
-          Dig := Shift_Right (PP (J), 4);
- 
-          if Dig > 9 then
-             raise Constraint_Error;
-          else
-             V := V * 10 + Integer_32 (Dig);
-          end if;
- 
-          Dig := PP (J) and 16#0F#;
- 
-          if Dig > 9 then
-             raise Constraint_Error;
-          else
-             V := V * 10 + Integer_32 (Dig);
-          end if;
- 
-          J := J + 1;
-       end loop;
- 
-       --  Deal with digit nibble in sign byte
- 
-       Dig := Shift_Right (PP (J), 4);
- 
-       if Dig > 9 then
-          raise Constraint_Error;
-       else
-          V := V * 10 + Integer_32 (Dig);
-       end if;
- 
-       Sign :=  PP (J) and 16#0F#;
- 
-       --  Process sign nibble (deal with most common cases first)
- 
-       if Sign = 16#C# then
-          return V;
- 
-       elsif Sign = 16#D# then
-          return -V;
- 
-       elsif Sign = 16#B# then
-          return -V;
- 
-       elsif Sign >= 16#A# then
-          return V;
- 
-       else
-          raise Constraint_Error;
-       end if;
-    end Packed_To_Int32;
- 
-    ---------------------
-    -- Packed_To_Int64 --
-    ---------------------
- 
-    function Packed_To_Int64 (P : System.Address; D : D64) return Integer_64 is
-       PP           : constant Packed_Ptr  := To_Packed_Ptr (P);
-       Empty_Nibble : constant Boolean     := ((D mod 2) = 0);
-       B            : constant Byte_Length := (D / 2) + 1;
-       V            : Integer_64;
-       Dig          : Unsigned_8;
-       Sign         : Unsigned_8;
-       J            : Positive;
- 
-    begin
-       --  Cases where there is an unused (zero) nibble in the first byte.
-       --  Deal with the single digit nibble at the right of this byte
- 
-       if Empty_Nibble then
-          V := Integer_64 (PP (1));
-          J := 2;
- 
-          if V > 9 then
-             raise Constraint_Error;
-          end if;
- 
-       --  Cases where all nibbles are used
- 
-       else
-          J := 1;
-          V := 0;
-       end if;
- 
-       --  Loop to process bytes containing two digit nibbles
- 
-       while J < B loop
-          Dig := Shift_Right (PP (J), 4);
- 
-          if Dig > 9 then
-             raise Constraint_Error;
-          else
-             V := V * 10 + Integer_64 (Dig);
-          end if;
- 
-          Dig := PP (J) and 16#0F#;
- 
-          if Dig > 9 then
-             raise Constraint_Error;
-          else
-             V := V * 10 + Integer_64 (Dig);
-          end if;
- 
-          J := J + 1;
-       end loop;
- 
-       --  Deal with digit nibble in sign byte
- 
-       Dig := Shift_Right (PP (J), 4);
- 
-       if Dig > 9 then
-          raise Constraint_Error;
-       else
-          V := V * 10 + Integer_64 (Dig);
-       end if;
- 
-       Sign :=  PP (J) and 16#0F#;
- 
-       --  Process sign nibble (deal with most common cases first)
- 
-       if Sign = 16#C# then
-          return V;
- 
-       elsif Sign = 16#D# then
-          return -V;
- 
-       elsif Sign = 16#B# then
-          return -V;
- 
-       elsif Sign >= 16#A# then
-          return V;
- 
-       else
-          raise Constraint_Error;
-       end if;
-    end Packed_To_Int64;
- 
- end Interfaces.Packed_Decimal;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/i-pacdec.ads gcc-8.1.0/gcc/ada/i-pacdec.ads
*** gcc-7.3.0/gcc/ada/i-pacdec.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/i-pacdec.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,149 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --            I N T E R F A C E S . P A C K E D _ D E C I M A L             --
- --                                                                          --
- --                                 S p e c                                  --
- --            (Version for IBM Mainframe Packed Decimal Format)             --
- --                                                                          --
- --          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- --
- -- 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 unit defines the packed decimal format used by GNAT in response to
- --  a specification of Machine_Radix 10 for a decimal fixed-point type. The
- --  format and operations are completely encapsulated in this unit, so all
- --  that is necessary to compile using different packed decimal formats is
- --  to replace this single unit.
- 
- --  Note that the compiler access the spec of this unit during compilation
- --  to obtain the data length that needs allocating, so the correct version
- --  of the spec must be available to the compiler, and must correspond to
- --  the spec and body made available to the linker, and all units of a given
- --  program must be compiled with the same version of the spec and body.
- --  This consistency will be enforced automatically using the normal binder
- --  consistency checking, since any unit declaring Machine_Radix 10 types or
- --  containing operations on such data will implicitly with Packed_Decimal.
- 
- with System;
- 
- package Interfaces.Packed_Decimal is
- 
-    ------------------------
-    -- Format Description --
-    ------------------------
- 
-    --  IBM Mainframe packed decimal format uses a byte string of length one
-    --  to 10 bytes, with the most significant byte first. Each byte contains
-    --  two decimal digits (with the high order digit in the left nibble, and
-    --  the low order four bits contain the sign, using the following code:
- 
-    --     16#A#  2#1010#   positive
-    --     16#B#  2#1011#   negative
-    --     16#C#  2#1100#   positive (preferred representation)
-    --     16#D#  2#1101#   negative (preferred representation)
-    --     16#E#  2#1110#   positive
-    --     16#F#  2#1011#   positive
- 
-    --  In this package, all six sign representations are interpreted as
-    --  shown above when an operand is read, when an operand is written,
-    --  the preferred representations are always used. Constraint_Error
-    --  is raised if any other bit pattern is found in the sign nibble,
-    --  or if a digit nibble contains an invalid digit code.
- 
-    --  Some examples follow:
- 
-    --     05 76 3C      +5763
-    --     00 01 1D        -11
-    --     00 04 4E        +44 (non-standard sign)
-    --     00 00 00      invalid (incorrect sign nibble)
-    --     0A 01 1C      invalid (bad digit)
- 
-    ------------------
-    -- Length Array --
-    ------------------
- 
-    --  The following array must be declared in exactly the form shown, since
-    --  the compiler accesses the associated tree to determine the size to be
-    --  allocated to a machine radix 10 type, depending on the number of digits.
- 
-    subtype Byte_Length is Positive range 1 .. 10;
-    --  Range of possible byte lengths
- 
-    Packed_Size : constant array (1 .. 18) of Byte_Length :=
-       (01 => 01,    -- Length in bytes for digits 1
-        02 => 02,    -- Length in bytes for digits 2
-        03 => 02,    -- Length in bytes for digits 2
-        04 => 03,    -- Length in bytes for digits 2
-        05 => 03,    -- Length in bytes for digits 2
-        06 => 04,    -- Length in bytes for digits 2
-        07 => 04,    -- Length in bytes for digits 2
-        08 => 05,    -- Length in bytes for digits 2
-        09 => 05,    -- Length in bytes for digits 2
-        10 => 06,    -- Length in bytes for digits 2
-        11 => 06,    -- Length in bytes for digits 2
-        12 => 07,    -- Length in bytes for digits 2
-        13 => 07,    -- Length in bytes for digits 2
-        14 => 08,    -- Length in bytes for digits 2
-        15 => 08,    -- Length in bytes for digits 2
-        16 => 09,    -- Length in bytes for digits 2
-        17 => 09,    -- Length in bytes for digits 2
-        18 => 10);   -- Length in bytes for digits 2
- 
-    -------------------------
-    -- Conversion Routines --
-    -------------------------
- 
-    subtype D32 is Positive range 1 .. 9;
-    --  Used to represent number of digits in a packed decimal value that
-    --  can be represented in a 32-bit binary signed integer form.
- 
-    subtype D64 is Positive range 10 .. 18;
-    --  Used to represent number of digits in a packed decimal value that
-    --  requires a 64-bit signed binary integer for representing all values.
- 
-    function Packed_To_Int32 (P : System.Address; D : D32) return Integer_32;
-    --  The argument P is the address of a packed decimal value and D is the
-    --  number of digits (in the range 1 .. 9, as implied by the subtype).
-    --  The returned result is the corresponding signed binary value. The
-    --  exception Constraint_Error is raised if the input is invalid.
- 
-    function Packed_To_Int64 (P : System.Address; D : D64) return Integer_64;
-    --  The argument P is the address of a packed decimal value and D is the
-    --  number of digits (in the range 10 .. 18, as implied by the subtype).
-    --  The returned result is the corresponding signed binary value. The
-    --  exception Constraint_Error is raised if the input is invalid.
- 
-    procedure Int32_To_Packed (V : Integer_32; P : System.Address; D : D32);
-    --  The argument V is a signed binary integer, which is converted to
-    --  packed decimal format and stored using P, the address of a packed
-    --  decimal item of D digits (D is in the range 1-9). Constraint_Error
-    --  is raised if V is out of range of this number of digits.
- 
-    procedure Int64_To_Packed (V : Integer_64; P : System.Address; D : D64);
-    --  The argument V is a signed binary integer, which is converted to
-    --  packed decimal format and stored using P, the address of a packed
-    --  decimal item of D digits (D is in the range 10-18). Constraint_Error
-    --  is raised if V is out of range of this number of digits.
- 
- end Interfaces.Packed_Decimal;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/i-vxinco.adb gcc-8.1.0/gcc/ada/i-vxinco.adb
*** gcc-7.3.0/gcc/ada/i-vxinco.adb	Thu Oct 13 12:57:16 2016
--- gcc-8.1.0/gcc/ada/i-vxinco.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,48 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
- --                                                                          --
- --     I N T E R F A C E S . V X W O R K S . I N T  _ C O N N E C T I O N   --
- --                                                                          --
- --                                  B o d y                                 --
- --                                                                          --
- --                        Copyright (C) 2016, 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- --
- -- 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/>.                                          --
- --                                                                          --
- -- GNARL was developed by the GNARL team at Florida State University.       --
- -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- package body Interfaces.VxWorks.Int_Connection is
- 
-    Connection_Routine : Interrupt_Connector;
-    pragma Import (C, Connection_Routine, "__gnat_user_int_connect");
-    --  Declared in System.Interrupts. Defaults to the standard OS connector in
-    --  System.OS_Interface (or Interfaces.VxWorks for restricted runtimes).
- 
-    -------------
-    -- Connect --
-    -------------
- 
-    procedure Connect (Connector : Interrupt_Connector) is
-    begin
-       Connection_Routine := Connector;
-    end Connect;
- 
- end Interfaces.VxWorks.Int_Connection;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/i-vxinco.ads gcc-8.1.0/gcc/ada/i-vxinco.ads
*** gcc-7.3.0/gcc/ada/i-vxinco.ads	Thu Oct 13 12:57:16 2016
--- gcc-8.1.0/gcc/ada/i-vxinco.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,56 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
- --                                                                          --
- --     I N T E R F A C E S . V X W O R K S . I N T  _ C O N N E C T I O N   --
- --                                                                          --
- --                                  S p e c                                 --
- --                                                                          --
- --                        Copyright (C) 2016, 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- --
- -- 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/>.                                          --
- --                                                                          --
- -- GNARL was developed by the GNARL team at Florida State University.       --
- -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This package provides users with the ability to use a custom routine for
- --  connecting hardware interrupts for VxWorks environments that support the
- --  capability to handle them. The custom routine must have the same profile
- --  as the VxWorks intConnect() routine.
- 
- with System;
- 
- package Interfaces.VxWorks.Int_Connection is
- 
-    type Interrupt_Connector is access function
-      (Vector    : Interrupt_Vector;
-       Handler   : VOIDFUNCPTR;
-       Parameter : System.Address := System.Null_Address) return STATUS;
-    pragma Convention (C, Interrupt_Connector);
-    --  Convention C for compatibility with intConnect(). User alternatives are
-    --  likely to be imports of C routines anyway.
- 
-    procedure Connect (Connector : Interrupt_Connector);
-    --  Set user-defined interrupt connection routine. Must precede calls to
-    --  Ada.Interrupts.Attach_Handler, or the default connector from
-    --  System.OS_Interface (or Interfaces.VxWorks for Ravenscar Cert) will be
-    --  used. Can be called multiple times to change the connection routine for
-    --  subsequent calls to Attach_Handler.
- 
- end Interfaces.VxWorks.Int_Connection;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/i-vxwoio.adb gcc-8.1.0/gcc/ada/i-vxwoio.adb
*** gcc-7.3.0/gcc/ada/i-vxwoio.adb	Mon Nov 30 10:28:23 2009
--- gcc-8.1.0/gcc/ada/i-vxwoio.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,72 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
- --                                                                          --
- --                 I N T E R F A C E S . V X W O R K S . I O                --
- --                                                                          --
- --                                  B o d y                                 --
- --                                                                          --
- --           Copyright (C) 2002-2009, Free Software Foundation, Inc.        --
- --                                                                          --
- -- GNARL is 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/>.                                          --
- --                                                                          --
- -- GNARL was developed by the GNARL team at Florida State University.       --
- -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- package body Interfaces.VxWorks.IO is
- 
-    --------------------------
-    -- Enable_Get_Immediate --
-    --------------------------
- 
-    procedure Enable_Get_Immediate
-      (File    : Interfaces.C_Streams.FILEs;
-       Success : out Boolean)
-    is
-       Status : int;
-       Fd     : int;
- 
-    begin
-       Fd := fileno (File);
-       Status := ioctl (Fd, FIOSETOPTIONS, OPT_RAW);
- 
-       if Status /= int (ERROR) then
-          Success := True;
-       else
-          Success := False;
-       end if;
-    end Enable_Get_Immediate;
- 
-    ---------------------------
-    -- Disable_Get_Immediate --
-    ---------------------------
- 
-    procedure Disable_Get_Immediate
-      (File    : Interfaces.C_Streams.FILEs;
-       Success : out Boolean)
-    is
-       Status : int;
-       Fd     : int;
-    begin
-       Fd := fileno (File);
-       Status := ioctl (Fd, FIOSETOPTIONS, OPT_TERMINAL);
-       Success := (if Status /= int (ERROR) then True else False);
-    end Disable_Get_Immediate;
- 
- end Interfaces.VxWorks.IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/i-vxwoio.ads gcc-8.1.0/gcc/ada/i-vxwoio.ads
*** gcc-7.3.0/gcc/ada/i-vxwoio.ads	Fri Jun 19 10:47:49 2009
--- gcc-8.1.0/gcc/ada/i-vxwoio.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,229 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
- --                                                                          --
- --                 I N T E R F A C E S . V X W O R K S . I O                --
- --                                                                          --
- --                                  S p e c                                 --
- --                                                                          --
- --           Copyright (C) 2002-2009, Free Software Foundation, Inc.        --
- --                                                                          --
- -- GNARL is 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/>.                                          --
- --                                                                          --
- -- GNARL was developed by the GNARL team at Florida State University.       --
- -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This package provides a binding to the functions fileno and ioctl
- --  in VxWorks, providing a set of definitions of ioctl function codes
- --  and options for the use of these functions.
- 
- --  A particular use of this interface is to enable use of Get_Immediate
- --  in Ada.Text_IO. There is no way in VxWorks to provide the desired
- --  functionality of Get_Immediate (no buffering and no waiting for a
- --  line return) without flushing the buffer, which violates the Ada
- --  semantic requirements for Ada.Text_IO.
- 
- with Interfaces.C_Streams;
- 
- package Interfaces.VxWorks.IO is
- 
-    -------------------------
-    -- The ioctl Interface --
-    --------------------------
- 
-    type FUNCODE is new int;
-    --  Type of the function codes in ioctl
- 
-    type IOOPT is mod 2 ** int'Size;
-    --  Type of the option codes in ioctl
- 
-    --  ioctl function codes (for more information see ioLib.h)
-    --  These values could be generated automatically in System.OS_Constants???
- 
-    FIONREAD       : constant FUNCODE := 1;
-    FIOFLUSH       : constant FUNCODE := 2;
-    FIOOPTIONS     : constant FUNCODE := 3;
-    FIOBAUDRATE    : constant FUNCODE := 4;
-    FIODISKFORMAT  : constant FUNCODE := 5;
-    FIODISKINIT    : constant FUNCODE := 6;
-    FIOSEEK        : constant FUNCODE := 7;
-    FIOWHERE       : constant FUNCODE := 8;
-    FIODIRENTRY    : constant FUNCODE := 9;
-    FIORENAME      : constant FUNCODE := 10;
-    FIOREADYCHANGE : constant FUNCODE := 11;
-    FIONWRITE      : constant FUNCODE := 12;
-    FIODISKCHANGE  : constant FUNCODE := 13;
-    FIOCANCEL      : constant FUNCODE := 14;
-    FIOSQUEEZE     : constant FUNCODE := 15;
-    FIONBIO        : constant FUNCODE := 16;
-    FIONMSGS       : constant FUNCODE := 17;
-    FIOGETNAME     : constant FUNCODE := 18;
-    FIOGETOPTIONS  : constant FUNCODE := 19;
-    FIOSETOPTIONS  : constant FUNCODE := FIOOPTIONS;
-    FIOISATTY      : constant FUNCODE := 20;
-    FIOSYNC        : constant FUNCODE := 21;
-    FIOPROTOHOOK   : constant FUNCODE := 22;
-    FIOPROTOARG    : constant FUNCODE := 23;
-    FIORBUFSET     : constant FUNCODE := 24;
-    FIOWBUFSET     : constant FUNCODE := 25;
-    FIORFLUSH      : constant FUNCODE := 26;
-    FIOWFLUSH      : constant FUNCODE := 27;
-    FIOSELECT      : constant FUNCODE := 28;
-    FIOUNSELECT    : constant FUNCODE := 29;
-    FIONFREE       : constant FUNCODE := 30;
-    FIOMKDIR       : constant FUNCODE := 31;
-    FIORMDIR       : constant FUNCODE := 32;
-    FIOLABELGET    : constant FUNCODE := 33;
-    FIOLABELSET    : constant FUNCODE := 34;
-    FIOATTRIBSE    : constant FUNCODE := 35;
-    FIOCONTIG      : constant FUNCODE := 36;
-    FIOREADDIR     : constant FUNCODE := 37;
-    FIOFSTATGET    : constant FUNCODE := 38;
-    FIOUNMOUNT     : constant FUNCODE := 39;
-    FIOSCSICOMMAND : constant FUNCODE := 40;
-    FIONCONTIG     : constant FUNCODE := 41;
-    FIOTRUNC       : constant FUNCODE := 42;
-    FIOGETFL       : constant FUNCODE := 43;
-    FIOTIMESET     : constant FUNCODE := 44;
-    FIOINODETONAM  : constant FUNCODE := 45;
-    FIOFSTATFSGE   : constant FUNCODE := 46;
- 
-    --  ioctl option values
- 
-    OPT_ECHO     : constant IOOPT := 16#0001#;
-    OPT_CRMOD    : constant IOOPT := 16#0002#;
-    OPT_TANDEM   : constant IOOPT := 16#0004#;
-    OPT_7_BIT    : constant IOOPT := 16#0008#;
-    OPT_MON_TRAP : constant IOOPT := 16#0010#;
-    OPT_ABORT    : constant IOOPT := 16#0020#;
-    OPT_LINE     : constant IOOPT := 16#0040#;
-    OPT_RAW      : constant IOOPT := 16#0000#;
-    OPT_TERMINAL : constant IOOPT := OPT_ECHO     or
-                                     OPT_CRMOD    or
-                                     OPT_TANDEM   or
-                                     OPT_MON_TRAP or
-                                     OPT_7_BIT    or
-                                     OPT_ABORT    or
-                                     OPT_LINE;
- 
-    function fileno (Fp : Interfaces.C_Streams.FILEs) return int;
-    pragma Import (C, fileno, "fileno");
-    --  Binding to the C routine fileno
- 
-    function ioctl (Fd : int; Function_Code : FUNCODE; Arg : IOOPT) return int;
-    pragma Import (C, ioctl, "ioctl");
-    --  Binding to the C routine ioctl
-    --
-    --  Note: we are taking advantage of the fact that on currently supported
-    --  VxWorks targets, it is fine to directly bind to a variadic C function.
- 
-    ------------------------------
-    -- Control of Get_Immediate --
-    ------------------------------
- 
-    --  The procedures in this section make use of the interface to ioctl
-    --  and fileno to provide a mechanism for enabling unbuffered behavior
-    --  for Get_Immediate in VxWorks.
- 
-    --  The situation is that the RM requires that the use of Get_Immediate
-    --  be identical to Get except that it is desirable (not required) that
-    --  there be no buffering or line editing.
- 
-    --  Unfortunately, in VxWorks, the only way to enable this desired
-    --  unbuffered behavior involves changing into raw mode. But this
-    --  transition into raw mode flushes the input buffer, a behavior
-    --  not permitted by the RM semantics for Get_Immediate.
- 
-    --  Given that Get_Immediate cannot be accurately implemented in
-    --  raw mode, it seems best not to enable it by default, and instead
-    --  to require specific programmer action, with the programmer being
-    --  aware that input may be lost.
- 
-    --  The following is an example of the use of the two procedures
-    --  in this section (Enable_Get_Immediate and Disable_Get_Immediate)
- 
-    --  with Ada.Text_IO; use Ada.Text_IO;
-    --  with Ada.Text_IO.C_Streams; use Ada.Text_IO.C_Streams;
-    --  with Interfaces.VxWorks.IO; use Interfaces.VxWorks.IO;
- 
-    --  procedure Example_IO is
-    --     Input     : Character;
-    --     Available : Boolean;
-    --     Success   : Boolean;
- 
-    --  begin
-    --     Enable_Get_Immediate (C_Stream (Current_Input), Success);
- 
-    --     if Success = False then
-    --        raise Device_Error;
-    --     end if;
- 
-    --     --  Example with the first type of Get_Immediate
-    --     --  Waits for an entry on the input. Immediately returns
-    --     --  after having received an character on the input
- 
-    --     Put ("Input -> ");
-    --     Get_Immediate (Input);
-    --     New_Line;
-    --     Put_Line ("Character read: " & Input);
- 
-    --     --  Example with the second type of Get_Immediate
-    --     --  This is equivalent to a non blocking read
- 
-    --     for J in 1 .. 10 loop
-    --        Put ("Input -> ");
-    --        Get_Immediate (Input, Available);
-    --        New_Line;
- 
-    --        if Available = True then
-    --           Put_Line ("Character read: " & Input);
-    --        end if;
- 
-    --        delay 1.0;
-    --     end loop;
- 
-    --     Disable_Get_Immediate (C_Stream (Current_Input), Success);
- 
-    --     if Success = False then
-    --        raise Device_Error;
-    --     end if;
- 
-    --  exception
-    --     when Device_Error =>
-    --        Put_Line ("Device Error. Check your configuration");
-    --  end Example_IO;
- 
-    procedure Enable_Get_Immediate
-      (File    : Interfaces.C_Streams.FILEs;
-       Success : out Boolean);
-    --  On VxWorks, a call to this procedure is required before subsequent calls
-    --  to Get_Immediate have the desired effect of not waiting for a line
-    --  return. The reason that this call is not automatic on this target is
-    --  that the call flushes the input buffer, discarding any previous input.
-    --  Note: Following a call to Enable_Get_Immediate, the only permitted
-    --  operations on the relevant file are Get_Immediate operations. Any
-    --  other operations have undefined behavior.
- 
-    procedure Disable_Get_Immediate
-      (File    : Interfaces.C_Streams.FILEs;
-       Success : out Boolean);
-    --  This procedure resets File to standard mode, and permits subsequent
-    --  use of the full range of Ada.Text_IO functions
- 
- end Interfaces.VxWorks.IO;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/i-vxwork-x86.ads gcc-8.1.0/gcc/ada/i-vxwork-x86.ads
*** gcc-7.3.0/gcc/ada/i-vxwork-x86.ads	Wed Jan 29 15:53:48 2014
--- gcc-8.1.0/gcc/ada/i-vxwork-x86.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,220 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                  GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                --
- --                                                                          --
- --                      I N T E R F A C E S . V X W O R K S                 --
- --                                                                          --
- --                                   S p e c                                --
- --                                                                          --
- --                     Copyright (C) 1999-2013, AdaCore                     --
- --                                                                          --
- -- GNAT is 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/>.                                          --
- --                                                                          --
- -- GNARL was developed by the GNARL team at Florida State University.       --
- -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This is the x86 VxWorks version of this package
- 
- --  This package provides a limited binding to the VxWorks API
- --  In particular, it interfaces with the VxWorks hardware interrupt
- --  facilities, allowing the use of low-latency direct-vectored
- --  interrupt handlers. Note that such handlers have a variety of
- --  restrictions regarding system calls and language constructs. In particular,
- --  the use of exception handlers and functions returning variable-length
- --  objects cannot be used. Less restrictive, but higher-latency handlers can
- --  be written using Ada protected procedures, Ada 83 style interrupt entries,
- --  or by signalling an Ada task from within an interrupt handler using a
- --  binary semaphore as described in the VxWorks Programmer's Manual.
- --
- --  For complete documentation of the operations in this package, please
- --  consult the VxWorks Programmer's Manual and VxWorks Reference Manual.
- 
- pragma Warnings (Off, "*foreign convention*");
- pragma Warnings (Off, "*add Convention pragma*");
- 
- with System.VxWorks;
- 
- package Interfaces.VxWorks is
-    pragma Preelaborate;
- 
-    ------------------------------------------------------------------------
-    --  Here is a complete example that shows how to handle the Interrupt 0x33
-    --  with a direct-vectored interrupt handler in Ada using this package:
- 
-    --  with Interfaces.VxWorks; use Interfaces.VxWorks;
-    --  with System;
-    --
-    --  package P is
-    --
-    --     Count : Integer;
-    --     pragma Atomic (Count);
-    --
-    --     procedure Handler (Parameter : System.Address);
-    --
-    --  end P;
-    --
-    --  package body P is
-    --
-    --     procedure Handler (Parameter : System.Address) is
-    --     begin
-    --        Count := Count + 1;
-    --        logMsg ("received an interrupt" & ASCII.LF & ASCII.NUL);
-    --     end Handler;
-    --  end P;
-    --
-    --  with Interfaces.VxWorks; use Interfaces.VxWorks;
-    --  with Ada.Text_IO; use Ada.Text_IO;
-    --  with Ada.Interrupts;
-    --  with Machine_Code; use Machine_Code;
-    --
-    --  with P; use P;
-    --  procedure Useint is
-    --
-    --     --  Be sure to use a reasonable interrupt number for target board.
-    --     --  This one is an unreserved interrupt for the Pentium 3 BSP
-    --
-    --     Interrupt : constant := 16#33#;
-    --
-    --     task T;
-    --
-    --     S : STATUS;
-    --
-    --     task body T is
-    --     begin
-    --        loop
-    --           Put_Line ("Generating an interrupt...");
-    --           delay 1.0;
-    --
-    --           --  Generate interrupt, using interrupt number
-    --
-    --           Asm ("int %0",
-    --                Inputs =>
-    --                  Ada.Interrupts.Interrupt_ID'Asm_Input
-    --                    ("i", Interrupt));
-    --        end loop;
-    --     end T;
-    --
-    --  begin
-    --     S := intConnect (INUM_TO_IVEC (Interrupt), Handler'Access);
-    --
-    --     loop
-    --        delay 2.0;
-    --        Put_Line ("value of count:" & P.Count'Img);
-    --     end loop;
-    --  end Useint;
-    -------------------------------------
- 
-    subtype int is Integer;
- 
-    type STATUS is new int;
-    --  Equivalent of the C type STATUS
- 
-    OK    : constant STATUS := 0;
-    ERROR : constant STATUS := -1;
- 
-    type VOIDFUNCPTR is access procedure (parameter : System.Address);
-    type Interrupt_Vector is new System.Address;
-    type Exception_Vector is new System.Address;
- 
-    function intConnect
-      (vector    : Interrupt_Vector;
-       handler   : VOIDFUNCPTR;
-       parameter : System.Address := System.Null_Address) return STATUS;
-    --  Binding to the C routine intConnect. Use this to set up an user handler.
-    --  The routine generates a wrapper around the user handler to save and
-    --  restore context
- 
-    function intContext return int;
-    --  Binding to the C routine intContext. This function returns 1 only if the
-    --  current execution state is in interrupt context.
- 
-    function intVecGet
-      (Vector : Interrupt_Vector) return VOIDFUNCPTR;
-    --  Binding to the C routine intVecGet. Use this to get the existing handler
-    --  for later restoral
- 
-    procedure intVecSet
-      (Vector  : Interrupt_Vector;
-       Handler : VOIDFUNCPTR);
-    --  Binding to the C routine intVecSet. Use this to restore a handler
-    --  obtained using intVecGet
- 
-    procedure intVecGet2
-      (vector       : Interrupt_Vector;
-       pFunction    : out VOIDFUNCPTR;
-       pIdtGate     : not null access int;
-       pIdtSelector : not null access int);
-    --  Binding to the C routine intVecGet2. Use this to get the existing
-    --  handler for later restoral
- 
-    procedure intVecSet2
-      (vector       : Interrupt_Vector;
-       pFunction    : VOIDFUNCPTR;
-       pIdtGate     : not null access int;
-       pIdtSelector : not null access int);
-    --  Binding to the C routine intVecSet2. Use this to restore a
-    --  handler obtained using intVecGet2
- 
-    function INUM_TO_IVEC (intNum : int) return Interrupt_Vector;
-    --  Equivalent to the C macro INUM_TO_IVEC used to convert an interrupt
-    --  number to an interrupt vector
- 
-    procedure logMsg
-      (fmt : String; arg1, arg2, arg3, arg4, arg5, arg6 : int := 0);
-    --  Binding to the C routine logMsg. Note that it is the caller's
-    --  responsibility to ensure that fmt is a null-terminated string
-    --  (e.g logMsg ("Interrupt" & ASCII.NUL))
- 
-    type FP_CONTEXT is private;
-    --  Floating point context save and restore. Handlers using floating point
-    --  must be bracketed with these calls. The pFpContext parameter should be
-    --  an object of type FP_CONTEXT that is declared local to the handler.
-    --
-    --  See the VxWorks Intel Architecture Supplement regarding these routines
- 
-    procedure fppRestore (pFpContext : in out FP_CONTEXT);
-    --  Restore floating point context - old style
- 
-    procedure fppSave (pFpContext : in out FP_CONTEXT);
-    --  Save floating point context - old style
- 
-    procedure fppXrestore (pFpContext : in out FP_CONTEXT);
-    --  Restore floating point context - new style
- 
-    procedure fppXsave (pFpContext : in out FP_CONTEXT);
-    --  Save floating point context - new style
- 
- private
- 
-    type FP_CONTEXT is new System.VxWorks.FP_CONTEXT;
-    --  Target-dependent floating point context type
- 
-    pragma Import (C, intConnect, "intConnect");
-    pragma Import (C, intContext, "intContext");
-    pragma Import (C, intVecGet, "intVecGet");
-    pragma Import (C, intVecSet, "intVecSet");
-    pragma Import (C, intVecGet2, "intVecGet2");
-    pragma Import (C, intVecSet2, "intVecSet2");
-    pragma Import (C, INUM_TO_IVEC, "__gnat_inum_to_ivec");
-    pragma Import (C, logMsg, "logMsg");
-    pragma Import (C, fppRestore, "fppRestore");
-    pragma Import (C, fppSave, "fppSave");
-    pragma Import (C, fppXrestore, "fppXrestore");
-    pragma Import (C, fppXsave, "fppXsave");
- end Interfaces.VxWorks;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/i-vxwork.ads gcc-8.1.0/gcc/ada/i-vxwork.ads
*** gcc-7.3.0/gcc/ada/i-vxwork.ads	Wed Jan 29 15:53:48 2014
--- gcc-8.1.0/gcc/ada/i-vxwork.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,216 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                  GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                --
- --                                                                          --
- --                      I N T E R F A C E S . V X W O R K S                 --
- --                                                                          --
- --                                   S p e c                                --
- --                                                                          --
- --                     Copyright (C) 1999-2013, AdaCore                     --
- --                                                                          --
- -- GNAT is 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/>.                                          --
- --                                                                          --
- -- GNARL was developed by the GNARL team at Florida State University.       --
- -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This package provides a limited binding to the VxWorks API
- 
- --  In particular, it interfaces with the VxWorks hardware interrupt
- --  facilities, allowing the use of low-latency direct-vectored interrupt
- --  handlers. Note that such handlers have a variety of restrictions regarding
- --  system calls and language constructs. In particular, the use of exception
- --  handlers and functions returning variable-length objects cannot be used.
- --  Less restrictive, but higher-latency handlers can be written using Ada
- --  protected procedures, Ada 83 style interrupt entries, or by signalling
- --  an Ada task from within an interrupt handler using a binary semaphore
- --  as described in the VxWorks Programmer's Manual.
- --
- --  For complete documentation of the operations in this package, please
- --  consult the VxWorks Programmer's Manual and VxWorks Reference Manual.
- 
- pragma Warnings (Off, "*foreign convention*");
- pragma Warnings (Off, "*add Convention pragma*");
- --  These are temporary pragmas to suppress warnings about mismatching
- --  conventions, which will be a problem when we get rid of trampolines ???
- 
- with System.VxWorks;
- 
- package Interfaces.VxWorks is
-    pragma Preelaborate;
- 
-    ------------------------------------------------------------------------
-    --  Here is a complete example that shows how to handle the Interrupt 0x14
-    --  with a direct-vectored interrupt handler in Ada using this package:
- 
-    --  with Interfaces.VxWorks; use Interfaces.VxWorks;
-    --  with System;
-    --
-    --  package P is
-    --
-    --     Count : Integer;
-    --     pragma Atomic (Count);
-    --
-    --     Level : constant := 1;
-    --     --  Interrupt level used by this example
-    --
-    --     procedure Handler (parameter : System.Address);
-    --
-    --  end P;
-    --
-    --  package body P is
-    --
-    --     procedure Handler (parameter : System.Address) is
-    --        S : STATUS;
-    --     begin
-    --        Count := Count + 1;
-    --        logMsg ("received an interrupt" & ASCII.LF & ASCII.NUL);
-    --
-    --        --  Acknowledge VME interrupt
-    --
-    --        S := sysBusIntAck (intLevel => Level);
-    --     end Handler;
-    --  end P;
-    --
-    --  with Interfaces.VxWorks; use Interfaces.VxWorks;
-    --  with Ada.Text_IO; use Ada.Text_IO;
-    --
-    --  with P; use P;
-    --  procedure Useint is
-    --
-    --     --  Be sure to use a reasonable interrupt number for  board.
-    --     --  This one is the unused VME graphics interrupt on the PPC MV2604
-    --
-    --     Interrupt : constant := 16#14#;
-    --
-    --     task T;
-    --
-    --     S : STATUS;
-    --
-    --     task body T is
-    --     begin
-    --        loop
-    --           Put_Line ("Generating an interrupt...");
-    --           delay 1.0;
-    --
-    --           --  Generate VME interrupt, using interrupt number
-    --
-    --           S := sysBusIntGen (1, Interrupt);
-    --        end loop;
-    --     end T;
-    --
-    --  begin
-    --     S := sysIntEnable (intLevel => Level);
-    --     S := intConnect (INUM_TO_IVEC (Interrupt), handler'Access);
-    --
-    --     loop
-    --        delay 2.0;
-    --        Put_Line ("value of count:" & P.Count'Img);
-    --     end loop;
-    --  end Useint;
-    -------------------------------------
- 
-    subtype int is Integer;
- 
-    type STATUS is new int;
-    --  Equivalent of the C type STATUS
- 
-    OK    : constant STATUS := 0;
-    ERROR : constant STATUS := -1;
- 
-    type VOIDFUNCPTR is access procedure (parameter : System.Address);
-    type Interrupt_Vector is new System.Address;
-    type Exception_Vector is new System.Address;
- 
-    function intConnect
-      (vector    : Interrupt_Vector;
-       handler   : VOIDFUNCPTR;
-       parameter : System.Address := System.Null_Address) return STATUS;
-    --  Binding to the C routine intConnect. Use this to set up an user handler.
-    --  The routine generates a wrapper around the user handler to save and
-    --  restore context
- 
-    function intContext return int;
-    --  Binding to the C routine intContext. This function returns 1 only if the
-    --  current execution state is in interrupt context.
- 
-    function intVecGet
-      (Vector : Interrupt_Vector) return VOIDFUNCPTR;
-    --  Binding to the C routine intVecGet. Use this to get the existing handler
-    --  for later restoral
- 
-    procedure intVecSet
-      (Vector  : Interrupt_Vector;
-       Handler : VOIDFUNCPTR);
-    --  Binding to the C routine intVecSet. Use this to restore a handler
-    --  obtained using intVecGet
- 
-    function INUM_TO_IVEC (intNum : int) return Interrupt_Vector;
-    --  Equivalent to the C macro INUM_TO_IVEC used to convert an interrupt
-    --  number to an interrupt vector
- 
-    function sysIntEnable (intLevel : int) return STATUS;
-    --  Binding to the C routine sysIntEnable
- 
-    function sysIntDisable (intLevel : int) return STATUS;
-    --  Binding to the C routine sysIntDisable
- 
-    function sysBusIntAck (intLevel : int) return STATUS;
-    --  Binding to the C routine sysBusIntAck
- 
-    function sysBusIntGen (intLevel : int; Intnum : int) return STATUS;
-    --  Binding to the C routine sysBusIntGen. Note that the T2 documentation
-    --  implies that a vector address is the proper argument - it's not. The
-    --  interrupt number in the range 0 .. 255 (for 68K and PPC) is the correct
-    --  argument.
- 
-    procedure logMsg
-      (fmt : String; arg1, arg2, arg3, arg4, arg5, arg6 : int := 0);
-    --  Binding to the C routine logMsg. Note that it is the caller's
-    --  responsibility to ensure that fmt is a null-terminated string
-    --  (e.g logMsg ("Interrupt" & ASCII.NUL))
- 
-    type FP_CONTEXT is private;
-    --  Floating point context save and restore. Handlers using floating point
-    --  must be bracketed with these calls. The pFpContext parameter should be
-    --  an object of type FP_CONTEXT that is declared local to the handler.
- 
-    procedure fppRestore (pFpContext : in out FP_CONTEXT);
-    --  Restore floating point context
- 
-    procedure fppSave (pFpContext : in out FP_CONTEXT);
-    --  Save floating point context
- 
- private
- 
-    type FP_CONTEXT is new System.VxWorks.FP_CONTEXT;
-    --  Target-dependent floating point context type
- 
-    pragma Import (C, intConnect, "intConnect");
-    pragma Import (C, intContext, "intContext");
-    pragma Import (C, intVecGet, "intVecGet");
-    pragma Import (C, intVecSet, "intVecSet");
-    pragma Import (C, INUM_TO_IVEC, "__gnat_inum_to_ivec");
-    pragma Import (C, sysIntEnable, "sysIntEnable");
-    pragma Import (C, sysIntDisable, "sysIntDisable");
-    pragma Import (C, sysBusIntAck, "sysBusIntAck");
-    pragma Import (C, sysBusIntGen, "sysBusIntGen");
-    pragma Import (C, logMsg, "logMsg");
-    pragma Import (C, fppRestore, "fppRestore");
-    pragma Import (C, fppSave, "fppSave");
- end Interfaces.VxWorks;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/impunit.adb gcc-8.1.0/gcc/ada/impunit.adb
*** gcc-7.3.0/gcc/ada/impunit.adb	Thu Oct 13 12:54:42 2016
--- gcc-8.1.0/gcc/ada/impunit.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2000-2016, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or 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-2018, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is 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
*** 590,595 ****
--- 590,598 ----
      ("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
diff -Nrcpad gcc-7.3.0/gcc/ada/impunit.ads gcc-8.1.0/gcc/ada/impunit.ads
*** gcc-7.3.0/gcc/ada/impunit.ads	Thu Nov 12 11:52:59 2015
--- gcc-8.1.0/gcc/ada/impunit.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2000-2015, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or 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-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/indepsw-aix.adb gcc-8.1.0/gcc/ada/indepsw-aix.adb
*** gcc-7.3.0/gcc/ada/indepsw-aix.adb	Fri Aug  1 08:32:27 2014
--- gcc-8.1.0/gcc/ada/indepsw-aix.adb	Thu Jan 11 08:55:25 2018
***************
*** 7,13 ****
  --                                 B o d y                                  --
  --                              (AIX version)                               --
  --                                                                          --
! --          Copyright (C) 2009-2014, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/indepsw-darwin.adb gcc-8.1.0/gcc/ada/indepsw-darwin.adb
*** gcc-7.3.0/gcc/ada/indepsw-darwin.adb	Wed Dec  4 21:25:11 2013
--- gcc-8.1.0/gcc/ada/indepsw-darwin.adb	Thu Jan 11 08:55:25 2018
***************
*** 7,13 ****
  --                                 B o d y                                  --
  --                            (Darwin version)                              --
  --                                                                          --
! --            Copyright (C) 2013, Free Software Foundation, Inc.            --
  --                                                                          --
  -- GNAT is 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) 2013-2018, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/indepsw-gnu.adb gcc-8.1.0/gcc/ada/indepsw-gnu.adb
*** gcc-7.3.0/gcc/ada/indepsw-gnu.adb	Fri Aug  1 08:32:27 2014
--- gcc-8.1.0/gcc/ada/indepsw-gnu.adb	Thu Jan 11 08:55:25 2018
***************
*** 7,13 ****
  --                                 B o d y                                  --
  --                              (GNU version)                               --
  --                                                                          --
! --          Copyright (C) 2009-2014, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/indepsw-mingw.adb gcc-8.1.0/gcc/ada/indepsw-mingw.adb
*** gcc-7.3.0/gcc/ada/indepsw-mingw.adb	Fri Aug  1 08:32:27 2014
--- gcc-8.1.0/gcc/ada/indepsw-mingw.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,67 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                              I N D E P S W                               --
- --                                                                          --
- --                                 B o d y                                  --
- --                            (Windows version)                             --
- --                                                                          --
- --          Copyright (C) 2009-2014, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is 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 Windows version
- 
- package body Indepsw is
- 
-    Map_Switch : aliased constant String := "-Wl,-Map,";
- 
-    -------------
-    -- Convert --
-    -------------
- 
-    procedure Convert
-      (Switch   : Switch_Kind;
-       Argument : String;
-       To       : out String_List_Access)
-    is
-    begin
-       case Switch is
-          when Map_File =>
-             To := new Argument_List'(1 => new String'(Map_Switch & Argument));
-       end case;
-    end Convert;
- 
-    ------------------
-    -- Is_Supported --
-    ------------------
- 
-    function Is_Supported (Switch : Switch_Kind) return Boolean is
-    begin
-       case Switch is
-          when Map_File =>
-             return True;
-       end case;
-    end Is_Supported;
- 
- end Indepsw;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/indepsw.adb gcc-8.1.0/gcc/ada/indepsw.adb
*** gcc-7.3.0/gcc/ada/indepsw.adb	Fri Aug  1 08:32:27 2014
--- gcc-8.1.0/gcc/ada/indepsw.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2009-2014, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or 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-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/indepsw.ads gcc-8.1.0/gcc/ada/indepsw.ads
*** gcc-7.3.0/gcc/ada/indepsw.ads	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/indepsw.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-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 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/init.c gcc-8.1.0/gcc/ada/init.c
*** gcc-7.3.0/gcc/ada/init.c	Wed Oct 12 12:33:50 2016
--- gcc-8.1.0/gcc/ada/init.c	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2016, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  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-2018, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is 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_map_signal (int sig,
*** 1937,1943 ****
    Raise_From_Signal_Handler (exception, msg);
  }
  
! #if defined (ARMEL) && (_WRS_VXWORKS_MAJOR >= 7)
  
  /* ARM-vx7 case with arm unwinding exceptions */
  #define HAVE_GNAT_ADJUST_CONTEXT_FOR_RAISE
--- 1937,1943 ----
    Raise_From_Signal_Handler (exception, msg);
  }
  
! #if defined (ARMEL) && (_WRS_VXWORKS_MAJOR >= 7) || defined (__aarch64__)
  
  /* ARM-vx7 case with arm unwinding exceptions */
  #define HAVE_GNAT_ADJUST_CONTEXT_FOR_RAISE
*************** __gnat_error_handler (int sig, siginfo_t
*** 2005,2011 ****
    sigdelset (&mask, sig);
    sigprocmask (SIG_SETMASK, &mask, NULL);
  
! #if defined (__ARMEL__) || defined (__PPC__) || defined (__i386__) || defined (__x86_64__)
    /* On certain targets, kernel mode, we process signals through a Call Frame
       Info trampoline, voiding the need for myriads of fallback_frame_state
       variants in the ZCX runtime.  We have no simple way to distinguish ZCX
--- 2005,2011 ----
    sigdelset (&mask, sig);
    sigprocmask (SIG_SETMASK, &mask, NULL);
  
! #if defined (__ARMEL__) || defined (__PPC__) || defined (__i386__) || defined (__x86_64__) || defined (__aarch64__)
    /* On certain targets, kernel mode, we process signals through a Call Frame
       Info trampoline, voiding the need for myriads of fallback_frame_state
       variants in the ZCX runtime.  We have no simple way to distinguish ZCX
*************** __gnat_install_handler (void)
*** 2516,2521 ****
--- 2516,2623 ----
    __gnat_handler_installed = 1;
  }
  
+ #elif defined(__QNX__)
+ 
+ /***************/
+ /* QNX Section */
+ /***************/
+ 
+ #include <signal.h>
+ #include <unistd.h>
+ #include <string.h>
+ #include "sigtramp.h"
+ 
+ void
+ __gnat_map_signal (int sig,
+ 		   siginfo_t *si ATTRIBUTE_UNUSED,
+ 		   void *mcontext ATTRIBUTE_UNUSED)
+ {
+   struct Exception_Data *exception;
+   const char *msg;
+ 
+   switch(sig)
+   {
+     case SIGFPE:
+       exception = &constraint_error;
+       msg = "SIGFPE";
+       break;
+     case SIGILL:
+       exception = &constraint_error;
+       msg = "SIGILL";
+       break;
+     case SIGSEGV:
+       exception = &storage_error;
+       msg = "stack overflow or erroneous memory access";
+       break;
+     case SIGBUS:
+       exception = &constraint_error;
+       msg = "SIGBUS";
+       break;
+     default:
+       exception = &program_error;
+       msg = "unhandled signal";
+     }
+ 
+     Raise_From_Signal_Handler (exception, msg);
+ }
+ 
+ static void
+ __gnat_error_handler (int sig, siginfo_t *si, void *ucontext)
+ {
+   __gnat_sigtramp (sig, (void *) si, (void *) ucontext,
+ 		   (__sigtramphandler_t *)&__gnat_map_signal);
+ }
+ 
+ /* This must be in keeping with System.OS_Interface.Alternate_Stack_Size.  */
+ /* sigaltstack is currently not supported by QNX7 */
+ char __gnat_alternate_stack[0];
+ 
+ void
+ __gnat_install_handler (void)
+ {
+   struct sigaction act;
+   int err;
+ 
+   act.sa_handler = __gnat_error_handler;
+   act.sa_flags = SA_NODEFER | SA_SIGINFO;
+   sigemptyset (&act.sa_mask);
+ 
+   /* Do not install handlers if interrupt state is "System" */
+   if (__gnat_get_interrupt_state (SIGFPE) != 's') {
+     err = sigaction (SIGFPE,  &act, NULL);
+     if (err == -1) {
+       err = errno;
+       perror ("error while attaching SIGFPE");
+       perror (strerror (err));
+     }
+   }
+   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));
+     }
+   }
+   __gnat_handler_installed = 1;
+ }
+ 
  #elif defined (__DJGPP__)
  
  void
*************** __gnat_install_handler (void)
*** 2648,2654 ****
  
  #if defined (_WIN32) || defined (__INTERIX) \
    || defined (__Lynx__) || defined(__NetBSD__) || defined(__FreeBSD__) \
!   || defined (__OpenBSD__) || defined (__DragonFly__)
  
  #define HAVE_GNAT_INIT_FLOAT
  
--- 2750,2756 ----
  
  #if defined (_WIN32) || defined (__INTERIX) \
    || defined (__Lynx__) || defined(__NetBSD__) || defined(__FreeBSD__) \
!   || defined (__OpenBSD__) || defined (__DragonFly__) || defined(__QNX__)
  
  #define HAVE_GNAT_INIT_FLOAT
  
diff -Nrcpad gcc-7.3.0/gcc/ada/initialize.c gcc-8.1.0/gcc/ada/initialize.c
*** gcc-7.3.0/gcc/ada/initialize.c	Mon Jun  8 07:27:56 2015
--- gcc-8.1.0/gcc/ada/initialize.c	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2015, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  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-2018, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-7.3.0/gcc/ada/inline.adb gcc-8.1.0/gcc/ada/inline.adb
*** gcc-7.3.0/gcc/ada/inline.adb	Mon Jan 23 13:28:58 2017
--- gcc-8.1.0/gcc/ada/inline.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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 Inline is
*** 298,307 ****
--- 298,362 ----
        --  Inline_Package means that the call is considered for inlining and
        --  its package compiled and scanned for more inlining opportunities.
  
+       function Is_Non_Loading_Expression_Function
+         (Id : Entity_Id) return Boolean;
+       --  Determine whether arbitrary entity Id denotes a subprogram which is
+       --  either
+       --
+       --    * An expression function
+       --
+       --    * A function completed by an expression function where both the
+       --      spec and body are in the same context.
+ 
        function Must_Inline return Inline_Level_Type;
        --  Inlining is only done if the call statement N is in the main unit,
        --  or within the body of another inlined subprogram.
  
+       ----------------------------------------
+       -- Is_Non_Loading_Expression_Function --
+       ----------------------------------------
+ 
+       function Is_Non_Loading_Expression_Function
+         (Id : Entity_Id) return Boolean
+       is
+          Body_Decl : Node_Id;
+          Body_Id   : Entity_Id;
+          Spec_Decl : Node_Id;
+ 
+       begin
+          --  A stand-alone expression function is transformed into a spec-body
+          --  pair in-place. Since both the spec and body are in the same list,
+          --  the inlining of such an expression function does not need to load
+          --  anything extra.
+ 
+          if Is_Expression_Function (Id) then
+             return True;
+ 
+          --  A function may be completed by an expression function
+ 
+          elsif Ekind (Id) = E_Function then
+             Spec_Decl := Unit_Declaration_Node (Id);
+ 
+             if Nkind (Spec_Decl) = N_Subprogram_Declaration then
+                Body_Id := Corresponding_Body (Spec_Decl);
+ 
+                if Present (Body_Id) then
+                   Body_Decl := Unit_Declaration_Node (Body_Id);
+ 
+                   --  The inlining of a completing expression function does
+                   --  not need to load anything extra when both the spec and
+                   --  body are in the same context.
+ 
+                   return
+                     Was_Expression_Function (Body_Decl)
+                       and then Parent (Spec_Decl) = Parent (Body_Decl);
+                end if;
+             end if;
+          end if;
+ 
+          return False;
+       end Is_Non_Loading_Expression_Function;
+ 
        -----------------
        -- Must_Inline --
        -----------------
*************** package body Inline is
*** 410,425 ****
  
        if not Comes_From_Source (N)
          and then In_Extended_Main_Source_Unit (N)
!         and then
!           Is_Predefined_File_Name (Unit_File_Name (Get_Source_Unit (E)))
        then
           Set_Needs_Debug_Info (E, False);
        end if;
  
!       --  If the subprogram is an expression function, then there is no need to
!       --  load any package body since the body of the function is in the spec.
  
!       if Is_Expression_Function (E) then
           Set_Is_Called (E);
           return;
        end if;
--- 465,481 ----
  
        if not Comes_From_Source (N)
          and then In_Extended_Main_Source_Unit (N)
!         and then Is_Predefined_Unit (Get_Source_Unit (E))
        then
           Set_Needs_Debug_Info (E, False);
        end if;
  
!       --  If the subprogram is an expression function, or is completed by one
!       --  where both the spec and body are in the same context, then there is
!       --  no need to load any package body since the body of the function is
!       --  in the spec.
  
!       if Is_Non_Loading_Expression_Function (E) then
           Set_Is_Called (E);
           return;
        end if;
*************** package body Inline is
*** 668,724 ****
           Table_Name           => "Pending_Inlined");
        --  The workpile used to compute the transitive closure
  
-       function Is_Ancestor_Of_Main
-         (U_Name : Entity_Id;
-          Nam    : Node_Id) return Boolean;
-       --  Determine whether the unit whose body is loaded is an ancestor of
-       --  the main unit, and has a with_clause on it. The body is not
-       --  analyzed yet, so the check is purely lexical: the name of the with
-       --  clause is a selected component, and names of ancestors must match.
- 
-       -------------------------
-       -- Is_Ancestor_Of_Main --
-       -------------------------
- 
-       function Is_Ancestor_Of_Main
-         (U_Name : Entity_Id;
-          Nam    : Node_Id) return Boolean
-       is
-          Pref : Node_Id;
- 
-       begin
-          if Nkind (Nam) /= N_Selected_Component then
-             return False;
- 
-          else
-             if Chars (Selector_Name (Nam)) /=
-                Chars (Cunit_Entity (Main_Unit))
-             then
-                return False;
-             end if;
- 
-             Pref := Prefix (Nam);
-             if Nkind (Pref) = N_Identifier then
- 
-                --  Par is an ancestor of Par.Child.
- 
-                return Chars (Pref) = Chars (U_Name);
- 
-             elsif Nkind (Pref) = N_Selected_Component
-               and then Chars (Selector_Name (Pref)) = Chars (U_Name)
-             then
-                --  Par.Child is an ancestor of Par.Child.Grand.
- 
-                return True;   --  should check that ancestor match
- 
-             else
-                --  A is an ancestor of A.B.C if it is an ancestor of A.B
- 
-                return Is_Ancestor_Of_Main (U_Name, Pref);
-             end if;
-          end if;
-       end Is_Ancestor_Of_Main;
- 
     --  Start of processing for Analyze_Inlined_Bodies
  
     begin
--- 724,729 ----
*************** package body Inline is
*** 744,757 ****
                 Comp_Unit := Parent (Comp_Unit);
              end loop;
  
!             --  Load the body, unless it is the main unit, or is an instance
!             --  whose body has already been analyzed.
  
              if Present (Comp_Unit)
                and then Comp_Unit /= Cunit (Main_Unit)
                and then Body_Required (Comp_Unit)
!               and then (Nkind (Unit (Comp_Unit)) /= N_Package_Declaration
!                          or else No (Corresponding_Body (Unit (Comp_Unit))))
              then
                 declare
                    Bname : constant Unit_Name_Type :=
--- 749,767 ----
                 Comp_Unit := Parent (Comp_Unit);
              end loop;
  
!             --  Load the body if it exists and contains inlineable entities,
!             --  unless it is the main unit, or is an instance whose body has
!             --  already been analyzed.
  
              if Present (Comp_Unit)
                and then Comp_Unit /= Cunit (Main_Unit)
                and then Body_Required (Comp_Unit)
!               and then
!                 (Nkind (Unit (Comp_Unit)) /= N_Package_Declaration
!                   or else
!                     (No (Corresponding_Body (Unit (Comp_Unit)))
!                       and then Body_Needed_For_Inlining
!                                  (Defining_Entity (Unit (Comp_Unit)))))
              then
                 declare
                    Bname : constant Unit_Name_Type :=
*************** package body Inline is
*** 762,768 ****
                 begin
                    if not Is_Loaded (Bname) then
                       Style_Check := False;
!                      Load_Needed_Body (Comp_Unit, OK, Do_Analyze => False);
  
                       if not OK then
  
--- 772,778 ----
                 begin
                    if not Is_Loaded (Bname) then
                       Style_Check := False;
!                      Load_Needed_Body (Comp_Unit, OK);
  
                       if not OK then
  
*************** package body Inline is
*** 776,818 ****
                          Error_Msg_File_1 :=
                            Get_File_Name (Bname, Subunit => False);
                          Error_Msg_N ("\but file{ was not found!??", Comp_Unit);
- 
-                      else
-                         --  If the package to be inlined is an ancestor unit of
-                         --  the main unit, and it has a semantic dependence on
-                         --  it, the inlining cannot take place to prevent an
-                         --  elaboration circularity. The desired body is not
-                         --  analyzed yet, to prevent the completion of Taft
-                         --  amendment types that would lead to elaboration
-                         --  circularities in gigi.
- 
-                         declare
-                            U_Id      : constant Entity_Id :=
-                                          Defining_Entity (Unit (Comp_Unit));
-                            Body_Unit : constant Node_Id :=
-                                          Library_Unit (Comp_Unit);
-                            Item      : Node_Id;
- 
-                         begin
-                            Item := First (Context_Items (Body_Unit));
-                            while Present (Item) loop
-                               if Nkind (Item) = N_With_Clause
-                                 and then
-                                   Is_Ancestor_Of_Main (U_Id, Name (Item))
-                               then
-                                  Set_Is_Inlined (U_Id, False);
-                                  exit;
-                               end if;
- 
-                               Next (Item);
-                            end loop;
- 
-                            --  If no suspicious with_clauses, analyze the body.
- 
-                            if Is_Inlined (U_Id) then
-                               Semantics (Body_Unit);
-                            end if;
-                         end;
                       end if;
                    end if;
                 end;
--- 786,791 ----
*************** package body Inline is
*** 1137,1148 ****
        --  generic, so that the proper global references are preserved.
  
        --  Note that we do not do this at the library level, because it is not
!       --  needed, and furthermore this causes trouble if front end inlining
        --  is activated (-gnatN).
  
        if In_Instance and then Scope (Current_Scope) /= Standard_Standard then
           Save_Env (Scope (Current_Scope), Scope (Current_Scope));
!          Original_Body := Copy_Generic_Node (N, Empty, True);
        else
           Original_Body := Copy_Separate_Tree (N);
        end if;
--- 1110,1121 ----
        --  generic, so that the proper global references are preserved.
  
        --  Note that we do not do this at the library level, because it is not
!       --  needed, and furthermore this causes trouble if front-end inlining
        --  is activated (-gnatN).
  
        if In_Instance and then Scope (Current_Scope) /= Standard_Standard then
           Save_Env (Scope (Current_Scope), Scope (Current_Scope));
!          Original_Body := Copy_Generic_Node (N, Empty, Instantiating => True);
        else
           Original_Body := Copy_Separate_Tree (N);
        end if;
*************** package body Inline is
*** 1165,1171 ****
  
        Remove_Aspects_And_Pragmas (Original_Body);
  
!       Body_To_Analyze := Copy_Generic_Node (Original_Body, Empty, False);
  
        --  Set return type of function, which is also global and does not need
        --  to be resolved.
--- 1138,1145 ----
  
        Remove_Aspects_And_Pragmas (Original_Body);
  
!       Body_To_Analyze :=
!         Copy_Generic_Node (Original_Body, Empty, Instantiating => False);
  
        --  Set return type of function, which is also global and does not need
        --  to be resolved.
*************** package body Inline is
*** 1262,1289 ****
        --  types.
  
        function Has_Some_Contract (Id : Entity_Id) return Boolean;
!       --  Returns True if subprogram Id has any contract (Pre, Post, Global,
!       --  Depends, etc.)
  
        function Is_Unit_Subprogram (Id : Entity_Id) return Boolean;
!       --  Returns True if subprogram Id defines a compilation unit
        --  Shouldn't this be in Sem_Aux???
  
!       function In_Package_Visible_Spec (Id : Node_Id) return Boolean;
!       --  Returns True if subprogram Id is defined in the visible part of a
!       --  package specification.
  
        ---------------------------------------------------
        -- Has_Formal_With_Discriminant_Dependent_Fields --
        ---------------------------------------------------
  
        function Has_Formal_With_Discriminant_Dependent_Fields
!         (Id : Entity_Id) return Boolean is
! 
           function Has_Discriminant_Dependent_Component
             (Typ : Entity_Id) return Boolean;
!          --  Determine whether unconstrained record type Typ has at least
!          --  one component that depends on a discriminant.
  
           ------------------------------------------
           -- Has_Discriminant_Dependent_Component --
--- 1236,1264 ----
        --  types.
  
        function Has_Some_Contract (Id : Entity_Id) return Boolean;
!       --  Return True if subprogram Id has any contract. The presence of
!       --  Extensions_Visible or Volatile_Function is also considered as a
!       --  contract here.
  
        function Is_Unit_Subprogram (Id : Entity_Id) return Boolean;
!       --  Return True if subprogram Id defines a compilation unit
        --  Shouldn't this be in Sem_Aux???
  
!       function In_Package_Spec (Id : Entity_Id) return Boolean;
!       --  Return True if subprogram Id is defined in the package specification,
!       --  either its visible or private part.
  
        ---------------------------------------------------
        -- Has_Formal_With_Discriminant_Dependent_Fields --
        ---------------------------------------------------
  
        function Has_Formal_With_Discriminant_Dependent_Fields
!         (Id : Entity_Id) return Boolean
!       is
           function Has_Discriminant_Dependent_Component
             (Typ : Entity_Id) return Boolean;
!          --  Determine whether unconstrained record type Typ has at least one
!          --  component that depends on a discriminant.
  
           ------------------------------------------
           -- Has_Discriminant_Dependent_Component --
*************** package body Inline is
*** 1295,1302 ****
              Comp : Entity_Id;
  
           begin
!             --  Inspect all components of the record type looking for one
!             --  that depends on a discriminant.
  
              Comp := First_Component (Typ);
              while Present (Comp) loop
--- 1270,1277 ----
              Comp : Entity_Id;
  
           begin
!             --  Inspect all components of the record type looking for one that
!             --  depends on a discriminant.
  
              Comp := First_Component (Typ);
              while Present (Comp) loop
*************** package body Inline is
*** 1356,1361 ****
--- 1331,1341 ----
           if Is_Subprogram_Or_Generic_Subprogram (Id) then
              Items := Contract (Id);
  
+             --  Note that Classifications is not Empty when Extensions_Visible
+             --  or Volatile_Function is present, which causes such subprograms
+             --  to be considered to have a contract here. This is fine as we
+             --  want to avoid inlining these too.
+ 
              return Present (Items)
                and then (Present (Pre_Post_Conditions (Items)) or else
                          Present (Contract_Test_Cases (Items)) or else
*************** package body Inline is
*** 1365,1388 ****
           return False;
        end Has_Some_Contract;
  
!       -----------------------------
!       -- In_Package_Visible_Spec --
!       -----------------------------
  
!       function In_Package_Visible_Spec  (Id : Node_Id) return Boolean is
!          Decl : Node_Id := Parent (Parent (Id));
!          P    : Node_Id;
  
        begin
!          if Nkind (Parent (Id)) = N_Defining_Program_Unit_Name then
!             Decl := Parent (Decl);
!          end if;
! 
!          P := Parent (Decl);
! 
!          return Nkind (P) = N_Package_Specification
!            and then List_Containing (Decl) = Visible_Declarations (P);
!       end In_Package_Visible_Spec;
  
        ------------------------
        -- Is_Unit_Subprogram --
--- 1345,1361 ----
           return False;
        end Has_Some_Contract;
  
!       ---------------------
!       -- In_Package_Spec --
!       ---------------------
  
!       function In_Package_Spec (Id : Entity_Id) return Boolean is
!          P : constant Node_Id := Parent (Subprogram_Spec (Id));
!          --  Parent of the subprogram's declaration
  
        begin
!          return Nkind (Enclosing_Declaration (P)) = N_Package_Declaration;
!       end In_Package_Spec;
  
        ------------------------
        -- Is_Unit_Subprogram --
*************** package body Inline is
*** 1428,1436 ****
        if Is_Unit_Subprogram (Id) then
           return False;
  
!       --  Do not inline subprograms declared in the visible part of a package
  
!       elsif In_Package_Visible_Spec (Id) then
           return False;
  
        --  Do not inline subprograms marked No_Return, possibly used for
--- 1401,1420 ----
        if Is_Unit_Subprogram (Id) then
           return False;
  
!       --  Do not inline subprograms declared in package specs, because they are
!       --  not local, i.e. can be called either from anywhere (if declared in
!       --  visible part) or from the child units (if declared in private part).
  
!       elsif In_Package_Spec (Id) then
!          return False;
! 
!       --  Do not inline subprograms declared in other units. This is important
!       --  in particular for subprograms defined in the private part of a
!       --  package spec, when analyzing one of its child packages, as otherwise
!       --  we issue spurious messages about the impossibility to inline such
!       --  calls.
! 
!       elsif not In_Extended_Main_Code_Unit (Id) then
           return False;
  
        --  Do not inline subprograms marked No_Return, possibly used for
*************** package body Inline is
*** 1440,1446 ****
           return False;
  
        --  Do not inline subprograms that have a contract on the spec or the
!       --  body. Use the contract(s) instead in GNATprove.
  
        elsif (Present (Spec_Id) and then Has_Some_Contract (Spec_Id))
                 or else
--- 1424,1431 ----
           return False;
  
        --  Do not inline subprograms that have a contract on the spec or the
!       --  body. Use the contract(s) instead in GNATprove. This also prevents
!       --  inlining of subprograms with Extensions_Visible or Volatile_Function.
  
        elsif (Present (Spec_Id) and then Has_Some_Contract (Spec_Id))
                 or else
*************** package body Inline is
*** 1481,1486 ****
--- 1466,1478 ----
        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.
+ 
+       elsif Within_Protected_Type (Id) then
+          return False;
+ 
        --  Do not inline predicate functions (treated specially by GNATprove)
  
        elsif Is_Predicate_Function (Id) then
*************** package body Inline is
*** 1542,1548 ****
  
        pragma Assert (Msg (Msg'Last) = '?');
  
!       --  Legacy front end inlining model
  
        if not Back_End_Inlining then
  
--- 1534,1540 ----
  
        pragma Assert (Msg (Msg'Last) = '?');
  
!       --  Legacy front-end inlining model
  
        if not Back_End_Inlining then
  
*************** package body Inline is
*** 1551,1557 ****
           --  subprograms may contain nested subprograms and become ineligible
           --  for inlining.
  
!          if Is_Predefined_File_Name (Unit_File_Name (Get_Source_Unit (Subp)))
             and then not In_Extended_Main_Source_Unit (Subp)
           then
              null;
--- 1543,1549 ----
           --  subprograms may contain nested subprograms and become ineligible
           --  for inlining.
  
!          if Is_Predefined_Unit (Get_Source_Unit (Subp))
             and then not In_Extended_Main_Source_Unit (Subp)
           then
              null;
*************** package body Inline is
*** 1575,1581 ****
              Error_Msg_NE (Msg & "p?", N, Subp);
           end if;
  
!       --  New semantics relying on back end inlining
  
        elsif Is_Serious then
  
--- 1567,1573 ----
              Error_Msg_NE (Msg & "p?", N, Subp);
           end if;
  
!       --  New semantics relying on back-end inlining
  
        elsif Is_Serious then
  
*************** package body Inline is
*** 1597,1603 ****
           --  compatibility but it will be removed when we enforce the
           --  strictness of the new rules.
  
!          if Is_Predefined_File_Name (Unit_File_Name (Get_Source_Unit (Subp)))
             and then not In_Extended_Main_Source_Unit (Subp)
           then
              null;
--- 1589,1595 ----
           --  compatibility but it will be removed when we enforce the
           --  strictness of the new rules.
  
!          if Is_Predefined_Unit (Get_Source_Unit (Subp))
             and then not In_Extended_Main_Source_Unit (Subp)
           then
              null;
*************** package body Inline is
*** 1612,1620 ****
                 declare
                    Gen_P : constant Entity_Id := Generic_Parent (Parent (Subp));
                 begin
!                   if Is_Predefined_File_Name
!                        (Unit_File_Name (Get_Source_Unit (Gen_P)))
!                   then
                       Set_Is_Inlined (Subp, False);
                       Error_Msg_NE (Msg & "p?", N, Subp);
                       return;
--- 1604,1610 ----
                 declare
                    Gen_P : constant Entity_Id := Generic_Parent (Parent (Subp));
                 begin
!                   if Is_Predefined_Unit (Get_Source_Unit (Gen_P)) then
                       Set_Is_Inlined (Subp, False);
                       Error_Msg_NE (Msg & "p?", N, Subp);
                       return;
*************** package body Inline is
*** 1655,1676 ****
        --  body N has no local declarations and its unique statement is a single
        --  extended return statement with a handled statements sequence.
  
-       procedure Generate_Subprogram_Body
-         (N              : Node_Id;
-          Body_To_Inline : out Node_Id);
-       --  Generate a parameterless duplicate of subprogram body N. Occurrences
-       --  of pragmas referencing the formals are removed since they have no
-       --  meaning when the body is inlined and the formals are rewritten (the
-       --  analysis of the non-inlined body will handle these pragmas properly).
-       --  A new internal name is associated with Body_To_Inline.
- 
        procedure Split_Unconstrained_Function
          (N       : Node_Id;
           Spec_Id : Entity_Id);
        --  N is an inlined function body that returns an unconstrained type and
        --  has a single extended return statement. Split N in two subprograms:
        --  a procedure P' and a function F'. The formals of P' duplicate the
!       --  formals of N plus an extra formal which is used return a value;
        --  its body is composed by the declarations and list of statements
        --  of the extended return statement of N.
  
--- 1645,1657 ----
        --  body N has no local declarations and its unique statement is a single
        --  extended return statement with a handled statements sequence.
  
        procedure Split_Unconstrained_Function
          (N       : Node_Id;
           Spec_Id : Entity_Id);
        --  N is an inlined function body that returns an unconstrained type and
        --  has a single extended return statement. Split N in two subprograms:
        --  a procedure P' and a function F'. The formals of P' duplicate the
!       --  formals of N plus an extra formal which is used to return a value;
        --  its body is composed by the declarations and list of statements
        --  of the extended return statement of N.
  
*************** package body Inline is
*** 1679,1684 ****
--- 1660,1722 ----
        --------------------------
  
        procedure Build_Body_To_Inline (N : Node_Id; Spec_Id : Entity_Id) is
+          procedure Generate_Subprogram_Body
+            (N              : Node_Id;
+             Body_To_Inline : out Node_Id);
+          --  Generate a parameterless duplicate of subprogram body N. Note that
+          --  occurrences of pragmas referencing the formals are removed since
+          --  they have no meaning when the body is inlined and the formals are
+          --  rewritten (the analysis of the non-inlined body will handle these
+          --  pragmas).  A new internal name is associated with Body_To_Inline.
+ 
+          -----------------------------
+          -- Generate_Body_To_Inline --
+          -----------------------------
+ 
+          procedure Generate_Subprogram_Body
+            (N              : Node_Id;
+             Body_To_Inline : out Node_Id)
+          is
+          begin
+             --  Within an instance, the body to inline must be treated as a
+             --  nested generic so that proper global references are preserved.
+ 
+             --  Note that we do not do this at the library level, because it
+             --  is not needed, and furthermore this causes trouble if front
+             --  end inlining is activated (-gnatN).
+ 
+             if In_Instance
+               and then Scope (Current_Scope) /= Standard_Standard
+             then
+                Body_To_Inline :=
+                  Copy_Generic_Node (N, Empty, Instantiating => True);
+             else
+                Body_To_Inline := Copy_Separate_Tree (N);
+             end if;
+ 
+             --  Remove aspects/pragmas that have no meaning in an inlined body
+ 
+             Remove_Aspects_And_Pragmas (Body_To_Inline);
+ 
+             --  We need to capture references to the formals in order
+             --  to substitute the actuals at the point of inlining, i.e.
+             --  instantiation. To treat the formals as globals to the body to
+             --  inline, we nest it within a dummy parameterless subprogram,
+             --  declared within the real one.
+ 
+             Set_Parameter_Specifications
+               (Specification (Body_To_Inline), No_List);
+ 
+             --  A new internal name is associated with Body_To_Inline to avoid
+             --  conflicts when the non-inlined body N is analyzed.
+ 
+             Set_Defining_Unit_Name (Specification (Body_To_Inline),
+                Make_Defining_Identifier (Sloc (N), New_Internal_Name ('P')));
+             Set_Corresponding_Spec (Body_To_Inline, Empty);
+          end Generate_Subprogram_Body;
+ 
+          --  Local variables
+ 
           Decl            : constant Node_Id := Unit_Declaration_Node (Spec_Id);
           Original_Body   : Node_Id;
           Body_To_Analyze : Node_Id;
*************** package body Inline is
*** 1689,1695 ****
           --  Within an instance, the body to inline must be treated as a nested
           --  generic, so that the proper global references are preserved. We
           --  do not do this at the library level, because it is not needed, and
!          --  furthermore this causes trouble if front end inlining is activated
           --  (-gnatN).
  
           if In_Instance
--- 1727,1733 ----
           --  Within an instance, the body to inline must be treated as a nested
           --  generic, so that the proper global references are preserved. We
           --  do not do this at the library level, because it is not needed, and
!          --  furthermore this causes trouble if front-end inlining is activated
           --  (-gnatN).
  
           if In_Instance
*************** package body Inline is
*** 1698,1711 ****
              Save_Env (Scope (Current_Scope), Scope (Current_Scope));
           end if;
  
!          --  We need to capture references to the formals in order
!          --  to substitute the actuals at the point of inlining, i.e.
!          --  instantiation. To treat the formals as globals to the body to
!          --  inline, we nest it within a dummy parameterless subprogram,
!          --  declared within the real one.
  
           Generate_Subprogram_Body (N, Original_Body);
!          Body_To_Analyze := Copy_Generic_Node (Original_Body, Empty, False);
  
           --  Set return type of function, which is also global and does not
           --  need to be resolved.
--- 1736,1749 ----
              Save_Env (Scope (Current_Scope), Scope (Current_Scope));
           end if;
  
!          --  Capture references to formals in order to substitute the actuals
!          --  at the point of inlining or instantiation. To treat the formals
!          --  as globals to the body to inline, nest the body within a dummy
!          --  parameterless subprogram, declared within the real one.
  
           Generate_Subprogram_Body (N, Original_Body);
!          Body_To_Analyze :=
!            Copy_Generic_Node (Original_Body, Empty, Instantiating => False);
  
           --  Set return type of function, which is also global and does not
           --  need to be resolved.
*************** package body Inline is
*** 1745,1752 ****
        -- Can_Split_Unconstrained_Function --
        --------------------------------------
  
!       function Can_Split_Unconstrained_Function (N : Node_Id) return Boolean
!       is
           Ret_Node : constant Node_Id :=
                        First (Statements (Handled_Statement_Sequence (N)));
           D : Node_Id;
--- 1783,1789 ----
        -- Can_Split_Unconstrained_Function --
        --------------------------------------
  
!       function Can_Split_Unconstrained_Function (N : Node_Id) return Boolean is
           Ret_Node : constant Node_Id :=
                        First (Statements (Handled_Statement_Sequence (N)));
           D : Node_Id;
*************** package body Inline is
*** 1779,1829 ****
             and then Present (Handled_Statement_Sequence (Ret_Node));
        end Can_Split_Unconstrained_Function;
  
-       -----------------------------
-       -- Generate_Body_To_Inline --
-       -----------------------------
- 
-       procedure Generate_Subprogram_Body
-         (N              : Node_Id;
-          Body_To_Inline : out Node_Id)
-       is
-       begin
-          --  Within an instance, the body to inline must be treated as a nested
-          --  generic, so that the proper global references are preserved.
- 
-          --  Note that we do not do this at the library level, because it
-          --  is not needed, and furthermore this causes trouble if front
-          --  end inlining is activated (-gnatN).
- 
-          if In_Instance
-            and then Scope (Current_Scope) /= Standard_Standard
-          then
-             Body_To_Inline := Copy_Generic_Node (N, Empty, True);
-          else
-             Body_To_Inline := Copy_Separate_Tree (N);
-          end if;
- 
-          --  Remove all aspects/pragmas that have no meaning in an inlined body
- 
-          Remove_Aspects_And_Pragmas (Body_To_Inline);
- 
-          --  We need to capture references to the formals in order
-          --  to substitute the actuals at the point of inlining, i.e.
-          --  instantiation. To treat the formals as globals to the body to
-          --  inline, we nest it within a dummy parameterless subprogram,
-          --  declared within the real one.
- 
-          Set_Parameter_Specifications
-            (Specification (Body_To_Inline), No_List);
- 
-          --  A new internal name is associated with Body_To_Inline to avoid
-          --  conflicts when the non-inlined body N is analyzed.
- 
-          Set_Defining_Unit_Name (Specification (Body_To_Inline),
-             Make_Defining_Identifier (Sloc (N), New_Internal_Name ('P')));
-          Set_Corresponding_Spec (Body_To_Inline, Empty);
-       end Generate_Subprogram_Body;
- 
        ----------------------------------
        -- Split_Unconstrained_Function --
        ----------------------------------
--- 1816,1821 ----
*************** package body Inline is
*** 1978,1983 ****
--- 1970,1976 ----
              Pop_Scope;
              Build_Procedure (Proc_Id, Decl_List);
              Insert_Actions (N, Decl_List);
+             Set_Is_Inlined (Proc_Id);
              Push_Scope (Scope);
           end;
  
*************** package body Inline is
*** 2007,2020 ****
                  Parameter_Associations => Actual_List);
           end;
  
!          --  Generate
  
           --    declare
           --       New_Obj : ...
           --    begin
!          --       main_1__F1b (New_Obj, ...);
!          --       return Obj;
!          --    end B10b;
  
           Blk_Stmt :=
             Make_Block_Statement (Loc,
--- 2000,2013 ----
                  Parameter_Associations => Actual_List);
           end;
  
!          --  Generate:
  
           --    declare
           --       New_Obj : ...
           --    begin
!          --       Proc (New_Obj, ...);
!          --       return New_Obj;
!          --    end;
  
           Blk_Stmt :=
             Make_Block_Statement (Loc,
*************** package body Inline is
*** 2278,2285 ****
     is
        Loc       : constant Source_Ptr := Sloc (N);
        Is_Predef : constant Boolean :=
!                     Is_Predefined_File_Name
!                       (Unit_File_Name (Get_Source_Unit (Subp)));
        Orig_Bod  : constant Node_Id :=
                      Body_To_Inline (Unit_Declaration_Node (Subp));
  
--- 2271,2277 ----
     is
        Loc       : constant Source_Ptr := Sloc (N);
        Is_Predef : constant Boolean :=
!                     Is_Predefined_Unit (Get_Source_Unit (Subp));
        Orig_Bod  : constant Node_Id :=
                      Body_To_Inline (Unit_Declaration_Node (Subp));
  
*************** package body Inline is
*** 2289,2306 ****
        Exit_Lab : Entity_Id        := Empty;
        F        : Entity_Id;
        A        : Node_Id;
!       Lab_Decl : Node_Id;
        Lab_Id   : Node_Id;
        New_A    : Node_Id;
!       Num_Ret  : Nat := 0;
        Ret_Type : Entity_Id;
  
!       Targ : Node_Id;
        --  The target of the call. If context is an assignment statement then
        --  this is the left-hand side of the assignment, else it is a temporary
        --  to which the return value is assigned prior to rewriting the call.
  
!       Targ1 : Node_Id;
        --  A separate target used when the return type is unconstrained
  
        Temp     : Entity_Id;
--- 2281,2298 ----
        Exit_Lab : Entity_Id        := Empty;
        F        : Entity_Id;
        A        : Node_Id;
!       Lab_Decl : Node_Id          := Empty;
        Lab_Id   : Node_Id;
        New_A    : Node_Id;
!       Num_Ret  : Nat              := 0;
        Ret_Type : Entity_Id;
  
!       Targ : Node_Id := Empty;
        --  The target of the call. If context is an assignment statement then
        --  this is the left-hand side of the assignment, else it is a temporary
        --  to which the return value is assigned prior to rewriting the call.
  
!       Targ1 : Node_Id := Empty;
        --  A separate target used when the return type is unconstrained
  
        Temp     : Entity_Id;
*************** package body Inline is
*** 2985,2992 ****
              --  The semantic analyzer checked that frontend-inlined functions
              --  returning unconstrained types have no declarations and have
              --  a single extended return statement. As part of its processing
!             --  the function was split in two subprograms: a procedure P and
!             --  a function F that has a block with a call to procedure P (see
              --  Split_Unconstrained_Function).
  
              else
--- 2977,2984 ----
              --  The semantic analyzer checked that frontend-inlined functions
              --  returning unconstrained types have no declarations and have
              --  a single extended return statement. As part of its processing
!             --  the function was split into two subprograms: a procedure P' and
!             --  a function F' that has a block with a call to procedure P' (see
              --  Split_Unconstrained_Function).
  
              else
*************** package body Inline is
*** 3332,3338 ****
           --  avoid generating undesired extra calls and goto statements.
  
           --     Given:
!          --                 function Func (...) return ...
           --                 begin
           --                    declare
           --                       Result : String (1 .. 4);
--- 3324,3330 ----
           --  avoid generating undesired extra calls and goto statements.
  
           --     Given:
!          --                 function Func (...) return String is
           --                 begin
           --                    declare
           --                       Result : String (1 .. 4);
*************** package body Inline is
*** 3340,3346 ****
           --                       Proc (Result, ...);
           --                       return Result;
           --                    end;
!          --                 end F;
  
           --                 Result : String := Func (...);
  
--- 3332,3338 ----
           --                       Proc (Result, ...);
           --                       return Result;
           --                    end;
!          --                 end Func;
  
           --                 Result : String := Func (...);
  
*************** package body Inline is
*** 3560,3567 ****
           end if;
  
           return Present (Conv)
!            and then Is_Predefined_File_Name
!                       (Unit_File_Name (Get_Source_Unit (Conv)))
             and then Is_Intrinsic_Subprogram (Conv);
        end Is_Unchecked_Conversion;
  
--- 3552,3558 ----
           end if;
  
           return Present (Conv)
!            and then Is_Predefined_Unit (Get_Source_Unit (Conv))
             and then Is_Intrinsic_Subprogram (Conv);
        end Is_Unchecked_Conversion;
  
*************** package body Inline is
*** 3590,3596 ****
              return True;
           end if;
  
!          --  Then declarations excluded only for front end inlining
  
           if Back_End_Inlining then
              null;
--- 3581,3587 ----
              return True;
           end if;
  
!          --  Then declarations excluded only for front-end inlining
  
           if Back_End_Inlining then
              null;
*************** package body Inline is
*** 4179,4192 ****
  
     procedure Lock is
     begin
-       Pending_Instantiations.Locked := True;
-       Inlined_Bodies.Locked := True;
-       Successors.Locked := True;
-       Inlined.Locked := True;
        Pending_Instantiations.Release;
        Inlined_Bodies.Release;
        Successors.Release;
        Inlined.Release;
     end Lock;
  
     --------------------------------
--- 4170,4183 ----
  
     procedure Lock is
     begin
        Pending_Instantiations.Release;
+       Pending_Instantiations.Locked := True;
        Inlined_Bodies.Release;
+       Inlined_Bodies.Locked := True;
        Successors.Release;
+       Successors.Locked := True;
        Inlined.Release;
+       Inlined.Locked := True;
     end Lock;
  
     --------------------------------
diff -Nrcpad gcc-7.3.0/gcc/ada/inline.ads gcc-8.1.0/gcc/ada/inline.ads
*** gcc-7.3.0/gcc/ada/inline.ads	Fri Jan 13 10:22:23 2017
--- gcc-8.1.0/gcc/ada/inline.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/interfac.ads gcc-8.1.0/gcc/ada/interfac.ads
*** gcc-7.3.0/gcc/ada/interfac.ads	Mon May  2 10:10:01 2016
--- gcc-8.1.0/gcc/ada/interfac.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,184 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                           I N T E R F A C E S                            --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2002-2016, Free Software Foundation, 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 implementation dependent sections of this file.      --
- --                                                                          --
- -- GNAT is 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 Compiler_Unit_Warning;
- 
- package Interfaces is
-    pragma No_Elaboration_Code_All;
-    pragma Pure;
- 
-    --  All identifiers in this unit are implementation defined
- 
-    pragma Implementation_Defined;
- 
-    type Integer_8  is range -2 **  7 .. 2 **  7 - 1;
-    for Integer_8'Size use  8;
- 
-    type Integer_16 is range -2 ** 15 .. 2 ** 15 - 1;
-    for Integer_16'Size use 16;
- 
-    type Integer_32 is range -2 ** 31 .. 2 ** 31 - 1;
-    for Integer_32'Size use 32;
- 
-    type Integer_64 is new Long_Long_Integer;
-    for Integer_64'Size use 64;
-    --  Note: we use Long_Long_Integer'First instead of -2 ** 63 to allow this
-    --  unit to compile when using custom target configuration files where the
-    --  maximum integer is 32 bits. This is useful for static analysis tools
-    --  such as SPARK or CodePeer. In the normal case Long_Long_Integer is
-    --  always 64-bits so we get the desired 64-bit type.
- 
-    type Unsigned_8  is mod 2 ** 8;
-    for Unsigned_8'Size use  8;
- 
-    type Unsigned_16 is mod 2 ** 16;
-    for Unsigned_16'Size use 16;
- 
-    type Unsigned_24 is mod 2 ** 24;
-    for Unsigned_24'Size use 24;
-    --  Declare this type for compatibility with legacy Ada compilers.
-    --  This is particularly useful in the context of CodePeer analysis.
- 
-    type Unsigned_32 is mod 2 ** 32;
-    for Unsigned_32'Size use 32;
- 
-    type Unsigned_64 is mod 2 ** Long_Long_Integer'Size;
-    for Unsigned_64'Size use 64;
-    --  See comment on Integer_64 above
- 
-    function Shift_Left
-      (Value  : Unsigned_8;
-       Amount : Natural) return Unsigned_8;
- 
-    function Shift_Right
-      (Value  : Unsigned_8;
-       Amount : Natural) return Unsigned_8;
- 
-    function Shift_Right_Arithmetic
-      (Value  : Unsigned_8;
-       Amount : Natural) return Unsigned_8;
- 
-    function Rotate_Left
-      (Value  : Unsigned_8;
-       Amount : Natural) return Unsigned_8;
- 
-    function Rotate_Right
-      (Value  : Unsigned_8;
-       Amount : Natural) return Unsigned_8;
- 
-    function Shift_Left
-      (Value  : Unsigned_16;
-       Amount : Natural) return Unsigned_16;
- 
-    function Shift_Right
-      (Value  : Unsigned_16;
-       Amount : Natural) return Unsigned_16;
- 
-    function Shift_Right_Arithmetic
-      (Value  : Unsigned_16;
-       Amount : Natural) return Unsigned_16;
- 
-    function Rotate_Left
-      (Value  : Unsigned_16;
-       Amount : Natural) return Unsigned_16;
- 
-    function Rotate_Right
-      (Value  : Unsigned_16;
-       Amount : Natural) return Unsigned_16;
- 
-    function Shift_Left
-      (Value  : Unsigned_32;
-       Amount : Natural) return Unsigned_32;
- 
-    function Shift_Right
-      (Value  : Unsigned_32;
-       Amount : Natural) return Unsigned_32;
- 
-    function Shift_Right_Arithmetic
-      (Value  : Unsigned_32;
-       Amount : Natural) return Unsigned_32;
- 
-    function Rotate_Left
-      (Value  : Unsigned_32;
-       Amount : Natural) return Unsigned_32;
- 
-    function Rotate_Right
-      (Value  : Unsigned_32;
-       Amount : Natural) return Unsigned_32;
- 
-    function Shift_Left
-      (Value  : Unsigned_64;
-       Amount : Natural) return Unsigned_64;
- 
-    function Shift_Right
-      (Value  : Unsigned_64;
-       Amount : Natural) return Unsigned_64;
- 
-    function Shift_Right_Arithmetic
-      (Value  : Unsigned_64;
-       Amount : Natural) return Unsigned_64;
- 
-    function Rotate_Left
-      (Value  : Unsigned_64;
-       Amount : Natural) return Unsigned_64;
- 
-    function Rotate_Right
-      (Value  : Unsigned_64;
-       Amount : Natural) return Unsigned_64;
- 
-    pragma Import (Intrinsic, Shift_Left);
-    pragma Import (Intrinsic, Shift_Right);
-    pragma Import (Intrinsic, Shift_Right_Arithmetic);
-    pragma Import (Intrinsic, Rotate_Left);
-    pragma Import (Intrinsic, Rotate_Right);
- 
-    --  IEEE Floating point types
- 
-    type IEEE_Float_32 is digits 6;
-    for IEEE_Float_32'Size use 32;
- 
-    type IEEE_Float_64 is digits 15;
-    for IEEE_Float_64'Size use 64;
- 
-    --  If there is an IEEE extended float available on the machine, we assume
-    --  that it is available as Long_Long_Float.
- 
-    --  Note: it is harmless, and explicitly permitted, to include additional
-    --  types in interfaces, so it is not wrong to have IEEE_Extended_Float
-    --  defined even if the extended format is not available.
- 
-    type IEEE_Extended_Float is new Long_Long_Float;
- 
- end Interfaces;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/ioexcept.ads gcc-8.1.0/gcc/ada/ioexcept.ads
*** gcc-7.3.0/gcc/ada/ioexcept.ads	Fri Aug  1 10:33:45 2008
--- gcc-8.1.0/gcc/ada/ioexcept.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,24 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT RUN-TIME COMPONENTS                         --
- --                                                                          --
- --                        I O _ E X C E P T I O N S                         --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT.  In accordance with the copyright of that document, you can freely --
- -- copy and modify this specification,  provided that if you redistribute a --
- -- modified version,  any changes that you have made are clearly indicated. --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- pragma Ada_2005;
- --  Explicit setting of Ada 2005 mode is required here, since we want to with a
- --  child unit (not possible in Ada 83 mode), and IO_Exceptions is not
- --  considered to be an internal unit that is automatically compiled in Ada
- --  2005 mode (since a user is allowed to redeclare IO_Exceptions).
- 
- with Ada.IO_Exceptions;
- 
- package IO_Exceptions renames Ada.IO_Exceptions;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/itypes.adb gcc-8.1.0/gcc/ada/itypes.adb
*** gcc-7.3.0/gcc/ada/itypes.adb	Thu Oct 17 13:46:14 2013
--- gcc-8.1.0/gcc/ada/itypes.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2013, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/itypes.ads gcc-8.1.0/gcc/ada/itypes.ads
*** gcc-7.3.0/gcc/ada/itypes.ads	Thu Jun 17 10:45:18 2010
--- gcc-8.1.0/gcc/ada/itypes.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2010, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/krunch.adb gcc-8.1.0/gcc/ada/krunch.adb
*** gcc-7.3.0/gcc/ada/krunch.adb	Thu Apr 21 09:12:45 2016
--- gcc-8.1.0/gcc/ada/krunch.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/krunch.ads gcc-8.1.0/gcc/ada/krunch.ads
*** gcc-7.3.0/gcc/ada/krunch.ads	Fri Aug  1 09:38:48 2014
--- gcc-8.1.0/gcc/ada/krunch.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/layout.adb gcc-8.1.0/gcc/ada/layout.adb
*** gcc-7.3.0/gcc/ada/layout.adb	Fri Jan 13 10:19:19 2017
--- gcc-8.1.0/gcc/ada/layout.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or 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-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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,51 ****
  ------------------------------------------------------------------------------
  
  with Atree;    use Atree;
- with Checks;   use Checks;
  with Debug;    use Debug;
  with Einfo;    use Einfo;
  with Errout;   use Errout;
- with Exp_Ch3;  use Exp_Ch3;
- with Exp_Util; use Exp_Util;
- with Namet;    use Namet;
- with Nlists;   use Nlists;
- with Nmake;    use Nmake;
  with Opt;      use Opt;
- with Repinfo;  use Repinfo;
- with Sem;      use Sem;
  with Sem_Aux;  use Sem_Aux;
- with Sem_Case; use Sem_Case;
  with Sem_Ch13; use Sem_Ch13;
  with Sem_Eval; use Sem_Eval;
  with Sem_Util; use Sem_Util;
  with Sinfo;    use Sinfo;
  with Snames;   use Snames;
- with Stand;    use Stand;
- with Targparm; use Targparm;
- with Tbuild;   use Tbuild;
  with Ttypes;   use Ttypes;
  with Uintp;    use Uintp;
  
--- 24,39 ----
*************** package body Layout is
*** 58,187 ****
     SSU : constant Int := Ttypes.System_Storage_Unit;
     --  Short hand for System_Storage_Unit
  
-    Vname : constant Name_Id := Name_uV;
-    --  Formal parameter name used for functions generated for size offset
-    --  values that depend on the discriminant. All such functions have the
-    --  following form:
-    --
-    --     function xxx (V : vtyp) return Unsigned is
-    --     begin
-    --        return ... expression involving V.discrim
-    --     end xxx;
- 
     -----------------------
     -- Local Subprograms --
     -----------------------
  
-    function Assoc_Add
-      (Loc        : Source_Ptr;
-       Left_Opnd  : Node_Id;
-       Right_Opnd : Node_Id) return Node_Id;
-    --  This is like Make_Op_Add except that it optimizes some cases knowing
-    --  that associative rearrangement is allowed for constant folding if one
-    --  of the operands is a compile time known value.
- 
-    function Assoc_Multiply
-      (Loc        : Source_Ptr;
-       Left_Opnd  : Node_Id;
-       Right_Opnd : Node_Id) return Node_Id;
-    --  This is like Make_Op_Multiply except that it optimizes some cases
-    --  knowing that associative rearrangement is allowed for constant folding
-    --  if one of the operands is a compile time known value
- 
-    function Assoc_Subtract
-      (Loc        : Source_Ptr;
-       Left_Opnd  : Node_Id;
-       Right_Opnd : Node_Id) return Node_Id;
-    --  This is like Make_Op_Subtract except that it optimizes some cases
-    --  knowing that associative rearrangement is allowed for constant folding
-    --  if one of the operands is a compile time known value
- 
-    function Bits_To_SU (N : Node_Id) return Node_Id;
-    --  This is used when we cross the boundary from static sizes in bits to
-    --  dynamic sizes in storage units. If the argument N is anything other
-    --  than an integer literal, it is returned unchanged, but if it is an
-    --  integer literal, then it is taken as a size in bits, and is replaced
-    --  by the corresponding size in storage units.
- 
-    function Compute_Length (Lo : Node_Id; Hi : Node_Id) return Node_Id;
-    --  Given expressions for the low bound (Lo) and the high bound (Hi),
-    --  Build an expression for the value hi-lo+1, converted to type
-    --  Standard.Unsigned. Takes care of the case where the operands
-    --  are of an enumeration type (so that the subtraction cannot be
-    --  done directly) by applying the Pos operator to Hi/Lo first.
- 
     procedure Compute_Size_Depends_On_Discriminant (E : Entity_Id);
     --  Given an array type or an array subtype E, compute whether its size
     --  depends on the value of one or more discriminants and set the flag
     --  Size_Depends_On_Discriminant accordingly. This need not be called
     --  in front end layout mode since it does the computation on its own.
  
-    function Expr_From_SO_Ref
-      (Loc  : Source_Ptr;
-       D    : SO_Ref;
-       Comp : Entity_Id := Empty) return Node_Id;
-    --  Given a value D from a size or offset field, return an expression
-    --  representing the value stored. If the value is known at compile time,
-    --  then an N_Integer_Literal is returned with the appropriate value. If
-    --  the value references a constant entity, then an N_Identifier node
-    --  referencing this entity is returned. If the value denotes a size
-    --  function, then returns a call node denoting the given function, with
-    --  a single actual parameter that either refers to the parameter V of
-    --  an enclosing size function (if Comp is Empty or its type doesn't match
-    --  the function's formal), or else is a selected component V.c when Comp
-    --  denotes a component c whose type matches that of the function formal.
-    --  The Loc value is used for the Sloc value of constructed notes.
- 
-    function SO_Ref_From_Expr
-      (Expr      : Node_Id;
-       Ins_Type  : Entity_Id;
-       Vtype     : Entity_Id := Empty;
-       Make_Func : Boolean   := False) return Dynamic_SO_Ref;
-    --  This routine is used in the case where a size/offset value is dynamic
-    --  and is represented by the expression Expr. SO_Ref_From_Expr checks if
-    --  the Expr contains a reference to the identifier V, and if so builds
-    --  a function depending on discriminants of the formal parameter V which
-    --  is of type Vtype. Otherwise, if the parameter Make_Func is True, then
-    --  Expr will be encapsulated in a parameterless function; if Make_Func is
-    --  False, then a constant entity with the value Expr is built. The result
-    --  is a Dynamic_SO_Ref to the created entity. Note that Vtype can be
-    --  omitted if Expr does not contain any reference to V, the created entity.
-    --  The declaration created is inserted in the freeze actions of Ins_Type,
-    --  which also supplies the Sloc for created nodes. This function also takes
-    --  care of making sure that the expression is properly analyzed and
-    --  resolved (which may not be the case yet if we build the expression
-    --  in this unit).
- 
-    function Get_Max_SU_Size (E : Entity_Id) return Node_Id;
-    --  E is an array type or subtype that has at least one index bound that
-    --  is the value of a record discriminant. For such an array, the function
-    --  computes an expression that yields the maximum possible size of the
-    --  array in storage units. The result is not defined for any other type,
-    --  or for arrays that do not depend on discriminants, and it is a fatal
-    --  error to call this unless Size_Depends_On_Discriminant (E) is True.
- 
-    procedure Layout_Array_Type (E : Entity_Id);
-    --  Front-end layout of non-bit-packed array type or subtype
- 
-    procedure Layout_Record_Type (E : Entity_Id);
-    --  Front-end layout of record type
- 
-    procedure Rewrite_Integer (N : Node_Id; V : Uint);
-    --  Rewrite node N with an integer literal whose value is V. The Sloc for
-    --  the new node is taken from N, and the type of the literal is set to a
-    --  copy of the type of N on entry.
- 
-    procedure Set_And_Check_Static_Size
-      (E      : Entity_Id;
-       Esiz   : SO_Ref;
-       RM_Siz : SO_Ref);
-    --  This procedure is called to check explicit given sizes (possibly stored
-    --  in the Esize and RM_Size fields of E) against computed Object_Size
-    --  (Esiz) and Value_Size (RM_Siz) values. Appropriate errors and warnings
-    --  are posted if specified sizes are inconsistent with specified sizes. On
-    --  return, Esize and RM_Size fields of E are set (either from previously
-    --  given values, or from the newly computed values, as appropriate).
- 
     procedure Set_Composite_Alignment (E : Entity_Id);
     --  This procedure is called for record types and subtypes, and also for
     --  atomic array types and subtypes. If no alignment is set, and the size
--- 46,61 ----
*************** package body Layout is
*** 296,1307 ****
        end if;
     end Adjust_Esize_Alignment;
  
-    ---------------
-    -- Assoc_Add --
-    ---------------
- 
-    function Assoc_Add
-      (Loc        : Source_Ptr;
-       Left_Opnd  : Node_Id;
-       Right_Opnd : Node_Id) return Node_Id
-    is
-       L : Node_Id;
-       R : Uint;
- 
-    begin
-       --  Case of right operand is a constant
- 
-       if Compile_Time_Known_Value (Right_Opnd) then
-          L := Left_Opnd;
-          R := Expr_Value (Right_Opnd);
- 
-       --  Case of left operand is a constant
- 
-       elsif Compile_Time_Known_Value (Left_Opnd) then
-          L := Right_Opnd;
-          R := Expr_Value (Left_Opnd);
- 
-       --  Neither operand is a constant, do the addition with no optimization
- 
-       else
-          return Make_Op_Add (Loc, Left_Opnd, Right_Opnd);
-       end if;
- 
-       --  Case of left operand is an addition
- 
-       if Nkind (L) = N_Op_Add then
- 
-          --  (C1 + E) + C2 = (C1 + C2) + E
- 
-          if Compile_Time_Known_Value (Sinfo.Left_Opnd (L)) then
-             Rewrite_Integer
-               (Sinfo.Left_Opnd (L),
-                Expr_Value (Sinfo.Left_Opnd (L)) + R);
-             return L;
- 
-          --  (E + C1) + C2 = E + (C1 + C2)
- 
-          elsif Compile_Time_Known_Value (Sinfo.Right_Opnd (L)) then
-             Rewrite_Integer
-               (Sinfo.Right_Opnd (L),
-                Expr_Value (Sinfo.Right_Opnd (L)) + R);
-             return L;
-          end if;
- 
-       --  Case of left operand is a subtraction
- 
-       elsif Nkind (L) = N_Op_Subtract then
- 
-          --  (C1 - E) + C2 = (C1 + C2) - E
- 
-          if Compile_Time_Known_Value (Sinfo.Left_Opnd (L)) then
-             Rewrite_Integer
-               (Sinfo.Left_Opnd (L),
-                Expr_Value (Sinfo.Left_Opnd (L)) + R);
-             return L;
- 
-          --  (E - C1) + C2 = E - (C1 - C2)
- 
-          --  If the type is unsigned then only do the optimization if C1 >= C2,
-          --  to avoid creating a negative literal that can't be used with the
-          --  unsigned type.
- 
-          elsif Compile_Time_Known_Value (Sinfo.Right_Opnd (L))
-            and then (not Is_Unsigned_Type (Etype (Sinfo.Right_Opnd (L)))
-                       or else Expr_Value (Sinfo.Right_Opnd (L)) >= R)
-          then
-             Rewrite_Integer
-               (Sinfo.Right_Opnd (L),
-                Expr_Value (Sinfo.Right_Opnd (L)) - R);
-             return L;
-          end if;
-       end if;
- 
-       --  Not optimizable, do the addition
- 
-       return Make_Op_Add (Loc, Left_Opnd, Right_Opnd);
-    end Assoc_Add;
- 
-    --------------------
-    -- Assoc_Multiply --
-    --------------------
- 
-    function Assoc_Multiply
-      (Loc        : Source_Ptr;
-       Left_Opnd  : Node_Id;
-       Right_Opnd : Node_Id) return Node_Id
-    is
-       L : Node_Id;
-       R : Uint;
- 
-    begin
-       --  Case of right operand is a constant
- 
-       if Compile_Time_Known_Value (Right_Opnd) then
-          L := Left_Opnd;
-          R := Expr_Value (Right_Opnd);
- 
-       --  Case of left operand is a constant
- 
-       elsif Compile_Time_Known_Value (Left_Opnd) then
-          L := Right_Opnd;
-          R := Expr_Value (Left_Opnd);
- 
-       --  Neither operand is a constant, do the multiply with no optimization
- 
-       else
-          return Make_Op_Multiply (Loc, Left_Opnd, Right_Opnd);
-       end if;
- 
-       --  Case of left operand is an multiplication
- 
-       if Nkind (L) = N_Op_Multiply then
- 
-          --  (C1 * E) * C2 = (C1 * C2) + E
- 
-          if Compile_Time_Known_Value (Sinfo.Left_Opnd (L)) then
-             Rewrite_Integer
-               (Sinfo.Left_Opnd (L),
-                Expr_Value (Sinfo.Left_Opnd (L)) * R);
-             return L;
- 
-          --  (E * C1) * C2 = E * (C1 * C2)
- 
-          elsif Compile_Time_Known_Value (Sinfo.Right_Opnd (L)) then
-             Rewrite_Integer
-               (Sinfo.Right_Opnd (L),
-                Expr_Value (Sinfo.Right_Opnd (L)) * R);
-             return L;
-          end if;
-       end if;
- 
-       --  Not optimizable, do the multiplication
- 
-       return Make_Op_Multiply (Loc, Left_Opnd, Right_Opnd);
-    end Assoc_Multiply;
- 
-    --------------------
-    -- Assoc_Subtract --
-    --------------------
- 
-    function Assoc_Subtract
-      (Loc        : Source_Ptr;
-       Left_Opnd  : Node_Id;
-       Right_Opnd : Node_Id) return Node_Id
-    is
-       L : Node_Id;
-       R : Uint;
- 
-    begin
-       --  Case of right operand is a constant
- 
-       if Compile_Time_Known_Value (Right_Opnd) then
-          L := Left_Opnd;
-          R := Expr_Value (Right_Opnd);
- 
-       --  Right operand is a constant, do the subtract with no optimization
- 
-       else
-          return Make_Op_Subtract (Loc, Left_Opnd, Right_Opnd);
-       end if;
- 
-       --  Case of left operand is an addition
- 
-       if Nkind (L) = N_Op_Add then
- 
-          --  (C1 + E) - C2 = (C1 - C2) + E
- 
-          if Compile_Time_Known_Value (Sinfo.Left_Opnd (L)) then
-             Rewrite_Integer
-               (Sinfo.Left_Opnd (L),
-                Expr_Value (Sinfo.Left_Opnd (L)) - R);
-             return L;
- 
-          --  (E + C1) - C2 = E + (C1 - C2)
- 
-          elsif Compile_Time_Known_Value (Sinfo.Right_Opnd (L)) then
-             Rewrite_Integer
-               (Sinfo.Right_Opnd (L),
-                Expr_Value (Sinfo.Right_Opnd (L)) - R);
-             return L;
-          end if;
- 
-       --  Case of left operand is a subtraction
- 
-       elsif Nkind (L) = N_Op_Subtract then
- 
-          --  (C1 - E) - C2 = (C1 - C2) + E
- 
-          if Compile_Time_Known_Value (Sinfo.Left_Opnd (L)) then
-             Rewrite_Integer
-               (Sinfo.Left_Opnd (L),
-                Expr_Value (Sinfo.Left_Opnd (L)) + R);
-             return L;
- 
-          --  (E - C1) - C2 = E - (C1 + C2)
- 
-          elsif Compile_Time_Known_Value (Sinfo.Right_Opnd (L)) then
-             Rewrite_Integer
-               (Sinfo.Right_Opnd (L),
-                Expr_Value (Sinfo.Right_Opnd (L)) + R);
-             return L;
-          end if;
-       end if;
- 
-       --  Not optimizable, do the subtraction
- 
-       return Make_Op_Subtract (Loc, Left_Opnd, Right_Opnd);
-    end Assoc_Subtract;
- 
-    ----------------
-    -- Bits_To_SU --
-    ----------------
- 
-    function Bits_To_SU (N : Node_Id) return Node_Id is
-    begin
-       if Nkind (N) = N_Integer_Literal then
-          Set_Intval (N, (Intval (N) + (SSU - 1)) / SSU);
-       end if;
- 
-       return N;
-    end Bits_To_SU;
- 
-    --------------------
-    -- Compute_Length --
-    --------------------
- 
-    function Compute_Length (Lo : Node_Id; Hi : Node_Id) return Node_Id is
-       Loc    : constant Source_Ptr := Sloc (Lo);
-       Typ    : constant Entity_Id  := Etype (Lo);
-       Lo_Op  : Node_Id;
-       Hi_Op  : Node_Id;
-       Lo_Dim : Uint;
-       Hi_Dim : Uint;
- 
-    begin
-       --  If the bounds are First and Last attributes for the same dimension
-       --  and both have prefixes that denotes the same entity, then we create
-       --  and return a Length attribute. This may allow the back end to
-       --  generate better code in cases where it already has the length.
- 
-       if Nkind (Lo) = N_Attribute_Reference
-         and then Attribute_Name (Lo) = Name_First
-         and then Nkind (Hi) = N_Attribute_Reference
-         and then Attribute_Name (Hi) = Name_Last
-         and then Is_Entity_Name (Prefix (Lo))
-         and then Is_Entity_Name (Prefix (Hi))
-         and then Entity (Prefix (Lo)) = Entity (Prefix (Hi))
-       then
-          Lo_Dim := Uint_1;
-          Hi_Dim := Uint_1;
- 
-          if Present (First (Expressions (Lo))) then
-             Lo_Dim := Expr_Value (First (Expressions (Lo)));
-          end if;
- 
-          if Present (First (Expressions (Hi))) then
-             Hi_Dim := Expr_Value (First (Expressions (Hi)));
-          end if;
- 
-          if Lo_Dim = Hi_Dim then
-             return
-               Make_Attribute_Reference (Loc,
-                 Prefix         => New_Occurrence_Of
-                                     (Entity (Prefix (Lo)), Loc),
-                 Attribute_Name => Name_Length,
-                 Expressions    => New_List
-                                     (Make_Integer_Literal (Loc, Lo_Dim)));
-          end if;
-       end if;
- 
-       Lo_Op := New_Copy_Tree (Lo);
-       Hi_Op := New_Copy_Tree (Hi);
- 
-       --  If type is enumeration type, then use Pos attribute to convert
-       --  to integer type for which subtraction is a permitted operation.
- 
-       if Is_Enumeration_Type (Typ) then
-          Lo_Op :=
-            Make_Attribute_Reference (Loc,
-              Prefix         => New_Occurrence_Of (Typ, Loc),
-              Attribute_Name => Name_Pos,
-              Expressions    => New_List (Lo_Op));
- 
-          Hi_Op :=
-            Make_Attribute_Reference (Loc,
-              Prefix         => New_Occurrence_Of (Typ, Loc),
-              Attribute_Name => Name_Pos,
-              Expressions    => New_List (Hi_Op));
-       end if;
- 
-       return
-         Assoc_Add (Loc,
-           Left_Opnd =>
-             Assoc_Subtract (Loc,
-               Left_Opnd  => Hi_Op,
-               Right_Opnd => Lo_Op),
-           Right_Opnd => Make_Integer_Literal (Loc, 1));
-    end Compute_Length;
- 
-    ----------------------
-    -- Expr_From_SO_Ref --
-    ----------------------
- 
-    function Expr_From_SO_Ref
-      (Loc  : Source_Ptr;
-       D    : SO_Ref;
-       Comp : Entity_Id := Empty) return Node_Id
-    is
-       Ent : Entity_Id;
- 
-    begin
-       if Is_Dynamic_SO_Ref (D) then
-          Ent := Get_Dynamic_SO_Entity (D);
- 
-          if Is_Discrim_SO_Function (Ent) then
- 
-             --  If a component is passed in whose type matches the type of
-             --  the function formal, then select that component from the "V"
-             --  parameter rather than passing "V" directly.
- 
-             if Present (Comp)
-                and then Base_Type (Etype (Comp)) =
-                         Base_Type (Etype (First_Formal (Ent)))
-             then
-                return
-                  Make_Function_Call (Loc,
-                    Name                   => New_Occurrence_Of (Ent, Loc),
-                    Parameter_Associations => New_List (
-                      Make_Selected_Component (Loc,
-                        Prefix        => Make_Identifier (Loc, Vname),
-                        Selector_Name => New_Occurrence_Of (Comp, Loc))));
- 
-             else
-                return
-                  Make_Function_Call (Loc,
-                    Name                   => New_Occurrence_Of (Ent, Loc),
-                    Parameter_Associations => New_List (
-                      Make_Identifier (Loc, Vname)));
-             end if;
- 
-          else
-             return New_Occurrence_Of (Ent, Loc);
-          end if;
- 
-       else
-          return Make_Integer_Literal (Loc, D);
-       end if;
-    end Expr_From_SO_Ref;
- 
-    ---------------------
-    -- Get_Max_SU_Size --
-    ---------------------
- 
-    function Get_Max_SU_Size (E : Entity_Id) return Node_Id is
-       Loc  : constant Source_Ptr := Sloc (E);
-       Indx : Node_Id;
-       Ityp : Entity_Id;
-       Lo   : Node_Id;
-       Hi   : Node_Id;
-       S    : Uint;
-       Len  : Node_Id;
- 
-       type Val_Status_Type is (Const, Dynamic);
- 
-       type Val_Type (Status : Val_Status_Type := Const) is record
-          case Status is
-             when Const   => Val : Uint;
-             when Dynamic => Nod : Node_Id;
-          end case;
-       end record;
-       --  Shows the status of the value so far. Const means that the value is
-       --  constant, and Val is the current constant value. Dynamic means that
-       --  the value is dynamic, and in this case Nod is the Node_Id of the
-       --  expression to compute the value.
- 
-       Size : Val_Type;
-       --  Calculated value so far if Size.Status = Const,
-       --  or expression value so far if Size.Status = Dynamic.
- 
-       SU_Convert_Required : Boolean := False;
-       --  This is set to True if the final result must be converted from bits
-       --  to storage units (rounding up to a storage unit boundary).
- 
-       -----------------------
-       -- Local Subprograms --
-       -----------------------
- 
-       procedure Max_Discrim (N : in out Node_Id);
-       --  If the node N represents a discriminant, replace it by the maximum
-       --  value of the discriminant.
- 
-       procedure Min_Discrim (N : in out Node_Id);
-       --  If the node N represents a discriminant, replace it by the minimum
-       --  value of the discriminant.
- 
-       -----------------
-       -- Max_Discrim --
-       -----------------
- 
-       procedure Max_Discrim (N : in out Node_Id) is
-       begin
-          if Nkind (N) = N_Identifier
-            and then Ekind (Entity (N)) = E_Discriminant
-          then
-             N := Type_High_Bound (Etype (N));
-          end if;
-       end Max_Discrim;
- 
-       -----------------
-       -- Min_Discrim --
-       -----------------
- 
-       procedure Min_Discrim (N : in out Node_Id) is
-       begin
-          if Nkind (N) = N_Identifier
-            and then Ekind (Entity (N)) = E_Discriminant
-          then
-             N := Type_Low_Bound (Etype (N));
-          end if;
-       end Min_Discrim;
- 
-    --  Start of processing for Get_Max_SU_Size
- 
-    begin
-       pragma Assert (Size_Depends_On_Discriminant (E));
- 
-       --  Initialize status from component size
- 
-       if Known_Static_Component_Size (E) then
-          Size := (Const, Component_Size (E));
- 
-       else
-          Size := (Dynamic, Expr_From_SO_Ref (Loc, Component_Size (E)));
-       end if;
- 
-       --  Loop through indexes
- 
-       Indx := First_Index (E);
-       while Present (Indx) loop
-          Ityp := Etype (Indx);
-          Lo := Type_Low_Bound (Ityp);
-          Hi := Type_High_Bound (Ityp);
- 
-          Min_Discrim (Lo);
-          Max_Discrim (Hi);
- 
-          --  Value of the current subscript range is statically known
- 
-          if Compile_Time_Known_Value (Lo)
-               and then
-             Compile_Time_Known_Value (Hi)
-          then
-             S := Expr_Value (Hi) - Expr_Value (Lo) + 1;
- 
-             --  If known flat bound, entire size of array is zero
- 
-             if S <= 0 then
-                return Make_Integer_Literal (Loc, 0);
-             end if;
- 
-             --  Current value is constant, evolve value
- 
-             if Size.Status = Const then
-                Size.Val := Size.Val * S;
- 
-             --  Current value is dynamic
- 
-             else
-                --  An interesting little optimization, if we have a pending
-                --  conversion from bits to storage units, and the current
-                --  length is a multiple of the storage unit size, then we
-                --  can take the factor out here statically, avoiding some
-                --  extra dynamic computations at the end.
- 
-                if SU_Convert_Required and then S mod SSU = 0 then
-                   S := S / SSU;
-                   SU_Convert_Required := False;
-                end if;
- 
-                Size.Nod :=
-                  Assoc_Multiply (Loc,
-                    Left_Opnd  => Size.Nod,
-                    Right_Opnd =>
-                      Make_Integer_Literal (Loc, Intval => S));
-             end if;
- 
-          --  Value of the current subscript range is dynamic
- 
-          else
-             --  If the current size value is constant, then here is where we
-             --  make a transition to dynamic values, which are always stored
-             --  in storage units, However, we do not want to convert to SU's
-             --  too soon, consider the case of a packed array of single bits,
-             --  we want to do the SU conversion after computing the size in
-             --  this case.
- 
-             if Size.Status = Const then
- 
-                --  If the current value is a multiple of the storage unit,
-                --  then most certainly we can do the conversion now, simply
-                --  by dividing the current value by the storage unit value.
-                --  If this works, we set SU_Convert_Required to False.
- 
-                if Size.Val mod SSU = 0 then
- 
-                   Size :=
-                     (Dynamic, Make_Integer_Literal (Loc, Size.Val / SSU));
-                   SU_Convert_Required := False;
- 
-                --  Otherwise, we go ahead and convert the value in bits, and
-                --  set SU_Convert_Required to True to ensure that the final
-                --  value is indeed properly converted.
- 
-                else
-                   Size := (Dynamic, Make_Integer_Literal (Loc, Size.Val));
-                   SU_Convert_Required := True;
-                end if;
-             end if;
- 
-             --  Length is hi-lo+1
- 
-             Len := Compute_Length (Lo, Hi);
- 
-             --  Check possible range of Len
- 
-             declare
-                OK  : Boolean;
-                LLo : Uint;
-                LHi : Uint;
-                pragma Warnings (Off, LHi);
- 
-             begin
-                Set_Parent (Len, E);
-                Determine_Range (Len, OK, LLo, LHi);
- 
-                Len := Convert_To (Standard_Unsigned, Len);
- 
-                --  If we cannot verify that range cannot be super-flat, we need
-                --  a max with zero, since length must be non-negative.
- 
-                if not OK or else LLo < 0 then
-                   Len :=
-                     Make_Attribute_Reference (Loc,
-                       Prefix         =>
-                         New_Occurrence_Of (Standard_Unsigned, Loc),
-                       Attribute_Name => Name_Max,
-                       Expressions    => New_List (
-                         Make_Integer_Literal (Loc, 0),
-                         Len));
-                end if;
-             end;
-          end if;
- 
-          Next_Index (Indx);
-       end loop;
- 
-       --  Here after processing all bounds to set sizes. If the value is a
-       --  constant, then it is bits, so we convert to storage units.
- 
-       if Size.Status = Const then
-          return Bits_To_SU (Make_Integer_Literal (Loc, Size.Val));
- 
-       --  Case where the value is dynamic
- 
-       else
-          --  Do convert from bits to SU's if needed
- 
-          if SU_Convert_Required then
- 
-             --  The expression required is (Size.Nod + SU - 1) / SU
- 
-             Size.Nod :=
-               Make_Op_Divide (Loc,
-                 Left_Opnd =>
-                   Make_Op_Add (Loc,
-                     Left_Opnd  => Size.Nod,
-                     Right_Opnd => Make_Integer_Literal (Loc, SSU - 1)),
-                 Right_Opnd => Make_Integer_Literal (Loc, SSU));
-          end if;
- 
-          return Size.Nod;
-       end if;
-    end Get_Max_SU_Size;
- 
-    -----------------------
-    -- Layout_Array_Type --
-    -----------------------
- 
-    procedure Layout_Array_Type (E : Entity_Id) is
-       Loc  : constant Source_Ptr := Sloc (E);
-       Ctyp : constant Entity_Id  := Component_Type (E);
-       Indx : Node_Id;
-       Ityp : Entity_Id;
-       Lo   : Node_Id;
-       Hi   : Node_Id;
-       S    : Uint;
-       Len  : Node_Id;
- 
-       Insert_Typ : Entity_Id;
-       --  This is the type with which any generated constants or functions
-       --  will be associated (i.e. inserted into the freeze actions). This
-       --  is normally the type being laid out. The exception occurs when
-       --  we are laying out Itype's which are local to a record type, and
-       --  whose scope is this record type. Such types do not have freeze
-       --  nodes (because we have no place to put them).
- 
-       ------------------------------------
-       -- How An Array Type is Laid Out --
-       ------------------------------------
- 
-       --  Here is what goes on. We need to multiply the component size of the
-       --  array (which has already been set) by the length of each of the
-       --  indexes. If all these values are known at compile time, then the
-       --  resulting size of the array is the appropriate constant value.
- 
-       --  If the component size or at least one bound is dynamic (but no
-       --  discriminants are present), then the size will be computed as an
-       --  expression that calculates the proper size.
- 
-       --  If there is at least one discriminant bound, then the size is also
-       --  computed as an expression, but this expression contains discriminant
-       --  values which are obtained by selecting from a function parameter, and
-       --  the size is given by a function that is passed the variant record in
-       --  question, and whose body is the expression.
- 
-       type Val_Status_Type is (Const, Dynamic, Discrim);
- 
-       type Val_Type (Status : Val_Status_Type := Const) is record
-          case Status is
-             when Const =>
-                Val : Uint;
-                --  Calculated value so far if Val_Status = Const
- 
-             when Discrim
-                | Dynamic
-             =>
-                Nod : Node_Id;
-                --  Expression value so far if Val_Status /= Const
-          end case;
-       end record;
-       --  Records the value or expression computed so far. Const means that
-       --  the value is constant, and Val is the current constant value.
-       --  Dynamic means that the value is dynamic, and in this case Nod is
-       --  the Node_Id of the expression to compute the value, and Discrim
-       --  means that at least one bound is a discriminant, in which case Nod
-       --  is the expression so far (which will be the body of the function).
- 
-       Size : Val_Type;
-       --  Value of size computed so far. See comments above
- 
-       Vtyp : Entity_Id := Empty;
-       --  Variant record type for the formal parameter of the discriminant
-       --  function V if Status = Discrim.
- 
-       SU_Convert_Required : Boolean := False;
-       --  This is set to True if the final result must be converted from
-       --  bits to storage units (rounding up to a storage unit boundary).
- 
-       Storage_Divisor : Uint := UI_From_Int (SSU);
-       --  This is the amount that a nonstatic computed size will be divided
-       --  by to convert it from bits to storage units. This is normally
-       --  equal to SSU, but can be reduced in the case of packed components
-       --  that fit evenly into a storage unit.
- 
-       Make_Size_Function : Boolean := False;
-       --  Indicates whether to request that SO_Ref_From_Expr should
-       --  encapsulate the array size expression in a function.
- 
-       procedure Discrimify (N : in out Node_Id);
-       --  If N represents a discriminant, then the Size.Status is set to
-       --  Discrim, and Vtyp is set. The parameter N is replaced with the
-       --  proper expression to extract the discriminant value from V.
- 
-       ----------------
-       -- Discrimify --
-       ----------------
- 
-       procedure Discrimify (N : in out Node_Id) is
-          Decl : Node_Id;
-          Typ  : Entity_Id;
- 
-       begin
-          if Nkind (N) = N_Identifier
-            and then Ekind (Entity (N)) = E_Discriminant
-          then
-             Set_Size_Depends_On_Discriminant (E);
- 
-             if Size.Status /= Discrim then
-                Decl := Parent (Parent (Entity (N)));
-                Size := (Discrim, Size.Nod);
-                Vtyp := Defining_Identifier (Decl);
-             end if;
- 
-             Typ := Etype (N);
- 
-             N :=
-               Make_Selected_Component (Loc,
-                 Prefix        => Make_Identifier (Loc, Vname),
-                 Selector_Name => New_Occurrence_Of (Entity (N), Loc));
- 
-             --  Set the Etype attributes of the selected name and its prefix.
-             --  Analyze_And_Resolve can't be called here because the Vname
-             --  entity denoted by the prefix will not yet exist (it's created
-             --  by SO_Ref_From_Expr, called at the end of Layout_Array_Type).
- 
-             Set_Etype (Prefix (N), Vtyp);
-             Set_Etype (N, Typ);
-          end if;
-       end Discrimify;
- 
-    --  Start of processing for Layout_Array_Type
- 
-    begin
-       --  Default alignment is component alignment
- 
-       if Unknown_Alignment (E) then
-          Set_Alignment (E, Alignment (Ctyp));
-       end if;
- 
-       --  Calculate proper type for insertions
- 
-       if Is_Record_Type (Underlying_Type (Scope (E))) then
-          Insert_Typ := Underlying_Type (Scope (E));
-       else
-          Insert_Typ := E;
-       end if;
- 
-       --  If the component type is a generic formal type then there's no point
-       --  in determining a size for the array type.
- 
-       if Is_Generic_Type (Ctyp) then
-          return;
-       end if;
- 
-       --  Deal with component size if base type
- 
-       if Ekind (E) = E_Array_Type then
- 
-          --  Cannot do anything if Esize of component type unknown
- 
-          if Unknown_Esize (Ctyp) then
-             return;
-          end if;
- 
-          --  Set component size if not set already
- 
-          if Unknown_Component_Size (E) then
-             Set_Component_Size (E, Esize (Ctyp));
-          end if;
-       end if;
- 
-       --  (RM 13.3 (48)) says that the size of an unconstrained array
-       --  is implementation defined. We choose to leave it as Unknown
-       --  here, and the actual behavior is determined by the back end.
- 
-       if not Is_Constrained (E) then
-          return;
-       end if;
- 
-       --  Initialize status from component size
- 
-       if Known_Static_Component_Size (E) then
-          Size := (Const, Component_Size (E));
- 
-       else
-          Size := (Dynamic, Expr_From_SO_Ref (Loc, Component_Size (E)));
-       end if;
- 
-       --  Loop to process array indexes
- 
-       Indx := First_Index (E);
-       while Present (Indx) loop
-          Ityp := Etype (Indx);
- 
-          --  If an index of the array is a generic formal type then there is
-          --  no point in determining a size for the array type.
- 
-          if Is_Generic_Type (Ityp) then
-             return;
-          end if;
- 
-          Lo := Type_Low_Bound (Ityp);
-          Hi := Type_High_Bound (Ityp);
- 
-          --  Value of the current subscript range is statically known
- 
-          if Compile_Time_Known_Value (Lo)
-               and then
-             Compile_Time_Known_Value (Hi)
-          then
-             S := Expr_Value (Hi) - Expr_Value (Lo) + 1;
- 
-             --  If known flat bound, entire size of array is zero
- 
-             if S <= 0 then
-                Set_Esize (E, Uint_0);
-                Set_RM_Size (E, Uint_0);
-                return;
-             end if;
- 
-             --  If constant, evolve value
- 
-             if Size.Status = Const then
-                Size.Val := Size.Val * S;
- 
-             --  Current value is dynamic
- 
-             else
-                --  An interesting little optimization, if we have a pending
-                --  conversion from bits to storage units, and the current
-                --  length is a multiple of the storage unit size, then we
-                --  can take the factor out here statically, avoiding some
-                --  extra dynamic computations at the end.
- 
-                if SU_Convert_Required and then S mod SSU = 0 then
-                   S := S / SSU;
-                   SU_Convert_Required := False;
-                end if;
- 
-                --  Now go ahead and evolve the expression
- 
-                Size.Nod :=
-                  Assoc_Multiply (Loc,
-                    Left_Opnd  => Size.Nod,
-                    Right_Opnd =>
-                      Make_Integer_Literal (Loc, Intval => S));
-             end if;
- 
-          --  Value of the current subscript range is dynamic
- 
-          else
-             --  If the current size value is constant, then here is where we
-             --  make a transition to dynamic values, which are always stored
-             --  in storage units, However, we do not want to convert to SU's
-             --  too soon, consider the case of a packed array of single bits,
-             --  we want to do the SU conversion after computing the size in
-             --  this case.
- 
-             if Size.Status = Const then
- 
-                --  If the current value is a multiple of the storage unit,
-                --  then most certainly we can do the conversion now, simply
-                --  by dividing the current value by the storage unit value.
-                --  If this works, we set SU_Convert_Required to False.
- 
-                if Size.Val mod SSU = 0 then
-                   Size :=
-                     (Dynamic, Make_Integer_Literal (Loc, Size.Val / SSU));
-                   SU_Convert_Required := False;
- 
-                --  If the current value is a factor of the storage unit, then
-                --  we can use a value of one for the size and reduce the
-                --  strength of the later division.
- 
-                elsif SSU mod Size.Val = 0 then
-                   Storage_Divisor := SSU / Size.Val;
-                   Size := (Dynamic, Make_Integer_Literal (Loc, Uint_1));
-                   SU_Convert_Required := True;
- 
-                --  Otherwise, we go ahead and convert the value in bits, and
-                --  set SU_Convert_Required to True to ensure that the final
-                --  value is indeed properly converted.
- 
-                else
-                   Size := (Dynamic, Make_Integer_Literal (Loc, Size.Val));
-                   SU_Convert_Required := True;
-                end if;
-             end if;
- 
-             Discrimify (Lo);
-             Discrimify (Hi);
- 
-             --  Length is hi-lo+1
- 
-             Len := Compute_Length (Lo, Hi);
- 
-             --  If Len isn't a Length attribute, then its range needs to be
-             --  checked a possible Max with zero needs to be computed.
- 
-             if Nkind (Len) /= N_Attribute_Reference
-               or else Attribute_Name (Len) /= Name_Length
-             then
-                declare
-                   OK  : Boolean;
-                   LLo : Uint;
-                   LHi : Uint;
- 
-                begin
-                   --  Check possible range of Len
- 
-                   Set_Parent (Len, E);
-                   Determine_Range (Len, OK, LLo, LHi);
- 
-                   Len := Convert_To (Standard_Unsigned, Len);
- 
-                   --  If range definitely flat or superflat, result size is 0
- 
-                   if OK and then LHi <= 0 then
-                      Set_Esize (E, Uint_0);
-                      Set_RM_Size (E, Uint_0);
-                      return;
-                   end if;
- 
-                   --  If we cannot verify that range cannot be super-flat, we
-                   --  need a max with zero, since length cannot be negative.
- 
-                   if not OK or else LLo < 0 then
-                      Len :=
-                        Make_Attribute_Reference (Loc,
-                          Prefix         =>
-                            New_Occurrence_Of (Standard_Unsigned, Loc),
-                          Attribute_Name => Name_Max,
-                          Expressions    => New_List (
-                            Make_Integer_Literal (Loc, 0),
-                            Len));
-                   end if;
-                end;
-             end if;
- 
-             --  At this stage, Len has the expression for the length
- 
-             Size.Nod :=
-               Assoc_Multiply (Loc,
-                 Left_Opnd  => Size.Nod,
-                 Right_Opnd => Len);
-          end if;
- 
-          Next_Index (Indx);
-       end loop;
- 
-       --  Here after processing all bounds to set sizes. If the value is a
-       --  constant, then it is bits, and the only thing we need to do is to
-       --  check against explicit given size and do alignment adjust.
- 
-       if Size.Status = Const then
-          Set_And_Check_Static_Size (E, Size.Val, Size.Val);
-          Adjust_Esize_Alignment (E);
- 
-       --  Case where the value is dynamic
- 
-       else
-          --  Do convert from bits to SU's if needed
- 
-          if SU_Convert_Required then
- 
-             --  The expression required is:
-             --    (Size.Nod + Storage_Divisor - 1) / Storage_Divisor
- 
-             Size.Nod :=
-               Make_Op_Divide (Loc,
-                 Left_Opnd =>
-                   Make_Op_Add (Loc,
-                     Left_Opnd  => Size.Nod,
-                     Right_Opnd => Make_Integer_Literal
-                                     (Loc, Storage_Divisor - 1)),
-                 Right_Opnd => Make_Integer_Literal (Loc, Storage_Divisor));
-          end if;
- 
-          --  If the array entity is not declared at the library level and its
-          --  not nested within a subprogram that is marked for inlining, then
-          --  we request that the size expression be encapsulated in a function.
-          --  Since this expression is not needed in most cases, we prefer not
-          --  to incur the overhead of the computation on calls to the enclosing
-          --  subprogram except for subprograms that require the size.
- 
-          if not Is_Library_Level_Entity (E) then
-             Make_Size_Function := True;
- 
-             declare
-                Parent_Subp : Entity_Id := Enclosing_Subprogram (E);
- 
-             begin
-                while Present (Parent_Subp) loop
-                   if Is_Inlined (Parent_Subp) then
-                      Make_Size_Function := False;
-                      exit;
-                   end if;
- 
-                   Parent_Subp := Enclosing_Subprogram (Parent_Subp);
-                end loop;
-             end;
-          end if;
- 
-          --  Now set the dynamic size (the Value_Size is always the same as the
-          --  Object_Size for arrays whose length is dynamic).
- 
-          --  ??? If Size.Status = Dynamic, Vtyp will not have been set.
-          --  The added initialization sets it to Empty now, but is this
-          --  correct?
- 
-          Set_Esize
-            (E,
-             SO_Ref_From_Expr
-               (Size.Nod, Insert_Typ, Vtyp, Make_Func => Make_Size_Function));
-          Set_RM_Size (E, Esize (E));
-       end if;
-    end Layout_Array_Type;
- 
     ------------------------------------------
     -- Compute_Size_Depends_On_Discriminant --
     ------------------------------------------
--- 170,175 ----
*************** package body Layout is
*** 1352,2407 ****
     -------------------
  
     procedure Layout_Object (E : Entity_Id) is
!       T : constant Entity_Id := Etype (E);
! 
     begin
!       --  Nothing to do if backend does layout
! 
!       if not Frontend_Layout_On_Target then
!          return;
!       end if;
! 
!       --  Set size if not set for object and known for type. Use the RM_Size if
!       --  that is known for the type and Esize is not.
! 
!       if Unknown_Esize (E) then
!          if Known_Esize (T) then
!             Set_Esize (E, Esize (T));
! 
!          elsif Known_RM_Size (T) then
!             Set_Esize (E, RM_Size (T));
!          end if;
!       end if;
! 
!       --  Set alignment from type if unknown and type alignment known
! 
!       if Unknown_Alignment (E) and then Known_Alignment (T) then
!          Set_Alignment (E, Alignment (T));
!       end if;
! 
!       --  Make sure size and alignment are consistent
! 
!       Adjust_Esize_Alignment (E);
! 
!       --  Final adjustment, if we don't know the alignment, and the Esize was
!       --  not set by an explicit Object_Size attribute clause, then we reset
!       --  the Esize to unknown, since we really don't know it.
  
!       if Unknown_Alignment (E) and then not Has_Size_Clause (E) then
!          Set_Esize (E, Uint_0);
!       end if;
     end Layout_Object;
  
-    ------------------------
-    -- Layout_Record_Type --
-    ------------------------
- 
-    procedure Layout_Record_Type (E : Entity_Id) is
-       Loc  : constant Source_Ptr := Sloc (E);
-       Decl : Node_Id;
- 
-       Comp : Entity_Id;
-       --  Current component being laid out
- 
-       Prev_Comp : Entity_Id;
-       --  Previous laid out component
- 
-       procedure Get_Next_Component_Location
-         (Prev_Comp  : Entity_Id;
-          Align      : Uint;
-          New_Npos   : out SO_Ref;
-          New_Fbit   : out SO_Ref;
-          New_NPMax  : out SO_Ref;
-          Force_SU   : Boolean);
-       --  Given the previous component in Prev_Comp, which is already laid
-       --  out, and the alignment of the following component, lays out the
-       --  following component, and returns its starting position in New_Npos
-       --  (Normalized_Position value), New_Fbit (Normalized_First_Bit value),
-       --  and New_NPMax (Normalized_Position_Max value). If Prev_Comp is empty
-       --  (no previous component is present), then New_Npos, New_Fbit and
-       --  New_NPMax are all set to zero on return. This procedure is also
-       --  used to compute the size of a record or variant by giving it the
-       --  last component, and the record alignment. Force_SU is used to force
-       --  the new component location to be aligned on a storage unit boundary,
-       --  even in a packed record, False means that the new position does not
-       --  need to be bumped to a storage unit boundary, True means a storage
-       --  unit boundary is always required.
- 
-       procedure Layout_Component (Comp : Entity_Id; Prev_Comp : Entity_Id);
-       --  Lays out component Comp, given Prev_Comp, the previously laid-out
-       --  component (Prev_Comp = Empty if no components laid out yet). The
-       --  alignment of the record itself is also updated if needed. Both
-       --  Comp and Prev_Comp can be either components or discriminants.
- 
-       procedure Layout_Components
-         (From   : Entity_Id;
-          To     : Entity_Id;
-          Esiz   : out SO_Ref;
-          RM_Siz : out SO_Ref);
-       --  This procedure lays out the components of the given component list
-       --  which contains the components starting with From and ending with To.
-       --  The Next_Entity chain is used to traverse the components. On entry,
-       --  Prev_Comp is set to the component preceding the list, so that the
-       --  list is laid out after this component. Prev_Comp is set to Empty if
-       --  the component list is to be laid out starting at the start of the
-       --  record. On return, the components are all laid out, and Prev_Comp is
-       --  set to the last laid out component. On return, Esiz is set to the
-       --  resulting Object_Size value, which is the length of the record up
-       --  to and including the last laid out entity. For Esiz, the value is
-       --  adjusted to match the alignment of the record. RM_Siz is similarly
-       --  set to the resulting Value_Size value, which is the same length, but
-       --  not adjusted to meet the alignment. Note that in the case of variant
-       --  records, Esiz represents the maximum size.
- 
-       procedure Layout_Non_Variant_Record;
-       --  Procedure called to lay out a non-variant record type or subtype
- 
-       procedure Layout_Variant_Record;
-       --  Procedure called to lay out a variant record type. Decl is set to the
-       --  full type declaration for the variant record.
- 
-       ---------------------------------
-       -- Get_Next_Component_Location --
-       ---------------------------------
- 
-       procedure Get_Next_Component_Location
-         (Prev_Comp  : Entity_Id;
-          Align      : Uint;
-          New_Npos   : out SO_Ref;
-          New_Fbit   : out SO_Ref;
-          New_NPMax  : out SO_Ref;
-          Force_SU   : Boolean)
-       is
-       begin
-          --  No previous component, return zero position
- 
-          if No (Prev_Comp) then
-             New_Npos  := Uint_0;
-             New_Fbit  := Uint_0;
-             New_NPMax := Uint_0;
-             return;
-          end if;
- 
-          --  Here we have a previous component
- 
-          declare
-             Loc       : constant Source_Ptr := Sloc (Prev_Comp);
- 
-             Old_Npos  : constant SO_Ref := Normalized_Position     (Prev_Comp);
-             Old_Fbit  : constant SO_Ref := Normalized_First_Bit    (Prev_Comp);
-             Old_NPMax : constant SO_Ref := Normalized_Position_Max (Prev_Comp);
-             Old_Esiz  : constant SO_Ref := Esize                   (Prev_Comp);
- 
-             Old_Maxsz : Node_Id;
-             --  Expression representing maximum size of previous component
- 
-          begin
-             --  Case where previous field had a dynamic size
- 
-             if Is_Dynamic_SO_Ref (Esize (Prev_Comp)) then
- 
-                --  If the previous field had a dynamic length, then it is
-                --  required to occupy an integral number of storage units,
-                --  and start on a storage unit boundary. This means that
-                --  the Normalized_First_Bit value is zero in the previous
-                --  component, and the new value is also set to zero.
- 
-                New_Fbit := Uint_0;
- 
-                --  In this case, the new position is given by an expression
-                --  that is the sum of old normalized position and old size.
- 
-                New_Npos :=
-                  SO_Ref_From_Expr
-                    (Assoc_Add (Loc,
-                       Left_Opnd  =>
-                         Expr_From_SO_Ref (Loc, Old_Npos),
-                       Right_Opnd =>
-                         Expr_From_SO_Ref (Loc, Old_Esiz, Prev_Comp)),
-                     Ins_Type => E,
-                     Vtype    => E);
- 
-                --  Get maximum size of previous component
- 
-                if Size_Depends_On_Discriminant (Etype (Prev_Comp)) then
-                   Old_Maxsz := Get_Max_SU_Size (Etype (Prev_Comp));
-                else
-                   Old_Maxsz := Expr_From_SO_Ref (Loc, Old_Esiz, Prev_Comp);
-                end if;
- 
-                --  Now we can compute the new max position. If the max size
-                --  is static and the old position is static, then we can
-                --  compute the new position statically.
- 
-                if Nkind (Old_Maxsz) = N_Integer_Literal
-                  and then Known_Static_Normalized_Position_Max (Prev_Comp)
-                then
-                   New_NPMax := Old_NPMax + Intval (Old_Maxsz);
- 
-                --  Otherwise new max position is dynamic
- 
-                else
-                   New_NPMax :=
-                     SO_Ref_From_Expr
-                       (Assoc_Add (Loc,
-                          Left_Opnd  => Expr_From_SO_Ref (Loc, Old_NPMax),
-                          Right_Opnd => Old_Maxsz),
-                        Ins_Type => E,
-                        Vtype    => E);
-                end if;
- 
-             --  Previous field has known static Esize
- 
-             else
-                New_Fbit := Old_Fbit + Old_Esiz;
- 
-                --  Bump New_Fbit to storage unit boundary if required
- 
-                if New_Fbit /= 0 and then Force_SU then
-                   New_Fbit := (New_Fbit + SSU - 1) / SSU * SSU;
-                end if;
- 
-                --  If old normalized position is static, we can go ahead and
-                --  compute the new normalized position directly.
- 
-                if Known_Static_Normalized_Position (Prev_Comp) then
-                   New_Npos := Old_Npos;
- 
-                   if New_Fbit >= SSU then
-                      New_Npos := New_Npos + New_Fbit / SSU;
-                      New_Fbit := New_Fbit mod SSU;
-                   end if;
- 
-                   --  Bump alignment if stricter than prev
- 
-                   if Align > Alignment (Etype (Prev_Comp)) then
-                      New_Npos := (New_Npos + Align - 1) / Align * Align;
-                   end if;
- 
-                   --  The max position is always equal to the position if
-                   --  the latter is static, since arrays depending on the
-                   --  values of discriminants never have static sizes.
- 
-                   New_NPMax := New_Npos;
-                   return;
- 
-                --  Case of old normalized position is dynamic
- 
-                else
-                   --  If new bit position is within the current storage unit,
-                   --  we can just copy the old position as the result position
-                   --  (we have already set the new first bit value).
- 
-                   if New_Fbit < SSU then
-                      New_Npos  := Old_Npos;
-                      New_NPMax := Old_NPMax;
- 
-                   --  If new bit position is past the current storage unit, we
-                   --  need to generate a new dynamic value for the position
-                   --  ??? need to deal with alignment
- 
-                   else
-                      New_Npos :=
-                        SO_Ref_From_Expr
-                          (Assoc_Add (Loc,
-                             Left_Opnd  => Expr_From_SO_Ref (Loc, Old_Npos),
-                             Right_Opnd =>
-                               Make_Integer_Literal (Loc,
-                                 Intval => New_Fbit / SSU)),
-                           Ins_Type => E,
-                           Vtype    => E);
- 
-                      New_NPMax :=
-                        SO_Ref_From_Expr
-                          (Assoc_Add (Loc,
-                             Left_Opnd  => Expr_From_SO_Ref (Loc, Old_NPMax),
-                             Right_Opnd =>
-                               Make_Integer_Literal (Loc,
-                                 Intval => New_Fbit / SSU)),
-                             Ins_Type => E,
-                             Vtype    => E);
-                      New_Fbit := New_Fbit mod SSU;
-                   end if;
-                end if;
-             end if;
-          end;
-       end Get_Next_Component_Location;
- 
-       ----------------------
-       -- Layout_Component --
-       ----------------------
- 
-       procedure Layout_Component (Comp : Entity_Id; Prev_Comp : Entity_Id) is
-          Ctyp  : constant Entity_Id := Etype (Comp);
-          ORC   : constant Entity_Id := Original_Record_Component (Comp);
-          Npos  : SO_Ref;
-          Fbit  : SO_Ref;
-          NPMax : SO_Ref;
-          Forc  : Boolean;
- 
-       begin
-          --  Increase alignment of record if necessary. Note that we do not
-          --  do this for packed records, which have an alignment of one by
-          --  default, or for records for which an explicit alignment was
-          --  specified with an alignment clause.
- 
-          if not Is_Packed (E)
-            and then not Has_Alignment_Clause (E)
-            and then Alignment (Ctyp) > Alignment (E)
-          then
-             Set_Alignment (E, Alignment (Ctyp));
-          end if;
- 
-          --  If original component set, then use same layout
- 
-          if Present (ORC) and then ORC /= Comp then
-             Set_Normalized_Position     (Comp, Normalized_Position     (ORC));
-             Set_Normalized_First_Bit    (Comp, Normalized_First_Bit    (ORC));
-             Set_Normalized_Position_Max (Comp, Normalized_Position_Max (ORC));
-             Set_Component_Bit_Offset    (Comp, Component_Bit_Offset    (ORC));
-             Set_Esize                   (Comp, Esize                   (ORC));
-             return;
-          end if;
- 
-          --  Parent field is always at start of record, this will overlap
-          --  the actual fields that are part of the parent, and that's fine
- 
-          if Chars (Comp) = Name_uParent then
-             Set_Normalized_Position     (Comp, Uint_0);
-             Set_Normalized_First_Bit    (Comp, Uint_0);
-             Set_Normalized_Position_Max (Comp, Uint_0);
-             Set_Component_Bit_Offset    (Comp, Uint_0);
-             Set_Esize                   (Comp, Esize (Ctyp));
-             return;
-          end if;
- 
-          --  Check case of type of component has a scope of the record we are
-          --  laying out. When this happens, the type in question is an Itype
-          --  that has not yet been laid out (that's because such types do not
-          --  get frozen in the normal manner, because there is no place for
-          --  the freeze nodes).
- 
-          if Scope (Ctyp) = E then
-             Layout_Type (Ctyp);
-          end if;
- 
-          --  If component already laid out, then we are done
- 
-          if Known_Normalized_Position (Comp) then
-             return;
-          end if;
- 
-          --  Set size of component from type. We use the Esize except in a
-          --  packed record, where we use the RM_Size (since that is what the
-          --  RM_Size value, as distinct from the Object_Size is useful for).
- 
-          if Is_Packed (E) then
-             Set_Esize (Comp, RM_Size (Ctyp));
-          else
-             Set_Esize (Comp, Esize (Ctyp));
-          end if;
- 
-          --  Compute the component position from the previous one. See if
-          --  current component requires being on a storage unit boundary.
- 
-          --  If record is not packed, we always go to a storage unit boundary
- 
-          if not Is_Packed (E) then
-             Forc := True;
- 
-          --  Packed cases
- 
-          else
-             --  Elementary types do not need SU boundary in packed record
- 
-             if Is_Elementary_Type (Ctyp) then
-                Forc := False;
- 
-             --  Packed array types with a modular packed array type do not
-             --  force a storage unit boundary (since the code generation
-             --  treats these as equivalent to the underlying modular type),
- 
-             elsif Is_Array_Type (Ctyp)
-               and then Is_Bit_Packed_Array (Ctyp)
-               and then Is_Modular_Integer_Type (Packed_Array_Impl_Type (Ctyp))
-             then
-                Forc := False;
- 
-             --  Record types with known length less than or equal to the length
-             --  of long long integer can also be unaligned, since they can be
-             --  treated as scalars.
- 
-             elsif Is_Record_Type (Ctyp)
-               and then not Is_Dynamic_SO_Ref (Esize (Ctyp))
-               and then Esize (Ctyp) <= Esize (Standard_Long_Long_Integer)
-             then
-                Forc := False;
- 
-             --  All other cases force a storage unit boundary, even when packed
- 
-             else
-                Forc := True;
-             end if;
-          end if;
- 
-          --  Now get the next component location
- 
-          Get_Next_Component_Location
-            (Prev_Comp, Alignment (Ctyp), Npos, Fbit, NPMax, Forc);
-          Set_Normalized_Position     (Comp, Npos);
-          Set_Normalized_First_Bit    (Comp, Fbit);
-          Set_Normalized_Position_Max (Comp, NPMax);
- 
-          --  Set Component_Bit_Offset in the static case
- 
-          if Known_Static_Normalized_Position (Comp)
-            and then Known_Normalized_First_Bit (Comp)
-          then
-             Set_Component_Bit_Offset (Comp, SSU * Npos + Fbit);
-          end if;
-       end Layout_Component;
- 
-       -----------------------
-       -- Layout_Components --
-       -----------------------
- 
-       procedure Layout_Components
-         (From   : Entity_Id;
-          To     : Entity_Id;
-          Esiz   : out SO_Ref;
-          RM_Siz : out SO_Ref)
-       is
-          End_Npos  : SO_Ref;
-          End_Fbit  : SO_Ref;
-          End_NPMax : SO_Ref;
- 
-       begin
-          --  Only lay out components if there are some to lay out
- 
-          if Present (From) then
- 
-             --  Lay out components with no component clauses
- 
-             Comp := From;
-             loop
-                if Ekind (Comp) = E_Component
-                  or else Ekind (Comp) = E_Discriminant
-                then
-                   --  The compatibility of component clauses with composite
-                   --  types isn't checked in Sem_Ch13, so we check it here.
- 
-                   if Present (Component_Clause (Comp)) then
-                      if Is_Composite_Type (Etype (Comp))
-                        and then Esize (Comp) < RM_Size (Etype (Comp))
-                      then
-                         Error_Msg_Uint_1 := RM_Size (Etype (Comp));
-                         Error_Msg_NE
-                           ("size for & too small, minimum allowed is ^",
-                            Component_Clause (Comp),
-                            Comp);
-                      end if;
- 
-                   else
-                      Layout_Component (Comp, Prev_Comp);
-                      Prev_Comp := Comp;
-                   end if;
-                end if;
- 
-                exit when Comp = To;
-                Next_Entity (Comp);
-             end loop;
-          end if;
- 
-          --  Set size fields, both are zero if no components
- 
-          if No (Prev_Comp) then
-             Esiz := Uint_0;
-             RM_Siz := Uint_0;
- 
-             --  If record subtype with non-static discriminants, then we don't
-             --  know which variant will be the one which gets chosen. We don't
-             --  just want to set the maximum size from the base, because the
-             --  size should depend on the particular variant.
- 
-             --  What we do is to use the RM_Size of the base type, which has
-             --  the necessary conditional computation of the size, using the
-             --  size information for the particular variant chosen. Records
-             --  with default discriminants for example have an Esize that is
-             --  set to the maximum of all variants, but that's not what we
-             --  want for a constrained subtype.
- 
-          elsif Ekind (E) = E_Record_Subtype
-            and then not Has_Static_Discriminants (E)
-          then
-             declare
-                BT : constant Node_Id := Base_Type (E);
-             begin
-                Esiz   := RM_Size (BT);
-                RM_Siz := RM_Size (BT);
-                Set_Alignment (E, Alignment (BT));
-             end;
- 
-          else
-             --  First the object size, for which we align past the last field
-             --  to the alignment of the record (the object size is required to
-             --  be a multiple of the alignment).
- 
-             Get_Next_Component_Location
-               (Prev_Comp,
-                Alignment (E),
-                End_Npos,
-                End_Fbit,
-                End_NPMax,
-                Force_SU => True);
- 
-             --  If the resulting normalized position is a dynamic reference,
-             --  then the size is dynamic, and is stored in storage units. In
-             --  this case, we set the RM_Size to the same value, it is simply
-             --  not worth distinguishing Esize and RM_Size values in the
-             --  dynamic case, since the RM has nothing to say about them.
- 
-             --  Note that a size cannot have been given in this case, since
-             --  size specifications cannot be given for variable length types.
- 
-             declare
-                Align : constant Uint := Alignment (E);
- 
-             begin
-                if Is_Dynamic_SO_Ref (End_Npos) then
-                   RM_Siz := End_Npos;
- 
-                   --  Set the Object_Size allowing for the alignment. In the
-                   --  dynamic case, we must do the actual runtime computation.
-                   --  We can skip this in the non-packed record case if the
-                   --  last component has a smaller alignment than the overall
-                   --  record alignment.
- 
-                   if Is_Dynamic_SO_Ref (End_NPMax) then
-                      Esiz := End_NPMax;
- 
-                      if Is_Packed (E)
-                        or else Alignment (Etype (Prev_Comp)) < Align
-                      then
-                         --  The expression we build is:
-                         --    (expr + align - 1) / align * align
- 
-                         Esiz :=
-                           SO_Ref_From_Expr
-                             (Expr =>
-                                Make_Op_Multiply (Loc,
-                                  Left_Opnd =>
-                                    Make_Op_Divide (Loc,
-                                      Left_Opnd =>
-                                        Make_Op_Add (Loc,
-                                          Left_Opnd =>
-                                            Expr_From_SO_Ref (Loc, Esiz),
-                                          Right_Opnd =>
-                                            Make_Integer_Literal (Loc,
-                                              Intval => Align - 1)),
-                                      Right_Opnd =>
-                                        Make_Integer_Literal (Loc, Align)),
-                                  Right_Opnd =>
-                                    Make_Integer_Literal (Loc, Align)),
-                             Ins_Type => E,
-                             Vtype    => E);
-                      end if;
- 
-                   --  Here Esiz is static, so we can adjust the alignment
-                   --  directly go give the required aligned value.
- 
-                   else
-                      Esiz := (End_NPMax + Align - 1) / Align * Align * SSU;
-                   end if;
- 
-                --  Case where computed size is static
- 
-                else
-                   --  The ending size was computed in Npos in storage units,
-                   --  but the actual size is stored in bits, so adjust
-                   --  accordingly. We also adjust the size to match the
-                   --  alignment here.
- 
-                   Esiz := (End_NPMax + Align - 1) / Align * Align * SSU;
- 
-                   --  Compute the resulting Value_Size (RM_Size). For this
-                   --  purpose we do not force alignment of the record or
-                   --  storage size alignment of the result.
- 
-                   Get_Next_Component_Location
-                     (Prev_Comp,
-                      Uint_0,
-                      End_Npos,
-                      End_Fbit,
-                      End_NPMax,
-                      Force_SU => False);
- 
-                   RM_Siz := End_Npos * SSU + End_Fbit;
-                   Set_And_Check_Static_Size (E, Esiz, RM_Siz);
-                end if;
-             end;
-          end if;
-       end Layout_Components;
- 
-       -------------------------------
-       -- Layout_Non_Variant_Record --
-       -------------------------------
- 
-       procedure Layout_Non_Variant_Record is
-          Esiz   : SO_Ref;
-          RM_Siz : SO_Ref;
-       begin
-          Layout_Components (First_Entity (E), Last_Entity (E), Esiz, RM_Siz);
-          Set_Esize   (E, Esiz);
-          Set_RM_Size (E, RM_Siz);
-       end Layout_Non_Variant_Record;
- 
-       ---------------------------
-       -- Layout_Variant_Record --
-       ---------------------------
- 
-       procedure Layout_Variant_Record is
-          Tdef        : constant Node_Id := Type_Definition (Decl);
-          First_Discr : Entity_Id;
-          Last_Discr  : Entity_Id;
-          Esiz        : SO_Ref;
- 
-          RM_Siz : SO_Ref;
-          pragma Warnings (Off, SO_Ref);
- 
-          RM_Siz_Expr : Node_Id := Empty;
-          --  Expression for the evolving RM_Siz value. This is typically an if
-          --  expression which involves tests of discriminant values that are
-          --  formed as references to the entity V. At the end of scanning all
-          --  the components, a suitable function is constructed in which V is
-          --  the parameter.
- 
-          -----------------------
-          -- Local Subprograms --
-          -----------------------
- 
-          procedure Layout_Component_List
-            (Clist       : Node_Id;
-             Esiz        : out SO_Ref;
-             RM_Siz_Expr : out Node_Id);
-          --  Recursive procedure, called to lay out one component list Esiz
-          --  and RM_Siz_Expr are set to the Object_Size and Value_Size values
-          --  respectively representing the record size up to and including the
-          --  last component in the component list (including any variants in
-          --  this component list). RM_Siz_Expr is returned as an expression
-          --  which may in the general case involve some references to the
-          --  discriminants of the current record value, referenced by selecting
-          --  from the entity V.
- 
-          ---------------------------
-          -- Layout_Component_List --
-          ---------------------------
- 
-          procedure Layout_Component_List
-            (Clist       : Node_Id;
-             Esiz        : out SO_Ref;
-             RM_Siz_Expr : out Node_Id)
-          is
-             Citems  : constant List_Id := Component_Items (Clist);
-             Vpart   : constant Node_Id := Variant_Part (Clist);
-             Prv     : Node_Id;
-             Var     : Node_Id;
-             RM_Siz  : Uint;
-             RMS_Ent : Entity_Id;
- 
-          begin
-             if Is_Non_Empty_List (Citems) then
-                Layout_Components
-                  (From   => Defining_Identifier (First (Citems)),
-                   To     => Defining_Identifier (Last  (Citems)),
-                   Esiz   => Esiz,
-                   RM_Siz => RM_Siz);
-             else
-                Layout_Components (Empty, Empty, Esiz, RM_Siz);
-             end if;
- 
-             --  Case where no variants are present in the component list
- 
-             if No (Vpart) then
- 
-                --  The Esiz value has been correctly set by the call to
-                --  Layout_Components, so there is nothing more to be done.
- 
-                --  For RM_Siz, we have an SO_Ref value, which we must convert
-                --  to an appropriate expression.
- 
-                if Is_Static_SO_Ref (RM_Siz) then
-                   RM_Siz_Expr :=
-                     Make_Integer_Literal (Loc,
-                                           Intval => RM_Siz);
- 
-                else
-                   RMS_Ent := Get_Dynamic_SO_Entity (RM_Siz);
- 
-                   --  If the size is represented by a function, then we create
-                   --  an appropriate function call using V as the parameter to
-                   --  the call.
- 
-                   if Is_Discrim_SO_Function (RMS_Ent) then
-                      RM_Siz_Expr :=
-                        Make_Function_Call (Loc,
-                          Name => New_Occurrence_Of (RMS_Ent, Loc),
-                          Parameter_Associations => New_List (
-                            Make_Identifier (Loc, Vname)));
- 
-                   --  If the size is represented by a constant, then the
-                   --  expression we want is a reference to this constant
- 
-                   else
-                      RM_Siz_Expr := New_Occurrence_Of (RMS_Ent, Loc);
-                   end if;
-                end if;
- 
-             --  Case where variants are present in this component list
- 
-             else
-                declare
-                   EsizV    : SO_Ref;
-                   RM_SizV  : Node_Id;
-                   Dchoice  : Node_Id;
-                   Discrim  : Node_Id;
-                   Dtest    : Node_Id;
-                   D_List   : List_Id;
-                   D_Entity : Entity_Id;
- 
-                begin
-                   RM_Siz_Expr := Empty;
-                   Prv := Prev_Comp;
- 
-                   Var := Last (Variants (Vpart));
-                   while Present (Var) loop
-                      Prev_Comp := Prv;
-                      Layout_Component_List
-                        (Component_List (Var), EsizV, RM_SizV);
- 
-                      --  Set the Object_Size. If this is the first variant,
-                      --  we just set the size of this first variant.
- 
-                      if Var = Last (Variants (Vpart)) then
-                         Esiz := EsizV;
- 
-                      --  Otherwise the Object_Size is formed as a maximum
-                      --  of Esiz so far from previous variants, and the new
-                      --  Esiz value from the variant we just processed.
- 
-                      --  If both values are static, we can just compute the
-                      --  maximum directly to save building junk nodes.
- 
-                      elsif not Is_Dynamic_SO_Ref (Esiz)
-                        and then not Is_Dynamic_SO_Ref (EsizV)
-                      then
-                         Esiz := UI_Max (Esiz, EsizV);
- 
-                      --  If either value is dynamic, then we have to generate
-                      --  an appropriate Standard_Unsigned'Max attribute call.
-                      --  If one of the values is static then it needs to be
-                      --  converted from bits to storage units to be compatible
-                      --  with the dynamic value.
- 
-                      else
-                         if Is_Static_SO_Ref (Esiz) then
-                            Esiz := (Esiz + SSU - 1) / SSU;
-                         end if;
- 
-                         if Is_Static_SO_Ref (EsizV) then
-                            EsizV := (EsizV + SSU - 1) / SSU;
-                         end if;
- 
-                         Esiz :=
-                           SO_Ref_From_Expr
-                             (Make_Attribute_Reference (Loc,
-                                Attribute_Name => Name_Max,
-                                Prefix         =>
-                                  New_Occurrence_Of (Standard_Unsigned, Loc),
-                                Expressions => New_List (
-                                  Expr_From_SO_Ref (Loc, Esiz),
-                                  Expr_From_SO_Ref (Loc, EsizV))),
-                              Ins_Type => E,
-                              Vtype    => E);
-                      end if;
- 
-                      --  Now deal with Value_Size (RM_Siz). We are aiming at
-                      --  an expression that looks like:
- 
-                      --    if      xxDx (V.disc) then rmsiz1
-                      --    else if xxDx (V.disc) then rmsiz2
-                      --    else ...
- 
-                      --  Where rmsiz1, rmsiz2... are the RM_Siz values for the
-                      --  individual variants, and xxDx are the discriminant
-                      --  checking functions generated for the variant type.
- 
-                      --  If this is the first variant, we simply set the result
-                      --  as the expression. Note that this takes care of the
-                      --  others case.
- 
-                      if No (RM_Siz_Expr) then
- 
-                         --  If this is the only variant and the size is a
-                         --  literal, then use bit size as is, otherwise convert
-                         --  to storage units and continue to the next variant.
- 
-                         if No (Prev (Var))
-                           and then Nkind (RM_SizV) = N_Integer_Literal
-                         then
-                            RM_Siz_Expr := RM_SizV;
-                         else
-                            RM_Siz_Expr := Bits_To_SU (RM_SizV);
-                         end if;
- 
-                      --  Otherwise construct the appropriate test
- 
-                      else
-                         --  The test to be used in general is a call to the
-                         --  discriminant checking function. However, it is
-                         --  definitely worth special casing the very common
-                         --  case where a single value is involved.
- 
-                         Dchoice := First (Discrete_Choices (Var));
- 
-                         if No (Next (Dchoice))
-                           and then Nkind (Dchoice) /= N_Range
-                         then
-                            --  Discriminant to be tested
- 
-                            Discrim :=
-                              Make_Selected_Component (Loc,
-                                Prefix        =>
-                                  Make_Identifier (Loc, Vname),
-                                Selector_Name =>
-                                  New_Occurrence_Of
-                                    (Entity (Name (Vpart)), Loc));
- 
-                            Dtest :=
-                              Make_Op_Eq (Loc,
-                                Left_Opnd  => Discrim,
-                                Right_Opnd => New_Copy (Dchoice));
- 
-                         --  Generate a call to the discriminant-checking
-                         --  function for the variant. Note that the result
-                         --  has to be complemented since the function returns
-                         --  False when the passed discriminant value matches.
- 
-                         else
-                            --  The checking function takes all of the type's
-                            --  discriminants as parameters, so a list of all
-                            --  the selected discriminants must be constructed.
- 
-                            D_List := New_List;
-                            D_Entity := First_Discriminant (E);
-                            while Present (D_Entity) loop
-                               Append_To (D_List,
-                                 Make_Selected_Component (Loc,
-                                   Prefix        =>
-                                     Make_Identifier (Loc, Vname),
-                                   Selector_Name =>
-                                     New_Occurrence_Of (D_Entity, Loc)));
- 
-                               D_Entity := Next_Discriminant (D_Entity);
-                            end loop;
- 
-                            Dtest :=
-                              Make_Op_Not (Loc,
-                                Right_Opnd =>
-                                  Make_Function_Call (Loc,
-                                    Name =>
-                                      New_Occurrence_Of
-                                        (Dcheck_Function (Var), Loc),
-                                    Parameter_Associations =>
-                                      D_List));
-                         end if;
- 
-                         RM_Siz_Expr :=
-                           Make_If_Expression (Loc,
-                             Expressions =>
-                               New_List
-                                 (Dtest, Bits_To_SU (RM_SizV), RM_Siz_Expr));
-                      end if;
- 
-                      Prev (Var);
-                   end loop;
-                end;
-             end if;
-          end Layout_Component_List;
- 
-          Others_Present : Boolean;
-          pragma Warnings (Off, Others_Present);
-          --  Indicates others present, not used in this case
- 
-          procedure Non_Static_Choice_Error (Choice : Node_Id);
-          --  Error routine invoked by the generic instantiation below when
-          --  the variant part has a nonstatic choice.
- 
-          package Variant_Choices_Processing is new
-            Generic_Check_Choices
-              (Process_Empty_Choice      => No_OP,
-               Process_Non_Static_Choice => Non_Static_Choice_Error,
-               Process_Associated_Node   => No_OP);
-          use Variant_Choices_Processing;
- 
-          -----------------------------
-          -- Non_Static_Choice_Error --
-          -----------------------------
- 
-          procedure Non_Static_Choice_Error (Choice : Node_Id) is
-          begin
-             Flag_Non_Static_Expr
-               ("choice given in case expression is not static!", Choice);
-          end Non_Static_Choice_Error;
- 
-       --  Start of processing for Layout_Variant_Record
- 
-       begin
-          --  Call Check_Choices here to ensure that Others_Discrete_Choices
-          --  gets set on any 'others' choice before the discriminant-checking
-          --  functions are generated. Otherwise the function for the 'others'
-          --  alternative will unconditionally return True, causing discriminant
-          --  checks to fail. However, Check_Choices is now normally delayed
-          --  until the type's freeze entity is processed, due to requirements
-          --  coming from subtype predicates, so doing it at this point is
-          --  probably not right in general, but it's not clear how else to deal
-          --  with this situation. Perhaps we should only generate declarations
-          --  for the checking functions here, and somehow delay generation of
-          --  their bodies, but that would be a nontrivial change. ???
- 
-          declare
-             VP : constant Node_Id :=
-                    Variant_Part (Component_List (Type_Definition (Decl)));
-          begin
-             Check_Choices
-               (VP, Variants (VP), Etype (Name (VP)), Others_Present);
-          end;
- 
-          --  We need the discriminant checking functions, since we generate
-          --  calls to these functions for the RM_Size expression, so make
-          --  sure that these functions have been constructed in time.
- 
-          Build_Discr_Checking_Funcs (Decl);
- 
-          --  Lay out the discriminants
- 
-          First_Discr := First_Discriminant (E);
-          Last_Discr  := First_Discr;
-          while Present (Next_Discriminant (Last_Discr)) loop
-             Next_Discriminant (Last_Discr);
-          end loop;
- 
-          Layout_Components
-            (From   => First_Discr,
-             To     => Last_Discr,
-             Esiz   => Esiz,
-             RM_Siz => RM_Siz);
- 
-          --  Lay out the main component list (this will make recursive calls
-          --  to lay out all component lists nested within variants).
- 
-          Layout_Component_List (Component_List (Tdef), Esiz, RM_Siz_Expr);
-          Set_Esize (E, Esiz);
- 
-          --  If the RM_Size is a literal, set its value
- 
-          if Nkind (RM_Siz_Expr) = N_Integer_Literal then
-             Set_RM_Size (E, Intval (RM_Siz_Expr));
- 
-          --  Otherwise we construct a dynamic SO_Ref
- 
-          else
-             Set_RM_Size (E,
-               SO_Ref_From_Expr
-                 (RM_Siz_Expr,
-                  Ins_Type => E,
-                  Vtype    => E));
-          end if;
-       end Layout_Variant_Record;
- 
-    --  Start of processing for Layout_Record_Type
- 
-    begin
-       --  If this is a cloned subtype, just copy the size fields from the
-       --  original, nothing else needs to be done in this case, since the
-       --  components themselves are all shared.
- 
-       if Ekind_In (E, E_Record_Subtype, E_Class_Wide_Subtype)
-         and then Present (Cloned_Subtype (E))
-       then
-          Set_Esize     (E, Esize     (Cloned_Subtype (E)));
-          Set_RM_Size   (E, RM_Size   (Cloned_Subtype (E)));
-          Set_Alignment (E, Alignment (Cloned_Subtype (E)));
- 
-       --  Another special case, class-wide types. The RM says that the size
-       --  of such types is implementation defined (RM 13.3(48)). What we do
-       --  here is to leave the fields set as unknown values, and the backend
-       --  determines the actual behavior.
- 
-       elsif Ekind (E) = E_Class_Wide_Type then
-          null;
- 
-       --  All other cases
- 
-       else
-          --  Initialize alignment conservatively to 1. This value will be
-          --  increased as necessary during processing of the record.
- 
-          if Unknown_Alignment (E) then
-             Set_Alignment (E, Uint_1);
-          end if;
- 
-          --  Initialize previous component. This is Empty unless there are
-          --  components which have already been laid out by component clauses.
-          --  If there are such components, we start our lay out of the
-          --  remaining components following the last such component.
- 
-          Prev_Comp := Empty;
- 
-          Comp := First_Component_Or_Discriminant (E);
-          while Present (Comp) loop
-             if Present (Component_Clause (Comp)) then
-                if No (Prev_Comp)
-                  or else
-                    Component_Bit_Offset (Comp) >
-                    Component_Bit_Offset (Prev_Comp)
-                then
-                   Prev_Comp := Comp;
-                end if;
-             end if;
- 
-             Next_Component_Or_Discriminant (Comp);
-          end loop;
- 
-          --  We have two separate circuits, one for non-variant records and
-          --  one for variant records. For non-variant records, we simply go
-          --  through the list of components. This handles all the non-variant
-          --  cases including those cases of subtypes where there is no full
-          --  type declaration, so the tree cannot be used to drive the layout.
-          --  For variant records, we have to drive the layout from the tree
-          --  since we need to understand the variant structure in this case.
- 
-          if Present (Full_View (E)) then
-             Decl := Declaration_Node (Full_View (E));
-          else
-             Decl := Declaration_Node (E);
-          end if;
- 
-          --  Scan all the components
- 
-          if Nkind (Decl) = N_Full_Type_Declaration
-            and then Has_Discriminants (E)
-            and then Nkind (Type_Definition (Decl)) = N_Record_Definition
-            and then Present (Component_List (Type_Definition (Decl)))
-            and then
-              Present (Variant_Part (Component_List (Type_Definition (Decl))))
-          then
-             Layout_Variant_Record;
-          else
-             Layout_Non_Variant_Record;
-          end if;
-       end if;
-    end Layout_Record_Type;
- 
     -----------------
     -- Layout_Type --
     -----------------
--- 220,232 ----
     -------------------
  
     procedure Layout_Object (E : Entity_Id) is
!       pragma Unreferenced (E);
     begin
!       --  Nothing to do for now, assume backend does the layout
  
!       return;
     end Layout_Object;
  
     -----------------
     -- Layout_Type --
     -----------------
*************** package body Layout is
*** 2636,2700 ****
           end if;
        end if;
  
!       --  Lay out array and record types if front end layout set
! 
!       if Frontend_Layout_On_Target then
!          if Is_Array_Type (E) and then not Is_Bit_Packed_Array (E) then
!             Layout_Array_Type (E);
!          elsif Is_Record_Type (E) then
!             Layout_Record_Type (E);
!          end if;
! 
!       --  Case of backend layout, we still do a little in the front end
  
!       else
!          --  Processing for record types
  
!          if Is_Record_Type (E) then
  
!             --  Special remaining processing for record types with a known
!             --  size of 16, 32, or 64 bits whose alignment is not yet set.
!             --  For these types, we set a corresponding alignment matching
!             --  the size if possible, or as large as possible if not.
  
!             if Convention (E) = Convention_Ada and then not Debug_Flag_Q then
!                Set_Composite_Alignment (E);
!             end if;
  
!          --  Processing for array types
  
!          elsif Is_Array_Type (E) then
  
!             --  For arrays that are required to be atomic/VFA, we do the same
!             --  processing as described above for short records, since we
!             --  really need to have the alignment set for the whole array.
  
!             if Is_Atomic_Or_VFA (E) and then not Debug_Flag_Q then
!                Set_Composite_Alignment (E);
!             end if;
  
!             --  For unpacked array types, set an alignment of 1 if we know
!             --  that the component alignment is not greater than 1. The reason
!             --  we do this is to avoid unnecessary copying of slices of such
!             --  arrays when passed to subprogram parameters (see special test
!             --  in Exp_Ch6.Expand_Actuals).
  
!             if not Is_Packed (E) and then Unknown_Alignment (E) then
!                if Known_Static_Component_Size (E)
!                  and then Component_Size (E) = 1
!                then
!                   Set_Alignment (E, Uint_1);
!                end if;
              end if;
  
!             --  We need to know whether the size depends on the value of one
!             --  or more discriminants to select the return mechanism. Skip if
!             --  errors are present, to prevent cascaded messages.
! 
!             if Serious_Errors_Detected = 0 then
!                Compute_Size_Depends_On_Discriminant (E);
!             end if;
  
           end if;
        end if;
  
--- 461,514 ----
           end if;
        end if;
  
!       --  Even if the backend performs the layout, we still do a little in
!       --  the front end
  
!       --  Processing for record types
  
!       if Is_Record_Type (E) then
  
!          --  Special remaining processing for record types with a known
!          --  size of 16, 32, or 64 bits whose alignment is not yet set.
!          --  For these types, we set a corresponding alignment matching
!          --  the size if possible, or as large as possible if not.
  
!          if Convention (E) = Convention_Ada and then not Debug_Flag_Q then
!             Set_Composite_Alignment (E);
!          end if;
  
!       --  Processing for array types
  
!       elsif Is_Array_Type (E) then
  
!          --  For arrays that are required to be atomic/VFA, we do the same
!          --  processing as described above for short records, since we
!          --  really need to have the alignment set for the whole array.
  
!          if Is_Atomic_Or_VFA (E) and then not Debug_Flag_Q then
!             Set_Composite_Alignment (E);
!          end if;
  
!          --  For unpacked array types, set an alignment of 1 if we know
!          --  that the component alignment is not greater than 1. The reason
!          --  we do this is to avoid unnecessary copying of slices of such
!          --  arrays when passed to subprogram parameters (see special test
!          --  in Exp_Ch6.Expand_Actuals).
  
!          if not Is_Packed (E) and then Unknown_Alignment (E) then
!             if Known_Static_Component_Size (E)
!               and then Component_Size (E) = 1
!             then
!                Set_Alignment (E, Uint_1);
              end if;
+          end if;
  
!          --  We need to know whether the size depends on the value of one
!          --  or more discriminants to select the return mechanism. Skip if
!          --  errors are present, to prevent cascaded messages.
  
+          if Serious_Errors_Detected = 0 then
+             Compute_Size_Depends_On_Discriminant (E);
           end if;
        end if;
  
*************** package body Layout is
*** 2728,2735 ****
                 --  this means it will be storage-unit addressable).
  
                 if Is_Scalar_Type (E) then
!                   if Size <= System_Storage_Unit then
!                      Init_Esize (E, System_Storage_Unit);
                    elsif Size <= 16 then
                       Init_Esize (E, 16);
                    elsif Size <= 32 then
--- 542,549 ----
                 --  this means it will be storage-unit addressable).
  
                 if Is_Scalar_Type (E) then
!                   if Size <= SSU then
!                      Init_Esize (E, SSU);
                    elsif Size <= 16 then
                       Init_Esize (E, 16);
                    elsif Size <= 32 then
*************** package body Layout is
*** 2741,2747 ****
                    --  Finally, make sure that alignment is consistent with
                    --  the newly assigned size.
  
!                   while Alignment (E) * System_Storage_Unit < Esize (E)
                      and then Alignment (E) < Maximum_Alignment
                    loop
                       Set_Alignment (E, 2 * Alignment (E));
--- 555,561 ----
                    --  Finally, make sure that alignment is consistent with
                    --  the newly assigned size.
  
!                   while Alignment (E) * SSU < Esize (E)
                      and then Alignment (E) < Maximum_Alignment
                    loop
                       Set_Alignment (E, 2 * Alignment (E));
*************** package body Layout is
*** 2752,2864 ****
        end if;
     end Layout_Type;
  
-    ---------------------
-    -- Rewrite_Integer --
-    ---------------------
- 
-    procedure Rewrite_Integer (N : Node_Id; V : Uint) is
-       Loc : constant Source_Ptr := Sloc (N);
-       Typ : constant Entity_Id  := Etype (N);
-    begin
-       Rewrite (N, Make_Integer_Literal (Loc, Intval => V));
-       Set_Etype (N, Typ);
-    end Rewrite_Integer;
- 
-    -------------------------------
-    -- Set_And_Check_Static_Size --
-    -------------------------------
- 
-    procedure Set_And_Check_Static_Size
-      (E      : Entity_Id;
-       Esiz   : SO_Ref;
-       RM_Siz : SO_Ref)
-    is
-       SC : Node_Id;
- 
-       procedure Check_Size_Too_Small (Spec : Uint; Min : Uint);
-       --  Spec is the number of bit specified in the size clause, and Min is
-       --  the minimum computed size. An error is given that the specified size
-       --  is too small if Spec < Min, and in this case both Esize and RM_Size
-       --  are set to unknown in E. The error message is posted on node SC.
- 
-       procedure Check_Unused_Bits (Spec : Uint; Max : Uint);
-       --  Spec is the number of bits specified in the size clause, and Max is
-       --  the maximum computed size. A warning is given about unused bits if
-       --  Spec > Max. This warning is posted on node SC.
- 
-       --------------------------
-       -- Check_Size_Too_Small --
-       --------------------------
- 
-       procedure Check_Size_Too_Small (Spec : Uint; Min : Uint) is
-       begin
-          if Spec < Min then
-             Error_Msg_Uint_1 := Min;
-             Error_Msg_NE ("size for & too small, minimum allowed is ^", SC, E);
-             Init_Esize   (E);
-             Init_RM_Size (E);
-          end if;
-       end Check_Size_Too_Small;
- 
-       -----------------------
-       -- Check_Unused_Bits --
-       -----------------------
- 
-       procedure Check_Unused_Bits (Spec : Uint; Max : Uint) is
-       begin
-          if Spec > Max then
-             Error_Msg_Uint_1 := Spec - Max;
-             Error_Msg_NE ("??^ bits of & unused", SC, E);
-          end if;
-       end Check_Unused_Bits;
- 
-    --  Start of processing for Set_And_Check_Static_Size
- 
-    begin
-       --  Case where Object_Size (Esize) is already set by a size clause
- 
-       if Known_Static_Esize (E) then
-          SC := Size_Clause (E);
- 
-          if No (SC) then
-             SC := Get_Attribute_Definition_Clause (E, Attribute_Object_Size);
-          end if;
- 
-          --  Perform checks on specified size against computed sizes
- 
-          if Present (SC) then
-             Check_Unused_Bits    (Esize (E), Esiz);
-             Check_Size_Too_Small (Esize (E), RM_Siz);
-          end if;
-       end if;
- 
-       --  Case where Value_Size (RM_Size) is set by specific Value_Size clause
-       --  (we do not need to worry about Value_Size being set by a Size clause,
-       --  since that will have set Esize as well, and we already took care of
-       --  that case).
- 
-       if Known_Static_RM_Size (E) then
-          SC := Get_Attribute_Definition_Clause (E, Attribute_Value_Size);
- 
-          --  Perform checks on specified size against computed sizes
- 
-          if Present (SC) then
-             Check_Unused_Bits    (RM_Size (E), Esiz);
-             Check_Size_Too_Small (RM_Size (E), RM_Siz);
-          end if;
-       end if;
- 
-       --  Set sizes if unknown
- 
-       if Unknown_Esize (E) then
-          Set_Esize (E, Esiz);
-       end if;
- 
-       if Unknown_RM_Size (E) then
-          Set_RM_Size (E, RM_Siz);
-       end if;
-    end Set_And_Check_Static_Size;
- 
     -----------------------------
     -- Set_Composite_Alignment --
     -----------------------------
--- 566,571 ----
*************** package body Layout is
*** 2971,2981 ****
           --  Reset alignment to match size if the known size is exactly 2, 4,
           --  or 8 storage units.
  
!          if Siz = 2 * System_Storage_Unit then
              Align := 2;
!          elsif Siz = 4 * System_Storage_Unit then
              Align := 4;
!          elsif Siz = 8 * System_Storage_Unit then
              Align := 8;
  
              --  If Optimize_Alignment is set to Space, then make sure the
--- 678,688 ----
           --  Reset alignment to match size if the known size is exactly 2, 4,
           --  or 8 storage units.
  
!          if Siz = 2 * SSU then
              Align := 2;
!          elsif Siz = 4 * SSU then
              Align := 4;
!          elsif Siz = 8 * SSU then
              Align := 8;
  
              --  If Optimize_Alignment is set to Space, then make sure the
*************** package body Layout is
*** 2983,2993 ****
              --  bytes then we want an alignment of 1 for the type.
  
           elsif Optimize_Alignment_Space (E) then
!             if Siz mod (8 * System_Storage_Unit) = 0 then
                 Align := 8;
!             elsif Siz mod (4 * System_Storage_Unit) = 0 then
                 Align := 4;
!             elsif Siz mod (2 * System_Storage_Unit) = 0 then
                 Align := 2;
              else
                 Align := 1;
--- 690,700 ----
              --  bytes then we want an alignment of 1 for the type.
  
           elsif Optimize_Alignment_Space (E) then
!             if Siz mod (8 * SSU) = 0 then
                 Align := 8;
!             elsif Siz mod (4 * SSU) = 0 then
                 Align := 4;
!             elsif Siz mod (2 * SSU) = 0 then
                 Align := 2;
              else
                 Align := 1;
*************** package body Layout is
*** 2998,3011 ****
              --  alignment of 4.
  
           elsif Optimize_Alignment_Time (E)
!            and then Siz > System_Storage_Unit
!            and then Siz <= 8 * System_Storage_Unit
           then
!             if Siz <= 2 * System_Storage_Unit then
                 Align := 2;
!             elsif Siz <= 4 * System_Storage_Unit then
                 Align := 4;
!             else -- Siz <= 8 * System_Storage_Unit then
                 Align := 8;
              end if;
  
--- 705,718 ----
              --  alignment of 4.
  
           elsif Optimize_Alignment_Time (E)
!            and then Siz > SSU
!            and then Siz <= 8 * SSU
           then
!             if Siz <= 2 * SSU then
                 Align := 2;
!             elsif Siz <= 4 * SSU then
                 Align := 4;
!             else -- Siz <= 8 * SSU then
                 Align := 8;
              end if;
  
*************** package body Layout is
*** 3034,3043 ****
           --  words in any case. Omit this if we are optimizing for time,
           --  since conceivably we may be able to do better.
  
!          if Align > System_Word_Size / System_Storage_Unit
             and then not Optimize_Alignment_Time (E)
           then
!             Align := System_Word_Size / System_Storage_Unit;
           end if;
  
           --  Check components. If any component requires a higher alignment,
--- 741,750 ----
           --  words in any case. Omit this if we are optimizing for time,
           --  since conceivably we may be able to do better.
  
!          if Align > System_Word_Size / SSU
             and then not Optimize_Alignment_Time (E)
           then
!             Align := System_Word_Size / SSU;
           end if;
  
           --  Check components. If any component requires a higher alignment,
*************** package body Layout is
*** 3068,3075 ****
                              (Unknown_Esize (Comp)
                                or else (Known_Static_Esize (Comp)
                                          and then
!                                           Esize (Comp) =
!                                               Calign * System_Storage_Unit))
                          then
                             Align := UI_To_Int (Calign);
                          end if;
--- 775,781 ----
                              (Unknown_Esize (Comp)
                                or else (Known_Static_Esize (Comp)
                                          and then
!                                        Esize (Comp) = Calign * SSU))
                          then
                             Align := UI_To_Int (Calign);
                          end if;
*************** package body Layout is
*** 3088,3096 ****
        Set_Alignment (E, UI_From_Int (Align));
  
        if Known_Static_Esize (E)
!         and then Esize (E) < Align * System_Storage_Unit
        then
!          Set_Esize (E, UI_From_Int (Align * System_Storage_Unit));
        end if;
     end Set_Composite_Alignment;
  
--- 794,802 ----
        Set_Alignment (E, UI_From_Int (Align));
  
        if Known_Static_Esize (E)
!         and then Esize (E) < Align * SSU
        then
!          Set_Esize (E, UI_From_Int (Align * SSU));
        end if;
     end Set_Composite_Alignment;
  
*************** package body Layout is
*** 3137,3151 ****
     -- Set_Elem_Alignment --
     ------------------------
  
!    procedure Set_Elem_Alignment (E : Entity_Id) is
     begin
!       --  Do not set alignment for packed array types, unless we are doing
!       --  front end layout, because otherwise this is always handled in the
        --  backend.
  
!       if Is_Packed_Array_Impl_Type (E)
!         and then not Frontend_Layout_On_Target
!       then
           return;
  
        --  If there is an alignment clause, then we respect it
--- 843,854 ----
     -- Set_Elem_Alignment --
     ------------------------
  
!    procedure Set_Elem_Alignment (E : Entity_Id; Align : Nat := 0) is
     begin
!       --  Do not set alignment for packed array types, this is handled in the
        --  backend.
  
!       if Is_Packed_Array_Impl_Type (E) then
           return;
  
        --  If there is an alignment clause, then we respect it
*************** package body Layout is
*** 3166,3180 ****
           return;
        end if;
  
!       --  Here we calculate the alignment as the largest power of two multiple
!       --  of System.Storage_Unit that does not exceed either the object size of
!       --  the type, or the maximum allowed alignment.
  
        declare
           S : Int;
           A : Nat;
! 
!          Max_Alignment : Nat;
  
        begin
           --  The given Esize may be larger that int'last because of a previous
--- 869,880 ----
           return;
        end if;
  
!       --  We attempt to set the alignment in all the other cases
  
        declare
           S : Int;
           A : Nat;
!          M : Nat;
  
        begin
           --  The given Esize may be larger that int'last because of a previous
*************** package body Layout is
*** 3184,3197 ****
              S := Ttypes.Maximum_Alignment;
  
           --  If this is an access type and the target doesn't have strict
!          --  alignment and we are not doing front end layout, then cap the
!          --  alignment to that of a regular access type. This will avoid
!          --  giving fat pointers twice the usual alignment for no practical
!          --  benefit since the misalignment doesn't really matter.
  
           elsif Is_Access_Type (E)
             and then not Target_Strict_Alignment
-            and then not Frontend_Layout_On_Target
           then
              S := System_Address_Size / SSU;
  
--- 884,896 ----
              S := Ttypes.Maximum_Alignment;
  
           --  If this is an access type and the target doesn't have strict
!          --  alignment, then cap the alignment to that of a regular access
!          --  type. This will avoid giving fat pointers twice the usual
!          --  alignment for no practical benefit since the misalignment doesn't
!          --  really matter.
  
           elsif Is_Access_Type (E)
             and then not Target_Strict_Alignment
           then
              S := System_Address_Size / SSU;
  
*************** package body Layout is
*** 3206,3212 ****
             and then S = 8
             and then Is_Floating_Point_Type (E)
           then
!             Max_Alignment := Ttypes.Target_Double_Float_Alignment;
  
           --  If the default alignment of "double" or larger scalar types is
           --  specifically capped, enforce the cap.
--- 905,911 ----
             and then S = 8
             and then Is_Floating_Point_Type (E)
           then
!             M := Ttypes.Target_Double_Float_Alignment;
  
           --  If the default alignment of "double" or larger scalar types is
           --  specifically capped, enforce the cap.
*************** package body Layout is
*** 3215,3232 ****
             and then S >= 8
             and then Is_Scalar_Type (E)
           then
!             Max_Alignment := Ttypes.Target_Double_Scalar_Alignment;
  
           --  Otherwise enforce the overall alignment cap
  
           else
!             Max_Alignment := Ttypes.Maximum_Alignment;
           end if;
  
!          A := 1;
!          while 2 * A <= Max_Alignment and then 2 * A <= S loop
!             A := 2 * A;
!          end loop;
  
           --  If alignment is currently not set, then we can safely set it to
           --  this new calculated value.
--- 914,940 ----
             and then S >= 8
             and then Is_Scalar_Type (E)
           then
!             M := Ttypes.Target_Double_Scalar_Alignment;
  
           --  Otherwise enforce the overall alignment cap
  
           else
!             M := Ttypes.Maximum_Alignment;
           end if;
  
!          --  We calculate the alignment as the largest power-of-two multiple
!          --  of System.Storage_Unit that does not exceed the object size of
!          --  the type and the maximum allowed alignment, if none was specified.
!          --  Otherwise we only cap it to the maximum allowed alignment.
! 
!          if Align = 0 then
!             A := 1;
!             while 2 * A <= S and then 2 * A <= M loop
!                A := 2 * A;
!             end loop;
!          else
!             A := Nat'Min (Align, M);
!          end if;
  
           --  If alignment is currently not set, then we can safely set it to
           --  this new calculated value.
*************** package body Layout is
*** 3361,3499 ****
        end;
     end Set_Elem_Alignment;
  
-    ----------------------
-    -- SO_Ref_From_Expr --
-    ----------------------
- 
-    function SO_Ref_From_Expr
-      (Expr      : Node_Id;
-       Ins_Type  : Entity_Id;
-       Vtype     : Entity_Id := Empty;
-       Make_Func : Boolean   := False) return Dynamic_SO_Ref
-    is
-       Loc  : constant Source_Ptr := Sloc (Ins_Type);
-       K    : constant Entity_Id := Make_Temporary (Loc, 'K');
-       Decl : Node_Id;
- 
-       Vtype_Primary_View : Entity_Id;
- 
-       function Check_Node_V_Ref (N : Node_Id) return Traverse_Result;
-       --  Function used to check one node for reference to V
- 
-       function Has_V_Ref is new Traverse_Func (Check_Node_V_Ref);
-       --  Function used to traverse tree to check for reference to V
- 
-       ----------------------
-       -- Check_Node_V_Ref --
-       ----------------------
- 
-       function Check_Node_V_Ref (N : Node_Id) return Traverse_Result is
-       begin
-          if Nkind (N) = N_Identifier then
-             if Chars (N) = Vname then
-                return Abandon;
-             else
-                return Skip;
-             end if;
- 
-          else
-             return OK;
-          end if;
-       end Check_Node_V_Ref;
- 
-    --  Start of processing for SO_Ref_From_Expr
- 
-    begin
-       --  Case of expression is an integer literal, in this case we just
-       --  return the value (which must always be non-negative, since size
-       --  and offset values can never be negative).
- 
-       if Nkind (Expr) = N_Integer_Literal then
-          pragma Assert (Intval (Expr) >= 0);
-          return Intval (Expr);
-       end if;
- 
-       --  Case where there is a reference to V, create function
- 
-       if Has_V_Ref (Expr) = Abandon then
- 
-          pragma Assert (Present (Vtype));
- 
-          --  Check whether Vtype is a view of a private type and ensure that
-          --  we use the primary view of the type (which is denoted by its
-          --  Etype, whether it's the type's partial or full view entity).
-          --  This is needed to make sure that we use the same (primary) view
-          --  of the type for all V formals, whether the current view of the
-          --  type is the partial or full view, so that types will always
-          --  match on calls from one size function to another.
- 
-          if Has_Private_Declaration (Vtype) then
-             Vtype_Primary_View := Etype (Vtype);
-          else
-             Vtype_Primary_View := Vtype;
-          end if;
- 
-          Set_Is_Discrim_SO_Function (K);
- 
-          Decl :=
-            Make_Subprogram_Body (Loc,
- 
-              Specification =>
-                Make_Function_Specification (Loc,
-                  Defining_Unit_Name => K,
-                    Parameter_Specifications => New_List (
-                      Make_Parameter_Specification (Loc,
-                        Defining_Identifier =>
-                          Make_Defining_Identifier (Loc, Chars => Vname),
-                        Parameter_Type      =>
-                          New_Occurrence_Of (Vtype_Primary_View, Loc))),
-                    Result_Definition =>
-                      New_Occurrence_Of (Standard_Unsigned, Loc)),
- 
-              Declarations => Empty_List,
- 
-              Handled_Statement_Sequence =>
-                Make_Handled_Sequence_Of_Statements (Loc,
-                  Statements => New_List (
-                    Make_Simple_Return_Statement (Loc,
-                      Expression => Expr))));
- 
-       --  The caller requests that the expression be encapsulated in a
-       --  parameterless function.
- 
-       elsif Make_Func then
-          Decl :=
-            Make_Subprogram_Body (Loc,
- 
-              Specification =>
-                Make_Function_Specification (Loc,
-                  Defining_Unit_Name => K,
-                    Parameter_Specifications => Empty_List,
-                    Result_Definition =>
-                      New_Occurrence_Of (Standard_Unsigned, Loc)),
- 
-              Declarations => Empty_List,
- 
-              Handled_Statement_Sequence =>
-                Make_Handled_Sequence_Of_Statements (Loc,
-                  Statements => New_List (
-                    Make_Simple_Return_Statement (Loc, Expression => Expr))));
- 
-       --  No reference to V and function not requested, so create a constant
- 
-       else
-          Decl :=
-            Make_Object_Declaration (Loc,
-              Defining_Identifier => K,
-              Object_Definition   =>
-                New_Occurrence_Of (Standard_Unsigned, Loc),
-              Constant_Present    => True,
-              Expression          => Expr);
-       end if;
- 
-       Append_Freeze_Action (Ins_Type, Decl);
-       Analyze (Decl);
-       return Create_Dynamic_SO_Ref (K);
-    end SO_Ref_From_Expr;
- 
  end Layout;
--- 1069,1072 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/layout.ads gcc-8.1.0/gcc/ada/layout.ads
*** gcc-7.3.0/gcc/ada/layout.ads	Mon Sep 10 12:47:10 2007
--- gcc-8.1.0/gcc/ada/layout.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2000-2007, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or 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-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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 Layout is
*** 74,83 ****
     --  types, the RM_Size is simply set to zero. This routine also sets
     --  the Is_Constrained flag in Def_Id.
  
!    procedure Set_Elem_Alignment (E : Entity_Id);
     --  The front end always sets alignments for elementary types by calling
     --  this procedure. Note that we have to do this for discrete types (since
     --  the Alignment attribute is static), so we might as well do it for all
!    --  elementary types, since the processing is the same.
  
  end Layout;
--- 74,84 ----
     --  types, the RM_Size is simply set to zero. This routine also sets
     --  the Is_Constrained flag in Def_Id.
  
!    procedure Set_Elem_Alignment (E : Entity_Id; Align : Nat := 0);
     --  The front end always sets alignments for elementary types by calling
     --  this procedure. Note that we have to do this for discrete types (since
     --  the Alignment attribute is static), so we might as well do it for all
!    --  elementary types, as the processing is the same. If Align is nonzero,
!    --  it is an external alignment setting that we must respect.
  
  end Layout;
diff -Nrcpad gcc-7.3.0/gcc/ada/lib-list.adb gcc-8.1.0/gcc/ada/lib-list.adb
*** gcc-7.3.0/gcc/ada/lib-list.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/lib-list.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          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 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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
*** 78,86 ****
  
     for R in Sorted_Units'Range loop
        if File_Names_Only then
!          if not Is_Internal_File_Name
!                   (File_Name (Source_Index (Sorted_Units (R))))
!          then
              Write_Name (Full_File_Name (Source_Index (Sorted_Units (R))));
              Write_Eol;
           end if;
--- 78,84 ----
  
     for R in Sorted_Units'Range loop
        if File_Names_Only then
!          if not Is_Internal_Unit (Sorted_Units (R)) then
              Write_Name (Full_File_Name (Source_Index (Sorted_Units (R))));
              Write_Eol;
           end if;
diff -Nrcpad gcc-7.3.0/gcc/ada/lib-load.adb gcc-8.1.0/gcc/ada/lib-load.adb
*** gcc-7.3.0/gcc/ada/lib-load.adb	Wed Oct 12 12:33:50 2016
--- gcc-8.1.0/gcc/ada/lib-load.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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.Load is
*** 122,128 ****
  
        --  No change if we did not find the spec
  
!       if X = No_Source_File then
           return;
        end if;
  
--- 122,128 ----
  
        --  No change if we did not find the spec
  
!       if X <= No_Source_File then
           return;
        end if;
  
*************** package body Lib.Load is
*** 145,151 ****
        Cunit        : Node_Id;
        Du_Name      : Node_Or_Entity_Id;
        End_Lab      : Node_Id;
!       Save_CS      : constant Boolean := Get_Comes_From_Source_Default;
  
     begin
        --  The created dummy package unit does not come from source
--- 145,159 ----
        Cunit        : Node_Id;
        Du_Name      : Node_Or_Entity_Id;
        End_Lab      : Node_Id;
!       Fname        : constant File_Name_Type :=
!         Get_File_Name (Spec_Name, Subunit => False);
!       Pre_Name : constant Boolean :=
!         Is_Predefined_File_Name (Fname, Renamings_Included => False);
!       Ren_Name : constant Boolean :=
!         Is_Predefined_Renaming_File_Name (Fname);
!       GNAT_Name : constant Boolean :=
!         Is_GNAT_File_Name (Fname);
!       Save_CS : constant Boolean := Get_Comes_From_Source_Default;
  
     begin
        --  The created dummy package unit does not come from source
*************** package body Lib.Load is
*** 205,234 ****
        Units.Increment_Last;
        Unum := Units.Last;
  
!       Units.Table (Unum) := (
!         Cunit             => Cunit,
!         Cunit_Entity      => Cunit_Entity,
!         Dependency_Num    => 0,
!         Dynamic_Elab      => False,
!         Error_Location    => Sloc (With_Node),
!         Expected_Unit     => Spec_Name,
!         Fatal_Error       => Error_Detected,
!         Generate_Code     => False,
!         Has_RACW          => False,
!         Filler            => False,
!         Ident_String      => Empty,
!         Loading           => False,
!         Main_Priority     => Default_Main_Priority,
!         Main_CPU          => Default_Main_CPU,
!         Munit_Index       => 0,
!         No_Elab_Code_All  => False,
!         Serial_Number     => 0,
!         Source_Index      => No_Source_File,
!         Unit_File_Name    => Get_File_Name (Spec_Name, Subunit => False),
!         Unit_Name         => Spec_Name,
!         Version           => 0,
!         OA_Setting        => 'O',
!         SPARK_Mode_Pragma => Empty);
  
        Set_Comes_From_Source_Default (Save_CS);
        Set_Error_Posted (Cunit_Entity);
--- 213,249 ----
        Units.Increment_Last;
        Unum := Units.Last;
  
!       Units.Table (Unum) :=
!         (Cunit                  => Cunit,
!          Cunit_Entity           => Cunit_Entity,
!          Dependency_Num         => 0,
!          Dynamic_Elab           => False,
!          Error_Location         => Sloc (With_Node),
!          Expected_Unit          => Spec_Name,
!          Fatal_Error            => Error_Detected,
!          Generate_Code          => False,
!          Has_RACW               => False,
!          Filler                 => False,
!          Ident_String           => Empty,
! 
!          Is_Predefined_Renaming => Ren_Name,
!          Is_Predefined_Unit     => Pre_Name or Ren_Name,
!          Is_Internal_Unit       => Pre_Name or Ren_Name or GNAT_Name,
!          Filler2                => False,
! 
!          Loading                => False,
!          Main_Priority          => Default_Main_Priority,
!          Main_CPU               => Default_Main_CPU,
!          Primary_Stack_Count    => 0,
!          Sec_Stack_Count        => 0,
!          Munit_Index            => 0,
!          No_Elab_Code_All       => False,
!          Serial_Number          => 0,
!          Source_Index           => No_Source_File,
!          Unit_File_Name         => Fname,
!          Unit_Name              => Spec_Name,
!          Version                => 0,
!          OA_Setting             => 'O');
  
        Set_Comes_From_Source_Default (Save_CS);
        Set_Error_Posted (Cunit_Entity);
*************** package body Lib.Load is
*** 286,292 ****
     ----------------------
  
     procedure Load_Main_Source is
!       Fname   : File_Name_Type;
        Version : Word := 0;
  
     begin
--- 301,313 ----
     ----------------------
  
     procedure Load_Main_Source is
!       Fname : constant File_Name_Type := Next_Main_Source;
!       Pre_Name : constant Boolean :=
!         Is_Predefined_File_Name (Fname, Renamings_Included => False);
!       Ren_Name : constant Boolean :=
!         Is_Predefined_Renaming_File_Name (Fname);
!       GNAT_Name : constant Boolean :=
!         Is_GNAT_File_Name (Fname);
        Version : Word := 0;
  
     begin
*************** package body Lib.Load is
*** 300,306 ****
        --  Cunit_Entity fields also get filled in later by the parser.
  
        Units.Increment_Last;
-       Fname := Next_Main_Source;
  
        Units.Table (Main_Unit).Unit_File_Name := Fname;
  
--- 321,326 ----
*************** package body Lib.Load is
*** 308,341 ****
           Main_Source_File := Load_Source_File (Fname);
           Current_Error_Source_File := Main_Source_File;
  
!          if Main_Source_File /= No_Source_File then
              Version := Source_Checksum (Main_Source_File);
           end if;
  
!          Units.Table (Main_Unit) := (
!            Cunit             => Empty,
!            Cunit_Entity      => Empty,
!            Dependency_Num    => 0,
!            Dynamic_Elab      => False,
!            Error_Location    => No_Location,
!            Expected_Unit     => No_Unit_Name,
!            Fatal_Error       => None,
!            Generate_Code     => False,
!            Has_RACW          => False,
!            Filler            => False,
!            Ident_String      => Empty,
!            Loading           => True,
!            Main_Priority     => Default_Main_Priority,
!            Main_CPU          => Default_Main_CPU,
!            Munit_Index       => 0,
!            No_Elab_Code_All  => False,
!            Serial_Number     => 0,
!            Source_Index      => Main_Source_File,
!            Unit_File_Name    => Fname,
!            Unit_Name         => No_Unit_Name,
!            Version           => Version,
!            OA_Setting        => 'O',
!            SPARK_Mode_Pragma => Empty);
        end if;
     end Load_Main_Source;
  
--- 328,388 ----
           Main_Source_File := Load_Source_File (Fname);
           Current_Error_Source_File := Main_Source_File;
  
!          if Main_Source_File > No_Source_File then
              Version := Source_Checksum (Main_Source_File);
+ 
+          else
+             --  To avoid emitting a source location (since there is no file),
+             --  we write a custom error message instead of using the machinery
+             --  in errout.adb.
+ 
+             Set_Standard_Error;
+ 
+             if Main_Source_File = No_Access_To_Source_File then
+                Write_Str
+                  ("no read access for file """ & Get_Name_String (Fname)
+                   & """");
+             else
+                Write_Str
+                  ("file """ & Get_Name_String (Fname) & """ not found");
+             end if;
+ 
+             Write_Eol;
+             Set_Standard_Output;
           end if;
  
!          Units.Table (Main_Unit) :=
!            (Cunit                  => Empty,
!             Cunit_Entity           => Empty,
!             Dependency_Num         => 0,
!             Dynamic_Elab           => False,
!             Error_Location         => No_Location,
!             Expected_Unit          => No_Unit_Name,
!             Fatal_Error            => None,
!             Generate_Code          => False,
!             Has_RACW               => False,
!             Filler                 => False,
!             Ident_String           => Empty,
! 
!             Is_Predefined_Renaming => Ren_Name,
!             Is_Predefined_Unit     => Pre_Name or Ren_Name,
!             Is_Internal_Unit       => Pre_Name or Ren_Name or GNAT_Name,
!             Filler2                => False,
! 
!             Loading                => True,
!             Main_Priority          => Default_Main_Priority,
!             Main_CPU               => Default_Main_CPU,
!             Primary_Stack_Count    => 0,
!             Sec_Stack_Count        => 0,
! 
!             Munit_Index            => 0,
!             No_Elab_Code_All       => False,
!             Serial_Number          => 0,
!             Source_Index           => Main_Source_File,
!             Unit_File_Name         => Fname,
!             Unit_Name              => No_Unit_Name,
!             Version                => Version,
!             OA_Setting             => 'O');
        end if;
     end Load_Main_Source;
  
*************** package body Lib.Load is
*** 358,363 ****
--- 405,413 ----
        Unum         : Unit_Number_Type;
        Unump        : Unit_Number_Type;
        Fname        : File_Name_Type;
+       Pre_Name     : Boolean;
+       Ren_Name     : Boolean;
+       GNAT_Name    : Boolean;
        Src_Ind      : Source_File_Index;
        Save_PMES    : constant Boolean := Parsing_Main_Extended_Source;
  
*************** package body Lib.Load is
*** 469,475 ****
           Uname_Actual := Load_Name;
        end if;
  
!       Fname := Get_File_Name (Uname_Actual, Subunit);
  
        if Debug_Flag_L then
           Write_Eol;
--- 519,529 ----
           Uname_Actual := Load_Name;
        end if;
  
!       Fname     := Get_File_Name (Uname_Actual, Subunit);
!       Pre_Name  :=
!         Is_Predefined_File_Name (Fname, Renamings_Included => False);
!       Ren_Name  := Is_Predefined_Renaming_File_Name (Fname);
!       GNAT_Name := Is_GNAT_File_Name (Fname);
  
        if Debug_Flag_L then
           Write_Eol;
*************** package body Lib.Load is
*** 582,587 ****
--- 636,643 ----
                 end if;
  
                 if Present (Error_Node) then
+                   Get_Name_String (Fname);
+ 
                    if Is_Predefined_File_Name (Fname) then
                       Error_Msg_Unit_1 := Uname_Actual;
                       Error_Msg
*************** package body Lib.Load is
*** 675,705 ****
  
           --  File was found
  
!          if Src_Ind /= No_Source_File then
!             Units.Table (Unum) := (
!               Cunit             => Empty,
!               Cunit_Entity      => Empty,
!               Dependency_Num    => 0,
!               Dynamic_Elab      => False,
!               Error_Location    => Sloc (Error_Node),
!               Expected_Unit     => Uname_Actual,
!               Fatal_Error       => None,
!               Generate_Code     => False,
!               Has_RACW          => False,
!               Filler            => False,
!               Ident_String      => Empty,
!               Loading           => True,
!               Main_Priority     => Default_Main_Priority,
!               Main_CPU          => Default_Main_CPU,
!               Munit_Index       => 0,
!               No_Elab_Code_All  => False,
!               Serial_Number     => 0,
!               Source_Index      => Src_Ind,
!               Unit_File_Name    => Fname,
!               Unit_Name         => Uname_Actual,
!               Version           => Source_Checksum (Src_Ind),
!               OA_Setting        => 'O',
!               SPARK_Mode_Pragma => Empty);
  
              --  Parse the new unit
  
--- 731,768 ----
  
           --  File was found
  
!          if Src_Ind > No_Source_File then
!             Units.Table (Unum) :=
!               (Cunit                  => Empty,
!                Cunit_Entity           => Empty,
!                Dependency_Num         => 0,
!                Dynamic_Elab           => False,
!                Error_Location         => Sloc (Error_Node),
!                Expected_Unit          => Uname_Actual,
!                Fatal_Error            => None,
!                Generate_Code          => False,
!                Has_RACW               => False,
!                Filler                 => False,
!                Ident_String           => Empty,
! 
!                Is_Predefined_Renaming => Ren_Name,
!                Is_Predefined_Unit     => Pre_Name or Ren_Name,
!                Is_Internal_Unit       => Pre_Name or Ren_Name or GNAT_Name,
!                Filler2                => False,
! 
!                Loading                => True,
!                Main_Priority          => Default_Main_Priority,
!                Main_CPU               => Default_Main_CPU,
!                Primary_Stack_Count    => 0,
!                Sec_Stack_Count        => 0,
!                Munit_Index            => 0,
!                No_Elab_Code_All       => False,
!                Serial_Number          => 0,
!                Source_Index           => Src_Ind,
!                Unit_File_Name         => Fname,
!                Unit_Name              => Uname_Actual,
!                Version                => Source_Checksum (Src_Ind),
!                OA_Setting             => 'O');
  
              --  Parse the new unit
  
*************** package body Lib.Load is
*** 778,790 ****
  
           else
              if Debug_Flag_L then
!                Write_Str ("  file was not found, load failed");
                 Write_Eol;
              end if;
  
              --  Generate message if unit required
  
              if Required then
                 if Is_Predefined_File_Name (Fname) then
  
                    --  This is a predefined library unit which is not present
--- 841,860 ----
  
           else
              if Debug_Flag_L then
!                if Src_Ind = No_Access_To_Source_File then
!                   Write_Str ("  no read access to file, load failed");
!                else
!                   Write_Str ("  file was not found, load failed");
!                end if;
! 
                 Write_Eol;
              end if;
  
              --  Generate message if unit required
  
              if Required then
+                Get_Name_String (Fname);
+ 
                 if Is_Predefined_File_Name (Fname) then
  
                    --  This is a predefined library unit which is not present
*************** package body Lib.Load is
*** 809,815 ****
  
                 else
                    Error_Msg_File_1 := Fname;
!                   Error_Msg ("file{ not found", Load_Msg_Sloc);
                 end if;
  
                 Write_Dependency_Chain;
--- 879,890 ----
  
                 else
                    Error_Msg_File_1 := Fname;
! 
!                   if Src_Ind = No_Access_To_Source_File then
!                      Error_Msg ("no read access to file{", Load_Msg_Sloc);
!                   else
!                      Error_Msg ("file{ not found", Load_Msg_Sloc);
!                   end if;
                 end if;
  
                 Write_Dependency_Chain;
*************** package body Lib.Load is
*** 879,885 ****
     --  code will have to be generated for it.
  
     procedure Make_Instance_Unit (N : Node_Id; In_Main : Boolean) is
!       Sind : constant Source_File_Index := Source_Index (Main_Unit);
  
     begin
        Units.Increment_Last;
--- 954,960 ----
     --  code will have to be generated for it.
  
     procedure Make_Instance_Unit (N : Node_Id; In_Main : Boolean) is
!       Sind  : constant Source_File_Index := Source_Index (Main_Unit);
  
     begin
        Units.Increment_Last;
*************** package body Lib.Load is
*** 935,941 ****
        Unum  : constant Unit_Number_Type := Get_Cunit_Unit_Number (U);
        Fnum  : constant Unit_Number_Type := Get_Cunit_Unit_Number (From);
     begin
!       if Source_Index (Fnum) /= No_Source_File then
           Units.Table (Unum).Version :=
             Units.Table (Unum).Version
               xor
--- 1010,1016 ----
        Unum  : constant Unit_Number_Type := Get_Cunit_Unit_Number (U);
        Fnum  : constant Unit_Number_Type := Get_Cunit_Unit_Number (From);
     begin
!       if Source_Index (Fnum) > No_Source_File then
           Units.Table (Unum).Version :=
             Units.Table (Unum).Version
               xor
diff -Nrcpad gcc-7.3.0/gcc/ada/lib-load.ads gcc-8.1.0/gcc/ada/lib-load.ads
*** gcc-7.3.0/gcc/ada/lib-load.ads	Wed Jul 30 15:06:40 2014
--- gcc-8.1.0/gcc/ada/lib-load.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/lib-sort.adb gcc-8.1.0/gcc/ada/lib-sort.adb
*** gcc-7.3.0/gcc/ada/lib-sort.adb	Thu Apr  9 15:00:19 2009
--- gcc-8.1.0/gcc/ada/lib-sort.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          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 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/lib-util.adb gcc-8.1.0/gcc/ada/lib-util.adb
*** gcc-7.3.0/gcc/ada/lib-util.adb	Fri Aug  1 09:38:48 2014
--- gcc-8.1.0/gcc/ada/lib-util.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/lib-util.ads gcc-8.1.0/gcc/ada/lib-util.ads
*** gcc-7.3.0/gcc/ada/lib-util.ads	Mon Oct 14 12:58:07 2013
--- gcc-8.1.0/gcc/ada/lib-util.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2013, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-7.3.0/gcc/ada/lib-writ.adb gcc-8.1.0/gcc/ada/lib-writ.adb
*** gcc-7.3.0/gcc/ada/lib-writ.adb	Thu Jan 12 13:18:47 2017
--- gcc-8.1.0/gcc/ada/lib-writ.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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.Writ is
*** 74,102 ****
     begin
        Units.Increment_Last;
        Units.Table (Units.Last) :=
!         (Unit_File_Name    => File_Name (S),
!          Unit_Name         => No_Unit_Name,
!          Expected_Unit     => No_Unit_Name,
!          Source_Index      => S,
!          Cunit             => Empty,
!          Cunit_Entity      => Empty,
!          Dependency_Num    => 0,
!          Dynamic_Elab      => False,
!          Fatal_Error       => None,
!          Generate_Code     => False,
!          Has_RACW          => False,
!          Filler            => False,
!          Ident_String      => Empty,
!          Loading           => False,
!          Main_Priority     => -1,
!          Main_CPU          => -1,
!          Munit_Index       => 0,
!          No_Elab_Code_All  => False,
!          Serial_Number     => 0,
!          Version           => 0,
!          Error_Location    => No_Location,
!          OA_Setting        => 'O',
!          SPARK_Mode_Pragma => Empty);
     end Add_Preprocessing_Dependency;
  
     ------------------------------
--- 74,107 ----
     begin
        Units.Increment_Last;
        Units.Table (Units.Last) :=
!         (Unit_File_Name         => File_Name (S),
!          Unit_Name              => No_Unit_Name,
!          Expected_Unit          => No_Unit_Name,
!          Source_Index           => S,
!          Cunit                  => Empty,
!          Cunit_Entity           => Empty,
!          Dependency_Num         => 0,
!          Dynamic_Elab           => False,
!          Fatal_Error            => None,
!          Generate_Code          => False,
!          Has_RACW               => False,
!          Filler                 => False,
!          Ident_String           => Empty,
!          Is_Predefined_Renaming => False,
!          Is_Internal_Unit       => False,
!          Is_Predefined_Unit     => False,
!          Filler2                => False,
!          Loading                => False,
!          Main_Priority          => -1,
!          Main_CPU               => -1,
!          Munit_Index            => 0,
!          No_Elab_Code_All       => False,
!          Primary_Stack_Count    => 0,
!          Sec_Stack_Count        => 0,
!          Serial_Number          => 0,
!          Version                => 0,
!          Error_Location         => No_Location,
!          OA_Setting             => 'O');
     end Add_Preprocessing_Dependency;
  
     ------------------------------
*************** package body Lib.Writ is
*** 131,160 ****
        System_Fname := File_Name (System_Source_File_Index);
  
        Units.Increment_Last;
!       Units.Table (Units.Last) := (
!         Unit_File_Name    => System_Fname,
!         Unit_Name         => System_Uname,
!         Expected_Unit     => System_Uname,
!         Source_Index      => System_Source_File_Index,
!         Cunit             => Empty,
!         Cunit_Entity      => Empty,
!         Dependency_Num    => 0,
!         Dynamic_Elab      => False,
!         Fatal_Error       => None,
!         Generate_Code     => False,
!         Has_RACW          => False,
!         Filler            => False,
!         Ident_String      => Empty,
!         Loading           => False,
!         Main_Priority     => -1,
!         Main_CPU          => -1,
!         Munit_Index       => 0,
!         No_Elab_Code_All  => False,
!         Serial_Number     => 0,
!         Version           => 0,
!         Error_Location    => No_Location,
!         OA_Setting        => 'O',
!         SPARK_Mode_Pragma => Empty);
  
        --  Parse system.ads so that the checksum is set right. Style checks are
        --  not applied. The Ekind is set to ensure that this reference is always
--- 136,170 ----
        System_Fname := File_Name (System_Source_File_Index);
  
        Units.Increment_Last;
!       Units.Table (Units.Last) :=
!         (Unit_File_Name         => System_Fname,
!          Unit_Name              => System_Uname,
!          Expected_Unit          => System_Uname,
!          Source_Index           => System_Source_File_Index,
!          Cunit                  => Empty,
!          Cunit_Entity           => Empty,
!          Dependency_Num         => 0,
!          Dynamic_Elab           => False,
!          Fatal_Error            => None,
!          Generate_Code          => False,
!          Has_RACW               => False,
!          Filler                 => False,
!          Ident_String           => Empty,
!          Is_Predefined_Renaming => False,
!          Is_Internal_Unit       => True,
!          Is_Predefined_Unit     => True,
!          Filler2                => False,
!          Loading                => False,
!          Main_Priority          => -1,
!          Main_CPU               => -1,
!          Munit_Index            => 0,
!          No_Elab_Code_All       => False,
!          Primary_Stack_Count    => 0,
!          Sec_Stack_Count        => 0,
!          Serial_Number          => 0,
!          Version                => 0,
!          Error_Location         => No_Location,
!          OA_Setting             => 'O');
  
        --  Parse system.ads so that the checksum is set right. Style checks are
        --  not applied. The Ekind is set to ensure that this reference is always
*************** package body Lib.Writ is
*** 205,213 ****
        --  Array of flags to show which units have Elaborate_All_Desirable set
  
        type Yes_No is (Unknown, Yes, No);
!       Implicit_With : array (Units.First .. Last_Unit) of Yes_No;
        --  Indicates if an implicit with has been given for the unit. Yes if
!       --  certainly present, no if certainly absent, unkonwn if not known.
  
        Sdep_Table : Unit_Ref_Table (1 .. Pos (Last_Unit - Units.First + 2));
        --  Sorted table of source dependencies. One extra entry in case we
--- 215,223 ----
        --  Array of flags to show which units have Elaborate_All_Desirable set
  
        type Yes_No is (Unknown, Yes, No);
!       Has_Implicit_With : array (Units.First .. Last_Unit) of Yes_No;
        --  Indicates if an implicit with has been given for the unit. Yes if
!       --  certainly present, No if certainly absent, Unknown if not known.
  
        Sdep_Table : Unit_Ref_Table (1 .. Pos (Last_Unit - Units.First + 2));
        --  Sorted table of source dependencies. One extra entry in case we
*************** package body Lib.Writ is
*** 225,232 ****
        -----------------------
  
        procedure Collect_Withs (Cunit : Node_Id);
!       --  Collect with lines for entries in the context clause of the
!       --  given compilation unit, Cunit.
  
        procedure Update_Tables_From_ALI_File;
        --  Given an up to date ALI file (see Up_To_Date_ALI_file_Exists
--- 235,242 ----
        -----------------------
  
        procedure Collect_Withs (Cunit : Node_Id);
!       --  Collect with lines for entries in the context clause of the given
!       --  compilation unit, Cunit.
  
        procedure Update_Tables_From_ALI_File;
        --  Given an up to date ALI file (see Up_To_Date_ALI_file_Exists
*************** package body Lib.Writ is
*** 251,259 ****
--- 261,307 ----
        -------------------
  
        procedure Collect_Withs (Cunit : Node_Id) is
+          function Is_Implicit_With_Clause (Clause : Node_Id) return Boolean;
+          pragma Inline (Is_Implicit_With_Clause);
+          --  Determine whether a with clause denoted by Clause is implicit
+ 
+          -----------------------------
+          -- Is_Implicit_With_Clause --
+          -----------------------------
+ 
+          function Is_Implicit_With_Clause (Clause : Node_Id) return Boolean is
+          begin
+             --  With clauses created for ancestor units are marked as internal,
+             --  however, they emulate the semantics in Ada RM 10.1.2 (6/2),
+             --  where
+             --
+             --    with A.B;
+             --
+             --  is almost equivalent to
+             --
+             --    with A;
+             --    with A.B;
+             --
+             --  For ALI encoding purposes, they are considered to be explicit.
+             --  Note that the clauses cannot be marked as explicit because they
+             --  will be subjected to various checks related to with clauses and
+             --  possibly cause false positives.
+ 
+             if Parent_With (Clause) then
+                return False;
+ 
+             else
+                return Implicit_With (Clause);
+             end if;
+          end Is_Implicit_With_Clause;
+ 
+          --  Local variables
+ 
           Item : Node_Id;
           Unum : Unit_Number_Type;
  
+       --  Start of processing for Collect_Withs
+ 
        begin
           Item := First (Context_Items (Cunit));
           while Present (Item) loop
*************** package body Lib.Writ is
*** 290,301 ****
                    Set_From_Limited_With (Cunit_Entity (Unum));
                 end if;
  
!                if Implicit_With (Unum) /= Yes then
!                   if Implicit_With_From_Instantiation (Item) then
!                      Implicit_With (Unum) := Yes;
                    else
!                      Implicit_With (Unum) := No;
                    end if;
                 end if;
              end if;
  
--- 338,365 ----
                    Set_From_Limited_With (Cunit_Entity (Unum));
                 end if;
  
!                if Is_Implicit_With_Clause (Item) then
! 
!                   --  A previous explicit with clause withs the unit. Retain
!                   --  this classification, as it reflects the source relations
!                   --  between units.
! 
!                   if Has_Implicit_With (Unum) = No then
!                      null;
! 
!                   --  Otherwise this is either the first time any clause withs
!                   --  the unit, or the unit is already implicitly withed.
! 
                    else
!                      Has_Implicit_With (Unum) := Yes;
                    end if;
+ 
+                --  Otherwise the current with clause is explicit. Such clauses
+                --  take precedence over existing implicit clauses because they
+                --  reflect the source relations between unit.
+ 
+                else
+                   Has_Implicit_With (Unum) := No;
                 end if;
              end if;
  
*************** package body Lib.Writ is
*** 535,541 ****
              Write_Info_Str (" GE");
           end if;
  
!          if not Is_Internal_File_Name (Unit_File_Name (Unit_Num), True) then
              case Identifier_Casing (Source_Index (Unit_Num)) is
                 when All_Lower_Case => Write_Info_Str (" IL");
                 when All_Upper_Case => Write_Info_Str (" IU");
--- 599,605 ----
              Write_Info_Str (" GE");
           end if;
  
!          if not Is_Internal_Unit (Unit_Num) then
              case Identifier_Casing (Source_Index (Unit_Num)) is
                 when All_Lower_Case => Write_Info_Str (" IL");
                 when All_Upper_Case => Write_Info_Str (" IU");
*************** package body Lib.Writ is
*** 563,569 ****
              Elab_All_Flags     (J) := False;
              Elab_Des_Flags     (J) := False;
              Elab_All_Des_Flags (J) := False;
!             Implicit_With      (J) := Unknown;
           end loop;
  
           Collect_Withs (Unode);
--- 627,633 ----
              Elab_All_Flags     (J) := False;
              Elab_Des_Flags     (J) := False;
              Elab_All_Des_Flags (J) := False;
!             Has_Implicit_With  (J) := Unknown;
           end loop;
  
           Collect_Withs (Unode);
*************** package body Lib.Writ is
*** 610,615 ****
--- 674,692 ----
  
           Write_With_Lines;
  
+          --  Generate task stack lines
+ 
+          if Primary_Stack_Count (Unit_Num) > 0
+            or else Sec_Stack_Count (Unit_Num) > 0
+          then
+             Write_Info_Initiate ('T');
+             Write_Info_Char (' ');
+             Write_Info_Int (Primary_Stack_Count (Unit_Num));
+             Write_Info_Char (' ');
+             Write_Info_Int (Sec_Stack_Count (Unit_Num));
+             Write_Info_EOL;
+          end if;
+ 
           --  Generate the linker option lines
  
           for J in 1 .. Linker_Option_Lines.Last loop
*************** package body Lib.Writ is
*** 620,627 ****
              --  parameters (see Lib_Writ spec for an explanation).
  
              if Is_Generic_Unit (Cunit_Entity (Main_Unit))
!               and then
!                 Is_Predefined_File_Name (Unit_File_Name (Current_Sem_Unit))
                and then Linker_Option_Lines.Table (J).Unit = Unit_Num
              then
                 Set_Standard_Error;
--- 697,703 ----
              --  parameters (see Lib_Writ spec for an explanation).
  
              if Is_Generic_Unit (Cunit_Entity (Main_Unit))
!               and then Is_Predefined_Unit (Current_Sem_Unit)
                and then Linker_Option_Lines.Table (J).Unit = Unit_Num
              then
                 Set_Standard_Error;
*************** package body Lib.Writ is
*** 672,678 ****
                    Write_Info_Initiate ('N');
                    Write_Info_Char (' ');
  
!                   case Pragma_Name_Unmapped (N) is
                       when Name_Annotate =>
                          C := 'A';
                       when Name_Comment =>
--- 748,754 ----
                    Write_Info_Initiate ('N');
                    Write_Info_Char (' ');
  
!                   case Pragma_Name (N) is
                       when Name_Annotate =>
                          C := 'A';
                       when Name_Comment =>
*************** package body Lib.Writ is
*** 831,844 ****
              Uname := Units.Table (Unum).Unit_Name;
              Fname := Units.Table (Unum).Unit_File_Name;
  
!             if Implicit_With (Unum) = Yes then
!                Write_Info_Initiate ('Z');
  
!             elsif Ekind (Cunit_Entity (Unum)) = E_Package
                and then From_Limited_With (Cunit_Entity (Unum))
              then
                 Write_Info_Initiate ('Y');
  
              else
                 Write_Info_Initiate ('W');
              end if;
--- 907,923 ----
              Uname := Units.Table (Unum).Unit_Name;
              Fname := Units.Table (Unum).Unit_File_Name;
  
!             --  Limited with clauses must be processed first because they are
!             --  the most specific among the three kinds.
  
!             if Ekind (Cunit_Entity (Unum)) = E_Package
                and then From_Limited_With (Cunit_Entity (Unum))
              then
                 Write_Info_Initiate ('Y');
  
+             elsif Has_Implicit_With (Unum) = Yes then
+                Write_Info_Initiate ('Z');
+ 
              else
                 Write_Info_Initiate ('W');
              end if;
*************** package body Lib.Writ is
*** 860,866 ****
              if not ((Nkind (Unit (Cunit)) in N_Generic_Declaration
                        or else
                       Nkind (Unit (Cunit)) in N_Generic_Renaming_Declaration)
!                     and then Generic_May_Lack_ALI (Fname))
  
                --  In SPARK mode, always generate the dependencies on ALI
                --  files, which are required to compute frame conditions
--- 939,945 ----
              if not ((Nkind (Unit (Cunit)) in N_Generic_Declaration
                        or else
                       Nkind (Unit (Cunit)) in N_Generic_Renaming_Declaration)
!                     and then Generic_May_Lack_ALI (Unum))
  
                --  In SPARK mode, always generate the dependencies on ALI
                --  files, which are required to compute frame conditions
*************** package body Lib.Writ is
*** 1162,1170 ****
           Write_Info_Str (" DB");
        end if;
  
!       if Tasking_Used
!         and then not Is_Predefined_File_Name (Unit_File_Name (Main_Unit))
!       then
           if Locking_Policy /= ' ' then
              Write_Info_Str  (" L");
              Write_Info_Char (Locking_Policy);
--- 1241,1247 ----
           Write_Info_Str (" DB");
        end if;
  
!       if Tasking_Used and then not Is_Predefined_Unit (Main_Unit) then
           if Locking_Policy /= ' ' then
              Write_Info_Str  (" L");
              Write_Info_Char (Locking_Policy);
*************** package body Lib.Writ is
*** 1191,1196 ****
--- 1268,1277 ----
           Write_Info_Char (Partition_Elaboration_Policy);
        end if;
  
+       if No_Component_Reordering_Config then
+          Write_Info_Str (" NC");
+       end if;
+ 
        if not Object then
           Write_Info_Str (" NO");
        end if;
*************** package body Lib.Writ is
*** 1457,1463 ****
  
              --  Normal case of a unit entry with a source index
  
!             if Sind /= No_Source_File then
                 Fname := File_Name (Sind);
  
                 --  Ensure that on platforms where the file names are not case
--- 1538,1544 ----
  
              --  Normal case of a unit entry with a source index
  
!             if Sind > No_Source_File then
                 Fname := File_Name (Sind);
  
                 --  Ensure that on platforms where the file names are not case
*************** package body Lib.Writ is
*** 1543,1556 ****
           SCO_Output;
        end if;
  
-       --  Output SPARK cross-reference information if needed
- 
-       if Opt.Xref_Active and then GNATprove_Mode then
-          SPARK_Specific.Collect_SPARK_Xrefs (Sdep_Table => Sdep_Table,
-                                              Num_Sdep   => Num_Sdep);
-          SPARK_Specific.Output_SPARK_Xrefs;
-       end if;
- 
        --  Output final blank line and we are done. This final blank line is
        --  probably junk, but we don't feel like making an incompatible change.
  
--- 1624,1629 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/lib-writ.ads gcc-8.1.0/gcc/ada/lib-writ.ads
*** gcc-7.3.0/gcc/ada/lib-writ.ads	Thu Jan 19 11:55:21 2017
--- gcc-8.1.0/gcc/ada/lib-writ.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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.Writ is
*** 670,683 ****
     --      binder do the consistency check, but not include the unit in the
     --      partition closure (unless it is properly With'ed somewhere).
  
     --  -----------------------
     --  -- L  Linker_Options --
     --  -----------------------
  
!    --  Following the W lines (if any, or the U line if not), are an optional
!    --  series of lines that indicates the usage of the pragma Linker_Options in
!    --  the associated unit. For each appearance of a pragma Linker_Options (or
!    --  Link_With) in the unit, a line is present with the form:
  
     --    L "string"
  
--- 670,702 ----
     --      binder do the consistency check, but not include the unit in the
     --      partition closure (unless it is properly With'ed somewhere).
  
+    --  --------------------
+    --  -- T  Task Stacks --
+    --  --------------------
+ 
+    --  Following the W lines (if any, or the U line if not), is an optional
+    --  line that identifies the number of default-sized primary and secondary
+    --  stacks that the binder needs to create for the tasks declared within the
+    --  unit. For each compilation unit, a line is present in the form:
+ 
+    --    T primary-stack-quantity secondary-stack-quantity
+ 
+    --     The first parameter of T defines the number of task objects declared
+    --     in the unit that have no Storage_Size specified. The second parameter
+    --     defines the number of task objects declared in the unit that have no
+    --     Secondary_Stack_Size specified. These values are non-zero only if
+    --     the restrictions No_Implicit_Heap_Allocations or
+    --     No_Implicit_Task_Allocations are active.
+ 
     --  -----------------------
     --  -- L  Linker_Options --
     --  -----------------------
  
!    --  Following the T and W lines (if any, or the U line if not), are
!    --  an optional series of lines that indicates the usage of the pragma
!    --  Linker_Options in the associated unit. For each appearance of a pragma
!    --  Linker_Options (or Link_With) in the unit, a line is present with the
!    --  form:
  
     --    L "string"
  
diff -Nrcpad gcc-7.3.0/gcc/ada/lib-xref-spark_specific.adb gcc-8.1.0/gcc/ada/lib-xref-spark_specific.adb
*** gcc-7.3.0/gcc/ada/lib-xref-spark_specific.adb	Thu Jan 19 13:02:30 2017
--- gcc-8.1.0/gcc/ada/lib-xref-spark_specific.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2011-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or 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-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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;
*** 27,34 ****
  with Nmake;       use Nmake;
  with SPARK_Xrefs; use SPARK_Xrefs;
  
- with GNAT.HTable;
- 
  separate (Lib.Xref)
  package body SPARK_Specific is
  
--- 27,32 ----
*************** package body SPARK_Specific is
*** 59,74 ****
        's'    => True,
        others => False);
  
-    type Entity_Hashed_Range is range 0 .. 255;
-    --  Size of hash table headers
- 
     ---------------------
     -- Local Variables --
     ---------------------
  
-    Heap : Entity_Id := Empty;
-    --  A special entity which denotes the heap object
- 
     package Drefs is new Table.Table (
       Table_Component_Type => Xref_Entry,
       Table_Index_Type     => Xref_Entry_Number,
--- 57,66 ----
*************** package body SPARK_Specific is
*** 81,327 ****
     --  "Heap". These references are added to the regular references when
     --  computing SPARK cross-references.
  
!    -----------------------
!    -- Local Subprograms --
!    -----------------------
! 
!    procedure Add_SPARK_File (Uspec, Ubody : Unit_Number_Type; Dspec : Nat);
!    --  Add file and corresponding scopes for unit to the tables
!    --  SPARK_File_Table and SPARK_Scope_Table. When two units are present
!    --  for the same compilation unit, as it happens for library-level
!    --  instantiations of generics, then Ubody is the number of the body
!    --  unit; otherwise it is No_Unit.
! 
!    procedure Add_SPARK_Xrefs;
!    --  Filter table Xrefs to add all references used in SPARK to the table
!    --  SPARK_Xref_Table.
! 
!    function Entity_Hash (E : Entity_Id) return Entity_Hashed_Range;
!    --  Hash function for hash table
! 
!    --------------------
!    -- Add_SPARK_File --
!    --------------------
! 
!    procedure Add_SPARK_File (Uspec, Ubody : Unit_Number_Type; Dspec : Nat) is
!       File : constant Source_File_Index := Source_Index (Uspec);
!       From : constant Scope_Index       := SPARK_Scope_Table.Last + 1;
! 
!       Scope_Id : Pos := 1;
! 
!       procedure Add_SPARK_Scope (N : Node_Id);
!       --  Add scope N to the table SPARK_Scope_Table
! 
!       procedure Detect_And_Add_SPARK_Scope (N : Node_Id);
!       --  Call Add_SPARK_Scope on scopes
! 
!       ---------------------
!       -- Add_SPARK_Scope --
!       ---------------------
! 
!       procedure Add_SPARK_Scope (N : Node_Id) is
!          E   : constant Entity_Id  := Defining_Entity (N);
!          Loc : constant Source_Ptr := Sloc (E);
! 
!          --  The character describing the kind of scope is chosen to be the
!          --  same as the one describing the corresponding entity in cross
!          --  references, see Xref_Entity_Letters in lib-xrefs.ads
! 
!          Typ : Character;
! 
!       begin
!          --  Ignore scopes without a proper location
! 
!          if Sloc (N) = No_Location then
!             return;
!          end if;
! 
!          case Ekind (E) is
!             when E_Entry
!                | E_Entry_Family
!                | E_Generic_Function
!                | E_Generic_Package
!                | E_Generic_Procedure
!                | E_Package
!                | E_Protected_Type
!                | E_Task_Type
!             =>
!                Typ := Xref_Entity_Letters (Ekind (E));
! 
!             when E_Function
!                | E_Procedure
!             =>
!                --  In SPARK we need to distinguish protected functions and
!                --  procedures from ordinary subprograms, but there are no
!                --  special Xref letters for them. Since this distiction is
!                --  only needed to detect protected calls, we pretend that
!                --  such calls are entry calls.
! 
!                if Ekind (Scope (E)) = E_Protected_Type then
!                   Typ := Xref_Entity_Letters (E_Entry);
!                else
!                   Typ := Xref_Entity_Letters (Ekind (E));
!                end if;
! 
!             when E_Package_Body
!                | E_Protected_Body
!                | E_Subprogram_Body
!                | E_Task_Body
!             =>
!                Typ := Xref_Entity_Letters (Ekind (Unique_Entity (E)));
! 
!             when E_Void =>
! 
!                --  Compilation of prj-attr.adb with -gnatn creates a node with
!                --  entity E_Void for the package defined at a-charac.ads16:13.
!                --  ??? TBD
! 
!                return;
! 
!             when others =>
!                raise Program_Error;
!          end case;
! 
!          --  File_Num and Scope_Num are filled later. From_Xref and To_Xref
!          --  are filled even later, but are initialized to represent an empty
!          --  range.
! 
!          SPARK_Scope_Table.Append
!            ((Scope_Name     => new String'(Unique_Name (E)),
!              File_Num       => Dspec,
!              Scope_Num      => Scope_Id,
!              Spec_File_Num  => 0,
!              Spec_Scope_Num => 0,
!              Line           => Nat (Get_Logical_Line_Number (Loc)),
!              Stype          => Typ,
!              Col            => Nat (Get_Column_Number (Loc)),
!              From_Xref      => 1,
!              To_Xref        => 0,
!              Scope_Entity   => E));
! 
!          Scope_Id := Scope_Id + 1;
!       end Add_SPARK_Scope;
! 
!       --------------------------------
!       -- Detect_And_Add_SPARK_Scope --
!       --------------------------------
! 
!       procedure Detect_And_Add_SPARK_Scope (N : Node_Id) is
!       begin
!          --  Entries
! 
!          if Nkind_In (N, N_Entry_Body, N_Entry_Declaration)
! 
!            --  Packages
! 
!            or else Nkind_In (N, N_Package_Body,
!                                 N_Package_Body_Stub,
!                                 N_Package_Declaration)
!            --  Protected units
! 
!            or else Nkind_In (N, N_Protected_Body,
!                                 N_Protected_Body_Stub,
!                                 N_Protected_Type_Declaration)
! 
!            --  Subprograms
! 
!            or else Nkind_In (N, N_Subprogram_Body,
!                                 N_Subprogram_Body_Stub,
!                                 N_Subprogram_Declaration)
! 
!            --  Task units
! 
!            or else Nkind_In (N, N_Task_Body,
!                                 N_Task_Body_Stub,
!                                 N_Task_Type_Declaration)
!          then
!             Add_SPARK_Scope (N);
!          end if;
!       end Detect_And_Add_SPARK_Scope;
! 
!       procedure Traverse_Scopes is new
!         Traverse_Compilation_Unit (Detect_And_Add_SPARK_Scope);
! 
!       --  Local variables
! 
!       File_Name      : String_Ptr;
!       Unit_File_Name : String_Ptr;
! 
!    --  Start of processing for Add_SPARK_File
! 
!    begin
!       --  Source file could be inexistant as a result of an error, if option
!       --  gnatQ is used.
! 
!       if File = No_Source_File then
!          return;
!       end if;
! 
!       --  Subunits are traversed as part of the top-level unit to which they
!       --  belong.
! 
!       if Nkind (Unit (Cunit (Uspec))) = N_Subunit then
!          return;
!       end if;
! 
!       Traverse_Scopes (CU => Cunit (Uspec), Inside_Stubs => True);
! 
!       --  When two units are present for the same compilation unit, as it
!       --  happens for library-level instantiations of generics, then add all
!       --  scopes to the same SPARK file.
! 
!       if Ubody /= No_Unit then
!          Traverse_Scopes (CU => Cunit (Ubody), Inside_Stubs => True);
!       end if;
! 
!       --  Make entry for new file in file table
! 
!       Get_Name_String (Reference_Name (File));
!       File_Name := new String'(Name_Buffer (1 .. Name_Len));
! 
!       --  For subunits, also retrieve the file name of the unit. Only do so if
!       --  unit has an associated compilation unit.
! 
!       if Present (Cunit (Unit (File)))
!         and then Nkind (Unit (Cunit (Unit (File)))) = N_Subunit
!       then
!          Get_Name_String (Reference_Name (Main_Source_File));
!          Unit_File_Name := new String'(Name_Buffer (1 .. Name_Len));
!       else
!          Unit_File_Name := null;
!       end if;
! 
!       SPARK_File_Table.Append (
!         (File_Name      => File_Name,
!          Unit_File_Name => Unit_File_Name,
!          File_Num       => Dspec,
!          From_Scope     => From,
!          To_Scope       => SPARK_Scope_Table.Last));
!    end Add_SPARK_File;
! 
!    ---------------------
!    -- Add_SPARK_Xrefs --
!    ---------------------
! 
!    procedure Add_SPARK_Xrefs is
!       function Entity_Of_Scope (S : Scope_Index) return Entity_Id;
!       --  Return the entity which maps to the input scope index
! 
!       function Get_Entity_Type (E : Entity_Id) return Character;
!       --  Return a character representing the type of entity
! 
!       function Get_Scope_Num (N : Entity_Id) return Nat;
!       --  Return the scope number associated to entity N
  
!       function Is_Constant_Object_Without_Variable_Input
!         (E : Entity_Id) return Boolean;
!       --  Return True if E is known to have no variable input, as defined in
!       --  SPARK RM.
  
!       function Is_Future_Scope_Entity
!         (E : Entity_Id;
!          S : Scope_Index) return Boolean;
!       --  Check whether entity E is in SPARK_Scope_Table at index S or higher
  
        function Is_SPARK_Reference
          (E   : Entity_Id;
--- 73,85 ----
     --  "Heap". These references are added to the regular references when
     --  computing SPARK cross-references.
  
!    -------------------------
!    -- Iterate_SPARK_Xrefs --
!    -------------------------
  
!    procedure Iterate_SPARK_Xrefs is
  
!       procedure Add_SPARK_Xref (Index : Int; Xref : Xref_Entry);
  
        function Is_SPARK_Reference
          (E   : Entity_Id;
*************** package body SPARK_Specific is
*** 333,513 ****
        --  Return whether the entity or reference scope meets requirements for
        --  being a SPARK scope.
  
!       function Lt (Op1 : Natural; Op2 : Natural) return Boolean;
!       --  Comparison function for Sort call
! 
!       procedure Move (From : Natural; To : Natural);
!       --  Move procedure for Sort call
! 
!       procedure Set_Scope_Num (N : Entity_Id; Num : Nat);
!       --  Associate entity N to scope number Num
! 
!       procedure Update_Scope_Range
!         (S    : Scope_Index;
!          From : Xref_Index;
!          To   : Xref_Index);
!       --  Update the scope which maps to S with the new range From .. To
! 
!       package Sorting is new GNAT.Heap_Sort_G (Move, Lt);
! 
!       No_Scope : constant Nat := 0;
!       --  Initial scope counter
! 
!       type Scope_Rec is record
!          Num    : Nat;
!          Entity : Entity_Id;
!       end record;
!       --  Type used to relate an entity and a scope number
! 
!       package Scopes is new GNAT.HTable.Simple_HTable
!         (Header_Num => Entity_Hashed_Range,
!          Element    => Scope_Rec,
!          No_Element => (Num => No_Scope, Entity => Empty),
!          Key        => Entity_Id,
!          Hash       => Entity_Hash,
!          Equal      => "=");
!       --  Package used to build a correspondence between entities and scope
!       --  numbers used in SPARK cross references.
! 
!       Nrefs : Nat := Xrefs.Last;
!       --  Number of references in table. This value may get reset (reduced)
!       --  when we eliminate duplicate reference entries as well as references
!       --  not suitable for local cross-references.
! 
!       Nrefs_Add : constant Nat := Drefs.Last;
!       --  Number of additional references which correspond to dereferences in
!       --  the source code.
! 
!       Rnums : array (0 .. Nrefs + Nrefs_Add) of Nat;
!       --  This array contains numbers of references in the Xrefs table. This
!       --  list is sorted in output order. The extra 0'th entry is convenient
!       --  for the call to sort. When we sort the table, we move the indices in
!       --  Rnums around, but we do not move the original table entries.
! 
!       ---------------------
!       -- Entity_Of_Scope --
!       ---------------------
! 
!       function Entity_Of_Scope (S : Scope_Index) return Entity_Id is
!       begin
!          return SPARK_Scope_Table.Table (S).Scope_Entity;
!       end Entity_Of_Scope;
! 
!       ---------------------
!       -- Get_Entity_Type --
!       ---------------------
! 
!       function Get_Entity_Type (E : Entity_Id) return Character is
!       begin
!          case Ekind (E) is
!             when E_Out_Parameter    => return '<';
!             when E_In_Out_Parameter => return '=';
!             when E_In_Parameter     => return '>';
!             when others             => return '*';
!          end case;
!       end Get_Entity_Type;
! 
!       -------------------
!       -- Get_Scope_Num --
!       -------------------
! 
!       function Get_Scope_Num (N : Entity_Id) return Nat is
!       begin
!          return Scopes.Get (N).Num;
!       end Get_Scope_Num;
! 
!       -----------------------------------------------
!       -- Is_Constant_Object_Without_Variable_Input --
!       -----------------------------------------------
! 
!       function Is_Constant_Object_Without_Variable_Input
!         (E : Entity_Id) return Boolean
!       is
!          Result : Boolean;
! 
!       begin
!          case Ekind (E) is
! 
!             --  A constant is known to have no variable input if its
!             --  initializing expression is static (a value which is
!             --  compile-time-known is not guaranteed to have no variable input
!             --  as defined in the SPARK RM). Otherwise, the constant may or not
!             --  have variable input.
! 
!             when E_Constant =>
!                declare
!                   Decl : Node_Id;
!                begin
!                   if Present (Full_View (E)) then
!                      Decl := Parent (Full_View (E));
!                   else
!                      Decl := Parent (E);
!                   end if;
! 
!                   if Is_Imported (E) then
!                      Result := False;
!                   else
!                      pragma Assert (Present (Expression (Decl)));
!                      Result := Is_Static_Expression (Expression (Decl));
!                   end if;
!                end;
! 
!             when E_In_Parameter
!                | E_Loop_Parameter
!             =>
!                Result := True;
! 
!             when others =>
!                Result := False;
!          end case;
! 
!          return Result;
!       end Is_Constant_Object_Without_Variable_Input;
! 
!       ----------------------------
!       -- Is_Future_Scope_Entity --
!       ----------------------------
! 
!       function Is_Future_Scope_Entity
!         (E : Entity_Id;
!          S : Scope_Index) return Boolean
!       is
!          function Is_Past_Scope_Entity return Boolean;
!          --  Check whether entity E is in SPARK_Scope_Table at index strictly
!          --  lower than S.
! 
!          --------------------------
!          -- Is_Past_Scope_Entity --
!          --------------------------
! 
!          function Is_Past_Scope_Entity return Boolean is
!          begin
!             for Index in SPARK_Scope_Table.First .. S - 1 loop
!                if SPARK_Scope_Table.Table (Index).Scope_Entity = E then
!                   return True;
!                end if;
!             end loop;
! 
!             return False;
!          end Is_Past_Scope_Entity;
! 
!       --  Start of processing for Is_Future_Scope_Entity
  
        begin
!          for Index in S .. SPARK_Scope_Table.Last loop
!             if SPARK_Scope_Table.Table (Index).Scope_Entity = E then
!                return True;
!             end if;
!          end loop;
! 
!          --  If this assertion fails, this means that the scope which we are
!          --  looking for has been treated already, which reveals a problem in
!          --  the order of cross-references.
  
!          pragma Assert (not Is_Past_Scope_Entity);
  
!          return False;
!       end Is_Future_Scope_Entity;
  
        ------------------------
        -- Is_SPARK_Reference --
--- 91,119 ----
        --  Return whether the entity or reference scope meets requirements for
        --  being a SPARK scope.
  
!       --------------------
!       -- Add_SPARK_Xref --
!       --------------------
  
+       procedure Add_SPARK_Xref (Index : Int; Xref : Xref_Entry) is
+          Ref : Xref_Key renames Xref.Key;
        begin
!          --  Eliminate entries not appropriate for SPARK
  
!          if SPARK_Entities (Ekind (Ref.Ent))
!            and then SPARK_References (Ref.Typ)
!            and then Is_SPARK_Scope (Ref.Ent_Scope)
!            and then Is_SPARK_Scope (Ref.Ref_Scope)
!            and then Is_SPARK_Reference (Ref.Ent, Ref.Typ)
!          then
!             Process
!               (Index,
!                (Entity    => Ref.Ent,
!                 Ref_Scope => Ref.Ref_Scope,
!                 Rtype     => Ref.Typ));
!          end if;
  
!       end Add_SPARK_Xref;
  
        ------------------------
        -- Is_SPARK_Reference --
*************** package body SPARK_Specific is
*** 538,1055 ****
        --------------------
  
        function Is_SPARK_Scope (E : Entity_Id) return Boolean is
        begin
           return Present (E)
             and then not Is_Generic_Unit (E)
!            and then Renamed_Entity (E) = Empty
!            and then Get_Scope_Num (E) /= No_Scope;
        end Is_SPARK_Scope;
  
-       --------
-       -- Lt --
-       --------
- 
-       function Lt (Op1 : Natural; Op2 : Natural) return Boolean is
-          T1 : constant Xref_Entry := Xrefs.Table (Rnums (Nat (Op1)));
-          T2 : constant Xref_Entry := Xrefs.Table (Rnums (Nat (Op2)));
- 
-       begin
-          --  First test: if entity is in different unit, sort by unit. Note:
-          --  that we use Ent_Scope_File rather than Eun, as Eun may refer to
-          --  the file where the generic scope is defined, which may differ from
-          --  the file where the enclosing scope is defined. It is the latter
-          --  which matters for a correct order here.
- 
-          if T1.Ent_Scope_File /= T2.Ent_Scope_File then
-             return Dependency_Num (T1.Ent_Scope_File) <
-                    Dependency_Num (T2.Ent_Scope_File);
- 
-          --  Second test: within same unit, sort by location of the scope of
-          --  the entity definition.
- 
-          elsif Get_Scope_Num (T1.Key.Ent_Scope) /=
-                Get_Scope_Num (T2.Key.Ent_Scope)
-          then
-             return Get_Scope_Num (T1.Key.Ent_Scope) <
-                    Get_Scope_Num (T2.Key.Ent_Scope);
- 
-          --  Third test: within same unit and scope, sort by location of
-          --  entity definition.
- 
-          elsif T1.Def /= T2.Def then
-             return T1.Def < T2.Def;
- 
-          else
-             --  Both entities must be equal at this point
- 
-             pragma Assert (T1.Key.Ent = T2.Key.Ent);
-             pragma Assert (T1.Key.Ent_Scope = T2.Key.Ent_Scope);
-             pragma Assert (T1.Ent_Scope_File = T2.Ent_Scope_File);
- 
-             --  Fourth test: if reference is in same unit as entity definition,
-             --  sort first.
- 
-             if T1.Key.Lun /= T2.Key.Lun
-               and then T1.Ent_Scope_File = T1.Key.Lun
-             then
-                return True;
- 
-             elsif T1.Key.Lun /= T2.Key.Lun
-               and then T2.Ent_Scope_File = T2.Key.Lun
-             then
-                return False;
- 
-             --  Fifth test: if reference is in same unit and same scope as
-             --  entity definition, sort first.
- 
-             elsif T1.Ent_Scope_File = T1.Key.Lun
-               and then T1.Key.Ref_Scope /= T2.Key.Ref_Scope
-               and then T1.Key.Ent_Scope = T1.Key.Ref_Scope
-             then
-                return True;
- 
-             elsif T2.Ent_Scope_File = T2.Key.Lun
-               and then T1.Key.Ref_Scope /= T2.Key.Ref_Scope
-               and then T2.Key.Ent_Scope = T2.Key.Ref_Scope
-             then
-                return False;
- 
-             --  Sixth test: for same entity, sort by reference location unit
- 
-             elsif T1.Key.Lun /= T2.Key.Lun then
-                return Dependency_Num (T1.Key.Lun) <
-                       Dependency_Num (T2.Key.Lun);
- 
-             --  Seventh test: for same entity, sort by reference location scope
- 
-             elsif Get_Scope_Num (T1.Key.Ref_Scope) /=
-                   Get_Scope_Num (T2.Key.Ref_Scope)
-             then
-                return Get_Scope_Num (T1.Key.Ref_Scope) <
-                       Get_Scope_Num (T2.Key.Ref_Scope);
- 
-             --  Eighth test: order of location within referencing unit
- 
-             elsif T1.Key.Loc /= T2.Key.Loc then
-                return T1.Key.Loc < T2.Key.Loc;
- 
-             --  Finally, for two locations at the same address prefer the one
-             --  that does NOT have the type 'r', so that a modification or
-             --  extension takes preference, when there are more than one
-             --  reference at the same location. As a result, in the case of
-             --  entities that are in-out actuals, the read reference follows
-             --  the modify reference.
- 
-             else
-                return T2.Key.Typ = 'r';
-             end if;
-          end if;
-       end Lt;
- 
-       ----------
-       -- Move --
-       ----------
- 
-       procedure Move (From : Natural; To : Natural) is
-       begin
-          Rnums (Nat (To)) := Rnums (Nat (From));
-       end Move;
- 
-       -------------------
-       -- Set_Scope_Num --
-       -------------------
- 
-       procedure Set_Scope_Num (N : Entity_Id; Num : Nat) is
-       begin
-          Scopes.Set (K => N, E => Scope_Rec'(Num => Num, Entity => N));
-       end Set_Scope_Num;
- 
-       ------------------------
-       -- Update_Scope_Range --
-       ------------------------
- 
-       procedure Update_Scope_Range
-         (S    : Scope_Index;
-          From : Xref_Index;
-          To   : Xref_Index)
-       is
-       begin
-          SPARK_Scope_Table.Table (S).From_Xref := From;
-          SPARK_Scope_Table.Table (S).To_Xref := To;
-       end Update_Scope_Range;
- 
-       --  Local variables
- 
-       Col        : Nat;
-       From_Index : Xref_Index;
-       Line       : Nat;
-       Prev_Loc   : Source_Ptr;
-       Prev_Typ   : Character;
-       Ref_Count  : Nat;
-       Ref_Id     : Entity_Id;
-       Ref_Name   : String_Ptr;
-       Scope_Id   : Scope_Index;
- 
     --  Start of processing for Add_SPARK_Xrefs
  
     begin
!       for Index in SPARK_Scope_Table.First .. SPARK_Scope_Table.Last loop
!          declare
!             S : SPARK_Scope_Record renames SPARK_Scope_Table.Table (Index);
!          begin
!             Set_Scope_Num (S.Scope_Entity, S.Scope_Num);
!          end;
!       end loop;
! 
!       declare
!          Drefs_Table : Drefs.Table_Type
!                          renames Drefs.Table (Drefs.First .. Drefs.Last);
!       begin
!          Xrefs.Append_All (Xrefs.Table_Type (Drefs_Table));
!          Nrefs := Nrefs + Drefs_Table'Length;
!       end;
! 
!       --  Capture the definition Sloc values. As in the case of normal cross
!       --  references, we have to wait until now to get the correct value.
! 
!       for Index in 1 .. Nrefs loop
!          Xrefs.Table (Index).Def := Sloc (Xrefs.Table (Index).Key.Ent);
!       end loop;
! 
!       --  Eliminate entries not appropriate for SPARK. Done prior to sorting
!       --  cross-references, as it discards useless references which do not have
!       --  a proper format for the comparison function (like no location).
! 
!       Ref_Count := Nrefs;
!       Nrefs     := 0;
! 
!       for Index in 1 .. Ref_Count loop
!          declare
!             Ref : Xref_Key renames Xrefs.Table (Index).Key;
! 
!          begin
!             if SPARK_Entities (Ekind (Ref.Ent))
!               and then SPARK_References (Ref.Typ)
!               and then Is_SPARK_Scope (Ref.Ent_Scope)
!               and then Is_SPARK_Scope (Ref.Ref_Scope)
!               and then Is_SPARK_Reference (Ref.Ent, Ref.Typ)
! 
!               --  Discard references from unknown scopes, e.g. generic scopes
! 
!               and then Get_Scope_Num (Ref.Ent_Scope) /= No_Scope
!               and then Get_Scope_Num (Ref.Ref_Scope) /= No_Scope
!             then
!                Nrefs         := Nrefs + 1;
!                Rnums (Nrefs) := Index;
!             end if;
!          end;
!       end loop;
! 
!       --  Sort the references
! 
!       Sorting.Sort (Integer (Nrefs));
! 
!       --  Eliminate duplicate entries
! 
!       --  We need this test for Ref_Count because if we force ALI file
!       --  generation in case of errors detected, it may be the case that
!       --  Nrefs is 0, so we should not reset it here.
! 
!       if Nrefs >= 2 then
!          Ref_Count := Nrefs;
!          Nrefs     := 1;
! 
!          for Index in 2 .. Ref_Count loop
!             if Xrefs.Table (Rnums (Index)) /= Xrefs.Table (Rnums (Nrefs)) then
!                Nrefs := Nrefs + 1;
!                Rnums (Nrefs) := Rnums (Index);
!             end if;
!          end loop;
!       end if;
! 
!       --  Eliminate the reference if it is at the same location as the previous
!       --  one, unless it is a read-reference indicating that the entity is an
!       --  in-out actual in a call.
! 
!       Ref_Count := Nrefs;
!       Nrefs     := 0;
!       Prev_Loc  := No_Location;
!       Prev_Typ  := 'm';
! 
!       for Index in 1 .. Ref_Count loop
!          declare
!             Ref : Xref_Key renames Xrefs.Table (Rnums (Index)).Key;
! 
!          begin
!             if Ref.Loc /= Prev_Loc
!               or else (Prev_Typ = 'm' and then Ref.Typ = 'r')
!             then
!                Prev_Loc      := Ref.Loc;
!                Prev_Typ      := Ref.Typ;
!                Nrefs         := Nrefs + 1;
!                Rnums (Nrefs) := Rnums (Index);
!             end if;
!          end;
!       end loop;
! 
!       --  The two steps have eliminated all references, nothing to do
! 
!       if SPARK_Scope_Table.Last = 0 then
!          return;
!       end if;
! 
!       Ref_Id     := Empty;
!       Scope_Id   := 1;
!       From_Index := 1;
! 
!       --  Loop to output references
! 
!       for Refno in 1 .. Nrefs loop
!          declare
!             Ref_Entry : Xref_Entry renames Xrefs.Table (Rnums (Refno));
!             Ref       : Xref_Key   renames Ref_Entry.Key;
!             Typ       : Character;
! 
!          begin
!             --  If this assertion fails, the scope which we are looking for is
!             --  not in SPARK scope table, which reveals either a problem in the
!             --  construction of the scope table, or an erroneous scope for the
!             --  current cross-reference.
! 
!             pragma Assert (Is_Future_Scope_Entity (Ref.Ent_Scope, Scope_Id));
! 
!             --  Update the range of cross references to which the current scope
!             --  refers to. This may be the empty range only for the first scope
!             --  considered.
! 
!             if Ref.Ent_Scope /= Entity_Of_Scope (Scope_Id) then
!                Update_Scope_Range
!                  (S    => Scope_Id,
!                   From => From_Index,
!                   To   => SPARK_Xref_Table.Last);
! 
!                From_Index := SPARK_Xref_Table.Last + 1;
!             end if;
! 
!             while Ref.Ent_Scope /= Entity_Of_Scope (Scope_Id) loop
!                Scope_Id := Scope_Id + 1;
!                pragma Assert (Scope_Id <= SPARK_Scope_Table.Last);
!             end loop;
! 
!             if Ref.Ent /= Ref_Id then
!                Ref_Name := new String'(Unique_Name (Ref.Ent));
!             end if;
! 
!             if Ref.Ent = Heap then
!                Line := 0;
!                Col  := 0;
!             else
!                Line := Nat (Get_Logical_Line_Number (Ref_Entry.Def));
!                Col  := Nat (Get_Column_Number (Ref_Entry.Def));
!             end if;
! 
!             --  References to constant objects without variable inputs (see
!             --  SPARK RM 3.3.1) are considered specially in SPARK section,
!             --  because these will be translated as constants in the
!             --  intermediate language for formal verification, and should
!             --  therefore never appear in frame conditions. Other constants may
!             --  later be treated the same, up to GNATprove to decide based on
!             --  its flow analysis.
! 
!             if Is_Constant_Object_Without_Variable_Input (Ref.Ent) then
!                Typ := 'c';
!             else
!                Typ := Ref.Typ;
!             end if;
  
!             SPARK_Xref_Table.Append (
!               (Entity_Name => Ref_Name,
!                Entity_Line => Line,
!                Etype       => Get_Entity_Type (Ref.Ent),
!                Entity_Col  => Col,
!                File_Num    => Dependency_Num (Ref.Lun),
!                Scope_Num   => Get_Scope_Num (Ref.Ref_Scope),
!                Line        => Nat (Get_Logical_Line_Number (Ref.Loc)),
!                Rtype       => Typ,
!                Col         => Nat (Get_Column_Number (Ref.Loc))));
!          end;
        end loop;
  
!       --  Update the range of cross references to which the scope refers to
! 
!       Update_Scope_Range
!         (S    => Scope_Id,
!          From => From_Index,
!          To   => SPARK_Xref_Table.Last);
!    end Add_SPARK_Xrefs;
! 
!    -------------------------
!    -- Collect_SPARK_Xrefs --
!    -------------------------
! 
!    procedure Collect_SPARK_Xrefs
!      (Sdep_Table : Unit_Ref_Table;
!       Num_Sdep   : Nat)
!    is
!       Sdep      : Pos;
!       Sdep_Next : Pos;
!       --  Index of the current and next source dependency
! 
!       Sdep_File : Pos;
!       --  Index of the file to which the scopes need to be assigned; for
!       --  library-level instances of generic units this points to the unit
!       --  of the body, because this is where references are assigned to.
! 
!       Ubody : Unit_Number_Type;
!       Uspec : Unit_Number_Type;
!       --  Unit numbers for the dependency spec and possibly its body (only in
!       --  the case of library-level instance of a generic package).
! 
!    begin
!       --  Cross-references should have been computed first
! 
!       pragma Assert (Xrefs.Last /= 0);
! 
!       Initialize_SPARK_Tables;
! 
!       --  Generate file and scope SPARK cross-reference information
! 
!       Sdep := 1;
!       while Sdep <= Num_Sdep loop
! 
!          --  Skip dependencies with no entity node, e.g. configuration files
!          --  with pragmas (.adc) or target description (.atp), since they
!          --  present no interest for SPARK cross references.
! 
!          if No (Cunit_Entity (Sdep_Table (Sdep))) then
!             Sdep_Next := Sdep + 1;
! 
!          --  For library-level instantiation of a generic, two consecutive
!          --  units refer to the same compilation unit node and entity (one to
!          --  body, one to spec). In that case, treat them as a single unit for
!          --  the sake of SPARK cross references by passing to Add_SPARK_File.
! 
!          else
!             if Sdep < Num_Sdep
!               and then Cunit_Entity (Sdep_Table (Sdep)) =
!                        Cunit_Entity (Sdep_Table (Sdep + 1))
!             then
!                declare
!                   Cunit1 : Node_Id renames Cunit (Sdep_Table (Sdep));
!                   Cunit2 : Node_Id renames Cunit (Sdep_Table (Sdep + 1));
! 
!                begin
!                   --  Both Cunits point to compilation unit nodes
! 
!                   pragma Assert
!                     (Nkind (Cunit1) = N_Compilation_Unit
!                       and then Nkind (Cunit2) = N_Compilation_Unit);
! 
!                   --  Do not depend on the sorting order, which is based on
!                   --  Unit_Name, and for library-level instances of nested
!                   --  generic packages they are equal.
! 
!                   --  If declaration comes before the body
! 
!                   if Nkind (Unit (Cunit1)) = N_Package_Declaration
!                     and then Nkind (Unit (Cunit2)) = N_Package_Body
!                   then
!                      Uspec := Sdep_Table (Sdep);
!                      Ubody := Sdep_Table (Sdep + 1);
! 
!                      Sdep_File := Sdep + 1;
! 
!                   --  If body comes before declaration
! 
!                   elsif Nkind (Unit (Cunit1)) = N_Package_Body
!                     and then Nkind (Unit (Cunit2)) = N_Package_Declaration
!                   then
!                      Uspec := Sdep_Table (Sdep + 1);
!                      Ubody := Sdep_Table (Sdep);
! 
!                      Sdep_File := Sdep;
! 
!                   --  Otherwise it is an error
! 
!                   else
!                      raise Program_Error;
!                   end if;
! 
!                   Sdep_Next := Sdep + 2;
!                end;
! 
!             --  ??? otherwise?
! 
!             else
!                Uspec := Sdep_Table (Sdep);
!                Ubody := No_Unit;
! 
!                Sdep_File := Sdep;
!                Sdep_Next := Sdep + 1;
!             end if;
! 
!             Add_SPARK_File
!               (Uspec => Uspec,
!                Ubody => Ubody,
!                Dspec => Sdep_File);
!          end if;
! 
!          Sdep := Sdep_Next;
        end loop;
! 
!       --  Fill in the spec information when relevant
! 
!       declare
!          package Entity_Hash_Table is new
!            GNAT.HTable.Simple_HTable
!              (Header_Num => Entity_Hashed_Range,
!               Element    => Scope_Index,
!               No_Element => 0,
!               Key        => Entity_Id,
!               Hash       => Entity_Hash,
!               Equal      => "=");
! 
!       begin
!          --  Fill in the hash-table
! 
!          for S in SPARK_Scope_Table.First .. SPARK_Scope_Table.Last loop
!             declare
!                Srec : SPARK_Scope_Record renames SPARK_Scope_Table.Table (S);
!             begin
!                Entity_Hash_Table.Set (Srec.Scope_Entity, S);
!             end;
!          end loop;
! 
!          --  Use the hash-table to locate spec entities
! 
!          for S in SPARK_Scope_Table.First .. SPARK_Scope_Table.Last loop
!             declare
!                Srec : SPARK_Scope_Record renames SPARK_Scope_Table.Table (S);
! 
!                Spec_Entity : constant Entity_Id :=
!                                Unique_Entity (Srec.Scope_Entity);
!                Spec_Scope  : constant Scope_Index :=
!                                Entity_Hash_Table.Get (Spec_Entity);
! 
!             begin
!                --  Generic spec may be missing in which case Spec_Scope is zero
! 
!                if Spec_Entity /= Srec.Scope_Entity
!                  and then Spec_Scope /= 0
!                then
!                   Srec.Spec_File_Num :=
!                     SPARK_Scope_Table.Table (Spec_Scope).File_Num;
!                   Srec.Spec_Scope_Num :=
!                     SPARK_Scope_Table.Table (Spec_Scope).Scope_Num;
!                end if;
!             end;
!          end loop;
!       end;
! 
!       --  Generate SPARK cross-reference information
! 
!       Add_SPARK_Xrefs;
!    end Collect_SPARK_Xrefs;
  
     -------------------------------------
     -- Enclosing_Subprogram_Or_Package --
--- 144,172 ----
        --------------------
  
        function Is_SPARK_Scope (E : Entity_Id) return Boolean is
+          Can_Be_Renamed : constant Boolean :=
+                             Present (E)
+                               and then (Is_Subprogram_Or_Entry (E)
+                                          or else Ekind (E) = E_Package);
        begin
           return Present (E)
             and then not Is_Generic_Unit (E)
!            and then (not Can_Be_Renamed or else No (Renamed_Entity (E)));
        end Is_SPARK_Scope;
  
     --  Start of processing for Add_SPARK_Xrefs
  
     begin
!       --  Expose cross-references from private frontend tables to the backend
  
!       for Index in Drefs.First .. Drefs.Last loop
!          Add_SPARK_Xref (Index, Drefs.Table (Index));
        end loop;
  
!       for Index in Xrefs.First .. Xrefs.Last loop
!          Add_SPARK_Xref (-Index, Xrefs.Table (Index));
        end loop;
!    end Iterate_SPARK_Xrefs;
  
     -------------------------------------
     -- Enclosing_Subprogram_Or_Package --
*************** package body SPARK_Specific is
*** 1146,1161 ****
        return Context;
     end Enclosing_Subprogram_Or_Library_Package;
  
-    -----------------
-    -- Entity_Hash --
-    -----------------
- 
-    function Entity_Hash (E : Entity_Id) return Entity_Hashed_Range is
-    begin
-       return
-         Entity_Hashed_Range (E mod (Entity_Id (Entity_Hashed_Range'Last) + 1));
-    end Entity_Hash;
- 
     --------------------------
     -- Generate_Dereference --
     --------------------------
--- 263,268 ----
*************** package body SPARK_Specific is
*** 1224,1541 ****
        end if;
     end Generate_Dereference;
  
-    -------------------------------
-    -- Traverse_Compilation_Unit --
-    -------------------------------
- 
-    procedure Traverse_Compilation_Unit
-      (CU           : Node_Id;
-       Inside_Stubs : Boolean)
-    is
-       procedure Traverse_Block                      (N : Node_Id);
-       procedure Traverse_Declaration_Or_Statement   (N : Node_Id);
-       procedure Traverse_Declarations_And_HSS       (N : Node_Id);
-       procedure Traverse_Declarations_Or_Statements (L : List_Id);
-       procedure Traverse_Handled_Statement_Sequence (N : Node_Id);
-       procedure Traverse_Package_Body               (N : Node_Id);
-       procedure Traverse_Visible_And_Private_Parts  (N : Node_Id);
-       procedure Traverse_Protected_Body             (N : Node_Id);
-       procedure Traverse_Subprogram_Body            (N : Node_Id);
-       procedure Traverse_Task_Body                  (N : Node_Id);
- 
-       --  Traverse corresponding construct, calling Process on all declarations
- 
-       --------------------
-       -- Traverse_Block --
-       --------------------
- 
-       procedure Traverse_Block (N : Node_Id) renames
-         Traverse_Declarations_And_HSS;
- 
-       ---------------------------------------
-       -- Traverse_Declaration_Or_Statement --
-       ---------------------------------------
- 
-       procedure Traverse_Declaration_Or_Statement (N : Node_Id) is
-          function Traverse_Stub (N : Node_Id) return Boolean;
-          --  Returns True iff stub N should be traversed
- 
-          function Traverse_Stub (N : Node_Id) return Boolean is
-          begin
-             pragma Assert (Nkind_In (N, N_Package_Body_Stub,
-                                         N_Protected_Body_Stub,
-                                         N_Subprogram_Body_Stub,
-                                         N_Task_Body_Stub));
- 
-             return Inside_Stubs and then Present (Library_Unit (N));
-          end Traverse_Stub;
- 
-       --  Start of processing for Traverse_Declaration_Or_Statement
- 
-       begin
-          case Nkind (N) is
-             when N_Package_Declaration =>
-                Traverse_Visible_And_Private_Parts (Specification (N));
- 
-             when N_Package_Body =>
-                Traverse_Package_Body (N);
- 
-             when N_Package_Body_Stub =>
-                if Traverse_Stub (N) then
-                   Traverse_Package_Body (Get_Body_From_Stub (N));
-                end if;
- 
-             when N_Subprogram_Body =>
-                Traverse_Subprogram_Body (N);
- 
-             when N_Entry_Body =>
-                Traverse_Subprogram_Body (N);
- 
-             when N_Subprogram_Body_Stub =>
-                if Traverse_Stub (N) then
-                   Traverse_Subprogram_Body (Get_Body_From_Stub (N));
-                end if;
- 
-             when N_Protected_Body =>
-                Traverse_Protected_Body (N);
- 
-             when N_Protected_Body_Stub =>
-                if Traverse_Stub (N) then
-                   Traverse_Protected_Body (Get_Body_From_Stub (N));
-                end if;
- 
-             when N_Protected_Type_Declaration =>
-                Traverse_Visible_And_Private_Parts (Protected_Definition (N));
- 
-             when N_Task_Definition =>
-                Traverse_Visible_And_Private_Parts (N);
- 
-             when N_Task_Body =>
-                Traverse_Task_Body (N);
- 
-             when N_Task_Body_Stub =>
-                if Traverse_Stub (N) then
-                   Traverse_Task_Body (Get_Body_From_Stub (N));
-                end if;
- 
-             when N_Block_Statement =>
-                Traverse_Block (N);
- 
-             when N_If_Statement =>
- 
-                --  Traverse the statements in the THEN part
- 
-                Traverse_Declarations_Or_Statements (Then_Statements (N));
- 
-                --  Loop through ELSIF parts if present
- 
-                if Present (Elsif_Parts (N)) then
-                   declare
-                      Elif : Node_Id := First (Elsif_Parts (N));
- 
-                   begin
-                      while Present (Elif) loop
-                         Traverse_Declarations_Or_Statements
-                           (Then_Statements (Elif));
-                         Next (Elif);
-                      end loop;
-                   end;
-                end if;
- 
-                --  Finally traverse the ELSE statements if present
- 
-                Traverse_Declarations_Or_Statements (Else_Statements (N));
- 
-             when N_Case_Statement =>
- 
-                --  Process case branches
- 
-                declare
-                   Alt : Node_Id := First (Alternatives (N));
-                begin
-                   loop
-                      Traverse_Declarations_Or_Statements (Statements (Alt));
-                      Next (Alt);
-                      exit when No (Alt);
-                   end loop;
-                end;
- 
-             when N_Extended_Return_Statement =>
-                Traverse_Handled_Statement_Sequence
-                  (Handled_Statement_Sequence (N));
- 
-             when N_Loop_Statement =>
-                Traverse_Declarations_Or_Statements (Statements (N));
- 
-                --  Generic declarations are ignored
- 
-             when others =>
-                null;
-          end case;
-       end Traverse_Declaration_Or_Statement;
- 
-       -----------------------------------
-       -- Traverse_Declarations_And_HSS --
-       -----------------------------------
- 
-       procedure Traverse_Declarations_And_HSS (N : Node_Id) is
-       begin
-          Traverse_Declarations_Or_Statements (Declarations (N));
-          Traverse_Handled_Statement_Sequence (Handled_Statement_Sequence (N));
-       end Traverse_Declarations_And_HSS;
- 
-       -----------------------------------------
-       -- Traverse_Declarations_Or_Statements --
-       -----------------------------------------
- 
-       procedure Traverse_Declarations_Or_Statements (L : List_Id) is
-          N : Node_Id;
- 
-       begin
-          --  Loop through statements or declarations
- 
-          N := First (L);
-          while Present (N) loop
- 
-             --  Call Process on all declarations
- 
-             if Nkind (N) in N_Declaration
-               or else Nkind (N) in N_Later_Decl_Item
-               or else Nkind (N) = N_Entry_Body
-             then
-                Process (N);
-             end if;
- 
-             Traverse_Declaration_Or_Statement (N);
- 
-             Next (N);
-          end loop;
-       end Traverse_Declarations_Or_Statements;
- 
-       -----------------------------------------
-       -- Traverse_Handled_Statement_Sequence --
-       -----------------------------------------
- 
-       procedure Traverse_Handled_Statement_Sequence (N : Node_Id) is
-          Handler : Node_Id;
- 
-       begin
-          if Present (N) then
-             Traverse_Declarations_Or_Statements (Statements (N));
- 
-             if Present (Exception_Handlers (N)) then
-                Handler := First (Exception_Handlers (N));
-                while Present (Handler) loop
-                   Traverse_Declarations_Or_Statements (Statements (Handler));
-                   Next (Handler);
-                end loop;
-             end if;
-          end if;
-       end Traverse_Handled_Statement_Sequence;
- 
-       ---------------------------
-       -- Traverse_Package_Body --
-       ---------------------------
- 
-       procedure Traverse_Package_Body (N : Node_Id) is
-          Spec_E : constant Entity_Id := Unique_Defining_Entity (N);
- 
-       begin
-          case Ekind (Spec_E) is
-             when E_Package =>
-                Traverse_Declarations_And_HSS (N);
- 
-             when E_Generic_Package =>
-                null;
- 
-             when others =>
-                raise Program_Error;
-          end case;
-       end Traverse_Package_Body;
- 
-       -----------------------------
-       -- Traverse_Protected_Body --
-       -----------------------------
- 
-       procedure Traverse_Protected_Body (N : Node_Id) is
-       begin
-          Traverse_Declarations_Or_Statements (Declarations (N));
-       end Traverse_Protected_Body;
- 
-       ------------------------------
-       -- Traverse_Subprogram_Body --
-       ------------------------------
- 
-       procedure Traverse_Subprogram_Body (N : Node_Id) is
-          Spec_E : constant Entity_Id := Unique_Defining_Entity (N);
- 
-       begin
-          case Ekind (Spec_E) is
-             when Entry_Kind
-                | E_Function
-                | E_Procedure
-             =>
-                Traverse_Declarations_And_HSS (N);
- 
-             when Generic_Subprogram_Kind =>
-                null;
- 
-             when others =>
-                raise Program_Error;
-          end case;
-       end Traverse_Subprogram_Body;
- 
-       ------------------------
-       -- Traverse_Task_Body --
-       ------------------------
- 
-       procedure Traverse_Task_Body (N : Node_Id) renames
-         Traverse_Declarations_And_HSS;
- 
-       ----------------------------------------
-       -- Traverse_Visible_And_Private_Parts --
-       ----------------------------------------
- 
-       procedure Traverse_Visible_And_Private_Parts (N : Node_Id) is
-       begin
-          Traverse_Declarations_Or_Statements (Visible_Declarations (N));
-          Traverse_Declarations_Or_Statements (Private_Declarations (N));
-       end Traverse_Visible_And_Private_Parts;
- 
-       --  Local variables
- 
-       Lu : Node_Id;
- 
-    --  Start of processing for Traverse_Compilation_Unit
- 
-    begin
-       --  Get Unit (checking case of subunit)
- 
-       Lu := Unit (CU);
- 
-       if Nkind (Lu) = N_Subunit then
-          Lu := Proper_Body (Lu);
-       end if;
- 
-       --  Do not add scopes for generic units
- 
-       if Nkind (Lu) = N_Package_Body
-         and then Ekind (Corresponding_Spec (Lu)) in Generic_Unit_Kind
-       then
-          return;
-       end if;
- 
-       --  Call Process on all declarations
- 
-       if Nkind (Lu) in N_Declaration
-         or else Nkind (Lu) in N_Later_Decl_Item
-       then
-          Process (Lu);
-       end if;
- 
-       --  Traverse the unit
- 
-       Traverse_Declaration_Or_Statement (Lu);
-    end Traverse_Compilation_Unit;
- 
  end SPARK_Specific;
--- 331,334 ----
diff -Nrcpad gcc-7.3.0/gcc/ada/lib-xref.adb gcc-8.1.0/gcc/ada/lib-xref.adb
*** gcc-7.3.0/gcc/ada/lib-xref.adb	Fri Jan 20 14:49:28 2017
--- gcc-8.1.0/gcc/ada/lib-xref.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1998-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or 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-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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,32 ****
--- 27,33 ----
  with Csets;    use Csets;
  with Elists;   use Elists;
  with Errout;   use Errout;
+ with Lib.Util; use Lib.Util;
  with Nlists;   use Nlists;
  with Opt;      use Opt;
  with Restrict; use Restrict;
*************** package body Lib.Xref is
*** 413,429 ****
        ---------------------------
  
        function Get_Through_Renamings (E : Entity_Id) return Entity_Id is
-          Result : Entity_Id := E;
- 
        begin
!          while Present (Result)
!            and then Is_Object (Result)
!            and then Present (Renamed_Object (Result))
!          loop
!             Result := Get_Enclosing_Object (Renamed_Object (Result));
!          end loop;
  
!          return Result;
        end Get_Through_Renamings;
  
        ---------------
--- 414,473 ----
        ---------------------------
  
        function Get_Through_Renamings (E : Entity_Id) return Entity_Id is
        begin
!          case Ekind (E) is
  
!             --  For subprograms we just need to check once if they are have a
!             --  Renamed_Entity, because Renamed_Entity is set transitively.
! 
!             when Subprogram_Kind =>
!                declare
!                   Renamed : constant Entity_Id := Renamed_Entity (E);
! 
!                begin
!                   if Present (Renamed) then
!                      return Renamed;
!                   else
!                      return E;
!                   end if;
!                end;
! 
!             --  For objects we need to repeatedly call Renamed_Object, because
!             --  it is not transitive.
! 
!             when Object_Kind =>
!                declare
!                   Obj : Entity_Id := E;
! 
!                begin
!                   loop
!                      pragma Assert (Present (Obj));
! 
!                      declare
!                         Renamed : constant Entity_Id := Renamed_Object (Obj);
! 
!                      begin
!                         if Present (Renamed) then
!                            Obj := Get_Enclosing_Object (Renamed);
! 
!                            --  The renamed expression denotes a non-object,
!                            --  e.g. function call, slicing of a function call,
!                            --  pointer dereference, etc.
! 
!                            if No (Obj) then
!                               return Empty;
!                            end if;
!                         else
!                            return Obj;
!                         end if;
!                      end;
!                   end loop;
!                end;
! 
!             when others =>
!                return E;
! 
!          end case;
        end Get_Through_Renamings;
  
        ---------------
*************** package body Lib.Xref is
*** 848,855 ****
           if Has_Unreferenced (E)
             and then In_Same_Extended_Unit (E, N)
           then
!             --  A reference as a named parameter in a call does not count
!             --  as a violation of pragma Unreferenced for this purpose...
  
              if Nkind (N) = N_Identifier
                and then Nkind (Parent (N)) = N_Parameter_Association
--- 892,899 ----
           if Has_Unreferenced (E)
             and then In_Same_Extended_Unit (E, N)
           then
!             --  A reference as a named parameter in a call does not count as a
!             --  violation of pragma Unreferenced for this purpose...
  
              if Nkind (N) = N_Identifier
                and then Nkind (Parent (N)) = N_Parameter_Association
*************** package body Lib.Xref is
*** 857,868 ****
              then
                 null;
  
!             --  ... Neither does a reference to a variable on the left side
!             --  of an assignment.
  
              elsif Is_On_LHS (N) then
                 null;
  
              --  No warning if the reference is in a call that does not come
              --  from source (e.g. a call to a controlled type primitive).
  
--- 901,922 ----
              then
                 null;
  
!             --  ... Neither does a reference to a variable on the left side of
!             --  an assignment.
  
              elsif Is_On_LHS (N) then
                 null;
  
+             --  Do not consider F'Result as a violation of pragma Unreferenced
+             --  since the attribute acts as an anonymous alias of the function
+             --  result and not as a real reference to the function.
+ 
+             elsif Ekind_In (E, E_Function, E_Generic_Function)
+               and then Is_Entity_Name (N)
+               and then Is_Attribute_Result (Parent (N))
+             then
+                null;
+ 
              --  No warning if the reference is in a call that does not come
              --  from source (e.g. a call to a controlled type primitive).
  
*************** package body Lib.Xref is
*** 1026,1032 ****
           --  original discriminant, which gets the reference.
  
           elsif Ekind (E) = E_In_Parameter
!            and then  Present (Discriminal_Link (E))
           then
              Ent := Discriminal_Link (E);
              Set_Referenced (Ent);
--- 1080,1086 ----
           --  original discriminant, which gets the reference.
  
           elsif Ekind (E) = E_In_Parameter
!            and then Present (Discriminal_Link (E))
           then
              Ent := Discriminal_Link (E);
              Set_Referenced (Ent);
*************** package body Lib.Xref is
*** 1073,1078 ****
--- 1127,1147 ----
           --  Comment needed here for special SPARK code ???
  
           if GNATprove_Mode then
+ 
+             --  Ignore references to an entity which is a Part_Of single
+             --  concurrent object. Ideally we would prefer to add it as a
+             --  reference to the corresponding concurrent type, but it is quite
+             --  difficult (as such references are not currently added even for)
+             --  reads/writes of private protected components) and not worth the
+             --  effort.
+ 
+             if Ekind_In (Ent, E_Abstract_State, E_Constant, E_Variable)
+               and then Present (Encapsulating_State (Ent))
+               and then Is_Single_Concurrent_Object (Encapsulating_State (Ent))
+             then
+                return;
+             end if;
+ 
              Ref := Sloc (Nod);
              Def := Sloc (Ent);
  
*************** package body Lib.Xref is
*** 2649,2655 ****
                    if XE.Key.Loc /= No_Location
                      and then
                        (XE.Key.Loc /= Crloc
!                         or else (Prevt = 'm' and then  XE.Key.Typ = 'r'))
                    then
                       Crloc := XE.Key.Loc;
                       Prevt := XE.Key.Typ;
--- 2718,2724 ----
                    if XE.Key.Loc /= No_Location
                      and then
                        (XE.Key.Loc /= Crloc
!                         or else (Prevt = 'm' and then XE.Key.Typ = 'r'))
                    then
                       Crloc := XE.Key.Loc;
                       Prevt := XE.Key.Typ;
diff -Nrcpad gcc-7.3.0/gcc/ada/lib-xref.ads gcc-8.1.0/gcc/ada/lib-xref.ads
*** gcc-7.3.0/gcc/ada/lib-xref.ads	Thu Jan 19 11:46:14 2017
--- gcc-8.1.0/gcc/ada/lib-xref.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1998-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or 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-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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,34 ****
  --  This package contains for collecting and outputting cross-reference
  --  information.
  
! with Einfo;           use Einfo;
! with Lib.Util;        use Lib.Util;
! with Put_SPARK_Xrefs;
  
  package Lib.Xref is
  
--- 26,33 ----
  --  This package contains for collecting and outputting cross-reference
  --  information.
  
! with Einfo;       use Einfo;
! with SPARK_Xrefs;
  
  package Lib.Xref is
  
*************** package Lib.Xref is
*** 611,617 ****
       Table_Name           => "Name_Deferred_References");
  
     procedure Process_Deferred_References;
!    --  This procedure is called from Frontend to process these table entries
  
     function Has_Deferred_Reference (Ent : Entity_Id) return Boolean;
     --  Determine whether arbitrary entity Ent has a pending reference in order
--- 610,617 ----
       Table_Name           => "Name_Deferred_References");
  
     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
*************** package Lib.Xref is
*** 639,664 ****
        --  This procedure is called to record a dereference. N is the location
        --  of the dereference.
  
-       procedure Collect_SPARK_Xrefs
-         (Sdep_Table : Unit_Ref_Table;
-          Num_Sdep   : Nat);
-       --  Collect SPARK cross-reference information from library units (for
-       --  files and scopes) and from shared cross-references. Fill in the
-       --  tables in library package called SPARK_Xrefs.
- 
-       procedure Output_SPARK_Xrefs is new Put_SPARK_Xrefs;
-       --  Output SPARK cross-reference information to the ALI files, based on
-       --  the information collected in the tables in library package called
-       --  SPARK_Xrefs, and using routines in Lib.Util.
- 
        generic
!          with procedure Process (N : Node_Id) is <>;
!       procedure Traverse_Compilation_Unit
!         (CU           : Node_Id;
!          Inside_Stubs : Boolean);
!       --  Call Process on all declarations within compilation unit CU. If
!       --  Inside_Stubs is True, then the body of stubs is also traversed.
!       --  Generic declarations are ignored.
  
     end SPARK_Specific;
  
--- 639,653 ----
        --  This procedure is called to record a dereference. N is the location
        --  of the dereference.
  
        generic
!          with procedure Process
!            (Index : Int;
!             Xref  : SPARK_Xrefs.SPARK_Xref_Record);
!       procedure Iterate_SPARK_Xrefs;
!       --  Call Process on cross-references relevant to the SPARK backend with
!       --  parameter Xref holding the relevant subset of the xref entry and
!       --  Index holding the position in the original tables with references
!       --  (if positive) or dereferences (if negative).
  
     end SPARK_Specific;
  
diff -Nrcpad gcc-7.3.0/gcc/ada/lib.adb gcc-8.1.0/gcc/ada/lib.adb
*** gcc-7.3.0/gcc/ada/lib.adb	Wed Jul  6 13:38:37 2016
--- gcc-8.1.0/gcc/ada/lib.adb	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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 Style_Checks (All_Checks);
*** 36,42 ****
  with Atree;    use Atree;
  with Csets;    use Csets;
  with Einfo;    use Einfo;
- with Fname;    use Fname;
  with Nlists;   use Nlists;
  with Opt;      use Opt;
  with Output;   use Output;
--- 36,41 ----
*************** package body Lib is
*** 63,69 ****
        Yes_After,  -- S1 is in same extended unit as S2, and appears after it
        No);        -- S2 is not in same extended unit as S2
  
!    function Check_Same_Extended_Unit (S1, S2 : Source_Ptr) return SEU_Result;
     --  Used by In_Same_Extended_Unit and Earlier_In_Extended_Unit. Returns
     --  value as described above.
  
--- 62,70 ----
        Yes_After,  -- S1 is in same extended unit as S2, and appears after it
        No);        -- S2 is not in same extended unit as S2
  
!    function Check_Same_Extended_Unit
!      (S1 : Source_Ptr;
!       S2 : Source_Ptr) return SEU_Result;
     --  Used by In_Same_Extended_Unit and Earlier_In_Extended_Unit. Returns
     --  value as described above.
  
*************** package body Lib is
*** 127,132 ****
--- 128,148 ----
        return Units.Table (U).Has_RACW;
     end Has_RACW;
  
+    function Is_Predefined_Renaming (U : Unit_Number_Type) return Boolean is
+    begin
+       return Units.Table (U).Is_Predefined_Renaming;
+    end Is_Predefined_Renaming;
+ 
+    function Is_Internal_Unit       (U : Unit_Number_Type) return Boolean is
+    begin
+       return Units.Table (U).Is_Internal_Unit;
+    end Is_Internal_Unit;
+ 
+    function Is_Predefined_Unit     (U : Unit_Number_Type) return Boolean is
+    begin
+       return Units.Table (U).Is_Predefined_Unit;
+    end Is_Predefined_Unit;
+ 
     function Ident_String (U : Unit_Number_Type) return Node_Id is
     begin
        return Units.Table (U).Ident_String;
*************** package body Lib is
*** 162,167 ****
--- 178,193 ----
        return Units.Table (U).OA_Setting;
     end OA_Setting;
  
+    function Primary_Stack_Count (U : Unit_Number_Type) return Int is
+    begin
+       return Units.Table (U).Primary_Stack_Count;
+    end Primary_Stack_Count;
+ 
+    function Sec_Stack_Count  (U : Unit_Number_Type) return Int is
+    begin
+       return Units.Table (U).Sec_Stack_Count;
+    end Sec_Stack_Count;
+ 
     function Source_Index (U : Unit_Number_Type) return Source_File_Index is
     begin
        return Units.Table (U).Source_Index;
*************** package body Lib is
*** 259,265 ****
     -- Check_Same_Extended_Unit --
     ------------------------------
  
!    function Check_Same_Extended_Unit (S1, S2 : Source_Ptr) return SEU_Result is
        Max_Iterations : constant Nat := Maximum_Instantiations * 2;
        --  Limit to prevent a potential infinite loop
  
--- 285,294 ----
     -- Check_Same_Extended_Unit --
     ------------------------------
  
!    function Check_Same_Extended_Unit
!      (S1 : Source_Ptr;
!       S2 : Source_Ptr) return SEU_Result
!    is
        Max_Iterations : constant Nat := Maximum_Instantiations * 2;
        --  Limit to prevent a potential infinite loop
  
*************** package body Lib is
*** 445,450 ****
--- 474,480 ----
           --  Prevent looping forever
  
           if Counter > Max_Iterations then
+ 
              --  ??? Not quite right, but return a value to be able to generate
              --  SCIL files and hope for the best.
  
*************** package body Lib is
*** 488,498 ****
     -- Earlier_In_Extended_Unit --
     ------------------------------
  
!    function Earlier_In_Extended_Unit (S1, S2 : Source_Ptr) return Boolean is
     begin
        return Check_Same_Extended_Unit (S1, S2) = Yes_Before;
     end Earlier_In_Extended_Unit;
  
     -----------------------
     -- Exact_Source_Name --
     -----------------------
--- 518,539 ----
     -- Earlier_In_Extended_Unit --
     ------------------------------
  
!    function Earlier_In_Extended_Unit
!      (S1 : Source_Ptr;
!       S2 : Source_Ptr) return Boolean
!    is
     begin
        return Check_Same_Extended_Unit (S1, S2) = Yes_Before;
     end Earlier_In_Extended_Unit;
  
+    function Earlier_In_Extended_Unit
+      (N1 : Node_Or_Entity_Id;
+       N2 : Node_Or_Entity_Id) return Boolean
+    is
+    begin
+       return Earlier_In_Extended_Unit (Sloc (N1), Sloc (N2));
+    end Earlier_In_Extended_Unit;
+ 
     -----------------------
     -- Exact_Source_Name --
     -----------------------
*************** package body Lib is
*** 576,582 ****
     -- Generic_May_Lack_ALI --
     --------------------------
  
!    function Generic_May_Lack_ALI (Sfile : File_Name_Type) return Boolean is
     begin
        --  We allow internal generic units to be used without having a
        --  corresponding ALI files to help bootstrapping with older compilers
--- 617,623 ----
     -- Generic_May_Lack_ALI --
     --------------------------
  
!    function Generic_May_Lack_ALI (Unum : Unit_Number_Type) return Boolean is
     begin
        --  We allow internal generic units to be used without having a
        --  corresponding ALI files to help bootstrapping with older compilers
*************** package body Lib is
*** 585,593 ****
        --  is the elaboration boolean, and we are careful to elaborate all
        --  predefined units first anyway.
  
!       return Is_Internal_File_Name
!                (Fname              => Sfile,
!                 Renamings_Included => True);
     end Generic_May_Lack_ALI;
  
     -----------------------------
--- 626,632 ----
        --  is the elaboration boolean, and we are careful to elaborate all
        --  predefined units first anyway.
  
!       return Is_Internal_Unit (Unum);
     end Generic_May_Lack_ALI;
  
     -----------------------------
*************** package body Lib is
*** 614,620 ****
              Source_File := Get_Source_File_Index (S);
  
              if Unwind_Instances then
!                while Template (Source_File) /= No_Source_File loop
                    Source_File := Template (Source_File);
                 end loop;
              end if;
--- 653,659 ----
              Source_File := Get_Source_File_Index (S);
  
              if Unwind_Instances then
!                while Template (Source_File) > No_Source_File loop
                    Source_File := Template (Source_File);
                 end loop;
              end if;
*************** package body Lib is
*** 735,741 ****
     begin
        return
          Get_Code_Or_Source_Unit
!           (S, Unwind_Instances => True, Unwind_Subunits => False);
     end Get_Source_Unit;
  
     function Get_Source_Unit (N : Node_Or_Entity_Id) return Unit_Number_Type is
--- 774,782 ----
     begin
        return
          Get_Code_Or_Source_Unit
!           (S                => S,
!            Unwind_Instances => True,
!            Unwind_Subunits  => False);
     end Get_Source_Unit;
  
     function Get_Source_Unit (N : Node_Or_Entity_Id) return Unit_Number_Type is
*************** package body Lib is
*** 795,802 ****
        --  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;
  
--- 836,842 ----
        --  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;
  
*************** package body Lib is
*** 816,823 ****
        --  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;
  
--- 856,862 ----
        --  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;
  
*************** package body Lib is
*** 893,898 ****
--- 932,967 ----
        end if;
     end In_Extended_Main_Source_Unit;
  
+    ----------------------
+    -- In_Internal_Unit --
+    ----------------------
+ 
+    function In_Internal_Unit (N : Node_Or_Entity_Id) return Boolean is
+    begin
+       return In_Internal_Unit (Sloc (N));
+    end In_Internal_Unit;
+ 
+    function In_Internal_Unit (S : Source_Ptr) return Boolean is
+       Unit : constant Unit_Number_Type := Get_Source_Unit (S);
+    begin
+       return Is_Internal_Unit (Unit);
+    end In_Internal_Unit;
+ 
+    ----------------------------
+    -- In_Predefined_Renaming --
+    ----------------------------
+ 
+    function In_Predefined_Renaming (N : Node_Or_Entity_Id) return Boolean is
+    begin
+       return In_Predefined_Renaming (Sloc (N));
+    end In_Predefined_Renaming;
+ 
+    function In_Predefined_Renaming (S : Source_Ptr) return Boolean is
+       Unit : constant Unit_Number_Type := Get_Source_Unit (S);
+    begin
+       return Is_Predefined_Renaming (Unit);
+    end In_Predefined_Renaming;
+ 
     ------------------------
     -- In_Predefined_Unit --
     ------------------------
*************** package body Lib is
*** 904,912 ****
  
     function In_Predefined_Unit (S : Source_Ptr) return Boolean is
        Unit : constant Unit_Number_Type := Get_Source_Unit (S);
-       File : constant File_Name_Type   := Unit_File_Name (Unit);
     begin
!       return Is_Predefined_File_Name (File);
     end In_Predefined_Unit;
  
     -----------------------
--- 973,980 ----
  
     function In_Predefined_Unit (S : Source_Ptr) return Boolean is
        Unit : constant Unit_Number_Type := Get_Source_Unit (S);
     begin
!       return Is_Predefined_Unit (Unit);
     end In_Predefined_Unit;
  
     -----------------------
*************** package body Lib is
*** 969,974 ****
--- 1037,1062 ----
        return Get_Source_Unit (N1) = Get_Source_Unit (N2);
     end In_Same_Source_Unit;
  
+    -----------------------------------
+    -- Increment_Primary_Stack_Count --
+    -----------------------------------
+ 
+    procedure Increment_Primary_Stack_Count (Increment : Int) is
+       PSC : Int renames Units.Table (Current_Sem_Unit).Primary_Stack_Count;
+    begin
+       PSC := PSC + Increment;
+    end Increment_Primary_Stack_Count;
+ 
+    -------------------------------
+    -- Increment_Sec_Stack_Count --
+    -------------------------------
+ 
+    procedure Increment_Sec_Stack_Count (Increment : Int) is
+       SSC : Int renames Units.Table (Current_Sem_Unit).Sec_Stack_Count;
+    begin
+       SSC := SSC + Increment;
+    end Increment_Sec_Stack_Count;
+ 
     -----------------------------
     -- Increment_Serial_Number --
     -----------------------------
*************** package body Lib is
*** 1029,1040 ****
  
     procedure Lock is
     begin
-       Linker_Option_Lines.Locked := True;
-       Load_Stack.Locked := True;
-       Units.Locked := True;
        Linker_Option_Lines.Release;
        Load_Stack.Release;
        Units.Release;
     end Lock;
  
     ---------------
--- 1117,1128 ----
  
     procedure Lock is
     begin
        Linker_Option_Lines.Release;
+       Linker_Option_Lines.Locked := True;
        Load_Stack.Release;
+       Load_Stack.Locked := True;
        Units.Release;
+       Units.Locked := True;
     end Lock;
  
     ---------------
diff -Nrcpad gcc-7.3.0/gcc/ada/lib.ads gcc-8.1.0/gcc/ada/lib.ads
*** gcc-7.3.0/gcc/ada/lib.ads	Mon Jan 23 12:00:26 2017
--- gcc-8.1.0/gcc/ada/lib.ads	Thu Jan 11 08:55:25 2018
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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
*** 327,332 ****
--- 327,345 ----
     --      N_String_Literal node from a valid pragma Ident that applies to
     --      this unit. If no Ident pragma applies to the unit, then Empty.
  
+    --    Is_Predefined_Renaming
+    --      True if this unit is a predefined renaming, as in "Text_IO renames
+    --      Ada.Text_IO").
+ 
+    --    Is_Internal_Unit
+    --      Same as In_Predefined_Unit, except units in the GNAT hierarchy are
+    --      included.
+ 
+    --    Is_Predefined_Unit
+    --      True if this unit is predefined (i.e. part of the Ada, System, or
+    --      Interface hierarchies, or Is_Predefined_Renaming). Note that units
+    --      in the GNAT hierarchy are not considered predefined.
+ 
     --    Loading
     --      A flag that is used to catch circular WITH dependencies. It is set
     --      True when an entry is initially created in the file table, and set
*************** package Lib is
*** 357,362 ****
--- 370,389 ----
     --      This is a character field containing L if Optimize_Alignment mode
     --      was set locally, and O/T/S for Off/Time/Space default if not.
  
+    --    Primary_Stack_Count
+    --      The number of primary stacks belonging to tasks defined within the
+    --      unit that have no Storage_Size specified when the either restriction
+    --      No_Implicit_Heap_Allocations or No_Implicit_Task_Allocations is
+    --      active. Only used by the binder to generate stacks for these tasks
+    --      at bind time.
+ 
+    --    Sec_Stack_Count
+    --      The number of secondary stacks belonging to tasks defined within the
+    --      unit that have no Secondary_Stack_Size specified when the either
+    --      the No_Implicit_Heap_Allocations or No_Implicit_Task_Allocations
+    --      restrictions are active. Only used by the binder to generate stacks
+    --      for these tasks at bind time.
+ 
     --    Serial_Number
     --      This field holds a serial number used by New_Internal_Name to
     --      generate unique temporary numbers on a unit by unit basis. The
*************** package Lib is
*** 428,439 ****
--- 455,474 ----
     function Generate_Code    (U : Unit_Number_Type) return Boolean;
     function Ident_String     (U : Unit_Number_Type) return Node_Id;
     function Has_RACW         (U : Unit_Number_Type) return Boolean;
+    function Is_Predefined_Renaming
+                              (U : Unit_Number_Type) return Boolean;
+    function Is_Internal_Unit (U : Unit_Number_Type) return Boolean;
+    function Is_Predefined_Unit
+                              (U : Unit_Number_Type) return Boolean;
     function Loading          (U : Unit_Number_Type) return Boolean;
     function Main_CPU         (U : Unit_Number_Type) return Int;
     function Main_Priority    (U : Unit_Number_Type) return Int;
     function Munit_Index      (U : Unit_Number_Type) return Nat;
     function No_Elab_Code_All (U : Unit_Number_Type) return Boolean;
     function OA_Setting       (U : Unit_Number_Type) return Character;
+    function Primary_Stack_Count
+                              (U : Unit_Number_Type) return Int;
+    function Sec_Stack_Count  (U : Unit_Number_Type) return Int;
     function Source_Index     (U : Unit_Number_Type) return Source_File_Index;
     function Unit_File_Name   (U : Unit_Number_Type) return File_Name_Type;
     function Unit_Name        (U : Unit_Number_Type) return Unit_Name_Type;
*************** package Lib is
*** 465,477 ****
     --  avoid registering switches added automatically by the gcc driver at the
     --  end of the command line.
  
!    function Earlier_In_Extended_Unit (S1, S2 : Source_Ptr) return Boolean;
     --  Given two Sloc values for which In_Same_Extended_Unit is true, determine
     --  if S1 appears before S2. Returns True if S1 appears before S2, and False
     --  otherwise. The result is undefined if S1 and S2 are not in the same
     --  extended unit. Note: this routine will not give reliable results if
     --  called after Sprint has been called with -gnatD set.
  
     procedure Enable_Switch_Storing;
     --  Enable registration of switches by Store_Compilation_Switch. Used to
     --  avoid registering switches added automatically by the gcc driver at the
--- 500,519 ----
     --  avoid registering switches added automatically by the gcc driver at the
     --  end of the command line.
  
!    function Earlier_In_Extended_Unit
!      (S1 : Source_Ptr;
!       S2 : Source_Ptr) return Boolean;
     --  Given two Sloc values for which In_Same_Extended_Unit is true, determine
     --  if S1 appears before S2. Returns True if S1 appears before S2, and False
     --  otherwise. The result is undefined if S1 and S2 are not in the same
     --  extended unit. Note: this routine will not give reliable results if
     --  called after Sprint has been called with -gnatD set.
  
+    function Earlier_In_Extended_Unit
+      (N1 : Node_Or_Entity_Id;
+       N2 : Node_Or_Entity_Id) return Boolean;
+    --  Same as above, but the inputs denote nodes or entities
+ 
     procedure Enable_Switch_Storing;
     --  Enable registration of switches by Store_Compilation_Switch. Used to
     --  avoid registering switches added automatically by the gcc driver at the
*************** package Lib is
*** 493,499 ****
     --  Return the Nth stored compilation switch, or null if less than N
     --  switches have been stored. Used by ASIS and back ends written in Ada.
  
!    function Generic_May_Lack_ALI (Sfile : File_Name_Type) return Boolean;
     --  Generic units must be separately compiled. Since we always use
     --  macro substitution for generics, the resulting object file is a dummy
     --  one with no code, but the ALI file has the normal form, and we need
--- 535,541 ----
     --  Return the Nth stored compilation switch, or null if less than N
     --  switches have been stored. Used by ASIS and back ends written in Ada.
  
!    function Generic_May_Lack_ALI (Unum : Unit_Number_Type) return Boolean;
     --  Generic units must be separately compiled. Since we always use
     --  macro substitution for generics, the resulting object file is a dummy
     --  one with no code, but the ALI file has the normal form, and we need
*************** package Lib is
*** 597,604 ****
--- 639,658 ----
     --  of the descendant packages of one of these three packages).
  
     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;
+    pragma Inline (In_Internal_Unit);
+    --  Same as In_Predefined_Unit, except units in the GNAT hierarchy are
+    --  included.
+ 
+    function In_Predefined_Renaming (N : Node_Or_Entity_Id) return Boolean;
+    function In_Predefined_Renaming (S : Source_Ptr) return Boolean;
+    pragma Inline (In_Predefined_Renaming);
+    --  Returns True if N or S is in a predefined renaming unit
+ 
     function In_Same_Code_Unit (N1, N2 : Node_Or_Entity_Id) return Boolean;
     pragma Inline (In_Same_Code_Unit);
     --  Determines if the two nodes or entities N1 and N2 are in the same
*************** package Lib is
*** 627,632 ****
--- 681,693 ----
     --  source unit, the criterion being that Get_Source_Unit yields the
     --  same value for each argument.
  
+    procedure Increment_Primary_Stack_Count (Increment : Int);
+    --  Increment the Primary_Stack_Count field for the current unit by
+    --  Increment.
+ 
+    procedure Increment_Sec_Stack_Count (Increment : Int);
+    --  Increment the Sec_Stack_Count field for the current unit by Increment
+ 
     function Increment_Serial_Number return Nat;
     --  Increment Serial_Number field for current unit, and return the
     --  incremented value.
*************** private
*** 759,764 ****
--- 820,827 ----
     pragma Inline (Fatal_Error);
     pragma Inline (Generate_Code);
     pragma Inline (Has_RACW);
+    pragma Inline (Increment_Primary_Stack_Count);
+    pragma Inline (Increment_Sec_Stack_Count);
     pragma Inline (Increment_Serial_Number);
     pragma Inline (Loading);
     pragma Inline (Main_CPU);
*************** private
*** 771,776 ****
--- 834,844 ----
     pragma Inline (Set_Fatal_Error);
     pragma Inline (Set_Generate_Code);
     pragma Inline (Set_Has_RACW);
+    pragma Inline (Is_Predefined_Renaming);
+    pragma Inline (Is_Internal_Unit);
+    pragma Inline (Is_Predefined_Unit);
+    pragma Inline (Primary_Stack_Count);
+    pragma Inline (Sec_Stack_Count);
     pragma Inline (Set_Loading);
     pragma Inline (Set_Main_CPU);
     pragma Inline (Set_Main_Priority);
*************** private
*** 784,812 ****
     --  The Units Table
  
     type Unit_Record is record
!       Unit_File_Name    : File_Name_Type;
!       Unit_Name         : Unit_Name_Type;
!       Munit_Index       : Nat;
!       Expected_Unit     : Unit_Name_Type;
!       Source_Index      : Source_File_Index;
!       Cunit             : Node_Id;
!       Cunit_Entity      : Entity_Id;
!       Dependency_Num    : Int;
!       Ident_String      : Node_Id;
!       Main_Priority     : Int;
!       Main_CPU          : Int;
!       Serial_Number     : Nat;
!       Version           : Word;
!       Error_Location    : Source_Ptr;
!       Fatal_Error       : Fatal_Type;
!       Generate_Code     : Boolean;
!       Has_RACW          : Boolean;
!       Dynamic_Elab      : Boolean;
!       No_Elab_Code_All  : Boolean;
!       Filler            : Boolean;
!       Loading           : Boolean;
!       OA_Setting        : Character;
!       SPARK_Mode_Pragma : Node_Id;
     end record;
  
     --  The following representation clause ensures that the above record
--- 852,886 ----
     --  The Units Table
  
     type Unit_Record is record
!       Unit_File_Name         : File_Name_Type;
!       Unit_Name              : Unit_Name_Type;
!       Munit_Index            : Nat;
!       Expected_Unit          : Unit_Name_Type;
!       Source_Index           : Source_File_Index;
!       Cunit                  : Node_Id;
!       Cunit_Entity           : Entity_Id;
!       Dependency_Num         : Int;
!       Ident_String           : Node_Id;
!       Main_Priority          : Int;
!       Main_CPU               : Int;
!       Primary_Stack_Count    : Int;
!       Sec_Stack_Count        : Int;
!       Serial_Number          : Nat;
!       Version                : Word;
!       Error_Location         : Source_Ptr;
!       Fatal_Error            : Fatal_Type;
!       Generate_Code          : Boolean;
!       Has_RACW               : Boolean;
!       Dynamic_Elab           : Boolean;
!       No_Elab_Code_All       : Boolean;
!       Filler                 : Boolean;
!       Loading                : Boolean;
!       OA_Setting             : Character;
! 
!       Is_Predefined_Renaming : Boolean;
!       Is_Internal_Unit       : Boolean;
!       Is_Predefined_Unit     : Boolean;
!       Filler2                : Boolean;
     end record;
  
     --  The following representation clause ensures that the above record
*************** private
*** 814,845 ****
     --  written by Tree_Gen, we do not write uninitialized values to the file.
  
     for Unit_Record use record
!       Unit_File_Name    at  0 range 0 .. 31;
!       Unit_Name         at  4 range 0 .. 31;
!       Munit_Index       at  8 range 0 .. 31;
!       Expected_Unit     at 12 range 0 .. 31;
!       Source_Index      at 16 range 0 .. 31;
!       Cunit             at 20 range 0 .. 31;
!       Cunit_Entity      at 24 range 0 .. 31;
!       Dependency_Num    at 28 range 0 .. 31;
!       Ident_String      at 32 range 0 .. 31;
!       Main_Priority     at 36 range 0 .. 31;
!       Main_CPU          at 40 range 0 .. 31;
!       Serial_Number     at 44 range 0 .. 31;
!       Version           at 48 range 0 .. 31;
!       Error_Location    at 52 range 0 .. 31;
!       Fatal_Error       at 56 range 0 ..  7;
!       Generate_Code     at 57 range 0 ..  7;
!       Has_RACW          at 58 range 0 ..  7;
!       Dynamic_Elab      at 59 range 0 ..  7;
!       No_Elab_Code_All  at 60 range 0 ..  7;
!       Filler            at 61 range 0 ..  7;
!       OA_Setting        at 62 range 0 ..  7;
!       Loading           at 63 range 0 ..  7;
!       SPARK_Mode_Pragma at 64 range 0 .. 31;
     end record;
  
!    for Unit_Record'Size use 68 * 8;
     --  This ensures that we did not leave out any fields
  
     package Units is new Table.Table (
--- 888,925 ----
     --  written by Tree_Gen, we do not write uninitialized values to the file.
  
     for Unit_Record use record
!       Unit_File_Name         at  0 range 0 .. 31;
!       Unit_Name              at  4 range 0 .. 31;
!       Munit_Index            at  8 range 0 .. 31;
!       Expected_Unit          at 12 range 0 .. 31;
!       Source_Index           at 16 range 0 .. 31;
!       Cunit                  at 20 range 0 .. 31;
!       Cunit_Entity           at 24 range 0 .. 31;
!       Dependency_Num         at 28 range 0 .. 31;
!       Ident_String           at 32 range 0 .. 31;
!       Main_Priority          at 36 range 0 .. 31;
!       Main_CPU               at 40 range 0 .. 31;
!       Primary_Stack_Count    at 44 range 0 .. 31;
!       Sec_Stack_Count        at 48 range 0 .. 31;
!       Serial_Number          at 52 range 0 .. 31;
!       Version                at 56 range 0 .. 31;
!       Error_Location         at 60 range 0 .. 31;
!       Fatal_Error            at 64 range 0 ..  7;
!       Generate_Code          at 65 range 0 ..  7;
!       Has_RACW               at 66 range 0 ..  7;
!       Dynamic_Elab           at 67 range 0 ..  7;
!       No_Elab_Code_All       at 68 range 0 ..  7;
!       Filler                 at 69 range 0 ..  7;
!       OA_Setting             at 70 range 0 ..  7;
!       Loading                at 71 range 0 ..  7;
! 
!       Is_Predefined_Renaming at 72 range 0 .. 7;
!       Is_Internal_Unit       at 73 range 0 .. 7;
!       Is_Predefined_Unit     at 74 range 0 .. 7;
!       Filler2                at 75 range 0 .. 7;
     end record;
  
!    for Unit_Record'Size use 76 * 8;
     --  This ensures that we did not leave out any fields
  
     package Units is new Table.Table (
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/a-astaco.adb gcc-8.1.0/gcc/ada/libgnarl/a-astaco.adb
*** gcc-7.3.0/gcc/ada/libgnarl/a-astaco.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/a-astaco.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,65 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --        A D A . A S Y N C H R O N O U S _ T A S K _ C O N T R O L         --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is 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 a dummy body, which will not normally be compiled when used with
+ --  standard versions of GNAT, which do not support this package. See comments
+ --  in spec for further details.
+ 
+ package body Ada.Asynchronous_Task_Control is
+ 
+    --------------
+    -- Continue --
+    --------------
+ 
+    procedure Continue (T : Ada.Task_Identification.Task_Id) is
+    begin
+       null;
+    end Continue;
+ 
+    ----------
+    -- Hold --
+    ----------
+ 
+    procedure Hold (T : Ada.Task_Identification.Task_Id) is
+    begin
+       raise Program_Error;
+    end Hold;
+ 
+    -------------
+    -- Is_Held --
+    -------------
+ 
+    function Is_Held (T : Ada.Task_Identification.Task_Id) return Boolean is
+    begin
+       return False;
+    end Is_Held;
+ 
+ end Ada.Asynchronous_Task_Control;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/a-astaco.ads gcc-8.1.0/gcc/ada/libgnarl/a-astaco.ads
*** gcc-7.3.0/gcc/ada/libgnarl/a-astaco.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/a-astaco.ads	Fri Sep  8 13:14:59 2017
***************
*** 0 ****
--- 1,41 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --        A D A . A S Y N C H R O N O U S _ T A S K _ C O N T R O L         --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ -- This specification is derived from the Ada Reference Manual for use with --
+ -- GNAT.  In accordance with the copyright of that document, you can freely --
+ -- copy and modify this specification,  provided that if you redistribute a --
+ -- modified version,  any changes that you have made are clearly indicated. --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This unit is not implemented in typical GNAT implementations that lie on
+ --  top of operating systems, because it is infeasible to implement in such
+ --  environments. The RM anticipates this situation (RM D.11(10)), and permits
+ --  an implementation to leave this unimplemented even if the Real-Time Systems
+ --  annex is fully supported.
+ 
+ --  If a target environment provides appropriate support for this package, then
+ --  the Unimplemented_Unit pragma should be removed from this spec, and an
+ --  appropriate body provided. The framework for such a body is included in the
+ --  distributed sources.
+ 
+ with Ada.Task_Identification;
+ 
+ package Ada.Asynchronous_Task_Control is
+    pragma Preelaborate;
+    --  In accordance with Ada 2005 AI-362
+ 
+    pragma Unimplemented_Unit;
+ 
+    procedure Hold (T : Ada.Task_Identification.Task_Id);
+ 
+    procedure Continue (T : Ada.Task_Identification.Task_Id);
+ 
+    function Is_Held (T : Ada.Task_Identification.Task_Id) return Boolean;
+ 
+ end Ada.Asynchronous_Task_Control;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/a-dinopr.ads gcc-8.1.0/gcc/ada/libgnarl/a-dinopr.ads
*** gcc-7.3.0/gcc/ada/libgnarl/a-dinopr.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/a-dinopr.ads	Fri Sep  8 13:14:59 2017
***************
*** 0 ****
--- 1,31 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --       A D A . D I S P A T C H I N G . N O N _ P R E E M P T I V E        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ -- This specification is derived from the Ada Reference Manual for use with --
+ -- GNAT.  In accordance with the copyright of that document, you can freely --
+ -- copy and modify this specification,  provided that if you redistribute a --
+ -- modified version,  any changes that you have made are clearly indicated. --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This unit is not implemented in typical GNAT implementations that lie on
+ --  top of operating systems, because it is infeasible to implement in such
+ --  environments.
+ 
+ --  If a target environment provides appropriate support for this package,
+ --  then the Unimplemented_Unit pragma should be removed from this spec and
+ --  an appropriate body provided.
+ 
+ package Ada.Dispatching.Non_Preemptive is
+    pragma Preelaborate (Non_Preemptive);
+ 
+    pragma Unimplemented_Unit;
+ 
+    procedure Yield_To_Higher;
+    procedure Yield_To_Same_Or_Higher renames Yield;
+ end Ada.Dispatching.Non_Preemptive;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/a-diroro.ads gcc-8.1.0/gcc/ada/libgnarl/a-diroro.ads
*** gcc-7.3.0/gcc/ada/libgnarl/a-diroro.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/a-diroro.ads	Fri Sep  8 13:14:59 2017
***************
*** 0 ****
--- 1,39 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --          A D A . D I S P A T C H I N G . R O U N D _ R O B I N           --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ -- This specification is derived from the Ada Reference Manual for use with --
+ -- GNAT.  In accordance with the copyright of that document, you can freely --
+ -- copy and modify this specification,  provided that if you redistribute a --
+ -- modified version,  any changes that you have made are clearly indicated. --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System;
+ with Ada.Real_Time;
+ 
+ package Ada.Dispatching.Round_Robin is
+ 
+    pragma Unimplemented_Unit;
+ 
+    Default_Quantum : constant Ada.Real_Time.Time_Span :=
+                        Ada.Real_Time.Milliseconds (10);
+ 
+    procedure Set_Quantum
+      (Pri     : System.Priority;
+       Quantum : Ada.Real_Time.Time_Span);
+ 
+    procedure Set_Quantum
+      (Low, High : System.Priority;
+       Quantum   : Ada.Real_Time.Time_Span);
+ 
+    function Actual_Quantum
+      (Pri : System.Priority) return Ada.Real_Time.Time_Span;
+ 
+    function Is_Round_Robin (Pri : System.Priority) return Boolean;
+ 
+ end Ada.Dispatching.Round_Robin;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/a-disedf.ads gcc-8.1.0/gcc/ada/libgnarl/a-disedf.ads
*** gcc-7.3.0/gcc/ada/libgnarl/a-disedf.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/a-disedf.ads	Fri Sep  8 13:14:59 2017
***************
*** 0 ****
--- 1,54 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                  A D A . D I S P A T C H I N G . E D F                   --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ -- This specification is derived from the Ada Reference Manual for use with --
+ -- GNAT.  In accordance with the copyright of that document, you can freely --
+ -- copy and modify this specification,  provided that if you redistribute a --
+ -- modified version,  any changes that you have made are clearly indicated. --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This unit is not implemented in typical GNAT implementations that lie on
+ --  top of operating systems, because it is infeasible to implement in such
+ --  environments.
+ 
+ --  If a target environment provides appropriate support for this package,
+ --  then the Unimplemented_Unit pragma should be removed from this spec and
+ --  an appropriate body provided.
+ 
+ with Ada.Real_Time;
+ with Ada.Task_Identification;
+ 
+ package Ada.Dispatching.EDF is
+    pragma Preelaborate;
+ 
+    pragma Unimplemented_Unit;
+ 
+    subtype Deadline is Ada.Real_Time.Time;
+ 
+    Default_Deadline : constant Deadline := Ada.Real_Time.Time_Last;
+ 
+    procedure Set_Deadline
+       (D : Deadline;
+        T : Ada.Task_Identification.Task_Id :=
+              Ada.Task_Identification.Current_Task);
+ 
+    procedure Delay_Until_And_Set_Deadline
+       (Delay_Until_Time : Ada.Real_Time.Time;
+        Deadline_Offset  : Ada.Real_Time.Time_Span);
+ 
+    function Get_Deadline
+       (T : Ada.Task_Identification.Task_Id :=
+              Ada.Task_Identification.Current_Task)
+        return Deadline
+    with
+      SPARK_Mode,
+      Volatile_Function,
+      Global => Ada.Task_Identification.Tasking_State;
+ 
+ end Ada.Dispatching.EDF;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/a-dispat.adb gcc-8.1.0/gcc/ada/libgnarl/a-dispat.adb
*** gcc-7.3.0/gcc/ada/libgnarl/a-dispat.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/a-dispat.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,57 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       A D A . D I S P A T C H I N G                      --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --             Copyright (C) 2015-2018, Free Software Foundation, Inc.      --
+ --                                                                          --
+ -- GNAT is 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.Exceptions;
+ with System.Tasking;
+ with System.Task_Primitives.Operations;
+ 
+ package body Ada.Dispatching is
+ 
+    procedure Yield is
+       Self_Id : constant System.Tasking.Task_Id :=
+                   System.Task_Primitives.Operations.Self;
+ 
+    begin
+       --  If pragma Detect_Blocking is active, Program_Error must be
+       --  raised if this potentially blocking operation is called from a
+       --  protected action.
+ 
+       if System.Tasking.Detect_Blocking
+         and then Self_Id.Common.Protected_Action_Nesting > 0
+       then
+          Ada.Exceptions.Raise_Exception
+            (Program_Error'Identity, "potentially blocking operation");
+       else
+          System.Task_Primitives.Operations.Yield;
+       end if;
+    end Yield;
+ 
+ end Ada.Dispatching;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/a-dispat.ads gcc-8.1.0/gcc/ada/libgnarl/a-dispat.ads
*** gcc-7.3.0/gcc/ada/libgnarl/a-dispat.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/a-dispat.ads	Fri Sep  8 13:14:59 2017
***************
*** 0 ****
--- 1,23 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       A D A . D I S P A T C H I N G                      --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ -- This specification is derived from the Ada Reference Manual for use with --
+ -- GNAT.  In accordance with the copyright of that document, you can freely --
+ -- copy and modify this specification,  provided that if you redistribute a --
+ -- modified version,  any changes that you have made are clearly indicated. --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ package Ada.Dispatching is
+    pragma Preelaborate (Dispatching);
+ 
+    procedure Yield with
+      Global => null;
+ 
+    Dispatching_Policy_Error : exception;
+ end Ada.Dispatching;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/a-dynpri.adb gcc-8.1.0/gcc/ada/libgnarl/a-dynpri.adb
*** gcc-7.3.0/gcc/ada/libgnarl/a-dynpri.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/a-dynpri.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,164 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                  GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                --
+ --                                                                          --
+ --                 A D A . D Y N A M I C _ P R I O R I T I E S              --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Task_Primitives.Operations;
+ with System.Tasking;
+ with System.Parameters;
+ with System.Soft_Links;
+ 
+ with Ada.Unchecked_Conversion;
+ 
+ package body Ada.Dynamic_Priorities is
+ 
+    package STPO renames System.Task_Primitives.Operations;
+    package SSL renames System.Soft_Links;
+ 
+    use System.Parameters;
+    use System.Tasking;
+ 
+    function Convert_Ids is new
+      Ada.Unchecked_Conversion
+        (Task_Identification.Task_Id, System.Tasking.Task_Id);
+ 
+    ------------------
+    -- Get_Priority --
+    ------------------
+ 
+    --  Inquire base priority of a task
+ 
+    function Get_Priority
+      (T : Ada.Task_Identification.Task_Id :=
+         Ada.Task_Identification.Current_Task) return System.Any_Priority
+    is
+       Target : constant Task_Id := Convert_Ids (T);
+       Error_Message : constant String := "Trying to get the priority of a ";
+ 
+    begin
+       if Target = Convert_Ids (Ada.Task_Identification.Null_Task_Id) then
+          raise Program_Error with Error_Message & "null task";
+       end if;
+ 
+       if Task_Identification.Is_Terminated (T) then
+          raise Tasking_Error with Error_Message & "terminated task";
+       end if;
+ 
+       return Target.Common.Base_Priority;
+    end Get_Priority;
+ 
+    ------------------
+    -- Set_Priority --
+    ------------------
+ 
+    --  Change base priority of a task dynamically
+ 
+    procedure Set_Priority
+      (Priority : System.Any_Priority;
+       T        : Ada.Task_Identification.Task_Id :=
+         Ada.Task_Identification.Current_Task)
+    is
+       Target        : constant Task_Id := Convert_Ids (T);
+       Error_Message : constant String := "Trying to set the priority of a ";
+       Yield_Needed  : Boolean;
+ 
+    begin
+       if Target = Convert_Ids (Ada.Task_Identification.Null_Task_Id) then
+          raise Program_Error with Error_Message & "null task";
+       end if;
+ 
+       --  Setting the priority of an already-terminated task doesn't do
+       --  anything (see RM-D.5.1(7)). Note that Get_Priority is different in
+       --  this regard.
+ 
+       if Task_Identification.Is_Terminated (T) then
+          return;
+       end if;
+ 
+       SSL.Abort_Defer.all;
+ 
+       if Single_Lock then
+          STPO.Lock_RTS;
+       end if;
+ 
+       STPO.Write_Lock (Target);
+ 
+       Target.Common.Base_Priority := Priority;
+ 
+       if Target.Common.Call /= null
+         and then
+           Target.Common.Call.Acceptor_Prev_Priority /= Priority_Not_Boosted
+       then
+          --  Target is within a rendezvous, so ensure the correct priority
+          --  will be reset when finishing the rendezvous, and only change the
+          --  priority immediately if the new priority is greater than the
+          --  current (inherited) priority.
+ 
+          Target.Common.Call.Acceptor_Prev_Priority := Priority;
+ 
+          if Priority >= Target.Common.Current_Priority then
+             Yield_Needed := True;
+             STPO.Set_Priority (Target, Priority);
+          else
+             Yield_Needed := False;
+          end if;
+ 
+       else
+          Yield_Needed := True;
+          STPO.Set_Priority (Target, Priority);
+ 
+          if Target.Common.State = Entry_Caller_Sleep then
+             Target.Pending_Priority_Change := True;
+             STPO.Wakeup (Target, Target.Common.State);
+          end if;
+       end if;
+ 
+       STPO.Unlock (Target);
+ 
+       if Single_Lock then
+          STPO.Unlock_RTS;
+       end if;
+ 
+       if STPO.Self = Target and then Yield_Needed then
+ 
+          --  Yield is needed to enforce FIFO task dispatching
+ 
+          --  LL Set_Priority is made while holding the RTS lock so that it is
+          --  inheriting high priority until it release all the RTS locks.
+ 
+          --  If this is used in a system where Ceiling Locking is not enforced
+          --  we may end up getting two Yield effects.
+ 
+          STPO.Yield;
+       end if;
+ 
+       SSL.Abort_Undefer.all;
+    end Set_Priority;
+ 
+ end Ada.Dynamic_Priorities;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/a-dynpri.ads gcc-8.1.0/gcc/ada/libgnarl/a-dynpri.ads
*** gcc-7.3.0/gcc/ada/libgnarl/a-dynpri.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/a-dynpri.ads	Fri Sep  8 13:14:59 2017
***************
*** 0 ****
--- 1,33 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --               A D A . D Y N A M I C _ P R I O R I T I E S                --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ -- This specification is derived from the Ada Reference Manual for use with --
+ -- GNAT.  In accordance with the copyright of that document, you can freely --
+ -- copy and modify this specification,  provided that if you redistribute a --
+ -- modified version,  any changes that you have made are clearly indicated. --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System;
+ with Ada.Task_Identification;
+ 
+ package Ada.Dynamic_Priorities is
+    pragma Preelaborate;
+    --  In accordance with Ada 2005 AI-362
+ 
+    procedure Set_Priority
+      (Priority : System.Any_Priority;
+       T        : Ada.Task_Identification.Task_Id :=
+                    Ada.Task_Identification.Current_Task);
+ 
+    function Get_Priority
+      (T        : Ada.Task_Identification.Task_Id :=
+                    Ada.Task_Identification.Current_Task)
+      return System.Any_Priority;
+ 
+ end Ada.Dynamic_Priorities;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/a-etgrbu.ads gcc-8.1.0/gcc/ada/libgnarl/a-etgrbu.ads
*** gcc-7.3.0/gcc/ada/libgnarl/a-etgrbu.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/a-etgrbu.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,110 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --      A D A . E X E C U T I O N _ T I M E . G R O U P _ B U D G E T S     --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --            Copyright (C) 2015-2018, Free Software Foundation, 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 unit is not implemented in typical GNAT implementations that lie on
+ --  top of operating systems, because it is infeasible to implement in such
+ --  environments.
+ 
+ --  If a target environment provides appropriate support for this package,
+ --  then the Unimplemented_Unit pragma should be removed from this spec and
+ --  an appropriate body provided.
+ 
+ with System;
+ with System.Multiprocessors;
+ 
+ package Ada.Execution_Time.Group_Budgets is
+    pragma Unimplemented_Unit;
+ 
+    type Group_Budget
+      (CPU : System.Multiprocessors.CPU := System.Multiprocessors.CPU'First)
+    is tagged limited private;
+ 
+    type Group_Budget_Handler is access
+       protected procedure (GB : in out Group_Budget);
+ 
+    type Task_Array is
+       array (Positive range <>) of Ada.Task_Identification.Task_Id;
+ 
+    Min_Handler_Ceiling : constant System.Any_Priority :=
+                            System.Any_Priority'First;
+    --  Initial value is an arbitrary choice ???
+ 
+    procedure Add_Task
+      (GB : in out Group_Budget;
+       T  : Ada.Task_Identification.Task_Id);
+ 
+    procedure Remove_Task
+      (GB : in out Group_Budget;
+       T  : Ada.Task_Identification.Task_Id);
+ 
+    function Is_Member
+      (GB : Group_Budget;
+       T  : Ada.Task_Identification.Task_Id) return Boolean;
+ 
+    function Is_A_Group_Member
+      (T : Ada.Task_Identification.Task_Id) return Boolean;
+ 
+    function Members (GB : Group_Budget) return Task_Array;
+ 
+    procedure Replenish
+      (GB : in out Group_Budget;
+       To : Ada.Real_Time.Time_Span);
+ 
+    procedure Add
+      (GB       : in out Group_Budget;
+       Interval : Ada.Real_Time.Time_Span);
+ 
+    function Budget_Has_Expired (GB : Group_Budget) return Boolean;
+ 
+    function Budget_Remaining
+      (GB : Group_Budget) return Ada.Real_Time.Time_Span;
+ 
+    procedure Set_Handler
+      (GB      : in out Group_Budget;
+       Handler : Group_Budget_Handler);
+ 
+    function Current_Handler (GB : Group_Budget) return Group_Budget_Handler;
+ 
+    procedure Cancel_Handler
+      (GB        : in out Group_Budget;
+       Cancelled : out Boolean);
+ 
+    Group_Budget_Error : exception;
+ 
+ private
+    type Group_Budget
+      (CPU : System.Multiprocessors.CPU := System.Multiprocessors.CPU'First)
+    is tagged limited null record;
+ end Ada.Execution_Time.Group_Budgets;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/a-exetim.ads gcc-8.1.0/gcc/ada/libgnarl/a-exetim.ads
*** gcc-7.3.0/gcc/ada/libgnarl/a-exetim.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/a-exetim.ads	Fri Sep  8 13:14:59 2017
***************
*** 0 ****
--- 1,119 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                   A D A . E X E C U T I O N _ T I M E                    --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ -- This specification is derived from the Ada Reference Manual for use with --
+ -- GNAT.  In accordance with the copyright of that document, you can freely --
+ -- copy and modify this specification,  provided that if you redistribute a --
+ -- modified version,  any changes that you have made are clearly indicated. --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This unit is not implemented in typical GNAT implementations that lie on
+ --  top of operating systems, because it is infeasible to implement in such
+ --  environments.
+ 
+ --  If a target environment provides appropriate support for this package
+ --  then the Unimplemented_Unit pragma should be removed from this spec and
+ --  an appropriate body provided.
+ 
+ with Ada.Task_Identification;
+ with Ada.Real_Time;
+ 
+ package Ada.Execution_Time with
+   SPARK_Mode
+ is
+    pragma Preelaborate;
+ 
+    pragma Unimplemented_Unit;
+ 
+    type CPU_Time is private;
+ 
+    CPU_Time_First : constant CPU_Time;
+    CPU_Time_Last  : constant CPU_Time;
+    CPU_Time_Unit  : constant := 0.000001;
+    CPU_Tick       : constant Ada.Real_Time.Time_Span;
+ 
+    use type Ada.Task_Identification.Task_Id;
+ 
+    function Clock
+      (T : Ada.Task_Identification.Task_Id :=
+         Ada.Task_Identification.Current_Task)
+       return CPU_Time
+    with
+      Volatile_Function,
+      Global => Ada.Real_Time.Clock_Time,
+      Pre    => T /= Ada.Task_Identification.Null_Task_Id;
+ 
+    function "+"
+      (Left  : CPU_Time;
+       Right : Ada.Real_Time.Time_Span) return CPU_Time
+    with
+      Global => null;
+ 
+    function "+"
+      (Left  : Ada.Real_Time.Time_Span;
+       Right : CPU_Time) return CPU_Time
+    with
+      Global => null;
+ 
+    function "-"
+      (Left  : CPU_Time;
+       Right : Ada.Real_Time.Time_Span) return CPU_Time
+    with
+      Global => null;
+ 
+    function "-"
+      (Left  : CPU_Time;
+       Right : CPU_Time) return Ada.Real_Time.Time_Span
+    with
+      Global => null;
+ 
+    function "<"  (Left, Right : CPU_Time) return Boolean with
+      Global => null;
+    function "<=" (Left, Right : CPU_Time) return Boolean with
+      Global => null;
+    function ">"  (Left, Right : CPU_Time) return Boolean with
+      Global => null;
+    function ">=" (Left, Right : CPU_Time) return Boolean with
+      Global => null;
+ 
+    procedure Split
+      (T  : CPU_Time;
+       SC : out Ada.Real_Time.Seconds_Count;
+       TS : out Ada.Real_Time.Time_Span)
+    with
+      Global => null;
+ 
+    function Time_Of
+      (SC : Ada.Real_Time.Seconds_Count;
+       TS : Ada.Real_Time.Time_Span := Ada.Real_Time.Time_Span_Zero)
+       return CPU_Time
+    with
+      Global => null;
+ 
+    Interrupt_Clocks_Supported          : constant Boolean := False;
+    Separate_Interrupt_Clocks_Supported : constant Boolean := False;
+ 
+    pragma Warnings (Off, "check will fail at run time");
+    function Clock_For_Interrupts return CPU_Time with
+      Volatile_Function,
+      Global => Ada.Real_Time.Clock_Time,
+      Pre    => Interrupt_Clocks_Supported;
+    pragma Warnings (On, "check will fail at run time");
+ 
+ private
+    pragma SPARK_Mode (Off);
+ 
+    type CPU_Time is new Ada.Real_Time.Time;
+ 
+    CPU_Time_First : constant CPU_Time  := CPU_Time (Ada.Real_Time.Time_First);
+    CPU_Time_Last  : constant CPU_Time  := CPU_Time (Ada.Real_Time.Time_Last);
+ 
+    CPU_Tick : constant Ada.Real_Time.Time_Span := Ada.Real_Time.Tick;
+ 
+ end Ada.Execution_Time;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/a-exetim__darwin.adb gcc-8.1.0/gcc/ada/libgnarl/a-exetim__darwin.adb
*** gcc-7.3.0/gcc/ada/libgnarl/a-exetim__darwin.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/a-exetim__darwin.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,209 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                   A D A . E X E C U T I O N _ T I M E                    --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --         Copyright (C) 2007-2018, Free Software Foundation, Inc.          --
+ --                                                                          --
+ -- GNAT is 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 Darwin version of this package
+ 
+ with Ada.Task_Identification;  use Ada.Task_Identification;
+ with Ada.Unchecked_Conversion;
+ 
+ with System.Tasking;
+ with System.OS_Interface; use System.OS_Interface;
+ with System.Task_Primitives.Operations; use System.Task_Primitives.Operations;
+ 
+ with Interfaces.C; use Interfaces.C;
+ 
+ package body Ada.Execution_Time is
+ 
+    ---------
+    -- "+" --
+    ---------
+ 
+    function "+"
+      (Left  : CPU_Time;
+       Right : Ada.Real_Time.Time_Span) return CPU_Time
+    is
+       use type Ada.Real_Time.Time;
+    begin
+       return CPU_Time (Ada.Real_Time.Time (Left) + Right);
+    end "+";
+ 
+    function "+"
+      (Left  : Ada.Real_Time.Time_Span;
+       Right : CPU_Time) return CPU_Time
+    is
+       use type Ada.Real_Time.Time;
+    begin
+       return CPU_Time (Left + Ada.Real_Time.Time (Right));
+    end "+";
+ 
+    ---------
+    -- "-" --
+    ---------
+ 
+    function "-"
+      (Left  : CPU_Time;
+       Right : Ada.Real_Time.Time_Span) return CPU_Time
+    is
+       use type Ada.Real_Time.Time;
+    begin
+       return CPU_Time (Ada.Real_Time.Time (Left) - Right);
+    end "-";
+ 
+    function "-"
+      (Left  : CPU_Time;
+       Right : CPU_Time) return Ada.Real_Time.Time_Span
+    is
+       use type Ada.Real_Time.Time;
+    begin
+       return (Ada.Real_Time.Time (Left) - Ada.Real_Time.Time (Right));
+    end "-";
+ 
+    -----------
+    -- Clock --
+    -----------
+ 
+    function Clock
+      (T : Ada.Task_Identification.Task_Id :=
+         Ada.Task_Identification.Current_Task) return CPU_Time
+    is
+       function Convert_Ids is new
+         Ada.Unchecked_Conversion (Task_Id, System.Tasking.Task_Id);
+ 
+       function To_CPU_Time is
+         new Ada.Unchecked_Conversion (Duration, CPU_Time);
+       --  Time is equal to Duration (although it is a private type) and
+       --  CPU_Time is equal to Time.
+ 
+       subtype integer_t is Interfaces.C.int;
+       subtype mach_port_t is integer_t;
+       --  Type definition for Mach.
+ 
+       type time_value_t is record
+          seconds : integer_t;
+          microseconds : integer_t;
+       end record;
+       pragma Convention (C, time_value_t);
+       --  Mach time_value_t
+ 
+       type thread_basic_info_t is record
+          user_time     : time_value_t;
+          system_time   : time_value_t;
+          cpu_usage     : integer_t;
+          policy        : integer_t;
+          run_state     : integer_t;
+          flags         : integer_t;
+          suspend_count : integer_t;
+          sleep_time    : integer_t;
+       end record;
+       pragma Convention (C, thread_basic_info_t);
+       --  Mach structure from thread_info.h
+ 
+       THREAD_BASIC_INFO       : constant := 3;
+       THREAD_BASIC_INFO_COUNT : constant := 10;
+       --  Flavors for basic info
+ 
+       function thread_info (Target : mach_port_t;
+                             Flavor : integer_t;
+                             Thread_Info : System.Address;
+                             Count : System.Address) return integer_t;
+       pragma Import (C, thread_info);
+       --  Mach call to get info on a thread
+ 
+       function pthread_mach_thread_np (Thread : pthread_t) return mach_port_t;
+       pragma Import (C, pthread_mach_thread_np);
+       --  Get Mach thread from posix thread
+ 
+       Result    : Interfaces.C.int;
+       Thread    : pthread_t;
+       Port      : mach_port_t;
+       Ti        : thread_basic_info_t;
+       Count     : integer_t;
+    begin
+       if T = Ada.Task_Identification.Null_Task_Id then
+          raise Program_Error;
+       end if;
+ 
+       Thread := Get_Thread_Id (Convert_Ids (T));
+       Port := pthread_mach_thread_np (Thread);
+       pragma Assert (Port > 0);
+ 
+       Count := THREAD_BASIC_INFO_COUNT;
+       Result := thread_info (Port, THREAD_BASIC_INFO,
+                              Ti'Address, Count'Address);
+       pragma Assert (Result = 0);
+       pragma Assert (Count = THREAD_BASIC_INFO_COUNT);
+ 
+       return To_CPU_Time
+         (Duration (Ti.user_time.seconds + Ti.system_time.seconds)
+            + Duration (Ti.user_time.microseconds
+                          + Ti.system_time.microseconds) / 1E6);
+    end Clock;
+ 
+    --------------------------
+    -- Clock_For_Interrupts --
+    --------------------------
+ 
+    function Clock_For_Interrupts return CPU_Time is
+    begin
+       --  According to AI 0170-1, D.14(18.1/3), if Interrupt_Clocks_Supported
+       --  is set to False the function raises Program_Error.
+ 
+       raise Program_Error;
+       return CPU_Time_First;
+    end Clock_For_Interrupts;
+ 
+    -----------
+    -- Split --
+    -----------
+ 
+    procedure Split
+      (T  : CPU_Time;
+       SC : out Ada.Real_Time.Seconds_Count;
+       TS : out Ada.Real_Time.Time_Span)
+    is
+    begin
+       Ada.Real_Time.Split (Ada.Real_Time.Time (T), SC, TS);
+    end Split;
+ 
+    -------------
+    -- Time_Of --
+    -------------
+ 
+    function Time_Of
+      (SC : Ada.Real_Time.Seconds_Count;
+       TS : Ada.Real_Time.Time_Span := Ada.Real_Time.Time_Span_Zero)
+       return CPU_Time
+    is
+    begin
+       return CPU_Time (Ada.Real_Time.Time_Of (SC, TS));
+    end Time_Of;
+ 
+ end Ada.Execution_Time;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/a-exetim__default.ads gcc-8.1.0/gcc/ada/libgnarl/a-exetim__default.ads
*** gcc-7.3.0/gcc/ada/libgnarl/a-exetim__default.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/a-exetim__default.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,133 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                   A D A . E X E C U T I O N _ T I M E                    --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 2007-2018, Free Software Foundation, 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.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with Ada.Task_Identification;
+ with Ada.Real_Time;
+ 
+ package Ada.Execution_Time with
+   SPARK_Mode
+ is
+ 
+    type CPU_Time is private;
+ 
+    CPU_Time_First : constant CPU_Time;
+    CPU_Time_Last  : constant CPU_Time;
+    CPU_Time_Unit  : constant := Ada.Real_Time.Time_Unit;
+    CPU_Tick       : constant Ada.Real_Time.Time_Span;
+ 
+    use type Ada.Task_Identification.Task_Id;
+ 
+    function Clock
+      (T : Ada.Task_Identification.Task_Id :=
+         Ada.Task_Identification.Current_Task)
+       return CPU_Time
+    with
+      Volatile_Function,
+      Global => Ada.Real_Time.Clock_Time,
+      Pre    => T /= Ada.Task_Identification.Null_Task_Id;
+ 
+    function "+"
+      (Left  : CPU_Time;
+       Right : Ada.Real_Time.Time_Span) return CPU_Time
+    with
+      Global => null;
+ 
+    function "+"
+      (Left  : Ada.Real_Time.Time_Span;
+       Right : CPU_Time) return CPU_Time
+    with
+      Global => null;
+ 
+    function "-"
+      (Left  : CPU_Time;
+       Right : Ada.Real_Time.Time_Span) return CPU_Time
+    with
+      Global => null;
+ 
+    function "-"
+      (Left  : CPU_Time;
+       Right : CPU_Time) return Ada.Real_Time.Time_Span
+    with
+      Global => null;
+ 
+    function "<"  (Left, Right : CPU_Time) return Boolean with
+      Global => null;
+    function "<=" (Left, Right : CPU_Time) return Boolean with
+      Global => null;
+    function ">"  (Left, Right : CPU_Time) return Boolean with
+      Global => null;
+    function ">=" (Left, Right : CPU_Time) return Boolean with
+      Global => null;
+ 
+    procedure Split
+      (T  : CPU_Time;
+       SC : out Ada.Real_Time.Seconds_Count;
+       TS : out Ada.Real_Time.Time_Span)
+    with
+      Global => null;
+ 
+    function Time_Of
+      (SC : Ada.Real_Time.Seconds_Count;
+       TS : Ada.Real_Time.Time_Span := Ada.Real_Time.Time_Span_Zero)
+       return CPU_Time
+    with
+      Global => null;
+ 
+    Interrupt_Clocks_Supported          : constant Boolean := False;
+    Separate_Interrupt_Clocks_Supported : constant Boolean := False;
+ 
+    pragma Warnings (Off, "check will fail at run time");
+    function Clock_For_Interrupts return CPU_Time with
+      Volatile_Function,
+      Global => Ada.Real_Time.Clock_Time,
+      Pre    => Interrupt_Clocks_Supported;
+    pragma Warnings (On, "check will fail at run time");
+ 
+ private
+    pragma SPARK_Mode (Off);
+ 
+    type CPU_Time is new Ada.Real_Time.Time;
+ 
+    CPU_Time_First : constant CPU_Time  := CPU_Time (Ada.Real_Time.Time_First);
+    CPU_Time_Last  : constant CPU_Time  := CPU_Time (Ada.Real_Time.Time_Last);
+ 
+    CPU_Tick : constant Ada.Real_Time.Time_Span := Ada.Real_Time.Tick;
+ 
+    pragma Import (Intrinsic, "<");
+    pragma Import (Intrinsic, "<=");
+    pragma Import (Intrinsic, ">");
+    pragma Import (Intrinsic, ">=");
+ 
+ end Ada.Execution_Time;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/a-exetim__mingw.adb gcc-8.1.0/gcc/ada/libgnarl/a-exetim__mingw.adb
*** gcc-7.3.0/gcc/ada/libgnarl/a-exetim__mingw.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/a-exetim__mingw.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,173 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                   A D A . E X E C U T I O N _ T I M E                    --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --         Copyright (C) 2007-2018, Free Software Foundation, Inc.          --
+ --                                                                          --
+ -- GNAT is 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 Windows native version of this package
+ 
+ with Ada.Task_Identification;           use Ada.Task_Identification;
+ with Ada.Unchecked_Conversion;
+ 
+ with System.OS_Interface;               use System.OS_Interface;
+ with System.Task_Primitives.Operations; use System.Task_Primitives.Operations;
+ with System.Tasking;                    use System.Tasking;
+ with System.Win32;                      use System.Win32;
+ 
+ package body Ada.Execution_Time with
+   SPARK_Mode => Off
+ is
+ 
+    ---------
+    -- "+" --
+    ---------
+ 
+    function "+"
+      (Left  : CPU_Time;
+       Right : Ada.Real_Time.Time_Span) return CPU_Time
+    is
+       use type Ada.Real_Time.Time;
+    begin
+       return CPU_Time (Ada.Real_Time.Time (Left) + Right);
+    end "+";
+ 
+    function "+"
+      (Left  : Ada.Real_Time.Time_Span;
+       Right : CPU_Time) return CPU_Time
+    is
+       use type Ada.Real_Time.Time;
+    begin
+       return CPU_Time (Left + Ada.Real_Time.Time (Right));
+    end "+";
+ 
+    ---------
+    -- "-" --
+    ---------
+ 
+    function "-"
+      (Left  : CPU_Time;
+       Right : Ada.Real_Time.Time_Span) return CPU_Time
+    is
+       use type Ada.Real_Time.Time;
+    begin
+       return CPU_Time (Ada.Real_Time.Time (Left) - Right);
+    end "-";
+ 
+    function "-"
+      (Left  : CPU_Time;
+       Right : CPU_Time) return Ada.Real_Time.Time_Span
+    is
+       use type Ada.Real_Time.Time;
+    begin
+       return (Ada.Real_Time.Time (Left) - Ada.Real_Time.Time (Right));
+    end "-";
+ 
+    -----------
+    -- Clock --
+    -----------
+ 
+    function Clock
+      (T : Ada.Task_Identification.Task_Id :=
+         Ada.Task_Identification.Current_Task) return CPU_Time
+    is
+       Hundreds_Nano_In_Sec : constant Long_Long_Float := 1.0E7;
+ 
+       function To_Time is new Ada.Unchecked_Conversion
+         (Duration, Ada.Real_Time.Time);
+ 
+       function To_Task_Id is new Ada.Unchecked_Conversion
+         (Ada.Task_Identification.Task_Id, System.Tasking.Task_Id);
+ 
+       C_Time : aliased Long_Long_Integer;
+       E_Time : aliased Long_Long_Integer;
+       K_Time : aliased Long_Long_Integer;
+       U_Time : aliased Long_Long_Integer;
+       Res    : BOOL;
+ 
+    begin
+       if T = Ada.Task_Identification.Null_Task_Id then
+          raise Program_Error;
+       end if;
+ 
+       Res :=
+         GetThreadTimes
+           (HANDLE (Get_Thread_Id (To_Task_Id (T))),
+            C_Time'Access, E_Time'Access, K_Time'Access, U_Time'Access);
+ 
+       if Res = System.Win32.FALSE then
+          raise Program_Error;
+       end if;
+ 
+       return
+         CPU_Time
+           (To_Time
+              (Duration
+                 ((Long_Long_Float (K_Time) / Hundreds_Nano_In_Sec)
+                  + (Long_Long_Float (U_Time) / Hundreds_Nano_In_Sec))));
+    end Clock;
+ 
+    --------------------------
+    -- Clock_For_Interrupts --
+    --------------------------
+ 
+    function Clock_For_Interrupts return CPU_Time is
+    begin
+       --  According to AI 0170-1, D.14(18.1/3), if Interrupt_Clocks_Supported
+       --  is set to False the function raises Program_Error.
+ 
+       raise Program_Error;
+       return CPU_Time_First;
+    end Clock_For_Interrupts;
+ 
+    -----------
+    -- Split --
+    -----------
+ 
+    procedure Split
+      (T  : CPU_Time;
+       SC : out Ada.Real_Time.Seconds_Count;
+       TS : out Ada.Real_Time.Time_Span)
+    is
+    begin
+       Ada.Real_Time.Split (Ada.Real_Time.Time (T), SC, TS);
+    end Split;
+ 
+    -------------
+    -- Time_Of --
+    -------------
+ 
+    function Time_Of
+      (SC : Ada.Real_Time.Seconds_Count;
+       TS : Ada.Real_Time.Time_Span := Ada.Real_Time.Time_Span_Zero)
+       return CPU_Time
+    is
+    begin
+       return CPU_Time (Ada.Real_Time.Time_Of (SC, TS));
+    end Time_Of;
+ 
+ end Ada.Execution_Time;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/a-exetim__mingw.ads gcc-8.1.0/gcc/ada/libgnarl/a-exetim__mingw.ads
*** gcc-7.3.0/gcc/ada/libgnarl/a-exetim__mingw.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/a-exetim__mingw.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,134 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                   A D A . E X E C U T I O N _ T I M E                    --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 2009-2018, Free Software Foundation, 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 Windows native version of this package
+ 
+ with Ada.Task_Identification;
+ with Ada.Real_Time;
+ 
+ package Ada.Execution_Time with
+   SPARK_Mode
+ is
+    type CPU_Time is private;
+ 
+    CPU_Time_First : constant CPU_Time;
+    CPU_Time_Last  : constant CPU_Time;
+    CPU_Time_Unit  : constant := 0.000001;
+    CPU_Tick       : constant Ada.Real_Time.Time_Span;
+ 
+    use type Ada.Task_Identification.Task_Id;
+ 
+    function Clock
+      (T : Ada.Task_Identification.Task_Id :=
+         Ada.Task_Identification.Current_Task)
+       return CPU_Time
+    with
+      Volatile_Function,
+      Global => Ada.Real_Time.Clock_Time,
+      Pre    => T /= Ada.Task_Identification.Null_Task_Id;
+ 
+    function "+"
+      (Left  : CPU_Time;
+       Right : Ada.Real_Time.Time_Span) return CPU_Time
+    with
+      Global => null;
+ 
+    function "+"
+      (Left  : Ada.Real_Time.Time_Span;
+       Right : CPU_Time) return CPU_Time
+    with
+      Global => null;
+ 
+    function "-"
+      (Left  : CPU_Time;
+       Right : Ada.Real_Time.Time_Span) return CPU_Time
+    with
+      Global => null;
+ 
+    function "-"
+      (Left  : CPU_Time;
+       Right : CPU_Time) return Ada.Real_Time.Time_Span
+    with
+      Global => null;
+ 
+    function "<"  (Left, Right : CPU_Time) return Boolean with
+      Global => null;
+    function "<=" (Left, Right : CPU_Time) return Boolean with
+      Global => null;
+    function ">"  (Left, Right : CPU_Time) return Boolean with
+      Global => null;
+    function ">=" (Left, Right : CPU_Time) return Boolean with
+      Global => null;
+ 
+    procedure Split
+      (T  : CPU_Time;
+       SC : out Ada.Real_Time.Seconds_Count;
+       TS : out Ada.Real_Time.Time_Span)
+    with
+      Global => null;
+ 
+    function Time_Of
+      (SC : Ada.Real_Time.Seconds_Count;
+       TS : Ada.Real_Time.Time_Span := Ada.Real_Time.Time_Span_Zero)
+       return CPU_Time
+    with
+      Global => null;
+ 
+    Interrupt_Clocks_Supported          : constant Boolean := False;
+    Separate_Interrupt_Clocks_Supported : constant Boolean := False;
+ 
+    pragma Warnings (Off, "check will fail at run time");
+    function Clock_For_Interrupts return CPU_Time with
+      Volatile_Function,
+      Global => Ada.Real_Time.Clock_Time,
+      Pre    => Interrupt_Clocks_Supported;
+    pragma Warnings (On, "check will fail at run time");
+ 
+ private
+    pragma SPARK_Mode (Off);
+ 
+    type CPU_Time is new Ada.Real_Time.Time;
+ 
+    CPU_Time_First : constant CPU_Time  := CPU_Time (Ada.Real_Time.Time_First);
+    CPU_Time_Last  : constant CPU_Time  := CPU_Time (Ada.Real_Time.Time_Last);
+ 
+    CPU_Tick : constant Ada.Real_Time.Time_Span := Ada.Real_Time.Tick;
+ 
+    pragma Import (Intrinsic, "<");
+    pragma Import (Intrinsic, "<=");
+    pragma Import (Intrinsic, ">");
+    pragma Import (Intrinsic, ">=");
+ 
+ end Ada.Execution_Time;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/a-exetim__posix.adb gcc-8.1.0/gcc/ada/libgnarl/a-exetim__posix.adb
*** gcc-7.3.0/gcc/ada/libgnarl/a-exetim__posix.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/a-exetim__posix.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,185 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                   A D A . E X E C U T I O N _ T I M E                    --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --         Copyright (C) 2007-2018, Free Software Foundation, Inc.          --
+ --                                                                          --
+ -- GNAT is 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 POSIX (Realtime Extension) version of this package
+ 
+ with Ada.Task_Identification;  use Ada.Task_Identification;
+ with Ada.Unchecked_Conversion;
+ 
+ with System.Tasking;
+ with System.OS_Interface; use System.OS_Interface;
+ with System.Task_Primitives.Operations; use System.Task_Primitives.Operations;
+ 
+ with Interfaces.C; use Interfaces.C;
+ 
+ package body Ada.Execution_Time is
+ 
+    pragma Linker_Options ("-lrt");
+    --  POSIX.1b Realtime Extensions library. Needed to have access to function
+    --  clock_gettime.
+ 
+    ---------
+    -- "+" --
+    ---------
+ 
+    function "+"
+      (Left  : CPU_Time;
+       Right : Ada.Real_Time.Time_Span) return CPU_Time
+    is
+       use type Ada.Real_Time.Time;
+    begin
+       return CPU_Time (Ada.Real_Time.Time (Left) + Right);
+    end "+";
+ 
+    function "+"
+      (Left  : Ada.Real_Time.Time_Span;
+       Right : CPU_Time) return CPU_Time
+    is
+       use type Ada.Real_Time.Time;
+    begin
+       return CPU_Time (Left + Ada.Real_Time.Time (Right));
+    end "+";
+ 
+    ---------
+    -- "-" --
+    ---------
+ 
+    function "-"
+      (Left  : CPU_Time;
+       Right : Ada.Real_Time.Time_Span) return CPU_Time
+    is
+       use type Ada.Real_Time.Time;
+    begin
+       return CPU_Time (Ada.Real_Time.Time (Left) - Right);
+    end "-";
+ 
+    function "-"
+      (Left  : CPU_Time;
+       Right : CPU_Time) return Ada.Real_Time.Time_Span
+    is
+       use type Ada.Real_Time.Time;
+    begin
+       return (Ada.Real_Time.Time (Left) - Ada.Real_Time.Time (Right));
+    end "-";
+ 
+    -----------
+    -- Clock --
+    -----------
+ 
+    function Clock
+      (T : Ada.Task_Identification.Task_Id :=
+         Ada.Task_Identification.Current_Task) return CPU_Time
+    is
+       TS       : aliased timespec;
+       Clock_Id : aliased Interfaces.C.int;
+       Result   : Interfaces.C.int;
+ 
+       function To_CPU_Time is
+         new Ada.Unchecked_Conversion (Duration, CPU_Time);
+       --  Time is equal to Duration (although it is a private type) and
+       --  CPU_Time is equal to Time.
+ 
+       function Convert_Ids is new
+         Ada.Unchecked_Conversion (Task_Id, System.Tasking.Task_Id);
+ 
+       function clock_gettime
+         (clock_id : Interfaces.C.int;
+          tp       : access timespec)
+          return int;
+       pragma Import (C, clock_gettime, "clock_gettime");
+       --  Function from the POSIX.1b Realtime Extensions library
+ 
+       function pthread_getcpuclockid
+         (tid       : Thread_Id;
+          clock_id  : access Interfaces.C.int)
+          return int;
+       pragma Import (C, pthread_getcpuclockid, "pthread_getcpuclockid");
+       --  Function from the Thread CPU-Time Clocks option
+ 
+    begin
+       if T = Ada.Task_Identification.Null_Task_Id then
+          raise Program_Error;
+       else
+          --  Get the CPU clock for the task passed as parameter
+ 
+          Result := pthread_getcpuclockid
+            (Get_Thread_Id (Convert_Ids (T)), Clock_Id'Access);
+          pragma Assert (Result = 0);
+       end if;
+ 
+       Result := clock_gettime
+         (clock_id => Clock_Id, tp => TS'Unchecked_Access);
+       pragma Assert (Result = 0);
+ 
+       return To_CPU_Time (To_Duration (TS));
+    end Clock;
+ 
+    --------------------------
+    -- Clock_For_Interrupts --
+    --------------------------
+ 
+    function Clock_For_Interrupts return CPU_Time is
+    begin
+       --  According to AI 0170-1, D.14(18.1/3), if Interrupt_Clocks_Supported
+       --  is set to False the function raises Program_Error.
+ 
+       raise Program_Error;
+       return CPU_Time_First;
+    end Clock_For_Interrupts;
+ 
+    -----------
+    -- Split --
+    -----------
+ 
+    procedure Split
+      (T  : CPU_Time;
+       SC : out Ada.Real_Time.Seconds_Count;
+       TS : out Ada.Real_Time.Time_Span)
+    is
+ 
+    begin
+       Ada.Real_Time.Split (Ada.Real_Time.Time (T), SC, TS);
+    end Split;
+ 
+    -------------
+    -- Time_Of --
+    -------------
+ 
+    function Time_Of
+      (SC : Ada.Real_Time.Seconds_Count;
+       TS : Ada.Real_Time.Time_Span := Ada.Real_Time.Time_Span_Zero)
+       return CPU_Time
+    is
+    begin
+       return CPU_Time (Ada.Real_Time.Time_Of (SC, TS));
+    end Time_Of;
+ 
+ end Ada.Execution_Time;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/a-extiin.ads gcc-8.1.0/gcc/ada/libgnarl/a-extiin.ads
*** gcc-7.3.0/gcc/ada/libgnarl/a-extiin.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/a-extiin.ads	Fri Sep  8 13:14:59 2017
***************
*** 0 ****
--- 1,35 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --         A D A . E X E C U T I O N _ T I M E . I N T E R R U P T S        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ -- This specification is derived from the Ada Reference Manual for use with --
+ -- GNAT.  In accordance with the copyright of that document, you can freely --
+ -- copy and modify this specification,  provided that if you redistribute a --
+ -- modified version,  any changes that you have made are clearly indicated. --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with Ada.Interrupts;
+ with Ada.Real_Time;
+ 
+ package Ada.Execution_Time.Interrupts with
+   SPARK_Mode
+ is
+ 
+    pragma Unimplemented_Unit;
+ 
+    function Clock (Interrupt : Ada.Interrupts.Interrupt_ID) return CPU_Time
+    with
+      Volatile_Function,
+      Global => Ada.Real_Time.Clock_Time,
+      Pre    => Separate_Interrupt_Clocks_Supported;
+ 
+    function Supported (Interrupt : Ada.Interrupts.Interrupt_ID) return Boolean
+    with
+      Global => null;
+ 
+ end Ada.Execution_Time.Interrupts;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/a-extiti.ads gcc-8.1.0/gcc/ada/libgnarl/a-extiti.ads
*** gcc-7.3.0/gcc/ada/libgnarl/a-extiti.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/a-extiti.ads	Fri Sep  8 13:14:59 2017
***************
*** 0 ****
--- 1,61 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --             A D A . E X E C U T I O N _ T I M E . T I M E R S            --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ -- This specification is derived from the Ada Reference Manual for use with --
+ -- GNAT.  In accordance with the copyright of that document, you can freely --
+ -- copy and modify this specification,  provided that if you redistribute a --
+ -- modified version,  any changes that you have made are clearly indicated. --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This unit is not implemented in typical GNAT implementations that lie on
+ --  top of operating systems, because it is infeasible to implement in such
+ --  environments.
+ 
+ --  If a target environment provides appropriate support for this package,
+ --  then the Unimplemented_Unit pragma should be removed from this spec and
+ --  an appropriate body provided.
+ 
+ with System;
+ 
+ package Ada.Execution_Time.Timers is
+    pragma Preelaborate;
+ 
+    pragma Unimplemented_Unit;
+ 
+    type Timer (T : not null access constant Ada.Task_Identification.Task_Id) is
+       tagged limited private;
+ 
+    type Timer_Handler is access protected procedure (TM : in out Timer);
+ 
+    Min_Handler_Ceiling : constant System.Any_Priority := System.Priority'Last;
+ 
+    procedure Set_Handler
+      (TM      : in out Timer;
+       In_Time : Ada.Real_Time.Time_Span;
+       Handler : Timer_Handler);
+ 
+    procedure Set_Handler
+      (TM      : in out Timer;
+       At_Time : CPU_Time;
+       Handler : Timer_Handler);
+ 
+    function Current_Handler (TM : Timer) return Timer_Handler;
+ 
+    procedure Cancel_Handler
+      (TM        : in out Timer;
+       Cancelled : out Boolean);
+ 
+    function Time_Remaining (TM : Timer) return Ada.Real_Time.Time_Span;
+ 
+    Timer_Resource_Error : exception;
+ 
+ private
+    type Timer (T : access Ada.Task_Identification.Task_Id) is
+       tagged limited null record;
+ end Ada.Execution_Time.Timers;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/a-interr.adb gcc-8.1.0/gcc/ada/libgnarl/a-interr.adb
*** gcc-7.3.0/gcc/ada/libgnarl/a-interr.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/a-interr.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,139 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                         A D A . I N T E R R U P T S                      --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --             Copyright (C) 1991-2017, Florida State University            --
+ --                     Copyright (C) 1995-2018, AdaCore                     --
+ --                                                                          --
+ -- GNAT is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with Ada.Unchecked_Conversion;
+ 
+ package body Ada.Interrupts is
+ 
+    package SI renames System.Interrupts;
+ 
+    function To_System is new Ada.Unchecked_Conversion
+      (Parameterless_Handler, SI.Parameterless_Handler);
+ 
+    function To_Ada is new Ada.Unchecked_Conversion
+      (SI.Parameterless_Handler, Parameterless_Handler);
+ 
+    --------------------
+    -- Attach_Handler --
+    --------------------
+ 
+    procedure Attach_Handler
+      (New_Handler : Parameterless_Handler;
+       Interrupt   : Interrupt_ID)
+    is
+    begin
+       SI.Attach_Handler
+         (To_System (New_Handler), SI.Interrupt_ID (Interrupt), False);
+    end Attach_Handler;
+ 
+    ---------------------
+    -- Current_Handler --
+    ---------------------
+ 
+    function Current_Handler
+      (Interrupt : Interrupt_ID) return Parameterless_Handler
+    is
+    begin
+       return To_Ada (SI.Current_Handler (SI.Interrupt_ID (Interrupt)));
+    end Current_Handler;
+ 
+    --------------------
+    -- Detach_Handler --
+    --------------------
+ 
+    procedure Detach_Handler (Interrupt : Interrupt_ID) is
+    begin
+       SI.Detach_Handler (SI.Interrupt_ID (Interrupt), False);
+    end Detach_Handler;
+ 
+    ----------------------
+    -- Exchange_Handler --
+    ----------------------
+ 
+    procedure Exchange_Handler
+      (Old_Handler : out Parameterless_Handler;
+       New_Handler : Parameterless_Handler;
+       Interrupt   : Interrupt_ID)
+    is
+       H : SI.Parameterless_Handler;
+ 
+    begin
+       SI.Exchange_Handler
+         (H, To_System (New_Handler),
+          SI.Interrupt_ID (Interrupt), False);
+       Old_Handler := To_Ada (H);
+    end Exchange_Handler;
+ 
+    -------------
+    -- Get_CPU --
+    -------------
+ 
+    function Get_CPU
+      (Interrupt : Interrupt_ID) return System.Multiprocessors.CPU_Range
+    is
+       pragma Unreferenced (Interrupt);
+ 
+    begin
+       --  The underlying operating system does not indicate the processor on
+       --  which the handler for Interrupt is executed.
+ 
+       return System.Multiprocessors.Not_A_Specific_CPU;
+    end Get_CPU;
+ 
+    -----------------
+    -- Is_Attached --
+    -----------------
+ 
+    function Is_Attached (Interrupt : Interrupt_ID) return Boolean is
+    begin
+       return SI.Is_Handler_Attached (SI.Interrupt_ID (Interrupt));
+    end Is_Attached;
+ 
+    -----------------
+    -- Is_Reserved --
+    -----------------
+ 
+    function Is_Reserved (Interrupt : Interrupt_ID) return Boolean is
+    begin
+       return SI.Is_Reserved (SI.Interrupt_ID (Interrupt));
+    end Is_Reserved;
+ 
+    ---------------
+    -- Reference --
+    ---------------
+ 
+    function Reference (Interrupt : Interrupt_ID) return System.Address is
+    begin
+       return SI.Reference (SI.Interrupt_ID (Interrupt));
+    end Reference;
+ 
+ end Ada.Interrupts;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/a-interr.ads gcc-8.1.0/gcc/ada/libgnarl/a-interr.ads
*** gcc-7.3.0/gcc/ada/libgnarl/a-interr.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/a-interr.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,100 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                        GNAT RUN-TIME COMPONENTS                          --
+ --                                                                          --
+ --                       A D A . I N T E R R U P T S                        --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2018, Free Software Foundation, 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.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Interrupts;
+ with System.Multiprocessors;
+ with Ada.Task_Identification;
+ 
+ package Ada.Interrupts is
+ 
+    type Interrupt_ID is new System.Interrupts.Ada_Interrupt_ID;
+ 
+    type Parameterless_Handler is access protected procedure;
+ 
+    function Is_Reserved (Interrupt : Interrupt_ID) return Boolean with
+      SPARK_Mode,
+      Volatile_Function,
+      Global => Ada.Task_Identification.Tasking_State;
+ 
+    function Is_Attached (Interrupt : Interrupt_ID) return Boolean with
+      SPARK_Mode,
+      Volatile_Function,
+      Global => Ada.Task_Identification.Tasking_State;
+ 
+    function Current_Handler
+      (Interrupt : Interrupt_ID) return Parameterless_Handler
+    with
+      SPARK_Mode => Off,
+      Global     => null;
+ 
+    procedure Attach_Handler
+      (New_Handler : Parameterless_Handler;
+       Interrupt   : Interrupt_ID)
+    with
+      SPARK_Mode => Off,
+      Global     => null;
+ 
+    procedure Exchange_Handler
+      (Old_Handler : out Parameterless_Handler;
+       New_Handler : Parameterless_Handler;
+       Interrupt   : Interrupt_ID)
+    with
+      SPARK_Mode => Off,
+      Global     => null;
+ 
+    procedure Detach_Handler (Interrupt : Interrupt_ID) with
+      SPARK_Mode,
+      Global => (In_Out => Ada.Task_Identification.Tasking_State);
+ 
+    function Reference (Interrupt : Interrupt_ID) return System.Address with
+      SPARK_Mode => Off,
+      Global     => null;
+ 
+    function Get_CPU
+      (Interrupt : Interrupt_ID) return System.Multiprocessors.CPU_Range
+    with
+      SPARK_Mode,
+      Volatile_Function,
+      Global => Ada.Task_Identification.Tasking_State;
+ 
+ private
+    pragma Inline (Is_Reserved);
+    pragma Inline (Is_Attached);
+    pragma Inline (Current_Handler);
+    pragma Inline (Attach_Handler);
+    pragma Inline (Detach_Handler);
+    pragma Inline (Exchange_Handler);
+    pragma Inline (Get_CPU);
+ end Ada.Interrupts;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/a-intnam.ads gcc-8.1.0/gcc/ada/libgnarl/a-intnam.ads
*** gcc-7.3.0/gcc/ada/libgnarl/a-intnam.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/a-intnam.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,46 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                 A D A . I N T E R R U P T S . N A M E S                  --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1995-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is 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/>.                                          --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  The standard implementation of this spec contains only dummy interrupt
+ --  names. These dummy entries permit checking out code for correctness of
+ --  semantics, even if interrupts are not supported.
+ 
+ --  For specific implementations that fully support interrupts, this package
+ --  spec is replaced by an implementation dependent version that defines the
+ --  interrupts available on the system.
+ 
+ package Ada.Interrupts.Names is
+ 
+    --  All identifiers in this unit are implementation defined
+ 
+    pragma Implementation_Defined;
+ 
+    DUMMY_INTERRUPT_1 : constant Interrupt_ID := 1;
+    DUMMY_INTERRUPT_2 : constant Interrupt_ID := 2;
+ 
+ end Ada.Interrupts.Names;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/a-intnam__aix.ads gcc-8.1.0/gcc/ada/libgnarl/a-intnam__aix.ads
*** gcc-7.3.0/gcc/ada/libgnarl/a-intnam__aix.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/a-intnam__aix.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,201 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                   A D A . I N T E R R U P T S . N A M E S                --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --          Copyright (C) 1991-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is a AIX version of this package
+ 
+ --  The following signals are reserved by the run time (native threads):
+ 
+ --  SIGFPE, SIGILL, SIGSEGV, SIGBUS, SIGABRT, SIGTRAP, SIGINT, SIGEMT
+ --  SIGSTOP, SIGKILL
+ 
+ --  The following signals are reserved by the run time (FSU threads):
+ 
+ --  SIGFPE, SIGILL, SIGSEGV, SIGBUS, SIGABRT, SIGTRAP, SIGINT, SIGALRM,
+ --  SIGWAITING, SIGSTOP, SIGKILL
+ 
+ --  The pragma Unreserve_All_Interrupts affects the following signal(s):
+ 
+ --  SIGINT: made available for Ada handler
+ 
+ --  This target-dependent package spec contains names of interrupts
+ --  supported by the local system.
+ 
+ with System.OS_Interface;
+ 
+ package Ada.Interrupts.Names is
+ 
+    --  All identifiers in this unit are implementation defined
+ 
+    pragma Implementation_Defined;
+ 
+    --  Beware that the mapping of names to signals may be many-to-one. There
+    --  may be aliases. Also, for all signal names that are not supported on
+    --  the current system the value of the corresponding constant will be zero.
+ 
+    SIGHUP : constant Interrupt_ID :=
+      System.OS_Interface.SIGHUP;      --  hangup
+ 
+    SIGINT : constant Interrupt_ID :=
+      System.OS_Interface.SIGINT;      --  interrupt (rubout)
+ 
+    SIGQUIT : constant Interrupt_ID :=
+      System.OS_Interface.SIGQUIT;     --  quit (ASCD FS)
+ 
+    SIGILL : constant Interrupt_ID :=
+      System.OS_Interface.SIGILL;      --  illegal instruction (not reset)
+ 
+    SIGTRAP : constant Interrupt_ID :=
+      System.OS_Interface.SIGTRAP;     --  trace trap (not reset)
+ 
+    SIGIOT : constant Interrupt_ID :=
+      System.OS_Interface.SIGIOT;      --  IOT instruction
+ 
+    SIGABRT : constant Interrupt_ID := --  used by abort,
+      System.OS_Interface.SIGABRT;     --  replace SIGIOT in the  future
+ 
+    SIGEMT : constant Interrupt_ID :=
+      System.OS_Interface.SIGEMT;      --  EMT instruction
+ 
+    SIGFPE : constant Interrupt_ID :=
+      System.OS_Interface.SIGFPE;      --  floating point exception
+ 
+    SIGKILL : constant Interrupt_ID :=
+      System.OS_Interface.SIGKILL;     --  kill (cannot be caught or ignored)
+ 
+    SIGBUS : constant Interrupt_ID :=
+      System.OS_Interface.SIGBUS;      --  bus error
+ 
+    SIGSEGV : constant Interrupt_ID :=
+      System.OS_Interface.SIGSEGV;     --  segmentation violation
+ 
+    SIGSYS : constant Interrupt_ID :=
+      System.OS_Interface.SIGSYS;      --  bad argument to system call
+ 
+    SIGPIPE : constant Interrupt_ID := --  write on a pipe with
+      System.OS_Interface.SIGPIPE;     --  no one to read it
+ 
+    SIGALRM : constant Interrupt_ID :=
+      System.OS_Interface.SIGALRM;     --  alarm clock
+ 
+    SIGTERM : constant Interrupt_ID :=
+      System.OS_Interface.SIGTERM;     --  software termination signal from kill
+ 
+    SIGUSR1 : constant Interrupt_ID :=
+      System.OS_Interface.SIGUSR1;     --  user defined signal 1
+ 
+    SIGUSR2 : constant Interrupt_ID :=
+      System.OS_Interface.SIGUSR2;     --  user defined signal 2
+ 
+    SIGCLD : constant Interrupt_ID :=
+      System.OS_Interface.SIGCLD;      --  child status change
+ 
+    SIGCHLD : constant Interrupt_ID :=
+      System.OS_Interface.SIGCHLD;     --  4.3BSD's/POSIX name for SIGCLD
+ 
+    SIGPWR : constant Interrupt_ID :=
+      System.OS_Interface.SIGPWR;        --  power-fail restart
+ 
+    SIGWINCH : constant Interrupt_ID :=
+      System.OS_Interface.SIGWINCH;    --  window size change
+ 
+    SIGURG : constant Interrupt_ID :=
+      System.OS_Interface.SIGURG;      --  urgent condition on IO channel
+ 
+    SIGPOLL : constant Interrupt_ID :=
+      System.OS_Interface.SIGPOLL;     --  pollable event occurred
+ 
+    SIGIO : constant Interrupt_ID :=   --  input/output possible,
+      System.OS_Interface.SIGIO;       --  SIGPOLL alias (Solaris)
+ 
+    SIGSTOP : constant Interrupt_ID :=
+      System.OS_Interface.SIGSTOP;     --  stop (cannot be caught or ignored)
+ 
+    SIGTSTP : constant Interrupt_ID :=
+      System.OS_Interface.SIGTSTP;     --  user stop requested from tty
+ 
+    SIGCONT : constant Interrupt_ID :=
+      System.OS_Interface.SIGCONT;     --  stopped process has been continued
+ 
+    SIGTTIN : constant Interrupt_ID :=
+      System.OS_Interface.SIGTTIN;     --  background tty read attempted
+ 
+    SIGTTOU : constant Interrupt_ID :=
+      System.OS_Interface.SIGTTOU;     --  background tty write attempted
+ 
+    SIGVTALRM : constant Interrupt_ID :=
+      System.OS_Interface.SIGVTALRM;   --  virtual timer expired
+ 
+    SIGPROF : constant Interrupt_ID :=
+      System.OS_Interface.SIGPROF;     --  profiling timer expired
+ 
+    SIGXCPU : constant Interrupt_ID :=
+      System.OS_Interface.SIGXCPU;     --  CPU time limit exceeded
+ 
+    SIGXFSZ : constant Interrupt_ID :=
+      System.OS_Interface.SIGXFSZ;     --  filesize limit exceeded
+ 
+    SIGMSG : constant Interrupt_ID :=
+      System.OS_Interface.SIGMSG;      -- input data is in the ring buffer
+ 
+    SIGDANGER : constant Interrupt_ID :=
+      System.OS_Interface.SIGDANGER;   -- system crash imminent;
+ 
+    SIGMIGRATE : constant Interrupt_ID :=
+      System.OS_Interface.SIGMIGRATE;  -- migrate process
+ 
+    SIGPRE : constant Interrupt_ID :=
+      System.OS_Interface.SIGPRE;      -- programming exception
+ 
+    SIGVIRT : constant Interrupt_ID :=
+      System.OS_Interface.SIGVIRT;     -- AIX virtual time alarm
+ 
+    SIGALRM1 : constant Interrupt_ID :=
+      System.OS_Interface.SIGALRM1;    -- m:n condition variables
+ 
+    SIGWAITING : constant Interrupt_ID :=
+      System.OS_Interface.SIGWAITING;  --  m:n scheduling
+ 
+    SIGKAP : constant Interrupt_ID :=
+      System.OS_Interface.SIGKAP;      -- keep alive poll from native keyboard
+ 
+    SIGGRANT : constant Interrupt_ID :=
+      System.OS_Interface.SIGGRANT;    -- monitor mode granted
+ 
+    SIGRETRACT : constant Interrupt_ID :=
+      System.OS_Interface.SIGRETRACT;  -- monitor mode should be relinquished
+ 
+    SIGSOUND : constant Interrupt_ID :=
+      System.OS_Interface.SIGSOUND;    -- sound control has completed
+ 
+    SIGSAK : constant Interrupt_ID :=
+      System.OS_Interface.SIGSAK;      -- secure attention key
+ 
+ end Ada.Interrupts.Names;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/a-intnam__darwin.ads gcc-8.1.0/gcc/ada/libgnarl/a-intnam__darwin.ads
*** gcc-7.3.0/gcc/ada/libgnarl/a-intnam__darwin.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/a-intnam__darwin.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,153 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                   A D A . I N T E R R U P T S . N A M E S                --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --          Copyright (C) 1991-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is the Darwin version of this package
+ 
+ --  The following signals are reserved by the run time:
+ 
+ --  SIGSTOP, SIGKILL
+ 
+ --  The pragma Unreserve_All_Interrupts affects the following signal(s):
+ 
+ --  SIGINT: made available for Ada handler
+ 
+ --  This target-dependent package spec contains names of interrupts
+ --  supported by the local system.
+ 
+ with System.OS_Interface;
+ 
+ package Ada.Interrupts.Names is
+ 
+    --  All identifiers in this unit are implementation defined
+ 
+    pragma Implementation_Defined;
+ 
+    --  Beware that the mapping of names to signals may be many-to-one. There
+    --  may be aliases. Also, for all signal names that are not supported on the
+    --  current system the value of the corresponding constant will be zero.
+ 
+    SIGHUP    : constant Interrupt_ID :=
+      System.OS_Interface.SIGHUP;      --  hangup
+ 
+    SIGINT    : constant Interrupt_ID :=
+      System.OS_Interface.SIGINT;      --  interrupt (rubout)
+ 
+    SIGQUIT   : constant Interrupt_ID :=
+      System.OS_Interface.SIGQUIT;     --  quit (ASCD FS)
+ 
+    SIGILL    : constant Interrupt_ID :=
+      System.OS_Interface.SIGILL;      --  illegal instruction (not reset)
+ 
+    SIGTRAP   : constant Interrupt_ID :=
+      System.OS_Interface.SIGTRAP;     --  trace trap (not reset)
+ 
+    SIGIOT    : constant Interrupt_ID :=
+      System.OS_Interface.SIGIOT;      --  IOT instruction
+ 
+    SIGABRT   : constant Interrupt_ID := --  used by abort,
+      System.OS_Interface.SIGABRT;     --  replace SIGIOT in the  future
+ 
+    SIGEMT    : constant Interrupt_ID :=
+      System.OS_Interface.SIGEMT;      --  EMT instruction
+ 
+    SIGFPE    : constant Interrupt_ID :=
+      System.OS_Interface.SIGFPE;      --  floating point exception
+ 
+    SIGKILL   : constant Interrupt_ID :=
+      System.OS_Interface.SIGKILL;     --  kill (cannot be caught or ignored)
+ 
+    SIGBUS    : constant Interrupt_ID :=
+      System.OS_Interface.SIGBUS;      --  bus error
+ 
+    SIGSEGV   : constant Interrupt_ID :=
+      System.OS_Interface.SIGSEGV;     --  segmentation violation
+ 
+    SIGSYS    : constant Interrupt_ID :=
+      System.OS_Interface.SIGSYS;      --  bad argument to system call
+ 
+    SIGPIPE   : constant Interrupt_ID := --  write on a pipe with
+      System.OS_Interface.SIGPIPE;     --  no one to read it
+ 
+    SIGALRM   : constant Interrupt_ID :=
+      System.OS_Interface.SIGALRM;     --  alarm clock
+ 
+    SIGTERM   : constant Interrupt_ID :=
+      System.OS_Interface.SIGTERM;     --  software termination signal from kill
+ 
+    SIGURG    : constant Interrupt_ID :=
+      System.OS_Interface.SIGURG;      --  urgent condition on IO channel
+ 
+    SIGSTOP   : constant Interrupt_ID :=
+      System.OS_Interface.SIGSTOP;     --  stop (cannot be caught or ignored)
+ 
+    SIGTSTP   : constant Interrupt_ID :=
+      System.OS_Interface.SIGTSTP;     --  user stop requested from tty
+ 
+    SIGCONT   : constant Interrupt_ID :=
+      System.OS_Interface.SIGCONT;     --  stopped process has been continued
+ 
+    SIGCHLD   : constant Interrupt_ID :=
+      System.OS_Interface.SIGCHLD;     --  4.3BSD's/POSIX name for SIGCLD
+ 
+    SIGTTIN   : constant Interrupt_ID :=
+      System.OS_Interface.SIGTTIN;     --  background tty read attempted
+ 
+    SIGTTOU   : constant Interrupt_ID :=
+      System.OS_Interface.SIGTTOU;     --  background tty write attempted
+ 
+    SIGIO     : constant Interrupt_ID :=   --  input/output possible,
+      System.OS_Interface.SIGIO;       --  SIGPOLL alias (Solaris)
+ 
+    SIGXCPU   : constant Interrupt_ID :=
+      System.OS_Interface.SIGXCPU;     --  CPU time limit exceeded
+ 
+    SIGXFSZ   : constant Interrupt_ID :=
+      System.OS_Interface.SIGXFSZ;     --  filesize limit exceeded
+ 
+    SIGVTALRM : constant Interrupt_ID :=
+      System.OS_Interface.SIGVTALRM;   --  virtual timer expired
+ 
+    SIGPROF   : constant Interrupt_ID :=
+      System.OS_Interface.SIGPROF;     --  profiling timer expired
+ 
+    SIGWINCH  : constant Interrupt_ID :=
+      System.OS_Interface.SIGWINCH;    --  window size change
+ 
+    SIGINFO   : constant Interrupt_ID :=
+      System.OS_Interface.SIGINFO;      -- information request
+ 
+    SIGUSR1   : constant Interrupt_ID :=
+      System.OS_Interface.SIGUSR1;     --  user defined signal 1
+ 
+    SIGUSR2   : constant Interrupt_ID :=
+      System.OS_Interface.SIGUSR2;     --  user defined signal 2
+ 
+ end Ada.Interrupts.Names;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/a-intnam__dragonfly.ads gcc-8.1.0/gcc/ada/libgnarl/a-intnam__dragonfly.ads
*** gcc-7.3.0/gcc/ada/libgnarl/a-intnam__dragonfly.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/a-intnam__dragonfly.ads	Mon Sep 11 09:18:42 2017
***************
*** 0 ****
--- 1,136 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                   A D A . I N T E R R U P T S . N A M E S                --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --          Copyright (C) 1991-2015, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is the DragonFly BSD THREADS version of this package
+ 
+ with System.OS_Interface;
+ 
+ package Ada.Interrupts.Names is
+ 
+    --  All identifiers in this unit are implementation defined
+ 
+    pragma Implementation_Defined;
+ 
+    --  Beware that the mapping of names to signals may be many-to-one. There
+    --  may be aliases. Also, for all signal names that are not supported on
+    --  the current system the value of the corresponding constant will be zero.
+ 
+    SIGHUP : constant Interrupt_ID :=
+      System.OS_Interface.SIGHUP;      --  hangup
+ 
+    SIGINT : constant Interrupt_ID :=
+      System.OS_Interface.SIGINT;      --  interrupt (rubout)
+ 
+    SIGQUIT : constant Interrupt_ID :=
+      System.OS_Interface.SIGQUIT;     --  quit (ASCD FS)
+ 
+    SIGILL : constant Interrupt_ID :=
+      System.OS_Interface.SIGILL;      --  illegal instruction (not reset)
+ 
+    SIGTRAP : constant Interrupt_ID :=
+      System.OS_Interface.SIGTRAP;     --  trace trap (not reset)
+ 
+    SIGIOT : constant Interrupt_ID :=
+      System.OS_Interface.SIGIOT;      --  IOT instruction
+ 
+    SIGABRT : constant Interrupt_ID := --  used by abort,
+      System.OS_Interface.SIGABRT;     --  replace SIGIOT in the  future
+ 
+    SIGFPE : constant Interrupt_ID :=
+      System.OS_Interface.SIGFPE;      --  floating point exception
+ 
+    SIGKILL : constant Interrupt_ID :=
+      System.OS_Interface.SIGKILL;     --  kill (cannot be caught or ignored)
+ 
+    SIGBUS : constant Interrupt_ID :=
+      System.OS_Interface.SIGBUS;      --  bus error
+ 
+    SIGSEGV : constant Interrupt_ID :=
+      System.OS_Interface.SIGSEGV;     --  segmentation violation
+ 
+    SIGPIPE : constant Interrupt_ID := --  write on a pipe with
+      System.OS_Interface.SIGPIPE;     --  no one to read it
+ 
+    SIGALRM : constant Interrupt_ID :=
+      System.OS_Interface.SIGALRM;     --  alarm clock
+ 
+    SIGTERM : constant Interrupt_ID :=
+      System.OS_Interface.SIGTERM;     --  software termination signal from kill
+ 
+    SIGURG : constant Interrupt_ID :=
+      System.OS_Interface.SIGURG;      --  urgent condition on IO channel
+ 
+    SIGSTOP : constant Interrupt_ID :=
+      System.OS_Interface.SIGSTOP;     --  stop (cannot be caught or ignored)
+ 
+    SIGTSTP : constant Interrupt_ID :=
+      System.OS_Interface.SIGTSTP;     --  user stop requested from tty
+ 
+    SIGCONT : constant Interrupt_ID :=
+      System.OS_Interface.SIGCONT;     --  stopped process has been continued
+ 
+    SIGCHLD : constant Interrupt_ID :=
+      System.OS_Interface.SIGCHLD;     --  4.3BSD's/POSIX name for SIGCLD
+ 
+    SIGCLD : constant Interrupt_ID :=
+      System.OS_Interface.SIGCLD;      --  child status change
+ 
+    SIGTTIN : constant Interrupt_ID :=
+      System.OS_Interface.SIGTTIN;     --  background tty read attempted
+ 
+    SIGTTOU : constant Interrupt_ID :=
+      System.OS_Interface.SIGTTOU;     --  background tty write attempted
+ 
+    SIGIO : constant Interrupt_ID :=   --  input/output possible,
+      System.OS_Interface.SIGIO;       --  SIGPOLL alias (Solaris)
+ 
+    SIGXCPU : constant Interrupt_ID :=
+      System.OS_Interface.SIGXCPU;     --  CPU time limit exceeded
+ 
+    SIGXFSZ : constant Interrupt_ID :=
+      System.OS_Interface.SIGXFSZ;     --  filesize limit exceeded
+ 
+    SIGVTALRM : constant Interrupt_ID :=
+      System.OS_Interface.SIGVTALRM;   --  virtual timer expired
+ 
+    SIGPROF : constant Interrupt_ID :=
+      System.OS_Interface.SIGPROF;     --  profiling timer expired
+ 
+    SIGWINCH : constant Interrupt_ID :=
+      System.OS_Interface.SIGWINCH;    --  window size change
+ 
+    SIGUSR1 : constant Interrupt_ID :=
+      System.OS_Interface.SIGUSR1;     --  user defined signal 1
+ 
+    SIGUSR2 : constant Interrupt_ID :=
+      System.OS_Interface.SIGUSR2;     --  user defined signal 2
+ 
+ end Ada.Interrupts.Names;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/a-intnam__dummy.ads gcc-8.1.0/gcc/ada/libgnarl/a-intnam__dummy.ads
*** gcc-7.3.0/gcc/ada/libgnarl/a-intnam__dummy.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/a-intnam__dummy.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,50 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                  GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                --
+ --                                                                          --
+ --                   A D A . I N T E R R U P T S . N A M E S                --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                           (No Tasking Version)                           --
+ --                                                                          --
+ --          Copyright (C) 1991-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  The standard implementation of this spec contains only dummy interrupt
+ --  names. These dummy entries permit checking out code for correctness of
+ --  semantics, even if interrupts are not supported.
+ 
+ --  For specific implementations that fully support interrupts, this package
+ --  spec is replaced by an implementation dependent version that defines the
+ --  interrupts available on the system.
+ 
+ package Ada.Interrupts.Names is
+ 
+    --  All identifiers in this unit are implementation defined
+ 
+    pragma Implementation_Defined;
+ 
+    DUMMY_INTERRUPT_1 : constant Interrupt_ID := 1;
+    DUMMY_INTERRUPT_2 : constant Interrupt_ID := 2;
+ 
+ end Ada.Interrupts.Names;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/a-intnam__freebsd.ads gcc-8.1.0/gcc/ada/libgnarl/a-intnam__freebsd.ads
*** gcc-7.3.0/gcc/ada/libgnarl/a-intnam__freebsd.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/a-intnam__freebsd.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,136 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                   A D A . I N T E R R U P T S . N A M E S                --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --          Copyright (C) 1991-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is the FreeBSD THREADS version of this package
+ 
+ with System.OS_Interface;
+ 
+ package Ada.Interrupts.Names is
+ 
+    --  All identifiers in this unit are implementation defined
+ 
+    pragma Implementation_Defined;
+ 
+    --  Beware that the mapping of names to signals may be many-to-one. There
+    --  may be aliases. Also, for all signal names that are not supported on
+    --  the current system the value of the corresponding constant will be zero.
+ 
+    SIGHUP : constant Interrupt_ID :=
+      System.OS_Interface.SIGHUP;      --  hangup
+ 
+    SIGINT : constant Interrupt_ID :=
+      System.OS_Interface.SIGINT;      --  interrupt (rubout)
+ 
+    SIGQUIT : constant Interrupt_ID :=
+      System.OS_Interface.SIGQUIT;     --  quit (ASCD FS)
+ 
+    SIGILL : constant Interrupt_ID :=
+      System.OS_Interface.SIGILL;      --  illegal instruction (not reset)
+ 
+    SIGTRAP : constant Interrupt_ID :=
+      System.OS_Interface.SIGTRAP;     --  trace trap (not reset)
+ 
+    SIGIOT : constant Interrupt_ID :=
+      System.OS_Interface.SIGIOT;      --  IOT instruction
+ 
+    SIGABRT : constant Interrupt_ID := --  used by abort,
+      System.OS_Interface.SIGABRT;     --  replace SIGIOT in the  future
+ 
+    SIGFPE : constant Interrupt_ID :=
+      System.OS_Interface.SIGFPE;      --  floating point exception
+ 
+    SIGKILL : constant Interrupt_ID :=
+      System.OS_Interface.SIGKILL;     --  kill (cannot be caught or ignored)
+ 
+    SIGBUS : constant Interrupt_ID :=
+      System.OS_Interface.SIGBUS;      --  bus error
+ 
+    SIGSEGV : constant Interrupt_ID :=
+      System.OS_Interface.SIGSEGV;     --  segmentation violation
+ 
+    SIGPIPE : constant Interrupt_ID := --  write on a pipe with
+      System.OS_Interface.SIGPIPE;     --  no one to read it
+ 
+    SIGALRM : constant Interrupt_ID :=
+      System.OS_Interface.SIGALRM;     --  alarm clock
+ 
+    SIGTERM : constant Interrupt_ID :=
+      System.OS_Interface.SIGTERM;     --  software termination signal from kill
+ 
+    SIGURG : constant Interrupt_ID :=
+      System.OS_Interface.SIGURG;      --  urgent condition on IO channel
+ 
+    SIGSTOP : constant Interrupt_ID :=
+      System.OS_Interface.SIGSTOP;     --  stop (cannot be caught or ignored)
+ 
+    SIGTSTP : constant Interrupt_ID :=
+      System.OS_Interface.SIGTSTP;     --  user stop requested from tty
+ 
+    SIGCONT : constant Interrupt_ID :=
+      System.OS_Interface.SIGCONT;     --  stopped process has been continued
+ 
+    SIGCHLD : constant Interrupt_ID :=
+      System.OS_Interface.SIGCHLD;     --  4.3BSD's/POSIX name for SIGCLD
+ 
+    SIGCLD : constant Interrupt_ID :=
+      System.OS_Interface.SIGCLD;      --  child status change
+ 
+    SIGTTIN : constant Interrupt_ID :=
+      System.OS_Interface.SIGTTIN;     --  background tty read attempted
+ 
+    SIGTTOU : constant Interrupt_ID :=
+      System.OS_Interface.SIGTTOU;     --  background tty write attempted
+ 
+    SIGIO : constant Interrupt_ID :=   --  input/output possible,
+      System.OS_Interface.SIGIO;       --  SIGPOLL alias (Solaris)
+ 
+    SIGXCPU : constant Interrupt_ID :=
+      System.OS_Interface.SIGXCPU;     --  CPU time limit exceeded
+ 
+    SIGXFSZ : constant Interrupt_ID :=
+      System.OS_Interface.SIGXFSZ;     --  filesize limit exceeded
+ 
+    SIGVTALRM : constant Interrupt_ID :=
+      System.OS_Interface.SIGVTALRM;   --  virtual timer expired
+ 
+    SIGPROF : constant Interrupt_ID :=
+      System.OS_Interface.SIGPROF;     --  profiling timer expired
+ 
+    SIGWINCH : constant Interrupt_ID :=
+      System.OS_Interface.SIGWINCH;    --  window size change
+ 
+    SIGUSR1 : constant Interrupt_ID :=
+      System.OS_Interface.SIGUSR1;     --  user defined signal 1
+ 
+    SIGUSR2 : constant Interrupt_ID :=
+      System.OS_Interface.SIGUSR2;     --  user defined signal 2
+ 
+ end Ada.Interrupts.Names;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/a-intnam__hpux.ads gcc-8.1.0/gcc/ada/libgnarl/a-intnam__hpux.ads
*** gcc-7.3.0/gcc/ada/libgnarl/a-intnam__hpux.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/a-intnam__hpux.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,154 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                   A D A . I N T E R R U P T S . N A M E S                --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --          Copyright (C) 1991-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is a HP-UX version of this package
+ 
+ --  The following signals are reserved by the run time:
+ 
+ --  SIGFPE, SIGILL, SIGSEGV, SIGBUS, SIGTRAP, SIGTERM, SIGABRT, SIGINT,
+ --  SIGALRM, SIGSTOP, SIGKILL
+ 
+ --  The pragma Unreserve_All_Interrupts affects the following signal(s):
+ 
+ --  SIGINT: made available for Ada handler
+ 
+ --  This target-dependent package spec contains names of interrupts
+ --  supported by the local system.
+ 
+ with System.OS_Interface;
+ 
+ package Ada.Interrupts.Names is
+ 
+    --  All identifiers in this unit are implementation defined
+ 
+    pragma Implementation_Defined;
+ 
+    --  Beware that the mapping of names to signals may be many-to-one. There
+    --  may be aliases. Also, for all signal names that are not supported on
+    --  the current system the value of the corresponding constant will be zero.
+ 
+    SIGHUP : constant Interrupt_ID :=
+      System.OS_Interface.SIGHUP;      --  hangup
+ 
+    SIGINT : constant Interrupt_ID :=
+      System.OS_Interface.SIGINT;      --  interrupt (rubout)
+ 
+    SIGQUIT : constant Interrupt_ID :=
+      System.OS_Interface.SIGQUIT;     --  quit (ASCD FS)
+ 
+    SIGILL : constant Interrupt_ID :=
+      System.OS_Interface.SIGILL;      --  illegal instruction (not reset)
+ 
+    SIGTRAP : constant Interrupt_ID :=
+      System.OS_Interface.SIGTRAP;     --  trace trap (not reset)
+ 
+    SIGIOT : constant Interrupt_ID :=
+      System.OS_Interface.SIGIOT;      --  IOT instruction
+ 
+    SIGABRT : constant Interrupt_ID := --  used by abort,
+      System.OS_Interface.SIGABRT;     --  replace SIGIOT in the  future
+ 
+    SIGEMT : constant Interrupt_ID :=
+      System.OS_Interface.SIGEMT;      --  EMT instruction
+ 
+    SIGFPE : constant Interrupt_ID :=
+      System.OS_Interface.SIGFPE;      --  floating point exception
+ 
+    SIGKILL : constant Interrupt_ID :=
+      System.OS_Interface.SIGKILL;     --  kill (cannot be caught or ignored)
+ 
+    SIGBUS : constant Interrupt_ID :=
+      System.OS_Interface.SIGBUS;      --  bus error
+ 
+    SIGSEGV : constant Interrupt_ID :=
+      System.OS_Interface.SIGSEGV;     --  segmentation violation
+ 
+    SIGSYS : constant Interrupt_ID :=
+      System.OS_Interface.SIGSYS;      --  bad argument to system call
+ 
+    SIGPIPE : constant Interrupt_ID := --  write on a pipe with
+      System.OS_Interface.SIGPIPE;     --  no one to read it
+ 
+    SIGALRM : constant Interrupt_ID :=
+      System.OS_Interface.SIGALRM;     --  alarm clock
+ 
+    SIGTERM : constant Interrupt_ID :=
+      System.OS_Interface.SIGTERM;     --  software termination signal from kill
+ 
+    SIGUSR1 : constant Interrupt_ID :=
+      System.OS_Interface.SIGUSR1;     --  user defined signal 1
+ 
+    SIGUSR2 : constant Interrupt_ID :=
+      System.OS_Interface.SIGUSR2;     --  user defined signal 2
+ 
+    SIGCLD : constant Interrupt_ID :=
+      System.OS_Interface.SIGCLD;      --  child status change
+ 
+    SIGCHLD : constant Interrupt_ID :=
+      System.OS_Interface.SIGCHLD;     --  4.3BSD's/POSIX name for SIGCLD
+ 
+    SIGWINCH : constant Interrupt_ID :=
+      System.OS_Interface.SIGWINCH;    --  window size change
+ 
+    SIGURG : constant Interrupt_ID :=
+      System.OS_Interface.SIGURG;      --  urgent condition on IO channel
+ 
+    SIGPOLL : constant Interrupt_ID :=
+      System.OS_Interface.SIGPOLL;     --  pollable event occurred
+ 
+    SIGIO : constant Interrupt_ID :=   --  input/output possible,
+      System.OS_Interface.SIGIO;       --  SIGPOLL alias
+ 
+    SIGSTOP : constant Interrupt_ID :=
+      System.OS_Interface.SIGSTOP;     --  stop (cannot be caught or ignored)
+ 
+    SIGTSTP : constant Interrupt_ID :=
+      System.OS_Interface.SIGTSTP;     --  user stop requested from tty
+ 
+    SIGCONT : constant Interrupt_ID :=
+      System.OS_Interface.SIGCONT;     --  stopped process has been continued
+ 
+    SIGTTIN : constant Interrupt_ID :=
+      System.OS_Interface.SIGTTIN;     --  background tty read attempted
+ 
+    SIGTTOU : constant Interrupt_ID :=
+      System.OS_Interface.SIGTTOU;     --  background tty write attempted
+ 
+    SIGVTALRM : constant Interrupt_ID :=
+      System.OS_Interface.SIGVTALRM;   --  virtual timer expired
+ 
+    SIGPROF : constant Interrupt_ID :=
+      System.OS_Interface.SIGPROF;     --  profiling timer expired
+ 
+    SIGPWR : constant Interrupt_ID :=
+      System.OS_Interface.SIGPWR;      --  power-fail restart
+ 
+ end Ada.Interrupts.Names;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/a-intnam__linux.ads gcc-8.1.0/gcc/ada/libgnarl/a-intnam__linux.ads
*** gcc-7.3.0/gcc/ada/libgnarl/a-intnam__linux.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/a-intnam__linux.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,163 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                   A D A . I N T E R R U P T S . N A M E S                --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --          Copyright (C) 1991-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is a GNU/Linux version of this package
+ 
+ --  The following signals are reserved by the run time:
+ 
+ --  SIGFPE, SIGILL, SIGSEGV, SIGBUS, SIGTRAP, SIGABRT, SIGINT,
+ --  SIGUSR1, SIGUSR2, SIGVTALRM, SIGUNUSED, SIGSTOP, SIGKILL
+ 
+ --  The pragma Unreserve_All_Interrupts affects the following signal(s):
+ 
+ --  SIGINT: made available for Ada handler
+ 
+ --  This target-dependent package spec contains names of interrupts
+ --  supported by the local system.
+ 
+ with System.OS_Interface;
+ 
+ package Ada.Interrupts.Names is
+ 
+    --  All identifiers in this unit are implementation defined
+ 
+    pragma Implementation_Defined;
+ 
+    --  Beware that the mapping of names to signals may be many-to-one. There
+    --  may be aliases. Also, for all signal names that are not supported on the
+    --  current system the value of the corresponding constant will be zero.
+ 
+    SIGHUP : constant Interrupt_ID :=
+      System.OS_Interface.SIGHUP;      --  hangup
+ 
+    SIGINT : constant Interrupt_ID :=
+      System.OS_Interface.SIGINT;      --  interrupt (rubout)
+ 
+    SIGQUIT : constant Interrupt_ID :=
+      System.OS_Interface.SIGQUIT;     --  quit (ASCD FS)
+ 
+    SIGILL : constant Interrupt_ID :=
+      System.OS_Interface.SIGILL;      --  illegal instruction (not reset)
+ 
+    SIGTRAP : constant Interrupt_ID :=
+      System.OS_Interface.SIGTRAP;     --  trace trap (not reset)
+ 
+    SIGIOT : constant Interrupt_ID :=
+      System.OS_Interface.SIGIOT;      --  IOT instruction
+ 
+    SIGABRT : constant Interrupt_ID := --  used by abort,
+      System.OS_Interface.SIGABRT;     --  replace SIGIOT in the  future
+ 
+    SIGFPE : constant Interrupt_ID :=
+      System.OS_Interface.SIGFPE;      --  floating point exception
+ 
+    SIGKILL : constant Interrupt_ID :=
+      System.OS_Interface.SIGKILL;     --  kill (cannot be caught or ignored)
+ 
+    SIGBUS : constant Interrupt_ID :=
+      System.OS_Interface.SIGBUS;      --  bus error
+ 
+    SIGSEGV : constant Interrupt_ID :=
+      System.OS_Interface.SIGSEGV;     --  segmentation violation
+ 
+    SIGPIPE : constant Interrupt_ID := --  write on a pipe with
+      System.OS_Interface.SIGPIPE;     --  no one to read it
+ 
+    SIGALRM : constant Interrupt_ID :=
+      System.OS_Interface.SIGALRM;     --  alarm clock
+ 
+    SIGTERM : constant Interrupt_ID :=
+      System.OS_Interface.SIGTERM;     --  software termination signal from kill
+ 
+    SIGUSR1 : constant Interrupt_ID :=
+      System.OS_Interface.SIGUSR1;     --  user defined signal 1
+ 
+    SIGUSR2 : constant Interrupt_ID :=
+      System.OS_Interface.SIGUSR2;     --  user defined signal 2
+ 
+    SIGCLD : constant Interrupt_ID :=
+      System.OS_Interface.SIGCLD;      --  child status change
+ 
+    SIGCHLD : constant Interrupt_ID :=
+      System.OS_Interface.SIGCHLD;     --  4.3BSD's/POSIX name for SIGCLD
+ 
+    SIGWINCH : constant Interrupt_ID :=
+      System.OS_Interface.SIGWINCH;    --  window size change
+ 
+    SIGURG : constant Interrupt_ID :=
+      System.OS_Interface.SIGURG;      --  urgent condition on IO channel
+ 
+    SIGPOLL : constant Interrupt_ID :=
+      System.OS_Interface.SIGPOLL;     --  pollable event occurred
+ 
+    SIGIO : constant Interrupt_ID :=   --  input/output possible,
+      System.OS_Interface.SIGIO;       --  SIGPOLL alias (Solaris)
+ 
+    SIGSTOP : constant Interrupt_ID :=
+      System.OS_Interface.SIGSTOP;     --  stop (cannot be caught or ignored)
+ 
+    SIGTSTP : constant Interrupt_ID :=
+      System.OS_Interface.SIGTSTP;     --  user stop requested from tty
+ 
+    SIGCONT : constant Interrupt_ID :=
+      System.OS_Interface.SIGCONT;     --  stopped process has been continued
+ 
+    SIGTTIN : constant Interrupt_ID :=
+      System.OS_Interface.SIGTTIN;     --  background tty read attempted
+ 
+    SIGTTOU : constant Interrupt_ID :=
+      System.OS_Interface.SIGTTOU;     --  background tty write attempted
+ 
+    SIGVTALRM : constant Interrupt_ID :=
+      System.OS_Interface.SIGVTALRM;   --  virtual timer expired
+ 
+    SIGPROF : constant Interrupt_ID :=
+      System.OS_Interface.SIGPROF;     --  profiling timer expired
+ 
+    SIGXCPU : constant Interrupt_ID :=
+      System.OS_Interface.SIGXCPU;     --  CPU time limit exceeded
+ 
+    SIGXFSZ : constant Interrupt_ID :=
+      System.OS_Interface.SIGXFSZ;     --  filesize limit exceeded
+ 
+    SIGUNUSED : constant Interrupt_ID :=
+      System.OS_Interface.SIGUNUSED;     --  unused signal
+ 
+    SIGSTKFLT : constant Interrupt_ID :=
+      System.OS_Interface.SIGSTKFLT;     --  stack fault on coprocessor
+ 
+    SIGLOST : constant Interrupt_ID :=
+      System.OS_Interface.SIGLOST;       --  Linux alias for SIGIO
+ 
+    SIGPWR : constant Interrupt_ID :=
+      System.OS_Interface.SIGPWR;        --  Power failure
+ 
+ end Ada.Interrupts.Names;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/a-intnam__lynxos.ads gcc-8.1.0/gcc/ada/libgnarl/a-intnam__lynxos.ads
*** gcc-7.3.0/gcc/ada/libgnarl/a-intnam__lynxos.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/a-intnam__lynxos.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,166 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                   A D A . I N T E R R U P T S . N A M E S                --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --          Copyright (C) 1991-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is a LynxOS version of this package
+ 
+ --  The following signals are reserved by the run time:
+ 
+ --  SIGFPE, SIGILL, SIGSEGV, SIGBUS, SIGTRAP, SIGABRT, SIGINT,
+ --  SIGWAITING, SIGLWP, SIGTTIN, SIGTTOU, SIGTSTP, SIGPROF, SIGSTOP, SIGKILL
+ 
+ --  The pragma Unreserve_All_Interrupts affects the following signal(s):
+ 
+ --  SIGINT: made available for Ada handler
+ 
+ with System.OS_Interface;
+ 
+ package Ada.Interrupts.Names is
+ 
+    --  All identifiers in this unit are implementation defined
+ 
+    pragma Implementation_Defined;
+ 
+    --  Beware that the mapping of names to signals may be many-to-one. There
+    --  may be aliases.
+ 
+    SIGHUP : constant Interrupt_ID :=
+      System.OS_Interface.SIGHUP;      --  hangup
+ 
+    SIGINT : constant Interrupt_ID :=
+      System.OS_Interface.SIGINT;      --  interrupt (rubout)
+ 
+    SIGQUIT : constant Interrupt_ID :=
+      System.OS_Interface.SIGQUIT;     --  quit (ASCD FS)
+ 
+    SIGILL : constant Interrupt_ID :=
+      System.OS_Interface.SIGILL;      --  illegal instruction (not reset)
+ 
+    SIGTRAP : constant Interrupt_ID :=
+      System.OS_Interface.SIGTRAP;     --  trace trap (not reset)
+ 
+    SIGBRK : constant Interrupt_ID :=
+      System.OS_Interface.SIGBRK;      --  break
+ 
+    SIGIOT : constant Interrupt_ID :=
+      System.OS_Interface.SIGIOT;      --  IOT instruction
+ 
+    SIGABRT : constant Interrupt_ID := --  used by abort,
+      System.OS_Interface.SIGABRT;     --  replace SIGIOT in the  future
+ 
+    SIGCORE : constant Interrupt_ID :=
+      System.OS_Interface.SIGCORE;     --  kill with core dump
+ 
+    SIGEMT : constant Interrupt_ID :=
+      System.OS_Interface.SIGEMT;      --  EMT instruction
+ 
+    SIGFPE : constant Interrupt_ID :=
+      System.OS_Interface.SIGFPE;      --  floating point exception
+ 
+    SIGKILL : constant Interrupt_ID :=
+      System.OS_Interface.SIGKILL;     --  kill (cannot be caught or ignored)
+ 
+    SIGBUS : constant Interrupt_ID :=
+      System.OS_Interface.SIGBUS;      --  bus error
+ 
+    SIGSEGV : constant Interrupt_ID :=
+      System.OS_Interface.SIGSEGV;     --  segmentation violation
+ 
+    SIGSYS : constant Interrupt_ID :=
+      System.OS_Interface.SIGSYS;      --  bad argument to system call
+ 
+    SIGPIPE : constant Interrupt_ID := --  write on a pipe with
+      System.OS_Interface.SIGPIPE;     --  no one to read it
+ 
+    SIGALRM : constant Interrupt_ID :=
+      System.OS_Interface.SIGALRM;     --  alarm clock
+ 
+    SIGTERM : constant Interrupt_ID :=
+      System.OS_Interface.SIGTERM;     --  software termination signal from kill
+ 
+    SIGURG : constant Interrupt_ID :=
+      System.OS_Interface.SIGURG;      --  urgent condition on IO channel
+ 
+    SIGSTOP : constant Interrupt_ID :=
+      System.OS_Interface.SIGSTOP;     --  stop (cannot be caught or ignored)
+ 
+    SIGTSTP : constant Interrupt_ID :=
+      System.OS_Interface.SIGTSTP;     --  user stop requested from tty
+ 
+    SIGCONT : constant Interrupt_ID :=
+      System.OS_Interface.SIGCONT;     --  stopped process has been continued
+ 
+    SIGCLD : constant Interrupt_ID :=
+      System.OS_Interface.SIGCLD;      --  child status change
+ 
+    SIGCHLD : constant Interrupt_ID :=
+      System.OS_Interface.SIGCHLD;     --  4.3BSD's/POSIX name for SIGCLD
+ 
+    SIGTTIN : constant Interrupt_ID :=
+      System.OS_Interface.SIGTTIN;     --  background tty read attempted
+ 
+    SIGTTOU : constant Interrupt_ID :=
+      System.OS_Interface.SIGTTOU;     --  background tty write attempted
+ 
+    SIGPOLL : constant Interrupt_ID :=
+      System.OS_Interface.SIGPOLL;     --  pollable event occurred
+ 
+    SIGIO : constant Interrupt_ID :=   --  input/output possible,
+      System.OS_Interface.SIGIO;       --  SIGPOLL alias (Solaris)
+ 
+    SIGXCPU : constant Interrupt_ID :=
+      System.OS_Interface.SIGXCPU;     --  CPU time limit exceeded
+ 
+    SIGXFSZ : constant Interrupt_ID :=
+      System.OS_Interface.SIGXFSZ;     --  filesize limit exceeded
+ 
+    SIGVTALRM : constant Interrupt_ID :=
+      System.OS_Interface.SIGVTALRM;   --  virtual timer expired
+ 
+    SIGPROF : constant Interrupt_ID :=
+      System.OS_Interface.SIGPROF;     --  profiling timer expired
+ 
+    SIGWINCH : constant Interrupt_ID :=
+      System.OS_Interface.SIGWINCH;    --  window size change
+ 
+    SIGLOST : constant Interrupt_ID :=
+      System.OS_Interface.SIGLOST;     --  SUN 4.1 compatibility
+ 
+    SIGUSR1 : constant Interrupt_ID :=
+      System.OS_Interface.SIGUSR1;     --  user defined signal 1
+ 
+    SIGUSR2 : constant Interrupt_ID :=
+      System.OS_Interface.SIGUSR2;     --  user defined signal 2
+ 
+    SIGPRIO : constant Interrupt_ID :=
+      System.OS_Interface.SIGPRIO;
+    --  sent to a process with its priority
+    --  or group is changed
+ end Ada.Interrupts.Names;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/a-intnam__mingw.ads gcc-8.1.0/gcc/ada/libgnarl/a-intnam__mingw.ads
*** gcc-7.3.0/gcc/ada/libgnarl/a-intnam__mingw.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/a-intnam__mingw.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,67 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                   A D A . I N T E R R U P T S . N A M E S                --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --          Copyright (C) 1997-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is a NT (native) version of this package
+ 
+ --  This target-dependent package spec contains names of interrupts supported
+ --  by the local system.
+ 
+ with System.OS_Interface;
+ 
+ package Ada.Interrupts.Names is
+ 
+    --  All identifiers in this unit are implementation defined
+ 
+    pragma Implementation_Defined;
+ 
+    --  Beware that the mapping of names to signals may be many-to-one. There
+    --  may be aliases. Also, for all signal names that are not supported on the
+    --  current system the value of the corresponding constant will be zero.
+ 
+    SIGINT  : constant Interrupt_ID :=  -- interrupt (rubout)
+                System.OS_Interface.SIGINT;
+ 
+    SIGILL  : constant Interrupt_ID :=  -- illegal instruction (not reset)
+                System.OS_Interface.SIGILL;
+ 
+    SIGABRT : constant Interrupt_ID :=  -- used by abort (use SIGIOT in future)
+                System.OS_Interface.SIGABRT;
+ 
+    SIGFPE  : constant Interrupt_ID :=  -- floating point exception
+                System.OS_Interface.SIGFPE;
+ 
+    SIGSEGV : constant Interrupt_ID :=  -- segmentation violation
+                System.OS_Interface.SIGSEGV;
+ 
+    SIGTERM : constant Interrupt_ID :=  -- software termination signal from kill
+                System.OS_Interface.SIGTERM;
+ 
+ end Ada.Interrupts.Names;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/a-intnam__qnx.ads gcc-8.1.0/gcc/ada/libgnarl/a-intnam__qnx.ads
*** gcc-7.3.0/gcc/ada/libgnarl/a-intnam__qnx.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/a-intnam__qnx.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,146 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                   A D A . I N T E R R U P T S . N A M E S                --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --          Copyright (C) 1991-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is a QNX version of this package
+ 
+ --  The pragma Unreserve_All_Interrupts affects the following signal(s):
+ 
+ --  SIGINT: made available for Ada handler
+ 
+ --  This target-dependent package spec contains names of interrupts
+ --  supported by the local system.
+ 
+ with System.OS_Interface;
+ 
+ package Ada.Interrupts.Names is
+ 
+    --  All identifiers in this unit are implementation defined
+ 
+    pragma Implementation_Defined;
+ 
+    --  Beware that the mapping of names to signals may be many-to-one. There
+    --  may be aliases. Also, for all signal names that are not supported on the
+    --  current system the value of the corresponding constant will be zero.
+ 
+    SIGHUP : constant Interrupt_ID :=
+      System.OS_Interface.SIGHUP;      --  hangup
+ 
+    SIGINT : constant Interrupt_ID :=
+      System.OS_Interface.SIGINT;      --  interrupt (rubout)
+ 
+    SIGQUIT : constant Interrupt_ID :=
+      System.OS_Interface.SIGQUIT;     --  quit (ASCD FS)
+ 
+    SIGILL : constant Interrupt_ID :=
+      System.OS_Interface.SIGILL;      --  illegal instruction (not reset)
+ 
+    SIGTRAP : constant Interrupt_ID :=
+      System.OS_Interface.SIGTRAP;     --  trace trap (not reset)
+ 
+    SIGIOT : constant Interrupt_ID :=
+      System.OS_Interface.SIGIOT;      --  IOT instruction
+ 
+    SIGABRT : constant Interrupt_ID := --  used by abort,
+      System.OS_Interface.SIGABRT;     --  replace SIGIOT in the  future
+ 
+    SIGFPE : constant Interrupt_ID :=
+      System.OS_Interface.SIGFPE;      --  floating point exception
+ 
+    SIGKILL : constant Interrupt_ID :=
+      System.OS_Interface.SIGKILL;     --  kill (cannot be caught or ignored)
+ 
+    SIGBUS : constant Interrupt_ID :=
+      System.OS_Interface.SIGBUS;      --  bus error
+ 
+    SIGSEGV : constant Interrupt_ID :=
+      System.OS_Interface.SIGSEGV;     --  segmentation violation
+ 
+    SIGPIPE : constant Interrupt_ID := --  write on a pipe with
+      System.OS_Interface.SIGPIPE;     --  no one to read it
+ 
+    SIGALRM : constant Interrupt_ID :=
+      System.OS_Interface.SIGALRM;     --  alarm clock
+ 
+    SIGTERM : constant Interrupt_ID :=
+      System.OS_Interface.SIGTERM;     --  software termination signal from kill
+ 
+    SIGUSR1 : constant Interrupt_ID :=
+      System.OS_Interface.SIGUSR1;     --  user defined signal 1
+ 
+    SIGUSR2 : constant Interrupt_ID :=
+      System.OS_Interface.SIGUSR2;     --  user defined signal 2
+ 
+    SIGCLD : constant Interrupt_ID :=
+      System.OS_Interface.SIGCLD;      --  child status change
+ 
+    SIGCHLD : constant Interrupt_ID :=
+      System.OS_Interface.SIGCHLD;     --  4.3BSD's/POSIX name for SIGCLD
+ 
+    SIGWINCH : constant Interrupt_ID :=
+      System.OS_Interface.SIGWINCH;    --  window size change
+ 
+    SIGURG : constant Interrupt_ID :=
+      System.OS_Interface.SIGURG;      --  urgent condition on IO channel
+ 
+    SIGPOLL : constant Interrupt_ID :=
+      System.OS_Interface.SIGPOLL;     --  pollable event occurred
+ 
+    SIGIO : constant Interrupt_ID :=   --  input/output possible,
+      System.OS_Interface.SIGIO;       --  SIGPOLL alias (Solaris)
+ 
+    SIGSTOP : constant Interrupt_ID :=
+      System.OS_Interface.SIGSTOP;     --  stop (cannot be caught or ignored)
+ 
+    SIGTSTP : constant Interrupt_ID :=
+      System.OS_Interface.SIGTSTP;     --  user stop requested from tty
+ 
+    SIGCONT : constant Interrupt_ID :=
+      System.OS_Interface.SIGCONT;     --  stopped process has been continued
+ 
+    SIGTTIN : constant Interrupt_ID :=
+      System.OS_Interface.SIGTTIN;     --  background tty read attempted
+ 
+    SIGTTOU : constant Interrupt_ID :=
+      System.OS_Interface.SIGTTOU;     --  background tty write attempted
+ 
+    SIGVTALRM : constant Interrupt_ID :=
+      System.OS_Interface.SIGVTALRM;   --  virtual timer expired
+ 
+    SIGPROF : constant Interrupt_ID :=
+      System.OS_Interface.SIGPROF;     --  profiling timer expired
+ 
+    SIGXCPU : constant Interrupt_ID :=
+      System.OS_Interface.SIGXCPU;     --  CPU time limit exceeded
+ 
+    SIGXFSZ : constant Interrupt_ID :=
+      System.OS_Interface.SIGXFSZ;     --  filesize limit exceeded
+ 
+ end Ada.Interrupts.Names;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/a-intnam__rtems.ads gcc-8.1.0/gcc/ada/libgnarl/a-intnam__rtems.ads
*** gcc-7.3.0/gcc/ada/libgnarl/a-intnam__rtems.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/a-intnam__rtems.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,114 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                GNU ADA RUN-TIME LIBRARY (GNARL) COMPONENTS               --
+ --                                                                          --
+ --                   A D A . I N T E R R U P T S . N A M E S                --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --             Copyright (C) 1991-2018, Free Software Foundation, Inc.      --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ -- The GNARL files that were developed for RTEMS are maintained by  On-Line --
+ -- Applications Research Corporation (http://www.oarcorp.com)  in  coopera- --
+ -- tion with Ada Core Technologies Inc. and Florida State University.       --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is a RTEMS version of this package
+ --
+ --  The following signals are reserved by the run time:
+ --
+ --  SIGFPE, SIGILL, SIGSEGV, SIGBUS, SIGTRAP, SIGABRT, SIGINT,
+ --  SIGALRM, SIGEMT, SIGKILL
+ --
+ --  The pragma Unreserve_All_Interrupts affects the following signal(s):
+ --
+ --  SIGINT: made available for Ada handlers
+ 
+ --  This target-dependent package spec contains names of interrupts
+ --  supported by the local system.
+ 
+ with System.OS_Interface;
+ --  used for names of interrupts
+ 
+ package Ada.Interrupts.Names is
+ 
+    --  Beware that the mapping of names to signals may be
+    --  many-to-one.  There may be aliases.  Also, for all
+    --  signal names that are not supported on the current system
+    --  the value of the corresponding constant will be zero.
+ 
+    SIGHUP : constant Interrupt_ID :=
+      System.OS_Interface.SIGHUP;      --  hangup
+ 
+    SIGINT : constant Interrupt_ID :=
+      System.OS_Interface.SIGINT;      --  interrupt (rubout)
+ 
+    SIGQUIT : constant Interrupt_ID :=
+      System.OS_Interface.SIGQUIT;     --  quit (ASCD FS)
+ 
+    SIGILL : constant Interrupt_ID :=
+      System.OS_Interface.SIGILL;      --  illegal instruction (not reset)
+ 
+    SIGTRAP : constant Interrupt_ID :=
+      System.OS_Interface.SIGTRAP;     --  trace trap (not reset)
+ 
+    SIGIOT : constant Interrupt_ID :=
+      System.OS_Interface.SIGIOT;      --  IOT instruction
+ 
+    SIGABRT : constant Interrupt_ID := --  used by abort,
+      System.OS_Interface.SIGABRT;     --  replace SIGIOT in the  future
+ 
+    SIGEMT : constant Interrupt_ID :=
+      System.OS_Interface.SIGEMT;      --  EMT instruction
+ 
+    SIGFPE : constant Interrupt_ID :=
+      System.OS_Interface.SIGFPE;      --  floating point exception
+ 
+    SIGKILL : constant Interrupt_ID :=
+      System.OS_Interface.SIGKILL;     --  kill (cannot be caught or ignored)
+ 
+    SIGBUS : constant Interrupt_ID :=
+      System.OS_Interface.SIGBUS;      --  bus error
+ 
+    SIGSEGV : constant Interrupt_ID :=
+      System.OS_Interface.SIGSEGV;     --  segmentation violation
+ 
+    SIGSYS : constant Interrupt_ID :=
+      System.OS_Interface.SIGSYS;      --  bad argument to system call
+ 
+    SIGPIPE : constant Interrupt_ID := --  write on a pipe with
+      System.OS_Interface.SIGPIPE;     --  no one to read it
+ 
+    SIGALRM : constant Interrupt_ID :=
+      System.OS_Interface.SIGALRM;     --  alarm clock
+ 
+    SIGTERM : constant Interrupt_ID :=
+      System.OS_Interface.SIGTERM;     --  software termination signal from kill
+ 
+    SIGUSR1 : constant Interrupt_ID :=
+      System.OS_Interface.SIGUSR1;     --  user defined signal 1
+ 
+    SIGUSR2 : constant Interrupt_ID :=
+      System.OS_Interface.SIGUSR2;     --  user defined signal 2
+ 
+ end Ada.Interrupts.Names;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/a-intnam__solaris.ads gcc-8.1.0/gcc/ada/libgnarl/a-intnam__solaris.ads
*** gcc-7.3.0/gcc/ada/libgnarl/a-intnam__solaris.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/a-intnam__solaris.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,179 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                   A D A . I N T E R R U P T S . N A M E S                --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --          Copyright (C) 1991-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is a Solaris version of this package
+ 
+ --  The following signals are reserved by the run time (native threads):
+ 
+ --  SIGFPE, SIGILL, SIGSEGV, SIGBUS, SIGTRAP, SIGABRT, SIGINT,
+ --  SIGLWP, SIGWAITING, SIGCANCEL, SIGSTOP, SIGKILL
+ 
+ --  The following signals are reserved by the run time (FSU threads):
+ 
+ --  SIGFPE, SIGILL, SIGSEGV, SIGBUS, SIGTRAP, SIGTERM, SIGABRT, SIGINT,
+ --  SIGLWP, SIGALRM, SIGVTALRM, SIGWAITING, SIGSTOP, SIGKILL
+ 
+ --  The pragma Unreserve_All_Interrupts affects the following signal(s):
+ 
+ --  SIGINT: made available for Ada handlers
+ 
+ with System.OS_Interface;
+ 
+ package Ada.Interrupts.Names is
+ 
+    --  All identifiers in this unit are implementation defined
+ 
+    pragma Implementation_Defined;
+ 
+    --  Beware that the mapping of names to signals may be many-to-one. There
+    --  may be aliases. Also, for all signal names that are not supported on the
+    --  current system the value of the corresponding constant will be zero.
+ 
+    SIGHUP : constant Interrupt_ID :=
+      System.OS_Interface.SIGHUP;      --  hangup
+ 
+    SIGINT : constant Interrupt_ID :=
+      System.OS_Interface.SIGINT;      --  interrupt (rubout)
+ 
+    SIGQUIT : constant Interrupt_ID :=
+      System.OS_Interface.SIGQUIT;     --  quit (ASCD FS)
+ 
+    SIGILL : constant Interrupt_ID :=
+      System.OS_Interface.SIGILL;      --  illegal instruction (not reset)
+ 
+    SIGTRAP : constant Interrupt_ID :=
+      System.OS_Interface.SIGTRAP;     --  trace trap (not reset)
+ 
+    SIGIOT : constant Interrupt_ID :=
+      System.OS_Interface.SIGIOT;      --  IOT instruction
+ 
+    SIGABRT : constant Interrupt_ID := --  used by abort,
+      System.OS_Interface.SIGABRT;     --  replace SIGIOT in the  future
+ 
+    SIGEMT : constant Interrupt_ID :=
+      System.OS_Interface.SIGEMT;      --  EMT instruction
+ 
+    SIGFPE : constant Interrupt_ID :=
+      System.OS_Interface.SIGFPE;      --  floating point exception
+ 
+    SIGKILL : constant Interrupt_ID :=
+      System.OS_Interface.SIGKILL;     --  kill (cannot be caught or ignored)
+ 
+    SIGBUS : constant Interrupt_ID :=
+      System.OS_Interface.SIGBUS;      --  bus error
+ 
+    SIGSEGV : constant Interrupt_ID :=
+      System.OS_Interface.SIGSEGV;     --  segmentation violation
+ 
+    SIGSYS : constant Interrupt_ID :=
+      System.OS_Interface.SIGSYS;      --  bad argument to system call
+ 
+    SIGPIPE : constant Interrupt_ID := --  write on a pipe with
+      System.OS_Interface.SIGPIPE;     --  no one to read it
+ 
+    SIGALRM : constant Interrupt_ID :=
+      System.OS_Interface.SIGALRM;     --  alarm clock
+ 
+    SIGTERM : constant Interrupt_ID :=
+      System.OS_Interface.SIGTERM;     --  software termination signal from kill
+ 
+    SIGUSR1 : constant Interrupt_ID :=
+      System.OS_Interface.SIGUSR1;     --  user defined signal 1
+ 
+    SIGUSR2 : constant Interrupt_ID :=
+      System.OS_Interface.SIGUSR2;     --  user defined signal 2
+ 
+    SIGCLD : constant Interrupt_ID :=
+      System.OS_Interface.SIGCLD;      --  child status change
+ 
+    SIGCHLD : constant Interrupt_ID :=
+      System.OS_Interface.SIGCHLD;     --  4.3BSD's/POSIX name for SIGCLD
+ 
+    SIGWINCH : constant Interrupt_ID :=
+      System.OS_Interface.SIGWINCH;    --  window size change
+ 
+    SIGURG : constant Interrupt_ID :=
+      System.OS_Interface.SIGURG;      --  urgent condition on IO channel
+ 
+    SIGPOLL : constant Interrupt_ID :=
+      System.OS_Interface.SIGPOLL;     --  pollable event occurred
+ 
+    SIGIO : constant Interrupt_ID :=   --  input/output possible,
+      System.OS_Interface.SIGIO;       --  SIGPOLL alias (Solaris)
+ 
+    SIGSTOP : constant Interrupt_ID :=
+      System.OS_Interface.SIGSTOP;     --  stop (cannot be caught or ignored)
+ 
+    SIGTSTP : constant Interrupt_ID :=
+      System.OS_Interface.SIGTSTP;     --  user stop requested from tty
+ 
+    SIGCONT : constant Interrupt_ID :=
+      System.OS_Interface.SIGCONT;     --  stopped process has been continued
+ 
+    SIGTTIN : constant Interrupt_ID :=
+      System.OS_Interface.SIGTTIN;     --  background tty read attempted
+ 
+    SIGTTOU : constant Interrupt_ID :=
+      System.OS_Interface.SIGTTOU;     --  background tty write attempted
+ 
+    SIGVTALRM : constant Interrupt_ID :=
+      System.OS_Interface.SIGVTALRM;   --  virtual timer expired
+ 
+    SIGPROF : constant Interrupt_ID :=
+      System.OS_Interface.SIGPROF;     --  profiling timer expired
+ 
+    SIGXCPU : constant Interrupt_ID :=
+      System.OS_Interface.SIGXCPU;     --  CPU time limit exceeded
+ 
+    SIGXFSZ : constant Interrupt_ID :=
+      System.OS_Interface.SIGXFSZ;     --  filesize limit exceeded
+ 
+    SIGPWR : constant Interrupt_ID :=
+      System.OS_Interface.SIGPWR;      --  power-fail restart
+ 
+    SIGWAITING : constant Interrupt_ID :=
+      System.OS_Interface.SIGWAITING;  --  process's lwps blocked (Solaris)
+ 
+    SIGLWP : constant Interrupt_ID :=
+      System.OS_Interface.SIGLWP;      --  used by thread library (Solaris)
+ 
+    SIGFREEZE : constant Interrupt_ID :=
+      System.OS_Interface.SIGFREEZE;   --  used by CPR (Solaris)
+ 
+ --  what is CPR????
+ 
+    SIGTHAW : constant Interrupt_ID :=
+      System.OS_Interface.SIGTHAW;     --  used by CPR (Solaris)
+ 
+    SIGCANCEL : constant Interrupt_ID :=
+      System.OS_Interface.SIGCANCEL;     --  used for thread cancel (Solaris)
+ 
+ end Ada.Interrupts.Names;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/a-intnam__vxworks.ads gcc-8.1.0/gcc/ada/libgnarl/a-intnam__vxworks.ads
*** gcc-7.3.0/gcc/ada/libgnarl/a-intnam__vxworks.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/a-intnam__vxworks.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,46 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                  GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                --
+ --                                                                          --
+ --                   A D A . I N T E R R U P T S . N A M E S                --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --          Copyright (C) 1998-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is the VxWorks version of this package
+ 
+ with System.OS_Interface;
+ 
+ package Ada.Interrupts.Names is
+ 
+    --  All identifiers in this unit are implementation defined
+ 
+    pragma Implementation_Defined;
+ 
+    subtype Hardware_Interrupts is Interrupt_ID
+      range Interrupt_ID'First .. System.OS_Interface.Max_HW_Interrupt;
+    --  Range of values that can be used for hardware interrupts
+ 
+ end Ada.Interrupts.Names;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/a-reatim.adb gcc-8.1.0/gcc/ada/libgnarl/a-reatim.adb
*** gcc-7.3.0/gcc/ada/libgnarl/a-reatim.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/a-reatim.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,390 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                         A D A . R E A L _ T I M E                        --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --             Copyright (C) 1991-2017, Florida State University            --
+ --                     Copyright (C) 1995-2018, AdaCore                     --
+ --                                                                          --
+ -- GNAT is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Tasking;
+ with Unchecked_Conversion;
+ 
+ package body Ada.Real_Time with
+   SPARK_Mode => Off
+ is
+ 
+    ---------
+    -- "*" --
+    ---------
+ 
+    --  Note that Constraint_Error may be propagated
+ 
+    function "*" (Left : Time_Span; Right : Integer) return Time_Span is
+       pragma Unsuppress (Overflow_Check);
+    begin
+       return Time_Span (Duration (Left) * Right);
+    end "*";
+ 
+    function "*" (Left : Integer; Right : Time_Span) return Time_Span is
+       pragma Unsuppress (Overflow_Check);
+    begin
+       return Time_Span (Left * Duration (Right));
+    end "*";
+ 
+    ---------
+    -- "+" --
+    ---------
+ 
+    --  Note that Constraint_Error may be propagated
+ 
+    function "+" (Left : Time; Right : Time_Span) return Time is
+       pragma Unsuppress (Overflow_Check);
+    begin
+       return Time (Duration (Left) + Duration (Right));
+    end "+";
+ 
+    function "+" (Left : Time_Span; Right : Time) return Time is
+       pragma Unsuppress (Overflow_Check);
+    begin
+       return Time (Duration (Left) + Duration (Right));
+    end "+";
+ 
+    function "+" (Left, Right : Time_Span) return Time_Span is
+       pragma Unsuppress (Overflow_Check);
+    begin
+       return Time_Span (Duration (Left) + Duration (Right));
+    end "+";
+ 
+    ---------
+    -- "-" --
+    ---------
+ 
+    --  Note that Constraint_Error may be propagated
+ 
+    function "-" (Left : Time; Right : Time_Span) return Time is
+       pragma Unsuppress (Overflow_Check);
+    begin
+       return Time (Duration (Left) - Duration (Right));
+    end "-";
+ 
+    function "-" (Left, Right : Time) return Time_Span is
+       pragma Unsuppress (Overflow_Check);
+    begin
+       return Time_Span (Duration (Left) - Duration (Right));
+    end "-";
+ 
+    function "-" (Left, Right : Time_Span) return Time_Span is
+       pragma Unsuppress (Overflow_Check);
+    begin
+       return Time_Span (Duration (Left) - Duration (Right));
+    end "-";
+ 
+    function "-" (Right : Time_Span) return Time_Span is
+       pragma Unsuppress (Overflow_Check);
+    begin
+       return Time_Span_Zero - Right;
+    end "-";
+ 
+    ---------
+    -- "/" --
+    ---------
+ 
+    --  Note that Constraint_Error may be propagated
+ 
+    function "/" (Left, Right : Time_Span) return Integer is
+       pragma Unsuppress (Overflow_Check);
+       pragma Unsuppress (Division_Check);
+ 
+       --  RM D.8 (27) specifies the effects of operators on Time_Span, and
+       --  rounding of the division operator in particular, to be the same as
+       --  effects on integer types. To get the correct rounding we first
+       --  convert Time_Span to its root type Duration, which is represented as
+       --  a 64-bit signed integer, and then use integer division.
+ 
+       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)));
+    end "/";
+ 
+    function "/" (Left : Time_Span; Right : Integer) return Time_Span is
+       pragma Unsuppress (Overflow_Check);
+       pragma Unsuppress (Division_Check);
+    begin
+       --  Even though checks are unsuppressed, we need an explicit check for
+       --  the case of largest negative integer divided by minus one, since
+       --  some library routines we use fail to catch this case. This will be
+       --  fixed at the compiler level in the future, at which point this test
+       --  can be removed.
+ 
+       if Left = Time_Span_First and then Right = -1 then
+          raise Constraint_Error with "overflow";
+       end if;
+ 
+       return Time_Span (Duration (Left) / Right);
+    end "/";
+ 
+    -----------
+    -- Clock --
+    -----------
+ 
+    function Clock return Time is
+    begin
+       return Time (System.Task_Primitives.Operations.Monotonic_Clock);
+    end Clock;
+ 
+    ------------------
+    -- Microseconds --
+    ------------------
+ 
+    function Microseconds (US : Integer) return Time_Span is
+    begin
+       return Time_Span_Unit * US * 1_000;
+    end Microseconds;
+ 
+    ------------------
+    -- Milliseconds --
+    ------------------
+ 
+    function Milliseconds (MS : Integer) return Time_Span is
+    begin
+       return Time_Span_Unit * MS * 1_000_000;
+    end Milliseconds;
+ 
+    -------------
+    -- Minutes --
+    -------------
+ 
+    function Minutes (M : Integer) return Time_Span is
+    begin
+       return Milliseconds (M) * Integer'(60_000);
+    end Minutes;
+ 
+    -----------------
+    -- Nanoseconds --
+    -----------------
+ 
+    function Nanoseconds (NS : Integer) return Time_Span is
+    begin
+       return Time_Span_Unit * NS;
+    end Nanoseconds;
+ 
+    -------------
+    -- Seconds --
+    -------------
+ 
+    function Seconds (S : Integer) return Time_Span is
+    begin
+       return Milliseconds (S) * Integer'(1000);
+    end Seconds;
+ 
+    -----------
+    -- Split --
+    -----------
+ 
+    procedure Split (T : Time; SC : out Seconds_Count; TS : out Time_Span) is
+       T_Val : Time;
+ 
+    begin
+       --  Special-case for Time_First, whose absolute value is anomalous,
+       --  courtesy of two's complement.
+ 
+       T_Val := (if T = Time_First then abs (Time_Last) else abs (T));
+ 
+       --  Extract the integer part of T, truncating towards zero
+ 
+       SC :=
+         (if T_Val < 0.5 then 0 else Seconds_Count (Time_Span'(T_Val - 0.5)));
+ 
+       if T < 0.0 then
+          SC := -SC;
+       end if;
+ 
+       --  If original time is negative, need to truncate towards negative
+       --  infinity, to make TS non-negative, as per ARM.
+ 
+       if Time (SC) > T then
+          SC := SC - 1;
+       end if;
+ 
+       TS := Time_Span (Duration (T) - Duration (SC));
+    end Split;
+ 
+    -------------
+    -- Time_Of --
+    -------------
+ 
+    function Time_Of (SC : Seconds_Count; TS : Time_Span) return Time is
+       pragma Suppress (Overflow_Check);
+       pragma Suppress (Range_Check);
+       --  We do all our own checks for this function
+ 
+       --  This is not such a simple case, since TS is already 64 bits, and
+       --  so we can't just promote everything to a wider type to ensure proper
+       --  testing for overflow. The situation is that Seconds_Count is a MUCH
+       --  wider type than Time_Span and Time (both of which have the underlying
+       --  type Duration).
+ 
+       --         <------------------- Seconds_Count -------------------->
+       --                            <-- Duration -->
+ 
+       --  Now it is possible for an SC value outside the Duration range to
+       --  be "brought back into range" by an appropriate TS value, but there
+       --  are also clearly SC values that are completely out of range. Note
+       --  that the above diagram is wildly out of scale, the difference in
+       --  ranges is much greater than shown.
+ 
+       --  We can't just go generating out of range Duration values to test for
+       --  overflow, since Duration is a full range type, so we follow the steps
+       --  shown below.
+ 
+       SC_Lo : constant Seconds_Count :=
+                 Seconds_Count (Duration (Time_Span_First) + Duration'(0.5));
+       SC_Hi : constant Seconds_Count :=
+                 Seconds_Count (Duration (Time_Span_Last)  - Duration'(0.5));
+       --  These are the maximum values of the seconds (integer) part of the
+       --  Duration range. Used to compute and check the seconds in the result.
+ 
+       TS_SC : Seconds_Count;
+       --  Seconds part of input value
+ 
+       TS_Fraction : Duration;
+       --  Fractional part of input value, may be negative
+ 
+       Result_SC : Seconds_Count;
+       --  Seconds value for result
+ 
+       Fudge : constant Seconds_Count := 10;
+       --  Fudge value used to do end point checks far from end point
+ 
+       FudgeD : constant Duration := Duration (Fudge);
+       --  Fudge value as Duration
+ 
+       Fudged_Result : Duration;
+       --  Result fudged up or down by FudgeD
+ 
+       procedure Out_Of_Range;
+       pragma No_Return (Out_Of_Range);
+       --  Raise exception for result out of range
+ 
+       ------------------
+       -- Out_Of_Range --
+       ------------------
+ 
+       procedure Out_Of_Range is
+       begin
+          raise Constraint_Error with
+            "result for Ada.Real_Time.Time_Of is out of range";
+       end Out_Of_Range;
+ 
+    --  Start of processing for Time_Of
+ 
+    begin
+       --  If SC is so far out of range that there is no possibility of the
+       --  addition of TS getting it back in range, raise an exception right
+       --  away. That way we don't have to worry about SC values overflowing.
+ 
+       if SC < 3 * SC_Lo or else SC > 3 * SC_Hi then
+          Out_Of_Range;
+       end if;
+ 
+       --  Decompose input TS value
+ 
+       TS_SC := Seconds_Count (Duration (TS));
+       TS_Fraction := Duration (TS) - Duration (TS_SC);
+ 
+       --  Compute result seconds. If clearly out of range, raise error now
+ 
+       Result_SC := SC + TS_SC;
+ 
+       if Result_SC < (SC_Lo - 1) or else Result_SC > (SC_Hi + 1) then
+          Out_Of_Range;
+       end if;
+ 
+       --  Now the result is simply Result_SC + TS_Fraction, but we can't just
+       --  go computing that since it might be out of range. So what we do is
+       --  to compute a value fudged down or up by 10.0 (arbitrary value, but
+       --  that will do fine), and check that fudged value, and if in range
+       --  unfudge it and return the result.
+ 
+       --  Fudge positive result down, and check high bound
+ 
+       if Result_SC > 0 then
+          Fudged_Result := Duration (Result_SC - Fudge) + TS_Fraction;
+ 
+          if Fudged_Result <= Duration'Last - FudgeD then
+             return Time (Fudged_Result + FudgeD);
+          else
+             Out_Of_Range;
+          end if;
+ 
+       --  Same for negative values of seconds, fudge up and check low bound
+ 
+       else
+          Fudged_Result := Duration (Result_SC + Fudge) + TS_Fraction;
+ 
+          if Fudged_Result >= Duration'First + FudgeD then
+             return Time (Fudged_Result - FudgeD);
+          else
+             Out_Of_Range;
+          end if;
+       end if;
+    end Time_Of;
+ 
+    -----------------
+    -- To_Duration --
+    -----------------
+ 
+    function To_Duration (TS : Time_Span) return Duration is
+    begin
+       return Duration (TS);
+    end To_Duration;
+ 
+    ------------------
+    -- To_Time_Span --
+    ------------------
+ 
+    function To_Time_Span (D : Duration) return Time_Span is
+    begin
+       --  Note regarding AI-00432 requiring range checking on this conversion.
+       --  In almost all versions of GNAT (and all to which this version of the
+       --  Ada.Real_Time package apply), the range of Time_Span and Duration are
+       --  the same, so there is no issue of overflow.
+ 
+       return Time_Span (D);
+    end To_Time_Span;
+ 
+ begin
+    --  Ensure that the tasking run time is initialized when using clock and/or
+    --  delay operations. The initialization routine has the required machinery
+    --  to prevent multiple calls to Initialize.
+ 
+    System.Tasking.Initialize;
+ end Ada.Real_Time;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/a-reatim.ads gcc-8.1.0/gcc/ada/libgnarl/a-reatim.ads
*** gcc-7.3.0/gcc/ada/libgnarl/a-reatim.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/a-reatim.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,187 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                         A D A . R E A L _ T I M E                        --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --          Copyright (C) 1992-2018, Free Software Foundation, 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.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Task_Primitives.Operations;
+ pragma Elaborate_All (System.Task_Primitives.Operations);
+ 
+ package Ada.Real_Time with
+   SPARK_Mode,
+   Abstract_State => (Clock_Time with Synchronous,
+                                      External => (Async_Readers,
+                                                   Async_Writers)),
+   Initializes    => Clock_Time
+ is
+ 
+    pragma Compile_Time_Error
+      (Duration'Size /= 64,
+       "this version of Ada.Real_Time requires 64-bit Duration");
+ 
+    type Time is private;
+    Time_First : constant Time;
+    Time_Last  : constant Time;
+    Time_Unit  : constant := 10#1.0#E-9;
+ 
+    type Time_Span is private;
+    Time_Span_First : constant Time_Span;
+    Time_Span_Last  : constant Time_Span;
+    Time_Span_Zero  : constant Time_Span;
+    Time_Span_Unit  : constant Time_Span;
+ 
+    Tick : constant Time_Span;
+    function Clock return Time with
+      Volatile_Function,
+      Global => Clock_Time;
+ 
+    function "+"  (Left : Time;      Right : Time_Span) return Time with
+      Global => null;
+    function "+"  (Left : Time_Span; Right : Time)      return Time with
+      Global => null;
+    function "-"  (Left : Time;      Right : Time_Span) return Time with
+      Global => null;
+    function "-"  (Left : Time;      Right : Time)      return Time_Span with
+      Global => null;
+ 
+    function "<"  (Left, Right : Time) return Boolean with
+      Global => null;
+    function "<=" (Left, Right : Time) return Boolean with
+      Global => null;
+    function ">"  (Left, Right : Time) return Boolean with
+      Global => null;
+    function ">=" (Left, Right : Time) return Boolean with
+      Global => null;
+ 
+    function "+"  (Left, Right : Time_Span)             return Time_Span with
+      Global => null;
+    function "-"  (Left, Right : Time_Span)             return Time_Span with
+      Global => null;
+    function "-"  (Right : Time_Span)                   return Time_Span with
+      Global => null;
+    function "*"  (Left : Time_Span; Right : Integer)   return Time_Span with
+      Global => null;
+    function "*"  (Left : Integer;   Right : Time_Span) return Time_Span with
+      Global => null;
+    function "/"  (Left, Right : Time_Span)             return Integer with
+      Global => null;
+    function "/"  (Left : Time_Span; Right : Integer)   return Time_Span with
+      Global => null;
+ 
+    function "abs" (Right : Time_Span) return Time_Span with
+      Global => null;
+ 
+    function "<"  (Left, Right : Time_Span) return Boolean with
+      Global => null;
+    function "<=" (Left, Right : Time_Span) return Boolean with
+      Global => null;
+    function ">"  (Left, Right : Time_Span) return Boolean with
+      Global => null;
+    function ">=" (Left, Right : Time_Span) return Boolean with
+      Global => null;
+ 
+    function To_Duration  (TS : Time_Span) return Duration with
+      Global => null;
+    function To_Time_Span (D : Duration)   return Time_Span with
+      Global => null;
+ 
+    function Nanoseconds  (NS : Integer) return Time_Span with
+      Global => null;
+    function Microseconds (US : Integer) return Time_Span with
+      Global => null;
+    function Milliseconds (MS : Integer) return Time_Span with
+      Global => null;
+ 
+    function Seconds (S : Integer) return Time_Span with
+      Global => null;
+    pragma Ada_05 (Seconds);
+ 
+    function Minutes (M : Integer) return Time_Span with
+      Global => null;
+    pragma Ada_05 (Minutes);
+ 
+    type Seconds_Count is new Long_Long_Integer;
+    --  Seconds_Count needs 64 bits, since the type Time has the full range of
+    --  Duration. The delta of Duration is 10 ** (-9), so the maximum number of
+    --  seconds is 2**63/10**9 = 8*10**9 which does not quite fit in 32 bits.
+    --  However, rather than make this explicitly 64-bits we derive from
+    --  Long_Long_Integer. In normal usage this will have the same effect. But
+    --  in the case of CodePeer with a target configuration file with a maximum
+    --  integer size of 32, it allows analysis of this unit.
+ 
+    procedure Split (T : Time; SC : out Seconds_Count; TS : out Time_Span)
+    with
+      Global => null;
+    function Time_Of (SC : Seconds_Count; TS : Time_Span) return Time
+    with
+      Global => null;
+ 
+ private
+    pragma SPARK_Mode (Off);
+ 
+    --  Time and Time_Span are represented in 64-bit Duration value in
+    --  nanoseconds. For example, 1 second and 1 nanosecond is represented
+    --  as the stored integer 1_000_000_001. This is for the 64-bit Duration
+    --  case, not clear if this also is used for 32-bit Duration values.
+ 
+    type Time is new Duration;
+ 
+    Time_First : constant Time := Time'First;
+ 
+    Time_Last  : constant Time := Time'Last;
+ 
+    type Time_Span is new Duration;
+ 
+    Time_Span_First : constant Time_Span := Time_Span'First;
+ 
+    Time_Span_Last  : constant Time_Span := Time_Span'Last;
+ 
+    Time_Span_Zero  : constant Time_Span := 0.0;
+ 
+    Time_Span_Unit  : constant Time_Span := 10#1.0#E-9;
+ 
+    Tick : constant Time_Span :=
+             Time_Span (System.Task_Primitives.Operations.RT_Resolution);
+ 
+    pragma Import (Intrinsic, "<");
+    pragma Import (Intrinsic, "<=");
+    pragma Import (Intrinsic, ">");
+    pragma Import (Intrinsic, ">=");
+    pragma Import (Intrinsic, "abs");
+ 
+    pragma Inline (Microseconds);
+    pragma Inline (Milliseconds);
+    pragma Inline (Nanoseconds);
+    pragma Inline (Seconds);
+    pragma Inline (Minutes);
+ 
+ end Ada.Real_Time;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/a-retide.adb gcc-8.1.0/gcc/ada/libgnarl/a-retide.adb
*** gcc-7.3.0/gcc/ada/libgnarl/a-retide.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/a-retide.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,78 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                  GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                --
+ --                                                                          --
+ --                   A D A . R E A L _ T I M E . D E L A Y S                --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --         Copyright (C) 1992-2018, Free Software Foundation, Inc.          --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with Ada.Exceptions;
+ 
+ with System.Tasking;
+ with System.Task_Primitives.Operations;
+ 
+ package body Ada.Real_Time.Delays is
+ 
+    package STPO renames System.Task_Primitives.Operations;
+ 
+    ----------------
+    -- Local Data --
+    ----------------
+ 
+    Absolute_RT : constant := 2;
+ 
+    -----------------
+    -- Delay_Until --
+    -----------------
+ 
+    procedure Delay_Until (T : Time) is
+       Self_Id : constant System.Tasking.Task_Id := STPO.Self;
+ 
+    begin
+       --  If pragma Detect_Blocking is active, Program_Error must be
+       --  raised if this potentially blocking operation is called from a
+       --  protected action.
+ 
+       if System.Tasking.Detect_Blocking
+         and then Self_Id.Common.Protected_Action_Nesting > 0
+       then
+          Ada.Exceptions.Raise_Exception
+            (Program_Error'Identity, "potentially blocking operation");
+       else
+          STPO.Timed_Delay (Self_Id, To_Duration (T), Absolute_RT);
+       end if;
+    end Delay_Until;
+ 
+    -----------------
+    -- To_Duration --
+    -----------------
+ 
+    function To_Duration (T : Time) return Duration is
+    begin
+       return To_Duration (Time_Span (T));
+    end To_Duration;
+ 
+ end Ada.Real_Time.Delays;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/a-retide.ads gcc-8.1.0/gcc/ada/libgnarl/a-retide.ads
*** gcc-7.3.0/gcc/ada/libgnarl/a-retide.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/a-retide.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,48 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                  GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                --
+ --                                                                          --
+ --                   A D A . R E A L _ T I M E . D E L A Y S                --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Implements Real_Time.Time absolute delays
+ 
+ --  Note: the compiler generates direct calls to this interface, in the
+ --  processing of time types.
+ 
+ package Ada.Real_Time.Delays is
+ 
+    function To_Duration (T : Real_Time.Time) return Duration;
+    --  Convert Time to Duration
+ 
+    procedure Delay_Until (T : Time);
+    --  Delay until Clock has reached (at least) time T,
+    --  or the task is aborted to at least the current ATC nesting level.
+    --  The body of this procedure must perform all the processing
+    --  required for an abort point.
+ 
+ end Ada.Real_Time.Delays;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/a-rttiev.adb gcc-8.1.0/gcc/ada/libgnarl/a-rttiev.adb
*** gcc-7.3.0/gcc/ada/libgnarl/a-rttiev.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/a-rttiev.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,367 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --          A D A . R E A L _ T I M E . T I M I N G _ E V E N T S           --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --           Copyright (C) 2005-2018, Free Software Foundation, Inc.        --
+ --                                                                          --
+ -- GNAT is 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 System.Task_Primitives.Operations;
+ with System.Tasking.Utilities;
+ with System.Soft_Links;
+ with System.Interrupt_Management.Operations;
+ 
+ with Ada.Containers.Doubly_Linked_Lists;
+ pragma Elaborate_All (Ada.Containers.Doubly_Linked_Lists);
+ 
+ ---------------------------------
+ -- Ada.Real_Time.Timing_Events --
+ ---------------------------------
+ 
+ package body Ada.Real_Time.Timing_Events is
+ 
+    use System.Task_Primitives.Operations;
+ 
+    package SSL renames System.Soft_Links;
+ 
+    type Any_Timing_Event is access all Timing_Event'Class;
+    --  We must also handle user-defined types derived from Timing_Event
+ 
+    ------------
+    -- Events --
+    ------------
+ 
+    package Events is new Ada.Containers.Doubly_Linked_Lists (Any_Timing_Event);
+    --  Provides the type for the container holding pointers to events
+ 
+    All_Events : Events.List;
+    --  The queue of pending events, ordered by increasing timeout value, that
+    --  have been "set" by the user via Set_Handler.
+ 
+    Event_Queue_Lock : aliased System.Task_Primitives.RTS_Lock;
+    --  Used for mutually exclusive access to All_Events
+ 
+    --  We need to Initialize_Lock before Timer is activated. The purpose of the
+    --  Dummy package is to get around Ada's syntax rules.
+ 
+    package Dummy is end Dummy;
+    package body Dummy is
+    begin
+       Initialize_Lock (Event_Queue_Lock'Access, Level => PO_Level);
+    end Dummy;
+ 
+    procedure Process_Queued_Events;
+    --  Examine the queue of pending events for any that have timed out. For
+    --  those that have timed out, remove them from the queue and invoke their
+    --  handler (unless the user has cancelled the event by setting the handler
+    --  pointer to null). Mutually exclusive access is held via Event_Queue_Lock
+    --  during part of the processing.
+ 
+    procedure Insert_Into_Queue (This : Any_Timing_Event);
+    --  Insert the specified event pointer into the queue of pending events
+    --  with mutually exclusive access via Event_Queue_Lock.
+ 
+    procedure Remove_From_Queue (This : Any_Timing_Event);
+    --  Remove the specified event pointer from the queue of pending events with
+    --  mutually exclusive access via Event_Queue_Lock. This procedure is used
+    --  by the client-side routines (Set_Handler, etc.).
+ 
+    -----------
+    -- Timer --
+    -----------
+ 
+    task Timer is
+       pragma Priority (System.Priority'Last);
+    end Timer;
+ 
+    task body Timer is
+       Period : constant Time_Span := Milliseconds (100);
+       --  This is a "chiming" clock timer that fires periodically. The period
+       --  selected is arbitrary and could be changed to suit the application
+       --  requirements. Obviously a shorter period would give better resolution
+       --  at the cost of more overhead.
+ 
+       Ignore : constant Boolean := System.Tasking.Utilities.Make_Independent;
+       pragma Unreferenced (Ignore);
+ 
+    begin
+       --  Since this package may be elaborated before System.Interrupt,
+       --  we need to call Setup_Interrupt_Mask explicitly to ensure that
+       --  this task has the proper signal mask.
+ 
+       System.Interrupt_Management.Operations.Setup_Interrupt_Mask;
+ 
+       loop
+          Process_Queued_Events;
+          delay until Clock + Period;
+       end loop;
+    end Timer;
+ 
+    ---------------------------
+    -- Process_Queued_Events --
+    ---------------------------
+ 
+    procedure Process_Queued_Events is
+       Next_Event : Any_Timing_Event;
+ 
+    begin
+       loop
+          SSL.Abort_Defer.all;
+ 
+          Write_Lock (Event_Queue_Lock'Access);
+ 
+          if All_Events.Is_Empty then
+             Unlock (Event_Queue_Lock'Access);
+             SSL.Abort_Undefer.all;
+             return;
+          else
+             Next_Event := All_Events.First_Element;
+          end if;
+ 
+          if Next_Event.Timeout > Clock then
+ 
+             --  We found one that has not yet timed out. The queue is in
+             --  ascending order by Timeout so there is no need to continue
+             --  processing (and indeed we must not continue since we always
+             --  delete the first element).
+ 
+             Unlock (Event_Queue_Lock'Access);
+             SSL.Abort_Undefer.all;
+             return;
+          end if;
+ 
+          --  We have an event that has timed out so we will process it. It must
+          --  be the first in the queue so no search is needed.
+ 
+          All_Events.Delete_First;
+ 
+          --  A fundamental issue is that the invocation of the event's handler
+          --  might call Set_Handler on itself to re-insert itself back into the
+          --  queue of future events. Thus we cannot hold the lock on the queue
+          --  while invoking the event's handler.
+ 
+          Unlock (Event_Queue_Lock'Access);
+ 
+          SSL.Abort_Undefer.all;
+ 
+          --  There is no race condition with the user changing the handler
+          --  pointer while we are processing because we are executing at the
+          --  highest possible application task priority and are not doing
+          --  anything to block prior to invoking their handler.
+ 
+          declare
+             Handler : constant Timing_Event_Handler := Next_Event.Handler;
+ 
+          begin
+             --  The first act is to clear the event, per D.15(13/2). Besides,
+             --  we cannot clear the handler pointer *after* invoking the
+             --  handler because the handler may have re-inserted the event via
+             --  Set_Event. Thus we take a copy and then clear the component.
+ 
+             Next_Event.Handler := null;
+ 
+             if Handler /= null then
+                Handler.all (Timing_Event (Next_Event.all));
+             end if;
+ 
+          --  Ignore exceptions propagated by Handler.all, as required by
+          --  RM D.15(21/2).
+ 
+          exception
+             when others =>
+                null;
+          end;
+       end loop;
+    end Process_Queued_Events;
+ 
+    -----------------------
+    -- Insert_Into_Queue --
+    -----------------------
+ 
+    procedure Insert_Into_Queue (This : Any_Timing_Event) is
+ 
+       function Sooner (Left, Right : Any_Timing_Event) return Boolean;
+       --  Compares events in terms of timeout values
+ 
+       package By_Timeout is new Events.Generic_Sorting (Sooner);
+       --  Used to keep the events in ascending order by timeout value
+ 
+       ------------
+       -- Sooner --
+       ------------
+ 
+       function Sooner (Left, Right : Any_Timing_Event) return Boolean is
+       begin
+          return Left.Timeout < Right.Timeout;
+       end Sooner;
+ 
+    --  Start of processing for Insert_Into_Queue
+ 
+    begin
+       SSL.Abort_Defer.all;
+ 
+       Write_Lock (Event_Queue_Lock'Access);
+ 
+       All_Events.Append (This);
+ 
+       --  A critical property of the implementation of this package is that
+       --  all occurrences are in ascending order by Timeout. Thus the first
+       --  event in the queue always has the "next" value for the Timer task
+       --  to use in its delay statement.
+ 
+       By_Timeout.Sort (All_Events);
+ 
+       Unlock (Event_Queue_Lock'Access);
+ 
+       SSL.Abort_Undefer.all;
+    end Insert_Into_Queue;
+ 
+    -----------------------
+    -- Remove_From_Queue --
+    -----------------------
+ 
+    procedure Remove_From_Queue (This : Any_Timing_Event) is
+       use Events;
+       Location : Cursor;
+ 
+    begin
+       SSL.Abort_Defer.all;
+ 
+       Write_Lock (Event_Queue_Lock'Access);
+ 
+       Location := All_Events.Find (This);
+ 
+       if Location /= No_Element then
+          All_Events.Delete (Location);
+       end if;
+ 
+       Unlock (Event_Queue_Lock'Access);
+ 
+       SSL.Abort_Undefer.all;
+    end Remove_From_Queue;
+ 
+    -----------------
+    -- Set_Handler --
+    -----------------
+ 
+    procedure Set_Handler
+      (Event   : in out Timing_Event;
+       At_Time : Time;
+       Handler : Timing_Event_Handler)
+    is
+    begin
+       Remove_From_Queue (Event'Unchecked_Access);
+       Event.Handler := null;
+ 
+       --  RM D.15(15/2) required that at this point, we check whether the time
+       --  has already passed, and if so, call Handler.all directly from here
+       --  instead of doing the enqueuing below. However, this caused a nasty
+       --  race condition and potential deadlock. If the current task has
+       --  already locked the protected object of Handler.all, and the time has
+       --  passed, deadlock would occur. It has been fixed by AI05-0094-1, which
+       --  says that the handler should be executed as soon as possible, meaning
+       --  that the timing event will be executed after the protected action
+       --  finishes (Handler.all should not be called directly from here).
+       --  The same comment applies to the other Set_Handler below.
+ 
+       if Handler /= null then
+          Event.Timeout := At_Time;
+          Event.Handler := Handler;
+          Insert_Into_Queue (Event'Unchecked_Access);
+       end if;
+    end Set_Handler;
+ 
+    -----------------
+    -- Set_Handler --
+    -----------------
+ 
+    procedure Set_Handler
+      (Event   : in out Timing_Event;
+       In_Time : Time_Span;
+       Handler : Timing_Event_Handler)
+    is
+    begin
+       Remove_From_Queue (Event'Unchecked_Access);
+       Event.Handler := null;
+ 
+       --  See comment in the other Set_Handler above
+ 
+       if Handler /= null then
+          Event.Timeout := Clock + In_Time;
+          Event.Handler := Handler;
+          Insert_Into_Queue (Event'Unchecked_Access);
+       end if;
+    end Set_Handler;
+ 
+    ---------------------
+    -- Current_Handler --
+    ---------------------
+ 
+    function Current_Handler
+      (Event : Timing_Event) return Timing_Event_Handler
+    is
+    begin
+       return Event.Handler;
+    end Current_Handler;
+ 
+    --------------------
+    -- Cancel_Handler --
+    --------------------
+ 
+    procedure Cancel_Handler
+      (Event     : in out Timing_Event;
+       Cancelled : out Boolean)
+    is
+    begin
+       Remove_From_Queue (Event'Unchecked_Access);
+       Cancelled := Event.Handler /= null;
+       Event.Handler := null;
+    end Cancel_Handler;
+ 
+    -------------------
+    -- Time_Of_Event --
+    -------------------
+ 
+    function Time_Of_Event (Event : Timing_Event) return Time is
+    begin
+       --  RM D.15(18/2): Time_First must be returned in the event is not set
+ 
+       return (if Event.Handler = null then Time_First else Event.Timeout);
+    end Time_Of_Event;
+ 
+    --------------
+    -- Finalize --
+    --------------
+ 
+    procedure Finalize (This : in out Timing_Event) is
+    begin
+       --  D.15 (19/2) says finalization clears the event
+ 
+       This.Handler := null;
+       Remove_From_Queue (This'Unchecked_Access);
+    end Finalize;
+ 
+ end Ada.Real_Time.Timing_Events;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/a-rttiev.ads gcc-8.1.0/gcc/ada/libgnarl/a-rttiev.ads
*** gcc-7.3.0/gcc/ada/libgnarl/a-rttiev.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/a-rttiev.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,81 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --          A D A . R E A L _ T I M E . T I M I N G _ E V E N T S           --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --           Copyright (C) 2005-2018, Free Software Foundation, 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.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with Ada.Finalization;
+ 
+ package Ada.Real_Time.Timing_Events is
+ 
+    type Timing_Event is tagged limited private;
+ 
+    type Timing_Event_Handler
+      is access protected procedure (Event : in out Timing_Event);
+ 
+    procedure Set_Handler
+      (Event   : in out Timing_Event;
+       At_Time : Time;
+       Handler : Timing_Event_Handler);
+ 
+    procedure Set_Handler
+      (Event   : in out Timing_Event;
+       In_Time : Time_Span;
+       Handler : Timing_Event_Handler);
+ 
+    function Current_Handler
+      (Event : Timing_Event) return Timing_Event_Handler;
+ 
+    procedure Cancel_Handler
+      (Event     : in out Timing_Event;
+       Cancelled : out Boolean);
+ 
+    function Time_Of_Event (Event : Timing_Event) return Time;
+ 
+ private
+ 
+    type Timing_Event is new Ada.Finalization.Limited_Controlled with record
+       Timeout : Time := Time_First;
+       --  The time at which the user's handler should be invoked when the
+       --  event is "set" (i.e., when Handler is not null).
+ 
+       Handler : Timing_Event_Handler;
+       --  An access value designating the protected procedure to be invoked
+       --  at the Timeout time in the future.  When this value is null the event
+       --  is said to be "cleared" and no timeout is processed.
+    end record;
+ 
+    overriding procedure Finalize (This : in out Timing_Event);
+    --  Finalization procedure is required to satisfy (RM D.15 (19/2)), which
+    --  says that the object must be cleared on finalization.
+ 
+ end Ada.Real_Time.Timing_Events;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/a-stcoed.ads gcc-8.1.0/gcc/ada/libgnarl/a-stcoed.ads
*** gcc-7.3.0/gcc/ada/libgnarl/a-stcoed.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/a-stcoed.ads	Fri Sep  8 13:14:59 2017
***************
*** 0 ****
--- 1,31 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --      A D A . S Y N C H R O N O U S _ T A S K _ C O N T R O L . E D F     --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ -- This specification is derived from the Ada Reference Manual for use with --
+ -- GNAT.  In accordance with the copyright of that document, you can freely --
+ -- copy and modify this specification,  provided that if you redistribute a --
+ -- modified version,  any changes that you have made are clearly indicated. --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This unit is not implemented in typical GNAT implementations that lie on
+ --  top of operating systems, because it is infeasible to implement in such
+ --  environments.
+ 
+ --  If a target environment provides appropriate support for this package,
+ --  then the Unimplemented_Unit pragma should be removed from this spec and
+ --  an appropriate body provided.
+ 
+ package Ada.Synchronous_Task_Control.EDF is
+ 
+    pragma Unimplemented_Unit;
+ 
+    procedure Suspend_Until_True_And_Set_Deadline
+       (S  : in out Suspension_Object;
+        TS : Ada.Real_Time.Time_Span);
+ end Ada.Synchronous_Task_Control.EDF;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/a-synbar.adb gcc-8.1.0/gcc/ada/libgnarl/a-synbar.adb
*** gcc-7.3.0/gcc/ada/libgnarl/a-synbar.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/a-synbar.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,78 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --             A D A . S Y N C H R O N O U S _ B A R R I E R S              --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --          Copyright (C) 1992-2018, Free Software Foundation, 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 body Ada.Synchronous_Barriers is
+ 
+    protected body Synchronous_Barrier is
+ 
+       --  The condition "Wait'Count = Release_Threshold" opens the barrier when
+       --  the required number of tasks is reached. The condition "Keep_Open"
+       --  leaves the barrier open while there are queued tasks. While there are
+       --  tasks in the queue no new task will be queued (no new protected
+       --  action can be started on a protected object while another protected
+       --  action on the same protected object is underway, RM 9.5.1 (4)),
+       --  guaranteeing that the barrier will remain open only for those tasks
+       --  already inside the queue when the barrier was open.
+ 
+       entry Wait (Notified : out Boolean)
+         when Keep_Open or else Wait'Count = Release_Threshold
+       is
+       begin
+          --  If we are executing the entry it means that the required number of
+          --  tasks have been queued in the entry. Keep_Open barrier will remain
+          --  true until all queued tasks are out.
+ 
+          Keep_Open := Wait'Count > 0;
+ 
+          --  The last released task will close the barrier and get the Notified
+          --  token.
+ 
+          Notified := Wait'Count = 0;
+       end Wait;
+    end Synchronous_Barrier;
+ 
+    ----------------------
+    -- Wait_For_Release --
+    ----------------------
+ 
+    procedure Wait_For_Release
+      (The_Barrier : in out Synchronous_Barrier;
+       Notified    : out Boolean)
+    is
+    begin
+       The_Barrier.Wait (Notified);
+    end Wait_For_Release;
+ 
+ end Ada.Synchronous_Barriers;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/a-synbar.ads gcc-8.1.0/gcc/ada/libgnarl/a-synbar.ads
*** gcc-7.3.0/gcc/ada/libgnarl/a-synbar.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/a-synbar.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,54 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --             A D A . S Y N C H R O N O U S _ B A R R I E R S              --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --          Copyright (C) 1992-2018, Free Software Foundation, 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 Ada.Synchronous_Barriers is
+    pragma Preelaborate (Synchronous_Barriers);
+ 
+    subtype Barrier_Limit is Positive range 1 .. Positive'Last;
+ 
+    type Synchronous_Barrier (Release_Threshold : Barrier_Limit) is
+       limited private;
+ 
+    procedure Wait_For_Release
+      (The_Barrier : in out Synchronous_Barrier;
+       Notified    : out Boolean);
+ 
+ private
+    protected type Synchronous_Barrier (Release_Threshold : Barrier_Limit) is
+       entry Wait (Notified : out Boolean);
+    private
+       Keep_Open : Boolean := False;
+    end Synchronous_Barrier;
+ end Ada.Synchronous_Barriers;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/a-synbar__posix.adb gcc-8.1.0/gcc/ada/libgnarl/a-synbar__posix.adb
*** gcc-7.3.0/gcc/ada/libgnarl/a-synbar__posix.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/a-synbar__posix.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,111 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --             A D A . S Y N C H R O N O U S _ B A R R I E R S              --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --          Copyright (C) 1992-2018, Free Software Foundation, 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 body of this package using POSIX barriers
+ 
+ with Interfaces.C; use Interfaces.C;
+ 
+ package body Ada.Synchronous_Barriers is
+ 
+    --------------------
+    -- POSIX barriers --
+    --------------------
+ 
+    function pthread_barrier_init
+      (barrier : not null access pthread_barrier_t;
+       attr    : System.Address := System.Null_Address;
+       count   : unsigned) return int;
+    pragma Import (C, pthread_barrier_init, "pthread_barrier_init");
+    --  Initialize barrier with the attributes in attr. The barrier is opened
+    --  when count waiters arrived. If attr is null the default barrier
+    --  attributes are used.
+ 
+    function pthread_barrier_destroy
+      (barrier : not null access pthread_barrier_t) return int;
+    pragma Import (C, pthread_barrier_destroy, "pthread_barrier_destroy");
+    --  Destroy a previously dynamically initialized barrier
+ 
+    function pthread_barrier_wait
+      (barrier : not null access pthread_barrier_t) return int;
+    pragma Import (C, pthread_barrier_wait, "pthread_barrier_wait");
+    --  Wait on barrier
+ 
+    --------------
+    -- Finalize --
+    --------------
+ 
+    overriding procedure Finalize (Barrier : in out Synchronous_Barrier) is
+       Result : int;
+    begin
+       Result := pthread_barrier_destroy (Barrier.POSIX_Barrier'Access);
+       pragma Assert (Result = 0);
+    end Finalize;
+ 
+    overriding procedure Initialize (Barrier : in out Synchronous_Barrier) is
+       Result : int;
+    begin
+       Result :=
+         pthread_barrier_init
+           (barrier => Barrier.POSIX_Barrier'Access,
+            attr    => System.Null_Address,
+            count   => unsigned (Barrier.Release_Threshold));
+       pragma Assert (Result = 0);
+    end Initialize;
+ 
+    ----------------------
+    -- Wait_For_Release --
+    ----------------------
+ 
+    procedure Wait_For_Release
+      (The_Barrier : in out Synchronous_Barrier;
+       Notified    : out Boolean)
+    is
+       Result : int;
+ 
+       PTHREAD_BARRIER_SERIAL_THREAD : constant := -1;
+       --  Value used to indicate the task which receives the notification for
+       --  the barrier open.
+ 
+    begin
+       Result :=
+         pthread_barrier_wait
+           (barrier => The_Barrier.POSIX_Barrier'Access);
+       pragma Assert
+         (Result = 0 or else Result = PTHREAD_BARRIER_SERIAL_THREAD);
+ 
+       Notified := (Result = PTHREAD_BARRIER_SERIAL_THREAD);
+    end Wait_For_Release;
+ 
+ end Ada.Synchronous_Barriers;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/a-synbar__posix.ads gcc-8.1.0/gcc/ada/libgnarl/a-synbar__posix.ads
*** gcc-7.3.0/gcc/ada/libgnarl/a-synbar__posix.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/a-synbar__posix.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,84 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --             A D A . S Y N C H R O N O U S _ B A R R I E R S              --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --          Copyright (C) 1992-2018, Free Software Foundation, 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 spec of this package using POSIX barriers
+ 
+ with System;
+ private with Ada.Finalization;
+ private with Interfaces.C;
+ 
+ package Ada.Synchronous_Barriers is
+    pragma Preelaborate (Synchronous_Barriers);
+ 
+    subtype Barrier_Limit is Positive range 1 .. Positive'Last;
+ 
+    type Synchronous_Barrier (Release_Threshold : Barrier_Limit) is
+       limited private;
+ 
+    procedure Wait_For_Release
+      (The_Barrier : in out Synchronous_Barrier;
+       Notified    : out Boolean);
+ 
+ private
+    --  POSIX barrier data type
+ 
+    SIZEOF_PTHREAD_BARRIER_T : constant :=
+      (if System.Word_Size = 64 then 32 else 20);
+    --  Value defined according to the linux definition in pthreadtypes.h. On
+    --  other system, e.g. MIPS IRIX, the object is smaller, so it works
+    --  correctly although we are wasting some space.
+ 
+    type pthread_barrier_t_view is (size_based, align_based);
+ 
+    type pthread_barrier_t (Kind : pthread_barrier_t_view := size_based) is
+       record
+          case Kind is
+             when size_based =>
+                size : Interfaces.C.char_array (1 .. SIZEOF_PTHREAD_BARRIER_T);
+             when align_based =>
+                align : Interfaces.C.long;
+          end case;
+       end record;
+    pragma Unchecked_Union (pthread_barrier_t);
+ 
+    type Synchronous_Barrier (Release_Threshold : Barrier_Limit) is
+      new Ada.Finalization.Limited_Controlled with
+         record
+            POSIX_Barrier : aliased pthread_barrier_t;
+         end record;
+ 
+    overriding procedure Initialize (Barrier : in out Synchronous_Barrier);
+    overriding procedure Finalize   (Barrier : in out Synchronous_Barrier);
+ end Ada.Synchronous_Barriers;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/a-sytaco.adb gcc-8.1.0/gcc/ada/libgnarl/a-sytaco.adb
*** gcc-7.3.0/gcc/ada/libgnarl/a-sytaco.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/a-sytaco.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,106 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --         A D A . S Y N C H R O N O U S _ T A S K _ C O N T R O L          --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is 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.Exceptions;
+ 
+ with System.Tasking;
+ with System.Task_Primitives.Operations;
+ 
+ package body Ada.Synchronous_Task_Control with
+   SPARK_Mode => Off
+ is
+ 
+    ----------------
+    -- Initialize --
+    ----------------
+ 
+    procedure Initialize (S : in out Suspension_Object) is
+    begin
+       System.Task_Primitives.Operations.Initialize (S.SO);
+    end Initialize;
+ 
+    --------------
+    -- Finalize --
+    --------------
+ 
+    procedure Finalize (S : in out Suspension_Object) is
+    begin
+       System.Task_Primitives.Operations.Finalize (S.SO);
+    end Finalize;
+ 
+    -------------------
+    -- Current_State --
+    -------------------
+ 
+    function Current_State (S : Suspension_Object) return Boolean is
+    begin
+       return System.Task_Primitives.Operations.Current_State (S.SO);
+    end Current_State;
+ 
+    ---------------
+    -- Set_False --
+    ---------------
+ 
+    procedure Set_False (S : in out Suspension_Object) is
+    begin
+       System.Task_Primitives.Operations.Set_False (S.SO);
+    end Set_False;
+ 
+    --------------
+    -- Set_True --
+    --------------
+ 
+    procedure Set_True (S : in out Suspension_Object) is
+    begin
+       System.Task_Primitives.Operations.Set_True (S.SO);
+    end Set_True;
+ 
+    ------------------------
+    -- Suspend_Until_True --
+    ------------------------
+ 
+    procedure Suspend_Until_True (S : in out Suspension_Object) is
+    begin
+       --  This is a potentially blocking (see ARM D.10, par. 10), so that
+       --  if pragma Detect_Blocking is active then Program_Error must be
+       --  raised if this operation is called from a protected action.
+ 
+       if System.Tasking.Detect_Blocking
+         and then System.Tasking.Self.Common.Protected_Action_Nesting > 0
+       then
+          Ada.Exceptions.Raise_Exception
+            (Program_Error'Identity, "potentially blocking operation");
+       end if;
+ 
+       System.Task_Primitives.Operations.Suspend_Until_True (S.SO);
+    end Suspend_Until_True;
+ 
+ end Ada.Synchronous_Task_Control;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/a-sytaco.ads gcc-8.1.0/gcc/ada/libgnarl/a-sytaco.ads
*** gcc-7.3.0/gcc/ada/libgnarl/a-sytaco.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/a-sytaco.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,94 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --         A D A . S Y N C H R O N O U S _ T A S K _ C O N T R O L          --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2018, Free Software Foundation, 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.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Task_Primitives;
+ 
+ with Ada.Finalization;
+ with Ada.Task_Identification;
+ 
+ package Ada.Synchronous_Task_Control with
+   SPARK_Mode
+ is
+    pragma Preelaborate;
+    --  In accordance with Ada 2005 AI-362
+ 
+    type Suspension_Object is limited private with
+      Default_Initial_Condition;
+ 
+    procedure Set_True (S : in out Suspension_Object) with
+      Global  => null,
+      Depends => (S    => null,
+                  null => S);
+ 
+    procedure Set_False (S : in out Suspension_Object) with
+      Global  => null,
+      Depends => (S    => null,
+                  null => S);
+ 
+    function Current_State (S : Suspension_Object) return Boolean with
+      Volatile_Function,
+      Global => Ada.Task_Identification.Tasking_State;
+ 
+    procedure Suspend_Until_True (S : in out Suspension_Object) with
+      Global  => null,
+      Depends => (S    => null,
+                  null => S);
+ 
+ private
+    pragma SPARK_Mode (Off);
+ 
+    procedure Initialize (S : in out Suspension_Object);
+    --  Initialization for Suspension_Object
+ 
+    procedure Finalize (S : in out Suspension_Object);
+    --  Finalization for Suspension_Object
+ 
+    type Suspension_Object is
+      new Ada.Finalization.Limited_Controlled with
+    record
+       SO : System.Task_Primitives.Suspension_Object;
+       --  Use low-level suspension objects so that the synchronization
+       --  functionality provided by this object can be achieved using
+       --  efficient operating system primitives.
+    end record;
+ 
+    pragma Inline (Set_True);
+    pragma Inline (Set_False);
+    pragma Inline (Current_State);
+    pragma Inline (Suspend_Until_True);
+    pragma Inline (Initialize);
+    pragma Inline (Finalize);
+ 
+ end Ada.Synchronous_Task_Control;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/a-tasatt.adb gcc-8.1.0/gcc/ada/libgnarl/a-tasatt.adb
*** gcc-7.3.0/gcc/ada/libgnarl/a-tasatt.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/a-tasatt.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,380 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                        GNAT RUN-TIME COMPONENTS                          --
+ --                                                                          --
+ --                  A D A . T A S K _ A T T R I B U T E S                   --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --            Copyright (C) 2014-2018, Free Software Foundation, Inc.       --
+ --                                                                          --
+ -- GNAT is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Tasking;
+ with System.Tasking.Initialization;
+ with System.Tasking.Task_Attributes;
+ pragma Elaborate_All (System.Tasking.Task_Attributes);
+ 
+ with System.Task_Primitives.Operations;
+ 
+ with Ada.Finalization; use Ada.Finalization;
+ with Ada.Unchecked_Conversion;
+ with Ada.Unchecked_Deallocation;
+ 
+ package body Ada.Task_Attributes is
+ 
+    use System,
+        System.Tasking.Initialization,
+        System.Tasking,
+        System.Tasking.Task_Attributes;
+ 
+    package STPO renames System.Task_Primitives.Operations;
+ 
+    type Attribute_Cleanup is new Limited_Controlled with null record;
+    procedure Finalize (Cleanup : in out Attribute_Cleanup);
+    --  Finalize all tasks' attributes for this package
+ 
+    Cleanup : Attribute_Cleanup;
+    pragma Unreferenced (Cleanup);
+    --  Will call Finalize when this instantiation gets out of scope
+ 
+    ---------------------------
+    -- Unchecked Conversions --
+    ---------------------------
+ 
+    type Real_Attribute is record
+       Free  : Deallocator;
+       Value : Attribute;
+    end record;
+    type Real_Attribute_Access is access all Real_Attribute;
+    pragma No_Strict_Aliasing (Real_Attribute_Access);
+    --  Each value in the task control block's Attributes array is either
+    --  mapped to the attribute value directly if Fast_Path is True, or
+    --  is in effect a Real_Attribute_Access.
+    --
+    --  Note: the Deallocator field must be first, for compatibility with
+    --  System.Tasking.Task_Attributes.Attribute_Record and to allow unchecked
+    --  conversions between Attribute_Access and Real_Attribute_Access.
+ 
+    function New_Attribute (Val : Attribute) return Atomic_Address;
+    --  Create a new Real_Attribute using Val, and return its address. The
+    --  returned value can be converted via To_Real_Attribute.
+ 
+    procedure Deallocate (Ptr : Atomic_Address);
+    --  Free memory associated with Ptr, a Real_Attribute_Access in reality
+ 
+    function To_Real_Attribute is new
+      Ada.Unchecked_Conversion (Atomic_Address, Real_Attribute_Access);
+ 
+    pragma Warnings (Off);
+    --  Kill warning about possible size mismatch
+ 
+    function To_Address is new
+      Ada.Unchecked_Conversion (Attribute, Atomic_Address);
+    function To_Attribute is new
+      Ada.Unchecked_Conversion (Atomic_Address, Attribute);
+ 
+    type Unsigned is mod 2 ** Integer'Size;
+    function To_Address is new
+      Ada.Unchecked_Conversion (Attribute, System.Address);
+    function To_Unsigned is new
+      Ada.Unchecked_Conversion (Attribute, Unsigned);
+ 
+    pragma Warnings (On);
+ 
+    function To_Address is new
+      Ada.Unchecked_Conversion (Real_Attribute_Access, Atomic_Address);
+ 
+    pragma Warnings (Off);
+    --  Kill warning about possible aliasing
+ 
+    function To_Handle is new
+      Ada.Unchecked_Conversion (System.Address, Attribute_Handle);
+ 
+    pragma Warnings (On);
+ 
+    function To_Task_Id is new
+      Ada.Unchecked_Conversion (Task_Identification.Task_Id, Task_Id);
+    --  To access TCB of identified task
+ 
+    procedure Free is new
+      Ada.Unchecked_Deallocation (Real_Attribute, Real_Attribute_Access);
+ 
+    Fast_Path : constant Boolean :=
+                  (Attribute'Size = Integer'Size
+                    and then Attribute'Alignment <= Atomic_Address'Alignment
+                    and then To_Unsigned (Initial_Value) = 0)
+                  or else (Attribute'Size = System.Address'Size
+                    and then Attribute'Alignment <= Atomic_Address'Alignment
+                    and then To_Address (Initial_Value) = System.Null_Address);
+    --  If the attribute fits in an Atomic_Address (both size and alignment)
+    --  and Initial_Value is 0 (or null), then we will map the attribute
+    --  directly into ATCB.Attributes (Index), otherwise we will create
+    --  a level of indirection and instead use Attributes (Index) as a
+    --  Real_Attribute_Access.
+ 
+    Index : constant Integer :=
+              Next_Index (Require_Finalization => not Fast_Path);
+    --  Index in the task control block's Attributes array
+ 
+    --------------
+    -- Finalize --
+    --------------
+ 
+    procedure Finalize (Cleanup : in out Attribute_Cleanup) is
+       pragma Unreferenced (Cleanup);
+ 
+    begin
+       STPO.Lock_RTS;
+ 
+       declare
+          C : System.Tasking.Task_Id := System.Tasking.All_Tasks_List;
+ 
+       begin
+          while C /= null loop
+             STPO.Write_Lock (C);
+ 
+             if C.Attributes (Index) /= 0
+               and then Require_Finalization (Index)
+             then
+                Deallocate (C.Attributes (Index));
+                C.Attributes (Index) := 0;
+             end if;
+ 
+             STPO.Unlock (C);
+             C := C.Common.All_Tasks_Link;
+          end loop;
+       end;
+ 
+       Finalize (Index);
+       STPO.Unlock_RTS;
+    end Finalize;
+ 
+    ----------------
+    -- Deallocate --
+    ----------------
+ 
+    procedure Deallocate (Ptr : Atomic_Address) is
+       Obj : Real_Attribute_Access := To_Real_Attribute (Ptr);
+    begin
+       Free (Obj);
+    end Deallocate;
+ 
+    -------------------
+    -- New_Attribute --
+    -------------------
+ 
+    function New_Attribute (Val : Attribute) return Atomic_Address is
+       Tmp : Real_Attribute_Access;
+    begin
+       Tmp := new Real_Attribute'(Free  => Deallocate'Unrestricted_Access,
+                                  Value => Val);
+       return To_Address (Tmp);
+    end New_Attribute;
+ 
+    ---------------
+    -- Reference --
+    ---------------
+ 
+    function Reference
+      (T : Task_Identification.Task_Id := Task_Identification.Current_Task)
+       return Attribute_Handle
+    is
+       Self_Id       : Task_Id;
+       TT            : constant Task_Id := To_Task_Id (T);
+       Error_Message : constant String  := "trying to get the reference of a ";
+       Result        : Attribute_Handle;
+ 
+    begin
+       if TT = null then
+          raise Program_Error with Error_Message & "null task";
+       end if;
+ 
+       if TT.Common.State = Terminated then
+          raise Tasking_Error with Error_Message & "terminated task";
+       end if;
+ 
+       if Fast_Path then
+          --  Kill warning about possible alignment mismatch. If this happens,
+          --  Fast_Path will be False anyway
+          pragma Warnings (Off);
+          return To_Handle (TT.Attributes (Index)'Address);
+          pragma Warnings (On);
+       else
+          Self_Id := STPO.Self;
+          Task_Lock (Self_Id);
+ 
+          if TT.Attributes (Index) = 0 then
+             TT.Attributes (Index) := New_Attribute (Initial_Value);
+          end if;
+ 
+          Result := To_Handle
+            (To_Real_Attribute (TT.Attributes (Index)).Value'Address);
+          Task_Unlock (Self_Id);
+ 
+          return Result;
+       end if;
+    end Reference;
+ 
+    ------------------
+    -- Reinitialize --
+    ------------------
+ 
+    procedure Reinitialize
+      (T : Task_Identification.Task_Id := Task_Identification.Current_Task)
+    is
+       Self_Id       : Task_Id;
+       TT            : constant Task_Id := To_Task_Id (T);
+       Error_Message : constant String  := "Trying to Reinitialize a ";
+ 
+    begin
+       if TT = null then
+          raise Program_Error with Error_Message & "null task";
+       end if;
+ 
+       if TT.Common.State = Terminated then
+          raise Tasking_Error with Error_Message & "terminated task";
+       end if;
+ 
+       if Fast_Path then
+ 
+          --  No finalization needed, simply reset to Initial_Value
+ 
+          TT.Attributes (Index) := To_Address (Initial_Value);
+ 
+       else
+          Self_Id := STPO.Self;
+          Task_Lock (Self_Id);
+ 
+          declare
+             Attr : Atomic_Address renames TT.Attributes (Index);
+          begin
+             if Attr /= 0 then
+                Deallocate (Attr);
+                Attr := 0;
+             end if;
+          end;
+ 
+          Task_Unlock (Self_Id);
+       end if;
+    end Reinitialize;
+ 
+    ---------------
+    -- Set_Value --
+    ---------------
+ 
+    procedure Set_Value
+      (Val : Attribute;
+       T   : Task_Identification.Task_Id := Task_Identification.Current_Task)
+    is
+       Self_Id       : Task_Id;
+       TT            : constant Task_Id := To_Task_Id (T);
+       Error_Message : constant String  := "trying to set the value of a ";
+ 
+    begin
+       if TT = null then
+          raise Program_Error with Error_Message & "null task";
+       end if;
+ 
+       if TT.Common.State = Terminated then
+          raise Tasking_Error with Error_Message & "terminated task";
+       end if;
+ 
+       if Fast_Path then
+ 
+          --  No finalization needed, simply set to Val
+ 
+          if Attribute'Size = Integer'Size then
+             TT.Attributes (Index) := Atomic_Address (To_Unsigned (Val));
+          else
+             TT.Attributes (Index) := To_Address (Val);
+          end if;
+ 
+       else
+          Self_Id := STPO.Self;
+          Task_Lock (Self_Id);
+ 
+          declare
+             Attr : Atomic_Address renames TT.Attributes (Index);
+ 
+          begin
+             if Attr /= 0 then
+                Deallocate (Attr);
+             end if;
+ 
+             Attr := New_Attribute (Val);
+          end;
+ 
+          Task_Unlock (Self_Id);
+       end if;
+    end Set_Value;
+ 
+    -----------
+    -- Value --
+    -----------
+ 
+    function Value
+      (T : Task_Identification.Task_Id := Task_Identification.Current_Task)
+       return Attribute
+    is
+       Self_Id       : Task_Id;
+       TT            : constant Task_Id := To_Task_Id (T);
+       Error_Message : constant String  := "trying to get the value of a ";
+ 
+    begin
+       if TT = null then
+          raise Program_Error with Error_Message & "null task";
+       end if;
+ 
+       if TT.Common.State = Terminated then
+          raise Tasking_Error with Error_Message & "terminated task";
+       end if;
+ 
+       if Fast_Path then
+          return To_Attribute (TT.Attributes (Index));
+ 
+       else
+          Self_Id := STPO.Self;
+          Task_Lock (Self_Id);
+ 
+          declare
+             Attr : Atomic_Address renames TT.Attributes (Index);
+ 
+          begin
+             if Attr = 0 then
+                Task_Unlock (Self_Id);
+                return Initial_Value;
+ 
+             else
+                declare
+                   Result : constant Attribute :=
+                              To_Real_Attribute (Attr).Value;
+                begin
+                   Task_Unlock (Self_Id);
+                   return Result;
+                end;
+             end if;
+          end;
+       end if;
+    end Value;
+ 
+ end Ada.Task_Attributes;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/a-tasatt.ads gcc-8.1.0/gcc/ada/libgnarl/a-tasatt.ads
*** gcc-7.3.0/gcc/ada/libgnarl/a-tasatt.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/a-tasatt.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,93 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                  A D A . T A S K _ A T T R I B U T E S                   --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --            Copyright (C) 2014-2018, Free Software Foundation, 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.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with Ada.Task_Identification;
+ 
+ generic
+    type Attribute is private;
+    Initial_Value : Attribute;
+ 
+ package Ada.Task_Attributes is
+ 
+    --  Note that this package will use an efficient implementation with no
+    --  locks and no extra dynamic memory allocation if Attribute is the size
+    --  of either Integer or System.Address, and Initial_Value is 0 (null for
+    --  an access type).
+ 
+    --  Other types and initial values are supported, but will require
+    --  the use of locking and a level of indirection (meaning extra dynamic
+    --  memory allocation).
+ 
+    --  The maximum number of task attributes supported by this implementation
+    --  is determined by the constant System.Parameters.Max_Attribute_Count.
+    --  If you exceed this number, Storage_Error will be raised during the
+    --  elaboration of the instantiation of this package.
+ 
+    type Attribute_Handle is access all Attribute;
+ 
+    function Value
+      (T : Ada.Task_Identification.Task_Id :=
+             Ada.Task_Identification.Current_Task) return Attribute;
+    --  Return the value of the corresponding attribute of T. Tasking_Error
+    --  is raised if T is terminated and Program_Error will be raised if T
+    --  is Null_Task_Id.
+ 
+    function Reference
+      (T : Ada.Task_Identification.Task_Id :=
+             Ada.Task_Identification.Current_Task) return Attribute_Handle;
+    --  Return an access value that designates the corresponding attribute of
+    --  T. Tasking_Error is raised if T is terminated and Program_Error will be
+    --  raised if T is Null_Task_Id.
+ 
+    procedure Set_Value
+      (Val : Attribute;
+       T   : Ada.Task_Identification.Task_Id :=
+               Ada.Task_Identification.Current_Task);
+    --  Finalize the old value of the attribute of T and assign Val to that
+    --  attribute. Tasking_Error is raised if T is terminated and Program_Error
+    --  will be raised if T is Null_Task_Id.
+ 
+    procedure Reinitialize
+      (T : Ada.Task_Identification.Task_Id :=
+             Ada.Task_Identification.Current_Task);
+    --  Same as Set_Value (Initial_Value, T). Tasking_Error is raised if T is
+    --  terminated and Program_Error will be raised if T is Null_Task_Id.
+ 
+ private
+    pragma Inline (Value);
+    pragma Inline (Reference);
+    pragma Inline (Set_Value);
+    pragma Inline (Reinitialize);
+ end Ada.Task_Attributes;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/a-taside.adb gcc-8.1.0/gcc/ada/libgnarl/a-taside.adb
*** gcc-7.3.0/gcc/ada/libgnarl/a-taside.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/a-taside.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,219 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                        GNAT RUN-TIME COMPONENTS                          --
+ --                                                                          --
+ --              A D A . T A S K _ I D E N T I F I C A T I O N               --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is 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 System.Address_Image;
+ with System.Parameters;
+ with System.Soft_Links;
+ with System.Task_Primitives;
+ with System.Task_Primitives.Operations;
+ with Ada.Unchecked_Conversion;
+ 
+ pragma Warnings (Off);
+ --  Allow withing of non-Preelaborated units in Ada 2005 mode where this
+ --  package will be categorized as Preelaborate. See AI-362 for details.
+ --  It is safe in the context of the run-time to violate the rules.
+ 
+ with System.Tasking.Utilities;
+ 
+ pragma Warnings (On);
+ 
+ package body Ada.Task_Identification with
+   SPARK_Mode => Off
+ is
+ 
+    use System.Parameters;
+ 
+    package STPO renames System.Task_Primitives.Operations;
+ 
+    -----------------------
+    -- Local Subprograms --
+    -----------------------
+ 
+    function Convert_Ids (T : Task_Id) return System.Tasking.Task_Id;
+    function Convert_Ids (T : System.Tasking.Task_Id) return Task_Id;
+    pragma Inline (Convert_Ids);
+    --  Conversion functions between different forms of Task_Id
+ 
+    ---------
+    -- "=" --
+    ---------
+ 
+    function "=" (Left, Right : Task_Id) return Boolean is
+    begin
+       return System.Tasking."=" (Convert_Ids (Left), Convert_Ids (Right));
+    end "=";
+ 
+    -----------------
+    -- Abort_Task --
+    ----------------
+ 
+    procedure Abort_Task (T : Task_Id) is
+    begin
+       if T = Null_Task_Id then
+          raise Program_Error;
+       else
+          System.Tasking.Utilities.Abort_Tasks
+            (System.Tasking.Task_List'(1 => Convert_Ids (T)));
+       end if;
+    end Abort_Task;
+ 
+    ----------------------------
+    -- Activation_Is_Complete --
+    ----------------------------
+ 
+    function Activation_Is_Complete (T : Task_Id) return Boolean is
+       use type System.Tasking.Task_Id;
+    begin
+       if T = Null_Task_Id then
+          raise Program_Error;
+       else
+          return Convert_Ids (T).Common.Activator = null;
+       end if;
+    end Activation_Is_Complete;
+ 
+    -----------------
+    -- Convert_Ids --
+    -----------------
+ 
+    function Convert_Ids (T : Task_Id) return System.Tasking.Task_Id is
+    begin
+       return System.Tasking.Task_Id (T);
+    end Convert_Ids;
+ 
+    function Convert_Ids (T : System.Tasking.Task_Id) return Task_Id is
+    begin
+       return Task_Id (T);
+    end Convert_Ids;
+ 
+    ------------------
+    -- Current_Task --
+    ------------------
+ 
+    function Current_Task return Task_Id is
+    begin
+       return Convert_Ids (System.Task_Primitives.Operations.Self);
+    end Current_Task;
+ 
+    ----------------------
+    -- Environment_Task --
+    ----------------------
+ 
+    function Environment_Task return Task_Id is
+    begin
+       return Convert_Ids (System.Task_Primitives.Operations.Environment_Task);
+    end Environment_Task;
+ 
+    -----------
+    -- Image --
+    -----------
+ 
+    function Image (T : Task_Id) return String is
+       function To_Address is new
+         Ada.Unchecked_Conversion
+           (Task_Id, System.Task_Primitives.Task_Address);
+ 
+    begin
+       if T = Null_Task_Id then
+          return "";
+ 
+       elsif T.Common.Task_Image_Len = 0 then
+          return System.Address_Image (To_Address (T));
+ 
+       else
+          return T.Common.Task_Image (1 .. T.Common.Task_Image_Len)
+             & "_" &  System.Address_Image (To_Address (T));
+       end if;
+    end Image;
+ 
+    -----------------
+    -- Is_Callable --
+    -----------------
+ 
+    function Is_Callable (T : Task_Id) return Boolean is
+       Result : Boolean;
+       Id     : constant System.Tasking.Task_Id := Convert_Ids (T);
+    begin
+       if T = Null_Task_Id then
+          raise Program_Error;
+       else
+          System.Soft_Links.Abort_Defer.all;
+ 
+          if Single_Lock then
+             STPO.Lock_RTS;
+          end if;
+ 
+          STPO.Write_Lock (Id);
+          Result := Id.Callable;
+          STPO.Unlock (Id);
+ 
+          if Single_Lock then
+             STPO.Unlock_RTS;
+          end if;
+ 
+          System.Soft_Links.Abort_Undefer.all;
+          return Result;
+       end if;
+    end Is_Callable;
+ 
+    -------------------
+    -- Is_Terminated --
+    -------------------
+ 
+    function Is_Terminated (T : Task_Id) return Boolean is
+       Result : Boolean;
+       Id     : constant System.Tasking.Task_Id := Convert_Ids (T);
+ 
+       use System.Tasking;
+ 
+    begin
+       if T = Null_Task_Id then
+          raise Program_Error;
+       else
+          System.Soft_Links.Abort_Defer.all;
+ 
+          if Single_Lock then
+             STPO.Lock_RTS;
+          end if;
+ 
+          STPO.Write_Lock (Id);
+          Result := Id.Common.State = Terminated;
+          STPO.Unlock (Id);
+ 
+          if Single_Lock then
+             STPO.Unlock_RTS;
+          end if;
+ 
+          System.Soft_Links.Abort_Undefer.all;
+          return Result;
+       end if;
+    end Is_Terminated;
+ 
+ end Ada.Task_Identification;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/a-taside.ads gcc-8.1.0/gcc/ada/libgnarl/a-taside.ads
*** gcc-7.3.0/gcc/ada/libgnarl/a-taside.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/a-taside.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,97 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --              A D A . T A S K _ I D E N T I F I C A T I O N               --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2018, Free Software Foundation, 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.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System;
+ with System.Tasking;
+ 
+ package Ada.Task_Identification with
+   SPARK_Mode,
+   Abstract_State => (Tasking_State with Synchronous,
+                                         External => (Async_Readers,
+                                                      Async_Writers)),
+   Initializes    => Tasking_State
+ is
+    pragma Preelaborate;
+    --  In accordance with Ada 2005 AI-362
+ 
+    type Task_Id is private;
+    pragma Preelaborable_Initialization (Task_Id);
+ 
+    Null_Task_Id : constant Task_Id;
+ 
+    function "=" (Left, Right : Task_Id) return Boolean with
+      Global => null;
+    pragma Inline ("=");
+ 
+    function Image (T : Task_Id) return String with
+      Global => null;
+ 
+    function Current_Task return Task_Id with
+      Volatile_Function,
+      Global => Tasking_State;
+    pragma Inline (Current_Task);
+ 
+    function Environment_Task return Task_Id with
+      SPARK_Mode => Off,
+      Global     => null;
+    pragma Inline (Environment_Task);
+ 
+    procedure Abort_Task (T : Task_Id) with
+      Global => null;
+    pragma Inline (Abort_Task);
+    --  Note: parameter is mode IN, not IN OUT, per AI-00101
+ 
+    function Is_Terminated (T : Task_Id) return Boolean with
+      Volatile_Function,
+      Global => Tasking_State;
+    pragma Inline (Is_Terminated);
+ 
+    function Is_Callable (T : Task_Id) return Boolean with
+      Volatile_Function,
+      Global => Tasking_State;
+    pragma Inline (Is_Callable);
+ 
+    function Activation_Is_Complete (T : Task_Id) return Boolean with
+      Volatile_Function,
+      Global => Tasking_State;
+ 
+ private
+    pragma SPARK_Mode (Off);
+ 
+    type Task_Id is new System.Tasking.Task_Id;
+ 
+    Null_Task_Id : constant Task_Id := null;
+ 
+ end Ada.Task_Identification;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/a-taster.adb gcc-8.1.0/gcc/ada/libgnarl/a-taster.adb
*** gcc-7.3.0/gcc/ada/libgnarl/a-taster.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/a-taster.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,191 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                 A D A . T A S K _ T E R M I N A T I O N                  --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 2005-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is 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 System.Tasking;
+ with System.Task_Primitives.Operations;
+ with System.Parameters;
+ with System.Soft_Links;
+ 
+ with Ada.Unchecked_Conversion;
+ 
+ package body Ada.Task_Termination is
+ 
+    use type Ada.Task_Identification.Task_Id;
+ 
+    package STPO renames System.Task_Primitives.Operations;
+    package SSL  renames System.Soft_Links;
+ 
+    use System.Parameters;
+ 
+    -----------------------
+    -- Local subprograms --
+    -----------------------
+ 
+    function To_TT is new Ada.Unchecked_Conversion
+      (System.Tasking.Termination_Handler, Termination_Handler);
+ 
+    function To_ST is new Ada.Unchecked_Conversion
+      (Termination_Handler, System.Tasking.Termination_Handler);
+ 
+    function To_Task_Id is new Ada.Unchecked_Conversion
+      (Ada.Task_Identification.Task_Id, System.Tasking.Task_Id);
+ 
+    -----------------------------------
+    -- Current_Task_Fallback_Handler --
+    -----------------------------------
+ 
+    function Current_Task_Fallback_Handler return Termination_Handler is
+    begin
+       --  There is no need for explicit protection against race conditions
+       --  for this function because this function can only be executed by
+       --  Self, and the Fall_Back_Handler can only be modified by Self.
+ 
+       return To_TT (STPO.Self.Common.Fall_Back_Handler);
+    end Current_Task_Fallback_Handler;
+ 
+    -------------------------------------
+    -- Set_Dependents_Fallback_Handler --
+    -------------------------------------
+ 
+    procedure Set_Dependents_Fallback_Handler
+      (Handler : Termination_Handler)
+    is
+       Self : constant System.Tasking.Task_Id := STPO.Self;
+ 
+    begin
+       SSL.Abort_Defer.all;
+ 
+       if Single_Lock then
+          STPO.Lock_RTS;
+       end if;
+ 
+       STPO.Write_Lock (Self);
+ 
+       Self.Common.Fall_Back_Handler := To_ST (Handler);
+ 
+       STPO.Unlock (Self);
+ 
+       if Single_Lock then
+          STPO.Unlock_RTS;
+       end if;
+ 
+       SSL.Abort_Undefer.all;
+    end Set_Dependents_Fallback_Handler;
+ 
+    --------------------------
+    -- Set_Specific_Handler --
+    --------------------------
+ 
+    procedure Set_Specific_Handler
+      (T       : Ada.Task_Identification.Task_Id;
+       Handler : Termination_Handler)
+    is
+    begin
+       --  Tasking_Error is raised if the task identified by T has already
+       --  terminated. Program_Error is raised if the value of T is
+       --  Null_Task_Id.
+ 
+       if T = Ada.Task_Identification.Null_Task_Id then
+          raise Program_Error;
+       elsif Ada.Task_Identification.Is_Terminated (T) then
+          raise Tasking_Error;
+       else
+          declare
+             Target : constant System.Tasking.Task_Id := To_Task_Id (T);
+ 
+          begin
+             SSL.Abort_Defer.all;
+ 
+             if Single_Lock then
+                STPO.Lock_RTS;
+             end if;
+ 
+             STPO.Write_Lock (Target);
+ 
+             Target.Common.Specific_Handler := To_ST (Handler);
+ 
+             STPO.Unlock (Target);
+ 
+             if Single_Lock then
+                STPO.Unlock_RTS;
+             end if;
+ 
+             SSL.Abort_Undefer.all;
+          end;
+       end if;
+    end Set_Specific_Handler;
+ 
+    ----------------------
+    -- Specific_Handler --
+    ----------------------
+ 
+    function Specific_Handler
+      (T : Ada.Task_Identification.Task_Id) return Termination_Handler
+    is
+    begin
+       --  Tasking_Error is raised if the task identified by T has already
+       --  terminated. Program_Error is raised if the value of T is
+       --  Null_Task_Id.
+ 
+       if T = Ada.Task_Identification.Null_Task_Id then
+          raise Program_Error;
+       elsif Ada.Task_Identification.Is_Terminated (T) then
+          raise Tasking_Error;
+       else
+          declare
+             Target : constant System.Tasking.Task_Id := To_Task_Id (T);
+             TH     : Termination_Handler;
+ 
+          begin
+             SSL.Abort_Defer.all;
+ 
+             if Single_Lock then
+                STPO.Lock_RTS;
+             end if;
+ 
+             STPO.Write_Lock (Target);
+ 
+             TH := To_TT (Target.Common.Specific_Handler);
+ 
+             STPO.Unlock (Target);
+ 
+             if Single_Lock then
+                STPO.Unlock_RTS;
+             end if;
+ 
+             SSL.Abort_Undefer.all;
+ 
+             return TH;
+          end;
+       end if;
+    end Specific_Handler;
+ 
+ end Ada.Task_Termination;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/a-taster.ads gcc-8.1.0/gcc/ada/libgnarl/a-taster.ads
*** gcc-7.3.0/gcc/ada/libgnarl/a-taster.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/a-taster.ads	Fri Sep  8 10:34:02 2017
***************
*** 0 ****
--- 1,39 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                 A D A . T A S K _ T E R M I N A T I O N                  --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ -- This specification is derived from the Ada Reference Manual for use with --
+ -- GNAT.  In accordance with the copyright of that document, you can freely --
+ -- copy and modify this specification,  provided that if you redistribute a --
+ -- modified version,  any changes that you have made are clearly indicated. --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with Ada.Task_Identification;
+ with Ada.Exceptions;
+ 
+ package Ada.Task_Termination is
+    pragma Preelaborate (Task_Termination);
+ 
+    type Cause_Of_Termination is (Normal, Abnormal, Unhandled_Exception);
+ 
+    type Termination_Handler is access protected procedure
+      (Cause : Cause_Of_Termination;
+       T     : Ada.Task_Identification.Task_Id;
+       X     : Ada.Exceptions.Exception_Occurrence);
+ 
+    procedure Set_Dependents_Fallback_Handler
+      (Handler : Termination_Handler);
+    function Current_Task_Fallback_Handler return Termination_Handler;
+ 
+    procedure Set_Specific_Handler
+      (T       : Ada.Task_Identification.Task_Id;
+       Handler : Termination_Handler);
+    function Specific_Handler
+      (T : Ada.Task_Identification.Task_Id) return Termination_Handler;
+ 
+ end Ada.Task_Termination;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/g-boubuf.adb gcc-8.1.0/gcc/ada/libgnarl/g-boubuf.adb
*** gcc-7.3.0/gcc/ada/libgnarl/g-boubuf.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/g-boubuf.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,90 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                  G N A T . B O U N D E D _ B U F F E R S                 --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --                     Copyright (C) 2003-2018, AdaCore                     --
+ --                                                                          --
+ -- GNAT is 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 is maintained by Ada Core Technologies Inc (http://www.gnat.com).   --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ package body GNAT.Bounded_Buffers is
+ 
+    --------------------
+    -- Bounded_Buffer --
+    --------------------
+ 
+    protected body Bounded_Buffer is
+ 
+       ------------
+       -- Insert --
+       ------------
+ 
+       entry Insert (Item : Element) when Count /= Capacity is
+       begin
+          Values (Next_In) := Item;
+          Next_In := (Next_In mod Capacity) + 1;
+          Count := Count + 1;
+       end Insert;
+ 
+       ------------
+       -- Remove --
+       ------------
+ 
+       entry Remove (Item : out Element) when Count > 0 is
+       begin
+          Item := Values (Next_Out);
+          Next_Out := (Next_Out mod Capacity) + 1;
+          Count := Count - 1;
+       end Remove;
+ 
+       -----------
+       -- Empty --
+       -----------
+ 
+       function Empty return Boolean is
+       begin
+          return Count = 0;
+       end Empty;
+ 
+       ----------
+       -- Full --
+       ----------
+ 
+       function Full return Boolean is
+       begin
+          return Count = Capacity;
+       end Full;
+ 
+       ------------
+       -- Extent --
+       ------------
+ 
+       function Extent return Natural is
+       begin
+          return Count;
+       end Extent;
+ 
+    end Bounded_Buffer;
+ 
+ end GNAT.Bounded_Buffers;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/g-boubuf.ads gcc-8.1.0/gcc/ada/libgnarl/g-boubuf.ads
*** gcc-7.3.0/gcc/ada/libgnarl/g-boubuf.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/g-boubuf.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,101 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT LIBRARY COMPONENTS                          --
+ --                                                                          --
+ --                  G N A T . B O U N D E D _ B U F F E R S                 --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --                     Copyright (C) 2003-2018, AdaCore                     --
+ --                                                                          --
+ -- GNAT is 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. --
+ -- It is now maintained by Ada Core Technologies Inc (http://www.gnat.com). --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package provides a thread-safe generic bounded buffer abstraction.
+ --  Instances are useful directly or as parts of the implementations of other
+ --  abstractions, such as mailboxes.
+ 
+ --  Bounded_Buffer is declared explicitly as a protected type, rather than as
+ --  a simple limited private type completed as a protected type, so that
+ --  clients may make calls accordingly (i.e., conditional/timed entry calls).
+ 
+ with System;
+ 
+ generic
+    type Element is private;
+    --  The type of the values contained within buffer objects
+ 
+ package GNAT.Bounded_Buffers is
+    pragma Pure;
+ 
+    type Content is array (Positive range <>) of Element;
+    --  Content is an internal artefact that cannot be hidden because protected
+    --  types cannot contain type declarations.
+ 
+    Default_Ceiling : constant System.Priority := System.Default_Priority;
+    --  A convenience value for the Ceiling discriminant
+ 
+    protected type Bounded_Buffer
+       (Capacity : Positive;
+       --  Objects of type Bounded_Buffer specify the maximum number of Element
+       --  values they can hold via the discriminant Capacity.
+ 
+       Ceiling : System.Priority)
+       --  Users must specify the ceiling priority for the object. If the
+       --  Real-Time Systems Annex is not in use this value is not important.
+    is
+       pragma Priority (Ceiling);
+ 
+       entry Insert (Item : Element);
+       --  Insert Item into the buffer, blocks caller until space is available
+ 
+       entry Remove (Item : out Element);
+       --  Remove next available Element from buffer. Blocks caller until an
+       --  Element is available.
+ 
+       function Empty return Boolean;
+       --  Returns whether the instance contains any Elements.
+       --  Note: State may change immediately after call returns.
+ 
+       function Full return Boolean;
+       --  Returns whether any space remains within the instance.
+       --  Note: State may change immediately after call returns.
+ 
+       function Extent return Natural;
+       --  Returns the number of Element values currently held
+       --  within the instance.
+       --  Note: State may change immediately after call returns.
+ 
+    private
+       Values   : Content (1 .. Capacity);
+       --  The container for the values held by the buffer instance
+ 
+       Next_In  : Positive := 1;
+       --  The index of the next Element inserted. Wraps around
+ 
+       Next_Out : Positive := 1;
+       --  The index of the next Element removed. Wraps around
+ 
+       Count    : Natural  := 0;
+       --  The number of Elements currently held
+    end Bounded_Buffer;
+ 
+ end GNAT.Bounded_Buffers;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/g-boumai.ads gcc-8.1.0/gcc/ada/libgnarl/g-boumai.ads
*** gcc-7.3.0/gcc/ada/libgnarl/g-boumai.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/g-boumai.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,96 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT LIBRARY COMPONENTS                          --
+ --                                                                          --
+ --                 G N A T . B O U N D E D _ M A I L B O X E S              --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --                     Copyright (C) 2003-2018, AdaCore                     --
+ --                                                                          --
+ -- GNAT is 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. --
+ -- It is now maintained by Ada Core Technologies Inc (http://www.gnat.com). --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package provides a thread-safe asynchronous communication facility
+ --  in the form of mailboxes. Individual mailbox objects are bounded in size
+ --  to a value specified by their Capacity discriminants.
+ 
+ --  Mailboxes actually hold references to messages, not the message values
+ --  themselves.
+ 
+ --  Type Mailbox is defined explicitly as a protected type (via derivation
+ --  from a protected type) so that clients may treat them accordingly (for
+ --  example, by making conditional/timed entry calls).
+ 
+ with System;
+ with GNAT.Bounded_Buffers;
+ 
+ generic
+    type Message (<>) is limited private;
+    type Message_Reference is access all Message;
+    --  Mailboxes hold references to Message values, of this type
+ 
+ package GNAT.Bounded_Mailboxes is
+    pragma Preelaborate;
+ 
+    package Message_Refs is
+       new GNAT.Bounded_Buffers (Message_Reference);
+ 
+    type Mailbox is new Message_Refs.Bounded_Buffer;
+ 
+    --  Type Mailbox has two inherited discriminants:
+ 
+    --  Capacity : Positive;
+    --     Capacity is the maximum number of Message references
+    --     possibly contained at any given instant.
+ 
+    --  Ceiling : System.Priority;
+    --     Users must specify the ceiling priority for the object.
+    --     If the Real-Time Systems Annex is not in use this value
+    --     is not important.
+ 
+    --  Protected type Mailbox has the following inherited interface:
+ 
+    --  entry Insert (Item : Message_Reference);
+    --     Insert Item into the Mailbox. Blocks caller
+    --     until space is available.
+ 
+    --  entry Remove (Item : out Message_Reference);
+    --     Remove next available Message_Reference from Mailbox.
+    --     Blocks caller until a Message_Reference is available.
+ 
+    --  function Empty return Boolean;
+    --     Returns whether the Mailbox contains any Message_References.
+    --     Note: State may change immediately after call returns.
+ 
+    --  function Full return Boolean;
+    --     Returns whether any space remains within the Mailbox.
+    --     Note: State may change immediately after call returns.
+ 
+    --  function Extent return Natural;
+    --     Returns the number of Message_Reference values currently held
+    --     within the Mailbox.
+    --     Note: State may change immediately after call returns.
+ 
+    Default_Ceiling : constant System.Priority := Message_Refs.Default_Ceiling;
+    --  A convenience value for the Ceiling discriminant
+ 
+ end GNAT.Bounded_Mailboxes;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/g-semaph.adb gcc-8.1.0/gcc/ada/libgnarl/g-semaph.adb
*** gcc-7.3.0/gcc/ada/libgnarl/g-semaph.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/g-semaph.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,84 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT LIBRARY COMPONENTS                          --
+ --                                                                          --
+ --                      G N A T . S E M A P H O R E S                       --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --                     Copyright (C) 2003-2018, AdaCore                     --
+ --                                                                          --
+ -- GNAT is 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. --
+ -- It is now maintained by Ada Core Technologies Inc (http://www.gnat.com). --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ package body GNAT.Semaphores is
+ 
+    ------------------------
+    -- Counting_Semaphore --
+    ------------------------
+ 
+    protected body Counting_Semaphore is
+ 
+       -----------
+       -- Seize --
+       -----------
+ 
+       entry Seize when Count > 0 is
+       begin
+          Count := Count - 1;
+       end Seize;
+ 
+       -------------
+       -- Release --
+       -------------
+ 
+       procedure Release is
+       begin
+          Count := Count + 1;
+       end Release;
+    end Counting_Semaphore;
+ 
+    ----------------------
+    -- Binary_Semaphore --
+    ----------------------
+ 
+    protected body Binary_Semaphore is
+ 
+       -----------
+       -- Seize --
+       -----------
+ 
+       entry Seize when Available is
+       begin
+          Available := False;
+       end Seize;
+ 
+       -------------
+       -- Release --
+       -------------
+ 
+       procedure Release is
+       begin
+          Available := True;
+       end Release;
+    end Binary_Semaphore;
+ 
+ end GNAT.Semaphores;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/g-semaph.ads gcc-8.1.0/gcc/ada/libgnarl/g-semaph.ads
*** gcc-7.3.0/gcc/ada/libgnarl/g-semaph.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/g-semaph.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,97 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT LIBRARY COMPONENTS                          --
+ --                                                                          --
+ --                      G N A T . S E M A P H O R E S                       --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --                     Copyright (C) 2003-2018, AdaCore                     --
+ --                                                                          --
+ -- GNAT is 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. --
+ -- It is now maintained by Ada Core Technologies Inc (http://www.gnat.com). --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package provides classic counting semaphores and binary semaphores.
+ --  Both types are visibly defined as protected types so that users can make
+ --  conditional and timed calls when appropriate.
+ 
+ with System;
+ 
+ package GNAT.Semaphores is
+ 
+    Default_Ceiling : constant System.Priority := System.Default_Priority;
+    --  A convenient value for the priority discriminants that follow
+ 
+    ------------------------
+    -- Counting_Semaphore --
+    ------------------------
+ 
+    protected type Counting_Semaphore
+       (Initial_Value : Natural;
+       --  A counting semaphore contains an internal counter.  The initial
+       --  value of this counter is set by clients via the discriminant.
+ 
+       Ceiling : System.Priority)
+       --  Users must specify the ceiling priority for the object. If the
+       --  Real-Time Systems Annex is not in use this value is not important.
+    is
+       pragma Priority (Ceiling);
+ 
+       entry Seize;
+       --  Blocks caller until/unless the semaphore's internal counter is
+       --  greater than zero. Decrements the semaphore's internal counter when
+       --  executed.
+ 
+       procedure Release;
+       --  Increments the semaphore's internal counter
+ 
+    private
+       Count : Natural := Initial_Value;
+    end Counting_Semaphore;
+ 
+    ----------------------
+    -- Binary_Semaphore --
+    ----------------------
+ 
+    protected type Binary_Semaphore
+      (Initially_Available : Boolean;
+       --  Binary semaphores are either available or not; there is no internal
+       --  count involved. The discriminant value determines whether the
+       --  individual object is initially available.
+ 
+       Ceiling : System.Priority)
+       --  Users must specify the ceiling priority for the object. If the
+       --  Real-Time Systems Annex is not in use this value is not important.
+    is
+       pragma Priority (Ceiling);
+ 
+       entry Seize;
+       --  Blocks the caller unless/until semaphore is available. After
+       --  execution the semaphore is no longer available.
+ 
+       procedure Release;
+       --  Makes the semaphore available
+ 
+    private
+       Available : Boolean := Initially_Available;
+    end Binary_Semaphore;
+ 
+ end GNAT.Semaphores;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/g-signal.adb gcc-8.1.0/gcc/ada/libgnarl/g-signal.adb
*** gcc-7.3.0/gcc/ada/libgnarl/g-signal.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/g-signal.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,65 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                         G N A T . S I G N A L S                          --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 2003-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is 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 System.Interrupts;
+ 
+ package body GNAT.Signals is
+ 
+    package SI renames System.Interrupts;
+ 
+    ------------------
+    -- Block_Signal --
+    ------------------
+ 
+    procedure Block_Signal (Signal : Ada.Interrupts.Interrupt_ID) is
+    begin
+       SI.Block_Interrupt (SI.Interrupt_ID (Signal));
+    end Block_Signal;
+ 
+    ----------------
+    -- Is_Blocked --
+    ----------------
+ 
+    function Is_Blocked (Signal : Ada.Interrupts.Interrupt_ID) return Boolean is
+    begin
+       return SI.Is_Blocked (SI.Interrupt_ID (Signal));
+    end Is_Blocked;
+ 
+    --------------------
+    -- Unblock_Signal --
+    --------------------
+ 
+    procedure Unblock_Signal (Signal : Ada.Interrupts.Interrupt_ID) is
+    begin
+       SI.Unblock_Interrupt (SI.Interrupt_ID (Signal));
+    end Unblock_Signal;
+ 
+ end GNAT.Signals;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/g-signal.ads gcc-8.1.0/gcc/ada/libgnarl/g-signal.ads
*** gcc-7.3.0/gcc/ada/libgnarl/g-signal.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/g-signal.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,52 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                         G N A T . S I G N A L S                          --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 2003-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is 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 operations for querying and setting the blocked
+ --  status of signals.
+ 
+ --  This package is supported only on targets where Ada.Interrupts.Interrupt_ID
+ --  corresponds to software signals on the target, and where System.Interrupts
+ --  provides the ability to block and unblock signals.
+ 
+ with Ada.Interrupts;
+ 
+ package GNAT.Signals is
+ 
+    procedure Block_Signal (Signal : Ada.Interrupts.Interrupt_ID);
+    --  Block "Signal" at the process level
+ 
+    procedure Unblock_Signal (Signal : Ada.Interrupts.Interrupt_ID);
+    --  Unblock "Signal" at the process level
+ 
+    function Is_Blocked (Signal : Ada.Interrupts.Interrupt_ID) return Boolean;
+    --  "Signal" blocked at the process level?
+ 
+ end GNAT.Signals;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/g-tastus.ads gcc-8.1.0/gcc/ada/libgnarl/g-tastus.ads
*** gcc-7.3.0/gcc/ada/libgnarl/g-tastus.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/g-tastus.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,36 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                G N A T . T A S K _ S T A C K _ U S A G E                 --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --           Copyright (C) 2009-2018, Free Software Foundation, Inc.        --
+ --                                                                          --
+ -- GNAT is 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 package provides an API to query for tasks stack usage at runtime
+ --  and during debug.
+ 
+ --  See file s-stusta.ads for full documentation of the interface
+ 
+ with System.Stack_Usage.Tasking;
+ 
+ package GNAT.Task_Stack_Usage renames System.Stack_Usage.Tasking;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/g-thread.adb gcc-8.1.0/gcc/ada/libgnarl/g-thread.adb
*** gcc-7.3.0/gcc/ada/libgnarl/g-thread.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/g-thread.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,196 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                         G N A T . T H R E A D S                          --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --                    Copyright (C) 1998-2018, AdaCore                      --
+ --                                                                          --
+ -- GNAT is 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.Task_Identification; use Ada.Task_Identification;
+ with System.Task_Primitives.Operations;
+ with System.Tasking;
+ with System.Tasking.Stages;   use System.Tasking.Stages;
+ with System.Tasking.Utilities;
+ with System.OS_Interface;     use System.OS_Interface;
+ with System.Soft_Links;       use System.Soft_Links;
+ with Ada.Unchecked_Conversion;
+ 
+ package body GNAT.Threads is
+ 
+    use System;
+ 
+    package STPO renames System.Task_Primitives.Operations;
+ 
+    type Thread_Id_Ptr is access all Thread_Id;
+ 
+    pragma Warnings (Off);
+    --  The following unchecked conversions are aliasing safe, since they
+    --  are never used to create pointers to improperly aliased data.
+ 
+    function To_Addr is new Ada.Unchecked_Conversion (Task_Id, Address);
+    function To_Id   is new Ada.Unchecked_Conversion (Address, Task_Id);
+    function To_Id   is new Ada.Unchecked_Conversion (Address, Tasking.Task_Id);
+    function To_Tid  is new Ada.Unchecked_Conversion
+      (Address, Ada.Task_Identification.Task_Id);
+    function To_Thread is new Ada.Unchecked_Conversion (Address, Thread_Id_Ptr);
+ 
+    pragma Warnings (On);
+ 
+    type Code_Proc is access procedure (Id : Address; Parm : Void_Ptr);
+ 
+    task type Thread
+      (Stsz : Natural;
+       Prio : Any_Priority;
+       Parm : Void_Ptr;
+       Code : Code_Proc)
+    is
+       pragma Priority (Prio);
+       pragma Storage_Size (Stsz);
+    end Thread;
+ 
+    task body Thread is
+    begin
+       Code.all (To_Addr (Current_Task), Parm);
+    end Thread;
+ 
+    type Tptr is access Thread;
+ 
+    -------------------
+    -- Create_Thread --
+    -------------------
+ 
+    function Create_Thread
+      (Code : Address;
+       Parm : Void_Ptr;
+       Size : Natural;
+       Prio : Integer) return System.Address
+    is
+       TP : Tptr;
+ 
+       function To_CP is new Ada.Unchecked_Conversion (Address, Code_Proc);
+ 
+    begin
+       TP := new Thread (Size, Prio, Parm, To_CP (Code));
+       return To_Addr (TP'Identity);
+    end Create_Thread;
+ 
+    ---------------------
+    -- Register_Thread --
+    ---------------------
+ 
+    function Register_Thread return System.Address is
+    begin
+       return Task_Primitives.Operations.Register_Foreign_Thread.all'Address;
+    end Register_Thread;
+ 
+    -----------------------
+    -- Unregister_Thread --
+    -----------------------
+ 
+    procedure Unregister_Thread is
+       Self_Id : constant Tasking.Task_Id := Task_Primitives.Operations.Self;
+    begin
+       Self_Id.Common.State := Tasking.Terminated;
+       Destroy_TSD (Self_Id.Common.Compiler_Data);
+       Free_Task (Self_Id);
+    end Unregister_Thread;
+ 
+    --------------------------
+    -- Unregister_Thread_Id --
+    --------------------------
+ 
+    procedure Unregister_Thread_Id (Thread : System.Address) is
+       Thr : constant Thread_Id := To_Thread (Thread).all;
+       T   : Tasking.Task_Id;
+ 
+       use type Tasking.Task_Id;
+       --  This use clause should be removed once a visibility problem
+       --  with the MaRTE run time has been fixed. ???
+ 
+       pragma Warnings (Off);
+       use type System.OS_Interface.Thread_Id;
+       pragma Warnings (On);
+ 
+    begin
+       STPO.Lock_RTS;
+ 
+       T := Tasking.All_Tasks_List;
+       loop
+          exit when T = null or else STPO.Get_Thread_Id (T) = Thr;
+ 
+          T := T.Common.All_Tasks_Link;
+       end loop;
+ 
+       STPO.Unlock_RTS;
+ 
+       if T /= null then
+          T.Common.State := Tasking.Terminated;
+          Destroy_TSD (T.Common.Compiler_Data);
+          Free_Task (T);
+       end if;
+    end Unregister_Thread_Id;
+ 
+    --------------------
+    -- Destroy_Thread --
+    --------------------
+ 
+    procedure Destroy_Thread (Id : Address) is
+       Tid : constant Task_Id := To_Id (Id);
+    begin
+       Abort_Task (Tid);
+    end Destroy_Thread;
+ 
+    ----------------
+    -- Get_Thread --
+    ----------------
+ 
+    procedure Get_Thread (Id : Address; Thread : Address) is
+       Thr : constant Thread_Id_Ptr := To_Thread (Thread);
+    begin
+       Thr.all := Task_Primitives.Operations.Get_Thread_Id (To_Id (Id));
+    end Get_Thread;
+ 
+    ----------------------
+    -- Make_Independent --
+    ----------------------
+ 
+    function Make_Independent return Boolean is
+    begin
+       return System.Tasking.Utilities.Make_Independent;
+    end Make_Independent;
+ 
+    ----------------
+    -- To_Task_Id --
+    ----------------
+ 
+    function To_Task_Id
+      (Id : System.Address) return Ada.Task_Identification.Task_Id
+    is
+    begin
+       return To_Tid (Id);
+    end To_Task_Id;
+ 
+ end GNAT.Threads;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/g-thread.ads gcc-8.1.0/gcc/ada/libgnarl/g-thread.ads
*** gcc-7.3.0/gcc/ada/libgnarl/g-thread.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/g-thread.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,160 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                         G N A T . T H R E A D S                          --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --                     Copyright (C) 1998-2018, AdaCore                     --
+ --                                                                          --
+ -- GNAT is 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 facilities for creation or registration of foreign
+ --  threads for use as Ada tasks. In order to execute general Ada code, the
+ --  run-time system must know about all tasks. This package allows foreign
+ --  code, e.g. a C program, to create a thread that the Ada run-time knows
+ --  about, or to register the current thread.
+ 
+ --  For some implementations of GNAT Pro, the registration of foreign threads
+ --  is automatic. However, in such implementations, if the Ada program has no
+ --  tasks at all and no tasking constructs other than delay, then by default
+ --  the non-tasking version of the Ada run-time will be loaded. If foreign
+ --  threads are present, it is important to ensure that the tasking version
+ --  of the Ada run time is loaded. This may be achieved by adding "with
+ --  GNAT.Threads" to any unit in the partition.
+ 
+ with System;
+ with Ada.Task_Identification;
+ 
+ package GNAT.Threads is
+ 
+    type Void_Ptr is access all Integer;
+ 
+    function Create_Thread
+      (Code : System.Address;  -- pointer
+       Parm : Void_Ptr;        -- pointer
+       Size : Natural;         -- int
+       Prio : Integer)         -- int
+       return System.Address;
+    pragma Export (C, Create_Thread, "__gnat_create_thread");
+    --  Creates a thread with the given (Size) stack size in bytes, and
+    --  the given (Prio) priority. The task will execute a call to the
+    --  procedure whose address is given by Code. This procedure has
+    --  the prototype
+    --
+    --    void thread_code (void *id, void *parm);
+    --
+    --  where id is the id of the created task, and parm is the parameter
+    --  passed to Create_Thread. The called procedure is the body of the
+    --  code for the task, the task will be automatically terminated when
+    --  the procedure returns.
+    --
+    --  This function returns the Ada Id of the created task that can then be
+    --  used as a parameter to the procedures below.
+    --
+    --  C declaration:
+    --
+    --  extern void *__gnat_create_thread
+    --    (void (*code)(void *, void *), void *parm, int size, int prio);
+ 
+    function Register_Thread return System.Address;
+    pragma Export (C, Register_Thread, "__gnat_register_thread");
+    --  Create an Ada task Id for the current thread if needed.
+    --  If the thread could not be registered, System.Null_Address is returned.
+    --
+    --  This function returns the Ada Id of the current task that can then be
+    --  used as a parameter to the procedures below.
+    --
+    --  C declaration:
+    --
+    --  extern void *__gnat_register_thread ();
+    --
+    --  Here is a typical usage of the Register/Unregister_Thread procedures:
+    --
+    --  void thread_body ()
+    --  {
+    --    void *task_id = __gnat_register_thread ();
+    --    ... thread body ...
+    --    __gnat_unregister_thread ();
+    --  }
+ 
+    procedure Unregister_Thread;
+    pragma Export (C, Unregister_Thread, "__gnat_unregister_thread");
+    --  Unregister the current task from the GNAT run time and destroy the
+    --  memory allocated for its task id.
+    --
+    --  C declaration:
+    --
+    --  extern void __gnat_unregister_thread ();
+ 
+    procedure Unregister_Thread_Id (Thread : System.Address);
+    pragma Export (C, Unregister_Thread_Id, "__gnat_unregister_thread_id");
+    --  Unregister the task associated with Thread from the GNAT run time and
+    --  destroy the memory allocated for its task id.
+    --  If no task id is associated with Thread, do nothing.
+    --
+    --  C declaration:
+    --
+    --  extern void __gnat_unregister_thread_id (pthread_t *thread);
+ 
+    procedure Destroy_Thread (Id : System.Address);
+    pragma Export (C, Destroy_Thread, "__gnat_destroy_thread");
+    --  This procedure may be used to prematurely abort the created thread.
+    --  The value Id is the value that was passed to the thread code procedure
+    --  at activation time.
+    --
+    --  C declaration:
+    --
+    --  extern void __gnat_destroy_thread (void *id);
+ 
+    procedure Get_Thread (Id : System.Address; Thread : System.Address);
+    pragma Export (C, Get_Thread, "__gnat_get_thread");
+    --  This procedure is used to retrieve the thread id of a given task.
+    --  The value Id is the value that was passed to the thread code procedure
+    --  at activation time.
+    --  Thread is a pointer to a thread id that will be updated by this
+    --  procedure.
+    --
+    --  C declaration:
+    --
+    --  extern void __gnat_get_thread (void *id, pthread_t *thread);
+ 
+    function To_Task_Id
+      (Id : System.Address)
+       return Ada.Task_Identification.Task_Id;
+    --  Ada interface only.
+    --  Given a low level Id, as returned by Create_Thread, return a Task_Id,
+    --  so that operations in Ada.Task_Identification can be used.
+ 
+    function Make_Independent return Boolean;
+    --  If a procedure loads a shared library containing tasks, and that
+    --  procedure is considered to be a master by the compiler (because it
+    --  contains tasks or class-wide objects that might contain tasks),
+    --  then the tasks in the shared library need to call Make_Independent
+    --  because otherwise they will depend on the procedure that loaded the
+    --  shared library.
+    --
+    --  See System.Tasking.Utilities.Make_Independent in s-tasuti.ads for
+    --  further documentation.
+ 
+ end GNAT.Threads;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/i-vxinco.adb gcc-8.1.0/gcc/ada/libgnarl/i-vxinco.adb
*** gcc-7.3.0/gcc/ada/libgnarl/i-vxinco.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/i-vxinco.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,48 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --     I N T E R F A C E S . V X W O R K S . I N T  _ C O N N E C T I O N   --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --                        Copyright (C) 2016-2018, 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- --
+ -- 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ package body Interfaces.VxWorks.Int_Connection is
+ 
+    Connection_Routine : Interrupt_Connector;
+    pragma Import (C, Connection_Routine, "__gnat_user_int_connect");
+    --  Declared in System.Interrupts. Defaults to the standard OS connector in
+    --  System.OS_Interface (or Interfaces.VxWorks for restricted runtimes).
+ 
+    -------------
+    -- Connect --
+    -------------
+ 
+    procedure Connect (Connector : Interrupt_Connector) is
+    begin
+       Connection_Routine := Connector;
+    end Connect;
+ 
+ end Interfaces.VxWorks.Int_Connection;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/i-vxinco.ads gcc-8.1.0/gcc/ada/libgnarl/i-vxinco.ads
*** gcc-7.3.0/gcc/ada/libgnarl/i-vxinco.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/i-vxinco.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,56 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --     I N T E R F A C E S . V X W O R K S . I N T  _ C O N N E C T I O N   --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --                        Copyright (C) 2016-2018, 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- --
+ -- 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package provides users with the ability to use a custom routine for
+ --  connecting hardware interrupts for VxWorks environments that support the
+ --  capability to handle them. The custom routine must have the same profile
+ --  as the VxWorks intConnect() routine.
+ 
+ with System;
+ 
+ package Interfaces.VxWorks.Int_Connection is
+ 
+    type Interrupt_Connector is access function
+      (Vector    : Interrupt_Vector;
+       Handler   : VOIDFUNCPTR;
+       Parameter : System.Address := System.Null_Address) return STATUS;
+    pragma Convention (C, Interrupt_Connector);
+    --  Convention C for compatibility with intConnect(). User alternatives are
+    --  likely to be imports of C routines anyway.
+ 
+    procedure Connect (Connector : Interrupt_Connector);
+    --  Set user-defined interrupt connection routine. Must precede calls to
+    --  Ada.Interrupts.Attach_Handler, or the default connector from
+    --  System.OS_Interface (or Interfaces.VxWorks for Ravenscar Cert) will be
+    --  used. Can be called multiple times to change the connection routine for
+    --  subsequent calls to Attach_Handler.
+ 
+ end Interfaces.VxWorks.Int_Connection;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-inmaop.ads gcc-8.1.0/gcc/ada/libgnarl/s-inmaop.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-inmaop.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-inmaop.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,125 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                  SYSTEM.INTERRUPT_MANAGEMENT.OPERATIONS                  --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ package System.Interrupt_Management.Operations is
+ 
+    procedure Thread_Block_Interrupt (Interrupt : Interrupt_ID);
+    pragma Inline (Thread_Block_Interrupt);
+    --  Mask the calling thread for the interrupt
+ 
+    procedure Thread_Unblock_Interrupt (Interrupt : Interrupt_ID);
+    pragma Inline (Thread_Unblock_Interrupt);
+    --  Unmask the calling thread for the interrupt
+ 
+    procedure Set_Interrupt_Mask (Mask : access Interrupt_Mask);
+    --  Set the interrupt mask of the calling thread
+ 
+    procedure Set_Interrupt_Mask
+      (Mask  : access Interrupt_Mask;
+       OMask : access Interrupt_Mask);
+    pragma Inline (Set_Interrupt_Mask);
+    --  Set the interrupt mask of the calling thread while returning the
+    --  previous Mask.
+ 
+    procedure Get_Interrupt_Mask (Mask : access Interrupt_Mask);
+    pragma Inline (Get_Interrupt_Mask);
+    --  Get the interrupt mask of the calling thread
+ 
+    function Interrupt_Wait (Mask : access Interrupt_Mask) return Interrupt_ID;
+    pragma Inline (Interrupt_Wait);
+    --  Wait for the interrupts specified in Mask and return
+    --  the interrupt received. Return 0 upon error.
+ 
+    procedure Install_Default_Action (Interrupt : Interrupt_ID);
+    pragma Inline (Install_Default_Action);
+    --  Set the sigaction of the Interrupt to default (SIG_DFL)
+ 
+    procedure Install_Ignore_Action (Interrupt : Interrupt_ID);
+    pragma Inline (Install_Ignore_Action);
+    --  Set the sigaction of the Interrupt to ignore (SIG_IGN)
+ 
+    procedure Fill_Interrupt_Mask (Mask : access Interrupt_Mask);
+    pragma Inline (Fill_Interrupt_Mask);
+    --  Get a Interrupt_Mask with all the interrupt masked
+ 
+    procedure Empty_Interrupt_Mask (Mask : access Interrupt_Mask);
+    pragma Inline (Empty_Interrupt_Mask);
+    --  Get a Interrupt_Mask with all the interrupt unmasked
+ 
+    procedure Add_To_Interrupt_Mask
+      (Mask      : access Interrupt_Mask;
+       Interrupt : Interrupt_ID);
+    pragma Inline (Add_To_Interrupt_Mask);
+    --  Mask the given interrupt in the Interrupt_Mask
+ 
+    procedure Delete_From_Interrupt_Mask
+      (Mask      : access Interrupt_Mask;
+       Interrupt : Interrupt_ID);
+    pragma Inline (Delete_From_Interrupt_Mask);
+    --  Unmask the given interrupt in the Interrupt_Mask
+ 
+    function Is_Member
+      (Mask      : access Interrupt_Mask;
+       Interrupt : Interrupt_ID) return Boolean;
+    pragma Inline (Is_Member);
+    --  See if a given interrupt is masked in the Interrupt_Mask
+ 
+    procedure Copy_Interrupt_Mask (X : out Interrupt_Mask; Y : Interrupt_Mask);
+    pragma Inline (Copy_Interrupt_Mask);
+    --  Assignment needed for limited private type Interrupt_Mask
+ 
+    procedure Interrupt_Self_Process (Interrupt : Interrupt_ID);
+    pragma Inline (Interrupt_Self_Process);
+    --  Raise an Interrupt process-level
+ 
+    procedure Setup_Interrupt_Mask;
+    --  Mask Environment task for all signals
+    --  This function should be called by the elaboration of System.Interrupt
+    --  to set up proper signal masking in all tasks.
+ 
+    --  The following objects serve as constants, but are initialized in the
+    --  body to aid portability. These should be in System.Interrupt_Management
+    --  but since Interrupt_Mask is private type we cannot have them declared
+    --  there.
+ 
+    --  Why not make these deferred constants that are initialized using
+    --  function calls in the private part???
+ 
+    Environment_Mask : aliased Interrupt_Mask;
+    --  This mask represents the mask of Environment task when this package is
+    --  being elaborated, except the signals being forced to be unmasked by RTS
+    --  (items in Keep_Unmasked)
+ 
+    All_Tasks_Mask : aliased Interrupt_Mask;
+    --  This is the mask of all tasks created in RTS. Only one task in RTS
+    --  is responsible for masking/unmasking signals (see s-interr.adb).
+ 
+ end System.Interrupt_Management.Operations;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-inmaop__dummy.adb gcc-8.1.0/gcc/ada/libgnarl/s-inmaop__dummy.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-inmaop__dummy.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-inmaop__dummy.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,201 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                  SYSTEM.INTERRUPT_MANAGEMENT.OPERATIONS                  --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is a NO tasking version of this package
+ 
+ package body System.Interrupt_Management.Operations is
+ 
+    --  Turn off warnings since many unused formals
+ 
+    pragma Warnings (Off);
+ 
+    ----------------------------
+    -- Thread_Block_Interrupt --
+    ----------------------------
+ 
+    procedure Thread_Block_Interrupt
+      (Interrupt : Interrupt_ID)
+    is
+    begin
+       null;
+    end Thread_Block_Interrupt;
+ 
+    ------------------------------
+    -- Thread_Unblock_Interrupt --
+    ------------------------------
+ 
+    procedure Thread_Unblock_Interrupt
+      (Interrupt : Interrupt_ID)
+    is
+    begin
+       null;
+    end Thread_Unblock_Interrupt;
+ 
+    ------------------------
+    -- Set_Interrupt_Mask --
+    ------------------------
+ 
+    procedure Set_Interrupt_Mask (Mask : access Interrupt_Mask) is
+    begin
+       null;
+    end Set_Interrupt_Mask;
+ 
+    procedure Set_Interrupt_Mask
+      (Mask  : access Interrupt_Mask;
+       OMask : access Interrupt_Mask) is
+    begin
+       null;
+    end Set_Interrupt_Mask;
+ 
+    ------------------------
+    -- Get_Interrupt_Mask --
+    ------------------------
+ 
+    procedure Get_Interrupt_Mask (Mask : access Interrupt_Mask) is
+    begin
+       null;
+    end Get_Interrupt_Mask;
+ 
+    --------------------
+    -- Interrupt_Wait --
+    --------------------
+ 
+    function Interrupt_Wait
+      (Mask : access Interrupt_Mask)
+       return Interrupt_ID
+    is
+    begin
+       return 0;
+    end Interrupt_Wait;
+ 
+    ----------------------------
+    -- Install_Default_Action --
+    ----------------------------
+ 
+    procedure Install_Default_Action (Interrupt : Interrupt_ID) is
+    begin
+       null;
+    end Install_Default_Action;
+ 
+    ---------------------------
+    -- Install_Ignore_Action --
+    ---------------------------
+ 
+    procedure Install_Ignore_Action (Interrupt : Interrupt_ID) is
+    begin
+       null;
+    end Install_Ignore_Action;
+ 
+    -------------------------
+    -- Fill_Interrupt_Mask --
+    -------------------------
+ 
+    procedure Fill_Interrupt_Mask (Mask : access Interrupt_Mask) is
+    begin
+       null;
+    end Fill_Interrupt_Mask;
+ 
+    --------------------------
+    -- Empty_Interrupt_Mask --
+    --------------------------
+ 
+    procedure Empty_Interrupt_Mask (Mask : access Interrupt_Mask) is
+    begin
+       null;
+    end Empty_Interrupt_Mask;
+ 
+    ---------------------------
+    -- Add_To_Interrupt_Mask --
+    ---------------------------
+ 
+    procedure Add_To_Interrupt_Mask
+      (Mask      : access Interrupt_Mask;
+       Interrupt : Interrupt_ID)
+    is
+    begin
+       null;
+    end Add_To_Interrupt_Mask;
+ 
+    --------------------------------
+    -- Delete_From_Interrupt_Mask --
+    --------------------------------
+ 
+    procedure Delete_From_Interrupt_Mask
+      (Mask      : access Interrupt_Mask;
+       Interrupt : Interrupt_ID)
+    is
+    begin
+       null;
+    end Delete_From_Interrupt_Mask;
+ 
+    ---------------
+    -- Is_Member --
+    ---------------
+ 
+    function Is_Member
+      (Mask      : access Interrupt_Mask;
+       Interrupt : Interrupt_ID) return Boolean
+    is
+    begin
+       return False;
+    end Is_Member;
+ 
+    -------------------------
+    -- Copy_Interrupt_Mask --
+    -------------------------
+ 
+    procedure Copy_Interrupt_Mask
+      (X : out Interrupt_Mask;
+       Y : Interrupt_Mask)
+    is
+    begin
+       X := Y;
+    end Copy_Interrupt_Mask;
+ 
+    -------------------------
+    -- Interrupt_Self_Process --
+    -------------------------
+ 
+    procedure Interrupt_Self_Process (Interrupt : Interrupt_ID) is
+    begin
+       null;
+    end Interrupt_Self_Process;
+ 
+    --------------------------
+    -- Setup_Interrupt_Mask --
+    --------------------------
+ 
+    procedure Setup_Interrupt_Mask is
+    begin
+       null;
+    end Setup_Interrupt_Mask;
+ 
+ end System.Interrupt_Management.Operations;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-inmaop__posix.adb gcc-8.1.0/gcc/ada/libgnarl/s-inmaop__posix.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-inmaop__posix.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-inmaop__posix.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,336 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                  GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                --
+ --                                                                          --
+ --                  SYSTEM.INTERRUPT_MANAGEMENT.OPERATIONS                  --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --             Copyright (C) 1991-2017, Florida State University            --
+ --                     Copyright (C) 1995-2018, AdaCore                     --
+ --                                                                          --
+ -- GNAT is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is a POSIX-like version of this package
+ 
+ --  Note: this file can only be used for POSIX compliant systems
+ 
+ with Interfaces.C;
+ 
+ with System.OS_Interface;
+ with System.Storage_Elements;
+ 
+ package body System.Interrupt_Management.Operations is
+ 
+    use Interfaces.C;
+    use System.OS_Interface;
+ 
+    ---------------------
+    -- Local Variables --
+    ---------------------
+ 
+    Initial_Action : array (Signal) of aliased struct_sigaction;
+ 
+    Default_Action : aliased struct_sigaction;
+    pragma Warnings (Off, Default_Action);
+ 
+    Ignore_Action : aliased struct_sigaction;
+ 
+    ----------------------------
+    -- Thread_Block_Interrupt --
+    ----------------------------
+ 
+    procedure Thread_Block_Interrupt
+      (Interrupt : Interrupt_ID)
+    is
+       Result : Interfaces.C.int;
+       Mask   : aliased sigset_t;
+    begin
+       Result := sigemptyset (Mask'Access);
+       pragma Assert (Result = 0);
+       Result := sigaddset (Mask'Access, Signal (Interrupt));
+       pragma Assert (Result = 0);
+       Result := pthread_sigmask (SIG_BLOCK, Mask'Access, null);
+       pragma Assert (Result = 0);
+    end Thread_Block_Interrupt;
+ 
+    ------------------------------
+    -- Thread_Unblock_Interrupt --
+    ------------------------------
+ 
+    procedure Thread_Unblock_Interrupt
+      (Interrupt : Interrupt_ID)
+    is
+       Mask   : aliased sigset_t;
+       Result : Interfaces.C.int;
+    begin
+       Result := sigemptyset (Mask'Access);
+       pragma Assert (Result = 0);
+       Result := sigaddset (Mask'Access, Signal (Interrupt));
+       pragma Assert (Result = 0);
+       Result := pthread_sigmask (SIG_UNBLOCK, Mask'Access, null);
+       pragma Assert (Result = 0);
+    end Thread_Unblock_Interrupt;
+ 
+    ------------------------
+    -- Set_Interrupt_Mask --
+    ------------------------
+ 
+    procedure Set_Interrupt_Mask (Mask : access Interrupt_Mask) is
+       Result : Interfaces.C.int;
+    begin
+       Result := pthread_sigmask (SIG_SETMASK, Mask, null);
+       pragma Assert (Result = 0);
+    end Set_Interrupt_Mask;
+ 
+    procedure Set_Interrupt_Mask
+      (Mask  : access Interrupt_Mask;
+       OMask : access Interrupt_Mask)
+    is
+       Result  : Interfaces.C.int;
+    begin
+       Result := pthread_sigmask (SIG_SETMASK, Mask, OMask);
+       pragma Assert (Result = 0);
+    end Set_Interrupt_Mask;
+ 
+    ------------------------
+    -- Get_Interrupt_Mask --
+    ------------------------
+ 
+    procedure Get_Interrupt_Mask (Mask : access Interrupt_Mask) is
+       Result : Interfaces.C.int;
+    begin
+       Result := pthread_sigmask (SIG_SETMASK, null, Mask);
+       pragma Assert (Result = 0);
+    end Get_Interrupt_Mask;
+ 
+    --------------------
+    -- Interrupt_Wait --
+    --------------------
+ 
+    function Interrupt_Wait
+      (Mask : access Interrupt_Mask) return Interrupt_ID
+    is
+       Result : Interfaces.C.int;
+       Sig    : aliased Signal;
+ 
+    begin
+       Result := sigwait (Mask, Sig'Access);
+ 
+       if Result /= 0 then
+          return 0;
+       end if;
+ 
+       return Interrupt_ID (Sig);
+    end Interrupt_Wait;
+ 
+    ----------------------------
+    -- Install_Default_Action --
+    ----------------------------
+ 
+    procedure Install_Default_Action (Interrupt : Interrupt_ID) is
+       Result : Interfaces.C.int;
+    begin
+       Result := sigaction
+         (Signal (Interrupt),
+          Initial_Action (Signal (Interrupt))'Access, null);
+       pragma Assert (Result = 0);
+    end Install_Default_Action;
+ 
+    ---------------------------
+    -- Install_Ignore_Action --
+    ---------------------------
+ 
+    procedure Install_Ignore_Action (Interrupt : Interrupt_ID) is
+       Result : Interfaces.C.int;
+    begin
+       Result := sigaction (Signal (Interrupt), Ignore_Action'Access, null);
+       pragma Assert (Result = 0);
+    end Install_Ignore_Action;
+ 
+    -------------------------
+    -- Fill_Interrupt_Mask --
+    -------------------------
+ 
+    procedure Fill_Interrupt_Mask (Mask : access Interrupt_Mask) is
+       Result : Interfaces.C.int;
+    begin
+       Result := sigfillset (Mask);
+       pragma Assert (Result = 0);
+    end Fill_Interrupt_Mask;
+ 
+    --------------------------
+    -- Empty_Interrupt_Mask --
+    --------------------------
+ 
+    procedure Empty_Interrupt_Mask (Mask : access Interrupt_Mask) is
+       Result : Interfaces.C.int;
+    begin
+       Result := sigemptyset (Mask);
+       pragma Assert (Result = 0);
+    end Empty_Interrupt_Mask;
+ 
+    ---------------------------
+    -- Add_To_Interrupt_Mask --
+    ---------------------------
+ 
+    procedure Add_To_Interrupt_Mask
+      (Mask      : access Interrupt_Mask;
+       Interrupt : Interrupt_ID)
+    is
+       Result : Interfaces.C.int;
+    begin
+       Result := sigaddset (Mask, Signal (Interrupt));
+       pragma Assert (Result = 0);
+    end Add_To_Interrupt_Mask;
+ 
+    --------------------------------
+    -- Delete_From_Interrupt_Mask --
+    --------------------------------
+ 
+    procedure Delete_From_Interrupt_Mask
+      (Mask      : access Interrupt_Mask;
+       Interrupt : Interrupt_ID)
+    is
+       Result : Interfaces.C.int;
+    begin
+       Result := sigdelset (Mask, Signal (Interrupt));
+       pragma Assert (Result = 0);
+    end Delete_From_Interrupt_Mask;
+ 
+    ---------------
+    -- Is_Member --
+    ---------------
+ 
+    function Is_Member
+      (Mask      : access Interrupt_Mask;
+       Interrupt : Interrupt_ID) return Boolean
+    is
+       Result : Interfaces.C.int;
+    begin
+       Result := sigismember (Mask, Signal (Interrupt));
+       pragma Assert (Result = 0 or else Result = 1);
+       return Result = 1;
+    end Is_Member;
+ 
+    -------------------------
+    -- Copy_Interrupt_Mask --
+    -------------------------
+ 
+    procedure Copy_Interrupt_Mask
+      (X : out Interrupt_Mask;
+       Y : Interrupt_Mask) is
+    begin
+       X := Y;
+    end Copy_Interrupt_Mask;
+ 
+    ----------------------------
+    -- Interrupt_Self_Process --
+    ----------------------------
+ 
+    procedure Interrupt_Self_Process (Interrupt : Interrupt_ID) is
+       Result : Interfaces.C.int;
+    begin
+       Result := kill (getpid, Signal (Interrupt));
+       pragma Assert (Result = 0);
+    end Interrupt_Self_Process;
+ 
+    --------------------------
+    -- Setup_Interrupt_Mask --
+    --------------------------
+ 
+    procedure Setup_Interrupt_Mask is
+    begin
+       --  Mask task for all signals. The original mask of the Environment task
+       --  will be recovered by Interrupt_Manager task during the elaboration
+       --  of s-interr.adb.
+ 
+       Set_Interrupt_Mask (All_Tasks_Mask'Access);
+    end Setup_Interrupt_Mask;
+ 
+ begin
+    declare
+       mask    : aliased sigset_t;
+       allmask : aliased sigset_t;
+       Result  : Interfaces.C.int;
+ 
+    begin
+       Interrupt_Management.Initialize;
+ 
+       for Sig in 1 .. Signal'Last loop
+          Result := sigaction
+            (Sig, null, Initial_Action (Sig)'Access);
+ 
+          --  ??? [assert 1]
+          --  we can't check Result here since sigaction will fail on
+          --  SIGKILL, SIGSTOP, and possibly other signals
+          --  pragma Assert (Result = 0);
+ 
+       end loop;
+ 
+       --  Setup the masks to be exported
+ 
+       Result := sigemptyset (mask'Access);
+       pragma Assert (Result = 0);
+ 
+       Result := sigfillset (allmask'Access);
+       pragma Assert (Result = 0);
+ 
+       Default_Action.sa_flags   := 0;
+       Default_Action.sa_mask    := mask;
+       Default_Action.sa_handler :=
+         Storage_Elements.To_Address
+           (Storage_Elements.Integer_Address (SIG_DFL));
+ 
+       Ignore_Action.sa_flags   := 0;
+       Ignore_Action.sa_mask    := mask;
+       Ignore_Action.sa_handler :=
+         Storage_Elements.To_Address
+           (Storage_Elements.Integer_Address (SIG_IGN));
+ 
+       for J in Interrupt_ID loop
+          if Keep_Unmasked (J) then
+             Result := sigaddset (mask'Access, Signal (J));
+             pragma Assert (Result = 0);
+             Result := sigdelset (allmask'Access, Signal (J));
+             pragma Assert (Result = 0);
+          end if;
+       end loop;
+ 
+       --  The Keep_Unmasked signals should be unmasked for Environment task
+ 
+       Result := pthread_sigmask (SIG_UNBLOCK, mask'Access, null);
+       pragma Assert (Result = 0);
+ 
+       --  Get the signal mask of the Environment Task
+ 
+       Result := pthread_sigmask (SIG_SETMASK, null, mask'Access);
+       pragma Assert (Result = 0);
+ 
+       --  Setup the constants exported
+ 
+       Environment_Mask := Interrupt_Mask (mask);
+ 
+       All_Tasks_Mask := Interrupt_Mask (allmask);
+    end;
+ 
+ end System.Interrupt_Management.Operations;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-inmaop__vxworks.adb gcc-8.1.0/gcc/ada/libgnarl/s-inmaop__vxworks.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-inmaop__vxworks.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-inmaop__vxworks.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,261 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                  GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                --
+ --                                                                          --
+ --                   SYSTEM.INTERRUPT_MANAGEMENT.OPERATIONS                 --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --             Copyright (C) 1991-2017, Florida State University            --
+ --                     Copyright (C) 1995-2018, AdaCore                     --
+ --                                                                          --
+ -- GNAT is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is a VxWorks version of this package. Many operations are null as this
+ --  package supports the use of Ada interrupt handling facilities for signals,
+ --  while those facilities are used for hardware interrupts on these targets.
+ 
+ with Ada.Exceptions;
+ 
+ with Interfaces.C;
+ 
+ with System.OS_Interface;
+ 
+ package body System.Interrupt_Management.Operations is
+ 
+    use Ada.Exceptions;
+    use Interfaces.C;
+    use System.OS_Interface;
+ 
+    ----------------------------
+    -- Thread_Block_Interrupt --
+    ----------------------------
+ 
+    procedure Thread_Block_Interrupt
+      (Interrupt : Interrupt_ID)
+    is
+       pragma Unreferenced (Interrupt);
+    begin
+       Raise_Exception
+         (Program_Error'Identity,
+          "Thread_Block_Interrupt unimplemented");
+    end Thread_Block_Interrupt;
+ 
+    ------------------------------
+    -- Thread_Unblock_Interrupt --
+    ------------------------------
+ 
+    procedure Thread_Unblock_Interrupt
+      (Interrupt : Interrupt_ID)
+    is
+       pragma Unreferenced (Interrupt);
+    begin
+       Raise_Exception
+         (Program_Error'Identity,
+          "Thread_Unblock_Interrupt unimplemented");
+    end Thread_Unblock_Interrupt;
+ 
+    ------------------------
+    -- Set_Interrupt_Mask --
+    ------------------------
+ 
+    procedure Set_Interrupt_Mask (Mask : access Interrupt_Mask) is
+       pragma Unreferenced (Mask);
+    begin
+       null;
+    end Set_Interrupt_Mask;
+ 
+    procedure Set_Interrupt_Mask
+      (Mask  : access Interrupt_Mask;
+       OMask : access Interrupt_Mask)
+    is
+       pragma Unreferenced (Mask, OMask);
+    begin
+       Raise_Exception
+         (Program_Error'Identity,
+          "Set_Interrupt_Mask unimplemented");
+    end Set_Interrupt_Mask;
+ 
+    ------------------------
+    -- Get_Interrupt_Mask --
+    ------------------------
+ 
+    procedure Get_Interrupt_Mask (Mask : access Interrupt_Mask) is
+       pragma Unreferenced (Mask);
+    begin
+       Raise_Exception
+         (Program_Error'Identity,
+          "Get_Interrupt_Mask unimplemented");
+    end Get_Interrupt_Mask;
+ 
+    --------------------
+    -- Interrupt_Wait --
+    --------------------
+ 
+    function Interrupt_Wait
+      (Mask : access Interrupt_Mask) return Interrupt_ID
+    is
+       pragma Unreferenced (Mask);
+    begin
+       Raise_Exception
+         (Program_Error'Identity,
+          "Interrupt_Wait unimplemented");
+       return 0;
+    end Interrupt_Wait;
+ 
+    ----------------------------
+    -- Install_Default_Action --
+    ----------------------------
+ 
+    procedure Install_Default_Action (Interrupt : Interrupt_ID) is
+       pragma Unreferenced (Interrupt);
+    begin
+       Raise_Exception
+         (Program_Error'Identity,
+          "Install_Default_Action unimplemented");
+    end Install_Default_Action;
+ 
+    ---------------------------
+    -- Install_Ignore_Action --
+    ---------------------------
+ 
+    procedure Install_Ignore_Action (Interrupt : Interrupt_ID) is
+       pragma Unreferenced (Interrupt);
+    begin
+       Raise_Exception
+         (Program_Error'Identity,
+          "Install_Ignore_Action unimplemented");
+    end Install_Ignore_Action;
+ 
+    -------------------------
+    -- Fill_Interrupt_Mask --
+    -------------------------
+ 
+    procedure Fill_Interrupt_Mask (Mask : access Interrupt_Mask) is
+       pragma Unreferenced (Mask);
+    begin
+       Raise_Exception
+         (Program_Error'Identity,
+          "Fill_Interrupt_Mask unimplemented");
+    end Fill_Interrupt_Mask;
+ 
+    --------------------------
+    -- Empty_Interrupt_Mask --
+    --------------------------
+ 
+    procedure Empty_Interrupt_Mask (Mask : access Interrupt_Mask) is
+       pragma Unreferenced (Mask);
+    begin
+       Raise_Exception
+         (Program_Error'Identity,
+          "Empty_Interrupt_Mask unimplemented");
+    end Empty_Interrupt_Mask;
+ 
+    ---------------------------
+    -- Add_To_Interrupt_Mask --
+    ---------------------------
+ 
+    procedure Add_To_Interrupt_Mask
+      (Mask      : access Interrupt_Mask;
+       Interrupt : Interrupt_ID)
+    is
+       pragma Unreferenced (Mask, Interrupt);
+    begin
+       Raise_Exception
+         (Program_Error'Identity,
+          "Add_To_Interrupt_Mask unimplemented");
+    end Add_To_Interrupt_Mask;
+ 
+    --------------------------------
+    -- Delete_From_Interrupt_Mask --
+    --------------------------------
+ 
+    procedure Delete_From_Interrupt_Mask
+      (Mask      : access Interrupt_Mask;
+       Interrupt : Interrupt_ID)
+    is
+       pragma Unreferenced (Mask, Interrupt);
+    begin
+       Raise_Exception
+         (Program_Error'Identity,
+          "Delete_From_Interrupt_Mask unimplemented");
+    end Delete_From_Interrupt_Mask;
+ 
+    ---------------
+    -- Is_Member --
+    ---------------
+ 
+    function Is_Member
+      (Mask      : access Interrupt_Mask;
+       Interrupt : Interrupt_ID) return Boolean
+    is
+       pragma Unreferenced (Mask, Interrupt);
+    begin
+       Raise_Exception
+         (Program_Error'Identity,
+          "Is_Member unimplemented");
+       return False;
+    end Is_Member;
+ 
+    -------------------------
+    -- Copy_Interrupt_Mask --
+    -------------------------
+ 
+    procedure Copy_Interrupt_Mask
+      (X : out Interrupt_Mask;
+       Y : Interrupt_Mask) is
+       pragma Unreferenced (X, Y);
+    begin
+       Raise_Exception
+         (Program_Error'Identity,
+          "Copy_Interrupt_Mask unimplemented");
+    end Copy_Interrupt_Mask;
+ 
+    ----------------------------
+    -- Interrupt_Self_Process --
+    ----------------------------
+ 
+    procedure Interrupt_Self_Process (Interrupt : Interrupt_ID) is
+       Result : Interfaces.C.int;
+    begin
+       Result := kill (getpid, Signal (Interrupt));
+       pragma Assert (Result = 0);
+    end Interrupt_Self_Process;
+ 
+    --------------------------
+    -- Setup_Interrupt_Mask --
+    --------------------------
+ 
+    procedure Setup_Interrupt_Mask is
+    begin
+       --  Nothing to be done. Ada interrupt facilities on VxWorks do not use
+       --  signals but hardware interrupts. Therefore, interrupt management does
+       --  not need anything related to signal masking. Note that this procedure
+       --  cannot raise an exception (as some others in this package) because
+       --  the generic implementation of the Timer_Server and timing events make
+       --  explicit calls to this routine to make ensure proper signal masking
+       --  on targets needed that.
+ 
+       null;
+    end Setup_Interrupt_Mask;
+ 
+ end System.Interrupt_Management.Operations;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-interr.adb gcc-8.1.0/gcc/ada/libgnarl/s-interr.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-interr.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-interr.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,1472 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                     S Y S T E M . I N T E R R U P T S                    --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --         Copyright (C) 1992-2018, Free Software Foundation, Inc.          --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Invariants:
+ 
+ --  All user-handleable interrupts are masked at all times in all tasks/threads
+ --  except possibly for the Interrupt_Manager task.
+ 
+ --  When a user task wants to achieve masking/unmasking an interrupt, it must
+ --  call Block_Interrupt/Unblock_Interrupt, which will have the effect of
+ --  unmasking/masking the interrupt in the Interrupt_Manager task.
+ 
+ --  Note : Direct calls to sigaction, sigprocmask, pthread_sigsetmask or any
+ --  other low-level interface that changes the interrupt action or
+ --  interrupt mask needs a careful thought.
+ 
+ --  One may achieve the effect of system calls first masking RTS blocked
+ --  (by calling Block_Interrupt) for the interrupt under consideration.
+ --  This will make all the tasks in RTS blocked for the Interrupt.
+ 
+ --  Once we associate a Server_Task with an interrupt, the task never goes
+ --  away, and we never remove the association.
+ 
+ --  There is no more than one interrupt per Server_Task and no more than one
+ --  Server_Task per interrupt.
+ 
+ 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
+ 
+    use Parameters;
+    use Tasking;
+ 
+    package POP renames System.Task_Primitives.Operations;
+    package PIO renames System.Task_Primitives.Interrupt_Operations;
+    package IMNG renames System.Interrupt_Management;
+    package IMOP renames System.Interrupt_Management.Operations;
+ 
+    function To_System is new Ada.Unchecked_Conversion
+      (Ada.Task_Identification.Task_Id, Task_Id);
+ 
+    -----------------
+    -- Local Tasks --
+    -----------------
+ 
+    --  WARNING: System.Tasking.Stages performs calls to this task with
+    --  low-level constructs. Do not change this spec without synchronizing it.
+ 
+    task Interrupt_Manager is
+       entry Detach_Interrupt_Entries (T : Task_Id);
+ 
+       entry Initialize (Mask : IMNG.Interrupt_Mask);
+ 
+       entry Attach_Handler
+         (New_Handler : Parameterless_Handler;
+          Interrupt   : Interrupt_ID;
+          Static      : Boolean;
+          Restoration : Boolean := False);
+ 
+       entry Exchange_Handler
+         (Old_Handler : out Parameterless_Handler;
+          New_Handler : Parameterless_Handler;
+          Interrupt   : Interrupt_ID;
+          Static      : Boolean);
+ 
+       entry Detach_Handler
+         (Interrupt   : Interrupt_ID;
+          Static      : Boolean);
+ 
+       entry Bind_Interrupt_To_Entry
+         (T         : Task_Id;
+          E         : Task_Entry_Index;
+          Interrupt : Interrupt_ID);
+ 
+       entry Block_Interrupt (Interrupt : Interrupt_ID);
+ 
+       entry Unblock_Interrupt (Interrupt : Interrupt_ID);
+ 
+       entry Ignore_Interrupt (Interrupt : Interrupt_ID);
+ 
+       entry Unignore_Interrupt (Interrupt : Interrupt_ID);
+ 
+       pragma Interrupt_Priority (System.Interrupt_Priority'Last);
+    end Interrupt_Manager;
+ 
+    task type Server_Task (Interrupt : Interrupt_ID) is
+       pragma Priority (System.Interrupt_Priority'Last);
+       --  Note: the above pragma Priority is strictly speaking improper since
+       --  it is outside the range of allowed priorities, but the compiler
+       --  treats system units specially and does not apply this range checking
+       --  rule to system units.
+ 
+    end Server_Task;
+ 
+    type Server_Task_Access is access Server_Task;
+ 
+    -------------------------------
+    -- Local Types and Variables --
+    -------------------------------
+ 
+    type Entry_Assoc is record
+       T : Task_Id;
+       E : Task_Entry_Index;
+    end record;
+ 
+    type Handler_Assoc is record
+       H      : Parameterless_Handler;
+       Static : Boolean;   --  Indicates static binding;
+    end record;
+ 
+    User_Handler : array (Interrupt_ID'Range) of Handler_Assoc :=
+                     (others => (null, Static => False));
+    pragma Volatile_Components (User_Handler);
+    --  Holds the protected procedure handler (if any) and its Static
+    --  information for each interrupt. A handler is a Static one if it is
+    --  specified through the pragma Attach_Handler. Attach_Handler. Otherwise,
+    --  not static)
+ 
+    User_Entry : array (Interrupt_ID'Range) of Entry_Assoc :=
+                   (others => (T => Null_Task, E => Null_Task_Entry));
+    pragma Volatile_Components (User_Entry);
+    --  Holds the task and entry index (if any) for each interrupt
+ 
+    Blocked : array (Interrupt_ID'Range) of Boolean := (others => False);
+    pragma Atomic_Components (Blocked);
+    --  True iff the corresponding interrupt is blocked in the process level
+ 
+    Ignored : array (Interrupt_ID'Range) of Boolean := (others => False);
+    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
+    --  decide whether to create a new Server_Task.
+ 
+    --  Type and Head, Tail of the list containing Registered Interrupt
+    --  Handlers. These definitions are used to register the handlers
+    --  specified by the pragma Interrupt_Handler.
+ 
+    type Registered_Handler;
+    type R_Link is access all Registered_Handler;
+ 
+    type Registered_Handler is record
+       H    : System.Address := System.Null_Address;
+       Next : R_Link := null;
+    end record;
+ 
+    Registered_Handler_Head : R_Link := null;
+    Registered_Handler_Tail : R_Link := null;
+ 
+    Access_Hold : Server_Task_Access;
+    --  Variable used to allocate Server_Task using "new"
+ 
+    -----------------------
+    -- Local Subprograms --
+    -----------------------
+ 
+    function Is_Registered (Handler : Parameterless_Handler) return Boolean;
+    --  See if the Handler has been "pragma"ed using Interrupt_Handler. Always
+    --  consider a null handler as registered.
+ 
+    --------------------
+    -- Attach_Handler --
+    --------------------
+ 
+    --  Calling this procedure with New_Handler = null and Static = True means
+    --  we want to detach the current handler regardless of the previous
+    --  handler's binding status (i.e. do not care if it is a dynamic or static
+    --  handler).
+ 
+    --  This option is needed so that during the finalization of a PO, we can
+    --  detach handlers attached through pragma Attach_Handler.
+ 
+    procedure Attach_Handler
+      (New_Handler : Parameterless_Handler;
+       Interrupt   : Interrupt_ID;
+       Static      : Boolean := False)
+    is
+    begin
+       if Is_Reserved (Interrupt) then
+          raise Program_Error with
+            "interrupt" & Interrupt_ID'Image (Interrupt) & " is reserved";
+       end if;
+ 
+       Interrupt_Manager.Attach_Handler (New_Handler, Interrupt, Static);
+ 
+    end Attach_Handler;
+ 
+    -----------------------------
+    -- Bind_Interrupt_To_Entry --
+    -----------------------------
+ 
+    --  This procedure raises a Program_Error if it tries to bind an interrupt
+    --  to which an Entry or a Procedure is already bound.
+ 
+    procedure Bind_Interrupt_To_Entry
+      (T       : Task_Id;
+       E       : Task_Entry_Index;
+       Int_Ref : System.Address)
+    is
+       Interrupt : constant Interrupt_ID :=
+                     Interrupt_ID (Storage_Elements.To_Integer (Int_Ref));
+ 
+    begin
+       if Is_Reserved (Interrupt) then
+          raise Program_Error with
+            "interrupt" & Interrupt_ID'Image (Interrupt) & " is reserved";
+       end if;
+ 
+       Interrupt_Manager.Bind_Interrupt_To_Entry (T, E, Interrupt);
+    end Bind_Interrupt_To_Entry;
+ 
+    ---------------------
+    -- Block_Interrupt --
+    ---------------------
+ 
+    procedure Block_Interrupt (Interrupt : Interrupt_ID) is
+    begin
+       if Is_Reserved (Interrupt) then
+          raise Program_Error with
+            "interrupt" & Interrupt_ID'Image (Interrupt) & " is reserved";
+       end if;
+ 
+       Interrupt_Manager.Block_Interrupt (Interrupt);
+    end Block_Interrupt;
+ 
+    ---------------------
+    -- Current_Handler --
+    ---------------------
+ 
+    function Current_Handler
+      (Interrupt : Interrupt_ID) return Parameterless_Handler
+    is
+    begin
+       if Is_Reserved (Interrupt) then
+          raise Program_Error with
+            "interrupt" & Interrupt_ID'Image (Interrupt) & " is reserved";
+       end if;
+ 
+       --  ??? Since Parameterless_Handler is not Atomic, the current
+       --  implementation is wrong. We need a new service in Interrupt_Manager
+       --  to ensure atomicity.
+ 
+       return User_Handler (Interrupt).H;
+    end Current_Handler;
+ 
+    --------------------
+    -- Detach_Handler --
+    --------------------
+ 
+    --  Calling this procedure with Static = True means we want to Detach the
+    --  current handler regardless of the previous handler's binding status
+    --  (i.e. do not care if it is a dynamic or static handler).
+ 
+    --  This option is needed so that during the finalization of a PO, we can
+    --  detach handlers attached through pragma Attach_Handler.
+ 
+    procedure Detach_Handler
+      (Interrupt : Interrupt_ID;
+       Static    : Boolean := False)
+    is
+    begin
+       if Is_Reserved (Interrupt) then
+          raise Program_Error with
+            "interrupt" & Interrupt_ID'Image (Interrupt) & " is reserved";
+       end if;
+ 
+       Interrupt_Manager.Detach_Handler (Interrupt, Static);
+    end Detach_Handler;
+ 
+    ------------------------------
+    -- Detach_Interrupt_Entries --
+    ------------------------------
+ 
+    procedure Detach_Interrupt_Entries (T : Task_Id) is
+    begin
+       Interrupt_Manager.Detach_Interrupt_Entries (T);
+    end Detach_Interrupt_Entries;
+ 
+    ----------------------
+    -- Exchange_Handler --
+    ----------------------
+ 
+    --  Calling this procedure with New_Handler = null and Static = True means
+    --  we want to detach the current handler regardless of the previous
+    --  handler's binding status (i.e. do not care if it is a dynamic or static
+    --  handler).
+ 
+    --  This option is needed so that during the finalization of a PO, we can
+    --  detach handlers attached through pragma Attach_Handler.
+ 
+    procedure Exchange_Handler
+      (Old_Handler : out Parameterless_Handler;
+       New_Handler : Parameterless_Handler;
+       Interrupt   : Interrupt_ID;
+       Static      : Boolean := False)
+    is
+    begin
+       if Is_Reserved (Interrupt) then
+          raise Program_Error with
+            "interrupt" & Interrupt_ID'Image (Interrupt) & " is reserved";
+       end if;
+ 
+       Interrupt_Manager.Exchange_Handler
+         (Old_Handler, New_Handler, Interrupt, Static);
+    end Exchange_Handler;
+ 
+    --------------
+    -- Finalize --
+    --------------
+ 
+    procedure Finalize (Object : in out Static_Interrupt_Protection) is
+       function State
+         (Int : System.Interrupt_Management.Interrupt_ID) return Character;
+       pragma Import (C, State, "__gnat_get_interrupt_state");
+       --  Get interrupt state for interrupt number Int. Defined in init.c
+ 
+       Default : constant Character := 's';
+       --    's'   Interrupt_State pragma set state to System (use "default"
+       --           system handler)
+ 
+    begin
+       --  ??? loop to be executed only when we're not doing library level
+       --  finalization, since in this case all interrupt tasks are gone.
+ 
+       --  If the Abort_Task signal is set to system, it means that we cannot
+       --  reset interrupt handlers since this would require sending the abort
+       --  signal to the Server_Task
+ 
+       if not Interrupt_Manager'Terminated
+         and then
+           State (System.Interrupt_Management.Abort_Task_Interrupt) /= Default
+       then
+          for N in reverse Object.Previous_Handlers'Range loop
+             Interrupt_Manager.Attach_Handler
+               (New_Handler => Object.Previous_Handlers (N).Handler,
+                Interrupt   => Object.Previous_Handlers (N).Interrupt,
+                Static      => Object.Previous_Handlers (N).Static,
+                Restoration => True);
+          end loop;
+       end if;
+ 
+       Tasking.Protected_Objects.Entries.Finalize
+         (Tasking.Protected_Objects.Entries.Protection_Entries (Object));
+    end Finalize;
+ 
+    -------------------------------------
+    -- Has_Interrupt_Or_Attach_Handler --
+    -------------------------------------
+ 
+    --  Need comments as to why these always return True ???
+ 
+    function Has_Interrupt_Or_Attach_Handler
+      (Object : access Dynamic_Interrupt_Protection) return Boolean
+    is
+       pragma Unreferenced (Object);
+    begin
+       return True;
+    end Has_Interrupt_Or_Attach_Handler;
+ 
+    function Has_Interrupt_Or_Attach_Handler
+      (Object : access Static_Interrupt_Protection) return Boolean
+    is
+       pragma Unreferenced (Object);
+    begin
+       return True;
+    end Has_Interrupt_Or_Attach_Handler;
+ 
+    ----------------------
+    -- Ignore_Interrupt --
+    ----------------------
+ 
+    procedure Ignore_Interrupt (Interrupt : Interrupt_ID) is
+    begin
+       if Is_Reserved (Interrupt) then
+          raise Program_Error with
+            "interrupt" & Interrupt_ID'Image (Interrupt) & " is reserved";
+       end if;
+ 
+       Interrupt_Manager.Ignore_Interrupt (Interrupt);
+    end Ignore_Interrupt;
+ 
+    ----------------------
+    -- Install_Handlers --
+    ----------------------
+ 
+    procedure Install_Handlers
+      (Object       : access Static_Interrupt_Protection;
+       New_Handlers : New_Handler_Array)
+    is
+    begin
+       for N in New_Handlers'Range loop
+ 
+          --  We need a lock around this ???
+ 
+          Object.Previous_Handlers (N).Interrupt := New_Handlers (N).Interrupt;
+          Object.Previous_Handlers (N).Static    := User_Handler
+            (New_Handlers (N).Interrupt).Static;
+ 
+          --  We call Exchange_Handler and not directly Interrupt_Manager.
+          --  Exchange_Handler so we get the Is_Reserved check.
+ 
+          Exchange_Handler
+            (Old_Handler => Object.Previous_Handlers (N).Handler,
+             New_Handler => New_Handlers (N).Handler,
+             Interrupt   => New_Handlers (N).Interrupt,
+             Static      => True);
+       end loop;
+    end Install_Handlers;
+ 
+    ---------------------------------
+    -- Install_Restricted_Handlers --
+    ---------------------------------
+ 
+    procedure Install_Restricted_Handlers
+      (Prio     : Any_Priority;
+       Handlers : New_Handler_Array)
+    is
+       pragma Unreferenced (Prio);
+    begin
+       for N in Handlers'Range loop
+          Attach_Handler (Handlers (N).Handler, Handlers (N).Interrupt, True);
+       end loop;
+    end Install_Restricted_Handlers;
+ 
+    ----------------
+    -- Is_Blocked --
+    ----------------
+ 
+    function Is_Blocked (Interrupt : Interrupt_ID) return Boolean is
+    begin
+       if Is_Reserved (Interrupt) then
+          raise Program_Error with
+            "interrupt" & Interrupt_ID'Image (Interrupt) & " is reserved";
+       end if;
+ 
+       return Blocked (Interrupt);
+    end Is_Blocked;
+ 
+    -----------------------
+    -- Is_Entry_Attached --
+    -----------------------
+ 
+    function Is_Entry_Attached (Interrupt : Interrupt_ID) return Boolean is
+    begin
+       if Is_Reserved (Interrupt) then
+          raise Program_Error with
+            "interrupt" & Interrupt_ID'Image (Interrupt) & " is reserved";
+       end if;
+ 
+       return User_Entry (Interrupt).T /= Null_Task;
+    end Is_Entry_Attached;
+ 
+    -------------------------
+    -- Is_Handler_Attached --
+    -------------------------
+ 
+    function Is_Handler_Attached (Interrupt : Interrupt_ID) return Boolean is
+    begin
+       if Is_Reserved (Interrupt) then
+          raise Program_Error with
+            "interrupt" & Interrupt_ID'Image (Interrupt) & " is reserved";
+       end if;
+ 
+       return User_Handler (Interrupt).H /= null;
+    end Is_Handler_Attached;
+ 
+    ----------------
+    -- Is_Ignored --
+    ----------------
+ 
+    function Is_Ignored (Interrupt : Interrupt_ID) return Boolean is
+    begin
+       if Is_Reserved (Interrupt) then
+          raise Program_Error with
+            "interrupt" & Interrupt_ID'Image (Interrupt) & " is reserved";
+       end if;
+ 
+       return Ignored (Interrupt);
+    end Is_Ignored;
+ 
+    -------------------
+    -- Is_Registered --
+    -------------------
+ 
+    function Is_Registered (Handler : Parameterless_Handler) return Boolean is
+ 
+       type Fat_Ptr is record
+          Object_Addr  : System.Address;
+          Handler_Addr : System.Address;
+       end record;
+ 
+       function To_Fat_Ptr is new Ada.Unchecked_Conversion
+         (Parameterless_Handler, Fat_Ptr);
+ 
+       Ptr : R_Link;
+       Fat : Fat_Ptr;
+ 
+    begin
+       if Handler = null then
+          return True;
+       end if;
+ 
+       Fat := To_Fat_Ptr (Handler);
+ 
+       Ptr := Registered_Handler_Head;
+       while Ptr /= null loop
+          if Ptr.H = Fat.Handler_Addr then
+             return True;
+          end if;
+ 
+          Ptr := Ptr.Next;
+       end loop;
+ 
+       return False;
+    end Is_Registered;
+ 
+    -----------------
+    -- Is_Reserved --
+    -----------------
+ 
+    function Is_Reserved (Interrupt : Interrupt_ID) return Boolean is
+    begin
+       return IMNG.Reserve (IMNG.Interrupt_ID (Interrupt));
+    end Is_Reserved;
+ 
+    ---------------
+    -- Reference --
+    ---------------
+ 
+    function Reference (Interrupt : Interrupt_ID) return System.Address is
+    begin
+       if Is_Reserved (Interrupt) then
+          raise Program_Error with
+            "interrupt" & Interrupt_ID'Image (Interrupt) & " is reserved";
+       end if;
+ 
+       return Storage_Elements.To_Address
+                (Storage_Elements.Integer_Address (Interrupt));
+    end Reference;
+ 
+    ---------------------------------
+    -- Register_Interrupt_Handler  --
+    ---------------------------------
+ 
+    procedure Register_Interrupt_Handler (Handler_Addr : System.Address) is
+       New_Node_Ptr : R_Link;
+ 
+    begin
+       --  This routine registers the Handler as usable for Dynamic Interrupt
+       --  Handler. Routines attaching and detaching Handler dynamically should
+       --  first consult if the Handler is registered. A Program Error should
+       --  be raised if it is not registered.
+ 
+       --  The pragma Interrupt_Handler can only appear in the library level PO
+       --  definition and instantiation. Therefore, we do not need to implement
+       --  Unregistering operation. Neither we need to protect the queue
+       --  structure using a Lock.
+ 
+       pragma Assert (Handler_Addr /= System.Null_Address);
+ 
+       New_Node_Ptr := new Registered_Handler;
+       New_Node_Ptr.H := Handler_Addr;
+ 
+       if Registered_Handler_Head = null then
+          Registered_Handler_Head := New_Node_Ptr;
+          Registered_Handler_Tail := New_Node_Ptr;
+ 
+       else
+          Registered_Handler_Tail.Next := New_Node_Ptr;
+          Registered_Handler_Tail := New_Node_Ptr;
+       end if;
+    end Register_Interrupt_Handler;
+ 
+    -----------------------
+    -- Unblock_Interrupt --
+    -----------------------
+ 
+    procedure Unblock_Interrupt (Interrupt : Interrupt_ID) is
+    begin
+       if Is_Reserved (Interrupt) then
+          raise Program_Error with
+            "interrupt" & Interrupt_ID'Image (Interrupt) & " is reserved";
+       end if;
+ 
+       Interrupt_Manager.Unblock_Interrupt (Interrupt);
+    end Unblock_Interrupt;
+ 
+    ------------------
+    -- Unblocked_By --
+    ------------------
+ 
+    function Unblocked_By
+      (Interrupt : Interrupt_ID) return System.Tasking.Task_Id
+    is
+    begin
+       if Is_Reserved (Interrupt) then
+          raise Program_Error with
+            "interrupt" & Interrupt_ID'Image (Interrupt) & " is reserved";
+       end if;
+ 
+       return Last_Unblocker (Interrupt);
+    end Unblocked_By;
+ 
+    ------------------------
+    -- Unignore_Interrupt --
+    ------------------------
+ 
+    procedure Unignore_Interrupt (Interrupt : Interrupt_ID) is
+    begin
+       if Is_Reserved (Interrupt) then
+          raise Program_Error with
+            "interrupt" & Interrupt_ID'Image (Interrupt) & " is reserved";
+       end if;
+ 
+       Interrupt_Manager.Unignore_Interrupt (Interrupt);
+    end Unignore_Interrupt;
+ 
+    -----------------------
+    -- Interrupt_Manager --
+    -----------------------
+ 
+    task body Interrupt_Manager is
+       --  By making this task independent of master, when the process
+       --  goes away, the Interrupt_Manager will terminate gracefully.
+ 
+       Ignore : constant Boolean := System.Tasking.Utilities.Make_Independent;
+ 
+       ---------------------
+       -- Local Variables --
+       ---------------------
+ 
+       Intwait_Mask  : aliased IMNG.Interrupt_Mask;
+       Ret_Interrupt : Interrupt_ID;
+       Old_Mask      : aliased IMNG.Interrupt_Mask;
+       Old_Handler   : Parameterless_Handler;
+ 
+       --------------------
+       -- Local Routines --
+       --------------------
+ 
+       procedure Bind_Handler (Interrupt : Interrupt_ID);
+       --  This procedure does not do anything if the Interrupt is blocked.
+       --  Otherwise, we have to interrupt Server_Task for status change through
+       --  Wakeup interrupt.
+ 
+       procedure Unbind_Handler (Interrupt : Interrupt_ID);
+       --  This procedure does not do anything if the Interrupt is blocked.
+       --  Otherwise, we have to interrupt Server_Task for status change
+       --  through abort interrupt.
+ 
+       procedure Unprotected_Exchange_Handler
+         (Old_Handler : out Parameterless_Handler;
+          New_Handler : Parameterless_Handler;
+          Interrupt   : Interrupt_ID;
+          Static      : Boolean;
+          Restoration : Boolean := False);
+ 
+       procedure Unprotected_Detach_Handler
+         (Interrupt   : Interrupt_ID;
+          Static      : Boolean);
+ 
+       ------------------
+       -- Bind_Handler --
+       ------------------
+ 
+       procedure Bind_Handler (Interrupt : Interrupt_ID) is
+       begin
+          if not Blocked (Interrupt) then
+ 
+             --  Mask this task for the given Interrupt so that all tasks
+             --  are masked for the Interrupt and the actual delivery of the
+             --  Interrupt will be caught using "sigwait" by the
+             --  corresponding Server_Task.
+ 
+             IMOP.Thread_Block_Interrupt (IMNG.Interrupt_ID (Interrupt));
+ 
+             --  We have installed a Handler or an Entry before we called
+             --  this procedure. If the Handler Task is waiting to be awakened,
+             --  do it here. Otherwise, the interrupt will be discarded.
+ 
+             POP.Wakeup (Server_ID (Interrupt), Interrupt_Server_Idle_Sleep);
+          end if;
+       end Bind_Handler;
+ 
+       --------------------
+       -- Unbind_Handler --
+       --------------------
+ 
+       procedure Unbind_Handler (Interrupt : Interrupt_ID) is
+          Server : System.Tasking.Task_Id;
+ 
+       begin
+          if not Blocked (Interrupt) then
+ 
+             --  Currently, there is a Handler or an Entry attached and
+             --  corresponding Server_Task is waiting on "sigwait." We have to
+             --  wake up the Server_Task and make it wait on condition variable
+             --  by sending an Abort_Task_Interrupt
+ 
+             Server := Server_ID (Interrupt);
+ 
+             case Server.Common.State is
+                when Interrupt_Server_Blocked_Interrupt_Sleep
+                   | Interrupt_Server_Idle_Sleep
+                =>
+                   POP.Wakeup (Server, Server.Common.State);
+ 
+                when Interrupt_Server_Blocked_On_Event_Flag =>
+                   POP.Abort_Task (Server);
+ 
+                   --  Make sure corresponding Server_Task is out of its
+                   --  own sigwait state.
+ 
+                   Ret_Interrupt :=
+                     Interrupt_ID (IMOP.Interrupt_Wait (Intwait_Mask'Access));
+                   pragma Assert
+                     (Ret_Interrupt = Interrupt_ID (IMNG.Abort_Task_Interrupt));
+ 
+                when Runnable =>
+                   null;
+ 
+                when others =>
+                   pragma Assert (False);
+                   null;
+             end case;
+ 
+             IMOP.Install_Default_Action (IMNG.Interrupt_ID (Interrupt));
+ 
+             --  Unmake the Interrupt for this task in order to allow default
+             --  action again.
+ 
+             IMOP.Thread_Unblock_Interrupt (IMNG.Interrupt_ID (Interrupt));
+ 
+          else
+             IMOP.Install_Default_Action (IMNG.Interrupt_ID (Interrupt));
+          end if;
+       end Unbind_Handler;
+ 
+       --------------------------------
+       -- Unprotected_Detach_Handler --
+       --------------------------------
+ 
+       procedure Unprotected_Detach_Handler
+         (Interrupt   : Interrupt_ID;
+          Static      : Boolean)
+       is
+          Old_Handler : Parameterless_Handler;
+ 
+       begin
+          if User_Entry (Interrupt).T /= Null_Task then
+ 
+             --  In case we have an Interrupt Entry installed, raise a program
+             --  error, (propagate it to the caller).
+ 
+             raise Program_Error with
+               "an interrupt entry is already installed";
+          end if;
+ 
+          --  Note : Static = True will pass the following check. That is the
+          --  case when we want to detach a handler regardless of the static
+          --  status of the current_Handler.
+ 
+          if not Static and then User_Handler (Interrupt).Static then
+ 
+             --  Tries to detach a static Interrupt Handler.
+             --  raise a program error.
+ 
+             raise Program_Error with
+               "trying to detach a static interrupt handler";
+          end if;
+ 
+          --  The interrupt should no longer be ignored if
+          --  it was ever ignored.
+ 
+          Ignored (Interrupt) := False;
+ 
+          Old_Handler := User_Handler (Interrupt).H;
+ 
+          --  The new handler
+ 
+          User_Handler (Interrupt).H := null;
+          User_Handler (Interrupt).Static := False;
+ 
+          if Old_Handler /= null then
+             Unbind_Handler (Interrupt);
+          end if;
+       end Unprotected_Detach_Handler;
+ 
+       ----------------------------------
+       -- Unprotected_Exchange_Handler --
+       ----------------------------------
+ 
+       procedure Unprotected_Exchange_Handler
+         (Old_Handler : out Parameterless_Handler;
+          New_Handler : Parameterless_Handler;
+          Interrupt   : Interrupt_ID;
+          Static      : Boolean;
+          Restoration : Boolean := False)
+       is
+       begin
+          if User_Entry (Interrupt).T /= Null_Task then
+ 
+             --  In case we have an Interrupt Entry already installed, raise a
+             --  program error, (propagate it to the caller).
+ 
+             raise Program_Error with
+               "an interrupt is already installed";
+          end if;
+ 
+          --  Note : A null handler with Static = True will pass the following
+          --  check. That is the case when we want to Detach a handler
+          --  regardless of the Static status of the current_Handler.
+ 
+          --  We don't check anything if Restoration is True, since we may be
+          --  detaching a static handler to restore a dynamic one.
+ 
+          if not Restoration and then not Static
+ 
+             --  Tries to overwrite a static Interrupt Handler with a dynamic
+             --  Handler
+ 
+            and then (User_Handler (Interrupt).Static
+ 
+                        --  The new handler is not specified as an
+                        --  Interrupt Handler by a pragma.
+ 
+                        or else not Is_Registered (New_Handler))
+          then
+             raise Program_Error with
+               "trying to overwrite a static Interrupt Handler with a " &
+               "dynamic handler";
+          end if;
+ 
+          --  The interrupt should no longer be ignored if
+          --  it was ever ignored.
+ 
+          Ignored (Interrupt) := False;
+ 
+          --  Save the old handler
+ 
+          Old_Handler := User_Handler (Interrupt).H;
+ 
+          --  The new handler
+ 
+          User_Handler (Interrupt).H := New_Handler;
+ 
+          if New_Handler = null then
+ 
+             --  The null handler means we are detaching the handler
+ 
+             User_Handler (Interrupt).Static := False;
+ 
+          else
+             User_Handler (Interrupt).Static := Static;
+          end if;
+ 
+          --  Invoke a corresponding Server_Task if not yet created.
+          --  Place Task_Id info in Server_ID array.
+ 
+          if Server_ID (Interrupt) = Null_Task then
+ 
+             --  When a new Server_Task is created, it should have its
+             --  signal mask set to the All_Tasks_Mask.
+ 
+             IMOP.Set_Interrupt_Mask
+               (IMOP.All_Tasks_Mask'Access, Old_Mask'Access);
+             Access_Hold := new Server_Task (Interrupt);
+             IMOP.Set_Interrupt_Mask (Old_Mask'Access);
+ 
+             Server_ID (Interrupt) := To_System (Access_Hold.all'Identity);
+          end if;
+ 
+          if New_Handler = null then
+             if Old_Handler /= null then
+                Unbind_Handler (Interrupt);
+             end if;
+ 
+             return;
+          end if;
+ 
+          if Old_Handler = null then
+             Bind_Handler (Interrupt);
+          end if;
+       end Unprotected_Exchange_Handler;
+ 
+    --  Start of processing for Interrupt_Manager
+ 
+    begin
+       --  Environment task gets its own interrupt mask, saves it, and then
+       --  masks all interrupts except the Keep_Unmasked set.
+ 
+       --  During rendezvous, the Interrupt_Manager receives the old interrupt
+       --  mask of the environment task, and sets its own interrupt mask to that
+       --  value.
+ 
+       --  The environment task will call the entry of Interrupt_Manager some
+       --  during elaboration of the body of this package.
+ 
+       accept Initialize (Mask : IMNG.Interrupt_Mask) do
+          declare
+             The_Mask : aliased IMNG.Interrupt_Mask;
+          begin
+             IMOP.Copy_Interrupt_Mask (The_Mask, Mask);
+             IMOP.Set_Interrupt_Mask (The_Mask'Access);
+          end;
+       end Initialize;
+ 
+       --  Note: All tasks in RTS will have all the Reserve Interrupts being
+       --  masked (except the Interrupt_Manager) and Keep_Unmasked unmasked
+       --  when created.
+ 
+       --  Abort_Task_Interrupt is one of the Interrupt unmasked in all tasks.
+       --  We mask the Interrupt in this particular task so that "sigwait" is
+       --  possible to catch an explicitly sent Abort_Task_Interrupt from the
+       --  Server_Tasks.
+ 
+       --  This sigwaiting is needed so that we make sure a Server_Task is out
+       --  of its own sigwait state. This extra synchronization is necessary to
+       --  prevent following scenarios.
+ 
+       --   1) Interrupt_Manager sends an Abort_Task_Interrupt to the
+       --      Server_Task then changes its own interrupt mask (OS level).
+       --      If an interrupt (corresponding to the Server_Task) arrives
+       --      in the mean time we have the Interrupt_Manager unmasked and
+       --      the Server_Task waiting on sigwait.
+ 
+       --   2) For unbinding handler, we install a default action in the
+       --      Interrupt_Manager. POSIX.1c states that the result of using
+       --      "sigwait" and "sigaction" simultaneously on the same interrupt
+       --      is undefined. Therefore, we need to be informed from the
+       --      Server_Task of the fact that the Server_Task is out of its
+       --      sigwait stage.
+ 
+       IMOP.Empty_Interrupt_Mask (Intwait_Mask'Access);
+       IMOP.Add_To_Interrupt_Mask
+         (Intwait_Mask'Access, IMNG.Abort_Task_Interrupt);
+       IMOP.Thread_Block_Interrupt
+         (IMNG.Abort_Task_Interrupt);
+ 
+       loop
+          --  A block is needed to absorb Program_Error exception
+ 
+          begin
+             select
+                accept Attach_Handler
+                   (New_Handler : Parameterless_Handler;
+                    Interrupt   : Interrupt_ID;
+                    Static      : Boolean;
+                    Restoration : Boolean := False)
+                do
+                   Unprotected_Exchange_Handler
+                     (Old_Handler, New_Handler, Interrupt, Static, Restoration);
+                end Attach_Handler;
+ 
+             or
+                accept Exchange_Handler
+                   (Old_Handler : out Parameterless_Handler;
+                    New_Handler : Parameterless_Handler;
+                    Interrupt   : Interrupt_ID;
+                    Static      : Boolean)
+                do
+                   Unprotected_Exchange_Handler
+                     (Old_Handler, New_Handler, Interrupt, Static);
+                end Exchange_Handler;
+ 
+             or
+                accept Detach_Handler
+                  (Interrupt   : Interrupt_ID;
+                   Static      : Boolean)
+                do
+                   Unprotected_Detach_Handler (Interrupt, Static);
+                end Detach_Handler;
+ 
+             or
+                accept Bind_Interrupt_To_Entry
+                  (T       : Task_Id;
+                   E       : Task_Entry_Index;
+                   Interrupt : Interrupt_ID)
+                do
+                   --  If there is a binding already (either a procedure or an
+                   --  entry), raise Program_Error (propagate it to the caller).
+ 
+                   if User_Handler (Interrupt).H /= null
+                     or else User_Entry (Interrupt).T /= Null_Task
+                   then
+                      raise Program_Error with
+                        "a binding for this interrupt is already present";
+                   end if;
+ 
+                   --  The interrupt should no longer be ignored if
+                   --  it was ever ignored.
+ 
+                   Ignored (Interrupt) := False;
+                   User_Entry (Interrupt) := Entry_Assoc'(T => T, E => E);
+ 
+                   --  Indicate the attachment of Interrupt Entry in ATCB.
+                   --  This is need so that when an Interrupt Entry task
+                   --  terminates the binding can be cleaned. The call to
+                   --  unbinding must be made by the task before it terminates.
+ 
+                   T.Interrupt_Entry := True;
+ 
+                   --  Invoke a corresponding Server_Task if not yet created.
+                   --  Place Task_Id info in Server_ID array.
+ 
+                   if Server_ID (Interrupt) = Null_Task then
+ 
+                      --  When a new Server_Task is created, it should have its
+                      --  signal mask set to the All_Tasks_Mask.
+ 
+                      IMOP.Set_Interrupt_Mask
+                        (IMOP.All_Tasks_Mask'Access, Old_Mask'Access);
+                      Access_Hold := new Server_Task (Interrupt);
+                      IMOP.Set_Interrupt_Mask (Old_Mask'Access);
+                      Server_ID (Interrupt) :=
+                        To_System (Access_Hold.all'Identity);
+                   end if;
+ 
+                   Bind_Handler (Interrupt);
+                end Bind_Interrupt_To_Entry;
+ 
+             or
+                accept Detach_Interrupt_Entries (T : Task_Id) do
+                   for J in Interrupt_ID'Range loop
+                      if not Is_Reserved (J) then
+                         if User_Entry (J).T = T then
+ 
+                            --  The interrupt should no longer be ignored if
+                            --  it was ever ignored.
+ 
+                            Ignored (J) := False;
+                            User_Entry (J) := Entry_Assoc'
+                              (T => Null_Task, E => Null_Task_Entry);
+                            Unbind_Handler (J);
+                         end if;
+                      end if;
+                   end loop;
+ 
+                   --  Indicate in ATCB that no Interrupt Entries are attached
+ 
+                   T.Interrupt_Entry := False;
+                end Detach_Interrupt_Entries;
+ 
+             or
+                accept Block_Interrupt (Interrupt : Interrupt_ID) do
+                   if Blocked (Interrupt) then
+                      return;
+                   end if;
+ 
+                   Blocked (Interrupt) := True;
+                   Last_Unblocker (Interrupt) := Null_Task;
+ 
+                   --  Mask this task for the given Interrupt so that all tasks
+                   --  are masked for the Interrupt.
+ 
+                   IMOP.Thread_Block_Interrupt (IMNG.Interrupt_ID (Interrupt));
+ 
+                   if User_Handler (Interrupt).H /= null
+                     or else User_Entry (Interrupt).T /= Null_Task
+                   then
+                      --  This is the case where the Server_Task
+                      --  is waiting on"sigwait." Wake it up by sending an
+                      --  Abort_Task_Interrupt so that the Server_Task waits
+                      --  on Cond.
+ 
+                      POP.Abort_Task (Server_ID (Interrupt));
+ 
+                      --  Make sure corresponding Server_Task is out of its own
+                      --  sigwait state.
+ 
+                      Ret_Interrupt := Interrupt_ID
+                        (IMOP.Interrupt_Wait (Intwait_Mask'Access));
+                      pragma Assert
+                        (Ret_Interrupt =
+                         Interrupt_ID (IMNG.Abort_Task_Interrupt));
+                   end if;
+                end Block_Interrupt;
+ 
+             or
+                accept Unblock_Interrupt (Interrupt : Interrupt_ID) do
+                   if not Blocked (Interrupt) then
+                      return;
+                   end if;
+ 
+                   Blocked (Interrupt) := False;
+                   Last_Unblocker (Interrupt) :=
+                     To_System (Unblock_Interrupt'Caller);
+ 
+                   if User_Handler (Interrupt).H = null
+                     and then User_Entry (Interrupt).T = Null_Task
+                   then
+                      --  No handler is attached. Unmask the Interrupt so that
+                      --  the default action can be carried out.
+ 
+                      IMOP.Thread_Unblock_Interrupt
+                        (IMNG.Interrupt_ID (Interrupt));
+ 
+                   else
+                      --  The Server_Task must be waiting on the Cond variable
+                      --  since it was being blocked and an Interrupt Hander or
+                      --  an Entry was there. Wake it up and let it change it
+                      --  place of waiting according to its new state.
+ 
+                      POP.Wakeup (Server_ID (Interrupt),
+                        Interrupt_Server_Blocked_Interrupt_Sleep);
+                   end if;
+                end Unblock_Interrupt;
+ 
+             or
+                accept Ignore_Interrupt (Interrupt : Interrupt_ID) do
+                   if Ignored (Interrupt) then
+                      return;
+                   end if;
+ 
+                   Ignored (Interrupt) := True;
+ 
+                   --  If there is a handler associated with the Interrupt,
+                   --  detach it first. In this way we make sure that the
+                   --  Server_Task is not on sigwait. This is legal since
+                   --  Unignore_Interrupt is to install the default action.
+ 
+                   if User_Handler (Interrupt).H /= null then
+                      Unprotected_Detach_Handler
+                        (Interrupt => Interrupt, Static => True);
+ 
+                   elsif User_Entry (Interrupt).T /= Null_Task then
+                      User_Entry (Interrupt) := Entry_Assoc'
+                        (T => Null_Task, E => Null_Task_Entry);
+                      Unbind_Handler (Interrupt);
+                   end if;
+ 
+                   IMOP.Install_Ignore_Action (IMNG.Interrupt_ID (Interrupt));
+                end Ignore_Interrupt;
+ 
+             or
+                accept Unignore_Interrupt (Interrupt : Interrupt_ID) do
+                   Ignored (Interrupt) := False;
+ 
+                   --  If there is a handler associated with the Interrupt,
+                   --  detach it first. In this way we make sure that the
+                   --  Server_Task is not on sigwait. This is legal since
+                   --  Unignore_Interrupt is to install the default action.
+ 
+                   if User_Handler (Interrupt).H /= null then
+                      Unprotected_Detach_Handler
+                        (Interrupt => Interrupt, Static => True);
+ 
+                   elsif User_Entry (Interrupt).T /= Null_Task then
+                      User_Entry (Interrupt) := Entry_Assoc'
+                        (T => Null_Task, E => Null_Task_Entry);
+                      Unbind_Handler (Interrupt);
+                   end if;
+ 
+                   IMOP.Install_Default_Action (IMNG.Interrupt_ID (Interrupt));
+                end Unignore_Interrupt;
+             end select;
+ 
+          exception
+             --  If there is a program error we just want to propagate it to
+             --  the caller and do not want to stop this task.
+ 
+             when Program_Error =>
+                null;
+ 
+             when X : others =>
+                System.IO.Put_Line ("Exception in Interrupt_Manager");
+                System.IO.Put_Line (Ada.Exceptions.Exception_Information (X));
+                pragma Assert (False);
+          end;
+       end loop;
+    end Interrupt_Manager;
+ 
+    -----------------
+    -- Server_Task --
+    -----------------
+ 
+    task body Server_Task is
+       --  By making this task independent of master, when the process goes
+       --  away, the Server_Task will terminate gracefully.
+ 
+       Ignore : constant Boolean := System.Tasking.Utilities.Make_Independent;
+ 
+       Intwait_Mask    : aliased IMNG.Interrupt_Mask;
+       Ret_Interrupt   : Interrupt_ID;
+       Self_ID         : constant Task_Id := Self;
+       Tmp_Handler     : Parameterless_Handler;
+       Tmp_ID          : Task_Id;
+       Tmp_Entry_Index : Task_Entry_Index;
+ 
+    begin
+       --  Install default action in system level
+ 
+       IMOP.Install_Default_Action (IMNG.Interrupt_ID (Interrupt));
+ 
+       --  Note: All tasks in RTS will have all the Reserve Interrupts being
+       --  masked (except the Interrupt_Manager) and Keep_Unmasked unmasked when
+       --  created.
+ 
+       --  Abort_Task_Interrupt is one of the Interrupt unmasked in all tasks.
+       --  We mask the Interrupt in this particular task so that "sigwait" is
+       --  possible to catch an explicitly sent Abort_Task_Interrupt from the
+       --  Interrupt_Manager.
+ 
+       --  There are two Interrupt interrupts that this task catch through
+       --  "sigwait." One is the Interrupt this task is designated to catch
+       --  in order to execute user handler or entry. The other one is
+       --  the Abort_Task_Interrupt. This interrupt is being sent from the
+       --  Interrupt_Manager to inform status changes (e.g: become Blocked,
+       --  Handler or Entry is to be detached).
+ 
+       --  Prepare a mask to used for sigwait
+ 
+       IMOP.Empty_Interrupt_Mask (Intwait_Mask'Access);
+ 
+       IMOP.Add_To_Interrupt_Mask
+         (Intwait_Mask'Access, IMNG.Interrupt_ID (Interrupt));
+ 
+       IMOP.Add_To_Interrupt_Mask
+         (Intwait_Mask'Access, IMNG.Abort_Task_Interrupt);
+ 
+       IMOP.Thread_Block_Interrupt
+         (IMNG.Abort_Task_Interrupt);
+ 
+       PIO.Set_Interrupt_ID (IMNG.Interrupt_ID (Interrupt), Self_ID);
+ 
+       loop
+          System.Tasking.Initialization.Defer_Abort (Self_ID);
+ 
+          if Single_Lock then
+             POP.Lock_RTS;
+          end if;
+ 
+          POP.Write_Lock (Self_ID);
+ 
+          if User_Handler (Interrupt).H = null
+            and then User_Entry (Interrupt).T = Null_Task
+          then
+             --  No Interrupt binding. If there is an interrupt,
+             --  Interrupt_Manager will take default action.
+ 
+             Self_ID.Common.State := Interrupt_Server_Blocked_Interrupt_Sleep;
+             POP.Sleep (Self_ID, Interrupt_Server_Idle_Sleep);
+             Self_ID.Common.State := Runnable;
+ 
+          elsif Blocked (Interrupt) then
+ 
+             --  Interrupt is blocked, stay here, so we won't catch it
+ 
+             Self_ID.Common.State := Interrupt_Server_Blocked_Interrupt_Sleep;
+             POP.Sleep (Self_ID, Interrupt_Server_Blocked_Interrupt_Sleep);
+             Self_ID.Common.State := Runnable;
+ 
+          else
+             --  A Handler or an Entry is installed. At this point all tasks
+             --  mask for the Interrupt is masked. Catch the Interrupt using
+             --  sigwait.
+ 
+             --  This task may wake up from sigwait by receiving an interrupt
+             --  (Abort_Task_Interrupt) from the Interrupt_Manager for unbinding
+             --  a Procedure Handler or an Entry. Or it could be a wake up
+             --  from status change (Unblocked -> Blocked). If that is not
+             --  the case, we should execute the attached Procedure or Entry.
+ 
+             Self_ID.Common.State := Interrupt_Server_Blocked_On_Event_Flag;
+             POP.Unlock (Self_ID);
+ 
+             if Single_Lock then
+                POP.Unlock_RTS;
+             end if;
+ 
+             --  Avoid race condition when terminating application and
+             --  System.Parameters.No_Abort is True.
+ 
+             if Parameters.No_Abort and then Self_ID.Pending_Action then
+                Initialization.Do_Pending_Action (Self_ID);
+             end if;
+ 
+             Ret_Interrupt :=
+               Interrupt_ID (IMOP.Interrupt_Wait (Intwait_Mask'Access));
+             Self_ID.Common.State := Runnable;
+ 
+             if Ret_Interrupt = Interrupt_ID (IMNG.Abort_Task_Interrupt) then
+ 
+                --  Inform the Interrupt_Manager of wakeup from above sigwait
+ 
+                POP.Abort_Task (Interrupt_Manager_ID);
+ 
+                if Single_Lock then
+                   POP.Lock_RTS;
+                end if;
+ 
+                POP.Write_Lock (Self_ID);
+ 
+             else
+                if Single_Lock then
+                   POP.Lock_RTS;
+                end if;
+ 
+                POP.Write_Lock (Self_ID);
+ 
+                if Ret_Interrupt /= Interrupt then
+ 
+                   --  On some systems (e.g. recent linux kernels), sigwait
+                   --  may return unexpectedly (with errno set to EINTR).
+ 
+                   null;
+ 
+                else
+                   --  Even though we have received an Interrupt the status may
+                   --  have changed already before we got the Self_ID lock above
+                   --  Therefore we make sure a Handler or an Entry is still
+                   --  there and make appropriate call.
+ 
+                   --  If there is no calls to make we need to regenerate the
+                   --  Interrupt in order not to lose it.
+ 
+                   if User_Handler (Interrupt).H /= null then
+                      Tmp_Handler := User_Handler (Interrupt).H;
+ 
+                      --  RTS calls should not be made with self being locked
+ 
+                      POP.Unlock (Self_ID);
+ 
+                      if Single_Lock then
+                         POP.Unlock_RTS;
+                      end if;
+ 
+                      Tmp_Handler.all;
+ 
+                      if Single_Lock then
+                         POP.Lock_RTS;
+                      end if;
+ 
+                      POP.Write_Lock (Self_ID);
+ 
+                   elsif User_Entry (Interrupt).T /= Null_Task then
+                      Tmp_ID := User_Entry (Interrupt).T;
+                      Tmp_Entry_Index := User_Entry (Interrupt).E;
+ 
+                      --  RTS calls should not be made with self being locked
+ 
+                      if Single_Lock then
+                         POP.Unlock_RTS;
+                      end if;
+ 
+                      POP.Unlock (Self_ID);
+ 
+                      System.Tasking.Rendezvous.Call_Simple
+                        (Tmp_ID, Tmp_Entry_Index, System.Null_Address);
+ 
+                      POP.Write_Lock (Self_ID);
+ 
+                      if Single_Lock then
+                         POP.Lock_RTS;
+                      end if;
+ 
+                   else
+                      --  This is a situation that this task wakes up receiving
+                      --  an Interrupt and before it gets the lock the Interrupt
+                      --  is blocked. We do not want to lose the interrupt in
+                      --  this case so we regenerate the Interrupt to process
+                      --  level.
+ 
+                      IMOP.Interrupt_Self_Process
+                        (IMNG.Interrupt_ID (Interrupt));
+                   end if;
+                end if;
+             end if;
+          end if;
+ 
+          POP.Unlock (Self_ID);
+ 
+          if Single_Lock then
+             POP.Unlock_RTS;
+          end if;
+ 
+          System.Tasking.Initialization.Undefer_Abort (Self_ID);
+ 
+          if Self_ID.Pending_Action then
+             Initialization.Do_Pending_Action (Self_ID);
+          end if;
+ 
+          --  Undefer abort here to allow a window for this task to be aborted
+          --  at the time of system shutdown. We also explicitly test for
+          --  Pending_Action in case System.Parameters.No_Abort is True.
+ 
+       end loop;
+    end Server_Task;
+ 
+ --  Elaboration code for package System.Interrupts
+ 
+ begin
+    --  Get Interrupt_Manager's ID so that Abort_Interrupt can be sent
+ 
+    Interrupt_Manager_ID := To_System (Interrupt_Manager'Identity);
+ 
+    --  During the elaboration of this package body we want the RTS
+    --  to inherit the interrupt mask from the Environment Task.
+ 
+    IMOP.Setup_Interrupt_Mask;
+ 
+    --  The environment task should have gotten its mask from the enclosing
+    --  process during the RTS start up. (See processing in s-inmaop.adb). Pass
+    --  the Interrupt_Mask of the environment task to the Interrupt_Manager.
+ 
+    --  Note: At this point we know that all tasks are masked for non-reserved
+    --  signals. Only the Interrupt_Manager will have masks set up differently
+    --  inheriting the original environment task's mask.
+ 
+    Interrupt_Manager.Initialize (IMOP.Environment_Mask);
+ end System.Interrupts;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-interr.ads gcc-8.1.0/gcc/ada/libgnarl/s-interr.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-interr.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-interr.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,278 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                     S Y S T E M . I N T E R R U P T S                    --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Note: the compiler generates direct calls to this interface, via Rtsfind.
+ --  Any changes to this interface may require corresponding compiler changes.
+ 
+ --  This package encapsulates the implementation of interrupt or signal
+ --  handlers. It is logically an extension of the body of Ada.Interrupts. It
+ --  is made a child of System to allow visibility of various runtime system
+ --  internal data and operations.
+ 
+ --  See System.Interrupt_Management for core interrupt/signal interfaces
+ 
+ --  These two packages are separated to allow System.Interrupt_Management to be
+ --  used without requiring the whole tasking implementation to be linked and
+ --  elaborated.
+ 
+ with System.Tasking;
+ with System.Tasking.Protected_Objects.Entries;
+ with System.OS_Interface;
+ 
+ package System.Interrupts is
+ 
+    pragma Elaborate_Body;
+    --  Comment needed on why this is here ???
+ 
+    -------------------------
+    -- Constants and types --
+    -------------------------
+ 
+    Default_Interrupt_Priority : constant System.Interrupt_Priority :=
+      System.Interrupt_Priority'Last;
+    --  Default value used when a pragma Interrupt_Handler or Attach_Handler is
+    --  specified without an Interrupt_Priority pragma, see D.3(10).
+ 
+    type Ada_Interrupt_ID is range 0 .. System.OS_Interface.Max_Interrupt;
+    --  Avoid inheritance by Ada.Interrupts.Interrupt_ID of unwanted operations
+ 
+    type Interrupt_ID is range 0 .. System.OS_Interface.Max_Interrupt;
+ 
+    subtype System_Interrupt_Id is Interrupt_ID;
+    --  This synonym is introduced so that the type is accessible through
+    --  rtsfind, otherwise the name clashes with its homonym in Ada.Interrupts.
+ 
+    type Parameterless_Handler is access protected procedure;
+ 
+    ----------------------
+    -- General services --
+    ----------------------
+ 
+    --  Attempt to attach a Handler to an Interrupt to which an Entry is
+    --  already bound will raise a Program_Error.
+ 
+    function Is_Reserved (Interrupt : Interrupt_ID) return Boolean;
+ 
+    function Is_Entry_Attached (Interrupt : Interrupt_ID) return Boolean;
+ 
+    function Is_Handler_Attached (Interrupt : Interrupt_ID) return Boolean;
+ 
+    function Current_Handler
+      (Interrupt : Interrupt_ID) return Parameterless_Handler;
+ 
+    --  Calling the following procedures with New_Handler = null and Static =
+    --  true means that we want to modify the current handler regardless of the
+    --  previous handler's binding status. (i.e. we do not care whether it is a
+    --  dynamic or static handler)
+ 
+    procedure Attach_Handler
+      (New_Handler : Parameterless_Handler;
+       Interrupt   : Interrupt_ID;
+       Static      : Boolean := False);
+ 
+    procedure Exchange_Handler
+      (Old_Handler : out Parameterless_Handler;
+       New_Handler : Parameterless_Handler;
+       Interrupt   : Interrupt_ID;
+       Static      : Boolean := False);
+ 
+    procedure Detach_Handler
+      (Interrupt : Interrupt_ID;
+       Static    : Boolean := False);
+ 
+    function Reference
+      (Interrupt : Interrupt_ID) return System.Address;
+ 
+    --------------------------------
+    -- Interrupt Entries Services --
+    --------------------------------
+ 
+    --  Routines needed for Interrupt Entries
+ 
+    procedure Bind_Interrupt_To_Entry
+      (T       : System.Tasking.Task_Id;
+       E       : System.Tasking.Task_Entry_Index;
+       Int_Ref : System.Address);
+    --  Bind the given interrupt to the given entry. If the interrupt is
+    --  already bound to another entry, Program_Error will be raised.
+ 
+    procedure Detach_Interrupt_Entries (T : System.Tasking.Task_Id);
+    --  This procedure detaches all the Interrupt Entries bound to a task
+ 
+    ------------------------------
+    -- POSIX.5 Signals Services --
+    ------------------------------
+ 
+    --  Routines needed for POSIX dot5 POSIX_Signals
+ 
+    procedure Block_Interrupt (Interrupt : Interrupt_ID);
+    --  Block the Interrupt on the process level
+ 
+    procedure Unblock_Interrupt (Interrupt : Interrupt_ID);
+ 
+    function Unblocked_By
+      (Interrupt : Interrupt_ID) return System.Tasking.Task_Id;
+    --  It returns the ID of the last Task which Unblocked this Interrupt.
+    --  It returns Null_Task if no tasks have ever requested the Unblocking
+    --  operation or the Interrupt is currently Blocked.
+ 
+    function Is_Blocked (Interrupt : Interrupt_ID) return Boolean;
+    --  Comment needed ???
+ 
+    procedure Ignore_Interrupt (Interrupt : Interrupt_ID);
+    --  Set the sigaction for the interrupt to SIG_IGN
+ 
+    procedure Unignore_Interrupt (Interrupt : Interrupt_ID);
+    --  Comment needed ???
+ 
+    function Is_Ignored (Interrupt : Interrupt_ID) return Boolean;
+    --  Comment needed ???
+ 
+    --  Note : Direct calls to sigaction, sigprocmask, thr_sigsetmask, or any
+    --  other low-level interface that changes the signal action or signal mask
+    --  needs careful thought.
+ 
+    --  One may achieve the effect of system calls first making RTS blocked (by
+    --  calling Block_Interrupt) for the signal under consideration. This will
+    --  make all the tasks in RTS blocked for the Interrupt.
+ 
+    ----------------------
+    -- Protection Types --
+    ----------------------
+ 
+    --  Routines and types needed to implement Interrupt_Handler and
+    --  Attach_Handler.
+ 
+    --  There are two kinds of protected objects that deal with interrupts:
+ 
+    --  (1) Only Interrupt_Handler pragmas are used. We need to be able to tell
+    --  if an Interrupt_Handler applies to a given procedure, so
+    --  Register_Interrupt_Handler has to be called for all the potential
+    --  handlers, it should be done by calling Register_Interrupt_Handler with
+    --  the handler code address. On finalization, which can happen only has
+    --  part of library level finalization since PO with Interrupt_Handler
+    --  pragmas can only be declared at library level, nothing special needs to
+    --  be done since the default handlers have been restored as part of task
+    --  completion which is done just before global finalization.
+    --  Dynamic_Interrupt_Protection should be used in this case.
+ 
+    --  (2) Attach_Handler pragmas are used, and possibly Interrupt_Handler
+    --  pragma. We need to attach the handlers to the given interrupts when the
+    --  object is elaborated. This should be done by constructing an array of
+    --  pairs (interrupt, handler) from the pragmas and calling Install_Handlers
+    --  with it (types to be used are New_Handler_Item and New_Handler_Array).
+    --  On finalization, we need to restore the handlers that were installed
+    --  before the elaboration of the PO, so we need to store these previous
+    --  handlers. This is also done by Install_Handlers, the room for this
+    --  information is provided by adding a discriminant which is the number
+    --  of Attach_Handler pragmas and an array of this size in the protection
+    --  type, Static_Interrupt_Protection.
+ 
+    procedure Register_Interrupt_Handler
+      (Handler_Addr : System.Address);
+    --  This routine should be called by the compiler to allow the handler be
+    --  used as an Interrupt Handler. That means call this procedure for each
+    --  pragma Interrupt_Handler providing the address of the handler (not
+    --  including the pointer to the actual PO, this way this routine is called
+    --  only once for each type definition of PO).
+ 
+    type Static_Handler_Index is range 0 .. Integer'Last;
+    subtype Positive_Static_Handler_Index is
+      Static_Handler_Index range 1 .. Static_Handler_Index'Last;
+    --  Comment needed ???
+ 
+    type Previous_Handler_Item is record
+       Interrupt : Interrupt_ID;
+       Handler   : Parameterless_Handler;
+       Static    : Boolean;
+    end record;
+    --  Contains all the information needed to restore a previous handler
+ 
+    type Previous_Handler_Array is array
+      (Positive_Static_Handler_Index range <>) of Previous_Handler_Item;
+ 
+    type New_Handler_Item is record
+       Interrupt : Interrupt_ID;
+       Handler   : Parameterless_Handler;
+    end record;
+    --  Contains all the information from an Attach_Handler pragma
+ 
+    type New_Handler_Array is
+      array (Positive_Static_Handler_Index range <>) of New_Handler_Item;
+    --  Comment needed ???
+ 
+    --  Case (1)
+ 
+    type Dynamic_Interrupt_Protection is new
+      Tasking.Protected_Objects.Entries.Protection_Entries with null record;
+ 
+    --  ??? Finalize is not overloaded since we currently have no
+    --  way to detach the handlers during library level finalization.
+ 
+    function Has_Interrupt_Or_Attach_Handler
+      (Object : access Dynamic_Interrupt_Protection) return Boolean;
+    --  Returns True
+ 
+    --  Case (2)
+ 
+    type Static_Interrupt_Protection
+      (Num_Entries        : Tasking.Protected_Objects.Protected_Entry_Index;
+       Num_Attach_Handler : Static_Handler_Index)
+    is new
+      Tasking.Protected_Objects.Entries.Protection_Entries (Num_Entries) with
+      record
+        Previous_Handlers : Previous_Handler_Array (1 .. Num_Attach_Handler);
+      end record;
+ 
+    function Has_Interrupt_Or_Attach_Handler
+      (Object : access Static_Interrupt_Protection) return Boolean;
+    --  Returns True
+ 
+    overriding procedure Finalize (Object : in out Static_Interrupt_Protection);
+    --  Restore previous handlers as required by C.3.1(12) then call
+    --  Finalize (Protection).
+ 
+    procedure Install_Handlers
+      (Object       : access Static_Interrupt_Protection;
+       New_Handlers : New_Handler_Array);
+    --  Store the old handlers in Object.Previous_Handlers and install
+    --  the new static handlers.
+ 
+    procedure Install_Restricted_Handlers
+      (Prio     : Any_Priority;
+       Handlers : New_Handler_Array);
+    --  Install the static Handlers for the given interrupts and do not
+    --  store previously installed handlers. This procedure is used when
+    --  the Ravenscar restrictions are in place since in that case there
+    --  are only library-level protected handlers that will be installed
+    --  at initialization and never be replaced.
+ 
+ end System.Interrupts;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-interr__dummy.adb gcc-8.1.0/gcc/ada/libgnarl/s-interr__dummy.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-interr__dummy.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-interr__dummy.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,307 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                  GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                --
+ --                                                                          --
+ --                     S Y S T E M . I N T E R R U P T S                    --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --             Copyright (C) 1991-2017, Florida State University            --
+ --                     Copyright (C) 1995-2018, AdaCore                     --
+ --                                                                          --
+ -- GNAT is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This version is for systems that do not support interrupts (or signals)
+ 
+ package body System.Interrupts is
+ 
+    pragma Warnings (Off); -- kill warnings on unreferenced formals
+ 
+    use System.Tasking;
+ 
+    -----------------------
+    -- Local Subprograms --
+    -----------------------
+ 
+    procedure Unimplemented;
+    --  This procedure raises a Program_Error with an appropriate message
+    --  indicating that an unimplemented feature has been used.
+ 
+    --------------------
+    -- Attach_Handler --
+    --------------------
+ 
+    procedure Attach_Handler
+      (New_Handler : Parameterless_Handler;
+       Interrupt   : Interrupt_ID;
+       Static      : Boolean := False)
+    is
+    begin
+       Unimplemented;
+    end Attach_Handler;
+ 
+    -----------------------------
+    -- Bind_Interrupt_To_Entry --
+    -----------------------------
+ 
+    procedure Bind_Interrupt_To_Entry
+      (T       : Task_Id;
+       E       : Task_Entry_Index;
+       Int_Ref : System.Address)
+    is
+    begin
+       Unimplemented;
+    end Bind_Interrupt_To_Entry;
+ 
+    ---------------------
+    -- Block_Interrupt --
+    ---------------------
+ 
+    procedure Block_Interrupt (Interrupt : Interrupt_ID) is
+    begin
+       Unimplemented;
+    end Block_Interrupt;
+ 
+    ---------------------
+    -- Current_Handler --
+    ---------------------
+ 
+    function Current_Handler
+      (Interrupt : Interrupt_ID) return Parameterless_Handler
+    is
+    begin
+       Unimplemented;
+       return null;
+    end Current_Handler;
+ 
+    --------------------
+    -- Detach_Handler --
+    --------------------
+ 
+    procedure Detach_Handler
+      (Interrupt : Interrupt_ID;
+       Static    : Boolean := False)
+    is
+    begin
+       Unimplemented;
+    end Detach_Handler;
+ 
+    ------------------------------
+    -- Detach_Interrupt_Entries --
+    ------------------------------
+ 
+    procedure Detach_Interrupt_Entries (T : Task_Id) is
+    begin
+       Unimplemented;
+    end Detach_Interrupt_Entries;
+ 
+    ----------------------
+    -- Exchange_Handler --
+    ----------------------
+ 
+    procedure Exchange_Handler
+      (Old_Handler : out Parameterless_Handler;
+       New_Handler : Parameterless_Handler;
+       Interrupt   : Interrupt_ID;
+       Static      : Boolean := False)
+    is
+    begin
+       Old_Handler := null;
+       Unimplemented;
+    end Exchange_Handler;
+ 
+    --------------
+    -- Finalize --
+    --------------
+ 
+    procedure Finalize (Object : in out Static_Interrupt_Protection) is
+    begin
+       Unimplemented;
+    end Finalize;
+ 
+    -------------------------------------
+    -- Has_Interrupt_Or_Attach_Handler --
+    -------------------------------------
+ 
+    function Has_Interrupt_Or_Attach_Handler
+      (Object : access Dynamic_Interrupt_Protection)
+       return   Boolean
+    is
+       pragma Warnings (Off, Object);
+    begin
+       Unimplemented;
+       return True;
+    end Has_Interrupt_Or_Attach_Handler;
+ 
+    function Has_Interrupt_Or_Attach_Handler
+      (Object : access Static_Interrupt_Protection)
+       return   Boolean
+    is
+       pragma Warnings (Off, Object);
+    begin
+       Unimplemented;
+       return True;
+    end Has_Interrupt_Or_Attach_Handler;
+ 
+    ----------------------
+    -- Ignore_Interrupt --
+    ----------------------
+ 
+    procedure Ignore_Interrupt (Interrupt : Interrupt_ID) is
+    begin
+       Unimplemented;
+    end Ignore_Interrupt;
+ 
+    ----------------------
+    -- Install_Handlers --
+    ----------------------
+ 
+    procedure Install_Handlers
+      (Object       : access Static_Interrupt_Protection;
+       New_Handlers : New_Handler_Array)
+    is
+    begin
+       Unimplemented;
+    end Install_Handlers;
+ 
+    ---------------------------------
+    -- Install_Restricted_Handlers --
+    ---------------------------------
+ 
+    procedure Install_Restricted_Handlers
+      (Prio     : Any_Priority;
+       Handlers : New_Handler_Array)
+    is
+    begin
+       Unimplemented;
+    end Install_Restricted_Handlers;
+ 
+    ----------------
+    -- Is_Blocked --
+    ----------------
+ 
+    function Is_Blocked (Interrupt : Interrupt_ID) return Boolean is
+    begin
+       Unimplemented;
+       return True;
+    end Is_Blocked;
+ 
+    -----------------------
+    -- Is_Entry_Attached --
+    -----------------------
+ 
+    function Is_Entry_Attached (Interrupt : Interrupt_ID) return Boolean is
+    begin
+       Unimplemented;
+       return True;
+    end Is_Entry_Attached;
+ 
+    -------------------------
+    -- Is_Handler_Attached --
+    -------------------------
+ 
+    function Is_Handler_Attached (Interrupt : Interrupt_ID) return Boolean is
+    begin
+       Unimplemented;
+       return True;
+    end Is_Handler_Attached;
+ 
+    ----------------
+    -- Is_Ignored --
+    ----------------
+ 
+    function Is_Ignored (Interrupt : Interrupt_ID) return Boolean is
+    begin
+       Unimplemented;
+       return True;
+    end Is_Ignored;
+ 
+    -----------------
+    -- Is_Reserved --
+    -----------------
+ 
+    function Is_Reserved (Interrupt : Interrupt_ID) return Boolean is
+    begin
+       Unimplemented;
+       return True;
+    end Is_Reserved;
+ 
+    ---------------
+    -- Reference --
+    ---------------
+ 
+    function Reference (Interrupt : Interrupt_ID) return System.Address is
+    begin
+       Unimplemented;
+       return Interrupt'Address;
+    end Reference;
+ 
+    --------------------------------
+    -- Register_Interrupt_Handler --
+    --------------------------------
+ 
+    procedure Register_Interrupt_Handler
+      (Handler_Addr : System.Address)
+    is
+    begin
+       Unimplemented;
+    end Register_Interrupt_Handler;
+ 
+    -----------------------
+    -- Unblock_Interrupt --
+    -----------------------
+ 
+    procedure Unblock_Interrupt (Interrupt : Interrupt_ID) is
+    begin
+       Unimplemented;
+    end Unblock_Interrupt;
+ 
+    ------------------
+    -- Unblocked_By --
+    ------------------
+ 
+    function Unblocked_By (Interrupt : Interrupt_ID)
+      return System.Tasking.Task_Id is
+    begin
+       Unimplemented;
+       return null;
+    end Unblocked_By;
+ 
+    ------------------------
+    -- Unignore_Interrupt --
+    ------------------------
+ 
+    procedure Unignore_Interrupt (Interrupt : Interrupt_ID) is
+    begin
+       Unimplemented;
+    end Unignore_Interrupt;
+ 
+    -------------------
+    -- Unimplemented; --
+    -------------------
+ 
+    procedure Unimplemented is
+    begin
+       raise Program_Error with "interrupts/signals not implemented";
+    end Unimplemented;
+ 
+ end System.Interrupts;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-interr__hwint.adb gcc-8.1.0/gcc/ada/libgnarl/s-interr__hwint.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-interr__hwint.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-interr__hwint.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,1110 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                     S Y S T E M . I N T E R R U P T S                    --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --         Copyright (C) 1992-2018, Free Software Foundation, Inc.          --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Invariants:
+ 
+ --  All user-handlable signals are masked at all times in all tasks/threads
+ --  except possibly for the Interrupt_Manager task.
+ 
+ --  When a user task wants to have the effect of masking/unmasking an signal,
+ --  it must call Block_Interrupt/Unblock_Interrupt, which will have the effect
+ --  of unmasking/masking the signal in the Interrupt_Manager task. These
+ --  comments do not apply to vectored hardware interrupts, which may be masked
+ --  or unmasked using routined interfaced to the relevant embedded RTOS system
+ --  calls.
+ 
+ --  Once we associate a Signal_Server_Task with an signal, the task never goes
+ --  away, and we never remove the association. On the other hand, it is more
+ --  convenient to terminate an associated Interrupt_Server_Task for a vectored
+ --  hardware interrupt (since we use a binary semaphore for synchronization
+ --  with the umbrella handler).
+ 
+ --  There is no more than one signal per Signal_Server_Task and no more than
+ --  one Signal_Server_Task per signal. The same relation holds for hardware
+ --  interrupts and Interrupt_Server_Task's at any given time. That is, only
+ --  one non-terminated Interrupt_Server_Task exists for a give interrupt at
+ --  any time.
+ 
+ --  Within this package, the lock L is used to protect the various status
+ --  tables. If there is a Server_Task associated with a signal or interrupt,
+ --  we use the per-task lock of the Server_Task instead so that we protect the
+ --  status between Interrupt_Manager and Server_Task. Protection among service
+ --  requests are ensured via user calls to the Interrupt_Manager entries.
+ 
+ --  This is reasonably generic version of this package, supporting vectored
+ --  hardware interrupts using non-RTOS specific adapter routines which should
+ --  easily implemented on any RTOS capable of supporting GNAT.
+ 
+ with Ada.Unchecked_Conversion;
+ with Ada.Task_Identification;
+ 
+ with Interfaces.C; use Interfaces.C;
+ with System.OS_Interface; use System.OS_Interface;
+ with System.Interrupt_Management;
+ with System.Task_Primitives.Operations;
+ with System.Storage_Elements;
+ with System.Tasking.Utilities;
+ 
+ with System.Tasking.Rendezvous;
+ pragma Elaborate_All (System.Tasking.Rendezvous);
+ 
+ package body System.Interrupts is
+ 
+    use Tasking;
+ 
+    package POP renames System.Task_Primitives.Operations;
+ 
+    function To_Ada is new Ada.Unchecked_Conversion
+      (System.Tasking.Task_Id, Ada.Task_Identification.Task_Id);
+ 
+    function To_System is new Ada.Unchecked_Conversion
+      (Ada.Task_Identification.Task_Id, Task_Id);
+ 
+    -----------------
+    -- Local Tasks --
+    -----------------
+ 
+    --  WARNING: System.Tasking.Stages performs calls to this task with low-
+    --  level constructs. Do not change this spec without synchronizing it.
+ 
+    task Interrupt_Manager is
+       entry Detach_Interrupt_Entries (T : Task_Id);
+ 
+       entry Attach_Handler
+         (New_Handler : Parameterless_Handler;
+          Interrupt   : Interrupt_ID;
+          Static      : Boolean;
+          Restoration : Boolean := False);
+ 
+       entry Exchange_Handler
+         (Old_Handler : out Parameterless_Handler;
+          New_Handler : Parameterless_Handler;
+          Interrupt   : Interrupt_ID;
+          Static      : Boolean);
+ 
+       entry Detach_Handler
+         (Interrupt : Interrupt_ID;
+          Static    : Boolean);
+ 
+       entry Bind_Interrupt_To_Entry
+         (T         : Task_Id;
+          E         : Task_Entry_Index;
+          Interrupt : Interrupt_ID);
+ 
+       pragma Interrupt_Priority (System.Interrupt_Priority'First);
+    end Interrupt_Manager;
+ 
+    task type Interrupt_Server_Task
+      (Interrupt : Interrupt_ID;
+       Int_Sema  : Binary_Semaphore_Id)
+    is
+       --  Server task for vectored hardware interrupt handling
+ 
+       pragma Interrupt_Priority (System.Interrupt_Priority'First + 2);
+    end Interrupt_Server_Task;
+ 
+    type Interrupt_Task_Access is access Interrupt_Server_Task;
+ 
+    -------------------------------
+    -- Local Types and Variables --
+    -------------------------------
+ 
+    type Entry_Assoc is record
+       T : Task_Id;
+       E : Task_Entry_Index;
+    end record;
+ 
+    type Handler_Assoc is record
+       H      : Parameterless_Handler;
+       Static : Boolean;   --  Indicates static binding;
+    end record;
+ 
+    User_Handler : array (Interrupt_ID) of Handler_Assoc :=
+      (others => (null, Static => False));
+    pragma Volatile_Components (User_Handler);
+    --  Holds the protected procedure handler (if any) and its Static
+    --  information for each interrupt or signal. A handler is static iff it
+    --  is specified through the pragma Attach_Handler.
+ 
+    User_Entry : array (Interrupt_ID) of Entry_Assoc :=
+                   (others => (T => Null_Task, E => Null_Task_Entry));
+    pragma Volatile_Components (User_Entry);
+    --  Holds the task and entry index (if any) for each interrupt / signal
+ 
+    --  Type and Head, Tail of the list containing Registered Interrupt
+    --  Handlers. These definitions are used to register the handlers
+    --  specified by the pragma Interrupt_Handler.
+ 
+    type Registered_Handler;
+    type R_Link is access all Registered_Handler;
+ 
+    type Registered_Handler is record
+       H    : System.Address := System.Null_Address;
+       Next : R_Link := null;
+    end record;
+ 
+    Registered_Handler_Head : R_Link := null;
+    Registered_Handler_Tail : R_Link := null;
+ 
+    Server_ID : array (Interrupt_ID) of System.Tasking.Task_Id :=
+                  (others => System.Tasking.Null_Task);
+    pragma Atomic_Components (Server_ID);
+    --  Holds the Task_Id of the Server_Task for each interrupt / signal.
+    --  Task_Id is needed to accomplish locking per interrupt base. Also
+    --  is needed to determine whether to create a new Server_Task.
+ 
+    Semaphore_ID_Map : array
+      (Interrupt_ID range 0 .. System.OS_Interface.Max_HW_Interrupt) of
+         Binary_Semaphore_Id := (others => 0);
+    --  Array of binary semaphores associated with vectored interrupts. Note
+    --  that the last bound should be Max_HW_Interrupt, but this will raise
+    --  Storage_Error if Num_HW_Interrupts is null so use extra 4 bytes instead.
+ 
+    Interrupt_Access_Hold : Interrupt_Task_Access;
+    --  Variable for allocating an Interrupt_Server_Task
+ 
+    Handler_Installed : array (HW_Interrupt) of Boolean := (others => False);
+    --  True if Notify_Interrupt was connected to the interrupt. Handlers can
+    --  be connected but disconnection is not possible on VxWorks. Therefore
+    --  we ensure Notify_Installed is connected at most once.
+ 
+    -----------------------
+    -- Local Subprograms --
+    -----------------------
+ 
+    procedure Check_Reserved_Interrupt (Interrupt : Interrupt_ID);
+    --  Check if Id is a reserved interrupt, and if so raise Program_Error
+    --  with an appropriate message, otherwise return.
+ 
+    procedure Finalize_Interrupt_Servers;
+    --  Unbind the handlers for hardware interrupt server tasks at program
+    --  termination.
+ 
+    function Is_Registered (Handler : Parameterless_Handler) return Boolean;
+    --  See if Handler has been "pragma"ed using Interrupt_Handler.
+    --  Always consider a null handler as registered.
+ 
+    procedure Notify_Interrupt (Param : System.Address);
+    pragma Convention (C, Notify_Interrupt);
+    --  Umbrella handler for vectored interrupts (not signals)
+ 
+    procedure Install_Umbrella_Handler
+      (Interrupt : HW_Interrupt;
+       Handler   : System.OS_Interface.Interrupt_Handler);
+    --  Install the runtime umbrella handler for a vectored hardware
+    --  interrupt
+ 
+    procedure Unimplemented (Feature : String);
+    pragma No_Return (Unimplemented);
+    --  Used to mark a call to an unimplemented function. Raises Program_Error
+    --  with an appropriate message noting that Feature is unimplemented.
+ 
+    --------------------
+    -- Attach_Handler --
+    --------------------
+ 
+    --  Calling this procedure with New_Handler = null and Static = True
+    --  means we want to detach the current handler regardless of the previous
+    --  handler's binding status (i.e. do not care if it is a dynamic or static
+    --  handler).
+ 
+    --  This option is needed so that during the finalization of a PO, we can
+    --  detach handlers attached through pragma Attach_Handler.
+ 
+    procedure Attach_Handler
+      (New_Handler : Parameterless_Handler;
+       Interrupt   : Interrupt_ID;
+       Static      : Boolean := False) is
+    begin
+       Check_Reserved_Interrupt (Interrupt);
+       Interrupt_Manager.Attach_Handler (New_Handler, Interrupt, Static);
+    end Attach_Handler;
+ 
+    -----------------------------
+    -- Bind_Interrupt_To_Entry --
+    -----------------------------
+ 
+    --  This procedure raises a Program_Error if it tries to
+    --  bind an interrupt to which an Entry or a Procedure is
+    --  already bound.
+ 
+    procedure Bind_Interrupt_To_Entry
+      (T       : Task_Id;
+       E       : Task_Entry_Index;
+       Int_Ref : System.Address)
+    is
+       Interrupt : constant Interrupt_ID :=
+                     Interrupt_ID (Storage_Elements.To_Integer (Int_Ref));
+    begin
+       Check_Reserved_Interrupt (Interrupt);
+       Interrupt_Manager.Bind_Interrupt_To_Entry (T, E, Interrupt);
+    end Bind_Interrupt_To_Entry;
+ 
+    ---------------------
+    -- Block_Interrupt --
+    ---------------------
+ 
+    procedure Block_Interrupt (Interrupt : Interrupt_ID) is
+    begin
+       Unimplemented ("Block_Interrupt");
+    end Block_Interrupt;
+ 
+    ------------------------------
+    -- Check_Reserved_Interrupt --
+    ------------------------------
+ 
+    procedure Check_Reserved_Interrupt (Interrupt : Interrupt_ID) is
+    begin
+       if Is_Reserved (Interrupt) then
+          raise Program_Error with
+            "interrupt" & Interrupt_ID'Image (Interrupt) & " is reserved";
+       else
+          return;
+       end if;
+    end Check_Reserved_Interrupt;
+ 
+    ---------------------
+    -- Current_Handler --
+    ---------------------
+ 
+    function Current_Handler
+      (Interrupt : Interrupt_ID) return Parameterless_Handler
+    is
+    begin
+       Check_Reserved_Interrupt (Interrupt);
+ 
+       --  ??? Since Parameterless_Handler is not Atomic, the current
+       --  implementation is wrong. We need a new service in Interrupt_Manager
+       --  to ensure atomicity.
+ 
+       return User_Handler (Interrupt).H;
+    end Current_Handler;
+ 
+    --------------------
+    -- Detach_Handler --
+    --------------------
+ 
+    --  Calling this procedure with Static = True means we want to Detach the
+    --  current handler regardless of the previous handler's binding status
+    --  (i.e. do not care if it is a dynamic or static handler).
+ 
+    --  This option is needed so that during the finalization of a PO, we can
+    --  detach handlers attached through pragma Attach_Handler.
+ 
+    procedure Detach_Handler
+      (Interrupt : Interrupt_ID;
+       Static    : Boolean := False)
+    is
+    begin
+       Check_Reserved_Interrupt (Interrupt);
+       Interrupt_Manager.Detach_Handler (Interrupt, Static);
+    end Detach_Handler;
+ 
+    ------------------------------
+    -- Detach_Interrupt_Entries --
+    ------------------------------
+ 
+    procedure Detach_Interrupt_Entries (T : Task_Id) is
+    begin
+       Interrupt_Manager.Detach_Interrupt_Entries (T);
+    end Detach_Interrupt_Entries;
+ 
+    ----------------------
+    -- Exchange_Handler --
+    ----------------------
+ 
+    --  Calling this procedure with New_Handler = null and Static = True
+    --  means we want to detach the current handler regardless of the previous
+    --  handler's binding status (i.e. we do not care if it is a dynamic or
+    --  static handler).
+ 
+    --  This option is needed so that during the finalization of a PO, we can
+    --  detach handlers attached through pragma Attach_Handler.
+ 
+    procedure Exchange_Handler
+      (Old_Handler : out Parameterless_Handler;
+       New_Handler : Parameterless_Handler;
+       Interrupt   : Interrupt_ID;
+       Static      : Boolean := False)
+    is
+    begin
+       Check_Reserved_Interrupt (Interrupt);
+       Interrupt_Manager.Exchange_Handler
+         (Old_Handler, New_Handler, Interrupt, Static);
+    end Exchange_Handler;
+ 
+    --------------
+    -- Finalize --
+    --------------
+ 
+    procedure Finalize (Object : in out Static_Interrupt_Protection) is
+    begin
+       --  ??? loop to be executed only when we're not doing library level
+       --  finalization, since in this case all interrupt / signal tasks are
+       --  gone.
+ 
+       if not Interrupt_Manager'Terminated then
+          for N in reverse Object.Previous_Handlers'Range loop
+             Interrupt_Manager.Attach_Handler
+               (New_Handler => Object.Previous_Handlers (N).Handler,
+                Interrupt   => Object.Previous_Handlers (N).Interrupt,
+                Static      => Object.Previous_Handlers (N).Static,
+                Restoration => True);
+          end loop;
+       end if;
+ 
+       Tasking.Protected_Objects.Entries.Finalize
+         (Tasking.Protected_Objects.Entries.Protection_Entries (Object));
+    end Finalize;
+ 
+    --------------------------------
+    -- Finalize_Interrupt_Servers --
+    --------------------------------
+ 
+    --  Restore default handlers for interrupt servers
+ 
+    --  This is called by the Interrupt_Manager task when it receives the abort
+    --  signal during program finalization.
+ 
+    procedure Finalize_Interrupt_Servers is
+       HW_Interrupts : constant Boolean := HW_Interrupt'Last >= 0;
+    begin
+       if HW_Interrupts then
+          for Int in HW_Interrupt loop
+             if Server_ID (Interrupt_ID (Int)) /= null
+               and then
+                 not Ada.Task_Identification.Is_Terminated
+                  (To_Ada (Server_ID (Interrupt_ID (Int))))
+             then
+                Interrupt_Manager.Attach_Handler
+                  (New_Handler => null,
+                   Interrupt   => Interrupt_ID (Int),
+                   Static      => True,
+                   Restoration => True);
+             end if;
+          end loop;
+       end if;
+    end Finalize_Interrupt_Servers;
+ 
+    -------------------------------------
+    -- Has_Interrupt_Or_Attach_Handler --
+    -------------------------------------
+ 
+    function Has_Interrupt_Or_Attach_Handler
+      (Object : access Dynamic_Interrupt_Protection)
+       return   Boolean
+    is
+       pragma Unreferenced (Object);
+    begin
+       return True;
+    end Has_Interrupt_Or_Attach_Handler;
+ 
+    function Has_Interrupt_Or_Attach_Handler
+      (Object : access Static_Interrupt_Protection)
+       return   Boolean
+    is
+       pragma Unreferenced (Object);
+    begin
+       return True;
+    end Has_Interrupt_Or_Attach_Handler;
+ 
+    ----------------------
+    -- Ignore_Interrupt --
+    ----------------------
+ 
+    procedure Ignore_Interrupt (Interrupt : Interrupt_ID) is
+    begin
+       Unimplemented ("Ignore_Interrupt");
+    end Ignore_Interrupt;
+ 
+    ----------------------
+    -- Install_Handlers --
+    ----------------------
+ 
+    procedure Install_Handlers
+      (Object       : access Static_Interrupt_Protection;
+       New_Handlers : New_Handler_Array)
+    is
+    begin
+       for N in New_Handlers'Range loop
+ 
+          --  We need a lock around this ???
+ 
+          Object.Previous_Handlers (N).Interrupt := New_Handlers (N).Interrupt;
+          Object.Previous_Handlers (N).Static    := User_Handler
+            (New_Handlers (N).Interrupt).Static;
+ 
+          --  We call Exchange_Handler and not directly Interrupt_Manager.
+          --  Exchange_Handler so we get the Is_Reserved check.
+ 
+          Exchange_Handler
+            (Old_Handler => Object.Previous_Handlers (N).Handler,
+             New_Handler => New_Handlers (N).Handler,
+             Interrupt   => New_Handlers (N).Interrupt,
+             Static      => True);
+       end loop;
+    end Install_Handlers;
+ 
+    ---------------------------------
+    -- Install_Restricted_Handlers --
+    ---------------------------------
+ 
+    procedure Install_Restricted_Handlers
+       (Prio     : Any_Priority;
+        Handlers : New_Handler_Array)
+    is
+       pragma Unreferenced (Prio);
+    begin
+       for N in Handlers'Range loop
+          Attach_Handler (Handlers (N).Handler, Handlers (N).Interrupt, True);
+       end loop;
+    end Install_Restricted_Handlers;
+ 
+    ------------------------------
+    -- Install_Umbrella_Handler --
+    ------------------------------
+ 
+    procedure Install_Umbrella_Handler
+      (Interrupt : HW_Interrupt;
+       Handler   : System.OS_Interface.Interrupt_Handler)
+    is
+       Vec : constant Interrupt_Vector :=
+               Interrupt_Number_To_Vector (int (Interrupt));
+ 
+       Status : int;
+ 
+    begin
+       --  Only install umbrella handler when no Ada handler has already been
+       --  installed. Note that the interrupt number is passed as a parameter
+       --  when an interrupt occurs, so the umbrella handler has a different
+       --  wrapper generated by intConnect for each interrupt number.
+ 
+       if not Handler_Installed (Interrupt) then
+          Status :=
+             Interrupt_Connect (Vec, Handler, System.Address (Interrupt));
+          pragma Assert (Status = 0);
+ 
+          Handler_Installed (Interrupt) := True;
+       end if;
+    end Install_Umbrella_Handler;
+ 
+    ----------------
+    -- Is_Blocked --
+    ----------------
+ 
+    function Is_Blocked (Interrupt : Interrupt_ID) return Boolean is
+    begin
+       Unimplemented ("Is_Blocked");
+       return False;
+    end Is_Blocked;
+ 
+    -----------------------
+    -- Is_Entry_Attached --
+    -----------------------
+ 
+    function Is_Entry_Attached (Interrupt : Interrupt_ID) return Boolean is
+    begin
+       Check_Reserved_Interrupt (Interrupt);
+       return User_Entry (Interrupt).T /= Null_Task;
+    end Is_Entry_Attached;
+ 
+    -------------------------
+    -- Is_Handler_Attached --
+    -------------------------
+ 
+    function Is_Handler_Attached (Interrupt : Interrupt_ID) return Boolean is
+    begin
+       Check_Reserved_Interrupt (Interrupt);
+       return User_Handler (Interrupt).H /= null;
+    end Is_Handler_Attached;
+ 
+    ----------------
+    -- Is_Ignored --
+    ----------------
+ 
+    function Is_Ignored (Interrupt : Interrupt_ID) return Boolean is
+    begin
+       Unimplemented ("Is_Ignored");
+       return False;
+    end Is_Ignored;
+ 
+    -------------------
+    -- Is_Registered --
+    -------------------
+ 
+    function Is_Registered (Handler : Parameterless_Handler) return Boolean is
+       type Fat_Ptr is record
+          Object_Addr  : System.Address;
+          Handler_Addr : System.Address;
+       end record;
+ 
+       function To_Fat_Ptr is new Ada.Unchecked_Conversion
+         (Parameterless_Handler, Fat_Ptr);
+ 
+       Ptr : R_Link;
+       Fat : Fat_Ptr;
+ 
+    begin
+       if Handler = null then
+          return True;
+       end if;
+ 
+       Fat := To_Fat_Ptr (Handler);
+ 
+       Ptr := Registered_Handler_Head;
+       while Ptr /= null loop
+          if Ptr.H = Fat.Handler_Addr then
+             return True;
+          end if;
+ 
+          Ptr := Ptr.Next;
+       end loop;
+ 
+       return False;
+    end Is_Registered;
+ 
+    -----------------
+    -- Is_Reserved --
+    -----------------
+ 
+    function Is_Reserved (Interrupt : Interrupt_ID) return Boolean is
+       use System.Interrupt_Management;
+    begin
+       return Reserve (System.Interrupt_Management.Interrupt_ID (Interrupt));
+    end Is_Reserved;
+ 
+    ----------------------
+    -- Notify_Interrupt --
+    ----------------------
+ 
+    --  Umbrella handler for vectored hardware interrupts (as opposed to signals
+    --  and exceptions). As opposed to the signal implementation, this handler
+    --  is installed in the vector table when the first Ada handler is attached
+    --  to the interrupt. However because VxWorks don't support disconnecting
+    --  handlers, this subprogram always test whether or not an Ada handler is
+    --  effectively attached.
+ 
+    --  Otherwise, the handler that existed prior to program startup is in the
+    --  vector table. This ensures that handlers installed by the BSP are active
+    --  unless explicitly replaced in the program text.
+ 
+    --  Each Interrupt_Server_Task has an associated binary semaphore on which
+    --  it pends once it's been started. This routine determines The appropriate
+    --  semaphore and issues a semGive call, waking the server task. When
+    --  a handler is unbound, System.Interrupts.Unbind_Handler issues a
+    --  Binary_Semaphore_Flush, and the server task deletes its semaphore
+    --  and terminates.
+ 
+    procedure Notify_Interrupt (Param : System.Address) is
+       Interrupt : constant Interrupt_ID := Interrupt_ID (Param);
+       Id        : constant Binary_Semaphore_Id := Semaphore_ID_Map (Interrupt);
+       Status    : int;
+    begin
+       if Id /= 0 then
+          Status := Binary_Semaphore_Release (Id);
+          pragma Assert (Status = 0);
+       end if;
+    end Notify_Interrupt;
+ 
+    ---------------
+    -- Reference --
+    ---------------
+ 
+    function Reference (Interrupt : Interrupt_ID) return System.Address is
+    begin
+       Check_Reserved_Interrupt (Interrupt);
+       return Storage_Elements.To_Address
+                (Storage_Elements.Integer_Address (Interrupt));
+    end Reference;
+ 
+    --------------------------------
+    -- Register_Interrupt_Handler --
+    --------------------------------
+ 
+    procedure Register_Interrupt_Handler (Handler_Addr : System.Address) is
+       New_Node_Ptr : R_Link;
+ 
+    begin
+       --  This routine registers a handler as usable for dynamic interrupt
+       --  handler association. Routines attaching and detaching handlers
+       --  dynamically should determine whether the handler is registered.
+       --  Program_Error should be raised if it is not registered.
+ 
+       --  Pragma Interrupt_Handler can only appear in a library level PO
+       --  definition and instantiation. Therefore, we do not need to implement
+       --  an unregister operation. Nor do we need to protect the queue
+       --  structure with a lock.
+ 
+       pragma Assert (Handler_Addr /= System.Null_Address);
+ 
+       New_Node_Ptr := new Registered_Handler;
+       New_Node_Ptr.H := Handler_Addr;
+ 
+       if Registered_Handler_Head = null then
+          Registered_Handler_Head := New_Node_Ptr;
+          Registered_Handler_Tail := New_Node_Ptr;
+       else
+          Registered_Handler_Tail.Next := New_Node_Ptr;
+          Registered_Handler_Tail := New_Node_Ptr;
+       end if;
+    end Register_Interrupt_Handler;
+ 
+    -----------------------
+    -- Unblock_Interrupt --
+    -----------------------
+ 
+    procedure Unblock_Interrupt (Interrupt : Interrupt_ID) is
+    begin
+       Unimplemented ("Unblock_Interrupt");
+    end Unblock_Interrupt;
+ 
+    ------------------
+    -- Unblocked_By --
+    ------------------
+ 
+    function Unblocked_By
+      (Interrupt : Interrupt_ID) return System.Tasking.Task_Id
+    is
+    begin
+       Unimplemented ("Unblocked_By");
+       return Null_Task;
+    end Unblocked_By;
+ 
+    ------------------------
+    -- Unignore_Interrupt --
+    ------------------------
+ 
+    procedure Unignore_Interrupt (Interrupt : Interrupt_ID) is
+    begin
+       Unimplemented ("Unignore_Interrupt");
+    end Unignore_Interrupt;
+ 
+    -------------------
+    -- Unimplemented --
+    -------------------
+ 
+    procedure Unimplemented (Feature : String) is
+    begin
+       raise Program_Error with Feature & " not implemented on VxWorks";
+    end Unimplemented;
+ 
+    -----------------------
+    -- Interrupt_Manager --
+    -----------------------
+ 
+    task body Interrupt_Manager is
+       --  By making this task independent of any master, when the process goes
+       --  away, the Interrupt_Manager will terminate gracefully.
+ 
+       Ignore : constant Boolean := System.Tasking.Utilities.Make_Independent;
+       pragma Unreferenced (Ignore);
+ 
+       --------------------
+       -- Local Routines --
+       --------------------
+ 
+       procedure Bind_Handler (Interrupt : Interrupt_ID);
+       --  This procedure does not do anything if a signal is blocked.
+       --  Otherwise, we have to interrupt Server_Task for status change
+       --  through a wakeup signal.
+ 
+       procedure Unbind_Handler (Interrupt : Interrupt_ID);
+       --  This procedure does not do anything if a signal is blocked.
+       --  Otherwise, we have to interrupt Server_Task for status change
+       --  through an abort signal.
+ 
+       procedure Unprotected_Exchange_Handler
+         (Old_Handler : out Parameterless_Handler;
+          New_Handler : Parameterless_Handler;
+          Interrupt   : Interrupt_ID;
+          Static      : Boolean;
+          Restoration : Boolean := False);
+ 
+       procedure Unprotected_Detach_Handler
+         (Interrupt : Interrupt_ID;
+          Static    : Boolean);
+ 
+       ------------------
+       -- Bind_Handler --
+       ------------------
+ 
+       procedure Bind_Handler (Interrupt : Interrupt_ID) is
+       begin
+          Install_Umbrella_Handler
+            (HW_Interrupt (Interrupt), Notify_Interrupt'Access);
+       end Bind_Handler;
+ 
+       --------------------
+       -- Unbind_Handler --
+       --------------------
+ 
+       procedure Unbind_Handler (Interrupt : Interrupt_ID) is
+          Status : int;
+ 
+       begin
+          --  Flush server task off semaphore, allowing it to terminate
+ 
+          Status := Binary_Semaphore_Flush (Semaphore_ID_Map (Interrupt));
+          pragma Assert (Status = 0);
+       end Unbind_Handler;
+ 
+       --------------------------------
+       -- Unprotected_Detach_Handler --
+       --------------------------------
+ 
+       procedure Unprotected_Detach_Handler
+         (Interrupt : Interrupt_ID;
+          Static    : Boolean)
+       is
+          Old_Handler : Parameterless_Handler;
+       begin
+          if User_Entry (Interrupt).T /= Null_Task then
+ 
+             --  If an interrupt entry is installed raise Program_Error
+             --  (propagate it to the caller).
+ 
+             raise Program_Error with
+               "an interrupt entry is already installed";
+          end if;
+ 
+          --  Note : Static = True will pass the following check. This is the
+          --  case when we want to detach a handler regardless of the static
+          --  status of the Current_Handler.
+ 
+          if not Static and then User_Handler (Interrupt).Static then
+ 
+             --  Trying to detach a static Interrupt Handler, raise
+             --  Program_Error.
+ 
+             raise Program_Error with
+               "trying to detach a static Interrupt Handler";
+          end if;
+ 
+          Old_Handler := User_Handler (Interrupt).H;
+ 
+          --  The new handler
+ 
+          User_Handler (Interrupt).H := null;
+          User_Handler (Interrupt).Static := False;
+ 
+          if Old_Handler /= null then
+             Unbind_Handler (Interrupt);
+          end if;
+       end Unprotected_Detach_Handler;
+ 
+       ----------------------------------
+       -- Unprotected_Exchange_Handler --
+       ----------------------------------
+ 
+       procedure Unprotected_Exchange_Handler
+         (Old_Handler : out Parameterless_Handler;
+          New_Handler : Parameterless_Handler;
+          Interrupt   : Interrupt_ID;
+          Static      : Boolean;
+          Restoration : Boolean := False)
+       is
+       begin
+          if User_Entry (Interrupt).T /= Null_Task then
+ 
+             --  If an interrupt entry is already installed, raise
+             --  Program_Error (propagate it to the caller).
+ 
+             raise Program_Error with "an interrupt is already installed";
+          end if;
+ 
+          --  Note : A null handler with Static = True will pass the following
+          --  check. This is the case when we want to detach a handler
+          --  regardless of the Static status of Current_Handler.
+ 
+          --  We don't check anything if Restoration is True, since we may be
+          --  detaching a static handler to restore a dynamic one.
+ 
+          if not Restoration and then not Static
+            and then (User_Handler (Interrupt).Static
+ 
+             --  Trying to overwrite a static Interrupt Handler with a dynamic
+             --  Handler
+ 
+             --  The new handler is not specified as an Interrupt Handler by a
+             --  pragma.
+ 
+            or else not Is_Registered (New_Handler))
+          then
+             raise Program_Error with
+                "trying to overwrite a static interrupt handler with a "
+                & "dynamic handler";
+          end if;
+ 
+          --  Save the old handler
+ 
+          Old_Handler := User_Handler (Interrupt).H;
+ 
+          --  The new handler
+ 
+          User_Handler (Interrupt).H := New_Handler;
+ 
+          if New_Handler = null then
+ 
+             --  The null handler means we are detaching the handler
+ 
+             User_Handler (Interrupt).Static := False;
+ 
+          else
+             User_Handler (Interrupt).Static := Static;
+          end if;
+ 
+          --  Invoke a corresponding Server_Task if not yet created. Place
+          --  Task_Id info in Server_ID array.
+ 
+          if New_Handler /= null
+            and then
+             (Server_ID (Interrupt) = Null_Task
+               or else
+                 Ada.Task_Identification.Is_Terminated
+                   (To_Ada (Server_ID (Interrupt))))
+          then
+             Interrupt_Access_Hold :=
+               new Interrupt_Server_Task (Interrupt, Binary_Semaphore_Create);
+             Server_ID (Interrupt) :=
+               To_System (Interrupt_Access_Hold.all'Identity);
+          end if;
+ 
+          if (New_Handler = null) and then Old_Handler /= null then
+ 
+             --  Restore default handler
+ 
+             Unbind_Handler (Interrupt);
+ 
+          elsif Old_Handler = null then
+ 
+             --  Save default handler
+ 
+             Bind_Handler (Interrupt);
+          end if;
+       end Unprotected_Exchange_Handler;
+ 
+    --  Start of processing for Interrupt_Manager
+ 
+    begin
+       loop
+          --  A block is needed to absorb Program_Error exception
+ 
+          declare
+             Old_Handler : Parameterless_Handler;
+ 
+          begin
+             select
+                accept Attach_Handler
+                  (New_Handler : Parameterless_Handler;
+                   Interrupt   : Interrupt_ID;
+                   Static      : Boolean;
+                   Restoration : Boolean := False)
+                do
+                   Unprotected_Exchange_Handler
+                     (Old_Handler, New_Handler, Interrupt, Static, Restoration);
+                end Attach_Handler;
+ 
+             or
+                accept Exchange_Handler
+                  (Old_Handler : out Parameterless_Handler;
+                   New_Handler : Parameterless_Handler;
+                   Interrupt   : Interrupt_ID;
+                   Static      : Boolean)
+                do
+                   Unprotected_Exchange_Handler
+                     (Old_Handler, New_Handler, Interrupt, Static);
+                end Exchange_Handler;
+ 
+             or
+                accept Detach_Handler
+                   (Interrupt : Interrupt_ID;
+                    Static    : Boolean)
+                do
+                   Unprotected_Detach_Handler (Interrupt, Static);
+                end Detach_Handler;
+ 
+             or
+                accept Bind_Interrupt_To_Entry
+                  (T         : Task_Id;
+                   E         : Task_Entry_Index;
+                   Interrupt : Interrupt_ID)
+                do
+                   --  If there is a binding already (either a procedure or an
+                   --  entry), raise Program_Error (propagate it to the caller).
+ 
+                   if User_Handler (Interrupt).H /= null
+                     or else User_Entry (Interrupt).T /= Null_Task
+                   then
+                      raise Program_Error with
+                        "a binding for this interrupt is already present";
+                   end if;
+ 
+                   User_Entry (Interrupt) := Entry_Assoc'(T => T, E => E);
+ 
+                   --  Indicate the attachment of interrupt entry in the ATCB.
+                   --  This is needed so when an interrupt entry task terminates
+                   --  the binding can be cleaned. The call to unbinding must be
+                   --  make by the task before it terminates.
+ 
+                   T.Interrupt_Entry := True;
+ 
+                   --  Invoke a corresponding Server_Task if not yet created.
+                   --  Place Task_Id info in Server_ID array.
+ 
+                   if Server_ID (Interrupt) = Null_Task
+                     or else
+                       Ada.Task_Identification.Is_Terminated
+                         (To_Ada (Server_ID (Interrupt)))
+                   then
+                      Interrupt_Access_Hold := new Interrupt_Server_Task
+                        (Interrupt, Binary_Semaphore_Create);
+                      Server_ID (Interrupt) :=
+                        To_System (Interrupt_Access_Hold.all'Identity);
+                   end if;
+ 
+                   Bind_Handler (Interrupt);
+                end Bind_Interrupt_To_Entry;
+ 
+             or
+                accept Detach_Interrupt_Entries (T : Task_Id) do
+                   for Int in Interrupt_ID'Range loop
+                      if not Is_Reserved (Int) then
+                         if User_Entry (Int).T = T then
+                            User_Entry (Int) :=
+                              Entry_Assoc'
+                                (T => Null_Task, E => Null_Task_Entry);
+                            Unbind_Handler (Int);
+                         end if;
+                      end if;
+                   end loop;
+ 
+                   --  Indicate in ATCB that no interrupt entries are attached
+ 
+                   T.Interrupt_Entry := False;
+                end Detach_Interrupt_Entries;
+             end select;
+ 
+          exception
+             --  If there is a Program_Error we just want to propagate it to
+             --  the caller and do not want to stop this task.
+ 
+             when Program_Error =>
+                null;
+ 
+             when others =>
+                pragma Assert (False);
+                null;
+          end;
+       end loop;
+ 
+    exception
+       when Standard'Abort_Signal =>
+ 
+          --  Flush interrupt server semaphores, so they can terminate
+ 
+          Finalize_Interrupt_Servers;
+          raise;
+    end Interrupt_Manager;
+ 
+    ---------------------------
+    -- Interrupt_Server_Task --
+    ---------------------------
+ 
+    --  Server task for vectored hardware interrupt handling
+ 
+    task body Interrupt_Server_Task is
+       Ignore : constant Boolean := System.Tasking.Utilities.Make_Independent;
+ 
+       Self_Id         : constant Task_Id := Self;
+       Tmp_Handler     : Parameterless_Handler;
+       Tmp_ID          : Task_Id;
+       Tmp_Entry_Index : Task_Entry_Index;
+       Status          : int;
+ 
+    begin
+       Semaphore_ID_Map (Interrupt) := Int_Sema;
+ 
+       loop
+          --  Pend on semaphore that will be triggered by the umbrella handler
+          --  when the associated interrupt comes in.
+ 
+          Status := Binary_Semaphore_Obtain (Int_Sema);
+          pragma Assert (Status = 0);
+ 
+          if User_Handler (Interrupt).H /= null then
+ 
+             --  Protected procedure handler
+ 
+             Tmp_Handler := User_Handler (Interrupt).H;
+             Tmp_Handler.all;
+ 
+          elsif User_Entry (Interrupt).T /= Null_Task then
+ 
+             --  Interrupt entry handler
+ 
+             Tmp_ID := User_Entry (Interrupt).T;
+             Tmp_Entry_Index := User_Entry (Interrupt).E;
+             System.Tasking.Rendezvous.Call_Simple
+               (Tmp_ID, Tmp_Entry_Index, System.Null_Address);
+ 
+          else
+             --  Semaphore has been flushed by an unbind operation in the
+             --  Interrupt_Manager. Terminate the server task.
+ 
+             --  Wait for the Interrupt_Manager to complete its work
+ 
+             POP.Write_Lock (Self_Id);
+ 
+             --  Unassociate the interrupt handler
+ 
+             Semaphore_ID_Map (Interrupt) := 0;
+ 
+             --  Delete the associated semaphore
+ 
+             Status := Binary_Semaphore_Delete (Int_Sema);
+ 
+             pragma Assert (Status = 0);
+ 
+             --  Set status for the Interrupt_Manager
+ 
+             Server_ID (Interrupt) := Null_Task;
+             POP.Unlock (Self_Id);
+ 
+             exit;
+          end if;
+       end loop;
+    end Interrupt_Server_Task;
+ 
+ begin
+    --  Get Interrupt_Manager's ID so that Abort_Interrupt can be sent
+ 
+    Interrupt_Manager_ID := To_System (Interrupt_Manager'Identity);
+ end System.Interrupts;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-interr__sigaction.adb gcc-8.1.0/gcc/ada/libgnarl/s-interr__sigaction.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-interr__sigaction.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-interr__sigaction.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,668 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                     S Y S T E M . I N T E R R U P T S                    --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --          Copyright (C) 1998-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is the NT version of this package
+ 
+ with Ada.Task_Identification;
+ with Ada.Unchecked_Conversion;
+ 
+ with Interfaces.C;
+ 
+ with System.Storage_Elements;
+ with System.Task_Primitives.Operations;
+ with System.Tasking.Utilities;
+ with System.Tasking.Rendezvous;
+ with System.Tasking.Initialization;
+ with System.Interrupt_Management;
+ with System.Parameters;
+ 
+ package body System.Interrupts is
+ 
+    use Parameters;
+    use Tasking;
+    use System.OS_Interface;
+    use Interfaces.C;
+ 
+    package STPO renames System.Task_Primitives.Operations;
+    package IMNG renames System.Interrupt_Management;
+ 
+    subtype int is Interfaces.C.int;
+ 
+    function To_System is new Ada.Unchecked_Conversion
+      (Ada.Task_Identification.Task_Id, Task_Id);
+ 
+    type Handler_Kind is (Unknown, Task_Entry, Protected_Procedure);
+ 
+    type Handler_Desc is record
+       Kind   : Handler_Kind := Unknown;
+       T      : Task_Id;
+       E      : Task_Entry_Index;
+       H      : Parameterless_Handler;
+       Static : Boolean := False;
+    end record;
+ 
+    task type Server_Task (Interrupt : Interrupt_ID) is
+       pragma Interrupt_Priority (System.Interrupt_Priority'Last);
+    end Server_Task;
+ 
+    type Server_Task_Access is access Server_Task;
+ 
+    Handlers        : array (Interrupt_ID) of Task_Id;
+    Descriptors     : array (Interrupt_ID) of Handler_Desc;
+    Interrupt_Count : array (Interrupt_ID) of Integer := (others => 0);
+ 
+    pragma Volatile_Components (Interrupt_Count);
+ 
+    procedure Attach_Handler
+      (New_Handler : Parameterless_Handler;
+       Interrupt   : Interrupt_ID;
+       Static      : Boolean;
+       Restoration : Boolean);
+    --  This internal procedure is needed to finalize protected objects that
+    --  contain interrupt handlers.
+ 
+    procedure Signal_Handler (Sig : Interrupt_ID);
+    pragma Convention (C, Signal_Handler);
+    --  This procedure is used to handle all the signals
+ 
+    --  Type and Head, Tail of the list containing Registered Interrupt
+    --  Handlers. These definitions are used to register the handlers
+    --  specified by the pragma Interrupt_Handler.
+ 
+    --------------------------
+    -- Handler Registration --
+    --------------------------
+ 
+    type Registered_Handler;
+    type R_Link is access all Registered_Handler;
+ 
+    type Registered_Handler is record
+       H    : System.Address := System.Null_Address;
+       Next : R_Link := null;
+    end record;
+ 
+    Registered_Handlers : R_Link := null;
+ 
+    function Is_Registered (Handler : Parameterless_Handler) return Boolean;
+    --  See if the Handler has been "pragma"ed using Interrupt_Handler.
+    --  Always consider a null handler as registered.
+ 
+    type Handler_Ptr is access procedure (Sig : Interrupt_ID);
+    pragma Convention (C, Handler_Ptr);
+ 
+    function TISR is new Ada.Unchecked_Conversion (Handler_Ptr, isr_address);
+ 
+    --------------------
+    -- Signal_Handler --
+    --------------------
+ 
+    procedure Signal_Handler (Sig : Interrupt_ID) is
+       Handler : Task_Id renames Handlers (Sig);
+ 
+    begin
+       if Intr_Attach_Reset and then
+         intr_attach (int (Sig), TISR (Signal_Handler'Access)) = FUNC_ERR
+       then
+          raise Program_Error;
+       end if;
+ 
+       if Handler /= null then
+          Interrupt_Count (Sig) := Interrupt_Count (Sig) + 1;
+          STPO.Wakeup (Handler, Interrupt_Server_Idle_Sleep);
+       end if;
+    end Signal_Handler;
+ 
+    -----------------
+    -- Is_Reserved --
+    -----------------
+ 
+    function Is_Reserved (Interrupt : Interrupt_ID) return Boolean is
+    begin
+       return IMNG.Reserve (IMNG.Interrupt_ID (Interrupt));
+    end Is_Reserved;
+ 
+    -----------------------
+    -- Is_Entry_Attached --
+    -----------------------
+ 
+    function Is_Entry_Attached (Interrupt : Interrupt_ID) return Boolean is
+    begin
+       if Is_Reserved (Interrupt) then
+          raise Program_Error with
+            "interrupt" & Interrupt_ID'Image (Interrupt) & " is reserved";
+       end if;
+ 
+       return Descriptors (Interrupt).T /= Null_Task;
+    end Is_Entry_Attached;
+ 
+    -------------------------
+    -- Is_Handler_Attached --
+    -------------------------
+ 
+    function Is_Handler_Attached (Interrupt : Interrupt_ID) return Boolean is
+    begin
+       if Is_Reserved (Interrupt) then
+          raise Program_Error with
+            "interrupt" & Interrupt_ID'Image (Interrupt) & " is reserved";
+       else
+          return Descriptors (Interrupt).Kind /= Unknown;
+       end if;
+    end Is_Handler_Attached;
+ 
+    ----------------
+    -- Is_Ignored --
+    ----------------
+ 
+    function Is_Ignored (Interrupt : Interrupt_ID) return Boolean is
+    begin
+       raise Program_Error;
+       return False;
+    end Is_Ignored;
+ 
+    ------------------
+    -- Unblocked_By --
+    ------------------
+ 
+    function Unblocked_By (Interrupt : Interrupt_ID) return Task_Id is
+    begin
+       raise Program_Error;
+       return Null_Task;
+    end Unblocked_By;
+ 
+    ----------------------
+    -- Ignore_Interrupt --
+    ----------------------
+ 
+    procedure Ignore_Interrupt (Interrupt : Interrupt_ID) is
+    begin
+       raise Program_Error;
+    end Ignore_Interrupt;
+ 
+    ------------------------
+    -- Unignore_Interrupt --
+    ------------------------
+ 
+    procedure Unignore_Interrupt (Interrupt : Interrupt_ID) is
+    begin
+       raise Program_Error;
+    end Unignore_Interrupt;
+ 
+    -------------------------------------
+    -- Has_Interrupt_Or_Attach_Handler --
+    -------------------------------------
+ 
+    function Has_Interrupt_Or_Attach_Handler
+      (Object : access Dynamic_Interrupt_Protection) return Boolean
+    is
+       pragma Unreferenced (Object);
+    begin
+       return True;
+    end Has_Interrupt_Or_Attach_Handler;
+ 
+    --------------
+    -- Finalize --
+    --------------
+ 
+    procedure Finalize (Object : in out Static_Interrupt_Protection) is
+    begin
+       --  ??? loop to be executed only when we're not doing library level
+       --  finalization, since in this case all interrupt tasks are gone.
+ 
+       for N in reverse Object.Previous_Handlers'Range loop
+          Attach_Handler
+            (New_Handler => Object.Previous_Handlers (N).Handler,
+             Interrupt   => Object.Previous_Handlers (N).Interrupt,
+             Static      => Object.Previous_Handlers (N).Static,
+             Restoration => True);
+       end loop;
+ 
+       Tasking.Protected_Objects.Entries.Finalize
+         (Tasking.Protected_Objects.Entries.Protection_Entries (Object));
+    end Finalize;
+ 
+    -------------------------------------
+    -- Has_Interrupt_Or_Attach_Handler --
+    -------------------------------------
+ 
+    function Has_Interrupt_Or_Attach_Handler
+      (Object : access Static_Interrupt_Protection) return Boolean
+    is
+       pragma Unreferenced (Object);
+    begin
+       return True;
+    end Has_Interrupt_Or_Attach_Handler;
+ 
+    ----------------------
+    -- Install_Handlers --
+    ----------------------
+ 
+    procedure Install_Handlers
+      (Object       : access Static_Interrupt_Protection;
+       New_Handlers : New_Handler_Array)
+    is
+    begin
+       for N in New_Handlers'Range loop
+ 
+          --  We need a lock around this ???
+ 
+          Object.Previous_Handlers (N).Interrupt := New_Handlers (N).Interrupt;
+          Object.Previous_Handlers (N).Static    := Descriptors
+            (New_Handlers (N).Interrupt).Static;
+ 
+          --  We call Exchange_Handler and not directly Interrupt_Manager.
+          --  Exchange_Handler so we get the Is_Reserved check.
+ 
+          Exchange_Handler
+            (Old_Handler => Object.Previous_Handlers (N).Handler,
+             New_Handler => New_Handlers (N).Handler,
+             Interrupt   => New_Handlers (N).Interrupt,
+             Static      => True);
+       end loop;
+    end Install_Handlers;
+ 
+    ---------------------------------
+    -- Install_Restricted_Handlers --
+    ---------------------------------
+ 
+    procedure Install_Restricted_Handlers
+       (Prio     : Any_Priority;
+        Handlers : New_Handler_Array)
+    is
+       pragma Unreferenced (Prio);
+    begin
+       for N in Handlers'Range loop
+          Attach_Handler (Handlers (N).Handler, Handlers (N).Interrupt, True);
+       end loop;
+    end Install_Restricted_Handlers;
+ 
+    ---------------------
+    -- Current_Handler --
+    ---------------------
+ 
+    function Current_Handler
+      (Interrupt : Interrupt_ID) return Parameterless_Handler
+    is
+    begin
+       if Is_Reserved (Interrupt) then
+          raise Program_Error;
+       end if;
+ 
+       if Descriptors (Interrupt).Kind = Protected_Procedure then
+          return Descriptors (Interrupt).H;
+       else
+          return null;
+       end if;
+    end Current_Handler;
+ 
+    --------------------
+    -- Attach_Handler --
+    --------------------
+ 
+    procedure Attach_Handler
+      (New_Handler : Parameterless_Handler;
+       Interrupt   : Interrupt_ID;
+       Static      : Boolean := False)
+    is
+    begin
+       Attach_Handler (New_Handler, Interrupt, Static, False);
+    end Attach_Handler;
+ 
+    procedure Attach_Handler
+      (New_Handler : Parameterless_Handler;
+       Interrupt   : Interrupt_ID;
+       Static      : Boolean;
+       Restoration : Boolean)
+    is
+       New_Task : Server_Task_Access;
+ 
+    begin
+       if Is_Reserved (Interrupt) then
+          raise Program_Error;
+       end if;
+ 
+       if not Restoration and then not Static
+ 
+          --  Tries to overwrite a static Interrupt Handler with dynamic handle
+ 
+         and then
+           (Descriptors (Interrupt).Static
+ 
+             --  New handler not specified as an Interrupt Handler by a pragma
+ 
+              or else not Is_Registered (New_Handler))
+       then
+          raise Program_Error with
+            "trying to overwrite a static interrupt handler with a " &
+            "dynamic handler";
+       end if;
+ 
+       if Handlers (Interrupt) = null then
+          New_Task := new Server_Task (Interrupt);
+          Handlers (Interrupt) := To_System (New_Task.all'Identity);
+       end if;
+ 
+       if intr_attach (int (Interrupt),
+         TISR (Signal_Handler'Access)) = FUNC_ERR
+       then
+          raise Program_Error;
+       end if;
+ 
+       if New_Handler = null then
+ 
+          --  The null handler means we are detaching the handler
+ 
+          Descriptors (Interrupt) :=
+            (Kind => Unknown, T => null, E => 0, H => null, Static => False);
+ 
+       else
+          Descriptors (Interrupt).Kind := Protected_Procedure;
+          Descriptors (Interrupt).H := New_Handler;
+          Descriptors (Interrupt).Static := Static;
+       end if;
+    end Attach_Handler;
+ 
+    ----------------------
+    -- Exchange_Handler --
+    ----------------------
+ 
+    procedure Exchange_Handler
+      (Old_Handler : out Parameterless_Handler;
+       New_Handler : Parameterless_Handler;
+       Interrupt   : Interrupt_ID;
+       Static      : Boolean := False)
+    is
+    begin
+       if Is_Reserved (Interrupt) then
+          raise Program_Error;
+       end if;
+ 
+       if Descriptors (Interrupt).Kind = Task_Entry then
+ 
+          --  In case we have an Interrupt Entry already installed, raise a
+          --  program error (propagate it to the caller).
+ 
+          raise Program_Error with "an interrupt is already installed";
+ 
+       else
+          Old_Handler := Current_Handler (Interrupt);
+          Attach_Handler (New_Handler, Interrupt, Static);
+       end if;
+    end Exchange_Handler;
+ 
+    --------------------
+    -- Detach_Handler --
+    --------------------
+ 
+    procedure Detach_Handler
+      (Interrupt : Interrupt_ID;
+       Static    : Boolean := False)
+    is
+    begin
+       if Is_Reserved (Interrupt) then
+          raise Program_Error;
+       end if;
+ 
+       if Descriptors (Interrupt).Kind = Task_Entry then
+          raise Program_Error with "trying to detach an interrupt entry";
+       end if;
+ 
+       if not Static and then Descriptors (Interrupt).Static then
+          raise Program_Error with
+            "trying to detach a static interrupt handler";
+       end if;
+ 
+       Descriptors (Interrupt) :=
+         (Kind => Unknown, T => null, E => 0, H => null, Static => False);
+ 
+       if intr_attach (int (Interrupt), null) = FUNC_ERR then
+          raise Program_Error;
+       end if;
+    end Detach_Handler;
+ 
+    ---------------
+    -- Reference --
+    ---------------
+ 
+    function Reference (Interrupt : Interrupt_ID) return System.Address is
+       Signal : constant System.Address :=
+                  System.Storage_Elements.To_Address
+                    (System.Storage_Elements.Integer_Address (Interrupt));
+ 
+    begin
+       if Is_Reserved (Interrupt) then
+ 
+          --  Only usable Interrupts can be used for binding it to an Entry
+ 
+          raise Program_Error;
+       end if;
+ 
+       return Signal;
+    end Reference;
+ 
+    --------------------------------
+    -- Register_Interrupt_Handler --
+    --------------------------------
+ 
+    procedure Register_Interrupt_Handler (Handler_Addr : System.Address) is
+    begin
+       Registered_Handlers :=
+        new Registered_Handler'(H => Handler_Addr, Next => Registered_Handlers);
+    end Register_Interrupt_Handler;
+ 
+    -------------------
+    -- Is_Registered --
+    -------------------
+ 
+    --  See if the Handler has been "pragma"ed using Interrupt_Handler.
+    --  Always consider a null handler as registered.
+ 
+    function Is_Registered (Handler : Parameterless_Handler) return Boolean is
+       Ptr : R_Link := Registered_Handlers;
+ 
+       type Fat_Ptr is record
+          Object_Addr  : System.Address;
+          Handler_Addr : System.Address;
+       end record;
+ 
+       function To_Fat_Ptr is new Ada.Unchecked_Conversion
+         (Parameterless_Handler, Fat_Ptr);
+ 
+       Fat : Fat_Ptr;
+ 
+    begin
+       if Handler = null then
+          return True;
+       end if;
+ 
+       Fat := To_Fat_Ptr (Handler);
+ 
+       while Ptr /= null loop
+          if Ptr.H = Fat.Handler_Addr then
+             return True;
+          end if;
+ 
+          Ptr := Ptr.Next;
+       end loop;
+ 
+       return False;
+    end Is_Registered;
+ 
+    -----------------------------
+    -- Bind_Interrupt_To_Entry --
+    -----------------------------
+ 
+    procedure Bind_Interrupt_To_Entry
+      (T       : Task_Id;
+       E       : Task_Entry_Index;
+       Int_Ref : System.Address)
+    is
+       Interrupt   : constant Interrupt_ID :=
+                       Interrupt_ID (Storage_Elements.To_Integer (Int_Ref));
+ 
+       New_Task : Server_Task_Access;
+ 
+    begin
+       if Is_Reserved (Interrupt) then
+          raise Program_Error;
+       end if;
+ 
+       if Descriptors (Interrupt).Kind /= Unknown then
+          raise Program_Error with
+            "a binding for this interrupt is already present";
+       end if;
+ 
+       if Handlers (Interrupt) = null then
+          New_Task := new Server_Task (Interrupt);
+          Handlers (Interrupt) := To_System (New_Task.all'Identity);
+       end if;
+ 
+       if intr_attach (int (Interrupt),
+         TISR (Signal_Handler'Access)) = FUNC_ERR
+       then
+          raise Program_Error;
+       end if;
+ 
+       Descriptors (Interrupt).Kind := Task_Entry;
+       Descriptors (Interrupt).T := T;
+       Descriptors (Interrupt).E := E;
+ 
+       --  Indicate the attachment of Interrupt Entry in ATCB. This is needed so
+       --  that when an Interrupt Entry task terminates the binding can be
+       --  cleaned up. The call to unbinding must be make by the task before it
+       --  terminates.
+ 
+       T.Interrupt_Entry := True;
+    end Bind_Interrupt_To_Entry;
+ 
+    ------------------------------
+    -- Detach_Interrupt_Entries --
+    ------------------------------
+ 
+    procedure Detach_Interrupt_Entries (T : Task_Id) is
+    begin
+       for J in Interrupt_ID loop
+          if not Is_Reserved (J) then
+             if Descriptors (J).Kind = Task_Entry
+               and then Descriptors (J).T = T
+             then
+                Descriptors (J).Kind := Unknown;
+ 
+                if intr_attach (int (J), null) = FUNC_ERR then
+                   raise Program_Error;
+                end if;
+             end if;
+          end if;
+       end loop;
+ 
+       --  Indicate in ATCB that no Interrupt Entries are attached
+ 
+       T.Interrupt_Entry := True;
+    end Detach_Interrupt_Entries;
+ 
+    ---------------------
+    -- Block_Interrupt --
+    ---------------------
+ 
+    procedure Block_Interrupt (Interrupt : Interrupt_ID) is
+    begin
+       raise Program_Error;
+    end Block_Interrupt;
+ 
+    -----------------------
+    -- Unblock_Interrupt --
+    -----------------------
+ 
+    procedure Unblock_Interrupt (Interrupt : Interrupt_ID) is
+    begin
+       raise Program_Error;
+    end Unblock_Interrupt;
+ 
+    ----------------
+    -- Is_Blocked --
+    ----------------
+ 
+    function Is_Blocked (Interrupt : Interrupt_ID) return Boolean is
+    begin
+       raise Program_Error;
+       return False;
+    end Is_Blocked;
+ 
+    task body Server_Task is
+       Ignore : constant Boolean := Utilities.Make_Independent;
+ 
+       Desc    : Handler_Desc renames Descriptors (Interrupt);
+       Self_Id : constant Task_Id := STPO.Self;
+       Temp    : Parameterless_Handler;
+ 
+    begin
+       loop
+          while Interrupt_Count (Interrupt) > 0 loop
+             Interrupt_Count (Interrupt) := Interrupt_Count (Interrupt) - 1;
+             begin
+                case Desc.Kind is
+                   when Unknown =>
+                      null;
+                   when Task_Entry =>
+                      Rendezvous.Call_Simple (Desc.T, Desc.E, Null_Address);
+                   when Protected_Procedure =>
+                      Temp := Desc.H;
+                      Temp.all;
+                end case;
+             exception
+                when others => null;
+             end;
+          end loop;
+ 
+          Initialization.Defer_Abort (Self_Id);
+ 
+          if Single_Lock then
+             STPO.Lock_RTS;
+          end if;
+ 
+          STPO.Write_Lock (Self_Id);
+          Self_Id.Common.State := Interrupt_Server_Idle_Sleep;
+          STPO.Sleep (Self_Id, Interrupt_Server_Idle_Sleep);
+          Self_Id.Common.State := Runnable;
+          STPO.Unlock (Self_Id);
+ 
+          if Single_Lock then
+             STPO.Unlock_RTS;
+          end if;
+ 
+          Initialization.Undefer_Abort (Self_Id);
+ 
+          --  Undefer abort here to allow a window for this task to be aborted
+          --  at the time of system shutdown.
+ 
+       end loop;
+    end Server_Task;
+ 
+ end System.Interrupts;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-interr__vxworks.adb gcc-8.1.0/gcc/ada/libgnarl/s-interr__vxworks.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-interr__vxworks.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-interr__vxworks.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,1127 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                     S Y S T E M . I N T E R R U P T S                    --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --         Copyright (C) 1992-2018, Free Software Foundation, Inc.          --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Invariants:
+ 
+ --  All user-handlable signals are masked at all times in all tasks/threads
+ --  except possibly for the Interrupt_Manager task.
+ 
+ --  When a user task wants to have the effect of masking/unmasking an signal,
+ --  it must call Block_Interrupt/Unblock_Interrupt, which will have the effect
+ --  of unmasking/masking the signal in the Interrupt_Manager task. These
+ --  comments do not apply to vectored hardware interrupts, which may be masked
+ --  or unmasked using routined interfaced to the relevant embedded RTOS system
+ --  calls.
+ 
+ --  Once we associate a Signal_Server_Task with an signal, the task never goes
+ --  away, and we never remove the association. On the other hand, it is more
+ --  convenient to terminate an associated Interrupt_Server_Task for a vectored
+ --  hardware interrupt (since we use a binary semaphore for synchronization
+ --  with the umbrella handler).
+ 
+ --  There is no more than one signal per Signal_Server_Task and no more than
+ --  one Signal_Server_Task per signal. The same relation holds for hardware
+ --  interrupts and Interrupt_Server_Task's at any given time. That is, only
+ --  one non-terminated Interrupt_Server_Task exists for a give interrupt at
+ --  any time.
+ 
+ --  Within this package, the lock L is used to protect the various status
+ --  tables. If there is a Server_Task associated with a signal or interrupt,
+ --  we use the per-task lock of the Server_Task instead so that we protect the
+ --  status between Interrupt_Manager and Server_Task. Protection among service
+ --  requests are ensured via user calls to the Interrupt_Manager entries.
+ 
+ --  This is reasonably generic version of this package, supporting vectored
+ --  hardware interrupts using non-RTOS specific adapter routines which should
+ --  easily implemented on any RTOS capable of supporting GNAT.
+ 
+ with Ada.Unchecked_Conversion;
+ with Ada.Task_Identification;
+ 
+ with Interfaces.C; use Interfaces.C;
+ with System.OS_Interface; use System.OS_Interface;
+ with System.Interrupt_Management;
+ with System.Task_Primitives.Operations;
+ with System.Storage_Elements;
+ with System.Tasking.Utilities;
+ 
+ with System.Tasking.Rendezvous;
+ pragma Elaborate_All (System.Tasking.Rendezvous);
+ 
+ package body System.Interrupts is
+ 
+    use Tasking;
+ 
+    package POP renames System.Task_Primitives.Operations;
+ 
+    function To_Ada is new Ada.Unchecked_Conversion
+      (System.Tasking.Task_Id, Ada.Task_Identification.Task_Id);
+ 
+    function To_System is new Ada.Unchecked_Conversion
+      (Ada.Task_Identification.Task_Id, Task_Id);
+ 
+    -----------------
+    -- Local Tasks --
+    -----------------
+ 
+    --  WARNING: System.Tasking.Stages performs calls to this task with low-
+    --  level constructs. Do not change this spec without synchronizing it.
+ 
+    task Interrupt_Manager is
+       entry Detach_Interrupt_Entries (T : Task_Id);
+ 
+       entry Attach_Handler
+         (New_Handler : Parameterless_Handler;
+          Interrupt   : Interrupt_ID;
+          Static      : Boolean;
+          Restoration : Boolean := False);
+ 
+       entry Exchange_Handler
+         (Old_Handler : out Parameterless_Handler;
+          New_Handler : Parameterless_Handler;
+          Interrupt   : Interrupt_ID;
+          Static      : Boolean);
+ 
+       entry Detach_Handler
+         (Interrupt : Interrupt_ID;
+          Static    : Boolean);
+ 
+       entry Bind_Interrupt_To_Entry
+         (T         : Task_Id;
+          E         : Task_Entry_Index;
+          Interrupt : Interrupt_ID);
+ 
+       pragma Interrupt_Priority (System.Interrupt_Priority'First);
+    end Interrupt_Manager;
+ 
+    task type Interrupt_Server_Task
+      (Interrupt : Interrupt_ID;
+       Int_Sema  : Binary_Semaphore_Id)
+    is
+       --  Server task for vectored hardware interrupt handling
+ 
+       pragma Interrupt_Priority (System.Interrupt_Priority'First + 2);
+    end Interrupt_Server_Task;
+ 
+    type Interrupt_Task_Access is access Interrupt_Server_Task;
+ 
+    -------------------------------
+    -- Local Types and Variables --
+    -------------------------------
+ 
+    type Entry_Assoc is record
+       T : Task_Id;
+       E : Task_Entry_Index;
+    end record;
+ 
+    type Handler_Assoc is record
+       H      : Parameterless_Handler;
+       Static : Boolean;   --  Indicates static binding;
+    end record;
+ 
+    User_Handler : array (Interrupt_ID) of Handler_Assoc :=
+      (others => (null, Static => False));
+    pragma Volatile_Components (User_Handler);
+    --  Holds the protected procedure handler (if any) and its Static
+    --  information for each interrupt or signal. A handler is static iff it
+    --  is specified through the pragma Attach_Handler.
+ 
+    User_Entry : array (Interrupt_ID) of Entry_Assoc :=
+                   (others => (T => Null_Task, E => Null_Task_Entry));
+    pragma Volatile_Components (User_Entry);
+    --  Holds the task and entry index (if any) for each interrupt / signal
+ 
+    --  Type and Head, Tail of the list containing Registered Interrupt
+    --  Handlers. These definitions are used to register the handlers
+    --  specified by the pragma Interrupt_Handler.
+ 
+    type Registered_Handler;
+    type R_Link is access all Registered_Handler;
+ 
+    type Registered_Handler is record
+       H    : System.Address := System.Null_Address;
+       Next : R_Link := null;
+    end record;
+ 
+    Registered_Handler_Head : R_Link := null;
+    Registered_Handler_Tail : R_Link := null;
+ 
+    Server_ID : array (Interrupt_ID) of System.Tasking.Task_Id :=
+                  (others => System.Tasking.Null_Task);
+    pragma Atomic_Components (Server_ID);
+    --  Holds the Task_Id of the Server_Task for each interrupt / signal.
+    --  Task_Id is needed to accomplish locking per interrupt base. Also
+    --  is needed to determine whether to create a new Server_Task.
+ 
+    Semaphore_ID_Map : array
+      (Interrupt_ID range 0 .. System.OS_Interface.Max_HW_Interrupt) of
+         Binary_Semaphore_Id := (others => 0);
+    --  Array of binary semaphores associated with vectored interrupts. Note
+    --  that the last bound should be Max_HW_Interrupt, but this will raise
+    --  Storage_Error if Num_HW_Interrupts is null so use extra 4 bytes instead.
+ 
+    Interrupt_Access_Hold : Interrupt_Task_Access;
+    --  Variable for allocating an Interrupt_Server_Task
+ 
+    Handler_Installed : array (HW_Interrupt) of Boolean := (others => False);
+    --  True if Notify_Interrupt was connected to the interrupt. Handlers can
+    --  be connected but disconnection is not possible on VxWorks. Therefore
+    --  we ensure Notify_Installed is connected at most once.
+ 
+    type Interrupt_Connector is access function
+      (Vector    : Interrupt_Vector;
+       Handler   : Interrupt_Handler;
+       Parameter : System.Address := System.Null_Address) return int;
+    --  Profile must match VxWorks intConnect()
+ 
+    Interrupt_Connect : Interrupt_Connector :=
+      System.OS_Interface.Interrupt_Connect'Access;
+    pragma Export (C, Interrupt_Connect, "__gnat_user_int_connect");
+    --  Allow user alternatives to the OS implementation of
+    --  System.OS_Interface.Interrupt_Connect. This allows the user to
+    --  associate a handler with an interrupt source when an alternate routine
+    --  is needed to do so. The association is performed in
+    --  Interfaces.VxWorks.Interrupt_Connections. Defaults to the standard OS
+    --  connection routine.
+ 
+    -----------------------
+    -- Local Subprograms --
+    -----------------------
+ 
+    procedure Check_Reserved_Interrupt (Interrupt : Interrupt_ID);
+    --  Check if Id is a reserved interrupt, and if so raise Program_Error
+    --  with an appropriate message, otherwise return.
+ 
+    procedure Finalize_Interrupt_Servers;
+    --  Unbind the handlers for hardware interrupt server tasks at program
+    --  termination.
+ 
+    function Is_Registered (Handler : Parameterless_Handler) return Boolean;
+    --  See if Handler has been "pragma"ed using Interrupt_Handler.
+    --  Always consider a null handler as registered.
+ 
+    procedure Notify_Interrupt (Param : System.Address);
+    pragma Convention (C, Notify_Interrupt);
+    --  Umbrella handler for vectored interrupts (not signals)
+ 
+    procedure Install_Umbrella_Handler
+      (Interrupt : HW_Interrupt;
+       Handler   : System.OS_Interface.Interrupt_Handler);
+    --  Install the runtime umbrella handler for a vectored hardware
+    --  interrupt
+ 
+    procedure Unimplemented (Feature : String);
+    pragma No_Return (Unimplemented);
+    --  Used to mark a call to an unimplemented function. Raises Program_Error
+    --  with an appropriate message noting that Feature is unimplemented.
+ 
+    --------------------
+    -- Attach_Handler --
+    --------------------
+ 
+    --  Calling this procedure with New_Handler = null and Static = True
+    --  means we want to detach the current handler regardless of the previous
+    --  handler's binding status (i.e. do not care if it is a dynamic or static
+    --  handler).
+ 
+    --  This option is needed so that during the finalization of a PO, we can
+    --  detach handlers attached through pragma Attach_Handler.
+ 
+    procedure Attach_Handler
+      (New_Handler : Parameterless_Handler;
+       Interrupt   : Interrupt_ID;
+       Static      : Boolean := False) is
+    begin
+       Check_Reserved_Interrupt (Interrupt);
+       Interrupt_Manager.Attach_Handler (New_Handler, Interrupt, Static);
+    end Attach_Handler;
+ 
+    -----------------------------
+    -- Bind_Interrupt_To_Entry --
+    -----------------------------
+ 
+    --  This procedure raises a Program_Error if it tries to
+    --  bind an interrupt to which an Entry or a Procedure is
+    --  already bound.
+ 
+    procedure Bind_Interrupt_To_Entry
+      (T       : Task_Id;
+       E       : Task_Entry_Index;
+       Int_Ref : System.Address)
+    is
+       Interrupt : constant Interrupt_ID :=
+                     Interrupt_ID (Storage_Elements.To_Integer (Int_Ref));
+    begin
+       Check_Reserved_Interrupt (Interrupt);
+       Interrupt_Manager.Bind_Interrupt_To_Entry (T, E, Interrupt);
+    end Bind_Interrupt_To_Entry;
+ 
+    ---------------------
+    -- Block_Interrupt --
+    ---------------------
+ 
+    procedure Block_Interrupt (Interrupt : Interrupt_ID) is
+    begin
+       Unimplemented ("Block_Interrupt");
+    end Block_Interrupt;
+ 
+    ------------------------------
+    -- Check_Reserved_Interrupt --
+    ------------------------------
+ 
+    procedure Check_Reserved_Interrupt (Interrupt : Interrupt_ID) is
+    begin
+       if Is_Reserved (Interrupt) then
+          raise Program_Error with
+            "interrupt" & Interrupt_ID'Image (Interrupt) & " is reserved";
+       else
+          return;
+       end if;
+    end Check_Reserved_Interrupt;
+ 
+    ---------------------
+    -- Current_Handler --
+    ---------------------
+ 
+    function Current_Handler
+      (Interrupt : Interrupt_ID) return Parameterless_Handler
+    is
+    begin
+       Check_Reserved_Interrupt (Interrupt);
+ 
+       --  ??? Since Parameterless_Handler is not Atomic, the current
+       --  implementation is wrong. We need a new service in Interrupt_Manager
+       --  to ensure atomicity.
+ 
+       return User_Handler (Interrupt).H;
+    end Current_Handler;
+ 
+    --------------------
+    -- Detach_Handler --
+    --------------------
+ 
+    --  Calling this procedure with Static = True means we want to Detach the
+    --  current handler regardless of the previous handler's binding status
+    --  (i.e. do not care if it is a dynamic or static handler).
+ 
+    --  This option is needed so that during the finalization of a PO, we can
+    --  detach handlers attached through pragma Attach_Handler.
+ 
+    procedure Detach_Handler
+      (Interrupt : Interrupt_ID;
+       Static    : Boolean := False)
+    is
+    begin
+       Check_Reserved_Interrupt (Interrupt);
+       Interrupt_Manager.Detach_Handler (Interrupt, Static);
+    end Detach_Handler;
+ 
+    ------------------------------
+    -- Detach_Interrupt_Entries --
+    ------------------------------
+ 
+    procedure Detach_Interrupt_Entries (T : Task_Id) is
+    begin
+       Interrupt_Manager.Detach_Interrupt_Entries (T);
+    end Detach_Interrupt_Entries;
+ 
+    ----------------------
+    -- Exchange_Handler --
+    ----------------------
+ 
+    --  Calling this procedure with New_Handler = null and Static = True
+    --  means we want to detach the current handler regardless of the previous
+    --  handler's binding status (i.e. we do not care if it is a dynamic or
+    --  static handler).
+ 
+    --  This option is needed so that during the finalization of a PO, we can
+    --  detach handlers attached through pragma Attach_Handler.
+ 
+    procedure Exchange_Handler
+      (Old_Handler : out Parameterless_Handler;
+       New_Handler : Parameterless_Handler;
+       Interrupt   : Interrupt_ID;
+       Static      : Boolean := False)
+    is
+    begin
+       Check_Reserved_Interrupt (Interrupt);
+       Interrupt_Manager.Exchange_Handler
+         (Old_Handler, New_Handler, Interrupt, Static);
+    end Exchange_Handler;
+ 
+    --------------
+    -- Finalize --
+    --------------
+ 
+    procedure Finalize (Object : in out Static_Interrupt_Protection) is
+    begin
+       --  ??? loop to be executed only when we're not doing library level
+       --  finalization, since in this case all interrupt / signal tasks are
+       --  gone.
+ 
+       if not Interrupt_Manager'Terminated then
+          for N in reverse Object.Previous_Handlers'Range loop
+             Interrupt_Manager.Attach_Handler
+               (New_Handler => Object.Previous_Handlers (N).Handler,
+                Interrupt   => Object.Previous_Handlers (N).Interrupt,
+                Static      => Object.Previous_Handlers (N).Static,
+                Restoration => True);
+          end loop;
+       end if;
+ 
+       Tasking.Protected_Objects.Entries.Finalize
+         (Tasking.Protected_Objects.Entries.Protection_Entries (Object));
+    end Finalize;
+ 
+    --------------------------------
+    -- Finalize_Interrupt_Servers --
+    --------------------------------
+ 
+    --  Restore default handlers for interrupt servers
+ 
+    --  This is called by the Interrupt_Manager task when it receives the abort
+    --  signal during program finalization.
+ 
+    procedure Finalize_Interrupt_Servers is
+       HW_Interrupts : constant Boolean := HW_Interrupt'Last >= 0;
+    begin
+       if HW_Interrupts then
+          for Int in HW_Interrupt loop
+             if Server_ID (Interrupt_ID (Int)) /= null
+               and then
+                 not Ada.Task_Identification.Is_Terminated
+                  (To_Ada (Server_ID (Interrupt_ID (Int))))
+             then
+                Interrupt_Manager.Attach_Handler
+                  (New_Handler => null,
+                   Interrupt   => Interrupt_ID (Int),
+                   Static      => True,
+                   Restoration => True);
+             end if;
+          end loop;
+       end if;
+    end Finalize_Interrupt_Servers;
+ 
+    -------------------------------------
+    -- Has_Interrupt_Or_Attach_Handler --
+    -------------------------------------
+ 
+    function Has_Interrupt_Or_Attach_Handler
+      (Object : access Dynamic_Interrupt_Protection)
+       return   Boolean
+    is
+       pragma Unreferenced (Object);
+    begin
+       return True;
+    end Has_Interrupt_Or_Attach_Handler;
+ 
+    function Has_Interrupt_Or_Attach_Handler
+      (Object : access Static_Interrupt_Protection)
+       return   Boolean
+    is
+       pragma Unreferenced (Object);
+    begin
+       return True;
+    end Has_Interrupt_Or_Attach_Handler;
+ 
+    ----------------------
+    -- Ignore_Interrupt --
+    ----------------------
+ 
+    procedure Ignore_Interrupt (Interrupt : Interrupt_ID) is
+    begin
+       Unimplemented ("Ignore_Interrupt");
+    end Ignore_Interrupt;
+ 
+    ----------------------
+    -- Install_Handlers --
+    ----------------------
+ 
+    procedure Install_Handlers
+      (Object       : access Static_Interrupt_Protection;
+       New_Handlers : New_Handler_Array)
+    is
+    begin
+       for N in New_Handlers'Range loop
+ 
+          --  We need a lock around this ???
+ 
+          Object.Previous_Handlers (N).Interrupt := New_Handlers (N).Interrupt;
+          Object.Previous_Handlers (N).Static    := User_Handler
+            (New_Handlers (N).Interrupt).Static;
+ 
+          --  We call Exchange_Handler and not directly Interrupt_Manager.
+          --  Exchange_Handler so we get the Is_Reserved check.
+ 
+          Exchange_Handler
+            (Old_Handler => Object.Previous_Handlers (N).Handler,
+             New_Handler => New_Handlers (N).Handler,
+             Interrupt   => New_Handlers (N).Interrupt,
+             Static      => True);
+       end loop;
+    end Install_Handlers;
+ 
+    ---------------------------------
+    -- Install_Restricted_Handlers --
+    ---------------------------------
+ 
+    procedure Install_Restricted_Handlers
+       (Prio     : Any_Priority;
+        Handlers : New_Handler_Array)
+    is
+       pragma Unreferenced (Prio);
+    begin
+       for N in Handlers'Range loop
+          Attach_Handler (Handlers (N).Handler, Handlers (N).Interrupt, True);
+       end loop;
+    end Install_Restricted_Handlers;
+ 
+    ------------------------------
+    -- Install_Umbrella_Handler --
+    ------------------------------
+ 
+    procedure Install_Umbrella_Handler
+      (Interrupt : HW_Interrupt;
+       Handler   : System.OS_Interface.Interrupt_Handler)
+    is
+       Vec : constant Interrupt_Vector :=
+               Interrupt_Number_To_Vector (int (Interrupt));
+ 
+       Status : int;
+ 
+    begin
+       --  Only install umbrella handler when no Ada handler has already been
+       --  installed. Note that the interrupt number is passed as a parameter
+       --  when an interrupt occurs, so the umbrella handler has a different
+       --  wrapper generated by the connector routine for each interrupt
+       --  number.
+ 
+       if not Handler_Installed (Interrupt) then
+          Status :=
+            Interrupt_Connect.all (Vec, Handler, System.Address (Interrupt));
+          pragma Assert (Status = 0);
+ 
+          Handler_Installed (Interrupt) := True;
+       end if;
+    end Install_Umbrella_Handler;
+ 
+    ----------------
+    -- Is_Blocked --
+    ----------------
+ 
+    function Is_Blocked (Interrupt : Interrupt_ID) return Boolean is
+    begin
+       Unimplemented ("Is_Blocked");
+       return False;
+    end Is_Blocked;
+ 
+    -----------------------
+    -- Is_Entry_Attached --
+    -----------------------
+ 
+    function Is_Entry_Attached (Interrupt : Interrupt_ID) return Boolean is
+    begin
+       Check_Reserved_Interrupt (Interrupt);
+       return User_Entry (Interrupt).T /= Null_Task;
+    end Is_Entry_Attached;
+ 
+    -------------------------
+    -- Is_Handler_Attached --
+    -------------------------
+ 
+    function Is_Handler_Attached (Interrupt : Interrupt_ID) return Boolean is
+    begin
+       Check_Reserved_Interrupt (Interrupt);
+       return User_Handler (Interrupt).H /= null;
+    end Is_Handler_Attached;
+ 
+    ----------------
+    -- Is_Ignored --
+    ----------------
+ 
+    function Is_Ignored (Interrupt : Interrupt_ID) return Boolean is
+    begin
+       Unimplemented ("Is_Ignored");
+       return False;
+    end Is_Ignored;
+ 
+    -------------------
+    -- Is_Registered --
+    -------------------
+ 
+    function Is_Registered (Handler : Parameterless_Handler) return Boolean is
+       type Fat_Ptr is record
+          Object_Addr  : System.Address;
+          Handler_Addr : System.Address;
+       end record;
+ 
+       function To_Fat_Ptr is new Ada.Unchecked_Conversion
+         (Parameterless_Handler, Fat_Ptr);
+ 
+       Ptr : R_Link;
+       Fat : Fat_Ptr;
+ 
+    begin
+       if Handler = null then
+          return True;
+       end if;
+ 
+       Fat := To_Fat_Ptr (Handler);
+ 
+       Ptr := Registered_Handler_Head;
+       while Ptr /= null loop
+          if Ptr.H = Fat.Handler_Addr then
+             return True;
+          end if;
+ 
+          Ptr := Ptr.Next;
+       end loop;
+ 
+       return False;
+    end Is_Registered;
+ 
+    -----------------
+    -- Is_Reserved --
+    -----------------
+ 
+    function Is_Reserved (Interrupt : Interrupt_ID) return Boolean is
+       use System.Interrupt_Management;
+    begin
+       return Reserve (System.Interrupt_Management.Interrupt_ID (Interrupt));
+    end Is_Reserved;
+ 
+    ----------------------
+    -- Notify_Interrupt --
+    ----------------------
+ 
+    --  Umbrella handler for vectored hardware interrupts (as opposed to signals
+    --  and exceptions). As opposed to the signal implementation, this handler
+    --  is installed in the vector table when the first Ada handler is attached
+    --  to the interrupt. However because VxWorks don't support disconnecting
+    --  handlers, this subprogram always test whether or not an Ada handler is
+    --  effectively attached.
+ 
+    --  Otherwise, the handler that existed prior to program startup is in the
+    --  vector table. This ensures that handlers installed by the BSP are active
+    --  unless explicitly replaced in the program text.
+ 
+    --  Each Interrupt_Server_Task has an associated binary semaphore on which
+    --  it pends once it's been started. This routine determines The appropriate
+    --  semaphore and issues a semGive call, waking the server task. When
+    --  a handler is unbound, System.Interrupts.Unbind_Handler issues a
+    --  Binary_Semaphore_Flush, and the server task deletes its semaphore
+    --  and terminates.
+ 
+    procedure Notify_Interrupt (Param : System.Address) is
+       Interrupt : constant Interrupt_ID := Interrupt_ID (Param);
+       Id        : constant Binary_Semaphore_Id := Semaphore_ID_Map (Interrupt);
+       Status    : int;
+    begin
+       if Id /= 0 then
+          Status := Binary_Semaphore_Release (Id);
+          pragma Assert (Status = 0);
+       end if;
+    end Notify_Interrupt;
+ 
+    ---------------
+    -- Reference --
+    ---------------
+ 
+    function Reference (Interrupt : Interrupt_ID) return System.Address is
+    begin
+       Check_Reserved_Interrupt (Interrupt);
+       return Storage_Elements.To_Address
+                (Storage_Elements.Integer_Address (Interrupt));
+    end Reference;
+ 
+    --------------------------------
+    -- Register_Interrupt_Handler --
+    --------------------------------
+ 
+    procedure Register_Interrupt_Handler (Handler_Addr : System.Address) is
+       New_Node_Ptr : R_Link;
+ 
+    begin
+       --  This routine registers a handler as usable for dynamic interrupt
+       --  handler association. Routines attaching and detaching handlers
+       --  dynamically should determine whether the handler is registered.
+       --  Program_Error should be raised if it is not registered.
+ 
+       --  Pragma Interrupt_Handler can only appear in a library level PO
+       --  definition and instantiation. Therefore, we do not need to implement
+       --  an unregister operation. Nor do we need to protect the queue
+       --  structure with a lock.
+ 
+       pragma Assert (Handler_Addr /= System.Null_Address);
+ 
+       New_Node_Ptr := new Registered_Handler;
+       New_Node_Ptr.H := Handler_Addr;
+ 
+       if Registered_Handler_Head = null then
+          Registered_Handler_Head := New_Node_Ptr;
+          Registered_Handler_Tail := New_Node_Ptr;
+       else
+          Registered_Handler_Tail.Next := New_Node_Ptr;
+          Registered_Handler_Tail := New_Node_Ptr;
+       end if;
+    end Register_Interrupt_Handler;
+ 
+    -----------------------
+    -- Unblock_Interrupt --
+    -----------------------
+ 
+    procedure Unblock_Interrupt (Interrupt : Interrupt_ID) is
+    begin
+       Unimplemented ("Unblock_Interrupt");
+    end Unblock_Interrupt;
+ 
+    ------------------
+    -- Unblocked_By --
+    ------------------
+ 
+    function Unblocked_By
+      (Interrupt : Interrupt_ID) return System.Tasking.Task_Id
+    is
+    begin
+       Unimplemented ("Unblocked_By");
+       return Null_Task;
+    end Unblocked_By;
+ 
+    ------------------------
+    -- Unignore_Interrupt --
+    ------------------------
+ 
+    procedure Unignore_Interrupt (Interrupt : Interrupt_ID) is
+    begin
+       Unimplemented ("Unignore_Interrupt");
+    end Unignore_Interrupt;
+ 
+    -------------------
+    -- Unimplemented --
+    -------------------
+ 
+    procedure Unimplemented (Feature : String) is
+    begin
+       raise Program_Error with Feature & " not implemented on VxWorks";
+    end Unimplemented;
+ 
+    -----------------------
+    -- Interrupt_Manager --
+    -----------------------
+ 
+    task body Interrupt_Manager is
+       --  By making this task independent of any master, when the process goes
+       --  away, the Interrupt_Manager will terminate gracefully.
+ 
+       Ignore : constant Boolean := System.Tasking.Utilities.Make_Independent;
+       pragma Unreferenced (Ignore);
+ 
+       --------------------
+       -- Local Routines --
+       --------------------
+ 
+       procedure Bind_Handler (Interrupt : Interrupt_ID);
+       --  This procedure does not do anything if a signal is blocked.
+       --  Otherwise, we have to interrupt Server_Task for status change
+       --  through a wakeup signal.
+ 
+       procedure Unbind_Handler (Interrupt : Interrupt_ID);
+       --  This procedure does not do anything if a signal is blocked.
+       --  Otherwise, we have to interrupt Server_Task for status change
+       --  through an abort signal.
+ 
+       procedure Unprotected_Exchange_Handler
+         (Old_Handler : out Parameterless_Handler;
+          New_Handler : Parameterless_Handler;
+          Interrupt   : Interrupt_ID;
+          Static      : Boolean;
+          Restoration : Boolean := False);
+ 
+       procedure Unprotected_Detach_Handler
+         (Interrupt : Interrupt_ID;
+          Static    : Boolean);
+ 
+       ------------------
+       -- Bind_Handler --
+       ------------------
+ 
+       procedure Bind_Handler (Interrupt : Interrupt_ID) is
+       begin
+          Install_Umbrella_Handler
+            (HW_Interrupt (Interrupt), Notify_Interrupt'Access);
+       end Bind_Handler;
+ 
+       --------------------
+       -- Unbind_Handler --
+       --------------------
+ 
+       procedure Unbind_Handler (Interrupt : Interrupt_ID) is
+          Status : int;
+ 
+       begin
+          --  Flush server task off semaphore, allowing it to terminate
+ 
+          Status := Binary_Semaphore_Flush (Semaphore_ID_Map (Interrupt));
+          pragma Assert (Status = 0);
+       end Unbind_Handler;
+ 
+       --------------------------------
+       -- Unprotected_Detach_Handler --
+       --------------------------------
+ 
+       procedure Unprotected_Detach_Handler
+         (Interrupt : Interrupt_ID;
+          Static    : Boolean)
+       is
+          Old_Handler : Parameterless_Handler;
+       begin
+          if User_Entry (Interrupt).T /= Null_Task then
+ 
+             --  If an interrupt entry is installed raise Program_Error
+             --  (propagate it to the caller).
+ 
+             raise Program_Error with
+               "an interrupt entry is already installed";
+          end if;
+ 
+          --  Note : Static = True will pass the following check. This is the
+          --  case when we want to detach a handler regardless of the static
+          --  status of the Current_Handler.
+ 
+          if not Static and then User_Handler (Interrupt).Static then
+ 
+             --  Trying to detach a static Interrupt Handler, raise
+             --  Program_Error.
+ 
+             raise Program_Error with
+               "trying to detach a static Interrupt Handler";
+          end if;
+ 
+          Old_Handler := User_Handler (Interrupt).H;
+ 
+          --  The new handler
+ 
+          User_Handler (Interrupt).H := null;
+          User_Handler (Interrupt).Static := False;
+ 
+          if Old_Handler /= null then
+             Unbind_Handler (Interrupt);
+          end if;
+       end Unprotected_Detach_Handler;
+ 
+       ----------------------------------
+       -- Unprotected_Exchange_Handler --
+       ----------------------------------
+ 
+       procedure Unprotected_Exchange_Handler
+         (Old_Handler : out Parameterless_Handler;
+          New_Handler : Parameterless_Handler;
+          Interrupt   : Interrupt_ID;
+          Static      : Boolean;
+          Restoration : Boolean := False)
+       is
+       begin
+          if User_Entry (Interrupt).T /= Null_Task then
+ 
+             --  If an interrupt entry is already installed, raise
+             --  Program_Error (propagate it to the caller).
+ 
+             raise Program_Error with "an interrupt is already installed";
+          end if;
+ 
+          --  Note : A null handler with Static = True will pass the following
+          --  check. This is the case when we want to detach a handler
+          --  regardless of the Static status of Current_Handler.
+ 
+          --  We don't check anything if Restoration is True, since we may be
+          --  detaching a static handler to restore a dynamic one.
+ 
+          if not Restoration and then not Static
+            and then (User_Handler (Interrupt).Static
+ 
+             --  Trying to overwrite a static Interrupt Handler with a dynamic
+             --  Handler
+ 
+             --  The new handler is not specified as an Interrupt Handler by a
+             --  pragma.
+ 
+            or else not Is_Registered (New_Handler))
+          then
+             raise Program_Error with
+                "trying to overwrite a static interrupt handler with a "
+                & "dynamic handler";
+          end if;
+ 
+          --  Save the old handler
+ 
+          Old_Handler := User_Handler (Interrupt).H;
+ 
+          --  The new handler
+ 
+          User_Handler (Interrupt).H := New_Handler;
+ 
+          if New_Handler = null then
+ 
+             --  The null handler means we are detaching the handler
+ 
+             User_Handler (Interrupt).Static := False;
+ 
+          else
+             User_Handler (Interrupt).Static := Static;
+          end if;
+ 
+          --  Invoke a corresponding Server_Task if not yet created. Place
+          --  Task_Id info in Server_ID array.
+ 
+          if New_Handler /= null
+            and then
+             (Server_ID (Interrupt) = Null_Task
+               or else
+                 Ada.Task_Identification.Is_Terminated
+                   (To_Ada (Server_ID (Interrupt))))
+          then
+             Interrupt_Access_Hold :=
+               new Interrupt_Server_Task (Interrupt, Binary_Semaphore_Create);
+             Server_ID (Interrupt) :=
+               To_System (Interrupt_Access_Hold.all'Identity);
+          end if;
+ 
+          if (New_Handler = null) and then Old_Handler /= null then
+ 
+             --  Restore default handler
+ 
+             Unbind_Handler (Interrupt);
+ 
+          elsif Old_Handler = null then
+ 
+             --  Save default handler
+ 
+             Bind_Handler (Interrupt);
+          end if;
+       end Unprotected_Exchange_Handler;
+ 
+    --  Start of processing for Interrupt_Manager
+ 
+    begin
+       loop
+          --  A block is needed to absorb Program_Error exception
+ 
+          declare
+             Old_Handler : Parameterless_Handler;
+ 
+          begin
+             select
+                accept Attach_Handler
+                  (New_Handler : Parameterless_Handler;
+                   Interrupt   : Interrupt_ID;
+                   Static      : Boolean;
+                   Restoration : Boolean := False)
+                do
+                   Unprotected_Exchange_Handler
+                     (Old_Handler, New_Handler, Interrupt, Static, Restoration);
+                end Attach_Handler;
+ 
+             or
+                accept Exchange_Handler
+                  (Old_Handler : out Parameterless_Handler;
+                   New_Handler : Parameterless_Handler;
+                   Interrupt   : Interrupt_ID;
+                   Static      : Boolean)
+                do
+                   Unprotected_Exchange_Handler
+                     (Old_Handler, New_Handler, Interrupt, Static);
+                end Exchange_Handler;
+ 
+             or
+                accept Detach_Handler
+                   (Interrupt : Interrupt_ID;
+                    Static    : Boolean)
+                do
+                   Unprotected_Detach_Handler (Interrupt, Static);
+                end Detach_Handler;
+ 
+             or
+                accept Bind_Interrupt_To_Entry
+                  (T         : Task_Id;
+                   E         : Task_Entry_Index;
+                   Interrupt : Interrupt_ID)
+                do
+                   --  If there is a binding already (either a procedure or an
+                   --  entry), raise Program_Error (propagate it to the caller).
+ 
+                   if User_Handler (Interrupt).H /= null
+                     or else User_Entry (Interrupt).T /= Null_Task
+                   then
+                      raise Program_Error with
+                        "a binding for this interrupt is already present";
+                   end if;
+ 
+                   User_Entry (Interrupt) := Entry_Assoc'(T => T, E => E);
+ 
+                   --  Indicate the attachment of interrupt entry in the ATCB.
+                   --  This is needed so when an interrupt entry task terminates
+                   --  the binding can be cleaned. The call to unbinding must be
+                   --  make by the task before it terminates.
+ 
+                   T.Interrupt_Entry := True;
+ 
+                   --  Invoke a corresponding Server_Task if not yet created.
+                   --  Place Task_Id info in Server_ID array.
+ 
+                   if Server_ID (Interrupt) = Null_Task
+                     or else
+                       Ada.Task_Identification.Is_Terminated
+                         (To_Ada (Server_ID (Interrupt)))
+                   then
+                      Interrupt_Access_Hold := new Interrupt_Server_Task
+                        (Interrupt, Binary_Semaphore_Create);
+                      Server_ID (Interrupt) :=
+                        To_System (Interrupt_Access_Hold.all'Identity);
+                   end if;
+ 
+                   Bind_Handler (Interrupt);
+                end Bind_Interrupt_To_Entry;
+ 
+             or
+                accept Detach_Interrupt_Entries (T : Task_Id) do
+                   for Int in Interrupt_ID'Range loop
+                      if not Is_Reserved (Int) then
+                         if User_Entry (Int).T = T then
+                            User_Entry (Int) :=
+                              Entry_Assoc'
+                                (T => Null_Task, E => Null_Task_Entry);
+                            Unbind_Handler (Int);
+                         end if;
+                      end if;
+                   end loop;
+ 
+                   --  Indicate in ATCB that no interrupt entries are attached
+ 
+                   T.Interrupt_Entry := False;
+                end Detach_Interrupt_Entries;
+             end select;
+ 
+          exception
+             --  If there is a Program_Error we just want to propagate it to
+             --  the caller and do not want to stop this task.
+ 
+             when Program_Error =>
+                null;
+ 
+             when others =>
+                pragma Assert (False);
+                null;
+          end;
+       end loop;
+ 
+    exception
+       when Standard'Abort_Signal =>
+ 
+          --  Flush interrupt server semaphores, so they can terminate
+ 
+          Finalize_Interrupt_Servers;
+          raise;
+    end Interrupt_Manager;
+ 
+    ---------------------------
+    -- Interrupt_Server_Task --
+    ---------------------------
+ 
+    --  Server task for vectored hardware interrupt handling
+ 
+    task body Interrupt_Server_Task is
+       Ignore : constant Boolean := System.Tasking.Utilities.Make_Independent;
+ 
+       Self_Id         : constant Task_Id := Self;
+       Tmp_Handler     : Parameterless_Handler;
+       Tmp_ID          : Task_Id;
+       Tmp_Entry_Index : Task_Entry_Index;
+       Status          : int;
+ 
+    begin
+       Semaphore_ID_Map (Interrupt) := Int_Sema;
+ 
+       loop
+          --  Pend on semaphore that will be triggered by the umbrella handler
+          --  when the associated interrupt comes in.
+ 
+          Status := Binary_Semaphore_Obtain (Int_Sema);
+          pragma Assert (Status = 0);
+ 
+          if User_Handler (Interrupt).H /= null then
+ 
+             --  Protected procedure handler
+ 
+             Tmp_Handler := User_Handler (Interrupt).H;
+             Tmp_Handler.all;
+ 
+          elsif User_Entry (Interrupt).T /= Null_Task then
+ 
+             --  Interrupt entry handler
+ 
+             Tmp_ID := User_Entry (Interrupt).T;
+             Tmp_Entry_Index := User_Entry (Interrupt).E;
+             System.Tasking.Rendezvous.Call_Simple
+               (Tmp_ID, Tmp_Entry_Index, System.Null_Address);
+ 
+          else
+             --  Semaphore has been flushed by an unbind operation in the
+             --  Interrupt_Manager. Terminate the server task.
+ 
+             --  Wait for the Interrupt_Manager to complete its work
+ 
+             POP.Write_Lock (Self_Id);
+ 
+             --  Unassociate the interrupt handler
+ 
+             Semaphore_ID_Map (Interrupt) := 0;
+ 
+             --  Delete the associated semaphore
+ 
+             Status := Binary_Semaphore_Delete (Int_Sema);
+ 
+             pragma Assert (Status = 0);
+ 
+             --  Set status for the Interrupt_Manager
+ 
+             Server_ID (Interrupt) := Null_Task;
+             POP.Unlock (Self_Id);
+ 
+             exit;
+          end if;
+       end loop;
+    end Interrupt_Server_Task;
+ 
+ begin
+    --  Get Interrupt_Manager's ID so that Abort_Interrupt can be sent
+ 
+    Interrupt_Manager_ID := To_System (Interrupt_Manager'Identity);
+ end System.Interrupts;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-intman.ads gcc-8.1.0/gcc/ada/libgnarl/s-intman.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-intman.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-intman.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,111 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --            S Y S T E M . I N T E R R U P T _ M A N A G E M E N T         --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package encapsulates and centralizes information about all uses of
+ --  interrupts (or signals), including the target-dependent mapping of
+ --  interrupts (or signals) to exceptions.
+ 
+ --  Unlike the original design, System.Interrupt_Management can only be used
+ --  for tasking systems.
+ 
+ --  PLEASE DO NOT put any subprogram declarations with arguments of type
+ --  Interrupt_ID into the visible part of this package. The type Interrupt_ID
+ --  is used to derive the type in Ada.Interrupts, and adding more operations
+ --  to that type would be illegal according to the Ada Reference Manual. This
+ --  is the reason why the signals sets are implemented using visible arrays
+ --  rather than functions.
+ 
+ with System.OS_Interface;
+ 
+ with Interfaces.C;
+ 
+ package System.Interrupt_Management is
+    pragma Preelaborate;
+ 
+    type Interrupt_Mask is limited private;
+ 
+    type Interrupt_ID is new Interfaces.C.int
+      range 0 .. System.OS_Interface.Max_Interrupt;
+ 
+    type Interrupt_Set is array (Interrupt_ID) of Boolean;
+ 
+    --  The following objects serve as constants, but are initialized in the
+    --  body to aid portability. This permits us to use more portable names for
+    --  interrupts, where distinct names may map to the same interrupt ID
+    --  value.
+ 
+    --  For example, suppose SIGRARE is a signal that is not defined on all
+    --  systems, but is always reserved when it is defined. If we have the
+    --  convention that ID zero is not used for any "real" signals, and SIGRARE
+    --  = 0 when SIGRARE is not one of the locally supported signals, we can
+    --  write:
+    --     Reserved (SIGRARE) := True;
+    --  and the initialization code will be portable.
+ 
+    Abort_Task_Interrupt : Interrupt_ID;
+    --  The interrupt that is used to implement task abort if an interrupt is
+    --  used for that purpose. This is one of the reserved interrupts.
+ 
+    Keep_Unmasked : Interrupt_Set := (others => False);
+    --  Keep_Unmasked (I) is true iff the interrupt I is one that must be kept
+    --  unmasked at all times, except (perhaps) for short critical sections.
+    --  This includes interrupts that are mapped to exceptions (see
+    --  System.Interrupt_Exceptions.Is_Exception), but may also include
+    --  interrupts (e.g. timer) that need to be kept unmasked for other
+    --  reasons. Where interrupts are implemented as OS signals, and signal
+    --  masking is per-task, the interrupt should be unmasked in ALL TASKS.
+ 
+    Reserve : Interrupt_Set := (others => False);
+    --  Reserve (I) is true iff the interrupt I is one that cannot be permitted
+    --  to be attached to a user handler. The possible reasons are many. For
+    --  example, it may be mapped to an exception used to implement task abort,
+    --  or used to implement time delays.
+ 
+    procedure Initialize;
+    --  Initialize the various variables defined in this package. This procedure
+    --  must be called before accessing any object from this package, and can be
+    --  called multiple times.
+ 
+ private
+    type Interrupt_Mask is new System.OS_Interface.sigset_t;
+    --  In some implementations Interrupt_Mask is represented as a linked list
+ 
+    procedure Adjust_Context_For_Raise
+      (Signo    : System.OS_Interface.Signal;
+       Ucontext : System.Address);
+    pragma Import
+      (C, Adjust_Context_For_Raise, "__gnat_adjust_context_for_raise");
+    --  Target specific hook performing adjustments to the signal's machine
+    --  context, to be called before an exception may be raised from a signal
+    --  handler. This service is provided by init.c, together with the
+    --  non-tasking signal handler.
+ 
+ end System.Interrupt_Management;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-intman__android.adb gcc-8.1.0/gcc/ada/libgnarl/s-intman__android.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-intman__android.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-intman__android.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,325 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --           S Y S T E M . I N T E R R U P T _ M A N A G E M E N T          --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --          Copyright (C) 2014-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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.                                                        --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is the Android version of this package
+ 
+ --  Make a careful study of all signals available under the OS, to see which
+ --  need to be reserved, kept always unmasked, or kept always unmasked. Be on
+ --  the lookout for special signals that may be used by the thread library.
+ 
+ --  Since this is a multi target file, the signal <-> exception mapping
+ --  is simple minded. If you need a more precise and target specific
+ --  signal handling, create a new s-intman.adb that will fit your needs.
+ 
+ --  This file assumes that:
+ 
+ --    SIGFPE, SIGILL, SIGSEGV and SIGBUS exist. They are mapped as follows:
+ --      SIGPFE  => Constraint_Error
+ --      SIGILL  => Program_Error
+ --      SIGSEGV => Storage_Error
+ --      SIGBUS  => Storage_Error
+ 
+ --    SIGINT exists and will be kept unmasked unless the pragma
+ --     Unreserve_All_Interrupts is specified anywhere in the application.
+ 
+ --    System.OS_Interface contains the following:
+ --      SIGADAABORT: the signal that will be used to abort tasks.
+ --      Unmasked: the OS specific set of signals that should be unmasked in
+ --                all the threads. SIGADAABORT is unmasked by
+ --                default
+ --      Reserved: the OS specific set of signals that are reserved.
+ 
+ with System.Task_Primitives;
+ 
+ package body System.Interrupt_Management is
+ 
+    use Interfaces.C;
+    use System.OS_Interface;
+ 
+    type Interrupt_List is array (Interrupt_ID range <>) of Interrupt_ID;
+    Exception_Interrupts : constant Interrupt_List :=
+      (SIGFPE, SIGILL, SIGSEGV, SIGBUS);
+ 
+    Unreserve_All_Interrupts : Interfaces.C.int;
+    pragma Import
+      (C, Unreserve_All_Interrupts, "__gl_unreserve_all_interrupts");
+ 
+    -----------------------
+    -- Local Subprograms --
+    -----------------------
+ 
+    procedure Signal_Trampoline
+      (signo    : Signal;
+       siginfo  : System.Address;
+       ucontext : System.Address;
+       handler  : System.Address);
+    pragma Import (C, Signal_Trampoline, "__gnat_sigtramp");
+    --  Pass the real handler to a speical function that handles unwinding by
+    --  skipping over the kernel signal frame (which doesn't contain any unwind
+    --  information).
+ 
+    function State (Int : 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:
+ 
+    procedure Map_Signal
+      (signo    : Signal;
+       siginfo  : System.Address;
+       ucontext : System.Address);
+    --  This function identifies the Ada exception to be raised using the
+    --  information when the system received a synchronous signal.
+ 
+ ----------------
+ -- Map_Signal --
+ ----------------
+ 
+    procedure Map_Signal
+      (signo    : Signal;
+       siginfo  : System.Address;
+       ucontext : System.Address)
+    is
+       pragma Unreferenced (siginfo);
+       pragma Unreferenced (ucontext);
+ 
+    begin
+       --  Check that treatment of exception propagation here is consistent with
+       --  treatment of the abort signal in System.Task_Primitives.Operations.
+ 
+       case signo is
+          when SIGFPE  => raise Constraint_Error;
+          when SIGILL  => raise Program_Error;
+          when SIGSEGV => raise Storage_Error;
+          when SIGBUS  => raise Storage_Error;
+          when others  => null;
+       end case;
+    end Map_Signal;
+ 
+ ----------------------
+ -- Notify_Exception --
+ ----------------------
+ 
+    User    : constant Character := 'u';
+    Runtime : constant Character := 'r';
+    Default : constant Character := 's';
+    --    'n'   this interrupt not set by any Interrupt_State pragma
+    --    'u'   Interrupt_State pragma set state to User
+    --    'r'   Interrupt_State pragma set state to Runtime
+    --    's'   Interrupt_State pragma set state to System (use "default"
+    --           system handler)
+ 
+    procedure Notify_Exception
+      (signo    : Signal;
+       siginfo  : System.Address;
+       ucontext : System.Address);
+    --  This function is the signal handler and calls a trampoline subprogram
+    --  that adjusts the unwind information so the ARM unwinder can find it's
+    --  way back to the context of the originating subprogram. Compare with
+    --  __gnat_error_handler for non-tasking programs.
+ 
+    ----------------------
+    -- Notify_Exception --
+    ----------------------
+ 
+    Signal_Mask : aliased sigset_t;
+    --  The set of signals handled by Notify_Exception
+ 
+    procedure Notify_Exception
+      (signo    : Signal;
+       siginfo  : System.Address;
+       ucontext : System.Address)
+    is
+       Result : Interfaces.C.int;
+ 
+    begin
+       --  With the __builtin_longjmp, the signal mask is not restored, so we
+       --  need to restore it explicitly.  ??? We don't use __builtin_longjmp
+       --  anymore, so do we still need this?   */
+ 
+       Result := pthread_sigmask (SIG_UNBLOCK, Signal_Mask'Access, null);
+       pragma Assert (Result = 0);
+ 
+       --  Perform the necessary context adjustments prior to calling the
+       --  trampoline subprogram with the "real" signal handler.
+ 
+       Adjust_Context_For_Raise (signo, ucontext);
+ 
+       Signal_Trampoline (signo, siginfo, ucontext, Map_Signal'Address);
+    end Notify_Exception;
+ 
+    ----------------
+    -- Initialize --
+    ----------------
+ 
+    Initialized : Boolean := False;
+ 
+    procedure Initialize is
+       act     : aliased struct_sigaction;
+       old_act : aliased struct_sigaction;
+       Result  : System.OS_Interface.int;
+ 
+       Use_Alternate_Stack : constant Boolean :=
+                               System.Task_Primitives.Alternate_Stack_Size /= 0;
+       --  Whether to use an alternate signal stack for stack overflows
+ 
+    begin
+       if Initialized then
+          return;
+       end if;
+ 
+       Initialized := True;
+ 
+       --  Need to call pthread_init very early because it is doing signal
+       --  initializations.
+ 
+       pthread_init;
+ 
+       Abort_Task_Interrupt := SIGADAABORT;
+ 
+       act.sa_handler := Notify_Exception'Address;
+ 
+       --  Setting SA_SIGINFO asks the kernel to pass more than just the signal
+       --  number argument to the handler when it is called. The set of extra
+       --  parameters includes a pointer to the interrupted context, which the
+       --  ZCX propagation scheme needs.
+ 
+       --  Most man pages for sigaction mention that sa_sigaction should be set
+       --  instead of sa_handler when SA_SIGINFO is on.  In practice, the two
+       --  fields are actually union'ed and located at the same offset.
+ 
+       --  On some targets, we set sa_flags to SA_NODEFER so that during the
+       --  handler execution we do not change the Signal_Mask to be masked for
+       --  the Signal.
+ 
+       --  This is a temporary fix to the problem that the Signal_Mask is not
+       --  restored after the exception (longjmp) from the handler. The right
+       --  fix should be made in sigsetjmp so that we save the Signal_Set and
+       --  restore it after a longjmp.
+ 
+       --  We set SA_NODEFER to be compatible with what is done in
+       --  __gnat_error_handler.
+ 
+       Result := sigemptyset (Signal_Mask'Access);
+       pragma Assert (Result = 0);
+ 
+       --  Add signals that map to Ada exceptions to the mask
+ 
+       for J in Exception_Interrupts'Range loop
+          if State (Exception_Interrupts (J)) /= Default then
+             Result :=
+               sigaddset
+                 (Signal_Mask'Access, Signal (Exception_Interrupts (J)));
+             pragma Assert (Result = 0);
+          end if;
+       end loop;
+ 
+       act.sa_mask := Signal_Mask;
+ 
+       pragma Assert (Keep_Unmasked = (Interrupt_ID'Range => False));
+       pragma Assert (Reserve = (Interrupt_ID'Range => False));
+ 
+       --  Process state of exception signals
+ 
+       for J in Exception_Interrupts'Range loop
+          if State (Exception_Interrupts (J)) /= User then
+             Keep_Unmasked (Exception_Interrupts (J)) := True;
+             Reserve (Exception_Interrupts (J)) := True;
+ 
+             if State (Exception_Interrupts (J)) /= Default then
+                act.sa_flags := SA_NODEFER + SA_RESTART + SA_SIGINFO;
+ 
+                if Use_Alternate_Stack
+                  and then Exception_Interrupts (J) = SIGSEGV
+                then
+                   act.sa_flags := act.sa_flags + SA_ONSTACK;
+                end if;
+ 
+                Result :=
+                  sigaction
+                    (Signal (Exception_Interrupts (J)), act'Unchecked_Access,
+                     old_act'Unchecked_Access);
+                pragma Assert (Result = 0);
+             end if;
+          end if;
+       end loop;
+ 
+       if State (Abort_Task_Interrupt) /= User then
+          Keep_Unmasked (Abort_Task_Interrupt) := True;
+          Reserve (Abort_Task_Interrupt) := True;
+       end if;
+ 
+       --  Set SIGINT to unmasked state as long as it is not in "User" state.
+       --  Check for Unreserve_All_Interrupts last.
+ 
+       if State (SIGINT) /= User then
+          Keep_Unmasked (SIGINT) := True;
+          Reserve (SIGINT) := True;
+       end if;
+ 
+       --  Check all signals for state that requires keeping them unmasked and
+       --  reserved.
+ 
+       for J in Interrupt_ID'Range loop
+          if State (J) = Default or else State (J) = Runtime then
+             Keep_Unmasked (J) := True;
+             Reserve (J) := True;
+          end if;
+       end loop;
+ 
+       --  Add the set of signals that must always be unmasked for this target
+ 
+       for J in Unmasked'Range loop
+          Keep_Unmasked (Interrupt_ID (Unmasked (J))) := True;
+          Reserve (Interrupt_ID (Unmasked (J))) := True;
+       end loop;
+ 
+       --  Add target-specific reserved signals
+ 
+       for J in Reserved'Range loop
+          Reserve (Interrupt_ID (Reserved (J))) := True;
+       end loop;
+ 
+       --  Process pragma Unreserve_All_Interrupts. This overrides any settings
+       --  due to pragma Interrupt_State:
+ 
+       if Unreserve_All_Interrupts /= 0 then
+          Keep_Unmasked (SIGINT) := False;
+          Reserve (SIGINT) := False;
+       end if;
+ 
+       --  We do not really have Signal 0. We just use this value to identify
+       --  non-existent signals (see s-intnam.ads). Therefore, Signal should not
+       --  be used in all signal related operations hence mark it as reserved.
+ 
+       Reserve (0) := True;
+    end Initialize;
+ 
+ end System.Interrupt_Management;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-intman__dummy.adb gcc-8.1.0/gcc/ada/libgnarl/s-intman__dummy.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-intman__dummy.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-intman__dummy.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,45 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --           S Y S T E M . I N T E R R U P T _ M A N A G E M E N T          --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --          Copyright (C) 1997-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is a NO tasking version of this package
+ 
+ package body System.Interrupt_Management is
+ 
+    ----------------
+    -- Initialize --
+    ----------------
+ 
+    procedure Initialize is
+    begin
+       null;
+    end Initialize;
+ 
+ end System.Interrupt_Management;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-intman__lynxos.adb gcc-8.1.0/gcc/ada/libgnarl/s-intman__lynxos.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-intman__lynxos.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-intman__lynxos.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,292 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --           S Y S T E M . I N T E R R U P T _ M A N A G E M E N T          --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is the LynxOS version of this package
+ 
+ --  Make a careful study of all signals available under the OS, to see which
+ --  need to be reserved, kept always unmasked, or kept always unmasked. Be on
+ --  the lookout for special signals that may be used by the thread library.
+ 
+ --  Since this is a multi target file, the signal <-> exception mapping
+ --  is simple minded. If you need a more precise and target specific
+ --  signal handling, create a new s-intman.adb that will fit your needs.
+ 
+ --  This file assumes that:
+ 
+ --    SIGFPE, SIGILL, SIGSEGV and SIGBUS exist. They are mapped as follows:
+ --      SIGPFE  => Constraint_Error
+ --      SIGILL  => Program_Error
+ --      SIGSEGV => Storage_Error
+ --      SIGBUS  => Storage_Error
+ 
+ --    SIGINT exists and will be kept unmasked unless the pragma
+ --     Unreserve_All_Interrupts is specified anywhere in the application.
+ 
+ --    System.OS_Interface contains the following:
+ --      SIGADAABORT: the signal that will be used to abort tasks.
+ --      Unmasked: the OS specific set of signals that should be unmasked in
+ --                all the threads. SIGADAABORT is unmasked by
+ --                default
+ --      Reserved: the OS specific set of signals that are reserved.
+ 
+ with System.Task_Primitives;
+ 
+ package body System.Interrupt_Management is
+ 
+    use Interfaces.C;
+    use System.OS_Interface;
+ 
+    type Interrupt_List is array (Interrupt_ID range <>) of Interrupt_ID;
+    Exception_Interrupts : constant Interrupt_List :=
+      (SIGFPE, SIGILL, SIGSEGV, SIGBUS);
+ 
+    Unreserve_All_Interrupts : Interfaces.C.int;
+    pragma Import
+      (C, Unreserve_All_Interrupts, "__gl_unreserve_all_interrupts");
+ 
+    -----------------------
+    -- Local Subprograms --
+    -----------------------
+ 
+    function State (Int : 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:
+ 
+    User    : constant Character := 'u';
+    Runtime : constant Character := 'r';
+    Default : constant Character := 's';
+    --    'n'   this interrupt not set by any Interrupt_State pragma
+    --    'u'   Interrupt_State pragma set state to User
+    --    'r'   Interrupt_State pragma set state to Runtime
+    --    's'   Interrupt_State pragma set state to System (use "default"
+    --           system handler)
+ 
+    procedure Notify_Exception
+      (signo    : Signal;
+       siginfo  : System.Address;
+       ucontext : System.Address);
+    --  This function identifies the Ada exception to be raised using the
+    --  information when the system received a synchronous signal. Since this
+    --  function is machine and OS dependent, different code has to be provided
+    --  for different target.
+ 
+    ----------------------
+    -- Notify_Exception --
+    ----------------------
+ 
+    Signal_Mask : aliased sigset_t;
+    --  The set of signals handled by Notify_Exception
+ 
+    procedure Notify_Exception
+      (signo    : Signal;
+       siginfo  : System.Address;
+       ucontext : System.Address)
+    is
+       pragma Unreferenced (siginfo);
+ 
+       Result : Interfaces.C.int;
+ 
+    begin
+       --  With the __builtin_longjmp, the signal mask is not restored, so we
+       --  need to restore it explicitly.
+ 
+       Result := pthread_sigmask (SIG_UNBLOCK, Signal_Mask'Access, null);
+       pragma Assert (Result = 0);
+ 
+       --  Perform the necessary context adjustments prior to a raise
+       --  from a signal handler.
+ 
+       Adjust_Context_For_Raise (signo, ucontext);
+ 
+       --  Check that treatment of exception propagation here is consistent with
+       --  treatment of the abort signal in System.Task_Primitives.Operations.
+ 
+       case signo is
+          when SIGFPE  => raise Constraint_Error;
+          when SIGILL  => raise Program_Error;
+          when SIGSEGV => raise Storage_Error;
+          when SIGBUS  => raise Storage_Error;
+          when others  => null;
+       end case;
+    end Notify_Exception;
+ 
+    ----------------
+    -- Initialize --
+    ----------------
+ 
+    Initialized : Boolean := False;
+ 
+    procedure Initialize is
+       act     : aliased struct_sigaction;
+       old_act : aliased struct_sigaction;
+       Result  : System.OS_Interface.int;
+ 
+       Use_Alternate_Stack : constant Boolean :=
+                               System.Task_Primitives.Alternate_Stack_Size /= 0;
+       --  Whether to use an alternate signal stack for stack overflows
+ 
+    begin
+       if Initialized then
+          return;
+       end if;
+ 
+       Initialized := True;
+ 
+       --  Need to call pthread_init very early because it is doing signal
+       --  initializations.
+ 
+       pthread_init;
+ 
+       Abort_Task_Interrupt := SIGADAABORT;
+ 
+       act.sa_handler := Notify_Exception'Address;
+ 
+       --  Setting SA_SIGINFO asks the kernel to pass more than just the signal
+       --  number argument to the handler when it is called. The set of extra
+       --  parameters includes a pointer to the interrupted context, which the
+       --  ZCX propagation scheme needs.
+ 
+       --  Most man pages for sigaction mention that sa_sigaction should be set
+       --  instead of sa_handler when SA_SIGINFO is on.  In practice, the two
+       --  fields are actually union'ed and located at the same offset.
+ 
+       --  On some targets, we set sa_flags to SA_NODEFER so that during the
+       --  handler execution we do not change the Signal_Mask to be masked for
+       --  the Signal.
+ 
+       --  This is a temporary fix to the problem that the Signal_Mask is not
+       --  restored after the exception (longjmp) from the handler. The right
+       --  fix should be made in sigsetjmp so that we save the Signal_Set and
+       --  restore it after a longjmp.
+ 
+       --  Since SA_NODEFER is obsolete, instead we reset explicitly the mask
+       --  in the exception handler.
+ 
+       Result := sigemptyset (Signal_Mask'Access);
+       pragma Assert (Result = 0);
+ 
+       --  Add signals that map to Ada exceptions to the mask
+ 
+       for J in Exception_Interrupts'Range loop
+          if State (Exception_Interrupts (J)) /= Default then
+             Result :=
+             sigaddset (Signal_Mask'Access, Signal (Exception_Interrupts (J)));
+             pragma Assert (Result = 0);
+          end if;
+       end loop;
+ 
+       act.sa_mask := Signal_Mask;
+ 
+       pragma Assert (Keep_Unmasked = (Interrupt_ID'Range => False));
+       pragma Assert (Reserve = (Interrupt_ID'Range => False));
+ 
+       --  Process state of exception signals
+ 
+       for J in Exception_Interrupts'Range loop
+          if State (Exception_Interrupts (J)) /= User then
+             Keep_Unmasked (Exception_Interrupts (J)) := True;
+             Reserve (Exception_Interrupts (J)) := True;
+ 
+             if State (Exception_Interrupts (J)) /= Default then
+                --  This file is identical to s-intman-posix.adb, except that we
+                --  don't set the SA_SIGINFO flag in act.sa_flags, because
+                --  LynxOS does not support that. If SA_SIGINFO is set, then
+                --  sigaction fails, returning -1.
+                act.sa_flags := 0;
+ 
+                if Use_Alternate_Stack
+                  and then Exception_Interrupts (J) = SIGSEGV
+                then
+                   act.sa_flags := act.sa_flags + SA_ONSTACK;
+                end if;
+ 
+                Result :=
+                  sigaction
+                    (Signal (Exception_Interrupts (J)), act'Unchecked_Access,
+                     old_act'Unchecked_Access);
+                pragma Assert (Result = 0);
+             end if;
+          end if;
+       end loop;
+ 
+       if State (Abort_Task_Interrupt) /= User then
+          Keep_Unmasked (Abort_Task_Interrupt) := True;
+          Reserve (Abort_Task_Interrupt) := True;
+       end if;
+ 
+       --  Set SIGINT to unmasked state as long as it is not in "User" state.
+       --  Check for Unreserve_All_Interrupts last.
+ 
+       if State (SIGINT) /= User then
+          Keep_Unmasked (SIGINT) := True;
+          Reserve (SIGINT) := True;
+       end if;
+ 
+       --  Check all signals for state that requires keeping them unmasked and
+       --  reserved.
+ 
+       for J in Interrupt_ID'Range loop
+          if State (J) = Default or else State (J) = Runtime then
+             Keep_Unmasked (J) := True;
+             Reserve (J) := True;
+          end if;
+       end loop;
+ 
+       --  Add the set of signals that must always be unmasked for this target
+ 
+       for J in Unmasked'Range loop
+          Keep_Unmasked (Interrupt_ID (Unmasked (J))) := True;
+          Reserve (Interrupt_ID (Unmasked (J))) := True;
+       end loop;
+ 
+       --  Add target-specific reserved signals
+ 
+       for J in Reserved'Range loop
+          Reserve (Interrupt_ID (Reserved (J))) := True;
+       end loop;
+ 
+       --  Process pragma Unreserve_All_Interrupts. This overrides any settings
+       --  due to pragma Interrupt_State:
+ 
+       if Unreserve_All_Interrupts /= 0 then
+          Keep_Unmasked (SIGINT) := False;
+          Reserve (SIGINT) := False;
+       end if;
+ 
+       --  We do not really have Signal 0. We just use this value to identify
+       --  non-existent signals (see s-intnam.ads). Therefore, Signal should not
+       --  be used in all signal related operations hence mark it as reserved.
+ 
+       Reserve (0) := True;
+    end Initialize;
+ 
+ end System.Interrupt_Management;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-intman__mingw.adb gcc-8.1.0/gcc/ada/libgnarl/s-intman__mingw.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-intman__mingw.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-intman__mingw.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,59 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --           S Y S T E M . I N T E R R U P T _ M A N A G E M E N T          --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --          Copyright (C) 1991-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is the NT version of this package
+ 
+ with System.OS_Interface; use System.OS_Interface;
+ 
+ package body System.Interrupt_Management is
+ 
+    ----------------
+    -- Initialize --
+    ----------------
+ 
+    procedure Initialize is
+    begin
+       --  "Reserve" all the interrupts, except those that are explicitly
+       --  defined.
+ 
+       for J in Interrupt_ID'Range loop
+          Reserve (J) := True;
+       end loop;
+ 
+       Reserve (SIGINT)  := False;
+       Reserve (SIGILL)  := False;
+       Reserve (SIGABRT) := False;
+       Reserve (SIGFPE)  := False;
+       Reserve (SIGSEGV) := False;
+       Reserve (SIGTERM) := False;
+    end Initialize;
+ 
+ end System.Interrupt_Management;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-intman__posix.adb gcc-8.1.0/gcc/ada/libgnarl/s-intman__posix.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-intman__posix.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-intman__posix.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,288 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --           S Y S T E M . I N T E R R U P T _ M A N A G E M E N T          --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is the POSIX threads version of this package
+ 
+ --  Make a careful study of all signals available under the OS, to see which
+ --  need to be reserved, kept always unmasked, or kept always unmasked. Be on
+ --  the lookout for special signals that may be used by the thread library.
+ 
+ --  Since this is a multi target file, the signal <-> exception mapping
+ --  is simple minded. If you need a more precise and target specific
+ --  signal handling, create a new s-intman.adb that will fit your needs.
+ 
+ --  This file assumes that:
+ 
+ --    SIGFPE, SIGILL, SIGSEGV and SIGBUS exist. They are mapped as follows:
+ --      SIGPFE  => Constraint_Error
+ --      SIGILL  => Program_Error
+ --      SIGSEGV => Storage_Error
+ --      SIGBUS  => Storage_Error
+ 
+ --    SIGINT exists and will be kept unmasked unless the pragma
+ --     Unreserve_All_Interrupts is specified anywhere in the application.
+ 
+ --    System.OS_Interface contains the following:
+ --      SIGADAABORT: the signal that will be used to abort tasks.
+ --      Unmasked: the OS specific set of signals that should be unmasked in
+ --                all the threads. SIGADAABORT is unmasked by
+ --                default
+ --      Reserved: the OS specific set of signals that are reserved.
+ 
+ with System.Task_Primitives;
+ 
+ package body System.Interrupt_Management is
+ 
+    use Interfaces.C;
+    use System.OS_Interface;
+ 
+    type Interrupt_List is array (Interrupt_ID range <>) of Interrupt_ID;
+    Exception_Interrupts : constant Interrupt_List :=
+      (SIGFPE, SIGILL, SIGSEGV, SIGBUS);
+ 
+    Unreserve_All_Interrupts : Interfaces.C.int;
+    pragma Import
+      (C, Unreserve_All_Interrupts, "__gl_unreserve_all_interrupts");
+ 
+    -----------------------
+    -- Local Subprograms --
+    -----------------------
+ 
+    function State (Int : 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:
+ 
+    User    : constant Character := 'u';
+    Runtime : constant Character := 'r';
+    Default : constant Character := 's';
+    --    'n'   this interrupt not set by any Interrupt_State pragma
+    --    'u'   Interrupt_State pragma set state to User
+    --    'r'   Interrupt_State pragma set state to Runtime
+    --    's'   Interrupt_State pragma set state to System (use "default"
+    --           system handler)
+ 
+    procedure Notify_Exception
+      (signo    : Signal;
+       siginfo  : System.Address;
+       ucontext : System.Address);
+    --  This function identifies the Ada exception to be raised using the
+    --  information when the system received a synchronous signal. Since this
+    --  function is machine and OS dependent, different code has to be provided
+    --  for different target.
+ 
+    ----------------------
+    -- Notify_Exception --
+    ----------------------
+ 
+    Signal_Mask : aliased sigset_t;
+    --  The set of signals handled by Notify_Exception
+ 
+    procedure Notify_Exception
+      (signo    : Signal;
+       siginfo  : System.Address;
+       ucontext : System.Address)
+    is
+       pragma Unreferenced (siginfo);
+ 
+       Result : Interfaces.C.int;
+ 
+    begin
+       --  With the __builtin_longjmp, the signal mask is not restored, so we
+       --  need to restore it explicitly.
+ 
+       Result := pthread_sigmask (SIG_UNBLOCK, Signal_Mask'Access, null);
+       pragma Assert (Result = 0);
+ 
+       --  Perform the necessary context adjustments prior to a raise
+       --  from a signal handler.
+ 
+       Adjust_Context_For_Raise (signo, ucontext);
+ 
+       --  Check that treatment of exception propagation here is consistent with
+       --  treatment of the abort signal in System.Task_Primitives.Operations.
+ 
+       case signo is
+          when SIGFPE  => raise Constraint_Error;
+          when SIGILL  => raise Program_Error;
+          when SIGSEGV => raise Storage_Error;
+          when SIGBUS  => raise Storage_Error;
+          when others  => null;
+       end case;
+    end Notify_Exception;
+ 
+    ----------------
+    -- Initialize --
+    ----------------
+ 
+    Initialized : Boolean := False;
+ 
+    procedure Initialize is
+       act     : aliased struct_sigaction;
+       old_act : aliased struct_sigaction;
+       Result  : System.OS_Interface.int;
+ 
+       Use_Alternate_Stack : constant Boolean :=
+                               System.Task_Primitives.Alternate_Stack_Size /= 0;
+       --  Whether to use an alternate signal stack for stack overflows
+ 
+    begin
+       if Initialized then
+          return;
+       end if;
+ 
+       Initialized := True;
+ 
+       --  Need to call pthread_init very early because it is doing signal
+       --  initializations.
+ 
+       pthread_init;
+ 
+       Abort_Task_Interrupt := SIGADAABORT;
+ 
+       act.sa_handler := Notify_Exception'Address;
+ 
+       --  Setting SA_SIGINFO asks the kernel to pass more than just the signal
+       --  number argument to the handler when it is called. The set of extra
+       --  parameters includes a pointer to the interrupted context, which the
+       --  ZCX propagation scheme needs.
+ 
+       --  Most man pages for sigaction mention that sa_sigaction should be set
+       --  instead of sa_handler when SA_SIGINFO is on.  In practice, the two
+       --  fields are actually union'ed and located at the same offset.
+ 
+       --  On some targets, we set sa_flags to SA_NODEFER so that during the
+       --  handler execution we do not change the Signal_Mask to be masked for
+       --  the Signal.
+ 
+       --  This is a temporary fix to the problem that the Signal_Mask is not
+       --  restored after the exception (longjmp) from the handler. The right
+       --  fix should be made in sigsetjmp so that we save the Signal_Set and
+       --  restore it after a longjmp.
+ 
+       --  Since SA_NODEFER is obsolete, instead we reset explicitly the mask
+       --  in the exception handler.
+ 
+       Result := sigemptyset (Signal_Mask'Access);
+       pragma Assert (Result = 0);
+ 
+       --  Add signals that map to Ada exceptions to the mask
+ 
+       for J in Exception_Interrupts'Range loop
+          if State (Exception_Interrupts (J)) /= Default then
+             Result :=
+             sigaddset (Signal_Mask'Access, Signal (Exception_Interrupts (J)));
+             pragma Assert (Result = 0);
+          end if;
+       end loop;
+ 
+       act.sa_mask := Signal_Mask;
+ 
+       pragma Assert (Keep_Unmasked = (Interrupt_ID'Range => False));
+       pragma Assert (Reserve = (Interrupt_ID'Range => False));
+ 
+       --  Process state of exception signals
+ 
+       for J in Exception_Interrupts'Range loop
+          if State (Exception_Interrupts (J)) /= User then
+             Keep_Unmasked (Exception_Interrupts (J)) := True;
+             Reserve (Exception_Interrupts (J)) := True;
+ 
+             if State (Exception_Interrupts (J)) /= Default then
+                act.sa_flags := SA_SIGINFO;
+ 
+                if Use_Alternate_Stack
+                  and then Exception_Interrupts (J) = SIGSEGV
+                then
+                   act.sa_flags := act.sa_flags + SA_ONSTACK;
+                end if;
+ 
+                Result :=
+                  sigaction
+                    (Signal (Exception_Interrupts (J)), act'Unchecked_Access,
+                     old_act'Unchecked_Access);
+                pragma Assert (Result = 0);
+             end if;
+          end if;
+       end loop;
+ 
+       if State (Abort_Task_Interrupt) /= User then
+          Keep_Unmasked (Abort_Task_Interrupt) := True;
+          Reserve (Abort_Task_Interrupt) := True;
+       end if;
+ 
+       --  Set SIGINT to unmasked state as long as it is not in "User" state.
+       --  Check for Unreserve_All_Interrupts last.
+ 
+       if State (SIGINT) /= User then
+          Keep_Unmasked (SIGINT) := True;
+          Reserve (SIGINT) := True;
+       end if;
+ 
+       --  Check all signals for state that requires keeping them unmasked and
+       --  reserved.
+ 
+       for J in Interrupt_ID'Range loop
+          if State (J) = Default or else State (J) = Runtime then
+             Keep_Unmasked (J) := True;
+             Reserve (J) := True;
+          end if;
+       end loop;
+ 
+       --  Add the set of signals that must always be unmasked for this target
+ 
+       for J in Unmasked'Range loop
+          Keep_Unmasked (Interrupt_ID (Unmasked (J))) := True;
+          Reserve (Interrupt_ID (Unmasked (J))) := True;
+       end loop;
+ 
+       --  Add target-specific reserved signals
+ 
+       for J in Reserved'Range loop
+          Reserve (Interrupt_ID (Reserved (J))) := True;
+       end loop;
+ 
+       --  Process pragma Unreserve_All_Interrupts. This overrides any settings
+       --  due to pragma Interrupt_State:
+ 
+       if Unreserve_All_Interrupts /= 0 then
+          Keep_Unmasked (SIGINT) := False;
+          Reserve (SIGINT) := False;
+       end if;
+ 
+       --  We do not really have Signal 0. We just use this value to identify
+       --  non-existent signals (see s-intnam.ads). Therefore, Signal should not
+       --  be used in all signal related operations hence mark it as reserved.
+ 
+       Reserve (0) := True;
+    end Initialize;
+ 
+ end System.Interrupt_Management;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-intman__qnx.adb gcc-8.1.0/gcc/ada/libgnarl/s-intman__qnx.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-intman__qnx.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-intman__qnx.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,298 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --           S Y S T E M . I N T E R R U P T _ M A N A G E M E N T          --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is the QNX/Neutrino threads version of this package
+ 
+ --  Make a careful study of all signals available under the OS, to see which
+ --  need to be reserved, kept always unmasked, or kept always unmasked. Be on
+ --  the lookout for special signals that may be used by the thread library.
+ 
+ --  Since this is a multi target file, the signal <-> exception mapping
+ --  is simple minded. If you need a more precise and target specific
+ --  signal handling, create a new s-intman.adb that will fit your needs.
+ 
+ --  This file assumes that:
+ 
+ --    SIGFPE, SIGILL, SIGSEGV and SIGBUS exist. They are mapped as follows:
+ --      SIGPFE  => Constraint_Error
+ --      SIGILL  => Program_Error
+ --      SIGSEGV => Storage_Error
+ --      SIGBUS  => Storage_Error
+ 
+ --    SIGINT exists and will be kept unmasked unless the pragma
+ --     Unreserve_All_Interrupts is specified anywhere in the application.
+ 
+ --    System.OS_Interface contains the following:
+ --      SIGADAABORT: the signal that will be used to abort tasks.
+ --      Unmasked: the OS specific set of signals that should be unmasked in
+ --                all the threads. SIGADAABORT is unmasked by
+ --                default
+ --      Reserved: the OS specific set of signals that are reserved.
+ 
+ with System.Task_Primitives;
+ 
+ package body System.Interrupt_Management is
+ 
+    use Interfaces.C;
+    use System.OS_Interface;
+ 
+    type Interrupt_List is array (Interrupt_ID range <>) of Interrupt_ID;
+    Exception_Interrupts : constant Interrupt_List :=
+      (SIGFPE, SIGILL, SIGSEGV, SIGBUS);
+ 
+    Unreserve_All_Interrupts : Interfaces.C.int;
+    pragma Import
+      (C, Unreserve_All_Interrupts, "__gl_unreserve_all_interrupts");
+ 
+    -----------------------
+    -- Local Subprograms --
+    -----------------------
+ 
+    procedure Signal_Trampoline
+      (signo    : Signal;
+       siginfo  : System.Address;
+       ucontext : System.Address;
+       handler  : System.Address);
+    pragma Import (C, Signal_Trampoline, "__gnat_sigtramp");
+    --  Pass the real handler to a speical function that handles unwinding by
+    --  skipping over the kernel signal frame (which doesn't contain any unwind
+    --  information).
+ 
+    procedure Map_Signal
+      (signo    : Signal;
+       siginfo  : System.Address;
+       ucontext : System.Address);
+    pragma Import (C, Map_Signal, "__gnat_map_signal");
+ 
+    function State (Int : 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:
+ 
+    User    : constant Character := 'u';
+    Runtime : constant Character := 'r';
+    Default : constant Character := 's';
+    --    'n'   this interrupt not set by any Interrupt_State pragma
+    --    'u'   Interrupt_State pragma set state to User
+    --    'r'   Interrupt_State pragma set state to Runtime
+    --    's'   Interrupt_State pragma set state to System (use "default"
+    --           system handler)
+ 
+    procedure Notify_Exception
+      (signo    : Signal;
+       siginfo  : System.Address;
+       ucontext : System.Address);
+    --  This function identifies the Ada exception to be raised using the
+    --  information when the system received a synchronous signal. Since this
+    --  function is machine and OS dependent, different code has to be provided
+    --  for different target.
+ 
+    ----------------------
+    -- Notify_Exception --
+    ----------------------
+ 
+    Signal_Mask : aliased sigset_t;
+    --  The set of signals handled by Notify_Exception
+ 
+    procedure Notify_Exception
+      (signo    : Signal;
+       siginfo  : System.Address;
+       ucontext : System.Address)
+    is
+       Result : Interfaces.C.int;
+ 
+    begin
+       --  With the __builtin_longjmp, the signal mask is not restored, so we
+       --  need to restore it explicitly.
+ 
+       Result := pthread_sigmask (SIG_UNBLOCK, Signal_Mask'Access, null);
+       pragma Assert (Result = 0);
+ 
+       --  Perform the necessary context adjustments prior to a raise
+       --  from a signal handler.
+ 
+       Adjust_Context_For_Raise (signo, ucontext);
+ 
+       --  Check that treatment of exception propagation here is consistent with
+       --  treatment of the abort signal in System.Task_Primitives.Operations.
+ 
+       Signal_Trampoline (signo, siginfo, ucontext, Map_Signal'Address);
+    end Notify_Exception;
+ 
+    ----------------
+    -- Initialize --
+    ----------------
+ 
+    Initialized : Boolean := False;
+ 
+    procedure Initialize is
+       act     : aliased struct_sigaction;
+       old_act : aliased struct_sigaction;
+       Result  : System.OS_Interface.int;
+ 
+       Use_Alternate_Stack : constant Boolean :=
+                               System.Task_Primitives.Alternate_Stack_Size /= 0;
+       --  Whether to use an alternate signal stack for stack overflows
+ 
+    begin
+       if Initialized then
+          return;
+       end if;
+ 
+       Initialized := True;
+ 
+       --  Need to call pthread_init very early because it is doing signal
+       --  initializations.
+ 
+       pthread_init;
+ 
+       Abort_Task_Interrupt := SIGADAABORT;
+ 
+       act.sa_handler := Notify_Exception'Address;
+ 
+       --  Setting SA_SIGINFO asks the kernel to pass more than just the signal
+       --  number argument to the handler when it is called. The set of extra
+       --  parameters includes a pointer to the interrupted context, which the
+       --  ZCX propagation scheme needs.
+ 
+       --  Most man pages for sigaction mention that sa_sigaction should be set
+       --  instead of sa_handler when SA_SIGINFO is on.  In practice, the two
+       --  fields are actually union'ed and located at the same offset.
+ 
+       --  On some targets, we set sa_flags to SA_NODEFER so that during the
+       --  handler execution we do not change the Signal_Mask to be masked for
+       --  the Signal.
+ 
+       --  This is a temporary fix to the problem that the Signal_Mask is not
+       --  restored after the exception (longjmp) from the handler. The right
+       --  fix should be made in sigsetjmp so that we save the Signal_Set and
+       --  restore it after a longjmp.
+ 
+       --  Since SA_NODEFER is obsolete, instead we reset explicitly the mask
+       --  in the exception handler.
+ 
+       Result := sigemptyset (Signal_Mask'Access);
+       pragma Assert (Result = 0);
+ 
+       --  Add signals that map to Ada exceptions to the mask
+ 
+       for J in Exception_Interrupts'Range loop
+          if State (Exception_Interrupts (J)) /= Default then
+             Result :=
+             sigaddset (Signal_Mask'Access, Signal (Exception_Interrupts (J)));
+             pragma Assert (Result = 0);
+          end if;
+       end loop;
+ 
+       act.sa_mask := Signal_Mask;
+ 
+       pragma Assert (Keep_Unmasked = (Interrupt_ID'Range => False));
+       pragma Assert (Reserve = (Interrupt_ID'Range => False));
+ 
+       --  Process state of exception signals
+ 
+       for J in Exception_Interrupts'Range loop
+          if State (Exception_Interrupts (J)) /= User then
+             Keep_Unmasked (Exception_Interrupts (J)) := True;
+             Reserve (Exception_Interrupts (J)) := True;
+ 
+             if State (Exception_Interrupts (J)) /= Default then
+                act.sa_flags := SA_SIGINFO;
+ 
+                if Use_Alternate_Stack
+                  and then Exception_Interrupts (J) = SIGSEGV
+                then
+                   act.sa_flags := act.sa_flags + SA_ONSTACK;
+                end if;
+ 
+                Result :=
+                  sigaction
+                    (Signal (Exception_Interrupts (J)), act'Unchecked_Access,
+                     old_act'Unchecked_Access);
+                pragma Assert (Result = 0);
+             end if;
+          end if;
+       end loop;
+ 
+       if State (Abort_Task_Interrupt) /= User then
+          Keep_Unmasked (Abort_Task_Interrupt) := True;
+          Reserve (Abort_Task_Interrupt) := True;
+       end if;
+ 
+       --  Set SIGINT to unmasked state as long as it is not in "User" state.
+       --  Check for Unreserve_All_Interrupts last.
+ 
+       if State (SIGINT) /= User then
+          Keep_Unmasked (SIGINT) := True;
+          Reserve (SIGINT) := True;
+       end if;
+ 
+       --  Check all signals for state that requires keeping them unmasked and
+       --  reserved.
+ 
+       for J in Interrupt_ID'Range loop
+          if State (J) = Default or else State (J) = Runtime then
+             Keep_Unmasked (J) := True;
+             Reserve (J) := True;
+          end if;
+       end loop;
+ 
+       --  Add the set of signals that must always be unmasked for this target
+ 
+       for J in Unmasked'Range loop
+          Keep_Unmasked (Interrupt_ID (Unmasked (J))) := True;
+          Reserve (Interrupt_ID (Unmasked (J))) := True;
+       end loop;
+ 
+       --  Add target-specific reserved signals
+ 
+       if Reserved'Length > 0 then
+          for J in Reserved'Range loop
+             Reserve (Interrupt_ID (Reserved (J))) := True;
+          end loop;
+       end if;
+ 
+       --  Process pragma Unreserve_All_Interrupts. This overrides any settings
+       --  due to pragma Interrupt_State:
+ 
+       if Unreserve_All_Interrupts /= 0 then
+          Keep_Unmasked (SIGINT) := False;
+          Reserve (SIGINT) := False;
+       end if;
+ 
+       --  We do not really have Signal 0. We just use this value to identify
+       --  non-existent signals (see s-intnam.ads). Therefore, Signal should not
+       --  be used in all signal related operations hence mark it as reserved.
+ 
+       Reserve (0) := True;
+    end Initialize;
+ 
+ end System.Interrupt_Management;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-intman__solaris.adb gcc-8.1.0/gcc/ada/libgnarl/s-intman__solaris.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-intman__solaris.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-intman__solaris.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,232 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --           S Y S T E M . I N T E R R U P T _ M A N A G E M E N T          --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is a Solaris version of this package
+ 
+ --  Make a careful study of all signals available under the OS, to see which
+ --  need to be reserved, kept always unmasked, or kept always unmasked.
+ 
+ --  Be on the lookout for special signals that may be used by the thread
+ --  library.
+ 
+ package body System.Interrupt_Management is
+ 
+    use Interfaces.C;
+    use System.OS_Interface;
+ 
+    type Interrupt_List is array (Interrupt_ID range <>) of Interrupt_ID;
+ 
+    Exception_Interrupts : constant Interrupt_List :=
+      (SIGFPE, SIGILL, SIGSEGV, SIGBUS);
+ 
+    Unreserve_All_Interrupts : Interfaces.C.int;
+    pragma Import
+      (C, Unreserve_All_Interrupts, "__gl_unreserve_all_interrupts");
+ 
+    function State (Int : 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:
+ 
+    User    : constant Character := 'u';
+    Runtime : constant Character := 'r';
+    Default : constant Character := 's';
+    --    'n'   this interrupt not set by any Interrupt_State pragma
+    --    'u'   Interrupt_State pragma set state to User
+    --    'r'   Interrupt_State pragma set state to Runtime
+    --    's'   Interrupt_State pragma set state to System (use "default"
+    --           system handler)
+ 
+    ----------------------
+    -- Notify_Exception --
+    ----------------------
+ 
+    --  This function identifies the Ada exception to be raised using the
+    --  information when the system received a synchronous signal. Since this
+    --  function is machine and OS dependent, different code has to be provided
+    --  for different target.
+ 
+    procedure Notify_Exception
+      (signo   : Signal;
+       info    : access siginfo_t;
+       context : access ucontext_t);
+ 
+    ----------------------
+    -- Notify_Exception --
+    ----------------------
+ 
+    procedure Notify_Exception
+      (signo   : Signal;
+       info    : access siginfo_t;
+       context : access ucontext_t)
+    is
+       pragma Unreferenced (info);
+ 
+    begin
+       --  Perform the necessary context adjustments prior to a raise from a
+       --  signal handler.
+ 
+       Adjust_Context_For_Raise (signo, context.all'Address);
+ 
+       --  Check that treatment of exception propagation here is consistent with
+       --  treatment of the abort signal in System.Task_Primitives.Operations.
+ 
+       case signo is
+          when SIGFPE  => raise Constraint_Error;
+          when SIGILL  => raise Program_Error;
+          when SIGSEGV => raise Storage_Error;
+          when SIGBUS  => raise Storage_Error;
+          when others  => null;
+       end case;
+    end Notify_Exception;
+ 
+    ----------------
+    -- Initialize --
+    ----------------
+ 
+    Initialized : Boolean := False;
+ 
+    procedure Initialize is
+       act     : aliased struct_sigaction;
+       old_act : aliased struct_sigaction;
+       mask    : aliased sigset_t;
+       Result  : Interfaces.C.int;
+ 
+    begin
+       if Initialized then
+          return;
+       end if;
+ 
+       Initialized := True;
+ 
+       --  Need to call pthread_init very early because it is doing signal
+       --  initializations.
+ 
+       pthread_init;
+ 
+       --  Change this if you want to use another signal for task abort.
+       --  SIGTERM might be a good one.
+ 
+       Abort_Task_Interrupt := SIGABRT;
+ 
+       act.sa_handler := Notify_Exception'Address;
+ 
+       --  Set sa_flags to SA_NODEFER so that during the handler execution
+       --  we do not change the Signal_Mask to be masked for the Signal.
+       --  This is a temporary fix to the problem that the Signal_Mask is
+       --  not restored after the exception (longjmp) from the handler.
+       --  The right fix should be made in sigsetjmp so that we save
+       --  the Signal_Set and restore it after a longjmp.
+ 
+       --  In that case, this field should be changed back to 0. ??? (Dong-Ik)
+ 
+       act.sa_flags := 16;
+ 
+       Result := sigemptyset (mask'Access);
+       pragma Assert (Result = 0);
+ 
+       --  ??? For the same reason explained above, we can't mask these signals
+       --  because otherwise we won't be able to catch more than one signal.
+ 
+       act.sa_mask := mask;
+ 
+       pragma Assert (Keep_Unmasked = (Interrupt_ID'Range => False));
+       pragma Assert (Reserve = (Interrupt_ID'Range => False));
+ 
+       for J in Exception_Interrupts'Range loop
+          if State (Exception_Interrupts (J)) /= User then
+             Keep_Unmasked (Exception_Interrupts (J)) := True;
+             Reserve (Exception_Interrupts (J)) := True;
+ 
+             if State (Exception_Interrupts (J)) /= Default then
+                Result :=
+                  sigaction
+                  (Signal (Exception_Interrupts (J)), act'Unchecked_Access,
+                   old_act'Unchecked_Access);
+                pragma Assert (Result = 0);
+             end if;
+          end if;
+       end loop;
+ 
+       if State (Abort_Task_Interrupt) /= User then
+          Keep_Unmasked (Abort_Task_Interrupt) := True;
+          Reserve (Abort_Task_Interrupt) := True;
+       end if;
+ 
+       --  Set SIGINT to unmasked state as long as it's
+       --  not in "User" state.  Check for Unreserve_All_Interrupts last
+ 
+       if State (SIGINT) /= User then
+          Keep_Unmasked (SIGINT) := True;
+          Reserve (SIGINT) := True;
+       end if;
+ 
+       --  Check all signals for state that requires keeping them
+       --  unmasked and reserved
+ 
+       for J in Interrupt_ID'Range loop
+          if State (J) = Default or else State (J) = Runtime then
+             Keep_Unmasked (J) := True;
+             Reserve (J) := True;
+          end if;
+       end loop;
+ 
+       --  Add the set of signals that must always be unmasked for this target
+ 
+       for J in Unmasked'Range loop
+          Keep_Unmasked (Interrupt_ID (Unmasked (J))) := True;
+          Reserve (Interrupt_ID (Unmasked (J))) := True;
+       end loop;
+ 
+       --  Add target-specific reserved signals
+ 
+       for J in Reserved'Range loop
+          Reserve (Interrupt_ID (Reserved (J))) := True;
+       end loop;
+ 
+       --  Process pragma Unreserve_All_Interrupts. This overrides any
+       --  settings due to pragma Interrupt_State:
+ 
+       if Unreserve_All_Interrupts /= 0 then
+          Keep_Unmasked (SIGINT) := False;
+          Reserve (SIGINT) := False;
+       end if;
+ 
+       --  We do not have Signal 0 in reality. We just use this value to
+       --  identify not existing signals (see s-intnam.ads). Therefore, Signal 0
+       --  should not be used in all signal related operations hence mark it as
+       --  reserved.
+ 
+       Reserve (0) := True;
+    end Initialize;
+ 
+ end System.Interrupt_Management;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-intman__susv3.adb gcc-8.1.0/gcc/ada/libgnarl/s-intman__susv3.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-intman__susv3.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-intman__susv3.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,170 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --           S Y S T E M . I N T E R R U P T _ M A N A G E M E N T          --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is the SuSV3 threads version of this package
+ 
+ --  Make a careful study of all signals available under the OS, to see which
+ --  need to be reserved, kept always unmasked, or kept always unmasked. Be on
+ --  the lookout for special signals that may be used by the thread library.
+ 
+ --  Since this is a multi target file, the signal <-> exception mapping
+ --  is simple minded. If you need a more precise and target specific
+ --  signal handling, create a new s-intman.adb that will fit your needs.
+ 
+ --  This file assumes that:
+ 
+ --    SIGINT exists and will be kept unmasked unless the pragma
+ --     Unreserve_All_Interrupts is specified anywhere in the application.
+ 
+ --    System.OS_Interface contains the following:
+ --      SIGADAABORT: the signal that will be used to abort tasks.
+ --      Unmasked: the OS specific set of signals that should be unmasked in
+ --                all the threads. SIGADAABORT is unmasked by
+ --                default
+ --      Reserved: the OS specific set of signals that are reserved.
+ 
+ package body System.Interrupt_Management is
+ 
+    use Interfaces.C;
+    use System.OS_Interface;
+ 
+    Unreserve_All_Interrupts : Interfaces.C.int;
+    pragma Import
+      (C, Unreserve_All_Interrupts, "__gl_unreserve_all_interrupts");
+ 
+    -----------------------
+    -- Local Subprograms --
+    -----------------------
+ 
+    function State (Int : 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:
+ 
+    User    : constant Character := 'u';
+    Runtime : constant Character := 'r';
+    Default : constant Character := 's';
+    --    'n'   this interrupt not set by any Interrupt_State pragma
+    --    'u'   Interrupt_State pragma set state to User
+    --    'r'   Interrupt_State pragma set state to Runtime
+    --    's'   Interrupt_State pragma set state to System (use "default"
+    --           system handler)
+ 
+    ----------------
+    -- Initialize --
+    ----------------
+ 
+    Initialized : Boolean := False;
+ 
+    procedure Initialize is
+    begin
+       if Initialized then
+          return;
+       end if;
+ 
+       Initialized := True;
+ 
+       --  Need to call pthread_init very early because it is doing signal
+       --  initializations.
+ 
+       pthread_init;
+ 
+       Abort_Task_Interrupt := SIGADAABORT;
+ 
+       pragma Assert (Keep_Unmasked = (Interrupt_ID'Range => False));
+       pragma Assert (Reserve = (Interrupt_ID'Range => False));
+ 
+       --  Process state of exception signals
+ 
+       for J in Exception_Signals'Range loop
+          declare
+             Sig : constant Signal := Exception_Signals (J);
+             Id : constant Interrupt_ID := Interrupt_ID (Sig);
+          begin
+             if State (Id) /= User then
+                Keep_Unmasked (Id) := True;
+                Reserve (Id) := True;
+             end if;
+          end;
+       end loop;
+ 
+       if State (Abort_Task_Interrupt) /= User then
+          Keep_Unmasked (Abort_Task_Interrupt) := True;
+          Reserve (Abort_Task_Interrupt) := True;
+       end if;
+ 
+       --  Set SIGINT to unmasked state as long as it is not in "User" state.
+       --  Check for Unreserve_All_Interrupts last.
+ 
+       if State (SIGINT) /= User then
+          Keep_Unmasked (SIGINT) := True;
+          Reserve (SIGINT) := True;
+       end if;
+ 
+       --  Check all signals for state that requires keeping them unmasked and
+       --  reserved.
+ 
+       for J in Interrupt_ID'Range loop
+          if State (J) = Default or else State (J) = Runtime then
+             Keep_Unmasked (J) := True;
+             Reserve (J) := True;
+          end if;
+       end loop;
+ 
+       --  Add the set of signals that must always be unmasked for this target
+ 
+       for J in Unmasked'Range loop
+          Keep_Unmasked (Interrupt_ID (Unmasked (J))) := True;
+          Reserve (Interrupt_ID (Unmasked (J))) := True;
+       end loop;
+ 
+       --  Add target-specific reserved signals
+ 
+       for J in Reserved'Range loop
+          Reserve (Interrupt_ID (Reserved (J))) := True;
+       end loop;
+ 
+       --  Process pragma Unreserve_All_Interrupts. This overrides any settings
+       --  due to pragma Interrupt_State:
+ 
+       if Unreserve_All_Interrupts /= 0 then
+          Keep_Unmasked (SIGINT) := False;
+          Reserve (SIGINT) := False;
+       end if;
+ 
+       --  We do not really have Signal 0. We just use this value to identify
+       --  non-existent signals (see s-intnam.ads). Therefore, Signal should not
+       --  be used in all signal related operations hence mark it as reserved.
+ 
+       Reserve (0) := True;
+    end Initialize;
+ 
+ end System.Interrupt_Management;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-intman__vxworks.adb gcc-8.1.0/gcc/ada/libgnarl/s-intman__vxworks.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-intman__vxworks.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-intman__vxworks.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,93 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --           S Y S T E M . I N T E R R U P T _ M A N A G E M E N T          --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is the VxWorks version of this package
+ 
+ --  It is simpler than other versions because the Ada interrupt handling
+ --  mechanisms are used for hardware interrupts rather than signals.
+ 
+ package body System.Interrupt_Management is
+ 
+    use System.OS_Interface;
+ 
+    -----------------------
+    -- Local Subprograms --
+    -----------------------
+ 
+    function State (Int : Interrupt_ID) return Character;
+    pragma Import (C, State, "__gnat_get_interrupt_state");
+    --  Get interrupt state. Defined in init.c The input argument is the
+    --  hardware interrupt number, and the result is one of the following:
+ 
+    Runtime : constant Character := 'r';
+    Default : constant Character := 's';
+    --    'n'   this interrupt not set by any Interrupt_State pragma
+    --    'u'   Interrupt_State pragma set state to User
+    --    'r'   Interrupt_State pragma set state to Runtime
+    --    's'   Interrupt_State pragma set state to System (use "default"
+    --           system handler)
+ 
+    ----------------
+    -- Initialize --
+    ----------------
+ 
+    Initialized : Boolean := False;
+    --  Set to True once Initialize is called, further calls have no effect
+ 
+    procedure Initialize is
+ 
+    begin
+       if Initialized then
+          return;
+       end if;
+ 
+       Initialized := True;
+ 
+       --  Change this if you want to use another signal for task abort.
+       --  SIGTERM might be a good one.
+ 
+       Abort_Task_Interrupt := SIGABRT;
+ 
+       --  Initialize hardware interrupt handling
+ 
+       pragma Assert (Reserve = (Interrupt_ID'Range => False));
+ 
+       --  Check all interrupts for state that requires keeping them reserved
+ 
+       for J in Interrupt_ID'Range loop
+          if State (J) = Default or else State (J) = Runtime then
+             Reserve (J) := True;
+          end if;
+       end loop;
+ 
+    end Initialize;
+ 
+ end System.Interrupt_Management;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-intman__vxworks.ads gcc-8.1.0/gcc/ada/libgnarl/s-intman__vxworks.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-intman__vxworks.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-intman__vxworks.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,105 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --            S Y S T E M . I N T E R R U P T _ M A N A G E M E N T         --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is the VxWorks version of this package
+ 
+ --  This package encapsulates and centralizes information about all
+ --  uses of interrupts (or signals), including the target-dependent
+ --  mapping of interrupts (or signals) to exceptions.
+ 
+ --  Unlike the original design, System.Interrupt_Management can only
+ --  be used for tasking systems.
+ 
+ --  PLEASE DO NOT put any subprogram declarations with arguments of
+ --  type Interrupt_ID into the visible part of this package. The type
+ --  Interrupt_ID is used to derive the type in Ada.Interrupts, and
+ --  adding more operations to that type would be illegal according
+ --  to the Ada Reference Manual. This is the reason why the signals
+ --  sets are implemented using visible arrays rather than functions.
+ 
+ with System.OS_Interface;
+ 
+ with Interfaces.C;
+ 
+ package System.Interrupt_Management is
+    pragma Preelaborate;
+ 
+    type Interrupt_Mask is limited private;
+ 
+    type Interrupt_ID is new Interfaces.C.int
+      range 0 .. System.OS_Interface.Max_Interrupt;
+ 
+    type Interrupt_Set is array (Interrupt_ID) of Boolean;
+ 
+    subtype Signal_ID is Interrupt_ID range 0 .. System.OS_Interface.NSIG - 1;
+ 
+    type Signal_Set is array (Signal_ID) of Boolean;
+ 
+    --  The following objects serve as constants, but are initialized in the
+    --  body to aid portability. This permits us to use more portable names for
+    --  interrupts, where distinct names may map to the same interrupt ID
+    --  value.
+ 
+    --  For example, suppose SIGRARE is a signal that is not defined on all
+    --  systems, but is always reserved when it is defined. If we have the
+    --  convention that ID zero is not used for any "real" signals, and SIGRARE
+    --  = 0 when SIGRARE is not one of the locally supported signals, we can
+    --  write:
+    --     Reserved (SIGRARE) := True;
+    --  and the initialization code will be portable.
+ 
+    Abort_Task_Interrupt : Signal_ID;
+    --  The signal that is used to implement task abort if an interrupt is used
+    --  for that purpose. This is one of the reserved signals.
+ 
+    Reserve : Interrupt_Set := (others => False);
+    --  Reserve (I) is true iff the interrupt I is one that cannot be permitted
+    --  to be attached to a user handler. The possible reasons are many. For
+    --  example, it may be mapped to an exception used to implement task abort,
+    --  or used to implement time delays.
+ 
+    procedure Initialize_Interrupts;
+    pragma Import (C, Initialize_Interrupts, "__gnat_install_handler");
+    --  Under VxWorks, there is no signal inheritance between tasks.
+    --  This procedure is used to initialize signal-to-exception mapping in
+    --  each task.
+ 
+    procedure Initialize;
+    --  Initialize the various variables defined in this package. This procedure
+    --  must be called before accessing any object from this package and can be
+    --  called multiple times (only the first call has any effect).
+ 
+ private
+    type Interrupt_Mask is new System.OS_Interface.sigset_t;
+    --  In some implementation Interrupt_Mask can be represented as a linked
+    --  list.
+ 
+ end System.Interrupt_Management;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-linux.ads gcc-8.1.0/gcc/ada/libgnarl/s-linux.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-linux.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-linux.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,127 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                GNU ADA RUN-TIME LIBRARY (GNARL) COMPONENTS               --
+ --                                                                          --
+ --                          S Y S T E M .  L I N U X                        --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --          Copyright (C) 2008-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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 is the default version of this package
+ 
+ --  This package encapsulates cpu specific differences between implementations
+ --  of GNU/Linux, in order to share s-osinte-linux.ads.
+ 
+ --  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;
+ 
+ package System.Linux is
+    pragma Preelaborate;
+ 
+    ----------
+    -- Time --
+    ----------
+ 
+    subtype long        is Interfaces.C.long;
+    subtype suseconds_t is Interfaces.C.long;
+    subtype time_t      is Interfaces.C.long;
+    subtype clockid_t   is Interfaces.C.int;
+ 
+    type timespec is record
+       tv_sec  : time_t;
+       tv_nsec : long;
+    end record;
+    pragma Convention (C, timespec);
+ 
+    type timeval is record
+       tv_sec  : time_t;
+       tv_usec : suseconds_t;
+    end record;
+    pragma Convention (C, timeval);
+ 
+    -----------
+    -- Errno --
+    -----------
+ 
+    EAGAIN    : constant := 11;
+    EINTR     : constant := 4;
+    EINVAL    : constant := 22;
+    ENOMEM    : constant := 12;
+    EPERM     : constant := 1;
+    ETIMEDOUT : constant := 110;
+ 
+    -------------
+    -- Signals --
+    -------------
+ 
+    SIGHUP     : constant := 1; --  hangup
+    SIGINT     : constant := 2; --  interrupt (rubout)
+    SIGQUIT    : constant := 3; --  quit (ASCD FS)
+    SIGILL     : constant := 4; --  illegal instruction (not reset)
+    SIGTRAP    : constant := 5; --  trace trap (not reset)
+    SIGIOT     : constant := 6; --  IOT instruction
+    SIGABRT    : constant := 6; --  used by abort, replace SIGIOT in the  future
+    SIGFPE     : constant := 8; --  floating point exception
+    SIGKILL    : constant := 9; --  kill (cannot be caught or ignored)
+    SIGBUS     : constant := 7; --  bus error
+    SIGSEGV    : constant := 11; --  segmentation violation
+    SIGPIPE    : constant := 13; --  write on a pipe with no one to read it
+    SIGALRM    : constant := 14; --  alarm clock
+    SIGTERM    : constant := 15; --  software termination signal from kill
+    SIGUSR1    : constant := 10; --  user defined signal 1
+    SIGUSR2    : constant := 12; --  user defined signal 2
+    SIGCLD     : constant := 17; --  alias for SIGCHLD
+    SIGCHLD    : constant := 17; --  child status change
+    SIGPWR     : constant := 30; --  power-fail restart
+    SIGWINCH   : constant := 28; --  window size change
+    SIGURG     : constant := 23; --  urgent condition on IO channel
+    SIGPOLL    : constant := 29; --  pollable event occurred
+    SIGIO      : constant := 29; --  I/O now possible (4.2 BSD)
+    SIGLOST    : constant := 29; --  File lock lost
+    SIGSTOP    : constant := 19; --  stop (cannot be caught or ignored)
+    SIGTSTP    : constant := 20; --  user stop requested from tty
+    SIGCONT    : constant := 18; --  stopped process has been continued
+    SIGTTIN    : constant := 21; --  background tty read attempted
+    SIGTTOU    : constant := 22; --  background tty write attempted
+    SIGVTALRM  : constant := 26; --  virtual timer expired
+    SIGPROF    : constant := 27; --  profiling timer expired
+    SIGXCPU    : constant := 24; --  CPU time limit exceeded
+    SIGXFSZ    : constant := 25; --  filesize limit exceeded
+    SIGUNUSED  : constant := 31; --  unused signal (GNU/Linux)
+    SIGSTKFLT  : constant := 16; --  coprocessor stack fault (Linux)
+    SIGLTHRRES : constant := 32; --  GNU/LinuxThreads restart signal
+    SIGLTHRCAN : constant := 33; --  GNU/LinuxThreads cancel signal
+    SIGLTHRDBG : constant := 34; --  GNU/LinuxThreads debugger signal
+ 
+    --  struct_sigaction offsets
+ 
+    sa_handler_pos : constant := 0;
+    sa_mask_pos    : constant := Standard'Address_Size / 8;
+    sa_flags_pos   : constant := 128 + sa_mask_pos;
+ 
+    SA_SIGINFO  : constant := 16#04#;
+    SA_ONSTACK  : constant := 16#08000000#;
+ 
+ end System.Linux;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-linux__alpha.ads gcc-8.1.0/gcc/ada/libgnarl/s-linux__alpha.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-linux__alpha.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-linux__alpha.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,135 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                GNU ADA RUN-TIME LIBRARY (GNARL) COMPONENTS               --
+ --                                                                          --
+ --                          S Y S T E M .  L I N U X                        --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --          Copyright (C) 2009-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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 is the alpha version of this package
+ 
+ --  This package encapsulates cpu specific differences between implementations
+ --  of GNU/Linux, in order to share s-osinte-linux.ads.
+ 
+ --  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;
+ 
+ package System.Linux is
+    pragma Preelaborate;
+ 
+    ----------
+    -- Time --
+    ----------
+ 
+    subtype long        is Interfaces.C.long;
+    subtype suseconds_t is Interfaces.C.long;
+    subtype time_t      is Interfaces.C.long;
+    subtype clockid_t   is Interfaces.C.int;
+ 
+    type timespec is record
+       tv_sec  : time_t;
+       tv_nsec : long;
+    end record;
+    pragma Convention (C, timespec);
+ 
+    type timeval is record
+       tv_sec  : time_t;
+       tv_usec : suseconds_t;
+    end record;
+    pragma Convention (C, timeval);
+ 
+    -----------
+    -- Errno --
+    -----------
+ 
+    EAGAIN    : constant := 35;
+    EINTR     : constant := 4;
+    EINVAL    : constant := 22;
+    ENOMEM    : constant := 12;
+    EPERM     : constant := 1;
+    ETIMEDOUT : constant := 60;
+ 
+    -------------
+    -- Signals --
+    -------------
+ 
+    SIGHUP     : constant := 1; --  hangup
+    SIGINT     : constant := 2; --  interrupt (rubout)
+    SIGQUIT    : constant := 3; --  quit (ASCD FS)
+    SIGILL     : constant := 4; --  illegal instruction (not reset)
+    SIGTRAP    : constant := 5; --  trace trap (not reset)
+    SIGIOT     : constant := 6; --  IOT instruction
+    SIGABRT    : constant := 6; --  used by abort, replace SIGIOT in the  future
+    SIGFPE     : constant := 8; --  floating point exception
+    SIGKILL    : constant := 9; --  kill (cannot be caught or ignored)
+    SIGBUS     : constant := 10; --  bus error
+    SIGSEGV    : constant := 11; --  segmentation violation
+    SIGPIPE    : constant := 13; --  write on a pipe with no one to read it
+    SIGALRM    : constant := 14; --  alarm clock
+    SIGTERM    : constant := 15; --  software termination signal from kill
+    SIGURG     : constant := 16; --  urgent condition on IO channel
+    SIGSTOP    : constant := 17; --  stop (cannot be caught or ignored)
+    SIGTSTP    : constant := 18; --  user stop requested from tty
+    SIGCONT    : constant := 19; --  stopped process has been continued
+    SIGCLD     : constant := 20; --  alias for SIGCHLD
+    SIGCHLD    : constant := 20; --  child status change
+    SIGTTIN    : constant := 21; --  background tty read attempted
+    SIGTTOU    : constant := 22; --  background tty write attempted
+    SIGIO      : constant := 23; --  I/O now possible (4.2 BSD)
+    SIGPOLL    : constant := 23; --  pollable event occurred
+    SIGXCPU    : constant := 24; --  CPU time limit exceeded
+    SIGXFSZ    : constant := 25; --  filesize limit exceeded
+    SIGVTALRM  : constant := 26; --  virtual timer expired
+    SIGPROF    : constant := 27; --  profiling timer expired
+    SIGWINCH   : constant := 28; --  window size change
+    SIGPWR     : constant := 29; --  power-fail restart
+    SIGUSR1    : constant := 30; --  user defined signal 1
+    SIGUSR2    : constant := 31; --  user defined signal 2
+ 
+    SIGLTHRRES : constant := 32; --  GNU/LinuxThreads restart signal
+    SIGLTHRCAN : constant := 33; --  GNU/LinuxThreads cancel signal
+    SIGLTHRDBG : constant := 34; --  GNU/LinuxThreads debugger signal
+ 
+    SIGADAABORT : constant := SIGABRT;
+    --  Change this if you want to use another signal for task abort.
+    --  SIGTERM might be a good one.
+ 
+    SIGUNUSED  : constant := 0;
+    SIGSTKFLT  : constant := 0;
+    SIGLOST    : constant := 0;
+    --  These don't exist for Linux/Alpha.  The constants are present
+    --  so that we can continue to use a-intnam-linux.ads.
+ 
+    --  struct_sigaction offsets
+ 
+    sa_handler_pos : constant := 0;
+    sa_mask_pos    : constant := Standard'Address_Size / 8;
+    sa_flags_pos   : constant := 128 + sa_mask_pos;
+ 
+    SA_SIGINFO  : constant := 16#40#;
+    SA_ONSTACK  : constant := 16#01#;
+ 
+ end System.Linux;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-linux__android.ads gcc-8.1.0/gcc/ada/libgnarl/s-linux__android.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-linux__android.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-linux__android.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,129 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                GNU ADA RUN-TIME LIBRARY (GNARL) COMPONENTS               --
+ --                                                                          --
+ --                          S Y S T E M .  L I N U X                        --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --            Copyright (C) 2014-2018, Free Software Foundation, Inc.       --
+ --                                                                          --
+ -- GNARL is 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.                                                        --
+ --                                                                          --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is the Android version of this package
+ 
+ --  This package encapsulates cpu specific differences between implementations
+ --  of GNU/Linux, in order to share s-osinte-linux.ads.
+ 
+ --  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;
+ 
+ package System.Linux is
+    pragma Preelaborate;
+ 
+    ----------
+    -- Time --
+    ----------
+ 
+    subtype long        is Interfaces.C.long;
+    subtype suseconds_t is Interfaces.C.long;
+    subtype time_t      is Interfaces.C.long;
+    subtype clockid_t   is Interfaces.C.int;
+ 
+    type timespec is record
+       tv_sec  : time_t;
+       tv_nsec : long;
+    end record;
+    pragma Convention (C, timespec);
+ 
+    type timeval is record
+       tv_sec  : time_t;
+       tv_usec : suseconds_t;
+    end record;
+    pragma Convention (C, timeval);
+ 
+    -----------
+    -- Errno --
+    -----------
+ 
+    EAGAIN    : constant := 11;
+    EINTR     : constant := 4;
+    EINVAL    : constant := 22;
+    ENOMEM    : constant := 12;
+    EPERM     : constant := 1;
+    ETIMEDOUT : constant := 110;
+ 
+    -------------
+    -- Signals --
+    -------------
+ 
+    SIGHUP     : constant := 1; --  hangup
+    SIGINT     : constant := 2; --  interrupt (rubout)
+    SIGQUIT    : constant := 3; --  quit (ASCD FS)
+    SIGILL     : constant := 4; --  illegal instruction (not reset)
+    SIGTRAP    : constant := 5; --  trace trap (not reset)
+    SIGIOT     : constant := 6; --  IOT instruction
+    SIGABRT    : constant := 6; --  used by abort, replace SIGIOT in the  future
+    SIGFPE     : constant := 8; --  floating point exception
+    SIGKILL    : constant := 9; --  kill (cannot be caught or ignored)
+    SIGBUS     : constant := 7; --  bus error
+    SIGSEGV    : constant := 11; --  segmentation violation
+    SIGPIPE    : constant := 13; --  write on a pipe with no one to read it
+    SIGALRM    : constant := 14; --  alarm clock
+    SIGTERM    : constant := 15; --  software termination signal from kill
+    SIGUSR1    : constant := 10; --  user defined signal 1
+    SIGUSR2    : constant := 12; --  user defined signal 2
+    SIGCLD     : constant := 17; --  alias for SIGCHLD
+    SIGCHLD    : constant := 17; --  child status change
+    SIGPWR     : constant := 30; --  power-fail restart
+    SIGWINCH   : constant := 28; --  window size change
+    SIGURG     : constant := 23; --  urgent condition on IO channel
+    SIGPOLL    : constant := 29; --  pollable event occurred
+    SIGIO      : constant := 29; --  I/O now possible (4.2 BSD)
+    SIGLOST    : constant := 29; --  File lock lost
+    SIGSTOP    : constant := 19; --  stop (cannot be caught or ignored)
+    SIGTSTP    : constant := 20; --  user stop requested from tty
+    SIGCONT    : constant := 18; --  stopped process has been continued
+    SIGTTIN    : constant := 21; --  background tty read attempted
+    SIGTTOU    : constant := 22; --  background tty write attempted
+    SIGVTALRM  : constant := 26; --  virtual timer expired
+    SIGPROF    : constant := 27; --  profiling timer expired
+    SIGXCPU    : constant := 24; --  CPU time limit exceeded
+    SIGXFSZ    : constant := 25; --  filesize limit exceeded
+    SIGUNUSED  : constant := 31; --  unused signal (GNU/Linux)
+    SIGSTKFLT  : constant := 16; --  coprocessor stack fault (Linux)
+    SIGLTHRRES : constant := 32; --  GNU/LinuxThreads restart signal
+    SIGLTHRCAN : constant := 33; --  GNU/LinuxThreads cancel signal
+    SIGLTHRDBG : constant := 34; --  GNU/LinuxThreads debugger signal
+ 
+    --  struct_sigaction offsets
+ 
+    sa_handler_pos : constant := 0;
+    sa_mask_pos    : constant := Standard'Address_Size / 8;
+    sa_flags_pos   : constant := 4 + sa_mask_pos;
+ 
+    SA_SIGINFO  : constant := 16#00000004#;
+    SA_ONSTACK  : constant := 16#08000000#;
+    SA_RESTART  : constant := 16#10000000#;
+    SA_NODEFER  : constant := 16#40000000#;
+ 
+ end System.Linux;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-linux__hppa.ads gcc-8.1.0/gcc/ada/libgnarl/s-linux__hppa.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-linux__hppa.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-linux__hppa.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,129 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                GNU ADA RUN-TIME LIBRARY (GNARL) COMPONENTS               --
+ --                                                                          --
+ --                          S Y S T E M .  L I N U X                        --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --          Copyright (C) 2008-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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 is the hppa version of this package
+ 
+ --  This package encapsulates cpu specific differences between implementations
+ --  of GNU/Linux, in order to share s-osinte-linux.ads.
+ 
+ --  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;
+ 
+ package System.Linux is
+    pragma Preelaborate;
+ 
+    ----------
+    -- Time --
+    ----------
+ 
+    subtype long        is Interfaces.C.long;
+    subtype suseconds_t is Interfaces.C.long;
+    subtype time_t      is Interfaces.C.long;
+    subtype clockid_t   is Interfaces.C.int;
+ 
+    type timespec is record
+       tv_sec  : time_t;
+       tv_nsec : long;
+    end record;
+    pragma Convention (C, timespec);
+ 
+    type timeval is record
+       tv_sec  : time_t;
+       tv_usec : suseconds_t;
+    end record;
+    pragma Convention (C, timeval);
+ 
+    -----------
+    -- Errno --
+    -----------
+ 
+    EAGAIN    : constant := 11;
+    EINTR     : constant := 4;
+    EINVAL    : constant := 22;
+    ENOMEM    : constant := 12;
+    EPERM     : constant := 1;
+    ETIMEDOUT : constant := 238;
+ 
+    -------------
+    -- Signals --
+    -------------
+ 
+    SIGHUP     : constant := 1; --  hangup
+    SIGINT     : constant := 2; --  interrupt (rubout)
+    SIGQUIT    : constant := 3; --  quit (ASCD FS)
+    SIGILL     : constant := 4; --  illegal instruction (not reset)
+    SIGTRAP    : constant := 5; --  trace trap (not reset)
+    SIGIOT     : constant := 6; --  IOT instruction
+    SIGABRT    : constant := 6; --  used by abort, replace SIGIOT in the  future
+    SIGEMT     : constant := 7; --  EMT
+    SIGFPE     : constant := 8; --  floating point exception
+    SIGKILL    : constant := 9; --  kill (cannot be caught or ignored)
+    SIGBUS     : constant := 10; --  bus error
+    SIGSEGV    : constant := 11; --  segmentation violation
+    SIGSYS     : constant := 12; --  bad system call
+    SIGPIPE    : constant := 13; --  write on a pipe with no one to read it
+    SIGALRM    : constant := 14; --  alarm clock
+    SIGTERM    : constant := 15; --  software termination signal from kill
+    SIGUSR1    : constant := 16; --  user defined signal 1
+    SIGUSR2    : constant := 17; --  user defined signal 2
+    SIGCLD     : constant := 18; --  alias for SIGCHLD
+    SIGCHLD    : constant := 18; --  child status change
+    SIGPWR     : constant := 19; --  power-fail restart
+    SIGVTALRM  : constant := 20; --  virtual timer expired
+    SIGPROF    : constant := 21; --  profiling timer expired
+    SIGPOLL    : constant := 22; --  pollable event occurred
+    SIGIO      : constant := 22; --  I/O now possible (4.2 BSD)
+    SIGWINCH   : constant := 23; --  window size change
+    SIGSTOP    : constant := 24; --  stop (cannot be caught or ignored)
+    SIGTSTP    : constant := 25; --  user stop requested from tty
+    SIGCONT    : constant := 26; --  stopped process has been continued
+    SIGTTIN    : constant := 27; --  background tty read attempted
+    SIGTTOU    : constant := 28; --  background tty write attempted
+    SIGURG     : constant := 29; --  urgent condition on IO channel
+    SIGLOST    : constant := 30; --  File lock lost
+    SIGUNUSED  : constant := 31; --  unused signal (GNU/Linux)
+    SIGXCPU    : constant := 33; --  CPU time limit exceeded
+    SIGXFSZ    : constant := 34; --  filesize limit exceeded
+    SIGSTKFLT  : constant := 36; --  coprocessor stack fault (Linux)
+    SIGLTHRRES : constant := 37; --  GNU/LinuxThreads restart signal
+    SIGLTHRCAN : constant := 38; --  GNU/LinuxThreads cancel signal
+    SIGLTHRDBG : constant := 39; --  GNU/LinuxThreads debugger signal
+ 
+    --  struct_sigaction offsets
+ 
+    sa_handler_pos : constant := 0;
+    sa_flags_pos   : constant := Standard'Address_Size / 8;
+    sa_mask_pos    : constant := sa_flags_pos * 2;
+ 
+    SA_SIGINFO : constant := 16#10#;
+    SA_ONSTACK : constant := 16#01#;
+ 
+ end System.Linux;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-linux__mips.ads gcc-8.1.0/gcc/ada/libgnarl/s-linux__mips.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-linux__mips.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-linux__mips.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,134 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                GNU ADA RUN-TIME LIBRARY (GNARL) COMPONENTS               --
+ --                                                                          --
+ --                          S Y S T E M .  L I N U X                        --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --             Copyright (C) 2009-2018, Free Software Foundation, Inc.      --
+ --                                                                          --
+ -- GNARL is 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 is the MIPS version of this package
+ 
+ --  This package encapsulates cpu specific differences between implementations
+ --  of GNU/Linux, in order to share s-osinte-linux.ads.
+ 
+ --  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;
+ 
+ package System.Linux is
+    pragma Preelaborate;
+ 
+    ----------
+    -- Time --
+    ----------
+ 
+    subtype int         is Interfaces.C.int;
+    subtype long        is Interfaces.C.long;
+    subtype suseconds_t is Interfaces.C.long;
+    subtype time_t      is Interfaces.C.long;
+    subtype clockid_t   is Interfaces.C.int;
+ 
+    type timespec is record
+       tv_sec  : time_t;
+       tv_nsec : long;
+    end record;
+    pragma Convention (C, timespec);
+ 
+    type timeval is record
+       tv_sec  : time_t;
+       tv_usec : suseconds_t;
+    end record;
+    pragma Convention (C, timeval);
+ 
+    -----------
+    -- Errno --
+    -----------
+ 
+    EAGAIN    : constant := 11;
+    EINTR     : constant := 4;
+    EINVAL    : constant := 22;
+    ENOMEM    : constant := 12;
+    EPERM     : constant := 1;
+    ETIMEDOUT : constant := 145;
+ 
+    -------------
+    -- Signals --
+    -------------
+ 
+    SIGHUP     : constant := 1; --  hangup
+    SIGINT     : constant := 2; --  interrupt (rubout)
+    SIGQUIT    : constant := 3; --  quit (ASCD FS)
+    SIGILL     : constant := 4; --  illegal instruction (not reset)
+    SIGTRAP    : constant := 5; --  trace trap (not reset)
+    SIGIOT     : constant := 6; --  IOT instruction
+    SIGABRT    : constant := 6; --  used by abort, replace SIGIOT in the  future
+    SIGEMT     : constant := 7; --  EMT
+    SIGFPE     : constant := 8; --  floating point exception
+    SIGKILL    : constant := 9; --  kill (cannot be caught or ignored)
+    SIGBUS     : constant := 10; --  bus error
+    SIGSEGV    : constant := 11; --  segmentation violation
+    SIGSYS     : constant := 12; --  bad system call
+    SIGPIPE    : constant := 13; --  write on a pipe with no one to read it
+    SIGALRM    : constant := 14; --  alarm clock
+    SIGTERM    : constant := 15; --  software termination signal from kill
+    SIGUSR1    : constant := 16; --  user defined signal 1
+    SIGUSR2    : constant := 17; --  user defined signal 2
+    SIGCLD     : constant := 18; --  alias for SIGCHLD
+    SIGCHLD    : constant := 18; --  child status change
+    SIGPWR     : constant := 19; --  power-fail restart
+    SIGWINCH   : constant := 20; --  window size change
+    SIGURG     : constant := 21; --  urgent condition on IO channel
+    SIGPOLL    : constant := 22; --  pollable event occurred
+    SIGIO      : constant := 22; --  I/O now possible (4.2 BSD)
+    SIGSTOP    : constant := 23; --  stop (cannot be caught or ignored)
+    SIGTSTP    : constant := 24; --  user stop requested from tty
+    SIGCONT    : constant := 25; --  stopped process has been continued
+    SIGTTIN    : constant := 26; --  background tty read attempted
+    SIGTTOU    : constant := 27; --  background tty write attempted
+    SIGVTALRM  : constant := 28; --  virtual timer expired
+    SIGPROF    : constant := 29; --  profiling timer expired
+    SIGXCPU    : constant := 30; --  CPU time limit exceeded
+    SIGXFSZ    : constant := 31; --  filesize limit exceeded
+ 
+    SIGLTHRRES : constant := 32; --  GNU/LinuxThreads restart signal
+    SIGLTHRCAN : constant := 33; --  GNU/LinuxThreads cancel signal
+    SIGLTHRDBG : constant := 34; --  GNU/LinuxThreads debugger signal
+ 
+    --  These don't exist for Linux/MIPS.  The constants are present
+    --  so that we can continue to use a-intnam-linux.ads.
+    SIGLOST    : constant := 0; --  File lock lost
+    SIGSTKFLT  : constant := 0; --  coprocessor stack fault (Linux)
+    SIGUNUSED  : constant := 0; --  unused signal (GNU/Linux)
+ 
+    --  struct_sigaction offsets
+ 
+    sa_handler_pos : constant := int'Size / 8;
+    sa_mask_pos    : constant := int'Size / 8 +
+                                 Standard'Address_Size / 8;
+    sa_flags_pos   : constant := 0;
+ 
+    SA_SIGINFO  : constant := 16#08#;
+    SA_ONSTACK  : constant := 16#08000000#;
+ 
+ end System.Linux;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-linux__sparc.ads gcc-8.1.0/gcc/ada/libgnarl/s-linux__sparc.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-linux__sparc.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-linux__sparc.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,133 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                GNU ADA RUN-TIME LIBRARY (GNARL) COMPONENTS               --
+ --                                                                          --
+ --                          S Y S T E M .  L I N U X                        --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --             Copyright (C) 2009-2018, Free Software Foundation, Inc.      --
+ --                                                                          --
+ -- GNARL is 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 is the SPARC version of this package
+ 
+ --  This package encapsulates cpu specific differences between implementations
+ --  of GNU/Linux, in order to share s-osinte-linux.ads.
+ 
+ --  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;
+ 
+ package System.Linux is
+    pragma Preelaborate;
+ 
+    ----------
+    -- Time --
+    ----------
+ 
+    subtype long        is Interfaces.C.long;
+    subtype suseconds_t is Interfaces.C.long;
+    subtype time_t      is Interfaces.C.long;
+    subtype clockid_t   is Interfaces.C.int;
+ 
+    type timespec is record
+       tv_sec  : time_t;
+       tv_nsec : long;
+    end record;
+    pragma Convention (C, timespec);
+ 
+    type timeval is record
+       tv_sec  : time_t;
+       tv_usec : suseconds_t;
+    end record;
+    pragma Convention (C, timeval);
+ 
+    -----------
+    -- Errno --
+    -----------
+ 
+    EAGAIN    : constant := 11;
+    EINTR     : constant := 4;
+    EINVAL    : constant := 22;
+    ENOMEM    : constant := 12;
+    EPERM     : constant := 1;
+    ETIMEDOUT : constant := 110;
+ 
+    -------------
+    -- Signals --
+    -------------
+ 
+    SIGHUP     : constant := 1; --  hangup
+    SIGINT     : constant := 2; --  interrupt (rubout)
+    SIGQUIT    : constant := 3; --  quit (ASCD FS)
+    SIGILL     : constant := 4; --  illegal instruction (not reset)
+    SIGTRAP    : constant := 5; --  trace trap (not reset)
+    SIGABRT    : constant := 6; --  used by abort, replace SIGIOT in the  future
+    SIGIOT     : constant := 6; --  IOT instruction
+    SIGEMT     : constant := 7; --  EMT
+    SIGFPE     : constant := 8; --  floating point exception
+    SIGKILL    : constant := 9; --  kill (cannot be caught or ignored)
+    SIGBUS     : constant := 10; --  bus error
+    SIGSEGV    : constant := 11; --  segmentation violation
+    SIGSYS     : constant := 12; --  bad system call
+    SIGPIPE    : constant := 13; --  write on a pipe with no one to read it
+    SIGALRM    : constant := 14; --  alarm clock
+    SIGTERM    : constant := 15; --  software termination signal from kill
+    SIGURG     : constant := 16; --  urgent condition on IO channel
+    SIGSTOP    : constant := 17; --  stop (cannot be caught or ignored)
+    SIGTSTP    : constant := 18; --  user stop requested from tty
+    SIGCONT    : constant := 19; --  stopped process has been continued
+    SIGCHLD    : constant := 20; --  child status change
+    SIGCLD     : constant := 20; --  alias for SIGCHLD
+    SIGTTIN    : constant := 21; --  background tty read attempted
+    SIGTTOU    : constant := 22; --  background tty write attempted
+    SIGIO      : constant := 23; --  I/O now possible (4.2 BSD)
+    SIGPOLL    : constant := 23; --  pollable event occurred
+    SIGXCPU    : constant := 24; --  CPU time limit exceeded
+    SIGXFSZ    : constant := 25; --  filesize limit exceeded
+    SIGVTALRM  : constant := 26; --  virtual timer expired
+    SIGPROF    : constant := 27; --  profiling timer expired
+    SIGWINCH   : constant := 28; --  window size change
+    SIGLOST    : constant := 29; --  File lock lost
+    SIGPWR     : constant := 29; --  power-fail restart
+    SIGUSR1    : constant := 30; --  user defined signal 1
+    SIGUSR2    : constant := 31; --  user defined signal 2
+ 
+    SIGLTHRRES : constant := 32; --  GNU/LinuxThreads restart signal
+    SIGLTHRCAN : constant := 33; --  GNU/LinuxThreads cancel signal
+    SIGLTHRDBG : constant := 34; --  GNU/LinuxThreads debugger signal
+ 
+    SIGUNUSED  : constant := 0;
+    SIGSTKFLT  : constant := 0;
+    --  These don't exist for Linux/SPARC.  The constants are present
+    --  so that we can continue to use a-intnam-linux.ads.
+ 
+    --  struct_sigaction offsets
+ 
+    sa_handler_pos : constant := 0;
+    sa_mask_pos    : constant := Standard'Address_Size / 8;
+    sa_flags_pos   : constant := 128 + sa_mask_pos;
+ 
+    SA_SIGINFO  : constant := 16#200#;
+    SA_ONSTACK  : constant := 16#001#;
+ 
+ end System.Linux;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-linux__x32.ads gcc-8.1.0/gcc/ada/libgnarl/s-linux__x32.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-linux__x32.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-linux__x32.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,127 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                GNU ADA RUN-TIME LIBRARY (GNARL) COMPONENTS               --
+ --                                                                          --
+ --                          S Y S T E M .  L I N U X                        --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --          Copyright (C) 2013-2018, Free Software Foundation, Inc.         --
+ --
+ --                                                                          --
+ -- GNARL is 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 is the x32 version of this package
+ 
+ --  This package encapsulates cpu specific differences between implementations
+ --  of GNU/Linux, in order to share s-osinte-linux.ads.
+ 
+ --  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;
+ 
+ package System.Linux is
+    pragma Preelaborate;
+ 
+    ----------
+    -- Time --
+    ----------
+ 
+    subtype suseconds_t is Long_Long_Integer;
+    subtype time_t      is Long_Long_Integer;
+    subtype clockid_t   is Interfaces.C.int;
+ 
+    type timespec is record
+       tv_sec  : time_t;
+       tv_nsec : Long_Long_Integer;
+    end record;
+    pragma Convention (C, timespec);
+ 
+    type timeval is record
+       tv_sec  : time_t;
+       tv_usec : suseconds_t;
+    end record;
+    pragma Convention (C, timeval);
+ 
+    -----------
+    -- Errno --
+    -----------
+ 
+    EAGAIN    : constant := 11;
+    EINTR     : constant := 4;
+    EINVAL    : constant := 22;
+    ENOMEM    : constant := 12;
+    EPERM     : constant := 1;
+    ETIMEDOUT : constant := 110;
+ 
+    -------------
+    -- Signals --
+    -------------
+ 
+    SIGHUP     : constant := 1; --  hangup
+    SIGINT     : constant := 2; --  interrupt (rubout)
+    SIGQUIT    : constant := 3; --  quit (ASCD FS)
+    SIGILL     : constant := 4; --  illegal instruction (not reset)
+    SIGTRAP    : constant := 5; --  trace trap (not reset)
+    SIGIOT     : constant := 6; --  IOT instruction
+    SIGABRT    : constant := 6; --  used by abort, replace SIGIOT in the  future
+    SIGFPE     : constant := 8; --  floating point exception
+    SIGKILL    : constant := 9; --  kill (cannot be caught or ignored)
+    SIGBUS     : constant := 7; --  bus error
+    SIGSEGV    : constant := 11; --  segmentation violation
+    SIGPIPE    : constant := 13; --  write on a pipe with no one to read it
+    SIGALRM    : constant := 14; --  alarm clock
+    SIGTERM    : constant := 15; --  software termination signal from kill
+    SIGUSR1    : constant := 10; --  user defined signal 1
+    SIGUSR2    : constant := 12; --  user defined signal 2
+    SIGCLD     : constant := 17; --  alias for SIGCHLD
+    SIGCHLD    : constant := 17; --  child status change
+    SIGPWR     : constant := 30; --  power-fail restart
+    SIGWINCH   : constant := 28; --  window size change
+    SIGURG     : constant := 23; --  urgent condition on IO channel
+    SIGPOLL    : constant := 29; --  pollable event occurred
+    SIGIO      : constant := 29; --  I/O now possible (4.2 BSD)
+    SIGLOST    : constant := 29; --  File lock lost
+    SIGSTOP    : constant := 19; --  stop (cannot be caught or ignored)
+    SIGTSTP    : constant := 20; --  user stop requested from tty
+    SIGCONT    : constant := 18; --  stopped process has been continued
+    SIGTTIN    : constant := 21; --  background tty read attempted
+    SIGTTOU    : constant := 22; --  background tty write attempted
+    SIGVTALRM  : constant := 26; --  virtual timer expired
+    SIGPROF    : constant := 27; --  profiling timer expired
+    SIGXCPU    : constant := 24; --  CPU time limit exceeded
+    SIGXFSZ    : constant := 25; --  filesize limit exceeded
+    SIGUNUSED  : constant := 31; --  unused signal (GNU/Linux)
+    SIGSTKFLT  : constant := 16; --  coprocessor stack fault (Linux)
+    SIGLTHRRES : constant := 32; --  GNU/LinuxThreads restart signal
+    SIGLTHRCAN : constant := 33; --  GNU/LinuxThreads cancel signal
+    SIGLTHRDBG : constant := 34; --  GNU/LinuxThreads debugger signal
+ 
+    --  struct_sigaction offsets
+ 
+    sa_handler_pos : constant := 0;
+    sa_mask_pos    : constant := Standard'Address_Size / 8;
+    sa_flags_pos   : constant := 128 + sa_mask_pos;
+ 
+    SA_SIGINFO  : constant := 16#04#;
+    SA_ONSTACK  : constant := 16#08000000#;
+ 
+ end System.Linux;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-mudido.adb gcc-8.1.0/gcc/ada/libgnarl/s-mudido.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-mudido.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-mudido.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,175 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                SYSTEM.MULTIPROCESSORS.DISPATCHING_DOMAINS                --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --          Copyright (C) 2011-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Body used on unimplemented targets, where the operating system does not
+ --  support setting task affinities.
+ 
+ package body System.Multiprocessors.Dispatching_Domains is
+ 
+    -----------------------
+    -- Local subprograms --
+    -----------------------
+ 
+    procedure Freeze_Dispatching_Domains;
+    pragma Export
+      (Ada, Freeze_Dispatching_Domains, "__gnat_freeze_dispatching_domains");
+    --  Signal the time when no new dispatching domains can be created. It
+    --  should be called before the environment task calls the main procedure
+    --  (and after the elaboration code), so the binder-generated file needs to
+    --  import and call this procedure.
+ 
+    -----------------
+    -- Assign_Task --
+    -----------------
+ 
+    procedure Assign_Task
+      (Domain : in out Dispatching_Domain;
+       CPU    : CPU_Range := Not_A_Specific_CPU;
+       T      : Ada.Task_Identification.Task_Id :=
+                  Ada.Task_Identification.Current_Task)
+    is
+       pragma Unreferenced (Domain, CPU, T);
+    begin
+       raise Dispatching_Domain_Error with "dispatching domains not supported";
+    end Assign_Task;
+ 
+    ------------
+    -- Create --
+    ------------
+ 
+    function Create (First : CPU; Last : CPU_Range) return Dispatching_Domain is
+       pragma Unreferenced (First, Last);
+    begin
+       return raise Dispatching_Domain_Error with
+         "dispatching domains not supported";
+    end Create;
+ 
+    function Create (Set : CPU_Set) return Dispatching_Domain is
+       pragma Unreferenced (Set);
+    begin
+       return raise Dispatching_Domain_Error with
+         "dispatching domains not supported";
+    end Create;
+ 
+    -----------------------------
+    -- Delay_Until_And_Set_CPU --
+    -----------------------------
+ 
+    procedure Delay_Until_And_Set_CPU
+      (Delay_Until_Time : Ada.Real_Time.Time;
+       CPU              : CPU_Range)
+    is
+       pragma Unreferenced (Delay_Until_Time, CPU);
+    begin
+       raise Dispatching_Domain_Error with "dispatching domains not supported";
+    end Delay_Until_And_Set_CPU;
+ 
+    --------------------------------
+    -- Freeze_Dispatching_Domains --
+    --------------------------------
+ 
+    procedure Freeze_Dispatching_Domains is
+    begin
+       null;
+    end Freeze_Dispatching_Domains;
+ 
+    -------------
+    -- Get_CPU --
+    -------------
+ 
+    function Get_CPU
+      (T : Ada.Task_Identification.Task_Id :=
+             Ada.Task_Identification.Current_Task) return CPU_Range
+    is
+       pragma Unreferenced (T);
+    begin
+       return Not_A_Specific_CPU;
+    end Get_CPU;
+ 
+    -----------------
+    -- Get_CPU_Set --
+    -----------------
+ 
+    function Get_CPU_Set (Domain : Dispatching_Domain) return CPU_Set is
+       pragma Unreferenced (Domain);
+    begin
+       return raise Dispatching_Domain_Error
+         with "dispatching domains not supported";
+    end Get_CPU_Set;
+ 
+    ----------------------------
+    -- Get_Dispatching_Domain --
+    ----------------------------
+ 
+    function Get_Dispatching_Domain
+      (T : Ada.Task_Identification.Task_Id :=
+             Ada.Task_Identification.Current_Task) return Dispatching_Domain
+    is
+       pragma Unreferenced (T);
+    begin
+       return System_Dispatching_Domain;
+    end Get_Dispatching_Domain;
+ 
+    -------------------
+    -- Get_First_CPU --
+    -------------------
+ 
+    function Get_First_CPU (Domain : Dispatching_Domain) return CPU is
+       pragma Unreferenced (Domain);
+    begin
+       return CPU'First;
+    end Get_First_CPU;
+ 
+    ------------------
+    -- Get_Last_CPU --
+    ------------------
+ 
+    function Get_Last_CPU (Domain : Dispatching_Domain) return CPU_Range is
+       pragma Unreferenced (Domain);
+    begin
+       return Number_Of_CPUs;
+    end Get_Last_CPU;
+ 
+    -------------
+    -- Set_CPU --
+    -------------
+ 
+    procedure Set_CPU
+      (CPU : CPU_Range;
+       T   : Ada.Task_Identification.Task_Id :=
+               Ada.Task_Identification.Current_Task)
+    is
+       pragma Unreferenced (CPU, T);
+    begin
+       raise Dispatching_Domain_Error with "dispatching domains not supported";
+    end Set_CPU;
+ 
+ end System.Multiprocessors.Dispatching_Domains;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-mudido.ads gcc-8.1.0/gcc/ada/libgnarl/s-mudido.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-mudido.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-mudido.ads	Fri Sep  8 13:14:59 2017
***************
*** 0 ****
--- 1,75 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                SYSTEM.MULTIPROCESSORS.DISPATCHING_DOMAINS                --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ -- This specification is derived from the Ada Reference Manual for use with --
+ -- GNAT.  In accordance with the copyright of that document, you can freely --
+ -- copy and modify this specification,  provided that if you redistribute a --
+ -- modified version,  any changes that you have made are clearly indicated. --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with Ada.Real_Time;
+ 
+ with Ada.Task_Identification;
+ 
+ private with System.Tasking;
+ 
+ package System.Multiprocessors.Dispatching_Domains is
+    --  pragma Preelaborate (Dispatching_Domains);
+    --  ??? According to AI 167 this unit should be preelaborate, but it cannot
+    --  be preelaborate because it depends on Ada.Real_Time which is not
+    --  preelaborate.
+ 
+    Dispatching_Domain_Error : exception;
+ 
+    type Dispatching_Domain (<>) is limited private;
+ 
+    System_Dispatching_Domain : constant Dispatching_Domain;
+ 
+    function Create (First : CPU; Last : CPU_Range) return Dispatching_Domain;
+ 
+    function Get_First_CPU (Domain : Dispatching_Domain) return CPU;
+ 
+    function Get_Last_CPU (Domain : Dispatching_Domain) return CPU_Range;
+ 
+    type CPU_Set is array (CPU range <>) of Boolean;
+ 
+    function Create (Set : CPU_Set) return Dispatching_Domain;
+ 
+    function Get_CPU_Set (Domain : Dispatching_Domain) return CPU_Set;
+ 
+    function Get_Dispatching_Domain
+      (T : Ada.Task_Identification.Task_Id :=
+             Ada.Task_Identification.Current_Task) return Dispatching_Domain;
+ 
+    procedure Assign_Task
+      (Domain : in out Dispatching_Domain;
+       CPU    : CPU_Range := Not_A_Specific_CPU;
+       T      : Ada.Task_Identification.Task_Id :=
+                  Ada.Task_Identification.Current_Task);
+ 
+    procedure Set_CPU
+      (CPU : CPU_Range;
+       T   : Ada.Task_Identification.Task_Id :=
+               Ada.Task_Identification.Current_Task);
+ 
+    function Get_CPU
+      (T : Ada.Task_Identification.Task_Id :=
+             Ada.Task_Identification.Current_Task) return CPU_Range;
+ 
+    procedure Delay_Until_And_Set_CPU
+      (Delay_Until_Time : Ada.Real_Time.Time;
+       CPU              : CPU_Range);
+ 
+ private
+    type Dispatching_Domain is new System.Tasking.Dispatching_Domain_Access;
+ 
+    System_Dispatching_Domain : constant Dispatching_Domain :=
+                                  Dispatching_Domain
+                                    (System.Tasking.System_Domain);
+ end System.Multiprocessors.Dispatching_Domains;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-mudido__affinity.adb gcc-8.1.0/gcc/ada/libgnarl/s-mudido__affinity.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-mudido__affinity.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-mudido__affinity.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,401 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                SYSTEM.MULTIPROCESSORS.DISPATCHING_DOMAINS                --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --          Copyright (C) 2011-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Body used on targets where the operating system supports setting task
+ --  affinities.
+ 
+ with System.Tasking.Initialization;
+ with System.Task_Primitives.Operations; use System.Task_Primitives.Operations;
+ 
+ with Ada.Unchecked_Conversion;
+ 
+ package body System.Multiprocessors.Dispatching_Domains is
+ 
+    package ST renames System.Tasking;
+ 
+    -----------------------
+    -- Local subprograms --
+    -----------------------
+ 
+    function Convert_Ids is new
+      Ada.Unchecked_Conversion (Ada.Task_Identification.Task_Id, ST.Task_Id);
+ 
+    procedure Unchecked_Set_Affinity
+      (Domain : ST.Dispatching_Domain_Access;
+       CPU    : CPU_Range;
+       T      : ST.Task_Id);
+    --  Internal procedure to move a task to a target domain and CPU. No checks
+    --  are performed about the validity of the domain and the CPU because they
+    --  are done by the callers of this procedure (either Assign_Task or
+    --  Set_CPU).
+ 
+    procedure Freeze_Dispatching_Domains;
+    pragma Export
+      (Ada, Freeze_Dispatching_Domains, "__gnat_freeze_dispatching_domains");
+    --  Signal the time when no new dispatching domains can be created. It
+    --  should be called before the environment task calls the main procedure
+    --  (and after the elaboration code), so the binder-generated file needs to
+    --  import and call this procedure.
+ 
+    -----------------
+    -- Assign_Task --
+    -----------------
+ 
+    procedure Assign_Task
+      (Domain : in out Dispatching_Domain;
+       CPU    : CPU_Range := Not_A_Specific_CPU;
+       T      : Ada.Task_Identification.Task_Id :=
+                  Ada.Task_Identification.Current_Task)
+    is
+       Target : constant ST.Task_Id := Convert_Ids (T);
+ 
+    begin
+       --  The exception Dispatching_Domain_Error is propagated if T is already
+       --  assigned to a Dispatching_Domain other than
+       --  System_Dispatching_Domain, or if CPU is not one of the processors of
+       --  Domain (and is not Not_A_Specific_CPU).
+ 
+       if Dispatching_Domain (Target.Common.Domain) /= System_Dispatching_Domain
+       then
+          raise Dispatching_Domain_Error with
+            "task already in user-defined dispatching domain";
+ 
+       elsif CPU /= Not_A_Specific_CPU and then CPU not in Domain'Range then
+          raise Dispatching_Domain_Error with
+            "processor does not belong to dispatching domain";
+       end if;
+ 
+       --  Assigning a task to System_Dispatching_Domain that is already
+       --  assigned to that domain has no effect.
+ 
+       if Domain = System_Dispatching_Domain then
+          return;
+ 
+       else
+          --  Set the task affinity once we know it is possible
+ 
+          Unchecked_Set_Affinity
+            (ST.Dispatching_Domain_Access (Domain), CPU, Target);
+       end if;
+    end Assign_Task;
+ 
+    ------------
+    -- Create --
+    ------------
+ 
+    function Create (First : CPU; Last : CPU_Range) return Dispatching_Domain is
+    begin
+       return Create ((First .. Last => True));
+    end Create;
+ 
+    function Create (Set : CPU_Set) return Dispatching_Domain is
+       ST_DD : aliased constant ST.Dispatching_Domain :=
+         ST.Dispatching_Domain (Set);
+       First : constant CPU       := Get_First_CPU (ST_DD'Unrestricted_Access);
+       Last  : constant CPU_Range := Get_Last_CPU (ST_DD'Unrestricted_Access);
+       subtype Rng is CPU_Range range First .. Last;
+ 
+       use type ST.Dispatching_Domain;
+       use type ST.Dispatching_Domain_Access;
+       use type ST.Task_Id;
+ 
+       T : ST.Task_Id;
+ 
+       New_System_Domain : ST.Dispatching_Domain := ST.System_Domain.all;
+ 
+       ST_DD_Slice : constant ST.Dispatching_Domain := ST_DD (Rng);
+ 
+    begin
+       --  The set of processors for creating a dispatching domain must
+       --  comply with the following restrictions:
+       --    - Not exceeding the range of available processors.
+       --    - CPUs from the System_Dispatching_Domain.
+       --    - The calling task must be the environment task.
+       --    - The call to Create must take place before the call to the main
+       --      subprogram.
+       --    - Set does not contain a processor with a task assigned to it.
+       --    - The allocation cannot leave System_Dispatching_Domain empty.
+ 
+       --  Note that a previous version of the language forbade empty domains.
+ 
+       if Rng'Last > Number_Of_CPUs then
+          raise Dispatching_Domain_Error with
+            "CPU not supported by the target";
+       end if;
+ 
+       declare
+          System_Domain_Slice : constant ST.Dispatching_Domain :=
+            ST.System_Domain (Rng);
+          Actual : constant ST.Dispatching_Domain :=
+            ST_DD_Slice and not System_Domain_Slice;
+          Expected : constant ST.Dispatching_Domain := (Rng => False);
+       begin
+          if Actual /= Expected then
+             raise Dispatching_Domain_Error with
+               "CPU not currently in System_Dispatching_Domain";
+          end if;
+       end;
+ 
+       if Self /= Environment_Task then
+          raise Dispatching_Domain_Error with
+            "only the environment task can create dispatching domains";
+       end if;
+ 
+       if ST.Dispatching_Domains_Frozen then
+          raise Dispatching_Domain_Error with
+            "cannot create dispatching domain after call to main procedure";
+       end if;
+ 
+       for Proc in Rng loop
+          if ST_DD (Proc) and then
+            ST.Dispatching_Domain_Tasks (Proc) /= 0
+          then
+             raise Dispatching_Domain_Error with "CPU has tasks assigned";
+          end if;
+       end loop;
+ 
+       New_System_Domain (Rng) := New_System_Domain (Rng) and not ST_DD_Slice;
+ 
+       if New_System_Domain = (New_System_Domain'Range => False) then
+          raise Dispatching_Domain_Error with
+            "would leave System_Dispatching_Domain empty";
+       end if;
+ 
+       return Result : constant Dispatching_Domain :=
+         new ST.Dispatching_Domain'(ST_DD_Slice)
+       do
+          --  At this point we need to fix the processors belonging to the
+          --  system domain, and change the affinity of every task that has
+          --  been created and assigned to the system domain.
+ 
+          ST.Initialization.Defer_Abort (Self);
+ 
+          Lock_RTS;
+ 
+          ST.System_Domain (Rng) := New_System_Domain (Rng);
+          pragma Assert (ST.System_Domain.all = New_System_Domain);
+ 
+          --  Iterate the list of tasks belonging to the default system
+          --  dispatching domain and set the appropriate affinity.
+ 
+          T := ST.All_Tasks_List;
+ 
+          while T /= null loop
+             if T.Common.Domain = ST.System_Domain then
+                Set_Task_Affinity (T);
+             end if;
+ 
+             T := T.Common.All_Tasks_Link;
+          end loop;
+ 
+          Unlock_RTS;
+ 
+          ST.Initialization.Undefer_Abort (Self);
+       end return;
+    end Create;
+ 
+    -----------------------------
+    -- Delay_Until_And_Set_CPU --
+    -----------------------------
+ 
+    procedure Delay_Until_And_Set_CPU
+      (Delay_Until_Time : Ada.Real_Time.Time;
+       CPU              : CPU_Range)
+    is
+    begin
+       --  Not supported atomically by the underlying operating systems.
+       --  Operating systems use to migrate the task immediately after the call
+       --  to set the affinity.
+ 
+       delay until Delay_Until_Time;
+       Set_CPU (CPU);
+    end Delay_Until_And_Set_CPU;
+ 
+    --------------------------------
+    -- Freeze_Dispatching_Domains --
+    --------------------------------
+ 
+    procedure Freeze_Dispatching_Domains is
+    begin
+       --  Signal the end of the elaboration code
+ 
+       ST.Dispatching_Domains_Frozen := True;
+    end Freeze_Dispatching_Domains;
+ 
+    -------------
+    -- Get_CPU --
+    -------------
+ 
+    function Get_CPU
+      (T : Ada.Task_Identification.Task_Id :=
+             Ada.Task_Identification.Current_Task) return CPU_Range
+    is
+    begin
+       return Convert_Ids (T).Common.Base_CPU;
+    end Get_CPU;
+ 
+    -----------------
+    -- Get_CPU_Set --
+    -----------------
+ 
+    function Get_CPU_Set (Domain : Dispatching_Domain) return CPU_Set is
+    begin
+       return CPU_Set (Domain.all);
+    end Get_CPU_Set;
+ 
+    ----------------------------
+    -- Get_Dispatching_Domain --
+    ----------------------------
+ 
+    function Get_Dispatching_Domain
+      (T : Ada.Task_Identification.Task_Id :=
+             Ada.Task_Identification.Current_Task) return Dispatching_Domain
+    is
+    begin
+       return Result : constant Dispatching_Domain :=
+         Dispatching_Domain (Convert_Ids (T).Common.Domain)
+       do
+          pragma Assert (Result /= null);
+       end return;
+    end Get_Dispatching_Domain;
+ 
+    -------------------
+    -- Get_First_CPU --
+    -------------------
+ 
+    function Get_First_CPU (Domain : Dispatching_Domain) return CPU is
+    begin
+       for Proc in Domain'Range loop
+          if Domain (Proc) then
+             return Proc;
+          end if;
+       end loop;
+ 
+       return CPU'First;
+    end Get_First_CPU;
+ 
+    ------------------
+    -- Get_Last_CPU --
+    ------------------
+ 
+    function Get_Last_CPU (Domain : Dispatching_Domain) return CPU_Range is
+    begin
+       for Proc in reverse Domain'Range loop
+          if Domain (Proc) then
+             return Proc;
+          end if;
+       end loop;
+ 
+       return CPU_Range'First;
+    end Get_Last_CPU;
+ 
+    -------------
+    -- Set_CPU --
+    -------------
+ 
+    procedure Set_CPU
+      (CPU : CPU_Range;
+       T   : Ada.Task_Identification.Task_Id :=
+               Ada.Task_Identification.Current_Task)
+    is
+       Target : constant ST.Task_Id := Convert_Ids (T);
+ 
+    begin
+       --  The exception Dispatching_Domain_Error is propagated if CPU is not
+       --  one of the processors of the Dispatching_Domain on which T is
+       --  assigned (and is not Not_A_Specific_CPU).
+ 
+       if CPU /= Not_A_Specific_CPU and then
+         (CPU not in Target.Common.Domain'Range or else
+          not Target.Common.Domain (CPU))
+       then
+          raise Dispatching_Domain_Error with
+            "processor does not belong to the task's dispatching domain";
+       end if;
+ 
+       Unchecked_Set_Affinity (Target.Common.Domain, CPU, Target);
+    end Set_CPU;
+ 
+    ----------------------------
+    -- Unchecked_Set_Affinity --
+    ----------------------------
+ 
+    procedure Unchecked_Set_Affinity
+      (Domain : ST.Dispatching_Domain_Access;
+       CPU    : CPU_Range;
+       T      : ST.Task_Id)
+    is
+       Source_CPU : constant CPU_Range := T.Common.Base_CPU;
+ 
+       use type ST.Dispatching_Domain_Access;
+ 
+    begin
+       Write_Lock (T);
+ 
+       --  Move to the new domain
+ 
+       T.Common.Domain := Domain;
+ 
+       --  Attach the CPU to the task
+ 
+       T.Common.Base_CPU := CPU;
+ 
+       --  Change the number of tasks attached to a given task in the system
+       --  domain if needed.
+ 
+       if not ST.Dispatching_Domains_Frozen
+         and then (Domain = null or else Domain = ST.System_Domain)
+       then
+          --  Reduce the number of tasks attached to the CPU from which this
+          --  task is being moved, if needed.
+ 
+          if Source_CPU /= Not_A_Specific_CPU then
+             ST.Dispatching_Domain_Tasks (Source_CPU) :=
+               ST.Dispatching_Domain_Tasks (Source_CPU) - 1;
+          end if;
+ 
+          --  Increase the number of tasks attached to the CPU to which this
+          --  task is being moved, if needed.
+ 
+          if CPU /= Not_A_Specific_CPU then
+             ST.Dispatching_Domain_Tasks (CPU) :=
+               ST.Dispatching_Domain_Tasks (CPU) + 1;
+          end if;
+       end if;
+ 
+       --  Change the actual affinity calling the operating system level
+ 
+       Set_Task_Affinity (T);
+ 
+       Unlock (T);
+    end Unchecked_Set_Affinity;
+ 
+ end System.Multiprocessors.Dispatching_Domains;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-osinte__aix.adb gcc-8.1.0/gcc/ada/libgnarl/s-osinte__aix.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-osinte__aix.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-osinte__aix.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,190 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                   S Y S T E M . O S _ I N T E R F A C E                  --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --          Copyright (C) 1997-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is a AIX (Native) version of this package
+ 
+ pragma Polling (Off);
+ --  Turn off polling, we do not want ATC polling to take place during tasking
+ --  operations. It causes infinite loops and other problems.
+ 
+ package body System.OS_Interface is
+ 
+    use Interfaces.C;
+ 
+    -----------------
+    -- To_Duration --
+    -----------------
+ 
+    function To_Duration (TS : timespec) return Duration is
+    begin
+       return Duration (TS.tv_sec) + Duration (TS.tv_nsec) / 10#1#E9;
+    end To_Duration;
+ 
+    ------------------------
+    -- To_Target_Priority --
+    ------------------------
+ 
+    function To_Target_Priority
+      (Prio : System.Any_Priority) return Interfaces.C.int
+    is
+       Dispatching_Policy : Character;
+       pragma Import (C, Dispatching_Policy, "__gl_task_dispatching_policy");
+ 
+       Time_Slice_Val : Integer;
+       pragma Import (C, Time_Slice_Val, "__gl_time_slice_val");
+ 
+    begin
+       --  For the case SCHED_OTHER the only valid priority across all supported
+       --  versions of AIX is 1 (note that the scheduling policy can be set
+       --  with the pragma Task_Dispatching_Policy or setting the time slice
+       --  value). Otherwise, for SCHED_RR and SCHED_FIFO, the system defines
+       --  priorities in the range 1 .. 127. This means that we must map
+       --  System.Any_Priority in the range 0 .. 126 to 1 .. 127.
+ 
+       if Dispatching_Policy = ' ' and then Time_Slice_Val < 0 then
+          return 1;
+       else
+          return Interfaces.C.int (Prio) + 1;
+       end if;
+    end To_Target_Priority;
+ 
+    -----------------
+    -- To_Timespec --
+    -----------------
+ 
+    function To_Timespec (D : Duration) return timespec is
+       S : time_t;
+       F : Duration;
+ 
+    begin
+       S := time_t (Long_Long_Integer (D));
+       F := D - Duration (S);
+ 
+       --  If F is negative due to a round-up, adjust for positive F value
+ 
+       if F < 0.0 then
+          S := S - 1;
+          F := F + 1.0;
+       end if;
+ 
+       return timespec'(tv_sec => S,
+                        tv_nsec => long (Long_Long_Integer (F * 10#1#E9)));
+    end To_Timespec;
+ 
+    -----------------
+    -- sched_yield --
+    -----------------
+ 
+    --  AIX Thread does not have sched_yield;
+ 
+    function sched_yield return int is
+       procedure pthread_yield;
+       pragma Import (C, pthread_yield, "sched_yield");
+    begin
+       pthread_yield;
+       return 0;
+    end sched_yield;
+ 
+    --------------------
+    -- Get_Stack_Base --
+    --------------------
+ 
+    function Get_Stack_Base (thread : pthread_t) return Address is
+       pragma Warnings (Off, thread);
+    begin
+       return Null_Address;
+    end Get_Stack_Base;
+ 
+    --------------------------
+    -- PTHREAD_PRIO_INHERIT --
+    --------------------------
+ 
+    AIX_Version : Integer := 0;
+    --  AIX version in the form xy for AIX version x.y (0 means not set)
+ 
+    SYS_NMLN : constant := 32;
+    --  AIX system constant used to define utsname, see sys/utsname.h
+ 
+    subtype String_NMLN is String (1 .. SYS_NMLN);
+ 
+    type utsname is record
+       sysname    : String_NMLN;
+       nodename   : String_NMLN;
+       release    : String_NMLN;
+       version    : String_NMLN;
+       machine    : String_NMLN;
+       procserial : String_NMLN;
+    end record;
+    pragma Convention (C, utsname);
+ 
+    procedure uname (name : out utsname);
+    pragma Import (C, uname);
+ 
+    function PTHREAD_PRIO_INHERIT return int is
+       name : utsname;
+ 
+       function Val (C : Character) return Integer;
+       --  Transform a numeric character ('0' .. '9') to an integer
+ 
+       ---------
+       -- Val --
+       ---------
+ 
+       function Val (C : Character) return Integer is
+       begin
+          return Character'Pos (C) - Character'Pos ('0');
+       end Val;
+ 
+    --  Start of processing for PTHREAD_PRIO_INHERIT
+ 
+    begin
+       if AIX_Version = 0 then
+ 
+          --  Set AIX_Version
+ 
+          uname (name);
+          AIX_Version := Val (name.version (1)) * 10 + Val (name.release (1));
+       end if;
+ 
+       if AIX_Version < 53 then
+ 
+          --  Under AIX < 5.3, PTHREAD_PRIO_INHERIT is defined as 0 in pthread.h
+ 
+          return 0;
+ 
+       else
+          --  Under AIX >= 5.3, PTHREAD_PRIO_INHERIT is defined as 3
+ 
+          return 3;
+       end if;
+    end PTHREAD_PRIO_INHERIT;
+ 
+ end System.OS_Interface;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-osinte__aix.ads gcc-8.1.0/gcc/ada/libgnarl/s-osinte__aix.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-osinte__aix.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-osinte__aix.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,610 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                   S Y S T E M . O S _ I N T E R F A C E                  --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --             Copyright (C) 1991-2017, Florida State University            --
+ --          Copyright (C) 1995-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is a AIX (Native THREADS) version of this package
+ 
+ --  This package encapsulates all direct interfaces to OS services that are
+ --  needed by the tasking run-time (libgnarl).
+ 
+ --  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 Interfaces.C.Extensions;
+ 
+ package System.OS_Interface is
+    pragma Preelaborate;
+ 
+    pragma Linker_Options ("-pthread");
+    --  This implies -lpthreads + other things depending on the GCC
+    --  configuration, such as the selection of a proper libgcc variant
+    --  for table-based exception handling when it is available.
+ 
+    pragma Linker_Options ("-lc_r");
+ 
+    subtype int            is Interfaces.C.int;
+    subtype short          is Interfaces.C.short;
+    subtype long           is Interfaces.C.long;
+    subtype long_long      is Interfaces.C.Extensions.long_long;
+    subtype unsigned       is Interfaces.C.unsigned;
+    subtype unsigned_short is Interfaces.C.unsigned_short;
+    subtype unsigned_long  is Interfaces.C.unsigned_long;
+    subtype unsigned_char  is Interfaces.C.unsigned_char;
+    subtype plain_char     is Interfaces.C.plain_char;
+    subtype size_t         is Interfaces.C.size_t;
+ 
+    -----------
+    -- Errno --
+    -----------
+ 
+    function errno return int;
+    pragma Import (C, errno, "__get_errno");
+ 
+    EAGAIN    : constant := 11;
+    EINTR     : constant := 4;
+    EINVAL    : constant := 22;
+    ENOMEM    : constant := 12;
+    ETIMEDOUT : constant := 78;
+ 
+    -------------
+    -- Signals --
+    -------------
+ 
+    Max_Interrupt : constant := 63;
+    type Signal is new int range 0 .. Max_Interrupt;
+    for Signal'Size use int'Size;
+ 
+    SIGHUP      : constant := 1; --  hangup
+    SIGINT      : constant := 2; --  interrupt (rubout)
+    SIGQUIT     : constant := 3; --  quit (ASCD FS)
+    SIGILL      : constant := 4; --  illegal instruction (not reset)
+    SIGTRAP     : constant := 5; --  trace trap (not reset)
+    SIGIOT      : constant := 6; --  IOT instruction
+    SIGABRT     : constant := 6; --  used by abort, replace SIGIOT in the future
+    SIGEMT      : constant := 7; --  EMT instruction
+    SIGFPE      : constant := 8; --  floating point exception
+    SIGKILL     : constant := 9; --  kill (cannot be caught or ignored)
+    SIGBUS      : constant := 10; --  bus error
+    SIGSEGV     : constant := 11; --  segmentation violation
+    SIGSYS      : constant := 12; --  bad argument to system call
+    SIGPIPE     : constant := 13; --  write on a pipe with no one to read it
+    SIGALRM     : constant := 14; --  alarm clock
+    SIGTERM     : constant := 15; --  software termination signal from kill
+    SIGUSR1     : constant := 30; --  user defined signal 1
+    SIGUSR2     : constant := 31; --  user defined signal 2
+    SIGCLD      : constant := 20; --  alias for SIGCHLD
+    SIGCHLD     : constant := 20; --  child status change
+    SIGPWR      : constant := 29; --  power-fail restart
+    SIGWINCH    : constant := 28; --  window size change
+    SIGURG      : constant := 16; --  urgent condition on IO channel
+    SIGPOLL     : constant := 23; --  pollable event occurred
+    SIGIO       : constant := 23; --  I/O possible (Solaris SIGPOLL alias)
+    SIGSTOP     : constant := 17; --  stop (cannot be caught or ignored)
+    SIGTSTP     : constant := 18; --  user stop requested from tty
+    SIGCONT     : constant := 19; --  stopped process has been continued
+    SIGTTIN     : constant := 21; --  background tty read attempted
+    SIGTTOU     : constant := 22; --  background tty write attempted
+    SIGVTALRM   : constant := 34; --  virtual timer expired
+    SIGPROF     : constant := 32; --  profiling timer expired
+    SIGXCPU     : constant := 24; --  CPU time limit exceeded
+    SIGXFSZ     : constant := 25; --  filesize limit exceeded
+    SIGWAITING  : constant := 39; --  m:n scheduling
+ 
+    --  The following signals are AIX specific
+ 
+    SIGMSG      : constant := 27; -- input data is in the ring buffer
+    SIGDANGER   : constant := 33; -- system crash imminent
+    SIGMIGRATE  : constant := 35; -- migrate process
+    SIGPRE      : constant := 36; -- programming exception
+    SIGVIRT     : constant := 37; -- AIX virtual time alarm
+    SIGALRM1    : constant := 38; -- m:n condition variables
+    SIGCPUFAIL  : constant := 59; -- Predictive De-configuration of Processors
+    SIGKAP      : constant := 60; -- keep alive poll from native keyboard
+    SIGGRANT    : constant := SIGKAP; -- monitor mode granted
+    SIGRETRACT  : constant := 61; -- monitor mode should be relinquished
+    SIGSOUND    : constant := 62; -- sound control has completed
+    SIGSAK      : constant := 63; -- secure attention key
+ 
+    SIGADAABORT : constant := SIGEMT;
+    --  Note: on other targets, we usually use SIGABRT, but on AIX, it appears
+    --  that SIGABRT can't be used in sigwait(), so we use SIGEMT.
+    --  SIGEMT is "Emulator Trap Instruction" from the PDP-11, and does not
+    --  have a standardized usage.
+ 
+    type Signal_Set is array (Natural range <>) of Signal;
+ 
+    Unmasked : constant Signal_Set :=
+                 (SIGTRAP, SIGTTIN, SIGTTOU, SIGTSTP, SIGPROF);
+    Reserved : constant Signal_Set :=
+                 (SIGABRT, SIGKILL, SIGSTOP, SIGALRM1, SIGWAITING, SIGCPUFAIL);
+ 
+    type sigset_t is private;
+ 
+    function sigaddset (set : access sigset_t; sig : Signal) return int;
+    pragma Import (C, sigaddset, "sigaddset");
+ 
+    function sigdelset (set : access sigset_t; sig : Signal) return int;
+    pragma Import (C, sigdelset, "sigdelset");
+ 
+    function sigfillset (set : access sigset_t) return int;
+    pragma Import (C, sigfillset, "sigfillset");
+ 
+    function sigismember (set : access sigset_t; sig : Signal) return int;
+    pragma Import (C, sigismember, "sigismember");
+ 
+    function sigemptyset (set : access sigset_t) return int;
+    pragma Import (C, sigemptyset, "sigemptyset");
+ 
+    type struct_sigaction is record
+       sa_handler : System.Address;
+       sa_mask    : sigset_t;
+       sa_flags   : int;
+    end record;
+    pragma Convention (C, struct_sigaction);
+    type struct_sigaction_ptr is access all struct_sigaction;
+ 
+    SA_SIGINFO : constant := 16#0100#;
+    SA_ONSTACK : constant := 16#0001#;
+ 
+    SIG_BLOCK   : constant := 0;
+    SIG_UNBLOCK : constant := 1;
+    SIG_SETMASK : constant := 2;
+ 
+    SIG_DFL : constant := 0;
+    SIG_IGN : constant := 1;
+ 
+    function sigaction
+      (sig  : Signal;
+       act  : struct_sigaction_ptr;
+       oact : struct_sigaction_ptr) return int;
+    pragma Import (C, sigaction, "sigaction");
+ 
+    ----------
+    -- Time --
+    ----------
+ 
+    Time_Slice_Supported : constant Boolean := True;
+    --  Indicates whether time slicing is supported
+ 
+    type timespec is private;
+ 
+    type clockid_t is new long_long;
+ 
+    function clock_gettime
+      (clock_id : clockid_t;
+       tp       : access timespec) return int;
+    pragma Import (C, clock_gettime, "clock_gettime");
+ 
+    function clock_getres
+      (clock_id : clockid_t;
+       res      : access timespec) return int;
+    pragma Import (C, clock_getres, "clock_getres");
+ 
+    function To_Duration (TS : timespec) return Duration;
+    pragma Inline (To_Duration);
+ 
+    function To_Timespec (D : Duration) return timespec;
+    pragma Inline (To_Timespec);
+ 
+    type struct_timezone is record
+       tz_minuteswest : int;
+       tz_dsttime     : int;
+    end record;
+    pragma Convention (C, struct_timezone);
+    type struct_timezone_ptr is access all struct_timezone;
+ 
+    -------------------------
+    -- Priority Scheduling --
+    -------------------------
+ 
+    SCHED_FIFO  : constant := 1;
+    SCHED_RR    : constant := 2;
+    SCHED_OTHER : constant := 0;
+ 
+    function To_Target_Priority
+      (Prio : System.Any_Priority) return Interfaces.C.int;
+    --  Maps System.Any_Priority to a POSIX priority
+ 
+    -------------
+    -- Process --
+    -------------
+ 
+    type pid_t is private;
+ 
+    function kill (pid : pid_t; sig : Signal) return int;
+    pragma Import (C, kill, "kill");
+ 
+    function getpid return pid_t;
+    pragma Import (C, getpid, "getpid");
+ 
+    ---------
+    -- LWP --
+    ---------
+ 
+    function lwp_self return System.Address;
+    pragma Import (C, lwp_self, "thread_self");
+ 
+    -------------
+    -- Threads --
+    -------------
+ 
+    type Thread_Body is access
+      function (arg : System.Address) return System.Address;
+    pragma Convention (C, Thread_Body);
+ 
+    function Thread_Body_Access is new
+      Ada.Unchecked_Conversion (System.Address, Thread_Body);
+ 
+    type pthread_t           is private;
+    subtype Thread_Id        is pthread_t;
+ 
+    type pthread_mutex_t     is limited private;
+    type pthread_cond_t      is limited private;
+    type pthread_attr_t      is limited private;
+    type pthread_mutexattr_t is limited private;
+    type pthread_condattr_t  is limited private;
+    type pthread_key_t       is private;
+ 
+    PTHREAD_CREATE_DETACHED : constant := 1;
+ 
+    PTHREAD_SCOPE_PROCESS : constant := 1;
+    PTHREAD_SCOPE_SYSTEM  : constant := 0;
+ 
+    --  Read/Write lock not supported on AIX. To add support both types
+    --  pthread_rwlock_t and pthread_rwlockattr_t must properly be defined
+    --  with the associated routines pthread_rwlock_[init/destroy] and
+    --  pthread_rwlock_[rdlock/wrlock/unlock].
+ 
+    subtype pthread_rwlock_t     is pthread_mutex_t;
+    subtype pthread_rwlockattr_t is pthread_mutexattr_t;
+ 
+    -----------
+    -- Stack --
+    -----------
+ 
+    type stack_t is record
+       ss_sp    : System.Address;
+       ss_size  : size_t;
+       ss_flags : int;
+    end record;
+    pragma Convention (C, stack_t);
+ 
+    function sigaltstack
+      (ss  : not null access stack_t;
+       oss : access stack_t) return int;
+    pragma Import (C, sigaltstack, "sigaltstack");
+ 
+    Alternate_Stack : aliased System.Address;
+    --  This is a dummy definition, never used (Alternate_Stack_Size is null)
+ 
+    Alternate_Stack_Size : constant := 0;
+    --  No alternate signal stack is used on this platform
+ 
+    Stack_Base_Available : constant Boolean := False;
+    --  Indicates whether the stack base is available on this target
+ 
+    function Get_Stack_Base (thread : pthread_t) return Address;
+    pragma Inline (Get_Stack_Base);
+    --  Returns the stack base of the specified thread. Only call this function
+    --  when Stack_Base_Available is True.
+ 
+    function Get_Page_Size return int;
+    pragma Import (C, Get_Page_Size, "getpagesize");
+    --  Returns the size of a page
+ 
+    PROT_NONE  : constant := 0;
+    PROT_READ  : constant := 1;
+    PROT_WRITE : constant := 2;
+    PROT_EXEC  : constant := 4;
+    PROT_ALL   : constant := PROT_READ + PROT_WRITE + PROT_EXEC;
+    PROT_ON    : constant := PROT_READ;
+    PROT_OFF   : constant := PROT_ALL;
+ 
+    function mprotect (addr : Address; len : size_t; prot : int) return int;
+    pragma Import (C, mprotect);
+ 
+    ---------------------------------------
+    -- Nonstandard Thread Initialization --
+    ---------------------------------------
+ 
+    --  Though not documented, pthread_init *must* be called before any other
+    --  pthread call.
+ 
+    procedure pthread_init;
+    pragma Import (C, pthread_init, "pthread_init");
+ 
+    -------------------------
+    -- POSIX.1c  Section 3 --
+    -------------------------
+ 
+    function sigwait
+      (set : access sigset_t;
+       sig : access Signal) return int;
+    pragma Import (C, sigwait, "sigwait");
+ 
+    function pthread_kill
+      (thread : pthread_t;
+       sig    : Signal) return int;
+    pragma Import (C, pthread_kill, "pthread_kill");
+ 
+    function pthread_sigmask
+      (how  : int;
+       set  : access sigset_t;
+       oset : access sigset_t) return int;
+    pragma Import (C, pthread_sigmask, "sigthreadmask");
+ 
+    --------------------------
+    -- POSIX.1c  Section 11 --
+    --------------------------
+ 
+    function pthread_mutexattr_init
+      (attr : access pthread_mutexattr_t) return int;
+    pragma Import (C, pthread_mutexattr_init, "pthread_mutexattr_init");
+ 
+    function pthread_mutexattr_destroy
+      (attr : access pthread_mutexattr_t) return int;
+    pragma Import (C, pthread_mutexattr_destroy, "pthread_mutexattr_destroy");
+ 
+    function pthread_mutex_init
+      (mutex : access pthread_mutex_t;
+       attr  : access pthread_mutexattr_t) return int;
+    pragma Import (C, pthread_mutex_init, "pthread_mutex_init");
+ 
+    function pthread_mutex_destroy (mutex : access pthread_mutex_t) return int;
+    pragma Import (C, pthread_mutex_destroy, "pthread_mutex_destroy");
+ 
+    function pthread_mutex_lock (mutex : access pthread_mutex_t) return int;
+    pragma Import (C, pthread_mutex_lock, "pthread_mutex_lock");
+ 
+    function pthread_mutex_unlock (mutex : access pthread_mutex_t) return int;
+    pragma Import (C, pthread_mutex_unlock, "pthread_mutex_unlock");
+ 
+    function pthread_condattr_init
+      (attr : access pthread_condattr_t) return int;
+    pragma Import (C, pthread_condattr_init, "pthread_condattr_init");
+ 
+    function pthread_condattr_destroy
+      (attr : access pthread_condattr_t) return int;
+    pragma Import (C, pthread_condattr_destroy, "pthread_condattr_destroy");
+ 
+    function pthread_cond_init
+      (cond : access pthread_cond_t;
+       attr : access pthread_condattr_t) return int;
+    pragma Import (C, pthread_cond_init, "pthread_cond_init");
+ 
+    function pthread_cond_destroy (cond : access pthread_cond_t) return int;
+    pragma Import (C, pthread_cond_destroy, "pthread_cond_destroy");
+ 
+    function pthread_cond_signal (cond : access pthread_cond_t) return int;
+    pragma Import (C, pthread_cond_signal, "pthread_cond_signal");
+ 
+    function pthread_cond_wait
+      (cond  : access pthread_cond_t;
+       mutex : access pthread_mutex_t) return int;
+    pragma Import (C, pthread_cond_wait, "pthread_cond_wait");
+ 
+    function pthread_cond_timedwait
+      (cond    : access pthread_cond_t;
+       mutex   : access pthread_mutex_t;
+       abstime : access timespec) return int;
+    pragma Import (C, pthread_cond_timedwait, "pthread_cond_timedwait");
+ 
+    Relative_Timed_Wait : constant Boolean := False;
+    --  pthread_cond_timedwait requires an absolute delay time
+ 
+    --------------------------
+    -- POSIX.1c  Section 13 --
+    --------------------------
+ 
+    PTHREAD_PRIO_PROTECT : constant := 2;
+ 
+    function PTHREAD_PRIO_INHERIT return int;
+    --  Return value of C macro PTHREAD_PRIO_INHERIT. This function is needed
+    --  since the value is different between AIX versions.
+ 
+    function pthread_mutexattr_setprotocol
+      (attr     : access pthread_mutexattr_t;
+       protocol : int) return int;
+    pragma Import (C, pthread_mutexattr_setprotocol);
+ 
+    function pthread_mutexattr_setprioceiling
+      (attr        : access pthread_mutexattr_t;
+       prioceiling : int) return int;
+    pragma Import (C, pthread_mutexattr_setprioceiling);
+ 
+    type Array_5_Int is array (0 .. 5) of int;
+    type struct_sched_param is record
+       sched_priority : int;
+       sched_policy   : int;
+       sched_reserved : Array_5_Int;
+    end record;
+ 
+    function pthread_setschedparam
+      (thread : pthread_t;
+       policy : int;
+       param  : access struct_sched_param) return int;
+    pragma Import (C, pthread_setschedparam, "pthread_setschedparam");
+ 
+    function pthread_attr_setscope
+      (attr            : access pthread_attr_t;
+       contentionscope : int) return int;
+    pragma Import (C, pthread_attr_setscope, "pthread_attr_setscope");
+ 
+    function pthread_attr_setinheritsched
+      (attr            : access pthread_attr_t;
+       inheritsched : int) return int;
+    pragma Import (C, pthread_attr_setinheritsched);
+ 
+    function pthread_attr_setschedpolicy
+      (attr   : access pthread_attr_t;
+       policy : int) return int;
+    pragma Import (C, pthread_attr_setschedpolicy);
+ 
+    function pthread_attr_setschedparam
+      (attr        : access pthread_attr_t;
+       sched_param : int) return int;
+    pragma Import (C, pthread_attr_setschedparam);
+ 
+    function sched_yield return int;
+    --  AIX have a nonstandard sched_yield
+ 
+    --------------------------
+    -- P1003.1c  Section 16 --
+    --------------------------
+ 
+    function pthread_attr_init (attributes : access pthread_attr_t) return int;
+    pragma Import (C, pthread_attr_init, "pthread_attr_init");
+ 
+    function pthread_attr_destroy
+      (attributes : access pthread_attr_t) return int;
+    pragma Import (C, pthread_attr_destroy, "pthread_attr_destroy");
+ 
+    function pthread_attr_setdetachstate
+      (attr        : access pthread_attr_t;
+       detachstate : int) return int;
+    pragma Import (C, pthread_attr_setdetachstate);
+ 
+    function pthread_attr_setstacksize
+      (attr      : access pthread_attr_t;
+       stacksize : size_t) return int;
+    pragma Import (C, pthread_attr_setstacksize);
+ 
+    function pthread_create
+      (thread        : access pthread_t;
+       attributes    : access pthread_attr_t;
+       start_routine : Thread_Body;
+       arg           : System.Address)
+      return int;
+    pragma Import (C, pthread_create, "pthread_create");
+ 
+    procedure pthread_exit (status : System.Address);
+    pragma Import (C, pthread_exit, "pthread_exit");
+ 
+    function pthread_self return pthread_t;
+    pragma Import (C, pthread_self, "pthread_self");
+ 
+    --------------------------
+    -- POSIX.1c  Section 17 --
+    --------------------------
+ 
+    function pthread_setspecific
+      (key   : pthread_key_t;
+       value : System.Address) return int;
+    pragma Import (C, pthread_setspecific, "pthread_setspecific");
+ 
+    function pthread_getspecific (key : pthread_key_t) return System.Address;
+    pragma Import (C, pthread_getspecific, "pthread_getspecific");
+ 
+    type destructor_pointer is access procedure (arg : System.Address);
+    pragma Convention (C, destructor_pointer);
+ 
+    function pthread_key_create
+      (key        : access pthread_key_t;
+       destructor : destructor_pointer) return int;
+    pragma Import (C, pthread_key_create, "pthread_key_create");
+ 
+ private
+    type sigset_t is record
+       losigs : unsigned_long;
+       hisigs : unsigned_long;
+    end record;
+    pragma Convention (C_Pass_By_Copy, sigset_t);
+ 
+    type pid_t is new int;
+ 
+    type time_t is new long;
+ 
+    type timespec is record
+       tv_sec  : time_t;
+       tv_nsec : long;
+    end record;
+    pragma Convention (C, timespec);
+ 
+    type pthread_attr_t is new System.Address;
+    pragma Convention (C, pthread_attr_t);
+    --  typedef struct __pt_attr        *pthread_attr_t;
+ 
+    type pthread_condattr_t is new System.Address;
+    pragma Convention (C, pthread_condattr_t);
+    --  typedef struct __pt_attr        *pthread_condattr_t;
+ 
+    type pthread_mutexattr_t is new System.Address;
+    pragma Convention (C, pthread_mutexattr_t);
+    --  typedef struct __pt_attr        *pthread_mutexattr_t;
+ 
+    type pthread_t is new System.Address;
+    pragma Convention (C, pthread_t);
+    --  typedef void    *pthread_t;
+ 
+    type ptq_queue;
+    type ptq_queue_ptr is access all ptq_queue;
+ 
+    type ptq_queue is record
+       ptq_next : ptq_queue_ptr;
+       ptq_prev : ptq_queue_ptr;
+    end record;
+ 
+    type Array_3_Int is array (0 .. 3) of int;
+    type pthread_mutex_t is record
+         link        : ptq_queue;
+         ptmtx_lock  : int;
+         ptmtx_flags : long;
+         protocol    : int;
+         prioceiling : int;
+         ptmtx_owner : pthread_t;
+         mtx_id      : int;
+         attr        : pthread_attr_t;
+         mtx_kind    : int;
+         lock_cpt    : int;
+         reserved    : Array_3_Int;
+    end record;
+    pragma Convention (C, pthread_mutex_t);
+    type pthread_mutex_t_ptr is access pthread_mutex_t;
+ 
+    type pthread_cond_t is record
+       link         : ptq_queue;
+       ptcv_lock    : int;
+       ptcv_flags   : long;
+       ptcv_waiters : ptq_queue;
+       cv_id        : int;
+       attr         : pthread_attr_t;
+       mutex        : pthread_mutex_t_ptr;
+       cptwait      : int;
+       reserved     : int;
+    end record;
+    pragma Convention (C, pthread_cond_t);
+ 
+    type pthread_key_t is new unsigned;
+ 
+ end System.OS_Interface;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-osinte__android.adb gcc-8.1.0/gcc/ada/libgnarl/s-osinte__android.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-osinte__android.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-osinte__android.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,78 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                   S Y S T E M . O S _ I N T E R F A C E                  --
+ --                                                                          --
+ --                                   B o d y                                --
+ --                                                                          --
+ --                     Copyright (C) 1995-2018, AdaCore                     --
+ --                                                                          --
+ -- GNAT is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is an Android version of this package.
+ 
+ pragma Polling (Off);
+ --  Turn off polling, we do not want ATC polling to take place during
+ --  tasking operations. It causes infinite loops and other problems.
+ 
+ --  This package encapsulates all direct interfaces to OS services
+ --  that are needed by children of System.
+ 
+ with Interfaces.C;            use Interfaces.C;
+ 
+ package body System.OS_Interface is
+ 
+    -----------------
+    -- To_Duration --
+    -----------------
+ 
+    function To_Duration (TS : timespec) return Duration is
+    begin
+       return Duration (TS.tv_sec) + Duration (TS.tv_nsec) / 10#1#E9;
+    end To_Duration;
+ 
+    -----------------
+    -- To_Timespec --
+    -----------------
+ 
+    function To_Timespec (D : Duration) return timespec is
+       S : time_t;
+       F : Duration;
+ 
+    begin
+       S := time_t (Long_Long_Integer (D));
+       F := D - Duration (S);
+ 
+       --  If F has negative value due to a round-up, adjust for positive F
+       --  value.
+ 
+       if F < 0.0 then
+          S := S - 1;
+          F := F + 1.0;
+       end if;
+ 
+       return timespec'(tv_sec => S,
+                        tv_nsec => long (Long_Long_Integer (F * 10#1#E9)));
+    end To_Timespec;
+ 
+ end System.OS_Interface;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-osinte__android.ads gcc-8.1.0/gcc/ada/libgnarl/s-osinte__android.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-osinte__android.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-osinte__android.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,644 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                   S Y S T E M . O S _ I N T E R F A C E                  --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --          Copyright (C) 1995-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is an Android version of this package which is based on the
+ --  GNU/Linux version
+ 
+ --  This package encapsulates all direct interfaces to OS services
+ --  that are needed by the tasking run-time (libgnarl).
+ 
+ --  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.Linux;
+ with System.OS_Constants;
+ 
+ package System.OS_Interface is
+    pragma Preelaborate;
+ 
+    subtype int            is Interfaces.C.int;
+    subtype char           is Interfaces.C.char;
+    subtype short          is Interfaces.C.short;
+    subtype long           is Interfaces.C.long;
+    subtype unsigned       is Interfaces.C.unsigned;
+    subtype unsigned_short is Interfaces.C.unsigned_short;
+    subtype unsigned_long  is Interfaces.C.unsigned_long;
+    subtype unsigned_char  is Interfaces.C.unsigned_char;
+    subtype plain_char     is Interfaces.C.plain_char;
+    subtype size_t         is Interfaces.C.size_t;
+ 
+    -----------
+    -- Errno --
+    -----------
+ 
+    function errno return int;
+    pragma Import (C, errno, "__get_errno");
+ 
+    EAGAIN    : constant := System.Linux.EAGAIN;
+    EINTR     : constant := System.Linux.EINTR;
+    EINVAL    : constant := System.Linux.EINVAL;
+    ENOMEM    : constant := System.Linux.ENOMEM;
+    EPERM     : constant := System.Linux.EPERM;
+    ETIMEDOUT : constant := System.Linux.ETIMEDOUT;
+ 
+    -------------
+    -- Signals --
+    -------------
+ 
+    Max_Interrupt : constant := 31;
+    type Signal is new int range 0 .. Max_Interrupt;
+    for Signal'Size use int'Size;
+ 
+    SIGHUP     : constant := System.Linux.SIGHUP;
+    SIGINT     : constant := System.Linux.SIGINT;
+    SIGQUIT    : constant := System.Linux.SIGQUIT;
+    SIGILL     : constant := System.Linux.SIGILL;
+    SIGTRAP    : constant := System.Linux.SIGTRAP;
+    SIGIOT     : constant := System.Linux.SIGIOT;
+    SIGABRT    : constant := System.Linux.SIGABRT;
+    SIGFPE     : constant := System.Linux.SIGFPE;
+    SIGKILL    : constant := System.Linux.SIGKILL;
+    SIGBUS     : constant := System.Linux.SIGBUS;
+    SIGSEGV    : constant := System.Linux.SIGSEGV;
+    SIGPIPE    : constant := System.Linux.SIGPIPE;
+    SIGALRM    : constant := System.Linux.SIGALRM;
+    SIGTERM    : constant := System.Linux.SIGTERM;
+    SIGUSR1    : constant := System.Linux.SIGUSR1;
+    SIGUSR2    : constant := System.Linux.SIGUSR2;
+    SIGCLD     : constant := System.Linux.SIGCLD;
+    SIGCHLD    : constant := System.Linux.SIGCHLD;
+    SIGPWR     : constant := System.Linux.SIGPWR;
+    SIGWINCH   : constant := System.Linux.SIGWINCH;
+    SIGURG     : constant := System.Linux.SIGURG;
+    SIGPOLL    : constant := System.Linux.SIGPOLL;
+    SIGIO      : constant := System.Linux.SIGIO;
+    SIGLOST    : constant := System.Linux.SIGLOST;
+    SIGSTOP    : constant := System.Linux.SIGSTOP;
+    SIGTSTP    : constant := System.Linux.SIGTSTP;
+    SIGCONT    : constant := System.Linux.SIGCONT;
+    SIGTTIN    : constant := System.Linux.SIGTTIN;
+    SIGTTOU    : constant := System.Linux.SIGTTOU;
+    SIGVTALRM  : constant := System.Linux.SIGVTALRM;
+    SIGPROF    : constant := System.Linux.SIGPROF;
+    SIGXCPU    : constant := System.Linux.SIGXCPU;
+    SIGXFSZ    : constant := System.Linux.SIGXFSZ;
+    SIGUNUSED  : constant := System.Linux.SIGUNUSED;
+    SIGSTKFLT  : constant := System.Linux.SIGSTKFLT;
+ 
+    SIGADAABORT : constant := SIGABRT;
+    --  Change this to use another signal for task abort. SIGTERM might be a
+    --  good one.
+ 
+    type Signal_Set is array (Natural range <>) of Signal;
+ 
+    Unmasked : constant Signal_Set := (
+       SIGTRAP,
+       --  To enable debugging on multithreaded applications, mark SIGTRAP to
+       --  be kept unmasked.
+ 
+       SIGBUS,
+ 
+       SIGTTIN, SIGTTOU, SIGTSTP,
+       --  Keep these three signals unmasked so that background processes and IO
+       --  behaves as normal "C" applications
+ 
+       SIGPROF,
+       --  To avoid confusing the profiler
+ 
+       SIGKILL, SIGSTOP);
+       --  These two signals actually can't be masked (POSIX won't allow it)
+ 
+    Reserved : constant Signal_Set := (SIGVTALRM, SIGUNUSED);
+    --  Not clear why these two signals are reserved. Perhaps they are not
+    --  supported by this version of GNU/Linux ???
+ 
+    type sigset_t is private;
+ 
+    function sigaddset (set : access sigset_t; sig : Signal) return int;
+    pragma Import (C, sigaddset, "_sigaddset");
+ 
+    function sigdelset (set : access sigset_t; sig : Signal) return int;
+    pragma Import (C, sigdelset, "_sigdelset");
+ 
+    function sigfillset (set : access sigset_t) return int;
+    pragma Import (C, sigfillset, "_sigfillset");
+ 
+    function sigismember (set : access sigset_t; sig : Signal) return int;
+    pragma Import (C, sigismember, "_sigismember");
+ 
+    function sigemptyset (set : access sigset_t) return int;
+    pragma Import (C, sigemptyset, "_sigemptyset");
+ 
+    type union_type_3 is new String (1 .. 116);
+    type siginfo_t is record
+       si_signo : int;
+       si_code  : int;
+       si_errno : int;
+       X_data   : union_type_3;
+    end record;
+    pragma Convention (C, siginfo_t);
+ 
+    type struct_sigaction is record
+       sa_handler  : System.Address;
+       sa_mask     : sigset_t;
+       sa_flags    : Interfaces.C.unsigned_long;
+       sa_restorer : System.Address;
+    end record;
+    pragma Convention (C, struct_sigaction);
+ 
+    type struct_sigaction_ptr is access all struct_sigaction;
+ 
+    SA_SIGINFO : constant := System.Linux.SA_SIGINFO;
+    SA_ONSTACK : constant := System.Linux.SA_ONSTACK;
+    SA_NODEFER : constant := System.Linux.SA_NODEFER;
+    SA_RESTART : constant := System.Linux.SA_RESTART;
+ 
+    SIG_BLOCK   : constant := 0;
+    SIG_UNBLOCK : constant := 1;
+    SIG_SETMASK : constant := 2;
+ 
+    SIG_DFL : constant := 0;
+    SIG_IGN : constant := 1;
+ 
+    function sigaction
+      (sig  : Signal;
+       act  : struct_sigaction_ptr;
+       oact : struct_sigaction_ptr) return int;
+    pragma Import (C, sigaction, "sigaction");
+ 
+    ----------
+    -- Time --
+    ----------
+ 
+    Time_Slice_Supported : constant Boolean := True;
+    --  Indicates whether time slicing is supported
+ 
+    type timespec is private;
+ 
+    type clockid_t is new int;
+ 
+    function clock_gettime
+      (clock_id : clockid_t; tp : access timespec) return int;
+    pragma Import (C, clock_gettime, "clock_gettime");
+ 
+    function clock_getres
+      (clock_id : clockid_t;
+       res      : access timespec) return int;
+    pragma Import (C, clock_getres, "clock_getres");
+ 
+    function To_Duration (TS : timespec) return Duration;
+    pragma Inline (To_Duration);
+ 
+    function To_Timespec (D : Duration) return timespec;
+    pragma Inline (To_Timespec);
+ 
+    function sysconf (name : int) return long;
+    pragma Import (C, sysconf);
+ 
+    SC_CLK_TCK          : constant := 2;
+    SC_NPROCESSORS_ONLN : constant := 84;
+ 
+    -------------------------
+    -- Priority Scheduling --
+    -------------------------
+ 
+    SCHED_OTHER : constant := 0;
+    SCHED_FIFO  : constant := 1;
+    SCHED_RR    : constant := 2;
+ 
+    function To_Target_Priority
+      (Prio : System.Any_Priority)
+       return Interfaces.C.int is (Interfaces.C.int (Prio));
+    --  Maps System.Any_Priority to a POSIX priority
+ 
+    -------------
+    -- Process --
+    -------------
+ 
+    type pid_t is private;
+ 
+    function kill (pid : pid_t; sig : Signal) return int;
+    pragma Import (C, kill, "kill");
+ 
+    function getpid return pid_t;
+    pragma Import (C, getpid, "getpid");
+ 
+    -------------
+    -- Threads --
+    -------------
+ 
+    type Thread_Body is access
+      function (arg : System.Address) return System.Address;
+    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;
+    type pthread_cond_t       is limited private;
+    type pthread_attr_t       is limited private;
+    type pthread_mutexattr_t  is limited private;
+    type pthread_condattr_t   is limited private;
+    type pthread_key_t        is private;
+ 
+    PTHREAD_CREATE_DETACHED : constant := 1;
+ 
+    PTHREAD_SCOPE_PROCESS : constant := 1;
+    PTHREAD_SCOPE_SYSTEM  : constant := 0;
+ 
+    --  Read/Write lock not supported on Android.
+ 
+    subtype pthread_rwlock_t     is pthread_mutex_t;
+    subtype pthread_rwlockattr_t is pthread_mutexattr_t;
+ 
+    -----------
+    -- Stack --
+    -----------
+ 
+    type stack_t is record
+       ss_sp    : System.Address;
+       ss_flags : int;
+       ss_size  : size_t;
+    end record;
+    pragma Convention (C, stack_t);
+ 
+    function sigaltstack
+      (ss  : not null access stack_t;
+       oss : access stack_t) return int;
+    pragma Import (C, sigaltstack, "sigaltstack");
+ 
+    Alternate_Stack : aliased System.Address;
+    pragma Import (C, Alternate_Stack, "__gnat_alternate_stack");
+    --  The alternate signal stack for stack overflows
+ 
+    Alternate_Stack_Size : constant := 16 * 1024;
+    --  This must be in keeping with init.c:__gnat_alternate_stack
+ 
+    Stack_Base_Available : constant Boolean := False;
+    --  Indicates whether the stack base is available on this target
+ 
+    function Get_Stack_Base (thread : pthread_t)
+      return Address is (Null_Address);
+    --  This is a dummy procedure to share some GNULLI files
+ 
+    function Get_Page_Size return int;
+    pragma Import (C, Get_Page_Size, "_getpagesize");
+    --  Returns the size of a page
+ 
+    PROT_NONE  : constant := 0;
+    PROT_READ  : constant := 1;
+    PROT_WRITE : constant := 2;
+    PROT_EXEC  : constant := 4;
+    PROT_ALL   : constant := PROT_READ + PROT_WRITE + PROT_EXEC;
+    PROT_ON    : constant := PROT_READ;
+    PROT_OFF   : constant := PROT_ALL;
+ 
+    function mprotect (addr : Address; len : size_t; prot : int) return int;
+    pragma Import (C, mprotect);
+ 
+    ---------------------------------------
+    -- Nonstandard Thread Initialization --
+    ---------------------------------------
+ 
+    procedure pthread_init is null;
+    --  This is a dummy procedure to share some GNULLI files
+ 
+    -------------------------
+    -- POSIX.1c  Section 3 --
+    -------------------------
+ 
+    function sigwait (set : access sigset_t; sig : access Signal) return int;
+    pragma Import (C, sigwait, "sigwait");
+ 
+    function pthread_kill (thread : pthread_t; sig : Signal) return int;
+    pragma Import (C, pthread_kill, "pthread_kill");
+ 
+    function pthread_sigmask
+      (how  : int;
+       set  : access sigset_t;
+       oset : access sigset_t) return int;
+    pragma Import (C, pthread_sigmask, "sigprocmask");
+    --  pthread_sigmask maybe be broken due to mismatch between sigset_t and
+    --  kernel_sigset_t, substitute sigprocmask temporarily.  ???
+    --  pragma Import (C, pthread_sigmask, "pthread_sigmask");
+ 
+    --------------------------
+    -- POSIX.1c  Section 11 --
+    --------------------------
+ 
+    function pthread_mutexattr_init
+      (attr : access pthread_mutexattr_t) return int;
+    pragma Import (C, pthread_mutexattr_init, "pthread_mutexattr_init");
+ 
+    function pthread_mutexattr_destroy
+      (attr : access pthread_mutexattr_t) return int;
+    pragma Import (C, pthread_mutexattr_destroy, "pthread_mutexattr_destroy");
+ 
+    function pthread_mutex_init
+      (mutex : access pthread_mutex_t;
+       attr  : access pthread_mutexattr_t) return int;
+    pragma Import (C, pthread_mutex_init, "pthread_mutex_init");
+ 
+    function pthread_mutex_destroy (mutex : access pthread_mutex_t) return int;
+    pragma Import (C, pthread_mutex_destroy, "pthread_mutex_destroy");
+ 
+    function pthread_mutex_lock (mutex : access pthread_mutex_t) return int;
+    pragma Import (C, pthread_mutex_lock, "pthread_mutex_lock");
+ 
+    function pthread_mutex_unlock (mutex : access pthread_mutex_t) return int;
+    pragma Import (C, pthread_mutex_unlock, "pthread_mutex_unlock");
+ 
+    function pthread_condattr_init
+      (attr : access pthread_condattr_t) return int;
+    pragma Import (C, pthread_condattr_init, "pthread_condattr_init");
+ 
+    function pthread_condattr_destroy
+      (attr : access pthread_condattr_t) return int;
+    pragma Import (C, pthread_condattr_destroy, "pthread_condattr_destroy");
+ 
+    function pthread_cond_init
+      (cond : access pthread_cond_t;
+       attr : access pthread_condattr_t) return int;
+    pragma Import (C, pthread_cond_init, "pthread_cond_init");
+ 
+    function pthread_cond_destroy (cond : access pthread_cond_t) return int;
+    pragma Import (C, pthread_cond_destroy, "pthread_cond_destroy");
+ 
+    function pthread_cond_signal (cond : access pthread_cond_t) return int;
+    pragma Import (C, pthread_cond_signal, "pthread_cond_signal");
+ 
+    function pthread_cond_wait
+      (cond  : access pthread_cond_t;
+       mutex : access pthread_mutex_t) return int;
+    pragma Import (C, pthread_cond_wait, "pthread_cond_wait");
+ 
+    function pthread_cond_timedwait
+      (cond    : access pthread_cond_t;
+       mutex   : access pthread_mutex_t;
+       abstime : access timespec) return int;
+    pragma Import (C, pthread_cond_timedwait, "pthread_cond_timedwait");
+ 
+    Relative_Timed_Wait : constant Boolean := False;
+    --  pthread_cond_timedwait requires an absolute delay time
+ 
+    --------------------------
+    -- POSIX.1c  Section 13 --
+    --------------------------
+ 
+    PTHREAD_PRIO_PROTECT : constant := 0;
+    PTHREAD_PRIO_INHERIT : constant := 1;
+ 
+    function pthread_mutexattr_setprotocol
+      (attr     : access pthread_mutexattr_t;
+       protocol : int) return int is (0);
+ 
+    function pthread_mutexattr_setprioceiling
+      (attr        : access pthread_mutexattr_t;
+       prioceiling : int) return int is (0);
+ 
+    type struct_sched_param is record
+       sched_priority : int;  --  scheduling priority
+    end record;
+    pragma Convention (C, struct_sched_param);
+ 
+    function pthread_setschedparam
+      (thread : pthread_t;
+       policy : int;
+       param  : access struct_sched_param) return int;
+    pragma Import (C, pthread_setschedparam, "pthread_setschedparam");
+ 
+    function pthread_attr_setscope
+      (attr  : access pthread_attr_t;
+       scope : int) return int;
+    pragma Import (C, pthread_attr_setscope, "pthread_attr_setscope");
+ 
+    function pthread_attr_setschedpolicy
+      (attr   : access pthread_attr_t;
+       policy : int) return int;
+    pragma Import
+      (C, pthread_attr_setschedpolicy, "pthread_attr_setschedpolicy");
+ 
+    function sched_yield return int;
+    pragma Import (C, sched_yield, "sched_yield");
+ 
+    ---------------------------
+    -- P1003.1c - Section 16 --
+    ---------------------------
+ 
+    function pthread_attr_init
+      (attributes : access pthread_attr_t) return int;
+    pragma Import (C, pthread_attr_init, "pthread_attr_init");
+ 
+    function pthread_attr_destroy
+      (attributes : access pthread_attr_t) return int;
+    pragma Import (C, pthread_attr_destroy, "pthread_attr_destroy");
+ 
+    function pthread_attr_setdetachstate
+      (attr        : access pthread_attr_t;
+       detachstate : int) return int;
+    pragma Import
+      (C, pthread_attr_setdetachstate, "pthread_attr_setdetachstate");
+ 
+    function pthread_attr_setstacksize
+      (attr      : access pthread_attr_t;
+       stacksize : size_t) return int;
+    pragma Import (C, pthread_attr_setstacksize, "pthread_attr_setstacksize");
+ 
+    function pthread_create
+      (thread        : access pthread_t;
+       attributes    : access pthread_attr_t;
+       start_routine : Thread_Body;
+       arg           : System.Address) return int;
+    pragma Import (C, pthread_create, "pthread_create");
+ 
+    procedure pthread_exit (status : System.Address);
+    pragma Import (C, pthread_exit, "pthread_exit");
+ 
+    function pthread_self return pthread_t;
+    pragma Import (C, pthread_self, "pthread_self");
+ 
+    function lwp_self return System.Address;
+    pragma Import (C, lwp_self, "__gnat_lwp_self");
+ 
+    --------------------------
+    -- POSIX.1c  Section 17 --
+    --------------------------
+ 
+    function pthread_setspecific
+      (key   : pthread_key_t;
+       value : System.Address) return int;
+    pragma Import (C, pthread_setspecific, "pthread_setspecific");
+ 
+    function pthread_getspecific (key : pthread_key_t) return System.Address;
+    pragma Import (C, pthread_getspecific, "pthread_getspecific");
+ 
+    type destructor_pointer is access procedure (arg : System.Address);
+    pragma Convention (C, destructor_pointer);
+ 
+    function pthread_key_create
+      (key        : access pthread_key_t;
+       destructor : destructor_pointer) return int;
+    pragma Import (C, pthread_key_create, "pthread_key_create");
+ 
+    CPU_SETSIZE : constant := 1_024;
+    --  Size of the cpu_set_t mask on most linux systems (SUSE 11 uses 4_096).
+    --  This is kept for backward compatibility (System.Task_Info uses it), but
+    --  the run-time library does no longer rely on static masks, using
+    --  dynamically allocated masks instead.
+ 
+    type bit_field is array (1 .. CPU_SETSIZE) of Boolean;
+    for bit_field'Size use CPU_SETSIZE;
+    pragma Pack (bit_field);
+    pragma Convention (C, bit_field);
+ 
+    type cpu_set_t is record
+       bits : bit_field;
+    end record;
+    pragma Convention (C, cpu_set_t);
+ 
+    type cpu_set_t_ptr is access all cpu_set_t;
+    --  In the run-time library we use this pointer because the size of type
+    --  cpu_set_t varies depending on the glibc version. Hence, objects of type
+    --  cpu_set_t are allocated dynamically using the number of processors
+    --  available in the target machine (value obtained at execution time).
+ 
+    function CPU_ALLOC (count : size_t) return cpu_set_t_ptr;
+    pragma Import (C, CPU_ALLOC, "__gnat_cpu_alloc");
+    --  Wrapper around the CPU_ALLOC C macro
+ 
+    function CPU_ALLOC_SIZE (count : size_t) return size_t;
+    pragma Import (C, CPU_ALLOC_SIZE, "__gnat_cpu_alloc_size");
+    --  Wrapper around the CPU_ALLOC_SIZE C macro
+ 
+    procedure CPU_FREE (cpuset : cpu_set_t_ptr);
+    pragma Import (C, CPU_FREE, "__gnat_cpu_free");
+    --  Wrapper around the CPU_FREE C macro
+ 
+    procedure CPU_ZERO (count : size_t; cpuset : cpu_set_t_ptr);
+    pragma Import (C, CPU_ZERO, "__gnat_cpu_zero");
+    --  Wrapper around the CPU_ZERO_S C macro
+ 
+    procedure CPU_SET (cpu : int; count : size_t; cpuset : cpu_set_t_ptr);
+    pragma Import (C, CPU_SET, "__gnat_cpu_set");
+    --  Wrapper around the CPU_SET_S C macro
+ 
+    function pthread_setaffinity_np
+      (thread     : pthread_t;
+       cpusetsize : size_t;
+       cpuset     : cpu_set_t_ptr) return int;
+    pragma Import (C, pthread_setaffinity_np, "pthread_setaffinity_np");
+    pragma Weak_External (pthread_setaffinity_np);
+    --  Use a weak symbol because this function may be available or not,
+    --  depending on the version of the system.
+ 
+    function pthread_attr_setaffinity_np
+      (attr       : access pthread_attr_t;
+       cpusetsize : size_t;
+       cpuset     : cpu_set_t_ptr) return int;
+    pragma Import (C, pthread_attr_setaffinity_np,
+                     "pthread_attr_setaffinity_np");
+    pragma Weak_External (pthread_attr_setaffinity_np);
+    --  Use a weak symbol because this function may be available or not,
+    --  depending on the version of the system.
+ 
+ private
+ 
+    type sigset_t is new Interfaces.C.unsigned_long;
+    pragma Convention (C, sigset_t);
+    for sigset_t'Alignment use Interfaces.C.unsigned_long'Alignment;
+ 
+    pragma Warnings (Off);
+    for struct_sigaction use record
+       sa_handler at Linux.sa_handler_pos range 0 .. Standard'Address_Size - 1;
+       sa_mask    at Linux.sa_mask_pos range 0 .. sigset_t'Size - 1;
+       sa_flags   at Linux.sa_flags_pos
+         range 0 .. Interfaces.C.unsigned_long'Size - 1;
+    end record;
+    --  We intentionally leave sa_restorer unspecified and let the compiler
+    --  append it after the last field, so disable corresponding warning.
+    pragma Warnings (On);
+ 
+    type pid_t is new int;
+ 
+    type time_t is new long;
+ 
+    type timespec is record
+       tv_sec  : time_t;
+       tv_nsec : long;
+    end record;
+    pragma Convention (C, timespec);
+ 
+    type unsigned_long_long_t is mod 2 ** 64;
+    --  Local type only used to get the alignment of this type below
+ 
+    subtype char_array is Interfaces.C.char_array;
+ 
+    type pthread_attr_t is record
+       Data : char_array (1 .. OS_Constants.PTHREAD_ATTR_SIZE);
+    end record;
+    pragma Convention (C, pthread_attr_t);
+    for pthread_attr_t'Alignment use Interfaces.C.unsigned_long'Alignment;
+ 
+    type pthread_condattr_t is record
+       Data : char_array (1 .. OS_Constants.PTHREAD_CONDATTR_SIZE);
+    end record;
+    pragma Convention (C, pthread_condattr_t);
+    for pthread_condattr_t'Alignment use Interfaces.C.int'Alignment;
+ 
+    type pthread_mutexattr_t is record
+       Data : char_array (1 .. OS_Constants.PTHREAD_MUTEXATTR_SIZE);
+    end  record;
+    pragma Convention (C, pthread_mutexattr_t);
+    for pthread_mutexattr_t'Alignment use Interfaces.C.int'Alignment;
+ 
+    type pthread_mutex_t is record
+       Data : char_array (1 .. OS_Constants.PTHREAD_MUTEX_SIZE);
+    end record;
+    pragma Convention (C, pthread_mutex_t);
+    for pthread_mutex_t'Alignment use Interfaces.C.unsigned_long'Alignment;
+ 
+    type pthread_cond_t is record
+       Data : char_array (1 .. OS_Constants.PTHREAD_COND_SIZE);
+    end record;
+    pragma Convention (C, pthread_cond_t);
+    for pthread_cond_t'Alignment use unsigned_long_long_t'Alignment;
+ 
+    type pthread_key_t is new unsigned;
+ 
+ end System.OS_Interface;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-osinte__darwin.adb gcc-8.1.0/gcc/ada/libgnarl/s-osinte__darwin.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-osinte__darwin.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-osinte__darwin.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,193 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                   S Y S T E M . O S _ I N T E R F A C E                  --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --          Copyright (C) 1999-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is a Darwin Threads version of this package
+ 
+ pragma Polling (Off);
+ --  Turn off polling, we do not want ATC polling to take place during
+ --  tasking operations. It causes infinite loops and other problems.
+ 
+ with Interfaces.C.Extensions;
+ 
+ package body System.OS_Interface is
+    use Interfaces.C;
+ 
+    -----------------
+    -- To_Duration --
+    -----------------
+ 
+    function To_Duration (TS : timespec) return Duration is
+    begin
+       return Duration (TS.tv_sec) + Duration (TS.tv_nsec) / 10#1#E9;
+    end To_Duration;
+ 
+    ------------------------
+    -- To_Target_Priority --
+    ------------------------
+ 
+    function To_Target_Priority
+      (Prio : System.Any_Priority) return Interfaces.C.int
+    is
+    begin
+       return Interfaces.C.int (Prio);
+    end To_Target_Priority;
+ 
+    -----------------
+    -- To_Timespec --
+    -----------------
+ 
+    function To_Timespec (D : Duration) return timespec is
+       S : time_t;
+       F : Duration;
+ 
+    begin
+       S := time_t (Long_Long_Integer (D));
+       F := D - Duration (S);
+ 
+       --  If F has negative value due to a round-up, adjust for positive F
+       --  value.
+ 
+       if F < 0.0 then
+          S := S - 1;
+          F := F + 1.0;
+       end if;
+ 
+       return timespec'(tv_sec => S,
+         tv_nsec => long (Long_Long_Integer (F * 10#1#E9)));
+    end To_Timespec;
+ 
+    -------------------
+    -- clock_gettime --
+    -------------------
+ 
+    function clock_gettime
+      (clock_id : clockid_t;
+       tp       : access timespec) return int
+    is
+       pragma Unreferenced (clock_id);
+ 
+       --  Darwin Threads don't have clock_gettime, so use gettimeofday
+ 
+       use Interfaces;
+ 
+       type timeval is array (1 .. 3) of C.long;
+       --  The timeval array is sized to contain long_long sec and long usec.
+       --  If long_long'Size = long'Size then it will be overly large but that
+       --  won't effect the implementation since it's not accessed directly.
+ 
+       procedure timeval_to_duration
+         (T    : not null access timeval;
+          sec  : not null access C.Extensions.long_long;
+          usec : not null access C.long);
+       pragma Import (C, timeval_to_duration, "__gnat_timeval_to_duration");
+ 
+       Micro  : constant := 10**6;
+       sec    : aliased C.Extensions.long_long;
+       usec   : aliased C.long;
+       TV     : aliased timeval;
+       Result : int;
+ 
+       function gettimeofday
+         (Tv : access timeval;
+          Tz : System.Address := System.Null_Address) return int;
+       pragma Import (C, gettimeofday, "gettimeofday");
+ 
+    begin
+       Result := gettimeofday (TV'Access, System.Null_Address);
+       pragma Assert (Result = 0);
+       timeval_to_duration (TV'Access, sec'Access, usec'Access);
+       tp.all := To_Timespec (Duration (sec) + Duration (usec) / Micro);
+       return Result;
+    end clock_gettime;
+ 
+    ------------------
+    -- clock_getres --
+    ------------------
+ 
+    function clock_getres
+      (clock_id : clockid_t;
+       res      : access timespec) return int
+    is
+       pragma Unreferenced (clock_id);
+ 
+       --  Darwin Threads don't have clock_getres.
+ 
+       Nano   : constant := 10**9;
+       nsec   : int := 0;
+       Result : int := -1;
+ 
+       function clock_get_res return int;
+       pragma Import (C, clock_get_res, "__gnat_clock_get_res");
+ 
+    begin
+       nsec := clock_get_res;
+       res.all := To_Timespec (Duration (0.0) + Duration (nsec) / Nano);
+ 
+       if nsec > 0 then
+          Result := 0;
+       end if;
+ 
+       return Result;
+    end clock_getres;
+ 
+    -----------------
+    -- sched_yield --
+    -----------------
+ 
+    function sched_yield return int is
+       procedure sched_yield_base (arg : System.Address);
+       pragma Import (C, sched_yield_base, "pthread_yield_np");
+ 
+    begin
+       sched_yield_base (System.Null_Address);
+       return 0;
+    end sched_yield;
+ 
+    ------------------
+    -- pthread_init --
+    ------------------
+ 
+    procedure pthread_init is
+    begin
+       null;
+    end pthread_init;
+ 
+    ----------------
+    -- Stack_Base --
+    ----------------
+ 
+    function Get_Stack_Base (thread : pthread_t) return Address is
+       pragma Unreferenced (thread);
+    begin
+       return System.Null_Address;
+    end Get_Stack_Base;
+ 
+ end System.OS_Interface;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-osinte__darwin.ads gcc-8.1.0/gcc/ada/libgnarl/s-osinte__darwin.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-osinte__darwin.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-osinte__darwin.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,601 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                   S Y S T E M . O S _ I N T E R F A C E                  --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --             Copyright (C) 1991-2017, Florida State University            --
+ --          Copyright (C) 1995-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is Darwin pthreads version of this package
+ 
+ --  This package includes all direct interfaces to OS services that are needed
+ --  by the tasking run-time (libgnarl).
+ 
+ --  PLEASE DO NOT add any with-clauses to this package or remove the pragma
+ --  Elaborate_Body. It is designed to be a bottom-level (leaf) package.
+ 
+ with Interfaces.C;
+ with System.OS_Constants;
+ 
+ package System.OS_Interface is
+    pragma Preelaborate;
+ 
+    subtype int            is Interfaces.C.int;
+    subtype short          is Interfaces.C.short;
+    subtype long           is Interfaces.C.long;
+    subtype unsigned       is Interfaces.C.unsigned;
+    subtype unsigned_short is Interfaces.C.unsigned_short;
+    subtype unsigned_long  is Interfaces.C.unsigned_long;
+    subtype unsigned_char  is Interfaces.C.unsigned_char;
+    subtype plain_char     is Interfaces.C.plain_char;
+    subtype size_t         is Interfaces.C.size_t;
+ 
+    -----------
+    -- Errno --
+    -----------
+ 
+    function errno return int;
+    pragma Import (C, errno, "__get_errno");
+ 
+    EINTR     : constant := 4;
+    ENOMEM    : constant := 12;
+    EINVAL    : constant := 22;
+    EAGAIN    : constant := 35;
+    ETIMEDOUT : constant := 60;
+ 
+    -------------
+    -- Signals --
+    -------------
+ 
+    Max_Interrupt : constant := 31;
+    type Signal is new int range 0 .. Max_Interrupt;
+    for Signal'Size use int'Size;
+ 
+    SIGHUP     : constant := 1; --  hangup
+    SIGINT     : constant := 2; --  interrupt (rubout)
+    SIGQUIT    : constant := 3; --  quit (ASCD FS)
+    SIGILL     : constant := 4; --  illegal instruction (not reset)
+    SIGTRAP    : constant := 5; --  trace trap (not reset)
+    SIGIOT     : constant := 6; --  IOT instruction
+    SIGABRT    : constant := 6; --  used by abort, replace SIGIOT in the  future
+    SIGEMT     : constant := 7; --  EMT instruction
+    SIGFPE     : constant := 8; --  floating point exception
+    SIGKILL    : constant := 9; --  kill (cannot be caught or ignored)
+    SIGBUS     : constant := 10; --  bus error
+    SIGSEGV    : constant := 11; --  segmentation violation
+    SIGSYS     : constant := 12; --  bad argument to system call
+    SIGPIPE    : constant := 13; --  write on a pipe with no one to read it
+    SIGALRM    : constant := 14; --  alarm clock
+    SIGTERM    : constant := 15; --  software termination signal from kill
+    SIGURG     : constant := 16; --  urgent condition on IO channel
+    SIGSTOP    : constant := 17; --  stop (cannot be caught or ignored)
+    SIGTSTP    : constant := 18; --  user stop requested from tty
+    SIGCONT    : constant := 19; --  stopped process has been continued
+    SIGCHLD    : constant := 20; --  child status change
+    SIGTTIN    : constant := 21; --  background tty read attempted
+    SIGTTOU    : constant := 22; --  background tty write attempted
+    SIGIO      : constant := 23; --  I/O possible (Solaris SIGPOLL alias)
+    SIGXCPU    : constant := 24; --  CPU time limit exceeded
+    SIGXFSZ    : constant := 25; --  filesize limit exceeded
+    SIGVTALRM  : constant := 26; --  virtual timer expired
+    SIGPROF    : constant := 27; --  profiling timer expired
+    SIGWINCH   : constant := 28; --  window size change
+    SIGINFO    : constant := 29; --  information request
+    SIGUSR1    : constant := 30; --  user defined signal 1
+    SIGUSR2    : constant := 31; --  user defined signal 2
+ 
+    SIGADAABORT : constant := SIGABRT;
+    --  Change this if you want to use another signal for task abort.
+    --  SIGTERM might be a good one.
+ 
+    type Signal_Set is array (Natural range <>) of Signal;
+ 
+    Unmasked : constant Signal_Set :=
+                 (SIGTTIN, SIGTTOU, SIGSTOP, SIGTSTP);
+ 
+    Reserved : constant Signal_Set :=
+                 (SIGKILL, SIGSTOP);
+ 
+    Exception_Signals : constant Signal_Set :=
+                          (SIGFPE, SIGILL, SIGSEGV, SIGBUS);
+    --  These signals (when runtime or system) will be caught and converted
+    --  into an Ada exception.
+ 
+    type sigset_t is private;
+ 
+    function sigaddset (set : access sigset_t; sig : Signal) return int;
+    pragma Import (C, sigaddset, "sigaddset");
+ 
+    function sigdelset (set : access sigset_t; sig : Signal) return int;
+    pragma Import (C, sigdelset, "sigdelset");
+ 
+    function sigfillset (set : access sigset_t) return int;
+    pragma Import (C, sigfillset, "sigfillset");
+ 
+    function sigismember (set : access sigset_t; sig : Signal) return int;
+    pragma Import (C, sigismember, "sigismember");
+ 
+    function sigemptyset (set : access sigset_t) return int;
+    pragma Import (C, sigemptyset, "sigemptyset");
+ 
+    type siginfo_t is private;
+    type ucontext_t is private;
+ 
+    type Signal_Handler is access procedure
+      (signo   : Signal;
+       info    : access siginfo_t;
+       context : access ucontext_t);
+ 
+    type struct_sigaction is record
+       sa_handler : System.Address;
+       sa_mask    : sigset_t;
+       sa_flags   : int;
+    end record;
+    pragma Convention (C, struct_sigaction);
+    type struct_sigaction_ptr is access all struct_sigaction;
+ 
+    SIG_BLOCK   : constant := 1;
+    SIG_UNBLOCK : constant := 2;
+    SIG_SETMASK : constant := 3;
+ 
+    SIG_DFL : constant := 0;
+    SIG_IGN : constant := 1;
+ 
+    SA_SIGINFO : constant := 16#0040#;
+    SA_ONSTACK : constant := 16#0001#;
+ 
+    function sigaction
+      (sig  : Signal;
+       act  : struct_sigaction_ptr;
+       oact : struct_sigaction_ptr) return int;
+    pragma Import (C, sigaction, "sigaction");
+ 
+    ----------
+    -- Time --
+    ----------
+ 
+    Time_Slice_Supported : constant Boolean := True;
+    --  Indicates whether time slicing is supported
+ 
+    type timespec is private;
+ 
+    type clockid_t is new int;
+ 
+    function clock_gettime
+      (clock_id : clockid_t;
+       tp       : access timespec) return int;
+ 
+    function clock_getres
+      (clock_id : clockid_t;
+       res      : access timespec) return int;
+ 
+    function To_Duration (TS : timespec) return Duration;
+    pragma Inline (To_Duration);
+ 
+    function To_Timespec (D : Duration) return timespec;
+    pragma Inline (To_Timespec);
+ 
+    -------------------------
+    -- Priority Scheduling --
+    -------------------------
+ 
+    SCHED_OTHER : constant := 1;
+    SCHED_RR    : constant := 2;
+    SCHED_FIFO  : constant := 4;
+ 
+    function To_Target_Priority
+      (Prio : System.Any_Priority) return Interfaces.C.int;
+    --  Maps System.Any_Priority to a POSIX priority
+ 
+    -------------
+    -- Process --
+    -------------
+ 
+    type pid_t is private;
+ 
+    function kill (pid : pid_t; sig : Signal) return int;
+    pragma Import (C, kill, "kill");
+ 
+    function getpid return pid_t;
+    pragma Import (C, getpid, "getpid");
+ 
+    ---------
+    -- LWP --
+    ---------
+ 
+    function lwp_self return System.Address;
+    pragma Import (C, lwp_self, "__gnat_lwp_self");
+    --  Return the mach thread bound to the current thread.  The value is not
+    --  used by the run-time library but made available to debuggers.
+ 
+    -------------
+    -- Threads --
+    -------------
+ 
+    type Thread_Body is access
+      function (arg : System.Address) return System.Address;
+    pragma Convention (C, Thread_Body);
+ 
+    type pthread_t           is private;
+    subtype Thread_Id        is pthread_t;
+ 
+    type pthread_mutex_t     is limited private;
+    type pthread_cond_t      is limited private;
+    type pthread_attr_t      is limited private;
+    type pthread_mutexattr_t is limited private;
+    type pthread_condattr_t  is limited private;
+    type pthread_key_t       is private;
+ 
+    type pthread_mutex_ptr is access all pthread_mutex_t;
+    type pthread_cond_ptr is access all pthread_cond_t;
+ 
+    PTHREAD_CREATE_DETACHED : constant := 2;
+ 
+    PTHREAD_SCOPE_PROCESS : constant := 2;
+    PTHREAD_SCOPE_SYSTEM  : constant := 1;
+ 
+    --  Read/Write lock not supported on Darwin. To add support both types
+    --  pthread_rwlock_t and pthread_rwlockattr_t must properly be defined
+    --  with the associated routines pthread_rwlock_[init/destroy] and
+    --  pthread_rwlock_[rdlock/wrlock/unlock].
+ 
+    subtype pthread_rwlock_t     is pthread_mutex_t;
+    subtype pthread_rwlockattr_t is pthread_mutexattr_t;
+ 
+    -----------
+    -- Stack --
+    -----------
+ 
+    type stack_t is record
+       ss_sp    : System.Address;
+       ss_size  : size_t;
+       ss_flags : int;
+    end record;
+    pragma Convention (C, stack_t);
+ 
+    function sigaltstack
+      (ss  : not null access stack_t;
+       oss : access stack_t) return int;
+    pragma Import (C, sigaltstack, "sigaltstack");
+ 
+    Alternate_Stack : aliased System.Address;
+    pragma Import (C, Alternate_Stack, "__gnat_alternate_stack");
+    --  The alternate signal stack for stack overflows
+ 
+    Alternate_Stack_Size : constant := 32 * 1024;
+    --  This must be in keeping with init.c:__gnat_alternate_stack
+ 
+    Stack_Base_Available : constant Boolean := False;
+    --  Indicates whether the stack base is available on this target. This
+    --  allows us to share s-osinte.adb between all the FSU run time. Note that
+    --  this value can only be true if pthread_t has a complete definition that
+    --  corresponds exactly to the C header files.
+ 
+    function Get_Stack_Base (thread : pthread_t) return System.Address;
+    pragma Inline (Get_Stack_Base);
+    --  returns the stack base of the specified thread. Only call this function
+    --  when Stack_Base_Available is True.
+ 
+    function Get_Page_Size return int;
+    pragma Import (C, Get_Page_Size, "getpagesize");
+    --  Returns the size of a page
+ 
+    PROT_NONE  : constant := 0;
+    PROT_READ  : constant := 1;
+    PROT_WRITE : constant := 2;
+    PROT_EXEC  : constant := 4;
+    PROT_ALL   : constant := PROT_READ + PROT_WRITE + PROT_EXEC;
+ 
+    PROT_ON    : constant := PROT_NONE;
+    PROT_OFF   : constant := PROT_ALL;
+ 
+    function mprotect
+      (addr : System.Address;
+       len  : size_t;
+       prot : int) return int;
+    pragma Import (C, mprotect);
+ 
+    ---------------------------------------
+    -- Nonstandard Thread Initialization --
+    ---------------------------------------
+ 
+    procedure pthread_init;
+ 
+    -------------------------
+    -- POSIX.1c  Section 3 --
+    -------------------------
+ 
+    function sigwait (set : access sigset_t; sig : access Signal) return int;
+    pragma Import (C, sigwait, "sigwait");
+ 
+    function pthread_kill (thread : pthread_t; sig : Signal) return int;
+    pragma Import (C, pthread_kill, "pthread_kill");
+ 
+    function pthread_sigmask
+      (how  : int;
+       set  : access sigset_t;
+       oset : access sigset_t) return int;
+    pragma Import (C, pthread_sigmask, "pthread_sigmask");
+ 
+    --------------------------
+    -- POSIX.1c  Section 11 --
+    --------------------------
+ 
+    function pthread_mutexattr_init
+      (attr : access pthread_mutexattr_t) return int;
+    pragma Import (C, pthread_mutexattr_init, "pthread_mutexattr_init");
+ 
+    function pthread_mutexattr_destroy
+      (attr : access pthread_mutexattr_t) return int;
+    pragma Import (C, pthread_mutexattr_destroy, "pthread_mutexattr_destroy");
+ 
+    function pthread_mutex_init
+      (mutex : access pthread_mutex_t;
+       attr  : access pthread_mutexattr_t) return int;
+    pragma Import (C, pthread_mutex_init, "pthread_mutex_init");
+ 
+    function pthread_mutex_destroy (mutex : access pthread_mutex_t) return int;
+    pragma Import (C, pthread_mutex_destroy, "pthread_mutex_destroy");
+ 
+    function pthread_mutex_lock (mutex : access pthread_mutex_t) return int;
+    pragma Import (C, pthread_mutex_lock, "pthread_mutex_lock");
+ 
+    function pthread_mutex_unlock (mutex : access pthread_mutex_t) return int;
+    pragma Import (C, pthread_mutex_unlock, "pthread_mutex_unlock");
+ 
+    function pthread_condattr_init
+      (attr : access pthread_condattr_t) return int;
+    pragma Import (C, pthread_condattr_init, "pthread_condattr_init");
+ 
+    function pthread_condattr_destroy
+      (attr : access pthread_condattr_t) return int;
+    pragma Import (C, pthread_condattr_destroy, "pthread_condattr_destroy");
+ 
+    function pthread_cond_init
+      (cond : access pthread_cond_t;
+       attr : access pthread_condattr_t) return int;
+    pragma Import (C, pthread_cond_init, "pthread_cond_init");
+ 
+    function pthread_cond_destroy (cond : access pthread_cond_t) return int;
+    pragma Import (C, pthread_cond_destroy, "pthread_cond_destroy");
+ 
+    function pthread_cond_signal (cond : access pthread_cond_t) return int;
+    pragma Import (C, pthread_cond_signal, "pthread_cond_signal");
+ 
+    function pthread_cond_wait
+      (cond  : access pthread_cond_t;
+       mutex : access pthread_mutex_t) return int;
+    pragma Import (C, pthread_cond_wait, "pthread_cond_wait");
+ 
+    function pthread_cond_timedwait
+      (cond    : access pthread_cond_t;
+       mutex   : access pthread_mutex_t;
+       abstime : access timespec) return int;
+    pragma Import (C, pthread_cond_timedwait, "pthread_cond_timedwait");
+ 
+    Relative_Timed_Wait : constant Boolean := False;
+    --  pthread_cond_timedwait requires an absolute delay time
+ 
+    --------------------------
+    -- POSIX.1c  Section 13 --
+    --------------------------
+ 
+    PTHREAD_PRIO_NONE    : constant := 0;
+    PTHREAD_PRIO_INHERIT : constant := 1;
+    PTHREAD_PRIO_PROTECT : constant := 2;
+ 
+    function pthread_mutexattr_setprotocol
+      (attr     : access pthread_mutexattr_t;
+       protocol : int) return int;
+    pragma Import
+      (C, pthread_mutexattr_setprotocol, "pthread_mutexattr_setprotocol");
+ 
+    function pthread_mutexattr_setprioceiling
+      (attr     : access pthread_mutexattr_t;
+       prioceiling : int) return int;
+    pragma Import
+      (C, pthread_mutexattr_setprioceiling,
+       "pthread_mutexattr_setprioceiling");
+ 
+    type padding is array (int range <>) of Interfaces.C.char;
+ 
+    type struct_sched_param is record
+       sched_priority : int;  --  scheduling priority
+       opaque         : padding (1 .. 4);
+    end record;
+    pragma Convention (C, struct_sched_param);
+ 
+    function pthread_setschedparam
+      (thread : pthread_t;
+       policy : int;
+       param  : access struct_sched_param) return int;
+    pragma Import (C, pthread_setschedparam, "pthread_setschedparam");
+ 
+    function pthread_attr_setscope
+      (attr            : access pthread_attr_t;
+       contentionscope : int) return int;
+    pragma Import (C, pthread_attr_setscope, "pthread_attr_setscope");
+ 
+    function pthread_attr_setinheritsched
+      (attr            : access pthread_attr_t;
+       inheritsched : int) return int;
+    pragma Import
+      (C, pthread_attr_setinheritsched, "pthread_attr_setinheritsched");
+ 
+    function pthread_attr_setschedpolicy
+      (attr   : access pthread_attr_t;
+       policy : int) return int;
+    pragma Import (C, pthread_attr_setschedpolicy, "pthread_attr_setsched");
+ 
+    function sched_yield return int;
+ 
+    ---------------------------
+    -- P1003.1c - Section 16 --
+    ---------------------------
+ 
+    function pthread_attr_init (attributes : access pthread_attr_t) return int;
+    pragma Import (C, pthread_attr_init, "pthread_attr_init");
+ 
+    function pthread_attr_destroy
+      (attributes : access pthread_attr_t) return int;
+    pragma Import (C, pthread_attr_destroy, "pthread_attr_destroy");
+ 
+    function pthread_attr_setdetachstate
+      (attr        : access pthread_attr_t;
+       detachstate : int) return int;
+    pragma Import
+      (C, pthread_attr_setdetachstate, "pthread_attr_setdetachstate");
+ 
+    function pthread_attr_setstacksize
+      (attr      : access pthread_attr_t;
+       stacksize : size_t) return int;
+    pragma Import
+      (C, pthread_attr_setstacksize, "pthread_attr_setstacksize");
+ 
+    function pthread_create
+      (thread        : access pthread_t;
+       attributes    : access pthread_attr_t;
+       start_routine : Thread_Body;
+       arg           : System.Address) return int;
+    pragma Import (C, pthread_create, "pthread_create");
+ 
+    procedure pthread_exit (status : System.Address);
+    pragma Import (C, pthread_exit, "pthread_exit");
+ 
+    function pthread_self return pthread_t;
+    pragma Import (C, pthread_self, "pthread_self");
+ 
+    --------------------------
+    -- POSIX.1c  Section 17 --
+    --------------------------
+ 
+    function pthread_setspecific
+      (key   : pthread_key_t;
+       value : System.Address) return int;
+    pragma Import (C, pthread_setspecific, "pthread_setspecific");
+ 
+    function pthread_getspecific (key : pthread_key_t) return System.Address;
+    pragma Import (C, pthread_getspecific, "pthread_getspecific");
+ 
+    type destructor_pointer is access procedure (arg : System.Address);
+    pragma Convention (C, destructor_pointer);
+ 
+    function pthread_key_create
+      (key        : access pthread_key_t;
+       destructor : destructor_pointer) return int;
+    pragma Import (C, pthread_key_create, "pthread_key_create");
+ 
+ private
+ 
+    type sigset_t is new unsigned;
+ 
+    type int32_t is new int;
+ 
+    type pid_t is new int32_t;
+ 
+    type time_t is new long;
+ 
+    type timespec is record
+       tv_sec  : time_t;
+       tv_nsec : long;
+    end record;
+    pragma Convention (C, timespec);
+ 
+    --
+    --  Darwin specific signal implementation
+    --
+    type Pad_Type is array (1 .. 7) of unsigned_long;
+    type siginfo_t is record
+       si_signo  : int;               --  signal number
+       si_errno  : int;               --  errno association
+       si_code   : int;               --  signal code
+       si_pid    : int;               --  sending process
+       si_uid    : unsigned;          --  sender's ruid
+       si_status : int;               --  exit value
+       si_addr   : System.Address;    --  faulting instruction
+       si_value  : System.Address;    --  signal value
+       si_band   : long;              --  band event for SIGPOLL
+       pad       : Pad_Type;          --  RFU
+    end record;
+    pragma Convention (C, siginfo_t);
+ 
+    type mcontext_t is new System.Address;
+ 
+    type ucontext_t is record
+       uc_onstack  : int;
+       uc_sigmask  : sigset_t;         --  Signal Mask Used By This Context
+       uc_stack    : stack_t;          --  Stack Used By This Context
+       uc_link     : System.Address;   --  Pointer To Resuming Context
+       uc_mcsize   : size_t;           --  Size of The Machine Context
+       uc_mcontext : mcontext_t;       --  Machine Specific Context
+    end record;
+    pragma Convention (C, ucontext_t);
+ 
+    --
+    --  Darwin specific pthread implementation
+    --
+    type pthread_t is new System.Address;
+ 
+    type pthread_attr_t is record
+       sig    : long;
+       opaque : padding (1 .. System.OS_Constants.PTHREAD_ATTR_SIZE);
+    end record;
+    pragma Convention (C, pthread_attr_t);
+ 
+    type pthread_mutexattr_t is record
+       sig    : long;
+       opaque : padding (1 .. System.OS_Constants.PTHREAD_MUTEXATTR_SIZE);
+    end record;
+    pragma Convention (C, pthread_mutexattr_t);
+ 
+    type pthread_mutex_t is record
+       sig    : long;
+       opaque : padding (1 .. System.OS_Constants.PTHREAD_MUTEX_SIZE);
+    end record;
+    pragma Convention (C, pthread_mutex_t);
+ 
+    type pthread_condattr_t is record
+       sig    : long;
+       opaque : padding (1 .. System.OS_Constants.PTHREAD_CONDATTR_SIZE);
+    end record;
+    pragma Convention (C, pthread_condattr_t);
+ 
+    type pthread_cond_t is record
+       sig    : long;
+       opaque : padding (1 .. System.OS_Constants.PTHREAD_COND_SIZE);
+    end record;
+    pragma Convention (C, pthread_cond_t);
+ 
+    type pthread_once_t is record
+       sig    : long;
+       opaque : padding (1 .. System.OS_Constants.PTHREAD_ONCE_SIZE);
+    end record;
+    pragma Convention (C, pthread_once_t);
+ 
+    type pthread_key_t is new unsigned_long;
+ 
+ end System.OS_Interface;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-osinte__dragonfly.adb gcc-8.1.0/gcc/ada/libgnarl/s-osinte__dragonfly.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-osinte__dragonfly.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-osinte__dragonfly.adb	Mon Sep 11 09:18:42 2017
***************
*** 0 ****
--- 1,116 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                  GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                --
+ --                                                                          --
+ --                   S Y S T E M . O S _ I N T E R F A C E                  --
+ --                                                                          --
+ --                                   B o d y                                --
+ --                                                                          --
+ --          Copyright (C) 1991-2015, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University. It is --
+ -- now maintained by Ada Core Technologies Inc. in cooperation with Florida --
+ -- State University (http://www.gnat.com).                                  --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is the DragonFly THREADS version of this package
+ 
+ with Interfaces.C; use Interfaces.C;
+ 
+ package body System.OS_Interface is
+ 
+    -----------
+    -- Errno --
+    -----------
+ 
+    function Errno return int is
+       type int_ptr is access all int;
+ 
+       function internal_errno return int_ptr;
+       pragma Import (C, internal_errno, "__get_errno");
+ 
+    begin
+       return (internal_errno.all);
+    end Errno;
+ 
+    --------------------
+    -- Get_Stack_Base --
+    --------------------
+ 
+    function Get_Stack_Base (thread : pthread_t) return Address is
+       pragma Unreferenced (thread);
+    begin
+       return Null_Address;
+    end Get_Stack_Base;
+ 
+    ------------------
+    -- pthread_init --
+    ------------------
+ 
+    procedure pthread_init is
+    begin
+       null;
+    end pthread_init;
+ 
+    -----------------
+    -- To_Duration --
+    -----------------
+ 
+    function To_Duration (TS : timespec) return Duration is
+    begin
+       return Duration (TS.ts_sec) + Duration (TS.ts_nsec) / 10#1#E9;
+    end To_Duration;
+ 
+    ------------------------
+    -- To_Target_Priority --
+    ------------------------
+ 
+    function To_Target_Priority
+      (Prio : System.Any_Priority) return Interfaces.C.int
+    is
+    begin
+       return Interfaces.C.int (Prio);
+    end To_Target_Priority;
+ 
+    -----------------
+    -- To_Timespec --
+    -----------------
+ 
+    function To_Timespec (D : Duration) return timespec is
+       S : time_t;
+       F : Duration;
+ 
+    begin
+       S := time_t (Long_Long_Integer (D));
+       F := D - Duration (S);
+ 
+       --  If F has negative value due to a round-up, adjust for positive F
+       --  value.
+ 
+       if F < 0.0 then
+          S := S - 1;
+          F := F + 1.0;
+       end if;
+ 
+       return timespec'(ts_sec => S,
+                        ts_nsec => long (Long_Long_Integer (F * 10#1#E9)));
+    end To_Timespec;
+ 
+ end System.OS_Interface;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-osinte__dragonfly.ads gcc-8.1.0/gcc/ada/libgnarl/s-osinte__dragonfly.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-osinte__dragonfly.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-osinte__dragonfly.ads	Mon Sep 11 09:18:42 2017
***************
*** 0 ****
--- 1,652 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                  GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                --
+ --                                                                          --
+ --                   S Y S T E M . O S _ I N T E R F A C E                  --
+ --                                                                          --
+ --                                   S p e c                                --
+ --                                                                          --
+ --             Copyright (C) 1991-1994, Florida State University            --
+ --          Copyright (C) 1995-2015, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University. It is --
+ -- now maintained by Ada Core Technologies Inc. in cooperation with Florida --
+ -- State University (http://www.gnat.com).                                  --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is the DragonFly BSD PTHREADS version of this package
+ 
+ --  This package encapsulates all direct interfaces to OS services
+ --  that are needed by the tasking run-time (libgnarl).
+ 
+ --  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;
+ 
+ package System.OS_Interface is
+    pragma Preelaborate;
+ 
+    pragma Linker_Options ("-pthread");
+ 
+    subtype int            is Interfaces.C.int;
+    subtype short          is Interfaces.C.short;
+    subtype long           is Interfaces.C.long;
+    subtype unsigned       is Interfaces.C.unsigned;
+    subtype unsigned_short is Interfaces.C.unsigned_short;
+    subtype unsigned_long  is Interfaces.C.unsigned_long;
+    subtype unsigned_char  is Interfaces.C.unsigned_char;
+    subtype plain_char     is Interfaces.C.plain_char;
+    subtype size_t         is Interfaces.C.size_t;
+ 
+    -----------
+    -- Errno --
+    -----------
+ 
+    function Errno return int;
+    pragma Inline (Errno);
+ 
+    EAGAIN    : constant := 35;
+    EINTR     : constant := 4;
+    EINVAL    : constant := 22;
+    ENOMEM    : constant := 12;
+    ETIMEDOUT : constant := 60;
+ 
+    -------------
+    -- Signals --
+    -------------
+ 
+    Max_Interrupt : constant := 31;
+    type Signal is new int range 0 .. Max_Interrupt;
+    for Signal'Size use int'Size;
+ 
+    SIGHUP     : constant := 1; --  hangup
+    SIGINT     : constant := 2; --  interrupt (rubout)
+    SIGQUIT    : constant := 3; --  quit (ASCD FS)
+    SIGILL     : constant := 4; --  illegal instruction (not reset)
+    SIGTRAP    : constant := 5; --  trace trap (not reset)
+    SIGIOT     : constant := 6; --  IOT instruction
+    SIGABRT    : constant := 6; --  used by abort, replace SIGIOT in the  future
+    SIGEMT     : constant := 7; --  EMT instruction
+    SIGFPE     : constant := 8; --  floating point exception
+    SIGKILL    : constant := 9; --  kill (cannot be caught or ignored)
+    SIGBUS     : constant := 10; --  bus error
+    SIGSEGV    : constant := 11; --  segmentation violation
+    SIGSYS     : constant := 12; --  bad argument to system call
+    SIGPIPE    : constant := 13; --  write on a pipe with no one to read it
+    SIGALRM    : constant := 14; --  alarm clock
+    SIGTERM    : constant := 15; --  software termination signal from kill
+    SIGURG     : constant := 16; --  urgent condition on IO channel
+    SIGSTOP    : constant := 17; --  stop (cannot be caught or ignored)
+    SIGTSTP    : constant := 18; --  user stop requested from tty
+    SIGCONT    : constant := 19; --  stopped process has been continued
+    SIGCLD     : constant := 20; --  alias for SIGCHLD
+    SIGCHLD    : constant := 20; --  child status change
+    SIGTTIN    : constant := 21; --  background tty read attempted
+    SIGTTOU    : constant := 22; --  background tty write attempted
+    SIGIO      : constant := 23; --  I/O possible (Solaris SIGPOLL alias)
+    SIGXCPU    : constant := 24; --  CPU time limit exceeded
+    SIGXFSZ    : constant := 25; --  filesize limit exceeded
+    SIGVTALRM  : constant := 26; --  virtual timer expired
+    SIGPROF    : constant := 27; --  profiling timer expired
+    SIGWINCH   : constant := 28; --  window size change
+    SIGINFO    : constant := 29; --  information request (BSD)
+    SIGUSR1    : constant := 30; --  user defined signal 1
+    SIGUSR2    : constant := 31; --  user defined signal 2
+ 
+    SIGADAABORT : constant := SIGABRT;
+    --  Change this if you want to use another signal for task abort.
+    --  SIGTERM might be a good one.
+ 
+    type Signal_Set is array (Natural range <>) of Signal;
+ 
+    --  Interrupts that must be unmasked at all times.  DragonFlyBSD
+    --  pthreads will not allow an application to mask out any
+    --  interrupt needed by the threads library.
+    Unmasked : constant Signal_Set :=
+      (SIGTRAP, SIGBUS, SIGTTIN, SIGTTOU, SIGTSTP);
+ 
+    --  DragonFlyBSD will uses SIGPROF for timing.  Do not allow a
+    --  handler to attach to this signal.
+    Reserved : constant Signal_Set := (0 .. 0 => SIGPROF);
+ 
+    type sigset_t is private;
+ 
+    function sigaddset
+      (set : access sigset_t;
+       sig : Signal) return int;
+    pragma Import (C, sigaddset, "sigaddset");
+ 
+    function sigdelset
+      (set : access sigset_t;
+       sig : Signal) return int;
+    pragma Import (C, sigdelset, "sigdelset");
+ 
+    function sigfillset (set : access sigset_t) return int;
+    pragma Import (C, sigfillset, "sigfillset");
+ 
+    function sigismember
+      (set : access sigset_t;
+       sig : Signal) return int;
+    pragma Import (C, sigismember, "sigismember");
+ 
+    function sigemptyset (set : access sigset_t) return int;
+    pragma Import (C, sigemptyset, "sigemptyset");
+ 
+    --  sigcontext is architecture dependent, so define it private
+    type struct_sigcontext is private;
+ 
+    type old_struct_sigaction is record
+       sa_handler : System.Address;
+       sa_mask    : sigset_t;
+       sa_flags   : int;
+    end record;
+    pragma Convention (C, old_struct_sigaction);
+ 
+    type new_struct_sigaction is record
+       sa_handler : System.Address;
+       sa_flags   : int;
+       sa_mask    : sigset_t;
+    end record;
+    pragma Convention (C, new_struct_sigaction);
+ 
+    subtype struct_sigaction is new_struct_sigaction;
+    type struct_sigaction_ptr is access all struct_sigaction;
+ 
+    SIG_BLOCK   : constant := 1;
+    SIG_UNBLOCK : constant := 2;
+    SIG_SETMASK : constant := 3;
+ 
+    SIG_DFL : constant := 0;
+    SIG_IGN : constant := 1;
+ 
+    SA_SIGINFO : constant := 16#0040#;
+    SA_ONSTACK : constant := 16#0001#;
+ 
+    function sigaction
+      (sig  : Signal;
+       act  : struct_sigaction_ptr;
+       oact : struct_sigaction_ptr) return int;
+    pragma Import (C, sigaction, "sigaction");
+ 
+    ----------
+    -- Time --
+    ----------
+ 
+    Time_Slice_Supported : constant Boolean := True;
+    --  Indicates whether time slicing is supported (i.e SCHED_RR is supported)
+ 
+    type timespec is private;
+ 
+    function nanosleep (rqtp, rmtp : access timespec)  return int;
+    pragma Import (C, nanosleep, "nanosleep");
+ 
+    type clockid_t is new unsigned_long;
+ 
+    function clock_getres
+      (clock_id : clockid_t;
+       res      : access timespec) return int;
+    pragma Import (C, clock_getres, "clock_getres");
+ 
+    function clock_gettime
+      (clock_id : clockid_t;
+       tp       : access timespec)
+       return int;
+    pragma Import (C, clock_gettime, "clock_gettime");
+ 
+    function To_Duration (TS : timespec) return Duration;
+    pragma Inline (To_Duration);
+ 
+    function To_Timespec (D : Duration) return timespec;
+    pragma Inline (To_Timespec);
+ 
+    type struct_timezone is record
+       tz_minuteswest : int;
+       tz_dsttime     : int;
+    end record;
+    pragma Convention (C, struct_timezone);
+ 
+    procedure usleep (useconds : unsigned_long);
+    pragma Import (C, usleep, "usleep");
+ 
+    -------------------------
+    -- Priority Scheduling --
+    -------------------------
+ 
+    SCHED_FIFO  : constant := 1;
+    SCHED_OTHER : constant := 2;
+    SCHED_RR    : constant := 3;
+ 
+    function To_Target_Priority
+      (Prio : System.Any_Priority) return Interfaces.C.int;
+    --  Maps System.Any_Priority to a POSIX priority
+ 
+    -------------
+    -- Process --
+    -------------
+ 
+    type pid_t is private;
+ 
+    function kill (pid : pid_t; sig : Signal) return int;
+    pragma Import (C, kill, "kill");
+ 
+    function getpid return pid_t;
+    pragma Import (C, getpid, "getpid");
+ 
+    ---------
+    -- LWP --
+    ---------
+ 
+    function lwp_self return System.Address;
+    --  lwp_self does not exist on this thread library, revert to pthread_self
+    --  which is the closest approximation (with getpid). This function is
+    --  needed to share 7staprop.adb across POSIX-like targets.
+    pragma Import (C, lwp_self, "pthread_self");
+ 
+    -------------
+    -- Threads --
+    -------------
+ 
+    type Thread_Body is access
+      function (arg : System.Address) return System.Address;
+    pragma Convention (C, Thread_Body);
+ 
+    function Thread_Body_Access is new
+      Ada.Unchecked_Conversion (System.Address, Thread_Body);
+ 
+    type pthread_t           is private;
+    subtype Thread_Id        is pthread_t;
+ 
+    type pthread_mutex_t     is limited private;
+    type pthread_cond_t      is limited private;
+    type pthread_attr_t      is limited private;
+    type pthread_mutexattr_t is limited private;
+    type pthread_condattr_t  is limited private;
+    type pthread_key_t       is private;
+ 
+    PTHREAD_CREATE_DETACHED : constant := 1;
+    PTHREAD_CREATE_JOINABLE : constant := 0;
+ 
+    PTHREAD_SCOPE_PROCESS : constant := 0;
+    PTHREAD_SCOPE_SYSTEM  : constant := 2;
+ 
+    --  Read/Write lock not supported on DragonFly. To add support both types
+    --  pthread_rwlock_t and pthread_rwlockattr_t must properly be defined
+    --  with the associated routines pthread_rwlock_[init/destroy] and
+    --  pthread_rwlock_[rdlock/wrlock/unlock].
+ 
+    subtype pthread_rwlock_t     is pthread_mutex_t;
+    subtype pthread_rwlockattr_t is pthread_mutexattr_t;
+ 
+    -----------
+    -- Stack --
+    -----------
+ 
+    type stack_t is record
+       ss_sp    : System.Address;
+       ss_size  : size_t;
+       ss_flags : int;
+    end record;
+    pragma Convention (C, stack_t);
+ 
+    function sigaltstack
+      (ss  : not null access stack_t;
+       oss : access stack_t) return int;
+    pragma Import (C, sigaltstack, "sigaltstack");
+ 
+    Alternate_Stack : aliased System.Address;
+    --  This is a dummy definition, never used (Alternate_Stack_Size is null)
+ 
+    Alternate_Stack_Size : constant := 0;
+    --  No alternate signal stack is used on this platform
+ 
+    Stack_Base_Available : constant Boolean := False;
+    --  Indicates whether the stack base is available on this target. This
+    --  allows us to share s-osinte.adb between all the FSU run time. Note that
+    --  this value can only be true if pthread_t has a complete definition that
+    --  corresponds exactly to the C header files.
+ 
+    function Get_Stack_Base (thread : pthread_t) return Address;
+    pragma Inline (Get_Stack_Base);
+    --  returns the stack base of the specified thread. Only call this function
+    --  when Stack_Base_Available is True.
+ 
+    function Get_Page_Size return int;
+    pragma Import (C, Get_Page_Size, "getpagesize");
+    --  Returns the size of a page
+ 
+    PROT_NONE  : constant := 0;
+    PROT_READ  : constant := 1;
+    PROT_WRITE : constant := 2;
+    PROT_EXEC  : constant := 4;
+    PROT_ALL   : constant := PROT_READ + PROT_WRITE + PROT_EXEC;
+    PROT_ON    : constant := PROT_NONE;
+    PROT_OFF   : constant := PROT_ALL;
+ 
+    function mprotect (addr : Address; len : size_t; prot : int) return int;
+    pragma Import (C, mprotect);
+ 
+    ---------------------------------------
+    -- Nonstandard Thread Initialization --
+    ---------------------------------------
+ 
+    --  FSU_THREADS requires pthread_init, which is nonstandard and this should
+    --  be invoked during the elaboration of s-taprop.adb.
+ 
+    --  DragonFlyBSD does not require this so we provide an empty Ada body
+ 
+    procedure pthread_init;
+ 
+    -------------------------
+    -- POSIX.1c  Section 3 --
+    -------------------------
+ 
+    function sigwait
+      (set : access sigset_t;
+       sig : access Signal) return int;
+    pragma Import (C, sigwait, "sigwait");
+ 
+    function pthread_kill
+      (thread : pthread_t;
+       sig    : Signal) return int;
+    pragma Import (C, pthread_kill, "pthread_kill");
+ 
+    function pthread_sigmask
+      (how  : int;
+       set  : access sigset_t;
+       oset : access sigset_t) return int;
+    pragma Import (C, pthread_sigmask, "pthread_sigmask");
+ 
+    --------------------------
+    -- POSIX.1c  Section 11 --
+    --------------------------
+ 
+    function pthread_mutexattr_init
+      (attr : access pthread_mutexattr_t) return int;
+    pragma Import (C, pthread_mutexattr_init, "pthread_mutexattr_init");
+ 
+    function pthread_mutexattr_destroy
+      (attr : access pthread_mutexattr_t) return int;
+    pragma Import (C, pthread_mutexattr_destroy, "pthread_mutexattr_destroy");
+ 
+    function pthread_mutex_init
+      (mutex : access pthread_mutex_t;
+       attr  : access pthread_mutexattr_t) return int;
+    pragma Import (C, pthread_mutex_init, "pthread_mutex_init");
+ 
+    function pthread_mutex_destroy (mutex : access pthread_mutex_t) return int;
+    pragma Import (C, pthread_mutex_destroy, "pthread_mutex_destroy");
+ 
+    function pthread_mutex_lock (mutex : access pthread_mutex_t) return int;
+    pragma Import (C, pthread_mutex_lock, "pthread_mutex_lock");
+ 
+    function pthread_mutex_unlock (mutex : access pthread_mutex_t) return int;
+    pragma Import (C, pthread_mutex_unlock, "pthread_mutex_unlock");
+ 
+    function pthread_condattr_init
+      (attr : access pthread_condattr_t) return int;
+    pragma Import (C, pthread_condattr_init, "pthread_condattr_init");
+ 
+    function pthread_condattr_destroy
+      (attr : access pthread_condattr_t) return int;
+    pragma Import (C, pthread_condattr_destroy, "pthread_condattr_destroy");
+ 
+    function pthread_cond_init
+      (cond : access pthread_cond_t;
+       attr : access pthread_condattr_t) return int;
+    pragma Import (C, pthread_cond_init, "pthread_cond_init");
+ 
+    function pthread_cond_destroy (cond : access pthread_cond_t) return int;
+    pragma Import (C, pthread_cond_destroy, "pthread_cond_destroy");
+ 
+    function pthread_cond_signal (cond : access pthread_cond_t) return int;
+    pragma Import (C, pthread_cond_signal, "pthread_cond_signal");
+ 
+    function pthread_cond_wait
+      (cond  : access pthread_cond_t;
+       mutex : access pthread_mutex_t) return int;
+    pragma Import (C, pthread_cond_wait, "pthread_cond_wait");
+ 
+    function pthread_cond_timedwait
+      (cond    : access pthread_cond_t;
+       mutex   : access pthread_mutex_t;
+       abstime : access timespec) return int;
+    pragma Import (C, pthread_cond_timedwait, "pthread_cond_timedwait");
+ 
+    Relative_Timed_Wait : constant Boolean := False;
+    --  pthread_cond_timedwait requires an absolute delay time
+ 
+    --------------------------
+    -- POSIX.1c  Section 13 --
+    --------------------------
+ 
+    PTHREAD_PRIO_NONE    : constant := 0;
+    PTHREAD_PRIO_PROTECT : constant := 2;
+    PTHREAD_PRIO_INHERIT : constant := 1;
+ 
+    function pthread_mutexattr_setprotocol
+      (attr     : access pthread_mutexattr_t;
+       protocol : int) return int;
+    pragma Import
+       (C, pthread_mutexattr_setprotocol, "pthread_mutexattr_setprotocol");
+ 
+    function pthread_mutexattr_getprotocol
+      (attr     : access pthread_mutexattr_t;
+       protocol : access int) return int;
+    pragma Import
+      (C, pthread_mutexattr_getprotocol, "pthread_mutexattr_getprotocol");
+ 
+    function pthread_mutexattr_setprioceiling
+      (attr     : access pthread_mutexattr_t;
+       prioceiling : int) return int;
+    pragma Import
+      (C, pthread_mutexattr_setprioceiling,
+       "pthread_mutexattr_setprioceiling");
+ 
+    function pthread_mutexattr_getprioceiling
+      (attr     : access pthread_mutexattr_t;
+       prioceiling : access int) return int;
+    pragma Import
+      (C, pthread_mutexattr_getprioceiling,
+       "pthread_mutexattr_getprioceiling");
+ 
+    type struct_sched_param is record
+       sched_priority : int;
+    end record;
+    pragma Convention (C, struct_sched_param);
+ 
+    function pthread_getschedparam
+      (thread : pthread_t;
+       policy : access int;
+       param  : access struct_sched_param) return int;
+    pragma Import (C, pthread_getschedparam, "pthread_getschedparam");
+ 
+    function pthread_setschedparam
+      (thread : pthread_t;
+       policy : int;
+       param  : access struct_sched_param) return int;
+    pragma Import (C, pthread_setschedparam, "pthread_setschedparam");
+ 
+    function pthread_attr_setscope
+      (attr            : access pthread_attr_t;
+       contentionscope : int) return int;
+    pragma Import (C, pthread_attr_setscope, "pthread_attr_setscope");
+ 
+    function pthread_attr_getscope
+      (attr            : access pthread_attr_t;
+       contentionscope : access int) return int;
+    pragma Import (C, pthread_attr_getscope, "pthread_attr_getscope");
+ 
+    function pthread_attr_setinheritsched
+      (attr            : access pthread_attr_t;
+       inheritsched : int) return int;
+    pragma Import
+      (C, pthread_attr_setinheritsched, "pthread_attr_setinheritsched");
+ 
+    function pthread_attr_getinheritsched
+      (attr         : access pthread_attr_t;
+       inheritsched : access int) return int;
+    pragma Import
+      (C, pthread_attr_getinheritsched, "pthread_attr_getinheritsched");
+ 
+    function pthread_attr_setschedpolicy
+      (attr   : access pthread_attr_t;
+       policy : int) return int;
+    pragma Import (C, pthread_attr_setschedpolicy,
+      "pthread_attr_setschedpolicy");
+ 
+    function pthread_attr_getschedpolicy
+      (attr   : access pthread_attr_t;
+       policy : access int) return int;
+    pragma Import (C, pthread_attr_getschedpolicy,
+      "pthread_attr_getschedpolicy");
+ 
+    function pthread_attr_setschedparam
+      (attr        : access pthread_attr_t;
+       sched_param : int) return int;
+    pragma Import (C, pthread_attr_setschedparam, "pthread_attr_setschedparam");
+ 
+    function pthread_attr_getschedparam
+      (attr        : access pthread_attr_t;
+       sched_param : access int) return int;
+    pragma Import (C, pthread_attr_getschedparam, "pthread_attr_getschedparam");
+ 
+    function sched_yield return int;
+    pragma Import (C, sched_yield, "pthread_yield");
+ 
+    --------------------------
+    -- P1003.1c  Section 16 --
+    --------------------------
+ 
+    function pthread_attr_init (attributes : access pthread_attr_t) return int;
+    pragma Import (C, pthread_attr_init, "pthread_attr_init");
+ 
+    function pthread_attr_destroy
+      (attributes : access pthread_attr_t) return int;
+    pragma Import (C, pthread_attr_destroy, "pthread_attr_destroy");
+ 
+    function pthread_attr_setdetachstate
+      (attr        : access pthread_attr_t;
+       detachstate : int) return int;
+    pragma Import
+      (C, pthread_attr_setdetachstate, "pthread_attr_setdetachstate");
+ 
+    function pthread_attr_getdetachstate
+      (attr        : access pthread_attr_t;
+       detachstate : access int) return int;
+    pragma Import
+      (C, pthread_attr_getdetachstate, "pthread_attr_getdetachstate");
+ 
+    function pthread_attr_getstacksize
+      (attr      : access pthread_attr_t;
+       stacksize : access size_t) return int;
+    pragma Import
+      (C, pthread_attr_getstacksize, "pthread_attr_getstacksize");
+ 
+    function pthread_attr_setstacksize
+      (attr      : access pthread_attr_t;
+       stacksize : size_t) return int;
+    pragma Import
+      (C, pthread_attr_setstacksize, "pthread_attr_setstacksize");
+ 
+    function pthread_create
+      (thread        : access pthread_t;
+       attributes    : access pthread_attr_t;
+       start_routine : Thread_Body;
+       arg           : System.Address) return int;
+    pragma Import (C, pthread_create, "pthread_create");
+ 
+    function pthread_detach (thread : pthread_t) return int;
+    pragma Import (C, pthread_detach, "pthread_detach");
+ 
+    procedure pthread_exit (status : System.Address);
+    pragma Import (C, pthread_exit, "pthread_exit");
+ 
+    function pthread_self return pthread_t;
+    pragma Import (C, pthread_self, "pthread_self");
+ 
+    --------------------------
+    -- POSIX.1c  Section 17 --
+    --------------------------
+ 
+    function pthread_setspecific
+      (key   : pthread_key_t;
+       value : System.Address) return  int;
+    pragma Import (C, pthread_setspecific, "pthread_setspecific");
+ 
+    function pthread_getspecific (key : pthread_key_t) return System.Address;
+    pragma Import (C, pthread_getspecific, "pthread_getspecific");
+ 
+    type destructor_pointer is access procedure (arg : System.Address);
+    pragma Convention (C, destructor_pointer);
+ 
+    function pthread_key_create
+      (key        : access pthread_key_t;
+       destructor : destructor_pointer) return int;
+    pragma Import (C, pthread_key_create, "pthread_key_create");
+ 
+    ------------------------------------
+    -- Non-portable Pthread Functions --
+    ------------------------------------
+ 
+    function pthread_set_name_np
+      (thread : pthread_t;
+       name   : System.Address) return int;
+    pragma Import (C, pthread_set_name_np, "pthread_set_name_np");
+ 
+ private
+ 
+    type sigset_t is array (1 .. 4) of unsigned;
+ 
+    --  In DragonFlyBSD the component sa_handler turns out to
+    --  be one a union type, and the selector is a macro:
+    --  #define sa_handler __sigaction_u._handler
+    --  #define sa_sigaction __sigaction_u._sigaction
+ 
+    --  Should we add a signal_context type here ???
+    --  How could it be done independent of the CPU architecture ???
+    --  sigcontext type is opaque, so it is architecturally neutral.
+    --  It is always passed as an access type, so define it as an empty record
+    --  since the contents are not used anywhere.
+ 
+    type struct_sigcontext is null record;
+    pragma Convention (C, struct_sigcontext);
+ 
+    type pid_t is new int;
+ 
+    type time_t is new long;
+ 
+    type timespec is record
+       ts_sec  : time_t;
+       ts_nsec : long;
+    end record;
+    pragma Convention (C, timespec);
+ 
+    type pthread_t           is new System.Address;
+    type pthread_attr_t      is new System.Address;
+    type pthread_mutex_t     is new System.Address;
+    type pthread_mutexattr_t is new System.Address;
+    type pthread_cond_t      is new System.Address;
+    type pthread_condattr_t  is new System.Address;
+    type pthread_key_t       is new int;
+ 
+ end System.OS_Interface;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-osinte__dummy.ads gcc-8.1.0/gcc/ada/libgnarl/s-osinte__dummy.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-osinte__dummy.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-osinte__dummy.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,51 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                   S Y S T E M . O S _ I N T E R F A C E                  --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --             Copyright (C) 1991-2017, Florida State University            --
+ --          Copyright (C) 1995-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is the no tasking version
+ 
+ --  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.
+ 
+ package System.OS_Interface is
+    pragma Preelaborate;
+ 
+    -------------
+    -- Signals --
+    -------------
+ 
+    Max_Interrupt : constant := 2;
+    type Signal is new Integer range 0 .. Max_Interrupt;
+ 
+    type sigset_t is new Integer;
+    type Thread_Id is new Integer;
+ 
+ end System.OS_Interface;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-osinte__freebsd.adb gcc-8.1.0/gcc/ada/libgnarl/s-osinte__freebsd.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-osinte__freebsd.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-osinte__freebsd.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,115 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                  GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                --
+ --                                                                          --
+ --                   S Y S T E M . O S _ I N T E R F A C E                  --
+ --                                                                          --
+ --                                   B o d y                                --
+ --                                                                          --
+ --          Copyright (C) 1991-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University. It is --
+ -- now maintained by Ada Core Technologies Inc. in cooperation with Florida --
+ -- State University (http://www.gnat.com).                                  --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is the FreeBSD THREADS version of this package
+ 
+ with Interfaces.C; use Interfaces.C;
+ 
+ package body System.OS_Interface is
+ 
+    -----------
+    -- Errno --
+    -----------
+ 
+    function Errno return int is
+       type int_ptr is access all int;
+ 
+       function internal_errno return int_ptr;
+       pragma Import (C, internal_errno, "__get_errno");
+ 
+    begin
+       return (internal_errno.all);
+    end Errno;
+ 
+    --------------------
+    -- Get_Stack_Base --
+    --------------------
+ 
+    function Get_Stack_Base (thread : pthread_t) return Address is
+       pragma Unreferenced (thread);
+    begin
+       return Null_Address;
+    end Get_Stack_Base;
+ 
+    ------------------
+    -- pthread_init --
+    ------------------
+ 
+    procedure pthread_init is
+    begin
+       null;
+    end pthread_init;
+ 
+    -----------------
+    -- To_Duration --
+    -----------------
+ 
+    function To_Duration (TS : timespec) return Duration is
+    begin
+       return Duration (TS.ts_sec) + Duration (TS.ts_nsec) / 10#1#E9;
+    end To_Duration;
+ 
+    ------------------------
+    -- To_Target_Priority --
+    ------------------------
+ 
+    function To_Target_Priority
+      (Prio : System.Any_Priority) return Interfaces.C.int
+    is
+    begin
+       return Interfaces.C.int (Prio);
+    end To_Target_Priority;
+ 
+    -----------------
+    -- To_Timespec --
+    -----------------
+ 
+    function To_Timespec (D : Duration) return timespec is
+       S : time_t;
+       F : Duration;
+ 
+    begin
+       S := time_t (Long_Long_Integer (D));
+       F := D - Duration (S);
+ 
+       --  If F has negative value due to a round-up, adjust for positive F
+ 
+       if F < 0.0 then
+          S := S - 1;
+          F := F + 1.0;
+       end if;
+ 
+       return timespec'(ts_sec => S,
+                        ts_nsec => long (Long_Long_Integer (F * 10#1#E9)));
+    end To_Timespec;
+ 
+ end System.OS_Interface;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-osinte__freebsd.ads gcc-8.1.0/gcc/ada/libgnarl/s-osinte__freebsd.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-osinte__freebsd.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-osinte__freebsd.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,652 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                  GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                --
+ --                                                                          --
+ --                   S Y S T E M . O S _ I N T E R F A C E                  --
+ --                                                                          --
+ --                                   S p e c                                --
+ --                                                                          --
+ --             Copyright (C) 1991-2017, Florida State University            --
+ --          Copyright (C) 1995-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University. It is --
+ -- now maintained by Ada Core Technologies Inc. in cooperation with Florida --
+ -- State University (http://www.gnat.com).                                  --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is the FreeBSD (POSIX Threads) version of this package
+ 
+ --  This package encapsulates all direct interfaces to OS services
+ --  that are needed by the tasking run-time (libgnarl).
+ 
+ --  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;
+ 
+ package System.OS_Interface is
+    pragma Preelaborate;
+ 
+    pragma Linker_Options ("-pthread");
+ 
+    subtype int            is Interfaces.C.int;
+    subtype short          is Interfaces.C.short;
+    subtype long           is Interfaces.C.long;
+    subtype unsigned       is Interfaces.C.unsigned;
+    subtype unsigned_short is Interfaces.C.unsigned_short;
+    subtype unsigned_long  is Interfaces.C.unsigned_long;
+    subtype unsigned_char  is Interfaces.C.unsigned_char;
+    subtype plain_char     is Interfaces.C.plain_char;
+    subtype size_t         is Interfaces.C.size_t;
+ 
+    -----------
+    -- Errno --
+    -----------
+ 
+    function Errno return int;
+    pragma Inline (Errno);
+ 
+    EAGAIN    : constant := 35;
+    EINTR     : constant := 4;
+    EINVAL    : constant := 22;
+    ENOMEM    : constant := 12;
+    ETIMEDOUT : constant := 60;
+ 
+    -------------
+    -- Signals --
+    -------------
+ 
+    Max_Interrupt : constant := 31;
+    type Signal is new int range 0 .. Max_Interrupt;
+    for Signal'Size use int'Size;
+ 
+    SIGHUP     : constant := 1; --  hangup
+    SIGINT     : constant := 2; --  interrupt (rubout)
+    SIGQUIT    : constant := 3; --  quit (ASCD FS)
+    SIGILL     : constant := 4; --  illegal instruction (not reset)
+    SIGTRAP    : constant := 5; --  trace trap (not reset)
+    SIGIOT     : constant := 6; --  IOT instruction
+    SIGABRT    : constant := 6; --  used by abort, replace SIGIOT in the  future
+    SIGEMT     : constant := 7; --  EMT instruction
+    SIGFPE     : constant := 8; --  floating point exception
+    SIGKILL    : constant := 9; --  kill (cannot be caught or ignored)
+    SIGBUS     : constant := 10; --  bus error
+    SIGSEGV    : constant := 11; --  segmentation violation
+    SIGSYS     : constant := 12; --  bad argument to system call
+    SIGPIPE    : constant := 13; --  write on a pipe with no one to read it
+    SIGALRM    : constant := 14; --  alarm clock
+    SIGTERM    : constant := 15; --  software termination signal from kill
+    SIGURG     : constant := 16; --  urgent condition on IO channel
+    SIGSTOP    : constant := 17; --  stop (cannot be caught or ignored)
+    SIGTSTP    : constant := 18; --  user stop requested from tty
+    SIGCONT    : constant := 19; --  stopped process has been continued
+    SIGCLD     : constant := 20; --  alias for SIGCHLD
+    SIGCHLD    : constant := 20; --  child status change
+    SIGTTIN    : constant := 21; --  background tty read attempted
+    SIGTTOU    : constant := 22; --  background tty write attempted
+    SIGIO      : constant := 23; --  I/O possible (Solaris SIGPOLL alias)
+    SIGXCPU    : constant := 24; --  CPU time limit exceeded
+    SIGXFSZ    : constant := 25; --  filesize limit exceeded
+    SIGVTALRM  : constant := 26; --  virtual timer expired
+    SIGPROF    : constant := 27; --  profiling timer expired
+    SIGWINCH   : constant := 28; --  window size change
+    SIGINFO    : constant := 29; --  information request (NetBSD/FreeBSD)
+    SIGUSR1    : constant := 30; --  user defined signal 1
+    SIGUSR2    : constant := 31; --  user defined signal 2
+ 
+    SIGADAABORT : constant := SIGABRT;
+    --  Change this if you want to use another signal for task abort.
+    --  SIGTERM might be a good one.
+ 
+    type Signal_Set is array (Natural range <>) of Signal;
+ 
+    --  Interrupts that must be unmasked at all times.  FreeBSD
+    --  pthreads will not allow an application to mask out any
+    --  interrupt needed by the threads library.
+    Unmasked : constant Signal_Set :=
+      (SIGTRAP, SIGBUS, SIGTTIN, SIGTTOU, SIGTSTP);
+ 
+    --  FreeBSD will uses SIGPROF for timing.  Do not allow a
+    --  handler to attach to this signal.
+    Reserved : constant Signal_Set := (0 .. 0 => SIGPROF);
+ 
+    type sigset_t is private;
+ 
+    function sigaddset
+      (set : access sigset_t;
+       sig : Signal) return int;
+    pragma Import (C, sigaddset, "sigaddset");
+ 
+    function sigdelset
+      (set : access sigset_t;
+       sig : Signal) return int;
+    pragma Import (C, sigdelset, "sigdelset");
+ 
+    function sigfillset (set : access sigset_t) return int;
+    pragma Import (C, sigfillset, "sigfillset");
+ 
+    function sigismember
+      (set : access sigset_t;
+       sig : Signal) return int;
+    pragma Import (C, sigismember, "sigismember");
+ 
+    function sigemptyset (set : access sigset_t) return int;
+    pragma Import (C, sigemptyset, "sigemptyset");
+ 
+    --  sigcontext is architecture dependent, so define it private
+    type struct_sigcontext is private;
+ 
+    type old_struct_sigaction is record
+       sa_handler : System.Address;
+       sa_mask    : sigset_t;
+       sa_flags   : int;
+    end record;
+    pragma Convention (C, old_struct_sigaction);
+ 
+    type new_struct_sigaction is record
+       sa_handler : System.Address;
+       sa_flags   : int;
+       sa_mask    : sigset_t;
+    end record;
+    pragma Convention (C, new_struct_sigaction);
+ 
+    subtype struct_sigaction is new_struct_sigaction;
+    type struct_sigaction_ptr is access all struct_sigaction;
+ 
+    SIG_BLOCK   : constant := 1;
+    SIG_UNBLOCK : constant := 2;
+    SIG_SETMASK : constant := 3;
+ 
+    SIG_DFL : constant := 0;
+    SIG_IGN : constant := 1;
+ 
+    SA_SIGINFO : constant := 16#0040#;
+    SA_ONSTACK : constant := 16#0001#;
+ 
+    function sigaction
+      (sig  : Signal;
+       act  : struct_sigaction_ptr;
+       oact : struct_sigaction_ptr) return int;
+    pragma Import (C, sigaction, "sigaction");
+ 
+    ----------
+    -- Time --
+    ----------
+ 
+    Time_Slice_Supported : constant Boolean := True;
+    --  Indicates whether time slicing is supported (i.e SCHED_RR is supported)
+ 
+    type timespec is private;
+ 
+    function nanosleep (rqtp, rmtp : access timespec) return int;
+    pragma Import (C, nanosleep, "nanosleep");
+ 
+    type clockid_t is new int;
+ 
+    function clock_getres
+      (clock_id : clockid_t;
+       res      : access timespec) return int;
+    pragma Import (C, clock_getres, "clock_getres");
+ 
+    function clock_gettime
+      (clock_id : clockid_t;
+       tp       : access timespec)
+       return int;
+    pragma Import (C, clock_gettime, "clock_gettime");
+ 
+    function To_Duration (TS : timespec) return Duration;
+    pragma Inline (To_Duration);
+ 
+    function To_Timespec (D : Duration) return timespec;
+    pragma Inline (To_Timespec);
+ 
+    type struct_timezone is record
+       tz_minuteswest : int;
+       tz_dsttime     : int;
+    end record;
+    pragma Convention (C, struct_timezone);
+ 
+    procedure usleep (useconds : unsigned_long);
+    pragma Import (C, usleep, "usleep");
+ 
+    -------------------------
+    -- Priority Scheduling --
+    -------------------------
+ 
+    SCHED_FIFO  : constant := 1;
+    SCHED_OTHER : constant := 2;
+    SCHED_RR    : constant := 3;
+ 
+    function To_Target_Priority
+      (Prio : System.Any_Priority) return Interfaces.C.int;
+    --  Maps System.Any_Priority to a POSIX priority
+ 
+    -------------
+    -- Process --
+    -------------
+ 
+    type pid_t is private;
+ 
+    Self_PID : constant pid_t;
+ 
+    function kill (pid : pid_t; sig : Signal) return int;
+    pragma Import (C, kill, "kill");
+ 
+    function getpid return pid_t;
+    pragma Import (C, getpid, "getpid");
+ 
+    ---------
+    -- LWP --
+    ---------
+ 
+    function lwp_self return System.Address;
+    --  lwp_self does not exist on this thread library, revert to pthread_self
+    --  which is the closest approximation (with getpid). This function is
+    --  needed to share 7staprop.adb across POSIX-like targets.
+    pragma Import (C, lwp_self, "pthread_self");
+ 
+    -------------
+    -- Threads --
+    -------------
+ 
+    type Thread_Body is access
+      function (arg : System.Address) return System.Address;
+    pragma Convention (C, Thread_Body);
+ 
+    function Thread_Body_Access is new
+      Ada.Unchecked_Conversion (System.Address, Thread_Body);
+ 
+    type pthread_t           is private;
+    subtype Thread_Id        is pthread_t;
+ 
+    type pthread_mutex_t     is limited private;
+    type pthread_cond_t      is limited private;
+    type pthread_attr_t      is limited private;
+    type pthread_mutexattr_t is limited private;
+    type pthread_condattr_t  is limited private;
+    type pthread_key_t       is private;
+ 
+    PTHREAD_CREATE_DETACHED : constant := 1;
+    PTHREAD_CREATE_JOINABLE : constant := 0;
+ 
+    PTHREAD_SCOPE_PROCESS : constant := 0;
+    PTHREAD_SCOPE_SYSTEM  : constant := 2;
+ 
+    --  Read/Write lock not supported on freebsd. To add support both types
+    --  pthread_rwlock_t and pthread_rwlockattr_t must properly be defined
+    --  with the associated routines pthread_rwlock_[init/destroy] and
+    --  pthread_rwlock_[rdlock/wrlock/unlock].
+ 
+    subtype pthread_rwlock_t     is pthread_mutex_t;
+    subtype pthread_rwlockattr_t is pthread_mutexattr_t;
+ 
+    -----------
+    -- Stack --
+    -----------
+ 
+    type stack_t is record
+       ss_sp    : System.Address;
+       ss_size  : size_t;
+       ss_flags : int;
+    end record;
+    pragma Convention (C, stack_t);
+ 
+    function sigaltstack
+      (ss  : not null access stack_t;
+       oss : access stack_t) return int;
+    pragma Import (C, sigaltstack, "sigaltstack");
+ 
+    Alternate_Stack : aliased System.Address;
+    --  This is a dummy definition, never used (Alternate_Stack_Size is null)
+ 
+    Alternate_Stack_Size : constant := 0;
+    --  No alternate signal stack is used on this platform
+ 
+    Stack_Base_Available : constant Boolean := False;
+    --  Indicates whether the stack base is available on this target
+ 
+    function Get_Stack_Base (thread : pthread_t) return Address;
+    pragma Inline (Get_Stack_Base);
+    --  returns the stack base of the specified thread. Only call this function
+    --  when Stack_Base_Available is True.
+ 
+    function Get_Page_Size return int;
+    pragma Import (C, Get_Page_Size, "getpagesize");
+    --  Returns the size of a page
+ 
+    PROT_NONE  : constant := 0;
+    PROT_READ  : constant := 1;
+    PROT_WRITE : constant := 2;
+    PROT_EXEC  : constant := 4;
+    PROT_ALL   : constant := PROT_READ + PROT_WRITE + PROT_EXEC;
+    PROT_ON    : constant := PROT_NONE;
+    PROT_OFF   : constant := PROT_ALL;
+ 
+    function mprotect (addr : Address; len : size_t; prot : int) return int;
+    pragma Import (C, mprotect);
+ 
+    ---------------------------------------
+    -- Nonstandard Thread Initialization --
+    ---------------------------------------
+ 
+    --  FSU_THREADS requires pthread_init, which is nonstandard and this should
+    --  be invoked during the elaboration of s-taprop.adb.
+ 
+    --  FreeBSD does not require this so we provide an empty Ada body
+ 
+    procedure pthread_init;
+ 
+    -------------------------
+    -- POSIX.1c  Section 3 --
+    -------------------------
+ 
+    function sigwait
+      (set : access sigset_t;
+       sig : access Signal) return int;
+    pragma Import (C, sigwait, "sigwait");
+ 
+    function pthread_kill
+      (thread : pthread_t;
+       sig    : Signal) return int;
+    pragma Import (C, pthread_kill, "pthread_kill");
+ 
+    function pthread_sigmask
+      (how  : int;
+       set  : access sigset_t;
+       oset : access sigset_t) return int;
+    pragma Import (C, pthread_sigmask, "pthread_sigmask");
+ 
+    --------------------------
+    -- POSIX.1c  Section 11 --
+    --------------------------
+ 
+    function pthread_mutexattr_init
+      (attr : access pthread_mutexattr_t) return int;
+    pragma Import (C, pthread_mutexattr_init, "pthread_mutexattr_init");
+ 
+    function pthread_mutexattr_destroy
+      (attr : access pthread_mutexattr_t) return int;
+    pragma Import (C, pthread_mutexattr_destroy, "pthread_mutexattr_destroy");
+ 
+    function pthread_mutex_init
+      (mutex : access pthread_mutex_t;
+       attr  : access pthread_mutexattr_t) return int;
+    pragma Import (C, pthread_mutex_init, "pthread_mutex_init");
+ 
+    function pthread_mutex_destroy (mutex : access pthread_mutex_t) return int;
+    pragma Import (C, pthread_mutex_destroy, "pthread_mutex_destroy");
+ 
+    function pthread_mutex_lock (mutex : access pthread_mutex_t) return int;
+    pragma Import (C, pthread_mutex_lock, "pthread_mutex_lock");
+ 
+    function pthread_mutex_unlock (mutex : access pthread_mutex_t) return int;
+    pragma Import (C, pthread_mutex_unlock, "pthread_mutex_unlock");
+ 
+    function pthread_condattr_init
+      (attr : access pthread_condattr_t) return int;
+    pragma Import (C, pthread_condattr_init, "pthread_condattr_init");
+ 
+    function pthread_condattr_destroy
+      (attr : access pthread_condattr_t) return int;
+    pragma Import (C, pthread_condattr_destroy, "pthread_condattr_destroy");
+ 
+    function pthread_cond_init
+      (cond : access pthread_cond_t;
+       attr : access pthread_condattr_t) return int;
+    pragma Import (C, pthread_cond_init, "pthread_cond_init");
+ 
+    function pthread_cond_destroy (cond : access pthread_cond_t) return int;
+    pragma Import (C, pthread_cond_destroy, "pthread_cond_destroy");
+ 
+    function pthread_cond_signal (cond : access pthread_cond_t) return int;
+    pragma Import (C, pthread_cond_signal, "pthread_cond_signal");
+ 
+    function pthread_cond_wait
+      (cond  : access pthread_cond_t;
+       mutex : access pthread_mutex_t) return int;
+    pragma Import (C, pthread_cond_wait, "pthread_cond_wait");
+ 
+    function pthread_cond_timedwait
+      (cond    : access pthread_cond_t;
+       mutex   : access pthread_mutex_t;
+       abstime : access timespec) return int;
+    pragma Import (C, pthread_cond_timedwait, "pthread_cond_timedwait");
+ 
+    Relative_Timed_Wait : constant Boolean := False;
+    --  pthread_cond_timedwait requires an absolute delay time
+ 
+    --------------------------
+    -- POSIX.1c  Section 13 --
+    --------------------------
+ 
+    PTHREAD_PRIO_NONE    : constant := 0;
+    PTHREAD_PRIO_PROTECT : constant := 2;
+    PTHREAD_PRIO_INHERIT : constant := 1;
+ 
+    function pthread_mutexattr_setprotocol
+      (attr     : access pthread_mutexattr_t;
+       protocol : int) return int;
+    pragma Import
+       (C, pthread_mutexattr_setprotocol, "pthread_mutexattr_setprotocol");
+ 
+    function pthread_mutexattr_getprotocol
+      (attr     : access pthread_mutexattr_t;
+       protocol : access int) return int;
+    pragma Import
+      (C, pthread_mutexattr_getprotocol, "pthread_mutexattr_getprotocol");
+ 
+    function pthread_mutexattr_setprioceiling
+      (attr     : access pthread_mutexattr_t;
+       prioceiling : int) return int;
+    pragma Import
+      (C, pthread_mutexattr_setprioceiling,
+       "pthread_mutexattr_setprioceiling");
+ 
+    function pthread_mutexattr_getprioceiling
+      (attr     : access pthread_mutexattr_t;
+       prioceiling : access int) return int;
+    pragma Import
+      (C, pthread_mutexattr_getprioceiling,
+       "pthread_mutexattr_getprioceiling");
+ 
+    type struct_sched_param is record
+       sched_priority : int;
+    end record;
+    pragma Convention (C, struct_sched_param);
+ 
+    function pthread_getschedparam
+      (thread : pthread_t;
+       policy : access int;
+       param  : access struct_sched_param) return int;
+    pragma Import (C, pthread_getschedparam, "pthread_getschedparam");
+ 
+    function pthread_setschedparam
+      (thread : pthread_t;
+       policy : int;
+       param  : access struct_sched_param) return int;
+    pragma Import (C, pthread_setschedparam, "pthread_setschedparam");
+ 
+    function pthread_attr_setscope
+      (attr            : access pthread_attr_t;
+       contentionscope : int) return int;
+    pragma Import (C, pthread_attr_setscope, "pthread_attr_setscope");
+ 
+    function pthread_attr_getscope
+      (attr            : access pthread_attr_t;
+       contentionscope : access int) return int;
+    pragma Import (C, pthread_attr_getscope, "pthread_attr_getscope");
+ 
+    function pthread_attr_setinheritsched
+      (attr            : access pthread_attr_t;
+       inheritsched : int) return int;
+    pragma Import
+      (C, pthread_attr_setinheritsched, "pthread_attr_setinheritsched");
+ 
+    function pthread_attr_getinheritsched
+      (attr         : access pthread_attr_t;
+       inheritsched : access int) return int;
+    pragma Import
+      (C, pthread_attr_getinheritsched, "pthread_attr_getinheritsched");
+ 
+    function pthread_attr_setschedpolicy
+      (attr   : access pthread_attr_t;
+       policy : int) return int;
+    pragma Import (C, pthread_attr_setschedpolicy,
+      "pthread_attr_setschedpolicy");
+ 
+    function pthread_attr_getschedpolicy
+      (attr   : access pthread_attr_t;
+       policy : access int) return int;
+    pragma Import (C, pthread_attr_getschedpolicy,
+      "pthread_attr_getschedpolicy");
+ 
+    function pthread_attr_setschedparam
+      (attr        : access pthread_attr_t;
+       sched_param : int) return int;
+    pragma Import (C, pthread_attr_setschedparam, "pthread_attr_setschedparam");
+ 
+    function pthread_attr_getschedparam
+      (attr        : access pthread_attr_t;
+       sched_param : access int) return int;
+    pragma Import (C, pthread_attr_getschedparam, "pthread_attr_getschedparam");
+ 
+    function sched_yield return int;
+    pragma Import (C, sched_yield, "pthread_yield");
+ 
+    --------------------------
+    -- P1003.1c  Section 16 --
+    --------------------------
+ 
+    function pthread_attr_init (attributes : access pthread_attr_t) return int;
+    pragma Import (C, pthread_attr_init, "pthread_attr_init");
+ 
+    function pthread_attr_destroy
+      (attributes : access pthread_attr_t) return int;
+    pragma Import (C, pthread_attr_destroy, "pthread_attr_destroy");
+ 
+    function pthread_attr_setdetachstate
+      (attr        : access pthread_attr_t;
+       detachstate : int) return int;
+    pragma Import
+      (C, pthread_attr_setdetachstate, "pthread_attr_setdetachstate");
+ 
+    function pthread_attr_getdetachstate
+      (attr        : access pthread_attr_t;
+       detachstate : access int) return int;
+    pragma Import
+      (C, pthread_attr_getdetachstate, "pthread_attr_getdetachstate");
+ 
+    function pthread_attr_getstacksize
+      (attr      : access pthread_attr_t;
+       stacksize : access size_t) return int;
+    pragma Import
+      (C, pthread_attr_getstacksize, "pthread_attr_getstacksize");
+ 
+    function pthread_attr_setstacksize
+      (attr      : access pthread_attr_t;
+       stacksize : size_t) return int;
+    pragma Import
+      (C, pthread_attr_setstacksize, "pthread_attr_setstacksize");
+ 
+    function pthread_create
+      (thread        : access pthread_t;
+       attributes    : access pthread_attr_t;
+       start_routine : Thread_Body;
+       arg           : System.Address) return int;
+    pragma Import (C, pthread_create, "pthread_create");
+ 
+    function pthread_detach (thread : pthread_t) return int;
+    pragma Import (C, pthread_detach, "pthread_detach");
+ 
+    procedure pthread_exit (status : System.Address);
+    pragma Import (C, pthread_exit, "pthread_exit");
+ 
+    function pthread_self return pthread_t;
+    pragma Import (C, pthread_self, "pthread_self");
+ 
+    --------------------------
+    -- POSIX.1c  Section 17 --
+    --------------------------
+ 
+    function pthread_setspecific
+      (key   : pthread_key_t;
+       value : System.Address) return  int;
+    pragma Import (C, pthread_setspecific, "pthread_setspecific");
+ 
+    function pthread_getspecific (key : pthread_key_t) return System.Address;
+    pragma Import (C, pthread_getspecific, "pthread_getspecific");
+ 
+    type destructor_pointer is access procedure (arg : System.Address);
+    pragma Convention (C, destructor_pointer);
+ 
+    function pthread_key_create
+      (key        : access pthread_key_t;
+       destructor : destructor_pointer) return int;
+    pragma Import (C, pthread_key_create, "pthread_key_create");
+ 
+    ------------------------------------
+    -- Non-portable Pthread Functions --
+    ------------------------------------
+ 
+    function pthread_set_name_np
+      (thread : pthread_t;
+       name   : System.Address) return int;
+    pragma Import (C, pthread_set_name_np, "pthread_set_name_np");
+ 
+ private
+ 
+    type sigset_t is array (1 .. 4) of unsigned;
+ 
+    --  In FreeBSD the component sa_handler turns out to
+    --  be one a union type, and the selector is a macro:
+    --  #define sa_handler __sigaction_u._handler
+    --  #define sa_sigaction __sigaction_u._sigaction
+ 
+    --  Should we add a signal_context type here ???
+    --  How could it be done independent of the CPU architecture ???
+    --  sigcontext type is opaque, so it is architecturally neutral.
+    --  It is always passed as an access type, so define it as an empty record
+    --  since the contents are not used anywhere.
+ 
+    type struct_sigcontext is null record;
+    pragma Convention (C, struct_sigcontext);
+ 
+    type pid_t is new int;
+    Self_PID : constant pid_t := 0;
+ 
+    type time_t is new long;
+ 
+    type timespec is record
+       ts_sec  : time_t;
+       ts_nsec : long;
+    end record;
+    pragma Convention (C, timespec);
+ 
+    type pthread_t           is new System.Address;
+    type pthread_attr_t      is new System.Address;
+    type pthread_mutex_t     is new System.Address;
+    type pthread_mutexattr_t is new System.Address;
+    type pthread_cond_t      is new System.Address;
+    type pthread_condattr_t  is new System.Address;
+    type pthread_key_t       is new int;
+ 
+ end System.OS_Interface;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-osinte__gnu.adb gcc-8.1.0/gcc/ada/libgnarl/s-osinte__gnu.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-osinte__gnu.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-osinte__gnu.adb	Mon Sep 11 09:18:42 2017
***************
*** 0 ****
--- 1,144 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                   S Y S T E M . O S _ I N T E R F A C E                  --
+ --                                                                          --
+ --                                   B o d y                                --
+ --                                                                          --
+ --          Copyright (C) 2015-2016, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is the GNU/Hurd version of this package.
+ 
+ pragma Polling (Off);
+ --  Turn off polling, we do not want ATC polling to take place during
+ --  tasking operations. It causes infinite loops and other problems.
+ 
+ --  This package encapsulates all direct interfaces to OS services
+ --  that are needed by children of System.
+ 
+ package body System.OS_Interface is
+ 
+    --------------------
+    -- Get_Stack_Base --
+    --------------------
+ 
+    function Get_Stack_Base (thread : pthread_t) return Address is
+       pragma Warnings (Off, thread);
+ 
+    begin
+       return Null_Address;
+    end Get_Stack_Base;
+ 
+    ------------------
+    -- pthread_init --
+    ------------------
+ 
+    procedure pthread_init is
+    begin
+       null;
+    end pthread_init;
+ 
+    --------------------------------------
+    -- pthread_mutexattr_setprioceiling --
+    --------------------------------------
+ 
+    function pthread_mutexattr_setprioceiling
+      (attr     : access pthread_mutexattr_t;
+       prioceiling : int) return int is
+       pragma Unreferenced (attr, prioceiling);
+    begin
+       return 0;
+    end pthread_mutexattr_setprioceiling;
+ 
+    --------------------------------------
+    -- pthread_mutexattr_getprioceiling --
+    --------------------------------------
+ 
+    function pthread_mutexattr_getprioceiling
+      (attr     : access pthread_mutexattr_t;
+       prioceiling : access int) return int is
+       pragma Unreferenced (attr, prioceiling);
+    begin
+       return 0;
+    end pthread_mutexattr_getprioceiling;
+ 
+    ---------------------------
+    -- pthread_setschedparam --
+    ---------------------------
+ 
+    function pthread_setschedparam
+      (thread : pthread_t;
+       policy : int;
+       param : access struct_sched_param) return int is
+       pragma Unreferenced (thread, policy, param);
+    begin
+       return 0;
+    end pthread_setschedparam;
+ 
+    -----------------
+    -- To_Duration --
+    -----------------
+ 
+    function To_Duration (TS : timespec) return Duration is
+    begin
+       return Duration (TS.tv_sec) + Duration (TS.tv_nsec) / 10#1#E9;
+    end To_Duration;
+ 
+    ------------------------
+    -- To_Target_Priority --
+    ------------------------
+ 
+    function To_Target_Priority
+      (Prio : System.Any_Priority) return Interfaces.C.int
+    is
+    begin
+       return Interfaces.C.int (Prio);
+    end To_Target_Priority;
+ 
+    -----------------
+    -- To_Timespec --
+    -----------------
+ 
+    function To_Timespec (D : Duration) return timespec is
+       S : time_t;
+       F : Duration;
+ 
+    begin
+       S := time_t (Long_Long_Integer (D));
+       F := D - Duration (S);
+ 
+       --  If F has negative value due to a round-up, adjust for positive F
+       --  value.
+ 
+       if F < 0.0 then
+          S := S - 1;
+          F := F + 1.0;
+       end if;
+ 
+       return timespec'(tv_sec => S,
+                        tv_nsec => long (Long_Long_Integer (F * 10#1#E9)));
+    end To_Timespec;
+ 
+ end System.OS_Interface;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-osinte__gnu.ads gcc-8.1.0/gcc/ada/libgnarl/s-osinte__gnu.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-osinte__gnu.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-osinte__gnu.ads	Mon Sep 11 09:18:42 2017
***************
*** 0 ****
--- 1,800 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                GNU ADA RUN-TIME LIBRARY (GNARL) COMPONENTS               --
+ --                                                                          --
+ --                   S Y S T E M . O S _ I N T E R F A C E                  --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --             Copyright (C) 1991-1994, Florida State University            --
+ --          Copyright (C) 1995-2016, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is the GNU/Hurd (POSIX Threads) version of this package
+ 
+ --  This package encapsulates all direct interfaces to OS services
+ --  that are needed by children of System.
+ 
+ --  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 Unchecked_Conversion;
+ 
+ package System.OS_Interface is
+    pragma Preelaborate;
+ 
+    pragma Linker_Options ("-lpthread");
+    pragma Linker_Options ("-lrt");
+ 
+    subtype int            is Interfaces.C.int;
+    subtype char           is Interfaces.C.char;
+    subtype short          is Interfaces.C.short;
+    subtype long           is Interfaces.C.long;
+    subtype unsigned       is Interfaces.C.unsigned;
+    subtype unsigned_short is Interfaces.C.unsigned_short;
+    subtype unsigned_long  is Interfaces.C.unsigned_long;
+    subtype unsigned_char  is Interfaces.C.unsigned_char;
+    subtype plain_char     is Interfaces.C.plain_char;
+    subtype size_t         is Interfaces.C.size_t;
+ 
+    -----------
+    -- Errno --
+    -----------
+    --  From /usr/include/i386-gnu/bits/errno.h
+ 
+    function errno return int;
+    pragma Import (C, errno, "__get_errno");
+ 
+    EAGAIN   : constant := 1073741859;
+    EINTR    : constant := 1073741828;
+    EINVAL   : constant := 1073741846;
+    ENOMEM   : constant := 1073741836;
+    EPERM    : constant := 1073741825;
+    ETIMEDOUT    : constant := 1073741884;
+ 
+    -------------
+    -- Signals --
+    -------------
+    --  From /usr/include/i386-gnu/bits/signum.h
+ 
+    Max_Interrupt : constant := 32;
+    type Signal is new int range 0 .. Max_Interrupt;
+    for Signal'Size use int'Size;
+ 
+    SIGHUP     : constant := 1; --  hangup
+    SIGINT     : constant := 2; --  interrupt (rubout)
+    SIGQUIT    : constant := 3; --  quit (ASCD FS)
+    SIGILL     : constant := 4; --  illegal instruction (not reset)
+    SIGTRAP    : constant := 5; --  trace trap (not reset)
+    SIGIOT     : constant := 6; --  IOT instruction
+    SIGABRT    : constant := 6; --  used by abort, replace SIGIOT in the  future
+    SIGEMT     : constant := 7; --  EMT instruction
+    SIGFPE     : constant := 8; --  floating point exception
+    SIGKILL    : constant := 9; --  kill (cannot be caught or ignored)
+    SIGBUS     : constant := 10; --  bus error
+    SIGSEGV    : constant := 11; --  segmentation violation
+    SIGSYS     : constant := 12; --  bad argument to system call
+    SIGPIPE    : constant := 13; --  write on a pipe with no one to read it
+    SIGALRM    : constant := 14; --  alarm clock
+    SIGTERM    : constant := 15; --  software termination signal from kill
+    SIGURG     : constant := 16; --  urgent condition on IO channel
+    SIGSTOP    : constant := 17; --  stop (cannot be caught or ignored)
+    SIGTSTP    : constant := 18; --  user stop requested from tty
+    SIGCONT    : constant := 19; --  stopped process has been continued
+    SIGCLD     : constant := 20; --  alias for SIGCHLD
+    SIGCHLD    : constant := 20; --  child status change
+    SIGTTIN    : constant := 21; --  background tty read attempted
+    SIGTTOU    : constant := 22; --  background tty write attempted
+    SIGIO      : constant := 23; --  I/O possible (Solaris SIGPOLL alias)
+    SIGPOLL    : constant := 23; --  I/O possible (same as SIGIO?)
+    SIGXCPU    : constant := 24; --  CPU time limit exceeded
+    SIGXFSZ    : constant := 25; --  filesize limit exceeded
+    SIGVTALRM  : constant := 26; --  virtual timer expired
+    SIGPROF    : constant := 27; --  profiling timer expired
+    SIGWINCH   : constant := 28; --  window size change
+    SIGINFO    : constant := 29; --  information request (NetBSD/FreeBSD)
+    SIGUSR1    : constant := 30; --  user defined signal 1
+    SIGUSR2    : constant := 31; --  user defined signal 2
+    SIGLOST    : constant := 32; --  Resource lost (Sun); server died (GNU)
+ 
+    SIGADAABORT : constant := SIGABRT;
+    --  Change this if you want to use another signal for task abort.
+    --  SIGTERM might be a good one.
+ 
+    type Signal_Set is array (Natural range <>) of Signal;
+ 
+    Unmasked    : constant Signal_Set := (
+       SIGTRAP,
+       --  To enable debugging on multithreaded applications, mark SIGTRAP to
+       --  be kept unmasked.
+ 
+       SIGBUS,
+ 
+       SIGTTIN, SIGTTOU, SIGTSTP,
+       --  Keep these three signals unmasked so that background processes
+       --  and IO behaves as normal "C" applications
+ 
+       SIGPROF,
+       --  To avoid confusing the profiler
+ 
+       SIGKILL, SIGSTOP);
+       --  These two signals actually cannot be masked;
+       --  POSIX simply won't allow it.
+ 
+    Reserved    : constant Signal_Set :=
+    --  I am not sure why the following signal is reserved.
+    --  I guess they are not supported by this version of GNU/Hurd.
+      (0 .. 0 => SIGVTALRM);
+ 
+    type sigset_t is private;
+ 
+    --  From /usr/include/signal.h /usr/include/i386-gnu/bits/sigset.h
+    function sigaddset (set : access sigset_t; sig : Signal) return int;
+    pragma Import (C, sigaddset, "sigaddset");
+ 
+    function sigdelset (set : access sigset_t; sig : Signal) return int;
+    pragma Import (C, sigdelset, "sigdelset");
+ 
+    function sigfillset (set : access sigset_t) return int;
+    pragma Import (C, sigfillset, "sigfillset");
+ 
+    function sigismember (set : access sigset_t; sig : Signal) return int;
+    pragma Import (C, sigismember, "sigismember");
+ 
+    function sigemptyset (set : access sigset_t) return int;
+    pragma Import (C, sigemptyset, "sigemptyset");
+ 
+    --  sigcontext is architecture dependent, so define it private
+    type struct_sigcontext is private;
+ 
+    --  From /usr/include/i386-gnu/bits/sigaction.h: Note: arg. order differs
+    type struct_sigaction is record
+       sa_handler : System.Address;
+       sa_mask    : sigset_t;
+       sa_flags   : int;
+    end record;
+    pragma Convention (C, struct_sigaction);
+ 
+    type struct_sigaction_ptr is access all struct_sigaction;
+ 
+    --  From /usr/include/i386-gnu/bits/sigaction.h
+    SIG_BLOCK   : constant := 1;
+    SIG_UNBLOCK : constant := 2;
+    SIG_SETMASK : constant := 3;
+ 
+    --  From /usr/include/i386-gnu/bits/signum.h
+    SIG_ERR  : constant := 1;
+    SIG_DFL  : constant := 0;
+    SIG_IGN  : constant := 1;
+    SIG_HOLD : constant := 2;
+ 
+    --  From /usr/include/i386-gnu/bits/sigaction.h
+    SA_SIGINFO : constant := 16#0040#;
+    SA_ONSTACK : constant := 16#0001#;
+ 
+    function sigaction
+      (sig  : Signal;
+       act  : struct_sigaction_ptr;
+       oact : struct_sigaction_ptr) return int;
+    pragma Import (C, sigaction, "sigaction");
+ 
+    ----------
+    -- Time --
+    ----------
+ 
+    Time_Slice_Supported : constant Boolean := True;
+    --  Indicates whether time slicing is supported (i.e SCHED_RR is supported)
+ 
+    type timespec is private;
+ 
+    function nanosleep (rqtp, rmtp : access timespec) return int;
+    pragma Import (C, nanosleep, "nanosleep");
+ 
+    type clockid_t is new int;
+    CLOCK_REALTIME : constant clockid_t := 0;
+ 
+    --  From: /usr/include/time.h
+    function clock_gettime
+      (clock_id : clockid_t;
+       tp       : access timespec)
+       return int;
+    pragma Import (C, clock_gettime, "clock_gettime");
+ 
+    function clock_getres
+      (clock_id : clockid_t;
+       res      : access timespec) return int;
+    pragma Import (C, clock_getres, "clock_getres");
+ 
+    function To_Duration (TS : timespec) return Duration;
+    pragma Inline (To_Duration);
+ 
+    function To_Timespec (D : Duration) return timespec;
+    pragma Inline (To_Timespec);
+ 
+    --  From: /usr/include/unistd.h
+    function sysconf (name : int) return long;
+    pragma Import (C, sysconf);
+ 
+    --  From /usr/include/i386-gnu/bits/confname.h
+    SC_CLK_TCK          : constant := 2;
+    SC_NPROCESSORS_ONLN : constant := 84;
+ 
+    -------------------------
+    -- Priority Scheduling --
+    -------------------------
+    --  From /usr/include/i386-gnu/bits/sched.h
+ 
+    SCHED_OTHER : constant := 0;
+    SCHED_FIFO  : constant := 1;
+    SCHED_RR    : constant := 2;
+ 
+    function To_Target_Priority
+      (Prio : System.Any_Priority) return Interfaces.C.int;
+    --  Maps System.Any_Priority to a POSIX priority.
+ 
+    -------------
+    -- Process --
+    -------------
+ 
+    type pid_t is private;
+ 
+    --  From: /usr/include/signal.h
+    function kill (pid : pid_t; sig : Signal) return int;
+    pragma Import (C, kill, "kill");
+ 
+    --  From: /usr/include/unistd.h
+    function getpid return pid_t;
+    pragma Import (C, getpid, "getpid");
+ 
+    ---------
+    -- LWP --
+    ---------
+ 
+    --  From: /usr/include/pthread/pthread.h
+    function lwp_self return System.Address;
+    --  lwp_self does not exist on this thread library, revert to pthread_self
+    --  which is the closest approximation (with getpid). This function is
+    --  needed to share 7staprop.adb across POSIX-like targets.
+    pragma Import (C, lwp_self, "pthread_self");
+ 
+    -------------
+    -- Threads --
+    -------------
+ 
+    type Thread_Body is access
+      function (arg : System.Address) return System.Address;
+    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;
+    type pthread_rwlock_t     is limited private;
+    type pthread_cond_t      is limited private;
+    type pthread_attr_t      is limited private;
+    type pthread_mutexattr_t is limited private;
+    type pthread_rwlockattr_t is limited private;
+    type pthread_condattr_t  is limited private;
+    type pthread_key_t       is private;
+ 
+    --  From /usr/include/pthread/pthreadtypes.h
+    PTHREAD_CREATE_DETACHED : constant := 1;
+    PTHREAD_CREATE_JOINABLE : constant := 0;
+ 
+    PTHREAD_SCOPE_PROCESS : constant := 1;
+    PTHREAD_SCOPE_SYSTEM  : constant := 0;
+ 
+    -----------
+    -- Stack --
+    -----------
+ 
+    --  From: /usr/include/i386-gnu/bits/sigstack.h
+    type stack_t is record
+       ss_sp    : System.Address;
+       ss_size  : size_t;
+       ss_flags : int;
+    end record;
+    pragma Convention (C, stack_t);
+ 
+    function sigaltstack
+      (ss  : not null access stack_t;
+       oss : access stack_t) return int;
+    pragma Import (C, sigaltstack, "sigaltstack");
+ 
+    Alternate_Stack : aliased System.Address;
+    --  This is a dummy definition, never used (Alternate_Stack_Size is null)
+ 
+    Alternate_Stack_Size : constant := 0;
+    --  No alternate signal stack is used on this platform
+ 
+    Stack_Base_Available : constant Boolean := False;
+    --  Indicates whether the stack base is available on this target
+ 
+    function Get_Stack_Base (thread : pthread_t) return Address;
+    pragma Inline (Get_Stack_Base);
+    --  returns the stack base of the specified thread. Only call this function
+    --  when Stack_Base_Available is True.
+ 
+    --  From: /usr/include/i386-gnu/bits/shm.h
+    function Get_Page_Size return int;
+    pragma Import (C, Get_Page_Size, "getpagesize");
+    --  Returns the size of a page
+ 
+    --  From /usr/include/i386-gnu/bits/mman.h
+    PROT_NONE  : constant := 0;
+    PROT_READ  : constant := 4;
+    PROT_WRITE : constant := 2;
+    PROT_EXEC  : constant := 1;
+    PROT_ALL   : constant := PROT_READ + PROT_WRITE + PROT_EXEC;
+    PROT_ON    : constant := PROT_NONE;
+    PROT_OFF   : constant := PROT_ALL;
+ 
+    --  From /usr/include/i386-gnu/bits/mman.h
+    function mprotect (addr : Address; len : size_t; prot : int) return int;
+    pragma Import (C, mprotect);
+ 
+    ---------------------------------------
+    -- Nonstandard Thread Initialization --
+    ---------------------------------------
+ 
+    procedure pthread_init;
+    pragma Inline (pthread_init);
+    --  This is a dummy procedure to share some GNULLI files
+ 
+    -------------------------
+    -- POSIX.1c  Section 3 --
+    -------------------------
+ 
+    --  From: /usr/include/signal.h:
+    --  sigwait (__const sigset_t *__restrict __set, int *__restrict __sig)
+    function sigwait (set : access sigset_t; sig : access Signal) return int;
+    pragma Import (C, sigwait, "sigwait");
+ 
+    --  From: /usr/include/pthread/pthread.h:
+    --  extern int pthread_kill (pthread_t thread, int signo);
+    function pthread_kill (thread : pthread_t; sig : Signal) return int;
+    pragma Import (C, pthread_kill, "pthread_kill");
+ 
+    --  From: /usr/include/i386-gnu/bits/sigthread.h
+    --  extern int pthread_sigmask (int __how, __const __sigset_t *__newmask,
+    --  __sigset_t *__oldmask) __THROW;
+    function pthread_sigmask
+      (how  : int;
+       set  : access sigset_t;
+       oset : access sigset_t) return int;
+    pragma Import (C, pthread_sigmask, "pthread_sigmask");
+ 
+    --------------------------
+    -- POSIX.1c  Section 11 --
+    --------------------------
+ 
+    --  From: /usr/include/pthread/pthread.h and
+    --  /usr/include/pthread/pthreadtypes.h
+    function pthread_mutexattr_init
+      (attr : access pthread_mutexattr_t) return int;
+    pragma Import (C, pthread_mutexattr_init, "pthread_mutexattr_init");
+ 
+    function pthread_mutexattr_destroy
+      (attr : access pthread_mutexattr_t) return int;
+    pragma Import (C, pthread_mutexattr_destroy, "pthread_mutexattr_destroy");
+ 
+    function pthread_mutex_init
+      (mutex : access pthread_mutex_t;
+       attr  : access pthread_mutexattr_t) return int;
+    pragma Import (C, pthread_mutex_init, "pthread_mutex_init");
+ 
+    function pthread_mutex_destroy (mutex : access pthread_mutex_t) return int;
+    pragma Import (C, pthread_mutex_destroy, "pthread_mutex_destroy");
+ 
+    function pthread_mutex_lock (mutex : access pthread_mutex_t) return int;
+    pragma Import (C, pthread_mutex_lock, "pthread_mutex_lock");
+ 
+    function pthread_mutex_unlock (mutex : access pthread_mutex_t) return int;
+    pragma Import (C, pthread_mutex_unlock, "pthread_mutex_unlock");
+ 
+    function pthread_rwlockattr_init
+      (attr : access pthread_rwlockattr_t) return int;
+    pragma Import (C, pthread_rwlockattr_init, "pthread_rwlockattr_init");
+ 
+    function pthread_rwlockattr_destroy
+      (attr : access pthread_rwlockattr_t) return int;
+    pragma Import (C, pthread_rwlockattr_destroy, "pthread_rwlockattr_destroy");
+    PTHREAD_RWLOCK_PREFER_READER_NP              : constant := 0;
+    PTHREAD_RWLOCK_PREFER_WRITER_NP              : constant := 1;
+    PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP : constant := 2;
+ 
+    function pthread_rwlockattr_setkind_np
+      (attr : access pthread_rwlockattr_t;
+       pref : int) return int;
+    pragma Import
+      (C, pthread_rwlockattr_setkind_np, "pthread_rwlockattr_setkind_np");
+ 
+    function pthread_rwlock_init
+      (mutex : access pthread_rwlock_t;
+       attr  : access pthread_rwlockattr_t) return int;
+    pragma Import (C, pthread_rwlock_init, "pthread_rwlock_init");
+ 
+    function pthread_rwlock_destroy
+      (mutex : access pthread_rwlock_t) return int;
+    pragma Import (C, pthread_rwlock_destroy, "pthread_rwlock_destroy");
+ 
+    function pthread_rwlock_rdlock (mutex : access pthread_rwlock_t) return int;
+    pragma Import (C, pthread_rwlock_rdlock, "pthread_rwlock_rdlock");
+ 
+    function pthread_rwlock_wrlock (mutex : access pthread_rwlock_t) return int;
+    pragma Import (C, pthread_rwlock_wrlock, "pthread_rwlock_wrlock");
+ 
+    function pthread_rwlock_unlock (mutex : access pthread_rwlock_t) return int;
+    pragma Import (C, pthread_rwlock_unlock, "pthread_rwlock_unlock");
+ 
+    function pthread_condattr_init
+      (attr : access pthread_condattr_t) return int;
+    pragma Import (C, pthread_condattr_init, "pthread_condattr_init");
+ 
+    function pthread_condattr_destroy
+      (attr : access pthread_condattr_t) return int;
+    pragma Import (C, pthread_condattr_destroy, "pthread_condattr_destroy");
+ 
+    function pthread_cond_init
+      (cond : access pthread_cond_t;
+       attr : access pthread_condattr_t) return int;
+    pragma Import (C, pthread_cond_init, "pthread_cond_init");
+ 
+    function pthread_cond_destroy (cond : access pthread_cond_t) return int;
+    pragma Import (C, pthread_cond_destroy, "pthread_cond_destroy");
+ 
+    function pthread_cond_signal (cond : access pthread_cond_t) return int;
+    pragma Import (C, pthread_cond_signal, "pthread_cond_signal");
+ 
+    function pthread_cond_wait
+      (cond  : access pthread_cond_t;
+       mutex : access pthread_mutex_t) return int;
+    pragma Import (C, pthread_cond_wait, "pthread_cond_wait");
+ 
+    function pthread_cond_timedwait
+      (cond    : access pthread_cond_t;
+       mutex   : access pthread_mutex_t;
+       abstime : access timespec) return int;
+    pragma Import (C, pthread_cond_timedwait, "pthread_cond_timedwait");
+ 
+    Relative_Timed_Wait : constant Boolean := False;
+    --  pthread_cond_timedwait requires an absolute delay time
+ 
+    --------------------------
+    -- POSIX.1c  Section 13 --
+    --------------------------
+    --  From /usr/include/pthread/pthreadtypes.h
+ 
+    PTHREAD_PRIO_NONE    : constant := 0;
+    PTHREAD_PRIO_PROTECT : constant := 2;
+    PTHREAD_PRIO_INHERIT : constant := 1;
+ 
+    --  GNU/Hurd does not support Thread Priority Protection or Thread
+    --  Priority Inheritance and lacks some pthread_mutexattr_* functions.
+    --  Replace them with dummy versions.
+    --  From: /usr/include/pthread/pthread.h
+ 
+    function pthread_mutexattr_setprotocol
+      (attr     : access pthread_mutexattr_t;
+       protocol : int) return int;
+    pragma Import (C, pthread_mutexattr_setprotocol,
+      "pthread_mutexattr_setprotocol");
+ 
+    function pthread_mutexattr_getprotocol
+      (attr     : access pthread_mutexattr_t;
+       protocol : access int) return int;
+    pragma Import (C, pthread_mutexattr_getprotocol,
+      "pthread_mutexattr_getprotocol");
+ 
+    function pthread_mutexattr_setprioceiling
+      (attr     : access pthread_mutexattr_t;
+       prioceiling : int) return int;
+ 
+    function pthread_mutexattr_getprioceiling
+      (attr     : access pthread_mutexattr_t;
+       prioceiling : access int) return int;
+ 
+    type struct_sched_param is record
+       sched_priority : int;  --  scheduling priority
+    end record;
+    pragma Convention (C, struct_sched_param);
+ 
+    function pthread_setschedparam
+      (thread : pthread_t;
+       policy : int;
+       param  : access struct_sched_param) return int;
+ 
+    function pthread_attr_setscope
+      (attr            : access pthread_attr_t;
+       contentionscope : int) return int;
+    pragma Import (C, pthread_attr_setscope, "pthread_attr_setscope");
+ 
+    function pthread_attr_getscope
+      (attr            : access pthread_attr_t;
+       contentionscope : access int) return int;
+    pragma Import (C, pthread_attr_getscope, "pthread_attr_getscope");
+ 
+    function pthread_attr_setinheritsched
+      (attr            : access pthread_attr_t;
+       inheritsched : int) return int;
+    pragma Import (C, pthread_attr_setinheritsched,
+      "pthread_attr_setinheritsched");
+ 
+    function pthread_attr_getinheritsched
+      (attr         : access pthread_attr_t;
+       inheritsched : access int) return int;
+    pragma Import (C, pthread_attr_getinheritsched,
+      "pthread_attr_getinheritsched");
+ 
+    function pthread_attr_setschedpolicy
+      (attr   : access pthread_attr_t;
+       policy : int) return int;
+    pragma Import (C, pthread_attr_setschedpolicy, "pthread_setschedpolicy");
+ 
+    function sched_yield return int;
+    pragma Import (C, sched_yield, "sched_yield");
+ 
+    ---------------------------
+    -- P1003.1c - Section 16 --
+    ---------------------------
+ 
+    function pthread_attr_init
+      (attributes : access pthread_attr_t) return int;
+    pragma Import (C, pthread_attr_init, "pthread_attr_init");
+ 
+    function pthread_attr_destroy
+      (attributes : access pthread_attr_t) return int;
+    pragma Import (C, pthread_attr_destroy, "pthread_attr_destroy");
+ 
+    function pthread_attr_setdetachstate
+      (attr        : access pthread_attr_t;
+       detachstate : int) return int;
+    pragma Import
+      (C, pthread_attr_setdetachstate, "pthread_attr_setdetachstate");
+ 
+    function pthread_attr_setstacksize
+      (attr      : access pthread_attr_t;
+       stacksize : size_t) return int;
+    pragma Import (C, pthread_attr_setstacksize, "pthread_attr_setstacksize");
+ 
+    --  From: /usr/include/pthread/pthread.h
+    function pthread_create
+      (thread        : access pthread_t;
+       attributes    : access pthread_attr_t;
+       start_routine : Thread_Body;
+       arg           : System.Address) return int;
+    pragma Import (C, pthread_create, "pthread_create");
+ 
+    procedure pthread_exit (status : System.Address);
+    pragma Import (C, pthread_exit, "pthread_exit");
+ 
+    function pthread_self return pthread_t;
+    pragma Import (C, pthread_self, "pthread_self");
+ 
+    --------------------------
+    -- POSIX.1c  Section 17 --
+    --------------------------
+ 
+    function pthread_setspecific
+      (key   : pthread_key_t;
+       value : System.Address) return int;
+    pragma Import (C, pthread_setspecific, "pthread_setspecific");
+ 
+    function pthread_getspecific (key : pthread_key_t) return System.Address;
+    pragma Import (C, pthread_getspecific, "pthread_getspecific");
+ 
+    type destructor_pointer is access procedure (arg : System.Address);
+    pragma Convention (C, destructor_pointer);
+ 
+    function pthread_key_create
+      (key        : access pthread_key_t;
+       destructor : destructor_pointer) return int;
+    pragma Import (C, pthread_key_create, "pthread_key_create");
+ 
+    --  From /usr/include/i386-gnu/bits/sched.h
+    CPU_SETSIZE : constant := 1_024;
+ 
+    type bit_field is array (1 .. CPU_SETSIZE) of Boolean;
+    for bit_field'Size use CPU_SETSIZE;
+    pragma Pack (bit_field);
+    pragma Convention (C, bit_field);
+ 
+    type cpu_set_t is record
+       bits : bit_field;
+    end record;
+    pragma Convention (C, cpu_set_t);
+ 
+ private
+ 
+    type sigset_t is array (1 .. 4) of unsigned;
+ 
+    --  In GNU/Hurd the component sa_handler turns out to
+    --  be one a union type, and the selector is a macro:
+    --  #define sa_handler __sigaction_handler.sa_handler
+    --  #define sa_sigaction __sigaction_handler.sa_sigaction
+ 
+    --  Should we add a signal_context type here ?
+    --  How could it be done independent of the CPU architecture ?
+    --  sigcontext type is opaque, so it is architecturally neutral.
+    --  It is always passed as an access type, so define it as an empty record
+    --  since the contents are not used anywhere.
+    type struct_sigcontext is null record;
+    pragma Convention (C, struct_sigcontext);
+ 
+    type pid_t is new int;
+ 
+    type time_t is new long;
+ 
+    type timespec is record
+       tv_sec  : time_t;
+       tv_nsec : long;
+    end record;
+    pragma Convention (C, timespec);
+ 
+    --  From: /usr/include/pthread/pthreadtypes.h:
+    --  typedef struct __pthread_attr pthread_attr_t;
+    --  /usr/include/i386-gnu/bits/thread-attr.h: struct __pthread_attr...
+    --  /usr/include/pthread/pthreadtypes.h: enum __pthread_contentionscope
+    --   enum __pthread_detachstate detachstate;
+    --   enum __pthread_inheritsched inheritsched;
+    --   enum __pthread_contentionscope contentionscope;
+    --   Not used: schedpolicy   : int;
+    type pthread_attr_t is record
+       schedparam    : struct_sched_param;
+       stackaddr     : System.Address;
+       stacksize     : size_t;
+       guardsize     : size_t;
+       detachstate   : int;
+       inheritsched  : int;
+       contentionscope : int;
+       schedpolicy   : int;
+    end record;
+    pragma Convention (C, pthread_attr_t);
+ 
+    --  From: /usr/include/pthread/pthreadtypes.h:
+    --  typedef struct __pthread_condattr pthread_condattr_t;
+    --  From: /usr/include/i386-gnu/bits/condition-attr.h:
+    --  struct __pthread_condattr {
+    --    enum __pthread_process_shared pshared;
+    --    __Clockid_T Clock;}
+    --  From: /usr/include/pthread/pthreadtypes.h:
+    --  enum __pthread_process_shared
+    type pthread_condattr_t is record
+       pshared : int;
+       clock   : clockid_t;
+    end record;
+    pragma Convention (C, pthread_condattr_t);
+ 
+    --  From: /usr/include/pthread/pthreadtypes.h:
+    --  typedef struct __pthread_mutexattr pthread_mutexattr_t; and
+    --  /usr/include/i386-gnu/bits/mutex-attr.h
+    --  struct __pthread_mutexattr {
+    --  int prioceiling;
+    --  enum __pthread_mutex_protocol protocol;
+    --  enum __pthread_process_shared pshared;
+    --  enum __pthread_mutex_type mutex_type;};
+    type pthread_mutexattr_t is record
+       prioceiling : int;
+       protocol    : int;
+       pshared     : int;
+       mutex_type  : int;
+    end record;
+    pragma Convention (C, pthread_mutexattr_t);
+ 
+    --  From: /usr/include/pthread/pthreadtypes.h
+    --  typedef struct __pthread_mutex pthread_mutex_t; and
+    --  /usr/include/i386-gnu/bits/mutex.h:
+    --  struct __pthread_mutex {
+    --  __pthread_spinlock_t __held;
+    --  __pthread_spinlock_t __lock;
+    --  /* in cthreads, mutex_init does not initialized the third
+    --    pointer, as such, we cannot rely on its value for anything.  */
+    --    char *cthreadscompat1;
+    --  struct __pthread *__queue;
+    --  struct __pthread_mutexattr *attr;
+    --  void *data;
+    --  /*  up to this point, we are completely compatible with cthreads
+    --    and what libc expects.  */
+    --    void *owner;
+    --  unsigned locks;
+    --  /* if null then the default attributes apply.  */
+    --    };
+ 
+    type pthread_mutex_t is record
+       held          : int;
+       lock          : int;
+       cthreadcompat : System.Address;
+       queue         : System.Address;
+       attr          : System.Address;
+       data          : System.Address;
+       owner         : System.Address;
+       locks         : unsigned;
+    end record;
+    pragma Convention (C, pthread_mutex_t);
+    --  pointer needed?
+    --  type pthread_mutex_t_ptr is access pthread_mutex_t;
+ 
+    --  From: /usr/include/pthread/pthreadtypes.h:
+    --  typedef struct __pthread_cond pthread_cond_t;
+    --  typedef struct __pthread_condattr pthread_condattr_t;
+    --  /usr/include/i386-gnu/bits/condition.h:struct __pthread_cond{}
+    --  pthread_condattr_t: see above!
+    --  /usr/include/i386-gnu/bits/condition.h:
+    --  struct __pthread_condimpl *__impl;
+ 
+    type pthread_cond_t is record
+       lock       : int;
+       queue      : System.Address;
+       condattr   : System.Address;
+       impl       : System.Address;
+       data       : System.Address;
+    end record;
+    pragma Convention (C, pthread_cond_t);
+ 
+    --  From: /usr/include/pthread/pthreadtypes.h:
+    --  typedef __pthread_key pthread_key_t; and
+    --  /usr/include/i386-gnu/bits/thread-specific.h:
+    --  typedef int __pthread_key;
+ 
+    type pthread_key_t is new int;
+ 
+    --  From: /usr/include/i386-gnu/bits/rwlock-attr.h:
+    --  struct __pthread_rwlockattr {
+    --  enum __pthread_process_shared pshared; };
+ 
+    type pthread_rwlockattr_t is record
+       pshared : int;
+    end record;
+    pragma Convention (C, pthread_rwlockattr_t);
+ 
+    --  From: /usr/include/i386-gnu/bits/rwlock.h:
+    --  struct __pthread_rwlock {
+    --  __pthread_spinlock_t __held;
+    --  __pthread_spinlock_t __lock;
+    --  int readers;
+    --  struct __pthread *readerqueue;
+    --  struct __pthread *writerqueue;
+    --  struct __pthread_rwlockattr *__attr;
+    --  void *__data; };
+ 
+    type pthread_rwlock_t is record
+       held        : int;
+       lock        : int;
+       readers     : int;
+       readerqueue : System.Address;
+       writerqueue : System.Address;
+       attr        : pthread_rwlockattr_t;
+       data        : int;
+    end record;
+    pragma Convention (C, pthread_rwlock_t);
+ 
+ end System.OS_Interface;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-osinte__hpux-dce.adb gcc-8.1.0/gcc/ada/libgnarl/s-osinte__hpux-dce.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-osinte__hpux-dce.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-osinte__hpux-dce.adb	Mon Sep 11 09:18:42 2017
***************
*** 0 ****
--- 1,498 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                   S Y S T E M . O S _ I N T E R F A C E                  --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --             Copyright (C) 1991-1994, Florida State University            --
+ --                     Copyright (C) 1995-2010, AdaCore                     --
+ --                                                                          --
+ -- GNAT is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is a DCE version of this package.
+ --  Currently HP-UX and SNI use this file
+ 
+ pragma Polling (Off);
+ --  Turn off polling, we do not want ATC polling to take place during
+ --  tasking operations. It causes infinite loops and other problems.
+ 
+ --  This package encapsulates all direct interfaces to OS services
+ --  that are needed by children of System.
+ 
+ with Interfaces.C; use Interfaces.C;
+ 
+ package body System.OS_Interface is
+ 
+    -----------------
+    -- To_Duration --
+    -----------------
+ 
+    function To_Duration (TS : timespec) return Duration is
+    begin
+       return Duration (TS.tv_sec) + Duration (TS.tv_nsec) / 10#1#E9;
+    end To_Duration;
+ 
+    -----------------
+    -- To_Timespec --
+    -----------------
+ 
+    function To_Timespec (D : Duration) return timespec is
+       S : time_t;
+       F : Duration;
+ 
+    begin
+       S := time_t (Long_Long_Integer (D));
+       F := D - Duration (S);
+ 
+       --  If F has negative value due to a round-up, adjust for positive F
+       --  value.
+       if F < 0.0 then
+          S := S - 1;
+          F := F + 1.0;
+       end if;
+ 
+       return timespec'(tv_sec => S,
+                        tv_nsec => long (Long_Long_Integer (F * 10#1#E9)));
+    end To_Timespec;
+ 
+    -------------------------
+    -- POSIX.1c  Section 3 --
+    -------------------------
+ 
+    function sigwait
+      (set : access sigset_t;
+       sig : access Signal) return int
+    is
+       Result : int;
+ 
+    begin
+       Result := sigwait (set);
+ 
+       if Result = -1 then
+          sig.all := 0;
+          return errno;
+       end if;
+ 
+       sig.all := Signal (Result);
+       return 0;
+    end sigwait;
+ 
+    --  DCE_THREADS does not have pthread_kill. Instead, we just ignore it
+ 
+    function pthread_kill (thread : pthread_t; sig : Signal) return int is
+       pragma Unreferenced (thread, sig);
+    begin
+       return 0;
+    end pthread_kill;
+ 
+    --------------------------
+    -- POSIX.1c  Section 11 --
+    --------------------------
+ 
+    --  For all following functions, DCE Threads has a non standard behavior.
+    --  It sets errno but the standard Posix requires it to be returned.
+ 
+    function pthread_mutexattr_init
+      (attr : access pthread_mutexattr_t) return int
+    is
+       function pthread_mutexattr_create
+         (attr : access pthread_mutexattr_t) return int;
+       pragma Import (C, pthread_mutexattr_create, "pthread_mutexattr_create");
+ 
+    begin
+       if pthread_mutexattr_create (attr) /= 0 then
+          return errno;
+       else
+          return 0;
+       end if;
+    end pthread_mutexattr_init;
+ 
+    function pthread_mutexattr_destroy
+      (attr : access pthread_mutexattr_t) return int
+    is
+       function pthread_mutexattr_delete
+         (attr : access pthread_mutexattr_t) return int;
+       pragma Import (C, pthread_mutexattr_delete, "pthread_mutexattr_delete");
+ 
+    begin
+       if pthread_mutexattr_delete (attr) /= 0 then
+          return errno;
+       else
+          return 0;
+       end if;
+    end pthread_mutexattr_destroy;
+ 
+    function pthread_mutex_init
+      (mutex : access pthread_mutex_t;
+       attr  : access pthread_mutexattr_t) return int
+    is
+       function pthread_mutex_init_base
+         (mutex : access pthread_mutex_t;
+          attr  : pthread_mutexattr_t) return int;
+       pragma Import (C, pthread_mutex_init_base, "pthread_mutex_init");
+ 
+    begin
+       if pthread_mutex_init_base (mutex, attr.all) /= 0 then
+          return errno;
+       else
+          return 0;
+       end if;
+    end pthread_mutex_init;
+ 
+    function pthread_mutex_destroy
+      (mutex : access pthread_mutex_t) return int
+    is
+       function pthread_mutex_destroy_base
+         (mutex : access pthread_mutex_t) return int;
+       pragma Import (C, pthread_mutex_destroy_base, "pthread_mutex_destroy");
+ 
+    begin
+       if pthread_mutex_destroy_base (mutex) /= 0 then
+          return errno;
+       else
+          return 0;
+       end if;
+    end pthread_mutex_destroy;
+ 
+    function pthread_mutex_lock
+      (mutex : access pthread_mutex_t) return int
+    is
+       function pthread_mutex_lock_base
+         (mutex : access pthread_mutex_t) return int;
+       pragma Import (C, pthread_mutex_lock_base, "pthread_mutex_lock");
+ 
+    begin
+       if pthread_mutex_lock_base (mutex) /= 0 then
+          return errno;
+       else
+          return 0;
+       end if;
+    end pthread_mutex_lock;
+ 
+    function pthread_mutex_unlock
+      (mutex : access pthread_mutex_t) return int
+    is
+       function pthread_mutex_unlock_base
+         (mutex : access pthread_mutex_t) return int;
+       pragma Import (C, pthread_mutex_unlock_base, "pthread_mutex_unlock");
+ 
+    begin
+       if pthread_mutex_unlock_base (mutex) /= 0 then
+          return errno;
+       else
+          return 0;
+       end if;
+    end pthread_mutex_unlock;
+ 
+    function pthread_condattr_init
+      (attr : access pthread_condattr_t) return int
+    is
+       function pthread_condattr_create
+         (attr : access pthread_condattr_t) return int;
+       pragma Import (C, pthread_condattr_create, "pthread_condattr_create");
+ 
+    begin
+       if pthread_condattr_create (attr) /= 0 then
+          return errno;
+       else
+          return 0;
+       end if;
+    end pthread_condattr_init;
+ 
+    function pthread_condattr_destroy
+      (attr : access pthread_condattr_t) return int
+    is
+       function pthread_condattr_delete
+         (attr : access pthread_condattr_t) return int;
+       pragma Import (C, pthread_condattr_delete, "pthread_condattr_delete");
+ 
+    begin
+       if pthread_condattr_delete (attr) /= 0 then
+          return errno;
+       else
+          return 0;
+       end if;
+    end pthread_condattr_destroy;
+ 
+    function pthread_cond_init
+      (cond : access pthread_cond_t;
+       attr : access pthread_condattr_t) return int
+    is
+       function pthread_cond_init_base
+         (cond : access pthread_cond_t;
+          attr : pthread_condattr_t) return int;
+       pragma Import (C, pthread_cond_init_base, "pthread_cond_init");
+ 
+    begin
+       if pthread_cond_init_base (cond, attr.all) /= 0 then
+          return errno;
+       else
+          return 0;
+       end if;
+    end pthread_cond_init;
+ 
+    function pthread_cond_destroy
+      (cond : access pthread_cond_t) return int
+    is
+       function pthread_cond_destroy_base
+         (cond : access pthread_cond_t) return int;
+       pragma Import (C, pthread_cond_destroy_base, "pthread_cond_destroy");
+ 
+    begin
+       if pthread_cond_destroy_base (cond) /= 0 then
+          return errno;
+       else
+          return 0;
+       end if;
+    end pthread_cond_destroy;
+ 
+    function pthread_cond_signal
+      (cond : access pthread_cond_t) return int
+    is
+       function pthread_cond_signal_base
+         (cond : access pthread_cond_t) return int;
+       pragma Import (C, pthread_cond_signal_base, "pthread_cond_signal");
+ 
+    begin
+       if pthread_cond_signal_base (cond) /= 0 then
+          return errno;
+       else
+          return 0;
+       end if;
+    end pthread_cond_signal;
+ 
+    function pthread_cond_wait
+      (cond  : access pthread_cond_t;
+       mutex : access pthread_mutex_t) return int
+    is
+       function pthread_cond_wait_base
+         (cond  : access pthread_cond_t;
+          mutex : access pthread_mutex_t) return int;
+       pragma Import (C, pthread_cond_wait_base, "pthread_cond_wait");
+ 
+    begin
+       if pthread_cond_wait_base (cond, mutex) /= 0 then
+          return errno;
+       else
+          return 0;
+       end if;
+    end pthread_cond_wait;
+ 
+    function pthread_cond_timedwait
+      (cond    : access pthread_cond_t;
+       mutex   : access pthread_mutex_t;
+       abstime : access timespec) return int
+    is
+       function pthread_cond_timedwait_base
+         (cond    : access pthread_cond_t;
+          mutex   : access pthread_mutex_t;
+          abstime : access timespec) return int;
+       pragma Import (C, pthread_cond_timedwait_base, "pthread_cond_timedwait");
+ 
+    begin
+       if pthread_cond_timedwait_base (cond, mutex, abstime) /= 0 then
+          return (if errno = EAGAIN then ETIMEDOUT else errno);
+       else
+          return 0;
+       end if;
+    end pthread_cond_timedwait;
+ 
+    ----------------------------
+    --  POSIX.1c  Section 13  --
+    ----------------------------
+ 
+    function pthread_setschedparam
+      (thread : pthread_t;
+       policy : int;
+       param  : access struct_sched_param) return int
+    is
+       function pthread_setscheduler
+         (thread   : pthread_t;
+          policy   : int;
+          priority : int) return int;
+       pragma Import (C, pthread_setscheduler, "pthread_setscheduler");
+ 
+    begin
+       if pthread_setscheduler (thread, policy, param.sched_priority) = -1 then
+          return errno;
+       else
+          return 0;
+       end if;
+    end pthread_setschedparam;
+ 
+    function sched_yield return int is
+       procedure pthread_yield;
+       pragma Import (C, pthread_yield, "pthread_yield");
+    begin
+       pthread_yield;
+       return 0;
+    end sched_yield;
+ 
+    -----------------------------
+    --  P1003.1c - Section 16  --
+    -----------------------------
+ 
+    function pthread_attr_init
+      (attributes : access pthread_attr_t) return int
+    is
+       function pthread_attr_create
+         (attributes : access pthread_attr_t) return int;
+       pragma Import (C, pthread_attr_create, "pthread_attr_create");
+ 
+    begin
+       if pthread_attr_create (attributes) /= 0 then
+          return errno;
+       else
+          return 0;
+       end if;
+    end pthread_attr_init;
+ 
+    function pthread_attr_destroy
+      (attributes : access pthread_attr_t) return int
+    is
+       function pthread_attr_delete
+         (attributes : access pthread_attr_t) return int;
+       pragma Import (C, pthread_attr_delete, "pthread_attr_delete");
+ 
+    begin
+       if pthread_attr_delete (attributes) /= 0 then
+          return errno;
+       else
+          return 0;
+       end if;
+    end pthread_attr_destroy;
+ 
+    function pthread_attr_setstacksize
+      (attr      : access pthread_attr_t;
+       stacksize : size_t) return int
+    is
+       function pthread_attr_setstacksize_base
+         (attr      : access pthread_attr_t;
+          stacksize : size_t) return int;
+       pragma Import (C, pthread_attr_setstacksize_base,
+                      "pthread_attr_setstacksize");
+ 
+    begin
+       if pthread_attr_setstacksize_base (attr, stacksize) /= 0 then
+          return errno;
+       else
+          return 0;
+       end if;
+    end pthread_attr_setstacksize;
+ 
+    function pthread_create
+      (thread        : access pthread_t;
+       attributes    : access pthread_attr_t;
+       start_routine : Thread_Body;
+       arg           : System.Address) return int
+    is
+       function pthread_create_base
+         (thread        : access pthread_t;
+          attributes    : pthread_attr_t;
+          start_routine : Thread_Body;
+          arg           : System.Address) return int;
+       pragma Import (C, pthread_create_base, "pthread_create");
+ 
+    begin
+       if pthread_create_base
+         (thread, attributes.all, start_routine, arg) /= 0
+       then
+          return errno;
+       else
+          return 0;
+       end if;
+    end pthread_create;
+ 
+    --------------------------
+    -- POSIX.1c  Section 17 --
+    --------------------------
+ 
+    function pthread_setspecific
+      (key   : pthread_key_t;
+       value : System.Address) return int
+    is
+       function pthread_setspecific_base
+         (key   : pthread_key_t;
+          value : System.Address) return int;
+       pragma Import (C, pthread_setspecific_base, "pthread_setspecific");
+ 
+    begin
+       if pthread_setspecific_base (key, value) /= 0 then
+          return errno;
+       else
+          return 0;
+       end if;
+    end pthread_setspecific;
+ 
+    function pthread_getspecific (key : pthread_key_t) return System.Address is
+       function pthread_getspecific_base
+         (key   : pthread_key_t;
+          value : access System.Address) return  int;
+       pragma Import (C, pthread_getspecific_base, "pthread_getspecific");
+       Addr : aliased System.Address;
+ 
+    begin
+       if pthread_getspecific_base (key, Addr'Access) /= 0 then
+          return System.Null_Address;
+       else
+          return Addr;
+       end if;
+    end pthread_getspecific;
+ 
+    function pthread_key_create
+      (key        : access pthread_key_t;
+       destructor : destructor_pointer) return int
+    is
+       function pthread_keycreate
+         (key        : access pthread_key_t;
+          destructor : destructor_pointer) return int;
+       pragma Import (C, pthread_keycreate, "pthread_keycreate");
+ 
+    begin
+       if pthread_keycreate (key, destructor) /= 0 then
+          return errno;
+       else
+          return 0;
+       end if;
+    end pthread_key_create;
+ 
+    function Get_Stack_Base (thread : pthread_t) return Address is
+       pragma Warnings (Off, thread);
+    begin
+       return Null_Address;
+    end Get_Stack_Base;
+ 
+    procedure pthread_init is
+    begin
+       null;
+    end pthread_init;
+ 
+    function intr_attach (sig : int; handler : isr_address) return long is
+       function c_signal (sig : int; handler : isr_address) return long;
+       pragma Import (C, c_signal, "signal");
+    begin
+       return c_signal (sig, handler);
+    end intr_attach;
+ 
+ end System.OS_Interface;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-osinte__hpux-dce.ads gcc-8.1.0/gcc/ada/libgnarl/s-osinte__hpux-dce.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-osinte__hpux-dce.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-osinte__hpux-dce.ads	Mon Sep 11 09:18:42 2017
***************
*** 0 ****
--- 1,486 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                   S Y S T E M . O S _ I N T E R F A C E                  --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --             Copyright (C) 1991-1994, Florida State University            --
+ --          Copyright (C) 1995-2012, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is the HP-UX version of this package
+ 
+ --  This package encapsulates all direct interfaces to OS services
+ --  that are needed by the tasking run-time (libgnarl).
+ 
+ --  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;
+ 
+ package System.OS_Interface is
+    pragma Preelaborate;
+ 
+    pragma Linker_Options ("-lcma");
+ 
+    subtype int            is Interfaces.C.int;
+    subtype short          is Interfaces.C.short;
+    subtype long           is Interfaces.C.long;
+    subtype unsigned       is Interfaces.C.unsigned;
+    subtype unsigned_short is Interfaces.C.unsigned_short;
+    subtype unsigned_long  is Interfaces.C.unsigned_long;
+    subtype unsigned_char  is Interfaces.C.unsigned_char;
+    subtype plain_char     is Interfaces.C.plain_char;
+    subtype size_t         is Interfaces.C.size_t;
+ 
+    -----------
+    -- Errno --
+    -----------
+ 
+    function errno return int;
+    pragma Import (C, errno, "__get_errno");
+ 
+    EAGAIN    : constant := 11;
+    EINTR     : constant := 4;
+    EINVAL    : constant := 22;
+    ENOMEM    : constant := 12;
+    ETIME     : constant := 52;
+    ETIMEDOUT : constant := 238;
+ 
+    FUNC_ERR : constant := -1;
+ 
+    -------------
+    -- Signals --
+    -------------
+ 
+    Max_Interrupt : constant := 44;
+    type Signal is new int range 0 .. Max_Interrupt;
+    for Signal'Size use int'Size;
+ 
+    SIGHUP     : constant := 1; --  hangup
+    SIGINT     : constant := 2; --  interrupt (rubout)
+    SIGQUIT    : constant := 3; --  quit (ASCD FS)
+    SIGILL     : constant := 4; --  illegal instruction (not reset)
+    SIGTRAP    : constant := 5; --  trace trap (not reset)
+    SIGIOT     : constant := 6; --  IOT instruction
+    SIGABRT    : constant := 6; --  used by abort, replace SIGIOT in the  future
+    SIGEMT     : constant := 7; --  EMT instruction
+    SIGFPE     : constant := 8; --  floating point exception
+    SIGKILL    : constant := 9; --  kill (cannot be caught or ignored)
+    SIGBUS     : constant := 10; --  bus error
+    SIGSEGV    : constant := 11; --  segmentation violation
+    SIGSYS     : constant := 12; --  bad argument to system call
+    SIGPIPE    : constant := 13; --  write on a pipe with no one to read it
+    SIGALRM    : constant := 14; --  alarm clock
+    SIGTERM    : constant := 15; --  software termination signal from kill
+    SIGUSR1    : constant := 16; --  user defined signal 1
+    SIGUSR2    : constant := 17; --  user defined signal 2
+    SIGCLD     : constant := 18; --  alias for SIGCHLD
+    SIGCHLD    : constant := 18; --  child status change
+    SIGPWR     : constant := 19; --  power-fail restart
+    SIGVTALRM  : constant := 20; --  virtual timer alarm
+    SIGPROF    : constant := 21; --  profiling timer alarm
+    SIGIO      : constant := 22; --  asynchronous I/O
+    SIGPOLL    : constant := 22; --  pollable event occurred
+    SIGWINCH   : constant := 23; --  window size change
+    SIGSTOP    : constant := 24; --  stop (cannot be caught or ignored)
+    SIGTSTP    : constant := 25; --  user stop requested from tty
+    SIGCONT    : constant := 26; --  stopped process has been continued
+    SIGTTIN    : constant := 27; --  background tty read attempted
+    SIGTTOU    : constant := 28; --  background tty write attempted
+    SIGURG     : constant := 29; --  urgent condition on IO channel
+    SIGLOST    : constant := 30; --  remote lock lost  (NFS)
+    SIGDIL     : constant := 32; --  DIL signal
+    SIGXCPU    : constant := 33; --  CPU time limit exceeded (setrlimit)
+    SIGXFSZ    : constant := 34; --  file size limit exceeded (setrlimit)
+ 
+    SIGADAABORT : constant := SIGABRT;
+    --  Note: on other targets, we usually use SIGABRT, but on HP/UX, it
+    --  appears that SIGABRT can't be used in sigwait(), so we use SIGTERM.
+ 
+    type Signal_Set is array (Natural range <>) of Signal;
+ 
+    Unmasked    : constant Signal_Set :=
+      (SIGBUS, SIGTRAP, SIGTTIN, SIGTTOU, SIGTSTP);
+ 
+    Reserved    : constant Signal_Set := (SIGKILL, SIGSTOP);
+ 
+    type sigset_t is private;
+ 
+    type isr_address is access procedure (sig : int);
+    pragma Convention (C, isr_address);
+ 
+    function intr_attach (sig : int; handler : isr_address) return long;
+ 
+    Intr_Attach_Reset : constant Boolean := True;
+    --  True if intr_attach is reset after an interrupt handler is called
+ 
+    function sigaddset (set : access sigset_t; sig : Signal) return int;
+    pragma Import (C, sigaddset, "sigaddset");
+ 
+    function sigdelset (set : access sigset_t; sig : Signal) return int;
+    pragma Import (C, sigdelset, "sigdelset");
+ 
+    function sigfillset (set : access sigset_t) return int;
+    pragma Import (C, sigfillset, "sigfillset");
+ 
+    function sigismember (set : access sigset_t; sig : Signal) return int;
+    pragma Import (C, sigismember, "sigismember");
+ 
+    function sigemptyset (set : access sigset_t) return int;
+    pragma Import (C, sigemptyset, "sigemptyset");
+ 
+    type Signal_Handler is access procedure (signo : Signal);
+ 
+    type struct_sigaction is record
+       sa_handler : System.Address;
+       sa_mask    : sigset_t;
+       sa_flags   : int;
+    end record;
+    pragma Convention (C, struct_sigaction);
+    type struct_sigaction_ptr is access all struct_sigaction;
+ 
+    SA_RESTART  : constant  := 16#40#;
+    SA_SIGINFO  : constant  := 16#10#;
+    SA_ONSTACK  : constant  := 16#01#;
+ 
+    SIG_BLOCK   : constant  := 0;
+    SIG_UNBLOCK : constant  := 1;
+    SIG_SETMASK : constant  := 2;
+ 
+    SIG_DFL : constant := 0;
+    SIG_IGN : constant := 1;
+    SIG_ERR : constant := -1;
+ 
+    function sigaction
+      (sig  : Signal;
+       act  : struct_sigaction_ptr;
+       oact : struct_sigaction_ptr) return int;
+    pragma Import (C, sigaction, "sigaction");
+ 
+    ----------
+    -- Time --
+    ----------
+ 
+    type timespec is private;
+ 
+    function nanosleep (rqtp, rmtp : access timespec) return int;
+    pragma Import (C, nanosleep);
+ 
+    type clockid_t is new int;
+ 
+    function Clock_Gettime
+      (Clock_Id : clockid_t; Tp : access timespec) return int;
+    pragma Import (C, Clock_Gettime);
+ 
+    function To_Duration (TS : timespec) return Duration;
+    pragma Inline (To_Duration);
+ 
+    function To_Timespec (D : Duration) return timespec;
+    pragma Inline (To_Timespec);
+ 
+    -------------------------
+    -- Priority Scheduling --
+    -------------------------
+ 
+    SCHED_FIFO  : constant := 0;
+    SCHED_RR    : constant := 1;
+    SCHED_OTHER : constant := 2;
+ 
+    -------------
+    -- Process --
+    -------------
+ 
+    type pid_t is private;
+ 
+    function kill (pid : pid_t; sig : Signal) return int;
+    pragma Import (C, kill, "kill");
+ 
+    function getpid return pid_t;
+    pragma Import (C, getpid, "getpid");
+ 
+    -------------
+    -- Threads --
+    -------------
+ 
+    type Thread_Body is access
+      function (arg : System.Address) return System.Address;
+    pragma Convention (C, Thread_Body);
+ 
+    function Thread_Body_Access is new
+      Ada.Unchecked_Conversion (System.Address, Thread_Body);
+ 
+    type pthread_t           is private;
+    subtype Thread_Id        is pthread_t;
+ 
+    type pthread_mutex_t     is limited private;
+    type pthread_cond_t      is limited private;
+    type pthread_attr_t      is limited private;
+    type pthread_mutexattr_t is limited private;
+    type pthread_condattr_t  is limited private;
+    type pthread_key_t       is private;
+ 
+    --  Read/Write lock not supported on HPUX. To add support both types
+    --  pthread_rwlock_t and pthread_rwlockattr_t must properly be defined
+    --  with the associated routines pthread_rwlock_[init/destroy] and
+    --  pthread_rwlock_[rdlock/wrlock/unlock].
+ 
+    subtype pthread_rwlock_t     is pthread_mutex_t;
+    subtype pthread_rwlockattr_t is pthread_mutexattr_t;
+ 
+    -----------
+    -- Stack --
+    -----------
+ 
+    function Get_Stack_Base (thread : pthread_t) return Address;
+    pragma Inline (Get_Stack_Base);
+    --  This is a dummy procedure to share some GNULLI files
+ 
+    ---------------------------------------
+    -- Nonstandard Thread Initialization --
+    ---------------------------------------
+ 
+    procedure pthread_init;
+    pragma Inline (pthread_init);
+    --  This is a dummy procedure to share some GNULLI files
+ 
+    -------------------------
+    -- POSIX.1c  Section 3 --
+    -------------------------
+ 
+    function sigwait (set : access sigset_t) return int;
+    pragma Import (C, sigwait, "cma_sigwait");
+ 
+    function sigwait
+      (set : access sigset_t;
+       sig : access Signal) return int;
+    pragma Inline (sigwait);
+    --  DCE_THREADS has a nonstandard sigwait
+ 
+    function pthread_kill
+      (thread : pthread_t;
+       sig    : Signal) return int;
+    pragma Inline (pthread_kill);
+    --  DCE_THREADS doesn't have pthread_kill
+ 
+    function pthread_sigmask
+      (how  : int;
+       set  : access sigset_t;
+       oset : access sigset_t) return int;
+    --  DCE THREADS does not have pthread_sigmask. Instead, it uses sigprocmask
+    --  to do the signal handling when the thread library is sucked in.
+    pragma Import (C, pthread_sigmask, "sigprocmask");
+ 
+    --------------------------
+    -- POSIX.1c  Section 11 --
+    --------------------------
+ 
+    function pthread_mutexattr_init
+      (attr : access pthread_mutexattr_t) return int;
+    --  DCE_THREADS has a nonstandard pthread_mutexattr_init
+ 
+    function pthread_mutexattr_destroy
+      (attr : access pthread_mutexattr_t) return int;
+    --  DCE_THREADS has a nonstandard pthread_mutexattr_destroy
+ 
+    function pthread_mutex_init
+      (mutex : access pthread_mutex_t;
+       attr  : access pthread_mutexattr_t) return int;
+    --  DCE_THREADS has a nonstandard pthread_mutex_init
+ 
+    function pthread_mutex_destroy (mutex : access pthread_mutex_t) return int;
+    --  DCE_THREADS has a nonstandard pthread_mutex_destroy
+ 
+    function pthread_mutex_lock (mutex : access pthread_mutex_t) return int;
+    pragma Inline (pthread_mutex_lock);
+    --  DCE_THREADS has nonstandard pthread_mutex_lock
+ 
+    function pthread_mutex_unlock (mutex : access pthread_mutex_t) return int;
+    pragma Inline (pthread_mutex_unlock);
+    --  DCE_THREADS has nonstandard pthread_mutex_lock
+ 
+    function pthread_condattr_init
+      (attr : access pthread_condattr_t) return int;
+    --  DCE_THREADS has nonstandard pthread_condattr_init
+ 
+    function pthread_condattr_destroy
+      (attr : access pthread_condattr_t) return int;
+    --  DCE_THREADS has nonstandard pthread_condattr_destroy
+ 
+    function pthread_cond_init
+      (cond : access pthread_cond_t;
+       attr : access pthread_condattr_t) return int;
+    --  DCE_THREADS has nonstandard pthread_cond_init
+ 
+    function pthread_cond_destroy (cond : access pthread_cond_t) return int;
+    --  DCE_THREADS has nonstandard pthread_cond_destroy
+ 
+    function pthread_cond_signal (cond : access pthread_cond_t) return int;
+    pragma Inline (pthread_cond_signal);
+    --  DCE_THREADS has nonstandard pthread_cond_signal
+ 
+    function pthread_cond_wait
+      (cond  : access pthread_cond_t;
+       mutex : access pthread_mutex_t) return int;
+    pragma Inline (pthread_cond_wait);
+    --  DCE_THREADS has a nonstandard pthread_cond_wait
+ 
+    function pthread_cond_timedwait
+      (cond    : access pthread_cond_t;
+       mutex   : access pthread_mutex_t;
+       abstime : access timespec) return int;
+    pragma Inline (pthread_cond_timedwait);
+    --  DCE_THREADS has a nonstandard pthread_cond_timedwait
+ 
+    --------------------------
+    -- POSIX.1c  Section 13 --
+    --------------------------
+ 
+    type struct_sched_param is record
+       sched_priority : int;  --  scheduling priority
+    end record;
+ 
+    function pthread_setschedparam
+      (thread : pthread_t;
+       policy : int;
+       param  : access struct_sched_param) return int;
+    pragma Inline (pthread_setschedparam);
+    --  DCE_THREADS has a nonstandard pthread_setschedparam
+ 
+    function sched_yield return int;
+    pragma Inline (sched_yield);
+    --  DCE_THREADS has a nonstandard sched_yield
+ 
+    ---------------------------
+    -- P1003.1c - Section 16 --
+    ---------------------------
+ 
+    function pthread_attr_init (attributes : access pthread_attr_t) return int;
+    pragma Inline (pthread_attr_init);
+    --  DCE_THREADS has a nonstandard pthread_attr_init
+ 
+    function pthread_attr_destroy
+      (attributes : access pthread_attr_t) return int;
+    pragma Inline (pthread_attr_destroy);
+    --  DCE_THREADS has a nonstandard pthread_attr_destroy
+ 
+    function pthread_attr_setstacksize
+      (attr      : access pthread_attr_t;
+       stacksize : size_t) return int;
+    pragma Inline (pthread_attr_setstacksize);
+    --  DCE_THREADS has a nonstandard pthread_attr_setstacksize
+ 
+    function pthread_create
+      (thread        : access pthread_t;
+       attributes    : access pthread_attr_t;
+       start_routine : Thread_Body;
+       arg           : System.Address) return int;
+    pragma Inline (pthread_create);
+    --  DCE_THREADS has a nonstandard pthread_create
+ 
+    procedure pthread_detach (thread : access pthread_t);
+    pragma Import (C, pthread_detach);
+ 
+    procedure pthread_exit (status : System.Address);
+    pragma Import (C, pthread_exit, "pthread_exit");
+ 
+    function pthread_self return pthread_t;
+    pragma Import (C, pthread_self, "pthread_self");
+ 
+    --------------------------
+    -- POSIX.1c  Section 17 --
+    --------------------------
+ 
+    function pthread_setspecific
+      (key   : pthread_key_t;
+       value : System.Address) return int;
+    pragma Inline (pthread_setspecific);
+    --  DCE_THREADS has a nonstandard pthread_setspecific
+ 
+    function pthread_getspecific (key : pthread_key_t) return System.Address;
+    pragma Inline (pthread_getspecific);
+    --  DCE_THREADS has a nonstandard pthread_getspecific
+ 
+    type destructor_pointer is access procedure (arg : System.Address);
+    pragma Convention (C, destructor_pointer);
+ 
+    function pthread_key_create
+      (key        : access pthread_key_t;
+       destructor : destructor_pointer) return int;
+    pragma Inline (pthread_key_create);
+    --  DCE_THREADS has a nonstandard pthread_key_create
+ 
+ private
+ 
+    type array_type_1 is array (Integer range 0 .. 7) of unsigned_long;
+    type sigset_t is record
+       X_X_sigbits : array_type_1;
+    end record;
+    pragma Convention (C, sigset_t);
+ 
+    type pid_t is new int;
+ 
+    type time_t is new long;
+ 
+    type timespec is record
+       tv_sec  : time_t;
+       tv_nsec : long;
+    end record;
+    pragma Convention (C, timespec);
+ 
+    CLOCK_REALTIME : constant clockid_t := 1;
+ 
+    type cma_t_address is new System.Address;
+ 
+    type cma_t_handle is record
+       field1 : cma_t_address;
+       field2 : Short_Integer;
+       field3 : Short_Integer;
+    end record;
+    for cma_t_handle'Size use 64;
+ 
+    type pthread_attr_t is new cma_t_handle;
+    pragma Convention (C_Pass_By_Copy, pthread_attr_t);
+ 
+    type pthread_condattr_t is new cma_t_handle;
+    pragma Convention (C_Pass_By_Copy, pthread_condattr_t);
+ 
+    type pthread_mutexattr_t is new cma_t_handle;
+    pragma Convention (C_Pass_By_Copy, pthread_mutexattr_t);
+ 
+    type pthread_t is new cma_t_handle;
+    pragma Convention (C_Pass_By_Copy, pthread_t);
+ 
+    type pthread_mutex_t is new cma_t_handle;
+    pragma Convention (C_Pass_By_Copy, pthread_mutex_t);
+ 
+    type pthread_cond_t is new cma_t_handle;
+    pragma Convention (C_Pass_By_Copy, pthread_cond_t);
+ 
+    type pthread_key_t is new int;
+ 
+ end System.OS_Interface;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-osinte__hpux.ads gcc-8.1.0/gcc/ada/libgnarl/s-osinte__hpux.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-osinte__hpux.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-osinte__hpux.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,571 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                   S Y S T E M . O S _ I N T E R F A C E                  --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --               Copyright (C) 1991-2017, Florida State University          --
+ --            Copyright (C) 1995-2018, Free Software Foundation, Inc.       --
+ --                                                                          --
+ -- GNAT is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is a HPUX 11.0 (Native THREADS) version of this package
+ 
+ --  This package encapsulates all direct interfaces to OS services that are
+ --  needed by the tasking run-time (libgnarl).
+ 
+ --  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;
+ 
+ package System.OS_Interface is
+    pragma Preelaborate;
+ 
+    pragma Linker_Options ("-lpthread");
+ 
+    subtype int            is Interfaces.C.int;
+    subtype short          is Interfaces.C.short;
+    subtype long           is Interfaces.C.long;
+    subtype unsigned       is Interfaces.C.unsigned;
+    subtype unsigned_short is Interfaces.C.unsigned_short;
+    subtype unsigned_long  is Interfaces.C.unsigned_long;
+    subtype unsigned_char  is Interfaces.C.unsigned_char;
+    subtype plain_char     is Interfaces.C.plain_char;
+    subtype size_t         is Interfaces.C.size_t;
+ 
+    -----------
+    -- Errno --
+    -----------
+ 
+    function errno return int;
+    pragma Import (C, errno, "__get_errno");
+ 
+    EAGAIN    : constant := 11;
+    EINTR     : constant := 4;
+    EINVAL    : constant := 22;
+    ENOMEM    : constant := 12;
+    ETIMEDOUT : constant := 238;
+ 
+    -------------
+    -- Signals --
+    -------------
+ 
+    Max_Interrupt : constant := 44;
+    type Signal is new int range 0 .. Max_Interrupt;
+    for Signal'Size use int'Size;
+ 
+    SIGHUP     : constant := 1; --  hangup
+    SIGINT     : constant := 2; --  interrupt (rubout)
+    SIGQUIT    : constant := 3; --  quit (ASCD FS)
+    SIGILL     : constant := 4; --  illegal instruction (not reset)
+    SIGTRAP    : constant := 5; --  trace trap (not reset)
+    SIGIOT     : constant := 6; --  IOT instruction
+    SIGABRT    : constant := 6; --  used by abort, replace SIGIOT in the future
+    SIGEMT     : constant := 7; --  EMT instruction
+    SIGFPE     : constant := 8; --  floating point exception
+    SIGKILL    : constant := 9; --  kill (cannot be caught or ignored)
+    SIGBUS     : constant := 10; --  bus error
+    SIGSEGV    : constant := 11; --  segmentation violation
+    SIGSYS     : constant := 12; --  bad argument to system call
+    SIGPIPE    : constant := 13; --  write on a pipe with no one to read it
+    SIGALRM    : constant := 14; --  alarm clock
+    SIGTERM    : constant := 15; --  software termination signal from kill
+    SIGUSR1    : constant := 16; --  user defined signal 1
+    SIGUSR2    : constant := 17; --  user defined signal 2
+    SIGCLD     : constant := 18; --  alias for SIGCHLD
+    SIGCHLD    : constant := 18; --  child status change
+    SIGPWR     : constant := 19; --  power-fail restart
+    SIGVTALRM  : constant := 20; --  virtual timer alarm
+    SIGPROF    : constant := 21; --  profiling timer alarm
+    SIGIO      : constant := 22; --  asynchronous I/O
+    SIGPOLL    : constant := 22; --  pollable event occurred
+    SIGWINCH   : constant := 23; --  window size change
+    SIGSTOP    : constant := 24; --  stop (cannot be caught or ignored)
+    SIGTSTP    : constant := 25; --  user stop requested from tty
+    SIGCONT    : constant := 26; --  stopped process has been continued
+    SIGTTIN    : constant := 27; --  background tty read attempted
+    SIGTTOU    : constant := 28; --  background tty write attempted
+    SIGURG     : constant := 29; --  urgent condition on IO channel
+    SIGLOST    : constant := 30; --  remote lock lost  (NFS)
+    SIGDIL     : constant := 32; --  DIL signal
+    SIGXCPU    : constant := 33; --  CPU time limit exceeded (setrlimit)
+    SIGXFSZ    : constant := 34; --  file size limit exceeded (setrlimit)
+    SIGCANCEL  : constant := 35; --  used for pthread cancellation.
+    SIGGFAULT  : constant := 36; --  Graphics framebuffer fault
+ 
+    SIGADAABORT : constant := SIGABRT;
+    --  Note: on other targets, we usually use SIGABRT, but on HPUX, it
+    --  appears that SIGABRT can't be used in sigwait(), so we use SIGTERM.
+    --  Do we use SIGTERM or SIGABRT???
+ 
+    type Signal_Set is array (Natural range <>) of Signal;
+ 
+    Unmasked    : constant Signal_Set :=
+      (SIGABRT, SIGPIPE, SIGBUS, SIGTRAP, SIGTTIN, SIGTTOU, SIGTSTP, SIGPROF,
+       SIGALRM, SIGVTALRM, SIGIO, SIGCHLD);
+ 
+    Reserved    : constant Signal_Set := (SIGKILL, SIGSTOP);
+ 
+    type sigset_t is private;
+ 
+    function sigaddset (set : access sigset_t; sig : Signal) return int;
+    pragma Import (C, sigaddset, "sigaddset");
+ 
+    function sigdelset (set : access sigset_t; sig : Signal) return int;
+    pragma Import (C, sigdelset, "sigdelset");
+ 
+    function sigfillset (set : access sigset_t) return int;
+    pragma Import (C, sigfillset, "sigfillset");
+ 
+    function sigismember (set : access sigset_t; sig : Signal) return int;
+    pragma Import (C, sigismember, "sigismember");
+ 
+    function sigemptyset (set : access sigset_t) return int;
+    pragma Import (C, sigemptyset, "sigemptyset");
+ 
+    type struct_sigaction is record
+       sa_handler : System.Address;
+       sa_mask    : sigset_t;
+       sa_flags   : int;
+    end record;
+    pragma Convention (C, struct_sigaction);
+    type struct_sigaction_ptr is access all struct_sigaction;
+ 
+    SA_SIGINFO : constant := 16#10#;
+    SA_ONSTACK : constant := 16#01#;
+ 
+    SIG_BLOCK   : constant := 0;
+    SIG_UNBLOCK : constant := 1;
+    SIG_SETMASK : constant := 2;
+ 
+    SIG_DFL : constant := 0;
+    SIG_IGN : constant := 1;
+ 
+    function sigaction
+      (sig  : Signal;
+       act  : struct_sigaction_ptr;
+       oact : struct_sigaction_ptr) return int;
+    pragma Import (C, sigaction, "sigaction");
+ 
+    ----------
+    -- Time --
+    ----------
+ 
+    Time_Slice_Supported : constant Boolean := True;
+    --  Indicates whether time slicing is supported
+ 
+    type timespec is private;
+ 
+    type clockid_t is new int;
+ 
+    function clock_gettime
+      (clock_id : clockid_t;
+       tp       : access timespec) return int;
+    pragma Import (C, clock_gettime, "clock_gettime");
+ 
+    function clock_getres
+      (clock_id : clockid_t;
+       res      : access timespec) return int;
+    pragma Import (C, clock_getres, "clock_getres");
+ 
+    function To_Duration (TS : timespec) return Duration;
+    pragma Inline (To_Duration);
+ 
+    function To_Timespec (D : Duration) return timespec;
+    pragma Inline (To_Timespec);
+ 
+    type struct_timezone is record
+       tz_minuteswest : int;
+       tz_dsttime     : int;
+    end record;
+    pragma Convention (C, struct_timezone);
+    type struct_timezone_ptr is access all struct_timezone;
+ 
+    -------------------------
+    -- Priority Scheduling --
+    -------------------------
+ 
+    SCHED_FIFO  : constant := 0;
+    SCHED_RR    : constant := 1;
+    SCHED_OTHER : constant := 2;
+ 
+    function To_Target_Priority
+      (Prio : System.Any_Priority) return Interfaces.C.int;
+    --  Maps System.Any_Priority to a POSIX priority
+ 
+    -------------
+    -- Process --
+    -------------
+ 
+    type pid_t is private;
+ 
+    function kill (pid : pid_t; sig : Signal) return int;
+    pragma Import (C, kill, "kill");
+ 
+    function getpid return pid_t;
+    pragma Import (C, getpid, "getpid");
+ 
+    ---------
+    -- LWP --
+    ---------
+ 
+    function lwp_self return System.Address;
+    pragma Import (C, lwp_self, "_lwp_self");
+ 
+    -------------
+    -- Threads --
+    -------------
+ 
+    type Thread_Body is access
+      function (arg : System.Address) return System.Address;
+    pragma Convention (C, Thread_Body);
+ 
+    function Thread_Body_Access is new
+      Ada.Unchecked_Conversion (System.Address, Thread_Body);
+ 
+    type pthread_t           is private;
+    subtype Thread_Id        is pthread_t;
+ 
+    type pthread_mutex_t     is limited private;
+    type pthread_cond_t      is limited private;
+    type pthread_attr_t      is limited private;
+    type pthread_mutexattr_t is limited private;
+    type pthread_condattr_t  is limited private;
+    type pthread_key_t       is private;
+ 
+    PTHREAD_CREATE_DETACHED : constant := 16#de#;
+ 
+    PTHREAD_SCOPE_PROCESS : constant := 2;
+    PTHREAD_SCOPE_SYSTEM  : constant := 1;
+ 
+    --  Read/Write lock not supported on HPUX. To add support both types
+    --  pthread_rwlock_t and pthread_rwlockattr_t must properly be defined
+    --  with the associated routines pthread_rwlock_[init/destroy] and
+    --  pthread_rwlock_[rdlock/wrlock/unlock].
+ 
+    subtype pthread_rwlock_t     is pthread_mutex_t;
+    subtype pthread_rwlockattr_t is pthread_mutexattr_t;
+ 
+    -----------
+    -- Stack --
+    -----------
+ 
+    type stack_t is record
+       ss_sp    : System.Address;
+       ss_flags : int;
+       ss_size  : size_t;
+    end record;
+    pragma Convention (C, stack_t);
+ 
+    function sigaltstack
+      (ss  : not null access stack_t;
+       oss : access stack_t) return int;
+    pragma Import (C, sigaltstack, "sigaltstack");
+ 
+    Alternate_Stack : aliased System.Address;
+    pragma Import (C, Alternate_Stack, "__gnat_alternate_stack");
+    --  The alternate signal stack for stack overflows
+ 
+    Alternate_Stack_Size : constant := 128 * 1024;
+    --  This must be in keeping with init.c:__gnat_alternate_stack
+ 
+    Stack_Base_Available : constant Boolean := False;
+    --  Indicates whether the stack base is available on this target
+ 
+    function Get_Stack_Base (thread : pthread_t) return Address;
+    pragma Inline (Get_Stack_Base);
+    --  Returns the stack base of the specified thread. Only call this function
+    --  when Stack_Base_Available is True.
+ 
+    function Get_Page_Size return int;
+    pragma Import (C, Get_Page_Size, "getpagesize");
+    --  Returns the size of a page
+ 
+    PROT_NONE  : constant := 0;
+    PROT_READ  : constant := 1;
+    PROT_WRITE : constant := 2;
+    PROT_EXEC  : constant := 4;
+    PROT_ALL   : constant := PROT_READ + PROT_WRITE + PROT_EXEC;
+    PROT_ON    : constant := PROT_READ;
+    PROT_OFF   : constant := PROT_ALL;
+ 
+    function mprotect (addr : Address; len : size_t; prot : int) return int;
+    pragma Import (C, mprotect);
+ 
+    ---------------------------------------
+    -- Nonstandard Thread Initialization --
+    ---------------------------------------
+ 
+    procedure pthread_init;
+    pragma Inline (pthread_init);
+    --  This is a dummy procedure to share some GNULLI files
+ 
+    -------------------------
+    -- POSIX.1c  Section 3 --
+    -------------------------
+ 
+    function sigwait
+      (set : access sigset_t;
+       sig : access Signal) return int;
+    pragma Import (C, sigwait, "sigwait");
+ 
+    function pthread_kill
+      (thread : pthread_t;
+       sig    : Signal) return int;
+    pragma Import (C, pthread_kill, "pthread_kill");
+ 
+    function pthread_sigmask
+      (how  : int;
+       set  : access sigset_t;
+       oset : access sigset_t) return int;
+    pragma Import (C, pthread_sigmask, "pthread_sigmask");
+ 
+    --------------------------
+    -- POSIX.1c  Section 11 --
+    --------------------------
+ 
+    function pthread_mutexattr_init
+      (attr : access pthread_mutexattr_t) return int;
+    pragma Import (C, pthread_mutexattr_init, "pthread_mutexattr_init");
+ 
+    function pthread_mutexattr_destroy
+      (attr : access pthread_mutexattr_t) return int;
+    pragma Import (C, pthread_mutexattr_destroy, "pthread_mutexattr_destroy");
+ 
+    function pthread_mutex_init
+      (mutex : access pthread_mutex_t;
+       attr  : access pthread_mutexattr_t) return int;
+    pragma Import (C, pthread_mutex_init, "pthread_mutex_init");
+ 
+    function pthread_mutex_destroy (mutex : access pthread_mutex_t) return int;
+    pragma Import (C, pthread_mutex_destroy, "pthread_mutex_destroy");
+ 
+    function pthread_mutex_lock (mutex : access pthread_mutex_t) return int;
+    pragma Import (C, pthread_mutex_lock, "pthread_mutex_lock");
+ 
+    function pthread_mutex_unlock (mutex : access pthread_mutex_t) return int;
+    pragma Import (C, pthread_mutex_unlock, "pthread_mutex_unlock");
+ 
+    function pthread_condattr_init
+      (attr : access pthread_condattr_t) return int;
+    pragma Import (C, pthread_condattr_init, "pthread_condattr_init");
+ 
+    function pthread_condattr_destroy
+      (attr : access pthread_condattr_t) return int;
+    pragma Import (C, pthread_condattr_destroy, "pthread_condattr_destroy");
+ 
+    function pthread_cond_init
+      (cond : access pthread_cond_t;
+       attr : access pthread_condattr_t) return int;
+    pragma Import (C, pthread_cond_init, "pthread_cond_init");
+ 
+    function pthread_cond_destroy (cond : access pthread_cond_t) return int;
+    pragma Import (C, pthread_cond_destroy, "pthread_cond_destroy");
+ 
+    function pthread_cond_signal (cond : access pthread_cond_t) return int;
+    pragma Import (C, pthread_cond_signal, "pthread_cond_signal");
+ 
+    function pthread_cond_wait
+      (cond  : access pthread_cond_t;
+       mutex : access pthread_mutex_t) return int;
+    pragma Import (C, pthread_cond_wait, "pthread_cond_wait");
+ 
+    function pthread_cond_timedwait
+      (cond    : access pthread_cond_t;
+       mutex   : access pthread_mutex_t;
+       abstime : access timespec) return int;
+    pragma Import (C, pthread_cond_timedwait, "pthread_cond_timedwait");
+ 
+    Relative_Timed_Wait : constant Boolean := False;
+    --  pthread_cond_timedwait requires an absolute delay time
+ 
+    --------------------------
+    -- POSIX.1c  Section 13 --
+    --------------------------
+ 
+    PTHREAD_PRIO_NONE    : constant := 16#100#;
+    PTHREAD_PRIO_PROTECT : constant := 16#200#;
+    PTHREAD_PRIO_INHERIT : constant := 16#400#;
+ 
+    function pthread_mutexattr_setprotocol
+      (attr     : access pthread_mutexattr_t;
+       protocol : int) return int;
+    pragma Import (C, pthread_mutexattr_setprotocol);
+ 
+    function pthread_mutexattr_setprioceiling
+      (attr     : access pthread_mutexattr_t;
+       prioceiling : int) return int;
+    pragma Import (C, pthread_mutexattr_setprioceiling);
+ 
+    type Array_7_Int is array (0 .. 6) of int;
+    type struct_sched_param is record
+       sched_priority : int;
+       sched_reserved : Array_7_Int;
+    end record;
+ 
+    function pthread_setschedparam
+      (thread : pthread_t;
+       policy : int;
+       param  : access struct_sched_param)
+      return int;
+    pragma Import (C, pthread_setschedparam, "pthread_setschedparam");
+ 
+    function pthread_attr_setscope
+      (attr            : access pthread_attr_t;
+       contentionscope : int) return int;
+    pragma Import (C, pthread_attr_setscope, "pthread_attr_setscope");
+ 
+    function pthread_attr_setinheritsched
+      (attr         : access pthread_attr_t;
+       inheritsched : int) return int;
+    pragma Import (C, pthread_attr_setinheritsched);
+ 
+    function pthread_attr_setschedpolicy
+      (attr   : access pthread_attr_t;
+       policy : int) return int;
+    pragma Import (C, pthread_attr_setschedpolicy);
+ 
+    function sched_yield return int;
+    pragma Import (C, sched_yield, "sched_yield");
+ 
+    --------------------------
+    -- P1003.1c  Section 16 --
+    --------------------------
+ 
+    function pthread_attr_init
+      (attributes : access pthread_attr_t) return int;
+    pragma Import (C, pthread_attr_init, "__pthread_attr_init_system");
+ 
+    function pthread_attr_destroy
+      (attributes : access pthread_attr_t) return int;
+    pragma Import (C, pthread_attr_destroy, "pthread_attr_destroy");
+ 
+    function pthread_attr_setdetachstate
+      (attr        : access pthread_attr_t;
+       detachstate : int) return int;
+    pragma Import (C, pthread_attr_setdetachstate);
+ 
+    function pthread_attr_setstacksize
+      (attr      : access pthread_attr_t;
+       stacksize : size_t) return int;
+    pragma Import (C, pthread_attr_setstacksize, "pthread_attr_setstacksize");
+ 
+    function pthread_create
+      (thread        : access pthread_t;
+       attributes    : access pthread_attr_t;
+       start_routine : Thread_Body;
+       arg           : System.Address) return int;
+    pragma Import (C, pthread_create, "__pthread_create_system");
+ 
+    procedure pthread_exit (status : System.Address);
+    pragma Import (C, pthread_exit, "pthread_exit");
+ 
+    function pthread_self return pthread_t;
+    pragma Import (C, pthread_self, "pthread_self");
+ 
+    --------------------------
+    -- POSIX.1c  Section 17 --
+    --------------------------
+ 
+    function pthread_setspecific
+      (key   : pthread_key_t;
+       value : System.Address) return int;
+    pragma Import (C, pthread_setspecific, "pthread_setspecific");
+ 
+    function pthread_getspecific (key : pthread_key_t) return System.Address;
+    pragma Import (C, pthread_getspecific, "pthread_getspecific");
+ 
+    type destructor_pointer is access procedure (arg : System.Address);
+    pragma Convention (C, destructor_pointer);
+ 
+    function pthread_key_create
+      (key        : access pthread_key_t;
+       destructor : destructor_pointer) return int;
+    pragma Import (C, pthread_key_create, "pthread_key_create");
+ 
+ private
+ 
+    type unsigned_int_array_8 is array (0 .. 7) of unsigned;
+    type sigset_t is record
+       sigset : unsigned_int_array_8;
+    end record;
+    pragma Convention (C_Pass_By_Copy, sigset_t);
+ 
+    type pid_t is new int;
+ 
+    type time_t is new long;
+ 
+    type timespec is record
+       tv_sec  : time_t;
+       tv_nsec : long;
+    end record;
+    pragma Convention (C, timespec);
+ 
+    type pthread_attr_t is new int;
+    type pthread_condattr_t is new int;
+    type pthread_mutexattr_t is new int;
+    type pthread_t is new int;
+ 
+    type short_array is array (Natural range <>) of short;
+    type int_array is array (Natural range <>) of int;
+ 
+    type pthread_mutex_t is record
+       m_short : short_array (0 .. 1);
+       m_int   : int;
+       m_int1  : int_array (0 .. 3);
+       m_pad   : int;
+ 
+       m_ptr : int;
+       --  actually m_ptr is a void*, and on 32 bit ABI, m_pad is added so that
+       --  this field takes 64 bits. On 64 bit ABI, m_pad is gone, and m_ptr is
+       --  a 64 bit void*. Assume int'Size = 32.
+ 
+       m_int2   : int_array (0 .. 1);
+       m_int3   : int_array (0 .. 3);
+       m_short2 : short_array (0 .. 1);
+       m_int4   : int_array (0 .. 4);
+       m_int5   : int_array (0 .. 1);
+    end record;
+    for pthread_mutex_t'Alignment use System.Address'Alignment;
+    pragma Convention (C, pthread_mutex_t);
+ 
+    type pthread_cond_t is record
+       c_short : short_array (0 .. 1);
+       c_int   : int;
+       c_int1  : int_array (0 .. 3);
+       m_pad   : int;
+       m_ptr   : int;  --  see comment in pthread_mutex_t
+       c_int2  : int_array (0 .. 1);
+       c_int3  : int_array (0 .. 1);
+       c_int4  : int_array (0 .. 1);
+    end record;
+    for pthread_cond_t'Alignment use System.Address'Alignment;
+    pragma Convention (C, pthread_cond_t);
+ 
+    type pthread_key_t is new int;
+ 
+ end System.OS_Interface;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-osinte__kfreebsd-gnu.ads gcc-8.1.0/gcc/ada/libgnarl/s-osinte__kfreebsd-gnu.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-osinte__kfreebsd-gnu.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-osinte__kfreebsd-gnu.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,659 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                GNU ADA RUN-TIME LIBRARY (GNARL) COMPONENTS               --
+ --                                                                          --
+ --                   S Y S T E M . O S _ I N T E R F A C E                  --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --               Copyright (C) 1991-1994, Florida State University          --
+ --            Copyright (C) 1995-2018, Free Software Foundation, Inc.       --
+ --                                                                          --
+ -- GNAT is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is the GNU/kFreeBSD (POSIX Threads) version of this package
+ 
+ --  This package encapsulates all direct interfaces to OS services
+ --  that are needed by children of System.
+ 
+ --  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 Unchecked_Conversion;
+ 
+ package System.OS_Interface is
+    pragma Preelaborate;
+ 
+    pragma Linker_Options ("-lpthread");
+ 
+    subtype int            is Interfaces.C.int;
+    subtype char           is Interfaces.C.char;
+    subtype short          is Interfaces.C.short;
+    subtype long           is Interfaces.C.long;
+    subtype unsigned       is Interfaces.C.unsigned;
+    subtype unsigned_short is Interfaces.C.unsigned_short;
+    subtype unsigned_long  is Interfaces.C.unsigned_long;
+    subtype unsigned_char  is Interfaces.C.unsigned_char;
+    subtype plain_char     is Interfaces.C.plain_char;
+    subtype size_t         is Interfaces.C.size_t;
+ 
+    -----------
+    -- Errno --
+    -----------
+ 
+    function errno return int;
+    pragma Import (C, errno, "__get_errno");
+ 
+    EAGAIN   : constant := 35;
+    EINTR    : constant := 4;
+    EINVAL   : constant := 22;
+    ENOMEM   : constant := 12;
+    EPERM    : constant := 1;
+    ETIMEDOUT    : constant := 60;
+ 
+    -------------
+    -- Signals --
+    -------------
+ 
+    Max_Interrupt : constant := 128;
+    type Signal is new int range 0 .. Max_Interrupt;
+    for Signal'Size use int'Size;
+ 
+    SIGHUP     : constant := 1; --  hangup
+    SIGINT     : constant := 2; --  interrupt (rubout)
+    SIGQUIT    : constant := 3; --  quit (ASCD FS)
+    SIGILL     : constant := 4; --  illegal instruction (not reset)
+    SIGTRAP    : constant := 5; --  trace trap (not reset)
+    SIGIOT     : constant := 6; --  IOT instruction
+    SIGABRT    : constant := 6; --  used by abort, replace SIGIOT in the  future
+    SIGEMT     : constant := 7; --  EMT instruction
+    SIGFPE     : constant := 8; --  floating point exception
+    SIGKILL    : constant := 9; --  kill (cannot be caught or ignored)
+    SIGBUS     : constant := 10; --  bus error
+    SIGSEGV    : constant := 11; --  segmentation violation
+    SIGSYS     : constant := 12; --  bad argument to system call
+    SIGPIPE    : constant := 13; --  write on a pipe with no one to read it
+    SIGALRM    : constant := 14; --  alarm clock
+    SIGTERM    : constant := 15; --  software termination signal from kill
+    SIGURG     : constant := 16; --  urgent condition on IO channel
+    SIGSTOP    : constant := 17; --  stop (cannot be caught or ignored)
+    SIGTSTP    : constant := 18; --  user stop requested from tty
+    SIGCONT    : constant := 19; --  stopped process has been continued
+    SIGCLD     : constant := 20; --  alias for SIGCHLD
+    SIGCHLD    : constant := 20; --  child status change
+    SIGTTIN    : constant := 21; --  background tty read attempted
+    SIGTTOU    : constant := 22; --  background tty write attempted
+    SIGIO      : constant := 23; --  I/O possible (Solaris SIGPOLL alias)
+    SIGXCPU    : constant := 24; --  CPU time limit exceeded
+    SIGXFSZ    : constant := 25; --  filesize limit exceeded
+    SIGVTALRM  : constant := 26; --  virtual timer expired
+    SIGPROF    : constant := 27; --  profiling timer expired
+    SIGWINCH   : constant := 28; --  window size change
+    SIGINFO    : constant := 29; --  information request (NetBSD/FreeBSD)
+    SIGUSR1    : constant := 30; --  user defined signal 1
+    SIGUSR2    : constant := 31; --  user defined signal 2
+    SIGLTHRRES : constant := 32; --  GNU/LinuxThreads restart signal
+    SIGLTHRCAN : constant := 33; --  GNU/LinuxThreads cancel signal
+    SIGLTHRDBG : constant := 34; --  GNU/LinuxThreads debugger signal
+ 
+    SIGADAABORT : constant := SIGABRT;
+    --  Change this if you want to use another signal for task abort.
+    --  SIGTERM might be a good one.
+ 
+    type Signal_Set is array (Natural range <>) of Signal;
+ 
+    Unmasked    : constant Signal_Set := (
+       SIGTRAP,
+       --  To enable debugging on multithreaded applications, mark SIGTRAP to
+       --  be kept unmasked.
+ 
+       SIGBUS,
+ 
+       SIGTTIN, SIGTTOU, SIGTSTP,
+       --  Keep these three signals unmasked so that background processes
+       --  and IO behaves as normal "C" applications
+ 
+       SIGPROF,
+       --  To avoid confusing the profiler
+ 
+       SIGKILL, SIGSTOP,
+       --  These two signals actually cannot be masked;
+       --  POSIX simply won't allow it.
+ 
+       SIGLTHRRES, SIGLTHRCAN, SIGLTHRDBG);
+       --  These three signals are used by GNU/LinuxThreads starting from
+       --  glibc 2.1 (future 2.2).
+ 
+    Reserved    : constant Signal_Set :=
+    --  I am not sure why the following signal is reserved.
+    --  I guess they are not supported by this version of GNU/kFreeBSD.
+      (0 .. 0 => SIGVTALRM);
+ 
+    type sigset_t is private;
+ 
+    function sigaddset (set : access sigset_t; sig : Signal) return int;
+    pragma Import (C, sigaddset, "sigaddset");
+ 
+    function sigdelset (set : access sigset_t; sig : Signal) return int;
+    pragma Import (C, sigdelset, "sigdelset");
+ 
+    function sigfillset (set : access sigset_t) return int;
+    pragma Import (C, sigfillset, "sigfillset");
+ 
+    function sigismember (set : access sigset_t; sig : Signal) return int;
+    pragma Import (C, sigismember, "sigismember");
+ 
+    function sigemptyset (set : access sigset_t) return int;
+    pragma Import (C, sigemptyset, "sigemptyset");
+ 
+    --  sigcontext is architecture dependent, so define it private
+    type struct_sigcontext is private;
+ 
+    type struct_sigaction is record
+       sa_handler : System.Address;
+       sa_flags   : int;
+       sa_mask    : sigset_t;
+    end record;
+    pragma Convention (C, struct_sigaction);
+ 
+    type struct_sigaction_ptr is access all struct_sigaction;
+ 
+    SIG_BLOCK   : constant := 1;
+    SIG_UNBLOCK : constant := 2;
+    SIG_SETMASK : constant := 3;
+ 
+    SIG_DFL : constant := 0;
+    SIG_IGN : constant := 1;
+ 
+    SA_SIGINFO : constant := 16#0040#;
+    SA_ONSTACK : constant := 16#0001#;
+ 
+    function sigaction
+      (sig  : Signal;
+       act  : struct_sigaction_ptr;
+       oact : struct_sigaction_ptr) return int;
+    pragma Import (C, sigaction, "sigaction");
+ 
+    ----------
+    -- Time --
+    ----------
+ 
+    Time_Slice_Supported : constant Boolean := True;
+    --  Indicates whether time slicing is supported (i.e SCHED_RR is supported)
+ 
+    type timespec is private;
+ 
+    function nanosleep (rqtp, rmtp : access timespec) return int;
+    pragma Import (C, nanosleep, "nanosleep");
+ 
+    type clockid_t is private;
+ 
+    CLOCK_REALTIME : constant clockid_t;
+ 
+    function clock_gettime
+      (clock_id : clockid_t;
+       tp       : access timespec)
+       return int;
+    pragma Import (C, clock_gettime, "clock_gettime");
+ 
+    function clock_getres
+      (clock_id : clockid_t;
+       res      : access timespec) return int;
+    pragma Import (C, clock_getres, "clock_getres");
+ 
+    function To_Duration (TS : timespec) return Duration;
+    pragma Inline (To_Duration);
+ 
+    function To_Timespec (D : Duration) return timespec;
+    pragma Inline (To_Timespec);
+ 
+    function sysconf (name : int) return long;
+    pragma Import (C, sysconf);
+ 
+    SC_CLK_TCK          : constant := 2;
+    SC_NPROCESSORS_ONLN : constant := 84;
+ 
+    -------------------------
+    -- Priority Scheduling --
+    -------------------------
+ 
+    SCHED_FIFO  : constant := 1;
+    SCHED_OTHER : constant := 2;
+    SCHED_RR    : constant := 3;
+ 
+    function To_Target_Priority
+      (Prio : System.Any_Priority) return Interfaces.C.int;
+    --  Maps System.Any_Priority to a POSIX priority.
+ 
+    -------------
+    -- Process --
+    -------------
+ 
+    type pid_t is private;
+ 
+    function kill (pid : pid_t; sig : Signal) return int;
+    pragma Import (C, kill, "kill");
+ 
+    function getpid return pid_t;
+    pragma Import (C, getpid, "getpid");
+ 
+    ---------
+    -- LWP --
+    ---------
+ 
+    function lwp_self return System.Address;
+    --  lwp_self does not exist on this thread library, revert to pthread_self
+    --  which is the closest approximation (with getpid). This function is
+    --  needed to share 7staprop.adb across POSIX-like targets.
+    pragma Import (C, lwp_self, "pthread_self");
+ 
+    -------------
+    -- Threads --
+    -------------
+ 
+    type Thread_Body is access
+      function (arg : System.Address) return System.Address;
+    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;
+    type pthread_cond_t      is limited private;
+    type pthread_attr_t      is limited private;
+    type pthread_mutexattr_t is limited private;
+    type pthread_condattr_t  is limited private;
+    type pthread_key_t       is private;
+ 
+    PTHREAD_CREATE_DETACHED : constant := 1;
+    PTHREAD_CREATE_JOINABLE : constant := 0;
+ 
+    PTHREAD_SCOPE_PROCESS : constant := 0;
+    PTHREAD_SCOPE_SYSTEM  : constant := 2;
+ 
+    --  Read/Write lock not supported on kfreebsd. To add support both types
+    --  pthread_rwlock_t and pthread_rwlockattr_t must properly be defined
+    --  with the associated routines pthread_rwlock_[init/destroy] and
+    --  pthread_rwlock_[rdlock/wrlock/unlock].
+ 
+    subtype pthread_rwlock_t     is pthread_mutex_t;
+    subtype pthread_rwlockattr_t is pthread_mutexattr_t;
+ 
+    -----------
+    -- Stack --
+    -----------
+ 
+    type stack_t is record
+       ss_sp    : System.Address;
+       ss_size  : size_t;
+       ss_flags : int;
+    end record;
+    pragma Convention (C, stack_t);
+ 
+    function sigaltstack
+      (ss  : not null access stack_t;
+       oss : access stack_t) return int;
+    pragma Import (C, sigaltstack, "sigaltstack");
+ 
+    Alternate_Stack : aliased System.Address;
+    --  This is a dummy definition, never used (Alternate_Stack_Size is null)
+ 
+    Alternate_Stack_Size : constant := 0;
+    --  No alternate signal stack is used on this platform
+ 
+    Stack_Base_Available : constant Boolean := False;
+    --  Indicates whether the stack base is available on this target
+ 
+    function Get_Stack_Base (thread : pthread_t) return Address;
+    pragma Inline (Get_Stack_Base);
+    --  returns the stack base of the specified thread. Only call this function
+    --  when Stack_Base_Available is True.
+ 
+    function Get_Page_Size return int;
+    pragma Import (C, Get_Page_Size, "getpagesize");
+    --  Returns the size of a page
+ 
+    PROT_NONE  : constant := 0;
+    PROT_READ  : constant := 1;
+    PROT_WRITE : constant := 2;
+    PROT_EXEC  : constant := 4;
+    PROT_ALL   : constant := PROT_READ + PROT_WRITE + PROT_EXEC;
+    PROT_ON    : constant := PROT_NONE;
+    PROT_OFF   : constant := PROT_ALL;
+ 
+    function mprotect (addr : Address; len : size_t; prot : int) return int;
+    pragma Import (C, mprotect);
+ 
+    ---------------------------------------
+    -- Nonstandard Thread Initialization --
+    ---------------------------------------
+ 
+    procedure pthread_init;
+    pragma Inline (pthread_init);
+    --  This is a dummy procedure to share some GNULLI files
+ 
+    -------------------------
+    -- POSIX.1c  Section 3 --
+    -------------------------
+ 
+    function sigwait (set : access sigset_t; sig : access Signal) return int;
+    pragma Import (C, sigwait, "sigwait");
+ 
+    function pthread_kill (thread : pthread_t; sig : Signal) return int;
+    pragma Import (C, pthread_kill, "pthread_kill");
+ 
+    function pthread_sigmask
+      (how  : int;
+       set  : access sigset_t;
+       oset : access sigset_t) return int;
+    pragma Import (C, pthread_sigmask, "pthread_sigmask");
+ 
+    --------------------------
+    -- POSIX.1c  Section 11 --
+    --------------------------
+ 
+    function pthread_mutexattr_init
+      (attr : access pthread_mutexattr_t) return int;
+    pragma Import (C, pthread_mutexattr_init, "pthread_mutexattr_init");
+ 
+    function pthread_mutexattr_destroy
+      (attr : access pthread_mutexattr_t) return int;
+    pragma Import (C, pthread_mutexattr_destroy, "pthread_mutexattr_destroy");
+ 
+    function pthread_mutex_init
+      (mutex : access pthread_mutex_t;
+       attr  : access pthread_mutexattr_t) return int;
+    pragma Import (C, pthread_mutex_init, "pthread_mutex_init");
+ 
+    function pthread_mutex_destroy (mutex : access pthread_mutex_t) return int;
+    pragma Import (C, pthread_mutex_destroy, "pthread_mutex_destroy");
+ 
+    function pthread_mutex_lock (mutex : access pthread_mutex_t) return int;
+    pragma Import (C, pthread_mutex_lock, "pthread_mutex_lock");
+ 
+    function pthread_mutex_unlock (mutex : access pthread_mutex_t) return int;
+    pragma Import (C, pthread_mutex_unlock, "pthread_mutex_unlock");
+ 
+    function pthread_condattr_init
+      (attr : access pthread_condattr_t) return int;
+    pragma Import (C, pthread_condattr_init, "pthread_condattr_init");
+ 
+    function pthread_condattr_destroy
+      (attr : access pthread_condattr_t) return int;
+    pragma Import (C, pthread_condattr_destroy, "pthread_condattr_destroy");
+ 
+    function pthread_cond_init
+      (cond : access pthread_cond_t;
+       attr : access pthread_condattr_t) return int;
+    pragma Import (C, pthread_cond_init, "pthread_cond_init");
+ 
+    function pthread_cond_destroy (cond : access pthread_cond_t) return int;
+    pragma Import (C, pthread_cond_destroy, "pthread_cond_destroy");
+ 
+    function pthread_cond_signal (cond : access pthread_cond_t) return int;
+    pragma Import (C, pthread_cond_signal, "pthread_cond_signal");
+ 
+    function pthread_cond_wait
+      (cond  : access pthread_cond_t;
+       mutex : access pthread_mutex_t) return int;
+    pragma Import (C, pthread_cond_wait, "pthread_cond_wait");
+ 
+    function pthread_cond_timedwait
+      (cond    : access pthread_cond_t;
+       mutex   : access pthread_mutex_t;
+       abstime : access timespec) return int;
+    pragma Import (C, pthread_cond_timedwait, "pthread_cond_timedwait");
+ 
+    Relative_Timed_Wait : constant Boolean := False;
+    --  pthread_cond_timedwait requires an absolute delay time
+ 
+    --------------------------
+    -- POSIX.1c  Section 13 --
+    --------------------------
+ 
+    PTHREAD_PRIO_NONE    : constant := 0;
+    PTHREAD_PRIO_PROTECT : constant := 2;
+    PTHREAD_PRIO_INHERIT : constant := 1;
+ 
+    function pthread_mutexattr_setprotocol
+      (attr     : access pthread_mutexattr_t;
+       protocol : int) return int;
+    pragma Import
+       (C, pthread_mutexattr_setprotocol, "pthread_mutexattr_setprotocol");
+ 
+    function pthread_mutexattr_getprotocol
+      (attr     : access pthread_mutexattr_t;
+       protocol : access int) return int;
+    pragma Import
+      (C, pthread_mutexattr_getprotocol, "pthread_mutexattr_getprotocol");
+ 
+    function pthread_mutexattr_setprioceiling
+      (attr     : access pthread_mutexattr_t;
+       prioceiling : int) return int;
+    pragma Import
+      (C, pthread_mutexattr_setprioceiling,
+       "pthread_mutexattr_setprioceiling");
+ 
+    function pthread_mutexattr_getprioceiling
+      (attr     : access pthread_mutexattr_t;
+       prioceiling : access int) return int;
+    pragma Import
+      (C, pthread_mutexattr_getprioceiling,
+       "pthread_mutexattr_getprioceiling");
+ 
+    type struct_sched_param is record
+       sched_priority : int;  --  scheduling priority
+    end record;
+    pragma Convention (C, struct_sched_param);
+ 
+    function pthread_setschedparam
+      (thread : pthread_t;
+       policy : int;
+       param  : access struct_sched_param) return int;
+    pragma Import (C, pthread_setschedparam, "pthread_setschedparam");
+ 
+    function pthread_attr_setscope
+      (attr            : access pthread_attr_t;
+       contentionscope : int) return int;
+    pragma Import (C, pthread_attr_setscope, "pthread_attr_setscope");
+ 
+    function pthread_attr_getscope
+      (attr            : access pthread_attr_t;
+       contentionscope : access int) return int;
+    pragma Import (C, pthread_attr_getscope, "pthread_attr_getscope");
+ 
+    function pthread_attr_setinheritsched
+      (attr            : access pthread_attr_t;
+       inheritsched : int) return int;
+    pragma Import
+      (C, pthread_attr_setinheritsched, "pthread_attr_setinheritsched");
+ 
+    function pthread_attr_getinheritsched
+      (attr         : access pthread_attr_t;
+       inheritsched : access int) return int;
+    pragma Import
+      (C, pthread_attr_getinheritsched, "pthread_attr_getinheritsched");
+ 
+    function pthread_attr_setschedpolicy
+      (attr   : access pthread_attr_t;
+       policy : int) return int;
+    pragma Import
+      (C, pthread_attr_setschedpolicy, "pthread_attr_setschedpolicy");
+ 
+    function sched_yield return int;
+    pragma Import (C, sched_yield, "sched_yield");
+ 
+    ---------------------------
+    -- P1003.1c - Section 16 --
+    ---------------------------
+ 
+    function pthread_attr_init
+      (attributes : access pthread_attr_t) return int;
+    pragma Import (C, pthread_attr_init, "pthread_attr_init");
+ 
+    function pthread_attr_destroy
+      (attributes : access pthread_attr_t) return int;
+    pragma Import (C, pthread_attr_destroy, "pthread_attr_destroy");
+ 
+    function pthread_attr_setdetachstate
+      (attr        : access pthread_attr_t;
+       detachstate : int) return int;
+    pragma Import
+      (C, pthread_attr_setdetachstate, "pthread_attr_setdetachstate");
+ 
+    function pthread_attr_setstacksize
+      (attr      : access pthread_attr_t;
+       stacksize : size_t) return int;
+    pragma Import (C, pthread_attr_setstacksize, "pthread_attr_setstacksize");
+ 
+    function pthread_create
+      (thread        : access pthread_t;
+       attributes    : access pthread_attr_t;
+       start_routine : Thread_Body;
+       arg           : System.Address) return int;
+    pragma Import (C, pthread_create, "pthread_create");
+ 
+    procedure pthread_exit (status : System.Address);
+    pragma Import (C, pthread_exit, "pthread_exit");
+ 
+    function pthread_self return pthread_t;
+    pragma Import (C, pthread_self, "pthread_self");
+ 
+    --------------------------
+    -- POSIX.1c  Section 17 --
+    --------------------------
+ 
+    function pthread_setspecific
+      (key   : pthread_key_t;
+       value : System.Address) return int;
+    pragma Import (C, pthread_setspecific, "pthread_setspecific");
+ 
+    function pthread_getspecific (key : pthread_key_t) return System.Address;
+    pragma Import (C, pthread_getspecific, "pthread_getspecific");
+ 
+    type destructor_pointer is access procedure (arg : System.Address);
+    pragma Convention (C, destructor_pointer);
+ 
+    function pthread_key_create
+      (key        : access pthread_key_t;
+       destructor : destructor_pointer) return int;
+    pragma Import (C, pthread_key_create, "pthread_key_create");
+ 
+    CPU_SETSIZE : constant := 1_024;
+ 
+    type bit_field is array (1 .. CPU_SETSIZE) of Boolean;
+    for bit_field'Size use CPU_SETSIZE;
+    pragma Pack (bit_field);
+    pragma Convention (C, bit_field);
+ 
+    type cpu_set_t is record
+       bits : bit_field;
+    end record;
+    pragma Convention (C, cpu_set_t);
+ 
+    function pthread_setaffinity_np
+      (thread     : pthread_t;
+       cpusetsize : size_t;
+       cpuset     : access cpu_set_t) return int;
+    pragma Import (C, pthread_setaffinity_np, "__gnat_pthread_setaffinity_np");
+ 
+ private
+ 
+    type sigset_t is array (1 .. 4) of unsigned;
+ 
+    --  In FreeBSD the component sa_handler turns out to
+    --  be one a union type, and the selector is a macro:
+    --  #define sa_handler __sigaction_u._handler
+    --  #define sa_sigaction __sigaction_u._sigaction
+ 
+    --  Should we add a signal_context type here ?
+    --  How could it be done independent of the CPU architecture ?
+    --  sigcontext type is opaque, so it is architecturally neutral.
+    --  It is always passed as an access type, so define it as an empty record
+    --  since the contents are not used anywhere.
+    type struct_sigcontext is null record;
+    pragma Convention (C, struct_sigcontext);
+ 
+    type pid_t is new int;
+ 
+    type time_t is new long;
+ 
+    type timespec is record
+       tv_sec  : time_t;
+       tv_nsec : long;
+    end record;
+    pragma Convention (C, timespec);
+ 
+    type clockid_t is new int;
+    CLOCK_REALTIME : constant clockid_t := 0;
+ 
+    type pthread_attr_t is record
+       detachstate   : int;
+       schedpolicy   : int;
+       schedparam    : struct_sched_param;
+       inheritsched  : int;
+       scope         : int;
+       guardsize     : size_t;
+       stackaddr_set : int;
+       stackaddr     : System.Address;
+       stacksize     : size_t;
+    end record;
+    pragma Convention (C, pthread_attr_t);
+ 
+    type pthread_condattr_t is record
+       dummy : int;
+    end record;
+    pragma Convention (C, pthread_condattr_t);
+ 
+    type pthread_mutexattr_t is record
+       mutexkind : int;
+    end record;
+    pragma Convention (C, pthread_mutexattr_t);
+ 
+    type struct_pthread_fast_lock is record
+       status   : long;
+       spinlock : int;
+    end record;
+    pragma Convention (C, struct_pthread_fast_lock);
+ 
+    type pthread_mutex_t is record
+       m_reserved : int;
+       m_count    : int;
+       m_owner    : System.Address;
+       m_kind     : int;
+       m_lock     : struct_pthread_fast_lock;
+    end record;
+    pragma Convention (C, pthread_mutex_t);
+ 
+    type pthread_cond_t is array (0 .. 47) of unsigned_char;
+    pragma Convention (C, pthread_cond_t);
+ 
+    type pthread_key_t is new unsigned;
+ 
+ end System.OS_Interface;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-osinte__linux.ads gcc-8.1.0/gcc/ada/libgnarl/s-osinte__linux.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-osinte__linux.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-osinte__linux.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,681 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                   S Y S T E M . O S _ I N T E R F A C E                  --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --             Copyright (C) 1991-2017, Florida State University            --
+ --          Copyright (C) 1995-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is a GNU/Linux (GNU/LinuxThreads) version of this package
+ 
+ --  This package encapsulates all direct interfaces to OS services
+ --  that are needed by the tasking run-time (libgnarl).
+ 
+ --  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.Linux;
+ with System.OS_Constants;
+ 
+ package System.OS_Interface is
+    pragma Preelaborate;
+ 
+    pragma Linker_Options ("-lpthread");
+    pragma Linker_Options ("-lrt");
+    --  Needed for clock_getres with glibc versions prior to 2.17
+ 
+    subtype int            is Interfaces.C.int;
+    subtype char           is Interfaces.C.char;
+    subtype short          is Interfaces.C.short;
+    subtype long           is Interfaces.C.long;
+    subtype unsigned       is Interfaces.C.unsigned;
+    subtype unsigned_short is Interfaces.C.unsigned_short;
+    subtype unsigned_long  is Interfaces.C.unsigned_long;
+    subtype unsigned_char  is Interfaces.C.unsigned_char;
+    subtype plain_char     is Interfaces.C.plain_char;
+    subtype size_t         is Interfaces.C.size_t;
+ 
+    -----------
+    -- Errno --
+    -----------
+ 
+    function errno return int;
+    pragma Import (C, errno, "__get_errno");
+ 
+    EAGAIN    : constant := System.Linux.EAGAIN;
+    EINTR     : constant := System.Linux.EINTR;
+    EINVAL    : constant := System.Linux.EINVAL;
+    ENOMEM    : constant := System.Linux.ENOMEM;
+    EPERM     : constant := System.Linux.EPERM;
+    ETIMEDOUT : constant := System.Linux.ETIMEDOUT;
+ 
+    -------------
+    -- Signals --
+    -------------
+ 
+    Max_Interrupt : constant := 63;
+    type Signal is new int range 0 .. Max_Interrupt;
+    for Signal'Size use int'Size;
+ 
+    SIGHUP     : constant := System.Linux.SIGHUP;
+    SIGINT     : constant := System.Linux.SIGINT;
+    SIGQUIT    : constant := System.Linux.SIGQUIT;
+    SIGILL     : constant := System.Linux.SIGILL;
+    SIGTRAP    : constant := System.Linux.SIGTRAP;
+    SIGIOT     : constant := System.Linux.SIGIOT;
+    SIGABRT    : constant := System.Linux.SIGABRT;
+    SIGFPE     : constant := System.Linux.SIGFPE;
+    SIGKILL    : constant := System.Linux.SIGKILL;
+    SIGBUS     : constant := System.Linux.SIGBUS;
+    SIGSEGV    : constant := System.Linux.SIGSEGV;
+    SIGPIPE    : constant := System.Linux.SIGPIPE;
+    SIGALRM    : constant := System.Linux.SIGALRM;
+    SIGTERM    : constant := System.Linux.SIGTERM;
+    SIGUSR1    : constant := System.Linux.SIGUSR1;
+    SIGUSR2    : constant := System.Linux.SIGUSR2;
+    SIGCLD     : constant := System.Linux.SIGCLD;
+    SIGCHLD    : constant := System.Linux.SIGCHLD;
+    SIGPWR     : constant := System.Linux.SIGPWR;
+    SIGWINCH   : constant := System.Linux.SIGWINCH;
+    SIGURG     : constant := System.Linux.SIGURG;
+    SIGPOLL    : constant := System.Linux.SIGPOLL;
+    SIGIO      : constant := System.Linux.SIGIO;
+    SIGLOST    : constant := System.Linux.SIGLOST;
+    SIGSTOP    : constant := System.Linux.SIGSTOP;
+    SIGTSTP    : constant := System.Linux.SIGTSTP;
+    SIGCONT    : constant := System.Linux.SIGCONT;
+    SIGTTIN    : constant := System.Linux.SIGTTIN;
+    SIGTTOU    : constant := System.Linux.SIGTTOU;
+    SIGVTALRM  : constant := System.Linux.SIGVTALRM;
+    SIGPROF    : constant := System.Linux.SIGPROF;
+    SIGXCPU    : constant := System.Linux.SIGXCPU;
+    SIGXFSZ    : constant := System.Linux.SIGXFSZ;
+    SIGUNUSED  : constant := System.Linux.SIGUNUSED;
+    SIGSTKFLT  : constant := System.Linux.SIGSTKFLT;
+    SIGLTHRRES : constant := System.Linux.SIGLTHRRES;
+    SIGLTHRCAN : constant := System.Linux.SIGLTHRCAN;
+    SIGLTHRDBG : constant := System.Linux.SIGLTHRDBG;
+ 
+    SIGADAABORT : constant := SIGABRT;
+    --  Change this to use another signal for task abort. SIGTERM might be a
+    --  good one.
+ 
+    type Signal_Set is array (Natural range <>) of Signal;
+ 
+    Unmasked : constant Signal_Set := (
+       SIGTRAP,
+       --  To enable debugging on multithreaded applications, mark SIGTRAP to
+       --  be kept unmasked.
+ 
+       SIGBUS,
+ 
+       SIGTTIN, SIGTTOU, SIGTSTP,
+       --  Keep these three signals unmasked so that background processes and IO
+       --  behaves as normal "C" applications
+ 
+       SIGPROF,
+       --  To avoid confusing the profiler
+ 
+       SIGKILL, SIGSTOP,
+       --  These two signals actually can't be masked (POSIX won't allow it)
+ 
+       SIGLTHRRES, SIGLTHRCAN, SIGLTHRDBG);
+       --  These three signals are used by GNU/LinuxThreads starting from glibc
+       --  2.1 (future 2.2).
+ 
+    Reserved : constant Signal_Set := (SIGVTALRM, SIGUNUSED);
+    --  Not clear why these two signals are reserved. Perhaps they are not
+    --  supported by this version of GNU/Linux ???
+ 
+    type sigset_t is private;
+ 
+    function sigaddset (set : access sigset_t; sig : Signal) return int;
+    pragma Import (C, sigaddset, "sigaddset");
+ 
+    function sigdelset (set : access sigset_t; sig : Signal) return int;
+    pragma Import (C, sigdelset, "sigdelset");
+ 
+    function sigfillset (set : access sigset_t) return int;
+    pragma Import (C, sigfillset, "sigfillset");
+ 
+    function sigismember (set : access sigset_t; sig : Signal) return int;
+    pragma Import (C, sigismember, "sigismember");
+ 
+    function sigemptyset (set : access sigset_t) return int;
+    pragma Import (C, sigemptyset, "sigemptyset");
+ 
+    type union_type_3 is new String (1 .. 116);
+    type siginfo_t is record
+       si_signo : int;
+       si_code  : int;
+       si_errno : int;
+       X_data   : union_type_3;
+    end record;
+    pragma Convention (C, siginfo_t);
+ 
+    type struct_sigaction is record
+       sa_handler  : System.Address;
+       sa_mask     : sigset_t;
+       sa_flags    : int;
+       sa_restorer : System.Address;
+    end record;
+    pragma Convention (C, struct_sigaction);
+ 
+    type struct_sigaction_ptr is access all struct_sigaction;
+ 
+    type Machine_State is record
+       eip : unsigned_long;
+       ebx : unsigned_long;
+       esp : unsigned_long;
+       ebp : unsigned_long;
+       esi : unsigned_long;
+       edi : unsigned_long;
+    end record;
+    type Machine_State_Ptr is access all Machine_State;
+ 
+    SA_SIGINFO : constant := System.Linux.SA_SIGINFO;
+    SA_ONSTACK : constant := System.Linux.SA_ONSTACK;
+ 
+    SIG_BLOCK   : constant := 0;
+    SIG_UNBLOCK : constant := 1;
+    SIG_SETMASK : constant := 2;
+ 
+    SIG_DFL : constant := 0;
+    SIG_IGN : constant := 1;
+ 
+    function sigaction
+      (sig  : Signal;
+       act  : struct_sigaction_ptr;
+       oact : struct_sigaction_ptr) return int;
+    pragma Import (C, sigaction, "sigaction");
+ 
+    ----------
+    -- Time --
+    ----------
+ 
+    subtype time_t    is System.Linux.time_t;
+    subtype timespec  is System.Linux.timespec;
+    subtype timeval   is System.Linux.timeval;
+    subtype clockid_t is System.Linux.clockid_t;
+ 
+    function clock_gettime
+      (clock_id : clockid_t; tp : access timespec) return int;
+    pragma Import (C, clock_gettime, "clock_gettime");
+ 
+    function clock_getres
+      (clock_id : clockid_t;
+       res      : access timespec) return int;
+    pragma Import (C, clock_getres, "clock_getres");
+ 
+    function To_Duration (TS : timespec) return Duration;
+    pragma Inline (To_Duration);
+ 
+    function To_Timespec (D : Duration) return timespec;
+    pragma Inline (To_Timespec);
+ 
+    function sysconf (name : int) return long;
+    pragma Import (C, sysconf);
+ 
+    SC_CLK_TCK          : constant := 2;
+    SC_NPROCESSORS_ONLN : constant := 84;
+ 
+    -------------------------
+    -- Priority Scheduling --
+    -------------------------
+ 
+    SCHED_OTHER : constant := 0;
+    SCHED_FIFO  : constant := 1;
+    SCHED_RR    : constant := 2;
+ 
+    function To_Target_Priority
+      (Prio : System.Any_Priority) return Interfaces.C.int;
+    --  Maps System.Any_Priority to a POSIX priority
+ 
+    -------------
+    -- Process --
+    -------------
+ 
+    type pid_t is private;
+ 
+    function kill (pid : pid_t; sig : Signal) return int;
+    pragma Import (C, kill, "kill");
+ 
+    function getpid return pid_t;
+    pragma Import (C, getpid, "getpid");
+ 
+    PR_SET_NAME : constant := 15;
+    PR_GET_NAME : constant := 16;
+ 
+    function prctl
+      (option                 : int;
+       arg2, arg3, arg4, arg5 : unsigned_long := 0) return int;
+    pragma Import (C, prctl);
+ 
+    -------------
+    -- Threads --
+    -------------
+ 
+    type Thread_Body is access
+      function (arg : System.Address) return System.Address;
+    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;
+    type pthread_rwlock_t     is limited private;
+    type pthread_cond_t       is limited private;
+    type pthread_attr_t       is limited private;
+    type pthread_mutexattr_t  is limited private;
+    type pthread_rwlockattr_t is limited private;
+    type pthread_condattr_t   is limited private;
+    type pthread_key_t        is private;
+ 
+    PTHREAD_CREATE_DETACHED : constant := 1;
+ 
+    -----------
+    -- Stack --
+    -----------
+ 
+    type stack_t is record
+       ss_sp    : System.Address;
+       ss_flags : int;
+       ss_size  : size_t;
+    end record;
+    pragma Convention (C, stack_t);
+ 
+    function sigaltstack
+      (ss  : not null access stack_t;
+       oss : access stack_t) return int;
+    pragma Import (C, sigaltstack, "sigaltstack");
+ 
+    Alternate_Stack : aliased System.Address;
+    pragma Import (C, Alternate_Stack, "__gnat_alternate_stack");
+    --  The alternate signal stack for stack overflows
+ 
+    Alternate_Stack_Size : constant := 16 * 1024;
+    --  This must be in keeping with init.c:__gnat_alternate_stack
+ 
+    function Get_Stack_Base (thread : pthread_t) return Address;
+    pragma Inline (Get_Stack_Base);
+    --  This is a dummy procedure to share some GNULLI files
+ 
+    ---------------------------------------
+    -- Nonstandard Thread Initialization --
+    ---------------------------------------
+ 
+    procedure pthread_init;
+    pragma Inline (pthread_init);
+    --  This is a dummy procedure to share some GNULLI files
+ 
+    -------------------------
+    -- POSIX.1c  Section 3 --
+    -------------------------
+ 
+    function sigwait (set : access sigset_t; sig : access Signal) return int;
+    pragma Import (C, sigwait, "sigwait");
+ 
+    function pthread_kill (thread : pthread_t; sig : Signal) return int;
+    pragma Import (C, pthread_kill, "pthread_kill");
+ 
+    function pthread_sigmask
+      (how  : int;
+       set  : access sigset_t;
+       oset : access sigset_t) return int;
+    pragma Import (C, pthread_sigmask, "pthread_sigmask");
+ 
+    --------------------------
+    -- POSIX.1c  Section 11 --
+    --------------------------
+ 
+    function pthread_mutexattr_init
+      (attr : access pthread_mutexattr_t) return int;
+    pragma Import (C, pthread_mutexattr_init, "pthread_mutexattr_init");
+ 
+    function pthread_mutexattr_destroy
+      (attr : access pthread_mutexattr_t) return int;
+    pragma Import (C, pthread_mutexattr_destroy, "pthread_mutexattr_destroy");
+ 
+    function pthread_mutex_init
+      (mutex : access pthread_mutex_t;
+       attr  : access pthread_mutexattr_t) return int;
+    pragma Import (C, pthread_mutex_init, "pthread_mutex_init");
+ 
+    function pthread_mutex_destroy (mutex : access pthread_mutex_t) return int;
+    pragma Import (C, pthread_mutex_destroy, "pthread_mutex_destroy");
+ 
+    function pthread_mutex_lock (mutex : access pthread_mutex_t) return int;
+    pragma Import (C, pthread_mutex_lock, "pthread_mutex_lock");
+ 
+    function pthread_mutex_unlock (mutex : access pthread_mutex_t) return int;
+    pragma Import (C, pthread_mutex_unlock, "pthread_mutex_unlock");
+ 
+    function pthread_rwlockattr_init
+      (attr : access pthread_rwlockattr_t) return int;
+    pragma Import (C, pthread_rwlockattr_init, "pthread_rwlockattr_init");
+ 
+    function pthread_rwlockattr_destroy
+      (attr : access pthread_rwlockattr_t) return int;
+    pragma Import (C, pthread_rwlockattr_destroy, "pthread_rwlockattr_destroy");
+ 
+    PTHREAD_RWLOCK_PREFER_READER_NP              : constant := 0;
+    PTHREAD_RWLOCK_PREFER_WRITER_NP              : constant := 1;
+    PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP : constant := 2;
+ 
+    function pthread_rwlockattr_setkind_np
+      (attr : access pthread_rwlockattr_t;
+       pref : int) return int;
+    pragma Import
+      (C, pthread_rwlockattr_setkind_np, "pthread_rwlockattr_setkind_np");
+ 
+    function pthread_rwlock_init
+      (mutex : access pthread_rwlock_t;
+       attr  : access pthread_rwlockattr_t) return int;
+    pragma Import (C, pthread_rwlock_init, "pthread_rwlock_init");
+ 
+    function pthread_rwlock_destroy
+      (mutex : access pthread_rwlock_t) return int;
+    pragma Import (C, pthread_rwlock_destroy, "pthread_rwlock_destroy");
+ 
+    function pthread_rwlock_rdlock (mutex : access pthread_rwlock_t) return int;
+    pragma Import (C, pthread_rwlock_rdlock, "pthread_rwlock_rdlock");
+ 
+    function pthread_rwlock_wrlock (mutex : access pthread_rwlock_t) return int;
+    pragma Import (C, pthread_rwlock_wrlock, "pthread_rwlock_wrlock");
+ 
+    function pthread_rwlock_unlock (mutex : access pthread_rwlock_t) return int;
+    pragma Import (C, pthread_rwlock_unlock, "pthread_rwlock_unlock");
+ 
+    function pthread_condattr_init
+      (attr : access pthread_condattr_t) return int;
+    pragma Import (C, pthread_condattr_init, "pthread_condattr_init");
+ 
+    function pthread_condattr_destroy
+      (attr : access pthread_condattr_t) return int;
+    pragma Import (C, pthread_condattr_destroy, "pthread_condattr_destroy");
+ 
+    function pthread_cond_init
+      (cond : access pthread_cond_t;
+       attr : access pthread_condattr_t) return int;
+    pragma Import (C, pthread_cond_init, "pthread_cond_init");
+ 
+    function pthread_cond_destroy (cond : access pthread_cond_t) return int;
+    pragma Import (C, pthread_cond_destroy, "pthread_cond_destroy");
+ 
+    function pthread_cond_signal (cond : access pthread_cond_t) return int;
+    pragma Import (C, pthread_cond_signal, "pthread_cond_signal");
+ 
+    function pthread_cond_wait
+      (cond  : access pthread_cond_t;
+       mutex : access pthread_mutex_t) return int;
+    pragma Import (C, pthread_cond_wait, "pthread_cond_wait");
+ 
+    function pthread_cond_timedwait
+      (cond    : access pthread_cond_t;
+       mutex   : access pthread_mutex_t;
+       abstime : access timespec) return int;
+    pragma Import (C, pthread_cond_timedwait, "pthread_cond_timedwait");
+ 
+    Relative_Timed_Wait : constant Boolean := False;
+    --  pthread_cond_timedwait requires an absolute delay time
+ 
+    --------------------------
+    -- POSIX.1c  Section 13 --
+    --------------------------
+ 
+    PTHREAD_PRIO_NONE    : constant := 0;
+    PTHREAD_PRIO_INHERIT : constant := 1;
+    PTHREAD_PRIO_PROTECT : constant := 2;
+ 
+    function pthread_mutexattr_setprotocol
+      (attr     : access pthread_mutexattr_t;
+       protocol : int) return int;
+    pragma Import (C, pthread_mutexattr_setprotocol);
+ 
+    function pthread_mutexattr_setprioceiling
+      (attr        : access pthread_mutexattr_t;
+       prioceiling : int) return int;
+    pragma Import (C, pthread_mutexattr_setprioceiling);
+ 
+    type struct_sched_param is record
+       sched_priority : int;  --  scheduling priority
+    end record;
+    pragma Convention (C, struct_sched_param);
+ 
+    function pthread_setschedparam
+      (thread : pthread_t;
+       policy : int;
+       param  : access struct_sched_param) return int;
+    pragma Import (C, pthread_setschedparam, "pthread_setschedparam");
+ 
+    function pthread_attr_setschedpolicy
+      (attr   : access pthread_attr_t;
+       policy : int) return int;
+    pragma Import
+      (C, pthread_attr_setschedpolicy, "pthread_attr_setschedpolicy");
+ 
+    function sched_yield return int;
+    pragma Import (C, sched_yield, "sched_yield");
+ 
+    ---------------------------
+    -- P1003.1c - Section 16 --
+    ---------------------------
+ 
+    function pthread_attr_init
+      (attributes : access pthread_attr_t) return int;
+    pragma Import (C, pthread_attr_init, "pthread_attr_init");
+ 
+    function pthread_attr_destroy
+      (attributes : access pthread_attr_t) return int;
+    pragma Import (C, pthread_attr_destroy, "pthread_attr_destroy");
+ 
+    function pthread_attr_setdetachstate
+      (attr        : access pthread_attr_t;
+       detachstate : int) return int;
+    pragma Import
+      (C, pthread_attr_setdetachstate, "pthread_attr_setdetachstate");
+ 
+    function pthread_attr_setstacksize
+      (attr      : access pthread_attr_t;
+       stacksize : size_t) return int;
+    pragma Import (C, pthread_attr_setstacksize, "pthread_attr_setstacksize");
+ 
+    function pthread_create
+      (thread        : access pthread_t;
+       attributes    : access pthread_attr_t;
+       start_routine : Thread_Body;
+       arg           : System.Address) return int;
+    pragma Import (C, pthread_create, "pthread_create");
+ 
+    procedure pthread_exit (status : System.Address);
+    pragma Import (C, pthread_exit, "pthread_exit");
+ 
+    function pthread_self return pthread_t;
+    pragma Import (C, pthread_self, "pthread_self");
+ 
+    function lwp_self return System.Address;
+    pragma Import (C, lwp_self, "__gnat_lwp_self");
+ 
+    --------------------------
+    -- POSIX.1c  Section 17 --
+    --------------------------
+ 
+    function pthread_setspecific
+      (key   : pthread_key_t;
+       value : System.Address) return int;
+    pragma Import (C, pthread_setspecific, "pthread_setspecific");
+ 
+    function pthread_getspecific (key : pthread_key_t) return System.Address;
+    pragma Import (C, pthread_getspecific, "pthread_getspecific");
+ 
+    type destructor_pointer is access procedure (arg : System.Address);
+    pragma Convention (C, destructor_pointer);
+ 
+    function pthread_key_create
+      (key        : access pthread_key_t;
+       destructor : destructor_pointer) return int;
+    pragma Import (C, pthread_key_create, "pthread_key_create");
+ 
+    ----------------
+    -- Extensions --
+    ----------------
+ 
+    CPU_SETSIZE : constant := 1_024;
+    --  Size of the cpu_set_t mask on most linux systems (SUSE 11 uses 4_096).
+    --  This is kept for backward compatibility (System.Task_Info uses it), but
+    --  the run-time library does no longer rely on static masks, using
+    --  dynamically allocated masks instead.
+ 
+    type bit_field is array (1 .. CPU_SETSIZE) of Boolean;
+    for bit_field'Size use CPU_SETSIZE;
+    pragma Pack (bit_field);
+    pragma Convention (C, bit_field);
+ 
+    type cpu_set_t is record
+       bits : bit_field;
+    end record;
+    pragma Convention (C, cpu_set_t);
+ 
+    type cpu_set_t_ptr is access all cpu_set_t;
+    --  In the run-time library we use this pointer because the size of type
+    --  cpu_set_t varies depending on the glibc version. Hence, objects of type
+    --  cpu_set_t are allocated dynamically using the number of processors
+    --  available in the target machine (value obtained at execution time).
+ 
+    function CPU_ALLOC (count : size_t) return cpu_set_t_ptr;
+    pragma Import (C, CPU_ALLOC, "__gnat_cpu_alloc");
+    --  Wrapper around the CPU_ALLOC C macro
+ 
+    function CPU_ALLOC_SIZE (count : size_t) return size_t;
+    pragma Import (C, CPU_ALLOC_SIZE, "__gnat_cpu_alloc_size");
+    --  Wrapper around the CPU_ALLOC_SIZE C macro
+ 
+    procedure CPU_FREE (cpuset : cpu_set_t_ptr);
+    pragma Import (C, CPU_FREE, "__gnat_cpu_free");
+    --  Wrapper around the CPU_FREE C macro
+ 
+    procedure CPU_ZERO (count : size_t; cpuset : cpu_set_t_ptr);
+    pragma Import (C, CPU_ZERO, "__gnat_cpu_zero");
+    --  Wrapper around the CPU_ZERO_S C macro
+ 
+    procedure CPU_SET (cpu : int; count : size_t; cpuset : cpu_set_t_ptr);
+    pragma Import (C, CPU_SET, "__gnat_cpu_set");
+    --  Wrapper around the CPU_SET_S C macro
+ 
+    function pthread_setaffinity_np
+      (thread     : pthread_t;
+       cpusetsize : size_t;
+       cpuset     : cpu_set_t_ptr) return int;
+    pragma Import (C, pthread_setaffinity_np, "pthread_setaffinity_np");
+    pragma Weak_External (pthread_setaffinity_np);
+    --  Use a weak symbol because this function may be available or not,
+    --  depending on the version of the system.
+ 
+    function pthread_attr_setaffinity_np
+      (attr       : access pthread_attr_t;
+       cpusetsize : size_t;
+       cpuset     : cpu_set_t_ptr) return int;
+    pragma Import (C, pthread_attr_setaffinity_np,
+                     "pthread_attr_setaffinity_np");
+    pragma Weak_External (pthread_attr_setaffinity_np);
+    --  Use a weak symbol because this function may be available or not,
+    --  depending on the version of the system.
+ 
+ private
+ 
+    type sigset_t is
+      array (0 .. OS_Constants.SIZEOF_sigset - 1) of unsigned_char;
+    pragma Convention (C, sigset_t);
+    for sigset_t'Alignment use Interfaces.C.unsigned_long'Alignment;
+ 
+    pragma Warnings (Off);
+    for struct_sigaction use record
+       sa_handler at Linux.sa_handler_pos range 0 .. Standard'Address_Size - 1;
+       sa_mask    at Linux.sa_mask_pos    range 0 .. 1023;
+       sa_flags   at Linux.sa_flags_pos   range 0 .. int'Size - 1;
+    end record;
+    --  We intentionally leave sa_restorer unspecified and let the compiler
+    --  append it after the last field, so disable corresponding warning.
+    pragma Warnings (On);
+ 
+    type pid_t is new int;
+ 
+    subtype char_array is Interfaces.C.char_array;
+ 
+    type pthread_attr_t is record
+       Data : char_array (1 .. OS_Constants.PTHREAD_ATTR_SIZE);
+    end record;
+    pragma Convention (C, pthread_attr_t);
+    for pthread_attr_t'Alignment use Interfaces.C.unsigned_long'Alignment;
+ 
+    type pthread_condattr_t is record
+       Data : char_array (1 .. OS_Constants.PTHREAD_CONDATTR_SIZE);
+    end record;
+    pragma Convention (C, pthread_condattr_t);
+    for pthread_condattr_t'Alignment use Interfaces.C.int'Alignment;
+ 
+    type pthread_mutexattr_t is record
+       Data : char_array (1 .. OS_Constants.PTHREAD_MUTEXATTR_SIZE);
+    end  record;
+    pragma Convention (C, pthread_mutexattr_t);
+    for pthread_mutexattr_t'Alignment use Interfaces.C.int'Alignment;
+ 
+    type pthread_mutex_t is record
+       Data : char_array (1 .. OS_Constants.PTHREAD_MUTEX_SIZE);
+    end record;
+    pragma Convention (C, pthread_mutex_t);
+    for pthread_mutex_t'Alignment use Interfaces.C.unsigned_long'Alignment;
+ 
+    type pthread_rwlockattr_t is record
+       Data : char_array (1 .. OS_Constants.PTHREAD_RWLOCKATTR_SIZE);
+    end record;
+    pragma Convention (C, pthread_rwlockattr_t);
+    for pthread_rwlockattr_t'Alignment use Interfaces.C.unsigned_long'Alignment;
+ 
+    type pthread_rwlock_t is record
+       Data : char_array (1 .. OS_Constants.PTHREAD_RWLOCK_SIZE);
+    end record;
+    pragma Convention (C, pthread_rwlock_t);
+    for pthread_rwlock_t'Alignment use Interfaces.C.unsigned_long'Alignment;
+ 
+    type pthread_cond_t is record
+       Data : char_array (1 .. OS_Constants.PTHREAD_COND_SIZE);
+    end record;
+    pragma Convention (C, pthread_cond_t);
+    for pthread_cond_t'Alignment use Interfaces.Unsigned_64'Alignment;
+ 
+    type pthread_key_t is new unsigned;
+ 
+ end System.OS_Interface;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-osinte__lynxos178.adb gcc-8.1.0/gcc/ada/libgnarl/s-osinte__lynxos178.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-osinte__lynxos178.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-osinte__lynxos178.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,178 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                   S Y S T E M . O S _ I N T E R F A C E                  --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --                     Copyright (C) 2001-2018, AdaCore                     --
+ --                                                                          --
+ -- GNAT is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Version of System.OS_Interface for LynxOS-178 (POSIX Threads)
+ 
+ pragma Polling (Off);
+ --  Turn off polling, we do not want ATC polling to take place during tasking
+ --  operations. It may cause infinite loops and other problems.
+ 
+ package body System.OS_Interface is
+ 
+    ------------------
+    --  Current_CPU --
+    ------------------
+ 
+    function Current_CPU return Multiprocessors.CPU is
+    begin
+       --  No multiprocessor support, always return the first CPU Id
+ 
+       return Multiprocessors.CPU'First;
+    end Current_CPU;
+ 
+    --------------------
+    --  Get_Affinity  --
+    --------------------
+ 
+    function Get_Affinity (Id : Thread_Id) return Multiprocessors.CPU_Range is
+       pragma Unreferenced (Id);
+ 
+    begin
+       --  No multiprocessor support, always return Not_A_Specific_CPU
+ 
+       return Multiprocessors.Not_A_Specific_CPU;
+    end Get_Affinity;
+ 
+    ---------------
+    --  Get_CPU  --
+    ---------------
+ 
+    function Get_CPU  (Id : Thread_Id) return Multiprocessors.CPU is
+       pragma Unreferenced (Id);
+ 
+    begin
+       --  No multiprocessor support, always return the first CPU Id
+ 
+       return Multiprocessors.CPU'First;
+    end Get_CPU;
+ 
+    -------------------
+    -- Get_Page_Size --
+    -------------------
+ 
+    SC_PAGESIZE : constant := 17;
+    --  C macro to get pagesize value from sysconf
+ 
+    function sysconf (name : int) return long;
+    pragma Import (C, sysconf, "sysconf");
+ 
+    function Get_Page_Size return int is
+    begin
+       return int (sysconf (SC_PAGESIZE));
+    end Get_Page_Size;
+ 
+    -----------------
+    -- To_Duration --
+    -----------------
+ 
+    function To_Duration (TS : timespec) return Duration is
+    begin
+       return Duration (TS.tv_sec) + Duration (TS.tv_nsec) / 10#1#E9;
+    end To_Duration;
+ 
+    ------------------------
+    -- To_Target_Priority --
+    ------------------------
+ 
+    function To_Target_Priority
+      (Prio : System.Any_Priority) return Interfaces.C.int
+    is
+    begin
+       return Interfaces.C.int (Prio);
+    end To_Target_Priority;
+ 
+    -----------------
+    -- To_Timespec --
+    -----------------
+ 
+    function To_Timespec (D : Duration) return timespec is
+       S : time_t;
+       F : Duration;
+ 
+    begin
+       S := time_t (Long_Long_Integer (D));
+       F := D - Duration (S);
+ 
+       --  If F is negative due to a round-up, adjust for positive F value
+ 
+       if F < 0.0 then
+          S := S - 1;
+          F := F + 1.0;
+       end if;
+ 
+       return timespec'(tv_sec => S,
+                        tv_nsec => long (Long_Long_Integer (F * 10#1#E9)));
+    end To_Timespec;
+ 
+    -------------
+    -- sigwait --
+    -------------
+ 
+    function sigwait
+      (set :  access sigset_t;
+       sig :  access Signal)
+       return int
+    is
+       function sigwaitinfo
+         (set   : access sigset_t;
+          info  : System.Address) return Signal;
+       pragma Import (C, sigwaitinfo, "sigwaitinfo");
+ 
+    begin
+       sig.all := sigwaitinfo (set, Null_Address);
+ 
+       if sig.all = -1 then
+          return errno;
+       end if;
+ 
+       return 0;
+    end sigwait;
+ 
+    --------------------
+    -- Get_Stack_Base --
+    --------------------
+ 
+    function Get_Stack_Base (thread : pthread_t) return Address is
+       pragma Warnings (Off, thread);
+    begin
+       return Null_Address;
+    end Get_Stack_Base;
+ 
+    ------------------
+    -- pthread_init --
+    ------------------
+ 
+    procedure pthread_init is
+    begin
+       null;
+    end pthread_init;
+ 
+ end System.OS_Interface;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-osinte__lynxos178e.ads gcc-8.1.0/gcc/ada/libgnarl/s-osinte__lynxos178e.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-osinte__lynxos178e.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-osinte__lynxos178e.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,627 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                   S Y S T E M . O S _ I N T E R F A C E                  --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --             Copyright (C) 1991-1994, Florida State University            --
+ --          Copyright (C) 1995-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is a LynxOS-178 Elf (POSIX-8 Threads) version of this package
+ 
+ --  This package encapsulates all direct interfaces to OS services that are
+ --  needed by the tasking run-time (libgnarl).
+ 
+ --  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.Multiprocessors;
+ 
+ package System.OS_Interface is
+    pragma Preelaborate;
+ 
+    pragma Linker_Options ("-mthreads");
+    --  Selects the POSIX 1.c runtime, rather than the non-threading runtime or
+    --  the deprecated legacy threads library.
+ 
+    subtype int            is Interfaces.C.int;
+    subtype short          is Interfaces.C.short;
+    subtype long           is Interfaces.C.long;
+    subtype unsigned       is Interfaces.C.unsigned;
+    subtype unsigned_short is Interfaces.C.unsigned_short;
+    subtype unsigned_long  is Interfaces.C.unsigned_long;
+    subtype unsigned_char  is Interfaces.C.unsigned_char;
+    subtype plain_char     is Interfaces.C.plain_char;
+    subtype size_t         is Interfaces.C.size_t;
+    subtype int64          is Interfaces.Integer_64;
+ 
+    -----------
+    -- Errno --
+    -----------
+ 
+    function errno return int;
+    pragma Import (C, errno, "__get_errno");
+ 
+    EAGAIN    : constant := 11;
+    EINTR     : constant := 4;
+    EINVAL    : constant := 22;
+    ENOMEM    : constant := 12;
+    ETIMEDOUT : constant := 60;
+    --  Error codes
+ 
+    -------------
+    -- Signals --
+    -------------
+ 
+    Max_Interrupt : constant := 63;
+    --  Max_Interrupt is the number of OS signals, as defined in:
+    --
+    --   /usr/include/sys/signal.h
+    --
+    --  The lowest numbered signal is 1, but 0 is a valid argument to some
+    --  library functions, e.g. kill(2). However, 0 is not just another signal:
+    --  For instance 'I in Signal' and similar should be used with caution.
+ 
+    type Signal is new int range 0 .. Max_Interrupt;
+    for  Signal'Size use int'Size;
+ 
+    SIGHUP        : constant := 1;  --  hangup
+    SIGINT        : constant := 2;  --  interrupt (rubout)
+    SIGQUIT       : constant := 3;  --  quit (ASCD FS)
+    SIGILL        : constant := 4;  --  illegal instruction (not reset)
+    SIGTRAP       : constant := 5;  --  trace trap (not reset)
+    SIGBRK        : constant := 6;  --  break
+    SIGIOT        : constant := 6;  --  IOT instruction
+    SIGABRT       : constant := 6;  --  used by abort, replace SIGIOT in future
+    SIGCORE       : constant := 7;  --  kill with core dump
+    SIGEMT        : constant := 7;  --  EMT instruction
+    SIGFPE        : constant := 8;  --  floating point exception
+    SIGKILL       : constant := 9;  --  kill (cannot be caught or ignored)
+    SIGBUS        : constant := 10; --  bus error
+    SIGSEGV       : constant := 11; --  segmentation violation
+    SIGSYS        : constant := 12; --  bad argument to system call
+    SIGPIPE       : constant := 13; --  write on a pipe with no one to read it
+    SIGALRM       : constant := 14; --  alarm clock
+    SIGTERM       : constant := 15; --  software termination signal from kill
+    SIGURG        : constant := 16; --  urgent condition on IO channel
+    SIGSTOP       : constant := 17; --  stop (cannot be caught or ignored)
+    SIGTSTP       : constant := 18; --  user stop requested from tty
+    SIGCONT       : constant := 19; --  stopped process has been continued
+    SIGCLD        : constant := 20; --  alias for SIGCHLD
+    SIGCHLD       : constant := 20; --  child status change
+    SIGTTIN       : constant := 21; --  background tty read attempted
+    SIGTTOU       : constant := 22; --  background tty write attempted
+    SIGIO         : constant := 23; --  I/O possible (Solaris SIGPOLL alias)
+    SIGPOLL       : constant := 23; --  pollable event occurred
+    SIGTHREADKILL : constant := 24; --  Reserved by LynxOS runtime
+    SIGXCPU       : constant := 24; --  CPU time limit exceeded
+    SIGXFSZ       : constant := 25; --  filesize limit exceeded
+    SIGVTALRM     : constant := 26; --  virtual timer expired
+    SIGPROF       : constant := 27; --  profiling timer expired
+    SIGWINCH      : constant := 28; --  window size change
+    SIGLOST       : constant := 29; --  SUN 4.1 compatibility
+    SIGUSR1       : constant := 30; --  user defined signal 1
+    SIGUSR2       : constant := 31; --  user defined signal 2
+ 
+    SIGPRIO       : constant := 32;
+    --  Sent to a process with its priority or group is changed
+ 
+    SIGADAABORT : constant := SIGABRT;
+    --  Change this if you want to use another signal for task abort. SIGTERM
+    --  might be a good one.
+ 
+    type Signal_Set is array (Natural range <>) of Signal;
+ 
+    Unmasked    : constant Signal_Set :=
+      (SIGTRAP, SIGTTIN, SIGTTOU, SIGTSTP, SIGPROF, SIGTHREADKILL);
+    Reserved    : constant Signal_Set := (SIGABRT, SIGKILL, SIGSTOP, SIGPRIO);
+ 
+    type sigset_t is private;
+ 
+    function sigaddset (set : access sigset_t; sig : Signal) return int;
+    pragma Import (C, sigaddset, "sigaddset");
+ 
+    function sigdelset (set : access sigset_t; sig : Signal) return int;
+    pragma Import (C, sigdelset, "sigdelset");
+ 
+    function sigfillset (set : access sigset_t) return int;
+    pragma Import (C, sigfillset, "sigfillset");
+ 
+    function sigismember (set : access sigset_t; sig : Signal) return int;
+    pragma Import (C, sigismember, "sigismember");
+ 
+    function sigemptyset (set : access sigset_t) return int;
+    pragma Import (C, sigemptyset, "sigemptyset");
+ 
+    type struct_sigaction is record
+       sa_handler   : System.Address;
+       sa_mask      : sigset_t;
+       sa_flags     : int;
+    end record;
+    pragma Convention (C, struct_sigaction);
+    type struct_sigaction_ptr is access all struct_sigaction;
+ 
+    SA_SIGINFO : constant := 16#80#;
+ 
+    SA_ONSTACK : constant := 16#00#;
+    --  SA_ONSTACK is not defined on LynxOS, but it is referred to in the POSIX
+    --  implementation of System.Interrupt_Management. Therefore we define a
+    --  dummy value of zero here so that setting this flag is a nop.
+ 
+    SIG_BLOCK   : constant := 0;
+    SIG_UNBLOCK : constant := 1;
+    SIG_SETMASK : constant := 2;
+ 
+    SIG_DFL : constant := 0;
+    SIG_IGN : constant := 1;
+ 
+    function sigaction
+      (sig  : Signal;
+       act  : struct_sigaction_ptr;
+       oact : struct_sigaction_ptr) return int;
+    pragma Import (C, sigaction, "sigaction");
+ 
+    ----------
+    -- Time --
+    ----------
+ 
+    Time_Slice_Supported : constant Boolean := True;
+    --  Indicates whether time slicing is supported
+ 
+    type timespec is private;
+ 
+    type clockid_t is new int;
+ 
+    function clock_gettime
+      (clock_id : clockid_t;
+       tp       : access timespec) return int;
+    pragma Import (C, clock_gettime, "clock_gettime");
+ 
+    function clock_getres
+      (clock_id : clockid_t;
+       res      : access timespec) return int;
+    pragma Import (C, clock_getres, "clock_getres");
+ 
+    function To_Duration (TS : timespec) return Duration;
+    pragma Inline (To_Duration);
+ 
+    function To_Timespec (D : Duration) return timespec;
+    pragma Inline (To_Timespec);
+ 
+    type struct_timezone is record
+       tz_minuteswest : int;
+       tz_dsttime     : int;
+    end record;
+    pragma Convention (C, struct_timezone);
+    type struct_timezone_ptr is access all struct_timezone;
+ 
+    type struct_timeval is private;
+ 
+    -------------------------
+    -- Priority Scheduling --
+    -------------------------
+ 
+    SCHED_RR    : constant := 16#100_000#;
+    SCHED_FIFO  : constant := 16#200_000#;
+    SCHED_OTHER : constant := 16#400_000#;
+ 
+    function To_Target_Priority
+      (Prio : System.Any_Priority) return Interfaces.C.int;
+    --  Maps System.Any_Priority to a POSIX priority
+ 
+    -------------
+    -- Process --
+    -------------
+ 
+    type pid_t is private;
+ 
+    function kill (pid : pid_t; sig : Signal) return int;
+    pragma Import (C, kill, "kill");
+ 
+    function getpid return pid_t;
+    pragma Import (C, getpid, "getpid");
+ 
+    ---------
+    -- LWP --
+    ---------
+ 
+    type pthread_t is private;
+ 
+    function lwp_self return pthread_t;
+    pragma Import (C, lwp_self, "pthread_self");
+ 
+    -------------
+    -- Threads --
+    -------------
+ 
+    type Thread_Body is access
+      function (arg : System.Address) return System.Address;
+    pragma Convention (C, Thread_Body);
+ 
+    function Thread_Body_Access is new
+      Ada.Unchecked_Conversion (System.Address, Thread_Body);
+ 
+    subtype Thread_Id        is pthread_t;
+ 
+    type pthread_mutex_t     is limited private;
+    type pthread_cond_t      is limited private;
+    type pthread_attr_t      is limited private;
+    type pthread_mutexattr_t is limited private;
+    type pthread_condattr_t  is limited private;
+    type pthread_key_t       is private;
+ 
+    PTHREAD_CREATE_DETACHED : constant := 1;
+    PTHREAD_CREATE_JOINABLE : constant := 0;
+ 
+    PTHREAD_SCOPE_PROCESS : constant := 0; --  not supported by LynxOS178
+    PTHREAD_SCOPE_SYSTEM  : constant := 1;
+ 
+    --  Read/Write lock not supported on LynxOS. To add support both types
+    --  pthread_rwlock_t and pthread_rwlockattr_t must properly be defined
+    --  with the associated routines pthread_rwlock_[init/destroy] and
+    --  pthread_rwlock_[rdlock/wrlock/unlock].
+ 
+    subtype pthread_rwlock_t     is pthread_mutex_t;
+    subtype pthread_rwlockattr_t is pthread_mutexattr_t;
+ 
+    -----------
+    -- Stack --
+    -----------
+ 
+    type stack_t is record
+       ss_sp    : System.Address;
+       ss_flags : int;
+       ss_size  : size_t;
+    end record;
+    pragma Convention (C, stack_t);
+ 
+    function sigaltstack
+      (ss  : not null access stack_t;
+       oss : access stack_t) return int;
+    pragma Import (C, sigaltstack, "sigaltstack");
+    --  Neither stack_t nor sigaltstack are available on LynxOS-178
+ 
+    Alternate_Stack : aliased System.Address;
+    --  This is a dummy definition, never used (Alternate_Stack_Size is 0)
+ 
+    Alternate_Stack_Size : constant := 0;
+    --  No alternate signal stack is used on this platform
+ 
+    Stack_Base_Available : constant Boolean := False;
+    --  Indicates whether the stack base is available on this target
+ 
+    function Get_Stack_Base (thread : pthread_t) return Address;
+    pragma Inline (Get_Stack_Base);
+    --  Returns the stack base of the specified thread. Only call this function
+    --  when Stack_Base_Available is True.
+ 
+    function Get_Page_Size return int;
+    --  Returns the size of a page in bytes
+ 
+    PROT_NONE  : constant := 1;
+    PROT_READ  : constant := 2;
+    PROT_WRITE : constant := 4;
+    PROT_EXEC  : constant := 8;
+    PROT_ALL   : constant := PROT_READ + PROT_WRITE + PROT_EXEC;
+ 
+    PROT_ON    : constant := PROT_READ;
+    PROT_OFF   : constant := PROT_ALL;
+ 
+    function mprotect (addr : Address; len : size_t; prot : int) return int;
+    pragma Import (C, mprotect);
+ 
+    ---------------------------------------
+    -- Nonstandard Thread Initialization --
+    ---------------------------------------
+ 
+    procedure pthread_init;
+    --  This is a dummy procedure to share some GNULLI files
+ 
+    -------------------------
+    -- POSIX.1c  Section 3 --
+    -------------------------
+    function sigwait
+      (set : access sigset_t;
+       sig : access Signal) return int;
+    pragma Inline (sigwait);
+    --  LynxOS has non standard sigwait
+ 
+    function pthread_kill
+      (thread : pthread_t;
+       sig    : Signal) return int;
+    pragma Import (C, pthread_kill, "pthread_kill");
+ 
+    function pthread_sigmask
+      (how  : int;
+       set  : access sigset_t;
+       oset : access sigset_t) return int;
+    pragma Import (C, pthread_sigmask, "pthread_sigmask");
+ 
+    ----------------------------
+    --  POSIX.1c  Section 11  --
+    ----------------------------
+ 
+    function pthread_mutexattr_init
+      (attr : access pthread_mutexattr_t) return int;
+    pragma Import (C, pthread_mutexattr_init, "pthread_mutexattr_init");
+ 
+    function pthread_mutexattr_destroy
+      (attr : access pthread_mutexattr_t) return int;
+    pragma Import (C, pthread_mutexattr_destroy, "pthread_mutexattr_destroy");
+ 
+    function pthread_mutex_init
+      (mutex : access pthread_mutex_t;
+       attr  : access pthread_mutexattr_t) return int;
+    pragma Import (C, pthread_mutex_init, "pthread_mutex_init");
+ 
+    function pthread_mutex_destroy (mutex : access pthread_mutex_t) return int;
+    pragma Import (C, pthread_mutex_destroy, "pthread_mutex_destroy");
+ 
+    function pthread_mutex_lock (mutex : access pthread_mutex_t) return int;
+    pragma Import (C, pthread_mutex_lock, "pthread_mutex_lock");
+ 
+    function pthread_mutex_unlock (mutex : access pthread_mutex_t) return int;
+    pragma Import (C, pthread_mutex_unlock, "pthread_mutex_unlock");
+ 
+    function pthread_condattr_init
+      (attr : access pthread_condattr_t) return int;
+    pragma Import (C, pthread_condattr_init, "pthread_condattr_init");
+ 
+    function pthread_condattr_destroy
+      (attr : access pthread_condattr_t) return int;
+    pragma Import (C, pthread_condattr_destroy, "pthread_condattr_destroy");
+ 
+    function pthread_cond_init
+      (cond : access pthread_cond_t;
+       attr : access pthread_condattr_t) return int;
+    pragma Import (C, pthread_cond_init, "pthread_cond_init");
+ 
+    function pthread_cond_destroy (cond : access pthread_cond_t) return int;
+    pragma Import (C, pthread_cond_destroy, "pthread_cond_destroy");
+ 
+    function pthread_cond_signal (cond : access pthread_cond_t) return int;
+    pragma Import (C, pthread_cond_signal, "pthread_cond_signal");
+ 
+    function pthread_cond_wait
+      (cond  : access pthread_cond_t;
+       mutex : access pthread_mutex_t) return int;
+    pragma Import (C, pthread_cond_wait, "pthread_cond_wait");
+ 
+    function pthread_cond_timedwait
+      (cond    : access pthread_cond_t;
+       mutex   : access pthread_mutex_t;
+       abstime : access timespec) return int;
+    pragma Import (C, pthread_cond_timedwait, "pthread_cond_timedwait");
+ 
+    Relative_Timed_Wait : constant Boolean := False;
+    --  pthread_cond_timedwait requires an absolute delay time
+ 
+    --------------------------
+    -- POSIX.1c  Section 13 --
+    --------------------------
+ 
+    PTHREAD_PRIO_NONE    : constant := 0;
+    PTHREAD_PRIO_INHERIT : constant := 1;
+    PTHREAD_PRIO_PROTECT : constant := 2;
+ 
+    function pthread_mutexattr_setprotocol
+      (attr     : access pthread_mutexattr_t;
+       protocol : int) return int;
+    pragma Import (C, pthread_mutexattr_setprotocol);
+ 
+    function pthread_mutexattr_setprioceiling
+      (attr        : access pthread_mutexattr_t;
+       prioceiling : int) return int;
+    pragma Import (C, pthread_mutexattr_setprioceiling);
+ 
+    type struct_sched_param is record
+       sched_priority        : int;
+    end record;
+    pragma Convention (C, struct_sched_param);
+ 
+    function pthread_setschedparam
+      (thread : pthread_t;
+       policy : int;
+       param  : access struct_sched_param) return int;
+    pragma Import (C, pthread_setschedparam, "pthread_setschedparam");
+ 
+    function pthread_attr_setscope
+      (attr            : access pthread_attr_t;
+       contentionscope : int) return int is (0);
+    --  pthread_attr_setscope is not implemented in production mode
+ 
+    function pthread_attr_setinheritsched
+      (attr         : access pthread_attr_t;
+       inheritsched : int) return int;
+    pragma Import (C, pthread_attr_setinheritsched);
+ 
+    function pthread_attr_setschedpolicy
+      (attr   : access pthread_attr_t;
+       policy : int) return int;
+    pragma Import (C, pthread_attr_setschedpolicy);
+ 
+    function sched_yield return int;
+    pragma Import (C, sched_yield, "sched_yield");
+ 
+    --------------------------
+    -- P1003.1c  Section 16 --
+    --------------------------
+ 
+    function pthread_attr_init (attributes : access pthread_attr_t) return int;
+    pragma Import (C, pthread_attr_init, "pthread_attr_init");
+ 
+    function pthread_attr_destroy
+      (attributes : access pthread_attr_t) return int;
+    pragma Import (C, pthread_attr_destroy, "pthread_attr_destroy");
+ 
+    function pthread_attr_setdetachstate
+      (attr        : access pthread_attr_t;
+       detachstate : int) return int;
+    pragma Import (C, pthread_attr_setdetachstate);
+ 
+    function pthread_attr_setstacksize
+      (attr      : access pthread_attr_t;
+       stacksize : size_t) return int;
+    pragma Import (C, pthread_attr_setstacksize);
+ 
+    function pthread_create
+      (thread        : access pthread_t;
+       attributes    : access pthread_attr_t;
+       start_routine : Thread_Body;
+       arg           : System.Address) return int;
+    pragma Import (C, pthread_create, "pthread_create");
+ 
+    procedure pthread_exit (status : System.Address);
+    pragma Import (C, pthread_exit, "pthread_exit");
+ 
+    function pthread_self return pthread_t;
+    pragma Import (C, pthread_self, "pthread_self");
+ 
+    --------------------------
+    -- POSIX.1c  Section 17 --
+    --------------------------
+ 
+    function pthread_setspecific
+      (key   : pthread_key_t;
+       value : System.Address) return int;
+    pragma Import (C, pthread_setspecific, "pthread_setspecific");
+ 
+    function pthread_getspecific
+      (key    : pthread_key_t) return System.Address;
+    pragma Import (C, pthread_getspecific, "pthread_getspecific");
+ 
+    type destructor_pointer is access procedure (arg : System.Address);
+    pragma Convention (C, destructor_pointer);
+ 
+    function pthread_key_create
+      (key        : access pthread_key_t;
+       destructor : destructor_pointer
+      ) return int;
+    pragma Import (C, pthread_key_create, "pthread_key_create");
+ 
+    ---------------------
+    -- Multiprocessors --
+    ---------------------
+ 
+    function Current_CPU return Multiprocessors.CPU;
+    --  Return the id of the current CPU
+ 
+    function Get_Affinity (Id : Thread_Id) return Multiprocessors.CPU_Range;
+    --  Return CPU affinity of the given thread (maybe Not_A_Specific_CPU)
+ 
+    function Get_CPU (Id : Thread_Id) return Multiprocessors.CPU;
+    --  Return the CPU in charge of the given thread (always a valid CPU)
+ 
+ private
+ 
+    type sigset_t is array (1 .. 2) of long;
+    pragma Convention (C, sigset_t);
+ 
+    type pid_t is new long;
+ 
+    type time_t is new int64;
+ 
+    type suseconds_t is new int;
+ 
+    type timespec is record
+       tv_sec  : time_t;
+       tv_nsec : long;
+    end record;
+    pragma Convention (C, timespec);
+ 
+    type struct_timeval is record
+       tv_sec  : time_t;
+       tv_usec : suseconds_t;
+    end record;
+    pragma Convention (C, struct_timeval);
+ 
+    type st_attr is record
+       stksize      : int;
+       prio         : int;
+       inheritsched : int;
+       state        : int;
+       sched        : int;
+       detachstate  : int;
+       guardsize    : int;
+    end record;
+    pragma Convention (C, st_attr);
+    subtype st_attr_t is st_attr;
+ 
+    type pthread_attr_t is record
+       pthread_attr_magic : unsigned;
+       st                 : st_attr_t;
+       pthread_attr_scope : int;
+    end record;
+    pragma Convention (C, pthread_attr_t);
+ 
+    type pthread_condattr_t is record
+       cv_magic   : unsigned;
+       cv_pshared : unsigned;
+    end record;
+    pragma Convention (C, pthread_condattr_t);
+ 
+    type pthread_mutexattr_t is record
+       m_flags   : unsigned;
+       m_prio_c  : int;
+       m_pshared : int;
+    end record;
+    pragma Convention (C, pthread_mutexattr_t);
+ 
+    type tid_t is new short;
+    type pthread_t is new tid_t;
+ 
+    type block_obj_t is record
+       b_head : int;
+    end record;
+    pragma Convention (C, block_obj_t);
+ 
+    type pthread_mutex_t is record
+       m_flags      : unsigned;
+       m_owner      : tid_t;
+       m_wait       : block_obj_t;
+       m_prio_c     : int;
+       m_oldprio    : int;
+       m_count      : int;
+       m_referenced : int;
+    end record;
+    pragma Convention (C, pthread_mutex_t);
+    type pthread_mutex_t_ptr is access all pthread_mutex_t;
+ 
+    type pthread_cond_t is record
+       cv_magic   : unsigned;
+       cv_wait    : block_obj_t;
+       cv_mutex   : pthread_mutex_t_ptr;
+       cv_refcnt  : int;
+    end record;
+    pragma Convention (C, pthread_cond_t);
+ 
+    type pthread_key_t is new int;
+ 
+ end System.OS_Interface;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-osinte__mingw.ads gcc-8.1.0/gcc/ada/libgnarl/s-osinte__mingw.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-osinte__mingw.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-osinte__mingw.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,375 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                   S Y S T E M . O S _ I N T E R F A C E                  --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --             Copyright (C) 1991-2017, Florida State University            --
+ --          Copyright (C) 1995-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is a NT (native) version of this package
+ 
+ --  This package encapsulates all direct interfaces to OS services
+ --  that are needed by the tasking run-time (libgnarl). For non tasking
+ --  oriented services consider declaring them into system-win32.
+ 
+ --  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 Interfaces.C.Strings;
+ with System.Win32;
+ 
+ package System.OS_Interface is
+    pragma Preelaborate;
+ 
+    pragma Linker_Options ("-mthreads");
+ 
+    subtype int  is Interfaces.C.int;
+    subtype long is Interfaces.C.long;
+ 
+    subtype LARGE_INTEGER is System.Win32.LARGE_INTEGER;
+ 
+    -------------------
+    -- General Types --
+    -------------------
+ 
+    subtype PSZ   is Interfaces.C.Strings.chars_ptr;
+ 
+    Null_Void : constant Win32.PVOID := System.Null_Address;
+ 
+    -------------------------
+    -- Handles for objects --
+    -------------------------
+ 
+    subtype Thread_Id is Win32.HANDLE;
+ 
+    -----------
+    -- Errno --
+    -----------
+ 
+    NO_ERROR : constant := 0;
+    FUNC_ERR : constant := -1;
+ 
+    -------------
+    -- Signals --
+    -------------
+ 
+    Max_Interrupt : constant := 31;
+    type Signal is new int range 0 .. Max_Interrupt;
+    for Signal'Size use int'Size;
+ 
+    SIGINT     : constant := 2; --  interrupt (Ctrl-C)
+    SIGILL     : constant := 4; --  illegal instruction (not reset)
+    SIGFPE     : constant := 8; --  floating point exception
+    SIGSEGV    : constant := 11; -- segmentation violation
+    SIGTERM    : constant := 15; -- software termination signal from kill
+    SIGBREAK   : constant := 21; -- break (Ctrl-Break)
+    SIGABRT    : constant := 22; -- used by abort, replace SIGIOT in the future
+ 
+    type sigset_t is private;
+ 
+    type isr_address is access procedure (sig : int);
+    pragma Convention (C, isr_address);
+ 
+    function intr_attach (sig : int; handler : isr_address) return long;
+    pragma Import (C, intr_attach, "signal");
+ 
+    Intr_Attach_Reset : constant Boolean := True;
+    --  True if intr_attach is reset after an interrupt handler is called
+ 
+    procedure kill (sig : Signal);
+    pragma Import (C, kill, "raise");
+ 
+    ------------
+    -- Clock  --
+    ------------
+ 
+    procedure QueryPerformanceFrequency
+      (lpPerformanceFreq : access LARGE_INTEGER);
+    pragma Import
+      (Stdcall, QueryPerformanceFrequency, "QueryPerformanceFrequency");
+ 
+    --  According to the spec, on XP and later than function cannot fail,
+    --  so we ignore the return value and import it as a procedure.
+ 
+    -------------
+    -- Threads --
+    -------------
+ 
+    type Thread_Body is access
+      function (arg : System.Address) return System.Address;
+    pragma Convention (C, Thread_Body);
+ 
+    function Thread_Body_Access is new
+      Ada.Unchecked_Conversion (System.Address, Thread_Body);
+ 
+    procedure SwitchToThread;
+    pragma Import (Stdcall, SwitchToThread, "SwitchToThread");
+ 
+    function GetThreadTimes
+      (hThread        : Win32.HANDLE;
+       lpCreationTime : access Long_Long_Integer;
+       lpExitTime     : access Long_Long_Integer;
+       lpKernelTime   : access Long_Long_Integer;
+       lpUserTime     : access Long_Long_Integer) return Win32.BOOL;
+    pragma Import (Stdcall, GetThreadTimes, "GetThreadTimes");
+ 
+    -----------------------
+    -- Critical sections --
+    -----------------------
+ 
+    type CRITICAL_SECTION is private;
+ 
+    -------------------------------------------------------------
+    -- Thread Creation, Activation, Suspension And Termination --
+    -------------------------------------------------------------
+ 
+    type PTHREAD_START_ROUTINE is access function
+      (pThreadParameter : Win32.PVOID) return Win32.DWORD;
+    pragma Convention (Stdcall, PTHREAD_START_ROUTINE);
+ 
+    function To_PTHREAD_START_ROUTINE is new
+      Ada.Unchecked_Conversion (System.Address, PTHREAD_START_ROUTINE);
+ 
+    function CreateThread
+      (pThreadAttributes : access Win32.SECURITY_ATTRIBUTES;
+       dwStackSize       : Win32.DWORD;
+       pStartAddress     : PTHREAD_START_ROUTINE;
+       pParameter        : Win32.PVOID;
+       dwCreationFlags   : Win32.DWORD;
+       pThreadId         : access Win32.DWORD) return Win32.HANDLE;
+    pragma Import (Stdcall, CreateThread, "CreateThread");
+ 
+    function BeginThreadEx
+      (pThreadAttributes : access Win32.SECURITY_ATTRIBUTES;
+       dwStackSize       : Win32.DWORD;
+       pStartAddress     : PTHREAD_START_ROUTINE;
+       pParameter        : Win32.PVOID;
+       dwCreationFlags   : Win32.DWORD;
+       pThreadId         : not null access Win32.DWORD) return Win32.HANDLE;
+    pragma Import (C, BeginThreadEx, "_beginthreadex");
+ 
+    Debug_Process                     : constant := 16#00000001#;
+    Debug_Only_This_Process           : constant := 16#00000002#;
+    Create_Suspended                  : constant := 16#00000004#;
+    Detached_Process                  : constant := 16#00000008#;
+    Create_New_Console                : constant := 16#00000010#;
+ 
+    Create_New_Process_Group          : constant := 16#00000200#;
+ 
+    Create_No_window                  : constant := 16#08000000#;
+ 
+    Profile_User                      : constant := 16#10000000#;
+    Profile_Kernel                    : constant := 16#20000000#;
+    Profile_Server                    : constant := 16#40000000#;
+ 
+    Stack_Size_Param_Is_A_Reservation : constant := 16#00010000#;
+ 
+    function GetExitCodeThread
+      (hThread   : Win32.HANDLE;
+       pExitCode : not null access Win32.DWORD) return Win32.BOOL;
+    pragma Import (Stdcall, GetExitCodeThread, "GetExitCodeThread");
+ 
+    function ResumeThread (hThread : Win32.HANDLE) return Win32.DWORD;
+    pragma Import (Stdcall, ResumeThread, "ResumeThread");
+ 
+    function SuspendThread (hThread : Win32.HANDLE) return Win32.DWORD;
+    pragma Import (Stdcall, SuspendThread, "SuspendThread");
+ 
+    procedure ExitThread (dwExitCode : Win32.DWORD);
+    pragma Import (Stdcall, ExitThread, "ExitThread");
+ 
+    procedure EndThreadEx (dwExitCode : Win32.DWORD);
+    pragma Import (C, EndThreadEx, "_endthreadex");
+ 
+    function TerminateThread
+      (hThread    : Win32.HANDLE;
+       dwExitCode : Win32.DWORD) return Win32.BOOL;
+    pragma Import (Stdcall, TerminateThread, "TerminateThread");
+ 
+    function GetCurrentThread return Win32.HANDLE;
+    pragma Import (Stdcall, GetCurrentThread, "GetCurrentThread");
+ 
+    function GetCurrentProcess return Win32.HANDLE;
+    pragma Import (Stdcall, GetCurrentProcess, "GetCurrentProcess");
+ 
+    function GetCurrentThreadId return Win32.DWORD;
+    pragma Import (Stdcall, GetCurrentThreadId, "GetCurrentThreadId");
+ 
+    function TlsAlloc return Win32.DWORD;
+    pragma Import (Stdcall, TlsAlloc, "TlsAlloc");
+ 
+    function TlsGetValue (dwTlsIndex : Win32.DWORD) return Win32.PVOID;
+    pragma Import (Stdcall, TlsGetValue, "TlsGetValue");
+ 
+    function TlsSetValue
+      (dwTlsIndex : Win32.DWORD; pTlsValue : Win32.PVOID) return Win32.BOOL;
+    pragma Import (Stdcall, TlsSetValue, "TlsSetValue");
+ 
+    function TlsFree (dwTlsIndex : Win32.DWORD) return Win32.BOOL;
+    pragma Import (Stdcall, TlsFree, "TlsFree");
+ 
+    TLS_Nothing : constant := Win32.DWORD'Last;
+ 
+    procedure ExitProcess (uExitCode : Interfaces.C.unsigned);
+    pragma Import (Stdcall, ExitProcess, "ExitProcess");
+ 
+    function WaitForSingleObject
+      (hHandle        : Win32.HANDLE;
+       dwMilliseconds : Win32.DWORD) return Win32.DWORD;
+    pragma Import (Stdcall, WaitForSingleObject, "WaitForSingleObject");
+ 
+    function WaitForSingleObjectEx
+      (hHandle        : Win32.HANDLE;
+       dwMilliseconds : Win32.DWORD;
+       fAlertable     : Win32.BOOL) return Win32.DWORD;
+    pragma Import (Stdcall, WaitForSingleObjectEx, "WaitForSingleObjectEx");
+ 
+    Wait_Infinite : constant := Win32.DWORD'Last;
+    WAIT_TIMEOUT  : constant := 16#0000_0102#;
+    WAIT_FAILED   : constant := 16#FFFF_FFFF#;
+ 
+    ------------------------------------
+    -- Semaphores, Events and Mutexes --
+    ------------------------------------
+ 
+    function CreateSemaphore
+      (pSemaphoreAttributes : access Win32.SECURITY_ATTRIBUTES;
+       lInitialCount        : Interfaces.C.long;
+       lMaximumCount        : Interfaces.C.long;
+       pName                : PSZ) return Win32.HANDLE;
+    pragma Import (Stdcall, CreateSemaphore, "CreateSemaphoreA");
+ 
+    function OpenSemaphore
+      (dwDesiredAccess : Win32.DWORD;
+       bInheritHandle  : Win32.BOOL;
+       pName           : PSZ) return Win32.HANDLE;
+    pragma Import (Stdcall, OpenSemaphore, "OpenSemaphoreA");
+ 
+    function ReleaseSemaphore
+      (hSemaphore     : Win32.HANDLE;
+       lReleaseCount  : Interfaces.C.long;
+       pPreviousCount : access Win32.LONG) return Win32.BOOL;
+    pragma Import (Stdcall, ReleaseSemaphore, "ReleaseSemaphore");
+ 
+    function CreateEvent
+      (pEventAttributes : access Win32.SECURITY_ATTRIBUTES;
+       bManualReset     : Win32.BOOL;
+       bInitialState    : Win32.BOOL;
+       pName            : PSZ) return Win32.HANDLE;
+    pragma Import (Stdcall, CreateEvent, "CreateEventA");
+ 
+    function OpenEvent
+      (dwDesiredAccess : Win32.DWORD;
+       bInheritHandle  : Win32.BOOL;
+       pName           : PSZ) return Win32.HANDLE;
+    pragma Import (Stdcall, OpenEvent, "OpenEventA");
+ 
+    function SetEvent (hEvent : Win32.HANDLE) return Win32.BOOL;
+    pragma Import (Stdcall, SetEvent, "SetEvent");
+ 
+    function ResetEvent (hEvent : Win32.HANDLE) return Win32.BOOL;
+    pragma Import (Stdcall, ResetEvent, "ResetEvent");
+ 
+    function PulseEvent (hEvent : Win32.HANDLE) return Win32.BOOL;
+    pragma Import (Stdcall, PulseEvent, "PulseEvent");
+ 
+    function CreateMutex
+      (pMutexAttributes : access Win32.SECURITY_ATTRIBUTES;
+       bInitialOwner    : Win32.BOOL;
+       pName            : PSZ) return Win32.HANDLE;
+    pragma Import (Stdcall, CreateMutex, "CreateMutexA");
+ 
+    function OpenMutex
+      (dwDesiredAccess : Win32.DWORD;
+       bInheritHandle  : Win32.BOOL;
+       pName           : PSZ) return Win32.HANDLE;
+    pragma Import (Stdcall, OpenMutex, "OpenMutexA");
+ 
+    function ReleaseMutex (hMutex : Win32.HANDLE) return Win32.BOOL;
+    pragma Import (Stdcall, ReleaseMutex, "ReleaseMutex");
+ 
+    ---------------------------------------------------
+    -- Accessing properties of Threads and Processes --
+    ---------------------------------------------------
+ 
+    -----------------
+    --  Priorities --
+    -----------------
+ 
+    function SetThreadPriority
+      (hThread   : Win32.HANDLE;
+       nPriority : Interfaces.C.int) return Win32.BOOL;
+    pragma Import (Stdcall, SetThreadPriority, "SetThreadPriority");
+ 
+    function GetThreadPriority (hThread : Win32.HANDLE) return Interfaces.C.int;
+    pragma Import (Stdcall, GetThreadPriority, "GetThreadPriority");
+ 
+    function SetPriorityClass
+      (hProcess        : Win32.HANDLE;
+       dwPriorityClass : Win32.DWORD) return Win32.BOOL;
+    pragma Import (Stdcall, SetPriorityClass, "SetPriorityClass");
+ 
+    procedure SetThreadPriorityBoost
+      (hThread              : Win32.HANDLE;
+       DisablePriorityBoost : Win32.BOOL);
+    pragma Import (Stdcall, SetThreadPriorityBoost, "SetThreadPriorityBoost");
+ 
+    Normal_Priority_Class   : constant := 16#00000020#;
+    Idle_Priority_Class     : constant := 16#00000040#;
+    High_Priority_Class     : constant := 16#00000080#;
+    Realtime_Priority_Class : constant := 16#00000100#;
+ 
+    Thread_Priority_Idle          : constant := -15;
+    Thread_Priority_Lowest        : constant := -2;
+    Thread_Priority_Below_Normal  : constant := -1;
+    Thread_Priority_Normal        : constant := 0;
+    Thread_Priority_Above_Normal  : constant := 1;
+    Thread_Priority_Highest       : constant := 2;
+    Thread_Priority_Time_Critical : constant := 15;
+    Thread_Priority_Error_Return  : constant := Interfaces.C.long'Last;
+ 
+ private
+ 
+    type sigset_t is new Interfaces.C.unsigned_long;
+ 
+    type CRITICAL_SECTION is record
+       DebugInfo : System.Address;
+ 
+       LockCount      : Long_Integer;
+       RecursionCount : Long_Integer;
+       OwningThread   : Win32.HANDLE;
+       --  The above three fields control entering and exiting the critical
+       --  section for the resource.
+ 
+       LockSemaphore : Win32.HANDLE;
+       SpinCount     : Win32.DWORD;
+    end record;
+ 
+ end System.OS_Interface;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-osinte__posix.adb gcc-8.1.0/gcc/ada/libgnarl/s-osinte__posix.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-osinte__posix.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-osinte__posix.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,109 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                   S Y S T E M . O S _ I N T E R F A C E                  --
+ --                                                                          --
+ --                                   B o d y                                --
+ --                                                                          --
+ --             Copyright (C) 1991-2017, Florida State University            --
+ --                     Copyright (C) 1995-2018, AdaCore                     --
+ --                                                                          --
+ -- GNAT is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This version is for POSIX-like operating systems
+ 
+ pragma Polling (Off);
+ --  Turn off polling, we do not want ATC polling to take place during
+ --  tasking operations. It causes infinite loops and other problems.
+ 
+ --  This package encapsulates all direct interfaces to OS services
+ --  that are needed by children of System.
+ 
+ with Interfaces.C; use Interfaces.C;
+ package body System.OS_Interface is
+ 
+    --------------------
+    -- Get_Stack_Base --
+    --------------------
+ 
+    function Get_Stack_Base (thread : pthread_t) return Address is
+       pragma Warnings (Off, thread);
+ 
+    begin
+       return Null_Address;
+    end Get_Stack_Base;
+ 
+    ------------------
+    -- pthread_init --
+    ------------------
+ 
+    procedure pthread_init is
+    begin
+       null;
+    end pthread_init;
+ 
+    -----------------
+    -- To_Duration --
+    -----------------
+ 
+    function To_Duration (TS : timespec) return Duration is
+    begin
+       return Duration (TS.tv_sec) + Duration (TS.tv_nsec) / 10#1#E9;
+    end To_Duration;
+ 
+    ------------------------
+    -- To_Target_Priority --
+    ------------------------
+ 
+    function To_Target_Priority
+      (Prio : System.Any_Priority) return Interfaces.C.int
+    is
+    begin
+       return Interfaces.C.int (Prio);
+    end To_Target_Priority;
+ 
+    -----------------
+    -- To_Timespec --
+    -----------------
+ 
+    function To_Timespec (D : Duration) return timespec is
+       S : time_t;
+       F : Duration;
+ 
+    begin
+       S := time_t (Long_Long_Integer (D));
+       F := D - Duration (S);
+ 
+       --  If F has negative value due to a round-up, adjust for positive F
+       --  value.
+ 
+       if F < 0.0 then
+          S := S - 1;
+          F := F + 1.0;
+       end if;
+ 
+       return timespec'(tv_sec => S,
+                        tv_nsec => long (Long_Long_Integer (F * 10#1#E9)));
+    end To_Timespec;
+ 
+ end System.OS_Interface;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-osinte__qnx.adb gcc-8.1.0/gcc/ada/libgnarl/s-osinte__qnx.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-osinte__qnx.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-osinte__qnx.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,109 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                   S Y S T E M . O S _ I N T E R F A C E                  --
+ --                                                                          --
+ --                                   B o d y                                --
+ --                                                                          --
+ --             Copyright (C) 1991-2017, Florida State University            --
+ --                     Copyright (C) 1995-2018, AdaCore                     --
+ --                                                                          --
+ -- GNAT is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This version is for QNX operating systems
+ 
+ pragma Polling (Off);
+ --  Turn off polling, we do not want ATC polling to take place during
+ --  tasking operations. It causes infinite loops and other problems.
+ 
+ --  This package encapsulates all direct interfaces to OS services
+ --  that are needed by children of System.
+ 
+ with Interfaces.C; use Interfaces.C;
+ package body System.OS_Interface is
+ 
+    --------------------
+    -- Get_Stack_Base --
+    --------------------
+ 
+    function Get_Stack_Base (thread : pthread_t) return Address is
+       pragma Warnings (Off, thread);
+ 
+    begin
+       return Null_Address;
+    end Get_Stack_Base;
+ 
+    ------------------
+    -- pthread_init --
+    ------------------
+ 
+    procedure pthread_init is
+    begin
+       null;
+    end pthread_init;
+ 
+    -----------------
+    -- To_Duration --
+    -----------------
+ 
+    function To_Duration (TS : timespec) return Duration is
+    begin
+       return Duration (TS.tv_sec) + Duration (TS.tv_nsec) / 10#1#E9;
+    end To_Duration;
+ 
+    ------------------------
+    -- To_Target_Priority --
+    ------------------------
+ 
+    function To_Target_Priority
+      (Prio : System.Any_Priority) return Interfaces.C.int
+    is
+    begin
+       return Interfaces.C.int (Prio + 1);
+    end To_Target_Priority;
+ 
+    -----------------
+    -- To_Timespec --
+    -----------------
+ 
+    function To_Timespec (D : Duration) return timespec is
+       S : time_t;
+       F : Duration;
+ 
+    begin
+       S := time_t (Long_Long_Integer (D));
+       F := D - Duration (S);
+ 
+       --  If F has negative value due to a round-up, adjust for positive F
+       --  value.
+ 
+       if F < 0.0 then
+          S := S - 1;
+          F := F + 1.0;
+       end if;
+ 
+       return timespec'(tv_sec => S,
+                        tv_nsec => long (Long_Long_Integer (F * 10#1#E9)));
+    end To_Timespec;
+ 
+ end System.OS_Interface;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-osinte__qnx.ads gcc-8.1.0/gcc/ada/libgnarl/s-osinte__qnx.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-osinte__qnx.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-osinte__qnx.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,617 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                   S Y S T E M . O S _ I N T E R F A C E                  --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --          Copyright (C) 1995-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is a QNX/Neutrino version of this package
+ 
+ --  This package encapsulates all direct interfaces to OS services
+ --  that are needed by the tasking run-time (libgnarl).
+ 
+ --  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.OS_Constants;
+ 
+ package System.OS_Interface is
+    pragma Preelaborate;
+ 
+    subtype int            is Interfaces.C.int;
+    subtype char           is Interfaces.C.char;
+    subtype short          is Interfaces.C.short;
+    subtype long           is Interfaces.C.long;
+    subtype unsigned       is Interfaces.C.unsigned;
+    subtype unsigned_short is Interfaces.C.unsigned_short;
+    subtype unsigned_long  is Interfaces.C.unsigned_long;
+    subtype unsigned_char  is Interfaces.C.unsigned_char;
+    subtype plain_char     is Interfaces.C.plain_char;
+    subtype size_t         is Interfaces.C.size_t;
+ 
+    -----------
+    -- Errno --
+    -----------
+ 
+    function errno return int;
+    pragma Import (C, errno, "__get_errno");
+ 
+    EPERM     : constant := 1;
+    EINTR     : constant := 4;
+    EAGAIN    : constant := 11;
+    ENOMEM    : constant := 12;
+    EINVAL    : constant := 22;
+    ETIMEDOUT : constant := 260;
+ 
+    -------------
+    -- Signals --
+    -------------
+ 
+    Max_Interrupt : constant := 64;
+    type Signal is new int range 0 .. Max_Interrupt;
+    for Signal'Size use int'Size;
+ 
+    SIGHUP     : constant := 1;
+    SIGINT     : constant := 2;
+    SIGQUIT    : constant := 3;
+    SIGILL     : constant := 4;
+    SIGTRAP    : constant := 5;
+    SIGIOT     : constant := 6;
+    SIGABRT    : constant := 6;
+    SIGDEADLK  : constant := 7;
+    SIGFPE     : constant := 8;
+    SIGKILL    : constant := 9;
+    SIGBUS     : constant := 10;
+    SIGSEGV    : constant := 11;
+    SIGSYS     : constant := 12;
+    SIGPIPE    : constant := 13;
+    SIGALRM    : constant := 14;
+    SIGTERM    : constant := 15;
+    SIGUSR1    : constant := 16;
+    SIGUSR2    : constant := 17;
+    SIGCLD     : constant := 18;
+    SIGCHLD    : constant := 18;
+    SIGPWR     : constant := 19;
+    SIGWINCH   : constant := 20;
+    SIGURG     : constant := 21;
+    SIGPOLL    : constant := 22;
+    SIGIO      : constant := 22;
+    SIGSTOP    : constant := 23;
+    SIGTSTP    : constant := 24;
+    SIGCONT    : constant := 25;
+    SIGTTIN    : constant := 26;
+    SIGTTOU    : constant := 27;
+    SIGVTALRM  : constant := 28;
+    SIGPROF    : constant := 29;
+    SIGXCPU    : constant := 30;
+    SIGXFSZ    : constant := 31;
+ 
+    SIGRTMIN   : constant := 41;
+    SITRTMAX   : constant := 56;
+ 
+    SIGSELECT  : constant := 57;
+    SIGPHOTON  : constant := 58;
+ 
+    SIGADAABORT : constant := SIGABRT;
+    --  Change this to use another signal for task abort. SIGTERM might be a
+    --  good one.
+ 
+    type Signal_Set is array (Natural range <>) of Signal;
+ 
+    Unmasked : constant Signal_Set := (
+       SIGTRAP,
+       --  To enable debugging on multithreaded applications, mark SIGTRAP to
+       --  be kept unmasked.
+ 
+       SIGBUS,
+ 
+       SIGTTIN, SIGTTOU, SIGTSTP,
+       --  Keep these three signals unmasked so that background processes and IO
+       --  behaves as normal "C" applications
+ 
+       SIGPROF,
+       --  To avoid confusing the profiler
+ 
+       SIGKILL, SIGSTOP);
+       --  These two signals actually can't be masked (POSIX won't allow it)
+ 
+    Reserved : constant Signal_Set := (SIGABRT, SIGKILL, SIGSTOP, SIGSEGV);
+ 
+    type sigset_t is private;
+ 
+    function sigaddset (set : access sigset_t; sig : Signal) return int;
+    pragma Import (C, sigaddset, "sigaddset");
+ 
+    function sigdelset (set : access sigset_t; sig : Signal) return int;
+    pragma Import (C, sigdelset, "sigdelset");
+ 
+    function sigfillset (set : access sigset_t) return int;
+    pragma Import (C, sigfillset, "sigfillset");
+ 
+    function sigismember (set : access sigset_t; sig : Signal) return int;
+    pragma Import (C, sigismember, "sigismember");
+ 
+    function sigemptyset (set : access sigset_t) return int;
+    pragma Import (C, sigemptyset, "sigemptyset");
+ 
+    type pad7 is array (1 .. 7) of int;
+    type siginfo_t is record
+       si_signo : int;
+       si_code  : int;
+       si_errno : int;
+       X_data   : pad7;
+    end record;
+    pragma Convention (C, siginfo_t);
+ 
+    type struct_sigaction is record
+       sa_handler  : System.Address;
+       sa_flags    : int;
+       sa_mask     : sigset_t;
+    end record;
+    pragma Convention (C, struct_sigaction);
+ 
+    type struct_sigaction_ptr is access all struct_sigaction;
+ 
+    SIG_BLOCK   : constant := 0;
+    SIG_UNBLOCK : constant := 1;
+    SIG_SETMASK : constant := 2;
+    SIG_PENDING : constant := 5;
+ 
+    SA_NOCLDSTOP : constant := 16#0001#;
+    SA_SIGINFO   : constant := 16#0002#;
+    SA_RESETHAND : constant := 16#0004#;
+    SA_ONSTACK   : constant := 16#0008#;
+    SA_NODEFER   : constant := 16#0010#;
+    SA_NOCLDWAIT : constant := 16#0020#;
+ 
+    SS_ONSTACK   : constant := 1;
+    SS_DISABLE   : constant := 2;
+ 
+    SIG_DFL : constant := 0;
+    SIG_IGN : constant := 1;
+ 
+    function sigaction
+      (sig  : Signal;
+       act  : struct_sigaction_ptr;
+       oact : struct_sigaction_ptr) return int;
+    pragma Import (C, sigaction, "sigaction");
+ 
+    ----------
+    -- Time --
+    ----------
+ 
+    Time_Slice_Supported : constant Boolean := True;
+    --  Indicates whether time slicing is supported
+ 
+    type timespec is private;
+ 
+    type clockid_t is new int;
+ 
+    function clock_gettime
+      (clock_id : clockid_t; tp : access timespec) return int;
+    pragma Import (C, clock_gettime, "clock_gettime");
+ 
+    function clock_getres
+      (clock_id : clockid_t;
+       res      : access timespec) return int;
+    pragma Import (C, clock_getres, "clock_getres");
+ 
+    function To_Duration (TS : timespec) return Duration;
+    pragma Inline (To_Duration);
+ 
+    function To_Timespec (D : Duration) return timespec;
+    pragma Inline (To_Timespec);
+ 
+    -------------------------
+    -- Priority Scheduling --
+    -------------------------
+ 
+    SCHED_FIFO  : constant := 1;
+    SCHED_RR    : constant := 2;
+    SCHED_OTHER : constant := 3;
+ 
+    function To_Target_Priority
+      (Prio : System.Any_Priority) return Interfaces.C.int
+      with Inline_Always;
+    --  Maps System.Any_Priority to a POSIX priority
+ 
+    -------------
+    -- Process --
+    -------------
+ 
+    type pid_t is private;
+ 
+    function kill (pid : pid_t; sig : Signal) return int;
+    pragma Import (C, kill, "kill");
+ 
+    function getpid return pid_t;
+    pragma Import (C, getpid, "getpid");
+ 
+    -------------
+    -- Threads --
+    -------------
+ 
+    type Thread_Body is access
+      function (arg : System.Address) return System.Address;
+    pragma Convention (C, Thread_Body);
+ 
+    function Thread_Body_Access is new
+      Ada.Unchecked_Conversion (System.Address, Thread_Body);
+ 
+    type pthread_t is new int;
+    subtype Thread_Id is pthread_t;
+ 
+    type pthread_mutex_t      is limited private;
+    type pthread_cond_t       is limited private;
+    type pthread_attr_t       is limited private;
+    type pthread_mutexattr_t  is limited private;
+    type pthread_condattr_t   is limited private;
+    type pthread_key_t        is private;
+ 
+    PTHREAD_CREATE_DETACHED : constant := 1;
+ 
+    PTHREAD_SCOPE_PROCESS  : constant := 4;
+    PTHREAD_SCOPE_SYSTEM   : constant := 0;
+ 
+    PTHREAD_INHERIT_SCHED  : constant := 0;
+    PTHREAD_EXPLICIT_SCHED : constant := 2;
+ 
+    --  Read/Write lock not supported on Android.
+ 
+    subtype pthread_rwlock_t     is pthread_mutex_t;
+    subtype pthread_rwlockattr_t is pthread_mutexattr_t;
+ 
+    -----------
+    -- Stack --
+    -----------
+ 
+    type stack_t is record
+       ss_sp    : System.Address;
+       ss_flags : int;
+       ss_size  : size_t;
+    end record;
+    pragma Convention (C, stack_t);
+ 
+    function sigaltstack
+      (ss  : not null access stack_t;
+       oss : access stack_t) return int
+    is (0);
+    --  Not supported on QNX
+ 
+    Alternate_Stack : aliased System.Address;
+    --  Dummy definition: alternate stack not available due to missing
+    --  sigaltstack in QNX
+ 
+    Alternate_Stack_Size : constant := 0;
+    --  This must be kept in sync with init.c:__gnat_alternate_stack
+ 
+    Stack_Base_Available : constant Boolean := False;
+    --  Indicates whether the stack base is available on this target
+ 
+    function Get_Stack_Base (thread : pthread_t) return System.Address
+      with Inline_Always;
+    --  This is a dummy procedure to share some GNULLI files
+ 
+    function Get_Page_Size return int;
+    pragma Import (C, Get_Page_Size, "getpagesize");
+    --  Returns the size of a page
+ 
+    PROT_NONE  : constant := 16#00_00#;
+    PROT_READ  : constant := 16#01_00#;
+    PROT_WRITE : constant := 16#02_00#;
+    PROT_EXEC  : constant := 16#04_00#;
+    PROT_ALL   : constant := PROT_READ + PROT_WRITE + PROT_EXEC;
+    PROT_ON    : constant := PROT_READ;
+    PROT_OFF   : constant := PROT_ALL;
+ 
+    function mprotect (addr : Address; len : size_t; prot : int) return int;
+    pragma Import (C, mprotect);
+ 
+    ---------------------------------------
+    -- Nonstandard Thread Initialization --
+    ---------------------------------------
+ 
+    procedure pthread_init with Inline_Always;
+ 
+    -------------------------
+    -- POSIX.1c  Section 3 --
+    -------------------------
+ 
+    function sigwait (set : access sigset_t; sig : access Signal) return int;
+    pragma Import (C, sigwait, "sigwait");
+ 
+    function pthread_kill (thread : pthread_t; sig : Signal) return int;
+    pragma Import (C, pthread_kill, "pthread_kill");
+ 
+    function pthread_sigmask
+      (how  : int;
+       set  : access sigset_t;
+       oset : access sigset_t) return int;
+    pragma Import (C, pthread_sigmask, "pthread_sigmask");
+ 
+    --------------------------
+    -- POSIX.1c  Section 11 --
+    --------------------------
+ 
+    function pthread_mutexattr_init
+      (attr : access pthread_mutexattr_t) return int;
+    pragma Import (C, pthread_mutexattr_init, "pthread_mutexattr_init");
+ 
+    function pthread_mutexattr_destroy
+      (attr : access pthread_mutexattr_t) return int;
+    pragma Import (C, pthread_mutexattr_destroy, "pthread_mutexattr_destroy");
+ 
+    function pthread_mutex_init
+      (mutex : access pthread_mutex_t;
+       attr  : access pthread_mutexattr_t) return int;
+    pragma Import (C, pthread_mutex_init, "pthread_mutex_init");
+ 
+    function pthread_mutex_destroy (mutex : access pthread_mutex_t) return int;
+    pragma Import (C, pthread_mutex_destroy, "pthread_mutex_destroy");
+ 
+    function pthread_mutex_lock (mutex : access pthread_mutex_t) return int;
+    pragma Import (C, pthread_mutex_lock, "pthread_mutex_lock");
+ 
+    function pthread_mutex_unlock (mutex : access pthread_mutex_t) return int;
+    pragma Import (C, pthread_mutex_unlock, "pthread_mutex_unlock");
+ 
+    function pthread_mutex_setprioceiling
+      (mutex       : access pthread_mutex_t;
+       prioceiling : int;
+       old_ceiling : access int) return int;
+    pragma Import (C, pthread_mutex_setprioceiling);
+ 
+    function pthread_condattr_init
+      (attr : access pthread_condattr_t) return int;
+    pragma Import (C, pthread_condattr_init, "pthread_condattr_init");
+ 
+    function pthread_condattr_destroy
+      (attr : access pthread_condattr_t) return int;
+    pragma Import (C, pthread_condattr_destroy, "pthread_condattr_destroy");
+ 
+    function pthread_cond_init
+      (cond : access pthread_cond_t;
+       attr : access pthread_condattr_t) return int;
+    pragma Import (C, pthread_cond_init, "pthread_cond_init");
+ 
+    function pthread_cond_destroy (cond : access pthread_cond_t) return int;
+    pragma Import (C, pthread_cond_destroy, "pthread_cond_destroy");
+ 
+    function pthread_cond_signal (cond : access pthread_cond_t) return int;
+    pragma Import (C, pthread_cond_signal, "pthread_cond_signal");
+ 
+    function pthread_cond_wait
+      (cond  : access pthread_cond_t;
+       mutex : access pthread_mutex_t) return int;
+    pragma Import (C, pthread_cond_wait, "pthread_cond_wait");
+ 
+    function pthread_cond_timedwait
+      (cond    : access pthread_cond_t;
+       mutex   : access pthread_mutex_t;
+       abstime : access timespec) return int;
+    pragma Import (C, pthread_cond_timedwait, "pthread_cond_timedwait");
+ 
+    Relative_Timed_Wait : constant Boolean := False;
+    --  pthread_cond_timedwait requires an absolute delay time
+ 
+    --------------------------
+    -- POSIX.1c  Section 13 --
+    --------------------------
+ 
+    PTHREAD_PRIO_INHERIT : constant := 0;
+    PTHREAD_PRIO_NONE    : constant := 1;
+    PTHREAD_PRIO_PROTECT : constant := 2;
+ 
+    function pthread_mutexattr_setprotocol
+      (attr     : access pthread_mutexattr_t;
+       protocol : int) return int;
+    pragma Import (C, pthread_mutexattr_setprotocol);
+ 
+    function pthread_mutexattr_getprotocol
+      (attr     : access pthread_mutexattr_t;
+       protocol : access int) return int;
+    pragma Import (C, pthread_mutexattr_getprotocol);
+ 
+    function pthread_mutexattr_setprioceiling
+      (attr        : access pthread_mutexattr_t;
+       prioceiling : int) return int;
+    pragma Import (C, pthread_mutexattr_setprioceiling);
+ 
+    function pthread_mutexattr_getprioceiling
+      (attr        : access pthread_mutexattr_t;
+       prioceiling : access int) return int;
+    pragma Import (C, pthread_mutexattr_getprioceiling);
+ 
+    function pthread_mutex_getprioceiling
+      (attr        : access pthread_mutex_t;
+       prioceiling : access int) return int;
+    pragma Import (C, pthread_mutex_getprioceiling);
+ 
+    type pad8 is array (1 .. 8) of int;
+    pragma Convention (C, pad8);
+ 
+    type struct_sched_param is record
+       sched_priority    : int := 0;  --  scheduling priority
+       sched_curpriority : int := 0;
+       reserved          : pad8 := (others => 0);
+    end record;
+    pragma Convention (C, struct_sched_param);
+ 
+    function pthread_setschedparam
+      (thread : pthread_t;
+       policy : int;
+       param  : access struct_sched_param) return int;
+    pragma Import (C, pthread_setschedparam, "pthread_setschedparam");
+ 
+    function pthread_getschedparam
+      (thread : pthread_t;
+       policy : access int;
+       param  : access struct_sched_param) return int;
+    pragma Import (C, pthread_getschedparam, "pthread_getschedparam");
+ 
+    function pthread_setschedprio
+      (thread   : pthread_t;
+       priority : int) return int;
+    pragma Import (C, pthread_setschedprio);
+ 
+    function pthread_attr_setschedparam
+      (attr   : access pthread_attr_t;
+       param  : access struct_sched_param) return int;
+    pragma Import (C, pthread_attr_setschedparam);
+ 
+    function pthread_attr_setinheritsched
+      (attr         : access pthread_attr_t;
+       inheritsched : int) return int;
+    pragma Import (C, pthread_attr_setinheritsched);
+ 
+    function pthread_attr_setscope
+      (attr  : access pthread_attr_t;
+       scope : int) return int;
+    pragma Import (C, pthread_attr_setscope, "pthread_attr_setscope");
+ 
+    function pthread_attr_setschedpolicy
+      (attr   : access pthread_attr_t;
+       policy : int) return int;
+    pragma Import
+      (C, pthread_attr_setschedpolicy, "pthread_attr_setschedpolicy");
+ 
+    function sched_yield return int;
+    pragma Import (C, sched_yield, "sched_yield");
+ 
+    ---------------------------
+    -- P1003.1c - Section 16 --
+    ---------------------------
+ 
+    function pthread_attr_init
+      (attributes : access pthread_attr_t) return int;
+    pragma Import (C, pthread_attr_init, "pthread_attr_init");
+ 
+    function pthread_attr_destroy
+      (attributes : access pthread_attr_t) return int;
+    pragma Import (C, pthread_attr_destroy, "pthread_attr_destroy");
+ 
+    function pthread_attr_setdetachstate
+      (attr        : access pthread_attr_t;
+       detachstate : int) return int;
+    pragma Import (C, pthread_attr_setdetachstate);
+ 
+    function pthread_attr_setstacksize
+      (attr      : access pthread_attr_t;
+       stacksize : size_t) return int;
+    pragma Import (C, pthread_attr_setstacksize);
+ 
+    function pthread_create
+      (thread        : access pthread_t;
+       attributes    : access pthread_attr_t;
+       start_routine : Thread_Body;
+       arg           : System.Address) return int;
+    pragma Import (C, pthread_create, "pthread_create");
+ 
+    procedure pthread_exit (status : System.Address);
+    pragma Import (C, pthread_exit, "pthread_exit");
+ 
+    function pthread_self return pthread_t;
+    pragma Import (C, pthread_self, "pthread_self");
+ 
+    function lwp_self return System.Address;
+    pragma Import (C, lwp_self, "pthread_self");
+ 
+    --------------------------
+    -- POSIX.1c  Section 17 --
+    --------------------------
+ 
+    function pthread_setspecific
+      (key   : pthread_key_t;
+       value : System.Address) return int;
+    pragma Import (C, pthread_setspecific, "pthread_setspecific");
+ 
+    function pthread_getspecific (key : pthread_key_t) return System.Address;
+    pragma Import (C, pthread_getspecific, "pthread_getspecific");
+ 
+    type destructor_pointer is access procedure (arg : System.Address);
+    pragma Convention (C, destructor_pointer);
+ 
+    function pthread_key_create
+      (key        : access pthread_key_t;
+       destructor : destructor_pointer) return int;
+    pragma Import (C, pthread_key_create, "pthread_key_create");
+ 
+ private
+ 
+    type sigset_t is array (1 .. 2) of Interfaces.Unsigned_32;
+    pragma Convention (C, sigset_t);
+ 
+    type pid_t is new int;
+ 
+    type time_t is new long;
+ 
+    type timespec is record
+       tv_sec  : time_t;
+       tv_nsec : long;
+    end record;
+    pragma Convention (C, timespec);
+ 
+    type unsigned_long_long_t is mod 2 ** 64;
+    --  Local type only used to get the alignment of this type below
+ 
+    subtype char_array is Interfaces.C.char_array;
+ 
+    type pthread_attr_t is record
+       Data : char_array (1 .. OS_Constants.PTHREAD_ATTR_SIZE);
+    end record;
+    pragma Convention (C, pthread_attr_t);
+    for pthread_attr_t'Alignment use Interfaces.C.unsigned_long'Alignment;
+ 
+    type pthread_condattr_t is record
+       Data : char_array (1 .. OS_Constants.PTHREAD_CONDATTR_SIZE);
+    end record;
+    pragma Convention (C, pthread_condattr_t);
+    for pthread_condattr_t'Alignment use Interfaces.C.int'Alignment;
+ 
+    type pthread_mutexattr_t is record
+       Data : char_array (1 .. OS_Constants.PTHREAD_MUTEXATTR_SIZE);
+    end  record;
+    pragma Convention (C, pthread_mutexattr_t);
+    for pthread_mutexattr_t'Alignment use Interfaces.C.int'Alignment;
+ 
+    type pthread_mutex_t is record
+       Data : char_array (1 .. OS_Constants.PTHREAD_MUTEX_SIZE);
+    end record;
+    pragma Convention (C, pthread_mutex_t);
+    for pthread_mutex_t'Alignment use Interfaces.C.unsigned_long'Alignment;
+ 
+    type pthread_cond_t is record
+       Data : char_array (1 .. OS_Constants.PTHREAD_COND_SIZE);
+    end record;
+    pragma Convention (C, pthread_cond_t);
+    for pthread_cond_t'Alignment use unsigned_long_long_t'Alignment;
+ 
+    type pthread_key_t is new int;
+ 
+ end System.OS_Interface;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-osinte__rtems.adb gcc-8.1.0/gcc/ada/libgnarl/s-osinte__rtems.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-osinte__rtems.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-osinte__rtems.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,137 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                GNU ADA RUN-TIME LIBRARY (GNARL) COMPONENTS               --
+ --                                                                          --
+ --                   S Y S T E M . O S _ I N T E R F A C E                  --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --            Copyright (C) 1991-2017, Florida State University             --
+ --          Copyright (C) 1995-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University. It is --
+ -- now maintained by Ada Core Technologies Inc. in cooperation with Florida --
+ -- State University (http://www.gnat.com).                                  --
+ --                                                                          --
+ -- The GNARL files that were developed for RTEMS are maintained by  On-Line --
+ -- Applications Research Corporation (http://www.oarcorp.com)  in  coopera- --
+ -- tion with Ada Core Technologies Inc. and Florida State University.       --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is the RTEMS version of this package
+ 
+ --  This package encapsulates all direct interfaces to OS services
+ --  that are needed by children of System.
+ 
+ pragma Polling (Off);
+ --  Turn off polling, we do not want ATC polling to take place during
+ --  tasking operations. It causes infinite loops and other problems.
+ 
+ with Interfaces.C; use Interfaces.C;
+ package body System.OS_Interface is
+ 
+    -----------------
+    -- To_Duration --
+    -----------------
+ 
+    function To_Duration (TS : timespec) return Duration is
+    begin
+       return Duration (TS.tv_sec) + Duration (TS.tv_nsec) / 10#1#E9;
+    end To_Duration;
+ 
+    ------------------------
+    -- To_Target_Priority --
+    ------------------------
+ 
+    function To_Target_Priority
+      (Prio : System.Any_Priority) return Interfaces.C.int
+    is
+    begin
+       return Interfaces.C.int (Prio);
+    end To_Target_Priority;
+ 
+    -----------------
+    -- To_Timespec --
+    -----------------
+ 
+    function To_Timespec (D : Duration) return timespec is
+       S : time_t;
+       F : Duration;
+    begin
+       S := time_t (Long_Long_Integer (D));
+       F := D - Duration (S);
+ 
+       --  If F has negative value due to round-up, adjust for positive F value
+ 
+       if F < 0.0 then
+          S := S - 1;
+          F := F + 1.0;
+       end if;
+       return timespec'(tv_sec => S,
+                        tv_nsec => long (Long_Long_Integer (F * 10#1#E9)));
+    end To_Timespec;
+ 
+    ------------------
+    -- pthread_init --
+    ------------------
+ 
+    procedure pthread_init is
+    begin
+       null;
+    end pthread_init;
+ 
+    --------------------
+    -- Get_Stack_Base --
+    --------------------
+ 
+    function Get_Stack_Base (thread : pthread_t) return Address is
+       pragma Warnings (Off, thread);
+ 
+    begin
+       return Null_Address;
+    end Get_Stack_Base;
+ 
+    -----------------
+    -- sigaltstack --
+    -----------------
+ 
+    function sigaltstack
+      (ss  : not null access stack_t;
+       oss : access stack_t) return int is
+       pragma Unreferenced (ss);
+       pragma Unreferenced (oss);
+    begin
+       return 0;
+    end sigaltstack;
+ 
+    -----------------------------------
+    -- pthread_rwlockattr_setkind_np --
+    -----------------------------------
+ 
+    function pthread_rwlockattr_setkind_np
+      (attr : access pthread_rwlockattr_t;
+       pref : int) return int is
+       pragma Unreferenced (attr);
+       pragma Unreferenced (pref);
+    begin
+       return 0;
+    end pthread_rwlockattr_setkind_np;
+ 
+ end System.OS_Interface;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-osinte__rtems.ads gcc-8.1.0/gcc/ada/libgnarl/s-osinte__rtems.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-osinte__rtems.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-osinte__rtems.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,684 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                GNU ADA RUN-TIME LIBRARY (GNARL) COMPONENTS               --
+ --                                                                          --
+ --                   S Y S T E M . O S _ I N T E R F A C E                  --
+ --                                                                          --
+ --                                   S p e c                                --
+ --                                                                          --
+ --          Copyright (C) 1997-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ -- The GNARL files that were developed for RTEMS are maintained by  On-Line --
+ -- Applications Research Corporation (http://www.oarcorp.com)  in  coopera- --
+ -- tion with Ada Core Technologies Inc. and Florida State University.       --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is the RTEMS version of this package.
+ --
+ --  RTEMS target names are of the form CPU-rtems.
+ --  This implementation is designed to work on ALL RTEMS targets.
+ --  The RTEMS implementation is primarily based upon the POSIX threads
+ --  API but there are also bindings to GNAT/RTEMS support routines
+ --  to insulate this code from C API specific details and, in some
+ --  cases, obtain target architecture and BSP specific information
+ --  that is unavailable at the time this package is built.
+ 
+ --  This package encapsulates all direct interfaces to OS services
+ --  that are needed by children of System.
+ 
+ --  PLEASE DO NOT add any with-clauses to this package
+ --  or remove the pragma Preelaborate.
+ --  It is designed to be a bottom-level (leaf) package.
+ 
+ with Interfaces.C;
+ with System.OS_Constants;
+ 
+ package System.OS_Interface is
+    pragma Preelaborate;
+ 
+    --  This interface assumes that "unsigned" is a 32-bit entity.  This
+    --  will correspond to RTEMS object ids.
+ 
+    subtype rtems_id       is Interfaces.C.unsigned;
+ 
+    subtype int            is Interfaces.C.int;
+    subtype char           is Interfaces.C.char;
+    subtype short          is Interfaces.C.short;
+    subtype long           is Interfaces.C.long;
+    subtype unsigned       is Interfaces.C.unsigned;
+    subtype unsigned_short is Interfaces.C.unsigned_short;
+    subtype unsigned_long  is Interfaces.C.unsigned_long;
+    subtype unsigned_char  is Interfaces.C.unsigned_char;
+    subtype plain_char     is Interfaces.C.plain_char;
+    subtype size_t         is Interfaces.C.size_t;
+    -----------
+    -- Errno --
+    -----------
+ 
+    function errno return int;
+    pragma Import (C, errno, "__get_errno");
+ 
+    EAGAIN    : constant := System.OS_Constants.EAGAIN;
+    EINTR     : constant := System.OS_Constants.EINTR;
+    EINVAL    : constant := System.OS_Constants.EINVAL;
+    ENOMEM    : constant := System.OS_Constants.ENOMEM;
+    ETIMEDOUT : constant := System.OS_Constants.ETIMEDOUT;
+ 
+    -------------
+    -- Signals --
+    -------------
+ 
+    Num_HW_Interrupts : constant := 256;
+ 
+    Max_HW_Interrupt : constant := Num_HW_Interrupts - 1;
+    type HW_Interrupt is new int range 0 .. Max_HW_Interrupt;
+ 
+    Max_Interrupt : constant := Max_HW_Interrupt;
+ 
+    type Signal is new int range 0 .. Max_Interrupt;
+ 
+    SIGXCPU     : constant := 0; --  XCPU
+    SIGHUP      : constant := 1; --  hangup
+    SIGINT      : constant := 2; --  interrupt (rubout)
+    SIGQUIT     : constant := 3; --  quit (ASCD FS)
+    SIGILL      : constant := 4; --  illegal instruction (not reset)
+    SIGTRAP     : constant := 5; --  trace trap (not reset)
+    SIGIOT      : constant := 6; --  IOT instruction
+    SIGABRT     : constant := 6; --  used by abort, replace SIGIOT in the future
+    SIGEMT      : constant := 7; --  EMT instruction
+    SIGFPE      : constant := 8; --  floating point exception
+    SIGKILL     : constant := 9; --  kill (cannot be caught or ignored)
+    SIGBUS      : constant := 10; --  bus error
+    SIGSEGV     : constant := 11; --  segmentation violation
+    SIGSYS      : constant := 12; --  bad argument to system call
+    SIGPIPE     : constant := 13; --  write on a pipe with no one to read it
+    SIGALRM     : constant := 14; --  alarm clock
+    SIGTERM     : constant := 15; --  software termination signal from kill
+    SIGUSR1     : constant := 16; --  user defined signal 1
+    SIGUSR2     : constant := 17; --  user defined signal 2
+ 
+    SIGADAABORT : constant := SIGABRT;
+ 
+    type Signal_Set is array (Natural range <>) of Signal;
+ 
+    Unmasked    : constant Signal_Set := (SIGTRAP, SIGALRM, SIGEMT);
+    Reserved    : constant Signal_Set := (1 .. 1 => SIGKILL);
+ 
+    type sigset_t is private;
+ 
+    function sigaddset (set : access sigset_t; sig : Signal) return int;
+    pragma Import (C, sigaddset, "sigaddset");
+ 
+    function sigdelset (set : access sigset_t; sig : Signal) return int;
+    pragma Import (C, sigdelset, "sigdelset");
+ 
+    function sigfillset (set : access sigset_t) return int;
+    pragma Import (C, sigfillset, "sigfillset");
+ 
+    function sigismember (set : access sigset_t; sig : Signal) return int;
+    pragma Import (C, sigismember, "sigismember");
+ 
+    function sigemptyset (set : access sigset_t) return int;
+    pragma Import (C, sigemptyset, "sigemptyset");
+ 
+    type struct_sigaction is record
+       sa_flags   : int;
+       sa_mask    : sigset_t;
+       sa_handler : System.Address;
+    end record;
+    pragma Convention (C, struct_sigaction);
+    type struct_sigaction_ptr is access all struct_sigaction;
+ 
+    SA_SIGINFO  : constant := 16#02#;
+ 
+    SA_ONSTACK : constant := 16#00#;
+    --  SA_ONSTACK is not defined on RTEMS, but it is referred to in the POSIX
+    --  implementation of System.Interrupt_Management. Therefore we define a
+    --  dummy value of zero here so that setting this flag is a nop.
+ 
+    SIG_BLOCK   : constant := 1;
+    SIG_UNBLOCK : constant := 2;
+    SIG_SETMASK : constant := 3;
+ 
+    SIG_DFL : constant := 0;
+    SIG_IGN : constant := 1;
+ 
+    function sigaction
+      (sig  : Signal;
+       act  : struct_sigaction_ptr;
+       oact : struct_sigaction_ptr) return int;
+    pragma Import (C, sigaction, "sigaction");
+ 
+    ----------
+    -- Time --
+    ----------
+ 
+    Time_Slice_Supported : constant Boolean := True;
+    --  Indicates whether time slicing is supported (i.e SCHED_RR is supported)
+ 
+    type timespec is private;
+ 
+    type clockid_t is new int;
+ 
+    CLOCK_REALTIME  : constant clockid_t;
+    CLOCK_MONOTONIC : constant clockid_t;
+ 
+    function clock_gettime
+      (clock_id : clockid_t;
+       tp       : access timespec) return int;
+    pragma Import (C, clock_gettime, "clock_gettime");
+ 
+    function clock_getres
+      (clock_id : clockid_t;
+       res      : access timespec) return int;
+    pragma Import (C, clock_getres, "clock_getres");
+ 
+    function To_Duration (TS : timespec) return Duration;
+    pragma Inline (To_Duration);
+ 
+    function To_Timespec (D : Duration) return timespec;
+    pragma Inline (To_Timespec);
+ 
+    -------------------------
+    -- Priority Scheduling --
+    -------------------------
+ 
+    SCHED_FIFO  : constant := 1;
+    SCHED_RR    : constant := 2;
+    SCHED_OTHER : constant := 0;
+ 
+    function To_Target_Priority
+      (Prio : System.Any_Priority) return Interfaces.C.int;
+    --  Maps System.Any_Priority to a POSIX priority
+ 
+    -------------
+    -- Process --
+    -------------
+ 
+    type pid_t is private;
+ 
+    function kill (pid : pid_t; sig : Signal) return int;
+    pragma Import (C, kill, "kill");
+ 
+    function getpid return pid_t;
+    pragma Import (C, getpid, "getpid");
+ 
+    ---------
+    -- LWP --
+    ---------
+ 
+    function lwp_self return System.Address;
+    --  lwp_self does not exist on this thread library, revert to pthread_self
+    --  which is the closest approximation (with getpid). This function is
+    --  needed to share 7staprop.adb across POSIX-like targets.
+    pragma Import (C, lwp_self, "pthread_self");
+ 
+    -------------
+    -- Threads --
+    -------------
+ 
+    type Thread_Body is access
+      function (arg : System.Address) return System.Address;
+    pragma Convention (C, Thread_Body);
+ 
+    type pthread_t           is private;
+    subtype Thread_Id        is pthread_t;
+ 
+    type pthread_mutex_t      is limited private;
+    type pthread_rwlock_t     is limited private;
+    type pthread_cond_t       is limited private;
+    type pthread_attr_t       is limited private;
+    type pthread_mutexattr_t  is limited private;
+    type pthread_rwlockattr_t is limited private;
+    type pthread_condattr_t   is limited private;
+    type pthread_key_t        is private;
+ 
+    No_Key : constant pthread_key_t;
+ 
+    PTHREAD_CREATE_DETACHED : constant := 0;
+ 
+    PTHREAD_SCOPE_PROCESS : constant := 0;
+    PTHREAD_SCOPE_SYSTEM  : constant := 1;
+ 
+    -----------
+    -- Stack --
+    -----------
+ 
+    type stack_t is record
+       ss_sp    : System.Address;
+       ss_flags : int;
+       ss_size  : size_t;
+    end record;
+    pragma Convention (C, stack_t);
+ 
+    function sigaltstack
+      (ss  : not null access stack_t;
+       oss : access stack_t) return int;
+ 
+    Alternate_Stack : aliased System.Address;
+    --  This is a dummy definition, never used (Alternate_Stack_Size is null)
+ 
+    Alternate_Stack_Size : constant := 0;
+    --  No alternate signal stack is used on this platform
+ 
+    Stack_Base_Available : constant Boolean := False;
+    --  Indicates whether the stack base is available on this target.
+    --  This allows us to share s-osinte.adb between all the FSU/RTEMS
+    --  run time.
+    --  Note that this value can only be true if pthread_t has a complete
+    --  definition that corresponds exactly to the C header files.
+ 
+    function Get_Stack_Base (thread : pthread_t) return Address;
+    pragma Inline (Get_Stack_Base);
+    --  returns the stack base of the specified thread.
+    --  Only call this function when Stack_Base_Available is True.
+ 
+    --  These two functions are only needed to share s-taprop.adb with
+    --  FSU threads.
+ 
+    function Get_Page_Size return int;
+    pragma Import (C, Get_Page_Size, "getpagesize");
+    --  Returns the size of a page
+ 
+    PROT_ON  : constant := 0;
+    PROT_OFF : constant := 0;
+ 
+    function mprotect (addr : Address; len : size_t; prot : int) return int;
+    pragma Import (C, mprotect);
+ 
+    -----------------------------------------
+    --  Nonstandard Thread Initialization  --
+    -----------------------------------------
+ 
+    procedure pthread_init;
+    --  FSU_THREADS requires pthread_init, which is nonstandard
+    --  and this should be invoked during the elaboration of s-taprop.adb
+    --
+    --  RTEMS does not require this so we provide an empty Ada body.
+ 
+    -------------------------
+    -- POSIX.1c  Section 3 --
+    -------------------------
+ 
+    function sigwait
+      (set : access sigset_t;
+       sig : access Signal) return int;
+    pragma Import (C, sigwait, "sigwait");
+ 
+    function pthread_kill
+      (thread : pthread_t;
+       sig    : Signal) return int;
+    pragma Import (C, pthread_kill, "pthread_kill");
+ 
+    function pthread_sigmask
+      (how  : int;
+       set  : access sigset_t;
+       oset : access sigset_t) return int;
+    pragma Import (C, pthread_sigmask, "pthread_sigmask");
+ 
+    ----------------------------
+    --  POSIX.1c  Section 11  --
+    ----------------------------
+ 
+    function pthread_mutexattr_init
+      (attr : access pthread_mutexattr_t) return int;
+    pragma Import (C, pthread_mutexattr_init, "pthread_mutexattr_init");
+ 
+    function pthread_mutexattr_destroy
+      (attr : access pthread_mutexattr_t) return int;
+    pragma Import (C, pthread_mutexattr_destroy, "pthread_mutexattr_destroy");
+ 
+    function pthread_mutex_init
+      (mutex : access pthread_mutex_t;
+       attr  : access pthread_mutexattr_t) return int;
+    pragma Import (C, pthread_mutex_init, "pthread_mutex_init");
+ 
+    function pthread_mutex_destroy (mutex : access pthread_mutex_t) return int;
+    pragma Import (C, pthread_mutex_destroy, "pthread_mutex_destroy");
+ 
+    function pthread_mutex_lock (mutex : access pthread_mutex_t) return int;
+    pragma Import (C, pthread_mutex_lock, "pthread_mutex_lock");
+ 
+    function pthread_mutex_unlock (mutex : access pthread_mutex_t) return int;
+    pragma Import (C, pthread_mutex_unlock, "pthread_mutex_unlock");
+ 
+    function pthread_rwlockattr_init
+      (attr : access pthread_rwlockattr_t) return int;
+    pragma Import (C, pthread_rwlockattr_init, "pthread_rwlockattr_init");
+ 
+    function pthread_rwlockattr_destroy
+      (attr : access pthread_rwlockattr_t) return int;
+    pragma Import (C, pthread_rwlockattr_destroy, "pthread_rwlockattr_destroy");
+ 
+    PTHREAD_RWLOCK_PREFER_READER_NP              : constant := 0;
+    PTHREAD_RWLOCK_PREFER_WRITER_NP              : constant := 1;
+    PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP : constant := 2;
+ 
+    function pthread_rwlockattr_setkind_np
+      (attr : access pthread_rwlockattr_t;
+       pref : int) return int;
+ 
+    function pthread_rwlock_init
+      (mutex : access pthread_rwlock_t;
+       attr  : access pthread_rwlockattr_t) return int;
+    pragma Import (C, pthread_rwlock_init, "pthread_rwlock_init");
+ 
+    function pthread_rwlock_destroy
+      (mutex : access pthread_rwlock_t) return int;
+    pragma Import (C, pthread_rwlock_destroy, "pthread_rwlock_destroy");
+ 
+    function pthread_rwlock_rdlock (mutex : access pthread_rwlock_t) return int;
+    pragma Import (C, pthread_rwlock_rdlock, "pthread_rwlock_rdlock");
+ 
+    function pthread_rwlock_wrlock (mutex : access pthread_rwlock_t) return int;
+    pragma Import (C, pthread_rwlock_wrlock, "pthread_rwlock_wrlock");
+ 
+    function pthread_rwlock_unlock (mutex : access pthread_rwlock_t) return int;
+    pragma Import (C, pthread_rwlock_unlock, "pthread_rwlock_unlock");
+ 
+    function pthread_condattr_init
+      (attr : access pthread_condattr_t) return int;
+    pragma Import (C, pthread_condattr_init, "pthread_condattr_init");
+ 
+    function pthread_condattr_destroy
+      (attr : access pthread_condattr_t) return int;
+    pragma Import (C, pthread_condattr_destroy, "pthread_condattr_destroy");
+ 
+    function pthread_cond_init
+      (cond : access pthread_cond_t;
+       attr : access pthread_condattr_t) return int;
+    pragma Import (C, pthread_cond_init, "pthread_cond_init");
+ 
+    function pthread_cond_destroy (cond : access pthread_cond_t) return int;
+    pragma Import (C, pthread_cond_destroy, "pthread_cond_destroy");
+ 
+    function pthread_cond_signal (cond : access pthread_cond_t) return int;
+    pragma Import (C, pthread_cond_signal, "pthread_cond_signal");
+ 
+    function pthread_cond_wait
+      (cond  : access pthread_cond_t;
+       mutex : access pthread_mutex_t) return int;
+    pragma Import (C, pthread_cond_wait, "pthread_cond_wait");
+ 
+    function pthread_cond_timedwait
+      (cond    : access pthread_cond_t;
+       mutex   : access pthread_mutex_t;
+       abstime : access timespec) return int;
+    pragma Import (C, pthread_cond_timedwait, "pthread_cond_timedwait");
+ 
+    Relative_Timed_Wait : constant Boolean := False;
+    --  pthread_cond_timedwait requires an absolute delay time
+ 
+    --------------------------
+    -- POSIX.1c  Section 13 --
+    --------------------------
+ 
+    PTHREAD_PRIO_NONE    : constant := 0;
+    PTHREAD_PRIO_PROTECT : constant := 2;
+    PTHREAD_PRIO_INHERIT : constant := 1;
+ 
+    function pthread_mutexattr_setprotocol
+      (attr     : access pthread_mutexattr_t;
+       protocol : int) return int;
+    pragma Import (C, pthread_mutexattr_setprotocol);
+ 
+    function pthread_mutexattr_setprioceiling
+      (attr     : access pthread_mutexattr_t;
+       prioceiling : int) return int;
+    pragma Import
+      (C, pthread_mutexattr_setprioceiling,
+       "pthread_mutexattr_setprioceiling");
+ 
+    type struct_sched_param is record
+       sched_priority      : int;
+       ss_low_priority     : int;
+       ss_replenish_period : timespec;
+       ss_initial_budget   : timespec;
+       sched_ss_max_repl   : int;
+    end record;
+    pragma Convention (C, struct_sched_param);
+ 
+    function pthread_setschedparam
+      (thread : pthread_t;
+       policy : int;
+       param  : access struct_sched_param) return int;
+    pragma Import (C, pthread_setschedparam, "pthread_setschedparam");
+ 
+    function pthread_attr_setscope
+      (attr            : access pthread_attr_t;
+       contentionscope : int) return int;
+    pragma Import (C, pthread_attr_setscope, "pthread_attr_setscope");
+ 
+    function pthread_attr_setinheritsched
+      (attr         : access pthread_attr_t;
+       inheritsched : int) return int;
+    pragma Import (C, pthread_attr_setinheritsched);
+ 
+    function pthread_attr_setschedpolicy
+      (attr   : access pthread_attr_t;
+       policy : int) return int;
+    pragma Import (C, pthread_attr_setschedpolicy);
+ 
+    function pthread_attr_setschedparam
+      (attr        : access pthread_attr_t;
+       sched_param : int) return int;
+    pragma Import (C, pthread_attr_setschedparam);
+ 
+    function sched_yield return int;
+    pragma Import (C, sched_yield, "sched_yield");
+ 
+    ---------------------------
+    -- P1003.1c - Section 16 --
+    ---------------------------
+ 
+    function pthread_attr_init (attributes : access pthread_attr_t) return int;
+    pragma Import (C, pthread_attr_init, "pthread_attr_init");
+ 
+    function pthread_attr_destroy
+      (attributes : access pthread_attr_t) return int;
+    pragma Import (C, pthread_attr_destroy, "pthread_attr_destroy");
+ 
+    function pthread_attr_setdetachstate
+      (attr        : access pthread_attr_t;
+       detachstate : int) return int;
+    pragma Import (C, pthread_attr_setdetachstate);
+ 
+    function pthread_attr_setstacksize
+      (attr      : access pthread_attr_t;
+       stacksize : size_t) return int;
+    pragma Import (C, pthread_attr_setstacksize, "pthread_attr_setstacksize");
+ 
+    function pthread_create
+      (thread        : access pthread_t;
+       attributes    : access pthread_attr_t;
+       start_routine : Thread_Body;
+       arg           : System.Address) return int;
+    pragma Import (C, pthread_create, "pthread_create");
+ 
+    procedure pthread_exit (status : System.Address);
+    pragma Import (C, pthread_exit, "pthread_exit");
+ 
+    function pthread_self return pthread_t;
+    pragma Import (C, pthread_self, "pthread_self");
+ 
+    --------------------------
+    -- POSIX.1c  Section 17 --
+    --------------------------
+ 
+    function pthread_setspecific
+      (key   : pthread_key_t;
+       value : System.Address) return int;
+    pragma Import (C, pthread_setspecific, "pthread_setspecific");
+ 
+    function pthread_getspecific (key : pthread_key_t) return System.Address;
+    pragma Import (C, pthread_getspecific, "pthread_getspecific");
+ 
+    type destructor_pointer is access procedure (arg : System.Address);
+    pragma Convention (C, destructor_pointer);
+ 
+    function pthread_key_create
+      (key        : access pthread_key_t;
+       destructor : destructor_pointer) return int;
+    pragma Import (C, pthread_key_create, "pthread_key_create");
+ 
+    ------------------------------------------------------------
+    --   Binary Semaphore Wrapper to Support Interrupt Tasks  --
+    ------------------------------------------------------------
+ 
+    type Binary_Semaphore_Id is new rtems_id;
+ 
+    function Binary_Semaphore_Create return Binary_Semaphore_Id;
+    pragma Import (
+       C,
+       Binary_Semaphore_Create,
+       "__gnat_binary_semaphore_create");
+ 
+    function Binary_Semaphore_Delete (ID : Binary_Semaphore_Id) return int;
+    pragma Import (
+       C,
+       Binary_Semaphore_Delete,
+       "__gnat_binary_semaphore_delete");
+ 
+    function Binary_Semaphore_Obtain (ID : Binary_Semaphore_Id) return int;
+    pragma Import (
+       C,
+       Binary_Semaphore_Obtain,
+       "__gnat_binary_semaphore_obtain");
+ 
+    function Binary_Semaphore_Release (ID : Binary_Semaphore_Id) return int;
+    pragma Import (
+       C,
+       Binary_Semaphore_Release,
+       "__gnat_binary_semaphore_release");
+ 
+    function Binary_Semaphore_Flush (ID : Binary_Semaphore_Id) return int;
+    pragma Import (
+       C,
+       Binary_Semaphore_Flush,
+       "__gnat_binary_semaphore_flush");
+ 
+    ------------------------------------------------------------
+    -- Hardware Interrupt Wrappers to Support Interrupt Tasks --
+    ------------------------------------------------------------
+ 
+    type Interrupt_Handler is access procedure (parameter : System.Address);
+    pragma Convention (C, Interrupt_Handler);
+    type Interrupt_Vector is new System.Address;
+ 
+    function Interrupt_Connect
+      (vector    : Interrupt_Vector;
+       handler   : Interrupt_Handler;
+       parameter : System.Address := System.Null_Address) return int;
+    pragma Import (C, Interrupt_Connect, "__gnat_interrupt_connect");
+    --  Use this to set up an user handler. The routine installs a
+    --  a user handler which is invoked after RTEMS has saved enough
+    --  context for a high-level language routine to be safely invoked.
+ 
+    function Interrupt_Vector_Get
+      (Vector : Interrupt_Vector) return Interrupt_Handler;
+    pragma Import (C, Interrupt_Vector_Get, "__gnat_interrupt_get");
+    --  Use this to get the existing handler for later restoral.
+ 
+    procedure Interrupt_Vector_Set
+      (Vector  : Interrupt_Vector;
+       Handler : Interrupt_Handler);
+    pragma Import (C, Interrupt_Vector_Set, "__gnat_interrupt_set");
+    --  Use this to restore a handler obtained using Interrupt_Vector_Get.
+ 
+    function Interrupt_Number_To_Vector (intNum : int) return Interrupt_Vector;
+    --  Convert a logical interrupt number to the hardware interrupt vector
+    --  number used to connect the interrupt.
+    pragma Import (
+       C,
+       Interrupt_Number_To_Vector,
+       "__gnat_interrupt_number_to_vector"
+    );
+ 
+ private
+ 
+    type sigset_t is new int;
+ 
+    type pid_t is new int;
+ 
+    type time_t is new Long_Long_Integer;
+ 
+    type timespec is record
+       tv_sec  : time_t;
+       tv_nsec : long;
+    end record;
+    pragma Convention (C, timespec);
+ 
+    CLOCK_REALTIME :  constant clockid_t := System.OS_Constants.CLOCK_REALTIME;
+    CLOCK_MONOTONIC : constant clockid_t := System.OS_Constants.CLOCK_MONOTONIC;
+ 
+    subtype char_array is Interfaces.C.char_array;
+ 
+    type pthread_attr_t is record
+       Data : char_array (1 .. OS_Constants.PTHREAD_ATTR_SIZE);
+    end record;
+    pragma Convention (C, pthread_attr_t);
+    for pthread_attr_t'Alignment use Interfaces.C.double'Alignment;
+ 
+    type pthread_condattr_t is record
+       Data : char_array (1 .. OS_Constants.PTHREAD_CONDATTR_SIZE);
+    end record;
+    pragma Convention (C, pthread_condattr_t);
+    for pthread_condattr_t'Alignment use Interfaces.C.double'Alignment;
+ 
+    type pthread_mutexattr_t is record
+       Data : char_array (1 .. OS_Constants.PTHREAD_MUTEXATTR_SIZE);
+    end  record;
+    pragma Convention (C, pthread_mutexattr_t);
+    for pthread_mutexattr_t'Alignment use Interfaces.C.int'Alignment;
+ 
+    type pthread_rwlockattr_t is record
+       Data : char_array (1 .. OS_Constants.PTHREAD_RWLOCKATTR_SIZE);
+    end record;
+    pragma Convention (C, pthread_rwlockattr_t);
+    for pthread_rwlockattr_t'Alignment use Interfaces.C.int'Alignment;
+ 
+    type pthread_t is new rtems_id;
+ 
+    type pthread_mutex_t is record
+       Data : char_array (1 .. OS_Constants.PTHREAD_MUTEX_SIZE);
+    end record;
+    pragma Convention (C, pthread_mutex_t);
+    for pthread_mutex_t'Alignment use Interfaces.C.double'Alignment;
+ 
+    type pthread_rwlock_t is record
+       Data : char_array (1 .. OS_Constants.PTHREAD_RWLOCK_SIZE);
+    end record;
+    pragma Convention (C, pthread_rwlock_t);
+    for pthread_rwlock_t'Alignment use Interfaces.C.size_t'Alignment;
+ 
+    type pthread_cond_t is record
+       Data : char_array (1 .. OS_Constants.PTHREAD_COND_SIZE);
+    end record;
+    pragma Convention (C, pthread_cond_t);
+    for pthread_cond_t'Alignment use Interfaces.C.size_t'Alignment;
+ 
+    type pthread_key_t is new rtems_id;
+ 
+    No_Key : constant pthread_key_t := 0;
+ 
+ end System.OS_Interface;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-osinte__solaris.adb gcc-8.1.0/gcc/ada/libgnarl/s-osinte__solaris.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-osinte__solaris.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-osinte__solaris.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,87 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                   S Y S T E M . O S _ I N T E R F A C E                  --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --             Copyright (C) 1991-2017, Florida State University            --
+ --                     Copyright (C) 1995-2018, AdaCore                     --
+ --                                                                          --
+ -- GNAT is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is a Solaris version of this package
+ 
+ --  This package encapsulates all direct interfaces to OS services
+ --  that are needed by children of System.
+ 
+ pragma Polling (Off);
+ --  Turn off polling, we do not want ATC polling to take place during
+ --  tasking operations. It causes infinite loops and other problems.
+ 
+ with Interfaces.C; use Interfaces.C;
+ 
+ package body System.OS_Interface is
+ 
+    -----------------
+    -- To_Duration --
+    -----------------
+ 
+    function To_Duration (TS : timespec) return Duration is
+    begin
+       return Duration (TS.tv_sec) + Duration (TS.tv_nsec) / 10#1#E9;
+    end To_Duration;
+ 
+    -----------------
+    -- To_Timespec --
+    -----------------
+ 
+    function To_Timespec (D : Duration) return timespec is
+       S : time_t;
+       F : Duration;
+ 
+    begin
+       S := time_t (Long_Long_Integer (D));
+       F := D - Duration (S);
+ 
+       --  If F has negative value due to a round-up, adjust for positive F
+ 
+       if F < 0.0 then
+          S := S - 1;
+          F := F + 1.0;
+       end if;
+ 
+       return timespec'(tv_sec  => S,
+                        tv_nsec => long (Long_Long_Integer (F * 10#1#E9)));
+    end To_Timespec;
+ 
+    ------------------
+    -- pthread_init --
+    ------------------
+ 
+    procedure pthread_init is
+    begin
+       null;
+    end pthread_init;
+ 
+ end System.OS_Interface;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-osinte__solaris.ads gcc-8.1.0/gcc/ada/libgnarl/s-osinte__solaris.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-osinte__solaris.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-osinte__solaris.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,555 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                   S Y S T E M . O S _ I N T E R F A C E                  --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --             Copyright (C) 1991-2017, Florida State University            --
+ --          Copyright (C) 1995-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is a Solaris (native) version of this package
+ 
+ --  This package includes all direct interfaces to OS services
+ --  that are needed by the tasking run-time (libgnarl).
+ 
+ --  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 Ada.Unchecked_Conversion;
+ 
+ package System.OS_Interface is
+    pragma Preelaborate;
+ 
+    pragma Linker_Options ("-lposix4");
+    pragma Linker_Options ("-lthread");
+ 
+    subtype int            is Interfaces.C.int;
+    subtype short          is Interfaces.C.short;
+    subtype long           is Interfaces.C.long;
+    subtype unsigned       is Interfaces.C.unsigned;
+    subtype unsigned_short is Interfaces.C.unsigned_short;
+    subtype unsigned_long  is Interfaces.C.unsigned_long;
+    subtype unsigned_char  is Interfaces.C.unsigned_char;
+    subtype plain_char     is Interfaces.C.plain_char;
+    subtype size_t         is Interfaces.C.size_t;
+ 
+    -----------
+    -- Errno --
+    -----------
+ 
+    function errno return int;
+    pragma Import (C, errno, "__get_errno");
+ 
+    EAGAIN    : constant := 11;
+    EINTR     : constant := 4;
+    EINVAL    : constant := 22;
+    ENOMEM    : constant := 12;
+    ETIME     : constant := 62;
+    ETIMEDOUT : constant := 145;
+ 
+    -------------
+    -- Signals --
+    -------------
+ 
+    Max_Interrupt : constant := 45;
+    type Signal is new int range 0 .. Max_Interrupt;
+    for Signal'Size use int'Size;
+ 
+    SIGHUP     : constant := 1; --  hangup
+    SIGINT     : constant := 2; --  interrupt (rubout)
+    SIGQUIT    : constant := 3; --  quit (ASCD FS)
+    SIGILL     : constant := 4; --  illegal instruction (not reset)
+    SIGTRAP    : constant := 5; --  trace trap (not reset)
+    SIGIOT     : constant := 6; --  IOT instruction
+    SIGABRT    : constant := 6; --  used by abort, replace SIGIOT in the  future
+    SIGEMT     : constant := 7; --  EMT instruction
+    SIGFPE     : constant := 8; --  floating point exception
+    SIGKILL    : constant := 9; --  kill (cannot be caught or ignored)
+    SIGBUS     : constant := 10; --  bus error
+    SIGSEGV    : constant := 11; --  segmentation violation
+    SIGSYS     : constant := 12; --  bad argument to system call
+    SIGPIPE    : constant := 13; --  write on a pipe with no one to read it
+    SIGALRM    : constant := 14; --  alarm clock
+    SIGTERM    : constant := 15; --  software termination signal from kill
+    SIGUSR1    : constant := 16; --  user defined signal 1
+    SIGUSR2    : constant := 17; --  user defined signal 2
+    SIGCLD     : constant := 18; --  alias for SIGCHLD
+    SIGCHLD    : constant := 18; --  child status change
+    SIGPWR     : constant := 19; --  power-fail restart
+    SIGWINCH   : constant := 20; --  window size change
+    SIGURG     : constant := 21; --  urgent condition on IO channel
+    SIGPOLL    : constant := 22; --  pollable event occurred
+    SIGIO      : constant := 22; --  I/O possible (Solaris SIGPOLL alias)
+    SIGSTOP    : constant := 23; --  stop (cannot be caught or ignored)
+    SIGTSTP    : constant := 24; --  user stop requested from tty
+    SIGCONT    : constant := 25; --  stopped process has been continued
+    SIGTTIN    : constant := 26; --  background tty read attempted
+    SIGTTOU    : constant := 27; --  background tty write attempted
+    SIGVTALRM  : constant := 28; --  virtual timer expired
+    SIGPROF    : constant := 29; --  profiling timer expired
+    SIGXCPU    : constant := 30; --  CPU time limit exceeded
+    SIGXFSZ    : constant := 31; --  filesize limit exceeded
+    SIGWAITING : constant := 32; --  process's lwps blocked (Solaris)
+    SIGLWP     : constant := 33; --  used by thread library (Solaris)
+    SIGFREEZE  : constant := 34; --  used by CPR (Solaris)
+    SIGTHAW    : constant := 35; --  used by CPR (Solaris)
+    SIGCANCEL  : constant := 36; --  thread cancellation signal (libthread)
+ 
+    type Signal_Set is array (Natural range <>) of Signal;
+ 
+    Unmasked : constant Signal_Set := (SIGTRAP, SIGLWP, SIGPROF);
+ 
+    --  Following signals should not be disturbed.
+    --  See c-posix-signals.c in FLORIST.
+ 
+    Reserved : constant Signal_Set :=
+      (SIGKILL, SIGSTOP, SIGWAITING, SIGCANCEL, SIGTRAP, SIGSEGV);
+ 
+    type sigset_t is private;
+ 
+    function sigaddset (set : access sigset_t; sig : Signal) return int;
+    pragma Import (C, sigaddset, "sigaddset");
+ 
+    function sigdelset (set : access sigset_t; sig : Signal) return int;
+    pragma Import (C, sigdelset, "sigdelset");
+ 
+    function sigfillset (set : access sigset_t) return int;
+    pragma Import (C, sigfillset, "sigfillset");
+ 
+    function sigismember (set : access sigset_t; sig : Signal) return int;
+    pragma Import (C, sigismember, "sigismember");
+ 
+    function sigemptyset (set : access sigset_t) return int;
+    pragma Import (C, sigemptyset, "sigemptyset");
+ 
+    type union_type_3 is new String (1 .. 116);
+    type siginfo_t is record
+       si_signo     : int;
+       si_code      : int;
+       si_errno     : int;
+       X_data       : union_type_3;
+    end record;
+    pragma Convention (C, siginfo_t);
+ 
+    --  The types mcontext_t and gregset_t are part of the ucontext_t
+    --  information, which is specific to Solaris2.4 for SPARC
+    --  The ucontext_t info seems to be used by the handler
+    --  for SIGSEGV to decide whether it is a Storage_Error (stack overflow) or
+    --  a Constraint_Error (bad pointer).  The original code that did this
+    --  is suspect, so it is not clear whether we really need this part of
+    --  the signal context information, or perhaps something else.
+    --  More analysis is needed, after which these declarations may need to
+    --  be changed.
+ 
+    type greg_t is new int;
+ 
+    type gregset_t is array (0 .. 18) of greg_t;
+ 
+    type union_type_2 is new String (1 .. 128);
+    type record_type_1 is record
+       fpu_fr       : union_type_2;
+       fpu_q        : System.Address;
+       fpu_fsr      : unsigned;
+       fpu_qcnt     : unsigned_char;
+       fpu_q_entrysize  : unsigned_char;
+       fpu_en       : unsigned_char;
+    end record;
+    pragma Convention (C, record_type_1);
+ 
+    type array_type_7 is array (Integer range 0 .. 20) of long;
+    type mcontext_t is record
+       gregs        : gregset_t;
+       gwins        : System.Address;
+       fpregs       : record_type_1;
+       filler       : array_type_7;
+    end record;
+    pragma Convention (C, mcontext_t);
+ 
+    type record_type_2 is record
+       ss_sp        : System.Address;
+       ss_size      : int;
+       ss_flags     : int;
+    end record;
+    pragma Convention (C, record_type_2);
+ 
+    type array_type_8 is array (Integer range 0 .. 22) of long;
+    type ucontext_t is record
+       uc_flags     : unsigned_long;
+       uc_link      : System.Address;
+       uc_sigmask   : sigset_t;
+       uc_stack     : record_type_2;
+       uc_mcontext  : mcontext_t;
+       uc_filler    : array_type_8;
+    end record;
+    pragma Convention (C, ucontext_t);
+ 
+    type Signal_Handler is access procedure
+      (signo   : Signal;
+       info    : access siginfo_t;
+       context : access ucontext_t);
+ 
+    type union_type_1 is new plain_char;
+    type array_type_2 is array (Integer range 0 .. 1) of int;
+    type struct_sigaction is record
+       sa_flags   : int;
+       sa_handler : System.Address;
+       sa_mask    : sigset_t;
+       sa_resv    : array_type_2;
+    end record;
+    pragma Convention (C, struct_sigaction);
+    type struct_sigaction_ptr is access all struct_sigaction;
+ 
+    SIG_BLOCK   : constant := 1;
+    SIG_UNBLOCK : constant := 2;
+    SIG_SETMASK : constant := 3;
+ 
+    SIG_DFL : constant := 0;
+    SIG_IGN : constant := 1;
+ 
+    function sigaction
+      (sig  : Signal;
+       act  : struct_sigaction_ptr;
+       oact : struct_sigaction_ptr) return int;
+    pragma Import (C, sigaction, "sigaction");
+ 
+    ----------
+    -- Time --
+    ----------
+ 
+    type timespec is private;
+ 
+    type clockid_t is new int;
+ 
+    function clock_gettime
+      (clock_id : clockid_t; tp : access timespec) return int;
+    pragma Import (C, clock_gettime, "clock_gettime");
+ 
+    function clock_getres
+      (clock_id : clockid_t; res : access timespec) return int;
+    pragma Import (C, clock_getres, "clock_getres");
+ 
+    function To_Duration (TS : timespec) return Duration;
+    pragma Inline (To_Duration);
+ 
+    function To_Timespec (D : Duration) return timespec;
+    pragma Inline (To_Timespec);
+ 
+    -------------
+    -- Process --
+    -------------
+ 
+    type pid_t is private;
+ 
+    function kill (pid : pid_t; sig : Signal) return int;
+    pragma Import (C, kill, "kill");
+ 
+    function getpid return pid_t;
+    pragma Import (C, getpid, "getpid");
+ 
+    -------------
+    -- Threads --
+    -------------
+ 
+    type Thread_Body is access
+      function (arg : System.Address) return System.Address;
+    pragma Convention (C, Thread_Body);
+ 
+    function Thread_Body_Access is new
+      Ada.Unchecked_Conversion (System.Address, Thread_Body);
+ 
+    THR_DETACHED  : constant := 64;
+    THR_BOUND     : constant := 1;
+    THR_NEW_LWP   : constant := 2;
+    USYNC_THREAD  : constant := 0;
+ 
+    type thread_t is new unsigned;
+    subtype Thread_Id is thread_t;
+    --  These types should be commented ???
+ 
+    function To_thread_t is new Ada.Unchecked_Conversion (Integer, thread_t);
+ 
+    type mutex_t is limited private;
+ 
+    type cond_t is limited private;
+ 
+    type thread_key_t is private;
+ 
+    function thr_create
+      (stack_base    : System.Address;
+       stack_size    : size_t;
+       start_routine : Thread_Body;
+       arg           : System.Address;
+       flags         : int;
+       new_thread    : access thread_t) return int;
+    pragma Import (C, thr_create, "thr_create");
+ 
+    function thr_min_stack return size_t;
+    pragma Import (C, thr_min_stack, "thr_min_stack");
+ 
+    function thr_self return thread_t;
+    pragma Import (C, thr_self, "thr_self");
+ 
+    function mutex_init
+      (mutex : access mutex_t;
+       mtype : int;
+       arg   : System.Address) return int;
+    pragma Import (C, mutex_init, "mutex_init");
+ 
+    function mutex_destroy (mutex : access mutex_t) return int;
+    pragma Import (C, mutex_destroy, "mutex_destroy");
+ 
+    function mutex_lock (mutex : access mutex_t) return int;
+    pragma Import (C, mutex_lock, "mutex_lock");
+ 
+    function mutex_unlock (mutex : access mutex_t) return int;
+    pragma Import (C, mutex_unlock, "mutex_unlock");
+ 
+    function cond_init
+      (cond  : access cond_t;
+       ctype : int;
+       arg   : int) return int;
+    pragma Import (C, cond_init, "cond_init");
+ 
+    function cond_wait
+      (cond : access cond_t; mutex : access mutex_t) return int;
+    pragma Import (C, cond_wait, "cond_wait");
+ 
+    function cond_timedwait
+      (cond    : access cond_t;
+       mutex   : access mutex_t;
+       abstime : access timespec) return int;
+    pragma Import (C, cond_timedwait, "cond_timedwait");
+ 
+    function cond_signal (cond : access cond_t) return int;
+    pragma Import (C, cond_signal, "cond_signal");
+ 
+    function cond_destroy (cond : access cond_t) return int;
+    pragma Import (C, cond_destroy, "cond_destroy");
+ 
+    function thr_setspecific
+      (key : thread_key_t; value : System.Address) return int;
+    pragma Import (C, thr_setspecific, "thr_setspecific");
+ 
+    function thr_getspecific
+      (key   : thread_key_t;
+       value : access System.Address) return int;
+    pragma Import (C, thr_getspecific, "thr_getspecific");
+ 
+    function thr_keycreate
+      (key : access thread_key_t; destructor : System.Address) return int;
+    pragma Import (C, thr_keycreate, "thr_keycreate");
+ 
+    function thr_setprio (thread : thread_t; priority : int) return int;
+    pragma Import (C, thr_setprio, "thr_setprio");
+ 
+    procedure thr_exit (status : System.Address);
+    pragma Import (C, thr_exit, "thr_exit");
+ 
+    function thr_setconcurrency (new_level : int) return int;
+    pragma Import (C, thr_setconcurrency, "thr_setconcurrency");
+ 
+    function sigwait (set : access sigset_t; sig : access Signal) return int;
+    pragma Import (C, sigwait, "__posix_sigwait");
+ 
+    function thr_kill (thread : thread_t; sig : Signal) return int;
+    pragma Import (C, thr_kill, "thr_kill");
+ 
+    function thr_sigsetmask
+      (how  : int;
+       set  : access sigset_t;
+       oset : access sigset_t) return int;
+    pragma Import (C, thr_sigsetmask, "thr_sigsetmask");
+ 
+    function pthread_sigmask
+      (how  : int;
+       set  : access sigset_t;
+       oset : access sigset_t) return int;
+    pragma Import (C, pthread_sigmask, "thr_sigsetmask");
+ 
+    function thr_suspend (target_thread : thread_t) return int;
+    pragma Import (C, thr_suspend, "thr_suspend");
+ 
+    function thr_continue (target_thread : thread_t) return int;
+    pragma Import (C, thr_continue, "thr_continue");
+ 
+    procedure thr_yield;
+    pragma Import (C, thr_yield, "thr_yield");
+ 
+    ---------
+    -- LWP --
+    ---------
+ 
+    P_PID   : constant := 0;
+    P_LWPID : constant := 8;
+ 
+    PC_GETCID    : constant := 0;
+    PC_GETCLINFO : constant := 1;
+    PC_SETPARMS  : constant := 2;
+    PC_GETPARMS  : constant := 3;
+    PC_ADMIN     : constant := 4;
+ 
+    PC_CLNULL : constant := -1;
+ 
+    RT_NOCHANGE : constant := -1;
+    RT_TQINF    : constant := -2;
+    RT_TQDEF    : constant := -3;
+ 
+    PC_CLNMSZ : constant := 16;
+ 
+    PC_VERSION : constant := 1;
+ 
+    type lwpid_t is new int;
+ 
+    type pri_t is new short;
+ 
+    type id_t is new long;
+ 
+    P_MYID : constant := -1;
+    --  The specified LWP or process is the current one
+ 
+    type struct_pcinfo is record
+       pc_cid    : id_t;
+       pc_clname : String (1 .. PC_CLNMSZ);
+       rt_maxpri : short;
+    end record;
+    pragma Convention (C, struct_pcinfo);
+ 
+    type struct_pcparms is record
+       pc_cid     : id_t;
+       rt_pri     : pri_t;
+       rt_tqsecs  : long;
+       rt_tqnsecs : long;
+    end record;
+    pragma Convention (C, struct_pcparms);
+ 
+    function priocntl
+      (ver     : int;
+       id_type : int;
+       id      : lwpid_t;
+       cmd     : int;
+       arg     : System.Address) return Interfaces.C.long;
+    pragma Import (C, priocntl, "__priocntl");
+ 
+    function lwp_self return lwpid_t;
+    pragma Import (C, lwp_self, "_lwp_self");
+ 
+    type processorid_t is new int;
+    type processorid_t_ptr is access all processorid_t;
+ 
+    --  Constants for function processor_bind
+ 
+    PBIND_QUERY : constant processorid_t := -2;
+    --  The processor bindings are not changed
+ 
+    PBIND_NONE  : constant processorid_t := -1;
+    --  The processor bindings of the specified LWPs are cleared
+ 
+    --  Flags for function p_online
+ 
+    PR_OFFLINE : constant int := 1;
+    --  Processor is offline, as quiet as possible
+ 
+    PR_ONLINE  : constant int := 2;
+    --  Processor online
+ 
+    PR_STATUS  : constant int := 3;
+    --  Value passed to p_online to request status
+ 
+    function p_online (processorid : processorid_t; flag : int) return int;
+    pragma Import (C, p_online, "p_online");
+ 
+    function processor_bind
+      (id_type : int;
+       id      : id_t;
+       proc_id : processorid_t;
+       obind   : processorid_t_ptr) return int;
+    pragma Import (C, processor_bind, "processor_bind");
+ 
+    type psetid_t is new int;
+ 
+    function pset_create (pset : access psetid_t) return int;
+    pragma Import (C, pset_create, "pset_create");
+ 
+    function pset_assign
+      (pset    : psetid_t;
+       proc_id : processorid_t;
+       opset   : access psetid_t) return int;
+    pragma Import (C, pset_assign, "pset_assign");
+ 
+    function pset_bind
+      (pset    : psetid_t;
+       id_type : int;
+       id      : id_t;
+       opset   : access psetid_t) return int;
+    pragma Import (C, pset_bind, "pset_bind");
+ 
+    procedure pthread_init;
+    --  Dummy procedure to share s-intman.adb with other Solaris targets
+ 
+ private
+ 
+    type array_type_1 is array (0 .. 3) of unsigned_long;
+    type sigset_t is record
+       X_X_sigbits : array_type_1;
+    end record;
+    pragma Convention (C, sigset_t);
+ 
+    type pid_t is new long;
+ 
+    type time_t is new long;
+ 
+    type timespec is record
+       tv_sec  : time_t;
+       tv_nsec : long;
+    end record;
+    pragma Convention (C, timespec);
+ 
+    type array_type_9 is array (0 .. 3) of unsigned_char;
+    type record_type_3 is record
+       flag  : array_type_9;
+       Xtype : unsigned_long;
+    end record;
+    pragma Convention (C, record_type_3);
+ 
+    type mutex_t is record
+       flags : record_type_3;
+       lock  : String (1 .. 8);
+       data  : String (1 .. 8);
+    end record;
+    pragma Convention (C, mutex_t);
+ 
+    type cond_t is record
+       flag  : array_type_9;
+       Xtype : unsigned_long;
+       data  : String (1 .. 8);
+    end record;
+    pragma Convention (C, cond_t);
+ 
+    type thread_key_t is new unsigned;
+ 
+ end System.OS_Interface;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-osinte__vxworks.adb gcc-8.1.0/gcc/ada/libgnarl/s-osinte__vxworks.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-osinte__vxworks.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-osinte__vxworks.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,238 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                  GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                --
+ --                                                                          --
+ --                   S Y S T E M . O S _ I N T E R F A C E                  --
+ --                                                                          --
+ --                                   B o d y                                --
+ --                                                                          --
+ --         Copyright (C) 1997-2018, Free Software Foundation, Inc.          --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is the VxWorks version
+ 
+ --  This package encapsulates all direct interfaces to OS services that are
+ --  needed by children of System.
+ 
+ pragma Polling (Off);
+ --  Turn off polling, we do not want ATC polling to take place during tasking
+ --  operations. It causes infinite loops and other problems.
+ 
+ package body System.OS_Interface is
+ 
+    use type Interfaces.C.int;
+ 
+    Low_Priority : constant := 255;
+    --  VxWorks native (default) lowest scheduling priority
+ 
+    -----------------
+    -- To_Duration --
+    -----------------
+ 
+    function To_Duration (TS : timespec) return Duration is
+    begin
+       return Duration (TS.ts_sec) + Duration (TS.ts_nsec) / 10#1#E9;
+    end To_Duration;
+ 
+    -----------------
+    -- To_Timespec --
+    -----------------
+ 
+    function To_Timespec (D : Duration) return timespec is
+       S : time_t;
+       F : Duration;
+ 
+    begin
+       S := time_t (Long_Long_Integer (D));
+       F := D - Duration (S);
+ 
+       --  If F is negative due to a round-up, adjust for positive F value
+ 
+       if F < 0.0 then
+          S := S - 1;
+          F := F + 1.0;
+       end if;
+ 
+       return timespec'(ts_sec  => S,
+                        ts_nsec => long (Long_Long_Integer (F * 10#1#E9)));
+    end To_Timespec;
+ 
+    -------------------------
+    -- To_VxWorks_Priority --
+    -------------------------
+ 
+    function To_VxWorks_Priority (Priority : int) return int is
+    begin
+       return Low_Priority - Priority;
+    end To_VxWorks_Priority;
+ 
+    --------------------
+    -- To_Clock_Ticks --
+    --------------------
+ 
+    --  ??? - For now, we'll always get the system clock rate since it is
+    --  allowed to be changed during run-time in VxWorks. A better method would
+    --  be to provide an operation to set it that so we can always know its
+    --  value.
+ 
+    --  Another thing we should probably allow for is a resultant tick count
+    --  greater than int'Last. This should probably be a procedure with two
+    --  output parameters, one in the range 0 .. int'Last, and another
+    --  representing the overflow count.
+ 
+    function To_Clock_Ticks (D : Duration) return int is
+       Ticks          : Long_Long_Integer;
+       Rate_Duration  : Duration;
+       Ticks_Duration : Duration;
+ 
+    begin
+       if D < 0.0 then
+          return ERROR;
+       end if;
+ 
+       --  Ensure that the duration can be converted to ticks
+       --  at the current clock tick rate without overflowing.
+ 
+       Rate_Duration := Duration (sysClkRateGet);
+ 
+       if D > (Duration'Last / Rate_Duration) then
+          Ticks := Long_Long_Integer (int'Last);
+       else
+          Ticks_Duration := D * Rate_Duration;
+          Ticks := Long_Long_Integer (Ticks_Duration);
+ 
+          if Ticks_Duration > Duration (Ticks) then
+             Ticks := Ticks + 1;
+          end if;
+ 
+          if Ticks > Long_Long_Integer (int'Last) then
+             Ticks := Long_Long_Integer (int'Last);
+          end if;
+       end if;
+ 
+       return int (Ticks);
+    end To_Clock_Ticks;
+ 
+    -----------------------------
+    -- Binary_Semaphore_Create --
+    -----------------------------
+ 
+    function Binary_Semaphore_Create return Binary_Semaphore_Id is
+    begin
+       return Binary_Semaphore_Id (semBCreate (SEM_Q_FIFO, SEM_EMPTY));
+    end Binary_Semaphore_Create;
+ 
+    -----------------------------
+    -- Binary_Semaphore_Delete --
+    -----------------------------
+ 
+    function Binary_Semaphore_Delete (ID : Binary_Semaphore_Id) return int is
+    begin
+       return semDelete (SEM_ID (ID));
+    end Binary_Semaphore_Delete;
+ 
+    -----------------------------
+    -- Binary_Semaphore_Obtain --
+    -----------------------------
+ 
+    function Binary_Semaphore_Obtain (ID : Binary_Semaphore_Id) return int is
+    begin
+       return semTake (SEM_ID (ID), WAIT_FOREVER);
+    end Binary_Semaphore_Obtain;
+ 
+    ------------------------------
+    -- Binary_Semaphore_Release --
+    ------------------------------
+ 
+    function Binary_Semaphore_Release (ID : Binary_Semaphore_Id) return int is
+    begin
+       return semGive (SEM_ID (ID));
+    end Binary_Semaphore_Release;
+ 
+    ----------------------------
+    -- Binary_Semaphore_Flush --
+    ----------------------------
+ 
+    function Binary_Semaphore_Flush (ID : Binary_Semaphore_Id) return int is
+    begin
+       return semFlush (SEM_ID (ID));
+    end Binary_Semaphore_Flush;
+ 
+    ----------
+    -- kill --
+    ----------
+ 
+    function kill (pid : t_id; sig : Signal) return int is
+    begin
+       return System.VxWorks.Ext.kill (pid, int (sig));
+    end kill;
+ 
+    -----------------------
+    -- Interrupt_Connect --
+    -----------------------
+ 
+    function Interrupt_Connect
+      (Vector    : Interrupt_Vector;
+       Handler   : Interrupt_Handler;
+       Parameter : System.Address := System.Null_Address) return int is
+    begin
+       return
+         System.VxWorks.Ext.Interrupt_Connect
+         (System.VxWorks.Ext.Interrupt_Vector (Vector),
+          System.VxWorks.Ext.Interrupt_Handler (Handler),
+          Parameter);
+    end Interrupt_Connect;
+ 
+    -----------------------
+    -- Interrupt_Context --
+    -----------------------
+ 
+    function Interrupt_Context return int is
+    begin
+       return System.VxWorks.Ext.Interrupt_Context;
+    end Interrupt_Context;
+ 
+    --------------------------------
+    -- Interrupt_Number_To_Vector --
+    --------------------------------
+ 
+    function Interrupt_Number_To_Vector
+      (intNum : int) return Interrupt_Vector
+    is
+    begin
+       return Interrupt_Vector
+         (System.VxWorks.Ext.Interrupt_Number_To_Vector (intNum));
+    end Interrupt_Number_To_Vector;
+ 
+    -----------------
+    -- Current_CPU --
+    -----------------
+ 
+    function Current_CPU return Multiprocessors.CPU is
+    begin
+       --  ??? Should use vxworks multiprocessor interface
+ 
+       return Multiprocessors.CPU'First;
+    end Current_CPU;
+ 
+ end System.OS_Interface;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-osinte__vxworks.ads gcc-8.1.0/gcc/ada/libgnarl/s-osinte__vxworks.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-osinte__vxworks.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-osinte__vxworks.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,523 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                  GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                --
+ --                                                                          --
+ --                    S Y S T E M . O S _ I N T E R F A C E                 --
+ --                                                                          --
+ --                                   S p e c                                --
+ --                                                                          --
+ --            Copyright (C) 1991-2017, Florida State University             --
+ --          Copyright (C) 1995-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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. GNARL 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is the VxWorks version of this package
+ 
+ --  This package encapsulates all direct interfaces to OS services that are
+ --  needed by the tasking run-time (libgnarl).
+ 
+ --  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.VxWorks;
+ with System.VxWorks.Ext;
+ with System.Multiprocessors;
+ 
+ package System.OS_Interface is
+    pragma Preelaborate;
+ 
+    subtype int             is Interfaces.C.int;
+    subtype unsigned        is Interfaces.C.unsigned;
+    subtype short           is Short_Integer;
+    type unsigned_int       is mod 2 ** int'Size;
+    type long               is new Long_Integer;
+    type unsigned_long      is mod 2 ** long'Size;
+    type long_long          is new Long_Long_Integer;
+    type unsigned_long_long is mod 2 ** long_long'Size;
+    type size_t             is mod 2 ** Standard'Address_Size;
+ 
+    -----------
+    -- Errno --
+    -----------
+ 
+    function errno return int;
+    pragma Import (C, errno, "errnoGet");
+ 
+    EINTR     : constant := 4;
+    EAGAIN    : constant := 35;
+    ENOMEM    : constant := 12;
+    EINVAL    : constant := 22;
+    ETIMEDOUT : constant := 60;
+ 
+    FUNC_ERR  : constant := -1;
+ 
+    ----------------------------
+    -- Signals and interrupts --
+    ----------------------------
+ 
+    NSIG : constant := 64;
+    --  Number of signals on the target OS
+    type Signal is new int range 0 .. Interfaces.C."-" (NSIG, 1);
+ 
+    Max_HW_Interrupt : constant := System.VxWorks.Num_HW_Interrupts - 1;
+    type HW_Interrupt is new int range 0 .. Max_HW_Interrupt;
+ 
+    Max_Interrupt : constant := Max_HW_Interrupt;
+    subtype Interrupt_Range is Natural range 0 .. Max_HW_Interrupt;
+    --  For s-interr
+ 
+    --  Signals common to Vxworks 5.x and 6.x
+ 
+    SIGILL    : constant :=  4; --  illegal instruction (not reset when caught)
+    SIGABRT   : constant :=  6; --  used by abort, replace SIGIOT in the future
+    SIGFPE    : constant :=  8; --  floating point exception
+    SIGBUS    : constant := 10; --  bus error
+    SIGSEGV   : constant := 11; --  segmentation violation
+ 
+    --  Signals specific to VxWorks 6.x
+ 
+    SIGHUP    : constant :=  1; --  hangup
+    SIGINT    : constant :=  2; --  interrupt
+    SIGQUIT   : constant :=  3; --  quit
+    SIGTRAP   : constant :=  5; --  trace trap (not reset when caught)
+    SIGEMT    : constant :=  7; --  EMT instruction
+    SIGKILL   : constant :=  9; --  kill
+    SIGFMT    : constant := 12; --  STACK FORMAT ERROR (not posix)
+    SIGPIPE   : constant := 13; --  write on a pipe with no one to read it
+    SIGALRM   : constant := 14; --  alarm clock
+    SIGTERM   : constant := 15; --  software termination signal from kill
+    SIGCNCL   : constant := 16; --  pthreads cancellation signal
+    SIGSTOP   : constant := 17; --  sendable stop signal not from tty
+    SIGTSTP   : constant := 18; --  stop signal from tty
+    SIGCONT   : constant := 19; --  continue a stopped process
+    SIGCHLD   : constant := 20; --  to parent on child stop or exit
+    SIGTTIN   : constant := 21; --  to readers pgrp upon background tty read
+    SIGTTOU   : constant := 22; --  like TTIN for output
+ 
+    SIGRES1   : constant := 23; --  reserved signal number (Not POSIX)
+    SIGRES2   : constant := 24; --  reserved signal number (Not POSIX)
+    SIGRES3   : constant := 25; --  reserved signal number (Not POSIX)
+    SIGRES4   : constant := 26; --  reserved signal number (Not POSIX)
+    SIGRES5   : constant := 27; --  reserved signal number (Not POSIX)
+    SIGRES6   : constant := 28; --  reserved signal number (Not POSIX)
+    SIGRES7   : constant := 29; --  reserved signal number (Not POSIX)
+ 
+    SIGUSR1   : constant := 30; --  user defined signal 1
+    SIGUSR2   : constant := 31; --  user defined signal 2
+ 
+    SIGPOLL   : constant := 32; --  pollable event
+    SIGPROF   : constant := 33; --  profiling timer expired
+    SIGSYS    : constant := 34; --  bad system call
+    SIGURG    : constant := 35; --  high bandwidth data is available at socket
+    SIGVTALRM : constant := 36; --  virtual timer expired
+    SIGXCPU   : constant := 37; --  CPU time limit exceeded
+    SIGXFSZ   : constant := 38; --  file size time limit exceeded
+ 
+    SIGEVTS   : constant := 39; --  signal event thread send
+    SIGEVTD   : constant := 40; --  signal event thread delete
+ 
+    SIGRTMIN  : constant := 48; --  Realtime signal min
+    SIGRTMAX  : constant := 63; --  Realtime signal max
+ 
+    -----------------------------------
+    -- Signal processing definitions --
+    -----------------------------------
+ 
+    --  The how in sigprocmask()
+ 
+    SIG_BLOCK   : constant := 1;
+    SIG_UNBLOCK : constant := 2;
+    SIG_SETMASK : constant := 3;
+ 
+    --  The sa_flags in struct sigaction
+ 
+    SA_SIGINFO : constant := 16#0002#;
+    SA_ONSTACK : constant := 16#0004#;
+ 
+    SIG_DFL : constant := 0;
+    SIG_IGN : constant := 1;
+ 
+    type sigset_t is private;
+ 
+    type struct_sigaction is record
+       sa_handler : System.Address;
+       sa_mask    : sigset_t;
+       sa_flags   : int;
+    end record;
+    pragma Convention (C, struct_sigaction);
+    type struct_sigaction_ptr is access all struct_sigaction;
+ 
+    function sigaddset (set : access sigset_t; sig : Signal) return int;
+    pragma Import (C, sigaddset, "sigaddset");
+ 
+    function sigdelset (set : access sigset_t; sig : Signal) return int;
+    pragma Import (C, sigdelset, "sigdelset");
+ 
+    function sigfillset (set : access sigset_t) return int;
+    pragma Import (C, sigfillset, "sigfillset");
+ 
+    function sigismember (set : access sigset_t; sig : Signal) return int;
+    pragma Import (C, sigismember, "sigismember");
+ 
+    function sigemptyset (set : access sigset_t) return int;
+    pragma Import (C, sigemptyset, "sigemptyset");
+ 
+    function sigaction
+      (sig  : Signal;
+       act  : struct_sigaction_ptr;
+       oact : struct_sigaction_ptr) return int;
+    pragma Import (C, sigaction, "sigaction");
+ 
+    type isr_address is access procedure (sig : int);
+    pragma Convention (C, isr_address);
+ 
+    function c_signal (sig : Signal; handler : isr_address) return isr_address;
+    pragma Import (C, c_signal, "signal");
+ 
+    function pthread_sigmask
+      (how  : int;
+       set  : access sigset_t;
+       oset : access sigset_t) return int;
+    pragma Import (C, pthread_sigmask, "sigprocmask");
+ 
+    subtype t_id is System.VxWorks.Ext.t_id;
+    subtype Thread_Id is t_id;
+    --  Thread_Id and t_id are VxWorks identifiers for tasks. This value,
+    --  although represented as a Long_Integer, is in fact an address. With
+    --  some BSPs, this address can have a value sufficiently high that the
+    --  Thread_Id becomes negative: this should not be considered as an error.
+ 
+    function kill (pid : t_id; sig : Signal) return int;
+    pragma Inline (kill);
+ 
+    function getpid return t_id renames System.VxWorks.Ext.getpid;
+ 
+    function Task_Stop (tid : t_id) return int
+      renames System.VxWorks.Ext.Task_Stop;
+    --  If we are in the kernel space, stop the task whose t_id is given in
+    --  parameter in such a way that it can be examined by the debugger. This
+    --  typically maps to taskSuspend on VxWorks 5 and to taskStop on VxWorks 6.
+ 
+    function Task_Cont (tid : t_id) return int
+      renames System.VxWorks.Ext.Task_Cont;
+    --  If we are in the kernel space, continue the task whose t_id is given
+    --  in parameter if it has been stopped previously to be examined by the
+    --  debugger (e.g. by taskStop). It typically maps to taskResume on VxWorks
+    --  5 and to taskCont on VxWorks 6.
+ 
+    function Int_Lock return int renames System.VxWorks.Ext.Int_Lock;
+    --  If we are in the kernel space, lock interrupts. It typically maps to
+    --  intLock.
+ 
+    function Int_Unlock (Old : int) return int
+      renames System.VxWorks.Ext.Int_Unlock;
+    --  If we are in the kernel space, unlock interrupts. It typically maps to
+    --  intUnlock. The parameter Old is only used on PowerPC where it contains
+    --  the returned value from Int_Lock (the old MPSR).
+ 
+    ----------
+    -- Time --
+    ----------
+ 
+    type time_t is new unsigned_long;
+ 
+    type timespec is record
+       ts_sec  : time_t;
+       ts_nsec : long;
+    end record;
+    pragma Convention (C, timespec);
+ 
+    type clockid_t is new int;
+ 
+    function To_Duration (TS : timespec) return Duration;
+    pragma Inline (To_Duration);
+ 
+    function To_Timespec (D : Duration) return timespec;
+    pragma Inline (To_Timespec);
+    --  Convert a Duration value to a timespec value. Note that in VxWorks,
+    --  timespec is always non-negative (since time_t is defined above as
+    --  unsigned long). This means that there is a potential problem if a
+    --  negative argument is passed for D. However, in actual usage, the
+    --  value of the input argument D is always non-negative, so no problem
+    --  arises in practice.
+ 
+    function To_Clock_Ticks (D : Duration) return int;
+    --  Convert a duration value (in seconds) into clock ticks
+ 
+    function clock_gettime
+      (clock_id : clockid_t; tp : access timespec) return int;
+    pragma Import (C, clock_gettime, "clock_gettime");
+ 
+    ----------------------
+    -- Utility Routines --
+    ----------------------
+ 
+    function To_VxWorks_Priority (Priority : int) return int;
+    pragma Inline (To_VxWorks_Priority);
+    --  Convenience routine to convert between VxWorks priority and Ada priority
+ 
+    --------------------------
+    -- VxWorks specific API --
+    --------------------------
+ 
+    subtype STATUS is int;
+    --  Equivalent of the C type STATUS
+ 
+    OK    : constant STATUS := 0;
+    ERROR : constant STATUS := Interfaces.C.int (-1);
+ 
+    function taskIdVerify (tid : t_id) return STATUS;
+    pragma Import (C, taskIdVerify, "taskIdVerify");
+ 
+    function taskIdSelf return t_id;
+    pragma Import (C, taskIdSelf, "taskIdSelf");
+ 
+    function taskOptionsGet (tid : t_id; pOptions : access int) return int;
+    pragma Import (C, taskOptionsGet, "taskOptionsGet");
+ 
+    function taskSuspend (tid : t_id) return int;
+    pragma Import (C, taskSuspend, "taskSuspend");
+ 
+    function taskResume (tid : t_id) return int;
+    pragma Import (C, taskResume, "taskResume");
+ 
+    function taskIsSuspended (tid : t_id) return int;
+    pragma Import (C, taskIsSuspended, "taskIsSuspended");
+ 
+    function taskDelay (ticks : int) return int;
+    pragma Import (C, taskDelay, "taskDelay");
+ 
+    function sysClkRateGet return int;
+    pragma Import (C, sysClkRateGet, "sysClkRateGet");
+ 
+    --  VxWorks 5.x specific functions
+    --  Must not be called from run-time for versions that do not support
+    --  taskVarLib: eg VxWorks 6 RTPs
+ 
+    function taskVarAdd
+      (tid : t_id; pVar : access System.Address) return int;
+    pragma Import (C, taskVarAdd, "taskVarAdd");
+ 
+    function taskVarDelete
+      (tid : t_id; pVar : access System.Address) return int;
+    pragma Import (C, taskVarDelete, "taskVarDelete");
+ 
+    function taskVarSet
+      (tid   : t_id;
+       pVar  : access System.Address;
+       value : System.Address) return int;
+    pragma Import (C, taskVarSet, "taskVarSet");
+ 
+    function taskVarGet
+      (tid  : t_id;
+       pVar : access System.Address) return int;
+    pragma Import (C, taskVarGet, "taskVarGet");
+ 
+    --  VxWorks 6.x specific functions
+ 
+    --  Can only be called from the VxWorks 6 run-time libary that supports
+    --  tlsLib, and not by the VxWorks 6.6 SMP library
+ 
+    function tlsKeyCreate return int;
+    pragma Import (C, tlsKeyCreate, "tlsKeyCreate");
+ 
+    function tlsValueGet (key : int) return System.Address;
+    pragma Import (C, tlsValueGet, "tlsValueGet");
+ 
+    function tlsValueSet (key : int; value : System.Address) return STATUS;
+    pragma Import (C, tlsValueSet, "tlsValueSet");
+ 
+    --  Option flags for taskSpawn
+ 
+    VX_UNBREAKABLE    : constant := 16#0002#;
+    VX_FP_PRIVATE_ENV : constant := 16#0080#;
+    VX_NO_STACK_FILL  : constant := 16#0100#;
+ 
+    function taskSpawn
+      (name          : System.Address;  --  Pointer to task name
+       priority      : int;
+       options       : int;
+       stacksize     : size_t;
+       start_routine : System.Address;
+       arg1          : System.Address;
+       arg2          : int := 0;
+       arg3          : int := 0;
+       arg4          : int := 0;
+       arg5          : int := 0;
+       arg6          : int := 0;
+       arg7          : int := 0;
+       arg8          : int := 0;
+       arg9          : int := 0;
+       arg10         : int := 0) return t_id;
+    pragma Import (C, taskSpawn, "taskSpawn");
+ 
+    procedure taskDelete (tid : t_id);
+    pragma Import (C, taskDelete, "taskDelete");
+ 
+    function Set_Time_Slice (ticks : int) return int
+      renames System.VxWorks.Ext.Set_Time_Slice;
+    --  Calls kernelTimeSlice under VxWorks 5.x, VxWorks 653, or in VxWorks 6
+    --  kernel apps. Returns ERROR for RTPs, VxWorks 5 /CERT
+ 
+    function taskPriorityGet (tid : t_id; pPriority : access int) return int;
+    pragma Import (C, taskPriorityGet, "taskPriorityGet");
+ 
+    function taskPrioritySet (tid : t_id; newPriority : int) return int;
+    pragma Import (C, taskPrioritySet, "taskPrioritySet");
+ 
+    --  Semaphore creation flags
+ 
+    SEM_Q_FIFO         : constant := 0;
+    SEM_Q_PRIORITY     : constant := 1;
+    SEM_DELETE_SAFE    : constant := 4;  -- only valid for binary semaphore
+    SEM_INVERSION_SAFE : constant := 8;  -- only valid for binary semaphore
+ 
+    --  Semaphore initial state flags
+ 
+    SEM_EMPTY : constant := 0;
+    SEM_FULL  : constant := 1;
+ 
+    --  Semaphore take (semTake) time constants
+ 
+    WAIT_FOREVER : constant := -1;
+    NO_WAIT      : constant := 0;
+ 
+    --  Error codes (errno). The lower level 16 bits are the error code, with
+    --  the upper 16 bits representing the module number in which the error
+    --  occurred. By convention, the module number is 0 for UNIX errors. VxWorks
+    --  reserves module numbers 1-500, with the remaining module numbers being
+    --  available for user applications.
+ 
+    M_objLib                 : constant := 61 * 2**16;
+    --  semTake() failure with ticks = NO_WAIT
+    S_objLib_OBJ_UNAVAILABLE : constant := M_objLib + 2;
+    --  semTake() timeout with ticks > NO_WAIT
+    S_objLib_OBJ_TIMEOUT     : constant := M_objLib + 4;
+ 
+    subtype SEM_ID is System.VxWorks.Ext.SEM_ID;
+    --  typedef struct semaphore *SEM_ID;
+ 
+    --  We use two different kinds of VxWorks semaphores: mutex and binary
+    --  semaphores. A null ID is returned when a semaphore cannot be created.
+ 
+    function semBCreate (options : int; initial_state : int) return SEM_ID;
+    pragma Import (C, semBCreate, "semBCreate");
+    --  Create a binary semaphore. Return ID, or 0 if memory could not
+    --  be allocated.
+ 
+    function semMCreate (options : int) return SEM_ID;
+    pragma Import (C, semMCreate, "semMCreate");
+ 
+    function semDelete (Sem : SEM_ID) return int
+      renames System.VxWorks.Ext.semDelete;
+    --  Delete a semaphore
+ 
+    function semGive (Sem : SEM_ID) return int;
+    pragma Import (C, semGive, "semGive");
+ 
+    function semTake (Sem : SEM_ID; timeout : int) return int;
+    pragma Import (C, semTake, "semTake");
+    --  Attempt to take binary semaphore.  Error is returned if operation
+    --  times out
+ 
+    function semFlush (SemID : SEM_ID) return STATUS;
+    pragma Import (C, semFlush, "semFlush");
+    --  Release all threads blocked on the semaphore
+ 
+    ------------------------------------------------------------
+    --   Binary Semaphore Wrapper to Support interrupt Tasks  --
+    ------------------------------------------------------------
+ 
+    type Binary_Semaphore_Id is new Long_Integer;
+ 
+    function Binary_Semaphore_Create return Binary_Semaphore_Id;
+    pragma Inline (Binary_Semaphore_Create);
+ 
+    function Binary_Semaphore_Delete (ID : Binary_Semaphore_Id) return int;
+    pragma Inline (Binary_Semaphore_Delete);
+ 
+    function Binary_Semaphore_Obtain (ID : Binary_Semaphore_Id) return int;
+    pragma Inline (Binary_Semaphore_Obtain);
+ 
+    function Binary_Semaphore_Release (ID : Binary_Semaphore_Id) return int;
+    pragma Inline (Binary_Semaphore_Release);
+ 
+    function Binary_Semaphore_Flush (ID : Binary_Semaphore_Id) return int;
+    pragma Inline (Binary_Semaphore_Flush);
+ 
+    ------------------------------------------------------------
+    -- Hardware Interrupt Wrappers to Support Interrupt Tasks --
+    ------------------------------------------------------------
+ 
+    type Interrupt_Handler is access procedure (parameter : System.Address);
+    pragma Convention (C, Interrupt_Handler);
+ 
+    type Interrupt_Vector is new System.Address;
+ 
+    function Interrupt_Connect
+      (Vector    : Interrupt_Vector;
+       Handler   : Interrupt_Handler;
+       Parameter : System.Address := System.Null_Address) return int;
+    pragma Inline (Interrupt_Connect);
+    --  Use this to set up an user handler. The routine installs a user handler
+    --  which is invoked after the OS has saved enough context for a high-level
+    --  language routine to be safely invoked.
+ 
+    function Interrupt_Context return int;
+    pragma Inline (Interrupt_Context);
+    --  Return 1 if executing in an interrupt context; return 0 if executing in
+    --  a task context.
+ 
+    function Interrupt_Number_To_Vector (intNum : int) return Interrupt_Vector;
+    pragma Inline (Interrupt_Number_To_Vector);
+    --  Convert a logical interrupt number to the hardware interrupt vector
+    --  number used to connect the interrupt.
+ 
+    --------------------------------
+    -- Processor Affinity for SMP --
+    --------------------------------
+ 
+    function taskCpuAffinitySet (tid : t_id; CPU : int) return int
+      renames System.VxWorks.Ext.taskCpuAffinitySet;
+    --  For SMP run-times the affinity to CPU.
+    --  For uniprocessor systems return ERROR status.
+ 
+    function taskMaskAffinitySet (tid : t_id; CPU_Set : unsigned) return int
+      renames System.VxWorks.Ext.taskMaskAffinitySet;
+    --  For SMP run-times the affinity to CPU_Set.
+    --  For uniprocessor systems return ERROR status.
+ 
+    ---------------------
+    -- Multiprocessors --
+    ---------------------
+ 
+    function Current_CPU return Multiprocessors.CPU;
+    --  Return the id of the current CPU
+ 
+ private
+    type pid_t is new int;
+ 
+    ERROR_PID : constant pid_t := -1;
+ 
+    type sigset_t is new System.VxWorks.Ext.sigset_t;
+ end System.OS_Interface;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-osinte__x32.adb gcc-8.1.0/gcc/ada/libgnarl/s-osinte__x32.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-osinte__x32.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-osinte__x32.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,109 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                   S Y S T E M . O S _ I N T E R F A C E                  --
+ --                                                                          --
+ --                                   B o d y                                --
+ --                                                                          --
+ --             Copyright (C) 1991-2017, Florida State University            --
+ --                     Copyright (C) 1995-2018, AdaCore                     --
+ --                                                                          --
+ -- GNAT is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This version is for Linux/x32
+ 
+ pragma Polling (Off);
+ --  Turn off polling, we do not want ATC polling to take place during
+ --  tasking operations. It causes infinite loops and other problems.
+ 
+ --  This package encapsulates all direct interfaces to OS services
+ --  that are needed by children of System.
+ 
+ with Interfaces.C; use Interfaces.C;
+ package body System.OS_Interface is
+ 
+    --------------------
+    -- Get_Stack_Base --
+    --------------------
+ 
+    function Get_Stack_Base (thread : pthread_t) return Address is
+       pragma Warnings (Off, thread);
+ 
+    begin
+       return Null_Address;
+    end Get_Stack_Base;
+ 
+    ------------------
+    -- pthread_init --
+    ------------------
+ 
+    procedure pthread_init is
+    begin
+       null;
+    end pthread_init;
+ 
+    -----------------
+    -- To_Duration --
+    -----------------
+ 
+    function To_Duration (TS : timespec) return Duration is
+    begin
+       return Duration (TS.tv_sec) + Duration (TS.tv_nsec) / 10#1#E9;
+    end To_Duration;
+ 
+    ------------------------
+    -- To_Target_Priority --
+    ------------------------
+ 
+    function To_Target_Priority
+      (Prio : System.Any_Priority) return Interfaces.C.int
+    is
+    begin
+       return Interfaces.C.int (Prio);
+    end To_Target_Priority;
+ 
+    -----------------
+    -- To_Timespec --
+    -----------------
+ 
+    function To_Timespec (D : Duration) return timespec is
+       S : time_t;
+       F : Duration;
+ 
+    begin
+       S := time_t (Long_Long_Integer (D));
+       F := D - Duration (S);
+ 
+       --  If F has negative value due to a round-up, adjust for positive F
+       --  value.
+ 
+       if F < 0.0 then
+          S := S - 1;
+          F := F + 1.0;
+       end if;
+ 
+       return timespec'(tv_sec => S,
+                        tv_nsec => Long_Long_Integer (F * 10#1#E9));
+    end To_Timespec;
+ 
+ end System.OS_Interface;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-proinf.adb gcc-8.1.0/gcc/ada/libgnarl/s-proinf.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-proinf.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-proinf.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,41 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                 S Y S T E M . P R O G R A M  _  I N F O                  --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1996-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is 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.Program_Info is
+ 
+    Default_Stack_Size : constant := 10000;
+ 
+    function Default_Task_Stack  return Integer is
+    begin
+       return Default_Stack_Size;
+    end Default_Task_Stack;
+ 
+ end System.Program_Info;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-proinf.ads gcc-8.1.0/gcc/ada/libgnarl/s-proinf.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-proinf.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-proinf.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,43 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                 S Y S T E M . P R O G R A M  _  I N F O                  --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --            Copyright (C) 1996-2018, Free Software Foundation, Inc.       --
+ --                                                                          --
+ -- GNAT is 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 definitions and routines used as parameters
+ --  to the run-time system at program startup.
+ 
+ package System.Program_Info is
+    pragma Preelaborate;
+ 
+    function Default_Task_Stack return Integer;
+    --  The default stack size for each created thread.  This default value
+    --  can be overridden on a per-task basis by the language-defined
+    --  Storage_Size pragma.
+ 
+ end System.Program_Info;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-qnx.ads gcc-8.1.0/gcc/ada/libgnarl/s-qnx.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-qnx.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-qnx.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,122 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                GNU ADA RUN-TIME LIBRARY (GNARL) COMPONENTS               --
+ --                                                                          --
+ --                             S Y S T E M .  Q N X                         --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --             Copyright (C) 2017-2018, Free Software Foundation, Inc.      --
+ --                                                                          --
+ -- GNARL is 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 is the default version of this package
+ 
+ --  This package encapsulates cpu specific differences between implementations
+ --  of QNX, in order to share s-osinte-linux.ads.
+ 
+ --  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;
+ 
+ package System.QNX is
+    pragma Preelaborate;
+ 
+    ----------
+    -- Time --
+    ----------
+ 
+    subtype long        is Interfaces.C.long;
+    subtype suseconds_t is Interfaces.C.long;
+    subtype time_t      is Interfaces.C.long;
+    subtype clockid_t   is Interfaces.C.int;
+ 
+    type timespec is record
+       tv_sec  : time_t;
+       tv_nsec : long;
+    end record;
+    pragma Convention (C, timespec);
+ 
+    type timeval is record
+       tv_sec  : time_t;
+       tv_usec : suseconds_t;
+    end record;
+    pragma Convention (C, timeval);
+ 
+    -----------
+    -- Errno --
+    -----------
+ 
+    EAGAIN    : constant := 11;
+    EINTR     : constant := 4;
+    EINVAL    : constant := 22;
+    ENOMEM    : constant := 12;
+    EPERM     : constant := 1;
+    ETIMEDOUT : constant := 110;
+ 
+    -------------
+    -- Signals --
+    -------------
+ 
+    SIGHUP     : constant := 1; --  hangup
+    SIGINT     : constant := 2; --  interrupt (rubout)
+    SIGQUIT    : constant := 3; --  quit (ASCD FS)
+    SIGILL     : constant := 4; --  illegal instruction (not reset)
+    SIGTRAP    : constant := 5; --  trace trap (not reset)
+    SIGIOT     : constant := 6; --  IOT instruction
+    SIGABRT    : constant := 6; --  used by abort, replace SIGIOT in the  future
+    SIGEMT     : constant := 7; --  EMT instruction
+    SIGDEADLK  : constant := 7; --  Mutex deadlock
+    SIGFPE     : constant := 8; --  floating point exception
+    SIGKILL    : constant := 9; --  kill (cannot be caught or ignored)
+    SIGSEGV    : constant := 11; --  segmentation violation
+    SIGPIPE    : constant := 13; --  write on a pipe with no one to read it
+    SIGALRM    : constant := 14; --  alarm clock
+    SIGTERM    : constant := 15; --  software termination signal from kill
+    SIGUSR1    : constant := 16; --  user defined signal 1
+    SIGUSR2    : constant := 17; --  user defined signal 2
+    SIGCHLD    : constant := 18; --  child status change
+    SIGCLD     : constant := 18; --  alias for SIGCHLD
+    SIGPWR     : constant := 19; --  power-fail restart
+    SIGWINCH   : constant := 20; --  window size change
+    SIGURG     : constant := 21; --  urgent condition on IO channel
+    SIGPOLL    : constant := 22; --  pollable event occurred
+    SIGIO      : constant := 22; --  I/O now possible (4.2 BSD)
+    SIGSTOP    : constant := 23; --  stop (cannot be caught or ignored)
+    SIGTSTP    : constant := 24; --  user stop requested from tty
+    SIGCONT    : constant := 25; --  stopped process has been continued
+    SIGTTIN    : constant := 26; --  background tty read attempted
+    SIGTTOU    : constant := 27; --  background tty write attempted
+    SIGVTALRM  : constant := 28; --  virtual timer expired
+    SIGPROF    : constant := 29; --  profiling timer expired
+    SIGXCPU    : constant := 30; --  CPU time limit exceeded
+    SIGXFSZ    : constant := 31; --  filesize limit exceeded
+ 
+    --  struct_sigaction offsets
+ 
+    sa_handler_pos : constant := 0;
+    sa_mask_pos    : constant := Standard'Address_Size / 8;
+    sa_flags_pos   : constant := 128 + sa_mask_pos;
+ 
+    SA_SIGINFO  : constant := 16#04#;
+    SA_ONSTACK  : constant := 16#08000000#;
+ 
+ end System.QNX;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-solita.adb gcc-8.1.0/gcc/ada/libgnarl/s-solita.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-solita.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-solita.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,235 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --             S Y S T E M . S O F T _ L I N K S . T A S K I N G            --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 2004-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is 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 Style_Checks (All_Checks);
+ --  Turn off subprogram alpha ordering check, since we group soft link bodies
+ --  and dummy soft link bodies together separately in this unit.
+ 
+ pragma Polling (Off);
+ --  Turn polling off for this package. We don't need polling during any of the
+ --  routines in this package, and more to the point, if we try to poll it can
+ --  cause infinite loops.
+ 
+ with Ada.Exceptions;
+ with Ada.Exceptions.Is_Null_Occurrence;
+ 
+ with System.Task_Primitives.Operations;
+ with System.Tasking;
+ with System.Stack_Checking;
+ with System.Secondary_Stack;
+ 
+ package body System.Soft_Links.Tasking is
+ 
+    package STPO renames System.Task_Primitives.Operations;
+    package SSL  renames System.Soft_Links;
+ 
+    use Ada.Exceptions;
+ 
+    use type System.Secondary_Stack.SS_Stack_Ptr;
+ 
+    use type System.Tasking.Task_Id;
+    use type System.Tasking.Termination_Handler;
+ 
+    ----------------
+    -- Local Data --
+    ----------------
+ 
+    Initialized : Boolean := False;
+    --  Boolean flag that indicates whether the tasking soft links have
+    --  already been set.
+ 
+    -----------------------------------------------------------------
+    -- Tasking Versions of Services Needed by Non-Tasking Programs --
+    -----------------------------------------------------------------
+ 
+    function  Get_Jmpbuf_Address return  Address;
+    procedure Set_Jmpbuf_Address (Addr : Address);
+    --  Get/Set Jmpbuf_Address for current task
+ 
+    function  Get_Sec_Stack return SST.SS_Stack_Ptr;
+    procedure Set_Sec_Stack (Stack : SST.SS_Stack_Ptr);
+    --  Get/Set location of current task's secondary stack
+ 
+    procedure Timed_Delay_T (Time : Duration; Mode : Integer);
+    --  Task-safe version of SSL.Timed_Delay
+ 
+    procedure Task_Termination_Handler_T  (Excep : SSL.EO);
+    --  Task-safe version of the task termination procedure
+ 
+    function Get_Stack_Info return Stack_Checking.Stack_Access;
+    --  Get access to the current task's Stack_Info
+ 
+    --------------------------
+    -- Soft-Link Get Bodies --
+    --------------------------
+ 
+    function Get_Jmpbuf_Address return  Address is
+    begin
+       return STPO.Self.Common.Compiler_Data.Jmpbuf_Address;
+    end Get_Jmpbuf_Address;
+ 
+    function Get_Sec_Stack return SST.SS_Stack_Ptr is
+    begin
+       return Result : constant SST.SS_Stack_Ptr :=
+         STPO.Self.Common.Compiler_Data.Sec_Stack_Ptr
+       do
+          pragma Assert (Result /= null);
+       end return;
+    end Get_Sec_Stack;
+ 
+    function Get_Stack_Info return Stack_Checking.Stack_Access is
+    begin
+       return STPO.Self.Common.Compiler_Data.Pri_Stack_Info'Access;
+    end Get_Stack_Info;
+ 
+    --------------------------
+    -- Soft-Link Set Bodies --
+    --------------------------
+ 
+    procedure Set_Jmpbuf_Address (Addr : Address) is
+    begin
+       STPO.Self.Common.Compiler_Data.Jmpbuf_Address := Addr;
+    end Set_Jmpbuf_Address;
+ 
+    procedure Set_Sec_Stack (Stack : SST.SS_Stack_Ptr) is
+    begin
+       STPO.Self.Common.Compiler_Data.Sec_Stack_Ptr := Stack;
+    end Set_Sec_Stack;
+ 
+    -------------------
+    -- Timed_Delay_T --
+    -------------------
+ 
+    procedure Timed_Delay_T (Time : Duration; Mode : Integer) is
+       Self_Id : constant System.Tasking.Task_Id := STPO.Self;
+ 
+    begin
+       --  In case pragma Detect_Blocking is active then Program_Error
+       --  must be raised if this potentially blocking operation
+       --  is called from a protected operation.
+ 
+       if System.Tasking.Detect_Blocking
+         and then Self_Id.Common.Protected_Action_Nesting > 0
+       then
+          raise Program_Error with "potentially blocking operation";
+       else
+          Abort_Defer.all;
+          STPO.Timed_Delay (Self_Id, Time, Mode);
+          Abort_Undefer.all;
+       end if;
+    end Timed_Delay_T;
+ 
+    --------------------------------
+    -- Task_Termination_Handler_T --
+    --------------------------------
+ 
+    procedure Task_Termination_Handler_T (Excep : SSL.EO) is
+       Self_Id : constant System.Tasking.Task_Id := STPO.Self;
+       Cause   : System.Tasking.Cause_Of_Termination;
+       EO      : Ada.Exceptions.Exception_Occurrence;
+ 
+    begin
+       --  We can only be here because we are terminating the environment task.
+       --  Task termination for all other tasks is handled in the Task_Wrapper.
+ 
+       --  We do not want to enable this check and e.g. call System.OS_Lib.Abort
+       --  here because some restricted run-times may not have System.OS_Lib
+       --  and calling abort may do more harm than good to the main application.
+ 
+       pragma Assert (Self_Id = STPO.Environment_Task);
+ 
+       --  Normal task termination
+ 
+       if Is_Null_Occurrence (Excep) then
+          Cause := System.Tasking.Normal;
+          Ada.Exceptions.Save_Occurrence (EO, Ada.Exceptions.Null_Occurrence);
+ 
+       --  Abnormal task termination
+ 
+       elsif Exception_Identity (Excep) = Standard'Abort_Signal'Identity then
+          Cause := System.Tasking.Abnormal;
+          Ada.Exceptions.Save_Occurrence (EO, Ada.Exceptions.Null_Occurrence);
+ 
+       --  Termination because of an unhandled exception
+ 
+       else
+          Cause := System.Tasking.Unhandled_Exception;
+          Ada.Exceptions.Save_Occurrence (EO, Excep);
+       end if;
+ 
+       --  There is no need for explicit protection against race conditions for
+       --  this part because it can only be executed by the environment task
+       --  after all the other tasks have been finalized. Note that there is no
+       --  fall-back handler which could apply to this environment task because
+       --  it has no parents, and, as specified in ARM C.7.3 par. 9/2, "the
+       --  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;
+ 
+    -----------------------------
+    -- Init_Tasking_Soft_Links --
+    -----------------------------
+ 
+    procedure Init_Tasking_Soft_Links is
+    begin
+       --  Set links only if not set already
+ 
+       if not Initialized then
+ 
+          --  Mark tasking soft links as initialized
+ 
+          Initialized := True;
+ 
+          --  The application being executed uses tasking so that the tasking
+          --  version of the following soft links need to be used.
+ 
+          SSL.Get_Jmpbuf_Address       := Get_Jmpbuf_Address'Access;
+          SSL.Set_Jmpbuf_Address       := Set_Jmpbuf_Address'Access;
+          SSL.Get_Sec_Stack            := Get_Sec_Stack'Access;
+          SSL.Get_Stack_Info           := Get_Stack_Info'Access;
+          SSL.Set_Sec_Stack            := Set_Sec_Stack'Access;
+          SSL.Timed_Delay              := Timed_Delay_T'Access;
+          SSL.Task_Termination_Handler := Task_Termination_Handler_T'Access;
+ 
+          --  No need to create a new secondary stack, since we will use the
+          --  default one created in s-secsta.adb.
+ 
+          SSL.Set_Sec_Stack          (SSL.Get_Sec_Stack_NT);
+          SSL.Set_Jmpbuf_Address     (SSL.Get_Jmpbuf_Address_NT);
+       end if;
+ 
+       pragma Assert (Get_Sec_Stack /= null);
+    end Init_Tasking_Soft_Links;
+ 
+ end System.Soft_Links.Tasking;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-solita.ads gcc-8.1.0/gcc/ada/libgnarl/s-solita.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-solita.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-solita.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,44 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --             S Y S T E M . S O F T _ L I N K S . T A S K I N G            --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 2009-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is 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 tasking versions soft links that are common
+ --  to the full and the restricted run times. The rest of the required soft
+ --  links are set by System.Tasking.Initialization and System.Tasking.Stages
+ --  (full run time) or System.Tasking.Restricted.Stages (restricted run time).
+ 
+ package System.Soft_Links.Tasking is
+ 
+    procedure Init_Tasking_Soft_Links;
+    --  Set the tasking soft links that are common to the full and the
+    --  restricted run times. Clients need to make sure the body of
+    --  System.Secondary_Stack is elaborated before calling this.
+ 
+ end System.Soft_Links.Tasking;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-stusta.adb gcc-8.1.0/gcc/ada/libgnarl/s-stusta.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-stusta.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-stusta.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,258 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --            S Y S T E M . S T A C K _ U S A G E . T A S K I N G           --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --           Copyright (C) 2009-2018, Free Software Foundation, Inc.        --
+ --                                                                          --
+ -- GNAT is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Stack_Usage;
+ 
+ --  This is why this package is part of GNARL:
+ 
+ with System.Tasking.Debug;
+ with System.Task_Primitives.Operations;
+ 
+ with System.IO;
+ 
+ package body System.Stack_Usage.Tasking is
+    use System.IO;
+ 
+    procedure Report_For_Task (Id : System.Tasking.Task_Id);
+    --  A generic procedure calculating stack usage for a given task
+ 
+    procedure Compute_All_Tasks;
+    --  Compute the stack usage for all tasks and saves it in
+    --  System.Stack_Usage.Result_Array
+ 
+    procedure Compute_Current_Task;
+    --  Compute the stack usage for a given task and saves it in the precise
+    --  slot in System.Stack_Usage.Result_Array;
+ 
+    procedure Report_Impl (All_Tasks : Boolean; Do_Print : Boolean);
+    --  Report the stack usage of either all tasks (All_Tasks = True) or of the
+    --  current task (All_Task = False). If Print is True, then results are
+    --  printed on stderr
+ 
+    procedure Convert
+      (TS  : System.Stack_Usage.Task_Result;
+       Res : out Stack_Usage_Result);
+    --  Convert an object of type System.Stack_Usage in a Stack_Usage_Result
+ 
+    -------------
+    -- Convert --
+    -------------
+ 
+    procedure Convert
+      (TS  : System.Stack_Usage.Task_Result;
+       Res : out Stack_Usage_Result) is
+    begin
+       Res := TS;
+    end Convert;
+ 
+    ---------------------
+    -- Report_For_Task --
+    ---------------------
+ 
+    procedure Report_For_Task (Id : System.Tasking.Task_Id) is
+    begin
+       System.Stack_Usage.Compute_Result (Id.Common.Analyzer);
+       System.Stack_Usage.Report_Result (Id.Common.Analyzer);
+    end Report_For_Task;
+ 
+    -----------------------
+    -- Compute_All_Tasks --
+    -----------------------
+ 
+    procedure Compute_All_Tasks is
+       Id : System.Tasking.Task_Id;
+       use type System.Tasking.Task_Id;
+    begin
+       if not System.Stack_Usage.Is_Enabled then
+          Put_Line ("Stack Usage not enabled: bind with -uNNN switch");
+       else
+ 
+          --  Loop over all tasks
+ 
+          for J in System.Tasking.Debug.Known_Tasks'First + 1
+            .. System.Tasking.Debug.Known_Tasks'Last
+          loop
+             Id := System.Tasking.Debug.Known_Tasks (J);
+             exit when Id = null;
+ 
+             --  Calculate the task usage for a given task
+ 
+             Report_For_Task (Id);
+          end loop;
+ 
+       end if;
+    end Compute_All_Tasks;
+ 
+    --------------------------
+    -- Compute_Current_Task --
+    --------------------------
+ 
+    procedure Compute_Current_Task is
+    begin
+       if not System.Stack_Usage.Is_Enabled then
+          Put_Line ("Stack Usage not enabled: bind with -uNNN switch");
+       else
+ 
+          --  The current task
+ 
+          Report_For_Task (System.Tasking.Self);
+ 
+       end if;
+    end Compute_Current_Task;
+ 
+    -----------------
+    -- Report_Impl --
+    -----------------
+ 
+    procedure Report_Impl (All_Tasks : Boolean; Do_Print : Boolean) is
+    begin
+ 
+       --  Lock the runtime
+ 
+       System.Task_Primitives.Operations.Lock_RTS;
+ 
+       --  Calculate results
+ 
+       if All_Tasks then
+          Compute_All_Tasks;
+       else
+          Compute_Current_Task;
+       end if;
+ 
+       --  Output results
+       if Do_Print then
+          System.Stack_Usage.Output_Results;
+       end if;
+ 
+       --  Unlock the runtime
+ 
+       System.Task_Primitives.Operations.Unlock_RTS;
+ 
+    end Report_Impl;
+ 
+    ---------------------
+    -- Report_All_Task --
+    ---------------------
+ 
+    procedure Report_All_Tasks is
+    begin
+       Report_Impl (True, True);
+    end Report_All_Tasks;
+ 
+    -------------------------
+    -- Report_Current_Task --
+    -------------------------
+ 
+    procedure Report_Current_Task is
+       Res : Stack_Usage_Result;
+    begin
+       Res := Get_Current_Task_Usage;
+       Print (Res);
+    end Report_Current_Task;
+ 
+    -------------------------
+    -- Get_All_Tasks_Usage --
+    -------------------------
+ 
+    function Get_All_Tasks_Usage return Stack_Usage_Result_Array is
+       Res : Stack_Usage_Result_Array
+         (1 .. System.Stack_Usage.Result_Array'Length);
+    begin
+       Report_Impl (True, False);
+ 
+       for J in Res'Range loop
+          Convert (System.Stack_Usage.Result_Array (J), Res (J));
+       end loop;
+ 
+       return Res;
+    end Get_All_Tasks_Usage;
+ 
+    ----------------------------
+    -- Get_Current_Task_Usage --
+    ----------------------------
+ 
+    function Get_Current_Task_Usage return Stack_Usage_Result is
+       Res : Stack_Usage_Result;
+       Original : System.Stack_Usage.Task_Result;
+       Found : Boolean := False;
+    begin
+ 
+       Report_Impl (False, False);
+ 
+       --  Look for the task info in System.Stack_Usage.Result_Array;
+       --  the search is based on task name
+ 
+       for T in System.Stack_Usage.Result_Array'Range loop
+          if System.Stack_Usage.Result_Array (T).Task_Name =
+            System.Tasking.Self.Common.Analyzer.Task_Name
+          then
+             Original := System.Stack_Usage.Result_Array (T);
+             Found := True;
+             exit;
+          end if;
+       end loop;
+ 
+       --  Be sure a task has been found
+ 
+       pragma Assert (Found);
+ 
+       Convert (Original, Res);
+       return Res;
+    end Get_Current_Task_Usage;
+ 
+    -----------
+    -- Print --
+    -----------
+ 
+    procedure Print (Obj : Stack_Usage_Result) is
+       Pos : Positive := Obj.Task_Name'Last;
+ 
+    begin
+       --  Simply trim the string containing the task name
+ 
+       for S in Obj.Task_Name'Range loop
+          if Obj.Task_Name (S) = ' ' then
+             Pos := S;
+             exit;
+          end if;
+       end loop;
+ 
+       declare
+          T_Name : constant String :=
+                     Obj.Task_Name (Obj.Task_Name'First .. Pos);
+       begin
+          Put_Line
+            ("| " & T_Name & " | " & Natural'Image (Obj.Stack_Size) &
+             Natural'Image (Obj.Value));
+       end;
+    end Print;
+ 
+ end System.Stack_Usage.Tasking;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-stusta.ads gcc-8.1.0/gcc/ada/libgnarl/s-stusta.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-stusta.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-stusta.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,75 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --            S Y S T E M . S T A C K _ U S A G E . T A S K I N G           --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --           Copyright (C) 2009-2018, Free Software Foundation, Inc.        --
+ --                                                                          --
+ -- GNAT is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package provides exported subprograms to be called at debug time to
+ --  measure stack usage at run-time.
+ 
+ --  Note: this package must be a child package of System.Stack_Usage to have
+ --  visibility over its private part; it is however part of GNARL because it
+ --  needs to access tasking features via System.Tasking.Debug and
+ --  System.Task_Primitives.Operations;
+ 
+ package System.Stack_Usage.Tasking is
+ 
+    procedure Report_All_Tasks;
+    --  Print the current stack usage of all tasks on stderr. Exported to be
+    --  called also in debug mode.
+ 
+    pragma Export
+      (C,
+       Report_All_Tasks,
+       "__gnat_tasks_stack_usage_report_all_tasks");
+ 
+    procedure Report_Current_Task;
+    --  Print the stack usage of current task on stderr. Exported to be called
+    --  also in debug mode.
+ 
+    pragma Export
+      (C,
+       Report_Current_Task,
+       "__gnat_tasks_stack_usage_report_current_task");
+ 
+    subtype Stack_Usage_Result is System.Stack_Usage.Task_Result;
+    --  This type is a descriptor for task stack usage result
+ 
+    type Stack_Usage_Result_Array is
+      array (Positive range <>) of Stack_Usage_Result;
+ 
+    function Get_Current_Task_Usage return Stack_Usage_Result;
+    --  Return the current stack usage for the invoking task
+ 
+    function Get_All_Tasks_Usage return Stack_Usage_Result_Array;
+    --  Return an array containing the stack usage results for all tasks
+ 
+    procedure Print (Obj : Stack_Usage_Result);
+    --  Print Obj on stderr
+ 
+ end System.Stack_Usage.Tasking;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-taasde.adb gcc-8.1.0/gcc/ada/libgnarl/s-taasde.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-taasde.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-taasde.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,395 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --           S Y S T E M . T A S K I N G . A S Y N C _ D E L A Y S          --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --         Copyright (C) 1998-2018, Free Software Foundation, Inc.          --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ pragma Polling (Off);
+ --  Turn off polling, we do not want ATC polling to take place during
+ --  tasking operations. It causes infinite loops and other problems.
+ 
+ with Ada.Unchecked_Conversion;
+ with Ada.Task_Identification;
+ 
+ with System.Task_Primitives.Operations;
+ with System.Tasking.Utilities;
+ with System.Tasking.Initialization;
+ with System.Tasking.Debug;
+ with System.OS_Primitives;
+ with System.Interrupt_Management.Operations;
+ 
+ package body System.Tasking.Async_Delays is
+ 
+    package STPO renames System.Task_Primitives.Operations;
+    package ST renames System.Tasking;
+    package STU renames System.Tasking.Utilities;
+    package STI renames System.Tasking.Initialization;
+    package OSP renames System.OS_Primitives;
+ 
+    use Parameters;
+ 
+    function To_System is new Ada.Unchecked_Conversion
+      (Ada.Task_Identification.Task_Id, Task_Id);
+ 
+    Timer_Attention : Boolean := False;
+    pragma Atomic (Timer_Attention);
+ 
+    task Timer_Server is
+       pragma Interrupt_Priority (System.Any_Priority'Last);
+    end Timer_Server;
+ 
+    Timer_Server_ID : constant ST.Task_Id := To_System (Timer_Server'Identity);
+ 
+    --  The timer queue is a circular doubly linked list, ordered by absolute
+    --  wakeup time. The first item in the queue is Timer_Queue.Succ.
+    --  It is given a Resume_Time that is larger than any legitimate wakeup
+    --  time, so that the ordered insertion will always stop searching when it
+    --  gets back to the queue header block.
+ 
+    Timer_Queue : aliased Delay_Block;
+ 
+    package Init_Timer_Queue is end Init_Timer_Queue;
+    pragma Unreferenced (Init_Timer_Queue);
+    --  Initialize the Timer_Queue. This is a package to work around the
+    --  fact that statements are syntactically illegal here. We want this
+    --  initialization to happen before the Timer_Server is activated. A
+    --  build-in-place function would also work, but that's not supported
+    --  on all platforms (e.g. cil).
+ 
+    package body Init_Timer_Queue is
+    begin
+       Timer_Queue.Succ := Timer_Queue'Unchecked_Access;
+       Timer_Queue.Pred := Timer_Queue'Unchecked_Access;
+       Timer_Queue.Resume_Time := Duration'Last;
+    end Init_Timer_Queue;
+ 
+    ------------------------
+    -- Cancel_Async_Delay --
+    ------------------------
+ 
+    --  This should (only) be called from the compiler-generated cleanup routine
+    --  for an async. select statement with delay statement as trigger. The
+    --  effect should be to remove the delay from the timer queue, and exit one
+    --  ATC nesting level.
+    --  The usage and logic are similar to Cancel_Protected_Entry_Call, but
+    --  simplified because this is not a true entry call.
+ 
+    procedure Cancel_Async_Delay (D : Delay_Block_Access) is
+       Dpred : Delay_Block_Access;
+       Dsucc : Delay_Block_Access;
+ 
+    begin
+       --  Note that we mark the delay as being cancelled
+       --  using a level value that is reserved.
+ 
+       --  make this operation idempotent
+ 
+       if D.Level = ATC_Level_Infinity then
+          return;
+       end if;
+ 
+       D.Level := ATC_Level_Infinity;
+ 
+       --  remove self from timer queue
+ 
+       STI.Defer_Abort_Nestable (D.Self_Id);
+ 
+       if Single_Lock then
+          STPO.Lock_RTS;
+       end if;
+ 
+       STPO.Write_Lock (Timer_Server_ID);
+       Dpred := D.Pred;
+       Dsucc := D.Succ;
+       Dpred.Succ := Dsucc;
+       Dsucc.Pred := Dpred;
+       D.Succ := D;
+       D.Pred := D;
+       STPO.Unlock (Timer_Server_ID);
+ 
+       --  Note that the above deletion code is required to be
+       --  idempotent, since the block may have been dequeued
+       --  previously by the Timer_Server.
+ 
+       --  leave the asynchronous select
+ 
+       STPO.Write_Lock (D.Self_Id);
+       STU.Exit_One_ATC_Level (D.Self_Id);
+       STPO.Unlock (D.Self_Id);
+ 
+       if Single_Lock then
+          STPO.Unlock_RTS;
+       end if;
+ 
+       STI.Undefer_Abort_Nestable (D.Self_Id);
+    end Cancel_Async_Delay;
+ 
+    ----------------------
+    -- Enqueue_Duration --
+    ----------------------
+ 
+    function Enqueue_Duration
+      (T : Duration;
+       D : Delay_Block_Access) return Boolean
+    is
+    begin
+       if T <= 0.0 then
+          D.Timed_Out := True;
+          STPO.Yield;
+          return False;
+ 
+       else
+          --  The corresponding call to Undefer_Abort is performed by the
+          --  expanded code (see exp_ch9).
+ 
+          STI.Defer_Abort (STPO.Self);
+          Time_Enqueue
+            (STPO.Monotonic_Clock
+             + Duration'Min (T, OSP.Max_Sensible_Delay), D);
+          return True;
+       end if;
+    end Enqueue_Duration;
+ 
+    ------------------
+    -- Time_Enqueue --
+    ------------------
+ 
+    --  Allocate a queue element for the wakeup time T and put it in the
+    --  queue in wakeup time order.  Assume we are on an asynchronous
+    --  select statement with delay trigger.  Put the calling task to
+    --  sleep until either the delay expires or is cancelled.
+ 
+    --  We use one entry call record for this delay, since we have
+    --  to increment the ATC nesting level, but since it is not a
+    --  real entry call we do not need to use any of the fields of
+    --  the call record.  The following code implements a subset of
+    --  the actions for the asynchronous case of Protected_Entry_Call,
+    --  much simplified since we know this never blocks, and does not
+    --  have the full semantics of a protected entry call.
+ 
+    procedure Time_Enqueue
+      (T : Duration;
+       D : Delay_Block_Access)
+    is
+       Self_Id : constant Task_Id  := STPO.Self;
+       Q       : Delay_Block_Access;
+ 
+    begin
+       pragma Debug (Debug.Trace (Self_Id, "Async_Delay", 'P'));
+       pragma Assert (Self_Id.Deferral_Level = 1,
+         "async delay from within abort-deferred region");
+ 
+       if Self_Id.ATC_Nesting_Level = ATC_Level'Last then
+          raise Storage_Error with "not enough ATC nesting levels";
+       end if;
+ 
+       Self_Id.ATC_Nesting_Level := Self_Id.ATC_Nesting_Level + 1;
+ 
+       pragma Debug
+         (Debug.Trace (Self_Id, "ASD: entered ATC level: " &
+          ATC_Level'Image (Self_Id.ATC_Nesting_Level), 'A'));
+ 
+       D.Level := Self_Id.ATC_Nesting_Level;
+       D.Self_Id := Self_Id;
+       D.Resume_Time := T;
+ 
+       if Single_Lock then
+          STPO.Lock_RTS;
+       end if;
+ 
+       STPO.Write_Lock (Timer_Server_ID);
+ 
+       --  Previously, there was code here to dynamically create
+       --  the Timer_Server task, if one did not already exist.
+       --  That code had a timing window that could allow multiple
+       --  timer servers to be created. Luckily, the need for
+       --  postponing creation of the timer server should now be
+       --  gone, since this package will only be linked in if
+       --  there are calls to enqueue calls on the timer server.
+ 
+       --  Insert D in the timer queue, at the position determined
+       --  by the wakeup time T.
+ 
+       Q := Timer_Queue.Succ;
+ 
+       while Q.Resume_Time < T loop
+          Q := Q.Succ;
+       end loop;
+ 
+       --  Q is the block that has Resume_Time equal to or greater than
+       --  T. After the insertion we want Q to be the successor of D.
+ 
+       D.Succ := Q;
+       D.Pred := Q.Pred;
+       D.Pred.Succ := D;
+       Q.Pred := D;
+ 
+       --  If the new element became the head of the queue,
+       --  signal the Timer_Server to wake up.
+ 
+       if Timer_Queue.Succ = D then
+          Timer_Attention := True;
+          STPO.Wakeup (Timer_Server_ID, ST.Timer_Server_Sleep);
+       end if;
+ 
+       STPO.Unlock (Timer_Server_ID);
+ 
+       if Single_Lock then
+          STPO.Unlock_RTS;
+       end if;
+    end Time_Enqueue;
+ 
+    ---------------
+    -- Timed_Out --
+    ---------------
+ 
+    function Timed_Out (D : Delay_Block_Access) return Boolean is
+    begin
+       return D.Timed_Out;
+    end Timed_Out;
+ 
+    ------------------
+    -- Timer_Server --
+    ------------------
+ 
+    task body Timer_Server is
+       Ignore : constant Boolean := STU.Make_Independent;
+ 
+       --  Local Declarations
+ 
+       Next_Wakeup_Time : Duration := Duration'Last;
+       Timedout         : Boolean;
+       Yielded          : Boolean;
+       Now              : Duration;
+       Dequeued         : Delay_Block_Access;
+       Dequeued_Task    : Task_Id;
+ 
+       pragma Unreferenced (Timedout, Yielded);
+ 
+    begin
+       pragma Assert (Timer_Server_ID = STPO.Self);
+ 
+       --  Since this package may be elaborated before System.Interrupt,
+       --  we need to call Setup_Interrupt_Mask explicitly to ensure that
+       --  this task has the proper signal mask.
+ 
+       Interrupt_Management.Operations.Setup_Interrupt_Mask;
+ 
+       --  Initialize the timer queue to empty, and make the wakeup time of the
+       --  header node be larger than any real wakeup time we will ever use.
+ 
+       loop
+          STI.Defer_Abort (Timer_Server_ID);
+ 
+          if Single_Lock then
+             STPO.Lock_RTS;
+          end if;
+ 
+          STPO.Write_Lock (Timer_Server_ID);
+ 
+          --  The timer server needs to catch pending aborts after finalization
+          --  of library packages. If it doesn't poll for it, the server will
+          --  sometimes hang.
+ 
+          if not Timer_Attention then
+             Timer_Server_ID.Common.State := ST.Timer_Server_Sleep;
+ 
+             if Next_Wakeup_Time = Duration'Last then
+                Timer_Server_ID.User_State := 1;
+                Next_Wakeup_Time :=
+                  STPO.Monotonic_Clock + OSP.Max_Sensible_Delay;
+ 
+             else
+                Timer_Server_ID.User_State := 2;
+             end if;
+ 
+             STPO.Timed_Sleep
+               (Timer_Server_ID, Next_Wakeup_Time,
+                OSP.Absolute_RT, ST.Timer_Server_Sleep,
+                Timedout, Yielded);
+             Timer_Server_ID.Common.State := ST.Runnable;
+          end if;
+ 
+          --  Service all of the wakeup requests on the queue whose times have
+          --  been reached, and update Next_Wakeup_Time to next wakeup time
+          --  after that (the wakeup time of the head of the queue if any, else
+          --  a time far in the future).
+ 
+          Timer_Server_ID.User_State := 3;
+          Timer_Attention := False;
+ 
+          Now := STPO.Monotonic_Clock;
+          while Timer_Queue.Succ.Resume_Time <= Now loop
+ 
+             --  Dequeue the waiting task from the front of the queue
+ 
+             pragma Debug (System.Tasking.Debug.Trace
+               (Timer_Server_ID, "Timer service: waking up waiting task", 'E'));
+ 
+             Dequeued := Timer_Queue.Succ;
+             Timer_Queue.Succ := Dequeued.Succ;
+             Dequeued.Succ.Pred := Dequeued.Pred;
+             Dequeued.Succ := Dequeued;
+             Dequeued.Pred := Dequeued;
+ 
+             --  We want to abort the queued task to the level of the async.
+             --  select statement with the delay. To do that, we need to lock
+             --  the ATCB of that task, but to avoid deadlock we need to release
+             --  the lock of the Timer_Server. This leaves a window in which
+             --  another task might perform an enqueue or dequeue operation on
+             --  the timer queue, but that is OK because we always restart the
+             --  next iteration at the head of the queue.
+ 
+             STPO.Unlock (Timer_Server_ID);
+             STPO.Write_Lock (Dequeued.Self_Id);
+             Dequeued_Task := Dequeued.Self_Id;
+             Dequeued.Timed_Out := True;
+             STI.Locked_Abort_To_Level
+               (Timer_Server_ID, Dequeued_Task, Dequeued.Level - 1);
+             STPO.Unlock (Dequeued_Task);
+             STPO.Write_Lock (Timer_Server_ID);
+          end loop;
+ 
+          Next_Wakeup_Time := Timer_Queue.Succ.Resume_Time;
+ 
+          --  Service returns the Next_Wakeup_Time.
+          --  The Next_Wakeup_Time is either an infinity (no delay request)
+          --  or the wakeup time of the queue head. This value is used for
+          --  an actual delay in this server.
+ 
+          STPO.Unlock (Timer_Server_ID);
+ 
+          if Single_Lock then
+             STPO.Unlock_RTS;
+          end if;
+ 
+          STI.Undefer_Abort (Timer_Server_ID);
+       end loop;
+    end Timer_Server;
+ 
+ end System.Tasking.Async_Delays;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-taasde.ads gcc-8.1.0/gcc/ada/libgnarl/s-taasde.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-taasde.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-taasde.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,147 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --           S Y S T E M . T A S K I N G . A S Y N C _ D E L A Y S          --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --          Copyright (C) 1998-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package contains the procedures to implements timeouts (delays) for
+ --  asynchronous select statements.
+ 
+ --  Note: the compiler generates direct calls to this interface, via Rtsfind.
+ --  Any changes to this interface may require corresponding compiler changes.
+ 
+ package System.Tasking.Async_Delays is
+ 
+    --  Suppose the following source code is given:
+ 
+    --  select delay When;
+    --     ...continuation for timeout case...
+    --  then abort
+    --     ...abortable part...
+    --  end select;
+ 
+    --  The compiler should expand this to the following:
+ 
+    --  declare
+    --     DB : aliased Delay_Block;
+    --  begin
+    --     if System.Tasking.Async_Delays.Enqueue_Duration
+    --       (When, DB'Unchecked_Access)
+    --     then
+    --        begin
+    --           A101b : declare
+    --              procedure _clean is
+    --              begin
+    --                 System.Tasking.Async_Delays.Cancel_Async_Delay
+    --                   (DB'Unchecked_Access);
+    --                 return;
+    --              end _clean;
+    --           begin
+    --              abort_undefer.all;
+    --              ...abortable part...
+    --           exception
+    --              when all others =>
+    --                 declare
+    --                    E105b : exception_occurrence;
+    --                 begin
+    --                    save_occurrence (E105b, get_current_excep.all.all);
+    --                    _clean;
+    --                    reraise_occurrence_no_defer (E105b);
+    --                 end;
+    --           at end
+    --              _clean;
+    --           end A101b;
+    --        exception
+    --           when _abort_signal =>
+    --              abort_undefer.all;
+    --        end;
+    --     end if;
+ 
+    --     if Timed_Out (DB'Unchecked_Access) then
+    --        ...continuation for timeout case...
+    --     end if;
+    --  end;
+ 
+    -----------------
+    -- Delay_Block --
+    -----------------
+ 
+    type Delay_Block is limited private;
+    type Delay_Block_Access is access all Delay_Block;
+ 
+    function Enqueue_Duration
+      (T : Duration;
+       D : Delay_Block_Access) return Boolean;
+    --  Enqueue the specified relative delay. Returns True if the delay has
+    --  been enqueued, False if it has already expired. If the delay has been
+    --  enqueued, abort is deferred.
+ 
+    procedure Cancel_Async_Delay (D : Delay_Block_Access);
+    --  Cancel the specified asynchronous delay
+ 
+    function Timed_Out (D : Delay_Block_Access) return Boolean;
+    pragma Inline (Timed_Out);
+    --  Return True if the delay specified in D has timed out
+ 
+    --  There are child units for delays on Ada.Calendar.Time/Ada.Real_Time.Time
+    --  so that an application need not link in features that it is not using.
+ 
+ private
+ 
+    type Delay_Block is limited record
+       Self_Id : Task_Id;
+       --  ID of the calling task
+ 
+       Level : ATC_Level_Base;
+       --  Normally Level is the ATC nesting level of the asynchronous select
+       --  statement to which this delay belongs, but after a call has been
+       --  dequeued we set it to ATC_Level_Infinity so that the Cancel operation
+       --  can detect repeated calls, and act idempotently.
+ 
+       Resume_Time : Duration;
+       --  The absolute wake up time, represented as Duration
+ 
+       Timed_Out : Boolean := False;
+       --  Set to true if the delay has timed out
+ 
+       Succ, Pred : Delay_Block_Access;
+       --  A double linked list
+    end record;
+ 
+    --  The above "overlaying" of Self_Id and Level to hold other data that has
+    --  a non-overlapping lifetime is an unabashed hack to save memory.
+ 
+    procedure Time_Enqueue
+      (T : Duration;
+       D : Delay_Block_Access);
+    pragma Inline (Time_Enqueue);
+    --  Used by the child units to enqueue delays on the timer queue implemented
+    --  in the body of this package. T denotes a point in time as the duration
+    --  elapsed since the epoch of the Ada real-time clock.
+ 
+ end System.Tasking.Async_Delays;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-tadeca.adb gcc-8.1.0/gcc/ada/libgnarl/s-tadeca.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-tadeca.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-tadeca.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,76 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --               SYSTEM.TASKING.ASYNC_DELAYS.ENQUEUE_CALENDAR               --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --          Copyright (C) 1998-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with Ada.Calendar.Delays;
+ 
+ with System.OS_Constants;
+ with System.OS_Primitives;
+ with System.Task_Primitives.Operations;
+ with System.Tasking.Initialization;
+ 
+ function System.Tasking.Async_Delays.Enqueue_Calendar
+   (T : Ada.Calendar.Time;
+    D : Delay_Block_Access) return Boolean
+ is
+    use type Ada.Calendar.Time;
+ 
+    package SOSC renames System.OS_Constants;
+    package STPO renames System.Task_Primitives.Operations;
+ 
+    RT_T : Duration := Ada.Calendar.Delays.To_Duration (T);
+ 
+ begin
+    if T <= Ada.Calendar.Clock then
+       D.Timed_Out := True;
+       System.Task_Primitives.Operations.Yield;
+       return False;
+    end if;
+ 
+    --  T is expressed as a duration elapsed since the UNIX epoch, whereas
+    --  Time_Enqueue expects duration elapsed since the epoch of the Ada real-
+    --  time clock: compensate if necessary.
+ 
+    --  Comparison "SOSC.CLOCK_RT_Ada = SOSC.CLOCK_REALTIME" is compile
+    --  time known, so turn warnings off.
+ 
+    pragma Warnings (Off);
+ 
+    if SOSC.CLOCK_RT_Ada /= SOSC.CLOCK_REALTIME then
+       pragma Warnings (On);
+ 
+       RT_T := RT_T - OS_Primitives.Clock + STPO.Monotonic_Clock;
+    end if;
+ 
+    System.Tasking.Initialization.Defer_Abort
+      (System.Task_Primitives.Operations.Self);
+    Time_Enqueue (RT_T, D);
+    return True;
+ end System.Tasking.Async_Delays.Enqueue_Calendar;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-tadeca.ads gcc-8.1.0/gcc/ada/libgnarl/s-tadeca.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-tadeca.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-tadeca.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,40 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --               SYSTEM.TASKING.ASYNC_DELAYS.ENQUEUE_CALENDAR               --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --          Copyright (C) 1998-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Note: the compiler generates direct calls to this interface, via Rtsfind.
+ --  Any changes to this interface may require corresponding compiler changes.
+ 
+ --  See comments in package System.Tasking.Async_Delays
+ 
+ with Ada.Calendar;
+ function System.Tasking.Async_Delays.Enqueue_Calendar
+   (T : Ada.Calendar.Time;
+    D : Delay_Block_Access) return Boolean;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-tadert.adb gcc-8.1.0/gcc/ada/libgnarl/s-tadert.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-tadert.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-tadert.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,53 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                  SYSTEM.TASKING.ASYNC_DELAYS.ENQUEUE_RT                  --
+ --                                                                          --
+ --                                B o d y                                   --
+ --                                                                          --
+ --          Copyright (C) 1998-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with Ada.Real_Time;
+ with Ada.Real_Time.Delays;
+ with System.Task_Primitives.Operations;
+ with System.Tasking.Initialization;
+ 
+ function System.Tasking.Async_Delays.Enqueue_RT
+   (T : Ada.Real_Time.Time;
+    D : Delay_Block_Access) return Boolean
+ is
+    use type Ada.Real_Time.Time;  -- for "=" operator
+ begin
+    if T <= Ada.Real_Time.Clock then
+       D.Timed_Out := True;
+       System.Task_Primitives.Operations.Yield;
+       return False;
+    end if;
+ 
+    System.Tasking.Initialization.Defer_Abort
+      (System.Task_Primitives.Operations.Self);
+    Time_Enqueue (Ada.Real_Time.Delays.To_Duration (T), D);
+    return True;
+ end System.Tasking.Async_Delays.Enqueue_RT;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-tadert.ads gcc-8.1.0/gcc/ada/libgnarl/s-tadert.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-tadert.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-tadert.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,41 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                  SYSTEM.TASKING.ASYNC_DELAYS.ENQUEUE_RT                  --
+ --                                                                          --
+ --                                S p e c                                   --
+ --                                                                          --
+ --          Copyright (C) 1998-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Note: the compiler generates direct calls to this interface, via Rtsfind.
+ --  Any changes to this interface may require corresponding compiler changes.
+ 
+ --  See comments in package System.Tasking.Async_Delays
+ 
+ with Ada.Real_Time;
+ function System.Tasking.Async_Delays.Enqueue_RT
+   (T    : Ada.Real_Time.Time;
+    D    : Delay_Block_Access)
+    return Boolean;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-taenca.adb gcc-8.1.0/gcc/ada/libgnarl/s-taenca.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-taenca.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-taenca.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,635 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --             S Y S T E M . T A S K I N G . E N T R Y _ C A L L S          --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --         Copyright (C) 1992-2018, Free Software Foundation, Inc.          --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Task_Primitives.Operations;
+ with System.Tasking.Initialization;
+ with System.Tasking.Protected_Objects.Entries;
+ with System.Tasking.Protected_Objects.Operations;
+ with System.Tasking.Queuing;
+ with System.Tasking.Utilities;
+ with System.Parameters;
+ 
+ package body System.Tasking.Entry_Calls is
+ 
+    package STPO renames System.Task_Primitives.Operations;
+ 
+    use Parameters;
+    use Protected_Objects.Entries;
+    use Protected_Objects.Operations;
+ 
+    --  DO NOT use Protected_Objects.Lock or Protected_Objects.Unlock
+    --  internally. Those operations will raise Program_Error, which
+    --  we are not prepared to handle inside the RTS. Instead, use
+    --  System.Task_Primitives lock operations directly on Protection.L.
+ 
+    -----------------------
+    -- Local Subprograms --
+    -----------------------
+ 
+    procedure Lock_Server (Entry_Call : Entry_Call_Link);
+ 
+    --  This locks the server targeted by Entry_Call
+    --
+    --  This may be a task or a protected object, depending on the target of the
+    --  original call or any subsequent requeues.
+    --
+    --  This routine is needed because the field specifying the server for this
+    --  call must be protected by the server's mutex. If it were protected by
+    --  the caller's mutex, accessing the server's queues would require locking
+    --  the caller to get the server, locking the server, and then accessing the
+    --  queues. This involves holding two ATCB locks at once, something which we
+    --  can guarantee that it will always be done in the same order, or locking
+    --  a protected object while we hold an ATCB lock, something which is not
+    --  permitted. Since the server cannot be obtained reliably, it must be
+    --  obtained unreliably and then checked again once it has been locked.
+    --
+    --  If Single_Lock and server is a PO, release RTS_Lock
+    --
+    --  This should only be called by the Entry_Call.Self.
+    --  It should be holding no other ATCB locks at the time.
+ 
+    procedure Unlock_Server (Entry_Call : Entry_Call_Link);
+    --  STPO.Unlock the server targeted by Entry_Call. The server must
+    --  be locked before calling this.
+    --
+    --  If Single_Lock and server is a PO, take RTS_Lock on exit.
+ 
+    procedure Unlock_And_Update_Server
+      (Self_ID    : Task_Id;
+       Entry_Call : Entry_Call_Link);
+    --  Similar to Unlock_Server, but services entry calls if the
+    --  server is a protected object.
+    --
+    --  If Single_Lock and server is a PO, take RTS_Lock on exit.
+ 
+    procedure Check_Pending_Actions_For_Entry_Call
+      (Self_ID    : Task_Id;
+       Entry_Call : Entry_Call_Link);
+    --  This procedure performs priority change of a queued call and dequeuing
+    --  of an entry call when the call is cancelled. If the call is dequeued the
+    --  state should be set to Cancelled. Call only with abort deferred and
+    --  holding lock of Self_ID. This is a bit of common code for all entry
+    --  calls. The effect is to do any deferred base priority change operation,
+    --  in case some other task called STPO.Set_Priority while the current task
+    --  had abort deferred, and to dequeue the call if the call has been
+    --  aborted.
+ 
+    procedure Poll_Base_Priority_Change_At_Entry_Call
+      (Self_ID    : Task_Id;
+       Entry_Call : Entry_Call_Link);
+    pragma Inline (Poll_Base_Priority_Change_At_Entry_Call);
+    --  A specialized version of Poll_Base_Priority_Change, that does the
+    --  optional entry queue reordering. Has to be called with the Self_ID's
+    --  ATCB write-locked. May temporarily release the lock.
+ 
+    ---------------------
+    -- Check_Exception --
+    ---------------------
+ 
+    procedure Check_Exception
+      (Self_ID    : Task_Id;
+       Entry_Call : Entry_Call_Link)
+    is
+       pragma Warnings (Off, Self_ID);
+ 
+       use type Ada.Exceptions.Exception_Id;
+ 
+       procedure Internal_Raise (X : Ada.Exceptions.Exception_Id);
+       pragma Import (C, Internal_Raise, "__gnat_raise_with_msg");
+ 
+       E : constant Ada.Exceptions.Exception_Id :=
+             Entry_Call.Exception_To_Raise;
+    begin
+       --  pragma Assert (Self_ID.Deferral_Level = 0);
+ 
+       --  The above may be useful for debugging, but the Florist packages
+       --  contain critical sections that defer abort and then do entry calls,
+       --  which causes the above Assert to trip.
+ 
+       if E /= Ada.Exceptions.Null_Id then
+          Internal_Raise (E);
+       end if;
+    end Check_Exception;
+ 
+    ------------------------------------------
+    -- Check_Pending_Actions_For_Entry_Call --
+    ------------------------------------------
+ 
+    procedure Check_Pending_Actions_For_Entry_Call
+      (Self_ID    : Task_Id;
+       Entry_Call : Entry_Call_Link)
+    is
+    begin
+       pragma Assert (Self_ID = Entry_Call.Self);
+ 
+       Poll_Base_Priority_Change_At_Entry_Call (Self_ID, Entry_Call);
+ 
+       if Self_ID.Pending_ATC_Level < Self_ID.ATC_Nesting_Level
+         and then Entry_Call.State = Now_Abortable
+       then
+          STPO.Unlock (Self_ID);
+          Lock_Server (Entry_Call);
+ 
+          if Queuing.Onqueue (Entry_Call)
+            and then Entry_Call.State = Now_Abortable
+          then
+             Queuing.Dequeue_Call (Entry_Call);
+             Entry_Call.State :=
+               (if Entry_Call.Cancellation_Attempted then Cancelled else Done);
+             Unlock_And_Update_Server (Self_ID, Entry_Call);
+ 
+          else
+             Unlock_Server (Entry_Call);
+          end if;
+ 
+          STPO.Write_Lock (Self_ID);
+       end if;
+    end Check_Pending_Actions_For_Entry_Call;
+ 
+    -----------------
+    -- Lock_Server --
+    -----------------
+ 
+    procedure Lock_Server (Entry_Call : Entry_Call_Link) is
+       Test_Task         : Task_Id;
+       Test_PO           : Protection_Entries_Access;
+       Ceiling_Violation : Boolean;
+       Failures          : Integer := 0;
+ 
+    begin
+       Test_Task := Entry_Call.Called_Task;
+ 
+       loop
+          if Test_Task = null then
+ 
+             --  Entry_Call was queued on a protected object, or in transition,
+             --  when we last fetched Test_Task.
+ 
+             Test_PO := To_Protection (Entry_Call.Called_PO);
+ 
+             if Test_PO = null then
+ 
+                --  We had very bad luck, interleaving with TWO different
+                --  requeue operations. Go around the loop and try again.
+ 
+                if Single_Lock then
+                   STPO.Unlock_RTS;
+                   STPO.Yield;
+                   STPO.Lock_RTS;
+                else
+                   STPO.Yield;
+                end if;
+ 
+             else
+                if Single_Lock then
+                   STPO.Unlock_RTS;
+                end if;
+ 
+                Lock_Entries_With_Status (Test_PO, Ceiling_Violation);
+ 
+                --  ???
+ 
+                --  The following code allows Lock_Server to be called when
+                --  cancelling a call, to allow for the possibility that the
+                --  priority of the caller has been raised beyond that of the
+                --  protected entry call by Ada.Dynamic_Priorities.Set_Priority.
+ 
+                --  If the current task has a higher priority than the ceiling
+                --  of the protected object, temporarily lower it. It will
+                --  be reset in Unlock.
+ 
+                if Ceiling_Violation then
+                   declare
+                      Current_Task      : constant Task_Id := STPO.Self;
+                      Old_Base_Priority : System.Any_Priority;
+ 
+                   begin
+                      if Single_Lock then
+                         STPO.Lock_RTS;
+                      end if;
+ 
+                      STPO.Write_Lock (Current_Task);
+                      Old_Base_Priority := Current_Task.Common.Base_Priority;
+                      Current_Task.New_Base_Priority := Test_PO.Ceiling;
+                      System.Tasking.Initialization.Change_Base_Priority
+                        (Current_Task);
+                      STPO.Unlock (Current_Task);
+ 
+                      if Single_Lock then
+                         STPO.Unlock_RTS;
+                      end if;
+ 
+                      --  Following lock should not fail
+ 
+                      Lock_Entries (Test_PO);
+ 
+                      Test_PO.Old_Base_Priority := Old_Base_Priority;
+                      Test_PO.Pending_Action := True;
+                   end;
+                end if;
+ 
+                exit when To_Address (Test_PO) = Entry_Call.Called_PO;
+                Unlock_Entries (Test_PO);
+ 
+                if Single_Lock then
+                   STPO.Lock_RTS;
+                end if;
+             end if;
+ 
+          else
+             STPO.Write_Lock (Test_Task);
+             exit when Test_Task = Entry_Call.Called_Task;
+             STPO.Unlock (Test_Task);
+          end if;
+ 
+          Test_Task := Entry_Call.Called_Task;
+          Failures := Failures + 1;
+          pragma Assert (Failures <= 5);
+       end loop;
+    end Lock_Server;
+ 
+    ---------------------------------------------
+    -- Poll_Base_Priority_Change_At_Entry_Call --
+    ---------------------------------------------
+ 
+    procedure Poll_Base_Priority_Change_At_Entry_Call
+      (Self_ID    : Task_Id;
+       Entry_Call : Entry_Call_Link)
+    is
+    begin
+       if Self_ID.Pending_Priority_Change then
+ 
+          --  Check for ceiling violations ???
+ 
+          Self_ID.Pending_Priority_Change := False;
+ 
+          --  Requeue the entry call at the new priority. We need to requeue
+          --  even if the new priority is the same than the previous (see ACATS
+          --  test cxd4006).
+ 
+          STPO.Unlock (Self_ID);
+          Lock_Server (Entry_Call);
+          Queuing.Requeue_Call_With_New_Prio
+            (Entry_Call, STPO.Get_Priority (Self_ID));
+          Unlock_And_Update_Server (Self_ID, Entry_Call);
+          STPO.Write_Lock (Self_ID);
+       end if;
+    end Poll_Base_Priority_Change_At_Entry_Call;
+ 
+    --------------------
+    -- Reset_Priority --
+    --------------------
+ 
+    procedure Reset_Priority
+      (Acceptor               : Task_Id;
+       Acceptor_Prev_Priority : Rendezvous_Priority)
+    is
+    begin
+       pragma Assert (Acceptor = STPO.Self);
+ 
+       --  Since we limit this kind of "active" priority change to be done
+       --  by the task for itself, we don't need to lock Acceptor.
+ 
+       if Acceptor_Prev_Priority /= Priority_Not_Boosted then
+          STPO.Set_Priority (Acceptor, Acceptor_Prev_Priority,
+            Loss_Of_Inheritance => True);
+       end if;
+    end Reset_Priority;
+ 
+    ------------------------------
+    -- Try_To_Cancel_Entry_Call --
+    ------------------------------
+ 
+    procedure Try_To_Cancel_Entry_Call (Succeeded : out Boolean) is
+       Entry_Call : Entry_Call_Link;
+       Self_ID    : constant Task_Id := STPO.Self;
+ 
+       use type Ada.Exceptions.Exception_Id;
+ 
+    begin
+       Entry_Call := Self_ID.Entry_Calls (Self_ID.ATC_Nesting_Level)'Access;
+ 
+       --  Experimentation has shown that abort is sometimes (but not
+       --  always) already deferred when Cancel_xxx_Entry_Call is called.
+       --  That may indicate an error. Find out what is going on. ???
+ 
+       pragma Assert (Entry_Call.Mode = Asynchronous_Call);
+       Initialization.Defer_Abort_Nestable (Self_ID);
+ 
+       if Single_Lock then
+          STPO.Lock_RTS;
+       end if;
+ 
+       STPO.Write_Lock (Self_ID);
+       Entry_Call.Cancellation_Attempted := True;
+ 
+       if Self_ID.Pending_ATC_Level >= Entry_Call.Level then
+          Self_ID.Pending_ATC_Level := Entry_Call.Level - 1;
+       end if;
+ 
+       Entry_Calls.Wait_For_Completion (Entry_Call);
+       STPO.Unlock (Self_ID);
+ 
+       if Single_Lock then
+          STPO.Unlock_RTS;
+       end if;
+ 
+       Succeeded := Entry_Call.State = Cancelled;
+ 
+       Initialization.Undefer_Abort_Nestable (Self_ID);
+ 
+       --  Ideally, abort should no longer be deferred at this point, so we
+       --  should be able to call Check_Exception. The loop below should be
+       --  considered temporary, to work around the possibility that abort
+       --  may be deferred more than one level deep ???
+ 
+       if Entry_Call.Exception_To_Raise /= Ada.Exceptions.Null_Id then
+          while Self_ID.Deferral_Level > 0 loop
+             System.Tasking.Initialization.Undefer_Abort_Nestable (Self_ID);
+          end loop;
+ 
+          Entry_Calls.Check_Exception (Self_ID, Entry_Call);
+       end if;
+    end Try_To_Cancel_Entry_Call;
+ 
+    ------------------------------
+    -- Unlock_And_Update_Server --
+    ------------------------------
+ 
+    procedure Unlock_And_Update_Server
+      (Self_ID    : Task_Id;
+       Entry_Call : Entry_Call_Link)
+    is
+       Called_PO : Protection_Entries_Access;
+       Caller    : Task_Id;
+ 
+    begin
+       if Entry_Call.Called_Task /= null then
+          STPO.Unlock (Entry_Call.Called_Task);
+       else
+          Called_PO := To_Protection (Entry_Call.Called_PO);
+          PO_Service_Entries (Self_ID, Called_PO, False);
+ 
+          if Called_PO.Pending_Action then
+             Called_PO.Pending_Action := False;
+             Caller := STPO.Self;
+ 
+             if Single_Lock then
+                STPO.Lock_RTS;
+             end if;
+ 
+             STPO.Write_Lock (Caller);
+             Caller.New_Base_Priority := Called_PO.Old_Base_Priority;
+             Initialization.Change_Base_Priority (Caller);
+             STPO.Unlock (Caller);
+ 
+             if Single_Lock then
+                STPO.Unlock_RTS;
+             end if;
+          end if;
+ 
+          Unlock_Entries (Called_PO);
+ 
+          if Single_Lock then
+             STPO.Lock_RTS;
+          end if;
+       end if;
+    end Unlock_And_Update_Server;
+ 
+    -------------------
+    -- Unlock_Server --
+    -------------------
+ 
+    procedure Unlock_Server (Entry_Call : Entry_Call_Link) is
+       Caller    : Task_Id;
+       Called_PO : Protection_Entries_Access;
+ 
+    begin
+       if Entry_Call.Called_Task /= null then
+          STPO.Unlock (Entry_Call.Called_Task);
+       else
+          Called_PO := To_Protection (Entry_Call.Called_PO);
+ 
+          if Called_PO.Pending_Action then
+             Called_PO.Pending_Action := False;
+             Caller := STPO.Self;
+ 
+             if Single_Lock then
+                STPO.Lock_RTS;
+             end if;
+ 
+             STPO.Write_Lock (Caller);
+             Caller.New_Base_Priority := Called_PO.Old_Base_Priority;
+             Initialization.Change_Base_Priority (Caller);
+             STPO.Unlock (Caller);
+ 
+             if Single_Lock then
+                STPO.Unlock_RTS;
+             end if;
+          end if;
+ 
+          Unlock_Entries (Called_PO);
+ 
+          if Single_Lock then
+             STPO.Lock_RTS;
+          end if;
+       end if;
+    end Unlock_Server;
+ 
+    -------------------------
+    -- Wait_For_Completion --
+    -------------------------
+ 
+    procedure Wait_For_Completion (Entry_Call : Entry_Call_Link) is
+       Self_Id : constant Task_Id := Entry_Call.Self;
+ 
+    begin
+       --  If this is a conditional call, it should be cancelled when it
+       --  becomes abortable. This is checked in the loop below.
+ 
+       Self_Id.Common.State := Entry_Caller_Sleep;
+ 
+       --  Try to remove calls to Sleep in the loop below by letting the caller
+       --  a chance of getting ready immediately, using Unlock & Yield.
+       --  See similar action in Wait_For_Call & Timed_Selective_Wait.
+ 
+       if Single_Lock then
+          STPO.Unlock_RTS;
+       else
+          STPO.Unlock (Self_Id);
+       end if;
+ 
+       if Entry_Call.State < Done then
+          STPO.Yield;
+       end if;
+ 
+       if Single_Lock then
+          STPO.Lock_RTS;
+       else
+          STPO.Write_Lock (Self_Id);
+       end if;
+ 
+       loop
+          Check_Pending_Actions_For_Entry_Call (Self_Id, Entry_Call);
+ 
+          exit when Entry_Call.State >= Done;
+ 
+          STPO.Sleep (Self_Id, Entry_Caller_Sleep);
+       end loop;
+ 
+       Self_Id.Common.State := Runnable;
+       Utilities.Exit_One_ATC_Level (Self_Id);
+ 
+    end Wait_For_Completion;
+ 
+    --------------------------------------
+    -- Wait_For_Completion_With_Timeout --
+    --------------------------------------
+ 
+    procedure Wait_For_Completion_With_Timeout
+      (Entry_Call  : Entry_Call_Link;
+       Wakeup_Time : Duration;
+       Mode        : Delay_Modes;
+       Yielded     : out Boolean)
+    is
+       Self_Id  : constant Task_Id := Entry_Call.Self;
+       Timedout : Boolean := False;
+ 
+    begin
+       --  This procedure waits for the entry call to be served, with a timeout.
+       --  It tries to cancel the call if the timeout expires before the call is
+       --  served.
+ 
+       --  If we wake up from the timed sleep operation here, it may be for
+       --  several possible reasons:
+ 
+       --  1) The entry call is done being served.
+       --  2) There is an abort or priority change to be served.
+       --  3) The timeout has expired (Timedout = True)
+       --  4) There has been a spurious wakeup.
+ 
+       --  Once the timeout has expired we may need to continue to wait if the
+       --  call is already being serviced. In that case, we want to go back to
+       --  sleep, but without any timeout. The variable Timedout is used to
+       --  control this. If the Timedout flag is set, we do not need to
+       --  STPO.Sleep with a timeout. We just sleep until we get a wakeup for
+       --  some status change.
+ 
+       --  The original call may have become abortable after waking up. We want
+       --  to check Check_Pending_Actions_For_Entry_Call again in any case.
+ 
+       pragma Assert (Entry_Call.Mode = Timed_Call);
+ 
+       Yielded := False;
+       Self_Id.Common.State := Entry_Caller_Sleep;
+ 
+       --  Looping is necessary in case the task wakes up early from the timed
+       --  sleep, due to a "spurious wakeup". Spurious wakeups are a weakness of
+       --  POSIX condition variables. A thread waiting for a condition variable
+       --  is allowed to wake up at any time, not just when the condition is
+       --  signaled. See same loop in the ordinary Wait_For_Completion, above.
+ 
+       loop
+          Check_Pending_Actions_For_Entry_Call (Self_Id, Entry_Call);
+          exit when Entry_Call.State >= Done;
+ 
+          STPO.Timed_Sleep (Self_Id, Wakeup_Time, Mode,
+            Entry_Caller_Sleep, Timedout, Yielded);
+ 
+          if Timedout then
+             --  Try to cancel the call (see Try_To_Cancel_Entry_Call for
+             --  corresponding code in the ATC case).
+ 
+             Entry_Call.Cancellation_Attempted := True;
+ 
+             --  Reset Entry_Call.State so that the call is marked as cancelled
+             --  by Check_Pending_Actions_For_Entry_Call below.
+ 
+             if Entry_Call.State < Was_Abortable then
+                Entry_Call.State := Now_Abortable;
+             end if;
+ 
+             if Self_Id.Pending_ATC_Level >= Entry_Call.Level then
+                Self_Id.Pending_ATC_Level := Entry_Call.Level - 1;
+             end if;
+ 
+             --  The following loop is the same as the loop and exit code
+             --  from the ordinary Wait_For_Completion. If we get here, we
+             --  have timed out but we need to keep waiting until the call
+             --  has actually completed or been cancelled successfully.
+ 
+             loop
+                Check_Pending_Actions_For_Entry_Call (Self_Id, Entry_Call);
+                exit when Entry_Call.State >= Done;
+                STPO.Sleep (Self_Id, Entry_Caller_Sleep);
+             end loop;
+ 
+             Self_Id.Common.State := Runnable;
+             Utilities.Exit_One_ATC_Level (Self_Id);
+ 
+             return;
+          end if;
+       end loop;
+ 
+       --  This last part is the same as ordinary Wait_For_Completion,
+       --  and is only executed if the call completed without timing out.
+ 
+       Self_Id.Common.State := Runnable;
+       Utilities.Exit_One_ATC_Level (Self_Id);
+    end Wait_For_Completion_With_Timeout;
+ 
+    --------------------------
+    -- Wait_Until_Abortable --
+    --------------------------
+ 
+    procedure Wait_Until_Abortable
+      (Self_ID : Task_Id;
+       Call    : Entry_Call_Link)
+    is
+    begin
+       pragma Assert (Self_ID.ATC_Nesting_Level > 0);
+       pragma Assert (Call.Mode = Asynchronous_Call);
+ 
+       STPO.Write_Lock (Self_ID);
+       Self_ID.Common.State := Entry_Caller_Sleep;
+ 
+       loop
+          Check_Pending_Actions_For_Entry_Call (Self_ID, Call);
+          exit when Call.State >= Was_Abortable;
+          STPO.Sleep (Self_ID, Async_Select_Sleep);
+       end loop;
+ 
+       Self_ID.Common.State := Runnable;
+       STPO.Unlock (Self_ID);
+ 
+    end Wait_Until_Abortable;
+ 
+ end System.Tasking.Entry_Calls;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-taenca.ads gcc-8.1.0/gcc/ada/libgnarl/s-taenca.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-taenca.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-taenca.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,97 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --             S Y S T E M . T A S K I N G . E N T R Y _ C A L L S          --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --         Copyright (C) 1992-2018, Free Software Foundation, Inc.          --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package provides internal RTS calls implementing operations
+ --  that apply to general entry calls, that is, calls to either
+ --  protected or task entries.
+ 
+ --  These declarations are not part of the GNARL Interface
+ 
+ package System.Tasking.Entry_Calls is
+ 
+    procedure Wait_For_Completion (Entry_Call : Entry_Call_Link);
+    --  This procedure suspends the calling task until the specified entry
+    --  call has either been completed or cancelled. It performs other
+    --  operations required of suspended tasks, such as performing
+    --  dynamic priority changes. On exit, the call will not be queued.
+    --  This waits for calls on task or protected entries.
+    --  Abortion must be deferred when calling this procedure.
+    --  Call this only when holding Self (= Entry_Call.Self) or global RTS lock.
+ 
+    procedure Wait_For_Completion_With_Timeout
+      (Entry_Call  : Entry_Call_Link;
+       Wakeup_Time : Duration;
+       Mode        : Delay_Modes;
+       Yielded     : out Boolean);
+    --  Same as Wait_For_Completion but wait for a timeout with the value
+    --  specified in Wakeup_Time as well.
+    --  On return, Yielded indicates whether the wait has performed a yield.
+    --  Check_Exception must be called after calling this procedure.
+ 
+    procedure Wait_Until_Abortable
+      (Self_ID : Task_Id;
+       Call    : Entry_Call_Link);
+    --  This procedure suspends the calling task until the specified entry
+    --  call is queued abortably or completes.
+    --  Abortion must be deferred when calling this procedure, and the global
+    --  RTS lock taken when Single_Lock.
+ 
+    procedure Try_To_Cancel_Entry_Call (Succeeded : out Boolean);
+    pragma Inline (Try_To_Cancel_Entry_Call);
+    --  Try to cancel async. entry call.
+    --  Effect includes Abort_To_Level and Wait_For_Completion.
+    --  Cancelled = True iff the cancellation was successful, i.e.,
+    --  the call was not Done before this call.
+    --  On return, the call is off-queue and the ATC level is reduced by one.
+ 
+    procedure Reset_Priority
+      (Acceptor               : Task_Id;
+       Acceptor_Prev_Priority : Rendezvous_Priority);
+    pragma Inline (Reset_Priority);
+    --  Reset the priority of a task completing an accept statement to
+    --  the value it had before the call.
+    --  Acceptor should always be equal to Self.
+ 
+    procedure Check_Exception
+      (Self_ID    : Task_Id;
+       Entry_Call : Entry_Call_Link);
+    pragma Inline (Check_Exception);
+    --  Raise any pending exception from the Entry_Call.
+    --  This should be called at the end of every compiler interface procedure
+    --  that implements an entry call.
+    --  In principle, the caller should not be abort-deferred (unless the
+    --  application program violates the Ada language rules by doing entry calls
+    --  from within protected operations -- an erroneous practice apparently
+    --  followed with success by some adventurous GNAT users).
+    --  Absolutely, the caller should not be holding any locks, or there
+    --  will be deadlock.
+ 
+ end System.Tasking.Entry_Calls;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-taprob.adb gcc-8.1.0/gcc/ada/libgnarl/s-taprob.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-taprob.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-taprob.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,271 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --      S Y S T E M . T A S K I N G . P R O T E C T E D _ O B J E C T S     --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --            Copyright (C) 1991-2017, Florida State University             --
+ --                     Copyright (C) 1995-2018, AdaCore                     --
+ --                                                                          --
+ -- GNAT is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ pragma Polling (Off);
+ --  Turn off polling, we do not want ATC polling to take place during tasking
+ --  operations. It causes infinite loops and other problems.
+ 
+ with System.Task_Primitives.Operations;
+ with System.Soft_Links.Tasking;
+ 
+ with System.Secondary_Stack;
+ pragma Elaborate_All (System.Secondary_Stack);
+ pragma Unreferenced (System.Secondary_Stack);
+ --  Make sure the body of Secondary_Stack is elaborated before calling
+ --  Init_Tasking_Soft_Links. See comments for this routine for explanation.
+ 
+ package body System.Tasking.Protected_Objects is
+ 
+    use System.Task_Primitives.Operations;
+ 
+    ----------------
+    -- Local Data --
+    ----------------
+ 
+    Locking_Policy : Character;
+    pragma Import (C, Locking_Policy, "__gl_locking_policy");
+ 
+    -------------------------
+    -- Finalize_Protection --
+    -------------------------
+ 
+    procedure Finalize_Protection (Object : in out Protection) is
+    begin
+       Finalize_Lock (Object.L'Unrestricted_Access);
+    end Finalize_Protection;
+ 
+    ---------------------------
+    -- Initialize_Protection --
+    ---------------------------
+ 
+    procedure Initialize_Protection
+      (Object           : Protection_Access;
+       Ceiling_Priority : Integer)
+    is
+       Init_Priority : Integer := Ceiling_Priority;
+ 
+    begin
+       if Init_Priority = Unspecified_Priority then
+          Init_Priority := System.Priority'Last;
+       end if;
+ 
+       Initialize_Lock (Init_Priority, Object.L'Access);
+       Object.Ceiling := System.Any_Priority (Init_Priority);
+       Object.New_Ceiling := System.Any_Priority (Init_Priority);
+       Object.Owner := Null_Task;
+    end Initialize_Protection;
+ 
+    -----------------
+    -- Get_Ceiling --
+    -----------------
+ 
+    function Get_Ceiling
+      (Object : Protection_Access) return System.Any_Priority is
+    begin
+       return Object.New_Ceiling;
+    end Get_Ceiling;
+ 
+    ----------
+    -- Lock --
+    ----------
+ 
+    procedure Lock (Object : Protection_Access) is
+       Ceiling_Violation : Boolean;
+ 
+    begin
+       --  The lock is made without deferring abort
+ 
+       --  Therefore the abort has to be deferred before calling this routine.
+       --  This means that the compiler has to generate a Defer_Abort call
+       --  before the call to Lock.
+ 
+       --  The caller is responsible for undeferring abort, and compiler
+       --  generated calls must be protected with cleanup handlers to ensure
+       --  that abort is undeferred in all cases.
+ 
+       --  If pragma Detect_Blocking is active then, as described in the ARM
+       --  9.5.1, par. 15, we must check whether this is an external call on a
+       --  protected subprogram with the same target object as that of the
+       --  protected action that is currently in progress (i.e., if the caller
+       --  is already the protected object's owner). If this is the case hence
+       --  Program_Error must be raised.
+ 
+       if Detect_Blocking and then Object.Owner = Self then
+          raise Program_Error;
+       end if;
+ 
+       Write_Lock (Object.L'Access, Ceiling_Violation);
+ 
+       if Ceiling_Violation then
+          raise Program_Error;
+       end if;
+ 
+       --  We are entering in a protected action, so that we increase the
+       --  protected object nesting level (if pragma Detect_Blocking is
+       --  active), and update the protected object's owner.
+ 
+       if Detect_Blocking then
+          declare
+             Self_Id : constant Task_Id := Self;
+          begin
+             --  Update the protected object's owner
+ 
+             Object.Owner := Self_Id;
+ 
+             --  Increase protected object nesting level
+ 
+             Self_Id.Common.Protected_Action_Nesting :=
+               Self_Id.Common.Protected_Action_Nesting + 1;
+          end;
+       end if;
+    end Lock;
+ 
+    --------------------
+    -- Lock_Read_Only --
+    --------------------
+ 
+    procedure Lock_Read_Only (Object : Protection_Access) is
+       Ceiling_Violation : Boolean;
+ 
+    begin
+       --  If pragma Detect_Blocking is active then, as described in the ARM
+       --  9.5.1, par. 15, we must check whether this is an external call on
+       --  protected subprogram with the same target object as that of the
+       --  protected action that is currently in progress (i.e., if the caller
+       --  is already the protected object's owner). If this is the case hence
+       --  Program_Error must be raised.
+       --
+       --  Note that in this case (getting read access), several tasks may have
+       --  read ownership of the protected object, so that this method of
+       --  storing the (single) protected object's owner does not work reliably
+       --  for read locks. However, this is the approach taken for two major
+       --  reasons: first, this function is not currently being used (it is
+       --  provided for possible future use), and second, it largely simplifies
+       --  the implementation.
+ 
+       if Detect_Blocking and then Object.Owner = Self then
+          raise Program_Error;
+       end if;
+ 
+       Read_Lock (Object.L'Access, Ceiling_Violation);
+ 
+       if Ceiling_Violation then
+          raise Program_Error;
+       end if;
+ 
+       --  We are entering in a protected action, so we increase the protected
+       --  object nesting level (if pragma Detect_Blocking is active).
+ 
+       if Detect_Blocking then
+          declare
+             Self_Id : constant Task_Id := Self;
+          begin
+             --  Update the protected object's owner
+ 
+             Object.Owner := Self_Id;
+ 
+             --  Increase protected object nesting level
+ 
+             Self_Id.Common.Protected_Action_Nesting :=
+               Self_Id.Common.Protected_Action_Nesting + 1;
+          end;
+       end if;
+    end Lock_Read_Only;
+ 
+    -----------------
+    -- Set_Ceiling --
+    -----------------
+ 
+    procedure Set_Ceiling
+      (Object : Protection_Access;
+       Prio   : System.Any_Priority) is
+    begin
+       Object.New_Ceiling := Prio;
+    end Set_Ceiling;
+ 
+    ------------
+    -- Unlock --
+    ------------
+ 
+    procedure Unlock (Object : Protection_Access) is
+    begin
+       --  We are exiting from a protected action, so that we decrease the
+       --  protected object nesting level (if pragma Detect_Blocking is
+       --  active), and remove ownership of the protected object.
+ 
+       if Detect_Blocking then
+          declare
+             Self_Id : constant Task_Id := Self;
+ 
+          begin
+             --  Calls to this procedure can only take place when being within
+             --  a protected action and when the caller is the protected
+             --  object's owner.
+ 
+             pragma Assert (Self_Id.Common.Protected_Action_Nesting > 0
+                              and then Object.Owner = Self_Id);
+ 
+             --  Remove ownership of the protected object
+ 
+             Object.Owner := Null_Task;
+ 
+             --  We are exiting from a protected action, so we decrease the
+             --  protected object nesting level.
+ 
+             Self_Id.Common.Protected_Action_Nesting :=
+               Self_Id.Common.Protected_Action_Nesting - 1;
+          end;
+       end if;
+ 
+       --  Before releasing the mutex we must actually update its ceiling
+       --  priority if it has been changed.
+ 
+       if Object.New_Ceiling /= Object.Ceiling then
+          if Locking_Policy = 'C' then
+             System.Task_Primitives.Operations.Set_Ceiling
+               (Object.L'Access, Object.New_Ceiling);
+          end if;
+ 
+          Object.Ceiling := Object.New_Ceiling;
+       end if;
+ 
+       Unlock (Object.L'Access);
+ 
+    end Unlock;
+ 
+ begin
+    --  Ensure that tasking is initialized, as well as tasking soft links
+    --  when using protected objects.
+ 
+    Tasking.Initialize;
+    System.Soft_Links.Tasking.Init_Tasking_Soft_Links;
+ end System.Tasking.Protected_Objects;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-taprob.ads gcc-8.1.0/gcc/ada/libgnarl/s-taprob.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-taprob.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-taprob.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,241 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --      S Y S T E M . T A S K I N G . P R O T E C T E D _ O B J E C T S     --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package provides necessary definitions to handle simple (i.e without
+ --  entries) protected objects.
+ 
+ --  All the routines that handle protected objects with entries have been moved
+ --  to two children: Entries and Operations. Note that Entries only contains
+ --  the type declaration and the OO primitives. This is needed to avoid
+ --  circular dependency.
+ 
+ --  This package is part of the high level tasking interface used by the
+ --  compiler to expand Ada 95 tasking constructs into simpler run time calls
+ --  (aka GNARLI, GNU Ada Run-time Library Interface)
+ 
+ --  Note: the compiler generates direct calls to this interface, via Rtsfind.
+ --  Any changes to this interface may require corresponding compiler changes
+ --  in exp_ch9.adb and possibly exp_ch7.adb and exp_attr.adb
+ 
+ package System.Tasking.Protected_Objects is
+    pragma Elaborate_Body;
+ 
+    ---------------------------------
+    -- Compiler Interface (GNARLI) --
+    ---------------------------------
+ 
+    --  The compiler will expand in the GNAT tree the following construct:
+ 
+    --  protected PO is
+    --     procedure P;
+    --  private
+    --     open : boolean := false;
+    --  end PO;
+ 
+    --  protected body PO is
+    --     procedure P is
+    --        ...variable declarations...
+    --     begin
+    --        ...B...
+    --     end P;
+    --  end PO;
+ 
+    --  as follows:
+ 
+    --  protected type poT is
+    --     procedure p;
+    --  private
+    --     open : boolean := false;
+    --  end poT;
+    --  type poTV is limited record
+    --     open : boolean := false;
+    --     _object : aliased protection;
+    --  end record;
+    --  procedure poPT__pN (_object : in out poTV);
+    --  procedure poPT__pP (_object : in out poTV);
+    --  freeze poTV [
+    --     procedure poTVI (_init : in out poTV) is
+    --     begin
+    --        _init.open := false;
+    --        object-init-proc (_init._object);
+    --        initialize_protection (_init._object'unchecked_access,
+    --          unspecified_priority);
+    --        return;
+    --     end _init_proc;
+    --  ]
+    --  po : poT;
+    --  poTVI (poTV!(po));
+ 
+    --  procedure poPT__pN (_object : in out poTV) is
+    --     poR : protection renames _object._object;
+    --     openP : boolean renames _object.open;
+    --     ...variable declarations...
+    --  begin
+    --     ...B...
+    --     return;
+    --  end poPT__pN;
+ 
+    --  procedure poPT__pP (_object : in out poTV) is
+    --     procedure _clean is
+    --     begin
+    --        unlock (_object._object'unchecked_access);
+    --        return;
+    --     end _clean;
+    --  begin
+    --     lock (_object._object'unchecked_access);
+    --     B2b : begin
+    --        poPT__pN (_object);
+    --     at end
+    --        _clean;
+    --     end B2b;
+    --     return;
+    --  end poPT__pP;
+ 
+    Null_Protected_Entry : constant := Null_Entry;
+ 
+    Max_Protected_Entry : constant := Max_Entry;
+ 
+    type Protected_Entry_Index is new Entry_Index
+      range Null_Protected_Entry .. Max_Protected_Entry;
+ 
+    type Barrier_Function_Pointer is access
+      function
+        (O    : System.Address;
+         E    : Protected_Entry_Index)
+         return Boolean;
+    --  Pointer to a function which evaluates the barrier of a protected
+    --  entry body. O is a pointer to the compiler-generated record
+    --  representing the protected object, and E is the index of the
+    --  entry serviced by the body.
+ 
+    type Entry_Action_Pointer is access
+      procedure
+        (O : System.Address;
+         P : System.Address;
+         E : Protected_Entry_Index);
+    --  Pointer to a procedure which executes the sequence of statements
+    --  of a protected entry body. O is a pointer to the compiler-generated
+    --  record representing the protected object, P is a pointer to the
+    --  record of entry parameters, and E is the index of the
+    --  entry serviced by the body.
+ 
+    type Entry_Body is record
+       Barrier : Barrier_Function_Pointer;
+       Action  : Entry_Action_Pointer;
+    end record;
+    --  The compiler-generated code passes objects of this type to the GNARL
+    --  to allow it to access the executable code of an entry body and its
+    --  barrier.
+ 
+    type Protection is limited private;
+    --  This type contains the GNARL state of a protected object. The
+    --  application-defined portion of the state (i.e. private objects)
+    --  is maintained by the compiler-generated code.
+    --  Note that there are now 2 Protection types. One for the simple
+    --  case (no entries) and one for the general case that needs the whole
+    --  Finalization mechanism.
+    --  This split helps in the case of restricted run time where we want to
+    --  minimize the size of the code.
+ 
+    type Protection_Access is access all Protection;
+ 
+    Null_PO : constant Protection_Access := null;
+ 
+    function Get_Ceiling
+      (Object : Protection_Access) return System.Any_Priority;
+    --  Returns the new ceiling priority of the protected object
+ 
+    procedure Initialize_Protection
+      (Object           : Protection_Access;
+       Ceiling_Priority : Integer);
+    --  Initialize the Object parameter so that it can be used by the runtime
+    --  to keep track of the runtime state of a protected object.
+ 
+    procedure Lock (Object : Protection_Access);
+    --  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.
+ 
+    procedure Lock_Read_Only (Object : Protection_Access);
+    --  Lock a protected object for read access. Upon return, the caller
+    --  owns the lock for read access, and no other calls to Lock with the
+    --  same argument will return until the corresponding call to Unlock
+    --  has been made by the caller. Other calls to Lock_Read_Only may (but
+    --  need not) return before the call to Unlock, and the corresponding
+    --  callers will also own the lock for read access.
+ 
+    procedure Set_Ceiling
+      (Object : Protection_Access;
+       Prio   : System.Any_Priority);
+    --  Sets the new ceiling priority of the protected object
+ 
+    procedure Unlock (Object : Protection_Access);
+    --  Relinquish ownership of the lock for the object represented by
+    --  the Object parameter. If this ownership was for write access, or
+    --  if it was for read access where there are no other read access
+    --  locks outstanding, one (or more, in the case of Lock_Read_Only)
+    --  of the tasks waiting on this lock (if any) will be given the
+    --  lock and allowed to return from the Lock or Lock_Read_Only call.
+ 
+ private
+    type Protection is record
+       L : aliased Task_Primitives.Lock;
+       --  Lock used to ensure mutual exclusive access to the protected object
+ 
+       Ceiling : System.Any_Priority;
+       --  Ceiling priority associated to the protected object
+ 
+       New_Ceiling : System.Any_Priority;
+       --  New ceiling priority associated to the protected object. In case
+       --  of assignment of a new ceiling priority to the protected object the
+       --  frontend generates a call to set_ceiling to save the new value in
+       --  this field. After such assignment this value can be read by means
+       --  of the 'Priority attribute, which generates a call to get_ceiling.
+       --  However, the ceiling of the protected object will not be changed
+       --  until completion of the protected action in which the assignment
+       --  has been executed (AARM D.5.2 (10/2)).
+ 
+       Owner : Task_Id;
+       --  This field contains the protected object's owner. Null_Task
+       --  indicates that the protected object is not currently being used.
+       --  This information is used for detecting the type of potentially
+       --  blocking operations described in the ARM 9.5.1, par. 15 (external
+       --  calls on a protected subprogram with the same target object as that
+       --  of the protected action).
+    end record;
+ 
+    procedure Finalize_Protection (Object : in out Protection);
+    --  Clean up a Protection object (in particular, finalize the associated
+    --  Lock object). The compiler generates calls automatically to this
+    --  procedure
+ 
+ end System.Tasking.Protected_Objects;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-taprop.ads gcc-8.1.0/gcc/ada/libgnarl/s-taprop.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-taprop.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-taprop.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,571 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                GNU ADA RUN-TIME LIBRARY (GNARL) COMPONENTS               --
+ --                                                                          --
+ --     S Y S T E M . T A S K _ P R I M I T I V E S .O P E R A T I O N S     --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package contains all the GNULL primitives that interface directly with
+ --  the underlying OS.
+ 
+ with System.Parameters;
+ with System.Tasking;
+ with System.OS_Interface;
+ 
+ package System.Task_Primitives.Operations is
+    pragma Preelaborate;
+ 
+    package ST renames System.Tasking;
+    package OSI renames System.OS_Interface;
+ 
+    procedure Initialize (Environment_Task : ST.Task_Id);
+    --  Perform initialization and set up of the environment task for proper
+    --  operation of the tasking run-time. This must be called once, before any
+    --  other subprograms of this package are called.
+ 
+    procedure Create_Task
+      (T          : ST.Task_Id;
+       Wrapper    : System.Address;
+       Stack_Size : System.Parameters.Size_Type;
+       Priority   : System.Any_Priority;
+       Succeeded  : out Boolean);
+    pragma Inline (Create_Task);
+    --  Create a new low-level task with ST.Task_Id T and place other needed
+    --  information in the ATCB.
+    --
+    --  A new thread of control is created, with a stack of at least Stack_Size
+    --  storage units, and the procedure Wrapper is called by this new thread
+    --  of control. If Stack_Size = Unspecified_Storage_Size, choose a default
+    --  stack size; this may be effectively "unbounded" on some systems.
+    --
+    --  The newly created low-level task is associated with the ST.Task_Id T
+    --  such that any subsequent call to Self from within the context of the
+    --  low-level task returns T.
+    --
+    --  The caller is responsible for ensuring that the storage of the Ada
+    --  task control block object pointed to by T persists for the lifetime
+    --  of the new task.
+    --
+    --  Succeeded is set to true unless creation of the task failed,
+    --  as it may if there are insufficient resources to create another task.
+ 
+    procedure Enter_Task (Self_ID : ST.Task_Id);
+    pragma Inline (Enter_Task);
+    --  Initialize data structures specific to the calling task. Self must be
+    --  the ID of the calling task. It must be called (once) by the task
+    --  immediately after creation, while abort is still deferred. The effects
+    --  of other operations defined below are not defined unless the caller has
+    --  previously called Initialize_Task.
+ 
+    procedure Exit_Task;
+    pragma Inline (Exit_Task);
+    --  Destroy the thread of control. Self must be the ID of the calling task.
+    --  The effects of further calls to operations defined below on the task
+    --  are undefined thereafter.
+ 
+    ----------------------------------
+    -- ATCB allocation/deallocation --
+    ----------------------------------
+ 
+    package ATCB_Allocation is
+ 
+       function New_ATCB (Entry_Num : ST.Task_Entry_Index) return ST.Task_Id;
+       pragma Inline (New_ATCB);
+       --  Allocate a new ATCB with the specified number of entries
+ 
+       procedure Free_ATCB (T : ST.Task_Id);
+       pragma Inline (Free_ATCB);
+       --  Deallocate an ATCB previously allocated by New_ATCB
+ 
+    end ATCB_Allocation;
+ 
+    function New_ATCB (Entry_Num : ST.Task_Entry_Index) return ST.Task_Id
+      renames ATCB_Allocation.New_ATCB;
+ 
+    procedure Initialize_TCB (Self_ID : ST.Task_Id; Succeeded : out Boolean);
+    pragma Inline (Initialize_TCB);
+    --  Initialize all fields of the TCB
+ 
+    procedure Finalize_TCB (T : ST.Task_Id);
+    pragma Inline (Finalize_TCB);
+    --  Finalizes Private_Data of ATCB, and then deallocates it. This is also
+    --  responsible for recovering any storage or other resources that were
+    --  allocated by Create_Task (the one in this package). This should only be
+    --  called from Free_Task. After it is called there should be no further
+    --  reference to the ATCB that corresponds to T.
+ 
+    procedure Abort_Task (T : ST.Task_Id);
+    pragma Inline (Abort_Task);
+    --  Abort the task specified by T (the target task). This causes the target
+    --  task to asynchronously raise Abort_Signal if abort is not deferred, or
+    --  if it is blocked on an interruptible system call.
+    --
+    --  precondition:
+    --    the calling task is holding T's lock and has abort deferred
+    --
+    --  postcondition:
+    --    the calling task is holding T's lock and has abort deferred.
+ 
+    --  ??? modify GNARL to skip wakeup and always call Abort_Task
+ 
+    function Self return ST.Task_Id;
+    pragma Inline (Self);
+    --  Return a pointer to the Ada Task Control Block of the calling task
+ 
+    type Lock_Level is
+      (PO_Level,
+       Global_Task_Level,
+       RTS_Lock_Level,
+       ATCB_Level);
+    --  Type used to describe kind of lock for second form of Initialize_Lock
+    --  call specified below. See locking rules in System.Tasking (spec) for
+    --  more details.
+ 
+    procedure Initialize_Lock
+      (Prio : System.Any_Priority;
+       L    : not null access Lock);
+    procedure Initialize_Lock
+      (L     : not null access RTS_Lock;
+       Level : Lock_Level);
+    pragma Inline (Initialize_Lock);
+    --  Initialize a lock object
+    --
+    --  For Lock, Prio is the ceiling priority associated with the lock. For
+    --  RTS_Lock, the ceiling is implicitly Priority'Last.
+    --
+    --  If the underlying system does not support priority ceiling
+    --  locking, the Prio parameter is ignored.
+    --
+    --  The effect of either initialize operation is undefined unless is a lock
+    --  object that has not been initialized, or which has been finalized since
+    --  it was last initialized.
+    --
+    --  The effects of the other operations on lock objects are undefined
+    --  unless the lock object has been initialized and has not since been
+    --  finalized.
+    --
+    --  Initialization of the per-task lock is implicit in Create_Task
+    --
+    --  These operations raise Storage_Error if a lack of storage is detected
+ 
+    procedure Finalize_Lock (L : not null access Lock);
+    procedure Finalize_Lock (L : not null access RTS_Lock);
+    pragma Inline (Finalize_Lock);
+    --  Finalize a lock object, freeing any resources allocated by the
+    --  corresponding Initialize_Lock operation.
+ 
+    procedure Write_Lock
+      (L                 : not null access Lock;
+       Ceiling_Violation : out Boolean);
+    procedure Write_Lock
+      (L           : not null access RTS_Lock;
+       Global_Lock : Boolean := False);
+    procedure Write_Lock
+      (T : ST.Task_Id);
+    pragma Inline (Write_Lock);
+    --  Lock a lock object for write access. After this operation returns,
+    --  the calling task holds write permission for the lock object. No other
+    --  Write_Lock or Read_Lock operation on the same lock object will return
+    --  until this task executes an Unlock operation on the same object. The
+    --  effect is undefined if the calling task already holds read or write
+    --  permission for the lock object L.
+    --
+    --  For the operation on Lock, Ceiling_Violation is set to true iff the
+    --  operation failed, which will happen if there is a priority ceiling
+    --  violation.
+    --
+    --  For the operation on RTS_Lock, Global_Lock should be set to True
+    --  if L is a global lock (Single_RTS_Lock, Global_Task_Lock).
+    --
+    --  For the operation on ST.Task_Id, the lock is the special lock object
+    --  associated with that task's ATCB. This lock has effective ceiling
+    --  priority high enough that it is safe to call by a task with any
+    --  priority in the range System.Priority. It is implicitly initialized
+    --  by task creation. The effect is undefined if the calling task already
+    --  holds T's lock, or has interrupt-level priority. Finalization of the
+    --  per-task lock is implicit in Exit_Task.
+ 
+    procedure Read_Lock
+      (L                 : not null access Lock;
+       Ceiling_Violation : out Boolean);
+    pragma Inline (Read_Lock);
+    --  Lock a lock object for read access. After this operation returns,
+    --  the calling task has non-exclusive read permission for the logical
+    --  resources that are protected by the lock. No other Write_Lock operation
+    --  on the same object will return until this task and any other tasks with
+    --  read permission for this lock have executed Unlock operation(s) on the
+    --  lock object. A Read_Lock for a lock object may return immediately while
+    --  there are tasks holding read permission, provided there are no tasks
+    --  holding write permission for the object. The effect is undefined if
+    --  the calling task already holds read or write permission for L.
+    --
+    --  Alternatively: An implementation may treat Read_Lock identically to
+    --  Write_Lock. This simplifies the implementation, but reduces the level
+    --  of concurrency that can be achieved.
+    --
+    --  Note that Read_Lock is not defined for RT_Lock and ST.Task_Id.
+    --  That is because (1) so far Read_Lock has always been implemented
+    --  the same as Write_Lock, (2) most lock usage inside the RTS involves
+    --  potential write access, and (3) implementations of priority ceiling
+    --  locking that make a reader-writer distinction have higher overhead.
+ 
+    procedure Unlock
+      (L : not null access Lock);
+    procedure Unlock
+      (L           : not null access RTS_Lock;
+       Global_Lock : Boolean := False);
+    procedure Unlock
+      (T : ST.Task_Id);
+    pragma Inline (Unlock);
+    --  Unlock a locked lock object
+    --
+    --  The effect is undefined unless the calling task holds read or write
+    --  permission for the lock L, and L is the lock object most recently
+    --  locked by the calling task for which the calling task still holds
+    --  read or write permission. (That is, matching pairs of Lock and Unlock
+    --  operations on each lock object must be properly nested.)
+ 
+    --  For the operation on RTS_Lock, Global_Lock should be set to True if L
+    --  is a global lock (Single_RTS_Lock, Global_Task_Lock).
+    --
+    --  Note that Write_Lock for RTS_Lock does not have an out-parameter.
+    --  RTS_Locks are used in situations where we have not made provision for
+    --  recovery from ceiling violations. We do not expect them to occur inside
+    --  the runtime system, because all RTS locks have ceiling Priority'Last.
+ 
+    --  There is one way there can be a ceiling violation. That is if the
+    --  runtime system is called from a task that is executing in the
+    --  Interrupt_Priority range.
+ 
+    --  It is not clear what to do about ceiling violations due to RTS calls
+    --  done at interrupt priority. In general, it is not acceptable to give
+    --  all RTS locks interrupt priority, since that would give terrible
+    --  performance on systems where this has the effect of masking hardware
+    --  interrupts, though we could get away allowing Interrupt_Priority'last
+    --  where we are layered on an OS that does not allow us to mask interrupts.
+    --  Ideally, we would like to raise Program_Error back at the original point
+    --  of the RTS call, but this would require a lot of detailed analysis and
+    --  recoding, with almost certain performance penalties.
+ 
+    --  For POSIX systems, we considered just skipping setting priority ceiling
+    --  on RTS locks. This would mean there is no ceiling violation, but we
+    --  would end up with priority inversions inside the runtime system,
+    --  resulting in failure to satisfy the Ada priority rules, and possible
+    --  missed validation tests. This could be compensated-for by explicit
+    --  priority-change calls to raise the caller to Priority'Last whenever it
+    --  first enters the runtime system, but the expected overhead seems high,
+    --  though it might be lower than using locks with ceilings if the
+    --  underlying implementation of ceiling locks is an inefficient one.
+ 
+    --  This issue should be reconsidered whenever we get around to checking
+    --  for calls to potentially blocking operations from within protected
+    --  operations. If we check for such calls and catch them on entry to the
+    --  OS, it may be that we can eliminate the possibility of ceiling
+    --  violations inside the RTS. For this to work, we would have to forbid
+    --  explicitly setting the priority of a task to anything in the
+    --  Interrupt_Priority range, at least. We would also have to check that
+    --  there are no RTS-lock operations done inside any operations that are
+    --  not treated as potentially blocking.
+ 
+    --  The latter approach seems to be the best, i.e. to check on entry to RTS
+    --  calls that may need to use locks that the priority is not in the
+    --  interrupt range. If there are RTS operations that NEED to be called
+    --  from interrupt handlers, those few RTS locks should then be converted
+    --  to PO-type locks, with ceiling Interrupt_Priority'Last.
+ 
+    --  For now, we will just shut down the system if there is ceiling violation
+ 
+    procedure Set_Ceiling
+      (L    : not null access Lock;
+       Prio : System.Any_Priority);
+    pragma Inline (Set_Ceiling);
+    --  Change the ceiling priority associated to the lock
+    --
+    --  The effect is undefined unless the calling task holds read or write
+    --  permission for the lock L, and L is the lock object most recently
+    --  locked by the calling task for which the calling task still holds
+    --  read or write permission. (That is, matching pairs of Lock and Unlock
+    --  operations on each lock object must be properly nested.)
+ 
+    procedure Yield (Do_Yield : Boolean := True);
+    pragma Inline (Yield);
+    --  Yield the processor. Add the calling task to the tail of the ready queue
+    --  for its active_priority. On most platforms, Yield is a no-op if Do_Yield
+    --  is False. But on some platforms (notably VxWorks), Do_Yield is ignored.
+    --  This is only used in some very rare cases where a Yield should have an
+    --  effect on a specific target and not on regular ones.
+ 
+    procedure Set_Priority
+      (T : ST.Task_Id;
+       Prio : System.Any_Priority;
+       Loss_Of_Inheritance : Boolean := False);
+    pragma Inline (Set_Priority);
+    --  Set the priority of the task specified by T to Prio. The priority set
+    --  is what would correspond to the Ada concept of "base priority" in the
+    --  terms of the lower layer system, but the operation may be used by the
+    --  upper layer to implement changes in "active priority" that are not due
+    --  to lock effects. The effect should be consistent with the Ada Reference
+    --  Manual. In particular, when a task lowers its priority due to the loss
+    --  of inherited priority, it goes at the head of the queue for its new
+    --  priority (RM D.2.2 par 9). Loss_Of_Inheritance helps the underlying
+    --  implementation to do it right when the OS doesn't.
+ 
+    function Get_Priority (T : ST.Task_Id) return System.Any_Priority;
+    pragma Inline (Get_Priority);
+    --  Returns the priority last set by Set_Priority for this task
+ 
+    function Monotonic_Clock return Duration;
+    pragma Inline (Monotonic_Clock);
+    --  Returns "absolute" time, represented as an offset relative to "the
+    --  Epoch", which is Jan 1, 1970. This clock implementation is immune to
+    --  the system's clock changes.
+ 
+    function RT_Resolution return Duration;
+    pragma Inline (RT_Resolution);
+    --  Returns resolution of the underlying clock used to implement RT_Clock
+ 
+    ----------------
+    -- Extensions --
+    ----------------
+ 
+    --  Whoever calls either of the Sleep routines is responsible for checking
+    --  for pending aborts before the call. Pending priority changes are handled
+    --  internally.
+ 
+    procedure Sleep
+      (Self_ID : ST.Task_Id;
+       Reason  : System.Tasking.Task_States);
+    pragma Inline (Sleep);
+    --  Wait until the current task, T,  is signaled to wake up
+    --
+    --  precondition:
+    --    The calling task is holding its own ATCB lock
+    --    and has abort deferred
+    --
+    --  postcondition:
+    --    The calling task is holding its own ATCB lock and has abort deferred.
+ 
+    --  The effect is to atomically unlock T's lock and wait, so that another
+    --  task that is able to lock T's lock can be assured that the wait has
+    --  actually commenced, and that a Wakeup operation will cause the waiting
+    --  task to become ready for execution once again. When Sleep returns, the
+    --  waiting task will again hold its own ATCB lock. The waiting task may
+    --  become ready for execution at any time (that is, spurious wakeups are
+    --  permitted), but it will definitely become ready for execution when a
+    --  Wakeup operation is performed for the same task.
+ 
+    procedure Timed_Sleep
+      (Self_ID  : ST.Task_Id;
+       Time     : Duration;
+       Mode     : ST.Delay_Modes;
+       Reason   : System.Tasking.Task_States;
+       Timedout : out Boolean;
+       Yielded  : out Boolean);
+    --  Combination of Sleep (above) and Timed_Delay
+ 
+    procedure Timed_Delay
+      (Self_ID : ST.Task_Id;
+       Time    : Duration;
+       Mode    : ST.Delay_Modes);
+    --  Implement the semantics of the delay statement.
+    --  The caller should be abort-deferred and should not hold any locks.
+ 
+    procedure Wakeup
+      (T      : ST.Task_Id;
+       Reason : System.Tasking.Task_States);
+    pragma Inline (Wakeup);
+    --  Wake up task T if it is waiting on a Sleep call (of ordinary
+    --  or timed variety), making it ready for execution once again.
+    --  If the task T is not waiting on a Sleep, the operation has no effect.
+ 
+    function Environment_Task return ST.Task_Id;
+    pragma Inline (Environment_Task);
+    --  Return the task ID of the environment task
+    --  Consider putting this into a variable visible directly
+    --  by the rest of the runtime system. ???
+ 
+    function Get_Thread_Id (T : ST.Task_Id) return OSI.Thread_Id;
+    --  Return the thread id of the specified task
+ 
+    function Is_Valid_Task return Boolean;
+    pragma Inline (Is_Valid_Task);
+    --  Does the calling thread have an ATCB?
+ 
+    function Register_Foreign_Thread return ST.Task_Id;
+    --  Allocate and initialize a new ATCB for the current thread
+ 
+    -----------------------
+    -- RTS Entrance/Exit --
+    -----------------------
+ 
+    --  Following two routines are used for possible operations needed to be
+    --  setup/cleared upon entrance/exit of RTS while maintaining a single
+    --  thread of control in the RTS. Since we intend these routines to be used
+    --  for implementing the Single_Lock RTS, Lock_RTS should follow the first
+    --  Defer_Abort operation entering RTS. In the same fashion Unlock_RTS
+    --  should precede the last Undefer_Abort exiting RTS.
+    --
+    --  These routines also replace the functions Lock/Unlock_All_Tasks_List
+ 
+    procedure Lock_RTS;
+    --  Take the global RTS lock
+ 
+    procedure Unlock_RTS;
+    --  Release the global RTS lock
+ 
+    --------------------
+    -- Stack Checking --
+    --------------------
+ 
+    --  Stack checking in GNAT is done using the concept of stack probes. A
+    --  stack probe is an operation that will generate a storage error if
+    --  an insufficient amount of stack space remains in the current task.
+ 
+    --  The exact mechanism for a stack probe is target dependent. Typical
+    --  possibilities are to use a load from a non-existent page, a store to a
+    --  read-only page, or a comparison with some stack limit constant. Where
+    --  possible we prefer to use a trap on a bad page access, since this has
+    --  less overhead. The generation of stack probes is either automatic if
+    --  the ABI requires it (as on for example DEC Unix), or is controlled by
+    --  the gcc parameter -fstack-check.
+ 
+    --  When we are using bad-page accesses, we need a bad page, called guard
+    --  page, at the end of each task stack. On some systems, this is provided
+    --  automatically, but on other systems, we need to create the guard page
+    --  ourselves, and the procedure Stack_Guard is provided for this purpose.
+ 
+    procedure Stack_Guard (T : ST.Task_Id; On : Boolean);
+    --  Ensure guard page is set if one is needed and the underlying thread
+    --  system does not provide it. The procedure is as follows:
+    --
+    --    1. When we create a task adjust its size so a guard page can
+    --       safely be set at the bottom of the stack.
+    --
+    --    2. When the thread is created (and its stack allocated by the
+    --       underlying thread system), get the stack base (and size, depending
+    --       how the stack is growing), and create the guard page taking care
+    --       of page boundaries issues.
+    --
+    --    3. When the task is destroyed, remove the guard page.
+    --
+    --  If On is true then protect the stack bottom (i.e make it read only)
+    --  else unprotect it (i.e. On is True for the call when creating a task,
+    --  and False when a task is destroyed).
+    --
+    --  The call to Stack_Guard has no effect if guard pages are not used on
+    --  the target, or if guard pages are automatically provided by the system.
+ 
+    ------------------------
+    -- Suspension objects --
+    ------------------------
+ 
+    --  These subprograms provide the functionality required for synchronizing
+    --  on a suspension object. Tasks can suspend execution and relinquish the
+    --  processors until the condition is signaled.
+ 
+    function Current_State (S : Suspension_Object) return Boolean;
+    --  Return the state of the suspension object
+ 
+    procedure Set_False (S : in out Suspension_Object);
+    --  Set the state of the suspension object to False
+ 
+    procedure Set_True (S : in out Suspension_Object);
+    --  Set the state of the suspension object to True. If a task were
+    --  suspended on the protected object then this task is released (and
+    --  the state of the suspension object remains set to False).
+ 
+    procedure Suspend_Until_True (S : in out Suspension_Object);
+    --  If the state of the suspension object is True then the calling task
+    --  continues its execution, and the state is set to False. If the state
+    --  of the object is False then the task is suspended on the suspension
+    --  object until a Set_True operation is executed. Program_Error is raised
+    --  if another task is already waiting on that suspension object.
+ 
+    procedure Initialize (S : in out Suspension_Object);
+    --  Initialize the suspension object
+ 
+    procedure Finalize (S : in out Suspension_Object);
+    --  Finalize the suspension object
+ 
+    -----------------------------------------
+    -- Runtime System Debugging Interfaces --
+    -----------------------------------------
+ 
+    --  These interfaces have been added to assist in debugging the
+    --  tasking runtime system.
+ 
+    function Check_Exit (Self_ID : ST.Task_Id) return Boolean;
+    pragma Inline (Check_Exit);
+    --  Check that the current task is holding only Global_Task_Lock
+ 
+    function Check_No_Locks (Self_ID : ST.Task_Id) return Boolean;
+    pragma Inline (Check_No_Locks);
+    --  Check that current task is holding no locks
+ 
+    function Suspend_Task
+      (T           : ST.Task_Id;
+       Thread_Self : OSI.Thread_Id) return Boolean;
+    --  Suspend a specific task when the underlying thread library provides this
+    --  functionality, unless the thread associated with T is Thread_Self. Such
+    --  functionality is needed by gdb on some targets (e.g VxWorks) Return True
+    --  is the operation is successful. On targets where this operation is not
+    --  available, a dummy body is present which always returns False.
+ 
+    function Resume_Task
+      (T           : ST.Task_Id;
+       Thread_Self : OSI.Thread_Id) return Boolean;
+    --  Resume a specific task when the underlying thread library provides
+    --  such functionality, unless the thread associated with T is Thread_Self.
+    --  Such functionality is needed by gdb on some targets (e.g VxWorks)
+    --  Return True is the operation is successful
+ 
+    procedure Stop_All_Tasks;
+    --  Stop all tasks when the underlying thread library provides such
+    --  functionality. Such functionality is needed by gdb on some targets (e.g
+    --  VxWorks) This function can be run from an interrupt handler. Return True
+    --  is the operation is successful
+ 
+    function Stop_Task (T : ST.Task_Id) return Boolean;
+    --  Stop a specific task when the underlying thread library provides
+    --  such functionality. Such functionality is needed by gdb on some targets
+    --  (e.g VxWorks). Return True is the operation is successful.
+ 
+    function Continue_Task (T : ST.Task_Id) return Boolean;
+    --  Continue a specific task when the underlying thread library provides
+    --  such functionality. Such functionality is needed by gdb on some targets
+    --  (e.g VxWorks) Return True is the operation is successful
+ 
+    -------------------
+    -- Task affinity --
+    -------------------
+ 
+    procedure Set_Task_Affinity (T : ST.Task_Id);
+    --  Enforce at the operating system level the task affinity defined in the
+    --  Ada Task Control Block. Has no effect if the underlying operating system
+    --  does not support this capability.
+ 
+ end System.Task_Primitives.Operations;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-taprop__dummy.adb gcc-8.1.0/gcc/ada/libgnarl/s-taprop__dummy.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-taprop__dummy.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-taprop__dummy.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,551 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --     S Y S T E M . T A S K _ P R I M I T I V E S . O P E R A T I O N S    --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --         Copyright (C) 1992-2018, Free Software Foundation, Inc.          --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is a no tasking version of this package
+ 
+ --  This package contains all the GNULL primitives that interface directly with
+ --  the underlying OS.
+ 
+ pragma Polling (Off);
+ --  Turn off polling, we do not want ATC polling to take place during tasking
+ --  operations. It causes infinite loops and other problems.
+ 
+ package body System.Task_Primitives.Operations is
+ 
+    use System.Tasking;
+    use System.Parameters;
+ 
+    pragma Warnings (Off);
+    --  Turn off warnings since so many unreferenced parameters
+ 
+    --------------
+    -- Specific --
+    --------------
+ 
+    --  Package Specific contains target specific routines, and the body of
+    --  this package is target specific.
+ 
+    package Specific is
+       procedure Set (Self_Id : Task_Id);
+       pragma Inline (Set);
+       --  Set the self id for the current task
+    end Specific;
+ 
+    package body Specific is
+ 
+       ---------
+       -- Set --
+       ---------
+ 
+       procedure Set (Self_Id : Task_Id) is
+       begin
+          null;
+       end Set;
+    end Specific;
+ 
+    ----------------------------------
+    -- ATCB allocation/deallocation --
+    ----------------------------------
+ 
+    package body ATCB_Allocation is separate;
+    --  The body of this package is shared across several targets
+ 
+    ----------------
+    -- Abort_Task --
+    ----------------
+ 
+    procedure Abort_Task (T : Task_Id) is
+    begin
+       null;
+    end Abort_Task;
+ 
+    ----------------
+    -- Check_Exit --
+    ----------------
+ 
+    function Check_Exit (Self_ID : ST.Task_Id) return Boolean is
+    begin
+       return True;
+    end Check_Exit;
+ 
+    --------------------
+    -- Check_No_Locks --
+    --------------------
+ 
+    function Check_No_Locks (Self_ID : ST.Task_Id) return Boolean is
+    begin
+       return True;
+    end Check_No_Locks;
+ 
+    -------------------
+    -- Continue_Task --
+    -------------------
+ 
+    function Continue_Task (T : ST.Task_Id) return Boolean is
+    begin
+       return False;
+    end Continue_Task;
+ 
+    -------------------
+    -- Current_State --
+    -------------------
+ 
+    function Current_State (S : Suspension_Object) return Boolean is
+    begin
+       return False;
+    end Current_State;
+ 
+    ----------------------
+    -- Environment_Task --
+    ----------------------
+ 
+    function Environment_Task return Task_Id is
+    begin
+       return null;
+    end Environment_Task;
+ 
+    -----------------
+    -- Create_Task --
+    -----------------
+ 
+    procedure Create_Task
+      (T          : Task_Id;
+       Wrapper    : System.Address;
+       Stack_Size : System.Parameters.Size_Type;
+       Priority   : System.Any_Priority;
+       Succeeded  : out Boolean)
+    is
+    begin
+       Succeeded := False;
+    end Create_Task;
+ 
+    ----------------
+    -- Enter_Task --
+    ----------------
+ 
+    procedure Enter_Task (Self_ID : Task_Id) is
+    begin
+       null;
+    end Enter_Task;
+ 
+    ---------------
+    -- Exit_Task --
+    ---------------
+ 
+    procedure Exit_Task is
+    begin
+       null;
+    end Exit_Task;
+ 
+    --------------
+    -- Finalize --
+    --------------
+ 
+    procedure Finalize (S : in out Suspension_Object) is
+    begin
+       null;
+    end Finalize;
+ 
+    -------------------
+    -- Finalize_Lock --
+    -------------------
+ 
+    procedure Finalize_Lock (L : not null access Lock) is
+    begin
+       null;
+    end Finalize_Lock;
+ 
+    procedure Finalize_Lock (L : not null access RTS_Lock) is
+    begin
+       null;
+    end Finalize_Lock;
+ 
+    ------------------
+    -- Finalize_TCB --
+    ------------------
+ 
+    procedure Finalize_TCB (T : Task_Id) is
+    begin
+       null;
+    end Finalize_TCB;
+ 
+    ------------------
+    -- Get_Priority --
+    ------------------
+ 
+    function Get_Priority (T : Task_Id) return System.Any_Priority is
+    begin
+       return 0;
+    end Get_Priority;
+ 
+    --------------------
+    -- Get_Thread_Id  --
+    --------------------
+ 
+    function Get_Thread_Id (T : ST.Task_Id) return OSI.Thread_Id is
+    begin
+       return OSI.Thread_Id (T.Common.LL.Thread);
+    end Get_Thread_Id;
+ 
+    ----------------
+    -- Initialize --
+    ----------------
+ 
+    procedure Initialize (Environment_Task : Task_Id) is
+       No_Tasking : Boolean;
+    begin
+       raise Program_Error with "tasking not implemented on this configuration";
+    end Initialize;
+ 
+    procedure Initialize (S : in out Suspension_Object) is
+    begin
+       null;
+    end Initialize;
+ 
+    ---------------------
+    -- Initialize_Lock --
+    ---------------------
+ 
+    procedure Initialize_Lock
+      (Prio : System.Any_Priority;
+       L    : not null access Lock)
+    is
+    begin
+       null;
+    end Initialize_Lock;
+ 
+    procedure Initialize_Lock
+      (L : not null access RTS_Lock; Level : Lock_Level) is
+    begin
+       null;
+    end Initialize_Lock;
+ 
+    --------------------
+    -- Initialize_TCB --
+    --------------------
+ 
+    procedure Initialize_TCB (Self_ID : Task_Id; Succeeded : out Boolean) is
+    begin
+       Succeeded := False;
+    end Initialize_TCB;
+ 
+    -------------------
+    -- Is_Valid_Task --
+    -------------------
+ 
+    function Is_Valid_Task return Boolean is
+    begin
+       return False;
+    end Is_Valid_Task;
+ 
+    --------------
+    -- Lock_RTS --
+    --------------
+ 
+    procedure Lock_RTS is
+    begin
+       null;
+    end Lock_RTS;
+ 
+    ---------------------
+    -- Monotonic_Clock --
+    ---------------------
+ 
+    function Monotonic_Clock return Duration is
+    begin
+       return 0.0;
+    end Monotonic_Clock;
+ 
+    ---------------
+    -- Read_Lock --
+    ---------------
+ 
+    procedure Read_Lock
+      (L                 : not null access Lock;
+       Ceiling_Violation : out Boolean)
+    is
+    begin
+       Ceiling_Violation := False;
+    end Read_Lock;
+ 
+    -----------------------------
+    -- Register_Foreign_Thread --
+    -----------------------------
+ 
+    function Register_Foreign_Thread return Task_Id is
+    begin
+       return null;
+    end Register_Foreign_Thread;
+ 
+    -----------------
+    -- Resume_Task --
+    -----------------
+ 
+    function Resume_Task
+      (T           : ST.Task_Id;
+       Thread_Self : OSI.Thread_Id) return Boolean
+    is
+    begin
+       return False;
+    end Resume_Task;
+ 
+    -------------------
+    -- RT_Resolution --
+    -------------------
+ 
+    function RT_Resolution return Duration is
+    begin
+       return 10#1.0#E-6;
+    end RT_Resolution;
+ 
+    ----------
+    -- Self --
+    ----------
+ 
+    function Self return Task_Id is
+    begin
+       return Null_Task;
+    end Self;
+ 
+    -----------------
+    -- Set_Ceiling --
+    -----------------
+ 
+    procedure Set_Ceiling
+      (L    : not null access Lock;
+       Prio : System.Any_Priority)
+    is
+    begin
+       null;
+    end Set_Ceiling;
+ 
+    ---------------
+    -- Set_False --
+    ---------------
+ 
+    procedure Set_False (S : in out Suspension_Object) is
+    begin
+       null;
+    end Set_False;
+ 
+    ------------------
+    -- Set_Priority --
+    ------------------
+ 
+    procedure Set_Priority
+      (T                   : Task_Id;
+       Prio                : System.Any_Priority;
+       Loss_Of_Inheritance : Boolean := False)
+    is
+    begin
+       null;
+    end Set_Priority;
+ 
+    -----------------------
+    -- Set_Task_Affinity --
+    -----------------------
+ 
+    procedure Set_Task_Affinity (T : ST.Task_Id) is
+    begin
+       null;
+    end Set_Task_Affinity;
+ 
+    --------------
+    -- Set_True --
+    --------------
+ 
+    procedure Set_True (S : in out Suspension_Object) is
+    begin
+       null;
+    end Set_True;
+ 
+    -----------
+    -- Sleep --
+    -----------
+ 
+    procedure Sleep (Self_ID : Task_Id; Reason : System.Tasking.Task_States) is
+    begin
+       null;
+    end Sleep;
+ 
+    -----------------
+    -- Stack_Guard --
+    -----------------
+ 
+    procedure Stack_Guard (T : ST.Task_Id; On : Boolean) is
+    begin
+       null;
+    end Stack_Guard;
+ 
+    ------------------
+    -- Suspend_Task --
+    ------------------
+ 
+    function Suspend_Task
+      (T           : ST.Task_Id;
+       Thread_Self : OSI.Thread_Id) return Boolean
+    is
+    begin
+       return False;
+    end Suspend_Task;
+ 
+    --------------------
+    -- Stop_All_Tasks --
+    --------------------
+ 
+    procedure Stop_All_Tasks is
+    begin
+       null;
+    end Stop_All_Tasks;
+ 
+    ---------------
+    -- Stop_Task --
+    ---------------
+ 
+    function Stop_Task (T : ST.Task_Id) return Boolean is
+       pragma Unreferenced (T);
+    begin
+       return False;
+    end Stop_Task;
+ 
+    ------------------------
+    -- Suspend_Until_True --
+    ------------------------
+ 
+    procedure Suspend_Until_True (S : in out Suspension_Object) is
+    begin
+       null;
+    end Suspend_Until_True;
+ 
+    -----------------
+    -- Timed_Delay --
+    -----------------
+ 
+    procedure Timed_Delay
+      (Self_ID : Task_Id;
+       Time    : Duration;
+       Mode    : ST.Delay_Modes)
+    is
+    begin
+       null;
+    end Timed_Delay;
+ 
+    -----------------
+    -- Timed_Sleep --
+    -----------------
+ 
+    procedure Timed_Sleep
+      (Self_ID  : Task_Id;
+       Time     : Duration;
+       Mode     : ST.Delay_Modes;
+       Reason   : System.Tasking.Task_States;
+       Timedout : out Boolean;
+       Yielded  : out Boolean)
+    is
+    begin
+       Timedout := False;
+       Yielded := False;
+    end Timed_Sleep;
+ 
+    ------------
+    -- Unlock --
+    ------------
+ 
+    procedure Unlock (L : not null access Lock) is
+    begin
+       null;
+    end Unlock;
+ 
+    procedure Unlock
+      (L           : not null access RTS_Lock;
+       Global_Lock : Boolean := False)
+    is
+    begin
+       null;
+    end Unlock;
+ 
+    procedure Unlock (T : Task_Id) is
+    begin
+       null;
+    end Unlock;
+ 
+    ----------------
+    -- Unlock_RTS --
+    ----------------
+ 
+    procedure Unlock_RTS is
+    begin
+       null;
+    end Unlock_RTS;
+    ------------
+    -- Wakeup --
+    ------------
+ 
+    procedure Wakeup (T : Task_Id; Reason : System.Tasking.Task_States) is
+    begin
+       null;
+    end Wakeup;
+ 
+    ----------------
+    -- Write_Lock --
+    ----------------
+ 
+    procedure Write_Lock
+      (L                 : not null access Lock;
+       Ceiling_Violation : out Boolean)
+    is
+    begin
+       Ceiling_Violation := False;
+    end Write_Lock;
+ 
+    procedure Write_Lock
+      (L           : not null access RTS_Lock;
+       Global_Lock : Boolean := False)
+    is
+    begin
+       null;
+    end Write_Lock;
+ 
+    procedure Write_Lock (T : Task_Id) is
+    begin
+       null;
+    end Write_Lock;
+ 
+    -----------
+    -- Yield --
+    -----------
+ 
+    procedure Yield (Do_Yield : Boolean := True) is
+    begin
+       null;
+    end Yield;
+ 
+ end System.Task_Primitives.Operations;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-taprop__hpux-dce.adb gcc-8.1.0/gcc/ada/libgnarl/s-taprop__hpux-dce.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-taprop__hpux-dce.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-taprop__hpux-dce.adb	Mon Sep 11 09:18:42 2017
***************
*** 0 ****
--- 1,1247 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --     S Y S T E M . T A S K _ P R I M I T I V E S . O P E R A T I O N S    --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --         Copyright (C) 1992-2011, Free Software Foundation, Inc.          --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is a HP-UX DCE threads (HPUX 10) version of this package
+ 
+ --  This package contains all the GNULL primitives that interface directly with
+ --  the underlying OS.
+ 
+ pragma Polling (Off);
+ --  Turn off polling, we do not want ATC polling to take place during tasking
+ --  operations. It causes infinite loops and other problems.
+ 
+ with Ada.Unchecked_Conversion;
+ 
+ with Interfaces.C;
+ 
+ with System.Tasking.Debug;
+ with System.Interrupt_Management;
+ with System.OS_Constants;
+ with System.OS_Primitives;
+ with System.Task_Primitives.Interrupt_Operations;
+ 
+ pragma Warnings (Off);
+ with System.Interrupt_Management.Operations;
+ pragma Elaborate_All (System.Interrupt_Management.Operations);
+ pragma Warnings (On);
+ 
+ with System.Soft_Links;
+ --  We use System.Soft_Links instead of System.Tasking.Initialization
+ --  because the later is a higher level package that we shouldn't depend on.
+ --  For example when using the restricted run time, it is replaced by
+ --  System.Tasking.Restricted.Stages.
+ 
+ package body System.Task_Primitives.Operations is
+ 
+    package OSC renames System.OS_Constants;
+    package SSL renames System.Soft_Links;
+ 
+    use System.Tasking.Debug;
+    use System.Tasking;
+    use Interfaces.C;
+    use System.OS_Interface;
+    use System.Parameters;
+    use System.OS_Primitives;
+ 
+    package PIO renames System.Task_Primitives.Interrupt_Operations;
+ 
+    ----------------
+    -- Local Data --
+    ----------------
+ 
+    --  The followings are logically constants, but need to be initialized
+    --  at run time.
+ 
+    Single_RTS_Lock : aliased RTS_Lock;
+    --  This is a lock to allow only one thread of control in the RTS at
+    --  a time; it is used to execute in mutual exclusion from all other tasks.
+    --  Used mainly in Single_Lock mode, but also to protect All_Tasks_List
+ 
+    Environment_Task_Id : Task_Id;
+    --  A variable to hold Task_Id for the environment task
+ 
+    Unblocked_Signal_Mask : aliased sigset_t;
+    --  The set of signals that should unblocked in all tasks
+ 
+    Time_Slice_Val : Integer;
+    pragma Import (C, Time_Slice_Val, "__gl_time_slice_val");
+ 
+    Dispatching_Policy : Character;
+    pragma Import (C, Dispatching_Policy, "__gl_task_dispatching_policy");
+ 
+    --  Note: the reason that Locking_Policy is not needed is that this
+    --  is not implemented for DCE threads. The HPUX 10 port is at this
+    --  stage considered dead, and no further work is planned on it.
+ 
+    Foreign_Task_Elaborated : aliased Boolean := True;
+    --  Used to identified fake tasks (i.e., non-Ada Threads)
+ 
+    --------------------
+    -- Local Packages --
+    --------------------
+ 
+    package Specific is
+ 
+       procedure Initialize (Environment_Task : Task_Id);
+       pragma Inline (Initialize);
+       --  Initialize various data needed by this package
+ 
+       function Is_Valid_Task return Boolean;
+       pragma Inline (Is_Valid_Task);
+       --  Does the executing thread have a TCB?
+ 
+       procedure Set (Self_Id : Task_Id);
+       pragma Inline (Set);
+       --  Set the self id for the current task
+ 
+       function Self return Task_Id;
+       pragma Inline (Self);
+       --  Return a pointer to the Ada Task Control Block of the calling task
+ 
+    end Specific;
+ 
+    package body Specific is separate;
+    --  The body of this package is target specific
+ 
+    ----------------------------------
+    -- ATCB allocation/deallocation --
+    ----------------------------------
+ 
+    package body ATCB_Allocation is separate;
+    --  The body of this package is shared across several targets
+ 
+    ---------------------------------
+    -- Support for foreign threads --
+    ---------------------------------
+ 
+    function Register_Foreign_Thread (Thread : Thread_Id) return Task_Id;
+    --  Allocate and Initialize a new ATCB for the current Thread
+ 
+    function Register_Foreign_Thread
+      (Thread : Thread_Id) return Task_Id is separate;
+ 
+    -----------------------
+    -- Local Subprograms --
+    -----------------------
+ 
+    procedure Abort_Handler (Sig : Signal);
+ 
+    function To_Address is
+      new Ada.Unchecked_Conversion (Task_Id, System.Address);
+ 
+    -------------------
+    -- Abort_Handler --
+    -------------------
+ 
+    procedure Abort_Handler (Sig : Signal) is
+       pragma Unreferenced (Sig);
+ 
+       Self_Id : constant Task_Id := Self;
+       Result  : Interfaces.C.int;
+       Old_Set : aliased sigset_t;
+ 
+    begin
+       if Self_Id.Deferral_Level = 0
+         and then Self_Id.Pending_ATC_Level < Self_Id.ATC_Nesting_Level
+         and then not Self_Id.Aborting
+       then
+          Self_Id.Aborting := True;
+ 
+          --  Make sure signals used for RTS internal purpose are unmasked
+ 
+          Result :=
+            pthread_sigmask
+              (SIG_UNBLOCK,
+               Unblocked_Signal_Mask'Access,
+               Old_Set'Access);
+          pragma Assert (Result = 0);
+ 
+          raise Standard'Abort_Signal;
+       end if;
+    end Abort_Handler;
+ 
+    -----------------
+    -- Stack_Guard --
+    -----------------
+ 
+    --  The underlying thread system sets a guard page at the bottom of a thread
+    --  stack, so nothing is needed.
+    --  ??? Check the comment above
+ 
+    procedure Stack_Guard (T : ST.Task_Id; On : Boolean) is
+       pragma Unreferenced (T, On);
+    begin
+       null;
+    end Stack_Guard;
+ 
+    -------------------
+    -- Get_Thread_Id --
+    -------------------
+ 
+    function Get_Thread_Id (T : ST.Task_Id) return OSI.Thread_Id is
+    begin
+       return T.Common.LL.Thread;
+    end Get_Thread_Id;
+ 
+    ----------
+    -- Self --
+    ----------
+ 
+    function Self return Task_Id renames Specific.Self;
+ 
+    ---------------------
+    -- Initialize_Lock --
+    ---------------------
+ 
+    --  Note: mutexes and cond_variables needed per-task basis are initialized
+    --  in Initialize_TCB and the Storage_Error is handled. Other mutexes (such
+    --  as RTS_Lock, Memory_Lock...) used in RTS is initialized before any
+    --  status change of RTS. Therefore raising Storage_Error in the following
+    --  routines should be able to be handled safely.
+ 
+    procedure Initialize_Lock
+      (Prio : System.Any_Priority;
+       L    : not null access Lock)
+    is
+       Attributes : aliased pthread_mutexattr_t;
+       Result     : Interfaces.C.int;
+ 
+    begin
+       Result := pthread_mutexattr_init (Attributes'Access);
+       pragma Assert (Result = 0 or else Result = ENOMEM);
+ 
+       if Result = ENOMEM then
+          raise Storage_Error;
+       end if;
+ 
+       L.Priority := Prio;
+ 
+       Result := pthread_mutex_init (L.L'Access, Attributes'Access);
+       pragma Assert (Result = 0 or else Result = ENOMEM);
+ 
+       if Result = ENOMEM then
+          raise Storage_Error;
+       end if;
+ 
+       Result := pthread_mutexattr_destroy (Attributes'Access);
+       pragma Assert (Result = 0);
+    end Initialize_Lock;
+ 
+    procedure Initialize_Lock
+      (L     : not null access RTS_Lock;
+       Level : Lock_Level)
+    is
+       pragma Unreferenced (Level);
+ 
+       Attributes : aliased pthread_mutexattr_t;
+       Result     : Interfaces.C.int;
+ 
+    begin
+       Result := pthread_mutexattr_init (Attributes'Access);
+       pragma Assert (Result = 0 or else Result = ENOMEM);
+ 
+       if Result = ENOMEM then
+          raise Storage_Error;
+       end if;
+ 
+       Result := pthread_mutex_init (L, Attributes'Access);
+ 
+       pragma Assert (Result = 0 or else Result = ENOMEM);
+ 
+       if Result = ENOMEM then
+          raise Storage_Error;
+       end if;
+ 
+       Result := pthread_mutexattr_destroy (Attributes'Access);
+       pragma Assert (Result = 0);
+    end Initialize_Lock;
+ 
+    -------------------
+    -- Finalize_Lock --
+    -------------------
+ 
+    procedure Finalize_Lock (L : not null access Lock) is
+       Result : Interfaces.C.int;
+    begin
+       Result := pthread_mutex_destroy (L.L'Access);
+       pragma Assert (Result = 0);
+    end Finalize_Lock;
+ 
+    procedure Finalize_Lock (L : not null access RTS_Lock) is
+       Result : Interfaces.C.int;
+    begin
+       Result := pthread_mutex_destroy (L);
+       pragma Assert (Result = 0);
+    end Finalize_Lock;
+ 
+    ----------------
+    -- Write_Lock --
+    ----------------
+ 
+    procedure Write_Lock
+      (L                 : not null access Lock;
+       Ceiling_Violation : out Boolean)
+    is
+       Result : Interfaces.C.int;
+ 
+    begin
+       L.Owner_Priority := Get_Priority (Self);
+ 
+       if L.Priority < L.Owner_Priority then
+          Ceiling_Violation := True;
+          return;
+       end if;
+ 
+       Result := pthread_mutex_lock (L.L'Access);
+       pragma Assert (Result = 0);
+       Ceiling_Violation := False;
+    end Write_Lock;
+ 
+    procedure Write_Lock
+      (L           : not null access RTS_Lock;
+       Global_Lock : Boolean := False)
+    is
+       Result : Interfaces.C.int;
+    begin
+       if not Single_Lock or else Global_Lock then
+          Result := pthread_mutex_lock (L);
+          pragma Assert (Result = 0);
+       end if;
+    end Write_Lock;
+ 
+    procedure Write_Lock (T : Task_Id) is
+       Result : Interfaces.C.int;
+    begin
+       if not Single_Lock then
+          Result := pthread_mutex_lock (T.Common.LL.L'Access);
+          pragma Assert (Result = 0);
+       end if;
+    end Write_Lock;
+ 
+    ---------------
+    -- Read_Lock --
+    ---------------
+ 
+    procedure Read_Lock
+      (L                 : not null access Lock;
+       Ceiling_Violation : out Boolean)
+    is
+    begin
+       Write_Lock (L, Ceiling_Violation);
+    end Read_Lock;
+ 
+    ------------
+    -- Unlock --
+    ------------
+ 
+    procedure Unlock (L : not null access Lock) is
+       Result : Interfaces.C.int;
+    begin
+       Result := pthread_mutex_unlock (L.L'Access);
+       pragma Assert (Result = 0);
+    end Unlock;
+ 
+    procedure Unlock
+      (L           : not null access RTS_Lock;
+       Global_Lock : Boolean := False)
+    is
+       Result : Interfaces.C.int;
+    begin
+       if not Single_Lock or else Global_Lock then
+          Result := pthread_mutex_unlock (L);
+          pragma Assert (Result = 0);
+       end if;
+    end Unlock;
+ 
+    procedure Unlock (T : Task_Id) is
+       Result : Interfaces.C.int;
+    begin
+       if not Single_Lock then
+          Result := pthread_mutex_unlock (T.Common.LL.L'Access);
+          pragma Assert (Result = 0);
+       end if;
+    end Unlock;
+ 
+    -----------------
+    -- Set_Ceiling --
+    -----------------
+ 
+    --  Dynamic priority ceilings are not supported by the underlying system
+ 
+    procedure Set_Ceiling
+      (L    : not null access Lock;
+       Prio : System.Any_Priority)
+    is
+       pragma Unreferenced (L, Prio);
+    begin
+       null;
+    end Set_Ceiling;
+ 
+    -----------
+    -- Sleep --
+    -----------
+ 
+    procedure Sleep
+      (Self_ID : Task_Id;
+       Reason  : System.Tasking.Task_States)
+    is
+       pragma Unreferenced (Reason);
+ 
+       Result : Interfaces.C.int;
+ 
+    begin
+       Result :=
+         pthread_cond_wait
+           (cond  => Self_ID.Common.LL.CV'Access,
+            mutex => (if Single_Lock
+                      then Single_RTS_Lock'Access
+                      else Self_ID.Common.LL.L'Access));
+ 
+       --  EINTR is not considered a failure
+ 
+       pragma Assert (Result = 0 or else Result = EINTR);
+    end Sleep;
+ 
+    -----------------
+    -- Timed_Sleep --
+    -----------------
+ 
+    procedure Timed_Sleep
+      (Self_ID  : Task_Id;
+       Time     : Duration;
+       Mode     : ST.Delay_Modes;
+       Reason   : System.Tasking.Task_States;
+       Timedout : out Boolean;
+       Yielded  : out Boolean)
+    is
+       pragma Unreferenced (Reason);
+ 
+       Check_Time : constant Duration := Monotonic_Clock;
+       Abs_Time   : Duration;
+       Request    : aliased timespec;
+       Result     : Interfaces.C.int;
+ 
+    begin
+       Timedout := True;
+       Yielded := False;
+ 
+       Abs_Time :=
+         (if Mode = Relative
+          then Duration'Min (Time, Max_Sensible_Delay) + Check_Time
+          else Duration'Min (Check_Time + Max_Sensible_Delay, Time));
+ 
+       if Abs_Time > Check_Time then
+          Request := To_Timespec (Abs_Time);
+ 
+          loop
+             exit when Self_ID.Pending_ATC_Level < Self_ID.ATC_Nesting_Level;
+ 
+             Result :=
+               pthread_cond_timedwait
+                 (cond    => Self_ID.Common.LL.CV'Access,
+                  mutex   => (if Single_Lock
+                              then Single_RTS_Lock'Access
+                              else Self_ID.Common.LL.L'Access),
+                  abstime => Request'Access);
+ 
+             exit when Abs_Time <= Monotonic_Clock;
+ 
+             if Result = 0 or Result = EINTR then
+ 
+                --  Somebody may have called Wakeup for us
+ 
+                Timedout := False;
+                exit;
+             end if;
+ 
+             pragma Assert (Result = ETIMEDOUT);
+          end loop;
+       end if;
+    end Timed_Sleep;
+ 
+    -----------------
+    -- Timed_Delay --
+    -----------------
+ 
+    procedure Timed_Delay
+      (Self_ID : Task_Id;
+       Time    : Duration;
+       Mode    : ST.Delay_Modes)
+    is
+       Check_Time : constant Duration := Monotonic_Clock;
+       Abs_Time   : Duration;
+       Request    : aliased timespec;
+ 
+       Result : Interfaces.C.int;
+       pragma Warnings (Off, Result);
+ 
+    begin
+       if Single_Lock then
+          Lock_RTS;
+       end if;
+ 
+       Write_Lock (Self_ID);
+ 
+       Abs_Time :=
+         (if Mode = Relative
+          then Time + Check_Time
+          else Duration'Min (Check_Time + Max_Sensible_Delay, Time));
+ 
+       if Abs_Time > Check_Time then
+          Request := To_Timespec (Abs_Time);
+          Self_ID.Common.State := Delay_Sleep;
+ 
+          loop
+             exit when Self_ID.Pending_ATC_Level < Self_ID.ATC_Nesting_Level;
+ 
+             Result :=
+               pthread_cond_timedwait
+                 (cond    => Self_ID.Common.LL.CV'Access,
+                  mutex   => (if Single_Lock
+                              then Single_RTS_Lock'Access
+                              else Self_ID.Common.LL.L'Access),
+                  abstime => Request'Access);
+ 
+             exit when Abs_Time <= Monotonic_Clock;
+ 
+             pragma Assert (Result = 0 or else
+               Result = ETIMEDOUT or else
+               Result = EINTR);
+          end loop;
+ 
+          Self_ID.Common.State := Runnable;
+       end if;
+ 
+       Unlock (Self_ID);
+ 
+       if Single_Lock then
+          Unlock_RTS;
+       end if;
+ 
+       Result := sched_yield;
+    end Timed_Delay;
+ 
+    ---------------------
+    -- Monotonic_Clock --
+    ---------------------
+ 
+    function Monotonic_Clock return Duration is
+       TS     : aliased timespec;
+       Result : Interfaces.C.int;
+    begin
+       Result := Clock_Gettime (OSC.CLOCK_RT_Ada, TS'Unchecked_Access);
+       pragma Assert (Result = 0);
+       return To_Duration (TS);
+    end Monotonic_Clock;
+ 
+    -------------------
+    -- RT_Resolution --
+    -------------------
+ 
+    function RT_Resolution return Duration is
+    begin
+       return 10#1.0#E-6;
+    end RT_Resolution;
+ 
+    ------------
+    -- Wakeup --
+    ------------
+ 
+    procedure Wakeup (T : Task_Id; Reason : System.Tasking.Task_States) is
+       pragma Unreferenced (Reason);
+       Result : Interfaces.C.int;
+    begin
+       Result := pthread_cond_signal (T.Common.LL.CV'Access);
+       pragma Assert (Result = 0);
+    end Wakeup;
+ 
+    -----------
+    -- Yield --
+    -----------
+ 
+    procedure Yield (Do_Yield : Boolean := True) is
+       Result : Interfaces.C.int;
+       pragma Unreferenced (Result);
+    begin
+       if Do_Yield then
+          Result := sched_yield;
+       end if;
+    end Yield;
+ 
+    ------------------
+    -- Set_Priority --
+    ------------------
+ 
+    type Prio_Array_Type is array (System.Any_Priority) of Integer;
+    pragma Atomic_Components (Prio_Array_Type);
+ 
+    Prio_Array : Prio_Array_Type;
+    --  Global array containing the id of the currently running task for
+    --  each priority.
+    --
+    --  Note: assume we are on single processor with run-til-blocked scheduling
+ 
+    procedure Set_Priority
+      (T                   : Task_Id;
+       Prio                : System.Any_Priority;
+       Loss_Of_Inheritance : Boolean := False)
+    is
+       Result     : Interfaces.C.int;
+       Array_Item : Integer;
+       Param      : aliased struct_sched_param;
+ 
+       function Get_Policy (Prio : System.Any_Priority) return Character;
+       pragma Import (C, Get_Policy, "__gnat_get_specific_dispatching");
+       --  Get priority specific dispatching policy
+ 
+       Priority_Specific_Policy : constant Character := Get_Policy (Prio);
+       --  Upper case first character of the policy name corresponding to the
+       --  task as set by a Priority_Specific_Dispatching pragma.
+ 
+    begin
+       Param.sched_priority  := Interfaces.C.int (Underlying_Priorities (Prio));
+ 
+       if Dispatching_Policy = 'R'
+         or else Priority_Specific_Policy = 'R'
+         or else Time_Slice_Val > 0
+       then
+          Result :=
+            pthread_setschedparam
+              (T.Common.LL.Thread, SCHED_RR, Param'Access);
+ 
+       elsif Dispatching_Policy = 'F'
+         or else Priority_Specific_Policy = 'F'
+         or else Time_Slice_Val = 0
+       then
+          Result :=
+            pthread_setschedparam
+              (T.Common.LL.Thread, SCHED_FIFO, Param'Access);
+ 
+       else
+          Result :=
+            pthread_setschedparam
+              (T.Common.LL.Thread, SCHED_OTHER, Param'Access);
+       end if;
+ 
+       pragma Assert (Result = 0);
+ 
+       if Dispatching_Policy = 'F' or else Priority_Specific_Policy = 'F' then
+ 
+          --  Annex D requirement [RM D.2.2 par. 9]:
+          --    If the task drops its priority due to the loss of inherited
+          --    priority, it is added at the head of the ready queue for its
+          --    new active priority.
+ 
+          if Loss_Of_Inheritance
+            and then Prio < T.Common.Current_Priority
+          then
+             Array_Item := Prio_Array (T.Common.Base_Priority) + 1;
+             Prio_Array (T.Common.Base_Priority) := Array_Item;
+ 
+             loop
+                --  Let some processes a chance to arrive
+ 
+                Yield;
+ 
+                --  Then wait for our turn to proceed
+ 
+                exit when Array_Item = Prio_Array (T.Common.Base_Priority)
+                  or else Prio_Array (T.Common.Base_Priority) = 1;
+             end loop;
+ 
+             Prio_Array (T.Common.Base_Priority) :=
+               Prio_Array (T.Common.Base_Priority) - 1;
+          end if;
+       end if;
+ 
+       T.Common.Current_Priority := Prio;
+    end Set_Priority;
+ 
+    ------------------
+    -- Get_Priority --
+    ------------------
+ 
+    function Get_Priority (T : Task_Id) return System.Any_Priority is
+    begin
+       return T.Common.Current_Priority;
+    end Get_Priority;
+ 
+    ----------------
+    -- Enter_Task --
+    ----------------
+ 
+    procedure Enter_Task (Self_ID : Task_Id) is
+    begin
+       Self_ID.Common.LL.Thread := pthread_self;
+       Specific.Set (Self_ID);
+    end Enter_Task;
+ 
+    -------------------
+    -- Is_Valid_Task --
+    -------------------
+ 
+    function Is_Valid_Task return Boolean renames Specific.Is_Valid_Task;
+ 
+    -----------------------------
+    -- Register_Foreign_Thread --
+    -----------------------------
+ 
+    function Register_Foreign_Thread return Task_Id is
+    begin
+       if Is_Valid_Task then
+          return Self;
+       else
+          return Register_Foreign_Thread (pthread_self);
+       end if;
+    end Register_Foreign_Thread;
+ 
+    --------------------
+    -- Initialize_TCB --
+    --------------------
+ 
+    procedure Initialize_TCB (Self_ID : Task_Id; Succeeded : out Boolean) is
+       Mutex_Attr : aliased pthread_mutexattr_t;
+       Result     : Interfaces.C.int;
+       Cond_Attr  : aliased pthread_condattr_t;
+ 
+    begin
+       if not Single_Lock then
+          Result := pthread_mutexattr_init (Mutex_Attr'Access);
+          pragma Assert (Result = 0 or else Result = ENOMEM);
+ 
+          if Result = 0 then
+             Result :=
+               pthread_mutex_init
+                 (Self_ID.Common.LL.L'Access, Mutex_Attr'Access);
+             pragma Assert (Result = 0 or else Result = ENOMEM);
+          end if;
+ 
+          if Result /= 0 then
+             Succeeded := False;
+             return;
+          end if;
+ 
+          Result := pthread_mutexattr_destroy (Mutex_Attr'Access);
+          pragma Assert (Result = 0);
+       end if;
+ 
+       Result := pthread_condattr_init (Cond_Attr'Access);
+       pragma Assert (Result = 0 or else Result = ENOMEM);
+ 
+       if Result = 0 then
+          Result :=
+            pthread_cond_init
+              (Self_ID.Common.LL.CV'Access,
+               Cond_Attr'Access);
+          pragma Assert (Result = 0 or else Result = ENOMEM);
+       end if;
+ 
+       if Result = 0 then
+          Succeeded := True;
+       else
+          if not Single_Lock then
+             Result := pthread_mutex_destroy (Self_ID.Common.LL.L'Access);
+             pragma Assert (Result = 0);
+          end if;
+ 
+          Succeeded := False;
+       end if;
+ 
+       Result := pthread_condattr_destroy (Cond_Attr'Access);
+       pragma Assert (Result = 0);
+    end Initialize_TCB;
+ 
+    -----------------
+    -- Create_Task --
+    -----------------
+ 
+    procedure Create_Task
+      (T          : Task_Id;
+       Wrapper    : System.Address;
+       Stack_Size : System.Parameters.Size_Type;
+       Priority   : System.Any_Priority;
+       Succeeded  : out Boolean)
+    is
+       Attributes : aliased pthread_attr_t;
+       Result     : Interfaces.C.int;
+ 
+       function Thread_Body_Access is new
+         Ada.Unchecked_Conversion (System.Address, Thread_Body);
+ 
+    begin
+       Result := pthread_attr_init (Attributes'Access);
+       pragma Assert (Result = 0 or else Result = ENOMEM);
+ 
+       if Result /= 0 then
+          Succeeded := False;
+          return;
+       end if;
+ 
+       Result := pthread_attr_setstacksize
+         (Attributes'Access, Interfaces.C.size_t (Stack_Size));
+       pragma Assert (Result = 0);
+ 
+       --  Since the initial signal mask of a thread is inherited from the
+       --  creator, and the Environment task has all its signals masked, we
+       --  do not need to manipulate caller's signal mask at this point.
+       --  All tasks in RTS will have All_Tasks_Mask initially.
+ 
+       Result := pthread_create
+         (T.Common.LL.Thread'Access,
+          Attributes'Access,
+          Thread_Body_Access (Wrapper),
+          To_Address (T));
+       pragma Assert (Result = 0 or else Result = EAGAIN);
+ 
+       Succeeded := Result = 0;
+ 
+       pthread_detach (T.Common.LL.Thread'Access);
+       --  Detach the thread using pthread_detach, since DCE threads do not have
+       --  pthread_attr_set_detachstate.
+ 
+       Result := pthread_attr_destroy (Attributes'Access);
+       pragma Assert (Result = 0);
+ 
+       Set_Priority (T, Priority);
+    end Create_Task;
+ 
+    ------------------
+    -- Finalize_TCB --
+    ------------------
+ 
+    procedure Finalize_TCB (T : Task_Id) is
+       Result : Interfaces.C.int;
+ 
+    begin
+       if not Single_Lock then
+          Result := pthread_mutex_destroy (T.Common.LL.L'Access);
+          pragma Assert (Result = 0);
+       end if;
+ 
+       Result := pthread_cond_destroy (T.Common.LL.CV'Access);
+       pragma Assert (Result = 0);
+ 
+       if T.Known_Tasks_Index /= -1 then
+          Known_Tasks (T.Known_Tasks_Index) := null;
+       end if;
+ 
+       ATCB_Allocation.Free_ATCB (T);
+    end Finalize_TCB;
+ 
+    ---------------
+    -- Exit_Task --
+    ---------------
+ 
+    procedure Exit_Task is
+    begin
+       Specific.Set (null);
+    end Exit_Task;
+ 
+    ----------------
+    -- Abort_Task --
+    ----------------
+ 
+    procedure Abort_Task (T : Task_Id) is
+    begin
+       --  Interrupt Server_Tasks may be waiting on an "event" flag (signal)
+ 
+       if T.Common.State = Interrupt_Server_Blocked_On_Event_Flag then
+          System.Interrupt_Management.Operations.Interrupt_Self_Process
+            (PIO.Get_Interrupt_ID (T));
+       end if;
+    end Abort_Task;
+ 
+    ----------------
+    -- Initialize --
+    ----------------
+ 
+    procedure Initialize (S : in out Suspension_Object) is
+       Mutex_Attr : aliased pthread_mutexattr_t;
+       Cond_Attr  : aliased pthread_condattr_t;
+       Result     : Interfaces.C.int;
+    begin
+       --  Initialize internal state (always to False (ARM D.10(6)))
+ 
+       S.State := False;
+       S.Waiting := False;
+ 
+       --  Initialize internal mutex
+ 
+       Result := pthread_mutex_init (S.L'Access, Mutex_Attr'Access);
+       pragma Assert (Result = 0 or else Result = ENOMEM);
+ 
+       if Result = ENOMEM then
+          raise Storage_Error;
+       end if;
+ 
+       --  Initialize internal condition variable
+ 
+       Result := pthread_cond_init (S.CV'Access, Cond_Attr'Access);
+       pragma Assert (Result = 0 or else Result = ENOMEM);
+ 
+       if Result /= 0 then
+          Result := pthread_mutex_destroy (S.L'Access);
+          pragma Assert (Result = 0);
+ 
+          if Result = ENOMEM then
+             raise Storage_Error;
+          end if;
+       end if;
+    end Initialize;
+ 
+    --------------
+    -- Finalize --
+    --------------
+ 
+    procedure Finalize (S : in out Suspension_Object) is
+       Result  : Interfaces.C.int;
+ 
+    begin
+       --  Destroy internal mutex
+ 
+       Result := pthread_mutex_destroy (S.L'Access);
+       pragma Assert (Result = 0);
+ 
+       --  Destroy internal condition variable
+ 
+       Result := pthread_cond_destroy (S.CV'Access);
+       pragma Assert (Result = 0);
+    end Finalize;
+ 
+    -------------------
+    -- Current_State --
+    -------------------
+ 
+    function Current_State (S : Suspension_Object) return Boolean is
+    begin
+       --  We do not want to use lock on this read operation. State is marked
+       --  as Atomic so that we ensure that the value retrieved is correct.
+ 
+       return S.State;
+    end Current_State;
+ 
+    ---------------
+    -- Set_False --
+    ---------------
+ 
+    procedure Set_False (S : in out Suspension_Object) is
+       Result  : Interfaces.C.int;
+ 
+    begin
+       SSL.Abort_Defer.all;
+ 
+       Result := pthread_mutex_lock (S.L'Access);
+       pragma Assert (Result = 0);
+ 
+       S.State := False;
+ 
+       Result := pthread_mutex_unlock (S.L'Access);
+       pragma Assert (Result = 0);
+ 
+       SSL.Abort_Undefer.all;
+    end Set_False;
+ 
+    --------------
+    -- Set_True --
+    --------------
+ 
+    procedure Set_True (S : in out Suspension_Object) is
+       Result : Interfaces.C.int;
+ 
+    begin
+       SSL.Abort_Defer.all;
+ 
+       Result := pthread_mutex_lock (S.L'Access);
+       pragma Assert (Result = 0);
+ 
+       --  If there is already a task waiting on this suspension object then
+       --  we resume it, leaving the state of the suspension object to False,
+       --  as it is specified in ARM D.10 par. 9. Otherwise, it just leaves
+       --  the state to True.
+ 
+       if S.Waiting then
+          S.Waiting := False;
+          S.State := False;
+ 
+          Result := pthread_cond_signal (S.CV'Access);
+          pragma Assert (Result = 0);
+ 
+       else
+          S.State := True;
+       end if;
+ 
+       Result := pthread_mutex_unlock (S.L'Access);
+       pragma Assert (Result = 0);
+ 
+       SSL.Abort_Undefer.all;
+    end Set_True;
+ 
+    ------------------------
+    -- Suspend_Until_True --
+    ------------------------
+ 
+    procedure Suspend_Until_True (S : in out Suspension_Object) is
+       Result : Interfaces.C.int;
+ 
+    begin
+       SSL.Abort_Defer.all;
+ 
+       Result := pthread_mutex_lock (S.L'Access);
+       pragma Assert (Result = 0);
+ 
+       if S.Waiting then
+          --  Program_Error must be raised upon calling Suspend_Until_True
+          --  if another task is already waiting on that suspension object
+          --  (ARM D.10 par. 10).
+ 
+          Result := pthread_mutex_unlock (S.L'Access);
+          pragma Assert (Result = 0);
+ 
+          SSL.Abort_Undefer.all;
+ 
+          raise Program_Error;
+       else
+          --  Suspend the task if the state is False. Otherwise, the task
+          --  continues its execution, and the state of the suspension object
+          --  is set to False (ARM D.10 par. 9).
+ 
+          if S.State then
+             S.State := False;
+          else
+             S.Waiting := True;
+ 
+             loop
+                --  Loop in case pthread_cond_wait returns earlier than expected
+                --  (e.g. in case of EINTR caused by a signal).
+ 
+                Result := pthread_cond_wait (S.CV'Access, S.L'Access);
+                pragma Assert (Result = 0 or else Result = EINTR);
+ 
+                exit when not S.Waiting;
+             end loop;
+          end if;
+ 
+          Result := pthread_mutex_unlock (S.L'Access);
+          pragma Assert (Result = 0);
+ 
+          SSL.Abort_Undefer.all;
+       end if;
+    end Suspend_Until_True;
+ 
+    ----------------
+    -- Check_Exit --
+    ----------------
+ 
+    --  Dummy version
+ 
+    function Check_Exit (Self_ID : ST.Task_Id) return Boolean is
+       pragma Unreferenced (Self_ID);
+    begin
+       return True;
+    end Check_Exit;
+ 
+    --------------------
+    -- Check_No_Locks --
+    --------------------
+ 
+    function Check_No_Locks (Self_ID : ST.Task_Id) return Boolean is
+       pragma Unreferenced (Self_ID);
+    begin
+       return True;
+    end Check_No_Locks;
+ 
+    ----------------------
+    -- Environment_Task --
+    ----------------------
+ 
+    function Environment_Task return Task_Id is
+    begin
+       return Environment_Task_Id;
+    end Environment_Task;
+ 
+    --------------
+    -- Lock_RTS --
+    --------------
+ 
+    procedure Lock_RTS is
+    begin
+       Write_Lock (Single_RTS_Lock'Access, Global_Lock => True);
+    end Lock_RTS;
+ 
+    ----------------
+    -- Unlock_RTS --
+    ----------------
+ 
+    procedure Unlock_RTS is
+    begin
+       Unlock (Single_RTS_Lock'Access, Global_Lock => True);
+    end Unlock_RTS;
+ 
+    ------------------
+    -- Suspend_Task --
+    ------------------
+ 
+    function Suspend_Task
+      (T           : ST.Task_Id;
+       Thread_Self : Thread_Id) return Boolean
+    is
+       pragma Unreferenced (T);
+       pragma Unreferenced (Thread_Self);
+    begin
+       return False;
+    end Suspend_Task;
+ 
+    -----------------
+    -- Resume_Task --
+    -----------------
+ 
+    function Resume_Task
+      (T           : ST.Task_Id;
+       Thread_Self : Thread_Id) return Boolean
+    is
+       pragma Unreferenced (T);
+       pragma Unreferenced (Thread_Self);
+    begin
+       return False;
+    end Resume_Task;
+ 
+    --------------------
+    -- Stop_All_Tasks --
+    --------------------
+ 
+    procedure Stop_All_Tasks is
+    begin
+       null;
+    end Stop_All_Tasks;
+ 
+    ---------------
+    -- Stop_Task --
+    ---------------
+ 
+    function Stop_Task (T : ST.Task_Id) return Boolean is
+       pragma Unreferenced (T);
+    begin
+       return False;
+    end Stop_Task;
+ 
+    -------------------
+    -- Continue_Task --
+    -------------------
+ 
+    function Continue_Task (T : ST.Task_Id) return Boolean is
+       pragma Unreferenced (T);
+    begin
+       return False;
+    end Continue_Task;
+ 
+    ----------------
+    -- Initialize --
+    ----------------
+ 
+    procedure Initialize (Environment_Task : Task_Id) is
+       act     : aliased struct_sigaction;
+       old_act : aliased struct_sigaction;
+       Tmp_Set : aliased sigset_t;
+       Result  : Interfaces.C.int;
+ 
+       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
+       --    'u'   Interrupt_State pragma set state to User
+       --    'r'   Interrupt_State pragma set state to Runtime
+       --    's'   Interrupt_State pragma set state to System (use "default"
+       --           system handler)
+ 
+    begin
+       Environment_Task_Id := Environment_Task;
+ 
+       Interrupt_Management.Initialize;
+ 
+       --  Initialize the lock used to synchronize chain of all ATCBs
+ 
+       Initialize_Lock (Single_RTS_Lock'Access, RTS_Lock_Level);
+ 
+       Specific.Initialize (Environment_Task);
+ 
+       --  Make environment task known here because it doesn't go through
+       --  Activate_Tasks, which does it for all other tasks.
+ 
+       Known_Tasks (Known_Tasks'First) := Environment_Task;
+       Environment_Task.Known_Tasks_Index := Known_Tasks'First;
+ 
+       Enter_Task (Environment_Task);
+ 
+       --  Install the abort-signal handler
+ 
+       if State (System.Interrupt_Management.Abort_Task_Interrupt)
+                                                      /= Default
+       then
+          act.sa_flags := 0;
+          act.sa_handler := Abort_Handler'Address;
+ 
+          Result := sigemptyset (Tmp_Set'Access);
+          pragma Assert (Result = 0);
+          act.sa_mask := Tmp_Set;
+ 
+          Result :=
+            sigaction (
+              Signal (System.Interrupt_Management.Abort_Task_Interrupt),
+              act'Unchecked_Access,
+              old_act'Unchecked_Access);
+          pragma Assert (Result = 0);
+       end if;
+    end Initialize;
+ 
+    --  NOTE: Unlike other pthread implementations, we do *not* mask all
+    --  signals here since we handle signals using the process-wide primitive
+    --  signal, rather than using sigthreadmask and sigwait. The reason of
+    --  this difference is that sigwait doesn't work when some critical
+    --  signals (SIGABRT, SIGPIPE) are masked.
+ 
+    -----------------------
+    -- Set_Task_Affinity --
+    -----------------------
+ 
+    procedure Set_Task_Affinity (T : ST.Task_Id) is
+       pragma Unreferenced (T);
+ 
+    begin
+       --  Setting task affinity is not supported by the underlying system
+ 
+       null;
+    end Set_Task_Affinity;
+ 
+ end System.Task_Primitives.Operations;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-taprop__linux.adb gcc-8.1.0/gcc/ada/libgnarl/s-taprop__linux.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-taprop__linux.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-taprop__linux.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,1560 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                GNU ADA RUN-TIME LIBRARY (GNARL) COMPONENTS               --
+ --                                                                          --
+ --     S Y S T E M . T A S K _ P R I M I T I V E S . O P E R A T I O N S    --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --         Copyright (C) 1992-2018, Free Software Foundation, Inc.          --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is a GNU/Linux (GNU/LinuxThreads) version of this package
+ 
+ --  This package contains all the GNULL primitives that interface directly with
+ --  the underlying OS.
+ 
+ pragma Polling (Off);
+ --  Turn off polling, we do not want ATC polling to take place during tasking
+ --  operations. It causes infinite loops and other problems.
+ 
+ with Interfaces.C; use Interfaces; use type Interfaces.C.int;
+ 
+ with System.Task_Info;
+ with System.Tasking.Debug;
+ with System.Interrupt_Management;
+ with System.OS_Constants;
+ with System.OS_Primitives;
+ with System.Multiprocessors;
+ 
+ with System.Soft_Links;
+ --  We use System.Soft_Links instead of System.Tasking.Initialization
+ --  because the later is a higher level package that we shouldn't depend on.
+ --  For example when using the restricted run time, it is replaced by
+ --  System.Tasking.Restricted.Stages.
+ 
+ package body System.Task_Primitives.Operations is
+ 
+    package OSC renames System.OS_Constants;
+    package SSL renames System.Soft_Links;
+ 
+    use System.Tasking.Debug;
+    use System.Tasking;
+    use System.OS_Interface;
+    use System.Parameters;
+    use System.OS_Primitives;
+    use System.Task_Info;
+ 
+    ----------------
+    -- Local Data --
+    ----------------
+ 
+    --  The followings are logically constants, but need to be initialized
+    --  at run time.
+ 
+    Single_RTS_Lock : aliased RTS_Lock;
+    --  This is a lock to allow only one thread of control in the RTS at
+    --  a time; it is used to execute in mutual exclusion from all other tasks.
+    --  Used mainly in Single_Lock mode, but also to protect All_Tasks_List
+ 
+    Environment_Task_Id : Task_Id;
+    --  A variable to hold Task_Id for the environment task
+ 
+    Unblocked_Signal_Mask : aliased sigset_t;
+    --  The set of signals that should be unblocked in all tasks
+ 
+    --  The followings are internal configuration constants needed
+ 
+    Next_Serial_Number : Task_Serial_Number := 100;
+    --  We start at 100 (reserve some special values for using in error checks)
+ 
+    Time_Slice_Val : Integer;
+    pragma Import (C, Time_Slice_Val, "__gl_time_slice_val");
+ 
+    Dispatching_Policy : Character;
+    pragma Import (C, Dispatching_Policy, "__gl_task_dispatching_policy");
+ 
+    Locking_Policy : Character;
+    pragma Import (C, Locking_Policy, "__gl_locking_policy");
+ 
+    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;
+    --  True if a handler for the abort signal is installed
+ 
+    Null_Thread_Id : constant pthread_t := pthread_t'Last;
+    --  Constant to indicate that the thread identifier has not yet been
+    --  initialized.
+ 
+    --------------------
+    -- Local Packages --
+    --------------------
+ 
+    package Specific is
+ 
+       procedure Initialize (Environment_Task : Task_Id);
+       pragma Inline (Initialize);
+       --  Initialize various data needed by this package
+ 
+       function Is_Valid_Task return Boolean;
+       pragma Inline (Is_Valid_Task);
+       --  Does executing thread have a TCB?
+ 
+       procedure Set (Self_Id : Task_Id);
+       pragma Inline (Set);
+       --  Set the self id for the current task
+ 
+       function Self return Task_Id;
+       pragma Inline (Self);
+       --  Return a pointer to the Ada Task Control Block of the calling task
+ 
+    end Specific;
+ 
+    package body Specific is separate;
+    --  The body of this package is target specific
+ 
+    package Monotonic is
+ 
+       function Monotonic_Clock return Duration;
+       pragma Inline (Monotonic_Clock);
+       --  Returns an absolute time, represented as an offset relative to some
+       --  unspecified starting point, typically system boot time. This clock is
+       --  not affected by discontinuous jumps in the system time.
+ 
+       function RT_Resolution return Duration;
+       pragma Inline (RT_Resolution);
+       --  Returns resolution of the underlying clock used to implement RT_Clock
+ 
+       procedure Timed_Sleep
+         (Self_ID  : ST.Task_Id;
+          Time     : Duration;
+          Mode     : ST.Delay_Modes;
+          Reason   : System.Tasking.Task_States;
+          Timedout : out Boolean;
+          Yielded  : out Boolean);
+       --  Combination of Sleep (above) and Timed_Delay
+ 
+       procedure Timed_Delay
+         (Self_ID : ST.Task_Id;
+          Time    : Duration;
+          Mode    : ST.Delay_Modes);
+       --  Implement the semantics of the delay statement.
+       --  The caller should be abort-deferred and should not hold any locks.
+ 
+    end Monotonic;
+ 
+    package body Monotonic is separate;
+ 
+    ----------------------------------
+    -- ATCB allocation/deallocation --
+    ----------------------------------
+ 
+    package body ATCB_Allocation is separate;
+    --  The body of this package is shared across several targets
+ 
+    ---------------------------------
+    -- Support for foreign threads --
+    ---------------------------------
+ 
+    function Register_Foreign_Thread
+      (Thread         : Thread_Id;
+       Sec_Stack_Size : Size_Type := Unspecified_Size) return Task_Id;
+    --  Allocate and initialize a new ATCB for the current Thread. The size of
+    --  the secondary stack can be optionally specified.
+ 
+    function Register_Foreign_Thread
+      (Thread         : Thread_Id;
+       Sec_Stack_Size : Size_Type := Unspecified_Size)
+      return Task_Id is separate;
+ 
+    -----------------------
+    -- Local Subprograms --
+    -----------------------
+ 
+    procedure Abort_Handler (signo : Signal);
+ 
+    function GNAT_pthread_condattr_setup
+      (attr : access pthread_condattr_t) return C.int;
+    pragma Import
+      (C, GNAT_pthread_condattr_setup, "__gnat_pthread_condattr_setup");
+ 
+    function GNAT_has_cap_sys_nice return C.int;
+    pragma Import
+      (C, GNAT_has_cap_sys_nice, "__gnat_has_cap_sys_nice");
+    --  We do not have pragma Linker_Options ("-lcap"); here, because this
+    --  library is not present on many Linux systems. 'libcap' is the Linux
+    --  "capabilities" library, called by __gnat_has_cap_sys_nice.
+ 
+    function Prio_To_Linux_Prio (Prio : Any_Priority) return C.int is
+      (C.int (Prio) + 1);
+    --  Convert Ada priority to Linux priority. Priorities are 1 .. 99 on
+    --  GNU/Linux, so we map 0 .. 98 to 1 .. 99.
+ 
+    function Get_Ceiling_Support return Boolean;
+    --  Get the value of the Ceiling_Support constant (see below).
+    --  Note well: If this function or related code is modified, it should be
+    --  tested by hand, because automated testing doesn't exercise it.
+ 
+    -------------------------
+    -- Get_Ceiling_Support --
+    -------------------------
+ 
+    function Get_Ceiling_Support return Boolean is
+       Ceiling_Support : Boolean := False;
+    begin
+       if Locking_Policy /= 'C' then
+          return False;
+       end if;
+ 
+       declare
+          function geteuid return Integer;
+          pragma Import (C, geteuid, "geteuid");
+          Superuser : constant Boolean := geteuid = 0;
+          Has_Cap : constant C.int := GNAT_has_cap_sys_nice;
+          pragma Assert (Has_Cap in 0 | 1);
+       begin
+          Ceiling_Support := Superuser or else Has_Cap = 1;
+       end;
+ 
+       return Ceiling_Support;
+    end Get_Ceiling_Support;
+ 
+    pragma Warnings (Off, "non-static call not allowed in preelaborated unit");
+    Ceiling_Support : constant Boolean := Get_Ceiling_Support;
+    pragma Warnings (On, "non-static call not allowed in preelaborated unit");
+    --  True if the locking policy is Ceiling_Locking, and the current process
+    --  has permission to use this policy. The process has permission if it is
+    --  running as 'root', or if the capability was set by the setcap command,
+    --  as in "sudo /sbin/setcap cap_sys_nice=ep exe_file". If it doesn't have
+    --  permission, then a request for Ceiling_Locking is ignored.
+ 
+    type RTS_Lock_Ptr is not null access all RTS_Lock;
+ 
+    function Init_Mutex (L : RTS_Lock_Ptr; Prio : Any_Priority) return C.int;
+    --  Initialize the mutex L. If Ceiling_Support is True, then set the ceiling
+    --  to Prio. Returns 0 for success, or ENOMEM for out-of-memory.
+ 
+    -------------------
+    -- Abort_Handler --
+    -------------------
+ 
+    procedure Abort_Handler (signo : Signal) is
+       pragma Unreferenced (signo);
+ 
+       Self_Id : constant Task_Id := Self;
+       Result  : C.int;
+       Old_Set : aliased sigset_t;
+ 
+    begin
+       --  It's not safe to raise an exception when using GCC ZCX mechanism.
+       --  Note that we still need to install a signal handler, since in some
+       --  cases (e.g. shutdown of the Server_Task in System.Interrupts) we
+       --  need to send the Abort signal to a task.
+ 
+       if ZCX_By_Default then
+          return;
+       end if;
+ 
+       if Self_Id.Deferral_Level = 0
+         and then Self_Id.Pending_ATC_Level < Self_Id.ATC_Nesting_Level
+         and then not Self_Id.Aborting
+       then
+          Self_Id.Aborting := True;
+ 
+          --  Make sure signals used for RTS internal purpose are unmasked
+ 
+          Result :=
+            pthread_sigmask
+              (SIG_UNBLOCK,
+               Unblocked_Signal_Mask'Access,
+               Old_Set'Access);
+          pragma Assert (Result = 0);
+ 
+          raise Standard'Abort_Signal;
+       end if;
+    end Abort_Handler;
+ 
+    --------------
+    -- Lock_RTS --
+    --------------
+ 
+    procedure Lock_RTS is
+    begin
+       Write_Lock (Single_RTS_Lock'Access, Global_Lock => True);
+    end Lock_RTS;
+ 
+    ----------------
+    -- Unlock_RTS --
+    ----------------
+ 
+    procedure Unlock_RTS is
+    begin
+       Unlock (Single_RTS_Lock'Access, Global_Lock => True);
+    end Unlock_RTS;
+ 
+    -----------------
+    -- Stack_Guard --
+    -----------------
+ 
+    --  The underlying thread system extends the memory (up to 2MB) when needed
+ 
+    procedure Stack_Guard (T : ST.Task_Id; On : Boolean) is
+       pragma Unreferenced (T);
+       pragma Unreferenced (On);
+    begin
+       null;
+    end Stack_Guard;
+ 
+    --------------------
+    -- Get_Thread_Id  --
+    --------------------
+ 
+    function Get_Thread_Id (T : ST.Task_Id) return OSI.Thread_Id is
+    begin
+       return T.Common.LL.Thread;
+    end Get_Thread_Id;
+ 
+    ----------
+    -- Self --
+    ----------
+ 
+    function Self return Task_Id renames Specific.Self;
+ 
+    ----------------
+    -- Init_Mutex --
+    ----------------
+ 
+    function Init_Mutex (L : RTS_Lock_Ptr; Prio : Any_Priority) return C.int is
+       Mutex_Attr : aliased pthread_mutexattr_t;
+       Result, Result_2 : C.int;
+ 
+    begin
+       Result := pthread_mutexattr_init (Mutex_Attr'Access);
+       pragma Assert (Result in 0 | ENOMEM);
+ 
+       if Result = ENOMEM then
+          return Result;
+       end if;
+ 
+       if Ceiling_Support then
+          Result := pthread_mutexattr_setprotocol
+            (Mutex_Attr'Access, PTHREAD_PRIO_PROTECT);
+          pragma Assert (Result = 0);
+ 
+          Result := pthread_mutexattr_setprioceiling
+            (Mutex_Attr'Access, Prio_To_Linux_Prio (Prio));
+          pragma Assert (Result = 0);
+ 
+       elsif Locking_Policy = 'I' then
+          Result := pthread_mutexattr_setprotocol
+            (Mutex_Attr'Access, PTHREAD_PRIO_INHERIT);
+          pragma Assert (Result = 0);
+       end if;
+ 
+       Result := pthread_mutex_init (L, Mutex_Attr'Access);
+       pragma Assert (Result in 0 | ENOMEM);
+ 
+       Result_2 := pthread_mutexattr_destroy (Mutex_Attr'Access);
+       pragma Assert (Result_2 = 0);
+       return Result; -- of pthread_mutex_init, not pthread_mutexattr_destroy
+    end Init_Mutex;
+ 
+    ---------------------
+    -- Initialize_Lock --
+    ---------------------
+ 
+    --  Note: mutexes and cond_variables needed per-task basis are initialized
+    --  in Initialize_TCB and the Storage_Error is handled. Other mutexes (such
+    --  as RTS_Lock, Memory_Lock...) used in RTS is initialized before any
+    --  status change of RTS. Therefore raising Storage_Error in the following
+    --  routines should be able to be handled safely.
+ 
+    procedure Initialize_Lock
+      (Prio : Any_Priority;
+       L    : not null access Lock)
+    is
+    begin
+       if Locking_Policy = 'R' then
+          declare
+             RWlock_Attr : aliased pthread_rwlockattr_t;
+             Result      : C.int;
+ 
+          begin
+             --  Set the rwlock to prefer writer to avoid writers starvation
+ 
+             Result := pthread_rwlockattr_init (RWlock_Attr'Access);
+             pragma Assert (Result = 0);
+ 
+             Result := pthread_rwlockattr_setkind_np
+               (RWlock_Attr'Access,
+                PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP);
+             pragma Assert (Result = 0);
+ 
+             Result := pthread_rwlock_init (L.RW'Access, RWlock_Attr'Access);
+ 
+             pragma Assert (Result in 0 | ENOMEM);
+ 
+             if Result = ENOMEM then
+                raise Storage_Error with "Failed to allocate a lock";
+             end if;
+          end;
+ 
+       else
+          if Init_Mutex (L.WO'Access, Prio) = ENOMEM then
+             raise Storage_Error with "Failed to allocate a lock";
+          end if;
+       end if;
+    end Initialize_Lock;
+ 
+    procedure Initialize_Lock
+      (L : not null access RTS_Lock; Level : Lock_Level)
+    is
+       pragma Unreferenced (Level);
+    begin
+       if Init_Mutex (L.all'Access, Any_Priority'Last) = ENOMEM then
+          raise Storage_Error with "Failed to allocate a lock";
+       end if;
+    end Initialize_Lock;
+ 
+    -------------------
+    -- Finalize_Lock --
+    -------------------
+ 
+    procedure Finalize_Lock (L : not null access Lock) is
+       Result : C.int;
+    begin
+       if Locking_Policy = 'R' then
+          Result := pthread_rwlock_destroy (L.RW'Access);
+       else
+          Result := pthread_mutex_destroy (L.WO'Access);
+       end if;
+       pragma Assert (Result = 0);
+    end Finalize_Lock;
+ 
+    procedure Finalize_Lock (L : not null access RTS_Lock) is
+       Result : C.int;
+    begin
+       Result := pthread_mutex_destroy (L);
+       pragma Assert (Result = 0);
+    end Finalize_Lock;
+ 
+    ----------------
+    -- Write_Lock --
+    ----------------
+ 
+    procedure Write_Lock
+      (L                 : not null access Lock;
+       Ceiling_Violation : out Boolean)
+    is
+       Result : C.int;
+    begin
+       if Locking_Policy = 'R' then
+          Result := pthread_rwlock_wrlock (L.RW'Access);
+       else
+          Result := pthread_mutex_lock (L.WO'Access);
+       end if;
+ 
+       --  The cause of EINVAL is a priority ceiling violation
+ 
+       pragma Assert (Result in 0 | EINVAL);
+       Ceiling_Violation := Result = EINVAL;
+    end Write_Lock;
+ 
+    procedure Write_Lock
+      (L           : not null access RTS_Lock;
+       Global_Lock : Boolean := False)
+    is
+       Result : C.int;
+    begin
+       if not Single_Lock or else Global_Lock then
+          Result := pthread_mutex_lock (L);
+          pragma Assert (Result = 0);
+       end if;
+    end Write_Lock;
+ 
+    procedure Write_Lock (T : Task_Id) is
+       Result : C.int;
+    begin
+       if not Single_Lock then
+          Result := pthread_mutex_lock (T.Common.LL.L'Access);
+          pragma Assert (Result = 0);
+       end if;
+    end Write_Lock;
+ 
+    ---------------
+    -- Read_Lock --
+    ---------------
+ 
+    procedure Read_Lock
+      (L                 : not null access Lock;
+       Ceiling_Violation : out Boolean)
+    is
+       Result : C.int;
+    begin
+       if Locking_Policy = 'R' then
+          Result := pthread_rwlock_rdlock (L.RW'Access);
+       else
+          Result := pthread_mutex_lock (L.WO'Access);
+       end if;
+ 
+       --  The cause of EINVAL is a priority ceiling violation
+ 
+       pragma Assert (Result in 0 | EINVAL);
+       Ceiling_Violation := Result = EINVAL;
+    end Read_Lock;
+ 
+    ------------
+    -- Unlock --
+    ------------
+ 
+    procedure Unlock (L : not null access Lock) is
+       Result : C.int;
+    begin
+       if Locking_Policy = 'R' then
+          Result := pthread_rwlock_unlock (L.RW'Access);
+       else
+          Result := pthread_mutex_unlock (L.WO'Access);
+       end if;
+       pragma Assert (Result = 0);
+    end Unlock;
+ 
+    procedure Unlock
+      (L           : not null access RTS_Lock;
+       Global_Lock : Boolean := False)
+    is
+       Result : C.int;
+    begin
+       if not Single_Lock or else Global_Lock then
+          Result := pthread_mutex_unlock (L);
+          pragma Assert (Result = 0);
+       end if;
+    end Unlock;
+ 
+    procedure Unlock (T : Task_Id) is
+       Result : C.int;
+    begin
+       if not Single_Lock then
+          Result := pthread_mutex_unlock (T.Common.LL.L'Access);
+          pragma Assert (Result = 0);
+       end if;
+    end Unlock;
+ 
+    -----------------
+    -- Set_Ceiling --
+    -----------------
+ 
+    --  Dynamic priority ceilings are not supported by the underlying system
+ 
+    procedure Set_Ceiling
+      (L    : not null access Lock;
+       Prio : Any_Priority)
+    is
+       pragma Unreferenced (L, Prio);
+    begin
+       null;
+    end Set_Ceiling;
+ 
+    -----------
+    -- Sleep --
+    -----------
+ 
+    procedure Sleep
+      (Self_ID  : Task_Id;
+       Reason   : System.Tasking.Task_States)
+    is
+       pragma Unreferenced (Reason);
+ 
+       Result : C.int;
+ 
+    begin
+       pragma Assert (Self_ID = Self);
+ 
+       Result :=
+         pthread_cond_wait
+           (cond  => Self_ID.Common.LL.CV'Access,
+            mutex => (if Single_Lock
+                      then Single_RTS_Lock'Access
+                      else Self_ID.Common.LL.L'Access));
+ 
+       --  EINTR is not considered a failure
+ 
+       pragma Assert (Result in 0 | EINTR);
+    end Sleep;
+ 
+    -----------------
+    -- Timed_Sleep --
+    -----------------
+ 
+    --  This is for use within the run-time system, so abort is
+    --  assumed to be already deferred, and the caller should be
+    --  holding its own ATCB lock.
+ 
+    procedure Timed_Sleep
+      (Self_ID  : Task_Id;
+       Time     : Duration;
+       Mode     : ST.Delay_Modes;
+       Reason   : System.Tasking.Task_States;
+       Timedout : out Boolean;
+       Yielded  : out Boolean) renames Monotonic.Timed_Sleep;
+ 
+    -----------------
+    -- Timed_Delay --
+    -----------------
+ 
+    --  This is for use in implementing delay statements, so we assume the
+    --  caller is abort-deferred but is holding no locks.
+ 
+    procedure Timed_Delay
+      (Self_ID : Task_Id;
+       Time    : Duration;
+       Mode    : ST.Delay_Modes) renames Monotonic.Timed_Delay;
+ 
+    ---------------------
+    -- Monotonic_Clock --
+    ---------------------
+ 
+    function Monotonic_Clock return Duration renames Monotonic.Monotonic_Clock;
+ 
+    -------------------
+    -- RT_Resolution --
+    -------------------
+ 
+    function RT_Resolution return Duration renames Monotonic.RT_Resolution;
+ 
+    ------------
+    -- Wakeup --
+    ------------
+ 
+    procedure Wakeup (T : Task_Id; Reason : System.Tasking.Task_States) is
+       pragma Unreferenced (Reason);
+       Result : C.int;
+    begin
+       Result := pthread_cond_signal (T.Common.LL.CV'Access);
+       pragma Assert (Result = 0);
+    end Wakeup;
+ 
+    -----------
+    -- Yield --
+    -----------
+ 
+    procedure Yield (Do_Yield : Boolean := True) is
+       Result : C.int;
+       pragma Unreferenced (Result);
+    begin
+       if Do_Yield then
+          Result := sched_yield;
+       end if;
+    end Yield;
+ 
+    ------------------
+    -- Set_Priority --
+    ------------------
+ 
+    procedure Set_Priority
+      (T                   : Task_Id;
+       Prio                : Any_Priority;
+       Loss_Of_Inheritance : Boolean := False)
+    is
+       pragma Unreferenced (Loss_Of_Inheritance);
+ 
+       Result : C.int;
+       Param  : aliased struct_sched_param;
+ 
+       function Get_Policy (Prio : Any_Priority) return Character;
+       pragma Import (C, Get_Policy, "__gnat_get_specific_dispatching");
+       --  Get priority specific dispatching policy
+ 
+       Priority_Specific_Policy : constant Character := Get_Policy (Prio);
+       --  Upper case first character of the policy name corresponding to the
+       --  task as set by a Priority_Specific_Dispatching pragma.
+ 
+    begin
+       T.Common.Current_Priority := Prio;
+ 
+       Param.sched_priority := Prio_To_Linux_Prio (Prio);
+ 
+       if Dispatching_Policy = 'R'
+         or else Priority_Specific_Policy = 'R'
+         or else Time_Slice_Val > 0
+       then
+          Result :=
+            pthread_setschedparam
+              (T.Common.LL.Thread, SCHED_RR, Param'Access);
+ 
+       elsif Dispatching_Policy = 'F'
+         or else Priority_Specific_Policy = 'F'
+         or else Time_Slice_Val = 0
+       then
+          Result :=
+            pthread_setschedparam
+              (T.Common.LL.Thread, SCHED_FIFO, Param'Access);
+ 
+       else
+          Param.sched_priority := 0;
+          Result :=
+            pthread_setschedparam
+              (T.Common.LL.Thread,
+               SCHED_OTHER, Param'Access);
+       end if;
+ 
+       pragma Assert (Result in 0 | EPERM | EINVAL);
+    end Set_Priority;
+ 
+    ------------------
+    -- Get_Priority --
+    ------------------
+ 
+    function Get_Priority (T : Task_Id) return Any_Priority is
+    begin
+       return T.Common.Current_Priority;
+    end Get_Priority;
+ 
+    ----------------
+    -- Enter_Task --
+    ----------------
+ 
+    procedure Enter_Task (Self_ID : Task_Id) is
+    begin
+       if Self_ID.Common.Task_Info /= null
+         and then Self_ID.Common.Task_Info.CPU_Affinity = No_CPU
+       then
+          raise Invalid_CPU_Number;
+       end if;
+ 
+       Self_ID.Common.LL.Thread := pthread_self;
+       Self_ID.Common.LL.LWP := lwp_self;
+ 
+       --  Set thread name to ease debugging. If the name of the task is
+       --  "foreign thread" (as set by Register_Foreign_Thread) retrieve
+       --  the name of the thread and update the name of the task instead.
+ 
+       if Self_ID.Common.Task_Image_Len = 14
+         and then Self_ID.Common.Task_Image (1 .. 14) = "foreign thread"
+       then
+          declare
+             Thread_Name : String (1 .. 16);
+             --  PR_GET_NAME returns a string of up to 16 bytes
+ 
+             Len    : Natural := 0;
+             --  Length of the task name contained in Task_Name
+ 
+             Result : C.int;
+             --  Result from the prctl call
+          begin
+             Result := prctl (PR_GET_NAME, unsigned_long (Thread_Name'Address));
+             pragma Assert (Result = 0);
+ 
+             --  Find the length of the given name
+ 
+             for J in Thread_Name'Range loop
+                if Thread_Name (J) /= ASCII.NUL then
+                   Len := Len + 1;
+                else
+                   exit;
+                end if;
+             end loop;
+ 
+             --  Cover the odd situation where someone decides to change
+             --  Parameters.Max_Task_Image_Length to less than 16 characters.
+ 
+             if Len > Parameters.Max_Task_Image_Length then
+                Len := Parameters.Max_Task_Image_Length;
+             end if;
+ 
+             --  Copy the name of the thread to the task's ATCB
+ 
+             Self_ID.Common.Task_Image (1 .. Len) := Thread_Name (1 .. Len);
+             Self_ID.Common.Task_Image_Len := Len;
+          end;
+ 
+       elsif Self_ID.Common.Task_Image_Len > 0 then
+          declare
+             Task_Name : String (1 .. Parameters.Max_Task_Image_Length + 1);
+             Result    : C.int;
+ 
+          begin
+             Task_Name (1 .. Self_ID.Common.Task_Image_Len) :=
+               Self_ID.Common.Task_Image (1 .. Self_ID.Common.Task_Image_Len);
+             Task_Name (Self_ID.Common.Task_Image_Len + 1) := ASCII.NUL;
+ 
+             Result := prctl (PR_SET_NAME, unsigned_long (Task_Name'Address));
+             pragma Assert (Result = 0);
+          end;
+       end if;
+ 
+       Specific.Set (Self_ID);
+ 
+       if Use_Alternate_Stack
+         and then Self_ID.Common.Task_Alternate_Stack /= Null_Address
+       then
+          declare
+             Stack  : aliased stack_t;
+             Result : C.int;
+          begin
+             Stack.ss_sp    := Self_ID.Common.Task_Alternate_Stack;
+             Stack.ss_size  := Alternate_Stack_Size;
+             Stack.ss_flags := 0;
+             Result := sigaltstack (Stack'Access, null);
+             pragma Assert (Result = 0);
+          end;
+       end if;
+    end Enter_Task;
+ 
+    -------------------
+    -- Is_Valid_Task --
+    -------------------
+ 
+    function Is_Valid_Task return Boolean renames Specific.Is_Valid_Task;
+ 
+    -----------------------------
+    -- Register_Foreign_Thread --
+    -----------------------------
+ 
+    function Register_Foreign_Thread return Task_Id is
+    begin
+       if Is_Valid_Task then
+          return Self;
+       else
+          return Register_Foreign_Thread (pthread_self);
+       end if;
+    end Register_Foreign_Thread;
+ 
+    --------------------
+    -- Initialize_TCB --
+    --------------------
+ 
+    procedure Initialize_TCB (Self_ID : Task_Id; Succeeded : out Boolean) is
+       Result    : C.int;
+       Cond_Attr : aliased pthread_condattr_t;
+ 
+    begin
+       --  Give the task a unique serial number
+ 
+       Self_ID.Serial_Number := Next_Serial_Number;
+       Next_Serial_Number := Next_Serial_Number + 1;
+       pragma Assert (Next_Serial_Number /= 0);
+ 
+       Self_ID.Common.LL.Thread := Null_Thread_Id;
+ 
+       if not Single_Lock then
+          if Init_Mutex
+            (Self_ID.Common.LL.L'Access, Any_Priority'Last) /= 0
+          then
+             Succeeded := False;
+             return;
+          end if;
+       end if;
+ 
+       Result := pthread_condattr_init (Cond_Attr'Access);
+       pragma Assert (Result in 0 | ENOMEM);
+ 
+       if Result = 0 then
+          Result := GNAT_pthread_condattr_setup (Cond_Attr'Access);
+          pragma Assert (Result = 0);
+ 
+          Result :=
+            pthread_cond_init
+              (Self_ID.Common.LL.CV'Access, Cond_Attr'Access);
+          pragma Assert (Result in 0 | ENOMEM);
+       end if;
+ 
+       if Result = 0 then
+          Succeeded := True;
+       else
+          if not Single_Lock then
+             Result := pthread_mutex_destroy (Self_ID.Common.LL.L'Access);
+             pragma Assert (Result = 0);
+          end if;
+ 
+          Succeeded := False;
+       end if;
+ 
+       Result := pthread_condattr_destroy (Cond_Attr'Access);
+       pragma Assert (Result = 0);
+    end Initialize_TCB;
+ 
+    -----------------
+    -- Create_Task --
+    -----------------
+ 
+    procedure Create_Task
+      (T          : Task_Id;
+       Wrapper    : System.Address;
+       Stack_Size : System.Parameters.Size_Type;
+       Priority   : Any_Priority;
+       Succeeded  : out Boolean)
+    is
+       Thread_Attr         : aliased pthread_attr_t;
+       Adjusted_Stack_Size : C.size_t;
+       Result              : C.int;
+ 
+       use type Multiprocessors.CPU_Range, Interfaces.C.size_t;
+ 
+    begin
+       --  Check whether both Dispatching_Domain and CPU are specified for
+       --  the task, and the CPU value is not contained within the range of
+       --  processors for the domain.
+ 
+       if T.Common.Domain /= null
+         and then T.Common.Base_CPU /= Multiprocessors.Not_A_Specific_CPU
+         and then
+           (T.Common.Base_CPU not in T.Common.Domain'Range
+             or else not T.Common.Domain (T.Common.Base_CPU))
+       then
+          Succeeded := False;
+          return;
+       end if;
+ 
+       Adjusted_Stack_Size := C.size_t (Stack_Size + Alternate_Stack_Size);
+ 
+       Result := pthread_attr_init (Thread_Attr'Access);
+       pragma Assert (Result in 0 | ENOMEM);
+ 
+       if Result /= 0 then
+          Succeeded := False;
+          return;
+       end if;
+ 
+       Result :=
+         pthread_attr_setstacksize (Thread_Attr'Access, Adjusted_Stack_Size);
+       pragma Assert (Result = 0);
+ 
+       Result :=
+         pthread_attr_setdetachstate
+           (Thread_Attr'Access, PTHREAD_CREATE_DETACHED);
+       pragma Assert (Result = 0);
+ 
+       --  Set the required attributes for the creation of the thread
+ 
+       --  Note: Previously, we called pthread_setaffinity_np (after thread
+       --  creation but before thread activation) to set the affinity but it was
+       --  not behaving as expected. Setting the required attributes for the
+       --  creation of the thread works correctly and it is more appropriate.
+ 
+       --  Do nothing if required support not provided by the operating system
+ 
+       if pthread_attr_setaffinity_np'Address = Null_Address then
+          null;
+ 
+       --  Support is available
+ 
+       elsif T.Common.Base_CPU /= Multiprocessors.Not_A_Specific_CPU then
+          declare
+             CPUs    : constant size_t :=
+                         C.size_t (Multiprocessors.Number_Of_CPUs);
+             CPU_Set : constant cpu_set_t_ptr := CPU_ALLOC (CPUs);
+             Size    : constant size_t := CPU_ALLOC_SIZE (CPUs);
+ 
+          begin
+             CPU_ZERO (Size, CPU_Set);
+             System.OS_Interface.CPU_SET
+               (int (T.Common.Base_CPU), Size, CPU_Set);
+             Result :=
+               pthread_attr_setaffinity_np (Thread_Attr'Access, Size, CPU_Set);
+             pragma Assert (Result = 0);
+ 
+             CPU_FREE (CPU_Set);
+          end;
+ 
+       --  Handle Task_Info
+ 
+       elsif T.Common.Task_Info /= null then
+          Result :=
+            pthread_attr_setaffinity_np
+              (Thread_Attr'Access,
+               CPU_SETSIZE / 8,
+               T.Common.Task_Info.CPU_Affinity'Access);
+          pragma Assert (Result = 0);
+ 
+       --  Handle dispatching domains
+ 
+       --  To avoid changing CPU affinities when not needed, we set the
+       --  affinity only when assigning to a domain other than the default
+       --  one, or when the default one has been modified.
+ 
+       elsif T.Common.Domain /= null and then
+         (T.Common.Domain /= ST.System_Domain
+           or else T.Common.Domain.all /=
+                     (Multiprocessors.CPU'First ..
+                      Multiprocessors.Number_Of_CPUs => True))
+       then
+          declare
+             CPUs    : constant size_t :=
+                         C.size_t (Multiprocessors.Number_Of_CPUs);
+             CPU_Set : constant cpu_set_t_ptr := CPU_ALLOC (CPUs);
+             Size    : constant size_t := CPU_ALLOC_SIZE (CPUs);
+ 
+          begin
+             CPU_ZERO (Size, CPU_Set);
+ 
+             --  Set the affinity to all the processors belonging to the
+             --  dispatching domain.
+ 
+             for Proc in T.Common.Domain'Range loop
+                if T.Common.Domain (Proc) then
+                   System.OS_Interface.CPU_SET (int (Proc), Size, CPU_Set);
+                end if;
+             end loop;
+ 
+             Result :=
+               pthread_attr_setaffinity_np (Thread_Attr'Access, Size, CPU_Set);
+             pragma Assert (Result = 0);
+ 
+             CPU_FREE (CPU_Set);
+          end;
+       end if;
+ 
+       --  Since the initial signal mask of a thread is inherited from the
+       --  creator, and the Environment task has all its signals masked, we
+       --  do not need to manipulate caller's signal mask at this point.
+       --  All tasks in RTS will have All_Tasks_Mask initially.
+ 
+       --  Note: the use of Unrestricted_Access in the following call is needed
+       --  because otherwise we have an error of getting a access-to-volatile
+       --  value which points to a non-volatile object. But in this case it is
+       --  safe to do this, since we know we have no problems with aliasing and
+       --  Unrestricted_Access bypasses this check.
+ 
+       Result := pthread_create
+         (T.Common.LL.Thread'Unrestricted_Access,
+          Thread_Attr'Access,
+          Thread_Body_Access (Wrapper),
+          To_Address (T));
+ 
+       pragma Assert (Result in 0 | EAGAIN | ENOMEM);
+ 
+       if Result /= 0 then
+          Succeeded := False;
+          Result := pthread_attr_destroy (Thread_Attr'Access);
+          pragma Assert (Result = 0);
+          return;
+       end if;
+ 
+       Succeeded := True;
+ 
+       Result := pthread_attr_destroy (Thread_Attr'Access);
+       pragma Assert (Result = 0);
+ 
+       Set_Priority (T, Priority);
+    end Create_Task;
+ 
+    ------------------
+    -- Finalize_TCB --
+    ------------------
+ 
+    procedure Finalize_TCB (T : Task_Id) is
+       Result : C.int;
+ 
+    begin
+       if not Single_Lock then
+          Result := pthread_mutex_destroy (T.Common.LL.L'Access);
+          pragma Assert (Result = 0);
+       end if;
+ 
+       Result := pthread_cond_destroy (T.Common.LL.CV'Access);
+       pragma Assert (Result = 0);
+ 
+       if T.Known_Tasks_Index /= -1 then
+          Known_Tasks (T.Known_Tasks_Index) := null;
+       end if;
+ 
+       ATCB_Allocation.Free_ATCB (T);
+    end Finalize_TCB;
+ 
+    ---------------
+    -- Exit_Task --
+    ---------------
+ 
+    procedure Exit_Task is
+    begin
+       Specific.Set (null);
+    end Exit_Task;
+ 
+    ----------------
+    -- Abort_Task --
+    ----------------
+ 
+    procedure Abort_Task (T : Task_Id) is
+       Result : C.int;
+ 
+       ESRCH : constant := 3; -- No such process
+       --  It can happen that T has already vanished, in which case pthread_kill
+       --  returns ESRCH, so we don't consider that to be an error.
+ 
+    begin
+       if Abort_Handler_Installed then
+          Result :=
+            pthread_kill
+              (T.Common.LL.Thread,
+               Signal (System.Interrupt_Management.Abort_Task_Interrupt));
+          pragma Assert (Result in 0 | ESRCH);
+       end if;
+    end Abort_Task;
+ 
+    ----------------
+    -- Initialize --
+    ----------------
+ 
+    procedure Initialize (S : in out Suspension_Object) is
+       Result : C.int;
+ 
+    begin
+       --  Initialize internal state (always to False (RM D.10(6)))
+ 
+       S.State := False;
+       S.Waiting := False;
+ 
+       --  Initialize internal mutex
+ 
+       Result := pthread_mutex_init (S.L'Access, null);
+ 
+       pragma Assert (Result in 0 | ENOMEM);
+ 
+       if Result = ENOMEM then
+          raise Storage_Error;
+       end if;
+ 
+       --  Initialize internal condition variable
+ 
+       Result := pthread_cond_init (S.CV'Access, null);
+ 
+       pragma Assert (Result in 0 | ENOMEM);
+ 
+       if Result /= 0 then
+          Result := pthread_mutex_destroy (S.L'Access);
+          pragma Assert (Result = 0);
+ 
+          if Result = ENOMEM then
+             raise Storage_Error;
+          end if;
+       end if;
+    end Initialize;
+ 
+    --------------
+    -- Finalize --
+    --------------
+ 
+    procedure Finalize (S : in out Suspension_Object) is
+       Result : C.int;
+ 
+    begin
+       --  Destroy internal mutex
+ 
+       Result := pthread_mutex_destroy (S.L'Access);
+       pragma Assert (Result = 0);
+ 
+       --  Destroy internal condition variable
+ 
+       Result := pthread_cond_destroy (S.CV'Access);
+       pragma Assert (Result = 0);
+    end Finalize;
+ 
+    -------------------
+    -- Current_State --
+    -------------------
+ 
+    function Current_State (S : Suspension_Object) return Boolean is
+    begin
+       --  We do not want to use lock on this read operation. State is marked
+       --  as Atomic so that we ensure that the value retrieved is correct.
+ 
+       return S.State;
+    end Current_State;
+ 
+    ---------------
+    -- Set_False --
+    ---------------
+ 
+    procedure Set_False (S : in out Suspension_Object) is
+       Result : C.int;
+ 
+    begin
+       SSL.Abort_Defer.all;
+ 
+       Result := pthread_mutex_lock (S.L'Access);
+       pragma Assert (Result = 0);
+ 
+       S.State := False;
+ 
+       Result := pthread_mutex_unlock (S.L'Access);
+       pragma Assert (Result = 0);
+ 
+       SSL.Abort_Undefer.all;
+    end Set_False;
+ 
+    --------------
+    -- Set_True --
+    --------------
+ 
+    procedure Set_True (S : in out Suspension_Object) is
+       Result : C.int;
+ 
+    begin
+       SSL.Abort_Defer.all;
+ 
+       Result := pthread_mutex_lock (S.L'Access);
+       pragma Assert (Result = 0);
+ 
+       --  If there is already a task waiting on this suspension object then
+       --  we resume it, leaving the state of the suspension object to False,
+       --  as it is specified in ARM D.10 par. 9. Otherwise, it just leaves
+       --  the state to True.
+ 
+       if S.Waiting then
+          S.Waiting := False;
+          S.State := False;
+ 
+          Result := pthread_cond_signal (S.CV'Access);
+          pragma Assert (Result = 0);
+ 
+       else
+          S.State := True;
+       end if;
+ 
+       Result := pthread_mutex_unlock (S.L'Access);
+       pragma Assert (Result = 0);
+ 
+       SSL.Abort_Undefer.all;
+    end Set_True;
+ 
+    ------------------------
+    -- Suspend_Until_True --
+    ------------------------
+ 
+    procedure Suspend_Until_True (S : in out Suspension_Object) is
+       Result : C.int;
+ 
+    begin
+       SSL.Abort_Defer.all;
+ 
+       Result := pthread_mutex_lock (S.L'Access);
+       pragma Assert (Result = 0);
+ 
+       if S.Waiting then
+ 
+          --  Program_Error must be raised upon calling Suspend_Until_True
+          --  if another task is already waiting on that suspension object
+          --  (RM D.10(10)).
+ 
+          Result := pthread_mutex_unlock (S.L'Access);
+          pragma Assert (Result = 0);
+ 
+          SSL.Abort_Undefer.all;
+ 
+          raise Program_Error;
+ 
+       else
+          --  Suspend the task if the state is False. Otherwise, the task
+          --  continues its execution, and the state of the suspension object
+          --  is set to False (ARM D.10 par. 9).
+ 
+          if S.State then
+             S.State := False;
+          else
+             S.Waiting := True;
+ 
+             loop
+                --  Loop in case pthread_cond_wait returns earlier than expected
+                --  (e.g. in case of EINTR caused by a signal). This should not
+                --  happen with the current Linux implementation of pthread, but
+                --  POSIX does not guarantee it so this may change in future.
+ 
+                Result := pthread_cond_wait (S.CV'Access, S.L'Access);
+                pragma Assert (Result in 0 | EINTR);
+ 
+                exit when not S.Waiting;
+             end loop;
+          end if;
+ 
+          Result := pthread_mutex_unlock (S.L'Access);
+          pragma Assert (Result = 0);
+ 
+          SSL.Abort_Undefer.all;
+       end if;
+    end Suspend_Until_True;
+ 
+    ----------------
+    -- Check_Exit --
+    ----------------
+ 
+    --  Dummy version
+ 
+    function Check_Exit (Self_ID : ST.Task_Id) return Boolean is
+       pragma Unreferenced (Self_ID);
+    begin
+       return True;
+    end Check_Exit;
+ 
+    --------------------
+    -- Check_No_Locks --
+    --------------------
+ 
+    function Check_No_Locks (Self_ID : ST.Task_Id) return Boolean is
+       pragma Unreferenced (Self_ID);
+    begin
+       return True;
+    end Check_No_Locks;
+ 
+    ----------------------
+    -- Environment_Task --
+    ----------------------
+ 
+    function Environment_Task return Task_Id is
+    begin
+       return Environment_Task_Id;
+    end Environment_Task;
+ 
+    ------------------
+    -- Suspend_Task --
+    ------------------
+ 
+    function Suspend_Task
+      (T           : ST.Task_Id;
+       Thread_Self : Thread_Id) return Boolean
+    is
+    begin
+       if T.Common.LL.Thread /= Thread_Self then
+          return pthread_kill (T.Common.LL.Thread, SIGSTOP) = 0;
+       else
+          return True;
+       end if;
+    end Suspend_Task;
+ 
+    -----------------
+    -- Resume_Task --
+    -----------------
+ 
+    function Resume_Task
+      (T           : ST.Task_Id;
+       Thread_Self : Thread_Id) return Boolean
+    is
+    begin
+       if T.Common.LL.Thread /= Thread_Self then
+          return pthread_kill (T.Common.LL.Thread, SIGCONT) = 0;
+       else
+          return True;
+       end if;
+    end Resume_Task;
+ 
+    --------------------
+    -- Stop_All_Tasks --
+    --------------------
+ 
+    procedure Stop_All_Tasks is
+    begin
+       null;
+    end Stop_All_Tasks;
+ 
+    ---------------
+    -- Stop_Task --
+    ---------------
+ 
+    function Stop_Task (T : ST.Task_Id) return Boolean is
+       pragma Unreferenced (T);
+    begin
+       return False;
+    end Stop_Task;
+ 
+    -------------------
+    -- Continue_Task --
+    -------------------
+ 
+    function Continue_Task (T : ST.Task_Id) return Boolean is
+       pragma Unreferenced (T);
+    begin
+       return False;
+    end Continue_Task;
+ 
+    ----------------
+    -- Initialize --
+    ----------------
+ 
+    procedure Initialize (Environment_Task : Task_Id) is
+       act     : aliased struct_sigaction;
+       old_act : aliased struct_sigaction;
+       Tmp_Set : aliased sigset_t;
+       Result  : C.int;
+       --  Whether to use an alternate signal stack for stack overflows
+ 
+       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
+       --    'u'   Interrupt_State pragma set state to User
+       --    'r'   Interrupt_State pragma set state to Runtime
+       --    's'   Interrupt_State pragma set state to System (use "default"
+       --           system handler)
+ 
+    begin
+       Environment_Task_Id := Environment_Task;
+ 
+       Interrupt_Management.Initialize;
+ 
+       --  Prepare the set of signals that should be unblocked in all tasks
+ 
+       Result := sigemptyset (Unblocked_Signal_Mask'Access);
+       pragma Assert (Result = 0);
+ 
+       for J in Interrupt_Management.Interrupt_ID loop
+          if System.Interrupt_Management.Keep_Unmasked (J) then
+             Result := sigaddset (Unblocked_Signal_Mask'Access, Signal (J));
+             pragma Assert (Result = 0);
+          end if;
+       end loop;
+ 
+       Initialize_Lock (Single_RTS_Lock'Access, RTS_Lock_Level);
+ 
+       --  Initialize the global RTS lock
+ 
+       Specific.Initialize (Environment_Task);
+ 
+       if Use_Alternate_Stack then
+          Environment_Task.Common.Task_Alternate_Stack :=
+            Alternate_Stack'Address;
+       end if;
+ 
+       --  Make environment task known here because it doesn't go through
+       --  Activate_Tasks, which does it for all other tasks.
+ 
+       Known_Tasks (Known_Tasks'First) := Environment_Task;
+       Environment_Task.Known_Tasks_Index := Known_Tasks'First;
+ 
+       Enter_Task (Environment_Task);
+ 
+       if State
+           (System.Interrupt_Management.Abort_Task_Interrupt) /= Default
+       then
+          act.sa_flags := 0;
+          act.sa_handler := Abort_Handler'Address;
+ 
+          Result := sigemptyset (Tmp_Set'Access);
+          pragma Assert (Result = 0);
+          act.sa_mask := Tmp_Set;
+ 
+          Result :=
+            sigaction
+            (Signal (Interrupt_Management.Abort_Task_Interrupt),
+             act'Unchecked_Access,
+             old_act'Unchecked_Access);
+          pragma Assert (Result = 0);
+          Abort_Handler_Installed := True;
+       end if;
+ 
+       --  pragma CPU and dispatching domains for the environment task
+ 
+       Set_Task_Affinity (Environment_Task);
+    end Initialize;
+ 
+    -----------------------
+    -- Set_Task_Affinity --
+    -----------------------
+ 
+    procedure Set_Task_Affinity (T : ST.Task_Id) is
+       use type Multiprocessors.CPU_Range;
+ 
+    begin
+       --  Do nothing if there is no support for setting affinities or the
+       --  underlying thread has not yet been created. If the thread has not
+       --  yet been created then the proper affinity will be set during its
+       --  creation.
+ 
+       if pthread_setaffinity_np'Address /= Null_Address
+         and then T.Common.LL.Thread /= Null_Thread_Id
+       then
+          declare
+             CPUs    : constant size_t :=
+                         C.size_t (Multiprocessors.Number_Of_CPUs);
+             CPU_Set : cpu_set_t_ptr := null;
+             Size    : constant size_t := CPU_ALLOC_SIZE (CPUs);
+ 
+             Result  : C.int;
+ 
+          begin
+             --  We look at the specific CPU (Base_CPU) first, then at the
+             --  Task_Info field, and finally at the assigned dispatching
+             --  domain, if any.
+ 
+             if T.Common.Base_CPU /= Multiprocessors.Not_A_Specific_CPU then
+ 
+                --  Set the affinity to an unique CPU
+ 
+                CPU_Set := CPU_ALLOC (CPUs);
+                System.OS_Interface.CPU_ZERO (Size, CPU_Set);
+                System.OS_Interface.CPU_SET
+                  (int (T.Common.Base_CPU), Size, CPU_Set);
+ 
+             --  Handle Task_Info
+ 
+             elsif T.Common.Task_Info /= null then
+                CPU_Set := T.Common.Task_Info.CPU_Affinity'Access;
+ 
+             --  Handle dispatching domains
+ 
+             elsif T.Common.Domain /= null and then
+               (T.Common.Domain /= ST.System_Domain
+                 or else T.Common.Domain.all /=
+                           (Multiprocessors.CPU'First ..
+                            Multiprocessors.Number_Of_CPUs => True))
+             then
+                --  Set the affinity to all the processors belonging to the
+                --  dispatching domain. To avoid changing CPU affinities when
+                --  not needed, we set the affinity only when assigning to a
+                --  domain other than the default one, or when the default one
+                --  has been modified.
+ 
+                CPU_Set := CPU_ALLOC (CPUs);
+                System.OS_Interface.CPU_ZERO (Size, CPU_Set);
+ 
+                for Proc in T.Common.Domain'Range loop
+                   if T.Common.Domain (Proc) then
+                      System.OS_Interface.CPU_SET (int (Proc), Size, CPU_Set);
+                   end if;
+                end loop;
+             end if;
+ 
+             --  We set the new affinity if needed. Otherwise, the new task
+             --  will inherit its creator's CPU affinity mask (according to
+             --  the documentation of pthread_setaffinity_np), which is
+             --  consistent with Ada's required semantics.
+ 
+             if CPU_Set /= null then
+                Result :=
+                  pthread_setaffinity_np (T.Common.LL.Thread, Size, CPU_Set);
+                pragma Assert (Result = 0);
+ 
+                CPU_FREE (CPU_Set);
+             end if;
+          end;
+       end if;
+    end Set_Task_Affinity;
+ 
+ end System.Task_Primitives.Operations;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-taprop__mingw.adb gcc-8.1.0/gcc/ada/libgnarl/s-taprop__mingw.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-taprop__mingw.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-taprop__mingw.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,1421 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --     S Y S T E M . T A S K _ P R I M I T I V E S . O P E R A T I O N S    --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is a NT (native) version of this package
+ 
+ --  This package contains all the GNULL primitives that interface directly with
+ --  the underlying OS.
+ 
+ pragma Polling (Off);
+ --  Turn off polling, we do not want ATC polling to take place during tasking
+ --  operations. It causes infinite loops and other problems.
+ 
+ with Interfaces.C;
+ with Interfaces.C.Strings;
+ 
+ with System.Float_Control;
+ with System.Interrupt_Management;
+ with System.Multiprocessors;
+ with System.OS_Primitives;
+ with System.Task_Info;
+ with System.Tasking.Debug;
+ with System.Win32.Ext;
+ 
+ with System.Soft_Links;
+ --  We use System.Soft_Links instead of System.Tasking.Initialization because
+ --  the later is a higher level package that we shouldn't depend on. For
+ --  example when using the restricted run time, it is replaced by
+ --  System.Tasking.Restricted.Stages.
+ 
+ package body System.Task_Primitives.Operations is
+ 
+    package SSL renames System.Soft_Links;
+ 
+    use Interfaces.C;
+    use Interfaces.C.Strings;
+    use System.OS_Interface;
+    use System.OS_Primitives;
+    use System.Parameters;
+    use System.Task_Info;
+    use System.Tasking;
+    use System.Tasking.Debug;
+    use System.Win32;
+    use System.Win32.Ext;
+ 
+    pragma Link_With ("-Xlinker --stack=0x200000,0x1000");
+    --  Change the default stack size (2 MB) for tasking programs on Windows.
+    --  This allows about 1000 tasks running at the same time. Note that
+    --  we set the stack size for non tasking programs on System unit.
+    --  Also note that under Windows XP, we use a Windows XP extension to
+    --  specify the stack size on a per task basis, as done under other OSes.
+ 
+    ---------------------
+    -- Local Functions --
+    ---------------------
+ 
+    procedure InitializeCriticalSection (pCriticalSection : access RTS_Lock);
+    procedure InitializeCriticalSection
+      (pCriticalSection : access CRITICAL_SECTION);
+    pragma Import
+      (Stdcall, InitializeCriticalSection, "InitializeCriticalSection");
+ 
+    procedure EnterCriticalSection (pCriticalSection : access RTS_Lock);
+    procedure EnterCriticalSection
+      (pCriticalSection : access CRITICAL_SECTION);
+    pragma Import (Stdcall, EnterCriticalSection, "EnterCriticalSection");
+ 
+    procedure LeaveCriticalSection (pCriticalSection : access RTS_Lock);
+    procedure LeaveCriticalSection (pCriticalSection : access CRITICAL_SECTION);
+    pragma Import (Stdcall, LeaveCriticalSection, "LeaveCriticalSection");
+ 
+    procedure DeleteCriticalSection (pCriticalSection : access RTS_Lock);
+    procedure DeleteCriticalSection
+      (pCriticalSection : access CRITICAL_SECTION);
+    pragma Import (Stdcall, DeleteCriticalSection, "DeleteCriticalSection");
+ 
+    ----------------
+    -- Local Data --
+    ----------------
+ 
+    Environment_Task_Id : Task_Id;
+    --  A variable to hold Task_Id for the environment task
+ 
+    Single_RTS_Lock : aliased RTS_Lock;
+    --  This is a lock to allow only one thread of control in the RTS at
+    --  a time; it is used to execute in mutual exclusion from all other tasks.
+    --  Used mainly in Single_Lock mode, but also to protect All_Tasks_List
+ 
+    Time_Slice_Val : Integer;
+    pragma Import (C, Time_Slice_Val, "__gl_time_slice_val");
+ 
+    Dispatching_Policy : Character;
+    pragma Import (C, Dispatching_Policy, "__gl_task_dispatching_policy");
+ 
+    function Get_Policy (Prio : System.Any_Priority) return Character;
+    pragma Import (C, Get_Policy, "__gnat_get_specific_dispatching");
+    --  Get priority specific dispatching policy
+ 
+    Foreign_Task_Elaborated : aliased Boolean := True;
+    --  Used to identified fake tasks (i.e., non-Ada Threads)
+ 
+    Null_Thread_Id : constant Thread_Id := 0;
+    --  Constant to indicate that the thread identifier has not yet been
+    --  initialized.
+ 
+    ------------------------------------
+    -- The thread local storage index --
+    ------------------------------------
+ 
+    TlsIndex : DWORD;
+    pragma Export (Ada, TlsIndex);
+    --  To ensure that this variable won't be local to this package, since
+    --  in some cases, inlining forces this variable to be global anyway.
+ 
+    --------------------
+    -- Local Packages --
+    --------------------
+ 
+    package Specific is
+ 
+       function Is_Valid_Task return Boolean;
+       pragma Inline (Is_Valid_Task);
+       --  Does executing thread have a TCB?
+ 
+       procedure Set (Self_Id : Task_Id);
+       pragma Inline (Set);
+       --  Set the self id for the current task
+ 
+    end Specific;
+ 
+    package body Specific is
+ 
+       -------------------
+       -- Is_Valid_Task --
+       -------------------
+ 
+       function Is_Valid_Task return Boolean is
+       begin
+          return TlsGetValue (TlsIndex) /= System.Null_Address;
+       end Is_Valid_Task;
+ 
+       ---------
+       -- Set --
+       ---------
+ 
+       procedure Set (Self_Id : Task_Id) is
+          Succeeded : BOOL;
+       begin
+          Succeeded := TlsSetValue (TlsIndex, To_Address (Self_Id));
+          pragma Assert (Succeeded = Win32.TRUE);
+       end Set;
+ 
+    end Specific;
+ 
+    ----------------------------------
+    -- ATCB allocation/deallocation --
+    ----------------------------------
+ 
+    package body ATCB_Allocation is separate;
+    --  The body of this package is shared across several targets
+ 
+    ---------------------------------
+    -- Support for foreign threads --
+    ---------------------------------
+ 
+    function Register_Foreign_Thread
+      (Thread         : Thread_Id;
+       Sec_Stack_Size : Size_Type := Unspecified_Size) return Task_Id;
+    --  Allocate and initialize a new ATCB for the current Thread. The size of
+    --  the secondary stack can be optionally specified.
+ 
+    function Register_Foreign_Thread
+      (Thread         : Thread_Id;
+       Sec_Stack_Size : Size_Type := Unspecified_Size)
+      return Task_Id is separate;
+ 
+    ----------------------------------
+    -- Condition Variable Functions --
+    ----------------------------------
+ 
+    procedure Initialize_Cond (Cond : not null access Condition_Variable);
+    --  Initialize given condition variable Cond
+ 
+    procedure Finalize_Cond (Cond : not null access Condition_Variable);
+    --  Finalize given condition variable Cond
+ 
+    procedure Cond_Signal (Cond : not null access Condition_Variable);
+    --  Signal condition variable Cond
+ 
+    procedure Cond_Wait
+      (Cond : not null access Condition_Variable;
+       L    : not null access RTS_Lock);
+    --  Wait on conditional variable Cond, using lock L
+ 
+    procedure Cond_Timed_Wait
+      (Cond      : not null access Condition_Variable;
+       L         : not null access RTS_Lock;
+       Rel_Time  : Duration;
+       Timed_Out : out Boolean;
+       Status    : out Integer);
+    --  Do timed wait on condition variable Cond using lock L. The duration
+    --  of the timed wait is given by Rel_Time. When the condition is
+    --  signalled, Timed_Out shows whether or not a time out occurred.
+    --  Status is only valid if Timed_Out is False, in which case it
+    --  shows whether Cond_Timed_Wait completed successfully.
+ 
+    ---------------------
+    -- Initialize_Cond --
+    ---------------------
+ 
+    procedure Initialize_Cond (Cond : not null access Condition_Variable) is
+       hEvent : HANDLE;
+    begin
+       hEvent := CreateEvent (null, Win32.TRUE, Win32.FALSE, Null_Ptr);
+       pragma Assert (hEvent /= 0);
+       Cond.all := Condition_Variable (hEvent);
+    end Initialize_Cond;
+ 
+    -------------------
+    -- Finalize_Cond --
+    -------------------
+ 
+    --  No such problem here, DosCloseEventSem has been derived.
+    --  What does such refer to in above comment???
+ 
+    procedure Finalize_Cond (Cond : not null access Condition_Variable) is
+       Result : BOOL;
+    begin
+       Result := CloseHandle (HANDLE (Cond.all));
+       pragma Assert (Result = Win32.TRUE);
+    end Finalize_Cond;
+ 
+    -----------------
+    -- Cond_Signal --
+    -----------------
+ 
+    procedure Cond_Signal (Cond : not null access Condition_Variable) is
+       Result : BOOL;
+    begin
+       Result := SetEvent (HANDLE (Cond.all));
+       pragma Assert (Result = Win32.TRUE);
+    end Cond_Signal;
+ 
+    ---------------
+    -- Cond_Wait --
+    ---------------
+ 
+    --  Pre-condition: Cond is posted
+    --                 L is locked.
+ 
+    --  Post-condition: Cond is posted
+    --                  L is locked.
+ 
+    procedure Cond_Wait
+      (Cond : not null access Condition_Variable;
+       L    : not null access RTS_Lock)
+    is
+       Result      : DWORD;
+       Result_Bool : BOOL;
+ 
+    begin
+       --  Must reset Cond BEFORE L is unlocked
+ 
+       Result_Bool := ResetEvent (HANDLE (Cond.all));
+       pragma Assert (Result_Bool = Win32.TRUE);
+       Unlock (L, Global_Lock => True);
+ 
+       --  No problem if we are interrupted here: if the condition is signaled,
+       --  WaitForSingleObject will simply not block
+ 
+       Result := WaitForSingleObject (HANDLE (Cond.all), Wait_Infinite);
+       pragma Assert (Result = 0);
+ 
+       Write_Lock (L, Global_Lock => True);
+    end Cond_Wait;
+ 
+    ---------------------
+    -- Cond_Timed_Wait --
+    ---------------------
+ 
+    --  Pre-condition: Cond is posted
+    --                 L is locked.
+ 
+    --  Post-condition: Cond is posted
+    --                  L is locked.
+ 
+    procedure Cond_Timed_Wait
+      (Cond      : not null access Condition_Variable;
+       L         : not null access RTS_Lock;
+       Rel_Time  : Duration;
+       Timed_Out : out Boolean;
+       Status    : out Integer)
+    is
+       Time_Out_Max : constant DWORD := 16#FFFF0000#;
+       --  NT 4 can't handle excessive timeout values (e.g. DWORD'Last - 1)
+ 
+       Time_Out    : DWORD;
+       Result      : BOOL;
+       Wait_Result : DWORD;
+ 
+    begin
+       --  Must reset Cond BEFORE L is unlocked
+ 
+       Result := ResetEvent (HANDLE (Cond.all));
+       pragma Assert (Result = Win32.TRUE);
+       Unlock (L, Global_Lock => True);
+ 
+       --  No problem if we are interrupted here: if the condition is signaled,
+       --  WaitForSingleObject will simply not block.
+ 
+       if Rel_Time <= 0.0 then
+          Timed_Out := True;
+          Wait_Result := 0;
+ 
+       else
+          Time_Out :=
+            (if Rel_Time >= Duration (Time_Out_Max) / 1000
+             then Time_Out_Max
+             else DWORD (Rel_Time * 1000));
+ 
+          Wait_Result := WaitForSingleObject (HANDLE (Cond.all), Time_Out);
+ 
+          if Wait_Result = WAIT_TIMEOUT then
+             Timed_Out := True;
+             Wait_Result := 0;
+          else
+             Timed_Out := False;
+          end if;
+       end if;
+ 
+       Write_Lock (L, Global_Lock => True);
+ 
+       --  Ensure post-condition
+ 
+       if Timed_Out then
+          Result := SetEvent (HANDLE (Cond.all));
+          pragma Assert (Result = Win32.TRUE);
+       end if;
+ 
+       Status := Integer (Wait_Result);
+    end Cond_Timed_Wait;
+ 
+    ------------------
+    -- Stack_Guard  --
+    ------------------
+ 
+    --  The underlying thread system sets a guard page at the bottom of a thread
+    --  stack, so nothing is needed.
+    --  ??? Check the comment above
+ 
+    procedure Stack_Guard (T : ST.Task_Id; On : Boolean) is
+       pragma Unreferenced (T, On);
+    begin
+       null;
+    end Stack_Guard;
+ 
+    --------------------
+    -- Get_Thread_Id  --
+    --------------------
+ 
+    function Get_Thread_Id (T : ST.Task_Id) return OSI.Thread_Id is
+    begin
+       return T.Common.LL.Thread;
+    end Get_Thread_Id;
+ 
+    ----------
+    -- Self --
+    ----------
+ 
+    function Self return Task_Id is
+       Self_Id : constant Task_Id := To_Task_Id (TlsGetValue (TlsIndex));
+    begin
+       if Self_Id = null then
+          return Register_Foreign_Thread (GetCurrentThread);
+       else
+          return Self_Id;
+       end if;
+    end Self;
+ 
+    ---------------------
+    -- Initialize_Lock --
+    ---------------------
+ 
+    --  Note: mutexes and cond_variables needed per-task basis are initialized
+    --  in Initialize_TCB and the Storage_Error is handled. Other mutexes (such
+    --  as RTS_Lock, Memory_Lock...) used in the RTS is initialized before any
+    --  status change of RTS. Therefore raising Storage_Error in the following
+    --  routines should be able to be handled safely.
+ 
+    procedure Initialize_Lock
+      (Prio : System.Any_Priority;
+       L    : not null access Lock)
+    is
+    begin
+       InitializeCriticalSection (L.Mutex'Access);
+       L.Owner_Priority := 0;
+       L.Priority := Prio;
+    end Initialize_Lock;
+ 
+    procedure Initialize_Lock
+      (L : not null access RTS_Lock; Level : Lock_Level)
+    is
+       pragma Unreferenced (Level);
+    begin
+       InitializeCriticalSection (L);
+    end Initialize_Lock;
+ 
+    -------------------
+    -- Finalize_Lock --
+    -------------------
+ 
+    procedure Finalize_Lock (L : not null access Lock) is
+    begin
+       DeleteCriticalSection (L.Mutex'Access);
+    end Finalize_Lock;
+ 
+    procedure Finalize_Lock (L : not null access RTS_Lock) is
+    begin
+       DeleteCriticalSection (L);
+    end Finalize_Lock;
+ 
+    ----------------
+    -- Write_Lock --
+    ----------------
+ 
+    procedure Write_Lock
+      (L : not null access Lock; Ceiling_Violation : out Boolean) is
+    begin
+       L.Owner_Priority := Get_Priority (Self);
+ 
+       if L.Priority < L.Owner_Priority then
+          Ceiling_Violation := True;
+          return;
+       end if;
+ 
+       EnterCriticalSection (L.Mutex'Access);
+ 
+       Ceiling_Violation := False;
+    end Write_Lock;
+ 
+    procedure Write_Lock
+      (L           : not null access RTS_Lock;
+       Global_Lock : Boolean := False)
+    is
+    begin
+       if not Single_Lock or else Global_Lock then
+          EnterCriticalSection (L);
+       end if;
+    end Write_Lock;
+ 
+    procedure Write_Lock (T : Task_Id) is
+    begin
+       if not Single_Lock then
+          EnterCriticalSection (T.Common.LL.L'Access);
+       end if;
+    end Write_Lock;
+ 
+    ---------------
+    -- Read_Lock --
+    ---------------
+ 
+    procedure Read_Lock
+      (L : not null access Lock; Ceiling_Violation : out Boolean) is
+    begin
+       Write_Lock (L, Ceiling_Violation);
+    end Read_Lock;
+ 
+    ------------
+    -- Unlock --
+    ------------
+ 
+    procedure Unlock (L : not null access Lock) is
+    begin
+       LeaveCriticalSection (L.Mutex'Access);
+    end Unlock;
+ 
+    procedure Unlock
+      (L : not null access RTS_Lock; Global_Lock : Boolean := False) is
+    begin
+       if not Single_Lock or else Global_Lock then
+          LeaveCriticalSection (L);
+       end if;
+    end Unlock;
+ 
+    procedure Unlock (T : Task_Id) is
+    begin
+       if not Single_Lock then
+          LeaveCriticalSection (T.Common.LL.L'Access);
+       end if;
+    end Unlock;
+ 
+    -----------------
+    -- Set_Ceiling --
+    -----------------
+ 
+    --  Dynamic priority ceilings are not supported by the underlying system
+ 
+    procedure Set_Ceiling
+      (L    : not null access Lock;
+       Prio : System.Any_Priority)
+    is
+       pragma Unreferenced (L, Prio);
+    begin
+       null;
+    end Set_Ceiling;
+ 
+    -----------
+    -- Sleep --
+    -----------
+ 
+    procedure Sleep
+      (Self_ID : Task_Id;
+       Reason  : System.Tasking.Task_States)
+    is
+       pragma Unreferenced (Reason);
+ 
+    begin
+       pragma Assert (Self_ID = Self);
+ 
+       if Single_Lock then
+          Cond_Wait (Self_ID.Common.LL.CV'Access, Single_RTS_Lock'Access);
+       else
+          Cond_Wait (Self_ID.Common.LL.CV'Access, Self_ID.Common.LL.L'Access);
+       end if;
+ 
+       if Self_ID.Deferral_Level = 0
+         and then Self_ID.Pending_ATC_Level < Self_ID.ATC_Nesting_Level
+       then
+          Unlock (Self_ID);
+          raise Standard'Abort_Signal;
+       end if;
+    end Sleep;
+ 
+    -----------------
+    -- Timed_Sleep --
+    -----------------
+ 
+    --  This is for use within the run-time system, so abort is assumed to be
+    --  already deferred, and the caller should be holding its own ATCB lock.
+ 
+    procedure Timed_Sleep
+      (Self_ID  : Task_Id;
+       Time     : Duration;
+       Mode     : ST.Delay_Modes;
+       Reason   : System.Tasking.Task_States;
+       Timedout : out Boolean;
+       Yielded  : out Boolean)
+    is
+       pragma Unreferenced (Reason);
+       Check_Time : Duration := Monotonic_Clock;
+       Rel_Time   : Duration;
+       Abs_Time   : Duration;
+ 
+       Result : Integer;
+       pragma Unreferenced (Result);
+ 
+       Local_Timedout : Boolean;
+ 
+    begin
+       Timedout := True;
+       Yielded  := False;
+ 
+       if Mode = Relative then
+          Rel_Time := Time;
+          Abs_Time := Duration'Min (Time, Max_Sensible_Delay) + Check_Time;
+       else
+          Rel_Time := Time - Check_Time;
+          Abs_Time := Time;
+       end if;
+ 
+       if Rel_Time > 0.0 then
+          loop
+             exit when Self_ID.Pending_ATC_Level < Self_ID.ATC_Nesting_Level;
+ 
+             if Single_Lock then
+                Cond_Timed_Wait
+                  (Self_ID.Common.LL.CV'Access,
+                   Single_RTS_Lock'Access,
+                   Rel_Time, Local_Timedout, Result);
+             else
+                Cond_Timed_Wait
+                  (Self_ID.Common.LL.CV'Access,
+                   Self_ID.Common.LL.L'Access,
+                   Rel_Time, Local_Timedout, Result);
+             end if;
+ 
+             Check_Time := Monotonic_Clock;
+             exit when Abs_Time <= Check_Time;
+ 
+             if not Local_Timedout then
+ 
+                --  Somebody may have called Wakeup for us
+ 
+                Timedout := False;
+                exit;
+             end if;
+ 
+             Rel_Time := Abs_Time - Check_Time;
+          end loop;
+       end if;
+    end Timed_Sleep;
+ 
+    -----------------
+    -- Timed_Delay --
+    -----------------
+ 
+    procedure Timed_Delay
+      (Self_ID : Task_Id;
+       Time    : Duration;
+       Mode    : ST.Delay_Modes)
+    is
+       Check_Time : Duration := Monotonic_Clock;
+       Rel_Time   : Duration;
+       Abs_Time   : Duration;
+ 
+       Timedout : Boolean;
+       Result   : Integer;
+       pragma Unreferenced (Timedout, Result);
+ 
+    begin
+       if Single_Lock then
+          Lock_RTS;
+       end if;
+ 
+       Write_Lock (Self_ID);
+ 
+       if Mode = Relative then
+          Rel_Time := Time;
+          Abs_Time := Time + Check_Time;
+       else
+          Rel_Time := Time - Check_Time;
+          Abs_Time := Time;
+       end if;
+ 
+       if Rel_Time > 0.0 then
+          Self_ID.Common.State := Delay_Sleep;
+ 
+          loop
+             exit when Self_ID.Pending_ATC_Level < Self_ID.ATC_Nesting_Level;
+ 
+             if Single_Lock then
+                Cond_Timed_Wait
+                  (Self_ID.Common.LL.CV'Access,
+                   Single_RTS_Lock'Access,
+                   Rel_Time, Timedout, Result);
+             else
+                Cond_Timed_Wait
+                  (Self_ID.Common.LL.CV'Access,
+                   Self_ID.Common.LL.L'Access,
+                   Rel_Time, Timedout, Result);
+             end if;
+ 
+             Check_Time := Monotonic_Clock;
+             exit when Abs_Time <= Check_Time;
+ 
+             Rel_Time := Abs_Time - Check_Time;
+          end loop;
+ 
+          Self_ID.Common.State := Runnable;
+       end if;
+ 
+       Unlock (Self_ID);
+ 
+       if Single_Lock then
+          Unlock_RTS;
+       end if;
+ 
+       Yield;
+    end Timed_Delay;
+ 
+    ------------
+    -- Wakeup --
+    ------------
+ 
+    procedure Wakeup (T : Task_Id; Reason : System.Tasking.Task_States) is
+       pragma Unreferenced (Reason);
+    begin
+       Cond_Signal (T.Common.LL.CV'Access);
+    end Wakeup;
+ 
+    -----------
+    -- Yield --
+    -----------
+ 
+    procedure Yield (Do_Yield : Boolean := True) is
+    begin
+       --  Note: in a previous implementation if Do_Yield was False, then we
+       --  introduced a delay of 1 millisecond in an attempt to get closer to
+       --  annex D semantics, and in particular to make ACATS CXD8002 pass. But
+       --  this change introduced a huge performance regression evaluating the
+       --  Count attribute. So we decided to remove this processing.
+ 
+       --  Moreover, CXD8002 appears to pass on Windows (although we do not
+       --  guarantee full Annex D compliance on Windows in any case).
+ 
+       if Do_Yield then
+          SwitchToThread;
+       end if;
+    end Yield;
+ 
+    ------------------
+    -- Set_Priority --
+    ------------------
+ 
+    procedure Set_Priority
+      (T                   : Task_Id;
+       Prio                : System.Any_Priority;
+       Loss_Of_Inheritance : Boolean := False)
+    is
+       Res : BOOL;
+       pragma Unreferenced (Loss_Of_Inheritance);
+ 
+    begin
+       Res :=
+         SetThreadPriority
+           (T.Common.LL.Thread,
+            Interfaces.C.int (Underlying_Priorities (Prio)));
+       pragma Assert (Res = Win32.TRUE);
+ 
+       --  Note: Annex D (RM D.2.3(5/2)) requires the task to be placed at the
+       --  head of its priority queue when decreasing its priority as a result
+       --  of a loss of inherited priority. This is not the case, but we
+       --  consider it an acceptable variation (RM 1.1.3(6)), given this is
+       --  the built-in behavior offered by the Windows operating system.
+ 
+       --  In older versions we attempted to better approximate the Annex D
+       --  required behavior, but this simulation was not entirely accurate,
+       --  and it seems better to live with the standard Windows semantics.
+ 
+       T.Common.Current_Priority := Prio;
+    end Set_Priority;
+ 
+    ------------------
+    -- Get_Priority --
+    ------------------
+ 
+    function Get_Priority (T : Task_Id) return System.Any_Priority is
+    begin
+       return T.Common.Current_Priority;
+    end Get_Priority;
+ 
+    ----------------
+    -- Enter_Task --
+    ----------------
+ 
+    --  There were two paths were we needed to call Enter_Task :
+    --  1) from System.Task_Primitives.Operations.Initialize
+    --  2) from System.Tasking.Stages.Task_Wrapper
+ 
+    --  The pseudo handle (LL.Thread) need not be closed when it is no
+    --  longer needed. Calling the CloseHandle function with this handle
+    --  has no effect.
+ 
+    procedure Enter_Task (Self_ID : Task_Id) is
+       procedure Get_Stack_Bounds (Base : Address; Limit : Address);
+       pragma Import (C, Get_Stack_Bounds, "__gnat_get_stack_bounds");
+       --  Get stack boundaries
+    begin
+       Specific.Set (Self_ID);
+ 
+       --  Properly initializes the FPU for x86 systems
+ 
+       System.Float_Control.Reset;
+ 
+       if Self_ID.Common.Task_Info /= null
+         and then
+           Self_ID.Common.Task_Info.CPU >= CPU_Number (Number_Of_Processors)
+       then
+          raise Invalid_CPU_Number;
+       end if;
+ 
+       --  Initialize the thread here only if not set. This is done for a
+       --  foreign task but is not needed when a real thread-id is already
+       --  set in Create_Task. Note that we do want to keep the real thread-id
+       --  as it is the only way to free the associated resource. Another way
+       --  to say this is that a pseudo thread-id from a foreign thread won't
+       --  allow for freeing resources.
+ 
+       if Self_ID.Common.LL.Thread = Null_Thread_Id then
+          Self_ID.Common.LL.Thread := GetCurrentThread;
+       end if;
+ 
+       Self_ID.Common.LL.Thread_Id := GetCurrentThreadId;
+ 
+       Get_Stack_Bounds
+         (Self_ID.Common.Compiler_Data.Pri_Stack_Info.Base'Address,
+          Self_ID.Common.Compiler_Data.Pri_Stack_Info.Limit'Address);
+    end Enter_Task;
+ 
+    -------------------
+    -- Is_Valid_Task --
+    -------------------
+ 
+    function Is_Valid_Task return Boolean renames Specific.Is_Valid_Task;
+ 
+    -----------------------------
+    -- Register_Foreign_Thread --
+    -----------------------------
+ 
+    function Register_Foreign_Thread return Task_Id is
+    begin
+       if Is_Valid_Task then
+          return Self;
+       else
+          return Register_Foreign_Thread (GetCurrentThread);
+       end if;
+    end Register_Foreign_Thread;
+ 
+    --------------------
+    -- Initialize_TCB --
+    --------------------
+ 
+    procedure Initialize_TCB (Self_ID : Task_Id; Succeeded : out Boolean) is
+    begin
+       --  Initialize thread ID to 0, this is needed to detect threads that
+       --  are not yet activated.
+ 
+       Self_ID.Common.LL.Thread := Null_Thread_Id;
+ 
+       Initialize_Cond (Self_ID.Common.LL.CV'Access);
+ 
+       if not Single_Lock then
+          Initialize_Lock (Self_ID.Common.LL.L'Access, ATCB_Level);
+       end if;
+ 
+       Succeeded := True;
+    end Initialize_TCB;
+ 
+    -----------------
+    -- Create_Task --
+    -----------------
+ 
+    procedure Create_Task
+      (T          : Task_Id;
+       Wrapper    : System.Address;
+       Stack_Size : System.Parameters.Size_Type;
+       Priority   : System.Any_Priority;
+       Succeeded  : out Boolean)
+    is
+       Initial_Stack_Size : constant := 1024;
+       --  We set the initial stack size to 1024. On Windows version prior to XP
+       --  there is no way to fix a task stack size. Only the initial stack size
+       --  can be set, the operating system will raise the task stack size if
+       --  needed.
+ 
+       function Is_Windows_XP return Integer;
+       pragma Import (C, Is_Windows_XP, "__gnat_is_windows_xp");
+       --  Returns 1 if running on Windows XP
+ 
+       hTask          : HANDLE;
+       TaskId         : aliased DWORD;
+       pTaskParameter : Win32.PVOID;
+       Result         : DWORD;
+       Entry_Point    : PTHREAD_START_ROUTINE;
+ 
+       use type System.Multiprocessors.CPU_Range;
+ 
+    begin
+       --  Check whether both Dispatching_Domain and CPU are specified for the
+       --  task, and the CPU value is not contained within the range of
+       --  processors for the domain.
+ 
+       if T.Common.Domain /= null
+         and then T.Common.Base_CPU /= System.Multiprocessors.Not_A_Specific_CPU
+         and then
+           (T.Common.Base_CPU not in T.Common.Domain'Range
+             or else not T.Common.Domain (T.Common.Base_CPU))
+       then
+          Succeeded := False;
+          return;
+       end if;
+ 
+       pTaskParameter := To_Address (T);
+ 
+       Entry_Point := To_PTHREAD_START_ROUTINE (Wrapper);
+ 
+       if Is_Windows_XP = 1 then
+          hTask := CreateThread
+            (null,
+             DWORD (Stack_Size),
+             Entry_Point,
+             pTaskParameter,
+             DWORD (Create_Suspended)
+               or DWORD (Stack_Size_Param_Is_A_Reservation),
+             TaskId'Unchecked_Access);
+       else
+          hTask := CreateThread
+            (null,
+             Initial_Stack_Size,
+             Entry_Point,
+             pTaskParameter,
+             DWORD (Create_Suspended),
+             TaskId'Unchecked_Access);
+       end if;
+ 
+       --  Step 1: Create the thread in blocked mode
+ 
+       if hTask = 0 then
+          Succeeded := False;
+          return;
+       end if;
+ 
+       --  Step 2: set its TCB
+ 
+       T.Common.LL.Thread := hTask;
+ 
+       --  Note: it would be useful to initialize Thread_Id right away to avoid
+       --  a race condition in gdb where Thread_ID may not have the right value
+       --  yet, but GetThreadId is a Vista specific API, not available under XP:
+       --  T.Common.LL.Thread_Id := GetThreadId (hTask); so instead we set the
+       --  field to 0 to avoid having a random value. Thread_Id is initialized
+       --  in Enter_Task anyway.
+ 
+       T.Common.LL.Thread_Id := 0;
+ 
+       --  Step 3: set its priority (child has inherited priority from parent)
+ 
+       Set_Priority (T, Priority);
+ 
+       if Time_Slice_Val = 0
+         or else Dispatching_Policy = 'F'
+         or else Get_Policy (Priority) = 'F'
+       then
+          --  Here we need Annex D semantics so we disable the NT priority
+          --  boost. A priority boost is temporarily given by the system to
+          --  a thread when it is taken out of a wait state.
+ 
+          SetThreadPriorityBoost (hTask, DisablePriorityBoost => Win32.TRUE);
+       end if;
+ 
+       --  Step 4: Handle pragma CPU and Task_Info
+ 
+       Set_Task_Affinity (T);
+ 
+       --  Step 5: Now, start it for good
+ 
+       Result := ResumeThread (hTask);
+       pragma Assert (Result = 1);
+ 
+       Succeeded := Result = 1;
+    end Create_Task;
+ 
+    ------------------
+    -- Finalize_TCB --
+    ------------------
+ 
+    procedure Finalize_TCB (T : Task_Id) is
+       Succeeded : BOOL;
+       pragma Unreferenced (Succeeded);
+ 
+    begin
+       if not Single_Lock then
+          Finalize_Lock (T.Common.LL.L'Access);
+       end if;
+ 
+       Finalize_Cond (T.Common.LL.CV'Access);
+ 
+       if T.Known_Tasks_Index /= -1 then
+          Known_Tasks (T.Known_Tasks_Index) := null;
+       end if;
+ 
+       if T.Common.LL.Thread /= Null_Thread_Id then
+ 
+          --  This task has been activated. Close the thread handle. This
+          --  is needed to release system resources.
+ 
+          Succeeded := CloseHandle (T.Common.LL.Thread);
+          --  Note that we do not check for the returned value, this is
+          --  because the above call will fail for a foreign thread. But
+          --  we still need to call it to properly close Ada tasks created
+          --  with CreateThread() in Create_Task above.
+       end if;
+ 
+       ATCB_Allocation.Free_ATCB (T);
+    end Finalize_TCB;
+ 
+    ---------------
+    -- Exit_Task --
+    ---------------
+ 
+    procedure Exit_Task is
+    begin
+       Specific.Set (null);
+    end Exit_Task;
+ 
+    ----------------
+    -- Abort_Task --
+    ----------------
+ 
+    procedure Abort_Task (T : Task_Id) is
+       pragma Unreferenced (T);
+    begin
+       null;
+    end Abort_Task;
+ 
+    ----------------------
+    -- Environment_Task --
+    ----------------------
+ 
+    function Environment_Task return Task_Id is
+    begin
+       return Environment_Task_Id;
+    end Environment_Task;
+ 
+    --------------
+    -- Lock_RTS --
+    --------------
+ 
+    procedure Lock_RTS is
+    begin
+       Write_Lock (Single_RTS_Lock'Access, Global_Lock => True);
+    end Lock_RTS;
+ 
+    ----------------
+    -- Unlock_RTS --
+    ----------------
+ 
+    procedure Unlock_RTS is
+    begin
+       Unlock (Single_RTS_Lock'Access, Global_Lock => True);
+    end Unlock_RTS;
+ 
+    ----------------
+    -- Initialize --
+    ----------------
+ 
+    procedure Initialize (Environment_Task : Task_Id) is
+       Discard : BOOL;
+ 
+    begin
+       Environment_Task_Id := Environment_Task;
+       OS_Primitives.Initialize;
+       Interrupt_Management.Initialize;
+ 
+       if Time_Slice_Val = 0 or else Dispatching_Policy = 'F' then
+          --  Here we need Annex D semantics, switch the current process to the
+          --  Realtime_Priority_Class.
+ 
+          Discard := OS_Interface.SetPriorityClass
+                       (GetCurrentProcess, Realtime_Priority_Class);
+       end if;
+ 
+       TlsIndex := TlsAlloc;
+ 
+       --  Initialize the lock used to synchronize chain of all ATCBs
+ 
+       Initialize_Lock (Single_RTS_Lock'Access, RTS_Lock_Level);
+ 
+       Environment_Task.Common.LL.Thread := GetCurrentThread;
+ 
+       --  Make environment task known here because it doesn't go through
+       --  Activate_Tasks, which does it for all other tasks.
+ 
+       Known_Tasks (Known_Tasks'First) := Environment_Task;
+       Environment_Task.Known_Tasks_Index := Known_Tasks'First;
+ 
+       Enter_Task (Environment_Task);
+ 
+       --  pragma CPU and dispatching domains for the environment task
+ 
+       Set_Task_Affinity (Environment_Task);
+    end Initialize;
+ 
+    ---------------------
+    -- Monotonic_Clock --
+    ---------------------
+ 
+    function Monotonic_Clock return Duration is
+       function Internal_Clock return Duration;
+       pragma Import (Ada, Internal_Clock, "__gnat_monotonic_clock");
+    begin
+       return Internal_Clock;
+    end Monotonic_Clock;
+ 
+    -------------------
+    -- RT_Resolution --
+    -------------------
+ 
+    function RT_Resolution return Duration is
+       Ticks_Per_Second : aliased LARGE_INTEGER;
+    begin
+       QueryPerformanceFrequency (Ticks_Per_Second'Access);
+       return Duration (1.0 / Ticks_Per_Second);
+    end RT_Resolution;
+ 
+    ----------------
+    -- Initialize --
+    ----------------
+ 
+    procedure Initialize (S : in out Suspension_Object) is
+    begin
+       --  Initialize internal state. It is always initialized to False (ARM
+       --  D.10 par. 6).
+ 
+       S.State := False;
+       S.Waiting := False;
+ 
+       --  Initialize internal mutex
+ 
+       InitializeCriticalSection (S.L'Access);
+ 
+       --  Initialize internal condition variable
+ 
+       S.CV := CreateEvent (null, Win32.TRUE, Win32.FALSE, Null_Ptr);
+       pragma Assert (S.CV /= 0);
+    end Initialize;
+ 
+    --------------
+    -- Finalize --
+    --------------
+ 
+    procedure Finalize (S : in out Suspension_Object) is
+       Result : BOOL;
+ 
+    begin
+       --  Destroy internal mutex
+ 
+       DeleteCriticalSection (S.L'Access);
+ 
+       --  Destroy internal condition variable
+ 
+       Result := CloseHandle (S.CV);
+       pragma Assert (Result = Win32.TRUE);
+    end Finalize;
+ 
+    -------------------
+    -- Current_State --
+    -------------------
+ 
+    function Current_State (S : Suspension_Object) return Boolean is
+    begin
+       --  We do not want to use lock on this read operation. State is marked
+       --  as Atomic so that we ensure that the value retrieved is correct.
+ 
+       return S.State;
+    end Current_State;
+ 
+    ---------------
+    -- Set_False --
+    ---------------
+ 
+    procedure Set_False (S : in out Suspension_Object) is
+    begin
+       SSL.Abort_Defer.all;
+ 
+       EnterCriticalSection (S.L'Access);
+ 
+       S.State := False;
+ 
+       LeaveCriticalSection (S.L'Access);
+ 
+       SSL.Abort_Undefer.all;
+    end Set_False;
+ 
+    --------------
+    -- Set_True --
+    --------------
+ 
+    procedure Set_True (S : in out Suspension_Object) is
+       Result : BOOL;
+ 
+    begin
+       SSL.Abort_Defer.all;
+ 
+       EnterCriticalSection (S.L'Access);
+ 
+       --  If there is already a task waiting on this suspension object then
+       --  we resume it, leaving the state of the suspension object to False,
+       --  as it is specified in ARM D.10 par. 9. Otherwise, it just leaves
+       --  the state to True.
+ 
+       if S.Waiting then
+          S.Waiting := False;
+          S.State := False;
+ 
+          Result := SetEvent (S.CV);
+          pragma Assert (Result = Win32.TRUE);
+ 
+       else
+          S.State := True;
+       end if;
+ 
+       LeaveCriticalSection (S.L'Access);
+ 
+       SSL.Abort_Undefer.all;
+    end Set_True;
+ 
+    ------------------------
+    -- Suspend_Until_True --
+    ------------------------
+ 
+    procedure Suspend_Until_True (S : in out Suspension_Object) is
+       Result      : DWORD;
+       Result_Bool : BOOL;
+ 
+    begin
+       SSL.Abort_Defer.all;
+ 
+       EnterCriticalSection (S.L'Access);
+ 
+       if S.Waiting then
+ 
+          --  Program_Error must be raised upon calling Suspend_Until_True
+          --  if another task is already waiting on that suspension object
+          --  (ARM D.10 par. 10).
+ 
+          LeaveCriticalSection (S.L'Access);
+ 
+          SSL.Abort_Undefer.all;
+ 
+          raise Program_Error;
+ 
+       else
+          --  Suspend the task if the state is False. Otherwise, the task
+          --  continues its execution, and the state of the suspension object
+          --  is set to False (ARM D.10 par. 9).
+ 
+          if S.State then
+             S.State := False;
+ 
+             LeaveCriticalSection (S.L'Access);
+ 
+             SSL.Abort_Undefer.all;
+ 
+          else
+             S.Waiting := True;
+ 
+             --  Must reset CV BEFORE L is unlocked
+ 
+             Result_Bool := ResetEvent (S.CV);
+             pragma Assert (Result_Bool = Win32.TRUE);
+ 
+             LeaveCriticalSection (S.L'Access);
+ 
+             SSL.Abort_Undefer.all;
+ 
+             Result := WaitForSingleObject (S.CV, Wait_Infinite);
+             pragma Assert (Result = 0);
+          end if;
+       end if;
+    end Suspend_Until_True;
+ 
+    ----------------
+    -- Check_Exit --
+    ----------------
+ 
+    --  Dummy versions, currently this only works for solaris (native)
+ 
+    function Check_Exit (Self_ID : ST.Task_Id) return Boolean is
+       pragma Unreferenced (Self_ID);
+    begin
+       return True;
+    end Check_Exit;
+ 
+    --------------------
+    -- Check_No_Locks --
+    --------------------
+ 
+    function Check_No_Locks (Self_ID : ST.Task_Id) return Boolean is
+       pragma Unreferenced (Self_ID);
+    begin
+       return True;
+    end Check_No_Locks;
+ 
+    ------------------
+    -- Suspend_Task --
+    ------------------
+ 
+    function Suspend_Task
+      (T           : ST.Task_Id;
+       Thread_Self : Thread_Id) return Boolean
+    is
+    begin
+       if T.Common.LL.Thread /= Thread_Self then
+          return SuspendThread (T.Common.LL.Thread) = NO_ERROR;
+       else
+          return True;
+       end if;
+    end Suspend_Task;
+ 
+    -----------------
+    -- Resume_Task --
+    -----------------
+ 
+    function Resume_Task
+      (T           : ST.Task_Id;
+       Thread_Self : Thread_Id) return Boolean
+    is
+    begin
+       if T.Common.LL.Thread /= Thread_Self then
+          return ResumeThread (T.Common.LL.Thread) = NO_ERROR;
+       else
+          return True;
+       end if;
+    end Resume_Task;
+ 
+    --------------------
+    -- Stop_All_Tasks --
+    --------------------
+ 
+    procedure Stop_All_Tasks is
+    begin
+       null;
+    end Stop_All_Tasks;
+ 
+    ---------------
+    -- Stop_Task --
+    ---------------
+ 
+    function Stop_Task (T : ST.Task_Id) return Boolean is
+       pragma Unreferenced (T);
+    begin
+       return False;
+    end Stop_Task;
+ 
+    -------------------
+    -- Continue_Task --
+    -------------------
+ 
+    function Continue_Task (T : ST.Task_Id) return Boolean is
+       pragma Unreferenced (T);
+    begin
+       return False;
+    end Continue_Task;
+ 
+    -----------------------
+    -- Set_Task_Affinity --
+    -----------------------
+ 
+    procedure Set_Task_Affinity (T : ST.Task_Id) is
+       Result : DWORD;
+ 
+       use type System.Multiprocessors.CPU_Range;
+ 
+    begin
+       --  Do nothing if the underlying thread has not yet been created. If the
+       --  thread has not yet been created then the proper affinity will be set
+       --  during its creation.
+ 
+       if T.Common.LL.Thread = Null_Thread_Id then
+          null;
+ 
+       --  pragma CPU
+ 
+       elsif T.Common.Base_CPU /= Multiprocessors.Not_A_Specific_CPU then
+ 
+          --  The CPU numbering in pragma CPU starts at 1 while the subprogram
+          --  to set the affinity starts at 0, therefore we must substract 1.
+ 
+          Result :=
+            SetThreadIdealProcessor
+              (T.Common.LL.Thread, ProcessorId (T.Common.Base_CPU) - 1);
+          pragma Assert (Result = 1);
+ 
+       --  Task_Info
+ 
+       elsif T.Common.Task_Info /= null then
+          if T.Common.Task_Info.CPU /= Task_Info.Any_CPU then
+             Result :=
+               SetThreadIdealProcessor
+                 (T.Common.LL.Thread, T.Common.Task_Info.CPU);
+             pragma Assert (Result = 1);
+          end if;
+ 
+       --  Dispatching domains
+ 
+       elsif T.Common.Domain /= null
+         and then (T.Common.Domain /= ST.System_Domain
+                    or else
+                      T.Common.Domain.all /=
+                        (Multiprocessors.CPU'First ..
+                         Multiprocessors.Number_Of_CPUs => True))
+       then
+          declare
+             CPU_Set : DWORD := 0;
+ 
+          begin
+             for Proc in T.Common.Domain'Range loop
+                if T.Common.Domain (Proc) then
+ 
+                   --  The thread affinity mask is a bit vector in which each
+                   --  bit represents a logical processor.
+ 
+                   CPU_Set := CPU_Set + 2 ** (Integer (Proc) - 1);
+                end if;
+             end loop;
+ 
+             Result := SetThreadAffinityMask (T.Common.LL.Thread, CPU_Set);
+             pragma Assert (Result = 1);
+          end;
+       end if;
+    end Set_Task_Affinity;
+ 
+ end System.Task_Primitives.Operations;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-taprop__posix.adb gcc-8.1.0/gcc/ada/libgnarl/s-taprop__posix.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-taprop__posix.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-taprop__posix.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,1375 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --     S Y S T E M . T A S K _ P R I M I T I V E S . O P E R A T I O N S    --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is a POSIX-like version of this package
+ 
+ --  This package contains all the GNULL primitives that interface directly with
+ --  the underlying OS.
+ 
+ --  Note: this file can only be used for POSIX compliant systems that implement
+ --  SCHED_FIFO and Ceiling Locking correctly.
+ 
+ --  For configurations where SCHED_FIFO and priority ceiling are not a
+ --  requirement, this file can also be used (e.g AiX threads)
+ 
+ pragma Polling (Off);
+ --  Turn off polling, we do not want ATC polling to take place during tasking
+ --  operations. It causes infinite loops and other problems.
+ 
+ with Ada.Unchecked_Conversion;
+ 
+ with Interfaces.C;
+ 
+ with System.Tasking.Debug;
+ with System.Interrupt_Management;
+ with System.OS_Constants;
+ with System.OS_Primitives;
+ with System.Task_Info;
+ 
+ with System.Soft_Links;
+ --  We use System.Soft_Links instead of System.Tasking.Initialization
+ --  because the later is a higher level package that we shouldn't depend on.
+ --  For example when using the restricted run time, it is replaced by
+ --  System.Tasking.Restricted.Stages.
+ 
+ package body System.Task_Primitives.Operations is
+ 
+    package OSC renames System.OS_Constants;
+    package SSL renames System.Soft_Links;
+ 
+    use System.Tasking.Debug;
+    use System.Tasking;
+    use Interfaces.C;
+    use System.OS_Interface;
+    use System.Parameters;
+    use System.OS_Primitives;
+ 
+    ----------------
+    -- Local Data --
+    ----------------
+ 
+    --  The followings are logically constants, but need to be initialized
+    --  at run time.
+ 
+    Single_RTS_Lock : aliased RTS_Lock;
+    --  This is a lock to allow only one thread of control in the RTS at
+    --  a time; it is used to execute in mutual exclusion from all other tasks.
+    --  Used mainly in Single_Lock mode, but also to protect All_Tasks_List
+ 
+    Environment_Task_Id : Task_Id;
+    --  A variable to hold Task_Id for the environment task
+ 
+    Locking_Policy : Character;
+    pragma Import (C, Locking_Policy, "__gl_locking_policy");
+    --  Value of the pragma Locking_Policy:
+    --    'C' for Ceiling_Locking
+    --    'I' for Inherit_Locking
+    --    ' ' for none.
+ 
+    Unblocked_Signal_Mask : aliased sigset_t;
+    --  The set of signals that should unblocked in all tasks
+ 
+    --  The followings are internal configuration constants needed
+ 
+    Next_Serial_Number : Task_Serial_Number := 100;
+    --  We start at 100, to reserve some special values for
+    --  using in error checking.
+ 
+    Time_Slice_Val : Integer;
+    pragma Import (C, Time_Slice_Val, "__gl_time_slice_val");
+ 
+    Dispatching_Policy : Character;
+    pragma Import (C, Dispatching_Policy, "__gl_task_dispatching_policy");
+ 
+    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;
+    --  True if a handler for the abort signal is installed
+ 
+    --------------------
+    -- Local Packages --
+    --------------------
+ 
+    package Specific is
+ 
+       procedure Initialize (Environment_Task : Task_Id);
+       pragma Inline (Initialize);
+       --  Initialize various data needed by this package
+ 
+       function Is_Valid_Task return Boolean;
+       pragma Inline (Is_Valid_Task);
+       --  Does executing thread have a TCB?
+ 
+       procedure Set (Self_Id : Task_Id);
+       pragma Inline (Set);
+       --  Set the self id for the current task
+ 
+       function Self return Task_Id;
+       pragma Inline (Self);
+       --  Return a pointer to the Ada Task Control Block of the calling task
+ 
+    end Specific;
+ 
+    package body Specific is separate;
+    --  The body of this package is target specific
+ 
+    package Monotonic is
+ 
+       function Monotonic_Clock return Duration;
+       pragma Inline (Monotonic_Clock);
+       --  Returns an absolute time, represented as an offset relative to some
+       --  unspecified starting point, typically system boot time.  This clock
+       --  is not affected by discontinuous jumps in the system time.
+ 
+       function RT_Resolution return Duration;
+       pragma Inline (RT_Resolution);
+       --  Returns resolution of the underlying clock used to implement RT_Clock
+ 
+       procedure Timed_Sleep
+         (Self_ID  : ST.Task_Id;
+          Time     : Duration;
+          Mode     : ST.Delay_Modes;
+          Reason   : System.Tasking.Task_States;
+          Timedout : out Boolean;
+          Yielded  : out Boolean);
+       --  Combination of Sleep (above) and Timed_Delay
+ 
+       procedure Timed_Delay
+         (Self_ID : ST.Task_Id;
+          Time    : Duration;
+          Mode    : ST.Delay_Modes);
+       --  Implement the semantics of the delay statement.
+       --  The caller should be abort-deferred and should not hold any locks.
+ 
+    end Monotonic;
+ 
+    package body Monotonic is separate;
+ 
+    ----------------------------------
+    -- ATCB allocation/deallocation --
+    ----------------------------------
+ 
+    package body ATCB_Allocation is separate;
+    --  The body of this package is shared across several targets
+ 
+    ---------------------------------
+    -- Support for foreign threads --
+    ---------------------------------
+ 
+    function Register_Foreign_Thread
+      (Thread         : Thread_Id;
+       Sec_Stack_Size : Size_Type := Unspecified_Size) return Task_Id;
+    --  Allocate and initialize a new ATCB for the current Thread. The size of
+    --  the secondary stack can be optionally specified.
+ 
+    function Register_Foreign_Thread
+      (Thread         : Thread_Id;
+       Sec_Stack_Size : Size_Type := Unspecified_Size)
+      return Task_Id is separate;
+ 
+    -----------------------
+    -- Local Subprograms --
+    -----------------------
+ 
+    procedure Abort_Handler (Sig : Signal);
+    --  Signal handler used to implement asynchronous abort.
+    --  See also comment before body, below.
+ 
+    function To_Address is
+      new Ada.Unchecked_Conversion (Task_Id, System.Address);
+ 
+    function GNAT_pthread_condattr_setup
+      (attr : access pthread_condattr_t) return int;
+    pragma Import (C,
+      GNAT_pthread_condattr_setup, "__gnat_pthread_condattr_setup");
+ 
+    -------------------
+    -- Abort_Handler --
+    -------------------
+ 
+    --  Target-dependent binding of inter-thread Abort signal to the raising of
+    --  the Abort_Signal exception.
+ 
+    --  The technical issues and alternatives here are essentially the
+    --  same as for raising exceptions in response to other signals
+    --  (e.g. Storage_Error). See code and comments in the package body
+    --  System.Interrupt_Management.
+ 
+    --  Some implementations may not allow an exception to be propagated out of
+    --  a handler, and others might leave the signal or interrupt that invoked
+    --  this handler masked after the exceptional return to the application
+    --  code.
+ 
+    --  GNAT exceptions are originally implemented using setjmp()/longjmp(). On
+    --  most UNIX systems, this will allow transfer out of a signal handler,
+    --  which is usually the only mechanism available for implementing
+    --  asynchronous handlers of this kind. However, some systems do not
+    --  restore the signal mask on longjmp(), leaving the abort signal masked.
+ 
+    procedure Abort_Handler (Sig : Signal) is
+       pragma Unreferenced (Sig);
+ 
+       T       : constant Task_Id := Self;
+       Old_Set : aliased sigset_t;
+ 
+       Result : Interfaces.C.int;
+       pragma Warnings (Off, Result);
+ 
+    begin
+       --  It's not safe to raise an exception when using GCC ZCX mechanism.
+       --  Note that we still need to install a signal handler, since in some
+       --  cases (e.g. shutdown of the Server_Task in System.Interrupts) we
+       --  need to send the Abort signal to a task.
+ 
+       if ZCX_By_Default then
+          return;
+       end if;
+ 
+       if T.Deferral_Level = 0
+         and then T.Pending_ATC_Level < T.ATC_Nesting_Level and then
+         not T.Aborting
+       then
+          T.Aborting := True;
+ 
+          --  Make sure signals used for RTS internal purpose are unmasked
+ 
+          Result := pthread_sigmask (SIG_UNBLOCK,
+            Unblocked_Signal_Mask'Access, Old_Set'Access);
+          pragma Assert (Result = 0);
+ 
+          raise Standard'Abort_Signal;
+       end if;
+    end Abort_Handler;
+ 
+    -----------------
+    -- Stack_Guard --
+    -----------------
+ 
+    procedure Stack_Guard (T : ST.Task_Id; On : Boolean) is
+       Stack_Base : constant Address := Get_Stack_Base (T.Common.LL.Thread);
+       Page_Size  : Address;
+       Res        : Interfaces.C.int;
+ 
+    begin
+       if Stack_Base_Available then
+ 
+          --  Compute the guard page address
+ 
+          Page_Size := Address (Get_Page_Size);
+          Res :=
+            mprotect
+              (Stack_Base - (Stack_Base mod Page_Size) + Page_Size,
+               size_t (Page_Size),
+               prot => (if On then PROT_ON else PROT_OFF));
+          pragma Assert (Res = 0);
+       end if;
+    end Stack_Guard;
+ 
+    --------------------
+    -- Get_Thread_Id  --
+    --------------------
+ 
+    function Get_Thread_Id (T : ST.Task_Id) return OSI.Thread_Id is
+    begin
+       return T.Common.LL.Thread;
+    end Get_Thread_Id;
+ 
+    ----------
+    -- Self --
+    ----------
+ 
+    function Self return Task_Id renames Specific.Self;
+ 
+    ---------------------
+    -- Initialize_Lock --
+    ---------------------
+ 
+    --  Note: mutexes and cond_variables needed per-task basis are initialized
+    --  in Initialize_TCB and the Storage_Error is handled. Other mutexes (such
+    --  as RTS_Lock, Memory_Lock...) used in RTS is initialized before any
+    --  status change of RTS. Therefore raising Storage_Error in the following
+    --  routines should be able to be handled safely.
+ 
+    procedure Initialize_Lock
+      (Prio : System.Any_Priority;
+       L    : not null access Lock)
+    is
+       Attributes : aliased pthread_mutexattr_t;
+       Result : Interfaces.C.int;
+ 
+    begin
+       Result := pthread_mutexattr_init (Attributes'Access);
+       pragma Assert (Result = 0 or else Result = ENOMEM);
+ 
+       if Result = ENOMEM then
+          raise Storage_Error;
+       end if;
+ 
+       if Locking_Policy = 'C' then
+          Result := pthread_mutexattr_setprotocol
+            (Attributes'Access, PTHREAD_PRIO_PROTECT);
+          pragma Assert (Result = 0);
+ 
+          Result := pthread_mutexattr_setprioceiling
+             (Attributes'Access, Interfaces.C.int (Prio));
+          pragma Assert (Result = 0);
+ 
+       elsif Locking_Policy = 'I' then
+          Result := pthread_mutexattr_setprotocol
+            (Attributes'Access, PTHREAD_PRIO_INHERIT);
+          pragma Assert (Result = 0);
+       end if;
+ 
+       Result := pthread_mutex_init (L.WO'Access, Attributes'Access);
+       pragma Assert (Result = 0 or else Result = ENOMEM);
+ 
+       if Result = ENOMEM then
+          Result := pthread_mutexattr_destroy (Attributes'Access);
+          raise Storage_Error;
+       end if;
+ 
+       Result := pthread_mutexattr_destroy (Attributes'Access);
+       pragma Assert (Result = 0);
+    end Initialize_Lock;
+ 
+    procedure Initialize_Lock
+      (L : not null access RTS_Lock; Level : Lock_Level)
+    is
+       pragma Unreferenced (Level);
+ 
+       Attributes : aliased pthread_mutexattr_t;
+       Result     : Interfaces.C.int;
+ 
+    begin
+       Result := pthread_mutexattr_init (Attributes'Access);
+       pragma Assert (Result = 0 or else Result = ENOMEM);
+ 
+       if Result = ENOMEM then
+          raise Storage_Error;
+       end if;
+ 
+       if Locking_Policy = 'C' then
+          Result := pthread_mutexattr_setprotocol
+            (Attributes'Access, PTHREAD_PRIO_PROTECT);
+          pragma Assert (Result = 0);
+ 
+          Result := pthread_mutexattr_setprioceiling
+             (Attributes'Access, Interfaces.C.int (System.Any_Priority'Last));
+          pragma Assert (Result = 0);
+ 
+       elsif Locking_Policy = 'I' then
+          Result := pthread_mutexattr_setprotocol
+            (Attributes'Access, PTHREAD_PRIO_INHERIT);
+          pragma Assert (Result = 0);
+       end if;
+ 
+       Result := pthread_mutex_init (L, Attributes'Access);
+       pragma Assert (Result = 0 or else Result = ENOMEM);
+ 
+       if Result = ENOMEM then
+          Result := pthread_mutexattr_destroy (Attributes'Access);
+          raise Storage_Error;
+       end if;
+ 
+       Result := pthread_mutexattr_destroy (Attributes'Access);
+       pragma Assert (Result = 0);
+    end Initialize_Lock;
+ 
+    -------------------
+    -- Finalize_Lock --
+    -------------------
+ 
+    procedure Finalize_Lock (L : not null access Lock) is
+       Result : Interfaces.C.int;
+    begin
+       Result := pthread_mutex_destroy (L.WO'Access);
+       pragma Assert (Result = 0);
+    end Finalize_Lock;
+ 
+    procedure Finalize_Lock (L : not null access RTS_Lock) is
+       Result : Interfaces.C.int;
+    begin
+       Result := pthread_mutex_destroy (L);
+       pragma Assert (Result = 0);
+    end Finalize_Lock;
+ 
+    ----------------
+    -- Write_Lock --
+    ----------------
+ 
+    procedure Write_Lock
+      (L : not null access Lock; Ceiling_Violation : out Boolean)
+    is
+       Result : Interfaces.C.int;
+ 
+    begin
+       Result := pthread_mutex_lock (L.WO'Access);
+ 
+       --  The cause of EINVAL is a priority ceiling violation
+ 
+       Ceiling_Violation := Result = EINVAL;
+       pragma Assert (Result = 0 or else Ceiling_Violation);
+    end Write_Lock;
+ 
+    procedure Write_Lock
+      (L           : not null access RTS_Lock;
+       Global_Lock : Boolean := False)
+    is
+       Result : Interfaces.C.int;
+    begin
+       if not Single_Lock or else Global_Lock then
+          Result := pthread_mutex_lock (L);
+          pragma Assert (Result = 0);
+       end if;
+    end Write_Lock;
+ 
+    procedure Write_Lock (T : Task_Id) is
+       Result : Interfaces.C.int;
+    begin
+       if not Single_Lock then
+          Result := pthread_mutex_lock (T.Common.LL.L'Access);
+          pragma Assert (Result = 0);
+       end if;
+    end Write_Lock;
+ 
+    ---------------
+    -- Read_Lock --
+    ---------------
+ 
+    procedure Read_Lock
+      (L : not null access Lock; Ceiling_Violation : out Boolean) is
+    begin
+       Write_Lock (L, Ceiling_Violation);
+    end Read_Lock;
+ 
+    ------------
+    -- Unlock --
+    ------------
+ 
+    procedure Unlock (L : not null access Lock) is
+       Result : Interfaces.C.int;
+    begin
+       Result := pthread_mutex_unlock (L.WO'Access);
+       pragma Assert (Result = 0);
+    end Unlock;
+ 
+    procedure Unlock
+      (L : not null access RTS_Lock; Global_Lock : Boolean := False)
+    is
+       Result : Interfaces.C.int;
+    begin
+       if not Single_Lock or else Global_Lock then
+          Result := pthread_mutex_unlock (L);
+          pragma Assert (Result = 0);
+       end if;
+    end Unlock;
+ 
+    procedure Unlock (T : Task_Id) is
+       Result : Interfaces.C.int;
+    begin
+       if not Single_Lock then
+          Result := pthread_mutex_unlock (T.Common.LL.L'Access);
+          pragma Assert (Result = 0);
+       end if;
+    end Unlock;
+ 
+    -----------------
+    -- Set_Ceiling --
+    -----------------
+ 
+    --  Dynamic priority ceilings are not supported by the underlying system
+ 
+    procedure Set_Ceiling
+      (L    : not null access Lock;
+       Prio : System.Any_Priority)
+    is
+       pragma Unreferenced (L, Prio);
+    begin
+       null;
+    end Set_Ceiling;
+ 
+    -----------
+    -- Sleep --
+    -----------
+ 
+    procedure Sleep
+      (Self_ID : Task_Id;
+       Reason  : System.Tasking.Task_States)
+    is
+       pragma Unreferenced (Reason);
+ 
+       Result : Interfaces.C.int;
+ 
+    begin
+       Result :=
+         pthread_cond_wait
+           (cond  => Self_ID.Common.LL.CV'Access,
+            mutex => (if Single_Lock
+                      then Single_RTS_Lock'Access
+                      else Self_ID.Common.LL.L'Access));
+ 
+       --  EINTR is not considered a failure
+ 
+       pragma Assert (Result = 0 or else Result = EINTR);
+    end Sleep;
+ 
+    -----------------
+    -- Timed_Sleep --
+    -----------------
+ 
+    --  This is for use within the run-time system, so abort is
+    --  assumed to be already deferred, and the caller should be
+    --  holding its own ATCB lock.
+ 
+    procedure Timed_Sleep
+      (Self_ID  : Task_Id;
+       Time     : Duration;
+       Mode     : ST.Delay_Modes;
+       Reason   : Task_States;
+       Timedout : out Boolean;
+       Yielded  : out Boolean) renames Monotonic.Timed_Sleep;
+ 
+    -----------------
+    -- Timed_Delay --
+    -----------------
+ 
+    --  This is for use in implementing delay statements, so we assume the
+    --  caller is abort-deferred but is holding no locks.
+ 
+    procedure Timed_Delay
+      (Self_ID : Task_Id;
+       Time    : Duration;
+       Mode    : ST.Delay_Modes) renames Monotonic.Timed_Delay;
+ 
+    ---------------------
+    -- Monotonic_Clock --
+    ---------------------
+ 
+    function Monotonic_Clock return Duration renames Monotonic.Monotonic_Clock;
+ 
+    -------------------
+    -- RT_Resolution --
+    -------------------
+ 
+    function RT_Resolution return Duration renames Monotonic.RT_Resolution;
+ 
+    ------------
+    -- Wakeup --
+    ------------
+ 
+    procedure Wakeup (T : Task_Id; Reason : System.Tasking.Task_States) is
+       pragma Unreferenced (Reason);
+       Result : Interfaces.C.int;
+    begin
+       Result := pthread_cond_signal (T.Common.LL.CV'Access);
+       pragma Assert (Result = 0);
+    end Wakeup;
+ 
+    -----------
+    -- Yield --
+    -----------
+ 
+    procedure Yield (Do_Yield : Boolean := True) is
+       Result : Interfaces.C.int;
+       pragma Unreferenced (Result);
+    begin
+       if Do_Yield then
+          Result := sched_yield;
+       end if;
+    end Yield;
+ 
+    ------------------
+    -- Set_Priority --
+    ------------------
+ 
+    procedure Set_Priority
+      (T                   : Task_Id;
+       Prio                : System.Any_Priority;
+       Loss_Of_Inheritance : Boolean := False)
+    is
+       pragma Unreferenced (Loss_Of_Inheritance);
+ 
+       Result : Interfaces.C.int;
+       Param  : aliased struct_sched_param;
+ 
+       function Get_Policy (Prio : System.Any_Priority) return Character;
+       pragma Import (C, Get_Policy, "__gnat_get_specific_dispatching");
+       --  Get priority specific dispatching policy
+ 
+       Priority_Specific_Policy : constant Character := Get_Policy (Prio);
+       --  Upper case first character of the policy name corresponding to the
+       --  task as set by a Priority_Specific_Dispatching pragma.
+ 
+    begin
+       T.Common.Current_Priority := Prio;
+       Param.sched_priority := To_Target_Priority (Prio);
+ 
+       if Time_Slice_Supported
+         and then (Dispatching_Policy = 'R'
+                   or else Priority_Specific_Policy = 'R'
+                   or else Time_Slice_Val > 0)
+       then
+          Result := pthread_setschedparam
+            (T.Common.LL.Thread, SCHED_RR, Param'Access);
+ 
+       elsif Dispatching_Policy = 'F'
+         or else Priority_Specific_Policy = 'F'
+         or else Time_Slice_Val = 0
+       then
+          Result := pthread_setschedparam
+            (T.Common.LL.Thread, SCHED_FIFO, Param'Access);
+ 
+       else
+          Result := pthread_setschedparam
+            (T.Common.LL.Thread, SCHED_OTHER, Param'Access);
+       end if;
+ 
+       pragma Assert (Result = 0);
+    end Set_Priority;
+ 
+    ------------------
+    -- Get_Priority --
+    ------------------
+ 
+    function Get_Priority (T : Task_Id) return System.Any_Priority is
+    begin
+       return T.Common.Current_Priority;
+    end Get_Priority;
+ 
+    ----------------
+    -- Enter_Task --
+    ----------------
+ 
+    procedure Enter_Task (Self_ID : Task_Id) is
+    begin
+       Self_ID.Common.LL.Thread := pthread_self;
+       Self_ID.Common.LL.LWP := lwp_self;
+ 
+       Specific.Set (Self_ID);
+ 
+       if Use_Alternate_Stack then
+          declare
+             Stack  : aliased stack_t;
+             Result : Interfaces.C.int;
+          begin
+             Stack.ss_sp    := Self_ID.Common.Task_Alternate_Stack;
+             Stack.ss_size  := Alternate_Stack_Size;
+             Stack.ss_flags := 0;
+             Result := sigaltstack (Stack'Access, null);
+             pragma Assert (Result = 0);
+          end;
+       end if;
+    end Enter_Task;
+ 
+    -------------------
+    -- Is_Valid_Task --
+    -------------------
+ 
+    function Is_Valid_Task return Boolean renames Specific.Is_Valid_Task;
+ 
+    -----------------------------
+    -- Register_Foreign_Thread --
+    -----------------------------
+ 
+    function Register_Foreign_Thread return Task_Id is
+    begin
+       if Is_Valid_Task then
+          return Self;
+       else
+          return Register_Foreign_Thread (pthread_self);
+       end if;
+    end Register_Foreign_Thread;
+ 
+    --------------------
+    -- Initialize_TCB --
+    --------------------
+ 
+    procedure Initialize_TCB (Self_ID : Task_Id; Succeeded : out Boolean) is
+       Mutex_Attr : aliased pthread_mutexattr_t;
+       Result     : Interfaces.C.int;
+       Cond_Attr  : aliased pthread_condattr_t;
+ 
+    begin
+       --  Give the task a unique serial number
+ 
+       Self_ID.Serial_Number := Next_Serial_Number;
+       Next_Serial_Number := Next_Serial_Number + 1;
+       pragma Assert (Next_Serial_Number /= 0);
+ 
+       if not Single_Lock then
+          Result := pthread_mutexattr_init (Mutex_Attr'Access);
+          pragma Assert (Result = 0 or else Result = ENOMEM);
+ 
+          if Result = 0 then
+             if Locking_Policy = 'C' then
+                Result :=
+                  pthread_mutexattr_setprotocol
+                    (Mutex_Attr'Access,
+                     PTHREAD_PRIO_PROTECT);
+                pragma Assert (Result = 0);
+ 
+                Result :=
+                  pthread_mutexattr_setprioceiling
+                    (Mutex_Attr'Access,
+                     Interfaces.C.int (System.Any_Priority'Last));
+                pragma Assert (Result = 0);
+ 
+             elsif Locking_Policy = 'I' then
+                Result :=
+                  pthread_mutexattr_setprotocol
+                    (Mutex_Attr'Access,
+                     PTHREAD_PRIO_INHERIT);
+                pragma Assert (Result = 0);
+             end if;
+ 
+             Result :=
+               pthread_mutex_init
+                 (Self_ID.Common.LL.L'Access,
+                  Mutex_Attr'Access);
+             pragma Assert (Result = 0 or else Result = ENOMEM);
+          end if;
+ 
+          if Result /= 0 then
+             Succeeded := False;
+             return;
+          end if;
+ 
+          Result := pthread_mutexattr_destroy (Mutex_Attr'Access);
+          pragma Assert (Result = 0);
+       end if;
+ 
+       Result := pthread_condattr_init (Cond_Attr'Access);
+       pragma Assert (Result = 0 or else Result = ENOMEM);
+ 
+       if Result = 0 then
+          Result := GNAT_pthread_condattr_setup (Cond_Attr'Access);
+          pragma Assert (Result = 0);
+ 
+          Result :=
+            pthread_cond_init
+              (Self_ID.Common.LL.CV'Access, Cond_Attr'Access);
+          pragma Assert (Result = 0 or else Result = ENOMEM);
+       end if;
+ 
+       if Result = 0 then
+          Succeeded := True;
+       else
+          if not Single_Lock then
+             Result := pthread_mutex_destroy (Self_ID.Common.LL.L'Access);
+             pragma Assert (Result = 0);
+          end if;
+ 
+          Succeeded := False;
+       end if;
+ 
+       Result := pthread_condattr_destroy (Cond_Attr'Access);
+       pragma Assert (Result = 0);
+    end Initialize_TCB;
+ 
+    -----------------
+    -- Create_Task --
+    -----------------
+ 
+    procedure Create_Task
+      (T          : Task_Id;
+       Wrapper    : System.Address;
+       Stack_Size : System.Parameters.Size_Type;
+       Priority   : System.Any_Priority;
+       Succeeded  : out Boolean)
+    is
+       Attributes          : aliased pthread_attr_t;
+       Adjusted_Stack_Size : Interfaces.C.size_t;
+       Page_Size           : constant Interfaces.C.size_t :=
+                               Interfaces.C.size_t (Get_Page_Size);
+       Result              : Interfaces.C.int;
+ 
+       function Thread_Body_Access is new
+         Ada.Unchecked_Conversion (System.Address, Thread_Body);
+ 
+       use System.Task_Info;
+ 
+    begin
+       Adjusted_Stack_Size :=
+          Interfaces.C.size_t (Stack_Size + Alternate_Stack_Size);
+ 
+       if Stack_Base_Available then
+ 
+          --  If Stack Checking is supported then allocate 2 additional pages:
+ 
+          --  In the worst case, stack is allocated at something like
+          --  N * Get_Page_Size - epsilon, we need to add the size for 2 pages
+          --  to be sure the effective stack size is greater than what
+          --  has been asked.
+ 
+          Adjusted_Stack_Size := Adjusted_Stack_Size + 2 * Page_Size;
+       end if;
+ 
+       --  Round stack size as this is required by some OSes (Darwin)
+ 
+       Adjusted_Stack_Size := Adjusted_Stack_Size + Page_Size - 1;
+       Adjusted_Stack_Size :=
+         Adjusted_Stack_Size - Adjusted_Stack_Size mod Page_Size;
+ 
+       Result := pthread_attr_init (Attributes'Access);
+       pragma Assert (Result = 0 or else Result = ENOMEM);
+ 
+       if Result /= 0 then
+          Succeeded := False;
+          return;
+       end if;
+ 
+       Result :=
+         pthread_attr_setdetachstate
+           (Attributes'Access, PTHREAD_CREATE_DETACHED);
+       pragma Assert (Result = 0);
+ 
+       Result :=
+         pthread_attr_setstacksize
+           (Attributes'Access, Adjusted_Stack_Size);
+       pragma Assert (Result = 0);
+ 
+       if T.Common.Task_Info /= Default_Scope then
+          case T.Common.Task_Info is
+             when System.Task_Info.Process_Scope =>
+                Result :=
+                  pthread_attr_setscope
+                    (Attributes'Access, PTHREAD_SCOPE_PROCESS);
+ 
+             when System.Task_Info.System_Scope =>
+                Result :=
+                  pthread_attr_setscope
+                    (Attributes'Access, PTHREAD_SCOPE_SYSTEM);
+ 
+             when System.Task_Info.Default_Scope =>
+                Result := 0;
+          end case;
+ 
+          pragma Assert (Result = 0);
+       end if;
+ 
+       --  Since the initial signal mask of a thread is inherited from the
+       --  creator, and the Environment task has all its signals masked, we
+       --  do not need to manipulate caller's signal mask at this point.
+       --  All tasks in RTS will have All_Tasks_Mask initially.
+ 
+       --  Note: the use of Unrestricted_Access in the following call is needed
+       --  because otherwise we have an error of getting a access-to-volatile
+       --  value which points to a non-volatile object. But in this case it is
+       --  safe to do this, since we know we have no problems with aliasing and
+       --  Unrestricted_Access bypasses this check.
+ 
+       Result := pthread_create
+         (T.Common.LL.Thread'Unrestricted_Access,
+          Attributes'Access,
+          Thread_Body_Access (Wrapper),
+          To_Address (T));
+       pragma Assert (Result = 0 or else Result = EAGAIN);
+ 
+       Succeeded := Result = 0;
+ 
+       Result := pthread_attr_destroy (Attributes'Access);
+       pragma Assert (Result = 0);
+ 
+       if Succeeded then
+          Set_Priority (T, Priority);
+       end if;
+    end Create_Task;
+ 
+    ------------------
+    -- Finalize_TCB --
+    ------------------
+ 
+    procedure Finalize_TCB (T : Task_Id) is
+       Result : Interfaces.C.int;
+ 
+    begin
+       if not Single_Lock then
+          Result := pthread_mutex_destroy (T.Common.LL.L'Access);
+          pragma Assert (Result = 0);
+       end if;
+ 
+       Result := pthread_cond_destroy (T.Common.LL.CV'Access);
+       pragma Assert (Result = 0);
+ 
+       if T.Known_Tasks_Index /= -1 then
+          Known_Tasks (T.Known_Tasks_Index) := null;
+       end if;
+ 
+       ATCB_Allocation.Free_ATCB (T);
+    end Finalize_TCB;
+ 
+    ---------------
+    -- Exit_Task --
+    ---------------
+ 
+    procedure Exit_Task is
+    begin
+       --  Mark this task as unknown, so that if Self is called, it won't
+       --  return a dangling pointer.
+ 
+       Specific.Set (null);
+    end Exit_Task;
+ 
+    ----------------
+    -- Abort_Task --
+    ----------------
+ 
+    procedure Abort_Task (T : Task_Id) is
+       Result : Interfaces.C.int;
+    begin
+       if Abort_Handler_Installed then
+          Result :=
+            pthread_kill
+              (T.Common.LL.Thread,
+               Signal (System.Interrupt_Management.Abort_Task_Interrupt));
+          pragma Assert (Result = 0);
+       end if;
+    end Abort_Task;
+ 
+    ----------------
+    -- Initialize --
+    ----------------
+ 
+    procedure Initialize (S : in out Suspension_Object) is
+       Mutex_Attr : aliased pthread_mutexattr_t;
+       Cond_Attr  : aliased pthread_condattr_t;
+       Result     : Interfaces.C.int;
+ 
+    begin
+       --  Initialize internal state (always to False (RM D.10 (6)))
+ 
+       S.State := False;
+       S.Waiting := False;
+ 
+       --  Initialize internal mutex
+ 
+       Result := pthread_mutexattr_init (Mutex_Attr'Access);
+       pragma Assert (Result = 0 or else Result = ENOMEM);
+ 
+       if Result = ENOMEM then
+          raise Storage_Error;
+       end if;
+ 
+       Result := pthread_mutex_init (S.L'Access, Mutex_Attr'Access);
+       pragma Assert (Result = 0 or else Result = ENOMEM);
+ 
+       if Result = ENOMEM then
+          Result := pthread_mutexattr_destroy (Mutex_Attr'Access);
+          pragma Assert (Result = 0);
+ 
+          raise Storage_Error;
+       end if;
+ 
+       Result := pthread_mutexattr_destroy (Mutex_Attr'Access);
+       pragma Assert (Result = 0);
+ 
+       --  Initialize internal condition variable
+ 
+       Result := pthread_condattr_init (Cond_Attr'Access);
+       pragma Assert (Result = 0 or else Result = ENOMEM);
+ 
+       if Result /= 0 then
+          Result := pthread_mutex_destroy (S.L'Access);
+          pragma Assert (Result = 0);
+ 
+          --  Storage_Error is propagated as intended if the allocation of the
+          --  underlying OS entities fails.
+ 
+          raise Storage_Error;
+ 
+       else
+          Result := GNAT_pthread_condattr_setup (Cond_Attr'Access);
+          pragma Assert (Result = 0);
+       end if;
+ 
+       Result := pthread_cond_init (S.CV'Access, Cond_Attr'Access);
+       pragma Assert (Result = 0 or else Result = ENOMEM);
+ 
+       if Result /= 0 then
+          Result := pthread_mutex_destroy (S.L'Access);
+          pragma Assert (Result = 0);
+ 
+          Result := pthread_condattr_destroy (Cond_Attr'Access);
+          pragma Assert (Result = 0);
+ 
+          --  Storage_Error is propagated as intended if the allocation of the
+          --  underlying OS entities fails.
+ 
+          raise Storage_Error;
+       end if;
+ 
+       Result := pthread_condattr_destroy (Cond_Attr'Access);
+       pragma Assert (Result = 0);
+    end Initialize;
+ 
+    --------------
+    -- Finalize --
+    --------------
+ 
+    procedure Finalize (S : in out Suspension_Object) is
+       Result : Interfaces.C.int;
+ 
+    begin
+       --  Destroy internal mutex
+ 
+       Result := pthread_mutex_destroy (S.L'Access);
+       pragma Assert (Result = 0);
+ 
+       --  Destroy internal condition variable
+ 
+       Result := pthread_cond_destroy (S.CV'Access);
+       pragma Assert (Result = 0);
+    end Finalize;
+ 
+    -------------------
+    -- Current_State --
+    -------------------
+ 
+    function Current_State (S : Suspension_Object) return Boolean is
+    begin
+       --  We do not want to use lock on this read operation. State is marked
+       --  as Atomic so that we ensure that the value retrieved is correct.
+ 
+       return S.State;
+    end Current_State;
+ 
+    ---------------
+    -- Set_False --
+    ---------------
+ 
+    procedure Set_False (S : in out Suspension_Object) is
+       Result : Interfaces.C.int;
+ 
+    begin
+       SSL.Abort_Defer.all;
+ 
+       Result := pthread_mutex_lock (S.L'Access);
+       pragma Assert (Result = 0);
+ 
+       S.State := False;
+ 
+       Result := pthread_mutex_unlock (S.L'Access);
+       pragma Assert (Result = 0);
+ 
+       SSL.Abort_Undefer.all;
+    end Set_False;
+ 
+    --------------
+    -- Set_True --
+    --------------
+ 
+    procedure Set_True (S : in out Suspension_Object) is
+       Result : Interfaces.C.int;
+ 
+    begin
+       SSL.Abort_Defer.all;
+ 
+       Result := pthread_mutex_lock (S.L'Access);
+       pragma Assert (Result = 0);
+ 
+       --  If there is already a task waiting on this suspension object then
+       --  we resume it, leaving the state of the suspension object to False,
+       --  as it is specified in (RM D.10(9)). Otherwise, it just leaves
+       --  the state to True.
+ 
+       if S.Waiting then
+          S.Waiting := False;
+          S.State := False;
+ 
+          Result := pthread_cond_signal (S.CV'Access);
+          pragma Assert (Result = 0);
+ 
+       else
+          S.State := True;
+       end if;
+ 
+       Result := pthread_mutex_unlock (S.L'Access);
+       pragma Assert (Result = 0);
+ 
+       SSL.Abort_Undefer.all;
+    end Set_True;
+ 
+    ------------------------
+    -- Suspend_Until_True --
+    ------------------------
+ 
+    procedure Suspend_Until_True (S : in out Suspension_Object) is
+       Result : Interfaces.C.int;
+ 
+    begin
+       SSL.Abort_Defer.all;
+ 
+       Result := pthread_mutex_lock (S.L'Access);
+       pragma Assert (Result = 0);
+ 
+       if S.Waiting then
+ 
+          --  Program_Error must be raised upon calling Suspend_Until_True
+          --  if another task is already waiting on that suspension object
+          --  (RM D.10(10)).
+ 
+          Result := pthread_mutex_unlock (S.L'Access);
+          pragma Assert (Result = 0);
+ 
+          SSL.Abort_Undefer.all;
+ 
+          raise Program_Error;
+ 
+       else
+          --  Suspend the task if the state is False. Otherwise, the task
+          --  continues its execution, and the state of the suspension object
+          --  is set to False (ARM D.10 par. 9).
+ 
+          if S.State then
+             S.State := False;
+          else
+             S.Waiting := True;
+ 
+             loop
+                --  Loop in case pthread_cond_wait returns earlier than expected
+                --  (e.g. in case of EINTR caused by a signal).
+ 
+                Result := pthread_cond_wait (S.CV'Access, S.L'Access);
+                pragma Assert (Result = 0 or else Result = EINTR);
+ 
+                exit when not S.Waiting;
+             end loop;
+          end if;
+ 
+          Result := pthread_mutex_unlock (S.L'Access);
+          pragma Assert (Result = 0);
+ 
+          SSL.Abort_Undefer.all;
+       end if;
+    end Suspend_Until_True;
+ 
+    ----------------
+    -- Check_Exit --
+    ----------------
+ 
+    --  Dummy version
+ 
+    function Check_Exit (Self_ID : ST.Task_Id) return Boolean is
+       pragma Unreferenced (Self_ID);
+    begin
+       return True;
+    end Check_Exit;
+ 
+    --------------------
+    -- Check_No_Locks --
+    --------------------
+ 
+    function Check_No_Locks (Self_ID : ST.Task_Id) return Boolean is
+       pragma Unreferenced (Self_ID);
+    begin
+       return True;
+    end Check_No_Locks;
+ 
+    ----------------------
+    -- Environment_Task --
+    ----------------------
+ 
+    function Environment_Task return Task_Id is
+    begin
+       return Environment_Task_Id;
+    end Environment_Task;
+ 
+    --------------
+    -- Lock_RTS --
+    --------------
+ 
+    procedure Lock_RTS is
+    begin
+       Write_Lock (Single_RTS_Lock'Access, Global_Lock => True);
+    end Lock_RTS;
+ 
+    ----------------
+    -- Unlock_RTS --
+    ----------------
+ 
+    procedure Unlock_RTS is
+    begin
+       Unlock (Single_RTS_Lock'Access, Global_Lock => True);
+    end Unlock_RTS;
+ 
+    ------------------
+    -- Suspend_Task --
+    ------------------
+ 
+    function Suspend_Task
+      (T           : ST.Task_Id;
+       Thread_Self : Thread_Id) return Boolean
+    is
+       pragma Unreferenced (T, Thread_Self);
+    begin
+       return False;
+    end Suspend_Task;
+ 
+    -----------------
+    -- Resume_Task --
+    -----------------
+ 
+    function Resume_Task
+      (T           : ST.Task_Id;
+       Thread_Self : Thread_Id) return Boolean
+    is
+       pragma Unreferenced (T, Thread_Self);
+    begin
+       return False;
+    end Resume_Task;
+ 
+    --------------------
+    -- Stop_All_Tasks --
+    --------------------
+ 
+    procedure Stop_All_Tasks is
+    begin
+       null;
+    end Stop_All_Tasks;
+ 
+    ---------------
+    -- Stop_Task --
+    ---------------
+ 
+    function Stop_Task (T : ST.Task_Id) return Boolean is
+       pragma Unreferenced (T);
+    begin
+       return False;
+    end Stop_Task;
+ 
+    -------------------
+    -- Continue_Task --
+    -------------------
+ 
+    function Continue_Task (T : ST.Task_Id) return Boolean is
+       pragma Unreferenced (T);
+    begin
+       return False;
+    end Continue_Task;
+ 
+    ----------------
+    -- Initialize --
+    ----------------
+ 
+    procedure Initialize (Environment_Task : Task_Id) is
+       act     : aliased struct_sigaction;
+       old_act : aliased struct_sigaction;
+       Tmp_Set : aliased sigset_t;
+       Result  : Interfaces.C.int;
+ 
+       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
+       --    'u'   Interrupt_State pragma set state to User
+       --    'r'   Interrupt_State pragma set state to Runtime
+       --    's'   Interrupt_State pragma set state to System (use "default"
+       --           system handler)
+ 
+    begin
+       Environment_Task_Id := Environment_Task;
+ 
+       Interrupt_Management.Initialize;
+ 
+       --  Prepare the set of signals that should unblocked in all tasks
+ 
+       Result := sigemptyset (Unblocked_Signal_Mask'Access);
+       pragma Assert (Result = 0);
+ 
+       for J in Interrupt_Management.Interrupt_ID loop
+          if System.Interrupt_Management.Keep_Unmasked (J) then
+             Result := sigaddset (Unblocked_Signal_Mask'Access, Signal (J));
+             pragma Assert (Result = 0);
+          end if;
+       end loop;
+ 
+       --  Initialize the lock used to synchronize chain of all ATCBs
+ 
+       Initialize_Lock (Single_RTS_Lock'Access, RTS_Lock_Level);
+ 
+       Specific.Initialize (Environment_Task);
+ 
+       if Use_Alternate_Stack then
+          Environment_Task.Common.Task_Alternate_Stack :=
+            Alternate_Stack'Address;
+       end if;
+ 
+       --  Make environment task known here because it doesn't go through
+       --  Activate_Tasks, which does it for all other tasks.
+ 
+       Known_Tasks (Known_Tasks'First) := Environment_Task;
+       Environment_Task.Known_Tasks_Index := Known_Tasks'First;
+ 
+       Enter_Task (Environment_Task);
+ 
+       if State
+           (System.Interrupt_Management.Abort_Task_Interrupt) /= Default
+       then
+          act.sa_flags := 0;
+          act.sa_handler := Abort_Handler'Address;
+ 
+          Result := sigemptyset (Tmp_Set'Access);
+          pragma Assert (Result = 0);
+          act.sa_mask := Tmp_Set;
+ 
+          Result :=
+            sigaction
+              (Signal (System.Interrupt_Management.Abort_Task_Interrupt),
+               act'Unchecked_Access,
+               old_act'Unchecked_Access);
+          pragma Assert (Result = 0);
+          Abort_Handler_Installed := True;
+       end if;
+    end Initialize;
+ 
+    -----------------------
+    -- Set_Task_Affinity --
+    -----------------------
+ 
+    procedure Set_Task_Affinity (T : ST.Task_Id) is
+       pragma Unreferenced (T);
+ 
+    begin
+       --  Setting task affinity is not supported by the underlying system
+ 
+       null;
+    end Set_Task_Affinity;
+ 
+ end System.Task_Primitives.Operations;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-taprop__qnx.adb gcc-8.1.0/gcc/ada/libgnarl/s-taprop__qnx.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-taprop__qnx.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-taprop__qnx.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,1354 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --     S Y S T E M . T A S K _ P R I M I T I V E S . O P E R A T I O N S    --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is a POSIX-like version of this package
+ 
+ --  This package contains all the GNULL primitives that interface directly with
+ --  the underlying OS.
+ 
+ --  Note: this file can only be used for POSIX compliant systems that implement
+ --  SCHED_FIFO and Ceiling Locking correctly.
+ 
+ --  For configurations where SCHED_FIFO and priority ceiling are not a
+ --  requirement, this file can also be used (e.g AiX threads)
+ 
+ pragma Polling (Off);
+ --  Turn off polling, we do not want ATC polling to take place during tasking
+ --  operations. It causes infinite loops and other problems.
+ 
+ with Ada.Unchecked_Conversion;
+ 
+ with Interfaces.C;
+ 
+ with System.Tasking.Debug;
+ with System.Interrupt_Management;
+ with System.OS_Constants;
+ with System.OS_Primitives;
+ with System.Task_Info;
+ 
+ with System.Soft_Links;
+ --  We use System.Soft_Links instead of System.Tasking.Initialization
+ --  because the later is a higher level package that we shouldn't depend on.
+ --  For example when using the restricted run time, it is replaced by
+ --  System.Tasking.Restricted.Stages.
+ 
+ package body System.Task_Primitives.Operations is
+ 
+    package OSC renames System.OS_Constants;
+    package SSL renames System.Soft_Links;
+ 
+    use System.Tasking.Debug;
+    use System.Tasking;
+    use Interfaces.C;
+    use System.OS_Interface;
+    use System.Parameters;
+    use System.OS_Primitives;
+ 
+    ----------------
+    -- Local Data --
+    ----------------
+ 
+    --  The followings are logically constants, but need to be initialized
+    --  at run time.
+ 
+    Single_RTS_Lock : aliased RTS_Lock;
+    --  This is a lock to allow only one thread of control in the RTS at
+    --  a time; it is used to execute in mutual exclusion from all other tasks.
+    --  Used mainly in Single_Lock mode, but also to protect All_Tasks_List
+ 
+    Environment_Task_Id : Task_Id;
+    --  A variable to hold Task_Id for the environment task
+ 
+    Locking_Policy : Character;
+    pragma Import (C, Locking_Policy, "__gl_locking_policy");
+    --  Value of the pragma Locking_Policy:
+    --    'C' for Ceiling_Locking
+    --    'I' for Inherit_Locking
+    --    ' ' for none.
+ 
+    Unblocked_Signal_Mask : aliased sigset_t;
+    --  The set of signals that should unblocked in all tasks
+ 
+    --  The followings are internal configuration constants needed
+ 
+    Next_Serial_Number : Task_Serial_Number := 100;
+    --  We start at 100, to reserve some special values for
+    --  using in error checking.
+ 
+    Time_Slice_Val : Integer;
+    pragma Import (C, Time_Slice_Val, "__gl_time_slice_val");
+ 
+    Dispatching_Policy : Character;
+    pragma Import (C, Dispatching_Policy, "__gl_task_dispatching_policy");
+ 
+    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;
+    --  True if a handler for the abort signal is installed
+ 
+    type RTS_Lock_Ptr is not null access all RTS_Lock;
+ 
+    function Init_Mutex (L : RTS_Lock_Ptr; Prio : Any_Priority) return int;
+    --  Initialize the mutex L. If Ceiling_Support is True, then set the ceiling
+    --  to Prio. Returns 0 for success, or ENOMEM for out-of-memory.
+ 
+    function Get_Policy (Prio : System.Any_Priority) return Character;
+    pragma Import (C, Get_Policy, "__gnat_get_specific_dispatching");
+    --  Get priority specific dispatching policy
+ 
+    --------------------
+    -- Local Packages --
+    --------------------
+ 
+    package Specific is
+ 
+       procedure Initialize (Environment_Task : Task_Id);
+       pragma Inline (Initialize);
+       --  Initialize various data needed by this package
+ 
+       function Is_Valid_Task return Boolean;
+       pragma Inline (Is_Valid_Task);
+       --  Does executing thread have a TCB?
+ 
+       procedure Set (Self_Id : Task_Id);
+       pragma Inline (Set);
+       --  Set the self id for the current task
+ 
+       function Self return Task_Id;
+       pragma Inline (Self);
+       --  Return a pointer to the Ada Task Control Block of the calling task
+ 
+    end Specific;
+ 
+    package body Specific is separate;
+    --  The body of this package is target specific
+ 
+    package Monotonic is
+ 
+       function Monotonic_Clock return Duration;
+       pragma Inline (Monotonic_Clock);
+       --  Returns an absolute time, represented as an offset relative to some
+       --  unspecified starting point, typically system boot time.  This clock
+       --  is not affected by discontinuous jumps in the system time.
+ 
+       function RT_Resolution return Duration;
+       pragma Inline (RT_Resolution);
+       --  Returns resolution of the underlying clock used to implement RT_Clock
+ 
+       procedure Timed_Sleep
+         (Self_ID  : ST.Task_Id;
+          Time     : Duration;
+          Mode     : ST.Delay_Modes;
+          Reason   : System.Tasking.Task_States;
+          Timedout : out Boolean;
+          Yielded  : out Boolean);
+       --  Combination of Sleep (above) and Timed_Delay
+ 
+       procedure Timed_Delay
+         (Self_ID : ST.Task_Id;
+          Time    : Duration;
+          Mode    : ST.Delay_Modes);
+       --  Implement the semantics of the delay statement.
+       --  The caller should be abort-deferred and should not hold any locks.
+ 
+    end Monotonic;
+ 
+    package body Monotonic is separate;
+ 
+    ----------------------------------
+    -- ATCB allocation/deallocation --
+    ----------------------------------
+ 
+    package body ATCB_Allocation is separate;
+    --  The body of this package is shared across several targets
+ 
+    ---------------------------------
+    -- Support for foreign threads --
+    ---------------------------------
+ 
+    function Register_Foreign_Thread
+      (Thread         : Thread_Id;
+       Sec_Stack_Size : Size_Type := Unspecified_Size) return Task_Id;
+    --  Allocate and initialize a new ATCB for the current Thread. The size of
+    --  the secondary stack can be optionally specified.
+ 
+    function Register_Foreign_Thread
+      (Thread         : Thread_Id;
+       Sec_Stack_Size : Size_Type := Unspecified_Size)
+      return Task_Id is separate;
+ 
+    -----------------------
+    -- Local Subprograms --
+    -----------------------
+ 
+    procedure Abort_Handler (Sig : Signal);
+    --  Signal handler used to implement asynchronous abort.
+    --  See also comment before body, below.
+ 
+    function To_Address is
+      new Ada.Unchecked_Conversion (Task_Id, System.Address);
+ 
+    function GNAT_pthread_condattr_setup
+      (attr : access pthread_condattr_t) return int;
+    pragma Import (C,
+      GNAT_pthread_condattr_setup, "__gnat_pthread_condattr_setup");
+ 
+    -------------------
+    -- Abort_Handler --
+    -------------------
+ 
+    --  Target-dependent binding of inter-thread Abort signal to the raising of
+    --  the Abort_Signal exception.
+ 
+    --  The technical issues and alternatives here are essentially the
+    --  same as for raising exceptions in response to other signals
+    --  (e.g. Storage_Error). See code and comments in the package body
+    --  System.Interrupt_Management.
+ 
+    --  Some implementations may not allow an exception to be propagated out of
+    --  a handler, and others might leave the signal or interrupt that invoked
+    --  this handler masked after the exceptional return to the application
+    --  code.
+ 
+    --  GNAT exceptions are originally implemented using setjmp()/longjmp(). On
+    --  most UNIX systems, this will allow transfer out of a signal handler,
+    --  which is usually the only mechanism available for implementing
+    --  asynchronous handlers of this kind. However, some systems do not
+    --  restore the signal mask on longjmp(), leaving the abort signal masked.
+ 
+    procedure Abort_Handler (Sig : Signal) is
+       pragma Unreferenced (Sig);
+ 
+       T       : constant Task_Id := Self;
+       Old_Set : aliased sigset_t;
+ 
+       Result : Interfaces.C.int;
+       pragma Warnings (Off, Result);
+ 
+    begin
+       --  It's not safe to raise an exception when using GCC ZCX mechanism.
+       --  Note that we still need to install a signal handler, since in some
+       --  cases (e.g. shutdown of the Server_Task in System.Interrupts) we
+       --  need to send the Abort signal to a task.
+ 
+       if ZCX_By_Default then
+          return;
+       end if;
+ 
+       if T.Deferral_Level = 0
+         and then T.Pending_ATC_Level < T.ATC_Nesting_Level and then
+         not T.Aborting
+       then
+          T.Aborting := True;
+ 
+          --  Make sure signals used for RTS internal purpose are unmasked
+ 
+          Result := pthread_sigmask (SIG_UNBLOCK,
+            Unblocked_Signal_Mask'Access, Old_Set'Access);
+          pragma Assert (Result = 0);
+ 
+          raise Standard'Abort_Signal;
+       end if;
+    end Abort_Handler;
+ 
+    -----------------
+    -- Stack_Guard --
+    -----------------
+ 
+    procedure Stack_Guard (T : ST.Task_Id; On : Boolean) is
+       Stack_Base : constant Address := Get_Stack_Base (T.Common.LL.Thread);
+       Page_Size  : Address;
+       Res        : Interfaces.C.int;
+ 
+    begin
+       if Stack_Base_Available then
+ 
+          --  Compute the guard page address
+ 
+          Page_Size := Address (Get_Page_Size);
+          Res :=
+            mprotect
+              (Stack_Base - (Stack_Base mod Page_Size) + Page_Size,
+               size_t (Page_Size),
+               prot => (if On then PROT_ON else PROT_OFF));
+          pragma Assert (Res = 0);
+       end if;
+    end Stack_Guard;
+ 
+    --------------------
+    -- Get_Thread_Id  --
+    --------------------
+ 
+    function Get_Thread_Id (T : ST.Task_Id) return OSI.Thread_Id is
+    begin
+       return T.Common.LL.Thread;
+    end Get_Thread_Id;
+ 
+    ----------
+    -- Self --
+    ----------
+ 
+    function Self return Task_Id renames Specific.Self;
+ 
+    ----------------
+    -- Init_Mutex --
+    ----------------
+ 
+    function Init_Mutex (L : RTS_Lock_Ptr; Prio : Any_Priority) return int
+    is
+       Attributes : aliased pthread_mutexattr_t;
+       Result     : int;
+       Result_2   : aliased int;
+ 
+    begin
+       Result := pthread_mutexattr_init (Attributes'Access);
+       pragma Assert (Result = 0 or else Result = ENOMEM);
+ 
+       if Result = ENOMEM then
+          return Result;
+       end if;
+ 
+       if Locking_Policy = 'C' then
+          Result := pthread_mutexattr_setprotocol
+            (Attributes'Access, PTHREAD_PRIO_PROTECT);
+          pragma Assert (Result = 0);
+ 
+          Result := pthread_mutexattr_getprotocol
+            (Attributes'Access, Result_2'Access);
+          if Result_2 /= PTHREAD_PRIO_PROTECT then
+             raise Program_Error with "setprotocol failed";
+          end if;
+ 
+          Result := pthread_mutexattr_setprioceiling
+             (Attributes'Access, To_Target_Priority (Prio));
+          pragma Assert (Result = 0);
+ 
+       elsif Locking_Policy = 'I' then
+          Result := pthread_mutexattr_setprotocol
+            (Attributes'Access, PTHREAD_PRIO_INHERIT);
+          pragma Assert (Result = 0);
+       end if;
+ 
+       Result := pthread_mutex_init (L, Attributes'Access);
+       pragma Assert (Result = 0 or else Result = ENOMEM);
+ 
+       Result_2 := pthread_mutexattr_destroy (Attributes'Access);
+       pragma Assert (Result_2 = 0);
+ 
+       return Result;
+    end Init_Mutex;
+ 
+    ---------------------
+    -- Initialize_Lock --
+    ---------------------
+ 
+    --  Note: mutexes and cond_variables needed per-task basis are initialized
+    --  in Initialize_TCB and the Storage_Error is handled. Other mutexes (such
+    --  as RTS_Lock, Memory_Lock...) used in RTS is initialized before any
+    --  status change of RTS. Therefore raising Storage_Error in the following
+    --  routines should be able to be handled safely.
+ 
+    procedure Initialize_Lock
+      (Prio : System.Any_Priority;
+       L    : not null access Lock)
+    is
+    begin
+       if Init_Mutex (L.WO'Access, Prio) = ENOMEM then
+          raise Storage_Error with "Failed to allocate a lock";
+       end if;
+    end Initialize_Lock;
+ 
+    procedure Initialize_Lock
+      (L : not null access RTS_Lock; Level : Lock_Level)
+    is
+       pragma Unreferenced (Level);
+ 
+    begin
+       if Init_Mutex (L.all'Access, Any_Priority'Last) = ENOMEM then
+          raise Storage_Error with "Failed to allocate a lock";
+       end if;
+    end Initialize_Lock;
+ 
+    -------------------
+    -- Finalize_Lock --
+    -------------------
+ 
+    procedure Finalize_Lock (L : not null access Lock) is
+       Result : Interfaces.C.int;
+    begin
+       Result := pthread_mutex_destroy (L.WO'Access);
+       pragma Assert (Result = 0);
+    end Finalize_Lock;
+ 
+    procedure Finalize_Lock (L : not null access RTS_Lock) is
+       Result : Interfaces.C.int;
+    begin
+       Result := pthread_mutex_destroy (L);
+       pragma Assert (Result = 0);
+    end Finalize_Lock;
+ 
+    ----------------
+    -- Write_Lock --
+    ----------------
+ 
+    procedure Write_Lock
+      (L : not null access Lock; Ceiling_Violation : out Boolean)
+    is
+       Self    : constant pthread_t := pthread_self;
+       Result  : int;
+       Policy  : aliased int;
+       Ceiling : aliased int;
+       Sched   : aliased struct_sched_param;
+ 
+    begin
+       Result := pthread_mutex_lock (L.WO'Access);
+ 
+       --  The cause of EINVAL is a priority ceiling violation
+ 
+       Ceiling_Violation := Result = EINVAL;
+       pragma Assert (Result = 0 or else Ceiling_Violation);
+ 
+       --  Workaround bug in QNX on ceiling locks: tasks with priority higher
+       --  than the ceiling priority don't receive EINVAL upon trying to lock.
+       if Result = 0 and then Locking_Policy = 'C' then
+          Result := pthread_getschedparam (Self, Policy'Access, Sched'Access);
+          pragma Assert (Result = 0);
+          Result := pthread_mutex_getprioceiling (L.WO'Access, Ceiling'Access);
+          pragma Assert (Result = 0);
+ 
+          --  Ceiling < current priority means Ceiling violation
+          --  (otherwise the current priority == ceiling)
+          if Ceiling < Sched.sched_curpriority then
+             Ceiling_Violation := True;
+             Result := pthread_mutex_unlock (L.WO'Access);
+             pragma Assert (Result = 0);
+          end if;
+       end if;
+    end Write_Lock;
+ 
+    procedure Write_Lock
+      (L           : not null access RTS_Lock;
+       Global_Lock : Boolean := False)
+    is
+       Result : Interfaces.C.int;
+    begin
+       if not Single_Lock or else Global_Lock then
+          Result := pthread_mutex_lock (L);
+          pragma Assert (Result = 0);
+       end if;
+    end Write_Lock;
+ 
+    procedure Write_Lock (T : Task_Id) is
+       Result : Interfaces.C.int;
+    begin
+       if not Single_Lock then
+          Result := pthread_mutex_lock (T.Common.LL.L'Access);
+          pragma Assert (Result = 0);
+       end if;
+    end Write_Lock;
+ 
+    ---------------
+    -- Read_Lock --
+    ---------------
+ 
+    procedure Read_Lock
+      (L : not null access Lock; Ceiling_Violation : out Boolean) is
+    begin
+       Write_Lock (L, Ceiling_Violation);
+    end Read_Lock;
+ 
+    ------------
+    -- Unlock --
+    ------------
+ 
+    procedure Unlock (L : not null access Lock) is
+       Result : Interfaces.C.int;
+    begin
+       Result := pthread_mutex_unlock (L.WO'Access);
+       pragma Assert (Result = 0);
+    end Unlock;
+ 
+    procedure Unlock
+      (L : not null access RTS_Lock; Global_Lock : Boolean := False)
+    is
+       Result : Interfaces.C.int;
+    begin
+       if not Single_Lock or else Global_Lock then
+          Result := pthread_mutex_unlock (L);
+          pragma Assert (Result = 0);
+       end if;
+    end Unlock;
+ 
+    procedure Unlock (T : Task_Id) is
+       Result : Interfaces.C.int;
+    begin
+       if not Single_Lock then
+          Result := pthread_mutex_unlock (T.Common.LL.L'Access);
+          pragma Assert (Result = 0);
+       end if;
+    end Unlock;
+ 
+    -----------------
+    -- Set_Ceiling --
+    -----------------
+ 
+    procedure Set_Ceiling
+      (L    : not null access Lock;
+       Prio : System.Any_Priority)
+    is
+       Result : Interfaces.C.int;
+    begin
+       Result := pthread_mutex_setprioceiling
+         (L.WO'Access, To_Target_Priority (Prio), null);
+       pragma Assert (Result = 0);
+    end Set_Ceiling;
+ 
+    -----------
+    -- Sleep --
+    -----------
+ 
+    procedure Sleep
+      (Self_ID : Task_Id;
+       Reason  : System.Tasking.Task_States)
+    is
+       pragma Unreferenced (Reason);
+ 
+       Result : Interfaces.C.int;
+ 
+    begin
+       Result :=
+         pthread_cond_wait
+           (cond  => Self_ID.Common.LL.CV'Access,
+            mutex => (if Single_Lock
+                      then Single_RTS_Lock'Access
+                      else Self_ID.Common.LL.L'Access));
+ 
+       --  EINTR is not considered a failure
+ 
+       pragma Assert (Result = 0 or else Result = EINTR);
+    end Sleep;
+ 
+    -----------------
+    -- Timed_Sleep --
+    -----------------
+ 
+    --  This is for use within the run-time system, so abort is
+    --  assumed to be already deferred, and the caller should be
+    --  holding its own ATCB lock.
+ 
+    procedure Timed_Sleep
+      (Self_ID  : Task_Id;
+       Time     : Duration;
+       Mode     : ST.Delay_Modes;
+       Reason   : Task_States;
+       Timedout : out Boolean;
+       Yielded  : out Boolean) renames Monotonic.Timed_Sleep;
+ 
+    -----------------
+    -- Timed_Delay --
+    -----------------
+ 
+    --  This is for use in implementing delay statements, so we assume the
+    --  caller is abort-deferred but is holding no locks.
+ 
+    procedure Timed_Delay
+      (Self_ID : Task_Id;
+       Time    : Duration;
+       Mode    : ST.Delay_Modes) renames Monotonic.Timed_Delay;
+ 
+    ---------------------
+    -- Monotonic_Clock --
+    ---------------------
+ 
+    function Monotonic_Clock return Duration renames Monotonic.Monotonic_Clock;
+ 
+    -------------------
+    -- RT_Resolution --
+    -------------------
+ 
+    function RT_Resolution return Duration renames Monotonic.RT_Resolution;
+ 
+    ------------
+    -- Wakeup --
+    ------------
+ 
+    procedure Wakeup (T : Task_Id; Reason : System.Tasking.Task_States) is
+       pragma Unreferenced (Reason);
+       Result : Interfaces.C.int;
+    begin
+       Result := pthread_cond_signal (T.Common.LL.CV'Access);
+       pragma Assert (Result = 0);
+    end Wakeup;
+ 
+    -----------
+    -- Yield --
+    -----------
+ 
+    procedure Yield (Do_Yield : Boolean := True) is
+       Result : Interfaces.C.int;
+       pragma Unreferenced (Result);
+    begin
+       if Do_Yield then
+          Result := sched_yield;
+       end if;
+    end Yield;
+ 
+    ------------------
+    -- Set_Priority --
+    ------------------
+ 
+    procedure Set_Priority
+      (T                   : Task_Id;
+       Prio                : System.Any_Priority;
+       Loss_Of_Inheritance : Boolean := False)
+    is
+       pragma Unreferenced (Loss_Of_Inheritance);
+       Result : Interfaces.C.int;
+       Old    : constant System.Any_Priority := T.Common.Current_Priority;
+ 
+    begin
+       T.Common.Current_Priority := Prio;
+       Result := pthread_setschedprio
+         (T.Common.LL.Thread, To_Target_Priority (Prio));
+       pragma Assert (Result = 0);
+ 
+       if T.Common.LL.Thread = pthread_self
+         and then Old > Prio
+       then
+          --  When lowering the priority via a pthread_setschedprio, QNX ensures
+          --  that the running thread remains in the head of the FIFO for tne
+          --  new priority. Annex D expects the thread to be requeued so let's
+          --  yield to the other threads of the same priority.
+          Result := sched_yield;
+          pragma Assert (Result = 0);
+       end if;
+    end Set_Priority;
+ 
+    ------------------
+    -- Get_Priority --
+    ------------------
+ 
+    function Get_Priority (T : Task_Id) return System.Any_Priority is
+    begin
+       return T.Common.Current_Priority;
+    end Get_Priority;
+ 
+    ----------------
+    -- Enter_Task --
+    ----------------
+ 
+    procedure Enter_Task (Self_ID : Task_Id) is
+    begin
+       Self_ID.Common.LL.Thread := pthread_self;
+       Self_ID.Common.LL.LWP := lwp_self;
+ 
+       Specific.Set (Self_ID);
+ 
+       if Use_Alternate_Stack then
+          declare
+             Stack  : aliased stack_t;
+             Result : Interfaces.C.int;
+          begin
+             Stack.ss_sp    := Self_ID.Common.Task_Alternate_Stack;
+             Stack.ss_size  := Alternate_Stack_Size;
+             Stack.ss_flags := 0;
+             Result := sigaltstack (Stack'Access, null);
+             pragma Assert (Result = 0);
+          end;
+       end if;
+    end Enter_Task;
+ 
+    -------------------
+    -- Is_Valid_Task --
+    -------------------
+ 
+    function Is_Valid_Task return Boolean renames Specific.Is_Valid_Task;
+ 
+    -----------------------------
+    -- Register_Foreign_Thread --
+    -----------------------------
+ 
+    function Register_Foreign_Thread return Task_Id is
+    begin
+       if Is_Valid_Task then
+          return Self;
+       else
+          return Register_Foreign_Thread (pthread_self);
+       end if;
+    end Register_Foreign_Thread;
+ 
+    --------------------
+    -- Initialize_TCB --
+    --------------------
+ 
+    procedure Initialize_TCB (Self_ID : Task_Id; Succeeded : out Boolean)
+    is
+       Result     : Interfaces.C.int;
+       Cond_Attr  : aliased pthread_condattr_t;
+ 
+    begin
+       --  Give the task a unique serial number
+ 
+       Self_ID.Serial_Number := Next_Serial_Number;
+       Next_Serial_Number := Next_Serial_Number + 1;
+       pragma Assert (Next_Serial_Number /= 0);
+ 
+       if not Single_Lock then
+          Result := Init_Mutex (Self_ID.Common.LL.L'Access, Any_Priority'Last);
+          pragma Assert (Result = 0);
+ 
+          if Result /= 0 then
+             Succeeded := False;
+             return;
+          end if;
+       end if;
+ 
+       Result := pthread_condattr_init (Cond_Attr'Access);
+       pragma Assert (Result = 0 or else Result = ENOMEM);
+ 
+       if Result = 0 then
+          Result := GNAT_pthread_condattr_setup (Cond_Attr'Access);
+          pragma Assert (Result = 0);
+ 
+          Result :=
+            pthread_cond_init
+              (Self_ID.Common.LL.CV'Access, Cond_Attr'Access);
+          pragma Assert (Result = 0 or else Result = ENOMEM);
+       end if;
+ 
+       if Result = 0 then
+          Succeeded := True;
+       else
+          if not Single_Lock then
+             Result := pthread_mutex_destroy (Self_ID.Common.LL.L'Access);
+             pragma Assert (Result = 0);
+          end if;
+ 
+          Succeeded := False;
+       end if;
+ 
+       Result := pthread_condattr_destroy (Cond_Attr'Access);
+       pragma Assert (Result = 0);
+    end Initialize_TCB;
+ 
+    -----------------
+    -- Create_Task --
+    -----------------
+ 
+    procedure Create_Task
+      (T          : Task_Id;
+       Wrapper    : System.Address;
+       Stack_Size : System.Parameters.Size_Type;
+       Priority   : System.Any_Priority;
+       Succeeded  : out Boolean)
+    is
+       Attributes               : aliased pthread_attr_t;
+       Adjusted_Stack_Size      : Interfaces.C.size_t;
+       Page_Size                : constant Interfaces.C.size_t :=
+                                    Interfaces.C.size_t (Get_Page_Size);
+       Sched_Param              : aliased struct_sched_param;
+       Result                   : Interfaces.C.int;
+ 
+       Priority_Specific_Policy : constant Character := Get_Policy (Priority);
+       --  Upper case first character of the policy name corresponding to the
+       --  task as set by a Priority_Specific_Dispatching pragma.
+ 
+       function Thread_Body_Access is new
+         Ada.Unchecked_Conversion (System.Address, Thread_Body);
+ 
+    begin
+       Adjusted_Stack_Size :=
+          Interfaces.C.size_t (Stack_Size + Alternate_Stack_Size);
+ 
+       if Stack_Base_Available then
+ 
+          --  If Stack Checking is supported then allocate 2 additional pages:
+ 
+          --  In the worst case, stack is allocated at something like
+          --  N * Get_Page_Size - epsilon, we need to add the size for 2 pages
+          --  to be sure the effective stack size is greater than what
+          --  has been asked.
+ 
+          Adjusted_Stack_Size := Adjusted_Stack_Size + 2 * Page_Size;
+       end if;
+ 
+       --  Round stack size as this is required by some OSes (Darwin)
+ 
+       Adjusted_Stack_Size := Adjusted_Stack_Size + Page_Size - 1;
+       Adjusted_Stack_Size :=
+         Adjusted_Stack_Size - Adjusted_Stack_Size mod Page_Size;
+ 
+       Result := pthread_attr_init (Attributes'Access);
+       pragma Assert (Result = 0 or else Result = ENOMEM);
+ 
+       if Result /= 0 then
+          Succeeded := False;
+          return;
+       end if;
+ 
+       Result :=
+         pthread_attr_setdetachstate
+           (Attributes'Access, PTHREAD_CREATE_DETACHED);
+       pragma Assert (Result = 0);
+ 
+       Result :=
+         pthread_attr_setstacksize
+           (Attributes'Access, Adjusted_Stack_Size);
+       pragma Assert (Result = 0);
+ 
+       --  Set thread priority
+       T.Common.Current_Priority := Priority;
+       Sched_Param.sched_priority := To_Target_Priority (Priority);
+ 
+       Result := pthread_attr_setinheritsched
+         (Attributes'Access, PTHREAD_EXPLICIT_SCHED);
+       pragma Assert (Result = 0);
+ 
+       Result := pthread_attr_setschedparam
+         (Attributes'Access, Sched_Param'Access);
+       pragma Assert (Result = 0);
+ 
+       if Time_Slice_Supported
+         and then (Dispatching_Policy = 'R'
+                   or else Priority_Specific_Policy = 'R'
+                   or else Time_Slice_Val > 0)
+       then
+          Result := pthread_attr_setschedpolicy
+            (Attributes'Access, SCHED_RR);
+ 
+       elsif Dispatching_Policy = 'F'
+         or else Priority_Specific_Policy = 'F'
+         or else Time_Slice_Val = 0
+       then
+          Result := pthread_attr_setschedpolicy
+            (Attributes'Access, SCHED_FIFO);
+ 
+       else
+          Result := pthread_attr_setschedpolicy
+            (Attributes'Access, SCHED_OTHER);
+       end if;
+ 
+       pragma Assert (Result = 0);
+ 
+       --  Since the initial signal mask of a thread is inherited from the
+       --  creator, and the Environment task has all its signals masked, we
+       --  do not need to manipulate caller's signal mask at this point.
+       --  All tasks in RTS will have All_Tasks_Mask initially.
+ 
+       --  Note: the use of Unrestricted_Access in the following call is needed
+       --  because otherwise we have an error of getting a access-to-volatile
+       --  value which points to a non-volatile object. But in this case it is
+       --  safe to do this, since we know we have no problems with aliasing and
+       --  Unrestricted_Access bypasses this check.
+ 
+       Result := pthread_create
+         (T.Common.LL.Thread'Unrestricted_Access,
+          Attributes'Access,
+          Thread_Body_Access (Wrapper),
+          To_Address (T));
+       pragma Assert (Result = 0 or else Result = EAGAIN);
+ 
+       Succeeded := Result = 0;
+ 
+       Result := pthread_attr_destroy (Attributes'Access);
+       pragma Assert (Result = 0);
+    end Create_Task;
+ 
+    ------------------
+    -- Finalize_TCB --
+    ------------------
+ 
+    procedure Finalize_TCB (T : Task_Id) is
+       Result : Interfaces.C.int;
+ 
+    begin
+       if not Single_Lock then
+          Result := pthread_mutex_destroy (T.Common.LL.L'Access);
+          pragma Assert (Result = 0);
+       end if;
+ 
+       Result := pthread_cond_destroy (T.Common.LL.CV'Access);
+       pragma Assert (Result = 0);
+ 
+       if T.Known_Tasks_Index /= -1 then
+          Known_Tasks (T.Known_Tasks_Index) := null;
+       end if;
+ 
+       ATCB_Allocation.Free_ATCB (T);
+    end Finalize_TCB;
+ 
+    ---------------
+    -- Exit_Task --
+    ---------------
+ 
+    procedure Exit_Task is
+    begin
+       --  Mark this task as unknown, so that if Self is called, it won't
+       --  return a dangling pointer.
+ 
+       Specific.Set (null);
+    end Exit_Task;
+ 
+    ----------------
+    -- Abort_Task --
+    ----------------
+ 
+    procedure Abort_Task (T : Task_Id) is
+       Result : Interfaces.C.int;
+    begin
+       if Abort_Handler_Installed then
+          Result :=
+            pthread_kill
+              (T.Common.LL.Thread,
+               Signal (System.Interrupt_Management.Abort_Task_Interrupt));
+          pragma Assert (Result = 0);
+       end if;
+    end Abort_Task;
+ 
+    ----------------
+    -- Initialize --
+    ----------------
+ 
+    procedure Initialize (S : in out Suspension_Object) is
+       Mutex_Attr : aliased pthread_mutexattr_t;
+       Cond_Attr  : aliased pthread_condattr_t;
+       Result     : Interfaces.C.int;
+ 
+    begin
+       --  Initialize internal state (always to False (RM D.10 (6)))
+ 
+       S.State := False;
+       S.Waiting := False;
+ 
+       --  Initialize internal mutex
+ 
+       Result := pthread_mutexattr_init (Mutex_Attr'Access);
+       pragma Assert (Result = 0 or else Result = ENOMEM);
+ 
+       if Result = ENOMEM then
+          raise Storage_Error;
+       end if;
+ 
+       Result := pthread_mutex_init (S.L'Access, Mutex_Attr'Access);
+       pragma Assert (Result = 0 or else Result = ENOMEM);
+ 
+       if Result = ENOMEM then
+          Result := pthread_mutexattr_destroy (Mutex_Attr'Access);
+          pragma Assert (Result = 0);
+ 
+          raise Storage_Error;
+       end if;
+ 
+       Result := pthread_mutexattr_destroy (Mutex_Attr'Access);
+       pragma Assert (Result = 0);
+ 
+       --  Initialize internal condition variable
+ 
+       Result := pthread_condattr_init (Cond_Attr'Access);
+       pragma Assert (Result = 0 or else Result = ENOMEM);
+ 
+       if Result /= 0 then
+          Result := pthread_mutex_destroy (S.L'Access);
+          pragma Assert (Result = 0);
+ 
+          --  Storage_Error is propagated as intended if the allocation of the
+          --  underlying OS entities fails.
+ 
+          raise Storage_Error;
+ 
+       else
+          Result := GNAT_pthread_condattr_setup (Cond_Attr'Access);
+          pragma Assert (Result = 0);
+       end if;
+ 
+       Result := pthread_cond_init (S.CV'Access, Cond_Attr'Access);
+       pragma Assert (Result = 0 or else Result = ENOMEM);
+ 
+       if Result /= 0 then
+          Result := pthread_mutex_destroy (S.L'Access);
+          pragma Assert (Result = 0);
+ 
+          Result := pthread_condattr_destroy (Cond_Attr'Access);
+          pragma Assert (Result = 0);
+ 
+          --  Storage_Error is propagated as intended if the allocation of the
+          --  underlying OS entities fails.
+ 
+          raise Storage_Error;
+       end if;
+ 
+       Result := pthread_condattr_destroy (Cond_Attr'Access);
+       pragma Assert (Result = 0);
+    end Initialize;
+ 
+    --------------
+    -- Finalize --
+    --------------
+ 
+    procedure Finalize (S : in out Suspension_Object) is
+       Result : Interfaces.C.int;
+ 
+    begin
+       --  Destroy internal mutex
+ 
+       Result := pthread_mutex_destroy (S.L'Access);
+       pragma Assert (Result = 0);
+ 
+       --  Destroy internal condition variable
+ 
+       Result := pthread_cond_destroy (S.CV'Access);
+       pragma Assert (Result = 0);
+    end Finalize;
+ 
+    -------------------
+    -- Current_State --
+    -------------------
+ 
+    function Current_State (S : Suspension_Object) return Boolean is
+    begin
+       --  We do not want to use lock on this read operation. State is marked
+       --  as Atomic so that we ensure that the value retrieved is correct.
+ 
+       return S.State;
+    end Current_State;
+ 
+    ---------------
+    -- Set_False --
+    ---------------
+ 
+    procedure Set_False (S : in out Suspension_Object) is
+       Result : Interfaces.C.int;
+ 
+    begin
+       SSL.Abort_Defer.all;
+ 
+       Result := pthread_mutex_lock (S.L'Access);
+       pragma Assert (Result = 0);
+ 
+       S.State := False;
+ 
+       Result := pthread_mutex_unlock (S.L'Access);
+       pragma Assert (Result = 0);
+ 
+       SSL.Abort_Undefer.all;
+    end Set_False;
+ 
+    --------------
+    -- Set_True --
+    --------------
+ 
+    procedure Set_True (S : in out Suspension_Object) is
+       Result : Interfaces.C.int;
+ 
+    begin
+       SSL.Abort_Defer.all;
+ 
+       Result := pthread_mutex_lock (S.L'Access);
+       pragma Assert (Result = 0);
+ 
+       --  If there is already a task waiting on this suspension object then
+       --  we resume it, leaving the state of the suspension object to False,
+       --  as it is specified in (RM D.10(9)). Otherwise, it just leaves
+       --  the state to True.
+ 
+       if S.Waiting then
+          S.Waiting := False;
+          S.State := False;
+ 
+          Result := pthread_cond_signal (S.CV'Access);
+          pragma Assert (Result = 0);
+ 
+       else
+          S.State := True;
+       end if;
+ 
+       Result := pthread_mutex_unlock (S.L'Access);
+       pragma Assert (Result = 0);
+ 
+       SSL.Abort_Undefer.all;
+    end Set_True;
+ 
+    ------------------------
+    -- Suspend_Until_True --
+    ------------------------
+ 
+    procedure Suspend_Until_True (S : in out Suspension_Object) is
+       Result : Interfaces.C.int;
+ 
+    begin
+       SSL.Abort_Defer.all;
+ 
+       Result := pthread_mutex_lock (S.L'Access);
+       pragma Assert (Result = 0);
+ 
+       if S.Waiting then
+ 
+          --  Program_Error must be raised upon calling Suspend_Until_True
+          --  if another task is already waiting on that suspension object
+          --  (RM D.10(10)).
+ 
+          Result := pthread_mutex_unlock (S.L'Access);
+          pragma Assert (Result = 0);
+ 
+          SSL.Abort_Undefer.all;
+ 
+          raise Program_Error;
+ 
+       else
+          --  Suspend the task if the state is False. Otherwise, the task
+          --  continues its execution, and the state of the suspension object
+          --  is set to False (ARM D.10 par. 9).
+ 
+          if S.State then
+             S.State := False;
+          else
+             S.Waiting := True;
+ 
+             loop
+                --  Loop in case pthread_cond_wait returns earlier than expected
+                --  (e.g. in case of EINTR caused by a signal).
+ 
+                Result := pthread_cond_wait (S.CV'Access, S.L'Access);
+                pragma Assert (Result = 0 or else Result = EINTR);
+ 
+                exit when not S.Waiting;
+             end loop;
+          end if;
+ 
+          Result := pthread_mutex_unlock (S.L'Access);
+          pragma Assert (Result = 0);
+ 
+          SSL.Abort_Undefer.all;
+       end if;
+    end Suspend_Until_True;
+ 
+    ----------------
+    -- Check_Exit --
+    ----------------
+ 
+    --  Dummy version
+ 
+    function Check_Exit (Self_ID : ST.Task_Id) return Boolean is
+       pragma Unreferenced (Self_ID);
+    begin
+       return True;
+    end Check_Exit;
+ 
+    --------------------
+    -- Check_No_Locks --
+    --------------------
+ 
+    function Check_No_Locks (Self_ID : ST.Task_Id) return Boolean is
+       pragma Unreferenced (Self_ID);
+    begin
+       return True;
+    end Check_No_Locks;
+ 
+    ----------------------
+    -- Environment_Task --
+    ----------------------
+ 
+    function Environment_Task return Task_Id is
+    begin
+       return Environment_Task_Id;
+    end Environment_Task;
+ 
+    --------------
+    -- Lock_RTS --
+    --------------
+ 
+    procedure Lock_RTS is
+    begin
+       Write_Lock (Single_RTS_Lock'Access, Global_Lock => True);
+    end Lock_RTS;
+ 
+    ----------------
+    -- Unlock_RTS --
+    ----------------
+ 
+    procedure Unlock_RTS is
+    begin
+       Unlock (Single_RTS_Lock'Access, Global_Lock => True);
+    end Unlock_RTS;
+ 
+    ------------------
+    -- Suspend_Task --
+    ------------------
+ 
+    function Suspend_Task
+      (T           : ST.Task_Id;
+       Thread_Self : Thread_Id) return Boolean
+    is
+       pragma Unreferenced (T, Thread_Self);
+    begin
+       return False;
+    end Suspend_Task;
+ 
+    -----------------
+    -- Resume_Task --
+    -----------------
+ 
+    function Resume_Task
+      (T           : ST.Task_Id;
+       Thread_Self : Thread_Id) return Boolean
+    is
+       pragma Unreferenced (T, Thread_Self);
+    begin
+       return False;
+    end Resume_Task;
+ 
+    --------------------
+    -- Stop_All_Tasks --
+    --------------------
+ 
+    procedure Stop_All_Tasks is
+    begin
+       null;
+    end Stop_All_Tasks;
+ 
+    ---------------
+    -- Stop_Task --
+    ---------------
+ 
+    function Stop_Task (T : ST.Task_Id) return Boolean is
+       pragma Unreferenced (T);
+    begin
+       return False;
+    end Stop_Task;
+ 
+    -------------------
+    -- Continue_Task --
+    -------------------
+ 
+    function Continue_Task (T : ST.Task_Id) return Boolean is
+       pragma Unreferenced (T);
+    begin
+       return False;
+    end Continue_Task;
+ 
+    ----------------
+    -- Initialize --
+    ----------------
+ 
+    procedure Initialize (Environment_Task : Task_Id) is
+       act     : aliased struct_sigaction;
+       old_act : aliased struct_sigaction;
+       Tmp_Set : aliased sigset_t;
+       Result  : Interfaces.C.int;
+ 
+       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
+       --    'u'   Interrupt_State pragma set state to User
+       --    'r'   Interrupt_State pragma set state to Runtime
+       --    's'   Interrupt_State pragma set state to System (use "default"
+       --           system handler)
+ 
+    begin
+       Environment_Task_Id := Environment_Task;
+ 
+       Interrupt_Management.Initialize;
+ 
+       --  Prepare the set of signals that should unblocked in all tasks
+ 
+       Result := sigemptyset (Unblocked_Signal_Mask'Access);
+       pragma Assert (Result = 0);
+ 
+       for J in Interrupt_Management.Interrupt_ID loop
+          if System.Interrupt_Management.Keep_Unmasked (J) then
+             Result := sigaddset (Unblocked_Signal_Mask'Access, Signal (J));
+             pragma Assert (Result = 0);
+          end if;
+       end loop;
+ 
+       --  Initialize the lock used to synchronize chain of all ATCBs
+ 
+       Initialize_Lock (Single_RTS_Lock'Access, RTS_Lock_Level);
+ 
+       Specific.Initialize (Environment_Task);
+ 
+       if Use_Alternate_Stack then
+          Environment_Task.Common.Task_Alternate_Stack :=
+            Alternate_Stack'Address;
+       end if;
+ 
+       --  Make environment task known here because it doesn't go through
+       --  Activate_Tasks, which does it for all other tasks.
+ 
+       Known_Tasks (Known_Tasks'First) := Environment_Task;
+       Environment_Task.Known_Tasks_Index := Known_Tasks'First;
+ 
+       Enter_Task (Environment_Task);
+ 
+       if State
+           (System.Interrupt_Management.Abort_Task_Interrupt) /= Default
+       then
+          act.sa_flags := 0;
+          act.sa_handler := Abort_Handler'Address;
+ 
+          Result := sigemptyset (Tmp_Set'Access);
+          pragma Assert (Result = 0);
+          act.sa_mask := Tmp_Set;
+ 
+          Result :=
+            sigaction
+              (Signal (System.Interrupt_Management.Abort_Task_Interrupt),
+               act'Unchecked_Access,
+               old_act'Unchecked_Access);
+          pragma Assert (Result = 0);
+          Abort_Handler_Installed := True;
+       end if;
+    end Initialize;
+ 
+    -----------------------
+    -- Set_Task_Affinity --
+    -----------------------
+ 
+    procedure Set_Task_Affinity (T : ST.Task_Id) is
+       pragma Unreferenced (T);
+ 
+    begin
+       --  Setting task affinity is not supported by the underlying system
+ 
+       null;
+    end Set_Task_Affinity;
+ 
+ end System.Task_Primitives.Operations;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-taprop__solaris.adb gcc-8.1.0/gcc/ada/libgnarl/s-taprop__solaris.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-taprop__solaris.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-taprop__solaris.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,2068 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --     S Y S T E M . T A S K _ P R I M I T I V E S . O P E R A T I O N S    --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --         Copyright (C) 1992-2018, Free Software Foundation, Inc.          --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is a Solaris (native) version of this package
+ 
+ --  This package contains all the GNULL primitives that interface directly with
+ --  the underlying OS.
+ 
+ pragma Polling (Off);
+ --  Turn off polling, we do not want ATC polling to take place during tasking
+ --  operations. It causes infinite loops and other problems.
+ 
+ with Interfaces.C;
+ 
+ with System.Multiprocessors;
+ with System.Tasking.Debug;
+ with System.Interrupt_Management;
+ with System.OS_Constants;
+ with System.OS_Primitives;
+ with System.Task_Info;
+ 
+ pragma Warnings (Off);
+ with System.OS_Lib;
+ pragma Warnings (On);
+ 
+ with System.Soft_Links;
+ --  We use System.Soft_Links instead of System.Tasking.Initialization
+ --  because the later is a higher level package that we shouldn't depend on.
+ --  For example when using the restricted run time, it is replaced by
+ --  System.Tasking.Restricted.Stages.
+ 
+ package body System.Task_Primitives.Operations is
+ 
+    package OSC renames System.OS_Constants;
+    package SSL renames System.Soft_Links;
+ 
+    use System.Tasking.Debug;
+    use System.Tasking;
+    use Interfaces.C;
+    use System.OS_Interface;
+    use System.Parameters;
+    use System.OS_Primitives;
+ 
+    ----------------
+    -- Local Data --
+    ----------------
+ 
+    --  The following are logically constants, but need to be initialized
+    --  at run time.
+ 
+    Environment_Task_Id : Task_Id;
+    --  A variable to hold Task_Id for the environment task.
+    --  If we use this variable to get the Task_Id, we need the following
+    --  ATCB_Key only for non-Ada threads.
+ 
+    Unblocked_Signal_Mask : aliased sigset_t;
+    --  The set of signals that should unblocked in all tasks
+ 
+    ATCB_Key : aliased thread_key_t;
+    --  Key used to find the Ada Task_Id associated with a thread,
+    --  at least for C threads unknown to the Ada run-time system.
+ 
+    Single_RTS_Lock : aliased RTS_Lock;
+    --  This is a lock to allow only one thread of control in the RTS at
+    --  a time; it is used to execute in mutual exclusion from all other tasks.
+    --  Used mainly in Single_Lock mode, but also to protect All_Tasks_List
+ 
+    Next_Serial_Number : Task_Serial_Number := 100;
+    --  We start at 100, to reserve some special values for
+    --  using in error checking.
+    --  The following are internal configuration constants needed.
+ 
+    Abort_Handler_Installed : Boolean := False;
+    --  True if a handler for the abort signal is installed
+ 
+    Null_Thread_Id : constant Thread_Id := Thread_Id'Last;
+    --  Constant to indicate that the thread identifier has not yet been
+    --  initialized.
+ 
+    ----------------------
+    -- Priority Support --
+    ----------------------
+ 
+    Priority_Ceiling_Emulation : constant Boolean := True;
+    --  controls whether we emulate priority ceiling locking
+ 
+    --  To get a scheduling close to annex D requirements, we use the real-time
+    --  class provided for LWPs and map each task/thread to a specific and
+    --  unique LWP (there is 1 thread per LWP, and 1 LWP per thread).
+ 
+    --  The real time class can only be set when the process has root
+    --  privileges, so in the other cases, we use the normal thread scheduling
+    --  and priority handling.
+ 
+    Using_Real_Time_Class : Boolean := False;
+    --  indicates whether the real time class is being used (i.e. the process
+    --  has root privileges).
+ 
+    Prio_Param : aliased struct_pcparms;
+    --  Hold priority info (Real_Time) initialized during the package
+    --  elaboration.
+ 
+    -----------------------------------
+    -- External Configuration Values --
+    -----------------------------------
+ 
+    Time_Slice_Val : Integer;
+    pragma Import (C, Time_Slice_Val, "__gl_time_slice_val");
+ 
+    Locking_Policy : Character;
+    pragma Import (C, Locking_Policy, "__gl_locking_policy");
+ 
+    Dispatching_Policy : Character;
+    pragma Import (C, Dispatching_Policy, "__gl_task_dispatching_policy");
+ 
+    Foreign_Task_Elaborated : aliased Boolean := True;
+    --  Used to identified fake tasks (i.e., non-Ada Threads)
+ 
+    -----------------------
+    -- Local Subprograms --
+    -----------------------
+ 
+    function sysconf (name : System.OS_Interface.int) return processorid_t;
+    pragma Import (C, sysconf, "sysconf");
+ 
+    SC_NPROCESSORS_CONF : constant System.OS_Interface.int := 14;
+ 
+    function Num_Procs
+      (name : System.OS_Interface.int := SC_NPROCESSORS_CONF)
+       return processorid_t renames sysconf;
+ 
+    procedure Abort_Handler
+      (Sig     : Signal;
+       Code    : not null access siginfo_t;
+       Context : not null access ucontext_t);
+    --  Target-dependent binding of inter-thread Abort signal to
+    --  the raising of the Abort_Signal exception.
+    --  See also comments in 7staprop.adb
+ 
+    ------------
+    -- Checks --
+    ------------
+ 
+    function Check_Initialize_Lock
+      (L     : Lock_Ptr;
+       Level : Lock_Level) return Boolean;
+    pragma Inline (Check_Initialize_Lock);
+ 
+    function Check_Lock (L : Lock_Ptr) return Boolean;
+    pragma Inline (Check_Lock);
+ 
+    function Record_Lock (L : Lock_Ptr) return Boolean;
+    pragma Inline (Record_Lock);
+ 
+    function Check_Sleep (Reason : Task_States) return Boolean;
+    pragma Inline (Check_Sleep);
+ 
+    function Record_Wakeup
+      (L      : Lock_Ptr;
+       Reason : Task_States) return Boolean;
+    pragma Inline (Record_Wakeup);
+ 
+    function Check_Wakeup
+      (T      : Task_Id;
+       Reason : Task_States) return Boolean;
+    pragma Inline (Check_Wakeup);
+ 
+    function Check_Unlock (L : Lock_Ptr) return Boolean;
+    pragma Inline (Check_Unlock);
+ 
+    function Check_Finalize_Lock (L : Lock_Ptr) return Boolean;
+    pragma Inline (Check_Finalize_Lock);
+ 
+    --------------------
+    -- Local Packages --
+    --------------------
+ 
+    package Specific is
+ 
+       procedure Initialize (Environment_Task : Task_Id);
+       pragma Inline (Initialize);
+       --  Initialize various data needed by this package
+ 
+       function Is_Valid_Task return Boolean;
+       pragma Inline (Is_Valid_Task);
+       --  Does executing thread have a TCB?
+ 
+       procedure Set (Self_Id : Task_Id);
+       pragma Inline (Set);
+       --  Set the self id for the current task
+ 
+       function Self return Task_Id;
+       pragma Inline (Self);
+       --  Return a pointer to the Ada Task Control Block of the calling task
+ 
+    end Specific;
+ 
+    package body Specific is separate;
+    --  The body of this package is target specific
+ 
+    ----------------------------------
+    -- ATCB allocation/deallocation --
+    ----------------------------------
+ 
+    package body ATCB_Allocation is separate;
+    --  The body of this package is shared across several targets
+ 
+    ---------------------------------
+    -- Support for foreign threads --
+    ---------------------------------
+ 
+    function Register_Foreign_Thread
+      (Thread         : Thread_Id;
+       Sec_Stack_Size : Size_Type := Unspecified_Size) return Task_Id;
+    --  Allocate and initialize a new ATCB for the current Thread. The size of
+    --  the secondary stack can be optionally specified.
+ 
+    function Register_Foreign_Thread
+      (Thread         : Thread_Id;
+       Sec_Stack_Size : Size_Type := Unspecified_Size)
+      return Task_Id is separate;
+ 
+    ------------
+    -- Checks --
+    ------------
+ 
+    Check_Count  : Integer := 0;
+    Lock_Count   : Integer := 0;
+    Unlock_Count : Integer := 0;
+ 
+    -------------------
+    -- Abort_Handler --
+    -------------------
+ 
+    procedure Abort_Handler
+      (Sig     : Signal;
+       Code    : not null access siginfo_t;
+       Context : not null access ucontext_t)
+    is
+       pragma Unreferenced (Sig);
+       pragma Unreferenced (Code);
+       pragma Unreferenced (Context);
+ 
+       Self_ID : constant Task_Id := Self;
+       Old_Set : aliased sigset_t;
+ 
+       Result : Interfaces.C.int;
+       pragma Warnings (Off, Result);
+ 
+    begin
+       --  It's not safe to raise an exception when using GCC ZCX mechanism.
+       --  Note that we still need to install a signal handler, since in some
+       --  cases (e.g. shutdown of the Server_Task in System.Interrupts) we
+       --  need to send the Abort signal to a task.
+ 
+       if ZCX_By_Default then
+          return;
+       end if;
+ 
+       if Self_ID.Deferral_Level = 0
+         and then Self_ID.Pending_ATC_Level < Self_ID.ATC_Nesting_Level
+         and then not Self_ID.Aborting
+       then
+          Self_ID.Aborting := True;
+ 
+          --  Make sure signals used for RTS internal purpose are unmasked
+ 
+          Result :=
+            thr_sigsetmask
+              (SIG_UNBLOCK,
+               Unblocked_Signal_Mask'Unchecked_Access,
+               Old_Set'Unchecked_Access);
+          pragma Assert (Result = 0);
+ 
+          raise Standard'Abort_Signal;
+       end if;
+    end Abort_Handler;
+ 
+    -----------------
+    -- Stack_Guard --
+    -----------------
+ 
+    --  The underlying thread system sets a guard page at the
+    --  bottom of a thread stack, so nothing is needed.
+ 
+    procedure Stack_Guard (T : ST.Task_Id; On : Boolean) is
+       pragma Unreferenced (T);
+       pragma Unreferenced (On);
+    begin
+       null;
+    end Stack_Guard;
+ 
+    -------------------
+    -- Get_Thread_Id --
+    -------------------
+ 
+    function Get_Thread_Id (T : ST.Task_Id) return OSI.Thread_Id is
+    begin
+       return T.Common.LL.Thread;
+    end Get_Thread_Id;
+ 
+    ----------------
+    -- Initialize --
+    ----------------
+ 
+    procedure Initialize (Environment_Task : ST.Task_Id) is
+       act     : aliased struct_sigaction;
+       old_act : aliased struct_sigaction;
+       Tmp_Set : aliased sigset_t;
+       Result  : Interfaces.C.int;
+ 
+       procedure Configure_Processors;
+       --  Processors configuration
+       --  The user can specify a processor which the program should run
+       --  on to emulate a single-processor system. This can be easily
+       --  done by setting environment variable GNAT_PROCESSOR to one of
+       --  the following :
+       --
+       --    -2 : use the default configuration (run the program on all
+       --         available processors) - this is the same as having
+       --         GNAT_PROCESSOR unset
+       --    -1 : let the RTS choose one processor and run the program on
+       --         that processor
+       --    0 .. Last_Proc : run the program on the specified processor
+       --
+       --  Last_Proc is equal to the value of the system variable
+       --  _SC_NPROCESSORS_CONF, minus one.
+ 
+       procedure Configure_Processors is
+          Proc_Acc  : constant System.OS_Lib.String_Access :=
+                        System.OS_Lib.Getenv ("GNAT_PROCESSOR");
+          Proc      : aliased processorid_t;  --  User processor #
+          Last_Proc : processorid_t;          --  Last processor #
+ 
+       begin
+          if Proc_Acc.all'Length /= 0 then
+ 
+             --  Environment variable is defined
+ 
+             Last_Proc := Num_Procs - 1;
+ 
+             if Last_Proc /= -1 then
+                Proc := processorid_t'Value (Proc_Acc.all);
+ 
+                if Proc <= -2  or else Proc > Last_Proc then
+ 
+                   --  Use the default configuration
+ 
+                   null;
+ 
+                elsif Proc = -1 then
+ 
+                   --  Choose a processor
+ 
+                   Result := 0;
+                   while Proc < Last_Proc loop
+                      Proc := Proc + 1;
+                      Result := p_online (Proc, PR_STATUS);
+                      exit when Result = PR_ONLINE;
+                   end loop;
+ 
+                   pragma Assert (Result = PR_ONLINE);
+                   Result := processor_bind (P_PID, P_MYID, Proc, null);
+                   pragma Assert (Result = 0);
+ 
+                else
+                   --  Use user processor
+ 
+                   Result := processor_bind (P_PID, P_MYID, Proc, null);
+                   pragma Assert (Result = 0);
+                end if;
+             end if;
+          end if;
+ 
+       exception
+          when Constraint_Error =>
+ 
+             --  Illegal environment variable GNAT_PROCESSOR - ignored
+ 
+             null;
+       end Configure_Processors;
+ 
+       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
+       --    'u'   Interrupt_State pragma set state to User
+       --    'r'   Interrupt_State pragma set state to Runtime
+       --    's'   Interrupt_State pragma set state to System (use "default"
+       --           system handler)
+ 
+    --  Start of processing for Initialize
+ 
+    begin
+       Environment_Task_Id := Environment_Task;
+ 
+       Interrupt_Management.Initialize;
+ 
+       --  Prepare the set of signals that should unblocked in all tasks
+ 
+       Result := sigemptyset (Unblocked_Signal_Mask'Access);
+       pragma Assert (Result = 0);
+ 
+       for J in Interrupt_Management.Interrupt_ID loop
+          if System.Interrupt_Management.Keep_Unmasked (J) then
+             Result := sigaddset (Unblocked_Signal_Mask'Access, Signal (J));
+             pragma Assert (Result = 0);
+          end if;
+       end loop;
+ 
+       if Dispatching_Policy = 'F' then
+          declare
+             Result      : Interfaces.C.long;
+             Class_Info  : aliased struct_pcinfo;
+             Secs, Nsecs : Interfaces.C.long;
+ 
+          begin
+             --  If a pragma Time_Slice is specified, takes the value in account
+ 
+             if Time_Slice_Val > 0 then
+ 
+                --  Convert Time_Slice_Val (microseconds) to seconds/nanosecs
+ 
+                Secs := Interfaces.C.long (Time_Slice_Val / 1_000_000);
+                Nsecs :=
+                  Interfaces.C.long ((Time_Slice_Val rem 1_000_000) * 1_000);
+ 
+             --  Otherwise, default to no time slicing (i.e run until blocked)
+ 
+             else
+                Secs := RT_TQINF;
+                Nsecs := RT_TQINF;
+             end if;
+ 
+             --  Get the real time class id
+ 
+             Class_Info.pc_clname (1) := 'R';
+             Class_Info.pc_clname (2) := 'T';
+             Class_Info.pc_clname (3) := ASCII.NUL;
+ 
+             Result := priocntl (PC_VERSION, P_LWPID, P_MYID, PC_GETCID,
+               Class_Info'Address);
+ 
+             --  Request the real time class
+ 
+             Prio_Param.pc_cid := Class_Info.pc_cid;
+             Prio_Param.rt_pri := pri_t (Class_Info.rt_maxpri);
+             Prio_Param.rt_tqsecs := Secs;
+             Prio_Param.rt_tqnsecs := Nsecs;
+ 
+             Result :=
+               priocntl
+                 (PC_VERSION, P_LWPID, P_MYID, PC_SETPARMS, Prio_Param'Address);
+ 
+             Using_Real_Time_Class := Result /= -1;
+          end;
+       end if;
+ 
+       Specific.Initialize (Environment_Task);
+ 
+       --  The following is done in Enter_Task, but this is too late for the
+       --  Environment Task, since we need to call Self in Check_Locks when
+       --  the run time is compiled with assertions on.
+ 
+       Specific.Set (Environment_Task);
+ 
+       --  Initialize the lock used to synchronize chain of all ATCBs
+ 
+       Initialize_Lock (Single_RTS_Lock'Access, RTS_Lock_Level);
+ 
+       --  Make environment task known here because it doesn't go through
+       --  Activate_Tasks, which does it for all other tasks.
+ 
+       Known_Tasks (Known_Tasks'First) := Environment_Task;
+       Environment_Task.Known_Tasks_Index := Known_Tasks'First;
+ 
+       Enter_Task (Environment_Task);
+ 
+       Configure_Processors;
+ 
+       if State
+           (System.Interrupt_Management.Abort_Task_Interrupt) /= Default
+       then
+          --  Set sa_flags to SA_NODEFER so that during the handler execution
+          --  we do not change the Signal_Mask to be masked for the Abort_Signal
+          --  This is a temporary fix to the problem that the Signal_Mask is
+          --  not restored after the exception (longjmp) from the handler.
+          --  The right fix should be made in sigsetjmp so that we save
+          --  the Signal_Set and restore it after a longjmp.
+          --  In that case, this field should be changed back to 0. ???
+ 
+          act.sa_flags := 16;
+ 
+          act.sa_handler := Abort_Handler'Address;
+          Result := sigemptyset (Tmp_Set'Access);
+          pragma Assert (Result = 0);
+          act.sa_mask := Tmp_Set;
+ 
+          Result :=
+            sigaction
+              (Signal (System.Interrupt_Management.Abort_Task_Interrupt),
+               act'Unchecked_Access,
+               old_act'Unchecked_Access);
+          pragma Assert (Result = 0);
+          Abort_Handler_Installed := True;
+       end if;
+    end Initialize;
+ 
+    ---------------------
+    -- Initialize_Lock --
+    ---------------------
+ 
+    --  Note: mutexes and cond_variables needed per-task basis are initialized
+    --  in Initialize_TCB and the Storage_Error is handled. Other mutexes (such
+    --  as RTS_Lock, Memory_Lock...) used in RTS is initialized before any
+    --  status change of RTS. Therefore raising Storage_Error in the following
+    --  routines should be able to be handled safely.
+ 
+    procedure Initialize_Lock
+      (Prio : System.Any_Priority;
+       L    : not null access Lock)
+    is
+       Result : Interfaces.C.int;
+ 
+    begin
+       pragma Assert (Check_Initialize_Lock (Lock_Ptr (L), PO_Level));
+ 
+       if Priority_Ceiling_Emulation then
+          L.Ceiling := Prio;
+       end if;
+ 
+       Result := mutex_init (L.L'Access, USYNC_THREAD, System.Null_Address);
+       pragma Assert (Result = 0 or else Result = ENOMEM);
+ 
+       if Result = ENOMEM then
+          raise Storage_Error with "Failed to allocate a lock";
+       end if;
+    end Initialize_Lock;
+ 
+    procedure Initialize_Lock
+      (L     : not null access RTS_Lock;
+       Level : Lock_Level)
+    is
+       Result : Interfaces.C.int;
+ 
+    begin
+       pragma Assert
+         (Check_Initialize_Lock (To_Lock_Ptr (RTS_Lock_Ptr (L)), Level));
+       Result := mutex_init (L.L'Access, USYNC_THREAD, System.Null_Address);
+       pragma Assert (Result = 0 or else Result = ENOMEM);
+ 
+       if Result = ENOMEM then
+          raise Storage_Error with "Failed to allocate a lock";
+       end if;
+    end Initialize_Lock;
+ 
+    -------------------
+    -- Finalize_Lock --
+    -------------------
+ 
+    procedure Finalize_Lock (L : not null access Lock) is
+       Result : Interfaces.C.int;
+    begin
+       pragma Assert (Check_Finalize_Lock (Lock_Ptr (L)));
+       Result := mutex_destroy (L.L'Access);
+       pragma Assert (Result = 0);
+    end Finalize_Lock;
+ 
+    procedure Finalize_Lock (L : not null access RTS_Lock) is
+       Result : Interfaces.C.int;
+    begin
+       pragma Assert (Check_Finalize_Lock (To_Lock_Ptr (RTS_Lock_Ptr (L))));
+       Result := mutex_destroy (L.L'Access);
+       pragma Assert (Result = 0);
+    end Finalize_Lock;
+ 
+    ----------------
+    -- Write_Lock --
+    ----------------
+ 
+    procedure Write_Lock
+      (L                 : not null access Lock;
+       Ceiling_Violation : out Boolean)
+    is
+       Result : Interfaces.C.int;
+ 
+    begin
+       pragma Assert (Check_Lock (Lock_Ptr (L)));
+ 
+       if Priority_Ceiling_Emulation and then Locking_Policy = 'C' then
+          declare
+             Self_Id        : constant Task_Id := Self;
+             Saved_Priority : System.Any_Priority;
+ 
+          begin
+             if Self_Id.Common.LL.Active_Priority > L.Ceiling then
+                Ceiling_Violation := True;
+                return;
+             end if;
+ 
+             Saved_Priority := Self_Id.Common.LL.Active_Priority;
+ 
+             if Self_Id.Common.LL.Active_Priority < L.Ceiling then
+                Set_Priority (Self_Id, L.Ceiling);
+             end if;
+ 
+             Result := mutex_lock (L.L'Access);
+             pragma Assert (Result = 0);
+             Ceiling_Violation := False;
+ 
+             L.Saved_Priority := Saved_Priority;
+          end;
+ 
+       else
+          Result := mutex_lock (L.L'Access);
+          pragma Assert (Result = 0);
+          Ceiling_Violation := False;
+       end if;
+ 
+       pragma Assert (Record_Lock (Lock_Ptr (L)));
+    end Write_Lock;
+ 
+    procedure Write_Lock
+      (L          : not null access RTS_Lock;
+      Global_Lock : Boolean := False)
+    is
+       Result : Interfaces.C.int;
+    begin
+       if not Single_Lock or else Global_Lock then
+          pragma Assert (Check_Lock (To_Lock_Ptr (RTS_Lock_Ptr (L))));
+          Result := mutex_lock (L.L'Access);
+          pragma Assert (Result = 0);
+          pragma Assert (Record_Lock (To_Lock_Ptr (RTS_Lock_Ptr (L))));
+       end if;
+    end Write_Lock;
+ 
+    procedure Write_Lock (T : Task_Id) is
+       Result : Interfaces.C.int;
+    begin
+       if not Single_Lock then
+          pragma Assert (Check_Lock (To_Lock_Ptr (T.Common.LL.L'Access)));
+          Result := mutex_lock (T.Common.LL.L.L'Access);
+          pragma Assert (Result = 0);
+          pragma Assert (Record_Lock (To_Lock_Ptr (T.Common.LL.L'Access)));
+       end if;
+    end Write_Lock;
+ 
+    ---------------
+    -- Read_Lock --
+    ---------------
+ 
+    procedure Read_Lock
+      (L                 : not null access Lock;
+       Ceiling_Violation : out Boolean) is
+    begin
+       Write_Lock (L, Ceiling_Violation);
+    end Read_Lock;
+ 
+    ------------
+    -- Unlock --
+    ------------
+ 
+    procedure Unlock (L : not null access Lock) is
+       Result : Interfaces.C.int;
+ 
+    begin
+       pragma Assert (Check_Unlock (Lock_Ptr (L)));
+ 
+       if Priority_Ceiling_Emulation and then Locking_Policy = 'C' then
+          declare
+             Self_Id : constant Task_Id := Self;
+ 
+          begin
+             Result := mutex_unlock (L.L'Access);
+             pragma Assert (Result = 0);
+ 
+             if Self_Id.Common.LL.Active_Priority > L.Saved_Priority then
+                Set_Priority (Self_Id, L.Saved_Priority);
+             end if;
+          end;
+       else
+          Result := mutex_unlock (L.L'Access);
+          pragma Assert (Result = 0);
+       end if;
+    end Unlock;
+ 
+    procedure Unlock
+      (L           : not null access RTS_Lock;
+       Global_Lock : Boolean := False)
+    is
+       Result : Interfaces.C.int;
+    begin
+       if not Single_Lock or else Global_Lock then
+          pragma Assert (Check_Unlock (To_Lock_Ptr (RTS_Lock_Ptr (L))));
+          Result := mutex_unlock (L.L'Access);
+          pragma Assert (Result = 0);
+       end if;
+    end Unlock;
+ 
+    procedure Unlock (T : Task_Id) is
+       Result : Interfaces.C.int;
+    begin
+       if not Single_Lock then
+          pragma Assert (Check_Unlock (To_Lock_Ptr (T.Common.LL.L'Access)));
+          Result := mutex_unlock (T.Common.LL.L.L'Access);
+          pragma Assert (Result = 0);
+       end if;
+    end Unlock;
+ 
+    -----------------
+    -- Set_Ceiling --
+    -----------------
+ 
+    --  Dynamic priority ceilings are not supported by the underlying system
+ 
+    procedure Set_Ceiling
+      (L    : not null access Lock;
+       Prio : System.Any_Priority)
+    is
+       pragma Unreferenced (L, Prio);
+    begin
+       null;
+    end Set_Ceiling;
+ 
+    --  For the time delay implementation, we need to make sure we
+    --  achieve following criteria:
+ 
+    --  1) We have to delay at least for the amount requested.
+    --  2) We have to give up CPU even though the actual delay does not
+    --     result in blocking.
+    --  3) Except for restricted run-time systems that do not support
+    --     ATC or task abort, the delay must be interrupted by the
+    --     abort_task operation.
+    --  4) The implementation has to be efficient so that the delay overhead
+    --     is relatively cheap.
+    --  (1)-(3) are Ada requirements. Even though (2) is an Annex-D
+    --     requirement we still want to provide the effect in all cases.
+    --     The reason is that users may want to use short delays to implement
+    --     their own scheduling effect in the absence of language provided
+    --     scheduling policies.
+ 
+    ---------------------
+    -- Monotonic_Clock --
+    ---------------------
+ 
+    function Monotonic_Clock return Duration is
+       TS     : aliased timespec;
+       Result : Interfaces.C.int;
+    begin
+       Result := clock_gettime (OSC.CLOCK_RT_Ada, TS'Unchecked_Access);
+       pragma Assert (Result = 0);
+       return To_Duration (TS);
+    end Monotonic_Clock;
+ 
+    -------------------
+    -- RT_Resolution --
+    -------------------
+ 
+    function RT_Resolution return Duration is
+       TS     : aliased timespec;
+       Result : Interfaces.C.int;
+    begin
+       Result := clock_getres (OSC.CLOCK_REALTIME, TS'Unchecked_Access);
+       pragma Assert (Result = 0);
+ 
+       return To_Duration (TS);
+    end RT_Resolution;
+ 
+    -----------
+    -- Yield --
+    -----------
+ 
+    procedure Yield (Do_Yield : Boolean := True) is
+    begin
+       if Do_Yield then
+          System.OS_Interface.thr_yield;
+       end if;
+    end Yield;
+ 
+    -----------
+    -- Self ---
+    -----------
+ 
+    function Self return Task_Id renames Specific.Self;
+ 
+    ------------------
+    -- Set_Priority --
+    ------------------
+ 
+    procedure Set_Priority
+      (T                   : Task_Id;
+       Prio                : System.Any_Priority;
+       Loss_Of_Inheritance : Boolean := False)
+    is
+       pragma Unreferenced (Loss_Of_Inheritance);
+ 
+       Result : Interfaces.C.int;
+       pragma Unreferenced (Result);
+ 
+       Param : aliased struct_pcparms;
+ 
+       use Task_Info;
+ 
+    begin
+       T.Common.Current_Priority := Prio;
+ 
+       if Priority_Ceiling_Emulation then
+          T.Common.LL.Active_Priority := Prio;
+       end if;
+ 
+       if Using_Real_Time_Class then
+          Param.pc_cid := Prio_Param.pc_cid;
+          Param.rt_pri := pri_t (Prio);
+          Param.rt_tqsecs := Prio_Param.rt_tqsecs;
+          Param.rt_tqnsecs := Prio_Param.rt_tqnsecs;
+ 
+          Result := Interfaces.C.int (
+            priocntl (PC_VERSION, P_LWPID, T.Common.LL.LWP, PC_SETPARMS,
+              Param'Address));
+ 
+       else
+          if T.Common.Task_Info /= null
+            and then not T.Common.Task_Info.Bound_To_LWP
+          then
+             --  The task is not bound to a LWP, so use thr_setprio
+ 
+             Result :=
+               thr_setprio (T.Common.LL.Thread, Interfaces.C.int (Prio));
+ 
+          else
+             --  The task is bound to a LWP, use priocntl
+             --  ??? TBD
+ 
+             null;
+          end if;
+       end if;
+    end Set_Priority;
+ 
+    ------------------
+    -- Get_Priority --
+    ------------------
+ 
+    function Get_Priority (T : Task_Id) return System.Any_Priority is
+    begin
+       return T.Common.Current_Priority;
+    end Get_Priority;
+ 
+    ----------------
+    -- Enter_Task --
+    ----------------
+ 
+    procedure Enter_Task (Self_ID : Task_Id) is
+    begin
+       Self_ID.Common.LL.Thread := thr_self;
+       Self_ID.Common.LL.LWP    := lwp_self;
+ 
+       Set_Task_Affinity (Self_ID);
+       Specific.Set (Self_ID);
+ 
+       --  We need the above code even if we do direct fetch of Task_Id in Self
+       --  for the main task on Sun, x86 Solaris and for gcc 2.7.2.
+    end Enter_Task;
+ 
+    -------------------
+    -- Is_Valid_Task --
+    -------------------
+ 
+    function Is_Valid_Task return Boolean renames Specific.Is_Valid_Task;
+ 
+    -----------------------------
+    -- Register_Foreign_Thread --
+    -----------------------------
+ 
+    function Register_Foreign_Thread return Task_Id is
+    begin
+       if Is_Valid_Task then
+          return Self;
+       else
+          return Register_Foreign_Thread (thr_self);
+       end if;
+    end Register_Foreign_Thread;
+ 
+    --------------------
+    -- Initialize_TCB --
+    --------------------
+ 
+    procedure Initialize_TCB (Self_ID : Task_Id; Succeeded : out Boolean) is
+       Result : Interfaces.C.int := 0;
+ 
+    begin
+       --  Give the task a unique serial number
+ 
+       Self_ID.Serial_Number := Next_Serial_Number;
+       Next_Serial_Number := Next_Serial_Number + 1;
+       pragma Assert (Next_Serial_Number /= 0);
+ 
+       Self_ID.Common.LL.Thread := Null_Thread_Id;
+ 
+       if not Single_Lock then
+          Result :=
+            mutex_init
+              (Self_ID.Common.LL.L.L'Access, USYNC_THREAD, System.Null_Address);
+          Self_ID.Common.LL.L.Level :=
+            Private_Task_Serial_Number (Self_ID.Serial_Number);
+          pragma Assert (Result = 0 or else Result = ENOMEM);
+       end if;
+ 
+       if Result = 0 then
+          Result := cond_init (Self_ID.Common.LL.CV'Access, USYNC_THREAD, 0);
+          pragma Assert (Result = 0 or else Result = ENOMEM);
+       end if;
+ 
+       if Result = 0 then
+          Succeeded := True;
+       else
+          if not Single_Lock then
+             Result := mutex_destroy (Self_ID.Common.LL.L.L'Access);
+             pragma Assert (Result = 0);
+          end if;
+ 
+          Succeeded := False;
+       end if;
+    end Initialize_TCB;
+ 
+    -----------------
+    -- Create_Task --
+    -----------------
+ 
+    procedure Create_Task
+      (T          : Task_Id;
+       Wrapper    : System.Address;
+       Stack_Size : System.Parameters.Size_Type;
+       Priority   : System.Any_Priority;
+       Succeeded  : out Boolean)
+    is
+       pragma Unreferenced (Priority);
+ 
+       Result              : Interfaces.C.int;
+       Adjusted_Stack_Size : Interfaces.C.size_t;
+       Opts                : Interfaces.C.int := THR_DETACHED;
+ 
+       Page_Size           : constant System.Parameters.Size_Type := 4096;
+       --  This constant is for reserving extra space at the
+       --  end of the stack, which can be used by the stack
+       --  checking as guard page. The idea is that we need
+       --  to have at least Stack_Size bytes available for
+       --  actual use.
+ 
+       use System.Task_Info;
+       use type System.Multiprocessors.CPU_Range;
+ 
+    begin
+       --  Check whether both Dispatching_Domain and CPU are specified for the
+       --  task, and the CPU value is not contained within the range of
+       --  processors for the domain.
+ 
+       if T.Common.Domain /= null
+         and then T.Common.Base_CPU /= System.Multiprocessors.Not_A_Specific_CPU
+         and then
+           (T.Common.Base_CPU not in T.Common.Domain'Range
+             or else not T.Common.Domain (T.Common.Base_CPU))
+       then
+          Succeeded := False;
+          return;
+       end if;
+ 
+       Adjusted_Stack_Size := Interfaces.C.size_t (Stack_Size + Page_Size);
+ 
+       --  Since the initial signal mask of a thread is inherited from the
+       --  creator, and the Environment task has all its signals masked, we
+       --  do not need to manipulate caller's signal mask at this point.
+       --  All tasks in RTS will have All_Tasks_Mask initially.
+ 
+       if T.Common.Task_Info /= null then
+          if T.Common.Task_Info.New_LWP then
+             Opts := Opts + THR_NEW_LWP;
+          end if;
+ 
+          if T.Common.Task_Info.Bound_To_LWP then
+             Opts := Opts + THR_BOUND;
+          end if;
+ 
+       else
+          Opts := THR_DETACHED + THR_BOUND;
+       end if;
+ 
+       --  Note: the use of Unrestricted_Access in the following call is needed
+       --  because otherwise we have an error of getting a access-to-volatile
+       --  value which points to a non-volatile object. But in this case it is
+       --  safe to do this, since we know we have no problems with aliasing and
+       --  Unrestricted_Access bypasses this check.
+ 
+       Result :=
+         thr_create
+           (System.Null_Address,
+            Adjusted_Stack_Size,
+            Thread_Body_Access (Wrapper),
+            To_Address (T),
+            Opts,
+            T.Common.LL.Thread'Unrestricted_Access);
+ 
+       Succeeded := Result = 0;
+       pragma Assert
+         (Result = 0
+           or else Result = ENOMEM
+           or else Result = EAGAIN);
+    end Create_Task;
+ 
+    ------------------
+    -- Finalize_TCB --
+    ------------------
+ 
+    procedure Finalize_TCB (T : Task_Id) is
+       Result : Interfaces.C.int;
+ 
+    begin
+       T.Common.LL.Thread := Null_Thread_Id;
+ 
+       if not Single_Lock then
+          Result := mutex_destroy (T.Common.LL.L.L'Access);
+          pragma Assert (Result = 0);
+       end if;
+ 
+       Result := cond_destroy (T.Common.LL.CV'Access);
+       pragma Assert (Result = 0);
+ 
+       if T.Known_Tasks_Index /= -1 then
+          Known_Tasks (T.Known_Tasks_Index) := null;
+       end if;
+ 
+       ATCB_Allocation.Free_ATCB (T);
+    end Finalize_TCB;
+ 
+    ---------------
+    -- Exit_Task --
+    ---------------
+ 
+    --  This procedure must be called with abort deferred. It can no longer
+    --  call Self or access the current task's ATCB, since the ATCB has been
+    --  deallocated.
+ 
+    procedure Exit_Task is
+    begin
+       Specific.Set (null);
+    end Exit_Task;
+ 
+    ----------------
+    -- Abort_Task --
+    ----------------
+ 
+    procedure Abort_Task (T : Task_Id) is
+       Result : Interfaces.C.int;
+    begin
+       if Abort_Handler_Installed then
+          pragma Assert (T /= Self);
+          Result :=
+            thr_kill
+              (T.Common.LL.Thread,
+               Signal (System.Interrupt_Management.Abort_Task_Interrupt));
+          pragma Assert (Result = 0);
+       end if;
+    end Abort_Task;
+ 
+    -----------
+    -- Sleep --
+    -----------
+ 
+    procedure Sleep
+      (Self_ID : Task_Id;
+       Reason  : Task_States)
+    is
+       Result : Interfaces.C.int;
+ 
+    begin
+       pragma Assert (Check_Sleep (Reason));
+ 
+       if Single_Lock then
+          Result :=
+            cond_wait
+              (Self_ID.Common.LL.CV'Access, Single_RTS_Lock.L'Access);
+       else
+          Result :=
+            cond_wait
+              (Self_ID.Common.LL.CV'Access, Self_ID.Common.LL.L.L'Access);
+       end if;
+ 
+       pragma Assert
+         (Record_Wakeup (To_Lock_Ptr (Self_ID.Common.LL.L'Access), Reason));
+       pragma Assert (Result = 0 or else Result = EINTR);
+    end Sleep;
+ 
+    --  Note that we are relying heavily here on GNAT representing
+    --  Calendar.Time, System.Real_Time.Time, Duration,
+    --  System.Real_Time.Time_Span in the same way, i.e., as a 64-bit count of
+    --  nanoseconds.
+ 
+    --  This allows us to always pass the timeout value as a Duration
+ 
+    --  ???
+    --  We are taking liberties here with the semantics of the delays. That is,
+    --  we make no distinction between delays on the Calendar clock and delays
+    --  on the Real_Time clock. That is technically incorrect, if the Calendar
+    --  clock happens to be reset or adjusted. To solve this defect will require
+    --  modification to the compiler interface, so that it can pass through more
+    --  information, to tell us here which clock to use.
+ 
+    --  cond_timedwait will return if any of the following happens:
+    --  1) some other task did cond_signal on this condition variable
+    --     In this case, the return value is 0
+    --  2) the call just returned, for no good reason
+    --     This is called a "spurious wakeup".
+    --     In this case, the return value may also be 0.
+    --  3) the time delay expires
+    --     In this case, the return value is ETIME
+    --  4) this task received a signal, which was handled by some
+    --     handler procedure, and now the thread is resuming execution
+    --     UNIX calls this an "interrupted" system call.
+    --     In this case, the return value is EINTR
+ 
+    --  If the cond_timedwait returns 0 or EINTR, it is still possible that the
+    --  time has actually expired, and by chance a signal or cond_signal
+    --  occurred at around the same time.
+ 
+    --  We have also observed that on some OS's the value ETIME will be
+    --  returned, but the clock will show that the full delay has not yet
+    --  expired.
+ 
+    --  For these reasons, we need to check the clock after return from
+    --  cond_timedwait. If the time has expired, we will set Timedout = True.
+ 
+    --  This check might be omitted for systems on which the cond_timedwait()
+    --  never returns early or wakes up spuriously.
+ 
+    --  Annex D requires that completion of a delay cause the task to go to the
+    --  end of its priority queue, regardless of whether the task actually was
+    --  suspended by the delay. Since cond_timedwait does not do this on
+    --  Solaris, we add a call to thr_yield at the end. We might do this at the
+    --  beginning, instead, but then the round-robin effect would not be the
+    --  same; the delayed task would be ahead of other tasks of the same
+    --  priority that awoke while it was sleeping.
+ 
+    --  For Timed_Sleep, we are expecting possible cond_signals to indicate
+    --  other events (e.g., completion of a RV or completion of the abortable
+    --  part of an async. select), we want to always return if interrupted. The
+    --  caller will be responsible for checking the task state to see whether
+    --  the wakeup was spurious, and to go back to sleep again in that case. We
+    --  don't need to check for pending abort or priority change on the way in
+    --  our out; that is the caller's responsibility.
+ 
+    --  For Timed_Delay, we are not expecting any cond_signals or other
+    --  interruptions, except for priority changes and aborts. Therefore, we
+    --  don't want to return unless the delay has actually expired, or the call
+    --  has been aborted. In this case, since we want to implement the entire
+    --  delay statement semantics, we do need to check for pending abort and
+    --  priority changes. We can quietly handle priority changes inside the
+    --  procedure, since there is no entry-queue reordering involved.
+ 
+    -----------------
+    -- Timed_Sleep --
+    -----------------
+ 
+    procedure Timed_Sleep
+      (Self_ID  : Task_Id;
+       Time     : Duration;
+       Mode     : ST.Delay_Modes;
+       Reason   : System.Tasking.Task_States;
+       Timedout : out Boolean;
+       Yielded  : out Boolean)
+    is
+       Base_Time  : constant Duration := Monotonic_Clock;
+       Check_Time : Duration := Base_Time;
+       Abs_Time   : Duration;
+       Request    : aliased timespec;
+       Result     : Interfaces.C.int;
+ 
+    begin
+       pragma Assert (Check_Sleep (Reason));
+       Timedout := True;
+       Yielded := False;
+ 
+       Abs_Time :=
+         (if Mode = Relative
+          then Duration'Min (Time, Max_Sensible_Delay) + Check_Time
+          else Duration'Min (Check_Time + Max_Sensible_Delay, Time));
+ 
+       if Abs_Time > Check_Time then
+          Request := To_Timespec (Abs_Time);
+          loop
+             exit when Self_ID.Pending_ATC_Level < Self_ID.ATC_Nesting_Level;
+ 
+             if Single_Lock then
+                Result :=
+                  cond_timedwait
+                    (Self_ID.Common.LL.CV'Access,
+                     Single_RTS_Lock.L'Access, Request'Access);
+             else
+                Result :=
+                  cond_timedwait
+                    (Self_ID.Common.LL.CV'Access,
+                     Self_ID.Common.LL.L.L'Access, Request'Access);
+             end if;
+ 
+             Yielded := True;
+ 
+             Check_Time := Monotonic_Clock;
+             exit when Abs_Time <= Check_Time or else Check_Time < Base_Time;
+ 
+             if Result = 0 or Result = EINTR then
+ 
+                --  Somebody may have called Wakeup for us
+ 
+                Timedout := False;
+                exit;
+             end if;
+ 
+             pragma Assert (Result = ETIME);
+          end loop;
+       end if;
+ 
+       pragma Assert
+         (Record_Wakeup (To_Lock_Ptr (Self_ID.Common.LL.L'Access), Reason));
+    end Timed_Sleep;
+ 
+    -----------------
+    -- Timed_Delay --
+    -----------------
+ 
+    procedure Timed_Delay
+      (Self_ID : Task_Id;
+       Time    : Duration;
+       Mode    : ST.Delay_Modes)
+    is
+       Base_Time  : constant Duration := Monotonic_Clock;
+       Check_Time : Duration := Base_Time;
+       Abs_Time   : Duration;
+       Request    : aliased timespec;
+       Result     : Interfaces.C.int;
+       Yielded    : Boolean := False;
+ 
+    begin
+       if Single_Lock then
+          Lock_RTS;
+       end if;
+ 
+       Write_Lock (Self_ID);
+ 
+       Abs_Time :=
+         (if Mode = Relative
+          then Time + Check_Time
+          else Duration'Min (Check_Time + Max_Sensible_Delay, Time));
+ 
+       if Abs_Time > Check_Time then
+          Request := To_Timespec (Abs_Time);
+          Self_ID.Common.State := Delay_Sleep;
+ 
+          pragma Assert (Check_Sleep (Delay_Sleep));
+ 
+          loop
+             exit when Self_ID.Pending_ATC_Level < Self_ID.ATC_Nesting_Level;
+ 
+             if Single_Lock then
+                Result :=
+                  cond_timedwait
+                    (Self_ID.Common.LL.CV'Access,
+                     Single_RTS_Lock.L'Access,
+                     Request'Access);
+             else
+                Result :=
+                  cond_timedwait
+                    (Self_ID.Common.LL.CV'Access,
+                     Self_ID.Common.LL.L.L'Access,
+                     Request'Access);
+             end if;
+ 
+             Yielded := True;
+ 
+             Check_Time := Monotonic_Clock;
+             exit when Abs_Time <= Check_Time or else Check_Time < Base_Time;
+ 
+             pragma Assert
+               (Result = 0     or else
+                Result = ETIME or else
+                Result = EINTR);
+          end loop;
+ 
+          pragma Assert
+            (Record_Wakeup
+               (To_Lock_Ptr (Self_ID.Common.LL.L'Access), Delay_Sleep));
+ 
+          Self_ID.Common.State := Runnable;
+       end if;
+ 
+       Unlock (Self_ID);
+ 
+       if Single_Lock then
+          Unlock_RTS;
+       end if;
+ 
+       if not Yielded then
+          thr_yield;
+       end if;
+    end Timed_Delay;
+ 
+    ------------
+    -- Wakeup --
+    ------------
+ 
+    procedure Wakeup
+      (T : Task_Id;
+       Reason : Task_States)
+    is
+       Result : Interfaces.C.int;
+    begin
+       pragma Assert (Check_Wakeup (T, Reason));
+       Result := cond_signal (T.Common.LL.CV'Access);
+       pragma Assert (Result = 0);
+    end Wakeup;
+ 
+    ---------------------------
+    -- Check_Initialize_Lock --
+    ---------------------------
+ 
+    --  The following code is intended to check some of the invariant assertions
+    --  related to lock usage, on which we depend.
+ 
+    function Check_Initialize_Lock
+      (L     : Lock_Ptr;
+       Level : Lock_Level) return Boolean
+    is
+       Self_ID : constant Task_Id := Self;
+ 
+    begin
+       --  Check that caller is abort-deferred
+ 
+       if Self_ID.Deferral_Level = 0 then
+          return False;
+       end if;
+ 
+       --  Check that the lock is not yet initialized
+ 
+       if L.Level /= 0 then
+          return False;
+       end if;
+ 
+       L.Level := Lock_Level'Pos (Level) + 1;
+       return True;
+    end Check_Initialize_Lock;
+ 
+    ----------------
+    -- Check_Lock --
+    ----------------
+ 
+    function Check_Lock (L : Lock_Ptr) return Boolean is
+       Self_ID : constant Task_Id := Self;
+       P       : Lock_Ptr;
+ 
+    begin
+       --  Check that the argument is not null
+ 
+       if L = null then
+          return False;
+       end if;
+ 
+       --  Check that L is not frozen
+ 
+       if L.Frozen then
+          return False;
+       end if;
+ 
+       --  Check that caller is abort-deferred
+ 
+       if Self_ID.Deferral_Level = 0 then
+          return False;
+       end if;
+ 
+       --  Check that caller is not holding this lock already
+ 
+       if L.Owner = To_Owner_ID (To_Address (Self_ID)) then
+          return False;
+       end if;
+ 
+       if Single_Lock then
+          return True;
+       end if;
+ 
+       --  Check that TCB lock order rules are satisfied
+ 
+       P := Self_ID.Common.LL.Locks;
+       if P /= null then
+          if P.Level >= L.Level
+            and then (P.Level > 2 or else L.Level > 2)
+          then
+             return False;
+          end if;
+       end if;
+ 
+       return True;
+    end Check_Lock;
+ 
+    -----------------
+    -- Record_Lock --
+    -----------------
+ 
+    function Record_Lock (L : Lock_Ptr) return Boolean is
+       Self_ID : constant Task_Id := Self;
+       P       : Lock_Ptr;
+ 
+    begin
+       Lock_Count := Lock_Count + 1;
+ 
+       --  There should be no owner for this lock at this point
+ 
+       if L.Owner /= null then
+          return False;
+       end if;
+ 
+       --  Record new owner
+ 
+       L.Owner := To_Owner_ID (To_Address (Self_ID));
+ 
+       if Single_Lock then
+          return True;
+       end if;
+ 
+       --  Check that TCB lock order rules are satisfied
+ 
+       P := Self_ID.Common.LL.Locks;
+ 
+       if P /= null then
+          L.Next := P;
+       end if;
+ 
+       Self_ID.Common.LL.Locking := null;
+       Self_ID.Common.LL.Locks := L;
+       return True;
+    end Record_Lock;
+ 
+    -----------------
+    -- Check_Sleep --
+    -----------------
+ 
+    function Check_Sleep (Reason : Task_States) return Boolean is
+       pragma Unreferenced (Reason);
+ 
+       Self_ID : constant Task_Id := Self;
+       P       : Lock_Ptr;
+ 
+    begin
+       --  Check that caller is abort-deferred
+ 
+       if Self_ID.Deferral_Level = 0 then
+          return False;
+       end if;
+ 
+       if Single_Lock then
+          return True;
+       end if;
+ 
+       --  Check that caller is holding own lock, on top of list
+ 
+       if Self_ID.Common.LL.Locks /=
+         To_Lock_Ptr (Self_ID.Common.LL.L'Access)
+       then
+          return False;
+       end if;
+ 
+       --  Check that TCB lock order rules are satisfied
+ 
+       if Self_ID.Common.LL.Locks.Next /= null then
+          return False;
+       end if;
+ 
+       Self_ID.Common.LL.L.Owner := null;
+       P := Self_ID.Common.LL.Locks;
+       Self_ID.Common.LL.Locks := Self_ID.Common.LL.Locks.Next;
+       P.Next := null;
+       return True;
+    end Check_Sleep;
+ 
+    -------------------
+    -- Record_Wakeup --
+    -------------------
+ 
+    function Record_Wakeup
+      (L      : Lock_Ptr;
+       Reason : Task_States) return Boolean
+    is
+       pragma Unreferenced (Reason);
+ 
+       Self_ID : constant Task_Id := Self;
+       P       : Lock_Ptr;
+ 
+    begin
+       --  Record new owner
+ 
+       L.Owner := To_Owner_ID (To_Address (Self_ID));
+ 
+       if Single_Lock then
+          return True;
+       end if;
+ 
+       --  Check that TCB lock order rules are satisfied
+ 
+       P := Self_ID.Common.LL.Locks;
+ 
+       if P /= null then
+          L.Next := P;
+       end if;
+ 
+       Self_ID.Common.LL.Locking := null;
+       Self_ID.Common.LL.Locks := L;
+       return True;
+    end Record_Wakeup;
+ 
+    ------------------
+    -- Check_Wakeup --
+    ------------------
+ 
+    function Check_Wakeup
+      (T      : Task_Id;
+       Reason : Task_States) return Boolean
+    is
+       Self_ID : constant Task_Id := Self;
+ 
+    begin
+       --  Is caller holding T's lock?
+ 
+       if T.Common.LL.L.Owner /= To_Owner_ID (To_Address (Self_ID)) then
+          return False;
+       end if;
+ 
+       --  Are reasons for wakeup and sleep consistent?
+ 
+       if T.Common.State /= Reason then
+          return False;
+       end if;
+ 
+       return True;
+    end Check_Wakeup;
+ 
+    ------------------
+    -- Check_Unlock --
+    ------------------
+ 
+    function Check_Unlock (L : Lock_Ptr) return Boolean is
+       Self_ID : constant Task_Id := Self;
+       P       : Lock_Ptr;
+ 
+    begin
+       Unlock_Count := Unlock_Count + 1;
+ 
+       if L = null then
+          return False;
+       end if;
+ 
+       if L.Buddy /= null then
+          return False;
+       end if;
+ 
+       --  Magic constant 4???
+ 
+       if L.Level = 4 then
+          Check_Count := Unlock_Count;
+       end if;
+ 
+       --  Magic constant 1000???
+ 
+       if Unlock_Count - Check_Count > 1000 then
+          Check_Count := Unlock_Count;
+       end if;
+ 
+       --  Check that caller is abort-deferred
+ 
+       if Self_ID.Deferral_Level = 0 then
+          return False;
+       end if;
+ 
+       --  Check that caller is holding this lock, on top of list
+ 
+       if Self_ID.Common.LL.Locks /= L then
+          return False;
+       end if;
+ 
+       --  Record there is no owner now
+ 
+       L.Owner := null;
+       P := Self_ID.Common.LL.Locks;
+       Self_ID.Common.LL.Locks := Self_ID.Common.LL.Locks.Next;
+       P.Next := null;
+       return True;
+    end Check_Unlock;
+ 
+    --------------------
+    -- Check_Finalize --
+    --------------------
+ 
+    function Check_Finalize_Lock (L : Lock_Ptr) return Boolean is
+       Self_ID : constant Task_Id := Self;
+ 
+    begin
+       --  Check that caller is abort-deferred
+ 
+       if Self_ID.Deferral_Level = 0 then
+          return False;
+       end if;
+ 
+       --  Check that no one is holding this lock
+ 
+       if L.Owner /= null then
+          return False;
+       end if;
+ 
+       L.Frozen := True;
+       return True;
+    end Check_Finalize_Lock;
+ 
+    ----------------
+    -- Initialize --
+    ----------------
+ 
+    procedure Initialize (S : in out Suspension_Object) is
+       Result : Interfaces.C.int;
+ 
+    begin
+       --  Initialize internal state (always to zero (RM D.10(6)))
+ 
+       S.State := False;
+       S.Waiting := False;
+ 
+       --  Initialize internal mutex
+ 
+       Result := mutex_init (S.L'Access, USYNC_THREAD, System.Null_Address);
+       pragma Assert (Result = 0 or else Result = ENOMEM);
+ 
+       if Result = ENOMEM then
+          raise Storage_Error with "Failed to allocate a lock";
+       end if;
+ 
+       --  Initialize internal condition variable
+ 
+       Result := cond_init (S.CV'Access, USYNC_THREAD, 0);
+       pragma Assert (Result = 0 or else Result = ENOMEM);
+ 
+       if Result /= 0 then
+          Result := mutex_destroy (S.L'Access);
+          pragma Assert (Result = 0);
+ 
+          if Result = ENOMEM then
+             raise Storage_Error;
+          end if;
+       end if;
+    end Initialize;
+ 
+    --------------
+    -- Finalize --
+    --------------
+ 
+    procedure Finalize (S : in out Suspension_Object) is
+       Result  : Interfaces.C.int;
+ 
+    begin
+       --  Destroy internal mutex
+ 
+       Result := mutex_destroy (S.L'Access);
+       pragma Assert (Result = 0);
+ 
+       --  Destroy internal condition variable
+ 
+       Result := cond_destroy (S.CV'Access);
+       pragma Assert (Result = 0);
+    end Finalize;
+ 
+    -------------------
+    -- Current_State --
+    -------------------
+ 
+    function Current_State (S : Suspension_Object) return Boolean is
+    begin
+       --  We do not want to use lock on this read operation. State is marked
+       --  as Atomic so that we ensure that the value retrieved is correct.
+ 
+       return S.State;
+    end Current_State;
+ 
+    ---------------
+    -- Set_False --
+    ---------------
+ 
+    procedure Set_False (S : in out Suspension_Object) is
+       Result  : Interfaces.C.int;
+ 
+    begin
+       SSL.Abort_Defer.all;
+ 
+       Result := mutex_lock (S.L'Access);
+       pragma Assert (Result = 0);
+ 
+       S.State := False;
+ 
+       Result := mutex_unlock (S.L'Access);
+       pragma Assert (Result = 0);
+ 
+       SSL.Abort_Undefer.all;
+    end Set_False;
+ 
+    --------------
+    -- Set_True --
+    --------------
+ 
+    procedure Set_True (S : in out Suspension_Object) is
+       Result : Interfaces.C.int;
+ 
+    begin
+       SSL.Abort_Defer.all;
+ 
+       Result := mutex_lock (S.L'Access);
+       pragma Assert (Result = 0);
+ 
+       --  If there is already a task waiting on this suspension object then
+       --  we resume it, leaving the state of the suspension object to False,
+       --  as it is specified in ARM D.10 par. 9. Otherwise, it just leaves
+       --  the state to True.
+ 
+       if S.Waiting then
+          S.Waiting := False;
+          S.State := False;
+ 
+          Result := cond_signal (S.CV'Access);
+          pragma Assert (Result = 0);
+ 
+       else
+          S.State := True;
+       end if;
+ 
+       Result := mutex_unlock (S.L'Access);
+       pragma Assert (Result = 0);
+ 
+       SSL.Abort_Undefer.all;
+    end Set_True;
+ 
+    ------------------------
+    -- Suspend_Until_True --
+    ------------------------
+ 
+    procedure Suspend_Until_True (S : in out Suspension_Object) is
+       Result : Interfaces.C.int;
+ 
+    begin
+       SSL.Abort_Defer.all;
+ 
+       Result := mutex_lock (S.L'Access);
+       pragma Assert (Result = 0);
+ 
+       if S.Waiting then
+ 
+          --  Program_Error must be raised upon calling Suspend_Until_True
+          --  if another task is already waiting on that suspension object
+          --  (RM D.10(10)).
+ 
+          Result := mutex_unlock (S.L'Access);
+          pragma Assert (Result = 0);
+ 
+          SSL.Abort_Undefer.all;
+ 
+          raise Program_Error;
+ 
+       else
+          --  Suspend the task if the state is False. Otherwise, the task
+          --  continues its execution, and the state of the suspension object
+          --  is set to False (ARM D.10 par. 9).
+ 
+          if S.State then
+             S.State := False;
+          else
+             S.Waiting := True;
+ 
+             loop
+                --  Loop in case pthread_cond_wait returns earlier than expected
+                --  (e.g. in case of EINTR caused by a signal).
+ 
+                Result := cond_wait (S.CV'Access, S.L'Access);
+                pragma Assert (Result = 0 or else Result = EINTR);
+ 
+                exit when not S.Waiting;
+             end loop;
+          end if;
+ 
+          Result := mutex_unlock (S.L'Access);
+          pragma Assert (Result = 0);
+ 
+          SSL.Abort_Undefer.all;
+       end if;
+    end Suspend_Until_True;
+ 
+    ----------------
+    -- Check_Exit --
+    ----------------
+ 
+    function Check_Exit (Self_ID : Task_Id) return Boolean is
+    begin
+       --  Check that caller is just holding Global_Task_Lock and no other locks
+ 
+       if Self_ID.Common.LL.Locks = null then
+          return False;
+       end if;
+ 
+       --  2 = Global_Task_Level
+ 
+       if Self_ID.Common.LL.Locks.Level /= 2 then
+          return False;
+       end if;
+ 
+       if Self_ID.Common.LL.Locks.Next /= null then
+          return False;
+       end if;
+ 
+       --  Check that caller is abort-deferred
+ 
+       if Self_ID.Deferral_Level = 0 then
+          return False;
+       end if;
+ 
+       return True;
+    end Check_Exit;
+ 
+    --------------------
+    -- Check_No_Locks --
+    --------------------
+ 
+    function Check_No_Locks (Self_ID : Task_Id) return Boolean is
+    begin
+       return Self_ID.Common.LL.Locks = null;
+    end Check_No_Locks;
+ 
+    ----------------------
+    -- Environment_Task --
+    ----------------------
+ 
+    function Environment_Task return Task_Id is
+    begin
+       return Environment_Task_Id;
+    end Environment_Task;
+ 
+    --------------
+    -- Lock_RTS --
+    --------------
+ 
+    procedure Lock_RTS is
+    begin
+       Write_Lock (Single_RTS_Lock'Access, Global_Lock => True);
+    end Lock_RTS;
+ 
+    ----------------
+    -- Unlock_RTS --
+    ----------------
+ 
+    procedure Unlock_RTS is
+    begin
+       Unlock (Single_RTS_Lock'Access, Global_Lock => True);
+    end Unlock_RTS;
+ 
+    ------------------
+    -- Suspend_Task --
+    ------------------
+ 
+    function Suspend_Task
+      (T           : ST.Task_Id;
+       Thread_Self : Thread_Id) return Boolean
+    is
+    begin
+       if T.Common.LL.Thread /= Thread_Self then
+          return thr_suspend (T.Common.LL.Thread) = 0;
+       else
+          return True;
+       end if;
+    end Suspend_Task;
+ 
+    -----------------
+    -- Resume_Task --
+    -----------------
+ 
+    function Resume_Task
+      (T           : ST.Task_Id;
+       Thread_Self : Thread_Id) return Boolean
+    is
+    begin
+       if T.Common.LL.Thread /= Thread_Self then
+          return thr_continue (T.Common.LL.Thread) = 0;
+       else
+          return True;
+       end if;
+    end Resume_Task;
+ 
+    --------------------
+    -- Stop_All_Tasks --
+    --------------------
+ 
+    procedure Stop_All_Tasks is
+    begin
+       null;
+    end Stop_All_Tasks;
+ 
+    ---------------
+    -- Stop_Task --
+    ---------------
+ 
+    function Stop_Task (T : ST.Task_Id) return Boolean is
+       pragma Unreferenced (T);
+    begin
+       return False;
+    end Stop_Task;
+ 
+    -------------------
+    -- Continue_Task --
+    -------------------
+ 
+    function Continue_Task (T : ST.Task_Id) return Boolean is
+       pragma Unreferenced (T);
+    begin
+       return False;
+    end Continue_Task;
+ 
+    -----------------------
+    -- Set_Task_Affinity --
+    -----------------------
+ 
+    procedure Set_Task_Affinity (T : ST.Task_Id) is
+       Result    : Interfaces.C.int;
+       Proc      : processorid_t;  --  User processor #
+       Last_Proc : processorid_t;  --  Last processor #
+ 
+       use System.Task_Info;
+       use type System.Multiprocessors.CPU_Range;
+ 
+    begin
+       --  Do nothing if the underlying thread has not yet been created. If the
+       --  thread has not yet been created then the proper affinity will be set
+       --  during its creation.
+ 
+       if T.Common.LL.Thread = Null_Thread_Id then
+          null;
+ 
+       --  pragma CPU
+ 
+       elsif T.Common.Base_CPU /=
+            System.Multiprocessors.Not_A_Specific_CPU
+       then
+          --  The CPU numbering in pragma CPU starts at 1 while the subprogram
+          --  to set the affinity starts at 0, therefore we must substract 1.
+ 
+          Result :=
+            processor_bind
+              (P_LWPID, id_t (T.Common.LL.LWP),
+               processorid_t (T.Common.Base_CPU) - 1, null);
+          pragma Assert (Result = 0);
+ 
+       --  Task_Info
+ 
+       elsif T.Common.Task_Info /= null then
+          if T.Common.Task_Info.New_LWP
+            and then T.Common.Task_Info.CPU /= CPU_UNCHANGED
+          then
+             Last_Proc := Num_Procs - 1;
+ 
+             if T.Common.Task_Info.CPU = ANY_CPU then
+                Result := 0;
+ 
+                Proc := 0;
+                while Proc < Last_Proc loop
+                   Result := p_online (Proc, PR_STATUS);
+                   exit when Result = PR_ONLINE;
+                   Proc := Proc + 1;
+                end loop;
+ 
+                Result :=
+                  processor_bind
+                    (P_LWPID, id_t (T.Common.LL.LWP), Proc, null);
+                pragma Assert (Result = 0);
+ 
+             else
+                --  Use specified processor
+ 
+                if T.Common.Task_Info.CPU < 0
+                  or else T.Common.Task_Info.CPU > Last_Proc
+                then
+                   raise Invalid_CPU_Number;
+                end if;
+ 
+                Result :=
+                  processor_bind
+                    (P_LWPID, id_t (T.Common.LL.LWP),
+                     T.Common.Task_Info.CPU, null);
+                pragma Assert (Result = 0);
+             end if;
+          end if;
+ 
+       --  Handle dispatching domains
+ 
+       elsif T.Common.Domain /= null
+         and then (T.Common.Domain /= ST.System_Domain
+                    or else T.Common.Domain.all /=
+                              (Multiprocessors.CPU'First ..
+                               Multiprocessors.Number_Of_CPUs => True))
+       then
+          declare
+             CPU_Set : aliased psetid_t;
+             Result  : int;
+ 
+          begin
+             Result := pset_create (CPU_Set'Access);
+             pragma Assert (Result = 0);
+ 
+             --  Set the affinity to all the processors belonging to the
+             --  dispatching domain.
+ 
+             for Proc in T.Common.Domain'Range loop
+ 
+                --  The Ada CPU numbering starts at 1 while the subprogram to
+                --  set the affinity starts at 0, therefore we must substract 1.
+ 
+                if T.Common.Domain (Proc) then
+                   Result :=
+                     pset_assign (CPU_Set, processorid_t (Proc) - 1, null);
+                   pragma Assert (Result = 0);
+                end if;
+             end loop;
+ 
+             Result :=
+               pset_bind (CPU_Set, P_LWPID, id_t (T.Common.LL.LWP), null);
+             pragma Assert (Result = 0);
+          end;
+       end if;
+    end Set_Task_Affinity;
+ 
+ end System.Task_Primitives.Operations;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-taprop__vxworks.adb gcc-8.1.0/gcc/ada/libgnarl/s-taprop__vxworks.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-taprop__vxworks.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-taprop__vxworks.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,1477 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                  GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                --
+ --                                                                          --
+ --     S Y S T E M . T A S K _ P R I M I T I V E S . O P E R A T I O N S    --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --         Copyright (C) 1992-2018, Free Software Foundation, Inc.          --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is the VxWorks version of this package
+ 
+ --  This package contains all the GNULL primitives that interface directly with
+ --  the underlying OS.
+ 
+ pragma Polling (Off);
+ --  Turn off polling, we do not want ATC polling to take place during tasking
+ --  operations. It causes infinite loops and other problems.
+ 
+ with Ada.Unchecked_Conversion;
+ 
+ with Interfaces.C;
+ 
+ with System.Multiprocessors;
+ with System.Tasking.Debug;
+ with System.Interrupt_Management;
+ with System.Float_Control;
+ with System.OS_Constants;
+ 
+ with System.Soft_Links;
+ --  We use System.Soft_Links instead of System.Tasking.Initialization
+ --  because the later is a higher level package that we shouldn't depend
+ --  on. For example when using the restricted run time, it is replaced by
+ --  System.Tasking.Restricted.Stages.
+ 
+ with System.Task_Info;
+ with System.VxWorks.Ext;
+ 
+ package body System.Task_Primitives.Operations is
+ 
+    package OSC renames System.OS_Constants;
+    package SSL renames System.Soft_Links;
+ 
+    use System.Tasking.Debug;
+    use System.Tasking;
+    use System.OS_Interface;
+    use System.Parameters;
+    use type System.VxWorks.Ext.t_id;
+    use type Interfaces.C.int;
+    use type System.OS_Interface.unsigned;
+ 
+    subtype int is System.OS_Interface.int;
+    subtype unsigned is System.OS_Interface.unsigned;
+ 
+    Relative : constant := 0;
+ 
+    ----------------
+    -- Local Data --
+    ----------------
+ 
+    --  The followings are logically constants, but need to be initialized at
+    --  run time.
+ 
+    Environment_Task_Id : Task_Id;
+    --  A variable to hold Task_Id for the environment task
+ 
+    --  The followings are internal configuration constants needed
+ 
+    Dispatching_Policy : Character;
+    pragma Import (C, Dispatching_Policy, "__gl_task_dispatching_policy");
+ 
+    Foreign_Task_Elaborated : aliased Boolean := True;
+    --  Used to identified fake tasks (i.e., non-Ada Threads)
+ 
+    Locking_Policy : Character;
+    pragma Import (C, Locking_Policy, "__gl_locking_policy");
+ 
+    Mutex_Protocol : Priority_Type;
+ 
+    Single_RTS_Lock : aliased RTS_Lock;
+    --  This is a lock to allow only one thread of control in the RTS at a
+    --  time; it is used to execute in mutual exclusion from all other tasks.
+    --  Used mainly in Single_Lock mode, but also to protect All_Tasks_List
+ 
+    Time_Slice_Val : Integer;
+    pragma Import (C, Time_Slice_Val, "__gl_time_slice_val");
+ 
+    Null_Thread_Id : constant Thread_Id := 0;
+    --  Constant to indicate that the thread identifier has not yet been
+    --  initialized.
+ 
+    --------------------
+    -- Local Packages --
+    --------------------
+ 
+    package Specific is
+ 
+       procedure Initialize;
+       pragma Inline (Initialize);
+       --  Initialize task specific data
+ 
+       function Is_Valid_Task return Boolean;
+       pragma Inline (Is_Valid_Task);
+       --  Does executing thread have a TCB?
+ 
+       procedure Set (Self_Id : Task_Id);
+       pragma Inline (Set);
+       --  Set the self id for the current task, unless Self_Id is null, in
+       --  which case the task specific data is deleted.
+ 
+       function Self return Task_Id;
+       pragma Inline (Self);
+       --  Return a pointer to the Ada Task Control Block of the calling task
+ 
+    end Specific;
+ 
+    package body Specific is separate;
+    --  The body of this package is target specific
+ 
+    ----------------------------------
+    -- ATCB allocation/deallocation --
+    ----------------------------------
+ 
+    package body ATCB_Allocation is separate;
+    --  The body of this package is shared across several targets
+ 
+    ---------------------------------
+    -- Support for foreign threads --
+    ---------------------------------
+ 
+    function Register_Foreign_Thread
+      (Thread         : Thread_Id;
+       Sec_Stack_Size : Size_Type := Unspecified_Size) return Task_Id;
+    --  Allocate and initialize a new ATCB for the current Thread. The size of
+    --  the secondary stack can be optionally specified.
+ 
+    function Register_Foreign_Thread
+      (Thread         : Thread_Id;
+       Sec_Stack_Size : Size_Type := Unspecified_Size)
+      return Task_Id is separate;
+ 
+    -----------------------
+    -- Local Subprograms --
+    -----------------------
+ 
+    procedure Abort_Handler (signo : Signal);
+    --  Handler for the abort (SIGABRT) signal to handle asynchronous abort
+ 
+    procedure Install_Signal_Handlers;
+    --  Install the default signal handlers for the current task
+ 
+    function Is_Task_Context return Boolean;
+    --  This function returns True if the current execution is in the context of
+    --  a task, and False if it is an interrupt context.
+ 
+    type Set_Stack_Limit_Proc_Acc is access procedure;
+    pragma Convention (C, Set_Stack_Limit_Proc_Acc);
+ 
+    Set_Stack_Limit_Hook : Set_Stack_Limit_Proc_Acc;
+    pragma Import (C, Set_Stack_Limit_Hook, "__gnat_set_stack_limit_hook");
+    --  Procedure to be called when a task is created to set stack limit. Used
+    --  only for VxWorks 5 and VxWorks MILS guest OS.
+ 
+    function To_Address is
+      new Ada.Unchecked_Conversion (Task_Id, System.Address);
+ 
+    -------------------
+    -- Abort_Handler --
+    -------------------
+ 
+    procedure Abort_Handler (signo : Signal) is
+       pragma Unreferenced (signo);
+ 
+       Self_ID        : constant Task_Id := Self;
+       Old_Set        : aliased sigset_t;
+       Unblocked_Mask : aliased sigset_t;
+       Result         : int;
+       pragma Warnings (Off, Result);
+ 
+       use System.Interrupt_Management;
+ 
+    begin
+       --  It is not safe to raise an exception when using ZCX and the GCC
+       --  exception handling mechanism.
+ 
+       if ZCX_By_Default then
+          return;
+       end if;
+ 
+       if Self_ID.Deferral_Level = 0
+         and then Self_ID.Pending_ATC_Level < Self_ID.ATC_Nesting_Level
+         and then not Self_ID.Aborting
+       then
+          Self_ID.Aborting := True;
+ 
+          --  Make sure signals used for RTS internal purposes are unmasked
+ 
+          Result := sigemptyset (Unblocked_Mask'Access);
+          pragma Assert (Result = 0);
+          Result :=
+            sigaddset
+            (Unblocked_Mask'Access,
+             Signal (Abort_Task_Interrupt));
+          pragma Assert (Result = 0);
+          Result := sigaddset (Unblocked_Mask'Access, SIGBUS);
+          pragma Assert (Result = 0);
+          Result := sigaddset (Unblocked_Mask'Access, SIGFPE);
+          pragma Assert (Result = 0);
+          Result := sigaddset (Unblocked_Mask'Access, SIGILL);
+          pragma Assert (Result = 0);
+          Result := sigaddset (Unblocked_Mask'Access, SIGSEGV);
+          pragma Assert (Result = 0);
+ 
+          Result :=
+            pthread_sigmask
+              (SIG_UNBLOCK,
+               Unblocked_Mask'Access,
+               Old_Set'Access);
+          pragma Assert (Result = 0);
+ 
+          raise Standard'Abort_Signal;
+       end if;
+    end Abort_Handler;
+ 
+    -----------------
+    -- Stack_Guard --
+    -----------------
+ 
+    procedure Stack_Guard (T : ST.Task_Id; On : Boolean) is
+       pragma Unreferenced (T);
+       pragma Unreferenced (On);
+ 
+    begin
+       --  Nothing needed (why not???)
+ 
+       null;
+    end Stack_Guard;
+ 
+    -------------------
+    -- Get_Thread_Id --
+    -------------------
+ 
+    function Get_Thread_Id (T : ST.Task_Id) return OSI.Thread_Id is
+    begin
+       return T.Common.LL.Thread;
+    end Get_Thread_Id;
+ 
+    ----------
+    -- Self --
+    ----------
+ 
+    function Self return Task_Id renames Specific.Self;
+ 
+    -----------------------------
+    -- Install_Signal_Handlers --
+    -----------------------------
+ 
+    procedure Install_Signal_Handlers is
+       act     : aliased struct_sigaction;
+       old_act : aliased struct_sigaction;
+       Tmp_Set : aliased sigset_t;
+       Result  : int;
+ 
+    begin
+       act.sa_flags := 0;
+       act.sa_handler := Abort_Handler'Address;
+ 
+       Result := sigemptyset (Tmp_Set'Access);
+       pragma Assert (Result = 0);
+       act.sa_mask := Tmp_Set;
+ 
+       Result :=
+         sigaction
+           (Signal (Interrupt_Management.Abort_Task_Interrupt),
+            act'Unchecked_Access,
+            old_act'Unchecked_Access);
+       pragma Assert (Result = 0);
+ 
+       Interrupt_Management.Initialize_Interrupts;
+    end Install_Signal_Handlers;
+ 
+    ---------------------
+    -- Initialize_Lock --
+    ---------------------
+ 
+    procedure Initialize_Lock
+      (Prio : System.Any_Priority;
+       L    : not null access Lock)
+    is
+    begin
+       L.Mutex := semMCreate (SEM_Q_PRIORITY + SEM_INVERSION_SAFE);
+       L.Prio_Ceiling := int (Prio);
+       L.Protocol := Mutex_Protocol;
+       pragma Assert (L.Mutex /= 0);
+    end Initialize_Lock;
+ 
+    procedure Initialize_Lock
+      (L     : not null access RTS_Lock;
+       Level : Lock_Level)
+    is
+       pragma Unreferenced (Level);
+    begin
+       L.Mutex := semMCreate (SEM_Q_PRIORITY + SEM_INVERSION_SAFE);
+       L.Prio_Ceiling := int (System.Any_Priority'Last);
+       L.Protocol := Mutex_Protocol;
+       pragma Assert (L.Mutex /= 0);
+    end Initialize_Lock;
+ 
+    -------------------
+    -- Finalize_Lock --
+    -------------------
+ 
+    procedure Finalize_Lock (L : not null access Lock) is
+       Result : int;
+    begin
+       Result := semDelete (L.Mutex);
+       pragma Assert (Result = 0);
+    end Finalize_Lock;
+ 
+    procedure Finalize_Lock (L : not null access RTS_Lock) is
+       Result : int;
+    begin
+       Result := semDelete (L.Mutex);
+       pragma Assert (Result = 0);
+    end Finalize_Lock;
+ 
+    ----------------
+    -- Write_Lock --
+    ----------------
+ 
+    procedure Write_Lock
+      (L                 : not null access Lock;
+       Ceiling_Violation : out Boolean)
+    is
+       Result : int;
+ 
+    begin
+       if L.Protocol = Prio_Protect
+         and then int (Self.Common.Current_Priority) > L.Prio_Ceiling
+       then
+          Ceiling_Violation := True;
+          return;
+       else
+          Ceiling_Violation := False;
+       end if;
+ 
+       Result := semTake (L.Mutex, WAIT_FOREVER);
+       pragma Assert (Result = 0);
+    end Write_Lock;
+ 
+    procedure Write_Lock
+      (L           : not null access RTS_Lock;
+       Global_Lock : Boolean := False)
+    is
+       Result : int;
+    begin
+       if not Single_Lock or else Global_Lock then
+          Result := semTake (L.Mutex, WAIT_FOREVER);
+          pragma Assert (Result = 0);
+       end if;
+    end Write_Lock;
+ 
+    procedure Write_Lock (T : Task_Id) is
+       Result : int;
+    begin
+       if not Single_Lock then
+          Result := semTake (T.Common.LL.L.Mutex, WAIT_FOREVER);
+          pragma Assert (Result = 0);
+       end if;
+    end Write_Lock;
+ 
+    ---------------
+    -- Read_Lock --
+    ---------------
+ 
+    procedure Read_Lock
+      (L                 : not null access Lock;
+       Ceiling_Violation : out Boolean)
+    is
+    begin
+       Write_Lock (L, Ceiling_Violation);
+    end Read_Lock;
+ 
+    ------------
+    -- Unlock --
+    ------------
+ 
+    procedure Unlock (L : not null access Lock) is
+       Result : int;
+    begin
+       Result := semGive (L.Mutex);
+       pragma Assert (Result = 0);
+    end Unlock;
+ 
+    procedure Unlock
+      (L           : not null access RTS_Lock;
+       Global_Lock : Boolean := False)
+    is
+       Result : int;
+    begin
+       if not Single_Lock or else Global_Lock then
+          Result := semGive (L.Mutex);
+          pragma Assert (Result = 0);
+       end if;
+    end Unlock;
+ 
+    procedure Unlock (T : Task_Id) is
+       Result : int;
+    begin
+       if not Single_Lock then
+          Result := semGive (T.Common.LL.L.Mutex);
+          pragma Assert (Result = 0);
+       end if;
+    end Unlock;
+ 
+    -----------------
+    -- Set_Ceiling --
+    -----------------
+ 
+    --  Dynamic priority ceilings are not supported by the underlying system
+ 
+    procedure Set_Ceiling
+      (L    : not null access Lock;
+       Prio : System.Any_Priority)
+    is
+       pragma Unreferenced (L, Prio);
+    begin
+       null;
+    end Set_Ceiling;
+ 
+    -----------
+    -- Sleep --
+    -----------
+ 
+    procedure Sleep (Self_ID : Task_Id; Reason : System.Tasking.Task_States) is
+       pragma Unreferenced (Reason);
+ 
+       Result : int;
+ 
+    begin
+       pragma Assert (Self_ID = Self);
+ 
+       --  Release the mutex before sleeping
+ 
+       Result :=
+         semGive (if Single_Lock
+                  then Single_RTS_Lock.Mutex
+                  else Self_ID.Common.LL.L.Mutex);
+       pragma Assert (Result = 0);
+ 
+       --  Perform a blocking operation to take the CV semaphore. Note that a
+       --  blocking operation in VxWorks will reenable task scheduling. When we
+       --  are no longer blocked and control is returned, task scheduling will
+       --  again be disabled.
+ 
+       Result := semTake (Self_ID.Common.LL.CV, WAIT_FOREVER);
+       pragma Assert (Result = 0);
+ 
+       --  Take the mutex back
+ 
+       Result :=
+         semTake ((if Single_Lock
+                   then Single_RTS_Lock.Mutex
+                   else Self_ID.Common.LL.L.Mutex), WAIT_FOREVER);
+       pragma Assert (Result = 0);
+    end Sleep;
+ 
+    -----------------
+    -- Timed_Sleep --
+    -----------------
+ 
+    --  This is for use within the run-time system, so abort is assumed to be
+    --  already deferred, and the caller should be holding its own ATCB lock.
+ 
+    procedure Timed_Sleep
+      (Self_ID  : Task_Id;
+       Time     : Duration;
+       Mode     : ST.Delay_Modes;
+       Reason   : System.Tasking.Task_States;
+       Timedout : out Boolean;
+       Yielded  : out Boolean)
+    is
+       pragma Unreferenced (Reason);
+ 
+       Orig     : constant Duration := Monotonic_Clock;
+       Absolute : Duration;
+       Ticks    : int;
+       Result   : int;
+       Wakeup   : Boolean := False;
+ 
+    begin
+       Timedout := False;
+       Yielded  := True;
+ 
+       if Mode = Relative then
+          Absolute := Orig + Time;
+ 
+          --  Systematically add one since the first tick will delay *at most*
+          --  1 / Rate_Duration seconds, so we need to add one to be on the
+          --  safe side.
+ 
+          Ticks := To_Clock_Ticks (Time);
+ 
+          if Ticks > 0 and then Ticks < int'Last then
+             Ticks := Ticks + 1;
+          end if;
+ 
+       else
+          Absolute := Time;
+          Ticks    := To_Clock_Ticks (Time - Monotonic_Clock);
+       end if;
+ 
+       if Ticks > 0 then
+          loop
+             --  Release the mutex before sleeping
+ 
+             Result :=
+               semGive (if Single_Lock
+                        then Single_RTS_Lock.Mutex
+                        else Self_ID.Common.LL.L.Mutex);
+             pragma Assert (Result = 0);
+ 
+             --  Perform a blocking operation to take the CV semaphore. Note
+             --  that a blocking operation in VxWorks will reenable task
+             --  scheduling. When we are no longer blocked and control is
+             --  returned, task scheduling will again be disabled.
+ 
+             Result := semTake (Self_ID.Common.LL.CV, Ticks);
+ 
+             if Result = 0 then
+ 
+                --  Somebody may have called Wakeup for us
+ 
+                Wakeup := True;
+ 
+             else
+                if errno /= S_objLib_OBJ_TIMEOUT then
+                   Wakeup := True;
+ 
+                else
+                   --  If Ticks = int'last, it was most probably truncated so
+                   --  let's make another round after recomputing Ticks from
+                   --  the absolute time.
+ 
+                   if Ticks /= int'Last then
+                      Timedout := True;
+ 
+                   else
+                      Ticks := To_Clock_Ticks (Absolute - Monotonic_Clock);
+ 
+                      if Ticks < 0 then
+                         Timedout := True;
+                      end if;
+                   end if;
+                end if;
+             end if;
+ 
+             --  Take the mutex back
+ 
+             Result :=
+               semTake ((if Single_Lock
+                         then Single_RTS_Lock.Mutex
+                         else Self_ID.Common.LL.L.Mutex), WAIT_FOREVER);
+             pragma Assert (Result = 0);
+ 
+             exit when Timedout or Wakeup;
+          end loop;
+ 
+       else
+          Timedout := True;
+ 
+          --  Should never hold a lock while yielding
+ 
+          if Single_Lock then
+             Result := semGive (Single_RTS_Lock.Mutex);
+             Result := taskDelay (0);
+             Result := semTake (Single_RTS_Lock.Mutex, WAIT_FOREVER);
+ 
+          else
+             Result := semGive (Self_ID.Common.LL.L.Mutex);
+             Result := taskDelay (0);
+             Result := semTake (Self_ID.Common.LL.L.Mutex, WAIT_FOREVER);
+          end if;
+       end if;
+    end Timed_Sleep;
+ 
+    -----------------
+    -- Timed_Delay --
+    -----------------
+ 
+    --  This is for use in implementing delay statements, so we assume the
+    --  caller is holding no locks.
+ 
+    procedure Timed_Delay
+      (Self_ID : Task_Id;
+       Time    : Duration;
+       Mode    : ST.Delay_Modes)
+    is
+       Orig     : constant Duration := Monotonic_Clock;
+       Absolute : Duration;
+       Ticks    : int;
+       Timedout : Boolean;
+       Aborted  : Boolean := False;
+ 
+       Result : int;
+       pragma Warnings (Off, Result);
+ 
+    begin
+       if Mode = Relative then
+          Absolute := Orig + Time;
+          Ticks    := To_Clock_Ticks (Time);
+ 
+          if Ticks > 0 and then Ticks < int'Last then
+ 
+             --  First tick will delay anytime between 0 and 1 / sysClkRateGet
+             --  seconds, so we need to add one to be on the safe side.
+ 
+             Ticks := Ticks + 1;
+          end if;
+ 
+       else
+          Absolute := Time;
+          Ticks    := To_Clock_Ticks (Time - Orig);
+       end if;
+ 
+       if Ticks > 0 then
+ 
+          --  Modifying State, locking the TCB
+ 
+          Result :=
+            semTake ((if Single_Lock
+                      then Single_RTS_Lock.Mutex
+                      else Self_ID.Common.LL.L.Mutex), WAIT_FOREVER);
+ 
+          pragma Assert (Result = 0);
+ 
+          Self_ID.Common.State := Delay_Sleep;
+          Timedout := False;
+ 
+          loop
+             Aborted := Self_ID.Pending_ATC_Level < Self_ID.ATC_Nesting_Level;
+ 
+             --  Release the TCB before sleeping
+ 
+             Result :=
+               semGive (if Single_Lock
+                        then Single_RTS_Lock.Mutex
+                        else Self_ID.Common.LL.L.Mutex);
+             pragma Assert (Result = 0);
+ 
+             exit when Aborted;
+ 
+             Result := semTake (Self_ID.Common.LL.CV, Ticks);
+ 
+             if Result /= 0 then
+ 
+                --  If Ticks = int'last, it was most probably truncated, so make
+                --  another round after recomputing Ticks from absolute time.
+ 
+                if errno = S_objLib_OBJ_TIMEOUT and then Ticks /= int'Last then
+                   Timedout := True;
+                else
+                   Ticks := To_Clock_Ticks (Absolute - Monotonic_Clock);
+ 
+                   if Ticks < 0 then
+                      Timedout := True;
+                   end if;
+                end if;
+             end if;
+ 
+             --  Take back the lock after having slept, to protect further
+             --  access to Self_ID.
+ 
+             Result :=
+               semTake
+                 ((if Single_Lock
+                   then Single_RTS_Lock.Mutex
+                   else Self_ID.Common.LL.L.Mutex), WAIT_FOREVER);
+ 
+             pragma Assert (Result = 0);
+ 
+             exit when Timedout;
+          end loop;
+ 
+          Self_ID.Common.State := Runnable;
+ 
+          Result :=
+            semGive
+              (if Single_Lock
+               then Single_RTS_Lock.Mutex
+               else Self_ID.Common.LL.L.Mutex);
+ 
+       else
+          Result := taskDelay (0);
+       end if;
+    end Timed_Delay;
+ 
+    ---------------------
+    -- Monotonic_Clock --
+    ---------------------
+ 
+    function Monotonic_Clock return Duration is
+       TS     : aliased timespec;
+       Result : int;
+    begin
+       Result := clock_gettime (OSC.CLOCK_RT_Ada, TS'Unchecked_Access);
+       pragma Assert (Result = 0);
+       return To_Duration (TS);
+    end Monotonic_Clock;
+ 
+    -------------------
+    -- RT_Resolution --
+    -------------------
+ 
+    function RT_Resolution return Duration is
+    begin
+       return 1.0 / Duration (sysClkRateGet);
+    end RT_Resolution;
+ 
+    ------------
+    -- Wakeup --
+    ------------
+ 
+    procedure Wakeup (T : Task_Id; Reason : System.Tasking.Task_States) is
+       pragma Unreferenced (Reason);
+       Result : int;
+    begin
+       Result := semGive (T.Common.LL.CV);
+       pragma Assert (Result = 0);
+    end Wakeup;
+ 
+    -----------
+    -- Yield --
+    -----------
+ 
+    procedure Yield (Do_Yield : Boolean := True) is
+       pragma Unreferenced (Do_Yield);
+       Result : int;
+       pragma Unreferenced (Result);
+    begin
+       Result := taskDelay (0);
+    end Yield;
+ 
+    ------------------
+    -- Set_Priority --
+    ------------------
+ 
+    procedure Set_Priority
+      (T                   : Task_Id;
+       Prio                : System.Any_Priority;
+       Loss_Of_Inheritance : Boolean := False)
+    is
+       pragma Unreferenced (Loss_Of_Inheritance);
+ 
+       Result     : int;
+ 
+    begin
+       Result :=
+         taskPrioritySet
+           (T.Common.LL.Thread, To_VxWorks_Priority (int (Prio)));
+       pragma Assert (Result = 0);
+ 
+       --  Note: in VxWorks 6.6 (or earlier), the task is placed at the end of
+       --  the priority queue instead of the head. This is not the behavior
+       --  required by Annex D (RM D.2.3(5/2)), but we consider it an acceptable
+       --  variation (RM 1.1.3(6)), given this is the built-in behavior of the
+       --  operating system. VxWorks versions starting from 6.7 implement the
+       --  required Annex D semantics.
+ 
+       --  In older versions we attempted to better approximate the Annex D
+       --  required behavior, but this simulation was not entirely accurate,
+       --  and it seems better to live with the standard VxWorks semantics.
+ 
+       T.Common.Current_Priority := Prio;
+    end Set_Priority;
+ 
+    ------------------
+    -- Get_Priority --
+    ------------------
+ 
+    function Get_Priority (T : Task_Id) return System.Any_Priority is
+    begin
+       return T.Common.Current_Priority;
+    end Get_Priority;
+ 
+    ----------------
+    -- Enter_Task --
+    ----------------
+ 
+    procedure Enter_Task (Self_ID : Task_Id) is
+    begin
+       --  Store the user-level task id in the Thread field (to be used
+       --  internally by the run-time system) and the kernel-level task id in
+       --  the LWP field (to be used by the debugger).
+ 
+       Self_ID.Common.LL.Thread := taskIdSelf;
+       Self_ID.Common.LL.LWP := getpid;
+ 
+       Specific.Set (Self_ID);
+ 
+       --  Properly initializes the FPU for PPC/MIPS systems
+ 
+       System.Float_Control.Reset;
+ 
+       --  Install the signal handlers
+ 
+       --  This is called for each task since there is no signal inheritance
+       --  between VxWorks tasks.
+ 
+       Install_Signal_Handlers;
+ 
+       --  If stack checking is enabled, set the stack limit for this task
+ 
+       if Set_Stack_Limit_Hook /= null then
+          Set_Stack_Limit_Hook.all;
+       end if;
+    end Enter_Task;
+ 
+    -------------------
+    -- Is_Valid_Task --
+    -------------------
+ 
+    function Is_Valid_Task return Boolean renames Specific.Is_Valid_Task;
+ 
+    -----------------------------
+    -- Register_Foreign_Thread --
+    -----------------------------
+ 
+    function Register_Foreign_Thread return Task_Id is
+    begin
+       if Is_Valid_Task then
+          return Self;
+       else
+          return Register_Foreign_Thread (taskIdSelf);
+       end if;
+    end Register_Foreign_Thread;
+ 
+    --------------------
+    -- Initialize_TCB --
+    --------------------
+ 
+    procedure Initialize_TCB (Self_ID : Task_Id; Succeeded : out Boolean) is
+    begin
+       Self_ID.Common.LL.CV := semBCreate (SEM_Q_PRIORITY, SEM_EMPTY);
+       Self_ID.Common.LL.Thread := Null_Thread_Id;
+ 
+       if Self_ID.Common.LL.CV = 0 then
+          Succeeded := False;
+ 
+       else
+          Succeeded := True;
+ 
+          if not Single_Lock then
+             Initialize_Lock (Self_ID.Common.LL.L'Access, ATCB_Level);
+          end if;
+       end if;
+    end Initialize_TCB;
+ 
+    -----------------
+    -- Create_Task --
+    -----------------
+ 
+    procedure Create_Task
+      (T          : Task_Id;
+       Wrapper    : System.Address;
+       Stack_Size : System.Parameters.Size_Type;
+       Priority   : System.Any_Priority;
+       Succeeded  : out Boolean)
+    is
+       Adjusted_Stack_Size : size_t;
+ 
+       use type System.Multiprocessors.CPU_Range;
+ 
+    begin
+       --  Check whether both Dispatching_Domain and CPU are specified for
+       --  the task, and the CPU value is not contained within the range of
+       --  processors for the domain.
+ 
+       if T.Common.Domain /= null
+         and then T.Common.Base_CPU /= System.Multiprocessors.Not_A_Specific_CPU
+         and then
+           (T.Common.Base_CPU not in T.Common.Domain'Range
+             or else not T.Common.Domain (T.Common.Base_CPU))
+       then
+          Succeeded := False;
+          return;
+       end if;
+ 
+       --  Ask for four extra bytes of stack space so that the ATCB pointer can
+       --  be stored below the stack limit, plus extra space for the frame of
+       --  Task_Wrapper. This is so the user gets the amount of stack requested
+       --  exclusive of the needs.
+ 
+       --  We also have to allocate n more bytes for the task name storage and
+       --  enough space for the Wind Task Control Block which is around 0x778
+       --  bytes. VxWorks also seems to carve out additional space, so use 2048
+       --  as a nice round number. We might want to increment to the nearest
+       --  page size in case we ever support VxVMI.
+ 
+       --  ??? - we should come back and visit this so we can set the task name
+       --        to something appropriate.
+ 
+       Adjusted_Stack_Size := size_t (Stack_Size) + 2048;
+ 
+       --  Since the initial signal mask of a thread is inherited from the
+       --  creator, and the Environment task has all its signals masked, we do
+       --  not need to manipulate caller's signal mask at this point. All tasks
+       --  in RTS will have All_Tasks_Mask initially.
+ 
+       --  We now compute the VxWorks task name and options, then spawn ...
+ 
+       declare
+          Name         : aliased String (1 .. T.Common.Task_Image_Len + 1);
+          Name_Address : System.Address;
+          --  Task name we are going to hand down to VxWorks
+ 
+          function Get_Task_Options return int;
+          pragma Import (C, Get_Task_Options, "__gnat_get_task_options");
+          --  Function that returns the options to be set for the task that we
+          --  are creating. We fetch the options assigned to the current task,
+          --  so offering some user level control over the options for a task
+          --  hierarchy, and force VX_FP_TASK because it is almost always
+          --  required.
+ 
+       begin
+          --  If there is no Ada task name handy, let VxWorks choose one.
+          --  Otherwise, tell VxWorks what the Ada task name is.
+ 
+          if T.Common.Task_Image_Len = 0 then
+             Name_Address := System.Null_Address;
+          else
+             Name (1 .. Name'Last - 1) :=
+               T.Common.Task_Image (1 .. T.Common.Task_Image_Len);
+             Name (Name'Last) := ASCII.NUL;
+             Name_Address := Name'Address;
+          end if;
+ 
+          --  Now spawn the VxWorks task for real
+ 
+          T.Common.LL.Thread :=
+            taskSpawn
+              (Name_Address,
+               To_VxWorks_Priority (int (Priority)),
+               Get_Task_Options,
+               Adjusted_Stack_Size,
+               Wrapper,
+               To_Address (T));
+       end;
+ 
+       --  Set processor affinity
+ 
+       Set_Task_Affinity (T);
+ 
+       --  Only case of failure is if taskSpawn returned 0 (aka Null_Thread_Id)
+ 
+       if T.Common.LL.Thread = Null_Thread_Id then
+          Succeeded := False;
+       else
+          Succeeded := True;
+          Task_Creation_Hook (T.Common.LL.Thread);
+          Set_Priority (T, Priority);
+       end if;
+    end Create_Task;
+ 
+    ------------------
+    -- Finalize_TCB --
+    ------------------
+ 
+    procedure Finalize_TCB (T : Task_Id) is
+       Result : int;
+ 
+    begin
+       if not Single_Lock then
+          Result := semDelete (T.Common.LL.L.Mutex);
+          pragma Assert (Result = 0);
+       end if;
+ 
+       T.Common.LL.Thread := Null_Thread_Id;
+ 
+       Result := semDelete (T.Common.LL.CV);
+       pragma Assert (Result = 0);
+ 
+       if T.Known_Tasks_Index /= -1 then
+          Known_Tasks (T.Known_Tasks_Index) := null;
+       end if;
+ 
+       ATCB_Allocation.Free_ATCB (T);
+    end Finalize_TCB;
+ 
+    ---------------
+    -- Exit_Task --
+    ---------------
+ 
+    procedure Exit_Task is
+    begin
+       Specific.Set (null);
+    end Exit_Task;
+ 
+    ----------------
+    -- Abort_Task --
+    ----------------
+ 
+    procedure Abort_Task (T : Task_Id) is
+       Result : int;
+    begin
+       Result :=
+         kill
+           (T.Common.LL.Thread,
+            Signal (Interrupt_Management.Abort_Task_Interrupt));
+       pragma Assert (Result = 0);
+    end Abort_Task;
+ 
+    ----------------
+    -- Initialize --
+    ----------------
+ 
+    procedure Initialize (S : in out Suspension_Object) is
+    begin
+       --  Initialize internal state (always to False (RM D.10(6)))
+ 
+       S.State := False;
+       S.Waiting := False;
+ 
+       --  Initialize internal mutex
+ 
+       --  Use simpler binary semaphore instead of VxWorks mutual exclusion
+       --  semaphore, because we don't need the fancier semantics and their
+       --  overhead.
+ 
+       S.L := semBCreate (SEM_Q_FIFO, SEM_FULL);
+ 
+       --  Initialize internal condition variable
+ 
+       S.CV := semBCreate (SEM_Q_FIFO, SEM_EMPTY);
+    end Initialize;
+ 
+    --------------
+    -- Finalize --
+    --------------
+ 
+    procedure Finalize (S : in out Suspension_Object) is
+       pragma Unmodified (S);
+       --  S may be modified on other targets, but not on VxWorks
+ 
+       Result : STATUS;
+ 
+    begin
+       --  Destroy internal mutex
+ 
+       Result := semDelete (S.L);
+       pragma Assert (Result = OK);
+ 
+       --  Destroy internal condition variable
+ 
+       Result := semDelete (S.CV);
+       pragma Assert (Result = OK);
+    end Finalize;
+ 
+    -------------------
+    -- Current_State --
+    -------------------
+ 
+    function Current_State (S : Suspension_Object) return Boolean is
+    begin
+       --  We do not want to use lock on this read operation. State is marked
+       --  as Atomic so that we ensure that the value retrieved is correct.
+ 
+       return S.State;
+    end Current_State;
+ 
+    ---------------
+    -- Set_False --
+    ---------------
+ 
+    procedure Set_False (S : in out Suspension_Object) is
+       Result : STATUS;
+ 
+    begin
+       SSL.Abort_Defer.all;
+ 
+       Result := semTake (S.L, WAIT_FOREVER);
+       pragma Assert (Result = OK);
+ 
+       S.State := False;
+ 
+       Result := semGive (S.L);
+       pragma Assert (Result = OK);
+ 
+       SSL.Abort_Undefer.all;
+    end Set_False;
+ 
+    --------------
+    -- Set_True --
+    --------------
+ 
+    procedure Set_True (S : in out Suspension_Object) is
+       Result : STATUS;
+ 
+    begin
+       --  Set_True can be called from an interrupt context, in which case
+       --  Abort_Defer is undefined.
+ 
+       if Is_Task_Context then
+          SSL.Abort_Defer.all;
+       end if;
+ 
+       Result := semTake (S.L, WAIT_FOREVER);
+       pragma Assert (Result = OK);
+ 
+       --  If there is already a task waiting on this suspension object then we
+       --  resume it, leaving the state of the suspension object to False, as it
+       --  is specified in (RM D.10 (9)). Otherwise, it just leaves the state to
+       --  True.
+ 
+       if S.Waiting then
+          S.Waiting := False;
+          S.State := False;
+ 
+          Result := semGive (S.CV);
+          pragma Assert (Result = OK);
+       else
+          S.State := True;
+       end if;
+ 
+       Result := semGive (S.L);
+       pragma Assert (Result = OK);
+ 
+       --  Set_True can be called from an interrupt context, in which case
+       --  Abort_Undefer is undefined.
+ 
+       if Is_Task_Context then
+          SSL.Abort_Undefer.all;
+       end if;
+ 
+    end Set_True;
+ 
+    ------------------------
+    -- Suspend_Until_True --
+    ------------------------
+ 
+    procedure Suspend_Until_True (S : in out Suspension_Object) is
+       Result : STATUS;
+ 
+    begin
+       SSL.Abort_Defer.all;
+ 
+       Result := semTake (S.L, WAIT_FOREVER);
+ 
+       if S.Waiting then
+ 
+          --  Program_Error must be raised upon calling Suspend_Until_True
+          --  if another task is already waiting on that suspension object
+          --  (RM D.10(10)).
+ 
+          Result := semGive (S.L);
+          pragma Assert (Result = OK);
+ 
+          SSL.Abort_Undefer.all;
+ 
+          raise Program_Error;
+ 
+       else
+          --  Suspend the task if the state is False. Otherwise, the task
+          --  continues its execution, and the state of the suspension object
+          --  is set to False (RM D.10 (9)).
+ 
+          if S.State then
+             S.State := False;
+ 
+             Result := semGive (S.L);
+             pragma Assert (Result = 0);
+ 
+             SSL.Abort_Undefer.all;
+ 
+          else
+             S.Waiting := True;
+ 
+             --  Release the mutex before sleeping
+ 
+             Result := semGive (S.L);
+             pragma Assert (Result = OK);
+ 
+             SSL.Abort_Undefer.all;
+ 
+             Result := semTake (S.CV, WAIT_FOREVER);
+             pragma Assert (Result = 0);
+          end if;
+       end if;
+    end Suspend_Until_True;
+ 
+    ----------------
+    -- Check_Exit --
+    ----------------
+ 
+    --  Dummy version
+ 
+    function Check_Exit (Self_ID : ST.Task_Id) return Boolean is
+       pragma Unreferenced (Self_ID);
+    begin
+       return True;
+    end Check_Exit;
+ 
+    --------------------
+    -- Check_No_Locks --
+    --------------------
+ 
+    function Check_No_Locks (Self_ID : ST.Task_Id) return Boolean is
+       pragma Unreferenced (Self_ID);
+    begin
+       return True;
+    end Check_No_Locks;
+ 
+    ----------------------
+    -- Environment_Task --
+    ----------------------
+ 
+    function Environment_Task return Task_Id is
+    begin
+       return Environment_Task_Id;
+    end Environment_Task;
+ 
+    --------------
+    -- Lock_RTS --
+    --------------
+ 
+    procedure Lock_RTS is
+    begin
+       Write_Lock (Single_RTS_Lock'Access, Global_Lock => True);
+    end Lock_RTS;
+ 
+    ----------------
+    -- Unlock_RTS --
+    ----------------
+ 
+    procedure Unlock_RTS is
+    begin
+       Unlock (Single_RTS_Lock'Access, Global_Lock => True);
+    end Unlock_RTS;
+ 
+    ------------------
+    -- Suspend_Task --
+    ------------------
+ 
+    function Suspend_Task
+      (T           : ST.Task_Id;
+       Thread_Self : Thread_Id) return Boolean
+    is
+    begin
+       if T.Common.LL.Thread /= Null_Thread_Id
+         and then T.Common.LL.Thread /= Thread_Self
+       then
+          return taskSuspend (T.Common.LL.Thread) = 0;
+       else
+          return True;
+       end if;
+    end Suspend_Task;
+ 
+    -----------------
+    -- Resume_Task --
+    -----------------
+ 
+    function Resume_Task
+      (T           : ST.Task_Id;
+       Thread_Self : Thread_Id) return Boolean
+    is
+    begin
+       if T.Common.LL.Thread /= Null_Thread_Id
+         and then T.Common.LL.Thread /= Thread_Self
+       then
+          return taskResume (T.Common.LL.Thread) = 0;
+       else
+          return True;
+       end if;
+    end Resume_Task;
+ 
+    --------------------
+    -- Stop_All_Tasks --
+    --------------------
+ 
+    procedure Stop_All_Tasks
+    is
+       Thread_Self : constant Thread_Id := taskIdSelf;
+       C           : Task_Id;
+ 
+       Dummy : int;
+       Old   : int;
+ 
+    begin
+       Old := Int_Lock;
+ 
+       C := All_Tasks_List;
+       while C /= null loop
+          if C.Common.LL.Thread /= Null_Thread_Id
+            and then C.Common.LL.Thread /= Thread_Self
+          then
+             Dummy := Task_Stop (C.Common.LL.Thread);
+          end if;
+ 
+          C := C.Common.All_Tasks_Link;
+       end loop;
+ 
+       Dummy := Int_Unlock (Old);
+    end Stop_All_Tasks;
+ 
+    ---------------
+    -- Stop_Task --
+    ---------------
+ 
+    function Stop_Task (T : ST.Task_Id) return Boolean is
+    begin
+       if T.Common.LL.Thread /= Null_Thread_Id then
+          return Task_Stop (T.Common.LL.Thread) = 0;
+       else
+          return True;
+       end if;
+    end Stop_Task;
+ 
+    -------------------
+    -- Continue_Task --
+    -------------------
+ 
+    function Continue_Task (T : ST.Task_Id) return Boolean
+    is
+    begin
+       if T.Common.LL.Thread /= Null_Thread_Id then
+          return Task_Cont (T.Common.LL.Thread) = 0;
+       else
+          return True;
+       end if;
+    end Continue_Task;
+ 
+    ---------------------
+    -- Is_Task_Context --
+    ---------------------
+ 
+    function Is_Task_Context return Boolean is
+    begin
+       return System.OS_Interface.Interrupt_Context /= 1;
+    end Is_Task_Context;
+ 
+    ----------------
+    -- Initialize --
+    ----------------
+ 
+    procedure Initialize (Environment_Task : Task_Id) is
+       Result : int;
+       pragma Unreferenced (Result);
+ 
+    begin
+       Environment_Task_Id := Environment_Task;
+ 
+       Interrupt_Management.Initialize;
+       Specific.Initialize;
+ 
+       if Locking_Policy = 'C' then
+          Mutex_Protocol := Prio_Protect;
+       elsif Locking_Policy = 'I' then
+          Mutex_Protocol := Prio_Inherit;
+       else
+          Mutex_Protocol := Prio_None;
+       end if;
+ 
+       if Time_Slice_Val > 0 then
+          Result :=
+            Set_Time_Slice
+              (To_Clock_Ticks
+                 (Duration (Time_Slice_Val) / Duration (1_000_000.0)));
+ 
+       elsif Dispatching_Policy = 'R' then
+          Result := Set_Time_Slice (To_Clock_Ticks (0.01));
+ 
+       end if;
+ 
+       --  Initialize the lock used to synchronize chain of all ATCBs
+ 
+       Initialize_Lock (Single_RTS_Lock'Access, RTS_Lock_Level);
+ 
+       --  Make environment task known here because it doesn't go through
+       --  Activate_Tasks, which does it for all other tasks.
+ 
+       Known_Tasks (Known_Tasks'First) := Environment_Task;
+       Environment_Task.Known_Tasks_Index := Known_Tasks'First;
+ 
+       Enter_Task (Environment_Task);
+ 
+       --  Set processor affinity
+ 
+       Set_Task_Affinity (Environment_Task);
+    end Initialize;
+ 
+    -----------------------
+    -- Set_Task_Affinity --
+    -----------------------
+ 
+    procedure Set_Task_Affinity (T : ST.Task_Id) is
+       Result : int := 0;
+       pragma Unreferenced (Result);
+ 
+       use System.Task_Info;
+       use type System.Multiprocessors.CPU_Range;
+ 
+    begin
+       --  Do nothing if the underlying thread has not yet been created. If the
+       --  thread has not yet been created then the proper affinity will be set
+       --  during its creation.
+ 
+       if T.Common.LL.Thread = Null_Thread_Id then
+          null;
+ 
+       --  pragma CPU
+ 
+       elsif T.Common.Base_CPU /= Multiprocessors.Not_A_Specific_CPU then
+ 
+          --  Ada 2012 pragma CPU uses CPU numbers starting from 1, while on
+          --  VxWorks the first CPU is identified by a 0, so we need to adjust.
+ 
+          Result :=
+            taskCpuAffinitySet
+              (T.Common.LL.Thread, int (T.Common.Base_CPU) - 1);
+ 
+       --  Task_Info
+ 
+       elsif T.Common.Task_Info /= Unspecified_Task_Info then
+          Result := taskCpuAffinitySet (T.Common.LL.Thread, T.Common.Task_Info);
+ 
+       --  Handle dispatching domains
+ 
+       elsif T.Common.Domain /= null
+         and then (T.Common.Domain /= ST.System_Domain
+                    or else T.Common.Domain.all /=
+                              (Multiprocessors.CPU'First ..
+                               Multiprocessors.Number_Of_CPUs => True))
+       then
+          declare
+             CPU_Set : unsigned := 0;
+ 
+          begin
+             --  Set the affinity to all the processors belonging to the
+             --  dispatching domain.
+ 
+             for Proc in T.Common.Domain'Range loop
+                if T.Common.Domain (Proc) then
+ 
+                   --  The thread affinity mask is a bit vector in which each
+                   --  bit represents a logical processor.
+ 
+                   CPU_Set := CPU_Set + 2 ** (Integer (Proc) - 1);
+                end if;
+             end loop;
+ 
+             Result := taskMaskAffinitySet (T.Common.LL.Thread, CPU_Set);
+          end;
+       end if;
+    end Set_Task_Affinity;
+ 
+ end System.Task_Primitives.Operations;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-tarest.adb gcc-8.1.0/gcc/ada/libgnarl/s-tarest.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-tarest.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-tarest.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,754 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --     S Y S T E M . T A S K I N G . R E S T R I C T E D . S T A G E S      --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --         Copyright (C) 1999-2018, Free Software Foundation, Inc.          --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ pragma Style_Checks (All_Checks);
+ --  Turn off subprogram alpha order check, since we group soft link
+ --  bodies and also separate off subprograms for restricted GNARLI.
+ 
+ --  This is a simplified version of the System.Tasking.Stages package,
+ --  intended to be used in a restricted run time.
+ 
+ --  This package represents the high level tasking interface used by the
+ --  compiler to expand Ada 95 tasking constructs into simpler run time calls.
+ 
+ pragma Polling (Off);
+ --  Turn off polling, we do not want ATC polling to take place during
+ --  tasking operations. It causes infinite loops and other problems.
+ 
+ with Ada.Exceptions;
+ 
+ with System.Task_Primitives.Operations;
+ with System.Soft_Links.Tasking;
+ 
+ with System.Soft_Links;
+ --  Used for the non-tasking routines (*_NT) that refer to global data. They
+ --  are needed here before the tasking run time has been elaborated. used for
+ --  Create_TSD This package also provides initialization routines for task
+ --  specific data. The GNARL must call these to be sure that all non-tasking
+ --  Ada constructs will work.
+ 
+ package body System.Tasking.Restricted.Stages is
+ 
+    package STPO renames System.Task_Primitives.Operations;
+    package SSL  renames System.Soft_Links;
+ 
+    use Ada.Exceptions;
+ 
+    use Parameters;
+    use Task_Primitives.Operations;
+ 
+    Tasks_Activation_Chain : Task_Id;
+    --  Chain of all the tasks to activate
+ 
+    Global_Task_Lock : aliased System.Task_Primitives.RTS_Lock;
+    --  This is a global lock; it is used to execute in mutual exclusion
+    --  from all other tasks. It is only used by Task_Lock and Task_Unlock.
+ 
+    -----------------------------------------------------------------
+    -- Tasking versions of services needed by non-tasking programs --
+    -----------------------------------------------------------------
+ 
+    function Get_Current_Excep return SSL.EOA;
+    --  Task-safe version of SSL.Get_Current_Excep
+ 
+    procedure Task_Lock;
+    --  Locks out other tasks. Preceding a section of code by Task_Lock and
+    --  following it by Task_Unlock creates a critical region. This is used
+    --  for ensuring that a region of non-tasking code (such as code used to
+    --  allocate memory) is tasking safe. Note that it is valid for calls to
+    --  Task_Lock/Task_Unlock to be nested, and this must work properly, i.e.
+    --  only the corresponding outer level Task_Unlock will actually unlock.
+ 
+    procedure Task_Unlock;
+    --  Releases lock previously set by call to Task_Lock. In the nested case,
+    --  all nested locks must be released before other tasks competing for the
+    --  tasking lock are released.
+ 
+    -----------------------
+    -- Local Subprograms --
+    -----------------------
+ 
+    procedure Task_Wrapper (Self_ID : Task_Id);
+    --  This is the procedure that is called by the GNULL from the
+    --  new context when a task is created. It waits for activation
+    --  and then calls the task body procedure. When the task body
+    --  procedure completes, it terminates the task.
+ 
+    procedure Terminate_Task (Self_ID : Task_Id);
+    --  Terminate the calling task.
+    --  This should only be called by the Task_Wrapper procedure.
+ 
+    procedure Create_Restricted_Task
+      (Priority          : Integer;
+       Stack_Address     : System.Address;
+       Stack_Size        : System.Parameters.Size_Type;
+       Sec_Stack_Address : System.Secondary_Stack.SS_Stack_Ptr;
+       Sec_Stack_Size    : System.Parameters.Size_Type;
+       Task_Info         : System.Task_Info.Task_Info_Type;
+       CPU               : Integer;
+       State             : Task_Procedure_Access;
+       Discriminants     : System.Address;
+       Elaborated        : Access_Boolean;
+       Task_Image        : String;
+       Created_Task      : Task_Id);
+    --  Code shared between Create_Restricted_Task (the concurrent version) and
+    --  Create_Restricted_Task_Sequential. See comment of the former in the
+    --  specification of this package.
+ 
+    procedure Activate_Tasks (Chain : Task_Id);
+    --  Activate the list of tasks started by Chain
+ 
+    procedure Init_RTS;
+    --  This procedure performs the initialization of the GNARL.
+    --  It consists of initializing the environment task, global locks, and
+    --  installing tasking versions of certain operations used by the compiler.
+    --  Init_RTS is called during elaboration.
+ 
+    -----------------------
+    -- Get_Current_Excep --
+    -----------------------
+ 
+    function Get_Current_Excep return SSL.EOA is
+    begin
+       return STPO.Self.Common.Compiler_Data.Current_Excep'Access;
+    end Get_Current_Excep;
+ 
+    ---------------
+    -- Task_Lock --
+    ---------------
+ 
+    procedure Task_Lock is
+       Self_ID : constant Task_Id := STPO.Self;
+ 
+    begin
+       Self_ID.Common.Global_Task_Lock_Nesting :=
+         Self_ID.Common.Global_Task_Lock_Nesting + 1;
+ 
+       if Self_ID.Common.Global_Task_Lock_Nesting = 1 then
+          STPO.Write_Lock (Global_Task_Lock'Access, Global_Lock => True);
+       end if;
+    end Task_Lock;
+ 
+    -----------------
+    -- Task_Unlock --
+    -----------------
+ 
+    procedure Task_Unlock is
+       Self_ID : constant Task_Id := STPO.Self;
+ 
+    begin
+       pragma Assert (Self_ID.Common.Global_Task_Lock_Nesting > 0);
+       Self_ID.Common.Global_Task_Lock_Nesting :=
+         Self_ID.Common.Global_Task_Lock_Nesting - 1;
+ 
+       if Self_ID.Common.Global_Task_Lock_Nesting = 0 then
+          STPO.Unlock (Global_Task_Lock'Access, Global_Lock => True);
+       end if;
+    end Task_Unlock;
+ 
+    ------------------
+    -- Task_Wrapper --
+    ------------------
+ 
+    --  The task wrapper is a procedure that is called first for each task
+    --  task body, and which in turn calls the compiler-generated task body
+    --  procedure. The wrapper's main job is to do initialization for the task.
+ 
+    --  The variable ID in the task wrapper is used to implement the Self
+    --  function on targets where there is a fast way to find the stack base
+    --  of the current thread, since it should be at a fixed offset from the
+    --  stack base.
+ 
+    procedure Task_Wrapper (Self_ID : Task_Id) is
+       ID : Task_Id := Self_ID;
+       pragma Volatile (ID);
+       pragma Warnings (Off, ID);
+       --  Variable used on some targets to implement a fast self. We turn off
+       --  warnings because a stand alone volatile constant has to be imported,
+       --  so we don't want warnings about ID not being referenced, and volatile
+       --  having no effect.
+       --
+       --  DO NOT delete ID. As noted, it is needed on some targets.
+ 
+       Cause : Cause_Of_Termination := Normal;
+       --  Indicates the reason why this task terminates. Normal corresponds to
+       --  a task terminating due to completing the last statement of its body.
+       --  If the task terminates because of an exception raised by the
+       --  execution of its task body, then Cause is set to Unhandled_Exception.
+       --  Aborts are not allowed in the restricted profile to which this file
+       --  belongs.
+ 
+       EO : Exception_Occurrence;
+       --  If the task terminates because of an exception raised by the
+       --  execution of its task body, then EO will contain the associated
+       --  exception occurrence. Otherwise, it will contain Null_Occurrence.
+ 
+    begin
+       --  Initialize low-level TCB components, that cannot be initialized by
+       --  the creator.
+ 
+       Enter_Task (Self_ID);
+ 
+       --  Call the task body procedure
+ 
+       begin
+          --  We are separating the following portion of the code in order to
+          --  place the exception handlers in a different block. In this way we
+          --  do not call Set_Jmpbuf_Address (which needs Self) before we set
+          --  Self in Enter_Task.
+ 
+          --  Note that in the case of Ravenscar HI-E where there are no
+          --  exception handlers, the exception handler is suppressed.
+ 
+          --  Call the task body procedure
+ 
+          Self_ID.Common.Task_Entry_Point (Self_ID.Common.Task_Arg);
+ 
+          --  Normal task termination
+ 
+          Cause := Normal;
+          Save_Occurrence (EO, Ada.Exceptions.Null_Occurrence);
+ 
+       exception
+          when E : others =>
+ 
+             --  Task terminating because of an unhandled exception
+ 
+             Cause := Unhandled_Exception;
+             Save_Occurrence (EO, E);
+       end;
+ 
+       --  Look for a fall-back handler
+ 
+       --  This package is part of the restricted run time which supports
+       --  neither task hierarchies (No_Task_Hierarchy) nor specific task
+       --  termination handlers (No_Specific_Termination_Handlers).
+ 
+       --  As specified in ARM C.7.3 par. 9/2, "the fall-back handler applies
+       --  only to the dependent tasks of the task". Hence, if the terminating
+       --  tasks (Self_ID) had a fall-back handler, it would not apply to
+       --  itself. This code is always executed by a task whose master is the
+       --  environment task (the task termination code for the environment task
+       --  is executed by SSL.Task_Termination_Handler), so the fall-back
+       --  handler to execute for this task can only be defined by its parent
+       --  (there is no grandparent).
+ 
+       declare
+          TH : Termination_Handler := null;
+ 
+       begin
+          if Single_Lock then
+             Lock_RTS;
+          end if;
+ 
+          Write_Lock (Self_ID.Common.Parent);
+ 
+          TH := Self_ID.Common.Parent.Common.Fall_Back_Handler;
+ 
+          Unlock (Self_ID.Common.Parent);
+ 
+          if Single_Lock then
+             Unlock_RTS;
+          end if;
+ 
+          --  Execute the task termination handler if we found it
+ 
+          if TH /= null then
+             TH.all (Cause, Self_ID, EO);
+          end if;
+       end;
+ 
+       Terminate_Task (Self_ID);
+    end Task_Wrapper;
+ 
+    -----------------------
+    -- Restricted GNARLI --
+    -----------------------
+ 
+    -----------------------------------
+    -- Activate_All_Tasks_Sequential --
+    -----------------------------------
+ 
+    procedure Activate_All_Tasks_Sequential is
+    begin
+       pragma Assert (Partition_Elaboration_Policy = 'S');
+ 
+       Activate_Tasks (Tasks_Activation_Chain);
+       Tasks_Activation_Chain := Null_Task;
+    end Activate_All_Tasks_Sequential;
+ 
+    -------------------------------
+    -- Activate_Restricted_Tasks --
+    -------------------------------
+ 
+    procedure Activate_Restricted_Tasks
+      (Chain_Access : Activation_Chain_Access) is
+    begin
+       if Partition_Elaboration_Policy = 'S' then
+ 
+          --  In sequential elaboration policy, the chain must be empty. This
+          --  procedure can be called if the unit has been compiled without
+          --  partition elaboration policy, but the partition has a sequential
+          --  elaboration policy.
+ 
+          pragma Assert (Chain_Access.T_ID = Null_Task);
+          null;
+       else
+          Activate_Tasks (Chain_Access.T_ID);
+          Chain_Access.T_ID := Null_Task;
+       end if;
+    end Activate_Restricted_Tasks;
+ 
+    --------------------
+    -- Activate_Tasks --
+    --------------------
+ 
+    --  Note that locks of activator and activated task are both locked here.
+    --  This is necessary because C.State and Self.Wait_Count have to be
+    --  synchronized. This is safe from deadlock because the activator is always
+    --  created before the activated task. That satisfies our
+    --  in-order-of-creation ATCB locking policy.
+ 
+    procedure Activate_Tasks (Chain : Task_Id) is
+       Self_ID       : constant Task_Id := STPO.Self;
+       C             : Task_Id;
+       Activate_Prio : System.Any_Priority;
+       Success       : Boolean;
+ 
+    begin
+       pragma Assert (Self_ID = Environment_Task);
+       pragma Assert (Self_ID.Common.Wait_Count = 0);
+ 
+       if Single_Lock then
+          Lock_RTS;
+       end if;
+ 
+       --  Lock self, to prevent activated tasks from racing ahead before we
+       --  finish activating the chain.
+ 
+       Write_Lock (Self_ID);
+ 
+       --  Activate all the tasks in the chain. Creation of the thread of
+       --  control was deferred until activation. So create it now.
+ 
+       C := Chain;
+       while C /= null loop
+          if C.Common.State /= Terminated then
+             pragma Assert (C.Common.State = Unactivated);
+ 
+             Write_Lock (C);
+ 
+             Activate_Prio :=
+               (if C.Common.Base_Priority < Get_Priority (Self_ID)
+                then Get_Priority (Self_ID)
+                else C.Common.Base_Priority);
+ 
+             STPO.Create_Task
+               (C, Task_Wrapper'Address,
+                Parameters.Size_Type
+                  (C.Common.Compiler_Data.Pri_Stack_Info.Size),
+                Activate_Prio, Success);
+ 
+             Self_ID.Common.Wait_Count := Self_ID.Common.Wait_Count + 1;
+ 
+             if Success then
+                C.Common.State := Runnable;
+             else
+                raise Program_Error;
+             end if;
+ 
+             Unlock (C);
+          end if;
+ 
+          C := C.Common.Activation_Link;
+       end loop;
+ 
+       Self_ID.Common.State := Activator_Sleep;
+ 
+       --  Wait for the activated tasks to complete activation. It is unsafe to
+       --  abort any of these tasks until the count goes to zero.
+ 
+       loop
+          exit when Self_ID.Common.Wait_Count = 0;
+          Sleep (Self_ID, Activator_Sleep);
+       end loop;
+ 
+       Self_ID.Common.State := Runnable;
+       Unlock (Self_ID);
+ 
+       if Single_Lock then
+          Unlock_RTS;
+       end if;
+    end Activate_Tasks;
+ 
+    ------------------------------------
+    -- Complete_Restricted_Activation --
+    ------------------------------------
+ 
+    --  As in several other places, the locks of the activator and activated
+    --  task are both locked here. This follows our deadlock prevention lock
+    --  ordering policy, since the activated task must be created after the
+    --  activator.
+ 
+    procedure Complete_Restricted_Activation is
+       Self_ID   : constant Task_Id := STPO.Self;
+       Activator : constant Task_Id := Self_ID.Common.Activator;
+ 
+    begin
+       if Single_Lock then
+          Lock_RTS;
+       end if;
+ 
+       Write_Lock (Activator);
+       Write_Lock (Self_ID);
+ 
+       --  Remove dangling reference to Activator, since a task may outlive its
+       --  activator.
+ 
+       Self_ID.Common.Activator := null;
+ 
+       --  Wake up the activator, if it is waiting for a chain of tasks to
+       --  activate, and we are the last in the chain to complete activation
+ 
+       if Activator.Common.State = Activator_Sleep then
+          Activator.Common.Wait_Count := Activator.Common.Wait_Count - 1;
+ 
+          if Activator.Common.Wait_Count = 0 then
+             Wakeup (Activator, Activator_Sleep);
+          end if;
+       end if;
+ 
+       Unlock (Self_ID);
+       Unlock (Activator);
+ 
+       if Single_Lock then
+          Unlock_RTS;
+       end if;
+ 
+       --  After the activation, active priority should be the same as base
+       --  priority. We must unlock the Activator first, though, since it should
+       --  not wait if we have lower priority.
+ 
+       if Get_Priority (Self_ID) /= Self_ID.Common.Base_Priority then
+          Set_Priority (Self_ID, Self_ID.Common.Base_Priority);
+       end if;
+    end Complete_Restricted_Activation;
+ 
+    ------------------------------
+    -- Complete_Restricted_Task --
+    ------------------------------
+ 
+    procedure Complete_Restricted_Task is
+    begin
+       STPO.Self.Common.State := Terminated;
+    end Complete_Restricted_Task;
+ 
+    ----------------------------
+    -- Create_Restricted_Task --
+    ----------------------------
+ 
+    procedure Create_Restricted_Task
+      (Priority          : Integer;
+       Stack_Address     : System.Address;
+       Stack_Size        : System.Parameters.Size_Type;
+       Sec_Stack_Address : System.Secondary_Stack.SS_Stack_Ptr;
+       Sec_Stack_Size    : System.Parameters.Size_Type;
+       Task_Info         : System.Task_Info.Task_Info_Type;
+       CPU               : Integer;
+       State             : Task_Procedure_Access;
+       Discriminants     : System.Address;
+       Elaborated        : Access_Boolean;
+       Task_Image        : String;
+       Created_Task      : Task_Id)
+    is
+       Self_ID       : constant Task_Id := STPO.Self;
+       Base_Priority : System.Any_Priority;
+       Base_CPU      : System.Multiprocessors.CPU_Range;
+       Success       : Boolean;
+       Len           : Integer;
+ 
+    begin
+       --  Stack is not preallocated on this target, so that Stack_Address must
+       --  be null.
+ 
+       pragma Assert (Stack_Address = Null_Address);
+ 
+       Base_Priority :=
+         (if Priority = Unspecified_Priority
+          then Self_ID.Common.Base_Priority
+          else System.Any_Priority (Priority));
+ 
+       --  Legal values of CPU are the special Unspecified_CPU value which is
+       --  inserted by the compiler for tasks without CPU aspect, and those in
+       --  the range of CPU_Range but no greater than Number_Of_CPUs. Otherwise
+       --  the task is defined to have failed, and it becomes a completed task
+       --  (RM D.16(14/3)).
+ 
+       if CPU /= Unspecified_CPU
+         and then (CPU < Integer (System.Multiprocessors.CPU_Range'First)
+           or else CPU > Integer (System.Multiprocessors.Number_Of_CPUs))
+       then
+          raise Tasking_Error with "CPU not in range";
+ 
+       --  Normal CPU affinity
+       else
+          --  When the application code says nothing about the task affinity
+          --  (task without CPU aspect) then the compiler inserts the
+          --  Unspecified_CPU value which indicates to the run-time library that
+          --  the task will activate and execute on the same processor as its
+          --  activating task if the activating task is assigned a processor
+          --  (RM D.16(14/3)).
+ 
+          Base_CPU :=
+            (if CPU = Unspecified_CPU
+             then Self_ID.Common.Base_CPU
+             else System.Multiprocessors.CPU_Range (CPU));
+       end if;
+ 
+       if Single_Lock then
+          Lock_RTS;
+       end if;
+ 
+       Write_Lock (Self_ID);
+ 
+       --  With no task hierarchy, the parent of all non-Environment tasks that
+       --  are created must be the Environment task. Dispatching domains are
+       --  not allowed in Ravenscar, so the dispatching domain parameter will
+       --  always be null.
+ 
+       Initialize_ATCB
+         (Self_ID, State, Discriminants, Self_ID, Elaborated, Base_Priority,
+          Base_CPU, null, Task_Info, Stack_Size, Created_Task, Success);
+ 
+       --  If we do our job right then there should never be any failures, which
+       --  was probably said about the Titanic; so just to be safe, let's retain
+       --  this code for now
+ 
+       if not Success then
+          Unlock (Self_ID);
+ 
+          if Single_Lock then
+             Unlock_RTS;
+          end if;
+ 
+          raise Program_Error;
+       end if;
+ 
+       Created_Task.Entry_Calls (1).Self := Created_Task;
+ 
+       Len :=
+         Integer'Min (Created_Task.Common.Task_Image'Length, Task_Image'Length);
+       Created_Task.Common.Task_Image_Len := Len;
+       Created_Task.Common.Task_Image (1 .. Len) :=
+         Task_Image (Task_Image'First .. Task_Image'First + Len - 1);
+ 
+       Unlock (Self_ID);
+ 
+       if Single_Lock then
+          Unlock_RTS;
+       end if;
+ 
+       --  Create TSD as early as possible in the creation of a task, since
+       --  it may be used by the operation of Ada code within the task. If the
+       --  compiler has not allocated a secondary stack, a stack will be
+       --  allocated fromt the binder generated pool.
+ 
+       SSL.Create_TSD
+         (Created_Task.Common.Compiler_Data,
+          Sec_Stack_Address,
+          Sec_Stack_Size);
+    end Create_Restricted_Task;
+ 
+    procedure Create_Restricted_Task
+      (Priority          : Integer;
+       Stack_Address     : System.Address;
+       Stack_Size        : System.Parameters.Size_Type;
+       Sec_Stack_Address : System.Secondary_Stack.SS_Stack_Ptr;
+       Sec_Stack_Size    : System.Parameters.Size_Type;
+       Task_Info         : System.Task_Info.Task_Info_Type;
+       CPU               : Integer;
+       State             : Task_Procedure_Access;
+       Discriminants     : System.Address;
+       Elaborated        : Access_Boolean;
+       Chain             : in out Activation_Chain;
+       Task_Image        : String;
+       Created_Task      : Task_Id)
+    is
+    begin
+       if Partition_Elaboration_Policy = 'S' then
+ 
+          --  A unit may have been compiled without partition elaboration
+          --  policy, and in this case the compiler will emit calls for the
+          --  default policy (concurrent). But if the partition policy is
+          --  sequential, activation must be deferred.
+ 
+          Create_Restricted_Task_Sequential
+            (Priority, Stack_Address, Stack_Size, Sec_Stack_Address,
+             Sec_Stack_Size, Task_Info, CPU, State, Discriminants, Elaborated,
+             Task_Image, Created_Task);
+ 
+       else
+          Create_Restricted_Task
+            (Priority, Stack_Address, Stack_Size, Sec_Stack_Address,
+             Sec_Stack_Size, Task_Info, CPU, State, Discriminants, Elaborated,
+             Task_Image, Created_Task);
+ 
+          --  Append this task to the activation chain
+ 
+          Created_Task.Common.Activation_Link := Chain.T_ID;
+          Chain.T_ID := Created_Task;
+       end if;
+    end Create_Restricted_Task;
+ 
+    ---------------------------------------
+    -- Create_Restricted_Task_Sequential --
+    ---------------------------------------
+ 
+    procedure Create_Restricted_Task_Sequential
+      (Priority          : Integer;
+       Stack_Address     : System.Address;
+       Stack_Size        : System.Parameters.Size_Type;
+       Sec_Stack_Address : System.Secondary_Stack.SS_Stack_Ptr;
+       Sec_Stack_Size    : System.Parameters.Size_Type;
+       Task_Info         : System.Task_Info.Task_Info_Type;
+       CPU               : Integer;
+       State             : Task_Procedure_Access;
+       Discriminants     : System.Address;
+       Elaborated        : Access_Boolean;
+       Task_Image        : String;
+       Created_Task      : Task_Id)
+    is
+    begin
+       Create_Restricted_Task
+         (Priority, Stack_Address, Stack_Size, Sec_Stack_Address,
+          Sec_Stack_Size, Task_Info, CPU, State, Discriminants, Elaborated,
+          Task_Image, Created_Task);
+ 
+       --  Append this task to the activation chain
+ 
+       Created_Task.Common.Activation_Link := Tasks_Activation_Chain;
+       Tasks_Activation_Chain := Created_Task;
+    end Create_Restricted_Task_Sequential;
+ 
+    ---------------------------
+    -- Finalize_Global_Tasks --
+    ---------------------------
+ 
+    --  This is needed to support the compiler interface; it will only be called
+    --  by the Environment task. Instead, it will cause the Environment to block
+    --  forever, since none of the dependent tasks are expected to terminate
+ 
+    procedure Finalize_Global_Tasks is
+       Self_ID : constant Task_Id := STPO.Self;
+ 
+    begin
+       pragma Assert (Self_ID = STPO.Environment_Task);
+ 
+       if Single_Lock then
+          Lock_RTS;
+       end if;
+ 
+       --  Handle normal task termination by the environment task, but only for
+       --  the normal task termination. In the case of Abnormal and
+       --  Unhandled_Exception they must have been handled before, and the task
+       --  termination soft link must have been changed so the task termination
+       --  routine is not executed twice.
+ 
+       --  Note that in the "normal" implementation in s-tassta.adb the task
+       --  termination procedure for the environment task should be executed
+       --  after termination of library-level tasks. However, this
+       --  implementation is to be used when the Ravenscar restrictions are in
+       --  effect, and AI-394 says that if there is a fall-back handler set for
+       --  the partition it should be called when the first task (including the
+       --  environment task) attempts to terminate.
+ 
+       SSL.Task_Termination_Handler.all (Ada.Exceptions.Null_Occurrence);
+ 
+       Write_Lock (Self_ID);
+       Sleep (Self_ID, Master_Completion_Sleep);
+       Unlock (Self_ID);
+ 
+       if Single_Lock then
+          Unlock_RTS;
+       end if;
+ 
+       --  Should never return from Master Completion Sleep
+ 
+       raise Program_Error;
+    end Finalize_Global_Tasks;
+ 
+    ---------------------------
+    -- Restricted_Terminated --
+    ---------------------------
+ 
+    function Restricted_Terminated (T : Task_Id) return Boolean is
+    begin
+       return T.Common.State = Terminated;
+    end Restricted_Terminated;
+ 
+    --------------------
+    -- Terminate_Task --
+    --------------------
+ 
+    procedure Terminate_Task (Self_ID : Task_Id) is
+    begin
+       Self_ID.Common.State := Terminated;
+    end Terminate_Task;
+ 
+    --------------
+    -- Init_RTS --
+    --------------
+ 
+    procedure Init_RTS is
+    begin
+       Tasking.Initialize;
+ 
+       --  Initialize lock used to implement mutual exclusion between all tasks
+ 
+       STPO.Initialize_Lock (Global_Task_Lock'Access, STPO.Global_Task_Level);
+ 
+       --  Notify that the tasking run time has been elaborated so that
+       --  the tasking version of the soft links can be used.
+ 
+       SSL.Lock_Task         := Task_Lock'Access;
+       SSL.Unlock_Task       := Task_Unlock'Access;
+       SSL.Adafinal          := Finalize_Global_Tasks'Access;
+       SSL.Get_Current_Excep := Get_Current_Excep'Access;
+ 
+       --  Initialize the tasking soft links (if not done yet) that are common
+       --  to the full and the restricted run times.
+ 
+       SSL.Tasking.Init_Tasking_Soft_Links;
+    end Init_RTS;
+ 
+ begin
+    Init_RTS;
+ end System.Tasking.Restricted.Stages;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-tarest.ads gcc-8.1.0/gcc/ada/libgnarl/s-tarest.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-tarest.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-tarest.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,271 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --     S Y S T E M . T A S K I N G . R E S T R I C T E D . S T A G E S      --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is a simplified version of the System.Tasking.Stages package,
+ --  intended to be used in a restricted run time.
+ 
+ --  This package represents the high level tasking interface used by the
+ --  compiler to expand Ada 95 tasking constructs into simpler run time calls
+ --  (aka GNARLI, GNU Ada Run-time Library Interface)
+ 
+ --  Note: the compiler generates direct calls to this interface, via Rtsfind.
+ --  Any changes to this interface may require corresponding compiler changes
+ --  in exp_ch9.adb and possibly exp_ch7.adb
+ 
+ --  The restricted GNARLI is also composed of System.Protected_Objects and
+ --  System.Protected_Objects.Single_Entry
+ 
+ with System.Parameters;
+ with System.Secondary_Stack;
+ with System.Task_Info;
+ 
+ package System.Tasking.Restricted.Stages is
+    pragma Elaborate_Body;
+ 
+    ---------------------------------
+    -- Compiler Interface (GNARLI) --
+    ---------------------------------
+ 
+    --  The compiler will expand in the GNAT tree the following construct:
+ 
+    --   task type T (Discr : Integer);
+ 
+    --   task body T is
+    --      ...declarations, possibly some controlled...
+    --   begin
+    --      ...B...;
+    --   end T;
+ 
+    --   T1 : T (1);
+ 
+    --  as follows:
+ 
+    --   task type t (discr : integer);
+    --   tE : aliased boolean := false;
+    --   tZ : size_type := unspecified_size;
+ 
+    --   type tV (discr : integer) is limited record
+    --      _task_id : task_id;
+    --      _atcb : aliased system__tasking__ada_task_control_block (0);
+    --   end record;
+ 
+    --   procedure tB (_task : access tV);
+    --   freeze tV [
+    --      procedure tVIP (_init : in out tV; _master : master_id;
+    --        _chain : in out activation_chain; _task_name : in string;
+    --        discr : integer) is
+    --      begin
+    --         _init.discr := discr;
+    --         _init._task_id := null;
+    --         system__tasking__ada_task_control_blockIP (_init._atcb, 0);
+    --         _init._task_id := _init._atcb'unchecked_access;
+    --         create_restricted_task (unspecified_priority, tZ,
+    --           unspecified_task_info, unspecified_cpu,
+    --           task_procedure_access!(tB'address), _init'address,
+    --           tE'unchecked_access, _task_name, _init._task_id);
+    --         return;
+    --      end tVIP;
+ 
+    --   _chain : aliased activation_chain;
+    --   activation_chainIP (_chain);
+ 
+    --   procedure tB (_task : access tV) is
+    --      discr : integer renames _task.discr;
+ 
+    --      procedure _clean is
+    --      begin
+    --         complete_restricted_task;
+    --         finalize_list (F14b);
+    --         return;
+    --      end _clean;
+ 
+    --   begin
+    --      ...declarations...
+    --      complete_restricted_activation;
+    --      ...B...;
+    --      return;
+    --   at end
+    --      _clean;
+    --   end tB;
+ 
+    --   tE := true;
+    --   t1 : t (1);
+    --   t1S : constant String := "t1";
+    --   tIP (t1, 3, _chain, t1S, 1);
+ 
+    Partition_Elaboration_Policy : Character := 'C';
+    pragma Export (C, Partition_Elaboration_Policy,
+                   "__gnat_partition_elaboration_policy");
+    --  Partition elaboration policy. Value can be either 'C' for concurrent,
+    --  which is the default or 'S' for sequential. This value can be modified
+    --  by the binder generated code, before calling elaboration code.
+ 
+    procedure Create_Restricted_Task
+      (Priority          : Integer;
+       Stack_Address     : System.Address;
+       Stack_Size        : System.Parameters.Size_Type;
+       Sec_Stack_Address : System.Secondary_Stack.SS_Stack_Ptr;
+       Sec_Stack_Size    : System.Parameters.Size_Type;
+       Task_Info         : System.Task_Info.Task_Info_Type;
+       CPU               : Integer;
+       State             : Task_Procedure_Access;
+       Discriminants     : System.Address;
+       Elaborated        : Access_Boolean;
+       Chain             : in out Activation_Chain;
+       Task_Image        : String;
+       Created_Task      : Task_Id);
+    --  Compiler interface only. Do not call from within the RTS.
+    --  This must be called to create a new task, when the partition
+    --  elaboration policy is not specified (or is concurrent).
+    --
+    --  Priority is the task's priority (assumed to be in the
+    --  System.Any_Priority'Range).
+    --
+    --  Stack_Address is the start address of the stack associated to the task,
+    --  in case it has been preallocated by the compiler; it is equal to
+    --  Null_Address when the stack needs to be allocated by the underlying
+    --  operating system.
+    --
+    --  Stack_Size is the stack size of the task to create.
+    --
+    --  Sec_Stack_Address is the pointer to the secondary stack created by the
+    --  compiler. If null, the secondary stack is either allocated by the binder
+    --  or the run-time.
+    --
+    --  Secondary_Stack_Size is the secondary stack size of the task to create.
+    --
+    --  Task_Info is the task info associated with the created task, or
+    --  Unspecified_Task_Info if none.
+    --
+    --  CPU is the task affinity. We pass it as an Integer to avoid an explicit
+    --   dependency from System.Multiprocessors when not needed. Static range
+    --   checks are performed when analyzing the pragma, and dynamic ones are
+    --   performed before setting the affinity at run time.
+    --
+    --  State is the compiler generated task's procedure body.
+    --
+    --  Discriminants is a pointer to a limited record whose discriminants are
+    --  those of the task to create. This parameter should be passed as the
+    --  single argument to State.
+    --
+    --  Elaborated is a pointer to a Boolean that must be set to true on exit
+    --  if the task could be successfully elaborated.
+    --
+    --  Chain is a linked list of task that needs to be created. On exit,
+    --  Created_Task.Activation_Link will be Chain.T_ID, and Chain.T_ID will be
+    --  Created_Task (the created task will be linked at the front of Chain).
+    --
+    --  Task_Image is a string created by the compiler that the run time can
+    --  store to ease the debugging and the Ada.Task_Identification facility.
+    --
+    --  Created_Task is the resulting task.
+    --
+    --  This procedure can raise Storage_Error if the task creation fails.
+ 
+    procedure Create_Restricted_Task_Sequential
+      (Priority          : Integer;
+       Stack_Address     : System.Address;
+       Stack_Size        : System.Parameters.Size_Type;
+       Sec_Stack_Address : System.Secondary_Stack.SS_Stack_Ptr;
+       Sec_Stack_Size    : System.Parameters.Size_Type;
+       Task_Info         : System.Task_Info.Task_Info_Type;
+       CPU               : Integer;
+       State             : Task_Procedure_Access;
+       Discriminants     : System.Address;
+       Elaborated        : Access_Boolean;
+       Task_Image        : String;
+       Created_Task      : Task_Id);
+    --  Compiler interface only. Do not call from within the RTS.
+    --  This must be called to create a new task, when the sequential partition
+    --  elaboration policy is used.
+    --
+    --  The parameters are the same as Create_Restricted_Task except there is
+    --  no Chain parameter (for the activation chain), as there is only one
+    --  global activation chain, which is declared in the body of this package.
+ 
+    procedure Activate_Restricted_Tasks
+      (Chain_Access : Activation_Chain_Access);
+    --  Compiler interface only. Do not call from within the RTS.
+    --  This must be called by the creator of a chain of one or more new tasks,
+    --  to activate them. The chain is a linked list that up to this point is
+    --  only known to the task that created them, though the individual tasks
+    --  are already in the All_Tasks_List.
+    --
+    --  The compiler builds the chain in LIFO order (as a stack). Another
+    --  version of this procedure had code to reverse the chain, so as to
+    --  activate the tasks in the order of declaration. This might be nice, but
+    --  it is not needed if priority-based scheduling is supported, since all
+    --  the activated tasks synchronize on the activators lock before they start
+    --  activating and so they should start activating in priority order.
+    --
+    --  When the partition elaboration policy is sequential, this procedure
+    --  does nothing, tasks will be activated at end of elaboration.
+ 
+    procedure Activate_All_Tasks_Sequential;
+    pragma Export (C, Activate_All_Tasks_Sequential,
+                   "__gnat_activate_all_tasks");
+    --  Binder interface only. Do not call from within the RTS. This must be
+    --  called an the end of the elaboration to activate all tasks, in order
+    --  to implement the sequential elaboration policy.
+ 
+    procedure Complete_Restricted_Activation;
+    --  Compiler interface only. Do not call from within the RTS. This should be
+    --  called from the task body at the end of the elaboration code for its
+    --  declarative part. Decrement the count of tasks to be activated by the
+    --  activator and wake it up so it can check to see if all tasks have been
+    --  activated. Except for the environment task, which should never call this
+    --  procedure, T.Activator should only be null iff T has completed
+    --  activation.
+ 
+    procedure Complete_Restricted_Task;
+    --  Compiler interface only. Do not call from within the RTS. This should be
+    --  called from an implicit at-end handler associated with the task body,
+    --  when it completes. From this point, the current task will become not
+    --  callable. If the current task have not completed activation, this should
+    --  be done now in order to wake up the activator (the environment task).
+ 
+    function Restricted_Terminated (T : Task_Id) return Boolean;
+    --  Compiler interface only. Do not call from within the RTS. This is called
+    --  by the compiler to implement the 'Terminated attribute.
+    --
+    --  source code:
+    --     T1'Terminated
+    --
+    --  code expansion:
+    --     restricted_terminated (t1._task_id)
+ 
+    procedure Finalize_Global_Tasks;
+    --  This is needed to support the compiler interface. It will only be called
+    --  by the Environment task in the binder generated file (by adafinal).
+    --  Instead, it will cause the Environment to block forever, since none of
+    --  the dependent tasks are expected to terminate
+ 
+ end System.Tasking.Restricted.Stages;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-tasdeb.adb gcc-8.1.0/gcc/ada/libgnarl/s-tasdeb.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-tasdeb.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-tasdeb.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,470 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                  GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                --
+ --                                                                          --
+ --                  S Y S T E M . T A S K I N G . D E B U G                 --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --          Copyright (C) 1997-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package encapsulates all direct interfaces to task debugging services
+ --  that are needed by gdb with gnat mode.
+ 
+ --  Note : This file *must* be compiled with debugging information
+ 
+ --  Do not add any dependency to GNARL packages since this package is used
+ --  in both normal and restricted (ravenscar) environments.
+ 
+ pragma Restriction_Warnings (No_Secondary_Stack);
+ --  We wish to avoid secondary stack usage here, because (e.g.) Trace is called
+ --  at delicate times, such as during task termination after the secondary
+ --  stack has been deallocated. It's just a warning, so we don't require
+ --  partition-wide consistency.
+ 
+ with System.CRTL;
+ with System.Storage_Elements; use System.Storage_Elements;
+ with System.Task_Primitives;
+ with System.Task_Primitives.Operations;
+ 
+ package body System.Tasking.Debug is
+ 
+    package STPO renames System.Task_Primitives.Operations;
+ 
+    type Trace_Flag_Set is array (Character) of Boolean;
+ 
+    Trace_On : Trace_Flag_Set := ('A' .. 'Z' => False, others => True);
+ 
+    Stderr_Fd : constant := 2;
+    --  File descriptor for standard error
+ 
+    -----------------------
+    -- Local Subprograms --
+    -----------------------
+ 
+    procedure Write (Fd : Integer; S : String; Count : Integer);
+    --  Write Count characters of S to the file descriptor Fd
+ 
+    procedure Put (S : String);
+    --  Display S on standard error
+ 
+    procedure Put_Line (S : String := "");
+    --  Display S on standard error with an additional line terminator
+ 
+    procedure Put_Task_Image (T : Task_Id);
+    --  Display relevant characters from T.Common.Task_Image on standard error
+ 
+    procedure Put_Task_Id_Image (T : Task_Id);
+    --  Display address in hexadecimal form on standard error
+ 
+    ------------------------
+    -- Continue_All_Tasks --
+    ------------------------
+ 
+    procedure Continue_All_Tasks is
+       C     : Task_Id;
+       Dummy : Boolean;
+ 
+    begin
+       STPO.Lock_RTS;
+ 
+       C := All_Tasks_List;
+       while C /= null loop
+          Dummy := STPO.Continue_Task (C);
+          C := C.Common.All_Tasks_Link;
+       end loop;
+ 
+       STPO.Unlock_RTS;
+    end Continue_All_Tasks;
+ 
+    --------------------
+    -- Get_User_State --
+    --------------------
+ 
+    function Get_User_State return Long_Integer is
+    begin
+       return STPO.Self.User_State;
+    end Get_User_State;
+ 
+    ----------------
+    -- List_Tasks --
+    ----------------
+ 
+    procedure List_Tasks is
+       C : Task_Id;
+    begin
+       C := All_Tasks_List;
+       while C /= null loop
+          Print_Task_Info (C);
+          C := C.Common.All_Tasks_Link;
+       end loop;
+    end List_Tasks;
+ 
+    ------------------------
+    -- Print_Current_Task --
+    ------------------------
+ 
+    procedure Print_Current_Task is
+    begin
+       Print_Task_Info (STPO.Self);
+    end Print_Current_Task;
+ 
+    ---------------------
+    -- Print_Task_Info --
+    ---------------------
+ 
+    procedure Print_Task_Info (T : Task_Id) is
+       Entry_Call : Entry_Call_Link;
+       Parent     : Task_Id;
+ 
+    begin
+       if T = null then
+          Put_Line ("null task");
+          return;
+       end if;
+ 
+       Put_Task_Image (T);
+       Put (": " & Task_States'Image (T.Common.State));
+       Parent := T.Common.Parent;
+ 
+       if Parent = null then
+          Put (", parent: <none>");
+       else
+          Put (", parent: ");
+          Put_Task_Image (Parent);
+       end if;
+ 
+       Put (", prio:" & T.Common.Current_Priority'Img);
+ 
+       if not T.Callable then
+          Put (", not callable");
+       end if;
+ 
+       if T.Aborting then
+          Put (", aborting");
+       end if;
+ 
+       if T.Deferral_Level /= 0 then
+          Put (", abort deferred");
+       end if;
+ 
+       if T.Common.Call /= null then
+          Entry_Call := T.Common.Call;
+          Put (", serving:");
+ 
+          while Entry_Call /= null loop
+             Put_Task_Id_Image (Entry_Call.Self);
+             Entry_Call := Entry_Call.Acceptor_Prev_Call;
+          end loop;
+       end if;
+ 
+       if T.Open_Accepts /= null then
+          Put (", accepting:");
+ 
+          for J in T.Open_Accepts'Range loop
+             Put (T.Open_Accepts (J).S'Img);
+          end loop;
+ 
+          if T.Terminate_Alternative then
+             Put (" or terminate");
+          end if;
+       end if;
+ 
+       if T.User_State /= 0 then
+          Put (", state:" & T.User_State'Img);
+       end if;
+ 
+       Put_Line;
+    end Print_Task_Info;
+ 
+    ---------
+    -- Put --
+    ---------
+ 
+    procedure Put (S : String) is
+    begin
+       Write (Stderr_Fd, S, S'Length);
+    end Put;
+ 
+    --------------
+    -- Put_Line --
+    --------------
+ 
+    procedure Put_Line (S : String := "") is
+    begin
+       Write (Stderr_Fd, S & ASCII.LF, S'Length + 1);
+    end Put_Line;
+ 
+    -----------------------
+    -- Put_Task_Id_Image --
+    -----------------------
+ 
+    procedure Put_Task_Id_Image (T : Task_Id) is
+       Address_Image_Length : constant :=
+         13 + (if Standard'Address_Size = 64 then 10 else 0);
+       --  Length of string to be printed for address of task
+ 
+       H : constant array (0 .. 15) of Character := "0123456789ABCDEF";
+       --  Table of hex digits
+ 
+       S : String (1 .. Address_Image_Length);
+       P : Natural;
+       N : Integer_Address;
+       U : Natural := 0;
+ 
+    begin
+       if T = null then
+          Put ("Null_Task_Id");
+ 
+       else
+          S (S'Last) := '#';
+          P := Address_Image_Length - 1;
+          N := To_Integer (T.all'Address);
+          while P > 3 loop
+             if U = 4 then
+                S (P) := '_';
+                P := P - 1;
+                U := 1;
+             else
+                U := U + 1;
+             end if;
+ 
+             S (P) := H (Integer (N mod 16));
+             P := P - 1;
+             N := N / 16;
+          end loop;
+ 
+          S (1 .. 3) := "16#";
+          Put (S);
+       end if;
+    end Put_Task_Id_Image;
+ 
+    --------------------
+    -- Put_Task_Image --
+    --------------------
+ 
+    procedure Put_Task_Image (T : Task_Id) is
+    begin
+       --  In case T.Common.Task_Image_Len is uninitialized junk, we check that
+       --  it is in range, to make this more robust.
+ 
+       if T.Common.Task_Image_Len in T.Common.Task_Image'Range then
+          Put (T.Common.Task_Image (1 .. T.Common.Task_Image_Len));
+       else
+          Put (T.Common.Task_Image);
+       end if;
+    end Put_Task_Image;
+ 
+    ----------------------
+    -- Resume_All_Tasks --
+    ----------------------
+ 
+    procedure Resume_All_Tasks (Thread_Self : OS_Interface.Thread_Id) is
+       C     : Task_Id;
+       Dummy : Boolean;
+ 
+    begin
+       STPO.Lock_RTS;
+ 
+       C := All_Tasks_List;
+       while C /= null loop
+          Dummy := STPO.Resume_Task (C, Thread_Self);
+          C := C.Common.All_Tasks_Link;
+       end loop;
+ 
+       STPO.Unlock_RTS;
+    end Resume_All_Tasks;
+ 
+    ---------------
+    -- Set_Trace --
+    ---------------
+ 
+    procedure Set_Trace (Flag  : Character; Value : Boolean := True) is
+    begin
+       Trace_On (Flag) := Value;
+    end Set_Trace;
+ 
+    --------------------
+    -- Set_User_State --
+    --------------------
+ 
+    procedure Set_User_State (Value : Long_Integer) is
+    begin
+       STPO.Self.User_State := Value;
+    end Set_User_State;
+ 
+    ------------------------
+    -- Signal_Debug_Event --
+    ------------------------
+ 
+    procedure Signal_Debug_Event
+      (Event_Kind : Event_Kind_Type;
+       Task_Value : Task_Id)
+    is
+    begin
+       null;
+    end Signal_Debug_Event;
+ 
+    --------------------
+    -- Stop_All_Tasks --
+    --------------------
+ 
+    procedure Stop_All_Tasks is
+       C     : Task_Id;
+       Dummy : Boolean;
+ 
+    begin
+       STPO.Lock_RTS;
+ 
+       C := All_Tasks_List;
+       while C /= null loop
+          Dummy := STPO.Stop_Task (C);
+          C := C.Common.All_Tasks_Link;
+       end loop;
+ 
+       STPO.Unlock_RTS;
+    end Stop_All_Tasks;
+ 
+    ----------------------------
+    -- Stop_All_Tasks_Handler --
+    ----------------------------
+ 
+    procedure Stop_All_Tasks_Handler is
+    begin
+       STPO.Stop_All_Tasks;
+    end Stop_All_Tasks_Handler;
+ 
+    -----------------------
+    -- Suspend_All_Tasks --
+    -----------------------
+ 
+    procedure Suspend_All_Tasks (Thread_Self : OS_Interface.Thread_Id) is
+       C     : Task_Id;
+       Dummy : Boolean;
+ 
+    begin
+       STPO.Lock_RTS;
+ 
+       C := All_Tasks_List;
+       while C /= null loop
+          Dummy := STPO.Suspend_Task (C, Thread_Self);
+          C := C.Common.All_Tasks_Link;
+       end loop;
+ 
+       STPO.Unlock_RTS;
+    end Suspend_All_Tasks;
+ 
+    ------------------------
+    -- Task_Creation_Hook --
+    ------------------------
+ 
+    procedure Task_Creation_Hook (Thread : OS_Interface.Thread_Id) is
+       pragma Inspection_Point (Thread);
+       --  gdb needs to access the thread parameter in order to implement
+       --  the multitask mode under VxWorks.
+ 
+    begin
+       null;
+    end Task_Creation_Hook;
+ 
+    ---------------------------
+    -- Task_Termination_Hook --
+    ---------------------------
+ 
+    procedure Task_Termination_Hook is
+    begin
+       null;
+    end Task_Termination_Hook;
+ 
+    -----------
+    -- Trace --
+    -----------
+ 
+    procedure Trace
+      (Self_Id  : Task_Id;
+       Msg      : String;
+       Flag     : Character;
+       Other_Id : Task_Id := null)
+    is
+    begin
+       if Trace_On (Flag) then
+          Put_Task_Id_Image (Self_Id);
+          Put (":" & Flag & ":");
+          Put_Task_Image (Self_Id);
+          Put (":");
+ 
+          if Other_Id /= null then
+             Put_Task_Id_Image (Other_Id);
+             Put (":");
+          end if;
+ 
+          Put_Line (Msg);
+       end if;
+    end Trace;
+ 
+    -----------
+    -- Write --
+    -----------
+ 
+    procedure Write (Fd : Integer; S : String; Count : Integer) is
+       Discard : System.CRTL.ssize_t;
+       --  Ignore write errors here; this is just debugging output, and there's
+       --  nothing to be done about errors anyway.
+    begin
+       Discard :=
+         System.CRTL.write
+           (Fd, S'Address, System.CRTL.size_t (Count));
+    end Write;
+ 
+    -----------------
+    -- Master_Hook --
+    -----------------
+ 
+    procedure Master_Hook
+      (Dependent    : Task_Id;
+       Parent       : Task_Id;
+       Master_Level : Integer)
+    is
+       pragma Inspection_Point (Dependent);
+       pragma Inspection_Point (Parent);
+       pragma Inspection_Point (Master_Level);
+    begin
+       null;
+    end Master_Hook;
+ 
+    ---------------------------
+    -- Master_Completed_Hook --
+    ---------------------------
+ 
+    procedure Master_Completed_Hook
+      (Self_ID      : Task_Id;
+       Master_Level : Integer)
+    is
+       pragma Inspection_Point (Self_ID);
+       pragma Inspection_Point (Master_Level);
+    begin
+       null;
+    end Master_Completed_Hook;
+ 
+ end System.Tasking.Debug;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-tasdeb.ads gcc-8.1.0/gcc/ada/libgnarl/s-tasdeb.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-tasdeb.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-tasdeb.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,165 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                  GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                --
+ --                                                                          --
+ --                  S Y S T E M . T A S K I N G . D E B U G                 --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --          Copyright (C) 1997-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package encapsulates all direct interfaces to task debugging services
+ --  that are needed by gdb with gnat mode.
+ 
+ with System.Tasking;
+ with System.OS_Interface;
+ 
+ package System.Tasking.Debug is
+    pragma Preelaborate;
+ 
+    ------------------------------------------
+    -- Application-level debugging routines --
+    ------------------------------------------
+ 
+    procedure List_Tasks;
+    --  Print a list of all the known Ada tasks with abbreviated state
+    --  information, one-per-line, to the standard error file.
+ 
+    procedure Print_Current_Task;
+    --  Write information about current task, in hexadecimal, as one line, to
+    --  the standard error file.
+ 
+    procedure Print_Task_Info (T : Task_Id);
+    --  Similar to Print_Current_Task, for a given task
+ 
+    procedure Set_User_State (Value : Long_Integer);
+    --  Set user state value in the current task. This state will be displayed
+    --  when calling List_Tasks or Print_Current_Task. It is useful for setting
+    --  task specific state.
+ 
+    function Get_User_State return Long_Integer;
+    --  Return the user state for the current task
+ 
+    -------------------------
+    -- General GDB support --
+    -------------------------
+ 
+    Known_Tasks : array (0 .. 999) of Task_Id := (others => null);
+    --  Global array of tasks read by gdb, and updated by Create_Task and
+    --  Finalize_TCB
+ 
+    Debug_Event_Activating           : constant := 1;
+    Debug_Event_Run                  : constant := 2;
+    Debug_Event_Suspended            : constant := 3;
+    Debug_Event_Preempted            : constant := 4;
+    Debug_Event_Terminated           : constant := 5;
+    Debug_Event_Abort_Terminated     : constant := 6;
+    Debug_Event_Exception_Terminated : constant := 7;
+    Debug_Event_Rendezvous_Exception : constant := 8;
+    Debug_Event_Handled              : constant := 9;
+    Debug_Event_Dependents_Exception : constant := 10;
+    Debug_Event_Handled_Others       : constant := 11;
+ 
+    subtype Event_Kind_Type is Positive range 1 .. 11;
+    --  Event kinds currently defined for debugging, used globally
+    --  below and on a per task basis.
+ 
+    procedure Signal_Debug_Event
+      (Event_Kind : Event_Kind_Type;
+       Task_Value : Task_Id);
+ 
+    ----------------------------------
+    -- VxWorks specific GDB support --
+    ----------------------------------
+ 
+    --  Although the following routines are implemented in a target independent
+    --  manner, only VxWorks currently uses them.
+ 
+    procedure Task_Creation_Hook (Thread : OS_Interface.Thread_Id);
+    --  This procedure is used to notify GDB of task's creation. It must be
+    --  called by the task's creator.
+ 
+    procedure Task_Termination_Hook;
+    --  This procedure is used to notify GDB of task's termination
+ 
+    procedure Suspend_All_Tasks (Thread_Self : OS_Interface.Thread_Id);
+    --  Suspend all the tasks except the one whose associated thread is
+    --  Thread_Self by traversing All_Tasks_List and calling
+    --  System.Task_Primitives.Operations.Suspend_Task.
+ 
+    procedure Resume_All_Tasks (Thread_Self : OS_Interface.Thread_Id);
+    --  Resume all the tasks except the one whose associated thread is
+    --  Thread_Self by traversing All_Tasks_List and calling
+    --  System.Task_Primitives.Operations.Continue_Task.
+ 
+    procedure Stop_All_Tasks_Handler;
+    --  Stop all the tasks by traversing All_Tasks_List and calling
+    --  System.Task_Primitives.Operations.Stop_All_Task. This function
+    --  can be used in an interrupt handler.
+ 
+    procedure Stop_All_Tasks;
+    --  Stop all the tasks by traversing All_Tasks_List and calling
+    --  System.Task_Primitives.Operations.Stop_Task.
+ 
+    procedure Continue_All_Tasks;
+    --  Continue all the tasks by traversing All_Tasks_List and calling
+    --  System.Task_Primitives.Operations.Continue_Task.
+ 
+    -------------------------------
+    -- Run-time tracing routines --
+    -------------------------------
+ 
+    procedure Trace
+      (Self_Id  : Task_Id;
+       Msg      : String;
+       Flag     : Character;
+       Other_Id : Task_Id := null);
+    --  If traces for Flag are enabled, display on Standard_Error a given
+    --  message for the current task. Other_Id is an optional second task id
+    --  to display.
+ 
+    procedure Set_Trace
+      (Flag  : Character;
+       Value : Boolean := True);
+    --  Enable or disable tracing for Flag. By default, flags in the range
+    --  'A' .. 'Z' are disabled, others are enabled.
+ 
+    ---------------------------------
+    -- Hooks for Valgrind/Helgrind --
+    ---------------------------------
+ 
+    procedure Master_Hook
+      (Dependent    : Task_Id;
+       Parent       : Task_Id;
+       Master_Level : Integer);
+    --  Indicate to Valgrind/Helgrind that the master of Dependent is
+    --  Parent + Master_Level.
+ 
+    procedure Master_Completed_Hook
+      (Self_ID      : Task_Id;
+       Master_Level : Integer);
+    --  Indicate to Valgrind/Helgrind that Self_ID has completed the master
+    --  Master_Level.
+ 
+ end System.Tasking.Debug;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-tasinf.adb gcc-8.1.0/gcc/ada/libgnarl/s-tasinf.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-tasinf.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-tasinf.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,41 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                     S Y S T E M . T A S K _ I N F O                      --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                           (Compiler Interface)                           --
+ --                                                                          --
+ --          Copyright (C) 1998-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is 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 a dummy version of this package that is needed to solve bootstrap
+ --  problems when compiling a library that doesn't require s-tasinf.adb from
+ --  a compiler that contains one.
+ 
+ --  This package contains the definitions and routines associated with the
+ --  implementation of the Task_Info pragma.
+ 
+ package body System.Task_Info is
+ end System.Task_Info;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-tasinf.ads gcc-8.1.0/gcc/ada/libgnarl/s-tasinf.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-tasinf.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-tasinf.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,93 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                     S Y S T E M . T A S K _ I N F O                      --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is 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 definitions and routines associated with the
+ --  implementation and use of the Task_Info pragma. It is specialized
+ --  appropriately for targets that make use of this pragma.
+ 
+ --  Note: the compiler generates direct calls to this interface, via Rtsfind.
+ --  Any changes to this interface may require corresponding compiler changes.
+ 
+ --  The functionality in this unit is now provided by the predefined package
+ --  System.Multiprocessors and the CPU aspect. This package is obsolescent.
+ 
+ package System.Task_Info is
+    pragma Obsolescent (Task_Info, "use System.Multiprocessors and CPU aspect");
+    pragma Preelaborate;
+    pragma Elaborate_Body;
+    --  To ensure that a body is allowed
+ 
+    -----------------------------------------
+    -- Implementation of Task_Info Feature --
+    -----------------------------------------
+ 
+    --  The Task_Info pragma:
+ 
+    --    pragma Task_Info (EXPRESSION);
+ 
+    --  allows the specification on a task by task basis of a value of type
+    --  System.Task_Info.Task_Info_Type to be passed to a task when it is
+    --  created. The specification of this type, and the effect on the task
+    --  that is created is target dependent.
+ 
+    --  The Task_Info pragma appears within a task definition (compare the
+    --  definition and implementation of pragma Priority). If no such pragma
+    --  appears, then the value Unspecified_Task_Info is passed. If a pragma
+    --  is present, then it supplies an alternative value. If the argument of
+    --  the pragma is a discriminant reference, then the value can be set on
+    --  a task by task basis by supplying the appropriate discriminant value.
+ 
+    --  Note that this means that the type used for Task_Info_Type must be
+    --  suitable for use as a discriminant (i.e. a scalar or access type).
+ 
+    ------------------
+    -- Declarations --
+    ------------------
+ 
+    type Scope_Type is
+      (Process_Scope,
+       --  Contend only with threads in same process
+ 
+       System_Scope,
+       --  Contend with all threads on same CPU
+ 
+       Default_Scope);
+ 
+    type Task_Info_Type is new Scope_Type;
+    --  Type used for passing information to task create call, using the
+    --  Task_Info pragma. This type may be specialized for individual
+    --  implementations, but it must be a type that can be used as a
+    --  discriminant (i.e. a scalar or access type).
+ 
+    Unspecified_Task_Info : constant Task_Info_Type := Default_Scope;
+    --  Value passed to task in the absence of a Task_Info pragma
+ 
+ end System.Task_Info;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-tasinf__linux.adb gcc-8.1.0/gcc/ada/libgnarl/s-tasinf__linux.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-tasinf__linux.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-tasinf__linux.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,55 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                     S Y S T E M . T A S K _ I N F O                      --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --            Copyright (C) 2009-2018, Free Software Foundation, Inc.       --
+ --                                                                          --
+ -- GNAT is 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 GNU/Linux version of this module
+ 
+ package body System.Task_Info is
+ 
+    N_CPU : Natural := 0;
+    pragma Atomic (N_CPU);
+    --  Cache CPU number. Use pragma Atomic to avoid a race condition when
+    --  setting N_CPU in Number_Of_Processors below.
+ 
+    --------------------------
+    -- Number_Of_Processors --
+    --------------------------
+ 
+    function Number_Of_Processors return Positive is
+    begin
+       if N_CPU = 0 then
+          N_CPU := Natural
+            (OS_Interface.sysconf (OS_Interface.SC_NPROCESSORS_ONLN));
+       end if;
+ 
+       return N_CPU;
+    end Number_Of_Processors;
+ 
+ end System.Task_Info;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-tasinf__linux.ads gcc-8.1.0/gcc/ada/libgnarl/s-tasinf__linux.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-tasinf__linux.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-tasinf__linux.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,102 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                     S Y S T E M . T A S K _ I N F O                      --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --            Copyright (C) 2007-2018, Free Software Foundation, Inc.       --
+ --                                                                          --
+ -- GNAT is 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 definitions and routines associated with the
+ --  implementation and use of the Task_Info pragma. It is specialized
+ --  appropriately for targets that make use of this pragma.
+ 
+ --  Note: the compiler generates direct calls to this interface, via Rtsfind.
+ --  Any changes to this interface may require corresponding compiler changes.
+ 
+ --  The functionality in this unit is now provided by the predefined package
+ --  System.Multiprocessors and the CPU aspect. This package is obsolescent.
+ 
+ --  This is the GNU/Linux version of this module
+ 
+ with System.OS_Interface;
+ 
+ package System.Task_Info is
+    pragma Obsolescent (Task_Info, "use System.Multiprocessors and CPU aspect");
+    pragma Preelaborate;
+    pragma Elaborate_Body;
+    --  To ensure that a body is allowed
+ 
+    --  The Linux kernel provides a way to define the ideal processor to use for
+    --  a given thread. The ideal processor is not necessarily the one that will
+    --  be used by the OS but the OS will always try to schedule this thread to
+    --  the specified processor if it is available.
+ 
+    --  The Task_Info pragma:
+ 
+    --    pragma Task_Info (EXPRESSION);
+ 
+    --  allows the specification on a task by task basis of a value of type
+    --  System.Task_Info.Task_Info_Type to be passed to a task when it is
+    --  created. The specification of this type, and the effect on the task
+    --  that is created is target dependent.
+ 
+    --  The Task_Info pragma appears within a task definition (compare the
+    --  definition and implementation of pragma Priority). If no such pragma
+    --  appears, then the value Unspecified_Task_Info is passed. If a pragma
+    --  is present, then it supplies an alternative value. If the argument of
+    --  the pragma is a discriminant reference, then the value can be set on
+    --  a task by task basis by supplying the appropriate discriminant value.
+ 
+    --  Note that this means that the type used for Task_Info_Type must be
+    --  suitable for use as a discriminant (i.e. a scalar or access type).
+ 
+    -----------------------
+    -- Thread Attributes --
+    -----------------------
+ 
+    subtype CPU_Set is System.OS_Interface.cpu_set_t;
+ 
+    Any_CPU : constant CPU_Set := (bits => (others => True));
+    No_CPU  : constant CPU_Set := (bits => (others => False));
+ 
+    Invalid_CPU_Number : exception;
+    --  Raised when an invalid CPU mask has been specified
+    --  i.e. An empty CPU set
+ 
+    type Thread_Attributes is record
+       CPU_Affinity : aliased CPU_Set := Any_CPU;
+    end record;
+ 
+    Default_Thread_Attributes : constant Thread_Attributes := (others => <>);
+ 
+    type Task_Info_Type is access all Thread_Attributes;
+ 
+    Unspecified_Task_Info : constant Task_Info_Type := null;
+ 
+    function Number_Of_Processors return Positive;
+    --  Returns the number of processors on the running host
+ 
+ end System.Task_Info;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-tasinf__mingw.adb gcc-8.1.0/gcc/ada/libgnarl/s-tasinf__mingw.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-tasinf__mingw.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-tasinf__mingw.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,65 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                     S Y S T E M . T A S K _ I N F O                      --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --         Copyright (C) 2007-2018, Free Software Foundation, Inc.          --
+ --                                                                          --
+ -- GNAT is 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 Windows (native) version of this module
+ 
+ with System.OS_Interface;
+ pragma Unreferenced (System.OS_Interface);
+ --  System.OS_Interface is not used today, but the protocol between the
+ --  run-time and the binder is that any tasking application uses
+ --  System.OS_Interface, so notify the binder with this "with" clause.
+ 
+ package body System.Task_Info is
+ 
+    N_CPU : Natural := 0;
+    pragma Atomic (N_CPU);
+    --  Cache CPU number. Use pragma Atomic to avoid a race condition when
+    --  setting N_CPU in Number_Of_Processors below.
+ 
+    --------------------------
+    -- Number_Of_Processors --
+    --------------------------
+ 
+    function Number_Of_Processors return Positive is
+    begin
+       if N_CPU = 0 then
+          declare
+             SI : aliased Win32.SYSTEM_INFO;
+          begin
+             Win32.GetSystemInfo (SI'Access);
+             N_CPU := Positive (SI.dwNumberOfProcessors);
+          end;
+       end if;
+ 
+       return N_CPU;
+    end Number_Of_Processors;
+ 
+ end System.Task_Info;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-tasinf__mingw.ads gcc-8.1.0/gcc/ada/libgnarl/s-tasinf__mingw.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-tasinf__mingw.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-tasinf__mingw.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,103 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                     S Y S T E M . T A S K _ I N F O                      --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --         Copyright (C) 2007-2018, Free Software Foundation, Inc.          --
+ --                                                                          --
+ -- GNAT is 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 definitions and routines associated with the
+ --  implementation and use of the Task_Info pragma. It is specialized
+ --  appropriately for targets that make use of this pragma.
+ 
+ --  Note: the compiler generates direct calls to this interface, via Rtsfind.
+ --  Any changes to this interface may require corresponding compiler changes.
+ 
+ --  The functionality in this unit is now provided by the predefined package
+ --  System.Multiprocessors and the CPU aspect. This package is obsolescent.
+ 
+ --  This is the Windows (native) version of this module
+ 
+ with System.Win32;
+ 
+ package System.Task_Info is
+    pragma Obsolescent (Task_Info, "use System.Multiprocessors and CPU aspect");
+    pragma Preelaborate;
+    pragma Elaborate_Body;
+    --  To ensure that a body is allowed
+ 
+    use type System.Win32.ProcessorId;
+ 
+    --  Windows provides a way to define the ideal processor to use for a given
+    --  thread. The ideal processor is not necessarily the one that will be used
+    --  by the OS but the OS will always try to schedule this thread to the
+    --  specified processor if it is available.
+ 
+    --  The Task_Info pragma:
+ 
+    --    pragma Task_Info (EXPRESSION);
+ 
+    --  allows the specification on a task by task basis of a value of type
+    --  System.Task_Info.Task_Info_Type to be passed to a task when it is
+    --  created. The specification of this type, and the effect on the task
+    --  that is created is target dependent.
+ 
+    --  The Task_Info pragma appears within a task definition (compare the
+    --  definition and implementation of pragma Priority). If no such pragma
+    --  appears, then the value Unspecified_Task_Info is passed. If a pragma
+    --  is present, then it supplies an alternative value. If the argument of
+    --  the pragma is a discriminant reference, then the value can be set on
+    --  a task by task basis by supplying the appropriate discriminant value.
+ 
+    --  Note that this means that the type used for Task_Info_Type must be
+    --  suitable for use as a discriminant (i.e. a scalar or access type).
+ 
+    -----------------------
+    -- Thread Attributes --
+    -----------------------
+ 
+    subtype CPU_Number is System.Win32.ProcessorId;
+ 
+    Any_CPU : constant CPU_Number := -1;
+ 
+    Invalid_CPU_Number : exception;
+    --  Raised when an invalid CPU number has been specified
+    --  i.e. CPU > Number_Of_Processors.
+ 
+    type Thread_Attributes is record
+       CPU : CPU_Number := Any_CPU;
+    end record;
+ 
+    Default_Thread_Attributes : constant Thread_Attributes := (others => <>);
+ 
+    type Task_Info_Type is access all Thread_Attributes;
+ 
+    Unspecified_Task_Info : constant Task_Info_Type := null;
+ 
+    function Number_Of_Processors return Positive;
+    --  Returns the number of processors on the running host
+ 
+ end System.Task_Info;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-tasinf__solaris.adb gcc-8.1.0/gcc/ada/libgnarl/s-tasinf__solaris.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-tasinf__solaris.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-tasinf__solaris.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,87 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                     S Y S T E M . T A S K _ I N F O                      --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is 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 body contains the routines associated with the implementation
+ --  of the Task_Info pragma.
+ 
+ --  This is the Solaris (native) version of this module
+ 
+ package body System.Task_Info is
+ 
+    -----------------------------
+    -- Bound_Thread_Attributes --
+    -----------------------------
+ 
+    function Bound_Thread_Attributes return Thread_Attributes is
+    begin
+       return (False, True);
+    end Bound_Thread_Attributes;
+ 
+    function Bound_Thread_Attributes (CPU : CPU_Number)
+       return Thread_Attributes is
+    begin
+       return (True, True, CPU);
+    end Bound_Thread_Attributes;
+ 
+    ---------------------------------
+    -- New_Bound_Thread_Attributes --
+    ---------------------------------
+ 
+    function New_Bound_Thread_Attributes return Task_Info_Type is
+    begin
+       return new Thread_Attributes'(False, True);
+    end New_Bound_Thread_Attributes;
+ 
+    function New_Bound_Thread_Attributes (CPU : CPU_Number)
+       return Task_Info_Type is
+    begin
+       return new Thread_Attributes'(True, True, CPU);
+    end New_Bound_Thread_Attributes;
+ 
+    -----------------------------------
+    -- New_Unbound_Thread_Attributes --
+    -----------------------------------
+ 
+    function New_Unbound_Thread_Attributes return Task_Info_Type is
+    begin
+       return new Thread_Attributes'(False, False);
+    end New_Unbound_Thread_Attributes;
+ 
+    -------------------------------
+    -- Unbound_Thread_Attributes --
+    -------------------------------
+ 
+    function Unbound_Thread_Attributes return Thread_Attributes is
+    begin
+       return (False, False);
+    end Unbound_Thread_Attributes;
+ 
+ end System.Task_Info;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-tasinf__solaris.ads gcc-8.1.0/gcc/ada/libgnarl/s-tasinf__solaris.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-tasinf__solaris.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-tasinf__solaris.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,142 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                     S Y S T E M . T A S K _ I N F O                      --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is 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 definitions and routines associated with the
+ --  implementation and use of the Task_Info pragma. It is specialized
+ --  appropriately for targets that make use of this pragma.
+ 
+ --  Note: the compiler generates direct calls to this interface, via Rtsfind.
+ --  Any changes to this interface may require corresponding compiler changes.
+ 
+ --  The functionality in this unit is now provided by the predefined package
+ --  System.Multiprocessors and the CPU aspect. This package is obsolescent.
+ 
+ --  This is the Solaris (native) version of this module
+ 
+ with System.OS_Interface;
+ 
+ package System.Task_Info is
+    pragma Obsolescent (Task_Info, "use System.Multiprocessors and CPU aspect");
+    pragma Preelaborate;
+    pragma Elaborate_Body;
+    --  To ensure that a body is allowed
+ 
+    -----------------------------------------------------
+    -- Binding of Tasks to LWPs and LWPs to processors --
+    -----------------------------------------------------
+ 
+    --  The Solaris implementation of the GNU Low-Level Interface (GNULLI)
+    --  implements each Ada task as a Solaris thread.  The Solaris thread
+    --  library distributes threads across one or more LWPs (Light Weight
+    --  Process) that are members of the same process. Solaris distributes
+    --  processes and LWPs across the available CPUs on a given machine. The
+    --  pragma Task_Info provides the mechanism to control the distribution
+    --  of tasks to LWPs, and LWPs to processors.
+ 
+    --  Each thread has a number of attributes that dictate it's scheduling.
+    --  These attributes are:
+    --
+    --      New_LWP:       whether a new LWP is created for this thread.
+    --
+    --      Bound_To_LWP:  whether the thread is bound to a specific LWP
+    --                     for its entire lifetime.
+    --
+    --      CPU:           the CPU number associated to the LWP
+    --
+ 
+    --  The Task_Info pragma:
+ 
+    --    pragma Task_Info (EXPRESSION);
+ 
+    --  allows the specification on a task by task basis of a value of type
+    --  System.Task_Info.Task_Info_Type to be passed to a task when it is
+    --  created. The specification of this type, and the effect on the task
+    --  that is created is target dependent.
+ 
+    --  The Task_Info pragma appears within a task definition (compare the
+    --  definition and implementation of pragma Priority). If no such pragma
+    --  appears, then the value Unspecified_Task_Info is passed. If a pragma
+    --  is present, then it supplies an alternative value. If the argument of
+    --  the pragma is a discriminant reference, then the value can be set on
+    --  a task by task basis by supplying the appropriate discriminant value.
+ 
+    --  Note that this means that the type used for Task_Info_Type must be
+    --  suitable for use as a discriminant (i.e. a scalar or access type).
+ 
+    -----------------------
+    -- Thread Attributes --
+    -----------------------
+ 
+    subtype CPU_Number is System.OS_Interface.processorid_t;
+ 
+    CPU_UNCHANGED : constant CPU_Number := System.OS_Interface.PBIND_QUERY;
+    --  Do not bind the LWP to a specific processor
+ 
+    ANY_CPU       : constant CPU_Number := System.OS_Interface.PBIND_NONE;
+    --  Bind the LWP to any processor
+ 
+    Invalid_CPU_Number : exception;
+ 
+    type Thread_Attributes (New_LWP : Boolean) is record
+       Bound_To_LWP     : Boolean    := True;
+       case New_LWP is
+          when False =>
+             null;
+          when True =>
+             CPU        : CPU_Number := CPU_UNCHANGED;
+       end case;
+    end record;
+ 
+    Default_Thread_Attributes : constant Thread_Attributes := (False, True);
+ 
+    function Unbound_Thread_Attributes
+       return Thread_Attributes;
+ 
+    function Bound_Thread_Attributes
+       return Thread_Attributes;
+ 
+    function Bound_Thread_Attributes (CPU : CPU_Number)
+       return Thread_Attributes;
+ 
+    type Task_Info_Type is access all Thread_Attributes;
+ 
+    function New_Unbound_Thread_Attributes
+       return Task_Info_Type;
+ 
+    function New_Bound_Thread_Attributes
+       return Task_Info_Type;
+ 
+    function New_Bound_Thread_Attributes (CPU : CPU_Number)
+       return Task_Info_Type;
+ 
+    Unspecified_Task_Info : constant Task_Info_Type := null;
+ 
+ end System.Task_Info;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-tasinf__vxworks.ads gcc-8.1.0/gcc/ada/libgnarl/s-tasinf__vxworks.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-tasinf__vxworks.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-tasinf__vxworks.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,88 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                     S Y S T E M . T A S K _ I N F O                      --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is 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 definitions and routines associated with the
+ --  implementation and use of the Task_Info pragma. It is specialized
+ --  appropriately for targets that make use of this pragma.
+ 
+ --  Note: the compiler generates direct calls to this interface, via Rtsfind.
+ --  Any changes to this interface may require corresponding compiler changes.
+ 
+ --  The functionality in this unit is now provided by the predefined package
+ --  System.Multiprocessors and the CPU aspect. This package is obsolescent.
+ 
+ --  This is the VxWorks version of this package
+ 
+ with Interfaces.C;
+ 
+ package System.Task_Info is
+    pragma Obsolescent (Task_Info, "use System.Multiprocessors and CPU aspect");
+    pragma Preelaborate;
+    pragma Elaborate_Body;
+    --  To ensure that a body is allowed
+ 
+    -----------------------------------------
+    -- Implementation of Task_Info Feature --
+    -----------------------------------------
+ 
+    --  The Task_Info pragma:
+ 
+    --    pragma Task_Info (EXPRESSION);
+ 
+    --  allows the specification on a task by task basis of a value of type
+    --  System.Task_Info.Task_Info_Type to be passed to a task when it is
+    --  created. The specification of this type, and the effect on the task
+    --  that is created is target dependent.
+ 
+    --  The Task_Info pragma appears within a task definition (compare the
+    --  definition and implementation of pragma Priority). If no such pragma
+    --  appears, then the value Unspecified_Task_Info is passed. If a pragma
+    --  is present, then it supplies an alternative value. If the argument of
+    --  the pragma is a discriminant reference, then the value can be set on
+    --  a task by task basis by supplying the appropriate discriminant value.
+ 
+    --  Note that this means that the type used for Task_Info_Type must be
+    --  suitable for use as a discriminant (i.e. a scalar or access type).
+ 
+    ------------------
+    -- Declarations --
+    ------------------
+ 
+    subtype Task_Info_Type is Interfaces.C.int;
+    --  This is a CPU number (natural - CPUs are 0-indexed on VxWorks)
+ 
+    use type Interfaces.C.int;
+ 
+    Unspecified_Task_Info : constant Task_Info_Type := -1;
+    --  Value passed to task in the absence of a Task_Info pragma
+    --  This value means do not try to set the CPU affinity
+ 
+ end System.Task_Info;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-tasini.adb gcc-8.1.0/gcc/ada/libgnarl/s-tasini.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-tasini.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-tasini.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,785 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --         S Y S T E M . T A S K I N G . I N I T I A L I Z A T I O N        --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --         Copyright (C) 1992-2018, Free Software Foundation, Inc.          --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ pragma Style_Checks (All_Checks);
+ --  Turn off subprogram alpha ordering check, since we group soft link bodies
+ --  and dummy soft link bodies together separately in this unit.
+ 
+ pragma Polling (Off);
+ --  Turn polling off for this package. We don't need polling during any of the
+ --  routines in this package, and more to the point, if we try to poll it can
+ --  cause infinite loops.
+ 
+ with System.Task_Primitives;
+ with System.Task_Primitives.Operations;
+ with System.Soft_Links;
+ with System.Soft_Links.Tasking;
+ with System.Tasking.Debug;
+ with System.Tasking.Task_Attributes;
+ with System.Parameters;
+ 
+ with System.Secondary_Stack;
+ pragma Elaborate_All (System.Secondary_Stack);
+ pragma Unreferenced (System.Secondary_Stack);
+ --  Make sure the body of Secondary_Stack is elaborated before calling
+ --  Init_Tasking_Soft_Links. See comments for this routine for explanation.
+ 
+ package body System.Tasking.Initialization is
+ 
+    package STPO renames System.Task_Primitives.Operations;
+    package SSL  renames System.Soft_Links;
+ 
+    use Parameters;
+    use Task_Primitives.Operations;
+ 
+    Global_Task_Lock : aliased System.Task_Primitives.RTS_Lock;
+    --  This is a global lock; it is used to execute in mutual exclusion from
+    --  all other tasks. It is only used by Task_Lock, Task_Unlock, and
+    --  Final_Task_Unlock.
+ 
+    ----------------------------------------------------------------------
+    -- Tasking versions of some services needed by non-tasking programs --
+    ----------------------------------------------------------------------
+ 
+    procedure Abort_Defer;
+    --  NON-INLINE versions without Self_ID for soft links
+ 
+    procedure Abort_Undefer;
+    --  NON-INLINE versions without Self_ID for soft links
+ 
+    procedure Task_Lock;
+    --  Locks out other tasks. Preceding a section of code by Task_Lock and
+    --  following it by Task_Unlock creates a critical region. This is used
+    --  for ensuring that a region of non-tasking code (such as code used to
+    --  allocate memory) is tasking safe. Note that it is valid for calls to
+    --  Task_Lock/Task_Unlock to be nested, and this must work properly, i.e.
+    --  only the corresponding outer level Task_Unlock will actually unlock.
+ 
+    procedure Task_Unlock;
+    --  Releases lock previously set by call to Task_Lock. In the nested case,
+    --  all nested locks must be released before other tasks competing for the
+    --  tasking lock are released.
+ 
+    function Get_Current_Excep return SSL.EOA;
+    --  Task-safe version of SSL.Get_Current_Excep
+ 
+    function Task_Name return String;
+    --  Returns current task's name
+ 
+    ------------------------
+    --  Local Subprograms --
+    ------------------------
+ 
+    ----------------------------
+    -- Tasking Initialization --
+    ----------------------------
+ 
+    procedure Init_RTS;
+    --  This procedure completes the initialization of the GNARL. The first part
+    --  of the initialization is done in the body of System.Tasking. It consists
+    --  of initializing global locks, and installing tasking versions of certain
+    --  operations used by the compiler. Init_RTS is called during elaboration.
+ 
+    --------------------------
+    -- Change_Base_Priority --
+    --------------------------
+ 
+    --  Call only with abort deferred and holding Self_ID locked
+ 
+    procedure Change_Base_Priority (T : Task_Id) is
+    begin
+       if T.Common.Base_Priority /= T.New_Base_Priority then
+          T.Common.Base_Priority := T.New_Base_Priority;
+          Set_Priority (T, T.Common.Base_Priority);
+       end if;
+    end Change_Base_Priority;
+ 
+    ------------------------
+    -- Check_Abort_Status --
+    ------------------------
+ 
+    function Check_Abort_Status return Integer is
+       Self_ID : constant Task_Id := Self;
+    begin
+       if Self_ID /= null
+         and then Self_ID.Deferral_Level = 0
+         and then Self_ID.Pending_ATC_Level < Self_ID.ATC_Nesting_Level
+       then
+          return 1;
+       else
+          return 0;
+       end if;
+    end Check_Abort_Status;
+ 
+    -----------------
+    -- Defer_Abort --
+    -----------------
+ 
+    procedure Defer_Abort (Self_ID : Task_Id) is
+    begin
+       if No_Abort then
+          return;
+       end if;
+ 
+       pragma Assert (Self_ID.Deferral_Level = 0);
+ 
+       --  pragma Assert
+       --    (Self_ID.Pending_ATC_Level >= Self_ID.ATC_Nesting_Level);
+ 
+       --  The above check has been useful in detecting mismatched defer/undefer
+       --  pairs. You may uncomment it when testing on systems that support
+       --  preemptive abort.
+ 
+       --  If the OS supports preemptive abort (e.g. pthread_kill), it should
+       --  have happened already. A problem is with systems that do not support
+       --  preemptive abort, and so rely on polling. On such systems we may get
+       --  false failures of the assertion, since polling for pending abort does
+       --  no occur until the abort undefer operation.
+ 
+       --  Even on systems that only poll for abort, the assertion may be useful
+       --  for catching missed abort completion polling points. The operations
+       --  that undefer abort poll for pending aborts. This covers most of the
+       --  places where the core Ada semantics require abort to be caught,
+       --  without any special attention. However, this generally happens on
+       --  exit from runtime system call, which means a pending abort will not
+       --  be noticed on the way into the runtime system. We considered adding a
+       --  check for pending aborts at this point, but chose not to, because of
+       --  the overhead. Instead, we searched for RTS calls where abort
+       --  completion is required and a task could go farther than Ada allows
+       --  before undeferring abort; we then modified the code to ensure the
+       --  abort would be detected.
+ 
+       Self_ID.Deferral_Level := Self_ID.Deferral_Level + 1;
+    end Defer_Abort;
+ 
+    --------------------------
+    -- Defer_Abort_Nestable --
+    --------------------------
+ 
+    procedure Defer_Abort_Nestable (Self_ID : Task_Id) is
+    begin
+       if No_Abort then
+          return;
+       end if;
+ 
+       --  The following assertion is by default disabled. See the comment in
+       --  Defer_Abort on the situations in which it may be useful to uncomment
+       --  this assertion and enable the test.
+ 
+       --  pragma Assert
+       --    (Self_ID.Pending_ATC_Level >= Self_ID.ATC_Nesting_Level or else
+       --     Self_ID.Deferral_Level > 0);
+ 
+       Self_ID.Deferral_Level := Self_ID.Deferral_Level + 1;
+    end Defer_Abort_Nestable;
+ 
+    -----------------
+    -- Abort_Defer --
+    -----------------
+ 
+    procedure Abort_Defer is
+       Self_ID : Task_Id;
+    begin
+       if No_Abort then
+          return;
+       end if;
+ 
+       Self_ID := STPO.Self;
+       Self_ID.Deferral_Level := Self_ID.Deferral_Level + 1;
+    end Abort_Defer;
+ 
+    -----------------------
+    -- Get_Current_Excep --
+    -----------------------
+ 
+    function Get_Current_Excep return SSL.EOA is
+    begin
+       return STPO.Self.Common.Compiler_Data.Current_Excep'Access;
+    end Get_Current_Excep;
+ 
+    -----------------------
+    -- Do_Pending_Action --
+    -----------------------
+ 
+    --  Call only when holding no locks
+ 
+    procedure Do_Pending_Action (Self_ID : Task_Id) is
+ 
+    begin
+       pragma Assert (Self_ID = Self and then Self_ID.Deferral_Level = 0);
+ 
+       --  Needs loop to recheck for pending action in case a new one occurred
+       --  while we had abort deferred below.
+ 
+       loop
+          --  Temporarily defer abort so that we can lock Self_ID
+ 
+          Self_ID.Deferral_Level := Self_ID.Deferral_Level + 1;
+ 
+          if Single_Lock then
+             Lock_RTS;
+          end if;
+ 
+          Write_Lock (Self_ID);
+          Self_ID.Pending_Action := False;
+          Unlock (Self_ID);
+ 
+          if Single_Lock then
+             Unlock_RTS;
+          end if;
+ 
+          --  Restore the original Deferral value
+ 
+          Self_ID.Deferral_Level := Self_ID.Deferral_Level - 1;
+ 
+          if not Self_ID.Pending_Action then
+             if Self_ID.Pending_ATC_Level < Self_ID.ATC_Nesting_Level then
+                if not Self_ID.Aborting then
+                   Self_ID.Aborting := True;
+                   pragma Debug
+                     (Debug.Trace (Self_ID, "raise Abort_Signal", 'B'));
+                   raise Standard'Abort_Signal;
+ 
+                   pragma Assert (not Self_ID.ATC_Hack);
+ 
+                elsif Self_ID.ATC_Hack then
+ 
+                   --  The solution really belongs in the Abort_Signal handler
+                   --  for async. entry calls.  The present hack is very
+                   --  fragile. It relies that the very next point after
+                   --  Exit_One_ATC_Level at which the task becomes abortable
+                   --  will be the call to Undefer_Abort in the
+                   --  Abort_Signal handler.
+ 
+                   Self_ID.ATC_Hack := False;
+ 
+                   pragma Debug
+                     (Debug.Trace
+                      (Self_ID, "raise Abort_Signal (ATC hack)", 'B'));
+                   raise Standard'Abort_Signal;
+                end if;
+             end if;
+ 
+             return;
+          end if;
+       end loop;
+    end Do_Pending_Action;
+ 
+    -----------------------
+    -- Final_Task_Unlock --
+    -----------------------
+ 
+    --  This version is only for use in Terminate_Task, when the task is
+    --  relinquishing further rights to its own ATCB.
+ 
+    --  There is a very interesting potential race condition there, where the
+    --  old task may run concurrently with a new task that is allocated the old
+    --  tasks (now reused) ATCB. The critical thing here is to not make any
+    --  reference to the ATCB after the lock is released. See also comments on
+    --  Terminate_Task and Unlock.
+ 
+    procedure Final_Task_Unlock (Self_ID : Task_Id) is
+    begin
+       pragma Assert (Self_ID.Common.Global_Task_Lock_Nesting = 1);
+       Unlock (Global_Task_Lock'Access, Global_Lock => True);
+    end Final_Task_Unlock;
+ 
+    --------------
+    -- Init_RTS --
+    --------------
+ 
+    procedure Init_RTS is
+       Self_Id : Task_Id;
+    begin
+       Tasking.Initialize;
+ 
+       --  Terminate run time (regular vs restricted) specific initialization
+       --  of the environment task.
+ 
+       Self_Id := Environment_Task;
+       Self_Id.Master_Of_Task := Environment_Task_Level;
+       Self_Id.Master_Within := Self_Id.Master_Of_Task + 1;
+ 
+       for L in Self_Id.Entry_Calls'Range loop
+          Self_Id.Entry_Calls (L).Self := Self_Id;
+          Self_Id.Entry_Calls (L).Level := L;
+       end loop;
+ 
+       Self_Id.Awake_Count := 1;
+       Self_Id.Alive_Count := 1;
+ 
+       --  Normally, a task starts out with internal master nesting level one
+       --  larger than external master nesting level. It is incremented to one
+       --  by Enter_Master, which is called in the task body only if the
+       --  compiler thinks the task may have dependent tasks. There is no
+       --  corresponding call to Enter_Master for the environment task, so we
+       --  would need to increment it to 2 here. Instead, we set it to 3. By
+       --  doing this we reserve the level 2 for server tasks of the runtime
+       --  system. The environment task does not need to wait for these server
+ 
+       Self_Id.Master_Within := Library_Task_Level;
+ 
+       --  Initialize lock used to implement mutual exclusion between all tasks
+ 
+       Initialize_Lock (Global_Task_Lock'Access, STPO.Global_Task_Level);
+ 
+       --  Notify that the tasking run time has been elaborated so that
+       --  the tasking version of the soft links can be used.
+ 
+       if not No_Abort then
+          SSL.Abort_Defer   := Abort_Defer'Access;
+          SSL.Abort_Undefer := Abort_Undefer'Access;
+       end if;
+ 
+       SSL.Lock_Task          := Task_Lock'Access;
+       SSL.Unlock_Task        := Task_Unlock'Access;
+       SSL.Check_Abort_Status := Check_Abort_Status'Access;
+       SSL.Task_Name          := Task_Name'Access;
+       SSL.Get_Current_Excep  := Get_Current_Excep'Access;
+ 
+       --  Initialize the tasking soft links (if not done yet) that are common
+       --  to the full and the restricted run times.
+ 
+       SSL.Tasking.Init_Tasking_Soft_Links;
+ 
+       --  Abort is deferred in a new ATCB, so we need to undefer abort at this
+       --  stage to make the environment task abortable.
+ 
+       Undefer_Abort (Environment_Task);
+    end Init_RTS;
+ 
+    ---------------------------
+    -- Locked_Abort_To_Level--
+    ---------------------------
+ 
+    --  Abort a task to the specified ATC nesting level.
+    --  Call this only with T locked.
+ 
+    --  An earlier version of this code contained a call to Wakeup. That should
+    --  not be necessary here, if Abort_Task is implemented correctly, since
+    --  Abort_Task should include the effect of Wakeup. However, the above call
+    --  was in earlier versions of this file, and at least for some targets
+    --  Abort_Task has not been doing Wakeup. It should not hurt to uncomment
+    --  the above call, until the error is corrected for all targets.
+ 
+    --  See extended comments in package body System.Tasking.Abort for the
+    --  overall design of the implementation of task abort.
+    --  ??? there is no such package ???
+ 
+    --  If the task is sleeping it will be in an abort-deferred region, and will
+    --  not have Abort_Signal raised by Abort_Task. Such an "abort deferral" is
+    --  just to protect the RTS internals, and not necessarily required to
+    --  enforce Ada semantics. Abort_Task should wake the task up and let it
+    --  decide if it wants to complete the aborted construct immediately.
+ 
+    --  Note that the effect of the low-level Abort_Task is not persistent.
+    --  If the target task is not blocked, this wakeup will be missed.
+ 
+    --  We don't bother calling Abort_Task if this task is aborting itself,
+    --  since we are inside the RTS and have abort deferred. Similarly, We don't
+    --  bother to call Abort_Task if T is terminated, since there is no need to
+    --  abort a terminated task, and it could be dangerous to try if the task
+    --  has stopped executing.
+ 
+    --  Note that an earlier version of this code had some false reasoning about
+    --  being able to reliably wake up a task that had suspended on a blocking
+    --  system call that does not atomically release the task's lock (e.g., UNIX
+    --  nanosleep, which we once thought could be used to implement delays).
+    --  That still left the possibility of missed wakeups.
+ 
+    --  We cannot safely call Vulnerable_Complete_Activation here, since that
+    --  requires locking Self_ID.Parent. The anti-deadlock lock ordering rules
+    --  would then require us to release the lock on Self_ID first, which would
+    --  create a timing window for other tasks to lock Self_ID. This is
+    --  significant for tasks that may be aborted before their execution can
+    --  enter the task body, and so they do not get a chance to call
+    --  Complete_Task. The actual work for this case is done in Terminate_Task.
+ 
+    procedure Locked_Abort_To_Level
+      (Self_ID : Task_Id;
+       T       : Task_Id;
+       L       : ATC_Level)
+    is
+    begin
+       if not T.Aborting and then T /= Self_ID then
+          case T.Common.State is
+             when Terminated
+                | Unactivated
+             =>
+                pragma Assert (False);
+                null;
+ 
+             when Activating
+                | Runnable
+             =>
+                --  This is needed to cancel an asynchronous protected entry
+                --  call during a requeue with abort.
+ 
+                T.Entry_Calls
+                  (T.ATC_Nesting_Level).Cancellation_Attempted := True;
+ 
+             when Interrupt_Server_Blocked_On_Event_Flag =>
+                null;
+ 
+             when AST_Server_Sleep
+                | Async_Select_Sleep
+                | Delay_Sleep
+                | Interrupt_Server_Blocked_Interrupt_Sleep
+                | Interrupt_Server_Idle_Sleep
+                | Timer_Server_Sleep
+             =>
+                Wakeup (T, T.Common.State);
+ 
+             when Acceptor_Delay_Sleep
+                | Acceptor_Sleep
+             =>
+                T.Open_Accepts := null;
+                Wakeup (T, T.Common.State);
+ 
+             when Entry_Caller_Sleep  =>
+                T.Entry_Calls
+                  (T.ATC_Nesting_Level).Cancellation_Attempted := True;
+                Wakeup (T, T.Common.State);
+ 
+             when Activator_Sleep
+                | Asynchronous_Hold
+                | Master_Completion_Sleep
+                | Master_Phase_2_Sleep
+             =>
+                null;
+          end case;
+       end if;
+ 
+       if T.Pending_ATC_Level > L then
+          T.Pending_ATC_Level := L;
+          T.Pending_Action := True;
+ 
+          if L = 0 then
+             T.Callable := False;
+          end if;
+ 
+          --  This prevents aborted task from accepting calls
+ 
+          if T.Aborting then
+ 
+             --  The test above is just a heuristic, to reduce wasteful
+             --  calls to Abort_Task.  We are holding T locked, and this
+             --  value will not be set to False except with T also locked,
+             --  inside Exit_One_ATC_Level, so we should not miss wakeups.
+ 
+             if T.Common.State = Acceptor_Sleep
+                  or else
+                T.Common.State = Acceptor_Delay_Sleep
+             then
+                T.Open_Accepts := null;
+             end if;
+ 
+          elsif T /= Self_ID and then
+            (T.Common.State = Runnable
+              or else T.Common.State = Interrupt_Server_Blocked_On_Event_Flag)
+ 
+             --  The task is blocked on a system call waiting for the
+             --  completion event. In this case Abort_Task may need to take
+             --  special action in order to succeed.
+ 
+          then
+             Abort_Task (T);
+          end if;
+       end if;
+    end Locked_Abort_To_Level;
+ 
+    --------------------------------
+    -- Remove_From_All_Tasks_List --
+    --------------------------------
+ 
+    procedure Remove_From_All_Tasks_List (T : Task_Id) is
+       C        : Task_Id;
+       Previous : Task_Id;
+ 
+    begin
+       pragma Debug
+         (Debug.Trace (Self, "Remove_From_All_Tasks_List", 'C'));
+ 
+       Previous := Null_Task;
+       C := All_Tasks_List;
+       while C /= Null_Task loop
+          if C = T then
+             if Previous = Null_Task then
+                All_Tasks_List := All_Tasks_List.Common.All_Tasks_Link;
+             else
+                Previous.Common.All_Tasks_Link := C.Common.All_Tasks_Link;
+             end if;
+ 
+             return;
+          end if;
+ 
+          Previous := C;
+          C := C.Common.All_Tasks_Link;
+       end loop;
+ 
+       pragma Assert (False);
+    end Remove_From_All_Tasks_List;
+ 
+    ---------------
+    -- Task_Lock --
+    ---------------
+ 
+    procedure Task_Lock (Self_ID : Task_Id) is
+    begin
+       Self_ID.Common.Global_Task_Lock_Nesting :=
+         Self_ID.Common.Global_Task_Lock_Nesting + 1;
+ 
+       if Self_ID.Common.Global_Task_Lock_Nesting = 1 then
+          Defer_Abort_Nestable (Self_ID);
+          Write_Lock (Global_Task_Lock'Access, Global_Lock => True);
+       end if;
+    end Task_Lock;
+ 
+    procedure Task_Lock is
+    begin
+       Task_Lock (STPO.Self);
+    end Task_Lock;
+ 
+    ---------------
+    -- Task_Name --
+    ---------------
+ 
+    function Task_Name return String is
+       Self_Id : constant Task_Id := STPO.Self;
+    begin
+       return Self_Id.Common.Task_Image (1 .. Self_Id.Common.Task_Image_Len);
+    end Task_Name;
+ 
+    -----------------
+    -- Task_Unlock --
+    -----------------
+ 
+    procedure Task_Unlock (Self_ID : Task_Id) is
+    begin
+       pragma Assert (Self_ID.Common.Global_Task_Lock_Nesting > 0);
+       Self_ID.Common.Global_Task_Lock_Nesting :=
+         Self_ID.Common.Global_Task_Lock_Nesting - 1;
+ 
+       if Self_ID.Common.Global_Task_Lock_Nesting = 0 then
+          Unlock (Global_Task_Lock'Access, Global_Lock => True);
+          Undefer_Abort_Nestable (Self_ID);
+       end if;
+    end Task_Unlock;
+ 
+    procedure Task_Unlock is
+    begin
+       Task_Unlock (STPO.Self);
+    end Task_Unlock;
+ 
+    -------------------
+    -- Undefer_Abort --
+    -------------------
+ 
+    --  Precondition : Self does not hold any locks
+ 
+    --  Undefer_Abort is called on any abort completion point (aka.
+    --  synchronization point). It performs the following actions if they
+    --  are pending: (1) change the base priority, (2) abort the task.
+ 
+    --  The priority change has to occur before abort. Otherwise, it would
+    --  take effect no earlier than the next abort completion point.
+ 
+    procedure Undefer_Abort (Self_ID : Task_Id) is
+    begin
+       if No_Abort then
+          return;
+       end if;
+ 
+       pragma Assert (Self_ID.Deferral_Level = 1);
+ 
+       Self_ID.Deferral_Level := Self_ID.Deferral_Level - 1;
+ 
+       if Self_ID.Deferral_Level = 0 then
+          pragma Assert (Check_No_Locks (Self_ID));
+ 
+          if Self_ID.Pending_Action then
+             Do_Pending_Action (Self_ID);
+          end if;
+       end if;
+    end Undefer_Abort;
+ 
+    ----------------------------
+    -- Undefer_Abort_Nestable --
+    ----------------------------
+ 
+    --  An earlier version would re-defer abort if an abort is in progress.
+    --  Then, we modified the effect of the raise statement so that it defers
+    --  abort until control reaches a handler. That was done to prevent
+    --  "skipping over" a handler if another asynchronous abort occurs during
+    --  the propagation of the abort to the handler.
+ 
+    --  There has been talk of reversing that decision, based on a newer
+    --  implementation of exception propagation. Care must be taken to evaluate
+    --  how such a change would interact with the above code and all the places
+    --  where abort-deferral is used to bridge over critical transitions, such
+    --  as entry to the scope of a region with a finalizer and entry into the
+    --  body of an accept-procedure.
+ 
+    procedure Undefer_Abort_Nestable (Self_ID : Task_Id) is
+    begin
+       if No_Abort then
+          return;
+       end if;
+ 
+       pragma Assert (Self_ID.Deferral_Level > 0);
+ 
+       Self_ID.Deferral_Level := Self_ID.Deferral_Level - 1;
+ 
+       if Self_ID.Deferral_Level = 0 then
+ 
+          pragma Assert (Check_No_Locks (Self_ID));
+ 
+          if Self_ID.Pending_Action then
+             Do_Pending_Action (Self_ID);
+          end if;
+       end if;
+    end Undefer_Abort_Nestable;
+ 
+    -------------------
+    -- Abort_Undefer --
+    -------------------
+ 
+    procedure Abort_Undefer is
+       Self_ID : Task_Id;
+    begin
+       if No_Abort then
+          return;
+       end if;
+ 
+       Self_ID := STPO.Self;
+ 
+       if Self_ID.Deferral_Level = 0 then
+ 
+          --  In case there are different views on whether Abort is supported
+          --  between the expander and the run time, we may end up with
+          --  Self_ID.Deferral_Level being equal to zero, when called from
+          --  the procedure created by the expander that corresponds to a
+          --  task body. In this case, there's nothing to be done.
+ 
+          --  See related code in System.Tasking.Stages.Create_Task resetting
+          --  Deferral_Level when System.Restrictions.Abort_Allowed is False.
+ 
+          return;
+       end if;
+ 
+       pragma Assert (Self_ID.Deferral_Level > 0);
+       Self_ID.Deferral_Level := Self_ID.Deferral_Level - 1;
+ 
+       if Self_ID.Deferral_Level = 0 then
+          pragma Assert (Check_No_Locks (Self_ID));
+ 
+          if Self_ID.Pending_Action then
+             Do_Pending_Action (Self_ID);
+          end if;
+       end if;
+    end Abort_Undefer;
+ 
+    --------------------------
+    -- Wakeup_Entry_Caller --
+    --------------------------
+ 
+    --  This is called at the end of service of an entry call, to abort the
+    --  caller if he is in an abortable part, and to wake up the caller if it
+    --  is on Entry_Caller_Sleep. It assumes that the call is already off-queue.
+ 
+    --  (This enforces the rule that a task must be off-queue if its state is
+    --  Done or Cancelled.) Call it holding the lock of Entry_Call.Self.
+ 
+    --  Timed_Call or Simple_Call:
+    --    The caller is waiting on Entry_Caller_Sleep, in
+    --    Wait_For_Completion, or Wait_For_Completion_With_Timeout.
+ 
+    --  Conditional_Call:
+    --    The caller might be in Wait_For_Completion,
+    --    waiting for a rendezvous (possibly requeued without abort)
+    --    to complete.
+ 
+    --  Asynchronous_Call:
+    --    The caller may be executing in the abortable part o
+    --    an async. select, or on a time delay,
+    --    if Entry_Call.State >= Was_Abortable.
+ 
+    procedure Wakeup_Entry_Caller
+      (Self_ID    : Task_Id;
+       Entry_Call : Entry_Call_Link;
+       New_State  : Entry_Call_State)
+    is
+       Caller : constant Task_Id := Entry_Call.Self;
+ 
+    begin
+       pragma Debug (Debug.Trace
+         (Self_ID, "Wakeup_Entry_Caller", 'E', Caller));
+       pragma Assert (New_State = Done or else New_State = Cancelled);
+ 
+       pragma Assert (Caller.Common.State /= Unactivated);
+ 
+       Entry_Call.State := New_State;
+ 
+       if Entry_Call.Mode = Asynchronous_Call then
+ 
+          --  Abort the caller in his abortable part, but do so only if call has
+          --  been queued abortably.
+ 
+          if Entry_Call.State >= Was_Abortable or else New_State = Done then
+             Locked_Abort_To_Level (Self_ID, Caller, Entry_Call.Level - 1);
+          end if;
+ 
+       elsif Caller.Common.State = Entry_Caller_Sleep then
+          Wakeup (Caller, Entry_Caller_Sleep);
+       end if;
+    end Wakeup_Entry_Caller;
+ 
+    -------------------------
+    -- Finalize_Attributes --
+    -------------------------
+ 
+    procedure Finalize_Attributes (T : Task_Id) is
+       Attr : Atomic_Address;
+ 
+    begin
+       for J in T.Attributes'Range loop
+          Attr := T.Attributes (J);
+ 
+          if Attr /= 0 and then Task_Attributes.Require_Finalization (J) then
+             Task_Attributes.To_Attribute (Attr).Free (Attr);
+             T.Attributes (J) := 0;
+          end if;
+       end loop;
+    end Finalize_Attributes;
+ 
+ begin
+    Init_RTS;
+ end System.Tasking.Initialization;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-tasini.ads gcc-8.1.0/gcc/ada/libgnarl/s-tasini.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-tasini.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-tasini.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,178 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --         S Y S T E M . T A S K I N G . I N I T I A L I Z A T I O N        --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package provides overall initialization of the tasking portion of the
+ --  RTS. This package must be elaborated before any tasking features are used.
+ 
+ package System.Tasking.Initialization is
+ 
+    procedure Remove_From_All_Tasks_List (T : Task_Id);
+    --  Remove T from All_Tasks_List. Call this function with RTS_Lock taken
+ 
+    procedure Finalize_Attributes (T : Task_Id);
+    --  Finalize all attributes from T. This is to be called just before the
+    --  ATCB is deallocated. It relies on the caller holding T.L write-lock
+    --  on entry.
+ 
+    ---------------------------------
+    -- Tasking-Specific Soft Links --
+    ---------------------------------
+ 
+    -------------------------
+    -- Abort Defer/Undefer --
+    -------------------------
+ 
+    --  Defer_Abort defers the effects of low-level abort and priority change
+    --  in the calling task until a matching Undefer_Abort call is executed.
+ 
+    --  Undefer_Abort DOES MORE than just undo the effects of one call to
+    --  Defer_Abort. It is the universal "polling point" for deferred
+    --  processing, including the following:
+ 
+    --  1) base priority changes
+ 
+    --  2) abort/ATC
+ 
+    --  Abort deferral MAY be nested (Self_ID.Deferral_Level is a count), but
+    --  to avoid waste and undetected errors, it generally SHOULD NOT be
+    --  nested. The symptom of over-deferring abort is that an exception may
+    --  fail to be raised, or an abort may fail to take place.
+ 
+    --  Therefore, there are two sets of the inlineable defer/undefer routines,
+    --  which are the ones to be used inside GNARL. One set allows nesting. The
+    --  other does not. People who maintain the GNARL should try to avoid using
+    --  the nested versions, or at least look very critically at the places
+    --  where they are used.
+ 
+    --  In general, any GNARL call that is potentially blocking, or whose
+    --  semantics require that it sometimes raise an exception, or that is
+    --  required to be an abort completion point, must be made with abort
+    --  Deferral_Level = 1.
+ 
+    --  In general, non-blocking GNARL calls, which may be made from inside a
+    --  protected action, are likely to need to allow nested abort deferral.
+ 
+    --  With some critical exceptions (which are supposed to be documented),
+    --  internal calls to the tasking runtime system assume abort is already
+    --  deferred, and do not modify the deferral level.
+ 
+    --  There is also a set of non-inlineable defer/undefer routines, for direct
+    --  call from the compiler. These are not inlineable because they may need
+    --  to be called via pointers ("soft links"). For the sake of efficiency,
+    --  the version with Self_ID as parameter should used wherever possible.
+    --  These are all nestable.
+ 
+    --  Non-nestable inline versions
+ 
+    procedure Defer_Abort (Self_ID : Task_Id);
+    pragma Inline (Defer_Abort);
+ 
+    procedure Undefer_Abort (Self_ID : Task_Id);
+    pragma Inline (Undefer_Abort);
+ 
+    --  Nestable inline versions
+ 
+    procedure Defer_Abort_Nestable (Self_ID : Task_Id);
+    pragma Inline (Defer_Abort_Nestable);
+ 
+    procedure Undefer_Abort_Nestable (Self_ID : Task_Id);
+    pragma Inline (Undefer_Abort_Nestable);
+ 
+    procedure Do_Pending_Action (Self_ID : Task_Id);
+    --  Only call with no locks, and when Self_ID.Pending_Action = True Perform
+    --  necessary pending actions (e.g. abort, priority change). This procedure
+    --  is usually called when needed as a result of calling Undefer_Abort,
+    --  although in the case of e.g. No_Abort restriction, it can be necessary
+    --  to force execution of pending actions.
+ 
+    function Check_Abort_Status return Integer;
+    --  Returns Boolean'Pos (True) iff abort signal should raise
+    --  Standard'Abort_Signal. Only used by IRIX currently.
+ 
+    --------------------------
+    -- Change Base Priority --
+    --------------------------
+ 
+    procedure Change_Base_Priority (T : Task_Id);
+    --  Change the base priority of T. Has to be called with the affected
+    --  task's ATCB write-locked. May temporarily release the lock.
+ 
+    ----------------------
+    -- Task Lock/Unlock --
+    ----------------------
+ 
+    procedure Task_Lock (Self_ID : Task_Id);
+    pragma Inline (Task_Lock);
+ 
+    procedure Task_Unlock (Self_ID : Task_Id);
+    pragma Inline (Task_Unlock);
+    --  These are versions of Lock_Task and Unlock_Task created for use
+    --  within the GNARL.
+ 
+    procedure Final_Task_Unlock (Self_ID : Task_Id);
+    --  This version is only for use in Terminate_Task, when the task is
+    --  relinquishing further rights to its own ATCB. There is a very
+    --  interesting potential race condition there, where the old task may run
+    --  concurrently with a new task that is allocated the old tasks (now
+    --  reused) ATCB. The critical thing here is to not make any reference to
+    --  the ATCB after the lock is released. See also comments on
+    --  Terminate_Task and Unlock.
+ 
+    procedure Wakeup_Entry_Caller
+      (Self_ID    : Task_Id;
+       Entry_Call : Entry_Call_Link;
+       New_State  : Entry_Call_State);
+    pragma Inline (Wakeup_Entry_Caller);
+    --  This is called at the end of service of an entry call, to abort the
+    --  caller if he is in an abortable part, and to wake up the caller if he
+    --  is on Entry_Caller_Sleep. Call it holding the lock of Entry_Call.Self.
+    --
+    --  Timed_Call or Simple_Call:
+    --    The caller is waiting on Entry_Caller_Sleep, in Wait_For_Completion,
+    --    or Wait_For_Completion_With_Timeout.
+    --
+    --  Conditional_Call:
+    --    The caller might be in Wait_For_Completion,
+    --    waiting for a rendezvous (possibly requeued without abort) to
+    --    complete.
+    --
+    --  Asynchronous_Call:
+    --    The caller may be executing in the abortable part an async. select,
+    --    or on a time delay, if Entry_Call.State >= Was_Abortable.
+ 
+    procedure Locked_Abort_To_Level
+      (Self_ID : Task_Id;
+       T       : Task_Id;
+       L       : ATC_Level);
+    pragma Inline (Locked_Abort_To_Level);
+    --  Abort a task to a specified ATC level. Call this only with T locked
+ 
+ end System.Tasking.Initialization;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-taskin.adb gcc-8.1.0/gcc/ada/libgnarl/s-taskin.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-taskin.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-taskin.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,275 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                        S Y S T E M . T A S K I N G                       --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ pragma Polling (Off);
+ --  Turn off polling, we do not want ATC polling to take place during tasking
+ --  operations. It causes infinite loops and other problems.
+ 
+ with System.Task_Primitives.Operations;
+ with System.Storage_Elements;
+ 
+ package body System.Tasking is
+ 
+    package STPO renames System.Task_Primitives.Operations;
+ 
+    ---------------------
+    -- Detect_Blocking --
+    ---------------------
+ 
+    function Detect_Blocking return Boolean is
+       GL_Detect_Blocking : Integer;
+       pragma Import (C, GL_Detect_Blocking, "__gl_detect_blocking");
+       --  Global variable exported by the binder generated file. A value equal
+       --  to 1 indicates that pragma Detect_Blocking is active, while 0 is used
+       --  for the pragma not being present.
+ 
+    begin
+       return GL_Detect_Blocking = 1;
+    end Detect_Blocking;
+ 
+    -----------------------
+    -- Number_Of_Entries --
+    -----------------------
+ 
+    function Number_Of_Entries (Self_Id : Task_Id) return Entry_Index is
+    begin
+       return Entry_Index (Self_Id.Entry_Num);
+    end Number_Of_Entries;
+ 
+    ----------
+    -- Self --
+    ----------
+ 
+    function Self return Task_Id renames STPO.Self;
+ 
+    ------------------
+    -- Storage_Size --
+    ------------------
+ 
+    function Storage_Size (T : Task_Id) return System.Parameters.Size_Type is
+    begin
+       return
+          System.Parameters.Size_Type
+            (T.Common.Compiler_Data.Pri_Stack_Info.Size);
+    end Storage_Size;
+ 
+    ---------------------
+    -- Initialize_ATCB --
+    ---------------------
+ 
+    procedure Initialize_ATCB
+      (Self_ID              : Task_Id;
+       Task_Entry_Point     : Task_Procedure_Access;
+       Task_Arg             : System.Address;
+       Parent               : Task_Id;
+       Elaborated           : Access_Boolean;
+       Base_Priority        : System.Any_Priority;
+       Base_CPU             : System.Multiprocessors.CPU_Range;
+       Domain               : Dispatching_Domain_Access;
+       Task_Info            : System.Task_Info.Task_Info_Type;
+       Stack_Size           : System.Parameters.Size_Type;
+       T                    : Task_Id;
+       Success              : out Boolean)
+    is
+    begin
+       T.Common.State := Unactivated;
+ 
+       --  Initialize T.Common.LL
+ 
+       STPO.Initialize_TCB (T, Success);
+ 
+       if not Success then
+          return;
+       end if;
+ 
+       --  Note that use of an aggregate here for this assignment
+       --  would be illegal, because Common_ATCB is limited because
+       --  Task_Primitives.Private_Data is limited.
+ 
+       T.Common.Parent                   := Parent;
+       T.Common.Base_Priority            := Base_Priority;
+       T.Common.Base_CPU                 := Base_CPU;
+ 
+       --  The Domain defaults to that of the activator. But that can be null in
+       --  the case of foreign threads (see Register_Foreign_Thread), in which
+       --  case we default to the System_Domain.
+ 
+       if Domain /= null then
+          T.Common.Domain := Domain;
+       elsif Self_ID.Common.Domain /= null then
+          T.Common.Domain := Self_ID.Common.Domain;
+       else
+          T.Common.Domain := System_Domain;
+       end if;
+       pragma Assert (T.Common.Domain /= null);
+ 
+       T.Common.Current_Priority         := 0;
+       T.Common.Protected_Action_Nesting := 0;
+       T.Common.Call                     := null;
+       T.Common.Task_Arg                 := Task_Arg;
+       T.Common.Task_Entry_Point         := Task_Entry_Point;
+       T.Common.Activator                := Self_ID;
+       T.Common.Wait_Count               := 0;
+       T.Common.Elaborated               := Elaborated;
+       T.Common.Activation_Failed        := False;
+       T.Common.Task_Info                := Task_Info;
+       T.Common.Global_Task_Lock_Nesting := 0;
+       T.Common.Fall_Back_Handler        := null;
+       T.Common.Specific_Handler         := null;
+       T.Common.Debug_Events             := (others => False);
+       T.Common.Task_Image_Len           := 0;
+ 
+       if T.Common.Parent = null then
+ 
+          --  For the environment task, the adjusted stack size is meaningless.
+          --  For example, an unspecified Stack_Size means that the stack size
+          --  is determined by the environment, or can grow dynamically. The
+          --  Stack_Checking algorithm therefore needs to use the requested
+          --  size, or 0 in case of an unknown size.
+ 
+          T.Common.Compiler_Data.Pri_Stack_Info.Size :=
+             Storage_Elements.Storage_Offset (Stack_Size);
+ 
+       else
+          T.Common.Compiler_Data.Pri_Stack_Info.Size :=
+            Storage_Elements.Storage_Offset
+              (Parameters.Adjust_Storage_Size (Stack_Size));
+       end if;
+ 
+       --  Link the task into the list of all tasks
+ 
+       T.Common.All_Tasks_Link := All_Tasks_List;
+       All_Tasks_List := T;
+    end Initialize_ATCB;
+ 
+    ----------------
+    -- Initialize --
+    ----------------
+ 
+    Main_Task_Image : constant String := "main_task";
+    --  Image of environment task
+ 
+    Main_Priority : Integer;
+    pragma Import (C, Main_Priority, "__gl_main_priority");
+    --  Priority for main task. Note that this is of type Integer, not Priority,
+    --  because we use the value -1 to indicate the default main priority, and
+    --  that is of course not in Priority'range.
+ 
+    Main_CPU : Integer;
+    pragma Import (C, Main_CPU, "__gl_main_cpu");
+    --  Affinity for main task. Note that this is of type Integer, not
+    --  CPU_Range, because we use the value -1 to indicate the unassigned
+    --  affinity, and that is of course not in CPU_Range'Range.
+ 
+    Initialized : Boolean := False;
+    --  Used to prevent multiple calls to Initialize
+ 
+    procedure Initialize is
+       T             : Task_Id;
+       Base_Priority : Any_Priority;
+       Base_CPU      : System.Multiprocessors.CPU_Range;
+       Success       : Boolean;
+ 
+       use type System.Multiprocessors.CPU_Range;
+ 
+    begin
+       if Initialized then
+          return;
+       end if;
+ 
+       Initialized := True;
+ 
+       --  Initialize Environment Task
+ 
+       Base_Priority :=
+         (if Main_Priority = Unspecified_Priority
+          then Default_Priority
+          else Priority (Main_Priority));
+ 
+       Base_CPU :=
+         (if Main_CPU = Unspecified_CPU
+          then System.Multiprocessors.Not_A_Specific_CPU
+          else System.Multiprocessors.CPU_Range (Main_CPU));
+ 
+       --  At program start-up the environment task is allocated to the default
+       --  system dispatching domain.
+       --  Make sure that the processors which are not available are not taken
+       --  into account. Use Number_Of_CPUs to know the exact number of
+       --  processors in the system at execution time.
+ 
+       System_Domain :=
+         new Dispatching_Domain'
+           (Multiprocessors.CPU'First .. Multiprocessors.Number_Of_CPUs =>
+              True);
+ 
+       T := STPO.New_ATCB (0);
+       Initialize_ATCB
+         (Self_ID              => null,
+          Task_Entry_Point     => null,
+          Task_Arg             => Null_Address,
+          Parent               => Null_Task,
+          Elaborated           => null,
+          Base_Priority        => Base_Priority,
+          Base_CPU             => Base_CPU,
+          Domain               => System_Domain,
+          Task_Info            => Task_Info.Unspecified_Task_Info,
+          Stack_Size           => 0,
+          T                    => T,
+          Success              => Success);
+       pragma Assert (Success);
+ 
+       STPO.Initialize (T);
+       STPO.Set_Priority (T, T.Common.Base_Priority);
+       T.Common.State := Runnable;
+       T.Common.Task_Image_Len := Main_Task_Image'Length;
+       T.Common.Task_Image (Main_Task_Image'Range) := Main_Task_Image;
+ 
+       Dispatching_Domain_Tasks :=
+         new Array_Allocated_Tasks'
+           (Multiprocessors.CPU'First .. Multiprocessors.Number_Of_CPUs => 0);
+ 
+       --  Signal that this task is being allocated to a processor
+ 
+       if Base_CPU /= System.Multiprocessors.Not_A_Specific_CPU then
+ 
+          --  Increase the number of tasks attached to the CPU to which this
+          --  task is allocated.
+ 
+          Dispatching_Domain_Tasks (Base_CPU) :=
+            Dispatching_Domain_Tasks (Base_CPU) + 1;
+       end if;
+ 
+       --  Only initialize the first element since others are not relevant
+       --  in ravenscar mode. Rest of the initialization is done in Init_RTS.
+ 
+       T.Entry_Calls (1).Self := T;
+    end Initialize;
+ end System.Tasking;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-taskin.ads gcc-8.1.0/gcc/ada/libgnarl/s-taskin.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-taskin.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-taskin.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,1192 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                  GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                --
+ --                                                                          --
+ --                        S Y S T E M . T A S K I N G                       --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package provides necessary type definitions for compiler interface
+ 
+ --  Note: the compiler generates direct calls to this interface, via Rtsfind.
+ --  Any changes to this interface may require corresponding compiler changes.
+ 
+ with Ada.Exceptions;
+ with Ada.Unchecked_Conversion;
+ 
+ with System.Multiprocessors;
+ with System.Parameters;
+ with System.Soft_Links;
+ with System.Stack_Usage;
+ with System.Task_Info;
+ with System.Task_Primitives;
+ 
+ package System.Tasking is
+    pragma Preelaborate;
+ 
+    -------------------
+    -- Locking Rules --
+    -------------------
+ 
+    --  The following rules must be followed at all times, to prevent
+    --  deadlock and generally ensure correct operation of locking.
+ 
+    --  Never lock a lock unless abort is deferred
+ 
+    --  Never undefer abort while holding a lock
+ 
+    --  Overlapping critical sections must be properly nested, and locks must
+    --  be released in LIFO order. E.g., the following is not allowed:
+ 
+    --         Lock (X);
+    --         ...
+    --         Lock (Y);
+    --         ...
+    --         Unlock (X);
+    --         ...
+    --         Unlock (Y);
+ 
+    --  Locks with lower (smaller) level number cannot be locked
+    --  while holding a lock with a higher level number. (The level
+ 
+    --  1. System.Tasking.PO_Simple.Protection.L (any PO lock)
+    --  2. System.Tasking.Initialization.Global_Task_Lock (in body)
+    --  3. System.Task_Primitives.Operations.Single_RTS_Lock
+    --  4. System.Tasking.Ada_Task_Control_Block.LL.L (any TCB lock)
+ 
+    --  Clearly, there can be no circular chain of hold-and-wait
+    --  relationships involving locks in different ordering levels.
+ 
+    --  We used to have Global_Task_Lock before Protection.L but this was
+    --  clearly wrong since there can be calls to "new" inside protected
+    --  operations. The new ordering prevents these failures.
+ 
+    --  Sometimes we need to hold two ATCB locks at the same time. To allow us
+    --  to order the locking, each ATCB is given a unique serial number. If one
+    --  needs to hold locks on two ATCBs at once, the lock with lower serial
+    --  number must be locked first. We avoid holding three or more ATCB locks,
+    --  because that can easily lead to complications that cause race conditions
+    --  and deadlocks.
+ 
+    --  We don't always need to check the serial numbers, since the serial
+    --  numbers are assigned sequentially, and so:
+ 
+    --  . The parent of a task always has a lower serial number.
+    --  . The activator of a task always has a lower serial number.
+    --  . The environment task has a lower serial number than any other task.
+    --  . If the activator of a task is different from the task's parent,
+    --    the parent always has a lower serial number than the activator.
+ 
+    ---------------------------------
+    -- Task_Id related definitions --
+    ---------------------------------
+ 
+    type Ada_Task_Control_Block;
+ 
+    type Task_Id is access all Ada_Task_Control_Block;
+    for Task_Id'Size use System.Task_Primitives.Task_Address_Size;
+ 
+    Null_Task : constant Task_Id;
+ 
+    type Task_List is array (Positive range <>) of Task_Id;
+ 
+    function Self return Task_Id;
+    pragma Inline (Self);
+    --  This is the compiler interface version of this function. Do not call
+    --  from the run-time system.
+ 
+    function To_Task_Id is
+      new Ada.Unchecked_Conversion
+        (System.Task_Primitives.Task_Address, Task_Id);
+    function To_Address is
+      new Ada.Unchecked_Conversion
+        (Task_Id, System.Task_Primitives.Task_Address);
+ 
+    -----------------------
+    -- Enumeration types --
+    -----------------------
+ 
+    type Task_States is
+      (Unactivated,
+       --  TCB initialized but not task has not been created.
+       --  It cannot be executing.
+ 
+ --    Activating,
+ --    --  ??? Temporarily at end of list for GDB compatibility
+ --    --  Task has been created and is being made Runnable.
+ 
+       --  Active states
+       --  For all states from here down, the task has been activated.
+       --  For all states from here down, except for Terminated, the task
+       --  may be executing.
+       --  Activator = null iff it has not yet completed activating.
+ 
+       Runnable,
+       --  Task is not blocked for any reason known to Ada.
+       --  (It may be waiting for a mutex, though.)
+       --  It is conceptually "executing" in normal mode.
+ 
+       Terminated,
+       --  The task is terminated, in the sense of ARM 9.3 (5).
+       --  Any dependents that were waiting on terminate
+       --  alternatives have been awakened and have terminated themselves.
+ 
+       Activator_Sleep,
+       --  Task is waiting for created tasks to complete activation
+ 
+       Acceptor_Sleep,
+       --  Task is waiting on an accept or select with terminate
+ 
+ --    Acceptor_Delay_Sleep,
+ --    --  ??? Temporarily at end of list for GDB compatibility
+ --    --  Task is waiting on an selective wait statement
+ 
+       Entry_Caller_Sleep,
+       --  Task is waiting on an entry call
+ 
+       Async_Select_Sleep,
+       --  Task is waiting to start the abortable part of an
+       --  asynchronous select statement.
+ 
+       Delay_Sleep,
+       --  Task is waiting on a select statement with only a delay
+       --  alternative open.
+ 
+       Master_Completion_Sleep,
+       --  Master completion has two phases.
+       --  In Phase 1 the task is sleeping in Complete_Master
+       --  having completed a master within itself,
+       --  and is waiting for the tasks dependent on that master to become
+       --  terminated or waiting on a terminate Phase.
+ 
+       Master_Phase_2_Sleep,
+       --  In Phase 2 the task is sleeping in Complete_Master
+       --  waiting for tasks on terminate alternatives to finish
+       --  terminating.
+ 
+       --  The following are special uses of sleep, for server tasks
+       --  within the run-time system.
+ 
+       Interrupt_Server_Idle_Sleep,
+       Interrupt_Server_Blocked_Interrupt_Sleep,
+       Timer_Server_Sleep,
+       AST_Server_Sleep,
+ 
+       Asynchronous_Hold,
+       --  The task has been held by Asynchronous_Task_Control.Hold_Task
+ 
+       Interrupt_Server_Blocked_On_Event_Flag,
+       --  The task has been blocked on a system call waiting for a
+       --  completion event/signal to occur.
+ 
+       Activating,
+       --  Task has been created and is being made Runnable
+ 
+       Acceptor_Delay_Sleep
+       --  Task is waiting on an selective wait statement
+      );
+ 
+    type Call_Modes is
+      (Simple_Call, Conditional_Call, Asynchronous_Call, Timed_Call);
+ 
+    type Select_Modes is (Simple_Mode, Else_Mode, Terminate_Mode, Delay_Mode);
+ 
+    subtype Delay_Modes is Integer;
+ 
+    -------------------------------
+    -- Entry related definitions --
+    -------------------------------
+ 
+    Null_Entry : constant := 0;
+ 
+    Max_Entry : constant := Integer'Last;
+ 
+    Interrupt_Entry : constant := -2;
+ 
+    Cancelled_Entry : constant := -1;
+ 
+    type Entry_Index is range Interrupt_Entry .. Max_Entry;
+ 
+    Null_Task_Entry : constant := Null_Entry;
+ 
+    Max_Task_Entry : constant := Max_Entry;
+ 
+    type Task_Entry_Index is new Entry_Index
+      range Null_Task_Entry .. Max_Task_Entry;
+ 
+    type Entry_Call_Record;
+ 
+    type Entry_Call_Link is access all Entry_Call_Record;
+ 
+    type Entry_Queue is record
+       Head : Entry_Call_Link;
+       Tail : Entry_Call_Link;
+    end record;
+ 
+    type Task_Entry_Queue_Array is
+      array (Task_Entry_Index range <>) of Entry_Queue;
+ 
+    --  A data structure which contains the string names of entries and entry
+    --  family members.
+ 
+    type String_Access is access all String;
+ 
+    ----------------------------------
+    -- Entry_Call_Record definition --
+    ----------------------------------
+ 
+    type Entry_Call_State is
+      (Never_Abortable,
+       --  the call is not abortable, and never can be
+ 
+       Not_Yet_Abortable,
+       --  the call is not abortable, but may become so
+ 
+       Was_Abortable,
+       --  the call is not abortable, but once was
+ 
+       Now_Abortable,
+       --  the call is abortable
+ 
+       Done,
+       --  the call has been completed
+ 
+       Cancelled
+       --  the call was asynchronous, and was cancelled
+      );
+    pragma Ordered (Entry_Call_State);
+ 
+    --  Never_Abortable is used for calls that are made in a abort deferred
+    --  region (see ARM 9.8(5-11), 9.8 (20)). Such a call is never abortable.
+ 
+    --  The Was_ vs. Not_Yet_ distinction is needed to decide whether it is OK
+    --  to advance into the abortable part of an async. select stmt. That is
+    --  allowed iff the mode is Now_ or Was_.
+ 
+    --  Done indicates the call has been completed, without cancellation, or no
+    --  call has been made yet at this ATC nesting level, and so aborting the
+    --  call is no longer an issue. Completion of the call does not necessarily
+    --  indicate "success"; the call may be returning an exception if
+    --  Exception_To_Raise is non-null.
+ 
+    --  Cancelled indicates the call was cancelled, and so aborting the call is
+    --  no longer an issue.
+ 
+    --  The call is on an entry queue unless State >= Done, in which case it may
+    --  or may not be still Onqueue.
+ 
+    --  Please do not modify the order of the values, without checking all uses
+    --  of this type. We rely on partial "monotonicity" of
+    --  Entry_Call_Record.State to avoid locking when we access this value for
+    --  certain tests. In particular:
+ 
+    --  1)  Once State >= Done, we can rely that the call has been
+    --      completed. If State >= Done, it will not
+    --      change until the task does another entry call at this level.
+ 
+    --  2)  Once State >= Was_Abortable, we can rely that the call has
+    --      been queued abortably at least once, and so the check for
+    --      whether it is OK to advance to the abortable part of an
+    --      async. select statement does not need to lock anything.
+ 
+    type Restricted_Entry_Call_Record is record
+       Self : Task_Id;
+       --  ID of the caller
+ 
+       Mode : Call_Modes;
+ 
+       State : Entry_Call_State;
+       pragma Atomic (State);
+       --  Indicates part of the state of the call.
+       --
+       --  Protection: If the call is not on a queue, it should only be
+       --  accessed by Self, and Self does not need any lock to modify this
+       --  field.
+       --
+       --  Once the call is on a queue, the value should be something other
+       --  than Done unless it is cancelled, and access is controller by the
+       --  "server" of the queue -- i.e., the lock of Checked_To_Protection
+       --  (Call_Target) if the call record is on the queue of a PO, or the
+       --  lock of Called_Target if the call is on the queue of a task. See
+       --  comments on type declaration for more details.
+ 
+       Uninterpreted_Data : System.Address;
+       --  Data passed by the compiler
+ 
+       Exception_To_Raise : Ada.Exceptions.Exception_Id;
+       --  The exception to raise once this call has been completed without
+       --  being aborted.
+    end record;
+    pragma Suppress_Initialization (Restricted_Entry_Call_Record);
+ 
+    -------------------------------------------
+    -- Task termination procedure definition --
+    -------------------------------------------
+ 
+    --  We need to redefine here these types (already defined in
+    --  Ada.Task_Termination) for avoiding circular dependencies.
+ 
+    type Cause_Of_Termination is (Normal, Abnormal, Unhandled_Exception);
+    --  Possible causes for task termination:
+    --
+    --    Normal means that the task terminates due to completing the
+    --    last sentence of its body, or as a result of waiting on a
+    --    terminate alternative.
+ 
+    --    Abnormal means that the task terminates because it is being aborted
+ 
+    --    handled_Exception means that the task terminates because of exception
+    --    raised by the execution of its task_body.
+ 
+    type Termination_Handler is access protected procedure
+      (Cause : Cause_Of_Termination;
+       T     : Task_Id;
+       X     : Ada.Exceptions.Exception_Occurrence);
+    --  Used to represent protected procedures to be executed when task
+    --  terminates.
+ 
+    ------------------------------------
+    -- Dispatching domain definitions --
+    ------------------------------------
+ 
+    --  We need to redefine here these types (already defined in
+    --  System.Multiprocessor.Dispatching_Domains) for avoiding circular
+    --  dependencies.
+ 
+    type Dispatching_Domain is
+      array (System.Multiprocessors.CPU range <>) of Boolean;
+    --  A dispatching domain needs to contain the set of processors belonging
+    --  to it. This is a processor mask where a True indicates that the
+    --  processor belongs to the dispatching domain.
+    --  Do not use the full range of CPU_Range because it would create a very
+    --  long array. This way we can use the exact range of processors available
+    --  in the system.
+ 
+    type Dispatching_Domain_Access is access Dispatching_Domain;
+ 
+    System_Domain : Dispatching_Domain_Access;
+    --  All processors belong to default system dispatching domain at start up.
+    --  We use a pointer which creates the actual variable for the reasons
+    --  explained bellow in Dispatching_Domain_Tasks.
+ 
+    Dispatching_Domains_Frozen : Boolean := False;
+    --  True when the main procedure has been called. Hence, no new dispatching
+    --  domains can be created when this flag is True.
+ 
+    type Array_Allocated_Tasks is
+      array (System.Multiprocessors.CPU range <>) of Natural;
+    --  At start-up time, we need to store the number of tasks attached to
+    --  concrete processors within the system domain (we can only create
+    --  dispatching domains with processors belonging to the system domain and
+    --  without tasks allocated).
+ 
+    type Array_Allocated_Tasks_Access is access Array_Allocated_Tasks;
+ 
+    Dispatching_Domain_Tasks : Array_Allocated_Tasks_Access;
+    --  We need to store whether there are tasks allocated to concrete
+    --  processors in the default system dispatching domain because we need to
+    --  check it before creating a new dispatching domain. Two comments about
+    --  why we use a pointer here and not in package Dispatching_Domains:
+    --
+    --    1) We use an array created dynamically in procedure Initialize which
+    --    is called at the beginning of the initialization of the run-time
+    --    library. Declaring a static array here in the spec would not work
+    --    across different installations because it would get the value of
+    --    Number_Of_CPUs from the machine where the run-time library is built,
+    --    and not from the machine where the application is executed. That is
+    --    the reason why we create the array (CPU'First .. Number_Of_CPUs) at
+    --    execution time in the procedure body, ensuring that the function
+    --    Number_Of_CPUs is executed at execution time (the same trick as we
+    --    use for System_Domain).
+    --
+    --    2) We have moved this declaration from package Dispatching_Domains
+    --    because when we use a pragma CPU, the affinity is passed through the
+    --    call to Create_Task. Hence, at this point, we may need to update the
+    --    number of tasks associated to the processor, but we do not want to
+    --    force a dependency from this package on Dispatching_Domains.
+ 
+    ------------------------------------
+    -- Task related other definitions --
+    ------------------------------------
+ 
+    type Activation_Chain is limited private;
+    --  Linked list of to-be-activated tasks, linked through
+    --  Activation_Link. The order of tasks on the list is irrelevant, because
+    --  the priority rules will ensure that they actually start activating in
+    --  priority order.
+ 
+    type Activation_Chain_Access is access all Activation_Chain;
+ 
+    type Task_Procedure_Access is access procedure (Arg : System.Address);
+ 
+    type Access_Boolean is access all Boolean;
+ 
+    function Detect_Blocking return Boolean;
+    pragma Inline (Detect_Blocking);
+    --  Return whether the Detect_Blocking pragma is enabled
+ 
+    function Storage_Size (T : Task_Id) return System.Parameters.Size_Type;
+    --  Retrieve from the TCB of the task the allocated size of its stack,
+    --  either the system default or the size specified by a pragma. This is in
+    --  general a non-static value that can depend on discriminants of the task.
+ 
+    type Bit_Array is array (Integer range <>) of Boolean;
+    pragma Pack (Bit_Array);
+ 
+    subtype Debug_Event_Array is Bit_Array (1 .. 16);
+ 
+    Global_Task_Debug_Event_Set : Boolean := False;
+    --  Set True when running under debugger control and a task debug event
+    --  signal has been requested.
+ 
+    ----------------------------------------------
+    -- Ada_Task_Control_Block (ATCB) definition --
+    ----------------------------------------------
+ 
+    --  Notes on protection (synchronization) of TRTS data structures
+ 
+    --  Any field of the TCB can be written by the activator of a task when the
+    --  task is created, since no other task can access the new task's
+    --  state until creation is complete.
+ 
+    --  The protection for each field is described in a comment starting with
+    --  "Protection:".
+ 
+    --  When a lock is used to protect an ATCB field, this lock is simply named
+ 
+    --  Some protection is described in terms of tasks related to the
+    --  ATCB being protected. These are:
+ 
+    --    Self:      The task which is controlled by this ATCB
+    --    Acceptor:  A task accepting a call from Self
+    --    Caller:    A task calling an entry of Self
+    --    Parent:    The task executing the master on which Self depends
+    --    Dependent: A task dependent on Self
+    --    Activator: The task that created Self and initiated its activation
+    --    Created:   A task created and activated by Self
+ 
+    --  Note: The order of the fields is important to implement efficiently
+    --  tasking support under gdb.
+    --  Currently gdb relies on the order of the State, Parent, Base_Priority,
+    --  Task_Image, Task_Image_Len, Call and LL fields.
+ 
+    -------------------------
+    -- Common ATCB section --
+    -------------------------
+ 
+    --  Section used by all GNARL implementations (regular and restricted)
+ 
+    type Common_ATCB is limited record
+       State : Task_States;
+       pragma Atomic (State);
+       --  Encodes some basic information about the state of a task,
+       --  including whether it has been activated, whether it is sleeping,
+       --  and whether it is terminated.
+       --
+       --  Protection: Self.L
+ 
+       Parent : Task_Id;
+       --  The task on which this task depends.
+       --  See also Master_Level and Master_Within.
+ 
+       Base_Priority : System.Any_Priority;
+       --  Base priority, not changed during entry calls, only changed
+       --  via dynamic priorities package.
+       --
+       --  Protection: Only written by Self, accessed by anyone
+ 
+       Base_CPU : System.Multiprocessors.CPU_Range;
+       --  Base CPU, only changed via dispatching domains package.
+       --
+       --  Protection: Self.L
+ 
+       Current_Priority : System.Any_Priority;
+       --  Active priority, except that the effects of protected object
+       --  priority ceilings are not reflected. This only reflects explicit
+       --  priority changes and priority inherited through task activation
+       --  and rendezvous.
+       --
+       --  Ada 95 notes: In Ada 95, this field will be transferred to the
+       --  Priority field of an Entry_Calls component when an entry call is
+       --  initiated. The Priority of the Entry_Calls component will not change
+       --  for the duration of the call. The accepting task can use it to boost
+       --  its own priority without fear of its changing in the meantime.
+       --
+       --  This can safely be used in the priority ordering of entry queues.
+       --  Once a call is queued, its priority does not change.
+       --
+       --  Since an entry call cannot be made while executing a protected
+       --  action, the priority of a task will never reflect a priority ceiling
+       --  change at the point of an entry call.
+       --
+       --  Protection: Only written by Self, and only accessed when Acceptor
+       --  accepts an entry or when Created activates, at which points Self is
+       --  suspended.
+ 
+       Protected_Action_Nesting : Natural;
+       pragma Atomic (Protected_Action_Nesting);
+       --  The dynamic level of protected action nesting for this task. This
+       --  field is needed for checking whether potentially blocking operations
+       --  are invoked from protected actions. pragma Atomic is used because it
+       --  can be read/written from protected interrupt handlers.
+ 
+       Task_Image : String (1 .. System.Parameters.Max_Task_Image_Length);
+       --  Hold a string that provides a readable id for task, built from the
+       --  variable of which it is a value or component.
+ 
+       Task_Image_Len : Natural;
+       --  Actual length of Task_Image
+ 
+       Call : Entry_Call_Link;
+       --  The entry call that has been accepted by this task.
+       --
+       --  Protection: Self.L. Self will modify this field when Self.Accepting
+       --  is False, and will not need the mutex to do so. Once a task sets
+       --  Pending_ATC_Level = 0, no other task can access this field.
+ 
+       LL : aliased Task_Primitives.Private_Data;
+       --  Control block used by the underlying low-level tasking service
+       --  (GNULLI).
+       --
+       --  Protection: This is used only by the GNULLI implementation, which
+       --  takes care of all of its synchronization.
+ 
+       Task_Arg : System.Address;
+       --  The argument to task procedure. Provide a handle for discriminant
+       --  information.
+       --
+       --  Protection: Part of the synchronization between Self and Activator.
+       --  Activator writes it, once, before Self starts executing. Thereafter,
+       --  Self only reads it.
+ 
+       Task_Alternate_Stack : System.Address;
+       --  The address of the alternate signal stack for this task, if any
+       --
+       --  Protection: Only accessed by Self
+ 
+       Task_Entry_Point : Task_Procedure_Access;
+       --  Information needed to call the procedure containing the code for
+       --  the body of this task.
+       --
+       --  Protection: Part of the synchronization between Self and Activator.
+       --  Activator writes it, once, before Self starts executing. Self reads
+       --  it, once, as part of its execution.
+ 
+       Compiler_Data : System.Soft_Links.TSD;
+       --  Task-specific data needed by the compiler to store per-task
+       --  structures.
+       --
+       --  Protection: Only accessed by Self
+ 
+       All_Tasks_Link : Task_Id;
+       --  Used to link this task to the list of all tasks in the system
+       --
+       --  Protection: RTS_Lock
+ 
+       Activation_Link : Task_Id;
+       --  Used to link this task to a list of tasks to be activated
+       --
+       --  Protection: Only used by Activator
+ 
+       Activator : Task_Id;
+       pragma Atomic (Activator);
+       --  The task that created this task, either by declaring it as a task
+       --  object or by executing a task allocator. The value is null iff Self
+       --  has completed activation.
+       --
+       --  Protection: Set by Activator before Self is activated, and
+       --  only modified by Self after that. Can be read by any task via
+       --  Ada.Task_Identification.Activation_Is_Complete; hence Atomic.
+ 
+       Wait_Count : Natural;
+       --  This count is used by a task that is waiting for other tasks. At all
+       --  other times, the value should be zero. It is used differently in
+       --  several different states. Since a task cannot be in more than one of
+       --  these states at the same time, a single counter suffices.
+       --
+       --  Protection: Self.L
+ 
+       --  Activator_Sleep
+ 
+       --  This is the number of tasks that this task is activating, i.e. the
+       --  children that have started activation but have not completed it.
+       --
+       --  Protection: Self.L and Created.L. Both mutexes must be locked, since
+       --  Self.Activation_Count and Created.State must be synchronized.
+ 
+       --  Master_Completion_Sleep (phase 1)
+ 
+       --  This is the number dependent tasks of a master being completed by
+       --  Self that are activated, but have not yet terminated, and are not
+       --  waiting on a terminate alternative.
+ 
+       --  Master_Completion_2_Sleep (phase 2)
+ 
+       --  This is the count of tasks dependent on a master being completed by
+       --  Self which are waiting on a terminate alternative.
+ 
+       Elaborated : Access_Boolean;
+       --  Pointer to a flag indicating that this task's body has been
+       --  elaborated. The flag is created and managed by the
+       --  compiler-generated code.
+       --
+       --  Protection: The field itself is only accessed by Activator. The flag
+       --  that it points to is updated by Master and read by Activator; access
+       --  is assumed to be atomic.
+ 
+       Activation_Failed : Boolean;
+       --  Set to True if activation of a chain of tasks fails,
+       --  so that the activator should raise Tasking_Error.
+ 
+       Task_Info : System.Task_Info.Task_Info_Type;
+       --  System-specific attributes of the task as specified by the
+       --  Task_Info pragma.
+ 
+       Analyzer : System.Stack_Usage.Stack_Analyzer;
+       --  For storing information used to measure the stack usage
+ 
+       Global_Task_Lock_Nesting : Natural;
+       --  This is the current nesting level of calls to
+       --  System.Tasking.Initialization.Lock_Task. This allows a task to call
+       --  Lock_Task multiple times without deadlocking. A task only locks
+       --  Global_Task_Lock when its Global_Task_Lock_Nesting goes from 0 to 1,
+       --  and only unlocked when it goes from 1 to 0.
+       --
+       --  Protection: Only accessed by Self
+ 
+       Fall_Back_Handler : Termination_Handler;
+       --  This is the fall-back handler that applies to the dependent tasks of
+       --  the task.
+       --
+       --  Protection: Self.L
+ 
+       Specific_Handler : Termination_Handler;
+       --  This is the specific handler that applies only to this task, and not
+       --  any of its dependent tasks.
+       --
+       --  Protection: Self.L
+ 
+       Debug_Events : Debug_Event_Array;
+       --  Word length array of per task debug events, of which 11 kinds are
+       --  currently defined in System.Tasking.Debugging package.
+ 
+       Domain : Dispatching_Domain_Access;
+       --  Domain is the dispatching domain to which the task belongs. It is
+       --  only changed via dispatching domains package. This field is made
+       --  part of the Common_ATCB, even when restricted run-times (namely
+       --  Ravenscar) do not use it, because this way the field is always
+       --  available to the underlying layers to set the affinity and we do not
+       --  need to do different things depending on the situation.
+       --
+       --  Protection: Self.L
+    end record;
+ 
+    ---------------------------------------
+    -- Restricted_Ada_Task_Control_Block --
+    ---------------------------------------
+ 
+    --  This type should only be used by the restricted GNARLI and by restricted
+    --  GNULL implementations to allocate an ATCB (see System.Task_Primitives.
+    --  Operations.New_ATCB) that will take significantly less memory.
+ 
+    --  Note that the restricted GNARLI should only access fields that are
+    --  present in the Restricted_Ada_Task_Control_Block structure.
+ 
+    type Restricted_Ada_Task_Control_Block (Entry_Num : Task_Entry_Index) is
+    limited record
+       Common : Common_ATCB;
+       --  The common part between various tasking implementations
+ 
+       Entry_Call : aliased Restricted_Entry_Call_Record;
+       --  Protection: This field is used on entry call "queues" associated
+       --  with protected objects, and is protected by the protected object
+       --  lock.
+    end record;
+    pragma Suppress_Initialization (Restricted_Ada_Task_Control_Block);
+ 
+    Interrupt_Manager_ID : Task_Id;
+    --  This task ID is declared here to break circular dependencies.
+    --  Also declare Interrupt_Manager_ID after Task_Id is known, to avoid
+    --  generating unneeded finalization code.
+ 
+    -----------------------
+    -- List of all Tasks --
+    -----------------------
+ 
+    All_Tasks_List : Task_Id;
+    --  Global linked list of all tasks
+ 
+    ------------------------------------------
+    -- Regular (non restricted) definitions --
+    ------------------------------------------
+ 
+    --------------------------------
+    -- Master Related Definitions --
+    --------------------------------
+ 
+    subtype Master_Level is Integer;
+    subtype Master_ID is Master_Level;
+ 
+    --  Normally, a task starts out with internal master nesting level one
+    --  larger than external master nesting level. It is incremented by one by
+    --  Enter_Master, which is called in the task body only if the compiler
+    --  thinks the task may have dependent tasks. It is set to 1 for the
+    --  environment task, the level 2 is reserved for server tasks of the
+    --  run-time system (the so called "independent tasks"), and the level 3 is
+    --  for the library level tasks. Foreign threads which are detected by
+    --  the run-time have a level of 0, allowing these tasks to be easily
+    --  distinguished if needed.
+ 
+    Foreign_Task_Level     : constant Master_Level := 0;
+    Environment_Task_Level : constant Master_Level := 1;
+    Independent_Task_Level : constant Master_Level := 2;
+    Library_Task_Level     : constant Master_Level := 3;
+ 
+    -------------------
+    -- Priority info --
+    -------------------
+ 
+    Unspecified_Priority : constant Integer := System.Priority'First - 1;
+ 
+    Priority_Not_Boosted : constant Integer := System.Priority'First - 1;
+    --  Definition of Priority actually has to come from the RTS configuration
+ 
+    subtype Rendezvous_Priority is Integer
+      range Priority_Not_Boosted .. System.Any_Priority'Last;
+ 
+    -------------------
+    -- Affinity info --
+    -------------------
+ 
+    Unspecified_CPU : constant := -1;
+    --  No affinity specified
+ 
+    ------------------------------------
+    -- Rendezvous related definitions --
+    ------------------------------------
+ 
+    No_Rendezvous : constant := 0;
+ 
+    Max_Select : constant Integer := Integer'Last;
+    --  RTS-defined
+ 
+    subtype Select_Index is Integer range No_Rendezvous .. Max_Select;
+    --   type Select_Index is range No_Rendezvous .. Max_Select;
+ 
+    subtype Positive_Select_Index is
+      Select_Index range 1 .. Select_Index'Last;
+ 
+    type Accept_Alternative is record
+       Null_Body : Boolean;
+       S         : Task_Entry_Index;
+    end record;
+ 
+    type Accept_List is
+      array (Positive_Select_Index range <>) of Accept_Alternative;
+ 
+    type Accept_List_Access is access constant Accept_List;
+ 
+    -----------------------------------
+    -- ATC_Level related definitions --
+    -----------------------------------
+ 
+    Max_ATC_Nesting : constant Natural := 20;
+ 
+    subtype ATC_Level_Base is Integer range 0 .. Max_ATC_Nesting;
+ 
+    ATC_Level_Infinity : constant ATC_Level_Base := ATC_Level_Base'Last;
+ 
+    subtype ATC_Level is ATC_Level_Base range 0 .. ATC_Level_Base'Last - 1;
+ 
+    subtype ATC_Level_Index is ATC_Level range 1 .. ATC_Level'Last;
+ 
+    ----------------------------------
+    -- Entry_Call_Record definition --
+    ----------------------------------
+ 
+    type Entry_Call_Record is record
+       Self  : Task_Id;
+       --  ID of the caller
+ 
+       Mode : Call_Modes;
+ 
+       State : Entry_Call_State;
+       pragma Atomic (State);
+       --  Indicates part of the state of the call
+       --
+       --  Protection: If the call is not on a queue, it should only be
+       --  accessed by Self, and Self does not need any lock to modify this
+       --  field. Once the call is on a queue, the value should be something
+       --  other than Done unless it is cancelled, and access is controller by
+       --  the "server" of the queue -- i.e., the lock of Checked_To_Protection
+       --  (Call_Target) if the call record is on the queue of a PO, or the
+       --  lock of Called_Target if the call is on the queue of a task. See
+       --  comments on type declaration for more details.
+ 
+       Uninterpreted_Data : System.Address;
+       --  Data passed by the compiler
+ 
+       Exception_To_Raise : Ada.Exceptions.Exception_Id;
+       --  The exception to raise once this call has been completed without
+       --  being aborted.
+ 
+       Prev : Entry_Call_Link;
+ 
+       Next : Entry_Call_Link;
+ 
+       Level : ATC_Level;
+       --  One of Self and Level are redundant in this implementation, since
+       --  each Entry_Call_Record is at Self.Entry_Calls (Level). Since we must
+       --  have access to the entry call record to be reading this, we could
+       --  get Self from Level, or Level from Self. However, this requires
+       --  non-portable address arithmetic.
+ 
+       E : Entry_Index;
+ 
+       Prio : System.Any_Priority;
+ 
+       --  The above fields are those that there may be some hope of packing.
+       --  They are gathered together to allow for compilers that lay records
+       --  out contiguously, to allow for such packing.
+ 
+       Called_Task : Task_Id;
+       pragma Atomic (Called_Task);
+       --  Use for task entry calls. The value is null if the call record is
+       --  not in use. Conversely, unless State is Done and Onqueue is false,
+       --  Called_Task points to an ATCB.
+       --
+       --  Protection:  Called_Task.L
+ 
+       Called_PO : System.Address;
+       pragma Atomic (Called_PO);
+       --  Similar to Called_Task but for protected objects
+       --
+       --  Note that the previous implementation tried to merge both
+       --  Called_Task and Called_PO but this ended up in many unexpected
+       --  complications (e.g having to add a magic number in the ATCB, which
+       --  caused gdb lots of confusion) with no real gain since the
+       --  Lock_Server implementation still need to loop around chasing for
+       --  pointer changes even with a single pointer.
+ 
+       Acceptor_Prev_Call : Entry_Call_Link;
+       --  For task entry calls only
+ 
+       Acceptor_Prev_Priority : Rendezvous_Priority := Priority_Not_Boosted;
+       --  For task entry calls only. The priority of the most recent prior
+       --  call being serviced. For protected entry calls, this function should
+       --  be performed by GNULLI ceiling locking.
+ 
+       Cancellation_Attempted : Boolean := False;
+       pragma Atomic (Cancellation_Attempted);
+       --  Cancellation of the call has been attempted.
+       --  Consider merging this into State???
+ 
+       With_Abort : Boolean := False;
+       --  Tell caller whether the call may be aborted
+       --  ??? consider merging this with Was_Abortable state
+ 
+       Needs_Requeue : Boolean := False;
+       --  Temporary to tell acceptor of task entry call that
+       --  Exceptional_Complete_Rendezvous needs to do requeue.
+    end record;
+ 
+    ------------------------------------
+    -- Task related other definitions --
+    ------------------------------------
+ 
+    type Access_Address is access all System.Address;
+    --  Anonymous pointer used to implement task attributes (see s-tataat.adb
+    --  and a-tasatt.adb)
+ 
+    pragma No_Strict_Aliasing (Access_Address);
+    --  This type is used in contexts where aliasing may be an issue (see
+    --  for example s-tataat.adb), so we avoid any incorrect aliasing
+    --  assumptions.
+ 
+    ----------------------------------------------
+    -- Ada_Task_Control_Block (ATCB) definition --
+    ----------------------------------------------
+ 
+    type Entry_Call_Array is array (ATC_Level_Index) of
+      aliased Entry_Call_Record;
+ 
+    type Atomic_Address is mod Memory_Size;
+    pragma Atomic (Atomic_Address);
+    type Attribute_Array is
+      array (1 .. Parameters.Max_Attribute_Count) of Atomic_Address;
+    --  Array of task attributes. The value (Atomic_Address) will either be
+    --  converted to a task attribute if it fits, or to a pointer to a record
+    --  by Ada.Task_Attributes.
+ 
+    type Task_Serial_Number is mod 2 ** Long_Long_Integer'Size;
+    --  Used to give each task a unique serial number. We want 64-bits for this
+    --  type to get as much uniqueness as possible (2**64 is operationally
+    --  infinite in this context, but 2**32 perhaps could recycle). We use
+    --  Long_Long_Integer (which in the normal case is always 64-bits) rather
+    --  than 64-bits explicitly to allow codepeer to analyze this unit when
+    --  a target configuration file forces the maximum integer size to 32.
+ 
+    type Ada_Task_Control_Block (Entry_Num : Task_Entry_Index) is limited record
+       Common : Common_ATCB;
+       --  The common part between various tasking implementations
+ 
+       Entry_Calls : Entry_Call_Array;
+       --  An array of entry calls
+       --
+       --  Protection: The elements of this array are on entry call queues
+       --  associated with protected objects or task entries, and are protected
+       --  by the protected object lock or Acceptor.L, respectively.
+ 
+       New_Base_Priority : System.Any_Priority;
+       --  New value for Base_Priority (for dynamic priorities package)
+       --
+       --  Protection: Self.L
+ 
+       Open_Accepts : Accept_List_Access;
+       --  This points to the Open_Accepts array of accept alternatives passed
+       --  to the RTS by the compiler-generated code to Selective_Wait. It is
+       --  non-null iff this task is ready to accept an entry call.
+       --
+       --  Protection: Self.L
+ 
+       Chosen_Index : Select_Index;
+       --  The index in Open_Accepts of the entry call accepted by a selective
+       --  wait executed by this task.
+       --
+       --  Protection: Written by both Self and Caller. Usually protected by
+       --  Self.L. However, once the selection is known to have been written it
+       --  can be accessed without protection. This happens after Self has
+       --  updated it itself using information from a suspended Caller, or
+       --  after Caller has updated it and awakened Self.
+ 
+       Master_Of_Task : Master_Level;
+       --  The task executing the master of this task, and the ID of this task's
+       --  master (unique only among masters currently active within Parent).
+       --
+       --  Protection: Set by Activator before Self is activated, and read
+       --  after Self is activated.
+ 
+       Master_Within : Master_Level;
+       --  The ID of the master currently executing within this task; that is,
+       --  the most deeply nested currently active master.
+       --
+       --  Protection: Only written by Self, and only read by Self or by
+       --  dependents when Self is attempting to exit a master. Since Self will
+       --  not write this field until the master is complete, the
+       --  synchronization should be adequate to prevent races.
+ 
+       Alive_Count : Natural := 0;
+       --  Number of tasks directly dependent on this task (including itself)
+       --  that are still "alive", i.e. not terminated.
+       --
+       --  Protection: Self.L
+ 
+       Awake_Count : Natural := 0;
+       --  Number of tasks directly dependent on this task (including itself)
+       --  still "awake", i.e., are not terminated and not waiting on a
+       --  terminate alternative.
+       --
+       --  Invariant: Awake_Count <= Alive_Count
+ 
+       --  Protection: Self.L
+ 
+       --  Beginning of flags
+ 
+       Aborting : Boolean := False;
+       pragma Atomic (Aborting);
+       --  Self is in the process of aborting. While set, prevents multiple
+       --  abort signals from being sent by different aborter while abort
+       --  is acted upon. This is essential since an aborter which calls
+       --  Abort_To_Level could set the Pending_ATC_Level to yet a lower level
+       --  (than the current level), may be preempted and would send the
+       --  abort signal when resuming execution. At this point, the abortee
+       --  may have completed abort to the proper level such that the
+       --  signal (and resulting abort exception) are not handled any more.
+       --  In other words, the flag prevents a race between multiple aborters
+       --
+       --  Protection: protected by atomic access.
+ 
+       ATC_Hack : Boolean := False;
+       pragma Atomic (ATC_Hack);
+       --  ?????
+       --  Temporary fix, to allow Undefer_Abort to reset Aborting in the
+       --  handler for Abort_Signal that encloses an async. entry call.
+       --  For the longer term, this should be done via code in the
+       --  handler itself.
+ 
+       Callable : Boolean := True;
+       --  It is OK to call entries of this task
+ 
+       Dependents_Aborted : Boolean := False;
+       --  This is set to True by whichever task takes responsibility for
+       --  aborting the dependents of this task.
+       --
+       --  Protection: Self.L
+ 
+       Interrupt_Entry : Boolean := False;
+       --  Indicates if one or more Interrupt Entries are attached to the task.
+       --  This flag is needed for cleaning up the Interrupt Entry bindings.
+ 
+       Pending_Action : Boolean := False;
+       --  Unified flag indicating some action needs to be take when abort
+       --  next becomes undeferred. Currently set if:
+       --  . Pending_Priority_Change is set
+       --  . Pending_ATC_Level is changed
+       --  . Requeue involving POs
+       --    (Abortable field may have changed and the Wait_Until_Abortable
+       --     has to recheck the abortable status of the call.)
+       --  . Exception_To_Raise is non-null
+       --
+       --  Protection: Self.L
+       --
+       --  This should never be reset back to False outside of the procedure
+       --  Do_Pending_Action, which is called by Undefer_Abort. It should only
+       --  be set to True by Set_Priority and Abort_To_Level.
+ 
+       Pending_Priority_Change : Boolean := False;
+       --  Flag to indicate pending priority change (for dynamic priorities
+       --  package). The base priority is updated on the next abort
+       --  completion point (aka. synchronization point).
+       --
+       --  Protection: Self.L
+ 
+       Terminate_Alternative : Boolean := False;
+       --  Task is accepting Select with Terminate Alternative
+       --
+       --  Protection: Self.L
+ 
+       --  End of flags
+ 
+       --  Beginning of counts
+ 
+       ATC_Nesting_Level : ATC_Level := 1;
+       --  The dynamic level of ATC nesting (currently executing nested
+       --  asynchronous select statements) in this task.
+ 
+       --  Protection: Self_ID.L. Only Self reads or updates this field.
+       --  Decrementing it deallocates an Entry_Calls component, and care must
+       --  be taken that all references to that component are eliminated before
+       --  doing the decrement. This in turn will require locking a protected
+       --  object (for a protected entry call) or the Acceptor's lock (for a
+       --  task entry call). No other task should attempt to read or modify
+       --  this value.
+ 
+       Deferral_Level : Natural := 1;
+       --  This is the number of times that Defer_Abort has been called by
+       --  this task without a matching Undefer_Abort call. Abortion is only
+       --  allowed when this zero. It is initially 1, to protect the task at
+       --  startup.
+ 
+       --  Protection: Only updated by Self; access assumed to be atomic
+ 
+       Pending_ATC_Level : ATC_Level_Base := ATC_Level_Infinity;
+       --  The ATC level to which this task is currently being aborted. If the
+       --  value is zero, the entire task has "completed". That may be via
+       --  abort, exception propagation, or normal exit. If the value is
+       --  ATC_Level_Infinity, the task is not being aborted to any level. If
+       --  the value is positive, the task has not completed. This should ONLY
+       --  be modified by Abort_To_Level and Exit_One_ATC_Level.
+       --
+       --  Protection: Self.L
+ 
+       Serial_Number : Task_Serial_Number;
+       --  Monotonic counter to provide some way to check locking rules/ordering
+ 
+       Known_Tasks_Index : Integer := -1;
+       --  Index in the System.Tasking.Debug.Known_Tasks array
+ 
+       User_State : Long_Integer := 0;
+       --  User-writeable location, for use in debugging tasks; also provides a
+       --  simple task specific data.
+ 
+       Free_On_Termination : Boolean := False;
+       --  Deallocate the ATCB when the task terminates. This flag is normally
+       --  False, and is set True when Unchecked_Deallocation is called on a
+       --  non-terminated task so that the associated storage is automatically
+       --  reclaimed when the task terminates.
+ 
+       Attributes : Attribute_Array := (others => 0);
+       --  Task attributes
+ 
+       --  IMPORTANT Note: the Entry_Queues field is last for efficiency of
+       --  access to other fields, do not put new fields after this one.
+ 
+       Entry_Queues : Task_Entry_Queue_Array (1 .. Entry_Num);
+       --  An array of task entry queues
+       --
+       --  Protection: Self.L. Once a task has set Self.Stage to Completing, it
+       --  has exclusive access to this field.
+    end record;
+ 
+    --------------------
+    -- Initialization --
+    --------------------
+ 
+    procedure Initialize;
+    --  This procedure constitutes the first part of the initialization of the
+    --  GNARL. This includes creating data structures to make the initial thread
+    --  into the environment task. The last part of the initialization is done
+    --  in System.Tasking.Initialization or System.Tasking.Restricted.Stages.
+    --  All the initializations used to be in Tasking.Initialization, but this
+    --  is no longer possible with the run time simplification (including
+    --  optimized PO and the restricted run time) since one cannot rely on
+    --  System.Tasking.Initialization being present, as was done before.
+ 
+    procedure Initialize_ATCB
+      (Self_ID              : Task_Id;
+       Task_Entry_Point     : Task_Procedure_Access;
+       Task_Arg             : System.Address;
+       Parent               : Task_Id;
+       Elaborated           : Access_Boolean;
+       Base_Priority        : System.Any_Priority;
+       Base_CPU             : System.Multiprocessors.CPU_Range;
+       Domain               : Dispatching_Domain_Access;
+       Task_Info            : System.Task_Info.Task_Info_Type;
+       Stack_Size           : System.Parameters.Size_Type;
+       T                    : Task_Id;
+       Success              : out Boolean);
+    --  Initialize fields of the TCB for task T, and link into global TCB
+    --  structures. Call this only with abort deferred and holding RTS_Lock.
+    --  Self_ID is the calling task (normally the activator of T). Success is
+    --  set to indicate whether the TCB was successfully initialized.
+ 
+ private
+ 
+    Null_Task : constant Task_Id := null;
+ 
+    type Activation_Chain is limited record
+       T_ID : Task_Id;
+    end record;
+ 
+    --  Activation_Chain is an in-out parameter of initialization procedures and
+    --  it must be passed by reference because the init proc may terminate
+    --  abnormally after creating task components, and these must be properly
+    --  registered for removal (Expunge_Unactivated_Tasks). The "limited" forces
+    --  Activation_Chain to be a by-reference type; see RM-6.2(4).
+ 
+    function Number_Of_Entries (Self_Id : Task_Id) return Entry_Index;
+    --  Given a task, return the number of entries it contains
+ end System.Tasking;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-taspri__dummy.ads gcc-8.1.0/gcc/ada/libgnarl/s-taspri__dummy.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-taspri__dummy.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-taspri__dummy.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,62 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                 S Y S T E M . T A S K _ P R I M I T I V E S              --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --          Copyright (C) 1991-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is a no tasking version of this package
+ 
+ pragma Polling (Off);
+ --  Turn off polling, we do not want ATC polling to take place during tasking
+ --  operations. It causes infinite loops and other problems.
+ 
+ package System.Task_Primitives is
+    pragma Preelaborate;
+ 
+    type Lock is new Integer;
+ 
+    type RTS_Lock is new Integer;
+ 
+    type Suspension_Object is new Integer;
+ 
+    type Task_Body_Access is access procedure;
+ 
+    type Private_Data is limited record
+       Thread : aliased Integer;
+       CV     : aliased Integer;
+       L      : aliased RTS_Lock;
+    end record;
+ 
+    subtype Task_Address is System.Address;
+    Task_Address_Size : constant := Standard'Address_Size;
+    --  Type used for task addresses and its size
+ 
+    Alternate_Stack_Size : constant := 0;
+    --  No alternate signal stack is used on this platform
+ 
+ end System.Task_Primitives;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-taspri__hpux-dce.ads gcc-8.1.0/gcc/ada/libgnarl/s-taspri__hpux-dce.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-taspri__hpux-dce.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-taspri__hpux-dce.ads	Mon Sep 11 09:18:42 2017
***************
*** 0 ****
--- 1,115 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                  GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                --
+ --                                                                          --
+ --                 S Y S T E M . T A S K _ P R I M I T I V E S              --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --          Copyright (C) 1991-2014, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is a HP-UX version of this package
+ 
+ --  This package provides low-level support for most tasking features
+ 
+ pragma Polling (Off);
+ --  Turn off polling, we do not want ATC polling to take place during tasking
+ --  operations. It causes infinite loops and other problems.
+ 
+ with System.OS_Interface;
+ 
+ package System.Task_Primitives is
+    pragma Preelaborate;
+ 
+    type Lock is limited private;
+    --  Should be used for implementation of protected objects
+ 
+    type RTS_Lock is limited private;
+    --  Should be used inside the runtime system. The difference between Lock
+    --  and the RTS_Lock is that the later one serves only as a semaphore so
+    --  that do not check for ceiling violations.
+ 
+    type Suspension_Object is limited private;
+    --  Should be used for the implementation of Ada.Synchronous_Task_Control
+ 
+    type Task_Body_Access is access procedure;
+    --  Pointer to the task body's entry point (or possibly a wrapper
+    --  declared local to the GNARL).
+ 
+    type Private_Data is limited private;
+    --  Any information that the GNULLI needs maintained on a per-task basis.
+    --  A component of this type is guaranteed to be included in the
+    --  Ada_Task_Control_Block.
+ 
+    subtype Task_Address is System.Address;
+    Task_Address_Size : constant := Standard'Address_Size;
+    --  Type used for task addresses and its size
+ 
+    Alternate_Stack_Size : constant := 0;
+    --  No alternate signal stack is used on this platform
+ 
+ private
+    type Lock is record
+       L              : aliased System.OS_Interface.pthread_mutex_t;
+       Priority       : Integer;
+       Owner_Priority : Integer;
+    end record;
+ 
+    type RTS_Lock is new System.OS_Interface.pthread_mutex_t;
+ 
+    type Suspension_Object is record
+       State   : Boolean;
+       pragma Atomic (State);
+       --  Boolean that indicates whether the object is open. This field is
+       --  marked Atomic to ensure that we can read its value without locking
+       --  the access to the Suspension_Object.
+ 
+       Waiting : Boolean;
+       --  Flag showing if there is a task already suspended on this object
+ 
+       L : aliased System.OS_Interface.pthread_mutex_t;
+       --  Protection for ensuring mutual exclusion on the Suspension_Object
+ 
+       CV : aliased System.OS_Interface.pthread_cond_t;
+       --  Condition variable used to queue threads until condition is signaled
+    end record;
+ 
+    type Private_Data is record
+       Thread : aliased System.OS_Interface.pthread_t;
+       --  pragma Atomic (Thread);
+       --  Unfortunately, the above fails because Thread is 64 bits.
+ 
+       --  Thread field may be updated by two different threads of control.
+       --  (See, Enter_Task and Create_Task in s-taprop.adb). They put the
+       --  same value (thr_self value). We do not want to use lock on those
+       --  operations and the only thing we have to make sure is that they
+       --  are updated in atomic fashion.
+ 
+       CV : aliased System.OS_Interface.pthread_cond_t;
+ 
+       L : aliased RTS_Lock;
+       --  Protection for all components is lock L
+    end record;
+ 
+ end System.Task_Primitives;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-taspri__lynxos.ads gcc-8.1.0/gcc/ada/libgnarl/s-taspri__lynxos.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-taspri__lynxos.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-taspri__lynxos.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,118 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --               S Y S T E M . T A S K _ P R I M I T I V E S                --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --            Copyright (C) 1991-2017, Florida State University             --
+ --                     Copyright (C) 1995-2018, AdaCore                     --
+ --                                                                          --
+ -- GNAT is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is LynxOS Family version of this package.
+ 
+ pragma Polling (Off);
+ --  Turn off polling, we do not want ATC polling to take place during tasking
+ --  operations. It causes infinite loops and other problems.
+ 
+ with System.OS_Interface;
+ 
+ package System.Task_Primitives is
+    pragma Preelaborate;
+ 
+    type Lock is limited private;
+    --  Should be used for implementation of protected objects
+ 
+    type RTS_Lock is limited private;
+    --  Should be used inside the runtime system. The difference between Lock
+    --  and the RTS_Lock is that the latter serves only as a semaphore so that
+    --  we do not check for ceiling violations.
+ 
+    type Suspension_Object is limited private;
+    --  Should be used for the implementation of Ada.Synchronous_Task_Control
+ 
+    type Task_Body_Access is access procedure;
+    --  Pointer to the task body's entry point (or possibly a wrapper declared
+    --  local to the GNARL).
+ 
+    type Private_Data is limited private;
+    --  Any information that the GNULLI needs maintained on a per-task basis.
+    --  A component of this type is guaranteed to be included in the
+    --  Ada_Task_Control_Block.
+ 
+    subtype Task_Address is System.Address;
+    Task_Address_Size : constant := Standard'Address_Size;
+    --  Type used for task addresses and its size
+ 
+    Alternate_Stack_Size : constant := System.OS_Interface.Alternate_Stack_Size;
+    --  Import value from System.OS_Interface
+ 
+ private
+ 
+    type Lock is record
+       RW : aliased System.OS_Interface.pthread_rwlock_t;
+       WO : aliased System.OS_Interface.pthread_mutex_t;
+    end record;
+ 
+    type RTS_Lock is new System.OS_Interface.pthread_mutex_t;
+ 
+    type Suspension_Object is record
+       State : Boolean;
+       pragma Atomic (State);
+       --  Boolean that indicates whether the object is open. This field is
+       --  marked Atomic to ensure that we can read its value without locking
+       --  the access to the Suspension_Object.
+ 
+       Waiting : Boolean;
+       --  Flag showing if there is a task already suspended on this object
+ 
+       L : aliased System.OS_Interface.pthread_mutex_t;
+       --  Protection for ensuring mutual exclusion on the Suspension_Object
+ 
+       CV : aliased System.OS_Interface.pthread_cond_t;
+       --  Condition variable used to queue threads until condition is signaled
+    end record;
+ 
+    type Private_Data is limited record
+       Thread : aliased System.OS_Interface.pthread_t;
+       pragma Atomic (Thread);
+       --  Thread field may be updated by two different threads of control.
+       --  (See, Enter_Task and Create_Task in s-taprop.adb). They put the same
+       --  value (thr_self value). We do not want to use lock on those
+       --  operations and the only thing we have to make sure is that they are
+       --  updated in atomic fashion.
+ 
+       LWP : aliased System.OS_Interface.pthread_t;
+       --  The purpose of this field is to provide a better tasking support on
+       --  gdb. The order of the two first fields (Thread and LWP) is important.
+       --  On targets where lwp is not relevant, this is equivalent to Thread.
+ 
+       CV : aliased System.OS_Interface.pthread_cond_t;
+       --  Should be commented ??? (in all versions of taspri)
+ 
+       L : aliased RTS_Lock;
+       --  Protection for all components is lock L
+    end record;
+ 
+ end System.Task_Primitives;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-taspri__mingw.ads gcc-8.1.0/gcc/ada/libgnarl/s-taspri__mingw.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-taspri__mingw.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-taspri__mingw.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,119 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                 S Y S T E M . T A S K _ P R I M I T I V E S              --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --          Copyright (C) 1991-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is a NT (native) version of this package
+ 
+ pragma Polling (Off);
+ --  Turn off polling, we do not want ATC polling to take place during tasking
+ --  operations. It causes infinite loops and other problems.
+ 
+ with System.OS_Interface;
+ with System.Win32;
+ 
+ package System.Task_Primitives is
+    pragma Preelaborate;
+ 
+    type Lock is limited private;
+    --  Should be used for implementation of protected objects
+ 
+    type RTS_Lock is limited private;
+    --  Should be used inside the runtime system. The difference between Lock
+    --  and the RTS_Lock is that the later one serves only as a semaphore so
+    --  that do not check for ceiling violations.
+ 
+    type Suspension_Object is limited private;
+    --  Should be used for the implementation of Ada.Synchronous_Task_Control
+ 
+    type Task_Body_Access is access procedure;
+    --  Pointer to the task body's entry point (or possibly a wrapper
+    --  declared local to the GNARL).
+ 
+    type Private_Data is limited private;
+    --  Any information that the GNULLI needs maintained on a per-task basis.
+    --  A component of this type is guaranteed to be included in the
+    --  Ada_Task_Control_Block.
+ 
+    subtype Task_Address is System.Address;
+    Task_Address_Size : constant := Standard'Address_Size;
+    --  Type used for task addresses and its size
+ 
+    Alternate_Stack_Size : constant := 0;
+    --  No alternate signal stack is used on this platform
+ 
+ private
+ 
+    type Lock is record
+       Mutex          : aliased System.OS_Interface.CRITICAL_SECTION;
+       Priority       : Integer;
+       Owner_Priority : Integer;
+    end record;
+ 
+    type Condition_Variable is new System.Win32.HANDLE;
+ 
+    type RTS_Lock is new System.OS_Interface.CRITICAL_SECTION;
+ 
+    type Suspension_Object is record
+       State : Boolean;
+       pragma Atomic (State);
+       --  Boolean that indicates whether the object is open. This field is
+       --  marked Atomic to ensure that we can read its value without locking
+       --  the access to the Suspension_Object.
+ 
+       Waiting : Boolean;
+       --  Flag showing if there is a task already suspended on this object
+ 
+       L : aliased System.OS_Interface.CRITICAL_SECTION;
+       --  Protection for ensuring mutual exclusion on the Suspension_Object
+ 
+       CV : aliased Win32.HANDLE;
+       --  Condition variable used to queue threads until condition is signaled
+    end record;
+ 
+    type Private_Data is limited record
+       Thread : aliased Win32.HANDLE;
+       pragma Atomic (Thread);
+       --  Thread field may be updated by two different threads of control.
+       --  (See, Enter_Task and Create_Task in s-taprop.adb).
+       --  They put the same value (thr_self value). We do not want to
+       --  use lock on those operations and the only thing we have to
+       --  make sure is that they are updated in atomic fashion.
+ 
+       Thread_Id : aliased Win32.DWORD;
+       --  Used to provide a better tasking support in gdb
+ 
+       CV : aliased Condition_Variable;
+       --  Condition Variable used to implement Sleep/Wakeup
+ 
+       L : aliased RTS_Lock;
+       --  Protection for all components is lock L
+    end record;
+ 
+ end System.Task_Primitives;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-taspri__posix-noaltstack.ads gcc-8.1.0/gcc/ada/libgnarl/s-taspri__posix-noaltstack.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-taspri__posix-noaltstack.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-taspri__posix-noaltstack.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,121 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                  GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                --
+ --                                                                          --
+ --                 S Y S T E M . T A S K _ P R I M I T I V E S              --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --             Copyright (C) 1991-2017, Florida State University            --
+ --                     Copyright (C) 1995-2018, AdaCore                     --
+ --                                                                          --
+ -- GNAT is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is a POSIX-like version of this package where no alternate stack
+ --  is needed for stack checking.
+ 
+ --  Note: this file can only be used for POSIX compliant systems
+ 
+ pragma Polling (Off);
+ --  Turn off polling, we do not want ATC polling to take place during tasking
+ --  operations. It causes infinite loops and other problems.
+ 
+ with System.OS_Interface;
+ 
+ package System.Task_Primitives is
+    pragma Preelaborate;
+ 
+    type Lock is limited private;
+    --  Should be used for implementation of protected objects
+ 
+    type RTS_Lock is limited private;
+    --  Should be used inside the runtime system. The difference between Lock
+    --  and the RTS_Lock is that the later one serves only as a semaphore so
+    --  that do not check for ceiling violations.
+ 
+    type Suspension_Object is limited private;
+    --  Should be used for the implementation of Ada.Synchronous_Task_Control
+ 
+    type Task_Body_Access is access procedure;
+    --  Pointer to the task body's entry point (or possibly a wrapper declared
+    --  local to the GNARL).
+ 
+    type Private_Data is limited private;
+    --  Any information that the GNULLI needs maintained on a per-task basis.
+    --  A component of this type is guaranteed to be included in the
+    --  Ada_Task_Control_Block.
+ 
+    subtype Task_Address is System.Address;
+    Task_Address_Size : constant := Standard'Address_Size;
+    --  Type used for task addresses and its size
+ 
+    Alternate_Stack_Size : constant := 0;
+    --  No alternate signal stack is used on this platform
+ 
+ private
+ 
+    type RTS_Lock is new System.OS_Interface.pthread_mutex_t;
+ 
+    type Lock is record
+       WO : aliased RTS_Lock;
+       RW : aliased System.OS_Interface.pthread_rwlock_t;
+    end record;
+ 
+    type Suspension_Object is record
+       State : Boolean;
+       pragma Atomic (State);
+       --  Boolean that indicates whether the object is open. This field is
+       --  marked Atomic to ensure that we can read its value without locking
+       --  the access to the Suspension_Object.
+ 
+       Waiting : Boolean;
+       --  Flag showing if there is a task already suspended on this object
+ 
+       L : aliased RTS_Lock;
+       --  Protection for ensuring mutual exclusion on the Suspension_Object
+ 
+       CV : aliased System.OS_Interface.pthread_cond_t;
+       --  Condition variable used to queue threads until condition is signaled
+    end record;
+ 
+    type Private_Data is limited record
+       Thread : aliased System.OS_Interface.pthread_t;
+       pragma Atomic (Thread);
+       --  Thread field may be updated by two different threads of control.
+       --  (See, Enter_Task and Create_Task in s-taprop.adb). They put the same
+       --  value (thr_self value). We do not want to use lock on those
+       --  operations and the only thing we have to make sure is that they are
+       --  updated in atomic fashion.
+ 
+       LWP : aliased System.Address;
+       --  The purpose of this field is to provide a better tasking support on
+       --  gdb. The order of the two first fields (Thread and LWP) is important.
+       --  On targets where lwp is not relevant, this is equivalent to Thread.
+ 
+       CV : aliased System.OS_Interface.pthread_cond_t;
+       --  Should be commented ??? (in all versions of taspri)
+ 
+       L : aliased RTS_Lock;
+       --  Protection for all components is lock L
+    end record;
+ 
+ end System.Task_Primitives;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-taspri__posix.ads gcc-8.1.0/gcc/ada/libgnarl/s-taspri__posix.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-taspri__posix.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-taspri__posix.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,120 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --               S Y S T E M . T A S K _ P R I M I T I V E S                --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --            Copyright (C) 1991-2017, Florida State University             --
+ --                     Copyright (C) 1995-2018, AdaCore                     --
+ --                                                                          --
+ -- GNAT is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is a POSIX-like version of this package
+ 
+ --  Note: this file can only be used for POSIX compliant systems
+ 
+ pragma Polling (Off);
+ --  Turn off polling, we do not want ATC polling to take place during tasking
+ --  operations. It causes infinite loops and other problems.
+ 
+ with System.OS_Interface;
+ 
+ package System.Task_Primitives is
+    pragma Preelaborate;
+ 
+    type Lock is limited private;
+    --  Should be used for implementation of protected objects
+ 
+    type RTS_Lock is limited private;
+    --  Should be used inside the runtime system. The difference between Lock
+    --  and the RTS_Lock is that the latter serves only as a semaphore so that
+    --  we do not check for ceiling violations.
+ 
+    type Suspension_Object is limited private;
+    --  Should be used for the implementation of Ada.Synchronous_Task_Control
+ 
+    type Task_Body_Access is access procedure;
+    --  Pointer to the task body's entry point (or possibly a wrapper declared
+    --  local to the GNARL).
+ 
+    type Private_Data is limited private;
+    --  Any information that the GNULLI needs maintained on a per-task basis.
+    --  A component of this type is guaranteed to be included in the
+    --  Ada_Task_Control_Block.
+ 
+    subtype Task_Address is System.Address;
+    Task_Address_Size : constant := Standard'Address_Size;
+    --  Type used for task addresses and its size
+ 
+    Alternate_Stack_Size : constant := System.OS_Interface.Alternate_Stack_Size;
+    --  Import value from System.OS_Interface
+ 
+ private
+ 
+    type RTS_Lock is new System.OS_Interface.pthread_mutex_t;
+ 
+    type Lock is record
+       RW : aliased System.OS_Interface.pthread_rwlock_t;
+       WO : aliased RTS_Lock;
+    end record;
+ 
+    type Suspension_Object is record
+       State : Boolean;
+       pragma Atomic (State);
+       --  Boolean that indicates whether the object is open. This field is
+       --  marked Atomic to ensure that we can read its value without locking
+       --  the access to the Suspension_Object.
+ 
+       Waiting : Boolean;
+       --  Flag showing if there is a task already suspended on this object
+ 
+       L : aliased RTS_Lock;
+       --  Protection for ensuring mutual exclusion on the Suspension_Object
+ 
+       CV : aliased System.OS_Interface.pthread_cond_t;
+       --  Condition variable used to queue threads until condition is signaled
+    end record;
+ 
+    type Private_Data is limited record
+       Thread : aliased System.OS_Interface.pthread_t;
+       pragma Atomic (Thread);
+       --  Thread field may be updated by two different threads of control.
+       --  (See, Enter_Task and Create_Task in s-taprop.adb). They put the same
+       --  value (thr_self value). We do not want to use lock on those
+       --  operations and the only thing we have to make sure is that they are
+       --  updated in atomic fashion.
+ 
+       LWP : aliased System.Address;
+       --  The purpose of this field is to provide a better tasking support on
+       --  gdb. The order of the two first fields (Thread and LWP) is important.
+       --  On targets where lwp is not relevant, this is equivalent to Thread.
+ 
+       CV : aliased System.OS_Interface.pthread_cond_t;
+       --  Should be commented ??? (in all versions of taspri)
+ 
+       L : aliased RTS_Lock;
+       --  Protection for all components is lock L
+    end record;
+ 
+ end System.Task_Primitives;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-taspri__solaris.ads gcc-8.1.0/gcc/ada/libgnarl/s-taspri__solaris.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-taspri__solaris.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-taspri__solaris.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,151 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                  GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                --
+ --                                                                          --
+ --                 S Y S T E M . T A S K _ P R I M I T I V E S              --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is a Solaris version of this package
+ 
+ --  This package provides low-level support for most tasking features
+ 
+ pragma Polling (Off);
+ --  Turn off polling, we do not want ATC polling to take place during tasking
+ --  operations. It causes infinite loops and other problems.
+ 
+ with Ada.Unchecked_Conversion;
+ 
+ with System.OS_Interface;
+ 
+ package System.Task_Primitives is
+    pragma Preelaborate;
+ 
+    type Lock is limited private;
+    type Lock_Ptr is access all Lock;
+    --  Should be used for implementation of protected objects
+ 
+    type RTS_Lock is limited private;
+    type RTS_Lock_Ptr is access all RTS_Lock;
+    --  Should be used inside the runtime system. The difference between Lock
+    --  and the RTS_Lock is that the later one serves only as a semaphore so
+    --  that do not check for ceiling violations.
+ 
+    function To_Lock_Ptr is
+      new Ada.Unchecked_Conversion (RTS_Lock_Ptr, Lock_Ptr);
+ 
+    type Suspension_Object is limited private;
+    --  Should be used for the implementation of Ada.Synchronous_Task_Control
+ 
+    type Task_Body_Access is access procedure;
+    --  Pointer to the task body's entry point (or possibly a wrapper
+    --  declared local to the GNARL).
+ 
+    type Private_Data is limited private;
+    --  Any information that the GNULLI needs maintained on a per-task basis.
+    --  A component of this type is guaranteed to be included in the
+    --  Ada_Task_Control_Block.
+ 
+    subtype Task_Address is System.Address;
+    Task_Address_Size : constant := Standard'Address_Size;
+    --  Type used for task addresses and its size
+ 
+    Alternate_Stack_Size : constant := 0;
+    --  No alternate signal stack is used on this platform
+ 
+ private
+ 
+    type Private_Task_Serial_Number is mod 2 ** Long_Long_Integer'Size;
+    --  Used to give each task a unique serial number
+ 
+    type Base_Lock is new System.OS_Interface.mutex_t;
+ 
+    type Owner_Int is new Integer;
+    for Owner_Int'Alignment use Standard'Maximum_Alignment;
+ 
+    type Owner_ID is access all Owner_Int;
+ 
+    function To_Owner_ID is
+      new Ada.Unchecked_Conversion (System.Address, Owner_ID);
+ 
+    type Lock is record
+       L              : aliased Base_Lock;
+       Ceiling        : System.Any_Priority := System.Any_Priority'First;
+       Saved_Priority : System.Any_Priority := System.Any_Priority'First;
+       Owner          : Owner_ID;
+       Next           : Lock_Ptr;
+       Level          : Private_Task_Serial_Number := 0;
+       Buddy          : Owner_ID;
+       Frozen         : Boolean := False;
+    end record;
+ 
+    type RTS_Lock is new Lock;
+ 
+    type Suspension_Object is record
+       State : Boolean;
+       pragma Atomic (State);
+       --  Boolean that indicates whether the object is open. This field is
+       --  marked Atomic to ensure that we can read its value without locking
+       --  the access to the Suspension_Object.
+ 
+       Waiting : Boolean;
+       --  Flag showing if there is a task already suspended on this object
+ 
+       L : aliased System.OS_Interface.mutex_t;
+       --  Protection for ensuring mutual exclusion on the Suspension_Object
+ 
+       CV : aliased System.OS_Interface.cond_t;
+       --  Condition variable used to queue threads until condition is signaled
+    end record;
+ 
+    --  Note that task support on gdb relies on the fact that the first two
+    --  fields of Private_Data are Thread and LWP.
+ 
+    type Private_Data is limited record
+       Thread : aliased System.OS_Interface.thread_t;
+       pragma Atomic (Thread);
+       --  Thread field may be updated by two different threads of control.
+       --  (See, Enter_Task and Create_Task in s-taprop.adb). They put the same
+       --  value (thr_self value). We do not want to use lock on those
+       --  operations and the only thing we have to make sure is that they are
+       --  updated in atomic fashion.
+ 
+       LWP : System.OS_Interface.lwpid_t;
+       --  The LWP id of the thread. Set by self in Enter_Task
+ 
+       CV : aliased System.OS_Interface.cond_t;
+       L  : aliased RTS_Lock;
+       --  Protection for all components is lock L
+ 
+       Active_Priority : System.Any_Priority := System.Any_Priority'First;
+       --  Simulated active priority, used iff Priority_Ceiling_Support is True
+ 
+       Locking : Lock_Ptr;
+       Locks   : Lock_Ptr;
+       Wakeups : Natural := 0;
+    end record;
+ 
+ end System.Task_Primitives;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-taspri__vxworks.ads gcc-8.1.0/gcc/ada/libgnarl/s-taspri__vxworks.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-taspri__vxworks.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-taspri__vxworks.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,121 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                  GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                --
+ --                                                                          --
+ --                 S Y S T E M . T A S K _ P R I M I T I V E S              --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --          Copyright (C) 2001-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is a VxWorks version of this package
+ 
+ pragma Polling (Off);
+ --  Turn off polling, we do not want ATC polling to take place during tasking
+ --  operations. It causes infinite loops and other problems.
+ 
+ with System.OS_Interface;
+ 
+ package System.Task_Primitives is
+    pragma Preelaborate;
+ 
+    type Lock is limited private;
+    --  Should be used for implementation of protected objects
+ 
+    type RTS_Lock is limited private;
+    --  Should be used inside the runtime system. The difference between Lock
+    --  and the RTS_Lock is that the later one serves only as a semaphore so
+    --  that do not check for ceiling violations.
+ 
+    type Suspension_Object is limited private;
+    --  Should be used for the implementation of Ada.Synchronous_Task_Control
+ 
+    type Task_Body_Access is access procedure;
+    --  Pointer to the task body's entry point (or possibly a wrapper
+    --  declared local to the GNARL).
+ 
+    type Private_Data is limited private;
+    --  Any information that the GNULLI needs maintained on a per-task basis.
+    --  A component of this type is guaranteed to be included in the
+    --  Ada_Task_Control_Block.
+ 
+    subtype Task_Address is System.Address;
+    Task_Address_Size : constant := Standard'Address_Size;
+    --  Type used for task addresses and its size
+ 
+    Alternate_Stack_Size : constant := 0;
+    --  No alternate signal stack is used on this platform
+ 
+ private
+ 
+    type Priority_Type is (Prio_None, Prio_Protect, Prio_Inherit);
+ 
+    type Lock is record
+       Mutex    : System.OS_Interface.SEM_ID;
+       Protocol : Priority_Type;
+ 
+       Prio_Ceiling : System.OS_Interface.int;
+       --  Priority ceiling of lock
+    end record;
+ 
+    type RTS_Lock is new Lock;
+ 
+    type Suspension_Object is record
+       State : Boolean;
+       pragma Atomic (State);
+       --  Boolean that indicates whether the object is open. This field is
+       --  marked Atomic to ensure that we can read its value without locking
+       --  the access to the Suspension_Object.
+ 
+       Waiting : Boolean;
+       --  Flag showing if there is a task already suspended on this object
+ 
+       L : aliased System.OS_Interface.SEM_ID;
+       --  Protection for ensuring mutual exclusion on the Suspension_Object
+ 
+       CV : aliased System.OS_Interface.SEM_ID;
+       --  Condition variable used to queue threads until condition is signaled
+    end record;
+ 
+    type Private_Data is limited record
+       Thread : aliased System.OS_Interface.t_id := 0;
+       pragma Atomic (Thread);
+       --  Thread field may be updated by two different threads of control.
+       --  (See, Enter_Task and Create_Task in s-taprop.adb).
+       --  They put the same value (thr_self value). We do not want to
+       --  use lock on those operations and the only thing we have to
+       --  make sure is that they are updated in atomic fashion.
+ 
+       LWP : aliased System.OS_Interface.t_id := 0;
+       --  The purpose of this field is to provide a better tasking support on
+       --  gdb. The order of the two first fields (Thread and LWP) is important.
+       --  On targets where lwp is not relevant, this is equivalent to Thread.
+ 
+       CV : aliased System.OS_Interface.SEM_ID;
+ 
+       L  : aliased RTS_Lock;
+       --  Protection for all components is lock L
+    end record;
+ 
+ end System.Task_Primitives;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-tasque.adb gcc-8.1.0/gcc/ada/libgnarl/s-tasque.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-tasque.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-tasque.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,625 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                  GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                --
+ --                                                                          --
+ --                 S Y S T E M . T A S K I N G . Q U E U I N G              --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --         Copyright (C) 1992-2018, Free Software Foundation, Inc.          --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This version of the body implements queueing policy according to the policy
+ --  specified by the pragma Queuing_Policy. When no such pragma is specified
+ --  FIFO policy is used as default.
+ 
+ with System.Task_Primitives.Operations;
+ with System.Tasking.Initialization;
+ with System.Parameters;
+ 
+ package body System.Tasking.Queuing is
+ 
+    use Parameters;
+    use Task_Primitives.Operations;
+    use Protected_Objects;
+    use Protected_Objects.Entries;
+ 
+    --  Entry Queues implemented as doubly linked list
+ 
+    Queuing_Policy : Character;
+    pragma Import (C, Queuing_Policy, "__gl_queuing_policy");
+ 
+    Priority_Queuing : constant Boolean := Queuing_Policy = 'P';
+ 
+    procedure Send_Program_Error
+      (Self_ID    : Task_Id;
+       Entry_Call : Entry_Call_Link);
+    --  Raise Program_Error in the caller of the specified entry call
+ 
+    function Check_Queue (E : Entry_Queue) return Boolean;
+    --  Check the validity of E.
+    --  Return True if E is valid, raise Assert_Failure if assertions are
+    --  enabled and False otherwise.
+ 
+    -----------------------------
+    -- Broadcast_Program_Error --
+    -----------------------------
+ 
+    procedure Broadcast_Program_Error
+      (Self_ID      : Task_Id;
+       Object       : Protection_Entries_Access;
+       Pending_Call : Entry_Call_Link;
+       RTS_Locked   : Boolean := False)
+    is
+       Entry_Call : Entry_Call_Link;
+    begin
+       if Single_Lock and then not RTS_Locked then
+          Lock_RTS;
+       end if;
+ 
+       if Pending_Call /= null then
+          Send_Program_Error (Self_ID, Pending_Call);
+       end if;
+ 
+       for E in Object.Entry_Queues'Range loop
+          Dequeue_Head (Object.Entry_Queues (E), Entry_Call);
+ 
+          while Entry_Call /= null loop
+             pragma Assert (Entry_Call.Mode /= Conditional_Call);
+ 
+             Send_Program_Error (Self_ID, Entry_Call);
+             Dequeue_Head (Object.Entry_Queues (E), Entry_Call);
+          end loop;
+       end loop;
+ 
+       if Single_Lock and then not RTS_Locked then
+          Unlock_RTS;
+       end if;
+    end Broadcast_Program_Error;
+ 
+    -----------------
+    -- Check_Queue --
+    -----------------
+ 
+    function Check_Queue (E : Entry_Queue) return Boolean is
+       Valid   : Boolean := True;
+       C, Prev : Entry_Call_Link;
+ 
+    begin
+       if E.Head = null then
+          if E.Tail /= null then
+             Valid := False;
+             pragma Assert (Valid);
+          end if;
+       else
+          if E.Tail = null
+            or else E.Tail.Next /= E.Head
+          then
+             Valid := False;
+             pragma Assert (Valid);
+ 
+          else
+             C := E.Head;
+ 
+             loop
+                Prev := C;
+                C := C.Next;
+ 
+                if C = null then
+                   Valid := False;
+                   pragma Assert (Valid);
+                   exit;
+                end if;
+ 
+                if Prev /= C.Prev then
+                   Valid := False;
+                   pragma Assert (Valid);
+                   exit;
+                end if;
+ 
+                exit when C = E.Head;
+             end loop;
+ 
+             if Prev /= E.Tail then
+                Valid := False;
+                pragma Assert (Valid);
+             end if;
+          end if;
+       end if;
+ 
+       return Valid;
+    end Check_Queue;
+ 
+    -------------------
+    -- Count_Waiting --
+    -------------------
+ 
+    --  Return number of calls on the waiting queue of E
+ 
+    function Count_Waiting (E : Entry_Queue) return Natural is
+       Count   : Natural;
+       Temp    : Entry_Call_Link;
+ 
+    begin
+       pragma Assert (Check_Queue (E));
+ 
+       Count := 0;
+ 
+       if E.Head /= null then
+          Temp := E.Head;
+ 
+          loop
+             Count := Count + 1;
+             exit when E.Tail = Temp;
+             Temp := Temp.Next;
+          end loop;
+       end if;
+ 
+       return Count;
+    end Count_Waiting;
+ 
+    -------------
+    -- Dequeue --
+    -------------
+ 
+    --  Dequeue call from entry_queue E
+ 
+    procedure Dequeue (E : in out Entry_Queue; Call : Entry_Call_Link) is
+    begin
+       pragma Assert (Check_Queue (E));
+       pragma Assert (Call /= null);
+ 
+       --  If empty queue, simply return
+ 
+       if E.Head = null then
+          return;
+       end if;
+ 
+       pragma Assert (Call.Prev /= null);
+       pragma Assert (Call.Next /= null);
+ 
+       Call.Prev.Next := Call.Next;
+       Call.Next.Prev := Call.Prev;
+ 
+       if E.Head = Call then
+ 
+          --  Case of one element
+ 
+          if E.Tail = Call then
+             E.Head := null;
+             E.Tail := null;
+ 
+          --  More than one element
+ 
+          else
+             E.Head := Call.Next;
+          end if;
+ 
+       elsif E.Tail = Call then
+          E.Tail := Call.Prev;
+       end if;
+ 
+       --  Successfully dequeued
+ 
+       Call.Prev := null;
+       Call.Next := null;
+       pragma Assert (Check_Queue (E));
+    end Dequeue;
+ 
+    ------------------
+    -- Dequeue_Call --
+    ------------------
+ 
+    procedure Dequeue_Call (Entry_Call : Entry_Call_Link) is
+       Called_PO : Protection_Entries_Access;
+ 
+    begin
+       pragma Assert (Entry_Call /= null);
+ 
+       if Entry_Call.Called_Task /= null then
+          Dequeue
+            (Entry_Call.Called_Task.Entry_Queues
+              (Task_Entry_Index (Entry_Call.E)),
+            Entry_Call);
+ 
+       else
+          Called_PO := To_Protection (Entry_Call.Called_PO);
+          Dequeue (Called_PO.Entry_Queues
+              (Protected_Entry_Index (Entry_Call.E)),
+            Entry_Call);
+       end if;
+    end Dequeue_Call;
+ 
+    ------------------
+    -- Dequeue_Head --
+    ------------------
+ 
+    --  Remove and return the head of entry_queue E
+ 
+    procedure Dequeue_Head
+      (E    : in out Entry_Queue;
+       Call : out Entry_Call_Link)
+    is
+       Temp : Entry_Call_Link;
+ 
+    begin
+       pragma Assert (Check_Queue (E));
+       --  If empty queue, return null pointer
+ 
+       if E.Head = null then
+          Call := null;
+          return;
+       end if;
+ 
+       Temp := E.Head;
+ 
+       --  Case of one element
+ 
+       if E.Head = E.Tail then
+          E.Head := null;
+          E.Tail := null;
+ 
+       --  More than one element
+ 
+       else
+          pragma Assert (Temp /= null);
+          pragma Assert (Temp.Next /= null);
+          pragma Assert (Temp.Prev /= null);
+ 
+          E.Head := Temp.Next;
+          Temp.Prev.Next := Temp.Next;
+          Temp.Next.Prev := Temp.Prev;
+       end if;
+ 
+       --  Successfully dequeued
+ 
+       Temp.Prev := null;
+       Temp.Next := null;
+       Call := Temp;
+       pragma Assert (Check_Queue (E));
+    end Dequeue_Head;
+ 
+    -------------
+    -- Enqueue --
+    -------------
+ 
+    --  Enqueue call at the end of entry_queue E, for FIFO queuing policy.
+    --  Enqueue call priority ordered, FIFO at same priority level, for
+    --  Priority queuing policy.
+ 
+    procedure Enqueue (E : in out Entry_Queue; Call : Entry_Call_Link) is
+       Temp : Entry_Call_Link := E.Head;
+ 
+    begin
+       pragma Assert (Check_Queue (E));
+       pragma Assert (Call /= null);
+ 
+       --  Priority Queuing
+ 
+       if Priority_Queuing then
+          if Temp = null then
+             Call.Prev := Call;
+             Call.Next := Call;
+             E.Head := Call;
+             E.Tail := Call;
+ 
+          else
+             loop
+                --  Find the entry that the new guy should precede
+ 
+                exit when Call.Prio > Temp.Prio;
+                Temp := Temp.Next;
+ 
+                if Temp = E.Head then
+                   Temp := null;
+                   exit;
+                end if;
+             end loop;
+ 
+             if Temp = null then
+                --  Insert at tail
+ 
+                Call.Prev := E.Tail;
+                Call.Next := E.Head;
+                E.Tail := Call;
+ 
+             else
+                Call.Prev := Temp.Prev;
+                Call.Next := Temp;
+ 
+                --  Insert at head
+ 
+                if Temp = E.Head then
+                   E.Head := Call;
+                end if;
+             end if;
+ 
+             pragma Assert (Call.Prev /= null);
+             pragma Assert (Call.Next /= null);
+ 
+             Call.Prev.Next := Call;
+             Call.Next.Prev := Call;
+          end if;
+ 
+          pragma Assert (Check_Queue (E));
+          return;
+       end if;
+ 
+       --  FIFO Queuing
+ 
+       if E.Head = null then
+          E.Head := Call;
+       else
+          E.Tail.Next := Call;
+          Call.Prev   := E.Tail;
+       end if;
+ 
+       E.Head.Prev := Call;
+       E.Tail      := Call;
+       Call.Next   := E.Head;
+       pragma Assert (Check_Queue (E));
+    end Enqueue;
+ 
+    ------------------
+    -- Enqueue_Call --
+    ------------------
+ 
+    procedure Enqueue_Call (Entry_Call : Entry_Call_Link) is
+       Called_PO : Protection_Entries_Access;
+ 
+    begin
+       pragma Assert (Entry_Call /= null);
+ 
+       if Entry_Call.Called_Task /= null then
+          Enqueue
+            (Entry_Call.Called_Task.Entry_Queues
+               (Task_Entry_Index (Entry_Call.E)),
+            Entry_Call);
+ 
+       else
+          Called_PO := To_Protection (Entry_Call.Called_PO);
+          Enqueue (Called_PO.Entry_Queues
+              (Protected_Entry_Index (Entry_Call.E)),
+            Entry_Call);
+       end if;
+    end Enqueue_Call;
+ 
+    ----------
+    -- Head --
+    ----------
+ 
+    --  Return the head of entry_queue E
+ 
+    function Head (E : Entry_Queue) return Entry_Call_Link is
+    begin
+       pragma Assert (Check_Queue (E));
+       return E.Head;
+    end Head;
+ 
+    -------------
+    -- Onqueue --
+    -------------
+ 
+    --  Return True if Call is on any entry_queue at all
+ 
+    function Onqueue (Call : Entry_Call_Link) return Boolean is
+    begin
+       pragma Assert (Call /= null);
+ 
+       --  Utilize the fact that every queue is circular, so if Call
+       --  is on any queue at all, Call.Next must NOT be null.
+ 
+       return Call.Next /= null;
+    end Onqueue;
+ 
+    --------------------------------
+    -- Requeue_Call_With_New_Prio --
+    --------------------------------
+ 
+    procedure Requeue_Call_With_New_Prio
+      (Entry_Call : Entry_Call_Link; Prio : System.Any_Priority) is
+    begin
+       pragma Assert (Entry_Call /= null);
+ 
+       --  Perform a queue reordering only when the policy being used is the
+       --  Priority Queuing.
+ 
+       if Priority_Queuing then
+          if Onqueue (Entry_Call) then
+             Dequeue_Call (Entry_Call);
+             Entry_Call.Prio := Prio;
+             Enqueue_Call (Entry_Call);
+          end if;
+       end if;
+    end Requeue_Call_With_New_Prio;
+ 
+    ---------------------------------
+    -- Select_Protected_Entry_Call --
+    ---------------------------------
+ 
+    --  Select an entry of a protected object. Selection depends on the
+    --  queuing policy being used.
+ 
+    procedure Select_Protected_Entry_Call
+      (Self_ID : Task_Id;
+       Object  : Protection_Entries_Access;
+       Call    : out Entry_Call_Link)
+    is
+       Entry_Call  : Entry_Call_Link;
+       Temp_Call   : Entry_Call_Link;
+       Entry_Index : Protected_Entry_Index := Null_Entry; -- stop warning
+ 
+    begin
+       Entry_Call := null;
+ 
+       begin
+          --  Priority queuing case
+ 
+          if Priority_Queuing then
+             for J in Object.Entry_Queues'Range loop
+                Temp_Call := Head (Object.Entry_Queues (J));
+ 
+                if Temp_Call /= null
+                  and then
+                    Object.Entry_Bodies
+                      (Object.Find_Body_Index
+                        (Object.Compiler_Info, J)).
+                           Barrier (Object.Compiler_Info, J)
+                then
+                   if Entry_Call = null
+                     or else Entry_Call.Prio < Temp_Call.Prio
+                   then
+                      Entry_Call := Temp_Call;
+                      Entry_Index := J;
+                   end if;
+                end if;
+             end loop;
+ 
+          --  FIFO queueing case
+ 
+          else
+             for J in Object.Entry_Queues'Range loop
+                Temp_Call := Head (Object.Entry_Queues (J));
+ 
+                if Temp_Call /= null
+                  and then
+                    Object.Entry_Bodies
+                      (Object.Find_Body_Index
+                        (Object.Compiler_Info, J)).
+                           Barrier (Object.Compiler_Info, J)
+                then
+                   Entry_Call := Temp_Call;
+                   Entry_Index := J;
+                   exit;
+                end if;
+             end loop;
+          end if;
+ 
+       exception
+          when others =>
+             Broadcast_Program_Error (Self_ID, Object, null);
+       end;
+ 
+       --  If a call was selected, dequeue it and return it for service
+ 
+       if Entry_Call /= null then
+          Temp_Call := Entry_Call;
+          Dequeue_Head (Object.Entry_Queues (Entry_Index), Entry_Call);
+          pragma Assert (Temp_Call = Entry_Call);
+       end if;
+ 
+       Call := Entry_Call;
+    end Select_Protected_Entry_Call;
+ 
+    ----------------------------
+    -- Select_Task_Entry_Call --
+    ----------------------------
+ 
+    --  Select an entry for rendezvous. Selection depends on the queuing policy
+    --  being used.
+ 
+    procedure Select_Task_Entry_Call
+      (Acceptor         : Task_Id;
+       Open_Accepts     : Accept_List_Access;
+       Call             : out Entry_Call_Link;
+       Selection        : out Select_Index;
+       Open_Alternative : out Boolean)
+    is
+       Entry_Call  : Entry_Call_Link;
+       Temp_Call   : Entry_Call_Link;
+       Entry_Index : Task_Entry_Index := Task_Entry_Index'First;
+       Temp_Entry  : Task_Entry_Index;
+ 
+    begin
+       Open_Alternative := False;
+       Entry_Call       := null;
+       Selection        := No_Rendezvous;
+ 
+       if Priority_Queuing then
+          --  Priority queueing case
+ 
+          for J in Open_Accepts'Range loop
+             Temp_Entry := Open_Accepts (J).S;
+ 
+             if Temp_Entry /= Null_Task_Entry then
+                Open_Alternative := True;
+                Temp_Call := Head (Acceptor.Entry_Queues (Temp_Entry));
+ 
+                if Temp_Call /= null
+                  and then (Entry_Call = null
+                    or else Entry_Call.Prio < Temp_Call.Prio)
+                then
+                   Entry_Call  := Head (Acceptor.Entry_Queues (Temp_Entry));
+                   Entry_Index := Temp_Entry;
+                   Selection := J;
+                end if;
+             end if;
+          end loop;
+ 
+       else
+          --  FIFO Queuing case
+ 
+          for J in Open_Accepts'Range loop
+             Temp_Entry := Open_Accepts (J).S;
+ 
+             if Temp_Entry /= Null_Task_Entry then
+                Open_Alternative := True;
+                Temp_Call := Head (Acceptor.Entry_Queues (Temp_Entry));
+ 
+                if Temp_Call /= null then
+                   Entry_Call := Head (Acceptor.Entry_Queues (Temp_Entry));
+                   Entry_Index := Temp_Entry;
+                   Selection := J;
+                   exit;
+                end if;
+             end if;
+          end loop;
+       end if;
+ 
+       if Entry_Call /= null then
+          Dequeue_Head (Acceptor.Entry_Queues (Entry_Index), Entry_Call);
+ 
+          --  Guard is open
+       end if;
+ 
+       Call := Entry_Call;
+    end Select_Task_Entry_Call;
+ 
+    ------------------------
+    -- Send_Program_Error --
+    ------------------------
+ 
+    procedure Send_Program_Error
+      (Self_ID    : Task_Id;
+       Entry_Call : Entry_Call_Link)
+    is
+       Caller : Task_Id;
+    begin
+       Caller := Entry_Call.Self;
+       Entry_Call.Exception_To_Raise := Program_Error'Identity;
+       Write_Lock (Caller);
+       Initialization.Wakeup_Entry_Caller (Self_ID, Entry_Call, Done);
+       Unlock (Caller);
+    end Send_Program_Error;
+ 
+ end System.Tasking.Queuing;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-tasque.ads gcc-8.1.0/gcc/ada/libgnarl/s-tasque.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-tasque.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-tasque.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,99 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                 S Y S T E M . T A S K I N G . Q U E U I N G              --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --         Copyright (C) 1992-2018, Free Software Foundation, Inc.          --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Tasking.Protected_Objects.Entries;
+ 
+ package System.Tasking.Queuing is
+ 
+    package POE renames System.Tasking.Protected_Objects.Entries;
+ 
+    procedure Broadcast_Program_Error
+      (Self_ID      : Task_Id;
+       Object       : POE.Protection_Entries_Access;
+       Pending_Call : Entry_Call_Link;
+       RTS_Locked   : Boolean := False);
+    --  Raise Program_Error in all tasks calling the protected entries of Object
+    --  The exception will not be raised immediately for the calling task; it
+    --  will be deferred until it calls Check_Exception.
+    --  RTS_Locked indicates whether the global RTS lock is taken (only
+    --  relevant if Single_Lock is True).
+ 
+    procedure Enqueue (E : in out Entry_Queue; Call : Entry_Call_Link);
+    --  Enqueue Call at the end of entry_queue E
+ 
+    procedure Dequeue (E : in out Entry_Queue; Call : Entry_Call_Link);
+    --  Dequeue Call from entry_queue E
+ 
+    function Head (E : Entry_Queue) return Entry_Call_Link;
+    pragma Inline (Head);
+    --  Return the head of entry_queue E
+ 
+    procedure Dequeue_Head
+      (E    : in out Entry_Queue;
+       Call : out Entry_Call_Link);
+    --  Remove and return the head of entry_queue E
+ 
+    function Onqueue (Call : Entry_Call_Link) return Boolean;
+    pragma Inline (Onqueue);
+    --  Return True if Call is on any entry_queue at all
+ 
+    function Count_Waiting (E : Entry_Queue) return Natural;
+    --  Return number of calls on the waiting queue of E
+ 
+    procedure Select_Task_Entry_Call
+      (Acceptor         : Task_Id;
+       Open_Accepts     : Accept_List_Access;
+       Call             : out Entry_Call_Link;
+       Selection        : out Select_Index;
+       Open_Alternative : out Boolean);
+    --  Select an entry for rendezvous.  On exit:
+    --    Call will contain a pointer to the entry call record selected;
+    --    Selection will contain the index of the alternative selected
+    --    Open_Alternative will be True if there were any open alternatives
+ 
+    procedure Select_Protected_Entry_Call
+      (Self_ID : Task_Id;
+       Object  : POE.Protection_Entries_Access;
+       Call    : out Entry_Call_Link);
+    --  Select an entry of a protected object
+ 
+    procedure Enqueue_Call (Entry_Call : Entry_Call_Link);
+    procedure Dequeue_Call (Entry_Call : Entry_Call_Link);
+    --  Enqueue (dequeue) the call to (from) whatever server they are
+    --  calling, whether a task or a protected object.
+ 
+    procedure Requeue_Call_With_New_Prio
+      (Entry_Call : Entry_Call_Link; Prio : System.Any_Priority);
+    --  Change Priority of the call and re insert to the queue when priority
+    --  queueing is in effect. When FIFO is enforced, this routine
+    --  should not have any effect.
+ 
+ end System.Tasking.Queuing;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-tasren.adb gcc-8.1.0/gcc/ada/libgnarl/s-tasren.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-tasren.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-tasren.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,1732 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                  --
+ --                                                                          --
+ --            S Y S T E M . T A S K I N G . R E N D E Z V O U S             --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --         Copyright (C) 1992-2018, Free Software Foundation, Inc.          --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Task_Primitives.Operations;
+ with System.Tasking.Entry_Calls;
+ with System.Tasking.Initialization;
+ with System.Tasking.Queuing;
+ with System.Tasking.Utilities;
+ with System.Tasking.Protected_Objects.Operations;
+ with System.Tasking.Debug;
+ with System.Restrictions;
+ with System.Parameters;
+ 
+ package body System.Tasking.Rendezvous is
+ 
+    package STPO renames System.Task_Primitives.Operations;
+    package POO renames Protected_Objects.Operations;
+    package POE renames Protected_Objects.Entries;
+ 
+    use Parameters;
+    use Task_Primitives.Operations;
+ 
+    type Select_Treatment is (
+      Accept_Alternative_Selected,   --  alternative with non-null body
+      Accept_Alternative_Completed,  --  alternative with null body
+      Else_Selected,
+      Terminate_Selected,
+      Accept_Alternative_Open,
+      No_Alternative_Open);
+ 
+    ----------------
+    -- Local Data --
+    ----------------
+ 
+    Default_Treatment : constant array (Select_Modes) of Select_Treatment :=
+      (Simple_Mode         => No_Alternative_Open,
+       Else_Mode           => Else_Selected,
+       Terminate_Mode      => Terminate_Selected,
+       Delay_Mode          => No_Alternative_Open);
+ 
+    New_State : constant array (Boolean, Entry_Call_State)
+      of Entry_Call_State :=
+        (True =>
+          (Never_Abortable   => Never_Abortable,
+           Not_Yet_Abortable => Now_Abortable,
+           Was_Abortable     => Now_Abortable,
+           Now_Abortable     => Now_Abortable,
+           Done              => Done,
+           Cancelled         => Cancelled),
+         False =>
+          (Never_Abortable   => Never_Abortable,
+           Not_Yet_Abortable => Not_Yet_Abortable,
+           Was_Abortable     => Was_Abortable,
+           Now_Abortable     => Now_Abortable,
+           Done              => Done,
+           Cancelled         => Cancelled)
+        );
+ 
+    -----------------------
+    -- Local Subprograms --
+    -----------------------
+ 
+    procedure Local_Defer_Abort (Self_Id : Task_Id) renames
+      System.Tasking.Initialization.Defer_Abort_Nestable;
+ 
+    procedure Local_Undefer_Abort (Self_Id : Task_Id) renames
+      System.Tasking.Initialization.Undefer_Abort_Nestable;
+ 
+    --  Florist defers abort around critical sections that make entry calls
+    --  to the Interrupt_Manager task, which violates the general rule about
+    --  top-level runtime system calls from abort-deferred regions. It is not
+    --  that this is unsafe, but when it occurs in "normal" programs it usually
+    --  means either the user is trying to do a potentially blocking operation
+    --  from within a protected object, or there is a runtime system/compiler
+    --  error that has failed to undefer an earlier abort deferral. Thus, for
+    --  debugging it may be wise to modify the above renamings to the
+    --  non-nestable forms.
+ 
+    procedure Local_Complete_Rendezvous (Ex : Ada.Exceptions.Exception_Id);
+    --  Internal version of Complete_Rendezvous, used to implement
+    --  Complete_Rendezvous and Exceptional_Complete_Rendezvous.
+    --  Should be called holding no locks, generally with abort
+    --  not yet deferred.
+ 
+    procedure Boost_Priority (Call : Entry_Call_Link; Acceptor : Task_Id);
+    pragma Inline (Boost_Priority);
+    --  Call this only with abort deferred and holding lock of Acceptor
+ 
+    procedure Call_Synchronous
+      (Acceptor              : Task_Id;
+       E                     : Task_Entry_Index;
+       Uninterpreted_Data    : System.Address;
+       Mode                  : Call_Modes;
+       Rendezvous_Successful : out Boolean);
+    pragma Inline (Call_Synchronous);
+    --  This call is used to make a simple or conditional entry call.
+    --  Called from Call_Simple and Task_Entry_Call.
+ 
+    procedure Setup_For_Rendezvous_With_Body
+      (Entry_Call : Entry_Call_Link;
+       Acceptor   : Task_Id);
+    pragma Inline (Setup_For_Rendezvous_With_Body);
+    --  Call this only with abort deferred and holding lock of Acceptor. When
+    --  a rendezvous selected (ready for rendezvous) we need to save previous
+    --  caller and adjust the priority. Also we need to make this call not
+    --  Abortable (Cancellable) since the rendezvous has already been started.
+ 
+    procedure Wait_For_Call (Self_Id : Task_Id);
+    pragma Inline (Wait_For_Call);
+    --  Call this only with abort deferred and holding lock of Self_Id. An
+    --  accepting task goes into Sleep by calling this routine waiting for a
+    --  call from the caller or waiting for an abort. Make sure Self_Id is
+    --  locked before calling this routine.
+ 
+    -----------------
+    -- Accept_Call --
+    -----------------
+ 
+    procedure Accept_Call
+      (E                  : Task_Entry_Index;
+       Uninterpreted_Data : out System.Address)
+    is
+       Self_Id      : constant Task_Id := STPO.Self;
+       Caller       : Task_Id          := null;
+       Open_Accepts : aliased Accept_List (1 .. 1);
+       Entry_Call   : Entry_Call_Link;
+ 
+    begin
+       Initialization.Defer_Abort (Self_Id);
+ 
+       if Single_Lock then
+          Lock_RTS;
+       end if;
+ 
+       STPO.Write_Lock (Self_Id);
+ 
+       if not Self_Id.Callable then
+          pragma Assert (Self_Id.Pending_ATC_Level = 0);
+ 
+          pragma Assert (Self_Id.Pending_Action);
+ 
+          STPO.Unlock (Self_Id);
+ 
+          if Single_Lock then
+             Unlock_RTS;
+          end if;
+ 
+          Initialization.Undefer_Abort (Self_Id);
+ 
+          --  Should never get here ???
+ 
+          pragma Assert (False);
+          raise Standard'Abort_Signal;
+       end if;
+ 
+       Queuing.Dequeue_Head (Self_Id.Entry_Queues (E), Entry_Call);
+ 
+       if Entry_Call /= null then
+          Caller := Entry_Call.Self;
+          Setup_For_Rendezvous_With_Body (Entry_Call, Self_Id);
+          Uninterpreted_Data := Entry_Call.Uninterpreted_Data;
+ 
+       else
+          --  Wait for a caller
+ 
+          Open_Accepts (1).Null_Body := False;
+          Open_Accepts (1).S := E;
+          Self_Id.Open_Accepts := Open_Accepts'Unrestricted_Access;
+ 
+          --  Wait for normal call
+ 
+          pragma Debug
+            (Debug.Trace (Self_Id, "Accept_Call: wait", 'R'));
+          Wait_For_Call (Self_Id);
+ 
+          pragma Assert (Self_Id.Open_Accepts = null);
+ 
+          if Self_Id.Common.Call /= null then
+             Caller := Self_Id.Common.Call.Self;
+             Uninterpreted_Data :=
+               Caller.Entry_Calls (Caller.ATC_Nesting_Level).Uninterpreted_Data;
+          else
+             --  Case of an aborted task
+ 
+             Uninterpreted_Data := System.Null_Address;
+          end if;
+       end if;
+ 
+       --  Self_Id.Common.Call should already be updated by the Caller. On
+       --  return, we will start the rendezvous.
+ 
+       STPO.Unlock (Self_Id);
+ 
+       if Single_Lock then
+          Unlock_RTS;
+       end if;
+ 
+       Initialization.Undefer_Abort (Self_Id);
+ 
+    end Accept_Call;
+ 
+    --------------------
+    -- Accept_Trivial --
+    --------------------
+ 
+    procedure Accept_Trivial (E : Task_Entry_Index) is
+       Self_Id      : constant Task_Id := STPO.Self;
+       Caller       : Task_Id          := null;
+       Open_Accepts : aliased Accept_List (1 .. 1);
+       Entry_Call   : Entry_Call_Link;
+ 
+    begin
+       Initialization.Defer_Abort_Nestable (Self_Id);
+ 
+       if Single_Lock then
+          Lock_RTS;
+       end if;
+ 
+       STPO.Write_Lock (Self_Id);
+ 
+       if not Self_Id.Callable then
+          pragma Assert (Self_Id.Pending_ATC_Level = 0);
+ 
+          pragma Assert (Self_Id.Pending_Action);
+ 
+          STPO.Unlock (Self_Id);
+ 
+          if Single_Lock then
+             Unlock_RTS;
+          end if;
+ 
+          Initialization.Undefer_Abort_Nestable (Self_Id);
+ 
+          --  Should never get here ???
+ 
+          pragma Assert (False);
+          raise Standard'Abort_Signal;
+       end if;
+ 
+       Queuing.Dequeue_Head (Self_Id.Entry_Queues (E), Entry_Call);
+ 
+       if Entry_Call = null then
+ 
+          --  Need to wait for entry call
+ 
+          Open_Accepts (1).Null_Body := True;
+          Open_Accepts (1).S := E;
+          Self_Id.Open_Accepts := Open_Accepts'Unrestricted_Access;
+ 
+          pragma Debug
+           (Debug.Trace (Self_Id, "Accept_Trivial: wait", 'R'));
+ 
+          Wait_For_Call (Self_Id);
+ 
+          pragma Assert (Self_Id.Open_Accepts = null);
+ 
+          --  No need to do anything special here for pending abort.
+          --  Abort_Signal will be raised by Undefer on exit.
+ 
+          STPO.Unlock (Self_Id);
+ 
+       --  Found caller already waiting
+ 
+       else
+          pragma Assert (Entry_Call.State < Done);
+ 
+          STPO.Unlock (Self_Id);
+          Caller := Entry_Call.Self;
+ 
+          STPO.Write_Lock (Caller);
+          Initialization.Wakeup_Entry_Caller (Self_Id, Entry_Call, Done);
+          STPO.Unlock (Caller);
+       end if;
+ 
+       if Single_Lock then
+          Unlock_RTS;
+       end if;
+ 
+       Initialization.Undefer_Abort_Nestable (Self_Id);
+    end Accept_Trivial;
+ 
+    --------------------
+    -- Boost_Priority --
+    --------------------
+ 
+    procedure Boost_Priority (Call : Entry_Call_Link; Acceptor : Task_Id) is
+       Caller        : constant Task_Id             := Call.Self;
+       Caller_Prio   : constant System.Any_Priority := Get_Priority (Caller);
+       Acceptor_Prio : constant System.Any_Priority := Get_Priority (Acceptor);
+    begin
+       if Caller_Prio > Acceptor_Prio then
+          Call.Acceptor_Prev_Priority := Acceptor_Prio;
+          Set_Priority (Acceptor, Caller_Prio);
+       else
+          Call.Acceptor_Prev_Priority := Priority_Not_Boosted;
+       end if;
+    end Boost_Priority;
+ 
+    -----------------
+    -- Call_Simple --
+    -----------------
+ 
+    procedure Call_Simple
+      (Acceptor           : Task_Id;
+       E                  : Task_Entry_Index;
+       Uninterpreted_Data : System.Address)
+    is
+       Rendezvous_Successful : Boolean;
+       pragma Unreferenced (Rendezvous_Successful);
+ 
+    begin
+       --  If pragma Detect_Blocking is active then Program_Error must be
+       --  raised if this potentially blocking operation is called from a
+       --  protected action.
+ 
+       if System.Tasking.Detect_Blocking
+         and then STPO.Self.Common.Protected_Action_Nesting > 0
+       then
+          raise Program_Error with
+            "potentially blocking operation";
+       end if;
+ 
+       Call_Synchronous
+         (Acceptor, E, Uninterpreted_Data, Simple_Call, Rendezvous_Successful);
+    end Call_Simple;
+ 
+    ----------------------
+    -- Call_Synchronous --
+    ----------------------
+ 
+    procedure Call_Synchronous
+      (Acceptor              : Task_Id;
+       E                     : Task_Entry_Index;
+       Uninterpreted_Data    : System.Address;
+       Mode                  : Call_Modes;
+       Rendezvous_Successful : out Boolean)
+    is
+       Self_Id    : constant Task_Id := STPO.Self;
+       Level      : ATC_Level;
+       Entry_Call : Entry_Call_Link;
+ 
+    begin
+       pragma Assert (Mode /= Asynchronous_Call);
+ 
+       Local_Defer_Abort (Self_Id);
+       Self_Id.ATC_Nesting_Level := Self_Id.ATC_Nesting_Level + 1;
+       pragma Debug
+         (Debug.Trace (Self_Id, "CS: entered ATC level: " &
+          ATC_Level'Image (Self_Id.ATC_Nesting_Level), 'A'));
+       Level := Self_Id.ATC_Nesting_Level;
+       Entry_Call := Self_Id.Entry_Calls (Level)'Access;
+       Entry_Call.Next := null;
+       Entry_Call.Mode := Mode;
+       Entry_Call.Cancellation_Attempted := False;
+ 
+       --  If this is a call made inside of an abort deferred region,
+       --  the call should be never abortable.
+ 
+       Entry_Call.State :=
+         (if Self_Id.Deferral_Level > 1
+          then Never_Abortable
+          else Now_Abortable);
+ 
+       Entry_Call.E := Entry_Index (E);
+       Entry_Call.Prio := Get_Priority (Self_Id);
+       Entry_Call.Uninterpreted_Data := Uninterpreted_Data;
+       Entry_Call.Called_Task := Acceptor;
+       Entry_Call.Exception_To_Raise := Ada.Exceptions.Null_Id;
+       Entry_Call.With_Abort := True;
+ 
+       --  Note: the caller will undefer abort on return (see WARNING above)
+ 
+       if Single_Lock then
+          Lock_RTS;
+       end if;
+ 
+       if not Task_Do_Or_Queue (Self_Id, Entry_Call) then
+          STPO.Write_Lock (Self_Id);
+          Utilities.Exit_One_ATC_Level (Self_Id);
+          STPO.Unlock (Self_Id);
+ 
+          if Single_Lock then
+             Unlock_RTS;
+          end if;
+ 
+          Local_Undefer_Abort (Self_Id);
+          raise Tasking_Error;
+       end if;
+ 
+       STPO.Write_Lock (Self_Id);
+       pragma Debug
+         (Debug.Trace (Self_Id, "Call_Synchronous: wait", 'R'));
+       Entry_Calls.Wait_For_Completion (Entry_Call);
+       pragma Debug
+         (Debug.Trace (Self_Id, "Call_Synchronous: done waiting", 'R'));
+       Rendezvous_Successful := Entry_Call.State = Done;
+       STPO.Unlock (Self_Id);
+ 
+       if Single_Lock then
+          Unlock_RTS;
+       end if;
+ 
+       Local_Undefer_Abort (Self_Id);
+       Entry_Calls.Check_Exception (Self_Id, Entry_Call);
+    end Call_Synchronous;
+ 
+    --------------
+    -- Callable --
+    --------------
+ 
+    function Callable (T : Task_Id) return Boolean is
+       Result  : Boolean;
+       Self_Id : constant Task_Id := STPO.Self;
+ 
+    begin
+       Initialization.Defer_Abort_Nestable (Self_Id);
+ 
+       if Single_Lock then
+          Lock_RTS;
+       end if;
+ 
+       STPO.Write_Lock (T);
+       Result := T.Callable;
+       STPO.Unlock (T);
+ 
+       if Single_Lock then
+          Unlock_RTS;
+       end if;
+ 
+       Initialization.Undefer_Abort_Nestable (Self_Id);
+       return Result;
+    end Callable;
+ 
+    ----------------------------
+    -- Cancel_Task_Entry_Call --
+    ----------------------------
+ 
+    procedure Cancel_Task_Entry_Call (Cancelled : out Boolean) is
+    begin
+       Entry_Calls.Try_To_Cancel_Entry_Call (Cancelled);
+    end Cancel_Task_Entry_Call;
+ 
+    -------------------------
+    -- Complete_Rendezvous --
+    -------------------------
+ 
+    procedure Complete_Rendezvous is
+    begin
+       Local_Complete_Rendezvous (Ada.Exceptions.Null_Id);
+    end Complete_Rendezvous;
+ 
+    -------------------------------------
+    -- Exceptional_Complete_Rendezvous --
+    -------------------------------------
+ 
+    procedure Exceptional_Complete_Rendezvous
+      (Ex : Ada.Exceptions.Exception_Id)
+    is
+       procedure Internal_Reraise;
+       pragma No_Return (Internal_Reraise);
+       pragma Import (C, Internal_Reraise, "__gnat_reraise");
+ 
+    begin
+       Local_Complete_Rendezvous (Ex);
+       Internal_Reraise;
+ 
+       --  ??? Do we need to give precedence to Program_Error that might be
+       --  raised due to failure of finalization, over Tasking_Error from
+       --  failure of requeue?
+    end Exceptional_Complete_Rendezvous;
+ 
+    -------------------------------
+    -- Local_Complete_Rendezvous --
+    -------------------------------
+ 
+    procedure Local_Complete_Rendezvous (Ex : Ada.Exceptions.Exception_Id) is
+       Self_Id                : constant Task_Id := STPO.Self;
+       Entry_Call             : Entry_Call_Link := Self_Id.Common.Call;
+       Caller                 : Task_Id;
+       Called_PO              : STPE.Protection_Entries_Access;
+       Acceptor_Prev_Priority : Integer;
+ 
+       Ceiling_Violation : Boolean;
+ 
+       use type Ada.Exceptions.Exception_Id;
+       procedure Transfer_Occurrence
+         (Target : Ada.Exceptions.Exception_Occurrence_Access;
+          Source : Ada.Exceptions.Exception_Occurrence);
+       pragma Import (C, Transfer_Occurrence, "__gnat_transfer_occurrence");
+ 
+    begin
+       --  The deferral level is critical here, since we want to raise an
+       --  exception or allow abort to take place, if there is an exception or
+       --  abort pending.
+ 
+       pragma Debug
+         (Debug.Trace (Self_Id, "Local_Complete_Rendezvous", 'R'));
+ 
+       if Ex = Ada.Exceptions.Null_Id then
+ 
+          --  The call came from normal end-of-rendezvous, so abort is not yet
+          --  deferred.
+ 
+          Initialization.Defer_Abort (Self_Id);
+ 
+       elsif ZCX_By_Default then
+ 
+          --  With ZCX, aborts are not automatically deferred in handlers
+ 
+          Initialization.Defer_Abort (Self_Id);
+       end if;
+ 
+       --  We need to clean up any accepts which Self may have been serving when
+       --  it was aborted.
+ 
+       if Ex = Standard'Abort_Signal'Identity then
+          if Single_Lock then
+             Lock_RTS;
+          end if;
+ 
+          while Entry_Call /= null loop
+             Entry_Call.Exception_To_Raise := Tasking_Error'Identity;
+ 
+             --  All forms of accept make sure that the acceptor is not
+             --  completed, before accepting further calls, so that we
+             --  can be sure that no further calls are made after the
+             --  current calls are purged.
+ 
+             Caller := Entry_Call.Self;
+ 
+             --  Take write lock. This follows the lock precedence rule that
+             --  Caller may be locked while holding lock of Acceptor. Complete
+             --  the call abnormally, with exception.
+ 
+             STPO.Write_Lock (Caller);
+             Initialization.Wakeup_Entry_Caller (Self_Id, Entry_Call, Done);
+             STPO.Unlock (Caller);
+             Entry_Call := Entry_Call.Acceptor_Prev_Call;
+          end loop;
+ 
+          if Single_Lock then
+             Unlock_RTS;
+          end if;
+ 
+       else
+          Caller := Entry_Call.Self;
+ 
+          if Entry_Call.Needs_Requeue then
+ 
+             --  We dare not lock Self_Id at the same time as Caller, for fear
+             --  of deadlock.
+ 
+             Entry_Call.Needs_Requeue := False;
+             Self_Id.Common.Call := Entry_Call.Acceptor_Prev_Call;
+ 
+             if Entry_Call.Called_Task /= null then
+ 
+                --  Requeue to another task entry
+ 
+                if Single_Lock then
+                   Lock_RTS;
+                end if;
+ 
+                if not Task_Do_Or_Queue (Self_Id, Entry_Call) then
+                   if Single_Lock then
+                      Unlock_RTS;
+                   end if;
+ 
+                   Initialization.Undefer_Abort (Self_Id);
+                   raise Tasking_Error;
+                end if;
+ 
+                if Single_Lock then
+                   Unlock_RTS;
+                end if;
+ 
+             else
+                --  Requeue to a protected entry
+ 
+                Called_PO := POE.To_Protection (Entry_Call.Called_PO);
+                STPE.Lock_Entries_With_Status (Called_PO, Ceiling_Violation);
+ 
+                if Ceiling_Violation then
+                   pragma Assert (Ex = Ada.Exceptions.Null_Id);
+                   Entry_Call.Exception_To_Raise := Program_Error'Identity;
+ 
+                   if Single_Lock then
+                      Lock_RTS;
+                   end if;
+ 
+                   STPO.Write_Lock (Caller);
+                   Initialization.Wakeup_Entry_Caller
+                     (Self_Id, Entry_Call, Done);
+                   STPO.Unlock (Caller);
+ 
+                   if Single_Lock then
+                      Unlock_RTS;
+                   end if;
+ 
+                else
+                   POO.PO_Do_Or_Queue (Self_Id, Called_PO, Entry_Call);
+                   POO.PO_Service_Entries (Self_Id, Called_PO);
+                end if;
+             end if;
+ 
+             Entry_Calls.Reset_Priority
+               (Self_Id, Entry_Call.Acceptor_Prev_Priority);
+ 
+          else
+             --  The call does not need to be requeued
+ 
+             Self_Id.Common.Call := Entry_Call.Acceptor_Prev_Call;
+             Entry_Call.Exception_To_Raise := Ex;
+ 
+             if Single_Lock then
+                Lock_RTS;
+             end if;
+ 
+             STPO.Write_Lock (Caller);
+ 
+             --  Done with Caller locked to make sure that Wakeup is not lost
+ 
+             if Ex /= Ada.Exceptions.Null_Id then
+                Transfer_Occurrence
+                  (Caller.Common.Compiler_Data.Current_Excep'Access,
+                   Self_Id.Common.Compiler_Data.Current_Excep);
+             end if;
+ 
+             Acceptor_Prev_Priority := Entry_Call.Acceptor_Prev_Priority;
+             Initialization.Wakeup_Entry_Caller (Self_Id, Entry_Call, Done);
+ 
+             STPO.Unlock (Caller);
+ 
+             if Single_Lock then
+                Unlock_RTS;
+             end if;
+ 
+             Entry_Calls.Reset_Priority (Self_Id, Acceptor_Prev_Priority);
+          end if;
+       end if;
+ 
+       Initialization.Undefer_Abort (Self_Id);
+    end Local_Complete_Rendezvous;
+ 
+    -------------------------------------
+    -- Requeue_Protected_To_Task_Entry --
+    -------------------------------------
+ 
+    procedure Requeue_Protected_To_Task_Entry
+      (Object     : STPE.Protection_Entries_Access;
+       Acceptor   : Task_Id;
+       E          : Task_Entry_Index;
+       With_Abort : Boolean)
+    is
+       Entry_Call : constant Entry_Call_Link := Object.Call_In_Progress;
+    begin
+       pragma Assert (STPO.Self.Deferral_Level > 0);
+ 
+       Entry_Call.E := Entry_Index (E);
+       Entry_Call.Called_Task := Acceptor;
+       Entry_Call.Called_PO := Null_Address;
+       Entry_Call.With_Abort := With_Abort;
+       Object.Call_In_Progress := null;
+    end Requeue_Protected_To_Task_Entry;
+ 
+    ------------------------
+    -- Requeue_Task_Entry --
+    ------------------------
+ 
+    procedure Requeue_Task_Entry
+      (Acceptor   : Task_Id;
+       E          : Task_Entry_Index;
+       With_Abort : Boolean)
+    is
+       Self_Id    : constant Task_Id := STPO.Self;
+       Entry_Call : constant Entry_Call_Link := Self_Id.Common.Call;
+    begin
+       Initialization.Defer_Abort (Self_Id);
+       Entry_Call.Needs_Requeue := True;
+       Entry_Call.With_Abort := With_Abort;
+       Entry_Call.E := Entry_Index (E);
+       Entry_Call.Called_Task := Acceptor;
+       Initialization.Undefer_Abort (Self_Id);
+    end Requeue_Task_Entry;
+ 
+    --------------------
+    -- Selective_Wait --
+    --------------------
+ 
+    procedure Selective_Wait
+      (Open_Accepts       : Accept_List_Access;
+       Select_Mode        : Select_Modes;
+       Uninterpreted_Data : out System.Address;
+       Index              : out Select_Index)
+    is
+       Self_Id          : constant Task_Id := STPO.Self;
+       Entry_Call       : Entry_Call_Link;
+       Treatment        : Select_Treatment;
+       Caller           : Task_Id;
+       Selection        : Select_Index;
+       Open_Alternative : Boolean;
+ 
+    begin
+       Initialization.Defer_Abort (Self_Id);
+ 
+       if Single_Lock then
+          Lock_RTS;
+       end if;
+ 
+       STPO.Write_Lock (Self_Id);
+ 
+       if not Self_Id.Callable then
+          pragma Assert (Self_Id.Pending_ATC_Level = 0);
+ 
+          pragma Assert (Self_Id.Pending_Action);
+ 
+          STPO.Unlock (Self_Id);
+ 
+          if Single_Lock then
+             Unlock_RTS;
+          end if;
+ 
+          --  ??? In some cases abort is deferred more than once. Need to
+          --  figure out why this happens.
+ 
+          if Self_Id.Deferral_Level > 1 then
+             Self_Id.Deferral_Level := 1;
+          end if;
+ 
+          Initialization.Undefer_Abort (Self_Id);
+ 
+          --  Should never get here ???
+ 
+          pragma Assert (False);
+          raise Standard'Abort_Signal;
+       end if;
+ 
+       pragma Assert (Open_Accepts /= null);
+ 
+       Uninterpreted_Data := Null_Address;
+ 
+       Queuing.Select_Task_Entry_Call
+         (Self_Id, Open_Accepts, Entry_Call, Selection, Open_Alternative);
+ 
+       --  Determine the kind and disposition of the select
+ 
+       Treatment := Default_Treatment (Select_Mode);
+       Self_Id.Chosen_Index := No_Rendezvous;
+ 
+       if Open_Alternative then
+          if Entry_Call /= null then
+             if Open_Accepts (Selection).Null_Body then
+                Treatment := Accept_Alternative_Completed;
+             else
+                Setup_For_Rendezvous_With_Body (Entry_Call, Self_Id);
+                Treatment := Accept_Alternative_Selected;
+             end if;
+ 
+             Self_Id.Chosen_Index := Selection;
+ 
+          elsif Treatment = No_Alternative_Open then
+             Treatment := Accept_Alternative_Open;
+          end if;
+       end if;
+ 
+       --  Handle the select according to the disposition selected above
+ 
+       case Treatment is
+          when Accept_Alternative_Selected =>
+ 
+             --  Ready to rendezvous
+ 
+             Uninterpreted_Data := Self_Id.Common.Call.Uninterpreted_Data;
+ 
+             --  In this case the accept body is not Null_Body. Defer abort
+             --  until it gets into the accept body. The compiler has inserted
+             --  a call to Abort_Undefer as part of the entry expansion.
+ 
+             pragma Assert (Self_Id.Deferral_Level = 1);
+ 
+             Initialization.Defer_Abort_Nestable (Self_Id);
+             STPO.Unlock (Self_Id);
+ 
+          when Accept_Alternative_Completed =>
+ 
+             --  Accept body is null, so rendezvous is over immediately
+ 
+             STPO.Unlock (Self_Id);
+             Caller := Entry_Call.Self;
+ 
+             STPO.Write_Lock (Caller);
+             Initialization.Wakeup_Entry_Caller (Self_Id, Entry_Call, Done);
+             STPO.Unlock (Caller);
+ 
+          when Accept_Alternative_Open =>
+ 
+             --  Wait for caller
+ 
+             Self_Id.Open_Accepts := Open_Accepts;
+             pragma Debug
+               (Debug.Trace (Self_Id, "Selective_Wait: wait", 'R'));
+ 
+             Wait_For_Call (Self_Id);
+ 
+             pragma Assert (Self_Id.Open_Accepts = null);
+ 
+             --  Self_Id.Common.Call should already be updated by the Caller if
+             --  not aborted. It might also be ready to do rendezvous even if
+             --  this wakes up due to an abort. Therefore, if the call is not
+             --  empty we need to do the rendezvous if the accept body is not
+             --  Null_Body.
+ 
+             --  Aren't the first two conditions below redundant???
+ 
+             if Self_Id.Chosen_Index /= No_Rendezvous
+               and then Self_Id.Common.Call /= null
+               and then not Open_Accepts (Self_Id.Chosen_Index).Null_Body
+             then
+                Uninterpreted_Data := Self_Id.Common.Call.Uninterpreted_Data;
+ 
+                pragma Assert
+                  (Self_Id.Deferral_Level = 1
+                    or else
+                      (Self_Id.Deferral_Level = 0
+                        and then not Restrictions.Abort_Allowed));
+ 
+                Initialization.Defer_Abort_Nestable (Self_Id);
+ 
+                --  Leave abort deferred until the accept body
+                --  The compiler has inserted a call to Abort_Undefer as part of
+                --  the entry expansion.
+             end if;
+ 
+             STPO.Unlock (Self_Id);
+ 
+          when Else_Selected =>
+             pragma Assert (Self_Id.Open_Accepts = null);
+ 
+             STPO.Unlock (Self_Id);
+ 
+          when Terminate_Selected =>
+ 
+             --  Terminate alternative is open
+ 
+             Self_Id.Open_Accepts := Open_Accepts;
+             Self_Id.Common.State := Acceptor_Sleep;
+ 
+             --  Notify ancestors that this task is on a terminate alternative
+ 
+             STPO.Unlock (Self_Id);
+             Utilities.Make_Passive (Self_Id, Task_Completed => False);
+             STPO.Write_Lock (Self_Id);
+ 
+             --  Wait for normal entry call or termination
+ 
+             Wait_For_Call (Self_Id);
+ 
+             pragma Assert (Self_Id.Open_Accepts = null);
+ 
+             if Self_Id.Terminate_Alternative then
+ 
+                --  An entry call should have reset this to False, so we must be
+                --  aborted. We cannot be in an async. select, since that is not
+                --  legal, so the abort must be of the entire task. Therefore,
+                --  we do not need to cancel the terminate alternative. The
+                --  cleanup will be done in Complete_Master.
+ 
+                pragma Assert (Self_Id.Pending_ATC_Level = 0);
+                pragma Assert (Self_Id.Awake_Count = 0);
+ 
+                STPO.Unlock (Self_Id);
+ 
+                if Single_Lock then
+                   Unlock_RTS;
+                end if;
+ 
+                Index := Self_Id.Chosen_Index;
+                Initialization.Undefer_Abort_Nestable (Self_Id);
+ 
+                if Self_Id.Pending_Action then
+                   Initialization.Do_Pending_Action (Self_Id);
+                end if;
+ 
+                return;
+ 
+             else
+                --  Self_Id.Common.Call and Self_Id.Chosen_Index
+                --  should already be updated by the Caller.
+ 
+                if Self_Id.Chosen_Index /= No_Rendezvous
+                  and then not Open_Accepts (Self_Id.Chosen_Index).Null_Body
+                then
+                   Uninterpreted_Data := Self_Id.Common.Call.Uninterpreted_Data;
+ 
+                   pragma Assert (Self_Id.Deferral_Level = 1);
+ 
+                   --  We need an extra defer here, to keep abort
+                   --  deferred until we get into the accept body
+                   --  The compiler has inserted a call to Abort_Undefer as part
+                   --  of the entry expansion.
+ 
+                   Initialization.Defer_Abort_Nestable (Self_Id);
+                end if;
+             end if;
+ 
+             STPO.Unlock (Self_Id);
+ 
+          when No_Alternative_Open =>
+ 
+             --  In this case, Index will be No_Rendezvous on return, which
+             --  should cause a Program_Error if it is not a Delay_Mode.
+ 
+             --  If delay alternative exists (Delay_Mode) we should suspend
+             --  until the delay expires.
+ 
+             Self_Id.Open_Accepts := null;
+ 
+             if Select_Mode = Delay_Mode then
+                Self_Id.Common.State := Delay_Sleep;
+ 
+                loop
+                   exit when
+                     Self_Id.Pending_ATC_Level < Self_Id.ATC_Nesting_Level;
+                   Sleep (Self_Id, Delay_Sleep);
+                end loop;
+ 
+                Self_Id.Common.State := Runnable;
+                STPO.Unlock (Self_Id);
+ 
+             else
+                STPO.Unlock (Self_Id);
+ 
+                if Single_Lock then
+                   Unlock_RTS;
+                end if;
+ 
+                Initialization.Undefer_Abort (Self_Id);
+                raise Program_Error with
+                  "entry call not a delay mode";
+             end if;
+       end case;
+ 
+       if Single_Lock then
+          Unlock_RTS;
+       end if;
+ 
+       --  Caller has been chosen
+ 
+       --  Self_Id.Common.Call should already be updated by the Caller.
+ 
+       --  Self_Id.Chosen_Index should either be updated by the Caller
+       --  or by Test_Selective_Wait.
+ 
+       --  On return, we sill start rendezvous unless the accept body is
+       --  null. In the latter case, we will have already completed the RV.
+ 
+       Index := Self_Id.Chosen_Index;
+       Initialization.Undefer_Abort_Nestable (Self_Id);
+    end Selective_Wait;
+ 
+    ------------------------------------
+    -- Setup_For_Rendezvous_With_Body --
+    ------------------------------------
+ 
+    procedure Setup_For_Rendezvous_With_Body
+      (Entry_Call : Entry_Call_Link;
+       Acceptor   : Task_Id) is
+    begin
+       Entry_Call.Acceptor_Prev_Call := Acceptor.Common.Call;
+       Acceptor.Common.Call := Entry_Call;
+ 
+       if Entry_Call.State = Now_Abortable then
+          Entry_Call.State := Was_Abortable;
+       end if;
+ 
+       Boost_Priority (Entry_Call, Acceptor);
+    end Setup_For_Rendezvous_With_Body;
+ 
+    ----------------
+    -- Task_Count --
+    ----------------
+ 
+    function Task_Count (E : Task_Entry_Index) return Natural is
+       Self_Id      : constant Task_Id := STPO.Self;
+       Return_Count : Natural;
+ 
+    begin
+       Initialization.Defer_Abort (Self_Id);
+ 
+       if Single_Lock then
+          Lock_RTS;
+       end if;
+ 
+       STPO.Write_Lock (Self_Id);
+       Return_Count := Queuing.Count_Waiting (Self_Id.Entry_Queues (E));
+       STPO.Unlock (Self_Id);
+ 
+       if Single_Lock then
+          Unlock_RTS;
+       end if;
+ 
+       Initialization.Undefer_Abort (Self_Id);
+ 
+       return Return_Count;
+    end Task_Count;
+ 
+    ----------------------
+    -- Task_Do_Or_Queue --
+    ----------------------
+ 
+    function Task_Do_Or_Queue
+      (Self_ID    : Task_Id;
+       Entry_Call : Entry_Call_Link) return Boolean
+    is
+       E             : constant Task_Entry_Index :=
+                         Task_Entry_Index (Entry_Call.E);
+       Old_State     : constant Entry_Call_State := Entry_Call.State;
+       Acceptor      : constant Task_Id := Entry_Call.Called_Task;
+       Parent        : constant Task_Id := Acceptor.Common.Parent;
+       Null_Body     : Boolean;
+ 
+    begin
+       --  Find out whether Entry_Call can be accepted immediately
+ 
+       --    If the Acceptor is not callable, return False.
+       --    If the rendezvous can start, initiate it.
+       --    If the accept-body is trivial, also complete the rendezvous.
+       --    If the acceptor is not ready, enqueue the call.
+ 
+       --  This should have a special case for Accept_Call and Accept_Trivial,
+       --  so that we don't have the loop setup overhead, below.
+ 
+       --  The call state Done is used here and elsewhere to include both the
+       --  case of normal successful completion, and the case of an exception
+       --  being raised. The difference is that if an exception is raised no one
+       --  will pay attention to the fact that State = Done. Instead the
+       --  exception will be raised in Undefer_Abort, and control will skip past
+       --  the place where we normally would resume from an entry call.
+ 
+       pragma Assert (not Queuing.Onqueue (Entry_Call));
+ 
+       --  We rely that the call is off-queue for protection, that the caller
+       --  will not exit the Entry_Caller_Sleep, and so will not reuse the call
+       --  record for another call. We rely on the Caller's lock for call State
+       --  mod's.
+ 
+       --  If Acceptor.Terminate_Alternative is True, we need to lock Parent and
+       --  Acceptor, in that order; otherwise, we only need a lock on Acceptor.
+       --  However, we can't check Acceptor.Terminate_Alternative until Acceptor
+       --  is locked. Therefore, we need to lock both. Attempts to avoid locking
+       --  Parent tend to result in race conditions. It would work to unlock
+       --  Parent immediately upon finding Acceptor.Terminate_Alternative to be
+       --  False, but that violates the rule of properly nested locking (see
+       --  System.Tasking).
+ 
+       STPO.Write_Lock (Parent);
+       STPO.Write_Lock (Acceptor);
+ 
+       --  If the acceptor is not callable, abort the call and return False
+ 
+       if not Acceptor.Callable then
+          STPO.Unlock (Acceptor);
+          STPO.Unlock (Parent);
+ 
+          pragma Assert (Entry_Call.State < Done);
+ 
+          --  In case we are not the caller, set up the caller
+          --  to raise Tasking_Error when it wakes up.
+ 
+          STPO.Write_Lock (Entry_Call.Self);
+          Entry_Call.Exception_To_Raise := Tasking_Error'Identity;
+          Initialization.Wakeup_Entry_Caller (Self_ID, Entry_Call, Done);
+          STPO.Unlock (Entry_Call.Self);
+ 
+          return False;
+       end if;
+ 
+       --  Try to serve the call immediately
+ 
+       if Acceptor.Open_Accepts /= null then
+          for J in Acceptor.Open_Accepts'Range loop
+             if Entry_Call.E = Entry_Index (Acceptor.Open_Accepts (J).S) then
+ 
+                --  Commit acceptor to rendezvous with us
+ 
+                Acceptor.Chosen_Index := J;
+                Null_Body := Acceptor.Open_Accepts (J).Null_Body;
+                Acceptor.Open_Accepts := null;
+ 
+                --  Prevent abort while call is being served
+ 
+                if Entry_Call.State = Now_Abortable then
+                   Entry_Call.State := Was_Abortable;
+                end if;
+ 
+                if Acceptor.Terminate_Alternative then
+ 
+                   --  Cancel terminate alternative. See matching code in
+                   --  Selective_Wait and Vulnerable_Complete_Master.
+ 
+                   Acceptor.Terminate_Alternative := False;
+                   Acceptor.Awake_Count := Acceptor.Awake_Count + 1;
+ 
+                   if Acceptor.Awake_Count = 1 then
+ 
+                      --  Notify parent that acceptor is awake
+ 
+                      pragma Assert (Parent.Awake_Count > 0);
+ 
+                      Parent.Awake_Count := Parent.Awake_Count + 1;
+ 
+                      if Parent.Common.State = Master_Completion_Sleep
+                        and then Acceptor.Master_Of_Task = Parent.Master_Within
+                      then
+                         Parent.Common.Wait_Count :=
+                           Parent.Common.Wait_Count + 1;
+                      end if;
+                   end if;
+                end if;
+ 
+                if Null_Body then
+ 
+                   --  Rendezvous is over immediately
+ 
+                   STPO.Wakeup (Acceptor, Acceptor_Sleep);
+                   STPO.Unlock (Acceptor);
+                   STPO.Unlock (Parent);
+ 
+                   STPO.Write_Lock (Entry_Call.Self);
+                   Initialization.Wakeup_Entry_Caller
+                     (Self_ID, Entry_Call, Done);
+                   STPO.Unlock (Entry_Call.Self);
+ 
+                else
+                   Setup_For_Rendezvous_With_Body (Entry_Call, Acceptor);
+ 
+                   --  For terminate_alternative, acceptor may not be asleep
+                   --  yet, so we skip the wakeup
+ 
+                   if Acceptor.Common.State /= Runnable then
+                      STPO.Wakeup (Acceptor, Acceptor_Sleep);
+                   end if;
+ 
+                   STPO.Unlock (Acceptor);
+                   STPO.Unlock (Parent);
+                end if;
+ 
+                return True;
+             end if;
+          end loop;
+ 
+          --  The acceptor is accepting, but not this entry
+       end if;
+ 
+       --  If the acceptor was ready to accept this call,
+       --  we would not have gotten this far, so now we should
+       --  (re)enqueue the call, if the mode permits that.
+ 
+       --  If the call is timed, it may have timed out before the requeue,
+       --  in the unusual case where the current accept has taken longer than
+       --  the given delay. In that case the requeue is cancelled, and the
+       --  outer timed call will be aborted.
+ 
+       if Entry_Call.Mode = Conditional_Call
+         or else
+           (Entry_Call.Mode = Timed_Call
+             and then Entry_Call.With_Abort
+             and then Entry_Call.Cancellation_Attempted)
+       then
+          STPO.Unlock (Acceptor);
+          STPO.Unlock (Parent);
+ 
+          STPO.Write_Lock (Entry_Call.Self);
+ 
+          pragma Assert (Entry_Call.State >= Was_Abortable);
+ 
+          Initialization.Wakeup_Entry_Caller (Self_ID, Entry_Call, Cancelled);
+          STPO.Unlock (Entry_Call.Self);
+ 
+       else
+          --  Timed_Call, Simple_Call, or Asynchronous_Call
+ 
+          Queuing.Enqueue (Acceptor.Entry_Queues (E), Entry_Call);
+ 
+          --  Update abortability of call
+ 
+          pragma Assert (Old_State < Done);
+ 
+          Entry_Call.State :=
+            New_State (Entry_Call.With_Abort, Entry_Call.State);
+ 
+          STPO.Unlock (Acceptor);
+          STPO.Unlock (Parent);
+ 
+          if Old_State /= Entry_Call.State
+            and then Entry_Call.State = Now_Abortable
+            and then Entry_Call.Mode /= Simple_Call
+            and then Entry_Call.Self /= Self_ID
+ 
+          --  Asynchronous_Call or Conditional_Call
+ 
+          then
+             --  Because of ATCB lock ordering rule
+ 
+             STPO.Write_Lock (Entry_Call.Self);
+ 
+             if Entry_Call.Self.Common.State = Async_Select_Sleep then
+ 
+                --  Caller may not yet have reached wait-point
+ 
+                STPO.Wakeup (Entry_Call.Self, Async_Select_Sleep);
+             end if;
+ 
+             STPO.Unlock (Entry_Call.Self);
+          end if;
+       end if;
+ 
+       return True;
+    end Task_Do_Or_Queue;
+ 
+    ---------------------
+    -- Task_Entry_Call --
+    ---------------------
+ 
+    procedure Task_Entry_Call
+      (Acceptor              : Task_Id;
+       E                     : Task_Entry_Index;
+       Uninterpreted_Data    : System.Address;
+       Mode                  : Call_Modes;
+       Rendezvous_Successful : out Boolean)
+    is
+       Self_Id    : constant Task_Id := STPO.Self;
+       Entry_Call : Entry_Call_Link;
+ 
+    begin
+       --  If pragma Detect_Blocking is active then Program_Error must be
+       --  raised if this potentially blocking operation is called from a
+       --  protected action.
+ 
+       if System.Tasking.Detect_Blocking
+         and then Self_Id.Common.Protected_Action_Nesting > 0
+       then
+          raise Program_Error with
+            "potentially blocking operation";
+       end if;
+ 
+       if Mode = Simple_Call or else Mode = Conditional_Call then
+          Call_Synchronous
+            (Acceptor, E, Uninterpreted_Data, Mode, Rendezvous_Successful);
+ 
+       else
+          --  This is an asynchronous call
+ 
+          --  Abort must already be deferred by the compiler-generated code.
+          --  Without this, an abort that occurs between the time that this
+          --  call is made and the time that the abortable part's cleanup
+          --  handler is set up might miss the cleanup handler and leave the
+          --  call pending.
+ 
+          Self_Id.ATC_Nesting_Level := Self_Id.ATC_Nesting_Level + 1;
+          pragma Debug
+            (Debug.Trace (Self_Id, "TEC: entered ATC level: " &
+             ATC_Level'Image (Self_Id.ATC_Nesting_Level), 'A'));
+          Entry_Call := Self_Id.Entry_Calls (Self_Id.ATC_Nesting_Level)'Access;
+          Entry_Call.Next := null;
+          Entry_Call.Mode := Mode;
+          Entry_Call.Cancellation_Attempted := False;
+          Entry_Call.State := Not_Yet_Abortable;
+          Entry_Call.E := Entry_Index (E);
+          Entry_Call.Prio := Get_Priority (Self_Id);
+          Entry_Call.Uninterpreted_Data := Uninterpreted_Data;
+          Entry_Call.Called_Task := Acceptor;
+          Entry_Call.Called_PO := Null_Address;
+          Entry_Call.Exception_To_Raise := Ada.Exceptions.Null_Id;
+          Entry_Call.With_Abort := True;
+ 
+          if Single_Lock then
+             Lock_RTS;
+          end if;
+ 
+          if not Task_Do_Or_Queue (Self_Id, Entry_Call) then
+             STPO.Write_Lock (Self_Id);
+             Utilities.Exit_One_ATC_Level (Self_Id);
+             STPO.Unlock (Self_Id);
+ 
+             if Single_Lock then
+                Unlock_RTS;
+             end if;
+ 
+             Initialization.Undefer_Abort (Self_Id);
+ 
+             raise Tasking_Error;
+          end if;
+ 
+          --  The following is special for async. entry calls. If the call was
+          --  not queued abortably, we need to wait until it is before
+          --  proceeding with the abortable part.
+ 
+          --  Wait_Until_Abortable can be called unconditionally here, but it is
+          --  expensive.
+ 
+          if Entry_Call.State < Was_Abortable then
+             Entry_Calls.Wait_Until_Abortable (Self_Id, Entry_Call);
+          end if;
+ 
+          if Single_Lock then
+             Unlock_RTS;
+          end if;
+ 
+          --  Note: following assignment needs to be atomic
+ 
+          Rendezvous_Successful := Entry_Call.State = Done;
+       end if;
+    end Task_Entry_Call;
+ 
+    -----------------------
+    -- Task_Entry_Caller --
+    -----------------------
+ 
+    function Task_Entry_Caller (D : Task_Entry_Nesting_Depth) return Task_Id is
+       Self_Id    : constant Task_Id := STPO.Self;
+       Entry_Call : Entry_Call_Link;
+ 
+    begin
+       Entry_Call := Self_Id.Common.Call;
+ 
+       for Depth in 1 .. D loop
+          Entry_Call := Entry_Call.Acceptor_Prev_Call;
+          pragma Assert (Entry_Call /= null);
+       end loop;
+ 
+       return Entry_Call.Self;
+    end Task_Entry_Caller;
+ 
+    --------------------------
+    -- Timed_Selective_Wait --
+    --------------------------
+ 
+    procedure Timed_Selective_Wait
+      (Open_Accepts       : Accept_List_Access;
+       Select_Mode        : Select_Modes;
+       Uninterpreted_Data : out System.Address;
+       Timeout            : Duration;
+       Mode               : Delay_Modes;
+       Index              : out Select_Index)
+    is
+       Self_Id          : constant Task_Id := STPO.Self;
+       Treatment        : Select_Treatment;
+       Entry_Call       : Entry_Call_Link;
+       Caller           : Task_Id;
+       Selection        : Select_Index;
+       Open_Alternative : Boolean;
+       Timedout         : Boolean := False;
+       Yielded          : Boolean := True;
+ 
+    begin
+       pragma Assert (Select_Mode = Delay_Mode);
+ 
+       Initialization.Defer_Abort (Self_Id);
+ 
+       --  If we are aborted here, the effect will be pending
+ 
+       if Single_Lock then
+          Lock_RTS;
+       end if;
+ 
+       STPO.Write_Lock (Self_Id);
+ 
+       if not Self_Id.Callable then
+          pragma Assert (Self_Id.Pending_ATC_Level = 0);
+ 
+          pragma Assert (Self_Id.Pending_Action);
+ 
+          STPO.Unlock (Self_Id);
+ 
+          if Single_Lock then
+             Unlock_RTS;
+          end if;
+ 
+          Initialization.Undefer_Abort (Self_Id);
+ 
+          --  Should never get here ???
+ 
+          pragma Assert (False);
+          raise Standard'Abort_Signal;
+       end if;
+ 
+       Uninterpreted_Data := Null_Address;
+ 
+       pragma Assert (Open_Accepts /= null);
+ 
+       Queuing.Select_Task_Entry_Call
+         (Self_Id, Open_Accepts, Entry_Call, Selection, Open_Alternative);
+ 
+       --  Determine the kind and disposition of the select
+ 
+       Treatment := Default_Treatment (Select_Mode);
+       Self_Id.Chosen_Index := No_Rendezvous;
+ 
+       if Open_Alternative then
+          if Entry_Call /= null then
+             if Open_Accepts (Selection).Null_Body then
+                Treatment := Accept_Alternative_Completed;
+ 
+             else
+                Setup_For_Rendezvous_With_Body (Entry_Call, Self_Id);
+                Treatment := Accept_Alternative_Selected;
+             end if;
+ 
+             Self_Id.Chosen_Index := Selection;
+ 
+          elsif Treatment = No_Alternative_Open then
+             Treatment := Accept_Alternative_Open;
+          end if;
+       end if;
+ 
+       --  Handle the select according to the disposition selected above
+ 
+       case Treatment is
+          when Accept_Alternative_Selected =>
+ 
+             --  Ready to rendezvous. In this case the accept body is not
+             --  Null_Body. Defer abort until it gets into the accept body.
+ 
+             Uninterpreted_Data := Self_Id.Common.Call.Uninterpreted_Data;
+             Initialization.Defer_Abort_Nestable (Self_Id);
+             STPO.Unlock (Self_Id);
+ 
+          when Accept_Alternative_Completed =>
+ 
+             --  Rendezvous is over
+ 
+             STPO.Unlock (Self_Id);
+             Caller := Entry_Call.Self;
+ 
+             STPO.Write_Lock (Caller);
+             Initialization.Wakeup_Entry_Caller (Self_Id, Entry_Call, Done);
+             STPO.Unlock (Caller);
+ 
+          when Accept_Alternative_Open =>
+ 
+             --  Wait for caller
+ 
+             Self_Id.Open_Accepts := Open_Accepts;
+ 
+             --  Wait for a normal call and a pending action until the
+             --  Wakeup_Time is reached.
+ 
+             Self_Id.Common.State := Acceptor_Delay_Sleep;
+ 
+             --  Try to remove calls to Sleep in the loop below by letting the
+             --  caller a chance of getting ready immediately, using Unlock
+             --  Yield. See similar action in Wait_For_Completion/Wait_For_Call.
+ 
+             if Single_Lock then
+                Unlock_RTS;
+             else
+                Unlock (Self_Id);
+             end if;
+ 
+             if Self_Id.Open_Accepts /= null then
+                Yield;
+             end if;
+ 
+             if Single_Lock then
+                Lock_RTS;
+             else
+                Write_Lock (Self_Id);
+             end if;
+ 
+             --  Check if this task has been aborted while the lock was released
+ 
+             if Self_Id.Pending_ATC_Level < Self_Id.ATC_Nesting_Level then
+                Self_Id.Open_Accepts := null;
+             end if;
+ 
+             loop
+                exit when Self_Id.Open_Accepts = null;
+ 
+                if Timedout then
+                   Sleep (Self_Id, Acceptor_Delay_Sleep);
+                else
+                   STPO.Timed_Sleep (Self_Id, Timeout, Mode,
+                     Acceptor_Delay_Sleep, Timedout, Yielded);
+                end if;
+ 
+                if Timedout then
+                   Self_Id.Open_Accepts := null;
+                end if;
+             end loop;
+ 
+             Self_Id.Common.State := Runnable;
+ 
+             --  Self_Id.Common.Call should already be updated by the Caller if
+             --  not aborted. It might also be ready to do rendezvous even if
+             --  this wakes up due to an abort. Therefore, if the call is not
+             --  empty we need to do the rendezvous if the accept body is not
+             --  Null_Body.
+ 
+             if Self_Id.Chosen_Index /= No_Rendezvous
+               and then Self_Id.Common.Call /= null
+               and then not Open_Accepts (Self_Id.Chosen_Index).Null_Body
+             then
+                Uninterpreted_Data := Self_Id.Common.Call.Uninterpreted_Data;
+ 
+                pragma Assert (Self_Id.Deferral_Level = 1);
+ 
+                Initialization.Defer_Abort_Nestable (Self_Id);
+ 
+                --  Leave abort deferred until the accept body
+             end if;
+ 
+             STPO.Unlock (Self_Id);
+ 
+          when No_Alternative_Open =>
+ 
+             --  In this case, Index will be No_Rendezvous on return. We sleep
+             --  for the time we need to.
+ 
+             --  Wait for a signal or timeout. A wakeup can be made
+             --  for several reasons:
+             --    1) Delay is expired
+             --    2) Pending_Action needs to be checked
+             --       (Abort, Priority change)
+             --    3) Spurious wakeup
+ 
+             Self_Id.Open_Accepts := null;
+             Self_Id.Common.State := Acceptor_Delay_Sleep;
+ 
+             STPO.Timed_Sleep (Self_Id, Timeout, Mode, Acceptor_Delay_Sleep,
+               Timedout, Yielded);
+ 
+             Self_Id.Common.State := Runnable;
+ 
+             STPO.Unlock (Self_Id);
+ 
+          when others =>
+ 
+             --  Should never get here
+ 
+             pragma Assert (False);
+             null;
+       end case;
+ 
+       if Single_Lock then
+          Unlock_RTS;
+       end if;
+ 
+       if not Yielded then
+          Yield;
+       end if;
+ 
+       --  Caller has been chosen
+ 
+       --  Self_Id.Common.Call should already be updated by the Caller
+ 
+       --  Self_Id.Chosen_Index should either be updated by the Caller
+       --  or by Test_Selective_Wait
+ 
+       Index := Self_Id.Chosen_Index;
+       Initialization.Undefer_Abort_Nestable (Self_Id);
+ 
+       --  Start rendezvous, if not already completed
+    end Timed_Selective_Wait;
+ 
+    ---------------------------
+    -- Timed_Task_Entry_Call --
+    ---------------------------
+ 
+    procedure Timed_Task_Entry_Call
+      (Acceptor              : Task_Id;
+       E                     : Task_Entry_Index;
+       Uninterpreted_Data    : System.Address;
+       Timeout               : Duration;
+       Mode                  : Delay_Modes;
+       Rendezvous_Successful : out Boolean)
+    is
+       Self_Id    : constant Task_Id := STPO.Self;
+       Level      : ATC_Level;
+       Entry_Call : Entry_Call_Link;
+ 
+       Yielded : Boolean;
+       pragma Unreferenced (Yielded);
+ 
+    begin
+       --  If pragma Detect_Blocking is active then Program_Error must be
+       --  raised if this potentially blocking operation is called from a
+       --  protected action.
+ 
+       if System.Tasking.Detect_Blocking
+         and then Self_Id.Common.Protected_Action_Nesting > 0
+       then
+          raise Program_Error with
+            "potentially blocking operation";
+       end if;
+ 
+       Initialization.Defer_Abort (Self_Id);
+       Self_Id.ATC_Nesting_Level := Self_Id.ATC_Nesting_Level + 1;
+ 
+       pragma Debug
+         (Debug.Trace (Self_Id, "TTEC: entered ATC level: " &
+          ATC_Level'Image (Self_Id.ATC_Nesting_Level), 'A'));
+ 
+       Level := Self_Id.ATC_Nesting_Level;
+       Entry_Call := Self_Id.Entry_Calls (Level)'Access;
+       Entry_Call.Next := null;
+       Entry_Call.Mode := Timed_Call;
+       Entry_Call.Cancellation_Attempted := False;
+ 
+       --  If this is a call made inside of an abort deferred region,
+       --  the call should be never abortable.
+ 
+       Entry_Call.State :=
+         (if Self_Id.Deferral_Level > 1
+          then Never_Abortable
+          else Now_Abortable);
+ 
+       Entry_Call.E := Entry_Index (E);
+       Entry_Call.Prio := Get_Priority (Self_Id);
+       Entry_Call.Uninterpreted_Data := Uninterpreted_Data;
+       Entry_Call.Called_Task := Acceptor;
+       Entry_Call.Called_PO := Null_Address;
+       Entry_Call.Exception_To_Raise := Ada.Exceptions.Null_Id;
+       Entry_Call.With_Abort := True;
+ 
+       --  Note: the caller will undefer abort on return (see WARNING above)
+ 
+       if Single_Lock then
+          Lock_RTS;
+       end if;
+ 
+       if not Task_Do_Or_Queue (Self_Id, Entry_Call) then
+          STPO.Write_Lock (Self_Id);
+          Utilities.Exit_One_ATC_Level (Self_Id);
+          STPO.Unlock (Self_Id);
+ 
+          if Single_Lock then
+             Unlock_RTS;
+          end if;
+ 
+          Initialization.Undefer_Abort (Self_Id);
+ 
+          raise Tasking_Error;
+       end if;
+ 
+       Write_Lock (Self_Id);
+       Entry_Calls.Wait_For_Completion_With_Timeout
+         (Entry_Call, Timeout, Mode, Yielded);
+       Unlock (Self_Id);
+ 
+       if Single_Lock then
+          Unlock_RTS;
+       end if;
+ 
+       --  ??? Do we need to yield in case Yielded is False
+ 
+       Rendezvous_Successful := Entry_Call.State = Done;
+       Initialization.Undefer_Abort (Self_Id);
+       Entry_Calls.Check_Exception (Self_Id, Entry_Call);
+    end Timed_Task_Entry_Call;
+ 
+    -------------------
+    -- Wait_For_Call --
+    -------------------
+ 
+    procedure Wait_For_Call (Self_Id : Task_Id) is
+    begin
+       Self_Id.Common.State := Acceptor_Sleep;
+ 
+       --  Try to remove calls to Sleep in the loop below by letting the caller
+       --  a chance of getting ready immediately, using Unlock & Yield.
+       --  See similar action in Wait_For_Completion & Timed_Selective_Wait.
+ 
+       if Single_Lock then
+          Unlock_RTS;
+       else
+          Unlock (Self_Id);
+       end if;
+ 
+       if Self_Id.Open_Accepts /= null then
+          Yield;
+       end if;
+ 
+       if Single_Lock then
+          Lock_RTS;
+       else
+          Write_Lock (Self_Id);
+       end if;
+ 
+       --  Check if this task has been aborted while the lock was released
+ 
+       if Self_Id.Pending_ATC_Level < Self_Id.ATC_Nesting_Level then
+          Self_Id.Open_Accepts := null;
+       end if;
+ 
+       loop
+          exit when Self_Id.Open_Accepts = null;
+          Sleep (Self_Id, Acceptor_Sleep);
+       end loop;
+ 
+       Self_Id.Common.State := Runnable;
+    end Wait_For_Call;
+ 
+ end System.Tasking.Rendezvous;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-tasren.ads gcc-8.1.0/gcc/ada/libgnarl/s-tasren.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-tasren.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-tasren.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,330 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --             S Y S T E M . T A S K I N G . R E N D E Z V O U S            --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Note: the compiler generates direct calls to this interface, via Rtsfind.
+ --  Any changes to this interface may require corresponding compiler changes.
+ 
+ with Ada.Exceptions;
+ 
+ with System.Tasking.Protected_Objects.Entries;
+ 
+ package System.Tasking.Rendezvous is
+ 
+    package STPE renames System.Tasking.Protected_Objects.Entries;
+ 
+    procedure Task_Entry_Call
+      (Acceptor              : Task_Id;
+       E                     : Task_Entry_Index;
+       Uninterpreted_Data    : System.Address;
+       Mode                  : Call_Modes;
+       Rendezvous_Successful : out Boolean);
+    --  General entry call used to implement ATC or conditional entry calls.
+    --  Compiler interface only. Do not call from within the RTS.
+    --  Acceptor is the ID of the acceptor task.
+    --  E is the entry index requested.
+    --  Uninterpreted_Data represents the parameters of the entry. It is
+    --  constructed by the compiler for the caller and the callee; therefore,
+    --  the run time never needs to decode this data.
+    --  Mode can be either Asynchronous_Call (ATC) or Conditional_Call.
+    --  Rendezvous_Successful is set to True on return if the call was serviced.
+ 
+    procedure Timed_Task_Entry_Call
+      (Acceptor              : Task_Id;
+       E                     : Task_Entry_Index;
+       Uninterpreted_Data    : System.Address;
+       Timeout               : Duration;
+       Mode                  : Delay_Modes;
+       Rendezvous_Successful : out Boolean);
+    --  Timed entry call without using ATC.
+    --  Compiler interface only. Do not call from within the RTS.
+    --  See Task_Entry_Call for details on Acceptor, E and Uninterpreted_Data.
+    --  Timeout is the value of the time out.
+    --  Mode determines whether the delay is relative or absolute.
+ 
+    procedure Call_Simple
+      (Acceptor           : Task_Id;
+       E                  : Task_Entry_Index;
+       Uninterpreted_Data : System.Address);
+    --  Simple entry call.
+    --  Compiler interface only. Do not call from within the RTS.
+    --
+    --  source:
+    --     T.E1 (Params);
+    --
+    --  expansion:
+    --    declare
+    --       P : parms := (parm1, parm2, parm3);
+    --       X : Task_Entry_Index := 1;
+    --    begin
+    --       Call_Simple (t._task_id, X, P'Address);
+    --       parm1 := P.param1;
+    --       parm2 := P.param2;
+    --       ...
+    --    end;
+ 
+    procedure Cancel_Task_Entry_Call (Cancelled : out Boolean);
+    --  Cancel pending asynchronous task entry call.
+    --  Compiler interface only. Do not call from within the RTS.
+    --  See Exp_Ch9.Expand_N_Asynchronous_Select for code expansion.
+ 
+    procedure Requeue_Task_Entry
+      (Acceptor   : Task_Id;
+       E          : Task_Entry_Index;
+       With_Abort : Boolean);
+    --  Requeue from a task entry to a task entry.
+    --  Compiler interface only. Do not call from within the RTS.
+    --  The code generation for task entry requeues is different from that for
+    --  protected entry requeues. There is a "goto" that skips around the call
+    --  to Complete_Rendezvous, so that Requeue_Task_Entry must also do the work
+    --  of Complete_Rendezvous. The difference is that it does not report that
+    --  the call's State = Done.
+    --
+    --  source:
+    --     accept e1 do
+    --       ...A...
+    --       requeue e2;
+    --       ...B...
+    --     end e1;
+    --
+    --  expansion:
+    --     A62b : address;
+    --     L61b : label
+    --     begin
+    --        accept_call (1, A62b);
+    --        ...A...
+    --        requeue_task_entry (tTV!(t)._task_id, 2, false);
+    --        goto L61b;
+    --        ...B...
+    --        complete_rendezvous;
+    --        <<L61b>>
+    --     exception
+    --        when others =>
+    --           exceptional_complete_rendezvous (current_exception);
+    --     end;
+ 
+    procedure Requeue_Protected_To_Task_Entry
+      (Object     : STPE.Protection_Entries_Access;
+       Acceptor   : Task_Id;
+       E          : Task_Entry_Index;
+       With_Abort : Boolean);
+    --  Requeue from a protected entry to a task entry.
+    --  Compiler interface only. Do not call from within the RTS.
+    --
+    --  source:
+    --     entry e2 when b is
+    --     begin
+    --        b := false;
+    --        ...A...
+    --        requeue t.e2;
+    --     end e2;
+    --
+    --  expansion:
+    --     procedure rPT__E14b (O : address; P : address; E :
+    --       protected_entry_index) is
+    --        type rTVP is access rTV;
+    --        freeze rTVP []
+    --        _object : rTVP := rTVP!(O);
+    --     begin
+    --        declare
+    --           rR : protection renames _object._object;
+    --           vP : integer renames _object.v;
+    --           bP : boolean renames _object.b;
+    --        begin
+    --           b := false;
+    --           ...A...
+    --           requeue_protected_to_task_entry (rR'unchecked_access, tTV!(t).
+    --             _task_id, 2, false);
+    --           return;
+    --        end;
+    --        complete_entry_body (_object._object'unchecked_access, objectF =>
+    --          0);
+    --        return;
+    --     exception
+    --        when others =>
+    --           abort_undefer.all;
+    --           exceptional_complete_entry_body (_object._object'
+    --             unchecked_access, current_exception, objectF => 0);
+    --           return;
+    --     end rPT__E14b;
+ 
+    procedure Selective_Wait
+      (Open_Accepts       : Accept_List_Access;
+       Select_Mode        : Select_Modes;
+       Uninterpreted_Data : out System.Address;
+       Index              : out Select_Index);
+    --  Implement select statement.
+    --  Compiler interface only. Do not call from within the RTS.
+    --  See comments on Accept_Call.
+    --
+    --  source:
+    --     select accept e1 do
+    --           ...A...
+    --        end e1;
+    --        ...B...
+    --     or accept e2;
+    --        ...C...
+    --     end select;
+    --
+    --  expansion:
+    --     A32b : address;
+    --     declare
+    --        A37b : T36b;
+    --        A37b (1) := (null_body => false, s => 1);
+    --        A37b (2) := (null_body => true, s => 2);
+    --        S0 : aliased T36b := accept_list'A37b;
+    --        J1 : select_index := 0;
+    --        procedure e1A is
+    --        begin
+    --           abort_undefer.all;
+    --           ...A...
+    --           <<L31b>>
+    --           complete_rendezvous;
+    --        exception
+    --           when all others =>
+    --              exceptional_complete_rendezvous (get_gnat_exception);
+    --        end e1A;
+    --     begin
+    --        selective_wait (S0'unchecked_access, simple_mode, A32b, J1);
+    --        case J1 is
+    --           when 0 =>
+    --              goto L3;
+    --           when 1 =>
+    --              e1A;
+    --              goto L1;
+    --           when 2 =>
+    --              goto L2;
+    --           when others =>
+    --              goto L3;
+    --        end case;
+    --        <<L1>>
+    --        ...B...
+    --        goto L3;
+    --        <<L2>>
+    --        ...C...
+    --        goto L3;
+    --        <<L3>>
+    --     end;
+ 
+    procedure Timed_Selective_Wait
+      (Open_Accepts       : Accept_List_Access;
+       Select_Mode        : Select_Modes;
+       Uninterpreted_Data : out System.Address;
+       Timeout            : Duration;
+       Mode               : Delay_Modes;
+       Index              : out Select_Index);
+    --  Selective wait with timeout without using ATC.
+    --  Compiler interface only. Do not call from within the RTS.
+ 
+    procedure Accept_Call
+      (E                  : Task_Entry_Index;
+       Uninterpreted_Data : out System.Address);
+    --  Accept an entry call.
+    --  Compiler interface only. Do not call from within the RTS.
+    --
+    --  source:
+    --              accept E do  ...A... end E;
+    --  expansion:
+    --              A27b : address;
+    --              L26b : label
+    --              begin
+    --                 accept_call (1, A27b);
+    --                 ...A...
+    --                 complete_rendezvous;
+    --              <<L26b>>
+    --              exception
+    --              when all others =>
+    --                 exceptional_complete_rendezvous (get_gnat_exception);
+    --              end;
+    --
+    --  The handler for Abort_Signal (*all* others) is to handle the case when
+    --  the acceptor is aborted between Accept_Call and the corresponding
+    --  Complete_Rendezvous call. We need to wake up the caller in this case.
+    --
+    --   See also Selective_Wait
+ 
+    procedure Accept_Trivial (E : Task_Entry_Index);
+    --  Accept an entry call that has no parameters and no body.
+    --  Compiler interface only. Do not call from within the RTS.
+    --  This should only be called when there is no accept body, or the accept
+    --  body is empty.
+    --
+    --  source:
+    --               accept E;
+    --  expansion:
+    --               accept_trivial (1);
+    --
+    --  The compiler is also able to recognize the following and
+    --  translate it the same way.
+    --
+    --     accept E do null; end E;
+ 
+    function Task_Count (E : Task_Entry_Index) return Natural;
+    --  Return number of tasks waiting on the entry E (of current task)
+    --  Compiler interface only. Do not call from within the RTS.
+ 
+    function Callable (T : Task_Id) return Boolean;
+    --  Return T'Callable
+    --  Compiler interface. Do not call from within the RTS, except for body of
+    --  Ada.Task_Identification.
+ 
+    type Task_Entry_Nesting_Depth is new Task_Entry_Index
+      range 0 .. Max_Task_Entry;
+ 
+    function Task_Entry_Caller (D : Task_Entry_Nesting_Depth) return Task_Id;
+    --  Return E'Caller. This will only work if called from within an
+    --  accept statement that is handling E, as required by the LRM (C.7.1(14)).
+    --  Compiler interface only. Do not call from within the RTS.
+ 
+    procedure Complete_Rendezvous;
+    --  Called by acceptor to wake up caller
+ 
+    procedure Exceptional_Complete_Rendezvous
+      (Ex : Ada.Exceptions.Exception_Id);
+    pragma No_Return (Exceptional_Complete_Rendezvous);
+    --  Called by acceptor to mark the end of the current rendezvous and
+    --  propagate an exception to the caller.
+ 
+    --  For internal use only:
+ 
+    function Task_Do_Or_Queue
+      (Self_ID    : Task_Id;
+       Entry_Call : Entry_Call_Link) return Boolean;
+    --  Call this only with abort deferred and holding no locks, except
+    --  the global RTS lock when Single_Lock is True which must be owned.
+    --  Returns False iff the call cannot be served or queued, as is the
+    --  case if the caller is not callable; i.e., a False return value
+    --  indicates that Tasking_Error should be raised.
+    --  Either initiate the entry call, such that the accepting task is
+    --  free to execute the rendezvous, queue the call on the acceptor's
+    --  queue, or cancel the call. Conditional calls that cannot be
+    --  accepted immediately are cancelled.
+ 
+ end System.Tasking.Rendezvous;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-tasres.ads gcc-8.1.0/gcc/ada/libgnarl/s-tasres.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-tasres.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-tasres.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,35 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --             S Y S T E M . T A S K I N G . R E S T R I C T E D            --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --           Copyright (C) 1998-2018, Free Software Foundation, Inc.        --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is the parent package of the GNAT restricted tasking run time
+ 
+ package System.Tasking.Restricted is
+ end System.Tasking.Restricted;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-tassta.adb gcc-8.1.0/gcc/ada/libgnarl/s-tassta.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-tassta.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-tassta.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,2068 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                 S Y S T E M . T A S K I N G . S T A G E S                --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --         Copyright (C) 1992-2018, Free Software Foundation, Inc.          --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ pragma Polling (Off);
+ --  Turn off polling, we do not want ATC polling to take place during tasking
+ --  operations. It causes infinite loops and other problems.
+ 
+ pragma Partition_Elaboration_Policy (Concurrent);
+ --  This package only implements the concurrent elaboration policy. This pragma
+ --  will enforce it (and detect conflicts with user specified policy).
+ 
+ with Ada.Exceptions;
+ with Ada.Unchecked_Deallocation;
+ 
+ with System.Interrupt_Management;
+ with System.Tasking.Debug;
+ with System.Address_Image;
+ with System.Task_Primitives;
+ with System.Task_Primitives.Operations;
+ with System.Tasking.Utilities;
+ with System.Tasking.Queuing;
+ with System.Tasking.Rendezvous;
+ with System.OS_Primitives;
+ with System.Secondary_Stack;
+ with System.Restrictions;
+ with System.Standard_Library;
+ with System.Stack_Usage;
+ with System.Storage_Elements;
+ 
+ with System.Soft_Links;
+ --  These are procedure pointers to non-tasking routines that use task
+ --  specific data. In the absence of tasking, these routines refer to global
+ --  data. In the presence of tasking, they must be replaced with pointers to
+ --  task-specific versions. Also used for Create_TSD, Destroy_TSD, Get_Current
+ --  _Excep, Finalize_Library_Objects, Task_Termination, Handler.
+ 
+ with System.Tasking.Initialization;
+ pragma Elaborate_All (System.Tasking.Initialization);
+ --  This insures that tasking is initialized if any tasks are created
+ 
+ package body System.Tasking.Stages is
+ 
+    package STPO renames System.Task_Primitives.Operations;
+    package SSL  renames System.Soft_Links;
+    package SSE  renames System.Storage_Elements;
+ 
+    use Ada.Exceptions;
+ 
+    use Parameters;
+    use Secondary_Stack;
+    use Task_Primitives;
+    use Task_Primitives.Operations;
+ 
+    -----------------------
+    -- Local Subprograms --
+    -----------------------
+ 
+    procedure Free is new
+      Ada.Unchecked_Deallocation (Ada_Task_Control_Block, Task_Id);
+ 
+    procedure Trace_Unhandled_Exception_In_Task (Self_Id : Task_Id);
+    --  This procedure outputs the task specific message for exception
+    --  tracing purposes.
+ 
+    procedure Task_Wrapper (Self_ID : Task_Id);
+    pragma Convention (C, Task_Wrapper);
+    --  This is the procedure that is called by the GNULL from the new context
+    --  when a task is created. It waits for activation and then calls the task
+    --  body procedure. When the task body procedure completes, it terminates
+    --  the task.
+    --
+    --  The Task_Wrapper's address will be provided to the underlying threads
+    --  library as the task entry point. Convention C is what makes most sense
+    --  for that purpose (Export C would make the function globally visible,
+    --  and affect the link name on which GDB depends). This will in addition
+    --  trigger an automatic stack alignment suitable for GCC's assumptions if
+    --  need be.
+ 
+    --  "Vulnerable_..." in the procedure names below means they must be called
+    --  with abort deferred.
+ 
+    procedure Vulnerable_Complete_Task (Self_ID : Task_Id);
+    --  Complete the calling task. This procedure must be called with
+    --  abort deferred. It should only be called by Complete_Task and
+    --  Finalize_Global_Tasks (for the environment task).
+ 
+    procedure Vulnerable_Complete_Master (Self_ID : Task_Id);
+    --  Complete the current master of the calling task. This procedure
+    --  must be called with abort deferred. It should only be called by
+    --  Vulnerable_Complete_Task and Complete_Master.
+ 
+    procedure Vulnerable_Complete_Activation (Self_ID : Task_Id);
+    --  Signal to Self_ID's activator that Self_ID has completed activation.
+    --  This procedure must be called with abort deferred.
+ 
+    procedure Abort_Dependents (Self_ID : Task_Id);
+    --  Abort all the direct dependents of Self at its current master nesting
+    --  level, plus all of their dependents, transitively. RTS_Lock should be
+    --  locked by the caller.
+ 
+    procedure Vulnerable_Free_Task (T : Task_Id);
+    --  Recover all runtime system storage associated with the task T. This
+    --  should only be called after T has terminated and will no longer be
+    --  referenced.
+    --
+    --  For tasks created by an allocator that fails, due to an exception, it is
+    --  called from Expunge_Unactivated_Tasks.
+    --
+    --  Different code is used at master completion, in Terminate_Dependents,
+    --  due to a need for tighter synchronization with the master.
+ 
+    ----------------------
+    -- Abort_Dependents --
+    ----------------------
+ 
+    procedure Abort_Dependents (Self_ID : Task_Id) is
+       C : Task_Id;
+       P : Task_Id;
+ 
+       --  Each task C will take care of its own dependents, so there is no
+       --  need to worry about them here. In fact, it would be wrong to abort
+       --  indirect dependents here, because we can't distinguish between
+       --  duplicate master ids. For example, suppose we have three nested
+       --  task bodies T1,T2,T3. And suppose T1 also calls P which calls Q (and
+       --  both P and Q are task masters). Q will have the same master id as
+       --  Master_Of_Task of T3. Previous versions of this would abort T3 when
+       --  Q calls Complete_Master, which was completely wrong.
+ 
+    begin
+       C := All_Tasks_List;
+       while C /= null loop
+          P := C.Common.Parent;
+ 
+          if P = Self_ID then
+             if C.Master_Of_Task = Self_ID.Master_Within then
+                pragma Debug
+                  (Debug.Trace (Self_ID, "Aborting", 'X', C));
+                Utilities.Abort_One_Task (Self_ID, C);
+                C.Dependents_Aborted := True;
+             end if;
+          end if;
+ 
+          C := C.Common.All_Tasks_Link;
+       end loop;
+ 
+       Self_ID.Dependents_Aborted := True;
+    end Abort_Dependents;
+ 
+    -----------------
+    -- Abort_Tasks --
+    -----------------
+ 
+    procedure Abort_Tasks (Tasks : Task_List) is
+    begin
+       Utilities.Abort_Tasks (Tasks);
+    end Abort_Tasks;
+ 
+    --------------------
+    -- Activate_Tasks --
+    --------------------
+ 
+    --  Note that locks of activator and activated task are both locked here.
+    --  This is necessary because C.Common.State and Self.Common.Wait_Count have
+    --  to be synchronized. This is safe from deadlock because the activator is
+    --  always created before the activated task. That satisfies our
+    --  in-order-of-creation ATCB locking policy.
+ 
+    --  At one point, we may also lock the parent, if the parent is different
+    --  from the activator. That is also consistent with the lock ordering
+    --  policy, since the activator cannot be created before the parent.
+ 
+    --  Since we are holding both the activator's lock, and Task_Wrapper locks
+    --  that before it does anything more than initialize the low-level ATCB
+    --  components, it should be safe to wait to update the counts until we see
+    --  that the thread creation is successful.
+ 
+    --  If the thread creation fails, we do need to close the entries of the
+    --  task. The first phase, of dequeuing calls, only requires locking the
+    --  acceptor's ATCB, but the waking up of the callers requires locking the
+    --  caller's ATCB. We cannot safely do this while we are holding other
+    --  locks. Therefore, the queue-clearing operation is done in a separate
+    --  pass over the activation chain.
+ 
+    procedure Activate_Tasks (Chain_Access : Activation_Chain_Access) is
+       Self_ID        : constant Task_Id := STPO.Self;
+       P              : Task_Id;
+       C              : Task_Id;
+       Next_C, Last_C : Task_Id;
+       Activate_Prio  : System.Any_Priority;
+       Success        : Boolean;
+       All_Elaborated : Boolean := True;
+ 
+    begin
+       --  If pragma Detect_Blocking is active, then we must check whether this
+       --  potentially blocking operation is called from a protected action.
+ 
+       if System.Tasking.Detect_Blocking
+         and then Self_ID.Common.Protected_Action_Nesting > 0
+       then
+          raise Program_Error with "potentially blocking operation";
+       end if;
+ 
+       pragma Debug
+         (Debug.Trace (Self_ID, "Activate_Tasks", 'C'));
+ 
+       Initialization.Defer_Abort_Nestable (Self_ID);
+ 
+       pragma Assert (Self_ID.Common.Wait_Count = 0);
+ 
+       --  Lock RTS_Lock, to prevent activated tasks from racing ahead before
+       --  we finish activating the chain.
+ 
+       Lock_RTS;
+ 
+       --  Check that all task bodies have been elaborated
+ 
+       C := Chain_Access.T_ID;
+       Last_C := null;
+       while C /= null loop
+          if C.Common.Elaborated /= null
+            and then not C.Common.Elaborated.all
+          then
+             All_Elaborated := False;
+          end if;
+ 
+          --  Reverse the activation chain so that tasks are activated in the
+          --  same order they're declared.
+ 
+          Next_C := C.Common.Activation_Link;
+          C.Common.Activation_Link := Last_C;
+          Last_C := C;
+          C := Next_C;
+       end loop;
+ 
+       Chain_Access.T_ID := Last_C;
+ 
+       if not All_Elaborated then
+          Unlock_RTS;
+          Initialization.Undefer_Abort_Nestable (Self_ID);
+          raise Program_Error with "Some tasks have not been elaborated";
+       end if;
+ 
+       --  Activate all the tasks in the chain. Creation of the thread of
+       --  control was deferred until activation. So create it now.
+ 
+       C := Chain_Access.T_ID;
+       while C /= null loop
+          if C.Common.State /= Terminated then
+             pragma Assert (C.Common.State = Unactivated);
+ 
+             P := C.Common.Parent;
+             Write_Lock (P);
+             Write_Lock (C);
+ 
+             Activate_Prio :=
+               (if C.Common.Base_Priority < Get_Priority (Self_ID)
+                then Get_Priority (Self_ID)
+                else C.Common.Base_Priority);
+ 
+             System.Task_Primitives.Operations.Create_Task
+               (C, Task_Wrapper'Address,
+                Parameters.Size_Type
+                  (C.Common.Compiler_Data.Pri_Stack_Info.Size),
+                Activate_Prio, Success);
+ 
+             --  There would be a race between the created task and the creator
+             --  to do the following initialization, if we did not have a
+             --  Lock/Unlock_RTS pair in the task wrapper to prevent it from
+             --  racing ahead.
+ 
+             if Success then
+                C.Common.State := Activating;
+                C.Awake_Count := 1;
+                C.Alive_Count := 1;
+                P.Awake_Count := P.Awake_Count + 1;
+                P.Alive_Count := P.Alive_Count + 1;
+ 
+                if P.Common.State = Master_Completion_Sleep and then
+                  C.Master_Of_Task = P.Master_Within
+                then
+                   pragma Assert (Self_ID /= P);
+                   P.Common.Wait_Count := P.Common.Wait_Count + 1;
+                end if;
+ 
+                for J in System.Tasking.Debug.Known_Tasks'Range loop
+                   if System.Tasking.Debug.Known_Tasks (J) = null then
+                      System.Tasking.Debug.Known_Tasks (J) := C;
+                      C.Known_Tasks_Index := J;
+                      exit;
+                   end if;
+                end loop;
+ 
+                if Global_Task_Debug_Event_Set then
+                   Debug.Signal_Debug_Event
+                    (Debug.Debug_Event_Activating, C);
+                end if;
+ 
+                C.Common.State := Runnable;
+ 
+                Unlock (C);
+                Unlock (P);
+ 
+             else
+                --  No need to set Awake_Count, State, etc. here since the loop
+                --  below will do that for any Unactivated tasks.
+ 
+                Unlock (C);
+                Unlock (P);
+                Self_ID.Common.Activation_Failed := True;
+             end if;
+          end if;
+ 
+          C := C.Common.Activation_Link;
+       end loop;
+ 
+       if not Single_Lock then
+          Unlock_RTS;
+       end if;
+ 
+       --  Close the entries of any tasks that failed thread creation, and count
+       --  those that have not finished activation.
+ 
+       Write_Lock (Self_ID);
+       Self_ID.Common.State := Activator_Sleep;
+ 
+       C := Chain_Access.T_ID;
+       while C /= null loop
+          Write_Lock (C);
+ 
+          if C.Common.State = Unactivated then
+             C.Common.Activator := null;
+             C.Common.State := Terminated;
+             C.Callable := False;
+             Utilities.Cancel_Queued_Entry_Calls (C);
+ 
+          elsif C.Common.Activator /= null then
+             Self_ID.Common.Wait_Count := Self_ID.Common.Wait_Count + 1;
+          end if;
+ 
+          Unlock (C);
+          P := C.Common.Activation_Link;
+          C.Common.Activation_Link := null;
+          C := P;
+       end loop;
+ 
+       --  Wait for the activated tasks to complete activation. It is
+       --  unsafe to abort any of these tasks until the count goes to zero.
+ 
+       loop
+          exit when Self_ID.Common.Wait_Count = 0;
+          Sleep (Self_ID, Activator_Sleep);
+       end loop;
+ 
+       Self_ID.Common.State := Runnable;
+       Unlock (Self_ID);
+ 
+       if Single_Lock then
+          Unlock_RTS;
+       end if;
+ 
+       --  Remove the tasks from the chain
+ 
+       Chain_Access.T_ID := null;
+       Initialization.Undefer_Abort_Nestable (Self_ID);
+ 
+       if Self_ID.Common.Activation_Failed then
+          Self_ID.Common.Activation_Failed := False;
+          raise Tasking_Error with "Failure during activation";
+       end if;
+    end Activate_Tasks;
+ 
+    -------------------------
+    -- Complete_Activation --
+    -------------------------
+ 
+    procedure Complete_Activation is
+       Self_ID : constant Task_Id := STPO.Self;
+ 
+    begin
+       Initialization.Defer_Abort_Nestable (Self_ID);
+ 
+       if Single_Lock then
+          Lock_RTS;
+       end if;
+ 
+       Vulnerable_Complete_Activation (Self_ID);
+ 
+       if Single_Lock then
+          Unlock_RTS;
+       end if;
+ 
+       Initialization.Undefer_Abort_Nestable (Self_ID);
+ 
+       --  ??? Why do we need to allow for nested deferral here?
+ 
+    end Complete_Activation;
+ 
+    ---------------------
+    -- Complete_Master --
+    ---------------------
+ 
+    procedure Complete_Master is
+       Self_ID : constant Task_Id := STPO.Self;
+    begin
+       pragma Assert
+         (Self_ID.Deferral_Level > 0
+           or else not System.Restrictions.Abort_Allowed);
+       Vulnerable_Complete_Master (Self_ID);
+    end Complete_Master;
+ 
+    -------------------
+    -- Complete_Task --
+    -------------------
+ 
+    --  See comments on Vulnerable_Complete_Task for details
+ 
+    procedure Complete_Task is
+       Self_ID  : constant Task_Id := STPO.Self;
+ 
+    begin
+       pragma Assert
+         (Self_ID.Deferral_Level > 0
+           or else not System.Restrictions.Abort_Allowed);
+ 
+       Vulnerable_Complete_Task (Self_ID);
+ 
+       --  All of our dependents have terminated, never undefer abort again
+ 
+    end Complete_Task;
+ 
+    -----------------
+    -- Create_Task --
+    -----------------
+ 
+    --  Compiler interface only. Do not call from within the RTS. This must be
+    --  called to create a new task.
+ 
+    procedure Create_Task
+      (Priority             : Integer;
+       Stack_Size           : System.Parameters.Size_Type;
+       Secondary_Stack_Size : System.Parameters.Size_Type;
+       Task_Info            : System.Task_Info.Task_Info_Type;
+       CPU                  : Integer;
+       Relative_Deadline    : Ada.Real_Time.Time_Span;
+       Domain               : Dispatching_Domain_Access;
+       Num_Entries          : Task_Entry_Index;
+       Master               : Master_Level;
+       State                : Task_Procedure_Access;
+       Discriminants        : System.Address;
+       Elaborated           : Access_Boolean;
+       Chain                : in out Activation_Chain;
+       Task_Image           : String;
+       Created_Task         : out Task_Id)
+    is
+       T, P          : Task_Id;
+       Self_ID       : constant Task_Id := STPO.Self;
+       Success       : Boolean;
+       Base_Priority : System.Any_Priority;
+       Len           : Natural;
+       Base_CPU      : System.Multiprocessors.CPU_Range;
+ 
+       use type System.Multiprocessors.CPU_Range;
+ 
+       pragma Unreferenced (Relative_Deadline);
+       --  EDF scheduling is not supported by any of the target platforms so
+       --  this parameter is not passed any further.
+ 
+    begin
+       --  If Master is greater than the current master, it means that Master
+       --  has already awaited its dependent tasks. This raises Program_Error,
+       --  by 4.8(10.3/2). See AI-280. Ignore this check for foreign threads.
+ 
+       if Self_ID.Master_Of_Task /= Foreign_Task_Level
+         and then Master > Self_ID.Master_Within
+       then
+          raise Program_Error with
+            "create task after awaiting termination";
+       end if;
+ 
+       --  If pragma Detect_Blocking is active must be checked whether this
+       --  potentially blocking operation is called from a protected action.
+ 
+       if System.Tasking.Detect_Blocking
+         and then Self_ID.Common.Protected_Action_Nesting > 0
+       then
+          raise Program_Error with "potentially blocking operation";
+       end if;
+ 
+       pragma Debug (Debug.Trace (Self_ID, "Create_Task", 'C'));
+ 
+       Base_Priority :=
+         (if Priority = Unspecified_Priority
+          then Self_ID.Common.Base_Priority
+          else System.Any_Priority (Priority));
+ 
+       --  Legal values of CPU are the special Unspecified_CPU value which is
+       --  inserted by the compiler for tasks without CPU aspect, and those in
+       --  the range of CPU_Range but no greater than Number_Of_CPUs. Otherwise
+       --  the task is defined to have failed, and it becomes a completed task
+       --  (RM D.16(14/3)).
+ 
+       if CPU /= Unspecified_CPU
+         and then (CPU < Integer (System.Multiprocessors.CPU_Range'First)
+                     or else
+                   CPU > Integer (System.Multiprocessors.Number_Of_CPUs))
+       then
+          raise Tasking_Error with "CPU not in range";
+ 
+       --  Normal CPU affinity
+ 
+       else
+          --  When the application code says nothing about the task affinity
+          --  (task without CPU aspect) then the compiler inserts the value
+          --  Unspecified_CPU which indicates to the run-time library that
+          --  the task will activate and execute on the same processor as its
+          --  activating task if the activating task is assigned a processor
+          --  (RM D.16(14/3)).
+ 
+          Base_CPU :=
+            (if CPU = Unspecified_CPU
+             then Self_ID.Common.Base_CPU
+             else System.Multiprocessors.CPU_Range (CPU));
+       end if;
+ 
+       --  Find parent P of new Task, via master level number. Independent
+       --  tasks should have Parent = Environment_Task, and all tasks created
+       --  by independent tasks are also independent. See, for example,
+       --  s-interr.adb, where Interrupt_Manager does "new Server_Task". The
+       --  access type is at library level, so the parent of the Server_Task
+       --  is Environment_Task.
+ 
+       P := Self_ID;
+ 
+       if P.Master_Of_Task <= Independent_Task_Level then
+          P := Environment_Task;
+       else
+          while P /= null and then P.Master_Of_Task >= Master loop
+             P := P.Common.Parent;
+          end loop;
+       end if;
+ 
+       Initialization.Defer_Abort_Nestable (Self_ID);
+ 
+       begin
+          T := New_ATCB (Num_Entries);
+       exception
+          when others =>
+             Initialization.Undefer_Abort_Nestable (Self_ID);
+             raise Storage_Error with "Cannot allocate task";
+       end;
+ 
+       --  RTS_Lock is used by Abort_Dependents and Abort_Tasks. Up to this
+       --  point, it is possible that we may be part of a family of tasks that
+       --  is being aborted.
+ 
+       Lock_RTS;
+       Write_Lock (Self_ID);
+ 
+       --  Now, we must check that we have not been aborted. If so, we should
+       --  give up on creating this task, and simply return.
+ 
+       if not Self_ID.Callable then
+          pragma Assert (Self_ID.Pending_ATC_Level = 0);
+          pragma Assert (Self_ID.Pending_Action);
+          pragma Assert
+            (Chain.T_ID = null or else Chain.T_ID.Common.State = Unactivated);
+ 
+          Unlock (Self_ID);
+          Unlock_RTS;
+          Initialization.Undefer_Abort_Nestable (Self_ID);
+ 
+          --  ??? Should never get here
+ 
+          pragma Assert (False);
+          raise Standard'Abort_Signal;
+       end if;
+ 
+       Initialize_ATCB (Self_ID, State, Discriminants, P, Elaborated,
+         Base_Priority, Base_CPU, Domain, Task_Info, Stack_Size, T, Success);
+ 
+       if not Success then
+          Free (T);
+          Unlock (Self_ID);
+          Unlock_RTS;
+          Initialization.Undefer_Abort_Nestable (Self_ID);
+          raise Storage_Error with "Failed to initialize task";
+       end if;
+ 
+       if Master = Foreign_Task_Level + 2 then
+ 
+          --  This should not happen, except when a foreign task creates non
+          --  library-level Ada tasks. In this case, we pretend the master is
+          --  a regular library level task, otherwise the run-time will get
+          --  confused when waiting for these tasks to terminate.
+ 
+          T.Master_Of_Task := Library_Task_Level;
+ 
+       else
+          T.Master_Of_Task := Master;
+       end if;
+ 
+       T.Master_Within := T.Master_Of_Task + 1;
+ 
+       for L in T.Entry_Calls'Range loop
+          T.Entry_Calls (L).Self := T;
+          T.Entry_Calls (L).Level := L;
+       end loop;
+ 
+       if Task_Image'Length = 0 then
+          T.Common.Task_Image_Len := 0;
+       else
+          Len := 1;
+          T.Common.Task_Image (1) := Task_Image (Task_Image'First);
+ 
+          --  Remove unwanted blank space generated by 'Image
+ 
+          for J in Task_Image'First + 1 .. Task_Image'Last loop
+             if Task_Image (J) /= ' '
+               or else Task_Image (J - 1) /= '('
+             then
+                Len := Len + 1;
+                T.Common.Task_Image (Len) := Task_Image (J);
+                exit when Len = T.Common.Task_Image'Last;
+             end if;
+          end loop;
+ 
+          T.Common.Task_Image_Len := Len;
+       end if;
+ 
+       --  Note: we used to have code here to initialize T.Commmon.Domain, but
+       --  that is not needed, since this is initialized in System.Tasking.
+ 
+       Unlock (Self_ID);
+       Unlock_RTS;
+ 
+       --  The CPU associated to the task (if any) must belong to the
+       --  dispatching domain.
+ 
+       if Base_CPU /= System.Multiprocessors.Not_A_Specific_CPU
+         and then
+           (Base_CPU not in T.Common.Domain'Range
+             or else not T.Common.Domain (Base_CPU))
+       then
+          Initialization.Undefer_Abort_Nestable (Self_ID);
+          raise Tasking_Error with "CPU not in dispatching domain";
+       end if;
+ 
+       --  To handle the interaction between pragma CPU and dispatching domains
+       --  we need to signal that this task is being allocated to a processor.
+       --  This is needed only for tasks belonging to the system domain (the
+       --  creation of new dispatching domains can only take processors from the
+       --  system domain) and only before the environment task calls the main
+       --  procedure (dispatching domains cannot be created after this).
+ 
+       if Base_CPU /= System.Multiprocessors.Not_A_Specific_CPU
+         and then T.Common.Domain = System.Tasking.System_Domain
+         and then not System.Tasking.Dispatching_Domains_Frozen
+       then
+          --  Increase the number of tasks attached to the CPU to which this
+          --  task is being moved.
+ 
+          Dispatching_Domain_Tasks (Base_CPU) :=
+            Dispatching_Domain_Tasks (Base_CPU) + 1;
+       end if;
+ 
+       --  Create the secondary stack for the task as early as possible during
+       --  in the creation of a task, since it may be used by the operation of
+       --  Ada code within the task.
+ 
+       begin
+          SSL.Create_TSD (T.Common.Compiler_Data, null, Secondary_Stack_Size);
+       exception
+          when others =>
+             Initialization.Undefer_Abort_Nestable (Self_ID);
+             raise Storage_Error with "Secondary stack could not be allocated";
+       end;
+ 
+       T.Common.Activation_Link := Chain.T_ID;
+       Chain.T_ID := T;
+       Created_Task := T;
+       Initialization.Undefer_Abort_Nestable (Self_ID);
+ 
+       pragma Debug
+         (Debug.Trace
+            (Self_ID, "Created task in " & T.Master_Of_Task'Img, 'C', T));
+    end Create_Task;
+ 
+    --------------------
+    -- Current_Master --
+    --------------------
+ 
+    function Current_Master return Master_Level is
+    begin
+       return STPO.Self.Master_Within;
+    end Current_Master;
+ 
+    ------------------
+    -- Enter_Master --
+    ------------------
+ 
+    procedure Enter_Master is
+       Self_ID : constant Task_Id := STPO.Self;
+    begin
+       Self_ID.Master_Within := Self_ID.Master_Within + 1;
+       pragma Debug
+         (Debug.Trace
+            (Self_ID, "Enter_Master ->" & Self_ID.Master_Within'Img, 'M'));
+    end Enter_Master;
+ 
+    -------------------------------
+    -- Expunge_Unactivated_Tasks --
+    -------------------------------
+ 
+    --  See procedure Close_Entries for the general case
+ 
+    procedure Expunge_Unactivated_Tasks (Chain : in out Activation_Chain) is
+       Self_ID : constant Task_Id := STPO.Self;
+       C       : Task_Id;
+       Call    : Entry_Call_Link;
+       Temp    : Task_Id;
+ 
+    begin
+       pragma Debug
+         (Debug.Trace (Self_ID, "Expunge_Unactivated_Tasks", 'C'));
+ 
+       Initialization.Defer_Abort_Nestable (Self_ID);
+ 
+       --  ???
+       --  Experimentation has shown that abort is sometimes (but not always)
+       --  already deferred when this is called.
+ 
+       --  That may indicate an error. Find out what is going on
+ 
+       C := Chain.T_ID;
+       while C /= null loop
+          pragma Assert (C.Common.State = Unactivated);
+ 
+          Temp := C.Common.Activation_Link;
+ 
+          if C.Common.State = Unactivated then
+             Lock_RTS;
+             Write_Lock (C);
+ 
+             for J in 1 .. C.Entry_Num loop
+                Queuing.Dequeue_Head (C.Entry_Queues (J), Call);
+                pragma Assert (Call = null);
+             end loop;
+ 
+             Unlock (C);
+ 
+             Initialization.Remove_From_All_Tasks_List (C);
+             Unlock_RTS;
+ 
+             Vulnerable_Free_Task (C);
+             C := Temp;
+          end if;
+       end loop;
+ 
+       Chain.T_ID := null;
+       Initialization.Undefer_Abort_Nestable (Self_ID);
+    end Expunge_Unactivated_Tasks;
+ 
+    ---------------------------
+    -- Finalize_Global_Tasks --
+    ---------------------------
+ 
+    --  ???
+    --  We have a potential problem here if finalization of global objects does
+    --  anything with signals or the timer server, since by that time those
+    --  servers have terminated.
+ 
+    --  It is hard to see how that would occur
+ 
+    --  However, a better solution might be to do all this finalization
+    --  using the global finalization chain.
+ 
+    procedure Finalize_Global_Tasks is
+       Self_ID : constant Task_Id := STPO.Self;
+ 
+       Ignore_1 : Boolean;
+       Ignore_2 : Boolean;
+ 
+       function State
+         (Int : System.Interrupt_Management.Interrupt_ID) return Character;
+       pragma Import (C, State, "__gnat_get_interrupt_state");
+       --  Get interrupt state for interrupt number Int. Defined in init.c
+ 
+       Default : constant Character := 's';
+       --    's'   Interrupt_State pragma set state to System (use "default"
+       --           system handler)
+ 
+    begin
+       if Self_ID.Deferral_Level = 0 then
+          --  ???
+          --  In principle, we should be able to predict whether abort is
+          --  already deferred here (and it should not be deferred yet but in
+          --  practice it seems Finalize_Global_Tasks is being called sometimes,
+          --  from RTS code for exceptions, with abort already deferred.
+ 
+          Initialization.Defer_Abort_Nestable (Self_ID);
+ 
+          --  Never undefer again
+       end if;
+ 
+       --  This code is only executed by the environment task
+ 
+       pragma Assert (Self_ID = Environment_Task);
+ 
+       --  Set Environment_Task'Callable to false to notify library-level tasks
+       --  that it is waiting for them.
+ 
+       Self_ID.Callable := False;
+ 
+       --  Exit level 2 master, for normal tasks in library-level packages
+ 
+       Complete_Master;
+ 
+       --  Force termination of "independent" library-level server tasks
+ 
+       Lock_RTS;
+ 
+       Abort_Dependents (Self_ID);
+ 
+       if not Single_Lock then
+          Unlock_RTS;
+       end if;
+ 
+       --  We need to explicitly wait for the task to be terminated here
+       --  because on true concurrent system, we may end this procedure before
+       --  the tasks are really terminated.
+ 
+       Write_Lock (Self_ID);
+ 
+       --  If the Abort_Task signal is set to system, it means that we may
+       --  not have been able to abort all independent tasks (in particular,
+       --  Server_Task may be blocked, waiting for a signal), in which case, do
+       --  not wait for Independent_Task_Count to go down to 0. We arbitrarily
+       --  limit the number of loop iterations; if an independent task does not
+       --  terminate, we do not want to hang here. In that case, the thread will
+       --  be terminated when the process exits.
+ 
+       if State (System.Interrupt_Management.Abort_Task_Interrupt) /= Default
+       then
+          for J in 1 .. 10 loop
+             exit when Utilities.Independent_Task_Count = 0;
+ 
+             --  We used to yield here, but this did not take into account low
+             --  priority tasks that would cause dead lock in some cases (true
+             --  FIFO scheduling).
+ 
+             Timed_Sleep
+               (Self_ID, 0.01, System.OS_Primitives.Relative,
+                Self_ID.Common.State, Ignore_1, Ignore_2);
+          end loop;
+       end if;
+ 
+       --  ??? On multi-processor environments, it seems that the above loop
+       --  isn't sufficient, so we need to add an additional delay.
+ 
+       Timed_Sleep
+         (Self_ID, 0.01, System.OS_Primitives.Relative,
+          Self_ID.Common.State, Ignore_1, Ignore_2);
+ 
+       Unlock (Self_ID);
+ 
+       if Single_Lock then
+          Unlock_RTS;
+       end if;
+ 
+       --  Complete the environment task
+ 
+       Vulnerable_Complete_Task (Self_ID);
+ 
+       --  Handle normal task termination by the environment task, but only
+       --  for the normal task termination. In the case of Abnormal and
+       --  Unhandled_Exception they must have been handled before, and the
+       --  task termination soft link must have been changed so the task
+       --  termination routine is not executed twice.
+ 
+       SSL.Task_Termination_Handler.all (Ada.Exceptions.Null_Occurrence);
+ 
+       --  Finalize all library-level controlled objects
+ 
+       if not SSL."=" (SSL.Finalize_Library_Objects, null) then
+          SSL.Finalize_Library_Objects.all;
+       end if;
+ 
+       --  Reset the soft links to non-tasking
+ 
+       SSL.Abort_Defer        := SSL.Abort_Defer_NT'Access;
+       SSL.Abort_Undefer      := SSL.Abort_Undefer_NT'Access;
+       SSL.Lock_Task          := SSL.Task_Lock_NT'Access;
+       SSL.Unlock_Task        := SSL.Task_Unlock_NT'Access;
+       SSL.Get_Jmpbuf_Address := SSL.Get_Jmpbuf_Address_NT'Access;
+       SSL.Set_Jmpbuf_Address := SSL.Set_Jmpbuf_Address_NT'Access;
+       SSL.Get_Sec_Stack      := SSL.Get_Sec_Stack_NT'Access;
+       SSL.Set_Sec_Stack      := SSL.Set_Sec_Stack_NT'Access;
+       SSL.Check_Abort_Status := SSL.Check_Abort_Status_NT'Access;
+       SSL.Get_Stack_Info     := SSL.Get_Stack_Info_NT'Access;
+ 
+       --  Don't bother trying to finalize Initialization.Global_Task_Lock
+       --  and System.Task_Primitives.RTS_Lock.
+ 
+    end Finalize_Global_Tasks;
+ 
+    ---------------
+    -- Free_Task --
+    ---------------
+ 
+    procedure Free_Task (T : Task_Id) is
+       Self_Id : constant Task_Id := Self;
+ 
+    begin
+       if T.Common.State = Terminated then
+ 
+          --  It is not safe to call Abort_Defer or Write_Lock at this stage
+ 
+          Initialization.Task_Lock (Self_Id);
+ 
+          Lock_RTS;
+          Initialization.Finalize_Attributes (T);
+          Initialization.Remove_From_All_Tasks_List (T);
+          Unlock_RTS;
+ 
+          Initialization.Task_Unlock (Self_Id);
+ 
+          System.Task_Primitives.Operations.Finalize_TCB (T);
+ 
+       else
+          --  If the task is not terminated, then mark the task as to be freed
+          --  upon termination.
+ 
+          T.Free_On_Termination := True;
+       end if;
+    end Free_Task;
+ 
+    ---------------------------
+    -- Move_Activation_Chain --
+    ---------------------------
+ 
+    procedure Move_Activation_Chain
+      (From, To   : Activation_Chain_Access;
+       New_Master : Master_ID)
+    is
+       Self_ID : constant Task_Id := STPO.Self;
+       C       : Task_Id;
+ 
+    begin
+       pragma Debug
+         (Debug.Trace (Self_ID, "Move_Activation_Chain", 'C'));
+ 
+       --  Nothing to do if From is empty, and we can check that without
+       --  deferring aborts.
+ 
+       C := From.all.T_ID;
+ 
+       if C = null then
+          return;
+       end if;
+ 
+       Initialization.Defer_Abort_Nestable (Self_ID);
+ 
+       --  Loop through the From chain, changing their Master_Of_Task fields,
+       --  and to find the end of the chain.
+ 
+       loop
+          C.Master_Of_Task := New_Master;
+          exit when C.Common.Activation_Link = null;
+          C := C.Common.Activation_Link;
+       end loop;
+ 
+       --  Hook From in at the start of To
+ 
+       C.Common.Activation_Link := To.all.T_ID;
+       To.all.T_ID := From.all.T_ID;
+ 
+       --  Set From to empty
+ 
+       From.all.T_ID := null;
+ 
+       Initialization.Undefer_Abort_Nestable (Self_ID);
+    end Move_Activation_Chain;
+ 
+    ------------------
+    -- Task_Wrapper --
+    ------------------
+ 
+    --  The task wrapper is a procedure that is called first for each task body
+    --  and which in turn calls the compiler-generated task body procedure.
+    --  The wrapper's main job is to do initialization for the task. It also
+    --  has some locally declared objects that serve as per-task local data.
+    --  Task finalization is done by Complete_Task, which is called from an
+    --  at-end handler that the compiler generates.
+ 
+    procedure Task_Wrapper (Self_ID : Task_Id) is
+       use System.Standard_Library;
+       use System.Stack_Usage;
+ 
+       Bottom_Of_Stack : aliased Integer;
+ 
+       Task_Alternate_Stack :
+         aliased SSE.Storage_Array (1 .. Alternate_Stack_Size);
+       --  The alternate signal stack for this task, if any
+ 
+       Use_Alternate_Stack : constant Boolean := Alternate_Stack_Size /= 0;
+       --  Whether to use above alternate signal stack for stack overflows
+ 
+       SEH_Table : aliased SSE.Storage_Array (1 .. 8);
+       --  Structured Exception Registration table (2 words)
+ 
+       procedure Install_SEH_Handler (Addr : System.Address);
+       pragma Import (C, Install_SEH_Handler, "__gnat_install_SEH_handler");
+       --  Install the SEH (Structured Exception Handling) handler
+ 
+       Cause : Cause_Of_Termination := Normal;
+       --  Indicates the reason why this task terminates. Normal corresponds to
+       --  a task terminating due to completing the last statement of its body,
+       --  or as a result of waiting on a terminate alternative. If the task
+       --  terminates because it is being aborted then Cause will be set
+       --  to Abnormal. If the task terminates because of an exception
+       --  raised by the execution of its task body, then Cause is set
+       --  to Unhandled_Exception.
+ 
+       EO : Exception_Occurrence;
+       --  If the task terminates because of an exception raised by the
+       --  execution of its task body, then EO will contain the associated
+       --  exception occurrence. Otherwise, it will contain Null_Occurrence.
+ 
+       TH : Termination_Handler := null;
+       --  Pointer to the protected procedure to be executed upon task
+       --  termination.
+ 
+       procedure Search_Fall_Back_Handler (ID : Task_Id);
+       --  Procedure that searches recursively a fall-back handler through the
+       --  master relationship. If the handler is found, its pointer is stored
+       --  in TH. It stops when the handler is found or when the ID is null.
+ 
+       ------------------------------
+       -- Search_Fall_Back_Handler --
+       ------------------------------
+ 
+       procedure Search_Fall_Back_Handler (ID : Task_Id) is
+       begin
+          --  A null Task_Id indicates that we have reached the root of the
+          --  task hierarchy and no handler has been found.
+ 
+          if ID = null then
+             return;
+ 
+          --  If there is a fall back handler, store its pointer for later
+          --  execution.
+ 
+          elsif ID.Common.Fall_Back_Handler /= null then
+             TH := ID.Common.Fall_Back_Handler;
+ 
+          --  Otherwise look for a fall back handler in the parent
+ 
+          else
+             Search_Fall_Back_Handler (ID.Common.Parent);
+          end if;
+       end Search_Fall_Back_Handler;
+ 
+    --  Start of processing for Task_Wrapper
+ 
+    begin
+       pragma Assert (Self_ID.Deferral_Level = 1);
+ 
+       Debug.Master_Hook
+         (Self_ID, Self_ID.Common.Parent, Self_ID.Master_Of_Task);
+ 
+       if Use_Alternate_Stack then
+          Self_ID.Common.Task_Alternate_Stack := Task_Alternate_Stack'Address;
+       end if;
+ 
+       --  Set the guard page at the bottom of the stack. The call to unprotect
+       --  the page is done in Terminate_Task
+ 
+       Stack_Guard (Self_ID, True);
+ 
+       --  Initialize low-level TCB components, that cannot be initialized by
+       --  the creator. Enter_Task sets Self_ID.LL.Thread.
+ 
+       Enter_Task (Self_ID);
+ 
+       --  Initialize dynamic stack usage
+ 
+       if System.Stack_Usage.Is_Enabled then
+          declare
+             Guard_Page_Size : constant := 16 * 1024;
+             --  Part of the stack used as a guard page. This is an OS dependent
+             --  value, so we need to use the maximum. This value is only used
+             --  when the stack address is known, that is currently Windows.
+ 
+             Small_Overflow_Guard : constant := 12 * 1024;
+             --  Note: this used to be 4K, but was changed to 12K, since
+             --  smaller values resulted in segmentation faults from dynamic
+             --  stack analysis.
+ 
+             Big_Overflow_Guard : constant := 64 * 1024 + 8 * 1024;
+             Small_Stack_Limit  : constant := 64 * 1024;
+             --  ??? These three values are experimental, and seem to work on
+             --  most platforms. They still need to be analyzed further. They
+             --  also need documentation, what are they and why does the logic
+             --  differ depending on whether the stack is large or small???
+ 
+             Pattern_Size : Natural :=
+                              Natural (Self_ID.Common.
+                                         Compiler_Data.Pri_Stack_Info.Size);
+             --  Size of the pattern
+ 
+             Stack_Base : Address;
+             --  Address of the base of the stack
+ 
+          begin
+             Stack_Base := Self_ID.Common.Compiler_Data.Pri_Stack_Info.Base;
+ 
+             if Stack_Base = Null_Address then
+ 
+                --  On many platforms, we don't know the real stack base
+                --  address. Estimate it using an address in the frame.
+ 
+                Stack_Base := Bottom_Of_Stack'Address;
+ 
+                --  Adjustments for inner frames
+ 
+                Pattern_Size := Pattern_Size -
+                  (if Pattern_Size < Small_Stack_Limit
+                     then Small_Overflow_Guard
+                     else Big_Overflow_Guard);
+             else
+                --  Reduce by the size of the final guard page
+ 
+                Pattern_Size := Pattern_Size - Guard_Page_Size;
+             end if;
+ 
+             STPO.Lock_RTS;
+             Initialize_Analyzer
+               (Self_ID.Common.Analyzer,
+                Self_ID.Common.Task_Image (1 .. Self_ID.Common.Task_Image_Len),
+                Natural (Self_ID.Common.Compiler_Data.Pri_Stack_Info.Size),
+                SSE.To_Integer (Stack_Base),
+                Pattern_Size);
+             STPO.Unlock_RTS;
+             Fill_Stack (Self_ID.Common.Analyzer);
+          end;
+       end if;
+ 
+       --  We setup the SEH (Structured Exception Handling) handler if supported
+       --  on the target.
+ 
+       Install_SEH_Handler (SEH_Table'Address);
+ 
+       --  Initialize exception occurrence
+ 
+       Save_Occurrence (EO, Ada.Exceptions.Null_Occurrence);
+ 
+       --  We lock RTS_Lock to wait for activator to finish activating the rest
+       --  of the chain, so that everyone in the chain comes out in priority
+       --  order.
+ 
+       --  This also protects the value of
+       --    Self_ID.Common.Activator.Common.Wait_Count.
+ 
+       Lock_RTS;
+       Unlock_RTS;
+ 
+       if not System.Restrictions.Abort_Allowed then
+ 
+          --  If Abort is not allowed, reset the deferral level since it will
+          --  not get changed by the generated code. Keeping a default value
+          --  of one would prevent some operations (e.g. select or delay) to
+          --  proceed successfully.
+ 
+          Self_ID.Deferral_Level := 0;
+       end if;
+ 
+       if Global_Task_Debug_Event_Set then
+          Debug.Signal_Debug_Event (Debug.Debug_Event_Run, Self_ID);
+       end if;
+ 
+       begin
+          --  We are separating the following portion of the code in order to
+          --  place the exception handlers in a different block. In this way,
+          --  we do not call Set_Jmpbuf_Address (which needs Self) before we
+          --  set Self in Enter_Task
+ 
+          --  Call the task body procedure
+ 
+          --  The task body is called with abort still deferred. That
+          --  eliminates a dangerous window, for which we had to patch-up in
+          --  Terminate_Task.
+ 
+          --  During the expansion of the task body, we insert an RTS-call
+          --  to Abort_Undefer, at the first point where abort should be
+          --  allowed.
+ 
+          Self_ID.Common.Task_Entry_Point (Self_ID.Common.Task_Arg);
+          Initialization.Defer_Abort_Nestable (Self_ID);
+ 
+       exception
+          --  We can't call Terminate_Task in the exception handlers below,
+          --  since there may be (e.g. in the case of GCC exception handling)
+          --  clean ups associated with the exception handler that need to
+          --  access task specific data.
+ 
+          --  Defer abort so that this task can't be aborted while exiting
+ 
+          when Standard'Abort_Signal =>
+             Initialization.Defer_Abort_Nestable (Self_ID);
+ 
+             --  Update the cause that motivated the task termination so that
+             --  the appropriate information is passed to the task termination
+             --  procedure. Task termination as a result of waiting on a
+             --  terminate alternative is a normal termination, although it is
+             --  implemented using the abort mechanisms.
+ 
+             if Self_ID.Terminate_Alternative then
+                Cause := Normal;
+ 
+                if Global_Task_Debug_Event_Set then
+                   Debug.Signal_Debug_Event
+                    (Debug.Debug_Event_Terminated, Self_ID);
+                end if;
+             else
+                Cause := Abnormal;
+ 
+                if Global_Task_Debug_Event_Set then
+                   Debug.Signal_Debug_Event
+                    (Debug.Debug_Event_Abort_Terminated, Self_ID);
+                end if;
+             end if;
+ 
+          when others =>
+             --  ??? Using an E : others here causes CD2C11A to fail on Tru64
+ 
+             Initialization.Defer_Abort_Nestable (Self_ID);
+ 
+             --  Perform the task specific exception tracing duty.  We handle
+             --  these outputs here and not in the common notification routine
+             --  because we need access to tasking related data and we don't
+             --  want to drag dependencies against tasking related units in the
+             --  the common notification units. Additionally, no trace is ever
+             --  triggered from the common routine for the Unhandled_Raise case
+             --  in tasks, since an exception never appears unhandled in this
+             --  context because of this handler.
+ 
+             if Exception_Trace = Unhandled_Raise then
+                Trace_Unhandled_Exception_In_Task (Self_ID);
+             end if;
+ 
+             --  Update the cause that motivated the task termination so that
+             --  the appropriate information is passed to the task termination
+             --  procedure, as well as the associated Exception_Occurrence.
+ 
+             Cause := Unhandled_Exception;
+ 
+             Save_Occurrence (EO, SSL.Get_Current_Excep.all.all);
+ 
+             if Global_Task_Debug_Event_Set then
+                Debug.Signal_Debug_Event
+                  (Debug.Debug_Event_Exception_Terminated, Self_ID);
+             end if;
+       end;
+ 
+       --  Look for a task termination handler. This code is for all tasks but
+       --  the environment task. The task termination code for the environment
+       --  task is executed by SSL.Task_Termination_Handler.
+ 
+       if Single_Lock then
+          Lock_RTS;
+       end if;
+ 
+       Write_Lock (Self_ID);
+ 
+       if Self_ID.Common.Specific_Handler /= null then
+          TH := Self_ID.Common.Specific_Handler;
+ 
+       --  Independent tasks should not call the Fall_Back_Handler (of the
+       --  environment task), because they are implementation artifacts that
+       --  should be invisible to Ada programs.
+ 
+       elsif Self_ID.Master_Of_Task /= Independent_Task_Level then
+ 
+          --  Look for a fall-back handler following the master relationship
+          --  for the task. As specified in ARM C.7.3 par. 9/2, "the fall-back
+          --  handler applies only to the dependent tasks of the task". Hence,
+          --  if the terminating tasks (Self_ID) had a fall-back handler, it
+          --  would not apply to itself, so we start the search with the parent.
+ 
+          Search_Fall_Back_Handler (Self_ID.Common.Parent);
+       end if;
+ 
+       Unlock (Self_ID);
+ 
+       if Single_Lock then
+          Unlock_RTS;
+       end if;
+ 
+       --  Execute the task termination handler if we found it
+ 
+       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;
+          end;
+       end if;
+ 
+       if System.Stack_Usage.Is_Enabled then
+          Compute_Result (Self_ID.Common.Analyzer);
+          Report_Result (Self_ID.Common.Analyzer);
+       end if;
+ 
+       Terminate_Task (Self_ID);
+    end Task_Wrapper;
+ 
+    --------------------
+    -- Terminate_Task --
+    --------------------
+ 
+    --  Before we allow the thread to exit, we must clean up. This is a delicate
+    --  job. We must wake up the task's master, who may immediately try to
+    --  deallocate the ATCB from the current task WHILE IT IS STILL EXECUTING.
+ 
+    --  To avoid this, the parent task must be blocked up to the latest
+    --  statement executed. The trouble is that we have another step that we
+    --  also want to postpone to the very end, i.e., calling SSL.Destroy_TSD.
+    --  We have to postpone that until the end because compiler-generated code
+    --  is likely to try to access that data at just about any point.
+ 
+    --  We can't call Destroy_TSD while we are holding any other locks, because
+    --  it locks Global_Task_Lock, and our deadlock prevention rules require
+    --  that to be the outermost lock. Our first "solution" was to just lock
+    --  Global_Task_Lock in addition to the other locks, and force the parent to
+    --  also lock this lock between its wakeup and its freeing of the ATCB. See
+    --  Complete_Task for the parent-side of the code that has the matching
+    --  calls to Task_Lock and Task_Unlock. That was not really a solution,
+    --  since the operation Task_Unlock continued to access the ATCB after
+    --  unlocking, after which the parent was observed to race ahead, deallocate
+    --  the ATCB, and then reallocate it to another task. The call to
+    --  Undefer_Abort in Task_Unlock by the "terminated" task was overwriting
+    --  the data of the new task that reused the ATCB. To solve this problem, we
+    --  introduced the new operation Final_Task_Unlock.
+ 
+    procedure Terminate_Task (Self_ID : Task_Id) is
+       Environment_Task : constant Task_Id := STPO.Environment_Task;
+       Master_Of_Task   : Integer;
+       Deallocate       : Boolean;
+ 
+    begin
+       Debug.Task_Termination_Hook;
+ 
+       --  Since GCC cannot allocate stack chunks efficiently without reordering
+       --  some of the allocations, we have to handle this unexpected situation
+       --  here. Normally we never have to call Vulnerable_Complete_Task here.
+ 
+       if Self_ID.Common.Activator /= null then
+          Vulnerable_Complete_Task (Self_ID);
+       end if;
+ 
+       Initialization.Task_Lock (Self_ID);
+ 
+       if Single_Lock then
+          Lock_RTS;
+       end if;
+ 
+       Master_Of_Task := Self_ID.Master_Of_Task;
+ 
+       --  Check if the current task is an independent task If so, decrement
+       --  the Independent_Task_Count value.
+ 
+       if Master_Of_Task = Independent_Task_Level then
+          if Single_Lock then
+             Utilities.Independent_Task_Count :=
+               Utilities.Independent_Task_Count - 1;
+ 
+          else
+             Write_Lock (Environment_Task);
+             Utilities.Independent_Task_Count :=
+               Utilities.Independent_Task_Count - 1;
+             Unlock (Environment_Task);
+          end if;
+       end if;
+ 
+       --  Unprotect the guard page if needed
+ 
+       Stack_Guard (Self_ID, False);
+ 
+       Utilities.Make_Passive (Self_ID, Task_Completed => True);
+       Deallocate := Self_ID.Free_On_Termination;
+ 
+       if Single_Lock then
+          Unlock_RTS;
+       end if;
+ 
+       pragma Assert (Check_Exit (Self_ID));
+ 
+       SSL.Destroy_TSD (Self_ID.Common.Compiler_Data);
+       Initialization.Final_Task_Unlock (Self_ID);
+ 
+       --  WARNING: past this point, this thread must assume that the ATCB has
+       --  been deallocated, and can't access it anymore (which is why we have
+       --  saved the Free_On_Termination flag in a temporary variable).
+ 
+       if Deallocate then
+          Free_Task (Self_ID);
+       end if;
+ 
+       if Master_Of_Task > 0 then
+          STPO.Exit_Task;
+       end if;
+    end Terminate_Task;
+ 
+    ----------------
+    -- Terminated --
+    ----------------
+ 
+    function Terminated (T : Task_Id) return Boolean is
+       Self_ID : constant Task_Id := STPO.Self;
+       Result  : Boolean;
+ 
+    begin
+       Initialization.Defer_Abort_Nestable (Self_ID);
+ 
+       if Single_Lock then
+          Lock_RTS;
+       end if;
+ 
+       Write_Lock (T);
+       Result := T.Common.State = Terminated;
+       Unlock (T);
+ 
+       if Single_Lock then
+          Unlock_RTS;
+       end if;
+ 
+       Initialization.Undefer_Abort_Nestable (Self_ID);
+       return Result;
+    end Terminated;
+ 
+    ----------------------------------------
+    -- Trace_Unhandled_Exception_In_Task --
+    ----------------------------------------
+ 
+    procedure Trace_Unhandled_Exception_In_Task (Self_Id : Task_Id) is
+       procedure To_Stderr (S : String);
+       pragma Import (Ada, To_Stderr, "__gnat_to_stderr");
+ 
+       use System.Soft_Links;
+ 
+       function To_Address is new
+         Ada.Unchecked_Conversion
+          (Task_Id, System.Task_Primitives.Task_Address);
+ 
+       Excep : constant Exception_Occurrence_Access :=
+                 SSL.Get_Current_Excep.all;
+ 
+    begin
+       --  This procedure is called by the task outermost handler in
+       --  Task_Wrapper below, so only once the task stack has been fully
+       --  unwound. The common notification routine has been called at the
+       --  raise point already.
+ 
+       --  Lock to prevent unsynchronized output
+ 
+       Initialization.Task_Lock (Self_Id);
+       To_Stderr ("task ");
+ 
+       if Self_Id.Common.Task_Image_Len /= 0 then
+          To_Stderr
+            (Self_Id.Common.Task_Image (1 .. Self_Id.Common.Task_Image_Len));
+          To_Stderr ("_");
+       end if;
+ 
+       To_Stderr (System.Address_Image (To_Address (Self_Id)));
+       To_Stderr (" terminated by unhandled exception");
+       To_Stderr ((1 => ASCII.LF));
+       To_Stderr (Exception_Information (Excep.all));
+       Initialization.Task_Unlock (Self_Id);
+    end Trace_Unhandled_Exception_In_Task;
+ 
+    ------------------------------------
+    -- Vulnerable_Complete_Activation --
+    ------------------------------------
+ 
+    --  As in several other places, the locks of the activator and activated
+    --  task are both locked here. This follows our deadlock prevention lock
+    --  ordering policy, since the activated task must be created after the
+    --  activator.
+ 
+    procedure Vulnerable_Complete_Activation (Self_ID : Task_Id) is
+       Activator : constant Task_Id := Self_ID.Common.Activator;
+ 
+    begin
+       pragma Debug (Debug.Trace (Self_ID, "V_Complete_Activation", 'C'));
+ 
+       Write_Lock (Activator);
+       Write_Lock (Self_ID);
+ 
+       pragma Assert (Self_ID.Common.Activator /= null);
+ 
+       --  Remove dangling reference to Activator, since a task may outlive its
+       --  activator.
+ 
+       Self_ID.Common.Activator := null;
+ 
+       --  Wake up the activator, if it is waiting for a chain of tasks to
+       --  activate, and we are the last in the chain to complete activation.
+ 
+       if Activator.Common.State = Activator_Sleep then
+          Activator.Common.Wait_Count := Activator.Common.Wait_Count - 1;
+ 
+          if Activator.Common.Wait_Count = 0 then
+             Wakeup (Activator, Activator_Sleep);
+          end if;
+       end if;
+ 
+       --  The activator raises a Tasking_Error if any task it is activating
+       --  is completed before the activation is done. However, if the reason
+       --  for the task completion is an abort, we do not raise an exception.
+       --  See RM 9.2(5).
+ 
+       if not Self_ID.Callable and then Self_ID.Pending_ATC_Level /= 0 then
+          Activator.Common.Activation_Failed := True;
+       end if;
+ 
+       Unlock (Self_ID);
+       Unlock (Activator);
+ 
+       --  After the activation, active priority should be the same as base
+       --  priority. We must unlock the Activator first, though, since it
+       --  should not wait if we have lower priority.
+ 
+       if Get_Priority (Self_ID) /= Self_ID.Common.Base_Priority then
+          Write_Lock (Self_ID);
+          Set_Priority (Self_ID, Self_ID.Common.Base_Priority);
+          Unlock (Self_ID);
+       end if;
+    end Vulnerable_Complete_Activation;
+ 
+    --------------------------------
+    -- Vulnerable_Complete_Master --
+    --------------------------------
+ 
+    procedure Vulnerable_Complete_Master (Self_ID : Task_Id) is
+       C  : Task_Id;
+       P  : Task_Id;
+       CM : constant Master_Level := Self_ID.Master_Within;
+       T  : aliased Task_Id;
+ 
+       To_Be_Freed : Task_Id;
+       --  This is a list of ATCBs to be freed, after we have released all RTS
+       --  locks. This is necessary because of the locking order rules, since
+       --  the storage manager uses Global_Task_Lock.
+ 
+       pragma Warnings (Off);
+       function Check_Unactivated_Tasks return Boolean;
+       pragma Warnings (On);
+       --  Temporary error-checking code below. This is part of the checks
+       --  added in the new run time. Call it only inside a pragma Assert.
+ 
+       -----------------------------
+       -- Check_Unactivated_Tasks --
+       -----------------------------
+ 
+       function Check_Unactivated_Tasks return Boolean is
+       begin
+          if not Single_Lock then
+             Lock_RTS;
+          end if;
+ 
+          Write_Lock (Self_ID);
+ 
+          C := All_Tasks_List;
+          while C /= null loop
+             if C.Common.Activator = Self_ID and then C.Master_Of_Task = CM then
+                return False;
+             end if;
+ 
+             if C.Common.Parent = Self_ID and then C.Master_Of_Task = CM then
+                Write_Lock (C);
+ 
+                if C.Common.State = Unactivated then
+                   return False;
+                end if;
+ 
+                Unlock (C);
+             end if;
+ 
+             C := C.Common.All_Tasks_Link;
+          end loop;
+ 
+          Unlock (Self_ID);
+ 
+          if not Single_Lock then
+             Unlock_RTS;
+          end if;
+ 
+          return True;
+       end Check_Unactivated_Tasks;
+ 
+    --  Start of processing for Vulnerable_Complete_Master
+ 
+    begin
+       pragma Debug
+         (Debug.Trace (Self_ID, "V_Complete_Master(" & CM'Img & ")", 'C'));
+ 
+       pragma Assert (Self_ID.Common.Wait_Count = 0);
+       pragma Assert
+         (Self_ID.Deferral_Level > 0
+           or else not System.Restrictions.Abort_Allowed);
+ 
+       --  Count how many active dependent tasks this master currently has, and
+       --  record this in Wait_Count.
+ 
+       --  This count should start at zero, since it is initialized to zero for
+       --  new tasks, and the task should not exit the sleep-loops that use this
+       --  count until the count reaches zero.
+ 
+       --  While we're counting, if we run across any unactivated tasks that
+       --  belong to this master, we summarily terminate them as required by
+       --  RM-9.2(6).
+ 
+       Lock_RTS;
+       Write_Lock (Self_ID);
+ 
+       C := All_Tasks_List;
+       while C /= null loop
+ 
+          --  Terminate unactivated (never-to-be activated) tasks
+ 
+          if C.Common.Activator = Self_ID and then C.Master_Of_Task = CM then
+ 
+             --  Usually, C.Common.Activator = Self_ID implies C.Master_Of_Task
+             --  = CM. The only case where C is pending activation by this
+             --  task, but the master of C is not CM is in Ada 2005, when C is
+             --  part of a return object of a build-in-place function.
+ 
+             pragma Assert (C.Common.State = Unactivated);
+ 
+             Write_Lock (C);
+             C.Common.Activator := null;
+             C.Common.State := Terminated;
+             C.Callable := False;
+             Utilities.Cancel_Queued_Entry_Calls (C);
+             Unlock (C);
+          end if;
+ 
+          --  Count it if directly dependent on this master
+ 
+          if C.Common.Parent = Self_ID and then C.Master_Of_Task = CM then
+             Write_Lock (C);
+ 
+             if C.Awake_Count /= 0 then
+                Self_ID.Common.Wait_Count := Self_ID.Common.Wait_Count + 1;
+             end if;
+ 
+             Unlock (C);
+          end if;
+ 
+          C := C.Common.All_Tasks_Link;
+       end loop;
+ 
+       Self_ID.Common.State := Master_Completion_Sleep;
+       Unlock (Self_ID);
+ 
+       if not Single_Lock then
+          Unlock_RTS;
+       end if;
+ 
+       --  Wait until dependent tasks are all terminated or ready to terminate.
+       --  While waiting, the task may be awakened if the task's priority needs
+       --  changing, or this master is aborted. In the latter case, we abort the
+       --  dependents, and resume waiting until Wait_Count goes to zero.
+ 
+       Write_Lock (Self_ID);
+ 
+       loop
+          exit when Self_ID.Common.Wait_Count = 0;
+ 
+          --  Here is a difference as compared to Complete_Master
+ 
+          if Self_ID.Pending_ATC_Level < Self_ID.ATC_Nesting_Level
+            and then not Self_ID.Dependents_Aborted
+          then
+             if Single_Lock then
+                Abort_Dependents (Self_ID);
+             else
+                Unlock (Self_ID);
+                Lock_RTS;
+                Abort_Dependents (Self_ID);
+                Unlock_RTS;
+                Write_Lock (Self_ID);
+             end if;
+          else
+             pragma Debug
+               (Debug.Trace (Self_ID, "master_completion_sleep", 'C'));
+             Sleep (Self_ID, Master_Completion_Sleep);
+          end if;
+       end loop;
+ 
+       Self_ID.Common.State := Runnable;
+       Unlock (Self_ID);
+ 
+       --  Dependents are all terminated or on terminate alternatives. Now,
+       --  force those on terminate alternatives to terminate, by aborting them.
+ 
+       pragma Assert (Check_Unactivated_Tasks);
+ 
+       if Self_ID.Alive_Count > 1 then
+          --  ???
+          --  Consider finding a way to skip the following extra steps if there
+          --  are no dependents with terminate alternatives. This could be done
+          --  by adding another count to the ATCB, similar to Awake_Count, but
+          --  keeping track of tasks that are on terminate alternatives.
+ 
+          pragma Assert (Self_ID.Common.Wait_Count = 0);
+ 
+          --  Force any remaining dependents to terminate by aborting them
+ 
+          if not Single_Lock then
+             Lock_RTS;
+          end if;
+ 
+          Abort_Dependents (Self_ID);
+ 
+          --  Above, when we "abort" the dependents we are simply using this
+          --  operation for convenience. We are not required to support the full
+          --  abort-statement semantics; in particular, we are not required to
+          --  immediately cancel any queued or in-service entry calls. That is
+          --  good, because if we tried to cancel a call we would need to lock
+          --  the caller, in order to wake the caller up. Our anti-deadlock
+          --  rules prevent us from doing that without releasing the locks on C
+          --  and Self_ID. Releasing and retaking those locks would be wasteful
+          --  at best, and should not be considered further without more
+          --  detailed analysis of potential concurrent accesses to the ATCBs
+          --  of C and Self_ID.
+ 
+          --  Count how many "alive" dependent tasks this master currently has,
+          --  and record this in Wait_Count. This count should start at zero,
+          --  since it is initialized to zero for new tasks, and the task should
+          --  not exit the sleep-loops that use this count until the count
+          --  reaches zero.
+ 
+          pragma Assert (Self_ID.Common.Wait_Count = 0);
+ 
+          Write_Lock (Self_ID);
+ 
+          C := All_Tasks_List;
+          while C /= null loop
+             if C.Common.Parent = Self_ID and then C.Master_Of_Task = CM then
+                Write_Lock (C);
+ 
+                pragma Assert (C.Awake_Count = 0);
+ 
+                if C.Alive_Count > 0 then
+                   pragma Assert (C.Terminate_Alternative);
+                   Self_ID.Common.Wait_Count := Self_ID.Common.Wait_Count + 1;
+                end if;
+ 
+                Unlock (C);
+             end if;
+ 
+             C := C.Common.All_Tasks_Link;
+          end loop;
+ 
+          Self_ID.Common.State := Master_Phase_2_Sleep;
+          Unlock (Self_ID);
+ 
+          if not Single_Lock then
+             Unlock_RTS;
+          end if;
+ 
+          --  Wait for all counted tasks to finish terminating themselves
+ 
+          Write_Lock (Self_ID);
+ 
+          loop
+             exit when Self_ID.Common.Wait_Count = 0;
+             Sleep (Self_ID, Master_Phase_2_Sleep);
+          end loop;
+ 
+          Self_ID.Common.State := Runnable;
+          Unlock (Self_ID);
+       end if;
+ 
+       --  We don't wake up for abort here. We are already terminating just as
+       --  fast as we can, so there is no point.
+ 
+       --  Remove terminated tasks from the list of Self_ID's dependents, but
+       --  don't free their ATCBs yet, because of lock order restrictions, which
+       --  don't allow us to call "free" or "malloc" while holding any other
+       --  locks. Instead, we put those ATCBs to be freed onto a temporary list,
+       --  called To_Be_Freed.
+ 
+       if not Single_Lock then
+          Lock_RTS;
+       end if;
+ 
+       C := All_Tasks_List;
+       P := null;
+       while C /= null loop
+ 
+          --  If Free_On_Termination is set, do nothing here, and let the
+          --  task free itself if not already done, otherwise we risk a race
+          --  condition where Vulnerable_Free_Task is called in the loop below,
+          --  while the task calls Free_Task itself, in Terminate_Task.
+ 
+          if C.Common.Parent = Self_ID
+            and then C.Master_Of_Task >= CM
+            and then not C.Free_On_Termination
+          then
+             if P /= null then
+                P.Common.All_Tasks_Link := C.Common.All_Tasks_Link;
+             else
+                All_Tasks_List := C.Common.All_Tasks_Link;
+             end if;
+ 
+             T := C.Common.All_Tasks_Link;
+             C.Common.All_Tasks_Link := To_Be_Freed;
+             To_Be_Freed := C;
+             C := T;
+ 
+          else
+             P := C;
+             C := C.Common.All_Tasks_Link;
+          end if;
+       end loop;
+ 
+       Unlock_RTS;
+ 
+       --  Free all the ATCBs on the list To_Be_Freed
+ 
+       --  The ATCBs in the list are no longer in All_Tasks_List, and after
+       --  any interrupt entries are detached from them they should no longer
+       --  be referenced.
+ 
+       --  Global_Task_Lock (Task_Lock/Unlock) is locked in the loop below to
+       --  avoid a race between a terminating task and its parent. The parent
+       --  might try to deallocate the ACTB out from underneath the exiting
+       --  task. Note that Free will also lock Global_Task_Lock, but that is
+       --  OK, since this is the *one* lock for which we have a mechanism to
+       --  support nested locking. See Task_Wrapper and its finalizer for more
+       --  explanation.
+ 
+       --  ???
+       --  The check "T.Common.Parent /= null ..." below is to prevent dangling
+       --  references to terminated library-level tasks, which could otherwise
+       --  occur during finalization of library-level objects. A better solution
+       --  might be to hook task objects into the finalization chain and
+       --  deallocate the ATCB when the task object is deallocated. However,
+       --  this change is not likely to gain anything significant, since all
+       --  this storage should be recovered en-masse when the process exits.
+ 
+       while To_Be_Freed /= null loop
+          T := To_Be_Freed;
+          To_Be_Freed := T.Common.All_Tasks_Link;
+ 
+          --  ??? On SGI there is currently no Interrupt_Manager, that's why we
+          --  need to check if the Interrupt_Manager_ID is null.
+ 
+          if T.Interrupt_Entry and then Interrupt_Manager_ID /= null then
+             declare
+                Detach_Interrupt_Entries_Index : constant Task_Entry_Index := 1;
+                --  Corresponds to the entry index of System.Interrupts.
+                --  Interrupt_Manager.Detach_Interrupt_Entries. Be sure
+                --  to update this value when changing Interrupt_Manager specs.
+ 
+                type Param_Type is access all Task_Id;
+ 
+                Param : aliased Param_Type := T'Access;
+ 
+             begin
+                System.Tasking.Rendezvous.Call_Simple
+                  (Interrupt_Manager_ID, Detach_Interrupt_Entries_Index,
+                   Param'Address);
+             end;
+          end if;
+ 
+          if (T.Common.Parent /= null
+               and then T.Common.Parent.Common.Parent /= null)
+            or else T.Master_Of_Task > Library_Task_Level
+          then
+             Initialization.Task_Lock (Self_ID);
+ 
+             --  If Sec_Stack_Ptr is not null, it means that Destroy_TSD
+             --  has not been called yet (case of an unactivated task).
+ 
+             if T.Common.Compiler_Data.Sec_Stack_Ptr /= null then
+                SSL.Destroy_TSD (T.Common.Compiler_Data);
+             end if;
+ 
+             Vulnerable_Free_Task (T);
+             Initialization.Task_Unlock (Self_ID);
+          end if;
+       end loop;
+ 
+       --  It might seem nice to let the terminated task deallocate its own
+       --  ATCB. That would not cover the case of unactivated tasks. It also
+       --  would force us to keep the underlying thread around past termination,
+       --  since references to the ATCB are possible past termination.
+ 
+       --  Currently, we get rid of the thread as soon as the task terminates,
+       --  and let the parent recover the ATCB later.
+ 
+       --  Some day, if we want to recover the ATCB earlier, at task
+       --  termination, we could consider using "fat task IDs", that include the
+       --  serial number with the ATCB pointer, to catch references to tasks
+       --  that no longer have ATCBs. It is not clear how much this would gain,
+       --  since the user-level task object would still be occupying storage.
+ 
+       --  Make next master level up active. We don't need to lock the ATCB,
+       --  since the value is only updated by each task for itself.
+ 
+       Self_ID.Master_Within := CM - 1;
+ 
+       Debug.Master_Completed_Hook (Self_ID, CM);
+    end Vulnerable_Complete_Master;
+ 
+    ------------------------------
+    -- Vulnerable_Complete_Task --
+    ------------------------------
+ 
+    --  Complete the calling task
+ 
+    --  This procedure must be called with abort deferred. It should only be
+    --  called by Complete_Task and Finalize_Global_Tasks (for the environment
+    --  task).
+ 
+    --  The effect is similar to that of Complete_Master. Differences include
+    --  the closing of entries here, and computation of the number of active
+    --  dependent tasks in Complete_Master.
+ 
+    --  We don't lock Self_ID before the call to Vulnerable_Complete_Activation,
+    --  because that does its own locking, and because we do not need the lock
+    --  to test Self_ID.Common.Activator. That value should only be read and
+    --  modified by Self.
+ 
+    procedure Vulnerable_Complete_Task (Self_ID : Task_Id) is
+    begin
+       pragma Assert
+         (Self_ID.Deferral_Level > 0
+           or else not System.Restrictions.Abort_Allowed);
+       pragma Assert (Self_ID = Self);
+       pragma Assert
+         (Self_ID.Master_Within in
+            Self_ID.Master_Of_Task .. Self_ID.Master_Of_Task + 3);
+       pragma Assert (Self_ID.Common.Wait_Count = 0);
+       pragma Assert (Self_ID.Open_Accepts = null);
+       pragma Assert (Self_ID.ATC_Nesting_Level = 1);
+ 
+       pragma Debug (Debug.Trace (Self_ID, "V_Complete_Task", 'C'));
+ 
+       if Single_Lock then
+          Lock_RTS;
+       end if;
+ 
+       Write_Lock (Self_ID);
+       Self_ID.Callable := False;
+ 
+       --  In theory, Self should have no pending entry calls left on its
+       --  call-stack. Each async. select statement should clean its own call,
+       --  and blocking entry calls should defer abort until the calls are
+       --  cancelled, then clean up.
+ 
+       Utilities.Cancel_Queued_Entry_Calls (Self_ID);
+       Unlock (Self_ID);
+ 
+       if Self_ID.Common.Activator /= null then
+          Vulnerable_Complete_Activation (Self_ID);
+       end if;
+ 
+       if Single_Lock then
+          Unlock_RTS;
+       end if;
+ 
+       --  If Self_ID.Master_Within = Self_ID.Master_Of_Task + 2 we may have
+       --  dependent tasks for which we need to wait. Otherwise we just exit.
+ 
+       if Self_ID.Master_Within = Self_ID.Master_Of_Task + 2 then
+          Vulnerable_Complete_Master (Self_ID);
+       end if;
+    end Vulnerable_Complete_Task;
+ 
+    --------------------------
+    -- Vulnerable_Free_Task --
+    --------------------------
+ 
+    --  Recover all runtime system storage associated with the task T. This
+    --  should only be called after T has terminated and will no longer be
+    --  referenced.
+ 
+    --  For tasks created by an allocator that fails, due to an exception, it
+    --  is called from Expunge_Unactivated_Tasks.
+ 
+    --  For tasks created by elaboration of task object declarations it is
+    --  called from the finalization code of the Task_Wrapper procedure.
+ 
+    procedure Vulnerable_Free_Task (T : Task_Id) is
+    begin
+       pragma Debug (Debug.Trace (Self, "Vulnerable_Free_Task", 'C', T));
+ 
+       if Single_Lock then
+          Lock_RTS;
+       end if;
+ 
+       Write_Lock (T);
+       Initialization.Finalize_Attributes (T);
+       Unlock (T);
+ 
+       if Single_Lock then
+          Unlock_RTS;
+       end if;
+ 
+       System.Task_Primitives.Operations.Finalize_TCB (T);
+    end Vulnerable_Free_Task;
+ 
+ --  Package elaboration code
+ 
+ begin
+    --  Establish the Adafinal softlink
+ 
+    --  This is not done inside the central RTS initialization routine
+    --  to avoid with'ing this package from System.Tasking.Initialization.
+ 
+    SSL.Adafinal := Finalize_Global_Tasks'Access;
+ 
+    --  Establish soft links for subprograms that manipulate master_id's.
+    --  This cannot be done when the RTS is initialized, because of various
+    --  elaboration constraints.
+ 
+    SSL.Current_Master  := Stages.Current_Master'Access;
+    SSL.Enter_Master    := Stages.Enter_Master'Access;
+    SSL.Complete_Master := Stages.Complete_Master'Access;
+ end System.Tasking.Stages;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-tassta.ads gcc-8.1.0/gcc/ada/libgnarl/s-tassta.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-tassta.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-tassta.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,318 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                 S Y S T E M . T A S K I N G . S T A G E S                --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package represents the high level tasking interface used by the
+ --  compiler to expand Ada 95 tasking constructs into simpler run time calls
+ --  (aka GNARLI, GNU Ada Run-time Library Interface)
+ 
+ --  Note: Only the compiler is allowed to use this interface, by generating
+ --  direct calls to it, via Rtsfind.
+ 
+ --  Any changes to this interface may require corresponding compiler changes
+ --  in exp_ch9.adb and possibly exp_ch7.adb
+ 
+ with System.Task_Info;
+ with System.Parameters;
+ 
+ with Ada.Real_Time;
+ 
+ package System.Tasking.Stages is
+    pragma Elaborate_Body;
+ 
+    --   The compiler will expand in the GNAT tree the following construct:
+ 
+    --   task type T (Discr : Integer);
+ 
+    --   task body T is
+    --      ...declarations, possibly some controlled...
+    --   begin
+    --      ...B...;
+    --   end T;
+ 
+    --   T1 : T (1);
+ 
+    --  as follows:
+ 
+    --   enter_master.all;
+ 
+    --   _chain : aliased activation_chain;
+    --   activation_chainIP (_chain);
+ 
+    --   task type t (discr : integer);
+    --   tE : aliased boolean := false;
+    --   tZ : size_type := unspecified_size;
+    --   type tV (discr : integer) is limited record
+    --      _task_id         : task_id;
+    --   end record;
+    --   procedure tB (_task : access tV);
+    --   freeze tV [
+    --      procedure tVIP (_init : in out tV; _master : master_id;
+    --        _chain : in out activation_chain; _task_id : in task_image_type;
+    --        discr : integer) is
+    --      begin
+    --         _init.discr := discr;
+    --         _init._task_id := null;
+    --         create_task (unspecified_priority, tZ,
+    --           unspecified_task_info, unspecified_cpu,
+    --           ada__real_time__time_span_zero, 0, _master,
+    --           task_procedure_access!(tB'address), _init'address,
+    --           tE'unchecked_access, _chain, _task_id, _init._task_id);
+    --         return;
+    --      end tVIP;
+    --   ]
+ 
+    --   procedure tB (_task : access tV) is
+    --      discr : integer renames _task.discr;
+ 
+    --      procedure _clean is
+    --      begin
+    --         abort_defer.all;
+    --         complete_task;
+    --         finalize_list (F14b);
+    --         abort_undefer.all;
+    --         return;
+    --      end _clean;
+    --   begin
+    --      abort_undefer.all;
+    --      ...declarations...
+    --      complete_activation;
+    --      ...B...;
+    --      return;
+    --   at end
+    --      _clean;
+    --   end tB;
+ 
+    --   tE := true;
+    --   t1 : t (1);
+    --   _master : constant master_id := current_master.all;
+    --   t1S : task_image_type := new string'"t1";
+    --   task_image_typeIP (t1, _master, _chain, t1S, 1);
+ 
+    --   activate_tasks (_chain'unchecked_access);
+ 
+    procedure Abort_Tasks (Tasks : Task_List);
+    --  Compiler interface only. Do not call from within the RTS. Initiate
+    --  abort, however, the actual abort is done by abortee by means of
+    --  Abort_Handler and Abort_Undefer
+    --
+    --  source code:
+    --     Abort T1, T2;
+    --  code expansion:
+    --     abort_tasks (task_list'(t1._task_id, t2._task_id));
+ 
+    procedure Activate_Tasks (Chain_Access : Activation_Chain_Access);
+    --  Compiler interface only. Do not call from within the RTS.
+    --  This must be called by the creator of a chain of one or more new tasks,
+    --  to activate them. The chain is a linked list that up to this point is
+    --  only known to the task that created them, though the individual tasks
+    --  are already in the All_Tasks_List.
+    --
+    --  The compiler builds the chain in LIFO order (as a stack). Another
+    --  version of this procedure had code to reverse the chain, so as to
+    --  activate the tasks in the order of declaration. This might be nice, but
+    --  it is not needed if priority-based scheduling is supported, since all
+    --  the activated tasks synchronize on the activators lock before they
+    --  start activating and so they should start activating in priority order.
+    --  ??? Actually, the body of this package DOES reverse the chain, so I
+    --  don't understand the above comment.
+ 
+    procedure Complete_Activation;
+    --  Compiler interface only. Do not call from within the RTS.
+    --  This should be called from the task body at the end of
+    --  the elaboration code for its declarative part.
+    --  Decrement the count of tasks to be activated by the activator and
+    --  wake it up so it can check to see if all tasks have been activated.
+    --  Except for the environment task, which should never call this procedure,
+    --  T.Activator should only be null iff T has completed activation.
+ 
+    procedure Complete_Master;
+    --  Compiler interface only.  Do not call from within the RTS. This must
+    --  be called on exit from any master where Enter_Master was called.
+    --  Assume abort is deferred at this point.
+ 
+    procedure Complete_Task;
+    --  Compiler interface only. Do not call from within the RTS.
+    --  This should be called from an implicit at-end handler
+    --  associated with the task body, when it completes.
+    --  From this point, the current task will become not callable.
+    --  If the current task have not completed activation, this should be done
+    --  now in order to wake up the activator (the environment task).
+ 
+    procedure Create_Task
+      (Priority             : Integer;
+       Stack_Size           : System.Parameters.Size_Type;
+       Secondary_Stack_Size : System.Parameters.Size_Type;
+       Task_Info            : System.Task_Info.Task_Info_Type;
+       CPU                  : Integer;
+       Relative_Deadline    : Ada.Real_Time.Time_Span;
+       Domain               : Dispatching_Domain_Access;
+       Num_Entries          : Task_Entry_Index;
+       Master               : Master_Level;
+       State                : Task_Procedure_Access;
+       Discriminants        : System.Address;
+       Elaborated           : Access_Boolean;
+       Chain                : in out Activation_Chain;
+       Task_Image           : String;
+       Created_Task         : out Task_Id);
+    --  Compiler interface only. Do not call from within the RTS.
+    --  This must be called to create a new task.
+    --
+    --  Priority is the task's priority (assumed to be in range of type
+    --   System.Any_Priority)
+    --
+    --  Stack_Size is the stack size of the task to create
+    --
+    --  Secondary_Stack_Size is the size of the secondary stack to be used by
+    --  the task.
+    --
+    --  Task_Info is the task info associated with the created task, or
+    --   Unspecified_Task_Info if none.
+    --
+    --  CPU is the task affinity. Passed as an Integer because the undefined
+    --   value is not in the range of CPU_Range. Static range checks are
+    --   performed when analyzing the pragma, and dynamic ones are performed
+    --   before setting the affinity at run time.
+    --
+    --  Relative_Deadline is the relative deadline associated with the created
+    --   task by means of a pragma Relative_Deadline, or 0.0 if none.
+    --
+    --  Domain is the dispatching domain associated with the created task by
+    --   means of a Dispatching_Domain pragma or aspect, or null if none.
+    --
+    --  State is the compiler generated task's procedure body
+    --
+    --  Discriminants is a pointer to a limited record whose discriminants
+    --   are those of the task to create. This parameter should be passed as
+    --   the single argument to State.
+    --
+    --  Elaborated is a pointer to a Boolean that must be set to true on exit
+    --   if the task could be successfully elaborated.
+    --
+    --  Chain is a linked list of task that needs to be created. On exit,
+    --   Created_Task.Activation_Link will be Chain.T_ID, and Chain.T_ID
+    --   will be Created_Task (e.g the created task will be linked at the front
+    --   of Chain).
+    --
+    --  Task_Image is a string created by the compiler that the
+    --   run time can store to ease the debugging and the
+    --   Ada.Task_Identification facility.
+    --
+    --  Created_Task is the resulting task.
+    --
+    --  This procedure can raise Storage_Error if the task creation failed.
+ 
+    function Current_Master return Master_Level;
+    --  Compiler interface only.
+    --  This is called to obtain the current master nesting level.
+ 
+    procedure Enter_Master;
+    --  Compiler interface only.  Do not call from within the RTS.
+    --  This must be called on entry to any "master" where a task,
+    --  or access type designating objects containing tasks, may be
+    --  declared.
+ 
+    procedure Expunge_Unactivated_Tasks (Chain : in out Activation_Chain);
+    --  Compiler interface only. Do not call from within the RTS.
+    --  This must be called by the compiler-generated code for an allocator if
+    --  the allocated object contains tasks, if the allocator exits without
+    --  calling Activate_Tasks for a given activation chains, as can happen if
+    --  an exception occurs during initialization of the object.
+    --
+    --  This should be called ONLY for tasks created via an allocator. Recovery
+    --  of storage for unactivated local task declarations is done by
+    --  Complete_Master and Complete_Task.
+    --
+    --  We remove each task from Chain and All_Tasks_List before we free the
+    --  storage of its ATCB.
+    --
+    --  In other places where we recover the storage of unactivated tasks, we
+    --  need to clean out the entry queues, but here that should not be
+    --  necessary, since these tasks should not have been visible to any other
+    --  tasks, and so no task should be able to queue a call on their entries.
+    --
+    --  Just in case somebody misuses this subprogram, there is a check to
+    --  verify this condition.
+ 
+    procedure Finalize_Global_Tasks;
+    --  This should be called to complete the execution of the environment task
+    --  and shut down the tasking runtime system. It is the equivalent of
+    --  Complete_Task, but for the environment task.
+    --
+    --  The environment task must first call Complete_Master, to wait for user
+    --  tasks that depend on library-level packages to terminate. It then calls
+    --  Abort_Dependents to abort the "independent" library-level server tasks
+    --  that are created implicitly by the RTS packages (signal and timer server
+    --  tasks), and then waits for them to terminate. Then, it calls
+    --  Vulnerable_Complete_Task.
+    --
+    --  It currently also executes the global finalization list, and then resets
+    --  the "soft links".
+ 
+    procedure Free_Task (T : Task_Id);
+    --  Recover all runtime system storage associated with the task T, but only
+    --  if T has terminated. Do nothing in the other case. It is called from
+    --  Unchecked_Deallocation, for objects that are or contain tasks.
+ 
+    procedure Move_Activation_Chain
+      (From, To   : Activation_Chain_Access;
+       New_Master : Master_ID);
+    --  Compiler interface only. Do not call from within the RTS.
+    --  Move all tasks on From list to To list, and change their Master_Of_Task
+    --  to be New_Master. This is used to implement build-in-place function
+    --  returns. Tasks that are part of the return object are initially placed
+    --  on an activation chain local to the return statement, and their master
+    --  is the return statement, in case the return statement is left
+    --  prematurely (due to raising an exception, being aborted, or a goto or
+    --  exit statement). Once the return statement has completed successfully,
+    --  Move_Activation_Chain is called to move them to the caller's activation
+    --  chain, and change their master to the one passed in by the caller. If
+    --  that doesn't happen, they will never be activated, and will become
+    --  terminated on leaving the return statement.
+ 
+    function Terminated (T : Task_Id) return Boolean;
+    --  This is called by the compiler to implement the 'Terminated attribute.
+    --  Though is not required to be so by the ARM, we choose to synchronize
+    --  with the task's ATCB, so that this is more useful for polling the state
+    --  of a task, and so that it becomes an abort completion point for the
+    --  calling task (via Undefer_Abort).
+    --
+    --  source code:
+    --     T1'Terminated
+    --
+    --  code expansion:
+    --     terminated (t1._task_id)
+ 
+    procedure Terminate_Task (Self_ID : Task_Id);
+    --  Terminate the calling task.
+    --  This should only be called by the Task_Wrapper procedure, and to
+    --  deallocate storage associate with foreign tasks.
+ 
+ end System.Tasking.Stages;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-tasuti.adb gcc-8.1.0/gcc/ada/libgnarl/s-tasuti.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-tasuti.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-tasuti.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,491 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --              S Y S T E M . T A S K I N G . U T I L I T I E S             --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --         Copyright (C) 1992-2018, Free Software Foundation, Inc.          --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package provides RTS Internal Declarations
+ 
+ --  These declarations are not part of the GNARLI
+ 
+ pragma Polling (Off);
+ --  Turn off polling, we do not want ATC polling to take place during tasking
+ --  operations. It causes infinite loops and other problems.
+ 
+ with System.Tasking.Debug;
+ with System.Task_Primitives.Operations;
+ with System.Tasking.Initialization;
+ with System.Tasking.Queuing;
+ with System.Parameters;
+ 
+ package body System.Tasking.Utilities is
+ 
+    package STPO renames System.Task_Primitives.Operations;
+ 
+    use Parameters;
+    use Tasking.Debug;
+    use Task_Primitives;
+    use Task_Primitives.Operations;
+ 
+    --------------------
+    -- Abort_One_Task --
+    --------------------
+ 
+    --  Similar to Locked_Abort_To_Level (Self_ID, T, 0), but:
+    --    (1) caller should be holding no locks except RTS_Lock when Single_Lock
+    --    (2) may be called for tasks that have not yet been activated
+    --    (3) always aborts whole task
+ 
+    procedure Abort_One_Task (Self_ID : Task_Id; T : Task_Id) is
+    begin
+       Write_Lock (T);
+ 
+       if T.Common.State = Unactivated then
+          T.Common.Activator := null;
+          T.Common.State := Terminated;
+          T.Callable := False;
+          Cancel_Queued_Entry_Calls (T);
+ 
+       elsif T.Common.State /= Terminated then
+          Initialization.Locked_Abort_To_Level (Self_ID, T, 0);
+       end if;
+ 
+       Unlock (T);
+    end Abort_One_Task;
+ 
+    -----------------
+    -- Abort_Tasks --
+    -----------------
+ 
+    --  This must be called to implement the abort statement.
+    --  Much of the actual work of the abort is done by the abortee,
+    --  via the Abort_Handler signal handler, and propagation of the
+    --  Abort_Signal special exception.
+ 
+    procedure Abort_Tasks (Tasks : Task_List) is
+       Self_Id : constant Task_Id := STPO.Self;
+       C       : Task_Id;
+       P       : Task_Id;
+ 
+    begin
+       --  If pragma Detect_Blocking is active then Program_Error must be
+       --  raised if this potentially blocking operation is called from a
+       --  protected action.
+ 
+       if System.Tasking.Detect_Blocking
+         and then Self_Id.Common.Protected_Action_Nesting > 0
+       then
+          raise Program_Error with "potentially blocking operation";
+       end if;
+ 
+       Initialization.Defer_Abort_Nestable (Self_Id);
+ 
+       --  ?????
+       --  Really should not be nested deferral here.
+       --  Patch for code generation error that defers abort before
+       --  evaluating parameters of an entry call (at least, timed entry
+       --  calls), and so may propagate an exception that causes abort
+       --  to remain undeferred indefinitely. See C97404B. When all
+       --  such bugs are fixed, this patch can be removed.
+ 
+       Lock_RTS;
+ 
+       for J in Tasks'Range loop
+          C := Tasks (J);
+          Abort_One_Task (Self_Id, C);
+       end loop;
+ 
+       C := All_Tasks_List;
+ 
+       while C /= null loop
+          if C.Pending_ATC_Level > 0 then
+             P := C.Common.Parent;
+ 
+             while P /= null loop
+                if P.Pending_ATC_Level = 0 then
+                   Abort_One_Task (Self_Id, C);
+                   exit;
+                end if;
+ 
+                P := P.Common.Parent;
+             end loop;
+          end if;
+ 
+          C := C.Common.All_Tasks_Link;
+       end loop;
+ 
+       Unlock_RTS;
+       Initialization.Undefer_Abort_Nestable (Self_Id);
+    end Abort_Tasks;
+ 
+    -------------------------------
+    -- Cancel_Queued_Entry_Calls --
+    -------------------------------
+ 
+    --  This should only be called by T, unless T is a terminated previously
+    --  unactivated task.
+ 
+    procedure Cancel_Queued_Entry_Calls (T : Task_Id) is
+       Next_Entry_Call : Entry_Call_Link;
+       Entry_Call      : Entry_Call_Link;
+       Self_Id         : constant Task_Id := STPO.Self;
+ 
+       Caller : Task_Id;
+       pragma Unreferenced (Caller);
+       --  Should this be removed ???
+ 
+       Level : Integer;
+       pragma Unreferenced (Level);
+       --  Should this be removed ???
+ 
+    begin
+       pragma Assert (T = Self or else T.Common.State = Terminated);
+ 
+       for J in 1 .. T.Entry_Num loop
+          Queuing.Dequeue_Head (T.Entry_Queues (J), Entry_Call);
+ 
+          while Entry_Call /= null loop
+ 
+             --  Leave Entry_Call.Done = False, since this is cancelled
+ 
+             Caller := Entry_Call.Self;
+             Entry_Call.Exception_To_Raise := Tasking_Error'Identity;
+             Queuing.Dequeue_Head (T.Entry_Queues (J), Next_Entry_Call);
+             Level := Entry_Call.Level - 1;
+             Unlock (T);
+             Write_Lock (Entry_Call.Self);
+             Initialization.Wakeup_Entry_Caller
+               (Self_Id, Entry_Call, Cancelled);
+             Unlock (Entry_Call.Self);
+             Write_Lock (T);
+             Entry_Call.State := Done;
+             Entry_Call := Next_Entry_Call;
+          end loop;
+       end loop;
+    end Cancel_Queued_Entry_Calls;
+ 
+    ------------------------
+    -- Exit_One_ATC_Level --
+    ------------------------
+ 
+    --  Call only with abort deferred and holding lock of Self_Id.
+    --  This is a bit of common code for all entry calls.
+    --  The effect is to exit one level of ATC nesting.
+ 
+    --  If we have reached the desired ATC nesting level, reset the
+    --  requested level to effective infinity, to allow further calls.
+    --  In any case, reset Self_Id.Aborting, to allow re-raising of
+    --  Abort_Signal.
+ 
+    procedure Exit_One_ATC_Level (Self_ID : Task_Id) is
+    begin
+       Self_ID.ATC_Nesting_Level := Self_ID.ATC_Nesting_Level - 1;
+ 
+       pragma Debug
+         (Debug.Trace (Self_ID, "EOAL: exited to ATC level: " &
+          ATC_Level'Image (Self_ID.ATC_Nesting_Level), 'A'));
+ 
+       pragma Assert (Self_ID.ATC_Nesting_Level >= 1);
+ 
+       if Self_ID.Pending_ATC_Level < ATC_Level_Infinity then
+          if Self_ID.Pending_ATC_Level = Self_ID.ATC_Nesting_Level then
+             Self_ID.Pending_ATC_Level := ATC_Level_Infinity;
+             Self_ID.Aborting := False;
+          else
+             --  Force the next Undefer_Abort to re-raise Abort_Signal
+ 
+             pragma Assert
+              (Self_ID.Pending_ATC_Level < Self_ID.ATC_Nesting_Level);
+ 
+             if Self_ID.Aborting then
+                Self_ID.ATC_Hack := True;
+                Self_ID.Pending_Action := True;
+             end if;
+          end if;
+       end if;
+    end Exit_One_ATC_Level;
+ 
+    ----------------------
+    -- Make_Independent --
+    ----------------------
+ 
+    function Make_Independent return Boolean is
+       Self_Id               : constant Task_Id := STPO.Self;
+       Environment_Task      : constant Task_Id := STPO.Environment_Task;
+       Parent                : constant Task_Id := Self_Id.Common.Parent;
+ 
+    begin
+       if Self_Id.Known_Tasks_Index /= -1 then
+          Known_Tasks (Self_Id.Known_Tasks_Index) := null;
+       end if;
+ 
+       Initialization.Defer_Abort (Self_Id);
+ 
+       if Single_Lock then
+          Lock_RTS;
+       end if;
+ 
+       Write_Lock (Environment_Task);
+       Write_Lock (Self_Id);
+ 
+       --  The run time assumes that the parent of an independent task is the
+       --  environment task.
+ 
+       pragma Assert (Parent = Environment_Task);
+ 
+       Self_Id.Master_Of_Task := Independent_Task_Level;
+ 
+       --  Update Independent_Task_Count that is needed for the GLADE
+       --  termination rule. See also pending update in
+       --  System.Tasking.Stages.Check_Independent
+ 
+       Independent_Task_Count := Independent_Task_Count + 1;
+ 
+       --  This should be called before the task reaches its "begin" (see spec),
+       --  which ensures that the environment task cannot race ahead and be
+       --  already waiting for children to complete.
+ 
+       Unlock (Self_Id);
+       pragma Assert (Environment_Task.Common.State /= Master_Completion_Sleep);
+ 
+       Unlock (Environment_Task);
+ 
+       if Single_Lock then
+          Unlock_RTS;
+       end if;
+ 
+       Initialization.Undefer_Abort (Self_Id);
+ 
+       --  Return True. Actually the return value is junk, since we expect it
+       --  always to be ignored (see spec), but we have to return something!
+ 
+       return True;
+    end Make_Independent;
+ 
+    ------------------
+    -- Make_Passive --
+    ------------------
+ 
+    procedure Make_Passive (Self_ID : Task_Id; Task_Completed : Boolean) is
+       C : Task_Id := Self_ID;
+       P : Task_Id := C.Common.Parent;
+ 
+       Master_Completion_Phase : Integer;
+ 
+    begin
+       if P /= null then
+          Write_Lock (P);
+       end if;
+ 
+       Write_Lock (C);
+ 
+       if Task_Completed then
+          Self_ID.Common.State := Terminated;
+ 
+          if Self_ID.Awake_Count = 0 then
+ 
+             --  We are completing via a terminate alternative.
+             --  Our parent should wait in Phase 2 of Complete_Master.
+ 
+             Master_Completion_Phase := 2;
+ 
+             pragma Assert (Task_Completed);
+             pragma Assert (Self_ID.Terminate_Alternative);
+             pragma Assert (Self_ID.Alive_Count = 1);
+ 
+          else
+             --  We are NOT on a terminate alternative.
+             --  Our parent should wait in Phase 1 of Complete_Master.
+ 
+             Master_Completion_Phase := 1;
+             pragma Assert (Self_ID.Awake_Count >= 1);
+          end if;
+ 
+       --  We are accepting with a terminate alternative
+ 
+       else
+          if Self_ID.Open_Accepts = null then
+ 
+             --  Somebody started a rendezvous while we had our lock open.
+             --  Skip the terminate alternative.
+ 
+             Unlock (C);
+ 
+             if P /= null then
+                Unlock (P);
+             end if;
+ 
+             return;
+          end if;
+ 
+          Self_ID.Terminate_Alternative := True;
+          Master_Completion_Phase := 0;
+ 
+          pragma Assert (Self_ID.Terminate_Alternative);
+          pragma Assert (Self_ID.Awake_Count >= 1);
+       end if;
+ 
+       if Master_Completion_Phase = 2 then
+ 
+          --  Since our Awake_Count is zero but our Alive_Count
+          --  is nonzero, we have been accepting with a terminate
+          --  alternative, and we now have been told to terminate
+          --  by a completed master (in some ancestor task) that
+          --  is waiting (with zero Awake_Count) in Phase 2 of
+          --  Complete_Master.
+ 
+          pragma Debug (Debug.Trace (Self_ID, "Make_Passive: Phase 2", 'M'));
+ 
+          pragma Assert (P /= null);
+ 
+          C.Alive_Count := C.Alive_Count - 1;
+ 
+          if C.Alive_Count > 0 then
+             Unlock (C);
+             Unlock (P);
+             return;
+          end if;
+ 
+          --  C's count just went to zero, indicating that
+          --  all of C's dependents are terminated.
+          --  C has a parent, P.
+ 
+          loop
+             --  C's count just went to zero, indicating that all of C's
+             --  dependents are terminated. C has a parent, P. Notify P that
+             --  C and its dependents have all terminated.
+ 
+             P.Alive_Count := P.Alive_Count - 1;
+             exit when P.Alive_Count > 0;
+             Unlock (C);
+             Unlock (P);
+             C := P;
+             P := C.Common.Parent;
+ 
+             --  Environment task cannot have terminated yet
+ 
+             pragma Assert (P /= null);
+ 
+             Write_Lock (P);
+             Write_Lock (C);
+          end loop;
+ 
+          if P.Common.State = Master_Phase_2_Sleep
+            and then C.Master_Of_Task = P.Master_Within
+          then
+             pragma Assert (P.Common.Wait_Count > 0);
+             P.Common.Wait_Count := P.Common.Wait_Count - 1;
+ 
+             if P.Common.Wait_Count = 0 then
+                Wakeup (P, Master_Phase_2_Sleep);
+             end if;
+          end if;
+ 
+          Unlock (C);
+          Unlock (P);
+          return;
+       end if;
+ 
+       --  We are terminating in Phase 1 or Complete_Master,
+       --  or are accepting on a terminate alternative.
+ 
+       C.Awake_Count := C.Awake_Count - 1;
+ 
+       if Task_Completed then
+          C.Alive_Count := C.Alive_Count - 1;
+       end if;
+ 
+       if C.Awake_Count > 0 or else P = null then
+          Unlock (C);
+ 
+          if P /= null then
+             Unlock (P);
+          end if;
+ 
+          return;
+       end if;
+ 
+       --  C's count just went to zero, indicating that all of C's
+       --  dependents are terminated or accepting with terminate alt.
+       --  C has a parent, P.
+ 
+       loop
+          --  Notify P that C has gone passive
+ 
+          if P.Awake_Count > 0 then
+             P.Awake_Count := P.Awake_Count - 1;
+          end if;
+ 
+          if Task_Completed and then C.Alive_Count = 0 then
+             P.Alive_Count := P.Alive_Count - 1;
+          end if;
+ 
+          exit when P.Awake_Count > 0;
+          Unlock (C);
+          Unlock (P);
+          C := P;
+          P := C.Common.Parent;
+ 
+          if P = null then
+             return;
+          end if;
+ 
+          Write_Lock (P);
+          Write_Lock (C);
+       end loop;
+ 
+       --  P has non-passive dependents
+ 
+       if P.Common.State = Master_Completion_Sleep
+         and then C.Master_Of_Task = P.Master_Within
+       then
+          pragma Debug
+            (Debug.Trace
+             (Self_ID, "Make_Passive: Phase 1, parent waiting", 'M'));
+ 
+          --  If parent is in Master_Completion_Sleep, it cannot be on a
+          --  terminate alternative, hence it cannot have Wait_Count of zero.
+ 
+          pragma Assert (P.Common.Wait_Count > 0);
+          P.Common.Wait_Count := P.Common.Wait_Count - 1;
+ 
+          if P.Common.Wait_Count = 0 then
+             Wakeup (P, Master_Completion_Sleep);
+          end if;
+ 
+       else
+          pragma Debug
+            (Debug.Trace (Self_ID, "Make_Passive: Phase 1, parent awake", 'M'));
+          null;
+       end if;
+ 
+       Unlock (C);
+       Unlock (P);
+    end Make_Passive;
+ 
+ end System.Tasking.Utilities;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-tasuti.ads gcc-8.1.0/gcc/ada/libgnarl/s-tasuti.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-tasuti.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-tasuti.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,129 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                  GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                --
+ --                                                                          --
+ --              S Y S T E M . T A S K I N G . U T I L I T I E S             --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --         Copyright (C) 1992-2018, Free Software Foundation, Inc.          --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package provides RTS Internal Declarations.
+ --  These declarations are not part of the GNARLI
+ 
+ with Ada.Unchecked_Conversion;
+ with System.Task_Primitives;
+ 
+ package System.Tasking.Utilities is
+ 
+    function ATCB_To_Address is new
+      Ada.Unchecked_Conversion (Task_Id, System.Task_Primitives.Task_Address);
+ 
+    ---------------------------------
+    -- Task_Stage Related routines --
+    ---------------------------------
+ 
+    function Make_Independent return Boolean;
+    --  Move the current task to the outermost level (level 2) of the master
+    --  hierarchy of the environment task. That is one level further out
+    --  than normal tasks defined in library-level packages (level 3). The
+    --  environment task will wait for level 3 tasks to terminate normally,
+    --  then it will abort all the level 2 tasks. See Finalize_Global_Tasks
+    --  procedure for more information.
+    --
+    --  This is a dangerous operation, and should never be used on nested tasks
+    --  or tasks that depend on any objects that might be finalized earlier than
+    --  the termination of the environment task. It is primarily for internal
+    --  use by the GNARL, to prevent such internal server tasks from preventing
+    --  a partition from terminating.
+    --
+    --  Also note that the run time assumes that the parent of an independent
+    --  task is the environment task. If this is not the case, Make_Independent
+    --  will change the task's parent. This assumption is particularly
+    --  important for master level completion and for the computation of
+    --  Independent_Task_Count.
+    --
+    --  NOTE WELL: Make_Independent should be called before the task reaches its
+    --  "begin", like this:
+    --
+    --     task body Some_Independent_Task is
+    --        ...
+    --        Ignore : constant Boolean := Make_Independent;
+    --        ...
+    --     begin
+    --
+    --  The return value is meaningless; the only reason this is a function is
+    --  to get around the Ada limitation that makes a procedure call
+    --  syntactically illegal before the "begin".
+    --
+    --  Calling it before "begin" ensures that the call completes before the
+    --  activating task can proceed. This is important for preventing race
+    --  conditions. For example, if the environment task reaches
+    --  Finalize_Global_Tasks before some task has finished Make_Independent,
+    --  the program can hang.
+    --
+    --  Note also that if a package declares independent tasks, it should not
+    --  initialize its package-body data after "begin" of the package, because
+    --  that's where the tasks are activated. Initializing such data before the
+    --  task activation helps prevent the tasks from accessing uninitialized
+    --  data.
+ 
+    Independent_Task_Count : Natural := 0;
+    --  Number of independent tasks. This counter is incremented each time
+    --  Make_Independent is called. Note that if a server task terminates,
+    --  this counter will not be decremented. Since Make_Independent locks
+    --  the environment task (because every independent task depends on it),
+    --  this counter is protected by the environment task's lock.
+ 
+    ---------------------------------
+    -- Task Abort Related Routines --
+    ---------------------------------
+ 
+    procedure Cancel_Queued_Entry_Calls (T : Task_Id);
+    --  Cancel any entry calls queued on target task.
+    --  Call this while holding T's lock (or RTS_Lock in Single_Lock mode).
+ 
+    procedure Exit_One_ATC_Level (Self_ID : Task_Id);
+    pragma Inline (Exit_One_ATC_Level);
+    --  Call only with abort deferred and holding lock of Self_ID.
+    --  This is a bit of common code for all entry calls.
+    --  The effect is to exit one level of ATC nesting.
+ 
+    procedure Abort_One_Task (Self_ID : Task_Id; T : Task_Id);
+    --  Similar to Locked_Abort_To_Level (Self_ID, T, 0), but:
+    --    (1) caller should be holding no locks
+    --    (2) may be called for tasks that have not yet been activated
+    --    (3) always aborts whole task
+ 
+    procedure Abort_Tasks (Tasks : Task_List);
+    --  Abort_Tasks is called to initiate abort, however, the actual
+    --  aborting is done by aborted task by means of Abort_Handler
+ 
+    procedure Make_Passive (Self_ID : Task_Id; Task_Completed : Boolean);
+    --  Update counts to indicate current task is either terminated or
+    --  accepting on a terminate alternative. Call holding no locks except
+    --  Global_Task_Lock when calling from Terminate_Task, and RTS_Lock when
+    --  Single_Lock is True.
+ 
+ end System.Tasking.Utilities;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-tataat.adb gcc-8.1.0/gcc/ada/libgnarl/s-tataat.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-tataat.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-tataat.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,98 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --         S Y S T E M . T A S K I N G . T A S K _ A T T R I B U T E S      --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --          Copyright (C) 2014-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Parameters; use System.Parameters;
+ with System.Tasking.Initialization; use System.Tasking.Initialization;
+ with System.Task_Primitives.Operations;
+ 
+ package body System.Tasking.Task_Attributes is
+ 
+    package STPO renames System.Task_Primitives.Operations;
+ 
+    type Index_Info is record
+       Used : Boolean;
+       --  Used is True if a given index is used by an instantiation of
+       --  Ada.Task_Attributes, False otherwise.
+ 
+       Require_Finalization : Boolean;
+       --  Require_Finalization is True if the attribute requires finalization
+    end record;
+ 
+    Index_Array : array (1 .. Max_Attribute_Count) of Index_Info :=
+                    (others => (False, False));
+ 
+    --  Note that this package will use an efficient implementation with no
+    --  locks and no extra dynamic memory allocation if Attribute can fit in a
+    --  System.Address type and Initial_Value is 0 (or null for an access type).
+ 
+    function Next_Index (Require_Finalization : Boolean) return Integer is
+       Self_Id : constant Task_Id := STPO.Self;
+ 
+    begin
+       Task_Lock (Self_Id);
+ 
+       for J in Index_Array'Range loop
+          if not Index_Array (J).Used then
+             Index_Array (J).Used := True;
+             Index_Array (J).Require_Finalization := Require_Finalization;
+             Task_Unlock (Self_Id);
+             return J;
+          end if;
+       end loop;
+ 
+       Task_Unlock (Self_Id);
+       raise Storage_Error with "Out of task attributes";
+    end Next_Index;
+ 
+    --------------
+    -- Finalize --
+    --------------
+ 
+    procedure Finalize (Index : Integer) is
+       Self_Id : constant Task_Id := STPO.Self;
+    begin
+       pragma Assert (Index in Index_Array'Range);
+       Task_Lock (Self_Id);
+       Index_Array (Index).Used := False;
+       Task_Unlock (Self_Id);
+    end Finalize;
+ 
+    --------------------------
+    -- Require_Finalization --
+    --------------------------
+ 
+    function Require_Finalization (Index : Integer) return Boolean is
+    begin
+       pragma Assert (Index in Index_Array'Range);
+       return Index_Array (Index).Require_Finalization;
+    end Require_Finalization;
+ 
+ end System.Tasking.Task_Attributes;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-tataat.ads gcc-8.1.0/gcc/ada/libgnarl/s-tataat.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-tataat.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-tataat.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,70 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --         S Y S T E M . T A S K I N G . T A S K _ A T T R I B U T E S      --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --            Copyright (C) 2014-2018, Free Software Foundation, Inc.       --
+ --                                                                          --
+ -- GNAT is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package provides support for the body of Ada.Task_Attributes
+ 
+ with Ada.Unchecked_Conversion;
+ 
+ package System.Tasking.Task_Attributes is
+ 
+    type Deallocator is access procedure (Ptr : Atomic_Address);
+ 
+    type Attribute_Record is record
+       Free : Deallocator;
+    end record;
+    --  The real type is declared in Ada.Task_Attributes body: Real_Attribute.
+    --  As long as the first field is the deallocator we are good.
+ 
+    type Attribute_Access is access all Attribute_Record;
+    pragma No_Strict_Aliasing (Attribute_Access);
+ 
+    function To_Attribute is new
+      Ada.Unchecked_Conversion (Atomic_Address, Attribute_Access);
+ 
+    function Next_Index (Require_Finalization : Boolean) return Integer;
+    --  Return the next attribute index available. Require_Finalization is True
+    --  if the attribute requires finalization and in particular its deallocator
+    --  (Free field in Attribute_Record) should be called. Raise Storage_Error
+    --  if no index is available.
+ 
+    function Require_Finalization (Index : Integer) return Boolean;
+    --  Return True if a given attribute index requires call to Free. This call
+    --  is not protected against concurrent access, should only be called during
+    --  finalization of the corresponding instantiation of Ada.Task_Attributes,
+    --  or during finalization of a task.
+ 
+    procedure Finalize (Index : Integer);
+    --  Finalize given Index, possibly allowing future reuse
+ 
+ private
+    pragma Inline (Finalize);
+    pragma Inline (Require_Finalization);
+ end System.Tasking.Task_Attributes;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-tpinop.adb gcc-8.1.0/gcc/ada/libgnarl/s-tpinop.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-tpinop.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-tpinop.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,77 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --               SYSTEM.TASK_PRIMITIVES.INTERRUPT_OPERATIONS                --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1998-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ package body System.Task_Primitives.Interrupt_Operations is
+ 
+    --  ??? The VxWorks version of System.Interrupt_Management needs to access
+    --  this array, but due to elaboration problems, it can't with this
+    --  package directly, so we export this variable for now.
+ 
+    Interrupt_ID_Map : array (IM.Interrupt_ID) of ST.Task_Id;
+    pragma Export (Ada, Interrupt_ID_Map,
+      "system__task_primitives__interrupt_operations__interrupt_id_map");
+ 
+    ----------------------
+    -- Get_Interrupt_ID --
+    ----------------------
+ 
+    function Get_Interrupt_ID (T : ST.Task_Id) return IM.Interrupt_ID is
+       use type ST.Task_Id;
+ 
+    begin
+       for Interrupt in IM.Interrupt_ID loop
+          if Interrupt_ID_Map (Interrupt) = T then
+             return Interrupt;
+          end if;
+       end loop;
+ 
+       raise Program_Error;
+    end Get_Interrupt_ID;
+ 
+    -----------------
+    -- Get_Task_Id --
+    -----------------
+ 
+    function Get_Task_Id (Interrupt : IM.Interrupt_ID) return ST.Task_Id is
+    begin
+       return Interrupt_ID_Map (Interrupt);
+    end Get_Task_Id;
+ 
+    ----------------------
+    -- Set_Interrupt_ID --
+    ----------------------
+ 
+    procedure Set_Interrupt_ID (Interrupt : IM.Interrupt_ID; T : ST.Task_Id) is
+    begin
+       Interrupt_ID_Map (Interrupt) := T;
+    end Set_Interrupt_ID;
+ 
+ end System.Task_Primitives.Interrupt_Operations;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-tpinop.ads gcc-8.1.0/gcc/ada/libgnarl/s-tpinop.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-tpinop.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-tpinop.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,50 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --               SYSTEM.TASK_PRIMITIVES.INTERRUPT_OPERATIONS                --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1998-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Interrupt_Management;
+ with System.Tasking;
+ 
+ package System.Task_Primitives.Interrupt_Operations is
+    pragma Preelaborate;
+ 
+    package IM renames System.Interrupt_Management;
+    package ST renames System.Tasking;
+ 
+    procedure Set_Interrupt_ID (Interrupt : IM.Interrupt_ID; T : ST.Task_Id);
+    --  Associate an Interrupt_ID with a task
+ 
+    function Get_Interrupt_ID (T : ST.Task_Id) return IM.Interrupt_ID;
+    --  Return the Interrupt_ID associated with a task
+ 
+    function Get_Task_Id (Interrupt : IM.Interrupt_ID) return ST.Task_Id;
+    --  Return the Task_Id associated with an Interrupt
+ 
+ end System.Task_Primitives.Interrupt_Operations;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-tpoaal.adb gcc-8.1.0/gcc/ada/libgnarl/s-tpoaal.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-tpoaal.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-tpoaal.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,83 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --             SYSTEM.TASK_PRIMITIVES.OPERATIONS.ATCB_ALLOCATION            --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --        Copyright (C) 2011-2018, Free Software Foundation, Inc.           --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with Ada.Unchecked_Deallocation;
+ 
+ separate (System.Task_Primitives.Operations)
+ package body ATCB_Allocation is
+ 
+    ---------------
+    -- Free_ATCB --
+    ---------------
+ 
+    procedure Free_ATCB (T : Task_Id) is
+       Tmp     : Task_Id := T;
+       Is_Self : constant Boolean := T = Self;
+ 
+       procedure Free is new
+         Ada.Unchecked_Deallocation (Ada_Task_Control_Block, Task_Id);
+ 
+    begin
+       if Is_Self then
+          declare
+             Local_ATCB : aliased Ada_Task_Control_Block (0);
+             --  Create a dummy ATCB and initialize it minimally so that "Free"
+             --  can still call Self and Defer/Undefer_Abort after Tmp is freed
+             --  by the underlying memory management library.
+ 
+          begin
+             Local_ATCB.Common.LL.Thread        := T.Common.LL.Thread;
+             Local_ATCB.Common.Current_Priority := T.Common.Current_Priority;
+ 
+             Specific.Set (Local_ATCB'Unchecked_Access);
+             Free (Tmp);
+ 
+             --  Note: it is assumed here that for all platforms, Specific.Set
+             --  deletes the task specific information if passed a null value.
+ 
+             Specific.Set (null);
+          end;
+ 
+       else
+          Free (Tmp);
+       end if;
+    end Free_ATCB;
+ 
+    --------------
+    -- New_ATCB --
+    --------------
+ 
+    function New_ATCB (Entry_Num : Task_Entry_Index) return Task_Id is
+    begin
+       return new Ada_Task_Control_Block (Entry_Num);
+    end New_ATCB;
+ 
+ end ATCB_Allocation;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-tpoben.adb gcc-8.1.0/gcc/ada/libgnarl/s-tpoben.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-tpoben.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-tpoben.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,427 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                  --
+ --                                                                          --
+ --                SYSTEM.TASKING.PROTECTED_OBJECTS.ENTRIES                  --
+ --                                                                          --
+ --                               B o d y                                    --
+ --                                                                          --
+ --          Copyright (C) 1998-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package contains all the simple primitives related to protected
+ --  objects with entries (i.e init, lock, unlock).
+ 
+ --  The handling of protected objects with no entries is done in
+ --  System.Tasking.Protected_Objects, the complex routines for protected
+ --  objects with entries in System.Tasking.Protected_Objects.Operations.
+ 
+ --  The split between Entries and Operations is needed to break circular
+ --  dependencies inside the run time.
+ 
+ --  Note: the compiler generates direct calls to this interface, via Rtsfind
+ 
+ with System.Task_Primitives.Operations;
+ with System.Restrictions;
+ with System.Parameters;
+ 
+ with System.Tasking.Initialization;
+ pragma Elaborate_All (System.Tasking.Initialization);
+ --  To insure that tasking is initialized if any protected objects are created
+ 
+ package body System.Tasking.Protected_Objects.Entries is
+ 
+    package STPO renames System.Task_Primitives.Operations;
+ 
+    use Parameters;
+    use Task_Primitives.Operations;
+ 
+    ----------------
+    -- Local Data --
+    ----------------
+ 
+    Locking_Policy : Character;
+    pragma Import (C, Locking_Policy, "__gl_locking_policy");
+ 
+    --------------
+    -- Finalize --
+    --------------
+ 
+    overriding procedure Finalize (Object : in out Protection_Entries) is
+       Entry_Call        : Entry_Call_Link;
+       Caller            : Task_Id;
+       Ceiling_Violation : Boolean;
+       Self_ID           : constant Task_Id := STPO.Self;
+       Old_Base_Priority : System.Any_Priority;
+ 
+    begin
+       if Object.Finalized then
+          return;
+       end if;
+ 
+       STPO.Write_Lock (Object.L'Unrestricted_Access, Ceiling_Violation);
+ 
+       if Single_Lock then
+          Lock_RTS;
+       end if;
+ 
+       if Ceiling_Violation then
+ 
+          --  Dip our own priority down to ceiling of lock. See similar code in
+          --  Tasking.Entry_Calls.Lock_Server.
+ 
+          STPO.Write_Lock (Self_ID);
+          Old_Base_Priority := Self_ID.Common.Base_Priority;
+          Self_ID.New_Base_Priority := Object.Ceiling;
+          Initialization.Change_Base_Priority (Self_ID);
+          STPO.Unlock (Self_ID);
+ 
+          if Single_Lock then
+             Unlock_RTS;
+          end if;
+ 
+          STPO.Write_Lock (Object.L'Unrestricted_Access, Ceiling_Violation);
+ 
+          if Ceiling_Violation then
+             raise Program_Error with "ceiling violation";
+          end if;
+ 
+          if Single_Lock then
+             Lock_RTS;
+          end if;
+ 
+          Object.Old_Base_Priority := Old_Base_Priority;
+          Object.Pending_Action := True;
+       end if;
+ 
+       --  Send program_error to all tasks still queued on this object
+ 
+       for E in Object.Entry_Queues'Range loop
+          Entry_Call := Object.Entry_Queues (E).Head;
+ 
+          while Entry_Call /= null loop
+             Caller := Entry_Call.Self;
+             Entry_Call.Exception_To_Raise := Program_Error'Identity;
+ 
+             STPO.Write_Lock (Caller);
+             Initialization.Wakeup_Entry_Caller (Self_ID, Entry_Call, Done);
+             STPO.Unlock (Caller);
+ 
+             exit when Entry_Call = Object.Entry_Queues (E).Tail;
+             Entry_Call := Entry_Call.Next;
+          end loop;
+       end loop;
+ 
+       Object.Finalized := True;
+ 
+       if Single_Lock then
+          Unlock_RTS;
+       end if;
+ 
+       STPO.Unlock (Object.L'Unrestricted_Access);
+ 
+       STPO.Finalize_Lock (Object.L'Unrestricted_Access);
+    end Finalize;
+ 
+    -----------------
+    -- Get_Ceiling --
+    -----------------
+ 
+    function Get_Ceiling
+      (Object : Protection_Entries_Access) return System.Any_Priority is
+    begin
+       return Object.New_Ceiling;
+    end Get_Ceiling;
+ 
+    -------------------------------------
+    -- Has_Interrupt_Or_Attach_Handler --
+    -------------------------------------
+ 
+    function Has_Interrupt_Or_Attach_Handler
+      (Object : Protection_Entries_Access)
+       return   Boolean
+    is
+       pragma Warnings (Off, Object);
+    begin
+       return False;
+    end Has_Interrupt_Or_Attach_Handler;
+ 
+    -----------------------------------
+    -- Initialize_Protection_Entries --
+    -----------------------------------
+ 
+    procedure Initialize_Protection_Entries
+      (Object            : Protection_Entries_Access;
+       Ceiling_Priority  : Integer;
+       Compiler_Info     : System.Address;
+       Entry_Queue_Maxes : Protected_Entry_Queue_Max_Access;
+       Entry_Bodies      : Protected_Entry_Body_Access;
+       Find_Body_Index   : Find_Body_Index_Access)
+    is
+       Init_Priority : Integer := Ceiling_Priority;
+       Self_ID       : constant Task_Id := STPO.Self;
+ 
+    begin
+       if Init_Priority = Unspecified_Priority then
+          Init_Priority := System.Priority'Last;
+       end if;
+ 
+       if Locking_Policy = 'C'
+         and then Has_Interrupt_Or_Attach_Handler (Object)
+         and then Init_Priority not in System.Interrupt_Priority
+       then
+          --  Required by C.3.1(11)
+ 
+          raise Program_Error;
+       end if;
+ 
+       --  If a PO is created from a controlled operation, abort is already
+       --  deferred at this point, so we need to use Defer_Abort_Nestable. In
+       --  some cases, the following assertion can help to spot inconsistencies,
+       --  outside the above scenario involving controlled types.
+ 
+       --  pragma Assert (Self_Id.Deferral_Level = 0);
+ 
+       Initialization.Defer_Abort_Nestable (Self_ID);
+       Initialize_Lock (Init_Priority, Object.L'Access);
+       Initialization.Undefer_Abort_Nestable (Self_ID);
+ 
+       Object.Ceiling           := System.Any_Priority (Init_Priority);
+       Object.New_Ceiling       := System.Any_Priority (Init_Priority);
+       Object.Owner             := Null_Task;
+       Object.Compiler_Info     := Compiler_Info;
+       Object.Pending_Action    := False;
+       Object.Call_In_Progress  := null;
+       Object.Entry_Queue_Maxes := Entry_Queue_Maxes;
+       Object.Entry_Bodies      := Entry_Bodies;
+       Object.Find_Body_Index   := Find_Body_Index;
+ 
+       for E in Object.Entry_Queues'Range loop
+          Object.Entry_Queues (E).Head := null;
+          Object.Entry_Queues (E).Tail := null;
+       end loop;
+    end Initialize_Protection_Entries;
+ 
+    ------------------
+    -- Lock_Entries --
+    ------------------
+ 
+    procedure Lock_Entries (Object : Protection_Entries_Access) is
+       Ceiling_Violation : Boolean;
+ 
+    begin
+       Lock_Entries_With_Status (Object, Ceiling_Violation);
+ 
+       if Ceiling_Violation then
+          raise Program_Error with "ceiling violation";
+       end if;
+    end Lock_Entries;
+ 
+    ------------------------------
+    -- Lock_Entries_With_Status --
+    ------------------------------
+ 
+    procedure Lock_Entries_With_Status
+      (Object            : Protection_Entries_Access;
+       Ceiling_Violation : out Boolean)
+    is
+    begin
+       if Object.Finalized then
+          raise Program_Error with "protected object is finalized";
+       end if;
+ 
+       --  If pragma Detect_Blocking is active then, as described in the ARM
+       --  9.5.1, par. 15, we must check whether this is an external call on a
+       --  protected subprogram with the same target object as that of the
+       --  protected action that is currently in progress (i.e., if the caller
+       --  is already the protected object's owner). If this is the case hence
+       --  Program_Error must be raised.
+ 
+       if Detect_Blocking and then Object.Owner = Self then
+          raise Program_Error;
+       end if;
+ 
+       --  The lock is made without deferring abort
+ 
+       --  Therefore the abort has to be deferred before calling this routine.
+       --  This means that the compiler has to generate a Defer_Abort call
+       --  before the call to Lock.
+ 
+       --  The caller is responsible for undeferring abort, and compiler
+       --  generated calls must be protected with cleanup handlers to ensure
+       --  that abort is undeferred in all cases.
+ 
+       pragma Assert
+         (STPO.Self.Deferral_Level > 0
+           or else not Restrictions.Abort_Allowed);
+ 
+       Write_Lock (Object.L'Access, Ceiling_Violation);
+ 
+       --  We are entering in a protected action, so that we increase the
+       --  protected object nesting level (if pragma Detect_Blocking is
+       --  active), and update the protected object's owner.
+ 
+       if Detect_Blocking then
+          declare
+             Self_Id : constant Task_Id := Self;
+ 
+          begin
+             --  Update the protected object's owner
+ 
+             Object.Owner := Self_Id;
+ 
+             --  Increase protected object nesting level
+ 
+             Self_Id.Common.Protected_Action_Nesting :=
+               Self_Id.Common.Protected_Action_Nesting + 1;
+          end;
+       end if;
+    end Lock_Entries_With_Status;
+ 
+    ----------------------------
+    -- Lock_Read_Only_Entries --
+    ----------------------------
+ 
+    procedure Lock_Read_Only_Entries (Object : Protection_Entries_Access) is
+       Ceiling_Violation : Boolean;
+ 
+    begin
+       if Object.Finalized then
+          raise Program_Error with "protected object is finalized";
+       end if;
+ 
+       --  If pragma Detect_Blocking is active then, as described in the ARM
+       --  9.5.1, par. 15, we must check whether this is an external call on a
+       --  protected subprogram with the same target object as that of the
+       --  protected action that is currently in progress (i.e., if the caller
+       --  is already the protected object's owner). If this is the case hence
+       --  Program_Error must be raised.
+ 
+       --  Note that in this case (getting read access), several tasks may
+       --  have read ownership of the protected object, so that this method of
+       --  storing the (single) protected object's owner does not work
+       --  reliably for read locks. However, this is the approach taken for two
+       --  major reasons: first, this function is not currently being used (it
+       --  is provided for possible future use), and second, it largely
+       --  simplifies the implementation.
+ 
+       if Detect_Blocking and then Object.Owner = Self then
+          raise Program_Error;
+       end if;
+ 
+       Read_Lock (Object.L'Access, Ceiling_Violation);
+ 
+       if Ceiling_Violation then
+          raise Program_Error with "ceiling violation";
+       end if;
+ 
+       --  We are entering in a protected action, so that we increase the
+       --  protected object nesting level (if pragma Detect_Blocking is
+       --  active), and update the protected object's owner.
+ 
+       if Detect_Blocking then
+          declare
+             Self_Id : constant Task_Id := Self;
+ 
+          begin
+             --  Update the protected object's owner
+ 
+             Object.Owner := Self_Id;
+ 
+             --  Increase protected object nesting level
+ 
+             Self_Id.Common.Protected_Action_Nesting :=
+               Self_Id.Common.Protected_Action_Nesting + 1;
+          end;
+       end if;
+    end Lock_Read_Only_Entries;
+ 
+    -----------------------
+    -- Number_Of_Entries --
+    -----------------------
+ 
+    function Number_Of_Entries
+      (Object : Protection_Entries_Access) return Entry_Index
+    is
+    begin
+       return Entry_Index (Object.Num_Entries);
+    end Number_Of_Entries;
+ 
+    -----------------
+    -- Set_Ceiling --
+    -----------------
+ 
+    procedure Set_Ceiling
+      (Object : Protection_Entries_Access;
+       Prio   : System.Any_Priority) is
+    begin
+       Object.New_Ceiling := Prio;
+    end Set_Ceiling;
+ 
+    --------------------
+    -- Unlock_Entries --
+    --------------------
+ 
+    procedure Unlock_Entries (Object : Protection_Entries_Access) is
+    begin
+       --  We are exiting from a protected action, so that we decrease the
+       --  protected object nesting level (if pragma Detect_Blocking is
+       --  active), and remove ownership of the protected object.
+ 
+       if Detect_Blocking then
+          declare
+             Self_Id : constant Task_Id := Self;
+ 
+          begin
+             --  Calls to this procedure can only take place when being within
+             --  a protected action and when the caller is the protected
+             --  object's owner.
+ 
+             pragma Assert (Self_Id.Common.Protected_Action_Nesting > 0
+                              and then Object.Owner = Self_Id);
+ 
+             --  Remove ownership of the protected object
+ 
+             Object.Owner := Null_Task;
+ 
+             Self_Id.Common.Protected_Action_Nesting :=
+               Self_Id.Common.Protected_Action_Nesting - 1;
+          end;
+       end if;
+ 
+       --  Before releasing the mutex we must actually update its ceiling
+       --  priority if it has been changed.
+ 
+       if Object.New_Ceiling /= Object.Ceiling then
+          if Locking_Policy = 'C' then
+             System.Task_Primitives.Operations.Set_Ceiling
+               (Object.L'Access, Object.New_Ceiling);
+          end if;
+ 
+          Object.Ceiling := Object.New_Ceiling;
+       end if;
+ 
+       Unlock (Object.L'Access);
+    end Unlock_Entries;
+ 
+ end System.Tasking.Protected_Objects.Entries;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-tpoben.ads gcc-8.1.0/gcc/ada/libgnarl/s-tpoben.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-tpoben.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-tpoben.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,236 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                  --
+ --                                                                          --
+ --                SYSTEM.TASKING.PROTECTED_OBJECTS.ENTRIES                  --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package contains all simple primitives related to Protected_Objects
+ --  with entries (i.e init, lock, unlock).
+ 
+ --  The handling of protected objects with no entries is done in
+ --  System.Tasking.Protected_Objects, the complex routines for protected
+ --  objects with entries in System.Tasking.Protected_Objects.Operations.
+ 
+ --  The split between Entries and Operations is needed to break circular
+ --  dependencies inside the run time.
+ 
+ --  Note: the compiler generates direct calls to this interface, via Rtsfind.
+ --  Any changes to this interface may require corresponding compiler changes.
+ 
+ with Ada.Finalization;
+ with Ada.Unchecked_Conversion;
+ 
+ package System.Tasking.Protected_Objects.Entries is
+    pragma Elaborate_Body;
+ 
+    subtype Positive_Protected_Entry_Index is
+      Protected_Entry_Index range  1 .. Protected_Entry_Index'Last;
+    --  Index of the entry (and in some cases of the queue)
+ 
+    type Find_Body_Index_Access is access
+      function
+        (O : System.Address;
+         E : Protected_Entry_Index)
+         return Protected_Entry_Index;
+    --  Convert a queue index to an entry index (an entry family has one entry
+    --  index for several queue indexes).
+ 
+    type Protected_Entry_Body_Array is
+      array (Positive_Protected_Entry_Index range <>) of Entry_Body;
+    --  Contains executable code for all entry bodies of a protected type
+ 
+    type Protected_Entry_Body_Access is
+      access constant Protected_Entry_Body_Array;
+ 
+    type Protected_Entry_Queue_Array is
+      array (Protected_Entry_Index range <>) of Entry_Queue;
+ 
+    type Protected_Entry_Queue_Max_Array is
+      array (Positive_Protected_Entry_Index range <>) of Natural;
+ 
+    type Protected_Entry_Queue_Max_Access is
+      access constant Protected_Entry_Queue_Max_Array;
+ 
+    --  The following type contains the GNARL state of a protected object.
+    --  The application-defined portion of the state (i.e. private objects)
+    --  is maintained by the compiler-generated code. Note that there is a
+    --  simplified version of this type declared in System.Tasking.PO_Simple
+    --  that handle the simple case (no entries).
+ 
+    type Protection_Entries (Num_Entries : Protected_Entry_Index) is new
+      Ada.Finalization.Limited_Controlled
+    with record
+       L : aliased Task_Primitives.Lock;
+       --  The underlying lock associated with a Protection_Entries. Note
+       --  that you should never (un)lock Object.L directly, but instead
+       --  use Lock_Entries/Unlock_Entries.
+ 
+       Compiler_Info : System.Address;
+       --  Pointer to compiler-generated record representing protected object
+ 
+       Call_In_Progress : Entry_Call_Link;
+       --  Pointer to the entry call being executed (if any)
+ 
+       Ceiling : System.Any_Priority;
+       --  Ceiling priority associated with the protected object
+ 
+       New_Ceiling : System.Any_Priority;
+       --  New ceiling priority associated to the protected object. In case
+       --  of assignment of a new ceiling priority to the protected object the
+       --  frontend generates a call to set_ceiling to save the new value in
+       --  this field. After such assignment this value can be read by means
+       --  of the 'Priority attribute, which generates a call to get_ceiling.
+       --  However, the ceiling of the protected object will not be changed
+       --  until completion of the protected action in which the assignment
+       --  has been executed (AARM D.5.2 (10/2)).
+ 
+       Owner : Task_Id;
+       --  This field contains the protected object's owner. Null_Task
+       --  indicates that the protected object is not currently being used.
+       --  This information is used for detecting the type of potentially
+       --  blocking operations described in the ARM 9.5.1, par. 15 (external
+       --  calls on a protected subprogram with the same target object as that
+       --  of the protected action).
+ 
+       Old_Base_Priority : System.Any_Priority;
+       --  Task's base priority when the protected operation was called
+ 
+       Pending_Action : Boolean;
+       --  Flag indicating that priority has been dipped temporarily in order
+       --  to avoid violating the priority ceiling of the lock associated with
+       --  this protected object, in Lock_Server. The flag tells Unlock_Server
+       --  or Unlock_And_Update_Server to restore the old priority to
+       --  Old_Base_Priority. This is needed because of situations (bad
+       --  language design?) where one needs to lock a PO but to do so would
+       --  violate the priority ceiling. For example, this can happen when an
+       --  entry call has been requeued to a lower-priority object, and the
+       --  caller then tries to cancel the call while its own priority is
+       --  higher than the ceiling of the new PO.
+ 
+       Finalized : Boolean := False;
+       --  Set to True by Finalize to make this routine idempotent
+ 
+       Entry_Bodies : Protected_Entry_Body_Access;
+       --  Pointer to an array containing the executable code for all entry
+       --  bodies of a protected type.
+ 
+       Find_Body_Index : Find_Body_Index_Access;
+       --  A function which maps the entry index in a call (which denotes the
+       --  queue of the proper entry) into the body of the entry.
+ 
+       Entry_Queue_Maxes : Protected_Entry_Queue_Max_Access;
+       --  Access to an array of naturals representing the max value for each
+       --  entry's queue length. A value of 0 signifies no max.
+ 
+       Entry_Queues : Protected_Entry_Queue_Array (1 .. Num_Entries);
+       --  Action and barrier subprograms for the protected type.
+    end record;
+ 
+    --  No default initial values for this type, since call records will need to
+    --  be re-initialized before every use.
+ 
+    type Protection_Entries_Access is access all Protection_Entries'Class;
+    --  See comments in s-tassta.adb about the implicit call to Current_Master
+    --  generated by this declaration.
+ 
+    function To_Address is
+      new Ada.Unchecked_Conversion (Protection_Entries_Access, System.Address);
+    function To_Protection is
+      new Ada.Unchecked_Conversion (System.Address, Protection_Entries_Access);
+ 
+    function Get_Ceiling
+      (Object : Protection_Entries_Access) return System.Any_Priority;
+    --  Returns the new ceiling priority of the protected object
+ 
+    function Has_Interrupt_Or_Attach_Handler
+      (Object : Protection_Entries_Access) return Boolean;
+    --  Returns True if an Interrupt_Handler or Attach_Handler pragma applies
+    --  to the protected object. That is to say this primitive returns False for
+    --  Protection, but is overridden to return True when interrupt handlers are
+    --  declared so the check required by C.3.1(11) can be implemented in
+    --  System.Tasking.Protected_Objects.Initialize_Protection.
+ 
+    procedure Initialize_Protection_Entries
+      (Object            : Protection_Entries_Access;
+       Ceiling_Priority  : Integer;
+       Compiler_Info     : System.Address;
+       Entry_Queue_Maxes : Protected_Entry_Queue_Max_Access;
+       Entry_Bodies      : Protected_Entry_Body_Access;
+       Find_Body_Index   : Find_Body_Index_Access);
+    --  Initialize the Object parameter so that it can be used by the runtime
+    --  to keep track of the runtime state of a protected object.
+ 
+    procedure Lock_Entries (Object : Protection_Entries_Access);
+    --  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
+    --  the lock for read access, and no other calls to Lock with the same
+    --  argument will return until the corresponding call to Unlock has been
+    --  made by the caller. Other calls to Lock_Read_Only may (but need not)
+    --  return before the call to Unlock, and the corresponding callers will
+    --  also own the lock for read access.
+    --
+    --  Note: we are not currently using this interface, it is provided for
+    --  possible future use. At the current time, everyone uses Lock for both
+    --  read and write locks.
+ 
+    function Number_Of_Entries
+      (Object : Protection_Entries_Access) return Entry_Index;
+    --  Return the number of entries of a protected object
+ 
+    procedure Set_Ceiling
+      (Object : Protection_Entries_Access;
+       Prio   : System.Any_Priority);
+    --  Sets the new ceiling priority of the protected object
+ 
+    procedure Unlock_Entries (Object : Protection_Entries_Access);
+    --  Relinquish ownership of the lock for the object represented by the
+    --  Object parameter. If this ownership was for write access, or if it was
+    --  for read access where there are no other read access locks outstanding,
+    --  one (or more, in the case of Lock_Read_Only) of the tasks waiting on
+    --  this lock (if any) will be given the lock and allowed to return from
+    --  the Lock or Lock_Read_Only call.
+ 
+ private
+ 
+    overriding procedure Finalize (Object : in out Protection_Entries);
+    --  Clean up a Protection object; in particular, finalize the associated
+    --  Lock object.
+ 
+ end System.Tasking.Protected_Objects.Entries;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-tpobmu.adb gcc-8.1.0/gcc/ada/libgnarl/s-tpobmu.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-tpobmu.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-tpobmu.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,53 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --     S Y S T E M . T A S K I N G . P R O T E C T E D _ O B J E C T S .    --
+ --                     M U L T I P R O C E S S O R S                        --
+ --                               B o d y                                    --
+ --                                                                          --
+ --                       Copyright (C) 2010-2018, 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- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion. GNARL 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ package body System.Tasking.Protected_Objects.Multiprocessors is
+ 
+    ------------
+    -- Served --
+    ------------
+ 
+    procedure Served (Entry_Call : Entry_Call_Link) is
+       pragma Unreferenced (Entry_Call);
+    begin
+       pragma Assert (False, "Invalid operation");
+    end Served;
+ 
+    -------------------------
+    -- Wakeup_Served_Entry --
+    -------------------------
+ 
+    procedure Wakeup_Served_Entry is
+    begin
+       pragma Assert (False, "Invalid operation");
+    end Wakeup_Served_Entry;
+ 
+ end System.Tasking.Protected_Objects.Multiprocessors;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-tpobmu.ads gcc-8.1.0/gcc/ada/libgnarl/s-tpobmu.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-tpobmu.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-tpobmu.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,43 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --     S Y S T E M . T A S K I N G . P R O T E C T E D _ O B J E C T S .    --
+ --                     M U L T I P R O C E S S O R S                        --
+ --                                S p e c                                   --
+ --                                                                          --
+ --                     Copyright (C) 2010-2018, 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- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion. GNARL 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ package System.Tasking.Protected_Objects.Multiprocessors is
+ 
+    procedure Served (Entry_Call : Entry_Call_Link);
+    --  This procedure is called at the end of a call to an entry or to a
+    --  protected procedure. It adds Entry_Call to a per-CPU list, and pokes
+    --  the CPU (the one from the task waiting on the entry).
+ 
+    procedure Wakeup_Served_Entry;
+    --  Called when the CPU is poked to awake all the tasks of the current CPU
+    --  waiting on entries.
+ 
+ end System.Tasking.Protected_Objects.Multiprocessors;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-tpobop.adb gcc-8.1.0/gcc/ada/libgnarl/s-tpobop.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-tpobop.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-tpobop.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,1102 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --               SYSTEM.TASKING.PROTECTED_OBJECTS.OPERATIONS                --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --         Copyright (C) 1998-2018, Free Software Foundation, Inc.          --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package contains all extended primitives related to Protected_Objects
+ --  with entries.
+ 
+ --  The handling of protected objects with no entries is done in
+ --  System.Tasking.Protected_Objects, the simple routines for protected
+ --  objects with entries in System.Tasking.Protected_Objects.Entries.
+ 
+ --  The split between Entries and Operations is needed to break circular
+ --  dependencies inside the run time.
+ 
+ --  This package contains all primitives related to Protected_Objects.
+ --  Note: the compiler generates direct calls to this interface, via Rtsfind.
+ 
+ with System.Task_Primitives.Operations;
+ with System.Tasking.Entry_Calls;
+ with System.Tasking.Queuing;
+ with System.Tasking.Rendezvous;
+ with System.Tasking.Utilities;
+ with System.Tasking.Debug;
+ with System.Parameters;
+ with System.Restrictions;
+ 
+ with System.Tasking.Initialization;
+ pragma Elaborate_All (System.Tasking.Initialization);
+ --  Insures that tasking is initialized if any protected objects are created
+ 
+ package body System.Tasking.Protected_Objects.Operations is
+ 
+    package STPO renames System.Task_Primitives.Operations;
+ 
+    use Parameters;
+    use Ada.Exceptions;
+    use Entries;
+ 
+    use System.Restrictions;
+    use System.Restrictions.Rident;
+ 
+    -----------------------
+    -- Local Subprograms --
+    -----------------------
+ 
+    procedure Update_For_Queue_To_PO
+      (Entry_Call : Entry_Call_Link;
+       With_Abort : Boolean);
+    pragma Inline (Update_For_Queue_To_PO);
+    --  Update the state of an existing entry call to reflect the fact that it
+    --  is being enqueued, based on whether the current queuing action is with
+    --  or without abort. Call this only while holding the PO's lock. It returns
+    --  with the PO's lock still held.
+ 
+    procedure Requeue_Call
+      (Self_Id    : Task_Id;
+       Object     : Protection_Entries_Access;
+       Entry_Call : Entry_Call_Link);
+    --  Handle requeue of Entry_Call.
+    --  In particular, queue the call if needed, or service it immediately
+    --  if possible.
+ 
+    ---------------------------------
+    -- Cancel_Protected_Entry_Call --
+    ---------------------------------
+ 
+    --  Compiler interface only (do not call from within the RTS)
+ 
+    --  This should have analogous effect to Cancel_Task_Entry_Call, setting
+    --  the value of Block.Cancelled instead of returning the parameter value
+    --  Cancelled.
+ 
+    --  The effect should be idempotent, since the call may already have been
+    --  dequeued.
+ 
+    --  Source code:
+ 
+    --      select r.e;
+    --         ...A...
+    --      then abort
+    --         ...B...
+    --      end select;
+ 
+    --  Expanded code:
+ 
+    --      declare
+    --         X : protected_entry_index := 1;
+    --         B80b : communication_block;
+    --         communication_blockIP (B80b);
+ 
+    --      begin
+    --         begin
+    --            A79b : label
+    --            A79b : declare
+    --               procedure _clean is
+    --               begin
+    --                  if enqueued (B80b) then
+    --                     cancel_protected_entry_call (B80b);
+    --                  end if;
+    --                  return;
+    --               end _clean;
+ 
+    --            begin
+    --               protected_entry_call (rTV!(r)._object'unchecked_access, X,
+    --                 null_address, asynchronous_call, B80b, objectF => 0);
+    --               if enqueued (B80b) then
+    --                  ...B...
+    --               end if;
+    --            at end
+    --               _clean;
+    --            end A79b;
+ 
+    --         exception
+    --            when _abort_signal =>
+    --               abort_undefer.all;
+    --               null;
+    --         end;
+ 
+    --         if not cancelled (B80b) then
+    --            x := ...A...
+    --         end if;
+    --      end;
+ 
+    --  If the entry call completes after we get into the abortable part,
+    --  Abort_Signal should be raised and ATC will take us to the at-end
+    --  handler, which will call _clean.
+ 
+    --  If the entry call returns with the call already completed, we can skip
+    --  this, and use the "if enqueued()" to go past the at-end handler, but we
+    --  will still call _clean.
+ 
+    --  If the abortable part completes before the entry call is Done, it will
+    --  call _clean.
+ 
+    --  If the entry call or the abortable part raises an exception,
+    --  we will still call _clean, but the value of Cancelled should not matter.
+ 
+    --  Whoever calls _clean first gets to decide whether the call
+    --  has been "cancelled".
+ 
+    --  Enqueued should be true if there is any chance that the call is still on
+    --  a queue. It seems to be safe to make it True if the call was Onqueue at
+    --  some point before return from Protected_Entry_Call.
+ 
+    --  Cancelled should be true iff the abortable part completed
+    --  and succeeded in cancelling the entry call before it completed.
+ 
+    --  ?????
+    --  The need for Enqueued is less obvious. The "if enqueued ()" tests are
+    --  not necessary, since Cancel_Protected_Entry_Call/Protected_Entry_Call
+    --  must do the same test internally, with locking. The one that makes
+    --  cancellation conditional may be a useful heuristic since at least 1/2
+    --  the time the call should be off-queue by that point. The other one seems
+    --  totally useless, since Protected_Entry_Call must do the same check and
+    --  then possibly wait for the call to be abortable, internally.
+ 
+    --  We can check Call.State here without locking the caller's mutex,
+    --  since the call must be over after returning from Wait_For_Completion.
+    --  No other task can access the call record at this point.
+ 
+    procedure Cancel_Protected_Entry_Call
+      (Block : in out Communication_Block) is
+    begin
+       Entry_Calls.Try_To_Cancel_Entry_Call (Block.Cancelled);
+    end Cancel_Protected_Entry_Call;
+ 
+    ---------------
+    -- Cancelled --
+    ---------------
+ 
+    function Cancelled (Block : Communication_Block) return Boolean is
+    begin
+       return Block.Cancelled;
+    end Cancelled;
+ 
+    -------------------------
+    -- Complete_Entry_Body --
+    -------------------------
+ 
+    procedure Complete_Entry_Body (Object : Protection_Entries_Access) is
+    begin
+       Exceptional_Complete_Entry_Body (Object, Ada.Exceptions.Null_Id);
+    end Complete_Entry_Body;
+ 
+    --------------
+    -- Enqueued --
+    --------------
+ 
+    function Enqueued (Block : Communication_Block) return Boolean is
+    begin
+       return Block.Enqueued;
+    end Enqueued;
+ 
+    -------------------------------------
+    -- Exceptional_Complete_Entry_Body --
+    -------------------------------------
+ 
+    procedure Exceptional_Complete_Entry_Body
+      (Object : Protection_Entries_Access;
+       Ex     : Ada.Exceptions.Exception_Id)
+    is
+       procedure Transfer_Occurrence
+         (Target : Ada.Exceptions.Exception_Occurrence_Access;
+          Source : Ada.Exceptions.Exception_Occurrence);
+       pragma Import (C, Transfer_Occurrence, "__gnat_transfer_occurrence");
+ 
+       Entry_Call : constant Entry_Call_Link := Object.Call_In_Progress;
+       Self_Id    : Task_Id;
+ 
+    begin
+       pragma Debug
+        (Debug.Trace (STPO.Self, "Exceptional_Complete_Entry_Body", 'P'));
+ 
+       --  We must have abort deferred, since we are inside a protected
+       --  operation.
+ 
+       if Entry_Call /= null then
+ 
+          --  The call was not requeued
+ 
+          Entry_Call.Exception_To_Raise := Ex;
+ 
+          if Ex /= Ada.Exceptions.Null_Id then
+ 
+             --  An exception was raised and abort was deferred, so adjust
+             --  before propagating, otherwise the task will stay with deferral
+             --  enabled for its remaining life.
+ 
+             Self_Id := STPO.Self;
+ 
+             if not ZCX_By_Default then
+                Initialization.Undefer_Abort_Nestable (Self_Id);
+             end if;
+ 
+             Transfer_Occurrence
+               (Entry_Call.Self.Common.Compiler_Data.Current_Excep'Access,
+                Self_Id.Common.Compiler_Data.Current_Excep);
+          end if;
+ 
+          --  Wakeup_Entry_Caller will be called from PO_Do_Or_Queue or
+          --  PO_Service_Entries on return.
+ 
+       end if;
+    end Exceptional_Complete_Entry_Body;
+ 
+    --------------------
+    -- PO_Do_Or_Queue --
+    --------------------
+ 
+    procedure PO_Do_Or_Queue
+      (Self_ID    : Task_Id;
+       Object     : Protection_Entries_Access;
+       Entry_Call : Entry_Call_Link)
+    is
+       E             : constant Protected_Entry_Index :=
+                         Protected_Entry_Index (Entry_Call.E);
+       Index         : constant Protected_Entry_Index :=
+                         Object.Find_Body_Index (Object.Compiler_Info, E);
+       Barrier_Value : Boolean;
+       Queue_Length  : Natural;
+    begin
+       --  When the Action procedure for an entry body returns, it is either
+       --  completed (having called [Exceptional_]Complete_Entry_Body) or it
+       --  is queued, having executed a requeue statement.
+ 
+       Barrier_Value :=
+         Object.Entry_Bodies (Index).Barrier (Object.Compiler_Info, E);
+ 
+       if Barrier_Value then
+ 
+          --  Not abortable while service is in progress
+ 
+          if Entry_Call.State = Now_Abortable then
+             Entry_Call.State := Was_Abortable;
+          end if;
+ 
+          Object.Call_In_Progress := Entry_Call;
+ 
+          pragma Debug
+           (Debug.Trace (Self_ID, "PODOQ: start entry body", 'P'));
+          Object.Entry_Bodies (Index).Action (
+              Object.Compiler_Info, Entry_Call.Uninterpreted_Data, E);
+ 
+          if Object.Call_In_Progress /= null then
+ 
+             --  Body of current entry served call to completion
+ 
+             Object.Call_In_Progress := null;
+ 
+             if Single_Lock then
+                STPO.Lock_RTS;
+             end if;
+ 
+             STPO.Write_Lock (Entry_Call.Self);
+             Initialization.Wakeup_Entry_Caller (Self_ID, Entry_Call, Done);
+             STPO.Unlock (Entry_Call.Self);
+ 
+             if Single_Lock then
+                STPO.Unlock_RTS;
+             end if;
+ 
+          else
+             Requeue_Call (Self_ID, Object, Entry_Call);
+          end if;
+ 
+       elsif Entry_Call.Mode /= Conditional_Call
+         or else not Entry_Call.With_Abort
+       then
+          if Run_Time_Restrictions.Set (Max_Entry_Queue_Length)
+            or else Object.Entry_Queue_Maxes /= null
+          then
+             --  Need to check the queue length. Computing the length is an
+             --  unusual case and is slow (need to walk the queue).
+ 
+             Queue_Length := Queuing.Count_Waiting (Object.Entry_Queues (E));
+ 
+             if (Run_Time_Restrictions.Set (Max_Entry_Queue_Length)
+                  and then Queue_Length >=
+                    Run_Time_Restrictions.Value (Max_Entry_Queue_Length))
+               or else
+                 (Object.Entry_Queue_Maxes /= null
+                   and then Object.Entry_Queue_Maxes (Index) /= 0
+                   and then Queue_Length >= Object.Entry_Queue_Maxes (Index))
+             then
+                --  This violates the Max_Entry_Queue_Length restriction or the
+                --  Max_Queue_Length bound, raise Program_Error.
+ 
+                Entry_Call.Exception_To_Raise := Program_Error'Identity;
+ 
+                if Single_Lock then
+                   STPO.Lock_RTS;
+                end if;
+ 
+                STPO.Write_Lock (Entry_Call.Self);
+                Initialization.Wakeup_Entry_Caller (Self_ID, Entry_Call, Done);
+                STPO.Unlock (Entry_Call.Self);
+ 
+                if Single_Lock then
+                   STPO.Unlock_RTS;
+                end if;
+ 
+                return;
+             end if;
+          end if;
+ 
+          --  Do the work: queue the call
+ 
+          Queuing.Enqueue (Object.Entry_Queues (E), Entry_Call);
+          Update_For_Queue_To_PO (Entry_Call, Entry_Call.With_Abort);
+ 
+          return;
+       else
+          --  Conditional_Call and With_Abort
+ 
+          if Single_Lock then
+             STPO.Lock_RTS;
+          end if;
+ 
+          STPO.Write_Lock (Entry_Call.Self);
+          pragma Assert (Entry_Call.State /= Not_Yet_Abortable);
+          Initialization.Wakeup_Entry_Caller (Self_ID, Entry_Call, Cancelled);
+          STPO.Unlock (Entry_Call.Self);
+ 
+          if Single_Lock then
+             STPO.Unlock_RTS;
+          end if;
+       end if;
+ 
+    exception
+       when others =>
+          Queuing.Broadcast_Program_Error (Self_ID, Object, Entry_Call);
+    end PO_Do_Or_Queue;
+ 
+    ------------------------
+    -- PO_Service_Entries --
+    ------------------------
+ 
+    procedure PO_Service_Entries
+      (Self_ID       : Task_Id;
+       Object        : Entries.Protection_Entries_Access;
+       Unlock_Object : Boolean := True)
+    is
+       E          : Protected_Entry_Index;
+       Caller     : Task_Id;
+       Entry_Call : Entry_Call_Link;
+ 
+    begin
+       loop
+          Queuing.Select_Protected_Entry_Call (Self_ID, Object, Entry_Call);
+ 
+          exit when Entry_Call = null;
+ 
+          E := Protected_Entry_Index (Entry_Call.E);
+ 
+          --  Not abortable while service is in progress
+ 
+          if Entry_Call.State = Now_Abortable then
+             Entry_Call.State := Was_Abortable;
+          end if;
+ 
+          Object.Call_In_Progress := Entry_Call;
+ 
+          begin
+             pragma Debug
+               (Debug.Trace (Self_ID, "POSE: start entry body", 'P'));
+ 
+             Object.Entry_Bodies
+               (Object.Find_Body_Index (Object.Compiler_Info, E)).Action
+                 (Object.Compiler_Info, Entry_Call.Uninterpreted_Data, E);
+ 
+          exception
+             when others =>
+                Queuing.Broadcast_Program_Error
+                  (Self_ID, Object, Entry_Call);
+          end;
+ 
+          if Object.Call_In_Progress = null then
+             Requeue_Call (Self_ID, Object, Entry_Call);
+             exit when Entry_Call.State = Cancelled;
+ 
+          else
+             Object.Call_In_Progress := null;
+             Caller := Entry_Call.Self;
+ 
+             if Single_Lock then
+                STPO.Lock_RTS;
+             end if;
+ 
+             STPO.Write_Lock (Caller);
+             Initialization.Wakeup_Entry_Caller (Self_ID, Entry_Call, Done);
+             STPO.Unlock (Caller);
+ 
+             if Single_Lock then
+                STPO.Unlock_RTS;
+             end if;
+          end if;
+       end loop;
+ 
+       if Unlock_Object then
+          Unlock_Entries (Object);
+       end if;
+    end PO_Service_Entries;
+ 
+    ---------------------
+    -- Protected_Count --
+    ---------------------
+ 
+    function Protected_Count
+      (Object : Protection_Entries'Class;
+       E      : Protected_Entry_Index) return Natural
+    is
+    begin
+       return Queuing.Count_Waiting (Object.Entry_Queues (E));
+    end Protected_Count;
+ 
+    --------------------------
+    -- Protected_Entry_Call --
+    --------------------------
+ 
+    --  Compiler interface only (do not call from within the RTS)
+ 
+    --  select r.e;
+    --     ...A...
+    --  else
+    --     ...B...
+    --  end select;
+ 
+    --  declare
+    --     X : protected_entry_index := 1;
+    --     B85b : communication_block;
+    --     communication_blockIP (B85b);
+ 
+    --  begin
+    --     protected_entry_call (rTV!(r)._object'unchecked_access, X,
+    --       null_address, conditional_call, B85b, objectF => 0);
+ 
+    --     if cancelled (B85b) then
+    --        ...B...
+    --     else
+    --        ...A...
+    --     end if;
+    --  end;
+ 
+    --  See also Cancel_Protected_Entry_Call for code expansion of asynchronous
+    --  entry call.
+ 
+    --  The initial part of this procedure does not need to lock the calling
+    --  task's ATCB, up to the point where the call record first may be queued
+    --  (PO_Do_Or_Queue), since before that no other task will have access to
+    --  the record.
+ 
+    --  If this is a call made inside of an abort deferred region, the call
+    --  should be never abortable.
+ 
+    --  If the call was not queued abortably, we need to wait until it is before
+    --  proceeding with the abortable part.
+ 
+    --  There are some heuristics here, just to save time for frequently
+    --  occurring cases. For example, we check Initially_Abortable to try to
+    --  avoid calling the procedure Wait_Until_Abortable, since the normal case
+    --  for async. entry calls is to be queued abortably.
+ 
+    --  Another heuristic uses the Block.Enqueued to try to avoid calling
+    --  Cancel_Protected_Entry_Call if the call can be served immediately.
+ 
+    procedure Protected_Entry_Call
+      (Object              : Protection_Entries_Access;
+       E                   : Protected_Entry_Index;
+       Uninterpreted_Data  : System.Address;
+       Mode                : Call_Modes;
+       Block               : out Communication_Block)
+    is
+       Self_ID             : constant Task_Id := STPO.Self;
+       Entry_Call          : Entry_Call_Link;
+       Initially_Abortable : Boolean;
+       Ceiling_Violation   : Boolean;
+ 
+    begin
+       pragma Debug
+         (Debug.Trace (Self_ID, "Protected_Entry_Call", 'P'));
+ 
+       if Self_ID.ATC_Nesting_Level = ATC_Level'Last then
+          raise Storage_Error with "not enough ATC nesting levels";
+       end if;
+ 
+       --  If pragma Detect_Blocking is active then Program_Error must be
+       --  raised if this potentially blocking operation is called from a
+       --  protected action.
+ 
+       if Detect_Blocking
+         and then Self_ID.Common.Protected_Action_Nesting > 0
+       then
+          raise Program_Error with "potentially blocking operation";
+       end if;
+ 
+       --  Self_ID.Deferral_Level should be 0, except when called from Finalize,
+       --  where abort is already deferred.
+ 
+       Initialization.Defer_Abort_Nestable (Self_ID);
+       Lock_Entries_With_Status (Object, Ceiling_Violation);
+ 
+       if Ceiling_Violation then
+ 
+          --  Failed ceiling check
+ 
+          Initialization.Undefer_Abort_Nestable (Self_ID);
+          raise Program_Error;
+       end if;
+ 
+       Block.Self := Self_ID;
+       Self_ID.ATC_Nesting_Level := Self_ID.ATC_Nesting_Level + 1;
+       pragma Debug
+         (Debug.Trace (Self_ID, "PEC: entered ATC level: " &
+          ATC_Level'Image (Self_ID.ATC_Nesting_Level), 'A'));
+       Entry_Call :=
+          Self_ID.Entry_Calls (Self_ID.ATC_Nesting_Level)'Access;
+       Entry_Call.Next := null;
+       Entry_Call.Mode := Mode;
+       Entry_Call.Cancellation_Attempted := False;
+ 
+       Entry_Call.State :=
+         (if Self_ID.Deferral_Level > 1
+          then Never_Abortable else Now_Abortable);
+ 
+       Entry_Call.E := Entry_Index (E);
+       Entry_Call.Prio := STPO.Get_Priority (Self_ID);
+       Entry_Call.Uninterpreted_Data := Uninterpreted_Data;
+       Entry_Call.Called_PO := To_Address (Object);
+       Entry_Call.Called_Task := null;
+       Entry_Call.Exception_To_Raise := Ada.Exceptions.Null_Id;
+       Entry_Call.With_Abort := True;
+ 
+       PO_Do_Or_Queue (Self_ID, Object, Entry_Call);
+       Initially_Abortable := Entry_Call.State = Now_Abortable;
+       PO_Service_Entries (Self_ID, Object);
+ 
+       --  Try to prevent waiting later (in Try_To_Cancel_Protected_Entry_Call)
+       --  for completed or cancelled calls.  (This is a heuristic, only.)
+ 
+       if Entry_Call.State >= Done then
+ 
+          --  Once State >= Done it will not change any more
+ 
+          if Single_Lock then
+             STPO.Lock_RTS;
+          end if;
+ 
+          STPO.Write_Lock (Self_ID);
+          Utilities.Exit_One_ATC_Level (Self_ID);
+          STPO.Unlock (Self_ID);
+ 
+          if Single_Lock then
+             STPO.Unlock_RTS;
+          end if;
+ 
+          Block.Enqueued := False;
+          Block.Cancelled := Entry_Call.State = Cancelled;
+          Initialization.Undefer_Abort_Nestable (Self_ID);
+          Entry_Calls.Check_Exception (Self_ID, Entry_Call);
+          return;
+ 
+       else
+          --  In this case we cannot conclude anything, since State can change
+          --  concurrently.
+ 
+          null;
+       end if;
+ 
+       --  Now for the general case
+ 
+       if Mode = Asynchronous_Call then
+ 
+          --  Try to avoid an expensive call
+ 
+          if not Initially_Abortable then
+             if Single_Lock then
+                STPO.Lock_RTS;
+                Entry_Calls.Wait_Until_Abortable (Self_ID, Entry_Call);
+                STPO.Unlock_RTS;
+             else
+                Entry_Calls.Wait_Until_Abortable (Self_ID, Entry_Call);
+             end if;
+          end if;
+ 
+       else
+          case Mode is
+             when Conditional_Call
+                | Simple_Call
+             =>
+                if Single_Lock then
+                   STPO.Lock_RTS;
+                   Entry_Calls.Wait_For_Completion (Entry_Call);
+                   STPO.Unlock_RTS;
+ 
+                else
+                   STPO.Write_Lock (Self_ID);
+                   Entry_Calls.Wait_For_Completion (Entry_Call);
+                   STPO.Unlock (Self_ID);
+                end if;
+ 
+                Block.Cancelled := Entry_Call.State = Cancelled;
+ 
+             when Asynchronous_Call
+                | Timed_Call
+             =>
+                pragma Assert (False);
+                null;
+          end case;
+       end if;
+ 
+       Initialization.Undefer_Abort_Nestable (Self_ID);
+       Entry_Calls.Check_Exception (Self_ID, Entry_Call);
+    end Protected_Entry_Call;
+ 
+    ------------------
+    -- Requeue_Call --
+    ------------------
+ 
+    procedure Requeue_Call
+      (Self_Id    : Task_Id;
+       Object     : Protection_Entries_Access;
+       Entry_Call : Entry_Call_Link)
+    is
+       New_Object        : Protection_Entries_Access;
+       Ceiling_Violation : Boolean;
+       Result            : Boolean;
+       E                 : Protected_Entry_Index;
+ 
+    begin
+       New_Object := To_Protection (Entry_Call.Called_PO);
+ 
+       if New_Object = null then
+ 
+          --  Call is to be requeued to a task entry
+ 
+          if Single_Lock then
+             STPO.Lock_RTS;
+          end if;
+ 
+          Result := Rendezvous.Task_Do_Or_Queue (Self_Id, Entry_Call);
+ 
+          if not Result then
+             Queuing.Broadcast_Program_Error
+               (Self_Id, Object, Entry_Call, RTS_Locked => True);
+          end if;
+ 
+          if Single_Lock then
+             STPO.Unlock_RTS;
+          end if;
+ 
+       else
+          --  Call should be requeued to a PO
+ 
+          if Object /= New_Object then
+ 
+             --  Requeue is to different PO
+ 
+             Lock_Entries_With_Status (New_Object, Ceiling_Violation);
+ 
+             if Ceiling_Violation then
+                Object.Call_In_Progress := null;
+                Queuing.Broadcast_Program_Error (Self_Id, Object, Entry_Call);
+ 
+             else
+                PO_Do_Or_Queue (Self_Id, New_Object, Entry_Call);
+                PO_Service_Entries (Self_Id, New_Object);
+             end if;
+ 
+          else
+             --  Requeue is to same protected object
+ 
+             --  ??? Try to compensate apparent failure of the scheduler on some
+             --  OS (e.g VxWorks) to give higher priority tasks a chance to run
+             --  (see CXD6002).
+ 
+             STPO.Yield (Do_Yield => False);
+ 
+             if Entry_Call.With_Abort
+               and then Entry_Call.Cancellation_Attempted
+             then
+                --  If this is a requeue with abort and someone tried to cancel
+                --  this call, cancel it at this point.
+ 
+                Entry_Call.State := Cancelled;
+                return;
+             end if;
+ 
+             if not Entry_Call.With_Abort
+               or else Entry_Call.Mode /= Conditional_Call
+             then
+                E := Protected_Entry_Index (Entry_Call.E);
+ 
+                if Run_Time_Restrictions.Set (Max_Entry_Queue_Length)
+                     and then
+                   Run_Time_Restrictions.Value (Max_Entry_Queue_Length) <=
+                     Queuing.Count_Waiting (Object.Entry_Queues (E))
+                then
+                   --  This violates the Max_Entry_Queue_Length restriction,
+                   --  raise Program_Error.
+ 
+                   Entry_Call.Exception_To_Raise := Program_Error'Identity;
+ 
+                   if Single_Lock then
+                      STPO.Lock_RTS;
+                   end if;
+ 
+                   STPO.Write_Lock (Entry_Call.Self);
+                   Initialization.Wakeup_Entry_Caller
+                     (Self_Id, Entry_Call, Done);
+                   STPO.Unlock (Entry_Call.Self);
+ 
+                   if Single_Lock then
+                      STPO.Unlock_RTS;
+                   end if;
+ 
+                else
+                   Queuing.Enqueue
+                     (New_Object.Entry_Queues (E), Entry_Call);
+                   Update_For_Queue_To_PO (Entry_Call, Entry_Call.With_Abort);
+                end if;
+ 
+             else
+                PO_Do_Or_Queue (Self_Id, New_Object, Entry_Call);
+             end if;
+          end if;
+       end if;
+    end Requeue_Call;
+ 
+    ----------------------------
+    -- Protected_Entry_Caller --
+    ----------------------------
+ 
+    function Protected_Entry_Caller
+      (Object : Protection_Entries'Class) return Task_Id is
+    begin
+       return Object.Call_In_Progress.Self;
+    end Protected_Entry_Caller;
+ 
+    -----------------------------
+    -- Requeue_Protected_Entry --
+    -----------------------------
+ 
+    --  Compiler interface only (do not call from within the RTS)
+ 
+    --  entry e when b is
+    --  begin
+    --     b := false;
+    --     ...A...
+    --     requeue e2;
+    --  end e;
+ 
+    --  procedure rPT__E10b (O : address; P : address; E :
+    --    protected_entry_index) is
+    --     type rTVP is access rTV;
+    --     freeze rTVP []
+    --     _object : rTVP := rTVP!(O);
+    --  begin
+    --     declare
+    --        rR : protection renames _object._object;
+    --        vP : integer renames _object.v;
+    --        bP : boolean renames _object.b;
+    --     begin
+    --        b := false;
+    --        ...A...
+    --        requeue_protected_entry (rR'unchecked_access, rR'
+    --          unchecked_access, 2, false, objectF => 0, new_objectF =>
+    --          0);
+    --        return;
+    --     end;
+    --     complete_entry_body (_object._object'unchecked_access, objectF =>
+    --       0);
+    --     return;
+    --  exception
+    --     when others =>
+    --        abort_undefer.all;
+    --        exceptional_complete_entry_body (_object._object'
+    --          unchecked_access, current_exception, objectF => 0);
+    --        return;
+    --  end rPT__E10b;
+ 
+    procedure Requeue_Protected_Entry
+      (Object     : Protection_Entries_Access;
+       New_Object : Protection_Entries_Access;
+       E          : Protected_Entry_Index;
+       With_Abort : Boolean)
+    is
+       Entry_Call : constant Entry_Call_Link := Object.Call_In_Progress;
+ 
+    begin
+       pragma Debug
+         (Debug.Trace (STPO.Self, "Requeue_Protected_Entry", 'P'));
+       pragma Assert (STPO.Self.Deferral_Level > 0);
+ 
+       Entry_Call.E := Entry_Index (E);
+       Entry_Call.Called_PO := To_Address (New_Object);
+       Entry_Call.Called_Task := null;
+       Entry_Call.With_Abort := With_Abort;
+       Object.Call_In_Progress := null;
+    end Requeue_Protected_Entry;
+ 
+    -------------------------------------
+    -- Requeue_Task_To_Protected_Entry --
+    -------------------------------------
+ 
+    --  Compiler interface only (do not call from within the RTS)
+ 
+    --    accept e1 do
+    --      ...A...
+    --      requeue r.e2;
+    --    end e1;
+ 
+    --    A79b : address;
+    --    L78b : label
+ 
+    --    begin
+    --       accept_call (1, A79b);
+    --       ...A...
+    --       requeue_task_to_protected_entry (rTV!(r)._object'
+    --         unchecked_access, 2, false, new_objectF => 0);
+    --       goto L78b;
+    --       <<L78b>>
+    --       complete_rendezvous;
+ 
+    --    exception
+    --       when all others =>
+    --          exceptional_complete_rendezvous (get_gnat_exception);
+    --    end;
+ 
+    procedure Requeue_Task_To_Protected_Entry
+      (New_Object : Protection_Entries_Access;
+       E          : Protected_Entry_Index;
+       With_Abort : Boolean)
+    is
+       Self_ID    : constant Task_Id := STPO.Self;
+       Entry_Call : constant Entry_Call_Link := Self_ID.Common.Call;
+ 
+    begin
+       Initialization.Defer_Abort (Self_ID);
+ 
+       --  We do not need to lock Self_ID here since the call is not abortable
+       --  at this point, and therefore, the caller cannot cancel the call.
+ 
+       Entry_Call.Needs_Requeue := True;
+       Entry_Call.With_Abort := With_Abort;
+       Entry_Call.Called_PO := To_Address (New_Object);
+       Entry_Call.Called_Task := null;
+       Entry_Call.E := Entry_Index (E);
+       Initialization.Undefer_Abort (Self_ID);
+    end Requeue_Task_To_Protected_Entry;
+ 
+    ---------------------
+    -- Service_Entries --
+    ---------------------
+ 
+    procedure Service_Entries (Object : Protection_Entries_Access) is
+       Self_ID : constant Task_Id := STPO.Self;
+    begin
+       PO_Service_Entries (Self_ID, Object);
+    end Service_Entries;
+ 
+    --------------------------------
+    -- Timed_Protected_Entry_Call --
+    --------------------------------
+ 
+    --  Compiler interface only (do not call from within the RTS)
+ 
+    procedure Timed_Protected_Entry_Call
+      (Object                : Protection_Entries_Access;
+       E                     : Protected_Entry_Index;
+       Uninterpreted_Data    : System.Address;
+       Timeout               : Duration;
+       Mode                  : Delay_Modes;
+       Entry_Call_Successful : out Boolean)
+    is
+       Self_Id           : constant Task_Id  := STPO.Self;
+       Entry_Call        : Entry_Call_Link;
+       Ceiling_Violation : Boolean;
+ 
+       Yielded : Boolean;
+       pragma Unreferenced (Yielded);
+ 
+    begin
+       if Self_Id.ATC_Nesting_Level = ATC_Level'Last then
+          raise Storage_Error with "not enough ATC nesting levels";
+       end if;
+ 
+       --  If pragma Detect_Blocking is active then Program_Error must be
+       --  raised if this potentially blocking operation is called from a
+       --  protected action.
+ 
+       if Detect_Blocking
+         and then Self_Id.Common.Protected_Action_Nesting > 0
+       then
+          raise Program_Error with "potentially blocking operation";
+       end if;
+ 
+       Initialization.Defer_Abort_Nestable (Self_Id);
+       Lock_Entries_With_Status (Object, Ceiling_Violation);
+ 
+       if Ceiling_Violation then
+          Initialization.Undefer_Abort (Self_Id);
+          raise Program_Error;
+       end if;
+ 
+       Self_Id.ATC_Nesting_Level := Self_Id.ATC_Nesting_Level + 1;
+       pragma Debug
+         (Debug.Trace (Self_Id, "TPEC: exited to ATC level: " &
+          ATC_Level'Image (Self_Id.ATC_Nesting_Level), 'A'));
+       Entry_Call := Self_Id.Entry_Calls (Self_Id.ATC_Nesting_Level)'Access;
+       Entry_Call.Next := null;
+       Entry_Call.Mode := Timed_Call;
+       Entry_Call.Cancellation_Attempted := False;
+ 
+       Entry_Call.State :=
+         (if Self_Id.Deferral_Level > 1
+          then Never_Abortable
+          else Now_Abortable);
+ 
+       Entry_Call.E := Entry_Index (E);
+       Entry_Call.Prio := STPO.Get_Priority (Self_Id);
+       Entry_Call.Uninterpreted_Data := Uninterpreted_Data;
+       Entry_Call.Called_PO := To_Address (Object);
+       Entry_Call.Called_Task := null;
+       Entry_Call.Exception_To_Raise := Ada.Exceptions.Null_Id;
+       Entry_Call.With_Abort := True;
+ 
+       PO_Do_Or_Queue (Self_Id, Object, Entry_Call);
+       PO_Service_Entries (Self_Id, Object);
+ 
+       if Single_Lock then
+          STPO.Lock_RTS;
+       else
+          STPO.Write_Lock (Self_Id);
+       end if;
+ 
+       --  Try to avoid waiting for completed or cancelled calls
+ 
+       if Entry_Call.State >= Done then
+          Utilities.Exit_One_ATC_Level (Self_Id);
+ 
+          if Single_Lock then
+             STPO.Unlock_RTS;
+          else
+             STPO.Unlock (Self_Id);
+          end if;
+ 
+          Entry_Call_Successful := Entry_Call.State = Done;
+          Initialization.Undefer_Abort_Nestable (Self_Id);
+          Entry_Calls.Check_Exception (Self_Id, Entry_Call);
+          return;
+       end if;
+ 
+       Entry_Calls.Wait_For_Completion_With_Timeout
+         (Entry_Call, Timeout, Mode, Yielded);
+ 
+       if Single_Lock then
+          STPO.Unlock_RTS;
+       else
+          STPO.Unlock (Self_Id);
+       end if;
+ 
+       --  ??? Do we need to yield in case Yielded is False
+ 
+       Initialization.Undefer_Abort_Nestable (Self_Id);
+       Entry_Call_Successful := Entry_Call.State = Done;
+       Entry_Calls.Check_Exception (Self_Id, Entry_Call);
+    end Timed_Protected_Entry_Call;
+ 
+    ----------------------------
+    -- Update_For_Queue_To_PO --
+    ----------------------------
+ 
+    --  Update the state of an existing entry call, based on
+    --  whether the current queuing action is with or without abort.
+    --  Call this only while holding the server's lock.
+    --  It returns with the server's lock released.
+ 
+    New_State : constant array (Boolean, Entry_Call_State)
+      of Entry_Call_State :=
+        (True =>
+          (Never_Abortable   => Never_Abortable,
+           Not_Yet_Abortable => Now_Abortable,
+           Was_Abortable     => Now_Abortable,
+           Now_Abortable     => Now_Abortable,
+           Done              => Done,
+           Cancelled         => Cancelled),
+         False =>
+          (Never_Abortable   => Never_Abortable,
+           Not_Yet_Abortable => Not_Yet_Abortable,
+           Was_Abortable     => Was_Abortable,
+           Now_Abortable     => Now_Abortable,
+           Done              => Done,
+           Cancelled         => Cancelled)
+        );
+ 
+    procedure Update_For_Queue_To_PO
+      (Entry_Call : Entry_Call_Link;
+       With_Abort : Boolean)
+    is
+       Old : constant Entry_Call_State := Entry_Call.State;
+ 
+    begin
+       pragma Assert (Old < Done);
+ 
+       Entry_Call.State := New_State (With_Abort, Entry_Call.State);
+ 
+       if Entry_Call.Mode = Asynchronous_Call then
+          if Old < Was_Abortable and then
+            Entry_Call.State = Now_Abortable
+          then
+             if Single_Lock then
+                STPO.Lock_RTS;
+             end if;
+ 
+             STPO.Write_Lock (Entry_Call.Self);
+ 
+             if Entry_Call.Self.Common.State = Async_Select_Sleep then
+                STPO.Wakeup (Entry_Call.Self, Async_Select_Sleep);
+             end if;
+ 
+             STPO.Unlock (Entry_Call.Self);
+ 
+             if Single_Lock then
+                STPO.Unlock_RTS;
+             end if;
+ 
+          end if;
+ 
+       elsif Entry_Call.Mode = Conditional_Call then
+          pragma Assert (Entry_Call.State < Was_Abortable);
+          null;
+       end if;
+    end Update_For_Queue_To_PO;
+ 
+ end System.Tasking.Protected_Objects.Operations;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-tpobop.ads gcc-8.1.0/gcc/ada/libgnarl/s-tpobop.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-tpobop.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-tpobop.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,213 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --               SYSTEM.TASKING.PROTECTED_OBJECTS.OPERATIONS                --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package contains all the extended primitives related to protected
+ --  objects with entries.
+ 
+ --  The handling of protected objects with no entries is done in
+ --  System.Tasking.Protected_Objects, the simple routines for protected
+ --  objects with entries in System.Tasking.Protected_Objects.Entries. The
+ --  split between Entries and Operations is needed to break circular
+ --  dependencies inside the run time.
+ 
+ --  Note: the compiler generates direct calls to this interface, via Rtsfind.
+ --  Any changes to this interface may require corresponding compiler changes.
+ 
+ with Ada.Exceptions;
+ 
+ with System.Tasking.Protected_Objects.Entries;
+ 
+ package System.Tasking.Protected_Objects.Operations is
+    pragma Elaborate_Body;
+ 
+    type Communication_Block is private;
+    --  Objects of this type are passed between GNARL calls to allow RTS
+    --  information to be preserved.
+ 
+    procedure Protected_Entry_Call
+      (Object             : Entries.Protection_Entries_Access;
+       E                  : Protected_Entry_Index;
+       Uninterpreted_Data : System.Address;
+       Mode               : Call_Modes;
+       Block              : out Communication_Block);
+    --  Make a protected entry call to the specified object.
+    --  Pend a protected entry call on the protected object represented
+    --  by Object. A pended call is not queued; it may be executed immediately
+    --  or queued, depending on the state of the entry barrier.
+    --
+    --    E
+    --      The index representing the entry to be called.
+    --
+    --    Uninterpreted_Data
+    --      This will be returned by Next_Entry_Call when this call is serviced.
+    --      It can be used by the compiler to pass information between the
+    --      caller and the server, in particular entry parameters.
+    --
+    --    Mode
+    --      The kind of call to be pended
+    --
+    --    Block
+    --      Information passed between runtime calls by the compiler
+ 
+    procedure Timed_Protected_Entry_Call
+      (Object                : Entries.Protection_Entries_Access;
+       E                     : Protected_Entry_Index;
+       Uninterpreted_Data    : System.Address;
+       Timeout               : Duration;
+       Mode                  : Delay_Modes;
+       Entry_Call_Successful : out Boolean);
+    --  Same as the Protected_Entry_Call but with time-out specified.
+    --  This routines is used when we do not use ATC mechanism to implement
+    --  timed entry calls.
+ 
+    procedure Service_Entries (Object : Entries.Protection_Entries_Access);
+    pragma Inline (Service_Entries);
+ 
+    procedure PO_Service_Entries
+      (Self_ID       : Task_Id;
+       Object        : Entries.Protection_Entries_Access;
+       Unlock_Object : Boolean := True);
+    --  Service all entry queues of the specified object, executing the
+    --  corresponding bodies of any queued entry calls that are waiting
+    --  on True barriers. This is used when the state of a protected
+    --  object may have changed, in particular after the execution of
+    --  the statement sequence of a protected procedure.
+    --
+    --  Note that servicing an entry may change the value of one or more
+    --  barriers, so this routine keeps checking barriers until all of
+    --  them are closed.
+    --
+    --  This must be called with abort deferred and with the corresponding
+    --  object locked.
+    --
+    --  If Unlock_Object is set True, then Object is unlocked on return,
+    --  otherwise Object remains locked and the caller is responsible for
+    --  the required unlock.
+ 
+    procedure Complete_Entry_Body (Object : Entries.Protection_Entries_Access);
+    --  Called from within an entry body procedure, indicates that the
+    --  corresponding entry call has been serviced.
+ 
+    procedure Exceptional_Complete_Entry_Body
+      (Object : Entries.Protection_Entries_Access;
+       Ex     : Ada.Exceptions.Exception_Id);
+    --  Perform all of the functions of Complete_Entry_Body. In addition,
+    --  report in Ex the exception whose propagation terminated the entry
+    --  body to the runtime system.
+ 
+    procedure Cancel_Protected_Entry_Call (Block : in out Communication_Block);
+    --  Attempt to cancel the most recent protected entry call. If the call is
+    --  not queued abortably, wait until it is or until it has completed.
+    --  If the call is actually cancelled, the called object will be
+    --  locked on return from this call. Get_Cancelled (Block) can be
+    --  used to determine if the cancellation took place; there
+    --  may be entries needing service in this case.
+    --
+    --  Block passes information between this and other runtime calls.
+ 
+    function Enqueued (Block : Communication_Block) return Boolean;
+    --  Returns True if the Protected_Entry_Call which returned the
+    --  specified Block object was queued; False otherwise.
+ 
+    function Cancelled (Block : Communication_Block) return Boolean;
+    --  Returns True if the Protected_Entry_Call which returned the
+    --  specified Block object was cancelled, False otherwise.
+ 
+    procedure Requeue_Protected_Entry
+      (Object     : Entries.Protection_Entries_Access;
+       New_Object : Entries.Protection_Entries_Access;
+       E          : Protected_Entry_Index;
+       With_Abort : Boolean);
+    --  If Object = New_Object, queue the protected entry call on Object
+    --   currently being serviced on the queue corresponding to the entry
+    --   represented by E.
+    --
+    --  If Object /= New_Object, transfer the call to New_Object.E,
+    --   executing or queuing it as appropriate.
+    --
+    --  With_Abort---True if the call is to be queued abortably, false
+    --   otherwise.
+ 
+    procedure Requeue_Task_To_Protected_Entry
+      (New_Object : Entries.Protection_Entries_Access;
+       E          : Protected_Entry_Index;
+       With_Abort : Boolean);
+    --  Transfer task entry call currently being serviced to entry E
+    --   on New_Object.
+    --
+    --  With_Abort---True if the call is to be queued abortably, false
+    --   otherwise.
+ 
+    function Protected_Count
+      (Object : Entries.Protection_Entries'Class;
+       E      : Protected_Entry_Index)
+       return   Natural;
+    --  Return the number of entry calls to E on Object
+ 
+    function Protected_Entry_Caller
+      (Object : Entries.Protection_Entries'Class) return Task_Id;
+    --  Return value of E'Caller, where E is the protected entry currently
+    --  being handled. This will only work if called from within an entry
+    --  body, as required by the LRM (C.7.1(14)).
+ 
+    --  For internal use only
+ 
+    procedure PO_Do_Or_Queue
+      (Self_ID    : Task_Id;
+       Object     : Entries.Protection_Entries_Access;
+       Entry_Call : Entry_Call_Link);
+    --  This procedure either executes or queues an entry call, depending
+    --  on the status of the corresponding barrier. It assumes that abort
+    --  is deferred and that the specified object is locked.
+ 
+ private
+    type Communication_Block is record
+       Self      : Task_Id;
+       Enqueued  : Boolean := True;
+       Cancelled : Boolean := False;
+    end record;
+    pragma Volatile (Communication_Block);
+ 
+    --  When a program contains limited interfaces, the compiler generates the
+    --  predefined primitives associated with dispatching selects. One of the
+    --  parameters of these routines is of type Communication_Block. Even if
+    --  the program lacks implementing concurrent types, the tasking runtime is
+    --  dragged in unconditionally because of Communication_Block. To avoid this
+    --  case, the compiler uses type Dummy_Communication_Block which defined in
+    --  System.Soft_Links. If the structure of Communication_Block is changed,
+    --  the corresponding dummy type must be changed as well.
+ 
+    --  The Communication_Block seems to be a relic. At the moment, the
+    --  compiler seems to be generating unnecessary conditional code based on
+    --  this block. See the code generated for async. select with task entry
+    --  call for another way of solving this ???
+ 
+ end System.Tasking.Protected_Objects.Operations;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-tpopmo.adb gcc-8.1.0/gcc/ada/libgnarl/s-tpopmo.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-tpopmo.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-tpopmo.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,283 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --               SYSTEM.TASK_PRIMITIVES.OPERATIONS.MONOTONIC                --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --         Copyright (C) 1992-2018, Free Software Foundation, Inc.          --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is the Monotonic version of this package for Posix and Linux targets.
+ 
+ separate (System.Task_Primitives.Operations)
+ package body Monotonic is
+ 
+    -----------------------
+    -- Local Subprograms --
+    -----------------------
+ 
+    procedure Compute_Deadline
+      (Time       : Duration;
+       Mode       : ST.Delay_Modes;
+       Check_Time : out Duration;
+       Abs_Time   : out Duration;
+       Rel_Time   : out Duration);
+    --  Helper for Timed_Sleep and Timed_Delay: given a deadline specified by
+    --  Time and Mode, compute the current clock reading (Check_Time), and the
+    --  target absolute and relative clock readings (Abs_Time, Rel_Time). The
+    --  epoch for Time depends on Mode; the epoch for Check_Time and Abs_Time
+    --  is always that of CLOCK_RT_Ada.
+ 
+    ---------------------
+    -- Monotonic_Clock --
+    ---------------------
+ 
+    function Monotonic_Clock return Duration is
+       TS     : aliased timespec;
+       Result : Interfaces.C.int;
+    begin
+       Result := clock_gettime
+         (clock_id => OSC.CLOCK_RT_Ada, tp => TS'Unchecked_Access);
+       pragma Assert (Result = 0);
+ 
+       return To_Duration (TS);
+    end Monotonic_Clock;
+ 
+    -------------------
+    -- RT_Resolution --
+    -------------------
+ 
+    function RT_Resolution return Duration is
+       TS     : aliased timespec;
+       Result : Interfaces.C.int;
+ 
+    begin
+       Result := clock_getres (OSC.CLOCK_REALTIME, TS'Unchecked_Access);
+       pragma Assert (Result = 0);
+ 
+       return To_Duration (TS);
+    end RT_Resolution;
+ 
+    ----------------------
+    -- Compute_Deadline --
+    ----------------------
+ 
+    procedure Compute_Deadline
+      (Time       : Duration;
+       Mode       : ST.Delay_Modes;
+       Check_Time : out Duration;
+       Abs_Time   : out Duration;
+       Rel_Time   : out Duration)
+    is
+    begin
+       Check_Time := Monotonic_Clock;
+ 
+       --  Relative deadline
+ 
+       if Mode = Relative then
+          Abs_Time := Duration'Min (Time, Max_Sensible_Delay) + Check_Time;
+ 
+          if Relative_Timed_Wait then
+             Rel_Time := Duration'Min (Max_Sensible_Delay, Time);
+          end if;
+ 
+          pragma Warnings (Off);
+          --  Comparison "OSC.CLOCK_RT_Ada = OSC.CLOCK_REALTIME" is compile
+          --  time known.
+ 
+       --  Absolute deadline specified using the tasking clock (CLOCK_RT_Ada)
+ 
+       elsif Mode = Absolute_RT
+         or else OSC.CLOCK_RT_Ada = OSC.CLOCK_REALTIME
+       then
+          pragma Warnings (On);
+          Abs_Time := Duration'Min (Check_Time + Max_Sensible_Delay, Time);
+ 
+          if Relative_Timed_Wait then
+             Rel_Time := Duration'Min (Max_Sensible_Delay, Time - Check_Time);
+          end if;
+ 
+       --  Absolute deadline specified using the calendar clock, in the
+       --  case where it is not the same as the tasking clock: compensate for
+       --  difference between clock epochs (Base_Time - Base_Cal_Time).
+ 
+       else
+          declare
+             Cal_Check_Time : constant Duration := OS_Primitives.Clock;
+             RT_Time        : constant Duration :=
+                                Time + Check_Time - Cal_Check_Time;
+ 
+          begin
+             Abs_Time :=
+               Duration'Min (Check_Time + Max_Sensible_Delay, RT_Time);
+ 
+             if Relative_Timed_Wait then
+                Rel_Time :=
+                  Duration'Min (Max_Sensible_Delay, RT_Time - Check_Time);
+             end if;
+          end;
+       end if;
+    end Compute_Deadline;
+ 
+    -----------------
+    -- Timed_Sleep --
+    -----------------
+ 
+    --  This is for use within the run-time system, so abort is
+    --  assumed to be already deferred, and the caller should be
+    --  holding its own ATCB lock.
+ 
+    procedure Timed_Sleep
+      (Self_ID  : ST.Task_Id;
+       Time     : Duration;
+       Mode     : ST.Delay_Modes;
+       Reason   : System.Tasking.Task_States;
+       Timedout : out Boolean;
+       Yielded  : out Boolean)
+    is
+       pragma Unreferenced (Reason);
+ 
+       Base_Time  : Duration;
+       Check_Time : Duration;
+       Abs_Time   : Duration;
+       Rel_Time   : Duration;
+ 
+       Request    : aliased timespec;
+       Result     : Interfaces.C.int;
+ 
+    begin
+       Timedout := True;
+       Yielded := False;
+ 
+       Compute_Deadline
+         (Time       => Time,
+          Mode       => Mode,
+          Check_Time => Check_Time,
+          Abs_Time   => Abs_Time,
+          Rel_Time   => Rel_Time);
+       Base_Time := Check_Time;
+ 
+       if Abs_Time > Check_Time then
+          Request :=
+            To_Timespec (if Relative_Timed_Wait then Rel_Time else Abs_Time);
+ 
+          loop
+             exit when Self_ID.Pending_ATC_Level < Self_ID.ATC_Nesting_Level;
+ 
+             Result :=
+               pthread_cond_timedwait
+                 (cond    => Self_ID.Common.LL.CV'Access,
+                  mutex   => (if Single_Lock
+                              then Single_RTS_Lock'Access
+                              else Self_ID.Common.LL.L'Access),
+                  abstime => Request'Access);
+ 
+             Check_Time := Monotonic_Clock;
+             exit when Abs_Time <= Check_Time or else Check_Time < Base_Time;
+ 
+             if Result in 0 | EINTR then
+ 
+                --  Somebody may have called Wakeup for us
+ 
+                Timedout := False;
+                exit;
+             end if;
+ 
+             pragma Assert (Result = ETIMEDOUT);
+          end loop;
+       end if;
+    end Timed_Sleep;
+ 
+    -----------------
+    -- Timed_Delay --
+    -----------------
+ 
+    --  This is for use in implementing delay statements, so we assume the
+    --  caller is abort-deferred but is holding no locks.
+ 
+    procedure Timed_Delay
+      (Self_ID : ST.Task_Id;
+       Time    : Duration;
+       Mode    : ST.Delay_Modes)
+    is
+       Base_Time  : Duration;
+       Check_Time : Duration;
+       Abs_Time   : Duration;
+       Rel_Time   : Duration;
+       Request    : aliased timespec;
+ 
+       Result : Interfaces.C.int;
+       pragma Warnings (Off, Result);
+ 
+    begin
+       if Single_Lock then
+          Lock_RTS;
+       end if;
+ 
+       Write_Lock (Self_ID);
+ 
+       Compute_Deadline
+         (Time       => Time,
+          Mode       => Mode,
+          Check_Time => Check_Time,
+          Abs_Time   => Abs_Time,
+          Rel_Time   => Rel_Time);
+       Base_Time := Check_Time;
+ 
+       if Abs_Time > Check_Time then
+          Request :=
+            To_Timespec (if Relative_Timed_Wait then Rel_Time else Abs_Time);
+          Self_ID.Common.State := Delay_Sleep;
+ 
+          loop
+             exit when Self_ID.Pending_ATC_Level < Self_ID.ATC_Nesting_Level;
+ 
+             Result :=
+               pthread_cond_timedwait
+                 (cond    => Self_ID.Common.LL.CV'Access,
+                  mutex   => (if Single_Lock
+                              then Single_RTS_Lock'Access
+                              else Self_ID.Common.LL.L'Access),
+                  abstime => Request'Access);
+ 
+             Check_Time := Monotonic_Clock;
+             exit when Abs_Time <= Check_Time or else Check_Time < Base_Time;
+ 
+             pragma Assert (Result in 0 | ETIMEDOUT | EINTR);
+          end loop;
+ 
+          Self_ID.Common.State := Runnable;
+       end if;
+ 
+       Unlock (Self_ID);
+ 
+       if Single_Lock then
+          Unlock_RTS;
+       end if;
+ 
+       Result := sched_yield;
+    end Timed_Delay;
+ 
+ end Monotonic;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-tpopsp__posix-foreign.adb gcc-8.1.0/gcc/ada/libgnarl/s-tpopsp__posix-foreign.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-tpopsp__posix-foreign.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-tpopsp__posix-foreign.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,106 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                SYSTEM.TASK_PRIMITIVES.OPERATIONS.SPECIFIC                --
+ --                                                                          --
+ --                                B o d y                                   --
+ --                                                                          --
+ --         Copyright (C) 1992-2018, Free Software Foundation, Inc.          --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is a POSIX version of this package where foreign threads are
+ --  recognized.
+ 
+ separate (System.Task_Primitives.Operations)
+ package body Specific is
+ 
+    ATCB_Key : aliased pthread_key_t;
+    --  Key used to find the Ada Task_Id associated with a thread
+ 
+    ----------------
+    -- Initialize --
+    ----------------
+ 
+    procedure Initialize (Environment_Task : Task_Id) is
+       pragma Warnings (Off, Environment_Task);
+       Result : Interfaces.C.int;
+ 
+    begin
+       Result := pthread_key_create (ATCB_Key'Access, null);
+       pragma Assert (Result = 0);
+    end Initialize;
+ 
+    -------------------
+    -- Is_Valid_Task --
+    -------------------
+ 
+    function Is_Valid_Task return Boolean is
+    begin
+       return pthread_getspecific (ATCB_Key) /= System.Null_Address;
+    end Is_Valid_Task;
+ 
+    ---------
+    -- Set --
+    ---------
+ 
+    procedure Set (Self_Id : Task_Id) is
+       Result : Interfaces.C.int;
+    begin
+       Result := pthread_setspecific (ATCB_Key, To_Address (Self_Id));
+       pragma Assert (Result = 0);
+    end Set;
+ 
+    ----------
+    -- Self --
+    ----------
+ 
+    --  To make Ada tasks and C threads interoperate better, we have added some
+    --  functionality to Self. Suppose a C main program (with threads) calls an
+    --  Ada procedure and the Ada procedure calls the tasking runtime system.
+    --  Eventually, a call will be made to self. Since the call is not coming
+    --  from an Ada task, there will be no corresponding ATCB.
+ 
+    --  What we do in Self is to catch references that do not come from
+    --  recognized Ada tasks, and create an ATCB for the calling thread.
+ 
+    --  The new ATCB will be "detached" from the normal Ada task master
+    --  hierarchy, much like the existing implicitly created signal-server
+    --  tasks.
+ 
+    function Self return Task_Id is
+       Result : System.Address;
+ 
+    begin
+       Result := pthread_getspecific (ATCB_Key);
+ 
+       --  If the key value is Null then it is a non-Ada task
+ 
+       if Result /= System.Null_Address then
+          return To_Task_Id (Result);
+       else
+          return Register_Foreign_Thread;
+       end if;
+    end Self;
+ 
+ end Specific;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-tpopsp__posix.adb gcc-8.1.0/gcc/ada/libgnarl/s-tpopsp__posix.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-tpopsp__posix.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-tpopsp__posix.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,81 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                SYSTEM.TASK_PRIMITIVES.OPERATIONS.SPECIFIC                --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is a POSIX-like version of this package
+ 
+ separate (System.Task_Primitives.Operations)
+ package body Specific is
+ 
+    ATCB_Key : aliased pthread_key_t;
+    --  Key used to find the Ada Task_Id associated with a thread
+ 
+    ----------------
+    -- Initialize --
+    ----------------
+ 
+    procedure Initialize (Environment_Task : Task_Id) is
+       pragma Warnings (Off, Environment_Task);
+       Result : Interfaces.C.int;
+    begin
+       Result := pthread_key_create (ATCB_Key'Access, null);
+       pragma Assert (Result = 0);
+    end Initialize;
+ 
+    -------------------
+    -- Is_Valid_Task --
+    -------------------
+ 
+    function Is_Valid_Task return Boolean is
+    begin
+       return  pthread_getspecific (ATCB_Key) /= System.Null_Address;
+    end Is_Valid_Task;
+ 
+    ---------
+    -- Set --
+    ---------
+ 
+    procedure Set (Self_Id : Task_Id) is
+       Result : Interfaces.C.int;
+    begin
+       Result := pthread_setspecific (ATCB_Key, To_Address (Self_Id));
+       pragma Assert (Result = 0);
+    end Set;
+ 
+    ----------
+    -- Self --
+    ----------
+ 
+    function Self return Task_Id is
+    begin
+       return To_Task_Id (pthread_getspecific (ATCB_Key));
+    end Self;
+ 
+ end Specific;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-tpopsp__solaris.adb gcc-8.1.0/gcc/ada/libgnarl/s-tpopsp__solaris.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-tpopsp__solaris.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-tpopsp__solaris.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,106 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                SYSTEM.TASK_PRIMITIVES.OPERATIONS.SPECIFIC                --
+ --                                                                          --
+ --                                B o d y                                   --
+ --                                                                          --
+ --         Copyright (C) 1992-2018, Free Software Foundation, Inc.          --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is a version for Solaris native threads
+ 
+ separate (System.Task_Primitives.Operations)
+ package body Specific is
+ 
+    ----------------
+    -- Initialize --
+    ----------------
+ 
+    procedure Initialize (Environment_Task : Task_Id) is
+       pragma Unreferenced (Environment_Task);
+       Result : Interfaces.C.int;
+    begin
+       Result := thr_keycreate (ATCB_Key'Access, System.Null_Address);
+       pragma Assert (Result = 0);
+    end Initialize;
+ 
+    -------------------
+    -- Is_Valid_Task --
+    -------------------
+ 
+    function Is_Valid_Task return Boolean is
+       Unknown_Task : aliased System.Address;
+       Result       : Interfaces.C.int;
+    begin
+       Result := thr_getspecific (ATCB_Key, Unknown_Task'Unchecked_Access);
+       pragma Assert (Result = 0);
+       return Unknown_Task /= System.Null_Address;
+    end Is_Valid_Task;
+ 
+    ---------
+    -- Set --
+    ---------
+ 
+    procedure Set (Self_Id : Task_Id) is
+       Result : Interfaces.C.int;
+    begin
+       Result := thr_setspecific (ATCB_Key, To_Address (Self_Id));
+       pragma Assert (Result = 0);
+    end Set;
+ 
+    ----------
+    -- Self --
+    ----------
+ 
+    --  To make Ada tasks and C threads interoperate better, we have
+    --  added some functionality to Self. Suppose a C main program
+    --  (with threads) calls an Ada procedure and the Ada procedure
+    --  calls the tasking run-time system. Eventually, a call will be
+    --  made to self. Since the call is not coming from an Ada task,
+    --  there will be no corresponding ATCB.
+ 
+    --  What we do in Self is to catch references that do not come
+    --  from recognized Ada tasks, and create an ATCB for the calling
+    --  thread.
+ 
+    --  The new ATCB will be "detached" from the normal Ada task
+    --  master hierarchy, much like the existing implicitly created
+    --  signal-server tasks.
+ 
+    function Self return Task_Id is
+       Result  : Interfaces.C.int;
+       Self_Id : aliased System.Address;
+    begin
+       Result := thr_getspecific (ATCB_Key, Self_Id'Unchecked_Access);
+       pragma Assert (Result = 0);
+ 
+       if Self_Id = System.Null_Address then
+          return Register_Foreign_Thread;
+       else
+          return To_Task_Id (Self_Id);
+       end if;
+    end Self;
+ 
+ end Specific;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-tpopsp__tls.adb gcc-8.1.0/gcc/ada/libgnarl/s-tpopsp__tls.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-tpopsp__tls.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-tpopsp__tls.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,97 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                SYSTEM.TASK_PRIMITIVES.OPERATIONS.SPECIFIC                --
+ --                                                                          --
+ --                                B o d y                                   --
+ --                                                                          --
+ --         Copyright (C) 1992-2018, Free Software Foundation, Inc.          --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is a version of this package using TLS and where foreign threads are
+ --  recognized.
+ 
+ separate (System.Task_Primitives.Operations)
+ package body Specific is
+ 
+    ATCB : aliased Task_Id := null;
+    pragma Thread_Local_Storage (ATCB);
+ 
+    ----------------
+    -- Initialize --
+    ----------------
+ 
+    procedure Initialize (Environment_Task : Task_Id) is
+    begin
+       ATCB := Environment_Task;
+    end Initialize;
+ 
+    -------------------
+    -- Is_Valid_Task --
+    -------------------
+ 
+    function Is_Valid_Task return Boolean is
+    begin
+       return ATCB /= null;
+    end Is_Valid_Task;
+ 
+    ---------
+    -- Set --
+    ---------
+ 
+    procedure Set (Self_Id : Task_Id) is
+    begin
+       ATCB := Self_Id;
+    end Set;
+ 
+    ----------
+    -- Self --
+    ----------
+ 
+    --  To make Ada tasks and C threads interoperate better, we have added some
+    --  functionality to Self. Suppose a C main program (with threads) calls an
+    --  Ada procedure and the Ada procedure calls the tasking runtime system.
+    --  Eventually, a call will be made to self. Since the call is not coming
+    --  from an Ada task, there will be no corresponding ATCB.
+ 
+    --  What we do in Self is to catch references that do not come from
+    --  recognized Ada tasks, and create an ATCB for the calling thread.
+ 
+    --  The new ATCB will be "detached" from the normal Ada task master
+    --  hierarchy, much like the existing implicitly created signal-server
+    --  tasks.
+ 
+    function Self return Task_Id is
+       Result : constant Task_Id := ATCB;
+    begin
+       if Result /= null then
+          return Result;
+       else
+          --  If the value is Null then it is a non-Ada task
+ 
+          return Register_Foreign_Thread;
+       end if;
+    end Self;
+ 
+ end Specific;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-tpopsp__vxworks-rtp.adb gcc-8.1.0/gcc/ada/libgnarl/s-tpopsp__vxworks-rtp.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-tpopsp__vxworks-rtp.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-tpopsp__vxworks-rtp.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,100 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                SYSTEM.TASK_PRIMITIVES.OPERATIONS.SPECIFIC                --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is a VxWorks version of this package for RTPs where foreign threads
+ --  are recognized. The implementation is based on VxWorks tlsLib or oldTlsLib.
+ 
+ separate (System.Task_Primitives.Operations)
+ package body Specific is
+ 
+    ATCB_Key : int := 0;
+    --  Key used to find the Ada Task_Id associated with a thread
+ 
+    ----------------
+    -- Initialize --
+    ----------------
+ 
+    procedure Initialize is
+    begin
+       ATCB_Key := tlsKeyCreate;
+       pragma Assert (ATCB_Key /= ERROR);
+    end Initialize;
+ 
+    -------------------
+    -- Is_Valid_Task --
+    -------------------
+ 
+    function Is_Valid_Task return Boolean is
+    begin
+       return tlsValueGet (ATCB_Key) /= System.Null_Address;
+    end Is_Valid_Task;
+ 
+    ---------
+    -- Set --
+    ---------
+ 
+    procedure Set (Self_Id : Task_Id) is
+       Result : STATUS;
+    begin
+       Result := tlsValueSet (ATCB_Key, To_Address (Self_Id));
+       pragma Assert (Result /= ERROR);
+    end Set;
+ 
+    ----------
+    -- Self --
+    ----------
+ 
+    --  To make Ada tasks and C threads interoperate better, we have added some
+    --  functionality to Self. Suppose a C main program (with threads) calls an
+    --  Ada procedure and the Ada procedure calls the tasking runtime system.
+    --  Eventually, a call will be made to self. Since the call is not coming
+    --  from an Ada task, there will be no corresponding ATCB.
+ 
+    --  What we do in Self is to catch references that do not come from
+    --  recognized Ada tasks, and create an ATCB for the calling thread.
+ 
+    --  The new ATCB will be "detached" from the normal Ada task master
+    --  hierarchy, much like the existing implicitly created signal-server
+    --  tasks.
+ 
+    function Self return Task_Id is
+       Result : constant Task_Id := To_Task_Id (tlsValueGet (ATCB_Key));
+    begin
+       if Result /= null then
+          return Result;
+       else
+          --  If the value is Null then it is a non-Ada task
+ 
+          return Register_Foreign_Thread;
+       end if;
+    end Self;
+ 
+ end Specific;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-tpopsp__vxworks-tls.adb gcc-8.1.0/gcc/ada/libgnarl/s-tpopsp__vxworks-tls.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-tpopsp__vxworks-tls.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-tpopsp__vxworks-tls.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,99 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                SYSTEM.TASK_PRIMITIVES.OPERATIONS.SPECIFIC                --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --         Copyright (C) 1992-2018, Free Software Foundation, Inc.          --
+ --                                                                          --
+ -- GNAT is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is a VxWorks version of this package using Thread_Local_Storage
+ --  support (VxWorks 6.6 and higher). The implementation is based on __threads
+ --  support.
+ 
+ separate (System.Task_Primitives.Operations)
+ package body Specific is
+ 
+    ATCB : aliased Task_Id := null;
+    --  Ada Task_Id associated with a thread
+    pragma Thread_Local_Storage (ATCB);
+ 
+    ----------------
+    -- Initialize --
+    ----------------
+ 
+    procedure Initialize is
+    begin
+       null;
+    end Initialize;
+ 
+    -------------------
+    -- Is_Valid_Task --
+    -------------------
+ 
+    function Is_Valid_Task return Boolean is
+    begin
+       return ATCB /= Null_Task;
+    end Is_Valid_Task;
+ 
+    ---------
+    -- Set --
+    ---------
+ 
+    procedure Set (Self_Id : Task_Id) is
+    begin
+       ATCB := Self_Id;
+    end Set;
+ 
+    ----------
+    -- Self --
+    ----------
+ 
+    --  To make Ada tasks and C threads interoperate better, we have added some
+    --  functionality to Self. Suppose a C main program (with threads) calls an
+    --  Ada procedure and the Ada procedure calls the tasking runtime system.
+    --  Eventually, a call will be made to self. Since the call is not coming
+    --  from an Ada task, there will be no corresponding ATCB.
+ 
+    --  What we do in Self is to catch references that do not come from
+    --  recognized Ada tasks, and create an ATCB for the calling thread.
+ 
+    --  The new ATCB will be "detached" from the normal Ada task master
+    --  hierarchy, much like the existing implicitly created signal-server
+    --  tasks.
+ 
+    function Self return Task_Id is
+       Result : constant Task_Id := ATCB;
+    begin
+       if Result /= null then
+          return Result;
+       else
+          --  If the value is Null then it is a non-Ada task
+ 
+          return Register_Foreign_Thread;
+       end if;
+    end Self;
+ 
+ end Specific;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-tpopsp__vxworks.adb gcc-8.1.0/gcc/ada/libgnarl/s-tpopsp__vxworks.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-tpopsp__vxworks.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-tpopsp__vxworks.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,149 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                SYSTEM.TASK_PRIMITIVES.OPERATIONS.SPECIFIC                --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --         Copyright (C) 1992-2018, Free Software Foundation, Inc.          --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is a VxWorks version of this package where foreign threads are
+ --  recognized. The implementation is based on VxWorks taskVarLib.
+ 
+ separate (System.Task_Primitives.Operations)
+ package body Specific is
+ 
+    ATCB_Key : aliased System.Address := System.Null_Address;
+    --  Key used to find the Ada Task_Id associated with a thread
+ 
+    ATCB_Key_Addr : System.Address := ATCB_Key'Address;
+    pragma Export (Ada, ATCB_Key_Addr, "__gnat_ATCB_key_addr");
+    --  Exported to support the temporary AE653 task registration
+    --  implementation. This mechanism is used to minimize impact on other
+    --  targets.
+ 
+    Stack_Limit : aliased System.Address;
+ 
+    pragma Import (C, Stack_Limit, "__gnat_stack_limit");
+ 
+    type Set_Stack_Limit_Proc_Acc is access procedure;
+    pragma Convention (C, Set_Stack_Limit_Proc_Acc);
+ 
+    Set_Stack_Limit_Hook : Set_Stack_Limit_Proc_Acc;
+    pragma Import (C, Set_Stack_Limit_Hook, "__gnat_set_stack_limit_hook");
+    --  Procedure to be called when a task is created to set stack limit if
+    --  limit checking is used.
+ 
+    ----------------
+    -- Initialize --
+    ----------------
+ 
+    procedure Initialize is
+    begin
+       null;
+    end Initialize;
+ 
+    -------------------
+    -- Is_Valid_Task --
+    -------------------
+ 
+    function Is_Valid_Task return Boolean is
+    begin
+       return taskVarGet (taskIdSelf, ATCB_Key'Access) /= ERROR;
+    end Is_Valid_Task;
+ 
+    ---------
+    -- Set --
+    ---------
+ 
+    procedure Set (Self_Id : Task_Id) is
+       Result : STATUS;
+ 
+    begin
+       --  If argument is null, destroy task specific data, to make API
+       --  consistent with other platforms, and thus compatible with the
+       --  shared version of s-tpoaal.adb.
+ 
+       if Self_Id = null then
+          Result := taskVarDelete (taskIdSelf, ATCB_Key'Access);
+          pragma Assert (Result /= ERROR);
+          return;
+       end if;
+ 
+       if not Is_Valid_Task then
+          Result := taskVarAdd (Self_Id.Common.LL.Thread, ATCB_Key'Access);
+          pragma Assert (Result = OK);
+ 
+          if Stack_Check_Limits
+            and then Result /= ERROR
+            and then Set_Stack_Limit_Hook /= null
+          then
+             --  This will be initialized from taskInfoGet() once the task is
+             --  is running.
+ 
+             Result :=
+               taskVarAdd (Self_Id.Common.LL.Thread, Stack_Limit'Access);
+             pragma Assert (Result /= ERROR);
+          end if;
+       end if;
+ 
+       Result :=
+         taskVarSet
+           (Self_Id.Common.LL.Thread,
+            ATCB_Key'Access,
+            To_Address (Self_Id));
+       pragma Assert (Result /= ERROR);
+    end Set;
+ 
+    ----------
+    -- Self --
+    ----------
+ 
+    --  To make Ada tasks and C threads interoperate better, we have added some
+    --  functionality to Self. Suppose a C main program (with threads) calls an
+    --  Ada procedure and the Ada procedure calls the tasking runtime system.
+    --  Eventually, a call will be made to self. Since the call is not coming
+    --  from an Ada task, there will be no corresponding ATCB.
+ 
+    --  What we do in Self is to catch references that do not come from
+    --  recognized Ada tasks, and create an ATCB for the calling thread.
+ 
+    --  The new ATCB will be "detached" from the normal Ada task master
+    --  hierarchy, much like the existing implicitly created signal-server
+    --  tasks.
+ 
+    function Self return Task_Id is
+       Result : constant Task_Id := To_Task_Id (ATCB_Key);
+    begin
+       if Result /= null then
+          return Result;
+       else
+          --  If the value is Null then it is a non-Ada task
+ 
+          return Register_Foreign_Thread;
+       end if;
+    end Self;
+ 
+ end Specific;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-tporft.adb gcc-8.1.0/gcc/ada/libgnarl/s-tporft.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-tporft.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-tporft.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,103 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --         SYSTEM.TASK_PRIMITIVES.OPERATIONS.REGISTER_FOREIGN_THREAD        --
+ --                                                                          --
+ --                                B o d y                                   --
+ --                                                                          --
+ --          Copyright (C) 2002-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.Multiprocessors;
+ with System.Soft_Links;
+ with System.Task_Info;
+ 
+ separate (System.Task_Primitives.Operations)
+ function Register_Foreign_Thread
+   (Thread         : Thread_Id;
+    Sec_Stack_Size : Size_Type := Unspecified_Size)
+    return Task_Id
+ is
+    Local_ATCB : aliased Ada_Task_Control_Block (0);
+    Self_Id    : Task_Id;
+    Succeeded  : Boolean;
+ 
+ begin
+    --  This section is tricky. We must not call anything that might require
+    --  an ATCB, until the new ATCB is in place. In order to get an ATCB
+    --  immediately, we fake one, so that it is then possible to e.g allocate
+    --  memory (which might require accessing self).
+ 
+    --  Record this as the Task_Id for the thread
+ 
+    Local_ATCB.Common.LL.Thread := Thread;
+    Local_ATCB.Common.Current_Priority := System.Priority'First;
+    Specific.Set (Local_ATCB'Unchecked_Access);
+ 
+    --  It is now safe to use an allocator
+ 
+    Self_Id := new Ada_Task_Control_Block (0);
+ 
+    --  Finish initialization
+ 
+    Lock_RTS;
+    System.Tasking.Initialize_ATCB
+      (Self_Id, null, Null_Address, Null_Task,
+       Foreign_Task_Elaborated'Access,
+       System.Priority'First, System.Multiprocessors.Not_A_Specific_CPU, null,
+       Task_Info.Unspecified_Task_Info, 0, Self_Id, Succeeded);
+    Unlock_RTS;
+    pragma Assert (Succeeded);
+ 
+    Self_Id.Master_Of_Task := 0;
+    Self_Id.Master_Within := Self_Id.Master_Of_Task + 1;
+ 
+    for L in Self_Id.Entry_Calls'Range loop
+       Self_Id.Entry_Calls (L).Self := Self_Id;
+       Self_Id.Entry_Calls (L).Level := L;
+    end loop;
+ 
+    Self_Id.Common.State := Runnable;
+    Self_Id.Awake_Count := 1;
+ 
+    Self_Id.Common.Task_Image (1 .. 14) := "foreign thread";
+    Self_Id.Common.Task_Image_Len := 14;
+ 
+    --  Since this is not an ordinary Ada task, we will start out undeferred
+ 
+    Self_Id.Deferral_Level := 0;
+ 
+    --  We do not provide an alternate stack for foreign threads
+ 
+    Self_Id.Common.Task_Alternate_Stack := Null_Address;
+ 
+    --  Create the TSD for the task
+ 
+    System.Soft_Links.Create_TSD
+      (Self_Id.Common.Compiler_Data, null, Sec_Stack_Size);
+ 
+    Enter_Task (Self_Id);
+ 
+    return Self_Id;
+ end Register_Foreign_Thread;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-tposen.adb gcc-8.1.0/gcc/ada/libgnarl/s-tposen.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-tposen.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-tposen.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,462 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                  --
+ --                                                                          --
+ --             SYSTEM.TASKING.PROTECTED_OBJECTS.SINGLE_ENTRY                --
+ --                                                                          --
+ --                                B o d y                                   --
+ --                                                                          --
+ --         Copyright (C) 1998-2018, Free Software Foundation, Inc.          --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ pragma Style_Checks (All_Checks);
+ --  Turn off subprogram ordering check, since restricted GNARLI subprograms are
+ --  gathered together at end.
+ 
+ --  This package provides an optimized version of Protected_Objects.Operations
+ --  and Protected_Objects.Entries making the following assumptions:
+ 
+ --    PO has only one entry
+ --    There is only one caller at a time (No_Entry_Queue)
+ --    There is no dynamic priority support (No_Dynamic_Priorities)
+ --    No Abort Statements
+ --     (No_Abort_Statements, Max_Asynchronous_Select_Nesting => 0)
+ --    PO are at library level
+ --    No Requeue
+ --    None of the tasks will terminate (no need for finalization)
+ 
+ --  This interface is intended to be used in the ravenscar and restricted
+ --  profiles, the compiler is responsible for ensuring that the conditions
+ --  mentioned above are respected, except for the No_Entry_Queue restriction
+ --  that is checked dynamically in this package, since the check cannot be
+ --  performed at compile time, and is relatively cheap (see PO_Do_Or_Queue,
+ --  Service_Entry).
+ 
+ pragma Polling (Off);
+ --  Turn off polling, we do not want polling to take place during tasking
+ --  operations. It can cause infinite loops and other problems.
+ 
+ pragma Suppress (All_Checks);
+ --  Why is this required ???
+ 
+ with Ada.Exceptions;
+ 
+ with System.Task_Primitives.Operations;
+ with System.Parameters;
+ 
+ package body System.Tasking.Protected_Objects.Single_Entry is
+ 
+    package STPO renames System.Task_Primitives.Operations;
+ 
+    use Parameters;
+ 
+    -----------------------
+    -- Local Subprograms --
+    -----------------------
+ 
+    procedure Send_Program_Error (Entry_Call : Entry_Call_Link);
+    pragma Inline (Send_Program_Error);
+    --  Raise Program_Error in the caller of the specified entry call
+ 
+    --------------------------
+    -- Entry Calls Handling --
+    --------------------------
+ 
+    procedure Wakeup_Entry_Caller (Entry_Call : Entry_Call_Link);
+    pragma Inline (Wakeup_Entry_Caller);
+    --  This is called at the end of service of an entry call, to abort the
+    --  caller if he is in an abortable part, and to wake up the caller if he
+    --  is on Entry_Caller_Sleep. Call it holding the lock of Entry_Call.Self.
+ 
+    procedure Wait_For_Completion (Entry_Call : Entry_Call_Link);
+    pragma Inline (Wait_For_Completion);
+    --  This procedure suspends the calling task until the specified entry call
+    --  has either been completed or cancelled. On exit, the call will not be
+    --  queued. This waits for calls on protected entries.
+    --  Call this only when holding Self_ID locked.
+ 
+    procedure Check_Exception
+      (Self_ID : Task_Id;
+       Entry_Call : Entry_Call_Link);
+    pragma Inline (Check_Exception);
+    --  Raise any pending exception from the Entry_Call. This should be called
+    --  at the end of every compiler interface procedure that implements an
+    --  entry call. The caller should not be holding any locks, or there will
+    --  be deadlock.
+ 
+    procedure PO_Do_Or_Queue
+      (Object     : Protection_Entry_Access;
+       Entry_Call : Entry_Call_Link);
+    --  This procedure executes or queues an entry call, depending on the status
+    --  of the corresponding barrier. The specified object is assumed locked.
+ 
+    ---------------------
+    -- Check_Exception --
+    ---------------------
+ 
+    procedure Check_Exception
+      (Self_ID    : Task_Id;
+       Entry_Call : Entry_Call_Link)
+    is
+       pragma Warnings (Off, Self_ID);
+ 
+       procedure Internal_Raise (X : Ada.Exceptions.Exception_Id);
+       pragma Import (C, Internal_Raise, "__gnat_raise_with_msg");
+ 
+       use type Ada.Exceptions.Exception_Id;
+ 
+       E : constant Ada.Exceptions.Exception_Id :=
+             Entry_Call.Exception_To_Raise;
+ 
+    begin
+       if E /= Ada.Exceptions.Null_Id then
+          Internal_Raise (E);
+       end if;
+    end Check_Exception;
+ 
+    ------------------------
+    -- Send_Program_Error --
+    ------------------------
+ 
+    procedure Send_Program_Error (Entry_Call : Entry_Call_Link) is
+       Caller : constant Task_Id := Entry_Call.Self;
+ 
+    begin
+       Entry_Call.Exception_To_Raise := Program_Error'Identity;
+ 
+       if Single_Lock then
+          STPO.Lock_RTS;
+       end if;
+ 
+       STPO.Write_Lock (Caller);
+       Wakeup_Entry_Caller (Entry_Call);
+       STPO.Unlock (Caller);
+ 
+       if Single_Lock then
+          STPO.Unlock_RTS;
+       end if;
+    end Send_Program_Error;
+ 
+    -------------------------
+    -- Wait_For_Completion --
+    -------------------------
+ 
+    procedure Wait_For_Completion (Entry_Call : Entry_Call_Link) is
+       Self_Id : constant Task_Id := Entry_Call.Self;
+    begin
+       Self_Id.Common.State := Entry_Caller_Sleep;
+       STPO.Sleep (Self_Id, Entry_Caller_Sleep);
+       Self_Id.Common.State := Runnable;
+    end Wait_For_Completion;
+ 
+    -------------------------
+    -- Wakeup_Entry_Caller --
+    -------------------------
+ 
+    --  This is called at the end of service of an entry call, to abort the
+    --  caller if he is in an abortable part, and to wake up the caller if it
+    --  is on Entry_Caller_Sleep. It assumes that the call is already off-queue.
+ 
+    --  (This enforces the rule that a task must be off-queue if its state is
+    --  Done or Cancelled.) Call it holding the lock of Entry_Call.Self.
+ 
+    --  The caller is waiting on Entry_Caller_Sleep, in Wait_For_Completion.
+ 
+    procedure Wakeup_Entry_Caller
+      (Entry_Call : Entry_Call_Link)
+    is
+       Caller : constant Task_Id := Entry_Call.Self;
+    begin
+       pragma Assert
+         (Caller.Common.State /= Terminated and then
+          Caller.Common.State /= Unactivated);
+       Entry_Call.State := Done;
+       STPO.Wakeup (Caller, Entry_Caller_Sleep);
+    end Wakeup_Entry_Caller;
+ 
+    -----------------------
+    -- Restricted GNARLI --
+    -----------------------
+ 
+    --------------------------------------------
+    -- Exceptional_Complete_Single_Entry_Body --
+    --------------------------------------------
+ 
+    procedure Exceptional_Complete_Single_Entry_Body
+      (Object : Protection_Entry_Access;
+       Ex     : Ada.Exceptions.Exception_Id)
+    is
+    begin
+       Object.Call_In_Progress.Exception_To_Raise := Ex;
+    end Exceptional_Complete_Single_Entry_Body;
+ 
+    ---------------------------------
+    -- Initialize_Protection_Entry --
+    ---------------------------------
+ 
+    procedure Initialize_Protection_Entry
+      (Object           : Protection_Entry_Access;
+       Ceiling_Priority : Integer;
+       Compiler_Info    : System.Address;
+       Entry_Body       : Entry_Body_Access)
+    is
+    begin
+       Initialize_Protection (Object.Common'Access, Ceiling_Priority);
+ 
+       Object.Compiler_Info := Compiler_Info;
+       Object.Call_In_Progress := null;
+       Object.Entry_Body := Entry_Body;
+       Object.Entry_Queue := null;
+    end Initialize_Protection_Entry;
+ 
+    ----------------
+    -- Lock_Entry --
+    ----------------
+ 
+    --  Compiler interface only
+ 
+    --  Do not call this procedure from within the run-time system.
+ 
+    procedure Lock_Entry (Object : Protection_Entry_Access) is
+    begin
+       Lock (Object.Common'Access);
+    end Lock_Entry;
+ 
+    --------------------------
+    -- Lock_Read_Only_Entry --
+    --------------------------
+ 
+    --  Compiler interface only
+ 
+    --  Do not call this procedure from within the runtime system
+ 
+    procedure Lock_Read_Only_Entry (Object : Protection_Entry_Access) is
+    begin
+       Lock_Read_Only (Object.Common'Access);
+    end Lock_Read_Only_Entry;
+ 
+    --------------------
+    -- PO_Do_Or_Queue --
+    --------------------
+ 
+    procedure PO_Do_Or_Queue
+      (Object     : Protection_Entry_Access;
+       Entry_Call : Entry_Call_Link)
+    is
+       Barrier_Value : Boolean;
+ 
+    begin
+       --  When the Action procedure for an entry body returns, it must be
+       --  completed (having called [Exceptional_]Complete_Entry_Body).
+ 
+       Barrier_Value := Object.Entry_Body.Barrier (Object.Compiler_Info, 1);
+ 
+       if Barrier_Value then
+          if Object.Call_In_Progress /= null then
+ 
+             --  This violates the No_Entry_Queue restriction, send
+             --  Program_Error to the caller.
+ 
+             Send_Program_Error (Entry_Call);
+             return;
+          end if;
+ 
+          Object.Call_In_Progress := Entry_Call;
+          Object.Entry_Body.Action
+            (Object.Compiler_Info, Entry_Call.Uninterpreted_Data, 1);
+          Object.Call_In_Progress := null;
+ 
+          if Single_Lock then
+             STPO.Lock_RTS;
+          end if;
+ 
+          STPO.Write_Lock (Entry_Call.Self);
+          Wakeup_Entry_Caller (Entry_Call);
+          STPO.Unlock (Entry_Call.Self);
+ 
+          if Single_Lock then
+             STPO.Unlock_RTS;
+          end if;
+ 
+       else
+          pragma Assert (Entry_Call.Mode = Simple_Call);
+ 
+          if Object.Entry_Queue /= null then
+ 
+             --  This violates the No_Entry_Queue restriction, send
+             --  Program_Error to the caller.
+ 
+             Send_Program_Error (Entry_Call);
+             return;
+          else
+             Object.Entry_Queue := Entry_Call;
+          end if;
+ 
+       end if;
+ 
+    exception
+       when others =>
+          Send_Program_Error (Entry_Call);
+    end PO_Do_Or_Queue;
+ 
+    ----------------------------
+    -- Protected_Single_Count --
+    ----------------------------
+ 
+    function Protected_Count_Entry (Object : Protection_Entry) return Natural is
+    begin
+       if Object.Entry_Queue /= null then
+          return 1;
+       else
+          return 0;
+       end if;
+    end Protected_Count_Entry;
+ 
+    ---------------------------------
+    -- Protected_Single_Entry_Call --
+    ---------------------------------
+ 
+    procedure Protected_Single_Entry_Call
+      (Object             : Protection_Entry_Access;
+       Uninterpreted_Data : System.Address)
+    is
+       Self_Id    : constant Task_Id := STPO.Self;
+       Entry_Call : Entry_Call_Record renames Self_Id.Entry_Calls (1);
+    begin
+       --  If pragma Detect_Blocking is active then Program_Error must be
+       --  raised if this potentially blocking operation is called from a
+       --  protected action.
+ 
+       if Detect_Blocking
+         and then Self_Id.Common.Protected_Action_Nesting > 0
+       then
+          raise Program_Error with "potentially blocking operation";
+       end if;
+ 
+       Lock_Entry (Object);
+ 
+       Entry_Call.Mode := Simple_Call;
+       Entry_Call.State := Now_Abortable;
+       Entry_Call.Uninterpreted_Data := Uninterpreted_Data;
+       Entry_Call.Exception_To_Raise := Ada.Exceptions.Null_Id;
+ 
+       PO_Do_Or_Queue (Object, Entry_Call'Access);
+       Unlock_Entry (Object);
+ 
+       --  The call is either `Done' or not. It cannot be cancelled since there
+       --  is no ATC construct.
+ 
+       pragma Assert (Entry_Call.State /= Cancelled);
+ 
+       if Entry_Call.State /= Done then
+          if Single_Lock then
+             STPO.Lock_RTS;
+          end if;
+ 
+          STPO.Write_Lock (Self_Id);
+          Wait_For_Completion (Entry_Call'Access);
+          STPO.Unlock (Self_Id);
+ 
+          if Single_Lock then
+             STPO.Unlock_RTS;
+          end if;
+       end if;
+ 
+       Check_Exception (Self_Id, Entry_Call'Access);
+    end Protected_Single_Entry_Call;
+ 
+    -----------------------------------
+    -- Protected_Single_Entry_Caller --
+    -----------------------------------
+ 
+    function Protected_Single_Entry_Caller
+      (Object : Protection_Entry) return Task_Id
+    is
+    begin
+       return Object.Call_In_Progress.Self;
+    end Protected_Single_Entry_Caller;
+ 
+    -------------------
+    -- Service_Entry --
+    -------------------
+ 
+    procedure Service_Entry (Object : Protection_Entry_Access) is
+       Entry_Call : constant Entry_Call_Link := Object.Entry_Queue;
+       Caller     : Task_Id;
+ 
+    begin
+       if Entry_Call /= null
+         and then Object.Entry_Body.Barrier (Object.Compiler_Info, 1)
+       then
+          Object.Entry_Queue := null;
+ 
+          if Object.Call_In_Progress /= null then
+ 
+             --  Violation of No_Entry_Queue restriction, raise exception
+ 
+             Send_Program_Error (Entry_Call);
+             Unlock_Entry (Object);
+             return;
+          end if;
+ 
+          Object.Call_In_Progress := Entry_Call;
+          Object.Entry_Body.Action
+            (Object.Compiler_Info, Entry_Call.Uninterpreted_Data, 1);
+          Object.Call_In_Progress := null;
+          Caller := Entry_Call.Self;
+          Unlock_Entry (Object);
+ 
+          if Single_Lock then
+             STPO.Lock_RTS;
+          end if;
+ 
+          STPO.Write_Lock (Caller);
+          Wakeup_Entry_Caller (Entry_Call);
+          STPO.Unlock (Caller);
+ 
+          if Single_Lock then
+             STPO.Unlock_RTS;
+          end if;
+ 
+       else
+          --  Just unlock the entry
+ 
+          Unlock_Entry (Object);
+       end if;
+ 
+    exception
+       when others =>
+          Send_Program_Error (Entry_Call);
+          Unlock_Entry (Object);
+    end Service_Entry;
+ 
+    ------------------
+    -- Unlock_Entry --
+    ------------------
+ 
+    procedure Unlock_Entry (Object : Protection_Entry_Access) is
+    begin
+       Unlock (Object.Common'Access);
+    end Unlock_Entry;
+ 
+ end System.Tasking.Protected_Objects.Single_Entry;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-tposen.ads gcc-8.1.0/gcc/ada/libgnarl/s-tposen.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-tposen.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-tposen.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,278 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --               SYSTEM.TASKING.PROTECTED_OBJECTS.SINGLE_ENTRY              --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package provides an optimized version of Protected_Objects.Operations
+ --  and Protected_Objects.Entries making the following assumptions:
+ 
+ --    PO have only one entry
+ --    There is only one caller at a time (No_Entry_Queue)
+ --    There is no dynamic priority support (No_Dynamic_Priorities)
+ --    No Abort Statements
+ --      (No_Abort_Statements, Max_Asynchronous_Select_Nesting => 0)
+ --    PO are at library level
+ --    None of the tasks will terminate (no need for finalization)
+ 
+ --  This interface is intended to be used in the Ravenscar profile, the
+ --  compiler is responsible for ensuring that the conditions mentioned above
+ --  are respected, except for the No_Entry_Queue restriction that is checked
+ --  dynamically in this package, since the check cannot be performed at compile
+ --  time, and is relatively cheap (see body).
+ 
+ --  This package is part of the high level tasking interface used by the
+ --  compiler to expand Ada 95 tasking constructs into simpler run time calls
+ --  (aka GNARLI, GNU Ada Run-time Library Interface)
+ 
+ --  Note: the compiler generates direct calls to this interface, via Rtsfind.
+ --  Any changes to this interface may require corresponding compiler changes
+ --  in exp_ch9.adb and possibly exp_ch7.adb
+ 
+ package System.Tasking.Protected_Objects.Single_Entry is
+    pragma Elaborate_Body;
+ 
+    ---------------------------------
+    -- Compiler Interface (GNARLI) --
+    ---------------------------------
+ 
+    --  The compiler will expand in the GNAT tree the following construct:
+ 
+    --  protected PO is
+    --     entry E;
+    --     procedure P;
+    --  private
+    --     Open : Boolean := False;
+    --  end PO;
+ 
+    --  protected body PO is
+    --     entry E when Open is
+    --        ...variable declarations...
+    --     begin
+    --        ...B...
+    --     end E;
+ 
+    --     procedure P is
+    --        ...variable declarations...
+    --     begin
+    --        ...C...
+    --     end P;
+    --  end PO;
+ 
+    --  as follows:
+ 
+    --  protected type poT is
+    --     entry e;
+    --     procedure p;
+    --  private
+    --     open : boolean := false;
+    --  end poT;
+    --  type poTV is limited record
+    --     open : boolean := false;
+    --     _object : aliased protection_entry;
+    --  end record;
+    --  procedure poPT__E1s (O : address; P : address; E :
+    --    protected_entry_index);
+    --  function poPT__B2s (O : address; E : protected_entry_index) return
+    --    boolean;
+    --  procedure poPT__pN (_object : in out poTV);
+    --  procedure poPT__pP (_object : in out poTV);
+    --  poTA : aliased entry_body := (
+    --     barrier => poPT__B2s'unrestricted_access,
+    --     action => poPT__E1s'unrestricted_access);
+    --  freeze poTV [
+    --     procedure poTVIP (_init : in out poTV) is
+    --     begin
+    --        _init.open := false;
+    --        object-init-proc (_init._object);
+    --        initialize_protection_entry (_init._object'unchecked_access,
+    --          unspecified_priority, _init'address, poTA'
+    --          unrestricted_access);
+    --        return;
+    --     end poTVIP;
+    --  ]
+    --  po : poT;
+    --  poTVIP (poTV!(po));
+ 
+    --  function poPT__B2s (O : address; E : protected_entry_index) return
+    --    boolean is
+    --     type poTVP is access poTV;
+    --     _object : poTVP := poTVP!(O);
+    --     poR : protection_entry renames _object._object;
+    --     openP : boolean renames _object.open;
+    --  begin
+    --     return open;
+    --  end poPT__B2s;
+ 
+    --  procedure poPT__E1s (O : address; P : address; E :
+    --    protected_entry_index) is
+    --     type poTVP is access poTV;
+    --     _object : poTVP := poTVP!(O);
+    --  begin
+    --     B1b : declare
+    --        poR : protection_entry renames _object._object;
+    --        openP : boolean renames _object.open;
+    --        ...variable declarations...
+    --     begin
+    --        ...B...
+    --     end B1b;
+    --     complete_single_entry_body (_object._object'unchecked_access);
+    --     return;
+    --  exception
+    --     when all others =>
+    --        exceptional_complete_single_entry_body (_object._object'
+    --          unchecked_access, get_gnat_exception);
+    --        return;
+    --  end poPT__E1s;
+ 
+    --  procedure poPT__pN (_object : in out poTV) is
+    --     poR : protection_entry renames _object._object;
+    --     openP : boolean renames _object.open;
+    --     ...variable declarations...
+    --  begin
+    --     ...C...
+    --     return;
+    --  end poPT__pN;
+ 
+    --  procedure poPT__pP (_object : in out poTV) is
+    --     procedure _clean is
+    --     begin
+    --        service_entry (_object._object'unchecked_access);
+    --        return;
+    --     end _clean;
+    --  begin
+    --     lock_entry (_object._object'unchecked_access);
+    --     B5b : begin
+    --        poPT__pN (_object);
+    --     at end
+    --        _clean;
+    --     end B5b;
+    --     return;
+    --  end poPT__pP;
+ 
+    type Protection_Entry is limited private;
+    --  This type contains the GNARL state of a protected object. The
+    --  application-defined portion of the state (i.e. private objects)
+    --  is maintained by the compiler-generated code.
+ 
+    type Protection_Entry_Access is access all Protection_Entry;
+ 
+    type Entry_Body_Access is access constant Entry_Body;
+    --  Access to barrier and action function of an entry
+ 
+    procedure Initialize_Protection_Entry
+      (Object           : Protection_Entry_Access;
+       Ceiling_Priority : Integer;
+       Compiler_Info    : System.Address;
+       Entry_Body       : Entry_Body_Access);
+    --  Initialize the Object parameter so that it can be used by the run time
+    --  to keep track of the runtime state of a protected object.
+ 
+    procedure Lock_Entry (Object : Protection_Entry_Access);
+    --  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.
+ 
+    procedure Lock_Read_Only_Entry
+      (Object : Protection_Entry_Access);
+    --  Lock a protected object for read access. Upon return, the caller owns
+    --  the lock for read access, and no other calls to Lock with the same
+    --  argument will return until the corresponding call to Unlock has been
+    --  made by the caller. Other calls to Lock_Read_Only may (but need not)
+    --  return before the call to Unlock, and the corresponding callers will
+    --  also own the lock for read access.
+ 
+    procedure Unlock_Entry (Object : Protection_Entry_Access);
+    --  Relinquish ownership of the lock for the object represented by the
+    --  Object parameter. If this ownership was for write access, or if it was
+    --  for read access where there are no other read access locks outstanding,
+    --  one (or more, in the case of Lock_Read_Only) of the tasks waiting on
+    --  this lock (if any) will be given the lock and allowed to return from
+    --  the Lock or Lock_Read_Only call.
+ 
+    procedure Service_Entry (Object : Protection_Entry_Access);
+    --  Service the entry queue of the specified object, executing the
+    --  corresponding body of any queued entry call that is waiting on True
+    --  barrier. This is used when the state of a protected object may have
+    --  changed, in particular after the execution of the statement sequence
+    --  of a protected procedure.
+    --
+    --  This must be called with abort deferred and with the corresponding
+    --  object locked. Object is unlocked on return.
+ 
+    procedure Protected_Single_Entry_Call
+      (Object              : Protection_Entry_Access;
+       Uninterpreted_Data  : System.Address);
+    --  Make a protected entry call to the specified object
+    --
+    --  Pends a protected entry call on the protected object represented by
+    --  Object. A pended call is not queued; it may be executed immediately
+    --  or queued, depending on the state of the entry barrier.
+    --
+    --    Uninterpreted_Data
+    --      This will be returned by Next_Entry_Call when this call is serviced.
+    --      It can be used by the compiler to pass information between the
+    --      caller and the server, in particular entry parameters.
+ 
+    procedure Exceptional_Complete_Single_Entry_Body
+      (Object : Protection_Entry_Access;
+       Ex     : Ada.Exceptions.Exception_Id);
+    --  Perform all of the functions of Complete_Entry_Body. In addition, report
+    --  in Ex the exception whose propagation terminated the entry body to the
+    --  runtime system.
+ 
+    function Protected_Count_Entry (Object : Protection_Entry) return Natural;
+    --  Return the number of entry calls on Object (0 or 1)
+ 
+    function Protected_Single_Entry_Caller
+      (Object : Protection_Entry) return Task_Id;
+    --  Return value of E'Caller, where E is the protected entry currently being
+    --  handled. This will only work if called from within an entry body, as
+    --  required by the LRM (C.7.1(14)).
+ 
+ private
+    type Protection_Entry is record
+       Common : aliased Protection;
+       --  State of the protected object. This part is common to any protected
+       --  object, including those without entries.
+ 
+       Compiler_Info : System.Address;
+       --  Pointer to compiler-generated record representing protected object
+ 
+       Call_In_Progress : Entry_Call_Link;
+       --  Pointer to the entry call being executed (if any)
+ 
+       Entry_Body : Entry_Body_Access;
+       --  Pointer to executable code for the entry body of the protected type
+ 
+       Entry_Queue : Entry_Call_Link;
+       --  Place to store the waiting entry call (if any)
+    end record;
+ 
+ end System.Tasking.Protected_Objects.Single_Entry;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-vxwext.adb gcc-8.1.0/gcc/ada/libgnarl/s-vxwext.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-vxwext.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-vxwext.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,55 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                  GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                --
+ --                                                                          --
+ --                     S Y S T E M . V X W O R K S . E X T                  --
+ --                                                                          --
+ --                                   B o d y                                --
+ --                                                                          --
+ --           Copyright (C) 2009-2018, Free Software Foundation, Inc.        --
+ --                                                                          --
+ -- GNAT is 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 is the VxWorks 5 and VxWorks MILS version of this package
+ 
+ package body System.VxWorks.Ext is
+ 
+    ERROR : constant := -1;
+ 
+    ------------------------
+    -- taskCpuAffinitySet --
+    ------------------------
+ 
+    function taskCpuAffinitySet (tid : t_id; CPU : int) return int is
+       pragma Unreferenced (tid, CPU);
+    begin
+       return ERROR;
+    end taskCpuAffinitySet;
+ 
+    -------------------------
+    -- taskMaskAffinitySet --
+    -------------------------
+ 
+    function taskMaskAffinitySet (tid : t_id; CPU_Set : unsigned) return int is
+       pragma Unreferenced (tid, CPU_Set);
+    begin
+       return ERROR;
+    end taskMaskAffinitySet;
+ 
+ end System.VxWorks.Ext;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-vxwext.ads gcc-8.1.0/gcc/ada/libgnarl/s-vxwext.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-vxwext.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-vxwext.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,105 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                  GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                --
+ --                                                                          --
+ --                     S Y S T E M . V X W O R K S . E X T                  --
+ --                                                                          --
+ --                                   S p e c                                --
+ --                                                                          --
+ --            Copyright (C) 2008-2018, Free Software Foundation, Inc.       --
+ --                                                                          --
+ -- GNARL is 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 package provides vxworks specific support functions needed
+ --  by System.OS_Interface.
+ 
+ --  This is the VxWorks 5 and VxWorks MILS version of this package
+ 
+ with Interfaces.C;
+ 
+ package System.VxWorks.Ext is
+    pragma Preelaborate;
+ 
+    subtype SEM_ID is Long_Integer;
+    --  typedef struct semaphore *SEM_ID;
+ 
+    type sigset_t is mod 2 ** Interfaces.C.long'Size;
+ 
+    type t_id is new Long_Integer;
+ 
+    subtype int is Interfaces.C.int;
+    subtype unsigned is Interfaces.C.unsigned;
+ 
+    type Interrupt_Handler is access procedure (parameter : System.Address);
+    pragma Convention (C, Interrupt_Handler);
+ 
+    type Interrupt_Vector is new System.Address;
+ 
+    function Int_Lock return int;
+    pragma Import (C, Int_Lock, "intLock");
+ 
+    function Int_Unlock (Old : int) return int;
+    pragma Import (C, Int_Unlock, "intUnlock");
+ 
+    function Interrupt_Connect
+      (Vector    : Interrupt_Vector;
+       Handler   : Interrupt_Handler;
+       Parameter : System.Address := System.Null_Address) return int;
+    pragma Import (C, Interrupt_Connect, "intConnect");
+ 
+    function Interrupt_Context return int;
+    pragma Import (C, Interrupt_Context, "intContext");
+ 
+    function Interrupt_Number_To_Vector
+      (intNum : int) return Interrupt_Vector;
+    pragma Import (C, Interrupt_Number_To_Vector, "__gnat_inum_to_ivec");
+ 
+    function semDelete (Sem : SEM_ID) return int;
+    pragma Import (C, semDelete, "semDelete");
+ 
+    function Task_Cont (tid : t_id) return int;
+    pragma Import (C, Task_Cont, "taskResume");
+ 
+    function Task_Stop (tid : t_id) return int;
+    pragma Import (C, Task_Stop, "taskSuspend");
+ 
+    function kill (pid : t_id; sig : int) return int;
+    pragma Import (C, kill, "kill");
+ 
+    function getpid return t_id;
+    pragma Import (C, getpid, "taskIdSelf");
+ 
+    function Set_Time_Slice (ticks : int) return int;
+    pragma Import (C, Set_Time_Slice, "kernelTimeSlice");
+ 
+    --------------------------------
+    -- Processor Affinity for SMP --
+    --------------------------------
+ 
+    function taskCpuAffinitySet (tid : t_id; CPU : int) return int;
+    pragma Convention (C, taskCpuAffinitySet);
+    --  For SMP run-times set the CPU affinity.
+    --  For uniprocessor systems return ERROR status.
+ 
+    function taskMaskAffinitySet (tid : t_id; CPU_Set : unsigned) return int;
+    pragma Convention (C, taskMaskAffinitySet);
+    --  For SMP run-times set the CPU mask affinity.
+    --  For uniprocessor systems return ERROR status.
+ 
+ end System.VxWorks.Ext;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-vxwext__kernel-smp.adb gcc-8.1.0/gcc/ada/libgnarl/s-vxwext__kernel-smp.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-vxwext__kernel-smp.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-vxwext__kernel-smp.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,113 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                  GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                --
+ --                                                                          --
+ --                     S Y S T E M . V X W O R K S . E X T                  --
+ --                                                                          --
+ --                                   B o d y                                --
+ --                                                                          --
+ --          Copyright (C) 2008-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is 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 package provides vxworks specific support functions needed
+ --  by System.OS_Interface.
+ 
+ --  This is the VxWorks 6 SMP kernel version of this package
+ 
+ package body System.VxWorks.Ext is
+ 
+    ERROR : constant := -1;
+ 
+    --------------
+    -- Int_Lock --
+    --------------
+ 
+    function Int_Lock return int is
+    begin
+       return ERROR;
+    end Int_Lock;
+ 
+    ----------------
+    -- Int_Unlock --
+    ----------------
+ 
+    function Int_Unlock (Old : int) return int is
+       pragma Unreferenced (Old);
+    begin
+       return ERROR;
+    end Int_Unlock;
+ 
+    ---------------
+    -- semDelete --
+    ---------------
+ 
+    function semDelete (Sem : SEM_ID) return int is
+       function Os_Sem_Delete (Sem : SEM_ID) return int;
+       pragma Import (C, Os_Sem_Delete, "semDelete");
+    begin
+       return Os_Sem_Delete (Sem);
+    end semDelete;
+ 
+    ------------------------
+    -- taskCpuAffinitySet --
+    ------------------------
+ 
+    function taskCpuAffinitySet (tid : t_id; CPU : int) return int
+    is
+       function Set_Affinity (tid : t_id; CPU : int) return int;
+       pragma Import (C, Set_Affinity, "__gnat_set_affinity");
+    begin
+       return Set_Affinity (tid, CPU);
+    end taskCpuAffinitySet;
+ 
+    -------------------------
+    -- taskMaskAffinitySet --
+    -------------------------
+ 
+    function taskMaskAffinitySet (tid : t_id; CPU_Set : unsigned) return int is
+       function Set_Affinity (tid : t_id; CPU_Set : unsigned) return int;
+       pragma Import (C, Set_Affinity, "__gnat_set_affinity_mask");
+    begin
+       return Set_Affinity (tid, CPU_Set);
+    end taskMaskAffinitySet;
+ 
+    --------------
+    -- taskCont --
+    --------------
+ 
+    function Task_Cont (tid : t_id) return int is
+       function taskCont (tid : t_id) return int;
+       pragma Import (C, taskCont, "taskCont");
+    begin
+       return taskCont (tid);
+    end Task_Cont;
+ 
+    --------------
+    -- taskStop --
+    --------------
+ 
+    function Task_Stop (tid : t_id) return int is
+       function taskStop (tid : t_id) return int;
+       pragma Import (C, taskStop, "taskStop");
+    begin
+       return taskStop (tid);
+    end Task_Stop;
+ 
+ end System.VxWorks.Ext;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-vxwext__kernel.adb gcc-8.1.0/gcc/ada/libgnarl/s-vxwext__kernel.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-vxwext__kernel.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-vxwext__kernel.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,110 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                  GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                --
+ --                                                                          --
+ --                     S Y S T E M . V X W O R K S . E X T                  --
+ --                                                                          --
+ --                                   B o d y                                --
+ --                                                                          --
+ --            Copyright (C) 2008-2018, Free Software Foundation, Inc.       --
+ --                                                                          --
+ -- GNARL is 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 package provides vxworks specific support functions needed
+ --  by System.OS_Interface.
+ 
+ --  This is the VxWorks <= 6.5 kernel version of this package
+ --  Also works for 6.6 uniprocessor
+ 
+ package body System.VxWorks.Ext is
+ 
+    ERROR : constant := -1;
+ 
+    --------------
+    -- Int_Lock --
+    --------------
+ 
+    function intLock return int;
+    pragma Import (C, intLock, "intLock");
+ 
+    function Int_Lock return int renames intLock;
+ 
+    ----------------
+    -- Int_Unlock --
+    ----------------
+ 
+    function intUnlock (Old : int) return int;
+    pragma Import (C, intUnlock, "intUnlock");
+ 
+    function Int_Unlock (Old : int) return int renames intUnlock;
+ 
+    ---------------
+    -- semDelete --
+    ---------------
+ 
+    function semDelete (Sem : SEM_ID) return int is
+       function Os_Sem_Delete (Sem : SEM_ID) return int;
+       pragma Import (C, Os_Sem_Delete, "semDelete");
+    begin
+       return Os_Sem_Delete (Sem);
+    end semDelete;
+ 
+    ------------------------
+    -- taskCpuAffinitySet --
+    ------------------------
+ 
+    function taskCpuAffinitySet (tid : t_id; CPU : int) return int is
+       pragma Unreferenced (tid, CPU);
+    begin
+       return ERROR;
+    end taskCpuAffinitySet;
+ 
+    -------------------------
+    -- taskMaskAffinitySet --
+    -------------------------
+ 
+    function taskMaskAffinitySet (tid : t_id; CPU_Set : unsigned) return int is
+       pragma Unreferenced (tid, CPU_Set);
+    begin
+       return ERROR;
+    end taskMaskAffinitySet;
+ 
+    --------------
+    -- taskCont --
+    --------------
+ 
+    function Task_Cont (tid : t_id) return int is
+       function taskCont (tid : t_id) return int;
+       pragma Import (C, taskCont, "taskCont");
+    begin
+       return taskCont (tid);
+    end Task_Cont;
+ 
+    --------------
+    -- taskStop --
+    --------------
+ 
+    function Task_Stop (tid : t_id) return int is
+       function taskStop (tid : t_id) return int;
+       pragma Import (C, taskStop, "taskStop");
+    begin
+       return taskStop (tid);
+    end Task_Stop;
+ 
+ end System.VxWorks.Ext;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-vxwext__kernel.ads gcc-8.1.0/gcc/ada/libgnarl/s-vxwext__kernel.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-vxwext__kernel.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-vxwext__kernel.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,110 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                  GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                --
+ --                                                                          --
+ --                     S Y S T E M . V X W O R K S . E X T                  --
+ --                                                                          --
+ --                                   S p e c                                --
+ --                                                                          --
+ --            Copyright (C) 2008-2018, Free Software Foundation, Inc.       --
+ --                                                                          --
+ -- GNARL is 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 package provides vxworks specific support functions needed
+ --  by System.OS_Interface.
+ 
+ --  This is the VxWorks 6 kernel version of this package
+ 
+ with Interfaces.C;
+ 
+ package System.VxWorks.Ext is
+    pragma Preelaborate;
+ 
+    subtype SEM_ID is Long_Integer;
+    --  typedef struct semaphore *SEM_ID;
+ 
+    type sigset_t is mod 2 ** Long_Long_Integer'Size;
+ 
+    type t_id is new Long_Integer;
+    subtype int is Interfaces.C.int;
+    subtype unsigned is Interfaces.C.unsigned;
+ 
+    type Interrupt_Handler is access procedure (parameter : System.Address);
+    pragma Convention (C, Interrupt_Handler);
+ 
+    type Interrupt_Vector is new System.Address;
+ 
+    function Int_Lock return int;
+    pragma Convention (C, Int_Lock);
+ 
+    function Int_Unlock (Old : int) return int;
+    pragma Convention (C, Int_Unlock);
+ 
+    function Interrupt_Connect
+      (Vector    : Interrupt_Vector;
+       Handler   : Interrupt_Handler;
+       Parameter : System.Address := System.Null_Address) return int;
+    pragma Import (C, Interrupt_Connect, "intConnect");
+ 
+    function Interrupt_Context return int;
+    pragma Import (C, Interrupt_Context, "intContext");
+ 
+    function Interrupt_Number_To_Vector
+      (intNum : int) return Interrupt_Vector;
+    pragma Import (C, Interrupt_Number_To_Vector, "__gnat_inum_to_ivec");
+ 
+    function semDelete (Sem : SEM_ID) return int;
+    pragma Convention (C, semDelete);
+ 
+    function Task_Cont (tid : t_id) return int;
+    pragma Convention (C, Task_Cont);
+ 
+    function Task_Stop (tid : t_id) return int;
+    pragma Convention (C, Task_Stop);
+ 
+    function kill (pid : t_id; sig : int) return int;
+    pragma Import (C, kill, "kill");
+ 
+    function getpid return t_id;
+    pragma Import (C, getpid, "taskIdSelf");
+ 
+    function Set_Time_Slice (ticks : int) return int;
+    pragma Import (C, Set_Time_Slice, "kernelTimeSlice");
+ 
+    type UINT64 is mod 2 ** Long_Long_Integer'Size;
+ 
+    function tickGet return UINT64;
+    --  Needed for ravenscar-cert
+    pragma Import (C, tickGet, "tick64Get");
+ 
+    --------------------------------
+    -- Processor Affinity for SMP --
+    --------------------------------
+ 
+    function taskCpuAffinitySet (tid : t_id; CPU : int) return int;
+    pragma Convention (C, taskCpuAffinitySet);
+    --  For SMP run-times set the CPU affinity.
+    --  For uniprocessor systems return ERROR status.
+ 
+    function taskMaskAffinitySet (tid : t_id; CPU_Set : unsigned) return int;
+    pragma Convention (C, taskMaskAffinitySet);
+    --  For SMP run-times set the CPU mask affinity.
+    --  For uniprocessor systems return ERROR status.
+ 
+ end System.VxWorks.Ext;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-vxwext__noints.adb gcc-8.1.0/gcc/ada/libgnarl/s-vxwext__noints.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-vxwext__noints.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-vxwext__noints.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,126 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                  GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                --
+ --                                                                          --
+ --                     S Y S T E M . V X W O R K S . E X T                  --
+ --                                                                          --
+ --                                   B o d y                                --
+ --                                                                          --
+ --            Copyright (C) 2008-2018, Free Software Foundation, Inc.       --
+ --                                                                          --
+ -- GNAT is 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 package provides vxworks specific support functions needed
+ --  by System.OS_Interface.
+ 
+ --  This is a version for VxWorks 5 based systems with no interrupts:
+ --  HI-Ravenscar for VxWorks 5, VxWorks 653 vThreads (not ravenscar-cert)
+ 
+ package body System.VxWorks.Ext is
+ 
+    ERROR : constant := -1;
+ 
+    --------------
+    -- Int_Lock --
+    --------------
+ 
+    function Int_Lock return int is
+    begin
+       return ERROR;
+    end Int_Lock;
+ 
+    ----------------
+    -- Int_Unlock --
+    ----------------
+ 
+    function Int_Unlock (Old : int) return int is
+       pragma Unreferenced (Old);
+    begin
+       return ERROR;
+    end Int_Unlock;
+ 
+    -----------------------
+    -- Interrupt_Connect --
+    -----------------------
+ 
+    function Interrupt_Connect
+      (Vector    : Interrupt_Vector;
+       Handler   : Interrupt_Handler;
+       Parameter : System.Address := System.Null_Address) return int
+    is
+       pragma Unreferenced (Vector, Handler, Parameter);
+    begin
+       return ERROR;
+    end Interrupt_Connect;
+ 
+    -----------------------
+    -- Interrupt_Context --
+    -----------------------
+ 
+    function Interrupt_Context return int is
+    begin
+       --  For VxWorks 653 vThreads, never in an interrupt context
+ 
+       return 0;
+    end Interrupt_Context;
+ 
+    --------------------------------
+    -- Interrupt_Number_To_Vector --
+    --------------------------------
+ 
+    function Interrupt_Number_To_Vector
+      (intNum : int) return Interrupt_Vector
+    is
+       pragma Unreferenced (intNum);
+    begin
+       return 0;
+    end Interrupt_Number_To_Vector;
+ 
+    ---------------
+    -- semDelete --
+    ---------------
+ 
+    function semDelete (Sem : SEM_ID) return int is
+       function Os_Sem_Delete (Sem : SEM_ID) return int;
+       pragma Import (C, Os_Sem_Delete, "semDelete");
+    begin
+       return Os_Sem_Delete (Sem);
+    end semDelete;
+ 
+    ------------------------
+    -- taskCpuAffinitySet --
+    ------------------------
+ 
+    function taskCpuAffinitySet (tid : t_id; CPU : int) return int is
+       pragma Unreferenced (tid, CPU);
+    begin
+       return ERROR;
+    end taskCpuAffinitySet;
+ 
+    -------------------------
+    -- taskMaskAffinitySet --
+    -------------------------
+ 
+    function taskMaskAffinitySet (tid : t_id; CPU_Set : unsigned) return int is
+       pragma Unreferenced (tid, CPU_Set);
+    begin
+       return ERROR;
+    end taskMaskAffinitySet;
+ 
+ end System.VxWorks.Ext;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-vxwext__rtp-smp.adb gcc-8.1.0/gcc/ada/libgnarl/s-vxwext__rtp-smp.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-vxwext__rtp-smp.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-vxwext__rtp-smp.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,138 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                  GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                --
+ --                                                                          --
+ --                     S Y S T E M . V X W O R K S . E X T                  --
+ --                                                                          --
+ --                                   B o d y                                --
+ --                                                                          --
+ --            Copyright (C) 2008-2018, Free Software Foundation, Inc.       --
+ --                                                                          --
+ -- GNAT is 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 package provides VxWorks specific support functions needed
+ --  by System.OS_Interface.
+ 
+ --  This is the VxWorks 6 RTP/SMP version of this package
+ 
+ package body System.VxWorks.Ext is
+ 
+    ERROR : constant := -1;
+ 
+    --------------
+    -- Int_Lock --
+    --------------
+ 
+    function Int_Lock return int is
+    begin
+       return ERROR;
+    end Int_Lock;
+ 
+    ----------------
+    -- Int_Unlock --
+    ----------------
+ 
+    function Int_Unlock (Old : int) return int is
+       pragma Unreferenced (Old);
+    begin
+       return ERROR;
+    end Int_Unlock;
+ 
+    -----------------------
+    -- Interrupt_Connect --
+    -----------------------
+ 
+    function Interrupt_Connect
+      (Vector    : Interrupt_Vector;
+       Handler   : Interrupt_Handler;
+       Parameter : System.Address := System.Null_Address) return int
+    is
+       pragma Unreferenced (Vector, Handler, Parameter);
+    begin
+       return ERROR;
+    end Interrupt_Connect;
+ 
+    -----------------------
+    -- Interrupt_Context --
+    -----------------------
+ 
+    function Interrupt_Context return int is
+    begin
+       --  For RTPs, never in an interrupt context
+ 
+       return 0;
+    end Interrupt_Context;
+ 
+    --------------------------------
+    -- Interrupt_Number_To_Vector --
+    --------------------------------
+ 
+    function Interrupt_Number_To_Vector
+      (intNum : int) return Interrupt_Vector
+    is
+       pragma Unreferenced (intNum);
+    begin
+       return 0;
+    end Interrupt_Number_To_Vector;
+ 
+    ---------------
+    -- semDelete --
+    ---------------
+ 
+    function semDelete (Sem : SEM_ID) return int is
+       function OS_semDelete (Sem : SEM_ID) return int;
+       pragma Import (C, OS_semDelete, "semDelete");
+    begin
+       return OS_semDelete (Sem);
+    end semDelete;
+ 
+    --------------------
+    -- Set_Time_Slice --
+    --------------------
+ 
+    function Set_Time_Slice (ticks : int) return int is
+       pragma Unreferenced (ticks);
+    begin
+       return ERROR;
+    end Set_Time_Slice;
+ 
+    ------------------------
+    -- taskCpuAffinitySet --
+    ------------------------
+ 
+    function taskCpuAffinitySet (tid : t_id; CPU : int) return int
+    is
+       function Set_Affinity (tid : t_id; CPU : int) return int;
+       pragma Import (C, Set_Affinity, "__gnat_set_affinity");
+    begin
+       return Set_Affinity (tid, CPU);
+    end taskCpuAffinitySet;
+ 
+    -------------------------
+    -- taskMaskAffinitySet --
+    -------------------------
+ 
+    function taskMaskAffinitySet (tid : t_id; CPU_Set : unsigned) return int is
+       function Set_Affinity (tid : t_id; CPU_Set : unsigned) return int;
+       pragma Import (C, Set_Affinity, "__gnat_set_affinity_mask");
+    begin
+       return Set_Affinity (tid, CPU_Set);
+    end taskMaskAffinitySet;
+ 
+ end System.VxWorks.Ext;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-vxwext__rtp.adb gcc-8.1.0/gcc/ada/libgnarl/s-vxwext__rtp.adb
*** gcc-7.3.0/gcc/ada/libgnarl/s-vxwext__rtp.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-vxwext__rtp.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,135 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                  GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                --
+ --                                                                          --
+ --                     S Y S T E M . V X W O R K S . E X T                  --
+ --                                                                          --
+ --                                   B o d y                                --
+ --                                                                          --
+ --            Copyright (C) 2008-2018, Free Software Foundation, Inc.       --
+ --                                                                          --
+ -- GNARL is 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 package provides VxWorks specific support functions needed
+ --  by System.OS_Interface.
+ 
+ --  This is the VxWorks 6 RTP version of this package
+ 
+ package body System.VxWorks.Ext is
+ 
+    ERROR : constant := -1;
+ 
+    --------------
+    -- Int_Lock --
+    --------------
+ 
+    function Int_Lock return int is
+    begin
+       return ERROR;
+    end Int_Lock;
+ 
+    ----------------
+    -- Int_Unlock --
+    ----------------
+ 
+    function Int_Unlock (Old : int) return int is
+       pragma Unreferenced (Old);
+    begin
+       return ERROR;
+    end Int_Unlock;
+ 
+    -----------------------
+    -- Interrupt_Connect --
+    -----------------------
+ 
+    function Interrupt_Connect
+      (Vector    : Interrupt_Vector;
+       Handler   : Interrupt_Handler;
+       Parameter : System.Address := System.Null_Address) return int
+    is
+       pragma Unreferenced (Vector, Handler, Parameter);
+    begin
+       return ERROR;
+    end Interrupt_Connect;
+ 
+    -----------------------
+    -- Interrupt_Context --
+    -----------------------
+ 
+    function Interrupt_Context return int is
+    begin
+       --  For RTPs, never in an interrupt context
+ 
+       return 0;
+    end Interrupt_Context;
+ 
+    --------------------------------
+    -- Interrupt_Number_To_Vector --
+    --------------------------------
+ 
+    function Interrupt_Number_To_Vector
+      (intNum : int) return Interrupt_Vector
+    is
+       pragma Unreferenced (intNum);
+    begin
+       return 0;
+    end Interrupt_Number_To_Vector;
+ 
+    ---------------
+    -- semDelete --
+    ---------------
+ 
+    function semDelete (Sem : SEM_ID) return int is
+       function OS_semDelete (Sem : SEM_ID) return int;
+       pragma Import (C, OS_semDelete, "semDelete");
+    begin
+       return OS_semDelete (Sem);
+    end semDelete;
+ 
+    --------------------
+    -- Set_Time_Slice --
+    --------------------
+ 
+    function Set_Time_Slice (ticks : int) return int is
+       pragma Unreferenced (ticks);
+    begin
+       return ERROR;
+    end Set_Time_Slice;
+ 
+    ------------------------
+    -- taskCpuAffinitySet --
+    ------------------------
+ 
+    function taskCpuAffinitySet (tid : t_id; CPU : int) return int is
+       pragma Unreferenced (tid, CPU);
+    begin
+       return ERROR;
+    end taskCpuAffinitySet;
+ 
+    -------------------------
+    -- taskMaskAffinitySet --
+    -------------------------
+ 
+    function taskMaskAffinitySet (tid : t_id; CPU_Set : unsigned) return int is
+       pragma Unreferenced (tid, CPU_Set);
+    begin
+       return ERROR;
+    end taskMaskAffinitySet;
+ 
+ end System.VxWorks.Ext;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-vxwext__rtp.ads gcc-8.1.0/gcc/ada/libgnarl/s-vxwext__rtp.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-vxwext__rtp.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-vxwext__rtp.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,104 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                  GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                --
+ --                                                                          --
+ --                     S Y S T E M . V X W O R K S . E X T                  --
+ --                                                                          --
+ --                                   S p e c                                --
+ --                                                                          --
+ --            Copyright (C) 2008-2018, Free Software Foundation, Inc.       --
+ --                                                                          --
+ -- GNARL is 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 package provides vxworks specific support functions needed
+ --  by System.OS_Interface.
+ 
+ --  This is the VxWorks 6 RTP version of this package
+ 
+ with Interfaces.C;
+ 
+ package System.VxWorks.Ext is
+    pragma Preelaborate;
+ 
+    subtype SEM_ID is Long_Integer;
+    --  typedef struct semaphore *SEM_ID;
+ 
+    type sigset_t is mod 2 ** Long_Long_Integer'Size;
+ 
+    type t_id is new Long_Integer;
+    subtype int is Interfaces.C.int;
+    subtype unsigned is Interfaces.C.unsigned;
+ 
+    type Interrupt_Handler is access procedure (parameter : System.Address);
+    pragma Convention (C, Interrupt_Handler);
+ 
+    type Interrupt_Vector is new System.Address;
+ 
+    function Int_Lock return int;
+    pragma Inline (Int_Lock);
+ 
+    function Int_Unlock (Old : int) return int;
+    pragma Inline (Int_Unlock);
+ 
+    function Interrupt_Connect
+      (Vector    : Interrupt_Vector;
+       Handler   : Interrupt_Handler;
+       Parameter : System.Address := System.Null_Address) return int;
+    pragma Convention (C, Interrupt_Connect);
+ 
+    function Interrupt_Context return int;
+    pragma Convention (C, Interrupt_Context);
+ 
+    function Interrupt_Number_To_Vector
+      (intNum : int) return Interrupt_Vector;
+    pragma Convention (C, Interrupt_Number_To_Vector);
+ 
+    function semDelete (Sem : SEM_ID) return int;
+    pragma Convention (C, semDelete);
+ 
+    function Task_Cont (tid : t_id) return int;
+    pragma Import (C, Task_Cont, "taskResume");
+ 
+    function Task_Stop (tid : t_id) return int;
+    pragma Import (C, Task_Stop, "taskSuspend");
+ 
+    function kill (pid : t_id; sig : int) return int;
+    pragma Import (C, kill, "taskKill");
+ 
+    function getpid return t_id;
+    pragma Import (C, getpid, "getpid");
+ 
+    function Set_Time_Slice (ticks : int) return int;
+    pragma Inline (Set_Time_Slice);
+ 
+    --------------------------------
+    -- Processor Affinity for SMP --
+    --------------------------------
+ 
+    function taskCpuAffinitySet (tid : t_id; CPU : int) return int;
+    pragma Convention (C, taskCpuAffinitySet);
+    --  For SMP run-times set the CPU affinity.
+    --  For uniprocessor systems return ERROR status.
+ 
+    function taskMaskAffinitySet (tid : t_id; CPU_Set : unsigned) return int;
+    pragma Convention (C, taskMaskAffinitySet);
+    --  For SMP run-times set the CPU mask affinity.
+    --  For uniprocessor systems return ERROR status.
+ 
+ end System.VxWorks.Ext;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-vxwext__vthreads.ads gcc-8.1.0/gcc/ada/libgnarl/s-vxwext__vthreads.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-vxwext__vthreads.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-vxwext__vthreads.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,109 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                  GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                --
+ --                                                                          --
+ --                     S Y S T E M . V X W O R K S . E X T                  --
+ --                                                                          --
+ --                                   S p e c                                --
+ --                                                                          --
+ --            Copyright (C) 2008-2018, Free Software Foundation, Inc.       --
+ --                                                                          --
+ -- GNAT is 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 package provides VxWorks specific support functions needed
+ --  by System.OS_Interface.
+ 
+ --  This is the VxWorks 653 vThreads version of this package
+ 
+ with Interfaces.C;
+ 
+ package System.VxWorks.Ext is
+    pragma Preelaborate;
+ 
+    subtype SEM_ID is Long_Integer;
+    --  typedef struct semaphore *SEM_ID;
+ 
+    type sigset_t is mod 2 ** Interfaces.C.long'Size;
+ 
+    type t_id is new Long_Integer;
+    subtype int is Interfaces.C.int;
+    subtype unsigned is Interfaces.C.unsigned;
+ 
+    type Interrupt_Handler is access procedure (parameter : System.Address);
+    pragma Convention (C, Interrupt_Handler);
+ 
+    type Interrupt_Vector is new System.Address;
+    function Int_Lock return int;
+    pragma Inline (Int_Lock);
+ 
+    function Int_Unlock (Old : int) return int;
+    pragma Inline (Int_Unlock);
+ 
+    function Interrupt_Connect
+      (Vector    : Interrupt_Vector;
+       Handler   : Interrupt_Handler;
+       Parameter : System.Address := System.Null_Address) return int;
+    pragma Convention (C, Interrupt_Connect);
+ 
+    function Interrupt_Context return int;
+    pragma Convention (C, Interrupt_Context);
+ 
+    function Interrupt_Number_To_Vector
+      (intNum : int) return Interrupt_Vector;
+    pragma Convention (C, Interrupt_Number_To_Vector);
+ 
+    function semDelete (Sem : SEM_ID) return int;
+    pragma Convention (C, semDelete);
+ 
+    function Task_Cont (tid : t_id) return int;
+    pragma Import (C, Task_Cont, "taskResume");
+ 
+    function Task_Stop (tid : t_id) return int;
+    pragma Import (C, Task_Stop, "taskSuspend");
+ 
+    function kill (pid : t_id; sig : int) return int;
+    pragma Import (C, kill, "kill");
+ 
+    function getpid return t_id;
+    pragma Import (C, getpid, "taskIdSelf");
+ 
+    function Set_Time_Slice (ticks : int) return int;
+    pragma Import (C, Set_Time_Slice, "kernelTimeSlice");
+ 
+    type UINT64 is mod 2 ** Long_Long_Integer'Size;
+ 
+    function tickGet return UINT64;
+    --  "tickGet" not available for cert vThreads:
+    pragma Import (C, tickGet, "tick64Get");
+ 
+    --------------------------------
+    -- Processor Affinity for SMP --
+    --------------------------------
+ 
+    function taskCpuAffinitySet (tid : t_id; CPU : int) return int;
+    pragma Convention (C, taskCpuAffinitySet);
+    --  For SMP run-times set the CPU affinity.
+    --  For uniprocessor systems return ERROR status.
+ 
+    function taskMaskAffinitySet (tid : t_id; CPU_Set : unsigned) return int;
+    pragma Convention (C, taskMaskAffinitySet);
+    --  For SMP run-times set the CPU mask affinity.
+    --  For uniprocessor systems return ERROR status.
+ 
+ end System.VxWorks.Ext;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-vxwork__aarch64.ads gcc-8.1.0/gcc/ada/libgnarl/s-vxwork__aarch64.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-vxwork__aarch64.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-vxwork__aarch64.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,61 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                  GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                --
+ --                                                                          --
+ --                        S Y S T E M . V X W O R K S                       --
+ --                                                                          --
+ --                                   S p e c                                --
+ --                                                                          --
+ --          Copyright (C) 1998-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is the AARCH64 VxWorks version of this package
+ 
+ with Interfaces.C;
+ 
+ package System.VxWorks is
+    pragma Preelaborate (System.VxWorks);
+ 
+    package IC renames Interfaces.C;
+ 
+    --  Floating point context record. ARM version
+ 
+    type ulong128 is array (0 .. 1) of IC.unsigned_long;
+    FP_SGPR_NUM_REGS : constant := 32;
+    type Fpr_Sgpr_Array is array (1 .. FP_SGPR_NUM_REGS) of ulong128;
+ 
+    --  The record definition below matches what arch/arm/fppArmLib.h says
+ 
+    type FP_CONTEXT is record
+       fpcr     : IC.unsigned_long;  --  Floating-point Control Register
+       fpsr     : IC.unsigned_long;  --  Floating-point Status Register
+       vfp_gpr  : Fpr_Sgpr_Array;
+    end record;
+ 
+    for FP_CONTEXT'Alignment use 16;  --  128 bits
+    pragma Convention (C, FP_CONTEXT);
+ 
+    Num_HW_Interrupts : constant := 256;
+    --  Number of entries in hardware interrupt vector table
+ 
+ end System.VxWorks;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-vxwork__arm.ads gcc-8.1.0/gcc/ada/libgnarl/s-vxwork__arm.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-vxwork__arm.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-vxwork__arm.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,66 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                  GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                --
+ --                                                                          --
+ --                        S Y S T E M . V X W O R K S                       --
+ --                                                                          --
+ --                                   S p e c                                --
+ --                                                                          --
+ --          Copyright (C) 1998-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is the ARM VxWorks version of this package
+ 
+ with Interfaces.C;
+ 
+ package System.VxWorks is
+    pragma Preelaborate (System.VxWorks);
+ 
+    package IC renames Interfaces.C;
+ 
+    --  Floating point context record. ARM version
+ 
+    FP_SGPR_NUM_REGS : constant := 32;
+    type Fpr_Sgpr_Array is array (1 .. FP_SGPR_NUM_REGS) of IC.unsigned;
+ 
+    --  The record definition below matches what arch/arm/fppArmLib.h says
+ 
+    type FP_CONTEXT is record
+       fpsid    : IC.unsigned;  --  system ID register
+       fpscr    : IC.unsigned;  --  status and control register
+       fpexc    : IC.unsigned;  --  exception register
+       fpinst   : IC.unsigned;  --  instruction register
+       fpinst2  : IC.unsigned;  --  instruction register 2
+       mfvfr0   : IC.unsigned;  --  media and VFP feature Register 0
+       mfvfr1   : IC.unsigned;  --  media and VFP feature Register 1
+       pad      : IC.unsigned;
+       vfp_gpr  : Fpr_Sgpr_Array;
+    end record;
+ 
+    for FP_CONTEXT'Alignment use 4;
+    pragma Convention (C, FP_CONTEXT);
+ 
+    Num_HW_Interrupts : constant := 256;
+    --  Number of entries in hardware interrupt vector table
+ 
+ end System.VxWorks;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-vxwork__ppc.ads gcc-8.1.0/gcc/ada/libgnarl/s-vxwork__ppc.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-vxwork__ppc.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-vxwork__ppc.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,55 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                  GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                --
+ --                                                                          --
+ --                        S Y S T E M . V X W O R K S                       --
+ --                                                                          --
+ --                                   S p e c                                --
+ --                                                                          --
+ --          Copyright (C) 1998-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is the PPC VxWorks version of this package
+ 
+ with Interfaces.C;
+ 
+ package System.VxWorks is
+    pragma Preelaborate;
+ 
+    package IC renames Interfaces.C;
+ 
+    --  Floating point context record. PPC version
+ 
+    FP_NUM_DREGS : constant := 32;
+    type Fpr_Array is array (1 .. FP_NUM_DREGS) of IC.double;
+ 
+    type FP_CONTEXT is record
+       fpr       : Fpr_Array;
+       fpcsr     : IC.int;
+       fpcsrCopy : IC.int;
+    end record;
+    pragma Convention (C, FP_CONTEXT);
+ 
+    Num_HW_Interrupts : constant := 256;
+ 
+ end System.VxWorks;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/s-vxwork__x86.ads gcc-8.1.0/gcc/ada/libgnarl/s-vxwork__x86.ads
*** gcc-7.3.0/gcc/ada/libgnarl/s-vxwork__x86.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/s-vxwork__x86.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,54 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                  GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                --
+ --                                                                          --
+ --                        S Y S T E M . V X W O R K S                       --
+ --                                                                          --
+ --                                   S p e c                                --
+ --                                                                          --
+ --          Copyright (C) 1998-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is the x86 VxWorks version of this package
+ 
+ package System.VxWorks is
+    pragma Preelaborate;
+ 
+    --  Floating point context record. x86 version
+ 
+    --  There are two kinds of FP_CONTEXT for this architecture, corresponding
+    --  to newer and older processors. The type is defined in fppI86lib.h as a
+    --  union. The form used depends on the versions of the save and restore
+    --  routines that are selected by the user (these versions are provided in
+    --  vxwork.ads). Since we do not examine the contents of these objects, it
+    --  is sufficient to declare the type as of the required size: 512 bytes.
+ 
+    type FP_CONTEXT is array (1 .. 128) of Integer;
+    for FP_CONTEXT'Alignment use 4;
+    for FP_CONTEXT'Size use 512 * Storage_Unit;
+    pragma Convention (C, FP_CONTEXT);
+ 
+    Num_HW_Interrupts : constant := 256;
+    --  Number of entries in hardware interrupt vector table
+ 
+ end System.VxWorks;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnarl/thread.c gcc-8.1.0/gcc/ada/libgnarl/thread.c
*** gcc-7.3.0/gcc/ada/libgnarl/thread.c	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnarl/thread.c	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,88 ----
+ /****************************************************************************
+  *                                                                          *
+  *                         GNAT COMPILER COMPONENTS                         *
+  *                                                                          *
+  *                              P T H R E A D                               *
+  *                                                                          *
+  *                          C Implementation File                           *
+  *                                                                          *
+  *          Copyright (C) 2011-2018, Free Software Foundation, Inc.         *
+  *                                                                          *
+  * GNAT is 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 file provides utility functions to access the threads API          */
+ 
+ #include "s-oscons.h"
+ 
+ /* If the clock we used for tasking (CLOCK_RT_Ada) is not the default
+  * CLOCK_REALTIME, we need to set cond var attributes accordingly.
+  */
+ #if CLOCK_RT_Ada != CLOCK_REALTIME
+ # include <pthread.h>
+ # include <time.h>
+ 
+ int
+ __gnat_pthread_condattr_setup(pthread_condattr_t *attr) {
+   return pthread_condattr_setclock (attr, CLOCK_RT_Ada);
+ }
+ 
+ #else
+ 
+ int
+ __gnat_pthread_condattr_setup (void *attr) {
+   /* Dummy version for other platforms, which may or may not have pthread.h */
+   return 0;
+ }
+ 
+ #endif
+ 
+ #if defined (__APPLE__)
+ #include <mach/mach.h>
+ #include <mach/clock.h>
+ #endif
+ 
+ /* Return the clock ticks per nanosecond for Posix systems lacking the
+    Posix extension function clock_getres, or else 0 nsecs on error.  */
+ 
+ int
+ __gnat_clock_get_res (void)
+ {
+ #if defined (__APPLE__)
+   clock_serv_t clock_port;
+   mach_msg_type_number_t count;
+   int nsecs;
+   int result;
+ 
+   count = 1;
+   result = host_get_clock_service
+     (mach_host_self (), SYSTEM_CLOCK, &clock_port);
+ 
+   if (result == KERN_SUCCESS)
+     result = clock_get_attributes (clock_port, CLOCK_GET_TIME_RES,
+       (clock_attr_t) &nsecs, &count);
+ 
+   if (result == KERN_SUCCESS)
+     return nsecs;
+ #endif
+ 
+   return 0;
+ }
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnat/a-assert.adb gcc-8.1.0/gcc/ada/libgnat/a-assert.adb
*** gcc-7.3.0/gcc/ada/libgnat/a-assert.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnat/a-assert.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,53 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                           A D A . A S S E R T                            --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --         Copyright (C) 2007-2018, Free Software Foundation, Inc.          --
+ --                                                                          --
+ -- GNAT is 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 Ada.Assertions with
+   SPARK_Mode
+ is
+    ------------
+    -- Assert --
+    ------------
+ 
+    procedure Assert (Check : Boolean) is
+    begin
+       if Check = False then
+          raise Ada.Assertions.Assertion_Error;
+       end if;
+    end Assert;
+ 
+    procedure Assert (Check : Boolean; Message : String) is
+    begin
+       if Check = False then
+          raise Ada.Assertions.Assertion_Error with Message;
+       end if;
+    end Assert;
+ 
+ end Ada.Assertions;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnat/a-assert.ads gcc-8.1.0/gcc/ada/libgnat/a-assert.ads
*** gcc-7.3.0/gcc/ada/libgnat/a-assert.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnat/a-assert.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,66 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                       A D A . A S S E R T I O N S                        --
+ --                                                                          --
+ --            Copyright (C) 2015-2018, Free Software Foundation, Inc.       --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ -- 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 contracts that have been added.                      --
+ --                                                                          --
+ -- GNAT is 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. --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Preconditions in this unit are meant for analysis only, not for run-time
+ --  checking, so that the expected exceptions are raised when calling Assert.
+ --  This is enforced by setting the corresponding assertion policy to Ignore.
+ 
+ pragma Assertion_Policy (Pre => Ignore);
+ 
+ --  We do a with of System.Assertions to get hold of the exception (following
+ --  the specific RM permission that lets' Assertion_Error being a renaming).
+ --  The suppression of Warnings stops the warning about bad categorization.
+ 
+ pragma Warnings (Off);
+ with System.Assertions;
+ pragma Warnings (On);
+ 
+ package Ada.Assertions with
+   SPARK_Mode
+ is
+    pragma Pure (Assertions);
+ 
+    Assertion_Error : exception renames System.Assertions.Assert_Failure;
+    --  This is the renaming that is allowed by 11.4.2(24). Note that the
+    --  Exception_Name will refer to the one in System.Assertions (see
+    --  AARM-11.4.1(12.b)).
+ 
+    procedure Assert (Check : Boolean) with
+      Pre => Check;
+ 
+    procedure Assert (Check : Boolean; Message : String) with
+      Pre => Check;
+ 
+ end Ada.Assertions;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnat/a-btgbso.adb gcc-8.1.0/gcc/ada/libgnat/a-btgbso.adb
*** gcc-7.3.0/gcc/ada/libgnat/a-btgbso.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnat/a-btgbso.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,703 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT LIBRARY COMPONENTS                          --
+ --                                                                          --
+ --       ADA.CONTAINERS.RED_BLACK_TREES.GENERIC_BOUNDED_SET_OPERATIONS      --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 2004-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is 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.Red_Black_Trees.Generic_Bounded_Set_Operations is
+ 
+    pragma Warnings (Off, "variable ""Busy*"" is not referenced");
+    pragma Warnings (Off, "variable ""Lock*"" is not referenced");
+    --  See comment in Ada.Containers.Helpers
+ 
+    -----------------------
+    -- Local Subprograms --
+    -----------------------
+ 
+    function Copy (Source : Set_Type) return Set_Type;
+ 
+    ----------
+    -- Copy --
+    ----------
+ 
+    function Copy (Source : Set_Type) return Set_Type is
+    begin
+       return Target : Set_Type (Source.Length) do
+          Assign (Target => Target, Source => Source);
+       end return;
+    end Copy;
+ 
+    ----------------
+    -- Difference --
+    ----------------
+ 
+    procedure Set_Difference (Target : in out Set_Type; Source : Set_Type) is
+       Tgt, Src : Count_Type;
+ 
+       TN : Nodes_Type renames Target.Nodes;
+       SN : Nodes_Type renames Source.Nodes;
+ 
+       Compare : Integer;
+ 
+    begin
+       if Target'Address = Source'Address then
+          TC_Check (Target.TC);
+ 
+          Tree_Operations.Clear_Tree (Target);
+          return;
+       end if;
+ 
+       if Source.Length = 0 then
+          return;
+       end if;
+ 
+       TC_Check (Target.TC);
+ 
+       Tgt := Target.First;
+       Src := Source.First;
+       loop
+          if Tgt = 0 then
+             exit;
+          end if;
+ 
+          if Src = 0 then
+             exit;
+          end if;
+ 
+          --  Per AI05-0022, the container implementation is required to detect
+          --  element tampering by a generic actual subprogram.
+ 
+          declare
+             Lock_Target : With_Lock (Target.TC'Unrestricted_Access);
+             Lock_Source : With_Lock (Source.TC'Unrestricted_Access);
+          begin
+             if Is_Less (TN (Tgt), SN (Src)) then
+                Compare := -1;
+             elsif Is_Less (SN (Src), TN (Tgt)) then
+                Compare := 1;
+             else
+                Compare := 0;
+             end if;
+          end;
+ 
+          if Compare < 0 then
+             Tgt := Tree_Operations.Next (Target, Tgt);
+ 
+          elsif Compare > 0 then
+             Src := Tree_Operations.Next (Source, Src);
+ 
+          else
+             declare
+                X : constant Count_Type := Tgt;
+             begin
+                Tgt := Tree_Operations.Next (Target, Tgt);
+ 
+                Tree_Operations.Delete_Node_Sans_Free (Target, X);
+                Tree_Operations.Free (Target, X);
+             end;
+ 
+             Src := Tree_Operations.Next (Source, Src);
+          end if;
+       end loop;
+    end Set_Difference;
+ 
+    function Set_Difference (Left, Right : Set_Type) return Set_Type is
+    begin
+       if Left'Address = Right'Address then
+          return S : Set_Type (0);  -- Empty set
+       end if;
+ 
+       if Left.Length = 0 then
+          return S : Set_Type (0);  -- Empty set
+       end if;
+ 
+       if Right.Length = 0 then
+          return Copy (Left);
+       end if;
+ 
+       return Result : Set_Type (Left.Length) do
+          --  Per AI05-0022, the container implementation is required to detect
+          --  element tampering by a generic actual subprogram.
+ 
+          declare
+             Lock_Left : With_Lock (Left.TC'Unrestricted_Access);
+             Lock_Right : With_Lock (Right.TC'Unrestricted_Access);
+ 
+             L_Node : Count_Type;
+             R_Node : Count_Type;
+ 
+             Dst_Node : Count_Type;
+             pragma Warnings (Off, Dst_Node);
+ 
+          begin
+             L_Node := Left.First;
+             R_Node := Right.First;
+             loop
+                if L_Node = 0 then
+                   exit;
+                end if;
+ 
+                if R_Node = 0 then
+                   while L_Node /= 0 loop
+                      Insert_With_Hint
+                        (Dst_Set  => Result,
+                         Dst_Hint => 0,
+                         Src_Node => Left.Nodes (L_Node),
+                         Dst_Node => Dst_Node);
+ 
+                      L_Node := Tree_Operations.Next (Left, L_Node);
+                   end loop;
+ 
+                   exit;
+                end if;
+ 
+                if Is_Less (Left.Nodes (L_Node), Right.Nodes (R_Node)) then
+                   Insert_With_Hint
+                     (Dst_Set  => Result,
+                      Dst_Hint => 0,
+                      Src_Node => Left.Nodes (L_Node),
+                      Dst_Node => Dst_Node);
+ 
+                   L_Node := Tree_Operations.Next (Left, L_Node);
+ 
+                elsif Is_Less (Right.Nodes (R_Node), Left.Nodes (L_Node)) then
+                   R_Node := Tree_Operations.Next (Right, R_Node);
+ 
+                else
+                   L_Node := Tree_Operations.Next (Left, L_Node);
+                   R_Node := Tree_Operations.Next (Right, R_Node);
+                end if;
+             end loop;
+          end;
+       end return;
+    end Set_Difference;
+ 
+    ------------------
+    -- Intersection --
+    ------------------
+ 
+    procedure Set_Intersection
+      (Target : in out Set_Type;
+       Source : Set_Type)
+    is
+       Tgt : Count_Type;
+       Src : Count_Type;
+ 
+       Compare : Integer;
+ 
+    begin
+       if Target'Address = Source'Address then
+          return;
+       end if;
+ 
+       TC_Check (Target.TC);
+ 
+       if Source.Length = 0 then
+          Tree_Operations.Clear_Tree (Target);
+          return;
+       end if;
+ 
+       Tgt := Target.First;
+       Src := Source.First;
+       while Tgt /= 0
+         and then Src /= 0
+       loop
+          --  Per AI05-0022, the container implementation is required to detect
+          --  element tampering by a generic actual subprogram.
+ 
+          declare
+             Lock_Target : With_Lock (Target.TC'Unrestricted_Access);
+             Lock_Source : With_Lock (Source.TC'Unrestricted_Access);
+          begin
+             if Is_Less (Target.Nodes (Tgt), Source.Nodes (Src)) then
+                Compare := -1;
+             elsif Is_Less (Source.Nodes (Src), Target.Nodes (Tgt)) then
+                Compare := 1;
+             else
+                Compare := 0;
+             end if;
+          end;
+ 
+          if Compare < 0 then
+             declare
+                X : constant Count_Type := Tgt;
+             begin
+                Tgt := Tree_Operations.Next (Target, Tgt);
+ 
+                Tree_Operations.Delete_Node_Sans_Free (Target, X);
+                Tree_Operations.Free (Target, X);
+             end;
+ 
+          elsif Compare > 0 then
+             Src := Tree_Operations.Next (Source, Src);
+ 
+          else
+             Tgt := Tree_Operations.Next (Target, Tgt);
+             Src := Tree_Operations.Next (Source, Src);
+          end if;
+       end loop;
+ 
+       while Tgt /= 0 loop
+          declare
+             X : constant Count_Type := Tgt;
+          begin
+             Tgt := Tree_Operations.Next (Target, Tgt);
+ 
+             Tree_Operations.Delete_Node_Sans_Free (Target, X);
+             Tree_Operations.Free (Target, X);
+          end;
+       end loop;
+    end Set_Intersection;
+ 
+    function Set_Intersection (Left, Right : Set_Type) return Set_Type is
+    begin
+       if Left'Address = Right'Address then
+          return Copy (Left);
+       end if;
+ 
+       return Result : Set_Type (Count_Type'Min (Left.Length, Right.Length)) do
+ 
+          --  Per AI05-0022, the container implementation is required to detect
+          --  element tampering by a generic actual subprogram.
+ 
+          declare
+             Lock_Left : With_Lock (Left.TC'Unrestricted_Access);
+             Lock_Right : With_Lock (Right.TC'Unrestricted_Access);
+ 
+             L_Node : Count_Type;
+             R_Node : Count_Type;
+ 
+             Dst_Node : Count_Type;
+             pragma Warnings (Off, Dst_Node);
+ 
+          begin
+             L_Node := Left.First;
+             R_Node := Right.First;
+             loop
+                if L_Node = 0 then
+                   exit;
+                end if;
+ 
+                if R_Node = 0 then
+                   exit;
+                end if;
+ 
+                if Is_Less (Left.Nodes (L_Node), Right.Nodes (R_Node)) then
+                   L_Node := Tree_Operations.Next (Left, L_Node);
+ 
+                elsif Is_Less (Right.Nodes (R_Node), Left.Nodes (L_Node)) then
+                   R_Node := Tree_Operations.Next (Right, R_Node);
+ 
+                else
+                   Insert_With_Hint
+                     (Dst_Set  => Result,
+                      Dst_Hint => 0,
+                      Src_Node => Left.Nodes (L_Node),
+                      Dst_Node => Dst_Node);
+ 
+                   L_Node := Tree_Operations.Next (Left, L_Node);
+                   R_Node := Tree_Operations.Next (Right, R_Node);
+                end if;
+             end loop;
+          end;
+       end return;
+    end Set_Intersection;
+ 
+    ---------------
+    -- Is_Subset --
+    ---------------
+ 
+    function Set_Subset
+      (Subset : Set_Type;
+       Of_Set : Set_Type) return Boolean
+    is
+    begin
+       if Subset'Address = Of_Set'Address then
+          return True;
+       end if;
+ 
+       if Subset.Length > Of_Set.Length then
+          return False;
+       end if;
+ 
+       --  Per AI05-0022, the container implementation is required to detect
+       --  element tampering by a generic actual subprogram.
+ 
+       declare
+          Lock_Subset : With_Lock (Subset.TC'Unrestricted_Access);
+          Lock_Of_Set : With_Lock (Of_Set.TC'Unrestricted_Access);
+ 
+          Subset_Node : Count_Type;
+          Set_Node    : Count_Type;
+       begin
+          Subset_Node := Subset.First;
+          Set_Node    := Of_Set.First;
+          loop
+             if Set_Node = 0 then
+                return Subset_Node = 0;
+             end if;
+ 
+             if Subset_Node = 0 then
+                return True;
+             end if;
+ 
+             if Is_Less (Subset.Nodes (Subset_Node),
+                         Of_Set.Nodes (Set_Node))
+             then
+                return False;
+             end if;
+ 
+             if Is_Less (Of_Set.Nodes (Set_Node),
+                         Subset.Nodes (Subset_Node))
+             then
+                Set_Node := Tree_Operations.Next (Of_Set, Set_Node);
+             else
+                Set_Node := Tree_Operations.Next (Of_Set, Set_Node);
+                Subset_Node := Tree_Operations.Next (Subset, Subset_Node);
+             end if;
+          end loop;
+       end;
+    end Set_Subset;
+ 
+    -------------
+    -- Overlap --
+    -------------
+ 
+    function Set_Overlap (Left, Right : Set_Type) return Boolean is
+    begin
+       if Left'Address = Right'Address then
+          return Left.Length /= 0;
+       end if;
+ 
+       --  Per AI05-0022, the container implementation is required to detect
+       --  element tampering by a generic actual subprogram.
+ 
+       declare
+          Lock_Left : With_Lock (Left.TC'Unrestricted_Access);
+          Lock_Right : With_Lock (Right.TC'Unrestricted_Access);
+ 
+          L_Node : Count_Type;
+          R_Node : Count_Type;
+       begin
+          L_Node := Left.First;
+          R_Node := Right.First;
+          loop
+             if L_Node = 0
+               or else R_Node = 0
+             then
+                return False;
+             end if;
+ 
+             if Is_Less (Left.Nodes (L_Node), Right.Nodes (R_Node)) then
+                L_Node := Tree_Operations.Next (Left, L_Node);
+             elsif Is_Less (Right.Nodes (R_Node), Left.Nodes (L_Node)) then
+                R_Node := Tree_Operations.Next (Right, R_Node);
+             else
+                return True;
+             end if;
+          end loop;
+       end;
+    end Set_Overlap;
+ 
+    --------------------------
+    -- Symmetric_Difference --
+    --------------------------
+ 
+    procedure Set_Symmetric_Difference
+      (Target : in out Set_Type;
+       Source : Set_Type)
+    is
+       Tgt : Count_Type;
+       Src : Count_Type;
+ 
+       New_Tgt_Node : Count_Type;
+       pragma Warnings (Off, New_Tgt_Node);
+ 
+       Compare : Integer;
+ 
+    begin
+       if Target'Address = Source'Address then
+          Tree_Operations.Clear_Tree (Target);
+          return;
+       end if;
+ 
+       Tgt := Target.First;
+       Src := Source.First;
+       loop
+          if Tgt = 0 then
+             while Src /= 0 loop
+                Insert_With_Hint
+                  (Dst_Set  => Target,
+                   Dst_Hint => 0,
+                   Src_Node => Source.Nodes (Src),
+                   Dst_Node => New_Tgt_Node);
+ 
+                Src := Tree_Operations.Next (Source, Src);
+             end loop;
+ 
+             return;
+          end if;
+ 
+          if Src = 0 then
+             return;
+          end if;
+ 
+          --  Per AI05-0022, the container implementation is required to detect
+          --  element tampering by a generic actual subprogram.
+ 
+          declare
+             Lock_Target : With_Lock (Target.TC'Unrestricted_Access);
+             Lock_Source : With_Lock (Source.TC'Unrestricted_Access);
+          begin
+             if Is_Less (Target.Nodes (Tgt), Source.Nodes (Src)) then
+                Compare := -1;
+             elsif Is_Less (Source.Nodes (Src), Target.Nodes (Tgt)) then
+                Compare := 1;
+             else
+                Compare := 0;
+             end if;
+          end;
+ 
+          if Compare < 0 then
+             Tgt := Tree_Operations.Next (Target, Tgt);
+ 
+          elsif Compare > 0 then
+             Insert_With_Hint
+               (Dst_Set  => Target,
+                Dst_Hint => Tgt,
+                Src_Node => Source.Nodes (Src),
+                Dst_Node => New_Tgt_Node);
+ 
+             Src := Tree_Operations.Next (Source, Src);
+ 
+          else
+             declare
+                X : constant Count_Type := Tgt;
+             begin
+                Tgt := Tree_Operations.Next (Target, Tgt);
+ 
+                Tree_Operations.Delete_Node_Sans_Free (Target, X);
+                Tree_Operations.Free (Target, X);
+             end;
+ 
+             Src := Tree_Operations.Next (Source, Src);
+          end if;
+       end loop;
+    end Set_Symmetric_Difference;
+ 
+    function Set_Symmetric_Difference
+      (Left, Right : Set_Type) return Set_Type
+    is
+    begin
+       if Left'Address = Right'Address then
+          return S : Set_Type (0);  -- Empty set
+       end if;
+ 
+       if Right.Length = 0 then
+          return Copy (Left);
+       end if;
+ 
+       if Left.Length = 0 then
+          return Copy (Right);
+       end if;
+ 
+       return Result : Set_Type (Left.Length + Right.Length) do
+ 
+          --  Per AI05-0022, the container implementation is required to detect
+          --  element tampering by a generic actual subprogram.
+ 
+          declare
+             Lock_Left : With_Lock (Left.TC'Unrestricted_Access);
+             Lock_Right : With_Lock (Right.TC'Unrestricted_Access);
+ 
+             L_Node : Count_Type;
+             R_Node : Count_Type;
+ 
+             Dst_Node : Count_Type;
+             pragma Warnings (Off, Dst_Node);
+ 
+          begin
+             L_Node := Left.First;
+             R_Node := Right.First;
+             loop
+                if L_Node = 0 then
+                   while R_Node /= 0 loop
+                      Insert_With_Hint
+                        (Dst_Set  => Result,
+                         Dst_Hint => 0,
+                         Src_Node => Right.Nodes (R_Node),
+                         Dst_Node => Dst_Node);
+ 
+                      R_Node := Tree_Operations.Next (Right, R_Node);
+                   end loop;
+ 
+                   exit;
+                end if;
+ 
+                if R_Node = 0 then
+                   while L_Node /= 0 loop
+                      Insert_With_Hint
+                        (Dst_Set  => Result,
+                         Dst_Hint => 0,
+                         Src_Node => Left.Nodes (L_Node),
+                         Dst_Node => Dst_Node);
+ 
+                      L_Node := Tree_Operations.Next (Left, L_Node);
+                   end loop;
+ 
+                   exit;
+                end if;
+ 
+                if Is_Less (Left.Nodes (L_Node), Right.Nodes (R_Node)) then
+                   Insert_With_Hint
+                     (Dst_Set  => Result,
+                      Dst_Hint => 0,
+                      Src_Node => Left.Nodes (L_Node),
+                      Dst_Node => Dst_Node);
+ 
+                   L_Node := Tree_Operations.Next (Left, L_Node);
+ 
+                elsif Is_Less (Right.Nodes (R_Node), Left.Nodes (L_Node)) then
+                   Insert_With_Hint
+                     (Dst_Set  => Result,
+                      Dst_Hint => 0,
+                      Src_Node => Right.Nodes (R_Node),
+                      Dst_Node => Dst_Node);
+ 
+                   R_Node := Tree_Operations.Next (Right, R_Node);
+ 
+                else
+                   L_Node := Tree_Operations.Next (Left, L_Node);
+                   R_Node := Tree_Operations.Next (Right, R_Node);
+                end if;
+             end loop;
+          end;
+       end return;
+    end Set_Symmetric_Difference;
+ 
+    -----------
+    -- Union --
+    -----------
+ 
+    procedure Set_Union (Target : in out Set_Type; Source : Set_Type) is
+       Hint : Count_Type := 0;
+ 
+       procedure Process (Node : Count_Type);
+       pragma Inline (Process);
+ 
+       procedure Iterate is new Tree_Operations.Generic_Iteration (Process);
+ 
+       -------------
+       -- Process --
+       -------------
+ 
+       procedure Process (Node : Count_Type) is
+       begin
+          Insert_With_Hint
+            (Dst_Set  => Target,
+             Dst_Hint => Hint,
+             Src_Node => Source.Nodes (Node),
+             Dst_Node => Hint);
+       end Process;
+ 
+    --  Start of processing for Union
+ 
+    begin
+       if Target'Address = Source'Address then
+          return;
+       end if;
+ 
+       --  Per AI05-0022, the container implementation is required to detect
+       --  element tampering by a generic actual subprogram.
+ 
+       declare
+          Lock_Source : With_Lock (Source.TC'Unrestricted_Access);
+       begin
+          --  Note that there's no way to decide a priori whether the target has
+          --  enough capacity for the union with source. We cannot simply
+          --  compare the sum of the existing lengths to the capacity of the
+          --  target, because equivalent items from source are not included in
+          --  the union.
+ 
+          Iterate (Source);
+       end;
+    end Set_Union;
+ 
+    function Set_Union (Left, Right : Set_Type) return Set_Type is
+    begin
+       if Left'Address = Right'Address then
+          return Copy (Left);
+       end if;
+ 
+       if Left.Length = 0 then
+          return Copy (Right);
+       end if;
+ 
+       if Right.Length = 0 then
+          return Copy (Left);
+       end if;
+ 
+       return Result : Set_Type (Left.Length + Right.Length) do
+          declare
+             Lock_Left : With_Lock (Left.TC'Unrestricted_Access);
+             Lock_Right : With_Lock (Right.TC'Unrestricted_Access);
+          begin
+             Assign (Target => Result, Source => Left);
+ 
+             Insert_Right : declare
+                Hint : Count_Type := 0;
+ 
+                procedure Process (Node : Count_Type);
+                pragma Inline (Process);
+ 
+                procedure Iterate is
+                  new Tree_Operations.Generic_Iteration (Process);
+ 
+                -------------
+                -- Process --
+                -------------
+ 
+                procedure Process (Node : Count_Type) is
+                begin
+                   Insert_With_Hint
+                     (Dst_Set  => Result,
+                      Dst_Hint => Hint,
+                      Src_Node => Right.Nodes (Node),
+                      Dst_Node => Hint);
+                end Process;
+ 
+             --  Start of processing for Insert_Right
+ 
+             begin
+                Iterate (Right);
+             end Insert_Right;
+          end;
+       end return;
+    end Set_Union;
+ 
+ end Ada.Containers.Red_Black_Trees.Generic_Bounded_Set_Operations;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnat/a-btgbso.ads gcc-8.1.0/gcc/ada/libgnat/a-btgbso.ads
*** gcc-7.3.0/gcc/ada/libgnat/a-btgbso.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnat/a-btgbso.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,103 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT LIBRARY COMPONENTS                          --
+ --                                                                          --
+ --       ADA.CONTAINERS.RED_BLACK_TREES.GENERIC_BOUNDED_SET_OPERATIONS      --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 2004-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is 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.                  --
+ ------------------------------------------------------------------------------
+ 
+ --  Tree_Type is used to implement ordered containers. This package declares
+ --  set-based tree operations.
+ 
+ with Ada.Containers.Red_Black_Trees.Generic_Bounded_Operations;
+ 
+ generic
+    with package Tree_Operations is new Generic_Bounded_Operations (<>);
+ 
+    type Set_Type is new Tree_Operations.Tree_Types.Tree_Type with private;
+ 
+    use Tree_Operations.Tree_Types, Tree_Operations.Tree_Types.Implementation;
+ 
+    with procedure Assign (Target : in out Set_Type; Source : Set_Type);
+ 
+    with procedure Insert_With_Hint
+      (Dst_Set  : in out Set_Type;
+       Dst_Hint : Count_Type;
+       Src_Node : Node_Type;
+       Dst_Node : out Count_Type);
+ 
+    with function Is_Less (Left, Right : Node_Type) return Boolean;
+ 
+ package Ada.Containers.Red_Black_Trees.Generic_Bounded_Set_Operations is
+    pragma Pure;
+ 
+    procedure Set_Union (Target : in out Set_Type; Source : Set_Type);
+    --  Attempts to insert each element of Source in Target. If Target is
+    --  busy then Program_Error is raised. We say "attempts" here because
+    --  if these are unique-element sets, then the insertion should fail
+    --  (not insert a new item) when the insertion item from Source is
+    --  equivalent to an item already in Target. If these are multisets
+    --  then of course the attempt should always succeed.
+ 
+    function Set_Union (Left, Right : Set_Type) return Set_Type;
+    --  Makes a copy of Left, and attempts to insert each element of
+    --  Right into the copy, then returns the copy.
+ 
+    procedure Set_Intersection (Target : in out Set_Type; Source : Set_Type);
+    --  Removes elements from Target that are not equivalent to items in
+    --  Source. If Target is busy then Program_Error is raised.
+ 
+    function Set_Intersection (Left, Right : Set_Type) return Set_Type;
+    --  Returns a set comprising all the items in Left equivalent to items in
+    --  Right.
+ 
+    procedure Set_Difference (Target : in out Set_Type; Source : Set_Type);
+    --  Removes elements from Target that are equivalent to items in Source. If
+    --  Target is busy then Program_Error is raised.
+ 
+    function Set_Difference (Left, Right : Set_Type) return Set_Type;
+    --  Returns a set comprising all the items in Left not equivalent to items
+    --  in Right.
+ 
+    procedure Set_Symmetric_Difference
+      (Target : in out Set_Type;
+       Source : Set_Type);
+    --  Removes from Target elements that are equivalent to items in Source,
+    --  and inserts into Target items from Source not equivalent elements in
+    --  Target. If Target is busy then Program_Error is raised.
+ 
+    function Set_Symmetric_Difference (Left, Right : Set_Type) return Set_Type;
+    --  Returns a set comprising the union of the elements in Left not
+    --  equivalent to items in Right, and the elements in Right not equivalent
+    --  to items in Left.
+ 
+    function Set_Subset (Subset : Set_Type; Of_Set : Set_Type) return Boolean;
+    --  Returns False if Subset contains at least one element not equivalent to
+    --  any item in Of_Set; returns True otherwise.
+ 
+    function Set_Overlap (Left, Right : Set_Type) return Boolean;
+    --  Returns True if at least one element of Left is equivalent to an item in
+    --  Right; returns False otherwise.
+ 
+ end Ada.Containers.Red_Black_Trees.Generic_Bounded_Set_Operations;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnat/a-calari.adb gcc-8.1.0/gcc/ada/libgnat/a-calari.adb
*** gcc-7.3.0/gcc/ada/libgnat/a-calari.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnat/a-calari.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,100 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --              A D A . C A L E N D A R . A R I T H M E T I C               --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 2006-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is 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 Ada.Calendar.Arithmetic is
+ 
+    --------------------------
+    -- Implementation Notes --
+    --------------------------
+ 
+    --  All operations in this package are target and time representation
+    --  independent, thus only one source file is needed for multiple targets.
+ 
+    ---------
+    -- "+" --
+    ---------
+ 
+    function "+" (Left : Time; Right : Day_Count) return Time is
+       R : constant Long_Integer := Long_Integer (Right);
+    begin
+       return Arithmetic_Operations.Add (Left, R);
+    end "+";
+ 
+    function "+" (Left : Day_Count; Right : Time) return Time is
+       L : constant Long_Integer := Long_Integer (Left);
+    begin
+       return Arithmetic_Operations.Add (Right, L);
+    end "+";
+ 
+    ---------
+    -- "-" --
+    ---------
+ 
+    function "-" (Left : Time; Right : Day_Count) return Time is
+       R : constant Long_Integer := Long_Integer (Right);
+    begin
+       return Arithmetic_Operations.Subtract (Left, R);
+    end "-";
+ 
+    function "-" (Left, Right : Time) return Day_Count is
+       Days         : Long_Integer;
+       Seconds      : Duration;
+       Leap_Seconds : Integer;
+       pragma Warnings (Off, Seconds);        -- temporary ???
+       pragma Warnings (Off, Leap_Seconds);   -- temporary ???
+       pragma Unreferenced (Seconds, Leap_Seconds);
+    begin
+       Arithmetic_Operations.Difference
+         (Left, Right, Days, Seconds, Leap_Seconds);
+       return Day_Count (Days);
+    end "-";
+ 
+    ----------------
+    -- Difference --
+    ----------------
+ 
+    procedure Difference
+      (Left         : Time;
+       Right        : Time;
+       Days         : out Day_Count;
+       Seconds      : out Duration;
+       Leap_Seconds : out Leap_Seconds_Count)
+    is
+       Op_Days  : Long_Integer;
+       Op_Leaps : Integer;
+    begin
+       Arithmetic_Operations.Difference
+         (Left, Right, Op_Days, Seconds, Op_Leaps);
+       Days := Day_Count (Op_Days);
+       Leap_Seconds := Leap_Seconds_Count (Op_Leaps);
+    end Difference;
+ 
+ end Ada.Calendar.Arithmetic;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnat/a-calari.ads gcc-8.1.0/gcc/ada/libgnat/a-calari.ads
*** gcc-7.3.0/gcc/ada/libgnat/a-calari.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnat/a-calari.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,65 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --              A D A . C A L E N D A R . A R I T H M E T I C               --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --         Copyright (C) 2005-2018, 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 --
+ -- copy and modify this specification,  provided that if you redistribute a --
+ -- modified version,  any changes that you have made are clearly indicated. --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package provides arithmetic operations of time values using days
+ --  and leap seconds. Ada.Calendar.Arithmetic is defined in the Ada 2005
+ --  RM (9.6.1).
+ 
+ package Ada.Calendar.Arithmetic is
+ 
+    --  Arithmetic on days:
+ 
+    --  Rough estimate on the number of days over the range of Ada time
+ 
+    type Day_Count is range
+      -(366 * (1 + Year_Number'Last - Year_Number'First))
+         ..
+      +(366 * (1 + Year_Number'Last - Year_Number'First));
+ 
+    subtype Leap_Seconds_Count is Integer range -2047 .. 2047;
+    --  Count of leap seconds. Negative leap seconds occur whenever the
+    --  astronomical time is faster than the atomic time or as a result of
+    --  Difference when Left < Right.
+ 
+    procedure Difference
+      (Left         : Time;
+       Right        : Time;
+       Days         : out Day_Count;
+       Seconds      : out Duration;
+       Leap_Seconds : out Leap_Seconds_Count);
+    --  Returns the difference between Left and Right. Days is the number of
+    --  days of difference, Seconds is the remainder seconds of difference
+    --  excluding leap seconds, and Leap_Seconds is the number of leap seconds.
+    --  If Left < Right, then Seconds <= 0.0, Days <= 0, and Leap_Seconds <= 0,
+    --  otherwise all values are nonnegative. The absolute value of Seconds is
+    --  always less than 86_400.0. For the returned values, if Days = 0, then
+    --  Seconds + Duration (Leap_Seconds) = Calendar."-" (Left, Right)
+ 
+    function "+" (Left : Time;      Right : Day_Count) return Time;
+    function "+" (Left : Day_Count; Right : Time)      return Time;
+    --  Adds a number of days to a time value. Time_Error is raised if the
+    --  result is not representable as a value of type Time.
+ 
+    function "-" (Left : Time;      Right : Day_Count) return Time;
+    --  Subtracts a number of days from a time value. Time_Error is raised if
+    --  the result is not representable as a value of type Time.
+ 
+    function "-" (Left : Time;      Right : Time)      return Day_Count;
+    --  Subtracts two time values, and returns the number of days between them.
+    --  This is the same value that Difference would return in Days.
+ 
+ end Ada.Calendar.Arithmetic;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnat/a-calcon.adb gcc-8.1.0/gcc/ada/libgnat/a-calcon.adb
*** gcc-7.3.0/gcc/ada/libgnat/a-calcon.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnat/a-calcon.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,148 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --              A D A . C A L E N D A R . C O N V E R S I O N S             --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --        Copyright (C) 2008-2018, Free Software Foundation, Inc.           --
+ --                                                                          --
+ -- GNAT is 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 Interfaces.C; use Interfaces.C;
+ 
+ package body Ada.Calendar.Conversions is
+ 
+    -----------------
+    -- To_Ada_Time --
+    -----------------
+ 
+    function To_Ada_Time (Unix_Time : long) return Time is
+       Val : constant Long_Integer := Long_Integer (Unix_Time);
+    begin
+       return Conversion_Operations.To_Ada_Time (Val);
+    end To_Ada_Time;
+ 
+    -----------------
+    -- To_Ada_Time --
+    -----------------
+ 
+    function To_Ada_Time
+      (tm_year  : int;
+       tm_mon   : int;
+       tm_day   : int;
+       tm_hour  : int;
+       tm_min   : int;
+       tm_sec   : int;
+       tm_isdst : int) return Time
+    is
+       Year   : constant Integer := Integer (tm_year);
+       Month  : constant Integer := Integer (tm_mon);
+       Day    : constant Integer := Integer (tm_day);
+       Hour   : constant Integer := Integer (tm_hour);
+       Minute : constant Integer := Integer (tm_min);
+       Second : constant Integer := Integer (tm_sec);
+       DST    : constant Integer := Integer (tm_isdst);
+    begin
+       return
+         Conversion_Operations.To_Ada_Time
+           (Year, Month, Day, Hour, Minute, Second, DST);
+    end To_Ada_Time;
+ 
+    -----------------
+    -- To_Duration --
+    -----------------
+ 
+    function To_Duration
+      (tv_sec  : long;
+       tv_nsec : long) return Duration
+    is
+       Secs      : constant Long_Integer := Long_Integer (tv_sec);
+       Nano_Secs : constant Long_Integer := Long_Integer (tv_nsec);
+    begin
+       return Conversion_Operations.To_Duration (Secs, Nano_Secs);
+    end To_Duration;
+ 
+    ------------------------
+    -- To_Struct_Timespec --
+    ------------------------
+ 
+    procedure To_Struct_Timespec
+      (D       : Duration;
+       tv_sec  : out long;
+       tv_nsec : out long)
+    is
+       Secs      : Long_Integer;
+       Nano_Secs : Long_Integer;
+ 
+    begin
+       Conversion_Operations.To_Struct_Timespec (D, Secs, Nano_Secs);
+ 
+       tv_sec  := long (Secs);
+       tv_nsec := long (Nano_Secs);
+    end To_Struct_Timespec;
+ 
+    ------------------
+    -- To_Struct_Tm --
+    ------------------
+ 
+    procedure To_Struct_Tm
+      (T       : Time;
+       tm_year : out int;
+       tm_mon  : out int;
+       tm_day  : out int;
+       tm_hour : out int;
+       tm_min  : out int;
+       tm_sec  : out int)
+    is
+       Year   : Integer;
+       Month  : Integer;
+       Day    : Integer;
+       Hour   : Integer;
+       Minute : Integer;
+       Second : Integer;
+ 
+    begin
+       Conversion_Operations.To_Struct_Tm
+         (T, Year, Month, Day, Hour, Minute, Second);
+ 
+       tm_year := int (Year);
+       tm_mon  := int (Month);
+       tm_day  := int (Day);
+       tm_hour := int (Hour);
+       tm_min  := int (Minute);
+       tm_sec  := int (Second);
+    end To_Struct_Tm;
+ 
+    ------------------
+    -- To_Unix_Time --
+    ------------------
+ 
+    function To_Unix_Time (Ada_Time : Time) return long is
+       Val : constant Long_Integer :=
+         Conversion_Operations.To_Unix_Time (Ada_Time);
+    begin
+       return long (Val);
+    end To_Unix_Time;
+ 
+ end Ada.Calendar.Conversions;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnat/a-calcon.ads gcc-8.1.0/gcc/ada/libgnat/a-calcon.ads
*** gcc-7.3.0/gcc/ada/libgnat/a-calcon.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnat/a-calcon.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,113 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --              A D A . C A L E N D A R . C O N V E R S I O N S             --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 2008-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is 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 various routines for conversion between Ada and Unix
+ --  time models - Time, Duration, struct tm and struct timespec.
+ 
+ with Interfaces.C;
+ 
+ package Ada.Calendar.Conversions is
+ 
+    function To_Ada_Time (Unix_Time : Interfaces.C.long) return Time;
+    --  Convert a time value represented as number of seconds since the
+    --  Unix Epoch to a time value relative to an Ada implementation-defined
+    --  Epoch. The units of the result are nanoseconds on all targets. Raises
+    --  Time_Error if the result cannot fit into a Time value.
+ 
+    function To_Ada_Time
+      (tm_year  : Interfaces.C.int;
+       tm_mon   : Interfaces.C.int;
+       tm_day   : Interfaces.C.int;
+       tm_hour  : Interfaces.C.int;
+       tm_min   : Interfaces.C.int;
+       tm_sec   : Interfaces.C.int;
+       tm_isdst : Interfaces.C.int) return Time;
+    --  Convert a time value expressed in Unix-like fields of struct tm into
+    --  a Time value relative to the Ada Epoch. The ranges of the formals are
+    --  as follows:
+ 
+    --     tm_year   --  years since 1900
+    --     tm_mon    --  months since January [0 .. 11]
+    --     tm_day    --  day of the month [1 .. 31]
+    --     tm_hour   --  hours since midnight [0 .. 24]
+    --     tm_min    --  minutes after the hour [0 .. 59]
+    --     tm_sec    --  seconds after the minute [0 .. 60]
+    --     tm_isdst  --  Daylight Savings Time flag [-1 .. 1]
+ 
+    --  The returned value is in UTC and may or may not contain leap seconds
+    --  depending on whether binder flag "-y" was used. Raises Time_Error if
+    --  the input values are out of the defined ranges or if tm_sec equals 60
+    --  and the instance in time is not a leap second occurrence.
+ 
+    function To_Duration
+      (tv_sec  : Interfaces.C.long;
+       tv_nsec : Interfaces.C.long) return Duration;
+    --  Convert an elapsed time value expressed in Unix-like fields of struct
+    --  timespec into a Duration value. The expected ranges are:
+ 
+    --     tv_sec   -  seconds
+    --     tv_nsec  -  nanoseconds
+ 
+    procedure To_Struct_Timespec
+      (D       : Duration;
+       tv_sec  : out Interfaces.C.long;
+       tv_nsec : out Interfaces.C.long);
+    --  Convert a Duration value into the constituents of struct timespec.
+    --  Formal tv_sec denotes seconds and tv_nsecs denotes nanoseconds.
+ 
+    procedure To_Struct_Tm
+      (T       : Time;
+       tm_year : out Interfaces.C.int;
+       tm_mon  : out Interfaces.C.int;
+       tm_day  : out Interfaces.C.int;
+       tm_hour : out Interfaces.C.int;
+       tm_min  : out Interfaces.C.int;
+       tm_sec  : out Interfaces.C.int);
+    --  Convert a Time value set in the Ada Epoch into the constituents of
+    --  struct tm. The ranges of the out formals are as follows:
+ 
+    --     tm_year   --  years since 1900
+    --     tm_mon    --  months since January [0 .. 11]
+    --     tm_day    --  day of the month [1 .. 31]
+    --     tm_hour   --  hours since midnight [0 .. 24]
+    --     tm_min    --  minutes after the hour [0 .. 59]
+    --     tm_sec    --  seconds after the minute [0 .. 60]
+    --     tm_isdst  --  Daylight Savings Time flag [-1 .. 1]
+ 
+    --  The input date is considered to be in UTC
+ 
+    function To_Unix_Time (Ada_Time : Time) return Interfaces.C.long;
+    --  Convert a time value represented as number of time units since the Ada
+    --  implementation-defined Epoch to a value relative to the Unix Epoch. The
+    --  units of the result are seconds. Raises Time_Error if the result cannot
+    --  fit into a Time value.
+ 
+ end Ada.Calendar.Conversions;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnat/a-caldel.adb gcc-8.1.0/gcc/ada/libgnat/a-caldel.adb
*** gcc-7.3.0/gcc/ada/libgnat/a-caldel.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnat/a-caldel.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,110 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                   A D A . C A L E N D A R . D E L A Y S                  --
+ --                                                                          --
+ --                                  B o d y                                 --
+ --                                                                          --
+ --             Copyright (C) 1991-2017, Florida State University            --
+ --                     Copyright (C) 1995-2018, AdaCore                     --
+ --                                                                          --
+ -- GNAT is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with System.OS_Primitives;
+ with System.Soft_Links;
+ 
+ package body Ada.Calendar.Delays is
+ 
+    package OSP renames System.OS_Primitives;
+    package SSL renames System.Soft_Links;
+ 
+    use type SSL.Timed_Delay_Call;
+ 
+    --  Earlier, System.Time_Operations was used to implement the following
+    --  operations. The idea was to avoid sucking in the tasking packages. This
+    --  did not work. Logically, we can't have it both ways. There is no way to
+    --  implement time delays that will have correct task semantics without
+    --  reference to the tasking run-time system. To achieve this goal, we now
+    --  use soft links.
+ 
+    -----------------------
+    -- Local Subprograms --
+    -----------------------
+ 
+    procedure Timed_Delay_NT (Time : Duration; Mode : Integer);
+    --  Timed delay procedure used when no tasking is active
+ 
+    ---------------
+    -- Delay_For --
+    ---------------
+ 
+    procedure Delay_For (D : Duration) is
+    begin
+       SSL.Timed_Delay.all (Duration'Min (D, OSP.Max_Sensible_Delay),
+                            OSP.Relative);
+    end Delay_For;
+ 
+    -----------------
+    -- Delay_Until --
+    -----------------
+ 
+    procedure Delay_Until (T : Time) is
+       D : constant Duration := To_Duration (T);
+ 
+    begin
+       SSL.Timed_Delay.all (D, OSP.Absolute_Calendar);
+    end Delay_Until;
+ 
+    --------------------
+    -- Timed_Delay_NT --
+    --------------------
+ 
+    procedure Timed_Delay_NT (Time : Duration; Mode : Integer) is
+    begin
+       OSP.Timed_Delay (Time, Mode);
+    end Timed_Delay_NT;
+ 
+    -----------------
+    -- To_Duration --
+    -----------------
+ 
+    function To_Duration (T : Time) return Duration is
+    begin
+       --  Since time has multiple representations on different platforms, a
+       --  target independent operation in Ada.Calendar is used to perform
+       --  this conversion.
+ 
+       return Delay_Operations.To_Duration (T);
+    end To_Duration;
+ 
+ begin
+    --  Set up the Timed_Delay soft link to the non tasking version if it has
+    --  not been already set. If tasking is present, Timed_Delay has already set
+    --  this soft link, or this will be overridden during the elaboration of
+    --  System.Tasking.Initialization
+ 
+    if SSL.Timed_Delay = null then
+       SSL.Timed_Delay := Timed_Delay_NT'Access;
+    end if;
+ 
+ end Ada.Calendar.Delays;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnat/a-caldel.ads gcc-8.1.0/gcc/ada/libgnat/a-caldel.ads
*** gcc-7.3.0/gcc/ada/libgnat/a-caldel.ads	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnat/a-caldel.ads	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,53 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                   A D A . C A L E N D A R . D E L A Y S                  --
+ --                                                                          --
+ --                                  S p e c                                 --
+ --                                                                          --
+ --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNARL is 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/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package implements Calendar.Time delays using protected objects
+ 
+ --  Note: the compiler generates direct calls to this interface, in the
+ --  processing of time types.
+ 
+ package Ada.Calendar.Delays is
+ 
+    procedure Delay_For (D : Duration);
+    --  Delay until an interval of length (at least) D seconds has passed, or
+    --  the task is aborted to at least the current ATC nesting level. This is
+    --  an abort completion point. The body of this procedure must perform all
+    --  the processing required for an abort point.
+ 
+    procedure Delay_Until (T : Time);
+    --  Delay until Clock has reached (at least) time T, or the task is aborted
+    --  to at least the current ATC nesting level. The body of this procedure
+    --  must perform all the processing required for an abort point.
+ 
+    function To_Duration (T : Time) return Duration;
+    --  Convert Time to Duration elapsed since UNIX epoch
+ 
+ end Ada.Calendar.Delays;
diff -Nrcpad gcc-7.3.0/gcc/ada/libgnat/a-calend.adb gcc-8.1.0/gcc/ada/libgnat/a-calend.adb
*** gcc-7.3.0/gcc/ada/libgnat/a-calend.adb	Thu Jan  1 00:00:00 1970
--- gcc-8.1.0/gcc/ada/libgnat/a-calend.adb	Thu Jan 11 08:55:25 2018
***************
*** 0 ****
--- 1,1580 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                         A D A . C A L E N D A R                          --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2018, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is 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.Unchecked_Conversion;
+ 
+ with Interfaces.C;
+ 
+ with System.OS_Primitives;
+ 
+ package body Ada.Calendar with
+   SPARK_Mode => Off
+ is
+ 
+    --------------------------
+    -- Implementation Notes --
+    --------------------------
+ 
+    --  In complex algorithms, some variables of type Ada.Calendar.Time carry
+    --  suffix _S or _N to denote units of seconds or nanoseconds.
+    --
+    --  Because time is measured in different units and from different origins
+    --  on various targets, a system independent model is incorporated into
+    --  Ada.Calendar. The idea behind the design is to encapsulate all target
+    --  dependent machinery in a single package, thus providing a uniform
+    --  interface to all existing and any potential children.
+ 
+    --     package Ada.Calendar
+    --        procedure Split (5 parameters) -------+
+    --                                              | Call from local routine
+    --     private                                  |
+    --        package Formatting_Operations         |
+    --           procedure Split (11 parameters) <--+
+    --        end Formatting_Operations             |
+    --     end Ada.Calendar                         |
+    --                                              |
+    --     package Ada.Calendar.Formatting          | Call from child routine
+    --        procedure Split (9 or 10 parameters) -+
+    --     end Ada.Calendar.Formatting
+ 
+    --  The behavior of the interfacing routines is controlled via various
+    --  flags. All new Ada 2005 types from children of Ada.Calendar are
+    --  emulated by a similar type. For instance, type Day_Number is replaced
+    --  by Integer in various routines. One ramification of this model is that
+    --  the caller site must perform validity checks on returned results.
+    --  The end result of this model is the lack of target specific files per
+    --  child of Ada.Calendar (e.g. a-calfor).
+ 
+    -----------------------
+    -- Local Subprograms --
+    -----------------------
+ 
+    procedure Check_Within_Time_Bounds (T : Time_Rep);
+    --  Ensure that a time representation value falls withing the bounds of Ada
+    --  time. Leap seconds support is taken into account.
+ 
+    procedure Cumulative_Leap_Seconds
+      (Start_Date    : Time_Rep;
+       End_Date      : Time_Rep;
+       Elapsed_Leaps : out Natural;
+       Next_Leap     : out Time_Rep);
+    --  Elapsed_Leaps is the sum of the leap seconds that have occurred on or
+    --  after Start_Date and before (strictly before) End_Date. Next_Leap_Sec
+    --  represents the next leap second occurrence on or after End_Date. If
+    --  there are no leaps seconds after End_Date, End_Of_Time is returned.
+    --  End_Of_Time can be used as End_Date to count all the leap seconds that
+    --  have occurred on or after Start_Date.
+    --
+    --  Note: Any sub seconds of Start_Date and End_Date are discarded before
+    --  the calculations are done. For instance: if 113 seconds is a leap
+    --  second (it isn't) and 113.5 is input as an End_Date, the leap second
+    --  at 113 will not be counted in Leaps_Between, but it will be returned
+    --  as Next_Leap_Sec. Thus, if the caller wants to know if the End_Date is
+    --  a leap second, the comparison should be:
+    --
+    --     End_Date >= Next_Leap_Sec;
+    --
+    --  After_Last_Leap is designed so that this comparison works without
+    --  having to first check if Next_Leap_Sec is a valid leap second.
+ 
+    function Duration_To_Time_Rep is
+      new Ada.Unchecked_Conversion (Duration, Time_Rep);
+    --  Convert a duration value into a time representation value
+ 
+    function Time_Rep_To_Duration is
+      new Ada.Unchecked_Conversion (Time_Rep, Duration);
+    --  Convert a time representation value into a duration value
+ 
+    function UTC_Time_Offset
+      (Date        : Time;
+       Is_Historic : Boolean) return Long_Integer;
+    --  This routine acts as an Ada wrapper around __gnat_localtime_tzoff which
+    --  in turn utilizes various OS-dependent mechanisms to calculate the time
+    --  zone offset of a date. Formal parameter Date represents an arbitrary
+    --  time stamp, either in the past, now, or in the future. If the flag
+    --  Is_Historic is set, this routine would try to calculate to the best of
+    --  the OS's abilities the time zone offset that was or will be in effect
+    --  on Date. If the flag is set to False, the routine returns the current
+    --  time zone with Date effectively set to Clock.
+    --
+    --  NOTE: Targets which support localtime_r will aways return a historic
+    --  time zone even if flag Is_Historic is set to False because this is how
+    --  localtime_r operates.
+ 
+    -----------------
+    -- Local Types --
+    -----------------
+ 
+    --  An integer time duration. The type is used whenever a positive elapsed
+    --  duration is needed, for instance when splitting a time value. Here is
+    --  how Time_Rep and Time_Dur are related:
+ 
+    --            'First  Ada_Low                  Ada_High  'Last
+    --  Time_Rep: +-------+------------------------+---------+
+    --  Time_Dur:         +------------------------+---------+
+    --                    0                                  'Last
+ 
+    type Time_Dur is range 0 .. 2 ** 63 - 1;
+ 
+    --------------------------
+    -- Leap seconds control --
+    --------------------------
+ 
+    Flag : Integer;
+    pragma Import (C, Flag, "__gl_leap_seconds_support");
+    --  This imported value is used to determine whether the compilation had
+    --  binder flag "-y" present which enables leap seconds. A value of zero
+    --  signifies no leap seconds support while a value of one enables support.
+ 
+    Leap_Support : constant Boolean := (Flag = 1);
+    --  Flag to controls the usage of leap seconds in all Ada.Calendar routines
+ 
+    Leap_Seconds_Count : constant Natural := 25;
+ 
+    ---------------------
+    -- Local Constants --
+    ---------------------
+ 
+    Ada_Min_Year          : constant Year_Number := Year_Number'First;
+    Secs_In_Four_Years    : constant := (3 * 365 + 366) * Secs_In_Day;
+    Secs_In_Non_Leap_Year : constant := 365 * Secs_In_Day;
+    Nanos_In_Four_Years   : constant := Secs_In_Four_Years * Nano;
+ 
+    --  Lower and upper bound of Ada time. The zero (0) value of type Time is
+    --  positioned at year 2150. Note that the lower and upper bound account
+    --  for the non-leap centennial years.
+ 
+    Ada_Low  : constant Time_Rep := -(61 * 366 + 188 * 365) * Nanos_In_Day;
+    Ada_High : constant Time_Rep :=  (60 * 366 + 190 * 365) * Nanos_In_Day;
+ 
+    --  Even though the upper bound of time is 2399-12-31 23:59:59.999999999
+    --  UTC, it must be increased to include all leap seconds.
+ 
+    Ada_High_And_Leaps : constant Time_Rep :=
+      Ada_High + Time_Rep (Leap_Seconds_Count) * Nano;
+ 
+    --  Two constants used in the calculations of elapsed leap seconds.
+    --  End_Of_Time is later than Ada_High in time zone -28. Start_Of_Time
+    --  is earlier than Ada_Low in time zone +28.
+ 
+    End_Of_Time   : constant Time_Rep :=
+      Ada_High + Time_Rep (3) * Nanos_In_Day;
+    Start_Of_Time : constant Time_Rep :=
+      Ada_Low - Time_Rep (3) * Nanos_In_Day;
+ 
+    --  The Unix lower time bound expressed as nanoseconds since the start of
+    --  Ada time in UTC.
+ 
+    Unix_Min : constant Time_Rep :=
+      Ada_Low + Time_Rep (17 * 366 + 52 * 365) * Nanos_In_Day;
+ 
+    --  The Unix upper time bound expressed as nanoseconds since the start of
+    --  Ada time in UTC.
+ 
+    Unix_Max : constant Time_Rep :=
+      Ada_Low + Time_Rep (34 * 366 + 102 * 365) * Nanos_In_Day +
+      Time_Rep (Leap_Seconds_Count) * Nano;
+ 
+    Epoch_Offset : constant Time_Rep := (136 * 365 + 44 * 366) * Nanos_In_Day;
+    --  The difference between 2150-1-1 UTC and 1970-1-1 UTC expressed in
+    --  nanoseconds. Note that year 2100 is non-leap.
+ 
+    Cumulative_Days_Before_Month :
+      constant array (Month_Number) of Natural :=
+        (0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334);
+ 
+    --  The following table contains the hard time values of all existing leap
+    --  seconds. The values are produced by the utility program xleaps.adb. This
+    --  must be updated when additional leap second times are defined.
+ 
+    Leap_Second_Times : constant array (1 .. Leap_Seconds_Count) of Time_Rep :=
+      (-5601484800000000000,
+       -5585587199000000000,
+       -5554051198000000000,
+       -5522515197000000000,
+       -5490979196000000000,
+       -5459356795000000000,
+       -5427820794000000000,
+       -5396284793000000000,
+       -5364748792000000000,
+       -5317487991000000000,
+       -5285951990000000000,
+       -5254415989000000000,
+       -5191257588000000000,
+       -5112287987000000000,
+       -5049129586000000000,
+       -5017593585000000000,
+       -4970332784000000000,
+       -4938796783000000000,
+       -4907260782000000000,
+       -4859827181000000000,
+       -4812566380000000000,
+       -4765132779000000000,
+       -4544207978000000000,
+       -4449513577000000000,
+       -4339180776000000000);
+ 
+    ---------
+    -- "+" --
+    ---------
+ 
+    function "+" (Left : Time; Right : Duration) return Time is
+       pragma Unsuppress (Overflow_Check);
+       Left_N : constant Time_Rep := Time_Rep (Left);
+    begin
+       return Time (Left_N + Duration_To_Time_Rep (Right));
+    exception
+       when Constraint_Error =>
+          raise Time_Error;
+    end "+";
+ 
+    function "+" (Left : Duration; Right : Time) return Time is
+    begin
+       return Right + Left;
+    end "+";
+ 
+    ---------
+    -- "-" --
+    ---------
+ 
+    function "-" (Left : Time; Right : Duration) return Time is
+       pragma Unsuppress (Overflow_Check);
+       Left_N : constant Time_Rep := Time_Rep (Left);
+    begin
+       return Time (Left_N - Duration_To_Time_Rep (Right));
+    exception
+       when Constraint_Error =>
+          raise Time_Error;
+    end "-";
+ 
+    function "-" (Left : Time; Right : Time) return Duration is
+       pragma Unsuppress (Overflow_Check);
+ 
+       Dur_Low  : constant Time_Rep := Duration_To_Time_Rep (Duration'First);
+       Dur_High : constant Time_Rep := Duration_To_Time_Rep (Duration'Last);
+       --  The bounds of type Duration expressed as time representations
+ 
+       Res_N : Time_Rep;
+ 
+    begin
+       Res_N := Time_Rep (Left) - Time_Rep (Right);
+ 
+       --  Due to the extended range of Ada time, "-" is capable of producing
+       --  results which may exceed the range of Duration. In order to prevent
+       --  the generation of bogus values by the Unchecked_Conversion, we apply
+       --  the following check.
+ 
+       if Res_N < Dur_Low or else Res_N > Dur_High then
+          raise Time_Error;
+       end if;
+ 
+       return Time_Rep_To_Duration (Res_N);
+ 
+    exception
+       when Constraint_Error =>
+          raise Time_Error;
+    end "-";
+ 
+    ---------
+    -- "<" --
+    ---------
+ 
+    function "<" (Left, Right : Time) return Boolean is
+    begin
+       return Time_Rep (Left) < Time_Rep (Right);
+    end "<";
+ 
+    ----------
+    -- "<=" --
+    ----------
+ 
+    function "<=" (Left, Right : Time) return Boolean is
+    begin
+       return Time_Rep (Left) <= Time_Rep (Right);
+    end "<=";
+ 
+    ---------
+    -- ">" --
+    ---------
+ 
+    function ">" (Left, Right : Time) return Boolean is
+    begin
+       return Time_Rep (Left) > Time_Rep (Right);
+    end ">";
+ 
+    ----------
+    -- ">=" --
+    ----------
+ 
+    function ">=" (Left, Right : Time) return Boolean is
+    begin
+       return Time_Rep (Left) >= Time_Rep (Right);
+    end ">=";
+ 
+    ------------------------------
+    -- Check_Within_Time_Bounds --
+    ------------------------------
+ 
+    procedure Check_Within_Time_Bounds (T : Time_Rep) is
+    begin
+       if Leap_Support then
+          if T < Ada_Low or else T > Ada_High_And_Leaps then
+             raise Time_Error;
+          end if;
+       else
+          if T < Ada_Low or else T > Ada_High then
+             raise Time_Error;
+          end if;
+       end if;
+    end Check_Within_Time_Bounds;
+ 
+    -----------
+    -- Clock --
+    -----------
+ 
+    function Clock return Time is
+       Elapsed_Leaps : Natural;
+       Next_Leap_N   : Time_Rep;
+ 
+       --  The system clock returns the time in UTC since the Unix Epoch of
+       --  1970-01-01 00:00:00.0. We perform an origin shift to the Ada Epoch
+       --  by adding the number of nanoseconds between the two origins.
+ 
+       Res_N : Time_Rep :=
+         Duration_To_Time_Rep (System.OS_Primitives.Clock) + Unix_Min;
+ 
+    begin
+       --  If the target supports leap seconds, determine the number of leap
+       --  seconds elapsed until this moment.
+ 
+       if Leap_Support then
+          Cumulative_Leap_Seconds
+            (Start_Of_Time, Res_N, Elapsed_Leaps, Next_Leap_N);
+ 
+          --  The system clock may fall exactly on a leap second
+ 
+          if Res_N >= Next_Leap_N then
+             Elapsed_Leaps := Elapsed_Leaps + 1;
+          end if;
+ 
+       --  The target does not support leap seconds
+ 
+       else
+          Elapsed_Leaps := 0;
+       end if;
+ 
+       Res_N := Res_N + Time_Rep (Elapsed_Leaps) * Nano;
+ 
+       return Time (Res_N);
+    end Clock;
+ 
+    -----------------------------
+    -- Cumulative_Leap_Seconds --
+    -----------------------------
+ 
+    procedure Cumulative_Leap_Seconds
+      (Start_Date    : Time_Rep;
+       End_Date      : Time_Rep;
+       Elapsed_Leaps : out Natural;
+       Next_Leap     : out Time_Rep)
+    is
+       End_Index   : Positive;
+       End_T       : Time_Rep := End_Date;
+       Start_Index : Positive;
+       Start_T     : Time_Rep := Start_Date;
+ 
+    begin
+       --  Both input dates must be normalized to UTC
+ 
+       pragma Assert (Leap_Support and then End_Date >= Start_Date);
+ 
+       Next_Leap := End_Of_Time;
+ 
+       --  Make sure that the end date does not exceed the upper bound
+       --  of Ada time.
+ 
+       if End_Date > Ada_High then
+          End_T := Ada_High;
+       end if;
+ 
+       --  Remove the sub seconds from both dates
+ 
+       Start_T := Start_T - (Start_T mod Nano);
+       End_T   := End_T   - (End_T   mod Nano);
+ 
+       --  Some trivial cases:
+       --                     Leap 1 . . . Leap N
+       --  ---+========+------+############+-------+========+-----
+       --     Start_T  End_T                       Start_T  End_T
+ 
+       if End_T < Leap_Second_Times (1) then
+          Elapsed_Leaps := 0;
+          Next_Leap     := Leap_Second_Times (1);
+          return;
+ 
+       elsif Start_T > Leap_Second_Times (Leap_Seconds_Count) then
+          Elapsed_Leaps := 0;
+          Next_Leap     := End_Of_Time;
+          return;
+       end if;
+ 
+       --  Perform the calculations only if the start date is within the leap
+       --  second occurrences table.
+ 
+       if Start_T <= Leap_Second_Times (Leap_Seconds_Count) then
+ 
+          --    1    2                  N - 1   N
+          --  +----+----+--  . . .  --+-------+---+
+          --  | T1 | T2 |             | N - 1 | N |
+          --  +----+----+--  . . .  --+-------+---+
+          --         ^                   ^
+          --         | Start_Index       | End_Index
+          --         +-------------------+
+          --             Leaps_Between
+ 
+          --  The idea behind the algorithm is to iterate and find two
+          --  closest dates which are after Start_T and End_T. Their
+          --  corresponding index difference denotes the number of leap
+          --  seconds elapsed.
+ 
+          Start_Index := 1;
+          loop
+             exit when Leap_Second_Times (Start_Index) >= Start_T;
+             Start_Index := Start_Index + 1;
+          end loop;
+ 
+          End_Index := Start_Index;
+          loop
+             exit when End_Index > Leap_Seconds_Count
+               or else Leap_Second_Times (End_Index) >= End_T;
+             End_Index := End_Index + 1;
+          end loop;
+ 
+          if End_Index <= Leap_Seconds_Count then
+             Next_Leap := Leap_Second_Times (End_Index);
+          end if;
+ 
+          Elapsed_Leaps := End_Index - Start_Index;
+ 
+       else
+          Elapsed_Leaps := 0;
+       end if;
+    end Cumulative_Leap_Seconds;
+ 
+    ---------
+    -- Day --
+    ---------
+ 
+    function Day (Date : Time) return Day_Number is
+       D : Day_Number;
+       Y : Year_Number;
+       M : Month_Number;
+       S : Day_Duration;
+       pragma Unreferenced (Y, M, S);
+    begin
+       Split (Date, Y, M, D, S);
+       return D;
+    end Day;
+ 
+    -------------
+    -- Is_Leap --
+    -------------
+ 
+    function Is_Leap (Year : Year_Number) return Boolean is
+    begin
+       --  Leap centennial years
+ 
+       if Year mod 400 = 0 then
+          return True;
+ 
+       --  Non-leap centennial years
+ 
+       elsif Year mod 100 = 0 then
+          return False;
+ 
+       --  Regular years
+ 
+       else
+          return Year mod 4 = 0;
+       end if;
+    end Is_Leap;
+ 
+    -----------
+    -- Month --
+    -----------
+ 
+    function Month (Date : Time) return Month_Number is
+       Y : Year_Number;
+       M : Month_Number;
+       D : Day_Number;
+       S : Day_Duration;
+       pragma Unreferenced (Y, D, S);
+    begin
+       Split (Date, Y, M, D, S);
+       return M;
+    end Month;
+ 
+    -------------
+    -- Seconds --
+    -------------
+ 
+    function Seconds (Date : Time) return Day_Duration is
+       Y : Year_Number;
+       M : Month_Number;
+       D : Day_Number;
+       S : Day_Duration;
+       pragma Unreferenced (Y, M, D);
+    begin
+       Split (Date, Y, M, D, S);
+       return S;
+    end Seconds;
+ 
+    -----------
+    -- Split --
+    -----------
+ 
+    procedure Split
+      (Date    : Time;
+       Year    : out Year_Number;
+       Month   : out Month_Number;
+       Day     : out Day_Number;
+       Seconds : out Day_Duration)
+    is
+       H  : Integer;
+       M  : Integer;
+       Se : Integer;
+       Ss : Duration;
+       Le : Boolean;
+ 
+       pragma Unreferenced (H, M, Se, Ss, Le);
+ 
+    begin
+       --  Even though the input time zone is UTC (0), the flag Use_TZ will
+       --  ensure that Split picks up the local time zone.
+ 
+       Formatting_Operations.Split
+         (Date        => Date,
+          Year        => Year,
+          Month       => Month,
+          Day         => Day,
+          Day_Secs    => Seconds,
+          Hour        => H,
+          Minute      => M,
+          Second      => Se,
+          Sub_Sec     => Ss,
+          Leap_Sec    => Le,
+          Use_TZ      => False,
+          Is_Historic => True,
+          Time_Zone   => 0);
+ 
+       --  Validity checks
+ 
+       if not Year'Valid    or else
+          not Month'Valid   or else
+          not Day'Valid     or else
+          not Seconds'Valid
+       then
+          raise Time_Error;
+       end if;
+    end Split;
+ 
+    -------------
+    -- Time_Of --
+    -------------
+ 
+    function Time_Of
+      (Year    : Year_Number;
+       Month   : Month_Number;
+       Day     : Day_Number;
+       Seconds : Day_Duration := 0.0) return Time
+    is
+       --  The values in the following constants are irrelevant, they are just
+       --  placeholders; the choice of constructing a Day_Duration value is
+       --  controlled by the Use_Day_Secs flag.
+ 
+       H  : constant Integer := 1;
+       M  : constant Integer := 1;
+       Se : constant Integer := 1;
+       Ss : constant Duration := 0.1;
+ 
+    begin
+       --  Validity checks
+ 
+       if not Year'Valid    or else
+          not Month'Valid   or else
+          not Day'Valid     or else
+          not Seconds'Valid
+       then
+          raise Time_Error;
+       end if;
+ 
+       --  Even though the input time zone is UTC (0), the flag Use_TZ will
+       --  ensure that Split picks up the local time zone.
+ 
+       return
+         Formatting_Operations.Time_Of
+           (Year         => Year,
+            Month        => Month,
+            Day          => Day,
+            Day_Secs     => Seconds,
+            Hour         => H,
+            Minute       => M,
+            Second       => Se,
+            Sub_Sec      => Ss,
+            Leap_Sec     => False,
+            Use_Day_Secs => True,
+            Use_TZ       => False,
+            Is_Historic  => True,
+            Time_Zone    => 0);
+    end Time_Of;
+ 
+    ---------------------
+    -- UTC_Time_Offset --
+    ---------------------
+ 
+    function UTC_Time_Offset
+      (Date        : Time;
+       Is_Historic : Boolean) return Long_Integer
+    is
+       --  The following constants denote February 28 during non-leap centennial
+       --  years, the units are nanoseconds.
+ 
+       T_2100_2_28 : constant Time_Rep := Ada_Low +
+                       (Time_Rep (49 * 366 + 150 * 365 + 59) * Secs_In_Day +
+                        Time_Rep (Leap_Seconds_Count)) * Nano;
+ 
+       T_2200_2_28 : constant Time_Rep := Ada_Low +
+                       (Time_Rep (73 * 366 + 226 * 365 + 59) * Secs_In_Day +
+                        Time_Rep (Leap_Seconds_Count)) * Nano;
+ 
+       T_2300_2_28 : constant Time_Rep := Ada_Low +
+                       (Time_Rep (97 * 366 + 302 * 365 + 59) * Secs_In_Day +
+                        Time_Rep (Leap_Seconds_Count)) * Nano;
+ 
+       --  56 years (14 leap years + 42 non-leap years) in nanoseconds:
+ 
+       Nanos_In_56_Years : constant := (14 * 366 + 42 * 365) * Nanos_In_Day;
+ 
+       type int_Pointer  is access all Interfaces.C.int;
+       type long_Pointer is access all Interfaces.C.long;
+ 
+       type time_t is
+         range -(2 ** (Standard'Address_Size - Integer'(1))) ..
+               +(2 ** (Standard'Address_Size - Integer'(1)) - 1);
+       type time_t_Pointer is access all time_t;
+ 
+       procedure localtime_tzoff
+         (timer       : time_t_Pointer;
+          is_historic : int_Pointer;
+          off         : long_Pointer);
+       pragma Import (C, localtime_tzoff, "__gnat_localtime_tzoff");
+       --  This routine is a interfacing wrapper around the library function
+       --  __gnat_localtime_tzoff. Parameter 'timer' represents a Unix-based
+       --  time equivalent of the input date. If flag 'is_historic' is set, this
+       --  routine would try to calculate to the best of the OS's abilities the
+       --  time zone offset that was or will be in effect on 'timer'. If the
+       --  flag is set to False, the routine returns the current time zone
+       --  regardless of what 'timer' designates. Parameter 'off' captures the
+       --  UTC offset of 'timer'.
+ 
+       Adj_Cent : Integer;
+       Date_N   : Time_Rep;
+       Flag     : aliased Interfaces.C.int;
+       Offset   : aliased Interfaces.C.long;
+       Secs_T   : aliased time_t;
+ 
+    --  Start of processing for UTC_Time_Offset
+ 
+    begin
+       Date_N := Time_Rep (Date);
+ 
+       --  Dates which are 56 years apart fall on the same day, day light saving
+       --  and so on. Non-leap centennial years violate this rule by one day and
+       --  as a consequence, special adjustment is needed.
+ 
+       Adj_Cent :=
+         (if    Date_N <= T_2100_2_28 then 0
+          elsif Date_N <= T_2200_2_28 then 1
+          elsif Date_N <= T_2300_2_28 then 2
+          else                             3);
+ 
+       if Adj_Cent > 0 then
+          Date_N := Date_N - Time_Rep (Adj_Cent) * Nanos_In_Day;
+       end if;
+ 
+       --  Shift the date within bounds of Unix time
+ 
+       while Date_N < Unix_Min loop
+          Date_N := Date_N + Nanos_In_56_Years;
+       end loop;
+ 
+       while Date_N >= Unix_Max loop
+          Date_N := Date_N - Nanos_In_56_Years;
+       end loop;
+ 
+       --  Perform a shift in origins from Ada to Unix
+ 
+       Date_N := Date_N - Unix_Min;
+ 
+       --  Convert the date into seconds
+ 
+       Secs_T := time_t (Date_N / Nano);
+ 
+       --  Determine whether to treat the input date as historical or not. A
+       --  value of "0" signifies that the date is NOT historic.
+ 
+       Flag := (if Is_Historic then 1 else 0);
+ 
+       localtime_tzoff
+         (Secs_T'Unchecked_Access,
+          Flag'Unchecked_Access,
+          Offset'Unchecked_Access);
+ 
+       return Long_Integer (Offset);
+    end UTC_Time_Offset;
+ 
+    ----------
+    -- Year --
+    ----------
+ 
+    function Year (Date : Time) return Year_Number is
+       Y : Year_Number;
+       M : Month_Number;
+       D : Day_Number;
+       S : Day_Duration;
+       pragma Unreferenced (M, D, S);
+    begin
+       Split (Date, Y, M, D, S);
+       return Y;
+    end Year;
+ 
+    --  The following packages assume that Time is a signed 64 bit integer
+    --  type, the units are nanoseconds and the origin is the start of Ada
+    --  time (1901-01-01 00:00:00.0 UTC).
+ 
+    ---------------------------
+    -- Arithmetic_Operations --
+    ---------------------------
+ 
+    package body Arithmetic_Operations is
+ 
+       ---------
+       -- Add --
+       ---------
+ 
+       function Add (Date : Time; Days : Long_Integer) return Time is
+          pragma Unsuppress (Overflow_Check);
+          Date_N : constant Time_Rep := Time_Rep (Date);
+       begin
+          return Time (Date_N + Time_Rep (Days) * Nanos_In_Day);
+       exception
+          when Constraint_Error =>
+             raise Time_Error;
+       end Add;
+ 
+       ----------------
+       -- Difference --
+       ----------------
+ 
+       procedure Difference
+         (Left         : Time;
+          Right        : Time;
+          Days         : out Long_Integer;
+          Seconds      : out Duration;
+          Leap_Seconds : out Integer)
+       is
+          Res_Dur       : Time_Dur;
+          Earlier       : Time_Rep;
+          Elapsed_Leaps : Natural;
+          Later         : Time_Rep;
+          Negate        : Boolean := False;
+          Next_Leap_N   : Time_Rep;
+          Sub_Secs      : Duration;
+          Sub_Secs_Diff : Time_Rep;
+ 
+       begin
+          --  Both input time values are assumed to be in UTC
+ 
+          if Left >= Right then
+             Later   := Time_Rep (Left);
+             Earlier := Time_Rep (Right);
+          else
+             Later   := Time_Rep (Right);
+             Earlier := Time_Rep (Left);
+             Negate  := True;
+          end if;
+ 
+          --  If the target supports leap seconds, process them
+ 
+          if Leap_Support then
+             Cumulative_Leap_Seconds
+               (Earlier, Later, Elapsed_Leaps, Next_Leap_N);
+ 
+             if Later >= Next_Leap_N then
+                Elapsed_Leaps := Elapsed_Leaps + 1;
+             end if;
+ 
+          --  The target does not support leap seconds
+ 
+          else
+             Elapsed_Leaps := 0;
+          end if;
+ 
+          --  Sub seconds processing. We add the resulting difference to one
+          --  of the input dates in order to account for any potential rounding
+          --  of the difference in the next step.
+ 
+          Sub_Secs_Diff := Later mod Nano - Earlier mod Nano;
+          Earlier       := Earlier + Sub_Secs_Diff;
+          Sub_Secs      := Duration (Sub_Secs_Diff) / Nano_F;
+ 
+          --  Difference processing. This operation should be able to calculate
+          --  the difference between opposite values which are close to the end
+          --  and start of Ada time. To accommodate the large range, we convert
+          --  to seconds. This action may potentially round the two values and
+          --  either add or drop a second. We compensate for this issue in the
+          --  previous step.
+ 
+          Res_Dur :=
+            Time_Dur (Later / Nano - Earlier / Nano) - Time_Dur (Elapsed_Leaps);
+ 
+          Days         := Long_Integer (Res_Dur / Secs_In_Day);
+          Seconds      := Duration (Res_Dur mod Secs_In_Day) + Sub_Secs;
+          Leap_Seconds := Integer (Elapsed_Leaps);
+ 
+          if Negate then
+             Days    := -Days;
+             Seconds := -Seconds;
+ 
+             if Leap_Seconds /= 0 then
+                Leap_Seconds := -Leap_Seconds;
+             end if;
+          end if;
+       end Difference;
+ 
+       --------------
+       -- Subtract --
+       --------------
+ 
+       function Subtract (Date : Time; Days : Long_Integer) return Time is
+          pragma Unsuppress (Overflow_Check);
+          Date_N : constant Time_Rep := Time_Rep (Date);
+       begin
+          return Time (Date_N - Time_Rep (Days) * Nanos_In_Day);
+       exception
+          when Constraint_Error =>
+             raise Time_Error;
+       end Subtract;
+ 
+    end Arithmetic_Operations;
+ 
+    ---------------------------
+    -- Conversion_Operations --
+    ---------------------------
+ 
+    package body Conversion_Operations is
+ 
+       -----------------
+       -- To_Ada_Time --
+       -----------------
+ 
+       function To_Ada_Time (Unix_Time : Long_Integer) return Time is
+          pragma Unsuppress (Overflow_Check);
+          Unix_Rep : constant Time_Rep := Time_Rep (Unix_Time) * Nano;
+       begin
+          return Time (Unix_Rep - Epoch_Offset);
+       exception
+          when Constraint_Error =>
+             raise Time_Error;
+       end To_Ada_Time;
+ 
+       -----------------
+       -- To_Ada_Time --
+       -----------------
+ 
+       function To_Ada_Time
+         (tm_year  : Integer;
+          tm_mon   : Integer;
+          tm_day   : Integer;
+          tm_hour  : Integer;
+          tm_min   : Integer;
+          tm_sec   : Integer;
+          tm_isdst : Integer) return Time
+       is
+          pragma Unsuppress (Overflow_Check);
+          Year   : Year_Number;
+          Month  : Month_Number;
+          Day    : Day_Number;
+          Second : Integer;
+          Leap   : Boolean;
+          Result : Time_Rep;
+ 
+       begin
+          --  Input processing
+ 
+          Year  := Year_Number (1900 + tm_year);
+          Month := Month_Number (1 + tm_mon);
+          Day   := Day_Number (tm_day);
+ 
+          --  Step 1: Validity checks of input values
+ 
+          if not Year'Valid or else not Month'Valid or else not Day'Valid
+            or else tm_hour  not in 0 .. 24
+            or else tm_min   not in 0 .. 59
+            or else tm_sec   not in 0 .. 60
+            or else tm_isdst not in -1 .. 1
+          then
+             raise Time_Error;
+          end if;
+ 
+          --  Step 2: Potential leap second
+ 
+          if tm_sec = 60 then
+             Leap   := True;
+             Second := 59;
+          else
+             Leap   := False;
+             Second := tm_sec;
+          end if;
+ 
+          --  Step 3: Calculate the time value
+ 
+          Result :=
+            Time_Rep
+              (Formatting_Operations.Time_Of
+                (Year         => Year,
+                 Month        => Month,
+                 Day          => Day,
+                 Day_Secs     => 0.0,      --  Time is given in h:m:s
+                 Hour         => tm_hour,
+                 Minute       => tm_min,
+                 Second       => Second,
+                 Sub_Sec      => 0.0,      --  No precise sub second given
+                 Leap_Sec     => Leap,
+                 Use_Day_Secs => False,    --  Time is given in h:m:s
+                 Use_TZ       => True,     --  Force usage of explicit time zone
+                 Is_Historic  => True,
+                 Time_Zone    => 0));      --  Place the value in UTC
+ 
+          --  Step 4: Daylight Savings Time
+ 
+          if tm_isdst = 1 then
+             Result := Result + Time_Rep (3_600) * Nano;
+          end if;
+ 
+          return Time (Result);
+ 
+       exception
+          when Constraint_Error =>
+             raise Time_Error;
+       end To_Ada_Time;
+ 
+       -----------------
+       -- To_Duration --
+       -----------------
+ 
+       function To_Duration
+         (tv_sec  : Long_Integer;
+          tv_nsec : Long_Integer) return Duration
+       is
+          pragma Unsuppress (Overflow_Check);
+       begin
+          return Duration (tv_sec) + Duration (tv_nsec) / Nano_F;
+       end To_Duration;
+ 
+       ------------------------
+       -- To_Struct_Timespec --
+       ------------------------
+ 
+       procedure To_Struct_Timespec
+         (D       : Duration;
+          tv_sec  : out Long_Integer;
+          tv_nsec : out Long_Integer)
+       is
+          pragma Unsuppress (Overflow_Check);
+          Secs      : Duration;
+          Nano_Secs : Duration;
+ 
+       begin
+          --  Seconds extraction, avoid potential rounding errors
+ 
+          Secs   := D - 0.5;
+          tv_sec := Long_Integer (Secs);
+ 
+          --  Nanoseconds extraction
+ 
+          Nano_Secs := D - Duration (tv_sec);
+          tv_nsec := Long_Integer (Nano_Secs * Nano);
+       end To_Struct_Timespec;
+ 
+       ------------------
+       -- To_Struct_Tm --
+       ------------------
+ 
+       procedure To_Struct_Tm
+         (T       : Time;
+          tm_year : out Integer;
+          tm_mon  : out Integer;
+          tm_day  : out Integer;
+          tm_hour : out Integer;
+          tm_min  : out Integer;
+          tm_sec  : out Integer)
+       is
+          pragma Unsuppress (Overflow_Check);
+          Year      : Year_Number;
+          Month     : Month_Number;
+          Second    : Integer;
+          Day_Secs  : Day_Duration;
+          Sub_Sec   : Duration;
+          Leap_Sec  : Boolean;
+ 
+       begin
+          --  Step 1: Split the input time
+ 
+          Formatting_Operations.Split
+            (Date        => T,
+             Year        => Year,
+             Month       => Month,
+             Day         => tm_day,
+             Day_Secs    => Day_Secs,
+             Hour        => tm_hour,
+             Minute      => tm_min,
+             Second      => Second,
+             Sub_Sec     => Sub_Sec,
+             Leap_Sec    => Leap_Sec,
+             Use_TZ      => True,
+             Is_Historic => False,
+             Time_Zone   => 0);
+ 
+          --  Step 2: Correct the year and month
+ 
+          tm_year := Year - 1900;
+          tm_mon  := Month - 1;
+ 
+          --  Step 3: Handle leap second occurrences
+ 
+          tm_sec := (if Leap_Sec then 60 else Second);
+       end To_Struct_Tm;
+ 
+       ------------------
+       -- To_Unix_Time --
+       ------------------
+ 
+       function To_Unix_Time (Ada_Time : Time) return Long_Integer is
+          pragma Unsuppress (Overflow_Check);
+          Ada_Rep : constant Time_Rep := Time_Rep (Ada_Time);
+       begin
+          return Long_Integer ((Ada_Rep + Epoch_Offset) / Nano);
+       exception
+          when Constraint_Error =>
+             raise Time_Error;
+       end To_Unix_Time;
+    end Conversion_Operations;
+ 
+    ----------------------
+    -- Delay_Operations --
+    ----------------------
+ 
+    package body Delay_Operations is
+ 
+       -----------------
+       -- To_Duration --
+       -----------------
+ 
+       function To_Duration (Date : Time) return Duration is
+          pragma Unsuppress (Overflow_Check);
+ 
+          Safe_Ada_High : constant Time_Rep := Ada_High - Epoch_Offset;
+          --  This value represents a "safe" end of time. In order to perform a
+          --  proper conversion to Unix duration, we will have to shift origins
+          --  at one point. For very distant dates, this means an overflow check
+          --  failure. To prevent this, the function returns the "safe" end of
+          --  time (roughly 2219) which is still distant enough.
+ 
+          Elapsed_Leaps : Natural;
+          Next_Leap_N   : Time_Rep;
+          Res_N         : Time_Rep;
+ 
+       begin
+          Res_N := Time_Rep (Date);
+ 
+          --  Step 1: If the target supports leap seconds, remove any leap
+          --  seconds elapsed up to the input date.
+ 
+          if Leap_Support then
+             Cumulative_Leap_Seconds
+               (Start_Of_Time, Res_N, Elapsed_Leaps, Next_Leap_N);
+ 
+             --  The input time value may fall on a leap second occurrence
+ 
+             if Res_N >= Next_Leap_N then
+                Elapsed_Leaps := Elapsed_Leaps + 1;
+             end if;
+ 
+          --  The target does not support leap seconds
+ 
+          else
+             Elapsed_Leaps := 0;
+          end if;
+ 
+          Res_N := Res_N - Time_Rep (Elapsed_Leaps) * Nano;
+ 
+          --  Step 2: Perform a shift in origins to obtain a Unix equivalent of
+          --  the input. Guard against very large delay values such as the end
+          --  of time since the computation will overflow.
+ 
+          Res_N := (if Res_N > Safe_Ada_High then Safe_Ada_High
+                                             else Res_N + Epoch_Offset);
+ 
+          return Time_Rep_To_Duration (Res_N);
+       end To_Duration;
+ 
+    end Delay_Operations;
+ 
+    ---------------------------
+    -- Formatting_Operations --
+    ---------------------------
+ 
+    package body Formatting_Operations is
+ 
+       -----------------
+       -- Day_Of_Week --
+       -----------------
+ 
+       function Day_Of_Week (Date : Time) return Integer is
+          Date_N    : constant Time_Rep := Time_Rep (Date);
+          Time_Zone : constant Long_Integer := UTC_Time_Offset (Date, True);
+          Ada_Low_N : Time_Rep;
+          Day_Count : Long_Integer;
+          Day_Dur   : Time_Dur;
+          High_N    : Time_Rep;
+          Low_N     : Time_Rep;
+ 
+       begin
+          --  As declared, the Ada Epoch is set in UTC. For this calculation to
+          --  work properly, both the Epoch and the input date must be in the
+          --  same time zone. The following places the Epoch in the input date's
+          --  time zone.
+ 
+          Ada_Low_N := Ada_Low - Time_Rep (Time_Zone) * Nano;
+ 
+          if Date_N > Ada_Low_N then
+             High_N := Date_N;
+             Low_N  := Ada_Low_N;
+          else
+             High_N := Ada_Low_N;
+             Low_N  := Date_N;
+          end if;
+ 
+          --  Determine the elapsed seconds since the start of Ada time
+ 
+          Day_Dur := Time_Dur (High_N / Nano - Low_N / Nano);
+ 
+          --  Count the number of days since the start of Ada time. 1901-01-01
+          --  GMT was a Tuesday.
+ 
+          Day_Count := Long_Integer (Day_Dur / Secs_In_Day) + 1;
+ 
+          return Integer (Day_Count mod 7);
+       end Day_Of_Week;
+ 
+       -----------
+       -- Split --
+       -----------
+ 
+       procedure Split
+         (Date        : Time;
+          Year        : out Year_Number;
+          Month       : out Month_Number;
+          Day         : out Day_Number;
+          Day_Secs    : out Day_Duration;
+          Hour        : out Integer;
+          Minute      : out Integer;
+          Second      : out Integer;
+          Sub_Sec     : out Duration;
+          Leap_Sec    : out Boolean;
+          Use_TZ      : Boolean;
+          Is_Historic : Boolean;
+          Time_Zone   : Long_Integer)
+       is
+          --  The following constants represent the number of nanoseconds
+          --  elapsed since the start of Ada time to and including the non
+          --  leap centennial years.
+ 
+          Year_2101 : constant Time_Rep := Ada_Low +
+                        Time_Rep (49 * 366 + 151 * 365) * Nanos_In_Day;
+          Year_2201 : constant Time_Rep := Ada_Low +
+                        Time_Rep (73 * 366 + 227 * 365) * Nanos_In_Day;
+          Year_2301 : constant Time_Rep := Ada_Low +
+                        Time_Rep (97 * 366 + 303 * 365) * Nanos_In_Day;
+ 
+          Date_Dur       : Time_Dur;
+          Date_N         : Time_Rep;
+          Day_Seconds    : Natural;
+          Elapsed_Leaps  : Natural;
+          Four_Year_Segs : Natural;
+          Hour_Seconds   : Natural;
+          Is_Leap_Year   : Boolean;
+          Next_Leap_N    : Time_Rep;
+          Rem_Years      : Natural;
+          Sub_Sec_N      : Time_Rep;
+          Year_Day       : Natural;
+ 
+       begin
+          Date_N := Time_Rep (Date);
+ 
+          --  Step 1: Leap seconds processing in UTC
+ 
+          if Leap_Support then
+             Cumulative_Leap_Seconds
+               (Start_Of_Time, Date_N, Elapsed_Leaps, Next_Leap_N);
+ 
+             Leap_Sec := Date_N >= Next_Leap_N;
+ 
+             if Leap_Sec then
+                Elapsed_Leaps := Elapsed_Leaps + 1;
+             end if;
+ 
+          --  The target does not support leap seconds
+ 
+          else
+             Elapsed_Leaps := 0;
+             Leap_Sec      := False;
+          end if;
+ 
+          Date_N := Date_N - Time_Rep (Elapsed_Leaps) * Nano;
+ 
+          --  Step 2: Time zone processing. This action converts the input date
+          --  from GMT to the requested time zone. Applies from Ada 2005 on.
+ 
+          if Use_TZ then
+             if Time_Zone /= 0 then
+                Date_N := Date_N + Time_Rep (Time_Zone) * 60 * Nano;
+             end if;
+ 
+          --  Ada 83 and 95
+ 
+          else
+             declare
+                Off : constant Long_Integer :=
+                  UTC_Time_Offset (Time (Date_N), Is_Historic);
+ 
+             begin
+                Date_N := Date_N + Time_Rep (Off) * Nano;
+             end;
+          end if;
+ 
+          --  Step 3: Non-leap centennial year adjustment in local time zone
+ 
+          --  In order for all divisions to work properly and to avoid more
+          --  complicated arithmetic, we add fake February 29s to dates which
+          --  occur after a non-leap centennial year.
+ 
+          if Date_N >= Year_2301 then
+             Date_N := Date_N + Time_Rep (3) * Nanos_In_Day;
+ 
+          elsif Date_N >= Year_2201 then
+             Date_N := Date_N + Time_Rep (2) * Nanos_In_Day;
+ 
+          elsif Date_N >= Year_2101 then
+             Date_N := Date_N + Time_Rep (1) * Nanos_In_Day;
+          end if;
+ 
+          --  Step 4: Sub second processing in local time zone
+ 
+          Sub_Sec_N := Date_N mod Nano;
+          Sub_Sec   := Duration (Sub_Sec_N) / Nano_F;
+          Date_N    := Date_N - Sub_Sec_N;
+ 
+          --  Convert Date_N into a time duration value, changing the units
+          --  to seconds.
+ 
+          Date_Dur := Time_Dur (Date_N / Nano - Ada_Low / Nano);
+ 
+          --  Step 5: Year processing in local time zone. Determine the number
+          --  of four year segments since the start of Ada time and the input
+          --  date.
+ 
+          Four_Year_Segs := Natural (Date_Dur / Secs_In_Four_Years);
+ 
+          if Four_Year_Segs > 0 then
+             Date_Dur := Date_Dur - Time_Dur (Four_Year_Segs) *
+                                    Secs_In_Four_Years;
+          end if;
+ 
+          --  Calculate the remaining non-leap years
+ 
+          Rem_Years := Natural (Date_Dur / Secs_In_Non_Leap_Year);
+ 
+          if Rem_Years > 3 then
+             Rem_Years := 3;
+          end if;
+ 
+          Date_Dur := Date_Dur - Time_Dur (Rem_Years) * Secs_In_Non_Leap_Year;
+ 
+          Year := Ada_Min_Year + Natural (4 * Four_Year_Segs + Rem_Years);
+          Is_Leap_Year := Is_Leap (Year);
+ 
+          --  Step 6: Month and day processing in local time zone
+ 
+          Year_Day := Natural (Date_Dur / Secs_In_Day) + 1;
+ 
+          Month := 1;
+ 
+          --  Processing for months after January
+ 
+          if Year_Day > 31 then
+             Month    := 2;
+             Year_Day := Year_Day - 31;
+ 
+             --  Processing for a new month or a leap February
+ 
+             if Year_Day > 28
+               and then (not Is_Leap_Year or else Year_Day > 29)
+             then
+                Month    := 3;
+                Year_Day := Year_Day - 28;
+ 
+                if Is_Leap_Year then
+                   Year_Day := Year_Day - 1;
+                end if;
+ 
+                --  Remaining months
+ 
+                while Year_Day > Days_In_Month (Month) loop
+                   Year_Day := Year_Day - Days_In_Month (Month);
+                   Month    := Month + 1;
+                end loop;
+             end if;
+          end if;
+ 
+          --  Step 7: Hour, minute, second and sub second processing in local
+          --  time zone.
+ 
+          Day          := Day_Number (Year_Day);
+          Day_Seconds  := Integer (Date_Dur mod Secs_In_Day);
+          Day_Secs     := Duration (Day_Seconds) + Sub_Sec;
+          Hour         := Day_Seconds / 3_600;
+          Hour_Seconds := Day